diff --git a/.gitignore b/.gitignore index 8c1d64a..1a68bae 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ node_modules -package-lock.json libs/Cesium \ No newline at end of file diff --git a/index.html b/index.html index 87220a6..ea52a37 100644 --- a/index.html +++ b/index.html @@ -7,11 +7,11 @@ Potree Viewer - - - - - + + + + + \nreductionDecember preferredCambridgeopponentsBusiness confusion>\npresentedexplaineddoes not worldwideinterfacepositionsnewspaper</table>\nmountainslike the essentialfinancialselectionaction=\"/abandonedEducationparseInt(stabilityunable to\nrelationsNote thatefficientperformedtwo yearsSince thethereforewrapper\">alternateincreasedBattle ofperceivedtrying tonecessaryportrayedelectionsElizabethdiscoveryinsurances.length;legendaryGeographycandidatecorporatesometimesservices.inheritedCommunityreligiouslocationsCommitteebuildingsthe worldno longerbeginningreferencecannot befrequencytypicallyinto the relative;recordingpresidentinitiallytechniquethe otherit can beexistenceunderlinethis timetelephoneitemscopepracticesadvantage);return For otherprovidingdemocracyboth the extensivesufferingsupportedcomputers functionpracticalsaid thatit may beEnglish\nsuspectedmargin: 0spiritual\n\nmicrosoftgraduallydiscussedhe becameexecutivejquery.jshouseholdconfirmedpurchasedliterallydestroyedup to thevariationremainingit is notcenturiesJapanese among thecompletedalgorithminterestsrebellionundefinedencourageresizableinvolvingsensitiveuniversalprovision(althoughfeaturingconducted), which continued-header\">February numerous overflow:componentfragmentsexcellentcolspan=\"technicalnear the Advanced source ofexpressedHong Kong Facebookmultiple mechanismelevationoffensive\n\tsponsoreddocument.or "there arethose whomovementsprocessesdifficultsubmittedrecommendconvincedpromoting\" width=\".replace(classicalcoalitionhis firstdecisionsassistantindicatedevolution-wrapper\"enough toalong thedelivered-->\r\n\n\r\n
Archbishop class=\"nobeing usedapproachesprivilegesnoscript>\nresults inmay be theEaster eggmechanismsreasonablePopulationCollectionselected\">noscript>\r/index.phparrival of-jssdk'));managed toincompletecasualtiescompletionChristiansSeptember arithmeticproceduresmight haveProductionit appearsPhilosophyfriendshipleading togiving thetoward theguaranteeddocumentedcolor:#000video gamecommissionreflectingchange theassociatedsans-serifonkeypress; padding:He was theunderlyingtypically , and the srcElementsuccessivesince the should be networkingaccountinguse of thelower thanshows that\n\t\tcomplaintscontinuousquantitiesastronomerhe did notdue to itsapplied toan averageefforts tothe futureattempt toTherefore,capabilityRepublicanwas formedElectronickilometerschallengespublishingthe formerindigenousdirectionssubsidiaryconspiracydetails ofand in theaffordablesubstancesreason forconventionitemtype=\"absolutelysupposedlyremained aattractivetravellingseparatelyfocuses onelementaryapplicablefound thatstylesheetmanuscriptstands for no-repeat(sometimesCommercialin Americaundertakenquarter ofan examplepersonallyindex.php?\npercentagebest-knowncreating a\" dir=\"ltrLieutenant\n
is said tostructuralreferendummost oftena separate->\n
soundtracksearchFormtend to beinput id=\"opening ofrestrictedadopted byaddressingtheologianmethods ofvariant ofChristian very largeautomotiveby far therange frompursuit offollow thebrought toin Englandagree thataccused ofcomes frompreventingdiv style=his or hertremendousfreedom ofconcerning0 1em 1em;Basketball/style.cssan earliereven after/\" title=\".com/indextaking thepittsburghcontent\">\rimplementedcan be seenthere was ademonstratecontainer\">connectionsthe Britishwas written!important;px; margin-followed byability to complicatedduring the immigrationalso called

\n

acquisitioncalled the persecutiondesignation{font-size:appeared ininvestigateexperiencedmost likelywidely useddiscussionspresence of (document.extensivelyIt has beenit does notcontrary toinhabitantsimprovementscholarshipconsumptioninstructionfor exampleone or morepx; paddingthe currenta series ofare usuallyrole in thepreviously derivativesevidence ofexperiencescolorschemestated thatcertificate
\n selected=\"high schoolresponse tocomfortableadoption ofthree yearsthe countryin Februaryso that thepeople who provided by\nhaving been\r\n\r\n< "The compilationhe had beenproduced byphilosopherconstructedintended toamong othercompared toto say thatEngineeringa differentreferred todifferencesbelief thatphotographsidentifyingHistory of Republic ofnecessarilyprobabilitytechnicallyleaving thespectacularfraction ofelectricityhead of therestaurantspartnershipemphasis onmost recentshare with saying thatfilled withdesigned toit is often\">as follows:merged withthrough thecommercial pointed outopportunityview of therequirementdivision ofprogramminghe receivedsetInterval\">maintainingChristopherMuch of thewritings of\" height=\"2size of theversion of mixture of between theExamples ofeducationalcompetitive onsubmit=\"director ofdistinctive/DTD XHTML relating totendency toprovince ofwhich woulddespite thescientific legislature.innerHTML allegationsAgriculturewas used inapproach tointelligentyears later,sans-serifdeterminingPerformanceappearances, which is foundationsabbreviatedhigher thans from the individual composed ofsupposed toclaims thatattributionfont-size:1elements ofHistorical his brotherat the timeanniversarygoverned byrelated to ultimately innovationsit is stillcan only bedefinitionstoGMTStringA number ofimg class=\"Eventually,was changedoccurred inneighboringdistinguishwhen he wasintroducingterrestrialMany of theargues thatan Americanconquest ofwidespread were killedscreen and In order toexpected todescendantsare locatedlegislativegenerations backgroundmost peopleyears afterthere is nothe highestfrequently they do notargued thatshowed thatpredominanttheologicalby the timeconsideringshort-livedcan be usedvery littleone of the had alreadyinterpretedcommunicatefeatures ofgovernment,entered the\" height=\"3Independentpopulationslarge-scale. Although used in thedestructionpossibilitystarting intwo or moreexpressionssubordinatelarger thanhistory and\r\nContinentaleliminatingwill not bepractice ofin front ofsite of theensure thatto create amississippipotentiallyoutstandingbetter thanwhat is nowsituated inmeta name=\"TraditionalsuggestionsTranslationthe form ofatmosphericideologicalenterprisescalculatingeast of theremnants ofpluginspage/index.php?remained intransformedHe was alsowas alreadystatisticalin favor ofMinistry ofmovement offormulationis required\nquestion ofwas electedto become abecause of some peopleinspired bysuccessful a time whenmore commonamongst thean officialwidth:100%;technology,was adoptedto keep thesettlementslive birthsindex.html\"Connecticutassigned to&times;account foralign=rightthe companyalways beenreturned toinvolvementBecause thethis period\" name=\"q\" confined toa result ofvalue=\"\" />is actuallyEnvironment\r\n\r\nConversely,>\n
this is notthe presentif they areand finallya matter of\r\n\t
\r\n\r\nfaster thanmajority ofafter whichcomparativeto maintainimprove theawarded theer\" class=\"frameborderrestorationin the sameanalysis oftheir firstDuring the continentalsequence offunction(){font-size: work on the\nadopted theproperty ofdirected byeffectivelywas broughtchildren ofProgramminglonger thanmanuscriptswar againstby means ofand most ofsimilar to proprietaryoriginatingprestigiousgrammaticalexperience.to make theIt was alsois found incompetitorsin the U.S.replace thebrought thecalculationfall of thethe generalpracticallyin honor ofreleased inresidentialand some ofking of thereaction to1st Earl ofculture andprincipally\n they can beback to thesome of hisexposure toare similarform of theaddFavoritecitizenshippart in thepeople within practiceto continue&minus;approved by the first allowed theand for thefunctioningplaying thesolution toheight=\"0\" in his bookmore than afollows thecreated thepresence in nationalistthe idea ofa characterwere forced class=\"btndays of thefeatured inshowing theinterest inin place ofturn of thethe head ofLord of thepoliticallyhas its ownEducationalapproval ofsome of theeach other,behavior ofand becauseand anotherappeared onrecorded inblack"may includethe world'scan lead torefers to aborder=\"0\" government winning theresulted in while the Washington,the subjectcity in the>\r\n\t\treflect theto completebecame moreradioactiverejected bywithout anyhis father,which couldcopy of theto indicatea politicalaccounts ofconstitutesworked wither
of his lifeaccompaniedclientWidthprevent theLegislativedifferentlytogether inhas severalfor anothertext of thefounded thee with the is used forchanged theusually theplace wherewhereas the> \nHowever thelead to the\tThe currentthe site ofsubstantialexperience,in the Westthey shouldslovenD\rinacomentariosuniversidadcondicionesactividadesexperienciatecnologC-aproducciC3npuntuaciC3naplicaciC3ncontraseC1acategorC-asregistrarseprofesionaltratamientoregC-stratesecretarC-aprincipalesprotecciC3nimportantesimportanciaposibilidadinteresantecrecimientonecesidadessuscribirseasociaciC3ndisponiblesevaluaciC3nestudiantesresponsableresoluciC3nguadalajararegistradosoportunidadcomercialesfotografC-aautoridadesingenierC-atelevisiC3ncompetenciaoperacionesestablecidosimplementeactualmentenavegaciC3nconformidadline-height:font-family:\" : \"http://applicationslink\" href=\"specifically//\n/index.html\"window.open( !important;application/independence//www.googleorganizationautocompleterequirementsconservative
most notably/>notification'undefined')Furthermore,believe thatinnerHTML = prior to thedramaticallyreferring tonegotiationsheadquartersSouth AfricaunsuccessfulPennsylvaniaAs a result,\npadding-top:experimentalgetAttributeinstructionstechnologiespart of the =function(){subscriptionl.dtd\">\r\nEnglish (US)appendChild(transmissions. However, intelligence\" tabindex=\"float:right;Commonwealthranging fromin which theat least onereproductionencyclopedia;font-size:1jurisdictionat that time\">compensationchampionshipmedia=\"all\" violation ofreference toreturn true;Strict//EN\" transactionsinterventionverificationInformation difficultiesChampionshipcapabilities}\n\nChristianityfor example,Professionalrestrictionssuggest thatwas released(such as theremoveClass(unemploymentthe Americanstructure of/index.html published inspan class=\"\">\n\nf (document.border: 1px {font-size:1treatment of0\" height=\"1modificationIndependencedivided intogreater thanachievementsestablishingJavaScript\" neverthelesssignificanceBroadcasting> container\">\nsuch as the influence ofa particularsrc='http://navigation\" half of the substantial  advantage ofdiscovery offundamental metropolitanthe opposite\" xml:lang=\"deliberatelyalign=centerevolution ofpreservationimprovementsbeginning inJesus ChristPublicationsdisagreementtext-align:r, function()similaritiesbody>is currentlyalphabeticalis sometimestype=\"image/many of the flow:hidden;available indescribe theexistence ofall over thethe Internet\t"); - this.element.attr('aria-activedescendant','j'+this._id+'_loading'); - } - this.load_node($.jstree.root, function (o, s) { - if(s) { - this.get_container_ul()[0].className = c; - if(this._firstChild(this.get_container_ul()[0])) { - this.element.attr('aria-activedescendant',this._firstChild(this.get_container_ul()[0]).id); - } - this.set_state($.extend(true, {}, this._data.core.state), function () { - /** - * triggered when a `refresh` call completes - * @event - * @name refresh.jstree - */ - this.trigger('refresh'); - }); - } - this._data.core.state = null; - }); - }, - /** - * refreshes a node in the tree (reload its children) all opened nodes inside that node are reloaded with calls to `load_node`. - * @name refresh_node(obj) - * @param {mixed} obj the node - * @trigger refresh_node.jstree - */ - refresh_node : function (obj) { - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { return false; } - var opened = [], to_load = [], s = this._data.core.selected.concat([]); - to_load.push(obj.id); - if(obj.state.opened === true) { opened.push(obj.id); } - this.get_node(obj, true).find('.jstree-open').each(function() { to_load.push(this.id); opened.push(this.id); }); - this._load_nodes(to_load, $.proxy(function (nodes) { - this.open_node(opened, false, 0); - this.select_node(s); - /** - * triggered when a node is refreshed - * @event - * @name refresh_node.jstree - * @param {Object} node - the refreshed node - * @param {Array} nodes - an array of the IDs of the nodes that were reloaded - */ - this.trigger('refresh_node', { 'node' : obj, 'nodes' : nodes }); - }, this), false, true); - }, - /** - * set (change) the ID of a node - * @name set_id(obj, id) - * @param {mixed} obj the node - * @param {String} id the new ID - * @return {Boolean} - * @trigger set_id.jstree - */ - set_id : function (obj, id) { - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { return false; } - var i, j, m = this._model.data, old = obj.id; - id = id.toString(); - // update parents (replace current ID with new one in children and children_d) - m[obj.parent].children[$.inArray(obj.id, m[obj.parent].children)] = id; - for(i = 0, j = obj.parents.length; i < j; i++) { - m[obj.parents[i]].children_d[$.inArray(obj.id, m[obj.parents[i]].children_d)] = id; - } - // update children (replace current ID with new one in parent and parents) - for(i = 0, j = obj.children.length; i < j; i++) { - m[obj.children[i]].parent = id; - } - for(i = 0, j = obj.children_d.length; i < j; i++) { - m[obj.children_d[i]].parents[$.inArray(obj.id, m[obj.children_d[i]].parents)] = id; - } - i = $.inArray(obj.id, this._data.core.selected); - if(i !== -1) { this._data.core.selected[i] = id; } - // update model and obj itself (obj.id, this._model.data[KEY]) - i = this.get_node(obj.id, true); - if(i) { - i.attr('id', id); //.children('.jstree-anchor').attr('id', id + '_anchor').end().attr('aria-labelledby', id + '_anchor'); - if(this.element.attr('aria-activedescendant') === obj.id) { - this.element.attr('aria-activedescendant', id); - } - } - delete m[obj.id]; - obj.id = id; - obj.li_attr.id = id; - m[id] = obj; - /** - * triggered when a node id value is changed - * @event - * @name set_id.jstree - * @param {Object} node - * @param {String} old the old id - */ - this.trigger('set_id',{ "node" : obj, "new" : obj.id, "old" : old }); - return true; - }, - /** - * get the text value of a node - * @name get_text(obj) - * @param {mixed} obj the node - * @return {String} - */ - get_text : function (obj) { - obj = this.get_node(obj); - return (!obj || obj.id === $.jstree.root) ? false : obj.text; - }, - /** - * set the text value of a node. Used internally, please use `rename_node(obj, val)`. - * @private - * @name set_text(obj, val) - * @param {mixed} obj the node, you can pass an array to set the text on multiple nodes - * @param {String} val the new text value - * @return {Boolean} - * @trigger set_text.jstree - */ - set_text : function (obj, val) { - var t1, t2; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.set_text(obj[t1], val); - } - return true; - } - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { return false; } - obj.text = val; - if(this.get_node(obj, true).length) { - this.redraw_node(obj.id); - } - /** - * triggered when a node text value is changed - * @event - * @name set_text.jstree - * @param {Object} obj - * @param {String} text the new value - */ - this.trigger('set_text',{ "obj" : obj, "text" : val }); - return true; - }, - /** - * gets a JSON representation of a node (or the whole tree) - * @name get_json([obj, options]) - * @param {mixed} obj - * @param {Object} options - * @param {Boolean} options.no_state do not return state information - * @param {Boolean} options.no_id do not return ID - * @param {Boolean} options.no_children do not include children - * @param {Boolean} options.no_data do not include node data - * @param {Boolean} options.no_li_attr do not include LI attributes - * @param {Boolean} options.no_a_attr do not include A attributes - * @param {Boolean} options.flat return flat JSON instead of nested - * @return {Object} - */ - get_json : function (obj, options, flat) { - obj = this.get_node(obj || $.jstree.root); - if(!obj) { return false; } - if(options && options.flat && !flat) { flat = []; } - var tmp = { - 'id' : obj.id, - 'text' : obj.text, - 'icon' : this.get_icon(obj), - 'li_attr' : $.extend(true, {}, obj.li_attr), - 'a_attr' : $.extend(true, {}, obj.a_attr), - 'state' : {}, - 'data' : options && options.no_data ? false : $.extend(true, $.isArray(obj.data)?[]:{}, obj.data) - //( this.get_node(obj, true).length ? this.get_node(obj, true).data() : obj.data ), - }, i, j; - if(options && options.flat) { - tmp.parent = obj.parent; - } - else { - tmp.children = []; - } - if(!options || !options.no_state) { - for(i in obj.state) { - if(obj.state.hasOwnProperty(i)) { - tmp.state[i] = obj.state[i]; - } - } - } else { - delete tmp.state; - } - if(options && options.no_li_attr) { - delete tmp.li_attr; - } - if(options && options.no_a_attr) { - delete tmp.a_attr; - } - if(options && options.no_id) { - delete tmp.id; - if(tmp.li_attr && tmp.li_attr.id) { - delete tmp.li_attr.id; - } - if(tmp.a_attr && tmp.a_attr.id) { - delete tmp.a_attr.id; - } - } - if(options && options.flat && obj.id !== $.jstree.root) { - flat.push(tmp); - } - if(!options || !options.no_children) { - for(i = 0, j = obj.children.length; i < j; i++) { - if(options && options.flat) { - this.get_json(obj.children[i], options, flat); - } - else { - tmp.children.push(this.get_json(obj.children[i], options)); - } - } - } - return options && options.flat ? flat : (obj.id === $.jstree.root ? tmp.children : tmp); - }, - /** - * create a new node (do not confuse with load_node) - * @name create_node([par, node, pos, callback, is_loaded]) - * @param {mixed} par the parent node (to create a root node use either "#" (string) or `null`) - * @param {mixed} node the data for the new node (a valid JSON object, or a simple string with the name) - * @param {mixed} pos the index at which to insert the node, "first" and "last" are also supported, default is "last" - * @param {Function} callback a function to be called once the node is created - * @param {Boolean} is_loaded internal argument indicating if the parent node was succesfully loaded - * @return {String} the ID of the newly create node - * @trigger model.jstree, create_node.jstree - */ - create_node : function (par, node, pos, callback, is_loaded) { - if(par === null) { par = $.jstree.root; } - par = this.get_node(par); - if(!par) { return false; } - pos = pos === undefined ? "last" : pos; - if(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) { - return this.load_node(par, function () { this.create_node(par, node, pos, callback, true); }); - } - if(!node) { node = { "text" : this.get_string('New node') }; } - if(typeof node === "string") { - node = { "text" : node }; - } else { - node = $.extend(true, {}, node); - } - if(node.text === undefined) { node.text = this.get_string('New node'); } - var tmp, dpc, i, j; - - if(par.id === $.jstree.root) { - if(pos === "before") { pos = "first"; } - if(pos === "after") { pos = "last"; } - } - switch(pos) { - case "before": - tmp = this.get_node(par.parent); - pos = $.inArray(par.id, tmp.children); - par = tmp; - break; - case "after" : - tmp = this.get_node(par.parent); - pos = $.inArray(par.id, tmp.children) + 1; - par = tmp; - break; - case "inside": - case "first": - pos = 0; - break; - case "last": - pos = par.children.length; - break; - default: - if(!pos) { pos = 0; } - break; - } - if(pos > par.children.length) { pos = par.children.length; } - if(!node.id) { node.id = true; } - if(!this.check("create_node", node, par, pos)) { - this.settings.core.error.call(this, this._data.core.last_error); - return false; - } - if(node.id === true) { delete node.id; } - node = this._parse_model_from_json(node, par.id, par.parents.concat()); - if(!node) { return false; } - tmp = this.get_node(node); - dpc = []; - dpc.push(node); - dpc = dpc.concat(tmp.children_d); - this.trigger('model', { "nodes" : dpc, "parent" : par.id }); - - par.children_d = par.children_d.concat(dpc); - for(i = 0, j = par.parents.length; i < j; i++) { - this._model.data[par.parents[i]].children_d = this._model.data[par.parents[i]].children_d.concat(dpc); - } - node = tmp; - tmp = []; - for(i = 0, j = par.children.length; i < j; i++) { - tmp[i >= pos ? i+1 : i] = par.children[i]; - } - tmp[pos] = node.id; - par.children = tmp; - - this.redraw_node(par, true); - /** - * triggered when a node is created - * @event - * @name create_node.jstree - * @param {Object} node - * @param {String} parent the parent's ID - * @param {Number} position the position of the new node among the parent's children - */ - this.trigger('create_node', { "node" : this.get_node(node), "parent" : par.id, "position" : pos }); - if(callback) { callback.call(this, this.get_node(node)); } - return node.id; - }, - /** - * set the text value of a node - * @name rename_node(obj, val) - * @param {mixed} obj the node, you can pass an array to rename multiple nodes to the same name - * @param {String} val the new text value - * @return {Boolean} - * @trigger rename_node.jstree - */ - rename_node : function (obj, val) { - var t1, t2, old; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.rename_node(obj[t1], val); - } - return true; - } - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { return false; } - old = obj.text; - if(!this.check("rename_node", obj, this.get_parent(obj), val)) { - this.settings.core.error.call(this, this._data.core.last_error); - return false; - } - this.set_text(obj, val); // .apply(this, Array.prototype.slice.call(arguments)) - /** - * triggered when a node is renamed - * @event - * @name rename_node.jstree - * @param {Object} node - * @param {String} text the new value - * @param {String} old the old value - */ - this.trigger('rename_node', { "node" : obj, "text" : val, "old" : old }); - return true; - }, - /** - * remove a node - * @name delete_node(obj) - * @param {mixed} obj the node, you can pass an array to delete multiple nodes - * @return {Boolean} - * @trigger delete_node.jstree, changed.jstree - */ - delete_node : function (obj) { - var t1, t2, par, pos, tmp, i, j, k, l, c, top, lft; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.delete_node(obj[t1]); - } - return true; - } - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { return false; } - par = this.get_node(obj.parent); - pos = $.inArray(obj.id, par.children); - c = false; - if(!this.check("delete_node", obj, par, pos)) { - this.settings.core.error.call(this, this._data.core.last_error); - return false; - } - if(pos !== -1) { - par.children = $.vakata.array_remove(par.children, pos); - } - tmp = obj.children_d.concat([]); - tmp.push(obj.id); - for(i = 0, j = obj.parents.length; i < j; i++) { - this._model.data[obj.parents[i]].children_d = $.vakata.array_filter(this._model.data[obj.parents[i]].children_d, function (v) { - return $.inArray(v, tmp) === -1; - }); - } - for(k = 0, l = tmp.length; k < l; k++) { - if(this._model.data[tmp[k]].state.selected) { - c = true; - break; - } - } - if (c) { - this._data.core.selected = $.vakata.array_filter(this._data.core.selected, function (v) { - return $.inArray(v, tmp) === -1; - }); - } - /** - * triggered when a node is deleted - * @event - * @name delete_node.jstree - * @param {Object} node - * @param {String} parent the parent's ID - */ - this.trigger('delete_node', { "node" : obj, "parent" : par.id }); - if(c) { - this.trigger('changed', { 'action' : 'delete_node', 'node' : obj, 'selected' : this._data.core.selected, 'parent' : par.id }); - } - for(k = 0, l = tmp.length; k < l; k++) { - delete this._model.data[tmp[k]]; - } - if($.inArray(this._data.core.focused, tmp) !== -1) { - this._data.core.focused = null; - top = this.element[0].scrollTop; - lft = this.element[0].scrollLeft; - if(par.id === $.jstree.root) { - if (this._model.data[$.jstree.root].children[0]) { - this.get_node(this._model.data[$.jstree.root].children[0], true).children('.jstree-anchor').focus(); - } - } - else { - this.get_node(par, true).children('.jstree-anchor').focus(); - } - this.element[0].scrollTop = top; - this.element[0].scrollLeft = lft; - } - this.redraw_node(par, true); - return true; - }, - /** - * check if an operation is premitted on the tree. Used internally. - * @private - * @name check(chk, obj, par, pos) - * @param {String} chk the operation to check, can be "create_node", "rename_node", "delete_node", "copy_node" or "move_node" - * @param {mixed} obj the node - * @param {mixed} par the parent - * @param {mixed} pos the position to insert at, or if "rename_node" - the new name - * @param {mixed} more some various additional information, for example if a "move_node" operations is triggered by DND this will be the hovered node - * @return {Boolean} - */ - check : function (chk, obj, par, pos, more) { - obj = obj && obj.id ? obj : this.get_node(obj); - par = par && par.id ? par : this.get_node(par); - var tmp = chk.match(/^move_node|copy_node|create_node$/i) ? par : obj, - chc = this.settings.core.check_callback; - if(chk === "move_node" || chk === "copy_node") { - if((!more || !more.is_multi) && (obj.id === par.id || (chk === "move_node" && $.inArray(obj.id, par.children) === pos) || $.inArray(par.id, obj.children_d) !== -1)) { - this._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_01', 'reason' : 'Moving parent inside child', 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; - return false; - } - } - if(tmp && tmp.data) { tmp = tmp.data; } - if(tmp && tmp.functions && (tmp.functions[chk] === false || tmp.functions[chk] === true)) { - if(tmp.functions[chk] === false) { - this._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_02', 'reason' : 'Node data prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; - } - return tmp.functions[chk]; - } - if(chc === false || ($.isFunction(chc) && chc.call(this, chk, obj, par, pos, more) === false) || (chc && chc[chk] === false)) { - this._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_03', 'reason' : 'User config for core.check_callback prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; - return false; - } - return true; - }, - /** - * get the last error - * @name last_error() - * @return {Object} - */ - last_error : function () { - return this._data.core.last_error; - }, - /** - * move a node to a new parent - * @name move_node(obj, par [, pos, callback, is_loaded]) - * @param {mixed} obj the node to move, pass an array to move multiple nodes - * @param {mixed} par the new parent - * @param {mixed} pos the position to insert at (besides integer values, "first" and "last" are supported, as well as "before" and "after"), defaults to integer `0` - * @param {function} callback a function to call once the move is completed, receives 3 arguments - the node, the new parent and the position - * @param {Boolean} is_loaded internal parameter indicating if the parent node has been loaded - * @param {Boolean} skip_redraw internal parameter indicating if the tree should be redrawn - * @param {Boolean} instance internal parameter indicating if the node comes from another instance - * @trigger move_node.jstree - */ - move_node : function (obj, par, pos, callback, is_loaded, skip_redraw, origin) { - var t1, t2, old_par, old_pos, new_par, old_ins, is_multi, dpc, tmp, i, j, k, l, p; - - par = this.get_node(par); - pos = pos === undefined ? 0 : pos; - if(!par) { return false; } - if(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) { - return this.load_node(par, function () { this.move_node(obj, par, pos, callback, true, false, origin); }); - } - - if($.isArray(obj)) { - if(obj.length === 1) { - obj = obj[0]; - } - else { - //obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - if((tmp = this.move_node(obj[t1], par, pos, callback, is_loaded, false, origin))) { - par = tmp; - pos = "after"; - } - } - this.redraw(); - return true; - } - } - obj = obj && obj.id ? obj : this.get_node(obj); - - if(!obj || obj.id === $.jstree.root) { return false; } - - old_par = (obj.parent || $.jstree.root).toString(); - new_par = (!pos.toString().match(/^(before|after)$/) || par.id === $.jstree.root) ? par : this.get_node(par.parent); - old_ins = origin ? origin : (this._model.data[obj.id] ? this : $.jstree.reference(obj.id)); - is_multi = !old_ins || !old_ins._id || (this._id !== old_ins._id); - old_pos = old_ins && old_ins._id && old_par && old_ins._model.data[old_par] && old_ins._model.data[old_par].children ? $.inArray(obj.id, old_ins._model.data[old_par].children) : -1; - if(old_ins && old_ins._id) { - obj = old_ins._model.data[obj.id]; - } - - if(is_multi) { - if((tmp = this.copy_node(obj, par, pos, callback, is_loaded, false, origin))) { - if(old_ins) { old_ins.delete_node(obj); } - return tmp; - } - return false; - } - //var m = this._model.data; - if(par.id === $.jstree.root) { - if(pos === "before") { pos = "first"; } - if(pos === "after") { pos = "last"; } - } - switch(pos) { - case "before": - pos = $.inArray(par.id, new_par.children); - break; - case "after" : - pos = $.inArray(par.id, new_par.children) + 1; - break; - case "inside": - case "first": - pos = 0; - break; - case "last": - pos = new_par.children.length; - break; - default: - if(!pos) { pos = 0; } - break; - } - if(pos > new_par.children.length) { pos = new_par.children.length; } - if(!this.check("move_node", obj, new_par, pos, { 'core' : true, 'origin' : origin, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id) })) { - this.settings.core.error.call(this, this._data.core.last_error); - return false; - } - if(obj.parent === new_par.id) { - dpc = new_par.children.concat(); - tmp = $.inArray(obj.id, dpc); - if(tmp !== -1) { - dpc = $.vakata.array_remove(dpc, tmp); - if(pos > tmp) { pos--; } - } - tmp = []; - for(i = 0, j = dpc.length; i < j; i++) { - tmp[i >= pos ? i+1 : i] = dpc[i]; - } - tmp[pos] = obj.id; - new_par.children = tmp; - this._node_changed(new_par.id); - this.redraw(new_par.id === $.jstree.root); - } - else { - // clean old parent and up - tmp = obj.children_d.concat(); - tmp.push(obj.id); - for(i = 0, j = obj.parents.length; i < j; i++) { - dpc = []; - p = old_ins._model.data[obj.parents[i]].children_d; - for(k = 0, l = p.length; k < l; k++) { - if($.inArray(p[k], tmp) === -1) { - dpc.push(p[k]); - } - } - old_ins._model.data[obj.parents[i]].children_d = dpc; - } - old_ins._model.data[old_par].children = $.vakata.array_remove_item(old_ins._model.data[old_par].children, obj.id); - - // insert into new parent and up - for(i = 0, j = new_par.parents.length; i < j; i++) { - this._model.data[new_par.parents[i]].children_d = this._model.data[new_par.parents[i]].children_d.concat(tmp); - } - dpc = []; - for(i = 0, j = new_par.children.length; i < j; i++) { - dpc[i >= pos ? i+1 : i] = new_par.children[i]; - } - dpc[pos] = obj.id; - new_par.children = dpc; - new_par.children_d.push(obj.id); - new_par.children_d = new_par.children_d.concat(obj.children_d); - - // update object - obj.parent = new_par.id; - tmp = new_par.parents.concat(); - tmp.unshift(new_par.id); - p = obj.parents.length; - obj.parents = tmp; - - // update object children - tmp = tmp.concat(); - for(i = 0, j = obj.children_d.length; i < j; i++) { - this._model.data[obj.children_d[i]].parents = this._model.data[obj.children_d[i]].parents.slice(0,p*-1); - Array.prototype.push.apply(this._model.data[obj.children_d[i]].parents, tmp); - } - - if(old_par === $.jstree.root || new_par.id === $.jstree.root) { - this._model.force_full_redraw = true; - } - if(!this._model.force_full_redraw) { - this._node_changed(old_par); - this._node_changed(new_par.id); - } - if(!skip_redraw) { - this.redraw(); - } - } - if(callback) { callback.call(this, obj, new_par, pos); } - /** - * triggered when a node is moved - * @event - * @name move_node.jstree - * @param {Object} node - * @param {String} parent the parent's ID - * @param {Number} position the position of the node among the parent's children - * @param {String} old_parent the old parent of the node - * @param {Number} old_position the old position of the node - * @param {Boolean} is_multi do the node and new parent belong to different instances - * @param {jsTree} old_instance the instance the node came from - * @param {jsTree} new_instance the instance of the new parent - */ - this.trigger('move_node', { "node" : obj, "parent" : new_par.id, "position" : pos, "old_parent" : old_par, "old_position" : old_pos, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id), 'old_instance' : old_ins, 'new_instance' : this }); - return obj.id; - }, - /** - * copy a node to a new parent - * @name copy_node(obj, par [, pos, callback, is_loaded]) - * @param {mixed} obj the node to copy, pass an array to copy multiple nodes - * @param {mixed} par the new parent - * @param {mixed} pos the position to insert at (besides integer values, "first" and "last" are supported, as well as "before" and "after"), defaults to integer `0` - * @param {function} callback a function to call once the move is completed, receives 3 arguments - the node, the new parent and the position - * @param {Boolean} is_loaded internal parameter indicating if the parent node has been loaded - * @param {Boolean} skip_redraw internal parameter indicating if the tree should be redrawn - * @param {Boolean} instance internal parameter indicating if the node comes from another instance - * @trigger model.jstree copy_node.jstree - */ - copy_node : function (obj, par, pos, callback, is_loaded, skip_redraw, origin) { - var t1, t2, dpc, tmp, i, j, node, old_par, new_par, old_ins, is_multi; - - par = this.get_node(par); - pos = pos === undefined ? 0 : pos; - if(!par) { return false; } - if(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) { - return this.load_node(par, function () { this.copy_node(obj, par, pos, callback, true, false, origin); }); - } - - if($.isArray(obj)) { - if(obj.length === 1) { - obj = obj[0]; - } - else { - //obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - if((tmp = this.copy_node(obj[t1], par, pos, callback, is_loaded, true, origin))) { - par = tmp; - pos = "after"; - } - } - this.redraw(); - return true; - } - } - obj = obj && obj.id ? obj : this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { return false; } - - old_par = (obj.parent || $.jstree.root).toString(); - new_par = (!pos.toString().match(/^(before|after)$/) || par.id === $.jstree.root) ? par : this.get_node(par.parent); - old_ins = origin ? origin : (this._model.data[obj.id] ? this : $.jstree.reference(obj.id)); - is_multi = !old_ins || !old_ins._id || (this._id !== old_ins._id); - - if(old_ins && old_ins._id) { - obj = old_ins._model.data[obj.id]; - } - - if(par.id === $.jstree.root) { - if(pos === "before") { pos = "first"; } - if(pos === "after") { pos = "last"; } - } - switch(pos) { - case "before": - pos = $.inArray(par.id, new_par.children); - break; - case "after" : - pos = $.inArray(par.id, new_par.children) + 1; - break; - case "inside": - case "first": - pos = 0; - break; - case "last": - pos = new_par.children.length; - break; - default: - if(!pos) { pos = 0; } - break; - } - if(pos > new_par.children.length) { pos = new_par.children.length; } - if(!this.check("copy_node", obj, new_par, pos, { 'core' : true, 'origin' : origin, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id) })) { - this.settings.core.error.call(this, this._data.core.last_error); - return false; - } - node = old_ins ? old_ins.get_json(obj, { no_id : true, no_data : true, no_state : true }) : obj; - if(!node) { return false; } - if(node.id === true) { delete node.id; } - node = this._parse_model_from_json(node, new_par.id, new_par.parents.concat()); - if(!node) { return false; } - tmp = this.get_node(node); - if(obj && obj.state && obj.state.loaded === false) { tmp.state.loaded = false; } - dpc = []; - dpc.push(node); - dpc = dpc.concat(tmp.children_d); - this.trigger('model', { "nodes" : dpc, "parent" : new_par.id }); - - // insert into new parent and up - for(i = 0, j = new_par.parents.length; i < j; i++) { - this._model.data[new_par.parents[i]].children_d = this._model.data[new_par.parents[i]].children_d.concat(dpc); - } - dpc = []; - for(i = 0, j = new_par.children.length; i < j; i++) { - dpc[i >= pos ? i+1 : i] = new_par.children[i]; - } - dpc[pos] = tmp.id; - new_par.children = dpc; - new_par.children_d.push(tmp.id); - new_par.children_d = new_par.children_d.concat(tmp.children_d); - - if(new_par.id === $.jstree.root) { - this._model.force_full_redraw = true; - } - if(!this._model.force_full_redraw) { - this._node_changed(new_par.id); - } - if(!skip_redraw) { - this.redraw(new_par.id === $.jstree.root); - } - if(callback) { callback.call(this, tmp, new_par, pos); } - /** - * triggered when a node is copied - * @event - * @name copy_node.jstree - * @param {Object} node the copied node - * @param {Object} original the original node - * @param {String} parent the parent's ID - * @param {Number} position the position of the node among the parent's children - * @param {String} old_parent the old parent of the node - * @param {Number} old_position the position of the original node - * @param {Boolean} is_multi do the node and new parent belong to different instances - * @param {jsTree} old_instance the instance the node came from - * @param {jsTree} new_instance the instance of the new parent - */ - this.trigger('copy_node', { "node" : tmp, "original" : obj, "parent" : new_par.id, "position" : pos, "old_parent" : old_par, "old_position" : old_ins && old_ins._id && old_par && old_ins._model.data[old_par] && old_ins._model.data[old_par].children ? $.inArray(obj.id, old_ins._model.data[old_par].children) : -1,'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id), 'old_instance' : old_ins, 'new_instance' : this }); - return tmp.id; - }, - /** - * cut a node (a later call to `paste(obj)` would move the node) - * @name cut(obj) - * @param {mixed} obj multiple objects can be passed using an array - * @trigger cut.jstree - */ - cut : function (obj) { - if(!obj) { obj = this._data.core.selected.concat(); } - if(!$.isArray(obj)) { obj = [obj]; } - if(!obj.length) { return false; } - var tmp = [], o, t1, t2; - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - o = this.get_node(obj[t1]); - if(o && o.id && o.id !== $.jstree.root) { tmp.push(o); } - } - if(!tmp.length) { return false; } - ccp_node = tmp; - ccp_inst = this; - ccp_mode = 'move_node'; - /** - * triggered when nodes are added to the buffer for moving - * @event - * @name cut.jstree - * @param {Array} node - */ - this.trigger('cut', { "node" : obj }); - }, - /** - * copy a node (a later call to `paste(obj)` would copy the node) - * @name copy(obj) - * @param {mixed} obj multiple objects can be passed using an array - * @trigger copy.jstree - */ - copy : function (obj) { - if(!obj) { obj = this._data.core.selected.concat(); } - if(!$.isArray(obj)) { obj = [obj]; } - if(!obj.length) { return false; } - var tmp = [], o, t1, t2; - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - o = this.get_node(obj[t1]); - if(o && o.id && o.id !== $.jstree.root) { tmp.push(o); } - } - if(!tmp.length) { return false; } - ccp_node = tmp; - ccp_inst = this; - ccp_mode = 'copy_node'; - /** - * triggered when nodes are added to the buffer for copying - * @event - * @name copy.jstree - * @param {Array} node - */ - this.trigger('copy', { "node" : obj }); - }, - /** - * get the current buffer (any nodes that are waiting for a paste operation) - * @name get_buffer() - * @return {Object} an object consisting of `mode` ("copy_node" or "move_node"), `node` (an array of objects) and `inst` (the instance) - */ - get_buffer : function () { - return { 'mode' : ccp_mode, 'node' : ccp_node, 'inst' : ccp_inst }; - }, - /** - * check if there is something in the buffer to paste - * @name can_paste() - * @return {Boolean} - */ - can_paste : function () { - return ccp_mode !== false && ccp_node !== false; // && ccp_inst._model.data[ccp_node]; - }, - /** - * copy or move the previously cut or copied nodes to a new parent - * @name paste(obj [, pos]) - * @param {mixed} obj the new parent - * @param {mixed} pos the position to insert at (besides integer, "first" and "last" are supported), defaults to integer `0` - * @trigger paste.jstree - */ - paste : function (obj, pos) { - obj = this.get_node(obj); - if(!obj || !ccp_mode || !ccp_mode.match(/^(copy_node|move_node)$/) || !ccp_node) { return false; } - if(this[ccp_mode](ccp_node, obj, pos, false, false, false, ccp_inst)) { - /** - * triggered when paste is invoked - * @event - * @name paste.jstree - * @param {String} parent the ID of the receiving node - * @param {Array} node the nodes in the buffer - * @param {String} mode the performed operation - "copy_node" or "move_node" - */ - this.trigger('paste', { "parent" : obj.id, "node" : ccp_node, "mode" : ccp_mode }); - } - ccp_node = false; - ccp_mode = false; - ccp_inst = false; - }, - /** - * clear the buffer of previously copied or cut nodes - * @name clear_buffer() - * @trigger clear_buffer.jstree - */ - clear_buffer : function () { - ccp_node = false; - ccp_mode = false; - ccp_inst = false; - /** - * triggered when the copy / cut buffer is cleared - * @event - * @name clear_buffer.jstree - */ - this.trigger('clear_buffer'); - }, - /** - * put a node in edit mode (input field to rename the node) - * @name edit(obj [, default_text, callback]) - * @param {mixed} obj - * @param {String} default_text the text to populate the input with (if omitted or set to a non-string value the node's text value is used) - * @param {Function} callback a function to be called once the text box is blurred, it is called in the instance's scope and receives the node, a status parameter (true if the rename is successful, false otherwise) and a boolean indicating if the user cancelled the edit. You can access the node's title using .text - */ - edit : function (obj, default_text, callback) { - var rtl, w, a, s, t, h1, h2, fn, tmp, cancel = false; - obj = this.get_node(obj); - if(!obj) { return false; } - if(!this.check("edit", obj, this.get_parent(obj))) { - this.settings.core.error.call(this, this._data.core.last_error); - return false; - } - tmp = obj; - default_text = typeof default_text === 'string' ? default_text : obj.text; - this.set_text(obj, ""); - obj = this._open_to(obj); - tmp.text = default_text; - - rtl = this._data.core.rtl; - w = this.element.width(); - this._data.core.focused = tmp.id; - a = obj.children('.jstree-anchor').focus(); - s = $(''); - /*! - oi = obj.children("i:visible"), - ai = a.children("i:visible"), - w1 = oi.width() * oi.length, - w2 = ai.width() * ai.length, - */ - t = default_text; - h1 = $("<"+"div />", { css : { "position" : "absolute", "top" : "-200px", "left" : (rtl ? "0px" : "-1000px"), "visibility" : "hidden" } }).appendTo("body"); - h2 = $("<"+"input />", { - "value" : t, - "class" : "jstree-rename-input", - // "size" : t.length, - "css" : { - "padding" : "0", - "border" : "1px solid silver", - "box-sizing" : "border-box", - "display" : "inline-block", - "height" : (this._data.core.li_height) + "px", - "lineHeight" : (this._data.core.li_height) + "px", - "width" : "150px" // will be set a bit further down - }, - "blur" : $.proxy(function (e) { - e.stopImmediatePropagation(); - e.preventDefault(); - var i = s.children(".jstree-rename-input"), - v = i.val(), - f = this.settings.core.force_text, - nv; - if(v === "") { v = t; } - h1.remove(); - s.replaceWith(a); - s.remove(); - t = f ? t : $('
').append($.parseHTML(t)).html(); - this.set_text(obj, t); - nv = !!this.rename_node(obj, f ? $('
').text(v).text() : $('
').append($.parseHTML(v)).html()); - if(!nv) { - this.set_text(obj, t); // move this up? and fix #483 - } - this._data.core.focused = tmp.id; - setTimeout($.proxy(function () { - var node = this.get_node(tmp.id, true); - if(node.length) { - this._data.core.focused = tmp.id; - node.children('.jstree-anchor').focus(); - } - }, this), 0); - if(callback) { - callback.call(this, tmp, nv, cancel); - } - h2 = null; - }, this), - "keydown" : function (e) { - var key = e.which; - if(key === 27) { - cancel = true; - this.value = t; - } - if(key === 27 || key === 13 || key === 37 || key === 38 || key === 39 || key === 40 || key === 32) { - e.stopImmediatePropagation(); - } - if(key === 27 || key === 13) { - e.preventDefault(); - this.blur(); - } - }, - "click" : function (e) { e.stopImmediatePropagation(); }, - "mousedown" : function (e) { e.stopImmediatePropagation(); }, - "keyup" : function (e) { - h2.width(Math.min(h1.text("pW" + this.value).width(),w)); - }, - "keypress" : function(e) { - if(e.which === 13) { return false; } - } - }); - fn = { - fontFamily : a.css('fontFamily') || '', - fontSize : a.css('fontSize') || '', - fontWeight : a.css('fontWeight') || '', - fontStyle : a.css('fontStyle') || '', - fontStretch : a.css('fontStretch') || '', - fontVariant : a.css('fontVariant') || '', - letterSpacing : a.css('letterSpacing') || '', - wordSpacing : a.css('wordSpacing') || '' - }; - s.attr('class', a.attr('class')).append(a.contents().clone()).append(h2); - a.replaceWith(s); - h1.css(fn); - h2.css(fn).width(Math.min(h1.text("pW" + h2[0].value).width(),w))[0].select(); - $(document).one('mousedown.jstree touchstart.jstree dnd_start.vakata', function (e) { - if (h2 && e.target !== h2) { - $(h2).blur(); - } - }); - }, - - - /** - * changes the theme - * @name set_theme(theme_name [, theme_url]) - * @param {String} theme_name the name of the new theme to apply - * @param {mixed} theme_url the location of the CSS file for this theme. Omit or set to `false` if you manually included the file. Set to `true` to autoload from the `core.themes.dir` directory. - * @trigger set_theme.jstree - */ - set_theme : function (theme_name, theme_url) { - if(!theme_name) { return false; } - if(theme_url === true) { - var dir = this.settings.core.themes.dir; - if(!dir) { dir = $.jstree.path + '/themes'; } - theme_url = dir + '/' + theme_name + '/style.css'; - } - if(theme_url && $.inArray(theme_url, themes_loaded) === -1) { - $('head').append('<'+'link rel="stylesheet" href="' + theme_url + '" type="text/css" />'); - themes_loaded.push(theme_url); - } - if(this._data.core.themes.name) { - this.element.removeClass('jstree-' + this._data.core.themes.name); - } - this._data.core.themes.name = theme_name; - this.element.addClass('jstree-' + theme_name); - this.element[this.settings.core.themes.responsive ? 'addClass' : 'removeClass' ]('jstree-' + theme_name + '-responsive'); - /** - * triggered when a theme is set - * @event - * @name set_theme.jstree - * @param {String} theme the new theme - */ - this.trigger('set_theme', { 'theme' : theme_name }); - }, - /** - * gets the name of the currently applied theme name - * @name get_theme() - * @return {String} - */ - get_theme : function () { return this._data.core.themes.name; }, - /** - * changes the theme variant (if the theme has variants) - * @name set_theme_variant(variant_name) - * @param {String|Boolean} variant_name the variant to apply (if `false` is used the current variant is removed) - */ - set_theme_variant : function (variant_name) { - if(this._data.core.themes.variant) { - this.element.removeClass('jstree-' + this._data.core.themes.name + '-' + this._data.core.themes.variant); - } - this._data.core.themes.variant = variant_name; - if(variant_name) { - this.element.addClass('jstree-' + this._data.core.themes.name + '-' + this._data.core.themes.variant); - } - }, - /** - * gets the name of the currently applied theme variant - * @name get_theme() - * @return {String} - */ - get_theme_variant : function () { return this._data.core.themes.variant; }, - /** - * shows a striped background on the container (if the theme supports it) - * @name show_stripes() - */ - show_stripes : function () { - this._data.core.themes.stripes = true; - this.get_container_ul().addClass("jstree-striped"); - /** - * triggered when stripes are shown - * @event - * @name show_stripes.jstree - */ - this.trigger('show_stripes'); - }, - /** - * hides the striped background on the container - * @name hide_stripes() - */ - hide_stripes : function () { - this._data.core.themes.stripes = false; - this.get_container_ul().removeClass("jstree-striped"); - /** - * triggered when stripes are hidden - * @event - * @name hide_stripes.jstree - */ - this.trigger('hide_stripes'); - }, - /** - * toggles the striped background on the container - * @name toggle_stripes() - */ - toggle_stripes : function () { if(this._data.core.themes.stripes) { this.hide_stripes(); } else { this.show_stripes(); } }, - /** - * shows the connecting dots (if the theme supports it) - * @name show_dots() - */ - show_dots : function () { - this._data.core.themes.dots = true; - this.get_container_ul().removeClass("jstree-no-dots"); - /** - * triggered when dots are shown - * @event - * @name show_dots.jstree - */ - this.trigger('show_dots'); - }, - /** - * hides the connecting dots - * @name hide_dots() - */ - hide_dots : function () { - this._data.core.themes.dots = false; - this.get_container_ul().addClass("jstree-no-dots"); - /** - * triggered when dots are hidden - * @event - * @name hide_dots.jstree - */ - this.trigger('hide_dots'); - }, - /** - * toggles the connecting dots - * @name toggle_dots() - */ - toggle_dots : function () { if(this._data.core.themes.dots) { this.hide_dots(); } else { this.show_dots(); } }, - /** - * show the node icons - * @name show_icons() - */ - show_icons : function () { - this._data.core.themes.icons = true; - this.get_container_ul().removeClass("jstree-no-icons"); - /** - * triggered when icons are shown - * @event - * @name show_icons.jstree - */ - this.trigger('show_icons'); - }, - /** - * hide the node icons - * @name hide_icons() - */ - hide_icons : function () { - this._data.core.themes.icons = false; - this.get_container_ul().addClass("jstree-no-icons"); - /** - * triggered when icons are hidden - * @event - * @name hide_icons.jstree - */ - this.trigger('hide_icons'); - }, - /** - * toggle the node icons - * @name toggle_icons() - */ - toggle_icons : function () { if(this._data.core.themes.icons) { this.hide_icons(); } else { this.show_icons(); } }, - /** - * show the node ellipsis - * @name show_icons() - */ - show_ellipsis : function () { - this._data.core.themes.ellipsis = true; - this.get_container_ul().addClass("jstree-ellipsis"); - /** - * triggered when ellisis is shown - * @event - * @name show_ellipsis.jstree - */ - this.trigger('show_ellipsis'); - }, - /** - * hide the node ellipsis - * @name hide_ellipsis() - */ - hide_ellipsis : function () { - this._data.core.themes.ellipsis = false; - this.get_container_ul().removeClass("jstree-ellipsis"); - /** - * triggered when ellisis is hidden - * @event - * @name hide_ellipsis.jstree - */ - this.trigger('hide_ellipsis'); - }, - /** - * toggle the node ellipsis - * @name toggle_icons() - */ - toggle_ellipsis : function () { if(this._data.core.themes.ellipsis) { this.hide_ellipsis(); } else { this.show_ellipsis(); } }, - /** - * set the node icon for a node - * @name set_icon(obj, icon) - * @param {mixed} obj - * @param {String} icon the new icon - can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class - */ - set_icon : function (obj, icon) { - var t1, t2, dom, old; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.set_icon(obj[t1], icon); - } - return true; - } - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { return false; } - old = obj.icon; - obj.icon = icon === true || icon === null || icon === undefined || icon === '' ? true : icon; - dom = this.get_node(obj, true).children(".jstree-anchor").children(".jstree-themeicon"); - if(icon === false) { - dom.removeClass('jstree-themeicon-custom ' + old).css("background","").removeAttr("rel"); - this.hide_icon(obj); - } - else if(icon === true || icon === null || icon === undefined || icon === '') { - dom.removeClass('jstree-themeicon-custom ' + old).css("background","").removeAttr("rel"); - if(old === false) { this.show_icon(obj); } - } - else if(icon.indexOf("/") === -1 && icon.indexOf(".") === -1) { - dom.removeClass(old).css("background",""); - dom.addClass(icon + ' jstree-themeicon-custom').attr("rel",icon); - if(old === false) { this.show_icon(obj); } - } - else { - dom.removeClass(old).css("background",""); - dom.addClass('jstree-themeicon-custom').css("background", "url('" + icon + "') center center no-repeat").attr("rel",icon); - if(old === false) { this.show_icon(obj); } - } - return true; - }, - /** - * get the node icon for a node - * @name get_icon(obj) - * @param {mixed} obj - * @return {String} - */ - get_icon : function (obj) { - obj = this.get_node(obj); - return (!obj || obj.id === $.jstree.root) ? false : obj.icon; - }, - /** - * hide the icon on an individual node - * @name hide_icon(obj) - * @param {mixed} obj - */ - hide_icon : function (obj) { - var t1, t2; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.hide_icon(obj[t1]); - } - return true; - } - obj = this.get_node(obj); - if(!obj || obj === $.jstree.root) { return false; } - obj.icon = false; - this.get_node(obj, true).children(".jstree-anchor").children(".jstree-themeicon").addClass('jstree-themeicon-hidden'); - return true; - }, - /** - * show the icon on an individual node - * @name show_icon(obj) - * @param {mixed} obj - */ - show_icon : function (obj) { - var t1, t2, dom; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.show_icon(obj[t1]); - } - return true; - } - obj = this.get_node(obj); - if(!obj || obj === $.jstree.root) { return false; } - dom = this.get_node(obj, true); - obj.icon = dom.length ? dom.children(".jstree-anchor").children(".jstree-themeicon").attr('rel') : true; - if(!obj.icon) { obj.icon = true; } - dom.children(".jstree-anchor").children(".jstree-themeicon").removeClass('jstree-themeicon-hidden'); - return true; - } - }; - - // helpers - $.vakata = {}; - // collect attributes - $.vakata.attributes = function(node, with_values) { - node = $(node)[0]; - var attr = with_values ? {} : []; - if(node && node.attributes) { - $.each(node.attributes, function (i, v) { - if($.inArray(v.name.toLowerCase(),['style','contenteditable','hasfocus','tabindex']) !== -1) { return; } - if(v.value !== null && $.trim(v.value) !== '') { - if(with_values) { attr[v.name] = v.value; } - else { attr.push(v.name); } - } - }); - } - return attr; - }; - $.vakata.array_unique = function(array) { - var a = [], i, j, l, o = {}; - for(i = 0, l = array.length; i < l; i++) { - if(o[array[i]] === undefined) { - a.push(array[i]); - o[array[i]] = true; - } - } - return a; - }; - // remove item from array - $.vakata.array_remove = function(array, from) { - array.splice(from, 1); - return array; - //var rest = array.slice((to || from) + 1 || array.length); - //array.length = from < 0 ? array.length + from : from; - //array.push.apply(array, rest); - //return array; - }; - // remove item from array - $.vakata.array_remove_item = function(array, item) { - var tmp = $.inArray(item, array); - return tmp !== -1 ? $.vakata.array_remove(array, tmp) : array; - }; - $.vakata.array_filter = function(c,a,b,d,e) { - if (c.filter) { - return c.filter(a, b); - } - d=[]; - for (e in c) { - if (~~e+''===e+'' && e>=0 && a.call(b,c[e],+e,c)) { - d.push(c[e]); - } - } - return d; - }; - - -/** - * ### Changed plugin - * - * This plugin adds more information to the `changed.jstree` event. The new data is contained in the `changed` event data property, and contains a lists of `selected` and `deselected` nodes. - */ - - $.jstree.plugins.changed = function (options, parent) { - var last = []; - this.trigger = function (ev, data) { - var i, j; - if(!data) { - data = {}; - } - if(ev.replace('.jstree','') === 'changed') { - data.changed = { selected : [], deselected : [] }; - var tmp = {}; - for(i = 0, j = last.length; i < j; i++) { - tmp[last[i]] = 1; - } - for(i = 0, j = data.selected.length; i < j; i++) { - if(!tmp[data.selected[i]]) { - data.changed.selected.push(data.selected[i]); - } - else { - tmp[data.selected[i]] = 2; - } - } - for(i = 0, j = last.length; i < j; i++) { - if(tmp[last[i]] === 1) { - data.changed.deselected.push(last[i]); - } - } - last = data.selected.slice(); - } - /** - * triggered when selection changes (the "changed" plugin enhances the original event with more data) - * @event - * @name changed.jstree - * @param {Object} node - * @param {Object} action the action that caused the selection to change - * @param {Array} selected the current selection - * @param {Object} changed an object containing two properties `selected` and `deselected` - both arrays of node IDs, which were selected or deselected since the last changed event - * @param {Object} event the event (if any) that triggered this changed event - * @plugin changed - */ - parent.trigger.call(this, ev, data); - }; - this.refresh = function (skip_loading, forget_state) { - last = []; - return parent.refresh.apply(this, arguments); - }; - }; - -/** - * ### Checkbox plugin - * - * This plugin renders checkbox icons in front of each node, making multiple selection much easier. - * It also supports tri-state behavior, meaning that if a node has a few of its children checked it will be rendered as undetermined, and state will be propagated up. - */ - - var _i = document.createElement('I'); - _i.className = 'jstree-icon jstree-checkbox'; - _i.setAttribute('role', 'presentation'); - /** - * stores all defaults for the checkbox plugin - * @name $.jstree.defaults.checkbox - * @plugin checkbox - */ - $.jstree.defaults.checkbox = { - /** - * a boolean indicating if checkboxes should be visible (can be changed at a later time using `show_checkboxes()` and `hide_checkboxes`). Defaults to `true`. - * @name $.jstree.defaults.checkbox.visible - * @plugin checkbox - */ - visible : true, - /** - * a boolean indicating if checkboxes should cascade down and have an undetermined state. Defaults to `true`. - * @name $.jstree.defaults.checkbox.three_state - * @plugin checkbox - */ - three_state : true, - /** - * a boolean indicating if clicking anywhere on the node should act as clicking on the checkbox. Defaults to `true`. - * @name $.jstree.defaults.checkbox.whole_node - * @plugin checkbox - */ - whole_node : true, - /** - * a boolean indicating if the selected style of a node should be kept, or removed. Defaults to `true`. - * @name $.jstree.defaults.checkbox.keep_selected_style - * @plugin checkbox - */ - keep_selected_style : true, - /** - * This setting controls how cascading and undetermined nodes are applied. - * If 'up' is in the string - cascading up is enabled, if 'down' is in the string - cascading down is enabled, if 'undetermined' is in the string - undetermined nodes will be used. - * If `three_state` is set to `true` this setting is automatically set to 'up+down+undetermined'. Defaults to ''. - * @name $.jstree.defaults.checkbox.cascade - * @plugin checkbox - */ - cascade : '', - /** - * This setting controls if checkbox are bound to the general tree selection or to an internal array maintained by the checkbox plugin. Defaults to `true`, only set to `false` if you know exactly what you are doing. - * @name $.jstree.defaults.checkbox.tie_selection - * @plugin checkbox - */ - tie_selection : true, - - /** - * This setting controls if cascading down affects disabled checkboxes - * @name $.jstree.defaults.checkbox.cascade_to_disabled - * @plugin checkbox - */ - cascade_to_disabled : true, - - /** - * This setting controls if cascading down affects hidden checkboxes - * @name $.jstree.defaults.checkbox.cascade_to_hidden - * @plugin checkbox - */ - cascade_to_hidden : true - }; - $.jstree.plugins.checkbox = function (options, parent) { - this.bind = function () { - parent.bind.call(this); - this._data.checkbox.uto = false; - this._data.checkbox.selected = []; - if(this.settings.checkbox.three_state) { - this.settings.checkbox.cascade = 'up+down+undetermined'; - } - this.element - .on("init.jstree", $.proxy(function () { - this._data.checkbox.visible = this.settings.checkbox.visible; - if(!this.settings.checkbox.keep_selected_style) { - this.element.addClass('jstree-checkbox-no-clicked'); - } - if(this.settings.checkbox.tie_selection) { - this.element.addClass('jstree-checkbox-selection'); - } - }, this)) - .on("loading.jstree", $.proxy(function () { - this[ this._data.checkbox.visible ? 'show_checkboxes' : 'hide_checkboxes' ](); - }, this)); - if(this.settings.checkbox.cascade.indexOf('undetermined') !== -1) { - this.element - .on('changed.jstree uncheck_node.jstree check_node.jstree uncheck_all.jstree check_all.jstree move_node.jstree copy_node.jstree redraw.jstree open_node.jstree', $.proxy(function () { - // only if undetermined is in setting - if(this._data.checkbox.uto) { clearTimeout(this._data.checkbox.uto); } - this._data.checkbox.uto = setTimeout($.proxy(this._undetermined, this), 50); - }, this)); - } - if(!this.settings.checkbox.tie_selection) { - this.element - .on('model.jstree', $.proxy(function (e, data) { - var m = this._model.data, - p = m[data.parent], - dpc = data.nodes, - i, j; - for(i = 0, j = dpc.length; i < j; i++) { - m[dpc[i]].state.checked = m[dpc[i]].state.checked || (m[dpc[i]].original && m[dpc[i]].original.state && m[dpc[i]].original.state.checked); - if(m[dpc[i]].state.checked) { - this._data.checkbox.selected.push(dpc[i]); - } - } - }, this)); - } - if(this.settings.checkbox.cascade.indexOf('up') !== -1 || this.settings.checkbox.cascade.indexOf('down') !== -1) { - this.element - .on('model.jstree', $.proxy(function (e, data) { - var m = this._model.data, - p = m[data.parent], - dpc = data.nodes, - chd = [], - c, i, j, k, l, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection; - - if(s.indexOf('down') !== -1) { - // apply down - if(p.state[ t ? 'selected' : 'checked' ]) { - for(i = 0, j = dpc.length; i < j; i++) { - m[dpc[i]].state[ t ? 'selected' : 'checked' ] = true; - } - - this._data[ t ? 'core' : 'checkbox' ].selected = this._data[ t ? 'core' : 'checkbox' ].selected.concat(dpc); - } - else { - for(i = 0, j = dpc.length; i < j; i++) { - if(m[dpc[i]].state[ t ? 'selected' : 'checked' ]) { - for(k = 0, l = m[dpc[i]].children_d.length; k < l; k++) { - m[m[dpc[i]].children_d[k]].state[ t ? 'selected' : 'checked' ] = true; - } - this._data[ t ? 'core' : 'checkbox' ].selected = this._data[ t ? 'core' : 'checkbox' ].selected.concat(m[dpc[i]].children_d); - } - } - } - } - - if(s.indexOf('up') !== -1) { - // apply up - for(i = 0, j = p.children_d.length; i < j; i++) { - if(!m[p.children_d[i]].children.length) { - chd.push(m[p.children_d[i]].parent); - } - } - chd = $.vakata.array_unique(chd); - for(k = 0, l = chd.length; k < l; k++) { - p = m[chd[k]]; - while(p && p.id !== $.jstree.root) { - c = 0; - for(i = 0, j = p.children.length; i < j; i++) { - c += m[p.children[i]].state[ t ? 'selected' : 'checked' ]; - } - if(c === j) { - p.state[ t ? 'selected' : 'checked' ] = true; - this._data[ t ? 'core' : 'checkbox' ].selected.push(p.id); - tmp = this.get_node(p, true); - if(tmp && tmp.length) { - tmp.attr('aria-selected', true).children('.jstree-anchor').addClass( t ? 'jstree-clicked' : 'jstree-checked'); - } - } - else { - break; - } - p = this.get_node(p.parent); - } - } - } - - this._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(this._data[ t ? 'core' : 'checkbox' ].selected); - }, this)) - .on(this.settings.checkbox.tie_selection ? 'select_node.jstree' : 'check_node.jstree', $.proxy(function (e, data) { - var self = this, - obj = data.node, - m = this._model.data, - par = this.get_node(obj.parent), - i, j, c, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection, - sel = {}, cur = this._data[ t ? 'core' : 'checkbox' ].selected; - - for (i = 0, j = cur.length; i < j; i++) { - sel[cur[i]] = true; - } - - // apply down - if(s.indexOf('down') !== -1) { - //this._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(this._data[ t ? 'core' : 'checkbox' ].selected.concat(obj.children_d)); - var selectedIds = this._cascade_new_checked_state(obj.id, true); - var temp = obj.children_d.concat(obj.id); - for (i = 0, j = temp.length; i < j; i++) { - if (selectedIds.indexOf(temp[i]) > -1) { - sel[temp[i]] = true; - } - else { - delete sel[temp[i]]; - } - } - } - - // apply up - if(s.indexOf('up') !== -1) { - while(par && par.id !== $.jstree.root) { - c = 0; - for(i = 0, j = par.children.length; i < j; i++) { - c += m[par.children[i]].state[ t ? 'selected' : 'checked' ]; - } - if(c === j) { - par.state[ t ? 'selected' : 'checked' ] = true; - sel[par.id] = true; - //this._data[ t ? 'core' : 'checkbox' ].selected.push(par.id); - tmp = this.get_node(par, true); - if(tmp && tmp.length) { - tmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); - } - } - else { - break; - } - par = this.get_node(par.parent); - } - } - - cur = []; - for (i in sel) { - if (sel.hasOwnProperty(i)) { - cur.push(i); - } - } - this._data[ t ? 'core' : 'checkbox' ].selected = cur; - }, this)) - .on(this.settings.checkbox.tie_selection ? 'deselect_all.jstree' : 'uncheck_all.jstree', $.proxy(function (e, data) { - var obj = this.get_node($.jstree.root), - m = this._model.data, - i, j, tmp; - for(i = 0, j = obj.children_d.length; i < j; i++) { - tmp = m[obj.children_d[i]]; - if(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) { - tmp.original.state.undetermined = false; - } - } - }, this)) - .on(this.settings.checkbox.tie_selection ? 'deselect_node.jstree' : 'uncheck_node.jstree', $.proxy(function (e, data) { - var self = this, - obj = data.node, - dom = this.get_node(obj, true), - i, j, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection, - cur = this._data[ t ? 'core' : 'checkbox' ].selected, sel = {}, - stillSelectedIds = [], - allIds = obj.children_d.concat(obj.id); - - // apply down - if(s.indexOf('down') !== -1) { - var selectedIds = this._cascade_new_checked_state(obj.id, false); - - cur = cur.filter(function(id) { - return allIds.indexOf(id) === -1 || selectedIds.indexOf(id) > -1; - }); - } - - // only apply up if cascade up is enabled and if this node is not selected - // (if all child nodes are disabled and cascade_to_disabled === false then this node will till be selected). - if(s.indexOf('up') !== -1 && cur.indexOf(obj.id) === -1) { - for(i = 0, j = obj.parents.length; i < j; i++) { - tmp = this._model.data[obj.parents[i]]; - tmp.state[ t ? 'selected' : 'checked' ] = false; - if(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) { - tmp.original.state.undetermined = false; - } - tmp = this.get_node(obj.parents[i], true); - if(tmp && tmp.length) { - tmp.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked'); - } - } - - cur = cur.filter(function(id) { - return obj.parents.indexOf(id) === -1; - }); - } - - this._data[ t ? 'core' : 'checkbox' ].selected = cur; - }, this)); - } - if(this.settings.checkbox.cascade.indexOf('up') !== -1) { - this.element - .on('delete_node.jstree', $.proxy(function (e, data) { - // apply up (whole handler) - var p = this.get_node(data.parent), - m = this._model.data, - i, j, c, tmp, t = this.settings.checkbox.tie_selection; - while(p && p.id !== $.jstree.root && !p.state[ t ? 'selected' : 'checked' ]) { - c = 0; - for(i = 0, j = p.children.length; i < j; i++) { - c += m[p.children[i]].state[ t ? 'selected' : 'checked' ]; - } - if(j > 0 && c === j) { - p.state[ t ? 'selected' : 'checked' ] = true; - this._data[ t ? 'core' : 'checkbox' ].selected.push(p.id); - tmp = this.get_node(p, true); - if(tmp && tmp.length) { - tmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); - } - } - else { - break; - } - p = this.get_node(p.parent); - } - }, this)) - .on('move_node.jstree', $.proxy(function (e, data) { - // apply up (whole handler) - var is_multi = data.is_multi, - old_par = data.old_parent, - new_par = this.get_node(data.parent), - m = this._model.data, - p, c, i, j, tmp, t = this.settings.checkbox.tie_selection; - if(!is_multi) { - p = this.get_node(old_par); - while(p && p.id !== $.jstree.root && !p.state[ t ? 'selected' : 'checked' ]) { - c = 0; - for(i = 0, j = p.children.length; i < j; i++) { - c += m[p.children[i]].state[ t ? 'selected' : 'checked' ]; - } - if(j > 0 && c === j) { - p.state[ t ? 'selected' : 'checked' ] = true; - this._data[ t ? 'core' : 'checkbox' ].selected.push(p.id); - tmp = this.get_node(p, true); - if(tmp && tmp.length) { - tmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); - } - } - else { - break; - } - p = this.get_node(p.parent); - } - } - p = new_par; - while(p && p.id !== $.jstree.root) { - c = 0; - for(i = 0, j = p.children.length; i < j; i++) { - c += m[p.children[i]].state[ t ? 'selected' : 'checked' ]; - } - if(c === j) { - if(!p.state[ t ? 'selected' : 'checked' ]) { - p.state[ t ? 'selected' : 'checked' ] = true; - this._data[ t ? 'core' : 'checkbox' ].selected.push(p.id); - tmp = this.get_node(p, true); - if(tmp && tmp.length) { - tmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); - } - } - } - else { - if(p.state[ t ? 'selected' : 'checked' ]) { - p.state[ t ? 'selected' : 'checked' ] = false; - this._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_remove_item(this._data[ t ? 'core' : 'checkbox' ].selected, p.id); - tmp = this.get_node(p, true); - if(tmp && tmp.length) { - tmp.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked'); - } - } - else { - break; - } - } - p = this.get_node(p.parent); - } - }, this)); - } - }; - - /** - * set the undetermined state where and if necessary. Used internally. - * @private - * @name _undetermined() - * @plugin checkbox - */ - this._undetermined = function () { - if(this.element === null) { return; } - var i, j, k, l, o = {}, m = this._model.data, t = this.settings.checkbox.tie_selection, s = this._data[ t ? 'core' : 'checkbox' ].selected, p = [], tt = this; - for(i = 0, j = s.length; i < j; i++) { - if(m[s[i]] && m[s[i]].parents) { - for(k = 0, l = m[s[i]].parents.length; k < l; k++) { - if(o[m[s[i]].parents[k]] !== undefined) { - break; - } - if(m[s[i]].parents[k] !== $.jstree.root) { - o[m[s[i]].parents[k]] = true; - p.push(m[s[i]].parents[k]); - } - } - } - } - // attempt for server side undetermined state - this.element.find('.jstree-closed').not(':has(.jstree-children)') - .each(function () { - var tmp = tt.get_node(this), tmp2; - - if(!tmp) { return; } - - if(!tmp.state.loaded) { - if(tmp.original && tmp.original.state && tmp.original.state.undetermined && tmp.original.state.undetermined === true) { - if(o[tmp.id] === undefined && tmp.id !== $.jstree.root) { - o[tmp.id] = true; - p.push(tmp.id); - } - for(k = 0, l = tmp.parents.length; k < l; k++) { - if(o[tmp.parents[k]] === undefined && tmp.parents[k] !== $.jstree.root) { - o[tmp.parents[k]] = true; - p.push(tmp.parents[k]); - } - } - } - } - else { - for(i = 0, j = tmp.children_d.length; i < j; i++) { - tmp2 = m[tmp.children_d[i]]; - if(!tmp2.state.loaded && tmp2.original && tmp2.original.state && tmp2.original.state.undetermined && tmp2.original.state.undetermined === true) { - if(o[tmp2.id] === undefined && tmp2.id !== $.jstree.root) { - o[tmp2.id] = true; - p.push(tmp2.id); - } - for(k = 0, l = tmp2.parents.length; k < l; k++) { - if(o[tmp2.parents[k]] === undefined && tmp2.parents[k] !== $.jstree.root) { - o[tmp2.parents[k]] = true; - p.push(tmp2.parents[k]); - } - } - } - } - } - }); - - this.element.find('.jstree-undetermined').removeClass('jstree-undetermined'); - for(i = 0, j = p.length; i < j; i++) { - if(!m[p[i]].state[ t ? 'selected' : 'checked' ]) { - s = this.get_node(p[i], true); - if(s && s.length) { - s.children('.jstree-anchor').children('.jstree-checkbox').addClass('jstree-undetermined'); - } - } - } - }; - this.redraw_node = function(obj, deep, is_callback, force_render) { - obj = parent.redraw_node.apply(this, arguments); - if(obj) { - var i, j, tmp = null, icon = null; - for(i = 0, j = obj.childNodes.length; i < j; i++) { - if(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf("jstree-anchor") !== -1) { - tmp = obj.childNodes[i]; - break; - } - } - if(tmp) { - if(!this.settings.checkbox.tie_selection && this._model.data[obj.id].state.checked) { tmp.className += ' jstree-checked'; } - icon = _i.cloneNode(false); - if(this._model.data[obj.id].state.checkbox_disabled) { icon.className += ' jstree-checkbox-disabled'; } - tmp.insertBefore(icon, tmp.childNodes[0]); - } - } - if(!is_callback && this.settings.checkbox.cascade.indexOf('undetermined') !== -1) { - if(this._data.checkbox.uto) { clearTimeout(this._data.checkbox.uto); } - this._data.checkbox.uto = setTimeout($.proxy(this._undetermined, this), 50); - } - return obj; - }; - /** - * show the node checkbox icons - * @name show_checkboxes() - * @plugin checkbox - */ - this.show_checkboxes = function () { this._data.core.themes.checkboxes = true; this.get_container_ul().removeClass("jstree-no-checkboxes"); }; - /** - * hide the node checkbox icons - * @name hide_checkboxes() - * @plugin checkbox - */ - this.hide_checkboxes = function () { this._data.core.themes.checkboxes = false; this.get_container_ul().addClass("jstree-no-checkboxes"); }; - /** - * toggle the node icons - * @name toggle_checkboxes() - * @plugin checkbox - */ - this.toggle_checkboxes = function () { if(this._data.core.themes.checkboxes) { this.hide_checkboxes(); } else { this.show_checkboxes(); } }; - /** - * checks if a node is in an undetermined state - * @name is_undetermined(obj) - * @param {mixed} obj - * @return {Boolean} - */ - this.is_undetermined = function (obj) { - obj = this.get_node(obj); - var s = this.settings.checkbox.cascade, i, j, t = this.settings.checkbox.tie_selection, d = this._data[ t ? 'core' : 'checkbox' ].selected, m = this._model.data; - if(!obj || obj.state[ t ? 'selected' : 'checked' ] === true || s.indexOf('undetermined') === -1 || (s.indexOf('down') === -1 && s.indexOf('up') === -1)) { - return false; - } - if(!obj.state.loaded && obj.original.state.undetermined === true) { - return true; - } - for(i = 0, j = obj.children_d.length; i < j; i++) { - if($.inArray(obj.children_d[i], d) !== -1 || (!m[obj.children_d[i]].state.loaded && m[obj.children_d[i]].original.state.undetermined)) { - return true; - } - } - return false; - }; - /** - * disable a node's checkbox - * @name disable_checkbox(obj) - * @param {mixed} obj an array can be used too - * @trigger disable_checkbox.jstree - * @plugin checkbox - */ - this.disable_checkbox = function (obj) { - var t1, t2, dom; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.disable_checkbox(obj[t1]); - } - return true; - } - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { - return false; - } - dom = this.get_node(obj, true); - if(!obj.state.checkbox_disabled) { - obj.state.checkbox_disabled = true; - if(dom && dom.length) { - dom.children('.jstree-anchor').children('.jstree-checkbox').addClass('jstree-checkbox-disabled'); - } - /** - * triggered when an node's checkbox is disabled - * @event - * @name disable_checkbox.jstree - * @param {Object} node - * @plugin checkbox - */ - this.trigger('disable_checkbox', { 'node' : obj }); - } - }; - /** - * enable a node's checkbox - * @name disable_checkbox(obj) - * @param {mixed} obj an array can be used too - * @trigger enable_checkbox.jstree - * @plugin checkbox - */ - this.enable_checkbox = function (obj) { - var t1, t2, dom; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.enable_checkbox(obj[t1]); - } - return true; - } - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { - return false; - } - dom = this.get_node(obj, true); - if(obj.state.checkbox_disabled) { - obj.state.checkbox_disabled = false; - if(dom && dom.length) { - dom.children('.jstree-anchor').children('.jstree-checkbox').removeClass('jstree-checkbox-disabled'); - } - /** - * triggered when an node's checkbox is enabled - * @event - * @name enable_checkbox.jstree - * @param {Object} node - * @plugin checkbox - */ - this.trigger('enable_checkbox', { 'node' : obj }); - } - }; - - this.activate_node = function (obj, e) { - if($(e.target).hasClass('jstree-checkbox-disabled')) { - return false; - } - if(this.settings.checkbox.tie_selection && (this.settings.checkbox.whole_node || $(e.target).hasClass('jstree-checkbox'))) { - e.ctrlKey = true; - } - if(this.settings.checkbox.tie_selection || (!this.settings.checkbox.whole_node && !$(e.target).hasClass('jstree-checkbox'))) { - return parent.activate_node.call(this, obj, e); - } - if(this.is_disabled(obj)) { - return false; - } - if(this.is_checked(obj)) { - this.uncheck_node(obj, e); - } - else { - this.check_node(obj, e); - } - this.trigger('activate_node', { 'node' : this.get_node(obj) }); - }; - - /** - * Unchecks a node and all its descendants. This function does NOT affect hidden and disabled nodes (or their descendants). - * However if these unaffected nodes are already selected their ids will be included in the returned array. - * @param id - * @param checkedState - * @returns {Array} Array of all node id's (in this tree branch) that are checked. - */ - this._cascade_new_checked_state = function(id, checkedState) { - var self = this; - var t = this.settings.checkbox.tie_selection; - var node = this._model.data[id]; - var selectedNodeIds = []; - var selectedChildrenIds = [], i, j, selectedChildIds; - - if ( - (this.settings.checkbox.cascade_to_disabled || !node.state.disabled) && - (this.settings.checkbox.cascade_to_hidden || !node.state.hidden) - ) { - //First try and check/uncheck the children - if (node.children) { - for (i = 0, j = node.children.length; i < j; i++) { - var childId = node.children[i]; - selectedChildIds = self._cascade_new_checked_state(childId, checkedState); - selectedNodeIds = selectedNodeIds.concat(selectedChildIds); - if (selectedChildIds.indexOf(childId) > -1) { - selectedChildrenIds.push(childId); - } - } - } - - var dom = self.get_node(node, true); - - //A node's state is undetermined if some but not all of it's children are checked/selected . - var undetermined = selectedChildrenIds.length > 0 && selectedChildrenIds.length < node.children.length; - - if(node.original && node.original.state && node.original.state.undetermined) { - node.original.state.undetermined = undetermined; - } - - //If a node is undetermined then remove selected class - if (undetermined) { - node.state[ t ? 'selected' : 'checked' ] = false; - dom.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked'); - } - //Otherwise, if the checkedState === true (i.e. the node is being checked now) and all of the node's children are checked (if it has any children), - //check the node and style it correctly. - else if (checkedState && selectedChildrenIds.length === node.children.length) { - node.state[ t ? 'selected' : 'checked' ] = checkedState; - selectedNodeIds.push(node.id); - - dom.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); - } - else { - node.state[ t ? 'selected' : 'checked' ] = false; - dom.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked'); - } - } - else { - selectedChildIds = this.get_checked_descendants(id); - - if (node.state[ t ? 'selected' : 'checked' ]) { - selectedChildIds.push(node.id); - } - - selectedNodeIds = selectedNodeIds.concat(selectedChildIds); - } - - return selectedNodeIds; - }; - - /** - * Gets ids of nodes selected in branch (of tree) specified by id (does not include the node specified by id) - * @param id - */ - this.get_checked_descendants = function(id) { - var self = this; - var t = self.settings.checkbox.tie_selection; - var node = self._model.data[id]; - - return node.children_d.filter(function(_id) { - return self._model.data[_id].state[ t ? 'selected' : 'checked' ]; - }); - }; - - /** - * check a node (only if tie_selection in checkbox settings is false, otherwise select_node will be called internally) - * @name check_node(obj) - * @param {mixed} obj an array can be used to check multiple nodes - * @trigger check_node.jstree - * @plugin checkbox - */ - this.check_node = function (obj, e) { - if(this.settings.checkbox.tie_selection) { return this.select_node(obj, false, true, e); } - var dom, t1, t2, th; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.check_node(obj[t1], e); - } - return true; - } - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { - return false; - } - dom = this.get_node(obj, true); - if(!obj.state.checked) { - obj.state.checked = true; - this._data.checkbox.selected.push(obj.id); - if(dom && dom.length) { - dom.children('.jstree-anchor').addClass('jstree-checked'); - } - /** - * triggered when an node is checked (only if tie_selection in checkbox settings is false) - * @event - * @name check_node.jstree - * @param {Object} node - * @param {Array} selected the current selection - * @param {Object} event the event (if any) that triggered this check_node - * @plugin checkbox - */ - this.trigger('check_node', { 'node' : obj, 'selected' : this._data.checkbox.selected, 'event' : e }); - } - }; - /** - * uncheck a node (only if tie_selection in checkbox settings is false, otherwise deselect_node will be called internally) - * @name uncheck_node(obj) - * @param {mixed} obj an array can be used to uncheck multiple nodes - * @trigger uncheck_node.jstree - * @plugin checkbox - */ - this.uncheck_node = function (obj, e) { - if(this.settings.checkbox.tie_selection) { return this.deselect_node(obj, false, e); } - var t1, t2, dom; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.uncheck_node(obj[t1], e); - } - return true; - } - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { - return false; - } - dom = this.get_node(obj, true); - if(obj.state.checked) { - obj.state.checked = false; - this._data.checkbox.selected = $.vakata.array_remove_item(this._data.checkbox.selected, obj.id); - if(dom.length) { - dom.children('.jstree-anchor').removeClass('jstree-checked'); - } - /** - * triggered when an node is unchecked (only if tie_selection in checkbox settings is false) - * @event - * @name uncheck_node.jstree - * @param {Object} node - * @param {Array} selected the current selection - * @param {Object} event the event (if any) that triggered this uncheck_node - * @plugin checkbox - */ - this.trigger('uncheck_node', { 'node' : obj, 'selected' : this._data.checkbox.selected, 'event' : e }); - } - }; - - /** - * checks all nodes in the tree (only if tie_selection in checkbox settings is false, otherwise select_all will be called internally) - * @name check_all() - * @trigger check_all.jstree, changed.jstree - * @plugin checkbox - */ - this.check_all = function () { - if(this.settings.checkbox.tie_selection) { return this.select_all(); } - var tmp = this._data.checkbox.selected.concat([]), i, j; - this._data.checkbox.selected = this._model.data[$.jstree.root].children_d.concat(); - for(i = 0, j = this._data.checkbox.selected.length; i < j; i++) { - if(this._model.data[this._data.checkbox.selected[i]]) { - this._model.data[this._data.checkbox.selected[i]].state.checked = true; - } - } - this.redraw(true); - /** - * triggered when all nodes are checked (only if tie_selection in checkbox settings is false) - * @event - * @name check_all.jstree - * @param {Array} selected the current selection - * @plugin checkbox - */ - this.trigger('check_all', { 'selected' : this._data.checkbox.selected }); - }; - /** - * uncheck all checked nodes (only if tie_selection in checkbox settings is false, otherwise deselect_all will be called internally) - * @name uncheck_all() - * @trigger uncheck_all.jstree - * @plugin checkbox - */ - this.uncheck_all = function () { - if(this.settings.checkbox.tie_selection) { return this.deselect_all(); } - var tmp = this._data.checkbox.selected.concat([]), i, j; - for(i = 0, j = this._data.checkbox.selected.length; i < j; i++) { - if(this._model.data[this._data.checkbox.selected[i]]) { - this._model.data[this._data.checkbox.selected[i]].state.checked = false; - } - } - this._data.checkbox.selected = []; - this.element.find('.jstree-checked').removeClass('jstree-checked'); - /** - * triggered when all nodes are unchecked (only if tie_selection in checkbox settings is false) - * @event - * @name uncheck_all.jstree - * @param {Object} node the previous selection - * @param {Array} selected the current selection - * @plugin checkbox - */ - this.trigger('uncheck_all', { 'selected' : this._data.checkbox.selected, 'node' : tmp }); - }; - /** - * checks if a node is checked (if tie_selection is on in the settings this function will return the same as is_selected) - * @name is_checked(obj) - * @param {mixed} obj - * @return {Boolean} - * @plugin checkbox - */ - this.is_checked = function (obj) { - if(this.settings.checkbox.tie_selection) { return this.is_selected(obj); } - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { return false; } - return obj.state.checked; - }; - /** - * get an array of all checked nodes (if tie_selection is on in the settings this function will return the same as get_selected) - * @name get_checked([full]) - * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned - * @return {Array} - * @plugin checkbox - */ - this.get_checked = function (full) { - if(this.settings.checkbox.tie_selection) { return this.get_selected(full); } - return full ? $.map(this._data.checkbox.selected, $.proxy(function (i) { return this.get_node(i); }, this)) : this._data.checkbox.selected; - }; - /** - * get an array of all top level checked nodes (ignoring children of checked nodes) (if tie_selection is on in the settings this function will return the same as get_top_selected) - * @name get_top_checked([full]) - * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned - * @return {Array} - * @plugin checkbox - */ - this.get_top_checked = function (full) { - if(this.settings.checkbox.tie_selection) { return this.get_top_selected(full); } - var tmp = this.get_checked(true), - obj = {}, i, j, k, l; - for(i = 0, j = tmp.length; i < j; i++) { - obj[tmp[i].id] = tmp[i]; - } - for(i = 0, j = tmp.length; i < j; i++) { - for(k = 0, l = tmp[i].children_d.length; k < l; k++) { - if(obj[tmp[i].children_d[k]]) { - delete obj[tmp[i].children_d[k]]; - } - } - } - tmp = []; - for(i in obj) { - if(obj.hasOwnProperty(i)) { - tmp.push(i); - } - } - return full ? $.map(tmp, $.proxy(function (i) { return this.get_node(i); }, this)) : tmp; - }; - /** - * get an array of all bottom level checked nodes (ignoring selected parents) (if tie_selection is on in the settings this function will return the same as get_bottom_selected) - * @name get_bottom_checked([full]) - * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned - * @return {Array} - * @plugin checkbox - */ - this.get_bottom_checked = function (full) { - if(this.settings.checkbox.tie_selection) { return this.get_bottom_selected(full); } - var tmp = this.get_checked(true), - obj = [], i, j; - for(i = 0, j = tmp.length; i < j; i++) { - if(!tmp[i].children.length) { - obj.push(tmp[i].id); - } - } - return full ? $.map(obj, $.proxy(function (i) { return this.get_node(i); }, this)) : obj; - }; - this.load_node = function (obj, callback) { - var k, l, i, j, c, tmp; - if(!$.isArray(obj) && !this.settings.checkbox.tie_selection) { - tmp = this.get_node(obj); - if(tmp && tmp.state.loaded) { - for(k = 0, l = tmp.children_d.length; k < l; k++) { - if(this._model.data[tmp.children_d[k]].state.checked) { - c = true; - this._data.checkbox.selected = $.vakata.array_remove_item(this._data.checkbox.selected, tmp.children_d[k]); - } - } - } - } - return parent.load_node.apply(this, arguments); - }; - this.get_state = function () { - var state = parent.get_state.apply(this, arguments); - if(this.settings.checkbox.tie_selection) { return state; } - state.checkbox = this._data.checkbox.selected.slice(); - return state; - }; - this.set_state = function (state, callback) { - var res = parent.set_state.apply(this, arguments); - if(res && state.checkbox) { - if(!this.settings.checkbox.tie_selection) { - this.uncheck_all(); - var _this = this; - $.each(state.checkbox, function (i, v) { - _this.check_node(v); - }); - } - delete state.checkbox; - this.set_state(state, callback); - return false; - } - return res; - }; - this.refresh = function (skip_loading, forget_state) { - if(!this.settings.checkbox.tie_selection) { - this._data.checkbox.selected = []; - } - return parent.refresh.apply(this, arguments); - }; - }; - - // include the checkbox plugin by default - // $.jstree.defaults.plugins.push("checkbox"); - - -/** - * ### Conditionalselect plugin - * - * This plugin allows defining a callback to allow or deny node selection by user input (activate node method). - */ - - /** - * a callback (function) which is invoked in the instance's scope and receives two arguments - the node and the event that triggered the `activate_node` call. Returning false prevents working with the node, returning true allows invoking activate_node. Defaults to returning `true`. - * @name $.jstree.defaults.checkbox.visible - * @plugin checkbox - */ - $.jstree.defaults.conditionalselect = function () { return true; }; - $.jstree.plugins.conditionalselect = function (options, parent) { - // own function - this.activate_node = function (obj, e) { - if(this.settings.conditionalselect.call(this, this.get_node(obj), e)) { - return parent.activate_node.call(this, obj, e); - } - }; - }; - - -/** - * ### Contextmenu plugin - * - * Shows a context menu when a node is right-clicked. - */ - - /** - * stores all defaults for the contextmenu plugin - * @name $.jstree.defaults.contextmenu - * @plugin contextmenu - */ - $.jstree.defaults.contextmenu = { - /** - * a boolean indicating if the node should be selected when the context menu is invoked on it. Defaults to `true`. - * @name $.jstree.defaults.contextmenu.select_node - * @plugin contextmenu - */ - select_node : true, - /** - * a boolean indicating if the menu should be shown aligned with the node. Defaults to `true`, otherwise the mouse coordinates are used. - * @name $.jstree.defaults.contextmenu.show_at_node - * @plugin contextmenu - */ - show_at_node : true, - /** - * an object of actions, or a function that accepts a node and a callback function and calls the callback function with an object of actions available for that node (you can also return the items too). - * - * Each action consists of a key (a unique name) and a value which is an object with the following properties (only label and action are required). Once a menu item is activated the `action` function will be invoked with an object containing the following keys: item - the contextmenu item definition as seen below, reference - the DOM node that was used (the tree node), element - the contextmenu DOM element, position - an object with x/y properties indicating the position of the menu. - * - * * `separator_before` - a boolean indicating if there should be a separator before this item - * * `separator_after` - a boolean indicating if there should be a separator after this item - * * `_disabled` - a boolean indicating if this action should be disabled - * * `label` - a string - the name of the action (could be a function returning a string) - * * `title` - a string - an optional tooltip for the item - * * `action` - a function to be executed if this item is chosen, the function will receive - * * `icon` - a string, can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class - * * `shortcut` - keyCode which will trigger the action if the menu is open (for example `113` for rename, which equals F2) - * * `shortcut_label` - shortcut label (like for example `F2` for rename) - * * `submenu` - an object with the same structure as $.jstree.defaults.contextmenu.items which can be used to create a submenu - each key will be rendered as a separate option in a submenu that will appear once the current item is hovered - * - * @name $.jstree.defaults.contextmenu.items - * @plugin contextmenu - */ - items : function (o, cb) { // Could be an object directly - return { - "create" : { - "separator_before" : false, - "separator_after" : true, - "_disabled" : false, //(this.check("create_node", data.reference, {}, "last")), - "label" : "Create", - "action" : function (data) { - var inst = $.jstree.reference(data.reference), - obj = inst.get_node(data.reference); - inst.create_node(obj, {}, "last", function (new_node) { - try { - inst.edit(new_node); - } catch (ex) { - setTimeout(function () { inst.edit(new_node); },0); - } - }); - } - }, - "rename" : { - "separator_before" : false, - "separator_after" : false, - "_disabled" : false, //(this.check("rename_node", data.reference, this.get_parent(data.reference), "")), - "label" : "Rename", - /*! - "shortcut" : 113, - "shortcut_label" : 'F2', - "icon" : "glyphicon glyphicon-leaf", - */ - "action" : function (data) { - var inst = $.jstree.reference(data.reference), - obj = inst.get_node(data.reference); - inst.edit(obj); - } - }, - "remove" : { - "separator_before" : false, - "icon" : false, - "separator_after" : false, - "_disabled" : false, //(this.check("delete_node", data.reference, this.get_parent(data.reference), "")), - "label" : "Delete", - "action" : function (data) { - var inst = $.jstree.reference(data.reference), - obj = inst.get_node(data.reference); - if(inst.is_selected(obj)) { - inst.delete_node(inst.get_selected()); - } - else { - inst.delete_node(obj); - } - } - }, - "ccp" : { - "separator_before" : true, - "icon" : false, - "separator_after" : false, - "label" : "Edit", - "action" : false, - "submenu" : { - "cut" : { - "separator_before" : false, - "separator_after" : false, - "label" : "Cut", - "action" : function (data) { - var inst = $.jstree.reference(data.reference), - obj = inst.get_node(data.reference); - if(inst.is_selected(obj)) { - inst.cut(inst.get_top_selected()); - } - else { - inst.cut(obj); - } - } - }, - "copy" : { - "separator_before" : false, - "icon" : false, - "separator_after" : false, - "label" : "Copy", - "action" : function (data) { - var inst = $.jstree.reference(data.reference), - obj = inst.get_node(data.reference); - if(inst.is_selected(obj)) { - inst.copy(inst.get_top_selected()); - } - else { - inst.copy(obj); - } - } - }, - "paste" : { - "separator_before" : false, - "icon" : false, - "_disabled" : function (data) { - return !$.jstree.reference(data.reference).can_paste(); - }, - "separator_after" : false, - "label" : "Paste", - "action" : function (data) { - var inst = $.jstree.reference(data.reference), - obj = inst.get_node(data.reference); - inst.paste(obj); - } - } - } - } - }; - } - }; - - $.jstree.plugins.contextmenu = function (options, parent) { - this.bind = function () { - parent.bind.call(this); - - var last_ts = 0, cto = null, ex, ey; - this.element - .on("init.jstree loading.jstree ready.jstree", $.proxy(function () { - this.get_container_ul().addClass('jstree-contextmenu'); - }, this)) - .on("contextmenu.jstree", ".jstree-anchor", $.proxy(function (e, data) { - if (e.target.tagName.toLowerCase() === 'input') { - return; - } - e.preventDefault(); - last_ts = e.ctrlKey ? +new Date() : 0; - if(data || cto) { - last_ts = (+new Date()) + 10000; - } - if(cto) { - clearTimeout(cto); - } - if(!this.is_loading(e.currentTarget)) { - this.show_contextmenu(e.currentTarget, e.pageX, e.pageY, e); - } - }, this)) - .on("click.jstree", ".jstree-anchor", $.proxy(function (e) { - if(this._data.contextmenu.visible && (!last_ts || (+new Date()) - last_ts > 250)) { // work around safari & macOS ctrl+click - $.vakata.context.hide(); - } - last_ts = 0; - }, this)) - .on("touchstart.jstree", ".jstree-anchor", function (e) { - if(!e.originalEvent || !e.originalEvent.changedTouches || !e.originalEvent.changedTouches[0]) { - return; - } - ex = e.originalEvent.changedTouches[0].clientX; - ey = e.originalEvent.changedTouches[0].clientY; - cto = setTimeout(function () { - $(e.currentTarget).trigger('contextmenu', true); - }, 750); - }) - .on('touchmove.vakata.jstree', function (e) { - if(cto && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0] && (Math.abs(ex - e.originalEvent.changedTouches[0].clientX) > 10 || Math.abs(ey - e.originalEvent.changedTouches[0].clientY) > 10)) { - clearTimeout(cto); - $.vakata.context.hide(); - } - }) - .on('touchend.vakata.jstree', function (e) { - if(cto) { - clearTimeout(cto); - } - }); - - /*! - if(!('oncontextmenu' in document.body) && ('ontouchstart' in document.body)) { - var el = null, tm = null; - this.element - .on("touchstart", ".jstree-anchor", function (e) { - el = e.currentTarget; - tm = +new Date(); - $(document).one("touchend", function (e) { - e.target = document.elementFromPoint(e.originalEvent.targetTouches[0].pageX - window.pageXOffset, e.originalEvent.targetTouches[0].pageY - window.pageYOffset); - e.currentTarget = e.target; - tm = ((+(new Date())) - tm); - if(e.target === el && tm > 600 && tm < 1000) { - e.preventDefault(); - $(el).trigger('contextmenu', e); - } - el = null; - tm = null; - }); - }); - } - */ - $(document).on("context_hide.vakata.jstree", $.proxy(function (e, data) { - this._data.contextmenu.visible = false; - $(data.reference).removeClass('jstree-context'); - }, this)); - }; - this.teardown = function () { - if(this._data.contextmenu.visible) { - $.vakata.context.hide(); - } - parent.teardown.call(this); - }; - - /** - * prepare and show the context menu for a node - * @name show_contextmenu(obj [, x, y]) - * @param {mixed} obj the node - * @param {Number} x the x-coordinate relative to the document to show the menu at - * @param {Number} y the y-coordinate relative to the document to show the menu at - * @param {Object} e the event if available that triggered the contextmenu - * @plugin contextmenu - * @trigger show_contextmenu.jstree - */ - this.show_contextmenu = function (obj, x, y, e) { - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { return false; } - var s = this.settings.contextmenu, - d = this.get_node(obj, true), - a = d.children(".jstree-anchor"), - o = false, - i = false; - if(s.show_at_node || x === undefined || y === undefined) { - o = a.offset(); - x = o.left; - y = o.top + this._data.core.li_height; - } - if(this.settings.contextmenu.select_node && !this.is_selected(obj)) { - this.activate_node(obj, e); - } - - i = s.items; - if($.isFunction(i)) { - i = i.call(this, obj, $.proxy(function (i) { - this._show_contextmenu(obj, x, y, i); - }, this)); - } - if($.isPlainObject(i)) { - this._show_contextmenu(obj, x, y, i); - } - }; - /** - * show the prepared context menu for a node - * @name _show_contextmenu(obj, x, y, i) - * @param {mixed} obj the node - * @param {Number} x the x-coordinate relative to the document to show the menu at - * @param {Number} y the y-coordinate relative to the document to show the menu at - * @param {Number} i the object of items to show - * @plugin contextmenu - * @trigger show_contextmenu.jstree - * @private - */ - this._show_contextmenu = function (obj, x, y, i) { - var d = this.get_node(obj, true), - a = d.children(".jstree-anchor"); - $(document).one("context_show.vakata.jstree", $.proxy(function (e, data) { - var cls = 'jstree-contextmenu jstree-' + this.get_theme() + '-contextmenu'; - $(data.element).addClass(cls); - a.addClass('jstree-context'); - }, this)); - this._data.contextmenu.visible = true; - $.vakata.context.show(a, { 'x' : x, 'y' : y }, i); - /** - * triggered when the contextmenu is shown for a node - * @event - * @name show_contextmenu.jstree - * @param {Object} node the node - * @param {Number} x the x-coordinate of the menu relative to the document - * @param {Number} y the y-coordinate of the menu relative to the document - * @plugin contextmenu - */ - this.trigger('show_contextmenu', { "node" : obj, "x" : x, "y" : y }); - }; - }; - - // contextmenu helper - (function ($) { - var right_to_left = false, - vakata_context = { - element : false, - reference : false, - position_x : 0, - position_y : 0, - items : [], - html : "", - is_visible : false - }; - - $.vakata.context = { - settings : { - hide_onmouseleave : 0, - icons : true - }, - _trigger : function (event_name) { - $(document).triggerHandler("context_" + event_name + ".vakata", { - "reference" : vakata_context.reference, - "element" : vakata_context.element, - "position" : { - "x" : vakata_context.position_x, - "y" : vakata_context.position_y - } - }); - }, - _execute : function (i) { - i = vakata_context.items[i]; - return i && (!i._disabled || ($.isFunction(i._disabled) && !i._disabled({ "item" : i, "reference" : vakata_context.reference, "element" : vakata_context.element }))) && i.action ? i.action.call(null, { - "item" : i, - "reference" : vakata_context.reference, - "element" : vakata_context.element, - "position" : { - "x" : vakata_context.position_x, - "y" : vakata_context.position_y - } - }) : false; - }, - _parse : function (o, is_callback) { - if(!o) { return false; } - if(!is_callback) { - vakata_context.html = ""; - vakata_context.items = []; - } - var str = "", - sep = false, - tmp; - - if(is_callback) { str += "<"+"ul>"; } - $.each(o, function (i, val) { - if(!val) { return true; } - vakata_context.items.push(val); - if(!sep && val.separator_before) { - str += "<"+"li class='vakata-context-separator'><"+"a href='#' " + ($.vakata.context.settings.icons ? '' : 'style="margin-left:0px;"') + "> <"+"/a><"+"/li>"; - } - sep = false; - str += "<"+"li class='" + (val._class || "") + (val._disabled === true || ($.isFunction(val._disabled) && val._disabled({ "item" : val, "reference" : vakata_context.reference, "element" : vakata_context.element })) ? " vakata-contextmenu-disabled " : "") + "' "+(val.shortcut?" data-shortcut='"+val.shortcut+"' ":'')+">"; - str += "<"+"a href='#' rel='" + (vakata_context.items.length - 1) + "' " + (val.title ? "title='" + val.title + "'" : "") + ">"; - if($.vakata.context.settings.icons) { - str += "<"+"i "; - if(val.icon) { - if(val.icon.indexOf("/") !== -1 || val.icon.indexOf(".") !== -1) { str += " style='background:url(\"" + val.icon + "\") center center no-repeat' "; } - else { str += " class='" + val.icon + "' "; } - } - str += "><"+"/i><"+"span class='vakata-contextmenu-sep'> <"+"/span>"; - } - str += ($.isFunction(val.label) ? val.label({ "item" : i, "reference" : vakata_context.reference, "element" : vakata_context.element }) : val.label) + (val.shortcut?' '+ (val.shortcut_label || '') +'':'') + "<"+"/a>"; - if(val.submenu) { - tmp = $.vakata.context._parse(val.submenu, true); - if(tmp) { str += tmp; } - } - str += "<"+"/li>"; - if(val.separator_after) { - str += "<"+"li class='vakata-context-separator'><"+"a href='#' " + ($.vakata.context.settings.icons ? '' : 'style="margin-left:0px;"') + "> <"+"/a><"+"/li>"; - sep = true; - } - }); - str = str.replace(/
  • <\/li\>$/,""); - if(is_callback) { str += ""; } - /** - * triggered on the document when the contextmenu is parsed (HTML is built) - * @event - * @plugin contextmenu - * @name context_parse.vakata - * @param {jQuery} reference the element that was right clicked - * @param {jQuery} element the DOM element of the menu itself - * @param {Object} position the x & y coordinates of the menu - */ - if(!is_callback) { vakata_context.html = str; $.vakata.context._trigger("parse"); } - return str.length > 10 ? str : false; - }, - _show_submenu : function (o) { - o = $(o); - if(!o.length || !o.children("ul").length) { return; } - var e = o.children("ul"), - xl = o.offset().left, - x = xl + o.outerWidth(), - y = o.offset().top, - w = e.width(), - h = e.height(), - dw = $(window).width() + $(window).scrollLeft(), - dh = $(window).height() + $(window).scrollTop(); - // може да се спести е една проверка - дали няма някой от класовете вече нагоре - if(right_to_left) { - o[x - (w + 10 + o.outerWidth()) < 0 ? "addClass" : "removeClass"]("vakata-context-left"); - } - else { - o[x + w > dw && xl > dw - x ? "addClass" : "removeClass"]("vakata-context-right"); - } - if(y + h + 10 > dh) { - e.css("bottom","-1px"); - } - - //if does not fit - stick it to the side - if (o.hasClass('vakata-context-right')) { - if (xl < w) { - e.css("margin-right", xl - w); - } - } else { - if (dw - x < w) { - e.css("margin-left", dw - x - w); - } - } - - e.show(); - }, - show : function (reference, position, data) { - var o, e, x, y, w, h, dw, dh, cond = true; - if(vakata_context.element && vakata_context.element.length) { - vakata_context.element.width(''); - } - switch(cond) { - case (!position && !reference): - return false; - case (!!position && !!reference): - vakata_context.reference = reference; - vakata_context.position_x = position.x; - vakata_context.position_y = position.y; - break; - case (!position && !!reference): - vakata_context.reference = reference; - o = reference.offset(); - vakata_context.position_x = o.left + reference.outerHeight(); - vakata_context.position_y = o.top; - break; - case (!!position && !reference): - vakata_context.position_x = position.x; - vakata_context.position_y = position.y; - break; - } - if(!!reference && !data && $(reference).data('vakata_contextmenu')) { - data = $(reference).data('vakata_contextmenu'); - } - if($.vakata.context._parse(data)) { - vakata_context.element.html(vakata_context.html); - } - if(vakata_context.items.length) { - vakata_context.element.appendTo("body"); - e = vakata_context.element; - x = vakata_context.position_x; - y = vakata_context.position_y; - w = e.width(); - h = e.height(); - dw = $(window).width() + $(window).scrollLeft(); - dh = $(window).height() + $(window).scrollTop(); - if(right_to_left) { - x -= (e.outerWidth() - $(reference).outerWidth()); - if(x < $(window).scrollLeft() + 20) { - x = $(window).scrollLeft() + 20; - } - } - if(x + w + 20 > dw) { - x = dw - (w + 20); - } - if(y + h + 20 > dh) { - y = dh - (h + 20); - } - - vakata_context.element - .css({ "left" : x, "top" : y }) - .show() - .find('a').first().focus().parent().addClass("vakata-context-hover"); - vakata_context.is_visible = true; - /** - * triggered on the document when the contextmenu is shown - * @event - * @plugin contextmenu - * @name context_show.vakata - * @param {jQuery} reference the element that was right clicked - * @param {jQuery} element the DOM element of the menu itself - * @param {Object} position the x & y coordinates of the menu - */ - $.vakata.context._trigger("show"); - } - }, - hide : function () { - if(vakata_context.is_visible) { - vakata_context.element.hide().find("ul").hide().end().find(':focus').blur().end().detach(); - vakata_context.is_visible = false; - /** - * triggered on the document when the contextmenu is hidden - * @event - * @plugin contextmenu - * @name context_hide.vakata - * @param {jQuery} reference the element that was right clicked - * @param {jQuery} element the DOM element of the menu itself - * @param {Object} position the x & y coordinates of the menu - */ - $.vakata.context._trigger("hide"); - } - } - }; - $(function () { - right_to_left = $("body").css("direction") === "rtl"; - var to = false; - - vakata_context.element = $("
      "); - vakata_context.element - .on("mouseenter", "li", function (e) { - e.stopImmediatePropagation(); - - if($.contains(this, e.relatedTarget)) { - // премахнато заради delegate mouseleave по-долу - // $(this).find(".vakata-context-hover").removeClass("vakata-context-hover"); - return; - } - - if(to) { clearTimeout(to); } - vakata_context.element.find(".vakata-context-hover").removeClass("vakata-context-hover").end(); - - $(this) - .siblings().find("ul").hide().end().end() - .parentsUntil(".vakata-context", "li").addBack().addClass("vakata-context-hover"); - $.vakata.context._show_submenu(this); - }) - // тестово - дали не натоварва? - .on("mouseleave", "li", function (e) { - if($.contains(this, e.relatedTarget)) { return; } - $(this).find(".vakata-context-hover").addBack().removeClass("vakata-context-hover"); - }) - .on("mouseleave", function (e) { - $(this).find(".vakata-context-hover").removeClass("vakata-context-hover"); - if($.vakata.context.settings.hide_onmouseleave) { - to = setTimeout( - (function (t) { - return function () { $.vakata.context.hide(); }; - }(this)), $.vakata.context.settings.hide_onmouseleave); - } - }) - .on("click", "a", function (e) { - e.preventDefault(); - //}) - //.on("mouseup", "a", function (e) { - if(!$(this).blur().parent().hasClass("vakata-context-disabled") && $.vakata.context._execute($(this).attr("rel")) !== false) { - $.vakata.context.hide(); - } - }) - .on('keydown', 'a', function (e) { - var o = null; - switch(e.which) { - case 13: - case 32: - e.type = "click"; - e.preventDefault(); - $(e.currentTarget).trigger(e); - break; - case 37: - if(vakata_context.is_visible) { - vakata_context.element.find(".vakata-context-hover").last().closest("li").first().find("ul").hide().find(".vakata-context-hover").removeClass("vakata-context-hover").end().end().children('a').focus(); - e.stopImmediatePropagation(); - e.preventDefault(); - } - break; - case 38: - if(vakata_context.is_visible) { - o = vakata_context.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").prevAll("li:not(.vakata-context-separator)").first(); - if(!o.length) { o = vakata_context.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").last(); } - o.addClass("vakata-context-hover").children('a').focus(); - e.stopImmediatePropagation(); - e.preventDefault(); - } - break; - case 39: - if(vakata_context.is_visible) { - vakata_context.element.find(".vakata-context-hover").last().children("ul").show().children("li:not(.vakata-context-separator)").removeClass("vakata-context-hover").first().addClass("vakata-context-hover").children('a').focus(); - e.stopImmediatePropagation(); - e.preventDefault(); - } - break; - case 40: - if(vakata_context.is_visible) { - o = vakata_context.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").nextAll("li:not(.vakata-context-separator)").first(); - if(!o.length) { o = vakata_context.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").first(); } - o.addClass("vakata-context-hover").children('a').focus(); - e.stopImmediatePropagation(); - e.preventDefault(); - } - break; - case 27: - $.vakata.context.hide(); - e.preventDefault(); - break; - default: - //console.log(e.which); - break; - } - }) - .on('keydown', function (e) { - e.preventDefault(); - var a = vakata_context.element.find('.vakata-contextmenu-shortcut-' + e.which).parent(); - if(a.parent().not('.vakata-context-disabled')) { - a.click(); - } - }); - - $(document) - .on("mousedown.vakata.jstree", function (e) { - if(vakata_context.is_visible && vakata_context.element[0] !== e.target && !$.contains(vakata_context.element[0], e.target)) { - $.vakata.context.hide(); - } - }) - .on("context_show.vakata.jstree", function (e, data) { - vakata_context.element.find("li:has(ul)").children("a").addClass("vakata-context-parent"); - if(right_to_left) { - vakata_context.element.addClass("vakata-context-rtl").css("direction", "rtl"); - } - // also apply a RTL class? - vakata_context.element.find("ul").hide().end(); - }); - }); - }($)); - // $.jstree.defaults.plugins.push("contextmenu"); - - -/** - * ### Drag'n'drop plugin - * - * Enables dragging and dropping of nodes in the tree, resulting in a move or copy operations. - */ - - /** - * stores all defaults for the drag'n'drop plugin - * @name $.jstree.defaults.dnd - * @plugin dnd - */ - $.jstree.defaults.dnd = { - /** - * a boolean indicating if a copy should be possible while dragging (by pressint the meta key or Ctrl). Defaults to `true`. - * @name $.jstree.defaults.dnd.copy - * @plugin dnd - */ - copy : true, - /** - * a number indicating how long a node should remain hovered while dragging to be opened. Defaults to `500`. - * @name $.jstree.defaults.dnd.open_timeout - * @plugin dnd - */ - open_timeout : 500, - /** - * a function invoked each time a node is about to be dragged, invoked in the tree's scope and receives the nodes about to be dragged as an argument (array) and the event that started the drag - return `false` to prevent dragging - * @name $.jstree.defaults.dnd.is_draggable - * @plugin dnd - */ - is_draggable : true, - /** - * a boolean indicating if checks should constantly be made while the user is dragging the node (as opposed to checking only on drop), default is `true` - * @name $.jstree.defaults.dnd.check_while_dragging - * @plugin dnd - */ - check_while_dragging : true, - /** - * a boolean indicating if nodes from this tree should only be copied with dnd (as opposed to moved), default is `false` - * @name $.jstree.defaults.dnd.always_copy - * @plugin dnd - */ - always_copy : false, - /** - * when dropping a node "inside", this setting indicates the position the node should go to - it can be an integer or a string: "first" (same as 0) or "last", default is `0` - * @name $.jstree.defaults.dnd.inside_pos - * @plugin dnd - */ - inside_pos : 0, - /** - * when starting the drag on a node that is selected this setting controls if all selected nodes are dragged or only the single node, default is `true`, which means all selected nodes are dragged when the drag is started on a selected node - * @name $.jstree.defaults.dnd.drag_selection - * @plugin dnd - */ - drag_selection : true, - /** - * controls whether dnd works on touch devices. If left as boolean true dnd will work the same as in desktop browsers, which in some cases may impair scrolling. If set to boolean false dnd will not work on touch devices. There is a special third option - string "selected" which means only selected nodes can be dragged on touch devices. - * @name $.jstree.defaults.dnd.touch - * @plugin dnd - */ - touch : true, - /** - * controls whether items can be dropped anywhere on the node, not just on the anchor, by default only the node anchor is a valid drop target. Works best with the wholerow plugin. If enabled on mobile depending on the interface it might be hard for the user to cancel the drop, since the whole tree container will be a valid drop target. - * @name $.jstree.defaults.dnd.large_drop_target - * @plugin dnd - */ - large_drop_target : false, - /** - * controls whether a drag can be initiated from any part of the node and not just the text/icon part, works best with the wholerow plugin. Keep in mind it can cause problems with tree scrolling on mobile depending on the interface - in that case set the touch option to "selected". - * @name $.jstree.defaults.dnd.large_drag_target - * @plugin dnd - */ - large_drag_target : false, - /** - * controls whether use HTML5 dnd api instead of classical. That will allow better integration of dnd events with other HTML5 controls. - * @reference http://caniuse.com/#feat=dragndrop - * @name $.jstree.defaults.dnd.use_html5 - * @plugin dnd - */ - use_html5: false - }; - var drg, elm; - // TODO: now check works by checking for each node individually, how about max_children, unique, etc? - $.jstree.plugins.dnd = function (options, parent) { - this.init = function (el, options) { - parent.init.call(this, el, options); - this.settings.dnd.use_html5 = this.settings.dnd.use_html5 && ('draggable' in document.createElement('span')); - }; - this.bind = function () { - parent.bind.call(this); - - this.element - .on(this.settings.dnd.use_html5 ? 'dragstart.jstree' : 'mousedown.jstree touchstart.jstree', this.settings.dnd.large_drag_target ? '.jstree-node' : '.jstree-anchor', $.proxy(function (e) { - if(this.settings.dnd.large_drag_target && $(e.target).closest('.jstree-node')[0] !== e.currentTarget) { - return true; - } - if(e.type === "touchstart" && (!this.settings.dnd.touch || (this.settings.dnd.touch === 'selected' && !$(e.currentTarget).closest('.jstree-node').children('.jstree-anchor').hasClass('jstree-clicked')))) { - return true; - } - var obj = this.get_node(e.target), - mlt = this.is_selected(obj) && this.settings.dnd.drag_selection ? this.get_top_selected().length : 1, - txt = (mlt > 1 ? mlt + ' ' + this.get_string('nodes') : this.get_text(e.currentTarget)); - if(this.settings.core.force_text) { - txt = $.vakata.html.escape(txt); - } - if(obj && obj.id && obj.id !== $.jstree.root && (e.which === 1 || e.type === "touchstart" || e.type === "dragstart") && - (this.settings.dnd.is_draggable === true || ($.isFunction(this.settings.dnd.is_draggable) && this.settings.dnd.is_draggable.call(this, (mlt > 1 ? this.get_top_selected(true) : [obj]), e))) - ) { - drg = { 'jstree' : true, 'origin' : this, 'obj' : this.get_node(obj,true), 'nodes' : mlt > 1 ? this.get_top_selected() : [obj.id] }; - elm = e.currentTarget; - if (this.settings.dnd.use_html5) { - $.vakata.dnd._trigger('start', e, { 'helper': $(), 'element': elm, 'data': drg }); - } else { - this.element.trigger('mousedown.jstree'); - return $.vakata.dnd.start(e, drg, '
      ' + txt + '
      '); - } - } - }, this)); - if (this.settings.dnd.use_html5) { - this.element - .on('dragover.jstree', function (e) { - e.preventDefault(); - $.vakata.dnd._trigger('move', e, { 'helper': $(), 'element': elm, 'data': drg }); - return false; - }) - //.on('dragenter.jstree', this.settings.dnd.large_drop_target ? '.jstree-node' : '.jstree-anchor', $.proxy(function (e) { - // e.preventDefault(); - // $.vakata.dnd._trigger('move', e, { 'helper': $(), 'element': elm, 'data': drg }); - // return false; - // }, this)) - .on('drop.jstree', $.proxy(function (e) { - e.preventDefault(); - $.vakata.dnd._trigger('stop', e, { 'helper': $(), 'element': elm, 'data': drg }); - return false; - }, this)); - } - }; - this.redraw_node = function(obj, deep, callback, force_render) { - obj = parent.redraw_node.apply(this, arguments); - if (obj && this.settings.dnd.use_html5) { - if (this.settings.dnd.large_drag_target) { - obj.setAttribute('draggable', true); - } else { - var i, j, tmp = null; - for(i = 0, j = obj.childNodes.length; i < j; i++) { - if(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf("jstree-anchor") !== -1) { - tmp = obj.childNodes[i]; - break; - } - } - if(tmp) { - tmp.setAttribute('draggable', true); - } - } - } - return obj; - }; - }; - - $(function() { - // bind only once for all instances - var lastmv = false, - laster = false, - lastev = false, - opento = false, - marker = $('
       
      ').hide(); //.appendTo('body'); - - $(document) - .on('dnd_start.vakata.jstree', function (e, data) { - lastmv = false; - lastev = false; - if(!data || !data.data || !data.data.jstree) { return; } - marker.appendTo('body'); //.show(); - }) - .on('dnd_move.vakata.jstree', function (e, data) { - var isDifferentNode = data.event.target !== lastev.target; - if(opento) { - if (!data.event || data.event.type !== 'dragover' || isDifferentNode) { - clearTimeout(opento); - } - } - if(!data || !data.data || !data.data.jstree) { return; } - - // if we are hovering the marker image do nothing (can happen on "inside" drags) - if(data.event.target.id && data.event.target.id === 'jstree-marker') { - return; - } - lastev = data.event; - - var ins = $.jstree.reference(data.event.target), - ref = false, - off = false, - rel = false, - tmp, l, t, h, p, i, o, ok, t1, t2, op, ps, pr, ip, tm, is_copy, pn; - // if we are over an instance - if(ins && ins._data && ins._data.dnd) { - marker.attr('class', 'jstree-' + ins.get_theme() + ( ins.settings.core.themes.responsive ? ' jstree-dnd-responsive' : '' )); - is_copy = data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))); - data.helper - .children().attr('class', 'jstree-' + ins.get_theme() + ' jstree-' + ins.get_theme() + '-' + ins.get_theme_variant() + ' ' + ( ins.settings.core.themes.responsive ? ' jstree-dnd-responsive' : '' )) - .find('.jstree-copy').first()[ is_copy ? 'show' : 'hide' ](); - - // if are hovering the container itself add a new root node - //console.log(data.event); - if( (data.event.target === ins.element[0] || data.event.target === ins.get_container_ul()[0]) && ins.get_container_ul().children().length === 0) { - ok = true; - for(t1 = 0, t2 = data.data.nodes.length; t1 < t2; t1++) { - ok = ok && ins.check( (data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey)) ) ? "copy_node" : "move_node"), (data.data.origin && data.data.origin !== ins ? data.data.origin.get_node(data.data.nodes[t1]) : data.data.nodes[t1]), $.jstree.root, 'last', { 'dnd' : true, 'ref' : ins.get_node($.jstree.root), 'pos' : 'i', 'origin' : data.data.origin, 'is_multi' : (data.data.origin && data.data.origin !== ins), 'is_foreign' : (!data.data.origin) }); - if(!ok) { break; } - } - if(ok) { - lastmv = { 'ins' : ins, 'par' : $.jstree.root, 'pos' : 'last' }; - marker.hide(); - data.helper.find('.jstree-icon').first().removeClass('jstree-er').addClass('jstree-ok'); - if (data.event.originalEvent && data.event.originalEvent.dataTransfer) { - data.event.originalEvent.dataTransfer.dropEffect = is_copy ? 'copy' : 'move'; - } - return; - } - } - else { - // if we are hovering a tree node - ref = ins.settings.dnd.large_drop_target ? $(data.event.target).closest('.jstree-node').children('.jstree-anchor') : $(data.event.target).closest('.jstree-anchor'); - if(ref && ref.length && ref.parent().is('.jstree-closed, .jstree-open, .jstree-leaf')) { - off = ref.offset(); - rel = (data.event.pageY !== undefined ? data.event.pageY : data.event.originalEvent.pageY) - off.top; - h = ref.outerHeight(); - if(rel < h / 3) { - o = ['b', 'i', 'a']; - } - else if(rel > h - h / 3) { - o = ['a', 'i', 'b']; - } - else { - o = rel > h / 2 ? ['i', 'a', 'b'] : ['i', 'b', 'a']; - } - $.each(o, function (j, v) { - switch(v) { - case 'b': - l = off.left - 6; - t = off.top; - p = ins.get_parent(ref); - i = ref.parent().index(); - break; - case 'i': - ip = ins.settings.dnd.inside_pos; - tm = ins.get_node(ref.parent()); - l = off.left - 2; - t = off.top + h / 2 + 1; - p = tm.id; - i = ip === 'first' ? 0 : (ip === 'last' ? tm.children.length : Math.min(ip, tm.children.length)); - break; - case 'a': - l = off.left - 6; - t = off.top + h; - p = ins.get_parent(ref); - i = ref.parent().index() + 1; - break; - } - ok = true; - for(t1 = 0, t2 = data.data.nodes.length; t1 < t2; t1++) { - op = data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))) ? "copy_node" : "move_node"; - ps = i; - if(op === "move_node" && v === 'a' && (data.data.origin && data.data.origin === ins) && p === ins.get_parent(data.data.nodes[t1])) { - pr = ins.get_node(p); - if(ps > $.inArray(data.data.nodes[t1], pr.children)) { - ps -= 1; - } - } - ok = ok && ( (ins && ins.settings && ins.settings.dnd && ins.settings.dnd.check_while_dragging === false) || ins.check(op, (data.data.origin && data.data.origin !== ins ? data.data.origin.get_node(data.data.nodes[t1]) : data.data.nodes[t1]), p, ps, { 'dnd' : true, 'ref' : ins.get_node(ref.parent()), 'pos' : v, 'origin' : data.data.origin, 'is_multi' : (data.data.origin && data.data.origin !== ins), 'is_foreign' : (!data.data.origin) }) ); - if(!ok) { - if(ins && ins.last_error) { laster = ins.last_error(); } - break; - } - } - if(v === 'i' && ref.parent().is('.jstree-closed') && ins.settings.dnd.open_timeout) { - if (!data.event || data.event.type !== 'dragover' || isDifferentNode) { - if (opento) { clearTimeout(opento); } - opento = setTimeout((function (x, z) { return function () { x.open_node(z); }; }(ins, ref)), ins.settings.dnd.open_timeout); - } - } - if(ok) { - pn = ins.get_node(p, true); - if (!pn.hasClass('.jstree-dnd-parent')) { - $('.jstree-dnd-parent').removeClass('jstree-dnd-parent'); - pn.addClass('jstree-dnd-parent'); - } - lastmv = { 'ins' : ins, 'par' : p, 'pos' : v === 'i' && ip === 'last' && i === 0 && !ins.is_loaded(tm) ? 'last' : i }; - marker.css({ 'left' : l + 'px', 'top' : t + 'px' }).show(); - data.helper.find('.jstree-icon').first().removeClass('jstree-er').addClass('jstree-ok'); - if (data.event.originalEvent && data.event.originalEvent.dataTransfer) { - data.event.originalEvent.dataTransfer.dropEffect = is_copy ? 'copy' : 'move'; - } - laster = {}; - o = true; - return false; - } - }); - if(o === true) { return; } - } - } - } - $('.jstree-dnd-parent').removeClass('jstree-dnd-parent'); - lastmv = false; - data.helper.find('.jstree-icon').removeClass('jstree-ok').addClass('jstree-er'); - if (data.event.originalEvent && data.event.originalEvent.dataTransfer) { - data.event.originalEvent.dataTransfer.dropEffect = 'none'; - } - marker.hide(); - }) - .on('dnd_scroll.vakata.jstree', function (e, data) { - if(!data || !data.data || !data.data.jstree) { return; } - marker.hide(); - lastmv = false; - lastev = false; - data.helper.find('.jstree-icon').first().removeClass('jstree-ok').addClass('jstree-er'); - }) - .on('dnd_stop.vakata.jstree', function (e, data) { - $('.jstree-dnd-parent').removeClass('jstree-dnd-parent'); - if(opento) { clearTimeout(opento); } - if(!data || !data.data || !data.data.jstree) { return; } - marker.hide().detach(); - var i, j, nodes = []; - if(lastmv) { - for(i = 0, j = data.data.nodes.length; i < j; i++) { - nodes[i] = data.data.origin ? data.data.origin.get_node(data.data.nodes[i]) : data.data.nodes[i]; - } - lastmv.ins[ data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))) ? 'copy_node' : 'move_node' ](nodes, lastmv.par, lastmv.pos, false, false, false, data.data.origin); - } - else { - i = $(data.event.target).closest('.jstree'); - if(i.length && laster && laster.error && laster.error === 'check') { - i = i.jstree(true); - if(i) { - i.settings.core.error.call(this, laster); - } - } - } - lastev = false; - lastmv = false; - }) - .on('keyup.jstree keydown.jstree', function (e, data) { - data = $.vakata.dnd._get(); - if(data && data.data && data.data.jstree) { - if (e.type === "keyup" && e.which === 27) { - if (opento) { clearTimeout(opento); } - lastmv = false; - laster = false; - lastev = false; - opento = false; - marker.hide().detach(); - $.vakata.dnd._clean(); - } else { - data.helper.find('.jstree-copy').first()[ data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (e.metaKey || e.ctrlKey))) ? 'show' : 'hide' ](); - if(lastev) { - lastev.metaKey = e.metaKey; - lastev.ctrlKey = e.ctrlKey; - $.vakata.dnd._trigger('move', lastev); - } - } - } - }); - }); - - // helpers - (function ($) { - $.vakata.html = { - div : $('
      '), - escape : function (str) { - return $.vakata.html.div.text(str).html(); - }, - strip : function (str) { - return $.vakata.html.div.empty().append($.parseHTML(str)).text(); - } - }; - // private variable - var vakata_dnd = { - element : false, - target : false, - is_down : false, - is_drag : false, - helper : false, - helper_w: 0, - data : false, - init_x : 0, - init_y : 0, - scroll_l: 0, - scroll_t: 0, - scroll_e: false, - scroll_i: false, - is_touch: false - }; - $.vakata.dnd = { - settings : { - scroll_speed : 10, - scroll_proximity : 20, - helper_left : 5, - helper_top : 10, - threshold : 5, - threshold_touch : 10 - }, - _trigger : function (event_name, e, data) { - if (data === undefined) { - data = $.vakata.dnd._get(); - } - data.event = e; - $(document).triggerHandler("dnd_" + event_name + ".vakata", data); - }, - _get : function () { - return { - "data" : vakata_dnd.data, - "element" : vakata_dnd.element, - "helper" : vakata_dnd.helper - }; - }, - _clean : function () { - if(vakata_dnd.helper) { vakata_dnd.helper.remove(); } - if(vakata_dnd.scroll_i) { clearInterval(vakata_dnd.scroll_i); vakata_dnd.scroll_i = false; } - vakata_dnd = { - element : false, - target : false, - is_down : false, - is_drag : false, - helper : false, - helper_w: 0, - data : false, - init_x : 0, - init_y : 0, - scroll_l: 0, - scroll_t: 0, - scroll_e: false, - scroll_i: false, - is_touch: false - }; - $(document).off("mousemove.vakata.jstree touchmove.vakata.jstree", $.vakata.dnd.drag); - $(document).off("mouseup.vakata.jstree touchend.vakata.jstree", $.vakata.dnd.stop); - }, - _scroll : function (init_only) { - if(!vakata_dnd.scroll_e || (!vakata_dnd.scroll_l && !vakata_dnd.scroll_t)) { - if(vakata_dnd.scroll_i) { clearInterval(vakata_dnd.scroll_i); vakata_dnd.scroll_i = false; } - return false; - } - if(!vakata_dnd.scroll_i) { - vakata_dnd.scroll_i = setInterval($.vakata.dnd._scroll, 100); - return false; - } - if(init_only === true) { return false; } - - var i = vakata_dnd.scroll_e.scrollTop(), - j = vakata_dnd.scroll_e.scrollLeft(); - vakata_dnd.scroll_e.scrollTop(i + vakata_dnd.scroll_t * $.vakata.dnd.settings.scroll_speed); - vakata_dnd.scroll_e.scrollLeft(j + vakata_dnd.scroll_l * $.vakata.dnd.settings.scroll_speed); - if(i !== vakata_dnd.scroll_e.scrollTop() || j !== vakata_dnd.scroll_e.scrollLeft()) { - /** - * triggered on the document when a drag causes an element to scroll - * @event - * @plugin dnd - * @name dnd_scroll.vakata - * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start - * @param {DOM} element the DOM element being dragged - * @param {jQuery} helper the helper shown next to the mouse - * @param {jQuery} event the element that is scrolling - */ - $.vakata.dnd._trigger("scroll", vakata_dnd.scroll_e); - } - }, - start : function (e, data, html) { - if(e.type === "touchstart" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) { - e.pageX = e.originalEvent.changedTouches[0].pageX; - e.pageY = e.originalEvent.changedTouches[0].pageY; - e.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset); - } - if(vakata_dnd.is_drag) { $.vakata.dnd.stop({}); } - try { - e.currentTarget.unselectable = "on"; - e.currentTarget.onselectstart = function() { return false; }; - if(e.currentTarget.style) { - e.currentTarget.style.touchAction = "none"; - e.currentTarget.style.msTouchAction = "none"; - e.currentTarget.style.MozUserSelect = "none"; - } - } catch(ignore) { } - vakata_dnd.init_x = e.pageX; - vakata_dnd.init_y = e.pageY; - vakata_dnd.data = data; - vakata_dnd.is_down = true; - vakata_dnd.element = e.currentTarget; - vakata_dnd.target = e.target; - vakata_dnd.is_touch = e.type === "touchstart"; - if(html !== false) { - vakata_dnd.helper = $("
      ").html(html).css({ - "display" : "block", - "margin" : "0", - "padding" : "0", - "position" : "absolute", - "top" : "-2000px", - "lineHeight" : "16px", - "zIndex" : "10000" - }); - } - $(document).on("mousemove.vakata.jstree touchmove.vakata.jstree", $.vakata.dnd.drag); - $(document).on("mouseup.vakata.jstree touchend.vakata.jstree", $.vakata.dnd.stop); - return false; - }, - drag : function (e) { - if(e.type === "touchmove" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) { - e.pageX = e.originalEvent.changedTouches[0].pageX; - e.pageY = e.originalEvent.changedTouches[0].pageY; - e.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset); - } - if(!vakata_dnd.is_down) { return; } - if(!vakata_dnd.is_drag) { - if( - Math.abs(e.pageX - vakata_dnd.init_x) > (vakata_dnd.is_touch ? $.vakata.dnd.settings.threshold_touch : $.vakata.dnd.settings.threshold) || - Math.abs(e.pageY - vakata_dnd.init_y) > (vakata_dnd.is_touch ? $.vakata.dnd.settings.threshold_touch : $.vakata.dnd.settings.threshold) - ) { - if(vakata_dnd.helper) { - vakata_dnd.helper.appendTo("body"); - vakata_dnd.helper_w = vakata_dnd.helper.outerWidth(); - } - vakata_dnd.is_drag = true; - $(vakata_dnd.target).one('click.vakata', false); - /** - * triggered on the document when a drag starts - * @event - * @plugin dnd - * @name dnd_start.vakata - * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start - * @param {DOM} element the DOM element being dragged - * @param {jQuery} helper the helper shown next to the mouse - * @param {Object} event the event that caused the start (probably mousemove) - */ - $.vakata.dnd._trigger("start", e); - } - else { return; } - } - - var d = false, w = false, - dh = false, wh = false, - dw = false, ww = false, - dt = false, dl = false, - ht = false, hl = false; - - vakata_dnd.scroll_t = 0; - vakata_dnd.scroll_l = 0; - vakata_dnd.scroll_e = false; - $($(e.target).parentsUntil("body").addBack().get().reverse()) - .filter(function () { - return (/^auto|scroll$/).test($(this).css("overflow")) && - (this.scrollHeight > this.offsetHeight || this.scrollWidth > this.offsetWidth); - }) - .each(function () { - var t = $(this), o = t.offset(); - if(this.scrollHeight > this.offsetHeight) { - if(o.top + t.height() - e.pageY < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_t = 1; } - if(e.pageY - o.top < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_t = -1; } - } - if(this.scrollWidth > this.offsetWidth) { - if(o.left + t.width() - e.pageX < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_l = 1; } - if(e.pageX - o.left < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_l = -1; } - } - if(vakata_dnd.scroll_t || vakata_dnd.scroll_l) { - vakata_dnd.scroll_e = $(this); - return false; - } - }); - - if(!vakata_dnd.scroll_e) { - d = $(document); w = $(window); - dh = d.height(); wh = w.height(); - dw = d.width(); ww = w.width(); - dt = d.scrollTop(); dl = d.scrollLeft(); - if(dh > wh && e.pageY - dt < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_t = -1; } - if(dh > wh && wh - (e.pageY - dt) < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_t = 1; } - if(dw > ww && e.pageX - dl < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_l = -1; } - if(dw > ww && ww - (e.pageX - dl) < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_l = 1; } - if(vakata_dnd.scroll_t || vakata_dnd.scroll_l) { - vakata_dnd.scroll_e = d; - } - } - if(vakata_dnd.scroll_e) { $.vakata.dnd._scroll(true); } - - if(vakata_dnd.helper) { - ht = parseInt(e.pageY + $.vakata.dnd.settings.helper_top, 10); - hl = parseInt(e.pageX + $.vakata.dnd.settings.helper_left, 10); - if(dh && ht + 25 > dh) { ht = dh - 50; } - if(dw && hl + vakata_dnd.helper_w > dw) { hl = dw - (vakata_dnd.helper_w + 2); } - vakata_dnd.helper.css({ - left : hl + "px", - top : ht + "px" - }); - } - /** - * triggered on the document when a drag is in progress - * @event - * @plugin dnd - * @name dnd_move.vakata - * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start - * @param {DOM} element the DOM element being dragged - * @param {jQuery} helper the helper shown next to the mouse - * @param {Object} event the event that caused this to trigger (most likely mousemove) - */ - $.vakata.dnd._trigger("move", e); - return false; - }, - stop : function (e) { - if(e.type === "touchend" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) { - e.pageX = e.originalEvent.changedTouches[0].pageX; - e.pageY = e.originalEvent.changedTouches[0].pageY; - e.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset); - } - if(vakata_dnd.is_drag) { - /** - * triggered on the document when a drag stops (the dragged element is dropped) - * @event - * @plugin dnd - * @name dnd_stop.vakata - * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start - * @param {DOM} element the DOM element being dragged - * @param {jQuery} helper the helper shown next to the mouse - * @param {Object} event the event that caused the stop - */ - if (e.target !== vakata_dnd.target) { - $(vakata_dnd.target).off('click.vakata'); - } - $.vakata.dnd._trigger("stop", e); - } - else { - if(e.type === "touchend" && e.target === vakata_dnd.target) { - var to = setTimeout(function () { $(e.target).click(); }, 100); - $(e.target).one('click', function() { if(to) { clearTimeout(to); } }); - } - } - $.vakata.dnd._clean(); - return false; - } - }; - }($)); - - // include the dnd plugin by default - // $.jstree.defaults.plugins.push("dnd"); - - -/** - * ### Massload plugin - * - * Adds massload functionality to jsTree, so that multiple nodes can be loaded in a single request (only useful with lazy loading). - */ - - /** - * massload configuration - * - * It is possible to set this to a standard jQuery-like AJAX config. - * In addition to the standard jQuery ajax options here you can supply functions for `data` and `url`, the functions will be run in the current instance's scope and a param will be passed indicating which node IDs need to be loaded, the return value of those functions will be used. - * - * You can also set this to a function, that function will receive the node IDs being loaded as argument and a second param which is a function (callback) which should be called with the result. - * - * Both the AJAX and the function approach rely on the same return value - an object where the keys are the node IDs, and the value is the children of that node as an array. - * - * { - * "id1" : [{ "text" : "Child of ID1", "id" : "c1" }, { "text" : "Another child of ID1", "id" : "c2" }], - * "id2" : [{ "text" : "Child of ID2", "id" : "c3" }] - * } - * - * @name $.jstree.defaults.massload - * @plugin massload - */ - $.jstree.defaults.massload = null; - $.jstree.plugins.massload = function (options, parent) { - this.init = function (el, options) { - this._data.massload = {}; - parent.init.call(this, el, options); - }; - this._load_nodes = function (nodes, callback, is_callback, force_reload) { - var s = this.settings.massload, - nodesString = JSON.stringify(nodes), - toLoad = [], - m = this._model.data, - i, j, dom; - if (!is_callback) { - for(i = 0, j = nodes.length; i < j; i++) { - if(!m[nodes[i]] || ( (!m[nodes[i]].state.loaded && !m[nodes[i]].state.failed) || force_reload) ) { - toLoad.push(nodes[i]); - dom = this.get_node(nodes[i], true); - if (dom && dom.length) { - dom.addClass("jstree-loading").attr('aria-busy',true); - } - } - } - this._data.massload = {}; - if (toLoad.length) { - if($.isFunction(s)) { - return s.call(this, toLoad, $.proxy(function (data) { - var i, j; - if(data) { - for(i in data) { - if(data.hasOwnProperty(i)) { - this._data.massload[i] = data[i]; - } - } - } - for(i = 0, j = nodes.length; i < j; i++) { - dom = this.get_node(nodes[i], true); - if (dom && dom.length) { - dom.removeClass("jstree-loading").attr('aria-busy',false); - } - } - parent._load_nodes.call(this, nodes, callback, is_callback, force_reload); - }, this)); - } - if(typeof s === 'object' && s && s.url) { - s = $.extend(true, {}, s); - if($.isFunction(s.url)) { - s.url = s.url.call(this, toLoad); - } - if($.isFunction(s.data)) { - s.data = s.data.call(this, toLoad); - } - return $.ajax(s) - .done($.proxy(function (data,t,x) { - var i, j; - if(data) { - for(i in data) { - if(data.hasOwnProperty(i)) { - this._data.massload[i] = data[i]; - } - } - } - for(i = 0, j = nodes.length; i < j; i++) { - dom = this.get_node(nodes[i], true); - if (dom && dom.length) { - dom.removeClass("jstree-loading").attr('aria-busy',false); - } - } - parent._load_nodes.call(this, nodes, callback, is_callback, force_reload); - }, this)) - .fail($.proxy(function (f) { - parent._load_nodes.call(this, nodes, callback, is_callback, force_reload); - }, this)); - } - } - } - return parent._load_nodes.call(this, nodes, callback, is_callback, force_reload); - }; - this._load_node = function (obj, callback) { - var data = this._data.massload[obj.id], - rslt = null, dom; - if(data) { - rslt = this[typeof data === 'string' ? '_append_html_data' : '_append_json_data']( - obj, - typeof data === 'string' ? $($.parseHTML(data)).filter(function () { return this.nodeType !== 3; }) : data, - function (status) { callback.call(this, status); } - ); - dom = this.get_node(obj.id, true); - if (dom && dom.length) { - dom.removeClass("jstree-loading").attr('aria-busy',false); - } - delete this._data.massload[obj.id]; - return rslt; - } - return parent._load_node.call(this, obj, callback); - }; - }; - -/** - * ### Search plugin - * - * Adds search functionality to jsTree. - */ - - /** - * stores all defaults for the search plugin - * @name $.jstree.defaults.search - * @plugin search - */ - $.jstree.defaults.search = { - /** - * a jQuery-like AJAX config, which jstree uses if a server should be queried for results. - * - * A `str` (which is the search string) parameter will be added with the request, an optional `inside` parameter will be added if the search is limited to a node id. The expected result is a JSON array with nodes that need to be opened so that matching nodes will be revealed. - * Leave this setting as `false` to not query the server. You can also set this to a function, which will be invoked in the instance's scope and receive 3 parameters - the search string, the callback to call with the array of nodes to load, and the optional node ID to limit the search to - * @name $.jstree.defaults.search.ajax - * @plugin search - */ - ajax : false, - /** - * Indicates if the search should be fuzzy or not (should `chnd3` match `child node 3`). Default is `false`. - * @name $.jstree.defaults.search.fuzzy - * @plugin search - */ - fuzzy : false, - /** - * Indicates if the search should be case sensitive. Default is `false`. - * @name $.jstree.defaults.search.case_sensitive - * @plugin search - */ - case_sensitive : false, - /** - * Indicates if the tree should be filtered (by default) to show only matching nodes (keep in mind this can be a heavy on large trees in old browsers). - * This setting can be changed at runtime when calling the search method. Default is `false`. - * @name $.jstree.defaults.search.show_only_matches - * @plugin search - */ - show_only_matches : false, - /** - * Indicates if the children of matched element are shown (when show_only_matches is true) - * This setting can be changed at runtime when calling the search method. Default is `false`. - * @name $.jstree.defaults.search.show_only_matches_children - * @plugin search - */ - show_only_matches_children : false, - /** - * Indicates if all nodes opened to reveal the search result, should be closed when the search is cleared or a new search is performed. Default is `true`. - * @name $.jstree.defaults.search.close_opened_onclear - * @plugin search - */ - close_opened_onclear : true, - /** - * Indicates if only leaf nodes should be included in search results. Default is `false`. - * @name $.jstree.defaults.search.search_leaves_only - * @plugin search - */ - search_leaves_only : false, - /** - * If set to a function it wil be called in the instance's scope with two arguments - search string and node (where node will be every node in the structure, so use with caution). - * If the function returns a truthy value the node will be considered a match (it might not be displayed if search_only_leaves is set to true and the node is not a leaf). Default is `false`. - * @name $.jstree.defaults.search.search_callback - * @plugin search - */ - search_callback : false - }; - - $.jstree.plugins.search = function (options, parent) { - this.bind = function () { - parent.bind.call(this); - - this._data.search.str = ""; - this._data.search.dom = $(); - this._data.search.res = []; - this._data.search.opn = []; - this._data.search.som = false; - this._data.search.smc = false; - this._data.search.hdn = []; - - this.element - .on("search.jstree", $.proxy(function (e, data) { - if(this._data.search.som && data.res.length) { - var m = this._model.data, i, j, p = [], k, l; - for(i = 0, j = data.res.length; i < j; i++) { - if(m[data.res[i]] && !m[data.res[i]].state.hidden) { - p.push(data.res[i]); - p = p.concat(m[data.res[i]].parents); - if(this._data.search.smc) { - for (k = 0, l = m[data.res[i]].children_d.length; k < l; k++) { - if (m[m[data.res[i]].children_d[k]] && !m[m[data.res[i]].children_d[k]].state.hidden) { - p.push(m[data.res[i]].children_d[k]); - } - } - } - } - } - p = $.vakata.array_remove_item($.vakata.array_unique(p), $.jstree.root); - this._data.search.hdn = this.hide_all(true); - this.show_node(p, true); - this.redraw(true); - } - }, this)) - .on("clear_search.jstree", $.proxy(function (e, data) { - if(this._data.search.som && data.res.length) { - this.show_node(this._data.search.hdn, true); - this.redraw(true); - } - }, this)); - }; - /** - * used to search the tree nodes for a given string - * @name search(str [, skip_async]) - * @param {String} str the search string - * @param {Boolean} skip_async if set to true server will not be queried even if configured - * @param {Boolean} show_only_matches if set to true only matching nodes will be shown (keep in mind this can be very slow on large trees or old browsers) - * @param {mixed} inside an optional node to whose children to limit the search - * @param {Boolean} append if set to true the results of this search are appended to the previous search - * @plugin search - * @trigger search.jstree - */ - this.search = function (str, skip_async, show_only_matches, inside, append, show_only_matches_children) { - if(str === false || $.trim(str.toString()) === "") { - return this.clear_search(); - } - inside = this.get_node(inside); - inside = inside && inside.id ? inside.id : null; - str = str.toString(); - var s = this.settings.search, - a = s.ajax ? s.ajax : false, - m = this._model.data, - f = null, - r = [], - p = [], i, j; - if(this._data.search.res.length && !append) { - this.clear_search(); - } - if(show_only_matches === undefined) { - show_only_matches = s.show_only_matches; - } - if(show_only_matches_children === undefined) { - show_only_matches_children = s.show_only_matches_children; - } - if(!skip_async && a !== false) { - if($.isFunction(a)) { - return a.call(this, str, $.proxy(function (d) { - if(d && d.d) { d = d.d; } - this._load_nodes(!$.isArray(d) ? [] : $.vakata.array_unique(d), function () { - this.search(str, true, show_only_matches, inside, append, show_only_matches_children); - }); - }, this), inside); - } - else { - a = $.extend({}, a); - if(!a.data) { a.data = {}; } - a.data.str = str; - if(inside) { - a.data.inside = inside; - } - if (this._data.search.lastRequest) { - this._data.search.lastRequest.abort(); - } - this._data.search.lastRequest = $.ajax(a) - .fail($.proxy(function () { - this._data.core.last_error = { 'error' : 'ajax', 'plugin' : 'search', 'id' : 'search_01', 'reason' : 'Could not load search parents', 'data' : JSON.stringify(a) }; - this.settings.core.error.call(this, this._data.core.last_error); - }, this)) - .done($.proxy(function (d) { - if(d && d.d) { d = d.d; } - this._load_nodes(!$.isArray(d) ? [] : $.vakata.array_unique(d), function () { - this.search(str, true, show_only_matches, inside, append, show_only_matches_children); - }); - }, this)); - return this._data.search.lastRequest; - } - } - if(!append) { - this._data.search.str = str; - this._data.search.dom = $(); - this._data.search.res = []; - this._data.search.opn = []; - this._data.search.som = show_only_matches; - this._data.search.smc = show_only_matches_children; - } - - f = new $.vakata.search(str, true, { caseSensitive : s.case_sensitive, fuzzy : s.fuzzy }); - $.each(m[inside ? inside : $.jstree.root].children_d, function (ii, i) { - var v = m[i]; - if(v.text && !v.state.hidden && (!s.search_leaves_only || (v.state.loaded && v.children.length === 0)) && ( (s.search_callback && s.search_callback.call(this, str, v)) || (!s.search_callback && f.search(v.text).isMatch) ) ) { - r.push(i); - p = p.concat(v.parents); - } - }); - if(r.length) { - p = $.vakata.array_unique(p); - for(i = 0, j = p.length; i < j; i++) { - if(p[i] !== $.jstree.root && m[p[i]] && this.open_node(p[i], null, 0) === true) { - this._data.search.opn.push(p[i]); - } - } - if(!append) { - this._data.search.dom = $(this.element[0].querySelectorAll('#' + $.map(r, function (v) { return "0123456789".indexOf(v[0]) !== -1 ? '\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\$&') : v.replace($.jstree.idregex,'\\$&'); }).join(', #'))); - this._data.search.res = r; - } - else { - this._data.search.dom = this._data.search.dom.add($(this.element[0].querySelectorAll('#' + $.map(r, function (v) { return "0123456789".indexOf(v[0]) !== -1 ? '\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\$&') : v.replace($.jstree.idregex,'\\$&'); }).join(', #')))); - this._data.search.res = $.vakata.array_unique(this._data.search.res.concat(r)); - } - this._data.search.dom.children(".jstree-anchor").addClass('jstree-search'); - } - /** - * triggered after search is complete - * @event - * @name search.jstree - * @param {jQuery} nodes a jQuery collection of matching nodes - * @param {String} str the search string - * @param {Array} res a collection of objects represeing the matching nodes - * @plugin search - */ - this.trigger('search', { nodes : this._data.search.dom, str : str, res : this._data.search.res, show_only_matches : show_only_matches }); - }; - /** - * used to clear the last search (removes classes and shows all nodes if filtering is on) - * @name clear_search() - * @plugin search - * @trigger clear_search.jstree - */ - this.clear_search = function () { - if(this.settings.search.close_opened_onclear) { - this.close_node(this._data.search.opn, 0); - } - /** - * triggered after search is complete - * @event - * @name clear_search.jstree - * @param {jQuery} nodes a jQuery collection of matching nodes (the result from the last search) - * @param {String} str the search string (the last search string) - * @param {Array} res a collection of objects represeing the matching nodes (the result from the last search) - * @plugin search - */ - this.trigger('clear_search', { 'nodes' : this._data.search.dom, str : this._data.search.str, res : this._data.search.res }); - if(this._data.search.res.length) { - this._data.search.dom = $(this.element[0].querySelectorAll('#' + $.map(this._data.search.res, function (v) { - return "0123456789".indexOf(v[0]) !== -1 ? '\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\$&') : v.replace($.jstree.idregex,'\\$&'); - }).join(', #'))); - this._data.search.dom.children(".jstree-anchor").removeClass("jstree-search"); - } - this._data.search.str = ""; - this._data.search.res = []; - this._data.search.opn = []; - this._data.search.dom = $(); - }; - - this.redraw_node = function(obj, deep, callback, force_render) { - obj = parent.redraw_node.apply(this, arguments); - if(obj) { - if($.inArray(obj.id, this._data.search.res) !== -1) { - var i, j, tmp = null; - for(i = 0, j = obj.childNodes.length; i < j; i++) { - if(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf("jstree-anchor") !== -1) { - tmp = obj.childNodes[i]; - break; - } - } - if(tmp) { - tmp.className += ' jstree-search'; - } - } - } - return obj; - }; - }; - - // helpers - (function ($) { - // from http://kiro.me/projects/fuse.html - $.vakata.search = function(pattern, txt, options) { - options = options || {}; - options = $.extend({}, $.vakata.search.defaults, options); - if(options.fuzzy !== false) { - options.fuzzy = true; - } - pattern = options.caseSensitive ? pattern : pattern.toLowerCase(); - var MATCH_LOCATION = options.location, - MATCH_DISTANCE = options.distance, - MATCH_THRESHOLD = options.threshold, - patternLen = pattern.length, - matchmask, pattern_alphabet, match_bitapScore, search; - if(patternLen > 32) { - options.fuzzy = false; - } - if(options.fuzzy) { - matchmask = 1 << (patternLen - 1); - pattern_alphabet = (function () { - var mask = {}, - i = 0; - for (i = 0; i < patternLen; i++) { - mask[pattern.charAt(i)] = 0; - } - for (i = 0; i < patternLen; i++) { - mask[pattern.charAt(i)] |= 1 << (patternLen - i - 1); - } - return mask; - }()); - match_bitapScore = function (e, x) { - var accuracy = e / patternLen, - proximity = Math.abs(MATCH_LOCATION - x); - if(!MATCH_DISTANCE) { - return proximity ? 1.0 : accuracy; - } - return accuracy + (proximity / MATCH_DISTANCE); - }; - } - search = function (text) { - text = options.caseSensitive ? text : text.toLowerCase(); - if(pattern === text || text.indexOf(pattern) !== -1) { - return { - isMatch: true, - score: 0 - }; - } - if(!options.fuzzy) { - return { - isMatch: false, - score: 1 - }; - } - var i, j, - textLen = text.length, - scoreThreshold = MATCH_THRESHOLD, - bestLoc = text.indexOf(pattern, MATCH_LOCATION), - binMin, binMid, - binMax = patternLen + textLen, - lastRd, start, finish, rd, charMatch, - score = 1, - locations = []; - if (bestLoc !== -1) { - scoreThreshold = Math.min(match_bitapScore(0, bestLoc), scoreThreshold); - bestLoc = text.lastIndexOf(pattern, MATCH_LOCATION + patternLen); - if (bestLoc !== -1) { - scoreThreshold = Math.min(match_bitapScore(0, bestLoc), scoreThreshold); - } - } - bestLoc = -1; - for (i = 0; i < patternLen; i++) { - binMin = 0; - binMid = binMax; - while (binMin < binMid) { - if (match_bitapScore(i, MATCH_LOCATION + binMid) <= scoreThreshold) { - binMin = binMid; - } else { - binMax = binMid; - } - binMid = Math.floor((binMax - binMin) / 2 + binMin); - } - binMax = binMid; - start = Math.max(1, MATCH_LOCATION - binMid + 1); - finish = Math.min(MATCH_LOCATION + binMid, textLen) + patternLen; - rd = new Array(finish + 2); - rd[finish + 1] = (1 << i) - 1; - for (j = finish; j >= start; j--) { - charMatch = pattern_alphabet[text.charAt(j - 1)]; - if (i === 0) { - rd[j] = ((rd[j + 1] << 1) | 1) & charMatch; - } else { - rd[j] = ((rd[j + 1] << 1) | 1) & charMatch | (((lastRd[j + 1] | lastRd[j]) << 1) | 1) | lastRd[j + 1]; - } - if (rd[j] & matchmask) { - score = match_bitapScore(i, j - 1); - if (score <= scoreThreshold) { - scoreThreshold = score; - bestLoc = j - 1; - locations.push(bestLoc); - if (bestLoc > MATCH_LOCATION) { - start = Math.max(1, 2 * MATCH_LOCATION - bestLoc); - } else { - break; - } - } - } - } - if (match_bitapScore(i + 1, MATCH_LOCATION) > scoreThreshold) { - break; - } - lastRd = rd; - } - return { - isMatch: bestLoc >= 0, - score: score - }; - }; - return txt === true ? { 'search' : search } : search(txt); - }; - $.vakata.search.defaults = { - location : 0, - distance : 100, - threshold : 0.6, - fuzzy : false, - caseSensitive : false - }; - }($)); - - // include the search plugin by default - // $.jstree.defaults.plugins.push("search"); - - -/** - * ### Sort plugin - * - * Automatically sorts all siblings in the tree according to a sorting function. - */ - - /** - * the settings function used to sort the nodes. - * It is executed in the tree's context, accepts two nodes as arguments and should return `1` or `-1`. - * @name $.jstree.defaults.sort - * @plugin sort - */ - $.jstree.defaults.sort = function (a, b) { - //return this.get_type(a) === this.get_type(b) ? (this.get_text(a) > this.get_text(b) ? 1 : -1) : this.get_type(a) >= this.get_type(b); - return this.get_text(a) > this.get_text(b) ? 1 : -1; - }; - $.jstree.plugins.sort = function (options, parent) { - this.bind = function () { - parent.bind.call(this); - this.element - .on("model.jstree", $.proxy(function (e, data) { - this.sort(data.parent, true); - }, this)) - .on("rename_node.jstree create_node.jstree", $.proxy(function (e, data) { - this.sort(data.parent || data.node.parent, false); - this.redraw_node(data.parent || data.node.parent, true); - }, this)) - .on("move_node.jstree copy_node.jstree", $.proxy(function (e, data) { - this.sort(data.parent, false); - this.redraw_node(data.parent, true); - }, this)); - }; - /** - * used to sort a node's children - * @private - * @name sort(obj [, deep]) - * @param {mixed} obj the node - * @param {Boolean} deep if set to `true` nodes are sorted recursively. - * @plugin sort - * @trigger search.jstree - */ - this.sort = function (obj, deep) { - var i, j; - obj = this.get_node(obj); - if(obj && obj.children && obj.children.length) { - obj.children.sort($.proxy(this.settings.sort, this)); - if(deep) { - for(i = 0, j = obj.children_d.length; i < j; i++) { - this.sort(obj.children_d[i], false); - } - } - } - }; - }; - - // include the sort plugin by default - // $.jstree.defaults.plugins.push("sort"); - -/** - * ### State plugin - * - * Saves the state of the tree (selected nodes, opened nodes) on the user's computer using available options (localStorage, cookies, etc) - */ - - var to = false; - /** - * stores all defaults for the state plugin - * @name $.jstree.defaults.state - * @plugin state - */ - $.jstree.defaults.state = { - /** - * A string for the key to use when saving the current tree (change if using multiple trees in your project). Defaults to `jstree`. - * @name $.jstree.defaults.state.key - * @plugin state - */ - key : 'jstree', - /** - * A space separated list of events that trigger a state save. Defaults to `changed.jstree open_node.jstree close_node.jstree`. - * @name $.jstree.defaults.state.events - * @plugin state - */ - events : 'changed.jstree open_node.jstree close_node.jstree check_node.jstree uncheck_node.jstree', - /** - * Time in milliseconds after which the state will expire. Defaults to 'false' meaning - no expire. - * @name $.jstree.defaults.state.ttl - * @plugin state - */ - ttl : false, - /** - * A function that will be executed prior to restoring state with one argument - the state object. Can be used to clear unwanted parts of the state. - * @name $.jstree.defaults.state.filter - * @plugin state - */ - filter : false - }; - $.jstree.plugins.state = function (options, parent) { - this.bind = function () { - parent.bind.call(this); - var bind = $.proxy(function () { - this.element.on(this.settings.state.events, $.proxy(function () { - if(to) { clearTimeout(to); } - to = setTimeout($.proxy(function () { this.save_state(); }, this), 100); - }, this)); - /** - * triggered when the state plugin is finished restoring the state (and immediately after ready if there is no state to restore). - * @event - * @name state_ready.jstree - * @plugin state - */ - this.trigger('state_ready'); - }, this); - this.element - .on("ready.jstree", $.proxy(function (e, data) { - this.element.one("restore_state.jstree", bind); - if(!this.restore_state()) { bind(); } - }, this)); - }; - /** - * save the state - * @name save_state() - * @plugin state - */ - this.save_state = function () { - var st = { 'state' : this.get_state(), 'ttl' : this.settings.state.ttl, 'sec' : +(new Date()) }; - $.vakata.storage.set(this.settings.state.key, JSON.stringify(st)); - }; - /** - * restore the state from the user's computer - * @name restore_state() - * @plugin state - */ - this.restore_state = function () { - var k = $.vakata.storage.get(this.settings.state.key); - if(!!k) { try { k = JSON.parse(k); } catch(ex) { return false; } } - if(!!k && k.ttl && k.sec && +(new Date()) - k.sec > k.ttl) { return false; } - if(!!k && k.state) { k = k.state; } - if(!!k && $.isFunction(this.settings.state.filter)) { k = this.settings.state.filter.call(this, k); } - if(!!k) { - this.element.one("set_state.jstree", function (e, data) { data.instance.trigger('restore_state', { 'state' : $.extend(true, {}, k) }); }); - this.set_state(k); - return true; - } - return false; - }; - /** - * clear the state on the user's computer - * @name clear_state() - * @plugin state - */ - this.clear_state = function () { - return $.vakata.storage.del(this.settings.state.key); - }; - }; - - (function ($, undefined) { - $.vakata.storage = { - // simply specifying the functions in FF throws an error - set : function (key, val) { return window.localStorage.setItem(key, val); }, - get : function (key) { return window.localStorage.getItem(key); }, - del : function (key) { return window.localStorage.removeItem(key); } - }; - }($)); - - // include the state plugin by default - // $.jstree.defaults.plugins.push("state"); - -/** - * ### Types plugin - * - * Makes it possible to add predefined types for groups of nodes, which make it possible to easily control nesting rules and icon for each group. - */ - - /** - * An object storing all types as key value pairs, where the key is the type name and the value is an object that could contain following keys (all optional). - * - * * `max_children` the maximum number of immediate children this node type can have. Do not specify or set to `-1` for unlimited. - * * `max_depth` the maximum number of nesting this node type can have. A value of `1` would mean that the node can have children, but no grandchildren. Do not specify or set to `-1` for unlimited. - * * `valid_children` an array of node type strings, that nodes of this type can have as children. Do not specify or set to `-1` for no limits. - * * `icon` a string - can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class. Omit to use the default icon from your theme. - * * `li_attr` an object of values which will be used to add HTML attributes on the resulting LI DOM node (merged with the node's own data) - * * `a_attr` an object of values which will be used to add HTML attributes on the resulting A DOM node (merged with the node's own data) - * - * There are two predefined types: - * - * * `#` represents the root of the tree, for example `max_children` would control the maximum number of root nodes. - * * `default` represents the default node - any settings here will be applied to all nodes that do not have a type specified. - * - * @name $.jstree.defaults.types - * @plugin types - */ - $.jstree.defaults.types = { - 'default' : {} - }; - $.jstree.defaults.types[$.jstree.root] = {}; - - $.jstree.plugins.types = function (options, parent) { - this.init = function (el, options) { - var i, j; - if(options && options.types && options.types['default']) { - for(i in options.types) { - if(i !== "default" && i !== $.jstree.root && options.types.hasOwnProperty(i)) { - for(j in options.types['default']) { - if(options.types['default'].hasOwnProperty(j) && options.types[i][j] === undefined) { - options.types[i][j] = options.types['default'][j]; - } - } - } - } - } - parent.init.call(this, el, options); - this._model.data[$.jstree.root].type = $.jstree.root; - }; - this.refresh = function (skip_loading, forget_state) { - parent.refresh.call(this, skip_loading, forget_state); - this._model.data[$.jstree.root].type = $.jstree.root; - }; - this.bind = function () { - this.element - .on('model.jstree', $.proxy(function (e, data) { - var m = this._model.data, - dpc = data.nodes, - t = this.settings.types, - i, j, c = 'default', k; - for(i = 0, j = dpc.length; i < j; i++) { - c = 'default'; - if(m[dpc[i]].original && m[dpc[i]].original.type && t[m[dpc[i]].original.type]) { - c = m[dpc[i]].original.type; - } - if(m[dpc[i]].data && m[dpc[i]].data.jstree && m[dpc[i]].data.jstree.type && t[m[dpc[i]].data.jstree.type]) { - c = m[dpc[i]].data.jstree.type; - } - m[dpc[i]].type = c; - if(m[dpc[i]].icon === true && t[c].icon !== undefined) { - m[dpc[i]].icon = t[c].icon; - } - if(t[c].li_attr !== undefined && typeof t[c].li_attr === 'object') { - for (k in t[c].li_attr) { - if (t[c].li_attr.hasOwnProperty(k)) { - if (k === 'id') { - continue; - } - else if (m[dpc[i]].li_attr[k] === undefined) { - m[dpc[i]].li_attr[k] = t[c].li_attr[k]; - } - else if (k === 'class') { - m[dpc[i]].li_attr['class'] = t[c].li_attr['class'] + ' ' + m[dpc[i]].li_attr['class']; - } - } - } - } - if(t[c].a_attr !== undefined && typeof t[c].a_attr === 'object') { - for (k in t[c].a_attr) { - if (t[c].a_attr.hasOwnProperty(k)) { - if (k === 'id') { - continue; - } - else if (m[dpc[i]].a_attr[k] === undefined) { - m[dpc[i]].a_attr[k] = t[c].a_attr[k]; - } - else if (k === 'href' && m[dpc[i]].a_attr[k] === '#') { - m[dpc[i]].a_attr['href'] = t[c].a_attr['href']; - } - else if (k === 'class') { - m[dpc[i]].a_attr['class'] = t[c].a_attr['class'] + ' ' + m[dpc[i]].a_attr['class']; - } - } - } - } - } - m[$.jstree.root].type = $.jstree.root; - }, this)); - parent.bind.call(this); - }; - this.get_json = function (obj, options, flat) { - var i, j, - m = this._model.data, - opt = options ? $.extend(true, {}, options, {no_id:false}) : {}, - tmp = parent.get_json.call(this, obj, opt, flat); - if(tmp === false) { return false; } - if($.isArray(tmp)) { - for(i = 0, j = tmp.length; i < j; i++) { - tmp[i].type = tmp[i].id && m[tmp[i].id] && m[tmp[i].id].type ? m[tmp[i].id].type : "default"; - if(options && options.no_id) { - delete tmp[i].id; - if(tmp[i].li_attr && tmp[i].li_attr.id) { - delete tmp[i].li_attr.id; - } - if(tmp[i].a_attr && tmp[i].a_attr.id) { - delete tmp[i].a_attr.id; - } - } - } - } - else { - tmp.type = tmp.id && m[tmp.id] && m[tmp.id].type ? m[tmp.id].type : "default"; - if(options && options.no_id) { - tmp = this._delete_ids(tmp); - } - } - return tmp; - }; - this._delete_ids = function (tmp) { - if($.isArray(tmp)) { - for(var i = 0, j = tmp.length; i < j; i++) { - tmp[i] = this._delete_ids(tmp[i]); - } - return tmp; - } - delete tmp.id; - if(tmp.li_attr && tmp.li_attr.id) { - delete tmp.li_attr.id; - } - if(tmp.a_attr && tmp.a_attr.id) { - delete tmp.a_attr.id; - } - if(tmp.children && $.isArray(tmp.children)) { - tmp.children = this._delete_ids(tmp.children); - } - return tmp; - }; - this.check = function (chk, obj, par, pos, more) { - if(parent.check.call(this, chk, obj, par, pos, more) === false) { return false; } - obj = obj && obj.id ? obj : this.get_node(obj); - par = par && par.id ? par : this.get_node(par); - var m = obj && obj.id ? (more && more.origin ? more.origin : $.jstree.reference(obj.id)) : null, tmp, d, i, j; - m = m && m._model && m._model.data ? m._model.data : null; - switch(chk) { - case "create_node": - case "move_node": - case "copy_node": - if(chk !== 'move_node' || $.inArray(obj.id, par.children) === -1) { - tmp = this.get_rules(par); - if(tmp.max_children !== undefined && tmp.max_children !== -1 && tmp.max_children === par.children.length) { - this._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_01', 'reason' : 'max_children prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; - return false; - } - if(tmp.valid_children !== undefined && tmp.valid_children !== -1 && $.inArray((obj.type || 'default'), tmp.valid_children) === -1) { - this._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_02', 'reason' : 'valid_children prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; - return false; - } - if(m && obj.children_d && obj.parents) { - d = 0; - for(i = 0, j = obj.children_d.length; i < j; i++) { - d = Math.max(d, m[obj.children_d[i]].parents.length); - } - d = d - obj.parents.length + 1; - } - if(d <= 0 || d === undefined) { d = 1; } - do { - if(tmp.max_depth !== undefined && tmp.max_depth !== -1 && tmp.max_depth < d) { - this._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_03', 'reason' : 'max_depth prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; - return false; - } - par = this.get_node(par.parent); - tmp = this.get_rules(par); - d++; - } while(par); - } - break; - } - return true; - }; - /** - * used to retrieve the type settings object for a node - * @name get_rules(obj) - * @param {mixed} obj the node to find the rules for - * @return {Object} - * @plugin types - */ - this.get_rules = function (obj) { - obj = this.get_node(obj); - if(!obj) { return false; } - var tmp = this.get_type(obj, true); - if(tmp.max_depth === undefined) { tmp.max_depth = -1; } - if(tmp.max_children === undefined) { tmp.max_children = -1; } - if(tmp.valid_children === undefined) { tmp.valid_children = -1; } - return tmp; - }; - /** - * used to retrieve the type string or settings object for a node - * @name get_type(obj [, rules]) - * @param {mixed} obj the node to find the rules for - * @param {Boolean} rules if set to `true` instead of a string the settings object will be returned - * @return {String|Object} - * @plugin types - */ - this.get_type = function (obj, rules) { - obj = this.get_node(obj); - return (!obj) ? false : ( rules ? $.extend({ 'type' : obj.type }, this.settings.types[obj.type]) : obj.type); - }; - /** - * used to change a node's type - * @name set_type(obj, type) - * @param {mixed} obj the node to change - * @param {String} type the new type - * @plugin types - */ - this.set_type = function (obj, type) { - var m = this._model.data, t, t1, t2, old_type, old_icon, k, d, a; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.set_type(obj[t1], type); - } - return true; - } - t = this.settings.types; - obj = this.get_node(obj); - if(!t[type] || !obj) { return false; } - d = this.get_node(obj, true); - if (d && d.length) { - a = d.children('.jstree-anchor'); - } - old_type = obj.type; - old_icon = this.get_icon(obj); - obj.type = type; - if(old_icon === true || !t[old_type] || (t[old_type].icon !== undefined && old_icon === t[old_type].icon)) { - this.set_icon(obj, t[type].icon !== undefined ? t[type].icon : true); - } - - // remove old type props - if(t[old_type] && t[old_type].li_attr !== undefined && typeof t[old_type].li_attr === 'object') { - for (k in t[old_type].li_attr) { - if (t[old_type].li_attr.hasOwnProperty(k)) { - if (k === 'id') { - continue; - } - else if (k === 'class') { - m[obj.id].li_attr['class'] = (m[obj.id].li_attr['class'] || '').replace(t[old_type].li_attr[k], ''); - if (d) { d.removeClass(t[old_type].li_attr[k]); } - } - else if (m[obj.id].li_attr[k] === t[old_type].li_attr[k]) { - m[obj.id].li_attr[k] = null; - if (d) { d.removeAttr(k); } - } - } - } - } - if(t[old_type] && t[old_type].a_attr !== undefined && typeof t[old_type].a_attr === 'object') { - for (k in t[old_type].a_attr) { - if (t[old_type].a_attr.hasOwnProperty(k)) { - if (k === 'id') { - continue; - } - else if (k === 'class') { - m[obj.id].a_attr['class'] = (m[obj.id].a_attr['class'] || '').replace(t[old_type].a_attr[k], ''); - if (a) { a.removeClass(t[old_type].a_attr[k]); } - } - else if (m[obj.id].a_attr[k] === t[old_type].a_attr[k]) { - if (k === 'href') { - m[obj.id].a_attr[k] = '#'; - if (a) { a.attr('href', '#'); } - } - else { - delete m[obj.id].a_attr[k]; - if (a) { a.removeAttr(k); } - } - } - } - } - } - - // add new props - if(t[type].li_attr !== undefined && typeof t[type].li_attr === 'object') { - for (k in t[type].li_attr) { - if (t[type].li_attr.hasOwnProperty(k)) { - if (k === 'id') { - continue; - } - else if (m[obj.id].li_attr[k] === undefined) { - m[obj.id].li_attr[k] = t[type].li_attr[k]; - if (d) { - if (k === 'class') { - d.addClass(t[type].li_attr[k]); - } - else { - d.attr(k, t[type].li_attr[k]); - } - } - } - else if (k === 'class') { - m[obj.id].li_attr['class'] = t[type].li_attr[k] + ' ' + m[obj.id].li_attr['class']; - if (d) { d.addClass(t[type].li_attr[k]); } - } - } - } - } - if(t[type].a_attr !== undefined && typeof t[type].a_attr === 'object') { - for (k in t[type].a_attr) { - if (t[type].a_attr.hasOwnProperty(k)) { - if (k === 'id') { - continue; - } - else if (m[obj.id].a_attr[k] === undefined) { - m[obj.id].a_attr[k] = t[type].a_attr[k]; - if (a) { - if (k === 'class') { - a.addClass(t[type].a_attr[k]); - } - else { - a.attr(k, t[type].a_attr[k]); - } - } - } - else if (k === 'href' && m[obj.id].a_attr[k] === '#') { - m[obj.id].a_attr['href'] = t[type].a_attr['href']; - if (a) { a.attr('href', t[type].a_attr['href']); } - } - else if (k === 'class') { - m[obj.id].a_attr['class'] = t[type].a_attr['class'] + ' ' + m[obj.id].a_attr['class']; - if (a) { a.addClass(t[type].a_attr[k]); } - } - } - } - } - - return true; - }; - }; - // include the types plugin by default - // $.jstree.defaults.plugins.push("types"); - - -/** - * ### Unique plugin - * - * Enforces that no nodes with the same name can coexist as siblings. - */ - - /** - * stores all defaults for the unique plugin - * @name $.jstree.defaults.unique - * @plugin unique - */ - $.jstree.defaults.unique = { - /** - * Indicates if the comparison should be case sensitive. Default is `false`. - * @name $.jstree.defaults.unique.case_sensitive - * @plugin unique - */ - case_sensitive : false, - /** - * A callback executed in the instance's scope when a new node is created and the name is already taken, the two arguments are the conflicting name and the counter. The default will produce results like `New node (2)`. - * @name $.jstree.defaults.unique.duplicate - * @plugin unique - */ - duplicate : function (name, counter) { - return name + ' (' + counter + ')'; - } - }; - - $.jstree.plugins.unique = function (options, parent) { - this.check = function (chk, obj, par, pos, more) { - if(parent.check.call(this, chk, obj, par, pos, more) === false) { return false; } - obj = obj && obj.id ? obj : this.get_node(obj); - par = par && par.id ? par : this.get_node(par); - if(!par || !par.children) { return true; } - var n = chk === "rename_node" ? pos : obj.text, - c = [], - s = this.settings.unique.case_sensitive, - m = this._model.data, i, j; - for(i = 0, j = par.children.length; i < j; i++) { - c.push(s ? m[par.children[i]].text : m[par.children[i]].text.toLowerCase()); - } - if(!s) { n = n.toLowerCase(); } - switch(chk) { - case "delete_node": - return true; - case "rename_node": - i = ($.inArray(n, c) === -1 || (obj.text && obj.text[ s ? 'toString' : 'toLowerCase']() === n)); - if(!i) { - this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_01', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; - } - return i; - case "create_node": - i = ($.inArray(n, c) === -1); - if(!i) { - this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_04', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; - } - return i; - case "copy_node": - i = ($.inArray(n, c) === -1); - if(!i) { - this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_02', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; - } - return i; - case "move_node": - i = ( (obj.parent === par.id && (!more || !more.is_multi)) || $.inArray(n, c) === -1); - if(!i) { - this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_03', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; - } - return i; - } - return true; - }; - this.create_node = function (par, node, pos, callback, is_loaded) { - if(!node || node.text === undefined) { - if(par === null) { - par = $.jstree.root; - } - par = this.get_node(par); - if(!par) { - return parent.create_node.call(this, par, node, pos, callback, is_loaded); - } - pos = pos === undefined ? "last" : pos; - if(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) { - return parent.create_node.call(this, par, node, pos, callback, is_loaded); - } - if(!node) { node = {}; } - var tmp, n, dpc, i, j, m = this._model.data, s = this.settings.unique.case_sensitive, cb = this.settings.unique.duplicate; - n = tmp = this.get_string('New node'); - dpc = []; - for(i = 0, j = par.children.length; i < j; i++) { - dpc.push(s ? m[par.children[i]].text : m[par.children[i]].text.toLowerCase()); - } - i = 1; - while($.inArray(s ? n : n.toLowerCase(), dpc) !== -1) { - n = cb.call(this, tmp, (++i)).toString(); - } - node.text = n; - } - return parent.create_node.call(this, par, node, pos, callback, is_loaded); - }; - }; - - // include the unique plugin by default - // $.jstree.defaults.plugins.push("unique"); - - -/** - * ### Wholerow plugin - * - * Makes each node appear block level. Making selection easier. May cause slow down for large trees in old browsers. - */ - - var div = document.createElement('DIV'); - div.setAttribute('unselectable','on'); - div.setAttribute('role','presentation'); - div.className = 'jstree-wholerow'; - div.innerHTML = ' '; - $.jstree.plugins.wholerow = function (options, parent) { - this.bind = function () { - parent.bind.call(this); - - this.element - .on('ready.jstree set_state.jstree', $.proxy(function () { - this.hide_dots(); - }, this)) - .on("init.jstree loading.jstree ready.jstree", $.proxy(function () { - //div.style.height = this._data.core.li_height + 'px'; - this.get_container_ul().addClass('jstree-wholerow-ul'); - }, this)) - .on("deselect_all.jstree", $.proxy(function (e, data) { - this.element.find('.jstree-wholerow-clicked').removeClass('jstree-wholerow-clicked'); - }, this)) - .on("changed.jstree", $.proxy(function (e, data) { - this.element.find('.jstree-wholerow-clicked').removeClass('jstree-wholerow-clicked'); - var tmp = false, i, j; - for(i = 0, j = data.selected.length; i < j; i++) { - tmp = this.get_node(data.selected[i], true); - if(tmp && tmp.length) { - tmp.children('.jstree-wholerow').addClass('jstree-wholerow-clicked'); - } - } - }, this)) - .on("open_node.jstree", $.proxy(function (e, data) { - this.get_node(data.node, true).find('.jstree-clicked').parent().children('.jstree-wholerow').addClass('jstree-wholerow-clicked'); - }, this)) - .on("hover_node.jstree dehover_node.jstree", $.proxy(function (e, data) { - if(e.type === "hover_node" && this.is_disabled(data.node)) { return; } - this.get_node(data.node, true).children('.jstree-wholerow')[e.type === "hover_node"?"addClass":"removeClass"]('jstree-wholerow-hovered'); - }, this)) - .on("contextmenu.jstree", ".jstree-wholerow", $.proxy(function (e) { - if (this._data.contextmenu) { - e.preventDefault(); - var tmp = $.Event('contextmenu', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey, pageX : e.pageX, pageY : e.pageY }); - $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp); - } - }, this)) - /*! - .on("mousedown.jstree touchstart.jstree", ".jstree-wholerow", function (e) { - if(e.target === e.currentTarget) { - var a = $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor"); - e.target = a[0]; - a.trigger(e); - } - }) - */ - .on("click.jstree", ".jstree-wholerow", function (e) { - e.stopImmediatePropagation(); - var tmp = $.Event('click', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey }); - $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus(); - }) - .on("dblclick.jstree", ".jstree-wholerow", function (e) { - e.stopImmediatePropagation(); - var tmp = $.Event('dblclick', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey }); - $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus(); - }) - .on("click.jstree", ".jstree-leaf > .jstree-ocl", $.proxy(function (e) { - e.stopImmediatePropagation(); - var tmp = $.Event('click', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey }); - $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus(); - }, this)) - .on("mouseover.jstree", ".jstree-wholerow, .jstree-icon", $.proxy(function (e) { - e.stopImmediatePropagation(); - if(!this.is_disabled(e.currentTarget)) { - this.hover_node(e.currentTarget); - } - return false; - }, this)) - .on("mouseleave.jstree", ".jstree-node", $.proxy(function (e) { - this.dehover_node(e.currentTarget); - }, this)); - }; - this.teardown = function () { - if(this.settings.wholerow) { - this.element.find(".jstree-wholerow").remove(); - } - parent.teardown.call(this); - }; - this.redraw_node = function(obj, deep, callback, force_render) { - obj = parent.redraw_node.apply(this, arguments); - if(obj) { - var tmp = div.cloneNode(true); - //tmp.style.height = this._data.core.li_height + 'px'; - if($.inArray(obj.id, this._data.core.selected) !== -1) { tmp.className += ' jstree-wholerow-clicked'; } - if(this._data.core.focused && this._data.core.focused === obj.id) { tmp.className += ' jstree-wholerow-hovered'; } - obj.insertBefore(tmp, obj.childNodes[0]); - } - return obj; - }; - }; - // include the wholerow plugin by default - // $.jstree.defaults.plugins.push("wholerow"); - if(document.registerElement && Object && Object.create) { - var proto = Object.create(HTMLElement.prototype); - proto.createdCallback = function () { - var c = { core : {}, plugins : [] }, i; - for(i in $.jstree.plugins) { - if($.jstree.plugins.hasOwnProperty(i) && this.attributes[i]) { - c.plugins.push(i); - if(this.getAttribute(i) && JSON.parse(this.getAttribute(i))) { - c[i] = JSON.parse(this.getAttribute(i)); - } - } - } - for(i in $.jstree.defaults.core) { - if($.jstree.defaults.core.hasOwnProperty(i) && this.attributes[i]) { - c.core[i] = JSON.parse(this.getAttribute(i)) || this.getAttribute(i); - } - } - $(this).jstree(c); - }; - // proto.attributeChangedCallback = function (name, previous, value) { }; - try { - document.registerElement("vakata-jstree", { prototype: proto }); - } catch(ignore) { } - } - -})); \ No newline at end of file diff --git a/libs/jstree/jstree.min.js b/libs/jstree/jstree.min.js deleted file mode 100644 index 8cd94cd..0000000 --- a/libs/jstree/jstree.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! jsTree - v3.3.4 - 2017-07-31 - (MIT) */ -!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a,b){"use strict";if(!a.jstree){var c=0,d=!1,e=!1,f=!1,g=[],h=a("script:last").attr("src"),i=window.document;a.jstree={version:"3.3.4",defaults:{plugins:[]},plugins:{},path:h&&-1!==h.indexOf("/")?h.replace(/\/[^\/]+$/,""):"",idregex:/[\\:&!^|()\[\]<>@*'+~#";.,=\- \/${}%?`]/g,root:"#"},a.jstree.create=function(b,d){var e=new a.jstree.core(++c),f=d;return d=a.extend(!0,{},a.jstree.defaults,d),f&&f.plugins&&(d.plugins=f.plugins),a.each(d.plugins,function(a,b){"core"!==a&&(e=e.plugin(b,d[b]))}),a(b).data("jstree",e),e.init(b,d),e},a.jstree.destroy=function(){a(".jstree:jstree").jstree("destroy"),a(i).off(".jstree")},a.jstree.core=function(a){this._id=a,this._cnt=0,this._wrk=null,this._data={core:{themes:{name:!1,dots:!1,icons:!1,ellipsis:!1},selected:[],last_error:{},working:!1,worker_queue:[],focused:null}}},a.jstree.reference=function(b){var c=null,d=null;if(!b||!b.id||b.tagName&&b.nodeType||(b=b.id),!d||!d.length)try{d=a(b)}catch(e){}if(!d||!d.length)try{d=a("#"+b.replace(a.jstree.idregex,"\\$&"))}catch(e){}return d&&d.length&&(d=d.closest(".jstree")).length&&(d=d.data("jstree"))?c=d:a(".jstree").each(function(){var d=a(this).data("jstree");return d&&d._model.data[b]?(c=d,!1):void 0}),c},a.fn.jstree=function(c){var d="string"==typeof c,e=Array.prototype.slice.call(arguments,1),f=null;return c!==!0||this.length?(this.each(function(){var g=a.jstree.reference(this),h=d&&g?g[c]:null;return f=d&&h?h.apply(g,e):null,g||d||c!==b&&!a.isPlainObject(c)||a.jstree.create(this,c),(g&&!d||c===!0)&&(f=g||!1),null!==f&&f!==b?!1:void 0}),null!==f&&f!==b?f:this):!1},a.expr.pseudos.jstree=a.expr.createPseudo(function(c){return function(c){return a(c).hasClass("jstree")&&a(c).data("jstree")!==b}}),a.jstree.defaults.core={data:!1,strings:!1,check_callback:!1,error:a.noop,animation:200,multiple:!0,themes:{name:!1,url:!1,dir:!1,dots:!0,icons:!0,ellipsis:!1,stripes:!1,variant:!1,responsive:!1},expand_selected_onload:!0,worker:!0,force_text:!1,dblclick_toggle:!0},a.jstree.core.prototype={plugin:function(b,c){var d=a.jstree.plugins[b];return d?(this._data[b]={},d.prototype=this,new d(c,this)):this},init:function(b,c){this._model={data:{},changed:[],force_full_redraw:!1,redraw_timeout:!1,default_state:{loaded:!0,opened:!1,selected:!1,disabled:!1}},this._model.data[a.jstree.root]={id:a.jstree.root,parent:null,parents:[],children:[],children_d:[],state:{loaded:!1}},this.element=a(b).addClass("jstree jstree-"+this._id),this.settings=c,this._data.core.ready=!1,this._data.core.loaded=!1,this._data.core.rtl="rtl"===this.element.css("direction"),this.element[this._data.core.rtl?"addClass":"removeClass"]("jstree-rtl"),this.element.attr("role","tree"),this.settings.core.multiple&&this.element.attr("aria-multiselectable",!0),this.element.attr("tabindex")||this.element.attr("tabindex","0"),this.bind(),this.trigger("init"),this._data.core.original_container_html=this.element.find(" > ul > li").clone(!0),this._data.core.original_container_html.find("li").addBack().contents().filter(function(){return 3===this.nodeType&&(!this.nodeValue||/^\s+$/.test(this.nodeValue))}).remove(),this.element.html(""),this.element.attr("aria-activedescendant","j"+this._id+"_loading"),this._data.core.li_height=this.get_container_ul().children("li").first().outerHeight()||24,this._data.core.node=this._create_prototype_node(),this.trigger("loading"),this.load_node(a.jstree.root)},destroy:function(a){if(this.trigger("destroy"),this._wrk)try{window.URL.revokeObjectURL(this._wrk),this._wrk=null}catch(b){}a||this.element.empty(),this.teardown()},_create_prototype_node:function(){var a=i.createElement("LI"),b,c;return a.setAttribute("role","treeitem"),b=i.createElement("I"),b.className="jstree-icon jstree-ocl",b.setAttribute("role","presentation"),a.appendChild(b),b=i.createElement("A"),b.className="jstree-anchor",b.setAttribute("href","#"),b.setAttribute("tabindex","-1"),c=i.createElement("I"),c.className="jstree-icon jstree-themeicon",c.setAttribute("role","presentation"),b.appendChild(c),a.appendChild(b),b=c=null,a},teardown:function(){this.unbind(),this.element.removeClass("jstree").removeData("jstree").find("[class^='jstree']").addBack().attr("class",function(){return this.className.replace(/jstree[^ ]*|$/gi,"")}),this.element=null},bind:function(){var b="",c=null,d=0;this.element.on("dblclick.jstree",function(a){if(a.target.tagName&&"input"===a.target.tagName.toLowerCase())return!0;if(i.selection&&i.selection.empty)i.selection.empty();else if(window.getSelection){var b=window.getSelection();try{b.removeAllRanges(),b.collapse()}catch(c){}}}).on("mousedown.jstree",a.proxy(function(a){a.target===this.element[0]&&(a.preventDefault(),d=+new Date)},this)).on("mousedown.jstree",".jstree-ocl",function(a){a.preventDefault()}).on("click.jstree",".jstree-ocl",a.proxy(function(a){this.toggle_node(a.target)},this)).on("dblclick.jstree",".jstree-anchor",a.proxy(function(a){return a.target.tagName&&"input"===a.target.tagName.toLowerCase()?!0:void(this.settings.core.dblclick_toggle&&this.toggle_node(a.target))},this)).on("click.jstree",".jstree-anchor",a.proxy(function(b){b.preventDefault(),b.currentTarget!==i.activeElement&&a(b.currentTarget).focus(),this.activate_node(b.currentTarget,b)},this)).on("keydown.jstree",".jstree-anchor",a.proxy(function(b){if(b.target.tagName&&"input"===b.target.tagName.toLowerCase())return!0;if(32!==b.which&&13!==b.which&&(b.shiftKey||b.ctrlKey||b.altKey||b.metaKey))return!0;var c=null;switch(this._data.core.rtl&&(37===b.which?b.which=39:39===b.which&&(b.which=37)),b.which){case 32:b.ctrlKey&&(b.type="click",a(b.currentTarget).trigger(b));break;case 13:b.type="click",a(b.currentTarget).trigger(b);break;case 37:b.preventDefault(),this.is_open(b.currentTarget)?this.close_node(b.currentTarget):(c=this.get_parent(b.currentTarget),c&&c.id!==a.jstree.root&&this.get_node(c,!0).children(".jstree-anchor").focus());break;case 38:b.preventDefault(),c=this.get_prev_dom(b.currentTarget),c&&c.length&&c.children(".jstree-anchor").focus();break;case 39:b.preventDefault(),this.is_closed(b.currentTarget)?this.open_node(b.currentTarget,function(a){this.get_node(a,!0).children(".jstree-anchor").focus()}):this.is_open(b.currentTarget)&&(c=this.get_node(b.currentTarget,!0).children(".jstree-children")[0],c&&a(this._firstChild(c)).children(".jstree-anchor").focus());break;case 40:b.preventDefault(),c=this.get_next_dom(b.currentTarget),c&&c.length&&c.children(".jstree-anchor").focus();break;case 106:this.open_all();break;case 36:b.preventDefault(),c=this._firstChild(this.get_container_ul()[0]),c&&a(c).children(".jstree-anchor").filter(":visible").focus();break;case 35:b.preventDefault(),this.element.find(".jstree-anchor").filter(":visible").last().focus();break;case 113:b.preventDefault(),this.edit(b.currentTarget)}},this)).on("load_node.jstree",a.proxy(function(b,c){c.status&&(c.node.id!==a.jstree.root||this._data.core.loaded||(this._data.core.loaded=!0,this._firstChild(this.get_container_ul()[0])&&this.element.attr("aria-activedescendant",this._firstChild(this.get_container_ul()[0]).id),this.trigger("loaded")),this._data.core.ready||setTimeout(a.proxy(function(){if(this.element&&!this.get_container_ul().find(".jstree-loading").length){if(this._data.core.ready=!0,this._data.core.selected.length){if(this.settings.core.expand_selected_onload){var b=[],c,d;for(c=0,d=this._data.core.selected.length;d>c;c++)b=b.concat(this._model.data[this._data.core.selected[c]].parents);for(b=a.vakata.array_unique(b),c=0,d=b.length;d>c;c++)this.open_node(b[c],!1,0)}this.trigger("changed",{action:"ready",selected:this._data.core.selected})}this.trigger("ready")}},this),0))},this)).on("keypress.jstree",a.proxy(function(d){if(d.target.tagName&&"input"===d.target.tagName.toLowerCase())return!0;c&&clearTimeout(c),c=setTimeout(function(){b=""},500);var e=String.fromCharCode(d.which).toLowerCase(),f=this.element.find(".jstree-anchor").filter(":visible"),g=f.index(i.activeElement)||0,h=!1;if(b+=e,b.length>1){if(f.slice(g).each(a.proxy(function(c,d){return 0===a(d).text().toLowerCase().indexOf(b)?(a(d).focus(),h=!0,!1):void 0},this)),h)return;if(f.slice(0,g).each(a.proxy(function(c,d){return 0===a(d).text().toLowerCase().indexOf(b)?(a(d).focus(),h=!0,!1):void 0},this)),h)return}if(new RegExp("^"+e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")+"+$").test(b)){if(f.slice(g+1).each(a.proxy(function(b,c){return a(c).text().toLowerCase().charAt(0)===e?(a(c).focus(),h=!0,!1):void 0},this)),h)return;if(f.slice(0,g+1).each(a.proxy(function(b,c){return a(c).text().toLowerCase().charAt(0)===e?(a(c).focus(),h=!0,!1):void 0},this)),h)return}},this)).on("init.jstree",a.proxy(function(){var a=this.settings.core.themes;this._data.core.themes.dots=a.dots,this._data.core.themes.stripes=a.stripes,this._data.core.themes.icons=a.icons,this._data.core.themes.ellipsis=a.ellipsis,this.set_theme(a.name||"default",a.url),this.set_theme_variant(a.variant)},this)).on("loading.jstree",a.proxy(function(){this[this._data.core.themes.dots?"show_dots":"hide_dots"](),this[this._data.core.themes.icons?"show_icons":"hide_icons"](),this[this._data.core.themes.stripes?"show_stripes":"hide_stripes"](),this[this._data.core.themes.ellipsis?"show_ellipsis":"hide_ellipsis"]()},this)).on("blur.jstree",".jstree-anchor",a.proxy(function(b){this._data.core.focused=null,a(b.currentTarget).filter(".jstree-hovered").mouseleave(),this.element.attr("tabindex","0")},this)).on("focus.jstree",".jstree-anchor",a.proxy(function(b){var c=this.get_node(b.currentTarget);c&&c.id&&(this._data.core.focused=c.id),this.element.find(".jstree-hovered").not(b.currentTarget).mouseleave(),a(b.currentTarget).mouseenter(),this.element.attr("tabindex","-1")},this)).on("focus.jstree",a.proxy(function(){if(+new Date-d>500&&!this._data.core.focused){d=0;var a=this.get_node(this.element.attr("aria-activedescendant"),!0);a&&a.find("> .jstree-anchor").focus()}},this)).on("mouseenter.jstree",".jstree-anchor",a.proxy(function(a){this.hover_node(a.currentTarget)},this)).on("mouseleave.jstree",".jstree-anchor",a.proxy(function(a){this.dehover_node(a.currentTarget)},this))},unbind:function(){this.element.off(".jstree"),a(i).off(".jstree-"+this._id)},trigger:function(a,b){b||(b={}),b.instance=this,this.element.triggerHandler(a.replace(".jstree","")+".jstree",b)},get_container:function(){return this.element},get_container_ul:function(){return this.element.children(".jstree-children").first()},get_string:function(b){var c=this.settings.core.strings;return a.isFunction(c)?c.call(this,b):c&&c[b]?c[b]:b},_firstChild:function(a){a=a?a.firstChild:null;while(null!==a&&1!==a.nodeType)a=a.nextSibling;return a},_nextSibling:function(a){a=a?a.nextSibling:null;while(null!==a&&1!==a.nodeType)a=a.nextSibling;return a},_previousSibling:function(a){a=a?a.previousSibling:null;while(null!==a&&1!==a.nodeType)a=a.previousSibling;return a},get_node:function(b,c){b&&b.id&&(b=b.id);var d;try{if(this._model.data[b])b=this._model.data[b];else if("string"==typeof b&&this._model.data[b.replace(/^#/,"")])b=this._model.data[b.replace(/^#/,"")];else if("string"==typeof b&&(d=a("#"+b.replace(a.jstree.idregex,"\\$&"),this.element)).length&&this._model.data[d.closest(".jstree-node").attr("id")])b=this._model.data[d.closest(".jstree-node").attr("id")];else if((d=a(b,this.element)).length&&this._model.data[d.closest(".jstree-node").attr("id")])b=this._model.data[d.closest(".jstree-node").attr("id")];else{if(!(d=a(b,this.element)).length||!d.hasClass("jstree"))return!1;b=this._model.data[a.jstree.root]}return c&&(b=b.id===a.jstree.root?this.element:a("#"+b.id.replace(a.jstree.idregex,"\\$&"),this.element)),b}catch(e){return!1}},get_path:function(b,c,d){if(b=b.parents?b:this.get_node(b),!b||b.id===a.jstree.root||!b.parents)return!1;var e,f,g=[];for(g.push(d?b.id:b.text),e=0,f=b.parents.length;f>e;e++)g.push(d?b.parents[e]:this.get_text(b.parents[e]));return g=g.reverse().slice(1),c?g.join(c):g},get_next_dom:function(b,c){var d;if(b=this.get_node(b,!0),b[0]===this.element[0]){d=this._firstChild(this.get_container_ul()[0]);while(d&&0===d.offsetHeight)d=this._nextSibling(d);return d?a(d):!1}if(!b||!b.length)return!1;if(c){d=b[0];do d=this._nextSibling(d);while(d&&0===d.offsetHeight);return d?a(d):!1}if(b.hasClass("jstree-open")){d=this._firstChild(b.children(".jstree-children")[0]);while(d&&0===d.offsetHeight)d=this._nextSibling(d);if(null!==d)return a(d)}d=b[0];do d=this._nextSibling(d);while(d&&0===d.offsetHeight);return null!==d?a(d):b.parentsUntil(".jstree",".jstree-node").nextAll(".jstree-node:visible").first()},get_prev_dom:function(b,c){var d;if(b=this.get_node(b,!0),b[0]===this.element[0]){d=this.get_container_ul()[0].lastChild;while(d&&0===d.offsetHeight)d=this._previousSibling(d);return d?a(d):!1}if(!b||!b.length)return!1;if(c){d=b[0];do d=this._previousSibling(d);while(d&&0===d.offsetHeight);return d?a(d):!1}d=b[0];do d=this._previousSibling(d);while(d&&0===d.offsetHeight);if(null!==d){b=a(d);while(b.hasClass("jstree-open"))b=b.children(".jstree-children").first().children(".jstree-node:visible:last");return b}return d=b[0].parentNode.parentNode,d&&d.className&&-1!==d.className.indexOf("jstree-node")?a(d):!1},get_parent:function(b){return b=this.get_node(b),b&&b.id!==a.jstree.root?b.parent:!1},get_children_dom:function(a){return a=this.get_node(a,!0),a[0]===this.element[0]?this.get_container_ul().children(".jstree-node"):a&&a.length?a.children(".jstree-children").children(".jstree-node"):!1},is_parent:function(a){return a=this.get_node(a),a&&(a.state.loaded===!1||a.children.length>0)},is_loaded:function(a){return a=this.get_node(a),a&&a.state.loaded},is_loading:function(a){return a=this.get_node(a),a&&a.state&&a.state.loading},is_open:function(a){return a=this.get_node(a),a&&a.state.opened},is_closed:function(a){return a=this.get_node(a),a&&this.is_parent(a)&&!a.state.opened},is_leaf:function(a){return!this.is_parent(a)},load_node:function(b,c){var d,e,f,g,h;if(a.isArray(b))return this._load_nodes(b.slice(),c),!0;if(b=this.get_node(b),!b)return c&&c.call(this,b,!1),!1;if(b.state.loaded){for(b.state.loaded=!1,f=0,g=b.parents.length;g>f;f++)this._model.data[b.parents[f]].children_d=a.vakata.array_filter(this._model.data[b.parents[f]].children_d,function(c){return-1===a.inArray(c,b.children_d)});for(d=0,e=b.children_d.length;e>d;d++)this._model.data[b.children_d[d]].state.selected&&(h=!0),delete this._model.data[b.children_d[d]];h&&(this._data.core.selected=a.vakata.array_filter(this._data.core.selected,function(c){return-1===a.inArray(c,b.children_d)})),b.children=[],b.children_d=[],h&&this.trigger("changed",{action:"load_node",node:b,selected:this._data.core.selected})}return b.state.failed=!1,b.state.loading=!0,this.get_node(b,!0).addClass("jstree-loading").attr("aria-busy",!0),this._load_node(b,a.proxy(function(a){b=this._model.data[b.id],b.state.loading=!1,b.state.loaded=a,b.state.failed=!b.state.loaded;var d=this.get_node(b,!0),e=0,f=0,g=this._model.data,h=!1;for(e=0,f=b.children.length;f>e;e++)if(g[b.children[e]]&&!g[b.children[e]].state.hidden){h=!0;break}b.state.loaded&&d&&d.length&&(d.removeClass("jstree-closed jstree-open jstree-leaf"),h?"#"!==b.id&&d.addClass(b.state.opened?"jstree-open":"jstree-closed"):d.addClass("jstree-leaf")),d.removeClass("jstree-loading").attr("aria-busy",!1),this.trigger("load_node",{node:b,status:a}),c&&c.call(this,b,a)},this)),!0},_load_nodes:function(a,b,c,d){var e=!0,f=function(){this._load_nodes(a,b,!0)},g=this._model.data,h,i,j=[];for(h=0,i=a.length;i>h;h++)g[a[h]]&&(!g[a[h]].state.loaded&&!g[a[h]].state.failed||!c&&d)&&(this.is_loading(a[h])||this.load_node(a[h],f),e=!1);if(e){for(h=0,i=a.length;i>h;h++)g[a[h]]&&g[a[h]].state.loaded&&j.push(a[h]);b&&!b.done&&(b.call(this,j),b.done=!0)}},load_all:function(b,c){if(b||(b=a.jstree.root),b=this.get_node(b),!b)return!1;var d=[],e=this._model.data,f=e[b.id].children_d,g,h;for(b.state&&!b.state.loaded&&d.push(b.id),g=0,h=f.length;h>g;g++)e[f[g]]&&e[f[g]].state&&!e[f[g]].state.loaded&&d.push(f[g]);d.length?this._load_nodes(d,function(){this.load_all(b,c)}):(c&&c.call(this,b),this.trigger("load_all",{node:b}))},_load_node:function(b,c){var d=this.settings.core.data,e,f=function g(){return 3!==this.nodeType&&8!==this.nodeType};return d?a.isFunction(d)?d.call(this,b,a.proxy(function(d){d===!1?c.call(this,!1):this["string"==typeof d?"_append_html_data":"_append_json_data"](b,"string"==typeof d?a(a.parseHTML(d)).filter(f):d,function(a){c.call(this,a)})},this)):"object"==typeof d?d.url?(d=a.extend(!0,{},d),a.isFunction(d.url)&&(d.url=d.url.call(this,b)),a.isFunction(d.data)&&(d.data=d.data.call(this,b)),a.ajax(d).done(a.proxy(function(d,e,g){var h=g.getResponseHeader("Content-Type");return h&&-1!==h.indexOf("json")||"object"==typeof d?this._append_json_data(b,d,function(a){c.call(this,a)}):h&&-1!==h.indexOf("html")||"string"==typeof d?this._append_html_data(b,a(a.parseHTML(d)).filter(f),function(a){c.call(this,a)}):(this._data.core.last_error={error:"ajax",plugin:"core",id:"core_04",reason:"Could not load node",data:JSON.stringify({id:b.id,xhr:g})},this.settings.core.error.call(this,this._data.core.last_error),c.call(this,!1))},this)).fail(a.proxy(function(a){this._data.core.last_error={error:"ajax",plugin:"core",id:"core_04",reason:"Could not load node",data:JSON.stringify({id:b.id,xhr:a})},c.call(this,!1),this.settings.core.error.call(this,this._data.core.last_error)},this))):(e=a.isArray(d)?a.extend(!0,[],d):a.isPlainObject(d)?a.extend(!0,{},d):d,b.id===a.jstree.root?this._append_json_data(b,e,function(a){c.call(this,a)}):(this._data.core.last_error={error:"nodata",plugin:"core",id:"core_05",reason:"Could not load node",data:JSON.stringify({id:b.id})},this.settings.core.error.call(this,this._data.core.last_error),c.call(this,!1))):"string"==typeof d?b.id===a.jstree.root?this._append_html_data(b,a(a.parseHTML(d)).filter(f),function(a){c.call(this,a)}):(this._data.core.last_error={error:"nodata",plugin:"core",id:"core_06",reason:"Could not load node",data:JSON.stringify({id:b.id})},this.settings.core.error.call(this,this._data.core.last_error),c.call(this,!1)):c.call(this,!1):b.id===a.jstree.root?this._append_html_data(b,this._data.core.original_container_html.clone(!0),function(a){c.call(this,a)}):c.call(this,!1)},_node_changed:function(b){b=this.get_node(b),b&&-1===a.inArray(b.id,this._model.changed)&&this._model.changed.push(b.id)},_append_html_data:function(b,c,d){b=this.get_node(b),b.children=[],b.children_d=[];var e=c.is("ul")?c.children():c,f=b.id,g=[],h=[],i=this._model.data,j=i[f],k=this._data.core.selected.length,l,m,n;for(e.each(a.proxy(function(b,c){l=this._parse_model_from_html(a(c),f,j.parents.concat()),l&&(g.push(l),h.push(l),i[l].children_d.length&&(h=h.concat(i[l].children_d)))},this)),j.children=g,j.children_d=h,m=0,n=j.parents.length;n>m;m++)i[j.parents[m]].children_d=i[j.parents[m]].children_d.concat(h);this.trigger("model",{nodes:h,parent:f}),f!==a.jstree.root?(this._node_changed(f),this.redraw()):(this.get_container_ul().children(".jstree-initial-node").remove(),this.redraw(!0)),this._data.core.selected.length!==k&&this.trigger("changed",{action:"model",selected:this._data.core.selected}),d.call(this,!0)},_append_json_data:function(b,c,d,e){if(null!==this.element){b=this.get_node(b),b.children=[],b.children_d=[],c.d&&(c=c.d,"string"==typeof c&&(c=JSON.parse(c))),a.isArray(c)||(c=[c]);var f=null,g={df:this._model.default_state,dat:c,par:b.id,m:this._model.data,t_id:this._id,t_cnt:this._cnt,sel:this._data.core.selected},h=function(a,b){a.data&&(a=a.data);var c=a.dat,d=a.par,e=[],f=[],g=[],h=a.df,i=a.t_id,j=a.t_cnt,k=a.m,l=k[d],m=a.sel,n,o,p,q,r=function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=a.id.toString(),f,i,j,l,m={id:e,text:a.text||"",icon:a.icon!==b?a.icon:!0,parent:c,parents:d,children:a.children||[],children_d:a.children_d||[],data:a.data,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(f in h)h.hasOwnProperty(f)&&(m.state[f]=h[f]);if(a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(m.icon=a.data.jstree.icon),(m.icon===b||null===m.icon||""===m.icon)&&(m.icon=!0),a&&a.data&&(m.data=a.data,a.data.jstree))for(f in a.data.jstree)a.data.jstree.hasOwnProperty(f)&&(m.state[f]=a.data.jstree[f]);if(a&&"object"==typeof a.state)for(f in a.state)a.state.hasOwnProperty(f)&&(m.state[f]=a.state[f]);if(a&&"object"==typeof a.li_attr)for(f in a.li_attr)a.li_attr.hasOwnProperty(f)&&(m.li_attr[f]=a.li_attr[f]);if(m.li_attr.id||(m.li_attr.id=e),a&&"object"==typeof a.a_attr)for(f in a.a_attr)a.a_attr.hasOwnProperty(f)&&(m.a_attr[f]=a.a_attr[f]);for(a&&a.children&&a.children===!0&&(m.state.loaded=!1,m.children=[],m.children_d=[]),k[m.id]=m,f=0,i=m.children.length;i>f;f++)j=r(k[m.children[f]],m.id,d),l=k[j],m.children_d.push(j),l.children_d.length&&(m.children_d=m.children_d.concat(l.children_d));return delete a.data,delete a.children,k[m.id].original=a,m.state.selected&&g.push(m.id),m.id},s=function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=!1,f,l,m,n,o;do e="j"+i+"_"+ ++j;while(k[e]);o={id:!1,text:"string"==typeof a?a:"",icon:"object"==typeof a&&a.icon!==b?a.icon:!0,parent:c,parents:d,children:[],children_d:[],data:null,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(f in h)h.hasOwnProperty(f)&&(o.state[f]=h[f]);if(a&&a.id&&(o.id=a.id.toString()),a&&a.text&&(o.text=a.text),a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(o.icon=a.data.jstree.icon),(o.icon===b||null===o.icon||""===o.icon)&&(o.icon=!0),a&&a.data&&(o.data=a.data,a.data.jstree))for(f in a.data.jstree)a.data.jstree.hasOwnProperty(f)&&(o.state[f]=a.data.jstree[f]);if(a&&"object"==typeof a.state)for(f in a.state)a.state.hasOwnProperty(f)&&(o.state[f]=a.state[f]);if(a&&"object"==typeof a.li_attr)for(f in a.li_attr)a.li_attr.hasOwnProperty(f)&&(o.li_attr[f]=a.li_attr[f]);if(o.li_attr.id&&!o.id&&(o.id=o.li_attr.id.toString()),o.id||(o.id=e),o.li_attr.id||(o.li_attr.id=o.id),a&&"object"==typeof a.a_attr)for(f in a.a_attr)a.a_attr.hasOwnProperty(f)&&(o.a_attr[f]=a.a_attr[f]);if(a&&a.children&&a.children.length){for(f=0,l=a.children.length;l>f;f++)m=s(a.children[f],o.id,d),n=k[m],o.children.push(m),n.children_d.length&&(o.children_d=o.children_d.concat(n.children_d));o.children_d=o.children_d.concat(o.children)}return a&&a.children&&a.children===!0&&(o.state.loaded=!1,o.children=[],o.children_d=[]),delete a.data,delete a.children,o.original=a,k[o.id]=o,o.state.selected&&g.push(o.id),o.id};if(c.length&&c[0].id!==b&&c[0].parent!==b){for(o=0,p=c.length;p>o;o++)c[o].children||(c[o].children=[]),c[o].state||(c[o].state={}),k[c[o].id.toString()]=c[o];for(o=0,p=c.length;p>o;o++)k[c[o].parent.toString()]?(k[c[o].parent.toString()].children.push(c[o].id.toString()),l.children_d.push(c[o].id.toString())):(this._data.core.last_error={error:"parse",plugin:"core",id:"core_07",reason:"Node with invalid parent",data:JSON.stringify({id:c[o].id.toString(),parent:c[o].parent.toString()})},this.settings.core.error.call(this,this._data.core.last_error));for(o=0,p=l.children.length;p>o;o++)n=r(k[l.children[o]],d,l.parents.concat()),f.push(n),k[n].children_d.length&&(f=f.concat(k[n].children_d));for(o=0,p=l.parents.length;p>o;o++)k[l.parents[o]].children_d=k[l.parents[o]].children_d.concat(f);q={cnt:j,mod:k,sel:m,par:d,dpc:f,add:g}}else{for(o=0,p=c.length;p>o;o++)n=s(c[o],d,l.parents.concat()),n&&(e.push(n),f.push(n),k[n].children_d.length&&(f=f.concat(k[n].children_d)));for(l.children=e,l.children_d=f,o=0,p=l.parents.length;p>o;o++)k[l.parents[o]].children_d=k[l.parents[o]].children_d.concat(f);q={cnt:j,mod:k,sel:m,par:d,dpc:f,add:g}}return"undefined"!=typeof window&&"undefined"!=typeof window.document?q:void postMessage(q)},i=function(b,c){if(null!==this.element){this._cnt=b.cnt;var e,f=this._model.data;for(e in f)f.hasOwnProperty(e)&&f[e].state&&f[e].state.loading&&b.mod[e]&&(b.mod[e].state.loading=!0);if(this._model.data=b.mod,c){var g,h=b.add,i=b.sel,j=this._data.core.selected.slice();if(f=this._model.data,i.length!==j.length||a.vakata.array_unique(i.concat(j)).length!==i.length){for(e=0,g=i.length;g>e;e++)-1===a.inArray(i[e],h)&&-1===a.inArray(i[e],j)&&(f[i[e]].state.selected=!1);for(e=0,g=j.length;g>e;e++)-1===a.inArray(j[e],i)&&(f[j[e]].state.selected=!0)}}b.add.length&&(this._data.core.selected=this._data.core.selected.concat(b.add)),this.trigger("model",{nodes:b.dpc,parent:b.par}),b.par!==a.jstree.root?(this._node_changed(b.par),this.redraw()):this.redraw(!0),b.add.length&&this.trigger("changed",{action:"model",selected:this._data.core.selected}),d.call(this,!0)}};if(this.settings.core.worker&&window.Blob&&window.URL&&window.Worker)try{null===this._wrk&&(this._wrk=window.URL.createObjectURL(new window.Blob(["self.onmessage = "+h.toString()],{type:"text/javascript"}))),!this._data.core.working||e?(this._data.core.working=!0,f=new window.Worker(this._wrk),f.onmessage=a.proxy(function(a){i.call(this,a.data,!0);try{f.terminate(),f=null}catch(b){}this._data.core.worker_queue.length?this._append_json_data.apply(this,this._data.core.worker_queue.shift()):this._data.core.working=!1},this),g.par?f.postMessage(g):this._data.core.worker_queue.length?this._append_json_data.apply(this,this._data.core.worker_queue.shift()):this._data.core.working=!1):this._data.core.worker_queue.push([b,c,d,!0])}catch(j){i.call(this,h(g),!1),this._data.core.worker_queue.length?this._append_json_data.apply(this,this._data.core.worker_queue.shift()):this._data.core.working=!1}else i.call(this,h(g),!1)}},_parse_model_from_html:function(c,d,e){e=e?[].concat(e):[],d&&e.unshift(d);var f,g,h=this._model.data,i={id:!1,text:!1,icon:!0,parent:d,parents:e,children:[],children_d:[],data:null,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1},j,k,l;for(j in this._model.default_state)this._model.default_state.hasOwnProperty(j)&&(i.state[j]=this._model.default_state[j]);if(k=a.vakata.attributes(c,!0),a.each(k,function(b,c){return c=a.trim(c),c.length?(i.li_attr[b]=c,void("id"===b&&(i.id=c.toString()))):!0}),k=c.children("a").first(),k.length&&(k=a.vakata.attributes(k,!0),a.each(k,function(b,c){c=a.trim(c),c.length&&(i.a_attr[b]=c)})),k=c.children("a").first().length?c.children("a").first().clone():c.clone(),k.children("ins, i, ul").remove(),k=k.html(),k=a("
      ").html(k),i.text=this.settings.core.force_text?k.text():k.html(),k=c.data(),i.data=k?a.extend(!0,{},k):null,i.state.opened=c.hasClass("jstree-open"),i.state.selected=c.children("a").hasClass("jstree-clicked"),i.state.disabled=c.children("a").hasClass("jstree-disabled"),i.data&&i.data.jstree)for(j in i.data.jstree)i.data.jstree.hasOwnProperty(j)&&(i.state[j]=i.data.jstree[j]);k=c.children("a").children(".jstree-themeicon"),k.length&&(i.icon=k.hasClass("jstree-themeicon-hidden")?!1:k.attr("rel")),i.state.icon!==b&&(i.icon=i.state.icon),(i.icon===b||null===i.icon||""===i.icon)&&(i.icon=!0),k=c.children("ul").children("li");do l="j"+this._id+"_"+ ++this._cnt;while(h[l]);return i.id=i.li_attr.id?i.li_attr.id.toString():l,k.length?(k.each(a.proxy(function(b,c){f=this._parse_model_from_html(a(c),i.id,e),g=this._model.data[f],i.children.push(f),g.children_d.length&&(i.children_d=i.children_d.concat(g.children_d))},this)),i.children_d=i.children_d.concat(i.children)):c.hasClass("jstree-closed")&&(i.state.loaded=!1),i.li_attr["class"]&&(i.li_attr["class"]=i.li_attr["class"].replace("jstree-closed","").replace("jstree-open","")),i.a_attr["class"]&&(i.a_attr["class"]=i.a_attr["class"].replace("jstree-clicked","").replace("jstree-disabled","")),h[i.id]=i,i.state.selected&&this._data.core.selected.push(i.id),i.id},_parse_model_from_flat_json:function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=a.id.toString(),f=this._model.data,g=this._model.default_state,h,i,j,k,l={id:e,text:a.text||"",icon:a.icon!==b?a.icon:!0,parent:c,parents:d,children:a.children||[],children_d:a.children_d||[],data:a.data,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(h in g)g.hasOwnProperty(h)&&(l.state[h]=g[h]);if(a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(l.icon=a.data.jstree.icon),(l.icon===b||null===l.icon||""===l.icon)&&(l.icon=!0),a&&a.data&&(l.data=a.data,a.data.jstree))for(h in a.data.jstree)a.data.jstree.hasOwnProperty(h)&&(l.state[h]=a.data.jstree[h]);if(a&&"object"==typeof a.state)for(h in a.state)a.state.hasOwnProperty(h)&&(l.state[h]=a.state[h]);if(a&&"object"==typeof a.li_attr)for(h in a.li_attr)a.li_attr.hasOwnProperty(h)&&(l.li_attr[h]=a.li_attr[h]);if(l.li_attr.id||(l.li_attr.id=e),a&&"object"==typeof a.a_attr)for(h in a.a_attr)a.a_attr.hasOwnProperty(h)&&(l.a_attr[h]=a.a_attr[h]);for(a&&a.children&&a.children===!0&&(l.state.loaded=!1,l.children=[],l.children_d=[]),f[l.id]=l,h=0,i=l.children.length;i>h;h++)j=this._parse_model_from_flat_json(f[l.children[h]],l.id,d),k=f[j],l.children_d.push(j),k.children_d.length&&(l.children_d=l.children_d.concat(k.children_d));return delete a.data,delete a.children,f[l.id].original=a,l.state.selected&&this._data.core.selected.push(l.id),l.id},_parse_model_from_json:function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=!1,f,g,h,i,j=this._model.data,k=this._model.default_state,l;do e="j"+this._id+"_"+ ++this._cnt;while(j[e]);l={id:!1,text:"string"==typeof a?a:"",icon:"object"==typeof a&&a.icon!==b?a.icon:!0,parent:c,parents:d,children:[],children_d:[],data:null,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(f in k)k.hasOwnProperty(f)&&(l.state[f]=k[f]);if(a&&a.id&&(l.id=a.id.toString()),a&&a.text&&(l.text=a.text),a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(l.icon=a.data.jstree.icon),(l.icon===b||null===l.icon||""===l.icon)&&(l.icon=!0),a&&a.data&&(l.data=a.data,a.data.jstree))for(f in a.data.jstree)a.data.jstree.hasOwnProperty(f)&&(l.state[f]=a.data.jstree[f]);if(a&&"object"==typeof a.state)for(f in a.state)a.state.hasOwnProperty(f)&&(l.state[f]=a.state[f]);if(a&&"object"==typeof a.li_attr)for(f in a.li_attr)a.li_attr.hasOwnProperty(f)&&(l.li_attr[f]=a.li_attr[f]);if(l.li_attr.id&&!l.id&&(l.id=l.li_attr.id.toString()),l.id||(l.id=e),l.li_attr.id||(l.li_attr.id=l.id),a&&"object"==typeof a.a_attr)for(f in a.a_attr)a.a_attr.hasOwnProperty(f)&&(l.a_attr[f]=a.a_attr[f]);if(a&&a.children&&a.children.length){for(f=0,g=a.children.length;g>f;f++)h=this._parse_model_from_json(a.children[f],l.id,d),i=j[h],l.children.push(h),i.children_d.length&&(l.children_d=l.children_d.concat(i.children_d));l.children_d=l.children_d.concat(l.children)}return a&&a.children&&a.children===!0&&(l.state.loaded=!1,l.children=[],l.children_d=[]),delete a.data,delete a.children,l.original=a,j[l.id]=l,l.state.selected&&this._data.core.selected.push(l.id),l.id},_redraw:function(){var b=this._model.force_full_redraw?this._model.data[a.jstree.root].children.concat([]):this._model.changed.concat([]),c=i.createElement("UL"),d,e,f,g=this._data.core.focused;for(e=0,f=b.length;f>e;e++)d=this.redraw_node(b[e],!0,this._model.force_full_redraw),d&&this._model.force_full_redraw&&c.appendChild(d);this._model.force_full_redraw&&(c.className=this.get_container_ul()[0].className,c.setAttribute("role","group"),this.element.empty().append(c)),null!==g&&(d=this.get_node(g,!0),d&&d.length&&d.children(".jstree-anchor")[0]!==i.activeElement?d.children(".jstree-anchor").focus():this._data.core.focused=null),this._model.force_full_redraw=!1,this._model.changed=[],this.trigger("redraw",{nodes:b})},redraw:function(a){a&&(this._model.force_full_redraw=!0),this._redraw()},draw_children:function(b){var c=this.get_node(b),d=!1,e=!1,f=!1,g=i;if(!c)return!1;if(c.id===a.jstree.root)return this.redraw(!0);if(b=this.get_node(b,!0), -!b||!b.length)return!1;if(b.children(".jstree-children").remove(),b=b[0],c.children.length&&c.state.loaded){for(f=g.createElement("UL"),f.setAttribute("role","group"),f.className="jstree-children",d=0,e=c.children.length;e>d;d++)f.appendChild(this.redraw_node(c.children[d],!0,!0));b.appendChild(f)}},redraw_node:function(b,c,d,e){var f=this.get_node(b),g=!1,h=!1,j=!1,k=!1,l=!1,m=!1,n="",o=i,p=this._model.data,q=!1,r=!1,s=null,t=0,u=0,v=!1,w=!1;if(!f)return!1;if(f.id===a.jstree.root)return this.redraw(!0);if(c=c||0===f.children.length,b=i.querySelector?this.element[0].querySelector("#"+(-1!=="0123456789".indexOf(f.id[0])?"\\3"+f.id[0]+" "+f.id.substr(1).replace(a.jstree.idregex,"\\$&"):f.id.replace(a.jstree.idregex,"\\$&"))):i.getElementById(f.id))b=a(b),d||(g=b.parent().parent()[0],g===this.element[0]&&(g=null),h=b.index()),c||!f.children.length||b.children(".jstree-children").length||(c=!0),c||(j=b.children(".jstree-children")[0]),q=b.children(".jstree-anchor")[0]===i.activeElement,b.remove();else if(c=!0,!d){if(g=f.parent!==a.jstree.root?a("#"+f.parent.replace(a.jstree.idregex,"\\$&"),this.element)[0]:null,!(null===g||g&&p[f.parent].state.opened))return!1;h=a.inArray(f.id,null===g?p[a.jstree.root].children:p[f.parent].children)}b=this._data.core.node.cloneNode(!0),n="jstree-node ";for(k in f.li_attr)if(f.li_attr.hasOwnProperty(k)){if("id"===k)continue;"class"!==k?b.setAttribute(k,f.li_attr[k]):n+=f.li_attr[k]}for(f.a_attr.id||(f.a_attr.id=f.id+"_anchor"),b.setAttribute("aria-selected",!!f.state.selected),b.setAttribute("aria-level",f.parents.length),b.setAttribute("aria-labelledby",f.a_attr.id),f.state.disabled&&b.setAttribute("aria-disabled",!0),k=0,l=f.children.length;l>k;k++)if(!p[f.children[k]].state.hidden){v=!0;break}if(null!==f.parent&&p[f.parent]&&!f.state.hidden&&(k=a.inArray(f.id,p[f.parent].children),w=f.id,-1!==k))for(k++,l=p[f.parent].children.length;l>k;k++)if(p[p[f.parent].children[k]].state.hidden||(w=p[f.parent].children[k]),w!==f.id)break;f.state.hidden&&(n+=" jstree-hidden"),f.state.loading&&(n+=" jstree-loading"),f.state.loaded&&!v?n+=" jstree-leaf":(n+=f.state.opened&&f.state.loaded?" jstree-open":" jstree-closed",b.setAttribute("aria-expanded",f.state.opened&&f.state.loaded)),w===f.id&&(n+=" jstree-last"),b.id=f.id,b.className=n,n=(f.state.selected?" jstree-clicked":"")+(f.state.disabled?" jstree-disabled":"");for(l in f.a_attr)if(f.a_attr.hasOwnProperty(l)){if("href"===l&&"#"===f.a_attr[l])continue;"class"!==l?b.childNodes[1].setAttribute(l,f.a_attr[l]):n+=" "+f.a_attr[l]}if(n.length&&(b.childNodes[1].className="jstree-anchor "+n),(f.icon&&f.icon!==!0||f.icon===!1)&&(f.icon===!1?b.childNodes[1].childNodes[0].className+=" jstree-themeicon-hidden":-1===f.icon.indexOf("/")&&-1===f.icon.indexOf(".")?b.childNodes[1].childNodes[0].className+=" "+f.icon+" jstree-themeicon-custom":(b.childNodes[1].childNodes[0].style.backgroundImage='url("'+f.icon+'")',b.childNodes[1].childNodes[0].style.backgroundPosition="center center",b.childNodes[1].childNodes[0].style.backgroundSize="auto",b.childNodes[1].childNodes[0].className+=" jstree-themeicon-custom")),this.settings.core.force_text?b.childNodes[1].appendChild(o.createTextNode(f.text)):b.childNodes[1].innerHTML+=f.text,c&&f.children.length&&(f.state.opened||e)&&f.state.loaded){for(m=o.createElement("UL"),m.setAttribute("role","group"),m.className="jstree-children",k=0,l=f.children.length;l>k;k++)m.appendChild(this.redraw_node(f.children[k],c,!0));b.appendChild(m)}if(j&&b.appendChild(j),!d){for(g||(g=this.element[0]),k=0,l=g.childNodes.length;l>k;k++)if(g.childNodes[k]&&g.childNodes[k].className&&-1!==g.childNodes[k].className.indexOf("jstree-children")){s=g.childNodes[k];break}s||(s=o.createElement("UL"),s.setAttribute("role","group"),s.className="jstree-children",g.appendChild(s)),g=s,hf;f++)this.open_node(c[f],d,e);return!0}return c=this.get_node(c),c&&c.id!==a.jstree.root?(e=e===b?this.settings.core.animation:e,this.is_closed(c)?this.is_loaded(c)?(h=this.get_node(c,!0),i=this,h.length&&(e&&h.children(".jstree-children").length&&h.children(".jstree-children").stop(!0,!0),c.children.length&&!this._firstChild(h.children(".jstree-children")[0])&&this.draw_children(c),e?(this.trigger("before_open",{node:c}),h.children(".jstree-children").css("display","none").end().removeClass("jstree-closed").addClass("jstree-open").attr("aria-expanded",!0).children(".jstree-children").stop(!0,!0).slideDown(e,function(){this.style.display="",i.element&&i.trigger("after_open",{node:c})})):(this.trigger("before_open",{node:c}),h[0].className=h[0].className.replace("jstree-closed","jstree-open"),h[0].setAttribute("aria-expanded",!0))),c.state.opened=!0,d&&d.call(this,c,!0),h.length||this.trigger("before_open",{node:c}),this.trigger("open_node",{node:c}),e&&h.length||this.trigger("after_open",{node:c}),!0):this.is_loading(c)?setTimeout(a.proxy(function(){this.open_node(c,d,e)},this),500):void this.load_node(c,function(a,b){return b?this.open_node(a,d,e):d?d.call(this,a,!1):!1}):(d&&d.call(this,c,!1),!1)):!1},_open_to:function(b){if(b=this.get_node(b),!b||b.id===a.jstree.root)return!1;var c,d,e=b.parents;for(c=0,d=e.length;d>c;c+=1)c!==a.jstree.root&&this.open_node(e[c],!1,0);return a("#"+b.id.replace(a.jstree.idregex,"\\$&"),this.element)},close_node:function(c,d){var e,f,g,h;if(a.isArray(c)){for(c=c.slice(),e=0,f=c.length;f>e;e++)this.close_node(c[e],d);return!0}return c=this.get_node(c),c&&c.id!==a.jstree.root?this.is_closed(c)?!1:(d=d===b?this.settings.core.animation:d,g=this,h=this.get_node(c,!0),c.state.opened=!1,this.trigger("close_node",{node:c}),void(h.length?d?h.children(".jstree-children").attr("style","display:block !important").end().removeClass("jstree-open").addClass("jstree-closed").attr("aria-expanded",!1).children(".jstree-children").stop(!0,!0).slideUp(d,function(){this.style.display="",h.children(".jstree-children").remove(),g.element&&g.trigger("after_close",{node:c})}):(h[0].className=h[0].className.replace("jstree-open","jstree-closed"),h.attr("aria-expanded",!1).children(".jstree-children").remove(),this.trigger("after_close",{node:c})):this.trigger("after_close",{node:c}))):!1},toggle_node:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.toggle_node(b[c]);return!0}return this.is_closed(b)?this.open_node(b):this.is_open(b)?this.close_node(b):void 0},open_all:function(b,c,d){if(b||(b=a.jstree.root),b=this.get_node(b),!b)return!1;var e=b.id===a.jstree.root?this.get_container_ul():this.get_node(b,!0),f,g,h;if(!e.length){for(f=0,g=b.children_d.length;g>f;f++)this.is_closed(this._model.data[b.children_d[f]])&&(this._model.data[b.children_d[f]].state.opened=!0);return this.trigger("open_all",{node:b})}d=d||e,h=this,e=this.is_closed(b)?e.find(".jstree-closed").addBack():e.find(".jstree-closed"),e.each(function(){h.open_node(this,function(a,b){b&&this.is_parent(a)&&this.open_all(a,c,d)},c||0)}),0===d.find(".jstree-closed").length&&this.trigger("open_all",{node:this.get_node(d)})},close_all:function(b,c){if(b||(b=a.jstree.root),b=this.get_node(b),!b)return!1;var d=b.id===a.jstree.root?this.get_container_ul():this.get_node(b,!0),e=this,f,g;for(d.length&&(d=this.is_open(b)?d.find(".jstree-open").addBack():d.find(".jstree-open"),a(d.get().reverse()).each(function(){e.close_node(this,c||0)})),f=0,g=b.children_d.length;g>f;f++)this._model.data[b.children_d[f]].state.opened=!1;this.trigger("close_all",{node:b})},is_disabled:function(a){return a=this.get_node(a),a&&a.state&&a.state.disabled},enable_node:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.enable_node(b[c]);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(b.state.disabled=!1,this.get_node(b,!0).children(".jstree-anchor").removeClass("jstree-disabled").attr("aria-disabled",!1),void this.trigger("enable_node",{node:b})):!1},disable_node:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.disable_node(b[c]);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(b.state.disabled=!0,this.get_node(b,!0).children(".jstree-anchor").addClass("jstree-disabled").attr("aria-disabled",!0),void this.trigger("disable_node",{node:b})):!1},is_hidden:function(a){return a=this.get_node(a),a.state.hidden===!0},hide_node:function(b,c){var d,e;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.hide_node(b[d],!0);return c||this.redraw(),!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?void(b.state.hidden||(b.state.hidden=!0,this._node_changed(b.parent),c||this.redraw(),this.trigger("hide_node",{node:b}))):!1},show_node:function(b,c){var d,e;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.show_node(b[d],!0);return c||this.redraw(),!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?void(b.state.hidden&&(b.state.hidden=!1,this._node_changed(b.parent),c||this.redraw(),this.trigger("show_node",{node:b}))):!1},hide_all:function(b){var c,d=this._model.data,e=[];for(c in d)d.hasOwnProperty(c)&&c!==a.jstree.root&&!d[c].state.hidden&&(d[c].state.hidden=!0,e.push(c));return this._model.force_full_redraw=!0,b||this.redraw(),this.trigger("hide_all",{nodes:e}),e},show_all:function(b){var c,d=this._model.data,e=[];for(c in d)d.hasOwnProperty(c)&&c!==a.jstree.root&&d[c].state.hidden&&(d[c].state.hidden=!1,e.push(c));return this._model.force_full_redraw=!0,b||this.redraw(),this.trigger("show_all",{nodes:e}),e},activate_node:function(a,c){if(this.is_disabled(a))return!1;if(c&&"object"==typeof c||(c={}),this._data.core.last_clicked=this._data.core.last_clicked&&this._data.core.last_clicked.id!==b?this.get_node(this._data.core.last_clicked.id):null,this._data.core.last_clicked&&!this._data.core.last_clicked.state.selected&&(this._data.core.last_clicked=null),!this._data.core.last_clicked&&this._data.core.selected.length&&(this._data.core.last_clicked=this.get_node(this._data.core.selected[this._data.core.selected.length-1])),this.settings.core.multiple&&(c.metaKey||c.ctrlKey||c.shiftKey)&&(!c.shiftKey||this._data.core.last_clicked&&this.get_parent(a)&&this.get_parent(a)===this._data.core.last_clicked.parent))if(c.shiftKey){var d=this.get_node(a).id,e=this._data.core.last_clicked.id,f=this.get_node(this._data.core.last_clicked.parent).children,g=!1,h,i;for(h=0,i=f.length;i>h;h+=1)f[h]===d&&(g=!g),f[h]===e&&(g=!g),this.is_disabled(f[h])||!g&&f[h]!==d&&f[h]!==e?this.deselect_node(f[h],!0,c):this.is_hidden(f[h])||this.select_node(f[h],!0,!1,c);this.trigger("changed",{action:"select_node",node:this.get_node(a),selected:this._data.core.selected,event:c})}else this.is_selected(a)?this.deselect_node(a,!1,c):this.select_node(a,!1,!1,c);else!this.settings.core.multiple&&(c.metaKey||c.ctrlKey||c.shiftKey)&&this.is_selected(a)?this.deselect_node(a,!1,c):(this.deselect_all(!0),this.select_node(a,!1,!1,c),this._data.core.last_clicked=this.get_node(a));this.trigger("activate_node",{node:this.get_node(a),event:c})},hover_node:function(a){if(a=this.get_node(a,!0),!a||!a.length||a.children(".jstree-hovered").length)return!1;var b=this.element.find(".jstree-hovered"),c=this.element;b&&b.length&&this.dehover_node(b),a.children(".jstree-anchor").addClass("jstree-hovered"),this.trigger("hover_node",{node:this.get_node(a)}),setTimeout(function(){c.attr("aria-activedescendant",a[0].id)},0)},dehover_node:function(a){return a=this.get_node(a,!0),a&&a.length&&a.children(".jstree-hovered").length?(a.children(".jstree-anchor").removeClass("jstree-hovered"),void this.trigger("dehover_node",{node:this.get_node(a)})):!1},select_node:function(b,c,d,e){var f,g,h,i;if(a.isArray(b)){for(b=b.slice(),g=0,h=b.length;h>g;g++)this.select_node(b[g],c,d,e);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(f=this.get_node(b,!0),void(b.state.selected||(b.state.selected=!0,this._data.core.selected.push(b.id),d||(f=this._open_to(b)),f&&f.length&&f.attr("aria-selected",!0).children(".jstree-anchor").addClass("jstree-clicked"),this.trigger("select_node",{node:b,selected:this._data.core.selected,event:e}),c||this.trigger("changed",{action:"select_node",node:b,selected:this._data.core.selected,event:e})))):!1},deselect_node:function(b,c,d){var e,f,g;if(a.isArray(b)){for(b=b.slice(),e=0,f=b.length;f>e;e++)this.deselect_node(b[e],c,d);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(g=this.get_node(b,!0),void(b.state.selected&&(b.state.selected=!1,this._data.core.selected=a.vakata.array_remove_item(this._data.core.selected,b.id),g.length&&g.attr("aria-selected",!1).children(".jstree-anchor").removeClass("jstree-clicked"),this.trigger("deselect_node",{node:b,selected:this._data.core.selected,event:d}),c||this.trigger("changed",{action:"deselect_node",node:b,selected:this._data.core.selected,event:d})))):!1},select_all:function(b){var c=this._data.core.selected.concat([]),d,e;for(this._data.core.selected=this._model.data[a.jstree.root].children_d.concat(),d=0,e=this._data.core.selected.length;e>d;d++)this._model.data[this._data.core.selected[d]]&&(this._model.data[this._data.core.selected[d]].state.selected=!0);this.redraw(!0),this.trigger("select_all",{selected:this._data.core.selected}),b||this.trigger("changed",{action:"select_all",selected:this._data.core.selected,old_selection:c})},deselect_all:function(a){var b=this._data.core.selected.concat([]),c,d;for(c=0,d=this._data.core.selected.length;d>c;c++)this._model.data[this._data.core.selected[c]]&&(this._model.data[this._data.core.selected[c]].state.selected=!1);this._data.core.selected=[],this.element.find(".jstree-clicked").removeClass("jstree-clicked").parent().attr("aria-selected",!1),this.trigger("deselect_all",{selected:this._data.core.selected,node:b}),a||this.trigger("changed",{action:"deselect_all",selected:this._data.core.selected,old_selection:b})},is_selected:function(b){return b=this.get_node(b),b&&b.id!==a.jstree.root?b.state.selected:!1},get_selected:function(b){return b?a.map(this._data.core.selected,a.proxy(function(a){return this.get_node(a)},this)):this._data.core.selected.slice()},get_top_selected:function(b){var c=this.get_selected(!0),d={},e,f,g,h;for(e=0,f=c.length;f>e;e++)d[c[e].id]=c[e];for(e=0,f=c.length;f>e;e++)for(g=0,h=c[e].children_d.length;h>g;g++)d[c[e].children_d[g]]&&delete d[c[e].children_d[g]];c=[];for(e in d)d.hasOwnProperty(e)&&c.push(e);return b?a.map(c,a.proxy(function(a){return this.get_node(a)},this)):c},get_bottom_selected:function(b){var c=this.get_selected(!0),d=[],e,f;for(e=0,f=c.length;f>e;e++)c[e].children.length||d.push(c[e].id);return b?a.map(d,a.proxy(function(a){return this.get_node(a)},this)):d},get_state:function(){var b={core:{open:[],scroll:{left:this.element.scrollLeft(),top:this.element.scrollTop()},selected:[]}},c;for(c in this._model.data)this._model.data.hasOwnProperty(c)&&c!==a.jstree.root&&(this._model.data[c].state.opened&&b.core.open.push(c),this._model.data[c].state.selected&&b.core.selected.push(c));return b},set_state:function(c,d){if(c){if(c.core&&c.core.selected&&c.core.initial_selection===b&&(c.core.initial_selection=this._data.core.selected.concat([]).sort().join(",")),c.core){var e,f,g,h,i;if(c.core.open)return a.isArray(c.core.open)&&c.core.open.length?this._load_nodes(c.core.open,function(a){this.open_node(a,!1,0),delete c.core.open,this.set_state(c,d)}):(delete c.core.open,this.set_state(c,d)),!1;if(c.core.scroll)return c.core.scroll&&c.core.scroll.left!==b&&this.element.scrollLeft(c.core.scroll.left),c.core.scroll&&c.core.scroll.top!==b&&this.element.scrollTop(c.core.scroll.top),delete c.core.scroll,this.set_state(c,d),!1;if(c.core.selected)return h=this,(c.core.initial_selection===b||c.core.initial_selection===this._data.core.selected.concat([]).sort().join(","))&&(this.deselect_all(),a.each(c.core.selected,function(a,b){h.select_node(b,!1,!0)})),delete c.core.initial_selection,delete c.core.selected,this.set_state(c,d),!1;for(i in c)c.hasOwnProperty(i)&&"core"!==i&&-1===a.inArray(i,this.settings.plugins)&&delete c[i];if(a.isEmptyObject(c.core))return delete c.core,this.set_state(c,d),!1}return a.isEmptyObject(c)?(c=null,d&&d.call(this),this.trigger("set_state"),!1):!0}return!1},refresh:function(b,c){this._data.core.state=c===!0?{}:this.get_state(),c&&a.isFunction(c)&&(this._data.core.state=c.call(this,this._data.core.state)),this._cnt=0,this._model.data={},this._model.data[a.jstree.root]={id:a.jstree.root,parent:null,parents:[],children:[],children_d:[],state:{loaded:!1}},this._data.core.selected=[],this._data.core.last_clicked=null,this._data.core.focused=null;var d=this.get_container_ul()[0].className;b||(this.element.html(""),this.element.attr("aria-activedescendant","j"+this._id+"_loading")),this.load_node(a.jstree.root,function(b,c){c&&(this.get_container_ul()[0].className=d,this._firstChild(this.get_container_ul()[0])&&this.element.attr("aria-activedescendant",this._firstChild(this.get_container_ul()[0]).id),this.set_state(a.extend(!0,{},this._data.core.state),function(){this.trigger("refresh")})),this._data.core.state=null})},refresh_node:function(b){if(b=this.get_node(b),!b||b.id===a.jstree.root)return!1;var c=[],d=[],e=this._data.core.selected.concat([]);d.push(b.id),b.state.opened===!0&&c.push(b.id),this.get_node(b,!0).find(".jstree-open").each(function(){d.push(this.id),c.push(this.id)}),this._load_nodes(d,a.proxy(function(a){this.open_node(c,!1,0),this.select_node(e),this.trigger("refresh_node",{node:b,nodes:a})},this),!1,!0)},set_id:function(b,c){if(b=this.get_node(b),!b||b.id===a.jstree.root)return!1;var d,e,f=this._model.data,g=b.id;for(c=c.toString(),f[b.parent].children[a.inArray(b.id,f[b.parent].children)]=c,d=0,e=b.parents.length;e>d;d++)f[b.parents[d]].children_d[a.inArray(b.id,f[b.parents[d]].children_d)]=c;for(d=0,e=b.children.length;e>d;d++)f[b.children[d]].parent=c;for(d=0,e=b.children_d.length;e>d;d++)f[b.children_d[d]].parents[a.inArray(b.id,f[b.children_d[d]].parents)]=c;return d=a.inArray(b.id,this._data.core.selected),-1!==d&&(this._data.core.selected[d]=c),d=this.get_node(b.id,!0),d&&(d.attr("id",c),this.element.attr("aria-activedescendant")===b.id&&this.element.attr("aria-activedescendant",c)),delete f[b.id],b.id=c,b.li_attr.id=c,f[c]=b,this.trigger("set_id",{node:b,"new":b.id,old:g}),!0},get_text:function(b){return b=this.get_node(b),b&&b.id!==a.jstree.root?b.text:!1},set_text:function(b,c){var d,e;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.set_text(b[d],c);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(b.text=c,this.get_node(b,!0).length&&this.redraw_node(b.id),this.trigger("set_text",{obj:b,text:c}),!0):!1},get_json:function(b,c,d){if(b=this.get_node(b||a.jstree.root),!b)return!1;c&&c.flat&&!d&&(d=[]);var e={id:b.id,text:b.text,icon:this.get_icon(b),li_attr:a.extend(!0,{},b.li_attr),a_attr:a.extend(!0,{},b.a_attr),state:{},data:c&&c.no_data?!1:a.extend(!0,a.isArray(b.data)?[]:{},b.data)},f,g;if(c&&c.flat?e.parent=b.parent:e.children=[],c&&c.no_state)delete e.state;else for(f in b.state)b.state.hasOwnProperty(f)&&(e.state[f]=b.state[f]);if(c&&c.no_li_attr&&delete e.li_attr,c&&c.no_a_attr&&delete e.a_attr,c&&c.no_id&&(delete e.id,e.li_attr&&e.li_attr.id&&delete e.li_attr.id,e.a_attr&&e.a_attr.id&&delete e.a_attr.id),c&&c.flat&&b.id!==a.jstree.root&&d.push(e),!c||!c.no_children)for(f=0,g=b.children.length;g>f;f++)c&&c.flat?this.get_json(b.children[f],c,d):e.children.push(this.get_json(b.children[f],c));return c&&c.flat?d:b.id===a.jstree.root?e.children:e},create_node:function(c,d,e,f,g){if(null===c&&(c=a.jstree.root),c=this.get_node(c),!c)return!1;if(e=e===b?"last":e,!e.toString().match(/^(before|after)$/)&&!g&&!this.is_loaded(c))return this.load_node(c,function(){this.create_node(c,d,e,f,!0)});d||(d={text:this.get_string("New node")}),d="string"==typeof d?{text:d}:a.extend(!0,{},d),d.text===b&&(d.text=this.get_string("New node"));var h,i,j,k;switch(c.id===a.jstree.root&&("before"===e&&(e="first"),"after"===e&&(e="last")),e){case"before":h=this.get_node(c.parent),e=a.inArray(c.id,h.children),c=h;break;case"after":h=this.get_node(c.parent),e=a.inArray(c.id,h.children)+1,c=h;break;case"inside":case"first":e=0;break;case"last":e=c.children.length;break;default:e||(e=0)}if(e>c.children.length&&(e=c.children.length),d.id||(d.id=!0),!this.check("create_node",d,c,e))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(d.id===!0&&delete d.id,d=this._parse_model_from_json(d,c.id,c.parents.concat()),!d)return!1;for(h=this.get_node(d),i=[],i.push(d),i=i.concat(h.children_d),this.trigger("model",{nodes:i,parent:c.id}),c.children_d=c.children_d.concat(i),j=0,k=c.parents.length;k>j;j++)this._model.data[c.parents[j]].children_d=this._model.data[c.parents[j]].children_d.concat(i);for(d=h,h=[],j=0,k=c.children.length;k>j;j++)h[j>=e?j+1:j]=c.children[j];return h[e]=d.id,c.children=h,this.redraw_node(c,!0),this.trigger("create_node",{node:this.get_node(d),parent:c.id,position:e}),f&&f.call(this,this.get_node(d)),d.id},rename_node:function(b,c){var d,e,f;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.rename_node(b[d],c);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(f=b.text,this.check("rename_node",b,this.get_parent(b),c)?(this.set_text(b,c),this.trigger("rename_node",{node:b,text:c,old:f}),!0):(this.settings.core.error.call(this,this._data.core.last_error),!1)):!1},delete_node:function(b){var c,d,e,f,g,h,i,j,k,l,m,n;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.delete_node(b[c]);return!0}if(b=this.get_node(b),!b||b.id===a.jstree.root)return!1;if(e=this.get_node(b.parent),f=a.inArray(b.id,e.children),l=!1,!this.check("delete_node",b,e,f))return this.settings.core.error.call(this,this._data.core.last_error),!1;for(-1!==f&&(e.children=a.vakata.array_remove(e.children,f)),g=b.children_d.concat([]),g.push(b.id),h=0,i=b.parents.length;i>h;h++)this._model.data[b.parents[h]].children_d=a.vakata.array_filter(this._model.data[b.parents[h]].children_d,function(b){return-1===a.inArray(b,g)});for(j=0,k=g.length;k>j;j++)if(this._model.data[g[j]].state.selected){l=!0;break}for(l&&(this._data.core.selected=a.vakata.array_filter(this._data.core.selected,function(b){return-1===a.inArray(b,g)})),this.trigger("delete_node",{node:b,parent:e.id}),l&&this.trigger("changed",{action:"delete_node",node:b,selected:this._data.core.selected,parent:e.id}),j=0,k=g.length;k>j;j++)delete this._model.data[g[j]];return-1!==a.inArray(this._data.core.focused,g)&&(this._data.core.focused=null,m=this.element[0].scrollTop,n=this.element[0].scrollLeft,e.id===a.jstree.root?this._model.data[a.jstree.root].children[0]&&this.get_node(this._model.data[a.jstree.root].children[0],!0).children(".jstree-anchor").focus():this.get_node(e,!0).children(".jstree-anchor").focus(),this.element[0].scrollTop=m,this.element[0].scrollLeft=n),this.redraw_node(e,!0),!0},check:function(b,c,d,e,f){c=c&&c.id?c:this.get_node(c),d=d&&d.id?d:this.get_node(d);var g=b.match(/^move_node|copy_node|create_node$/i)?d:c,h=this.settings.core.check_callback;return"move_node"!==b&&"copy_node"!==b||f&&f.is_multi||c.id!==d.id&&("move_node"!==b||a.inArray(c.id,d.children)!==e)&&-1===a.inArray(d.id,c.children_d)?(g&&g.data&&(g=g.data),g&&g.functions&&(g.functions[b]===!1||g.functions[b]===!0)?(g.functions[b]===!1&&(this._data.core.last_error={error:"check",plugin:"core",id:"core_02",reason:"Node data prevents function: "+b,data:JSON.stringify({chk:b,pos:e,obj:c&&c.id?c.id:!1,par:d&&d.id?d.id:!1})}),g.functions[b]):h===!1||a.isFunction(h)&&h.call(this,b,c,d,e,f)===!1||h&&h[b]===!1?(this._data.core.last_error={error:"check",plugin:"core",id:"core_03",reason:"User config for core.check_callback prevents function: "+b,data:JSON.stringify({chk:b,pos:e,obj:c&&c.id?c.id:!1,par:d&&d.id?d.id:!1})},!1):!0):(this._data.core.last_error={error:"check",plugin:"core",id:"core_01",reason:"Moving parent inside child",data:JSON.stringify({chk:b,pos:e,obj:c&&c.id?c.id:!1,par:d&&d.id?d.id:!1})},!1)},last_error:function(){return this._data.core.last_error},move_node:function(c,d,e,f,g,h,i){var j,k,l,m,n,o,p,q,r,s,t,u,v,w;if(d=this.get_node(d),e=e===b?0:e,!d)return!1;if(!e.toString().match(/^(before|after)$/)&&!g&&!this.is_loaded(d))return this.load_node(d,function(){this.move_node(c,d,e,f,!0,!1,i)});if(a.isArray(c)){if(1!==c.length){for(j=0,k=c.length;k>j;j++)(r=this.move_node(c[j],d,e,f,g,!1,i))&&(d=r,e="after");return this.redraw(),!0}c=c[0]}if(c=c&&c.id?c:this.get_node(c),!c||c.id===a.jstree.root)return!1;if(l=(c.parent||a.jstree.root).toString(),n=e.toString().match(/^(before|after)$/)&&d.id!==a.jstree.root?this.get_node(d.parent):d,o=i?i:this._model.data[c.id]?this:a.jstree.reference(c.id),p=!o||!o._id||this._id!==o._id,m=o&&o._id&&l&&o._model.data[l]&&o._model.data[l].children?a.inArray(c.id,o._model.data[l].children):-1,o&&o._id&&(c=o._model.data[c.id]),p)return(r=this.copy_node(c,d,e,f,g,!1,i))?(o&&o.delete_node(c),r):!1;switch(d.id===a.jstree.root&&("before"===e&&(e="first"),"after"===e&&(e="last")),e){case"before":e=a.inArray(d.id,n.children);break;case"after":e=a.inArray(d.id,n.children)+1;break;case"inside":case"first":e=0;break;case"last":e=n.children.length;break;default:e||(e=0)}if(e>n.children.length&&(e=n.children.length),!this.check("move_node",c,n,e,{core:!0,origin:i,is_multi:o&&o._id&&o._id!==this._id,is_foreign:!o||!o._id}))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(c.parent===n.id){for(q=n.children.concat(),r=a.inArray(c.id,q),-1!==r&&(q=a.vakata.array_remove(q,r),e>r&&e--),r=[],s=0,t=q.length;t>s;s++)r[s>=e?s+1:s]=q[s];r[e]=c.id,n.children=r,this._node_changed(n.id),this.redraw(n.id===a.jstree.root)}else{for(r=c.children_d.concat(),r.push(c.id),s=0,t=c.parents.length;t>s;s++){for(q=[],w=o._model.data[c.parents[s]].children_d,u=0,v=w.length;v>u;u++)-1===a.inArray(w[u],r)&&q.push(w[u]);o._model.data[c.parents[s]].children_d=q}for(o._model.data[l].children=a.vakata.array_remove_item(o._model.data[l].children,c.id),s=0,t=n.parents.length;t>s;s++)this._model.data[n.parents[s]].children_d=this._model.data[n.parents[s]].children_d.concat(r);for(q=[],s=0,t=n.children.length;t>s;s++)q[s>=e?s+1:s]=n.children[s];for(q[e]=c.id,n.children=q,n.children_d.push(c.id),n.children_d=n.children_d.concat(c.children_d),c.parent=n.id,r=n.parents.concat(),r.unshift(n.id),w=c.parents.length,c.parents=r,r=r.concat(),s=0,t=c.children_d.length;t>s;s++)this._model.data[c.children_d[s]].parents=this._model.data[c.children_d[s]].parents.slice(0,-1*w),Array.prototype.push.apply(this._model.data[c.children_d[s]].parents,r);(l===a.jstree.root||n.id===a.jstree.root)&&(this._model.force_full_redraw=!0),this._model.force_full_redraw||(this._node_changed(l),this._node_changed(n.id)),h||this.redraw()}return f&&f.call(this,c,n,e),this.trigger("move_node",{node:c,parent:n.id,position:e,old_parent:l,old_position:m,is_multi:o&&o._id&&o._id!==this._id,is_foreign:!o||!o._id,old_instance:o,new_instance:this}),c.id},copy_node:function(c,d,e,f,g,h,i){var j,k,l,m,n,o,p,q,r,s,t;if(d=this.get_node(d),e=e===b?0:e,!d)return!1;if(!e.toString().match(/^(before|after)$/)&&!g&&!this.is_loaded(d))return this.load_node(d,function(){this.copy_node(c,d,e,f,!0,!1,i)});if(a.isArray(c)){if(1!==c.length){for(j=0,k=c.length;k>j;j++)(m=this.copy_node(c[j],d,e,f,g,!0,i))&&(d=m,e="after");return this.redraw(),!0}c=c[0]}if(c=c&&c.id?c:this.get_node(c),!c||c.id===a.jstree.root)return!1;switch(q=(c.parent||a.jstree.root).toString(),r=e.toString().match(/^(before|after)$/)&&d.id!==a.jstree.root?this.get_node(d.parent):d,s=i?i:this._model.data[c.id]?this:a.jstree.reference(c.id),t=!s||!s._id||this._id!==s._id,s&&s._id&&(c=s._model.data[c.id]),d.id===a.jstree.root&&("before"===e&&(e="first"),"after"===e&&(e="last")),e){case"before":e=a.inArray(d.id,r.children);break;case"after":e=a.inArray(d.id,r.children)+1;break;case"inside":case"first":e=0;break;case"last":e=r.children.length;break;default:e||(e=0)}if(e>r.children.length&&(e=r.children.length),!this.check("copy_node",c,r,e,{core:!0,origin:i,is_multi:s&&s._id&&s._id!==this._id,is_foreign:!s||!s._id}))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(p=s?s.get_json(c,{no_id:!0,no_data:!0,no_state:!0}):c,!p)return!1;if(p.id===!0&&delete p.id,p=this._parse_model_from_json(p,r.id,r.parents.concat()),!p)return!1;for(m=this.get_node(p),c&&c.state&&c.state.loaded===!1&&(m.state.loaded=!1),l=[],l.push(p),l=l.concat(m.children_d),this.trigger("model",{nodes:l,parent:r.id}),n=0,o=r.parents.length;o>n;n++)this._model.data[r.parents[n]].children_d=this._model.data[r.parents[n]].children_d.concat(l);for(l=[],n=0,o=r.children.length;o>n;n++)l[n>=e?n+1:n]=r.children[n];return l[e]=m.id,r.children=l,r.children_d.push(m.id),r.children_d=r.children_d.concat(m.children_d),r.id===a.jstree.root&&(this._model.force_full_redraw=!0),this._model.force_full_redraw||this._node_changed(r.id),h||this.redraw(r.id===a.jstree.root),f&&f.call(this,m,r,e),this.trigger("copy_node",{node:m,original:c,parent:r.id,position:e,old_parent:q,old_position:s&&s._id&&q&&s._model.data[q]&&s._model.data[q].children?a.inArray(c.id,s._model.data[q].children):-1,is_multi:s&&s._id&&s._id!==this._id,is_foreign:!s||!s._id,old_instance:s,new_instance:this}),m.id},cut:function(b){if(b||(b=this._data.core.selected.concat()),a.isArray(b)||(b=[b]),!b.length)return!1;var c=[],g,h,i;for(h=0,i=b.length;i>h;h++)g=this.get_node(b[h]),g&&g.id&&g.id!==a.jstree.root&&c.push(g);return c.length?(d=c,f=this,e="move_node",void this.trigger("cut",{node:b})):!1},copy:function(b){if(b||(b=this._data.core.selected.concat()),a.isArray(b)||(b=[b]),!b.length)return!1;var c=[],g,h,i;for(h=0,i=b.length;i>h;h++)g=this.get_node(b[h]),g&&g.id&&g.id!==a.jstree.root&&c.push(g);return c.length?(d=c,f=this,e="copy_node",void this.trigger("copy",{node:b})):!1},get_buffer:function(){return{mode:e,node:d,inst:f}},can_paste:function(){return e!==!1&&d!==!1},paste:function(a,b){return a=this.get_node(a),a&&e&&e.match(/^(copy_node|move_node)$/)&&d?(this[e](d,a,b,!1,!1,!1,f)&&this.trigger("paste",{parent:a.id,node:d,mode:e}),d=!1,e=!1,void(f=!1)):!1},clear_buffer:function(){d=!1,e=!1,f=!1,this.trigger("clear_buffer")},edit:function(b,c,d){var e,f,g,h,j,k,l,m,n,o=!1;return(b=this.get_node(b))?this.check("edit",b,this.get_parent(b))?(n=b,c="string"==typeof c?c:b.text,this.set_text(b,""),b=this._open_to(b),n.text=c,e=this._data.core.rtl,f=this.element.width(),this._data.core.focused=n.id,g=b.children(".jstree-anchor").focus(),h=a(""),j=c,k=a("
      ",{css:{position:"absolute",top:"-200px",left:e?"0px":"-1000px",visibility:"hidden"}}).appendTo("body"),l=a("",{value:j,"class":"jstree-rename-input",css:{padding:"0",border:"1px solid silver","box-sizing":"border-box",display:"inline-block",height:this._data.core.li_height+"px",lineHeight:this._data.core.li_height+"px",width:"150px"},blur:a.proxy(function(c){c.stopImmediatePropagation(),c.preventDefault();var e=h.children(".jstree-rename-input"),f=e.val(),i=this.settings.core.force_text,m;""===f&&(f=j),k.remove(),h.replaceWith(g),h.remove(),j=i?j:a("
      ").append(a.parseHTML(j)).html(),this.set_text(b,j),m=!!this.rename_node(b,i?a("
      ").text(f).text():a("
      ").append(a.parseHTML(f)).html()),m||this.set_text(b,j),this._data.core.focused=n.id,setTimeout(a.proxy(function(){var a=this.get_node(n.id,!0); -a.length&&(this._data.core.focused=n.id,a.children(".jstree-anchor").focus())},this),0),d&&d.call(this,n,m,o),l=null},this),keydown:function(a){var b=a.which;27===b&&(o=!0,this.value=j),(27===b||13===b||37===b||38===b||39===b||40===b||32===b)&&a.stopImmediatePropagation(),(27===b||13===b)&&(a.preventDefault(),this.blur())},click:function(a){a.stopImmediatePropagation()},mousedown:function(a){a.stopImmediatePropagation()},keyup:function(a){l.width(Math.min(k.text("pW"+this.value).width(),f))},keypress:function(a){return 13===a.which?!1:void 0}}),m={fontFamily:g.css("fontFamily")||"",fontSize:g.css("fontSize")||"",fontWeight:g.css("fontWeight")||"",fontStyle:g.css("fontStyle")||"",fontStretch:g.css("fontStretch")||"",fontVariant:g.css("fontVariant")||"",letterSpacing:g.css("letterSpacing")||"",wordSpacing:g.css("wordSpacing")||""},h.attr("class",g.attr("class")).append(g.contents().clone()).append(l),g.replaceWith(h),k.css(m),l.css(m).width(Math.min(k.text("pW"+l[0].value).width(),f))[0].select(),void a(i).one("mousedown.jstree touchstart.jstree dnd_start.vakata",function(b){l&&b.target!==l&&a(l).blur()})):(this.settings.core.error.call(this,this._data.core.last_error),!1):!1},set_theme:function(b,c){if(!b)return!1;if(c===!0){var d=this.settings.core.themes.dir;d||(d=a.jstree.path+"/themes"),c=d+"/"+b+"/style.css"}c&&-1===a.inArray(c,g)&&(a("head").append(''),g.push(c)),this._data.core.themes.name&&this.element.removeClass("jstree-"+this._data.core.themes.name),this._data.core.themes.name=b,this.element.addClass("jstree-"+b),this.element[this.settings.core.themes.responsive?"addClass":"removeClass"]("jstree-"+b+"-responsive"),this.trigger("set_theme",{theme:b})},get_theme:function(){return this._data.core.themes.name},set_theme_variant:function(a){this._data.core.themes.variant&&this.element.removeClass("jstree-"+this._data.core.themes.name+"-"+this._data.core.themes.variant),this._data.core.themes.variant=a,a&&this.element.addClass("jstree-"+this._data.core.themes.name+"-"+this._data.core.themes.variant)},get_theme_variant:function(){return this._data.core.themes.variant},show_stripes:function(){this._data.core.themes.stripes=!0,this.get_container_ul().addClass("jstree-striped"),this.trigger("show_stripes")},hide_stripes:function(){this._data.core.themes.stripes=!1,this.get_container_ul().removeClass("jstree-striped"),this.trigger("hide_stripes")},toggle_stripes:function(){this._data.core.themes.stripes?this.hide_stripes():this.show_stripes()},show_dots:function(){this._data.core.themes.dots=!0,this.get_container_ul().removeClass("jstree-no-dots"),this.trigger("show_dots")},hide_dots:function(){this._data.core.themes.dots=!1,this.get_container_ul().addClass("jstree-no-dots"),this.trigger("hide_dots")},toggle_dots:function(){this._data.core.themes.dots?this.hide_dots():this.show_dots()},show_icons:function(){this._data.core.themes.icons=!0,this.get_container_ul().removeClass("jstree-no-icons"),this.trigger("show_icons")},hide_icons:function(){this._data.core.themes.icons=!1,this.get_container_ul().addClass("jstree-no-icons"),this.trigger("hide_icons")},toggle_icons:function(){this._data.core.themes.icons?this.hide_icons():this.show_icons()},show_ellipsis:function(){this._data.core.themes.ellipsis=!0,this.get_container_ul().addClass("jstree-ellipsis"),this.trigger("show_ellipsis")},hide_ellipsis:function(){this._data.core.themes.ellipsis=!1,this.get_container_ul().removeClass("jstree-ellipsis"),this.trigger("hide_ellipsis")},toggle_ellipsis:function(){this._data.core.themes.ellipsis?this.hide_ellipsis():this.show_ellipsis()},set_icon:function(c,d){var e,f,g,h;if(a.isArray(c)){for(c=c.slice(),e=0,f=c.length;f>e;e++)this.set_icon(c[e],d);return!0}return c=this.get_node(c),c&&c.id!==a.jstree.root?(h=c.icon,c.icon=d===!0||null===d||d===b||""===d?!0:d,g=this.get_node(c,!0).children(".jstree-anchor").children(".jstree-themeicon"),d===!1?(g.removeClass("jstree-themeicon-custom "+h).css("background","").removeAttr("rel"),this.hide_icon(c)):d===!0||null===d||d===b||""===d?(g.removeClass("jstree-themeicon-custom "+h).css("background","").removeAttr("rel"),h===!1&&this.show_icon(c)):-1===d.indexOf("/")&&-1===d.indexOf(".")?(g.removeClass(h).css("background",""),g.addClass(d+" jstree-themeicon-custom").attr("rel",d),h===!1&&this.show_icon(c)):(g.removeClass(h).css("background",""),g.addClass("jstree-themeicon-custom").css("background","url('"+d+"') center center no-repeat").attr("rel",d),h===!1&&this.show_icon(c)),!0):!1},get_icon:function(b){return b=this.get_node(b),b&&b.id!==a.jstree.root?b.icon:!1},hide_icon:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.hide_icon(b[c]);return!0}return b=this.get_node(b),b&&b!==a.jstree.root?(b.icon=!1,this.get_node(b,!0).children(".jstree-anchor").children(".jstree-themeicon").addClass("jstree-themeicon-hidden"),!0):!1},show_icon:function(b){var c,d,e;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.show_icon(b[c]);return!0}return b=this.get_node(b),b&&b!==a.jstree.root?(e=this.get_node(b,!0),b.icon=e.length?e.children(".jstree-anchor").children(".jstree-themeicon").attr("rel"):!0,b.icon||(b.icon=!0),e.children(".jstree-anchor").children(".jstree-themeicon").removeClass("jstree-themeicon-hidden"),!0):!1}},a.vakata={},a.vakata.attributes=function(b,c){b=a(b)[0];var d=c?{}:[];return b&&b.attributes&&a.each(b.attributes,function(b,e){-1===a.inArray(e.name.toLowerCase(),["style","contenteditable","hasfocus","tabindex"])&&null!==e.value&&""!==a.trim(e.value)&&(c?d[e.name]=e.value:d.push(e.name))}),d},a.vakata.array_unique=function(a){var c=[],d,e,f,g={};for(d=0,f=a.length;f>d;d++)g[a[d]]===b&&(c.push(a[d]),g[a[d]]=!0);return c},a.vakata.array_remove=function(a,b){return a.splice(b,1),a},a.vakata.array_remove_item=function(b,c){var d=a.inArray(c,b);return-1!==d?a.vakata.array_remove(b,d):b},a.vakata.array_filter=function(a,b,c,d,e){if(a.filter)return a.filter(b,c);d=[];for(e in a)~~e+""==e+""&&e>=0&&b.call(c,a[e],+e,a)&&d.push(a[e]);return d},a.jstree.plugins.changed=function(a,b){var c=[];this.trigger=function(a,d){var e,f;if(d||(d={}),"changed"===a.replace(".jstree","")){d.changed={selected:[],deselected:[]};var g={};for(e=0,f=c.length;f>e;e++)g[c[e]]=1;for(e=0,f=d.selected.length;f>e;e++)g[d.selected[e]]?g[d.selected[e]]=2:d.changed.selected.push(d.selected[e]);for(e=0,f=c.length;f>e;e++)1===g[c[e]]&&d.changed.deselected.push(c[e]);c=d.selected.slice()}b.trigger.call(this,a,d)},this.refresh=function(a,d){return c=[],b.refresh.apply(this,arguments)}};var j=i.createElement("I");j.className="jstree-icon jstree-checkbox",j.setAttribute("role","presentation"),a.jstree.defaults.checkbox={visible:!0,three_state:!0,whole_node:!0,keep_selected_style:!0,cascade:"",tie_selection:!0,cascade_to_disabled:!0,cascade_to_hidden:!0},a.jstree.plugins.checkbox=function(c,d){this.bind=function(){d.bind.call(this),this._data.checkbox.uto=!1,this._data.checkbox.selected=[],this.settings.checkbox.three_state&&(this.settings.checkbox.cascade="up+down+undetermined"),this.element.on("init.jstree",a.proxy(function(){this._data.checkbox.visible=this.settings.checkbox.visible,this.settings.checkbox.keep_selected_style||this.element.addClass("jstree-checkbox-no-clicked"),this.settings.checkbox.tie_selection&&this.element.addClass("jstree-checkbox-selection")},this)).on("loading.jstree",a.proxy(function(){this[this._data.checkbox.visible?"show_checkboxes":"hide_checkboxes"]()},this)),-1!==this.settings.checkbox.cascade.indexOf("undetermined")&&this.element.on("changed.jstree uncheck_node.jstree check_node.jstree uncheck_all.jstree check_all.jstree move_node.jstree copy_node.jstree redraw.jstree open_node.jstree",a.proxy(function(){this._data.checkbox.uto&&clearTimeout(this._data.checkbox.uto),this._data.checkbox.uto=setTimeout(a.proxy(this._undetermined,this),50)},this)),this.settings.checkbox.tie_selection||this.element.on("model.jstree",a.proxy(function(a,b){var c=this._model.data,d=c[b.parent],e=b.nodes,f,g;for(f=0,g=e.length;g>f;f++)c[e[f]].state.checked=c[e[f]].state.checked||c[e[f]].original&&c[e[f]].original.state&&c[e[f]].original.state.checked,c[e[f]].state.checked&&this._data.checkbox.selected.push(e[f])},this)),(-1!==this.settings.checkbox.cascade.indexOf("up")||-1!==this.settings.checkbox.cascade.indexOf("down"))&&this.element.on("model.jstree",a.proxy(function(b,c){var d=this._model.data,e=d[c.parent],f=c.nodes,g=[],h,i,j,k,l,m,n=this.settings.checkbox.cascade,o=this.settings.checkbox.tie_selection;if(-1!==n.indexOf("down"))if(e.state[o?"selected":"checked"]){for(i=0,j=f.length;j>i;i++)d[f[i]].state[o?"selected":"checked"]=!0;this._data[o?"core":"checkbox"].selected=this._data[o?"core":"checkbox"].selected.concat(f)}else for(i=0,j=f.length;j>i;i++)if(d[f[i]].state[o?"selected":"checked"]){for(k=0,l=d[f[i]].children_d.length;l>k;k++)d[d[f[i]].children_d[k]].state[o?"selected":"checked"]=!0;this._data[o?"core":"checkbox"].selected=this._data[o?"core":"checkbox"].selected.concat(d[f[i]].children_d)}if(-1!==n.indexOf("up")){for(i=0,j=e.children_d.length;j>i;i++)d[e.children_d[i]].children.length||g.push(d[e.children_d[i]].parent);for(g=a.vakata.array_unique(g),k=0,l=g.length;l>k;k++){e=d[g[k]];while(e&&e.id!==a.jstree.root){for(h=0,i=0,j=e.children.length;j>i;i++)h+=d[e.children[i]].state[o?"selected":"checked"];if(h!==j)break;e.state[o?"selected":"checked"]=!0,this._data[o?"core":"checkbox"].selected.push(e.id),m=this.get_node(e,!0),m&&m.length&&m.attr("aria-selected",!0).children(".jstree-anchor").addClass(o?"jstree-clicked":"jstree-checked"),e=this.get_node(e.parent)}}}this._data[o?"core":"checkbox"].selected=a.vakata.array_unique(this._data[o?"core":"checkbox"].selected)},this)).on(this.settings.checkbox.tie_selection?"select_node.jstree":"check_node.jstree",a.proxy(function(b,c){var d=this,e=c.node,f=this._model.data,g=this.get_node(e.parent),h,i,j,k,l=this.settings.checkbox.cascade,m=this.settings.checkbox.tie_selection,n={},o=this._data[m?"core":"checkbox"].selected;for(h=0,i=o.length;i>h;h++)n[o[h]]=!0;if(-1!==l.indexOf("down")){var p=this._cascade_new_checked_state(e.id,!0),q=e.children_d.concat(e.id);for(h=0,i=q.length;i>h;h++)p.indexOf(q[h])>-1?n[q[h]]=!0:delete n[q[h]]}if(-1!==l.indexOf("up"))while(g&&g.id!==a.jstree.root){for(j=0,h=0,i=g.children.length;i>h;h++)j+=f[g.children[h]].state[m?"selected":"checked"];if(j!==i)break;g.state[m?"selected":"checked"]=!0,n[g.id]=!0,k=this.get_node(g,!0),k&&k.length&&k.attr("aria-selected",!0).children(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked"),g=this.get_node(g.parent)}o=[];for(h in n)n.hasOwnProperty(h)&&o.push(h);this._data[m?"core":"checkbox"].selected=o},this)).on(this.settings.checkbox.tie_selection?"deselect_all.jstree":"uncheck_all.jstree",a.proxy(function(b,c){var d=this.get_node(a.jstree.root),e=this._model.data,f,g,h;for(f=0,g=d.children_d.length;g>f;f++)h=e[d.children_d[f]],h&&h.original&&h.original.state&&h.original.state.undetermined&&(h.original.state.undetermined=!1)},this)).on(this.settings.checkbox.tie_selection?"deselect_node.jstree":"uncheck_node.jstree",a.proxy(function(a,b){var c=this,d=b.node,e=this.get_node(d,!0),f,g,h,i=this.settings.checkbox.cascade,j=this.settings.checkbox.tie_selection,k=this._data[j?"core":"checkbox"].selected,l={},m=[],n=d.children_d.concat(d.id);if(-1!==i.indexOf("down")){var o=this._cascade_new_checked_state(d.id,!1);k=k.filter(function(a){return-1===n.indexOf(a)||o.indexOf(a)>-1})}if(-1!==i.indexOf("up")&&-1===k.indexOf(d.id)){for(f=0,g=d.parents.length;g>f;f++)h=this._model.data[d.parents[f]],h.state[j?"selected":"checked"]=!1,h&&h.original&&h.original.state&&h.original.state.undetermined&&(h.original.state.undetermined=!1),h=this.get_node(d.parents[f],!0),h&&h.length&&h.attr("aria-selected",!1).children(".jstree-anchor").removeClass(j?"jstree-clicked":"jstree-checked");k=k.filter(function(a){return-1===d.parents.indexOf(a)})}this._data[j?"core":"checkbox"].selected=k},this)),-1!==this.settings.checkbox.cascade.indexOf("up")&&this.element.on("delete_node.jstree",a.proxy(function(b,c){var d=this.get_node(c.parent),e=this._model.data,f,g,h,i,j=this.settings.checkbox.tie_selection;while(d&&d.id!==a.jstree.root&&!d.state[j?"selected":"checked"]){for(h=0,f=0,g=d.children.length;g>f;f++)h+=e[d.children[f]].state[j?"selected":"checked"];if(!(g>0&&h===g))break;d.state[j?"selected":"checked"]=!0,this._data[j?"core":"checkbox"].selected.push(d.id),i=this.get_node(d,!0),i&&i.length&&i.attr("aria-selected",!0).children(".jstree-anchor").addClass(j?"jstree-clicked":"jstree-checked"),d=this.get_node(d.parent)}},this)).on("move_node.jstree",a.proxy(function(b,c){var d=c.is_multi,e=c.old_parent,f=this.get_node(c.parent),g=this._model.data,h,i,j,k,l,m=this.settings.checkbox.tie_selection;if(!d){h=this.get_node(e);while(h&&h.id!==a.jstree.root&&!h.state[m?"selected":"checked"]){for(i=0,j=0,k=h.children.length;k>j;j++)i+=g[h.children[j]].state[m?"selected":"checked"];if(!(k>0&&i===k))break;h.state[m?"selected":"checked"]=!0,this._data[m?"core":"checkbox"].selected.push(h.id),l=this.get_node(h,!0),l&&l.length&&l.attr("aria-selected",!0).children(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked"),h=this.get_node(h.parent)}}h=f;while(h&&h.id!==a.jstree.root){for(i=0,j=0,k=h.children.length;k>j;j++)i+=g[h.children[j]].state[m?"selected":"checked"];if(i===k)h.state[m?"selected":"checked"]||(h.state[m?"selected":"checked"]=!0,this._data[m?"core":"checkbox"].selected.push(h.id),l=this.get_node(h,!0),l&&l.length&&l.attr("aria-selected",!0).children(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked"));else{if(!h.state[m?"selected":"checked"])break;h.state[m?"selected":"checked"]=!1,this._data[m?"core":"checkbox"].selected=a.vakata.array_remove_item(this._data[m?"core":"checkbox"].selected,h.id),l=this.get_node(h,!0),l&&l.length&&l.attr("aria-selected",!1).children(".jstree-anchor").removeClass(m?"jstree-clicked":"jstree-checked")}h=this.get_node(h.parent)}},this))},this._undetermined=function(){if(null!==this.element){var c,d,e,f,g={},h=this._model.data,i=this.settings.checkbox.tie_selection,j=this._data[i?"core":"checkbox"].selected,k=[],l=this;for(c=0,d=j.length;d>c;c++)if(h[j[c]]&&h[j[c]].parents)for(e=0,f=h[j[c]].parents.length;f>e;e++){if(g[h[j[c]].parents[e]]!==b)break;h[j[c]].parents[e]!==a.jstree.root&&(g[h[j[c]].parents[e]]=!0,k.push(h[j[c]].parents[e]))}for(this.element.find(".jstree-closed").not(":has(.jstree-children)").each(function(){var i=l.get_node(this),j;if(i)if(i.state.loaded){for(c=0,d=i.children_d.length;d>c;c++)if(j=h[i.children_d[c]],!j.state.loaded&&j.original&&j.original.state&&j.original.state.undetermined&&j.original.state.undetermined===!0)for(g[j.id]===b&&j.id!==a.jstree.root&&(g[j.id]=!0,k.push(j.id)),e=0,f=j.parents.length;f>e;e++)g[j.parents[e]]===b&&j.parents[e]!==a.jstree.root&&(g[j.parents[e]]=!0,k.push(j.parents[e]))}else if(i.original&&i.original.state&&i.original.state.undetermined&&i.original.state.undetermined===!0)for(g[i.id]===b&&i.id!==a.jstree.root&&(g[i.id]=!0,k.push(i.id)),e=0,f=i.parents.length;f>e;e++)g[i.parents[e]]===b&&i.parents[e]!==a.jstree.root&&(g[i.parents[e]]=!0,k.push(i.parents[e]))}),this.element.find(".jstree-undetermined").removeClass("jstree-undetermined"),c=0,d=k.length;d>c;c++)h[k[c]].state[i?"selected":"checked"]||(j=this.get_node(k[c],!0),j&&j.length&&j.children(".jstree-anchor").children(".jstree-checkbox").addClass("jstree-undetermined"))}},this.redraw_node=function(b,c,e,f){if(b=d.redraw_node.apply(this,arguments)){var g,h,i=null,k=null;for(g=0,h=b.childNodes.length;h>g;g++)if(b.childNodes[g]&&b.childNodes[g].className&&-1!==b.childNodes[g].className.indexOf("jstree-anchor")){i=b.childNodes[g];break}i&&(!this.settings.checkbox.tie_selection&&this._model.data[b.id].state.checked&&(i.className+=" jstree-checked"),k=j.cloneNode(!1),this._model.data[b.id].state.checkbox_disabled&&(k.className+=" jstree-checkbox-disabled"),i.insertBefore(k,i.childNodes[0]))}return e||-1===this.settings.checkbox.cascade.indexOf("undetermined")||(this._data.checkbox.uto&&clearTimeout(this._data.checkbox.uto),this._data.checkbox.uto=setTimeout(a.proxy(this._undetermined,this),50)),b},this.show_checkboxes=function(){this._data.core.themes.checkboxes=!0,this.get_container_ul().removeClass("jstree-no-checkboxes")},this.hide_checkboxes=function(){this._data.core.themes.checkboxes=!1,this.get_container_ul().addClass("jstree-no-checkboxes")},this.toggle_checkboxes=function(){this._data.core.themes.checkboxes?this.hide_checkboxes():this.show_checkboxes()},this.is_undetermined=function(b){b=this.get_node(b);var c=this.settings.checkbox.cascade,d,e,f=this.settings.checkbox.tie_selection,g=this._data[f?"core":"checkbox"].selected,h=this._model.data;if(!b||b.state[f?"selected":"checked"]===!0||-1===c.indexOf("undetermined")||-1===c.indexOf("down")&&-1===c.indexOf("up"))return!1;if(!b.state.loaded&&b.original.state.undetermined===!0)return!0;for(d=0,e=b.children_d.length;e>d;d++)if(-1!==a.inArray(b.children_d[d],g)||!h[b.children_d[d]].state.loaded&&h[b.children_d[d]].original.state.undetermined)return!0;return!1},this.disable_checkbox=function(b){var c,d,e;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.disable_checkbox(b[c]);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(e=this.get_node(b,!0),void(b.state.checkbox_disabled||(b.state.checkbox_disabled=!0,e&&e.length&&e.children(".jstree-anchor").children(".jstree-checkbox").addClass("jstree-checkbox-disabled"),this.trigger("disable_checkbox",{node:b})))):!1},this.enable_checkbox=function(b){var c,d,e;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.enable_checkbox(b[c]);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(e=this.get_node(b,!0),void(b.state.checkbox_disabled&&(b.state.checkbox_disabled=!1,e&&e.length&&e.children(".jstree-anchor").children(".jstree-checkbox").removeClass("jstree-checkbox-disabled"),this.trigger("enable_checkbox",{node:b})))):!1},this.activate_node=function(b,c){return a(c.target).hasClass("jstree-checkbox-disabled")?!1:(this.settings.checkbox.tie_selection&&(this.settings.checkbox.whole_node||a(c.target).hasClass("jstree-checkbox"))&&(c.ctrlKey=!0),this.settings.checkbox.tie_selection||!this.settings.checkbox.whole_node&&!a(c.target).hasClass("jstree-checkbox")?d.activate_node.call(this,b,c):this.is_disabled(b)?!1:(this.is_checked(b)?this.uncheck_node(b,c):this.check_node(b,c),void this.trigger("activate_node",{node:this.get_node(b)})))},this._cascade_new_checked_state=function(a,b){var c=this,d=this.settings.checkbox.tie_selection,e=this._model.data[a],f=[],g=[],h,i,j;if(!this.settings.checkbox.cascade_to_disabled&&e.state.disabled||!this.settings.checkbox.cascade_to_hidden&&e.state.hidden)j=this.get_checked_descendants(a),e.state[d?"selected":"checked"]&&j.push(e.id),f=f.concat(j);else{if(e.children)for(h=0,i=e.children.length;i>h;h++){var k=e.children[h];j=c._cascade_new_checked_state(k,b),f=f.concat(j),j.indexOf(k)>-1&&g.push(k)}var l=c.get_node(e,!0),m=g.length>0&&g.lengthe;e++)this.check_node(b[e],c);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(d=this.get_node(b,!0),void(b.state.checked||(b.state.checked=!0,this._data.checkbox.selected.push(b.id),d&&d.length&&d.children(".jstree-anchor").addClass("jstree-checked"),this.trigger("check_node",{node:b,selected:this._data.checkbox.selected,event:c})))):!1},this.uncheck_node=function(b,c){if(this.settings.checkbox.tie_selection)return this.deselect_node(b,!1,c);var d,e,f;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.uncheck_node(b[d],c);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(f=this.get_node(b,!0),void(b.state.checked&&(b.state.checked=!1,this._data.checkbox.selected=a.vakata.array_remove_item(this._data.checkbox.selected,b.id),f.length&&f.children(".jstree-anchor").removeClass("jstree-checked"),this.trigger("uncheck_node",{node:b,selected:this._data.checkbox.selected,event:c})))):!1},this.check_all=function(){if(this.settings.checkbox.tie_selection)return this.select_all();var b=this._data.checkbox.selected.concat([]),c,d;for(this._data.checkbox.selected=this._model.data[a.jstree.root].children_d.concat(),c=0,d=this._data.checkbox.selected.length;d>c;c++)this._model.data[this._data.checkbox.selected[c]]&&(this._model.data[this._data.checkbox.selected[c]].state.checked=!0);this.redraw(!0),this.trigger("check_all",{selected:this._data.checkbox.selected})},this.uncheck_all=function(){if(this.settings.checkbox.tie_selection)return this.deselect_all();var a=this._data.checkbox.selected.concat([]),b,c;for(b=0,c=this._data.checkbox.selected.length;c>b;b++)this._model.data[this._data.checkbox.selected[b]]&&(this._model.data[this._data.checkbox.selected[b]].state.checked=!1);this._data.checkbox.selected=[],this.element.find(".jstree-checked").removeClass("jstree-checked"),this.trigger("uncheck_all",{selected:this._data.checkbox.selected,node:a})},this.is_checked=function(b){return this.settings.checkbox.tie_selection?this.is_selected(b):(b=this.get_node(b),b&&b.id!==a.jstree.root?b.state.checked:!1)},this.get_checked=function(b){return this.settings.checkbox.tie_selection?this.get_selected(b):b?a.map(this._data.checkbox.selected,a.proxy(function(a){return this.get_node(a)},this)):this._data.checkbox.selected},this.get_top_checked=function(b){if(this.settings.checkbox.tie_selection)return this.get_top_selected(b);var c=this.get_checked(!0),d={},e,f,g,h;for(e=0,f=c.length;f>e;e++)d[c[e].id]=c[e];for(e=0,f=c.length;f>e;e++)for(g=0,h=c[e].children_d.length;h>g;g++)d[c[e].children_d[g]]&&delete d[c[e].children_d[g]];c=[];for(e in d)d.hasOwnProperty(e)&&c.push(e);return b?a.map(c,a.proxy(function(a){return this.get_node(a)},this)):c},this.get_bottom_checked=function(b){if(this.settings.checkbox.tie_selection)return this.get_bottom_selected(b);var c=this.get_checked(!0),d=[],e,f;for(e=0,f=c.length;f>e;e++)c[e].children.length||d.push(c[e].id);return b?a.map(d,a.proxy(function(a){return this.get_node(a)},this)):d},this.load_node=function(b,c){var e,f,g,h,i,j;if(!a.isArray(b)&&!this.settings.checkbox.tie_selection&&(j=this.get_node(b),j&&j.state.loaded))for(e=0,f=j.children_d.length;f>e;e++)this._model.data[j.children_d[e]].state.checked&&(i=!0,this._data.checkbox.selected=a.vakata.array_remove_item(this._data.checkbox.selected,j.children_d[e]));return d.load_node.apply(this,arguments)},this.get_state=function(){var a=d.get_state.apply(this,arguments);return this.settings.checkbox.tie_selection?a:(a.checkbox=this._data.checkbox.selected.slice(),a)},this.set_state=function(b,c){var e=d.set_state.apply(this,arguments);if(e&&b.checkbox){if(!this.settings.checkbox.tie_selection){this.uncheck_all();var f=this;a.each(b.checkbox,function(a,b){f.check_node(b)})}return delete b.checkbox,this.set_state(b,c),!1}return e},this.refresh=function(a,b){return this.settings.checkbox.tie_selection||(this._data.checkbox.selected=[]),d.refresh.apply(this,arguments)}},a.jstree.defaults.conditionalselect=function(){return!0},a.jstree.plugins.conditionalselect=function(a,b){this.activate_node=function(a,c){return this.settings.conditionalselect.call(this,this.get_node(a),c)?b.activate_node.call(this,a,c):void 0}},a.jstree.defaults.contextmenu={select_node:!0,show_at_node:!0,items:function(b,c){return{create:{separator_before:!1,separator_after:!0,_disabled:!1,label:"Create",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.create_node(d,{},"last",function(a){try{c.edit(a)}catch(b){setTimeout(function(){c.edit(a)},0)}})}},rename:{separator_before:!1,separator_after:!1,_disabled:!1,label:"Rename",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.edit(d)}},remove:{separator_before:!1,icon:!1,separator_after:!1,_disabled:!1,label:"Delete",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.is_selected(d)?c.delete_node(c.get_selected()):c.delete_node(d)}},ccp:{separator_before:!0,icon:!1,separator_after:!1,label:"Edit",action:!1,submenu:{cut:{separator_before:!1,separator_after:!1,label:"Cut",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.is_selected(d)?c.cut(c.get_top_selected()):c.cut(d)}},copy:{separator_before:!1,icon:!1,separator_after:!1,label:"Copy",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.is_selected(d)?c.copy(c.get_top_selected()):c.copy(d)}},paste:{separator_before:!1,icon:!1,_disabled:function(b){return!a.jstree.reference(b.reference).can_paste()},separator_after:!1,label:"Paste",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.paste(d)}}}}}}},a.jstree.plugins.contextmenu=function(c,d){this.bind=function(){d.bind.call(this);var b=0,c=null,e,f;this.element.on("init.jstree loading.jstree ready.jstree",a.proxy(function(){this.get_container_ul().addClass("jstree-contextmenu")},this)).on("contextmenu.jstree",".jstree-anchor",a.proxy(function(a,d){"input"!==a.target.tagName.toLowerCase()&&(a.preventDefault(),b=a.ctrlKey?+new Date:0,(d||c)&&(b=+new Date+1e4),c&&clearTimeout(c),this.is_loading(a.currentTarget)||this.show_contextmenu(a.currentTarget,a.pageX,a.pageY,a))},this)).on("click.jstree",".jstree-anchor",a.proxy(function(c){this._data.contextmenu.visible&&(!b||+new Date-b>250)&&a.vakata.context.hide(),b=0},this)).on("touchstart.jstree",".jstree-anchor",function(b){b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(e=b.originalEvent.changedTouches[0].clientX,f=b.originalEvent.changedTouches[0].clientY,c=setTimeout(function(){a(b.currentTarget).trigger("contextmenu",!0)},750))}).on("touchmove.vakata.jstree",function(b){c&&b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(Math.abs(e-b.originalEvent.changedTouches[0].clientX)>10||Math.abs(f-b.originalEvent.changedTouches[0].clientY)>10)&&(clearTimeout(c),a.vakata.context.hide())}).on("touchend.vakata.jstree",function(a){c&&clearTimeout(c)}),a(i).on("context_hide.vakata.jstree",a.proxy(function(b,c){this._data.contextmenu.visible=!1,a(c.reference).removeClass("jstree-context")},this))},this.teardown=function(){this._data.contextmenu.visible&&a.vakata.context.hide(),d.teardown.call(this)},this.show_contextmenu=function(c,d,e,f){if(c=this.get_node(c),!c||c.id===a.jstree.root)return!1;var g=this.settings.contextmenu,h=this.get_node(c,!0),i=h.children(".jstree-anchor"),j=!1,k=!1;(g.show_at_node||d===b||e===b)&&(j=i.offset(),d=j.left,e=j.top+this._data.core.li_height),this.settings.contextmenu.select_node&&!this.is_selected(c)&&this.activate_node(c,f),k=g.items,a.isFunction(k)&&(k=k.call(this,c,a.proxy(function(a){this._show_contextmenu(c,d,e,a)},this))),a.isPlainObject(k)&&this._show_contextmenu(c,d,e,k)},this._show_contextmenu=function(b,c,d,e){var f=this.get_node(b,!0),g=f.children(".jstree-anchor");a(i).one("context_show.vakata.jstree",a.proxy(function(b,c){var d="jstree-contextmenu jstree-"+this.get_theme()+"-contextmenu";a(c.element).addClass(d),g.addClass("jstree-context")},this)),this._data.contextmenu.visible=!0,a.vakata.context.show(g,{x:c,y:d},e),this.trigger("show_contextmenu",{node:b,x:c,y:d})}},function(a){var b=!1,c={element:!1,reference:!1,position_x:0,position_y:0,items:[],html:"",is_visible:!1};a.vakata.context={settings:{hide_onmouseleave:0,icons:!0},_trigger:function(b){a(i).triggerHandler("context_"+b+".vakata",{reference:c.reference,element:c.element,position:{x:c.position_x,y:c.position_y}})},_execute:function(b){return b=c.items[b],b&&(!b._disabled||a.isFunction(b._disabled)&&!b._disabled({item:b,reference:c.reference,element:c.element}))&&b.action?b.action.call(null,{item:b,reference:c.reference,element:c.element,position:{x:c.position_x,y:c.position_y}}):!1},_parse:function(b,d){if(!b)return!1;d||(c.html="",c.items=[]);var e="",f=!1,g;return d&&(e+=""),d||(c.html=e,a.vakata.context._trigger("parse")),e.length>10?e:!1},_show_submenu:function(c){if(c=a(c),c.length&&c.children("ul").length){var d=c.children("ul"),e=c.offset().left,f=e+c.outerWidth(),g=c.offset().top,h=d.width(),i=d.height(),j=a(window).width()+a(window).scrollLeft(),k=a(window).height()+a(window).scrollTop();b?c[f-(h+10+c.outerWidth())<0?"addClass":"removeClass"]("vakata-context-left"):c[f+h>j&&e>j-f?"addClass":"removeClass"]("vakata-context-right"),g+i+10>k&&d.css("bottom","-1px"),c.hasClass("vakata-context-right")?h>e&&d.css("margin-right",e-h):h>j-f&&d.css("margin-left",j-f-h),d.show()}},show:function(d,e,f){var g,h,i,j,k,l,m,n,o=!0;switch(c.element&&c.element.length&&c.element.width(""),o){case!e&&!d:return!1;case!!e&&!!d:c.reference=d,c.position_x=e.x,c.position_y=e.y;break;case!e&&!!d:c.reference=d,g=d.offset(),c.position_x=g.left+d.outerHeight(),c.position_y=g.top;break;case!!e&&!d:c.position_x=e.x,c.position_y=e.y}d&&!f&&a(d).data("vakata_contextmenu")&&(f=a(d).data("vakata_contextmenu")),a.vakata.context._parse(f)&&c.element.html(c.html),c.items.length&&(c.element.appendTo("body"),h=c.element,i=c.position_x,j=c.position_y,k=h.width(),l=h.height(),m=a(window).width()+a(window).scrollLeft(),n=a(window).height()+a(window).scrollTop(),b&&(i-=h.outerWidth()-a(d).outerWidth(),im&&(i=m-(k+20)),j+l+20>n&&(j=n-(l+20)),c.element.css({left:i,top:j}).show().find("a").first().focus().parent().addClass("vakata-context-hover"),c.is_visible=!0,a.vakata.context._trigger("show"))},hide:function(){c.is_visible&&(c.element.hide().find("ul").hide().end().find(":focus").blur().end().detach(),c.is_visible=!1, -a.vakata.context._trigger("hide"))}},a(function(){b="rtl"===a("body").css("direction");var d=!1;c.element=a("
        "),c.element.on("mouseenter","li",function(b){b.stopImmediatePropagation(),a.contains(this,b.relatedTarget)||(d&&clearTimeout(d),c.element.find(".vakata-context-hover").removeClass("vakata-context-hover").end(),a(this).siblings().find("ul").hide().end().end().parentsUntil(".vakata-context","li").addBack().addClass("vakata-context-hover"),a.vakata.context._show_submenu(this))}).on("mouseleave","li",function(b){a.contains(this,b.relatedTarget)||a(this).find(".vakata-context-hover").addBack().removeClass("vakata-context-hover")}).on("mouseleave",function(b){a(this).find(".vakata-context-hover").removeClass("vakata-context-hover"),a.vakata.context.settings.hide_onmouseleave&&(d=setTimeout(function(b){return function(){a.vakata.context.hide()}}(this),a.vakata.context.settings.hide_onmouseleave))}).on("click","a",function(b){b.preventDefault(),a(this).blur().parent().hasClass("vakata-context-disabled")||a.vakata.context._execute(a(this).attr("rel"))===!1||a.vakata.context.hide()}).on("keydown","a",function(b){var d=null;switch(b.which){case 13:case 32:b.type="click",b.preventDefault(),a(b.currentTarget).trigger(b);break;case 37:c.is_visible&&(c.element.find(".vakata-context-hover").last().closest("li").first().find("ul").hide().find(".vakata-context-hover").removeClass("vakata-context-hover").end().end().children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 38:c.is_visible&&(d=c.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").prevAll("li:not(.vakata-context-separator)").first(),d.length||(d=c.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").last()),d.addClass("vakata-context-hover").children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 39:c.is_visible&&(c.element.find(".vakata-context-hover").last().children("ul").show().children("li:not(.vakata-context-separator)").removeClass("vakata-context-hover").first().addClass("vakata-context-hover").children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 40:c.is_visible&&(d=c.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").nextAll("li:not(.vakata-context-separator)").first(),d.length||(d=c.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").first()),d.addClass("vakata-context-hover").children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 27:a.vakata.context.hide(),b.preventDefault()}}).on("keydown",function(a){a.preventDefault();var b=c.element.find(".vakata-contextmenu-shortcut-"+a.which).parent();b.parent().not(".vakata-context-disabled")&&b.click()}),a(i).on("mousedown.vakata.jstree",function(b){c.is_visible&&c.element[0]!==b.target&&!a.contains(c.element[0],b.target)&&a.vakata.context.hide()}).on("context_show.vakata.jstree",function(a,d){c.element.find("li:has(ul)").children("a").addClass("vakata-context-parent"),b&&c.element.addClass("vakata-context-rtl").css("direction","rtl"),c.element.find("ul").hide().end()})})}(a),a.jstree.defaults.dnd={copy:!0,open_timeout:500,is_draggable:!0,check_while_dragging:!0,always_copy:!1,inside_pos:0,drag_selection:!0,touch:!0,large_drop_target:!1,large_drag_target:!1,use_html5:!1};var k,l;a.jstree.plugins.dnd=function(b,c){this.init=function(a,b){c.init.call(this,a,b),this.settings.dnd.use_html5=this.settings.dnd.use_html5&&"draggable"in i.createElement("span")},this.bind=function(){c.bind.call(this),this.element.on(this.settings.dnd.use_html5?"dragstart.jstree":"mousedown.jstree touchstart.jstree",this.settings.dnd.large_drag_target?".jstree-node":".jstree-anchor",a.proxy(function(b){if(this.settings.dnd.large_drag_target&&a(b.target).closest(".jstree-node")[0]!==b.currentTarget)return!0;if("touchstart"===b.type&&(!this.settings.dnd.touch||"selected"===this.settings.dnd.touch&&!a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").hasClass("jstree-clicked")))return!0;var c=this.get_node(b.target),d=this.is_selected(c)&&this.settings.dnd.drag_selection?this.get_top_selected().length:1,e=d>1?d+" "+this.get_string("nodes"):this.get_text(b.currentTarget);if(this.settings.core.force_text&&(e=a.vakata.html.escape(e)),c&&c.id&&c.id!==a.jstree.root&&(1===b.which||"touchstart"===b.type||"dragstart"===b.type)&&(this.settings.dnd.is_draggable===!0||a.isFunction(this.settings.dnd.is_draggable)&&this.settings.dnd.is_draggable.call(this,d>1?this.get_top_selected(!0):[c],b))){if(k={jstree:!0,origin:this,obj:this.get_node(c,!0),nodes:d>1?this.get_top_selected():[c.id]},l=b.currentTarget,!this.settings.dnd.use_html5)return this.element.trigger("mousedown.jstree"),a.vakata.dnd.start(b,k,'
        '+e+'
        ');a.vakata.dnd._trigger("start",b,{helper:a(),element:l,data:k})}},this)),this.settings.dnd.use_html5&&this.element.on("dragover.jstree",function(b){return b.preventDefault(),a.vakata.dnd._trigger("move",b,{helper:a(),element:l,data:k}),!1}).on("drop.jstree",a.proxy(function(b){return b.preventDefault(),a.vakata.dnd._trigger("stop",b,{helper:a(),element:l,data:k}),!1},this))},this.redraw_node=function(a,b,d,e){if(a=c.redraw_node.apply(this,arguments),a&&this.settings.dnd.use_html5)if(this.settings.dnd.large_drag_target)a.setAttribute("draggable",!0);else{var f,g,h=null;for(f=0,g=a.childNodes.length;g>f;f++)if(a.childNodes[f]&&a.childNodes[f].className&&-1!==a.childNodes[f].className.indexOf("jstree-anchor")){h=a.childNodes[f];break}h&&h.setAttribute("draggable",!0)}return a}},a(function(){var c=!1,d=!1,e=!1,f=!1,g=a('
         
        ').hide();a(i).on("dnd_start.vakata.jstree",function(a,b){c=!1,e=!1,b&&b.data&&b.data.jstree&&g.appendTo("body")}).on("dnd_move.vakata.jstree",function(h,i){var j=i.event.target!==e.target;if(f&&(!i.event||"dragover"!==i.event.type||j)&&clearTimeout(f),i&&i.data&&i.data.jstree&&(!i.event.target.id||"jstree-marker"!==i.event.target.id)){e=i.event;var k=a.jstree.reference(i.event.target),l=!1,m=!1,n=!1,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E;if(k&&k._data&&k._data.dnd)if(g.attr("class","jstree-"+k.get_theme()+(k.settings.core.themes.responsive?" jstree-dnd-responsive":"")),D=i.data.origin&&(i.data.origin.settings.dnd.always_copy||i.data.origin.settings.dnd.copy&&(i.event.metaKey||i.event.ctrlKey)),i.helper.children().attr("class","jstree-"+k.get_theme()+" jstree-"+k.get_theme()+"-"+k.get_theme_variant()+" "+(k.settings.core.themes.responsive?" jstree-dnd-responsive":"")).find(".jstree-copy").first()[D?"show":"hide"](),i.event.target!==k.element[0]&&i.event.target!==k.get_container_ul()[0]||0!==k.get_container_ul().children().length){if(l=k.settings.dnd.large_drop_target?a(i.event.target).closest(".jstree-node").children(".jstree-anchor"):a(i.event.target).closest(".jstree-anchor"),l&&l.length&&l.parent().is(".jstree-closed, .jstree-open, .jstree-leaf")&&(m=l.offset(),n=(i.event.pageY!==b?i.event.pageY:i.event.originalEvent.pageY)-m.top,r=l.outerHeight(),u=r/3>n?["b","i","a"]:n>r-r/3?["a","i","b"]:n>r/2?["i","a","b"]:["i","b","a"],a.each(u,function(b,e){switch(e){case"b":p=m.left-6,q=m.top,s=k.get_parent(l),t=l.parent().index();break;case"i":B=k.settings.dnd.inside_pos,C=k.get_node(l.parent()),p=m.left-2,q=m.top+r/2+1,s=C.id,t="first"===B?0:"last"===B?C.children.length:Math.min(B,C.children.length);break;case"a":p=m.left-6,q=m.top+r,s=k.get_parent(l),t=l.parent().index()+1}for(v=!0,w=0,x=i.data.nodes.length;x>w;w++)if(y=i.data.origin&&(i.data.origin.settings.dnd.always_copy||i.data.origin.settings.dnd.copy&&(i.event.metaKey||i.event.ctrlKey))?"copy_node":"move_node",z=t,"move_node"===y&&"a"===e&&i.data.origin&&i.data.origin===k&&s===k.get_parent(i.data.nodes[w])&&(A=k.get_node(s),z>a.inArray(i.data.nodes[w],A.children)&&(z-=1)),v=v&&(k&&k.settings&&k.settings.dnd&&k.settings.dnd.check_while_dragging===!1||k.check(y,i.data.origin&&i.data.origin!==k?i.data.origin.get_node(i.data.nodes[w]):i.data.nodes[w],s,z,{dnd:!0,ref:k.get_node(l.parent()),pos:e,origin:i.data.origin,is_multi:i.data.origin&&i.data.origin!==k,is_foreign:!i.data.origin})),!v){k&&k.last_error&&(d=k.last_error());break}return"i"===e&&l.parent().is(".jstree-closed")&&k.settings.dnd.open_timeout&&(!i.event||"dragover"!==i.event.type||j)&&(f&&clearTimeout(f),f=setTimeout(function(a,b){return function(){a.open_node(b)}}(k,l),k.settings.dnd.open_timeout)),v?(E=k.get_node(s,!0),E.hasClass(".jstree-dnd-parent")||(a(".jstree-dnd-parent").removeClass("jstree-dnd-parent"),E.addClass("jstree-dnd-parent")),c={ins:k,par:s,pos:"i"!==e||"last"!==B||0!==t||k.is_loaded(C)?t:"last"},g.css({left:p+"px",top:q+"px"}).show(),i.helper.find(".jstree-icon").first().removeClass("jstree-er").addClass("jstree-ok"),i.event.originalEvent&&i.event.originalEvent.dataTransfer&&(i.event.originalEvent.dataTransfer.dropEffect=D?"copy":"move"),d={},u=!0,!1):void 0}),u===!0))return}else{for(v=!0,w=0,x=i.data.nodes.length;x>w;w++)if(v=v&&k.check(i.data.origin&&(i.data.origin.settings.dnd.always_copy||i.data.origin.settings.dnd.copy&&(i.event.metaKey||i.event.ctrlKey))?"copy_node":"move_node",i.data.origin&&i.data.origin!==k?i.data.origin.get_node(i.data.nodes[w]):i.data.nodes[w],a.jstree.root,"last",{dnd:!0,ref:k.get_node(a.jstree.root),pos:"i",origin:i.data.origin,is_multi:i.data.origin&&i.data.origin!==k,is_foreign:!i.data.origin}),!v)break;if(v)return c={ins:k,par:a.jstree.root,pos:"last"},g.hide(),i.helper.find(".jstree-icon").first().removeClass("jstree-er").addClass("jstree-ok"),void(i.event.originalEvent&&i.event.originalEvent.dataTransfer&&(i.event.originalEvent.dataTransfer.dropEffect=D?"copy":"move"))}a(".jstree-dnd-parent").removeClass("jstree-dnd-parent"),c=!1,i.helper.find(".jstree-icon").removeClass("jstree-ok").addClass("jstree-er"),i.event.originalEvent&&i.event.originalEvent.dataTransfer&&(i.event.originalEvent.dataTransfer.dropEffect="none"),g.hide()}}).on("dnd_scroll.vakata.jstree",function(a,b){b&&b.data&&b.data.jstree&&(g.hide(),c=!1,e=!1,b.helper.find(".jstree-icon").first().removeClass("jstree-ok").addClass("jstree-er"))}).on("dnd_stop.vakata.jstree",function(b,h){if(a(".jstree-dnd-parent").removeClass("jstree-dnd-parent"),f&&clearTimeout(f),h&&h.data&&h.data.jstree){g.hide().detach();var i,j,k=[];if(c){for(i=0,j=h.data.nodes.length;j>i;i++)k[i]=h.data.origin?h.data.origin.get_node(h.data.nodes[i]):h.data.nodes[i];c.ins[h.data.origin&&(h.data.origin.settings.dnd.always_copy||h.data.origin.settings.dnd.copy&&(h.event.metaKey||h.event.ctrlKey))?"copy_node":"move_node"](k,c.par,c.pos,!1,!1,!1,h.data.origin)}else i=a(h.event.target).closest(".jstree"),i.length&&d&&d.error&&"check"===d.error&&(i=i.jstree(!0),i&&i.settings.core.error.call(this,d));e=!1,c=!1}}).on("keyup.jstree keydown.jstree",function(b,h){h=a.vakata.dnd._get(),h&&h.data&&h.data.jstree&&("keyup"===b.type&&27===b.which?(f&&clearTimeout(f),c=!1,d=!1,e=!1,f=!1,g.hide().detach(),a.vakata.dnd._clean()):(h.helper.find(".jstree-copy").first()[h.data.origin&&(h.data.origin.settings.dnd.always_copy||h.data.origin.settings.dnd.copy&&(b.metaKey||b.ctrlKey))?"show":"hide"](),e&&(e.metaKey=b.metaKey,e.ctrlKey=b.ctrlKey,a.vakata.dnd._trigger("move",e))))})}),function(a){a.vakata.html={div:a("
        "),escape:function(b){return a.vakata.html.div.text(b).html()},strip:function(b){return a.vakata.html.div.empty().append(a.parseHTML(b)).text()}};var c={element:!1,target:!1,is_down:!1,is_drag:!1,helper:!1,helper_w:0,data:!1,init_x:0,init_y:0,scroll_l:0,scroll_t:0,scroll_e:!1,scroll_i:!1,is_touch:!1};a.vakata.dnd={settings:{scroll_speed:10,scroll_proximity:20,helper_left:5,helper_top:10,threshold:5,threshold_touch:10},_trigger:function(c,d,e){e===b&&(e=a.vakata.dnd._get()),e.event=d,a(i).triggerHandler("dnd_"+c+".vakata",e)},_get:function(){return{data:c.data,element:c.element,helper:c.helper}},_clean:function(){c.helper&&c.helper.remove(),c.scroll_i&&(clearInterval(c.scroll_i),c.scroll_i=!1),c={element:!1,target:!1,is_down:!1,is_drag:!1,helper:!1,helper_w:0,data:!1,init_x:0,init_y:0,scroll_l:0,scroll_t:0,scroll_e:!1,scroll_i:!1,is_touch:!1},a(i).off("mousemove.vakata.jstree touchmove.vakata.jstree",a.vakata.dnd.drag),a(i).off("mouseup.vakata.jstree touchend.vakata.jstree",a.vakata.dnd.stop)},_scroll:function(b){if(!c.scroll_e||!c.scroll_l&&!c.scroll_t)return c.scroll_i&&(clearInterval(c.scroll_i),c.scroll_i=!1),!1;if(!c.scroll_i)return c.scroll_i=setInterval(a.vakata.dnd._scroll,100),!1;if(b===!0)return!1;var d=c.scroll_e.scrollTop(),e=c.scroll_e.scrollLeft();c.scroll_e.scrollTop(d+c.scroll_t*a.vakata.dnd.settings.scroll_speed),c.scroll_e.scrollLeft(e+c.scroll_l*a.vakata.dnd.settings.scroll_speed),(d!==c.scroll_e.scrollTop()||e!==c.scroll_e.scrollLeft())&&a.vakata.dnd._trigger("scroll",c.scroll_e)},start:function(b,d,e){"touchstart"===b.type&&b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(b.pageX=b.originalEvent.changedTouches[0].pageX,b.pageY=b.originalEvent.changedTouches[0].pageY,b.target=i.elementFromPoint(b.originalEvent.changedTouches[0].pageX-window.pageXOffset,b.originalEvent.changedTouches[0].pageY-window.pageYOffset)),c.is_drag&&a.vakata.dnd.stop({});try{b.currentTarget.unselectable="on",b.currentTarget.onselectstart=function(){return!1},b.currentTarget.style&&(b.currentTarget.style.touchAction="none",b.currentTarget.style.msTouchAction="none",b.currentTarget.style.MozUserSelect="none")}catch(f){}return c.init_x=b.pageX,c.init_y=b.pageY,c.data=d,c.is_down=!0,c.element=b.currentTarget,c.target=b.target,c.is_touch="touchstart"===b.type,e!==!1&&(c.helper=a("
        ").html(e).css({display:"block",margin:"0",padding:"0",position:"absolute",top:"-2000px",lineHeight:"16px",zIndex:"10000"})),a(i).on("mousemove.vakata.jstree touchmove.vakata.jstree",a.vakata.dnd.drag),a(i).on("mouseup.vakata.jstree touchend.vakata.jstree",a.vakata.dnd.stop),!1},drag:function(b){if("touchmove"===b.type&&b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(b.pageX=b.originalEvent.changedTouches[0].pageX,b.pageY=b.originalEvent.changedTouches[0].pageY,b.target=i.elementFromPoint(b.originalEvent.changedTouches[0].pageX-window.pageXOffset,b.originalEvent.changedTouches[0].pageY-window.pageYOffset)),c.is_down){if(!c.is_drag){if(!(Math.abs(b.pageX-c.init_x)>(c.is_touch?a.vakata.dnd.settings.threshold_touch:a.vakata.dnd.settings.threshold)||Math.abs(b.pageY-c.init_y)>(c.is_touch?a.vakata.dnd.settings.threshold_touch:a.vakata.dnd.settings.threshold)))return;c.helper&&(c.helper.appendTo("body"),c.helper_w=c.helper.outerWidth()),c.is_drag=!0,a(c.target).one("click.vakata",!1),a.vakata.dnd._trigger("start",b)}var d=!1,e=!1,f=!1,g=!1,h=!1,j=!1,k=!1,l=!1,m=!1,n=!1;return c.scroll_t=0,c.scroll_l=0,c.scroll_e=!1,a(a(b.target).parentsUntil("body").addBack().get().reverse()).filter(function(){return/^auto|scroll$/.test(a(this).css("overflow"))&&(this.scrollHeight>this.offsetHeight||this.scrollWidth>this.offsetWidth)}).each(function(){var d=a(this),e=d.offset();return this.scrollHeight>this.offsetHeight&&(e.top+d.height()-b.pageYthis.offsetWidth&&(e.left+d.width()-b.pageXg&&b.pageY-kg&&g-(b.pageY-k)j&&b.pageX-lj&&j-(b.pageX-l)f&&(m=f-50),h&&n+c.helper_w>h&&(n=h-(c.helper_w+2)),c.helper.css({left:n+"px",top:m+"px"})),a.vakata.dnd._trigger("move",b),!1}},stop:function(b){if("touchend"===b.type&&b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(b.pageX=b.originalEvent.changedTouches[0].pageX,b.pageY=b.originalEvent.changedTouches[0].pageY,b.target=i.elementFromPoint(b.originalEvent.changedTouches[0].pageX-window.pageXOffset,b.originalEvent.changedTouches[0].pageY-window.pageYOffset)),c.is_drag)b.target!==c.target&&a(c.target).off("click.vakata"),a.vakata.dnd._trigger("stop",b);else if("touchend"===b.type&&b.target===c.target){var d=setTimeout(function(){a(b.target).click()},100);a(b.target).one("click",function(){d&&clearTimeout(d)})}return a.vakata.dnd._clean(),!1}}}(a),a.jstree.defaults.massload=null,a.jstree.plugins.massload=function(b,c){this.init=function(a,b){this._data.massload={},c.init.call(this,a,b)},this._load_nodes=function(b,d,e,f){var g=this.settings.massload,h=JSON.stringify(b),i=[],j=this._model.data,k,l,m;if(!e){for(k=0,l=b.length;l>k;k++)(!j[b[k]]||!j[b[k]].state.loaded&&!j[b[k]].state.failed||f)&&(i.push(b[k]),m=this.get_node(b[k],!0),m&&m.length&&m.addClass("jstree-loading").attr("aria-busy",!0));if(this._data.massload={},i.length){if(a.isFunction(g))return g.call(this,i,a.proxy(function(a){var g,h;if(a)for(g in a)a.hasOwnProperty(g)&&(this._data.massload[g]=a[g]);for(g=0,h=b.length;h>g;g++)m=this.get_node(b[g],!0),m&&m.length&&m.removeClass("jstree-loading").attr("aria-busy",!1);c._load_nodes.call(this,b,d,e,f)},this));if("object"==typeof g&&g&&g.url)return g=a.extend(!0,{},g),a.isFunction(g.url)&&(g.url=g.url.call(this,i)),a.isFunction(g.data)&&(g.data=g.data.call(this,i)),a.ajax(g).done(a.proxy(function(a,g,h){var i,j;if(a)for(i in a)a.hasOwnProperty(i)&&(this._data.massload[i]=a[i]);for(i=0,j=b.length;j>i;i++)m=this.get_node(b[i],!0),m&&m.length&&m.removeClass("jstree-loading").attr("aria-busy",!1);c._load_nodes.call(this,b,d,e,f)},this)).fail(a.proxy(function(a){c._load_nodes.call(this,b,d,e,f)},this))}}return c._load_nodes.call(this,b,d,e,f)},this._load_node=function(b,d){var e=this._data.massload[b.id],f=null,g;return e?(f=this["string"==typeof e?"_append_html_data":"_append_json_data"](b,"string"==typeof e?a(a.parseHTML(e)).filter(function(){return 3!==this.nodeType}):e,function(a){d.call(this,a)}),g=this.get_node(b.id,!0),g&&g.length&&g.removeClass("jstree-loading").attr("aria-busy",!1),delete this._data.massload[b.id],f):c._load_node.call(this,b,d)}},a.jstree.defaults.search={ajax:!1,fuzzy:!1,case_sensitive:!1,show_only_matches:!1,show_only_matches_children:!1,close_opened_onclear:!0,search_leaves_only:!1,search_callback:!1},a.jstree.plugins.search=function(c,d){this.bind=function(){d.bind.call(this),this._data.search.str="",this._data.search.dom=a(),this._data.search.res=[],this._data.search.opn=[],this._data.search.som=!1,this._data.search.smc=!1,this._data.search.hdn=[],this.element.on("search.jstree",a.proxy(function(b,c){if(this._data.search.som&&c.res.length){var d=this._model.data,e,f,g=[],h,i;for(e=0,f=c.res.length;f>e;e++)if(d[c.res[e]]&&!d[c.res[e]].state.hidden&&(g.push(c.res[e]),g=g.concat(d[c.res[e]].parents),this._data.search.smc))for(h=0,i=d[c.res[e]].children_d.length;i>h;h++)d[d[c.res[e]].children_d[h]]&&!d[d[c.res[e]].children_d[h]].state.hidden&&g.push(d[c.res[e]].children_d[h]);g=a.vakata.array_remove_item(a.vakata.array_unique(g),a.jstree.root),this._data.search.hdn=this.hide_all(!0),this.show_node(g,!0),this.redraw(!0)}},this)).on("clear_search.jstree",a.proxy(function(a,b){this._data.search.som&&b.res.length&&(this.show_node(this._data.search.hdn,!0),this.redraw(!0))},this))},this.search=function(c,d,e,f,g,h){if(c===!1||""===a.trim(c.toString()))return this.clear_search();f=this.get_node(f),f=f&&f.id?f.id:null,c=c.toString();var i=this.settings.search,j=i.ajax?i.ajax:!1,k=this._model.data,l=null,m=[],n=[],o,p;if(this._data.search.res.length&&!g&&this.clear_search(),e===b&&(e=i.show_only_matches),h===b&&(h=i.show_only_matches_children),!d&&j!==!1)return a.isFunction(j)?j.call(this,c,a.proxy(function(b){b&&b.d&&(b=b.d),this._load_nodes(a.isArray(b)?a.vakata.array_unique(b):[],function(){this.search(c,!0,e,f,g,h)})},this),f):(j=a.extend({},j),j.data||(j.data={}),j.data.str=c,f&&(j.data.inside=f),this._data.search.lastRequest&&this._data.search.lastRequest.abort(),this._data.search.lastRequest=a.ajax(j).fail(a.proxy(function(){this._data.core.last_error={error:"ajax",plugin:"search",id:"search_01",reason:"Could not load search parents",data:JSON.stringify(j)},this.settings.core.error.call(this,this._data.core.last_error)},this)).done(a.proxy(function(b){b&&b.d&&(b=b.d),this._load_nodes(a.isArray(b)?a.vakata.array_unique(b):[],function(){this.search(c,!0,e,f,g,h)})},this)),this._data.search.lastRequest);if(g||(this._data.search.str=c,this._data.search.dom=a(),this._data.search.res=[],this._data.search.opn=[],this._data.search.som=e,this._data.search.smc=h),l=new a.vakata.search(c,!0,{caseSensitive:i.case_sensitive,fuzzy:i.fuzzy}),a.each(k[f?f:a.jstree.root].children_d,function(a,b){var d=k[b];d.text&&!d.state.hidden&&(!i.search_leaves_only||d.state.loaded&&0===d.children.length)&&(i.search_callback&&i.search_callback.call(this,c,d)||!i.search_callback&&l.search(d.text).isMatch)&&(m.push(b),n=n.concat(d.parents))}),m.length){for(n=a.vakata.array_unique(n),o=0,p=n.length;p>o;o++)n[o]!==a.jstree.root&&k[n[o]]&&this.open_node(n[o],null,0)===!0&&this._data.search.opn.push(n[o]);g?(this._data.search.dom=this._data.search.dom.add(a(this.element[0].querySelectorAll("#"+a.map(m,function(b){return-1!=="0123456789".indexOf(b[0])?"\\3"+b[0]+" "+b.substr(1).replace(a.jstree.idregex,"\\$&"):b.replace(a.jstree.idregex,"\\$&")}).join(", #")))),this._data.search.res=a.vakata.array_unique(this._data.search.res.concat(m))):(this._data.search.dom=a(this.element[0].querySelectorAll("#"+a.map(m,function(b){return-1!=="0123456789".indexOf(b[0])?"\\3"+b[0]+" "+b.substr(1).replace(a.jstree.idregex,"\\$&"):b.replace(a.jstree.idregex,"\\$&")}).join(", #"))),this._data.search.res=m),this._data.search.dom.children(".jstree-anchor").addClass("jstree-search")}this.trigger("search",{nodes:this._data.search.dom,str:c,res:this._data.search.res,show_only_matches:e})},this.clear_search=function(){this.settings.search.close_opened_onclear&&this.close_node(this._data.search.opn,0),this.trigger("clear_search",{nodes:this._data.search.dom,str:this._data.search.str,res:this._data.search.res}),this._data.search.res.length&&(this._data.search.dom=a(this.element[0].querySelectorAll("#"+a.map(this._data.search.res,function(b){return-1!=="0123456789".indexOf(b[0])?"\\3"+b[0]+" "+b.substr(1).replace(a.jstree.idregex,"\\$&"):b.replace(a.jstree.idregex,"\\$&")}).join(", #"))),this._data.search.dom.children(".jstree-anchor").removeClass("jstree-search")),this._data.search.str="",this._data.search.res=[],this._data.search.opn=[],this._data.search.dom=a()},this.redraw_node=function(b,c,e,f){if(b=d.redraw_node.apply(this,arguments),b&&-1!==a.inArray(b.id,this._data.search.res)){var g,h,i=null;for(g=0,h=b.childNodes.length;h>g;g++)if(b.childNodes[g]&&b.childNodes[g].className&&-1!==b.childNodes[g].className.indexOf("jstree-anchor")){i=b.childNodes[g];break}i&&(i.className+=" jstree-search")}return b}},function(a){a.vakata.search=function(b,c,d){d=d||{},d=a.extend({},a.vakata.search.defaults,d),d.fuzzy!==!1&&(d.fuzzy=!0),b=d.caseSensitive?b:b.toLowerCase();var e=d.location,f=d.distance,g=d.threshold,h=b.length,i,j,k,l;return h>32&&(d.fuzzy=!1),d.fuzzy&&(i=1<c;c++)a[b.charAt(c)]=0;for(c=0;h>c;c++)a[b.charAt(c)]|=1<c;c++){o=0,p=q;while(p>o)k(c,e+p)<=m?o=p:q=p,p=Math.floor((q-o)/2+o);for(q=p,s=Math.max(1,e-p+1),t=Math.min(e+p,l)+h,u=new Array(t+2),u[t+1]=(1<=s;f--)if(v=j[a.charAt(f-1)],0===c?u[f]=(u[f+1]<<1|1)&v:u[f]=(u[f+1]<<1|1)&v|((r[f+1]|r[f])<<1|1)|r[f+1],u[f]&i&&(w=k(c,f-1),m>=w)){if(m=w,n=f-1,x.push(n),!(n>e))break;s=Math.max(1,2*e-n)}if(k(c+1,e)>m)break;r=u}return{isMatch:n>=0,score:w}},c===!0?{search:l}:l(c)},a.vakata.search.defaults={location:0,distance:100,threshold:.6,fuzzy:!1,caseSensitive:!1}}(a),a.jstree.defaults.sort=function(a,b){return this.get_text(a)>this.get_text(b)?1:-1},a.jstree.plugins.sort=function(b,c){this.bind=function(){c.bind.call(this),this.element.on("model.jstree",a.proxy(function(a,b){this.sort(b.parent,!0)},this)).on("rename_node.jstree create_node.jstree",a.proxy(function(a,b){this.sort(b.parent||b.node.parent,!1),this.redraw_node(b.parent||b.node.parent,!0)},this)).on("move_node.jstree copy_node.jstree",a.proxy(function(a,b){this.sort(b.parent,!1),this.redraw_node(b.parent,!0)},this))},this.sort=function(b,c){var d,e;if(b=this.get_node(b),b&&b.children&&b.children.length&&(b.children.sort(a.proxy(this.settings.sort,this)),c))for(d=0,e=b.children_d.length;e>d;d++)this.sort(b.children_d[d],!1)}};var m=!1;a.jstree.defaults.state={key:"jstree",events:"changed.jstree open_node.jstree close_node.jstree check_node.jstree uncheck_node.jstree",ttl:!1,filter:!1},a.jstree.plugins.state=function(b,c){this.bind=function(){c.bind.call(this);var b=a.proxy(function(){this.element.on(this.settings.state.events,a.proxy(function(){m&&clearTimeout(m),m=setTimeout(a.proxy(function(){this.save_state()},this),100)},this)),this.trigger("state_ready")},this);this.element.on("ready.jstree",a.proxy(function(a,c){this.element.one("restore_state.jstree",b),this.restore_state()||b()},this))},this.save_state=function(){var b={state:this.get_state(),ttl:this.settings.state.ttl,sec:+new Date};a.vakata.storage.set(this.settings.state.key,JSON.stringify(b))},this.restore_state=function(){var b=a.vakata.storage.get(this.settings.state.key);if(b)try{b=JSON.parse(b)}catch(c){return!1}return b&&b.ttl&&b.sec&&+new Date-b.sec>b.ttl?!1:(b&&b.state&&(b=b.state),b&&a.isFunction(this.settings.state.filter)&&(b=this.settings.state.filter.call(this,b)),b?(this.element.one("set_state.jstree",function(c,d){d.instance.trigger("restore_state",{state:a.extend(!0,{},b)})}),this.set_state(b),!0):!1)},this.clear_state=function(){return a.vakata.storage.del(this.settings.state.key)}},function(a,b){a.vakata.storage={set:function(a,b){return window.localStorage.setItem(a,b)},get:function(a){return window.localStorage.getItem(a)},del:function(a){return window.localStorage.removeItem(a)}}}(a),a.jstree.defaults.types={"default":{}},a.jstree.defaults.types[a.jstree.root]={},a.jstree.plugins.types=function(c,d){this.init=function(c,e){var f,g;if(e&&e.types&&e.types["default"])for(f in e.types)if("default"!==f&&f!==a.jstree.root&&e.types.hasOwnProperty(f))for(g in e.types["default"])e.types["default"].hasOwnProperty(g)&&e.types[f][g]===b&&(e.types[f][g]=e.types["default"][g]);d.init.call(this,c,e),this._model.data[a.jstree.root].type=a.jstree.root},this.refresh=function(b,c){d.refresh.call(this,b,c),this._model.data[a.jstree.root].type=a.jstree.root},this.bind=function(){this.element.on("model.jstree",a.proxy(function(c,d){var e=this._model.data,f=d.nodes,g=this.settings.types,h,i,j="default",k;for(h=0,i=f.length;i>h;h++){if(j="default",e[f[h]].original&&e[f[h]].original.type&&g[e[f[h]].original.type]&&(j=e[f[h]].original.type),e[f[h]].data&&e[f[h]].data.jstree&&e[f[h]].data.jstree.type&&g[e[f[h]].data.jstree.type]&&(j=e[f[h]].data.jstree.type),e[f[h]].type=j,e[f[h]].icon===!0&&g[j].icon!==b&&(e[f[h]].icon=g[j].icon),g[j].li_attr!==b&&"object"==typeof g[j].li_attr)for(k in g[j].li_attr)if(g[j].li_attr.hasOwnProperty(k)){if("id"===k)continue;e[f[h]].li_attr[k]===b?e[f[h]].li_attr[k]=g[j].li_attr[k]:"class"===k&&(e[f[h]].li_attr["class"]=g[j].li_attr["class"]+" "+e[f[h]].li_attr["class"])}if(g[j].a_attr!==b&&"object"==typeof g[j].a_attr)for(k in g[j].a_attr)if(g[j].a_attr.hasOwnProperty(k)){if("id"===k)continue;e[f[h]].a_attr[k]===b?e[f[h]].a_attr[k]=g[j].a_attr[k]:"href"===k&&"#"===e[f[h]].a_attr[k]?e[f[h]].a_attr.href=g[j].a_attr.href:"class"===k&&(e[f[h]].a_attr["class"]=g[j].a_attr["class"]+" "+e[f[h]].a_attr["class"])}}e[a.jstree.root].type=a.jstree.root},this)),d.bind.call(this)},this.get_json=function(b,c,e){var f,g,h=this._model.data,i=c?a.extend(!0,{},c,{no_id:!1}):{},j=d.get_json.call(this,b,i,e);if(j===!1)return!1;if(a.isArray(j))for(f=0,g=j.length;g>f;f++)j[f].type=j[f].id&&h[j[f].id]&&h[j[f].id].type?h[j[f].id].type:"default",c&&c.no_id&&(delete j[f].id,j[f].li_attr&&j[f].li_attr.id&&delete j[f].li_attr.id,j[f].a_attr&&j[f].a_attr.id&&delete j[f].a_attr.id);else j.type=j.id&&h[j.id]&&h[j.id].type?h[j.id].type:"default",c&&c.no_id&&(j=this._delete_ids(j));return j},this._delete_ids=function(b){if(a.isArray(b)){for(var c=0,d=b.length;d>c;c++)b[c]=this._delete_ids(b[c]);return b}return delete b.id,b.li_attr&&b.li_attr.id&&delete b.li_attr.id,b.a_attr&&b.a_attr.id&&delete b.a_attr.id,b.children&&a.isArray(b.children)&&(b.children=this._delete_ids(b.children)),b},this.check=function(c,e,f,g,h){if(d.check.call(this,c,e,f,g,h)===!1)return!1;e=e&&e.id?e:this.get_node(e),f=f&&f.id?f:this.get_node(f);var i=e&&e.id?h&&h.origin?h.origin:a.jstree.reference(e.id):null,j,k,l,m;switch(i=i&&i._model&&i._model.data?i._model.data:null,c){case"create_node":case"move_node":case"copy_node":if("move_node"!==c||-1===a.inArray(e.id,f.children)){if(j=this.get_rules(f),j.max_children!==b&&-1!==j.max_children&&j.max_children===f.children.length)return this._data.core.last_error={error:"check",plugin:"types",id:"types_01",reason:"max_children prevents function: "+c,data:JSON.stringify({chk:c,pos:g,obj:e&&e.id?e.id:!1,par:f&&f.id?f.id:!1})},!1;if(j.valid_children!==b&&-1!==j.valid_children&&-1===a.inArray(e.type||"default",j.valid_children))return this._data.core.last_error={error:"check",plugin:"types",id:"types_02",reason:"valid_children prevents function: "+c,data:JSON.stringify({chk:c,pos:g,obj:e&&e.id?e.id:!1,par:f&&f.id?f.id:!1})},!1;if(i&&e.children_d&&e.parents){for(k=0,l=0,m=e.children_d.length;m>l;l++)k=Math.max(k,i[e.children_d[l]].parents.length);k=k-e.parents.length+1}(0>=k||k===b)&&(k=1);do{if(j.max_depth!==b&&-1!==j.max_depth&&j.max_depthg;g++)this.set_type(c[g],d);return!0}if(f=this.settings.types,c=this.get_node(c),!f[d]||!c)return!1;if(l=this.get_node(c,!0),l&&l.length&&(m=l.children(".jstree-anchor")),i=c.type,j=this.get_icon(c),c.type=d,(j===!0||!f[i]||f[i].icon!==b&&j===f[i].icon)&&this.set_icon(c,f[d].icon!==b?f[d].icon:!0), -f[i]&&f[i].li_attr!==b&&"object"==typeof f[i].li_attr)for(k in f[i].li_attr)if(f[i].li_attr.hasOwnProperty(k)){if("id"===k)continue;"class"===k?(e[c.id].li_attr["class"]=(e[c.id].li_attr["class"]||"").replace(f[i].li_attr[k],""),l&&l.removeClass(f[i].li_attr[k])):e[c.id].li_attr[k]===f[i].li_attr[k]&&(e[c.id].li_attr[k]=null,l&&l.removeAttr(k))}if(f[i]&&f[i].a_attr!==b&&"object"==typeof f[i].a_attr)for(k in f[i].a_attr)if(f[i].a_attr.hasOwnProperty(k)){if("id"===k)continue;"class"===k?(e[c.id].a_attr["class"]=(e[c.id].a_attr["class"]||"").replace(f[i].a_attr[k],""),m&&m.removeClass(f[i].a_attr[k])):e[c.id].a_attr[k]===f[i].a_attr[k]&&("href"===k?(e[c.id].a_attr[k]="#",m&&m.attr("href","#")):(delete e[c.id].a_attr[k],m&&m.removeAttr(k)))}if(f[d].li_attr!==b&&"object"==typeof f[d].li_attr)for(k in f[d].li_attr)if(f[d].li_attr.hasOwnProperty(k)){if("id"===k)continue;e[c.id].li_attr[k]===b?(e[c.id].li_attr[k]=f[d].li_attr[k],l&&("class"===k?l.addClass(f[d].li_attr[k]):l.attr(k,f[d].li_attr[k]))):"class"===k&&(e[c.id].li_attr["class"]=f[d].li_attr[k]+" "+e[c.id].li_attr["class"],l&&l.addClass(f[d].li_attr[k]))}if(f[d].a_attr!==b&&"object"==typeof f[d].a_attr)for(k in f[d].a_attr)if(f[d].a_attr.hasOwnProperty(k)){if("id"===k)continue;e[c.id].a_attr[k]===b?(e[c.id].a_attr[k]=f[d].a_attr[k],m&&("class"===k?m.addClass(f[d].a_attr[k]):m.attr(k,f[d].a_attr[k]))):"href"===k&&"#"===e[c.id].a_attr[k]?(e[c.id].a_attr.href=f[d].a_attr.href,m&&m.attr("href",f[d].a_attr.href)):"class"===k&&(e[c.id].a_attr["class"]=f[d].a_attr["class"]+" "+e[c.id].a_attr["class"],m&&m.addClass(f[d].a_attr[k]))}return!0}},a.jstree.defaults.unique={case_sensitive:!1,duplicate:function(a,b){return a+" ("+b+")"}},a.jstree.plugins.unique=function(c,d){this.check=function(b,c,e,f,g){if(d.check.call(this,b,c,e,f,g)===!1)return!1;if(c=c&&c.id?c:this.get_node(c),e=e&&e.id?e:this.get_node(e),!e||!e.children)return!0;var h="rename_node"===b?f:c.text,i=[],j=this.settings.unique.case_sensitive,k=this._model.data,l,m;for(l=0,m=e.children.length;m>l;l++)i.push(j?k[e.children[l]].text:k[e.children[l]].text.toLowerCase());switch(j||(h=h.toLowerCase()),b){case"delete_node":return!0;case"rename_node":return l=-1===a.inArray(h,i)||c.text&&c.text[j?"toString":"toLowerCase"]()===h,l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_01",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l;case"create_node":return l=-1===a.inArray(h,i),l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_04",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l;case"copy_node":return l=-1===a.inArray(h,i),l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_02",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l;case"move_node":return l=c.parent===e.id&&(!g||!g.is_multi)||-1===a.inArray(h,i),l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_03",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l}return!0},this.create_node=function(c,e,f,g,h){if(!e||e.text===b){if(null===c&&(c=a.jstree.root),c=this.get_node(c),!c)return d.create_node.call(this,c,e,f,g,h);if(f=f===b?"last":f,!f.toString().match(/^(before|after)$/)&&!h&&!this.is_loaded(c))return d.create_node.call(this,c,e,f,g,h);e||(e={});var i,j,k,l,m,n=this._model.data,o=this.settings.unique.case_sensitive,p=this.settings.unique.duplicate;for(j=i=this.get_string("New node"),k=[],l=0,m=c.children.length;m>l;l++)k.push(o?n[c.children[l]].text:n[c.children[l]].text.toLowerCase());l=1;while(-1!==a.inArray(o?j:j.toLowerCase(),k))j=p.call(this,i,++l).toString();e.text=j}return d.create_node.call(this,c,e,f,g,h)}};var n=i.createElement("DIV");if(n.setAttribute("unselectable","on"),n.setAttribute("role","presentation"),n.className="jstree-wholerow",n.innerHTML=" ",a.jstree.plugins.wholerow=function(b,c){this.bind=function(){c.bind.call(this),this.element.on("ready.jstree set_state.jstree",a.proxy(function(){this.hide_dots()},this)).on("init.jstree loading.jstree ready.jstree",a.proxy(function(){this.get_container_ul().addClass("jstree-wholerow-ul")},this)).on("deselect_all.jstree",a.proxy(function(a,b){this.element.find(".jstree-wholerow-clicked").removeClass("jstree-wholerow-clicked")},this)).on("changed.jstree",a.proxy(function(a,b){this.element.find(".jstree-wholerow-clicked").removeClass("jstree-wholerow-clicked");var c=!1,d,e;for(d=0,e=b.selected.length;e>d;d++)c=this.get_node(b.selected[d],!0),c&&c.length&&c.children(".jstree-wholerow").addClass("jstree-wholerow-clicked")},this)).on("open_node.jstree",a.proxy(function(a,b){this.get_node(b.node,!0).find(".jstree-clicked").parent().children(".jstree-wholerow").addClass("jstree-wholerow-clicked")},this)).on("hover_node.jstree dehover_node.jstree",a.proxy(function(a,b){"hover_node"===a.type&&this.is_disabled(b.node)||this.get_node(b.node,!0).children(".jstree-wholerow")["hover_node"===a.type?"addClass":"removeClass"]("jstree-wholerow-hovered")},this)).on("contextmenu.jstree",".jstree-wholerow",a.proxy(function(b){if(this._data.contextmenu){b.preventDefault();var c=a.Event("contextmenu",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey,pageX:b.pageX,pageY:b.pageY});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c)}},this)).on("click.jstree",".jstree-wholerow",function(b){b.stopImmediatePropagation();var c=a.Event("click",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c).focus()}).on("dblclick.jstree",".jstree-wholerow",function(b){b.stopImmediatePropagation();var c=a.Event("dblclick",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c).focus()}).on("click.jstree",".jstree-leaf > .jstree-ocl",a.proxy(function(b){b.stopImmediatePropagation();var c=a.Event("click",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c).focus()},this)).on("mouseover.jstree",".jstree-wholerow, .jstree-icon",a.proxy(function(a){return a.stopImmediatePropagation(),this.is_disabled(a.currentTarget)||this.hover_node(a.currentTarget),!1},this)).on("mouseleave.jstree",".jstree-node",a.proxy(function(a){this.dehover_node(a.currentTarget)},this))},this.teardown=function(){this.settings.wholerow&&this.element.find(".jstree-wholerow").remove(),c.teardown.call(this)},this.redraw_node=function(b,d,e,f){if(b=c.redraw_node.apply(this,arguments)){var g=n.cloneNode(!0);-1!==a.inArray(b.id,this._data.core.selected)&&(g.className+=" jstree-wholerow-clicked"),this._data.core.focused&&this._data.core.focused===b.id&&(g.className+=" jstree-wholerow-hovered"),b.insertBefore(g,b.childNodes[0])}return b}},i.registerElement&&Object&&Object.create){var o=Object.create(HTMLElement.prototype);o.createdCallback=function(){var b={core:{},plugins:[]},c;for(c in a.jstree.plugins)a.jstree.plugins.hasOwnProperty(c)&&this.attributes[c]&&(b.plugins.push(c),this.getAttribute(c)&&JSON.parse(this.getAttribute(c))&&(b[c]=JSON.parse(this.getAttribute(c))));for(c in a.jstree.defaults.core)a.jstree.defaults.core.hasOwnProperty(c)&&this.attributes[c]&&(b.core[c]=JSON.parse(this.getAttribute(c))||this.getAttribute(c));a(this).jstree(b)};try{i.registerElement("vakata-jstree",{prototype:o})}catch(p){}}}}); \ No newline at end of file diff --git a/libs/jstree/themes/mixed/32px.png b/libs/jstree/themes/mixed/32px.png deleted file mode 100644 index d6fd721..0000000 Binary files a/libs/jstree/themes/mixed/32px.png and /dev/null differ diff --git a/libs/jstree/themes/mixed/40px.png b/libs/jstree/themes/mixed/40px.png deleted file mode 100644 index 4fc88e4..0000000 Binary files a/libs/jstree/themes/mixed/40px.png and /dev/null differ diff --git a/libs/jstree/themes/mixed/style.css b/libs/jstree/themes/mixed/style.css deleted file mode 100644 index 674f87c..0000000 --- a/libs/jstree/themes/mixed/style.css +++ /dev/null @@ -1,1108 +0,0 @@ -/* jsTree default theme */ -.jstree-node, -.jstree-children, -.jstree-container-ul { - display: block; - margin: 0; - padding: 0; - list-style-type: none; - list-style-image: none; -} -.jstree-node { - white-space: nowrap; -} -.jstree-anchor { - display: inline-block; - color: black; - white-space: nowrap; - padding: 0 4px 0 1px; - margin: 0; - vertical-align: top; -} -.jstree-anchor:focus { - outline: 0; -} -.jstree-anchor, -.jstree-anchor:link, -.jstree-anchor:visited, -.jstree-anchor:hover, -.jstree-anchor:active { - text-decoration: none; - color: inherit; -} -.jstree-icon { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0; - vertical-align: top; - text-align: center; -} -.jstree-icon:empty { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0; - vertical-align: top; - text-align: center; -} -.jstree-ocl { - cursor: pointer; -} -.jstree-leaf > .jstree-ocl { - cursor: default; -} -.jstree .jstree-open > .jstree-children { - display: block; -} -.jstree .jstree-closed > .jstree-children, -.jstree .jstree-leaf > .jstree-children { - display: none; -} -.jstree-anchor > .jstree-themeicon { - margin-right: 2px; -} -.jstree-no-icons .jstree-themeicon, -.jstree-anchor > .jstree-themeicon-hidden { - display: none; -} -.jstree-hidden, -.jstree-node.jstree-hidden { - display: none; -} -.jstree-rtl .jstree-anchor { - padding: 0 1px 0 4px; -} -.jstree-rtl .jstree-anchor > .jstree-themeicon { - margin-left: 2px; - margin-right: 0; -} -.jstree-rtl .jstree-node { - margin-left: 0; -} -.jstree-rtl .jstree-container-ul > .jstree-node { - margin-right: 0; -} -.jstree-wholerow-ul { - position: relative; - display: inline-block; - min-width: 100%; -} -.jstree-wholerow-ul .jstree-leaf > .jstree-ocl { - cursor: pointer; -} -.jstree-wholerow-ul .jstree-anchor, -.jstree-wholerow-ul .jstree-icon { - position: relative; -} -.jstree-wholerow-ul .jstree-wholerow { - width: 100%; - cursor: pointer; - position: absolute; - left: 0; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.jstree-contextmenu .jstree-anchor { - -webkit-user-select: none; - /* disable selection/Copy of UIWebView */ - -webkit-touch-callout: none; - /* disable the IOS popup when long-press on a link */ -} -.vakata-context { - display: none; -} -.vakata-context, -.vakata-context ul { - margin: 0; - padding: 2px; - position: absolute; - background: #f5f5f5; - border: 1px solid #979797; - box-shadow: 2px 2px 2px #999999; -} -.vakata-context ul { - list-style: none; - left: 100%; - margin-top: -2.7em; - margin-left: -4px; -} -.vakata-context .vakata-context-right ul { - left: auto; - right: 100%; - margin-left: auto; - margin-right: -4px; -} -.vakata-context li { - list-style: none; -} -.vakata-context li > a { - display: block; - padding: 0 2em 0 2em; - text-decoration: none; - width: auto; - color: black; - white-space: nowrap; - line-height: 2.4em; - text-shadow: 1px 1px 0 white; - border-radius: 1px; -} -.vakata-context li > a:hover { - position: relative; - background-color: #e8eff7; - box-shadow: 0 0 2px #0a6aa1; -} -.vakata-context li > a.vakata-context-parent { - background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw=="); - background-position: right center; - background-repeat: no-repeat; -} -.vakata-context li > a:focus { - outline: 0; -} -.vakata-context .vakata-context-hover > a { - position: relative; - background-color: #e8eff7; - box-shadow: 0 0 2px #0a6aa1; -} -.vakata-context .vakata-context-separator > a, -.vakata-context .vakata-context-separator > a:hover { - background: white; - border: 0; - border-top: 1px solid #e2e3e3; - height: 1px; - min-height: 1px; - max-height: 1px; - padding: 0; - margin: 0 0 0 2.4em; - border-left: 1px solid #e0e0e0; - text-shadow: 0 0 0 transparent; - box-shadow: 0 0 0 transparent; - border-radius: 0; -} -.vakata-context .vakata-contextmenu-disabled a, -.vakata-context .vakata-contextmenu-disabled a:hover { - color: silver; - background-color: transparent; - border: 0; - box-shadow: 0 0 0; -} -.vakata-context li > a > i { - text-decoration: none; - display: inline-block; - width: 2.4em; - height: 2.4em; - background: transparent; - margin: 0 0 0 -2em; - vertical-align: top; - text-align: center; - line-height: 2.4em; -} -.vakata-context li > a > i:empty { - width: 2.4em; - line-height: 2.4em; -} -.vakata-context li > a .vakata-contextmenu-sep { - display: inline-block; - width: 1px; - height: 2.4em; - background: white; - margin: 0 0.5em 0 0; - border-left: 1px solid #e2e3e3; -} -.vakata-context .vakata-contextmenu-shortcut { - font-size: 0.8em; - color: silver; - opacity: 0.5; - display: none; -} -.vakata-context-rtl ul { - left: auto; - right: 100%; - margin-left: auto; - margin-right: -4px; -} -.vakata-context-rtl li > a.vakata-context-parent { - background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7"); - background-position: left center; - background-repeat: no-repeat; -} -.vakata-context-rtl .vakata-context-separator > a { - margin: 0 2.4em 0 0; - border-left: 0; - border-right: 1px solid #e2e3e3; -} -.vakata-context-rtl .vakata-context-left ul { - right: auto; - left: 100%; - margin-left: -4px; - margin-right: auto; -} -.vakata-context-rtl li > a > i { - margin: 0 -2em 0 0; -} -.vakata-context-rtl li > a .vakata-contextmenu-sep { - margin: 0 0 0 0.5em; - border-left-color: white; - background: #e2e3e3; -} -#jstree-marker { - position: absolute; - top: 0; - left: 0; - margin: -5px 0 0 0; - padding: 0; - border-right: 0; - border-top: 5px solid transparent; - border-bottom: 5px solid transparent; - border-left: 5px solid; - width: 0; - height: 0; - font-size: 0; - line-height: 0; -} -#jstree-dnd { - line-height: 16px; - margin: 0; - padding: 4px; -} -#jstree-dnd .jstree-icon, -#jstree-dnd .jstree-copy { - display: inline-block; - text-decoration: none; - margin: 0 2px 0 0; - padding: 0; - width: 16px; - height: 16px; -} -#jstree-dnd .jstree-ok { - background: green; -} -#jstree-dnd .jstree-er { - background: red; -} -#jstree-dnd .jstree-copy { - margin: 0 2px 0 2px; -} -.jstree-default .jstree-node, -.jstree-default .jstree-icon { - background-repeat: no-repeat; - background-color: transparent; -} -.jstree-default .jstree-anchor, -.jstree-default .jstree-animated, -.jstree-default .jstree-wholerow { - transition: background-color 0.15s, box-shadow 0.15s; -} -.jstree-default .jstree-hovered { - background: #e7f4f9; - border-radius: 2px; - box-shadow: inset 0 0 1px #cccccc; -} -.jstree-default .jstree-context { - background: #e7f4f9; - border-radius: 2px; - box-shadow: inset 0 0 1px #cccccc; -} -.jstree-default .jstree-clicked { - background: #beebff; - border-radius: 2px; - box-shadow: inset 0 0 1px #999999; -} -.jstree-default .jstree-no-icons .jstree-anchor > .jstree-themeicon { - display: none; -} -.jstree-default .jstree-disabled { - background: transparent; - color: #666666; -} -.jstree-default .jstree-disabled.jstree-hovered { - background: transparent; - box-shadow: none; -} -.jstree-default .jstree-disabled.jstree-clicked { - background: #efefef; -} -.jstree-default .jstree-disabled > .jstree-icon { - opacity: 0.8; - filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); - /* Firefox 10+ */ - filter: gray; - /* IE6-9 */ - -webkit-filter: grayscale(100%); - /* Chrome 19+ & Safari 6+ */ -} -.jstree-default .jstree-search { - font-style: italic; - color: #8b0000; - font-weight: bold; -} -.jstree-default .jstree-no-checkboxes .jstree-checkbox { - display: none !important; -} -.jstree-default.jstree-checkbox-no-clicked .jstree-clicked { - background: transparent; - box-shadow: none; -} -.jstree-default.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered { - background: #e7f4f9; -} -.jstree-default.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked { - background: transparent; -} -.jstree-default.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered { - background: #e7f4f9; -} -.jstree-default > .jstree-striped { - min-width: 100%; - display: inline-block; - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==") left top repeat; -} -.jstree-default > .jstree-wholerow-ul .jstree-hovered, -.jstree-default > .jstree-wholerow-ul .jstree-clicked { - background: transparent; - box-shadow: none; - border-radius: 0; -} -.jstree-default .jstree-wholerow { - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} -.jstree-default .jstree-wholerow-hovered { - background: #e7f4f9; -} -.jstree-default .jstree-wholerow-clicked { - background: #beebff; - background: -webkit-linear-gradient(top, #beebff 0%, #a8e4ff 100%); - background: linear-gradient(to bottom, #beebff 0%, #a8e4ff 100%); -} -.jstree-default .jstree-node { - min-height: 24px; - line-height: 24px; - margin-left: 24px; - min-width: 24px; -} -.jstree-default .jstree-anchor { - line-height: 24px; - height: 24px; -} -.jstree-default .jstree-icon { - width: 24px; - height: 24px; - line-height: 24px; -} -.jstree-default .jstree-icon:empty { - width: 24px; - height: 24px; - line-height: 24px; -} -.jstree-default.jstree-rtl .jstree-node { - margin-right: 24px; -} -.jstree-default .jstree-wholerow { - height: 24px; -} -.jstree-default .jstree-node, -.jstree-default .jstree-icon { - background-image: url("32px.png"); -} -.jstree-default .jstree-node { - background-position: -292px -4px; - background-repeat: repeat-y; -} -.jstree-default .jstree-last { - background: transparent; -} -.jstree-default .jstree-open > .jstree-ocl { - background-position: -132px -4px; -} -.jstree-default .jstree-closed > .jstree-ocl { - background-position: -100px -4px; -} -.jstree-default .jstree-leaf > .jstree-ocl { - background-position: -68px -4px; -} -.jstree-default .jstree-themeicon { - background-position: -260px -4px; -} -.jstree-default > .jstree-no-dots .jstree-node, -.jstree-default > .jstree-no-dots .jstree-leaf > .jstree-ocl { - background: transparent; -} -.jstree-default > .jstree-no-dots .jstree-open > .jstree-ocl { - background-position: -36px -4px; -} -.jstree-default > .jstree-no-dots .jstree-closed > .jstree-ocl { - background-position: -4px -4px; -} -.jstree-default .jstree-disabled { - background: transparent; -} -.jstree-default .jstree-disabled.jstree-hovered { - background: transparent; -} -.jstree-default .jstree-disabled.jstree-clicked { - background: #efefef; -} -.jstree-default .jstree-checkbox { - background-position: -164px -4px; -} -.jstree-default .jstree-checkbox:hover { - background-position: -164px -36px; -} -.jstree-default.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, -.jstree-default .jstree-checked > .jstree-checkbox { - background-position: -228px -4px; -} -.jstree-default.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, -.jstree-default .jstree-checked > .jstree-checkbox:hover { - background-position: -228px -36px; -} -.jstree-default .jstree-anchor > .jstree-undetermined { - background-position: -196px -4px; -} -.jstree-default .jstree-anchor > .jstree-undetermined:hover { - background-position: -196px -36px; -} -.jstree-default .jstree-checkbox-disabled { - opacity: 0.8; - filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); - /* Firefox 10+ */ - filter: gray; - /* IE6-9 */ - -webkit-filter: grayscale(100%); - /* Chrome 19+ & Safari 6+ */ -} -.jstree-default > .jstree-striped { - background-size: auto 48px; -} -.jstree-default.jstree-rtl .jstree-node { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); - background-position: 100% 1px; - background-repeat: repeat-y; -} -.jstree-default.jstree-rtl .jstree-last { - background: transparent; -} -.jstree-default.jstree-rtl .jstree-open > .jstree-ocl { - background-position: -132px -36px; -} -.jstree-default.jstree-rtl .jstree-closed > .jstree-ocl { - background-position: -100px -36px; -} -.jstree-default.jstree-rtl .jstree-leaf > .jstree-ocl { - background-position: -68px -36px; -} -.jstree-default.jstree-rtl > .jstree-no-dots .jstree-node, -.jstree-default.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl { - background: transparent; -} -.jstree-default.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl { - background-position: -36px -36px; -} -.jstree-default.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl { - background-position: -4px -36px; -} -.jstree-default .jstree-themeicon-custom { - background-color: transparent; - background-image: none; - background-position: 0 0; -} -.jstree-default > .jstree-container-ul .jstree-loading > .jstree-ocl { - background: url("throbber.gif") center center no-repeat; -} -.jstree-default .jstree-file { - background: url("32px.png") -100px -68px no-repeat; -} -.jstree-default .jstree-folder { - background: url("32px.png") -260px -4px no-repeat; -} -.jstree-default > .jstree-container-ul > .jstree-node { - margin-left: 0; - margin-right: 0; -} -#jstree-dnd.jstree-default { - line-height: 24px; - padding: 0 4px; -} -#jstree-dnd.jstree-default .jstree-ok, -#jstree-dnd.jstree-default .jstree-er { - background-image: url("32px.png"); - background-repeat: no-repeat; - background-color: transparent; -} -#jstree-dnd.jstree-default i { - background: transparent; - width: 24px; - height: 24px; - line-height: 24px; -} -#jstree-dnd.jstree-default .jstree-ok { - background-position: -4px -68px; -} -#jstree-dnd.jstree-default .jstree-er { - background-position: -36px -68px; -} -.jstree-default .jstree-ellipsis { - overflow: hidden; -} -.jstree-default .jstree-ellipsis .jstree-anchor { - width: calc(100% - 29px); - text-overflow: ellipsis; - overflow: hidden; -} -.jstree-default .jstree-ellipsis.jstree-no-icons .jstree-anchor { - width: calc(100% - 5px); -} -.jstree-default.jstree-rtl .jstree-node { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); -} -.jstree-default.jstree-rtl .jstree-last { - background: transparent; -} -.jstree-default-small .jstree-node { - min-height: 18px; - line-height: 18px; - margin-left: 18px; - min-width: 18px; -} -.jstree-default-small .jstree-anchor { - line-height: 18px; - height: 18px; -} -.jstree-default-small .jstree-icon { - width: 18px; - height: 18px; - line-height: 18px; -} -.jstree-default-small .jstree-icon:empty { - width: 18px; - height: 18px; - line-height: 18px; -} -.jstree-default-small.jstree-rtl .jstree-node { - margin-right: 18px; -} -.jstree-default-small .jstree-wholerow { - height: 18px; -} -.jstree-default-small .jstree-node, -.jstree-default-small .jstree-icon { - background-image: url("32px.png"); -} -.jstree-default-small .jstree-node { - background-position: -295px -7px; - background-repeat: repeat-y; -} -.jstree-default-small .jstree-last { - background: transparent; -} -.jstree-default-small .jstree-open > .jstree-ocl { - background-position: -135px -7px; -} -.jstree-default-small .jstree-closed > .jstree-ocl { - background-position: -103px -7px; -} -.jstree-default-small .jstree-leaf > .jstree-ocl { - background-position: -71px -7px; -} -.jstree-default-small .jstree-themeicon { - background-position: -263px -7px; -} -.jstree-default-small > .jstree-no-dots .jstree-node, -.jstree-default-small > .jstree-no-dots .jstree-leaf > .jstree-ocl { - background: transparent; -} -.jstree-default-small > .jstree-no-dots .jstree-open > .jstree-ocl { - background-position: -39px -7px; -} -.jstree-default-small > .jstree-no-dots .jstree-closed > .jstree-ocl { - background-position: -7px -7px; -} -.jstree-default-small .jstree-disabled { - background: transparent; -} -.jstree-default-small .jstree-disabled.jstree-hovered { - background: transparent; -} -.jstree-default-small .jstree-disabled.jstree-clicked { - background: #efefef; -} -.jstree-default-small .jstree-checkbox { - background-position: -167px -7px; -} -.jstree-default-small .jstree-checkbox:hover { - background-position: -167px -39px; -} -.jstree-default-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, -.jstree-default-small .jstree-checked > .jstree-checkbox { - background-position: -231px -7px; -} -.jstree-default-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, -.jstree-default-small .jstree-checked > .jstree-checkbox:hover { - background-position: -231px -39px; -} -.jstree-default-small .jstree-anchor > .jstree-undetermined { - background-position: -199px -7px; -} -.jstree-default-small .jstree-anchor > .jstree-undetermined:hover { - background-position: -199px -39px; -} -.jstree-default-small .jstree-checkbox-disabled { - opacity: 0.8; - filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); - /* Firefox 10+ */ - filter: gray; - /* IE6-9 */ - -webkit-filter: grayscale(100%); - /* Chrome 19+ & Safari 6+ */ -} -.jstree-default-small > .jstree-striped { - background-size: auto 36px; -} -.jstree-default-small.jstree-rtl .jstree-node { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); - background-position: 100% 1px; - background-repeat: repeat-y; -} -.jstree-default-small.jstree-rtl .jstree-last { - background: transparent; -} -.jstree-default-small.jstree-rtl .jstree-open > .jstree-ocl { - background-position: -135px -39px; -} -.jstree-default-small.jstree-rtl .jstree-closed > .jstree-ocl { - background-position: -103px -39px; -} -.jstree-default-small.jstree-rtl .jstree-leaf > .jstree-ocl { - background-position: -71px -39px; -} -.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-node, -.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl { - background: transparent; -} -.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl { - background-position: -39px -39px; -} -.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl { - background-position: -7px -39px; -} -.jstree-default-small .jstree-themeicon-custom { - background-color: transparent; - background-image: none; - background-position: 0 0; -} -.jstree-default-small > .jstree-container-ul .jstree-loading > .jstree-ocl { - background: url("throbber.gif") center center no-repeat; -} -.jstree-default-small .jstree-file { - background: url("32px.png") -103px -71px no-repeat; -} -.jstree-default-small .jstree-folder { - background: url("32px.png") -263px -7px no-repeat; -} -.jstree-default-small > .jstree-container-ul > .jstree-node { - margin-left: 0; - margin-right: 0; -} -#jstree-dnd.jstree-default-small { - line-height: 18px; - padding: 0 4px; -} -#jstree-dnd.jstree-default-small .jstree-ok, -#jstree-dnd.jstree-default-small .jstree-er { - background-image: url("32px.png"); - background-repeat: no-repeat; - background-color: transparent; -} -#jstree-dnd.jstree-default-small i { - background: transparent; - width: 18px; - height: 18px; - line-height: 18px; -} -#jstree-dnd.jstree-default-small .jstree-ok { - background-position: -7px -71px; -} -#jstree-dnd.jstree-default-small .jstree-er { - background-position: -39px -71px; -} -.jstree-default-small .jstree-ellipsis { - overflow: hidden; -} -.jstree-default-small .jstree-ellipsis .jstree-anchor { - width: calc(100% - 23px); - text-overflow: ellipsis; - overflow: hidden; -} -.jstree-default-small .jstree-ellipsis.jstree-no-icons .jstree-anchor { - width: calc(100% - 5px); -} -.jstree-default-small.jstree-rtl .jstree-node { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg=="); -} -.jstree-default-small.jstree-rtl .jstree-last { - background: transparent; -} -.jstree-default-large .jstree-node { - min-height: 32px; - line-height: 32px; - margin-left: 32px; - min-width: 32px; -} -.jstree-default-large .jstree-anchor { - line-height: 32px; - height: 32px; -} -.jstree-default-large .jstree-icon { - width: 32px; - height: 32px; - line-height: 32px; -} -.jstree-default-large .jstree-icon:empty { - width: 32px; - height: 32px; - line-height: 32px; -} -.jstree-default-large.jstree-rtl .jstree-node { - margin-right: 32px; -} -.jstree-default-large .jstree-wholerow { - height: 32px; -} -.jstree-default-large .jstree-node, -.jstree-default-large .jstree-icon { - background-image: url("32px.png"); -} -.jstree-default-large .jstree-node { - background-position: -288px 0px; - background-repeat: repeat-y; -} -.jstree-default-large .jstree-last { - background: transparent; -} -.jstree-default-large .jstree-open > .jstree-ocl { - background-position: -128px 0px; -} -.jstree-default-large .jstree-closed > .jstree-ocl { - background-position: -96px 0px; -} -.jstree-default-large .jstree-leaf > .jstree-ocl { - background-position: -64px 0px; -} -.jstree-default-large .jstree-themeicon { - background-position: -256px 0px; -} -.jstree-default-large > .jstree-no-dots .jstree-node, -.jstree-default-large > .jstree-no-dots .jstree-leaf > .jstree-ocl { - background: transparent; -} -.jstree-default-large > .jstree-no-dots .jstree-open > .jstree-ocl { - background-position: -32px 0px; -} -.jstree-default-large > .jstree-no-dots .jstree-closed > .jstree-ocl { - background-position: 0px 0px; -} -.jstree-default-large .jstree-disabled { - background: transparent; -} -.jstree-default-large .jstree-disabled.jstree-hovered { - background: transparent; -} -.jstree-default-large .jstree-disabled.jstree-clicked { - background: #efefef; -} -.jstree-default-large .jstree-checkbox { - background-position: -160px 0px; -} -.jstree-default-large .jstree-checkbox:hover { - background-position: -160px -32px; -} -.jstree-default-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, -.jstree-default-large .jstree-checked > .jstree-checkbox { - background-position: -224px 0px; -} -.jstree-default-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, -.jstree-default-large .jstree-checked > .jstree-checkbox:hover { - background-position: -224px -32px; -} -.jstree-default-large .jstree-anchor > .jstree-undetermined { - background-position: -192px 0px; -} -.jstree-default-large .jstree-anchor > .jstree-undetermined:hover { - background-position: -192px -32px; -} -.jstree-default-large .jstree-checkbox-disabled { - opacity: 0.8; - filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); - /* Firefox 10+ */ - filter: gray; - /* IE6-9 */ - -webkit-filter: grayscale(100%); - /* Chrome 19+ & Safari 6+ */ -} -.jstree-default-large > .jstree-striped { - background-size: auto 64px; -} -.jstree-default-large.jstree-rtl .jstree-node { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); - background-position: 100% 1px; - background-repeat: repeat-y; -} -.jstree-default-large.jstree-rtl .jstree-last { - background: transparent; -} -.jstree-default-large.jstree-rtl .jstree-open > .jstree-ocl { - background-position: -128px -32px; -} -.jstree-default-large.jstree-rtl .jstree-closed > .jstree-ocl { - background-position: -96px -32px; -} -.jstree-default-large.jstree-rtl .jstree-leaf > .jstree-ocl { - background-position: -64px -32px; -} -.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-node, -.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl { - background: transparent; -} -.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl { - background-position: -32px -32px; -} -.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl { - background-position: 0px -32px; -} -.jstree-default-large .jstree-themeicon-custom { - background-color: transparent; - background-image: none; - background-position: 0 0; -} -.jstree-default-large > .jstree-container-ul .jstree-loading > .jstree-ocl { - background: url("throbber.gif") center center no-repeat; -} -.jstree-default-large .jstree-file { - background: url("32px.png") -96px -64px no-repeat; -} -.jstree-default-large .jstree-folder { - background: url("32px.png") -256px 0px no-repeat; -} -.jstree-default-large > .jstree-container-ul > .jstree-node { - margin-left: 0; - margin-right: 0; -} -#jstree-dnd.jstree-default-large { - line-height: 32px; - padding: 0 4px; -} -#jstree-dnd.jstree-default-large .jstree-ok, -#jstree-dnd.jstree-default-large .jstree-er { - background-image: url("32px.png"); - background-repeat: no-repeat; - background-color: transparent; -} -#jstree-dnd.jstree-default-large i { - background: transparent; - width: 32px; - height: 32px; - line-height: 32px; -} -#jstree-dnd.jstree-default-large .jstree-ok { - background-position: 0px -64px; -} -#jstree-dnd.jstree-default-large .jstree-er { - background-position: -32px -64px; -} -.jstree-default-large .jstree-ellipsis { - overflow: hidden; -} -.jstree-default-large .jstree-ellipsis .jstree-anchor { - width: calc(100% - 37px); - text-overflow: ellipsis; - overflow: hidden; -} -.jstree-default-large .jstree-ellipsis.jstree-no-icons .jstree-anchor { - width: calc(100% - 5px); -} -.jstree-default-large.jstree-rtl .jstree-node { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg=="); -} -.jstree-default-large.jstree-rtl .jstree-last { - background: transparent; -} -@media (max-width: 768px) { - #jstree-dnd.jstree-dnd-responsive { - line-height: 40px; - font-weight: bold; - font-size: 1.1em; - text-shadow: 1px 1px white; - } - #jstree-dnd.jstree-dnd-responsive > i { - background: transparent; - width: 40px; - height: 40px; - } - #jstree-dnd.jstree-dnd-responsive > .jstree-ok { - background-image: url("40px.png"); - background-position: 0 -200px; - background-size: 120px 240px; - } - #jstree-dnd.jstree-dnd-responsive > .jstree-er { - background-image: url("40px.png"); - background-position: -40px -200px; - background-size: 120px 240px; - } - #jstree-marker.jstree-dnd-responsive { - border-left-width: 10px; - border-top-width: 10px; - border-bottom-width: 10px; - margin-top: -10px; - } -} -@media (max-width: 768px) { - .jstree-default-responsive { - /* - .jstree-open > .jstree-ocl, - .jstree-closed > .jstree-ocl { border-radius:20px; background-color:white; } - */ - } - .jstree-default-responsive .jstree-icon { - background-image: url("40px.png"); - } - .jstree-default-responsive .jstree-node, - .jstree-default-responsive .jstree-leaf > .jstree-ocl { - background: transparent; - } - .jstree-default-responsive .jstree-node { - min-height: 40px; - line-height: 40px; - margin-left: 40px; - min-width: 40px; - white-space: nowrap; - } - .jstree-default-responsive .jstree-anchor { - line-height: 40px; - height: 40px; - } - .jstree-default-responsive .jstree-icon, - .jstree-default-responsive .jstree-icon:empty { - width: 40px; - height: 40px; - line-height: 40px; - } - .jstree-default-responsive > .jstree-container-ul > .jstree-node { - margin-left: 0; - } - .jstree-default-responsive.jstree-rtl .jstree-node { - margin-left: 0; - margin-right: 40px; - background: transparent; - } - .jstree-default-responsive.jstree-rtl .jstree-container-ul > .jstree-node { - margin-right: 0; - } - .jstree-default-responsive .jstree-ocl, - .jstree-default-responsive .jstree-themeicon, - .jstree-default-responsive .jstree-checkbox { - background-size: 120px 240px; - } - .jstree-default-responsive .jstree-leaf > .jstree-ocl, - .jstree-default-responsive.jstree-rtl .jstree-leaf > .jstree-ocl { - background: transparent; - } - .jstree-default-responsive .jstree-open > .jstree-ocl { - background-position: 0 0px !important; - } - .jstree-default-responsive .jstree-closed > .jstree-ocl { - background-position: 0 -40px !important; - } - .jstree-default-responsive.jstree-rtl .jstree-closed > .jstree-ocl { - background-position: -40px 0px !important; - } - .jstree-default-responsive .jstree-themeicon { - background-position: -40px -40px; - } - .jstree-default-responsive .jstree-checkbox, - .jstree-default-responsive .jstree-checkbox:hover { - background-position: -40px -80px; - } - .jstree-default-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, - .jstree-default-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, - .jstree-default-responsive .jstree-checked > .jstree-checkbox, - .jstree-default-responsive .jstree-checked > .jstree-checkbox:hover { - background-position: 0 -80px; - } - .jstree-default-responsive .jstree-anchor > .jstree-undetermined, - .jstree-default-responsive .jstree-anchor > .jstree-undetermined:hover { - background-position: 0 -120px; - } - .jstree-default-responsive .jstree-anchor { - font-weight: bold; - font-size: 1.1em; - text-shadow: 1px 1px white; - } - .jstree-default-responsive > .jstree-striped { - background: transparent; - } - .jstree-default-responsive .jstree-wholerow { - border-top: 1px solid rgba(255, 255, 255, 0.7); - border-bottom: 1px solid rgba(64, 64, 64, 0.2); - background: #ebebeb; - height: 40px; - } - .jstree-default-responsive .jstree-wholerow-hovered { - background: #e7f4f9; - } - .jstree-default-responsive .jstree-wholerow-clicked { - background: #beebff; - } - .jstree-default-responsive .jstree-children .jstree-last > .jstree-wholerow { - box-shadow: inset 0 -6px 3px -5px #666666; - } - .jstree-default-responsive .jstree-children .jstree-open > .jstree-wholerow { - box-shadow: inset 0 6px 3px -5px #666666; - border-top: 0; - } - .jstree-default-responsive .jstree-children .jstree-open + .jstree-open { - box-shadow: none; - } - .jstree-default-responsive .jstree-node, - .jstree-default-responsive .jstree-icon, - .jstree-default-responsive .jstree-node > .jstree-ocl, - .jstree-default-responsive .jstree-themeicon, - .jstree-default-responsive .jstree-checkbox { - background-image: url("40px.png"); - background-size: 120px 240px; - } - .jstree-default-responsive .jstree-node { - background-position: -80px 0; - background-repeat: repeat-y; - } - .jstree-default-responsive .jstree-last { - background: transparent; - } - .jstree-default-responsive .jstree-leaf > .jstree-ocl { - background-position: -40px -120px; - } - .jstree-default-responsive .jstree-last > .jstree-ocl { - background-position: -40px -160px; - } - .jstree-default-responsive .jstree-themeicon-custom { - background-color: transparent; - background-image: none; - background-position: 0 0; - } - .jstree-default-responsive .jstree-file { - background: url("40px.png") 0 -160px no-repeat; - background-size: 120px 240px; - } - .jstree-default-responsive .jstree-folder { - background: url("40px.png") -40px -40px no-repeat; - background-size: 120px 240px; - } - .jstree-default-responsive > .jstree-container-ul > .jstree-node { - margin-left: 0; - margin-right: 0; - } -} diff --git a/libs/jstree/themes/mixed/style.min.css b/libs/jstree/themes/mixed/style.min.css deleted file mode 100644 index f9822c7..0000000 --- a/libs/jstree/themes/mixed/style.min.css +++ /dev/null @@ -1 +0,0 @@ -.jstree-node,.jstree-children,.jstree-container-ul{display:block;margin:0;padding:0;list-style-type:none;list-style-image:none}.jstree-node{white-space:nowrap}.jstree-anchor{display:inline-block;color:#000;white-space:nowrap;padding:0 4px 0 1px;margin:0;vertical-align:top}.jstree-anchor:focus{outline:0}.jstree-anchor,.jstree-anchor:link,.jstree-anchor:visited,.jstree-anchor:hover,.jstree-anchor:active{text-decoration:none;color:inherit}.jstree-icon{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-icon:empty{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-ocl{cursor:pointer}.jstree-leaf>.jstree-ocl{cursor:default}.jstree .jstree-open>.jstree-children{display:block}.jstree .jstree-closed>.jstree-children,.jstree .jstree-leaf>.jstree-children{display:none}.jstree-anchor>.jstree-themeicon{margin-right:2px}.jstree-no-icons .jstree-themeicon,.jstree-anchor>.jstree-themeicon-hidden{display:none}.jstree-hidden,.jstree-node.jstree-hidden{display:none}.jstree-rtl .jstree-anchor{padding:0 1px 0 4px}.jstree-rtl .jstree-anchor>.jstree-themeicon{margin-left:2px;margin-right:0}.jstree-rtl .jstree-node{margin-left:0}.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-wholerow-ul{position:relative;display:inline-block;min-width:100%}.jstree-wholerow-ul .jstree-leaf>.jstree-ocl{cursor:pointer}.jstree-wholerow-ul .jstree-anchor,.jstree-wholerow-ul .jstree-icon{position:relative}.jstree-wholerow-ul .jstree-wholerow{width:100%;cursor:pointer;position:absolute;left:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.jstree-contextmenu .jstree-anchor{-webkit-user-select:none;-webkit-touch-callout:none}.vakata-context{display:none}.vakata-context,.vakata-context ul{margin:0;padding:2px;position:absolute;background:#f5f5f5;border:1px solid #979797;box-shadow:2px 2px 2px #999}.vakata-context ul{list-style:none;left:100%;margin-top:-2.7em;margin-left:-4px}.vakata-context .vakata-context-right ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context li{list-style:none}.vakata-context li>a{display:block;padding:0 2em;text-decoration:none;width:auto;color:#000;white-space:nowrap;line-height:2.4em;text-shadow:1px 1px 0 #fff;border-radius:1px}.vakata-context li>a:hover{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==);background-position:right center;background-repeat:no-repeat}.vakata-context li>a:focus{outline:0}.vakata-context .vakata-context-hover>a{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context .vakata-context-separator>a,.vakata-context .vakata-context-separator>a:hover{background:#fff;border:0;border-top:1px solid #e2e3e3;height:1px;min-height:1px;max-height:1px;padding:0;margin:0 0 0 2.4em;border-left:1px solid #e0e0e0;text-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;border-radius:0}.vakata-context .vakata-contextmenu-disabled a,.vakata-context .vakata-contextmenu-disabled a:hover{color:silver;background-color:transparent;border:0;box-shadow:0 0 0}.vakata-context li>a>i{text-decoration:none;display:inline-block;width:2.4em;height:2.4em;background:0 0;margin:0 0 0 -2em;vertical-align:top;text-align:center;line-height:2.4em}.vakata-context li>a>i:empty{width:2.4em;line-height:2.4em}.vakata-context li>a .vakata-contextmenu-sep{display:inline-block;width:1px;height:2.4em;background:#fff;margin:0 .5em 0 0;border-left:1px solid #e2e3e3}.vakata-context .vakata-contextmenu-shortcut{font-size:.8em;color:silver;opacity:.5;display:none}.vakata-context-rtl ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context-rtl li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7);background-position:left center;background-repeat:no-repeat}.vakata-context-rtl .vakata-context-separator>a{margin:0 2.4em 0 0;border-left:0;border-right:1px solid #e2e3e3}.vakata-context-rtl .vakata-context-left ul{right:auto;left:100%;margin-left:-4px;margin-right:auto}.vakata-context-rtl li>a>i{margin:0 -2em 0 0}.vakata-context-rtl li>a .vakata-contextmenu-sep{margin:0 0 0 .5em;border-left-color:#fff;background:#e2e3e3}#jstree-marker{position:absolute;top:0;left:0;margin:-5px 0 0 0;padding:0;border-right:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid;width:0;height:0;font-size:0;line-height:0}#jstree-dnd{line-height:16px;margin:0;padding:4px}#jstree-dnd .jstree-icon,#jstree-dnd .jstree-copy{display:inline-block;text-decoration:none;margin:0 2px 0 0;padding:0;width:16px;height:16px}#jstree-dnd .jstree-ok{background:green}#jstree-dnd .jstree-er{background:red}#jstree-dnd .jstree-copy{margin:0 2px}.jstree-default .jstree-node,.jstree-default .jstree-icon{background-repeat:no-repeat;background-color:transparent}.jstree-default .jstree-anchor,.jstree-default .jstree-animated,.jstree-default .jstree-wholerow{transition:background-color .15s,box-shadow .15s}.jstree-default .jstree-hovered{background:#e7f4f9;border-radius:2px;box-shadow:inset 0 0 1px #ccc}.jstree-default .jstree-context{background:#e7f4f9;border-radius:2px;box-shadow:inset 0 0 1px #ccc}.jstree-default .jstree-clicked{background:#beebff;border-radius:2px;box-shadow:inset 0 0 1px #999}.jstree-default .jstree-no-icons .jstree-anchor>.jstree-themeicon{display:none}.jstree-default .jstree-disabled{background:0 0;color:#666}.jstree-default .jstree-disabled.jstree-hovered{background:0 0;box-shadow:none}.jstree-default .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default .jstree-disabled>.jstree-icon{opacity:.8;filter:url("data:image/svg+xml;utf8,#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default .jstree-search{font-style:italic;color:#8b0000;font-weight:700}.jstree-default .jstree-no-checkboxes .jstree-checkbox{display:none!important}.jstree-default.jstree-checkbox-no-clicked .jstree-clicked{background:0 0;box-shadow:none}.jstree-default.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered{background:#e7f4f9}.jstree-default.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked{background:0 0}.jstree-default.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered{background:#e7f4f9}.jstree-default>.jstree-striped{min-width:100%;display:inline-block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==) left top repeat}.jstree-default>.jstree-wholerow-ul .jstree-hovered,.jstree-default>.jstree-wholerow-ul .jstree-clicked{background:0 0;box-shadow:none;border-radius:0}.jstree-default .jstree-wholerow{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.jstree-default .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default .jstree-wholerow-clicked{background:#beebff;background:-webkit-linear-gradient(top,#beebff 0,#a8e4ff 100%);background:linear-gradient(to bottom,#beebff 0,#a8e4ff 100%)}.jstree-default .jstree-node{min-height:24px;line-height:24px;margin-left:24px;min-width:24px}.jstree-default .jstree-anchor{line-height:24px;height:24px}.jstree-default .jstree-icon{width:24px;height:24px;line-height:24px}.jstree-default .jstree-icon:empty{width:24px;height:24px;line-height:24px}.jstree-default.jstree-rtl .jstree-node{margin-right:24px}.jstree-default .jstree-wholerow{height:24px}.jstree-default .jstree-node,.jstree-default .jstree-icon{background-image:url(32px.png)}.jstree-default .jstree-node{background-position:-292px -4px;background-repeat:repeat-y}.jstree-default .jstree-last{background:0 0}.jstree-default .jstree-open>.jstree-ocl{background-position:-132px -4px}.jstree-default .jstree-closed>.jstree-ocl{background-position:-100px -4px}.jstree-default .jstree-leaf>.jstree-ocl{background-position:-68px -4px}.jstree-default .jstree-themeicon{background-position:-260px -4px}.jstree-default>.jstree-no-dots .jstree-node,.jstree-default>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -4px}.jstree-default>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -4px}.jstree-default .jstree-disabled{background:0 0}.jstree-default .jstree-disabled.jstree-hovered{background:0 0}.jstree-default .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default .jstree-checkbox{background-position:-164px -4px}.jstree-default .jstree-checkbox:hover{background-position:-164px -36px}.jstree-default.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default .jstree-checked>.jstree-checkbox{background-position:-228px -4px}.jstree-default.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default .jstree-checked>.jstree-checkbox:hover{background-position:-228px -36px}.jstree-default .jstree-anchor>.jstree-undetermined{background-position:-196px -4px}.jstree-default .jstree-anchor>.jstree-undetermined:hover{background-position:-196px -36px}.jstree-default .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default>.jstree-striped{background-size:auto 48px}.jstree-default.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default.jstree-rtl .jstree-last{background:0 0}.jstree-default.jstree-rtl .jstree-open>.jstree-ocl{background-position:-132px -36px}.jstree-default.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-100px -36px}.jstree-default.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-68px -36px}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -36px}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -36px}.jstree-default .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default .jstree-file{background:url(32px.png) -100px -68px no-repeat}.jstree-default .jstree-folder{background:url(32px.png) -260px -4px no-repeat}.jstree-default>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default{line-height:24px;padding:0 4px}#jstree-dnd.jstree-default .jstree-ok,#jstree-dnd.jstree-default .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default i{background:0 0;width:24px;height:24px;line-height:24px}#jstree-dnd.jstree-default .jstree-ok{background-position:-4px -68px}#jstree-dnd.jstree-default .jstree-er{background-position:-36px -68px}.jstree-default .jstree-ellipsis{overflow:hidden}.jstree-default .jstree-ellipsis .jstree-anchor{width:calc(100% - 29px);text-overflow:ellipsis;overflow:hidden}.jstree-default .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==)}.jstree-default.jstree-rtl .jstree-last{background:0 0}.jstree-default-small .jstree-node{min-height:18px;line-height:18px;margin-left:18px;min-width:18px}.jstree-default-small .jstree-anchor{line-height:18px;height:18px}.jstree-default-small .jstree-icon{width:18px;height:18px;line-height:18px}.jstree-default-small .jstree-icon:empty{width:18px;height:18px;line-height:18px}.jstree-default-small.jstree-rtl .jstree-node{margin-right:18px}.jstree-default-small .jstree-wholerow{height:18px}.jstree-default-small .jstree-node,.jstree-default-small .jstree-icon{background-image:url(32px.png)}.jstree-default-small .jstree-node{background-position:-295px -7px;background-repeat:repeat-y}.jstree-default-small .jstree-last{background:0 0}.jstree-default-small .jstree-open>.jstree-ocl{background-position:-135px -7px}.jstree-default-small .jstree-closed>.jstree-ocl{background-position:-103px -7px}.jstree-default-small .jstree-leaf>.jstree-ocl{background-position:-71px -7px}.jstree-default-small .jstree-themeicon{background-position:-263px -7px}.jstree-default-small>.jstree-no-dots .jstree-node,.jstree-default-small>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-small>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -7px}.jstree-default-small>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -7px}.jstree-default-small .jstree-disabled{background:0 0}.jstree-default-small .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-small .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-small .jstree-checkbox{background-position:-167px -7px}.jstree-default-small .jstree-checkbox:hover{background-position:-167px -39px}.jstree-default-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-small .jstree-checked>.jstree-checkbox{background-position:-231px -7px}.jstree-default-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-small .jstree-checked>.jstree-checkbox:hover{background-position:-231px -39px}.jstree-default-small .jstree-anchor>.jstree-undetermined{background-position:-199px -7px}.jstree-default-small .jstree-anchor>.jstree-undetermined:hover{background-position:-199px -39px}.jstree-default-small .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-small>.jstree-striped{background-size:auto 36px}.jstree-default-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-small.jstree-rtl .jstree-open>.jstree-ocl{background-position:-135px -39px}.jstree-default-small.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-103px -39px}.jstree-default-small.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-71px -39px}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -39px}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -39px}.jstree-default-small .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-small>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-small .jstree-file{background:url(32px.png) -103px -71px no-repeat}.jstree-default-small .jstree-folder{background:url(32px.png) -263px -7px no-repeat}.jstree-default-small>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-small{line-height:18px;padding:0 4px}#jstree-dnd.jstree-default-small .jstree-ok,#jstree-dnd.jstree-default-small .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-small i{background:0 0;width:18px;height:18px;line-height:18px}#jstree-dnd.jstree-default-small .jstree-ok{background-position:-7px -71px}#jstree-dnd.jstree-default-small .jstree-er{background-position:-39px -71px}.jstree-default-small .jstree-ellipsis{overflow:hidden}.jstree-default-small .jstree-ellipsis .jstree-anchor{width:calc(100% - 23px);text-overflow:ellipsis;overflow:hidden}.jstree-default-small .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==)}.jstree-default-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-large .jstree-node{min-height:32px;line-height:32px;margin-left:32px;min-width:32px}.jstree-default-large .jstree-anchor{line-height:32px;height:32px}.jstree-default-large .jstree-icon{width:32px;height:32px;line-height:32px}.jstree-default-large .jstree-icon:empty{width:32px;height:32px;line-height:32px}.jstree-default-large.jstree-rtl .jstree-node{margin-right:32px}.jstree-default-large .jstree-wholerow{height:32px}.jstree-default-large .jstree-node,.jstree-default-large .jstree-icon{background-image:url(32px.png)}.jstree-default-large .jstree-node{background-position:-288px 0;background-repeat:repeat-y}.jstree-default-large .jstree-last{background:0 0}.jstree-default-large .jstree-open>.jstree-ocl{background-position:-128px 0}.jstree-default-large .jstree-closed>.jstree-ocl{background-position:-96px 0}.jstree-default-large .jstree-leaf>.jstree-ocl{background-position:-64px 0}.jstree-default-large .jstree-themeicon{background-position:-256px 0}.jstree-default-large>.jstree-no-dots .jstree-node,.jstree-default-large>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-large>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px 0}.jstree-default-large>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 0}.jstree-default-large .jstree-disabled{background:0 0}.jstree-default-large .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-large .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-large .jstree-checkbox{background-position:-160px 0}.jstree-default-large .jstree-checkbox:hover{background-position:-160px -32px}.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-large .jstree-checked>.jstree-checkbox{background-position:-224px 0}.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-large .jstree-checked>.jstree-checkbox:hover{background-position:-224px -32px}.jstree-default-large .jstree-anchor>.jstree-undetermined{background-position:-192px 0}.jstree-default-large .jstree-anchor>.jstree-undetermined:hover{background-position:-192px -32px}.jstree-default-large .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-large>.jstree-striped{background-size:auto 64px}.jstree-default-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-large.jstree-rtl .jstree-last{background:0 0}.jstree-default-large.jstree-rtl .jstree-open>.jstree-ocl{background-position:-128px -32px}.jstree-default-large.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-96px -32px}.jstree-default-large.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-64px -32px}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px -32px}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 -32px}.jstree-default-large .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-large>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-large .jstree-file{background:url(32px.png) -96px -64px no-repeat}.jstree-default-large .jstree-folder{background:url(32px.png) -256px 0 no-repeat}.jstree-default-large>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-large{line-height:32px;padding:0 4px}#jstree-dnd.jstree-default-large .jstree-ok,#jstree-dnd.jstree-default-large .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-large i{background:0 0;width:32px;height:32px;line-height:32px}#jstree-dnd.jstree-default-large .jstree-ok{background-position:0 -64px}#jstree-dnd.jstree-default-large .jstree-er{background-position:-32px -64px}.jstree-default-large .jstree-ellipsis{overflow:hidden}.jstree-default-large .jstree-ellipsis .jstree-anchor{width:calc(100% - 37px);text-overflow:ellipsis;overflow:hidden}.jstree-default-large .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==)}.jstree-default-large.jstree-rtl .jstree-last{background:0 0}@media (max-width:768px){#jstree-dnd.jstree-dnd-responsive{line-height:40px;font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}#jstree-dnd.jstree-dnd-responsive>i{background:0 0;width:40px;height:40px}#jstree-dnd.jstree-dnd-responsive>.jstree-ok{background-image:url(40px.png);background-position:0 -200px;background-size:120px 240px}#jstree-dnd.jstree-dnd-responsive>.jstree-er{background-image:url(40px.png);background-position:-40px -200px;background-size:120px 240px}#jstree-marker.jstree-dnd-responsive{border-left-width:10px;border-top-width:10px;border-bottom-width:10px;margin-top:-10px}}@media (max-width:768px){.jstree-default-responsive .jstree-icon{background-image:url(40px.png)}.jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-responsive .jstree-node{min-height:40px;line-height:40px;margin-left:40px;min-width:40px;white-space:nowrap}.jstree-default-responsive .jstree-anchor{line-height:40px;height:40px}.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-icon:empty{width:40px;height:40px;line-height:40px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0}.jstree-default-responsive.jstree-rtl .jstree-node{margin-left:0;margin-right:40px;background:0 0}.jstree-default-responsive.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-default-responsive .jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-size:120px 240px}.jstree-default-responsive .jstree-leaf>.jstree-ocl,.jstree-default-responsive.jstree-rtl .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-responsive .jstree-open>.jstree-ocl{background-position:0 0!important}.jstree-default-responsive .jstree-closed>.jstree-ocl{background-position:0 -40px!important}.jstree-default-responsive.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-40px 0!important}.jstree-default-responsive .jstree-themeicon{background-position:-40px -40px}.jstree-default-responsive .jstree-checkbox,.jstree-default-responsive .jstree-checkbox:hover{background-position:-40px -80px}.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-responsive .jstree-checked>.jstree-checkbox,.jstree-default-responsive .jstree-checked>.jstree-checkbox:hover{background-position:0 -80px}.jstree-default-responsive .jstree-anchor>.jstree-undetermined,.jstree-default-responsive .jstree-anchor>.jstree-undetermined:hover{background-position:0 -120px}.jstree-default-responsive .jstree-anchor{font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}.jstree-default-responsive>.jstree-striped{background:0 0}.jstree-default-responsive .jstree-wholerow{border-top:1px solid rgba(255,255,255,.7);border-bottom:1px solid rgba(64,64,64,.2);background:#ebebeb;height:40px}.jstree-default-responsive .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default-responsive .jstree-wholerow-clicked{background:#beebff}.jstree-default-responsive .jstree-children .jstree-last>.jstree-wholerow{box-shadow:inset 0 -6px 3px -5px #666}.jstree-default-responsive .jstree-children .jstree-open>.jstree-wholerow{box-shadow:inset 0 6px 3px -5px #666;border-top:0}.jstree-default-responsive .jstree-children .jstree-open+.jstree-open{box-shadow:none}.jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-node>.jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-image:url(40px.png);background-size:120px 240px}.jstree-default-responsive .jstree-node{background-position:-80px 0;background-repeat:repeat-y}.jstree-default-responsive .jstree-last{background:0 0}.jstree-default-responsive .jstree-leaf>.jstree-ocl{background-position:-40px -120px}.jstree-default-responsive .jstree-last>.jstree-ocl{background-position:-40px -160px}.jstree-default-responsive .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-responsive .jstree-file{background:url(40px.png) 0 -160px no-repeat;background-size:120px 240px}.jstree-default-responsive .jstree-folder{background:url(40px.png) -40px -40px no-repeat;background-size:120px 240px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}} \ No newline at end of file diff --git a/libs/jstree/themes/mixed/throbber.gif b/libs/jstree/themes/mixed/throbber.gif deleted file mode 100644 index cd75035..0000000 Binary files a/libs/jstree/themes/mixed/throbber.gif and /dev/null differ diff --git a/libs/openlayers3/LICENSE b/libs/openlayers3/LICENSE deleted file mode 100644 index d2cf0d7..0000000 --- a/libs/openlayers3/LICENSE +++ /dev/null @@ -1,4 +0,0 @@ -http://openlayers.org/ - -Code licensed under the 2-Clause BSD. All documentation CC BY 3.0. Thanks to our sponsors. -https://tldrlegal.com/license/bsd-2-clause-license-(freebsd) \ No newline at end of file diff --git a/libs/openlayers3/ol-deps.js b/libs/openlayers3/ol-deps.js deleted file mode 100644 index eaa5be2..0000000 --- a/libs/openlayers3/ol-deps.js +++ /dev/null @@ -1,1716 +0,0 @@ -// This file was autogenerated by depswriter.py. -// Please do not edit. -goog.addDependency('../../../ol.ext/pbf.js', ['ol.ext.pbf'], [], false); -goog.addDependency('../../../ol.ext/pixelworks.js', ['ol.ext.pixelworks'], [], false); -goog.addDependency('../../../ol.ext/rbush.js', ['ol.ext.rbush'], [], false); -goog.addDependency('../../../ol.ext/vectortile.js', ['ol.ext.vectortile'], [], false); -goog.addDependency('../../../ol/ol/animation.js', ['ol.animation'], ['ol', 'ol.PreRenderFunction', 'ol.ViewHint', 'ol.coordinate', 'ol.easing'], false); -goog.addDependency('../../../ol/ol/array.js', ['ol.array'], ['goog.array', 'goog.asserts'], false); -goog.addDependency('../../../ol/ol/attribution.js', ['ol.Attribution'], ['goog.math', 'ol.TileRange'], false); -goog.addDependency('../../../ol/ol/canvasfunction.js', ['ol.CanvasFunctionType'], [], false); -goog.addDependency('../../../ol/ol/centerconstraint.js', ['ol.CenterConstraint', 'ol.CenterConstraintType'], ['ol.math'], false); -goog.addDependency('../../../ol/ol/collection.js', ['ol.Collection', 'ol.CollectionEvent', 'ol.CollectionEventType'], ['goog.array', 'goog.events.Event', 'ol.Object'], false); -goog.addDependency('../../../ol/ol/color/color.js', ['ol.Color', 'ol.color'], ['goog.asserts', 'goog.color', 'goog.color.names', 'goog.vec.Mat4', 'ol', 'ol.math'], false); -goog.addDependency('../../../ol/ol/constraints.js', ['ol.Constraints'], ['ol.CenterConstraintType', 'ol.ResolutionConstraintType', 'ol.RotationConstraintType'], false); -goog.addDependency('../../../ol/ol/control/attributioncontrol.js', ['ol.control.Attribution'], ['goog.asserts', 'goog.dom', 'goog.dom.classlist', 'goog.events', 'goog.events.EventType', 'goog.object', 'goog.style', 'ol', 'ol.Attribution', 'ol.control.Control', 'ol.css', 'ol.source.Tile'], false); -goog.addDependency('../../../ol/ol/control/control.js', ['ol.control.Control'], ['goog.dom', 'goog.events', 'ol', 'ol.MapEventType', 'ol.Object'], false); -goog.addDependency('../../../ol/ol/control/controldefaults.js', ['ol.control'], ['ol', 'ol.Collection', 'ol.control.Attribution', 'ol.control.Rotate', 'ol.control.Zoom'], false); -goog.addDependency('../../../ol/ol/control/fullscreencontrol.js', ['ol.control.FullScreen'], ['goog.asserts', 'goog.dom', 'goog.dom.classlist', 'goog.dom.fullscreen', 'goog.dom.fullscreen.EventType', 'goog.events', 'goog.events.EventType', 'ol', 'ol.control.Control', 'ol.css'], false); -goog.addDependency('../../../ol/ol/control/mousepositioncontrol.js', ['ol.control.MousePosition'], ['goog.dom', 'goog.events', 'goog.events.EventType', 'ol.CoordinateFormatType', 'ol.Object', 'ol.Pixel', 'ol.TransformFunction', 'ol.control.Control', 'ol.proj', 'ol.proj.Projection'], false); -goog.addDependency('../../../ol/ol/control/overviewmapcontrol.js', ['ol.control.OverviewMap'], ['goog.asserts', 'goog.dom', 'goog.dom.classlist', 'goog.events', 'goog.events.EventType', 'goog.math.Size', 'goog.style', 'ol', 'ol.Collection', 'ol.Map', 'ol.MapEventType', 'ol.Object', 'ol.ObjectEventType', 'ol.Overlay', 'ol.OverlayPositioning', 'ol.View', 'ol.ViewProperty', 'ol.control.Control', 'ol.coordinate', 'ol.css', 'ol.extent'], false); -goog.addDependency('../../../ol/ol/control/rotatecontrol.js', ['ol.control.Rotate'], ['goog.dom', 'goog.dom.classlist', 'goog.events', 'goog.events.EventType', 'ol', 'ol.animation', 'ol.control.Control', 'ol.css', 'ol.easing'], false); -goog.addDependency('../../../ol/ol/control/scalelinecontrol.js', ['ol.control.ScaleLine', 'ol.control.ScaleLineProperty', 'ol.control.ScaleLineUnits'], ['goog.asserts', 'goog.dom', 'goog.events', 'goog.style', 'ol', 'ol.Object', 'ol.TransformFunction', 'ol.control.Control', 'ol.css', 'ol.math', 'ol.proj', 'ol.proj.METERS_PER_UNIT', 'ol.proj.Units', 'ol.sphere.NORMAL'], false); -goog.addDependency('../../../ol/ol/control/zoomcontrol.js', ['ol.control.Zoom'], ['goog.dom', 'goog.events', 'goog.events.EventType', 'ol.animation', 'ol.control.Control', 'ol.css', 'ol.easing'], false); -goog.addDependency('../../../ol/ol/control/zoomslidercontrol.js', ['ol.control.ZoomSlider'], ['goog.asserts', 'goog.dom', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.fx.DragEvent', 'goog.fx.Dragger', 'goog.fx.Dragger.EventType', 'goog.math.Rect', 'goog.style', 'ol.Size', 'ol.ViewHint', 'ol.animation', 'ol.control.Control', 'ol.css', 'ol.easing', 'ol.math'], false); -goog.addDependency('../../../ol/ol/control/zoomtoextentcontrol.js', ['ol.control.ZoomToExtent'], ['goog.asserts', 'goog.dom', 'goog.events', 'goog.events.EventType', 'ol.control.Control', 'ol.css'], false); -goog.addDependency('../../../ol/ol/coordinate.js', ['ol.Coordinate', 'ol.CoordinateFormatType', 'ol.coordinate'], ['goog.math', 'goog.string'], false); -goog.addDependency('../../../ol/ol/css.js', ['ol.css'], [], false); -goog.addDependency('../../../ol/ol/deviceorientation.js', ['ol.DeviceOrientation', 'ol.DeviceOrientationProperty'], ['goog.events', 'ol', 'ol.Object', 'ol.has', 'ol.math'], false); -goog.addDependency('../../../ol/ol/dom/dom.js', ['ol.dom', 'ol.dom.BrowserFeature'], ['goog.asserts', 'goog.dom', 'goog.userAgent', 'goog.vec.Mat4', 'ol'], false); -goog.addDependency('../../../ol/ol/easing.js', ['ol.easing'], [], false); -goog.addDependency('../../../ol/ol/events/condition.js', ['ol.events.ConditionType', 'ol.events.condition'], ['goog.asserts', 'goog.functions', 'ol.MapBrowserEvent.EventType', 'ol.MapBrowserPointerEvent'], false); -goog.addDependency('../../../ol/ol/extent.js', ['ol.Extent', 'ol.extent', 'ol.extent.Corner', 'ol.extent.Relationship'], ['goog.asserts', 'goog.vec.Mat4', 'ol.Coordinate', 'ol.Size', 'ol.TransformFunction'], false); -goog.addDependency('../../../ol/ol/feature.js', ['ol.Feature', 'ol.FeatureStyleFunction'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'ol', 'ol.Object', 'ol.geom.Geometry', 'ol.style.Style'], false); -goog.addDependency('../../../ol/ol/featureloader.js', ['ol.FeatureLoader', 'ol.FeatureUrlFunction', 'ol.featureloader'], ['goog.asserts', 'goog.events', 'goog.net.EventType', 'goog.net.XhrIo', 'goog.net.XhrIo.ResponseType', 'ol.TileState', 'ol.format.FormatType', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/esrijsonformat.js', ['ol.format.EsriJSON'], ['goog.array', 'goog.asserts', 'goog.object', 'ol.Feature', 'ol.extent', 'ol.format.Feature', 'ol.format.JSONFeature', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.LineString', 'ol.geom.LinearRing', 'ol.geom.MultiLineString', 'ol.geom.MultiPoint', 'ol.geom.MultiPolygon', 'ol.geom.Point', 'ol.geom.Polygon', 'ol.geom.flat.orient', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/format/featureformat.js', ['ol.format.Feature'], ['ol.geom.Geometry', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/format/format.js', ['ol.format.FormatType'], [], false); -goog.addDependency('../../../ol/ol/format/geojsonformat.js', ['ol.format.GeoJSON'], ['goog.asserts', 'goog.object', 'ol.Feature', 'ol.format.Feature', 'ol.format.JSONFeature', 'ol.geom.GeometryCollection', 'ol.geom.LineString', 'ol.geom.MultiLineString', 'ol.geom.MultiPoint', 'ol.geom.MultiPolygon', 'ol.geom.Point', 'ol.geom.Polygon', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/format/gml/gml2format.js', ['ol.format.GML2'], ['goog.asserts', 'goog.dom.NodeType', 'ol.extent', 'ol.format.GMLBase', 'ol.format.XSD', 'ol.proj', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/gml/gml3format.js', ['ol.format.GML', 'ol.format.GML3'], ['goog.array', 'goog.asserts', 'goog.dom.NodeType', 'goog.object', 'ol', 'ol.Feature', 'ol.extent', 'ol.format.Feature', 'ol.format.GMLBase', 'ol.format.XSD', 'ol.geom.Geometry', 'ol.geom.GeometryLayout', 'ol.geom.LineString', 'ol.geom.LinearRing', 'ol.geom.MultiLineString', 'ol.geom.MultiPolygon', 'ol.geom.Point', 'ol.geom.Polygon', 'ol.proj', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/gml/gmlbaseformat.js', ['ol.format.GMLBase'], ['goog.array', 'goog.asserts', 'goog.dom.NodeType', 'goog.object', 'goog.string', 'ol.Feature', 'ol.format.Feature', 'ol.format.XMLFeature', 'ol.geom.Geometry', 'ol.geom.GeometryLayout', 'ol.geom.LineString', 'ol.geom.LinearRing', 'ol.geom.MultiLineString', 'ol.geom.MultiPoint', 'ol.geom.MultiPolygon', 'ol.geom.Point', 'ol.geom.Polygon', 'ol.proj', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/gpxformat.js', ['ol.format.GPX'], ['goog.asserts', 'goog.dom.NodeType', 'ol.Feature', 'ol.array', 'ol.format.Feature', 'ol.format.XMLFeature', 'ol.format.XSD', 'ol.geom.GeometryLayout', 'ol.geom.LineString', 'ol.geom.MultiLineString', 'ol.geom.Point', 'ol.proj', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/igcformat.js', ['ol.format.IGC', 'ol.format.IGCZ'], ['goog.asserts', 'goog.string', 'goog.string.newlines', 'ol.Feature', 'ol.format.Feature', 'ol.format.TextFeature', 'ol.geom.GeometryLayout', 'ol.geom.LineString', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/format/jsonfeatureformat.js', ['ol.format.JSONFeature'], ['goog.asserts', 'goog.json', 'ol.format.Feature', 'ol.format.FormatType'], false); -goog.addDependency('../../../ol/ol/format/kmlformat.js', ['ol.format.KML'], ['goog.Uri', 'goog.array', 'goog.asserts', 'goog.dom.NodeType', 'goog.object', 'ol', 'ol.Feature', 'ol.FeatureStyleFunction', 'ol.array', 'ol.color', 'ol.format.Feature', 'ol.format.XMLFeature', 'ol.format.XSD', 'ol.geom.Geometry', 'ol.geom.GeometryCollection', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.LineString', 'ol.geom.LinearRing', 'ol.geom.MultiLineString', 'ol.geom.MultiPoint', 'ol.geom.MultiPolygon', 'ol.geom.Point', 'ol.geom.Polygon', 'ol.math', 'ol.proj', 'ol.style.Fill', 'ol.style.Icon', 'ol.style.IconAnchorUnits', 'ol.style.IconOrigin', 'ol.style.Image', 'ol.style.Stroke', 'ol.style.Style', 'ol.style.Text', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/mvtformat.js', ['ol.format.MVT'], ['goog.asserts', 'ol.Feature', 'ol.ext.pbf', 'ol.ext.vectortile', 'ol.format.Feature', 'ol.format.FormatType', 'ol.geom.Geometry', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.LineString', 'ol.geom.MultiLineString', 'ol.geom.MultiPoint', 'ol.geom.Point', 'ol.geom.Polygon', 'ol.proj', 'ol.proj.Projection', 'ol.proj.Units', 'ol.render.Feature'], false); -goog.addDependency('../../../ol/ol/format/osmxmlformat.js', ['ol.format.OSMXML'], ['goog.array', 'goog.asserts', 'goog.dom.NodeType', 'goog.object', 'ol.Feature', 'ol.format.Feature', 'ol.format.XMLFeature', 'ol.geom.GeometryLayout', 'ol.geom.LineString', 'ol.geom.Point', 'ol.geom.Polygon', 'ol.proj', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/owsformat.js', ['ol.format.OWS'], ['goog.asserts', 'goog.dom.NodeType', 'ol.format.XLink', 'ol.format.XML', 'ol.format.XSD', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/polylineformat.js', ['ol.format.Polyline'], ['goog.asserts', 'ol.Feature', 'ol.format.Feature', 'ol.format.TextFeature', 'ol.geom.GeometryLayout', 'ol.geom.LineString', 'ol.geom.SimpleGeometry', 'ol.geom.flat.flip', 'ol.geom.flat.inflate', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/format/textfeatureformat.js', ['ol.format.TextFeature'], ['goog.asserts', 'ol.format.Feature', 'ol.format.FormatType'], false); -goog.addDependency('../../../ol/ol/format/topojsonformat.js', ['ol.format.TopoJSON'], ['goog.asserts', 'goog.object', 'ol.Feature', 'ol.format.Feature', 'ol.format.JSONFeature', 'ol.geom.LineString', 'ol.geom.MultiLineString', 'ol.geom.MultiPoint', 'ol.geom.MultiPolygon', 'ol.geom.Point', 'ol.geom.Polygon', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/format/wfsformat.js', ['ol.format.WFS'], ['goog.asserts', 'goog.dom.NodeType', 'goog.object', 'ol', 'ol.format.GML3', 'ol.format.GMLBase', 'ol.format.XMLFeature', 'ol.format.XSD', 'ol.geom.Geometry', 'ol.proj', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/wktformat.js', ['ol.format.WKT'], ['goog.asserts', 'ol', 'ol.Feature', 'ol.format.Feature', 'ol.format.TextFeature', 'ol.geom.Geometry', 'ol.geom.GeometryCollection', 'ol.geom.GeometryType', 'ol.geom.LineString', 'ol.geom.MultiLineString', 'ol.geom.MultiPoint', 'ol.geom.MultiPolygon', 'ol.geom.Point', 'ol.geom.Polygon'], false); -goog.addDependency('../../../ol/ol/format/wmscapabilitiesformat.js', ['ol.format.WMSCapabilities'], ['goog.asserts', 'goog.dom.NodeType', 'goog.object', 'ol', 'ol.format.XLink', 'ol.format.XML', 'ol.format.XSD', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/wmsgetfeatureinfoformat.js', ['ol.format.WMSGetFeatureInfo'], ['goog.array', 'goog.asserts', 'goog.dom.NodeType', 'goog.object', 'ol.format.GML2', 'ol.format.XMLFeature', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/wmtscapabilitiesformat.js', ['ol.format.WMTSCapabilities'], ['goog.asserts', 'goog.dom.NodeType', 'ol.extent', 'ol.format.OWS', 'ol.format.XLink', 'ol.format.XML', 'ol.format.XSD', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/xlinkformat.js', ['ol.format.XLink'], [], false); -goog.addDependency('../../../ol/ol/format/xmlfeatureformat.js', ['ol.format.XMLFeature'], ['goog.array', 'goog.asserts', 'goog.dom.NodeType', 'goog.dom.xml', 'ol.format.Feature', 'ol.format.FormatType', 'ol.proj', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/xmlformat.js', ['ol.format.XML'], ['goog.asserts', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/xsdformat.js', ['ol.format.XSD'], ['goog.asserts', 'goog.string', 'ol', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/framestate.js', ['ol.PostRenderFunction', 'ol.PreRenderFunction'], [], false); -goog.addDependency('../../../ol/ol/geolocation.js', ['ol.Geolocation', 'ol.GeolocationProperty'], ['goog.events', 'goog.events.EventType', 'ol.Coordinate', 'ol.Object', 'ol.geom.Geometry', 'ol.geom.Polygon', 'ol.has', 'ol.math', 'ol.proj', 'ol.sphere.WGS84'], false); -goog.addDependency('../../../ol/ol/geom/circle.js', ['ol.geom.Circle'], ['goog.asserts', 'ol.extent', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.SimpleGeometry', 'ol.geom.flat.deflate', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/geom/flat/areaflatgeom.js', ['ol.geom.flat.area'], [], false); -goog.addDependency('../../../ol/ol/geom/flat/centerflatgeom.js', ['ol.geom.flat.center'], ['ol.extent'], false); -goog.addDependency('../../../ol/ol/geom/flat/closestflatgeom.js', ['ol.geom.flat.closest'], ['goog.asserts', 'goog.math', 'ol.math'], false); -goog.addDependency('../../../ol/ol/geom/flat/containsflatgeom.js', ['ol.geom.flat.contains'], ['goog.asserts', 'ol.extent'], false); -goog.addDependency('../../../ol/ol/geom/flat/deflateflatgeom.js', ['ol.geom.flat.deflate'], ['goog.asserts'], false); -goog.addDependency('../../../ol/ol/geom/flat/flipflatgeom.js', ['ol.geom.flat.flip'], ['goog.asserts'], false); -goog.addDependency('../../../ol/ol/geom/flat/geodesicflatgeom.js', ['ol.geom.flat.geodesic'], ['goog.asserts', 'goog.object', 'ol.TransformFunction', 'ol.math', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/geom/flat/inflateflatgeom.js', ['ol.geom.flat.inflate'], [], false); -goog.addDependency('../../../ol/ol/geom/flat/interiorpointflatgeom.js', ['ol.geom.flat.interiorpoint'], ['goog.asserts', 'ol.geom.flat.contains'], false); -goog.addDependency('../../../ol/ol/geom/flat/interpolateflatgeom.js', ['ol.geom.flat.interpolate'], ['goog.array', 'goog.asserts', 'goog.math'], false); -goog.addDependency('../../../ol/ol/geom/flat/intersectsextent.js', ['ol.geom.flat.intersectsextent'], ['goog.asserts', 'ol.extent', 'ol.geom.flat.contains', 'ol.geom.flat.segments'], false); -goog.addDependency('../../../ol/ol/geom/flat/lengthflatgeom.js', ['ol.geom.flat.length'], [], false); -goog.addDependency('../../../ol/ol/geom/flat/orientflatgeom.js', ['ol.geom.flat.orient'], ['ol', 'ol.geom.flat.reverse'], false); -goog.addDependency('../../../ol/ol/geom/flat/reverseflatgeom.js', ['ol.geom.flat.reverse'], [], false); -goog.addDependency('../../../ol/ol/geom/flat/segmentsflatgeom.js', ['ol.geom.flat.segments'], [], false); -goog.addDependency('../../../ol/ol/geom/flat/simplifyflatgeom.js', ['ol.geom.flat.simplify'], ['ol.math'], false); -goog.addDependency('../../../ol/ol/geom/flat/transformflatgeom.js', ['ol.geom.flat.transform'], ['goog.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/geom/geometry.js', ['ol.geom.Geometry', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType'], ['goog.asserts', 'goog.functions', 'ol.Object', 'ol.extent', 'ol.proj', 'ol.proj.Units'], false); -goog.addDependency('../../../ol/ol/geom/geometrycollection.js', ['ol.geom.GeometryCollection'], ['goog.events', 'goog.events.EventType', 'goog.object', 'ol.extent', 'ol.geom.Geometry', 'ol.geom.GeometryType'], false); -goog.addDependency('../../../ol/ol/geom/linearring.js', ['ol.geom.LinearRing'], ['ol.extent', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.SimpleGeometry', 'ol.geom.flat.area', 'ol.geom.flat.closest', 'ol.geom.flat.deflate', 'ol.geom.flat.inflate', 'ol.geom.flat.simplify'], false); -goog.addDependency('../../../ol/ol/geom/linestring.js', ['ol.geom.LineString'], ['goog.array', 'goog.asserts', 'ol', 'ol.extent', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.SimpleGeometry', 'ol.geom.flat.closest', 'ol.geom.flat.deflate', 'ol.geom.flat.inflate', 'ol.geom.flat.interpolate', 'ol.geom.flat.intersectsextent', 'ol.geom.flat.length', 'ol.geom.flat.segments', 'ol.geom.flat.simplify'], false); -goog.addDependency('../../../ol/ol/geom/multilinestring.js', ['ol.geom.MultiLineString'], ['goog.array', 'goog.asserts', 'ol', 'ol.extent', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.LineString', 'ol.geom.SimpleGeometry', 'ol.geom.flat.closest', 'ol.geom.flat.deflate', 'ol.geom.flat.inflate', 'ol.geom.flat.interpolate', 'ol.geom.flat.intersectsextent', 'ol.geom.flat.simplify'], false); -goog.addDependency('../../../ol/ol/geom/multipoint.js', ['ol.geom.MultiPoint'], ['goog.array', 'goog.asserts', 'ol.extent', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.Point', 'ol.geom.SimpleGeometry', 'ol.geom.flat.deflate', 'ol.geom.flat.inflate', 'ol.math'], false); -goog.addDependency('../../../ol/ol/geom/multipolygon.js', ['ol.geom.MultiPolygon'], ['goog.array', 'goog.asserts', 'goog.object', 'ol', 'ol.extent', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.MultiPoint', 'ol.geom.Polygon', 'ol.geom.SimpleGeometry', 'ol.geom.flat.area', 'ol.geom.flat.center', 'ol.geom.flat.closest', 'ol.geom.flat.contains', 'ol.geom.flat.deflate', 'ol.geom.flat.inflate', 'ol.geom.flat.interiorpoint', 'ol.geom.flat.intersectsextent', 'ol.geom.flat.orient', 'ol.geom.flat.simplify'], false); -goog.addDependency('../../../ol/ol/geom/point.js', ['ol.geom.Point'], ['ol.extent', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.SimpleGeometry', 'ol.geom.flat.deflate', 'ol.math'], false); -goog.addDependency('../../../ol/ol/geom/polygon.js', ['ol.geom.Polygon'], ['goog.array', 'goog.asserts', 'goog.math', 'ol', 'ol.extent', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.LinearRing', 'ol.geom.Point', 'ol.geom.SimpleGeometry', 'ol.geom.flat.area', 'ol.geom.flat.closest', 'ol.geom.flat.contains', 'ol.geom.flat.deflate', 'ol.geom.flat.inflate', 'ol.geom.flat.interiorpoint', 'ol.geom.flat.intersectsextent', 'ol.geom.flat.orient', 'ol.geom.flat.simplify'], false); -goog.addDependency('../../../ol/ol/geom/simplegeometry.js', ['ol.geom.SimpleGeometry'], ['goog.asserts', 'goog.functions', 'goog.object', 'ol.extent', 'ol.geom.Geometry', 'ol.geom.GeometryLayout', 'ol.geom.flat.transform'], false); -goog.addDependency('../../../ol/ol/graticule.js', ['ol.Graticule'], ['goog.asserts', 'ol.extent', 'ol.geom.GeometryLayout', 'ol.geom.LineString', 'ol.geom.flat.geodesic', 'ol.math', 'ol.proj', 'ol.render.EventType', 'ol.style.Stroke'], false); -goog.addDependency('../../../ol/ol/has.js', ['ol.has'], ['goog.dom', 'ol', 'ol.dom', 'ol.webgl'], false); -goog.addDependency('../../../ol/ol/image.js', ['ol.Image'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'goog.object', 'ol.ImageBase', 'ol.ImageState', 'ol.extent'], false); -goog.addDependency('../../../ol/ol/imagebase.js', ['ol.ImageBase', 'ol.ImageState'], ['goog.asserts', 'goog.events.EventTarget', 'goog.events.EventType', 'ol.Attribution', 'ol.Extent'], false); -goog.addDependency('../../../ol/ol/imagecanvas.js', ['ol.ImageCanvas'], ['goog.asserts', 'ol.ImageBase', 'ol.ImageState'], false); -goog.addDependency('../../../ol/ol/imageloadfunction.js', ['ol.ImageLoadFunctionType'], [], false); -goog.addDependency('../../../ol/ol/imagetile.js', ['ol.ImageTile'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'goog.object', 'ol.Tile', 'ol.TileCoord', 'ol.TileLoadFunctionType', 'ol.TileState'], false); -goog.addDependency('../../../ol/ol/imageurlfunction.js', ['ol.ImageUrlFunction', 'ol.ImageUrlFunctionType'], ['ol.Size'], false); -goog.addDependency('../../../ol/ol/interaction/doubleclickzoominteraction.js', ['ol.interaction.DoubleClickZoom'], ['goog.asserts', 'ol.MapBrowserEvent', 'ol.MapBrowserEvent.EventType', 'ol.interaction.Interaction'], false); -goog.addDependency('../../../ol/ol/interaction/draganddropinteraction.js', ['ol.interaction.DragAndDrop', 'ol.interaction.DragAndDropEvent'], ['goog.asserts', 'goog.events', 'goog.events.Event', 'goog.events.FileDropHandler', 'goog.events.FileDropHandler.EventType', 'goog.fs.FileReader', 'goog.functions', 'ol.interaction.Interaction', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/interaction/dragboxinteraction.js', ['ol.DragBoxEvent', 'ol.interaction.DragBox'], ['goog.events.Event', 'ol', 'ol.events.ConditionType', 'ol.events.condition', 'ol.interaction.Pointer', 'ol.render.Box'], false); -goog.addDependency('../../../ol/ol/interaction/dragpaninteraction.js', ['ol.interaction.DragPan'], ['goog.asserts', 'ol.Kinetic', 'ol.Pixel', 'ol.PreRenderFunction', 'ol.ViewHint', 'ol.coordinate', 'ol.events.condition', 'ol.interaction.Pointer'], false); -goog.addDependency('../../../ol/ol/interaction/dragrotateandzoominteraction.js', ['ol.interaction.DragRotateAndZoom'], ['goog.math.Vec2', 'ol', 'ol.ViewHint', 'ol.events.ConditionType', 'ol.events.condition', 'ol.interaction.Interaction', 'ol.interaction.Pointer'], false); -goog.addDependency('../../../ol/ol/interaction/dragrotateinteraction.js', ['ol.interaction.DragRotate'], ['ol', 'ol.ViewHint', 'ol.events.ConditionType', 'ol.events.condition', 'ol.interaction.Interaction', 'ol.interaction.Pointer'], false); -goog.addDependency('../../../ol/ol/interaction/dragzoominteraction.js', ['ol.interaction.DragZoom'], ['goog.asserts', 'ol.animation', 'ol.easing', 'ol.events.condition', 'ol.extent', 'ol.interaction.DragBox'], false); -goog.addDependency('../../../ol/ol/interaction/drawinteraction.js', ['ol.interaction.Draw', 'ol.interaction.DrawEvent', 'ol.interaction.DrawEventType', 'ol.interaction.DrawGeometryFunctionType', 'ol.interaction.DrawMode'], ['goog.asserts', 'goog.events', 'goog.events.Event', 'ol.Collection', 'ol.Coordinate', 'ol.Feature', 'ol.MapBrowserEvent', 'ol.MapBrowserEvent.EventType', 'ol.Object', 'ol.coordinate', 'ol.events.condition', 'ol.geom.Circle', 'ol.geom.GeometryType', 'ol.geom.LineString', 'ol.geom.MultiLineString', 'ol.geom.MultiPoint', 'ol.geom.MultiPolygon', 'ol.geom.Point', 'ol.geom.Polygon', 'ol.geom.SimpleGeometry', 'ol.interaction.InteractionProperty', 'ol.interaction.Pointer', 'ol.layer.Vector', 'ol.source.Vector'], false); -goog.addDependency('../../../ol/ol/interaction/interaction.js', ['ol.interaction.Interaction', 'ol.interaction.InteractionProperty'], ['ol', 'ol.MapBrowserEvent', 'ol.Object', 'ol.animation', 'ol.easing'], false); -goog.addDependency('../../../ol/ol/interaction/interactiondefaults.js', ['ol.interaction'], ['ol', 'ol.Collection', 'ol.Kinetic', 'ol.interaction.DoubleClickZoom', 'ol.interaction.DragPan', 'ol.interaction.DragRotate', 'ol.interaction.DragZoom', 'ol.interaction.KeyboardPan', 'ol.interaction.KeyboardZoom', 'ol.interaction.MouseWheelZoom', 'ol.interaction.PinchRotate', 'ol.interaction.PinchZoom'], false); -goog.addDependency('../../../ol/ol/interaction/keyboardpaninteraction.js', ['ol.interaction.KeyboardPan'], ['goog.asserts', 'goog.events.KeyCodes', 'goog.events.KeyHandler.EventType', 'goog.functions', 'ol', 'ol.coordinate', 'ol.events.ConditionType', 'ol.events.condition', 'ol.interaction.Interaction'], false); -goog.addDependency('../../../ol/ol/interaction/keyboardzoominteraction.js', ['ol.interaction.KeyboardZoom'], ['goog.asserts', 'goog.events.KeyHandler.EventType', 'ol.events.ConditionType', 'ol.events.condition', 'ol.interaction.Interaction'], false); -goog.addDependency('../../../ol/ol/interaction/modifyinteraction.js', ['ol.interaction.Modify', 'ol.interaction.ModifyEvent'], ['goog.array', 'goog.asserts', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.functions', 'ol', 'ol.Collection', 'ol.CollectionEventType', 'ol.Feature', 'ol.MapBrowserEvent.EventType', 'ol.MapBrowserPointerEvent', 'ol.ViewHint', 'ol.coordinate', 'ol.events.condition', 'ol.extent', 'ol.geom.GeometryType', 'ol.geom.LineString', 'ol.geom.MultiLineString', 'ol.geom.MultiPoint', 'ol.geom.MultiPolygon', 'ol.geom.Point', 'ol.geom.Polygon', 'ol.interaction.Pointer', 'ol.layer.Vector', 'ol.source.Vector', 'ol.structs.RBush'], false); -goog.addDependency('../../../ol/ol/interaction/mousewheelzoominteraction.js', ['ol.interaction.MouseWheelZoom'], ['goog.asserts', 'goog.events.MouseWheelEvent', 'goog.events.MouseWheelHandler.EventType', 'ol', 'ol.Coordinate', 'ol.interaction.Interaction', 'ol.math'], false); -goog.addDependency('../../../ol/ol/interaction/pinchrotateinteraction.js', ['ol.interaction.PinchRotate'], ['goog.asserts', 'goog.functions', 'goog.style', 'ol', 'ol.Coordinate', 'ol.ViewHint', 'ol.interaction.Interaction', 'ol.interaction.Pointer'], false); -goog.addDependency('../../../ol/ol/interaction/pinchzoominteraction.js', ['ol.interaction.PinchZoom'], ['goog.asserts', 'goog.functions', 'goog.style', 'ol', 'ol.Coordinate', 'ol.ViewHint', 'ol.interaction.Interaction', 'ol.interaction.Pointer'], false); -goog.addDependency('../../../ol/ol/interaction/pointerinteraction.js', ['ol.interaction.Pointer'], ['goog.functions', 'goog.object', 'ol', 'ol.MapBrowserEvent.EventType', 'ol.MapBrowserPointerEvent', 'ol.Pixel', 'ol.interaction.Interaction'], false); -goog.addDependency('../../../ol/ol/interaction/selectinteraction.js', ['ol.interaction.Select', 'ol.interaction.SelectEvent', 'ol.interaction.SelectEventType', 'ol.interaction.SelectFilterFunction'], ['goog.array', 'goog.asserts', 'goog.events', 'goog.events.Event', 'goog.functions', 'goog.object', 'ol.CollectionEventType', 'ol.Feature', 'ol.array', 'ol.events.condition', 'ol.geom.GeometryType', 'ol.interaction.Interaction', 'ol.layer.Vector', 'ol.source.Vector'], false); -goog.addDependency('../../../ol/ol/interaction/snapinteraction.js', ['ol.interaction.Snap', 'ol.interaction.SnapProperty'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'goog.object', 'ol', 'ol.Collection', 'ol.CollectionEvent', 'ol.CollectionEventType', 'ol.Extent', 'ol.Feature', 'ol.Object', 'ol.Observable', 'ol.coordinate', 'ol.extent', 'ol.geom.Geometry', 'ol.interaction.Pointer', 'ol.source.Vector', 'ol.source.VectorEvent', 'ol.source.VectorEventType', 'ol.structs.RBush'], false); -goog.addDependency('../../../ol/ol/interaction/translateinteraction.js', ['ol.interaction.Translate', 'ol.interaction.TranslateEvent'], ['goog.events', 'goog.events.Event', 'ol.array', 'ol.interaction.Pointer'], false); -goog.addDependency('../../../ol/ol/kinetic.js', ['ol.Kinetic'], ['ol.Coordinate', 'ol.PreRenderFunction', 'ol.animation'], false); -goog.addDependency('../../../ol/ol/layer/heatmaplayer.js', ['ol.layer.Heatmap'], ['goog.asserts', 'goog.events', 'goog.object', 'ol', 'ol.Object', 'ol.dom', 'ol.layer.Vector', 'ol.math', 'ol.render.EventType', 'ol.style.Icon', 'ol.style.Style'], false); -goog.addDependency('../../../ol/ol/layer/imagelayer.js', ['ol.layer.Image'], ['ol.layer.Layer'], false); -goog.addDependency('../../../ol/ol/layer/layer.js', ['ol.layer.Layer'], ['goog.events', 'goog.events.EventType', 'goog.object', 'ol', 'ol.Object', 'ol.layer.Base', 'ol.layer.LayerProperty', 'ol.render.EventType', 'ol.source.State'], false); -goog.addDependency('../../../ol/ol/layer/layerbase.js', ['ol.layer.Base', 'ol.layer.LayerProperty', 'ol.layer.LayerState'], ['goog.object', 'ol', 'ol.Object', 'ol.math', 'ol.source.State'], false); -goog.addDependency('../../../ol/ol/layer/layergroup.js', ['ol.layer.Group'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'goog.object', 'ol.Collection', 'ol.CollectionEvent', 'ol.CollectionEventType', 'ol.Object', 'ol.ObjectEventType', 'ol.extent', 'ol.layer.Base', 'ol.source.State'], false); -goog.addDependency('../../../ol/ol/layer/tilelayer.js', ['ol.layer.Tile'], ['goog.object', 'ol', 'ol.layer.Layer'], false); -goog.addDependency('../../../ol/ol/layer/vectorlayer.js', ['ol.layer.Vector'], ['goog.asserts', 'goog.object', 'ol', 'ol.layer.Layer', 'ol.style.Style'], false); -goog.addDependency('../../../ol/ol/layer/vectortilelayer.js', ['ol.layer.VectorTile'], ['goog.object', 'ol.layer.Vector'], false); -goog.addDependency('../../../ol/ol/loadingstrategy.js', ['ol.LoadingStrategy', 'ol.loadingstrategy'], ['ol.TileCoord'], false); -goog.addDependency('../../../ol/ol/map.js', ['ol.Map', 'ol.MapProperty'], ['goog.array', 'goog.asserts', 'goog.async.AnimationDelay', 'goog.async.nextTick', 'goog.debug.Console', 'goog.dom', 'goog.dom.ViewportSizeMonitor', 'goog.dom.classlist', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.Event', 'goog.events.EventType', 'goog.events.KeyHandler', 'goog.events.KeyHandler.EventType', 'goog.events.MouseWheelHandler', 'goog.events.MouseWheelHandler.EventType', 'goog.functions', 'goog.log', 'goog.log.Level', 'goog.object', 'goog.style', 'goog.vec.Mat4', 'ol.Collection', 'ol.CollectionEventType', 'ol.MapBrowserEvent', 'ol.MapBrowserEvent.EventType', 'ol.MapBrowserEventHandler', 'ol.MapEvent', 'ol.MapEventType', 'ol.Object', 'ol.ObjectEvent', 'ol.ObjectEventType', 'ol.Pixel', 'ol.PostRenderFunction', 'ol.PreRenderFunction', 'ol.RendererType', 'ol.Size', 'ol.TileQueue', 'ol.View', 'ol.ViewHint', 'ol.control', 'ol.extent', 'ol.has', 'ol.interaction', 'ol.layer.Base', 'ol.layer.Group', 'ol.proj', 'ol.proj.common', 'ol.renderer.Map', 'ol.renderer.canvas.Map', 'ol.renderer.dom.Map', 'ol.renderer.webgl.Map', 'ol.size', 'ol.structs.PriorityQueue', 'ol.tilecoord', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/mapbrowserevent.js', ['ol.MapBrowserEvent', 'ol.MapBrowserEvent.EventType', 'ol.MapBrowserEventHandler', 'ol.MapBrowserPointerEvent'], ['goog.asserts', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.object', 'ol', 'ol.Coordinate', 'ol.MapEvent', 'ol.Pixel', 'ol.pointer.PointerEvent', 'ol.pointer.PointerEventHandler'], false); -goog.addDependency('../../../ol/ol/mapevent.js', ['ol.MapEvent', 'ol.MapEventType'], ['goog.events.Event'], false); -goog.addDependency('../../../ol/ol/math.js', ['ol.math'], ['goog.asserts'], false); -goog.addDependency('../../../ol/ol/object.js', ['ol.Object', 'ol.ObjectEvent', 'ol.ObjectEventType'], ['goog.events', 'goog.events.Event', 'ol.Observable'], false); -goog.addDependency('../../../ol/ol/observable.js', ['ol.Observable'], ['goog.events', 'goog.events.EventTarget', 'goog.events.EventType'], false); -goog.addDependency('../../../ol/ol/ol.js', ['ol'], [], false); -goog.addDependency('../../../ol/ol/overlay.js', ['ol.Overlay', 'ol.OverlayPositioning', 'ol.OverlayProperty'], ['goog.asserts', 'goog.dom', 'goog.events', 'goog.style', 'ol.Coordinate', 'ol.Map', 'ol.MapEventType', 'ol.Object', 'ol.animation', 'ol.dom', 'ol.extent'], false); -goog.addDependency('../../../ol/ol/pixel.js', ['ol.Pixel'], [], false); -goog.addDependency('../../../ol/ol/pointer/eventsource.js', ['ol.pointer.EventSource'], ['goog.events.BrowserEvent'], false); -goog.addDependency('../../../ol/ol/pointer/mousesource.js', ['ol.pointer.MouseSource'], ['ol.pointer.EventSource'], false); -goog.addDependency('../../../ol/ol/pointer/mssource.js', ['ol.pointer.MsSource'], ['ol.pointer.EventSource'], false); -goog.addDependency('../../../ol/ol/pointer/nativesource.js', ['ol.pointer.NativeSource'], ['ol.pointer.EventSource'], false); -goog.addDependency('../../../ol/ol/pointer/pointerevent.js', ['ol.pointer.PointerEvent'], ['goog.events', 'goog.events.Event'], false); -goog.addDependency('../../../ol/ol/pointer/pointereventhandler.js', ['ol.pointer.PointerEventHandler'], ['goog.dom', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.EventTarget', 'ol.has', 'ol.pointer.MouseSource', 'ol.pointer.MsSource', 'ol.pointer.NativeSource', 'ol.pointer.PointerEvent', 'ol.pointer.TouchSource'], false); -goog.addDependency('../../../ol/ol/pointer/touchsource.js', ['ol.pointer.TouchSource'], ['goog.array', 'goog.object', 'ol', 'ol.pointer.EventSource', 'ol.pointer.MouseSource'], false); -goog.addDependency('../../../ol/ol/proj/common.js', ['ol.proj.common'], ['ol.proj', 'ol.proj.EPSG3857', 'ol.proj.EPSG4326'], false); -goog.addDependency('../../../ol/ol/proj/epsg3857projection.js', ['ol.proj.EPSG3857'], ['goog.asserts', 'ol.math', 'ol.proj', 'ol.proj.Projection', 'ol.proj.Units'], false); -goog.addDependency('../../../ol/ol/proj/epsg4326projection.js', ['ol.proj.EPSG4326'], ['ol.proj', 'ol.proj.Projection', 'ol.proj.Units'], false); -goog.addDependency('../../../ol/ol/proj/proj.js', ['ol.proj', 'ol.proj.METERS_PER_UNIT', 'ol.proj.Projection', 'ol.proj.ProjectionLike', 'ol.proj.Units'], ['goog.asserts', 'goog.object', 'ol', 'ol.Extent', 'ol.TransformFunction', 'ol.extent', 'ol.sphere.NORMAL'], false); -goog.addDependency('../../../ol/ol/raster/operation.js', ['ol.raster.Operation', 'ol.raster.OperationType'], [], false); -goog.addDependency('../../../ol/ol/raster/pixel.js', ['ol.raster.Pixel'], [], false); -goog.addDependency('../../../ol/ol/render/box.js', ['ol.render.Box'], ['goog.Disposable', 'goog.asserts', 'ol.geom.Polygon'], false); -goog.addDependency('../../../ol/ol/render/canvas/canvas.js', ['ol.render.canvas'], [], false); -goog.addDependency('../../../ol/ol/render/canvas/canvasimmediate.js', ['ol.render.canvas.Immediate'], ['goog.array', 'goog.asserts', 'goog.vec.Mat4', 'ol.color', 'ol.extent', 'ol.geom.flat.transform', 'ol.has', 'ol.render.VectorContext', 'ol.render.canvas', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/render/canvas/canvasreplay.js', ['ol.render.canvas.ImageReplay', 'ol.render.canvas.LineStringReplay', 'ol.render.canvas.PolygonReplay', 'ol.render.canvas.Replay', 'ol.render.canvas.ReplayGroup', 'ol.render.canvas.TextReplay'], ['goog.array', 'goog.asserts', 'goog.object', 'goog.vec.Mat4', 'ol', 'ol.array', 'ol.color', 'ol.dom', 'ol.extent', 'ol.extent.Relationship', 'ol.geom.flat.simplify', 'ol.geom.flat.transform', 'ol.has', 'ol.render.IReplayGroup', 'ol.render.VectorContext', 'ol.render.canvas', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/render/ireplay.js', ['ol.render.IReplayGroup'], ['ol.render.VectorContext'], false); -goog.addDependency('../../../ol/ol/render/renderevent.js', ['ol.render.Event', 'ol.render.EventType'], ['goog.events.Event', 'ol.render.VectorContext'], false); -goog.addDependency('../../../ol/ol/render/renderfeature.js', ['ol.render.Feature'], ['goog.asserts', 'goog.functions', 'ol.extent', 'ol.geom.GeometryType'], false); -goog.addDependency('../../../ol/ol/render/vector.js', ['ol.renderer.vector'], ['goog.asserts', 'ol.render.Feature', 'ol.render.IReplayGroup', 'ol.style.ImageState', 'ol.style.Style'], false); -goog.addDependency('../../../ol/ol/render/vectorcontext.js', ['ol.render.VectorContext'], [], false); -goog.addDependency('../../../ol/ol/render/webgl/webglimagedefaultshader.js', ['ol.render.webgl.imagereplay.shader.Default', 'ol.render.webgl.imagereplay.shader.Default.Locations', 'ol.render.webgl.imagereplay.shader.DefaultFragment', 'ol.render.webgl.imagereplay.shader.DefaultVertex'], ['ol.webgl.shader'], false); -goog.addDependency('../../../ol/ol/render/webgl/webglimmediate.js', ['ol.render.webgl.Immediate'], ['goog.array', 'ol.extent', 'ol.render.VectorContext', 'ol.render.webgl.ImageReplay', 'ol.render.webgl.ReplayGroup'], false); -goog.addDependency('../../../ol/ol/render/webgl/webglreplay.js', ['ol.render.webgl.ImageReplay', 'ol.render.webgl.ReplayGroup'], ['goog.asserts', 'goog.functions', 'goog.object', 'goog.vec.Mat4', 'ol.extent', 'ol.render.IReplayGroup', 'ol.render.VectorContext', 'ol.render.webgl.imagereplay.shader.Default', 'ol.render.webgl.imagereplay.shader.Default.Locations', 'ol.render.webgl.imagereplay.shader.DefaultFragment', 'ol.render.webgl.imagereplay.shader.DefaultVertex', 'ol.vec.Mat4', 'ol.webgl.Buffer', 'ol.webgl.Context'], false); -goog.addDependency('../../../ol/ol/renderer/canvas/canvasimagelayerrenderer.js', ['ol.renderer.canvas.ImageLayer'], ['goog.asserts', 'goog.functions', 'goog.vec.Mat4', 'ol.ImageBase', 'ol.ViewHint', 'ol.dom', 'ol.extent', 'ol.layer.Image', 'ol.proj', 'ol.renderer.canvas.Layer', 'ol.source.ImageVector', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/canvas/canvaslayerrenderer.js', ['ol.renderer.canvas.Layer'], ['goog.array', 'goog.asserts', 'goog.vec.Mat4', 'ol.dom', 'ol.extent', 'ol.layer.Layer', 'ol.render.Event', 'ol.render.EventType', 'ol.render.canvas.Immediate', 'ol.renderer.Layer', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/canvas/canvasmaprenderer.js', ['ol.renderer.canvas.Map'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.style', 'goog.vec.Mat4', 'ol', 'ol.RendererType', 'ol.css', 'ol.dom', 'ol.layer.Image', 'ol.layer.Layer', 'ol.layer.Tile', 'ol.layer.Vector', 'ol.layer.VectorTile', 'ol.render.Event', 'ol.render.EventType', 'ol.render.canvas.Immediate', 'ol.renderer.Map', 'ol.renderer.canvas.ImageLayer', 'ol.renderer.canvas.Layer', 'ol.renderer.canvas.TileLayer', 'ol.renderer.canvas.VectorLayer', 'ol.renderer.canvas.VectorTileLayer', 'ol.source.State', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/canvas/canvastilelayerrenderer.js', ['ol.renderer.canvas.TileLayer'], ['goog.array', 'goog.asserts', 'goog.vec.Mat4', 'ol.Size', 'ol.TileRange', 'ol.TileState', 'ol.dom', 'ol.extent', 'ol.layer.Tile', 'ol.renderer.canvas.Layer', 'ol.size', 'ol.tilecoord', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/canvas/canvasvectorlayerrenderer.js', ['ol.renderer.canvas.VectorLayer'], ['goog.array', 'goog.asserts', 'goog.events', 'ol.ViewHint', 'ol.dom', 'ol.extent', 'ol.layer.Vector', 'ol.render.EventType', 'ol.render.canvas.ReplayGroup', 'ol.renderer.canvas.Layer', 'ol.renderer.vector', 'ol.source.Vector'], false); -goog.addDependency('../../../ol/ol/renderer/canvas/canvasvectortilelayerrenderer.js', ['ol.renderer.canvas.VectorTileLayer'], ['goog.asserts', 'goog.events', 'goog.vec.Mat4', 'ol.Feature', 'ol.TileRange', 'ol.TileState', 'ol.VectorTile', 'ol.ViewHint', 'ol.dom', 'ol.extent', 'ol.layer.VectorTile', 'ol.proj.Units', 'ol.render.EventType', 'ol.render.canvas.ReplayGroup', 'ol.renderer.canvas.Layer', 'ol.renderer.vector', 'ol.size', 'ol.source.VectorTile', 'ol.tilecoord', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/dom/domimagelayerrenderer.js', ['ol.renderer.dom.ImageLayer'], ['goog.asserts', 'goog.dom', 'goog.vec.Mat4', 'ol.ImageBase', 'ol.ViewHint', 'ol.dom', 'ol.extent', 'ol.layer.Image', 'ol.proj', 'ol.renderer.dom.Layer', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/dom/domlayerrenderer.js', ['ol.renderer.dom.Layer'], ['ol', 'ol.layer.Layer', 'ol.renderer.Layer'], false); -goog.addDependency('../../../ol/ol/renderer/dom/dommaprenderer.js', ['ol.renderer.dom.Map'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.style', 'goog.vec.Mat4', 'ol', 'ol.RendererType', 'ol.css', 'ol.dom', 'ol.layer.Image', 'ol.layer.Layer', 'ol.layer.Tile', 'ol.layer.Vector', 'ol.render.Event', 'ol.render.EventType', 'ol.render.canvas.Immediate', 'ol.renderer.Map', 'ol.renderer.dom.ImageLayer', 'ol.renderer.dom.Layer', 'ol.renderer.dom.TileLayer', 'ol.renderer.dom.VectorLayer', 'ol.source.State', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/dom/domtilelayerrenderer.js', ['ol.renderer.dom.TileLayer'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.style', 'goog.vec.Mat4', 'ol', 'ol.Coordinate', 'ol.TileCoord', 'ol.TileRange', 'ol.TileState', 'ol.ViewHint', 'ol.dom', 'ol.extent', 'ol.layer.Tile', 'ol.renderer.dom.Layer', 'ol.size', 'ol.tilecoord', 'ol.tilegrid.TileGrid', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/dom/domvectorlayerrenderer.js', ['ol.renderer.dom.VectorLayer'], ['goog.array', 'goog.asserts', 'goog.events', 'goog.vec.Mat4', 'ol.ViewHint', 'ol.dom', 'ol.extent', 'ol.layer.Vector', 'ol.render.Event', 'ol.render.EventType', 'ol.render.canvas.Immediate', 'ol.render.canvas.ReplayGroup', 'ol.renderer.dom.Layer', 'ol.renderer.vector', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/layerrenderer.js', ['ol.renderer.Layer'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'goog.functions', 'ol', 'ol.ImageState', 'ol.Observable', 'ol.TileRange', 'ol.TileState', 'ol.layer.Layer', 'ol.source.Source', 'ol.source.State', 'ol.source.Tile', 'ol.tilecoord', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/maprenderer.js', ['ol.RendererType', 'ol.renderer.Map'], ['goog.Disposable', 'goog.asserts', 'goog.dispose', 'goog.events', 'goog.events.EventType', 'goog.functions', 'goog.object', 'goog.vec.Mat4', 'ol', 'ol.extent', 'ol.layer.Layer', 'ol.renderer.Layer', 'ol.style.IconImageCache', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/webgl/webglimagelayerrenderer.js', ['ol.renderer.webgl.ImageLayer'], ['goog.asserts', 'goog.functions', 'goog.vec.Mat4', 'goog.webgl', 'ol.Coordinate', 'ol.Extent', 'ol.ImageBase', 'ol.ViewHint', 'ol.dom', 'ol.extent', 'ol.layer.Image', 'ol.proj', 'ol.renderer.webgl.Layer', 'ol.source.ImageVector', 'ol.vec.Mat4', 'ol.webgl.Context'], false); -goog.addDependency('../../../ol/ol/renderer/webgl/webgllayerrenderer.js', ['ol.renderer.webgl.Layer'], ['goog.vec.Mat4', 'goog.webgl', 'ol.layer.Layer', 'ol.render.Event', 'ol.render.EventType', 'ol.render.webgl.Immediate', 'ol.renderer.Layer', 'ol.renderer.webgl.map.shader.Default', 'ol.renderer.webgl.map.shader.Default.Locations', 'ol.renderer.webgl.map.shader.DefaultFragment', 'ol.renderer.webgl.map.shader.DefaultVertex', 'ol.webgl.Buffer', 'ol.webgl.Context'], false); -goog.addDependency('../../../ol/ol/renderer/webgl/webglmapdefaultshader.js', ['ol.renderer.webgl.map.shader.Default', 'ol.renderer.webgl.map.shader.Default.Locations', 'ol.renderer.webgl.map.shader.DefaultFragment', 'ol.renderer.webgl.map.shader.DefaultVertex'], ['ol.webgl.shader'], false); -goog.addDependency('../../../ol/ol/renderer/webgl/webglmaprenderer.js', ['ol.renderer.webgl.Map'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.events', 'goog.events.Event', 'goog.log', 'goog.log.Logger', 'goog.object', 'goog.style', 'goog.webgl', 'ol', 'ol.RendererType', 'ol.css', 'ol.dom', 'ol.layer.Image', 'ol.layer.Layer', 'ol.layer.Tile', 'ol.layer.Vector', 'ol.render.Event', 'ol.render.EventType', 'ol.render.webgl.Immediate', 'ol.renderer.Map', 'ol.renderer.webgl.ImageLayer', 'ol.renderer.webgl.Layer', 'ol.renderer.webgl.TileLayer', 'ol.renderer.webgl.VectorLayer', 'ol.source.State', 'ol.structs.LRUCache', 'ol.structs.PriorityQueue', 'ol.webgl', 'ol.webgl.Context', 'ol.webgl.WebGLContextEventType'], false); -goog.addDependency('../../../ol/ol/renderer/webgl/webgltilelayerrenderer.js', ['ol.renderer.webgl.TileLayer'], ['goog.array', 'goog.asserts', 'goog.vec.Mat4', 'goog.vec.Vec4', 'goog.webgl', 'ol.TileRange', 'ol.TileState', 'ol.extent', 'ol.layer.Tile', 'ol.math', 'ol.renderer.webgl.Layer', 'ol.renderer.webgl.tilelayer.shader.Fragment', 'ol.renderer.webgl.tilelayer.shader.Locations', 'ol.renderer.webgl.tilelayer.shader.Vertex', 'ol.size', 'ol.tilecoord', 'ol.vec.Mat4', 'ol.webgl.Buffer'], false); -goog.addDependency('../../../ol/ol/renderer/webgl/webgltilelayershader.js', ['ol.renderer.webgl.tilelayer.shader', 'ol.renderer.webgl.tilelayer.shader.Fragment', 'ol.renderer.webgl.tilelayer.shader.Locations', 'ol.renderer.webgl.tilelayer.shader.Vertex'], ['ol.webgl.shader'], false); -goog.addDependency('../../../ol/ol/renderer/webgl/webglvectorlayerrenderer.js', ['ol.renderer.webgl.VectorLayer'], ['goog.array', 'goog.asserts', 'goog.events', 'ol.ViewHint', 'ol.extent', 'ol.layer.Vector', 'ol.render.webgl.ReplayGroup', 'ol.renderer.vector', 'ol.renderer.webgl.Layer', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/reproj/image.js', ['ol.reproj.Image', 'ol.reproj.ImageFunctionType'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'ol.ImageBase', 'ol.ImageState', 'ol.extent', 'ol.proj', 'ol.reproj', 'ol.reproj.Triangulation'], false); -goog.addDependency('../../../ol/ol/reproj/reproj.js', ['ol.reproj'], ['goog.labs.userAgent.browser', 'goog.labs.userAgent.platform', 'goog.math', 'ol.dom', 'ol.extent', 'ol.math', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/reproj/tile.js', ['ol.reproj.Tile', 'ol.reproj.TileFunctionType'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'goog.math', 'goog.object', 'ol.Tile', 'ol.TileState', 'ol.extent', 'ol.math', 'ol.proj', 'ol.reproj', 'ol.reproj.Triangulation'], false); -goog.addDependency('../../../ol/ol/reproj/triangulation.js', ['ol.reproj.Triangulation'], ['goog.asserts', 'goog.math', 'ol.extent', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/resolutionconstraint.js', ['ol.ResolutionConstraint', 'ol.ResolutionConstraintType'], ['ol.array', 'ol.math'], false); -goog.addDependency('../../../ol/ol/rotationconstraint.js', ['ol.RotationConstraint', 'ol.RotationConstraintType'], ['ol.math'], false); -goog.addDependency('../../../ol/ol/size.js', ['ol.Size', 'ol.size'], ['goog.asserts'], false); -goog.addDependency('../../../ol/ol/source/bingmapssource.js', ['ol.source.BingMaps'], ['goog.Uri', 'goog.asserts', 'goog.net.Jsonp', 'ol.Attribution', 'ol.TileRange', 'ol.TileUrlFunction', 'ol.extent', 'ol.proj', 'ol.source.State', 'ol.source.TileImage', 'ol.tilecoord'], false); -goog.addDependency('../../../ol/ol/source/clustersource.js', ['ol.source.Cluster'], ['goog.asserts', 'goog.events.EventType', 'goog.object', 'ol.Feature', 'ol.coordinate', 'ol.extent', 'ol.geom.Point', 'ol.source.Vector'], false); -goog.addDependency('../../../ol/ol/source/imagecanvassource.js', ['ol.source.ImageCanvas'], ['ol.CanvasFunctionType', 'ol.ImageCanvas', 'ol.extent', 'ol.source.Image'], false); -goog.addDependency('../../../ol/ol/source/imagemapguidesource.js', ['ol.source.ImageMapGuide'], ['goog.events', 'goog.events.EventType', 'goog.object', 'goog.uri.utils', 'ol.Image', 'ol.ImageLoadFunctionType', 'ol.ImageUrlFunction', 'ol.extent', 'ol.source.Image'], false); -goog.addDependency('../../../ol/ol/source/imagesource.js', ['ol.source.Image', 'ol.source.ImageEvent'], ['goog.array', 'goog.asserts', 'goog.events.Event', 'ol.Attribution', 'ol.ImageState', 'ol.array', 'ol.extent', 'ol.proj', 'ol.reproj.Image', 'ol.source.Source'], false); -goog.addDependency('../../../ol/ol/source/imagestaticsource.js', ['ol.source.ImageStatic'], ['goog.events', 'goog.events.EventType', 'ol.Image', 'ol.ImageLoadFunctionType', 'ol.extent', 'ol.proj', 'ol.source.Image'], false); -goog.addDependency('../../../ol/ol/source/imagevectorsource.js', ['ol.source.ImageVector'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'goog.vec.Mat4', 'ol.dom', 'ol.extent', 'ol.render.canvas.ReplayGroup', 'ol.renderer.vector', 'ol.source.ImageCanvas', 'ol.source.Vector', 'ol.style.Style', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/source/imagewmssource.js', ['ol.source.ImageWMS'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'goog.object', 'goog.string', 'goog.uri.utils', 'ol', 'ol.Image', 'ol.ImageLoadFunctionType', 'ol.extent', 'ol.proj', 'ol.source.Image', 'ol.source.wms', 'ol.source.wms.ServerType'], false); -goog.addDependency('../../../ol/ol/source/mapquestsource.js', ['ol.source.MapQuest'], ['goog.asserts', 'ol.Attribution', 'ol.source.OSM', 'ol.source.XYZ'], false); -goog.addDependency('../../../ol/ol/source/osmsource.js', ['ol.source.OSM'], ['ol.Attribution', 'ol.source.XYZ'], false); -goog.addDependency('../../../ol/ol/source/rastersource.js', ['ol.source.Raster', 'ol.source.RasterEvent', 'ol.source.RasterEventType'], ['goog.asserts', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.object', 'goog.vec.Mat4', 'ol.ImageCanvas', 'ol.TileQueue', 'ol.dom', 'ol.ext.pixelworks', 'ol.extent', 'ol.layer.Image', 'ol.layer.Tile', 'ol.raster.OperationType', 'ol.renderer.canvas.ImageLayer', 'ol.renderer.canvas.TileLayer', 'ol.source.Image', 'ol.source.State', 'ol.source.Tile'], false); -goog.addDependency('../../../ol/ol/source/source.js', ['ol.source.Source', 'ol.source.State'], ['ol', 'ol.Attribution', 'ol.Object', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/source/stamensource.js', ['ol.source.Stamen'], ['goog.asserts', 'ol.Attribution', 'ol.source.OSM', 'ol.source.XYZ'], false); -goog.addDependency('../../../ol/ol/source/tilearcgisrestsource.js', ['ol.source.TileArcGISRest'], ['goog.asserts', 'goog.math', 'goog.object', 'goog.string', 'goog.uri.utils', 'ol', 'ol.TileCoord', 'ol.extent', 'ol.proj', 'ol.size', 'ol.source.TileImage', 'ol.tilecoord'], false); -goog.addDependency('../../../ol/ol/source/tiledebugsource.js', ['ol.source.TileDebug'], ['ol.Tile', 'ol.TileCoord', 'ol.TileState', 'ol.dom', 'ol.size', 'ol.source.Tile', 'ol.tilecoord'], false); -goog.addDependency('../../../ol/ol/source/tileimagesource.js', ['ol.source.TileImage'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'goog.object', 'ol.ImageTile', 'ol.TileCache', 'ol.TileState', 'ol.proj', 'ol.reproj.Tile', 'ol.source.UrlTile'], false); -goog.addDependency('../../../ol/ol/source/tilejsonsource.js', ['ol.source.TileJSON', 'ol.tilejson'], ['goog.asserts', 'goog.net.Jsonp', 'ol.Attribution', 'ol.TileRange', 'ol.TileUrlFunction', 'ol.extent', 'ol.proj', 'ol.source.State', 'ol.source.TileImage'], false); -goog.addDependency('../../../ol/ol/source/tilesource.js', ['ol.source.Tile', 'ol.source.TileEvent', 'ol.source.TileOptions'], ['goog.asserts', 'goog.events.Event', 'ol', 'ol.Attribution', 'ol.Extent', 'ol.TileCache', 'ol.TileRange', 'ol.TileState', 'ol.proj', 'ol.size', 'ol.source.Source', 'ol.tilecoord', 'ol.tilegrid.TileGrid'], false); -goog.addDependency('../../../ol/ol/source/tileutfgridsource.js', ['ol.source.TileUTFGrid'], ['goog.asserts', 'goog.async.nextTick', 'goog.events', 'goog.events.EventType', 'goog.net.Jsonp', 'ol.Attribution', 'ol.Tile', 'ol.TileState', 'ol.TileUrlFunction', 'ol.extent', 'ol.proj', 'ol.source.State', 'ol.source.Tile'], false); -goog.addDependency('../../../ol/ol/source/tilewmssource.js', ['ol.source.TileWMS'], ['goog.asserts', 'goog.math', 'goog.object', 'goog.string', 'goog.uri.utils', 'ol', 'ol.TileCoord', 'ol.extent', 'ol.proj', 'ol.size', 'ol.source.TileImage', 'ol.source.wms', 'ol.source.wms.ServerType', 'ol.tilecoord'], false); -goog.addDependency('../../../ol/ol/source/urltilesource.js', ['ol.source.UrlTile'], ['goog.events', 'ol.TileLoadFunctionType', 'ol.TileState', 'ol.TileUrlFunction', 'ol.TileUrlFunctionType', 'ol.proj', 'ol.source.Tile', 'ol.source.TileEvent'], false); -goog.addDependency('../../../ol/ol/source/vectorsource.js', ['ol.source.Vector', 'ol.source.VectorEvent', 'ol.source.VectorEventType'], ['goog.array', 'goog.asserts', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.object', 'ol', 'ol.Collection', 'ol.CollectionEventType', 'ol.Extent', 'ol.Feature', 'ol.FeatureLoader', 'ol.LoadingStrategy', 'ol.ObjectEventType', 'ol.extent', 'ol.featureloader', 'ol.loadingstrategy', 'ol.proj', 'ol.source.Source', 'ol.source.State', 'ol.structs.RBush'], false); -goog.addDependency('../../../ol/ol/source/vectortilesource.js', ['ol.source.VectorTile'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'ol.TileState', 'ol.VectorTile', 'ol.featureloader', 'ol.source.UrlTile'], false); -goog.addDependency('../../../ol/ol/source/wmssource.js', ['ol.source.wms', 'ol.source.wms.ServerType'], [], false); -goog.addDependency('../../../ol/ol/source/wmtssource.js', ['ol.source.WMTS', 'ol.source.WMTSRequestEncoding'], ['goog.array', 'goog.asserts', 'goog.object', 'goog.uri.utils', 'ol.TileUrlFunction', 'ol.TileUrlFunctionType', 'ol.array', 'ol.extent', 'ol.proj', 'ol.source.TileImage', 'ol.tilegrid.WMTS'], false); -goog.addDependency('../../../ol/ol/source/xyzsource.js', ['ol.source.XYZ'], ['ol.source.TileImage'], false); -goog.addDependency('../../../ol/ol/source/zoomifysource.js', ['ol.source.Zoomify'], ['goog.asserts', 'ol', 'ol.ImageTile', 'ol.TileCoord', 'ol.TileState', 'ol.dom', 'ol.extent', 'ol.proj', 'ol.source.TileImage', 'ol.tilegrid.TileGrid'], false); -goog.addDependency('../../../ol/ol/sphere/normal.js', ['ol.sphere.NORMAL'], ['ol.Sphere'], false); -goog.addDependency('../../../ol/ol/sphere/sphere.js', ['ol.Sphere'], ['ol.math'], false); -goog.addDependency('../../../ol/ol/sphere/wgs84sphere.js', ['ol.sphere.WGS84'], ['ol.Sphere'], false); -goog.addDependency('../../../ol/ol/structs/checksum.js', ['ol.structs.IHasChecksum'], [], false); -goog.addDependency('../../../ol/ol/structs/lrucache.js', ['ol.structs.LRUCache'], ['goog.asserts', 'goog.object'], false); -goog.addDependency('../../../ol/ol/structs/priorityqueue.js', ['ol.structs.PriorityQueue'], ['goog.asserts', 'goog.object'], false); -goog.addDependency('../../../ol/ol/structs/rbush.js', ['ol.structs.RBush'], ['goog.asserts', 'goog.object', 'ol.ext.rbush', 'ol.extent'], false); -goog.addDependency('../../../ol/ol/style/atlasmanager.js', ['ol.style.Atlas', 'ol.style.AtlasManager'], ['goog.asserts', 'goog.dom', 'goog.functions', 'goog.object', 'ol'], false); -goog.addDependency('../../../ol/ol/style/circlestyle.js', ['ol.style.Circle'], ['goog.asserts', 'goog.dom', 'ol', 'ol.color', 'ol.has', 'ol.render.canvas', 'ol.structs.IHasChecksum', 'ol.style.Fill', 'ol.style.Image', 'ol.style.ImageState', 'ol.style.Stroke'], false); -goog.addDependency('../../../ol/ol/style/fillstyle.js', ['ol.style.Fill'], ['ol.color', 'ol.structs.IHasChecksum'], false); -goog.addDependency('../../../ol/ol/style/iconstyle.js', ['ol.style.Icon', 'ol.style.IconAnchorUnits', 'ol.style.IconImageCache', 'ol.style.IconOrigin'], ['goog.asserts', 'goog.events', 'goog.events.EventTarget', 'goog.events.EventType', 'ol.dom', 'ol.style.Image', 'ol.style.ImageState'], false); -goog.addDependency('../../../ol/ol/style/imagestyle.js', ['ol.style.Image', 'ol.style.ImageState'], [], false); -goog.addDependency('../../../ol/ol/style/regularshapestyle.js', ['ol.style.RegularShape'], ['goog.asserts', 'goog.dom', 'ol', 'ol.color', 'ol.has', 'ol.render.canvas', 'ol.structs.IHasChecksum', 'ol.style.AtlasManager', 'ol.style.Fill', 'ol.style.Image', 'ol.style.ImageState', 'ol.style.Stroke'], false); -goog.addDependency('../../../ol/ol/style/strokestyle.js', ['ol.style.Stroke'], ['goog.crypt', 'goog.crypt.Md5', 'ol.color', 'ol.structs.IHasChecksum'], false); -goog.addDependency('../../../ol/ol/style/style.js', ['ol.style.GeometryFunction', 'ol.style.Style', 'ol.style.StyleFunction', 'ol.style.defaultGeometryFunction'], ['goog.asserts', 'ol.geom.Geometry', 'ol.geom.GeometryType', 'ol.style.Circle', 'ol.style.Fill', 'ol.style.Image', 'ol.style.Stroke'], false); -goog.addDependency('../../../ol/ol/style/textstyle.js', ['ol.style.Text'], ['ol.style.Fill'], false); -goog.addDependency('../../../ol/ol/tile.js', ['ol.Tile', 'ol.TileState'], ['goog.events', 'goog.events.EventTarget', 'goog.events.EventType', 'ol.TileCoord'], false); -goog.addDependency('../../../ol/ol/tilecache.js', ['ol.TileCache'], ['ol', 'ol.TileRange', 'ol.structs.LRUCache', 'ol.tilecoord'], false); -goog.addDependency('../../../ol/ol/tilecoord.js', ['ol.TileCoord', 'ol.tilecoord'], ['goog.asserts', 'ol.extent'], false); -goog.addDependency('../../../ol/ol/tilegrid/tilegrid.js', ['ol.tilegrid.TileGrid'], ['goog.array', 'goog.asserts', 'goog.object', 'ol', 'ol.Coordinate', 'ol.TileCoord', 'ol.TileRange', 'ol.array', 'ol.extent', 'ol.extent.Corner', 'ol.math', 'ol.proj', 'ol.proj.METERS_PER_UNIT', 'ol.proj.Projection', 'ol.proj.Units', 'ol.size', 'ol.tilecoord'], false); -goog.addDependency('../../../ol/ol/tilegrid/wmtstilegrid.js', ['ol.tilegrid.WMTS'], ['goog.array', 'goog.asserts', 'ol.proj', 'ol.tilegrid.TileGrid'], false); -goog.addDependency('../../../ol/ol/tileloadfunction.js', ['ol.TileLoadFunctionType', 'ol.TileVectorLoadFunctionType'], [], false); -goog.addDependency('../../../ol/ol/tilequeue.js', ['ol.TilePriorityFunction', 'ol.TileQueue'], ['goog.events', 'goog.events.EventType', 'ol.Coordinate', 'ol.TileState', 'ol.structs.PriorityQueue'], false); -goog.addDependency('../../../ol/ol/tilerange.js', ['ol.TileRange'], ['goog.asserts', 'ol.Size', 'ol.TileCoord'], false); -goog.addDependency('../../../ol/ol/tileurlfunction.js', ['ol.TileUrlFunction', 'ol.TileUrlFunctionType'], ['goog.asserts', 'goog.math', 'ol.TileCoord', 'ol.tilecoord'], false); -goog.addDependency('../../../ol/ol/transformfunction.js', ['ol.TransformFunction'], [], false); -goog.addDependency('../../../ol/ol/vec/mat4.js', ['ol.vec.Mat4', 'ol.vec.Mat4.Number'], ['goog.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/vectortile.js', ['ol.VectorTile'], ['ol.Tile', 'ol.TileCoord', 'ol.TileLoadFunctionType', 'ol.TileState'], false); -goog.addDependency('../../../ol/ol/view.js', ['ol.View', 'ol.ViewHint', 'ol.ViewProperty'], ['goog.asserts', 'ol', 'ol.CenterConstraint', 'ol.Constraints', 'ol.Object', 'ol.ResolutionConstraint', 'ol.RotationConstraint', 'ol.RotationConstraintType', 'ol.Size', 'ol.coordinate', 'ol.extent', 'ol.geom.Polygon', 'ol.geom.SimpleGeometry', 'ol.proj', 'ol.proj.METERS_PER_UNIT', 'ol.proj.Projection', 'ol.proj.Units'], false); -goog.addDependency('../../../ol/ol/webgl/buffer.js', ['ol.webgl.Buffer'], ['goog.webgl', 'ol'], false); -goog.addDependency('../../../ol/ol/webgl/context.js', ['ol.webgl.Context'], ['goog.asserts', 'goog.events', 'goog.log', 'goog.object', 'ol', 'ol.array', 'ol.webgl.Buffer', 'ol.webgl.WebGLContextEventType'], false); -goog.addDependency('../../../ol/ol/webgl/shader.js', ['ol.webgl.Fragment', 'ol.webgl.Shader', 'ol.webgl.Vertex', 'ol.webgl.shader'], ['goog.functions', 'goog.webgl', 'ol.webgl'], false); -goog.addDependency('../../../ol/ol/webgl/webgl.js', ['ol.webgl', 'ol.webgl.WebGLContextEventType'], [], false); -goog.addDependency('../../../ol/ol/xml.js', ['ol.xml'], ['goog.array', 'goog.asserts', 'goog.dom.NodeType', 'goog.dom.xml', 'goog.object', 'goog.userAgent'], false); -goog.addDependency('../../third_party/closure/goog/caja/string/html/htmlparser.js', ['goog.string.html', 'goog.string.html.HtmlParser', 'goog.string.html.HtmlParser.EFlags', 'goog.string.html.HtmlParser.Elements', 'goog.string.html.HtmlParser.Entities', 'goog.string.html.HtmlSaxHandler'], [], false); -goog.addDependency('../../third_party/closure/goog/caja/string/html/htmlsanitizer.js', ['goog.string.html.HtmlSanitizer', 'goog.string.html.HtmlSanitizer.AttributeType', 'goog.string.html.HtmlSanitizer.Attributes', 'goog.string.html.htmlSanitize'], ['goog.string.StringBuffer', 'goog.string.html.HtmlParser', 'goog.string.html.HtmlSaxHandler'], false); -goog.addDependency('../../third_party/closure/goog/dojo/dom/query.js', ['goog.dom.query'], ['goog.array', 'goog.dom', 'goog.functions', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('../../third_party/closure/goog/jpeg_encoder/jpeg_encoder_basic.js', ['goog.crypt.JpegEncoder'], ['goog.crypt.base64'], false); -goog.addDependency('../../third_party/closure/goog/loremipsum/text/loremipsum.js', ['goog.text.LoremIpsum'], ['goog.array', 'goog.math', 'goog.string', 'goog.structs.Map', 'goog.structs.Set'], false); -goog.addDependency('../../third_party/closure/goog/mochikit/async/deferred.js', ['goog.async.Deferred', 'goog.async.Deferred.AlreadyCalledError', 'goog.async.Deferred.CanceledError'], ['goog.Promise', 'goog.Thenable', 'goog.array', 'goog.asserts', 'goog.debug.Error'], false); -goog.addDependency('../../third_party/closure/goog/mochikit/async/deferredlist.js', ['goog.async.DeferredList'], ['goog.async.Deferred'], false); -goog.addDependency('../../third_party/closure/goog/osapi/osapi.js', ['goog.osapi'], [], false); -goog.addDependency('../../third_party/closure/goog/svgpan/svgpan.js', ['svgpan.SvgPan'], ['goog.Disposable', 'goog.events', 'goog.events.EventType', 'goog.events.MouseWheelHandler'], false); -goog.addDependency('a11y/aria/announcer.js', ['goog.a11y.aria.Announcer'], ['goog.Disposable', 'goog.Timer', 'goog.a11y.aria', 'goog.a11y.aria.LivePriority', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.TagName', 'goog.object'], false); -goog.addDependency('a11y/aria/announcer_test.js', ['goog.a11y.aria.AnnouncerTest'], ['goog.a11y.aria', 'goog.a11y.aria.Announcer', 'goog.a11y.aria.LivePriority', 'goog.a11y.aria.State', 'goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.dom.iframe', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('a11y/aria/aria.js', ['goog.a11y.aria'], ['goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.a11y.aria.datatables', 'goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.object', 'goog.string'], false); -goog.addDependency('a11y/aria/aria_test.js', ['goog.a11y.ariaTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.TagName', 'goog.testing.jsunit'], false); -goog.addDependency('a11y/aria/attributes.js', ['goog.a11y.aria.AutoCompleteValues', 'goog.a11y.aria.CheckedValues', 'goog.a11y.aria.DropEffectValues', 'goog.a11y.aria.ExpandedValues', 'goog.a11y.aria.GrabbedValues', 'goog.a11y.aria.InvalidValues', 'goog.a11y.aria.LivePriority', 'goog.a11y.aria.OrientationValues', 'goog.a11y.aria.PressedValues', 'goog.a11y.aria.RelevantValues', 'goog.a11y.aria.SelectedValues', 'goog.a11y.aria.SortValues', 'goog.a11y.aria.State'], [], false); -goog.addDependency('a11y/aria/datatables.js', ['goog.a11y.aria.datatables'], ['goog.a11y.aria.State', 'goog.object'], false); -goog.addDependency('a11y/aria/roles.js', ['goog.a11y.aria.Role'], [], false); -goog.addDependency('array/array.js', ['goog.array', 'goog.array.ArrayLike'], ['goog.asserts'], false); -goog.addDependency('array/array_test.js', ['goog.arrayTest'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('asserts/asserts.js', ['goog.asserts', 'goog.asserts.AssertionError'], ['goog.debug.Error', 'goog.dom.NodeType', 'goog.string'], false); -goog.addDependency('asserts/asserts_test.js', ['goog.assertsTest'], ['goog.asserts', 'goog.asserts.AssertionError', 'goog.dom', 'goog.dom.TagName', 'goog.string', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('async/animationdelay.js', ['goog.async.AnimationDelay'], ['goog.Disposable', 'goog.events', 'goog.functions'], false); -goog.addDependency('async/animationdelay_test.js', ['goog.async.AnimationDelayTest'], ['goog.Timer', 'goog.async.AnimationDelay', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.testing.testSuite'], true); -goog.addDependency('async/conditionaldelay.js', ['goog.async.ConditionalDelay'], ['goog.Disposable', 'goog.async.Delay'], false); -goog.addDependency('async/conditionaldelay_test.js', ['goog.async.ConditionalDelayTest'], ['goog.async.ConditionalDelay', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('async/debouncer.js', ['goog.async.Debouncer'], ['goog.Disposable', 'goog.Timer'], false); -goog.addDependency('async/debouncer_test.js', ['goog.async.DebouncerTest'], ['goog.array', 'goog.async.Debouncer', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('async/delay.js', ['goog.Delay', 'goog.async.Delay'], ['goog.Disposable', 'goog.Timer'], false); -goog.addDependency('async/delay_test.js', ['goog.async.DelayTest'], ['goog.async.Delay', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('async/freelist.js', ['goog.async.FreeList'], [], false); -goog.addDependency('async/freelist_test.js', ['goog.async.FreeListTest'], ['goog.async.FreeList', 'goog.testing.jsunit'], false); -goog.addDependency('async/nexttick.js', ['goog.async.nextTick', 'goog.async.throwException'], ['goog.debug.entryPointRegistry', 'goog.dom.TagName', 'goog.functions', 'goog.labs.userAgent.browser', 'goog.labs.userAgent.engine'], false); -goog.addDependency('async/nexttick_test.js', ['goog.async.nextTickTest'], ['goog.Promise', 'goog.Timer', 'goog.async.nextTick', 'goog.debug.ErrorHandler', 'goog.debug.entryPointRegistry', 'goog.dom', 'goog.dom.TagName', 'goog.labs.userAgent.browser', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('async/run.js', ['goog.async.run'], ['goog.async.WorkQueue', 'goog.async.nextTick', 'goog.async.throwException', 'goog.testing.watchers'], false); -goog.addDependency('async/run_test.js', ['goog.async.runTest'], ['goog.async.run', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('async/throttle.js', ['goog.Throttle', 'goog.async.Throttle'], ['goog.Disposable', 'goog.Timer'], false); -goog.addDependency('async/throttle_test.js', ['goog.async.ThrottleTest'], ['goog.async.Throttle', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('async/workqueue.js', ['goog.async.WorkItem', 'goog.async.WorkQueue'], ['goog.asserts', 'goog.async.FreeList'], false); -goog.addDependency('async/workqueue_test.js', ['goog.async.WorkQueueTest'], ['goog.async.WorkQueue', 'goog.testing.jsunit'], false); -goog.addDependency('base.js', ['goog'], [], false); -goog.addDependency('base_module_test.js', ['goog.baseModuleTest'], ['goog.Timer', 'goog.test_module', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.testSuite'], true); -goog.addDependency('base_test.js', ['an.existing.path', 'dup.base', 'far.out', 'goog.baseTest', 'goog.explicit', 'goog.implicit.explicit', 'goog.test', 'goog.test.name', 'goog.test.name.space', 'goog.xy', 'goog.xy.z', 'ns', 'testDep.bar'], ['goog.Promise', 'goog.Timer', 'goog.dom.TagName', 'goog.functions', 'goog.test_module', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.userAgent'], false); -goog.addDependency('color/alpha.js', ['goog.color.alpha'], ['goog.color'], false); -goog.addDependency('color/alpha_test.js', ['goog.color.alphaTest'], ['goog.array', 'goog.color', 'goog.color.alpha', 'goog.testing.jsunit'], false); -goog.addDependency('color/color.js', ['goog.color', 'goog.color.Hsl', 'goog.color.Hsv', 'goog.color.Rgb'], ['goog.color.names', 'goog.math'], false); -goog.addDependency('color/color_test.js', ['goog.colorTest'], ['goog.array', 'goog.color', 'goog.color.names', 'goog.testing.jsunit'], false); -goog.addDependency('color/names.js', ['goog.color.names'], [], false); -goog.addDependency('crypt/aes.js', ['goog.crypt.Aes'], ['goog.asserts', 'goog.crypt.BlockCipher'], false); -goog.addDependency('crypt/aes_test.js', ['goog.crypt.AesTest'], ['goog.crypt', 'goog.crypt.Aes', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/arc4.js', ['goog.crypt.Arc4'], ['goog.asserts'], false); -goog.addDependency('crypt/arc4_test.js', ['goog.crypt.Arc4Test'], ['goog.array', 'goog.crypt.Arc4', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/base64.js', ['goog.crypt.base64'], ['goog.asserts', 'goog.crypt', 'goog.userAgent'], false); -goog.addDependency('crypt/base64_test.js', ['goog.crypt.base64Test'], ['goog.crypt', 'goog.crypt.base64', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/basen.js', ['goog.crypt.baseN'], [], false); -goog.addDependency('crypt/basen_test.js', ['goog.crypt.baseNTest'], ['goog.crypt.baseN', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/blobhasher.js', ['goog.crypt.BlobHasher', 'goog.crypt.BlobHasher.EventType'], ['goog.asserts', 'goog.events.EventTarget', 'goog.fs', 'goog.log'], false); -goog.addDependency('crypt/blobhasher_test.js', ['goog.crypt.BlobHasherTest'], ['goog.crypt', 'goog.crypt.BlobHasher', 'goog.crypt.Md5', 'goog.events', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/blockcipher.js', ['goog.crypt.BlockCipher'], [], false); -goog.addDependency('crypt/bytestring_perf.js', ['goog.crypt.byteArrayToStringPerf'], ['goog.array', 'goog.dom', 'goog.testing.PerformanceTable'], false); -goog.addDependency('crypt/cbc.js', ['goog.crypt.Cbc'], ['goog.array', 'goog.asserts', 'goog.crypt'], false); -goog.addDependency('crypt/cbc_test.js', ['goog.crypt.CbcTest'], ['goog.crypt', 'goog.crypt.Aes', 'goog.crypt.Cbc', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/crypt.js', ['goog.crypt'], ['goog.array', 'goog.asserts'], false); -goog.addDependency('crypt/crypt_test.js', ['goog.cryptTest'], ['goog.crypt', 'goog.string', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/hash.js', ['goog.crypt.Hash'], [], false); -goog.addDependency('crypt/hash32.js', ['goog.crypt.hash32'], ['goog.crypt'], false); -goog.addDependency('crypt/hash32_test.js', ['goog.crypt.hash32Test'], ['goog.crypt.hash32', 'goog.testing.TestCase', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/hashtester.js', ['goog.crypt.hashTester'], ['goog.array', 'goog.crypt', 'goog.dom', 'goog.dom.TagName', 'goog.testing.PerformanceTable', 'goog.testing.PseudoRandom', 'goog.testing.asserts'], false); -goog.addDependency('crypt/hmac.js', ['goog.crypt.Hmac'], ['goog.crypt.Hash'], false); -goog.addDependency('crypt/hmac_test.js', ['goog.crypt.HmacTest'], ['goog.crypt.Hmac', 'goog.crypt.Sha1', 'goog.crypt.hashTester', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/md5.js', ['goog.crypt.Md5'], ['goog.crypt.Hash'], false); -goog.addDependency('crypt/md5_test.js', ['goog.crypt.Md5Test'], ['goog.crypt', 'goog.crypt.Md5', 'goog.crypt.hashTester', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/pbkdf2.js', ['goog.crypt.pbkdf2'], ['goog.array', 'goog.asserts', 'goog.crypt', 'goog.crypt.Hmac', 'goog.crypt.Sha1'], false); -goog.addDependency('crypt/pbkdf2_test.js', ['goog.crypt.pbkdf2Test'], ['goog.crypt', 'goog.crypt.pbkdf2', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('crypt/sha1.js', ['goog.crypt.Sha1'], ['goog.crypt.Hash'], false); -goog.addDependency('crypt/sha1_test.js', ['goog.crypt.Sha1Test'], ['goog.crypt', 'goog.crypt.Sha1', 'goog.crypt.hashTester', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('crypt/sha2.js', ['goog.crypt.Sha2'], ['goog.array', 'goog.asserts', 'goog.crypt.Hash'], false); -goog.addDependency('crypt/sha224.js', ['goog.crypt.Sha224'], ['goog.crypt.Sha2'], false); -goog.addDependency('crypt/sha224_test.js', ['goog.crypt.Sha224Test'], ['goog.crypt', 'goog.crypt.Sha224', 'goog.crypt.hashTester', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/sha256.js', ['goog.crypt.Sha256'], ['goog.crypt.Sha2'], false); -goog.addDependency('crypt/sha256_test.js', ['goog.crypt.Sha256Test'], ['goog.crypt', 'goog.crypt.Sha256', 'goog.crypt.hashTester', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/sha2_64bit.js', ['goog.crypt.Sha2_64bit'], ['goog.array', 'goog.asserts', 'goog.crypt.Hash', 'goog.math.Long'], false); -goog.addDependency('crypt/sha2_64bit_test.js', ['goog.crypt.Sha2_64bit_test'], ['goog.array', 'goog.crypt', 'goog.crypt.Sha384', 'goog.crypt.Sha512', 'goog.crypt.Sha512_256', 'goog.crypt.hashTester', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('crypt/sha384.js', ['goog.crypt.Sha384'], ['goog.crypt.Sha2_64bit'], false); -goog.addDependency('crypt/sha512.js', ['goog.crypt.Sha512'], ['goog.crypt.Sha2_64bit'], false); -goog.addDependency('crypt/sha512_256.js', ['goog.crypt.Sha512_256'], ['goog.crypt.Sha2_64bit'], false); -goog.addDependency('cssom/cssom.js', ['goog.cssom', 'goog.cssom.CssRuleType'], ['goog.array', 'goog.dom', 'goog.dom.TagName'], false); -goog.addDependency('cssom/cssom_test.js', ['goog.cssomTest'], ['goog.array', 'goog.cssom', 'goog.cssom.CssRuleType', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('cssom/iframe/style.js', ['goog.cssom.iframe.style'], ['goog.asserts', 'goog.cssom', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.string', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('cssom/iframe/style_test.js', ['goog.cssom.iframe.styleTest'], ['goog.cssom', 'goog.cssom.iframe.style', 'goog.dom', 'goog.dom.DomHelper', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('datasource/datamanager.js', ['goog.ds.DataManager'], ['goog.ds.BasicNodeList', 'goog.ds.DataNode', 'goog.ds.Expr', 'goog.object', 'goog.string', 'goog.structs', 'goog.structs.Map'], false); -goog.addDependency('datasource/datasource.js', ['goog.ds.BaseDataNode', 'goog.ds.BasicNodeList', 'goog.ds.DataNode', 'goog.ds.DataNodeList', 'goog.ds.EmptyNodeList', 'goog.ds.LoadState', 'goog.ds.SortedNodeList', 'goog.ds.Util', 'goog.ds.logger'], ['goog.array', 'goog.log'], false); -goog.addDependency('datasource/datasource_test.js', ['goog.ds.JsDataSourceTest'], ['goog.dom.xml', 'goog.ds.DataManager', 'goog.ds.JsDataSource', 'goog.ds.SortedNodeList', 'goog.ds.XmlDataSource', 'goog.testing.jsunit'], false); -goog.addDependency('datasource/expr.js', ['goog.ds.Expr'], ['goog.ds.BasicNodeList', 'goog.ds.EmptyNodeList', 'goog.string'], false); -goog.addDependency('datasource/expr_test.js', ['goog.ds.ExprTest'], ['goog.ds.DataManager', 'goog.ds.Expr', 'goog.ds.JsDataSource', 'goog.testing.jsunit'], false); -goog.addDependency('datasource/fastdatanode.js', ['goog.ds.AbstractFastDataNode', 'goog.ds.FastDataNode', 'goog.ds.FastListNode', 'goog.ds.PrimitiveFastDataNode'], ['goog.ds.DataManager', 'goog.ds.DataNodeList', 'goog.ds.EmptyNodeList', 'goog.string'], false); -goog.addDependency('datasource/fastdatanode_test.js', ['goog.ds.FastDataNodeTest'], ['goog.array', 'goog.ds.DataManager', 'goog.ds.Expr', 'goog.ds.FastDataNode', 'goog.testing.jsunit'], false); -goog.addDependency('datasource/jsdatasource.js', ['goog.ds.JsDataSource', 'goog.ds.JsPropertyDataSource'], ['goog.ds.BaseDataNode', 'goog.ds.BasicNodeList', 'goog.ds.DataManager', 'goog.ds.DataNode', 'goog.ds.EmptyNodeList', 'goog.ds.LoadState'], false); -goog.addDependency('datasource/jsondatasource.js', ['goog.ds.JsonDataSource'], ['goog.Uri', 'goog.dom', 'goog.dom.TagName', 'goog.ds.DataManager', 'goog.ds.JsDataSource', 'goog.ds.LoadState', 'goog.ds.logger', 'goog.log'], false); -goog.addDependency('datasource/jsxmlhttpdatasource.js', ['goog.ds.JsXmlHttpDataSource'], ['goog.Uri', 'goog.ds.DataManager', 'goog.ds.FastDataNode', 'goog.ds.LoadState', 'goog.ds.logger', 'goog.events', 'goog.log', 'goog.net.EventType', 'goog.net.XhrIo'], false); -goog.addDependency('datasource/jsxmlhttpdatasource_test.js', ['goog.ds.JsXmlHttpDataSourceTest'], ['goog.ds.JsXmlHttpDataSource', 'goog.testing.TestQueue', 'goog.testing.jsunit', 'goog.testing.net.XhrIo'], false); -goog.addDependency('datasource/xmldatasource.js', ['goog.ds.XmlDataSource', 'goog.ds.XmlHttpDataSource'], ['goog.Uri', 'goog.dom.NodeType', 'goog.dom.xml', 'goog.ds.BasicNodeList', 'goog.ds.DataManager', 'goog.ds.DataNode', 'goog.ds.LoadState', 'goog.ds.logger', 'goog.net.XhrIo', 'goog.string'], false); -goog.addDependency('date/date.js', ['goog.date', 'goog.date.Date', 'goog.date.DateTime', 'goog.date.Interval', 'goog.date.month', 'goog.date.weekDay'], ['goog.asserts', 'goog.date.DateLike', 'goog.i18n.DateTimeSymbols', 'goog.string'], false); -goog.addDependency('date/date_test.js', ['goog.dateTest'], ['goog.array', 'goog.date', 'goog.date.Date', 'goog.date.DateTime', 'goog.date.Interval', 'goog.date.month', 'goog.date.weekDay', 'goog.i18n.DateTimeSymbols', 'goog.testing.ExpectedFailures', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.platform', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('date/datelike.js', ['goog.date.DateLike'], [], false); -goog.addDependency('date/daterange.js', ['goog.date.DateRange', 'goog.date.DateRange.Iterator', 'goog.date.DateRange.StandardDateRangeKeys'], ['goog.date.Date', 'goog.date.Interval', 'goog.iter.Iterator', 'goog.iter.StopIteration'], false); -goog.addDependency('date/daterange_test.js', ['goog.date.DateRangeTest'], ['goog.date.Date', 'goog.date.DateRange', 'goog.date.Interval', 'goog.i18n.DateTimeSymbols', 'goog.testing.jsunit'], false); -goog.addDependency('date/duration.js', ['goog.date.duration'], ['goog.i18n.DateTimeFormat', 'goog.i18n.MessageFormat'], false); -goog.addDependency('date/duration_test.js', ['goog.date.durationTest'], ['goog.date.duration', 'goog.i18n.DateTimeFormat', 'goog.i18n.DateTimeSymbols', 'goog.i18n.DateTimeSymbols_bn', 'goog.i18n.DateTimeSymbols_en', 'goog.i18n.DateTimeSymbols_fa', 'goog.testing.jsunit'], false); -goog.addDependency('date/relative.js', ['goog.date.relative', 'goog.date.relative.TimeDeltaFormatter', 'goog.date.relative.Unit'], ['goog.i18n.DateTimeFormat', 'goog.i18n.DateTimePatterns'], false); -goog.addDependency('date/relative_test.js', ['goog.date.relativeTest'], ['goog.date.DateTime', 'goog.date.relative', 'goog.i18n.DateTimeFormat', 'goog.testing.jsunit'], false); -goog.addDependency('date/relativewithplurals.js', ['goog.date.relativeWithPlurals'], ['goog.date.relative', 'goog.date.relative.Unit', 'goog.i18n.MessageFormat'], false); -goog.addDependency('date/relativewithplurals_test.js', ['goog.date.relativeWithPluralsTest'], ['goog.date.relative', 'goog.date.relativeTest', 'goog.date.relativeWithPlurals', 'goog.i18n.DateTimeFormat', 'goog.i18n.DateTimeSymbols', 'goog.i18n.DateTimeSymbols_bn', 'goog.i18n.DateTimeSymbols_en', 'goog.i18n.DateTimeSymbols_fa', 'goog.i18n.NumberFormatSymbols', 'goog.i18n.NumberFormatSymbols_bn', 'goog.i18n.NumberFormatSymbols_en', 'goog.i18n.NumberFormatSymbols_fa'], false); -goog.addDependency('date/utcdatetime.js', ['goog.date.UtcDateTime'], ['goog.date', 'goog.date.Date', 'goog.date.DateTime', 'goog.date.Interval'], false); -goog.addDependency('date/utcdatetime_test.js', ['goog.date.UtcDateTimeTest'], ['goog.date.Interval', 'goog.date.UtcDateTime', 'goog.date.month', 'goog.date.weekDay', 'goog.testing.jsunit'], false); -goog.addDependency('db/cursor.js', ['goog.db.Cursor'], ['goog.async.Deferred', 'goog.db.Error', 'goog.debug', 'goog.events.EventTarget'], false); -goog.addDependency('db/db.js', ['goog.db', 'goog.db.BlockedCallback', 'goog.db.UpgradeNeededCallback'], ['goog.asserts', 'goog.async.Deferred', 'goog.db.Error', 'goog.db.IndexedDb', 'goog.db.Transaction'], false); -goog.addDependency('db/db_test.js', ['goog.dbTest'], ['goog.Disposable', 'goog.Promise', 'goog.array', 'goog.db', 'goog.db.Cursor', 'goog.db.Error', 'goog.db.IndexedDb', 'goog.db.KeyRange', 'goog.db.Transaction', 'goog.events', 'goog.object', 'goog.testing.PropertyReplacer', 'goog.testing.asserts', 'goog.testing.jsunit', 'goog.userAgent.product'], false); -goog.addDependency('db/error.js', ['goog.db.Error', 'goog.db.Error.ErrorCode', 'goog.db.Error.ErrorName', 'goog.db.Error.VersionChangeBlockedError'], ['goog.debug.Error'], false); -goog.addDependency('db/index.js', ['goog.db.Index'], ['goog.async.Deferred', 'goog.db.Cursor', 'goog.db.Error', 'goog.debug'], false); -goog.addDependency('db/indexeddb.js', ['goog.db.IndexedDb'], ['goog.db.Error', 'goog.db.ObjectStore', 'goog.db.Transaction', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventTarget'], false); -goog.addDependency('db/keyrange.js', ['goog.db.KeyRange'], [], false); -goog.addDependency('db/objectstore.js', ['goog.db.ObjectStore'], ['goog.async.Deferred', 'goog.db.Cursor', 'goog.db.Error', 'goog.db.Index', 'goog.debug', 'goog.events'], false); -goog.addDependency('db/transaction.js', ['goog.db.Transaction', 'goog.db.Transaction.TransactionMode'], ['goog.async.Deferred', 'goog.db.Error', 'goog.db.ObjectStore', 'goog.events', 'goog.events.EventHandler', 'goog.events.EventTarget'], false); -goog.addDependency('debug/console.js', ['goog.debug.Console'], ['goog.debug.LogManager', 'goog.debug.Logger', 'goog.debug.TextFormatter'], false); -goog.addDependency('debug/console_test.js', ['goog.debug.ConsoleTest'], ['goog.debug.Console', 'goog.debug.LogRecord', 'goog.debug.Logger', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('debug/debug.js', ['goog.debug'], ['goog.array', 'goog.html.SafeHtml', 'goog.html.SafeUrl', 'goog.html.uncheckedconversions', 'goog.string.Const', 'goog.structs.Set', 'goog.userAgent'], false); -goog.addDependency('debug/debug_test.js', ['goog.debugTest'], ['goog.debug', 'goog.html.SafeHtml', 'goog.structs.Set', 'goog.testing.jsunit'], false); -goog.addDependency('debug/debugwindow.js', ['goog.debug.DebugWindow'], ['goog.debug.HtmlFormatter', 'goog.debug.LogManager', 'goog.debug.Logger', 'goog.dom.safe', 'goog.html.SafeHtml', 'goog.html.SafeStyleSheet', 'goog.string.Const', 'goog.structs.CircularBuffer', 'goog.userAgent'], false); -goog.addDependency('debug/debugwindow_test.js', ['goog.debug.DebugWindowTest'], ['goog.debug.DebugWindow', 'goog.testing.jsunit'], false); -goog.addDependency('debug/devcss/devcss.js', ['goog.debug.DevCss', 'goog.debug.DevCss.UserAgent'], ['goog.asserts', 'goog.cssom', 'goog.dom.classlist', 'goog.events', 'goog.events.EventType', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('debug/devcss/devcss_test.js', ['goog.debug.DevCssTest'], ['goog.debug.DevCss', 'goog.style', 'goog.testing.jsunit'], false); -goog.addDependency('debug/devcss/devcssrunner.js', ['goog.debug.devCssRunner'], ['goog.debug.DevCss'], false); -goog.addDependency('debug/divconsole.js', ['goog.debug.DivConsole'], ['goog.debug.HtmlFormatter', 'goog.debug.LogManager', 'goog.dom.TagName', 'goog.dom.safe', 'goog.html.SafeHtml', 'goog.style'], false); -goog.addDependency('debug/enhanceerror_test.js', ['goog.debugEnhanceErrorTest'], ['goog.debug', 'goog.testing.jsunit'], false); -goog.addDependency('debug/entrypointregistry.js', ['goog.debug.EntryPointMonitor', 'goog.debug.entryPointRegistry'], ['goog.asserts'], false); -goog.addDependency('debug/entrypointregistry_test.js', ['goog.debug.entryPointRegistryTest'], ['goog.debug.ErrorHandler', 'goog.debug.entryPointRegistry', 'goog.testing.jsunit'], false); -goog.addDependency('debug/error.js', ['goog.debug.Error'], [], false); -goog.addDependency('debug/error_test.js', ['goog.debug.ErrorTest'], ['goog.debug.Error', 'goog.testing.ExpectedFailures', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('debug/errorhandler.js', ['goog.debug.ErrorHandler', 'goog.debug.ErrorHandler.ProtectedFunctionError'], ['goog.Disposable', 'goog.asserts', 'goog.debug', 'goog.debug.EntryPointMonitor', 'goog.debug.Error', 'goog.debug.Trace'], false); -goog.addDependency('debug/errorhandler_async_test.js', ['goog.debug.ErrorHandlerAsyncTest'], ['goog.Promise', 'goog.debug.ErrorHandler', 'goog.testing.TestCase', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('debug/errorhandler_test.js', ['goog.debug.ErrorHandlerTest'], ['goog.debug.ErrorHandler', 'goog.testing.MockControl', 'goog.testing.jsunit'], false); -goog.addDependency('debug/errorhandlerweakdep.js', ['goog.debug.errorHandlerWeakDep'], [], false); -goog.addDependency('debug/errorreporter.js', ['goog.debug.ErrorReporter', 'goog.debug.ErrorReporter.ExceptionEvent'], ['goog.asserts', 'goog.debug', 'goog.debug.Error', 'goog.debug.ErrorHandler', 'goog.debug.entryPointRegistry', 'goog.events', 'goog.events.Event', 'goog.events.EventTarget', 'goog.log', 'goog.net.XhrIo', 'goog.object', 'goog.string', 'goog.uri.utils', 'goog.userAgent'], false); -goog.addDependency('debug/errorreporter_test.js', ['goog.debug.ErrorReporterTest'], ['goog.debug.Error', 'goog.debug.ErrorReporter', 'goog.events', 'goog.functions', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('debug/fancywindow.js', ['goog.debug.FancyWindow'], ['goog.array', 'goog.debug.DebugWindow', 'goog.debug.LogManager', 'goog.debug.Logger', 'goog.dom.DomHelper', 'goog.dom.TagName', 'goog.dom.safe', 'goog.html.SafeHtml', 'goog.html.SafeStyleSheet', 'goog.object', 'goog.string', 'goog.string.Const', 'goog.userAgent'], false); -goog.addDependency('debug/formatter.js', ['goog.debug.Formatter', 'goog.debug.HtmlFormatter', 'goog.debug.TextFormatter'], ['goog.debug', 'goog.debug.Logger', 'goog.debug.RelativeTimeProvider', 'goog.html.SafeHtml'], false); -goog.addDependency('debug/formatter_test.js', ['goog.debug.FormatterTest'], ['goog.debug.HtmlFormatter', 'goog.debug.LogRecord', 'goog.debug.Logger', 'goog.html.SafeHtml', 'goog.testing.jsunit'], false); -goog.addDependency('debug/fpsdisplay.js', ['goog.debug.FpsDisplay'], ['goog.asserts', 'goog.async.AnimationDelay', 'goog.dom', 'goog.dom.TagName', 'goog.ui.Component'], false); -goog.addDependency('debug/fpsdisplay_test.js', ['goog.debug.FpsDisplayTest'], ['goog.Timer', 'goog.debug.FpsDisplay', 'goog.testing.TestCase', 'goog.testing.jsunit'], false); -goog.addDependency('debug/logbuffer.js', ['goog.debug.LogBuffer'], ['goog.asserts', 'goog.debug.LogRecord'], false); -goog.addDependency('debug/logbuffer_test.js', ['goog.debug.LogBufferTest'], ['goog.debug.LogBuffer', 'goog.debug.Logger', 'goog.testing.jsunit'], false); -goog.addDependency('debug/logger.js', ['goog.debug.LogManager', 'goog.debug.Loggable', 'goog.debug.Logger', 'goog.debug.Logger.Level'], ['goog.array', 'goog.asserts', 'goog.debug', 'goog.debug.LogBuffer', 'goog.debug.LogRecord'], false); -goog.addDependency('debug/logger_test.js', ['goog.debug.LoggerTest'], ['goog.debug.LogManager', 'goog.debug.Logger', 'goog.testing.jsunit'], false); -goog.addDependency('debug/logrecord.js', ['goog.debug.LogRecord'], [], false); -goog.addDependency('debug/logrecordserializer.js', ['goog.debug.logRecordSerializer'], ['goog.debug.LogRecord', 'goog.debug.Logger', 'goog.json', 'goog.object'], false); -goog.addDependency('debug/logrecordserializer_test.js', ['goog.debug.logRecordSerializerTest'], ['goog.debug.LogRecord', 'goog.debug.Logger', 'goog.debug.logRecordSerializer', 'goog.testing.jsunit'], false); -goog.addDependency('debug/relativetimeprovider.js', ['goog.debug.RelativeTimeProvider'], [], false); -goog.addDependency('debug/tracer.js', ['goog.debug.Trace'], ['goog.array', 'goog.debug.Logger', 'goog.iter', 'goog.log', 'goog.structs.Map', 'goog.structs.SimplePool'], false); -goog.addDependency('debug/tracer_test.js', ['goog.debug.TraceTest'], ['goog.debug.Trace', 'goog.testing.jsunit'], false); -goog.addDependency('defineclass_test.js', ['goog.defineClassTest'], ['goog.testing.jsunit'], false); -goog.addDependency('demos/editor/helloworld.js', ['goog.demos.editor.HelloWorld'], ['goog.dom', 'goog.dom.TagName', 'goog.editor.Plugin'], false); -goog.addDependency('demos/editor/helloworlddialog.js', ['goog.demos.editor.HelloWorldDialog', 'goog.demos.editor.HelloWorldDialog.OkEvent'], ['goog.dom.TagName', 'goog.events.Event', 'goog.string', 'goog.ui.editor.AbstractDialog'], false); -goog.addDependency('demos/editor/helloworlddialogplugin.js', ['goog.demos.editor.HelloWorldDialogPlugin', 'goog.demos.editor.HelloWorldDialogPlugin.Command'], ['goog.demos.editor.HelloWorldDialog', 'goog.dom.TagName', 'goog.editor.plugins.AbstractDialogPlugin', 'goog.editor.range', 'goog.functions', 'goog.ui.editor.AbstractDialog'], false); -goog.addDependency('demos/samplecomponent.js', ['goog.demos.SampleComponent'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.ui.Component'], false); -goog.addDependency('demos/xpc/xpcdemo.js', ['xpcdemo'], ['goog.Uri', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventType', 'goog.html.SafeHtml', 'goog.json', 'goog.log', 'goog.log.Level', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannel'], false); -goog.addDependency('disposable/disposable.js', ['goog.Disposable', 'goog.dispose', 'goog.disposeAll'], ['goog.disposable.IDisposable'], false); -goog.addDependency('disposable/disposable_test.js', ['goog.DisposableTest'], ['goog.Disposable', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('disposable/idisposable.js', ['goog.disposable.IDisposable'], [], false); -goog.addDependency('dom/abstractmultirange.js', ['goog.dom.AbstractMultiRange'], ['goog.array', 'goog.dom', 'goog.dom.AbstractRange'], false); -goog.addDependency('dom/abstractrange.js', ['goog.dom.AbstractRange', 'goog.dom.RangeIterator', 'goog.dom.RangeType'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.SavedCaretRange', 'goog.dom.TagIterator', 'goog.userAgent'], false); -goog.addDependency('dom/abstractrange_test.js', ['goog.dom.AbstractRangeTest'], ['goog.dom', 'goog.dom.AbstractRange', 'goog.dom.Range', 'goog.dom.TagName', 'goog.testing.jsunit'], false); -goog.addDependency('dom/animationframe/animationframe.js', ['goog.dom.animationFrame', 'goog.dom.animationFrame.Spec', 'goog.dom.animationFrame.State'], ['goog.dom.animationFrame.polyfill'], false); -goog.addDependency('dom/animationframe/polyfill.js', ['goog.dom.animationFrame.polyfill'], [], false); -goog.addDependency('dom/annotate.js', ['goog.dom.annotate', 'goog.dom.annotate.AnnotateFn'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.safe', 'goog.html.SafeHtml'], false); -goog.addDependency('dom/annotate_test.js', ['goog.dom.annotateTest'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.annotate', 'goog.html.SafeHtml', 'goog.testing.jsunit'], false); -goog.addDependency('dom/browserfeature.js', ['goog.dom.BrowserFeature'], ['goog.userAgent'], false); -goog.addDependency('dom/browserrange/abstractrange.js', ['goog.dom.browserrange.AbstractRange'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.RangeEndpoint', 'goog.dom.TagName', 'goog.dom.TextRangeIterator', 'goog.iter', 'goog.math.Coordinate', 'goog.string', 'goog.string.StringBuffer', 'goog.userAgent'], false); -goog.addDependency('dom/browserrange/browserrange.js', ['goog.dom.browserrange', 'goog.dom.browserrange.Error'], ['goog.dom', 'goog.dom.BrowserFeature', 'goog.dom.NodeType', 'goog.dom.browserrange.GeckoRange', 'goog.dom.browserrange.IeRange', 'goog.dom.browserrange.OperaRange', 'goog.dom.browserrange.W3cRange', 'goog.dom.browserrange.WebKitRange', 'goog.userAgent'], false); -goog.addDependency('dom/browserrange/browserrange_test.js', ['goog.dom.browserrangeTest'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.RangeEndpoint', 'goog.dom.TagName', 'goog.dom.browserrange', 'goog.testing.dom', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('dom/browserrange/geckorange.js', ['goog.dom.browserrange.GeckoRange'], ['goog.dom.browserrange.W3cRange'], false); -goog.addDependency('dom/browserrange/ierange.js', ['goog.dom.browserrange.IeRange'], ['goog.array', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.RangeEndpoint', 'goog.dom.TagName', 'goog.dom.browserrange.AbstractRange', 'goog.log', 'goog.string'], false); -goog.addDependency('dom/browserrange/operarange.js', ['goog.dom.browserrange.OperaRange'], ['goog.dom.browserrange.W3cRange'], false); -goog.addDependency('dom/browserrange/w3crange.js', ['goog.dom.browserrange.W3cRange'], ['goog.array', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.RangeEndpoint', 'goog.dom.TagName', 'goog.dom.browserrange.AbstractRange', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('dom/browserrange/webkitrange.js', ['goog.dom.browserrange.WebKitRange'], ['goog.dom.RangeEndpoint', 'goog.dom.browserrange.W3cRange', 'goog.userAgent'], false); -goog.addDependency('dom/bufferedviewportsizemonitor.js', ['goog.dom.BufferedViewportSizeMonitor'], ['goog.asserts', 'goog.async.Delay', 'goog.events', 'goog.events.EventTarget', 'goog.events.EventType'], false); -goog.addDependency('dom/bufferedviewportsizemonitor_test.js', ['goog.dom.BufferedViewportSizeMonitorTest'], ['goog.dom.BufferedViewportSizeMonitor', 'goog.dom.ViewportSizeMonitor', 'goog.events', 'goog.events.EventType', 'goog.math.Size', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit'], false); -goog.addDependency('dom/classes.js', ['goog.dom.classes'], ['goog.array'], false); -goog.addDependency('dom/classes_test.js', ['goog.dom.classes_test'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classes', 'goog.testing.jsunit'], false); -goog.addDependency('dom/classlist.js', ['goog.dom.classlist'], ['goog.array'], false); -goog.addDependency('dom/classlist_test.js', ['goog.dom.classlist_test'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.testing.ExpectedFailures', 'goog.testing.jsunit'], false); -goog.addDependency('dom/controlrange.js', ['goog.dom.ControlRange', 'goog.dom.ControlRangeIterator'], ['goog.array', 'goog.dom', 'goog.dom.AbstractMultiRange', 'goog.dom.AbstractRange', 'goog.dom.RangeIterator', 'goog.dom.RangeType', 'goog.dom.SavedRange', 'goog.dom.TagWalkType', 'goog.dom.TextRange', 'goog.iter.StopIteration', 'goog.userAgent'], false); -goog.addDependency('dom/controlrange_test.js', ['goog.dom.ControlRangeTest'], ['goog.dom', 'goog.dom.ControlRange', 'goog.dom.RangeType', 'goog.dom.TagName', 'goog.dom.TextRange', 'goog.testing.dom', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('dom/dataset.js', ['goog.dom.dataset'], ['goog.string', 'goog.userAgent.product'], false); -goog.addDependency('dom/dataset_test.js', ['goog.dom.datasetTest'], ['goog.dom', 'goog.dom.dataset', 'goog.testing.jsunit'], false); -goog.addDependency('dom/dom.js', ['goog.dom', 'goog.dom.Appendable', 'goog.dom.DomHelper'], ['goog.array', 'goog.asserts', 'goog.dom.BrowserFeature', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.safe', 'goog.html.SafeHtml', 'goog.math.Coordinate', 'goog.math.Size', 'goog.object', 'goog.string', 'goog.string.Unicode', 'goog.userAgent'], false); -goog.addDependency('dom/dom_test.js', ['goog.dom.dom_test'], ['goog.dom', 'goog.dom.BrowserFeature', 'goog.dom.DomHelper', 'goog.dom.InputType', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.functions', 'goog.html.testing', 'goog.object', 'goog.string.Unicode', 'goog.testing.PropertyReplacer', 'goog.testing.asserts', 'goog.userAgent', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('dom/fontsizemonitor.js', ['goog.dom.FontSizeMonitor', 'goog.dom.FontSizeMonitor.EventType'], ['goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.userAgent'], false); -goog.addDependency('dom/fontsizemonitor_test.js', ['goog.dom.FontSizeMonitorTest'], ['goog.dom', 'goog.dom.FontSizeMonitor', 'goog.dom.TagName', 'goog.events', 'goog.events.Event', 'goog.testing.PropertyReplacer', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('dom/forms.js', ['goog.dom.forms'], ['goog.dom.InputType', 'goog.dom.TagName', 'goog.structs.Map'], false); -goog.addDependency('dom/forms_test.js', ['goog.dom.formsTest'], ['goog.dom', 'goog.dom.forms', 'goog.testing.jsunit'], false); -goog.addDependency('dom/fullscreen.js', ['goog.dom.fullscreen', 'goog.dom.fullscreen.EventType'], ['goog.dom', 'goog.userAgent'], false); -goog.addDependency('dom/fullscreen_test.js', ['goog.dom.fullscreen_test'], ['goog.dom.DomHelper', 'goog.dom.fullscreen', 'goog.testing.PropertyReplacer', 'goog.testing.asserts', 'goog.testing.jsunit'], false); -goog.addDependency('dom/iframe.js', ['goog.dom.iframe'], ['goog.dom', 'goog.dom.safe', 'goog.html.SafeHtml', 'goog.html.SafeStyle', 'goog.html.legacyconversions', 'goog.userAgent'], false); -goog.addDependency('dom/iframe_test.js', ['goog.dom.iframeTest'], ['goog.dom', 'goog.dom.iframe', 'goog.html.SafeHtml', 'goog.html.SafeStyle', 'goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('dom/inputtype.js', ['goog.dom.InputType'], [], false); -goog.addDependency('dom/inputtype_test.js', ['goog.dom.InputTypeTest'], ['goog.dom.InputType', 'goog.object'], false); -goog.addDependency('dom/iter.js', ['goog.dom.iter.AncestorIterator', 'goog.dom.iter.ChildIterator', 'goog.dom.iter.SiblingIterator'], ['goog.iter.Iterator', 'goog.iter.StopIteration'], false); -goog.addDependency('dom/iter_test.js', ['goog.dom.iterTest'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.iter.AncestorIterator', 'goog.dom.iter.ChildIterator', 'goog.dom.iter.SiblingIterator', 'goog.testing.dom', 'goog.testing.jsunit'], false); -goog.addDependency('dom/multirange.js', ['goog.dom.MultiRange', 'goog.dom.MultiRangeIterator'], ['goog.array', 'goog.dom.AbstractMultiRange', 'goog.dom.AbstractRange', 'goog.dom.RangeIterator', 'goog.dom.RangeType', 'goog.dom.SavedRange', 'goog.dom.TextRange', 'goog.iter.StopIteration', 'goog.log'], false); -goog.addDependency('dom/multirange_test.js', ['goog.dom.MultiRangeTest'], ['goog.dom', 'goog.dom.MultiRange', 'goog.dom.Range', 'goog.iter', 'goog.testing.jsunit'], false); -goog.addDependency('dom/nodeiterator.js', ['goog.dom.NodeIterator'], ['goog.dom.TagIterator'], false); -goog.addDependency('dom/nodeiterator_test.js', ['goog.dom.NodeIteratorTest'], ['goog.dom', 'goog.dom.NodeIterator', 'goog.testing.dom', 'goog.testing.jsunit'], false); -goog.addDependency('dom/nodeoffset.js', ['goog.dom.NodeOffset'], ['goog.Disposable', 'goog.dom.TagName'], false); -goog.addDependency('dom/nodeoffset_test.js', ['goog.dom.NodeOffsetTest'], ['goog.dom', 'goog.dom.NodeOffset', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.testing.jsunit'], false); -goog.addDependency('dom/nodetype.js', ['goog.dom.NodeType'], [], false); -goog.addDependency('dom/pattern/abstractpattern.js', ['goog.dom.pattern.AbstractPattern'], ['goog.dom.pattern.MatchType'], false); -goog.addDependency('dom/pattern/allchildren.js', ['goog.dom.pattern.AllChildren'], ['goog.dom.pattern.AbstractPattern', 'goog.dom.pattern.MatchType'], false); -goog.addDependency('dom/pattern/callback/callback.js', ['goog.dom.pattern.callback'], ['goog.dom', 'goog.dom.TagWalkType', 'goog.iter'], false); -goog.addDependency('dom/pattern/callback/counter.js', ['goog.dom.pattern.callback.Counter'], [], false); -goog.addDependency('dom/pattern/callback/test.js', ['goog.dom.pattern.callback.Test'], ['goog.iter.StopIteration'], false); -goog.addDependency('dom/pattern/childmatches.js', ['goog.dom.pattern.ChildMatches'], ['goog.dom.pattern.AllChildren', 'goog.dom.pattern.MatchType'], false); -goog.addDependency('dom/pattern/endtag.js', ['goog.dom.pattern.EndTag'], ['goog.dom.TagWalkType', 'goog.dom.pattern.Tag'], false); -goog.addDependency('dom/pattern/fulltag.js', ['goog.dom.pattern.FullTag'], ['goog.dom.pattern.MatchType', 'goog.dom.pattern.StartTag', 'goog.dom.pattern.Tag'], false); -goog.addDependency('dom/pattern/matcher.js', ['goog.dom.pattern.Matcher'], ['goog.dom.TagIterator', 'goog.dom.pattern.MatchType', 'goog.iter'], false); -goog.addDependency('dom/pattern/matcher_test.js', ['goog.dom.pattern.matcherTest'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.pattern.EndTag', 'goog.dom.pattern.FullTag', 'goog.dom.pattern.Matcher', 'goog.dom.pattern.Repeat', 'goog.dom.pattern.Sequence', 'goog.dom.pattern.StartTag', 'goog.dom.pattern.callback.Counter', 'goog.dom.pattern.callback.Test', 'goog.iter.StopIteration', 'goog.testing.jsunit'], false); -goog.addDependency('dom/pattern/nodetype.js', ['goog.dom.pattern.NodeType'], ['goog.dom.pattern.AbstractPattern', 'goog.dom.pattern.MatchType'], false); -goog.addDependency('dom/pattern/pattern.js', ['goog.dom.pattern', 'goog.dom.pattern.MatchType'], [], false); -goog.addDependency('dom/pattern/pattern_test.js', ['goog.dom.patternTest'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.TagWalkType', 'goog.dom.pattern.AllChildren', 'goog.dom.pattern.ChildMatches', 'goog.dom.pattern.EndTag', 'goog.dom.pattern.FullTag', 'goog.dom.pattern.MatchType', 'goog.dom.pattern.NodeType', 'goog.dom.pattern.Repeat', 'goog.dom.pattern.Sequence', 'goog.dom.pattern.StartTag', 'goog.dom.pattern.Text', 'goog.testing.jsunit'], false); -goog.addDependency('dom/pattern/repeat.js', ['goog.dom.pattern.Repeat'], ['goog.dom.NodeType', 'goog.dom.pattern.AbstractPattern', 'goog.dom.pattern.MatchType'], false); -goog.addDependency('dom/pattern/sequence.js', ['goog.dom.pattern.Sequence'], ['goog.dom.NodeType', 'goog.dom.pattern', 'goog.dom.pattern.AbstractPattern', 'goog.dom.pattern.MatchType'], false); -goog.addDependency('dom/pattern/starttag.js', ['goog.dom.pattern.StartTag'], ['goog.dom.TagWalkType', 'goog.dom.pattern.Tag'], false); -goog.addDependency('dom/pattern/tag.js', ['goog.dom.pattern.Tag'], ['goog.dom.pattern', 'goog.dom.pattern.AbstractPattern', 'goog.dom.pattern.MatchType', 'goog.object'], false); -goog.addDependency('dom/pattern/text.js', ['goog.dom.pattern.Text'], ['goog.dom.NodeType', 'goog.dom.pattern', 'goog.dom.pattern.AbstractPattern', 'goog.dom.pattern.MatchType'], false); -goog.addDependency('dom/range.js', ['goog.dom.Range'], ['goog.dom', 'goog.dom.AbstractRange', 'goog.dom.BrowserFeature', 'goog.dom.ControlRange', 'goog.dom.MultiRange', 'goog.dom.NodeType', 'goog.dom.TextRange'], false); -goog.addDependency('dom/range_test.js', ['goog.dom.RangeTest'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.RangeType', 'goog.dom.TagName', 'goog.dom.TextRange', 'goog.dom.browserrange', 'goog.testing.dom', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('dom/rangeendpoint.js', ['goog.dom.RangeEndpoint'], [], false); -goog.addDependency('dom/safe.js', ['goog.dom.safe', 'goog.dom.safe.InsertAdjacentHtmlPosition'], ['goog.asserts', 'goog.html.SafeHtml', 'goog.html.SafeUrl', 'goog.html.TrustedResourceUrl', 'goog.string', 'goog.string.Const'], false); -goog.addDependency('dom/safe_test.js', ['goog.dom.safeTest'], ['goog.dom.safe', 'goog.dom.safe.InsertAdjacentHtmlPosition', 'goog.html.SafeHtml', 'goog.html.SafeUrl', 'goog.html.TrustedResourceUrl', 'goog.html.testing', 'goog.string.Const', 'goog.testing', 'goog.testing.jsunit'], false); -goog.addDependency('dom/savedcaretrange.js', ['goog.dom.SavedCaretRange'], ['goog.array', 'goog.dom', 'goog.dom.SavedRange', 'goog.dom.TagName', 'goog.string'], false); -goog.addDependency('dom/savedcaretrange_test.js', ['goog.dom.SavedCaretRangeTest'], ['goog.dom', 'goog.dom.Range', 'goog.dom.SavedCaretRange', 'goog.testing.dom', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('dom/savedrange.js', ['goog.dom.SavedRange'], ['goog.Disposable', 'goog.log'], false); -goog.addDependency('dom/savedrange_test.js', ['goog.dom.SavedRangeTest'], ['goog.dom', 'goog.dom.Range', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('dom/selection.js', ['goog.dom.selection'], ['goog.dom.InputType', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('dom/selection_test.js', ['goog.dom.selectionTest'], ['goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.dom.selection', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('dom/tagiterator.js', ['goog.dom.TagIterator', 'goog.dom.TagWalkType'], ['goog.dom', 'goog.dom.NodeType', 'goog.iter.Iterator', 'goog.iter.StopIteration'], false); -goog.addDependency('dom/tagiterator_test.js', ['goog.dom.TagIteratorTest'], ['goog.dom', 'goog.dom.TagIterator', 'goog.dom.TagName', 'goog.dom.TagWalkType', 'goog.iter', 'goog.iter.StopIteration', 'goog.testing.dom', 'goog.testing.jsunit'], false); -goog.addDependency('dom/tagname.js', ['goog.dom.TagName'], [], false); -goog.addDependency('dom/tagname_test.js', ['goog.dom.TagNameTest'], ['goog.dom.TagName', 'goog.object', 'goog.testing.jsunit'], false); -goog.addDependency('dom/tags.js', ['goog.dom.tags'], ['goog.object'], false); -goog.addDependency('dom/tags_test.js', ['goog.dom.tagsTest'], ['goog.dom.tags', 'goog.testing.jsunit'], false); -goog.addDependency('dom/textrange.js', ['goog.dom.TextRange'], ['goog.array', 'goog.dom', 'goog.dom.AbstractRange', 'goog.dom.RangeType', 'goog.dom.SavedRange', 'goog.dom.TagName', 'goog.dom.TextRangeIterator', 'goog.dom.browserrange', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('dom/textrange_test.js', ['goog.dom.TextRangeTest'], ['goog.dom', 'goog.dom.ControlRange', 'goog.dom.Range', 'goog.dom.TextRange', 'goog.math.Coordinate', 'goog.style', 'goog.testing.ExpectedFailures', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('dom/textrangeiterator.js', ['goog.dom.TextRangeIterator'], ['goog.array', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.RangeIterator', 'goog.dom.TagName', 'goog.iter.StopIteration'], false); -goog.addDependency('dom/textrangeiterator_test.js', ['goog.dom.TextRangeIteratorTest'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.TextRangeIterator', 'goog.iter.StopIteration', 'goog.testing.dom', 'goog.testing.jsunit'], false); -goog.addDependency('dom/vendor.js', ['goog.dom.vendor'], ['goog.string', 'goog.userAgent'], false); -goog.addDependency('dom/vendor_test.js', ['goog.dom.vendorTest'], ['goog.array', 'goog.dom.vendor', 'goog.labs.userAgent.util', 'goog.testing.MockUserAgent', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgentTestUtil'], false); -goog.addDependency('dom/viewportsizemonitor.js', ['goog.dom.ViewportSizeMonitor'], ['goog.dom', 'goog.events', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.math.Size'], false); -goog.addDependency('dom/viewportsizemonitor_test.js', ['goog.dom.ViewportSizeMonitorTest'], ['goog.dom.ViewportSizeMonitor', 'goog.events', 'goog.events.Event', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.math.Size', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('dom/xml.js', ['goog.dom.xml'], ['goog.dom', 'goog.dom.NodeType', 'goog.userAgent'], false); -goog.addDependency('dom/xml_test.js', ['goog.dom.xmlTest'], ['goog.dom.TagName', 'goog.dom.xml', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/browserfeature.js', ['goog.editor.BrowserFeature'], ['goog.editor.defines', 'goog.userAgent', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('editor/browserfeature_test.js', ['goog.editor.BrowserFeatureTest'], ['goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.testing.ExpectedFailures', 'goog.testing.jsunit'], false); -goog.addDependency('editor/clicktoeditwrapper.js', ['goog.editor.ClickToEditWrapper'], ['goog.Disposable', 'goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Command', 'goog.editor.Field', 'goog.editor.range', 'goog.events.BrowserEvent', 'goog.events.EventHandler', 'goog.events.EventType'], false); -goog.addDependency('editor/clicktoeditwrapper_test.js', ['goog.editor.ClickToEditWrapperTest'], ['goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.ClickToEditWrapper', 'goog.editor.SeamlessField', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('editor/command.js', ['goog.editor.Command'], [], false); -goog.addDependency('editor/contenteditablefield.js', ['goog.editor.ContentEditableField'], ['goog.asserts', 'goog.editor.Field', 'goog.log'], false); -goog.addDependency('editor/contenteditablefield_test.js', ['goog.editor.ContentEditableFieldTest'], ['goog.dom', 'goog.editor.ContentEditableField', 'goog.editor.field_test', 'goog.testing.jsunit'], false); -goog.addDependency('editor/defines.js', ['goog.editor.defines'], [], false); -goog.addDependency('editor/field.js', ['goog.editor.Field', 'goog.editor.Field.EventType'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.array', 'goog.asserts', 'goog.async.Delay', 'goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.editor.BrowserFeature', 'goog.editor.Command', 'goog.editor.Plugin', 'goog.editor.icontent', 'goog.editor.icontent.FieldFormatInfo', 'goog.editor.icontent.FieldStyleInfo', 'goog.editor.node', 'goog.editor.range', 'goog.events', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.functions', 'goog.log', 'goog.log.Level', 'goog.string', 'goog.string.Unicode', 'goog.style', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('editor/field_test.js', ['goog.editor.field_test'], ['goog.array', 'goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.editor.BrowserFeature', 'goog.editor.Field', 'goog.editor.Plugin', 'goog.editor.range', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.functions', 'goog.testing.LooseMock', 'goog.testing.MockClock', 'goog.testing.dom', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.recordFunction', 'goog.userAgent'], false); -goog.addDependency('editor/focus.js', ['goog.editor.focus'], ['goog.dom.selection'], false); -goog.addDependency('editor/focus_test.js', ['goog.editor.focusTest'], ['goog.dom.selection', 'goog.editor.BrowserFeature', 'goog.editor.focus', 'goog.testing.jsunit'], false); -goog.addDependency('editor/icontent.js', ['goog.editor.icontent', 'goog.editor.icontent.FieldFormatInfo', 'goog.editor.icontent.FieldStyleInfo'], ['goog.dom', 'goog.editor.BrowserFeature', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('editor/icontent_test.js', ['goog.editor.icontentTest'], ['goog.dom', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.icontent', 'goog.editor.icontent.FieldFormatInfo', 'goog.editor.icontent.FieldStyleInfo', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/link.js', ['goog.editor.Link'], ['goog.array', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Command', 'goog.editor.node', 'goog.editor.range', 'goog.string', 'goog.string.Unicode', 'goog.uri.utils', 'goog.uri.utils.ComponentIndex'], false); -goog.addDependency('editor/link_test.js', ['goog.editor.LinkTest'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.Link', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/node.js', ['goog.editor.node'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.iter.ChildIterator', 'goog.dom.iter.SiblingIterator', 'goog.iter', 'goog.object', 'goog.string', 'goog.string.Unicode', 'goog.userAgent'], false); -goog.addDependency('editor/node_test.js', ['goog.editor.nodeTest'], ['goog.array', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.editor.node', 'goog.style', 'goog.testing.ExpectedFailures', 'goog.testing.dom', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugin.js', ['goog.editor.Plugin'], ['goog.events.EventTarget', 'goog.functions', 'goog.log', 'goog.object', 'goog.reflect', 'goog.userAgent'], false); -goog.addDependency('editor/plugin_test.js', ['goog.editor.PluginTest'], ['goog.editor.Field', 'goog.editor.Plugin', 'goog.functions', 'goog.testing.StrictMock', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/abstractbubbleplugin.js', ['goog.editor.plugins.AbstractBubblePlugin'], ['goog.array', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.editor.Plugin', 'goog.editor.style', 'goog.events', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.actionEventWrapper', 'goog.functions', 'goog.string.Unicode', 'goog.ui.Component', 'goog.ui.editor.Bubble', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/abstractbubbleplugin_test.js', ['goog.editor.plugins.AbstractBubblePluginTest'], ['goog.dom', 'goog.dom.TagName', 'goog.editor.plugins.AbstractBubblePlugin', 'goog.events.BrowserEvent', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.functions', 'goog.style', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.ui.editor.Bubble', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/abstractdialogplugin.js', ['goog.editor.plugins.AbstractDialogPlugin', 'goog.editor.plugins.AbstractDialogPlugin.EventType'], ['goog.dom', 'goog.dom.Range', 'goog.editor.Field', 'goog.editor.Plugin', 'goog.editor.range', 'goog.events', 'goog.ui.editor.AbstractDialog'], false); -goog.addDependency('editor/plugins/abstractdialogplugin_test.js', ['goog.editor.plugins.AbstractDialogPluginTest'], ['goog.dom.SavedRange', 'goog.dom.TagName', 'goog.editor.Field', 'goog.editor.plugins.AbstractDialogPlugin', 'goog.events.Event', 'goog.events.EventHandler', 'goog.functions', 'goog.testing.MockClock', 'goog.testing.MockControl', 'goog.testing.PropertyReplacer', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.mockmatchers.ArgumentMatcher', 'goog.ui.editor.AbstractDialog', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/abstracttabhandler.js', ['goog.editor.plugins.AbstractTabHandler'], ['goog.editor.Plugin', 'goog.events.KeyCodes', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/abstracttabhandler_test.js', ['goog.editor.plugins.AbstractTabHandlerTest'], ['goog.editor.Field', 'goog.editor.plugins.AbstractTabHandler', 'goog.events.BrowserEvent', 'goog.events.KeyCodes', 'goog.testing.StrictMock', 'goog.testing.editor.FieldMock', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/basictextformatter.js', ['goog.editor.plugins.BasicTextFormatter', 'goog.editor.plugins.BasicTextFormatter.COMMAND'], ['goog.array', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Command', 'goog.editor.Link', 'goog.editor.Plugin', 'goog.editor.node', 'goog.editor.range', 'goog.editor.style', 'goog.iter', 'goog.iter.StopIteration', 'goog.log', 'goog.object', 'goog.string', 'goog.string.Unicode', 'goog.style', 'goog.ui.editor.messages', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/basictextformatter_test.js', ['goog.editor.plugins.BasicTextFormatterTest'], ['goog.array', 'goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Command', 'goog.editor.Field', 'goog.editor.Plugin', 'goog.editor.plugins.BasicTextFormatter', 'goog.object', 'goog.style', 'goog.testing.ExpectedFailures', 'goog.testing.LooseMock', 'goog.testing.PropertyReplacer', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.jsunit', 'goog.testing.mockmatchers', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/blockquote.js', ['goog.editor.plugins.Blockquote'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.editor.BrowserFeature', 'goog.editor.Command', 'goog.editor.Plugin', 'goog.editor.node', 'goog.functions', 'goog.log'], false); -goog.addDependency('editor/plugins/blockquote_test.js', ['goog.editor.plugins.BlockquoteTest'], ['goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.plugins.Blockquote', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.jsunit'], false); -goog.addDependency('editor/plugins/emoticons.js', ['goog.editor.plugins.Emoticons'], ['goog.dom.TagName', 'goog.editor.Plugin', 'goog.editor.range', 'goog.functions', 'goog.ui.emoji.Emoji', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/emoticons_test.js', ['goog.editor.plugins.EmoticonsTest'], ['goog.Uri', 'goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.editor.Field', 'goog.editor.plugins.Emoticons', 'goog.testing.jsunit', 'goog.ui.emoji.Emoji', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/enterhandler.js', ['goog.editor.plugins.EnterHandler'], ['goog.dom', 'goog.dom.NodeOffset', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Plugin', 'goog.editor.node', 'goog.editor.plugins.Blockquote', 'goog.editor.range', 'goog.editor.style', 'goog.events.KeyCodes', 'goog.functions', 'goog.object', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/enterhandler_test.js', ['goog.editor.plugins.EnterHandlerTest'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Field', 'goog.editor.Plugin', 'goog.editor.plugins.Blockquote', 'goog.editor.plugins.EnterHandler', 'goog.editor.range', 'goog.events', 'goog.events.KeyCodes', 'goog.testing.ExpectedFailures', 'goog.testing.MockClock', 'goog.testing.dom', 'goog.testing.editor.TestHelper', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/firststrong.js', ['goog.editor.plugins.FirstStrong'], ['goog.dom.NodeType', 'goog.dom.TagIterator', 'goog.dom.TagName', 'goog.editor.Command', 'goog.editor.Field', 'goog.editor.Plugin', 'goog.editor.node', 'goog.editor.range', 'goog.i18n.bidi', 'goog.i18n.uChar', 'goog.iter', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/firststrong_test.js', ['goog.editor.plugins.FirstStrongTest'], ['goog.dom.Range', 'goog.editor.Command', 'goog.editor.Field', 'goog.editor.plugins.FirstStrong', 'goog.editor.range', 'goog.events.KeyCodes', 'goog.testing.MockClock', 'goog.testing.editor.TestHelper', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/headerformatter.js', ['goog.editor.plugins.HeaderFormatter'], ['goog.editor.Command', 'goog.editor.Plugin', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/headerformatter_test.js', ['goog.editor.plugins.HeaderFormatterTest'], ['goog.dom', 'goog.editor.Command', 'goog.editor.plugins.BasicTextFormatter', 'goog.editor.plugins.HeaderFormatter', 'goog.events.BrowserEvent', 'goog.testing.LooseMock', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/linkbubble.js', ['goog.editor.plugins.LinkBubble', 'goog.editor.plugins.LinkBubble.Action'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.editor.Command', 'goog.editor.Link', 'goog.editor.plugins.AbstractBubblePlugin', 'goog.editor.range', 'goog.functions', 'goog.string', 'goog.style', 'goog.ui.editor.messages', 'goog.uri.utils', 'goog.window'], false); -goog.addDependency('editor/plugins/linkbubble_test.js', ['goog.editor.plugins.LinkBubbleTest'], ['goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.Command', 'goog.editor.Link', 'goog.editor.plugins.LinkBubble', 'goog.events.BrowserEvent', 'goog.events.Event', 'goog.events.EventType', 'goog.string', 'goog.style', 'goog.testing.FunctionMock', 'goog.testing.PropertyReplacer', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/linkdialogplugin.js', ['goog.editor.plugins.LinkDialogPlugin'], ['goog.array', 'goog.dom', 'goog.editor.Command', 'goog.editor.plugins.AbstractDialogPlugin', 'goog.events.EventHandler', 'goog.functions', 'goog.ui.editor.AbstractDialog', 'goog.ui.editor.LinkDialog', 'goog.uri.utils'], false); -goog.addDependency('editor/plugins/linkdialogplugin_test.js', ['goog.ui.editor.plugins.LinkDialogTest'], ['goog.dom', 'goog.dom.DomHelper', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Command', 'goog.editor.Field', 'goog.editor.Link', 'goog.editor.plugins.LinkDialogPlugin', 'goog.string', 'goog.string.Unicode', 'goog.testing.MockControl', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.editor.dom', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.mockmatchers', 'goog.ui.editor.AbstractDialog', 'goog.ui.editor.LinkDialog', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/linkshortcutplugin.js', ['goog.editor.plugins.LinkShortcutPlugin'], ['goog.editor.Command', 'goog.editor.Plugin'], false); -goog.addDependency('editor/plugins/linkshortcutplugin_test.js', ['goog.editor.plugins.LinkShortcutPluginTest'], ['goog.dom', 'goog.dom.TagName', 'goog.editor.Field', 'goog.editor.plugins.BasicTextFormatter', 'goog.editor.plugins.LinkBubble', 'goog.editor.plugins.LinkShortcutPlugin', 'goog.events.KeyCodes', 'goog.testing.PropertyReplacer', 'goog.testing.dom', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent.product'], false); -goog.addDependency('editor/plugins/listtabhandler.js', ['goog.editor.plugins.ListTabHandler'], ['goog.dom', 'goog.dom.TagName', 'goog.editor.Command', 'goog.editor.plugins.AbstractTabHandler', 'goog.iter'], false); -goog.addDependency('editor/plugins/listtabhandler_test.js', ['goog.editor.plugins.ListTabHandlerTest'], ['goog.dom', 'goog.editor.Command', 'goog.editor.plugins.ListTabHandler', 'goog.events.BrowserEvent', 'goog.events.KeyCodes', 'goog.functions', 'goog.testing.StrictMock', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.jsunit'], false); -goog.addDependency('editor/plugins/loremipsum.js', ['goog.editor.plugins.LoremIpsum'], ['goog.asserts', 'goog.dom', 'goog.editor.Command', 'goog.editor.Field', 'goog.editor.Plugin', 'goog.editor.node', 'goog.functions', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/loremipsum_test.js', ['goog.editor.plugins.LoremIpsumTest'], ['goog.dom', 'goog.editor.Command', 'goog.editor.Field', 'goog.editor.plugins.LoremIpsum', 'goog.string.Unicode', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/removeformatting.js', ['goog.editor.plugins.RemoveFormatting'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Plugin', 'goog.editor.node', 'goog.editor.range', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/removeformatting_test.js', ['goog.editor.plugins.RemoveFormattingTest'], ['goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.plugins.RemoveFormatting', 'goog.string', 'goog.testing.ExpectedFailures', 'goog.testing.dom', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/spacestabhandler.js', ['goog.editor.plugins.SpacesTabHandler'], ['goog.dom.TagName', 'goog.editor.plugins.AbstractTabHandler', 'goog.editor.range'], false); -goog.addDependency('editor/plugins/spacestabhandler_test.js', ['goog.editor.plugins.SpacesTabHandlerTest'], ['goog.dom', 'goog.dom.Range', 'goog.editor.plugins.SpacesTabHandler', 'goog.events.BrowserEvent', 'goog.events.KeyCodes', 'goog.functions', 'goog.testing.StrictMock', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.jsunit'], false); -goog.addDependency('editor/plugins/tableeditor.js', ['goog.editor.plugins.TableEditor'], ['goog.array', 'goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.Plugin', 'goog.editor.Table', 'goog.editor.node', 'goog.editor.range', 'goog.object', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/tableeditor_test.js', ['goog.editor.plugins.TableEditorTest'], ['goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.plugins.TableEditor', 'goog.object', 'goog.string', 'goog.testing.ExpectedFailures', 'goog.testing.JsUnitException', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/tagonenterhandler.js', ['goog.editor.plugins.TagOnEnterHandler'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.Command', 'goog.editor.node', 'goog.editor.plugins.EnterHandler', 'goog.editor.range', 'goog.editor.style', 'goog.events.KeyCodes', 'goog.functions', 'goog.string.Unicode', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/tagonenterhandler_test.js', ['goog.editor.plugins.TagOnEnterHandlerTest'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Field', 'goog.editor.Plugin', 'goog.editor.plugins.TagOnEnterHandler', 'goog.events.KeyCodes', 'goog.string.Unicode', 'goog.testing.dom', 'goog.testing.editor.TestHelper', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/undoredo.js', ['goog.editor.plugins.UndoRedo'], ['goog.dom', 'goog.dom.NodeOffset', 'goog.dom.Range', 'goog.editor.BrowserFeature', 'goog.editor.Command', 'goog.editor.Field', 'goog.editor.Plugin', 'goog.editor.node', 'goog.editor.plugins.UndoRedoManager', 'goog.editor.plugins.UndoRedoState', 'goog.events', 'goog.events.EventHandler', 'goog.log', 'goog.object'], false); -goog.addDependency('editor/plugins/undoredo_test.js', ['goog.editor.plugins.UndoRedoTest'], ['goog.array', 'goog.dom', 'goog.dom.browserrange', 'goog.editor.Field', 'goog.editor.plugins.LoremIpsum', 'goog.editor.plugins.UndoRedo', 'goog.events', 'goog.functions', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.StrictMock', 'goog.testing.jsunit'], false); -goog.addDependency('editor/plugins/undoredomanager.js', ['goog.editor.plugins.UndoRedoManager', 'goog.editor.plugins.UndoRedoManager.EventType'], ['goog.editor.plugins.UndoRedoState', 'goog.events', 'goog.events.EventTarget'], false); -goog.addDependency('editor/plugins/undoredomanager_test.js', ['goog.editor.plugins.UndoRedoManagerTest'], ['goog.editor.plugins.UndoRedoManager', 'goog.editor.plugins.UndoRedoState', 'goog.events', 'goog.testing.StrictMock', 'goog.testing.jsunit'], false); -goog.addDependency('editor/plugins/undoredostate.js', ['goog.editor.plugins.UndoRedoState'], ['goog.events.EventTarget'], false); -goog.addDependency('editor/plugins/undoredostate_test.js', ['goog.editor.plugins.UndoRedoStateTest'], ['goog.editor.plugins.UndoRedoState', 'goog.testing.jsunit'], false); -goog.addDependency('editor/range.js', ['goog.editor.range', 'goog.editor.range.Point'], ['goog.array', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.RangeEndpoint', 'goog.dom.SavedCaretRange', 'goog.editor.node', 'goog.editor.style', 'goog.iter', 'goog.userAgent'], false); -goog.addDependency('editor/range_test.js', ['goog.editor.rangeTest'], ['goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.range', 'goog.editor.range.Point', 'goog.string', 'goog.testing.dom', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/seamlessfield.js', ['goog.editor.SeamlessField'], ['goog.cssom.iframe.style', 'goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.dom.safe', 'goog.editor.BrowserFeature', 'goog.editor.Field', 'goog.editor.icontent', 'goog.editor.icontent.FieldFormatInfo', 'goog.editor.icontent.FieldStyleInfo', 'goog.editor.node', 'goog.events', 'goog.events.EventType', 'goog.html.uncheckedconversions', 'goog.log', 'goog.string.Const', 'goog.style'], false); -goog.addDependency('editor/seamlessfield_test.js', ['goog.editor.seamlessfield_test'], ['goog.dom', 'goog.dom.DomHelper', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Field', 'goog.editor.SeamlessField', 'goog.events', 'goog.functions', 'goog.style', 'goog.testing.MockClock', 'goog.testing.MockRange', 'goog.testing.jsunit'], false); -goog.addDependency('editor/style.js', ['goog.editor.style'], ['goog.array', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.events.EventType', 'goog.object', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('editor/style_test.js', ['goog.editor.styleTest'], ['goog.dom', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.style', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.style', 'goog.testing.LooseMock', 'goog.testing.jsunit', 'goog.testing.mockmatchers'], false); -goog.addDependency('editor/table.js', ['goog.editor.Table', 'goog.editor.TableCell', 'goog.editor.TableRow'], ['goog.dom', 'goog.dom.DomHelper', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.log', 'goog.string.Unicode', 'goog.style'], false); -goog.addDependency('editor/table_test.js', ['goog.editor.TableTest'], ['goog.dom', 'goog.dom.TagName', 'goog.editor.Table', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('events/actioneventwrapper.js', ['goog.events.actionEventWrapper'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.dom', 'goog.events', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.EventWrapper', 'goog.events.KeyCodes', 'goog.userAgent'], false); -goog.addDependency('events/actioneventwrapper_test.js', ['goog.events.actionEventWrapperTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.events', 'goog.events.EventHandler', 'goog.events.KeyCodes', 'goog.events.actionEventWrapper', 'goog.testing.events', 'goog.testing.jsunit'], false); -goog.addDependency('events/actionhandler.js', ['goog.events.ActionEvent', 'goog.events.ActionHandler', 'goog.events.ActionHandler.EventType', 'goog.events.BeforeActionEvent'], ['goog.events', 'goog.events.BrowserEvent', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.userAgent'], false); -goog.addDependency('events/actionhandler_test.js', ['goog.events.ActionHandlerTest'], ['goog.dom', 'goog.events', 'goog.events.ActionHandler', 'goog.testing.events', 'goog.testing.jsunit'], false); -goog.addDependency('events/browserevent.js', ['goog.events.BrowserEvent', 'goog.events.BrowserEvent.MouseButton'], ['goog.events.BrowserFeature', 'goog.events.Event', 'goog.events.EventType', 'goog.reflect', 'goog.userAgent'], false); -goog.addDependency('events/browserevent_test.js', ['goog.events.BrowserEventTest'], ['goog.events.BrowserEvent', 'goog.events.BrowserFeature', 'goog.math.Coordinate', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('events/browserfeature.js', ['goog.events.BrowserFeature'], ['goog.userAgent'], false); -goog.addDependency('events/event.js', ['goog.events.Event', 'goog.events.EventLike'], ['goog.Disposable', 'goog.events.EventId'], false); -goog.addDependency('events/event_test.js', ['goog.events.EventTest'], ['goog.events.Event', 'goog.events.EventId', 'goog.events.EventTarget', 'goog.testing.jsunit'], false); -goog.addDependency('events/eventhandler.js', ['goog.events.EventHandler'], ['goog.Disposable', 'goog.events', 'goog.object'], false); -goog.addDependency('events/eventhandler_test.js', ['goog.events.EventHandlerTest'], ['goog.events', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('events/eventid.js', ['goog.events.EventId'], [], false); -goog.addDependency('events/events.js', ['goog.events', 'goog.events.CaptureSimulationMode', 'goog.events.Key', 'goog.events.ListenableType'], ['goog.asserts', 'goog.debug.entryPointRegistry', 'goog.events.BrowserEvent', 'goog.events.BrowserFeature', 'goog.events.Listenable', 'goog.events.ListenerMap'], false); -goog.addDependency('events/events_test.js', ['goog.eventsTest'], ['goog.asserts.AssertionError', 'goog.debug.EntryPointMonitor', 'goog.debug.ErrorHandler', 'goog.debug.entryPointRegistry', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.BrowserFeature', 'goog.events.CaptureSimulationMode', 'goog.events.Event', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.Listener', 'goog.functions', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('events/eventtarget.js', ['goog.events.EventTarget'], ['goog.Disposable', 'goog.asserts', 'goog.events', 'goog.events.Event', 'goog.events.Listenable', 'goog.events.ListenerMap', 'goog.object'], false); -goog.addDependency('events/eventtarget_test.js', ['goog.events.EventTargetTest'], ['goog.events.EventTarget', 'goog.events.Listenable', 'goog.events.eventTargetTester', 'goog.events.eventTargetTester.KeyType', 'goog.events.eventTargetTester.UnlistenReturnType', 'goog.testing.jsunit'], false); -goog.addDependency('events/eventtarget_via_googevents_test.js', ['goog.events.EventTargetGoogEventsTest'], ['goog.events', 'goog.events.EventTarget', 'goog.events.eventTargetTester', 'goog.events.eventTargetTester.KeyType', 'goog.events.eventTargetTester.UnlistenReturnType', 'goog.testing', 'goog.testing.jsunit'], false); -goog.addDependency('events/eventtarget_via_w3cinterface_test.js', ['goog.events.EventTargetW3CTest'], ['goog.events.EventTarget', 'goog.events.eventTargetTester', 'goog.events.eventTargetTester.KeyType', 'goog.events.eventTargetTester.UnlistenReturnType', 'goog.testing.jsunit'], false); -goog.addDependency('events/eventtargettester.js', ['goog.events.eventTargetTester', 'goog.events.eventTargetTester.KeyType', 'goog.events.eventTargetTester.UnlistenReturnType'], ['goog.array', 'goog.events', 'goog.events.Event', 'goog.events.EventTarget', 'goog.testing.asserts', 'goog.testing.recordFunction'], false); -goog.addDependency('events/eventtype.js', ['goog.events.EventType'], ['goog.userAgent'], false); -goog.addDependency('events/eventwrapper.js', ['goog.events.EventWrapper'], [], false); -goog.addDependency('events/filedrophandler.js', ['goog.events.FileDropHandler', 'goog.events.FileDropHandler.EventType'], ['goog.array', 'goog.dom', 'goog.events.BrowserEvent', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.log', 'goog.log.Level'], false); -goog.addDependency('events/filedrophandler_test.js', ['goog.events.FileDropHandlerTest'], ['goog.events', 'goog.events.BrowserEvent', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.FileDropHandler', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('events/focushandler.js', ['goog.events.FocusHandler', 'goog.events.FocusHandler.EventType'], ['goog.events', 'goog.events.BrowserEvent', 'goog.events.EventTarget', 'goog.userAgent'], false); -goog.addDependency('events/imehandler.js', ['goog.events.ImeHandler', 'goog.events.ImeHandler.Event', 'goog.events.ImeHandler.EventType'], ['goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.userAgent'], false); -goog.addDependency('events/imehandler_test.js', ['goog.events.ImeHandlerTest'], ['goog.array', 'goog.dom', 'goog.events', 'goog.events.ImeHandler', 'goog.events.KeyCodes', 'goog.object', 'goog.string', 'goog.testing.PropertyReplacer', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('events/inputhandler.js', ['goog.events.InputHandler', 'goog.events.InputHandler.EventType'], ['goog.Timer', 'goog.dom.TagName', 'goog.events.BrowserEvent', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.KeyCodes', 'goog.userAgent'], false); -goog.addDependency('events/inputhandler_test.js', ['goog.events.InputHandlerTest'], ['goog.dom', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.InputHandler', 'goog.events.KeyCodes', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.userAgent'], false); -goog.addDependency('events/keycodes.js', ['goog.events.KeyCodes'], ['goog.userAgent'], false); -goog.addDependency('events/keycodes_test.js', ['goog.events.KeyCodesTest'], ['goog.events.BrowserEvent', 'goog.events.KeyCodes', 'goog.object', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('events/keyhandler.js', ['goog.events.KeyEvent', 'goog.events.KeyHandler', 'goog.events.KeyHandler.EventType'], ['goog.events', 'goog.events.BrowserEvent', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.userAgent'], false); -goog.addDependency('events/keyhandler_test.js', ['goog.events.KeyEventTest'], ['goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('events/keynames.js', ['goog.events.KeyNames'], [], false); -goog.addDependency('events/listenable.js', ['goog.events.Listenable', 'goog.events.ListenableKey'], ['goog.events.EventId'], false); -goog.addDependency('events/listenable_test.js', ['goog.events.ListenableTest'], ['goog.events.Listenable', 'goog.testing.jsunit'], false); -goog.addDependency('events/listener.js', ['goog.events.Listener'], ['goog.events.ListenableKey'], false); -goog.addDependency('events/listenermap.js', ['goog.events.ListenerMap'], ['goog.array', 'goog.events.Listener', 'goog.object'], false); -goog.addDependency('events/listenermap_test.js', ['goog.events.ListenerMapTest'], ['goog.dispose', 'goog.events', 'goog.events.EventId', 'goog.events.EventTarget', 'goog.events.ListenerMap', 'goog.testing.jsunit'], false); -goog.addDependency('events/mousewheelhandler.js', ['goog.events.MouseWheelEvent', 'goog.events.MouseWheelHandler', 'goog.events.MouseWheelHandler.EventType'], ['goog.dom', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.EventTarget', 'goog.math', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('events/mousewheelhandler_test.js', ['goog.events.MouseWheelHandlerTest'], ['goog.dom', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.MouseWheelEvent', 'goog.events.MouseWheelHandler', 'goog.functions', 'goog.string', 'goog.testing.PropertyReplacer', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('events/onlinehandler.js', ['goog.events.OnlineHandler', 'goog.events.OnlineHandler.EventType'], ['goog.Timer', 'goog.events.BrowserFeature', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.net.NetworkStatusMonitor'], false); -goog.addDependency('events/onlinelistener_test.js', ['goog.events.OnlineHandlerTest'], ['goog.events', 'goog.events.BrowserFeature', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.OnlineHandler', 'goog.net.NetworkStatusMonitor', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('events/pastehandler.js', ['goog.events.PasteHandler', 'goog.events.PasteHandler.EventType', 'goog.events.PasteHandler.State'], ['goog.Timer', 'goog.async.ConditionalDelay', 'goog.events.BrowserEvent', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.log', 'goog.userAgent'], false); -goog.addDependency('events/pastehandler_test.js', ['goog.events.PasteHandlerTest'], ['goog.dom', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.PasteHandler', 'goog.testing.MockClock', 'goog.testing.MockUserAgent', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('events/wheelevent.js', ['goog.events.WheelEvent'], ['goog.asserts', 'goog.events.BrowserEvent'], false); -goog.addDependency('events/wheelhandler.js', ['goog.events.WheelHandler'], ['goog.dom', 'goog.events', 'goog.events.EventTarget', 'goog.events.WheelEvent', 'goog.style', 'goog.userAgent', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('events/wheelhandler_test.js', ['goog.events.WheelHandlerTest'], ['goog.dom', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.WheelEvent', 'goog.events.WheelHandler', 'goog.string', 'goog.testing.PropertyReplacer', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('format/emailaddress.js', ['goog.format.EmailAddress'], ['goog.string'], false); -goog.addDependency('format/emailaddress_test.js', ['goog.format.EmailAddressTest'], ['goog.array', 'goog.format.EmailAddress', 'goog.testing.jsunit'], false); -goog.addDependency('format/format.js', ['goog.format'], ['goog.i18n.GraphemeBreak', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('format/format_test.js', ['goog.formatTest'], ['goog.dom', 'goog.dom.TagName', 'goog.format', 'goog.string', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('format/htmlprettyprinter.js', ['goog.format.HtmlPrettyPrinter', 'goog.format.HtmlPrettyPrinter.Buffer'], ['goog.dom.TagName', 'goog.object', 'goog.string.StringBuffer'], false); -goog.addDependency('format/htmlprettyprinter_test.js', ['goog.format.HtmlPrettyPrinterTest'], ['goog.format.HtmlPrettyPrinter', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('format/internationalizedemailaddress.js', ['goog.format.InternationalizedEmailAddress'], ['goog.format.EmailAddress', 'goog.string'], false); -goog.addDependency('format/internationalizedemailaddress_test.js', ['goog.format.InternationalizedEmailAddressTest'], ['goog.array', 'goog.format.InternationalizedEmailAddress', 'goog.testing.jsunit'], false); -goog.addDependency('format/jsonprettyprinter.js', ['goog.format.JsonPrettyPrinter', 'goog.format.JsonPrettyPrinter.HtmlDelimiters', 'goog.format.JsonPrettyPrinter.TextDelimiters'], ['goog.json', 'goog.json.Serializer', 'goog.string', 'goog.string.StringBuffer', 'goog.string.format'], false); -goog.addDependency('format/jsonprettyprinter_test.js', ['goog.format.JsonPrettyPrinterTest'], ['goog.format.JsonPrettyPrinter', 'goog.testing.jsunit'], false); -goog.addDependency('fs/entry.js', ['goog.fs.DirectoryEntry', 'goog.fs.DirectoryEntry.Behavior', 'goog.fs.Entry', 'goog.fs.FileEntry'], [], false); -goog.addDependency('fs/entryimpl.js', ['goog.fs.DirectoryEntryImpl', 'goog.fs.EntryImpl', 'goog.fs.FileEntryImpl'], ['goog.array', 'goog.async.Deferred', 'goog.fs.DirectoryEntry', 'goog.fs.Entry', 'goog.fs.Error', 'goog.fs.FileEntry', 'goog.fs.FileWriter', 'goog.functions', 'goog.string'], false); -goog.addDependency('fs/error.js', ['goog.fs.Error', 'goog.fs.Error.ErrorCode'], ['goog.debug.Error', 'goog.object', 'goog.string'], false); -goog.addDependency('fs/filereader.js', ['goog.fs.FileReader', 'goog.fs.FileReader.EventType', 'goog.fs.FileReader.ReadyState'], ['goog.async.Deferred', 'goog.events.EventTarget', 'goog.fs.Error', 'goog.fs.ProgressEvent'], false); -goog.addDependency('fs/filesaver.js', ['goog.fs.FileSaver', 'goog.fs.FileSaver.EventType', 'goog.fs.FileSaver.ReadyState'], ['goog.events.EventTarget', 'goog.fs.Error', 'goog.fs.ProgressEvent'], false); -goog.addDependency('fs/filesystem.js', ['goog.fs.FileSystem'], [], false); -goog.addDependency('fs/filesystemimpl.js', ['goog.fs.FileSystemImpl'], ['goog.fs.DirectoryEntryImpl', 'goog.fs.FileSystem'], false); -goog.addDependency('fs/filewriter.js', ['goog.fs.FileWriter'], ['goog.fs.Error', 'goog.fs.FileSaver'], false); -goog.addDependency('fs/fs.js', ['goog.fs'], ['goog.array', 'goog.async.Deferred', 'goog.fs.Error', 'goog.fs.FileReader', 'goog.fs.FileSystemImpl', 'goog.fs.url', 'goog.userAgent'], false); -goog.addDependency('fs/fs_test.js', ['goog.fsTest'], ['goog.Promise', 'goog.array', 'goog.dom', 'goog.events', 'goog.fs', 'goog.fs.DirectoryEntry', 'goog.fs.Error', 'goog.fs.FileReader', 'goog.fs.FileSaver', 'goog.string', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('fs/progressevent.js', ['goog.fs.ProgressEvent'], ['goog.events.Event'], false); -goog.addDependency('fs/url.js', ['goog.fs.url'], [], false); -goog.addDependency('fs/url_test.js', ['goog.urlTest'], ['goog.fs.url', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('functions/functions.js', ['goog.functions'], [], false); -goog.addDependency('functions/functions_test.js', ['goog.functionsTest'], ['goog.array', 'goog.functions', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('fx/abstractdragdrop.js', ['goog.fx.AbstractDragDrop', 'goog.fx.AbstractDragDrop.EventType', 'goog.fx.DragDropEvent', 'goog.fx.DragDropItem'], ['goog.asserts', 'goog.dom', 'goog.dom.classlist', 'goog.events', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.fx.Dragger', 'goog.math.Box', 'goog.math.Coordinate', 'goog.style'], false); -goog.addDependency('fx/abstractdragdrop_test.js', ['goog.fx.AbstractDragDropTest'], ['goog.array', 'goog.dom.TagName', 'goog.events.EventType', 'goog.functions', 'goog.fx.AbstractDragDrop', 'goog.fx.DragDropItem', 'goog.math.Box', 'goog.math.Coordinate', 'goog.style', 'goog.testing.events', 'goog.testing.jsunit'], false); -goog.addDependency('fx/anim/anim.js', ['goog.fx.anim', 'goog.fx.anim.Animated'], ['goog.async.AnimationDelay', 'goog.async.Delay', 'goog.object'], false); -goog.addDependency('fx/anim/anim_test.js', ['goog.fx.animTest'], ['goog.async.AnimationDelay', 'goog.async.Delay', 'goog.events', 'goog.functions', 'goog.fx.Animation', 'goog.fx.anim', 'goog.object', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.userAgent'], false); -goog.addDependency('fx/animation.js', ['goog.fx.Animation', 'goog.fx.Animation.EventType', 'goog.fx.Animation.State', 'goog.fx.AnimationEvent'], ['goog.array', 'goog.events.Event', 'goog.fx.Transition', 'goog.fx.TransitionBase', 'goog.fx.anim', 'goog.fx.anim.Animated'], false); -goog.addDependency('fx/animation_test.js', ['goog.fx.AnimationTest'], ['goog.events', 'goog.fx.Animation', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('fx/animationqueue.js', ['goog.fx.AnimationParallelQueue', 'goog.fx.AnimationQueue', 'goog.fx.AnimationSerialQueue'], ['goog.array', 'goog.asserts', 'goog.events', 'goog.fx.Transition', 'goog.fx.TransitionBase'], false); -goog.addDependency('fx/animationqueue_test.js', ['goog.fx.AnimationQueueTest'], ['goog.events', 'goog.fx.Animation', 'goog.fx.AnimationParallelQueue', 'goog.fx.AnimationSerialQueue', 'goog.fx.Transition', 'goog.fx.anim', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('fx/css3/fx.js', ['goog.fx.css3'], ['goog.fx.css3.Transition'], false); -goog.addDependency('fx/css3/transition.js', ['goog.fx.css3.Transition'], ['goog.Timer', 'goog.asserts', 'goog.fx.TransitionBase', 'goog.style', 'goog.style.transition'], false); -goog.addDependency('fx/css3/transition_test.js', ['goog.fx.css3.TransitionTest'], ['goog.dispose', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.fx.Transition', 'goog.fx.css3.Transition', 'goog.style.transition', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('fx/cssspriteanimation.js', ['goog.fx.CssSpriteAnimation'], ['goog.fx.Animation'], false); -goog.addDependency('fx/cssspriteanimation_test.js', ['goog.fx.CssSpriteAnimationTest'], ['goog.fx.CssSpriteAnimation', 'goog.math.Box', 'goog.math.Size', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('fx/dom.js', ['goog.fx.dom', 'goog.fx.dom.BgColorTransform', 'goog.fx.dom.ColorTransform', 'goog.fx.dom.Fade', 'goog.fx.dom.FadeIn', 'goog.fx.dom.FadeInAndShow', 'goog.fx.dom.FadeOut', 'goog.fx.dom.FadeOutAndHide', 'goog.fx.dom.PredefinedEffect', 'goog.fx.dom.Resize', 'goog.fx.dom.ResizeHeight', 'goog.fx.dom.ResizeWidth', 'goog.fx.dom.Scroll', 'goog.fx.dom.Slide', 'goog.fx.dom.SlideFrom', 'goog.fx.dom.Swipe'], ['goog.color', 'goog.events', 'goog.fx.Animation', 'goog.fx.Transition', 'goog.style', 'goog.style.bidi'], false); -goog.addDependency('fx/dragdrop.js', ['goog.fx.DragDrop'], ['goog.fx.AbstractDragDrop', 'goog.fx.DragDropItem'], false); -goog.addDependency('fx/dragdropgroup.js', ['goog.fx.DragDropGroup'], ['goog.dom', 'goog.fx.AbstractDragDrop', 'goog.fx.DragDropItem'], false); -goog.addDependency('fx/dragdropgroup_test.js', ['goog.fx.DragDropGroupTest'], ['goog.events', 'goog.fx.DragDropGroup', 'goog.testing.jsunit'], false); -goog.addDependency('fx/dragger.js', ['goog.fx.DragEvent', 'goog.fx.Dragger', 'goog.fx.Dragger.EventType'], ['goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.math.Coordinate', 'goog.math.Rect', 'goog.style', 'goog.style.bidi', 'goog.userAgent'], false); -goog.addDependency('fx/dragger_test.js', ['goog.fx.DraggerTest'], ['goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.Event', 'goog.events.EventType', 'goog.fx.Dragger', 'goog.math.Rect', 'goog.style.bidi', 'goog.testing.StrictMock', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('fx/draglistgroup.js', ['goog.fx.DragListDirection', 'goog.fx.DragListGroup', 'goog.fx.DragListGroup.EventType', 'goog.fx.DragListGroupEvent'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.classlist', 'goog.events', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.fx.Dragger', 'goog.math.Coordinate', 'goog.string', 'goog.style'], false); -goog.addDependency('fx/draglistgroup_test.js', ['goog.fx.DragListGroupTest'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.BrowserFeature', 'goog.events.Event', 'goog.events.EventType', 'goog.fx.DragEvent', 'goog.fx.DragListDirection', 'goog.fx.DragListGroup', 'goog.fx.Dragger', 'goog.math.Coordinate', 'goog.object', 'goog.testing.events', 'goog.testing.jsunit'], false); -goog.addDependency('fx/dragscrollsupport.js', ['goog.fx.DragScrollSupport'], ['goog.Disposable', 'goog.Timer', 'goog.dom', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.math.Coordinate', 'goog.style'], false); -goog.addDependency('fx/dragscrollsupport_test.js', ['goog.fx.DragScrollSupportTest'], ['goog.fx.DragScrollSupport', 'goog.math.Coordinate', 'goog.math.Rect', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.jsunit'], false); -goog.addDependency('fx/easing.js', ['goog.fx.easing'], [], false); -goog.addDependency('fx/easing_test.js', ['goog.fx.easingTest'], ['goog.fx.easing', 'goog.testing.jsunit'], false); -goog.addDependency('fx/fx.js', ['goog.fx'], ['goog.asserts', 'goog.fx.Animation', 'goog.fx.Animation.EventType', 'goog.fx.Animation.State', 'goog.fx.AnimationEvent', 'goog.fx.Transition.EventType', 'goog.fx.easing'], false); -goog.addDependency('fx/fx_test.js', ['goog.fxTest'], ['goog.fx.Animation', 'goog.object', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('fx/transition.js', ['goog.fx.Transition', 'goog.fx.Transition.EventType'], [], false); -goog.addDependency('fx/transitionbase.js', ['goog.fx.TransitionBase', 'goog.fx.TransitionBase.State'], ['goog.events.EventTarget', 'goog.fx.Transition'], false); -goog.addDependency('graphics/abstractgraphics.js', ['goog.graphics.AbstractGraphics'], ['goog.dom', 'goog.graphics.Path', 'goog.math.Coordinate', 'goog.math.Size', 'goog.style', 'goog.ui.Component'], false); -goog.addDependency('graphics/affinetransform.js', ['goog.graphics.AffineTransform'], ['goog.math'], false); -goog.addDependency('graphics/canvaselement.js', ['goog.graphics.CanvasEllipseElement', 'goog.graphics.CanvasGroupElement', 'goog.graphics.CanvasImageElement', 'goog.graphics.CanvasPathElement', 'goog.graphics.CanvasRectElement', 'goog.graphics.CanvasTextElement'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.dom.safe', 'goog.graphics.EllipseElement', 'goog.graphics.GroupElement', 'goog.graphics.ImageElement', 'goog.graphics.Path', 'goog.graphics.PathElement', 'goog.graphics.RectElement', 'goog.graphics.TextElement', 'goog.html.SafeHtml', 'goog.html.uncheckedconversions', 'goog.math', 'goog.string', 'goog.string.Const'], false); -goog.addDependency('graphics/canvasgraphics.js', ['goog.graphics.CanvasGraphics'], ['goog.dom.TagName', 'goog.events.EventType', 'goog.graphics.AbstractGraphics', 'goog.graphics.CanvasEllipseElement', 'goog.graphics.CanvasGroupElement', 'goog.graphics.CanvasImageElement', 'goog.graphics.CanvasPathElement', 'goog.graphics.CanvasRectElement', 'goog.graphics.CanvasTextElement', 'goog.graphics.SolidFill', 'goog.math.Size', 'goog.style'], false); -goog.addDependency('graphics/canvasgraphics_test.js', ['goog.graphics.CanvasGraphicsTest'], ['goog.dom', 'goog.graphics.CanvasGraphics', 'goog.graphics.SolidFill', 'goog.graphics.Stroke', 'goog.testing.jsunit'], false); -goog.addDependency('graphics/element.js', ['goog.graphics.Element'], ['goog.asserts', 'goog.events', 'goog.events.EventTarget', 'goog.events.Listenable', 'goog.graphics.AffineTransform', 'goog.math'], false); -goog.addDependency('graphics/ellipseelement.js', ['goog.graphics.EllipseElement'], ['goog.graphics.StrokeAndFillElement'], false); -goog.addDependency('graphics/ext/coordinates.js', ['goog.graphics.ext.coordinates'], ['goog.string'], false); -goog.addDependency('graphics/ext/element.js', ['goog.graphics.ext.Element'], ['goog.events.EventTarget', 'goog.functions', 'goog.graphics.ext.coordinates'], false); -goog.addDependency('graphics/ext/ellipse.js', ['goog.graphics.ext.Ellipse'], ['goog.graphics.ext.StrokeAndFillElement'], false); -goog.addDependency('graphics/ext/ext.js', ['goog.graphics.ext'], ['goog.graphics.ext.Ellipse', 'goog.graphics.ext.Graphics', 'goog.graphics.ext.Group', 'goog.graphics.ext.Image', 'goog.graphics.ext.Rectangle', 'goog.graphics.ext.Shape', 'goog.graphics.ext.coordinates'], false); -goog.addDependency('graphics/ext/graphics.js', ['goog.graphics.ext.Graphics'], ['goog.events', 'goog.events.EventType', 'goog.graphics', 'goog.graphics.ext.Group'], false); -goog.addDependency('graphics/ext/group.js', ['goog.graphics.ext.Group'], ['goog.array', 'goog.graphics.ext.Element'], false); -goog.addDependency('graphics/ext/image.js', ['goog.graphics.ext.Image'], ['goog.graphics.ext.Element'], false); -goog.addDependency('graphics/ext/path.js', ['goog.graphics.ext.Path'], ['goog.graphics.AffineTransform', 'goog.graphics.Path', 'goog.math.Rect'], false); -goog.addDependency('graphics/ext/rectangle.js', ['goog.graphics.ext.Rectangle'], ['goog.graphics.ext.StrokeAndFillElement'], false); -goog.addDependency('graphics/ext/shape.js', ['goog.graphics.ext.Shape'], ['goog.graphics.ext.StrokeAndFillElement'], false); -goog.addDependency('graphics/ext/strokeandfillelement.js', ['goog.graphics.ext.StrokeAndFillElement'], ['goog.graphics.ext.Element'], false); -goog.addDependency('graphics/fill.js', ['goog.graphics.Fill'], [], false); -goog.addDependency('graphics/font.js', ['goog.graphics.Font'], [], false); -goog.addDependency('graphics/graphics.js', ['goog.graphics'], ['goog.dom', 'goog.graphics.CanvasGraphics', 'goog.graphics.SvgGraphics', 'goog.graphics.VmlGraphics', 'goog.userAgent'], false); -goog.addDependency('graphics/groupelement.js', ['goog.graphics.GroupElement'], ['goog.graphics.Element'], false); -goog.addDependency('graphics/imageelement.js', ['goog.graphics.ImageElement'], ['goog.graphics.Element'], false); -goog.addDependency('graphics/lineargradient.js', ['goog.graphics.LinearGradient'], ['goog.asserts', 'goog.graphics.Fill'], false); -goog.addDependency('graphics/path.js', ['goog.graphics.Path', 'goog.graphics.Path.Segment'], ['goog.array', 'goog.math'], false); -goog.addDependency('graphics/pathelement.js', ['goog.graphics.PathElement'], ['goog.graphics.StrokeAndFillElement'], false); -goog.addDependency('graphics/paths.js', ['goog.graphics.paths'], ['goog.graphics.Path', 'goog.math.Coordinate'], false); -goog.addDependency('graphics/rectelement.js', ['goog.graphics.RectElement'], ['goog.graphics.StrokeAndFillElement'], false); -goog.addDependency('graphics/solidfill.js', ['goog.graphics.SolidFill'], ['goog.graphics.Fill'], false); -goog.addDependency('graphics/stroke.js', ['goog.graphics.Stroke'], [], false); -goog.addDependency('graphics/strokeandfillelement.js', ['goog.graphics.StrokeAndFillElement'], ['goog.graphics.Element'], false); -goog.addDependency('graphics/svgelement.js', ['goog.graphics.SvgEllipseElement', 'goog.graphics.SvgGroupElement', 'goog.graphics.SvgImageElement', 'goog.graphics.SvgPathElement', 'goog.graphics.SvgRectElement', 'goog.graphics.SvgTextElement'], ['goog.dom', 'goog.graphics.EllipseElement', 'goog.graphics.GroupElement', 'goog.graphics.ImageElement', 'goog.graphics.PathElement', 'goog.graphics.RectElement', 'goog.graphics.TextElement'], false); -goog.addDependency('graphics/svggraphics.js', ['goog.graphics.SvgGraphics'], ['goog.Timer', 'goog.dom', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.graphics.AbstractGraphics', 'goog.graphics.LinearGradient', 'goog.graphics.Path', 'goog.graphics.SolidFill', 'goog.graphics.Stroke', 'goog.graphics.SvgEllipseElement', 'goog.graphics.SvgGroupElement', 'goog.graphics.SvgImageElement', 'goog.graphics.SvgPathElement', 'goog.graphics.SvgRectElement', 'goog.graphics.SvgTextElement', 'goog.math', 'goog.math.Size', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('graphics/textelement.js', ['goog.graphics.TextElement'], ['goog.graphics.StrokeAndFillElement'], false); -goog.addDependency('graphics/vmlelement.js', ['goog.graphics.VmlEllipseElement', 'goog.graphics.VmlGroupElement', 'goog.graphics.VmlImageElement', 'goog.graphics.VmlPathElement', 'goog.graphics.VmlRectElement', 'goog.graphics.VmlTextElement'], ['goog.dom', 'goog.graphics.EllipseElement', 'goog.graphics.GroupElement', 'goog.graphics.ImageElement', 'goog.graphics.PathElement', 'goog.graphics.RectElement', 'goog.graphics.TextElement'], false); -goog.addDependency('graphics/vmlgraphics.js', ['goog.graphics.VmlGraphics'], ['goog.array', 'goog.dom.TagName', 'goog.dom.safe', 'goog.events', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.graphics.AbstractGraphics', 'goog.graphics.LinearGradient', 'goog.graphics.Path', 'goog.graphics.SolidFill', 'goog.graphics.VmlEllipseElement', 'goog.graphics.VmlGroupElement', 'goog.graphics.VmlImageElement', 'goog.graphics.VmlPathElement', 'goog.graphics.VmlRectElement', 'goog.graphics.VmlTextElement', 'goog.html.uncheckedconversions', 'goog.math', 'goog.math.Size', 'goog.string', 'goog.string.Const', 'goog.style'], false); -goog.addDependency('history/event.js', ['goog.history.Event'], ['goog.events.Event', 'goog.history.EventType'], false); -goog.addDependency('history/eventtype.js', ['goog.history.EventType'], [], false); -goog.addDependency('history/history.js', ['goog.History', 'goog.History.Event', 'goog.History.EventType'], ['goog.Timer', 'goog.asserts', 'goog.dom', 'goog.dom.InputType', 'goog.dom.safe', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.history.Event', 'goog.history.EventType', 'goog.html.SafeHtml', 'goog.html.TrustedResourceUrl', 'goog.html.legacyconversions', 'goog.labs.userAgent.device', 'goog.memoize', 'goog.string', 'goog.string.Const', 'goog.userAgent'], false); -goog.addDependency('history/history_test.js', ['goog.HistoryTest'], ['goog.History', 'goog.dispose', 'goog.dom', 'goog.html.TrustedResourceUrl', 'goog.string.Const', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('history/html5history.js', ['goog.history.Html5History', 'goog.history.Html5History.TokenTransformer'], ['goog.asserts', 'goog.events', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.history.Event'], false); -goog.addDependency('history/html5history_test.js', ['goog.history.Html5HistoryTest'], ['goog.Timer', 'goog.events', 'goog.events.EventType', 'goog.history.EventType', 'goog.history.Html5History', 'goog.testing.MockControl', 'goog.testing.jsunit', 'goog.testing.mockmatchers', 'goog.testing.recordFunction'], false); -goog.addDependency('html/flash.js', ['goog.html.flash'], ['goog.asserts', 'goog.html.SafeHtml'], false); -goog.addDependency('html/flash_test.js', ['goog.html.flashTest'], ['goog.html.SafeHtml', 'goog.html.TrustedResourceUrl', 'goog.html.flash', 'goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('html/legacyconversions.js', ['goog.html.legacyconversions'], ['goog.html.SafeHtml', 'goog.html.SafeStyle', 'goog.html.SafeUrl', 'goog.html.TrustedResourceUrl'], false); -goog.addDependency('html/legacyconversions_test.js', ['goog.html.legacyconversionsTest'], ['goog.html.SafeHtml', 'goog.html.SafeUrl', 'goog.html.TrustedResourceUrl', 'goog.html.legacyconversions', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('html/safehtml.js', ['goog.html.SafeHtml'], ['goog.array', 'goog.asserts', 'goog.dom.TagName', 'goog.dom.tags', 'goog.html.SafeStyle', 'goog.html.SafeStyleSheet', 'goog.html.SafeUrl', 'goog.html.TrustedResourceUrl', 'goog.i18n.bidi.Dir', 'goog.i18n.bidi.DirectionalString', 'goog.object', 'goog.string', 'goog.string.Const', 'goog.string.TypedString'], false); -goog.addDependency('html/safehtml_test.js', ['goog.html.safeHtmlTest'], ['goog.html.SafeHtml', 'goog.html.SafeStyle', 'goog.html.SafeStyleSheet', 'goog.html.SafeUrl', 'goog.html.TrustedResourceUrl', 'goog.html.testing', 'goog.i18n.bidi.Dir', 'goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('html/safescript.js', ['goog.html.SafeScript'], ['goog.asserts', 'goog.string.Const', 'goog.string.TypedString'], false); -goog.addDependency('html/safescript_test.js', ['goog.html.safeScriptTest'], ['goog.html.SafeScript', 'goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('html/safestyle.js', ['goog.html.SafeStyle'], ['goog.array', 'goog.asserts', 'goog.string', 'goog.string.Const', 'goog.string.TypedString'], false); -goog.addDependency('html/safestyle_test.js', ['goog.html.safeStyleTest'], ['goog.html.SafeStyle', 'goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('html/safestylesheet.js', ['goog.html.SafeStyleSheet'], ['goog.array', 'goog.asserts', 'goog.string', 'goog.string.Const', 'goog.string.TypedString'], false); -goog.addDependency('html/safestylesheet_test.js', ['goog.html.safeStyleSheetTest'], ['goog.html.SafeStyleSheet', 'goog.string', 'goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('html/safeurl.js', ['goog.html.SafeUrl'], ['goog.asserts', 'goog.fs.url', 'goog.i18n.bidi.Dir', 'goog.i18n.bidi.DirectionalString', 'goog.string.Const', 'goog.string.TypedString'], false); -goog.addDependency('html/safeurl_test.js', ['goog.html.safeUrlTest'], ['goog.html.SafeUrl', 'goog.i18n.bidi.Dir', 'goog.string.Const', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('html/silverlight.js', ['goog.html.silverlight'], ['goog.html.SafeHtml', 'goog.html.TrustedResourceUrl', 'goog.html.flash', 'goog.string.Const'], false); -goog.addDependency('html/silverlight_test.js', ['goog.html.silverlightTest'], ['goog.html.SafeHtml', 'goog.html.TrustedResourceUrl', 'goog.html.silverlight', 'goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('html/testing.js', ['goog.html.testing'], ['goog.html.SafeHtml', 'goog.html.SafeScript', 'goog.html.SafeStyle', 'goog.html.SafeStyleSheet', 'goog.html.SafeUrl', 'goog.html.TrustedResourceUrl'], false); -goog.addDependency('html/trustedresourceurl.js', ['goog.html.TrustedResourceUrl'], ['goog.asserts', 'goog.i18n.bidi.Dir', 'goog.i18n.bidi.DirectionalString', 'goog.string.Const', 'goog.string.TypedString'], false); -goog.addDependency('html/trustedresourceurl_test.js', ['goog.html.trustedResourceUrlTest'], ['goog.html.TrustedResourceUrl', 'goog.i18n.bidi.Dir', 'goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('html/uncheckedconversions.js', ['goog.html.uncheckedconversions'], ['goog.asserts', 'goog.html.SafeHtml', 'goog.html.SafeScript', 'goog.html.SafeStyle', 'goog.html.SafeStyleSheet', 'goog.html.SafeUrl', 'goog.html.TrustedResourceUrl', 'goog.string', 'goog.string.Const'], false); -goog.addDependency('html/uncheckedconversions_test.js', ['goog.html.uncheckedconversionsTest'], ['goog.html.SafeHtml', 'goog.html.SafeScript', 'goog.html.SafeStyle', 'goog.html.SafeStyleSheet', 'goog.html.SafeUrl', 'goog.html.TrustedResourceUrl', 'goog.html.uncheckedconversions', 'goog.i18n.bidi.Dir', 'goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('html/utils.js', ['goog.html.utils'], ['goog.string'], false); -goog.addDependency('html/utils_test.js', ['goog.html.UtilsTest'], ['goog.array', 'goog.dom.TagName', 'goog.html.utils', 'goog.object', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/bidi.js', ['goog.i18n.bidi', 'goog.i18n.bidi.Dir', 'goog.i18n.bidi.DirectionalString', 'goog.i18n.bidi.Format'], [], false); -goog.addDependency('i18n/bidi_test.js', ['goog.i18n.bidiTest'], ['goog.i18n.bidi', 'goog.i18n.bidi.Dir', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/bidiformatter.js', ['goog.i18n.BidiFormatter'], ['goog.html.SafeHtml', 'goog.html.legacyconversions', 'goog.i18n.bidi', 'goog.i18n.bidi.Dir', 'goog.i18n.bidi.Format'], false); -goog.addDependency('i18n/bidiformatter_test.js', ['goog.i18n.BidiFormatterTest'], ['goog.html.SafeHtml', 'goog.i18n.BidiFormatter', 'goog.i18n.bidi.Dir', 'goog.i18n.bidi.Format', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/charlistdecompressor.js', ['goog.i18n.CharListDecompressor'], ['goog.array', 'goog.i18n.uChar'], false); -goog.addDependency('i18n/charlistdecompressor_test.js', ['goog.i18n.CharListDecompressorTest'], ['goog.i18n.CharListDecompressor', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/charpickerdata.js', ['goog.i18n.CharPickerData'], [], false); -goog.addDependency('i18n/collation.js', ['goog.i18n.collation'], [], false); -goog.addDependency('i18n/collation_test.js', ['goog.i18n.collationTest'], ['goog.i18n.collation', 'goog.testing.ExpectedFailures', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('i18n/compactnumberformatsymbols.js', ['goog.i18n.CompactNumberFormatSymbols', 'goog.i18n.CompactNumberFormatSymbols_af', 'goog.i18n.CompactNumberFormatSymbols_af_ZA', 'goog.i18n.CompactNumberFormatSymbols_am', 'goog.i18n.CompactNumberFormatSymbols_am_ET', 'goog.i18n.CompactNumberFormatSymbols_ar', 'goog.i18n.CompactNumberFormatSymbols_ar_001', 'goog.i18n.CompactNumberFormatSymbols_ar_EG', 'goog.i18n.CompactNumberFormatSymbols_az', 'goog.i18n.CompactNumberFormatSymbols_az_Latn', 'goog.i18n.CompactNumberFormatSymbols_az_Latn_AZ', 'goog.i18n.CompactNumberFormatSymbols_be', 'goog.i18n.CompactNumberFormatSymbols_be_BY', 'goog.i18n.CompactNumberFormatSymbols_bg', 'goog.i18n.CompactNumberFormatSymbols_bg_BG', 'goog.i18n.CompactNumberFormatSymbols_bn', 'goog.i18n.CompactNumberFormatSymbols_bn_BD', 'goog.i18n.CompactNumberFormatSymbols_br', 'goog.i18n.CompactNumberFormatSymbols_br_FR', 'goog.i18n.CompactNumberFormatSymbols_bs', 'goog.i18n.CompactNumberFormatSymbols_bs_Latn', 'goog.i18n.CompactNumberFormatSymbols_bs_Latn_BA', 'goog.i18n.CompactNumberFormatSymbols_ca', 'goog.i18n.CompactNumberFormatSymbols_ca_AD', 'goog.i18n.CompactNumberFormatSymbols_ca_ES', 'goog.i18n.CompactNumberFormatSymbols_ca_ES_VALENCIA', 'goog.i18n.CompactNumberFormatSymbols_ca_FR', 'goog.i18n.CompactNumberFormatSymbols_ca_IT', 'goog.i18n.CompactNumberFormatSymbols_chr', 'goog.i18n.CompactNumberFormatSymbols_chr_US', 'goog.i18n.CompactNumberFormatSymbols_cs', 'goog.i18n.CompactNumberFormatSymbols_cs_CZ', 'goog.i18n.CompactNumberFormatSymbols_cy', 'goog.i18n.CompactNumberFormatSymbols_cy_GB', 'goog.i18n.CompactNumberFormatSymbols_da', 'goog.i18n.CompactNumberFormatSymbols_da_DK', 'goog.i18n.CompactNumberFormatSymbols_da_GL', 'goog.i18n.CompactNumberFormatSymbols_de', 'goog.i18n.CompactNumberFormatSymbols_de_AT', 'goog.i18n.CompactNumberFormatSymbols_de_BE', 'goog.i18n.CompactNumberFormatSymbols_de_CH', 'goog.i18n.CompactNumberFormatSymbols_de_DE', 'goog.i18n.CompactNumberFormatSymbols_de_LU', 'goog.i18n.CompactNumberFormatSymbols_el', 'goog.i18n.CompactNumberFormatSymbols_el_CY', 'goog.i18n.CompactNumberFormatSymbols_el_GR', 'goog.i18n.CompactNumberFormatSymbols_en', 'goog.i18n.CompactNumberFormatSymbols_en_001', 'goog.i18n.CompactNumberFormatSymbols_en_AS', 'goog.i18n.CompactNumberFormatSymbols_en_AU', 'goog.i18n.CompactNumberFormatSymbols_en_CA', 'goog.i18n.CompactNumberFormatSymbols_en_DG', 'goog.i18n.CompactNumberFormatSymbols_en_FM', 'goog.i18n.CompactNumberFormatSymbols_en_GB', 'goog.i18n.CompactNumberFormatSymbols_en_GU', 'goog.i18n.CompactNumberFormatSymbols_en_IE', 'goog.i18n.CompactNumberFormatSymbols_en_IN', 'goog.i18n.CompactNumberFormatSymbols_en_IO', 'goog.i18n.CompactNumberFormatSymbols_en_MH', 'goog.i18n.CompactNumberFormatSymbols_en_MP', 'goog.i18n.CompactNumberFormatSymbols_en_PR', 'goog.i18n.CompactNumberFormatSymbols_en_PW', 'goog.i18n.CompactNumberFormatSymbols_en_SG', 'goog.i18n.CompactNumberFormatSymbols_en_TC', 'goog.i18n.CompactNumberFormatSymbols_en_UM', 'goog.i18n.CompactNumberFormatSymbols_en_US', 'goog.i18n.CompactNumberFormatSymbols_en_VG', 'goog.i18n.CompactNumberFormatSymbols_en_VI', 'goog.i18n.CompactNumberFormatSymbols_en_ZA', 'goog.i18n.CompactNumberFormatSymbols_en_ZW', 'goog.i18n.CompactNumberFormatSymbols_es', 'goog.i18n.CompactNumberFormatSymbols_es_419', 'goog.i18n.CompactNumberFormatSymbols_es_EA', 'goog.i18n.CompactNumberFormatSymbols_es_ES', 'goog.i18n.CompactNumberFormatSymbols_es_IC', 'goog.i18n.CompactNumberFormatSymbols_es_MX', 'goog.i18n.CompactNumberFormatSymbols_es_US', 'goog.i18n.CompactNumberFormatSymbols_et', 'goog.i18n.CompactNumberFormatSymbols_et_EE', 'goog.i18n.CompactNumberFormatSymbols_eu', 'goog.i18n.CompactNumberFormatSymbols_eu_ES', 'goog.i18n.CompactNumberFormatSymbols_fa', 'goog.i18n.CompactNumberFormatSymbols_fa_IR', 'goog.i18n.CompactNumberFormatSymbols_fi', 'goog.i18n.CompactNumberFormatSymbols_fi_FI', 'goog.i18n.CompactNumberFormatSymbols_fil', 'goog.i18n.CompactNumberFormatSymbols_fil_PH', 'goog.i18n.CompactNumberFormatSymbols_fr', 'goog.i18n.CompactNumberFormatSymbols_fr_BL', 'goog.i18n.CompactNumberFormatSymbols_fr_CA', 'goog.i18n.CompactNumberFormatSymbols_fr_FR', 'goog.i18n.CompactNumberFormatSymbols_fr_GF', 'goog.i18n.CompactNumberFormatSymbols_fr_GP', 'goog.i18n.CompactNumberFormatSymbols_fr_MC', 'goog.i18n.CompactNumberFormatSymbols_fr_MF', 'goog.i18n.CompactNumberFormatSymbols_fr_MQ', 'goog.i18n.CompactNumberFormatSymbols_fr_PM', 'goog.i18n.CompactNumberFormatSymbols_fr_RE', 'goog.i18n.CompactNumberFormatSymbols_fr_YT', 'goog.i18n.CompactNumberFormatSymbols_ga', 'goog.i18n.CompactNumberFormatSymbols_ga_IE', 'goog.i18n.CompactNumberFormatSymbols_gl', 'goog.i18n.CompactNumberFormatSymbols_gl_ES', 'goog.i18n.CompactNumberFormatSymbols_gsw', 'goog.i18n.CompactNumberFormatSymbols_gsw_CH', 'goog.i18n.CompactNumberFormatSymbols_gsw_LI', 'goog.i18n.CompactNumberFormatSymbols_gu', 'goog.i18n.CompactNumberFormatSymbols_gu_IN', 'goog.i18n.CompactNumberFormatSymbols_haw', 'goog.i18n.CompactNumberFormatSymbols_haw_US', 'goog.i18n.CompactNumberFormatSymbols_he', 'goog.i18n.CompactNumberFormatSymbols_he_IL', 'goog.i18n.CompactNumberFormatSymbols_hi', 'goog.i18n.CompactNumberFormatSymbols_hi_IN', 'goog.i18n.CompactNumberFormatSymbols_hr', 'goog.i18n.CompactNumberFormatSymbols_hr_HR', 'goog.i18n.CompactNumberFormatSymbols_hu', 'goog.i18n.CompactNumberFormatSymbols_hu_HU', 'goog.i18n.CompactNumberFormatSymbols_hy', 'goog.i18n.CompactNumberFormatSymbols_hy_AM', 'goog.i18n.CompactNumberFormatSymbols_id', 'goog.i18n.CompactNumberFormatSymbols_id_ID', 'goog.i18n.CompactNumberFormatSymbols_in', 'goog.i18n.CompactNumberFormatSymbols_is', 'goog.i18n.CompactNumberFormatSymbols_is_IS', 'goog.i18n.CompactNumberFormatSymbols_it', 'goog.i18n.CompactNumberFormatSymbols_it_IT', 'goog.i18n.CompactNumberFormatSymbols_it_SM', 'goog.i18n.CompactNumberFormatSymbols_iw', 'goog.i18n.CompactNumberFormatSymbols_ja', 'goog.i18n.CompactNumberFormatSymbols_ja_JP', 'goog.i18n.CompactNumberFormatSymbols_ka', 'goog.i18n.CompactNumberFormatSymbols_ka_GE', 'goog.i18n.CompactNumberFormatSymbols_kk', 'goog.i18n.CompactNumberFormatSymbols_kk_Cyrl', 'goog.i18n.CompactNumberFormatSymbols_kk_Cyrl_KZ', 'goog.i18n.CompactNumberFormatSymbols_km', 'goog.i18n.CompactNumberFormatSymbols_km_KH', 'goog.i18n.CompactNumberFormatSymbols_kn', 'goog.i18n.CompactNumberFormatSymbols_kn_IN', 'goog.i18n.CompactNumberFormatSymbols_ko', 'goog.i18n.CompactNumberFormatSymbols_ko_KR', 'goog.i18n.CompactNumberFormatSymbols_ky', 'goog.i18n.CompactNumberFormatSymbols_ky_Cyrl', 'goog.i18n.CompactNumberFormatSymbols_ky_Cyrl_KG', 'goog.i18n.CompactNumberFormatSymbols_ln', 'goog.i18n.CompactNumberFormatSymbols_ln_CD', 'goog.i18n.CompactNumberFormatSymbols_lo', 'goog.i18n.CompactNumberFormatSymbols_lo_LA', 'goog.i18n.CompactNumberFormatSymbols_lt', 'goog.i18n.CompactNumberFormatSymbols_lt_LT', 'goog.i18n.CompactNumberFormatSymbols_lv', 'goog.i18n.CompactNumberFormatSymbols_lv_LV', 'goog.i18n.CompactNumberFormatSymbols_mk', 'goog.i18n.CompactNumberFormatSymbols_mk_MK', 'goog.i18n.CompactNumberFormatSymbols_ml', 'goog.i18n.CompactNumberFormatSymbols_ml_IN', 'goog.i18n.CompactNumberFormatSymbols_mn', 'goog.i18n.CompactNumberFormatSymbols_mn_Cyrl', 'goog.i18n.CompactNumberFormatSymbols_mn_Cyrl_MN', 'goog.i18n.CompactNumberFormatSymbols_mr', 'goog.i18n.CompactNumberFormatSymbols_mr_IN', 'goog.i18n.CompactNumberFormatSymbols_ms', 'goog.i18n.CompactNumberFormatSymbols_ms_Latn', 'goog.i18n.CompactNumberFormatSymbols_ms_Latn_MY', 'goog.i18n.CompactNumberFormatSymbols_mt', 'goog.i18n.CompactNumberFormatSymbols_mt_MT', 'goog.i18n.CompactNumberFormatSymbols_my', 'goog.i18n.CompactNumberFormatSymbols_my_MM', 'goog.i18n.CompactNumberFormatSymbols_nb', 'goog.i18n.CompactNumberFormatSymbols_nb_NO', 'goog.i18n.CompactNumberFormatSymbols_nb_SJ', 'goog.i18n.CompactNumberFormatSymbols_ne', 'goog.i18n.CompactNumberFormatSymbols_ne_NP', 'goog.i18n.CompactNumberFormatSymbols_nl', 'goog.i18n.CompactNumberFormatSymbols_nl_NL', 'goog.i18n.CompactNumberFormatSymbols_no', 'goog.i18n.CompactNumberFormatSymbols_no_NO', 'goog.i18n.CompactNumberFormatSymbols_or', 'goog.i18n.CompactNumberFormatSymbols_or_IN', 'goog.i18n.CompactNumberFormatSymbols_pa', 'goog.i18n.CompactNumberFormatSymbols_pa_Guru', 'goog.i18n.CompactNumberFormatSymbols_pa_Guru_IN', 'goog.i18n.CompactNumberFormatSymbols_pl', 'goog.i18n.CompactNumberFormatSymbols_pl_PL', 'goog.i18n.CompactNumberFormatSymbols_pt', 'goog.i18n.CompactNumberFormatSymbols_pt_BR', 'goog.i18n.CompactNumberFormatSymbols_pt_PT', 'goog.i18n.CompactNumberFormatSymbols_ro', 'goog.i18n.CompactNumberFormatSymbols_ro_RO', 'goog.i18n.CompactNumberFormatSymbols_ru', 'goog.i18n.CompactNumberFormatSymbols_ru_RU', 'goog.i18n.CompactNumberFormatSymbols_si', 'goog.i18n.CompactNumberFormatSymbols_si_LK', 'goog.i18n.CompactNumberFormatSymbols_sk', 'goog.i18n.CompactNumberFormatSymbols_sk_SK', 'goog.i18n.CompactNumberFormatSymbols_sl', 'goog.i18n.CompactNumberFormatSymbols_sl_SI', 'goog.i18n.CompactNumberFormatSymbols_sq', 'goog.i18n.CompactNumberFormatSymbols_sq_AL', 'goog.i18n.CompactNumberFormatSymbols_sr', 'goog.i18n.CompactNumberFormatSymbols_sr_Cyrl', 'goog.i18n.CompactNumberFormatSymbols_sr_Cyrl_RS', 'goog.i18n.CompactNumberFormatSymbols_sr_Latn', 'goog.i18n.CompactNumberFormatSymbols_sr_Latn_RS', 'goog.i18n.CompactNumberFormatSymbols_sv', 'goog.i18n.CompactNumberFormatSymbols_sv_SE', 'goog.i18n.CompactNumberFormatSymbols_sw', 'goog.i18n.CompactNumberFormatSymbols_sw_TZ', 'goog.i18n.CompactNumberFormatSymbols_ta', 'goog.i18n.CompactNumberFormatSymbols_ta_IN', 'goog.i18n.CompactNumberFormatSymbols_te', 'goog.i18n.CompactNumberFormatSymbols_te_IN', 'goog.i18n.CompactNumberFormatSymbols_th', 'goog.i18n.CompactNumberFormatSymbols_th_TH', 'goog.i18n.CompactNumberFormatSymbols_tl', 'goog.i18n.CompactNumberFormatSymbols_tr', 'goog.i18n.CompactNumberFormatSymbols_tr_TR', 'goog.i18n.CompactNumberFormatSymbols_uk', 'goog.i18n.CompactNumberFormatSymbols_uk_UA', 'goog.i18n.CompactNumberFormatSymbols_ur', 'goog.i18n.CompactNumberFormatSymbols_ur_PK', 'goog.i18n.CompactNumberFormatSymbols_uz', 'goog.i18n.CompactNumberFormatSymbols_uz_Latn', 'goog.i18n.CompactNumberFormatSymbols_uz_Latn_UZ', 'goog.i18n.CompactNumberFormatSymbols_vi', 'goog.i18n.CompactNumberFormatSymbols_vi_VN', 'goog.i18n.CompactNumberFormatSymbols_zh', 'goog.i18n.CompactNumberFormatSymbols_zh_CN', 'goog.i18n.CompactNumberFormatSymbols_zh_HK', 'goog.i18n.CompactNumberFormatSymbols_zh_Hans', 'goog.i18n.CompactNumberFormatSymbols_zh_Hans_CN', 'goog.i18n.CompactNumberFormatSymbols_zh_TW', 'goog.i18n.CompactNumberFormatSymbols_zu', 'goog.i18n.CompactNumberFormatSymbols_zu_ZA'], [], false); -goog.addDependency('i18n/compactnumberformatsymbols_ext.js', ['goog.i18n.CompactNumberFormatSymbolsExt', 'goog.i18n.CompactNumberFormatSymbols_af_NA', 'goog.i18n.CompactNumberFormatSymbols_agq', 'goog.i18n.CompactNumberFormatSymbols_agq_CM', 'goog.i18n.CompactNumberFormatSymbols_ak', 'goog.i18n.CompactNumberFormatSymbols_ak_GH', 'goog.i18n.CompactNumberFormatSymbols_ar_AE', 'goog.i18n.CompactNumberFormatSymbols_ar_BH', 'goog.i18n.CompactNumberFormatSymbols_ar_DJ', 'goog.i18n.CompactNumberFormatSymbols_ar_DZ', 'goog.i18n.CompactNumberFormatSymbols_ar_EH', 'goog.i18n.CompactNumberFormatSymbols_ar_ER', 'goog.i18n.CompactNumberFormatSymbols_ar_IL', 'goog.i18n.CompactNumberFormatSymbols_ar_IQ', 'goog.i18n.CompactNumberFormatSymbols_ar_JO', 'goog.i18n.CompactNumberFormatSymbols_ar_KM', 'goog.i18n.CompactNumberFormatSymbols_ar_KW', 'goog.i18n.CompactNumberFormatSymbols_ar_LB', 'goog.i18n.CompactNumberFormatSymbols_ar_LY', 'goog.i18n.CompactNumberFormatSymbols_ar_MA', 'goog.i18n.CompactNumberFormatSymbols_ar_MR', 'goog.i18n.CompactNumberFormatSymbols_ar_OM', 'goog.i18n.CompactNumberFormatSymbols_ar_PS', 'goog.i18n.CompactNumberFormatSymbols_ar_QA', 'goog.i18n.CompactNumberFormatSymbols_ar_SA', 'goog.i18n.CompactNumberFormatSymbols_ar_SD', 'goog.i18n.CompactNumberFormatSymbols_ar_SO', 'goog.i18n.CompactNumberFormatSymbols_ar_SS', 'goog.i18n.CompactNumberFormatSymbols_ar_SY', 'goog.i18n.CompactNumberFormatSymbols_ar_TD', 'goog.i18n.CompactNumberFormatSymbols_ar_TN', 'goog.i18n.CompactNumberFormatSymbols_ar_YE', 'goog.i18n.CompactNumberFormatSymbols_as', 'goog.i18n.CompactNumberFormatSymbols_as_IN', 'goog.i18n.CompactNumberFormatSymbols_asa', 'goog.i18n.CompactNumberFormatSymbols_asa_TZ', 'goog.i18n.CompactNumberFormatSymbols_ast', 'goog.i18n.CompactNumberFormatSymbols_ast_ES', 'goog.i18n.CompactNumberFormatSymbols_az_Cyrl', 'goog.i18n.CompactNumberFormatSymbols_az_Cyrl_AZ', 'goog.i18n.CompactNumberFormatSymbols_bas', 'goog.i18n.CompactNumberFormatSymbols_bas_CM', 'goog.i18n.CompactNumberFormatSymbols_bem', 'goog.i18n.CompactNumberFormatSymbols_bem_ZM', 'goog.i18n.CompactNumberFormatSymbols_bez', 'goog.i18n.CompactNumberFormatSymbols_bez_TZ', 'goog.i18n.CompactNumberFormatSymbols_bm', 'goog.i18n.CompactNumberFormatSymbols_bm_Latn', 'goog.i18n.CompactNumberFormatSymbols_bm_Latn_ML', 'goog.i18n.CompactNumberFormatSymbols_bn_IN', 'goog.i18n.CompactNumberFormatSymbols_bo', 'goog.i18n.CompactNumberFormatSymbols_bo_CN', 'goog.i18n.CompactNumberFormatSymbols_bo_IN', 'goog.i18n.CompactNumberFormatSymbols_brx', 'goog.i18n.CompactNumberFormatSymbols_brx_IN', 'goog.i18n.CompactNumberFormatSymbols_bs_Cyrl', 'goog.i18n.CompactNumberFormatSymbols_bs_Cyrl_BA', 'goog.i18n.CompactNumberFormatSymbols_cgg', 'goog.i18n.CompactNumberFormatSymbols_cgg_UG', 'goog.i18n.CompactNumberFormatSymbols_ckb', 'goog.i18n.CompactNumberFormatSymbols_ckb_Arab', 'goog.i18n.CompactNumberFormatSymbols_ckb_Arab_IQ', 'goog.i18n.CompactNumberFormatSymbols_ckb_Arab_IR', 'goog.i18n.CompactNumberFormatSymbols_ckb_IQ', 'goog.i18n.CompactNumberFormatSymbols_ckb_IR', 'goog.i18n.CompactNumberFormatSymbols_ckb_Latn', 'goog.i18n.CompactNumberFormatSymbols_ckb_Latn_IQ', 'goog.i18n.CompactNumberFormatSymbols_dav', 'goog.i18n.CompactNumberFormatSymbols_dav_KE', 'goog.i18n.CompactNumberFormatSymbols_de_LI', 'goog.i18n.CompactNumberFormatSymbols_dje', 'goog.i18n.CompactNumberFormatSymbols_dje_NE', 'goog.i18n.CompactNumberFormatSymbols_dsb', 'goog.i18n.CompactNumberFormatSymbols_dsb_DE', 'goog.i18n.CompactNumberFormatSymbols_dua', 'goog.i18n.CompactNumberFormatSymbols_dua_CM', 'goog.i18n.CompactNumberFormatSymbols_dyo', 'goog.i18n.CompactNumberFormatSymbols_dyo_SN', 'goog.i18n.CompactNumberFormatSymbols_dz', 'goog.i18n.CompactNumberFormatSymbols_dz_BT', 'goog.i18n.CompactNumberFormatSymbols_ebu', 'goog.i18n.CompactNumberFormatSymbols_ebu_KE', 'goog.i18n.CompactNumberFormatSymbols_ee', 'goog.i18n.CompactNumberFormatSymbols_ee_GH', 'goog.i18n.CompactNumberFormatSymbols_ee_TG', 'goog.i18n.CompactNumberFormatSymbols_en_150', 'goog.i18n.CompactNumberFormatSymbols_en_AG', 'goog.i18n.CompactNumberFormatSymbols_en_AI', 'goog.i18n.CompactNumberFormatSymbols_en_BB', 'goog.i18n.CompactNumberFormatSymbols_en_BE', 'goog.i18n.CompactNumberFormatSymbols_en_BM', 'goog.i18n.CompactNumberFormatSymbols_en_BS', 'goog.i18n.CompactNumberFormatSymbols_en_BW', 'goog.i18n.CompactNumberFormatSymbols_en_BZ', 'goog.i18n.CompactNumberFormatSymbols_en_CC', 'goog.i18n.CompactNumberFormatSymbols_en_CK', 'goog.i18n.CompactNumberFormatSymbols_en_CM', 'goog.i18n.CompactNumberFormatSymbols_en_CX', 'goog.i18n.CompactNumberFormatSymbols_en_DM', 'goog.i18n.CompactNumberFormatSymbols_en_ER', 'goog.i18n.CompactNumberFormatSymbols_en_FJ', 'goog.i18n.CompactNumberFormatSymbols_en_FK', 'goog.i18n.CompactNumberFormatSymbols_en_GD', 'goog.i18n.CompactNumberFormatSymbols_en_GG', 'goog.i18n.CompactNumberFormatSymbols_en_GH', 'goog.i18n.CompactNumberFormatSymbols_en_GI', 'goog.i18n.CompactNumberFormatSymbols_en_GM', 'goog.i18n.CompactNumberFormatSymbols_en_GY', 'goog.i18n.CompactNumberFormatSymbols_en_HK', 'goog.i18n.CompactNumberFormatSymbols_en_IM', 'goog.i18n.CompactNumberFormatSymbols_en_JE', 'goog.i18n.CompactNumberFormatSymbols_en_JM', 'goog.i18n.CompactNumberFormatSymbols_en_KE', 'goog.i18n.CompactNumberFormatSymbols_en_KI', 'goog.i18n.CompactNumberFormatSymbols_en_KN', 'goog.i18n.CompactNumberFormatSymbols_en_KY', 'goog.i18n.CompactNumberFormatSymbols_en_LC', 'goog.i18n.CompactNumberFormatSymbols_en_LR', 'goog.i18n.CompactNumberFormatSymbols_en_LS', 'goog.i18n.CompactNumberFormatSymbols_en_MG', 'goog.i18n.CompactNumberFormatSymbols_en_MO', 'goog.i18n.CompactNumberFormatSymbols_en_MS', 'goog.i18n.CompactNumberFormatSymbols_en_MT', 'goog.i18n.CompactNumberFormatSymbols_en_MU', 'goog.i18n.CompactNumberFormatSymbols_en_MW', 'goog.i18n.CompactNumberFormatSymbols_en_MY', 'goog.i18n.CompactNumberFormatSymbols_en_NA', 'goog.i18n.CompactNumberFormatSymbols_en_NF', 'goog.i18n.CompactNumberFormatSymbols_en_NG', 'goog.i18n.CompactNumberFormatSymbols_en_NR', 'goog.i18n.CompactNumberFormatSymbols_en_NU', 'goog.i18n.CompactNumberFormatSymbols_en_NZ', 'goog.i18n.CompactNumberFormatSymbols_en_PG', 'goog.i18n.CompactNumberFormatSymbols_en_PH', 'goog.i18n.CompactNumberFormatSymbols_en_PK', 'goog.i18n.CompactNumberFormatSymbols_en_PN', 'goog.i18n.CompactNumberFormatSymbols_en_RW', 'goog.i18n.CompactNumberFormatSymbols_en_SB', 'goog.i18n.CompactNumberFormatSymbols_en_SC', 'goog.i18n.CompactNumberFormatSymbols_en_SD', 'goog.i18n.CompactNumberFormatSymbols_en_SH', 'goog.i18n.CompactNumberFormatSymbols_en_SL', 'goog.i18n.CompactNumberFormatSymbols_en_SS', 'goog.i18n.CompactNumberFormatSymbols_en_SX', 'goog.i18n.CompactNumberFormatSymbols_en_SZ', 'goog.i18n.CompactNumberFormatSymbols_en_TK', 'goog.i18n.CompactNumberFormatSymbols_en_TO', 'goog.i18n.CompactNumberFormatSymbols_en_TT', 'goog.i18n.CompactNumberFormatSymbols_en_TV', 'goog.i18n.CompactNumberFormatSymbols_en_TZ', 'goog.i18n.CompactNumberFormatSymbols_en_UG', 'goog.i18n.CompactNumberFormatSymbols_en_VC', 'goog.i18n.CompactNumberFormatSymbols_en_VU', 'goog.i18n.CompactNumberFormatSymbols_en_WS', 'goog.i18n.CompactNumberFormatSymbols_en_ZM', 'goog.i18n.CompactNumberFormatSymbols_eo', 'goog.i18n.CompactNumberFormatSymbols_eo_001', 'goog.i18n.CompactNumberFormatSymbols_es_AR', 'goog.i18n.CompactNumberFormatSymbols_es_BO', 'goog.i18n.CompactNumberFormatSymbols_es_CL', 'goog.i18n.CompactNumberFormatSymbols_es_CO', 'goog.i18n.CompactNumberFormatSymbols_es_CR', 'goog.i18n.CompactNumberFormatSymbols_es_CU', 'goog.i18n.CompactNumberFormatSymbols_es_DO', 'goog.i18n.CompactNumberFormatSymbols_es_EC', 'goog.i18n.CompactNumberFormatSymbols_es_GQ', 'goog.i18n.CompactNumberFormatSymbols_es_GT', 'goog.i18n.CompactNumberFormatSymbols_es_HN', 'goog.i18n.CompactNumberFormatSymbols_es_NI', 'goog.i18n.CompactNumberFormatSymbols_es_PA', 'goog.i18n.CompactNumberFormatSymbols_es_PE', 'goog.i18n.CompactNumberFormatSymbols_es_PH', 'goog.i18n.CompactNumberFormatSymbols_es_PR', 'goog.i18n.CompactNumberFormatSymbols_es_PY', 'goog.i18n.CompactNumberFormatSymbols_es_SV', 'goog.i18n.CompactNumberFormatSymbols_es_UY', 'goog.i18n.CompactNumberFormatSymbols_es_VE', 'goog.i18n.CompactNumberFormatSymbols_ewo', 'goog.i18n.CompactNumberFormatSymbols_ewo_CM', 'goog.i18n.CompactNumberFormatSymbols_fa_AF', 'goog.i18n.CompactNumberFormatSymbols_ff', 'goog.i18n.CompactNumberFormatSymbols_ff_CM', 'goog.i18n.CompactNumberFormatSymbols_ff_GN', 'goog.i18n.CompactNumberFormatSymbols_ff_MR', 'goog.i18n.CompactNumberFormatSymbols_ff_SN', 'goog.i18n.CompactNumberFormatSymbols_fo', 'goog.i18n.CompactNumberFormatSymbols_fo_FO', 'goog.i18n.CompactNumberFormatSymbols_fr_BE', 'goog.i18n.CompactNumberFormatSymbols_fr_BF', 'goog.i18n.CompactNumberFormatSymbols_fr_BI', 'goog.i18n.CompactNumberFormatSymbols_fr_BJ', 'goog.i18n.CompactNumberFormatSymbols_fr_CD', 'goog.i18n.CompactNumberFormatSymbols_fr_CF', 'goog.i18n.CompactNumberFormatSymbols_fr_CG', 'goog.i18n.CompactNumberFormatSymbols_fr_CH', 'goog.i18n.CompactNumberFormatSymbols_fr_CI', 'goog.i18n.CompactNumberFormatSymbols_fr_CM', 'goog.i18n.CompactNumberFormatSymbols_fr_DJ', 'goog.i18n.CompactNumberFormatSymbols_fr_DZ', 'goog.i18n.CompactNumberFormatSymbols_fr_GA', 'goog.i18n.CompactNumberFormatSymbols_fr_GN', 'goog.i18n.CompactNumberFormatSymbols_fr_GQ', 'goog.i18n.CompactNumberFormatSymbols_fr_HT', 'goog.i18n.CompactNumberFormatSymbols_fr_KM', 'goog.i18n.CompactNumberFormatSymbols_fr_LU', 'goog.i18n.CompactNumberFormatSymbols_fr_MA', 'goog.i18n.CompactNumberFormatSymbols_fr_MG', 'goog.i18n.CompactNumberFormatSymbols_fr_ML', 'goog.i18n.CompactNumberFormatSymbols_fr_MR', 'goog.i18n.CompactNumberFormatSymbols_fr_MU', 'goog.i18n.CompactNumberFormatSymbols_fr_NC', 'goog.i18n.CompactNumberFormatSymbols_fr_NE', 'goog.i18n.CompactNumberFormatSymbols_fr_PF', 'goog.i18n.CompactNumberFormatSymbols_fr_RW', 'goog.i18n.CompactNumberFormatSymbols_fr_SC', 'goog.i18n.CompactNumberFormatSymbols_fr_SN', 'goog.i18n.CompactNumberFormatSymbols_fr_SY', 'goog.i18n.CompactNumberFormatSymbols_fr_TD', 'goog.i18n.CompactNumberFormatSymbols_fr_TG', 'goog.i18n.CompactNumberFormatSymbols_fr_TN', 'goog.i18n.CompactNumberFormatSymbols_fr_VU', 'goog.i18n.CompactNumberFormatSymbols_fr_WF', 'goog.i18n.CompactNumberFormatSymbols_fur', 'goog.i18n.CompactNumberFormatSymbols_fur_IT', 'goog.i18n.CompactNumberFormatSymbols_fy', 'goog.i18n.CompactNumberFormatSymbols_fy_NL', 'goog.i18n.CompactNumberFormatSymbols_gd', 'goog.i18n.CompactNumberFormatSymbols_gd_GB', 'goog.i18n.CompactNumberFormatSymbols_gsw_FR', 'goog.i18n.CompactNumberFormatSymbols_guz', 'goog.i18n.CompactNumberFormatSymbols_guz_KE', 'goog.i18n.CompactNumberFormatSymbols_gv', 'goog.i18n.CompactNumberFormatSymbols_gv_IM', 'goog.i18n.CompactNumberFormatSymbols_ha', 'goog.i18n.CompactNumberFormatSymbols_ha_Latn', 'goog.i18n.CompactNumberFormatSymbols_ha_Latn_GH', 'goog.i18n.CompactNumberFormatSymbols_ha_Latn_NE', 'goog.i18n.CompactNumberFormatSymbols_ha_Latn_NG', 'goog.i18n.CompactNumberFormatSymbols_hr_BA', 'goog.i18n.CompactNumberFormatSymbols_hsb', 'goog.i18n.CompactNumberFormatSymbols_hsb_DE', 'goog.i18n.CompactNumberFormatSymbols_ig', 'goog.i18n.CompactNumberFormatSymbols_ig_NG', 'goog.i18n.CompactNumberFormatSymbols_ii', 'goog.i18n.CompactNumberFormatSymbols_ii_CN', 'goog.i18n.CompactNumberFormatSymbols_it_CH', 'goog.i18n.CompactNumberFormatSymbols_jgo', 'goog.i18n.CompactNumberFormatSymbols_jgo_CM', 'goog.i18n.CompactNumberFormatSymbols_jmc', 'goog.i18n.CompactNumberFormatSymbols_jmc_TZ', 'goog.i18n.CompactNumberFormatSymbols_kab', 'goog.i18n.CompactNumberFormatSymbols_kab_DZ', 'goog.i18n.CompactNumberFormatSymbols_kam', 'goog.i18n.CompactNumberFormatSymbols_kam_KE', 'goog.i18n.CompactNumberFormatSymbols_kde', 'goog.i18n.CompactNumberFormatSymbols_kde_TZ', 'goog.i18n.CompactNumberFormatSymbols_kea', 'goog.i18n.CompactNumberFormatSymbols_kea_CV', 'goog.i18n.CompactNumberFormatSymbols_khq', 'goog.i18n.CompactNumberFormatSymbols_khq_ML', 'goog.i18n.CompactNumberFormatSymbols_ki', 'goog.i18n.CompactNumberFormatSymbols_ki_KE', 'goog.i18n.CompactNumberFormatSymbols_kkj', 'goog.i18n.CompactNumberFormatSymbols_kkj_CM', 'goog.i18n.CompactNumberFormatSymbols_kl', 'goog.i18n.CompactNumberFormatSymbols_kl_GL', 'goog.i18n.CompactNumberFormatSymbols_kln', 'goog.i18n.CompactNumberFormatSymbols_kln_KE', 'goog.i18n.CompactNumberFormatSymbols_ko_KP', 'goog.i18n.CompactNumberFormatSymbols_kok', 'goog.i18n.CompactNumberFormatSymbols_kok_IN', 'goog.i18n.CompactNumberFormatSymbols_ks', 'goog.i18n.CompactNumberFormatSymbols_ks_Arab', 'goog.i18n.CompactNumberFormatSymbols_ks_Arab_IN', 'goog.i18n.CompactNumberFormatSymbols_ksb', 'goog.i18n.CompactNumberFormatSymbols_ksb_TZ', 'goog.i18n.CompactNumberFormatSymbols_ksf', 'goog.i18n.CompactNumberFormatSymbols_ksf_CM', 'goog.i18n.CompactNumberFormatSymbols_ksh', 'goog.i18n.CompactNumberFormatSymbols_ksh_DE', 'goog.i18n.CompactNumberFormatSymbols_kw', 'goog.i18n.CompactNumberFormatSymbols_kw_GB', 'goog.i18n.CompactNumberFormatSymbols_lag', 'goog.i18n.CompactNumberFormatSymbols_lag_TZ', 'goog.i18n.CompactNumberFormatSymbols_lb', 'goog.i18n.CompactNumberFormatSymbols_lb_LU', 'goog.i18n.CompactNumberFormatSymbols_lg', 'goog.i18n.CompactNumberFormatSymbols_lg_UG', 'goog.i18n.CompactNumberFormatSymbols_lkt', 'goog.i18n.CompactNumberFormatSymbols_lkt_US', 'goog.i18n.CompactNumberFormatSymbols_ln_AO', 'goog.i18n.CompactNumberFormatSymbols_ln_CF', 'goog.i18n.CompactNumberFormatSymbols_ln_CG', 'goog.i18n.CompactNumberFormatSymbols_lu', 'goog.i18n.CompactNumberFormatSymbols_lu_CD', 'goog.i18n.CompactNumberFormatSymbols_luo', 'goog.i18n.CompactNumberFormatSymbols_luo_KE', 'goog.i18n.CompactNumberFormatSymbols_luy', 'goog.i18n.CompactNumberFormatSymbols_luy_KE', 'goog.i18n.CompactNumberFormatSymbols_mas', 'goog.i18n.CompactNumberFormatSymbols_mas_KE', 'goog.i18n.CompactNumberFormatSymbols_mas_TZ', 'goog.i18n.CompactNumberFormatSymbols_mer', 'goog.i18n.CompactNumberFormatSymbols_mer_KE', 'goog.i18n.CompactNumberFormatSymbols_mfe', 'goog.i18n.CompactNumberFormatSymbols_mfe_MU', 'goog.i18n.CompactNumberFormatSymbols_mg', 'goog.i18n.CompactNumberFormatSymbols_mg_MG', 'goog.i18n.CompactNumberFormatSymbols_mgh', 'goog.i18n.CompactNumberFormatSymbols_mgh_MZ', 'goog.i18n.CompactNumberFormatSymbols_mgo', 'goog.i18n.CompactNumberFormatSymbols_mgo_CM', 'goog.i18n.CompactNumberFormatSymbols_ms_Latn_BN', 'goog.i18n.CompactNumberFormatSymbols_ms_Latn_SG', 'goog.i18n.CompactNumberFormatSymbols_mua', 'goog.i18n.CompactNumberFormatSymbols_mua_CM', 'goog.i18n.CompactNumberFormatSymbols_naq', 'goog.i18n.CompactNumberFormatSymbols_naq_NA', 'goog.i18n.CompactNumberFormatSymbols_nd', 'goog.i18n.CompactNumberFormatSymbols_nd_ZW', 'goog.i18n.CompactNumberFormatSymbols_ne_IN', 'goog.i18n.CompactNumberFormatSymbols_nl_AW', 'goog.i18n.CompactNumberFormatSymbols_nl_BE', 'goog.i18n.CompactNumberFormatSymbols_nl_BQ', 'goog.i18n.CompactNumberFormatSymbols_nl_CW', 'goog.i18n.CompactNumberFormatSymbols_nl_SR', 'goog.i18n.CompactNumberFormatSymbols_nl_SX', 'goog.i18n.CompactNumberFormatSymbols_nmg', 'goog.i18n.CompactNumberFormatSymbols_nmg_CM', 'goog.i18n.CompactNumberFormatSymbols_nn', 'goog.i18n.CompactNumberFormatSymbols_nn_NO', 'goog.i18n.CompactNumberFormatSymbols_nnh', 'goog.i18n.CompactNumberFormatSymbols_nnh_CM', 'goog.i18n.CompactNumberFormatSymbols_nus', 'goog.i18n.CompactNumberFormatSymbols_nus_SD', 'goog.i18n.CompactNumberFormatSymbols_nyn', 'goog.i18n.CompactNumberFormatSymbols_nyn_UG', 'goog.i18n.CompactNumberFormatSymbols_om', 'goog.i18n.CompactNumberFormatSymbols_om_ET', 'goog.i18n.CompactNumberFormatSymbols_om_KE', 'goog.i18n.CompactNumberFormatSymbols_os', 'goog.i18n.CompactNumberFormatSymbols_os_GE', 'goog.i18n.CompactNumberFormatSymbols_os_RU', 'goog.i18n.CompactNumberFormatSymbols_pa_Arab', 'goog.i18n.CompactNumberFormatSymbols_pa_Arab_PK', 'goog.i18n.CompactNumberFormatSymbols_ps', 'goog.i18n.CompactNumberFormatSymbols_ps_AF', 'goog.i18n.CompactNumberFormatSymbols_pt_AO', 'goog.i18n.CompactNumberFormatSymbols_pt_CV', 'goog.i18n.CompactNumberFormatSymbols_pt_GW', 'goog.i18n.CompactNumberFormatSymbols_pt_MO', 'goog.i18n.CompactNumberFormatSymbols_pt_MZ', 'goog.i18n.CompactNumberFormatSymbols_pt_ST', 'goog.i18n.CompactNumberFormatSymbols_pt_TL', 'goog.i18n.CompactNumberFormatSymbols_qu', 'goog.i18n.CompactNumberFormatSymbols_qu_BO', 'goog.i18n.CompactNumberFormatSymbols_qu_EC', 'goog.i18n.CompactNumberFormatSymbols_qu_PE', 'goog.i18n.CompactNumberFormatSymbols_rm', 'goog.i18n.CompactNumberFormatSymbols_rm_CH', 'goog.i18n.CompactNumberFormatSymbols_rn', 'goog.i18n.CompactNumberFormatSymbols_rn_BI', 'goog.i18n.CompactNumberFormatSymbols_ro_MD', 'goog.i18n.CompactNumberFormatSymbols_rof', 'goog.i18n.CompactNumberFormatSymbols_rof_TZ', 'goog.i18n.CompactNumberFormatSymbols_ru_BY', 'goog.i18n.CompactNumberFormatSymbols_ru_KG', 'goog.i18n.CompactNumberFormatSymbols_ru_KZ', 'goog.i18n.CompactNumberFormatSymbols_ru_MD', 'goog.i18n.CompactNumberFormatSymbols_ru_UA', 'goog.i18n.CompactNumberFormatSymbols_rw', 'goog.i18n.CompactNumberFormatSymbols_rw_RW', 'goog.i18n.CompactNumberFormatSymbols_rwk', 'goog.i18n.CompactNumberFormatSymbols_rwk_TZ', 'goog.i18n.CompactNumberFormatSymbols_sah', 'goog.i18n.CompactNumberFormatSymbols_sah_RU', 'goog.i18n.CompactNumberFormatSymbols_saq', 'goog.i18n.CompactNumberFormatSymbols_saq_KE', 'goog.i18n.CompactNumberFormatSymbols_sbp', 'goog.i18n.CompactNumberFormatSymbols_sbp_TZ', 'goog.i18n.CompactNumberFormatSymbols_se', 'goog.i18n.CompactNumberFormatSymbols_se_FI', 'goog.i18n.CompactNumberFormatSymbols_se_NO', 'goog.i18n.CompactNumberFormatSymbols_se_SE', 'goog.i18n.CompactNumberFormatSymbols_seh', 'goog.i18n.CompactNumberFormatSymbols_seh_MZ', 'goog.i18n.CompactNumberFormatSymbols_ses', 'goog.i18n.CompactNumberFormatSymbols_ses_ML', 'goog.i18n.CompactNumberFormatSymbols_sg', 'goog.i18n.CompactNumberFormatSymbols_sg_CF', 'goog.i18n.CompactNumberFormatSymbols_shi', 'goog.i18n.CompactNumberFormatSymbols_shi_Latn', 'goog.i18n.CompactNumberFormatSymbols_shi_Latn_MA', 'goog.i18n.CompactNumberFormatSymbols_shi_Tfng', 'goog.i18n.CompactNumberFormatSymbols_shi_Tfng_MA', 'goog.i18n.CompactNumberFormatSymbols_smn', 'goog.i18n.CompactNumberFormatSymbols_smn_FI', 'goog.i18n.CompactNumberFormatSymbols_sn', 'goog.i18n.CompactNumberFormatSymbols_sn_ZW', 'goog.i18n.CompactNumberFormatSymbols_so', 'goog.i18n.CompactNumberFormatSymbols_so_DJ', 'goog.i18n.CompactNumberFormatSymbols_so_ET', 'goog.i18n.CompactNumberFormatSymbols_so_KE', 'goog.i18n.CompactNumberFormatSymbols_so_SO', 'goog.i18n.CompactNumberFormatSymbols_sq_MK', 'goog.i18n.CompactNumberFormatSymbols_sq_XK', 'goog.i18n.CompactNumberFormatSymbols_sr_Cyrl_BA', 'goog.i18n.CompactNumberFormatSymbols_sr_Cyrl_ME', 'goog.i18n.CompactNumberFormatSymbols_sr_Cyrl_XK', 'goog.i18n.CompactNumberFormatSymbols_sr_Latn_BA', 'goog.i18n.CompactNumberFormatSymbols_sr_Latn_ME', 'goog.i18n.CompactNumberFormatSymbols_sr_Latn_XK', 'goog.i18n.CompactNumberFormatSymbols_sv_AX', 'goog.i18n.CompactNumberFormatSymbols_sv_FI', 'goog.i18n.CompactNumberFormatSymbols_sw_CD', 'goog.i18n.CompactNumberFormatSymbols_sw_KE', 'goog.i18n.CompactNumberFormatSymbols_sw_UG', 'goog.i18n.CompactNumberFormatSymbols_ta_LK', 'goog.i18n.CompactNumberFormatSymbols_ta_MY', 'goog.i18n.CompactNumberFormatSymbols_ta_SG', 'goog.i18n.CompactNumberFormatSymbols_teo', 'goog.i18n.CompactNumberFormatSymbols_teo_KE', 'goog.i18n.CompactNumberFormatSymbols_teo_UG', 'goog.i18n.CompactNumberFormatSymbols_ti', 'goog.i18n.CompactNumberFormatSymbols_ti_ER', 'goog.i18n.CompactNumberFormatSymbols_ti_ET', 'goog.i18n.CompactNumberFormatSymbols_to', 'goog.i18n.CompactNumberFormatSymbols_to_TO', 'goog.i18n.CompactNumberFormatSymbols_tr_CY', 'goog.i18n.CompactNumberFormatSymbols_twq', 'goog.i18n.CompactNumberFormatSymbols_twq_NE', 'goog.i18n.CompactNumberFormatSymbols_tzm', 'goog.i18n.CompactNumberFormatSymbols_tzm_Latn', 'goog.i18n.CompactNumberFormatSymbols_tzm_Latn_MA', 'goog.i18n.CompactNumberFormatSymbols_ug', 'goog.i18n.CompactNumberFormatSymbols_ug_Arab', 'goog.i18n.CompactNumberFormatSymbols_ug_Arab_CN', 'goog.i18n.CompactNumberFormatSymbols_ur_IN', 'goog.i18n.CompactNumberFormatSymbols_uz_Arab', 'goog.i18n.CompactNumberFormatSymbols_uz_Arab_AF', 'goog.i18n.CompactNumberFormatSymbols_uz_Cyrl', 'goog.i18n.CompactNumberFormatSymbols_uz_Cyrl_UZ', 'goog.i18n.CompactNumberFormatSymbols_vai', 'goog.i18n.CompactNumberFormatSymbols_vai_Latn', 'goog.i18n.CompactNumberFormatSymbols_vai_Latn_LR', 'goog.i18n.CompactNumberFormatSymbols_vai_Vaii', 'goog.i18n.CompactNumberFormatSymbols_vai_Vaii_LR', 'goog.i18n.CompactNumberFormatSymbols_vun', 'goog.i18n.CompactNumberFormatSymbols_vun_TZ', 'goog.i18n.CompactNumberFormatSymbols_wae', 'goog.i18n.CompactNumberFormatSymbols_wae_CH', 'goog.i18n.CompactNumberFormatSymbols_xog', 'goog.i18n.CompactNumberFormatSymbols_xog_UG', 'goog.i18n.CompactNumberFormatSymbols_yav', 'goog.i18n.CompactNumberFormatSymbols_yav_CM', 'goog.i18n.CompactNumberFormatSymbols_yi', 'goog.i18n.CompactNumberFormatSymbols_yi_001', 'goog.i18n.CompactNumberFormatSymbols_yo', 'goog.i18n.CompactNumberFormatSymbols_yo_BJ', 'goog.i18n.CompactNumberFormatSymbols_yo_NG', 'goog.i18n.CompactNumberFormatSymbols_zgh', 'goog.i18n.CompactNumberFormatSymbols_zgh_MA', 'goog.i18n.CompactNumberFormatSymbols_zh_Hans_HK', 'goog.i18n.CompactNumberFormatSymbols_zh_Hans_MO', 'goog.i18n.CompactNumberFormatSymbols_zh_Hans_SG', 'goog.i18n.CompactNumberFormatSymbols_zh_Hant', 'goog.i18n.CompactNumberFormatSymbols_zh_Hant_HK', 'goog.i18n.CompactNumberFormatSymbols_zh_Hant_MO', 'goog.i18n.CompactNumberFormatSymbols_zh_Hant_TW'], [], false); -goog.addDependency('i18n/currency.js', ['goog.i18n.currency', 'goog.i18n.currency.CurrencyInfo', 'goog.i18n.currency.CurrencyInfoTier2'], [], false); -goog.addDependency('i18n/currency_test.js', ['goog.i18n.currencyTest'], ['goog.i18n.NumberFormat', 'goog.i18n.currency', 'goog.i18n.currency.CurrencyInfo', 'goog.object', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/currencycodemap.js', ['goog.i18n.currencyCodeMap', 'goog.i18n.currencyCodeMapTier2'], [], false); -goog.addDependency('i18n/datetimeformat.js', ['goog.i18n.DateTimeFormat', 'goog.i18n.DateTimeFormat.Format'], ['goog.asserts', 'goog.date', 'goog.i18n.DateTimeSymbols', 'goog.i18n.TimeZone', 'goog.string'], false); -goog.addDependency('i18n/datetimeformat_test.js', ['goog.i18n.DateTimeFormatTest'], ['goog.date.Date', 'goog.date.DateTime', 'goog.i18n.DateTimeFormat', 'goog.i18n.DateTimePatterns', 'goog.i18n.DateTimePatterns_ar', 'goog.i18n.DateTimePatterns_de', 'goog.i18n.DateTimePatterns_en', 'goog.i18n.DateTimePatterns_fa', 'goog.i18n.DateTimePatterns_fr', 'goog.i18n.DateTimePatterns_ja', 'goog.i18n.DateTimePatterns_sv', 'goog.i18n.DateTimeSymbols', 'goog.i18n.DateTimeSymbols_ar', 'goog.i18n.DateTimeSymbols_ar_AE', 'goog.i18n.DateTimeSymbols_ar_SA', 'goog.i18n.DateTimeSymbols_bn_BD', 'goog.i18n.DateTimeSymbols_de', 'goog.i18n.DateTimeSymbols_en', 'goog.i18n.DateTimeSymbols_en_GB', 'goog.i18n.DateTimeSymbols_en_IE', 'goog.i18n.DateTimeSymbols_en_IN', 'goog.i18n.DateTimeSymbols_en_US', 'goog.i18n.DateTimeSymbols_fa', 'goog.i18n.DateTimeSymbols_fr', 'goog.i18n.DateTimeSymbols_fr_DJ', 'goog.i18n.DateTimeSymbols_he_IL', 'goog.i18n.DateTimeSymbols_ja', 'goog.i18n.DateTimeSymbols_ro_RO', 'goog.i18n.DateTimeSymbols_sv', 'goog.i18n.TimeZone', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/datetimeparse.js', ['goog.i18n.DateTimeParse'], ['goog.date', 'goog.i18n.DateTimeFormat', 'goog.i18n.DateTimeSymbols'], false); -goog.addDependency('i18n/datetimeparse_test.js', ['goog.i18n.DateTimeParseTest'], ['goog.date.Date', 'goog.i18n.DateTimeFormat', 'goog.i18n.DateTimeParse', 'goog.i18n.DateTimeSymbols', 'goog.i18n.DateTimeSymbols_en', 'goog.i18n.DateTimeSymbols_fa', 'goog.i18n.DateTimeSymbols_fr', 'goog.i18n.DateTimeSymbols_pl', 'goog.i18n.DateTimeSymbols_zh', 'goog.testing.ExpectedFailures', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('i18n/datetimepatterns.js', ['goog.i18n.DateTimePatterns', 'goog.i18n.DateTimePatterns_af', 'goog.i18n.DateTimePatterns_am', 'goog.i18n.DateTimePatterns_ar', 'goog.i18n.DateTimePatterns_az', 'goog.i18n.DateTimePatterns_be', 'goog.i18n.DateTimePatterns_bg', 'goog.i18n.DateTimePatterns_bn', 'goog.i18n.DateTimePatterns_br', 'goog.i18n.DateTimePatterns_bs', 'goog.i18n.DateTimePatterns_ca', 'goog.i18n.DateTimePatterns_chr', 'goog.i18n.DateTimePatterns_cs', 'goog.i18n.DateTimePatterns_cy', 'goog.i18n.DateTimePatterns_da', 'goog.i18n.DateTimePatterns_de', 'goog.i18n.DateTimePatterns_de_AT', 'goog.i18n.DateTimePatterns_de_CH', 'goog.i18n.DateTimePatterns_el', 'goog.i18n.DateTimePatterns_en', 'goog.i18n.DateTimePatterns_en_AU', 'goog.i18n.DateTimePatterns_en_CA', 'goog.i18n.DateTimePatterns_en_GB', 'goog.i18n.DateTimePatterns_en_IE', 'goog.i18n.DateTimePatterns_en_IN', 'goog.i18n.DateTimePatterns_en_SG', 'goog.i18n.DateTimePatterns_en_US', 'goog.i18n.DateTimePatterns_en_ZA', 'goog.i18n.DateTimePatterns_es', 'goog.i18n.DateTimePatterns_es_419', 'goog.i18n.DateTimePatterns_es_ES', 'goog.i18n.DateTimePatterns_es_MX', 'goog.i18n.DateTimePatterns_es_US', 'goog.i18n.DateTimePatterns_et', 'goog.i18n.DateTimePatterns_eu', 'goog.i18n.DateTimePatterns_fa', 'goog.i18n.DateTimePatterns_fi', 'goog.i18n.DateTimePatterns_fil', 'goog.i18n.DateTimePatterns_fr', 'goog.i18n.DateTimePatterns_fr_CA', 'goog.i18n.DateTimePatterns_ga', 'goog.i18n.DateTimePatterns_gl', 'goog.i18n.DateTimePatterns_gsw', 'goog.i18n.DateTimePatterns_gu', 'goog.i18n.DateTimePatterns_haw', 'goog.i18n.DateTimePatterns_he', 'goog.i18n.DateTimePatterns_hi', 'goog.i18n.DateTimePatterns_hr', 'goog.i18n.DateTimePatterns_hu', 'goog.i18n.DateTimePatterns_hy', 'goog.i18n.DateTimePatterns_id', 'goog.i18n.DateTimePatterns_in', 'goog.i18n.DateTimePatterns_is', 'goog.i18n.DateTimePatterns_it', 'goog.i18n.DateTimePatterns_iw', 'goog.i18n.DateTimePatterns_ja', 'goog.i18n.DateTimePatterns_ka', 'goog.i18n.DateTimePatterns_kk', 'goog.i18n.DateTimePatterns_km', 'goog.i18n.DateTimePatterns_kn', 'goog.i18n.DateTimePatterns_ko', 'goog.i18n.DateTimePatterns_ky', 'goog.i18n.DateTimePatterns_ln', 'goog.i18n.DateTimePatterns_lo', 'goog.i18n.DateTimePatterns_lt', 'goog.i18n.DateTimePatterns_lv', 'goog.i18n.DateTimePatterns_mk', 'goog.i18n.DateTimePatterns_ml', 'goog.i18n.DateTimePatterns_mn', 'goog.i18n.DateTimePatterns_mo', 'goog.i18n.DateTimePatterns_mr', 'goog.i18n.DateTimePatterns_ms', 'goog.i18n.DateTimePatterns_mt', 'goog.i18n.DateTimePatterns_my', 'goog.i18n.DateTimePatterns_nb', 'goog.i18n.DateTimePatterns_ne', 'goog.i18n.DateTimePatterns_nl', 'goog.i18n.DateTimePatterns_no', 'goog.i18n.DateTimePatterns_no_NO', 'goog.i18n.DateTimePatterns_or', 'goog.i18n.DateTimePatterns_pa', 'goog.i18n.DateTimePatterns_pl', 'goog.i18n.DateTimePatterns_pt', 'goog.i18n.DateTimePatterns_pt_BR', 'goog.i18n.DateTimePatterns_pt_PT', 'goog.i18n.DateTimePatterns_ro', 'goog.i18n.DateTimePatterns_ru', 'goog.i18n.DateTimePatterns_sh', 'goog.i18n.DateTimePatterns_si', 'goog.i18n.DateTimePatterns_sk', 'goog.i18n.DateTimePatterns_sl', 'goog.i18n.DateTimePatterns_sq', 'goog.i18n.DateTimePatterns_sr', 'goog.i18n.DateTimePatterns_sr_Latn', 'goog.i18n.DateTimePatterns_sv', 'goog.i18n.DateTimePatterns_sw', 'goog.i18n.DateTimePatterns_ta', 'goog.i18n.DateTimePatterns_te', 'goog.i18n.DateTimePatterns_th', 'goog.i18n.DateTimePatterns_tl', 'goog.i18n.DateTimePatterns_tr', 'goog.i18n.DateTimePatterns_uk', 'goog.i18n.DateTimePatterns_ur', 'goog.i18n.DateTimePatterns_uz', 'goog.i18n.DateTimePatterns_vi', 'goog.i18n.DateTimePatterns_zh', 'goog.i18n.DateTimePatterns_zh_CN', 'goog.i18n.DateTimePatterns_zh_HK', 'goog.i18n.DateTimePatterns_zh_TW', 'goog.i18n.DateTimePatterns_zu'], [], false); -goog.addDependency('i18n/datetimepatternsext.js', ['goog.i18n.DateTimePatternsExt', 'goog.i18n.DateTimePatterns_af_NA', 'goog.i18n.DateTimePatterns_af_ZA', 'goog.i18n.DateTimePatterns_agq', 'goog.i18n.DateTimePatterns_agq_CM', 'goog.i18n.DateTimePatterns_ak', 'goog.i18n.DateTimePatterns_ak_GH', 'goog.i18n.DateTimePatterns_am_ET', 'goog.i18n.DateTimePatterns_ar_001', 'goog.i18n.DateTimePatterns_ar_AE', 'goog.i18n.DateTimePatterns_ar_BH', 'goog.i18n.DateTimePatterns_ar_DJ', 'goog.i18n.DateTimePatterns_ar_DZ', 'goog.i18n.DateTimePatterns_ar_EG', 'goog.i18n.DateTimePatterns_ar_EH', 'goog.i18n.DateTimePatterns_ar_ER', 'goog.i18n.DateTimePatterns_ar_IL', 'goog.i18n.DateTimePatterns_ar_IQ', 'goog.i18n.DateTimePatterns_ar_JO', 'goog.i18n.DateTimePatterns_ar_KM', 'goog.i18n.DateTimePatterns_ar_KW', 'goog.i18n.DateTimePatterns_ar_LB', 'goog.i18n.DateTimePatterns_ar_LY', 'goog.i18n.DateTimePatterns_ar_MA', 'goog.i18n.DateTimePatterns_ar_MR', 'goog.i18n.DateTimePatterns_ar_OM', 'goog.i18n.DateTimePatterns_ar_PS', 'goog.i18n.DateTimePatterns_ar_QA', 'goog.i18n.DateTimePatterns_ar_SA', 'goog.i18n.DateTimePatterns_ar_SD', 'goog.i18n.DateTimePatterns_ar_SO', 'goog.i18n.DateTimePatterns_ar_SS', 'goog.i18n.DateTimePatterns_ar_SY', 'goog.i18n.DateTimePatterns_ar_TD', 'goog.i18n.DateTimePatterns_ar_TN', 'goog.i18n.DateTimePatterns_ar_YE', 'goog.i18n.DateTimePatterns_as', 'goog.i18n.DateTimePatterns_as_IN', 'goog.i18n.DateTimePatterns_asa', 'goog.i18n.DateTimePatterns_asa_TZ', 'goog.i18n.DateTimePatterns_az_Cyrl', 'goog.i18n.DateTimePatterns_az_Cyrl_AZ', 'goog.i18n.DateTimePatterns_az_Latn', 'goog.i18n.DateTimePatterns_az_Latn_AZ', 'goog.i18n.DateTimePatterns_bas', 'goog.i18n.DateTimePatterns_bas_CM', 'goog.i18n.DateTimePatterns_be_BY', 'goog.i18n.DateTimePatterns_bem', 'goog.i18n.DateTimePatterns_bem_ZM', 'goog.i18n.DateTimePatterns_bez', 'goog.i18n.DateTimePatterns_bez_TZ', 'goog.i18n.DateTimePatterns_bg_BG', 'goog.i18n.DateTimePatterns_bm', 'goog.i18n.DateTimePatterns_bm_Latn', 'goog.i18n.DateTimePatterns_bm_Latn_ML', 'goog.i18n.DateTimePatterns_bn_BD', 'goog.i18n.DateTimePatterns_bn_IN', 'goog.i18n.DateTimePatterns_bo', 'goog.i18n.DateTimePatterns_bo_CN', 'goog.i18n.DateTimePatterns_bo_IN', 'goog.i18n.DateTimePatterns_br_FR', 'goog.i18n.DateTimePatterns_brx', 'goog.i18n.DateTimePatterns_brx_IN', 'goog.i18n.DateTimePatterns_bs_Cyrl', 'goog.i18n.DateTimePatterns_bs_Cyrl_BA', 'goog.i18n.DateTimePatterns_bs_Latn', 'goog.i18n.DateTimePatterns_bs_Latn_BA', 'goog.i18n.DateTimePatterns_ca_AD', 'goog.i18n.DateTimePatterns_ca_ES', 'goog.i18n.DateTimePatterns_ca_FR', 'goog.i18n.DateTimePatterns_ca_IT', 'goog.i18n.DateTimePatterns_cgg', 'goog.i18n.DateTimePatterns_cgg_UG', 'goog.i18n.DateTimePatterns_chr_US', 'goog.i18n.DateTimePatterns_cs_CZ', 'goog.i18n.DateTimePatterns_cy_GB', 'goog.i18n.DateTimePatterns_da_DK', 'goog.i18n.DateTimePatterns_da_GL', 'goog.i18n.DateTimePatterns_dav', 'goog.i18n.DateTimePatterns_dav_KE', 'goog.i18n.DateTimePatterns_de_BE', 'goog.i18n.DateTimePatterns_de_DE', 'goog.i18n.DateTimePatterns_de_LI', 'goog.i18n.DateTimePatterns_de_LU', 'goog.i18n.DateTimePatterns_dje', 'goog.i18n.DateTimePatterns_dje_NE', 'goog.i18n.DateTimePatterns_dsb', 'goog.i18n.DateTimePatterns_dsb_DE', 'goog.i18n.DateTimePatterns_dua', 'goog.i18n.DateTimePatterns_dua_CM', 'goog.i18n.DateTimePatterns_dyo', 'goog.i18n.DateTimePatterns_dyo_SN', 'goog.i18n.DateTimePatterns_dz', 'goog.i18n.DateTimePatterns_dz_BT', 'goog.i18n.DateTimePatterns_ebu', 'goog.i18n.DateTimePatterns_ebu_KE', 'goog.i18n.DateTimePatterns_ee', 'goog.i18n.DateTimePatterns_ee_GH', 'goog.i18n.DateTimePatterns_ee_TG', 'goog.i18n.DateTimePatterns_el_CY', 'goog.i18n.DateTimePatterns_el_GR', 'goog.i18n.DateTimePatterns_en_001', 'goog.i18n.DateTimePatterns_en_150', 'goog.i18n.DateTimePatterns_en_AG', 'goog.i18n.DateTimePatterns_en_AI', 'goog.i18n.DateTimePatterns_en_AS', 'goog.i18n.DateTimePatterns_en_BB', 'goog.i18n.DateTimePatterns_en_BE', 'goog.i18n.DateTimePatterns_en_BM', 'goog.i18n.DateTimePatterns_en_BS', 'goog.i18n.DateTimePatterns_en_BW', 'goog.i18n.DateTimePatterns_en_BZ', 'goog.i18n.DateTimePatterns_en_CC', 'goog.i18n.DateTimePatterns_en_CK', 'goog.i18n.DateTimePatterns_en_CM', 'goog.i18n.DateTimePatterns_en_CX', 'goog.i18n.DateTimePatterns_en_DG', 'goog.i18n.DateTimePatterns_en_DM', 'goog.i18n.DateTimePatterns_en_ER', 'goog.i18n.DateTimePatterns_en_FJ', 'goog.i18n.DateTimePatterns_en_FK', 'goog.i18n.DateTimePatterns_en_FM', 'goog.i18n.DateTimePatterns_en_GD', 'goog.i18n.DateTimePatterns_en_GG', 'goog.i18n.DateTimePatterns_en_GH', 'goog.i18n.DateTimePatterns_en_GI', 'goog.i18n.DateTimePatterns_en_GM', 'goog.i18n.DateTimePatterns_en_GU', 'goog.i18n.DateTimePatterns_en_GY', 'goog.i18n.DateTimePatterns_en_HK', 'goog.i18n.DateTimePatterns_en_IM', 'goog.i18n.DateTimePatterns_en_IO', 'goog.i18n.DateTimePatterns_en_JE', 'goog.i18n.DateTimePatterns_en_JM', 'goog.i18n.DateTimePatterns_en_KE', 'goog.i18n.DateTimePatterns_en_KI', 'goog.i18n.DateTimePatterns_en_KN', 'goog.i18n.DateTimePatterns_en_KY', 'goog.i18n.DateTimePatterns_en_LC', 'goog.i18n.DateTimePatterns_en_LR', 'goog.i18n.DateTimePatterns_en_LS', 'goog.i18n.DateTimePatterns_en_MG', 'goog.i18n.DateTimePatterns_en_MH', 'goog.i18n.DateTimePatterns_en_MO', 'goog.i18n.DateTimePatterns_en_MP', 'goog.i18n.DateTimePatterns_en_MS', 'goog.i18n.DateTimePatterns_en_MT', 'goog.i18n.DateTimePatterns_en_MU', 'goog.i18n.DateTimePatterns_en_MW', 'goog.i18n.DateTimePatterns_en_MY', 'goog.i18n.DateTimePatterns_en_NA', 'goog.i18n.DateTimePatterns_en_NF', 'goog.i18n.DateTimePatterns_en_NG', 'goog.i18n.DateTimePatterns_en_NR', 'goog.i18n.DateTimePatterns_en_NU', 'goog.i18n.DateTimePatterns_en_NZ', 'goog.i18n.DateTimePatterns_en_PG', 'goog.i18n.DateTimePatterns_en_PH', 'goog.i18n.DateTimePatterns_en_PK', 'goog.i18n.DateTimePatterns_en_PN', 'goog.i18n.DateTimePatterns_en_PR', 'goog.i18n.DateTimePatterns_en_PW', 'goog.i18n.DateTimePatterns_en_RW', 'goog.i18n.DateTimePatterns_en_SB', 'goog.i18n.DateTimePatterns_en_SC', 'goog.i18n.DateTimePatterns_en_SD', 'goog.i18n.DateTimePatterns_en_SH', 'goog.i18n.DateTimePatterns_en_SL', 'goog.i18n.DateTimePatterns_en_SS', 'goog.i18n.DateTimePatterns_en_SX', 'goog.i18n.DateTimePatterns_en_SZ', 'goog.i18n.DateTimePatterns_en_TC', 'goog.i18n.DateTimePatterns_en_TK', 'goog.i18n.DateTimePatterns_en_TO', 'goog.i18n.DateTimePatterns_en_TT', 'goog.i18n.DateTimePatterns_en_TV', 'goog.i18n.DateTimePatterns_en_TZ', 'goog.i18n.DateTimePatterns_en_UG', 'goog.i18n.DateTimePatterns_en_UM', 'goog.i18n.DateTimePatterns_en_US_POSIX', 'goog.i18n.DateTimePatterns_en_VC', 'goog.i18n.DateTimePatterns_en_VG', 'goog.i18n.DateTimePatterns_en_VI', 'goog.i18n.DateTimePatterns_en_VU', 'goog.i18n.DateTimePatterns_en_WS', 'goog.i18n.DateTimePatterns_en_ZM', 'goog.i18n.DateTimePatterns_en_ZW', 'goog.i18n.DateTimePatterns_eo', 'goog.i18n.DateTimePatterns_es_AR', 'goog.i18n.DateTimePatterns_es_BO', 'goog.i18n.DateTimePatterns_es_CL', 'goog.i18n.DateTimePatterns_es_CO', 'goog.i18n.DateTimePatterns_es_CR', 'goog.i18n.DateTimePatterns_es_CU', 'goog.i18n.DateTimePatterns_es_DO', 'goog.i18n.DateTimePatterns_es_EA', 'goog.i18n.DateTimePatterns_es_EC', 'goog.i18n.DateTimePatterns_es_GQ', 'goog.i18n.DateTimePatterns_es_GT', 'goog.i18n.DateTimePatterns_es_HN', 'goog.i18n.DateTimePatterns_es_IC', 'goog.i18n.DateTimePatterns_es_NI', 'goog.i18n.DateTimePatterns_es_PA', 'goog.i18n.DateTimePatterns_es_PE', 'goog.i18n.DateTimePatterns_es_PH', 'goog.i18n.DateTimePatterns_es_PR', 'goog.i18n.DateTimePatterns_es_PY', 'goog.i18n.DateTimePatterns_es_SV', 'goog.i18n.DateTimePatterns_es_UY', 'goog.i18n.DateTimePatterns_es_VE', 'goog.i18n.DateTimePatterns_et_EE', 'goog.i18n.DateTimePatterns_eu_ES', 'goog.i18n.DateTimePatterns_ewo', 'goog.i18n.DateTimePatterns_ewo_CM', 'goog.i18n.DateTimePatterns_fa_AF', 'goog.i18n.DateTimePatterns_fa_IR', 'goog.i18n.DateTimePatterns_ff', 'goog.i18n.DateTimePatterns_ff_CM', 'goog.i18n.DateTimePatterns_ff_GN', 'goog.i18n.DateTimePatterns_ff_MR', 'goog.i18n.DateTimePatterns_ff_SN', 'goog.i18n.DateTimePatterns_fi_FI', 'goog.i18n.DateTimePatterns_fil_PH', 'goog.i18n.DateTimePatterns_fo', 'goog.i18n.DateTimePatterns_fo_FO', 'goog.i18n.DateTimePatterns_fr_BE', 'goog.i18n.DateTimePatterns_fr_BF', 'goog.i18n.DateTimePatterns_fr_BI', 'goog.i18n.DateTimePatterns_fr_BJ', 'goog.i18n.DateTimePatterns_fr_BL', 'goog.i18n.DateTimePatterns_fr_CD', 'goog.i18n.DateTimePatterns_fr_CF', 'goog.i18n.DateTimePatterns_fr_CG', 'goog.i18n.DateTimePatterns_fr_CH', 'goog.i18n.DateTimePatterns_fr_CI', 'goog.i18n.DateTimePatterns_fr_CM', 'goog.i18n.DateTimePatterns_fr_DJ', 'goog.i18n.DateTimePatterns_fr_DZ', 'goog.i18n.DateTimePatterns_fr_FR', 'goog.i18n.DateTimePatterns_fr_GA', 'goog.i18n.DateTimePatterns_fr_GF', 'goog.i18n.DateTimePatterns_fr_GN', 'goog.i18n.DateTimePatterns_fr_GP', 'goog.i18n.DateTimePatterns_fr_GQ', 'goog.i18n.DateTimePatterns_fr_HT', 'goog.i18n.DateTimePatterns_fr_KM', 'goog.i18n.DateTimePatterns_fr_LU', 'goog.i18n.DateTimePatterns_fr_MA', 'goog.i18n.DateTimePatterns_fr_MC', 'goog.i18n.DateTimePatterns_fr_MF', 'goog.i18n.DateTimePatterns_fr_MG', 'goog.i18n.DateTimePatterns_fr_ML', 'goog.i18n.DateTimePatterns_fr_MQ', 'goog.i18n.DateTimePatterns_fr_MR', 'goog.i18n.DateTimePatterns_fr_MU', 'goog.i18n.DateTimePatterns_fr_NC', 'goog.i18n.DateTimePatterns_fr_NE', 'goog.i18n.DateTimePatterns_fr_PF', 'goog.i18n.DateTimePatterns_fr_PM', 'goog.i18n.DateTimePatterns_fr_RE', 'goog.i18n.DateTimePatterns_fr_RW', 'goog.i18n.DateTimePatterns_fr_SC', 'goog.i18n.DateTimePatterns_fr_SN', 'goog.i18n.DateTimePatterns_fr_SY', 'goog.i18n.DateTimePatterns_fr_TD', 'goog.i18n.DateTimePatterns_fr_TG', 'goog.i18n.DateTimePatterns_fr_TN', 'goog.i18n.DateTimePatterns_fr_VU', 'goog.i18n.DateTimePatterns_fr_WF', 'goog.i18n.DateTimePatterns_fr_YT', 'goog.i18n.DateTimePatterns_fur', 'goog.i18n.DateTimePatterns_fur_IT', 'goog.i18n.DateTimePatterns_fy', 'goog.i18n.DateTimePatterns_fy_NL', 'goog.i18n.DateTimePatterns_ga_IE', 'goog.i18n.DateTimePatterns_gd', 'goog.i18n.DateTimePatterns_gd_GB', 'goog.i18n.DateTimePatterns_gl_ES', 'goog.i18n.DateTimePatterns_gsw_CH', 'goog.i18n.DateTimePatterns_gsw_FR', 'goog.i18n.DateTimePatterns_gsw_LI', 'goog.i18n.DateTimePatterns_gu_IN', 'goog.i18n.DateTimePatterns_guz', 'goog.i18n.DateTimePatterns_guz_KE', 'goog.i18n.DateTimePatterns_gv', 'goog.i18n.DateTimePatterns_gv_IM', 'goog.i18n.DateTimePatterns_ha', 'goog.i18n.DateTimePatterns_ha_Latn', 'goog.i18n.DateTimePatterns_ha_Latn_GH', 'goog.i18n.DateTimePatterns_ha_Latn_NE', 'goog.i18n.DateTimePatterns_ha_Latn_NG', 'goog.i18n.DateTimePatterns_haw_US', 'goog.i18n.DateTimePatterns_he_IL', 'goog.i18n.DateTimePatterns_hi_IN', 'goog.i18n.DateTimePatterns_hr_BA', 'goog.i18n.DateTimePatterns_hr_HR', 'goog.i18n.DateTimePatterns_hsb', 'goog.i18n.DateTimePatterns_hsb_DE', 'goog.i18n.DateTimePatterns_hu_HU', 'goog.i18n.DateTimePatterns_hy_AM', 'goog.i18n.DateTimePatterns_id_ID', 'goog.i18n.DateTimePatterns_ig', 'goog.i18n.DateTimePatterns_ig_NG', 'goog.i18n.DateTimePatterns_ii', 'goog.i18n.DateTimePatterns_ii_CN', 'goog.i18n.DateTimePatterns_is_IS', 'goog.i18n.DateTimePatterns_it_CH', 'goog.i18n.DateTimePatterns_it_IT', 'goog.i18n.DateTimePatterns_it_SM', 'goog.i18n.DateTimePatterns_ja_JP', 'goog.i18n.DateTimePatterns_jgo', 'goog.i18n.DateTimePatterns_jgo_CM', 'goog.i18n.DateTimePatterns_jmc', 'goog.i18n.DateTimePatterns_jmc_TZ', 'goog.i18n.DateTimePatterns_ka_GE', 'goog.i18n.DateTimePatterns_kab', 'goog.i18n.DateTimePatterns_kab_DZ', 'goog.i18n.DateTimePatterns_kam', 'goog.i18n.DateTimePatterns_kam_KE', 'goog.i18n.DateTimePatterns_kde', 'goog.i18n.DateTimePatterns_kde_TZ', 'goog.i18n.DateTimePatterns_kea', 'goog.i18n.DateTimePatterns_kea_CV', 'goog.i18n.DateTimePatterns_khq', 'goog.i18n.DateTimePatterns_khq_ML', 'goog.i18n.DateTimePatterns_ki', 'goog.i18n.DateTimePatterns_ki_KE', 'goog.i18n.DateTimePatterns_kk_Cyrl', 'goog.i18n.DateTimePatterns_kk_Cyrl_KZ', 'goog.i18n.DateTimePatterns_kkj', 'goog.i18n.DateTimePatterns_kkj_CM', 'goog.i18n.DateTimePatterns_kl', 'goog.i18n.DateTimePatterns_kl_GL', 'goog.i18n.DateTimePatterns_kln', 'goog.i18n.DateTimePatterns_kln_KE', 'goog.i18n.DateTimePatterns_km_KH', 'goog.i18n.DateTimePatterns_kn_IN', 'goog.i18n.DateTimePatterns_ko_KP', 'goog.i18n.DateTimePatterns_ko_KR', 'goog.i18n.DateTimePatterns_kok', 'goog.i18n.DateTimePatterns_kok_IN', 'goog.i18n.DateTimePatterns_ks', 'goog.i18n.DateTimePatterns_ks_Arab', 'goog.i18n.DateTimePatterns_ks_Arab_IN', 'goog.i18n.DateTimePatterns_ksb', 'goog.i18n.DateTimePatterns_ksb_TZ', 'goog.i18n.DateTimePatterns_ksf', 'goog.i18n.DateTimePatterns_ksf_CM', 'goog.i18n.DateTimePatterns_ksh', 'goog.i18n.DateTimePatterns_ksh_DE', 'goog.i18n.DateTimePatterns_kw', 'goog.i18n.DateTimePatterns_kw_GB', 'goog.i18n.DateTimePatterns_ky_Cyrl', 'goog.i18n.DateTimePatterns_ky_Cyrl_KG', 'goog.i18n.DateTimePatterns_lag', 'goog.i18n.DateTimePatterns_lag_TZ', 'goog.i18n.DateTimePatterns_lb', 'goog.i18n.DateTimePatterns_lb_LU', 'goog.i18n.DateTimePatterns_lg', 'goog.i18n.DateTimePatterns_lg_UG', 'goog.i18n.DateTimePatterns_lkt', 'goog.i18n.DateTimePatterns_lkt_US', 'goog.i18n.DateTimePatterns_ln_AO', 'goog.i18n.DateTimePatterns_ln_CD', 'goog.i18n.DateTimePatterns_ln_CF', 'goog.i18n.DateTimePatterns_ln_CG', 'goog.i18n.DateTimePatterns_lo_LA', 'goog.i18n.DateTimePatterns_lt_LT', 'goog.i18n.DateTimePatterns_lu', 'goog.i18n.DateTimePatterns_lu_CD', 'goog.i18n.DateTimePatterns_luo', 'goog.i18n.DateTimePatterns_luo_KE', 'goog.i18n.DateTimePatterns_luy', 'goog.i18n.DateTimePatterns_luy_KE', 'goog.i18n.DateTimePatterns_lv_LV', 'goog.i18n.DateTimePatterns_mas', 'goog.i18n.DateTimePatterns_mas_KE', 'goog.i18n.DateTimePatterns_mas_TZ', 'goog.i18n.DateTimePatterns_mer', 'goog.i18n.DateTimePatterns_mer_KE', 'goog.i18n.DateTimePatterns_mfe', 'goog.i18n.DateTimePatterns_mfe_MU', 'goog.i18n.DateTimePatterns_mg', 'goog.i18n.DateTimePatterns_mg_MG', 'goog.i18n.DateTimePatterns_mgh', 'goog.i18n.DateTimePatterns_mgh_MZ', 'goog.i18n.DateTimePatterns_mgo', 'goog.i18n.DateTimePatterns_mgo_CM', 'goog.i18n.DateTimePatterns_mk_MK', 'goog.i18n.DateTimePatterns_ml_IN', 'goog.i18n.DateTimePatterns_mn_Cyrl', 'goog.i18n.DateTimePatterns_mn_Cyrl_MN', 'goog.i18n.DateTimePatterns_mr_IN', 'goog.i18n.DateTimePatterns_ms_Latn', 'goog.i18n.DateTimePatterns_ms_Latn_BN', 'goog.i18n.DateTimePatterns_ms_Latn_MY', 'goog.i18n.DateTimePatterns_ms_Latn_SG', 'goog.i18n.DateTimePatterns_mt_MT', 'goog.i18n.DateTimePatterns_mua', 'goog.i18n.DateTimePatterns_mua_CM', 'goog.i18n.DateTimePatterns_my_MM', 'goog.i18n.DateTimePatterns_naq', 'goog.i18n.DateTimePatterns_naq_NA', 'goog.i18n.DateTimePatterns_nb_NO', 'goog.i18n.DateTimePatterns_nb_SJ', 'goog.i18n.DateTimePatterns_nd', 'goog.i18n.DateTimePatterns_nd_ZW', 'goog.i18n.DateTimePatterns_ne_IN', 'goog.i18n.DateTimePatterns_ne_NP', 'goog.i18n.DateTimePatterns_nl_AW', 'goog.i18n.DateTimePatterns_nl_BE', 'goog.i18n.DateTimePatterns_nl_BQ', 'goog.i18n.DateTimePatterns_nl_CW', 'goog.i18n.DateTimePatterns_nl_NL', 'goog.i18n.DateTimePatterns_nl_SR', 'goog.i18n.DateTimePatterns_nl_SX', 'goog.i18n.DateTimePatterns_nmg', 'goog.i18n.DateTimePatterns_nmg_CM', 'goog.i18n.DateTimePatterns_nn', 'goog.i18n.DateTimePatterns_nn_NO', 'goog.i18n.DateTimePatterns_nnh', 'goog.i18n.DateTimePatterns_nnh_CM', 'goog.i18n.DateTimePatterns_nus', 'goog.i18n.DateTimePatterns_nus_SD', 'goog.i18n.DateTimePatterns_nyn', 'goog.i18n.DateTimePatterns_nyn_UG', 'goog.i18n.DateTimePatterns_om', 'goog.i18n.DateTimePatterns_om_ET', 'goog.i18n.DateTimePatterns_om_KE', 'goog.i18n.DateTimePatterns_or_IN', 'goog.i18n.DateTimePatterns_os', 'goog.i18n.DateTimePatterns_os_GE', 'goog.i18n.DateTimePatterns_os_RU', 'goog.i18n.DateTimePatterns_pa_Arab', 'goog.i18n.DateTimePatterns_pa_Arab_PK', 'goog.i18n.DateTimePatterns_pa_Guru', 'goog.i18n.DateTimePatterns_pa_Guru_IN', 'goog.i18n.DateTimePatterns_pl_PL', 'goog.i18n.DateTimePatterns_ps', 'goog.i18n.DateTimePatterns_ps_AF', 'goog.i18n.DateTimePatterns_pt_AO', 'goog.i18n.DateTimePatterns_pt_CV', 'goog.i18n.DateTimePatterns_pt_GW', 'goog.i18n.DateTimePatterns_pt_MO', 'goog.i18n.DateTimePatterns_pt_MZ', 'goog.i18n.DateTimePatterns_pt_ST', 'goog.i18n.DateTimePatterns_pt_TL', 'goog.i18n.DateTimePatterns_qu', 'goog.i18n.DateTimePatterns_qu_BO', 'goog.i18n.DateTimePatterns_qu_EC', 'goog.i18n.DateTimePatterns_qu_PE', 'goog.i18n.DateTimePatterns_rm', 'goog.i18n.DateTimePatterns_rm_CH', 'goog.i18n.DateTimePatterns_rn', 'goog.i18n.DateTimePatterns_rn_BI', 'goog.i18n.DateTimePatterns_ro_MD', 'goog.i18n.DateTimePatterns_ro_RO', 'goog.i18n.DateTimePatterns_rof', 'goog.i18n.DateTimePatterns_rof_TZ', 'goog.i18n.DateTimePatterns_ru_BY', 'goog.i18n.DateTimePatterns_ru_KG', 'goog.i18n.DateTimePatterns_ru_KZ', 'goog.i18n.DateTimePatterns_ru_MD', 'goog.i18n.DateTimePatterns_ru_RU', 'goog.i18n.DateTimePatterns_ru_UA', 'goog.i18n.DateTimePatterns_rw', 'goog.i18n.DateTimePatterns_rw_RW', 'goog.i18n.DateTimePatterns_rwk', 'goog.i18n.DateTimePatterns_rwk_TZ', 'goog.i18n.DateTimePatterns_sah', 'goog.i18n.DateTimePatterns_sah_RU', 'goog.i18n.DateTimePatterns_saq', 'goog.i18n.DateTimePatterns_saq_KE', 'goog.i18n.DateTimePatterns_sbp', 'goog.i18n.DateTimePatterns_sbp_TZ', 'goog.i18n.DateTimePatterns_se', 'goog.i18n.DateTimePatterns_se_FI', 'goog.i18n.DateTimePatterns_se_NO', 'goog.i18n.DateTimePatterns_se_SE', 'goog.i18n.DateTimePatterns_seh', 'goog.i18n.DateTimePatterns_seh_MZ', 'goog.i18n.DateTimePatterns_ses', 'goog.i18n.DateTimePatterns_ses_ML', 'goog.i18n.DateTimePatterns_sg', 'goog.i18n.DateTimePatterns_sg_CF', 'goog.i18n.DateTimePatterns_shi', 'goog.i18n.DateTimePatterns_shi_Latn', 'goog.i18n.DateTimePatterns_shi_Latn_MA', 'goog.i18n.DateTimePatterns_shi_Tfng', 'goog.i18n.DateTimePatterns_shi_Tfng_MA', 'goog.i18n.DateTimePatterns_si_LK', 'goog.i18n.DateTimePatterns_sk_SK', 'goog.i18n.DateTimePatterns_sl_SI', 'goog.i18n.DateTimePatterns_smn', 'goog.i18n.DateTimePatterns_smn_FI', 'goog.i18n.DateTimePatterns_sn', 'goog.i18n.DateTimePatterns_sn_ZW', 'goog.i18n.DateTimePatterns_so', 'goog.i18n.DateTimePatterns_so_DJ', 'goog.i18n.DateTimePatterns_so_ET', 'goog.i18n.DateTimePatterns_so_KE', 'goog.i18n.DateTimePatterns_so_SO', 'goog.i18n.DateTimePatterns_sq_AL', 'goog.i18n.DateTimePatterns_sq_MK', 'goog.i18n.DateTimePatterns_sq_XK', 'goog.i18n.DateTimePatterns_sr_Cyrl', 'goog.i18n.DateTimePatterns_sr_Cyrl_BA', 'goog.i18n.DateTimePatterns_sr_Cyrl_ME', 'goog.i18n.DateTimePatterns_sr_Cyrl_RS', 'goog.i18n.DateTimePatterns_sr_Cyrl_XK', 'goog.i18n.DateTimePatterns_sr_Latn_BA', 'goog.i18n.DateTimePatterns_sr_Latn_ME', 'goog.i18n.DateTimePatterns_sr_Latn_RS', 'goog.i18n.DateTimePatterns_sr_Latn_XK', 'goog.i18n.DateTimePatterns_sv_AX', 'goog.i18n.DateTimePatterns_sv_FI', 'goog.i18n.DateTimePatterns_sv_SE', 'goog.i18n.DateTimePatterns_sw_CD', 'goog.i18n.DateTimePatterns_sw_KE', 'goog.i18n.DateTimePatterns_sw_TZ', 'goog.i18n.DateTimePatterns_sw_UG', 'goog.i18n.DateTimePatterns_ta_IN', 'goog.i18n.DateTimePatterns_ta_LK', 'goog.i18n.DateTimePatterns_ta_MY', 'goog.i18n.DateTimePatterns_ta_SG', 'goog.i18n.DateTimePatterns_te_IN', 'goog.i18n.DateTimePatterns_teo', 'goog.i18n.DateTimePatterns_teo_KE', 'goog.i18n.DateTimePatterns_teo_UG', 'goog.i18n.DateTimePatterns_th_TH', 'goog.i18n.DateTimePatterns_ti', 'goog.i18n.DateTimePatterns_ti_ER', 'goog.i18n.DateTimePatterns_ti_ET', 'goog.i18n.DateTimePatterns_to', 'goog.i18n.DateTimePatterns_to_TO', 'goog.i18n.DateTimePatterns_tr_CY', 'goog.i18n.DateTimePatterns_tr_TR', 'goog.i18n.DateTimePatterns_twq', 'goog.i18n.DateTimePatterns_twq_NE', 'goog.i18n.DateTimePatterns_tzm', 'goog.i18n.DateTimePatterns_tzm_Latn', 'goog.i18n.DateTimePatterns_tzm_Latn_MA', 'goog.i18n.DateTimePatterns_ug', 'goog.i18n.DateTimePatterns_ug_Arab', 'goog.i18n.DateTimePatterns_ug_Arab_CN', 'goog.i18n.DateTimePatterns_uk_UA', 'goog.i18n.DateTimePatterns_ur_IN', 'goog.i18n.DateTimePatterns_ur_PK', 'goog.i18n.DateTimePatterns_uz_Arab', 'goog.i18n.DateTimePatterns_uz_Arab_AF', 'goog.i18n.DateTimePatterns_uz_Cyrl', 'goog.i18n.DateTimePatterns_uz_Cyrl_UZ', 'goog.i18n.DateTimePatterns_uz_Latn', 'goog.i18n.DateTimePatterns_uz_Latn_UZ', 'goog.i18n.DateTimePatterns_vai', 'goog.i18n.DateTimePatterns_vai_Latn', 'goog.i18n.DateTimePatterns_vai_Latn_LR', 'goog.i18n.DateTimePatterns_vai_Vaii', 'goog.i18n.DateTimePatterns_vai_Vaii_LR', 'goog.i18n.DateTimePatterns_vi_VN', 'goog.i18n.DateTimePatterns_vun', 'goog.i18n.DateTimePatterns_vun_TZ', 'goog.i18n.DateTimePatterns_wae', 'goog.i18n.DateTimePatterns_wae_CH', 'goog.i18n.DateTimePatterns_xog', 'goog.i18n.DateTimePatterns_xog_UG', 'goog.i18n.DateTimePatterns_yav', 'goog.i18n.DateTimePatterns_yav_CM', 'goog.i18n.DateTimePatterns_yi', 'goog.i18n.DateTimePatterns_yi_001', 'goog.i18n.DateTimePatterns_yo', 'goog.i18n.DateTimePatterns_yo_BJ', 'goog.i18n.DateTimePatterns_yo_NG', 'goog.i18n.DateTimePatterns_zgh', 'goog.i18n.DateTimePatterns_zgh_MA', 'goog.i18n.DateTimePatterns_zh_Hans', 'goog.i18n.DateTimePatterns_zh_Hans_CN', 'goog.i18n.DateTimePatterns_zh_Hans_HK', 'goog.i18n.DateTimePatterns_zh_Hans_MO', 'goog.i18n.DateTimePatterns_zh_Hans_SG', 'goog.i18n.DateTimePatterns_zh_Hant', 'goog.i18n.DateTimePatterns_zh_Hant_HK', 'goog.i18n.DateTimePatterns_zh_Hant_MO', 'goog.i18n.DateTimePatterns_zh_Hant_TW', 'goog.i18n.DateTimePatterns_zu_ZA'], ['goog.i18n.DateTimePatterns'], false); -goog.addDependency('i18n/datetimesymbols.js', ['goog.i18n.DateTimeSymbols', 'goog.i18n.DateTimeSymbols_af', 'goog.i18n.DateTimeSymbols_am', 'goog.i18n.DateTimeSymbols_ar', 'goog.i18n.DateTimeSymbols_az', 'goog.i18n.DateTimeSymbols_be', 'goog.i18n.DateTimeSymbols_bg', 'goog.i18n.DateTimeSymbols_bn', 'goog.i18n.DateTimeSymbols_br', 'goog.i18n.DateTimeSymbols_bs', 'goog.i18n.DateTimeSymbols_ca', 'goog.i18n.DateTimeSymbols_chr', 'goog.i18n.DateTimeSymbols_cs', 'goog.i18n.DateTimeSymbols_cy', 'goog.i18n.DateTimeSymbols_da', 'goog.i18n.DateTimeSymbols_de', 'goog.i18n.DateTimeSymbols_de_AT', 'goog.i18n.DateTimeSymbols_de_CH', 'goog.i18n.DateTimeSymbols_el', 'goog.i18n.DateTimeSymbols_en', 'goog.i18n.DateTimeSymbols_en_AU', 'goog.i18n.DateTimeSymbols_en_CA', 'goog.i18n.DateTimeSymbols_en_GB', 'goog.i18n.DateTimeSymbols_en_IE', 'goog.i18n.DateTimeSymbols_en_IN', 'goog.i18n.DateTimeSymbols_en_ISO', 'goog.i18n.DateTimeSymbols_en_SG', 'goog.i18n.DateTimeSymbols_en_US', 'goog.i18n.DateTimeSymbols_en_ZA', 'goog.i18n.DateTimeSymbols_es', 'goog.i18n.DateTimeSymbols_es_419', 'goog.i18n.DateTimeSymbols_es_ES', 'goog.i18n.DateTimeSymbols_es_MX', 'goog.i18n.DateTimeSymbols_es_US', 'goog.i18n.DateTimeSymbols_et', 'goog.i18n.DateTimeSymbols_eu', 'goog.i18n.DateTimeSymbols_fa', 'goog.i18n.DateTimeSymbols_fi', 'goog.i18n.DateTimeSymbols_fil', 'goog.i18n.DateTimeSymbols_fr', 'goog.i18n.DateTimeSymbols_fr_CA', 'goog.i18n.DateTimeSymbols_ga', 'goog.i18n.DateTimeSymbols_gl', 'goog.i18n.DateTimeSymbols_gsw', 'goog.i18n.DateTimeSymbols_gu', 'goog.i18n.DateTimeSymbols_haw', 'goog.i18n.DateTimeSymbols_he', 'goog.i18n.DateTimeSymbols_hi', 'goog.i18n.DateTimeSymbols_hr', 'goog.i18n.DateTimeSymbols_hu', 'goog.i18n.DateTimeSymbols_hy', 'goog.i18n.DateTimeSymbols_id', 'goog.i18n.DateTimeSymbols_in', 'goog.i18n.DateTimeSymbols_is', 'goog.i18n.DateTimeSymbols_it', 'goog.i18n.DateTimeSymbols_iw', 'goog.i18n.DateTimeSymbols_ja', 'goog.i18n.DateTimeSymbols_ka', 'goog.i18n.DateTimeSymbols_kk', 'goog.i18n.DateTimeSymbols_km', 'goog.i18n.DateTimeSymbols_kn', 'goog.i18n.DateTimeSymbols_ko', 'goog.i18n.DateTimeSymbols_ky', 'goog.i18n.DateTimeSymbols_ln', 'goog.i18n.DateTimeSymbols_lo', 'goog.i18n.DateTimeSymbols_lt', 'goog.i18n.DateTimeSymbols_lv', 'goog.i18n.DateTimeSymbols_mk', 'goog.i18n.DateTimeSymbols_ml', 'goog.i18n.DateTimeSymbols_mn', 'goog.i18n.DateTimeSymbols_mr', 'goog.i18n.DateTimeSymbols_ms', 'goog.i18n.DateTimeSymbols_mt', 'goog.i18n.DateTimeSymbols_my', 'goog.i18n.DateTimeSymbols_nb', 'goog.i18n.DateTimeSymbols_ne', 'goog.i18n.DateTimeSymbols_nl', 'goog.i18n.DateTimeSymbols_no', 'goog.i18n.DateTimeSymbols_no_NO', 'goog.i18n.DateTimeSymbols_or', 'goog.i18n.DateTimeSymbols_pa', 'goog.i18n.DateTimeSymbols_pl', 'goog.i18n.DateTimeSymbols_pt', 'goog.i18n.DateTimeSymbols_pt_BR', 'goog.i18n.DateTimeSymbols_pt_PT', 'goog.i18n.DateTimeSymbols_ro', 'goog.i18n.DateTimeSymbols_ru', 'goog.i18n.DateTimeSymbols_si', 'goog.i18n.DateTimeSymbols_sk', 'goog.i18n.DateTimeSymbols_sl', 'goog.i18n.DateTimeSymbols_sq', 'goog.i18n.DateTimeSymbols_sr', 'goog.i18n.DateTimeSymbols_sr_Latn', 'goog.i18n.DateTimeSymbols_sv', 'goog.i18n.DateTimeSymbols_sw', 'goog.i18n.DateTimeSymbols_ta', 'goog.i18n.DateTimeSymbols_te', 'goog.i18n.DateTimeSymbols_th', 'goog.i18n.DateTimeSymbols_tl', 'goog.i18n.DateTimeSymbols_tr', 'goog.i18n.DateTimeSymbols_uk', 'goog.i18n.DateTimeSymbols_ur', 'goog.i18n.DateTimeSymbols_uz', 'goog.i18n.DateTimeSymbols_vi', 'goog.i18n.DateTimeSymbols_zh', 'goog.i18n.DateTimeSymbols_zh_CN', 'goog.i18n.DateTimeSymbols_zh_HK', 'goog.i18n.DateTimeSymbols_zh_TW', 'goog.i18n.DateTimeSymbols_zu'], [], false); -goog.addDependency('i18n/datetimesymbolsext.js', ['goog.i18n.DateTimeSymbolsExt', 'goog.i18n.DateTimeSymbols_af_NA', 'goog.i18n.DateTimeSymbols_af_ZA', 'goog.i18n.DateTimeSymbols_agq', 'goog.i18n.DateTimeSymbols_agq_CM', 'goog.i18n.DateTimeSymbols_ak', 'goog.i18n.DateTimeSymbols_ak_GH', 'goog.i18n.DateTimeSymbols_am_ET', 'goog.i18n.DateTimeSymbols_ar_001', 'goog.i18n.DateTimeSymbols_ar_AE', 'goog.i18n.DateTimeSymbols_ar_BH', 'goog.i18n.DateTimeSymbols_ar_DJ', 'goog.i18n.DateTimeSymbols_ar_DZ', 'goog.i18n.DateTimeSymbols_ar_EG', 'goog.i18n.DateTimeSymbols_ar_EH', 'goog.i18n.DateTimeSymbols_ar_ER', 'goog.i18n.DateTimeSymbols_ar_IL', 'goog.i18n.DateTimeSymbols_ar_IQ', 'goog.i18n.DateTimeSymbols_ar_JO', 'goog.i18n.DateTimeSymbols_ar_KM', 'goog.i18n.DateTimeSymbols_ar_KW', 'goog.i18n.DateTimeSymbols_ar_LB', 'goog.i18n.DateTimeSymbols_ar_LY', 'goog.i18n.DateTimeSymbols_ar_MA', 'goog.i18n.DateTimeSymbols_ar_MR', 'goog.i18n.DateTimeSymbols_ar_OM', 'goog.i18n.DateTimeSymbols_ar_PS', 'goog.i18n.DateTimeSymbols_ar_QA', 'goog.i18n.DateTimeSymbols_ar_SA', 'goog.i18n.DateTimeSymbols_ar_SD', 'goog.i18n.DateTimeSymbols_ar_SO', 'goog.i18n.DateTimeSymbols_ar_SS', 'goog.i18n.DateTimeSymbols_ar_SY', 'goog.i18n.DateTimeSymbols_ar_TD', 'goog.i18n.DateTimeSymbols_ar_TN', 'goog.i18n.DateTimeSymbols_ar_YE', 'goog.i18n.DateTimeSymbols_as', 'goog.i18n.DateTimeSymbols_as_IN', 'goog.i18n.DateTimeSymbols_asa', 'goog.i18n.DateTimeSymbols_asa_TZ', 'goog.i18n.DateTimeSymbols_ast', 'goog.i18n.DateTimeSymbols_ast_ES', 'goog.i18n.DateTimeSymbols_az_Cyrl', 'goog.i18n.DateTimeSymbols_az_Cyrl_AZ', 'goog.i18n.DateTimeSymbols_az_Latn', 'goog.i18n.DateTimeSymbols_az_Latn_AZ', 'goog.i18n.DateTimeSymbols_bas', 'goog.i18n.DateTimeSymbols_bas_CM', 'goog.i18n.DateTimeSymbols_be_BY', 'goog.i18n.DateTimeSymbols_bem', 'goog.i18n.DateTimeSymbols_bem_ZM', 'goog.i18n.DateTimeSymbols_bez', 'goog.i18n.DateTimeSymbols_bez_TZ', 'goog.i18n.DateTimeSymbols_bg_BG', 'goog.i18n.DateTimeSymbols_bm', 'goog.i18n.DateTimeSymbols_bm_Latn', 'goog.i18n.DateTimeSymbols_bm_Latn_ML', 'goog.i18n.DateTimeSymbols_bn_BD', 'goog.i18n.DateTimeSymbols_bn_IN', 'goog.i18n.DateTimeSymbols_bo', 'goog.i18n.DateTimeSymbols_bo_CN', 'goog.i18n.DateTimeSymbols_bo_IN', 'goog.i18n.DateTimeSymbols_br_FR', 'goog.i18n.DateTimeSymbols_brx', 'goog.i18n.DateTimeSymbols_brx_IN', 'goog.i18n.DateTimeSymbols_bs_Cyrl', 'goog.i18n.DateTimeSymbols_bs_Cyrl_BA', 'goog.i18n.DateTimeSymbols_bs_Latn', 'goog.i18n.DateTimeSymbols_bs_Latn_BA', 'goog.i18n.DateTimeSymbols_ca_AD', 'goog.i18n.DateTimeSymbols_ca_ES', 'goog.i18n.DateTimeSymbols_ca_ES_VALENCIA', 'goog.i18n.DateTimeSymbols_ca_FR', 'goog.i18n.DateTimeSymbols_ca_IT', 'goog.i18n.DateTimeSymbols_cgg', 'goog.i18n.DateTimeSymbols_cgg_UG', 'goog.i18n.DateTimeSymbols_chr_US', 'goog.i18n.DateTimeSymbols_ckb', 'goog.i18n.DateTimeSymbols_ckb_Arab', 'goog.i18n.DateTimeSymbols_ckb_Arab_IQ', 'goog.i18n.DateTimeSymbols_ckb_Arab_IR', 'goog.i18n.DateTimeSymbols_ckb_IQ', 'goog.i18n.DateTimeSymbols_ckb_IR', 'goog.i18n.DateTimeSymbols_ckb_Latn', 'goog.i18n.DateTimeSymbols_ckb_Latn_IQ', 'goog.i18n.DateTimeSymbols_cs_CZ', 'goog.i18n.DateTimeSymbols_cy_GB', 'goog.i18n.DateTimeSymbols_da_DK', 'goog.i18n.DateTimeSymbols_da_GL', 'goog.i18n.DateTimeSymbols_dav', 'goog.i18n.DateTimeSymbols_dav_KE', 'goog.i18n.DateTimeSymbols_de_BE', 'goog.i18n.DateTimeSymbols_de_DE', 'goog.i18n.DateTimeSymbols_de_LI', 'goog.i18n.DateTimeSymbols_de_LU', 'goog.i18n.DateTimeSymbols_dje', 'goog.i18n.DateTimeSymbols_dje_NE', 'goog.i18n.DateTimeSymbols_dsb', 'goog.i18n.DateTimeSymbols_dsb_DE', 'goog.i18n.DateTimeSymbols_dua', 'goog.i18n.DateTimeSymbols_dua_CM', 'goog.i18n.DateTimeSymbols_dyo', 'goog.i18n.DateTimeSymbols_dyo_SN', 'goog.i18n.DateTimeSymbols_dz', 'goog.i18n.DateTimeSymbols_dz_BT', 'goog.i18n.DateTimeSymbols_ebu', 'goog.i18n.DateTimeSymbols_ebu_KE', 'goog.i18n.DateTimeSymbols_ee', 'goog.i18n.DateTimeSymbols_ee_GH', 'goog.i18n.DateTimeSymbols_ee_TG', 'goog.i18n.DateTimeSymbols_el_CY', 'goog.i18n.DateTimeSymbols_el_GR', 'goog.i18n.DateTimeSymbols_en_001', 'goog.i18n.DateTimeSymbols_en_150', 'goog.i18n.DateTimeSymbols_en_AG', 'goog.i18n.DateTimeSymbols_en_AI', 'goog.i18n.DateTimeSymbols_en_AS', 'goog.i18n.DateTimeSymbols_en_BB', 'goog.i18n.DateTimeSymbols_en_BE', 'goog.i18n.DateTimeSymbols_en_BM', 'goog.i18n.DateTimeSymbols_en_BS', 'goog.i18n.DateTimeSymbols_en_BW', 'goog.i18n.DateTimeSymbols_en_BZ', 'goog.i18n.DateTimeSymbols_en_CC', 'goog.i18n.DateTimeSymbols_en_CK', 'goog.i18n.DateTimeSymbols_en_CM', 'goog.i18n.DateTimeSymbols_en_CX', 'goog.i18n.DateTimeSymbols_en_DG', 'goog.i18n.DateTimeSymbols_en_DM', 'goog.i18n.DateTimeSymbols_en_ER', 'goog.i18n.DateTimeSymbols_en_FJ', 'goog.i18n.DateTimeSymbols_en_FK', 'goog.i18n.DateTimeSymbols_en_FM', 'goog.i18n.DateTimeSymbols_en_GD', 'goog.i18n.DateTimeSymbols_en_GG', 'goog.i18n.DateTimeSymbols_en_GH', 'goog.i18n.DateTimeSymbols_en_GI', 'goog.i18n.DateTimeSymbols_en_GM', 'goog.i18n.DateTimeSymbols_en_GU', 'goog.i18n.DateTimeSymbols_en_GY', 'goog.i18n.DateTimeSymbols_en_HK', 'goog.i18n.DateTimeSymbols_en_IM', 'goog.i18n.DateTimeSymbols_en_IO', 'goog.i18n.DateTimeSymbols_en_JE', 'goog.i18n.DateTimeSymbols_en_JM', 'goog.i18n.DateTimeSymbols_en_KE', 'goog.i18n.DateTimeSymbols_en_KI', 'goog.i18n.DateTimeSymbols_en_KN', 'goog.i18n.DateTimeSymbols_en_KY', 'goog.i18n.DateTimeSymbols_en_LC', 'goog.i18n.DateTimeSymbols_en_LR', 'goog.i18n.DateTimeSymbols_en_LS', 'goog.i18n.DateTimeSymbols_en_MG', 'goog.i18n.DateTimeSymbols_en_MH', 'goog.i18n.DateTimeSymbols_en_MO', 'goog.i18n.DateTimeSymbols_en_MP', 'goog.i18n.DateTimeSymbols_en_MS', 'goog.i18n.DateTimeSymbols_en_MT', 'goog.i18n.DateTimeSymbols_en_MU', 'goog.i18n.DateTimeSymbols_en_MW', 'goog.i18n.DateTimeSymbols_en_MY', 'goog.i18n.DateTimeSymbols_en_NA', 'goog.i18n.DateTimeSymbols_en_NF', 'goog.i18n.DateTimeSymbols_en_NG', 'goog.i18n.DateTimeSymbols_en_NR', 'goog.i18n.DateTimeSymbols_en_NU', 'goog.i18n.DateTimeSymbols_en_NZ', 'goog.i18n.DateTimeSymbols_en_PG', 'goog.i18n.DateTimeSymbols_en_PH', 'goog.i18n.DateTimeSymbols_en_PK', 'goog.i18n.DateTimeSymbols_en_PN', 'goog.i18n.DateTimeSymbols_en_PR', 'goog.i18n.DateTimeSymbols_en_PW', 'goog.i18n.DateTimeSymbols_en_RW', 'goog.i18n.DateTimeSymbols_en_SB', 'goog.i18n.DateTimeSymbols_en_SC', 'goog.i18n.DateTimeSymbols_en_SD', 'goog.i18n.DateTimeSymbols_en_SH', 'goog.i18n.DateTimeSymbols_en_SL', 'goog.i18n.DateTimeSymbols_en_SS', 'goog.i18n.DateTimeSymbols_en_SX', 'goog.i18n.DateTimeSymbols_en_SZ', 'goog.i18n.DateTimeSymbols_en_TC', 'goog.i18n.DateTimeSymbols_en_TK', 'goog.i18n.DateTimeSymbols_en_TO', 'goog.i18n.DateTimeSymbols_en_TT', 'goog.i18n.DateTimeSymbols_en_TV', 'goog.i18n.DateTimeSymbols_en_TZ', 'goog.i18n.DateTimeSymbols_en_UG', 'goog.i18n.DateTimeSymbols_en_UM', 'goog.i18n.DateTimeSymbols_en_VC', 'goog.i18n.DateTimeSymbols_en_VG', 'goog.i18n.DateTimeSymbols_en_VI', 'goog.i18n.DateTimeSymbols_en_VU', 'goog.i18n.DateTimeSymbols_en_WS', 'goog.i18n.DateTimeSymbols_en_ZM', 'goog.i18n.DateTimeSymbols_en_ZW', 'goog.i18n.DateTimeSymbols_eo', 'goog.i18n.DateTimeSymbols_eo_001', 'goog.i18n.DateTimeSymbols_es_AR', 'goog.i18n.DateTimeSymbols_es_BO', 'goog.i18n.DateTimeSymbols_es_CL', 'goog.i18n.DateTimeSymbols_es_CO', 'goog.i18n.DateTimeSymbols_es_CR', 'goog.i18n.DateTimeSymbols_es_CU', 'goog.i18n.DateTimeSymbols_es_DO', 'goog.i18n.DateTimeSymbols_es_EA', 'goog.i18n.DateTimeSymbols_es_EC', 'goog.i18n.DateTimeSymbols_es_GQ', 'goog.i18n.DateTimeSymbols_es_GT', 'goog.i18n.DateTimeSymbols_es_HN', 'goog.i18n.DateTimeSymbols_es_IC', 'goog.i18n.DateTimeSymbols_es_NI', 'goog.i18n.DateTimeSymbols_es_PA', 'goog.i18n.DateTimeSymbols_es_PE', 'goog.i18n.DateTimeSymbols_es_PH', 'goog.i18n.DateTimeSymbols_es_PR', 'goog.i18n.DateTimeSymbols_es_PY', 'goog.i18n.DateTimeSymbols_es_SV', 'goog.i18n.DateTimeSymbols_es_UY', 'goog.i18n.DateTimeSymbols_es_VE', 'goog.i18n.DateTimeSymbols_et_EE', 'goog.i18n.DateTimeSymbols_eu_ES', 'goog.i18n.DateTimeSymbols_ewo', 'goog.i18n.DateTimeSymbols_ewo_CM', 'goog.i18n.DateTimeSymbols_fa_AF', 'goog.i18n.DateTimeSymbols_fa_IR', 'goog.i18n.DateTimeSymbols_ff', 'goog.i18n.DateTimeSymbols_ff_CM', 'goog.i18n.DateTimeSymbols_ff_GN', 'goog.i18n.DateTimeSymbols_ff_MR', 'goog.i18n.DateTimeSymbols_ff_SN', 'goog.i18n.DateTimeSymbols_fi_FI', 'goog.i18n.DateTimeSymbols_fil_PH', 'goog.i18n.DateTimeSymbols_fo', 'goog.i18n.DateTimeSymbols_fo_FO', 'goog.i18n.DateTimeSymbols_fr_BE', 'goog.i18n.DateTimeSymbols_fr_BF', 'goog.i18n.DateTimeSymbols_fr_BI', 'goog.i18n.DateTimeSymbols_fr_BJ', 'goog.i18n.DateTimeSymbols_fr_BL', 'goog.i18n.DateTimeSymbols_fr_CD', 'goog.i18n.DateTimeSymbols_fr_CF', 'goog.i18n.DateTimeSymbols_fr_CG', 'goog.i18n.DateTimeSymbols_fr_CH', 'goog.i18n.DateTimeSymbols_fr_CI', 'goog.i18n.DateTimeSymbols_fr_CM', 'goog.i18n.DateTimeSymbols_fr_DJ', 'goog.i18n.DateTimeSymbols_fr_DZ', 'goog.i18n.DateTimeSymbols_fr_FR', 'goog.i18n.DateTimeSymbols_fr_GA', 'goog.i18n.DateTimeSymbols_fr_GF', 'goog.i18n.DateTimeSymbols_fr_GN', 'goog.i18n.DateTimeSymbols_fr_GP', 'goog.i18n.DateTimeSymbols_fr_GQ', 'goog.i18n.DateTimeSymbols_fr_HT', 'goog.i18n.DateTimeSymbols_fr_KM', 'goog.i18n.DateTimeSymbols_fr_LU', 'goog.i18n.DateTimeSymbols_fr_MA', 'goog.i18n.DateTimeSymbols_fr_MC', 'goog.i18n.DateTimeSymbols_fr_MF', 'goog.i18n.DateTimeSymbols_fr_MG', 'goog.i18n.DateTimeSymbols_fr_ML', 'goog.i18n.DateTimeSymbols_fr_MQ', 'goog.i18n.DateTimeSymbols_fr_MR', 'goog.i18n.DateTimeSymbols_fr_MU', 'goog.i18n.DateTimeSymbols_fr_NC', 'goog.i18n.DateTimeSymbols_fr_NE', 'goog.i18n.DateTimeSymbols_fr_PF', 'goog.i18n.DateTimeSymbols_fr_PM', 'goog.i18n.DateTimeSymbols_fr_RE', 'goog.i18n.DateTimeSymbols_fr_RW', 'goog.i18n.DateTimeSymbols_fr_SC', 'goog.i18n.DateTimeSymbols_fr_SN', 'goog.i18n.DateTimeSymbols_fr_SY', 'goog.i18n.DateTimeSymbols_fr_TD', 'goog.i18n.DateTimeSymbols_fr_TG', 'goog.i18n.DateTimeSymbols_fr_TN', 'goog.i18n.DateTimeSymbols_fr_VU', 'goog.i18n.DateTimeSymbols_fr_WF', 'goog.i18n.DateTimeSymbols_fr_YT', 'goog.i18n.DateTimeSymbols_fur', 'goog.i18n.DateTimeSymbols_fur_IT', 'goog.i18n.DateTimeSymbols_fy', 'goog.i18n.DateTimeSymbols_fy_NL', 'goog.i18n.DateTimeSymbols_ga_IE', 'goog.i18n.DateTimeSymbols_gd', 'goog.i18n.DateTimeSymbols_gd_GB', 'goog.i18n.DateTimeSymbols_gl_ES', 'goog.i18n.DateTimeSymbols_gsw_CH', 'goog.i18n.DateTimeSymbols_gsw_FR', 'goog.i18n.DateTimeSymbols_gsw_LI', 'goog.i18n.DateTimeSymbols_gu_IN', 'goog.i18n.DateTimeSymbols_guz', 'goog.i18n.DateTimeSymbols_guz_KE', 'goog.i18n.DateTimeSymbols_gv', 'goog.i18n.DateTimeSymbols_gv_IM', 'goog.i18n.DateTimeSymbols_ha', 'goog.i18n.DateTimeSymbols_ha_Latn', 'goog.i18n.DateTimeSymbols_ha_Latn_GH', 'goog.i18n.DateTimeSymbols_ha_Latn_NE', 'goog.i18n.DateTimeSymbols_ha_Latn_NG', 'goog.i18n.DateTimeSymbols_haw_US', 'goog.i18n.DateTimeSymbols_he_IL', 'goog.i18n.DateTimeSymbols_hi_IN', 'goog.i18n.DateTimeSymbols_hr_BA', 'goog.i18n.DateTimeSymbols_hr_HR', 'goog.i18n.DateTimeSymbols_hsb', 'goog.i18n.DateTimeSymbols_hsb_DE', 'goog.i18n.DateTimeSymbols_hu_HU', 'goog.i18n.DateTimeSymbols_hy_AM', 'goog.i18n.DateTimeSymbols_id_ID', 'goog.i18n.DateTimeSymbols_ig', 'goog.i18n.DateTimeSymbols_ig_NG', 'goog.i18n.DateTimeSymbols_ii', 'goog.i18n.DateTimeSymbols_ii_CN', 'goog.i18n.DateTimeSymbols_is_IS', 'goog.i18n.DateTimeSymbols_it_CH', 'goog.i18n.DateTimeSymbols_it_IT', 'goog.i18n.DateTimeSymbols_it_SM', 'goog.i18n.DateTimeSymbols_ja_JP', 'goog.i18n.DateTimeSymbols_jgo', 'goog.i18n.DateTimeSymbols_jgo_CM', 'goog.i18n.DateTimeSymbols_jmc', 'goog.i18n.DateTimeSymbols_jmc_TZ', 'goog.i18n.DateTimeSymbols_ka_GE', 'goog.i18n.DateTimeSymbols_kab', 'goog.i18n.DateTimeSymbols_kab_DZ', 'goog.i18n.DateTimeSymbols_kam', 'goog.i18n.DateTimeSymbols_kam_KE', 'goog.i18n.DateTimeSymbols_kde', 'goog.i18n.DateTimeSymbols_kde_TZ', 'goog.i18n.DateTimeSymbols_kea', 'goog.i18n.DateTimeSymbols_kea_CV', 'goog.i18n.DateTimeSymbols_khq', 'goog.i18n.DateTimeSymbols_khq_ML', 'goog.i18n.DateTimeSymbols_ki', 'goog.i18n.DateTimeSymbols_ki_KE', 'goog.i18n.DateTimeSymbols_kk_Cyrl', 'goog.i18n.DateTimeSymbols_kk_Cyrl_KZ', 'goog.i18n.DateTimeSymbols_kkj', 'goog.i18n.DateTimeSymbols_kkj_CM', 'goog.i18n.DateTimeSymbols_kl', 'goog.i18n.DateTimeSymbols_kl_GL', 'goog.i18n.DateTimeSymbols_kln', 'goog.i18n.DateTimeSymbols_kln_KE', 'goog.i18n.DateTimeSymbols_km_KH', 'goog.i18n.DateTimeSymbols_kn_IN', 'goog.i18n.DateTimeSymbols_ko_KP', 'goog.i18n.DateTimeSymbols_ko_KR', 'goog.i18n.DateTimeSymbols_kok', 'goog.i18n.DateTimeSymbols_kok_IN', 'goog.i18n.DateTimeSymbols_ks', 'goog.i18n.DateTimeSymbols_ks_Arab', 'goog.i18n.DateTimeSymbols_ks_Arab_IN', 'goog.i18n.DateTimeSymbols_ksb', 'goog.i18n.DateTimeSymbols_ksb_TZ', 'goog.i18n.DateTimeSymbols_ksf', 'goog.i18n.DateTimeSymbols_ksf_CM', 'goog.i18n.DateTimeSymbols_ksh', 'goog.i18n.DateTimeSymbols_ksh_DE', 'goog.i18n.DateTimeSymbols_kw', 'goog.i18n.DateTimeSymbols_kw_GB', 'goog.i18n.DateTimeSymbols_ky_Cyrl', 'goog.i18n.DateTimeSymbols_ky_Cyrl_KG', 'goog.i18n.DateTimeSymbols_lag', 'goog.i18n.DateTimeSymbols_lag_TZ', 'goog.i18n.DateTimeSymbols_lb', 'goog.i18n.DateTimeSymbols_lb_LU', 'goog.i18n.DateTimeSymbols_lg', 'goog.i18n.DateTimeSymbols_lg_UG', 'goog.i18n.DateTimeSymbols_lkt', 'goog.i18n.DateTimeSymbols_lkt_US', 'goog.i18n.DateTimeSymbols_ln_AO', 'goog.i18n.DateTimeSymbols_ln_CD', 'goog.i18n.DateTimeSymbols_ln_CF', 'goog.i18n.DateTimeSymbols_ln_CG', 'goog.i18n.DateTimeSymbols_lo_LA', 'goog.i18n.DateTimeSymbols_lt_LT', 'goog.i18n.DateTimeSymbols_lu', 'goog.i18n.DateTimeSymbols_lu_CD', 'goog.i18n.DateTimeSymbols_luo', 'goog.i18n.DateTimeSymbols_luo_KE', 'goog.i18n.DateTimeSymbols_luy', 'goog.i18n.DateTimeSymbols_luy_KE', 'goog.i18n.DateTimeSymbols_lv_LV', 'goog.i18n.DateTimeSymbols_mas', 'goog.i18n.DateTimeSymbols_mas_KE', 'goog.i18n.DateTimeSymbols_mas_TZ', 'goog.i18n.DateTimeSymbols_mer', 'goog.i18n.DateTimeSymbols_mer_KE', 'goog.i18n.DateTimeSymbols_mfe', 'goog.i18n.DateTimeSymbols_mfe_MU', 'goog.i18n.DateTimeSymbols_mg', 'goog.i18n.DateTimeSymbols_mg_MG', 'goog.i18n.DateTimeSymbols_mgh', 'goog.i18n.DateTimeSymbols_mgh_MZ', 'goog.i18n.DateTimeSymbols_mgo', 'goog.i18n.DateTimeSymbols_mgo_CM', 'goog.i18n.DateTimeSymbols_mk_MK', 'goog.i18n.DateTimeSymbols_ml_IN', 'goog.i18n.DateTimeSymbols_mn_Cyrl', 'goog.i18n.DateTimeSymbols_mn_Cyrl_MN', 'goog.i18n.DateTimeSymbols_mr_IN', 'goog.i18n.DateTimeSymbols_ms_Latn', 'goog.i18n.DateTimeSymbols_ms_Latn_BN', 'goog.i18n.DateTimeSymbols_ms_Latn_MY', 'goog.i18n.DateTimeSymbols_ms_Latn_SG', 'goog.i18n.DateTimeSymbols_mt_MT', 'goog.i18n.DateTimeSymbols_mua', 'goog.i18n.DateTimeSymbols_mua_CM', 'goog.i18n.DateTimeSymbols_my_MM', 'goog.i18n.DateTimeSymbols_naq', 'goog.i18n.DateTimeSymbols_naq_NA', 'goog.i18n.DateTimeSymbols_nb_NO', 'goog.i18n.DateTimeSymbols_nb_SJ', 'goog.i18n.DateTimeSymbols_nd', 'goog.i18n.DateTimeSymbols_nd_ZW', 'goog.i18n.DateTimeSymbols_ne_IN', 'goog.i18n.DateTimeSymbols_ne_NP', 'goog.i18n.DateTimeSymbols_nl_AW', 'goog.i18n.DateTimeSymbols_nl_BE', 'goog.i18n.DateTimeSymbols_nl_BQ', 'goog.i18n.DateTimeSymbols_nl_CW', 'goog.i18n.DateTimeSymbols_nl_NL', 'goog.i18n.DateTimeSymbols_nl_SR', 'goog.i18n.DateTimeSymbols_nl_SX', 'goog.i18n.DateTimeSymbols_nmg', 'goog.i18n.DateTimeSymbols_nmg_CM', 'goog.i18n.DateTimeSymbols_nn', 'goog.i18n.DateTimeSymbols_nn_NO', 'goog.i18n.DateTimeSymbols_nnh', 'goog.i18n.DateTimeSymbols_nnh_CM', 'goog.i18n.DateTimeSymbols_nus', 'goog.i18n.DateTimeSymbols_nus_SD', 'goog.i18n.DateTimeSymbols_nyn', 'goog.i18n.DateTimeSymbols_nyn_UG', 'goog.i18n.DateTimeSymbols_om', 'goog.i18n.DateTimeSymbols_om_ET', 'goog.i18n.DateTimeSymbols_om_KE', 'goog.i18n.DateTimeSymbols_or_IN', 'goog.i18n.DateTimeSymbols_os', 'goog.i18n.DateTimeSymbols_os_GE', 'goog.i18n.DateTimeSymbols_os_RU', 'goog.i18n.DateTimeSymbols_pa_Arab', 'goog.i18n.DateTimeSymbols_pa_Arab_PK', 'goog.i18n.DateTimeSymbols_pa_Guru', 'goog.i18n.DateTimeSymbols_pa_Guru_IN', 'goog.i18n.DateTimeSymbols_pl_PL', 'goog.i18n.DateTimeSymbols_ps', 'goog.i18n.DateTimeSymbols_ps_AF', 'goog.i18n.DateTimeSymbols_pt_AO', 'goog.i18n.DateTimeSymbols_pt_CV', 'goog.i18n.DateTimeSymbols_pt_GW', 'goog.i18n.DateTimeSymbols_pt_MO', 'goog.i18n.DateTimeSymbols_pt_MZ', 'goog.i18n.DateTimeSymbols_pt_ST', 'goog.i18n.DateTimeSymbols_pt_TL', 'goog.i18n.DateTimeSymbols_qu', 'goog.i18n.DateTimeSymbols_qu_BO', 'goog.i18n.DateTimeSymbols_qu_EC', 'goog.i18n.DateTimeSymbols_qu_PE', 'goog.i18n.DateTimeSymbols_rm', 'goog.i18n.DateTimeSymbols_rm_CH', 'goog.i18n.DateTimeSymbols_rn', 'goog.i18n.DateTimeSymbols_rn_BI', 'goog.i18n.DateTimeSymbols_ro_MD', 'goog.i18n.DateTimeSymbols_ro_RO', 'goog.i18n.DateTimeSymbols_rof', 'goog.i18n.DateTimeSymbols_rof_TZ', 'goog.i18n.DateTimeSymbols_ru_BY', 'goog.i18n.DateTimeSymbols_ru_KG', 'goog.i18n.DateTimeSymbols_ru_KZ', 'goog.i18n.DateTimeSymbols_ru_MD', 'goog.i18n.DateTimeSymbols_ru_RU', 'goog.i18n.DateTimeSymbols_ru_UA', 'goog.i18n.DateTimeSymbols_rw', 'goog.i18n.DateTimeSymbols_rw_RW', 'goog.i18n.DateTimeSymbols_rwk', 'goog.i18n.DateTimeSymbols_rwk_TZ', 'goog.i18n.DateTimeSymbols_sah', 'goog.i18n.DateTimeSymbols_sah_RU', 'goog.i18n.DateTimeSymbols_saq', 'goog.i18n.DateTimeSymbols_saq_KE', 'goog.i18n.DateTimeSymbols_sbp', 'goog.i18n.DateTimeSymbols_sbp_TZ', 'goog.i18n.DateTimeSymbols_se', 'goog.i18n.DateTimeSymbols_se_FI', 'goog.i18n.DateTimeSymbols_se_NO', 'goog.i18n.DateTimeSymbols_se_SE', 'goog.i18n.DateTimeSymbols_seh', 'goog.i18n.DateTimeSymbols_seh_MZ', 'goog.i18n.DateTimeSymbols_ses', 'goog.i18n.DateTimeSymbols_ses_ML', 'goog.i18n.DateTimeSymbols_sg', 'goog.i18n.DateTimeSymbols_sg_CF', 'goog.i18n.DateTimeSymbols_shi', 'goog.i18n.DateTimeSymbols_shi_Latn', 'goog.i18n.DateTimeSymbols_shi_Latn_MA', 'goog.i18n.DateTimeSymbols_shi_Tfng', 'goog.i18n.DateTimeSymbols_shi_Tfng_MA', 'goog.i18n.DateTimeSymbols_si_LK', 'goog.i18n.DateTimeSymbols_sk_SK', 'goog.i18n.DateTimeSymbols_sl_SI', 'goog.i18n.DateTimeSymbols_smn', 'goog.i18n.DateTimeSymbols_smn_FI', 'goog.i18n.DateTimeSymbols_sn', 'goog.i18n.DateTimeSymbols_sn_ZW', 'goog.i18n.DateTimeSymbols_so', 'goog.i18n.DateTimeSymbols_so_DJ', 'goog.i18n.DateTimeSymbols_so_ET', 'goog.i18n.DateTimeSymbols_so_KE', 'goog.i18n.DateTimeSymbols_so_SO', 'goog.i18n.DateTimeSymbols_sq_AL', 'goog.i18n.DateTimeSymbols_sq_MK', 'goog.i18n.DateTimeSymbols_sq_XK', 'goog.i18n.DateTimeSymbols_sr_Cyrl', 'goog.i18n.DateTimeSymbols_sr_Cyrl_BA', 'goog.i18n.DateTimeSymbols_sr_Cyrl_ME', 'goog.i18n.DateTimeSymbols_sr_Cyrl_RS', 'goog.i18n.DateTimeSymbols_sr_Cyrl_XK', 'goog.i18n.DateTimeSymbols_sr_Latn_BA', 'goog.i18n.DateTimeSymbols_sr_Latn_ME', 'goog.i18n.DateTimeSymbols_sr_Latn_RS', 'goog.i18n.DateTimeSymbols_sr_Latn_XK', 'goog.i18n.DateTimeSymbols_sv_AX', 'goog.i18n.DateTimeSymbols_sv_FI', 'goog.i18n.DateTimeSymbols_sv_SE', 'goog.i18n.DateTimeSymbols_sw_CD', 'goog.i18n.DateTimeSymbols_sw_KE', 'goog.i18n.DateTimeSymbols_sw_TZ', 'goog.i18n.DateTimeSymbols_sw_UG', 'goog.i18n.DateTimeSymbols_ta_IN', 'goog.i18n.DateTimeSymbols_ta_LK', 'goog.i18n.DateTimeSymbols_ta_MY', 'goog.i18n.DateTimeSymbols_ta_SG', 'goog.i18n.DateTimeSymbols_te_IN', 'goog.i18n.DateTimeSymbols_teo', 'goog.i18n.DateTimeSymbols_teo_KE', 'goog.i18n.DateTimeSymbols_teo_UG', 'goog.i18n.DateTimeSymbols_th_TH', 'goog.i18n.DateTimeSymbols_ti', 'goog.i18n.DateTimeSymbols_ti_ER', 'goog.i18n.DateTimeSymbols_ti_ET', 'goog.i18n.DateTimeSymbols_to', 'goog.i18n.DateTimeSymbols_to_TO', 'goog.i18n.DateTimeSymbols_tr_CY', 'goog.i18n.DateTimeSymbols_tr_TR', 'goog.i18n.DateTimeSymbols_twq', 'goog.i18n.DateTimeSymbols_twq_NE', 'goog.i18n.DateTimeSymbols_tzm', 'goog.i18n.DateTimeSymbols_tzm_Latn', 'goog.i18n.DateTimeSymbols_tzm_Latn_MA', 'goog.i18n.DateTimeSymbols_ug', 'goog.i18n.DateTimeSymbols_ug_Arab', 'goog.i18n.DateTimeSymbols_ug_Arab_CN', 'goog.i18n.DateTimeSymbols_uk_UA', 'goog.i18n.DateTimeSymbols_ur_IN', 'goog.i18n.DateTimeSymbols_ur_PK', 'goog.i18n.DateTimeSymbols_uz_Arab', 'goog.i18n.DateTimeSymbols_uz_Arab_AF', 'goog.i18n.DateTimeSymbols_uz_Cyrl', 'goog.i18n.DateTimeSymbols_uz_Cyrl_UZ', 'goog.i18n.DateTimeSymbols_uz_Latn', 'goog.i18n.DateTimeSymbols_uz_Latn_UZ', 'goog.i18n.DateTimeSymbols_vai', 'goog.i18n.DateTimeSymbols_vai_Latn', 'goog.i18n.DateTimeSymbols_vai_Latn_LR', 'goog.i18n.DateTimeSymbols_vai_Vaii', 'goog.i18n.DateTimeSymbols_vai_Vaii_LR', 'goog.i18n.DateTimeSymbols_vi_VN', 'goog.i18n.DateTimeSymbols_vun', 'goog.i18n.DateTimeSymbols_vun_TZ', 'goog.i18n.DateTimeSymbols_wae', 'goog.i18n.DateTimeSymbols_wae_CH', 'goog.i18n.DateTimeSymbols_xog', 'goog.i18n.DateTimeSymbols_xog_UG', 'goog.i18n.DateTimeSymbols_yav', 'goog.i18n.DateTimeSymbols_yav_CM', 'goog.i18n.DateTimeSymbols_yi', 'goog.i18n.DateTimeSymbols_yi_001', 'goog.i18n.DateTimeSymbols_yo', 'goog.i18n.DateTimeSymbols_yo_BJ', 'goog.i18n.DateTimeSymbols_yo_NG', 'goog.i18n.DateTimeSymbols_zgh', 'goog.i18n.DateTimeSymbols_zgh_MA', 'goog.i18n.DateTimeSymbols_zh_Hans', 'goog.i18n.DateTimeSymbols_zh_Hans_CN', 'goog.i18n.DateTimeSymbols_zh_Hans_HK', 'goog.i18n.DateTimeSymbols_zh_Hans_MO', 'goog.i18n.DateTimeSymbols_zh_Hans_SG', 'goog.i18n.DateTimeSymbols_zh_Hant', 'goog.i18n.DateTimeSymbols_zh_Hant_HK', 'goog.i18n.DateTimeSymbols_zh_Hant_MO', 'goog.i18n.DateTimeSymbols_zh_Hant_TW', 'goog.i18n.DateTimeSymbols_zu_ZA'], ['goog.i18n.DateTimeSymbols'], false); -goog.addDependency('i18n/graphemebreak.js', ['goog.i18n.GraphemeBreak'], ['goog.structs.InversionMap'], false); -goog.addDependency('i18n/graphemebreak_test.js', ['goog.i18n.GraphemeBreakTest'], ['goog.i18n.GraphemeBreak', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/messageformat.js', ['goog.i18n.MessageFormat'], ['goog.asserts', 'goog.i18n.NumberFormat', 'goog.i18n.ordinalRules', 'goog.i18n.pluralRules'], false); -goog.addDependency('i18n/messageformat_test.js', ['goog.i18n.MessageFormatTest'], ['goog.i18n.MessageFormat', 'goog.i18n.NumberFormatSymbols_hr', 'goog.i18n.pluralRules', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/mime.js', ['goog.i18n.mime', 'goog.i18n.mime.encode'], ['goog.array'], false); -goog.addDependency('i18n/mime_test.js', ['goog.i18n.mime.encodeTest'], ['goog.i18n.mime.encode', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/numberformat.js', ['goog.i18n.NumberFormat', 'goog.i18n.NumberFormat.CurrencyStyle', 'goog.i18n.NumberFormat.Format'], ['goog.asserts', 'goog.i18n.CompactNumberFormatSymbols', 'goog.i18n.NumberFormatSymbols', 'goog.i18n.currency', 'goog.math'], false); -goog.addDependency('i18n/numberformat_test.js', ['goog.i18n.NumberFormatTest'], ['goog.i18n.CompactNumberFormatSymbols', 'goog.i18n.CompactNumberFormatSymbols_de', 'goog.i18n.CompactNumberFormatSymbols_en', 'goog.i18n.CompactNumberFormatSymbols_fr', 'goog.i18n.NumberFormat', 'goog.i18n.NumberFormatSymbols', 'goog.i18n.NumberFormatSymbols_de', 'goog.i18n.NumberFormatSymbols_en', 'goog.i18n.NumberFormatSymbols_fr', 'goog.i18n.NumberFormatSymbols_pl', 'goog.i18n.NumberFormatSymbols_ro', 'goog.testing.ExpectedFailures', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('i18n/numberformatsymbols.js', ['goog.i18n.NumberFormatSymbols', 'goog.i18n.NumberFormatSymbols_af', 'goog.i18n.NumberFormatSymbols_af_ZA', 'goog.i18n.NumberFormatSymbols_am', 'goog.i18n.NumberFormatSymbols_am_ET', 'goog.i18n.NumberFormatSymbols_ar', 'goog.i18n.NumberFormatSymbols_ar_001', 'goog.i18n.NumberFormatSymbols_ar_EG', 'goog.i18n.NumberFormatSymbols_az', 'goog.i18n.NumberFormatSymbols_az_Latn', 'goog.i18n.NumberFormatSymbols_az_Latn_AZ', 'goog.i18n.NumberFormatSymbols_be', 'goog.i18n.NumberFormatSymbols_be_BY', 'goog.i18n.NumberFormatSymbols_bg', 'goog.i18n.NumberFormatSymbols_bg_BG', 'goog.i18n.NumberFormatSymbols_bn', 'goog.i18n.NumberFormatSymbols_bn_BD', 'goog.i18n.NumberFormatSymbols_br', 'goog.i18n.NumberFormatSymbols_br_FR', 'goog.i18n.NumberFormatSymbols_bs', 'goog.i18n.NumberFormatSymbols_bs_Latn', 'goog.i18n.NumberFormatSymbols_bs_Latn_BA', 'goog.i18n.NumberFormatSymbols_ca', 'goog.i18n.NumberFormatSymbols_ca_AD', 'goog.i18n.NumberFormatSymbols_ca_ES', 'goog.i18n.NumberFormatSymbols_ca_ES_VALENCIA', 'goog.i18n.NumberFormatSymbols_ca_FR', 'goog.i18n.NumberFormatSymbols_ca_IT', 'goog.i18n.NumberFormatSymbols_chr', 'goog.i18n.NumberFormatSymbols_chr_US', 'goog.i18n.NumberFormatSymbols_cs', 'goog.i18n.NumberFormatSymbols_cs_CZ', 'goog.i18n.NumberFormatSymbols_cy', 'goog.i18n.NumberFormatSymbols_cy_GB', 'goog.i18n.NumberFormatSymbols_da', 'goog.i18n.NumberFormatSymbols_da_DK', 'goog.i18n.NumberFormatSymbols_da_GL', 'goog.i18n.NumberFormatSymbols_de', 'goog.i18n.NumberFormatSymbols_de_AT', 'goog.i18n.NumberFormatSymbols_de_BE', 'goog.i18n.NumberFormatSymbols_de_CH', 'goog.i18n.NumberFormatSymbols_de_DE', 'goog.i18n.NumberFormatSymbols_de_LU', 'goog.i18n.NumberFormatSymbols_el', 'goog.i18n.NumberFormatSymbols_el_CY', 'goog.i18n.NumberFormatSymbols_el_GR', 'goog.i18n.NumberFormatSymbols_en', 'goog.i18n.NumberFormatSymbols_en_001', 'goog.i18n.NumberFormatSymbols_en_AS', 'goog.i18n.NumberFormatSymbols_en_AU', 'goog.i18n.NumberFormatSymbols_en_CA', 'goog.i18n.NumberFormatSymbols_en_DG', 'goog.i18n.NumberFormatSymbols_en_FM', 'goog.i18n.NumberFormatSymbols_en_GB', 'goog.i18n.NumberFormatSymbols_en_GU', 'goog.i18n.NumberFormatSymbols_en_IE', 'goog.i18n.NumberFormatSymbols_en_IN', 'goog.i18n.NumberFormatSymbols_en_IO', 'goog.i18n.NumberFormatSymbols_en_MH', 'goog.i18n.NumberFormatSymbols_en_MP', 'goog.i18n.NumberFormatSymbols_en_PR', 'goog.i18n.NumberFormatSymbols_en_PW', 'goog.i18n.NumberFormatSymbols_en_SG', 'goog.i18n.NumberFormatSymbols_en_TC', 'goog.i18n.NumberFormatSymbols_en_UM', 'goog.i18n.NumberFormatSymbols_en_US', 'goog.i18n.NumberFormatSymbols_en_VG', 'goog.i18n.NumberFormatSymbols_en_VI', 'goog.i18n.NumberFormatSymbols_en_ZA', 'goog.i18n.NumberFormatSymbols_en_ZW', 'goog.i18n.NumberFormatSymbols_es', 'goog.i18n.NumberFormatSymbols_es_419', 'goog.i18n.NumberFormatSymbols_es_EA', 'goog.i18n.NumberFormatSymbols_es_ES', 'goog.i18n.NumberFormatSymbols_es_IC', 'goog.i18n.NumberFormatSymbols_es_MX', 'goog.i18n.NumberFormatSymbols_es_US', 'goog.i18n.NumberFormatSymbols_et', 'goog.i18n.NumberFormatSymbols_et_EE', 'goog.i18n.NumberFormatSymbols_eu', 'goog.i18n.NumberFormatSymbols_eu_ES', 'goog.i18n.NumberFormatSymbols_fa', 'goog.i18n.NumberFormatSymbols_fa_IR', 'goog.i18n.NumberFormatSymbols_fi', 'goog.i18n.NumberFormatSymbols_fi_FI', 'goog.i18n.NumberFormatSymbols_fil', 'goog.i18n.NumberFormatSymbols_fil_PH', 'goog.i18n.NumberFormatSymbols_fr', 'goog.i18n.NumberFormatSymbols_fr_BL', 'goog.i18n.NumberFormatSymbols_fr_CA', 'goog.i18n.NumberFormatSymbols_fr_FR', 'goog.i18n.NumberFormatSymbols_fr_GF', 'goog.i18n.NumberFormatSymbols_fr_GP', 'goog.i18n.NumberFormatSymbols_fr_MC', 'goog.i18n.NumberFormatSymbols_fr_MF', 'goog.i18n.NumberFormatSymbols_fr_MQ', 'goog.i18n.NumberFormatSymbols_fr_PM', 'goog.i18n.NumberFormatSymbols_fr_RE', 'goog.i18n.NumberFormatSymbols_fr_YT', 'goog.i18n.NumberFormatSymbols_ga', 'goog.i18n.NumberFormatSymbols_ga_IE', 'goog.i18n.NumberFormatSymbols_gl', 'goog.i18n.NumberFormatSymbols_gl_ES', 'goog.i18n.NumberFormatSymbols_gsw', 'goog.i18n.NumberFormatSymbols_gsw_CH', 'goog.i18n.NumberFormatSymbols_gsw_LI', 'goog.i18n.NumberFormatSymbols_gu', 'goog.i18n.NumberFormatSymbols_gu_IN', 'goog.i18n.NumberFormatSymbols_haw', 'goog.i18n.NumberFormatSymbols_haw_US', 'goog.i18n.NumberFormatSymbols_he', 'goog.i18n.NumberFormatSymbols_he_IL', 'goog.i18n.NumberFormatSymbols_hi', 'goog.i18n.NumberFormatSymbols_hi_IN', 'goog.i18n.NumberFormatSymbols_hr', 'goog.i18n.NumberFormatSymbols_hr_HR', 'goog.i18n.NumberFormatSymbols_hu', 'goog.i18n.NumberFormatSymbols_hu_HU', 'goog.i18n.NumberFormatSymbols_hy', 'goog.i18n.NumberFormatSymbols_hy_AM', 'goog.i18n.NumberFormatSymbols_id', 'goog.i18n.NumberFormatSymbols_id_ID', 'goog.i18n.NumberFormatSymbols_in', 'goog.i18n.NumberFormatSymbols_is', 'goog.i18n.NumberFormatSymbols_is_IS', 'goog.i18n.NumberFormatSymbols_it', 'goog.i18n.NumberFormatSymbols_it_IT', 'goog.i18n.NumberFormatSymbols_it_SM', 'goog.i18n.NumberFormatSymbols_iw', 'goog.i18n.NumberFormatSymbols_ja', 'goog.i18n.NumberFormatSymbols_ja_JP', 'goog.i18n.NumberFormatSymbols_ka', 'goog.i18n.NumberFormatSymbols_ka_GE', 'goog.i18n.NumberFormatSymbols_kk', 'goog.i18n.NumberFormatSymbols_kk_Cyrl', 'goog.i18n.NumberFormatSymbols_kk_Cyrl_KZ', 'goog.i18n.NumberFormatSymbols_km', 'goog.i18n.NumberFormatSymbols_km_KH', 'goog.i18n.NumberFormatSymbols_kn', 'goog.i18n.NumberFormatSymbols_kn_IN', 'goog.i18n.NumberFormatSymbols_ko', 'goog.i18n.NumberFormatSymbols_ko_KR', 'goog.i18n.NumberFormatSymbols_ky', 'goog.i18n.NumberFormatSymbols_ky_Cyrl', 'goog.i18n.NumberFormatSymbols_ky_Cyrl_KG', 'goog.i18n.NumberFormatSymbols_ln', 'goog.i18n.NumberFormatSymbols_ln_CD', 'goog.i18n.NumberFormatSymbols_lo', 'goog.i18n.NumberFormatSymbols_lo_LA', 'goog.i18n.NumberFormatSymbols_lt', 'goog.i18n.NumberFormatSymbols_lt_LT', 'goog.i18n.NumberFormatSymbols_lv', 'goog.i18n.NumberFormatSymbols_lv_LV', 'goog.i18n.NumberFormatSymbols_mk', 'goog.i18n.NumberFormatSymbols_mk_MK', 'goog.i18n.NumberFormatSymbols_ml', 'goog.i18n.NumberFormatSymbols_ml_IN', 'goog.i18n.NumberFormatSymbols_mn', 'goog.i18n.NumberFormatSymbols_mn_Cyrl', 'goog.i18n.NumberFormatSymbols_mn_Cyrl_MN', 'goog.i18n.NumberFormatSymbols_mr', 'goog.i18n.NumberFormatSymbols_mr_IN', 'goog.i18n.NumberFormatSymbols_ms', 'goog.i18n.NumberFormatSymbols_ms_Latn', 'goog.i18n.NumberFormatSymbols_ms_Latn_MY', 'goog.i18n.NumberFormatSymbols_mt', 'goog.i18n.NumberFormatSymbols_mt_MT', 'goog.i18n.NumberFormatSymbols_my', 'goog.i18n.NumberFormatSymbols_my_MM', 'goog.i18n.NumberFormatSymbols_nb', 'goog.i18n.NumberFormatSymbols_nb_NO', 'goog.i18n.NumberFormatSymbols_nb_SJ', 'goog.i18n.NumberFormatSymbols_ne', 'goog.i18n.NumberFormatSymbols_ne_NP', 'goog.i18n.NumberFormatSymbols_nl', 'goog.i18n.NumberFormatSymbols_nl_NL', 'goog.i18n.NumberFormatSymbols_no', 'goog.i18n.NumberFormatSymbols_no_NO', 'goog.i18n.NumberFormatSymbols_or', 'goog.i18n.NumberFormatSymbols_or_IN', 'goog.i18n.NumberFormatSymbols_pa', 'goog.i18n.NumberFormatSymbols_pa_Guru', 'goog.i18n.NumberFormatSymbols_pa_Guru_IN', 'goog.i18n.NumberFormatSymbols_pl', 'goog.i18n.NumberFormatSymbols_pl_PL', 'goog.i18n.NumberFormatSymbols_pt', 'goog.i18n.NumberFormatSymbols_pt_BR', 'goog.i18n.NumberFormatSymbols_pt_PT', 'goog.i18n.NumberFormatSymbols_ro', 'goog.i18n.NumberFormatSymbols_ro_RO', 'goog.i18n.NumberFormatSymbols_ru', 'goog.i18n.NumberFormatSymbols_ru_RU', 'goog.i18n.NumberFormatSymbols_si', 'goog.i18n.NumberFormatSymbols_si_LK', 'goog.i18n.NumberFormatSymbols_sk', 'goog.i18n.NumberFormatSymbols_sk_SK', 'goog.i18n.NumberFormatSymbols_sl', 'goog.i18n.NumberFormatSymbols_sl_SI', 'goog.i18n.NumberFormatSymbols_sq', 'goog.i18n.NumberFormatSymbols_sq_AL', 'goog.i18n.NumberFormatSymbols_sr', 'goog.i18n.NumberFormatSymbols_sr_Cyrl', 'goog.i18n.NumberFormatSymbols_sr_Cyrl_RS', 'goog.i18n.NumberFormatSymbols_sr_Latn', 'goog.i18n.NumberFormatSymbols_sr_Latn_RS', 'goog.i18n.NumberFormatSymbols_sv', 'goog.i18n.NumberFormatSymbols_sv_SE', 'goog.i18n.NumberFormatSymbols_sw', 'goog.i18n.NumberFormatSymbols_sw_TZ', 'goog.i18n.NumberFormatSymbols_ta', 'goog.i18n.NumberFormatSymbols_ta_IN', 'goog.i18n.NumberFormatSymbols_te', 'goog.i18n.NumberFormatSymbols_te_IN', 'goog.i18n.NumberFormatSymbols_th', 'goog.i18n.NumberFormatSymbols_th_TH', 'goog.i18n.NumberFormatSymbols_tl', 'goog.i18n.NumberFormatSymbols_tr', 'goog.i18n.NumberFormatSymbols_tr_TR', 'goog.i18n.NumberFormatSymbols_uk', 'goog.i18n.NumberFormatSymbols_uk_UA', 'goog.i18n.NumberFormatSymbols_ur', 'goog.i18n.NumberFormatSymbols_ur_PK', 'goog.i18n.NumberFormatSymbols_uz', 'goog.i18n.NumberFormatSymbols_uz_Latn', 'goog.i18n.NumberFormatSymbols_uz_Latn_UZ', 'goog.i18n.NumberFormatSymbols_vi', 'goog.i18n.NumberFormatSymbols_vi_VN', 'goog.i18n.NumberFormatSymbols_zh', 'goog.i18n.NumberFormatSymbols_zh_CN', 'goog.i18n.NumberFormatSymbols_zh_HK', 'goog.i18n.NumberFormatSymbols_zh_Hans', 'goog.i18n.NumberFormatSymbols_zh_Hans_CN', 'goog.i18n.NumberFormatSymbols_zh_TW', 'goog.i18n.NumberFormatSymbols_zu', 'goog.i18n.NumberFormatSymbols_zu_ZA'], [], false); -goog.addDependency('i18n/numberformatsymbolsext.js', ['goog.i18n.NumberFormatSymbolsExt', 'goog.i18n.NumberFormatSymbols_af_NA', 'goog.i18n.NumberFormatSymbols_agq', 'goog.i18n.NumberFormatSymbols_agq_CM', 'goog.i18n.NumberFormatSymbols_ak', 'goog.i18n.NumberFormatSymbols_ak_GH', 'goog.i18n.NumberFormatSymbols_ar_AE', 'goog.i18n.NumberFormatSymbols_ar_BH', 'goog.i18n.NumberFormatSymbols_ar_DJ', 'goog.i18n.NumberFormatSymbols_ar_DZ', 'goog.i18n.NumberFormatSymbols_ar_EH', 'goog.i18n.NumberFormatSymbols_ar_ER', 'goog.i18n.NumberFormatSymbols_ar_IL', 'goog.i18n.NumberFormatSymbols_ar_IQ', 'goog.i18n.NumberFormatSymbols_ar_JO', 'goog.i18n.NumberFormatSymbols_ar_KM', 'goog.i18n.NumberFormatSymbols_ar_KW', 'goog.i18n.NumberFormatSymbols_ar_LB', 'goog.i18n.NumberFormatSymbols_ar_LY', 'goog.i18n.NumberFormatSymbols_ar_MA', 'goog.i18n.NumberFormatSymbols_ar_MR', 'goog.i18n.NumberFormatSymbols_ar_OM', 'goog.i18n.NumberFormatSymbols_ar_PS', 'goog.i18n.NumberFormatSymbols_ar_QA', 'goog.i18n.NumberFormatSymbols_ar_SA', 'goog.i18n.NumberFormatSymbols_ar_SD', 'goog.i18n.NumberFormatSymbols_ar_SO', 'goog.i18n.NumberFormatSymbols_ar_SS', 'goog.i18n.NumberFormatSymbols_ar_SY', 'goog.i18n.NumberFormatSymbols_ar_TD', 'goog.i18n.NumberFormatSymbols_ar_TN', 'goog.i18n.NumberFormatSymbols_ar_YE', 'goog.i18n.NumberFormatSymbols_as', 'goog.i18n.NumberFormatSymbols_as_IN', 'goog.i18n.NumberFormatSymbols_asa', 'goog.i18n.NumberFormatSymbols_asa_TZ', 'goog.i18n.NumberFormatSymbols_ast', 'goog.i18n.NumberFormatSymbols_ast_ES', 'goog.i18n.NumberFormatSymbols_az_Cyrl', 'goog.i18n.NumberFormatSymbols_az_Cyrl_AZ', 'goog.i18n.NumberFormatSymbols_bas', 'goog.i18n.NumberFormatSymbols_bas_CM', 'goog.i18n.NumberFormatSymbols_bem', 'goog.i18n.NumberFormatSymbols_bem_ZM', 'goog.i18n.NumberFormatSymbols_bez', 'goog.i18n.NumberFormatSymbols_bez_TZ', 'goog.i18n.NumberFormatSymbols_bm', 'goog.i18n.NumberFormatSymbols_bm_Latn', 'goog.i18n.NumberFormatSymbols_bm_Latn_ML', 'goog.i18n.NumberFormatSymbols_bn_IN', 'goog.i18n.NumberFormatSymbols_bo', 'goog.i18n.NumberFormatSymbols_bo_CN', 'goog.i18n.NumberFormatSymbols_bo_IN', 'goog.i18n.NumberFormatSymbols_brx', 'goog.i18n.NumberFormatSymbols_brx_IN', 'goog.i18n.NumberFormatSymbols_bs_Cyrl', 'goog.i18n.NumberFormatSymbols_bs_Cyrl_BA', 'goog.i18n.NumberFormatSymbols_cgg', 'goog.i18n.NumberFormatSymbols_cgg_UG', 'goog.i18n.NumberFormatSymbols_ckb', 'goog.i18n.NumberFormatSymbols_ckb_Arab', 'goog.i18n.NumberFormatSymbols_ckb_Arab_IQ', 'goog.i18n.NumberFormatSymbols_ckb_Arab_IR', 'goog.i18n.NumberFormatSymbols_ckb_IQ', 'goog.i18n.NumberFormatSymbols_ckb_IR', 'goog.i18n.NumberFormatSymbols_ckb_Latn', 'goog.i18n.NumberFormatSymbols_ckb_Latn_IQ', 'goog.i18n.NumberFormatSymbols_dav', 'goog.i18n.NumberFormatSymbols_dav_KE', 'goog.i18n.NumberFormatSymbols_de_LI', 'goog.i18n.NumberFormatSymbols_dje', 'goog.i18n.NumberFormatSymbols_dje_NE', 'goog.i18n.NumberFormatSymbols_dsb', 'goog.i18n.NumberFormatSymbols_dsb_DE', 'goog.i18n.NumberFormatSymbols_dua', 'goog.i18n.NumberFormatSymbols_dua_CM', 'goog.i18n.NumberFormatSymbols_dyo', 'goog.i18n.NumberFormatSymbols_dyo_SN', 'goog.i18n.NumberFormatSymbols_dz', 'goog.i18n.NumberFormatSymbols_dz_BT', 'goog.i18n.NumberFormatSymbols_ebu', 'goog.i18n.NumberFormatSymbols_ebu_KE', 'goog.i18n.NumberFormatSymbols_ee', 'goog.i18n.NumberFormatSymbols_ee_GH', 'goog.i18n.NumberFormatSymbols_ee_TG', 'goog.i18n.NumberFormatSymbols_en_150', 'goog.i18n.NumberFormatSymbols_en_AG', 'goog.i18n.NumberFormatSymbols_en_AI', 'goog.i18n.NumberFormatSymbols_en_BB', 'goog.i18n.NumberFormatSymbols_en_BE', 'goog.i18n.NumberFormatSymbols_en_BM', 'goog.i18n.NumberFormatSymbols_en_BS', 'goog.i18n.NumberFormatSymbols_en_BW', 'goog.i18n.NumberFormatSymbols_en_BZ', 'goog.i18n.NumberFormatSymbols_en_CC', 'goog.i18n.NumberFormatSymbols_en_CK', 'goog.i18n.NumberFormatSymbols_en_CM', 'goog.i18n.NumberFormatSymbols_en_CX', 'goog.i18n.NumberFormatSymbols_en_DM', 'goog.i18n.NumberFormatSymbols_en_ER', 'goog.i18n.NumberFormatSymbols_en_FJ', 'goog.i18n.NumberFormatSymbols_en_FK', 'goog.i18n.NumberFormatSymbols_en_GD', 'goog.i18n.NumberFormatSymbols_en_GG', 'goog.i18n.NumberFormatSymbols_en_GH', 'goog.i18n.NumberFormatSymbols_en_GI', 'goog.i18n.NumberFormatSymbols_en_GM', 'goog.i18n.NumberFormatSymbols_en_GY', 'goog.i18n.NumberFormatSymbols_en_HK', 'goog.i18n.NumberFormatSymbols_en_IM', 'goog.i18n.NumberFormatSymbols_en_JE', 'goog.i18n.NumberFormatSymbols_en_JM', 'goog.i18n.NumberFormatSymbols_en_KE', 'goog.i18n.NumberFormatSymbols_en_KI', 'goog.i18n.NumberFormatSymbols_en_KN', 'goog.i18n.NumberFormatSymbols_en_KY', 'goog.i18n.NumberFormatSymbols_en_LC', 'goog.i18n.NumberFormatSymbols_en_LR', 'goog.i18n.NumberFormatSymbols_en_LS', 'goog.i18n.NumberFormatSymbols_en_MG', 'goog.i18n.NumberFormatSymbols_en_MO', 'goog.i18n.NumberFormatSymbols_en_MS', 'goog.i18n.NumberFormatSymbols_en_MT', 'goog.i18n.NumberFormatSymbols_en_MU', 'goog.i18n.NumberFormatSymbols_en_MW', 'goog.i18n.NumberFormatSymbols_en_MY', 'goog.i18n.NumberFormatSymbols_en_NA', 'goog.i18n.NumberFormatSymbols_en_NF', 'goog.i18n.NumberFormatSymbols_en_NG', 'goog.i18n.NumberFormatSymbols_en_NR', 'goog.i18n.NumberFormatSymbols_en_NU', 'goog.i18n.NumberFormatSymbols_en_NZ', 'goog.i18n.NumberFormatSymbols_en_PG', 'goog.i18n.NumberFormatSymbols_en_PH', 'goog.i18n.NumberFormatSymbols_en_PK', 'goog.i18n.NumberFormatSymbols_en_PN', 'goog.i18n.NumberFormatSymbols_en_RW', 'goog.i18n.NumberFormatSymbols_en_SB', 'goog.i18n.NumberFormatSymbols_en_SC', 'goog.i18n.NumberFormatSymbols_en_SD', 'goog.i18n.NumberFormatSymbols_en_SH', 'goog.i18n.NumberFormatSymbols_en_SL', 'goog.i18n.NumberFormatSymbols_en_SS', 'goog.i18n.NumberFormatSymbols_en_SX', 'goog.i18n.NumberFormatSymbols_en_SZ', 'goog.i18n.NumberFormatSymbols_en_TK', 'goog.i18n.NumberFormatSymbols_en_TO', 'goog.i18n.NumberFormatSymbols_en_TT', 'goog.i18n.NumberFormatSymbols_en_TV', 'goog.i18n.NumberFormatSymbols_en_TZ', 'goog.i18n.NumberFormatSymbols_en_UG', 'goog.i18n.NumberFormatSymbols_en_VC', 'goog.i18n.NumberFormatSymbols_en_VU', 'goog.i18n.NumberFormatSymbols_en_WS', 'goog.i18n.NumberFormatSymbols_en_ZM', 'goog.i18n.NumberFormatSymbols_eo', 'goog.i18n.NumberFormatSymbols_eo_001', 'goog.i18n.NumberFormatSymbols_es_AR', 'goog.i18n.NumberFormatSymbols_es_BO', 'goog.i18n.NumberFormatSymbols_es_CL', 'goog.i18n.NumberFormatSymbols_es_CO', 'goog.i18n.NumberFormatSymbols_es_CR', 'goog.i18n.NumberFormatSymbols_es_CU', 'goog.i18n.NumberFormatSymbols_es_DO', 'goog.i18n.NumberFormatSymbols_es_EC', 'goog.i18n.NumberFormatSymbols_es_GQ', 'goog.i18n.NumberFormatSymbols_es_GT', 'goog.i18n.NumberFormatSymbols_es_HN', 'goog.i18n.NumberFormatSymbols_es_NI', 'goog.i18n.NumberFormatSymbols_es_PA', 'goog.i18n.NumberFormatSymbols_es_PE', 'goog.i18n.NumberFormatSymbols_es_PH', 'goog.i18n.NumberFormatSymbols_es_PR', 'goog.i18n.NumberFormatSymbols_es_PY', 'goog.i18n.NumberFormatSymbols_es_SV', 'goog.i18n.NumberFormatSymbols_es_UY', 'goog.i18n.NumberFormatSymbols_es_VE', 'goog.i18n.NumberFormatSymbols_ewo', 'goog.i18n.NumberFormatSymbols_ewo_CM', 'goog.i18n.NumberFormatSymbols_fa_AF', 'goog.i18n.NumberFormatSymbols_ff', 'goog.i18n.NumberFormatSymbols_ff_CM', 'goog.i18n.NumberFormatSymbols_ff_GN', 'goog.i18n.NumberFormatSymbols_ff_MR', 'goog.i18n.NumberFormatSymbols_ff_SN', 'goog.i18n.NumberFormatSymbols_fo', 'goog.i18n.NumberFormatSymbols_fo_FO', 'goog.i18n.NumberFormatSymbols_fr_BE', 'goog.i18n.NumberFormatSymbols_fr_BF', 'goog.i18n.NumberFormatSymbols_fr_BI', 'goog.i18n.NumberFormatSymbols_fr_BJ', 'goog.i18n.NumberFormatSymbols_fr_CD', 'goog.i18n.NumberFormatSymbols_fr_CF', 'goog.i18n.NumberFormatSymbols_fr_CG', 'goog.i18n.NumberFormatSymbols_fr_CH', 'goog.i18n.NumberFormatSymbols_fr_CI', 'goog.i18n.NumberFormatSymbols_fr_CM', 'goog.i18n.NumberFormatSymbols_fr_DJ', 'goog.i18n.NumberFormatSymbols_fr_DZ', 'goog.i18n.NumberFormatSymbols_fr_GA', 'goog.i18n.NumberFormatSymbols_fr_GN', 'goog.i18n.NumberFormatSymbols_fr_GQ', 'goog.i18n.NumberFormatSymbols_fr_HT', 'goog.i18n.NumberFormatSymbols_fr_KM', 'goog.i18n.NumberFormatSymbols_fr_LU', 'goog.i18n.NumberFormatSymbols_fr_MA', 'goog.i18n.NumberFormatSymbols_fr_MG', 'goog.i18n.NumberFormatSymbols_fr_ML', 'goog.i18n.NumberFormatSymbols_fr_MR', 'goog.i18n.NumberFormatSymbols_fr_MU', 'goog.i18n.NumberFormatSymbols_fr_NC', 'goog.i18n.NumberFormatSymbols_fr_NE', 'goog.i18n.NumberFormatSymbols_fr_PF', 'goog.i18n.NumberFormatSymbols_fr_RW', 'goog.i18n.NumberFormatSymbols_fr_SC', 'goog.i18n.NumberFormatSymbols_fr_SN', 'goog.i18n.NumberFormatSymbols_fr_SY', 'goog.i18n.NumberFormatSymbols_fr_TD', 'goog.i18n.NumberFormatSymbols_fr_TG', 'goog.i18n.NumberFormatSymbols_fr_TN', 'goog.i18n.NumberFormatSymbols_fr_VU', 'goog.i18n.NumberFormatSymbols_fr_WF', 'goog.i18n.NumberFormatSymbols_fur', 'goog.i18n.NumberFormatSymbols_fur_IT', 'goog.i18n.NumberFormatSymbols_fy', 'goog.i18n.NumberFormatSymbols_fy_NL', 'goog.i18n.NumberFormatSymbols_gd', 'goog.i18n.NumberFormatSymbols_gd_GB', 'goog.i18n.NumberFormatSymbols_gsw_FR', 'goog.i18n.NumberFormatSymbols_guz', 'goog.i18n.NumberFormatSymbols_guz_KE', 'goog.i18n.NumberFormatSymbols_gv', 'goog.i18n.NumberFormatSymbols_gv_IM', 'goog.i18n.NumberFormatSymbols_ha', 'goog.i18n.NumberFormatSymbols_ha_Latn', 'goog.i18n.NumberFormatSymbols_ha_Latn_GH', 'goog.i18n.NumberFormatSymbols_ha_Latn_NE', 'goog.i18n.NumberFormatSymbols_ha_Latn_NG', 'goog.i18n.NumberFormatSymbols_hr_BA', 'goog.i18n.NumberFormatSymbols_hsb', 'goog.i18n.NumberFormatSymbols_hsb_DE', 'goog.i18n.NumberFormatSymbols_ig', 'goog.i18n.NumberFormatSymbols_ig_NG', 'goog.i18n.NumberFormatSymbols_ii', 'goog.i18n.NumberFormatSymbols_ii_CN', 'goog.i18n.NumberFormatSymbols_it_CH', 'goog.i18n.NumberFormatSymbols_jgo', 'goog.i18n.NumberFormatSymbols_jgo_CM', 'goog.i18n.NumberFormatSymbols_jmc', 'goog.i18n.NumberFormatSymbols_jmc_TZ', 'goog.i18n.NumberFormatSymbols_kab', 'goog.i18n.NumberFormatSymbols_kab_DZ', 'goog.i18n.NumberFormatSymbols_kam', 'goog.i18n.NumberFormatSymbols_kam_KE', 'goog.i18n.NumberFormatSymbols_kde', 'goog.i18n.NumberFormatSymbols_kde_TZ', 'goog.i18n.NumberFormatSymbols_kea', 'goog.i18n.NumberFormatSymbols_kea_CV', 'goog.i18n.NumberFormatSymbols_khq', 'goog.i18n.NumberFormatSymbols_khq_ML', 'goog.i18n.NumberFormatSymbols_ki', 'goog.i18n.NumberFormatSymbols_ki_KE', 'goog.i18n.NumberFormatSymbols_kkj', 'goog.i18n.NumberFormatSymbols_kkj_CM', 'goog.i18n.NumberFormatSymbols_kl', 'goog.i18n.NumberFormatSymbols_kl_GL', 'goog.i18n.NumberFormatSymbols_kln', 'goog.i18n.NumberFormatSymbols_kln_KE', 'goog.i18n.NumberFormatSymbols_ko_KP', 'goog.i18n.NumberFormatSymbols_kok', 'goog.i18n.NumberFormatSymbols_kok_IN', 'goog.i18n.NumberFormatSymbols_ks', 'goog.i18n.NumberFormatSymbols_ks_Arab', 'goog.i18n.NumberFormatSymbols_ks_Arab_IN', 'goog.i18n.NumberFormatSymbols_ksb', 'goog.i18n.NumberFormatSymbols_ksb_TZ', 'goog.i18n.NumberFormatSymbols_ksf', 'goog.i18n.NumberFormatSymbols_ksf_CM', 'goog.i18n.NumberFormatSymbols_ksh', 'goog.i18n.NumberFormatSymbols_ksh_DE', 'goog.i18n.NumberFormatSymbols_kw', 'goog.i18n.NumberFormatSymbols_kw_GB', 'goog.i18n.NumberFormatSymbols_lag', 'goog.i18n.NumberFormatSymbols_lag_TZ', 'goog.i18n.NumberFormatSymbols_lb', 'goog.i18n.NumberFormatSymbols_lb_LU', 'goog.i18n.NumberFormatSymbols_lg', 'goog.i18n.NumberFormatSymbols_lg_UG', 'goog.i18n.NumberFormatSymbols_lkt', 'goog.i18n.NumberFormatSymbols_lkt_US', 'goog.i18n.NumberFormatSymbols_ln_AO', 'goog.i18n.NumberFormatSymbols_ln_CF', 'goog.i18n.NumberFormatSymbols_ln_CG', 'goog.i18n.NumberFormatSymbols_lu', 'goog.i18n.NumberFormatSymbols_lu_CD', 'goog.i18n.NumberFormatSymbols_luo', 'goog.i18n.NumberFormatSymbols_luo_KE', 'goog.i18n.NumberFormatSymbols_luy', 'goog.i18n.NumberFormatSymbols_luy_KE', 'goog.i18n.NumberFormatSymbols_mas', 'goog.i18n.NumberFormatSymbols_mas_KE', 'goog.i18n.NumberFormatSymbols_mas_TZ', 'goog.i18n.NumberFormatSymbols_mer', 'goog.i18n.NumberFormatSymbols_mer_KE', 'goog.i18n.NumberFormatSymbols_mfe', 'goog.i18n.NumberFormatSymbols_mfe_MU', 'goog.i18n.NumberFormatSymbols_mg', 'goog.i18n.NumberFormatSymbols_mg_MG', 'goog.i18n.NumberFormatSymbols_mgh', 'goog.i18n.NumberFormatSymbols_mgh_MZ', 'goog.i18n.NumberFormatSymbols_mgo', 'goog.i18n.NumberFormatSymbols_mgo_CM', 'goog.i18n.NumberFormatSymbols_ms_Latn_BN', 'goog.i18n.NumberFormatSymbols_ms_Latn_SG', 'goog.i18n.NumberFormatSymbols_mua', 'goog.i18n.NumberFormatSymbols_mua_CM', 'goog.i18n.NumberFormatSymbols_naq', 'goog.i18n.NumberFormatSymbols_naq_NA', 'goog.i18n.NumberFormatSymbols_nd', 'goog.i18n.NumberFormatSymbols_nd_ZW', 'goog.i18n.NumberFormatSymbols_ne_IN', 'goog.i18n.NumberFormatSymbols_nl_AW', 'goog.i18n.NumberFormatSymbols_nl_BE', 'goog.i18n.NumberFormatSymbols_nl_BQ', 'goog.i18n.NumberFormatSymbols_nl_CW', 'goog.i18n.NumberFormatSymbols_nl_SR', 'goog.i18n.NumberFormatSymbols_nl_SX', 'goog.i18n.NumberFormatSymbols_nmg', 'goog.i18n.NumberFormatSymbols_nmg_CM', 'goog.i18n.NumberFormatSymbols_nn', 'goog.i18n.NumberFormatSymbols_nn_NO', 'goog.i18n.NumberFormatSymbols_nnh', 'goog.i18n.NumberFormatSymbols_nnh_CM', 'goog.i18n.NumberFormatSymbols_nus', 'goog.i18n.NumberFormatSymbols_nus_SD', 'goog.i18n.NumberFormatSymbols_nyn', 'goog.i18n.NumberFormatSymbols_nyn_UG', 'goog.i18n.NumberFormatSymbols_om', 'goog.i18n.NumberFormatSymbols_om_ET', 'goog.i18n.NumberFormatSymbols_om_KE', 'goog.i18n.NumberFormatSymbols_os', 'goog.i18n.NumberFormatSymbols_os_GE', 'goog.i18n.NumberFormatSymbols_os_RU', 'goog.i18n.NumberFormatSymbols_pa_Arab', 'goog.i18n.NumberFormatSymbols_pa_Arab_PK', 'goog.i18n.NumberFormatSymbols_ps', 'goog.i18n.NumberFormatSymbols_ps_AF', 'goog.i18n.NumberFormatSymbols_pt_AO', 'goog.i18n.NumberFormatSymbols_pt_CV', 'goog.i18n.NumberFormatSymbols_pt_GW', 'goog.i18n.NumberFormatSymbols_pt_MO', 'goog.i18n.NumberFormatSymbols_pt_MZ', 'goog.i18n.NumberFormatSymbols_pt_ST', 'goog.i18n.NumberFormatSymbols_pt_TL', 'goog.i18n.NumberFormatSymbols_qu', 'goog.i18n.NumberFormatSymbols_qu_BO', 'goog.i18n.NumberFormatSymbols_qu_EC', 'goog.i18n.NumberFormatSymbols_qu_PE', 'goog.i18n.NumberFormatSymbols_rm', 'goog.i18n.NumberFormatSymbols_rm_CH', 'goog.i18n.NumberFormatSymbols_rn', 'goog.i18n.NumberFormatSymbols_rn_BI', 'goog.i18n.NumberFormatSymbols_ro_MD', 'goog.i18n.NumberFormatSymbols_rof', 'goog.i18n.NumberFormatSymbols_rof_TZ', 'goog.i18n.NumberFormatSymbols_ru_BY', 'goog.i18n.NumberFormatSymbols_ru_KG', 'goog.i18n.NumberFormatSymbols_ru_KZ', 'goog.i18n.NumberFormatSymbols_ru_MD', 'goog.i18n.NumberFormatSymbols_ru_UA', 'goog.i18n.NumberFormatSymbols_rw', 'goog.i18n.NumberFormatSymbols_rw_RW', 'goog.i18n.NumberFormatSymbols_rwk', 'goog.i18n.NumberFormatSymbols_rwk_TZ', 'goog.i18n.NumberFormatSymbols_sah', 'goog.i18n.NumberFormatSymbols_sah_RU', 'goog.i18n.NumberFormatSymbols_saq', 'goog.i18n.NumberFormatSymbols_saq_KE', 'goog.i18n.NumberFormatSymbols_sbp', 'goog.i18n.NumberFormatSymbols_sbp_TZ', 'goog.i18n.NumberFormatSymbols_se', 'goog.i18n.NumberFormatSymbols_se_FI', 'goog.i18n.NumberFormatSymbols_se_NO', 'goog.i18n.NumberFormatSymbols_se_SE', 'goog.i18n.NumberFormatSymbols_seh', 'goog.i18n.NumberFormatSymbols_seh_MZ', 'goog.i18n.NumberFormatSymbols_ses', 'goog.i18n.NumberFormatSymbols_ses_ML', 'goog.i18n.NumberFormatSymbols_sg', 'goog.i18n.NumberFormatSymbols_sg_CF', 'goog.i18n.NumberFormatSymbols_shi', 'goog.i18n.NumberFormatSymbols_shi_Latn', 'goog.i18n.NumberFormatSymbols_shi_Latn_MA', 'goog.i18n.NumberFormatSymbols_shi_Tfng', 'goog.i18n.NumberFormatSymbols_shi_Tfng_MA', 'goog.i18n.NumberFormatSymbols_smn', 'goog.i18n.NumberFormatSymbols_smn_FI', 'goog.i18n.NumberFormatSymbols_sn', 'goog.i18n.NumberFormatSymbols_sn_ZW', 'goog.i18n.NumberFormatSymbols_so', 'goog.i18n.NumberFormatSymbols_so_DJ', 'goog.i18n.NumberFormatSymbols_so_ET', 'goog.i18n.NumberFormatSymbols_so_KE', 'goog.i18n.NumberFormatSymbols_so_SO', 'goog.i18n.NumberFormatSymbols_sq_MK', 'goog.i18n.NumberFormatSymbols_sq_XK', 'goog.i18n.NumberFormatSymbols_sr_Cyrl_BA', 'goog.i18n.NumberFormatSymbols_sr_Cyrl_ME', 'goog.i18n.NumberFormatSymbols_sr_Cyrl_XK', 'goog.i18n.NumberFormatSymbols_sr_Latn_BA', 'goog.i18n.NumberFormatSymbols_sr_Latn_ME', 'goog.i18n.NumberFormatSymbols_sr_Latn_XK', 'goog.i18n.NumberFormatSymbols_sv_AX', 'goog.i18n.NumberFormatSymbols_sv_FI', 'goog.i18n.NumberFormatSymbols_sw_CD', 'goog.i18n.NumberFormatSymbols_sw_KE', 'goog.i18n.NumberFormatSymbols_sw_UG', 'goog.i18n.NumberFormatSymbols_ta_LK', 'goog.i18n.NumberFormatSymbols_ta_MY', 'goog.i18n.NumberFormatSymbols_ta_SG', 'goog.i18n.NumberFormatSymbols_teo', 'goog.i18n.NumberFormatSymbols_teo_KE', 'goog.i18n.NumberFormatSymbols_teo_UG', 'goog.i18n.NumberFormatSymbols_ti', 'goog.i18n.NumberFormatSymbols_ti_ER', 'goog.i18n.NumberFormatSymbols_ti_ET', 'goog.i18n.NumberFormatSymbols_to', 'goog.i18n.NumberFormatSymbols_to_TO', 'goog.i18n.NumberFormatSymbols_tr_CY', 'goog.i18n.NumberFormatSymbols_twq', 'goog.i18n.NumberFormatSymbols_twq_NE', 'goog.i18n.NumberFormatSymbols_tzm', 'goog.i18n.NumberFormatSymbols_tzm_Latn', 'goog.i18n.NumberFormatSymbols_tzm_Latn_MA', 'goog.i18n.NumberFormatSymbols_ug', 'goog.i18n.NumberFormatSymbols_ug_Arab', 'goog.i18n.NumberFormatSymbols_ug_Arab_CN', 'goog.i18n.NumberFormatSymbols_ur_IN', 'goog.i18n.NumberFormatSymbols_uz_Arab', 'goog.i18n.NumberFormatSymbols_uz_Arab_AF', 'goog.i18n.NumberFormatSymbols_uz_Cyrl', 'goog.i18n.NumberFormatSymbols_uz_Cyrl_UZ', 'goog.i18n.NumberFormatSymbols_vai', 'goog.i18n.NumberFormatSymbols_vai_Latn', 'goog.i18n.NumberFormatSymbols_vai_Latn_LR', 'goog.i18n.NumberFormatSymbols_vai_Vaii', 'goog.i18n.NumberFormatSymbols_vai_Vaii_LR', 'goog.i18n.NumberFormatSymbols_vun', 'goog.i18n.NumberFormatSymbols_vun_TZ', 'goog.i18n.NumberFormatSymbols_wae', 'goog.i18n.NumberFormatSymbols_wae_CH', 'goog.i18n.NumberFormatSymbols_xog', 'goog.i18n.NumberFormatSymbols_xog_UG', 'goog.i18n.NumberFormatSymbols_yav', 'goog.i18n.NumberFormatSymbols_yav_CM', 'goog.i18n.NumberFormatSymbols_yi', 'goog.i18n.NumberFormatSymbols_yi_001', 'goog.i18n.NumberFormatSymbols_yo', 'goog.i18n.NumberFormatSymbols_yo_BJ', 'goog.i18n.NumberFormatSymbols_yo_NG', 'goog.i18n.NumberFormatSymbols_zgh', 'goog.i18n.NumberFormatSymbols_zgh_MA', 'goog.i18n.NumberFormatSymbols_zh_Hans_HK', 'goog.i18n.NumberFormatSymbols_zh_Hans_MO', 'goog.i18n.NumberFormatSymbols_zh_Hans_SG', 'goog.i18n.NumberFormatSymbols_zh_Hant', 'goog.i18n.NumberFormatSymbols_zh_Hant_HK', 'goog.i18n.NumberFormatSymbols_zh_Hant_MO', 'goog.i18n.NumberFormatSymbols_zh_Hant_TW'], ['goog.i18n.NumberFormatSymbols'], false); -goog.addDependency('i18n/ordinalrules.js', ['goog.i18n.ordinalRules'], [], false); -goog.addDependency('i18n/pluralrules.js', ['goog.i18n.pluralRules'], [], false); -goog.addDependency('i18n/pluralrules_test.js', ['goog.i18n.pluralRulesTest'], ['goog.i18n.pluralRules', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/timezone.js', ['goog.i18n.TimeZone'], ['goog.array', 'goog.date.DateLike', 'goog.object', 'goog.string'], false); -goog.addDependency('i18n/timezone_test.js', ['goog.i18n.TimeZoneTest'], ['goog.i18n.TimeZone', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/uchar.js', ['goog.i18n.uChar'], [], false); -goog.addDependency('i18n/uchar/localnamefetcher.js', ['goog.i18n.uChar.LocalNameFetcher'], ['goog.i18n.uChar.NameFetcher', 'goog.i18n.uCharNames', 'goog.log'], false); -goog.addDependency('i18n/uchar/localnamefetcher_test.js', ['goog.i18n.uChar.LocalNameFetcherTest'], ['goog.i18n.uChar.LocalNameFetcher', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('i18n/uchar/namefetcher.js', ['goog.i18n.uChar.NameFetcher'], [], false); -goog.addDependency('i18n/uchar/remotenamefetcher.js', ['goog.i18n.uChar.RemoteNameFetcher'], ['goog.Disposable', 'goog.Uri', 'goog.i18n.uChar', 'goog.i18n.uChar.NameFetcher', 'goog.log', 'goog.net.XhrIo', 'goog.structs.Map'], false); -goog.addDependency('i18n/uchar/remotenamefetcher_test.js', ['goog.i18n.uChar.RemoteNameFetcherTest'], ['goog.i18n.uChar.RemoteNameFetcher', 'goog.net.XhrIo', 'goog.testing.jsunit', 'goog.testing.net.XhrIo', 'goog.testing.recordFunction'], false); -goog.addDependency('i18n/uchar_test.js', ['goog.i18n.uCharTest'], ['goog.i18n.uChar', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/ucharnames.js', ['goog.i18n.uCharNames'], ['goog.i18n.uChar'], false); -goog.addDependency('i18n/ucharnames_test.js', ['goog.i18n.uCharNamesTest'], ['goog.i18n.uCharNames', 'goog.testing.jsunit'], false); -goog.addDependency('iter/iter.js', ['goog.iter', 'goog.iter.Iterable', 'goog.iter.Iterator', 'goog.iter.StopIteration'], ['goog.array', 'goog.asserts', 'goog.functions', 'goog.math'], false); -goog.addDependency('iter/iter_test.js', ['goog.iterTest'], ['goog.iter', 'goog.iter.Iterator', 'goog.iter.StopIteration', 'goog.testing.jsunit'], false); -goog.addDependency('json/evaljsonprocessor.js', ['goog.json.EvalJsonProcessor'], ['goog.json', 'goog.json.Processor', 'goog.json.Serializer'], false); -goog.addDependency('json/hybrid.js', ['goog.json.hybrid'], ['goog.asserts', 'goog.json'], false); -goog.addDependency('json/hybrid_test.js', ['goog.json.hybridTest'], ['goog.json', 'goog.json.hybrid', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.userAgent'], false); -goog.addDependency('json/hybridjsonprocessor.js', ['goog.json.HybridJsonProcessor'], ['goog.json.Processor', 'goog.json.hybrid'], false); -goog.addDependency('json/hybridjsonprocessor_test.js', ['goog.json.HybridJsonProcessorTest'], ['goog.json.HybridJsonProcessor', 'goog.json.hybrid', 'goog.testing.jsunit'], false); -goog.addDependency('json/json.js', ['goog.json', 'goog.json.Replacer', 'goog.json.Reviver', 'goog.json.Serializer'], [], false); -goog.addDependency('json/json_perf.js', ['goog.jsonPerf'], ['goog.dom', 'goog.json', 'goog.math', 'goog.string', 'goog.testing.PerformanceTable', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('json/json_test.js', ['goog.jsonTest'], ['goog.functions', 'goog.json', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('json/nativejsonprocessor.js', ['goog.json.NativeJsonProcessor'], ['goog.asserts', 'goog.json.Processor'], false); -goog.addDependency('json/processor.js', ['goog.json.Processor'], ['goog.string.Parser', 'goog.string.Stringifier'], false); -goog.addDependency('json/processor_test.js', ['goog.json.processorTest'], ['goog.json.EvalJsonProcessor', 'goog.json.NativeJsonProcessor', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('labs/dom/pagevisibilitymonitor.js', ['goog.labs.dom.PageVisibilityEvent', 'goog.labs.dom.PageVisibilityMonitor', 'goog.labs.dom.PageVisibilityState'], ['goog.dom', 'goog.dom.vendor', 'goog.events', 'goog.events.Event', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.memoize'], false); -goog.addDependency('labs/dom/pagevisibilitymonitor_test.js', ['goog.labs.dom.PageVisibilityMonitorTest'], ['goog.events', 'goog.functions', 'goog.labs.dom.PageVisibilityMonitor', 'goog.testing.PropertyReplacer', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('labs/events/nondisposableeventtarget.js', ['goog.labs.events.NonDisposableEventTarget'], ['goog.array', 'goog.asserts', 'goog.events.Event', 'goog.events.Listenable', 'goog.events.ListenerMap', 'goog.object'], false); -goog.addDependency('labs/events/nondisposableeventtarget_test.js', ['goog.labs.events.NonDisposableEventTargetTest'], ['goog.events.Listenable', 'goog.events.eventTargetTester', 'goog.events.eventTargetTester.KeyType', 'goog.events.eventTargetTester.UnlistenReturnType', 'goog.labs.events.NonDisposableEventTarget', 'goog.testing.jsunit'], false); -goog.addDependency('labs/events/nondisposableeventtarget_via_googevents_test.js', ['goog.labs.events.NonDisposableEventTargetGoogEventsTest'], ['goog.events', 'goog.events.eventTargetTester', 'goog.events.eventTargetTester.KeyType', 'goog.events.eventTargetTester.UnlistenReturnType', 'goog.labs.events.NonDisposableEventTarget', 'goog.testing', 'goog.testing.jsunit'], false); -goog.addDependency('labs/events/touch.js', ['goog.labs.events.touch', 'goog.labs.events.touch.TouchData'], ['goog.array', 'goog.asserts', 'goog.events.EventType', 'goog.string'], false); -goog.addDependency('labs/events/touch_test.js', ['goog.labs.events.touchTest'], ['goog.labs.events.touch', 'goog.testing.jsunit'], false); -goog.addDependency('labs/format/csv.js', ['goog.labs.format.csv', 'goog.labs.format.csv.ParseError', 'goog.labs.format.csv.Token'], ['goog.array', 'goog.asserts', 'goog.debug.Error', 'goog.object', 'goog.string', 'goog.string.newlines'], false); -goog.addDependency('labs/format/csv_test.js', ['goog.labs.format.csvTest'], ['goog.labs.format.csv', 'goog.labs.format.csv.ParseError', 'goog.object', 'goog.testing.asserts', 'goog.testing.jsunit'], false); -goog.addDependency('labs/html/attribute_rewriter.js', ['goog.labs.html.AttributeRewriter', 'goog.labs.html.AttributeValue', 'goog.labs.html.attributeRewriterPresubmitWorkaround'], [], false); -goog.addDependency('labs/html/sanitizer.js', ['goog.labs.html.Sanitizer'], ['goog.asserts', 'goog.html.SafeUrl', 'goog.labs.html.attributeRewriterPresubmitWorkaround', 'goog.labs.html.scrubber', 'goog.object', 'goog.string'], false); -goog.addDependency('labs/html/sanitizer_test.js', ['goog.labs.html.SanitizerTest'], ['goog.html.SafeUrl', 'goog.labs.html.Sanitizer', 'goog.string', 'goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('labs/html/scrubber.js', ['goog.labs.html.scrubber'], ['goog.array', 'goog.dom.tags', 'goog.labs.html.attributeRewriterPresubmitWorkaround', 'goog.string'], false); -goog.addDependency('labs/html/scrubber_test.js', ['goog.html.ScrubberTest'], ['goog.labs.html.scrubber', 'goog.object', 'goog.string', 'goog.testing.jsunit'], false); -goog.addDependency('labs/i18n/listformat.js', ['goog.labs.i18n.GenderInfo', 'goog.labs.i18n.GenderInfo.Gender', 'goog.labs.i18n.ListFormat'], ['goog.asserts', 'goog.labs.i18n.ListFormatSymbols'], false); -goog.addDependency('labs/i18n/listformat_test.js', ['goog.labs.i18n.ListFormatTest'], ['goog.labs.i18n.GenderInfo', 'goog.labs.i18n.ListFormat', 'goog.labs.i18n.ListFormatSymbols', 'goog.labs.i18n.ListFormatSymbols_el', 'goog.labs.i18n.ListFormatSymbols_en', 'goog.labs.i18n.ListFormatSymbols_fr', 'goog.labs.i18n.ListFormatSymbols_ml', 'goog.labs.i18n.ListFormatSymbols_zu', 'goog.testing.jsunit'], false); -goog.addDependency('labs/i18n/listsymbols.js', ['goog.labs.i18n.ListFormatSymbols', 'goog.labs.i18n.ListFormatSymbols_af', 'goog.labs.i18n.ListFormatSymbols_am', 'goog.labs.i18n.ListFormatSymbols_ar', 'goog.labs.i18n.ListFormatSymbols_az', 'goog.labs.i18n.ListFormatSymbols_be', 'goog.labs.i18n.ListFormatSymbols_bg', 'goog.labs.i18n.ListFormatSymbols_bn', 'goog.labs.i18n.ListFormatSymbols_br', 'goog.labs.i18n.ListFormatSymbols_bs', 'goog.labs.i18n.ListFormatSymbols_ca', 'goog.labs.i18n.ListFormatSymbols_chr', 'goog.labs.i18n.ListFormatSymbols_cs', 'goog.labs.i18n.ListFormatSymbols_cy', 'goog.labs.i18n.ListFormatSymbols_da', 'goog.labs.i18n.ListFormatSymbols_de', 'goog.labs.i18n.ListFormatSymbols_de_AT', 'goog.labs.i18n.ListFormatSymbols_de_CH', 'goog.labs.i18n.ListFormatSymbols_el', 'goog.labs.i18n.ListFormatSymbols_en', 'goog.labs.i18n.ListFormatSymbols_en_AU', 'goog.labs.i18n.ListFormatSymbols_en_CA', 'goog.labs.i18n.ListFormatSymbols_en_GB', 'goog.labs.i18n.ListFormatSymbols_en_IE', 'goog.labs.i18n.ListFormatSymbols_en_IN', 'goog.labs.i18n.ListFormatSymbols_en_SG', 'goog.labs.i18n.ListFormatSymbols_en_US', 'goog.labs.i18n.ListFormatSymbols_en_ZA', 'goog.labs.i18n.ListFormatSymbols_es', 'goog.labs.i18n.ListFormatSymbols_es_419', 'goog.labs.i18n.ListFormatSymbols_es_ES', 'goog.labs.i18n.ListFormatSymbols_es_MX', 'goog.labs.i18n.ListFormatSymbols_es_US', 'goog.labs.i18n.ListFormatSymbols_et', 'goog.labs.i18n.ListFormatSymbols_eu', 'goog.labs.i18n.ListFormatSymbols_fa', 'goog.labs.i18n.ListFormatSymbols_fi', 'goog.labs.i18n.ListFormatSymbols_fil', 'goog.labs.i18n.ListFormatSymbols_fr', 'goog.labs.i18n.ListFormatSymbols_fr_CA', 'goog.labs.i18n.ListFormatSymbols_ga', 'goog.labs.i18n.ListFormatSymbols_gl', 'goog.labs.i18n.ListFormatSymbols_gsw', 'goog.labs.i18n.ListFormatSymbols_gu', 'goog.labs.i18n.ListFormatSymbols_haw', 'goog.labs.i18n.ListFormatSymbols_he', 'goog.labs.i18n.ListFormatSymbols_hi', 'goog.labs.i18n.ListFormatSymbols_hr', 'goog.labs.i18n.ListFormatSymbols_hu', 'goog.labs.i18n.ListFormatSymbols_hy', 'goog.labs.i18n.ListFormatSymbols_id', 'goog.labs.i18n.ListFormatSymbols_in', 'goog.labs.i18n.ListFormatSymbols_is', 'goog.labs.i18n.ListFormatSymbols_it', 'goog.labs.i18n.ListFormatSymbols_iw', 'goog.labs.i18n.ListFormatSymbols_ja', 'goog.labs.i18n.ListFormatSymbols_ka', 'goog.labs.i18n.ListFormatSymbols_kk', 'goog.labs.i18n.ListFormatSymbols_km', 'goog.labs.i18n.ListFormatSymbols_kn', 'goog.labs.i18n.ListFormatSymbols_ko', 'goog.labs.i18n.ListFormatSymbols_ky', 'goog.labs.i18n.ListFormatSymbols_ln', 'goog.labs.i18n.ListFormatSymbols_lo', 'goog.labs.i18n.ListFormatSymbols_lt', 'goog.labs.i18n.ListFormatSymbols_lv', 'goog.labs.i18n.ListFormatSymbols_mk', 'goog.labs.i18n.ListFormatSymbols_ml', 'goog.labs.i18n.ListFormatSymbols_mn', 'goog.labs.i18n.ListFormatSymbols_mo', 'goog.labs.i18n.ListFormatSymbols_mr', 'goog.labs.i18n.ListFormatSymbols_ms', 'goog.labs.i18n.ListFormatSymbols_mt', 'goog.labs.i18n.ListFormatSymbols_my', 'goog.labs.i18n.ListFormatSymbols_nb', 'goog.labs.i18n.ListFormatSymbols_ne', 'goog.labs.i18n.ListFormatSymbols_nl', 'goog.labs.i18n.ListFormatSymbols_no', 'goog.labs.i18n.ListFormatSymbols_no_NO', 'goog.labs.i18n.ListFormatSymbols_or', 'goog.labs.i18n.ListFormatSymbols_pa', 'goog.labs.i18n.ListFormatSymbols_pl', 'goog.labs.i18n.ListFormatSymbols_pt', 'goog.labs.i18n.ListFormatSymbols_pt_BR', 'goog.labs.i18n.ListFormatSymbols_pt_PT', 'goog.labs.i18n.ListFormatSymbols_ro', 'goog.labs.i18n.ListFormatSymbols_ru', 'goog.labs.i18n.ListFormatSymbols_sh', 'goog.labs.i18n.ListFormatSymbols_si', 'goog.labs.i18n.ListFormatSymbols_sk', 'goog.labs.i18n.ListFormatSymbols_sl', 'goog.labs.i18n.ListFormatSymbols_sq', 'goog.labs.i18n.ListFormatSymbols_sr', 'goog.labs.i18n.ListFormatSymbols_sr_Latn', 'goog.labs.i18n.ListFormatSymbols_sv', 'goog.labs.i18n.ListFormatSymbols_sw', 'goog.labs.i18n.ListFormatSymbols_ta', 'goog.labs.i18n.ListFormatSymbols_te', 'goog.labs.i18n.ListFormatSymbols_th', 'goog.labs.i18n.ListFormatSymbols_tl', 'goog.labs.i18n.ListFormatSymbols_tr', 'goog.labs.i18n.ListFormatSymbols_uk', 'goog.labs.i18n.ListFormatSymbols_ur', 'goog.labs.i18n.ListFormatSymbols_uz', 'goog.labs.i18n.ListFormatSymbols_vi', 'goog.labs.i18n.ListFormatSymbols_zh', 'goog.labs.i18n.ListFormatSymbols_zh_CN', 'goog.labs.i18n.ListFormatSymbols_zh_HK', 'goog.labs.i18n.ListFormatSymbols_zh_TW', 'goog.labs.i18n.ListFormatSymbols_zu'], [], false); -goog.addDependency('labs/i18n/listsymbolsext.js', ['goog.labs.i18n.ListFormatSymbolsExt', 'goog.labs.i18n.ListFormatSymbols_af_NA', 'goog.labs.i18n.ListFormatSymbols_af_ZA', 'goog.labs.i18n.ListFormatSymbols_agq', 'goog.labs.i18n.ListFormatSymbols_agq_CM', 'goog.labs.i18n.ListFormatSymbols_ak', 'goog.labs.i18n.ListFormatSymbols_ak_GH', 'goog.labs.i18n.ListFormatSymbols_am_ET', 'goog.labs.i18n.ListFormatSymbols_ar_001', 'goog.labs.i18n.ListFormatSymbols_ar_AE', 'goog.labs.i18n.ListFormatSymbols_ar_BH', 'goog.labs.i18n.ListFormatSymbols_ar_DJ', 'goog.labs.i18n.ListFormatSymbols_ar_DZ', 'goog.labs.i18n.ListFormatSymbols_ar_EG', 'goog.labs.i18n.ListFormatSymbols_ar_EH', 'goog.labs.i18n.ListFormatSymbols_ar_ER', 'goog.labs.i18n.ListFormatSymbols_ar_IL', 'goog.labs.i18n.ListFormatSymbols_ar_IQ', 'goog.labs.i18n.ListFormatSymbols_ar_JO', 'goog.labs.i18n.ListFormatSymbols_ar_KM', 'goog.labs.i18n.ListFormatSymbols_ar_KW', 'goog.labs.i18n.ListFormatSymbols_ar_LB', 'goog.labs.i18n.ListFormatSymbols_ar_LY', 'goog.labs.i18n.ListFormatSymbols_ar_MA', 'goog.labs.i18n.ListFormatSymbols_ar_MR', 'goog.labs.i18n.ListFormatSymbols_ar_OM', 'goog.labs.i18n.ListFormatSymbols_ar_PS', 'goog.labs.i18n.ListFormatSymbols_ar_QA', 'goog.labs.i18n.ListFormatSymbols_ar_SA', 'goog.labs.i18n.ListFormatSymbols_ar_SD', 'goog.labs.i18n.ListFormatSymbols_ar_SO', 'goog.labs.i18n.ListFormatSymbols_ar_SS', 'goog.labs.i18n.ListFormatSymbols_ar_SY', 'goog.labs.i18n.ListFormatSymbols_ar_TD', 'goog.labs.i18n.ListFormatSymbols_ar_TN', 'goog.labs.i18n.ListFormatSymbols_ar_YE', 'goog.labs.i18n.ListFormatSymbols_as', 'goog.labs.i18n.ListFormatSymbols_as_IN', 'goog.labs.i18n.ListFormatSymbols_asa', 'goog.labs.i18n.ListFormatSymbols_asa_TZ', 'goog.labs.i18n.ListFormatSymbols_az_Cyrl', 'goog.labs.i18n.ListFormatSymbols_az_Cyrl_AZ', 'goog.labs.i18n.ListFormatSymbols_az_Latn', 'goog.labs.i18n.ListFormatSymbols_az_Latn_AZ', 'goog.labs.i18n.ListFormatSymbols_bas', 'goog.labs.i18n.ListFormatSymbols_bas_CM', 'goog.labs.i18n.ListFormatSymbols_be_BY', 'goog.labs.i18n.ListFormatSymbols_bem', 'goog.labs.i18n.ListFormatSymbols_bem_ZM', 'goog.labs.i18n.ListFormatSymbols_bez', 'goog.labs.i18n.ListFormatSymbols_bez_TZ', 'goog.labs.i18n.ListFormatSymbols_bg_BG', 'goog.labs.i18n.ListFormatSymbols_bm', 'goog.labs.i18n.ListFormatSymbols_bm_Latn', 'goog.labs.i18n.ListFormatSymbols_bm_Latn_ML', 'goog.labs.i18n.ListFormatSymbols_bn_BD', 'goog.labs.i18n.ListFormatSymbols_bn_IN', 'goog.labs.i18n.ListFormatSymbols_bo', 'goog.labs.i18n.ListFormatSymbols_bo_CN', 'goog.labs.i18n.ListFormatSymbols_bo_IN', 'goog.labs.i18n.ListFormatSymbols_br_FR', 'goog.labs.i18n.ListFormatSymbols_brx', 'goog.labs.i18n.ListFormatSymbols_brx_IN', 'goog.labs.i18n.ListFormatSymbols_bs_Cyrl', 'goog.labs.i18n.ListFormatSymbols_bs_Cyrl_BA', 'goog.labs.i18n.ListFormatSymbols_bs_Latn', 'goog.labs.i18n.ListFormatSymbols_bs_Latn_BA', 'goog.labs.i18n.ListFormatSymbols_ca_AD', 'goog.labs.i18n.ListFormatSymbols_ca_ES', 'goog.labs.i18n.ListFormatSymbols_ca_FR', 'goog.labs.i18n.ListFormatSymbols_ca_IT', 'goog.labs.i18n.ListFormatSymbols_cgg', 'goog.labs.i18n.ListFormatSymbols_cgg_UG', 'goog.labs.i18n.ListFormatSymbols_chr_US', 'goog.labs.i18n.ListFormatSymbols_cs_CZ', 'goog.labs.i18n.ListFormatSymbols_cy_GB', 'goog.labs.i18n.ListFormatSymbols_da_DK', 'goog.labs.i18n.ListFormatSymbols_da_GL', 'goog.labs.i18n.ListFormatSymbols_dav', 'goog.labs.i18n.ListFormatSymbols_dav_KE', 'goog.labs.i18n.ListFormatSymbols_de_BE', 'goog.labs.i18n.ListFormatSymbols_de_DE', 'goog.labs.i18n.ListFormatSymbols_de_LI', 'goog.labs.i18n.ListFormatSymbols_de_LU', 'goog.labs.i18n.ListFormatSymbols_dje', 'goog.labs.i18n.ListFormatSymbols_dje_NE', 'goog.labs.i18n.ListFormatSymbols_dsb', 'goog.labs.i18n.ListFormatSymbols_dsb_DE', 'goog.labs.i18n.ListFormatSymbols_dua', 'goog.labs.i18n.ListFormatSymbols_dua_CM', 'goog.labs.i18n.ListFormatSymbols_dyo', 'goog.labs.i18n.ListFormatSymbols_dyo_SN', 'goog.labs.i18n.ListFormatSymbols_dz', 'goog.labs.i18n.ListFormatSymbols_dz_BT', 'goog.labs.i18n.ListFormatSymbols_ebu', 'goog.labs.i18n.ListFormatSymbols_ebu_KE', 'goog.labs.i18n.ListFormatSymbols_ee', 'goog.labs.i18n.ListFormatSymbols_ee_GH', 'goog.labs.i18n.ListFormatSymbols_ee_TG', 'goog.labs.i18n.ListFormatSymbols_el_CY', 'goog.labs.i18n.ListFormatSymbols_el_GR', 'goog.labs.i18n.ListFormatSymbols_en_001', 'goog.labs.i18n.ListFormatSymbols_en_150', 'goog.labs.i18n.ListFormatSymbols_en_AG', 'goog.labs.i18n.ListFormatSymbols_en_AI', 'goog.labs.i18n.ListFormatSymbols_en_AS', 'goog.labs.i18n.ListFormatSymbols_en_BB', 'goog.labs.i18n.ListFormatSymbols_en_BE', 'goog.labs.i18n.ListFormatSymbols_en_BM', 'goog.labs.i18n.ListFormatSymbols_en_BS', 'goog.labs.i18n.ListFormatSymbols_en_BW', 'goog.labs.i18n.ListFormatSymbols_en_BZ', 'goog.labs.i18n.ListFormatSymbols_en_CC', 'goog.labs.i18n.ListFormatSymbols_en_CK', 'goog.labs.i18n.ListFormatSymbols_en_CM', 'goog.labs.i18n.ListFormatSymbols_en_CX', 'goog.labs.i18n.ListFormatSymbols_en_DG', 'goog.labs.i18n.ListFormatSymbols_en_DM', 'goog.labs.i18n.ListFormatSymbols_en_ER', 'goog.labs.i18n.ListFormatSymbols_en_FJ', 'goog.labs.i18n.ListFormatSymbols_en_FK', 'goog.labs.i18n.ListFormatSymbols_en_FM', 'goog.labs.i18n.ListFormatSymbols_en_GD', 'goog.labs.i18n.ListFormatSymbols_en_GG', 'goog.labs.i18n.ListFormatSymbols_en_GH', 'goog.labs.i18n.ListFormatSymbols_en_GI', 'goog.labs.i18n.ListFormatSymbols_en_GM', 'goog.labs.i18n.ListFormatSymbols_en_GU', 'goog.labs.i18n.ListFormatSymbols_en_GY', 'goog.labs.i18n.ListFormatSymbols_en_HK', 'goog.labs.i18n.ListFormatSymbols_en_IM', 'goog.labs.i18n.ListFormatSymbols_en_IO', 'goog.labs.i18n.ListFormatSymbols_en_JE', 'goog.labs.i18n.ListFormatSymbols_en_JM', 'goog.labs.i18n.ListFormatSymbols_en_KE', 'goog.labs.i18n.ListFormatSymbols_en_KI', 'goog.labs.i18n.ListFormatSymbols_en_KN', 'goog.labs.i18n.ListFormatSymbols_en_KY', 'goog.labs.i18n.ListFormatSymbols_en_LC', 'goog.labs.i18n.ListFormatSymbols_en_LR', 'goog.labs.i18n.ListFormatSymbols_en_LS', 'goog.labs.i18n.ListFormatSymbols_en_MG', 'goog.labs.i18n.ListFormatSymbols_en_MH', 'goog.labs.i18n.ListFormatSymbols_en_MO', 'goog.labs.i18n.ListFormatSymbols_en_MP', 'goog.labs.i18n.ListFormatSymbols_en_MS', 'goog.labs.i18n.ListFormatSymbols_en_MT', 'goog.labs.i18n.ListFormatSymbols_en_MU', 'goog.labs.i18n.ListFormatSymbols_en_MW', 'goog.labs.i18n.ListFormatSymbols_en_MY', 'goog.labs.i18n.ListFormatSymbols_en_NA', 'goog.labs.i18n.ListFormatSymbols_en_NF', 'goog.labs.i18n.ListFormatSymbols_en_NG', 'goog.labs.i18n.ListFormatSymbols_en_NR', 'goog.labs.i18n.ListFormatSymbols_en_NU', 'goog.labs.i18n.ListFormatSymbols_en_NZ', 'goog.labs.i18n.ListFormatSymbols_en_PG', 'goog.labs.i18n.ListFormatSymbols_en_PH', 'goog.labs.i18n.ListFormatSymbols_en_PK', 'goog.labs.i18n.ListFormatSymbols_en_PN', 'goog.labs.i18n.ListFormatSymbols_en_PR', 'goog.labs.i18n.ListFormatSymbols_en_PW', 'goog.labs.i18n.ListFormatSymbols_en_RW', 'goog.labs.i18n.ListFormatSymbols_en_SB', 'goog.labs.i18n.ListFormatSymbols_en_SC', 'goog.labs.i18n.ListFormatSymbols_en_SD', 'goog.labs.i18n.ListFormatSymbols_en_SH', 'goog.labs.i18n.ListFormatSymbols_en_SL', 'goog.labs.i18n.ListFormatSymbols_en_SS', 'goog.labs.i18n.ListFormatSymbols_en_SX', 'goog.labs.i18n.ListFormatSymbols_en_SZ', 'goog.labs.i18n.ListFormatSymbols_en_TC', 'goog.labs.i18n.ListFormatSymbols_en_TK', 'goog.labs.i18n.ListFormatSymbols_en_TO', 'goog.labs.i18n.ListFormatSymbols_en_TT', 'goog.labs.i18n.ListFormatSymbols_en_TV', 'goog.labs.i18n.ListFormatSymbols_en_TZ', 'goog.labs.i18n.ListFormatSymbols_en_UG', 'goog.labs.i18n.ListFormatSymbols_en_UM', 'goog.labs.i18n.ListFormatSymbols_en_US_POSIX', 'goog.labs.i18n.ListFormatSymbols_en_VC', 'goog.labs.i18n.ListFormatSymbols_en_VG', 'goog.labs.i18n.ListFormatSymbols_en_VI', 'goog.labs.i18n.ListFormatSymbols_en_VU', 'goog.labs.i18n.ListFormatSymbols_en_WS', 'goog.labs.i18n.ListFormatSymbols_en_ZM', 'goog.labs.i18n.ListFormatSymbols_en_ZW', 'goog.labs.i18n.ListFormatSymbols_eo', 'goog.labs.i18n.ListFormatSymbols_es_AR', 'goog.labs.i18n.ListFormatSymbols_es_BO', 'goog.labs.i18n.ListFormatSymbols_es_CL', 'goog.labs.i18n.ListFormatSymbols_es_CO', 'goog.labs.i18n.ListFormatSymbols_es_CR', 'goog.labs.i18n.ListFormatSymbols_es_CU', 'goog.labs.i18n.ListFormatSymbols_es_DO', 'goog.labs.i18n.ListFormatSymbols_es_EA', 'goog.labs.i18n.ListFormatSymbols_es_EC', 'goog.labs.i18n.ListFormatSymbols_es_GQ', 'goog.labs.i18n.ListFormatSymbols_es_GT', 'goog.labs.i18n.ListFormatSymbols_es_HN', 'goog.labs.i18n.ListFormatSymbols_es_IC', 'goog.labs.i18n.ListFormatSymbols_es_NI', 'goog.labs.i18n.ListFormatSymbols_es_PA', 'goog.labs.i18n.ListFormatSymbols_es_PE', 'goog.labs.i18n.ListFormatSymbols_es_PH', 'goog.labs.i18n.ListFormatSymbols_es_PR', 'goog.labs.i18n.ListFormatSymbols_es_PY', 'goog.labs.i18n.ListFormatSymbols_es_SV', 'goog.labs.i18n.ListFormatSymbols_es_UY', 'goog.labs.i18n.ListFormatSymbols_es_VE', 'goog.labs.i18n.ListFormatSymbols_et_EE', 'goog.labs.i18n.ListFormatSymbols_eu_ES', 'goog.labs.i18n.ListFormatSymbols_ewo', 'goog.labs.i18n.ListFormatSymbols_ewo_CM', 'goog.labs.i18n.ListFormatSymbols_fa_AF', 'goog.labs.i18n.ListFormatSymbols_fa_IR', 'goog.labs.i18n.ListFormatSymbols_ff', 'goog.labs.i18n.ListFormatSymbols_ff_CM', 'goog.labs.i18n.ListFormatSymbols_ff_GN', 'goog.labs.i18n.ListFormatSymbols_ff_MR', 'goog.labs.i18n.ListFormatSymbols_ff_SN', 'goog.labs.i18n.ListFormatSymbols_fi_FI', 'goog.labs.i18n.ListFormatSymbols_fil_PH', 'goog.labs.i18n.ListFormatSymbols_fo', 'goog.labs.i18n.ListFormatSymbols_fo_FO', 'goog.labs.i18n.ListFormatSymbols_fr_BE', 'goog.labs.i18n.ListFormatSymbols_fr_BF', 'goog.labs.i18n.ListFormatSymbols_fr_BI', 'goog.labs.i18n.ListFormatSymbols_fr_BJ', 'goog.labs.i18n.ListFormatSymbols_fr_BL', 'goog.labs.i18n.ListFormatSymbols_fr_CD', 'goog.labs.i18n.ListFormatSymbols_fr_CF', 'goog.labs.i18n.ListFormatSymbols_fr_CG', 'goog.labs.i18n.ListFormatSymbols_fr_CH', 'goog.labs.i18n.ListFormatSymbols_fr_CI', 'goog.labs.i18n.ListFormatSymbols_fr_CM', 'goog.labs.i18n.ListFormatSymbols_fr_DJ', 'goog.labs.i18n.ListFormatSymbols_fr_DZ', 'goog.labs.i18n.ListFormatSymbols_fr_FR', 'goog.labs.i18n.ListFormatSymbols_fr_GA', 'goog.labs.i18n.ListFormatSymbols_fr_GF', 'goog.labs.i18n.ListFormatSymbols_fr_GN', 'goog.labs.i18n.ListFormatSymbols_fr_GP', 'goog.labs.i18n.ListFormatSymbols_fr_GQ', 'goog.labs.i18n.ListFormatSymbols_fr_HT', 'goog.labs.i18n.ListFormatSymbols_fr_KM', 'goog.labs.i18n.ListFormatSymbols_fr_LU', 'goog.labs.i18n.ListFormatSymbols_fr_MA', 'goog.labs.i18n.ListFormatSymbols_fr_MC', 'goog.labs.i18n.ListFormatSymbols_fr_MF', 'goog.labs.i18n.ListFormatSymbols_fr_MG', 'goog.labs.i18n.ListFormatSymbols_fr_ML', 'goog.labs.i18n.ListFormatSymbols_fr_MQ', 'goog.labs.i18n.ListFormatSymbols_fr_MR', 'goog.labs.i18n.ListFormatSymbols_fr_MU', 'goog.labs.i18n.ListFormatSymbols_fr_NC', 'goog.labs.i18n.ListFormatSymbols_fr_NE', 'goog.labs.i18n.ListFormatSymbols_fr_PF', 'goog.labs.i18n.ListFormatSymbols_fr_PM', 'goog.labs.i18n.ListFormatSymbols_fr_RE', 'goog.labs.i18n.ListFormatSymbols_fr_RW', 'goog.labs.i18n.ListFormatSymbols_fr_SC', 'goog.labs.i18n.ListFormatSymbols_fr_SN', 'goog.labs.i18n.ListFormatSymbols_fr_SY', 'goog.labs.i18n.ListFormatSymbols_fr_TD', 'goog.labs.i18n.ListFormatSymbols_fr_TG', 'goog.labs.i18n.ListFormatSymbols_fr_TN', 'goog.labs.i18n.ListFormatSymbols_fr_VU', 'goog.labs.i18n.ListFormatSymbols_fr_WF', 'goog.labs.i18n.ListFormatSymbols_fr_YT', 'goog.labs.i18n.ListFormatSymbols_fur', 'goog.labs.i18n.ListFormatSymbols_fur_IT', 'goog.labs.i18n.ListFormatSymbols_fy', 'goog.labs.i18n.ListFormatSymbols_fy_NL', 'goog.labs.i18n.ListFormatSymbols_ga_IE', 'goog.labs.i18n.ListFormatSymbols_gd', 'goog.labs.i18n.ListFormatSymbols_gd_GB', 'goog.labs.i18n.ListFormatSymbols_gl_ES', 'goog.labs.i18n.ListFormatSymbols_gsw_CH', 'goog.labs.i18n.ListFormatSymbols_gsw_FR', 'goog.labs.i18n.ListFormatSymbols_gsw_LI', 'goog.labs.i18n.ListFormatSymbols_gu_IN', 'goog.labs.i18n.ListFormatSymbols_guz', 'goog.labs.i18n.ListFormatSymbols_guz_KE', 'goog.labs.i18n.ListFormatSymbols_gv', 'goog.labs.i18n.ListFormatSymbols_gv_IM', 'goog.labs.i18n.ListFormatSymbols_ha', 'goog.labs.i18n.ListFormatSymbols_ha_Latn', 'goog.labs.i18n.ListFormatSymbols_ha_Latn_GH', 'goog.labs.i18n.ListFormatSymbols_ha_Latn_NE', 'goog.labs.i18n.ListFormatSymbols_ha_Latn_NG', 'goog.labs.i18n.ListFormatSymbols_haw_US', 'goog.labs.i18n.ListFormatSymbols_he_IL', 'goog.labs.i18n.ListFormatSymbols_hi_IN', 'goog.labs.i18n.ListFormatSymbols_hr_BA', 'goog.labs.i18n.ListFormatSymbols_hr_HR', 'goog.labs.i18n.ListFormatSymbols_hsb', 'goog.labs.i18n.ListFormatSymbols_hsb_DE', 'goog.labs.i18n.ListFormatSymbols_hu_HU', 'goog.labs.i18n.ListFormatSymbols_hy_AM', 'goog.labs.i18n.ListFormatSymbols_id_ID', 'goog.labs.i18n.ListFormatSymbols_ig', 'goog.labs.i18n.ListFormatSymbols_ig_NG', 'goog.labs.i18n.ListFormatSymbols_ii', 'goog.labs.i18n.ListFormatSymbols_ii_CN', 'goog.labs.i18n.ListFormatSymbols_is_IS', 'goog.labs.i18n.ListFormatSymbols_it_CH', 'goog.labs.i18n.ListFormatSymbols_it_IT', 'goog.labs.i18n.ListFormatSymbols_it_SM', 'goog.labs.i18n.ListFormatSymbols_ja_JP', 'goog.labs.i18n.ListFormatSymbols_jgo', 'goog.labs.i18n.ListFormatSymbols_jgo_CM', 'goog.labs.i18n.ListFormatSymbols_jmc', 'goog.labs.i18n.ListFormatSymbols_jmc_TZ', 'goog.labs.i18n.ListFormatSymbols_ka_GE', 'goog.labs.i18n.ListFormatSymbols_kab', 'goog.labs.i18n.ListFormatSymbols_kab_DZ', 'goog.labs.i18n.ListFormatSymbols_kam', 'goog.labs.i18n.ListFormatSymbols_kam_KE', 'goog.labs.i18n.ListFormatSymbols_kde', 'goog.labs.i18n.ListFormatSymbols_kde_TZ', 'goog.labs.i18n.ListFormatSymbols_kea', 'goog.labs.i18n.ListFormatSymbols_kea_CV', 'goog.labs.i18n.ListFormatSymbols_khq', 'goog.labs.i18n.ListFormatSymbols_khq_ML', 'goog.labs.i18n.ListFormatSymbols_ki', 'goog.labs.i18n.ListFormatSymbols_ki_KE', 'goog.labs.i18n.ListFormatSymbols_kk_Cyrl', 'goog.labs.i18n.ListFormatSymbols_kk_Cyrl_KZ', 'goog.labs.i18n.ListFormatSymbols_kkj', 'goog.labs.i18n.ListFormatSymbols_kkj_CM', 'goog.labs.i18n.ListFormatSymbols_kl', 'goog.labs.i18n.ListFormatSymbols_kl_GL', 'goog.labs.i18n.ListFormatSymbols_kln', 'goog.labs.i18n.ListFormatSymbols_kln_KE', 'goog.labs.i18n.ListFormatSymbols_km_KH', 'goog.labs.i18n.ListFormatSymbols_kn_IN', 'goog.labs.i18n.ListFormatSymbols_ko_KP', 'goog.labs.i18n.ListFormatSymbols_ko_KR', 'goog.labs.i18n.ListFormatSymbols_kok', 'goog.labs.i18n.ListFormatSymbols_kok_IN', 'goog.labs.i18n.ListFormatSymbols_ks', 'goog.labs.i18n.ListFormatSymbols_ks_Arab', 'goog.labs.i18n.ListFormatSymbols_ks_Arab_IN', 'goog.labs.i18n.ListFormatSymbols_ksb', 'goog.labs.i18n.ListFormatSymbols_ksb_TZ', 'goog.labs.i18n.ListFormatSymbols_ksf', 'goog.labs.i18n.ListFormatSymbols_ksf_CM', 'goog.labs.i18n.ListFormatSymbols_ksh', 'goog.labs.i18n.ListFormatSymbols_ksh_DE', 'goog.labs.i18n.ListFormatSymbols_kw', 'goog.labs.i18n.ListFormatSymbols_kw_GB', 'goog.labs.i18n.ListFormatSymbols_ky_Cyrl', 'goog.labs.i18n.ListFormatSymbols_ky_Cyrl_KG', 'goog.labs.i18n.ListFormatSymbols_lag', 'goog.labs.i18n.ListFormatSymbols_lag_TZ', 'goog.labs.i18n.ListFormatSymbols_lb', 'goog.labs.i18n.ListFormatSymbols_lb_LU', 'goog.labs.i18n.ListFormatSymbols_lg', 'goog.labs.i18n.ListFormatSymbols_lg_UG', 'goog.labs.i18n.ListFormatSymbols_lkt', 'goog.labs.i18n.ListFormatSymbols_lkt_US', 'goog.labs.i18n.ListFormatSymbols_ln_AO', 'goog.labs.i18n.ListFormatSymbols_ln_CD', 'goog.labs.i18n.ListFormatSymbols_ln_CF', 'goog.labs.i18n.ListFormatSymbols_ln_CG', 'goog.labs.i18n.ListFormatSymbols_lo_LA', 'goog.labs.i18n.ListFormatSymbols_lt_LT', 'goog.labs.i18n.ListFormatSymbols_lu', 'goog.labs.i18n.ListFormatSymbols_lu_CD', 'goog.labs.i18n.ListFormatSymbols_luo', 'goog.labs.i18n.ListFormatSymbols_luo_KE', 'goog.labs.i18n.ListFormatSymbols_luy', 'goog.labs.i18n.ListFormatSymbols_luy_KE', 'goog.labs.i18n.ListFormatSymbols_lv_LV', 'goog.labs.i18n.ListFormatSymbols_mas', 'goog.labs.i18n.ListFormatSymbols_mas_KE', 'goog.labs.i18n.ListFormatSymbols_mas_TZ', 'goog.labs.i18n.ListFormatSymbols_mer', 'goog.labs.i18n.ListFormatSymbols_mer_KE', 'goog.labs.i18n.ListFormatSymbols_mfe', 'goog.labs.i18n.ListFormatSymbols_mfe_MU', 'goog.labs.i18n.ListFormatSymbols_mg', 'goog.labs.i18n.ListFormatSymbols_mg_MG', 'goog.labs.i18n.ListFormatSymbols_mgh', 'goog.labs.i18n.ListFormatSymbols_mgh_MZ', 'goog.labs.i18n.ListFormatSymbols_mgo', 'goog.labs.i18n.ListFormatSymbols_mgo_CM', 'goog.labs.i18n.ListFormatSymbols_mk_MK', 'goog.labs.i18n.ListFormatSymbols_ml_IN', 'goog.labs.i18n.ListFormatSymbols_mn_Cyrl', 'goog.labs.i18n.ListFormatSymbols_mn_Cyrl_MN', 'goog.labs.i18n.ListFormatSymbols_mr_IN', 'goog.labs.i18n.ListFormatSymbols_ms_Latn', 'goog.labs.i18n.ListFormatSymbols_ms_Latn_BN', 'goog.labs.i18n.ListFormatSymbols_ms_Latn_MY', 'goog.labs.i18n.ListFormatSymbols_ms_Latn_SG', 'goog.labs.i18n.ListFormatSymbols_mt_MT', 'goog.labs.i18n.ListFormatSymbols_mua', 'goog.labs.i18n.ListFormatSymbols_mua_CM', 'goog.labs.i18n.ListFormatSymbols_my_MM', 'goog.labs.i18n.ListFormatSymbols_naq', 'goog.labs.i18n.ListFormatSymbols_naq_NA', 'goog.labs.i18n.ListFormatSymbols_nb_NO', 'goog.labs.i18n.ListFormatSymbols_nb_SJ', 'goog.labs.i18n.ListFormatSymbols_nd', 'goog.labs.i18n.ListFormatSymbols_nd_ZW', 'goog.labs.i18n.ListFormatSymbols_ne_IN', 'goog.labs.i18n.ListFormatSymbols_ne_NP', 'goog.labs.i18n.ListFormatSymbols_nl_AW', 'goog.labs.i18n.ListFormatSymbols_nl_BE', 'goog.labs.i18n.ListFormatSymbols_nl_BQ', 'goog.labs.i18n.ListFormatSymbols_nl_CW', 'goog.labs.i18n.ListFormatSymbols_nl_NL', 'goog.labs.i18n.ListFormatSymbols_nl_SR', 'goog.labs.i18n.ListFormatSymbols_nl_SX', 'goog.labs.i18n.ListFormatSymbols_nmg', 'goog.labs.i18n.ListFormatSymbols_nmg_CM', 'goog.labs.i18n.ListFormatSymbols_nn', 'goog.labs.i18n.ListFormatSymbols_nn_NO', 'goog.labs.i18n.ListFormatSymbols_nnh', 'goog.labs.i18n.ListFormatSymbols_nnh_CM', 'goog.labs.i18n.ListFormatSymbols_nus', 'goog.labs.i18n.ListFormatSymbols_nus_SD', 'goog.labs.i18n.ListFormatSymbols_nyn', 'goog.labs.i18n.ListFormatSymbols_nyn_UG', 'goog.labs.i18n.ListFormatSymbols_om', 'goog.labs.i18n.ListFormatSymbols_om_ET', 'goog.labs.i18n.ListFormatSymbols_om_KE', 'goog.labs.i18n.ListFormatSymbols_or_IN', 'goog.labs.i18n.ListFormatSymbols_os', 'goog.labs.i18n.ListFormatSymbols_os_GE', 'goog.labs.i18n.ListFormatSymbols_os_RU', 'goog.labs.i18n.ListFormatSymbols_pa_Arab', 'goog.labs.i18n.ListFormatSymbols_pa_Arab_PK', 'goog.labs.i18n.ListFormatSymbols_pa_Guru', 'goog.labs.i18n.ListFormatSymbols_pa_Guru_IN', 'goog.labs.i18n.ListFormatSymbols_pl_PL', 'goog.labs.i18n.ListFormatSymbols_ps', 'goog.labs.i18n.ListFormatSymbols_ps_AF', 'goog.labs.i18n.ListFormatSymbols_pt_AO', 'goog.labs.i18n.ListFormatSymbols_pt_CV', 'goog.labs.i18n.ListFormatSymbols_pt_GW', 'goog.labs.i18n.ListFormatSymbols_pt_MO', 'goog.labs.i18n.ListFormatSymbols_pt_MZ', 'goog.labs.i18n.ListFormatSymbols_pt_ST', 'goog.labs.i18n.ListFormatSymbols_pt_TL', 'goog.labs.i18n.ListFormatSymbols_qu', 'goog.labs.i18n.ListFormatSymbols_qu_BO', 'goog.labs.i18n.ListFormatSymbols_qu_EC', 'goog.labs.i18n.ListFormatSymbols_qu_PE', 'goog.labs.i18n.ListFormatSymbols_rm', 'goog.labs.i18n.ListFormatSymbols_rm_CH', 'goog.labs.i18n.ListFormatSymbols_rn', 'goog.labs.i18n.ListFormatSymbols_rn_BI', 'goog.labs.i18n.ListFormatSymbols_ro_MD', 'goog.labs.i18n.ListFormatSymbols_ro_RO', 'goog.labs.i18n.ListFormatSymbols_rof', 'goog.labs.i18n.ListFormatSymbols_rof_TZ', 'goog.labs.i18n.ListFormatSymbols_ru_BY', 'goog.labs.i18n.ListFormatSymbols_ru_KG', 'goog.labs.i18n.ListFormatSymbols_ru_KZ', 'goog.labs.i18n.ListFormatSymbols_ru_MD', 'goog.labs.i18n.ListFormatSymbols_ru_RU', 'goog.labs.i18n.ListFormatSymbols_ru_UA', 'goog.labs.i18n.ListFormatSymbols_rw', 'goog.labs.i18n.ListFormatSymbols_rw_RW', 'goog.labs.i18n.ListFormatSymbols_rwk', 'goog.labs.i18n.ListFormatSymbols_rwk_TZ', 'goog.labs.i18n.ListFormatSymbols_sah', 'goog.labs.i18n.ListFormatSymbols_sah_RU', 'goog.labs.i18n.ListFormatSymbols_saq', 'goog.labs.i18n.ListFormatSymbols_saq_KE', 'goog.labs.i18n.ListFormatSymbols_sbp', 'goog.labs.i18n.ListFormatSymbols_sbp_TZ', 'goog.labs.i18n.ListFormatSymbols_se', 'goog.labs.i18n.ListFormatSymbols_se_FI', 'goog.labs.i18n.ListFormatSymbols_se_NO', 'goog.labs.i18n.ListFormatSymbols_se_SE', 'goog.labs.i18n.ListFormatSymbols_seh', 'goog.labs.i18n.ListFormatSymbols_seh_MZ', 'goog.labs.i18n.ListFormatSymbols_ses', 'goog.labs.i18n.ListFormatSymbols_ses_ML', 'goog.labs.i18n.ListFormatSymbols_sg', 'goog.labs.i18n.ListFormatSymbols_sg_CF', 'goog.labs.i18n.ListFormatSymbols_shi', 'goog.labs.i18n.ListFormatSymbols_shi_Latn', 'goog.labs.i18n.ListFormatSymbols_shi_Latn_MA', 'goog.labs.i18n.ListFormatSymbols_shi_Tfng', 'goog.labs.i18n.ListFormatSymbols_shi_Tfng_MA', 'goog.labs.i18n.ListFormatSymbols_si_LK', 'goog.labs.i18n.ListFormatSymbols_sk_SK', 'goog.labs.i18n.ListFormatSymbols_sl_SI', 'goog.labs.i18n.ListFormatSymbols_smn', 'goog.labs.i18n.ListFormatSymbols_smn_FI', 'goog.labs.i18n.ListFormatSymbols_sn', 'goog.labs.i18n.ListFormatSymbols_sn_ZW', 'goog.labs.i18n.ListFormatSymbols_so', 'goog.labs.i18n.ListFormatSymbols_so_DJ', 'goog.labs.i18n.ListFormatSymbols_so_ET', 'goog.labs.i18n.ListFormatSymbols_so_KE', 'goog.labs.i18n.ListFormatSymbols_so_SO', 'goog.labs.i18n.ListFormatSymbols_sq_AL', 'goog.labs.i18n.ListFormatSymbols_sq_MK', 'goog.labs.i18n.ListFormatSymbols_sq_XK', 'goog.labs.i18n.ListFormatSymbols_sr_Cyrl', 'goog.labs.i18n.ListFormatSymbols_sr_Cyrl_BA', 'goog.labs.i18n.ListFormatSymbols_sr_Cyrl_ME', 'goog.labs.i18n.ListFormatSymbols_sr_Cyrl_RS', 'goog.labs.i18n.ListFormatSymbols_sr_Cyrl_XK', 'goog.labs.i18n.ListFormatSymbols_sr_Latn_BA', 'goog.labs.i18n.ListFormatSymbols_sr_Latn_ME', 'goog.labs.i18n.ListFormatSymbols_sr_Latn_RS', 'goog.labs.i18n.ListFormatSymbols_sr_Latn_XK', 'goog.labs.i18n.ListFormatSymbols_sv_AX', 'goog.labs.i18n.ListFormatSymbols_sv_FI', 'goog.labs.i18n.ListFormatSymbols_sv_SE', 'goog.labs.i18n.ListFormatSymbols_sw_CD', 'goog.labs.i18n.ListFormatSymbols_sw_KE', 'goog.labs.i18n.ListFormatSymbols_sw_TZ', 'goog.labs.i18n.ListFormatSymbols_sw_UG', 'goog.labs.i18n.ListFormatSymbols_ta_IN', 'goog.labs.i18n.ListFormatSymbols_ta_LK', 'goog.labs.i18n.ListFormatSymbols_ta_MY', 'goog.labs.i18n.ListFormatSymbols_ta_SG', 'goog.labs.i18n.ListFormatSymbols_te_IN', 'goog.labs.i18n.ListFormatSymbols_teo', 'goog.labs.i18n.ListFormatSymbols_teo_KE', 'goog.labs.i18n.ListFormatSymbols_teo_UG', 'goog.labs.i18n.ListFormatSymbols_th_TH', 'goog.labs.i18n.ListFormatSymbols_ti', 'goog.labs.i18n.ListFormatSymbols_ti_ER', 'goog.labs.i18n.ListFormatSymbols_ti_ET', 'goog.labs.i18n.ListFormatSymbols_to', 'goog.labs.i18n.ListFormatSymbols_to_TO', 'goog.labs.i18n.ListFormatSymbols_tr_CY', 'goog.labs.i18n.ListFormatSymbols_tr_TR', 'goog.labs.i18n.ListFormatSymbols_twq', 'goog.labs.i18n.ListFormatSymbols_twq_NE', 'goog.labs.i18n.ListFormatSymbols_tzm', 'goog.labs.i18n.ListFormatSymbols_tzm_Latn', 'goog.labs.i18n.ListFormatSymbols_tzm_Latn_MA', 'goog.labs.i18n.ListFormatSymbols_ug', 'goog.labs.i18n.ListFormatSymbols_ug_Arab', 'goog.labs.i18n.ListFormatSymbols_ug_Arab_CN', 'goog.labs.i18n.ListFormatSymbols_uk_UA', 'goog.labs.i18n.ListFormatSymbols_ur_IN', 'goog.labs.i18n.ListFormatSymbols_ur_PK', 'goog.labs.i18n.ListFormatSymbols_uz_Arab', 'goog.labs.i18n.ListFormatSymbols_uz_Arab_AF', 'goog.labs.i18n.ListFormatSymbols_uz_Cyrl', 'goog.labs.i18n.ListFormatSymbols_uz_Cyrl_UZ', 'goog.labs.i18n.ListFormatSymbols_uz_Latn', 'goog.labs.i18n.ListFormatSymbols_uz_Latn_UZ', 'goog.labs.i18n.ListFormatSymbols_vai', 'goog.labs.i18n.ListFormatSymbols_vai_Latn', 'goog.labs.i18n.ListFormatSymbols_vai_Latn_LR', 'goog.labs.i18n.ListFormatSymbols_vai_Vaii', 'goog.labs.i18n.ListFormatSymbols_vai_Vaii_LR', 'goog.labs.i18n.ListFormatSymbols_vi_VN', 'goog.labs.i18n.ListFormatSymbols_vun', 'goog.labs.i18n.ListFormatSymbols_vun_TZ', 'goog.labs.i18n.ListFormatSymbols_wae', 'goog.labs.i18n.ListFormatSymbols_wae_CH', 'goog.labs.i18n.ListFormatSymbols_xog', 'goog.labs.i18n.ListFormatSymbols_xog_UG', 'goog.labs.i18n.ListFormatSymbols_yav', 'goog.labs.i18n.ListFormatSymbols_yav_CM', 'goog.labs.i18n.ListFormatSymbols_yi', 'goog.labs.i18n.ListFormatSymbols_yi_001', 'goog.labs.i18n.ListFormatSymbols_yo', 'goog.labs.i18n.ListFormatSymbols_yo_BJ', 'goog.labs.i18n.ListFormatSymbols_yo_NG', 'goog.labs.i18n.ListFormatSymbols_zgh', 'goog.labs.i18n.ListFormatSymbols_zgh_MA', 'goog.labs.i18n.ListFormatSymbols_zh_Hans', 'goog.labs.i18n.ListFormatSymbols_zh_Hans_CN', 'goog.labs.i18n.ListFormatSymbols_zh_Hans_HK', 'goog.labs.i18n.ListFormatSymbols_zh_Hans_MO', 'goog.labs.i18n.ListFormatSymbols_zh_Hans_SG', 'goog.labs.i18n.ListFormatSymbols_zh_Hant', 'goog.labs.i18n.ListFormatSymbols_zh_Hant_HK', 'goog.labs.i18n.ListFormatSymbols_zh_Hant_MO', 'goog.labs.i18n.ListFormatSymbols_zh_Hant_TW', 'goog.labs.i18n.ListFormatSymbols_zu_ZA'], ['goog.labs.i18n.ListFormatSymbols'], false); -goog.addDependency('labs/iterable/iterable.js', ['goog.labs.iterable'], [], true); -goog.addDependency('labs/iterable/iterable_test.js', ['goog.labs.iterableTest'], ['goog.labs.iterable', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.testing.testSuite'], true); -goog.addDependency('labs/mock/mock.js', ['goog.labs.mock', 'goog.labs.mock.VerificationError'], ['goog.array', 'goog.asserts', 'goog.debug', 'goog.debug.Error', 'goog.functions', 'goog.object'], false); -goog.addDependency('labs/mock/mock_test.js', ['goog.labs.mockTest'], ['goog.array', 'goog.labs.mock', 'goog.labs.mock.VerificationError', 'goog.labs.testing.AnythingMatcher', 'goog.labs.testing.GreaterThanMatcher', 'goog.string', 'goog.testing.jsunit'], false); -goog.addDependency('labs/net/image.js', ['goog.labs.net.image'], ['goog.Promise', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.net.EventType', 'goog.userAgent'], false); -goog.addDependency('labs/net/image_test.js', ['goog.labs.net.imageTest'], ['goog.labs.net.image', 'goog.string', 'goog.testing.TestCase', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('labs/net/webchannel.js', ['goog.net.WebChannel'], ['goog.events', 'goog.events.Event'], false); -goog.addDependency('labs/net/webchannel/basetestchannel.js', ['goog.labs.net.webChannel.BaseTestChannel'], ['goog.labs.net.webChannel.Channel', 'goog.labs.net.webChannel.ChannelRequest', 'goog.labs.net.webChannel.requestStats', 'goog.labs.net.webChannel.requestStats.Stat'], false); -goog.addDependency('labs/net/webchannel/channel.js', ['goog.labs.net.webChannel.Channel'], [], false); -goog.addDependency('labs/net/webchannel/channelrequest.js', ['goog.labs.net.webChannel.ChannelRequest'], ['goog.Timer', 'goog.async.Throttle', 'goog.events.EventHandler', 'goog.labs.net.webChannel.requestStats', 'goog.labs.net.webChannel.requestStats.ServerReachability', 'goog.labs.net.webChannel.requestStats.Stat', 'goog.net.ErrorCode', 'goog.net.EventType', 'goog.net.XmlHttp', 'goog.object', 'goog.userAgent'], false); -goog.addDependency('labs/net/webchannel/channelrequest_test.js', ['goog.labs.net.webChannel.channelRequestTest'], ['goog.Uri', 'goog.functions', 'goog.labs.net.webChannel.ChannelRequest', 'goog.labs.net.webChannel.WebChannelDebug', 'goog.labs.net.webChannel.requestStats', 'goog.labs.net.webChannel.requestStats.ServerReachability', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.net.XhrIo', 'goog.testing.recordFunction'], false); -goog.addDependency('labs/net/webchannel/connectionstate.js', ['goog.labs.net.webChannel.ConnectionState'], [], false); -goog.addDependency('labs/net/webchannel/forwardchannelrequestpool.js', ['goog.labs.net.webChannel.ForwardChannelRequestPool'], ['goog.array', 'goog.string', 'goog.structs.Set'], false); -goog.addDependency('labs/net/webchannel/forwardchannelrequestpool_test.js', ['goog.labs.net.webChannel.forwardChannelRequestPoolTest'], ['goog.labs.net.webChannel.ChannelRequest', 'goog.labs.net.webChannel.ForwardChannelRequestPool', 'goog.testing.PropertyReplacer', 'goog.testing.asserts', 'goog.testing.jsunit'], false); -goog.addDependency('labs/net/webchannel/netutils.js', ['goog.labs.net.webChannel.netUtils'], ['goog.Uri', 'goog.labs.net.webChannel.WebChannelDebug'], false); -goog.addDependency('labs/net/webchannel/requeststats.js', ['goog.labs.net.webChannel.requestStats', 'goog.labs.net.webChannel.requestStats.Event', 'goog.labs.net.webChannel.requestStats.ServerReachability', 'goog.labs.net.webChannel.requestStats.ServerReachabilityEvent', 'goog.labs.net.webChannel.requestStats.Stat', 'goog.labs.net.webChannel.requestStats.StatEvent', 'goog.labs.net.webChannel.requestStats.TimingEvent'], ['goog.events.Event', 'goog.events.EventTarget'], false); -goog.addDependency('labs/net/webchannel/webchannelbase.js', ['goog.labs.net.webChannel.WebChannelBase'], ['goog.Uri', 'goog.array', 'goog.asserts', 'goog.debug.TextFormatter', 'goog.json', 'goog.labs.net.webChannel.BaseTestChannel', 'goog.labs.net.webChannel.Channel', 'goog.labs.net.webChannel.ChannelRequest', 'goog.labs.net.webChannel.ConnectionState', 'goog.labs.net.webChannel.ForwardChannelRequestPool', 'goog.labs.net.webChannel.WebChannelDebug', 'goog.labs.net.webChannel.Wire', 'goog.labs.net.webChannel.WireV8', 'goog.labs.net.webChannel.netUtils', 'goog.labs.net.webChannel.requestStats', 'goog.labs.net.webChannel.requestStats.Stat', 'goog.log', 'goog.net.XhrIo', 'goog.object', 'goog.string', 'goog.structs', 'goog.structs.CircularBuffer'], false); -goog.addDependency('labs/net/webchannel/webchannelbase_test.js', ['goog.labs.net.webChannel.webChannelBaseTest'], ['goog.Timer', 'goog.array', 'goog.dom', 'goog.functions', 'goog.json', 'goog.labs.net.webChannel.ChannelRequest', 'goog.labs.net.webChannel.ForwardChannelRequestPool', 'goog.labs.net.webChannel.WebChannelBase', 'goog.labs.net.webChannel.WebChannelBaseTransport', 'goog.labs.net.webChannel.WebChannelDebug', 'goog.labs.net.webChannel.Wire', 'goog.labs.net.webChannel.netUtils', 'goog.labs.net.webChannel.requestStats', 'goog.labs.net.webChannel.requestStats.Stat', 'goog.structs.Map', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.asserts', 'goog.testing.jsunit'], false); -goog.addDependency('labs/net/webchannel/webchannelbasetransport.js', ['goog.labs.net.webChannel.WebChannelBaseTransport'], ['goog.asserts', 'goog.events.EventTarget', 'goog.labs.net.webChannel.ChannelRequest', 'goog.labs.net.webChannel.WebChannelBase', 'goog.log', 'goog.net.WebChannel', 'goog.net.WebChannelTransport', 'goog.object', 'goog.string.path'], false); -goog.addDependency('labs/net/webchannel/webchannelbasetransport_test.js', ['goog.labs.net.webChannel.webChannelBaseTransportTest'], ['goog.events', 'goog.functions', 'goog.labs.net.webChannel.ChannelRequest', 'goog.labs.net.webChannel.WebChannelBaseTransport', 'goog.net.WebChannel', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('labs/net/webchannel/webchanneldebug.js', ['goog.labs.net.webChannel.WebChannelDebug'], ['goog.json', 'goog.log'], false); -goog.addDependency('labs/net/webchannel/wire.js', ['goog.labs.net.webChannel.Wire'], [], false); -goog.addDependency('labs/net/webchannel/wirev8.js', ['goog.labs.net.webChannel.WireV8'], ['goog.asserts', 'goog.json', 'goog.json.NativeJsonProcessor', 'goog.structs'], false); -goog.addDependency('labs/net/webchannel/wirev8_test.js', ['goog.labs.net.webChannel.WireV8Test'], ['goog.labs.net.webChannel.WireV8', 'goog.testing.jsunit'], false); -goog.addDependency('labs/net/webchanneltransport.js', ['goog.net.WebChannelTransport'], [], false); -goog.addDependency('labs/net/webchanneltransportfactory.js', ['goog.net.createWebChannelTransport'], ['goog.functions', 'goog.labs.net.webChannel.WebChannelBaseTransport'], false); -goog.addDependency('labs/net/xhr.js', ['goog.labs.net.xhr', 'goog.labs.net.xhr.Error', 'goog.labs.net.xhr.HttpError', 'goog.labs.net.xhr.Options', 'goog.labs.net.xhr.PostData', 'goog.labs.net.xhr.ResponseType', 'goog.labs.net.xhr.TimeoutError'], ['goog.Promise', 'goog.debug.Error', 'goog.json', 'goog.net.HttpStatus', 'goog.net.XmlHttp', 'goog.string', 'goog.uri.utils', 'goog.userAgent'], false); -goog.addDependency('labs/net/xhr_test.js', ['goog.labs.net.xhrTest'], ['goog.Promise', 'goog.labs.net.xhr', 'goog.net.WrapperXmlHttpFactory', 'goog.net.XmlHttp', 'goog.testing.MockClock', 'goog.testing.TestCase', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('labs/object/object.js', ['goog.labs.object'], [], false); -goog.addDependency('labs/object/object_test.js', ['goog.labs.objectTest'], ['goog.labs.object', 'goog.testing.jsunit'], false); -goog.addDependency('labs/pubsub/broadcastpubsub.js', ['goog.labs.pubsub.BroadcastPubSub'], ['goog.Disposable', 'goog.Timer', 'goog.array', 'goog.async.run', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.json', 'goog.log', 'goog.math', 'goog.pubsub.PubSub', 'goog.storage.Storage', 'goog.storage.mechanism.HTML5LocalStorage', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('labs/pubsub/broadcastpubsub_test.js', ['goog.labs.pubsub.BroadcastPubSubTest'], ['goog.array', 'goog.debug.Logger', 'goog.json', 'goog.labs.pubsub.BroadcastPubSub', 'goog.storage.Storage', 'goog.structs.Map', 'goog.testing.MockClock', 'goog.testing.MockControl', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.testing.mockmatchers', 'goog.testing.mockmatchers.ArgumentMatcher', 'goog.testing.recordFunction', 'goog.userAgent'], false); -goog.addDependency('labs/storage/boundedcollectablestorage.js', ['goog.labs.storage.BoundedCollectableStorage'], ['goog.array', 'goog.asserts', 'goog.iter', 'goog.storage.CollectableStorage', 'goog.storage.ErrorCode', 'goog.storage.ExpiringStorage'], false); -goog.addDependency('labs/storage/boundedcollectablestorage_test.js', ['goog.labs.storage.BoundedCollectableStorageTest'], ['goog.labs.storage.BoundedCollectableStorage', 'goog.storage.collectableStorageTester', 'goog.storage.storage_test', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.testing.storage.FakeMechanism'], false); -goog.addDependency('labs/structs/map.js', ['goog.labs.structs.Map'], ['goog.array', 'goog.asserts', 'goog.labs.object', 'goog.object'], false); -goog.addDependency('labs/structs/map_perf.js', ['goog.labs.structs.MapPerf'], ['goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.labs.structs.Map', 'goog.structs.Map', 'goog.testing.PerformanceTable', 'goog.testing.jsunit'], false); -goog.addDependency('labs/structs/map_test.js', ['goog.labs.structs.MapTest'], ['goog.labs.structs.Map', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('labs/structs/multimap.js', ['goog.labs.structs.Multimap'], ['goog.array', 'goog.labs.object', 'goog.labs.structs.Map'], false); -goog.addDependency('labs/structs/multimap_test.js', ['goog.labs.structs.MultimapTest'], ['goog.labs.structs.Map', 'goog.labs.structs.Multimap', 'goog.testing.jsunit'], false); -goog.addDependency('labs/style/pixeldensitymonitor.js', ['goog.labs.style.PixelDensityMonitor', 'goog.labs.style.PixelDensityMonitor.Density', 'goog.labs.style.PixelDensityMonitor.EventType'], ['goog.events', 'goog.events.EventTarget'], false); -goog.addDependency('labs/style/pixeldensitymonitor_test.js', ['goog.labs.style.PixelDensityMonitorTest'], ['goog.array', 'goog.dom.DomHelper', 'goog.events', 'goog.labs.style.PixelDensityMonitor', 'goog.testing.MockControl', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('labs/testing/assertthat.js', ['goog.labs.testing.MatcherError', 'goog.labs.testing.assertThat'], ['goog.debug.Error'], false); -goog.addDependency('labs/testing/assertthat_test.js', ['goog.labs.testing.assertThatTest'], ['goog.labs.testing.MatcherError', 'goog.labs.testing.assertThat', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('labs/testing/decoratormatcher.js', ['goog.labs.testing.AnythingMatcher'], ['goog.labs.testing.Matcher'], false); -goog.addDependency('labs/testing/decoratormatcher_test.js', ['goog.labs.testing.decoratorMatcherTest'], ['goog.labs.testing.AnythingMatcher', 'goog.labs.testing.GreaterThanMatcher', 'goog.labs.testing.MatcherError', 'goog.labs.testing.assertThat', 'goog.testing.jsunit'], false); -goog.addDependency('labs/testing/dictionarymatcher.js', ['goog.labs.testing.HasEntriesMatcher', 'goog.labs.testing.HasEntryMatcher', 'goog.labs.testing.HasKeyMatcher', 'goog.labs.testing.HasValueMatcher'], ['goog.asserts', 'goog.labs.testing.Matcher', 'goog.object'], false); -goog.addDependency('labs/testing/dictionarymatcher_test.js', ['goog.labs.testing.dictionaryMatcherTest'], ['goog.labs.testing.HasEntryMatcher', 'goog.labs.testing.MatcherError', 'goog.labs.testing.assertThat', 'goog.testing.jsunit'], false); -goog.addDependency('labs/testing/environment.js', ['goog.labs.testing.Environment'], ['goog.array', 'goog.asserts', 'goog.debug.Console', 'goog.testing.MockClock', 'goog.testing.MockControl', 'goog.testing.TestCase', 'goog.testing.jsunit'], false); -goog.addDependency('labs/testing/environment_test.js', ['goog.labs.testing.environmentTest'], ['goog.labs.testing.Environment', 'goog.testing.MockControl', 'goog.testing.PropertyReplacer', 'goog.testing.TestCase', 'goog.testing.jsunit', 'goog.testing.testSuite'], false); -goog.addDependency('labs/testing/environment_usage_test.js', ['goog.labs.testing.environmentUsageTest'], ['goog.labs.testing.Environment'], false); -goog.addDependency('labs/testing/logicmatcher.js', ['goog.labs.testing.AllOfMatcher', 'goog.labs.testing.AnyOfMatcher', 'goog.labs.testing.IsNotMatcher'], ['goog.array', 'goog.labs.testing.Matcher'], false); -goog.addDependency('labs/testing/logicmatcher_test.js', ['goog.labs.testing.logicMatcherTest'], ['goog.labs.testing.AllOfMatcher', 'goog.labs.testing.GreaterThanMatcher', 'goog.labs.testing.MatcherError', 'goog.labs.testing.assertThat', 'goog.testing.jsunit'], false); -goog.addDependency('labs/testing/matcher.js', ['goog.labs.testing.Matcher'], [], false); -goog.addDependency('labs/testing/numbermatcher.js', ['goog.labs.testing.CloseToMatcher', 'goog.labs.testing.EqualToMatcher', 'goog.labs.testing.GreaterThanEqualToMatcher', 'goog.labs.testing.GreaterThanMatcher', 'goog.labs.testing.LessThanEqualToMatcher', 'goog.labs.testing.LessThanMatcher'], ['goog.asserts', 'goog.labs.testing.Matcher'], false); -goog.addDependency('labs/testing/numbermatcher_test.js', ['goog.labs.testing.numberMatcherTest'], ['goog.labs.testing.LessThanMatcher', 'goog.labs.testing.MatcherError', 'goog.labs.testing.assertThat', 'goog.testing.jsunit'], false); -goog.addDependency('labs/testing/objectmatcher.js', ['goog.labs.testing.HasPropertyMatcher', 'goog.labs.testing.InstanceOfMatcher', 'goog.labs.testing.IsNullMatcher', 'goog.labs.testing.IsNullOrUndefinedMatcher', 'goog.labs.testing.IsUndefinedMatcher', 'goog.labs.testing.ObjectEqualsMatcher'], ['goog.labs.testing.Matcher'], false); -goog.addDependency('labs/testing/objectmatcher_test.js', ['goog.labs.testing.objectMatcherTest'], ['goog.labs.testing.MatcherError', 'goog.labs.testing.ObjectEqualsMatcher', 'goog.labs.testing.assertThat', 'goog.testing.jsunit'], false); -goog.addDependency('labs/testing/stringmatcher.js', ['goog.labs.testing.ContainsStringMatcher', 'goog.labs.testing.EndsWithMatcher', 'goog.labs.testing.EqualToIgnoringWhitespaceMatcher', 'goog.labs.testing.EqualsMatcher', 'goog.labs.testing.RegexMatcher', 'goog.labs.testing.StartsWithMatcher', 'goog.labs.testing.StringContainsInOrderMatcher'], ['goog.asserts', 'goog.labs.testing.Matcher', 'goog.string'], false); -goog.addDependency('labs/testing/stringmatcher_test.js', ['goog.labs.testing.stringMatcherTest'], ['goog.labs.testing.MatcherError', 'goog.labs.testing.StringContainsInOrderMatcher', 'goog.labs.testing.assertThat', 'goog.testing.jsunit'], false); -goog.addDependency('labs/useragent/browser.js', ['goog.labs.userAgent.browser'], ['goog.array', 'goog.labs.userAgent.util', 'goog.object', 'goog.string'], false); -goog.addDependency('labs/useragent/browser_test.js', ['goog.labs.userAgent.browserTest'], ['goog.labs.userAgent.browser', 'goog.labs.userAgent.testAgents', 'goog.labs.userAgent.util', 'goog.object', 'goog.testing.jsunit'], false); -goog.addDependency('labs/useragent/device.js', ['goog.labs.userAgent.device'], ['goog.labs.userAgent.util'], false); -goog.addDependency('labs/useragent/device_test.js', ['goog.labs.userAgent.deviceTest'], ['goog.labs.userAgent.device', 'goog.labs.userAgent.testAgents', 'goog.labs.userAgent.util', 'goog.testing.jsunit'], false); -goog.addDependency('labs/useragent/engine.js', ['goog.labs.userAgent.engine'], ['goog.array', 'goog.labs.userAgent.util', 'goog.string'], false); -goog.addDependency('labs/useragent/engine_test.js', ['goog.labs.userAgent.engineTest'], ['goog.labs.userAgent.engine', 'goog.labs.userAgent.testAgents', 'goog.labs.userAgent.util', 'goog.testing.jsunit'], false); -goog.addDependency('labs/useragent/platform.js', ['goog.labs.userAgent.platform'], ['goog.labs.userAgent.util', 'goog.string'], false); -goog.addDependency('labs/useragent/platform_test.js', ['goog.labs.userAgent.platformTest'], ['goog.labs.userAgent.platform', 'goog.labs.userAgent.testAgents', 'goog.labs.userAgent.util', 'goog.testing.jsunit'], false); -goog.addDependency('labs/useragent/test_agents.js', ['goog.labs.userAgent.testAgents'], [], false); -goog.addDependency('labs/useragent/util.js', ['goog.labs.userAgent.util'], ['goog.string'], false); -goog.addDependency('labs/useragent/util_test.js', ['goog.labs.userAgent.utilTest'], ['goog.functions', 'goog.labs.userAgent.testAgents', 'goog.labs.userAgent.util', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('locale/countries.js', ['goog.locale.countries'], [], false); -goog.addDependency('locale/countrylanguagenames_test.js', ['goog.locale.countryLanguageNamesTest'], ['goog.locale', 'goog.testing.jsunit'], false); -goog.addDependency('locale/defaultlocalenameconstants.js', ['goog.locale.defaultLocaleNameConstants'], [], false); -goog.addDependency('locale/genericfontnames.js', ['goog.locale.genericFontNames'], [], false); -goog.addDependency('locale/genericfontnames_test.js', ['goog.locale.genericFontNamesTest'], ['goog.locale.genericFontNames', 'goog.testing.jsunit'], false); -goog.addDependency('locale/genericfontnamesdata.js', ['goog.locale.genericFontNamesData'], [], false); -goog.addDependency('locale/locale.js', ['goog.locale'], ['goog.locale.nativeNameConstants'], false); -goog.addDependency('locale/nativenameconstants.js', ['goog.locale.nativeNameConstants'], [], false); -goog.addDependency('locale/scriptToLanguages.js', ['goog.locale.scriptToLanguages'], ['goog.locale'], false); -goog.addDependency('locale/timezonedetection.js', ['goog.locale.timeZoneDetection'], ['goog.locale.TimeZoneFingerprint'], false); -goog.addDependency('locale/timezonedetection_test.js', ['goog.locale.timeZoneDetectionTest'], ['goog.locale.timeZoneDetection', 'goog.testing.jsunit'], false); -goog.addDependency('locale/timezonefingerprint.js', ['goog.locale.TimeZoneFingerprint'], [], false); -goog.addDependency('locale/timezonelist.js', ['goog.locale.TimeZoneList'], ['goog.locale'], false); -goog.addDependency('locale/timezonelist_test.js', ['goog.locale.TimeZoneListTest'], ['goog.locale', 'goog.locale.TimeZoneList', 'goog.testing.jsunit'], false); -goog.addDependency('log/log.js', ['goog.log', 'goog.log.Level', 'goog.log.LogRecord', 'goog.log.Logger'], ['goog.debug', 'goog.debug.LogManager', 'goog.debug.LogRecord', 'goog.debug.Logger'], false); -goog.addDependency('log/log_test.js', ['goog.logTest'], ['goog.debug.LogManager', 'goog.log', 'goog.log.Level', 'goog.testing.jsunit'], false); -goog.addDependency('math/affinetransform.js', ['goog.math.AffineTransform'], ['goog.math'], false); -goog.addDependency('math/affinetransform_test.js', ['goog.math.AffineTransformTest'], ['goog.array', 'goog.math', 'goog.math.AffineTransform', 'goog.testing.jsunit'], false); -goog.addDependency('math/bezier.js', ['goog.math.Bezier'], ['goog.math', 'goog.math.Coordinate'], false); -goog.addDependency('math/bezier_test.js', ['goog.math.BezierTest'], ['goog.math', 'goog.math.Bezier', 'goog.math.Coordinate', 'goog.testing.jsunit'], false); -goog.addDependency('math/box.js', ['goog.math.Box'], ['goog.math.Coordinate'], false); -goog.addDependency('math/box_test.js', ['goog.math.BoxTest'], ['goog.math.Box', 'goog.math.Coordinate', 'goog.testing.jsunit'], false); -goog.addDependency('math/coordinate.js', ['goog.math.Coordinate'], ['goog.math'], false); -goog.addDependency('math/coordinate3.js', ['goog.math.Coordinate3'], [], false); -goog.addDependency('math/coordinate3_test.js', ['goog.math.Coordinate3Test'], ['goog.math.Coordinate3', 'goog.testing.jsunit'], false); -goog.addDependency('math/coordinate_test.js', ['goog.math.CoordinateTest'], ['goog.math.Coordinate', 'goog.testing.jsunit'], false); -goog.addDependency('math/exponentialbackoff.js', ['goog.math.ExponentialBackoff'], ['goog.asserts'], false); -goog.addDependency('math/exponentialbackoff_test.js', ['goog.math.ExponentialBackoffTest'], ['goog.math.ExponentialBackoff', 'goog.testing.jsunit'], false); -goog.addDependency('math/integer.js', ['goog.math.Integer'], [], false); -goog.addDependency('math/integer_test.js', ['goog.math.IntegerTest'], ['goog.math.Integer', 'goog.testing.jsunit'], false); -goog.addDependency('math/interpolator/interpolator1.js', ['goog.math.interpolator.Interpolator1'], [], false); -goog.addDependency('math/interpolator/linear1.js', ['goog.math.interpolator.Linear1'], ['goog.array', 'goog.asserts', 'goog.math', 'goog.math.interpolator.Interpolator1'], false); -goog.addDependency('math/interpolator/linear1_test.js', ['goog.math.interpolator.Linear1Test'], ['goog.math.interpolator.Linear1', 'goog.testing.jsunit'], false); -goog.addDependency('math/interpolator/pchip1.js', ['goog.math.interpolator.Pchip1'], ['goog.math', 'goog.math.interpolator.Spline1'], false); -goog.addDependency('math/interpolator/pchip1_test.js', ['goog.math.interpolator.Pchip1Test'], ['goog.math.interpolator.Pchip1', 'goog.testing.jsunit'], false); -goog.addDependency('math/interpolator/spline1.js', ['goog.math.interpolator.Spline1'], ['goog.array', 'goog.asserts', 'goog.math', 'goog.math.interpolator.Interpolator1', 'goog.math.tdma'], false); -goog.addDependency('math/interpolator/spline1_test.js', ['goog.math.interpolator.Spline1Test'], ['goog.math.interpolator.Spline1', 'goog.testing.jsunit'], false); -goog.addDependency('math/line.js', ['goog.math.Line'], ['goog.math', 'goog.math.Coordinate'], false); -goog.addDependency('math/line_test.js', ['goog.math.LineTest'], ['goog.math.Coordinate', 'goog.math.Line', 'goog.testing.jsunit'], false); -goog.addDependency('math/long.js', ['goog.math.Long'], [], false); -goog.addDependency('math/long_test.js', ['goog.math.LongTest'], ['goog.math.Long', 'goog.testing.jsunit'], false); -goog.addDependency('math/math.js', ['goog.math'], ['goog.array', 'goog.asserts'], false); -goog.addDependency('math/math_test.js', ['goog.mathTest'], ['goog.math', 'goog.testing.jsunit'], false); -goog.addDependency('math/matrix.js', ['goog.math.Matrix'], ['goog.array', 'goog.math', 'goog.math.Size', 'goog.string'], false); -goog.addDependency('math/matrix_test.js', ['goog.math.MatrixTest'], ['goog.math.Matrix', 'goog.testing.jsunit'], false); -goog.addDependency('math/path.js', ['goog.math.Path', 'goog.math.Path.Segment'], ['goog.array', 'goog.math'], false); -goog.addDependency('math/path_test.js', ['goog.math.PathTest'], ['goog.array', 'goog.math.AffineTransform', 'goog.math.Path', 'goog.testing.jsunit'], false); -goog.addDependency('math/paths.js', ['goog.math.paths'], ['goog.math.Coordinate', 'goog.math.Path'], false); -goog.addDependency('math/paths_test.js', ['goog.math.pathsTest'], ['goog.math.Coordinate', 'goog.math.paths', 'goog.testing.jsunit'], false); -goog.addDependency('math/range.js', ['goog.math.Range'], ['goog.asserts'], false); -goog.addDependency('math/range_test.js', ['goog.math.RangeTest'], ['goog.math.Range', 'goog.testing.jsunit'], false); -goog.addDependency('math/rangeset.js', ['goog.math.RangeSet'], ['goog.array', 'goog.iter.Iterator', 'goog.iter.StopIteration', 'goog.math.Range'], false); -goog.addDependency('math/rangeset_test.js', ['goog.math.RangeSetTest'], ['goog.iter', 'goog.math.Range', 'goog.math.RangeSet', 'goog.testing.jsunit'], false); -goog.addDependency('math/rect.js', ['goog.math.Rect'], ['goog.math.Box', 'goog.math.Coordinate', 'goog.math.Size'], false); -goog.addDependency('math/rect_test.js', ['goog.math.RectTest'], ['goog.math.Box', 'goog.math.Coordinate', 'goog.math.Rect', 'goog.math.Size', 'goog.testing.jsunit'], false); -goog.addDependency('math/size.js', ['goog.math.Size'], [], false); -goog.addDependency('math/size_test.js', ['goog.math.SizeTest'], ['goog.math.Size', 'goog.testing.jsunit'], false); -goog.addDependency('math/tdma.js', ['goog.math.tdma'], [], false); -goog.addDependency('math/tdma_test.js', ['goog.math.tdmaTest'], ['goog.math.tdma', 'goog.testing.jsunit'], false); -goog.addDependency('math/vec2.js', ['goog.math.Vec2'], ['goog.math', 'goog.math.Coordinate'], false); -goog.addDependency('math/vec2_test.js', ['goog.math.Vec2Test'], ['goog.math.Vec2', 'goog.testing.jsunit'], false); -goog.addDependency('math/vec3.js', ['goog.math.Vec3'], ['goog.math', 'goog.math.Coordinate3'], false); -goog.addDependency('math/vec3_test.js', ['goog.math.Vec3Test'], ['goog.math.Coordinate3', 'goog.math.Vec3', 'goog.testing.jsunit'], false); -goog.addDependency('memoize/memoize.js', ['goog.memoize'], [], false); -goog.addDependency('memoize/memoize_test.js', ['goog.memoizeTest'], ['goog.memoize', 'goog.testing.jsunit'], false); -goog.addDependency('messaging/abstractchannel.js', ['goog.messaging.AbstractChannel'], ['goog.Disposable', 'goog.json', 'goog.log', 'goog.messaging.MessageChannel'], false); -goog.addDependency('messaging/abstractchannel_test.js', ['goog.messaging.AbstractChannelTest'], ['goog.messaging.AbstractChannel', 'goog.testing.MockControl', 'goog.testing.async.MockControl', 'goog.testing.jsunit'], false); -goog.addDependency('messaging/bufferedchannel.js', ['goog.messaging.BufferedChannel'], ['goog.Disposable', 'goog.Timer', 'goog.events', 'goog.log', 'goog.messaging.MessageChannel', 'goog.messaging.MultiChannel'], false); -goog.addDependency('messaging/bufferedchannel_test.js', ['goog.messaging.BufferedChannelTest'], ['goog.debug.Console', 'goog.dom', 'goog.dom.TagName', 'goog.log', 'goog.log.Level', 'goog.messaging.BufferedChannel', 'goog.testing.MockClock', 'goog.testing.MockControl', 'goog.testing.async.MockControl', 'goog.testing.jsunit', 'goog.testing.messaging.MockMessageChannel'], false); -goog.addDependency('messaging/deferredchannel.js', ['goog.messaging.DeferredChannel'], ['goog.Disposable', 'goog.messaging.MessageChannel'], false); -goog.addDependency('messaging/deferredchannel_test.js', ['goog.messaging.DeferredChannelTest'], ['goog.async.Deferred', 'goog.messaging.DeferredChannel', 'goog.testing.MockControl', 'goog.testing.async.MockControl', 'goog.testing.jsunit', 'goog.testing.messaging.MockMessageChannel'], false); -goog.addDependency('messaging/loggerclient.js', ['goog.messaging.LoggerClient'], ['goog.Disposable', 'goog.debug', 'goog.debug.LogManager', 'goog.debug.Logger'], false); -goog.addDependency('messaging/loggerclient_test.js', ['goog.messaging.LoggerClientTest'], ['goog.debug', 'goog.debug.Logger', 'goog.messaging.LoggerClient', 'goog.testing.MockControl', 'goog.testing.jsunit', 'goog.testing.messaging.MockMessageChannel'], false); -goog.addDependency('messaging/loggerserver.js', ['goog.messaging.LoggerServer'], ['goog.Disposable', 'goog.log', 'goog.log.Level'], false); -goog.addDependency('messaging/loggerserver_test.js', ['goog.messaging.LoggerServerTest'], ['goog.debug.LogManager', 'goog.debug.Logger', 'goog.log', 'goog.log.Level', 'goog.messaging.LoggerServer', 'goog.testing.MockControl', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.messaging.MockMessageChannel'], false); -goog.addDependency('messaging/messagechannel.js', ['goog.messaging.MessageChannel'], [], false); -goog.addDependency('messaging/messaging.js', ['goog.messaging'], [], false); -goog.addDependency('messaging/messaging_test.js', ['goog.testing.messaging.MockMessageChannelTest'], ['goog.messaging', 'goog.testing.MockControl', 'goog.testing.jsunit', 'goog.testing.messaging.MockMessageChannel'], false); -goog.addDependency('messaging/multichannel.js', ['goog.messaging.MultiChannel', 'goog.messaging.MultiChannel.VirtualChannel'], ['goog.Disposable', 'goog.log', 'goog.messaging.MessageChannel', 'goog.object'], false); -goog.addDependency('messaging/multichannel_test.js', ['goog.messaging.MultiChannelTest'], ['goog.messaging.MultiChannel', 'goog.testing.MockControl', 'goog.testing.jsunit', 'goog.testing.messaging.MockMessageChannel', 'goog.testing.mockmatchers.IgnoreArgument'], false); -goog.addDependency('messaging/portcaller.js', ['goog.messaging.PortCaller'], ['goog.Disposable', 'goog.async.Deferred', 'goog.messaging.DeferredChannel', 'goog.messaging.PortChannel', 'goog.messaging.PortNetwork', 'goog.object'], false); -goog.addDependency('messaging/portcaller_test.js', ['goog.messaging.PortCallerTest'], ['goog.events.EventTarget', 'goog.messaging.PortCaller', 'goog.messaging.PortNetwork', 'goog.testing.MockControl', 'goog.testing.jsunit', 'goog.testing.messaging.MockMessageChannel'], false); -goog.addDependency('messaging/portchannel.js', ['goog.messaging.PortChannel'], ['goog.Timer', 'goog.array', 'goog.async.Deferred', 'goog.debug', 'goog.events', 'goog.events.EventType', 'goog.json', 'goog.log', 'goog.messaging.AbstractChannel', 'goog.messaging.DeferredChannel', 'goog.object', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('messaging/portnetwork.js', ['goog.messaging.PortNetwork'], [], false); -goog.addDependency('messaging/portoperator.js', ['goog.messaging.PortOperator'], ['goog.Disposable', 'goog.asserts', 'goog.log', 'goog.messaging.PortChannel', 'goog.messaging.PortNetwork', 'goog.object'], false); -goog.addDependency('messaging/portoperator_test.js', ['goog.messaging.PortOperatorTest'], ['goog.messaging.PortNetwork', 'goog.messaging.PortOperator', 'goog.testing.MockControl', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.messaging.MockMessageChannel', 'goog.testing.messaging.MockMessagePort'], false); -goog.addDependency('messaging/respondingchannel.js', ['goog.messaging.RespondingChannel'], ['goog.Disposable', 'goog.log', 'goog.messaging.MultiChannel'], false); -goog.addDependency('messaging/respondingchannel_test.js', ['goog.messaging.RespondingChannelTest'], ['goog.messaging.RespondingChannel', 'goog.testing.MockControl', 'goog.testing.jsunit', 'goog.testing.messaging.MockMessageChannel'], false); -goog.addDependency('messaging/testdata/portchannel_worker.js', ['goog.messaging.testdata.portchannel_worker'], ['goog.messaging.PortChannel'], false); -goog.addDependency('messaging/testdata/portnetwork_worker1.js', ['goog.messaging.testdata.portnetwork_worker1'], ['goog.messaging.PortCaller', 'goog.messaging.PortChannel'], false); -goog.addDependency('messaging/testdata/portnetwork_worker2.js', ['goog.messaging.testdata.portnetwork_worker2'], ['goog.messaging.PortCaller', 'goog.messaging.PortChannel'], false); -goog.addDependency('module/abstractmoduleloader.js', ['goog.module.AbstractModuleLoader'], ['goog.module'], false); -goog.addDependency('module/basemodule.js', ['goog.module.BaseModule'], ['goog.Disposable', 'goog.module'], false); -goog.addDependency('module/loader.js', ['goog.module.Loader'], ['goog.Timer', 'goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.module', 'goog.object'], false); -goog.addDependency('module/module.js', ['goog.module'], [], false); -goog.addDependency('module/moduleinfo.js', ['goog.module.ModuleInfo'], ['goog.Disposable', 'goog.async.throwException', 'goog.functions', 'goog.module', 'goog.module.BaseModule', 'goog.module.ModuleLoadCallback'], false); -goog.addDependency('module/moduleinfo_test.js', ['goog.module.ModuleInfoTest'], ['goog.module.BaseModule', 'goog.module.ModuleInfo', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('module/moduleloadcallback.js', ['goog.module.ModuleLoadCallback'], ['goog.debug.entryPointRegistry', 'goog.module'], false); -goog.addDependency('module/moduleloadcallback_test.js', ['goog.module.ModuleLoadCallbackTest'], ['goog.debug.ErrorHandler', 'goog.debug.entryPointRegistry', 'goog.functions', 'goog.module.ModuleLoadCallback', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('module/moduleloader.js', ['goog.module.ModuleLoader'], ['goog.Timer', 'goog.array', 'goog.events', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventId', 'goog.events.EventTarget', 'goog.labs.userAgent.browser', 'goog.log', 'goog.module.AbstractModuleLoader', 'goog.net.BulkLoader', 'goog.net.EventType', 'goog.net.jsloader', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('module/moduleloader_test.js', ['goog.module.ModuleLoaderTest'], ['goog.Promise', 'goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.functions', 'goog.module.ModuleLoader', 'goog.module.ModuleManager', 'goog.net.BulkLoader', 'goog.net.XmlHttp', 'goog.object', 'goog.testing.PropertyReplacer', 'goog.testing.TestCase', 'goog.testing.events.EventObserver', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('module/modulemanager.js', ['goog.module.ModuleManager', 'goog.module.ModuleManager.CallbackType', 'goog.module.ModuleManager.FailureType'], ['goog.Disposable', 'goog.array', 'goog.asserts', 'goog.async.Deferred', 'goog.debug.Trace', 'goog.dispose', 'goog.log', 'goog.module', 'goog.module.ModuleInfo', 'goog.module.ModuleLoadCallback', 'goog.object'], false); -goog.addDependency('module/modulemanager_test.js', ['goog.module.ModuleManagerTest'], ['goog.array', 'goog.functions', 'goog.module.BaseModule', 'goog.module.ModuleManager', 'goog.testing', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('module/testdata/modA_1.js', ['goog.module.testdata.modA_1'], [], false); -goog.addDependency('module/testdata/modA_2.js', ['goog.module.testdata.modA_2'], ['goog.module.ModuleManager'], false); -goog.addDependency('module/testdata/modB_1.js', ['goog.module.testdata.modB_1'], ['goog.module.ModuleManager'], false); -goog.addDependency('net/browserchannel.js', ['goog.net.BrowserChannel', 'goog.net.BrowserChannel.Error', 'goog.net.BrowserChannel.Event', 'goog.net.BrowserChannel.Handler', 'goog.net.BrowserChannel.LogSaver', 'goog.net.BrowserChannel.QueuedMap', 'goog.net.BrowserChannel.ServerReachability', 'goog.net.BrowserChannel.ServerReachabilityEvent', 'goog.net.BrowserChannel.Stat', 'goog.net.BrowserChannel.StatEvent', 'goog.net.BrowserChannel.State', 'goog.net.BrowserChannel.TimingEvent'], ['goog.Uri', 'goog.array', 'goog.asserts', 'goog.debug.TextFormatter', 'goog.events.Event', 'goog.events.EventTarget', 'goog.json', 'goog.json.EvalJsonProcessor', 'goog.log', 'goog.net.BrowserTestChannel', 'goog.net.ChannelDebug', 'goog.net.ChannelRequest', 'goog.net.XhrIo', 'goog.net.tmpnetwork', 'goog.object', 'goog.string', 'goog.structs', 'goog.structs.CircularBuffer'], false); -goog.addDependency('net/browserchannel_test.js', ['goog.net.BrowserChannelTest'], ['goog.Timer', 'goog.array', 'goog.dom', 'goog.functions', 'goog.json', 'goog.net.BrowserChannel', 'goog.net.ChannelDebug', 'goog.net.ChannelRequest', 'goog.net.tmpnetwork', 'goog.structs.Map', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.asserts', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('net/browsertestchannel.js', ['goog.net.BrowserTestChannel'], ['goog.json.EvalJsonProcessor', 'goog.net.ChannelRequest', 'goog.net.ChannelRequest.Error', 'goog.net.tmpnetwork', 'goog.string.Parser'], false); -goog.addDependency('net/bulkloader.js', ['goog.net.BulkLoader'], ['goog.events.EventHandler', 'goog.events.EventTarget', 'goog.log', 'goog.net.BulkLoaderHelper', 'goog.net.EventType', 'goog.net.XhrIo'], false); -goog.addDependency('net/bulkloader_test.js', ['goog.net.BulkLoaderTest'], ['goog.events.Event', 'goog.events.EventHandler', 'goog.net.BulkLoader', 'goog.net.EventType', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('net/bulkloaderhelper.js', ['goog.net.BulkLoaderHelper'], ['goog.Disposable'], false); -goog.addDependency('net/channeldebug.js', ['goog.net.ChannelDebug'], ['goog.json', 'goog.log'], false); -goog.addDependency('net/channelrequest.js', ['goog.net.ChannelRequest', 'goog.net.ChannelRequest.Error'], ['goog.Timer', 'goog.async.Throttle', 'goog.dom.TagName', 'goog.dom.safe', 'goog.events.EventHandler', 'goog.html.SafeUrl', 'goog.html.uncheckedconversions', 'goog.net.ErrorCode', 'goog.net.EventType', 'goog.net.XmlHttp', 'goog.object', 'goog.string', 'goog.string.Const', 'goog.userAgent'], false); -goog.addDependency('net/channelrequest_test.js', ['goog.net.ChannelRequestTest'], ['goog.Uri', 'goog.functions', 'goog.net.BrowserChannel', 'goog.net.ChannelDebug', 'goog.net.ChannelRequest', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.net.XhrIo', 'goog.testing.recordFunction'], false); -goog.addDependency('net/cookies.js', ['goog.net.Cookies', 'goog.net.cookies'], [], false); -goog.addDependency('net/cookies_test.js', ['goog.net.cookiesTest'], ['goog.array', 'goog.net.cookies', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('net/corsxmlhttpfactory.js', ['goog.net.CorsXmlHttpFactory', 'goog.net.IeCorsXhrAdapter'], ['goog.net.HttpStatus', 'goog.net.XhrLike', 'goog.net.XmlHttp', 'goog.net.XmlHttpFactory'], false); -goog.addDependency('net/corsxmlhttpfactory_test.js', ['goog.net.CorsXmlHttpFactoryTest'], ['goog.net.CorsXmlHttpFactory', 'goog.net.IeCorsXhrAdapter', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('net/crossdomainrpc.js', ['goog.net.CrossDomainRpc'], ['goog.Uri', 'goog.dom', 'goog.dom.TagName', 'goog.dom.safe', 'goog.events', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.html.legacyconversions', 'goog.json', 'goog.log', 'goog.net.EventType', 'goog.net.HttpStatus', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('net/crossdomainrpc_test.js', ['goog.net.CrossDomainRpcTest'], ['goog.Promise', 'goog.log', 'goog.net.CrossDomainRpc', 'goog.testing.TestCase', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('net/errorcode.js', ['goog.net.ErrorCode'], [], false); -goog.addDependency('net/eventtype.js', ['goog.net.EventType'], [], false); -goog.addDependency('net/fetchxmlhttpfactory.js', ['goog.net.FetchXmlHttp', 'goog.net.FetchXmlHttpFactory'], ['goog.asserts', 'goog.events.EventTarget', 'goog.functions', 'goog.log', 'goog.net.XhrLike', 'goog.net.XmlHttpFactory'], false); -goog.addDependency('net/fetchxmlhttpfactory_test.js', ['goog.net.FetchXmlHttpFactoryTest'], ['goog.net.FetchXmlHttp', 'goog.net.FetchXmlHttpFactory', 'goog.testing.MockControl', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('net/filedownloader.js', ['goog.net.FileDownloader', 'goog.net.FileDownloader.Error'], ['goog.Disposable', 'goog.asserts', 'goog.async.Deferred', 'goog.crypt.hash32', 'goog.debug.Error', 'goog.events', 'goog.events.EventHandler', 'goog.fs', 'goog.fs.DirectoryEntry', 'goog.fs.Error', 'goog.fs.FileSaver', 'goog.net.EventType', 'goog.net.XhrIo', 'goog.net.XhrIoPool', 'goog.object'], false); -goog.addDependency('net/filedownloader_test.js', ['goog.net.FileDownloaderTest'], ['goog.fs.Error', 'goog.net.ErrorCode', 'goog.net.FileDownloader', 'goog.net.XhrIo', 'goog.testing.PropertyReplacer', 'goog.testing.TestCase', 'goog.testing.fs', 'goog.testing.fs.FileSystem', 'goog.testing.jsunit', 'goog.testing.net.XhrIoPool'], false); -goog.addDependency('net/httpstatus.js', ['goog.net.HttpStatus'], [], false); -goog.addDependency('net/iframe_xhr_test.js', ['goog.net.iframeXhrTest'], ['goog.Timer', 'goog.debug.Console', 'goog.debug.LogManager', 'goog.debug.Logger', 'goog.dom.TagName', 'goog.events', 'goog.net.IframeIo', 'goog.net.XhrIo', 'goog.testing.AsyncTestCase', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('net/iframeio.js', ['goog.net.IframeIo', 'goog.net.IframeIo.IncrementalDataEvent'], ['goog.Timer', 'goog.Uri', 'goog.array', 'goog.asserts', 'goog.debug', 'goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.dom.safe', 'goog.events', 'goog.events.Event', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.html.uncheckedconversions', 'goog.json', 'goog.log', 'goog.log.Level', 'goog.net.ErrorCode', 'goog.net.EventType', 'goog.reflect', 'goog.string', 'goog.string.Const', 'goog.structs', 'goog.userAgent'], false); -goog.addDependency('net/iframeio_different_base_test.js', ['goog.net.iframeIoDifferentBaseTest'], ['goog.Promise', 'goog.events', 'goog.net.EventType', 'goog.net.IframeIo', 'goog.testing.TestCase', 'goog.testing.jsunit'], false); -goog.addDependency('net/iframeio_test.js', ['goog.net.IframeIoTest'], ['goog.debug', 'goog.debug.DivConsole', 'goog.debug.LogManager', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventType', 'goog.log', 'goog.log.Level', 'goog.net.IframeIo', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('net/iframeloadmonitor.js', ['goog.net.IframeLoadMonitor'], ['goog.dom', 'goog.events', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.userAgent'], false); -goog.addDependency('net/iframeloadmonitor_test.js', ['goog.net.IframeLoadMonitorTest'], ['goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.net.IframeLoadMonitor', 'goog.testing.AsyncTestCase', 'goog.testing.jsunit'], false); -goog.addDependency('net/imageloader.js', ['goog.net.ImageLoader'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.net.EventType', 'goog.object', 'goog.userAgent'], false); -goog.addDependency('net/imageloader_test.js', ['goog.net.ImageLoaderTest'], ['goog.Timer', 'goog.array', 'goog.dispose', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.net.EventType', 'goog.net.ImageLoader', 'goog.object', 'goog.string', 'goog.testing.AsyncTestCase', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('net/ipaddress.js', ['goog.net.IpAddress', 'goog.net.Ipv4Address', 'goog.net.Ipv6Address'], ['goog.array', 'goog.math.Integer', 'goog.object', 'goog.string'], false); -goog.addDependency('net/ipaddress_test.js', ['goog.net.IpAddressTest'], ['goog.math.Integer', 'goog.net.IpAddress', 'goog.net.Ipv4Address', 'goog.net.Ipv6Address', 'goog.testing.jsunit'], false); -goog.addDependency('net/jsloader.js', ['goog.net.jsloader', 'goog.net.jsloader.Error', 'goog.net.jsloader.ErrorCode', 'goog.net.jsloader.Options'], ['goog.array', 'goog.async.Deferred', 'goog.debug.Error', 'goog.dom', 'goog.dom.TagName', 'goog.object'], false); -goog.addDependency('net/jsloader_test.js', ['goog.net.jsloaderTest'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.net.jsloader', 'goog.net.jsloader.ErrorCode', 'goog.testing.AsyncTestCase', 'goog.testing.jsunit'], false); -goog.addDependency('net/jsonp.js', ['goog.net.Jsonp'], ['goog.Uri', 'goog.net.jsloader'], false); -goog.addDependency('net/jsonp_test.js', ['goog.net.JsonpTest'], ['goog.net.Jsonp', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.userAgent'], false); -goog.addDependency('net/mockiframeio.js', ['goog.net.MockIFrameIo'], ['goog.events.EventTarget', 'goog.json', 'goog.net.ErrorCode', 'goog.net.EventType', 'goog.net.IframeIo'], false); -goog.addDependency('net/multiiframeloadmonitor.js', ['goog.net.MultiIframeLoadMonitor'], ['goog.events', 'goog.net.IframeLoadMonitor'], false); -goog.addDependency('net/multiiframeloadmonitor_test.js', ['goog.net.MultiIframeLoadMonitorTest'], ['goog.dom', 'goog.dom.TagName', 'goog.net.IframeLoadMonitor', 'goog.net.MultiIframeLoadMonitor', 'goog.testing.AsyncTestCase', 'goog.testing.jsunit'], false); -goog.addDependency('net/networkstatusmonitor.js', ['goog.net.NetworkStatusMonitor'], ['goog.events.Listenable'], false); -goog.addDependency('net/networktester.js', ['goog.net.NetworkTester'], ['goog.Timer', 'goog.Uri', 'goog.log'], false); -goog.addDependency('net/networktester_test.js', ['goog.net.NetworkTesterTest'], ['goog.Uri', 'goog.net.NetworkTester', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('net/streams/nodereadablestream.js', ['goog.net.streams.NodeReadableStream'], [], false); -goog.addDependency('net/streams/streamfactory.js', ['goog.net.streams.createNodeReadableStream'], ['goog.asserts', 'goog.net.XhrIo', 'goog.net.streams.NodeReadableStream'], false); -goog.addDependency('net/testdata/jsloader_test1.js', ['goog.net.testdata.jsloader_test1'], [], false); -goog.addDependency('net/testdata/jsloader_test2.js', ['goog.net.testdata.jsloader_test2'], [], false); -goog.addDependency('net/testdata/jsloader_test3.js', ['goog.net.testdata.jsloader_test3'], [], false); -goog.addDependency('net/testdata/jsloader_test4.js', ['goog.net.testdata.jsloader_test4'], [], false); -goog.addDependency('net/tmpnetwork.js', ['goog.net.tmpnetwork'], ['goog.Uri', 'goog.net.ChannelDebug'], false); -goog.addDependency('net/websocket.js', ['goog.net.WebSocket', 'goog.net.WebSocket.ErrorEvent', 'goog.net.WebSocket.EventType', 'goog.net.WebSocket.MessageEvent'], ['goog.Timer', 'goog.asserts', 'goog.debug.entryPointRegistry', 'goog.events', 'goog.events.Event', 'goog.events.EventTarget', 'goog.log'], false); -goog.addDependency('net/websocket_test.js', ['goog.net.WebSocketTest'], ['goog.debug.EntryPointMonitor', 'goog.debug.ErrorHandler', 'goog.debug.entryPointRegistry', 'goog.events', 'goog.functions', 'goog.net.WebSocket', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('net/wrapperxmlhttpfactory.js', ['goog.net.WrapperXmlHttpFactory'], ['goog.net.XhrLike', 'goog.net.XmlHttpFactory'], false); -goog.addDependency('net/xhrio.js', ['goog.net.XhrIo', 'goog.net.XhrIo.ResponseType'], ['goog.Timer', 'goog.array', 'goog.asserts', 'goog.debug.entryPointRegistry', 'goog.events.EventTarget', 'goog.json', 'goog.log', 'goog.net.ErrorCode', 'goog.net.EventType', 'goog.net.HttpStatus', 'goog.net.XmlHttp', 'goog.object', 'goog.string', 'goog.structs', 'goog.structs.Map', 'goog.uri.utils', 'goog.userAgent'], false); -goog.addDependency('net/xhrio_test.js', ['goog.net.XhrIoTest'], ['goog.Uri', 'goog.debug.EntryPointMonitor', 'goog.debug.ErrorHandler', 'goog.debug.entryPointRegistry', 'goog.events', 'goog.functions', 'goog.net.EventType', 'goog.net.WrapperXmlHttpFactory', 'goog.net.XhrIo', 'goog.net.XmlHttp', 'goog.object', 'goog.string', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.net.XhrIo', 'goog.testing.recordFunction', 'goog.userAgent.product'], false); -goog.addDependency('net/xhriopool.js', ['goog.net.XhrIoPool'], ['goog.net.XhrIo', 'goog.structs.PriorityPool'], false); -goog.addDependency('net/xhriopool_test.js', ['goog.net.XhrIoPoolTest'], ['goog.net.XhrIoPool', 'goog.structs.Map', 'goog.testing.jsunit'], false); -goog.addDependency('net/xhrlike.js', ['goog.net.XhrLike'], [], false); -goog.addDependency('net/xhrmanager.js', ['goog.net.XhrManager', 'goog.net.XhrManager.Event', 'goog.net.XhrManager.Request'], ['goog.events', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.net.ErrorCode', 'goog.net.EventType', 'goog.net.XhrIo', 'goog.net.XhrIoPool', 'goog.structs.Map'], false); -goog.addDependency('net/xhrmanager_test.js', ['goog.net.XhrManagerTest'], ['goog.events', 'goog.net.EventType', 'goog.net.XhrIo', 'goog.net.XhrManager', 'goog.testing.jsunit', 'goog.testing.net.XhrIoPool', 'goog.testing.recordFunction'], false); -goog.addDependency('net/xmlhttp.js', ['goog.net.DefaultXmlHttpFactory', 'goog.net.XmlHttp', 'goog.net.XmlHttp.OptionType', 'goog.net.XmlHttp.ReadyState', 'goog.net.XmlHttpDefines'], ['goog.asserts', 'goog.net.WrapperXmlHttpFactory', 'goog.net.XmlHttpFactory'], false); -goog.addDependency('net/xmlhttpfactory.js', ['goog.net.XmlHttpFactory'], ['goog.net.XhrLike'], false); -goog.addDependency('net/xpc/crosspagechannel.js', ['goog.net.xpc.CrossPageChannel'], ['goog.Uri', 'goog.async.Deferred', 'goog.async.Delay', 'goog.dispose', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.json', 'goog.log', 'goog.messaging.AbstractChannel', 'goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.ChannelStates', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.DirectTransport', 'goog.net.xpc.FrameElementMethodTransport', 'goog.net.xpc.IframePollingTransport', 'goog.net.xpc.IframeRelayTransport', 'goog.net.xpc.NativeMessagingTransport', 'goog.net.xpc.NixTransport', 'goog.net.xpc.TransportTypes', 'goog.net.xpc.UriCfgFields', 'goog.string', 'goog.uri.utils', 'goog.userAgent'], false); -goog.addDependency('net/xpc/crosspagechannel_test.js', ['goog.net.xpc.CrossPageChannelTest'], ['goog.Disposable', 'goog.Uri', 'goog.async.Deferred', 'goog.dom', 'goog.dom.TagName', 'goog.labs.userAgent.browser', 'goog.log', 'goog.log.Level', 'goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannel', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.TransportTypes', 'goog.object', 'goog.testing.AsyncTestCase', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('net/xpc/crosspagechannelrole.js', ['goog.net.xpc.CrossPageChannelRole'], [], false); -goog.addDependency('net/xpc/directtransport.js', ['goog.net.xpc.DirectTransport'], ['goog.Timer', 'goog.async.Deferred', 'goog.events.EventHandler', 'goog.log', 'goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.Transport', 'goog.net.xpc.TransportTypes', 'goog.object'], false); -goog.addDependency('net/xpc/directtransport_test.js', ['goog.net.xpc.DirectTransportTest'], ['goog.Promise', 'goog.dom', 'goog.dom.TagName', 'goog.labs.userAgent.browser', 'goog.log', 'goog.log.Level', 'goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannel', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.TransportTypes', 'goog.testing.TestCase', 'goog.testing.jsunit'], false); -goog.addDependency('net/xpc/frameelementmethodtransport.js', ['goog.net.xpc.FrameElementMethodTransport'], ['goog.log', 'goog.net.xpc', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.Transport', 'goog.net.xpc.TransportTypes'], false); -goog.addDependency('net/xpc/iframepollingtransport.js', ['goog.net.xpc.IframePollingTransport', 'goog.net.xpc.IframePollingTransport.Receiver', 'goog.net.xpc.IframePollingTransport.Sender'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.log', 'goog.log.Level', 'goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.Transport', 'goog.net.xpc.TransportTypes', 'goog.userAgent'], false); -goog.addDependency('net/xpc/iframepollingtransport_test.js', ['goog.net.xpc.IframePollingTransportTest'], ['goog.Timer', 'goog.dom', 'goog.dom.TagName', 'goog.functions', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannel', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.TransportTypes', 'goog.object', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('net/xpc/iframerelaytransport.js', ['goog.net.xpc.IframeRelayTransport'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.safe', 'goog.events', 'goog.html.SafeHtml', 'goog.log', 'goog.log.Level', 'goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.Transport', 'goog.net.xpc.TransportTypes', 'goog.string', 'goog.string.Const', 'goog.userAgent'], false); -goog.addDependency('net/xpc/nativemessagingtransport.js', ['goog.net.xpc.NativeMessagingTransport'], ['goog.Timer', 'goog.asserts', 'goog.async.Deferred', 'goog.events', 'goog.events.EventHandler', 'goog.log', 'goog.net.xpc', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.Transport', 'goog.net.xpc.TransportTypes'], false); -goog.addDependency('net/xpc/nativemessagingtransport_test.js', ['goog.net.xpc.NativeMessagingTransportTest'], ['goog.dom', 'goog.events', 'goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannel', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.NativeMessagingTransport', 'goog.testing.jsunit'], false); -goog.addDependency('net/xpc/nixtransport.js', ['goog.net.xpc.NixTransport'], ['goog.log', 'goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.Transport', 'goog.net.xpc.TransportTypes', 'goog.reflect'], false); -goog.addDependency('net/xpc/relay.js', ['goog.net.xpc.relay'], [], false); -goog.addDependency('net/xpc/transport.js', ['goog.net.xpc.Transport'], ['goog.Disposable', 'goog.dom', 'goog.net.xpc.TransportNames'], false); -goog.addDependency('net/xpc/xpc.js', ['goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.ChannelStates', 'goog.net.xpc.TransportNames', 'goog.net.xpc.TransportTypes', 'goog.net.xpc.UriCfgFields'], ['goog.log'], false); -goog.addDependency('object/object.js', ['goog.object'], [], false); -goog.addDependency('object/object_test.js', ['goog.objectTest'], ['goog.functions', 'goog.object', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('positioning/absoluteposition.js', ['goog.positioning.AbsolutePosition'], ['goog.math.Coordinate', 'goog.positioning', 'goog.positioning.AbstractPosition'], false); -goog.addDependency('positioning/abstractposition.js', ['goog.positioning.AbstractPosition'], [], false); -goog.addDependency('positioning/anchoredposition.js', ['goog.positioning.AnchoredPosition'], ['goog.positioning', 'goog.positioning.AbstractPosition'], false); -goog.addDependency('positioning/anchoredposition_test.js', ['goog.positioning.AnchoredPositionTest'], ['goog.dom', 'goog.positioning.AnchoredPosition', 'goog.positioning.Corner', 'goog.positioning.Overflow', 'goog.style', 'goog.testing.jsunit'], false); -goog.addDependency('positioning/anchoredviewportposition.js', ['goog.positioning.AnchoredViewportPosition'], ['goog.positioning', 'goog.positioning.AnchoredPosition', 'goog.positioning.Overflow', 'goog.positioning.OverflowStatus'], false); -goog.addDependency('positioning/anchoredviewportposition_test.js', ['goog.positioning.AnchoredViewportPositionTest'], ['goog.dom', 'goog.math.Box', 'goog.positioning.AnchoredViewportPosition', 'goog.positioning.Corner', 'goog.positioning.OverflowStatus', 'goog.style', 'goog.testing.jsunit'], false); -goog.addDependency('positioning/clientposition.js', ['goog.positioning.ClientPosition'], ['goog.asserts', 'goog.dom', 'goog.math.Coordinate', 'goog.positioning', 'goog.positioning.AbstractPosition', 'goog.style'], false); -goog.addDependency('positioning/clientposition_test.js', ['goog.positioning.clientPositionTest'], ['goog.dom', 'goog.dom.TagName', 'goog.positioning.ClientPosition', 'goog.positioning.Corner', 'goog.style', 'goog.testing.jsunit'], false); -goog.addDependency('positioning/menuanchoredposition.js', ['goog.positioning.MenuAnchoredPosition'], ['goog.positioning.AnchoredViewportPosition', 'goog.positioning.Overflow'], false); -goog.addDependency('positioning/menuanchoredposition_test.js', ['goog.positioning.MenuAnchoredPositionTest'], ['goog.dom', 'goog.dom.TagName', 'goog.positioning.Corner', 'goog.positioning.MenuAnchoredPosition', 'goog.testing.jsunit'], false); -goog.addDependency('positioning/positioning.js', ['goog.positioning', 'goog.positioning.Corner', 'goog.positioning.CornerBit', 'goog.positioning.Overflow', 'goog.positioning.OverflowStatus'], ['goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.math.Coordinate', 'goog.math.Rect', 'goog.math.Size', 'goog.style', 'goog.style.bidi'], false); -goog.addDependency('positioning/positioning_test.js', ['goog.positioningTest'], ['goog.dom', 'goog.dom.DomHelper', 'goog.dom.TagName', 'goog.math.Box', 'goog.math.Coordinate', 'goog.math.Size', 'goog.positioning', 'goog.positioning.Corner', 'goog.positioning.Overflow', 'goog.positioning.OverflowStatus', 'goog.style', 'goog.testing.ExpectedFailures', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('positioning/viewportclientposition.js', ['goog.positioning.ViewportClientPosition'], ['goog.dom', 'goog.math.Coordinate', 'goog.positioning', 'goog.positioning.ClientPosition', 'goog.positioning.Overflow', 'goog.positioning.OverflowStatus', 'goog.style'], false); -goog.addDependency('positioning/viewportclientposition_test.js', ['goog.positioning.ViewportClientPositionTest'], ['goog.dom', 'goog.positioning.Corner', 'goog.positioning.Overflow', 'goog.positioning.ViewportClientPosition', 'goog.style', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('positioning/viewportposition.js', ['goog.positioning.ViewportPosition'], ['goog.math.Coordinate', 'goog.positioning', 'goog.positioning.AbstractPosition', 'goog.positioning.Corner', 'goog.style'], false); -goog.addDependency('promise/promise.js', ['goog.Promise'], ['goog.Thenable', 'goog.asserts', 'goog.async.FreeList', 'goog.async.run', 'goog.async.throwException', 'goog.debug.Error', 'goog.promise.Resolver'], false); -goog.addDependency('promise/promise_test.js', ['goog.PromiseTest'], ['goog.Promise', 'goog.Thenable', 'goog.Timer', 'goog.functions', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.TestCase', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.userAgent'], false); -goog.addDependency('promise/resolver.js', ['goog.promise.Resolver'], [], false); -goog.addDependency('promise/testsuiteadapter.js', ['goog.promise.testSuiteAdapter'], ['goog.Promise'], false); -goog.addDependency('promise/thenable.js', ['goog.Thenable'], [], false); -goog.addDependency('proto/proto.js', ['goog.proto'], ['goog.proto.Serializer'], false); -goog.addDependency('proto/serializer.js', ['goog.proto.Serializer'], ['goog.json.Serializer', 'goog.string'], false); -goog.addDependency('proto/serializer_test.js', ['goog.protoTest'], ['goog.proto', 'goog.testing.jsunit'], false); -goog.addDependency('proto2/descriptor.js', ['goog.proto2.Descriptor', 'goog.proto2.Metadata'], ['goog.array', 'goog.asserts', 'goog.object', 'goog.string'], false); -goog.addDependency('proto2/descriptor_test.js', ['goog.proto2.DescriptorTest'], ['goog.proto2.Descriptor', 'goog.proto2.Message', 'goog.testing.jsunit'], false); -goog.addDependency('proto2/fielddescriptor.js', ['goog.proto2.FieldDescriptor'], ['goog.asserts', 'goog.string'], false); -goog.addDependency('proto2/fielddescriptor_test.js', ['goog.proto2.FieldDescriptorTest'], ['goog.proto2.FieldDescriptor', 'goog.proto2.Message', 'goog.testing.jsunit'], false); -goog.addDependency('proto2/lazydeserializer.js', ['goog.proto2.LazyDeserializer'], ['goog.asserts', 'goog.proto2.Message', 'goog.proto2.Serializer'], false); -goog.addDependency('proto2/message.js', ['goog.proto2.Message'], ['goog.asserts', 'goog.proto2.Descriptor', 'goog.proto2.FieldDescriptor'], false); -goog.addDependency('proto2/message_test.js', ['goog.proto2.MessageTest'], ['goog.testing.jsunit', 'proto2.TestAllTypes', 'proto2.TestAllTypes.NestedEnum', 'proto2.TestAllTypes.NestedMessage', 'proto2.TestAllTypes.OptionalGroup', 'proto2.TestAllTypes.RepeatedGroup'], false); -goog.addDependency('proto2/objectserializer.js', ['goog.proto2.ObjectSerializer'], ['goog.asserts', 'goog.proto2.FieldDescriptor', 'goog.proto2.Serializer', 'goog.string'], false); -goog.addDependency('proto2/objectserializer_test.js', ['goog.proto2.ObjectSerializerTest'], ['goog.proto2.ObjectSerializer', 'goog.proto2.Serializer', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'proto2.TestAllTypes'], false); -goog.addDependency('proto2/package_test.pb.js', ['someprotopackage.TestPackageTypes'], ['goog.proto2.Message', 'proto2.TestAllTypes'], false); -goog.addDependency('proto2/pbliteserializer.js', ['goog.proto2.PbLiteSerializer'], ['goog.asserts', 'goog.proto2.FieldDescriptor', 'goog.proto2.LazyDeserializer', 'goog.proto2.Serializer'], false); -goog.addDependency('proto2/pbliteserializer_test.js', ['goog.proto2.PbLiteSerializerTest'], ['goog.proto2.PbLiteSerializer', 'goog.testing.jsunit', 'proto2.TestAllTypes'], false); -goog.addDependency('proto2/proto_test.js', ['goog.proto2.messageTest'], ['goog.proto2.FieldDescriptor', 'goog.testing.jsunit', 'proto2.TestAllTypes', 'someprotopackage.TestPackageTypes'], false); -goog.addDependency('proto2/serializer.js', ['goog.proto2.Serializer'], ['goog.asserts', 'goog.proto2.FieldDescriptor', 'goog.proto2.Message'], false); -goog.addDependency('proto2/test.pb.js', ['proto2.TestAllTypes', 'proto2.TestAllTypes.NestedEnum', 'proto2.TestAllTypes.NestedMessage', 'proto2.TestAllTypes.OptionalGroup', 'proto2.TestAllTypes.RepeatedGroup', 'proto2.TestDefaultChild', 'proto2.TestDefaultParent'], ['goog.proto2.Message'], false); -goog.addDependency('proto2/textformatserializer.js', ['goog.proto2.TextFormatSerializer'], ['goog.array', 'goog.asserts', 'goog.json', 'goog.math', 'goog.object', 'goog.proto2.FieldDescriptor', 'goog.proto2.Message', 'goog.proto2.Serializer', 'goog.string'], false); -goog.addDependency('proto2/textformatserializer_test.js', ['goog.proto2.TextFormatSerializerTest'], ['goog.proto2.ObjectSerializer', 'goog.proto2.TextFormatSerializer', 'goog.testing.jsunit', 'proto2.TestAllTypes'], false); -goog.addDependency('proto2/util.js', ['goog.proto2.Util'], ['goog.asserts'], false); -goog.addDependency('pubsub/pubsub.js', ['goog.pubsub.PubSub'], ['goog.Disposable', 'goog.array'], false); -goog.addDependency('pubsub/pubsub_test.js', ['goog.pubsub.PubSubTest'], ['goog.array', 'goog.pubsub.PubSub', 'goog.testing.jsunit'], false); -goog.addDependency('pubsub/topicid.js', ['goog.pubsub.TopicId'], [], false); -goog.addDependency('pubsub/typedpubsub.js', ['goog.pubsub.TypedPubSub'], ['goog.Disposable', 'goog.pubsub.PubSub'], false); -goog.addDependency('pubsub/typedpubsub_test.js', ['goog.pubsub.TypedPubSubTest'], ['goog.array', 'goog.pubsub.TopicId', 'goog.pubsub.TypedPubSub', 'goog.testing.jsunit'], false); -goog.addDependency('reflect/reflect.js', ['goog.reflect'], [], false); -goog.addDependency('result/deferredadaptor.js', ['goog.result.DeferredAdaptor'], ['goog.async.Deferred', 'goog.result', 'goog.result.Result'], false); -goog.addDependency('result/dependentresult.js', ['goog.result.DependentResult'], ['goog.result.Result'], false); -goog.addDependency('result/result_interface.js', ['goog.result.Result'], ['goog.Thenable'], false); -goog.addDependency('result/resultutil.js', ['goog.result'], ['goog.array', 'goog.result.DependentResult', 'goog.result.Result', 'goog.result.SimpleResult'], false); -goog.addDependency('result/simpleresult.js', ['goog.result.SimpleResult', 'goog.result.SimpleResult.StateError'], ['goog.Promise', 'goog.Thenable', 'goog.debug.Error', 'goog.result.Result'], false); -goog.addDependency('soy/data.js', ['goog.soy.data.SanitizedContent', 'goog.soy.data.SanitizedContentKind', 'goog.soy.data.UnsanitizedText'], ['goog.html.SafeHtml', 'goog.html.uncheckedconversions', 'goog.string.Const'], false); -goog.addDependency('soy/data_test.js', ['goog.soy.dataTest'], ['goog.html.SafeHtml', 'goog.soy.testHelper', 'goog.testing.jsunit'], false); -goog.addDependency('soy/renderer.js', ['goog.soy.InjectedDataSupplier', 'goog.soy.Renderer'], ['goog.asserts', 'goog.dom', 'goog.soy', 'goog.soy.data.SanitizedContent', 'goog.soy.data.SanitizedContentKind'], false); -goog.addDependency('soy/renderer_test.js', ['goog.soy.RendererTest'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.html.SafeHtml', 'goog.i18n.bidi.Dir', 'goog.soy.Renderer', 'goog.soy.data.SanitizedContentKind', 'goog.soy.testHelper', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('soy/soy.js', ['goog.soy'], ['goog.asserts', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.soy.data.SanitizedContent', 'goog.soy.data.SanitizedContentKind', 'goog.string'], false); -goog.addDependency('soy/soy_test.js', ['goog.soyTest'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.functions', 'goog.soy', 'goog.soy.testHelper', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('soy/soy_testhelper.js', ['goog.soy.testHelper'], ['goog.dom', 'goog.dom.TagName', 'goog.i18n.bidi.Dir', 'goog.soy.data.SanitizedContent', 'goog.soy.data.SanitizedContentKind', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('spell/spellcheck.js', ['goog.spell.SpellCheck', 'goog.spell.SpellCheck.WordChangedEvent'], ['goog.Timer', 'goog.events.Event', 'goog.events.EventTarget', 'goog.structs.Set'], false); -goog.addDependency('spell/spellcheck_test.js', ['goog.spell.SpellCheckTest'], ['goog.spell.SpellCheck', 'goog.testing.jsunit'], false); -goog.addDependency('stats/basicstat.js', ['goog.stats.BasicStat'], ['goog.asserts', 'goog.log', 'goog.string.format', 'goog.structs.CircularBuffer'], false); -goog.addDependency('stats/basicstat_test.js', ['goog.stats.BasicStatTest'], ['goog.array', 'goog.stats.BasicStat', 'goog.string.format', 'goog.testing.PseudoRandom', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('storage/collectablestorage.js', ['goog.storage.CollectableStorage'], ['goog.array', 'goog.iter', 'goog.storage.ErrorCode', 'goog.storage.ExpiringStorage', 'goog.storage.RichStorage'], false); -goog.addDependency('storage/collectablestorage_test.js', ['goog.storage.CollectableStorageTest'], ['goog.storage.CollectableStorage', 'goog.storage.collectableStorageTester', 'goog.storage.storage_test', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.testing.storage.FakeMechanism'], false); -goog.addDependency('storage/collectablestoragetester.js', ['goog.storage.collectableStorageTester'], ['goog.testing.asserts'], false); -goog.addDependency('storage/encryptedstorage.js', ['goog.storage.EncryptedStorage'], ['goog.crypt', 'goog.crypt.Arc4', 'goog.crypt.Sha1', 'goog.crypt.base64', 'goog.json', 'goog.json.Serializer', 'goog.storage.CollectableStorage', 'goog.storage.ErrorCode', 'goog.storage.RichStorage'], false); -goog.addDependency('storage/encryptedstorage_test.js', ['goog.storage.EncryptedStorageTest'], ['goog.json', 'goog.storage.EncryptedStorage', 'goog.storage.ErrorCode', 'goog.storage.RichStorage', 'goog.storage.collectableStorageTester', 'goog.storage.storage_test', 'goog.testing.MockClock', 'goog.testing.PseudoRandom', 'goog.testing.jsunit', 'goog.testing.storage.FakeMechanism'], false); -goog.addDependency('storage/errorcode.js', ['goog.storage.ErrorCode'], [], false); -goog.addDependency('storage/expiringstorage.js', ['goog.storage.ExpiringStorage'], ['goog.storage.RichStorage'], false); -goog.addDependency('storage/expiringstorage_test.js', ['goog.storage.ExpiringStorageTest'], ['goog.storage.ExpiringStorage', 'goog.storage.storage_test', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.testing.storage.FakeMechanism'], false); -goog.addDependency('storage/mechanism/errorcode.js', ['goog.storage.mechanism.ErrorCode'], [], false); -goog.addDependency('storage/mechanism/errorhandlingmechanism.js', ['goog.storage.mechanism.ErrorHandlingMechanism'], ['goog.storage.mechanism.Mechanism'], false); -goog.addDependency('storage/mechanism/errorhandlingmechanism_test.js', ['goog.storage.mechanism.ErrorHandlingMechanismTest'], ['goog.storage.mechanism.ErrorHandlingMechanism', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('storage/mechanism/html5localstorage.js', ['goog.storage.mechanism.HTML5LocalStorage'], ['goog.storage.mechanism.HTML5WebStorage'], false); -goog.addDependency('storage/mechanism/html5localstorage_test.js', ['goog.storage.mechanism.HTML5LocalStorageTest'], ['goog.storage.mechanism.HTML5LocalStorage', 'goog.storage.mechanism.mechanismSeparationTester', 'goog.storage.mechanism.mechanismSharingTester', 'goog.storage.mechanism.mechanismTestDefinition', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('storage/mechanism/html5sessionstorage.js', ['goog.storage.mechanism.HTML5SessionStorage'], ['goog.storage.mechanism.HTML5WebStorage'], false); -goog.addDependency('storage/mechanism/html5sessionstorage_test.js', ['goog.storage.mechanism.HTML5SessionStorageTest'], ['goog.storage.mechanism.HTML5SessionStorage', 'goog.storage.mechanism.mechanismSeparationTester', 'goog.storage.mechanism.mechanismSharingTester', 'goog.storage.mechanism.mechanismTestDefinition', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('storage/mechanism/html5webstorage.js', ['goog.storage.mechanism.HTML5WebStorage'], ['goog.asserts', 'goog.iter.Iterator', 'goog.iter.StopIteration', 'goog.storage.mechanism.ErrorCode', 'goog.storage.mechanism.IterableMechanism'], false); -goog.addDependency('storage/mechanism/html5webstorage_test.js', ['goog.storage.mechanism.HTML5MockStorage', 'goog.storage.mechanism.HTML5WebStorageTest', 'goog.storage.mechanism.MockThrowableStorage'], ['goog.storage.mechanism.ErrorCode', 'goog.storage.mechanism.HTML5WebStorage', 'goog.testing.jsunit'], false); -goog.addDependency('storage/mechanism/ieuserdata.js', ['goog.storage.mechanism.IEUserData'], ['goog.asserts', 'goog.iter.Iterator', 'goog.iter.StopIteration', 'goog.storage.mechanism.ErrorCode', 'goog.storage.mechanism.IterableMechanism', 'goog.structs.Map', 'goog.userAgent'], false); -goog.addDependency('storage/mechanism/ieuserdata_test.js', ['goog.storage.mechanism.IEUserDataTest'], ['goog.storage.mechanism.IEUserData', 'goog.storage.mechanism.mechanismSeparationTester', 'goog.storage.mechanism.mechanismSharingTester', 'goog.storage.mechanism.mechanismTestDefinition', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('storage/mechanism/iterablemechanism.js', ['goog.storage.mechanism.IterableMechanism'], ['goog.array', 'goog.asserts', 'goog.iter', 'goog.storage.mechanism.Mechanism'], false); -goog.addDependency('storage/mechanism/iterablemechanismtester.js', ['goog.storage.mechanism.iterableMechanismTester'], ['goog.iter.Iterator', 'goog.storage.mechanism.IterableMechanism', 'goog.testing.asserts'], false); -goog.addDependency('storage/mechanism/mechanism.js', ['goog.storage.mechanism.Mechanism'], [], false); -goog.addDependency('storage/mechanism/mechanismfactory.js', ['goog.storage.mechanism.mechanismfactory'], ['goog.storage.mechanism.HTML5LocalStorage', 'goog.storage.mechanism.HTML5SessionStorage', 'goog.storage.mechanism.IEUserData', 'goog.storage.mechanism.PrefixedMechanism'], false); -goog.addDependency('storage/mechanism/mechanismfactory_test.js', ['goog.storage.mechanism.mechanismfactoryTest'], ['goog.storage.mechanism.mechanismfactory', 'goog.testing.jsunit'], false); -goog.addDependency('storage/mechanism/mechanismseparationtester.js', ['goog.storage.mechanism.mechanismSeparationTester'], ['goog.iter.StopIteration', 'goog.storage.mechanism.mechanismTestDefinition', 'goog.testing.asserts'], false); -goog.addDependency('storage/mechanism/mechanismsharingtester.js', ['goog.storage.mechanism.mechanismSharingTester'], ['goog.iter.StopIteration', 'goog.storage.mechanism.mechanismTestDefinition', 'goog.testing.asserts'], false); -goog.addDependency('storage/mechanism/mechanismtestdefinition.js', ['goog.storage.mechanism.mechanismTestDefinition'], [], false); -goog.addDependency('storage/mechanism/mechanismtester.js', ['goog.storage.mechanism.mechanismTester'], ['goog.storage.mechanism.ErrorCode', 'goog.testing.asserts', 'goog.userAgent', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('storage/mechanism/prefixedmechanism.js', ['goog.storage.mechanism.PrefixedMechanism'], ['goog.iter.Iterator', 'goog.storage.mechanism.IterableMechanism'], false); -goog.addDependency('storage/mechanism/prefixedmechanism_test.js', ['goog.storage.mechanism.PrefixedMechanismTest'], ['goog.storage.mechanism.HTML5LocalStorage', 'goog.storage.mechanism.PrefixedMechanism', 'goog.storage.mechanism.mechanismSeparationTester', 'goog.storage.mechanism.mechanismSharingTester', 'goog.testing.jsunit'], false); -goog.addDependency('storage/richstorage.js', ['goog.storage.RichStorage', 'goog.storage.RichStorage.Wrapper'], ['goog.storage.ErrorCode', 'goog.storage.Storage'], false); -goog.addDependency('storage/richstorage_test.js', ['goog.storage.RichStorageTest'], ['goog.storage.ErrorCode', 'goog.storage.RichStorage', 'goog.storage.storage_test', 'goog.testing.jsunit', 'goog.testing.storage.FakeMechanism'], false); -goog.addDependency('storage/storage.js', ['goog.storage.Storage'], ['goog.json', 'goog.storage.ErrorCode'], false); -goog.addDependency('storage/storage_test.js', ['goog.storage.storage_test'], ['goog.structs.Map', 'goog.testing.asserts'], false); -goog.addDependency('string/const.js', ['goog.string.Const'], ['goog.asserts', 'goog.string.TypedString'], false); -goog.addDependency('string/const_test.js', ['goog.string.constTest'], ['goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('string/linkify.js', ['goog.string.linkify'], ['goog.string'], false); -goog.addDependency('string/linkify_test.js', ['goog.string.linkifyTest'], ['goog.dom.TagName', 'goog.string', 'goog.string.linkify', 'goog.testing.dom', 'goog.testing.jsunit'], false); -goog.addDependency('string/newlines.js', ['goog.string.newlines', 'goog.string.newlines.Line'], ['goog.array'], false); -goog.addDependency('string/newlines_test.js', ['goog.string.newlinesTest'], ['goog.string.newlines', 'goog.testing.jsunit'], false); -goog.addDependency('string/parser.js', ['goog.string.Parser'], [], false); -goog.addDependency('string/path.js', ['goog.string.path'], ['goog.array', 'goog.string'], false); -goog.addDependency('string/path_test.js', ['goog.string.pathTest'], ['goog.string.path', 'goog.testing.jsunit'], false); -goog.addDependency('string/string.js', ['goog.string', 'goog.string.Unicode'], [], false); -goog.addDependency('string/string_test.js', ['goog.stringTest'], ['goog.dom.TagName', 'goog.functions', 'goog.object', 'goog.string', 'goog.string.Unicode', 'goog.testing.MockControl', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('string/stringbuffer.js', ['goog.string.StringBuffer'], [], false); -goog.addDependency('string/stringbuffer_test.js', ['goog.string.StringBufferTest'], ['goog.string.StringBuffer', 'goog.testing.jsunit'], false); -goog.addDependency('string/stringformat.js', ['goog.string.format'], ['goog.string'], false); -goog.addDependency('string/stringformat_test.js', ['goog.string.formatTest'], ['goog.string.format', 'goog.testing.jsunit'], false); -goog.addDependency('string/stringifier.js', ['goog.string.Stringifier'], [], false); -goog.addDependency('string/typedstring.js', ['goog.string.TypedString'], [], false); -goog.addDependency('structs/avltree.js', ['goog.structs.AvlTree', 'goog.structs.AvlTree.Node'], ['goog.structs.Collection'], false); -goog.addDependency('structs/avltree_test.js', ['goog.structs.AvlTreeTest'], ['goog.array', 'goog.structs.AvlTree', 'goog.testing.jsunit'], false); -goog.addDependency('structs/circularbuffer.js', ['goog.structs.CircularBuffer'], [], false); -goog.addDependency('structs/circularbuffer_test.js', ['goog.structs.CircularBufferTest'], ['goog.structs.CircularBuffer', 'goog.testing.jsunit'], false); -goog.addDependency('structs/collection.js', ['goog.structs.Collection'], [], false); -goog.addDependency('structs/collection_test.js', ['goog.structs.CollectionTest'], ['goog.structs.AvlTree', 'goog.structs.Set', 'goog.testing.jsunit'], false); -goog.addDependency('structs/heap.js', ['goog.structs.Heap'], ['goog.array', 'goog.object', 'goog.structs.Node'], false); -goog.addDependency('structs/heap_test.js', ['goog.structs.HeapTest'], ['goog.structs', 'goog.structs.Heap', 'goog.testing.jsunit'], false); -goog.addDependency('structs/inversionmap.js', ['goog.structs.InversionMap'], ['goog.array'], false); -goog.addDependency('structs/inversionmap_test.js', ['goog.structs.InversionMapTest'], ['goog.structs.InversionMap', 'goog.testing.jsunit'], false); -goog.addDependency('structs/linkedmap.js', ['goog.structs.LinkedMap'], ['goog.structs.Map'], false); -goog.addDependency('structs/linkedmap_test.js', ['goog.structs.LinkedMapTest'], ['goog.structs.LinkedMap', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('structs/map.js', ['goog.structs.Map'], ['goog.iter.Iterator', 'goog.iter.StopIteration', 'goog.object'], false); -goog.addDependency('structs/map_test.js', ['goog.structs.MapTest'], ['goog.iter', 'goog.structs', 'goog.structs.Map', 'goog.testing.jsunit'], false); -goog.addDependency('structs/node.js', ['goog.structs.Node'], [], false); -goog.addDependency('structs/pool.js', ['goog.structs.Pool'], ['goog.Disposable', 'goog.structs.Queue', 'goog.structs.Set'], false); -goog.addDependency('structs/pool_test.js', ['goog.structs.PoolTest'], ['goog.structs.Pool', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('structs/prioritypool.js', ['goog.structs.PriorityPool'], ['goog.structs.Pool', 'goog.structs.PriorityQueue'], false); -goog.addDependency('structs/prioritypool_test.js', ['goog.structs.PriorityPoolTest'], ['goog.structs.PriorityPool', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('structs/priorityqueue.js', ['goog.structs.PriorityQueue'], ['goog.structs.Heap'], false); -goog.addDependency('structs/priorityqueue_test.js', ['goog.structs.PriorityQueueTest'], ['goog.structs', 'goog.structs.PriorityQueue', 'goog.testing.jsunit'], false); -goog.addDependency('structs/quadtree.js', ['goog.structs.QuadTree', 'goog.structs.QuadTree.Node', 'goog.structs.QuadTree.Point'], ['goog.math.Coordinate'], false); -goog.addDependency('structs/quadtree_test.js', ['goog.structs.QuadTreeTest'], ['goog.structs', 'goog.structs.QuadTree', 'goog.testing.jsunit'], false); -goog.addDependency('structs/queue.js', ['goog.structs.Queue'], ['goog.array'], false); -goog.addDependency('structs/queue_test.js', ['goog.structs.QueueTest'], ['goog.structs.Queue', 'goog.testing.jsunit'], false); -goog.addDependency('structs/set.js', ['goog.structs.Set'], ['goog.structs', 'goog.structs.Collection', 'goog.structs.Map'], false); -goog.addDependency('structs/set_test.js', ['goog.structs.SetTest'], ['goog.iter', 'goog.structs', 'goog.structs.Set', 'goog.testing.jsunit'], false); -goog.addDependency('structs/simplepool.js', ['goog.structs.SimplePool'], ['goog.Disposable'], false); -goog.addDependency('structs/stringset.js', ['goog.structs.StringSet'], ['goog.asserts', 'goog.iter'], false); -goog.addDependency('structs/stringset_test.js', ['goog.structs.StringSetTest'], ['goog.array', 'goog.iter', 'goog.structs.StringSet', 'goog.testing.asserts', 'goog.testing.jsunit'], false); -goog.addDependency('structs/structs.js', ['goog.structs'], ['goog.array', 'goog.object'], false); -goog.addDependency('structs/structs_test.js', ['goog.structsTest'], ['goog.array', 'goog.dom.TagName', 'goog.structs', 'goog.structs.Map', 'goog.structs.Set', 'goog.testing.jsunit'], false); -goog.addDependency('structs/treenode.js', ['goog.structs.TreeNode'], ['goog.array', 'goog.asserts', 'goog.structs.Node'], false); -goog.addDependency('structs/treenode_test.js', ['goog.structs.TreeNodeTest'], ['goog.structs.TreeNode', 'goog.testing.jsunit'], false); -goog.addDependency('structs/trie.js', ['goog.structs.Trie'], ['goog.object', 'goog.structs'], false); -goog.addDependency('structs/trie_test.js', ['goog.structs.TrieTest'], ['goog.object', 'goog.structs', 'goog.structs.Trie', 'goog.testing.jsunit'], false); -goog.addDependency('structs/weak/weak.js', ['goog.structs.weak'], ['goog.userAgent'], false); -goog.addDependency('structs/weak/weak_test.js', ['goog.structs.weakTest'], ['goog.array', 'goog.structs.weak', 'goog.testing.jsunit'], false); -goog.addDependency('style/bidi.js', ['goog.style.bidi'], ['goog.dom', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('style/bidi_test.js', ['goog.style.bidiTest'], ['goog.dom', 'goog.style', 'goog.style.bidi', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('style/cursor.js', ['goog.style.cursor'], ['goog.userAgent'], false); -goog.addDependency('style/cursor_test.js', ['goog.style.cursorTest'], ['goog.style.cursor', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('style/style.js', ['goog.style'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.vendor', 'goog.math.Box', 'goog.math.Coordinate', 'goog.math.Rect', 'goog.math.Size', 'goog.object', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('style/style_document_scroll_test.js', ['goog.style.style_document_scroll_test'], ['goog.dom', 'goog.style', 'goog.testing.jsunit'], false); -goog.addDependency('style/style_test.js', ['goog.style_test'], ['goog.array', 'goog.color', 'goog.dom', 'goog.dom.TagName', 'goog.events.BrowserEvent', 'goog.labs.userAgent.util', 'goog.math.Box', 'goog.math.Coordinate', 'goog.math.Rect', 'goog.math.Size', 'goog.object', 'goog.style', 'goog.testing.ExpectedFailures', 'goog.testing.MockUserAgent', 'goog.testing.asserts', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgentTestUtil', 'goog.userAgentTestUtil.UserAgents'], false); -goog.addDependency('style/style_webkit_scrollbars_test.js', ['goog.style.webkitScrollbarsTest'], ['goog.asserts', 'goog.style', 'goog.styleScrollbarTester', 'goog.testing.ExpectedFailures', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('style/stylescrollbartester.js', ['goog.styleScrollbarTester'], ['goog.dom', 'goog.dom.TagName', 'goog.style', 'goog.testing.asserts'], false); -goog.addDependency('style/transform.js', ['goog.style.transform'], ['goog.functions', 'goog.math.Coordinate', 'goog.math.Coordinate3', 'goog.style', 'goog.userAgent', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('style/transform_test.js', ['goog.style.transformTest'], ['goog.dom', 'goog.dom.TagName', 'goog.style.transform', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('style/transition.js', ['goog.style.transition', 'goog.style.transition.Css3Property'], ['goog.array', 'goog.asserts', 'goog.dom.TagName', 'goog.dom.safe', 'goog.dom.vendor', 'goog.functions', 'goog.html.SafeHtml', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('style/transition_test.js', ['goog.style.transitionTest'], ['goog.style', 'goog.style.transition', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('test_module.js', ['goog.test_module'], ['goog.test_module_dep'], true); -goog.addDependency('test_module_dep.js', ['goog.test_module_dep'], [], true); -goog.addDependency('testing/asserts.js', ['goog.testing.JsUnitException', 'goog.testing.asserts', 'goog.testing.asserts.ArrayLike'], ['goog.testing.stacktrace'], false); -goog.addDependency('testing/asserts_test.js', ['goog.testing.assertsTest'], ['goog.array', 'goog.dom', 'goog.iter.Iterator', 'goog.iter.StopIteration', 'goog.labs.userAgent.browser', 'goog.string', 'goog.structs.Map', 'goog.structs.Set', 'goog.testing.asserts', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('testing/async/mockcontrol.js', ['goog.testing.async.MockControl'], ['goog.asserts', 'goog.async.Deferred', 'goog.debug', 'goog.testing.asserts', 'goog.testing.mockmatchers.IgnoreArgument'], false); -goog.addDependency('testing/async/mockcontrol_test.js', ['goog.testing.async.MockControlTest'], ['goog.async.Deferred', 'goog.testing.MockControl', 'goog.testing.asserts', 'goog.testing.async.MockControl', 'goog.testing.jsunit'], false); -goog.addDependency('testing/asynctestcase.js', ['goog.testing.AsyncTestCase', 'goog.testing.AsyncTestCase.ControlBreakingException'], ['goog.testing.TestCase', 'goog.testing.asserts'], false); -goog.addDependency('testing/asynctestcase_async_test.js', ['goog.testing.AsyncTestCaseAsyncTest'], ['goog.testing.AsyncTestCase', 'goog.testing.jsunit'], false); -goog.addDependency('testing/asynctestcase_noasync_test.js', ['goog.testing.AsyncTestCaseSyncTest'], ['goog.testing.AsyncTestCase', 'goog.testing.jsunit'], false); -goog.addDependency('testing/asynctestcase_test.js', ['goog.testing.AsyncTestCaseTest'], ['goog.debug.Error', 'goog.testing.AsyncTestCase', 'goog.testing.asserts', 'goog.testing.jsunit'], false); -goog.addDependency('testing/benchmark.js', ['goog.testing.benchmark'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.PerformanceTable', 'goog.testing.PerformanceTimer', 'goog.testing.TestCase'], false); -goog.addDependency('testing/continuationtestcase.js', ['goog.testing.ContinuationTestCase', 'goog.testing.ContinuationTestCase.Step', 'goog.testing.ContinuationTestCase.Test'], ['goog.array', 'goog.events.EventHandler', 'goog.testing.TestCase', 'goog.testing.asserts'], false); -goog.addDependency('testing/continuationtestcase_test.js', ['goog.testing.ContinuationTestCaseTest'], ['goog.events', 'goog.events.EventTarget', 'goog.testing.ContinuationTestCase', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.TestCase', 'goog.testing.jsunit'], false); -goog.addDependency('testing/deferredtestcase.js', ['goog.testing.DeferredTestCase'], ['goog.testing.AsyncTestCase', 'goog.testing.TestCase'], false); -goog.addDependency('testing/deferredtestcase_test.js', ['goog.testing.DeferredTestCaseTest'], ['goog.async.Deferred', 'goog.testing.DeferredTestCase', 'goog.testing.TestCase', 'goog.testing.TestRunner', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('testing/dom.js', ['goog.testing.dom'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.InputType', 'goog.dom.NodeIterator', 'goog.dom.NodeType', 'goog.dom.TagIterator', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.iter', 'goog.object', 'goog.string', 'goog.style', 'goog.testing.asserts', 'goog.userAgent'], false); -goog.addDependency('testing/dom_test.js', ['goog.testing.domTest'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.dom', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('testing/editor/dom.js', ['goog.testing.editor.dom'], ['goog.dom.NodeType', 'goog.dom.TagIterator', 'goog.dom.TagWalkType', 'goog.iter', 'goog.string', 'goog.testing.asserts'], false); -goog.addDependency('testing/editor/dom_test.js', ['goog.testing.editor.domTest'], ['goog.dom', 'goog.dom.TagName', 'goog.functions', 'goog.testing.editor.dom', 'goog.testing.jsunit'], false); -goog.addDependency('testing/editor/fieldmock.js', ['goog.testing.editor.FieldMock'], ['goog.dom', 'goog.dom.Range', 'goog.editor.Field', 'goog.testing.LooseMock', 'goog.testing.mockmatchers'], false); -goog.addDependency('testing/editor/testhelper.js', ['goog.testing.editor.TestHelper'], ['goog.Disposable', 'goog.dom', 'goog.dom.Range', 'goog.editor.BrowserFeature', 'goog.editor.node', 'goog.editor.plugins.AbstractBubblePlugin', 'goog.testing.dom'], false); -goog.addDependency('testing/editor/testhelper_test.js', ['goog.testing.editor.TestHelperTest'], ['goog.dom', 'goog.dom.TagName', 'goog.editor.node', 'goog.testing.editor.TestHelper', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('testing/events/eventobserver.js', ['goog.testing.events.EventObserver'], ['goog.array'], false); -goog.addDependency('testing/events/eventobserver_test.js', ['goog.testing.events.EventObserverTest'], ['goog.array', 'goog.events', 'goog.events.Event', 'goog.events.EventTarget', 'goog.testing.events.EventObserver', 'goog.testing.jsunit'], false); -goog.addDependency('testing/events/events.js', ['goog.testing.events', 'goog.testing.events.Event'], ['goog.Disposable', 'goog.asserts', 'goog.dom.NodeType', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.BrowserFeature', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.object', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('testing/events/events_test.js', ['goog.testing.eventsTest'], ['goog.array', 'goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.events', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.math.Coordinate', 'goog.string', 'goog.style', 'goog.testing.PropertyReplacer', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.userAgent'], false); -goog.addDependency('testing/events/matchers.js', ['goog.testing.events.EventMatcher'], ['goog.events.Event', 'goog.testing.mockmatchers.ArgumentMatcher'], false); -goog.addDependency('testing/events/matchers_test.js', ['goog.testing.events.EventMatcherTest'], ['goog.events.Event', 'goog.testing.events.EventMatcher', 'goog.testing.jsunit'], false); -goog.addDependency('testing/events/onlinehandler.js', ['goog.testing.events.OnlineHandler'], ['goog.events.EventTarget', 'goog.net.NetworkStatusMonitor'], false); -goog.addDependency('testing/events/onlinehandler_test.js', ['goog.testing.events.OnlineHandlerTest'], ['goog.events', 'goog.net.NetworkStatusMonitor', 'goog.testing.events.EventObserver', 'goog.testing.events.OnlineHandler', 'goog.testing.jsunit'], false); -goog.addDependency('testing/expectedfailures.js', ['goog.testing.ExpectedFailures'], ['goog.debug.DivConsole', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventType', 'goog.log', 'goog.style', 'goog.testing.JsUnitException', 'goog.testing.TestCase', 'goog.testing.asserts'], false); -goog.addDependency('testing/expectedfailures_test.js', ['goog.testing.ExpectedFailuresTest'], ['goog.debug.Logger', 'goog.testing.ExpectedFailures', 'goog.testing.JsUnitException', 'goog.testing.jsunit'], false); -goog.addDependency('testing/fs/blob.js', ['goog.testing.fs.Blob'], ['goog.crypt.base64'], false); -goog.addDependency('testing/fs/blob_test.js', ['goog.testing.fs.BlobTest'], ['goog.testing.fs.Blob', 'goog.testing.jsunit'], false); -goog.addDependency('testing/fs/directoryentry_test.js', ['goog.testing.fs.DirectoryEntryTest'], ['goog.array', 'goog.fs.DirectoryEntry', 'goog.fs.Error', 'goog.testing.MockClock', 'goog.testing.fs.FileSystem', 'goog.testing.jsunit'], false); -goog.addDependency('testing/fs/entry.js', ['goog.testing.fs.DirectoryEntry', 'goog.testing.fs.Entry', 'goog.testing.fs.FileEntry'], ['goog.Timer', 'goog.array', 'goog.asserts', 'goog.async.Deferred', 'goog.fs.DirectoryEntry', 'goog.fs.DirectoryEntryImpl', 'goog.fs.Entry', 'goog.fs.Error', 'goog.fs.FileEntry', 'goog.functions', 'goog.object', 'goog.string', 'goog.testing.fs.File', 'goog.testing.fs.FileWriter'], false); -goog.addDependency('testing/fs/entry_test.js', ['goog.testing.fs.EntryTest'], ['goog.fs.DirectoryEntry', 'goog.fs.Error', 'goog.testing.MockClock', 'goog.testing.fs.FileSystem', 'goog.testing.jsunit'], false); -goog.addDependency('testing/fs/file.js', ['goog.testing.fs.File'], ['goog.testing.fs.Blob'], false); -goog.addDependency('testing/fs/fileentry_test.js', ['goog.testing.fs.FileEntryTest'], ['goog.testing.MockClock', 'goog.testing.fs.FileEntry', 'goog.testing.fs.FileSystem', 'goog.testing.jsunit'], false); -goog.addDependency('testing/fs/filereader.js', ['goog.testing.fs.FileReader'], ['goog.Timer', 'goog.events.EventTarget', 'goog.fs.Error', 'goog.fs.FileReader', 'goog.testing.fs.ProgressEvent'], false); -goog.addDependency('testing/fs/filereader_test.js', ['goog.testing.fs.FileReaderTest'], ['goog.Promise', 'goog.array', 'goog.events', 'goog.fs.Error', 'goog.fs.FileReader', 'goog.object', 'goog.testing.events.EventObserver', 'goog.testing.fs.FileReader', 'goog.testing.fs.FileSystem', 'goog.testing.jsunit'], false); -goog.addDependency('testing/fs/filesystem.js', ['goog.testing.fs.FileSystem'], ['goog.fs.FileSystem', 'goog.testing.fs.DirectoryEntry'], false); -goog.addDependency('testing/fs/filewriter.js', ['goog.testing.fs.FileWriter'], ['goog.Timer', 'goog.events.EventTarget', 'goog.fs.Error', 'goog.fs.FileSaver', 'goog.string', 'goog.testing.fs.ProgressEvent'], false); -goog.addDependency('testing/fs/filewriter_test.js', ['goog.testing.fs.FileWriterTest'], ['goog.Promise', 'goog.array', 'goog.events', 'goog.fs.Error', 'goog.fs.FileSaver', 'goog.object', 'goog.testing.MockClock', 'goog.testing.events.EventObserver', 'goog.testing.fs.Blob', 'goog.testing.fs.FileSystem', 'goog.testing.jsunit'], false); -goog.addDependency('testing/fs/fs.js', ['goog.testing.fs'], ['goog.Timer', 'goog.array', 'goog.async.Deferred', 'goog.fs', 'goog.testing.fs.Blob', 'goog.testing.fs.FileSystem'], false); -goog.addDependency('testing/fs/fs_test.js', ['goog.testing.fsTest'], ['goog.testing.AsyncTestCase', 'goog.testing.fs', 'goog.testing.fs.Blob', 'goog.testing.jsunit'], false); -goog.addDependency('testing/fs/integration_test.js', ['goog.testing.fs.integrationTest'], ['goog.Promise', 'goog.events', 'goog.fs', 'goog.fs.DirectoryEntry', 'goog.fs.Error', 'goog.fs.FileSaver', 'goog.testing.PropertyReplacer', 'goog.testing.fs', 'goog.testing.jsunit'], false); -goog.addDependency('testing/fs/progressevent.js', ['goog.testing.fs.ProgressEvent'], ['goog.events.Event'], false); -goog.addDependency('testing/functionmock.js', ['goog.testing', 'goog.testing.FunctionMock', 'goog.testing.GlobalFunctionMock', 'goog.testing.MethodMock'], ['goog.object', 'goog.testing.LooseMock', 'goog.testing.Mock', 'goog.testing.PropertyReplacer', 'goog.testing.StrictMock'], false); -goog.addDependency('testing/functionmock_test.js', ['goog.testing.FunctionMockTest'], ['goog.array', 'goog.string', 'goog.testing', 'goog.testing.FunctionMock', 'goog.testing.Mock', 'goog.testing.StrictMock', 'goog.testing.asserts', 'goog.testing.jsunit', 'goog.testing.mockmatchers'], false); -goog.addDependency('testing/graphics.js', ['goog.testing.graphics'], ['goog.graphics.Path', 'goog.testing.asserts'], false); -goog.addDependency('testing/i18n/asserts.js', ['goog.testing.i18n.asserts'], ['goog.testing.jsunit'], false); -goog.addDependency('testing/i18n/asserts_test.js', ['goog.testing.i18n.assertsTest'], ['goog.testing.ExpectedFailures', 'goog.testing.i18n.asserts'], false); -goog.addDependency('testing/jstdtestcaseadapter.js', ['goog.testing.JsTdTestCaseAdapter'], ['goog.async.run', 'goog.testing.TestCase', 'goog.testing.jsunit'], false); -goog.addDependency('testing/jsunit.js', ['goog.testing.jsunit'], ['goog.dom.TagName', 'goog.testing.TestCase', 'goog.testing.TestRunner'], false); -goog.addDependency('testing/loosemock.js', ['goog.testing.LooseExpectationCollection', 'goog.testing.LooseMock'], ['goog.array', 'goog.structs.Map', 'goog.testing.Mock'], false); -goog.addDependency('testing/loosemock_test.js', ['goog.testing.LooseMockTest'], ['goog.testing.LooseMock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.mockmatchers'], false); -goog.addDependency('testing/messaging/mockmessagechannel.js', ['goog.testing.messaging.MockMessageChannel'], ['goog.messaging.AbstractChannel', 'goog.testing.asserts'], false); -goog.addDependency('testing/messaging/mockmessageevent.js', ['goog.testing.messaging.MockMessageEvent'], ['goog.events.BrowserEvent', 'goog.events.EventType', 'goog.testing.events.Event'], false); -goog.addDependency('testing/messaging/mockmessageport.js', ['goog.testing.messaging.MockMessagePort'], ['goog.events.EventTarget'], false); -goog.addDependency('testing/messaging/mockportnetwork.js', ['goog.testing.messaging.MockPortNetwork'], ['goog.messaging.PortNetwork', 'goog.testing.messaging.MockMessageChannel'], false); -goog.addDependency('testing/mock.js', ['goog.testing.Mock', 'goog.testing.MockExpectation'], ['goog.array', 'goog.object', 'goog.testing.JsUnitException', 'goog.testing.MockInterface', 'goog.testing.mockmatchers'], false); -goog.addDependency('testing/mock_test.js', ['goog.testing.MockTest'], ['goog.array', 'goog.testing', 'goog.testing.Mock', 'goog.testing.MockControl', 'goog.testing.MockExpectation', 'goog.testing.jsunit'], false); -goog.addDependency('testing/mockclassfactory.js', ['goog.testing.MockClassFactory', 'goog.testing.MockClassRecord'], ['goog.array', 'goog.object', 'goog.testing.LooseMock', 'goog.testing.StrictMock', 'goog.testing.TestCase', 'goog.testing.mockmatchers'], false); -goog.addDependency('testing/mockclassfactory_test.js', ['fake.BaseClass', 'fake.ChildClass', 'goog.testing.MockClassFactoryTest'], ['goog.testing', 'goog.testing.MockClassFactory', 'goog.testing.jsunit'], false); -goog.addDependency('testing/mockclock.js', ['goog.testing.MockClock'], ['goog.Disposable', 'goog.async.run', 'goog.testing.PropertyReplacer', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.watchers'], false); -goog.addDependency('testing/mockclock_test.js', ['goog.testing.MockClockTest'], ['goog.Promise', 'goog.Timer', 'goog.events', 'goog.functions', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('testing/mockcontrol.js', ['goog.testing.MockControl'], ['goog.array', 'goog.testing', 'goog.testing.LooseMock', 'goog.testing.StrictMock'], false); -goog.addDependency('testing/mockcontrol_test.js', ['goog.testing.MockControlTest'], ['goog.testing.Mock', 'goog.testing.MockControl', 'goog.testing.jsunit'], false); -goog.addDependency('testing/mockinterface.js', ['goog.testing.MockInterface'], [], false); -goog.addDependency('testing/mockmatchers.js', ['goog.testing.mockmatchers', 'goog.testing.mockmatchers.ArgumentMatcher', 'goog.testing.mockmatchers.IgnoreArgument', 'goog.testing.mockmatchers.InstanceOf', 'goog.testing.mockmatchers.ObjectEquals', 'goog.testing.mockmatchers.RegexpMatch', 'goog.testing.mockmatchers.SaveArgument', 'goog.testing.mockmatchers.TypeOf'], ['goog.array', 'goog.dom', 'goog.testing.asserts'], false); -goog.addDependency('testing/mockmatchers_test.js', ['goog.testing.mockmatchersTest'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.testing.mockmatchers', 'goog.testing.mockmatchers.ArgumentMatcher'], false); -goog.addDependency('testing/mockrandom.js', ['goog.testing.MockRandom'], ['goog.Disposable'], false); -goog.addDependency('testing/mockrandom_test.js', ['goog.testing.MockRandomTest'], ['goog.testing.MockRandom', 'goog.testing.jsunit'], false); -goog.addDependency('testing/mockrange.js', ['goog.testing.MockRange'], ['goog.dom.AbstractRange', 'goog.testing.LooseMock'], false); -goog.addDependency('testing/mockrange_test.js', ['goog.testing.MockRangeTest'], ['goog.testing.MockRange', 'goog.testing.jsunit'], false); -goog.addDependency('testing/mockstorage.js', ['goog.testing.MockStorage'], ['goog.structs.Map'], false); -goog.addDependency('testing/mockstorage_test.js', ['goog.testing.MockStorageTest'], ['goog.testing.MockStorage', 'goog.testing.jsunit'], false); -goog.addDependency('testing/mockuseragent.js', ['goog.testing.MockUserAgent'], ['goog.Disposable', 'goog.labs.userAgent.util', 'goog.testing.PropertyReplacer', 'goog.userAgent'], false); -goog.addDependency('testing/mockuseragent_test.js', ['goog.testing.MockUserAgentTest'], ['goog.dispose', 'goog.testing.MockUserAgent', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('testing/multitestrunner.js', ['goog.testing.MultiTestRunner', 'goog.testing.MultiTestRunner.TestFrame'], ['goog.Timer', 'goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventHandler', 'goog.functions', 'goog.string', 'goog.ui.Component', 'goog.ui.ServerChart', 'goog.ui.TableSorter'], false); -goog.addDependency('testing/net/xhrio.js', ['goog.testing.net.XhrIo'], ['goog.array', 'goog.dom.xml', 'goog.events', 'goog.events.EventTarget', 'goog.json', 'goog.net.ErrorCode', 'goog.net.EventType', 'goog.net.HttpStatus', 'goog.net.XhrIo', 'goog.net.XmlHttp', 'goog.object', 'goog.structs.Map', 'goog.uri.utils'], false); -goog.addDependency('testing/net/xhrio_test.js', ['goog.testing.net.XhrIoTest'], ['goog.dom.xml', 'goog.events', 'goog.events.Event', 'goog.net.ErrorCode', 'goog.net.EventType', 'goog.net.XmlHttp', 'goog.object', 'goog.testing.MockControl', 'goog.testing.asserts', 'goog.testing.jsunit', 'goog.testing.mockmatchers.InstanceOf', 'goog.testing.net.XhrIo'], false); -goog.addDependency('testing/net/xhriopool.js', ['goog.testing.net.XhrIoPool'], ['goog.net.XhrIoPool', 'goog.testing.net.XhrIo'], false); -goog.addDependency('testing/objectpropertystring.js', ['goog.testing.ObjectPropertyString'], [], false); -goog.addDependency('testing/performancetable.js', ['goog.testing.PerformanceTable'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.PerformanceTimer'], false); -goog.addDependency('testing/performancetimer.js', ['goog.testing.PerformanceTimer', 'goog.testing.PerformanceTimer.Task'], ['goog.array', 'goog.async.Deferred', 'goog.math'], false); -goog.addDependency('testing/performancetimer_test.js', ['goog.testing.PerformanceTimerTest'], ['goog.async.Deferred', 'goog.dom', 'goog.math', 'goog.testing.MockClock', 'goog.testing.PerformanceTimer', 'goog.testing.jsunit'], false); -goog.addDependency('testing/propertyreplacer.js', ['goog.testing.PropertyReplacer'], ['goog.testing.ObjectPropertyString', 'goog.userAgent'], false); -goog.addDependency('testing/propertyreplacer_test.js', ['goog.testing.PropertyReplacerTest'], ['goog.dom.TagName', 'goog.testing.PropertyReplacer', 'goog.testing.asserts', 'goog.testing.jsunit', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('testing/proto2/proto2.js', ['goog.testing.proto2'], ['goog.proto2.Message', 'goog.proto2.ObjectSerializer', 'goog.testing.asserts'], false); -goog.addDependency('testing/proto2/proto2_test.js', ['goog.testing.proto2Test'], ['goog.testing.jsunit', 'goog.testing.proto2', 'proto2.TestAllTypes'], false); -goog.addDependency('testing/pseudorandom.js', ['goog.testing.PseudoRandom'], ['goog.Disposable'], false); -goog.addDependency('testing/pseudorandom_test.js', ['goog.testing.PseudoRandomTest'], ['goog.testing.PseudoRandom', 'goog.testing.jsunit'], false); -goog.addDependency('testing/recordfunction.js', ['goog.testing.FunctionCall', 'goog.testing.recordConstructor', 'goog.testing.recordFunction'], ['goog.testing.asserts'], false); -goog.addDependency('testing/recordfunction_test.js', ['goog.testing.recordFunctionTest'], ['goog.functions', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordConstructor', 'goog.testing.recordFunction'], false); -goog.addDependency('testing/shardingtestcase.js', ['goog.testing.ShardingTestCase'], ['goog.asserts', 'goog.testing.TestCase'], false); -goog.addDependency('testing/shardingtestcase_test.js', ['goog.testing.ShardingTestCaseTest'], ['goog.testing.ShardingTestCase', 'goog.testing.TestCase', 'goog.testing.asserts', 'goog.testing.jsunit'], false); -goog.addDependency('testing/singleton.js', ['goog.testing.singleton'], [], false); -goog.addDependency('testing/singleton_test.js', ['goog.testing.singletonTest'], ['goog.testing.asserts', 'goog.testing.jsunit', 'goog.testing.singleton'], false); -goog.addDependency('testing/stacktrace.js', ['goog.testing.stacktrace', 'goog.testing.stacktrace.Frame'], [], false); -goog.addDependency('testing/stacktrace_test.js', ['goog.testing.stacktraceTest'], ['goog.functions', 'goog.string', 'goog.testing.ExpectedFailures', 'goog.testing.PropertyReplacer', 'goog.testing.StrictMock', 'goog.testing.asserts', 'goog.testing.jsunit', 'goog.testing.stacktrace', 'goog.testing.stacktrace.Frame', 'goog.userAgent'], false); -goog.addDependency('testing/storage/fakemechanism.js', ['goog.testing.storage.FakeMechanism'], ['goog.storage.mechanism.IterableMechanism', 'goog.structs.Map'], false); -goog.addDependency('testing/strictmock.js', ['goog.testing.StrictMock'], ['goog.array', 'goog.testing.Mock'], false); -goog.addDependency('testing/strictmock_test.js', ['goog.testing.StrictMockTest'], ['goog.testing.StrictMock', 'goog.testing.jsunit'], false); -goog.addDependency('testing/style/layoutasserts.js', ['goog.testing.style.layoutasserts'], ['goog.style', 'goog.testing.asserts', 'goog.testing.style'], false); -goog.addDependency('testing/style/layoutasserts_test.js', ['goog.testing.style.layoutassertsTest'], ['goog.dom', 'goog.dom.TagName', 'goog.style', 'goog.testing.jsunit', 'goog.testing.style.layoutasserts'], false); -goog.addDependency('testing/style/style.js', ['goog.testing.style'], ['goog.dom', 'goog.math.Rect', 'goog.style'], false); -goog.addDependency('testing/style/style_test.js', ['goog.testing.styleTest'], ['goog.dom', 'goog.dom.TagName', 'goog.style', 'goog.testing.jsunit', 'goog.testing.style'], false); -goog.addDependency('testing/testcase.js', ['goog.testing.TestCase', 'goog.testing.TestCase.Error', 'goog.testing.TestCase.Order', 'goog.testing.TestCase.Result', 'goog.testing.TestCase.Test'], ['goog.Promise', 'goog.Thenable', 'goog.asserts', 'goog.dom.TagName', 'goog.object', 'goog.testing.asserts', 'goog.testing.stacktrace'], false); -goog.addDependency('testing/testcase_test.js', ['goog.testing.TestCaseTest'], ['goog.Promise', 'goog.string', 'goog.testing.MockRandom', 'goog.testing.TestCase', 'goog.testing.jsunit'], false); -goog.addDependency('testing/testqueue.js', ['goog.testing.TestQueue'], [], false); -goog.addDependency('testing/testrunner.js', ['goog.testing.TestRunner'], ['goog.dom.TagName', 'goog.testing.TestCase'], false); -goog.addDependency('testing/testsuite.js', ['goog.testing.testSuite'], ['goog.labs.testing.Environment', 'goog.testing.TestCase'], false); -goog.addDependency('testing/ui/rendererasserts.js', ['goog.testing.ui.rendererasserts'], ['goog.testing.asserts', 'goog.ui.ControlRenderer'], false); -goog.addDependency('testing/ui/rendererasserts_test.js', ['goog.testing.ui.rendererassertsTest'], ['goog.testing.asserts', 'goog.testing.jsunit', 'goog.testing.ui.rendererasserts', 'goog.ui.ControlRenderer'], false); -goog.addDependency('testing/ui/rendererharness.js', ['goog.testing.ui.RendererHarness'], ['goog.Disposable', 'goog.dom.NodeType', 'goog.testing.asserts', 'goog.testing.dom'], false); -goog.addDependency('testing/ui/style.js', ['goog.testing.ui.style'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.classlist', 'goog.testing.asserts'], false); -goog.addDependency('testing/ui/style_test.js', ['goog.testing.ui.styleTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.testing.ui.style'], false); -goog.addDependency('testing/watchers.js', ['goog.testing.watchers'], [], false); -goog.addDependency('timer/timer.js', ['goog.Timer'], ['goog.Promise', 'goog.events.EventTarget'], false); -goog.addDependency('timer/timer_test.js', ['goog.TimerTest'], ['goog.Promise', 'goog.Timer', 'goog.events', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('tweak/entries.js', ['goog.tweak.BaseEntry', 'goog.tweak.BasePrimitiveSetting', 'goog.tweak.BaseSetting', 'goog.tweak.BooleanGroup', 'goog.tweak.BooleanInGroupSetting', 'goog.tweak.BooleanSetting', 'goog.tweak.ButtonAction', 'goog.tweak.NumericSetting', 'goog.tweak.StringSetting'], ['goog.array', 'goog.asserts', 'goog.log', 'goog.object'], false); -goog.addDependency('tweak/entries_test.js', ['goog.tweak.BaseEntryTest'], ['goog.testing.MockControl', 'goog.testing.jsunit', 'goog.tweak.testhelpers'], false); -goog.addDependency('tweak/registry.js', ['goog.tweak.Registry'], ['goog.array', 'goog.asserts', 'goog.log', 'goog.string', 'goog.tweak.BasePrimitiveSetting', 'goog.tweak.BaseSetting', 'goog.tweak.BooleanSetting', 'goog.tweak.NumericSetting', 'goog.tweak.StringSetting', 'goog.uri.utils'], false); -goog.addDependency('tweak/registry_test.js', ['goog.tweak.RegistryTest'], ['goog.asserts.AssertionError', 'goog.testing.jsunit', 'goog.tweak', 'goog.tweak.testhelpers'], false); -goog.addDependency('tweak/testhelpers.js', ['goog.tweak.testhelpers'], ['goog.tweak', 'goog.tweak.BooleanGroup', 'goog.tweak.BooleanInGroupSetting', 'goog.tweak.BooleanSetting', 'goog.tweak.ButtonAction', 'goog.tweak.NumericSetting', 'goog.tweak.Registry', 'goog.tweak.StringSetting'], false); -goog.addDependency('tweak/tweak.js', ['goog.tweak', 'goog.tweak.ConfigParams'], ['goog.asserts', 'goog.tweak.BaseSetting', 'goog.tweak.BooleanGroup', 'goog.tweak.BooleanInGroupSetting', 'goog.tweak.BooleanSetting', 'goog.tweak.ButtonAction', 'goog.tweak.NumericSetting', 'goog.tweak.Registry', 'goog.tweak.StringSetting'], false); -goog.addDependency('tweak/tweakui.js', ['goog.tweak.EntriesPanel', 'goog.tweak.TweakUi'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.safe', 'goog.html.SafeHtml', 'goog.object', 'goog.string.Const', 'goog.style', 'goog.tweak', 'goog.tweak.BaseEntry', 'goog.tweak.BooleanGroup', 'goog.tweak.BooleanInGroupSetting', 'goog.tweak.BooleanSetting', 'goog.tweak.ButtonAction', 'goog.tweak.NumericSetting', 'goog.tweak.StringSetting', 'goog.ui.Zippy', 'goog.userAgent'], false); -goog.addDependency('tweak/tweakui_test.js', ['goog.tweak.TweakUiTest'], ['goog.dom', 'goog.dom.TagName', 'goog.string', 'goog.testing.jsunit', 'goog.tweak', 'goog.tweak.TweakUi', 'goog.tweak.testhelpers'], false); -goog.addDependency('ui/abstractspellchecker.js', ['goog.ui.AbstractSpellChecker', 'goog.ui.AbstractSpellChecker.AsyncResult'], ['goog.a11y.aria', 'goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.InputType', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.dom.selection', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.math.Coordinate', 'goog.spell.SpellCheck', 'goog.structs.Set', 'goog.style', 'goog.ui.Component', 'goog.ui.MenuItem', 'goog.ui.MenuSeparator', 'goog.ui.PopupMenu'], false); -goog.addDependency('ui/ac/ac.js', ['goog.ui.ac'], ['goog.ui.ac.ArrayMatcher', 'goog.ui.ac.AutoComplete', 'goog.ui.ac.InputHandler', 'goog.ui.ac.Renderer'], false); -goog.addDependency('ui/ac/ac_test.js', ['goog.ui.acTest'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.classlist', 'goog.dom.selection', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.Event', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.style', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.ui.ac', 'goog.userAgent'], false); -goog.addDependency('ui/ac/arraymatcher.js', ['goog.ui.ac.ArrayMatcher'], ['goog.string'], false); -goog.addDependency('ui/ac/arraymatcher_test.js', ['goog.ui.ac.ArrayMatcherTest'], ['goog.testing.jsunit', 'goog.ui.ac.ArrayMatcher'], false); -goog.addDependency('ui/ac/autocomplete.js', ['goog.ui.ac.AutoComplete', 'goog.ui.ac.AutoComplete.EventType'], ['goog.array', 'goog.asserts', 'goog.events', 'goog.events.EventTarget', 'goog.object'], false); -goog.addDependency('ui/ac/autocomplete_test.js', ['goog.ui.ac.AutoCompleteTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.string', 'goog.testing.MockControl', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.mockmatchers', 'goog.ui.ac.AutoComplete', 'goog.ui.ac.InputHandler', 'goog.ui.ac.RenderOptions', 'goog.ui.ac.Renderer'], false); -goog.addDependency('ui/ac/cachingmatcher.js', ['goog.ui.ac.CachingMatcher'], ['goog.array', 'goog.async.Throttle', 'goog.ui.ac.ArrayMatcher', 'goog.ui.ac.RenderOptions'], false); -goog.addDependency('ui/ac/cachingmatcher_test.js', ['goog.ui.ac.CachingMatcherTest'], ['goog.testing.MockControl', 'goog.testing.jsunit', 'goog.testing.mockmatchers', 'goog.ui.ac.CachingMatcher'], false); -goog.addDependency('ui/ac/inputhandler.js', ['goog.ui.ac.InputHandler'], ['goog.Disposable', 'goog.Timer', 'goog.a11y.aria', 'goog.dom', 'goog.dom.selection', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.string', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('ui/ac/inputhandler_test.js', ['goog.ui.ac.InputHandlerTest'], ['goog.dom.selection', 'goog.events.BrowserEvent', 'goog.events.Event', 'goog.events.EventTarget', 'goog.events.KeyCodes', 'goog.functions', 'goog.object', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.ui.ac.InputHandler', 'goog.userAgent'], false); -goog.addDependency('ui/ac/remote.js', ['goog.ui.ac.Remote'], ['goog.ui.ac.AutoComplete', 'goog.ui.ac.InputHandler', 'goog.ui.ac.RemoteArrayMatcher', 'goog.ui.ac.Renderer'], false); -goog.addDependency('ui/ac/remotearraymatcher.js', ['goog.ui.ac.RemoteArrayMatcher'], ['goog.Disposable', 'goog.Uri', 'goog.events', 'goog.json', 'goog.net.EventType', 'goog.net.XhrIo'], false); -goog.addDependency('ui/ac/remotearraymatcher_test.js', ['goog.ui.ac.RemoteArrayMatcherTest'], ['goog.json', 'goog.net.XhrIo', 'goog.testing.MockControl', 'goog.testing.jsunit', 'goog.testing.net.XhrIo', 'goog.ui.ac.RemoteArrayMatcher'], false); -goog.addDependency('ui/ac/renderer.js', ['goog.ui.ac.Renderer', 'goog.ui.ac.Renderer.CustomRenderer'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.array', 'goog.asserts', 'goog.dispose', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.fx.dom.FadeInAndShow', 'goog.fx.dom.FadeOutAndHide', 'goog.positioning', 'goog.positioning.Corner', 'goog.positioning.Overflow', 'goog.string', 'goog.style', 'goog.ui.IdGenerator', 'goog.ui.ac.AutoComplete'], false); -goog.addDependency('ui/ac/renderer_test.js', ['goog.ui.ac.RendererTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.fx.dom.FadeInAndShow', 'goog.fx.dom.FadeOutAndHide', 'goog.string', 'goog.style', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.ui.ac.AutoComplete', 'goog.ui.ac.Renderer'], false); -goog.addDependency('ui/ac/renderoptions.js', ['goog.ui.ac.RenderOptions'], [], false); -goog.addDependency('ui/ac/richinputhandler.js', ['goog.ui.ac.RichInputHandler'], ['goog.ui.ac.InputHandler'], false); -goog.addDependency('ui/ac/richremote.js', ['goog.ui.ac.RichRemote'], ['goog.ui.ac.AutoComplete', 'goog.ui.ac.Remote', 'goog.ui.ac.Renderer', 'goog.ui.ac.RichInputHandler', 'goog.ui.ac.RichRemoteArrayMatcher'], false); -goog.addDependency('ui/ac/richremotearraymatcher.js', ['goog.ui.ac.RichRemoteArrayMatcher'], ['goog.dom.safe', 'goog.html.legacyconversions', 'goog.json', 'goog.ui.ac.RemoteArrayMatcher'], false); -goog.addDependency('ui/activitymonitor.js', ['goog.ui.ActivityMonitor'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType'], false); -goog.addDependency('ui/activitymonitor_test.js', ['goog.ui.ActivityMonitorTest'], ['goog.dom', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.ActivityMonitor'], false); -goog.addDependency('ui/advancedtooltip.js', ['goog.ui.AdvancedTooltip'], ['goog.events', 'goog.events.EventType', 'goog.math.Box', 'goog.math.Coordinate', 'goog.style', 'goog.ui.Tooltip', 'goog.userAgent'], false); -goog.addDependency('ui/advancedtooltip_test.js', ['goog.ui.AdvancedTooltipTest'], ['goog.dom', 'goog.dom.TagName', 'goog.events.Event', 'goog.events.EventType', 'goog.math.Box', 'goog.math.Coordinate', 'goog.style', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.AdvancedTooltip', 'goog.ui.Tooltip', 'goog.userAgent'], false); -goog.addDependency('ui/animatedzippy.js', ['goog.ui.AnimatedZippy'], ['goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.fx.Animation', 'goog.fx.Transition', 'goog.fx.easing', 'goog.ui.Zippy', 'goog.ui.ZippyEvent'], false); -goog.addDependency('ui/animatedzippy_test.js', ['goog.ui.AnimatedZippyTest'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.asserts', 'goog.dom', 'goog.events', 'goog.functions', 'goog.fx.Animation', 'goog.fx.Transition', 'goog.testing.PropertyReplacer', 'goog.testing.asserts', 'goog.testing.jsunit', 'goog.ui.AnimatedZippy', 'goog.ui.Zippy'], false); -goog.addDependency('ui/attachablemenu.js', ['goog.ui.AttachableMenu'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.classlist', 'goog.events.Event', 'goog.events.KeyCodes', 'goog.string', 'goog.style', 'goog.ui.ItemEvent', 'goog.ui.MenuBase', 'goog.ui.PopupBase', 'goog.userAgent'], false); -goog.addDependency('ui/bidiinput.js', ['goog.ui.BidiInput'], ['goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.events', 'goog.events.InputHandler', 'goog.i18n.bidi', 'goog.ui.Component'], false); -goog.addDependency('ui/bidiinput_test.js', ['goog.ui.BidiInputTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.ui.BidiInput'], false); -goog.addDependency('ui/bubble.js', ['goog.ui.Bubble'], ['goog.Timer', 'goog.dom.safe', 'goog.events', 'goog.events.EventType', 'goog.html.SafeHtml', 'goog.html.legacyconversions', 'goog.math.Box', 'goog.positioning', 'goog.positioning.AbsolutePosition', 'goog.positioning.AnchoredPosition', 'goog.positioning.Corner', 'goog.positioning.CornerBit', 'goog.string.Const', 'goog.style', 'goog.ui.Component', 'goog.ui.Popup'], false); -goog.addDependency('ui/button.js', ['goog.ui.Button', 'goog.ui.Button.Side'], ['goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.ui.ButtonRenderer', 'goog.ui.ButtonSide', 'goog.ui.Component', 'goog.ui.Control', 'goog.ui.NativeButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/button_test.js', ['goog.ui.ButtonTest'], ['goog.dom', 'goog.dom.classlist', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Button', 'goog.ui.ButtonRenderer', 'goog.ui.ButtonSide', 'goog.ui.Component', 'goog.ui.NativeButtonRenderer'], false); -goog.addDependency('ui/buttonrenderer.js', ['goog.ui.ButtonRenderer'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.asserts', 'goog.ui.ButtonSide', 'goog.ui.Component', 'goog.ui.ControlRenderer'], false); -goog.addDependency('ui/buttonrenderer_test.js', ['goog.ui.ButtonRendererTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.testing.ExpectedFailures', 'goog.testing.jsunit', 'goog.testing.ui.rendererasserts', 'goog.ui.Button', 'goog.ui.ButtonRenderer', 'goog.ui.ButtonSide', 'goog.ui.Component'], false); -goog.addDependency('ui/buttonside.js', ['goog.ui.ButtonSide'], [], false); -goog.addDependency('ui/charcounter.js', ['goog.ui.CharCounter', 'goog.ui.CharCounter.Display'], ['goog.dom', 'goog.events', 'goog.events.EventTarget', 'goog.events.InputHandler'], false); -goog.addDependency('ui/charcounter_test.js', ['goog.ui.CharCounterTest'], ['goog.dom', 'goog.testing.asserts', 'goog.testing.jsunit', 'goog.ui.CharCounter', 'goog.userAgent'], false); -goog.addDependency('ui/charpicker.js', ['goog.ui.CharPicker'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.InputHandler', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.i18n.CharListDecompressor', 'goog.i18n.uChar', 'goog.structs.Set', 'goog.style', 'goog.ui.Button', 'goog.ui.Component', 'goog.ui.ContainerScroller', 'goog.ui.FlatButtonRenderer', 'goog.ui.HoverCard', 'goog.ui.LabelInput', 'goog.ui.Menu', 'goog.ui.MenuButton', 'goog.ui.MenuItem', 'goog.ui.Tooltip'], false); -goog.addDependency('ui/charpicker_test.js', ['goog.ui.CharPickerTest'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.dispose', 'goog.dom', 'goog.events.Event', 'goog.events.EventType', 'goog.i18n.CharPickerData', 'goog.i18n.uChar.NameFetcher', 'goog.testing.MockControl', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.mockmatchers', 'goog.ui.CharPicker', 'goog.ui.FlatButtonRenderer'], false); -goog.addDependency('ui/checkbox.js', ['goog.ui.Checkbox', 'goog.ui.Checkbox.State'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.string', 'goog.ui.CheckboxRenderer', 'goog.ui.Component', 'goog.ui.Control', 'goog.ui.registry'], false); -goog.addDependency('ui/checkbox_test.js', ['goog.ui.CheckboxTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.KeyCodes', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Checkbox', 'goog.ui.CheckboxRenderer', 'goog.ui.Component', 'goog.ui.ControlRenderer', 'goog.ui.decorate'], false); -goog.addDependency('ui/checkboxmenuitem.js', ['goog.ui.CheckBoxMenuItem'], ['goog.ui.MenuItem', 'goog.ui.registry'], false); -goog.addDependency('ui/checkboxrenderer.js', ['goog.ui.CheckboxRenderer'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.array', 'goog.asserts', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.object', 'goog.ui.ControlRenderer'], false); -goog.addDependency('ui/colorbutton.js', ['goog.ui.ColorButton'], ['goog.ui.Button', 'goog.ui.ColorButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/colorbutton_test.js', ['goog.ui.ColorButtonTest'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.testing.jsunit', 'goog.ui.ColorButton', 'goog.ui.decorate'], false); -goog.addDependency('ui/colorbuttonrenderer.js', ['goog.ui.ColorButtonRenderer'], ['goog.asserts', 'goog.dom.classlist', 'goog.functions', 'goog.ui.ColorMenuButtonRenderer'], false); -goog.addDependency('ui/colormenubutton.js', ['goog.ui.ColorMenuButton'], ['goog.array', 'goog.object', 'goog.ui.ColorMenuButtonRenderer', 'goog.ui.ColorPalette', 'goog.ui.Component', 'goog.ui.Menu', 'goog.ui.MenuButton', 'goog.ui.registry'], false); -goog.addDependency('ui/colormenubuttonrenderer.js', ['goog.ui.ColorMenuButtonRenderer'], ['goog.asserts', 'goog.color', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.MenuButtonRenderer', 'goog.userAgent'], false); -goog.addDependency('ui/colormenubuttonrenderer_test.js', ['goog.ui.ColorMenuButtonTest'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.testing.ui.RendererHarness', 'goog.testing.ui.rendererasserts', 'goog.ui.ColorMenuButton', 'goog.ui.ColorMenuButtonRenderer', 'goog.userAgent'], false); -goog.addDependency('ui/colorpalette.js', ['goog.ui.ColorPalette'], ['goog.array', 'goog.color', 'goog.dom.TagName', 'goog.style', 'goog.ui.Palette', 'goog.ui.PaletteRenderer'], false); -goog.addDependency('ui/colorpalette_test.js', ['goog.ui.ColorPaletteTest'], ['goog.color', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.ui.ColorPalette'], false); -goog.addDependency('ui/colorpicker.js', ['goog.ui.ColorPicker', 'goog.ui.ColorPicker.EventType'], ['goog.ui.ColorPalette', 'goog.ui.Component'], false); -goog.addDependency('ui/colorsplitbehavior.js', ['goog.ui.ColorSplitBehavior'], ['goog.ui.ColorMenuButton', 'goog.ui.SplitBehavior'], false); -goog.addDependency('ui/combobox.js', ['goog.ui.ComboBox', 'goog.ui.ComboBoxItem'], ['goog.Timer', 'goog.asserts', 'goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventType', 'goog.events.InputHandler', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.log', 'goog.positioning.Corner', 'goog.positioning.MenuAnchoredPosition', 'goog.string', 'goog.style', 'goog.ui.Component', 'goog.ui.ItemEvent', 'goog.ui.LabelInput', 'goog.ui.Menu', 'goog.ui.MenuItem', 'goog.ui.MenuSeparator', 'goog.ui.registry', 'goog.userAgent'], false); -goog.addDependency('ui/combobox_test.js', ['goog.ui.ComboBoxTest'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.KeyCodes', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.ComboBox', 'goog.ui.ComboBoxItem', 'goog.ui.Component', 'goog.ui.ControlRenderer', 'goog.ui.LabelInput', 'goog.ui.Menu', 'goog.ui.MenuItem'], false); -goog.addDependency('ui/component.js', ['goog.ui.Component', 'goog.ui.Component.Error', 'goog.ui.Component.EventType', 'goog.ui.Component.State'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.object', 'goog.style', 'goog.ui.IdGenerator'], false); -goog.addDependency('ui/component_test.js', ['goog.ui.ComponentTest'], ['goog.dom', 'goog.dom.DomHelper', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.events.EventTarget', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.ui.Component'], false); -goog.addDependency('ui/container.js', ['goog.ui.Container', 'goog.ui.Container.EventType', 'goog.ui.Container.Orientation'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.asserts', 'goog.dom', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.object', 'goog.style', 'goog.ui.Component', 'goog.ui.ContainerRenderer', 'goog.ui.Control'], false); -goog.addDependency('ui/container_test.js', ['goog.ui.ContainerTest'], ['goog.a11y.aria', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.Event', 'goog.events.KeyCodes', 'goog.events.KeyEvent', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.Container', 'goog.ui.Control'], false); -goog.addDependency('ui/containerrenderer.js', ['goog.ui.ContainerRenderer'], ['goog.a11y.aria', 'goog.array', 'goog.asserts', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.string', 'goog.style', 'goog.ui.registry', 'goog.userAgent'], false); -goog.addDependency('ui/containerrenderer_test.js', ['goog.ui.ContainerRendererTest'], ['goog.dom', 'goog.dom.TagName', 'goog.style', 'goog.testing.ExpectedFailures', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.ui.rendererasserts', 'goog.ui.Container', 'goog.ui.ContainerRenderer', 'goog.userAgent'], false); -goog.addDependency('ui/containerscroller.js', ['goog.ui.ContainerScroller'], ['goog.Disposable', 'goog.Timer', 'goog.events.EventHandler', 'goog.style', 'goog.ui.Component', 'goog.ui.Container'], false); -goog.addDependency('ui/containerscroller_test.js', ['goog.ui.ContainerScrollerTest'], ['goog.dom', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Container', 'goog.ui.ContainerScroller'], false); -goog.addDependency('ui/control.js', ['goog.ui.Control'], ['goog.Disposable', 'goog.array', 'goog.dom', 'goog.events.BrowserEvent', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.string', 'goog.ui.Component', 'goog.ui.ControlContent', 'goog.ui.ControlRenderer', 'goog.ui.decorate', 'goog.ui.registry', 'goog.userAgent'], false); -goog.addDependency('ui/control_test.js', ['goog.ui.ControlTest'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.KeyCodes', 'goog.object', 'goog.string', 'goog.style', 'goog.testing.ExpectedFailures', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.Control', 'goog.ui.ControlRenderer', 'goog.ui.registry', 'goog.userAgent'], false); -goog.addDependency('ui/controlcontent.js', ['goog.ui.ControlContent'], [], false); -goog.addDependency('ui/controlrenderer.js', ['goog.ui.ControlRenderer'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.object', 'goog.string', 'goog.style', 'goog.ui.Component', 'goog.userAgent'], false); -goog.addDependency('ui/controlrenderer_test.js', ['goog.ui.ControlRendererTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.object', 'goog.style', 'goog.testing.ExpectedFailures', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.Control', 'goog.ui.ControlRenderer', 'goog.userAgent'], false); -goog.addDependency('ui/cookieeditor.js', ['goog.ui.CookieEditor'], ['goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.events.EventType', 'goog.net.cookies', 'goog.string', 'goog.style', 'goog.ui.Component'], false); -goog.addDependency('ui/cookieeditor_test.js', ['goog.ui.CookieEditorTest'], ['goog.dom', 'goog.events.Event', 'goog.events.EventType', 'goog.net.cookies', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.CookieEditor'], false); -goog.addDependency('ui/css3buttonrenderer.js', ['goog.ui.Css3ButtonRenderer'], ['goog.asserts', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.Button', 'goog.ui.ButtonRenderer', 'goog.ui.Component', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.registry'], false); -goog.addDependency('ui/css3menubuttonrenderer.js', ['goog.ui.Css3MenuButtonRenderer'], ['goog.dom', 'goog.dom.TagName', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.MenuButton', 'goog.ui.MenuButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/cssnames.js', ['goog.ui.INLINE_BLOCK_CLASSNAME'], [], false); -goog.addDependency('ui/custombutton.js', ['goog.ui.CustomButton'], ['goog.ui.Button', 'goog.ui.CustomButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/custombuttonrenderer.js', ['goog.ui.CustomButtonRenderer'], ['goog.a11y.aria.Role', 'goog.asserts', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.string', 'goog.ui.ButtonRenderer', 'goog.ui.INLINE_BLOCK_CLASSNAME'], false); -goog.addDependency('ui/customcolorpalette.js', ['goog.ui.CustomColorPalette'], ['goog.color', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.ColorPalette', 'goog.ui.Component'], false); -goog.addDependency('ui/customcolorpalette_test.js', ['goog.ui.CustomColorPaletteTest'], ['goog.dom.TagName', 'goog.dom.classlist', 'goog.testing.jsunit', 'goog.ui.CustomColorPalette'], false); -goog.addDependency('ui/datepicker.js', ['goog.ui.DatePicker', 'goog.ui.DatePicker.Events', 'goog.ui.DatePickerEvent'], ['goog.a11y.aria', 'goog.asserts', 'goog.date.Date', 'goog.date.DateRange', 'goog.date.Interval', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.Event', 'goog.events.EventType', 'goog.events.KeyHandler', 'goog.i18n.DateTimeFormat', 'goog.i18n.DateTimePatterns', 'goog.i18n.DateTimeSymbols', 'goog.style', 'goog.ui.Component', 'goog.ui.DefaultDatePickerRenderer', 'goog.ui.IdGenerator'], false); -goog.addDependency('ui/datepicker_test.js', ['goog.ui.DatePickerTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.date.Date', 'goog.date.DateRange', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.i18n.DateTimeSymbols', 'goog.i18n.DateTimeSymbols_en_US', 'goog.i18n.DateTimeSymbols_zh_HK', 'goog.style', 'goog.testing.jsunit', 'goog.ui.DatePicker'], false); -goog.addDependency('ui/datepickerrenderer.js', ['goog.ui.DatePickerRenderer'], [], false); -goog.addDependency('ui/decorate.js', ['goog.ui.decorate'], ['goog.ui.registry'], false); -goog.addDependency('ui/decorate_test.js', ['goog.ui.decorateTest'], ['goog.testing.jsunit', 'goog.ui.decorate', 'goog.ui.registry'], false); -goog.addDependency('ui/defaultdatepickerrenderer.js', ['goog.ui.DefaultDatePickerRenderer'], ['goog.dom', 'goog.dom.TagName', 'goog.ui.DatePickerRenderer'], false); -goog.addDependency('ui/dialog.js', ['goog.ui.Dialog', 'goog.ui.Dialog.ButtonSet', 'goog.ui.Dialog.ButtonSet.DefaultButtons', 'goog.ui.Dialog.DefaultButtonCaptions', 'goog.ui.Dialog.DefaultButtonKeys', 'goog.ui.Dialog.Event', 'goog.ui.Dialog.EventType'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.asserts', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.dom.safe', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.fx.Dragger', 'goog.html.SafeHtml', 'goog.html.legacyconversions', 'goog.math.Rect', 'goog.string', 'goog.structs.Map', 'goog.style', 'goog.ui.ModalPopup'], false); -goog.addDependency('ui/dialog_test.js', ['goog.ui.DialogTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.fx.css3', 'goog.html.SafeHtml', 'goog.html.testing', 'goog.style', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.Dialog', 'goog.userAgent'], false); -goog.addDependency('ui/dimensionpicker.js', ['goog.ui.DimensionPicker'], ['goog.events.EventType', 'goog.events.KeyCodes', 'goog.math.Size', 'goog.ui.Component', 'goog.ui.Control', 'goog.ui.DimensionPickerRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/dimensionpicker_test.js', ['goog.ui.DimensionPickerTest'], ['goog.dom', 'goog.dom.TagName', 'goog.events.KeyCodes', 'goog.math.Size', 'goog.testing.jsunit', 'goog.testing.ui.rendererasserts', 'goog.ui.DimensionPicker', 'goog.ui.DimensionPickerRenderer'], false); -goog.addDependency('ui/dimensionpickerrenderer.js', ['goog.ui.DimensionPickerRenderer'], ['goog.a11y.aria.Announcer', 'goog.a11y.aria.LivePriority', 'goog.dom', 'goog.dom.TagName', 'goog.i18n.bidi', 'goog.style', 'goog.ui.ControlRenderer', 'goog.userAgent'], false); -goog.addDependency('ui/dimensionpickerrenderer_test.js', ['goog.ui.DimensionPickerRendererTest'], ['goog.a11y.aria.LivePriority', 'goog.array', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.DimensionPicker', 'goog.ui.DimensionPickerRenderer'], false); -goog.addDependency('ui/dragdropdetector.js', ['goog.ui.DragDropDetector', 'goog.ui.DragDropDetector.EventType', 'goog.ui.DragDropDetector.ImageDropEvent', 'goog.ui.DragDropDetector.LinkDropEvent'], ['goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.math.Coordinate', 'goog.string', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('ui/drilldownrow.js', ['goog.ui.DrilldownRow'], ['goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.dom.safe', 'goog.html.SafeHtml', 'goog.html.legacyconversions', 'goog.ui.Component'], false); -goog.addDependency('ui/drilldownrow_test.js', ['goog.ui.DrilldownRowTest'], ['goog.dom', 'goog.dom.TagName', 'goog.html.SafeHtml', 'goog.testing.jsunit', 'goog.ui.DrilldownRow'], false); -goog.addDependency('ui/editor/abstractdialog.js', ['goog.ui.editor.AbstractDialog', 'goog.ui.editor.AbstractDialog.Builder', 'goog.ui.editor.AbstractDialog.EventType'], ['goog.asserts', 'goog.dom', 'goog.dom.classlist', 'goog.events.EventTarget', 'goog.string', 'goog.ui.Dialog', 'goog.ui.PopupBase'], false); -goog.addDependency('ui/editor/abstractdialog_test.js', ['goog.ui.editor.AbstractDialogTest'], ['goog.dom', 'goog.dom.DomHelper', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.KeyCodes', 'goog.testing.MockControl', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.mockmatchers.ArgumentMatcher', 'goog.ui.editor.AbstractDialog', 'goog.userAgent'], false); -goog.addDependency('ui/editor/bubble.js', ['goog.ui.editor.Bubble'], ['goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.ViewportSizeMonitor', 'goog.dom.classlist', 'goog.editor.style', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.functions', 'goog.log', 'goog.math.Box', 'goog.object', 'goog.positioning', 'goog.positioning.Corner', 'goog.positioning.Overflow', 'goog.positioning.OverflowStatus', 'goog.string', 'goog.style', 'goog.ui.Component', 'goog.ui.PopupBase', 'goog.userAgent'], false); -goog.addDependency('ui/editor/bubble_test.js', ['goog.ui.editor.BubbleTest'], ['goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventType', 'goog.positioning.Corner', 'goog.positioning.OverflowStatus', 'goog.string', 'goog.style', 'goog.testing.editor.TestHelper', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.editor.Bubble', 'goog.userAgent.product'], false); -goog.addDependency('ui/editor/defaulttoolbar.js', ['goog.ui.editor.ButtonDescriptor', 'goog.ui.editor.DefaultToolbar'], ['goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.editor.Command', 'goog.style', 'goog.ui.editor.ToolbarFactory', 'goog.ui.editor.messages', 'goog.userAgent'], false); -goog.addDependency('ui/editor/linkdialog.js', ['goog.ui.editor.LinkDialog', 'goog.ui.editor.LinkDialog.BeforeTestLinkEvent', 'goog.ui.editor.LinkDialog.EventType', 'goog.ui.editor.LinkDialog.OkEvent'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.dom.safe', 'goog.editor.BrowserFeature', 'goog.editor.Link', 'goog.editor.focus', 'goog.editor.node', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.InputHandler', 'goog.html.SafeHtml', 'goog.string', 'goog.string.Unicode', 'goog.style', 'goog.ui.Button', 'goog.ui.Component', 'goog.ui.LinkButtonRenderer', 'goog.ui.editor.AbstractDialog', 'goog.ui.editor.TabPane', 'goog.ui.editor.messages', 'goog.userAgent', 'goog.window'], false); -goog.addDependency('ui/editor/linkdialog_test.js', ['goog.ui.editor.LinkDialogTest'], ['goog.dom', 'goog.dom.DomHelper', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Link', 'goog.events', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.style', 'goog.testing.MockControl', 'goog.testing.PropertyReplacer', 'goog.testing.dom', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.testing.mockmatchers', 'goog.testing.mockmatchers.ArgumentMatcher', 'goog.ui.editor.AbstractDialog', 'goog.ui.editor.LinkDialog', 'goog.ui.editor.messages', 'goog.userAgent'], false); -goog.addDependency('ui/editor/messages.js', ['goog.ui.editor.messages'], ['goog.html.uncheckedconversions', 'goog.string.Const'], false); -goog.addDependency('ui/editor/tabpane.js', ['goog.ui.editor.TabPane'], ['goog.asserts', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.style', 'goog.ui.Component', 'goog.ui.Control', 'goog.ui.Tab', 'goog.ui.TabBar'], false); -goog.addDependency('ui/editor/toolbarcontroller.js', ['goog.ui.editor.ToolbarController'], ['goog.editor.Field', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.ui.Component'], false); -goog.addDependency('ui/editor/toolbarfactory.js', ['goog.ui.editor.ToolbarFactory'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.string', 'goog.string.Unicode', 'goog.style', 'goog.ui.Component', 'goog.ui.Container', 'goog.ui.Option', 'goog.ui.Toolbar', 'goog.ui.ToolbarButton', 'goog.ui.ToolbarColorMenuButton', 'goog.ui.ToolbarMenuButton', 'goog.ui.ToolbarRenderer', 'goog.ui.ToolbarSelect', 'goog.userAgent'], false); -goog.addDependency('ui/editor/toolbarfactory_test.js', ['goog.ui.editor.ToolbarFactoryTest'], ['goog.dom', 'goog.testing.ExpectedFailures', 'goog.testing.editor.TestHelper', 'goog.testing.jsunit', 'goog.ui.editor.ToolbarFactory', 'goog.userAgent'], false); -goog.addDependency('ui/emoji/emoji.js', ['goog.ui.emoji.Emoji'], [], false); -goog.addDependency('ui/emoji/emojipalette.js', ['goog.ui.emoji.EmojiPalette'], ['goog.events.EventType', 'goog.net.ImageLoader', 'goog.ui.Palette', 'goog.ui.emoji.Emoji', 'goog.ui.emoji.EmojiPaletteRenderer'], false); -goog.addDependency('ui/emoji/emojipaletterenderer.js', ['goog.ui.emoji.EmojiPaletteRenderer'], ['goog.a11y.aria', 'goog.asserts', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.style', 'goog.ui.PaletteRenderer', 'goog.ui.emoji.Emoji'], false); -goog.addDependency('ui/emoji/emojipicker.js', ['goog.ui.emoji.EmojiPicker'], ['goog.dom.TagName', 'goog.style', 'goog.ui.Component', 'goog.ui.TabPane', 'goog.ui.emoji.Emoji', 'goog.ui.emoji.EmojiPalette', 'goog.ui.emoji.EmojiPaletteRenderer', 'goog.ui.emoji.ProgressiveEmojiPaletteRenderer'], false); -goog.addDependency('ui/emoji/emojipicker_test.js', ['goog.ui.emoji.EmojiPickerTest'], ['goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventHandler', 'goog.style', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.emoji.Emoji', 'goog.ui.emoji.EmojiPicker', 'goog.ui.emoji.SpriteInfo'], false); -goog.addDependency('ui/emoji/fast_nonprogressive_emojipicker_test.js', ['goog.ui.emoji.FastNonProgressiveEmojiPickerTest'], ['goog.Promise', 'goog.dom.classlist', 'goog.events', 'goog.events.EventType', 'goog.net.EventType', 'goog.style', 'goog.testing.jsunit', 'goog.ui.emoji.Emoji', 'goog.ui.emoji.EmojiPicker', 'goog.ui.emoji.SpriteInfo'], false); -goog.addDependency('ui/emoji/fast_progressive_emojipicker_test.js', ['goog.ui.emoji.FastProgressiveEmojiPickerTest'], ['goog.Promise', 'goog.dom.classlist', 'goog.events', 'goog.events.EventType', 'goog.net.EventType', 'goog.style', 'goog.testing.jsunit', 'goog.ui.emoji.Emoji', 'goog.ui.emoji.EmojiPicker', 'goog.ui.emoji.SpriteInfo'], false); -goog.addDependency('ui/emoji/popupemojipicker.js', ['goog.ui.emoji.PopupEmojiPicker'], ['goog.events.EventType', 'goog.positioning.AnchoredPosition', 'goog.positioning.Corner', 'goog.ui.Component', 'goog.ui.Popup', 'goog.ui.emoji.EmojiPicker'], false); -goog.addDependency('ui/emoji/popupemojipicker_test.js', ['goog.ui.emoji.PopupEmojiPickerTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.ui.emoji.PopupEmojiPicker'], false); -goog.addDependency('ui/emoji/progressiveemojipaletterenderer.js', ['goog.ui.emoji.ProgressiveEmojiPaletteRenderer'], ['goog.dom.TagName', 'goog.style', 'goog.ui.emoji.EmojiPaletteRenderer'], false); -goog.addDependency('ui/emoji/spriteinfo.js', ['goog.ui.emoji.SpriteInfo'], [], false); -goog.addDependency('ui/emoji/spriteinfo_test.js', ['goog.ui.emoji.SpriteInfoTest'], ['goog.testing.jsunit', 'goog.ui.emoji.SpriteInfo'], false); -goog.addDependency('ui/filteredmenu.js', ['goog.ui.FilteredMenu'], ['goog.a11y.aria', 'goog.a11y.aria.AutoCompleteValues', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.events', 'goog.events.EventType', 'goog.events.InputHandler', 'goog.events.KeyCodes', 'goog.object', 'goog.string', 'goog.style', 'goog.ui.Component', 'goog.ui.FilterObservingMenuItem', 'goog.ui.Menu', 'goog.ui.MenuItem', 'goog.userAgent'], false); -goog.addDependency('ui/filteredmenu_test.js', ['goog.ui.FilteredMenuTest'], ['goog.a11y.aria', 'goog.a11y.aria.AutoCompleteValues', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.math.Rect', 'goog.style', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.FilteredMenu', 'goog.ui.MenuItem'], false); -goog.addDependency('ui/filterobservingmenuitem.js', ['goog.ui.FilterObservingMenuItem'], ['goog.ui.FilterObservingMenuItemRenderer', 'goog.ui.MenuItem', 'goog.ui.registry'], false); -goog.addDependency('ui/filterobservingmenuitemrenderer.js', ['goog.ui.FilterObservingMenuItemRenderer'], ['goog.ui.MenuItemRenderer'], false); -goog.addDependency('ui/flatbuttonrenderer.js', ['goog.ui.FlatButtonRenderer'], ['goog.a11y.aria.Role', 'goog.asserts', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.Button', 'goog.ui.ButtonRenderer', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.registry'], false); -goog.addDependency('ui/flatmenubuttonrenderer.js', ['goog.ui.FlatMenuButtonRenderer'], ['goog.dom', 'goog.dom.TagName', 'goog.style', 'goog.ui.FlatButtonRenderer', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.Menu', 'goog.ui.MenuButton', 'goog.ui.MenuRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/formpost.js', ['goog.ui.FormPost'], ['goog.array', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.dom.safe', 'goog.html.SafeHtml', 'goog.ui.Component'], false); -goog.addDependency('ui/formpost_test.js', ['goog.ui.FormPostTest'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.object', 'goog.testing.jsunit', 'goog.ui.FormPost', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('ui/gauge.js', ['goog.ui.Gauge', 'goog.ui.GaugeColoredRange'], ['goog.a11y.aria', 'goog.asserts', 'goog.dom.TagName', 'goog.events', 'goog.fx.Animation', 'goog.fx.Transition', 'goog.fx.easing', 'goog.graphics', 'goog.graphics.Font', 'goog.graphics.Path', 'goog.graphics.SolidFill', 'goog.math', 'goog.ui.Component', 'goog.ui.GaugeTheme'], false); -goog.addDependency('ui/gaugetheme.js', ['goog.ui.GaugeTheme'], ['goog.graphics.LinearGradient', 'goog.graphics.SolidFill', 'goog.graphics.Stroke'], false); -goog.addDependency('ui/hovercard.js', ['goog.ui.HoverCard', 'goog.ui.HoverCard.EventType', 'goog.ui.HoverCard.TriggerEvent'], ['goog.array', 'goog.dom', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.ui.AdvancedTooltip', 'goog.ui.PopupBase', 'goog.ui.Tooltip'], false); -goog.addDependency('ui/hovercard_test.js', ['goog.ui.HoverCardTest'], ['goog.dom', 'goog.events', 'goog.math.Coordinate', 'goog.style', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.ui.HoverCard'], false); -goog.addDependency('ui/hsvapalette.js', ['goog.ui.HsvaPalette'], ['goog.array', 'goog.color.alpha', 'goog.dom.TagName', 'goog.events', 'goog.events.EventType', 'goog.style', 'goog.ui.Component', 'goog.ui.HsvPalette'], false); -goog.addDependency('ui/hsvapalette_test.js', ['goog.ui.HsvaPaletteTest'], ['goog.color.alpha', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.Event', 'goog.math.Coordinate', 'goog.style', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.ui.HsvaPalette', 'goog.userAgent'], false); -goog.addDependency('ui/hsvpalette.js', ['goog.ui.HsvPalette'], ['goog.color', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.events', 'goog.events.EventType', 'goog.events.InputHandler', 'goog.style', 'goog.style.bidi', 'goog.ui.Component', 'goog.userAgent'], false); -goog.addDependency('ui/hsvpalette_test.js', ['goog.ui.HsvPaletteTest'], ['goog.color', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.Event', 'goog.math.Coordinate', 'goog.style', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.HsvPalette', 'goog.userAgent'], false); -goog.addDependency('ui/idgenerator.js', ['goog.ui.IdGenerator'], [], false); -goog.addDependency('ui/idletimer.js', ['goog.ui.IdleTimer'], ['goog.Timer', 'goog.events', 'goog.events.EventTarget', 'goog.structs.Set', 'goog.ui.ActivityMonitor'], false); -goog.addDependency('ui/idletimer_test.js', ['goog.ui.IdleTimerTest'], ['goog.events', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.ui.IdleTimer', 'goog.ui.MockActivityMonitor'], false); -goog.addDependency('ui/iframemask.js', ['goog.ui.IframeMask'], ['goog.Disposable', 'goog.Timer', 'goog.dom', 'goog.dom.iframe', 'goog.events.EventHandler', 'goog.style'], false); -goog.addDependency('ui/iframemask_test.js', ['goog.ui.IframeMaskTest'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.iframe', 'goog.structs.Pool', 'goog.style', 'goog.testing.MockClock', 'goog.testing.StrictMock', 'goog.testing.jsunit', 'goog.ui.IframeMask', 'goog.ui.Popup', 'goog.ui.PopupBase', 'goog.userAgent'], false); -goog.addDependency('ui/imagelessbuttonrenderer.js', ['goog.ui.ImagelessButtonRenderer'], ['goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.Button', 'goog.ui.Component', 'goog.ui.CustomButtonRenderer', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.registry'], false); -goog.addDependency('ui/imagelessmenubuttonrenderer.js', ['goog.ui.ImagelessMenuButtonRenderer'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.MenuButton', 'goog.ui.MenuButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/inputdatepicker.js', ['goog.ui.InputDatePicker'], ['goog.date.DateTime', 'goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.string', 'goog.ui.Component', 'goog.ui.DatePicker', 'goog.ui.LabelInput', 'goog.ui.PopupBase', 'goog.ui.PopupDatePicker'], false); -goog.addDependency('ui/inputdatepicker_test.js', ['goog.ui.InputDatePickerTest'], ['goog.dom', 'goog.i18n.DateTimeFormat', 'goog.i18n.DateTimeParse', 'goog.testing.jsunit', 'goog.ui.InputDatePicker'], false); -goog.addDependency('ui/itemevent.js', ['goog.ui.ItemEvent'], ['goog.events.Event'], false); -goog.addDependency('ui/keyboardshortcuthandler.js', ['goog.ui.KeyboardShortcutEvent', 'goog.ui.KeyboardShortcutHandler', 'goog.ui.KeyboardShortcutHandler.EventType'], ['goog.Timer', 'goog.array', 'goog.asserts', 'goog.dom.TagName', 'goog.events', 'goog.events.Event', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyNames', 'goog.object', 'goog.userAgent'], false); -goog.addDependency('ui/keyboardshortcuthandler_test.js', ['goog.ui.KeyboardShortcutHandlerTest'], ['goog.dom', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.KeyCodes', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.StrictMock', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.KeyboardShortcutHandler', 'goog.userAgent'], false); -goog.addDependency('ui/labelinput.js', ['goog.ui.LabelInput'], ['goog.Timer', 'goog.a11y.aria', 'goog.a11y.aria.State', 'goog.asserts', 'goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.ui.Component', 'goog.userAgent'], false); -goog.addDependency('ui/labelinput_test.js', ['goog.ui.LabelInputTest'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.classlist', 'goog.events.EventType', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.ui.LabelInput', 'goog.userAgent'], false); -goog.addDependency('ui/linkbuttonrenderer.js', ['goog.ui.LinkButtonRenderer'], ['goog.ui.Button', 'goog.ui.FlatButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/media/flashobject.js', ['goog.ui.media.FlashObject', 'goog.ui.media.FlashObject.ScriptAccessLevel', 'goog.ui.media.FlashObject.Wmodes'], ['goog.asserts', 'goog.dom.TagName', 'goog.dom.safe', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.html.SafeUrl', 'goog.html.TrustedResourceUrl', 'goog.html.flash', 'goog.html.legacyconversions', 'goog.log', 'goog.object', 'goog.string', 'goog.structs.Map', 'goog.style', 'goog.ui.Component', 'goog.userAgent', 'goog.userAgent.flash'], false); -goog.addDependency('ui/media/flashobject_test.js', ['goog.ui.media.FlashObjectTest'], ['goog.dom', 'goog.dom.DomHelper', 'goog.dom.TagName', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.html.SafeUrl', 'goog.testing.MockControl', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.media.FlashObject', 'goog.userAgent'], false); -goog.addDependency('ui/media/flickr.js', ['goog.ui.media.FlickrSet', 'goog.ui.media.FlickrSetModel'], ['goog.html.TrustedResourceUrl', 'goog.string.Const', 'goog.ui.media.FlashObject', 'goog.ui.media.Media', 'goog.ui.media.MediaModel', 'goog.ui.media.MediaRenderer'], false); -goog.addDependency('ui/media/flickr_test.js', ['goog.ui.media.FlickrSetTest'], ['goog.dom', 'goog.dom.TagName', 'goog.html.testing', 'goog.testing.jsunit', 'goog.ui.media.FlashObject', 'goog.ui.media.FlickrSet', 'goog.ui.media.FlickrSetModel', 'goog.ui.media.Media'], false); -goog.addDependency('ui/media/googlevideo.js', ['goog.ui.media.GoogleVideo', 'goog.ui.media.GoogleVideoModel'], ['goog.string', 'goog.ui.media.FlashObject', 'goog.ui.media.Media', 'goog.ui.media.MediaModel', 'goog.ui.media.MediaRenderer'], false); -goog.addDependency('ui/media/googlevideo_test.js', ['goog.ui.media.GoogleVideoTest'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.ui.media.FlashObject', 'goog.ui.media.GoogleVideo', 'goog.ui.media.GoogleVideoModel', 'goog.ui.media.Media'], false); -goog.addDependency('ui/media/media.js', ['goog.ui.media.Media', 'goog.ui.media.MediaRenderer'], ['goog.asserts', 'goog.dom.TagName', 'goog.style', 'goog.ui.Component', 'goog.ui.Control', 'goog.ui.ControlRenderer'], false); -goog.addDependency('ui/media/media_test.js', ['goog.ui.media.MediaTest'], ['goog.dom', 'goog.dom.TagName', 'goog.math.Size', 'goog.testing.jsunit', 'goog.ui.ControlRenderer', 'goog.ui.media.Media', 'goog.ui.media.MediaModel', 'goog.ui.media.MediaRenderer'], false); -goog.addDependency('ui/media/mediamodel.js', ['goog.ui.media.MediaModel', 'goog.ui.media.MediaModel.Category', 'goog.ui.media.MediaModel.Credit', 'goog.ui.media.MediaModel.Credit.Role', 'goog.ui.media.MediaModel.Credit.Scheme', 'goog.ui.media.MediaModel.Medium', 'goog.ui.media.MediaModel.MimeType', 'goog.ui.media.MediaModel.Player', 'goog.ui.media.MediaModel.SubTitle', 'goog.ui.media.MediaModel.Thumbnail'], ['goog.array', 'goog.html.TrustedResourceUrl', 'goog.html.legacyconversions'], false); -goog.addDependency('ui/media/mediamodel_test.js', ['goog.ui.media.MediaModelTest'], ['goog.testing.jsunit', 'goog.ui.media.MediaModel'], false); -goog.addDependency('ui/media/mp3.js', ['goog.ui.media.Mp3'], ['goog.string', 'goog.ui.media.FlashObject', 'goog.ui.media.Media', 'goog.ui.media.MediaRenderer'], false); -goog.addDependency('ui/media/mp3_test.js', ['goog.ui.media.Mp3Test'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.ui.media.FlashObject', 'goog.ui.media.Media', 'goog.ui.media.MediaModel', 'goog.ui.media.Mp3'], false); -goog.addDependency('ui/media/photo.js', ['goog.ui.media.Photo'], ['goog.dom.TagName', 'goog.ui.media.Media', 'goog.ui.media.MediaRenderer'], false); -goog.addDependency('ui/media/photo_test.js', ['goog.ui.media.PhotoTest'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.ui.media.MediaModel', 'goog.ui.media.Photo'], false); -goog.addDependency('ui/media/picasa.js', ['goog.ui.media.PicasaAlbum', 'goog.ui.media.PicasaAlbumModel'], ['goog.html.TrustedResourceUrl', 'goog.string.Const', 'goog.ui.media.FlashObject', 'goog.ui.media.Media', 'goog.ui.media.MediaModel', 'goog.ui.media.MediaRenderer'], false); -goog.addDependency('ui/media/picasa_test.js', ['goog.ui.media.PicasaTest'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.ui.media.FlashObject', 'goog.ui.media.Media', 'goog.ui.media.PicasaAlbum', 'goog.ui.media.PicasaAlbumModel'], false); -goog.addDependency('ui/media/vimeo.js', ['goog.ui.media.Vimeo', 'goog.ui.media.VimeoModel'], ['goog.string', 'goog.ui.media.FlashObject', 'goog.ui.media.Media', 'goog.ui.media.MediaModel', 'goog.ui.media.MediaRenderer'], false); -goog.addDependency('ui/media/vimeo_test.js', ['goog.ui.media.VimeoTest'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.ui.media.FlashObject', 'goog.ui.media.Media', 'goog.ui.media.Vimeo', 'goog.ui.media.VimeoModel'], false); -goog.addDependency('ui/media/youtube.js', ['goog.ui.media.Youtube', 'goog.ui.media.YoutubeModel'], ['goog.dom.TagName', 'goog.string', 'goog.ui.Component', 'goog.ui.media.FlashObject', 'goog.ui.media.Media', 'goog.ui.media.MediaModel', 'goog.ui.media.MediaRenderer'], false); -goog.addDependency('ui/media/youtube_test.js', ['goog.ui.media.YoutubeTest'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.ui.media.FlashObject', 'goog.ui.media.Youtube', 'goog.ui.media.YoutubeModel'], false); -goog.addDependency('ui/menu.js', ['goog.ui.Menu', 'goog.ui.Menu.EventType'], ['goog.dom.TagName', 'goog.math.Coordinate', 'goog.string', 'goog.style', 'goog.ui.Component.EventType', 'goog.ui.Component.State', 'goog.ui.Container', 'goog.ui.Container.Orientation', 'goog.ui.MenuHeader', 'goog.ui.MenuItem', 'goog.ui.MenuRenderer', 'goog.ui.MenuSeparator'], false); -goog.addDependency('ui/menu_test.js', ['goog.ui.MenuTest'], ['goog.dom', 'goog.events', 'goog.math.Coordinate', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.Menu'], false); -goog.addDependency('ui/menubar.js', ['goog.ui.menuBar'], ['goog.ui.Container', 'goog.ui.MenuBarRenderer'], false); -goog.addDependency('ui/menubardecorator.js', ['goog.ui.menuBarDecorator'], ['goog.ui.MenuBarRenderer', 'goog.ui.menuBar', 'goog.ui.registry'], false); -goog.addDependency('ui/menubarrenderer.js', ['goog.ui.MenuBarRenderer'], ['goog.a11y.aria.Role', 'goog.ui.Container', 'goog.ui.ContainerRenderer'], false); -goog.addDependency('ui/menubase.js', ['goog.ui.MenuBase'], ['goog.events.EventHandler', 'goog.events.EventType', 'goog.events.KeyHandler', 'goog.ui.Popup'], false); -goog.addDependency('ui/menubutton.js', ['goog.ui.MenuButton'], ['goog.Timer', 'goog.a11y.aria', 'goog.a11y.aria.State', 'goog.asserts', 'goog.dom', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.math.Box', 'goog.math.Rect', 'goog.positioning', 'goog.positioning.Corner', 'goog.positioning.MenuAnchoredPosition', 'goog.positioning.Overflow', 'goog.style', 'goog.ui.Button', 'goog.ui.Component', 'goog.ui.IdGenerator', 'goog.ui.Menu', 'goog.ui.MenuButtonRenderer', 'goog.ui.MenuItem', 'goog.ui.MenuRenderer', 'goog.ui.registry', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('ui/menubutton_test.js', ['goog.ui.MenuButtonTest'], ['goog.Timer', 'goog.a11y.aria', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.positioning', 'goog.positioning.Corner', 'goog.positioning.MenuAnchoredPosition', 'goog.positioning.Overflow', 'goog.style', 'goog.testing.ExpectedFailures', 'goog.testing.PropertyReplacer', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.Component', 'goog.ui.Menu', 'goog.ui.MenuButton', 'goog.ui.MenuItem', 'goog.ui.SubMenu', 'goog.userAgent', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('ui/menubuttonrenderer.js', ['goog.ui.MenuButtonRenderer'], ['goog.dom', 'goog.dom.TagName', 'goog.style', 'goog.ui.CustomButtonRenderer', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.Menu', 'goog.ui.MenuRenderer'], false); -goog.addDependency('ui/menubuttonrenderer_test.js', ['goog.ui.MenuButtonRendererTest'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.testing.jsunit', 'goog.testing.ui.rendererasserts', 'goog.ui.MenuButton', 'goog.ui.MenuButtonRenderer', 'goog.userAgent'], false); -goog.addDependency('ui/menuheader.js', ['goog.ui.MenuHeader'], ['goog.ui.Component', 'goog.ui.Control', 'goog.ui.MenuHeaderRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/menuheaderrenderer.js', ['goog.ui.MenuHeaderRenderer'], ['goog.ui.ControlRenderer'], false); -goog.addDependency('ui/menuitem.js', ['goog.ui.MenuItem'], ['goog.a11y.aria.Role', 'goog.array', 'goog.dom', 'goog.dom.classlist', 'goog.math.Coordinate', 'goog.string', 'goog.ui.Component', 'goog.ui.Control', 'goog.ui.MenuItemRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/menuitem_test.js', ['goog.ui.MenuItemTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.array', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.KeyCodes', 'goog.math.Coordinate', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.Component', 'goog.ui.MenuItem', 'goog.ui.MenuItemRenderer'], false); -goog.addDependency('ui/menuitemrenderer.js', ['goog.ui.MenuItemRenderer'], ['goog.a11y.aria.Role', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.Component', 'goog.ui.ControlRenderer'], false); -goog.addDependency('ui/menuitemrenderer_test.js', ['goog.ui.MenuItemRendererTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.classlist', 'goog.testing.jsunit', 'goog.testing.ui.rendererasserts', 'goog.ui.Component', 'goog.ui.MenuItem', 'goog.ui.MenuItemRenderer'], false); -goog.addDependency('ui/menurenderer.js', ['goog.ui.MenuRenderer'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.ui.ContainerRenderer', 'goog.ui.Separator'], false); -goog.addDependency('ui/menuseparator.js', ['goog.ui.MenuSeparator'], ['goog.ui.MenuSeparatorRenderer', 'goog.ui.Separator', 'goog.ui.registry'], false); -goog.addDependency('ui/menuseparatorrenderer.js', ['goog.ui.MenuSeparatorRenderer'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.ControlRenderer'], false); -goog.addDependency('ui/menuseparatorrenderer_test.js', ['goog.ui.MenuSeparatorRendererTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.ui.MenuSeparator', 'goog.ui.MenuSeparatorRenderer'], false); -goog.addDependency('ui/mockactivitymonitor.js', ['goog.ui.MockActivityMonitor'], ['goog.events.EventType', 'goog.ui.ActivityMonitor'], false); -goog.addDependency('ui/mockactivitymonitor_test.js', ['goog.ui.MockActivityMonitorTest'], ['goog.events', 'goog.functions', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.ActivityMonitor', 'goog.ui.MockActivityMonitor'], false); -goog.addDependency('ui/modalariavisibilityhelper.js', ['goog.ui.ModalAriaVisibilityHelper'], ['goog.a11y.aria', 'goog.a11y.aria.State'], false); -goog.addDependency('ui/modalariavisibilityhelper_test.js', ['goog.ui.ModalAriaVisibilityHelperTest'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.dom', 'goog.string', 'goog.testing.jsunit', 'goog.ui.ModalAriaVisibilityHelper'], false); -goog.addDependency('ui/modalpopup.js', ['goog.ui.ModalPopup'], ['goog.Timer', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.dom.iframe', 'goog.events', 'goog.events.EventType', 'goog.events.FocusHandler', 'goog.fx.Transition', 'goog.string', 'goog.style', 'goog.ui.Component', 'goog.ui.ModalAriaVisibilityHelper', 'goog.ui.PopupBase', 'goog.userAgent'], false); -goog.addDependency('ui/modalpopup_test.js', ['goog.ui.ModalPopupTest'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.dispose', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventTarget', 'goog.fx.Transition', 'goog.fx.css3', 'goog.string', 'goog.style', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.ui.ModalPopup', 'goog.ui.PopupBase'], false); -goog.addDependency('ui/nativebuttonrenderer.js', ['goog.ui.NativeButtonRenderer'], ['goog.asserts', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventType', 'goog.ui.ButtonRenderer', 'goog.ui.Component'], false); -goog.addDependency('ui/nativebuttonrenderer_test.js', ['goog.ui.NativeButtonRendererTest'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.testing.ExpectedFailures', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.ui.rendererasserts', 'goog.ui.Button', 'goog.ui.Component', 'goog.ui.NativeButtonRenderer', 'goog.userAgent'], false); -goog.addDependency('ui/option.js', ['goog.ui.Option'], ['goog.ui.Component', 'goog.ui.MenuItem', 'goog.ui.registry'], false); -goog.addDependency('ui/palette.js', ['goog.ui.Palette'], ['goog.array', 'goog.dom', 'goog.events', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.math.Size', 'goog.ui.Component', 'goog.ui.Control', 'goog.ui.PaletteRenderer', 'goog.ui.SelectionModel'], false); -goog.addDependency('ui/palette_test.js', ['goog.ui.PaletteTest'], ['goog.a11y.aria', 'goog.dom', 'goog.events', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyEvent', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.Component', 'goog.ui.Container', 'goog.ui.Palette'], false); -goog.addDependency('ui/paletterenderer.js', ['goog.ui.PaletteRenderer'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.NodeIterator', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.iter', 'goog.style', 'goog.ui.ControlRenderer', 'goog.userAgent'], false); -goog.addDependency('ui/paletterenderer_test.js', ['goog.ui.PaletteRendererTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.ui.Palette', 'goog.ui.PaletteRenderer'], false); -goog.addDependency('ui/plaintextspellchecker.js', ['goog.ui.PlainTextSpellChecker'], ['goog.Timer', 'goog.a11y.aria', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.spell.SpellCheck', 'goog.style', 'goog.ui.AbstractSpellChecker', 'goog.ui.Component', 'goog.userAgent'], false); -goog.addDependency('ui/plaintextspellchecker_test.js', ['goog.ui.PlainTextSpellCheckerTest'], ['goog.Timer', 'goog.dom', 'goog.events.KeyCodes', 'goog.spell.SpellCheck', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.PlainTextSpellChecker'], false); -goog.addDependency('ui/popup.js', ['goog.ui.Popup'], ['goog.math.Box', 'goog.positioning.Corner', 'goog.style', 'goog.ui.PopupBase'], false); -goog.addDependency('ui/popup_test.js', ['goog.ui.PopupTest'], ['goog.positioning.AnchoredPosition', 'goog.positioning.Corner', 'goog.style', 'goog.testing.jsunit', 'goog.ui.Popup', 'goog.userAgent'], false); -goog.addDependency('ui/popupbase.js', ['goog.ui.PopupBase', 'goog.ui.PopupBase.EventType', 'goog.ui.PopupBase.Type'], ['goog.Timer', 'goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.fx.Transition', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('ui/popupbase_test.js', ['goog.ui.PopupBaseTest'], ['goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.fx.Transition', 'goog.fx.css3', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.ui.PopupBase'], false); -goog.addDependency('ui/popupcolorpicker.js', ['goog.ui.PopupColorPicker'], ['goog.asserts', 'goog.dom.classlist', 'goog.events.EventType', 'goog.positioning.AnchoredPosition', 'goog.positioning.Corner', 'goog.ui.ColorPicker', 'goog.ui.Component', 'goog.ui.Popup'], false); -goog.addDependency('ui/popupcolorpicker_test.js', ['goog.ui.PopupColorPickerTest'], ['goog.dom', 'goog.events', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.ColorPicker', 'goog.ui.PopupColorPicker'], false); -goog.addDependency('ui/popupdatepicker.js', ['goog.ui.PopupDatePicker'], ['goog.events.EventType', 'goog.positioning.AnchoredPosition', 'goog.positioning.Corner', 'goog.positioning.Overflow', 'goog.style', 'goog.ui.Component', 'goog.ui.DatePicker', 'goog.ui.Popup', 'goog.ui.PopupBase'], false); -goog.addDependency('ui/popupdatepicker_test.js', ['goog.ui.PopupDatePickerTest'], ['goog.date.Date', 'goog.events', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.PopupBase', 'goog.ui.PopupDatePicker'], false); -goog.addDependency('ui/popupmenu.js', ['goog.ui.PopupMenu'], ['goog.events', 'goog.events.BrowserEvent', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.positioning.AnchoredViewportPosition', 'goog.positioning.Corner', 'goog.positioning.MenuAnchoredPosition', 'goog.positioning.Overflow', 'goog.positioning.ViewportClientPosition', 'goog.structs.Map', 'goog.style', 'goog.ui.Component', 'goog.ui.Menu', 'goog.ui.PopupBase', 'goog.userAgent'], false); -goog.addDependency('ui/popupmenu_test.js', ['goog.ui.PopupMenuTest'], ['goog.dom', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.math.Box', 'goog.math.Coordinate', 'goog.positioning.Corner', 'goog.style', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Menu', 'goog.ui.MenuItem', 'goog.ui.PopupMenu'], false); -goog.addDependency('ui/progressbar.js', ['goog.ui.ProgressBar', 'goog.ui.ProgressBar.Orientation'], ['goog.a11y.aria', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.EventType', 'goog.ui.Component', 'goog.ui.RangeModel', 'goog.userAgent'], false); -goog.addDependency('ui/prompt.js', ['goog.ui.Prompt'], ['goog.Timer', 'goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.events', 'goog.events.EventType', 'goog.functions', 'goog.html.SafeHtml', 'goog.html.legacyconversions', 'goog.ui.Component', 'goog.ui.Dialog', 'goog.userAgent'], false); -goog.addDependency('ui/prompt_test.js', ['goog.ui.PromptTest'], ['goog.dom.selection', 'goog.events.InputHandler', 'goog.events.KeyCodes', 'goog.functions', 'goog.string', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.BidiInput', 'goog.ui.Dialog', 'goog.ui.Prompt', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('ui/rangemodel.js', ['goog.ui.RangeModel'], ['goog.events.EventTarget', 'goog.ui.Component'], false); -goog.addDependency('ui/rangemodel_test.js', ['goog.ui.RangeModelTest'], ['goog.testing.jsunit', 'goog.ui.RangeModel'], false); -goog.addDependency('ui/ratings.js', ['goog.ui.Ratings', 'goog.ui.Ratings.EventType'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.asserts', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventType', 'goog.ui.Component'], false); -goog.addDependency('ui/registry.js', ['goog.ui.registry'], ['goog.asserts', 'goog.dom.classlist'], false); -goog.addDependency('ui/registry_test.js', ['goog.ui.registryTest'], ['goog.object', 'goog.testing.jsunit', 'goog.ui.registry'], false); -goog.addDependency('ui/richtextspellchecker.js', ['goog.ui.RichTextSpellChecker'], ['goog.Timer', 'goog.asserts', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.math.Coordinate', 'goog.spell.SpellCheck', 'goog.string.StringBuffer', 'goog.style', 'goog.ui.AbstractSpellChecker', 'goog.ui.Component', 'goog.ui.PopupMenu'], false); -goog.addDependency('ui/richtextspellchecker_test.js', ['goog.ui.RichTextSpellCheckerTest'], ['goog.dom.Range', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.KeyCodes', 'goog.object', 'goog.spell.SpellCheck', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.RichTextSpellChecker'], false); -goog.addDependency('ui/roundedpanel.js', ['goog.ui.BaseRoundedPanel', 'goog.ui.CssRoundedPanel', 'goog.ui.GraphicsRoundedPanel', 'goog.ui.RoundedPanel', 'goog.ui.RoundedPanel.Corner'], ['goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.graphics', 'goog.graphics.Path', 'goog.graphics.SolidFill', 'goog.graphics.Stroke', 'goog.math', 'goog.math.Coordinate', 'goog.style', 'goog.ui.Component', 'goog.userAgent'], false); -goog.addDependency('ui/roundedpanel_test.js', ['goog.ui.RoundedPanelTest'], ['goog.testing.jsunit', 'goog.ui.CssRoundedPanel', 'goog.ui.GraphicsRoundedPanel', 'goog.ui.RoundedPanel', 'goog.userAgent'], false); -goog.addDependency('ui/roundedtabrenderer.js', ['goog.ui.RoundedTabRenderer'], ['goog.dom', 'goog.dom.TagName', 'goog.ui.Tab', 'goog.ui.TabBar', 'goog.ui.TabRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/scrollfloater.js', ['goog.ui.ScrollFloater', 'goog.ui.ScrollFloater.EventType'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventType', 'goog.style', 'goog.ui.Component', 'goog.userAgent'], false); -goog.addDependency('ui/scrollfloater_test.js', ['goog.ui.ScrollFloaterTest'], ['goog.dom', 'goog.events', 'goog.style', 'goog.testing.jsunit', 'goog.ui.ScrollFloater'], false); -goog.addDependency('ui/select.js', ['goog.ui.Select'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.array', 'goog.events.EventType', 'goog.ui.Component', 'goog.ui.IdGenerator', 'goog.ui.MenuButton', 'goog.ui.MenuItem', 'goog.ui.MenuRenderer', 'goog.ui.SelectionModel', 'goog.ui.registry'], false); -goog.addDependency('ui/select_test.js', ['goog.ui.SelectTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.dom', 'goog.events', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.Component', 'goog.ui.CustomButtonRenderer', 'goog.ui.Menu', 'goog.ui.MenuItem', 'goog.ui.Select', 'goog.ui.Separator'], false); -goog.addDependency('ui/selectionmenubutton.js', ['goog.ui.SelectionMenuButton', 'goog.ui.SelectionMenuButton.SelectionState'], ['goog.dom.InputType', 'goog.dom.TagName', 'goog.events.EventType', 'goog.style', 'goog.ui.Component', 'goog.ui.MenuButton', 'goog.ui.MenuItem', 'goog.ui.registry'], false); -goog.addDependency('ui/selectionmenubutton_test.js', ['goog.ui.SelectionMenuButtonTest'], ['goog.dom', 'goog.events', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.SelectionMenuButton'], false); -goog.addDependency('ui/selectionmodel.js', ['goog.ui.SelectionModel'], ['goog.array', 'goog.events.EventTarget', 'goog.events.EventType'], false); -goog.addDependency('ui/selectionmodel_test.js', ['goog.ui.SelectionModelTest'], ['goog.array', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.SelectionModel'], false); -goog.addDependency('ui/separator.js', ['goog.ui.Separator'], ['goog.a11y.aria', 'goog.asserts', 'goog.ui.Component', 'goog.ui.Control', 'goog.ui.MenuSeparatorRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/serverchart.js', ['goog.ui.ServerChart', 'goog.ui.ServerChart.AxisDisplayType', 'goog.ui.ServerChart.ChartType', 'goog.ui.ServerChart.EncodingType', 'goog.ui.ServerChart.Event', 'goog.ui.ServerChart.LegendPosition', 'goog.ui.ServerChart.MaximumValue', 'goog.ui.ServerChart.MultiAxisAlignment', 'goog.ui.ServerChart.MultiAxisType', 'goog.ui.ServerChart.UriParam', 'goog.ui.ServerChart.UriTooLongEvent'], ['goog.Uri', 'goog.array', 'goog.asserts', 'goog.dom.TagName', 'goog.events.Event', 'goog.string', 'goog.ui.Component'], false); -goog.addDependency('ui/serverchart_test.js', ['goog.ui.ServerChartTest'], ['goog.Uri', 'goog.events', 'goog.testing.jsunit', 'goog.ui.ServerChart'], false); -goog.addDependency('ui/slider.js', ['goog.ui.Slider', 'goog.ui.Slider.Orientation'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.dom', 'goog.dom.TagName', 'goog.ui.SliderBase'], false); -goog.addDependency('ui/sliderbase.js', ['goog.ui.SliderBase', 'goog.ui.SliderBase.AnimationFactory', 'goog.ui.SliderBase.Orientation'], ['goog.Timer', 'goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.events.MouseWheelHandler', 'goog.functions', 'goog.fx.AnimationParallelQueue', 'goog.fx.Dragger', 'goog.fx.Transition', 'goog.fx.dom.ResizeHeight', 'goog.fx.dom.ResizeWidth', 'goog.fx.dom.Slide', 'goog.math', 'goog.math.Coordinate', 'goog.style', 'goog.style.bidi', 'goog.ui.Component', 'goog.ui.RangeModel'], false); -goog.addDependency('ui/sliderbase_test.js', ['goog.ui.SliderBaseTest'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.fx.Animation', 'goog.math.Coordinate', 'goog.style', 'goog.style.bidi', 'goog.testing.MockClock', 'goog.testing.MockControl', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.mockmatchers', 'goog.testing.recordFunction', 'goog.ui.Component', 'goog.ui.SliderBase', 'goog.userAgent'], false); -goog.addDependency('ui/splitbehavior.js', ['goog.ui.SplitBehavior', 'goog.ui.SplitBehavior.DefaultHandlers'], ['goog.Disposable', 'goog.asserts', 'goog.dispose', 'goog.dom.NodeType', 'goog.dom.classlist', 'goog.events.EventHandler', 'goog.ui.ButtonSide', 'goog.ui.Component', 'goog.ui.decorate', 'goog.ui.registry'], false); -goog.addDependency('ui/splitbehavior_test.js', ['goog.ui.SplitBehaviorTest'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.Event', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.CustomButton', 'goog.ui.Menu', 'goog.ui.MenuButton', 'goog.ui.MenuItem', 'goog.ui.SplitBehavior', 'goog.ui.decorate'], false); -goog.addDependency('ui/splitpane.js', ['goog.ui.SplitPane', 'goog.ui.SplitPane.Orientation'], ['goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventType', 'goog.fx.Dragger', 'goog.math.Rect', 'goog.math.Size', 'goog.style', 'goog.ui.Component', 'goog.userAgent'], false); -goog.addDependency('ui/splitpane_test.js', ['goog.ui.SplitPaneTest'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.math.Size', 'goog.style', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.Component', 'goog.ui.SplitPane'], false); -goog.addDependency('ui/style/app/buttonrenderer.js', ['goog.ui.style.app.ButtonRenderer'], ['goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.Button', 'goog.ui.CustomButtonRenderer', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.registry'], false); -goog.addDependency('ui/style/app/buttonrenderer_test.js', ['goog.ui.style.app.ButtonRendererTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.testing.ui.style', 'goog.ui.Button', 'goog.ui.Component', 'goog.ui.style.app.ButtonRenderer', 'goog.userAgent'], false); -goog.addDependency('ui/style/app/menubuttonrenderer.js', ['goog.ui.style.app.MenuButtonRenderer'], ['goog.a11y.aria.Role', 'goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.style', 'goog.ui.Menu', 'goog.ui.MenuRenderer', 'goog.ui.style.app.ButtonRenderer'], false); -goog.addDependency('ui/style/app/menubuttonrenderer_test.js', ['goog.ui.style.app.MenuButtonRendererTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.testing.ui.style', 'goog.ui.Component', 'goog.ui.MenuButton', 'goog.ui.style.app.MenuButtonRenderer'], false); -goog.addDependency('ui/style/app/primaryactionbuttonrenderer.js', ['goog.ui.style.app.PrimaryActionButtonRenderer'], ['goog.ui.Button', 'goog.ui.registry', 'goog.ui.style.app.ButtonRenderer'], false); -goog.addDependency('ui/style/app/primaryactionbuttonrenderer_test.js', ['goog.ui.style.app.PrimaryActionButtonRendererTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.testing.ui.style', 'goog.ui.Button', 'goog.ui.Component', 'goog.ui.style.app.PrimaryActionButtonRenderer'], false); -goog.addDependency('ui/submenu.js', ['goog.ui.SubMenu'], ['goog.Timer', 'goog.asserts', 'goog.dom', 'goog.dom.classlist', 'goog.events.KeyCodes', 'goog.positioning.AnchoredViewportPosition', 'goog.positioning.Corner', 'goog.style', 'goog.ui.Component', 'goog.ui.Menu', 'goog.ui.MenuItem', 'goog.ui.SubMenuRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/submenu_test.js', ['goog.ui.SubMenuTest'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.classlist', 'goog.events', 'goog.events.Event', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.functions', 'goog.positioning', 'goog.positioning.Overflow', 'goog.style', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.Menu', 'goog.ui.MenuItem', 'goog.ui.SubMenu', 'goog.ui.SubMenuRenderer'], false); -goog.addDependency('ui/submenurenderer.js', ['goog.ui.SubMenuRenderer'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.style', 'goog.ui.Menu', 'goog.ui.MenuItemRenderer'], false); -goog.addDependency('ui/tab.js', ['goog.ui.Tab'], ['goog.ui.Component', 'goog.ui.Control', 'goog.ui.TabRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/tab_test.js', ['goog.ui.TabTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.Tab', 'goog.ui.TabRenderer'], false); -goog.addDependency('ui/tabbar.js', ['goog.ui.TabBar', 'goog.ui.TabBar.Location'], ['goog.ui.Component.EventType', 'goog.ui.Container', 'goog.ui.Container.Orientation', 'goog.ui.Tab', 'goog.ui.TabBarRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/tabbar_test.js', ['goog.ui.TabBarTest'], ['goog.dom', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.Container', 'goog.ui.Tab', 'goog.ui.TabBar', 'goog.ui.TabBarRenderer'], false); -goog.addDependency('ui/tabbarrenderer.js', ['goog.ui.TabBarRenderer'], ['goog.a11y.aria.Role', 'goog.object', 'goog.ui.ContainerRenderer'], false); -goog.addDependency('ui/tabbarrenderer_test.js', ['goog.ui.TabBarRendererTest'], ['goog.a11y.aria.Role', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.testing.jsunit', 'goog.testing.ui.rendererasserts', 'goog.ui.Container', 'goog.ui.TabBar', 'goog.ui.TabBarRenderer'], false); -goog.addDependency('ui/tablesorter.js', ['goog.ui.TableSorter', 'goog.ui.TableSorter.EventType'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventType', 'goog.functions', 'goog.ui.Component'], false); -goog.addDependency('ui/tablesorter_test.js', ['goog.ui.TableSorterTest'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.TableSorter'], false); -goog.addDependency('ui/tabpane.js', ['goog.ui.TabPane', 'goog.ui.TabPane.Events', 'goog.ui.TabPane.TabLocation', 'goog.ui.TabPane.TabPage', 'goog.ui.TabPaneEvent'], ['goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.Event', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.style'], false); -goog.addDependency('ui/tabpane_test.js', ['goog.ui.TabPaneTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.ui.TabPane'], false); -goog.addDependency('ui/tabrenderer.js', ['goog.ui.TabRenderer'], ['goog.a11y.aria.Role', 'goog.ui.Component', 'goog.ui.ControlRenderer'], false); -goog.addDependency('ui/tabrenderer_test.js', ['goog.ui.TabRendererTest'], ['goog.a11y.aria.Role', 'goog.dom', 'goog.dom.classlist', 'goog.testing.dom', 'goog.testing.jsunit', 'goog.testing.ui.rendererasserts', 'goog.ui.Tab', 'goog.ui.TabRenderer'], false); -goog.addDependency('ui/textarea.js', ['goog.ui.Textarea', 'goog.ui.Textarea.EventType'], ['goog.asserts', 'goog.dom', 'goog.dom.classlist', 'goog.events.EventType', 'goog.style', 'goog.ui.Control', 'goog.ui.TextareaRenderer', 'goog.userAgent'], false); -goog.addDependency('ui/textarea_test.js', ['goog.ui.TextareaTest'], ['goog.dom', 'goog.dom.classlist', 'goog.events', 'goog.style', 'goog.testing.ExpectedFailures', 'goog.testing.events.EventObserver', 'goog.testing.jsunit', 'goog.ui.Textarea', 'goog.ui.TextareaRenderer', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('ui/textarearenderer.js', ['goog.ui.TextareaRenderer'], ['goog.dom.TagName', 'goog.ui.Component', 'goog.ui.ControlRenderer'], false); -goog.addDependency('ui/togglebutton.js', ['goog.ui.ToggleButton'], ['goog.ui.Button', 'goog.ui.Component', 'goog.ui.CustomButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/toolbar.js', ['goog.ui.Toolbar'], ['goog.ui.Container', 'goog.ui.ToolbarRenderer'], false); -goog.addDependency('ui/toolbar_test.js', ['goog.ui.ToolbarTest'], ['goog.a11y.aria', 'goog.dom', 'goog.events.EventType', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.ui.Toolbar', 'goog.ui.ToolbarMenuButton'], false); -goog.addDependency('ui/toolbarbutton.js', ['goog.ui.ToolbarButton'], ['goog.ui.Button', 'goog.ui.ToolbarButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/toolbarbuttonrenderer.js', ['goog.ui.ToolbarButtonRenderer'], ['goog.ui.CustomButtonRenderer'], false); -goog.addDependency('ui/toolbarcolormenubutton.js', ['goog.ui.ToolbarColorMenuButton'], ['goog.ui.ColorMenuButton', 'goog.ui.ToolbarColorMenuButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/toolbarcolormenubuttonrenderer.js', ['goog.ui.ToolbarColorMenuButtonRenderer'], ['goog.asserts', 'goog.dom.classlist', 'goog.ui.ColorMenuButtonRenderer', 'goog.ui.MenuButtonRenderer', 'goog.ui.ToolbarMenuButtonRenderer'], false); -goog.addDependency('ui/toolbarcolormenubuttonrenderer_test.js', ['goog.ui.ToolbarColorMenuButtonRendererTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.testing.ui.RendererHarness', 'goog.testing.ui.rendererasserts', 'goog.ui.ToolbarColorMenuButton', 'goog.ui.ToolbarColorMenuButtonRenderer'], false); -goog.addDependency('ui/toolbarmenubutton.js', ['goog.ui.ToolbarMenuButton'], ['goog.ui.MenuButton', 'goog.ui.ToolbarMenuButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/toolbarmenubuttonrenderer.js', ['goog.ui.ToolbarMenuButtonRenderer'], ['goog.ui.MenuButtonRenderer'], false); -goog.addDependency('ui/toolbarrenderer.js', ['goog.ui.ToolbarRenderer'], ['goog.a11y.aria.Role', 'goog.dom.TagName', 'goog.ui.Container', 'goog.ui.ContainerRenderer', 'goog.ui.Separator', 'goog.ui.ToolbarSeparatorRenderer'], false); -goog.addDependency('ui/toolbarselect.js', ['goog.ui.ToolbarSelect'], ['goog.ui.Select', 'goog.ui.ToolbarMenuButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/toolbarseparator.js', ['goog.ui.ToolbarSeparator'], ['goog.ui.Separator', 'goog.ui.ToolbarSeparatorRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/toolbarseparatorrenderer.js', ['goog.ui.ToolbarSeparatorRenderer'], ['goog.asserts', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.MenuSeparatorRenderer'], false); -goog.addDependency('ui/toolbarseparatorrenderer_test.js', ['goog.ui.ToolbarSeparatorRendererTest'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.ToolbarSeparator', 'goog.ui.ToolbarSeparatorRenderer'], false); -goog.addDependency('ui/toolbartogglebutton.js', ['goog.ui.ToolbarToggleButton'], ['goog.ui.ToggleButton', 'goog.ui.ToolbarButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/tooltip.js', ['goog.ui.Tooltip', 'goog.ui.Tooltip.CursorTooltipPosition', 'goog.ui.Tooltip.ElementTooltipPosition', 'goog.ui.Tooltip.State'], ['goog.Timer', 'goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.safe', 'goog.events', 'goog.events.EventType', 'goog.events.FocusHandler', 'goog.html.legacyconversions', 'goog.math.Box', 'goog.math.Coordinate', 'goog.positioning', 'goog.positioning.AnchoredPosition', 'goog.positioning.Corner', 'goog.positioning.Overflow', 'goog.positioning.OverflowStatus', 'goog.positioning.ViewportPosition', 'goog.structs.Set', 'goog.style', 'goog.ui.Popup', 'goog.ui.PopupBase'], false); -goog.addDependency('ui/tooltip_test.js', ['goog.ui.TooltipTest'], ['goog.dom', 'goog.dom.TagName', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.FocusHandler', 'goog.html.testing', 'goog.math.Coordinate', 'goog.positioning.AbsolutePosition', 'goog.style', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.TestQueue', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.PopupBase', 'goog.ui.Tooltip', 'goog.userAgent'], false); -goog.addDependency('ui/tree/basenode.js', ['goog.ui.tree.BaseNode', 'goog.ui.tree.BaseNode.EventType'], ['goog.Timer', 'goog.a11y.aria', 'goog.asserts', 'goog.dom.safe', 'goog.events.Event', 'goog.events.KeyCodes', 'goog.html.SafeHtml', 'goog.html.SafeStyle', 'goog.html.legacyconversions', 'goog.string', 'goog.string.StringBuffer', 'goog.style', 'goog.ui.Component'], false); -goog.addDependency('ui/tree/basenode_test.js', ['goog.ui.tree.BaseNodeTest'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.html.legacyconversions', 'goog.html.testing', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.tree.BaseNode', 'goog.ui.tree.TreeControl', 'goog.ui.tree.TreeNode'], false); -goog.addDependency('ui/tree/treecontrol.js', ['goog.ui.tree.TreeControl'], ['goog.a11y.aria', 'goog.asserts', 'goog.dom.classlist', 'goog.events.EventType', 'goog.events.FocusHandler', 'goog.events.KeyHandler', 'goog.html.SafeHtml', 'goog.log', 'goog.ui.tree.BaseNode', 'goog.ui.tree.TreeNode', 'goog.ui.tree.TypeAhead', 'goog.userAgent'], false); -goog.addDependency('ui/tree/treecontrol_test.js', ['goog.ui.tree.TreeControlTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.ui.tree.TreeControl'], false); -goog.addDependency('ui/tree/treenode.js', ['goog.ui.tree.TreeNode'], ['goog.ui.tree.BaseNode'], false); -goog.addDependency('ui/tree/typeahead.js', ['goog.ui.tree.TypeAhead', 'goog.ui.tree.TypeAhead.Offset'], ['goog.array', 'goog.events.KeyCodes', 'goog.string', 'goog.structs.Trie'], false); -goog.addDependency('ui/tree/typeahead_test.js', ['goog.ui.tree.TypeAheadTest'], ['goog.dom', 'goog.events.KeyCodes', 'goog.testing.jsunit', 'goog.ui.tree.TreeControl', 'goog.ui.tree.TypeAhead'], false); -goog.addDependency('ui/tristatemenuitem.js', ['goog.ui.TriStateMenuItem', 'goog.ui.TriStateMenuItem.State'], ['goog.dom.classlist', 'goog.ui.Component', 'goog.ui.MenuItem', 'goog.ui.TriStateMenuItemRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/tristatemenuitemrenderer.js', ['goog.ui.TriStateMenuItemRenderer'], ['goog.asserts', 'goog.dom.classlist', 'goog.ui.MenuItemRenderer'], false); -goog.addDependency('ui/twothumbslider.js', ['goog.ui.TwoThumbSlider'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.dom', 'goog.dom.TagName', 'goog.ui.SliderBase'], false); -goog.addDependency('ui/twothumbslider_test.js', ['goog.ui.TwoThumbSliderTest'], ['goog.testing.jsunit', 'goog.ui.SliderBase', 'goog.ui.TwoThumbSlider'], false); -goog.addDependency('ui/zippy.js', ['goog.ui.Zippy', 'goog.ui.Zippy.Events', 'goog.ui.ZippyEvent'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.classlist', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.style'], false); -goog.addDependency('ui/zippy_test.js', ['goog.ui.ZippyTest'], ['goog.a11y.aria', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.object', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Zippy'], false); -goog.addDependency('uri/uri.js', ['goog.Uri', 'goog.Uri.QueryData'], ['goog.array', 'goog.string', 'goog.structs', 'goog.structs.Map', 'goog.uri.utils', 'goog.uri.utils.ComponentIndex', 'goog.uri.utils.StandardQueryParam'], false); -goog.addDependency('uri/uri_test.js', ['goog.UriTest'], ['goog.Uri', 'goog.testing.jsunit'], false); -goog.addDependency('uri/utils.js', ['goog.uri.utils', 'goog.uri.utils.ComponentIndex', 'goog.uri.utils.QueryArray', 'goog.uri.utils.QueryValue', 'goog.uri.utils.StandardQueryParam'], ['goog.asserts', 'goog.string'], false); -goog.addDependency('uri/utils_test.js', ['goog.uri.utilsTest'], ['goog.functions', 'goog.string', 'goog.testing.jsunit', 'goog.uri.utils'], false); -goog.addDependency('useragent/adobereader.js', ['goog.userAgent.adobeReader'], ['goog.string', 'goog.userAgent'], false); -goog.addDependency('useragent/adobereader_test.js', ['goog.userAgent.adobeReaderTest'], ['goog.testing.jsunit', 'goog.userAgent.adobeReader'], false); -goog.addDependency('useragent/flash.js', ['goog.userAgent.flash'], ['goog.string'], false); -goog.addDependency('useragent/flash_test.js', ['goog.userAgent.flashTest'], ['goog.testing.jsunit', 'goog.userAgent.flash'], false); -goog.addDependency('useragent/iphoto.js', ['goog.userAgent.iphoto'], ['goog.string', 'goog.userAgent'], false); -goog.addDependency('useragent/jscript.js', ['goog.userAgent.jscript'], ['goog.string'], false); -goog.addDependency('useragent/jscript_test.js', ['goog.userAgent.jscriptTest'], ['goog.testing.jsunit', 'goog.userAgent.jscript'], false); -goog.addDependency('useragent/keyboard.js', ['goog.userAgent.keyboard'], ['goog.labs.userAgent.platform'], false); -goog.addDependency('useragent/keyboard_test.js', ['goog.userAgent.keyboardTest'], ['goog.labs.userAgent.testAgents', 'goog.labs.userAgent.util', 'goog.testing.MockUserAgent', 'goog.testing.jsunit', 'goog.userAgent.keyboard', 'goog.userAgentTestUtil'], false); -goog.addDependency('useragent/platform.js', ['goog.userAgent.platform'], ['goog.string', 'goog.userAgent'], false); -goog.addDependency('useragent/platform_test.js', ['goog.userAgent.platformTest'], ['goog.testing.MockUserAgent', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.platform', 'goog.userAgentTestUtil'], false); -goog.addDependency('useragent/product.js', ['goog.userAgent.product'], ['goog.labs.userAgent.browser', 'goog.labs.userAgent.platform', 'goog.userAgent'], false); -goog.addDependency('useragent/product_isversion.js', ['goog.userAgent.product.isVersion'], ['goog.labs.userAgent.platform', 'goog.string', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('useragent/product_test.js', ['goog.userAgent.productTest'], ['goog.array', 'goog.labs.userAgent.testAgents', 'goog.labs.userAgent.util', 'goog.testing.MockUserAgent', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product', 'goog.userAgent.product.isVersion', 'goog.userAgentTestUtil'], false); -goog.addDependency('useragent/useragent.js', ['goog.userAgent'], ['goog.labs.userAgent.browser', 'goog.labs.userAgent.engine', 'goog.labs.userAgent.platform', 'goog.labs.userAgent.util', 'goog.string'], false); -goog.addDependency('useragent/useragent_quirks_test.js', ['goog.userAgentQuirksTest'], ['goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('useragent/useragent_test.js', ['goog.userAgentTest'], ['goog.array', 'goog.labs.userAgent.platform', 'goog.labs.userAgent.testAgents', 'goog.labs.userAgent.util', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgentTestUtil'], false); -goog.addDependency('useragent/useragenttestutil.js', ['goog.userAgentTestUtil', 'goog.userAgentTestUtil.UserAgents'], ['goog.labs.userAgent.browser', 'goog.labs.userAgent.engine', 'goog.labs.userAgent.platform', 'goog.userAgent', 'goog.userAgent.keyboard', 'goog.userAgent.platform', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('vec/float32array.js', ['goog.vec.Float32Array'], [], false); -goog.addDependency('vec/float64array.js', ['goog.vec.Float64Array'], [], false); -goog.addDependency('vec/mat3.js', ['goog.vec.Mat3'], ['goog.vec'], false); -goog.addDependency('vec/mat3d.js', ['goog.vec.mat3d', 'goog.vec.mat3d.Type'], ['goog.vec'], false); -goog.addDependency('vec/mat3f.js', ['goog.vec.mat3f', 'goog.vec.mat3f.Type'], ['goog.vec'], false); -goog.addDependency('vec/mat4.js', ['goog.vec.Mat4'], ['goog.vec', 'goog.vec.Vec3', 'goog.vec.Vec4'], false); -goog.addDependency('vec/mat4d.js', ['goog.vec.mat4d', 'goog.vec.mat4d.Type'], ['goog.vec', 'goog.vec.vec3d', 'goog.vec.vec4d'], false); -goog.addDependency('vec/mat4f.js', ['goog.vec.mat4f', 'goog.vec.mat4f.Type'], ['goog.vec', 'goog.vec.vec3f', 'goog.vec.vec4f'], false); -goog.addDependency('vec/matrix3.js', ['goog.vec.Matrix3'], [], false); -goog.addDependency('vec/matrix4.js', ['goog.vec.Matrix4'], ['goog.vec', 'goog.vec.Vec3', 'goog.vec.Vec4'], false); -goog.addDependency('vec/quaternion.js', ['goog.vec.Quaternion'], ['goog.vec', 'goog.vec.Vec3', 'goog.vec.Vec4'], false); -goog.addDependency('vec/ray.js', ['goog.vec.Ray'], ['goog.vec.Vec3'], false); -goog.addDependency('vec/vec.js', ['goog.vec', 'goog.vec.AnyType', 'goog.vec.ArrayType', 'goog.vec.Float32', 'goog.vec.Float64', 'goog.vec.Number'], ['goog.vec.Float32Array', 'goog.vec.Float64Array'], false); -goog.addDependency('vec/vec2.js', ['goog.vec.Vec2'], ['goog.vec'], false); -goog.addDependency('vec/vec2d.js', ['goog.vec.vec2d', 'goog.vec.vec2d.Type'], ['goog.vec'], false); -goog.addDependency('vec/vec2f.js', ['goog.vec.vec2f', 'goog.vec.vec2f.Type'], ['goog.vec'], false); -goog.addDependency('vec/vec3.js', ['goog.vec.Vec3'], ['goog.vec'], false); -goog.addDependency('vec/vec3d.js', ['goog.vec.vec3d', 'goog.vec.vec3d.Type'], ['goog.vec'], false); -goog.addDependency('vec/vec3f.js', ['goog.vec.vec3f', 'goog.vec.vec3f.Type'], ['goog.vec'], false); -goog.addDependency('vec/vec4.js', ['goog.vec.Vec4'], ['goog.vec'], false); -goog.addDependency('vec/vec4d.js', ['goog.vec.vec4d', 'goog.vec.vec4d.Type'], ['goog.vec'], false); -goog.addDependency('vec/vec4f.js', ['goog.vec.vec4f', 'goog.vec.vec4f.Type'], ['goog.vec'], false); -goog.addDependency('webgl/webgl.js', ['goog.webgl'], [], false); -goog.addDependency('window/window.js', ['goog.window'], ['goog.dom.TagName', 'goog.dom.safe', 'goog.html.SafeUrl', 'goog.html.uncheckedconversions', 'goog.labs.userAgent.platform', 'goog.string', 'goog.string.Const', 'goog.userAgent'], false); -goog.addDependency('window/window_test.js', ['goog.windowTest'], ['goog.Promise', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.functions', 'goog.labs.userAgent.browser', 'goog.labs.userAgent.engine', 'goog.labs.userAgent.platform', 'goog.string', 'goog.testing.PropertyReplacer', 'goog.testing.TestCase', 'goog.testing.jsunit', 'goog.window'], false); diff --git a/libs/openlayers3/ol.css b/libs/openlayers3/ol.css deleted file mode 100644 index e22b6f4..0000000 --- a/libs/openlayers3/ol.css +++ /dev/null @@ -1 +0,0 @@ -.ol-control,.ol-scale-line{position:absolute;padding:2px}.ol-box{box-sizing:border-box;border-radius:2px;border:2px solid #00f}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:#95b9e6;background:rgba(0,60,136,.3);border-radius:4px;bottom:8px;left:8px}.ol-scale-line-inner{border:1px solid #eee;border-top:none;color:#eee;font-size:10px;text-align:center;margin:1px;will-change:contents,width}.ol-overlay-container{will-change:left,right,top,bottom}.ol-unsupported{display:none}.ol-viewport .ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-control{background-color:#eee;background-color:rgba(255,255,255,.4);border-radius:4px}.ol-control:hover{background-color:rgba(255,255,255,.6)}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}@media print{.ol-control{display:none}}.ol-control button{display:block;margin:1px;padding:0;color:#fff;font-size:1.14em;font-weight:700;text-decoration:none;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:#7b98bc;background-color:rgba(0,60,136,.5);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;font-size:1.2em;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:focus,.ol-control button:hover{text-decoration:none;background-color:#4c6079;background-color:rgba(0,60,136,.7)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em)}.ol-attribution ul{margin:0;padding:0 .5em;font-size:.7rem;line-height:1.375em;color:#000;text-shadow:0 0 2px #fff}.ol-attribution li{display:inline;list-style:none;line-height:inherit}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button,.ol-attribution ul{display:inline-block}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution.ol-logo-only ul{display:block}.ol-attribution:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0;height:1.1em;line-height:1em}.ol-attribution.ol-logo-only{background:0 0;bottom:.4em;height:1.1em;line-height:1em}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-logo-only button,.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:inline-block}.ol-overviewmap .ol-overviewmap-map{border:1px solid #7b98bc;height:150px;margin:2px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:1px;left:2px;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-overviewmap-box{border:2px dotted rgba(0,60,136,.7)} \ No newline at end of file diff --git a/libs/openlayers3/ol.js b/libs/openlayers3/ol.js deleted file mode 100644 index bfca885..0000000 --- a/libs/openlayers3/ol.js +++ /dev/null @@ -1,1017 +0,0 @@ -// OpenLayers 3. See http://openlayers.org/ -// License: https://raw.githubusercontent.com/openlayers/ol3/master/LICENSE.md -// Version: v3.11.2 - -(function (root, factory) { - if (typeof exports === "object") { - module.exports = factory(); - } else if (typeof define === "function" && define.amd) { - define([], factory); - } else { - root.ol = factory(); - } -}(this, function () { - var OPENLAYERS = {}; - var l,aa=aa||{},ba=this;function ca(b){return void 0!==b}function u(b,c,d){b=b.split(".");d=d||ba;b[0]in d||!d.execScript||d.execScript("var "+b[0]);for(var e;b.length&&(e=b.shift());)!b.length&&ca(c)?d[e]=c:d[e]?d=d[e]:d=d[e]={}}function da(){}function ea(b){b.Yb=function(){return b.Ng?b.Ng:b.Ng=new b}} -function fa(b){var c=typeof b;if("object"==c)if(b){if(b instanceof Array)return"array";if(b instanceof Object)return c;var d=Object.prototype.toString.call(b);if("[object Window]"==d)return"object";if("[object Array]"==d||"number"==typeof b.length&&"undefined"!=typeof b.splice&&"undefined"!=typeof b.propertyIsEnumerable&&!b.propertyIsEnumerable("splice"))return"array";if("[object Function]"==d||"undefined"!=typeof b.call&&"undefined"!=typeof b.propertyIsEnumerable&&!b.propertyIsEnumerable("call"))return"function"}else return"null"; -else if("function"==c&&"undefined"==typeof b.call)return"object";return c}function ga(b){return"array"==fa(b)}function ha(b){var c=fa(b);return"array"==c||"object"==c&&"number"==typeof b.length}function ia(b){return"string"==typeof b}function ja(b){return"number"==typeof b}function ka(b){return"function"==fa(b)}function ma(b){var c=typeof b;return"object"==c&&null!=b||"function"==c}function w(b){return b[na]||(b[na]=++oa)}var na="closure_uid_"+(1E9*Math.random()>>>0),oa=0; -function pa(b,c,d){return b.call.apply(b.bind,arguments)}function qa(b,c,d){if(!b)throw Error();if(2")&&(b=b.replace(Ia,">"));-1!=b.indexOf('"')&&(b=b.replace(Ja,"""));-1!=b.indexOf("'")&&(b=b.replace(La,"'"));-1!=b.indexOf("\x00")&&(b=b.replace(Ma,"�"));return b}var Ga=/&/g,Ha=//g,Ja=/"/g,La=/'/g,Ma=/\x00/g,Fa=/[\x00&<>"']/,Na=String.prototype.repeat?function(b,c){return b.repeat(c)}:function(b,c){return Array(c+1).join(b)}; -function Oa(b){b=ca(void 0)?b.toFixed(void 0):String(b);var c=b.indexOf(".");-1==c&&(c=b.length);return Na("0",Math.max(0,2-c))+b} -function Pa(b,c){for(var d=0,e=Ca(String(b)).split("."),f=Ca(String(c)).split("."),g=Math.max(e.length,f.length),h=0;0==d&&hc?1:0};function Sa(b,c,d){return Math.min(Math.max(b,c),d)}var Ta=function(){var b;"cosh"in Math?b=Math.cosh:b=function(b){b=Math.exp(b);return(b+1/b)/2};return b}();function Ua(b,c,d,e,f,g){var h=f-d,k=g-e;if(0!==h||0!==k){var m=((b-d)*h+(c-e)*k)/(h*h+k*k);1d?null:ia(b)?b.charAt(d):b[d]}function gb(b,c,d){for(var e=b.length,f=ia(b)?b.split(""):b,g=0;g=arguments.length?Za.slice.call(b,c):Za.slice.call(b,c,d)}function ob(b,c){b.sort(c||pb)}function qb(b){for(var c=rb,d=0;dc?1:bd)for(d=1;dg?1:.5))+f,0),void 0!==d&&(e=Math.min(e,d)),c/Math.pow(b,e)}};function zb(b){if(void 0!==b)return 0}function Ab(b,c){if(void 0!==b)return b+c}function Bb(b){var c=2*Math.PI/b;return function(b,e){if(void 0!==b)return b=Math.floor((b+e)/c+.5)*c}}function Cb(){var b=Wa(5);return function(c,d){if(void 0!==c)return Math.abs(c+d)<=b?0:c+d}};function Db(b,c,d){this.center=b;this.resolution=c;this.rotation=d};var Eb;a:{var Fb=ba.navigator;if(Fb){var Gb=Fb.userAgent;if(Gb){Eb=Gb;break a}}Eb=""}function Hb(b){return-1!=Eb.indexOf(b)};function Ib(b,c,d){for(var e in b)c.call(d,b[e],e,b)}function Jb(b,c){for(var d in b)if(c.call(void 0,b[d],d,b))return!0;return!1}function Kb(b){var c=0,d;for(d in b)c++;return c}function Lb(b){var c=[],d=0,e;for(e in b)c[d++]=b[e];return c}function Mb(b){var c=[],d=0,e;for(e in b)c[d++]=e;return c}function Nb(b,c){return c in b}function Ob(b,c){for(var d in b)if(b[d]==c)return!0;return!1}function Pb(b,c){for(var d in b)if(c.call(void 0,b[d],d,b))return d} -function Qb(b){for(var c in b)return!1;return!0}function Rb(b){for(var c in b)delete b[c]}function Sb(b,c,d){return c in b?b[c]:d}function Tb(b,c){var d=[];return c in b?b[c]:b[c]=d}function Ub(b){var c={},d;for(d in b)c[d]=b[d];return c}function Vb(b){var c=fa(b);if("object"==c||"array"==c){if(ka(b.clone))return b.clone();var c="array"==c?[]:{},d;for(d in b)c[d]=Vb(b[d]);return c}return b}var Wb="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "); -function Xb(b,c){for(var d,e,f=1;fparseFloat(b))?String(c):b}(),ic={};function jc(b){return ic[b]||(ic[b]=0<=Pa(hc,b))}var kc=ba.document,lc=kc&&Zb?gc()||("CSS1Compat"==kc.compatMode?parseInt(hc,10):5):void 0;var mc=!Zb||9<=lc,nc=!Zb||9<=lc,oc=Zb&&!jc("9");!bc||jc("528");ac&&jc("1.9b")||Zb&&jc("8")||Yb&&jc("9.5")||bc&&jc("528");ac&&!jc("8")||Zb&&jc("9");function pc(){0!=qc&&(rc[w(this)]=this);this.ia=this.ia;this.oa=this.oa}var qc=0,rc={};pc.prototype.ia=!1;pc.prototype.Ec=function(){if(!this.ia&&(this.ia=!0,this.X(),0!=qc)){var b=w(this);delete rc[b]}};function tc(b,c){var d=sa(uc,c);b.ia?d.call(void 0):(b.oa||(b.oa=[]),b.oa.push(ca(void 0)?ra(d,void 0):d))}pc.prototype.X=function(){if(this.oa)for(;this.oa.length;)this.oa.shift()()};function uc(b){b&&"function"==typeof b.Ec&&b.Ec()};function vc(b,c){this.type=b;this.g=this.target=c;this.i=!1;this.Qh=!0}vc.prototype.b=function(){this.i=!0};vc.prototype.preventDefault=function(){this.Qh=!1};function wc(b){b.b()}function xc(b){b.preventDefault()};var yc=Zb?"focusout":"DOMFocusOut";function zc(b){zc[" "](b);return b}zc[" "]=da;function Ac(b,c){vc.call(this,b?b.type:"");this.relatedTarget=this.g=this.target=null;this.u=this.j=this.button=this.screenY=this.screenX=this.clientY=this.clientX=this.offsetY=this.offsetX=0;this.A=this.f=this.c=this.B=!1;this.state=null;this.l=!1;this.a=null;if(b){var d=this.type=b.type,e=b.changedTouches?b.changedTouches[0]:null;this.target=b.target||b.srcElement;this.g=c;var f=b.relatedTarget;if(f){if(ac){var g;a:{try{zc(f.nodeName);g=!0;break a}catch(h){}g=!1}g||(f=null)}}else"mouseover"==d? -f=b.fromElement:"mouseout"==d&&(f=b.toElement);this.relatedTarget=f;null===e?(this.offsetX=bc||void 0!==b.offsetX?b.offsetX:b.layerX,this.offsetY=bc||void 0!==b.offsetY?b.offsetY:b.layerY,this.clientX=void 0!==b.clientX?b.clientX:b.pageX,this.clientY=void 0!==b.clientY?b.clientY:b.pageY,this.screenX=b.screenX||0,this.screenY=b.screenY||0):(this.clientX=void 0!==e.clientX?e.clientX:e.pageX,this.clientY=void 0!==e.clientY?e.clientY:e.pageY,this.screenX=e.screenX||0,this.screenY=e.screenY||0);this.button= -b.button;this.j=b.keyCode||0;this.u=b.charCode||("keypress"==d?b.keyCode:0);this.B=b.ctrlKey;this.c=b.altKey;this.f=b.shiftKey;this.A=b.metaKey;this.l=cc?b.metaKey:b.ctrlKey;this.state=b.state;this.a=b;b.defaultPrevented&&this.preventDefault()}}y(Ac,vc);var Bc=[1,4,2];function Cc(b){return(mc?0==b.a.button:"click"==b.type?!0:!!(b.a.button&Bc[0]))&&!(bc&&cc&&b.B)}Ac.prototype.b=function(){Ac.da.b.call(this);this.a.stopPropagation?this.a.stopPropagation():this.a.cancelBubble=!0}; -Ac.prototype.preventDefault=function(){Ac.da.preventDefault.call(this);var b=this.a;if(b.preventDefault)b.preventDefault();else if(b.returnValue=!1,oc)try{if(b.ctrlKey||112<=b.keyCode&&123>=b.keyCode)b.keyCode=-1}catch(c){}};var Dc="closure_listenable_"+(1E6*Math.random()|0);function Ec(b){return!(!b||!b[Dc])}var Fc=0;function Gc(b,c,d,e,f){this.listener=b;this.a=null;this.src=c;this.type=d;this.ad=!!e;this.je=f;this.key=++Fc;this.Tc=this.Ud=!1}function Hc(b){b.Tc=!0;b.listener=null;b.a=null;b.src=null;b.je=null};function Ic(b){this.src=b;this.a={};this.c=0}Ic.prototype.add=function(b,c,d,e,f){var g=b.toString();b=this.a[g];b||(b=this.a[g]=[],this.c++);var h=Jc(b,c,e,f);-1f.keyCode||void 0!=f.returnValue)){a:{var g=!1;if(0==f.keyCode)try{f.keyCode=-1;break a}catch(m){g=!0}if(g||void 0==f.returnValue)f.returnValue=!0}f=[];for(g=d.g;g;g=g.parentNode)f.push(g);for(var g=b.type,h=f.length-1;!d.i&&0<=h;h--){d.g=f[h];var k=$c(f[h],g,!0,d),e=e&&k}for(h=0;!d.i&&h>>0);function Qc(b){if(ka(b))return b;b[bd]||(b[bd]=function(c){return b.handleEvent(c)});return b[bd]};function cd(){pc.call(this);this.zb=new Ic(this);this.Nd=this;this.eb=null}y(cd,pc);cd.prototype[Dc]=!0;l=cd.prototype;l.addEventListener=function(b,c,d,e){C(this,b,c,d,e)};l.removeEventListener=function(b,c,d,e){Yc(this,b,c,d,e)}; -l.o=function(b){var c,d=this.eb;if(d)for(c=[];d;d=d.eb)c.push(d);var d=this.Nd,e=b.type||b;if(ia(b))b=new vc(b,d);else if(b instanceof vc)b.target=b.target||d;else{var f=b;b=new vc(e,d);Xb(b,f)}var f=!0,g;if(c)for(var h=c.length-1;!b.i&&0<=h;h--)g=b.g=c[h],f=dd(g,e,!0,b)&&f;b.i||(g=b.g=d,f=dd(g,e,!0,b)&&f,b.i||(f=dd(g,e,!1,b)&&f));if(c)for(h=0;!b.i&&hd*c?d+c:d}function qd(b,c,d){return b+d*(c-b)};function rd(b,c){b[0]+=c[0];b[1]+=c[1];return b}function sd(b,c){var d=b[0],e=b[1],f=c[0],g=c[1],h=f[0],f=f[1],k=g[0],g=g[1],m=k-h,n=g-f,d=0===m&&0===n?0:(m*(d-h)+n*(e-f))/(m*m+n*n||0);0>=d||(1<=d?(h=k,f=g):(h+=d*m,f+=d*n));return[h,f]}function td(b,c){var d=pd(b+180,360)-180,e=Math.abs(Math.round(3600*d));return Math.floor(e/3600)+"\u00b0 "+Oa(Math.floor(e/60%60))+"\u2032 "+Oa(Math.floor(e%60))+"\u2033 "+c.charAt(0>d?1:0)} -function ud(b,c,d){return b?c.replace("{x}",b[0].toFixed(d)).replace("{y}",b[1].toFixed(d)):""}function vd(b,c){for(var d=!0,e=b.length-1;0<=e;--e)if(b[e]!=c[e]){d=!1;break}return d}function wd(b,c){var d=Math.cos(c),e=Math.sin(c),f=b[1]*d+b[0]*e;b[0]=b[0]*d-b[1]*e;b[1]=f;return b}function xd(b,c){var d=b[0]-c[0],e=b[1]-c[1];return d*d+e*e}function yd(b,c){return xd(b,sd(b,c))}function zd(b,c){return ud(b,"{x}, {y}",c)};function Ad(b){this.length=b.length||b;for(var c=0;ce&&(k=k|4);hf&&(k|=2);0===k&&(k=1);return k}function Od(){return[Infinity,Infinity,-Infinity,-Infinity]} -function Rd(b,c,d,e,f){return f?(f[0]=b,f[1]=c,f[2]=d,f[3]=e,f):[b,c,d,e]}function Zd(b,c){var d=b[0],e=b[1];return Rd(d,e,d,e,c)}function $d(b,c,d,e,f){f=Rd(Infinity,Infinity,-Infinity,-Infinity,f);return ae(f,b,c,d,e)}function be(b,c){return b[0]==c[0]&&b[2]==c[2]&&b[1]==c[1]&&b[3]==c[3]}function ce(b,c){c[0]b[2]&&(b[2]=c[2]);c[1]b[3]&&(b[3]=c[3]);return b} -function Pd(b,c){c[0]b[2]&&(b[2]=c[0]);c[1]b[3]&&(b[3]=c[1])}function ae(b,c,d,e,f){for(;dg;++g)h=f[g],k=e[g],f[g]=b[0]+h*c-k*d,e[g]=b[1]+h*d+k*c;return Qd(f,e,void 0)}function le(b){return b[3]-b[1]}function oe(b,c,d){d=d?d:Od();pe(b,c)&&(d[0]=b[0]>c[0]?b[0]:c[0],d[1]=b[1]>c[1]?b[1]:c[1],d[2]=b[2]=c[0]&&b[1]<=c[3]&&b[3]>=c[1]}function je(b){return b[2]b||0!==this.i&&b<=this.i)return this;var c=b.toString();if(this.j.hasOwnProperty(c))return this.j[c];var d=this.Kc(b);if(d.ja().lengthf&&(f=g);g=k;h=m}return f}function mf(b,c,d,e,f){var g,h;g=0;for(h=d.length;gk){for(;ct&&(n=p,t=v)}t>f&&(m[(n-c)/e]=1,r+eG&&EaG)&&(0>la&&Lla)||(z[h++]=v,z[h++]=O,B=v,A=O);v=K;O=I}}z[h++]=v;z[h++]=O}}k.push(h);c=p}return h};function wf(b,c){df.call(this);this.g=this.l=-1;this.ma(b,c)}y(wf,df);l=wf.prototype;l.clone=function(){var b=new wf(null);xf(b,this.b,this.v.slice());return b};l.mb=function(b,c,d,e){if(eg!=p>g&&f<(n-k)*(g-m)/(p-m)+k&&(h=!h);k=n;m=p}return h}function Af(b,c,d,e,f,g){if(0===d.length||!zf(b,c,d[0],e,f,g))return!1;var h;c=1;for(h=d.length;cq&&(n=(n+p)/2,Af(b,c,d,e,n,r)&&(x=n,q=z));n=p}isNaN(x)&&(x=f[g]);return h?(h.push(x,r),h):[x,r]};function Cf(b,c,d,e,f,g){for(var h=[b[c],b[c+1]],k=[],m;c+e=f[0]&&g[2]<=f[2]||g[1]>=f[1]&&g[3]<=f[3]?!0:Cf(b,c,d,e,function(b,c){var d=!1,e=Yd(f,b),g=Yd(f,c);if(1===e||1===g)d=!0;else{var q=f[0],r=f[1],t=f[2],x=f[3],z=c[0],B=c[1],A=(B-b[1])/(z-b[0]);g&2&&!(e&2)&&(d=z-(B-x)/A,d=d>=q&&d<=t);d||!(g&4)||e&4||(d=B-(z-t)*A,d=d>=r&&d<=x);d||!(g&8)||e&8||(d=z-(B-r)/A,d=d>=q&&d<=t);d||!(g&16)||e&16||(d=B-(z-q)*A,d=d>=r&&d<=x)}return d}):!1} -function Ef(b,c,d,e,f){var g=d[0];if(!(Df(b,c,g,e,f)||zf(b,c,g,e,f[0],f[1])||zf(b,c,g,e,f[0],f[3])||zf(b,c,g,e,f[2],f[1])||zf(b,c,g,e,f[2],f[3])))return!1;if(1===d.length)return!0;c=1;for(g=d.length;cb||this.g.length<=b)return null;var c=new wf(null);xf(c,this.b,this.v.slice(0===b?0:this.g[b-1],this.g[b]));return c};l.ae=function(){var b=this.b,c=this.v,d=this.g,e=[],f=0,g,h;g=0;for(h=d.length;gthis.i)}return void 0!==b?this.f+b:b}; -l.jf=function(b,c,d){b instanceof df||(b=Lf(b));var e=d||{};d=void 0!==e.padding?e.padding:[0,0,0,0];var f=void 0!==e.constrainResolution?e.constrainResolution:!0,g=void 0!==e.nearest?e.nearest:!1,h;void 0!==e.minResolution?h=e.minResolution:void 0!==e.maxZoom?h=this.constrainResolution(this.a,e.maxZoom-this.f,0):h=0;var k=b.ja(),m=this.Ea(),e=Math.cos(-m),m=Math.sin(-m),n=Infinity,p=Infinity,q=-Infinity,r=-Infinity;b=b.ra();for(var t=0,x=k.length;tb?Wf(2*b):1-Wf(2*(b-.5))};function Zf(b){var c=b.source,d=b.start?b.start:Date.now(),e=c[0],f=c[1],g=void 0!==b.duration?b.duration:1E3,h=b.easing?b.easing:Wf;return function(b,c){if(c.time>=1;return d.join("")}function fg(b){return dg(b[0],b[1],b[2])};function gg(b,c,d,e){this.a=b;this.f=c;this.c=d;this.b=e}gg.prototype.contains=function(b){return hg(this,b[1],b[2])};function hg(b,c,d){return b.a<=c&&c<=b.f&&b.c<=d&&d<=b.b}function ig(b,c){return b.a==c.a&&b.c==c.c&&b.f==c.f&&b.b==c.b}function jg(b){return b.b-b.c+1}function kg(b){return b.f-b.a+1}function lg(b,c){return b.a<=c.f&&b.f>=c.a&&b.c<=c.b&&b.b>=c.c};function mg(b){this.c=b.html;this.a=b.tileRanges?b.tileRanges:null}mg.prototype.b=function(){return this.c};function ng(b,c,d){vc.call(this,b,d);this.element=c}y(ng,vc);function og(b){id.call(this);this.a=b?b:[];pg(this)}y(og,id);l=og.prototype;l.clear=function(){for(;0");g=g.join("")}g=f.createElement(g);h&&(ia(h)?g.className=h:ga(h)?g.className=h.join(" "):Eg(g,h));2=this.left&&b.right<=this.right&&b.top>=this.top&&b.bottom<=this.bottom:b.x>=this.left&&b.x<=this.right&&b.y>=this.top&&b.y<=this.bottom:!1}; -l.ceil=function(){this.top=Math.ceil(this.top);this.right=Math.ceil(this.right);this.bottom=Math.ceil(this.bottom);this.left=Math.ceil(this.left);return this};l.floor=function(){this.top=Math.floor(this.top);this.right=Math.floor(this.right);this.bottom=Math.floor(this.bottom);this.left=Math.floor(this.left);return this};l.round=function(){this.top=Math.round(this.top);this.right=Math.round(this.right);this.bottom=Math.round(this.bottom);this.left=Math.round(this.left);return this}; -l.scale=function(b,c){var d=ja(c)?c:b;this.left*=b;this.right*=b;this.top*=d;this.bottom*=d;return this};function $g(b,c,d,e){this.left=b;this.top=c;this.width=d;this.height=e}l=$g.prototype;l.clone=function(){return new $g(this.left,this.top,this.width,this.height)};l.contains=function(b){return b instanceof $g?this.left<=b.left&&this.left+this.width>=b.left+b.width&&this.top<=b.top&&this.top+this.height>=b.top+b.height:b.x>=this.left&&b.x<=this.left+this.width&&b.y>=this.top&&b.y<=this.top+this.height}; -l.distance=function(b){var c=b.xb.g}function vh(b,c){for(var d,e;uh(b)&&!(d=b.a.zc,e=d.a[0].toString(),e in c&&c[e].contains(d.a));)b.pop().Ec()};function wh(b,c){cd.call(this);this.a=b;this.state=c}y(wh,cd);function xh(b){b.o("change")}wh.prototype.tb=function(){return w(this).toString()};wh.prototype.f=function(){return this.a};function yh(b){id.call(this);this.f=Fe(b.projection);this.j=void 0!==b.attributions?b.attributions:null;this.U=b.logo;this.A=void 0!==b.state?b.state:"ready";this.S=void 0!==b.wrapX?b.wrapX:!1}y(yh,id);l=yh.prototype;l.xe=wa;l.sa=function(){return this.j};l.qa=function(){return this.U};l.ta=function(){return this.f};l.ua=function(){return this.A};function zh(b){return b.S}l.na=function(b){this.j=b;this.s()};function Ah(b,c){b.A=c;b.s()};function Bh(b){this.minZoom=void 0!==b.minZoom?b.minZoom:0;this.a=b.resolutions;this.maxZoom=this.a.length-1;this.b=void 0!==b.origin?b.origin:null;this.g=null;void 0!==b.origins&&(this.g=b.origins);var c=b.extent;void 0===c||this.b||this.g||(this.b=he(c));this.j=null;void 0!==b.tileSizes&&(this.j=b.tileSizes);this.l=void 0!==b.tileSize?b.tileSize:this.j?null:256;this.u=void 0!==c?c:null;this.c=null;void 0!==b.sizes?this.c=b.sizes.map(function(b){return new gg(Math.min(0,b[0]),Math.max(b[0]-1,-1), -Math.min(0,b[1]),Math.max(b[1]-1,-1))},this):c&&Ch(this,c);this.f=[0,0]}var Dh=[0,0,0];function Eh(b,c,d,e,f){f=b.Aa(c,f);for(c=c[0]-1;c>=b.minZoom;){if(d.call(null,c,Fh(b,f,c,e)))return!0;--c}return!1}l=Bh.prototype;l.J=function(){return this.u};l.Cg=function(){return this.maxZoom};l.Dg=function(){return this.minZoom};l.Ca=function(b){return this.b?this.b:this.g[b]};l.$=function(b){return this.a[b]};l.wh=function(){return this.a}; -function Gh(b,c,d,e){return c[0]f||f>d.maxZoom)d=!1;else{var g=d.J();d=(d=g?Fh(d,g,f):d.c?d.c[f]:null)?hg(d,e,b):!0}return d?c:null}l.Xf=wa;function Sh(b,c){vc.call(this,b);this.tile=c}y(Sh,vc);function Th(b){b=b?b:{};this.D=Kg("UL");this.A=Kg("LI");this.D.appendChild(this.A);ih(this.A,!1);this.b=void 0!==b.collapsed?b.collapsed:!0;this.i=void 0!==b.collapsible?b.collapsible:!0;this.i||(this.b=!1);var c=b.className?b.className:"ol-attribution",d=b.tipLabel?b.tipLabel:"Attributions",e=b.collapseLabel?b.collapseLabel:"\u00bb";this.G=ia(e)?Hg("SPAN",{},e):e;e=b.label?b.label:"i";this.S=ia(e)?Hg("SPAN",{},e):e;d=Hg("BUTTON",{type:"button",title:d},this.i&&!this.b?this.G:this.S);C(d,"click", -this.Ll,!1,this);C(d,["mouseout",yc],function(){this.blur()},!1);c=Hg("DIV",c+" ol-unselectable ol-control"+(this.b&&this.i?" ol-collapsed":"")+(this.i?"":" ol-uncollapsible"),this.D,d);qh.call(this,{element:c,render:b.render?b.render:Uh,target:b.target});this.C=!0;this.l={};this.j={};this.T={}}y(Th,qh); -function Uh(b){if(b=b.frameState){var c,d,e,f,g,h,k,m,n,p,q,r=b.layerStatesArray,t=Ub(b.attributions),x={},z=b.viewState.projection;d=0;for(c=r.length;dla.f)if(lg(G,new gg(pd(K.a,Ea),pd(K.f,Ea),K.c,K.b))||kg(K)>Ea&&lg(G,la)){q=!0;break a}}q=!1}else q=!0}}else q=!1;q?(m in x&&delete x[m],t[m]=k):x[m]=k}c=[t,x];d=c[0];c=c[1];for(var L in this.l)L in d?(this.j[L]||(ih(this.l[L],!0),this.j[L]=!0),delete d[L]):L in c?(this.j[L]&&(ih(this.l[L],!1),delete this.j[L]),delete c[L]):(Og(this.l[L]),delete this.l[L],delete this.j[L]);for(L in d)e=Kg("LI"),e.innerHTML=d[L].c,this.D.appendChild(e),this.l[L]=e,this.j[L]=!0;for(L in c)e= -Kg("LI"),e.innerHTML=c[L].c,ih(e,!1),this.D.appendChild(e),this.l[L]=e;L=!Qb(this.j)||!Qb(b.logos);this.C!=L&&(ih(this.element,L),this.C=L);L&&Qb(this.j)?Wg(this.element,"ol-logo-only"):Xg(this.element,"ol-logo-only");var za;b=b.logos;L=this.T;for(za in L)za in b||(Og(L[za]),delete L[za]);for(var Ra in b)Ra in L||(za=new Image,za.src=Ra,d=b[Ra],""===d?d=za:(d=Hg("A",{href:d}),d.appendChild(za)),this.A.appendChild(d),L[Ra]=d);ih(this.A,!Qb(b))}else this.C&&(ih(this.element,!1),this.C=!1)}l=Th.prototype; -l.Ll=function(b){b.preventDefault();Vh(this)};function Vh(b){Yg(b.element,"ol-collapsed");b.b?Pg(b.G,b.S):Pg(b.S,b.G);b.b=!b.b}l.Kl=function(){return this.i};l.Nl=function(b){this.i!==b&&(this.i=b,Yg(this.element,"ol-uncollapsible"),!b&&this.b&&Vh(this))};l.Ml=function(b){this.i&&this.b!==b&&Vh(this)};l.Jl=function(){return this.b};function Wh(b){b=b?b:{};var c=b.className?b.className:"ol-rotate",d=b.label?b.label:"\u21e7";this.b=null;ia(d)?this.b=Hg("SPAN","ol-compass",d):(this.b=d,Wg(this.b,"ol-compass"));d=Hg("BUTTON",{"class":c+"-reset",type:"button",title:b.tipLabel?b.tipLabel:"Reset rotation"},this.b);C(d,"click",Wh.prototype.A,!1,this);c=Hg("DIV",c+" ol-unselectable ol-control",d);qh.call(this,{element:c,render:b.render?b.render:Xh,target:b.target});this.i=b.duration?b.duration:250;this.j=void 0!==b.autoHide?b.autoHide: -!0;this.l=void 0;this.j&&Wg(this.element,"ol-hidden")}y(Wh,qh);Wh.prototype.A=function(b){b.preventDefault();b=this.a;var c=b.aa();if(c){var d=c.Ea();void 0!==d&&(0Math.PI&&(d-=2*Math.PI),b.Ma(ag({rotation:d,duration:this.i,easing:Vf}))),c.te(0))}}; -function Xh(b){if(b=b.frameState){b=b.viewState.rotation;if(b!=this.l){var c="rotate("+b+"rad)";if(this.j){var d=this.element;0===b?Wg(d,"ol-hidden"):Xg(d,"ol-hidden")}this.b.style.msTransform=c;this.b.style.webkitTransform=c;this.b.style.transform=c}this.l=b}};function Yh(b){b=b?b:{};var c=b.className?b.className:"ol-zoom",d=b.delta?b.delta:1,e=b.zoomOutLabel?b.zoomOutLabel:"\u2212",f=b.zoomOutTipLabel?b.zoomOutTipLabel:"Zoom out",g=Hg("BUTTON",{"class":c+"-in",type:"button",title:b.zoomInTipLabel?b.zoomInTipLabel:"Zoom in"},b.zoomInLabel?b.zoomInLabel:"+");C(g,"click",sa(Yh.prototype.j,d),!1,this);e=Hg("BUTTON",{"class":c+"-out",type:"button",title:f},e);C(e,"click",sa(Yh.prototype.j,-d),!1,this);c=Hg("DIV",c+" ol-unselectable ol-control",g,e);qh.call(this, -{element:c,target:b.target});this.b=void 0!==b.duration?b.duration:250}y(Yh,qh);Yh.prototype.j=function(b,c){c.preventDefault();var d=this.a,e=d.aa();if(e){var f=e.$();f&&(02*this.b&&si(this),!0):!1};function si(b){if(b.b!=b.a.length){for(var c=0,d=0;c=b||96<=b&&106>=b||65<=b&&90>=b||(bc||$b)&&0==b)return!0;switch(b){case 32:case 43:case 63:case 64:case 107:case 109:case 110:case 111:case 186:case 59:case 189:case 187:case 61:case 188:case 190:case 191:case 192:case 222:case 219:case 220:case 221:return!0;default:return!1}}function yi(b){if(ac)b=zi(b);else if(cc&&bc)a:switch(b){case 93:b=91;break a}return b} -function zi(b){switch(b){case 61:return 187;case 59:return 186;case 173:return 189;case 224:return 91;case 0:return 224;default:return b}};function Ai(b,c){cd.call(this);b&&Bi(this,b,c)}y(Ai,cd);l=Ai.prototype;l.ud=null;l.le=null;l.qf=null;l.me=null;l.ib=-1;l.Zb=-1;l.bf=!1; -var Ci={3:13,12:144,63232:38,63233:40,63234:37,63235:39,63236:112,63237:113,63238:114,63239:115,63240:116,63241:117,63242:118,63243:119,63244:120,63245:121,63246:122,63247:123,63248:44,63272:46,63273:36,63275:35,63276:33,63277:34,63289:144,63302:45},Di={Up:38,Down:40,Left:37,Right:39,Enter:13,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,"U+007F":46,Home:36,End:35,PageUp:33,PageDown:34,Insert:45},Ei=Zb||$b||bc&&jc("525"),Fi=cc&∾ -Ai.prototype.a=function(b){if(bc||$b)if(17==this.ib&&!b.B||18==this.ib&&!b.c||cc&&91==this.ib&&!b.A)this.Zb=this.ib=-1;-1==this.ib&&(b.B&&17!=b.j?this.ib=17:b.c&&18!=b.j?this.ib=18:b.A&&91!=b.j&&(this.ib=91));Ei&&!wi(b.j,this.ib,b.f,b.B,b.c)?this.handleEvent(b):(this.Zb=yi(b.j),Fi&&(this.bf=b.c))};Ai.prototype.c=function(b){this.Zb=this.ib=-1;this.bf=b.c}; -Ai.prototype.handleEvent=function(b){var c=b.a,d,e,f=c.altKey;Zb&&"keypress"==b.type?(d=this.Zb,e=13!=d&&27!=d?c.keyCode:0):(bc||$b)&&"keypress"==b.type?(d=this.Zb,e=0<=c.charCode&&63232>c.charCode&&xi(d)?c.charCode:0):Yb&&!bc?(d=this.Zb,e=xi(d)?c.keyCode:0):(d=c.keyCode||this.Zb,e=c.charCode||0,Fi&&(f=this.bf),cc&&63==e&&224==d&&(d=191));var g=d=yi(d),h=c.keyIdentifier;d?63232<=d&&d in Ci?g=Ci[d]:25==d&&b.f&&(g=9):h&&h in Di&&(g=Di[h]);this.ib=g;b=new Gi(g,e,0,c);b.c=f;this.o(b)}; -function Bi(b,c,d){b.me&&Hi(b);b.ud=c;b.le=C(b.ud,"keypress",b,d);b.qf=C(b.ud,"keydown",b.a,d,b);b.me=C(b.ud,"keyup",b.c,d,b)}function Hi(b){b.le&&(Zc(b.le),Zc(b.qf),Zc(b.me),b.le=null,b.qf=null,b.me=null);b.ud=null;b.ib=-1;b.Zb=-1}Ai.prototype.X=function(){Ai.da.X.call(this);Hi(this)};function Gi(b,c,d,e){Ac.call(this,e);this.type="key";this.j=b;this.u=c}y(Gi,Ac);function Ii(b,c){cd.call(this);var d=this.a=b;(d=ma(d)&&1==d.nodeType?this.a:this.a?this.a.body:null)&&bh(d,"direction");this.c=C(this.a,ac?"DOMMouseScroll":"mousewheel",this,c)}y(Ii,cd); -Ii.prototype.handleEvent=function(b){var c=0,d=0;b=b.a;if("mousewheel"==b.type){c=1;if(Zb||bc&&(dc||jc("532.0")))c=40;d=Ji(-b.wheelDelta,c);c=ca(b.wheelDeltaX)?Ji(-b.wheelDeltaY,c):d}else d=b.detail,100d&&(d=-3),ca(b.axis)&&b.axis===b.HORIZONTAL_AXIS||(c=d);ja(this.b)&&(c=Math.min(Math.max(c,-this.b),this.b));d=new Ki(d,b,0,c);this.o(d)};function Ji(b,c){return bc&&(cc||ec)&&0!=b%c?b:b/c}Ii.prototype.X=function(){Ii.da.X.call(this);Zc(this.c);this.c=null}; -function Ki(b,c,d,e){Ac.call(this,c);this.type="mousewheel";this.detail=b;this.C=e}y(Ki,Ac);function Li(b,c,d){vc.call(this,b);this.a=c;b=d?d:{};this.buttons=Mi(b);this.pressure=Ni(b,this.buttons);this.bubbles="bubbles"in b?b.bubbles:!1;this.cancelable="cancelable"in b?b.cancelable:!1;this.view="view"in b?b.view:null;this.detail="detail"in b?b.detail:null;this.screenX="screenX"in b?b.screenX:0;this.screenY="screenY"in b?b.screenY:0;this.clientX="clientX"in b?b.clientX:0;this.clientY="clientY"in b?b.clientY:0;this.button="button"in b?b.button:0;this.relatedTarget="relatedTarget"in b?b.relatedTarget: -null;this.pointerId="pointerId"in b?b.pointerId:0;this.width="width"in b?b.width:0;this.height="height"in b?b.height:0;this.pointerType="pointerType"in b?b.pointerType:"";this.isPrimary="isPrimary"in b?b.isPrimary:!1;c.preventDefault&&(this.preventDefault=function(){c.preventDefault()})}y(Li,vc);function Mi(b){if(b.buttons||Oi)b=b.buttons;else switch(b.which){case 1:b=1;break;case 2:b=4;break;case 3:b=2;break;default:b=0}return b} -function Ni(b,c){var d=0;b.pressure?d=b.pressure:d=c?.5:0;return d}var Oi=!1;try{Oi=1===(new MouseEvent("click",{buttons:1})).buttons}catch(b){};function Pi(b,c){var d=Kg("CANVAS");b&&(d.width=b);c&&(d.height=c);return d.getContext("2d")} -var Qi=function(){var b;return function(){if(void 0===b)if(ba.getComputedStyle){var c=Kg("P"),d,e={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.appendChild(c);for(var f in e)f in c.style&&(c.style[f]="translate(1px,1px)",d=ba.getComputedStyle(c).getPropertyValue(e[f]));Og(c);b=d&&"none"!==d}else b=!1;return b}}(),Ri=function(){var b;return function(){if(void 0===b)if(ba.getComputedStyle){var c= -Kg("P"),d,e={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.appendChild(c);for(var f in e)f in c.style&&(c.style[f]="translate3d(1px,1px,1px)",d=ba.getComputedStyle(c).getPropertyValue(e[f]));Og(c);b=d&&"none"!==d}else b=!1;return b}}();function Si(b,c){var d=b.style;d.WebkitTransform=c;d.MozTransform=c;d.a=c;d.msTransform=c;d.transform=c;Zb&&jc("9.0")&&(b.style.transformOrigin="0 0")} -function Ti(b,c){var d;if(Ri()){var e=Array(16);for(d=0;16>d;++d)e[d]=c[d].toFixed(6);Si(b,"matrix3d("+e.join(",")+")")}else if(Qi()){var e=[c[0],c[1],c[4],c[5],c[12],c[13]],f=Array(6);for(d=0;6>d;++d)f[d]=e[d].toFixed(6);Si(b,"matrix("+f.join(",")+")")}else b.style.left=Math.round(c[12])+"px",b.style.top=Math.round(c[13])+"px"};var Ui=["experimental-webgl","webgl","webkit-3d","moz-webgl"];function Vi(b,c){var d,e,f=Ui.length;for(e=0;e=Math.abs(e-k[0])&&25>=m)return!0}return!1}function lj(b){var c=mj(b,b.a),d=c.preventDefault;c.preventDefault=function(){b.preventDefault();d()};c.pointerId=1;c.isPrimary=!0;c.pointerType="mouse";return c}l=jj.prototype; -l.el=function(b){if(!kj(this,b)){(1).toString()in this.c&&this.cancel(b);var c=lj(b);this.c[(1).toString()]=b;nj(this.a,oj,c,b)}};l.fl=function(b){if(!kj(this,b)){var c=lj(b);nj(this.a,pj,c,b)}};l.il=function(b){if(!kj(this,b)){var c=this.c[(1).toString()];c&&c.button===b.button&&(c=lj(b),nj(this.a,qj,c,b),delete this.c[(1).toString()])}};l.hl=function(b){if(!kj(this,b)){var c=lj(b);rj(this.a,c,b)}};l.gl=function(b){if(!kj(this,b)){var c=lj(b);sj(this.a,c,b)}}; -l.cancel=function(b){var c=lj(b);this.a.cancel(c,b);delete this.c[(1).toString()]};function tj(b){ij.call(this,b,{MSPointerDown:this.nl,MSPointerMove:this.ol,MSPointerUp:this.rl,MSPointerOut:this.pl,MSPointerOver:this.ql,MSPointerCancel:this.ml,MSGotPointerCapture:this.kl,MSLostPointerCapture:this.ll});this.c=b.c;this.b=["","unavailable","touch","pen","mouse"]}y(tj,ij);function uj(b,c){var d=c;ja(c.a.pointerType)&&(d=mj(c,c.a),d.pointerType=b.b[c.a.pointerType]);return d}l=tj.prototype;l.nl=function(b){this.c[b.a.pointerId.toString()]=b;var c=uj(this,b);nj(this.a,oj,c,b)}; -l.ol=function(b){var c=uj(this,b);nj(this.a,pj,c,b)};l.rl=function(b){var c=uj(this,b);nj(this.a,qj,c,b);delete this.c[b.a.pointerId.toString()]};l.pl=function(b){var c=uj(this,b);sj(this.a,c,b)};l.ql=function(b){var c=uj(this,b);rj(this.a,c,b)};l.ml=function(b){var c=uj(this,b);this.a.cancel(c,b);delete this.c[b.a.pointerId.toString()]};l.ll=function(b){this.a.o(new Li("lostpointercapture",b,b.a))};l.kl=function(b){this.a.o(new Li("gotpointercapture",b,b.a))};function vj(b){ij.call(this,b,{pointerdown:this.Vn,pointermove:this.Wn,pointerup:this.Zn,pointerout:this.Xn,pointerover:this.Yn,pointercancel:this.Un,gotpointercapture:this.rk,lostpointercapture:this.dl})}y(vj,ij);l=vj.prototype;l.Vn=function(b){wj(this.a,b)};l.Wn=function(b){wj(this.a,b)};l.Zn=function(b){wj(this.a,b)};l.Xn=function(b){wj(this.a,b)};l.Yn=function(b){wj(this.a,b)};l.Un=function(b){wj(this.a,b)};l.dl=function(b){wj(this.a,b)};l.rk=function(b){wj(this.a,b)};function xj(b,c){ij.call(this,b,{touchstart:this.ap,touchmove:this.$o,touchend:this.Zo,touchcancel:this.Yo});this.c=b.c;this.i=c;this.b=void 0;this.j=0;this.f=void 0}y(xj,ij);l=xj.prototype;l.Ph=function(){this.j=0;this.f=void 0}; -function yj(b,c,d){c=mj(c,d);c.pointerId=d.identifier+2;c.bubbles=!0;c.cancelable=!0;c.detail=b.j;c.button=0;c.buttons=1;c.width=d.webkitRadiusX||d.radiusX||0;c.height=d.webkitRadiusY||d.radiusY||0;c.pressure=d.webkitForce||d.force||.5;c.isPrimary=b.b===d.identifier;c.pointerType="touch";c.clientX=d.clientX;c.clientY=d.clientY;c.screenX=d.screenX;c.screenY=d.screenY;return c} -function zj(b,c,d){function e(){c.preventDefault()}var f=Array.prototype.slice.call(c.a.changedTouches),g=f.length,h,k;for(h=0;h=c.length){var f=[],g,h,k;for(g=0;g=b.minResolution&&cb.f&&(b.f=e.f),e.cb.b&&(b.b=e.b)):b[c][d]=e:(b[c]={},b[c][d]=e)}function sk(b,c,d){return[c*(Math.round(b[0]/c)+d[0]%2/2),c*(Math.round(b[1]/c)+d[1]%2/2)]} -function tk(b,c,d,e,f,g,h,k,m,n){var p=w(c).toString();p in b.wantedTiles||(b.wantedTiles[p]={});var q=b.wantedTiles[p];b=b.tileQueue;var r=d.minZoom,t,x,z,B,A,v;for(v=h;v>=r;--v)for(x=Fh(d,g,v,x),z=d.$(v),B=x.a;B<=x.f;++B)for(A=x.c;A<=x.b;++A)h-v<=k?(t=c.Ob(v,B,A,e,f),0==t.state&&(q[fg(t.a)]=!0,t.tb()in b.b||uk(b,[t,p,Jh(d,t.a),z])),void 0!==m&&m.call(n,t)):c.Xf(v,B,A,f)};function vk(b){this.A=b.opacity;this.D=b.rotateWithView;this.u=b.rotation;this.i=b.scale;this.G=b.snapToPixel}l=vk.prototype;l.Ae=function(){return this.A};l.ce=function(){return this.D};l.Be=function(){return this.u};l.Ce=function(){return this.i};l.de=function(){return this.G};l.De=function(b){this.A=b};l.Ee=function(b){this.u=b};l.Fe=function(b){this.i=b};function wk(b){b=b||{};this.g=void 0!==b.anchor?b.anchor:[.5,.5];this.f=null;this.c=void 0!==b.anchorOrigin?b.anchorOrigin:"top-left";this.l=void 0!==b.anchorXUnits?b.anchorXUnits:"fraction";this.B=void 0!==b.anchorYUnits?b.anchorYUnits:"fraction";var c=void 0!==b.crossOrigin?b.crossOrigin:null,d=void 0!==b.img?b.img:null,e=void 0!==b.imgSize?b.imgSize:null,f=b.src;void 0!==f&&0!==f.length||!d||(f=d.src);var g=void 0!==b.src?0:2,h=xk.Yb(),k=h.get(f,c);k||(k=new yk(d,f,e,c,g),h.set(f,c,k));this.a= -k;this.ia=void 0!==b.offset?b.offset:[0,0];this.b=void 0!==b.offsetOrigin?b.offsetOrigin:"top-left";this.j=null;this.C=void 0!==b.size?b.size:null;vk.call(this,{opacity:void 0!==b.opacity?b.opacity:1,rotation:void 0!==b.rotation?b.rotation:0,scale:void 0!==b.scale?b.scale:1,snapToPixel:void 0!==b.snapToPixel?b.snapToPixel:!0,rotateWithView:void 0!==b.rotateWithView?b.rotateWithView:!1})}y(wk,vk);l=wk.prototype; -l.Xb=function(){if(this.f)return this.f;var b=this.g,c=this.Bb();if("fraction"==this.l||"fraction"==this.B){if(!c)return null;b=this.g.slice();"fraction"==this.l&&(b[0]*=c[0]);"fraction"==this.B&&(b[1]*=c[1])}if("top-left"!=this.c){if(!c)return null;b===this.g&&(b=this.g.slice());if("top-right"==this.c||"bottom-right"==this.c)b[0]=-b[0]+c[0];if("bottom-left"==this.c||"bottom-right"==this.c)b[1]=-b[1]+c[1]}return this.f=b};l.fc=function(){return this.a.a};l.qd=function(){return this.a.b};l.Bd=function(){return this.a.c}; -l.ze=function(){var b=this.a;if(!b.g)if(b.l){var c=b.b[0],d=b.b[1],e=Pi(c,d);e.fillRect(0,0,c,d);b.g=e.canvas}else b.g=b.a;return b.g};l.Ca=function(){if(this.j)return this.j;var b=this.ia;if("top-left"!=this.b){var c=this.Bb(),d=this.a.b;if(!c||!d)return null;b=b.slice();if("top-right"==this.b||"bottom-right"==this.b)b[0]=d[0]-c[0]-b[0];if("bottom-left"==this.b||"bottom-right"==this.b)b[1]=d[1]-c[1]-b[1]}return this.j=b};l.fn=function(){return this.a.j};l.Bb=function(){return this.C?this.C:this.a.b}; -l.sf=function(b,c){return C(this.a,"change",b,!1,c)};l.load=function(){this.a.load()};l.Wf=function(b,c){Yc(this.a,"change",b,!1,c)};function yk(b,c,d,e,f){cd.call(this);this.g=null;this.a=b?b:new Image;null!==e&&(this.a.crossOrigin=e);this.f=null;this.c=f;this.b=d;this.j=c;this.l=!1;2==this.c&&zk(this)}y(yk,cd);function zk(b){var c=Pi(1,1);try{c.drawImage(b.a,0,0),c.getImageData(0,0,1,1)}catch(d){b.l=!0}}yk.prototype.i=function(){this.c=3;this.f.forEach(Zc);this.f=null;this.o("change")}; -yk.prototype.B=function(){this.c=2;this.b=[this.a.width,this.a.height];this.f.forEach(Zc);this.f=null;zk(this);this.o("change")};yk.prototype.load=function(){if(0==this.c){this.c=1;this.f=[Xc(this.a,"error",this.i,!1,this),Xc(this.a,"load",this.B,!1,this)];try{this.a.src=this.j}catch(b){this.i()}}};function xk(){this.a={};this.c=0}ea(xk);xk.prototype.clear=function(){this.a={};this.c=0};xk.prototype.get=function(b,c){var d=c+":"+b;return d in this.a?this.a[d]:null}; -xk.prototype.set=function(b,c,d){this.a[c+":"+b]=d;++this.c};function Ak(b,c){pc.call(this);this.j=c;this.f={};this.u={}}y(Ak,pc);function Bk(b){var c=b.viewState,d=b.coordinateToPixelMatrix;ik(d,b.size[0]/2,b.size[1]/2,1/c.resolution,-1/c.resolution,-c.rotation,-c.center[0],-c.center[1]);Jd(d,b.pixelToCoordinateMatrix)}l=Ak.prototype;l.X=function(){Ib(this.f,uc);Ak.da.X.call(this)}; -function Ck(){var b=xk.Yb();if(32q[2])m=[t+r*Math.ceil((q[0]-t)/r),b[1]]}q=c.layerStatesArray;for(r=q.length-1;0<=r;--r){var t=q[r],x=t.layer;if(!t.rb||fk(t,n)&&f.call(g,x)){var z=Dk(this,x);x.fa()&&(k=z.Za(zh(x.fa())?m:b,c,t.rb?d:h,e));if(k)return k}}}; -l.jh=function(b,c,d,e,f,g){var h,k=c.viewState.resolution,m=c.layerStatesArray,n;for(n=m.length-1;0<=n;--n){h=m[n];var p=h.layer;if(fk(h,k)&&f.call(g,p)&&(h=Dk(this,p).sc(b,c,d,e)))return h}};l.kh=function(b,c,d,e){return void 0!==this.Af(b,c,ue,this,d,e)};function Dk(b,c){var d=w(c).toString();if(d in b.f)return b.f[d];var e=b.gf(c);b.f[d]=e;b.u[d]=C(e,"change",b.Dk,!1,b);return e}l.Dk=function(){this.j.render()};l.Me=wa; -l.Do=function(b,c){for(var d in this.f)if(!(c&&d in c.layerStates)){var e=d,f=this.f[e];delete this.f[e];Zc(this.u[e]);delete this.u[e];uc(f)}};function Ek(b,c){for(var d in b.f)if(!(d in c.layerStates)){c.postRenderFunctions.push(ra(b.Do,b));break}}function rb(b,c){return b.zIndex-c.zIndex};function Fk(b,c){this.i=b;this.g=c;this.a=[];this.c=[];this.b={}}Fk.prototype.clear=function(){this.a.length=0;this.c.length=0;Rb(this.b)};function Gk(b){var c=b.a,d=b.c,e=c[0];1==c.length?(c.length=0,d.length=0):(c[0]=c.pop(),d[0]=d.pop(),Hk(b,0));c=b.g(e);delete b.b[c];return e}function uk(b,c){var d=b.i(c);Infinity!=d&&(b.a.push(c),b.c.push(d),b.b[b.g(c)]=!0,Ik(b,0,b.a.length-1))}Fk.prototype.nc=function(){return this.a.length};Fk.prototype.Ka=function(){return 0===this.a.length}; -function Hk(b,c){for(var d=b.a,e=b.c,f=d.length,g=d[c],h=e[c],k=c;c>1;){var m=2*c+1,n=2*c+2,m=nc;){var h=d-1>>1;if(b[h]>g)e[d]=e[h],b[d]=b[h],d=h;else break}e[d]=f;b[d]=g}function Jk(b){var c=b.i,d=b.a,e=b.c,f=0,g=d.length,h,k,m;for(k=0;k>1)-1;0<=c;c--)Hk(b,c)};function Kk(b,c){Fk.call(this,function(c){return b.apply(null,c)},function(b){return b[0].tb()});this.l=c;this.f=0}y(Kk,Fk);Kk.prototype.j=function(b){b=b.target;var c=b.state;if(2===c||3===c||4===c)Yc(b,"change",this.j,!1,this),--this.f,this.l()};function Lk(b,c,d){for(var e=0,f;b.fd.a.length)d=!1;else{var e=Date.now()-d.j,f=d.a.length-3;if(d.a[f+2]e;)g-=3;var e=d.a[f+2]-d.a[g+2],h=d.a[f]-d.a[g],f=d.a[f+1]-d.a[g+1];d.g=Math.atan2(f,h);d.c=Math.sqrt(h*h+f*f)/e;d=d.c>d.b}}d&&(d=this.a,d=(d.b-d.c)/d.f,f=this.a.g,g=c.Ta(),this.i=Nk(this.a,g),b.Ma(this.i),g=b.Oa(g),d=b.Fa([g[0]-d*Math.cos(f),g[1]-d*Math.sin(f)]),d=c.Wd(d),c.jb(d));Tf(c,-1);b.render(); -return!1}this.f=null;return!0}function el(b){if(0this.D&&(this.a=!0));this.i=d;b=b.map;d=fh(b.a);e=cl(this.j);e[0]-=d.x;e[1]-=d.y;this.f=b.Fa(e);this.a&&(d=b.aa(),e=d.Ea(),b.render(),Pk(b,d,e+c,this.f))}function El(b){if(2>this.j.length){b=b.map;var c=b.aa();Tf(c,-1);if(this.a){var d=c.Ea(),e=this.f,f=this.A,d=c.constrainRotation(d,0);Pk(b,c,d,e,f)}return!1}return!0} -function Cl(b){return 2<=this.j.length?(b=b.map,this.f=null,this.i=void 0,this.a=!1,this.l=0,this.C||Tf(b.aa(),1),b.render(),!0):!1}Bl.prototype.xc=te;function Fl(b){al.call(this,{handleDownEvent:Gl,handleDragEvent:Hl,handleUpEvent:Il});b=b?b:{};this.f=null;this.l=void 0!==b.duration?b.duration:400;this.a=void 0;this.i=1}y(Fl,al);function Hl(b){var c=1,d=this.j[0],e=this.j[1],f=d.clientX-e.clientX,d=d.clientY-e.clientY,f=Math.sqrt(f*f+d*d);void 0!==this.a&&(c=this.a/f);this.a=f;1!=c&&(this.i=c);b=b.map;var f=b.aa(),d=f.$(),e=fh(b.a),g=cl(this.j);g[0]-=e.x;g[1]-=e.y;this.f=b.Fa(g);b.render();Rk(b,f,d*c,this.f)} -function Il(b){if(2>this.j.length){b=b.map;var c=b.aa();Tf(c,-1);var d=c.$(),e=this.f,f=this.l,d=c.constrainResolution(d,0,this.i-1);Rk(b,c,d,e,f);return!1}return!0}function Gl(b){return 2<=this.j.length?(b=b.map,this.f=null,this.a=void 0,this.i=1,this.C||Tf(b.aa(),1),b.render(),!0):!1}Fl.prototype.xc=te;function Jl(b){b=b?b:{};var c=new og,d=new Mk(-.005,.05,100);(void 0!==b.altShiftDragRotate?b.altShiftDragRotate:1)&&c.push(new hl);(void 0!==b.doubleClickZoom?b.doubleClickZoom:1)&&c.push(new Sk({delta:b.zoomDelta,duration:b.zoomDuration}));(void 0!==b.dragPan?b.dragPan:1)&&c.push(new dl({kinetic:d}));(void 0!==b.pinchRotate?b.pinchRotate:1)&&c.push(new Bl);(void 0!==b.pinchZoom?b.pinchZoom:1)&&c.push(new Fl({duration:b.zoomDuration}));if(void 0!==b.keyboard?b.keyboard:1)c.push(new vl),c.push(new xl({delta:b.zoomDelta, -duration:b.zoomDuration}));(void 0!==b.mouseWheelZoom?b.mouseWheelZoom:1)&&c.push(new zl({duration:b.zoomDuration}));(void 0!==b.shiftDragZoom?b.shiftDragZoom:1)&&c.push(new ul({duration:b.zoomDuration}));return c};function Kl(b){var c=b||{};b=Ub(c);delete b.layers;c=c.layers;ak.call(this,b);this.b=[];this.a={};C(this,kd("layers"),this.Fk,!1,this);c?ga(c)&&(c=new og(c.slice())):c=new og;this.gh(c)}y(Kl,ak);l=Kl.prototype;l.he=function(){this.qb()&&this.s()}; -l.Fk=function(){this.b.forEach(Zc);this.b.length=0;var b=this.Pc();this.b.push(C(b,"add",this.Ek,!1,this),C(b,"remove",this.Gk,!1,this));Ib(this.a,function(b){b.forEach(Zc)});Rb(this.a);var b=b.a,c,d,e;c=0;for(d=b.length;cf;++f)e[f]=c.charCodeAt(d++)|c.charCodeAt(d++)<<8|c.charCodeAt(d++)<<16|c.charCodeAt(d++)<<24;else for(f=0;16>f;++f)e[f]=c[d++]|c[d++]<<8|c[d++]<<16|c[d++]<<24;c=b.a[0];d=b.a[1];var f=b.a[2],g=b.a[3],h=0,h=c+(g^d&(f^g))+e[0]+3614090360&4294967295;c=d+(h<<7&4294967295|h>>>25);h=g+(f^c&(d^f))+e[1]+3905402710&4294967295;g=c+(h<<12&4294967295|h>>>20);h=f+(d^g&(c^d))+e[2]+606105819&4294967295;f=g+(h<<17&4294967295|h>>>15);h=d+(c^f&(g^ -c))+e[3]+3250441966&4294967295;d=f+(h<<22&4294967295|h>>>10);h=c+(g^d&(f^g))+e[4]+4118548399&4294967295;c=d+(h<<7&4294967295|h>>>25);h=g+(f^c&(d^f))+e[5]+1200080426&4294967295;g=c+(h<<12&4294967295|h>>>20);h=f+(d^g&(c^d))+e[6]+2821735955&4294967295;f=g+(h<<17&4294967295|h>>>15);h=d+(c^f&(g^c))+e[7]+4249261313&4294967295;d=f+(h<<22&4294967295|h>>>10);h=c+(g^d&(f^g))+e[8]+1770035416&4294967295;c=d+(h<<7&4294967295|h>>>25);h=g+(f^c&(d^f))+e[9]+2336552879&4294967295;g=c+(h<<12&4294967295|h>>>20);h=f+ -(d^g&(c^d))+e[10]+4294925233&4294967295;f=g+(h<<17&4294967295|h>>>15);h=d+(c^f&(g^c))+e[11]+2304563134&4294967295;d=f+(h<<22&4294967295|h>>>10);h=c+(g^d&(f^g))+e[12]+1804603682&4294967295;c=d+(h<<7&4294967295|h>>>25);h=g+(f^c&(d^f))+e[13]+4254626195&4294967295;g=c+(h<<12&4294967295|h>>>20);h=f+(d^g&(c^d))+e[14]+2792965006&4294967295;f=g+(h<<17&4294967295|h>>>15);h=d+(c^f&(g^c))+e[15]+1236535329&4294967295;d=f+(h<<22&4294967295|h>>>10);h=c+(f^g&(d^f))+e[1]+4129170786&4294967295;c=d+(h<<5&4294967295| -h>>>27);h=g+(d^f&(c^d))+e[6]+3225465664&4294967295;g=c+(h<<9&4294967295|h>>>23);h=f+(c^d&(g^c))+e[11]+643717713&4294967295;f=g+(h<<14&4294967295|h>>>18);h=d+(g^c&(f^g))+e[0]+3921069994&4294967295;d=f+(h<<20&4294967295|h>>>12);h=c+(f^g&(d^f))+e[5]+3593408605&4294967295;c=d+(h<<5&4294967295|h>>>27);h=g+(d^f&(c^d))+e[10]+38016083&4294967295;g=c+(h<<9&4294967295|h>>>23);h=f+(c^d&(g^c))+e[15]+3634488961&4294967295;f=g+(h<<14&4294967295|h>>>18);h=d+(g^c&(f^g))+e[4]+3889429448&4294967295;d=f+(h<<20&4294967295| -h>>>12);h=c+(f^g&(d^f))+e[9]+568446438&4294967295;c=d+(h<<5&4294967295|h>>>27);h=g+(d^f&(c^d))+e[14]+3275163606&4294967295;g=c+(h<<9&4294967295|h>>>23);h=f+(c^d&(g^c))+e[3]+4107603335&4294967295;f=g+(h<<14&4294967295|h>>>18);h=d+(g^c&(f^g))+e[8]+1163531501&4294967295;d=f+(h<<20&4294967295|h>>>12);h=c+(f^g&(d^f))+e[13]+2850285829&4294967295;c=d+(h<<5&4294967295|h>>>27);h=g+(d^f&(c^d))+e[2]+4243563512&4294967295;g=c+(h<<9&4294967295|h>>>23);h=f+(c^d&(g^c))+e[7]+1735328473&4294967295;f=g+(h<<14&4294967295| -h>>>18);h=d+(g^c&(f^g))+e[12]+2368359562&4294967295;d=f+(h<<20&4294967295|h>>>12);h=c+(d^f^g)+e[5]+4294588738&4294967295;c=d+(h<<4&4294967295|h>>>28);h=g+(c^d^f)+e[8]+2272392833&4294967295;g=c+(h<<11&4294967295|h>>>21);h=f+(g^c^d)+e[11]+1839030562&4294967295;f=g+(h<<16&4294967295|h>>>16);h=d+(f^g^c)+e[14]+4259657740&4294967295;d=f+(h<<23&4294967295|h>>>9);h=c+(d^f^g)+e[1]+2763975236&4294967295;c=d+(h<<4&4294967295|h>>>28);h=g+(c^d^f)+e[4]+1272893353&4294967295;g=c+(h<<11&4294967295|h>>>21);h=f+(g^ -c^d)+e[7]+4139469664&4294967295;f=g+(h<<16&4294967295|h>>>16);h=d+(f^g^c)+e[10]+3200236656&4294967295;d=f+(h<<23&4294967295|h>>>9);h=c+(d^f^g)+e[13]+681279174&4294967295;c=d+(h<<4&4294967295|h>>>28);h=g+(c^d^f)+e[0]+3936430074&4294967295;g=c+(h<<11&4294967295|h>>>21);h=f+(g^c^d)+e[3]+3572445317&4294967295;f=g+(h<<16&4294967295|h>>>16);h=d+(f^g^c)+e[6]+76029189&4294967295;d=f+(h<<23&4294967295|h>>>9);h=c+(d^f^g)+e[9]+3654602809&4294967295;c=d+(h<<4&4294967295|h>>>28);h=g+(c^d^f)+e[12]+3873151461&4294967295; -g=c+(h<<11&4294967295|h>>>21);h=f+(g^c^d)+e[15]+530742520&4294967295;f=g+(h<<16&4294967295|h>>>16);h=d+(f^g^c)+e[2]+3299628645&4294967295;d=f+(h<<23&4294967295|h>>>9);h=c+(f^(d|~g))+e[0]+4096336452&4294967295;c=d+(h<<6&4294967295|h>>>26);h=g+(d^(c|~f))+e[7]+1126891415&4294967295;g=c+(h<<10&4294967295|h>>>22);h=f+(c^(g|~d))+e[14]+2878612391&4294967295;f=g+(h<<15&4294967295|h>>>17);h=d+(g^(f|~c))+e[5]+4237533241&4294967295;d=f+(h<<21&4294967295|h>>>11);h=c+(f^(d|~g))+e[12]+1700485571&4294967295;c=d+ -(h<<6&4294967295|h>>>26);h=g+(d^(c|~f))+e[3]+2399980690&4294967295;g=c+(h<<10&4294967295|h>>>22);h=f+(c^(g|~d))+e[10]+4293915773&4294967295;f=g+(h<<15&4294967295|h>>>17);h=d+(g^(f|~c))+e[1]+2240044497&4294967295;d=f+(h<<21&4294967295|h>>>11);h=c+(f^(d|~g))+e[8]+1873313359&4294967295;c=d+(h<<6&4294967295|h>>>26);h=g+(d^(c|~f))+e[15]+4264355552&4294967295;g=c+(h<<10&4294967295|h>>>22);h=f+(c^(g|~d))+e[6]+2734768916&4294967295;f=g+(h<<15&4294967295|h>>>17);h=d+(g^(f|~c))+e[13]+1309151649&4294967295; -d=f+(h<<21&4294967295|h>>>11);h=c+(f^(d|~g))+e[4]+4149444226&4294967295;c=d+(h<<6&4294967295|h>>>26);h=g+(d^(c|~f))+e[11]+3174756917&4294967295;g=c+(h<<10&4294967295|h>>>22);h=f+(c^(g|~d))+e[2]+718787259&4294967295;f=g+(h<<15&4294967295|h>>>17);h=d+(g^(f|~c))+e[9]+3951481745&4294967295;b.a[0]=b.a[0]+c&4294967295;b.a[1]=b.a[1]+(f+(h<<21&4294967295|h>>>11))&4294967295;b.a[2]=b.a[2]+f&4294967295;b.a[3]=b.a[3]+g&4294967295} -function $l(b,c){var d;ca(d)||(d=c.length);for(var e=d-b.c,f=b.g,g=b.b,h=0;hc.b?c.c:2*c.c)-c.b);b[0]=128;for(var d=1;dd;++d)for(var f=0;32>f;f+=8)b[e++]=c.a[d]>>> -f&255;if(8192>=b.length)c=String.fromCharCode.apply(null,b);else for(c="",d=0;dthis.g&&(this.g=this.b.lineWidth,this.f=null)}; -function Nm(b,c,d){Dm.call(this,b,c,d);this.b={pg:void 0,hd:void 0,cd:void 0,dd:null,ed:void 0,fd:void 0,gd:void 0,fillStyle:void 0,strokeStyle:void 0,lineCap:void 0,lineDash:null,lineJoin:void 0,lineWidth:void 0,miterLimit:void 0}}y(Nm,Dm); -function Om(b,c,d,e,f){var g=b.b,h=[1];b.c.push(h);b.a.push(h);var k,h=0;for(k=e.length;hthis.g&&(this.g=d.lineWidth,this.f=null)):(d.strokeStyle=void 0,d.lineCap=void 0,d.lineDash=null,d.lineJoin=void 0,d.lineWidth=void 0,d.miterLimit=void 0)}; -function Pm(b){var c=b.b,d=c.fillStyle,e=c.strokeStyle,f=c.lineCap,g=c.lineDash,h=c.lineJoin,k=c.lineWidth,m=c.miterLimit;void 0!==d&&c.pg!=d&&(b.c.push([9,d]),c.pg=c.fillStyle);void 0===e||c.hd==e&&c.cd==f&&c.dd==g&&c.ed==h&&c.fd==k&&c.gd==m||(b.c.push([10,e,k,f,h,m,g]),c.hd=e,c.cd=f,c.dd=g,c.ed=h,c.fd=k,c.gd=m)}function Qm(b,c,d){Dm.call(this,b,c,d);this.ia=this.G=this.D=null;this.l="";this.C=this.A=this.u=this.B=0;this.i=this.j=this.b=null}y(Qm,Dm); -Qm.prototype.Hb=function(b,c,d,e,f,g){if(""!==this.l&&this.i&&(this.b||this.j)){if(this.b){f=this.b;var h=this.D;if(!h||h.fillStyle!=f.fillStyle){var k=[9,f.fillStyle];this.c.push(k);this.a.push(k);h?h.fillStyle=f.fillStyle:this.D={fillStyle:f.fillStyle}}}this.j&&(f=this.j,h=this.G,h&&h.lineCap==f.lineCap&&h.lineDash==f.lineDash&&h.lineJoin==f.lineJoin&&h.lineWidth==f.lineWidth&&h.miterLimit==f.miterLimit&&h.strokeStyle==f.strokeStyle||(k=[10,f.strokeStyle,f.lineWidth,f.lineCap,f.lineJoin,f.miterLimit, -f.lineDash,!1],this.c.push(k),this.a.push(k),h?(h.lineCap=f.lineCap,h.lineDash=f.lineDash,h.lineJoin=f.lineJoin,h.lineWidth=f.lineWidth,h.miterLimit=f.miterLimit,h.strokeStyle=f.strokeStyle):this.G={lineCap:f.lineCap,lineDash:f.lineDash,lineJoin:f.lineJoin,lineWidth:f.lineWidth,miterLimit:f.miterLimit,strokeStyle:f.strokeStyle}));f=this.i;h=this.ia;h&&h.font==f.font&&h.textAlign==f.textAlign&&h.textBaseline==f.textBaseline||(k=[11,f.font,f.textAlign,f.textBaseline],this.c.push(k),this.a.push(k),h? -(h.font=f.font,h.textAlign=f.textAlign,h.textBaseline=f.textBaseline):this.ia={font:f.font,textAlign:f.textAlign,textBaseline:f.textBaseline});Fm(this,g);f=this.coordinates.length;b=Em(this,b,c,d,e,!1);b=[5,f,b,this.l,this.B,this.u,this.A,this.C,!!this.b,!!this.j];this.c.push(b);this.a.push(b);Im(this,g)}}; -Qm.prototype.ab=function(b){if(b){var c=b.a;c?(c=c.a,c=vg(c?c:Tl),this.b?this.b.fillStyle=c:this.b={fillStyle:c}):this.b=null;var d=b.l;if(d){var c=d.a,e=d.f,f=d.b,g=d.g,h=d.c,d=d.j,e=void 0!==e?e:"round",f=f?f.slice():Ul,g=void 0!==g?g:"round",h=void 0!==h?h:1,d=void 0!==d?d:10,c=vg(c?c:Vl);if(this.j){var k=this.j;k.lineCap=e;k.lineDash=f;k.lineJoin=g;k.lineWidth=h;k.miterLimit=d;k.strokeStyle=c}else this.j={lineCap:e,lineDash:f,lineJoin:g,lineWidth:h,miterLimit:d,strokeStyle:c}}else this.j=null; -var m=b.f,c=b.g,e=b.j,f=b.i,h=b.c,d=b.b,g=b.B,k=b.u;b=void 0!==m?m:"10px sans-serif";g=void 0!==g?g:"center";k=void 0!==k?k:"middle";this.i?(m=this.i,m.font=b,m.textAlign=g,m.textBaseline=k):this.i={font:b,textAlign:g,textBaseline:k};this.l=void 0!==d?d:"";this.B=void 0!==c?c:0;this.u=void 0!==e?e:0;this.A=void 0!==f?f:0;this.C=void 0!==h?h:1}else this.l=""};function Rm(b,c,d,e){this.u=b;this.g=c;this.B=d;this.j=e;this.c={};this.i=Pi(1,1);this.l=Dd()} -function Sm(b){for(var c in b.c){var d=b.c[c],e;for(e in d)d[e].ve()}}Rm.prototype.f=function(b,c,d,e,f){var g=this.l;ik(g,.5,.5,1/c,-1/c,-d,-b[0],-b[1]);var h=this.i;h.clearRect(0,0,1,1);var k;void 0!==this.j&&(k=Od(),Pd(k,b),Sd(k,c*this.j,k));return Tm(this,h,g,d,e,function(b){if(0za&&(za=Ka,n=Ra)}if(0===za){h=null;break a}za=h[n];h[n]=h[m];h[m]=za;for(n=m+1;nthis.a/2){var c=[[b.source[0][0],b.source[0][1]],[b.source[1][0],b.source[1][1]],[b.source[2][0],b.source[2][1]]];c[0][0]-p>this.a/2&&(c[0][0]-=this.a);c[1][0]-p>this.a/2&&(c[1][0]-=this.a);c[2][0]-p>this.a/2&&(c[2][0]-=this.a);Math.max(c[0][0],c[1][0],c[2][0])-Math.min(c[0][0],c[1][0],c[2][0])q,t=!1;if(0b.u),t)){Math.abs(c[0]-e[0])<=Math.abs(c[1]-e[1])?(r=[(d[0]+e[0])/2,(d[1]+e[1])/2],p=b.c(r),q=[(f[0]+c[0])/2,(f[1]+c[1])/2],t=b.c(q),fn(b,c,d,r,q,g,h,p,t,n-1),fn(b,q,r,e,f,t,p,k,m,n-1)):(r=[(c[0]+d[0])/2,(c[1]+d[1])/2],p=b.c(r),q=[(e[0]+f[0])/2,(e[1]+f[1])/2],t=b.c(q),fn(b,c,r,q,f,g,p,t,m,n-1),fn(b,r,d,e,q,p,h,k,t,n-1));return}if(r){if(!b.B)return;b.l=!0}b.f.push({source:[g,k,m],target:[c,e,f]});b.f.push({source:[g,h,k],target:[c,d,e]})}} -function gn(b){var c=Od();b.f.forEach(function(b){b=b.source;Pd(c,b[0]);Pd(c,b[1]);Pd(c,b[2])});return c};function hn(b,c,d,e,f,g){this.C=c;this.A=b.J();var h=c.J(),k=h?oe(d,h):d,h=bn(b,c,me(k),e);this.B=new en(b,c,k,this.A,.5*h);this.i=e;this.g=d;b=gn(this.B);this.u=(this.c=g(b,h,f))?this.c.b:1;this.f=this.l=null;f=2;g=[];this.c&&(f=0,g=this.c.j);gk.call(this,d,e,this.u,f,g)}y(hn,gk);hn.prototype.X=function(){1==this.state&&(Zc(this.f),this.f=null);hn.da.X.call(this)};hn.prototype.a=function(){return this.l}; -function jn(b){var c=b.c.state;2==c&&(b.l=dn(ke(b.g)/b.i,le(b.g)/b.i,b.u,b.c.$(),0,b.i,b.g,b.B,[{extent:b.c.J(),image:b.c.a()}]));b.state=c;hk(b)}hn.prototype.load=function(){if(0==this.state){this.state=1;hk(this);var b=this.c.state;2==b||3==b?jn(this):(this.f=this.c.Qa("change",function(){var b=this.c.state;if(2==b||3==b)Zc(this.f),this.f=null,jn(this)},!1,this),this.c.load())}};function kn(b){yh.call(this,{attributions:b.attributions,extent:b.extent,logo:b.logo,projection:b.projection,state:b.state});this.G=void 0!==b.resolutions?b.resolutions:null;this.a=null;this.va=0}y(kn,yh);function ln(b,c){if(b.G){var d=wb(b.G,c,0);c=b.G[d]}return c} -kn.prototype.C=function(b,c,d,e){var f=this.f;if(f&&e&&!Xe(f,e)){if(this.a){if(this.va==this.c&&Xe(this.a.C,e)&&this.a.$()==c&&this.a.b==d&&be(this.a.J(),b))return this.a;this.a.Ec();this.a=null}this.a=new hn(f,e,b,c,d,ra(function(b,c,d){return this.pd(b,c,d,f)},this));this.va=this.c;return this.a}f&&(e=f);return this.pd(b,c,d,e)};kn.prototype.D=function(b){b=b.target;switch(b.state){case 1:this.o(new mn(nn,b));break;case 2:this.o(new mn(on,b));break;case 3:this.o(new mn(pn,b))}}; -function qn(b,c){b.a().src=c}function mn(b,c){vc.call(this,b);this.image=c}y(mn,vc);var nn="imageloadstart",on="imageloadend",pn="imageloaderror";function rn(b){kn.call(this,{attributions:b.attributions,logo:b.logo,projection:b.projection,resolutions:b.resolutions,state:void 0!==b.state?b.state:void 0});this.ga=b.canvasFunction;this.Z=null;this.ea=0;this.pa=void 0!==b.ratio?b.ratio:1.5}y(rn,kn);rn.prototype.pd=function(b,c,d,e){c=ln(this,c);var f=this.Z;if(f&&this.ea==this.c&&f.$()==c&&f.b==d&&Xd(f.J(),b))return f;b=b.slice();qe(b,this.pa);(e=this.ga(b,c,d,[ke(b)/c*d,le(b)/c*d],e))&&(f=new $m(b,c,d,this.j,e));this.Z=f;this.ea=this.c;return f};function sn(b){id.call(this);this.wa=void 0;this.a="geometry";this.f=null;this.g=void 0;this.b=null;C(this,kd(this.a),this.ge,!1,this);void 0!==b&&(b instanceof bf||!b?this.La(b):this.I(b))}y(sn,id);l=sn.prototype;l.clone=function(){var b=new sn(this.P());b.vc(this.a);var c=this.W();c&&b.La(c.clone());(c=this.f)&&b.vf(c);return b};l.W=function(){return this.get(this.a)};l.Na=function(){return this.wa};l.Mj=function(){return this.a};l.vl=function(){return this.f};l.Qb=function(){return this.g}; -l.wl=function(){this.s()};l.ge=function(){this.b&&(Zc(this.b),this.b=null);var b=this.W();b&&(this.b=C(b,"change",this.wl,!1,this));this.s()};l.La=function(b){this.set(this.a,b)};l.vf=function(b){this.g=(this.f=b)?tn(b):void 0;this.s()};l.ic=function(b){this.wa=b;this.s()};l.vc=function(b){Yc(this,kd(this.a),this.ge,!1,this);this.a=b;C(this,kd(this.a),this.ge,!1,this);this.ge()};function tn(b){if(!ka(b)){var c;c=ga(b)?b:[b];b=function(){return c}}return b};function un(b){b.prototype.then=b.prototype.then;b.prototype.$goog_Thenable=!0}function vn(b){if(!b)return!1;try{return!!b.$goog_Thenable}catch(c){return!1}};function wn(b,c,d){this.f=d;this.b=b;this.g=c;this.c=0;this.a=null}wn.prototype.get=function(){var b;0d?b[1]="?":d==c.length-1&&(b[1]=void 0)}return b.join("")}function mo(b,c,d){if(ga(c))for(var e=0;e=b[0]&&c[3]>=b[1]}function q(b,c,d,e,f){for(var g=[c,d],h;g.length;)d=g.pop(),c=g.pop(),d-c<=e||(h=c+Math.ceil((d-c)/e/2)*e,r(b,c,d,h,f),g.push(c,h,h,d))}function r(b,c,d,e,f){for(var g,h,k,m,n;d>c;){600h-g/2?-1:1),k=Math.max(c,Math.floor(e-h*m/g+n)),h=Math.min(d,Math.floor(e+(g-h)*m/g+n)),r(b,k,h,e,f));g=b[e];h=c;m=d;t(b,c,e);for(0f(b[h],g);)h++;for(;0this.af)this.fj(e,c),c--;else break;this.Ui(d,e,c)},fj:function(b,c){var e=b[c],f=e.children.length,g=this.gg;this.Vi(e,g,f);f=this.Wi(e,g,f);f={children:e.children.splice(f,e.children.length-f),height:e.height};e.Pa&&(f.Pa=!0);d(e,this.cb);d(f,this.cb);c?b[c-1].children.push(f):this.ig(e, -f)},ig:function(b,c){this.data={children:[b,c],height:b.height+1};d(this.data,this.cb)},Wi:function(b,c,d){var f,g,h,m,n,p,q;n=p=Infinity;for(f=c;f<=d-c;f++)g=e(b,0,f,this.cb),h=e(b,f,d,this.cb),m=Math.max(0,Math.min(g[2],h[2])-Math.max(g[0],h[0]))*Math.max(0,Math.min(g[3],h[3])-Math.max(g[1],h[1])),g=k(g)+k(h),m=c;p--)q=b.children[p],f(k,b.Pa?g(q):q.bbox),n+=m(k);return n},Ui:function(b,c,d){for(;0<=d;d--)f(c[d].bbox,b)},Yi:function(b){for(var c=b.length-1,e;0<=c;c--)0===b[c].children.length?0B||this.b[1]> -A)?(v.width=B,v.height=A,this.b=[B,A],this.B=!Bm(this.b),this.f=null):(B=this.b[0],A=this.b[1],(v=n!=this.C)||(v=this.f,v=!(v.a<=z.a&&z.f<=v.f&&v.c<=z.c&&z.b<=v.b)),v&&(this.f=null))):(O=Pi(B,A),this.j=O.canvas,this.b=[B,A],this.i=O,this.B=!Bm(this.b));var K,I;this.f?(A=this.f,B=kg(A)):(B/=p[0],A/=p[1],K=z.a-Math.floor((B-kg(z))/2),I=z.c-Math.floor((A-jg(z))/2),this.C=n,this.G=p[0],this.D=p[1],this.f=new gg(K,K+B-1,I,I+A-1),this.l=Array(B*A),A=this.f);v={};v[n]={};var G=[],la=this.bd(h,f,v),Ea=g.b(), -L=Od(),za=new gg(0,0,0,0),Ra,Ka,kb;for(I=z.a;I<=z.f;++I)for(kb=z.c;kb<=z.b;++kb)Ka=h.Ob(n,I,kb,d,f),K=Ka.state,2==K||4==K||3==K&&!Ea?v[n][fg(Ka.a)]=Ka:(Ra=Eh(k,Ka.a,la,za,L),Ra||(G.push(Ka),(Ra=Gh(k,Ka.a,za,L))&&la(n+1,Ra)));la=0;for(Ra=G.length;lam[2];)++n,p=k*n,p=zm(this,b,p),q.b(r,f,p,h,g),c-=k;p=zm(this,b,0)}r!=d&&(ym(this,"render",r,b,p),d.drawImage(r.canvas,0,0));r.globalAlpha=t}ym(this,"postcompose",d,b,p)};Sp.prototype.Za=function(b,c,d,e){if(this.b){var f=c.viewState.resolution,g=c.viewState.rotation,h=this.a,k=c.layerStates[w(h)],m={};return this.b.f(b,f,g,k.rb?c.skippedFeatureUids:{},function(b){var c=w(b).toString();if(!(c in m))return m[c]=!0,d.call(e,b,h)})}};Sp.prototype.A=function(){mk(this)}; -Sp.prototype.zd=function(b){function c(b){var c,e=b.Qb();e?c=e.call(b,n):(e=d.b)&&(c=e(b,n));if(c){if(c){var f,g=!1,e=0;for(f=c.length;eG&&Ng(this.target,z.target,0)}else{if(!b.viewHints[0]&&!b.viewHints[1]){O=Fh(z.g,r,z.b[0],A);G=[];v=I=void 0;for(v in z.c)I=z.c[v],O.contains(I.a)||G.push(I);Ea= -O=void 0;O=0;for(Ea=G.length;O=n;){x=b.b[g];d=b.u[g]; -e=w(d).toString();if(void 0===k[e]&&d.W()&&(void 0===p||pe(p,d.W().J()))&&(q.clear(q.COLOR_BUFFER_BIT|q.DEPTH_BUFFER_BIT),q.drawElements(4,t-x,f,x*c),t=m(d))){b=t;break a}t=x;g--}b=void 0}else q.clear(q.COLOR_BUFFER_BIT|q.DEPTH_BUFFER_BIT),Jq(b,q,c,k,b.i,b.j),b=(b=m(null))?b:void 0;x=b}q.disableVertexAttribArray(r.f);q.disableVertexAttribArray(r.a);q.disableVertexAttribArray(r.g);q.disableVertexAttribArray(r.c);q.disableVertexAttribArray(r.b);return x} -function Jq(b,c,d,e,f,g){var h=d.b?5125:5123;d=d.b?4:2;if(Qb(e)){var k;b=0;e=f.length;for(k=0;bc[0]||c[0]>f[0]||0> -c[1]||c[1]>f[1])&&(this.i||(this.i=Pi(1,1)),this.i.clearRect(0,0,1,1),this.i.drawImage(this.f.a(),c[0],c[1],1,1,0,0,1,1),0e?c[0]=e-d:0>f&&(c[0]= -Math.abs(f)+d),0>g?c[1]=g-d:0>h&&(c[1]=Math.abs(h)+d),0===c[0]&&0===c[1])||(d=b.aa().Ta(),e=b.Oa(d),c=[e[0]+c[0],e[1]+c[1]],this.g&&(this.g.source=d,b.Ma(Zf(this.g))),b.aa().jb(b.Fa(c)))}}};l.Pk=function(){nr(this)};l.Uh=function(b){this.set("element",b)};l.setMap=function(b){this.set("map",b)};l.Zh=function(b){this.set("offset",b)};l.xf=function(b){this.set("position",b)}; -function or(b,c){var d=Cg(b),e=new yg(0,0),f;f=d?Cg(d):document;f=!Zb||9<=lc||Sg(Ag(f))?f.documentElement:f.body;b!=f&&(f=eh(b),d=Tg(Ag(d)),e.x=f.left+d.x,e.y=f.top+d.y);return[e.x,e.y,e.x+c[0],e.y+c[1]]}l.bi=function(b){this.set("positioning",b)};function pr(b,c){b.a.visible!==c&&(ih(b.b,c),b.a.visible=c)} -function nr(b){var c=b.se(),d=b.Yg();if(void 0!==c&&c.b&&void 0!==d){var d=c.Oa(d),e=c.Ra(),c=b.b.style,f=b.Eg(),g=b.Fg(),h=f[0],f=f[1];if("bottom-right"==g||"center-right"==g||"top-right"==g)""!==b.a.oe&&(b.a.oe=c.left=""),h=Math.round(e[0]-d[0]-h)+"px",b.a.Ne!=h&&(b.a.Ne=c.right=h);else{""!==b.a.Ne&&(b.a.Ne=c.right="");if("bottom-center"==g||"center-center"==g||"top-center"==g)h-=gh(b.b).width/2;h=Math.round(d[0]+h)+"px";b.a.oe!=h&&(b.a.oe=c.left=h)}if("bottom-left"==g||"bottom-center"==g||"bottom-right"== -g)""!==b.a.Oe&&(b.a.Oe=c.top=""),d=Math.round(e[1]-d[1]-f)+"px",b.a.Td!=d&&(b.a.Td=c.bottom=d);else{""!==b.a.Td&&(b.a.Td=c.bottom="");if("center-left"==g||"center-center"==g||"center-right"==g)f-=gh(b.b).height/2;d=Math.round(d[1]+f)+"px";b.a.Oe!=d&&(b.a.Oe=c.top=d)}pr(b,!0)}else pr(b,!1)};function qr(b){b=b?b:{};this.j=void 0!==b.collapsed?b.collapsed:!0;this.i=void 0!==b.collapsible?b.collapsible:!0;this.i||(this.j=!1);var c=b.className?b.className:"ol-overviewmap",d=b.tipLabel?b.tipLabel:"Overview map",e=b.collapseLabel?b.collapseLabel:"\u00ab";this.A=ia(e)?Hg("SPAN",{},e):e;e=b.label?b.label:"\u00bb";this.C=ia(e)?Hg("SPAN",{},e):e;d=Hg("BUTTON",{type:"button",title:d},this.i&&!this.j?this.A:this.C);C(d,"click",this.Rl,!1,this);var e=Hg("DIV","ol-overviewmap-map"),f=this.b=new S({controls:new og, -interactions:new og,target:e,view:b.view});b.layers&&b.layers.forEach(function(b){f.jg(b)},this);var g=Hg("DIV","ol-overviewmap-box");this.l=new mr({position:[0,0],positioning:"bottom-left",element:g});this.b.kg(this.l);c=Hg("DIV",c+" ol-unselectable ol-control"+(this.j&&this.i?" ol-collapsed":"")+(this.i?"":" ol-uncollapsible"),e,d);qh.call(this,{element:c,render:b.render?b.render:rr,target:b.target})}y(qr,qh);l=qr.prototype; -l.setMap=function(b){var c=this.a;b!==c&&(c&&(c=c.aa())&&Yc(c,kd("rotation"),this.ie,!1,this),qr.da.setMap.call(this,b),b&&(this.u.push(C(b,"propertychange",this.Ik,!1,this)),0===this.b.Xg().$b()&&this.b.Xh(b.oc()),b=b.aa()))&&(C(b,kd("rotation"),this.ie,!1,this),Sf(b)&&(this.b.Uc(),sr(this)))};l.Ik=function(b){"view"===b.key&&((b=b.oldValue)&&Yc(b,kd("rotation"),this.ie,!1,this),b=this.a.aa(),C(b,kd("rotation"),this.ie,!1,this))};l.ie=function(){this.b.aa().te(this.a.aa().Ea())}; -function rr(){var b=this.a,c=this.b;if(b.b&&c.b){var d=b.Ra(),b=b.aa().Zc(d),e=c.Ra(),d=c.aa().Zc(e),f=c.Oa(he(b)),c=c.Oa(fe(b)),c=new zg(Math.abs(f[0]-c[0]),Math.abs(f[1]-c[1])),f=e[0],e=e[1];c.width<.1*f||c.height<.1*e||c.width>.75*f||c.height>.75*e?sr(this):Xd(d,b)||(b=this.b,d=this.a.aa(),b.aa().jb(d.Ta()))}tr(this)}function sr(b){var c=b.a;b=b.b;var d=c.Ra(),c=c.aa().Zc(d),d=b.Ra();b=b.aa();qe(c,1/(.1*Math.pow(2,Math.log(7.5)/Math.LN2/2)));b.jf(c,d)} -function tr(b){var c=b.a,d=b.b;if(c.b&&d.b){var e=c.Ra(),f=c.aa(),g=d.aa();d.Ra();var c=f.Ea(),h=b.l,d=b.l.re(),f=f.Zc(e),e=g.$(),g=ee(f),f=ge(f),k;if(b=b.a.aa().Ta())k=[g[0]-b[0],g[1]-b[1]],wd(k,c),rd(k,b);h.xf(k);d&&(k=new zg(Math.abs((g[0]-f[0])/e),Math.abs((f[1]-g[1])/e)),c=Sg(Ag(Cg(d))),!Zb||jc("10")||c&&jc("8")?(d=d.style,ac?d.MozBoxSizing="border-box":bc?d.WebkitBoxSizing="border-box":d.boxSizing="border-box",d.width=Math.max(k.width,0)+"px",d.height=Math.max(k.height,0)+"px"):(b=d.style,c? -(c=lh(d,"padding"),d=oh(d),b.pixelWidth=k.width-d.left-c.left-c.right-d.right,b.pixelHeight=k.height-d.top-c.top-c.bottom-d.bottom):(b.pixelWidth=k.width,b.pixelHeight=k.height)))}}l.Rl=function(b){b.preventDefault();ur(this)};function ur(b){Yg(b.element,"ol-collapsed");b.j?Pg(b.A,b.C):Pg(b.C,b.A);b.j=!b.j;var c=b.b;b.j||c.b||(c.Uc(),sr(b),Xc(c,"postrender",function(){tr(this)},!1,b))}l.Ql=function(){return this.i}; -l.Tl=function(b){this.i!==b&&(this.i=b,Yg(this.element,"ol-uncollapsible"),!b&&this.j&&ur(this))};l.Sl=function(b){this.i&&this.j!==b&&ur(this)};l.Pl=function(){return this.j};l.ak=function(){return this.b};function vr(b){b=b?b:{};var c=b.className?b.className:"ol-scale-line";this.l=Hg("DIV",c+"-inner");this.i=Hg("DIV",c+" ol-unselectable",this.l);this.C=null;this.A=void 0!==b.minWidth?b.minWidth:64;this.b=!1;this.S=void 0;this.D="";this.j=null;qh.call(this,{element:this.i,render:b.render?b.render:wr,target:b.target});C(this,kd("units"),this.Z,!1,this);this.T(b.units||"metric")}y(vr,qh);var xr=[1,2,5];vr.prototype.G=function(){return this.get("units")}; -function wr(b){(b=b.frameState)?this.C=b.viewState:this.C=null;yr(this)}vr.prototype.Z=function(){yr(this)};vr.prototype.T=function(b){this.set("units",b)}; -function yr(b){var c=b.C;if(c){var d=c.center,e=c.projection,c=e.getPointResolution(c.resolution,d),f=e.c,g=b.G();"degrees"!=f||"metric"!=g&&"imperial"!=g&&"us"!=g&&"nautical"!=g?"degrees"!=f&&"degrees"==g?(b.j||(b.j=Je(e,Fe("EPSG:4326"))),d=Math.cos(Wa(b.j(d)[1])),e=Be.radius,e/=Ce[f],c*=180/(Math.PI*d*e)):b.j=null:(b.j=null,d=Math.cos(Wa(d[1])),c*=Math.PI*d*Be.radius/180);d=b.A*c;f="";"degrees"==g?d<1/60?(f="\u2033",c*=3600):1>d?(f="\u2032",c*=60):f="\u00b0":"imperial"==g?.9144>d?(f="in",c/=.0254): -1609.344>d?(f="ft",c/=.3048):(f="mi",c/=1609.344):"nautical"==g?(c/=1852,f="nm"):"metric"==g?1>d?(f="mm",c*=1E3):1E3>d?f="m":(f="km",c/=1E3):"us"==g&&(.9144>d?(f="in",c*=39.37):1609.344>d?(f="ft",c/=.30480061):(f="mi",c/=1609.3472));for(d=3*Math.floor(Math.log(b.A*c)/Math.log(10));;){e=xr[d%3]*Math.pow(10,Math.floor(d/3));g=Math.round(e/c);if(isNaN(g)){ih(b.i,!1);b.b=!1;return}if(g>=b.A)break;++d}c=e+" "+f;b.D!=c&&(b.l.innerHTML=c,b.D=c);b.S!=g&&(b.l.style.width=g+"px",b.S=g);b.b||(ih(b.i,!0),b.b= -!0)}else b.b&&(ih(b.i,!1),b.b=!1)};function zr(b){pc.call(this);this.c=b;this.a={}}y(zr,pc);var Ar=[];zr.prototype.Qa=function(b,c,d,e){ga(c)||(c&&(Ar[0]=c.toString()),c=Ar);for(var f=0;fd.height?(this.i=1,d=new $g(0,0,e,0)):(this.i=Kr,d=new $g(0,0,0,c));this.b.a=d||new $g(NaN,NaN,NaN,NaN);this.C=!0}b=b.frameState.viewState.resolution;b!==this.j&&(this.j=b,b=1-Qf(this.a.aa())(b),d=this.b,c=Qg(this.element),1==this.i?ch(c,d.a.left+d.a.width*b):ch(c,d.a.left, -d.a.top+d.a.height*b))}}l.sk=function(b){var c=this.a,d=c.aa(),e=d.$();c.Ma(bg({resolution:e,duration:this.A,easing:Vf}));b=Mr(this,Nr(this,b.offsetX-this.l[0]/2,b.offsetY-this.l[1]/2));d.Ub(d.constrainResolution(b))};l.vk=function(){Tf(this.a.aa(),1)};l.tk=function(b){this.j=Mr(this,Nr(this,b.left,b.top));this.a.aa().Ub(this.j)};l.uk=function(){var b=this.a,c=b.aa();Tf(c,-1);b.Ma(bg({resolution:this.j,duration:this.A,easing:Vf}));b=c.constrainResolution(this.j);c.Ub(b)}; -function Nr(b,c,d){var e=b.b.a;return Sa(1===b.i?(c-e.left)/e.width:(d-e.top)/e.height,0,1)}function Mr(b,c){return Pf(b.a.aa())(1-c)};function Or(b){b=b?b:{};this.b=b.extent?b.extent:null;var c=b.className?b.className:"ol-zoom-extent",d=Hg("BUTTON",{type:"button",title:b.tipLabel?b.tipLabel:"Fit to extent"},b.label?b.label:"E");C(d,"click",this.j,!1,this);c=Hg("DIV",c+" ol-unselectable ol-control",d);qh.call(this,{element:c,target:b.target})}y(Or,qh);Or.prototype.j=function(b){b.preventDefault();var c=this.a;b=c.aa();var d=this.b?this.b:b.g.J(),c=c.Ra();b.jf(d,c)};function Pr(b){id.call(this);b=b?b:{};this.a=null;C(this,kd("tracking"),this.ul,!1,this);this.uf(void 0!==b.tracking?b.tracking:!1)}y(Pr,id);l=Pr.prototype;l.X=function(){this.uf(!1);Pr.da.X.call(this)}; -l.On=function(b){b=b.a;if(null!==b.alpha){var c=Wa(b.alpha);this.set("alpha",c);"boolean"==typeof b.absolute&&b.absolute?this.set("heading",c):ja(b.webkitCompassHeading)&&-1!=b.webkitCompassAccuracy&&this.set("heading",Wa(b.webkitCompassHeading))}null!==b.beta&&this.set("beta",Wa(b.beta));null!==b.gamma&&this.set("gamma",Wa(b.gamma));this.s()};l.Bj=function(){return this.get("alpha")};l.Ej=function(){return this.get("beta")};l.Kj=function(){return this.get("gamma")};l.tl=function(){return this.get("heading")}; -l.Tg=function(){return this.get("tracking")};l.ul=function(){if($i){var b=this.Tg();b&&!this.a?this.a=C(ba,"deviceorientation",this.On,!1,this):!b&&this.a&&(Zc(this.a),this.a=null)}};l.uf=function(b){this.set("tracking",b)};function Qr(){this.defaultDataProjection=null}function Rr(b,c,d){var e;d&&(e={dataProjection:d.dataProjection?d.dataProjection:b.Ia(c),featureProjection:d.featureProjection});return Sr(b,e)}function Sr(b,c){var d;c&&(d={featureProjection:c.featureProjection,dataProjection:c.dataProjection?c.dataProjection:b.defaultDataProjection,rightHanded:c.rightHanded});return d} -function Tr(b,c,d){var e=d?Fe(d.featureProjection):null;d=d?Fe(d.dataProjection):null;return e&&d&&!Xe(e,d)?b instanceof bf?(c?b.clone():b).kb(c?e:d,c?d:e):af(c?b.slice():b,c?e:d,c?d:e):b};function Ur(){this.defaultDataProjection=null}y(Ur,Qr);function Vr(b){return ma(b)?b:ia(b)?(b=ao(b))?b:null:null}l=Ur.prototype;l.V=function(){return"json"};l.Tb=function(b,c){return this.Rc(Vr(b),Rr(this,b,c))};l.Ba=function(b,c){return this.Jf(Vr(b),Rr(this,b,c))};l.Sc=function(b,c){return this.Dh(Vr(b),Rr(this,b,c))};l.Ia=function(b){return this.Kh(Vr(b))};l.Jd=function(b,c){return bo(this.Vc(b,c))};l.Vb=function(b,c){return bo(this.Re(b,c))};l.Wc=function(b,c){return bo(this.Te(b,c))};function Wr(b,c,d,e,f){var g=NaN,h=NaN,k=(d-c)/e;if(0!==k)if(1==k)g=b[c],h=b[c+1];else if(2==k)g=.5*b[c]+.5*b[c+e],h=.5*b[c+1]+.5*b[c+e+1];else{var h=b[c],k=b[c+1],m=0,g=[0],n;for(n=c+e;n>1,p=h(d,g[n]),0r?(d=(d-g[-r-2])/(g[-r-1]-g[-r-2]),c+=(-r-2)*e,g=qd(b[c],b[c+e],d),h=qd(b[c+1],b[c+e+1],d)):(g=b[c+r*e],h=b[c+r*e+1])}return f?(f[0]= -g,f[1]=h,f):[g,h]}function Xr(b,c,d,e,f,g){if(d==c)return null;if(f>1,fb||this.g.length<=b)return null;var c=new T(null);c.ba(this.b,this.v.slice(0===b?0:this.g[b-1],this.g[b]));return c}; -l.rd=function(){var b=this.v,c=this.g,d=this.b,e=[],f=0,g,h;g=0;for(h=c.length;gb||c<=b)return null;c=new D(null);c.ba(this.b,this.v.slice(b*this.a,(b+1)*this.a));return c};l.ue=function(){var b=this.v,c=this.b,d=this.a,e=[],f,g;f=0;for(g=b.length;fb||this.g.length<=b)return null;var c;0===b?c=0:(c=this.g[b-1],c=c[c.length-1]);b=this.g[b].slice();var d=b[b.length-1];if(0!==c){var e,f;e=0;for(f=b.length;eb||0!==this.i&&bc)throw Error("Bad port number "+c);b.l=c}else b.l=null}function It(b,c,d){c instanceof Kt?(b.b=c,Qt(b.b,b.j)):(d||(c=Lt(c,Rt)),b.b=new Kt(c,0,b.j))}function St(b){return b instanceof Ft?b.clone():new Ft(b,void 0)} -function Tt(b,c){b instanceof Ft||(b=St(b));c instanceof Ft||(c=St(c));var d=b,e=c,f=d.clone(),g=!!e.f;g?Gt(f,e.f):g=!!e.i;g?f.i=e.i:g=!!e.c;g?f.c=e.c:g=null!=e.l;var h=e.a;if(g)Ht(f,e.l);else if(g=!!e.a)if("/"!=h.charAt(0)&&(d.c&&!d.a?h="/"+h:(d=f.a.lastIndexOf("/"),-1!=d&&(h=f.a.substr(0,d+1)+h))),d=h,".."==d||"."==d)h="";else if(-1!=d.indexOf("./")||-1!=d.indexOf("/.")){for(var h=0==d.lastIndexOf("/",0),d=d.split("/"),k=[],m=0;m>4&15).toString(16)+(b&15).toString(16)} -var Mt=/[#\/\?@]/g,Ot=/[\#\?:]/g,Nt=/[\#\?]/g,Rt=/[\#\?@]/g,Pt=/#/g;function Kt(b,c,d){this.c=this.a=null;this.b=b||null;this.f=!!d}function Vt(b){b.a||(b.a=new ri,b.c=0,b.b&&ko(b.b,function(c,d){b.add(decodeURIComponent(c.replace(/\+/g," ")),d)}))}l=Kt.prototype;l.nc=function(){Vt(this);return this.c};l.add=function(b,c){Vt(this);this.b=null;b=Wt(this,b);var d=this.a.get(b);d||this.a.set(b,d=[]);d.push(c);this.c++;return this}; -l.remove=function(b){Vt(this);b=Wt(this,b);return ti(this.a.c,b)?(this.b=null,this.c-=this.a.get(b).length,this.a.remove(b)):!1};l.clear=function(){this.a=this.b=null;this.c=0};l.Ka=function(){Vt(this);return 0==this.c};function Xt(b,c){Vt(b);c=Wt(b,c);return ti(b.a.c,c)}l.O=function(){Vt(this);for(var b=this.a.pc(),c=this.a.O(),d=[],e=0;ee;++e){var f=parseInt(d[e],10).toString(16);d[e]=1==f.length?"0"+f:f}Es(b,d.join(""))} -function dv(b,c,d){sp({node:b},ev,fv,[c],d)}function gv(b,c,d){var e={node:b};c.Na()&&b.setAttribute("id",c.Na());b=c.P();var f=c.Qb();if(f&&(f=f.call(c,0))&&0>1,x=-7;g=e?g-1:0;var z=e?-1:1,B=b[c+g];g+=z;e=B&(1<<-x)-1;B>>=-x;for(x+=q;0>=-x;for(x+=f;0>1,B=23===g?Math.pow(2,-24)-Math.pow(2,-77):0;q=f?0:q-1;var A=f?1:-1,v=0>c||0===c&&0>1/c?1:0;c=Math.abs(c);isNaN(c)||Infinity===c?(c=isNaN(c)?1:0,f=x):(f=Math.floor(Math.log(c)/Math.LN2),1>c*(r=Math.pow(2,-f))&&(f--,r*=2),c=1<=f+z?c+B/r:c+B*Math.pow(2,1-z),2<=c*r&&(f++,r/=2),f+z>=x?(c=0,f=x):1<=f+z?(c=(c*r-1)*Math.pow(2,g),f+=z):(c=c*Math.pow(2,z-1)*Math.pow(2,g),f=0));for(;8<=g;b[e+q]=c&255,q+=A,c/=256,g-=8);f=f<g)if(h)if(56320>g){e.push(239,191,189);h=g;continue}else g=h-55296<<10|g-56320|65536,h=null;else{56319< -g||f+1===c?e.push(239,191,189):h=g;continue}else h&&(e.push(239,191,189),h=null);128>g?e.push(g):2048>g?e.push(g>>6|192,g&63|128):65536>g?e.push(g>>12|224,g>>6&63|128,g&63|128):e.push(g>>18|240,g>>12&63|128,g>>6&63|128,g&63|128)}return e}c.ka=g;var k=b("ieee754"),m,n,p;m={Mh:function(b){return(this[b]|this[b+1]<<8|this[b+2]<<16)+16777216*this[b+3]},Yf:function(b,c){this[c]=b;this[c+1]=b>>>8;this[c+2]=b>>>16;this[c+3]=b>>>24},Eh:function(b){return(this[b]|this[b+1]<<8|this[b+2]<<16)+(this[b+3]<<24)}, -Nf:function(b){return k.read(this,b,!0,23,4)},Hf:function(b){return k.read(this,b,!0,52,8)},pi:function(b,c){return k.write(this,b,c,!0,23,4)},mi:function(b,c){return k.write(this,b,c,!0,52,8)},toString:function(b,c,e){var f=b="";e=Math.min(this.length,e||this.length);for(c=c||0;c=g?(b+=decodeURIComponent(f)+String.fromCharCode(g),f=""):f+="%"+g.toString(16)}return b+=decodeURIComponent(f)},write:function(b,c){for(var e=b===n?p:h(b),f=0;f>3,c,this);this.ca===g&&this.Xo(f)}return c},lo:function(){var b=this.Eb.Nf(this.ca);this.ca+=4;return b},ho:function(){var b=this.Eb.Hf(this.ca);this.ca+=8;return b},za:function(){var b=this.Eb,c,e,f,g,h;c=b[this.ca++];if(128>c)return c;c=c&127;f=b[this.ca++];if(128>f)return c|f<<7;f=(f&127)<<7;g=b[this.ca++];if(128>g)return c|f|g<<14;g=(g&127)<<14;h=b[this.ca++];if(128>h)return c|f|g|h<<21;e=b[this.ca++];c=(c|f|g|(h&127)<<21)+268435456*(e&127);if(128>e)return c;e=b[this.ca++];c+=34359738368* -(e&127);if(128>e)return c;e=b[this.ca++];c+=4398046511104*(e&127);if(128>e)return c;e=b[this.ca++];c+=562949953421312*(e&127);if(128>e)return c;e=b[this.ca++];c+=72057594037927936*(e&127);if(128>e)return c;e=b[this.ca++];c+=0x7fffffffffffffff*(e&127);if(128>e)return c;throw Error("Expected varint not more than 10 bytes");},wo:function(){var b=this.ca,c=this.za();if(cf?g<<7*f:g* -Math.pow(2,7*f));return-c-1},Fd:function(){var b=this.za();return 1===b%2?(b+1)/-2:b/2},eo:function(){return Boolean(this.za())},Qf:function(){var b=this.za()+this.ca,c=this.Eb.toString("utf8",this.ca,b);this.ca=b;return c},Xo:function(b){b=b&7;if(b===h.f)for(;127>3),f--,1===e||2===e)g+=b.Fd(),h+=b.Fd(),1===e&&(z&&x.push(z),z=[]),z.push(new k(g,h));else if(7===e)z&&z.push(z[0].clone());else throw Error("unknown command "+e);z&&x.push(z);return x};g.prototype.bbox=function(){var b=this.lc;b.ca=this.Ye;for(var c=b.za()+b.ca,e=1,f=0,g=0,h=0,k=Infinity,z=-Infinity,B=Infinity,A= --Infinity;b.ca>3),f--,1===e||2===e)g+=b.Fd(),h+=b.Fd(),gz&&(z=g),hA&&(A=h);else if(7!==e)throw Error("unknown command "+e);return[k,B,z,A]}},{"point-geometry":1}],5:[function(b,c){function g(b,c){this.version=1;this.name=null;this.extent=4096;this.length=0;this.lc=b;this.Pd=[];this.Rd=[];this.Od=[];b.Lf(h,this,c);this.length=this.Od.length}function h(b,c,e){15===b?c.version=e.za():1===b?c.name=e.Qf():5===b?c.extent=e.za():2===b?c.Od.push(e.ca): -3===b?c.Pd.push(e.Qf()):4===b&&c.Rd.push(k(e))}function k(b){for(var c=null,e=b.za()+b.ca;b.ca>3,c=1===c?b.Qf():2===c?b.lo():3===c?b.ho():4===c?b.wo():5===c?b.za():6===c?b.Fd():7===c?b.eo():null;return c}var m=b("./vectortilefeature.js");c.ka=g;g.prototype.feature=function(b){if(0>b||b>=this.Od.length)throw Error("feature index out of bounds");this.lc.ca=this.Od[b];b=this.lc.za()+this.lc.ca;return new m(this.lc,b,this.extent,this.Pd,this.Rd)}},{"./vectortilefeature.js":4}]},{},[2])(2)}); -zp=c.ka})();function Ov(b){this.defaultDataProjection=null;b=b?b:{};this.defaultDataProjection=new De({code:"EPSG:3857",units:"tile-pixels"});this.a=b.featureClass?b.featureClass:Vm;this.f=b.geometryName?b.geometryName:"geometry";this.c=b.layerName?b.layerName:"layer";this.b=b.layers?b.layers:null}y(Ov,Qr);Ov.prototype.V=function(){return"arraybuffer"}; -Ov.prototype.Ba=function(b,c){var d=this.b,e=new yp(b),e=new zp.Si(e),f=[],g=this.a,h,k,m;for(m in e.layers)if(!d||-1!=d.indexOf(m)){h=e.layers[m];for(var n=0,p=h.length;nf?~(f<<1):f<<1;d="";e=0;for(f=b.length;e>=5;h=g+63;k+=String.fromCharCode(h);d+=k}return d} -function sw(b,c){var d=c?c:1E5,e=[],f=0,g=0,h,k;h=0;for(k=b.length;hm?(e.push(f),g=f=0):g+=5}f=0;for(g=e.length;f>1):h>>1;f=0;for(g=e.length;f=b||"."==b&&!(void 0!==c&&c)} -function Uw(b){var c=b.c.charAt(++b.a),d={position:b.a,value:c};if("("==c)d.type=2;else if(","==c)d.type=5;else if(")"==c)d.type=3;else if(Ww(c)||"-"==c){d.type=4;var e,c=b.a,f=!1,g=!1;do{if("."==e)f=!0;else if("e"==e||"E"==e)g=!0;e=b.c.charAt(++b.a)}while(Ww(e,f)||!g&&("e"==e||"E"==e)||g&&("-"==e||"+"==e));b=parseFloat(b.c.substring(c,b.a--));d.value=b}else if("a"<=c&&"z">=c||"A"<=c&&"Z">=c){d.type=1;c=b.a;do e=b.c.charAt(++b.a);while("a"<=e&&"z">=e||"A"<=e&&"Z">=e);b=b.c.substring(c,b.a--).toUpperCase(); -d.value=b}else{if(" "==c||"\t"==c||"\r"==c||"\n"==c)return Uw(b);if(""===c)d.type=6;else throw Error("Unexpected character: "+c);}return d}function Sw(b){this.c=b}l=Sw.prototype;l.match=function(b){if(b=this.a.type==b)this.a=Uw(this.c);return b}; -function Vw(b){var c=b.a;if(b.match(1)){var d=c.value;if("GEOMETRYCOLLECTION"==d){a:{if(b.match(2)){c=[];do c.push(Vw(b));while(b.match(5));if(b.match(3)){b=c;break a}}else if(Xw(b)){b=[];break a}throw Error(Yw(b));}return new js(b)}var e=Zw[d],c=$w[d];if(!e||!c)throw Error("Invalid geometry type: "+d);b=e.call(b);return new c(b)}throw Error(Yw(b));}l.Ef=function(){if(this.match(2)){var b=ax(this);if(this.match(3))return b}else if(Xw(this))return null;throw Error(Yw(this));}; -l.Df=function(){if(this.match(2)){var b=bx(this);if(this.match(3))return b}else if(Xw(this))return[];throw Error(Yw(this));};l.Ff=function(){if(this.match(2)){var b=cx(this);if(this.match(3))return b}else if(Xw(this))return[];throw Error(Yw(this));};l.Sn=function(){if(this.match(2)){var b;if(2==this.a.type)for(b=[this.Ef()];this.match(5);)b.push(this.Ef());else b=bx(this);if(this.match(3))return b}else if(Xw(this))return[];throw Error(Yw(this));}; -l.Rn=function(){if(this.match(2)){var b=cx(this);if(this.match(3))return b}else if(Xw(this))return[];throw Error(Yw(this));};l.Tn=function(){if(this.match(2)){for(var b=[this.Ff()];this.match(5);)b.push(this.Ff());if(this.match(3))return b}else if(Xw(this))return[];throw Error(Yw(this));};function ax(b){for(var c=[],d=0;2>d;++d){var e=b.a;if(b.match(4))c.push(e.value);else break}if(2==c.length)return c;throw Error(Yw(b));}function bx(b){for(var c=[ax(b)];b.match(5);)c.push(ax(b));return c} -function cx(b){for(var c=[b.Df()];b.match(5);)c.push(b.Df());return c}function Xw(b){var c=1==b.a.type&&"EMPTY"==b.a.value;c&&(b.a=Uw(b.c));return c}function Yw(b){return"Unexpected `"+b.a.value+"` at position "+b.a.position+" in `"+b.c.c+"`"}var $w={POINT:D,LINESTRING:T,POLYGON:E,MULTIPOINT:$r,MULTILINESTRING:U,MULTIPOLYGON:V},Zw={POINT:Sw.prototype.Ef,LINESTRING:Sw.prototype.Df,POLYGON:Sw.prototype.Ff,MULTIPOINT:Sw.prototype.Sn,MULTILINESTRING:Sw.prototype.Rn,MULTIPOLYGON:Sw.prototype.Tn};function dx(){this.version=void 0}y(dx,Xv);dx.prototype.c=function(b){for(b=b.firstChild;b;b=b.nextSibling)if(1==b.nodeType)return this.a(b);return null};dx.prototype.a=function(b){this.version=b.getAttribute("version").trim();return(b=Q({version:this.version},ex,b,[]))?b:null};function fx(b,c){return Q({},gx,b,c)}function hx(b,c){return Q({},ix,b,c)}function jx(b,c){var d=fx(b,c);if(d){var e=[Cs(b.getAttribute("width")),Cs(b.getAttribute("height"))];d.size=e;return d}} -function kx(b,c){return Q([],lx,b,c)} -var mx=[null,"http://www.opengis.net/wms"],ex=P(mx,{Service:M(function(b,c){return Q({},nx,b,c)}),Capability:M(function(b,c){return Q({},ox,b,c)})}),ox=P(mx,{Request:M(function(b,c){return Q({},px,b,c)}),Exception:M(function(b,c){return Q([],qx,b,c)}),Layer:M(function(b,c){return Q({},rx,b,c)})}),nx=P(mx,{Name:M(W),Title:M(W),Abstract:M(W),KeywordList:M(kx),OnlineResource:M(Wv),ContactInformation:M(function(b,c){return Q({},sx,b,c)}),Fees:M(W),AccessConstraints:M(W),LayerLimit:M(Bs),MaxWidth:M(Bs), -MaxHeight:M(Bs)}),sx=P(mx,{ContactPersonPrimary:M(function(b,c){return Q({},tx,b,c)}),ContactPosition:M(W),ContactAddress:M(function(b,c){return Q({},ux,b,c)}),ContactVoiceTelephone:M(W),ContactFacsimileTelephone:M(W),ContactElectronicMailAddress:M(W)}),tx=P(mx,{ContactPerson:M(W),ContactOrganization:M(W)}),ux=P(mx,{AddressType:M(W),Address:M(W),City:M(W),StateOrProvince:M(W),PostCode:M(W),Country:M(W)}),qx=P(mx,{Format:jp(W)}),rx=P(mx,{Name:M(W),Title:M(W),Abstract:M(W),KeywordList:M(kx),CRS:lp(W), -EX_GeographicBoundingBox:M(function(b,c){var d=Q({},vx,b,c);if(d){var e=d.westBoundLongitude,f=d.southBoundLatitude,g=d.eastBoundLongitude,d=d.northBoundLatitude;return void 0===e||void 0===f||void 0===g||void 0===d?void 0:[e,f,g,d]}}),BoundingBox:lp(function(b){var c=[As(b.getAttribute("minx")),As(b.getAttribute("miny")),As(b.getAttribute("maxx")),As(b.getAttribute("maxy"))],d=[As(b.getAttribute("resx")),As(b.getAttribute("resy"))];return{crs:b.getAttribute("CRS"),extent:c,res:d}}),Dimension:lp(function(b){return{name:b.getAttribute("name"), -units:b.getAttribute("units"),unitSymbol:b.getAttribute("unitSymbol"),"default":b.getAttribute("default"),multipleValues:xs(b.getAttribute("multipleValues")),nearestValue:xs(b.getAttribute("nearestValue")),current:xs(b.getAttribute("current")),values:W(b)}}),Attribution:M(function(b,c){return Q({},wx,b,c)}),AuthorityURL:lp(function(b,c){var d=fx(b,c);if(d)return d.name=b.getAttribute("name"),d}),Identifier:lp(W),MetadataURL:lp(function(b,c){var d=fx(b,c);if(d)return d.type=b.getAttribute("type"), -d}),DataURL:lp(fx),FeatureListURL:lp(fx),Style:lp(function(b,c){return Q({},xx,b,c)}),MinScaleDenominator:M(zs),MaxScaleDenominator:M(zs),Layer:lp(function(b,c){var d=c[c.length-1],e=Q({},rx,b,c);if(e){var f=xs(b.getAttribute("queryable"));void 0===f&&(f=d.queryable);e.queryable=void 0!==f?f:!1;f=Cs(b.getAttribute("cascaded"));void 0===f&&(f=d.cascaded);e.cascaded=f;f=xs(b.getAttribute("opaque"));void 0===f&&(f=d.opaque);e.opaque=void 0!==f?f:!1;f=xs(b.getAttribute("noSubsets"));void 0===f&&(f=d.noSubsets); -e.noSubsets=void 0!==f?f:!1;(f=As(b.getAttribute("fixedWidth")))||(f=d.fixedWidth);e.fixedWidth=f;(f=As(b.getAttribute("fixedHeight")))||(f=d.fixedHeight);e.fixedHeight=f;["Style","CRS","AuthorityURL"].forEach(function(b){if(b in d){var c=Tb(e,b),c=c.concat(d[b]);e[b]=c}});"EX_GeographicBoundingBox BoundingBox Dimension Attribution MinScaleDenominator MaxScaleDenominator".split(" ").forEach(function(b){b in e||(e[b]=d[b])});return e}})}),wx=P(mx,{Title:M(W),OnlineResource:M(Wv),LogoURL:M(jx)}),vx= -P(mx,{westBoundLongitude:M(zs),eastBoundLongitude:M(zs),southBoundLatitude:M(zs),northBoundLatitude:M(zs)}),px=P(mx,{GetCapabilities:M(hx),GetMap:M(hx),GetFeatureInfo:M(hx)}),ix=P(mx,{Format:lp(W),DCPType:lp(function(b,c){return Q({},yx,b,c)})}),yx=P(mx,{HTTP:M(function(b,c){return Q({},zx,b,c)})}),zx=P(mx,{Get:M(fx),Post:M(fx)}),xx=P(mx,{Name:M(W),Title:M(W),Abstract:M(W),LegendURL:lp(jx),StyleSheetURL:M(fx),StyleURL:M(fx)}),gx=P(mx,{Format:M(W),OnlineResource:M(Wv)}),lx=P(mx,{Keyword:jp(W)});function Ax(){this.b="http://mapserver.gis.umn.edu/mapserver";this.a=new Hs;this.defaultDataProjection=null}y(Ax,ss); -Ax.prototype.hc=function(b,c){var d={featureType:this.featureType,featureNS:this.featureNS};c&&Xb(d,Rr(this,b,c));var e=[d];b.namespaceURI=this.b;var f=So(b),d=[];if(0!==b.childNodes.length){if("msGMLOutput"==f)for(var g=0,h=b.childNodes.length;g=c[0]||b[1]<=c[1]&&b[3]>=c[1]?!0:de(b,this.ng,this)):!1}; -l.Ul=function(b){var c=this.a,d=this.v[c]-this.v[0],e=b.slice();e[c]=e[0]+d;for(d=1;dg[2])&&(k*=Math.ceil((g[0]-d)/k),e=[e[0]+ -k,e[1],e[2]+k,e[3]]);d=this.u[0];g=this.u[1];k=-1;n=Math.pow(this.U*h,2);q=[];r=[];h=0;for(m=Xx.length;h=c.l&&c.cancel())}this.C?this.C.call(this.A,this):this.B=!0;this.a||(b=new gy,hy(this),iy(this,!1,b))}};fy.prototype.u=function(b,c){this.i=!1;iy(this,b,c)};function iy(b,c,d){b.a=!0;b.b=d;b.f=!c;jy(b)} -function hy(b){if(b.a){if(!b.B)throw new ky;b.B=!1}}fy.prototype.$c=function(b){hy(this);iy(this,!0,b)};function ly(b,c,d,e){b.g.push([c,d,e]);b.a&&jy(b)}fy.prototype.then=function(b,c,d){var e,f,g=new Hn(function(b,c){e=b;f=c});ly(this,e,function(b){b instanceof gy?g.cancel():f(b)});return g.then(b,c,d)};un(fy);function my(b){return eb(b.g,function(b){return ka(b[1])})} -function jy(b){if(b.j&&b.a&&my(b)){var c=b.j,d=ny[c];d&&(ba.clearTimeout(d.wa),delete ny[c]);b.j=0}b.c&&(b.c.l--,delete b.c);for(var c=b.b,e=d=!1;b.g.length&&!b.i;){var f=b.g.shift(),g=f[0],h=f[1],f=f[2];if(g=b.f?h:g)try{var k=g.call(f||b.A,c);ca(k)&&(b.f=b.f&&(k==c||k instanceof Error),b.b=c=k);if(vn(c)||"function"===typeof ba.Promise&&c instanceof ba.Promise)e=!0,b.i=!0}catch(m){c=m,b.f=!0,my(b)||(d=!0)}}b.b=c;e&&(k=ra(b.u,b,!0),e=ra(b.u,b,!1),c instanceof fy?(ly(c,k,e),c.D=!0):c.then(k,e));d&& -(c=new oy(c),ny[c.wa]=c,b.j=c.wa)}function ky(){xa.call(this)}y(ky,xa);ky.prototype.message="Deferred has already fired";ky.prototype.name="AlreadyCalledError";function gy(){xa.call(this)}y(gy,xa);gy.prototype.message="Deferred was canceled";gy.prototype.name="CanceledError";function oy(b){this.wa=ba.setTimeout(ra(this.c,this),0);this.a=b}oy.prototype.c=function(){delete ny[this.wa];throw this.a;};var ny={};function py(b,c){ca(b.name)?(this.name=b.name,this.code=qy[b.name]):(this.code=b.code,this.name=ry(b.code));xa.call(this,Ba("%s %s",this.name,c))}y(py,xa);function ry(b){var c=Pb(qy,function(c){return b==c});if(!ca(c))throw Error("Invalid code: "+b);return c}var qy={AbortError:3,EncodingError:5,InvalidModificationError:9,InvalidStateError:7,NotFoundError:1,NotReadableError:4,NoModificationAllowedError:6,PathExistsError:12,QuotaExceededError:10,SecurityError:2,SyntaxError:8,TypeMismatchError:11};function sy(b,c){vc.call(this,b.type,c)}y(sy,vc);function ty(){cd.call(this);this.ub=new FileReader;this.ub.onloadstart=ra(this.a,this);this.ub.onprogress=ra(this.a,this);this.ub.onload=ra(this.a,this);this.ub.onabort=ra(this.a,this);this.ub.onerror=ra(this.a,this);this.ub.onloadend=ra(this.a,this)}y(ty,cd);ty.prototype.getError=function(){return this.ub.error&&new py(this.ub.error,"reading file")};ty.prototype.a=function(b){this.o(new sy(b,this))};ty.prototype.X=function(){ty.da.X.call(this);delete this.ub}; -function uy(b){var c=new fy;b.Qa("loadend",sa(function(b,c){var f=c.ub.result,g=c.getError();null==f||g?(hy(b),iy(b,!1,g)):b.$c(f);c.Ec()},c,b));return c};function vy(b){b=b?b:{};Ok.call(this,{handleEvent:ue});this.j=b.formatConstructors?b.formatConstructors:[];this.A=b.projection?Fe(b.projection):null;this.f=null;this.a=void 0}y(vy,Ok);vy.prototype.X=function(){this.a&&Zc(this.a);vy.da.X.call(this)};vy.prototype.i=function(b){b=b.a.dataTransfer.files;var c,d,e;c=0;for(d=b.length;cb.xa:b.f===Jy&&(e=b.a[0].length>b.xa,f=[b.a[0][0],b.a[0][b.a[0].length-2]]);if(e)for(var e=c.map,g=0,h=f.length;gb.pa,b.D(g,e);else if(b.f===Jy){g=b.a[0];g.push(d.slice());if(f=g.length>b.pa)b.l=g[0];b.D(b.a,e)}Sy(b);f&&b.md()}l.Ao=function(){var b=this.i.W(),c,d;this.f===Ly?(c=this.a,c.splice(-2,1),this.D(c,b)):this.f===Jy&&(c=this.a[0],c.splice(-2,1),d=this.A.W(),d.ma(c),this.D(this.a,b));0===c.length&&(this.l=null);Sy(this)}; -l.md=function(){var b=Ty(this),c=this.a,d=b.W();this.f===Ly?(c.pop(),this.D(c,d)):this.f===Jy&&(c[0].pop(),c[0].push(c[0][0]),this.D(c,d));"MultiPoint"===this.T?b.La(new $r([c])):"MultiLineString"===this.T?b.La(new U([c])):"MultiPolygon"===this.T&&b.La(new V([c]));this.o(new Dy("drawend",b));this.fb&&this.fb.push(b);this.Db&&this.Db.Ad(b)};function Ty(b){b.l=null;var c=b.i;c&&(b.i=null,b.G=null,b.A=null,b.ga.fa().clear(!0));return c} -l.bm=function(b){var c=b.W();this.i=b;this.a=c.Y();b=this.a[this.a.length-1];this.l=b.slice();this.a.push(b.slice());Sy(this);this.o(new Dy("drawstart",this.i))};l.xc=te;function Sy(b){var c=[];b.i&&c.push(b.i);b.A&&c.push(b.A);b.G&&c.push(b.G);b=b.ga.fa();b.clear(!0);b.Dc(c)}l.ki=function(){var b=this.u,c=this.b();b&&c||Ty(this);this.ga.setMap(c?b:null)}; -function Iy(b){var c;"Point"===b||"MultiPoint"===b?c=Ky:"LineString"===b||"MultiLineString"===b?c=Ly:"Polygon"===b||"MultiPolygon"===b?c=Jy:"Circle"===b&&(c=Qy);return c}var Ky="Point",Ly="LineString",Jy="Polygon",Qy="Circle";function Uy(b,c,d){vc.call(this,b);this.features=c;this.mapBrowserPointerEvent=d}y(Uy,vc); -function Vy(b){al.call(this,{handleDownEvent:Wy,handleDragEvent:Xy,handleEvent:Yy,handleUpEvent:Zy});this.pa=b.deleteCondition?b.deleteCondition:ze(Xk,Wk);this.va=this.f=null;this.ea=[0,0];this.D=this.U=!1;this.a=new Bp;this.G=void 0!==b.pixelTolerance?b.pixelTolerance:10;this.l=this.ga=!1;this.i=null;this.S=new H({source:new R({useSpatialIndex:!1,wrapX:!!b.wrapX}),style:b.style?b.style:$y(),updateWhileAnimating:!0,updateWhileInteracting:!0});this.T={Point:this.im,LineString:this.bh,LinearRing:this.bh, -Polygon:this.jm,MultiPoint:this.gm,MultiLineString:this.fm,MultiPolygon:this.hm,GeometryCollection:this.em};this.A=b.features;this.A.forEach(this.zf,this);C(this.A,"add",this.cm,!1,this);C(this.A,"remove",this.dm,!1,this)}y(Vy,al);l=Vy.prototype;l.zf=function(b){var c=b.W();c.V()in this.T&&this.T[c.V()].call(this,b,c);(c=this.u)&&az(this,this.ea,c);C(b,"change",this.ah,!1,this)};function bz(b,c){b.D||(b.D=!0,b.o(new Uy("modifystart",b.A,c)))} -function cz(b,c){dz(b,c);b.f&&0===b.A.$b()&&(b.S.fa().Qc(b.f),b.f=null);Yc(c,"change",b.ah,!1,b)}function dz(b,c){var d=b.a,e=[];d.forEach(function(b){c===b.feature&&e.push(b)});for(var f=e.length-1;0<=f;--f)d.remove(e[f])}l.setMap=function(b){this.S.setMap(b);Vy.da.setMap.call(this,b)};l.cm=function(b){this.zf(b.element)};l.ah=function(b){this.l||(b=b.target,cz(this,b),this.zf(b))};l.dm=function(b){cz(this,b.element)}; -l.im=function(b,c){var d=c.Y(),d={feature:b,geometry:c,la:[d,d]};this.a.ya(c.J(),d)};l.gm=function(b,c){var d=c.Y(),e,f,g;f=0;for(g=d.length;fd?h[1]:h[0]);ez(b,k);d={};d[w(h)]=!0;c=1;for(m=g.length;cd&&(b.index+=f)})}function $y(){var b=hm();return function(){return b.Point}};function hz(b,c,d,e){vc.call(this,b);this.selected=c;this.deselected=d;this.mapBrowserEvent=e}y(hz,vc); -function iz(b){Ok.call(this,{handleEvent:jz});b=b?b:{};this.C=b.condition?b.condition:Wk;this.l=b.addCondition?b.addCondition:te;this.D=b.removeCondition?b.removeCondition:te;this.G=b.toggleCondition?b.toggleCondition:Yk;this.A=b.multi?b.multi:!1;this.j=b.filter?b.filter:ue;var c;if(b.layers)if(ka(b.layers))c=b.layers;else{var d=b.layers;c=function(b){return vb(d,b)}}else c=ue;this.i=c;this.a={};this.f=new H({source:new R({useSpatialIndex:!1,features:b.features,wrapX:b.wrapX}),style:b.style?b.style: -kz(),updateWhileAnimating:!0,updateWhileInteracting:!0});b=this.f.fa().b;C(b,"add",this.km,!1,this);C(b,"remove",this.nm,!1,this)}y(iz,Ok);l=iz.prototype;l.lm=function(){return this.f.fa().b};l.mm=function(b){b=w(b);return this.a[b]}; -function jz(b){if(!this.C(b))return!0;var c=this.l(b),d=this.D(b),e=this.G(b),f=!c&&!d&&!e,g=b.map,h=this.f.fa().b,k=[],m=[],n=!1;if(f)g.od(b.pixel,function(b,c){if(!c||this.j(b,c)){m.push(b);var d=w(b);this.a[d]=c;return!this.A}},this,this.i),0f?h[1]:h[0],d=c.Oa(m),d=[Math.round(d[0]),Math.round(d[1])]);c=m;g&&(b.coordinate=c.slice(0,2),b.pixel=d);return bl.call(this,b)} -function nz(){var b=Lb(this.A);b.length&&(b.forEach(this.ji,this),this.A={});return!1}function oz(b,c){return yd(this.S,b.la)-yd(this.S,c.la)};function pz(b,c,d){vc.call(this,b);this.features=c;this.coordinate=d}y(pz,vc);function qz(b){al.call(this,{handleDownEvent:rz,handleDragEvent:sz,handleMoveEvent:tz,handleUpEvent:uz});this.l=void 0;this.a=null;this.f=void 0!==b.features?b.features:null;this.i=null}y(qz,al);function rz(b){this.i=vz(this,b.pixel,b.map);return!this.a&&this.i?(this.a=b.coordinate,tz.call(this,b),this.o(new pz("translatestart",this.f,b.coordinate)),!0):!1} -function uz(b){return this.a?(this.a=null,tz.call(this,b),this.o(new pz("translateend",this.f,b.coordinate)),!0):!1}function sz(b){if(this.a){b=b.coordinate;var c=b[0]-this.a[0],d=b[1]-this.a[1];if(this.f)this.f.forEach(function(b){var e=b.W();e.Oc(c,d);b.La(e)});else if(this.i){var e=this.i.W();e.Oc(c,d);this.i.La(e)}this.a=b;this.o(new pz("translating",this.f,b))}} -function tz(b){var c=b.map.Lc();if(b=b.map.od(b.pixel,function(b){return b})){var d=!1;this.f&&vb(this.f.a,b)&&(d=!0);this.l=c.style.cursor;c.style.cursor=this.a?"-webkit-grabbing":d?"-webkit-grab":"pointer";c.style.cursor=this.a?d?"grab":"pointer":"grabbing"}else c.style.cursor=void 0!==this.l?this.l:"",this.l=void 0}function vz(b,c,d){var e=null;c=d.od(c,function(b){return b});b.f&&vb(b.f.a,c)&&(e=c);return e};function X(b){b=b?b:{};var c=Ub(b);delete c.gradient;delete c.radius;delete c.blur;delete c.shadow;delete c.weight;H.call(this,c);this.g=null;this.Z=void 0!==b.shadow?b.shadow:250;this.T=void 0;this.U=null;C(this,kd("gradient"),this.zk,!1,this);this.Wh(b.gradient?b.gradient:wz);this.Sh(void 0!==b.blur?b.blur:15);this.ih(void 0!==b.radius?b.radius:8);C(this,[kd("blur"),kd("radius")],this.Lg,!1,this);this.Lg();var d=b.weight?b.weight:"weight",e;ia(d)?e=function(b){return b.get(d)}:e=d;this.f(ra(function(b){b= -e(b);b=void 0!==b?Sa(b,0,1):1;var c=255*b|0,d=this.U[c];d||(d=[new cm({image:new wk({opacity:b,src:this.T})})],this.U[c]=d);return d},this));this.set("renderOrder",null);C(this,"render",this.Rk,!1,this)}y(X,H);var wz=["#00f","#0ff","#0f0","#ff0","#f00"];l=X.prototype;l.tg=function(){return this.get("blur")};l.Ag=function(){return this.get("gradient")};l.hh=function(){return this.get("radius")}; -l.zk=function(){for(var b=this.Ag(),c=Pi(1,256),d=c.createLinearGradient(0,0,1,256),e=1/(b.length-1),f=0,g=b.length;f=e)this.state=4;else if(this.u=new en(b,d,h,g,e*(void 0!==n?n:.5)),0===this.u.f.length)this.state=4;else if(this.l=Kh(c,e),d=gn(this.u),g&&(b.b?(d[1]=Sa(d[1],g[1],g[3]), -d[3]=Sa(d[3],g[1],g[3])):d=oe(d,g)),ie(d))if(b=Fh(c,d,this.l),100>kg(b)*jg(b)){for(c=b.a;c<=b.f;c++)for(d=b.c;d<=b.b;d++)(n=m(this.l,c,d,k))&&this.c.push(n);0===this.c.length&&(this.state=4)}else this.state=3;else this.state=4}y(xz,wh);xz.prototype.X=function(){1==this.state&&(this.b.forEach(Zc),this.b=null);xz.da.X.call(this)};xz.prototype.Sa=function(b){if(void 0!==b){var c=w(b);if(c in this.g)return this.g[c];b=Qb(this.g)?this.j:this.j.cloneNode(!1);return this.g[c]=b}return this.j}; -function yz(b){var c=[];b.c.forEach(function(b){b&&2==b.state&&c.push({extent:this.i.Aa(b.a),image:b.Sa()})},b);b.c.length=0;var d=b.a,e=d[0],f=b.B.Ha(e),g=ja(f)?f:f[0],f=ja(f)?f:f[1],e=b.B.$(e),h=b.i.$(b.l),d=b.B.Aa(d);b.j=dn(g,f,b.A,h,b.i.J(),e,d,b.u,c,b.C);b.state=2;xh(b)} -xz.prototype.load=function(){if(0==this.state){this.state=1;xh(this);var b=0;this.b=[];this.c.forEach(function(c){var d=c.state;if(0==d||1==d){b++;var e;e=c.Qa("change",function(){var d=c.state;if(2==d||3==d||4==d)Zc(e),b--,0===b&&(this.b.forEach(Zc),this.b=null,yz(this))},!1,this);this.b.push(e)}},this);this.c.forEach(function(b){0==b.state&&b.load()});0===b&&yz(this)}};function zz(b,c){var d=c||{},e=d.document||document,f=Kg("SCRIPT"),g={Rh:f,yc:void 0},h=new fy(Az,g),k=null,m=null!=d.timeout?d.timeout:5E3;0Terms of Use'}); -Oz.prototype.D=function(b){if(200!=b.statusCode||"OK"!=b.statusDescription||"ValidCredentials"!=b.authenticationResultCode||1!=b.resourceSets.length||1!=b.resourceSets[0].resources.length)Ah(this,"error");else{var c=b.brandLogoUri;-1==c.indexOf("https")&&(c=c.replace("http","https"));var d=b.resourceSets[0].resources[0],e=-1==this.g?d.zoomMax:this.g;b=Mh(this.f);var f=Oh({extent:b,minZoom:d.zoomMin,maxZoom:e,tileSize:d.imageWidth==d.imageHeight?d.imageWidth:[d.imageWidth,d.imageHeight]});this.tileGrid= -f;var g=this.l;this.tileUrlFunction=Wp(d.imageUrlSubdomains.map(function(b){var c=[0,0,0],e=d.imageUrl.replace("{subdomain}",b).replace("{culture}",g);return function(b){if(b)return cg(b[0],b[1],-b[2]-1,c),e.replace("{quadkey}",eg(c))}}));if(d.imageryProviders){var h=Je(Fe("EPSG:4326"),this.f);b=d.imageryProviders.map(function(b){var c=b.attribution,d={};b.coverageAreas.forEach(function(b){var c=b.zoomMin,g=Math.min(b.zoomMax,e);b=b.bbox;b=re([b[1],b[0],b[3],b[2]],h);var k,m;for(k=c;k<=g;++k)m=k.toString(), -c=Fh(f,b,k),m in d?d[m].push(c):d[m]=[c]});return new mg({html:c,tileRanges:d})});b.push(Pz);this.na(b)}this.U=c;Ah(this,"ready")}};function Qz(b){R.call(this,{attributions:b.attributions,extent:b.extent,logo:b.logo,projection:b.projection,wrapX:b.wrapX});this.G=void 0;this.ea=void 0!==b.distance?b.distance:20;this.D=[];this.C=b.source;this.C.H("change",Qz.prototype.va,this)}y(Qz,R);Qz.prototype.ga=function(){return this.C};Qz.prototype.Mc=function(b,c,d){this.C.Mc(b,c,d);c!==this.G&&(this.clear(),this.G=c,Rz(this),this.Dc(this.D))};Qz.prototype.va=function(){this.clear();Rz(this);this.Dc(this.D);this.s()}; -function Rz(b){if(void 0!==b.G){b.D.length=0;for(var c=Od(),d=b.ea*b.G,e=b.C.ye(),f={},g=0,h=e.length;gk*d?h*g/(k*n):d*g/(m*n),SETVIEWCENTERX:f[0],SETVIEWCENTERY:f[1]};Xb(e,c);return lo(no([b],e))};l.Gm=function(b){this.g=null;this.b=b;this.s()};function Uz(b){var c=void 0!==b.attributions?b.attributions:null,d=b.imageExtent,e,f;void 0!==b.imageSize&&(e=le(d)/b.imageSize[1],f=[e]);var g=void 0!==b.crossOrigin?b.crossOrigin:null,h=void 0!==b.imageLoadFunction?b.imageLoadFunction:qn;kn.call(this,{attributions:c,logo:b.logo,projection:Fe(b.projection),resolutions:f});this.b=new $x(d,e,1,c,b.url,g,h);C(this.b,"change",this.D,!1,this)}y(Uz,kn);Uz.prototype.pd=function(b){return pe(b,this.b.J())?this.b:null};function Vz(b){b=b||{};kn.call(this,{attributions:b.attributions,logo:b.logo,projection:b.projection,resolutions:b.resolutions});this.pa=void 0!==b.crossOrigin?b.crossOrigin:null;this.i=b.url;this.T=void 0!==b.imageLoadFunction?b.imageLoadFunction:qn;this.g=b.params;this.u=!0;Wz(this);this.ga=b.serverType;this.xa=void 0!==b.hidpi?b.hidpi:!0;this.b=null;this.Z=[0,0];this.ea=0;this.l=void 0!==b.ratio?b.ratio:1.5}y(Vz,kn);var Xz=[101,101];l=Vz.prototype; -l.Nm=function(b,c,d,e){if(void 0!==this.i){var f=ne(b,c,0,Xz),g={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.g.LAYERS};Xb(g,this.g,e);e=Math.floor((f[3]-b[1])/c);g[this.u?"I":"X"]=Math.floor((b[0]-f[0])/c);g[this.u?"J":"Y"]=e;return Yz(this,f,Xz,1,Fe(d),g)}};l.Pm=function(){return this.g}; -l.pd=function(b,c,d,e){if(void 0===this.i)return null;c=ln(this,c);1==d||this.xa&&void 0!==this.ga||(d=1);b=b.slice();var f=(b[0]+b[2])/2,g=(b[1]+b[3])/2,h=c/d,k=ke(b)/h,h=le(b)/h,m=this.b;if(m&&this.ea==this.c&&m.$()==c&&m.b==d&&Xd(m.J(),b))return m;if(1!=this.l){var m=this.l*ke(b)/2,n=this.l*le(b)/2;b[0]=f-m;b[1]=g-n;b[2]=f+m;b[3]=g+n}f={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};Xb(f,this.g);this.Z[0]=Math.ceil(k*this.l);this.Z[1]=Math.ceil(h*this.l);e=Yz(this, -b,this.Z,d,e,f);this.b=new $x(b,c,d,this.j,e,this.pa,this.T);this.ea=this.c;C(this.b,"change",this.D,!1,this);return this.b};l.Om=function(){return this.T}; -function Yz(b,c,d,e,f,g){g[b.u?"CRS":"SRS"]=f.a;"STYLES"in b.g||(g.STYLES=new String(""));if(1!=e)switch(b.ga){case "geoserver":e=90*e+.5|0;g.FORMAT_OPTIONS="FORMAT_OPTIONS"in g?g.FORMAT_OPTIONS+(";dpi:"+e):"dpi:"+e;break;case "mapserver":g.MAP_RESOLUTION=90*e;break;case "carmentaserver":case "qgis":g.DPI=90*e}g.WIDTH=d[0];g.HEIGHT=d[1];d=f.g;var h;b.u&&"ne"==d.substr(0,2)?h=[c[1],c[0],c[3],c[2]]:h=c;g.BBOX=h.join(",");return lo(no([b.i],g))}l.Qm=function(){return this.i}; -l.Rm=function(b){this.b=null;this.T=b;this.s()};l.Sm=function(b){b!=this.i&&(this.i=b,this.b=null,this.s())};l.Tm=function(b){Xb(this.g,b);Wz(this);this.b=null;this.s()};function Wz(b){b.u=0<=Pa(Sb(b.g,"VERSION","1.3.0"),"1.3")};function Zz(b){var c=void 0!==b.projection?b.projection:"EPSG:3857",d=void 0!==b.tileGrid?b.tileGrid:Oh({extent:Mh(c),maxZoom:b.maxZoom,tileSize:b.tileSize});Y.call(this,{attributions:b.attributions,crossOrigin:b.crossOrigin,logo:b.logo,projection:c,reprojectionErrorThreshold:b.reprojectionErrorThreshold,tileGrid:d,tileLoadFunction:b.tileLoadFunction,tilePixelRatio:b.tilePixelRatio,tileUrlFunction:b.tileUrlFunction,url:b.url,urls:b.urls,wrapX:void 0!==b.wrapX?b.wrapX:!0})}y(Zz,Y);function $z(b){b=b||{};var c;void 0!==b.attributions?c=b.attributions:c=[aA];Zz.call(this,{attributions:c,crossOrigin:void 0!==b.crossOrigin?b.crossOrigin:"anonymous",opaque:!0,maxZoom:void 0!==b.maxZoom?b.maxZoom:19,reprojectionErrorThreshold:b.reprojectionErrorThreshold,tileLoadFunction:b.tileLoadFunction,url:void 0!==b.url?b.url:"https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png",wrapX:b.wrapX})}y($z,Zz);var aA=new mg({html:'© OpenStreetMap contributors.'});function bA(b){b=b||{};var c=cA[b.layer];this.g=b.layer;Zz.call(this,{attributions:c.attributions,crossOrigin:"anonymous",logo:"https://developer.mapquest.com/content/osm/mq_logo.png",maxZoom:c.maxZoom,reprojectionErrorThreshold:b.reprojectionErrorThreshold,opaque:!0,tileLoadFunction:b.tileLoadFunction,url:void 0!==b.url?b.url:"https://otile{1-4}-s.mqcdn.com/tiles/1.0.0/"+this.g+"/{z}/{x}/{y}.jpg"})}y(bA,Zz); -var dA=new mg({html:'Tiles Courtesy of MapQuest'}),cA={osm:{maxZoom:19,attributions:[dA,aA]},sat:{maxZoom:18,attributions:[dA,new mg({html:"Portions Courtesy NASA/JPL-Caltech and U.S. Depart. of Agriculture, Farm Service Agency"})]},hyb:{maxZoom:18,attributions:[dA,aA]}};bA.prototype.l=function(){return this.g};(function(){var b={},c={ka:b};(function(d){if("object"===typeof b&&"undefined"!==typeof c)c.ka=d();else{var e;"undefined"!==typeof window?e=window:"undefined"!==typeof global?e=global:"undefined"!==typeof self?e=self:e=this;e.Bp=d()}})(function(){return function e(b,c,h){function k(n,q){if(!c[n]){if(!b[n]){var r="function"==typeof require&&require;if(!q&&r)return r(n,!0);if(m)return m(n,!0);r=Error("Cannot find module '"+n+"'");throw r.code="MODULE_NOT_FOUND",r;}r=c[n]={ka:{}};b[n][0].call(r.ka,function(c){var e= -b[n][1][c];return k(e?e:c)},r,r.ka,e,b,c,h)}return c[n].ka}for(var m="function"==typeof require&&require,n=0;nthis.bj;)this.Yc.shift().$c(null,null)};m.prototype.eg=function(){if(0===this.Qd&&0Stamen Design, under CC BY 3.0.'}),aA];function qA(b){b=b||{};var c=void 0!==b.params?b.params:{};Y.call(this,{attributions:b.attributions,crossOrigin:b.crossOrigin,logo:b.logo,projection:b.projection,reprojectionErrorThreshold:b.reprojectionErrorThreshold,tileGrid:b.tileGrid,tileLoadFunction:b.tileLoadFunction,tileUrlFunction:ra(this.G,this),url:b.url,urls:b.urls,wrapX:void 0!==b.wrapX?b.wrapX:!0});this.g=c;this.l=Od()}y(qA,Y);qA.prototype.D=function(){return this.g}; -qA.prototype.Pb=function(b,c,d){b=qA.da.Pb.call(this,b,c,d);return 1==c?b:nd(b,c,this.b)}; -qA.prototype.G=function(b,c,d){var e=this.tileGrid;e||(e=this.hb(d));if(!(e.a.length<=b[0])){var f=e.Aa(b,this.l),g=od(e.Ha(b[0]),this.b);1!=c&&(g=nd(g,c,this.b));e={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};Xb(e,this.g);var h=this.urls;h?(d=d.a.split(":").pop(),e.SIZE=g[0]+","+g[1],e.BBOX=f.join(","),e.BBOXSR=d,e.IMAGESR=d,e.DPI=Math.round(90*c),b=1==h.length?h[0]:h[pd((b[1]<g||e>g;)f.push([Math.ceil(d/g),Math.ceil(e/g)]),g+=g;break;case "truncated":for(;d>g||e>g;)f.push([Math.ceil(d/g),Math.ceil(e/g)]),d>>=1,e>>=1}f.push([1,1]);f.reverse();for(var g=[1],h=[0],e=1,d=f.length;ethis.b||d+this.a>this.b)return null;e=KA(this,!1,b,c,d,e,g);if(!e)return null;b=KA(this,!0,b,c,d,void 0!==f?f:ve,g);return{offsetX:e.offsetX,offsetY:e.offsetY,image:e.image,Mg:b.image}}; -function KA(b,c,d,e,f,g,h){var k=c?b.j:b.g,m,n,p;n=0;for(p=k.length;n=c+this.a&&g.height>=d+this.a)return k={offsetX:g.x+this.a,offsetY:g.y+this.a,image:this.b},this.f[b]=k,e.call(f,this.g,g.x+this.a,g.y+this.a),b=h,c=c+this.a,d=d+this.a,f=e=void 0,g.width-c>g.height-d?(e={x:g.x+c,y:g.y,width:g.width-c,height:g.height},f={x:g.x,y:g.y+d,width:c,height:g.height-d},LA(this,b,e,f)):(e={x:g.x+c,y:g.y,width:g.width-c,height:d},f={x:g.x,y:g.y+d,width:g.width,height:g.height- -d},LA(this,b,e,f)),k;return null};function LA(b,c,d,e){c=[c,1];0f&&(f=0);g=d.TileMatrixSetLink[f].TileMatrixSet; -var h=d.Format[0];"format"in c&&(h=c.format);f=gb(d.Style,function(b){return"style"in c?b.Title==c.style:b.isDefault});0>f&&(f=0);f=d.Style[f].Identifier;var k={};"Dimension"in d&&d.Dimension.forEach(function(b){var c=b.Identifier,d=b.Default;void 0===d&&(d=b.Value[0]);k[c]=d});var m=fb(b.Contents.TileMatrixSet,function(b){return b.Identifier==g}),n;n="projection"in c?Fe(c.projection):Fe(m.SupportedCRS.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/,"$1:$3"));var p=d.WGS84BoundingBox,q,r;void 0!==p&& -(r=Fe("EPSG:4326").J(),r=p[0]==r[0]&&p[2]==r[2],q=af(p,"EPSG:4326",n),(p=n.J())&&(Xd(p,q)||(q=void 0)));var m=EA(m,q),t=[];q=c.requestEncoding;q=void 0!==q?q:"";if(b.hasOwnProperty("OperationsMetadata")&&b.OperationsMetadata.hasOwnProperty("GetTile")&&0!==q.indexOf("REST"))for(var d=b.OperationsMetadata.GetTile.DCP.HTTP.Get,p=0,x=d.length;p 0) { - this.content[0] = end; - this.sinkDown(0); - } - return result; - }, - - remove: function(node) { - var length = this.content.length; - // To remove a value, we must search through the array to find - // it. - for (var i = 0; i < length; i++) { - if (this.content[i] != node) continue; - // When it is found, the process seen in 'pop' is repeated - // to fill up the hole. - var end = this.content.pop(); - // If the element we popped was the one we needed to remove, - // we're done. - if (i == length - 1) break; - // Otherwise, we replace the removed element with the popped - // one, and allow it to float up or sink down as appropriate. - this.content[i] = end; - this.bubbleUp(i); - this.sinkDown(i); - break; - } - }, - - size: function() { - return this.content.length; - }, - - bubbleUp: function(n) { - // Fetch the element that has to be moved. - var element = this.content[n], score = this.scoreFunction(element); - // When at 0, an element can not go up any further. - while (n > 0) { - // Compute the parent element's index, and fetch it. - var parentN = Math.floor((n + 1) / 2) - 1, - parent = this.content[parentN]; - // If the parent has a lesser score, things are in order and we - // are done. - if (score >= this.scoreFunction(parent)) - break; - - // Otherwise, swap the parent with the current element and - // continue. - this.content[parentN] = element; - this.content[n] = parent; - n = parentN; - } - }, - - sinkDown: function(n) { - // Look up the target element and its score. - var length = this.content.length, - element = this.content[n], - elemScore = this.scoreFunction(element); - - while(true) { - // Compute the indices of the child elements. - var child2N = (n + 1) * 2, child1N = child2N - 1; - // This is used to store the new position of the element, - // if any. - var swap = null; - // If the first child exists (is inside the array)... - if (child1N < length) { - // Look it up and compute its score. - var child1 = this.content[child1N], - child1Score = this.scoreFunction(child1); - // If the score is less than our element's, we need to swap. - if (child1Score < elemScore) - swap = child1N; - } - // Do the same checks for the other child. - if (child2N < length) { - var child2 = this.content[child2N], - child2Score = this.scoreFunction(child2); - if (child2Score < (swap == null ? elemScore : child1Score)) - swap = child2N; - } - - // No need to swap further, we are done. - if (swap == null) break; - - // Otherwise, swap and continue. - this.content[n] = this.content[swap]; - this.content[swap] = element; - n = swap; - } - } -}; diff --git a/libs/other/OBJLoader.js b/libs/other/OBJLoader.js deleted file mode 100644 index daf80ff..0000000 --- a/libs/other/OBJLoader.js +++ /dev/null @@ -1,715 +0,0 @@ -/** - * @author mrdoob / http://mrdoob.com/ - */ - -THREE.OBJLoader = ( function () { - - // o object_name | g group_name - var object_pattern = /^[og]\s*(.+)?/; - // mtllib file_reference - var material_library_pattern = /^mtllib /; - // usemtl material_name - var material_use_pattern = /^usemtl /; - - function ParserState() { - - var state = { - objects: [], - object: {}, - - vertices: [], - normals: [], - colors: [], - uvs: [], - - materialLibraries: [], - - startObject: function ( name, fromDeclaration ) { - - // If the current object (initial from reset) is not from a g/o declaration in the parsed - // file. We need to use it for the first parsed g/o to keep things in sync. - if ( this.object && this.object.fromDeclaration === false ) { - - this.object.name = name; - this.object.fromDeclaration = ( fromDeclaration !== false ); - return; - - } - - var previousMaterial = ( this.object && typeof this.object.currentMaterial === 'function' ? this.object.currentMaterial() : undefined ); - - if ( this.object && typeof this.object._finalize === 'function' ) { - - this.object._finalize( true ); - - } - - this.object = { - name: name || '', - fromDeclaration: ( fromDeclaration !== false ), - - geometry: { - vertices: [], - normals: [], - colors: [], - uvs: [] - }, - materials: [], - smooth: true, - - startMaterial: function ( name, libraries ) { - - var previous = this._finalize( false ); - - // New usemtl declaration overwrites an inherited material, except if faces were declared - // after the material, then it must be preserved for proper MultiMaterial continuation. - if ( previous && ( previous.inherited || previous.groupCount <= 0 ) ) { - - this.materials.splice( previous.index, 1 ); - - } - - var material = { - index: this.materials.length, - name: name || '', - mtllib: ( Array.isArray( libraries ) && libraries.length > 0 ? libraries[ libraries.length - 1 ] : '' ), - smooth: ( previous !== undefined ? previous.smooth : this.smooth ), - groupStart: ( previous !== undefined ? previous.groupEnd : 0 ), - groupEnd: - 1, - groupCount: - 1, - inherited: false, - - clone: function ( index ) { - - var cloned = { - index: ( typeof index === 'number' ? index : this.index ), - name: this.name, - mtllib: this.mtllib, - smooth: this.smooth, - groupStart: 0, - groupEnd: - 1, - groupCount: - 1, - inherited: false - }; - cloned.clone = this.clone.bind( cloned ); - return cloned; - - } - }; - - this.materials.push( material ); - - return material; - - }, - - currentMaterial: function () { - - if ( this.materials.length > 0 ) { - - return this.materials[ this.materials.length - 1 ]; - - } - - return undefined; - - }, - - _finalize: function ( end ) { - - var lastMultiMaterial = this.currentMaterial(); - if ( lastMultiMaterial && lastMultiMaterial.groupEnd === - 1 ) { - - lastMultiMaterial.groupEnd = this.geometry.vertices.length / 3; - lastMultiMaterial.groupCount = lastMultiMaterial.groupEnd - lastMultiMaterial.groupStart; - lastMultiMaterial.inherited = false; - - } - - // Ignore objects tail materials if no face declarations followed them before a new o/g started. - if ( end && this.materials.length > 1 ) { - - for ( var mi = this.materials.length - 1; mi >= 0; mi -- ) { - - if ( this.materials[ mi ].groupCount <= 0 ) { - - this.materials.splice( mi, 1 ); - - } - - } - - } - - // Guarantee at least one empty material, this makes the creation later more straight forward. - if ( end && this.materials.length === 0 ) { - - this.materials.push( { - name: '', - smooth: this.smooth - } ); - - } - - return lastMultiMaterial; - - } - }; - - // Inherit previous objects material. - // Spec tells us that a declared material must be set to all objects until a new material is declared. - // If a usemtl declaration is encountered while this new object is being parsed, it will - // overwrite the inherited material. Exception being that there was already face declarations - // to the inherited material, then it will be preserved for proper MultiMaterial continuation. - - if ( previousMaterial && previousMaterial.name && typeof previousMaterial.clone === 'function' ) { - - var declared = previousMaterial.clone( 0 ); - declared.inherited = true; - this.object.materials.push( declared ); - - } - - this.objects.push( this.object ); - - }, - - finalize: function () { - - if ( this.object && typeof this.object._finalize === 'function' ) { - - this.object._finalize( true ); - - } - - }, - - parseVertexIndex: function ( value, len ) { - - var index = parseInt( value, 10 ); - return ( index >= 0 ? index - 1 : index + len / 3 ) * 3; - - }, - - parseNormalIndex: function ( value, len ) { - - var index = parseInt( value, 10 ); - return ( index >= 0 ? index - 1 : index + len / 3 ) * 3; - - }, - - parseUVIndex: function ( value, len ) { - - var index = parseInt( value, 10 ); - return ( index >= 0 ? index - 1 : index + len / 2 ) * 2; - - }, - - addVertex: function ( a, b, c ) { - - var src = this.vertices; - var dst = this.object.geometry.vertices; - - dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); - dst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] ); - dst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] ); - - }, - - addVertexLine: function ( a ) { - - var src = this.vertices; - var dst = this.object.geometry.vertices; - - dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); - - }, - - addNormal: function ( a, b, c ) { - - var src = this.normals; - var dst = this.object.geometry.normals; - - dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); - dst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] ); - dst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] ); - - }, - - addColor: function ( a, b, c ) { - - var src = this.colors; - var dst = this.object.geometry.colors; - - dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); - dst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] ); - dst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] ); - - }, - - addUV: function ( a, b, c ) { - - var src = this.uvs; - var dst = this.object.geometry.uvs; - - dst.push( src[ a + 0 ], src[ a + 1 ] ); - dst.push( src[ b + 0 ], src[ b + 1 ] ); - dst.push( src[ c + 0 ], src[ c + 1 ] ); - - }, - - addUVLine: function ( a ) { - - var src = this.uvs; - var dst = this.object.geometry.uvs; - - dst.push( src[ a + 0 ], src[ a + 1 ] ); - - }, - - addFace: function ( a, b, c, ua, ub, uc, na, nb, nc ) { - - var vLen = this.vertices.length; - - var ia = this.parseVertexIndex( a, vLen ); - var ib = this.parseVertexIndex( b, vLen ); - var ic = this.parseVertexIndex( c, vLen ); - - this.addVertex( ia, ib, ic ); - - if ( ua !== undefined ) { - - var uvLen = this.uvs.length; - - ia = this.parseUVIndex( ua, uvLen ); - ib = this.parseUVIndex( ub, uvLen ); - ic = this.parseUVIndex( uc, uvLen ); - - this.addUV( ia, ib, ic ); - - } - - if ( na !== undefined ) { - - // Normals are many times the same. If so, skip function call and parseInt. - var nLen = this.normals.length; - ia = this.parseNormalIndex( na, nLen ); - - ib = na === nb ? ia : this.parseNormalIndex( nb, nLen ); - ic = na === nc ? ia : this.parseNormalIndex( nc, nLen ); - - this.addNormal( ia, ib, ic ); - - } - - if ( this.colors.length > 0 ) { - - this.addColor( ia, ib, ic ); - - } - - }, - - addLineGeometry: function ( vertices, uvs ) { - - this.object.geometry.type = 'Line'; - - var vLen = this.vertices.length; - var uvLen = this.uvs.length; - - for ( var vi = 0, l = vertices.length; vi < l; vi ++ ) { - - this.addVertexLine( this.parseVertexIndex( vertices[ vi ], vLen ) ); - - } - - for ( var uvi = 0, l = uvs.length; uvi < l; uvi ++ ) { - - this.addUVLine( this.parseUVIndex( uvs[ uvi ], uvLen ) ); - - } - - } - - }; - - state.startObject( '', false ); - - return state; - - } - - // - - function OBJLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; - - this.materials = null; - - } - - OBJLoader.prototype = { - - constructor: OBJLoader, - - load: function ( url, onLoad, onProgress, onError ) { - - var scope = this; - - var loader = new THREE.FileLoader( scope.manager ); - loader.setPath( this.path ); - loader.load( url, function ( text ) { - - onLoad( scope.parse( text ) ); - - }, onProgress, onError ); - - }, - - setPath: function ( value ) { - - this.path = value; - - }, - - setMaterials: function ( materials ) { - - this.materials = materials; - - return this; - - }, - - parse: function ( text ) { - - console.time( 'OBJLoader' ); - - var state = new ParserState(); - - if ( text.indexOf( '\r\n' ) !== - 1 ) { - - // This is faster than String.split with regex that splits on both - text = text.replace( /\r\n/g, '\n' ); - - } - - if ( text.indexOf( '\\\n' ) !== - 1 ) { - - // join lines separated by a line continuation character (\) - text = text.replace( /\\\n/g, '' ); - - } - - var lines = text.split( '\n' ); - var line = '', lineFirstChar = ''; - var lineLength = 0; - var result = []; - - // Faster to just trim left side of the line. Use if available. - var trimLeft = ( typeof ''.trimLeft === 'function' ); - - for ( var i = 0, l = lines.length; i < l; i ++ ) { - - line = lines[ i ]; - - line = trimLeft ? line.trimLeft() : line.trim(); - - lineLength = line.length; - - if ( lineLength === 0 ) continue; - - lineFirstChar = line.charAt( 0 ); - - // @todo invoke passed in handler if any - if ( lineFirstChar === '#' ) continue; - - if ( lineFirstChar === 'v' ) { - - var data = line.split( /\s+/ ); - - switch ( data[ 0 ] ) { - - case 'v': - state.vertices.push( - parseFloat( data[ 1 ] ), - parseFloat( data[ 2 ] ), - parseFloat( data[ 3 ] ) - ); - if ( data.length === 8 ) { - - state.colors.push( - parseFloat( data[ 4 ] ), - parseFloat( data[ 5 ] ), - parseFloat( data[ 6 ] ) - - ); - - } - break; - case 'vn': - state.normals.push( - parseFloat( data[ 1 ] ), - parseFloat( data[ 2 ] ), - parseFloat( data[ 3 ] ) - ); - break; - case 'vt': - state.uvs.push( - parseFloat( data[ 1 ] ), - parseFloat( data[ 2 ] ) - ); - break; - - } - - } else if ( lineFirstChar === 'f' ) { - - var lineData = line.substr( 1 ).trim(); - var vertexData = lineData.split( /\s+/ ); - var faceVertices = []; - - // Parse the face vertex data into an easy to work with format - - for ( var j = 0, jl = vertexData.length; j < jl; j ++ ) { - - var vertex = vertexData[ j ]; - - if ( vertex.length > 0 ) { - - var vertexParts = vertex.split( '/' ); - faceVertices.push( vertexParts ); - - } - - } - - // Draw an edge between the first vertex and all subsequent vertices to form an n-gon - - var v1 = faceVertices[ 0 ]; - - for ( var j = 1, jl = faceVertices.length - 1; j < jl; j ++ ) { - - var v2 = faceVertices[ j ]; - var v3 = faceVertices[ j + 1 ]; - - state.addFace( - v1[ 0 ], v2[ 0 ], v3[ 0 ], - v1[ 1 ], v2[ 1 ], v3[ 1 ], - v1[ 2 ], v2[ 2 ], v3[ 2 ] - ); - - } - - } else if ( lineFirstChar === 'l' ) { - - var lineParts = line.substring( 1 ).trim().split( " " ); - var lineVertices = [], lineUVs = []; - - if ( line.indexOf( "/" ) === - 1 ) { - - lineVertices = lineParts; - - } else { - - for ( var li = 0, llen = lineParts.length; li < llen; li ++ ) { - - var parts = lineParts[ li ].split( "/" ); - - if ( parts[ 0 ] !== "" ) lineVertices.push( parts[ 0 ] ); - if ( parts[ 1 ] !== "" ) lineUVs.push( parts[ 1 ] ); - - } - - } - state.addLineGeometry( lineVertices, lineUVs ); - - } else if ( ( result = object_pattern.exec( line ) ) !== null ) { - - // o object_name - // or - // g group_name - - // WORKAROUND: https://bugs.chromium.org/p/v8/issues/detail?id=2869 - // var name = result[ 0 ].substr( 1 ).trim(); - var name = ( " " + result[ 0 ].substr( 1 ).trim() ).substr( 1 ); - - state.startObject( name ); - - } else if ( material_use_pattern.test( line ) ) { - - // material - - state.object.startMaterial( line.substring( 7 ).trim(), state.materialLibraries ); - - } else if ( material_library_pattern.test( line ) ) { - - // mtl file - - state.materialLibraries.push( line.substring( 7 ).trim() ); - - } else if ( lineFirstChar === 's' ) { - - result = line.split( ' ' ); - - // smooth shading - - // @todo Handle files that have varying smooth values for a set of faces inside one geometry, - // but does not define a usemtl for each face set. - // This should be detected and a dummy material created (later MultiMaterial and geometry groups). - // This requires some care to not create extra material on each smooth value for "normal" obj files. - // where explicit usemtl defines geometry groups. - // Example asset: examples/models/obj/cerberus/Cerberus.obj - - /* - * http://paulbourke.net/dataformats/obj/ - * or - * http://www.cs.utah.edu/~boulos/cs3505/obj_spec.pdf - * - * From chapter "Grouping" Syntax explanation "s group_number": - * "group_number is the smoothing group number. To turn off smoothing groups, use a value of 0 or off. - * Polygonal elements use group numbers to put elements in different smoothing groups. For free-form - * surfaces, smoothing groups are either turned on or off; there is no difference between values greater - * than 0." - */ - if ( result.length > 1 ) { - - var value = result[ 1 ].trim().toLowerCase(); - state.object.smooth = ( value !== '0' && value !== 'off' ); - - } else { - - // ZBrush can produce "s" lines #11707 - state.object.smooth = true; - - } - var material = state.object.currentMaterial(); - if ( material ) material.smooth = state.object.smooth; - - } else { - - // Handle null terminated files without exception - if ( line === '\0' ) continue; - - throw new Error( 'THREE.OBJLoader: Unexpected line: "' + line + '"' ); - - } - - } - - state.finalize(); - - var container = new THREE.Group(); - container.materialLibraries = [].concat( state.materialLibraries ); - - for ( var i = 0, l = state.objects.length; i < l; i ++ ) { - - var object = state.objects[ i ]; - var geometry = object.geometry; - var materials = object.materials; - var isLine = ( geometry.type === 'Line' ); - - // Skip o/g line declarations that did not follow with any faces - if ( geometry.vertices.length === 0 ) continue; - - var buffergeometry = new THREE.BufferGeometry(); - - buffergeometry.addAttribute( 'position', new THREE.Float32BufferAttribute( geometry.vertices, 3 ) ); - - if ( geometry.normals.length > 0 ) { - - buffergeometry.addAttribute( 'normal', new THREE.Float32BufferAttribute( geometry.normals, 3 ) ); - - } else { - - buffergeometry.computeVertexNormals(); - - } - - if ( geometry.colors.length > 0 ) { - - buffergeometry.addAttribute( 'color', new THREE.Float32BufferAttribute( geometry.colors, 3 ) ); - - } - - if ( geometry.uvs.length > 0 ) { - - buffergeometry.addAttribute( 'uv', new THREE.Float32BufferAttribute( geometry.uvs, 2 ) ); - - } - - // Create materials - - var createdMaterials = []; - - for ( var mi = 0, miLen = materials.length; mi < miLen; mi ++ ) { - - var sourceMaterial = materials[ mi ]; - var material = undefined; - - if ( this.materials !== null ) { - - material = this.materials.create( sourceMaterial.name ); - - // mtl etc. loaders probably can't create line materials correctly, copy properties to a line material. - if ( isLine && material && ! ( material instanceof THREE.LineBasicMaterial ) ) { - - var materialLine = new THREE.LineBasicMaterial(); - materialLine.copy( material ); - material = materialLine; - - } - - } - - if ( ! material ) { - - material = ( ! isLine ? new THREE.MeshPhongMaterial() : new THREE.LineBasicMaterial() ); - material.name = sourceMaterial.name; - - } - - material.flatShading = sourceMaterial.smooth ? false : true; - - createdMaterials.push( material ); - - } - - // Create mesh - - var mesh; - - if ( createdMaterials.length > 1 ) { - - for ( var mi = 0, miLen = materials.length; mi < miLen; mi ++ ) { - - var sourceMaterial = materials[ mi ]; - buffergeometry.addGroup( sourceMaterial.groupStart, sourceMaterial.groupCount, mi ); - - } - - mesh = ( ! isLine ? new THREE.Mesh( buffergeometry, createdMaterials ) : new THREE.LineSegments( buffergeometry, createdMaterials ) ); - - } else { - - mesh = ( ! isLine ? new THREE.Mesh( buffergeometry, createdMaterials[ 0 ] ) : new THREE.LineSegments( buffergeometry, createdMaterials[ 0 ] ) ); - - } - - mesh.name = object.name; - - container.add( mesh ); - - } - - console.timeEnd( 'OBJLoader' ); - - return container; - - } - - }; - - return OBJLoader; - -} )(); diff --git a/libs/other/OrbitControls.js b/libs/other/OrbitControls.js deleted file mode 100644 index e3caef2..0000000 --- a/libs/other/OrbitControls.js +++ /dev/null @@ -1,625 +0,0 @@ -/** - * @author qiao / https://github.com/qiao - * @author mrdoob / http://mrdoob.com - * @author alteredq / http://alteredqualia.com/ - * @author WestLangley / http://github.com/WestLangley - * @author erich666 / http://erichaines.com - */ -/*global THREE, console */ - -// This set of controls performs orbiting, dollying (zooming), and panning. It maintains -// the "up" direction as +Y, unlike the TrackballControls. Touch on tablet and phones is -// supported. -// -// Orbit - left mouse / touch: one finger move -// Zoom - middle mouse, or mousewheel / touch: two finger spread or squish -// Pan - right mouse, or arrow keys / touch: three finter swipe -// -// This is a drop-in replacement for (most) TrackballControls used in examples. -// That is, include this js file and wherever you see: -// controls = new THREE.TrackballControls( camera ); -// controls.target.z = 150; -// Simple substitute "OrbitControls" and the control should work as-is. - -THREE.OrbitControls = function ( object, domElement ) { - - this.object = object; - this.domElement = ( domElement !== undefined ) ? domElement : document; - - // API - - // Set to false to disable this control - this.enabled = true; - - // "target" sets the location of focus, where the control orbits around - // and where it pans with respect to. - this.target = new THREE.Vector3(); - - // center is old, deprecated; use "target" instead - this.center = this.target; - - // This option actually enables dollying in and out; left as "zoom" for - // backwards compatibility - this.noZoom = false; - this.zoomSpeed = 1.0; - - // Limits to how far you can dolly in and out - this.minDistance = 0; - this.maxDistance = Infinity; - - // Set to true to disable this control - this.noRotate = false; - this.rotateSpeed = 1.0; - - // Set to true to disable this control - this.noPan = false; - this.keyPanSpeed = 7.0; // pixels moved per arrow key push - - // Set to true to automatically rotate around the target - this.autoRotate = false; - this.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60 - - // How far you can orbit vertically, upper and lower limits. - // Range is 0 to Math.PI radians. - this.minPolarAngle = 0; // radians - this.maxPolarAngle = Math.PI; // radians - - // Set to true to disable use of the keys - this.noKeys = false; - - // The four arrow keys - this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 }; - - //////////// - // internals - - var scope = this; - - var EPS = 0.000001; - - var rotateStart = new THREE.Vector2(); - var rotateEnd = new THREE.Vector2(); - var rotateDelta = new THREE.Vector2(); - - var panStart = new THREE.Vector2(); - var panEnd = new THREE.Vector2(); - var panDelta = new THREE.Vector2(); - var panOffset = new THREE.Vector3(); - - var offset = new THREE.Vector3(); - - var dollyStart = new THREE.Vector2(); - var dollyEnd = new THREE.Vector2(); - var dollyDelta = new THREE.Vector2(); - - var phiDelta = 0; - var thetaDelta = 0; - var scale = 1; - var pan = new THREE.Vector3(); - - var lastPosition = new THREE.Vector3(); - - var STATE = { NONE : -1, ROTATE : 0, DOLLY : 1, PAN : 2, TOUCH_ROTATE : 3, TOUCH_DOLLY : 4, TOUCH_PAN : 5 }; - - var state = STATE.NONE; - - // for reset - - this.target0 = this.target.clone(); - this.position0 = this.object.position.clone(); - - // events - - var changeEvent = { type: 'change' }; - var startEvent = { type: 'start'}; - var endEvent = { type: 'end'}; - - this.rotateLeft = function ( angle ) { - - if ( angle === undefined ) { - - angle = getAutoRotationAngle(); - - } - - thetaDelta -= angle; - - }; - - this.rotateUp = function ( angle ) { - - if ( angle === undefined ) { - - angle = getAutoRotationAngle(); - - } - - phiDelta -= angle; - - }; - - // pass in distance in world space to move left - this.panLeft = function ( distance ) { - - var te = this.object.matrix.elements; - - // get X column of matrix - panOffset.set( te[ 0 ], te[ 1 ], te[ 2 ] ); - panOffset.multiplyScalar( - distance ); - - pan.add( panOffset ); - - }; - - // pass in distance in world space to move up - this.panUp = function ( distance ) { - - var te = this.object.matrix.elements; - - // get Y column of matrix - panOffset.set( te[ 4 ], te[ 5 ], te[ 6 ] ); - panOffset.multiplyScalar( distance ); - - pan.add( panOffset ); - - }; - - // pass in x,y of change desired in pixel space, - // right and down are positive - this.pan = function ( deltaX, deltaY ) { - - var element = scope.domElement === document ? scope.domElement.body : scope.domElement; - - if ( scope.object.fov !== undefined ) { - - // perspective - var position = scope.object.position; - var offset = position.clone().sub( scope.target ); - var targetDistance = offset.length(); - - // half of the fov is center to top of screen - targetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 ); - - // we actually don't use screenWidth, since perspective camera is fixed to screen height - scope.panLeft( 2 * deltaX * targetDistance / element.clientHeight ); - scope.panUp( 2 * deltaY * targetDistance / element.clientHeight ); - - } else if ( scope.object.top !== undefined ) { - - // orthographic - scope.panLeft( deltaX * (scope.object.right - scope.object.left) / element.clientWidth ); - scope.panUp( deltaY * (scope.object.top - scope.object.bottom) / element.clientHeight ); - - } else { - - // camera neither orthographic or perspective - console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' ); - - } - - }; - - this.dollyIn = function ( dollyScale ) { - - if ( dollyScale === undefined ) { - - dollyScale = getZoomScale(); - - } - - scale /= dollyScale; - - }; - - this.dollyOut = function ( dollyScale ) { - - if ( dollyScale === undefined ) { - - dollyScale = getZoomScale(); - - } - - scale *= dollyScale; - - }; - - this.update = function () { - - var position = this.object.position; - - offset.copy( position ).sub( this.target ); - - // angle from z-axis around y-axis - - var theta = Math.atan2( offset.x, offset.z ); - - // angle from y-axis - - var phi = Math.atan2( Math.sqrt( offset.x * offset.x + offset.z * offset.z ), offset.y ); - - if ( this.autoRotate ) { - - this.rotateLeft( getAutoRotationAngle() ); - - } - - theta += thetaDelta; - phi += phiDelta; - - // restrict phi to be between desired limits - phi = Math.max( this.minPolarAngle, Math.min( this.maxPolarAngle, phi ) ); - - // restrict phi to be betwee EPS and PI-EPS - phi = Math.max( EPS, Math.min( Math.PI - EPS, phi ) ); - - var radius = offset.length() * scale; - - // restrict radius to be between desired limits - radius = Math.max( this.minDistance, Math.min( this.maxDistance, radius ) ); - - // move target to panned location - this.target.add( pan ); - - offset.x = radius * Math.sin( phi ) * Math.sin( theta ); - offset.y = radius * Math.cos( phi ); - offset.z = radius * Math.sin( phi ) * Math.cos( theta ); - - position.copy( this.target ).add( offset ); - - this.object.lookAt( this.target ); - - thetaDelta = 0; - phiDelta = 0; - scale = 1; - pan.set( 0, 0, 0 ); - - if ( lastPosition.distanceTo( this.object.position ) > 0 ) { - - this.dispatchEvent( changeEvent ); - - lastPosition.copy( this.object.position ); - - } - - }; - - - this.reset = function () { - - state = STATE.NONE; - - this.target.copy( this.target0 ); - this.object.position.copy( this.position0 ); - - this.update(); - - }; - - function getAutoRotationAngle() { - - return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed; - - } - - function getZoomScale() { - - return Math.pow( 0.95, scope.zoomSpeed ); - - } - - function onMouseDown( event ) { - - if ( scope.enabled === false ) return; - event.preventDefault(); - - if ( event.button === 0 ) { - if ( scope.noRotate === true ) return; - - state = STATE.ROTATE; - - rotateStart.set( event.clientX, event.clientY ); - - } else if ( event.button === 1 ) { - if ( scope.noZoom === true ) return; - - state = STATE.DOLLY; - - dollyStart.set( event.clientX, event.clientY ); - - } else if ( event.button === 2 ) { - if ( scope.noPan === true ) return; - - state = STATE.PAN; - - panStart.set( event.clientX, event.clientY ); - - } - - scope.domElement.addEventListener( 'mousemove', onMouseMove, false ); - scope.domElement.addEventListener( 'mouseup', onMouseUp, false ); - scope.dispatchEvent( startEvent ); - - } - - function onMouseMove( event ) { - - if ( scope.enabled === false ) return; - - event.preventDefault(); - - var element = scope.domElement === document ? scope.domElement.body : scope.domElement; - - if ( state === STATE.ROTATE ) { - - if ( scope.noRotate === true ) return; - - rotateEnd.set( event.clientX, event.clientY ); - rotateDelta.subVectors( rotateEnd, rotateStart ); - - // rotating across whole screen goes 360 degrees around - scope.rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed ); - - // rotating up and down along whole screen attempts to go 360, but limited to 180 - scope.rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed ); - - rotateStart.copy( rotateEnd ); - - } else if ( state === STATE.DOLLY ) { - - if ( scope.noZoom === true ) return; - - dollyEnd.set( event.clientX, event.clientY ); - dollyDelta.subVectors( dollyEnd, dollyStart ); - - if ( dollyDelta.y > 0 ) { - - scope.dollyIn(); - - } else { - - scope.dollyOut(); - - } - - dollyStart.copy( dollyEnd ); - - } else if ( state === STATE.PAN ) { - - if ( scope.noPan === true ) return; - - panEnd.set( event.clientX, event.clientY ); - panDelta.subVectors( panEnd, panStart ); - - scope.pan( panDelta.x, panDelta.y ); - - panStart.copy( panEnd ); - - } - - scope.update(); - - } - - function onMouseUp( /* event */ ) { - - if ( scope.enabled === false ) return; - - scope.domElement.removeEventListener( 'mousemove', onMouseMove, false ); - scope.domElement.removeEventListener( 'mouseup', onMouseUp, false ); - scope.dispatchEvent( endEvent ); - state = STATE.NONE; - - } - - function onMouseWheel( event ) { - - if ( scope.enabled === false || scope.noZoom === true ) return; - - event.preventDefault(); - - var delta = 0; - - if ( event.wheelDelta !== undefined ) { // WebKit / Opera / Explorer 9 - - delta = event.wheelDelta; - - } else if ( event.detail !== undefined ) { // Firefox - - delta = - event.detail; - - } - - if ( delta > 0 ) { - - scope.dollyOut(); - - } else { - - scope.dollyIn(); - - } - - scope.update(); - scope.dispatchEvent( startEvent ); - scope.dispatchEvent( endEvent ); - - } - - function onKeyDown( event ) { - - if ( scope.enabled === false || scope.noKeys === true || scope.noPan === true ) return; - - switch ( event.keyCode ) { - - case scope.keys.UP: - scope.pan( 0, scope.keyPanSpeed ); - scope.update(); - break; - - case scope.keys.BOTTOM: - scope.pan( 0, - scope.keyPanSpeed ); - scope.update(); - break; - - case scope.keys.LEFT: - scope.pan( scope.keyPanSpeed, 0 ); - scope.update(); - break; - - case scope.keys.RIGHT: - scope.pan( - scope.keyPanSpeed, 0 ); - scope.update(); - break; - - } - - } - - function touchstart( event ) { - - if ( scope.enabled === false ) return; - - switch ( event.touches.length ) { - - case 1: // one-fingered touch: rotate - - if ( scope.noRotate === true ) return; - - state = STATE.TOUCH_ROTATE; - - rotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); - break; - - case 2: // two-fingered touch: dolly - - if ( scope.noZoom === true ) return; - - state = STATE.TOUCH_DOLLY; - - var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; - var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; - var distance = Math.sqrt( dx * dx + dy * dy ); - dollyStart.set( 0, distance ); - break; - - case 3: // three-fingered touch: pan - - if ( scope.noPan === true ) return; - - state = STATE.TOUCH_PAN; - - panStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); - break; - - default: - - state = STATE.NONE; - - } - - scope.dispatchEvent( startEvent ); - - } - - function touchmove( event ) { - - if ( scope.enabled === false ) return; - - event.preventDefault(); - event.stopPropagation(); - - var element = scope.domElement === document ? scope.domElement.body : scope.domElement; - - switch ( event.touches.length ) { - - case 1: // one-fingered touch: rotate - - if ( scope.noRotate === true ) return; - if ( state !== STATE.TOUCH_ROTATE ) return; - - rotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); - rotateDelta.subVectors( rotateEnd, rotateStart ); - - // rotating across whole screen goes 360 degrees around - scope.rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed ); - // rotating up and down along whole screen attempts to go 360, but limited to 180 - scope.rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed ); - - rotateStart.copy( rotateEnd ); - - scope.update(); - break; - - case 2: // two-fingered touch: dolly - - if ( scope.noZoom === true ) return; - if ( state !== STATE.TOUCH_DOLLY ) return; - - var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; - var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; - var distance = Math.sqrt( dx * dx + dy * dy ); - - dollyEnd.set( 0, distance ); - dollyDelta.subVectors( dollyEnd, dollyStart ); - - if ( dollyDelta.y > 0 ) { - - scope.dollyOut(); - - } else { - - scope.dollyIn(); - - } - - dollyStart.copy( dollyEnd ); - - scope.update(); - break; - - case 3: // three-fingered touch: pan - - if ( scope.noPan === true ) return; - if ( state !== STATE.TOUCH_PAN ) return; - - panEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); - panDelta.subVectors( panEnd, panStart ); - - scope.pan( panDelta.x, panDelta.y ); - - panStart.copy( panEnd ); - - scope.update(); - break; - - default: - - state = STATE.NONE; - - } - - } - - function touchend( /* event */ ) { - - if ( scope.enabled === false ) return; - - scope.dispatchEvent( endEvent ); - state = STATE.NONE; - - } - - this.domElement.addEventListener( 'contextmenu', function ( event ) { event.preventDefault(); }, false ); - this.domElement.addEventListener( 'mousedown', onMouseDown, false ); - this.domElement.addEventListener( 'mousewheel', onMouseWheel, false ); - this.domElement.addEventListener( 'DOMMouseScroll', onMouseWheel, false ); // firefox - - this.domElement.addEventListener( 'touchstart', touchstart, false ); - this.domElement.addEventListener( 'touchend', touchend, false ); - this.domElement.addEventListener( 'touchmove', touchmove, false ); - - window.addEventListener( 'keydown', onKeyDown, false ); - -}; - -THREE.OrbitControls.prototype = Object.create( THREE.EventDispatcher.prototype ); \ No newline at end of file diff --git a/libs/other/PLYLoader.js b/libs/other/PLYLoader.js deleted file mode 100644 index 16d6d18..0000000 --- a/libs/other/PLYLoader.js +++ /dev/null @@ -1,498 +0,0 @@ -/** - * @author Wei Meng / http://about.me/menway - * - * Utilizes Three.js which is made available under the MIT license. - * Copyright © 2010-2015 three.js authors Ricardo Cabello (mrdoob) - * Description: A THREE loader for PLY ASCII files (known as the Polygon - * File Format or the Stanford Triangle Format). - * - * Limitations: ASCII decoding assumes file is UTF-8. - * - * Usage: - * var loader = new THREE.PLYLoader(); - * loader.load('./models/ply/ascii/dolphins.ply', function (geometry) { - * - * scene.add( new THREE.Mesh( geometry ) ); - * - * } ); - * - * If the PLY file uses non standard property names, they can be mapped while - * loading. For example, the following maps the properties - * “diffuse_(red|green|blue)” in the file to standard color names. - * - * loader.setPropertyNameMapping( { - * diffuse_red: 'red', - * diffuse_green: 'green', - * diffuse_blue: 'blue' - * } ); - * - */ - - -THREE.PLYLoader = function ( manager ) { - - this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; - - this.propertyNameMapping = {}; - -}; - -THREE.PLYLoader.prototype = { - - constructor: THREE.PLYLoader, - - load: function ( url, onLoad, onProgress, onError ) { - - var scope = this; - - var loader = new THREE.FileLoader( this.manager ); - loader.setResponseType( 'arraybuffer' ); - loader.load( url, function ( text ) { - - onLoad( scope.parse( text ) ); - - }, onProgress, onError ); - - }, - - setPropertyNameMapping: function ( mapping ) { - - this.propertyNameMapping = mapping; - - }, - - parse: function ( data ) { - - function isASCII( data ) { - - var header = parseHeader( bin2str( data ) ); - return header.format === 'ascii'; - - } - - function bin2str( buf ) { - - var array_buffer = new Uint8Array( buf ); - var str = ''; - - for ( var i = 0; i < buf.byteLength; i ++ ) { - - str += String.fromCharCode( array_buffer[ i ] ); // implicitly assumes little-endian - - } - - return str; - - } - - function parseHeader( data ) { - - var patternHeader = /ply([\s\S]*)end_header\s/; - var headerText = ''; - var headerLength = 0; - var result = patternHeader.exec( data ); - - if ( result !== null ) { - - headerText = result [ 1 ]; - headerLength = result[ 0 ].length; - - } - - var header = { - comments: [], - elements: [], - headerLength: headerLength - }; - - var lines = headerText.split( '\n' ); - var currentElement; - var lineType, lineValues; - - function make_ply_element_property( propertValues, propertyNameMapping ) { - - var property = { type: propertValues[ 0 ] }; - - if ( property.type === 'list' ) { - - property.name = propertValues[ 3 ]; - property.countType = propertValues[ 1 ]; - property.itemType = propertValues[ 2 ]; - - } else { - - property.name = propertValues[ 1 ]; - - } - - if ( property.name in propertyNameMapping ) { - - property.name = propertyNameMapping[ property.name ]; - - } - - return property; - - } - - for ( var i = 0; i < lines.length; i ++ ) { - - var line = lines[ i ]; - line = line.trim(); - - if ( line === '' ) continue; - - lineValues = line.split( /\s+/ ); - lineType = lineValues.shift(); - line = lineValues.join( ' ' ); - - switch ( lineType ) { - - case 'format': - - header.format = lineValues[ 0 ]; - header.version = lineValues[ 1 ]; - - break; - - case 'comment': - - header.comments.push( line ); - - break; - - case 'element': - - if ( currentElement !== undefined ) { - - header.elements.push( currentElement ); - - } - - currentElement = {}; - currentElement.name = lineValues[ 0 ]; - currentElement.count = parseInt( lineValues[ 1 ] ); - currentElement.properties = []; - - break; - - case 'property': - - currentElement.properties.push( make_ply_element_property( lineValues, scope.propertyNameMapping ) ); - - break; - - - default: - - console.log( 'unhandled', lineType, lineValues ); - - } - - } - - if ( currentElement !== undefined ) { - - header.elements.push( currentElement ); - - } - - return header; - - } - - function parseASCIINumber( n, type ) { - - switch ( type ) { - - case 'char': case 'uchar': case 'short': case 'ushort': case 'int': case 'uint': - case 'int8': case 'uint8': case 'int16': case 'uint16': case 'int32': case 'uint32': - - return parseInt( n ); - - case 'float': case 'double': case 'float32': case 'float64': - - return parseFloat( n ); - - } - - } - - function parseASCIIElement( properties, line ) { - - var values = line.split( /\s+/ ); - - var element = {}; - - for ( var i = 0; i < properties.length; i ++ ) { - - if ( properties[ i ].type === 'list' ) { - - var list = []; - var n = parseASCIINumber( values.shift(), properties[ i ].countType ); - - for ( var j = 0; j < n; j ++ ) { - - list.push( parseASCIINumber( values.shift(), properties[ i ].itemType ) ); - - } - - element[ properties[ i ].name ] = list; - - } else { - - element[ properties[ i ].name ] = parseASCIINumber( values.shift(), properties[ i ].type ); - - } - - } - - return element; - - } - - function parseASCII( data ) { - - // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format) - - var buffer = { - indices : [], - vertices : [], - normals : [], - uvs : [], - colors : [] - }; - - var result; - - var header = parseHeader( data ); - - var patternBody = /end_header\s([\s\S]*)$/; - var body = ''; - if ( ( result = patternBody.exec( data ) ) !== null ) { - - body = result [ 1 ]; - - } - - var lines = body.split( '\n' ); - var currentElement = 0; - var currentElementCount = 0; - - for ( var i = 0; i < lines.length; i ++ ) { - - var line = lines[ i ]; - line = line.trim(); - if ( line === '' ) { - - continue; - - } - - if ( currentElementCount >= header.elements[ currentElement ].count ) { - - currentElement ++; - currentElementCount = 0; - - } - - var element = parseASCIIElement( header.elements[ currentElement ].properties, line ); - - handleElement( buffer, header.elements[ currentElement ].name, element ); - - currentElementCount ++; - - } - - return postProcess( buffer ); - - } - - function postProcess( buffer ) { - - var geometry = new THREE.BufferGeometry(); - - // mandatory buffer data - - geometry.setIndex( new ( buffer.indices.length > 65535 ? THREE.Uint32BufferAttribute : THREE.Uint16BufferAttribute )( buffer.indices, 1 ) ); - geometry.addAttribute( 'position', new THREE.Float32BufferAttribute( buffer.vertices, 3 ) ); - - // optional buffer data - - if ( buffer.normals.length > 0 ) { - - geometry.addAttribute( 'normal', new THREE.Float32BufferAttribute( buffer.normals, 3 ) ); - - } - - if ( buffer.uvs.length > 0 ) { - - geometry.addAttribute( 'uv', new THREE.Float32BufferAttribute( buffer.uvs, 2 ) ); - - } - - if ( buffer.colors.length > 0 ) { - - geometry.addAttribute( 'color', new THREE.Float32BufferAttribute( buffer.colors, 3 ) ); - - } - - geometry.computeBoundingSphere(); - - return geometry; - - } - - function handleElement( buffer, elementName, element ) { - - if ( elementName === 'vertex' ) { - - buffer.vertices.push( element.x, element.y, element.z ); - - if ( 'nx' in element && 'ny' in element && 'nz' in element ) { - - buffer.normals.push( element.nx, element.ny, element.nz ); - - } - - if ( 's' in element && 't' in element ) { - - buffer.uvs.push( element.s, element.t ); - - } - - if ( 'red' in element && 'green' in element && 'blue' in element ) { - - buffer.colors.push( element.red / 255.0, element.green / 255.0, element.blue / 255.0 ); - - } - - } else if ( elementName === 'face' ) { - - var vertex_indices = element.vertex_indices || element.vertex_index; // issue #9338 - - if ( vertex_indices.length === 3 ) { - - buffer.indices.push( vertex_indices[ 0 ], vertex_indices[ 1 ], vertex_indices[ 2 ] ); - - } else if ( vertex_indices.length === 4 ) { - - buffer.indices.push( vertex_indices[ 0 ], vertex_indices[ 1 ], vertex_indices[ 3 ] ); - buffer.indices.push( vertex_indices[ 1 ], vertex_indices[ 2 ], vertex_indices[ 3 ] ); - - } - - } - - } - - function binaryRead( dataview, at, type, little_endian ) { - - switch ( type ) { - - // corespondences for non-specific length types here match rply: - case 'int8': case 'char': return [ dataview.getInt8( at ), 1 ]; - case 'uint8': case 'uchar': return [ dataview.getUint8( at ), 1 ]; - case 'int16': case 'short': return [ dataview.getInt16( at, little_endian ), 2 ]; - case 'uint16': case 'ushort': return [ dataview.getUint16( at, little_endian ), 2 ]; - case 'int32': case 'int': return [ dataview.getInt32( at, little_endian ), 4 ]; - case 'uint32': case 'uint': return [ dataview.getUint32( at, little_endian ), 4 ]; - case 'float32': case 'float': return [ dataview.getFloat32( at, little_endian ), 4 ]; - case 'float64': case 'double': return [ dataview.getFloat64( at, little_endian ), 8 ]; - - } - - } - - function binaryReadElement( dataview, at, properties, little_endian ) { - - var element = {}; - var result, read = 0; - - for ( var i = 0; i < properties.length; i ++ ) { - - if ( properties[ i ].type === 'list' ) { - - var list = []; - - result = binaryRead( dataview, at + read, properties[ i ].countType, little_endian ); - var n = result[ 0 ]; - read += result[ 1 ]; - - for ( var j = 0; j < n; j ++ ) { - - result = binaryRead( dataview, at + read, properties[ i ].itemType, little_endian ); - list.push( result[ 0 ] ); - read += result[ 1 ]; - - } - - element[ properties[ i ].name ] = list; - - } else { - - result = binaryRead( dataview, at + read, properties[ i ].type, little_endian ); - element[ properties[ i ].name ] = result[ 0 ]; - read += result[ 1 ]; - - } - - } - - return [ element, read ]; - - } - - function parseBinary( data ) { - - var buffer = { - indices : [], - vertices : [], - normals : [], - uvs : [], - colors : [] - }; - - var header = parseHeader( bin2str( data ) ); - var little_endian = ( header.format === 'binary_little_endian' ); - var body = new DataView( data, header.headerLength ); - var result, loc = 0; - - for ( var currentElement = 0; currentElement < header.elements.length; currentElement ++ ) { - - for ( var currentElementCount = 0; currentElementCount < header.elements[ currentElement ].count; currentElementCount ++ ) { - - result = binaryReadElement( body, loc, header.elements[ currentElement ].properties, little_endian ); - loc += result[ 1 ]; - var element = result[ 0 ]; - - handleElement( buffer, header.elements[ currentElement ].name, element ); - - } - - } - - return postProcess( buffer ); - - } - - // - - var geometry; - var scope = this; - - if ( data instanceof ArrayBuffer ) { - - geometry = isASCII( data ) ? parseASCII( bin2str( data ) ) : parseBinary( data ); - - } else { - - geometry = parseASCII( data ); - - } - - return geometry; - - } - -}; diff --git a/libs/other/dat.gui.min.js b/libs/other/dat.gui.min.js deleted file mode 100644 index e4209ba..0000000 --- a/libs/other/dat.gui.min.js +++ /dev/null @@ -1,91 +0,0 @@ -/*! - * dat-gui JavaScript Controller Library - * http://code.google.com/p/dat-gui - * Copyright 2011 Data Arts Team, Google Creative Lab - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - */ -var dat=dat||{};dat.gui=dat.gui||{};dat.utils=dat.utils||{};dat.controllers=dat.controllers||{};dat.dom=dat.dom||{};dat.color=dat.color||{};dat.utils.css=function(){return{load:function(e,a){a=a||document;var b=a.createElement("link");b.type="text/css";b.rel="stylesheet";b.href=e;a.getElementsByTagName("head")[0].appendChild(b)},inject:function(e,a){a=a||document;var b=document.createElement("style");b.type="text/css";b.innerHTML=e;a.getElementsByTagName("head")[0].appendChild(b)}}}(); -dat.utils.common=function(){var e=Array.prototype.forEach,a=Array.prototype.slice;return{BREAK:{},extend:function(b){this.each(a.call(arguments,1),function(a){for(var f in a)this.isUndefined(a[f])||(b[f]=a[f])},this);return b},defaults:function(b){this.each(a.call(arguments,1),function(a){for(var f in a)this.isUndefined(b[f])&&(b[f]=a[f])},this);return b},compose:function(){var b=a.call(arguments);return function(){for(var d=a.call(arguments),f=b.length-1;0<=f;f--)d=[b[f].apply(this,d)];return d[0]}}, -each:function(a,d,f){if(e&&a.forEach===e)a.forEach(d,f);else if(a.length===a.length+0)for(var c=0,p=a.length;cthis.__max&&(a=this.__max);void 0!==this.__step&&0!=a%this.__step&&(a=Math.round(a/this.__step)*this.__step);return b.superclass.prototype.setValue.call(this,a)},min:function(a){this.__min=a;return this},max:function(a){this.__max=a;return this},step:function(a){this.__step=a;return this}});return b}(dat.controllers.Controller,dat.utils.common); -dat.controllers.NumberControllerBox=function(e,a,b){var d=function(f,c,e){function k(){var a=parseFloat(n.__input.value);b.isNaN(a)||n.setValue(a)}function l(a){var c=r-a.clientY;n.setValue(n.getValue()+c*n.__impliedStep);r=a.clientY}function q(){a.unbind(window,"mousemove",l);a.unbind(window,"mouseup",q)}this.__truncationSuspended=!1;d.superclass.call(this,f,c,e);var n=this,r;this.__input=document.createElement("input");this.__input.setAttribute("type","text");a.bind(this.__input,"change",k);a.bind(this.__input, -"blur",function(){k();n.__onFinishChange&&n.__onFinishChange.call(n,n.getValue())});a.bind(this.__input,"mousedown",function(c){a.bind(window,"mousemove",l);a.bind(window,"mouseup",q);r=c.clientY});a.bind(this.__input,"keydown",function(a){13===a.keyCode&&(n.__truncationSuspended=!0,this.blur(),n.__truncationSuspended=!1)});this.updateDisplay();this.domElement.appendChild(this.__input)};d.superclass=e;b.extend(d.prototype,e.prototype,{updateDisplay:function(){var a=this.__input,c;if(this.__truncationSuspended)c= -this.getValue();else{c=this.getValue();var b=Math.pow(10,this.__precision);c=Math.round(c*b)/b}a.value=c;return d.superclass.prototype.updateDisplay.call(this)}});return d}(dat.controllers.NumberController,dat.dom.dom,dat.utils.common); -dat.controllers.NumberControllerSlider=function(e,a,b,d,f){function c(a,c,d,b,f){return b+(a-c)/(d-c)*(f-b)}var p=function(d,b,f,e,r){function y(d){d.preventDefault();var b=a.getOffset(h.__background),f=a.getWidth(h.__background);h.setValue(c(d.clientX,b.left,b.left+f,h.__min,h.__max));return!1}function g(){a.unbind(window,"mousemove",y);a.unbind(window,"mouseup",g);h.__onFinishChange&&h.__onFinishChange.call(h,h.getValue())}p.superclass.call(this,d,b,{min:f,max:e,step:r});var h=this;this.__background= -document.createElement("div");this.__foreground=document.createElement("div");a.bind(this.__background,"mousedown",function(c){a.bind(window,"mousemove",y);a.bind(window,"mouseup",g);y(c)});a.addClass(this.__background,"slider");a.addClass(this.__foreground,"slider-fg");this.updateDisplay();this.__background.appendChild(this.__foreground);this.domElement.appendChild(this.__background)};p.superclass=e;p.useDefaultStyles=function(){b.inject(f)};d.extend(p.prototype,e.prototype,{updateDisplay:function(){var a= -(this.getValue()-this.__min)/(this.__max-this.__min);this.__foreground.style.width=100*a+"%";return p.superclass.prototype.updateDisplay.call(this)}});return p}(dat.controllers.NumberController,dat.dom.dom,dat.utils.css,dat.utils.common,"/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\n.slider {\n box-shadow: inset 0 2px 4px rgba(0,0,0,0.15);\n height: 1em;\n border-radius: 1em;\n background-color: #eee;\n padding: 0 0.5em;\n overflow: hidden;\n}\n\n.slider-fg {\n padding: 1px 0 2px 0;\n background-color: #aaa;\n height: 1em;\n margin-left: -0.5em;\n padding-right: 0.5em;\n border-radius: 1em 0 0 1em;\n}\n\n.slider-fg:after {\n display: inline-block;\n border-radius: 1em;\n background-color: #fff;\n border: 1px solid #aaa;\n content: '';\n float: right;\n margin-right: -1em;\n margin-top: -1px;\n height: 0.9em;\n width: 0.9em;\n}"); -dat.controllers.FunctionController=function(e,a,b){var d=function(b,c,e){d.superclass.call(this,b,c);var k=this;this.__button=document.createElement("div");this.__button.innerHTML=void 0===e?"Fire":e;a.bind(this.__button,"click",function(a){a.preventDefault();k.fire();return!1});a.addClass(this.__button,"button");this.domElement.appendChild(this.__button)};d.superclass=e;b.extend(d.prototype,e.prototype,{fire:function(){this.__onChange&&this.__onChange.call(this);this.__onFinishChange&&this.__onFinishChange.call(this, -this.getValue());this.getValue().call(this.object)}});return d}(dat.controllers.Controller,dat.dom.dom,dat.utils.common); -dat.controllers.BooleanController=function(e,a,b){var d=function(b,c){d.superclass.call(this,b,c);var e=this;this.__prev=this.getValue();this.__checkbox=document.createElement("input");this.__checkbox.setAttribute("type","checkbox");a.bind(this.__checkbox,"change",function(){e.setValue(!e.__prev)},!1);this.domElement.appendChild(this.__checkbox);this.updateDisplay()};d.superclass=e;b.extend(d.prototype,e.prototype,{setValue:function(a){a=d.superclass.prototype.setValue.call(this,a);this.__onFinishChange&& -this.__onFinishChange.call(this,this.getValue());this.__prev=this.getValue();return a},updateDisplay:function(){!0===this.getValue()?(this.__checkbox.setAttribute("checked","checked"),this.__checkbox.checked=!0):this.__checkbox.checked=!1;return d.superclass.prototype.updateDisplay.call(this)}});return d}(dat.controllers.Controller,dat.dom.dom,dat.utils.common); -dat.color.toString=function(e){return function(a){if(1==a.a||e.isUndefined(a.a)){for(a=a.hex.toString(16);6>a.length;)a="0"+a;return"#"+a}return"rgba("+Math.round(a.r)+","+Math.round(a.g)+","+Math.round(a.b)+","+a.a+")"}}(dat.utils.common); -dat.color.interpret=function(e,a){var b,d,f=[{litmus:a.isString,conversions:{THREE_CHAR_HEX:{read:function(a){a=a.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);return null===a?!1:{space:"HEX",hex:parseInt("0x"+a[1].toString()+a[1].toString()+a[2].toString()+a[2].toString()+a[3].toString()+a[3].toString())}},write:e},SIX_CHAR_HEX:{read:function(a){a=a.match(/^#([A-F0-9]{6})$/i);return null===a?!1:{space:"HEX",hex:parseInt("0x"+a[1].toString())}},write:e},CSS_RGB:{read:function(a){a=a.match(/^rgb\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/); -return null===a?!1:{space:"RGB",r:parseFloat(a[1]),g:parseFloat(a[2]),b:parseFloat(a[3])}},write:e},CSS_RGBA:{read:function(a){a=a.match(/^rgba\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\,\s*(.+)\s*\)/);return null===a?!1:{space:"RGB",r:parseFloat(a[1]),g:parseFloat(a[2]),b:parseFloat(a[3]),a:parseFloat(a[4])}},write:e}}},{litmus:a.isNumber,conversions:{HEX:{read:function(a){return{space:"HEX",hex:a,conversionName:"HEX"}},write:function(a){return a.hex}}}},{litmus:a.isArray,conversions:{RGB_ARRAY:{read:function(a){return 3!= -a.length?!1:{space:"RGB",r:a[0],g:a[1],b:a[2]}},write:function(a){return[a.r,a.g,a.b]}},RGBA_ARRAY:{read:function(a){return 4!=a.length?!1:{space:"RGB",r:a[0],g:a[1],b:a[2],a:a[3]}},write:function(a){return[a.r,a.g,a.b,a.a]}}}},{litmus:a.isObject,conversions:{RGBA_OBJ:{read:function(c){return a.isNumber(c.r)&&a.isNumber(c.g)&&a.isNumber(c.b)&&a.isNumber(c.a)?{space:"RGB",r:c.r,g:c.g,b:c.b,a:c.a}:!1},write:function(a){return{r:a.r,g:a.g,b:a.b,a:a.a}}},RGB_OBJ:{read:function(c){return a.isNumber(c.r)&& -a.isNumber(c.g)&&a.isNumber(c.b)?{space:"RGB",r:c.r,g:c.g,b:c.b}:!1},write:function(a){return{r:a.r,g:a.g,b:a.b}}},HSVA_OBJ:{read:function(c){return a.isNumber(c.h)&&a.isNumber(c.s)&&a.isNumber(c.v)&&a.isNumber(c.a)?{space:"HSV",h:c.h,s:c.s,v:c.v,a:c.a}:!1},write:function(a){return{h:a.h,s:a.s,v:a.v,a:a.a}}},HSV_OBJ:{read:function(d){return a.isNumber(d.h)&&a.isNumber(d.s)&&a.isNumber(d.v)?{space:"HSV",h:d.h,s:d.s,v:d.v}:!1},write:function(a){return{h:a.h,s:a.s,v:a.v}}}}}];return function(){d=!1; -var c=1\n\n Here\'s the new load parameter for your GUI\'s constructor:\n\n \n\n
        \n\n Automatically save\n values to localStorage on exit.\n\n
        The values saved to localStorage will\n override those passed to dat.GUI\'s constructor. This makes it\n easier to work incrementally, but localStorage is fragile,\n and your friends may not see the same values you do.\n \n
        \n \n
        \n\n
        ', -".dg {\n /** Clear list styles */\n /* Auto-place container */\n /* Auto-placed GUI's */\n /* Line items that don't contain folders. */\n /** Folder names */\n /** Hides closed items */\n /** Controller row */\n /** Name-half (left) */\n /** Controller-half (right) */\n /** Controller placement */\n /** Shorter number boxes when slider is present. */\n /** Ensure the entire boolean and function row shows a hand */ }\n .dg ul {\n list-style: none;\n margin: 0;\n padding: 0;\n width: 100%;\n clear: both; }\n .dg.ac {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 0;\n z-index: 0; }\n .dg:not(.ac) .main {\n /** Exclude mains in ac so that we don't hide close button */\n overflow: hidden; }\n .dg.main {\n -webkit-transition: opacity 0.1s linear;\n -o-transition: opacity 0.1s linear;\n -moz-transition: opacity 0.1s linear;\n transition: opacity 0.1s linear; }\n .dg.main.taller-than-window {\n overflow-y: auto; }\n .dg.main.taller-than-window .close-button {\n opacity: 1;\n /* TODO, these are style notes */\n margin-top: -1px;\n border-top: 1px solid #2c2c2c; }\n .dg.main ul.closed .close-button {\n opacity: 1 !important; }\n .dg.main:hover .close-button,\n .dg.main .close-button.drag {\n opacity: 1; }\n .dg.main .close-button {\n /*opacity: 0;*/\n -webkit-transition: opacity 0.1s linear;\n -o-transition: opacity 0.1s linear;\n -moz-transition: opacity 0.1s linear;\n transition: opacity 0.1s linear;\n border: 0;\n position: absolute;\n line-height: 19px;\n height: 20px;\n /* TODO, these are style notes */\n cursor: pointer;\n text-align: center;\n background-color: #000; }\n .dg.main .close-button:hover {\n background-color: #111; }\n .dg.a {\n float: right;\n margin-right: 15px;\n overflow-x: hidden; }\n .dg.a.has-save > ul {\n margin-top: 27px; }\n .dg.a.has-save > ul.closed {\n margin-top: 0; }\n .dg.a .save-row {\n position: fixed;\n top: 0;\n z-index: 1002; }\n .dg li {\n -webkit-transition: height 0.1s ease-out;\n -o-transition: height 0.1s ease-out;\n -moz-transition: height 0.1s ease-out;\n transition: height 0.1s ease-out; }\n .dg li:not(.folder) {\n cursor: auto;\n height: 27px;\n line-height: 27px;\n overflow: hidden;\n padding: 0 4px 0 5px; }\n .dg li.folder {\n padding: 0;\n border-left: 4px solid rgba(0, 0, 0, 0); }\n .dg li.title {\n cursor: pointer;\n margin-left: -4px; }\n .dg .closed li:not(.title),\n .dg .closed ul li,\n .dg .closed ul li > * {\n height: 0;\n overflow: hidden;\n border: 0; }\n .dg .cr {\n clear: both;\n padding-left: 3px;\n height: 27px; }\n .dg .property-name {\n cursor: default;\n float: left;\n clear: left;\n width: 40%;\n overflow: hidden;\n text-overflow: ellipsis; }\n .dg .c {\n float: left;\n width: 60%; }\n .dg .c input[type=text] {\n border: 0;\n margin-top: 4px;\n padding: 3px;\n width: 100%;\n float: right; }\n .dg .has-slider input[type=text] {\n width: 30%;\n /*display: none;*/\n margin-left: 0; }\n .dg .slider {\n float: left;\n width: 66%;\n margin-left: -5px;\n margin-right: 0;\n height: 19px;\n margin-top: 4px; }\n .dg .slider-fg {\n height: 100%; }\n .dg .c input[type=checkbox] {\n margin-top: 9px; }\n .dg .c select {\n margin-top: 5px; }\n .dg .cr.function,\n .dg .cr.function .property-name,\n .dg .cr.function *,\n .dg .cr.boolean,\n .dg .cr.boolean * {\n cursor: pointer; }\n .dg .selector {\n display: none;\n position: absolute;\n margin-left: -9px;\n margin-top: 23px;\n z-index: 10; }\n .dg .c:hover .selector,\n .dg .selector.drag {\n display: block; }\n .dg li.save-row {\n padding: 0; }\n .dg li.save-row .button {\n display: inline-block;\n padding: 0px 6px; }\n .dg.dialogue {\n background-color: #222;\n width: 460px;\n padding: 15px;\n font-size: 13px;\n line-height: 15px; }\n\n/* TODO Separate style and structure */\n#dg-new-constructor {\n padding: 10px;\n color: #222;\n font-family: Monaco, monospace;\n font-size: 10px;\n border: 0;\n resize: none;\n box-shadow: inset 1px 1px 1px #888;\n word-wrap: break-word;\n margin: 12px 0;\n display: block;\n width: 440px;\n overflow-y: scroll;\n height: 100px;\n position: relative; }\n\n#dg-local-explain {\n display: none;\n font-size: 11px;\n line-height: 17px;\n border-radius: 3px;\n background-color: #333;\n padding: 8px;\n margin-top: 10px; }\n #dg-local-explain code {\n font-size: 10px; }\n\n#dat-gui-save-locally {\n display: none; }\n\n/** Main type */\n.dg {\n color: #eee;\n font: 11px 'Lucida Grande', sans-serif;\n text-shadow: 0 -1px 0 #111;\n /** Auto place */\n /* Controller row,
      • */\n /** Controllers */ }\n .dg.main {\n /** Scrollbar */ }\n .dg.main::-webkit-scrollbar {\n width: 5px;\n background: #1a1a1a; }\n .dg.main::-webkit-scrollbar-corner {\n height: 0;\n display: none; }\n .dg.main::-webkit-scrollbar-thumb {\n border-radius: 5px;\n background: #676767; }\n .dg li:not(.folder) {\n background: #1a1a1a;\n border-bottom: 1px solid #2c2c2c; }\n .dg li.save-row {\n line-height: 25px;\n background: #dad5cb;\n border: 0; }\n .dg li.save-row select {\n margin-left: 5px;\n width: 108px; }\n .dg li.save-row .button {\n margin-left: 5px;\n margin-top: 1px;\n border-radius: 2px;\n font-size: 9px;\n line-height: 7px;\n padding: 4px 4px 5px 4px;\n background: #c5bdad;\n color: #fff;\n text-shadow: 0 1px 0 #b0a58f;\n box-shadow: 0 -1px 0 #b0a58f;\n cursor: pointer; }\n .dg li.save-row .button.gears {\n background: #c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;\n height: 7px;\n width: 8px; }\n .dg li.save-row .button:hover {\n background-color: #bab19e;\n box-shadow: 0 -1px 0 #b0a58f; }\n .dg li.folder {\n border-bottom: 0; }\n .dg li.title {\n padding-left: 16px;\n background: black url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;\n cursor: pointer;\n border-bottom: 1px solid rgba(255, 255, 255, 0.2); }\n .dg .closed li.title {\n background-image: url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==); }\n .dg .cr.boolean {\n border-left: 3px solid #806787; }\n .dg .cr.function {\n border-left: 3px solid #e61d5f; }\n .dg .cr.number {\n border-left: 3px solid #2fa1d6; }\n .dg .cr.number input[type=text] {\n color: #2fa1d6; }\n .dg .cr.string {\n border-left: 3px solid #1ed36f; }\n .dg .cr.string input[type=text] {\n color: #1ed36f; }\n .dg .cr.function:hover, .dg .cr.boolean:hover {\n background: #111; }\n .dg .c input[type=text] {\n background: #303030;\n outline: none; }\n .dg .c input[type=text]:hover {\n background: #3c3c3c; }\n .dg .c input[type=text]:focus {\n background: #494949;\n color: #fff; }\n .dg .c .slider {\n background: #303030;\n cursor: ew-resize; }\n .dg .c .slider-fg {\n background: #2fa1d6; }\n .dg .c .slider:hover {\n background: #3c3c3c; }\n .dg .c .slider:hover .slider-fg {\n background: #44abda; }\n", -dat.controllers.factory=function(e,a,b,d,f,c,p){return function(k,l,q,n){var r=k[l];if(p.isArray(q)||p.isObject(q))return new e(k,l,q);if(p.isNumber(r))return p.isNumber(q)&&p.isNumber(n)?new b(k,l,q,n):new a(k,l,{min:q,max:n});if(p.isString(r))return new d(k,l);if(p.isFunction(r))return new f(k,l,"");if(p.isBoolean(r))return new c(k,l)}}(dat.controllers.OptionController,dat.controllers.NumberControllerBox,dat.controllers.NumberControllerSlider,dat.controllers.StringController=function(e,a,b){var d= -function(b,c){function e(){k.setValue(k.__input.value)}d.superclass.call(this,b,c);var k=this;this.__input=document.createElement("input");this.__input.setAttribute("type","text");a.bind(this.__input,"keyup",e);a.bind(this.__input,"change",e);a.bind(this.__input,"blur",function(){k.__onFinishChange&&k.__onFinishChange.call(k,k.getValue())});a.bind(this.__input,"keydown",function(a){13===a.keyCode&&this.blur()});this.updateDisplay();this.domElement.appendChild(this.__input)};d.superclass=e;b.extend(d.prototype, -e.prototype,{updateDisplay:function(){a.isActive(this.__input)||(this.__input.value=this.getValue());return d.superclass.prototype.updateDisplay.call(this)}});return d}(dat.controllers.Controller,dat.dom.dom,dat.utils.common),dat.controllers.FunctionController,dat.controllers.BooleanController,dat.utils.common),dat.controllers.Controller,dat.controllers.BooleanController,dat.controllers.FunctionController,dat.controllers.NumberControllerBox,dat.controllers.NumberControllerSlider,dat.controllers.OptionController, -dat.controllers.ColorController=function(e,a,b,d,f){function c(a,b,d,c){a.style.background="";f.each(l,function(e){a.style.cssText+="background: "+e+"linear-gradient("+b+", "+d+" 0%, "+c+" 100%); "})}function p(a){a.style.background="";a.style.cssText+="background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);";a.style.cssText+="background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);"; -a.style.cssText+="background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);";a.style.cssText+="background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);";a.style.cssText+="background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);"}var k=function(e,n){function r(b){t(b);a.bind(window,"mousemove",t);a.bind(window, -"mouseup",l)}function l(){a.unbind(window,"mousemove",t);a.unbind(window,"mouseup",l)}function g(){var a=d(this.value);!1!==a?(s.__color.__state=a,s.setValue(s.__color.toOriginal())):this.value=s.__color.toString()}function h(){a.unbind(window,"mousemove",u);a.unbind(window,"mouseup",h)}function t(b){b.preventDefault();var d=a.getWidth(s.__saturation_field),c=a.getOffset(s.__saturation_field),e=(b.clientX-c.left+document.body.scrollLeft)/d;b=1-(b.clientY-c.top+document.body.scrollTop)/d;1 -b&&(b=0);1e&&(e=0);s.__color.v=b;s.__color.s=e;s.setValue(s.__color.toOriginal());return!1}function u(b){b.preventDefault();var d=a.getHeight(s.__hue_field),c=a.getOffset(s.__hue_field);b=1-(b.clientY-c.top+document.body.scrollTop)/d;1b&&(b=0);s.__color.h=360*b;s.setValue(s.__color.toOriginal());return!1}k.superclass.call(this,e,n);this.__color=new b(this.getValue());this.__temp=new b(0);var s=this;this.domElement=document.createElement("div");a.makeSelectable(this.domElement,!1); -this.__selector=document.createElement("div");this.__selector.className="selector";this.__saturation_field=document.createElement("div");this.__saturation_field.className="saturation-field";this.__field_knob=document.createElement("div");this.__field_knob.className="field-knob";this.__field_knob_border="2px solid ";this.__hue_knob=document.createElement("div");this.__hue_knob.className="hue-knob";this.__hue_field=document.createElement("div");this.__hue_field.className="hue-field";this.__input=document.createElement("input"); -this.__input.type="text";this.__input_textShadow="0 1px 1px ";a.bind(this.__input,"keydown",function(a){13===a.keyCode&&g.call(this)});a.bind(this.__input,"blur",g);a.bind(this.__selector,"mousedown",function(b){a.addClass(this,"drag").bind(window,"mouseup",function(b){a.removeClass(s.__selector,"drag")})});var v=document.createElement("div");f.extend(this.__selector.style,{width:"122px",height:"102px",padding:"3px",backgroundColor:"#222",boxShadow:"0px 1px 3px rgba(0,0,0,0.3)"});f.extend(this.__field_knob.style, -{position:"absolute",width:"12px",height:"12px",border:this.__field_knob_border+(0.5>this.__color.v?"#fff":"#000"),boxShadow:"0px 1px 3px rgba(0,0,0,0.5)",borderRadius:"12px",zIndex:1});f.extend(this.__hue_knob.style,{position:"absolute",width:"15px",height:"2px",borderRight:"4px solid #fff",zIndex:1});f.extend(this.__saturation_field.style,{width:"100px",height:"100px",border:"1px solid #555",marginRight:"3px",display:"inline-block",cursor:"pointer"});f.extend(v.style,{width:"100%",height:"100%", -background:"none"});c(v,"top","rgba(0,0,0,0)","#000");f.extend(this.__hue_field.style,{width:"15px",height:"100px",display:"inline-block",border:"1px solid #555",cursor:"ns-resize"});p(this.__hue_field);f.extend(this.__input.style,{outline:"none",textAlign:"center",color:"#fff",border:0,fontWeight:"bold",textShadow:this.__input_textShadow+"rgba(0,0,0,0.7)"});a.bind(this.__saturation_field,"mousedown",r);a.bind(this.__field_knob,"mousedown",r);a.bind(this.__hue_field,"mousedown",function(b){u(b);a.bind(window, -"mousemove",u);a.bind(window,"mouseup",h)});this.__saturation_field.appendChild(v);this.__selector.appendChild(this.__field_knob);this.__selector.appendChild(this.__saturation_field);this.__selector.appendChild(this.__hue_field);this.__hue_field.appendChild(this.__hue_knob);this.domElement.appendChild(this.__input);this.domElement.appendChild(this.__selector);this.updateDisplay()};k.superclass=e;f.extend(k.prototype,e.prototype,{updateDisplay:function(){var a=d(this.getValue());if(!1!==a){var e=!1; -f.each(b.COMPONENTS,function(b){if(!f.isUndefined(a[b])&&!f.isUndefined(this.__color.__state[b])&&a[b]!==this.__color.__state[b])return e=!0,{}},this);e&&f.extend(this.__color.__state,a)}f.extend(this.__temp.__state,this.__color.__state);this.__temp.a=1;var k=0.5>this.__color.v||0.5a&&(a+=1);return{h:360*a,s:e/c,v:c/255}},rgb_to_hex:function(a,b,d){a=this.hex_with_component(0,2,a);a=this.hex_with_component(a,1,b);return a=this.hex_with_component(a,0,d)},component_from_hex:function(a,b){return a>>8*b&255},hex_with_component:function(a,b,d){return d<<(e=8*b)|a&~(255< prevTime + 3000 ) { - - this.fps = ( frames * 1000 ) / ( time - prevTime ); - fpsPanel.update( this.fps, 100 ); - - - prevTime = time; - frames = 0; - - if ( memPanel ) { - - var memory = performance.memory; - memPanel.update( memory.usedJSHeapSize / 1048576, memory.jsHeapSizeLimit / 1048576 ); - - } - - } - - return time; - - }, - - update: function () { - - beginTime = this.end(); - - }, - - // Backwards Compatibility - - domElement: container, - setMode: showPanel - - }; - -}; - -Stats.Panel = function ( name, fg, bg ) { - - var min = Infinity, max = 0, round = Math.round; - var PR = round( window.devicePixelRatio || 1 ); - - var WIDTH = 80 * PR, HEIGHT = 48 * PR, - TEXT_X = 3 * PR, TEXT_Y = 2 * PR, - GRAPH_X = 3 * PR, GRAPH_Y = 15 * PR, - GRAPH_WIDTH = 74 * PR, GRAPH_HEIGHT = 30 * PR; - - var canvas = document.createElement( 'canvas' ); - canvas.width = WIDTH; - canvas.height = HEIGHT; - canvas.style.cssText = 'width:80px;height:48px'; - - var context = canvas.getContext( '2d' ); - context.font = 'bold ' + ( 9 * PR ) + 'px Helvetica,Arial,sans-serif'; - context.textBaseline = 'top'; - - context.fillStyle = bg; - context.fillRect( 0, 0, WIDTH, HEIGHT ); - - context.fillStyle = fg; - context.fillText( name, TEXT_X, TEXT_Y ); - context.fillRect( GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT ); - - context.fillStyle = bg; - context.globalAlpha = 0.9; - context.fillRect( GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT ); - - return { - - dom: canvas, - - update: function ( value, maxValue ) { - - min = Math.min( min, value ); - max = Math.max( max, value ); - - context.fillStyle = bg; - context.globalAlpha = 1; - context.fillRect( 0, 0, WIDTH, GRAPH_Y ); - context.fillStyle = fg; - context.fillText( round( value ) + ' ' + name + ' (' + round( min ) + '-' + round( max ) + ')', TEXT_X, TEXT_Y ); - - context.drawImage( canvas, GRAPH_X + PR, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT, GRAPH_X, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT ); - - context.fillRect( GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, GRAPH_HEIGHT ); - - context.fillStyle = bg; - context.globalAlpha = 0.9; - context.fillRect( GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, round( ( 1 - ( value / maxValue ) ) * GRAPH_HEIGHT ) ); - - } - - }; - -}; - -if ( typeof module === 'object' ) { - - module.exports = Stats; - -} diff --git a/libs/other/stats.min.js b/libs/other/stats.min.js deleted file mode 100644 index f0b40f6..0000000 --- a/libs/other/stats.min.js +++ /dev/null @@ -1,28 +0,0 @@ -// stats.js - http://github.com/mrdoob/stats.js - -// The MIT License -// -// Copyright (c) 2009-2016 stats.js authors -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -var Stats=function(){function h(a){c.appendChild(a.dom);return a}function k(a){for(var d=0;de+1E3&&(r.update(1E3*a/(c-e),100),e=c,a=0,t)){var d=performance.memory;t.update(d.usedJSHeapSize/1048576,d.jsHeapSizeLimit/1048576)}return c},update:function(){g=this.end()},domElement:c,setMode:k}}; -Stats.Panel=function(h,k,l){var c=Infinity,g=0,e=Math.round,a=e(window.devicePixelRatio||1),r=80*a,f=48*a,t=3*a,u=2*a,d=3*a,m=15*a,n=74*a,p=30*a,q=document.createElement("canvas");q.width=r;q.height=f;q.style.cssText="width:80px;height:48px";var b=q.getContext("2d");b.font="bold "+9*a+"px Helvetica,Arial,sans-serif";b.textBaseline="top";b.fillStyle=l;b.fillRect(0,0,r,f);b.fillStyle=k;b.fillText(h,t,u);b.fillRect(d,m,n,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d,m,n,p);return{dom:q,update:function(f, -v){c=Math.min(c,f);g=Math.max(g,f);b.fillStyle=l;b.globalAlpha=1;b.fillRect(0,0,r,m);b.fillStyle=k;b.fillText(e(f)+" "+h+" ("+e(c)+"-"+e(g)+")",t,u);b.drawImage(q,d+a,m,n-a,p,d,m,n-a,p);b.fillRect(d+n-a,m,a,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d+n-a,m,a,e((1-f/v)*p))}}};"object"===typeof module&&(module.exports=Stats); \ No newline at end of file diff --git a/libs/other/webgl-debug.js b/libs/other/webgl-debug.js deleted file mode 100644 index eeefdf4..0000000 --- a/libs/other/webgl-debug.js +++ /dev/null @@ -1,945 +0,0 @@ -/* -** Copyright (c) 2012 The Khronos Group Inc. -** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are furnished to do so, subject to -** the following conditions: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Materials. -** -** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ - -// Various functions for helping debug WebGL apps. - -WebGLDebugUtils = function() { - -/** - * Wrapped logging function. - * @param {string} msg Message to log. - */ -var log = function(msg) { - if (window.console && window.console.log) { - window.console.log(msg); - } -}; - -/** - * Wrapped error logging function. - * @param {string} msg Message to log. - */ -var error = function(msg) { - if (window.console && window.console.error) { - window.console.error(msg); - } else { - log(msg); - } -}; - - -/** - * Which arguments are enums based on the number of arguments to the function. - * So - * 'texImage2D': { - * 9: { 0:true, 2:true, 6:true, 7:true }, - * 6: { 0:true, 2:true, 3:true, 4:true }, - * }, - * - * means if there are 9 arguments then 6 and 7 are enums, if there are 6 - * arguments 3 and 4 are enums - * - * @type {!Object.} - */ -var glValidEnumContexts = { - // Generic setters and getters - - 'enable': {1: { 0:true }}, - 'disable': {1: { 0:true }}, - 'getParameter': {1: { 0:true }}, - - // Rendering - - 'drawArrays': {3:{ 0:true }}, - 'drawElements': {4:{ 0:true, 2:true }}, - - // Shaders - - 'createShader': {1: { 0:true }}, - 'getShaderParameter': {2: { 1:true }}, - 'getProgramParameter': {2: { 1:true }}, - 'getShaderPrecisionFormat': {2: { 0: true, 1:true }}, - - // Vertex attributes - - 'getVertexAttrib': {2: { 1:true }}, - 'vertexAttribPointer': {6: { 2:true }}, - - // Textures - - 'bindTexture': {2: { 0:true }}, - 'activeTexture': {1: { 0:true }}, - 'getTexParameter': {2: { 0:true, 1:true }}, - 'texParameterf': {3: { 0:true, 1:true }}, - 'texParameteri': {3: { 0:true, 1:true, 2:true }}, - 'texImage2D': { - 9: { 0:true, 2:true, 6:true, 7:true }, - 6: { 0:true, 2:true, 3:true, 4:true } - }, - 'texSubImage2D': { - 9: { 0:true, 6:true, 7:true }, - 7: { 0:true, 4:true, 5:true } - }, - 'copyTexImage2D': {8: { 0:true, 2:true }}, - 'copyTexSubImage2D': {8: { 0:true }}, - 'generateMipmap': {1: { 0:true }}, - 'compressedTexImage2D': {7: { 0: true, 2:true }}, - 'compressedTexSubImage2D': {8: { 0: true, 6:true }}, - - // Buffer objects - - 'bindBuffer': {2: { 0:true }}, - 'bufferData': {3: { 0:true, 2:true }}, - 'bufferSubData': {3: { 0:true }}, - 'getBufferParameter': {2: { 0:true, 1:true }}, - - // Renderbuffers and framebuffers - - 'pixelStorei': {2: { 0:true, 1:true }}, - 'readPixels': {7: { 4:true, 5:true }}, - 'bindRenderbuffer': {2: { 0:true }}, - 'bindFramebuffer': {2: { 0:true }}, - 'checkFramebufferStatus': {1: { 0:true }}, - 'framebufferRenderbuffer': {4: { 0:true, 1:true, 2:true }}, - 'framebufferTexture2D': {5: { 0:true, 1:true, 2:true }}, - 'getFramebufferAttachmentParameter': {3: { 0:true, 1:true, 2:true }}, - 'getRenderbufferParameter': {2: { 0:true, 1:true }}, - 'renderbufferStorage': {4: { 0:true, 1:true }}, - - // Frame buffer operations (clear, blend, depth test, stencil) - - 'clear': {1: { 0: { 'enumBitwiseOr': ['COLOR_BUFFER_BIT', 'DEPTH_BUFFER_BIT', 'STENCIL_BUFFER_BIT'] }}}, - 'depthFunc': {1: { 0:true }}, - 'blendFunc': {2: { 0:true, 1:true }}, - 'blendFuncSeparate': {4: { 0:true, 1:true, 2:true, 3:true }}, - 'blendEquation': {1: { 0:true }}, - 'blendEquationSeparate': {2: { 0:true, 1:true }}, - 'stencilFunc': {3: { 0:true }}, - 'stencilFuncSeparate': {4: { 0:true, 1:true }}, - 'stencilMaskSeparate': {2: { 0:true }}, - 'stencilOp': {3: { 0:true, 1:true, 2:true }}, - 'stencilOpSeparate': {4: { 0:true, 1:true, 2:true, 3:true }}, - - // Culling - - 'cullFace': {1: { 0:true }}, - 'frontFace': {1: { 0:true }}, - - // ANGLE_instanced_arrays extension - - 'drawArraysInstancedANGLE': {4: { 0:true }}, - 'drawElementsInstancedANGLE': {5: { 0:true, 2:true }}, - - // EXT_blend_minmax extension - - 'blendEquationEXT': {1: { 0:true }} -}; - -/** - * Map of numbers to names. - * @type {Object} - */ -var glEnums = null; - -/** - * Map of names to numbers. - * @type {Object} - */ -var enumStringToValue = null; - -/** - * Initializes this module. Safe to call more than once. - * @param {!WebGLRenderingContext} ctx A WebGL context. If - * you have more than one context it doesn't matter which one - * you pass in, it is only used to pull out constants. - */ -function init(ctx) { - if (glEnums == null) { - glEnums = { }; - enumStringToValue = { }; - for (var propertyName in ctx) { - if (typeof ctx[propertyName] == 'number') { - glEnums[ctx[propertyName]] = propertyName; - enumStringToValue[propertyName] = ctx[propertyName]; - } - } - } -} - -/** - * Checks the utils have been initialized. - */ -function checkInit() { - if (glEnums == null) { - throw 'WebGLDebugUtils.init(ctx) not called'; - } -} - -/** - * Returns true or false if value matches any WebGL enum - * @param {*} value Value to check if it might be an enum. - * @return {boolean} True if value matches one of the WebGL defined enums - */ -function mightBeEnum(value) { - checkInit(); - return (glEnums[value] !== undefined); -} - -/** - * Gets an string version of an WebGL enum. - * - * Example: - * var str = WebGLDebugUtil.glEnumToString(ctx.getError()); - * - * @param {number} value Value to return an enum for - * @return {string} The string version of the enum. - */ -function glEnumToString(value) { - checkInit(); - var name = glEnums[value]; - return (name !== undefined) ? ("gl." + name) : - ("/*UNKNOWN WebGL ENUM*/ 0x" + value.toString(16) + ""); -} - -/** - * Returns the string version of a WebGL argument. - * Attempts to convert enum arguments to strings. - * @param {string} functionName the name of the WebGL function. - * @param {number} numArgs the number of arguments passed to the function. - * @param {number} argumentIndx the index of the argument. - * @param {*} value The value of the argument. - * @return {string} The value as a string. - */ -function glFunctionArgToString(functionName, numArgs, argumentIndex, value) { - var funcInfo = glValidEnumContexts[functionName]; - if (funcInfo !== undefined) { - var funcInfo = funcInfo[numArgs]; - if (funcInfo !== undefined) { - if (funcInfo[argumentIndex]) { - if (typeof funcInfo[argumentIndex] === 'object' && - funcInfo[argumentIndex]['enumBitwiseOr'] !== undefined) { - var enums = funcInfo[argumentIndex]['enumBitwiseOr']; - var orResult = 0; - var orEnums = []; - for (var i = 0; i < enums.length; ++i) { - var enumValue = enumStringToValue[enums[i]]; - if ((value & enumValue) !== 0) { - orResult |= enumValue; - orEnums.push(glEnumToString(enumValue)); - } - } - if (orResult === value) { - return orEnums.join(' | '); - } else { - return glEnumToString(value); - } - } else { - return glEnumToString(value); - } - } - } - } - if (value === null) { - return "null"; - } else if (value === undefined) { - return "undefined"; - } else { - return value.toString(); - } -} - -/** - * Converts the arguments of a WebGL function to a string. - * Attempts to convert enum arguments to strings. - * - * @param {string} functionName the name of the WebGL function. - * @param {number} args The arguments. - * @return {string} The arguments as a string. - */ -function glFunctionArgsToString(functionName, args) { - // apparently we can't do args.join(","); - var argStr = ""; - var numArgs = args.length; - for (var ii = 0; ii < numArgs; ++ii) { - argStr += ((ii == 0) ? '' : ', ') + - glFunctionArgToString(functionName, numArgs, ii, args[ii]); - } - return argStr; -}; - - -function makePropertyWrapper(wrapper, original, propertyName) { - //log("wrap prop: " + propertyName); - wrapper.__defineGetter__(propertyName, function() { - return original[propertyName]; - }); - // TODO(gmane): this needs to handle properties that take more than - // one value? - wrapper.__defineSetter__(propertyName, function(value) { - //log("set: " + propertyName); - original[propertyName] = value; - }); -} - -// Makes a function that calls a function on another object. -function makeFunctionWrapper(original, functionName) { - //log("wrap fn: " + functionName); - var f = original[functionName]; - return function() { - //log("call: " + functionName); - var result = f.apply(original, arguments); - return result; - }; -} - -/** - * Given a WebGL context returns a wrapped context that calls - * gl.getError after every command and calls a function if the - * result is not gl.NO_ERROR. - * - * @param {!WebGLRenderingContext} ctx The webgl context to - * wrap. - * @param {!function(err, funcName, args): void} opt_onErrorFunc - * The function to call when gl.getError returns an - * error. If not specified the default function calls - * console.log with a message. - * @param {!function(funcName, args): void} opt_onFunc The - * function to call when each webgl function is called. - * You can use this to log all calls for example. - * @param {!WebGLRenderingContext} opt_err_ctx The webgl context - * to call getError on if different than ctx. - */ -function makeDebugContext(ctx, opt_onErrorFunc, opt_onFunc, opt_err_ctx) { - opt_err_ctx = opt_err_ctx || ctx; - init(ctx); - opt_onErrorFunc = opt_onErrorFunc || function(err, functionName, args) { - // apparently we can't do args.join(","); - var argStr = ""; - var numArgs = args.length; - for (var ii = 0; ii < numArgs; ++ii) { - argStr += ((ii == 0) ? '' : ', ') + - glFunctionArgToString(functionName, numArgs, ii, args[ii]); - } - error("WebGL error "+ glEnumToString(err) + " in "+ functionName + - "(" + argStr + ")"); - }; - - // Holds booleans for each GL error so after we get the error ourselves - // we can still return it to the client app. - var glErrorShadow = { }; - - // Makes a function that calls a WebGL function and then calls getError. - function makeErrorWrapper(ctx, functionName) { - return function() { - if (opt_onFunc) { - opt_onFunc(functionName, arguments); - } - var result = ctx[functionName].apply(ctx, arguments); - var err = opt_err_ctx.getError(); - if (err != 0) { - glErrorShadow[err] = true; - opt_onErrorFunc(err, functionName, arguments); - } - return result; - }; - } - - // Make a an object that has a copy of every property of the WebGL context - // but wraps all functions. - var wrapper = {}; - for (var propertyName in ctx) { - if (typeof ctx[propertyName] == 'function') { - if (propertyName != 'getExtension') { - wrapper[propertyName] = makeErrorWrapper(ctx, propertyName); - } else { - var wrapped = makeErrorWrapper(ctx, propertyName); - wrapper[propertyName] = function () { - var result = wrapped.apply(ctx, arguments); - return makeDebugContext(result, opt_onErrorFunc, opt_onFunc, opt_err_ctx); - }; - } - } else { - makePropertyWrapper(wrapper, ctx, propertyName); - } - } - - // Override the getError function with one that returns our saved results. - wrapper.getError = function() { - for (var err in glErrorShadow) { - if (glErrorShadow.hasOwnProperty(err)) { - if (glErrorShadow[err]) { - glErrorShadow[err] = false; - return err; - } - } - } - return ctx.NO_ERROR; - }; - - return wrapper; -} - -function resetToInitialState(ctx) { - var numAttribs = ctx.getParameter(ctx.MAX_VERTEX_ATTRIBS); - var tmp = ctx.createBuffer(); - ctx.bindBuffer(ctx.ARRAY_BUFFER, tmp); - for (var ii = 0; ii < numAttribs; ++ii) { - ctx.disableVertexAttribArray(ii); - ctx.vertexAttribPointer(ii, 4, ctx.FLOAT, false, 0, 0); - ctx.vertexAttrib1f(ii, 0); - } - ctx.deleteBuffer(tmp); - - var numTextureUnits = ctx.getParameter(ctx.MAX_TEXTURE_IMAGE_UNITS); - for (var ii = 0; ii < numTextureUnits; ++ii) { - ctx.activeTexture(ctx.TEXTURE0 + ii); - ctx.bindTexture(ctx.TEXTURE_CUBE_MAP, null); - ctx.bindTexture(ctx.TEXTURE_2D, null); - } - - ctx.activeTexture(ctx.TEXTURE0); - ctx.useProgram(null); - ctx.bindBuffer(ctx.ARRAY_BUFFER, null); - ctx.bindBuffer(ctx.ELEMENT_ARRAY_BUFFER, null); - ctx.bindFramebuffer(ctx.FRAMEBUFFER, null); - ctx.bindRenderbuffer(ctx.RENDERBUFFER, null); - ctx.disable(ctx.BLEND); - ctx.disable(ctx.CULL_FACE); - ctx.disable(ctx.DEPTH_TEST); - ctx.disable(ctx.DITHER); - ctx.disable(ctx.SCISSOR_TEST); - ctx.blendColor(0, 0, 0, 0); - ctx.blendEquation(ctx.FUNC_ADD); - ctx.blendFunc(ctx.ONE, ctx.ZERO); - ctx.clearColor(0, 0, 0, 0); - ctx.clearDepth(1); - ctx.clearStencil(-1); - ctx.colorMask(true, true, true, true); - ctx.cullFace(ctx.BACK); - ctx.depthFunc(ctx.LESS); - ctx.depthMask(true); - ctx.depthRange(0, 1); - ctx.frontFace(ctx.CCW); - ctx.hint(ctx.GENERATE_MIPMAP_HINT, ctx.DONT_CARE); - ctx.lineWidth(1); - ctx.pixelStorei(ctx.PACK_ALIGNMENT, 4); - ctx.pixelStorei(ctx.UNPACK_ALIGNMENT, 4); - ctx.pixelStorei(ctx.UNPACK_FLIP_Y_WEBGL, false); - ctx.pixelStorei(ctx.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false); - // TODO: Delete this IF. - if (ctx.UNPACK_COLORSPACE_CONVERSION_WEBGL) { - ctx.pixelStorei(ctx.UNPACK_COLORSPACE_CONVERSION_WEBGL, ctx.BROWSER_DEFAULT_WEBGL); - } - ctx.polygonOffset(0, 0); - ctx.sampleCoverage(1, false); - ctx.scissor(0, 0, ctx.canvas.width, ctx.canvas.height); - ctx.stencilFunc(ctx.ALWAYS, 0, 0xFFFFFFFF); - ctx.stencilMask(0xFFFFFFFF); - ctx.stencilOp(ctx.KEEP, ctx.KEEP, ctx.KEEP); - ctx.viewport(0, 0, ctx.canvas.width, ctx.canvas.height); - ctx.clear(ctx.COLOR_BUFFER_BIT | ctx.DEPTH_BUFFER_BIT | ctx.STENCIL_BUFFER_BIT); - - // TODO: This should NOT be needed but Firefox fails with 'hint' - while(ctx.getError()); -} - -function makeLostContextSimulatingCanvas(canvas) { - var unwrappedContext_; - var wrappedContext_; - var onLost_ = []; - var onRestored_ = []; - var wrappedContext_ = {}; - var contextId_ = 1; - var contextLost_ = false; - var resourceId_ = 0; - var resourceDb_ = []; - var numCallsToLoseContext_ = 0; - var numCalls_ = 0; - var canRestore_ = false; - var restoreTimeout_ = 0; - - // Holds booleans for each GL error so can simulate errors. - var glErrorShadow_ = { }; - - canvas.getContext = function(f) { - return function() { - var ctx = f.apply(canvas, arguments); - // Did we get a context and is it a WebGL context? - if (ctx instanceof WebGLRenderingContext) { - if (ctx != unwrappedContext_) { - if (unwrappedContext_) { - throw "got different context" - } - unwrappedContext_ = ctx; - wrappedContext_ = makeLostContextSimulatingContext(unwrappedContext_); - } - return wrappedContext_; - } - return ctx; - } - }(canvas.getContext); - - function wrapEvent(listener) { - if (typeof(listener) == "function") { - return listener; - } else { - return function(info) { - listener.handleEvent(info); - } - } - } - - var addOnContextLostListener = function(listener) { - onLost_.push(wrapEvent(listener)); - }; - - var addOnContextRestoredListener = function(listener) { - onRestored_.push(wrapEvent(listener)); - }; - - - function wrapAddEventListener(canvas) { - var f = canvas.addEventListener; - canvas.addEventListener = function(type, listener, bubble) { - switch (type) { - case 'webglcontextlost': - addOnContextLostListener(listener); - break; - case 'webglcontextrestored': - addOnContextRestoredListener(listener); - break; - default: - f.apply(canvas, arguments); - } - }; - } - - wrapAddEventListener(canvas); - - canvas.loseContext = function() { - if (!contextLost_) { - contextLost_ = true; - numCallsToLoseContext_ = 0; - ++contextId_; - while (unwrappedContext_.getError()); - clearErrors(); - glErrorShadow_[unwrappedContext_.CONTEXT_LOST_WEBGL] = true; - var event = makeWebGLContextEvent("context lost"); - var callbacks = onLost_.slice(); - setTimeout(function() { - //log("numCallbacks:" + callbacks.length); - for (var ii = 0; ii < callbacks.length; ++ii) { - //log("calling callback:" + ii); - callbacks[ii](event); - } - if (restoreTimeout_ >= 0) { - setTimeout(function() { - canvas.restoreContext(); - }, restoreTimeout_); - } - }, 0); - } - }; - - canvas.restoreContext = function() { - if (contextLost_) { - if (onRestored_.length) { - setTimeout(function() { - if (!canRestore_) { - throw "can not restore. webglcontestlost listener did not call event.preventDefault"; - } - freeResources(); - resetToInitialState(unwrappedContext_); - contextLost_ = false; - numCalls_ = 0; - canRestore_ = false; - var callbacks = onRestored_.slice(); - var event = makeWebGLContextEvent("context restored"); - for (var ii = 0; ii < callbacks.length; ++ii) { - callbacks[ii](event); - } - }, 0); - } - } - }; - - canvas.loseContextInNCalls = function(numCalls) { - if (contextLost_) { - throw "You can not ask a lost contet to be lost"; - } - numCallsToLoseContext_ = numCalls_ + numCalls; - }; - - canvas.getNumCalls = function() { - return numCalls_; - }; - - canvas.setRestoreTimeout = function(timeout) { - restoreTimeout_ = timeout; - }; - - function isWebGLObject(obj) { - //return false; - return (obj instanceof WebGLBuffer || - obj instanceof WebGLFramebuffer || - obj instanceof WebGLProgram || - obj instanceof WebGLRenderbuffer || - obj instanceof WebGLShader || - obj instanceof WebGLTexture); - } - - function checkResources(args) { - for (var ii = 0; ii < args.length; ++ii) { - var arg = args[ii]; - if (isWebGLObject(arg)) { - return arg.__webglDebugContextLostId__ == contextId_; - } - } - return true; - } - - function clearErrors() { - var k = Object.keys(glErrorShadow_); - for (var ii = 0; ii < k.length; ++ii) { - delete glErrorShadow_[k]; - } - } - - function loseContextIfTime() { - ++numCalls_; - if (!contextLost_) { - if (numCallsToLoseContext_ == numCalls_) { - canvas.loseContext(); - } - } - } - - // Makes a function that simulates WebGL when out of context. - function makeLostContextFunctionWrapper(ctx, functionName) { - var f = ctx[functionName]; - return function() { - // log("calling:" + functionName); - // Only call the functions if the context is not lost. - loseContextIfTime(); - if (!contextLost_) { - //if (!checkResources(arguments)) { - // glErrorShadow_[wrappedContext_.INVALID_OPERATION] = true; - // return; - //} - var result = f.apply(ctx, arguments); - return result; - } - }; - } - - function freeResources() { - for (var ii = 0; ii < resourceDb_.length; ++ii) { - var resource = resourceDb_[ii]; - if (resource instanceof WebGLBuffer) { - unwrappedContext_.deleteBuffer(resource); - } else if (resource instanceof WebGLFramebuffer) { - unwrappedContext_.deleteFramebuffer(resource); - } else if (resource instanceof WebGLProgram) { - unwrappedContext_.deleteProgram(resource); - } else if (resource instanceof WebGLRenderbuffer) { - unwrappedContext_.deleteRenderbuffer(resource); - } else if (resource instanceof WebGLShader) { - unwrappedContext_.deleteShader(resource); - } else if (resource instanceof WebGLTexture) { - unwrappedContext_.deleteTexture(resource); - } - } - } - - function makeWebGLContextEvent(statusMessage) { - return { - statusMessage: statusMessage, - preventDefault: function() { - canRestore_ = true; - } - }; - } - - return canvas; - - function makeLostContextSimulatingContext(ctx) { - // copy all functions and properties to wrapper - for (var propertyName in ctx) { - if (typeof ctx[propertyName] == 'function') { - wrappedContext_[propertyName] = makeLostContextFunctionWrapper( - ctx, propertyName); - } else { - makePropertyWrapper(wrappedContext_, ctx, propertyName); - } - } - - // Wrap a few functions specially. - wrappedContext_.getError = function() { - loseContextIfTime(); - if (!contextLost_) { - var err; - while (err = unwrappedContext_.getError()) { - glErrorShadow_[err] = true; - } - } - for (var err in glErrorShadow_) { - if (glErrorShadow_[err]) { - delete glErrorShadow_[err]; - return err; - } - } - return wrappedContext_.NO_ERROR; - }; - - var creationFunctions = [ - "createBuffer", - "createFramebuffer", - "createProgram", - "createRenderbuffer", - "createShader", - "createTexture" - ]; - for (var ii = 0; ii < creationFunctions.length; ++ii) { - var functionName = creationFunctions[ii]; - wrappedContext_[functionName] = function(f) { - return function() { - loseContextIfTime(); - if (contextLost_) { - return null; - } - var obj = f.apply(ctx, arguments); - obj.__webglDebugContextLostId__ = contextId_; - resourceDb_.push(obj); - return obj; - }; - }(ctx[functionName]); - } - - var functionsThatShouldReturnNull = [ - "getActiveAttrib", - "getActiveUniform", - "getBufferParameter", - "getContextAttributes", - "getAttachedShaders", - "getFramebufferAttachmentParameter", - "getParameter", - "getProgramParameter", - "getProgramInfoLog", - "getRenderbufferParameter", - "getShaderParameter", - "getShaderInfoLog", - "getShaderSource", - "getTexParameter", - "getUniform", - "getUniformLocation", - "getVertexAttrib" - ]; - for (var ii = 0; ii < functionsThatShouldReturnNull.length; ++ii) { - var functionName = functionsThatShouldReturnNull[ii]; - wrappedContext_[functionName] = function(f) { - return function() { - loseContextIfTime(); - if (contextLost_) { - return null; - } - return f.apply(ctx, arguments); - } - }(wrappedContext_[functionName]); - } - - var isFunctions = [ - "isBuffer", - "isEnabled", - "isFramebuffer", - "isProgram", - "isRenderbuffer", - "isShader", - "isTexture" - ]; - for (var ii = 0; ii < isFunctions.length; ++ii) { - var functionName = isFunctions[ii]; - wrappedContext_[functionName] = function(f) { - return function() { - loseContextIfTime(); - if (contextLost_) { - return false; - } - return f.apply(ctx, arguments); - } - }(wrappedContext_[functionName]); - } - - wrappedContext_.checkFramebufferStatus = function(f) { - return function() { - loseContextIfTime(); - if (contextLost_) { - return wrappedContext_.FRAMEBUFFER_UNSUPPORTED; - } - return f.apply(ctx, arguments); - }; - }(wrappedContext_.checkFramebufferStatus); - - wrappedContext_.getAttribLocation = function(f) { - return function() { - loseContextIfTime(); - if (contextLost_) { - return -1; - } - return f.apply(ctx, arguments); - }; - }(wrappedContext_.getAttribLocation); - - wrappedContext_.getVertexAttribOffset = function(f) { - return function() { - loseContextIfTime(); - if (contextLost_) { - return 0; - } - return f.apply(ctx, arguments); - }; - }(wrappedContext_.getVertexAttribOffset); - - wrappedContext_.isContextLost = function() { - return contextLost_; - }; - - return wrappedContext_; - } -} - -return { - /** - * Initializes this module. Safe to call more than once. - * @param {!WebGLRenderingContext} ctx A WebGL context. If - * you have more than one context it doesn't matter which one - * you pass in, it is only used to pull out constants. - */ - 'init': init, - - /** - * Returns true or false if value matches any WebGL enum - * @param {*} value Value to check if it might be an enum. - * @return {boolean} True if value matches one of the WebGL defined enums - */ - 'mightBeEnum': mightBeEnum, - - /** - * Gets an string version of an WebGL enum. - * - * Example: - * WebGLDebugUtil.init(ctx); - * var str = WebGLDebugUtil.glEnumToString(ctx.getError()); - * - * @param {number} value Value to return an enum for - * @return {string} The string version of the enum. - */ - 'glEnumToString': glEnumToString, - - /** - * Converts the argument of a WebGL function to a string. - * Attempts to convert enum arguments to strings. - * - * Example: - * WebGLDebugUtil.init(ctx); - * var str = WebGLDebugUtil.glFunctionArgToString('bindTexture', 2, 0, gl.TEXTURE_2D); - * - * would return 'TEXTURE_2D' - * - * @param {string} functionName the name of the WebGL function. - * @param {number} numArgs The number of arguments - * @param {number} argumentIndx the index of the argument. - * @param {*} value The value of the argument. - * @return {string} The value as a string. - */ - 'glFunctionArgToString': glFunctionArgToString, - - /** - * Converts the arguments of a WebGL function to a string. - * Attempts to convert enum arguments to strings. - * - * @param {string} functionName the name of the WebGL function. - * @param {number} args The arguments. - * @return {string} The arguments as a string. - */ - 'glFunctionArgsToString': glFunctionArgsToString, - - /** - * Given a WebGL context returns a wrapped context that calls - * gl.getError after every command and calls a function if the - * result is not NO_ERROR. - * - * You can supply your own function if you want. For example, if you'd like - * an exception thrown on any GL error you could do this - * - * function throwOnGLError(err, funcName, args) { - * throw WebGLDebugUtils.glEnumToString(err) + - * " was caused by call to " + funcName; - * }; - * - * ctx = WebGLDebugUtils.makeDebugContext( - * canvas.getContext("webgl"), throwOnGLError); - * - * @param {!WebGLRenderingContext} ctx The webgl context to wrap. - * @param {!function(err, funcName, args): void} opt_onErrorFunc The function - * to call when gl.getError returns an error. If not specified the default - * function calls console.log with a message. - * @param {!function(funcName, args): void} opt_onFunc The - * function to call when each webgl function is called. You - * can use this to log all calls for example. - */ - 'makeDebugContext': makeDebugContext, - - /** - * Given a canvas element returns a wrapped canvas element that will - * simulate lost context. The canvas returned adds the following functions. - * - * loseContext: - * simulates a lost context event. - * - * restoreContext: - * simulates the context being restored. - * - * lostContextInNCalls: - * loses the context after N gl calls. - * - * getNumCalls: - * tells you how many gl calls there have been so far. - * - * setRestoreTimeout: - * sets the number of milliseconds until the context is restored - * after it has been lost. Defaults to 0. Pass -1 to prevent - * automatic restoring. - * - * @param {!Canvas} canvas The canvas element to wrap. - */ - 'makeLostContextSimulatingCanvas': makeLostContextSimulatingCanvas, - - /** - * Resets a context to the initial state. - * @param {!WebGLRenderingContext} ctx The webgl context to - * reset. - */ - 'resetToInitialState': resetToInitialState -}; - -}(); diff --git a/libs/plasio/LICENSE b/libs/plasio/LICENSE deleted file mode 100644 index 281fd93..0000000 --- a/libs/plasio/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Uday Verma, uday.karan@gmail.com - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/libs/plasio/js/laslaz.js b/libs/plasio/js/laslaz.js deleted file mode 100644 index c8c40d2..0000000 --- a/libs/plasio/js/laslaz.js +++ /dev/null @@ -1,398 +0,0 @@ -// laslaz.js -// LAS/LAZ loading -// - -//var common = require("./common"), -// Promise = require("bluebird"); - -(function(scope) { - "use strict"; - - var pointFormatReaders = { - 0: function(dv) { - return { - "position": [ dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)], - "intensity": dv.getUint16(12, true), - "classification": dv.getUint8(16, true) - }; - }, - 1: function(dv) { - return { - "position": [ dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)], - "intensity": dv.getUint16(12, true), - "classification": dv.getUint8(16, true) - }; - }, - 2: function(dv) { - return { - "position": [ dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)], - "intensity": dv.getUint16(12, true), - "classification": dv.getUint8(16, true), - "color": [dv.getUint16(20, true), dv.getUint16(22, true), dv.getUint16(24, true)] - }; - }, - 3: function(dv) { - return { - "position": [ dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)], - "intensity": dv.getUint16(12, true), - "classification": dv.getUint8(16, true), - "color": [dv.getUint16(28, true), dv.getUint16(30, true), dv.getUint16(32, true)] - }; - } - }; - - function readAs(buf, Type, offset, count) { - count = (count === undefined || count === 0 ? 1 : count); - var sub = buf.slice(offset, offset + Type.BYTES_PER_ELEMENT * count); - - var r = new Type(sub); - if (count === undefined || count === 1) - return r[0]; - - var ret = []; - for (var i = 0 ; i < count ; i ++) { - ret.push(r[i]); - } - - return ret; - } - - function parseLASHeader(arraybuffer) { - var o = {}; - - o.pointsOffset = readAs(arraybuffer, Uint32Array, 32*3); - o.pointsFormatId = readAs(arraybuffer, Uint8Array, 32*3+8); - o.pointsStructSize = readAs(arraybuffer, Uint16Array, 32*3+8+1); - o.pointsCount = readAs(arraybuffer, Uint32Array, 32*3 + 11); - - - var start = 32*3 + 35; - o.scale = readAs(arraybuffer, Float64Array, start, 3); start += 24; // 8*3 - o.offset = readAs(arraybuffer, Float64Array, start, 3); start += 24; - - - - var bounds = readAs(arraybuffer, Float64Array, start, 6); start += 48; // 8*6; - o.maxs = [bounds[0], bounds[2], bounds[4]]; - o.mins = [bounds[1], bounds[3], bounds[5]]; - - return o; - } - - var msgIndex = 0; - var waitHandlers = {}; - - // This method is scope-wide since the nacl module uses this fuction to notify - // us of events - scope.handleMessage = function(message_event) { - var msg = message_event.data; - var resolver = waitHandlers[msg.id]; - delete waitHandlers[msg.id]; - - // call the callback in a separate context, make sure we've cleaned our - // state out before the callback is invoked since it may queue more doExchanges - setTimeout(function() { - if (msg.error) - return resolver.reject(new Error(msg.message || "Unknown Error")); - - if (msg.hasOwnProperty('count') && msg.hasOwnProperty('hasMoreData')) { - return resolver.resolve({ - buffer: msg.result, - count: msg.count, - hasMoreData: msg.hasMoreData}); - } - - resolver.resolve(msg.result); - }, 0); - }; - - var doDataExchange = function(cmd, callback) { - cmd.id = msgIndex.toString(); - msgIndex ++; - - var resolver = Promise.defer(); - waitHandlers[cmd.id] = resolver; - - nacl_module.postMessage(cmd); - - return resolver.promise.cancellable(); - }; - - // LAS Loader - // Loads uncompressed files - // - var LASLoader = function(arraybuffer) { - this.arraybuffer = arraybuffer; - }; - - LASLoader.prototype.open = function() { - // nothing needs to be done to open this file - // - this.readOffset = 0; - return new Promise(function(res, rej) { - setTimeout(res, 0); - }); - }; - - LASLoader.prototype.getHeader = function() { - var o = this; - - return new Promise(function(res, rej) { - setTimeout(function() { - o.header = parseLASHeader(o.arraybuffer); - res(o.header); - }, 0); - }); - }; - - LASLoader.prototype.readData = function(count, offset, skip) { - var o = this; - - return new Promise(function(res, rej) { - setTimeout(function() { - if (!o.header) - return rej(new Error("Cannot start reading data till a header request is issued")); - - var start; - if (skip <= 1) { - count = Math.min(count, o.header.pointsCount - o.readOffset); - start = o.header.pointsOffset + o.readOffset * o.header.pointsStructSize; - var end = start + count * o.header.pointsStructSize; - res({ - buffer: o.arraybuffer.slice(start, end), - count: count, - hasMoreData: o.readOffset + count < o.header.pointsCount}); - o.readOffset += count; - } - else { - var pointsToRead = Math.min(count * skip, o.header.pointsCount - o.readOffset); - var bufferSize = Math.ceil(pointsToRead / skip); - var pointsRead = 0; - - var buf = new Uint8Array(bufferSize * o.header.pointsStructSize); - for (var i = 0 ; i < pointsToRead ; i ++) { - if (i % skip === 0) { - start = o.header.pointsOffset + o.readOffset * o.header.pointsStructSize; - var src = new Uint8Array(o.arraybuffer, start, o.header.pointsStructSize); - - buf.set(src, pointsRead * o.header.pointsStructSize); - pointsRead ++; - } - - o.readOffset ++; - } - - res({ - buffer: buf.buffer, - count: pointsRead, - hasMoreData: o.readOffset < o.header.pointsCount - }); - } - }, 0); - }); - }; - - LASLoader.prototype.close = function() { - var o = this; - return new Promise(function(res, rej) { - o.arraybuffer = null; - setTimeout(res, 0); - }); - }; - - // LAZ Loader - // Uses NaCL module to load LAZ files - // - var LAZLoader = function(arraybuffer) { - this.arraybuffer = arraybuffer; - - let workerPath = Potree.scriptPath + "/workers/LASLAZWorker.js"; - this.ww = Potree.workerPool.getWorker(workerPath); - - this.nextCB = null; - var o = this; - - this.ww.onmessage = function(e) { - if (o.nextCB !== null) { - o.nextCB(e.data); - o.nextCB = null; - } - }; - - this.dorr = function(req, cb) { - o.nextCB = cb; - o.ww.postMessage(req); - }; - }; - - LAZLoader.prototype.open = function() { - - // nothing needs to be done to open this file - // - var o = this; - return new Promise(function(res, rej) { - o.dorr({type:"open", arraybuffer: o.arraybuffer}, function(r) { - if (r.status !== 1) - return rej(new Error("Failed to open file")); - - res(true); - }); - }); - }; - - LAZLoader.prototype.getHeader = function() { - var o = this; - - return new Promise(function(res, rej) { - o.dorr({type:'header'}, function(r) { - if (r.status !== 1) - return rej(new Error("Failed to get header")); - - res(r.header); - }); - }); - }; - - LAZLoader.prototype.readData = function(count, offset, skip) { - var o = this; - - return new Promise(function(res, rej) { - o.dorr({type:'read', count: count, offset: offset, skip: skip}, function(r) { - if (r.status !== 1) - return rej(new Error("Failed to read data")); - res({ - buffer: r.buffer, - count: r.count, - hasMoreData: r.hasMoreData - }); - }); - }); - }; - - LAZLoader.prototype.close = function() { - var o = this; - - return new Promise(function(res, rej) { - o.dorr({type:'close'}, function(r) { - let workerPath = Potree.scriptPath + "/workers/LASLAZWorker.js"; - Potree.workerPool.returnWorker(workerPath, o.ww); - - if (r.status !== 1) - return rej(new Error("Failed to close file")); - - res(true); - }); - }); - }; - - // A single consistent interface for loading LAS/LAZ files - var LASFile = function(arraybuffer) { - this.arraybuffer = arraybuffer; - - this.determineVersion(); - if (this.version > 12) - throw new Error("Only file versions <= 1.2 are supported at this time"); - - this.determineFormat(); - if (pointFormatReaders[this.formatId] === undefined) - throw new Error("The point format ID is not supported"); - - this.loader = this.isCompressed ? - new LAZLoader(this.arraybuffer) : - new LASLoader(this.arraybuffer); - }; - - LASFile.prototype.determineFormat = function() { - var formatId = readAs(this.arraybuffer, Uint8Array, 32*3+8); - var bit_7 = (formatId & 0x80) >> 7; - var bit_6 = (formatId & 0x40) >> 6; - - if (bit_7 === 1 && bit_6 === 1) - throw new Error("Old style compression not supported"); - - this.formatId = formatId & 0x3f; - this.isCompressed = (bit_7 === 1 || bit_6 === 1); - }; - - LASFile.prototype.determineVersion = function() { - var ver = new Int8Array(this.arraybuffer, 24, 2); - this.version = ver[0] * 10 + ver[1]; - this.versionAsString = ver[0] + "." + ver[1]; - }; - - LASFile.prototype.open = function() { - return this.loader.open(); - }; - - LASFile.prototype.getHeader = function() { - return this.loader.getHeader(); - }; - - LASFile.prototype.readData = function(count, start, skip) { - return this.loader.readData(count, start, skip); - }; - - LASFile.prototype.close = function() { - return this.loader.close(); - }; - - // Decodes LAS records into points - // - var LASDecoder = function(buffer, pointFormatID, pointSize, pointsCount, scale, offset, mins, maxs) { - this.arrayb = buffer; - this.decoder = pointFormatReaders[pointFormatID]; - this.pointsCount = pointsCount; - this.pointSize = pointSize; - this.scale = scale; - this.offset = offset; - this.mins = mins; - this.maxs = maxs; - }; - - LASDecoder.prototype.getPoint = function(index) { - if (index < 0 || index >= this.pointsCount) - throw new Error("Point index out of range"); - - var dv = new DataView(this.arrayb, index * this.pointSize, this.pointSize); - return this.decoder(dv); - }; - - // NACL Module support - // Called by the common.js module. - // - //window.startNaCl = function(name, tc, config, width, height) { - // // check browser support for nacl - // // - // if(!common.browserSupportsNaCl()) { - // return $.event.trigger({ - // type: "plasio.nacl.error", - // message: "NaCl support is not available" - // }); - // } - - // navigator.webkitPersistentStorage.requestQuota(2048 * 2048, function(bytes) { - // common.updateStatus( - // 'Allocated ' + bytes + ' bytes of persistant storage.'); - // common.attachDefaultListeners(); - // common.createNaClModule(name, tc, config, width, height); - // }, - // function(e) { - // $.event.trigger({ - // type: "plasio.nacl.error", - // message: "Could not allocate persistant storage" - // }); - // }); - - // $(document).on("plasio.nacl.available", function() { - // scope.LASModuleWasLoaded = true; - // }); - //}; - - scope.LAZLoader = LAZLoader; - scope.LASLoader = LASLoader; - scope.LASFile = LASFile; - scope.LASDecoder = LASDecoder; - scope.LASModuleWasLoaded = false; -//})(module.exports); -})(this); - diff --git a/libs/plasio/vendor/bluebird.js b/libs/plasio/vendor/bluebird.js deleted file mode 100644 index b9b7fa0..0000000 --- a/libs/plasio/vendor/bluebird.js +++ /dev/null @@ -1,5140 +0,0 @@ -/** - * bluebird build version 1.0.8 - * Features enabled: core, timers, race, any, call_get, filter, generators, map, nodeify, promisify, props, reduce, settle, some, progress, cancel, synchronous_inspection -*/ -/** - * @preserve Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -!function(e){"object"==typeof exports?module.exports=e():"function"==typeof define&&define.amd?define(e):"undefined"!=typeof window?window.Promise=e():"undefined"!=typeof global?global.Promise=e():"undefined"!=typeof self&&(self.Promise=e())}(function(){var define,module,exports;return (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);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, Promise$_CreatePromiseArray, PromiseArray) { - - var SomePromiseArray = require("./some_promise_array.js")(PromiseArray); - var ASSERT = require("./assert.js"); - - function Promise$_Any(promises, useBound, caller) { - var ret = Promise$_CreatePromiseArray( - promises, - SomePromiseArray, - caller, - useBound === true && promises._isBound() - ? promises._boundTo - : void 0 - ); - var promise = ret.promise(); - if (promise.isRejected()) { - return promise; - } - ret.setHowMany(1); - ret.setUnwrap(); - ret.init(); - return promise; - } - - Promise.any = function Promise$Any(promises) { - return Promise$_Any(promises, false, Promise.any); - }; - - Promise.prototype.any = function Promise$any() { - return Promise$_Any(this, true, this.any); - }; - -}; - -},{"./assert.js":2,"./some_promise_array.js":35}],2:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = (function(){ - var AssertionError = (function() { - function AssertionError(a) { - this.constructor$(a); - this.message = a; - this.name = "AssertionError"; - } - AssertionError.prototype = new Error(); - AssertionError.prototype.constructor = AssertionError; - AssertionError.prototype.constructor$ = Error; - return AssertionError; - })(); - - return function assert(boolExpr, message) { - if (boolExpr === true) return; - - var ret = new AssertionError(message); - if (Error.captureStackTrace) { - Error.captureStackTrace(ret, assert); - } - if (console && console.error) { - console.error(ret.stack + ""); - } - throw ret; - - }; -})(); - -},{}],3:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -var ASSERT = require("./assert.js"); -var schedule = require("./schedule.js"); -var Queue = require("./queue.js"); -var errorObj = require("./util.js").errorObj; -var tryCatch1 = require("./util.js").tryCatch1; - -function Async() { - this._isTickUsed = false; - this._length = 0; - this._lateBuffer = new Queue(); - this._functionBuffer = new Queue(25000 * 3); - var self = this; - this.consumeFunctionBuffer = function Async$consumeFunctionBuffer() { - self._consumeFunctionBuffer(); - }; -} - -Async.prototype.haveItemsQueued = function Async$haveItemsQueued() { - return this._length > 0; -}; - -Async.prototype.invokeLater = function Async$invokeLater(fn, receiver, arg) { - this._lateBuffer.push(fn, receiver, arg); - this._queueTick(); -}; - -Async.prototype.invoke = function Async$invoke(fn, receiver, arg) { - var functionBuffer = this._functionBuffer; - functionBuffer.push(fn, receiver, arg); - this._length = functionBuffer.length(); - this._queueTick(); -}; - -Async.prototype._consumeFunctionBuffer = -function Async$_consumeFunctionBuffer() { - var functionBuffer = this._functionBuffer; - while(functionBuffer.length() > 0) { - var fn = functionBuffer.shift(); - var receiver = functionBuffer.shift(); - var arg = functionBuffer.shift(); - fn.call(receiver, arg); - } - this._reset(); - this._consumeLateBuffer(); -}; - -Async.prototype._consumeLateBuffer = function Async$_consumeLateBuffer() { - var buffer = this._lateBuffer; - while(buffer.length() > 0) { - var fn = buffer.shift(); - var receiver = buffer.shift(); - var arg = buffer.shift(); - var res = tryCatch1(fn, receiver, arg); - if (res === errorObj) { - this._queueTick(); - throw res.e; - } - } -}; - -Async.prototype._queueTick = function Async$_queue() { - if (!this._isTickUsed) { - schedule(this.consumeFunctionBuffer); - this._isTickUsed = true; - } -}; - -Async.prototype._reset = function Async$_reset() { - this._isTickUsed = false; - this._length = 0; -}; - -module.exports = new Async(); - -},{"./assert.js":2,"./queue.js":28,"./schedule.js":31,"./util.js":39}],4:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -var Promise = require("./promise.js")(); -module.exports = Promise; -},{"./promise.js":20}],5:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise) { - Promise.prototype.call = function Promise$call(propertyName) { - var $_len = arguments.length;var args = new Array($_len - 1); for(var $_i = 1; $_i < $_len; ++$_i) {args[$_i - 1] = arguments[$_i];} - - return this._then(function(obj) { - return obj[propertyName].apply(obj, args); - }, - void 0, - void 0, - void 0, - void 0, - this.call - ); - }; - - function Promise$getter(obj) { - var prop = typeof this === "string" - ? this - : ("" + this); - return obj[prop]; - } - Promise.prototype.get = function Promise$get(propertyName) { - return this._then( - Promise$getter, - void 0, - void 0, - propertyName, - void 0, - this.get - ); - }; -}; - -},{}],6:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, INTERNAL) { - var errors = require("./errors.js"); - var async = require("./async.js"); - var ASSERT = require("./assert.js"); - var CancellationError = errors.CancellationError; - var SYNC_TOKEN = {}; - - Promise.prototype._cancel = function Promise$_cancel() { - if (!this.isCancellable()) return this; - var parent; - if ((parent = this._cancellationParent) !== void 0 && - parent.isCancellable()) { - parent.cancel(SYNC_TOKEN); - return; - } - var err = new CancellationError(); - this._attachExtraTrace(err); - this._rejectUnchecked(err); - }; - - Promise.prototype.cancel = function Promise$cancel(token) { - if (!this.isCancellable()) return this; - if (token === SYNC_TOKEN) { - this._cancel(); - return this; - } - async.invokeLater(this._cancel, this, void 0); - return this; - }; - - Promise.prototype.cancellable = function Promise$cancellable() { - if (this._cancellable()) return this; - this._setCancellable(); - this._cancellationParent = void 0; - return this; - }; - - Promise.prototype.uncancellable = function Promise$uncancellable() { - var ret = new Promise(INTERNAL); - ret._setTrace(this.uncancellable, this); - ret._follow(this); - ret._unsetCancellable(); - if (this._isBound()) ret._setBoundTo(this._boundTo); - return ret; - }; - - Promise.prototype.fork = - function Promise$fork(didFulfill, didReject, didProgress) { - var ret = this._then(didFulfill, didReject, didProgress, - void 0, void 0, this.fork); - - ret._setCancellable(); - ret._cancellationParent = void 0; - return ret; - }; -}; - -},{"./assert.js":2,"./async.js":3,"./errors.js":10}],7:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function() { -var ASSERT = require("./assert.js"); -var inherits = require("./util.js").inherits; -var defineProperty = require("./es5.js").defineProperty; - -var rignore = new RegExp( - "\\b(?:[\\w.]*Promise(?:Array|Spawn)?\\$_\\w+|" + - "tryCatch(?:1|2|Apply)|new \\w*PromiseArray|" + - "\\w*PromiseArray\\.\\w*PromiseArray|" + - "setTimeout|CatchFilter\\$_\\w+|makeNodePromisified|processImmediate|" + - "process._tickCallback|nextTick|Async\\$\\w+)\\b" -); - -var rtraceline = null; -var formatStack = null; -var areNamesMangled = false; - -function formatNonError(obj) { - var str; - if (typeof obj === "function") { - str = "[function " + - (obj.name || "anonymous") + - "]"; - } - else { - str = obj.toString(); - var ruselessToString = /\[object [a-zA-Z0-9$_]+\]/; - if (ruselessToString.test(str)) { - try { - var newStr = JSON.stringify(obj); - str = newStr; - } - catch(e) { - - } - } - if (str.length === 0) { - str = "(empty array)"; - } - } - return ("(<" + snip(str) + ">, no stack trace)"); -} - -function snip(str) { - var maxChars = 41; - if (str.length < maxChars) { - return str; - } - return str.substr(0, maxChars - 3) + "..."; -} - -function CapturedTrace(ignoreUntil, isTopLevel) { - if (!areNamesMangled) { - } - this.captureStackTrace(ignoreUntil, isTopLevel); - -} -inherits(CapturedTrace, Error); - -CapturedTrace.prototype.captureStackTrace = -function CapturedTrace$captureStackTrace(ignoreUntil, isTopLevel) { - captureStackTrace(this, ignoreUntil, isTopLevel); -}; - -CapturedTrace.possiblyUnhandledRejection = -function CapturedTrace$PossiblyUnhandledRejection(reason) { - if (typeof console === "object") { - var message; - if (typeof reason === "object" || typeof reason === "function") { - var stack = reason.stack; - message = "Possibly unhandled " + formatStack(stack, reason); - } - else { - message = "Possibly unhandled " + String(reason); - } - if (typeof console.error === "function" || - typeof console.error === "object") { - console.error(message); - } - else if (typeof console.log === "function" || - typeof console.error === "object") { - console.log(message); - } - } -}; - -areNamesMangled = CapturedTrace.prototype.captureStackTrace.name !== - "CapturedTrace$captureStackTrace"; - -CapturedTrace.combine = function CapturedTrace$Combine(current, prev) { - var curLast = current.length - 1; - for (var i = prev.length - 1; i >= 0; --i) { - var line = prev[i]; - if (current[curLast] === line) { - current.pop(); - curLast--; - } - else { - break; - } - } - - current.push("From previous event:"); - var lines = current.concat(prev); - - var ret = []; - - - for (var i = 0, len = lines.length; i < len; ++i) { - - if ((rignore.test(lines[i]) || - (i > 0 && !rtraceline.test(lines[i])) && - lines[i] !== "From previous event:") - ) { - continue; - } - ret.push(lines[i]); - } - return ret; -}; - -CapturedTrace.isSupported = function CapturedTrace$IsSupported() { - return typeof captureStackTrace === "function"; -}; - -var captureStackTrace = (function stackDetection() { - if (typeof Error.stackTraceLimit === "number" && - typeof Error.captureStackTrace === "function") { - rtraceline = /^\s*at\s*/; - formatStack = function(stack, error) { - if (typeof stack === "string") return stack; - - if (error.name !== void 0 && - error.message !== void 0) { - return error.name + ". " + error.message; - } - return formatNonError(error); - - - }; - var captureStackTrace = Error.captureStackTrace; - return function CapturedTrace$_captureStackTrace( - receiver, ignoreUntil) { - captureStackTrace(receiver, ignoreUntil); - }; - } - var err = new Error(); - - if (!areNamesMangled && typeof err.stack === "string" && - typeof "".startsWith === "function" && - (err.stack.startsWith("stackDetection@")) && - stackDetection.name === "stackDetection") { - - defineProperty(Error, "stackTraceLimit", { - writable: true, - enumerable: false, - configurable: false, - value: 25 - }); - rtraceline = /@/; - var rline = /[@\n]/; - - formatStack = function(stack, error) { - if (typeof stack === "string") { - return (error.name + ". " + error.message + "\n" + stack); - } - - if (error.name !== void 0 && - error.message !== void 0) { - return error.name + ". " + error.message; - } - return formatNonError(error); - }; - - return function captureStackTrace(o, fn) { - var name = fn.name; - var stack = new Error().stack; - var split = stack.split(rline); - var i, len = split.length; - for (i = 0; i < len; i += 2) { - if (split[i] === name) { - break; - } - } - split = split.slice(i + 2); - len = split.length - 2; - var ret = ""; - for (i = 0; i < len; i += 2) { - ret += split[i]; - ret += "@"; - ret += split[i + 1]; - ret += "\n"; - } - o.stack = ret; - }; - } - else { - formatStack = function(stack, error) { - if (typeof stack === "string") return stack; - - if ((typeof error === "object" || - typeof error === "function") && - error.name !== void 0 && - error.message !== void 0) { - return error.name + ". " + error.message; - } - return formatNonError(error); - }; - - return null; - } -})(); - -return CapturedTrace; -}; - -},{"./assert.js":2,"./es5.js":12,"./util.js":39}],8:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(NEXT_FILTER) { -var util = require("./util.js"); -var errors = require("./errors.js"); -var tryCatch1 = util.tryCatch1; -var errorObj = util.errorObj; -var keys = require("./es5.js").keys; - -function CatchFilter(instances, callback, promise) { - this._instances = instances; - this._callback = callback; - this._promise = promise; -} - -function CatchFilter$_safePredicate(predicate, e) { - var safeObject = {}; - var retfilter = tryCatch1(predicate, safeObject, e); - - if (retfilter === errorObj) return retfilter; - - var safeKeys = keys(safeObject); - if (safeKeys.length) { - errorObj.e = new TypeError( - "Catch filter must inherit from Error " - + "or be a simple predicate function"); - return errorObj; - } - return retfilter; -} - -CatchFilter.prototype.doFilter = function CatchFilter$_doFilter(e) { - var cb = this._callback; - var promise = this._promise; - var boundTo = promise._isBound() ? promise._boundTo : void 0; - for (var i = 0, len = this._instances.length; i < len; ++i) { - var item = this._instances[i]; - var itemIsErrorType = item === Error || - (item != null && item.prototype instanceof Error); - - if (itemIsErrorType && e instanceof item) { - var ret = tryCatch1(cb, boundTo, e); - if (ret === errorObj) { - NEXT_FILTER.e = ret.e; - return NEXT_FILTER; - } - return ret; - } else if (typeof item === "function" && !itemIsErrorType) { - var shouldHandle = CatchFilter$_safePredicate(item, e); - if (shouldHandle === errorObj) { - var trace = errors.canAttach(errorObj.e) - ? errorObj.e - : new Error(errorObj.e + ""); - this._promise._attachExtraTrace(trace); - e = errorObj.e; - break; - } else if (shouldHandle) { - var ret = tryCatch1(cb, boundTo, e); - if (ret === errorObj) { - NEXT_FILTER.e = ret.e; - return NEXT_FILTER; - } - return ret; - } - } - } - NEXT_FILTER.e = e; - return NEXT_FILTER; -}; - -return CatchFilter; -}; - -},{"./errors.js":10,"./es5.js":12,"./util.js":39}],9:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -var util = require("./util.js"); -var ASSERT = require("./assert.js"); -var isPrimitive = util.isPrimitive; -var wrapsPrimitiveReceiver = util.wrapsPrimitiveReceiver; - -module.exports = function(Promise) { -var returner = function Promise$_returner() { - return this; -}; -var thrower = function Promise$_thrower() { - throw this; -}; - -var wrapper = function Promise$_wrapper(value, action) { - if (action === 1) { - return function Promise$_thrower() { - throw value; - }; - } - else if (action === 2) { - return function Promise$_returner() { - return value; - }; - } -}; - - -Promise.prototype["return"] = -Promise.prototype.thenReturn = -function Promise$thenReturn(value) { - if (wrapsPrimitiveReceiver && isPrimitive(value)) { - return this._then( - wrapper(value, 2), - void 0, - void 0, - void 0, - void 0, - this.thenReturn - ); - } - return this._then(returner, void 0, void 0, - value, void 0, this.thenReturn); -}; - -Promise.prototype["throw"] = -Promise.prototype.thenThrow = -function Promise$thenThrow(reason) { - if (wrapsPrimitiveReceiver && isPrimitive(reason)) { - return this._then( - wrapper(reason, 1), - void 0, - void 0, - void 0, - void 0, - this.thenThrow - ); - } - return this._then(thrower, void 0, void 0, - reason, void 0, this.thenThrow); -}; -}; - -},{"./assert.js":2,"./util.js":39}],10:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -var global = require("./global.js"); -var Objectfreeze = require("./es5.js").freeze; -var util = require("./util.js"); -var inherits = util.inherits; -var notEnumerableProp = util.notEnumerableProp; -var Error = global.Error; - -function markAsOriginatingFromRejection(e) { - try { - notEnumerableProp(e, "isAsync", true); - } - catch(ignore) {} -} - -function originatesFromRejection(e) { - if (e == null) return false; - return ((e instanceof RejectionError) || - e["isAsync"] === true); -} - -function isError(obj) { - return obj instanceof Error; -} - -function canAttach(obj) { - return isError(obj); -} - -function subError(nameProperty, defaultMessage) { - function SubError(message) { - if (!(this instanceof SubError)) return new SubError(message); - this.message = typeof message === "string" ? message : defaultMessage; - this.name = nameProperty; - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - } - inherits(SubError, Error); - return SubError; -} - -var TypeError = global.TypeError; -if (typeof TypeError !== "function") { - TypeError = subError("TypeError", "type error"); -} -var RangeError = global.RangeError; -if (typeof RangeError !== "function") { - RangeError = subError("RangeError", "range error"); -} -var CancellationError = subError("CancellationError", "cancellation error"); -var TimeoutError = subError("TimeoutError", "timeout error"); - -function RejectionError(message) { - this.name = "RejectionError"; - this.message = message; - this.cause = message; - this.isAsync = true; - - if (message instanceof Error) { - this.message = message.message; - this.stack = message.stack; - } - else if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - -} -inherits(RejectionError, Error); - -var key = "__BluebirdErrorTypes__"; -var errorTypes = global[key]; -if (!errorTypes) { - errorTypes = Objectfreeze({ - CancellationError: CancellationError, - TimeoutError: TimeoutError, - RejectionError: RejectionError - }); - notEnumerableProp(global, key, errorTypes); -} - -module.exports = { - Error: Error, - TypeError: TypeError, - RangeError: RangeError, - CancellationError: errorTypes.CancellationError, - RejectionError: errorTypes.RejectionError, - TimeoutError: errorTypes.TimeoutError, - originatesFromRejection: originatesFromRejection, - markAsOriginatingFromRejection: markAsOriginatingFromRejection, - canAttach: canAttach -}; - -},{"./es5.js":12,"./global.js":16,"./util.js":39}],11:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise) { -var TypeError = require('./errors.js').TypeError; - -function apiRejection(msg) { - var error = new TypeError(msg); - var ret = Promise.rejected(error); - var parent = ret._peekContext(); - if (parent != null) { - parent._attachExtraTrace(error); - } - return ret; -} - -return apiRejection; -}; - -},{"./errors.js":10}],12:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -var isES5 = (function(){ - "use strict"; - return this === void 0; -})(); - -if (isES5) { - module.exports = { - freeze: Object.freeze, - defineProperty: Object.defineProperty, - keys: Object.keys, - getPrototypeOf: Object.getPrototypeOf, - isArray: Array.isArray, - isES5: isES5 - }; -} - -else { - var has = {}.hasOwnProperty; - var str = {}.toString; - var proto = {}.constructor.prototype; - - function ObjectKeys(o) { - var ret = []; - for (var key in o) { - if (has.call(o, key)) { - ret.push(key); - } - } - return ret; - } - - function ObjectDefineProperty(o, key, desc) { - o[key] = desc.value; - return o; - } - - function ObjectFreeze(obj) { - return obj; - } - - function ObjectGetPrototypeOf(obj) { - try { - return Object(obj).constructor.prototype; - } - catch (e) { - return proto; - } - } - - function ArrayIsArray(obj) { - try { - return str.call(obj) === "[object Array]"; - } - catch(e) { - return false; - } - } - - module.exports = { - isArray: ArrayIsArray, - keys: ObjectKeys, - defineProperty: ObjectDefineProperty, - freeze: ObjectFreeze, - getPrototypeOf: ObjectGetPrototypeOf, - isES5: isES5 - }; -} - -},{}],13:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise) { - var ASSERT = require("./assert.js"); - var isArray = require("./util.js").isArray; - - function Promise$_filter(booleans) { - var values = this._settledValue; - var len = values.length; - var ret = new Array(len); - var j = 0; - - for (var i = 0; i < len; ++i) { - if (booleans[i]) ret[j++] = values[i]; - - } - ret.length = j; - return ret; - } - - var ref = {ref: null}; - Promise.filter = function Promise$Filter(promises, fn) { - return Promise.map(promises, fn, ref) - ._then(Promise$_filter, void 0, void 0, - ref.ref, void 0, Promise.filter); - }; - - Promise.prototype.filter = function Promise$filter(fn) { - return this.map(fn, ref) - ._then(Promise$_filter, void 0, void 0, - ref.ref, void 0, this.filter); - }; -}; - -},{"./assert.js":2,"./util.js":39}],14:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -module.exports = function(Promise, NEXT_FILTER) { - var util = require("./util.js"); - var wrapsPrimitiveReceiver = util.wrapsPrimitiveReceiver; - var isPrimitive = util.isPrimitive; - var thrower = util.thrower; - - - function returnThis() { - return this; - } - function throwThis() { - throw this; - } - function makeReturner(r) { - return function Promise$_returner() { - return r; - }; - } - function makeThrower(r) { - return function Promise$_thrower() { - throw r; - }; - } - function promisedFinally(ret, reasonOrValue, isFulfilled) { - var useConstantFunction = - wrapsPrimitiveReceiver && isPrimitive(reasonOrValue); - - if (isFulfilled) { - return ret._then( - useConstantFunction - ? returnThis - : makeReturner(reasonOrValue), - thrower, void 0, reasonOrValue, void 0, promisedFinally); - } - else { - return ret._then( - useConstantFunction - ? throwThis - : makeThrower(reasonOrValue), - thrower, void 0, reasonOrValue, void 0, promisedFinally); - } - } - - function finallyHandler(reasonOrValue) { - var promise = this.promise; - var handler = this.handler; - - var ret = promise._isBound() - ? handler.call(promise._boundTo) - : handler(); - - if (ret !== void 0) { - var maybePromise = Promise._cast(ret, finallyHandler, void 0); - if (Promise.is(maybePromise)) { - return promisedFinally(maybePromise, reasonOrValue, - promise.isFulfilled()); - } - } - - if (promise.isRejected()) { - NEXT_FILTER.e = reasonOrValue; - return NEXT_FILTER; - } - else { - return reasonOrValue; - } - } - - Promise.prototype.lastly = Promise.prototype["finally"] = - function Promise$finally(handler) { - if (typeof handler !== "function") return this.then(); - - var promiseAndHandler = { - promise: this, - handler: handler - }; - - return this._then(finallyHandler, finallyHandler, void 0, - promiseAndHandler, void 0, this.lastly); - }; -}; - -},{"./util.js":39}],15:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, apiRejection, INTERNAL) { - var PromiseSpawn = require("./promise_spawn.js")(Promise, INTERNAL); - var errors = require("./errors.js"); - var TypeError = errors.TypeError; - var deprecated = require("./util.js").deprecated; - - Promise.coroutine = function Promise$Coroutine(generatorFunction) { - if (typeof generatorFunction !== "function") { - throw new TypeError("generatorFunction must be a function"); - } - var PromiseSpawn$ = PromiseSpawn; - return function anonymous() { - var generator = generatorFunction.apply(this, arguments); - var spawn = new PromiseSpawn$(void 0, void 0, anonymous); - spawn._generator = generator; - spawn._next(void 0); - return spawn.promise(); - }; - }; - - Promise.coroutine.addYieldHandler = PromiseSpawn.addYieldHandler; - - Promise.spawn = function Promise$Spawn(generatorFunction) { - deprecated("Promise.spawn is deprecated. Use Promise.coroutine instead."); - if (typeof generatorFunction !== "function") { - return apiRejection("generatorFunction must be a function"); - } - var spawn = new PromiseSpawn(generatorFunction, this, Promise.spawn); - var ret = spawn.promise(); - spawn._run(Promise.spawn); - return ret; - }; -}; - -},{"./errors.js":10,"./promise_spawn.js":24,"./util.js":39}],16:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = (function(){ - if (typeof this !== "undefined") { - return this; - } - if (typeof process !== "undefined" && - typeof global !== "undefined" && - typeof process.execPath === "string") { - return global; - } - if (typeof window !== "undefined" && - typeof document !== "undefined" && - typeof navigator !== "undefined" && navigator !== null && - typeof navigator.appName === "string") { - if(window.wrappedJSObject !== undefined){ - return window.wrappedJSObject; - } - return window; - } -})(); - -},{}],17:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function( - Promise, Promise$_CreatePromiseArray, PromiseArray, apiRejection) { - - var ASSERT = require("./assert.js"); - - function Promise$_mapper(values) { - var fn = this; - var receiver = void 0; - - if (typeof fn !== "function") { - receiver = fn.receiver; - fn = fn.fn; - } - var shouldDefer = false; - - var ret = new Array(values.length); - - if (receiver === void 0) { - for (var i = 0, len = values.length; i < len; ++i) { - var value = fn(values[i], i, len); - if (!shouldDefer) { - var maybePromise = Promise._cast(value, - Promise$_mapper, void 0); - if (maybePromise instanceof Promise) { - if (maybePromise.isFulfilled()) { - ret[i] = maybePromise._settledValue; - continue; - } - else { - shouldDefer = true; - } - value = maybePromise; - } - } - ret[i] = value; - } - } - else { - for (var i = 0, len = values.length; i < len; ++i) { - var value = fn.call(receiver, values[i], i, len); - if (!shouldDefer) { - var maybePromise = Promise._cast(value, - Promise$_mapper, void 0); - if (maybePromise instanceof Promise) { - if (maybePromise.isFulfilled()) { - ret[i] = maybePromise._settledValue; - continue; - } - else { - shouldDefer = true; - } - value = maybePromise; - } - } - ret[i] = value; - } - } - return shouldDefer - ? Promise$_CreatePromiseArray(ret, PromiseArray, - Promise$_mapper, void 0).promise() - : ret; - } - - function Promise$_Map(promises, fn, useBound, caller, ref) { - if (typeof fn !== "function") { - return apiRejection("fn must be a function"); - } - - if (useBound === true && promises._isBound()) { - fn = { - fn: fn, - receiver: promises._boundTo - }; - } - - var ret = Promise$_CreatePromiseArray( - promises, - PromiseArray, - caller, - useBound === true && promises._isBound() - ? promises._boundTo - : void 0 - ).promise(); - - if (ref !== void 0) { - ref.ref = ret; - } - - return ret._then( - Promise$_mapper, - void 0, - void 0, - fn, - void 0, - caller - ); - } - - Promise.prototype.map = function Promise$map(fn, ref) { - return Promise$_Map(this, fn, true, this.map, ref); - }; - - Promise.map = function Promise$Map(promises, fn, ref) { - return Promise$_Map(promises, fn, false, Promise.map, ref); - }; -}; - -},{"./assert.js":2}],18:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise) { - var util = require("./util.js"); - var async = require("./async.js"); - var ASSERT = require("./assert.js"); - var tryCatch2 = util.tryCatch2; - var tryCatch1 = util.tryCatch1; - var errorObj = util.errorObj; - - function thrower(r) { - throw r; - } - - function Promise$_successAdapter(val, receiver) { - var nodeback = this; - var ret = tryCatch2(nodeback, receiver, null, val); - if (ret === errorObj) { - async.invokeLater(thrower, void 0, ret.e); - } - } - function Promise$_errorAdapter(reason, receiver) { - var nodeback = this; - var ret = tryCatch1(nodeback, receiver, reason); - if (ret === errorObj) { - async.invokeLater(thrower, void 0, ret.e); - } - } - - Promise.prototype.nodeify = function Promise$nodeify(nodeback) { - if (typeof nodeback == "function") { - this._then( - Promise$_successAdapter, - Promise$_errorAdapter, - void 0, - nodeback, - this._isBound() ? this._boundTo : null, - this.nodeify - ); - } - return this; - }; -}; - -},{"./assert.js":2,"./async.js":3,"./util.js":39}],19:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, isPromiseArrayProxy) { - var ASSERT = require("./assert.js"); - var util = require("./util.js"); - var async = require("./async.js"); - var errors = require("./errors.js"); - var tryCatch1 = util.tryCatch1; - var errorObj = util.errorObj; - - Promise.prototype.progressed = function Promise$progressed(handler) { - return this._then(void 0, void 0, handler, - void 0, void 0, this.progressed); - }; - - Promise.prototype._progress = function Promise$_progress(progressValue) { - if (this._isFollowingOrFulfilledOrRejected()) return; - this._progressUnchecked(progressValue); - - }; - - Promise.prototype._progressHandlerAt = - function Promise$_progressHandlerAt(index) { - if (index === 0) return this._progressHandler0; - return this[index + 2 - 5]; - }; - - Promise.prototype._doProgressWith = - function Promise$_doProgressWith(progression) { - var progressValue = progression.value; - var handler = progression.handler; - var promise = progression.promise; - var receiver = progression.receiver; - - this._pushContext(); - var ret = tryCatch1(handler, receiver, progressValue); - this._popContext(); - - if (ret === errorObj) { - if (ret.e != null && - ret.e.name !== "StopProgressPropagation") { - var trace = errors.canAttach(ret.e) - ? ret.e : new Error(ret.e + ""); - promise._attachExtraTrace(trace); - promise._progress(ret.e); - } - } - else if (Promise.is(ret)) { - ret._then(promise._progress, null, null, promise, void 0, - this._progress); - } - else { - promise._progress(ret); - } - }; - - - Promise.prototype._progressUnchecked = - function Promise$_progressUnchecked(progressValue) { - if (!this.isPending()) return; - var len = this._length(); - - for (var i = 0; i < len; i += 5) { - var handler = this._progressHandlerAt(i); - var promise = this._promiseAt(i); - if (!Promise.is(promise)) { - var receiver = this._receiverAt(i); - if (typeof handler === "function") { - handler.call(receiver, progressValue, promise); - } - else if (Promise.is(receiver) && receiver._isProxied()) { - receiver._progressUnchecked(progressValue); - } - else if (isPromiseArrayProxy(receiver, promise)) { - receiver._promiseProgressed(progressValue, promise); - } - continue; - } - - if (typeof handler === "function") { - async.invoke(this._doProgressWith, this, { - handler: handler, - promise: promise, - receiver: this._receiverAt(i), - value: progressValue - }); - } - else { - async.invoke(promise._progress, promise, progressValue); - } - } - }; -}; - -},{"./assert.js":2,"./async.js":3,"./errors.js":10,"./util.js":39}],20:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function() { -var global = require("./global.js"); -var ASSERT = require("./assert.js"); -var util = require("./util.js"); -var async = require("./async.js"); -var errors = require("./errors.js"); - -var INTERNAL = function(){}; -var APPLY = {}; -var NEXT_FILTER = {e: null}; - -var PromiseArray = require("./promise_array.js")(Promise, INTERNAL); -var CapturedTrace = require("./captured_trace.js")(); -var CatchFilter = require("./catch_filter.js")(NEXT_FILTER); -var PromiseResolver = require("./promise_resolver.js"); - -var isArray = util.isArray; - -var errorObj = util.errorObj; -var tryCatch1 = util.tryCatch1; -var tryCatch2 = util.tryCatch2; -var tryCatchApply = util.tryCatchApply; -var RangeError = errors.RangeError; -var TypeError = errors.TypeError; -var CancellationError = errors.CancellationError; -var TimeoutError = errors.TimeoutError; -var RejectionError = errors.RejectionError; -var originatesFromRejection = errors.originatesFromRejection; -var markAsOriginatingFromRejection = errors.markAsOriginatingFromRejection; -var canAttach = errors.canAttach; -var thrower = util.thrower; -var apiRejection = require("./errors_api_rejection")(Promise); - - -var makeSelfResolutionError = function Promise$_makeSelfResolutionError() { - return new TypeError("circular promise resolution chain"); -}; - -function isPromise(obj) { - if (obj === void 0) return false; - return obj instanceof Promise; -} - -function isPromiseArrayProxy(receiver, promiseSlotValue) { - if (receiver instanceof PromiseArray) { - return promiseSlotValue >= 0; - } - return false; -} - -function Promise(resolver) { - if (typeof resolver !== "function") { - throw new TypeError("the promise constructor requires a resolver function"); - } - if (this.constructor !== Promise) { - throw new TypeError("the promise constructor cannot be invoked directly"); - } - this._bitField = 0; - this._fulfillmentHandler0 = void 0; - this._rejectionHandler0 = void 0; - this._promise0 = void 0; - this._receiver0 = void 0; - this._settledValue = void 0; - this._boundTo = void 0; - if (resolver !== INTERNAL) this._resolveFromResolver(resolver); -} - -Promise.prototype.bind = function Promise$bind(thisArg) { - var ret = new Promise(INTERNAL); - if (debugging) ret._setTrace(this.bind, this); - ret._follow(this); - ret._setBoundTo(thisArg); - if (this._cancellable()) { - ret._setCancellable(); - ret._cancellationParent = this; - } - return ret; -}; - -Promise.prototype.toString = function Promise$toString() { - return "[object Promise]"; -}; - -Promise.prototype.caught = Promise.prototype["catch"] = -function Promise$catch(fn) { - var len = arguments.length; - if (len > 1) { - var catchInstances = new Array(len - 1), - j = 0, i; - for (i = 0; i < len - 1; ++i) { - var item = arguments[i]; - if (typeof item === "function") { - catchInstances[j++] = item; - } - else { - var catchFilterTypeError = - new TypeError( - "A catch filter must be an error constructor " - + "or a filter function"); - - this._attachExtraTrace(catchFilterTypeError); - async.invoke(this._reject, this, catchFilterTypeError); - return; - } - } - catchInstances.length = j; - fn = arguments[i]; - - this._resetTrace(this.caught); - var catchFilter = new CatchFilter(catchInstances, fn, this); - return this._then(void 0, catchFilter.doFilter, void 0, - catchFilter, void 0, this.caught); - } - return this._then(void 0, fn, void 0, void 0, void 0, this.caught); -}; - -Promise.prototype.then = -function Promise$then(didFulfill, didReject, didProgress) { - return this._then(didFulfill, didReject, didProgress, - void 0, void 0, this.then); -}; - - -Promise.prototype.done = -function Promise$done(didFulfill, didReject, didProgress) { - var promise = this._then(didFulfill, didReject, didProgress, - void 0, void 0, this.done); - promise._setIsFinal(); -}; - -Promise.prototype.spread = function Promise$spread(didFulfill, didReject) { - return this._then(didFulfill, didReject, void 0, - APPLY, void 0, this.spread); -}; - -Promise.prototype.isFulfilled = function Promise$isFulfilled() { - return (this._bitField & 268435456) > 0; -}; - - -Promise.prototype.isRejected = function Promise$isRejected() { - return (this._bitField & 134217728) > 0; -}; - -Promise.prototype.isPending = function Promise$isPending() { - return !this.isResolved(); -}; - - -Promise.prototype.isResolved = function Promise$isResolved() { - return (this._bitField & 402653184) > 0; -}; - - -Promise.prototype.isCancellable = function Promise$isCancellable() { - return !this.isResolved() && - this._cancellable(); -}; - -Promise.prototype.toJSON = function Promise$toJSON() { - var ret = { - isFulfilled: false, - isRejected: false, - fulfillmentValue: void 0, - rejectionReason: void 0 - }; - if (this.isFulfilled()) { - ret.fulfillmentValue = this._settledValue; - ret.isFulfilled = true; - } - else if (this.isRejected()) { - ret.rejectionReason = this._settledValue; - ret.isRejected = true; - } - return ret; -}; - -Promise.prototype.all = function Promise$all() { - return Promise$_all(this, true, this.all); -}; - - -Promise.is = isPromise; - -function Promise$_all(promises, useBound, caller) { - return Promise$_CreatePromiseArray( - promises, - PromiseArray, - caller, - useBound === true && promises._isBound() - ? promises._boundTo - : void 0 - ).promise(); -} -Promise.all = function Promise$All(promises) { - return Promise$_all(promises, false, Promise.all); -}; - -Promise.join = function Promise$Join() { - var $_len = arguments.length;var args = new Array($_len); for(var $_i = 0; $_i < $_len; ++$_i) {args[$_i] = arguments[$_i];} - return Promise$_CreatePromiseArray( - args, PromiseArray, Promise.join, void 0).promise(); -}; - -Promise.resolve = Promise.fulfilled = -function Promise$Resolve(value, caller) { - var ret = new Promise(INTERNAL); - if (debugging) ret._setTrace(typeof caller === "function" - ? caller - : Promise.resolve, void 0); - if (ret._tryFollow(value)) { - return ret; - } - ret._cleanValues(); - ret._setFulfilled(); - ret._settledValue = value; - return ret; -}; - -Promise.reject = Promise.rejected = function Promise$Reject(reason) { - var ret = new Promise(INTERNAL); - if (debugging) ret._setTrace(Promise.reject, void 0); - markAsOriginatingFromRejection(reason); - ret._cleanValues(); - ret._setRejected(); - ret._settledValue = reason; - if (!canAttach(reason)) { - var trace = new Error(reason + ""); - ret._setCarriedStackTrace(trace); - } - ret._ensurePossibleRejectionHandled(); - return ret; -}; - -Promise.prototype.error = function Promise$_error(fn) { - return this.caught(originatesFromRejection, fn); -}; - -Promise.prototype._resolveFromSyncValue = -function Promise$_resolveFromSyncValue(value, caller) { - if (value === errorObj) { - this._cleanValues(); - this._setRejected(); - this._settledValue = value.e; - this._ensurePossibleRejectionHandled(); - } - else { - var maybePromise = Promise._cast(value, caller, void 0); - if (maybePromise instanceof Promise) { - this._follow(maybePromise); - } - else { - this._cleanValues(); - this._setFulfilled(); - this._settledValue = value; - } - } -}; - -Promise.method = function Promise$_Method(fn) { - if (typeof fn !== "function") { - throw new TypeError("fn must be a function"); - } - return function Promise$_method() { - var value; - switch(arguments.length) { - case 0: value = tryCatch1(fn, this, void 0); break; - case 1: value = tryCatch1(fn, this, arguments[0]); break; - case 2: value = tryCatch2(fn, this, arguments[0], arguments[1]); break; - default: - var $_len = arguments.length;var args = new Array($_len); for(var $_i = 0; $_i < $_len; ++$_i) {args[$_i] = arguments[$_i];} - value = tryCatchApply(fn, args, this); break; - } - var ret = new Promise(INTERNAL); - if (debugging) ret._setTrace(Promise$_method, void 0); - ret._resolveFromSyncValue(value, Promise$_method); - return ret; - }; -}; - -Promise.attempt = Promise["try"] = function Promise$_Try(fn, args, ctx) { - - if (typeof fn !== "function") { - return apiRejection("fn must be a function"); - } - var value = isArray(args) - ? tryCatchApply(fn, args, ctx) - : tryCatch1(fn, ctx, args); - - var ret = new Promise(INTERNAL); - if (debugging) ret._setTrace(Promise.attempt, void 0); - ret._resolveFromSyncValue(value, Promise.attempt); - return ret; -}; - -Promise.defer = Promise.pending = function Promise$Defer(caller) { - var promise = new Promise(INTERNAL); - if (debugging) promise._setTrace(typeof caller === "function" - ? caller : Promise.defer, void 0); - return new PromiseResolver(promise); -}; - -Promise.bind = function Promise$Bind(thisArg) { - var ret = new Promise(INTERNAL); - if (debugging) ret._setTrace(Promise.bind, void 0); - ret._setFulfilled(); - ret._setBoundTo(thisArg); - return ret; -}; - -Promise.cast = function Promise$_Cast(obj, caller) { - if (typeof caller !== "function") { - caller = Promise.cast; - } - var ret = Promise._cast(obj, caller, void 0); - if (!(ret instanceof Promise)) { - return Promise.resolve(ret, caller); - } - return ret; -}; - -Promise.onPossiblyUnhandledRejection = -function Promise$OnPossiblyUnhandledRejection(fn) { - if (typeof fn === "function") { - CapturedTrace.possiblyUnhandledRejection = fn; - } - else { - CapturedTrace.possiblyUnhandledRejection = void 0; - } -}; - -var debugging = false || !!( - typeof process !== "undefined" && - typeof process.execPath === "string" && - typeof process.env === "object" && - (process.env["BLUEBIRD_DEBUG"] || - process.env["NODE_ENV"] === "development") -); - - -Promise.longStackTraces = function Promise$LongStackTraces() { - if (async.haveItemsQueued() && - debugging === false - ) { - throw new Error("cannot enable long stack traces after promises have been created"); - } - debugging = CapturedTrace.isSupported(); -}; - -Promise.hasLongStackTraces = function Promise$HasLongStackTraces() { - return debugging && CapturedTrace.isSupported(); -}; - -Promise.prototype._setProxyHandlers = -function Promise$_setProxyHandlers(receiver, promiseSlotValue) { - var index = this._length(); - - if (index >= 1048575 - 5) { - index = 0; - this._setLength(0); - } - if (index === 0) { - this._promise0 = promiseSlotValue; - this._receiver0 = receiver; - } - else { - var i = index - 5; - this[i + 3] = promiseSlotValue; - this[i + 4] = receiver; - this[i + 0] = - this[i + 1] = - this[i + 2] = void 0; - } - this._setLength(index + 5); -}; - -Promise.prototype._proxyPromiseArray = -function Promise$_proxyPromiseArray(promiseArray, index) { - this._setProxyHandlers(promiseArray, index); -}; - -Promise.prototype._proxyPromise = function Promise$_proxyPromise(promise) { - promise._setProxied(); - this._setProxyHandlers(promise, -1); -}; - -Promise.prototype._then = -function Promise$_then( - didFulfill, - didReject, - didProgress, - receiver, - internalData, - caller -) { - var haveInternalData = internalData !== void 0; - var ret = haveInternalData ? internalData : new Promise(INTERNAL); - - if (debugging && !haveInternalData) { - var haveSameContext = this._peekContext() === this._traceParent; - ret._traceParent = haveSameContext ? this._traceParent : this; - ret._setTrace(typeof caller === "function" - ? caller - : this._then, this); - } - - if (!haveInternalData && this._isBound()) { - ret._setBoundTo(this._boundTo); - } - - var callbackIndex = - this._addCallbacks(didFulfill, didReject, didProgress, ret, receiver); - - if (!haveInternalData && this._cancellable()) { - ret._setCancellable(); - ret._cancellationParent = this; - } - - if (this.isResolved()) { - async.invoke(this._queueSettleAt, this, callbackIndex); - } - - return ret; -}; - -Promise.prototype._length = function Promise$_length() { - return this._bitField & 1048575; -}; - -Promise.prototype._isFollowingOrFulfilledOrRejected = -function Promise$_isFollowingOrFulfilledOrRejected() { - return (this._bitField & 939524096) > 0; -}; - -Promise.prototype._isFollowing = function Promise$_isFollowing() { - return (this._bitField & 536870912) === 536870912; -}; - -Promise.prototype._setLength = function Promise$_setLength(len) { - this._bitField = (this._bitField & -1048576) | - (len & 1048575); -}; - -Promise.prototype._setFulfilled = function Promise$_setFulfilled() { - this._bitField = this._bitField | 268435456; -}; - -Promise.prototype._setRejected = function Promise$_setRejected() { - this._bitField = this._bitField | 134217728; -}; - -Promise.prototype._setFollowing = function Promise$_setFollowing() { - this._bitField = this._bitField | 536870912; -}; - -Promise.prototype._setIsFinal = function Promise$_setIsFinal() { - this._bitField = this._bitField | 33554432; -}; - -Promise.prototype._isFinal = function Promise$_isFinal() { - return (this._bitField & 33554432) > 0; -}; - -Promise.prototype._cancellable = function Promise$_cancellable() { - return (this._bitField & 67108864) > 0; -}; - -Promise.prototype._setCancellable = function Promise$_setCancellable() { - this._bitField = this._bitField | 67108864; -}; - -Promise.prototype._unsetCancellable = function Promise$_unsetCancellable() { - this._bitField = this._bitField & (~67108864); -}; - -Promise.prototype._setRejectionIsUnhandled = -function Promise$_setRejectionIsUnhandled() { - this._bitField = this._bitField | 2097152; -}; - -Promise.prototype._unsetRejectionIsUnhandled = -function Promise$_unsetRejectionIsUnhandled() { - this._bitField = this._bitField & (~2097152); -}; - -Promise.prototype._isRejectionUnhandled = -function Promise$_isRejectionUnhandled() { - return (this._bitField & 2097152) > 0; -}; - -Promise.prototype._setCarriedStackTrace = -function Promise$_setCarriedStackTrace(capturedTrace) { - this._bitField = this._bitField | 1048576; - this._fulfillmentHandler0 = capturedTrace; -}; - -Promise.prototype._unsetCarriedStackTrace = -function Promise$_unsetCarriedStackTrace() { - this._bitField = this._bitField & (~1048576); - this._fulfillmentHandler0 = void 0; -}; - -Promise.prototype._isCarryingStackTrace = -function Promise$_isCarryingStackTrace() { - return (this._bitField & 1048576) > 0; -}; - -Promise.prototype._getCarriedStackTrace = -function Promise$_getCarriedStackTrace() { - return this._isCarryingStackTrace() - ? this._fulfillmentHandler0 - : void 0; -}; - -Promise.prototype._receiverAt = function Promise$_receiverAt(index) { - var ret; - if (index === 0) { - ret = this._receiver0; - } - else { - ret = this[index + 4 - 5]; - } - if (this._isBound() && ret === void 0) { - return this._boundTo; - } - return ret; -}; - -Promise.prototype._promiseAt = function Promise$_promiseAt(index) { - if (index === 0) return this._promise0; - return this[index + 3 - 5]; -}; - -Promise.prototype._fulfillmentHandlerAt = -function Promise$_fulfillmentHandlerAt(index) { - if (index === 0) return this._fulfillmentHandler0; - return this[index + 0 - 5]; -}; - -Promise.prototype._rejectionHandlerAt = -function Promise$_rejectionHandlerAt(index) { - if (index === 0) return this._rejectionHandler0; - return this[index + 1 - 5]; -}; - -Promise.prototype._unsetAt = function Promise$_unsetAt(index) { - if (index === 0) { - this._rejectionHandler0 = - this._progressHandler0 = - this._promise0 = - this._receiver0 = void 0; - if (!this._isCarryingStackTrace()) { - this._fulfillmentHandler0 = void 0; - } - } - else { - this[index - 5 + 0] = - this[index - 5 + 1] = - this[index - 5 + 2] = - this[index - 5 + 3] = - this[index - 5 + 4] = void 0; - } -}; - -Promise.prototype._resolveFromResolver = -function Promise$_resolveFromResolver(resolver) { - var promise = this; - var localDebugging = debugging; - if (localDebugging) { - this._setTrace(this._resolveFromResolver, void 0); - this._pushContext(); - } - function Promise$_resolver(val) { - if (promise._tryFollow(val)) { - return; - } - promise._fulfill(val); - } - function Promise$_rejecter(val) { - var trace = canAttach(val) ? val : new Error(val + ""); - promise._attachExtraTrace(trace); - markAsOriginatingFromRejection(val); - promise._reject(val, trace === val ? void 0 : trace); - } - var r = tryCatch2(resolver, void 0, Promise$_resolver, Promise$_rejecter); - if (localDebugging) this._popContext(); - - if (r !== void 0 && r === errorObj) { - var trace = canAttach(r.e) ? r.e : new Error(r.e + ""); - promise._reject(r.e, trace); - } -}; - -Promise.prototype._addCallbacks = function Promise$_addCallbacks( - fulfill, - reject, - progress, - promise, - receiver -) { - var index = this._length(); - - if (index >= 1048575 - 5) { - index = 0; - this._setLength(0); - } - - if (index === 0) { - this._promise0 = promise; - if (receiver !== void 0) this._receiver0 = receiver; - if (typeof fulfill === "function" && !this._isCarryingStackTrace()) - this._fulfillmentHandler0 = fulfill; - if (typeof reject === "function") this._rejectionHandler0 = reject; - if (typeof progress === "function") this._progressHandler0 = progress; - } - else { - var i = index - 5; - this[i + 3] = promise; - this[i + 4] = receiver; - this[i + 0] = typeof fulfill === "function" - ? fulfill : void 0; - this[i + 1] = typeof reject === "function" - ? reject : void 0; - this[i + 2] = typeof progress === "function" - ? progress : void 0; - } - this._setLength(index + 5); - return index; -}; - - - -Promise.prototype._setBoundTo = function Promise$_setBoundTo(obj) { - if (obj !== void 0) { - this._bitField = this._bitField | 8388608; - this._boundTo = obj; - } - else { - this._bitField = this._bitField & (~8388608); - } -}; - -Promise.prototype._isBound = function Promise$_isBound() { - return (this._bitField & 8388608) === 8388608; -}; - -Promise.prototype._spreadSlowCase = -function Promise$_spreadSlowCase(targetFn, promise, values, boundTo) { - var promiseForAll = - Promise$_CreatePromiseArray - (values, PromiseArray, this._spreadSlowCase, boundTo) - .promise() - ._then(function() { - return targetFn.apply(boundTo, arguments); - }, void 0, void 0, APPLY, void 0, this._spreadSlowCase); - - promise._follow(promiseForAll); -}; - -Promise.prototype._callSpread = -function Promise$_callSpread(handler, promise, value, localDebugging) { - var boundTo = this._isBound() ? this._boundTo : void 0; - if (isArray(value)) { - var caller = this._settlePromiseFromHandler; - for (var i = 0, len = value.length; i < len; ++i) { - if (isPromise(Promise._cast(value[i], caller, void 0))) { - this._spreadSlowCase(handler, promise, value, boundTo); - return; - } - } - } - if (localDebugging) promise._pushContext(); - return tryCatchApply(handler, value, boundTo); -}; - -Promise.prototype._callHandler = -function Promise$_callHandler( - handler, receiver, promise, value, localDebugging) { - var x; - if (receiver === APPLY && !this.isRejected()) { - x = this._callSpread(handler, promise, value, localDebugging); - } - else { - if (localDebugging) promise._pushContext(); - x = tryCatch1(handler, receiver, value); - } - if (localDebugging) promise._popContext(); - return x; -}; - -Promise.prototype._settlePromiseFromHandler = -function Promise$_settlePromiseFromHandler( - handler, receiver, value, promise -) { - if (!isPromise(promise)) { - handler.call(receiver, value, promise); - return; - } - - var localDebugging = debugging; - var x = this._callHandler(handler, receiver, - promise, value, localDebugging); - - if (promise._isFollowing()) return; - - if (x === errorObj || x === promise || x === NEXT_FILTER) { - var err = x === promise - ? makeSelfResolutionError() - : x.e; - var trace = canAttach(err) ? err : new Error(err + ""); - if (x !== NEXT_FILTER) promise._attachExtraTrace(trace); - promise._rejectUnchecked(err, trace); - } - else { - var castValue = Promise._cast(x, - localDebugging ? this._settlePromiseFromHandler : void 0, - promise); - - if (isPromise(castValue)) { - if (castValue.isRejected() && - !castValue._isCarryingStackTrace() && - !canAttach(castValue._settledValue)) { - var trace = new Error(castValue._settledValue + ""); - promise._attachExtraTrace(trace); - castValue._setCarriedStackTrace(trace); - } - promise._follow(castValue); - if (castValue._cancellable()) { - promise._cancellationParent = castValue; - promise._setCancellable(); - } - } - else { - promise._fulfillUnchecked(x); - } - } -}; - -Promise.prototype._follow = -function Promise$_follow(promise) { - this._setFollowing(); - - if (promise.isPending()) { - if (promise._cancellable() ) { - this._cancellationParent = promise; - this._setCancellable(); - } - promise._proxyPromise(this); - } - else if (promise.isFulfilled()) { - this._fulfillUnchecked(promise._settledValue); - } - else { - this._rejectUnchecked(promise._settledValue, - promise._getCarriedStackTrace()); - } - - if (promise._isRejectionUnhandled()) promise._unsetRejectionIsUnhandled(); - - if (debugging && - promise._traceParent == null) { - promise._traceParent = this; - } -}; - -Promise.prototype._tryFollow = -function Promise$_tryFollow(value) { - if (this._isFollowingOrFulfilledOrRejected() || - value === this) { - return false; - } - var maybePromise = Promise._cast(value, this._tryFollow, void 0); - if (!isPromise(maybePromise)) { - return false; - } - this._follow(maybePromise); - return true; -}; - -Promise.prototype._resetTrace = function Promise$_resetTrace(caller) { - if (debugging) { - var context = this._peekContext(); - var isTopLevel = context === void 0; - this._trace = new CapturedTrace( - typeof caller === "function" - ? caller - : this._resetTrace, - isTopLevel - ); - } -}; - -Promise.prototype._setTrace = function Promise$_setTrace(caller, parent) { - if (debugging) { - var context = this._peekContext(); - this._traceParent = context; - var isTopLevel = context === void 0; - if (parent !== void 0 && - parent._traceParent === context) { - this._trace = parent._trace; - } - else { - this._trace = new CapturedTrace( - typeof caller === "function" - ? caller - : this._setTrace, - isTopLevel - ); - } - } - return this; -}; - -Promise.prototype._attachExtraTrace = -function Promise$_attachExtraTrace(error) { - if (debugging) { - var promise = this; - var stack = error.stack; - stack = typeof stack === "string" - ? stack.split("\n") : []; - var headerLineCount = 1; - - while(promise != null && - promise._trace != null) { - stack = CapturedTrace.combine( - stack, - promise._trace.stack.split("\n") - ); - promise = promise._traceParent; - } - - var max = Error.stackTraceLimit + headerLineCount; - var len = stack.length; - if (len > max) { - stack.length = max; - } - if (stack.length <= headerLineCount) { - error.stack = "(No stack trace)"; - } - else { - error.stack = stack.join("\n"); - } - } -}; - -Promise.prototype._cleanValues = function Promise$_cleanValues() { - if (this._cancellable()) { - this._cancellationParent = void 0; - } -}; - -Promise.prototype._fulfill = function Promise$_fulfill(value) { - if (this._isFollowingOrFulfilledOrRejected()) return; - this._fulfillUnchecked(value); -}; - -Promise.prototype._reject = -function Promise$_reject(reason, carriedStackTrace) { - if (this._isFollowingOrFulfilledOrRejected()) return; - this._rejectUnchecked(reason, carriedStackTrace); -}; - -Promise.prototype._settlePromiseAt = function Promise$_settlePromiseAt(index) { - var handler = this.isFulfilled() - ? this._fulfillmentHandlerAt(index) - : this._rejectionHandlerAt(index); - - var value = this._settledValue; - var receiver = this._receiverAt(index); - var promise = this._promiseAt(index); - - if (typeof handler === "function") { - this._settlePromiseFromHandler(handler, receiver, value, promise); - } - else { - var done = false; - var isFulfilled = this.isFulfilled(); - if (receiver !== void 0) { - if (receiver instanceof Promise && - receiver._isProxied()) { - receiver._unsetProxied(); - - if (isFulfilled) receiver._fulfillUnchecked(value); - else receiver._rejectUnchecked(value, - this._getCarriedStackTrace()); - done = true; - } - else if (isPromiseArrayProxy(receiver, promise)) { - - if (isFulfilled) receiver._promiseFulfilled(value, promise); - else receiver._promiseRejected(value, promise); - - done = true; - } - } - - if (!done) { - - if (isFulfilled) promise._fulfill(value); - else promise._reject(value, this._getCarriedStackTrace()); - - } - } - - if (index >= 256) { - this._queueGC(); - } -}; - -Promise.prototype._isProxied = function Promise$_isProxied() { - return (this._bitField & 4194304) === 4194304; -}; - -Promise.prototype._setProxied = function Promise$_setProxied() { - this._bitField = this._bitField | 4194304; -}; - -Promise.prototype._unsetProxied = function Promise$_unsetProxied() { - this._bitField = this._bitField & (~4194304); -}; - -Promise.prototype._isGcQueued = function Promise$_isGcQueued() { - return (this._bitField & -1073741824) === -1073741824; -}; - -Promise.prototype._setGcQueued = function Promise$_setGcQueued() { - this._bitField = this._bitField | -1073741824; -}; - -Promise.prototype._unsetGcQueued = function Promise$_unsetGcQueued() { - this._bitField = this._bitField & (~-1073741824); -}; - -Promise.prototype._queueGC = function Promise$_queueGC() { - if (this._isGcQueued()) return; - this._setGcQueued(); - async.invokeLater(this._gc, this, void 0); -}; - -Promise.prototype._gc = function Promise$gc() { - var len = this._length(); - this._unsetAt(0); - for (var i = 0; i < len; i++) { - delete this[i]; - } - this._setLength(0); - this._unsetGcQueued(); -}; - -Promise.prototype._queueSettleAt = function Promise$_queueSettleAt(index) { - if (this._isRejectionUnhandled()) this._unsetRejectionIsUnhandled(); - async.invoke(this._settlePromiseAt, this, index); -}; - -Promise.prototype._fulfillUnchecked = -function Promise$_fulfillUnchecked(value) { - if (!this.isPending()) return; - if (value === this) { - var err = makeSelfResolutionError(); - this._attachExtraTrace(err); - return this._rejectUnchecked(err, void 0); - } - this._cleanValues(); - this._setFulfilled(); - this._settledValue = value; - var len = this._length(); - - if (len > 0) { - async.invoke(this._fulfillPromises, this, len); - } -}; - -Promise.prototype._rejectUncheckedCheckError = -function Promise$_rejectUncheckedCheckError(reason) { - var trace = canAttach(reason) ? reason : new Error(reason + ""); - this._rejectUnchecked(reason, trace === reason ? void 0 : trace); -}; - -Promise.prototype._rejectUnchecked = -function Promise$_rejectUnchecked(reason, trace) { - if (!this.isPending()) return; - if (reason === this) { - var err = makeSelfResolutionError(); - this._attachExtraTrace(err); - return this._rejectUnchecked(err); - } - this._cleanValues(); - this._setRejected(); - this._settledValue = reason; - - if (this._isFinal()) { - async.invokeLater(thrower, void 0, trace === void 0 ? reason : trace); - return; - } - var len = this._length(); - - if (trace !== void 0) this._setCarriedStackTrace(trace); - - if (len > 0) { - async.invoke(this._rejectPromises, this, len); - } - else { - this._ensurePossibleRejectionHandled(); - } -}; - -Promise.prototype._rejectPromises = function Promise$_rejectPromises(len) { - len = this._length(); - for (var i = 0; i < len; i+= 5) { - this._settlePromiseAt(i); - } - this._unsetCarriedStackTrace(); -}; - -Promise.prototype._fulfillPromises = function Promise$_fulfillPromises(len) { - len = this._length(); - for (var i = 0; i < len; i+= 5) { - this._settlePromiseAt(i); - } -}; - -Promise.prototype._ensurePossibleRejectionHandled = -function Promise$_ensurePossibleRejectionHandled() { - this._setRejectionIsUnhandled(); - if (CapturedTrace.possiblyUnhandledRejection !== void 0) { - async.invokeLater(this._notifyUnhandledRejection, this, void 0); - } -}; - -Promise.prototype._notifyUnhandledRejection = -function Promise$_notifyUnhandledRejection() { - if (this._isRejectionUnhandled()) { - var reason = this._settledValue; - var trace = this._getCarriedStackTrace(); - - this._unsetRejectionIsUnhandled(); - - if (trace !== void 0) { - this._unsetCarriedStackTrace(); - reason = trace; - } - if (typeof CapturedTrace.possiblyUnhandledRejection === "function") { - CapturedTrace.possiblyUnhandledRejection(reason, this); - } - } -}; - -var contextStack = []; -Promise.prototype._peekContext = function Promise$_peekContext() { - var lastIndex = contextStack.length - 1; - if (lastIndex >= 0) { - return contextStack[lastIndex]; - } - return void 0; - -}; - -Promise.prototype._pushContext = function Promise$_pushContext() { - if (!debugging) return; - contextStack.push(this); -}; - -Promise.prototype._popContext = function Promise$_popContext() { - if (!debugging) return; - contextStack.pop(); -}; - -function Promise$_CreatePromiseArray( - promises, PromiseArrayConstructor, caller, boundTo) { - - var list = null; - if (isArray(promises)) { - list = promises; - } - else { - list = Promise._cast(promises, caller, void 0); - if (list !== promises) { - list._setBoundTo(boundTo); - } - else if (!isPromise(list)) { - list = null; - } - } - if (list !== null) { - return new PromiseArrayConstructor( - list, - typeof caller === "function" - ? caller - : Promise$_CreatePromiseArray, - boundTo - ); - } - return { - promise: function() {return apiRejection("expecting an array, a promise or a thenable");} - }; -} - -var old = global.Promise; - -Promise.noConflict = function() { - if (global.Promise === Promise) { - global.Promise = old; - } - return Promise; -}; - -if (!CapturedTrace.isSupported()) { - Promise.longStackTraces = function(){}; - debugging = false; -} - -Promise._makeSelfResolutionError = makeSelfResolutionError; -require("./finally.js")(Promise, NEXT_FILTER); -require("./direct_resolve.js")(Promise); -require("./thenables.js")(Promise, INTERNAL); -Promise.RangeError = RangeError; -Promise.CancellationError = CancellationError; -Promise.TimeoutError = TimeoutError; -Promise.TypeError = TypeError; -Promise.RejectionError = RejectionError; -require('./timers.js')(Promise,INTERNAL); -require('./synchronous_inspection.js')(Promise); -require('./any.js')(Promise,Promise$_CreatePromiseArray,PromiseArray); -require('./race.js')(Promise,INTERNAL); -require('./call_get.js')(Promise); -require('./filter.js')(Promise,Promise$_CreatePromiseArray,PromiseArray,apiRejection); -require('./generators.js')(Promise,apiRejection,INTERNAL); -require('./map.js')(Promise,Promise$_CreatePromiseArray,PromiseArray,apiRejection); -require('./nodeify.js')(Promise); -require('./promisify.js')(Promise,INTERNAL); -require('./props.js')(Promise,PromiseArray); -require('./reduce.js')(Promise,Promise$_CreatePromiseArray,PromiseArray,apiRejection,INTERNAL); -require('./settle.js')(Promise,Promise$_CreatePromiseArray,PromiseArray); -require('./some.js')(Promise,Promise$_CreatePromiseArray,PromiseArray,apiRejection); -require('./progress.js')(Promise,isPromiseArrayProxy); -require('./cancel.js')(Promise,INTERNAL); - -Promise.prototype = Promise.prototype; -return Promise; - -}; - -},{"./any.js":1,"./assert.js":2,"./async.js":3,"./call_get.js":5,"./cancel.js":6,"./captured_trace.js":7,"./catch_filter.js":8,"./direct_resolve.js":9,"./errors.js":10,"./errors_api_rejection":11,"./filter.js":13,"./finally.js":14,"./generators.js":15,"./global.js":16,"./map.js":17,"./nodeify.js":18,"./progress.js":19,"./promise_array.js":21,"./promise_resolver.js":23,"./promisify.js":25,"./props.js":27,"./race.js":29,"./reduce.js":30,"./settle.js":32,"./some.js":34,"./synchronous_inspection.js":36,"./thenables.js":37,"./timers.js":38,"./util.js":39}],21:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var ASSERT = require("./assert.js"); -var canAttach = require("./errors.js").canAttach; -var util = require("./util.js"); -var async = require("./async.js"); -var hasOwn = {}.hasOwnProperty; -var isArray = util.isArray; - -function toResolutionValue(val) { - switch(val) { - case -1: return void 0; - case -2: return []; - case -3: return {}; - } -} - -function PromiseArray(values, caller, boundTo) { - var promise = this._promise = new Promise(INTERNAL); - var parent = void 0; - if (Promise.is(values)) { - parent = values; - if (values._cancellable()) { - promise._setCancellable(); - promise._cancellationParent = values; - } - if (values._isBound()) { - promise._setBoundTo(boundTo); - } - } - promise._setTrace(caller, parent); - this._values = values; - this._length = 0; - this._totalResolved = 0; - this._init(void 0, -2); -} -PromiseArray.PropertiesPromiseArray = function() {}; - -PromiseArray.prototype.length = function PromiseArray$length() { - return this._length; -}; - -PromiseArray.prototype.promise = function PromiseArray$promise() { - return this._promise; -}; - -PromiseArray.prototype._init = -function PromiseArray$_init(_, resolveValueIfEmpty) { - var values = this._values; - if (Promise.is(values)) { - if (values.isFulfilled()) { - values = values._settledValue; - if (!isArray(values)) { - var err = new Promise.TypeError("expecting an array, a promise or a thenable"); - this.__hardReject__(err); - return; - } - this._values = values; - } - else if (values.isPending()) { - values._then( - this._init, - this._reject, - void 0, - this, - resolveValueIfEmpty, - this.constructor - ); - return; - } - else { - this._reject(values._settledValue); - return; - } - } - - if (values.length === 0) { - this._resolve(toResolutionValue(resolveValueIfEmpty)); - return; - } - var len = values.length; - var newLen = len; - var newValues; - if (this instanceof PromiseArray.PropertiesPromiseArray) { - newValues = this._values; - } - else { - newValues = new Array(len); - } - var isDirectScanNeeded = false; - for (var i = 0; i < len; ++i) { - var promise = values[i]; - if (promise === void 0 && !hasOwn.call(values, i)) { - newLen--; - continue; - } - var maybePromise = Promise._cast(promise, void 0, void 0); - if (maybePromise instanceof Promise && - maybePromise.isPending()) { - maybePromise._proxyPromiseArray(this, i); - } - else { - isDirectScanNeeded = true; - } - newValues[i] = maybePromise; - } - if (newLen === 0) { - if (resolveValueIfEmpty === -2) { - this._resolve(newValues); - } - else { - this._resolve(toResolutionValue(resolveValueIfEmpty)); - } - return; - } - this._values = newValues; - this._length = newLen; - if (isDirectScanNeeded) { - var scanMethod = newLen === len - ? this._scanDirectValues - : this._scanDirectValuesHoled; - async.invoke(scanMethod, this, len); - } -}; - -PromiseArray.prototype._settlePromiseAt = -function PromiseArray$_settlePromiseAt(index) { - var value = this._values[index]; - if (!Promise.is(value)) { - this._promiseFulfilled(value, index); - } - else if (value.isFulfilled()) { - this._promiseFulfilled(value._settledValue, index); - } - else if (value.isRejected()) { - this._promiseRejected(value._settledValue, index); - } -}; - -PromiseArray.prototype._scanDirectValuesHoled = -function PromiseArray$_scanDirectValuesHoled(len) { - for (var i = 0; i < len; ++i) { - if (this._isResolved()) { - break; - } - if (hasOwn.call(this._values, i)) { - this._settlePromiseAt(i); - } - } -}; - -PromiseArray.prototype._scanDirectValues = -function PromiseArray$_scanDirectValues(len) { - for (var i = 0; i < len; ++i) { - if (this._isResolved()) { - break; - } - this._settlePromiseAt(i); - } -}; - -PromiseArray.prototype._isResolved = function PromiseArray$_isResolved() { - return this._values === null; -}; - -PromiseArray.prototype._resolve = function PromiseArray$_resolve(value) { - this._values = null; - this._promise._fulfill(value); -}; - -PromiseArray.prototype.__hardReject__ = -PromiseArray.prototype._reject = function PromiseArray$_reject(reason) { - this._values = null; - var trace = canAttach(reason) ? reason : new Error(reason + ""); - this._promise._attachExtraTrace(trace); - this._promise._reject(reason, trace); -}; - -PromiseArray.prototype._promiseProgressed = -function PromiseArray$_promiseProgressed(progressValue, index) { - if (this._isResolved()) return; - this._promise._progress({ - index: index, - value: progressValue - }); -}; - - -PromiseArray.prototype._promiseFulfilled = -function PromiseArray$_promiseFulfilled(value, index) { - if (this._isResolved()) return; - this._values[index] = value; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - this._resolve(this._values); - } -}; - -PromiseArray.prototype._promiseRejected = -function PromiseArray$_promiseRejected(reason, index) { - if (this._isResolved()) return; - this._totalResolved++; - this._reject(reason); -}; - -return PromiseArray; -}; - -},{"./assert.js":2,"./async.js":3,"./errors.js":10,"./util.js":39}],22:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -var TypeError = require("./errors.js").TypeError; - -function PromiseInspection(promise) { - if (promise !== void 0) { - this._bitField = promise._bitField; - this._settledValue = promise.isResolved() - ? promise._settledValue - : void 0; - } - else { - this._bitField = 0; - this._settledValue = void 0; - } -} -PromiseInspection.prototype.isFulfilled = -function PromiseInspection$isFulfilled() { - return (this._bitField & 268435456) > 0; -}; - -PromiseInspection.prototype.isRejected = -function PromiseInspection$isRejected() { - return (this._bitField & 134217728) > 0; -}; - -PromiseInspection.prototype.isPending = function PromiseInspection$isPending() { - return (this._bitField & 402653184) === 0; -}; - -PromiseInspection.prototype.value = function PromiseInspection$value() { - if (!this.isFulfilled()) { - throw new TypeError("cannot get fulfillment value of a non-fulfilled promise"); - } - return this._settledValue; -}; - -PromiseInspection.prototype.error = function PromiseInspection$error() { - if (!this.isRejected()) { - throw new TypeError("cannot get rejection reason of a non-rejected promise"); - } - return this._settledValue; -}; - -module.exports = PromiseInspection; - -},{"./errors.js":10}],23:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -var util = require("./util.js"); -var maybeWrapAsError = util.maybeWrapAsError; -var errors = require("./errors.js"); -var TimeoutError = errors.TimeoutError; -var RejectionError = errors.RejectionError; -var async = require("./async.js"); -var haveGetters = util.haveGetters; -var es5 = require("./es5.js"); - -function isUntypedError(obj) { - return obj instanceof Error && - es5.getPrototypeOf(obj) === Error.prototype; -} - -function wrapAsRejectionError(obj) { - var ret; - if (isUntypedError(obj)) { - ret = new RejectionError(obj); - } - else { - ret = obj; - } - errors.markAsOriginatingFromRejection(ret); - return ret; -} - -function nodebackForPromise(promise) { - function PromiseResolver$_callback(err, value) { - if (promise === null) return; - - if (err) { - var wrapped = wrapAsRejectionError(maybeWrapAsError(err)); - promise._attachExtraTrace(wrapped); - promise._reject(wrapped); - } - else { - if (arguments.length > 2) { - var $_len = arguments.length;var args = new Array($_len - 1); for(var $_i = 1; $_i < $_len; ++$_i) {args[$_i - 1] = arguments[$_i];} - promise._fulfill(args); - } - else { - promise._fulfill(value); - } - } - - promise = null; - } - return PromiseResolver$_callback; -} - - -var PromiseResolver; -if (!haveGetters) { - PromiseResolver = function PromiseResolver(promise) { - this.promise = promise; - this.asCallback = nodebackForPromise(promise); - this.callback = this.asCallback; - }; -} -else { - PromiseResolver = function PromiseResolver(promise) { - this.promise = promise; - }; -} -if (haveGetters) { - var prop = { - get: function() { - return nodebackForPromise(this.promise); - } - }; - es5.defineProperty(PromiseResolver.prototype, "asCallback", prop); - es5.defineProperty(PromiseResolver.prototype, "callback", prop); -} - -PromiseResolver._nodebackForPromise = nodebackForPromise; - -PromiseResolver.prototype.toString = function PromiseResolver$toString() { - return "[object PromiseResolver]"; -}; - -PromiseResolver.prototype.resolve = -PromiseResolver.prototype.fulfill = function PromiseResolver$resolve(value) { - var promise = this.promise; - if (promise._tryFollow(value)) { - return; - } - async.invoke(promise._fulfill, promise, value); -}; - -PromiseResolver.prototype.reject = function PromiseResolver$reject(reason) { - var promise = this.promise; - errors.markAsOriginatingFromRejection(reason); - var trace = errors.canAttach(reason) ? reason : new Error(reason + ""); - promise._attachExtraTrace(trace); - async.invoke(promise._reject, promise, reason); - if (trace !== reason) { - async.invoke(this._setCarriedStackTrace, this, trace); - } -}; - -PromiseResolver.prototype.progress = -function PromiseResolver$progress(value) { - async.invoke(this.promise._progress, this.promise, value); -}; - -PromiseResolver.prototype.cancel = function PromiseResolver$cancel() { - async.invoke(this.promise.cancel, this.promise, void 0); -}; - -PromiseResolver.prototype.timeout = function PromiseResolver$timeout() { - this.reject(new TimeoutError("timeout")); -}; - -PromiseResolver.prototype.isResolved = function PromiseResolver$isResolved() { - return this.promise.isResolved(); -}; - -PromiseResolver.prototype.toJSON = function PromiseResolver$toJSON() { - return this.promise.toJSON(); -}; - -PromiseResolver.prototype._setCarriedStackTrace = -function PromiseResolver$_setCarriedStackTrace(trace) { - if (this.promise.isRejected()) { - this.promise._setCarriedStackTrace(trace); - } -}; - -module.exports = PromiseResolver; - -},{"./async.js":3,"./errors.js":10,"./es5.js":12,"./util.js":39}],24:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var errors = require("./errors.js"); -var ASSERT = require("./assert.js"); -var TypeError = errors.TypeError; -var util = require("./util.js"); -var isArray = util.isArray; -var errorObj = util.errorObj; -var tryCatch1 = util.tryCatch1; -var yieldHandlers = []; - -function promiseFromYieldHandler(value) { - var _yieldHandlers = yieldHandlers; - var _errorObj = errorObj; - var _Promise = Promise; - var len = _yieldHandlers.length; - for (var i = 0; i < len; ++i) { - var result = tryCatch1(_yieldHandlers[i], void 0, value); - if (result === _errorObj) { - return _Promise.reject(_errorObj.e); - } - var maybePromise = _Promise._cast(result, - promiseFromYieldHandler, void 0); - if (maybePromise instanceof _Promise) return maybePromise; - } - return null; -} - -function PromiseSpawn(generatorFunction, receiver, caller) { - var promise = this._promise = new Promise(INTERNAL); - promise._setTrace(caller, void 0); - this._generatorFunction = generatorFunction; - this._receiver = receiver; - this._generator = void 0; -} - -PromiseSpawn.prototype.promise = function PromiseSpawn$promise() { - return this._promise; -}; - -PromiseSpawn.prototype._run = function PromiseSpawn$_run() { - this._generator = this._generatorFunction.call(this._receiver); - this._receiver = - this._generatorFunction = void 0; - this._next(void 0); -}; - -PromiseSpawn.prototype._continue = function PromiseSpawn$_continue(result) { - if (result === errorObj) { - this._generator = void 0; - var trace = errors.canAttach(result.e) - ? result.e : new Error(result.e + ""); - this._promise._attachExtraTrace(trace); - this._promise._reject(result.e, trace); - return; - } - - var value = result.value; - if (result.done === true) { - this._generator = void 0; - if (!this._promise._tryFollow(value)) { - this._promise._fulfill(value); - } - } - else { - var maybePromise = Promise._cast(value, PromiseSpawn$_continue, void 0); - if (!(maybePromise instanceof Promise)) { - if (isArray(maybePromise)) { - maybePromise = Promise.all(maybePromise); - } - else { - maybePromise = promiseFromYieldHandler(maybePromise); - } - if (maybePromise === null) { - this._throw(new TypeError("A value was yielded that could not be treated as a promise")); - return; - } - } - maybePromise._then( - this._next, - this._throw, - void 0, - this, - null, - void 0 - ); - } -}; - -PromiseSpawn.prototype._throw = function PromiseSpawn$_throw(reason) { - if (errors.canAttach(reason)) - this._promise._attachExtraTrace(reason); - this._continue( - tryCatch1(this._generator["throw"], this._generator, reason) - ); -}; - -PromiseSpawn.prototype._next = function PromiseSpawn$_next(value) { - this._continue( - tryCatch1(this._generator.next, this._generator, value) - ); -}; - -PromiseSpawn.addYieldHandler = function PromiseSpawn$AddYieldHandler(fn) { - if (typeof fn !== "function") throw new TypeError("fn must be a function"); - yieldHandlers.push(fn); -}; - -return PromiseSpawn; -}; - -},{"./assert.js":2,"./errors.js":10,"./util.js":39}],25:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var THIS = {}; -var util = require("./util.js"); -var es5 = require("./es5.js"); -var nodebackForPromise = require("./promise_resolver.js") - ._nodebackForPromise; -var withAppended = util.withAppended; -var maybeWrapAsError = util.maybeWrapAsError; -var canEvaluate = util.canEvaluate; -var notEnumerableProp = util.notEnumerableProp; -var deprecated = util.deprecated; -var ASSERT = require("./assert.js"); - - -var roriginal = new RegExp("__beforePromisified__" + "$"); -var hasProp = {}.hasOwnProperty; -function isPromisified(fn) { - return fn.__isPromisified__ === true; -} -var inheritedMethods = (function() { - if (es5.isES5) { - var create = Object.create; - var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - return function(cur) { - var original = cur; - var ret = []; - var visitedKeys = create(null); - while (cur !== null) { - var keys = es5.keys(cur); - for (var i = 0, len = keys.length; i < len; ++i) { - var key = keys[i]; - if (visitedKeys[key] || - roriginal.test(key) || - hasProp.call(original, key + "__beforePromisified__") - ) { - continue; - } - visitedKeys[key] = true; - var desc = getOwnPropertyDescriptor(cur, key); - if (desc != null && - typeof desc.value === "function" && - !isPromisified(desc.value)) { - ret.push(key, desc.value); - } - } - cur = es5.getPrototypeOf(cur); - } - return ret; - }; - } - else { - return function(obj) { - var ret = []; - /*jshint forin:false */ - for (var key in obj) { - if (roriginal.test(key) || - hasProp.call(obj, key + "__beforePromisified__")) { - continue; - } - var fn = obj[key]; - if (typeof fn === "function" && - !isPromisified(fn)) { - ret.push(key, fn); - } - } - return ret; - }; - } -})(); - -function switchCaseArgumentOrder(likelyArgumentCount) { - var ret = [likelyArgumentCount]; - var min = Math.max(0, likelyArgumentCount - 1 - 5); - for(var i = likelyArgumentCount - 1; i >= min; --i) { - if (i === likelyArgumentCount) continue; - ret.push(i); - } - for(var i = likelyArgumentCount + 1; i <= 5; ++i) { - ret.push(i); - } - return ret; -} - -function parameterDeclaration(parameterCount) { - var ret = new Array(parameterCount); - for(var i = 0; i < ret.length; ++i) { - ret[i] = "_arg" + i; - } - return ret.join(", "); -} - -function parameterCount(fn) { - if (typeof fn.length === "number") { - return Math.max(Math.min(fn.length, 1023 + 1), 0); - } - return 0; -} - -function propertyAccess(id) { - var rident = /^[a-z$_][a-z$_0-9]*$/i; - - if (rident.test(id)) { - return "." + id; - } - else return "['" + id.replace(/(['\\])/g, "\\$1") + "']"; -} - -function makeNodePromisifiedEval(callback, receiver, originalName, fn) { - var newParameterCount = Math.max(0, parameterCount(fn) - 1); - var argumentOrder = switchCaseArgumentOrder(newParameterCount); - - var callbackName = (typeof originalName === "string" ? - originalName + "Async" : - "promisified"); - - function generateCallForArgumentCount(count) { - var args = new Array(count); - for (var i = 0, len = args.length; i < len; ++i) { - args[i] = "arguments[" + i + "]"; - } - var comma = count > 0 ? "," : ""; - - if (typeof callback === "string" && - receiver === THIS) { - return "this" + propertyAccess(callback) + "("+args.join(",") + - comma +" fn);"+ - "break;"; - } - return (receiver === void 0 - ? "callback("+args.join(",")+ comma +" fn);" - : "callback.call("+(receiver === THIS - ? "this" - : "receiver")+", "+args.join(",") + comma + " fn);") + - "break;"; - } - - function generateArgumentSwitchCase() { - var ret = ""; - for(var i = 0; i < argumentOrder.length; ++i) { - ret += "case " + argumentOrder[i] +":" + - generateCallForArgumentCount(argumentOrder[i]); - } - ret += "default: var args = new Array(len + 1);" + - "var i = 0;" + - "for (var i = 0; i < len; ++i) { " + - " args[i] = arguments[i];" + - "}" + - "args[i] = fn;" + - - (typeof callback === "string" - ? "this" + propertyAccess(callback) + ".apply(" - : "callback.apply(") + - - (receiver === THIS ? "this" : "receiver") + - ", args); break;"; - return ret; - } - - return new Function("Promise", "callback", "receiver", - "withAppended", "maybeWrapAsError", "nodebackForPromise", - "INTERNAL", - "var ret = function " + callbackName + - "(" + parameterDeclaration(newParameterCount) + ") {\"use strict\";" + - "var len = arguments.length;" + - "var promise = new Promise(INTERNAL);"+ - "promise._setTrace(" + callbackName + ", void 0);" + - "var fn = nodebackForPromise(promise);"+ - "try {" + - "switch(len) {" + - generateArgumentSwitchCase() + - "}" + - "}" + - "catch(e){ " + - "var wrapped = maybeWrapAsError(e);" + - "promise._attachExtraTrace(wrapped);" + - "promise._reject(wrapped);" + - "}" + - "return promise;" + - "" + - "}; ret.__isPromisified__ = true; return ret;" - )(Promise, callback, receiver, withAppended, - maybeWrapAsError, nodebackForPromise, INTERNAL); -} - -function makeNodePromisifiedClosure(callback, receiver) { - function promisified() { - var _receiver = receiver; - if (receiver === THIS) _receiver = this; - if (typeof callback === "string") { - callback = _receiver[callback]; - } - var promise = new Promise(INTERNAL); - promise._setTrace(promisified, void 0); - var fn = nodebackForPromise(promise); - try { - callback.apply(_receiver, withAppended(arguments, fn)); - } - catch(e) { - var wrapped = maybeWrapAsError(e); - promise._attachExtraTrace(wrapped); - promise._reject(wrapped); - } - return promise; - } - promisified.__isPromisified__ = true; - return promisified; -} - -var makeNodePromisified = canEvaluate - ? makeNodePromisifiedEval - : makeNodePromisifiedClosure; - -function f(){} -function _promisify(callback, receiver, isAll) { - if (isAll) { - var methods = inheritedMethods(callback); - for (var i = 0, len = methods.length; i < len; i+= 2) { - var key = methods[i]; - var fn = methods[i+1]; - var originalKey = key + "__beforePromisified__"; - var promisifiedKey = key + "Async"; - notEnumerableProp(callback, originalKey, fn); - callback[promisifiedKey] = - makeNodePromisified(originalKey, THIS, - key, fn); - } - if (methods.length > 16) f.prototype = callback; - return callback; - } - else { - return makeNodePromisified(callback, receiver, void 0, callback); - } -} - -Promise.promisify = function Promise$Promisify(fn, receiver) { - if (typeof fn === "object" && fn !== null) { - deprecated("Promise.promisify for promisifying entire objects is deprecated. Use Promise.promisifyAll instead."); - return _promisify(fn, receiver, true); - } - if (typeof fn !== "function") { - throw new TypeError("fn must be a function"); - } - if (isPromisified(fn)) { - return fn; - } - return _promisify( - fn, - arguments.length < 2 ? THIS : receiver, - false); -}; - -Promise.promisifyAll = function Promise$PromisifyAll(target) { - if (typeof target !== "function" && typeof target !== "object") { - throw new TypeError("the target of promisifyAll must be an object or a function"); - } - return _promisify(target, void 0, true); -}; -}; - - -},{"./assert.js":2,"./es5.js":12,"./promise_resolver.js":23,"./util.js":39}],26:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, PromiseArray) { -var ASSERT = require("./assert.js"); -var util = require("./util.js"); -var inherits = util.inherits; -var es5 = require("./es5.js"); - -function PropertiesPromiseArray(obj, caller, boundTo) { - var keys = es5.keys(obj); - var values = new Array(keys.length); - for (var i = 0, len = values.length; i < len; ++i) { - values[i] = obj[keys[i]]; - } - this.constructor$(values, caller, boundTo); - if (!this._isResolved()) { - for (var i = 0, len = keys.length; i < len; ++i) { - values.push(keys[i]); - } - } -} -inherits(PropertiesPromiseArray, PromiseArray); - -PropertiesPromiseArray.prototype._init = -function PropertiesPromiseArray$_init() { - this._init$(void 0, -3) ; -}; - -PropertiesPromiseArray.prototype._promiseFulfilled = -function PropertiesPromiseArray$_promiseFulfilled(value, index) { - if (this._isResolved()) return; - this._values[index] = value; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - var val = {}; - var keyOffset = this.length(); - for (var i = 0, len = this.length(); i < len; ++i) { - val[this._values[i + keyOffset]] = this._values[i]; - } - this._resolve(val); - } -}; - -PropertiesPromiseArray.prototype._promiseProgressed = -function PropertiesPromiseArray$_promiseProgressed(value, index) { - if (this._isResolved()) return; - - this._promise._progress({ - key: this._values[index + this.length()], - value: value - }); -}; - -PromiseArray.PropertiesPromiseArray = PropertiesPromiseArray; - -return PropertiesPromiseArray; -}; - -},{"./assert.js":2,"./es5.js":12,"./util.js":39}],27:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, PromiseArray) { - var PropertiesPromiseArray = require("./properties_promise_array.js")( - Promise, PromiseArray); - var util = require("./util.js"); - var apiRejection = require("./errors_api_rejection")(Promise); - var isObject = util.isObject; - - function Promise$_Props(promises, useBound, caller) { - var ret; - var castValue = Promise._cast(promises, caller, void 0); - - if (!isObject(castValue)) { - return apiRejection("cannot await properties of a non-object"); - } - else if (Promise.is(castValue)) { - ret = castValue._then(Promise.props, void 0, void 0, - void 0, void 0, caller); - } - else { - ret = new PropertiesPromiseArray( - castValue, - caller, - useBound === true && castValue._isBound() - ? castValue._boundTo - : void 0 - ).promise(); - useBound = false; - } - if (useBound === true && castValue._isBound()) { - ret._setBoundTo(castValue._boundTo); - } - return ret; - } - - Promise.prototype.props = function Promise$props() { - return Promise$_Props(this, true, this.props); - }; - - Promise.props = function Promise$Props(promises) { - return Promise$_Props(promises, false, Promise.props); - }; -}; - -},{"./errors_api_rejection":11,"./properties_promise_array.js":26,"./util.js":39}],28:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -var ASSERT = require("./assert.js"); -function arrayCopy(src, srcIndex, dst, dstIndex, len) { - for (var j = 0; j < len; ++j) { - dst[j + dstIndex] = src[j + srcIndex]; - } -} - -function pow2AtLeast(n) { - n = n >>> 0; - n = n - 1; - n = n | (n >> 1); - n = n | (n >> 2); - n = n | (n >> 4); - n = n | (n >> 8); - n = n | (n >> 16); - return n + 1; -} - -function getCapacity(capacity) { - if (typeof capacity !== "number") return 16; - return pow2AtLeast( - Math.min( - Math.max(16, capacity), 1073741824) - ); -} - -function Queue(capacity) { - this._capacity = getCapacity(capacity); - this._length = 0; - this._front = 0; - this._makeCapacity(); -} - -Queue.prototype._willBeOverCapacity = -function Queue$_willBeOverCapacity(size) { - return this._capacity < size; -}; - -Queue.prototype._pushOne = function Queue$_pushOne(arg) { - var length = this.length(); - this._checkCapacity(length + 1); - var i = (this._front + length) & (this._capacity - 1); - this[i] = arg; - this._length = length + 1; -}; - -Queue.prototype.push = function Queue$push(fn, receiver, arg) { - var length = this.length() + 3; - if (this._willBeOverCapacity(length)) { - this._pushOne(fn); - this._pushOne(receiver); - this._pushOne(arg); - return; - } - var j = this._front + length - 3; - this._checkCapacity(length); - var wrapMask = this._capacity - 1; - this[(j + 0) & wrapMask] = fn; - this[(j + 1) & wrapMask] = receiver; - this[(j + 2) & wrapMask] = arg; - this._length = length; -}; - -Queue.prototype.shift = function Queue$shift() { - var front = this._front, - ret = this[front]; - - this[front] = void 0; - this._front = (front + 1) & (this._capacity - 1); - this._length--; - return ret; -}; - -Queue.prototype.length = function Queue$length() { - return this._length; -}; - -Queue.prototype._makeCapacity = function Queue$_makeCapacity() { - var len = this._capacity; - for (var i = 0; i < len; ++i) { - this[i] = void 0; - } -}; - -Queue.prototype._checkCapacity = function Queue$_checkCapacity(size) { - if (this._capacity < size) { - this._resizeTo(this._capacity << 3); - } -}; - -Queue.prototype._resizeTo = function Queue$_resizeTo(capacity) { - var oldFront = this._front; - var oldCapacity = this._capacity; - var oldQueue = new Array(oldCapacity); - var length = this.length(); - - arrayCopy(this, 0, oldQueue, 0, oldCapacity); - this._capacity = capacity; - this._makeCapacity(); - this._front = 0; - if (oldFront + length <= oldCapacity) { - arrayCopy(oldQueue, oldFront, this, 0, length); - } - else { var lengthBeforeWrapping = - length - ((oldFront + length) & (oldCapacity - 1)); - - arrayCopy(oldQueue, oldFront, this, 0, lengthBeforeWrapping); - arrayCopy(oldQueue, 0, this, lengthBeforeWrapping, - length - lengthBeforeWrapping); - } -}; - -module.exports = Queue; - -},{"./assert.js":2}],29:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, INTERNAL) { - var apiRejection = require("./errors_api_rejection.js")(Promise); - var isArray = require("./util.js").isArray; - - var raceLater = function Promise$_raceLater(promise) { - return promise.then(function Promise$_lateRacer(array) { - return Promise$_Race(array, Promise$_lateRacer, promise); - }); - }; - - var hasOwn = {}.hasOwnProperty; - function Promise$_Race(promises, caller, parent) { - var maybePromise = Promise._cast(promises, caller, void 0); - - if (Promise.is(maybePromise)) { - return raceLater(maybePromise); - } - else if (!isArray(promises)) { - return apiRejection("expecting an array, a promise or a thenable"); - } - - var ret = new Promise(INTERNAL); - ret._setTrace(caller, parent); - if (parent !== void 0) { - if (parent._isBound()) { - ret._setBoundTo(parent._boundTo); - } - if (parent._cancellable()) { - ret._setCancellable(); - ret._cancellationParent = parent; - } - } - var fulfill = ret._fulfill; - var reject = ret._reject; - for (var i = 0, len = promises.length; i < len; ++i) { - var val = promises[i]; - - if (val === void 0 && !(hasOwn.call(promises, i))) { - continue; - } - - Promise.cast(val)._then( - fulfill, - reject, - void 0, - ret, - null, - caller - ); - } - return ret; - } - - Promise.race = function Promise$Race(promises) { - return Promise$_Race(promises, Promise.race, void 0); - }; - - Promise.prototype.race = function Promise$race() { - return Promise$_Race(this, this.race, void 0); - }; - -}; - -},{"./errors_api_rejection.js":11,"./util.js":39}],30:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function( - Promise, Promise$_CreatePromiseArray, - PromiseArray, apiRejection, INTERNAL) { - - var ASSERT = require("./assert.js"); - - function Reduction(callback, index, accum, items, receiver) { - this.promise = new Promise(INTERNAL); - this.index = index; - this.length = items.length; - this.items = items; - this.callback = callback; - this.receiver = receiver; - this.accum = accum; - } - - Reduction.prototype.reject = function Reduction$reject(e) { - this.promise._reject(e); - }; - - Reduction.prototype.fulfill = function Reduction$fulfill(value, index) { - this.accum = value; - this.index = index + 1; - this.iterate(); - }; - - Reduction.prototype.iterate = function Reduction$iterate() { - var i = this.index; - var len = this.length; - var items = this.items; - var result = this.accum; - var receiver = this.receiver; - var callback = this.callback; - var iterate = this.iterate; - - for(; i < len; ++i) { - result = Promise._cast( - callback.call( - receiver, - result, - items[i], - i, - len - ), - iterate, - void 0 - ); - - if (result instanceof Promise) { - result._then( - this.fulfill, this.reject, void 0, this, i, iterate); - return; - } - } - this.promise._fulfill(result); - }; - - function Promise$_reducer(fulfilleds, initialValue) { - var fn = this; - var receiver = void 0; - if (typeof fn !== "function") { - receiver = fn.receiver; - fn = fn.fn; - } - var len = fulfilleds.length; - var accum = void 0; - var startIndex = 0; - - if (initialValue !== void 0) { - accum = initialValue; - startIndex = 0; - } - else { - startIndex = 1; - if (len > 0) accum = fulfilleds[0]; - } - var i = startIndex; - - if (i >= len) { - return accum; - } - - var reduction = new Reduction(fn, i, accum, fulfilleds, receiver); - reduction.iterate(); - return reduction.promise; - } - - function Promise$_unpackReducer(fulfilleds) { - var fn = this.fn; - var initialValue = this.initialValue; - return Promise$_reducer.call(fn, fulfilleds, initialValue); - } - - function Promise$_slowReduce( - promises, fn, initialValue, useBound, caller) { - return initialValue._then(function callee(initialValue) { - return Promise$_Reduce( - promises, fn, initialValue, useBound, callee); - }, void 0, void 0, void 0, void 0, caller); - } - - function Promise$_Reduce(promises, fn, initialValue, useBound, caller) { - if (typeof fn !== "function") { - return apiRejection("fn must be a function"); - } - - if (useBound === true && promises._isBound()) { - fn = { - fn: fn, - receiver: promises._boundTo - }; - } - - if (initialValue !== void 0) { - if (Promise.is(initialValue)) { - if (initialValue.isFulfilled()) { - initialValue = initialValue._settledValue; - } - else { - return Promise$_slowReduce(promises, - fn, initialValue, useBound, caller); - } - } - - return Promise$_CreatePromiseArray(promises, PromiseArray, caller, - useBound === true && promises._isBound() - ? promises._boundTo - : void 0) - .promise() - ._then(Promise$_unpackReducer, void 0, void 0, { - fn: fn, - initialValue: initialValue - }, void 0, Promise.reduce); - } - return Promise$_CreatePromiseArray(promises, PromiseArray, caller, - useBound === true && promises._isBound() - ? promises._boundTo - : void 0).promise() - ._then(Promise$_reducer, void 0, void 0, fn, void 0, caller); - } - - - Promise.reduce = function Promise$Reduce(promises, fn, initialValue) { - return Promise$_Reduce(promises, fn, - initialValue, false, Promise.reduce); - }; - - Promise.prototype.reduce = function Promise$reduce(fn, initialValue) { - return Promise$_Reduce(this, fn, initialValue, - true, this.reduce); - }; -}; - -},{"./assert.js":2}],31:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -var global = require("./global.js"); -var ASSERT = require("./assert.js"); -var schedule; -if (typeof process !== "undefined" && process !== null && - typeof process.cwd === "function" && - typeof process.nextTick === "function" && - typeof process.version === "string") { - schedule = function Promise$_Scheduler(fn) { - process.nextTick(fn); - }; -} -else if ((typeof global.MutationObserver === "function" || - typeof global.WebkitMutationObserver === "function" || - typeof global.WebKitMutationObserver === "function") && - typeof document !== "undefined" && - typeof document.createElement === "function") { - - - schedule = (function(){ - var MutationObserver = global.MutationObserver || - global.WebkitMutationObserver || - global.WebKitMutationObserver; - var div = document.createElement("div"); - var queuedFn = void 0; - var observer = new MutationObserver( - function Promise$_Scheduler() { - var fn = queuedFn; - queuedFn = void 0; - fn(); - } - ); - observer.observe(div, { - attributes: true - }); - return function Promise$_Scheduler(fn) { - queuedFn = fn; - div.setAttribute("class", "foo"); - }; - - })(); -} -else if (typeof global.postMessage === "function" && - typeof global.importScripts !== "function" && - typeof global.addEventListener === "function" && - typeof global.removeEventListener === "function") { - - var MESSAGE_KEY = "bluebird_message_key_" + Math.random(); - schedule = (function(){ - var queuedFn = void 0; - - function Promise$_Scheduler(e) { - if (e.source === global && - e.data === MESSAGE_KEY) { - var fn = queuedFn; - queuedFn = void 0; - fn(); - } - } - - global.addEventListener("message", Promise$_Scheduler, false); - - return function Promise$_Scheduler(fn) { - queuedFn = fn; - global.postMessage( - MESSAGE_KEY, "*" - ); - }; - - })(); -} -else if (typeof global.MessageChannel === "function") { - schedule = (function(){ - var queuedFn = void 0; - - var channel = new global.MessageChannel(); - channel.port1.onmessage = function Promise$_Scheduler() { - var fn = queuedFn; - queuedFn = void 0; - fn(); - }; - - return function Promise$_Scheduler(fn) { - queuedFn = fn; - channel.port2.postMessage(null); - }; - })(); -} -else if (global.setTimeout) { - schedule = function Promise$_Scheduler(fn) { - setTimeout(fn, 4); - }; -} -else { - schedule = function Promise$_Scheduler(fn) { - fn(); - }; -} - -module.exports = schedule; - -},{"./assert.js":2,"./global.js":16}],32:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = - function(Promise, Promise$_CreatePromiseArray, PromiseArray) { - - var SettledPromiseArray = require("./settled_promise_array.js")( - Promise, PromiseArray); - - function Promise$_Settle(promises, useBound, caller) { - return Promise$_CreatePromiseArray( - promises, - SettledPromiseArray, - caller, - useBound === true && promises._isBound() - ? promises._boundTo - : void 0 - ).promise(); - } - - Promise.settle = function Promise$Settle(promises) { - return Promise$_Settle(promises, false, Promise.settle); - }; - - Promise.prototype.settle = function Promise$settle() { - return Promise$_Settle(this, true, this.settle); - }; - -}; - -},{"./settled_promise_array.js":33}],33:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, PromiseArray) { -var ASSERT = require("./assert.js"); -var PromiseInspection = require("./promise_inspection.js"); -var util = require("./util.js"); -var inherits = util.inherits; -function SettledPromiseArray(values, caller, boundTo) { - this.constructor$(values, caller, boundTo); -} -inherits(SettledPromiseArray, PromiseArray); - -SettledPromiseArray.prototype._promiseResolved = -function SettledPromiseArray$_promiseResolved(index, inspection) { - this._values[index] = inspection; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - this._resolve(this._values); - } -}; - -SettledPromiseArray.prototype._promiseFulfilled = -function SettledPromiseArray$_promiseFulfilled(value, index) { - if (this._isResolved()) return; - var ret = new PromiseInspection(); - ret._bitField = 268435456; - ret._settledValue = value; - this._promiseResolved(index, ret); -}; -SettledPromiseArray.prototype._promiseRejected = -function SettledPromiseArray$_promiseRejected(reason, index) { - if (this._isResolved()) return; - var ret = new PromiseInspection(); - ret._bitField = 134217728; - ret._settledValue = reason; - this._promiseResolved(index, ret); -}; - -return SettledPromiseArray; -}; - -},{"./assert.js":2,"./promise_inspection.js":22,"./util.js":39}],34:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = -function(Promise, Promise$_CreatePromiseArray, PromiseArray, apiRejection) { - - var SomePromiseArray = require("./some_promise_array.js")(PromiseArray); - var ASSERT = require("./assert.js"); - - function Promise$_Some(promises, howMany, useBound, caller) { - if ((howMany | 0) !== howMany || howMany < 0) { - return apiRejection("expecting a positive integer"); - } - var ret = Promise$_CreatePromiseArray( - promises, - SomePromiseArray, - caller, - useBound === true && promises._isBound() - ? promises._boundTo - : void 0 - ); - var promise = ret.promise(); - if (promise.isRejected()) { - return promise; - } - ret.setHowMany(howMany); - ret.init(); - return promise; - } - - Promise.some = function Promise$Some(promises, howMany) { - return Promise$_Some(promises, howMany, false, Promise.some); - }; - - Promise.prototype.some = function Promise$some(count) { - return Promise$_Some(this, count, true, this.some); - }; - -}; - -},{"./assert.js":2,"./some_promise_array.js":35}],35:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function (PromiseArray) { -var util = require("./util.js"); -var RangeError = require("./errors.js").RangeError; -var inherits = util.inherits; -var isArray = util.isArray; - -function SomePromiseArray(values, caller, boundTo) { - this.constructor$(values, caller, boundTo); - this._howMany = 0; - this._unwrap = false; - this._initialized = false; -} -inherits(SomePromiseArray, PromiseArray); - -SomePromiseArray.prototype._init = function SomePromiseArray$_init() { - if (!this._initialized) { - return; - } - if (this._howMany === 0) { - this._resolve([]); - return; - } - this._init$(void 0, -2); - var isArrayResolved = isArray(this._values); - this._holes = isArrayResolved ? this._values.length - this.length() : 0; - - if (!this._isResolved() && - isArrayResolved && - this._howMany > this._canPossiblyFulfill()) { - var message = "(Promise.some) input array contains less than " + - this._howMany + " promises"; - this._reject(new RangeError(message)); - } -}; - -SomePromiseArray.prototype.init = function SomePromiseArray$init() { - this._initialized = true; - this._init(); -}; - -SomePromiseArray.prototype.setUnwrap = function SomePromiseArray$setUnwrap() { - this._unwrap = true; -}; - -SomePromiseArray.prototype.howMany = function SomePromiseArray$howMany() { - return this._howMany; -}; - -SomePromiseArray.prototype.setHowMany = -function SomePromiseArray$setHowMany(count) { - if (this._isResolved()) return; - this._howMany = count; -}; - -SomePromiseArray.prototype._promiseFulfilled = -function SomePromiseArray$_promiseFulfilled(value) { - if (this._isResolved()) return; - this._addFulfilled(value); - if (this._fulfilled() === this.howMany()) { - this._values.length = this.howMany(); - if (this.howMany() === 1 && this._unwrap) { - this._resolve(this._values[0]); - } - else { - this._resolve(this._values); - } - } - -}; -SomePromiseArray.prototype._promiseRejected = -function SomePromiseArray$_promiseRejected(reason) { - if (this._isResolved()) return; - this._addRejected(reason); - if (this.howMany() > this._canPossiblyFulfill()) { - if (this._values.length === this.length()) { - this._reject([]); - } - else { - this._reject(this._values.slice(this.length() + this._holes)); - } - } -}; - -SomePromiseArray.prototype._fulfilled = function SomePromiseArray$_fulfilled() { - return this._totalResolved; -}; - -SomePromiseArray.prototype._rejected = function SomePromiseArray$_rejected() { - return this._values.length - this.length() - this._holes; -}; - -SomePromiseArray.prototype._addRejected = -function SomePromiseArray$_addRejected(reason) { - this._values.push(reason); -}; - -SomePromiseArray.prototype._addFulfilled = -function SomePromiseArray$_addFulfilled(value) { - this._values[this._totalResolved++] = value; -}; - -SomePromiseArray.prototype._canPossiblyFulfill = -function SomePromiseArray$_canPossiblyFulfill() { - return this.length() - this._rejected(); -}; - -return SomePromiseArray; -}; - -},{"./errors.js":10,"./util.js":39}],36:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise) { - var PromiseInspection = require("./promise_inspection.js"); - - Promise.prototype.inspect = function Promise$inspect() { - return new PromiseInspection(this); - }; -}; - -},{"./promise_inspection.js":22}],37:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, INTERNAL) { - var ASSERT = require("./assert.js"); - var util = require("./util.js"); - var canAttach = require("./errors.js").canAttach; - var errorObj = util.errorObj; - var isObject = util.isObject; - - function getThen(obj) { - try { - return obj.then; - } - catch(e) { - errorObj.e = e; - return errorObj; - } - } - - function Promise$_Cast(obj, caller, originalPromise) { - if (isObject(obj)) { - if (obj instanceof Promise) { - return obj; - } - else if (isAnyBluebirdPromise(obj)) { - var ret = new Promise(INTERNAL); - ret._setTrace(caller, void 0); - obj._then( - ret._fulfillUnchecked, - ret._rejectUncheckedCheckError, - ret._progressUnchecked, - ret, - null, - void 0 - ); - ret._setFollowing(); - return ret; - } - var then = getThen(obj); - if (then === errorObj) { - caller = typeof caller === "function" ? caller : Promise$_Cast; - if (originalPromise !== void 0 && canAttach(then.e)) { - originalPromise._attachExtraTrace(then.e); - } - return Promise.reject(then.e, caller); - } - else if (typeof then === "function") { - caller = typeof caller === "function" ? caller : Promise$_Cast; - return Promise$_doThenable(obj, then, caller, originalPromise); - } - } - return obj; - } - - var hasProp = {}.hasOwnProperty; - function isAnyBluebirdPromise(obj) { - return hasProp.call(obj, "_promise0"); - } - - function Promise$_doThenable(x, then, caller, originalPromise) { - var resolver = Promise.defer(caller); - var called = false; - try { - then.call( - x, - Promise$_resolveFromThenable, - Promise$_rejectFromThenable, - Promise$_progressFromThenable - ); - } - catch(e) { - if (!called) { - called = true; - var trace = canAttach(e) ? e : new Error(e + ""); - if (originalPromise !== void 0) { - originalPromise._attachExtraTrace(trace); - } - resolver.promise._reject(e, trace); - } - } - return resolver.promise; - - function Promise$_resolveFromThenable(y) { - if (called) return; - called = true; - - if (x === y) { - var e = Promise._makeSelfResolutionError(); - if (originalPromise !== void 0) { - originalPromise._attachExtraTrace(e); - } - resolver.promise._reject(e, void 0); - return; - } - resolver.resolve(y); - } - - function Promise$_rejectFromThenable(r) { - if (called) return; - called = true; - var trace = canAttach(r) ? r : new Error(r + ""); - if (originalPromise !== void 0) { - originalPromise._attachExtraTrace(trace); - } - resolver.promise._reject(r, trace); - } - - function Promise$_progressFromThenable(v) { - if (called) return; - var promise = resolver.promise; - if (typeof promise._progress === "function") { - promise._progress(v); - } - } - } - - Promise._cast = Promise$_Cast; -}; - -},{"./assert.js":2,"./errors.js":10,"./util.js":39}],38:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; - -var global = require("./global.js"); -var setTimeout = function(fn, time) { - var $_len = arguments.length;var args = new Array($_len - 2); for(var $_i = 2; $_i < $_len; ++$_i) {args[$_i - 2] = arguments[$_i];} - global.setTimeout(function() { - fn.apply(void 0, args); - }, time); -}; - -var pass = {}; -global.setTimeout( function(_) { - if(_ === pass) { - setTimeout = global.setTimeout; - } -}, 1, pass); - -module.exports = function(Promise, INTERNAL) { - var util = require("./util.js"); - var ASSERT = require("./assert.js"); - var errors = require("./errors.js"); - var apiRejection = require("./errors_api_rejection")(Promise); - var TimeoutError = Promise.TimeoutError; - - var afterTimeout = function Promise$_afterTimeout(promise, message, ms) { - if (!promise.isPending()) return; - if (typeof message !== "string") { - message = "operation timed out after" + " " + ms + " ms" - } - var err = new TimeoutError(message); - errors.markAsOriginatingFromRejection(err); - promise._attachExtraTrace(err); - promise._rejectUnchecked(err); - }; - - var afterDelay = function Promise$_afterDelay(value, promise) { - promise._fulfill(value); - }; - - Promise.delay = function Promise$Delay(value, ms, caller) { - if (ms === void 0) { - ms = value; - value = void 0; - } - ms = +ms; - if (typeof caller !== "function") { - caller = Promise.delay; - } - var maybePromise = Promise._cast(value, caller, void 0); - var promise = new Promise(INTERNAL); - - if (Promise.is(maybePromise)) { - if (maybePromise._isBound()) { - promise._setBoundTo(maybePromise._boundTo); - } - if (maybePromise._cancellable()) { - promise._setCancellable(); - promise._cancellationParent = maybePromise; - } - promise._setTrace(caller, maybePromise); - promise._follow(maybePromise); - return promise.then(function(value) { - return Promise.delay(value, ms); - }); - } - else { - promise._setTrace(caller, void 0); - setTimeout(afterDelay, ms, value, promise); - } - return promise; - }; - - Promise.prototype.delay = function Promise$delay(ms) { - return Promise.delay(this, ms, this.delay); - }; - - Promise.prototype.timeout = function Promise$timeout(ms, message) { - ms = +ms; - - var ret = new Promise(INTERNAL); - ret._setTrace(this.timeout, this); - - if (this._isBound()) ret._setBoundTo(this._boundTo); - if (this._cancellable()) { - ret._setCancellable(); - ret._cancellationParent = this; - } - ret._follow(this); - setTimeout(afterTimeout, ms, ret, message, ms); - return ret; - }; - -}; - -},{"./assert.js":2,"./errors.js":10,"./errors_api_rejection":11,"./global.js":16,"./util.js":39}],39:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -var global = require("./global.js"); -var ASSERT = require("./assert.js"); -var es5 = require("./es5.js"); -var haveGetters = (function(){ - try { - var o = {}; - es5.defineProperty(o, "f", { - get: function () { - return 3; - } - }); - return o.f === 3; - } - catch (e) { - return false; - } - -})(); - -var canEvaluate = (function() { - if (typeof window !== "undefined" && window !== null && - typeof window.document !== "undefined" && - typeof navigator !== "undefined" && navigator !== null && - typeof navigator.appName === "string" && - window === global) { - return false; - } - return true; -})(); - -function deprecated(msg) { - if (typeof console !== "undefined" && console !== null && - typeof console.warn === "function") { - console.warn("Bluebird: " + msg); - } -} - -var errorObj = {e: {}}; -function tryCatch1(fn, receiver, arg) { - try { - return fn.call(receiver, arg); - } - catch (e) { - errorObj.e = e; - return errorObj; - } -} - -function tryCatch2(fn, receiver, arg, arg2) { - try { - return fn.call(receiver, arg, arg2); - } - catch (e) { - errorObj.e = e; - return errorObj; - } -} - -function tryCatchApply(fn, args, receiver) { - try { - return fn.apply(receiver, args); - } - catch (e) { - errorObj.e = e; - return errorObj; - } -} - -var inherits = function(Child, Parent) { - var hasProp = {}.hasOwnProperty; - - function T() { - this.constructor = Child; - this.constructor$ = Parent; - for (var propertyName in Parent.prototype) { - if (hasProp.call(Parent.prototype, propertyName) && - propertyName.charAt(propertyName.length-1) !== "$" - ) { - this[propertyName + "$"] = Parent.prototype[propertyName]; - } - } - } - T.prototype = Parent.prototype; - Child.prototype = new T(); - return Child.prototype; -}; - -function asString(val) { - return typeof val === "string" ? val : ("" + val); -} - -function isPrimitive(val) { - return val == null || val === true || val === false || - typeof val === "string" || typeof val === "number"; - -} - -function isObject(value) { - return !isPrimitive(value); -} - -function maybeWrapAsError(maybeError) { - if (!isPrimitive(maybeError)) return maybeError; - - return new Error(asString(maybeError)); -} - -function withAppended(target, appendee) { - var len = target.length; - var ret = new Array(len + 1); - var i; - for (i = 0; i < len; ++i) { - ret[i] = target[i]; - } - ret[i] = appendee; - return ret; -} - - -function notEnumerableProp(obj, name, value) { - var descriptor = { - value: value, - configurable: true, - enumerable: false, - writable: true - }; - es5.defineProperty(obj, name, descriptor); - return obj; -} - - -var wrapsPrimitiveReceiver = (function() { - return this !== "string"; -}).call("string"); - -function thrower(r) { - throw r; -} - - -var ret = { - thrower: thrower, - isArray: es5.isArray, - haveGetters: haveGetters, - notEnumerableProp: notEnumerableProp, - isPrimitive: isPrimitive, - isObject: isObject, - canEvaluate: canEvaluate, - deprecated: deprecated, - errorObj: errorObj, - tryCatch1: tryCatch1, - tryCatch2: tryCatch2, - tryCatchApply: tryCatchApply, - inherits: inherits, - withAppended: withAppended, - asString: asString, - maybeWrapAsError: maybeWrapAsError, - wrapsPrimitiveReceiver: wrapsPrimitiveReceiver -}; - -module.exports = ret; - -},{"./assert.js":2,"./es5.js":12,"./global.js":16}]},{},[4]) -(4) -}); -; diff --git a/libs/plasio/workers/laz-loader-worker.js b/libs/plasio/workers/laz-loader-worker.js deleted file mode 100644 index 7a7ea96..0000000 --- a/libs/plasio/workers/laz-loader-worker.js +++ /dev/null @@ -1,144 +0,0 @@ -// laz-loader-worker.js -// - -//import {Module} from "./laz-perf.js"; - -let instance = null; // laz-perf instance - -function readAs(buf, Type, offset, count) { - count = (count === undefined || count === 0 ? 1 : count); - var sub = buf.slice(offset, offset + Type.BYTES_PER_ELEMENT * count); - - var r = new Type(sub); - if (count === undefined || count === 1) - return r[0]; - - var ret = []; - for (var i = 0 ; i < count ; i ++) { - ret.push(r[i]); - } - - return ret; -} - -function parseLASHeader(arraybuffer) { - var o = {}; - - o.pointsOffset = readAs(arraybuffer, Uint32Array, 32*3); - o.pointsFormatId = readAs(arraybuffer, Uint8Array, 32*3+8); - o.pointsStructSize = readAs(arraybuffer, Uint16Array, 32*3+8+1); - o.pointsCount = readAs(arraybuffer, Uint32Array, 32*3 + 11); - - - var start = 32*3 + 35; - o.scale = readAs(arraybuffer, Float64Array, start, 3); start += 24; // 8*3 - o.offset = readAs(arraybuffer, Float64Array, start, 3); start += 24; - - var bounds = readAs(arraybuffer, Float64Array, start, 6); start += 48; // 8*6; - o.maxs = [bounds[0], bounds[2], bounds[4]]; - o.mins = [bounds[1], bounds[3], bounds[5]]; - - return o; -} - -function handleEvent(msg) { - switch(msg.type) { - case "open": - try { - instance = new Module.LASZip(); - var abInt = new Uint8Array(msg.arraybuffer); - var buf = Module._malloc(msg.arraybuffer.byteLength); - - instance.arraybuffer = msg.arraybuffer; - instance.buf = buf; - Module.HEAPU8.set(abInt, buf); - instance.open(buf, msg.arraybuffer.byteLength); - - instance.readOffset = 0; - - postMessage({ type: "open", status: 1}); - }catch(e) { - debugger; - postMessage({ type: "open", status: 0, details: e }); - } - break; - - case "header": - if (!instance) - throw new Error("You need to open the file before trying to read header"); - - - - var header = parseLASHeader(instance.arraybuffer); - header.pointsFormatId &= 0x3f; - instance.header = header; - postMessage({type: "header", status: 1, header: header}); - break; - - case "read": - if (!instance) - throw new Error("You need to open the file before trying to read stuff"); - - var start = msg.start, count = msg.count, skip = msg.skip; - var o = instance; - - if (!o.header) - throw new Error("You need to query header before reading, I maintain state that way, sorry :("); - - var pointsToRead = Math.min(count * skip, o.header.pointsCount - o.readOffset); - var bufferSize = Math.ceil(pointsToRead / skip); - var pointsRead = 0; - - let buffer = new ArrayBuffer(bufferSize * o.header.pointsStructSize); - let this_buf = new Uint8Array(buffer); - var buf_read = Module._malloc(o.header.pointsStructSize); - for (var i = 0 ; i < pointsToRead ; i ++) { - o.getPoint(buf_read); - - if (i % skip === 0) { - var a = new Uint8Array(Module.HEAPU8.buffer, buf_read, o.header.pointsStructSize); - this_buf.set(a, pointsRead * o.header.pointsStructSize, o.header.pointsStructSize); - pointsRead ++; - } - - o.readOffset ++; - } - Module._free(buf_read); - - let transferables = [buffer]; - - postMessage({ - type: 'header', - status: 1, - buffer: buffer, - count: pointsRead, - hasMoreData: o.readOffset < o.header.pointsCount - }, transferables); - - break; - - - case "close": - if (instance !== null) { - Module._free(instance.buf); - instance.delete(); - instance = null; - }else{ - debugger; - } - - postMessage({ type: "close", status: 1}); - break; - } -} - -onmessage = function(event) { - try { - handleEvent(event.data); - } catch(e) { - debugger; - postMessage({type: event.data.type, status: 0, details: e}); - } -}; - - diff --git a/libs/plasio/workers/laz-perf.js b/libs/plasio/workers/laz-perf.js deleted file mode 100644 index 2984045..0000000 --- a/libs/plasio/workers/laz-perf.js +++ /dev/null @@ -1,32 +0,0 @@ -var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function";var ENVIRONMENT_IS_WEB=typeof window==="object";var ENVIRONMENT_IS_WORKER=typeof importScripts==="function";var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=function print(x){process["stdout"].write(x+"\n")};if(!Module["printErr"])Module["printErr"]=function printErr(x){process["stderr"].write(x+"\n")};var nodeFS=require("fs");var nodePath=require("path");Module["read"]=function read(filename,binary){filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);if(!ret&&filename!=nodePath["resolve"](filename)){filename=path.join(__dirname,"..","src",filename);ret=nodeFS["readFileSync"](filename)}if(ret&&!binary)ret=ret.toString();return ret};Module["readBinary"]=function readBinary(filename){return Module["read"](filename,true)};Module["load"]=function load(f){globalEval(read(f))};if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}))}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function read(){throw"no read() available (jsc?)"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}this["Module"]=Module}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function print(x){/*console.log(x)*/};if(!Module["printErr"])Module["printErr"]=function printErr(x){console.log(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WEB){window["Module"]=Module}else{Module["load"]=importScripts}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}var Runtime={setTempRet0:(function(value){tempRet0=value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(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 Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);return Module["dynCall_"+sig].apply(null,args)}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i0)return""}var c1=buffer[0];var c2=buffer[1];var c3=buffer[2];var c4=buffer[3];var ret;if(buffer.length==2){ret=String.fromCharCode((c1&31)<<6|c2&63)}else if(buffer.length==3){ret=String.fromCharCode((c1&15)<<12|(c2&63)<<6|c3&63)}else{var codePoint=(c1&7)<<18|(c2&63)<<12|(c3&63)<<6|c4&63;ret=String.fromCharCode(((codePoint-65536)/1024|0)+55296,(codePoint-65536)%1024+56320)}buffer.length=0;return ret});this.processJSString=function processJSString(string){string=unescape(encodeURIComponent(string));var ret=[];for(var i=0;i=TOTAL_MEMORY)enlargeMemory();return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var globalScope=this;function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var stack=0;var JSfuncs={"stackSave":(function(){stack=Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore(stack)}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args){var func=getCFunc(ident);var cArgs=[];if(args){for(var i=0;i>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)}}Module["setValue"]=setValue;function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[_malloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];if(t>=128)hasUtf=true;else if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(!hasUtf){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}var utf8=new Runtime.UTF8Processor;for(i=0;i>0];ret+=utf8.processCChar(t)}return ret}Module["Pointer_stringify"]=Pointer_stringify;function UTF16ToString(ptr){var i=0;var str="";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)return str;++i;str+=String.fromCharCode(codeUnit)}}Module["UTF16ToString"]=UTF16ToString;function stringToUTF16(str,outPtr){for(var i=0;i>1]=codeUnit}HEAP16[outPtr+str.length*2>>1]=0}Module["stringToUTF16"]=stringToUTF16;function UTF32ToString(ptr){var i=0;var str="";while(1){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)return str;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}}Module["UTF32ToString"]=UTF32ToString;function stringToUTF32(str,outPtr){var iChar=0;for(var iCodeUnit=0;iCodeUnit=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++iCodeUnit);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr+iChar*4>>2]=codeUnit;++iChar}HEAP32[outPtr+iChar*4>>2]=0}Module["stringToUTF32"]=stringToUTF32;function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi){try{var buf=_malloc(func.length);writeStringToMemory(func.substr(1),buf);var status=_malloc(4);var ret=Module["___cxa_demangle"](buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}}var i=3;var basicTypes={"v":"void","b":"bool","c":"char","s":"short","i":"int","l":"long","f":"float","d":"double","w":"wchar_t","a":"signed char","h":"unsigned char","t":"unsigned short","j":"unsigned int","m":"unsigned long","x":"long long","y":"unsigned long long","z":"..."};var subs=[];var first=true;function dump(x){if(x)Module.print(x);Module.print(func);var pre="";for(var a=0;a"}else{ret=name}paramLoop:while(i0){var c=func[i++];if(c in basicTypes){list.push(basicTypes[c])}else{switch(c){case"P":list.push(parse(true,1,true)[0]+"*");break;case"R":list.push(parse(true,1,true)[0]+"&");break;case"L":{i++;var end=func.indexOf("E",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break};case"A":{var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!=="_")throw"?";i++;list.push(parse(true,1,true)[0]+" ["+size+"]");break};case"E":break paramLoop;default:ret+="?"+c;break paramLoop}}}if(!allowVoid&&list.length===1&&list[0]==="void")list=[];if(rawList){if(ret){list.push(ret+"?")}return list}else{return ret+flushList()}}var final=func;try{if(func=="Object._main"||func=="_main"){return"main()"}if(typeof func==="number")func=Pointer_stringify(func);if(func[0]!=="_")return func;if(func[1]!=="_")return func;if(func[2]!=="Z")return func;switch(func[3]){case"n":return"operator new()";case"d":return"operator delete()"}final=parse()}catch(e){final+="?"}if(final.indexOf("?")>=0&&!hasLibcxxabi){Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling")}return final}function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,(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(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){return x+4095&-4096}var HEAP;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function enlargeMemory(){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 ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.")}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||117440512;var FAST_MEMORY=Module["FAST_MEMORY"]||2097152;var totalMemory=64*1024;while(totalMemory0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Runtime.dynCall("v",func)}else{Runtime.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)}Module["addOnPreRun"]=Module.addOnPreRun=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=Module.addOnInit=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=Module.addOnPreMain=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=Module.addOnExit=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=Module.addOnPostRun=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var ret=(new Runtime.UTF8Processor).processJSString(stringy);if(length){ret.length=length}if(!dontAddNull){ret.push(0)}return ret}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i>0]=chr;i=i+1}}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){for(var i=0;i>0]=array[i]}}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer+str.length>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;function unSign(value,bits,ignore){if(value>=0){return value}return bits<=32?2*Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}Module["addRunDependency"]=addRunDependency;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["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;STATIC_BASE=8;STATICTOP=STATIC_BASE+30128;__ATINIT__.push({func:(function(){__GLOBAL__I_a()})},{func:(function(){__GLOBAL__I_a64()})},{func:(function(){__GLOBAL__I_a117()})});allocate([76,65,83,90,105,112,0,0,111,112,101,110,0,0,0,0,103,101,116,80,111,105,110,116,0,0,0,0,0,0,0,0,103,101,116,67,111,117,110,116,0,0,0,0,0,0,0,0,68,121,110,97,109,105,99,76,65,83,90,105,112,0,0,0,97,100,100,70,105,101,108,100,70,108,111,97,116,105,110,103,0,0,0,0,0,0,0,0,97,100,100,70,105,101,108,100,83,105,103,110,101,100,0,0,97,100,100,70,105,101,108,100,85,110,115,105,103,110,101,100,0,0,0,0,0,0,0,0,118,105,105,105,0,0,0,0,64,110,0,0,208,0,0,0,176,110,0,0,0,0,0,0,80,49,51,68,121,110,97,109,105,99,76,65,83,90,105,112,0,0,0,0,0,0,0,0,49,51,68,121,110,97,109,105,99,76,65,83,90,105,112,0,160,109,0,0,184,0,0,0,200,109,0,0,160,0,0,0,0,0,0,0,200,0,0,0,118,105,105,105,0,0,0,0,64,110,0,0,208,0,0,0,192,110,0,0,0,0,0,0,118,105,105,105,105,0,0,0,64,110,0,0,208,0,0,0,192,110,0,0,192,110,0,0,105,105,0,0,0,0,0,0,208,0,0,0,0,0,0,0,118,105,0,0,0,0,0,0,105,105,0,0,0,0,0,0,80,75,49,51,68,121,110,97,109,105,99,76,65,83,90,105,112,0,0,0,0,0,0,0,200,109,0,0,48,1,0,0,1,0,0,0,200,0,0,0,105,105,105,0,0,0,0,0,192,110,0,0,136,1,0,0,80,54,76,65,83,90,105,112,0,0,0,0,0,0,0,0,54,76,65,83,90,105,112,0,160,109,0,0,120,1,0,0,200,109,0,0,104,1,0,0,0,0,0,0,128,1,0,0,118,105,105,105,0,0,0,0,64,110,0,0,136,1,0,0,176,110,0,0,0,0,0,0,118,105,105,105,105,0,0,0,64,110,0,0,136,1,0,0,192,110,0,0,192,110,0,0,105,105,0,0,0,0,0,0,136,1,0,0,0,0,0,0,118,105,0,0,0,0,0,0,105,105,0,0,0,0,0,0,80,75,54,76,65,83,90,105,112,0,0,0,0,0,0,0,200,109,0,0,232,1,0,0,1,0,0,0,128,1,0,0,0,0,0,0,216,2,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,48,95,53,102,105,101,108,100,73,106,78,83,48,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,106,69,69,69,69,69,69,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,49,48,98,97,115,101,95,102,105,101,108,100,69,0,0,0,160,109,0,0,176,2,0,0,8,111,0,0,40,2,0,0,208,2,0,0,0,0,0,0,73,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,115,121,109,98,111,108,115,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,3,0,0,0,4,0,0,0,5,0,0,0,1,0,0,0,6,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,106,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,106,69,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,67,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,67,95,69,69,69,69,0,0,0,0,0,0,0,0,8,111,0,0,40,3,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,106,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,106,69,69,69,69,69,69,69,69,0,0,0,0,0,0,0,88,5,0,0,7,0,0,0,8,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,48,95,53,102,105,101,108,100,73,116,78,83,48,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,116,69,69,69,69,69,69,0,0,0,0,0,0,8,111,0,0,208,4,0,0,208,2,0,0,0,0,0,0,0,0,0,0,96,6,0,0,9,0,0,0,10,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,116,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,116,69,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,67,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,67,95,69,69,69,69,0,0,0,0,0,0,0,0,8,111,0,0,136,5,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,116,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,116,69,69,69,69,69,69,69,69,0,0,0,0,0,0,0,184,7,0,0,13,0,0,0,14,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,48,95,53,102,105,101,108,100,73,104,78,83,48,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,104,69,69,69,69,69,69,0,0,0,0,0,0,8,111,0,0,48,7,0,0,208,2,0,0,0,0,0,0,0,0,0,0,192,8,0,0,15,0,0,0,16,0,0,0,17,0,0,0,3,0,0,0,18,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,104,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,104,69,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,67,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,67,95,69,69,69,69,0,0,0,0,0,0,0,0,8,111,0,0,232,7,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,104,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,104,69,69,69,69,69,69,69,69,0,0,0,0,0,0,0,24,10,0,0,19,0,0,0,20,0,0,0,4,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,48,95,53,102,105,101,108,100,73,105,78,83,48,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,105,69,69,69,69,69,69,0,0,0,0,0,0,8,111,0,0,144,9,0,0,208,2,0,0,0,0,0,0,0,0,0,0,32,11,0,0,21,0,0,0,22,0,0,0,23,0,0,0,4,0,0,0,24,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,105,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,105,69,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,67,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,67,95,69,69,69,69,0,0,0,0,0,0,0,0,8,111,0,0,72,10,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,105,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,105,69,69,69,69,69,69,69,69,0,0,0,0,0,0,0,120,12,0,0,25,0,0,0,26,0,0,0,5,0,0,0,1,0,0,0,6,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,48,95,53,102,105,101,108,100,73,115,78,83,48,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,115,69,69,69,69,69,69,0,0,0,0,0,0,8,111,0,0,240,11,0,0,208,2,0,0,0,0,0,0,0,0,0,0,128,13,0,0,27,0,0,0,28,0,0,0,29,0,0,0,5,0,0,0,30,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,115,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,115,69,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,67,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,67,95,69,69,69,69,0,0,0,0,0,0,0,0,8,111,0,0,168,12,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,115,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,115,69,69,69,69,69,69,69,69,0,0,0,0,0,0,0,216,14,0,0,31,0,0,0,32,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,48,95,53,102,105,101,108,100,73,97,78,83,48,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,97,69,69,69,69,69,69,0,0,0,0,0,0,8,111,0,0,80,14,0,0,208,2,0,0,0,0,0,0,0,0,0,0,224,15,0,0,33,0,0,0,34,0,0,0,35,0,0,0,6,0,0,0,36,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,97,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,97,69,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,67,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,67,95,69,69,69,69,0,0,0,0,0,0,0,0,8,111,0,0,8,15,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,97,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,97,69,69,69,69,69,69,69,69,0,0,0,0,0,0,0,48,17,0,0,8,0,0,0,37,0,0,0,38,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,102,105,101,108,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,69,69,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,48,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,69,0,160,109,0,0,0,17,0,0,8,111,0,0,168,16,0,0,40,17,0,0,0,0,0,0,0,0,0,0,8,18,0,0,39,0,0,0,40,0,0,0,41,0,0,0,7,0,0,0,42,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,102,105,101,108,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,56,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,56,95,69,69,69,69,0,0,0,0,8,111,0,0,96,17,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,102,105,101,108,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,69,69,69,69,0,0,0,0,0,0,0,0,0,0,0,48,19,0,0,43,0,0,0,44,0,0,0,45,0,0,0,8,0,0,0,46,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,53,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,53,95,69,69,69,69,0,0,0,0,0,0,0,8,111,0,0,176,18,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,69,69,0,0,0,0,0,0,8,20,0,0,47,0,0,0,48,0,0,0,49,0,0,0,9,0,0,0,50,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,49,48,98,117,102,95,115,116,114,101,97,109,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,49,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,49,95,69,69,69,69,0,0,0,0,0,0,0,8,111,0,0,168,19,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,0,0,118,50,116,54,115,50,48,0,118,50,116,54,115,50,48,118,50,116,55,115,56,0,0,0,118,50,116,54,115,50,48,118,50,116,56,115,54,0,0,0,118,50,116,54,115,50,48,118,50,116,55,115,56,118,50,116,56,115,54,0,0,0,0,0,78,54,108,97,115,122,105,112,49,57,117,110,107,110,111,119,110,95,115,99,104,101,109,97,95,116,121,112,101,69,0,0,8,111,0,0,128,20,0,0,72,108,0,0,0,0,0,0,84,104,101,32,76,65,90,32,115,99,104,101,109,97,32,105,115,32,110,111,116,32,114,101,99,111,103,110,105,122,101,100,0,0,0,0,0,0,0,0,0,0,0,0,160,20,0,0,51,0,0,0,52,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,32,22,0,0,9,0,0,0,53,0,0,0,54,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,48,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,48,95,53,102,105,101,108,100,73,78,83,48,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,48,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,68,95,69,69,69,69,78,83,66,95,73,78,83,67,95,55,103,112,115,116,105,109,101,69,78,83,69,95,73,83,72,95,69,69,69,69,78,83,66,95,73,78,83,67,95,51,114,103,98,69,78,83,69,95,73,83,75,95,69,69,69,69,69,69,69,69,69,0,0,0,0,0,0,0,8,111,0,0,8,21,0,0,40,17,0,0,0,0,0,0,78,54,108,97,115,122,105,112,49,49,101,110,100,95,111,102,95,102,105,108,101,69,0,0,8,111,0,0,48,22,0,0,72,108,0,0,0,0,0,0,82,101,97,99,104,101,100,32,69,110,100,32,111,102,32,102,105,108,101,0,0,0,0,0,0,0,0,0,72,22,0,0,55,0,0,0,56,0,0,0,7,0,0,0,0,0,0,0,15,14,13,12,11,10,9,8,14,0,1,3,6,10,10,9,13,1,2,4,7,11,11,10,12,3,4,5,8,12,12,11,11,6,7,8,9,13,13,12,10,10,11,12,13,14,14,13,9,10,11,12,13,14,15,14,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,1,0,1,2,3,4,5,6,2,1,0,1,2,3,4,5,3,2,1,0,1,2,3,4,4,3,2,1,0,1,2,3,5,4,3,2,1,0,1,2,6,5,4,3,2,1,0,1,7,6,5,4,3,2,1,0,0,0,0,0,144,24,0,0,57,0,0,0,58,0,0,0,59,0,0,0,10,0,0,0,60,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,49,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,50,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,50,95,53,102,105,101,108,100,73,78,83,50,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,70,95,69,69,69,69,78,83,68,95,73,78,83,69,95,55,103,112,115,116,105,109,101,69,78,83,71,95,73,83,74,95,69,69,69,69,78,83,68,95,73,78,83,69,95,51,114,103,98,69,78,83,71,95,73,83,77,95,69,69,69,69,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,81,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,81,95,69,69,69,69,0,0,0,0,0,0,0,8,111,0,0,40,23,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,49,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,50,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,50,95,53,102,105,101,108,100,73,78,83,50,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,70,95,69,69,69,69,78,83,68,95,73,78,83,69,95,55,103,112,115,116,105,109,101,69,78,83,71,95,73,83,74,95,69,69,69,69,78,83,68,95,73,78,83,69,95,51,114,103,98,69,78,83,71,95,73,83,77,95,69,69,69,69,69,69,69,69,69,69,69,0,0,0,0,0,0,224,26,0,0,10,0,0,0,61,0,0,0,62,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,48,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,48,95,53,102,105,101,108,100,73,78,83,48,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,48,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,68,95,69,69,69,69,78,83,66,95,73,78,83,67,95,51,114,103,98,69,78,83,69,95,73,83,72,95,69,69,69,69,69,69,69,69,69,0,0,0,0,0,8,111,0,0,232,25,0,0,40,17,0,0,0,0,0,0,0,0,0,0,88,28,0,0,63,0,0,0,64,0,0,0,65,0,0,0,11,0,0,0,66,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,49,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,50,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,50,95,53,102,105,101,108,100,73,78,83,50,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,70,95,69,69,69,69,78,83,68,95,73,78,83,69,95,51,114,103,98,69,78,83,71,95,73,83,74,95,69,69,69,69,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,78,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,78,95,69,69,69,69,0,0,0,0,0,8,111,0,0,16,27,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,49,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,50,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,50,95,53,102,105,101,108,100,73,78,83,50,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,70,95,69,69,69,69,78,83,68,95,73,78,83,69,95,51,114,103,98,69,78,83,71,95,73,83,74,95,69,69,69,69,69,69,69,69,69,69,69,0,0,0,0,0,0,0,0,0,0,0,0,144,30,0,0,11,0,0,0,67,0,0,0,68,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,48,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,48,95,53,102,105,101,108,100,73,78,83,48,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,48,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,68,95,69,69,69,69,78,83,66,95,73,78,83,67,95,55,103,112,115,116,105,109,101,69,78,83,69,95,73,83,72,95,69,69,69,69,69,69,69,69,69,0,8,111,0,0,152,29,0,0,40,17,0,0,0,0,0,0,0,0,0,0,8,32,0,0,69,0,0,0,70,0,0,0,71,0,0,0,12,0,0,0,72,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,49,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,50,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,50,95,53,102,105,101,108,100,73,78,83,50,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,70,95,69,69,69,69,78,83,68,95,73,78,83,69,95,55,103,112,115,116,105,109,101,69,78,83,71,95,73,83,74,95,69,69,69,69,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,78,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,78,95,69,69,69,69,0,8,111,0,0,192,30,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,49,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,50,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,50,95,53,102,105,101,108,100,73,78,83,50,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,70,95,69,69,69,69,78,83,68,95,73,78,83,69,95,55,103,112,115,116,105,109,101,69,78,83,71,95,73,83,74,95,69,69,69,69,69,69,69,69,69,69,69,0,0,0,0,0,0,0,0,40,34,0,0,12,0,0,0,73,0,0,0,74,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,48,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,48,95,53,102,105,101,108,100,73,78,83,48,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,48,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,68,95,69,69,69,69,69,69,69,69,69,0,0,0,0,0,0,0,8,111,0,0,72,33,0,0,40,17,0,0,0,0,0,0,0,0,0,0,136,35,0,0,75,0,0,0,76,0,0,0,77,0,0,0,13,0,0,0,78,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,49,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,50,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,50,95,53,102,105,101,108,100,73,78,83,50,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,70,95,69,69,69,69,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,75,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,75,95,69,69,69,69,0,0,0,0,0,0,0,8,111,0,0,88,34,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,49,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,50,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,50,95,53,102,105,101,108,100,73,78,83,50,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,70,95,69,69,69,69,69,69,69,69,69,69,69,0,0,118,0,0,0,0,0,0,0,116,0,0,0,0,0,0,0,115,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,48,37,0,0,79,0,0,0,80,0,0,0,56,0,0,0,248,255,255,255,48,37,0,0,81,0,0,0,82,0,0,0,192,255,255,255,192,255,255,255,48,37,0,0,83,0,0,0,84,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,56,98,97,115,105,99,95,115,116,114,105,110,103,115,116,114,101,97,109,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,99,69,69,69,69,0,0,0,0,8,111,0,0,232,36,0,0,176,67,0,0,0,0,0,0,64,0,0,0,0,0,0,0,144,66,0,0,85,0,0,0,86,0,0,0,192,255,255,255,192,255,255,255,144,66,0,0,87,0,0,0,88,0,0,0,0,0,0,0,240,37,0,0,89,0,0,0,90,0,0,0,13,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,11,0,0,0,14,0,0,0,3,0,0,0,15,0,0,0,78,83,116,51,95,95,49,49,53,98,97,115,105,99,95,115,116,114,105,110,103,98,117,102,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,99,69,69,69,69,0,0,0,0,0,0,0,8,111,0,0,168,37,0,0,24,66,0,0,0,0,0,0,0,0,0,0,200,38,0,0,91,0,0,0,92,0,0,0,93,0,0,0,16,0,0,0,94,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,49,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,57,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,57,95,69,69,69,69,0,8,111,0,0,32,38,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,49,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,69,69,0,0,0,0,71,111,116,32,100,97,116,97,32,0,0,0,0,0,0,0,32,98,121,116,101,115,0,0,76,65,83,70,0,0,0,0,78,54,108,97,115,122,105,112,49,51,105,110,118,97,108,105,100,95,109,97,103,105,99,69,0,0,0,0,0,0,0,0,8,111,0,0,112,39,0,0,72,108,0,0,0,0,0,0,78,54,108,97,115,122,105,112,50,50,99,104,117,110,107,95,116,97,98,108,101,95,114,101,97,100,95,101,114,114,111,114,69,0,0,0,0,0,0,0,8,111,0,0,160,39,0,0,72,108,0,0,0,0,0,0,67,104,117,110,107,32,116,97,98,108,101,32,111,102,102,115,101,116,32,61,61,32,45,49,32,105,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,97,116,32,116,104,105],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([115,32,116,105,109,101,0,0,78,54,108,97,115,122,105,112,49,51,110,111,116,95,115,117,112,112,111,114,116,101,100,69,0,0,0,0,0,0,0,0,8,111,0,0,16,40,0,0,72,108,0,0,0,0,0,0,78,54,108,97,115,122,105,112,50,54,117,110,107,110,111,119,110,95,99,104,117,110,107,95,116,97,98,108,101,95,102,111,114,109,97,116,69,0,0,0,8,111,0,0,64,40,0,0,72,108,0,0,0,0,0,0,99,104,117,110,107,95,115,105,122,101,32,61,61,32,117,105,110,116,46,109,97,120,32,105,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,97,116,32,116,104,105,115,32,116,105,109,101,44,32,99,97,108,108,32,49,45,56,48,48,45,68,65,70,85,81,32,102,111,114,32,115,117,112,112,111,114,116,46,0,0,0,0,0,84,104,101,32,99,104,117,110,107,32,116,97,98,108,101,32,118,101,114,115,105,111,110,32,110,117,109,98,101,114,32,105,115,32,117,110,107,110,111,119,110,0,0,0,0,0,0,0,0,0,0,0,104,40,0,0,95,0,0,0,96,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,48,40,0,0,97,0,0,0,98,0,0,0,7,0,0,0,0,0,0,0,84,104,101,114,101,32,119,97,115,32,97,32,112,114,111,98,108,101,109,32,114,101,97,100,105,110,103,32,116,104,101,32,99,104,117,110,107,32,116,97,98,108,101,0,0,0,0,0,0,0,0,0,200,39,0,0,99,0,0,0,100,0,0,0,7,0,0,0,0,0,0,0,108,97,115,122,105,112,32,101,110,99,111,100,101,100,0,0,78,54,108,97,115,122,105,112,49,51,110,111,95,108,97,115,122,105,112,95,118,108,114,69,0,0,0,0,0,0,0,0,8,111,0,0,136,41,0,0,72,108,0,0,0,0,0,0,78,111,32,76,65,83,122,105,112,32,86,76,82,32,119,97,115,32,102,111,117,110,100,32,105,110,32,116,104,101,32,86,76,82,115,32,115,101,99,116,105,111,110,0,0,0,0,0,0,0,0,0,168,41,0,0,101,0,0,0,102,0,0,0,7,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,50,53,108,97,115,122,105,112,95,102,111,114,109,97,116,95,117,110,115,117,112,112,111,114,116,101,100,69,0,0,0,0,8,111,0,0,0,42,0,0,72,108,0,0,0,0,0,0,79,110,108,121,32,76,65,83,122,105,112,32,80,79,73,78,84,87,73,83,69,32,67,72,85,78,75,69,68,32,100,101,99,111,109,112,114,101,115,115,111,114,32,105,115,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,40,42,0,0,103,0,0,0,104,0,0,0,7,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,55,98,97,100,95,102,117,110,99,116,105,111,110,95,99,97,108,108,69,0,0,0,0,0,8,111,0,0,136,42,0,0,88,107,0,0,0,0,0,0,0,0,0,0,168,42,0,0,105,0,0,0,106,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,44,0,0,107,0,0,0,108,0,0,0,13,0,0,0,14,0,0,0,109,0,0,0,110,0,0,0,15,0,0,0,17,0,0,0,14,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,48,95,95,102,117,110,99,116,105,111,110,54,95,95,102,117,110,99,73,90,78,54,108,97,115,122,105,112,50,105,111,54,114,101,97,100,101,114,49,48,98,97,115,105,99,95,102,105,108,101,73,78,83,50,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,49,49,95,118,97,108,105,100,97,116,111,114,115,69,118,69,85,108,82,78,83,51,95,54,104,101,97,100,101,114,69,69,95,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,66,95,69,69,70,118,83,65,95,69,69,69,0,0,0,0,78,83,116,51,95,95,49,49,48,95,95,102,117,110,99,116,105,111,110,54,95,95,98,97,115,101,73,70,118,82,78,54,108,97,115,122,105,112,50,105,111,54,104,101,97,100,101,114,69,69,69,69,0,0,0,0,160,109,0,0,208,43,0,0,8,111,0,0,56,43,0,0,8,44,0,0,0,0,0,0,90,78,54,108,97,115,122,105,112,50,105,111,54,114,101,97,100,101,114,49,48,98,97,115,105,99,95,102,105,108,101,73,78,83,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,49,49,95,118,97,108,105,100,97,116,111,114,115,69,118,69,85,108,82,78,83,48,95,54,104,101,97,100,101,114,69,69,95,0,0,0,160,109,0,0,32,44,0,0,78,54,108,97,115,122,105,112,50,49,111,108,100,95,115,116,121,108,101,95,99,111,109,112,114,101,115,115,105,111,110,69,0,0,0,0,0,0,0,0,8,111,0,0,136,44,0,0,72,108,0,0,0,0,0,0,78,54,108,97,115,122,105,112,49,52,110,111,116,95,99,111,109,112,114,101,115,115,101,100,69,0,0,0,0,0,0,0,8,111,0,0,192,44,0,0,72,108,0,0,0,0,0,0,84,104,101,32,102,105,108,101,32,100,111,101,115,110,39,116,32,115,101,101,109,32,116,111,32,98,101,32,99,111,109,112,114,101,115,115,101,100,0,0,0,0,0,0,224,44,0,0,111,0,0,0,112,0,0,0,7,0,0,0,0,0,0,0,84,104,101,32,102,105,108,101,32,115,101,101,109,115,32,116,111,32,104,97,118,101,32,111,108,100,32,115,116,121,108,101,32,99,111,109,112,114,101,115,115,105,111,110,32,119,104,105,99,104,32,105,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,0,0,0,0,176,44,0,0,113,0,0,0,114,0,0,0,7,0,0,0,0,0,0,0,70,105,108,101,32,109,97,103,105,99,32,105,115,32,110,111,116,32,118,97,108,105,100,0,0,0,0,0,144,39,0,0,115,0,0,0,116,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,112,46,0,0,117,0,0,0,118,0,0,0,119,0,0,0,18,0,0,0,120,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,50,105,111,54,114,101,97,100,101,114,49,48,98,97,115,105,99,95,102,105,108,101,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,55,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,55,95,69,69,69,69,0,0,0,0,0,0,8,111,0,0,224,45,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,50,105,111,54,114,101,97,100,101,114,49,48,98,97,115,105,99,95,102,105,108,101,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,0,0,0,0,0,104,47,0,0,121,0,0,0,122,0,0,0,123,0,0,0,19,0,0,0,124,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,51,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,51,95,69,69,69,69,0,0,0,8,111,0,0,248,46,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,0,0,0,0,0,0,118,111,105,100,0,0,0,0,98,111,111,108,0,0,0,0,99,104,97,114,0,0,0,0,115,105,103,110,101,100,32,99,104,97,114,0,0,0,0,0,117,110,115,105,103,110,101,100,32,99,104,97,114,0,0,0,115,104,111,114,116,0,0,0,117,110,115,105,103,110,101,100,32,115,104,111,114,116,0,0,105,110,116,0,0,0,0,0,117,110,115,105,103,110,101,100,32,105,110,116,0,0,0,0,108,111,110,103,0,0,0,0,117,110,115,105,103,110,101,100,32,108,111,110,103,0,0,0,102,108,111,97,116,0,0,0,100,111,117,98,108,101,0,0,115,116,100,58,58,115,116,114,105,110,103,0,0,0,0,0,115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,60,117,110,115,105,103,110,101,100,32,99,104,97,114,62,0,0,0,0,0,0,0,0,115,116,100,58,58,119,115,116,114,105,110,103,0,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,118,97,108,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,99,104,97,114,62,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,115,105,103,110,101,100,32,99,104,97,114,62,0,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,99,104,97,114,62,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,115,104,111,114,116,62,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,115,104,111,114,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,62,0,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,105,110,116,62,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,108,111,110,103,62,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,108,111,110,103,62,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,56,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,56,95,116,62,0,0,0,0,0,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,49,54,95,116,62,0,0,0,0,0,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,49,54,95,116,62,0,0,0,0,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,51,50,95,116,62,0,0,0,0,0,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,51,50,95,116,62,0,0,0,0,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,102,108,111,97,116,62,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,100,111,117,98,108,101,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,108,111,110,103,32,100,111,117,98,108,101,62,0,0,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,101,69,69,0,0,160,109,0,0,56,51,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,100,69,69,0,0,160,109,0,0,96,51,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,102,69,69,0,0,160,109,0,0,136,51,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,109,69,69,0,0,160,109,0,0,176,51,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,108,69,69,0,0,160,109,0,0,216,51,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,106,69,69,0,0,160,109,0,0,0,52,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,105,69,69,0,0,160,109,0,0,40,52,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,116,69,69,0,0,160,109,0,0,80,52,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,115,69,69,0,0,160,109,0,0,120,52,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,104,69,69,0,0,160,109,0,0,160,52,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,97,69,69,0,0,160,109,0,0,200,52,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,99,69,69,0,0,160,109,0,0,240,52,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,51,118,97,108,69,0,0,0,0,0,0,160,109,0,0,24,53,0,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,119,69,69,69,69,0,0,78,83,116,51,95,95,49,50,49,95,95,98,97,115,105,99,95,115,116,114,105,110,103,95,99,111,109,109,111,110,73,76,98,49,69,69,69,0,0,0,160,109,0,0,120,53,0,0,104,111,0,0,56,53,0,0,0,0,0,0,1,0,0,0,160,53,0,0,0,0,0,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,104,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,104,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,104,69,69,69,69,0,0,104,111,0,0,192,53,0,0,0,0,0,0,1,0,0,0,160,53,0,0,0,0,0,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,99,69,69,69,69,0,0,104,111,0,0,24,54,0,0,0,0,0,0,1,0,0,0,160,53],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+10240);allocate([248,58,0,0,125,0,0,0,126,0,0,0,16,0,0,0,4,0,0,0,2,0,0,0,2,0,0,0,15,0,0,0,16,0,0,0,5,0,0,0,17,0,0,0,18,0,0,0,20,0,0,0,6,0,0,0,21,0,0,0,78,83,116,51,95,95,49,49,49,95,95,115,116,100,111,117,116,98,117,102,73,119,69,69,0,0,0,0,0,0,0,0,8,111,0,0,216,58,0,0,88,66,0,0,0,0,0,0,0,0,0,0,96,59,0,0,127,0,0,0,128,0,0,0,17,0,0,0,4,0,0,0,2,0,0,0,2,0,0,0,19,0,0,0,16,0,0,0,5,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,7,0,0,0,23,0,0,0,78,83,116,51,95,95,49,49,48,95,95,115,116,100,105,110,98,117,102,73,119,69,69,0,8,111,0,0,72,59,0,0,88,66,0,0,0,0,0,0,117,110,115,117,112,112,111,114,116,101,100,32,108,111,99,97,108,101,32,102,111,114,32,115,116,97,110,100,97,114,100,32,105,110,112,117,116,0,0,0,0,0,0,0,248,59,0,0,129,0,0,0,130,0,0,0,18,0,0,0,1,0,0,0,3,0,0,0,3,0,0,0,22,0,0,0,9,0,0,0,2,0,0,0,23,0,0,0,11,0,0,0,24,0,0,0,8,0,0,0,25,0,0,0,78,83,116,51,95,95,49,49,49,95,95,115,116,100,111,117,116,98,117,102,73,99,69,69,0,0,0,0,0,0,0,0,8,111,0,0,216,59,0,0,24,66,0,0,0,0,0,0,0,0,0,0,96,60,0,0,131,0,0,0,132,0,0,0,19,0,0,0,1,0,0,0,3,0,0,0,3,0,0,0,8,0,0,0,9,0,0,0,2,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,3,0,0,0,27,0,0,0,78,83,116,51,95,95,49,49,48,95,95,115,116,100,105,110,98,117,102,73,99,69,69,0,8,111,0,0,72,60,0,0,24,66,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,95,95,115,104,97,114,101,100,95,99,111,117,110,116,69,0,0,0,0,0,0,0,0,160,109,0,0,112,60,0,0,78,83,116,51,95,95,49,49,57,95,95,115,104,97,114,101,100,95,119,101,97,107,95,99,111,117,110,116,69,0,0,0,104,111,0,0,152,60,0,0,0,0,0,0,1,0,0,0,144,60,0,0,0,0,0,0,103,101,110,101,114,105,99,0,117,110,115,112,101,99,105,102,105,101,100,32,103,101,110,101,114,105,99,95,99,97,116,101,103,111,114,121,32,101,114,114,111,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,121,115,116,101,109,0,0,117,110,115,112,101,99,105,102,105,101,100,32,115,121,115,116,101,109,95,99,97,116,101,103,111,114,121,32,101,114,114,111,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,32,0,0,0,0,0,0,0,0,0,0,136,61,0,0,133,0,0,0,134,0,0,0,7,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,50,115,121,115,116,101,109,95,101,114,114,111,114,69,0,0,8,111,0,0,112,61,0,0,72,108,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,101,114,114,111,114,95,99,97,116,101,103,111,114,121,69,0,0,0,0,0,0,0,0,160,109,0,0,152,61,0,0,78,83,116,51,95,95,49,49,50,95,95,100,111,95,109,101,115,115,97,103,101,69,0,0,8,111,0,0,192,61,0,0,184,61,0,0,0,0,0,0,0,0,0,0,56,62,0,0,135,0,0,0,136,0,0,0,26,0,0,0,1,0,0,0,9,0,0,0,10,0,0,0,2,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,52,95,95,103,101,110,101,114,105,99,95,101,114,114,111,114,95,99,97,116,101,103,111,114,121,69,0,0,0,0,0,0,8,111,0,0,16,62,0,0,216,61,0,0,0,0,0,0,0,0,0,0,152,62,0,0,137,0,0,0,138,0,0,0,27,0,0,0,3,0,0,0,9,0,0,0,10,0,0,0,4,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,51,95,95,115,121,115,116,101,109,95,101,114,114,111,114,95,99,97,116,101,103,111,114,121,69,0,0,0,0,0,0,0,8,111,0,0,112,62,0,0,216,61,0,0,0,0,0,0,109,117,116,101,120,32,108,111,99,107,32,102,97,105,108,101,100,0,0,0,0,0,0,0,101,99,32,61,61,32,48,0,47,85,115,101,114,115,47,118,101,114,109,97,47,116,109,112,47,101,109,115,100,107,47,101,109,115,99,114,105,112,116,101,110,47,49,46,50,55,46,48,47,115,121,115,116,101,109,47,108,105,98,47,108,105,98,99,120,120,47,109,117,116,101,120,46,99,112,112,0,0,0,0,117,110,108,111,99,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,97,115,105,99,95,115,116,114,105,110,103,0,0,0,0,0,0,0,0,24,66,0,0,139,0,0,0,140,0,0,0,13,0,0,0,1,0,0,0,3,0,0,0,3,0,0,0,8,0,0,0,9,0,0,0,2,0,0,0,23,0,0,0,11,0,0,0,24,0,0,0,3,0,0,0,27,0,0,0,0,0,0,0,88,66,0,0,141,0,0,0,142,0,0,0,20,0,0,0,4,0,0,0,2,0,0,0,2,0,0,0,19,0,0,0,16,0,0,0,5,0,0,0,17,0,0,0,18,0,0,0,20,0,0,0,7,0,0,0,23,0,0,0,8,0,0,0,0,0,0,0,144,66,0,0,85,0,0,0,86,0,0,0,248,255,255,255,248,255,255,255,144,66,0,0,87,0,0,0,88,0,0,0,8,0,0,0,0,0,0,0,216,66,0,0,143,0,0,0,144,0,0,0,248,255,255,255,248,255,255,255,216,66,0,0,145,0,0,0,146,0,0,0,4,0,0,0,0,0,0,0,32,67,0,0,147,0,0,0,148,0,0,0,252,255,255,255,252,255,255,255,32,67,0,0,149,0,0,0,150,0,0,0,4,0,0,0,0,0,0,0,104,67,0,0,151,0,0,0,152,0,0,0,252,255,255,255,252,255,255,255,104,67,0,0,153,0,0,0,154,0,0,0,105,111,115,116,114,101,97,109,0,0,0,0,0,0,0,0,117,110,115,112,101,99,105,102,105,101,100,32,105,111,115,116,114,101,97,109,95,99,97,116,101,103,111,114,121,32,101,114,114,111,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,65,0,0,155,0,0,0,156,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,88,65,0,0,157,0,0,0,158,0,0,0,105,111,115,95,98,97,115,101,58,58,99,108,101,97,114,0,78,83,116,51,95,95,49,56,105,111,115,95,98,97,115,101,55,102,97,105,108,117,114,101,69,0,0,0,0,0,0,0,8,111,0,0,16,65,0,0,136,61,0,0,0,0,0,0,78,83,116,51,95,95,49,56,105,111,115,95,98,97,115,101,69,0,0,0,0,0,0,0,160,109,0,0,64,65,0,0,78,83,116,51,95,95,49,57,98,97,115,105,99,95,105,111,115,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,0,0,0,0,0,0,8,111,0,0,96,65,0,0,88,65,0,0,0,0,0,0,78,83,116,51,95,95,49,57,98,97,115,105,99,95,105,111,115,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,0,0,0,0,0,0,8,111,0,0,160,65,0,0,88,65,0,0,0,0,0,0,78,83,116,51,95,95,49,49,53,98,97,115,105,99,95,115,116,114,101,97,109,98,117,102,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,0,0,0,0,0,0,0,160,109,0,0,224,65,0,0,78,83,116,51,95,95,49,49,53,98,97,115,105,99,95,115,116,114,101,97,109,98,117,102,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,0,0,0,0,0,0,0,160,109,0,0,32,66,0,0,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,105,115,116,114,101,97,109,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,0,104,111,0,0,96,66,0,0,0,0,0,0,1,0,0,0,144,65,0,0,3,244,255,255,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,105,115,116,114,101,97,109,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,0,104,111,0,0,168,66,0,0,0,0,0,0,1,0,0,0,208,65,0,0,3,244,255,255,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,111,115,116,114,101,97,109,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,0,104,111,0,0,240,66,0,0,0,0,0,0,1,0,0,0,144,65,0,0,3,244,255,255,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,111,115,116,114,101,97,109,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,0,104,111,0,0,56,67,0,0,0,0,0,0,1,0,0,0,208,65,0,0,3,244,255,255,78,83,116,51,95,95,49,49,52,98,97,115,105,99,95,105,111,115,116,114,101,97,109,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,104,111,0,0,128,67,0,0,3,0,0,0,2,0,0,0,144,66,0,0,2,0,0,0,32,67,0,0,2,8,0,0,0,0,0,0,24,68,0,0,159,0,0,0,160,0,0,0,28,0,0,0,1,0,0,0,9,0,0,0,10,0,0,0,5,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,57,95,95,105,111,115,116,114,101,97,109,95,99,97,116,101,103,111,114,121,69,0,0,0,8,111,0,0,248,67,0,0,216,61,0,0,0,0,0,0,0,0,0,0,40,82,0,0,161,0,0,0,162,0,0,0,163,0,0,0,1,0,0,0,4,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,82,0,0,164,0,0,0,165,0,0,0,163,0,0,0,2,0,0,0,5,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,0,0,166,0,0,0,167,0,0,0,163,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,65,66,67,68,69,70,120,88,43,45,112,80,105,73,110,78,0,0,0,0,0,0,0,0,37,112,0,0,0,0,0,0,0,0,0,0,152,87,0,0,168,0,0,0,169,0,0,0,163,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,88,0,0,170,0,0,0,171,0,0,0,163,0,0,0,4,0,0,0,5,0,0,0,23,0,0,0,6,0,0,0,24,0,0,0,1,0,0,0,2,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,0,0,0,0,0,0,0,108,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,240,88,0,0,172,0,0,0,173,0,0,0,163,0,0,0,8,0,0,0,9,0,0,0,25,0,0,0,10,0,0,0,26,0,0,0,3,0,0,0,4,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,0,0,0,0,37,112,0,0,0,0,0,0,0,0,0,0,24,84,0,0,174,0,0,0,175,0,0,0,163,0,0,0,29,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,1,0,0,0,248,255,255,255,24,84,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,72,58,37,77,58,37,83,37,109,47,37,100,47,37,121,37,89,45,37,109,45,37,100,37,73,58,37,77,58,37,83,32,37,112,0,0,0,0,0,37,72,58,37,77,0,0,0,37,72,58,37,77,58,37,83,0,0,0,0,184,84,0,0,176,0,0,0,177,0,0,0,163,0,0,0,37,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,2,0,0,0,248,255,255,255,184,84,0,0,38,0,0,0,39,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,37,0,0,0,109,0,0,0,47,0,0,0,37,0,0,0,100,0,0,0,47,0,0,0,37,0,0,0,121,0,0,0,37,0,0,0,89,0,0,0,45,0,0,0,37,0,0,0,109,0,0,0,45,0,0,0,37,0,0,0,100,0,0,0,37,0,0,0,73,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,32,0,0,0,37,0,0,0,112,0,0,0,0,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,0,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,0,0,0,0,72,85,0,0,178,0,0,0,179,0,0,0,163,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,85,0,0,180,0,0,0,181,0,0,0,163,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,82,0,0,182,0,0,0,183,0,0,0,163,0,0,0,45,0,0,0,46,0,0,0,21,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,47,0,0,0,25,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,82,0,0,184,0,0,0,185,0,0,0,163,0,0,0,48,0,0,0,49,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,50,0,0,0,31,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,83,0,0,186,0,0,0,187,0,0,0,163,0,0,0,51,0,0,0,52,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,53,0,0,0,37,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,83,0,0,188,0,0,0,189,0,0,0,163,0,0,0,54,0,0,0,55,0,0,0,39,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,56,0,0,0,43,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,89,0,0,190,0,0,0,191,0,0,0,163,0,0,0,3,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,0,0,0,0,0,0,37,76,102,0,0,0,0,0,109,111,110,101,121,95,103,101,116,32,101,114,114,111,114,0,0,0,0,0,16,90,0,0,192,0,0,0,193,0,0,0,163,0,0,0,5,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,0,0,0,0,0,0,0,0,0,0,160,90,0,0,194,0,0,0,195,0,0,0,163,0,0,0,1,0,0,0,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,46,48,76,102,0,0,0,0,0,0,0,48,91,0,0,196,0,0,0,197,0,0,0,163,0,0,0,2,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,86,0,0,198,0,0,0,199,0,0,0,163,0,0,0,13,0,0,0,12,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,86,0,0,200,0,0,0,201,0,0,0,163,0,0,0,14,0,0,0,13,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,118,101,99,116,111,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,82,0,0,202,0,0,0,203,0,0,0,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,78,0,0,204,0,0,0,205,0,0,0,163,0,0,0,28,0,0,0,15,0,0,0,29,0,0,0,16,0,0,0,30,0,0,0,1,0,0,0,17,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,79,0,0,206,0,0,0,207,0,0,0,163,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,57,0,0,0,58,0,0,0,5,0,0,0,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,81,0,0,208,0,0,0,209,0,0,0,163,0,0,0,60,0,0,0,61,0,0,0,47,0,0,0,48,0,0,0,49,0,0,0,0,0,0,0,216,81,0,0,210,0,0,0,211,0,0,0,163,0,0,0,62,0,0,0,63,0,0,0,50,0,0,0,51,0,0,0,52,0,0,0,116,0,0,0,114,0,0,0,117,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,102,97,108,115,101,0,0,0,102,0,0,0,97,0,0,0,108,0,0,0,115,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,109,0,0,0,47,0,0,0,37,0,0,0,100,0,0,0,47,0,0,0,37,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,97,32,37,98,32,37,100,32,37,72,58,37,77,58,37,83,32,37,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,97,0,0,0,32,0,0,0,37,0,0,0,98,0,0,0,32,0,0,0,37,0,0,0,100,0,0,0,32,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,32,0,0,0,37,0,0,0,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,73,58,37,77,58,37,83,32,37,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,73,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,32,0,0,0,37,0,0,0,112,0,0,0,0,0,0,0,108,111,99,97,108,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,0,0,0,16,78,0,0,212,0,0,0,213,0,0,0,163,0,0,0,0,0,0,0,78,83,116,51,95,95,49,54,108,111,99,97,108,101,53,102,97,99,101,116,69,0,0,0,8,111,0,0,248,77,0,0,144,60,0,0,0,0,0,0,0,0,0,0,160,78,0,0,212,0,0,0,214,0,0,0,163,0,0,0,18,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,31,0,0,0,19,0,0,0,32,0,0,0,20,0,0,0,33,0,0,0,5,0,0,0,21,0,0,0,6,0,0,0,0,0,0,0,78,83,116,51,95,95,49,53,99,116,121,112,101,73,119,69,69,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,48,99,116,121,112,101,95,98,97,115,101,69,0,0,0,0,160,109,0,0,128,78,0,0,104,111,0,0,104,78,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,152,78,0,0,2,0,0,0,78,83,116,51,95,95,49,53,99,116,121,112,101,73,99,69,69,0,0,0,0,0,0,0,104,111,0,0,192,78,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,152,78,0,0,2,0,0,0,0,0,0,0,112,79,0,0,212,0,0,0,215,0,0,0,163,0,0,0,3,0,0,0,4,0,0,0,7,0,0,0,64,0,0,0,65,0,0,0,8,0,0,0,66,0,0,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,99,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,50,99,111,100,101,99,118,116,95,98,97,115,101,69,0,0,160,109,0,0,80,79,0,0,104,111,0,0,40,79,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,104,79,0,0,2,0,0,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,119,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,0,0,0,0,0,0,104,111,0,0,144,79,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,104,79,0,0,2,0,0,0,0,0,0,0,48,80,0,0,212,0,0,0,216,0,0,0,163,0,0,0,5,0,0,0,6,0,0,0,9,0,0,0,67,0,0,0,68,0,0,0,10,0,0,0,69,0,0,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,68,115,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,0,0,0,0,0,104,111,0,0,8,80,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,104,79,0,0,2,0,0,0,0,0,0,0,168,80,0,0,212,0,0,0,217,0,0,0,163,0,0,0,7,0,0,0,8,0,0,0,11,0,0,0,70,0,0,0,71,0,0,0,12,0,0,0,72,0,0,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,68,105,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,0,0,0,0,0,104,111,0,0,128,80,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,104,79,0,0,2,0,0,0,0,0,0,0,32,81,0,0,212,0,0,0,218,0,0,0,163,0,0,0,7,0,0,0,8,0,0,0,11,0,0,0,70,0,0,0,71,0,0,0,12,0,0,0,72,0,0,0,78,83,116,51,95,95,49,49,54,95,95,110,97,114,114,111,119,95,116,111,95,117,116,102,56,73,76,106,51,50,69,69,69,0,0,0,0,0,0,0,8,111,0,0,248,80,0,0,168,80,0,0,0,0,0,0,0,0,0,0,136,81,0,0,212,0,0,0,219,0,0,0,163,0,0,0,7,0,0,0,8,0,0,0,11,0,0,0,70,0,0,0,71,0,0,0,12,0,0,0,72,0,0,0,78,83,116,51,95,95,49,49,55,95,95,119,105,100,101,110,95,102,114,111,109,95,117,116,102,56,73,76,106,51,50,69,69,69,0,0,0,0,0,0,8,111,0,0,96,81,0,0,168,80,0,0,0,0,0,0,78,83,116,51,95,95,49,56,110,117,109,112,117,110,99,116,73,99,69,69,0,0,0,0,8,111,0,0,152,81,0,0,16,78,0,0,0,0,0,0,78,83,116,51,95,95,49,56,110,117,109,112,117,110,99,116,73,119,69,69,0,0,0,0,8,111,0,0,192,81,0,0,16,78,0,0,0,0,0,0,78,83,116,51,95,95,49,54,108,111,99,97,108,101,53,95,95,105,109,112,69,0,0,0,8,111,0,0,232,81,0,0,16,78,0,0,0,0,0,0,78,83,116,51,95,95,49,55,99,111,108,108,97,116,101,73,99,69,69,0,0,0,0,0,8,111,0,0,16,82,0,0,16,78,0,0,0,0,0,0,78,83,116,51,95,95,49,55,99,111,108,108,97,116,101,73,119,69,69,0,0,0,0,0,8,111,0,0,56,82,0,0,16,78,0,0,0,0,0,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,99,76,98,48,69,69,69,0,0,0,0,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,95,98,97,115,101,69,0,0,0,0,160,109,0,0,128,82,0,0,104,111,0,0,96,82,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,152,82,0,0,2,0,0,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,99,76,98,49,69,69,69,0,0,0,0,0,104,111,0,0,192,82,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,152,82,0,0,2,0,0,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,119,76,98,48,69,69,69,0,0,0,0,0,104,111,0,0,0,83,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,152,82,0,0,2,0,0,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,119,76,98,49,69,69,69,0,0,0,0,0,104,111,0,0,64,83,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,152,82,0,0,2,0,0,0,78,83,116,51,95,95,49,56,116,105,109,101,95,103,101,116,73,99,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,0,78,83,116,51,95,95,49,57,116,105,109,101,95,98,97,115,101,69,0,0,0,0,0,0,160,109,0,0,200,83,0,0,78,83,116,51,95,95,49,50,48,95,95,116,105,109,101,95,103,101,116,95,99,95,115,116,111,114,97,103,101,73,99,69,69,0,0,0,0,0,0,0,160,109,0,0,232,83,0,0,104,111,0,0,128,83,0,0,0,0,0,0,3,0,0,0,16,78,0,0,2,0,0,0,224,83,0,0,2,0,0,0,16,84,0,0,0,8,0,0,78,83,116,51,95,95,49,56,116,105,109,101,95,103,101,116,73,119,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,116,105,109,101,95,103,101,116,95,99,95,115,116,111,114,97,103,101,73,119,69,69,0,0,0,0,0,0,0,160,109,0,0,136,84,0,0,104,111,0,0,64,84,0,0,0,0,0,0,3,0,0,0,16,78,0,0,2,0,0,0,224,83,0,0,2,0,0,0,176,84,0,0,0,8,0,0,78,83,116,51,95,95,49,56,116,105,109,101,95,112,117,116,73,99,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,0,78,83,116,51,95,95,49,49,48,95,95,116,105,109,101,95,112,117,116,69,0,0,0,0,160,109,0,0,40,85,0,0,104,111,0,0,224,84,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,64,85,0,0,0,8,0,0,78,83,116,51,95,95,49,56,116,105,109,101,95,112,117,116,73,119,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,0,104,111,0,0,104,85,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,64,85,0,0,0,8,0,0,78,83,116,51,95,95,49,56,109,101,115,115,97,103,101,115,73,99,69,69,0,0,0,0,78,83,116,51,95,95,49,49,51,109,101,115,115,97,103,101,115,95,98,97,115,101,69,0,160,109,0,0,232,85,0,0,104,111,0,0,208,85,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,0,86,0,0,2,0,0,0,78,83,116,51,95,95,49,56,109,101,115,115,97,103,101,115,73,119,69,69,0,0,0,0,104,111,0,0,40,86,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,0,86,0,0,2,0,0,0,78,83,116,51,95,95,49,55,110,117,109,95,103,101,116,73,99,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,0,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,103,101,116,73,99,69,69,0,0,0,78,83,116,51,95,95,49,49,52,95,95,110,117,109,95,103,101,116,95,98,97,115,101,69,0,0,0,0,0,0,0,0,160,109,0,0,192,86,0,0,104,111,0,0,168,86,0,0,0,0,0,0,1,0,0,0,224,86,0,0,0,0,0,0,104,111,0,0,96,86,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,232,86,0,0,0,0,0,0,78,83,116,51,95,95,49,55,110,117,109,95,103,101,116,73,119,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,0,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,103,101,116,73,119,69,69,0,0,0,104,111,0,0,104,87,0,0,0,0,0,0,1,0,0,0,224,86,0,0,0,0,0,0,104,111,0,0,32,87,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,128,87,0,0,0,0,0,0,78,83,116,51,95,95,49,55,110,117,109,95,112,117,116,73,99,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,0,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,112,117,116,73,99,69,69,0,0,0,78,83,116,51,95,95,49,49,52,95,95,110,117,109,95,112,117,116,95,98,97,115,101,69,0,0,0,0,0,0,0,0,160,109,0,0,24,88,0,0,104,111,0,0,0,88,0,0,0,0,0,0,1,0,0,0,56,88,0,0,0,0,0,0,104,111,0,0,184,87,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,64,88,0,0,0,0,0,0,78,83,116,51,95,95,49,55,110,117,109,95,112,117,116,73,119,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,0,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,112,117,116,73,119,69,69,0,0,0,104,111,0,0,192,88,0,0,0,0,0,0,1,0,0,0,56,88,0,0,0,0,0,0,104,111,0,0,120,88,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,216,88,0,0,0,0,0,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,103,101,116,73,99,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,103,101,116,73,99,69,69,0,0,0,0,0,0,0,0,160,109,0,0,88,89,0,0,104,111,0,0,16,89,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,120,89,0,0,0,0,0,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,103,101,116,73,119,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,103,101,116,73,119,69,69,0,0,0,0,0,0,0,0,160,109,0,0,232,89,0,0,104,111,0,0,160,89,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,8,90,0,0,0,0,0,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,112,117,116,73,99,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,112,117,116,73,99,69,69,0,0,0,0,0,0,0,0,160,109,0,0,120,90,0,0,104,111,0,0,48,90,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,152,90,0,0,0,0,0,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,112,117,116,73,119,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,112,117,116,73,119,69,69,0,0,0,0,0,0,0,0,160,109,0,0,8,91,0,0,104,111,0,0,192,90,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,40,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,77,0,0,0,0,0,0,80,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,97,0,0,0,110,0,0,0,117,0,0,0,97,0,0,0,114,0,0,0,121,0,0,0,0,0,0,0,70,0,0,0,101,0,0,0,98,0,0,0,114,0,0,0,117,0,0,0,97,0,0,0,114,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,97,0,0,0,114,0,0,0,99,0,0,0,104,0,0,0,0,0,0,0,65,0,0,0,112,0,0,0,114,0,0,0,105,0,0,0,108,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,110,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,108,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,117,0,0,0,103,0,0,0,117,0,0,0,115,0,0,0,116,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,101,0,0,0,112,0,0,0,116,0,0,0,101,0,0,0,109,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,79,0,0,0,99,0,0,0,116,0,0,0,111,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,78,0,0,0,111,0,0,0,118,0,0,0,101,0,0,0,109,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,0,0,0,0,68,0,0,0,101,0,0,0,99,0,0,0,101,0,0,0,109,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,97,0,0,0,110,0,0,0,0,0,0,0,70,0,0,0,101,0,0,0,98,0,0,0,0,0,0,0,77,0,0,0,97,0,0,0,114,0,0,0,0,0,0,0,65,0,0,0,112,0,0,0,114,0,0,0,0,0,0,0,77,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,110,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,108],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+14996);allocate([65,0,0,0,117,0,0,0,103,0,0,0,0,0,0,0,83,0,0,0,101,0,0,0,112,0,0,0,0,0,0,0,79,0,0,0,99,0,0,0,116,0,0,0,0,0,0,0,78,0,0,0,111,0,0,0,118,0,0,0,0,0,0,0,68,0,0,0,101,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,97,110,117,97,114,121,0,70,101,98,114,117,97,114,121,0,0,0,0,0,0,0,0,77,97,114,99,104,0,0,0,65,112,114,105,108,0,0,0,77,97,121,0,0,0,0,0,74,117,110,101,0,0,0,0,74,117,108,121,0,0,0,0,65,117,103,117,115,116,0,0,83,101,112,116,101,109,98,101,114,0,0,0,0,0,0,0,79,99,116,111,98,101,114,0,78,111,118,101,109,98,101,114,0,0,0,0,0,0,0,0,68,101,99,101,109,98,101,114,0,0,0,0,0,0,0,0,74,97,110,0,0,0,0,0,70,101,98,0,0,0,0,0,77,97,114,0,0,0,0,0,65,112,114,0,0,0,0,0,74,117,110,0,0,0,0,0,74,117,108,0,0,0,0,0,65,117,103,0,0,0,0,0,83,101,112,0,0,0,0,0,79,99,116,0,0,0,0,0,78,111,118,0,0,0,0,0,68,101,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,117,0,0,0,110,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,111,0,0,0,110,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,117,0,0,0,101,0,0,0,115,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,87,0,0,0,101,0,0,0,100,0,0,0,110,0,0,0,101,0,0,0,115,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,84,0,0,0,104,0,0,0,117,0,0,0,114,0,0,0,115,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,114,0,0,0,105,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,97,0,0,0,116,0,0,0,117,0,0,0,114,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,117,0,0,0,110,0,0,0,0,0,0,0,77,0,0,0,111,0,0,0,110,0,0,0,0,0,0,0,84,0,0,0,117,0,0,0,101,0,0,0,0,0,0,0,87,0,0,0,101,0,0,0,100,0,0,0,0,0,0,0,84,0,0,0,104,0,0,0,117,0,0,0,0,0,0,0,70,0,0,0,114,0,0,0,105,0,0,0,0,0,0,0,83,0,0,0,97,0,0,0,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,117,110,100,97,121,0,0,77,111,110,100,97,121,0,0,84,117,101,115,100,97,121,0,87,101,100,110,101,115,100,97,121,0,0,0,0,0,0,0,84,104,117,114,115,100,97,121,0,0,0,0,0,0,0,0,70,114,105,100,97,121,0,0,83,97,116,117,114,100,97,121,0,0,0,0,0,0,0,0,83,117,110,0,0,0,0,0,77,111,110,0,0,0,0,0,84,117,101,0,0,0,0,0,87,101,100,0,0,0,0,0,84,104,117,0,0,0,0,0,70,114,105,0,0,0,0,0,83,97,116,0,0,0,0,0,2,0,0,192,3,0,0,192,4,0,0,192,5,0,0,192,6,0,0,192,7,0,0,192,8,0,0,192,9,0,0,192,10,0,0,192,11,0,0,192,12,0,0,192,13,0,0,192,14,0,0,192,15,0,0,192,16,0,0,192,17,0,0,192,18,0,0,192,19,0,0,192,20,0,0,192,21,0,0,192,22,0,0,192,23,0,0,192,24,0,0,192,25,0,0,192,26,0,0,192,27,0,0,192,28,0,0,192,29,0,0,192,30,0,0,192,31,0,0,192,0,0,0,179,1,0,0,195,2,0,0,195,3,0,0,195,4,0,0,195,5,0,0,195,6,0,0,195,7,0,0,195,8,0,0,195,9,0,0,195,10,0,0,195,11,0,0,195,12,0,0,195,13,0,0,211,14,0,0,195,15,0,0,195,0,0,12,187,1,0,12,195,2,0,12,195,3,0,12,195,4,0,12,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,117,110,99,97,117,103,104,116,0,0,0,0,0,0,0,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,58,32,37,115,0,0,0,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,0,0,0,0,0,0,0,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,102,111,114,101,105,103,110,32,101,120,99,101,112,116,105,111,110,0,0,0,116,101,114,109,105,110,97,116,105,110,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,116,104,114,101,97,100,95,111,110,99,101,32,102,97,105,108,117,114,101,32,105,110,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,95,102,97,115,116,40,41,0,0,0,0,0,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,116,104,114,101,97,100,32,107,101,121,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,0,0,0,0,0,0,99,97,110,110,111,116,32,122,101,114,111,32,111,117,116,32,116,104,114,101,97,100,32,118,97,108,117,101,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,0,0,0,0,0,0,0,192,106,0,0,220,0,0,0,221,0,0,0,73,0,0,0,0,0,0,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,0,83,116,57,98,97,100,95,97,108,108,111,99,0,0,0,0,8,111,0,0,176,106,0,0,88,107,0,0,0,0,0,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,114,101,116,117,114,110,101,100,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,116,104,114,101,119,32,97,110,32,101,120,99,101,112,116,105,111,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,116,100,58,58,101,120,99,101,112,116,105,111,110,0,0,83,116,57,101,120,99,101,112,116,105,111,110,0,0,0,0,160,109,0,0,72,107,0,0,0,0,0,0,160,107,0,0,222,0,0,0,223,0,0,0,74,0,0,0,0,0,0,0,0,0,0,0,72,108,0,0,224,0,0,0,225,0,0,0,7,0,0,0,0,0,0,0,83,116,49,49,108,111,103,105,99,95,101,114,114,111,114,0,8,111,0,0,144,107,0,0,88,107,0,0,0,0,0,0,0,0,0,0,224,107,0,0,222,0,0,0,226,0,0,0,74,0,0,0,0,0,0,0,83,116,49,50,108,101,110,103,116,104,95,101,114,114,111,114,0,0,0,0,0,0,0,0,8,111,0,0,200,107,0,0,160,107,0,0,0,0,0,0,0,0,0,0,32,108,0,0,222,0,0,0,227,0,0,0,74,0,0,0,0,0,0,0,83,116,49,50,111,117,116,95,111,102,95,114,97,110,103,101,0,0,0,0,0,0,0,0,8,111,0,0,8,108,0,0,160,107,0,0,0,0,0,0,83,116,49,51,114,117,110,116,105,109,101,95,101,114,114,111,114,0,0,0,0,0,0,0,8,111,0,0,48,108,0,0,88,107,0,0,0,0,0,0,0,0,0,0,168,108,0,0,228,0,0,0,229,0,0,0,75,0,0,0,0,0,0,0,115,116,100,58,58,98,97,100,95,99,97,115,116,0,0,0,83,116,57,116,121,112,101,95,105,110,102,111,0,0,0,0,160,109,0,0,128,108,0,0,83,116,56,98,97,100,95,99,97,115,116,0,0,0,0,0,8,111,0,0,152,108,0,0,88,107,0,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,0,0,0,8,111,0,0,184,108,0,0,144,108,0,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,0,0,8,111,0,0,240,108,0,0,224,108,0,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,57,95,95,112,111,105,110,116,101,114,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,112,98,97,115,101,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,0,0,8,111,0,0,80,109,0,0,224,108,0,0,0,0,0,0,8,111,0,0,40,109,0,0,120,109,0,0,0,0,0,0,0,0,0,0,24,109,0,0,230,0,0,0,231,0,0,0,232,0,0,0,233,0,0,0,22,0,0,0,14,0,0,0,1,0,0,0,6,0,0,0,0,0,0,0,136,109,0,0,230,0,0,0,234,0,0,0,232,0,0,0,233,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,40,110,0,0,230,0,0,0,235,0,0,0,232,0,0,0,233,0,0,0,24,0,0,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,51,95,95,102,117,110,100,97,109,101,110,116,97,108,95,116,121,112,101,95,105,110,102,111,69,0,8,111,0,0,0,110,0,0,224,108,0,0,0,0,0,0,118,0,0,0,0,0,0,0,232,109,0,0,56,110,0,0,68,110,0,0,0,0,0,0,232,109,0,0,72,110,0,0,98,0,0,0,0,0,0,0,232,109,0,0,88,110,0,0,99,0,0,0,0,0,0,0,232,109,0,0,104,110,0,0,104,0,0,0,0,0,0,0,232,109,0,0,120,110,0,0,97,0,0,0,0,0,0,0,232,109,0,0,136,110,0,0,232,109,0,0,160,36,0,0,232,109,0,0,152,36,0,0,105,0,0,0,0,0,0,0,232,109,0,0,168,110,0,0,106,0,0,0,0,0,0,0,232,109,0,0,184,110,0,0,232,109,0,0,120,69,0,0,109,0,0,0,0,0,0,0,232,109,0,0,208,110,0,0,102,0,0,0,0,0,0,0,232,109,0,0,224,110,0,0,100,0,0,0,0,0,0,0,232,109,0,0,240,110,0,0,0,0,0,0,80,111,0,0,230,0,0,0,236,0,0,0,232,0,0,0,233,0,0,0,22,0,0,0,15,0,0,0,2,0,0,0,7,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,8,111,0,0,40,111,0,0,24,109,0,0,0,0,0,0,0,0,0,0,176,111,0,0,230,0,0,0,237,0,0,0,232,0,0,0,233,0,0,0,22,0,0,0,16,0,0,0,3,0,0,0,8,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,49,95,95,118,109,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,8,111,0,0,136,111,0,0,24,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,255,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,1,2,4,7,3,6,5,0,0,0,0,0,0,0,0,105,110,102,105,110,105,116,121,0,0,0,0,0,0,0,0,95,112,137,0,255,9,47,15,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,0,0,0,0,0,0,40,110,117,108,108,41,0,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,0,0,0,0,0,105,110,102,0,0,0,0,0,73,78,70,0,0,0,0,0,110,97,110,0,0,0,0,0,78,65,78,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+25240);var tempDoublePtr=Runtime.alignMemory(allocate(12,"i8",ALLOC_STATIC),8);assert(tempDoublePtr%8==0);function copyTempFloat(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3]}function copyTempDouble(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3];HEAP8[tempDoublePtr+4]=HEAP8[ptr+4];HEAP8[tempDoublePtr+5]=HEAP8[ptr+5];HEAP8[tempDoublePtr+6]=HEAP8[ptr+6];HEAP8[tempDoublePtr+7]=HEAP8[ptr+7]}function _atexit(func,arg){__ATEXIT__.unshift({func:func,arg:arg})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}Module["_i64Subtract"]=_i64Subtract;Module["_i64Add"]=_i64Add;function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:(function(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var ptr in EXCEPTIONS.infos){var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr}}return adjusted}),addRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++}),decRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0){if(info.destructor){Runtime.dynCall("vi",info.destructor,[ptr])}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}EXCEPTIONS.clearRef(EXCEPTIONS.deAdjust(ptr));throw ptr}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(asm["setTempRet0"](0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(asm["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>2];info.adjusted=thrown;return(asm["setTempRet0"](typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(asm["setTempRet0"](throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr}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>shift])}),destructorFunction:null})}function _pthread_mutex_lock(){}function _free(){}Module["_free"]=_free;function _malloc(bytes){var ptr=Runtime.dynamicAlloc(bytes+8);return ptr+8&4294967288}Module["_malloc"]=_malloc;function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}function __embind_register_std_string(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":(function(value){var length=HEAPU32[value>>2];var a=new Array(length);for(var i=0;i>2]=length;for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}if(destructors!==null){destructors.push(_free,ptr)}return ptr}),"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:(function(ptr){_free(ptr)})})}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var HEAP,shift;if(charSize===2){HEAP=HEAPU16;shift=1}else if(charSize===4){HEAP=HEAPU32;shift=2}registerType(rawType,{name:name,"fromWireType":(function(value){var length=HEAPU32[value>>2];var a=new Array(length);var start=value+4>>shift;for(var i=0;i>2]=length;var start=ptr+4>>shift;for(var i=0;i>2]=value;return value}var PATH={splitPath:(function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(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(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(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(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),resolve:(function(){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(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start=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;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.buffer.byteLength:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=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;i0||position+lengthe2.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 errored=false;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(){done(this.error)});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(){NODEFS.isWindows=!!process.platform.match(/^win/)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(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(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&146)>>1}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(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)}),flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:(function(flags){if(flags in NODEFS.flagsToPermissionStringMap){return NODEFS.flagsToPermissionStringMap[flags]}else{return flags}}),node_ops:{getattr:(function(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(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(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(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(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(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(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(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(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(node){var path=NODEFS.realPath(node);try{return fs.readlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(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(stream,buffer,offset,length,position){if(length===0)return 0;var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(res>0){for(var i=0;i8){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;i40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(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(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(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(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(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(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(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(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags}),flagsToPermissionString:(function(flag){var accmode=flag&2097155;var perms=["r","w","rw"][accmode];if(flag&512){perms+="w"}return perms}),nodePermissions:(function(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(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")}),mayDelete:(function(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(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if((flags&2097155)!==0||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(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(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){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(fd){FS.streams[fd]=null}),getStreamFromPtr:(function(ptr){return FS.streams[ptr-1]}),getPtrForStream:(function(stream){return stream?stream.fd+1:0}),chrdev_stream_ops:{open:(function(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(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(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(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}var mounts=FS.getMounts(FS.root.mount);var completed=0;function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=mounts.length){callback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(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(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(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(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(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdev:(function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)}),symlink:(function(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(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(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(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(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){if(err===ERRNO_CODES.EISDIR)err=ERRNO_CODES.EPERM;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(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 link.node_ops.readlink(link)}),stat:(function(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(path){return FS.stat(path,true)}),chmod:(function(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(path,mode){FS.chmod(path,mode,true)}),fchmod:(function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)}),chown:(function(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(path,uid,gid){FS.chown(path,uid,gid,true)}),fchown:(function(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(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(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(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(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==="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(!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;Module["printErr"]("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(stream){try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}}),llseek:(function(stream,offset,whence){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(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}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=true;if(typeof position==="undefined"){position=stream.position;seeking=false}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(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}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=true;if(typeof position==="undefined"){position=stream.position;seeking=false}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(stream,offset,length){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(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(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)}),ioctl:(function(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(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="";var utf8=new Runtime.UTF8Processor;for(var i=0;i>2]=FS.getPtrForStream(stdin);assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");HEAP32[_stdout>>2]=FS.getPtrForStream(stdout);assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");HEAP32[_stderr>>2]=FS.getPtrForStream(stderr);assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")")}),ensureErrnoError:(function(){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]};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=""}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices()}),init:(function(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(){FS.init.initialized=false;for(var i=0;ithis.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 chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(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]}));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.defineProperty(lazyArray,"length",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})});Object.defineProperty(lazyArray,"chunkSize",{get:(function(){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.defineProperty(node,"usedBytes",{get:(function(){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>8,sock.sport&255]))}return peer}),getPeer:(function(sock,addr,port){return sock.peers[addr+":"+port]}),addPeer:(function(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer}),removePeer:(function(sock,peer){delete sock.peers[peer.addr+":"+peer.port]}),handlePeerEvents:(function(sock,peer){var first=true;var handleOpen=(function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}});function handleMessage(data){assert(typeof data!=="string"&&data.byteLength!==undefined);data=new Uint8Array(data);var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(function(data,flags){if(!flags.binary){return}handleMessage((new Uint8Array(data)).buffer)}));peer.socket.on("close",(function(){Module["websocket"].emit("close",sock.stream.fd)}));peer.socket.on("error",(function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}))}else{peer.socket.onopen=handleOpen;peer.socket.onclose=(function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=(function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}}),poll:(function(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask}),ioctl:(function(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return ERRNO_CODES.EINVAL}}),close:(function(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i>0]=chr;var fd=_fileno(stream);var ret=_write(fd,_fputc.ret,1);if(ret==-1){var streamObj=FS.getStreamFromPtr(stream);if(streamObj)streamObj.error=true;return-1}else{return chr}}function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 79:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}}___setErrNo(ERRNO_CODES.EINVAL);return-1}function _fwrite(ptr,size,nitems,stream){var bytesToWrite=nitems*size;if(bytesToWrite==0)return 0;var fd=_fileno(stream);var bytesWritten=_write(fd,ptr,bytesToWrite);if(bytesWritten==-1){var streamObj=FS.getStreamFromPtr(stream);if(streamObj)streamObj.error=true;return 0}else{return bytesWritten/size|0}}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>2]=HEAP32[varargs+argIndex>>2],HEAP32[tempDoublePtr+4>>2]=HEAP32[varargs+(argIndex+4)>>2],+HEAPF64[tempDoublePtr>>3])}else if(type=="i64"){ret=[HEAP32[varargs+argIndex>>2],HEAP32[varargs+(argIndex+4)>>2]]}else{type="i32";ret=HEAP32[varargs+argIndex>>2]}argIndex+=Runtime.getNativeFieldSize(type);return ret}var ret=[];var curr,next,currArg;while(1){var startTextIndex=textIndex;curr=HEAP8[textIndex>>0];if(curr===0)break;next=HEAP8[textIndex+1>>0];if(curr==37){var flagAlwaysSigned=false;var flagLeftAlign=false;var flagAlternative=false;var flagZeroPad=false;var flagPadSign=false;flagsLoop:while(1){switch(next){case 43:flagAlwaysSigned=true;break;case 45:flagLeftAlign=true;break;case 35:flagAlternative=true;break;case 48:if(flagZeroPad){break flagsLoop}else{flagZeroPad=true;break};case 32:flagPadSign=true;break;default:break flagsLoop}textIndex++;next=HEAP8[textIndex+1>>0]}var width=0;if(next==42){width=getNextArg("i32");textIndex++;next=HEAP8[textIndex+1>>0]}else{while(next>=48&&next<=57){width=width*10+(next-48);textIndex++;next=HEAP8[textIndex+1>>0]}}var precisionSet=false,precision=-1;if(next==46){precision=0;precisionSet=true;textIndex++;next=HEAP8[textIndex+1>>0];if(next==42){precision=getNextArg("i32");textIndex++}else{while(1){var precisionChr=HEAP8[textIndex+1>>0];if(precisionChr<48||precisionChr>57)break;precision=precision*10+(precisionChr-48);textIndex++}}next=HEAP8[textIndex+1>>0]}if(precision<0){precision=6;precisionSet=false}var argSize;switch(String.fromCharCode(next)){case"h":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==104){textIndex++;argSize=1}else{argSize=2}break;case"l":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==108){textIndex++;argSize=8}else{argSize=4}break;case"L":case"q":case"j":argSize=8;break;case"z":case"t":case"I":argSize=4;break;default:argSize=null}if(argSize)textIndex++;next=HEAP8[textIndex+1>>0];switch(String.fromCharCode(next)){case"d":case"i":case"u":case"o":case"x":case"X":case"p":{var signed=next==100||next==105;argSize=argSize||4;var currArg=getNextArg("i"+argSize*8);var origArg=currArg;var argText;if(argSize==8){currArg=Runtime.makeBigInt(currArg[0],currArg[1],next==117)}if(argSize<=4){var limit=Math.pow(256,argSize)-1;currArg=(signed?reSign:unSign)(currArg&limit,argSize*8)}var currAbsArg=Math.abs(currArg);var prefix="";if(next==100||next==105){if(argSize==8&&i64Math)argText=i64Math.stringify(origArg[0],origArg[1],null);else argText=reSign(currArg,8*argSize,1).toString(10)}else if(next==117){if(argSize==8&&i64Math)argText=i64Math.stringify(origArg[0],origArg[1],true);else argText=unSign(currArg,8*argSize,1).toString(10);currArg=Math.abs(currArg)}else if(next==111){argText=(flagAlternative?"0":"")+currAbsArg.toString(8)}else if(next==120||next==88){prefix=flagAlternative&&currArg!=0?"0x":"";if(argSize==8&&i64Math){if(origArg[1]){argText=(origArg[1]>>>0).toString(16);var lower=(origArg[0]>>>0).toString(16);while(lower.length<8)lower="0"+lower;argText+=lower}else{argText=(origArg[0]>>>0).toString(16)}}else if(currArg<0){currArg=-currArg;argText=(currAbsArg-1).toString(16);var buffer=[];for(var i=0;i=0){if(flagAlwaysSigned){prefix="+"+prefix}else if(flagPadSign){prefix=" "+prefix}}if(argText.charAt(0)=="-"){prefix="-"+prefix;argText=argText.substr(1)}while(prefix.length+argText.lengthexponent&&exponent>=-4){next=(next==103?"f":"F").charCodeAt(0);precision-=exponent+1}else{next=(next==103?"e":"E").charCodeAt(0);precision--}effectivePrecision=Math.min(precision,20)}if(next==101||next==69){argText=currArg.toExponential(effectivePrecision);if(/[eE][-+]\d$/.test(argText)){argText=argText.slice(0,-1)+"0"+argText.slice(-1)}}else if(next==102||next==70){argText=currArg.toFixed(effectivePrecision);if(currArg===0&&__reallyNegative(currArg)){argText="-"+argText}}var parts=argText.split("e");if(isGeneral&&!flagAlternative){while(parts[0].length>1&&parts[0].indexOf(".")!=-1&&(parts[0].slice(-1)=="0"||parts[0].slice(-1)==".")){parts[0]=parts[0].slice(0,-1)}}else{if(flagAlternative&&argText.indexOf(".")==-1)parts[0]+=".";while(precision>effectivePrecision++)parts[0]+="0"}argText=parts[0]+(parts.length>1?"e"+parts[1]:"");if(next==69)argText=argText.toUpperCase();if(currArg>=0){if(flagAlwaysSigned){argText="+"+argText}else if(flagPadSign){argText=" "+argText}}}while(argText.length>0])}}else{ret=ret.concat(intArrayFromString("(null)".substr(0,argLength),true))}if(flagLeftAlign){while(argLength0){ret.push(32)}if(!flagLeftAlign)ret.push(getNextArg("i8"));break};case"n":{var ptr=getNextArg("i32*");HEAP32[ptr>>2]=ret.length;break};case"%":{ret.push(curr);break};default:{for(var i=startTextIndex;i>0])}}}textIndex+=2}else{ret.push(curr);textIndex+=1}}return ret}function _fprintf(stream,format,varargs){var result=__formatString(format,varargs);var stack=Runtime.stackSave();var ret=_fwrite(allocate(result,"i8",ALLOC_STACK),1,result.length,stream);Runtime.stackRestore(stack);return ret}function _vfprintf(s,f,va_arg){return _fprintf(s,f,HEAP32[va_arg>>2])}function _pthread_mutex_unlock(){}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;function _sbrk(bytes){var self=_sbrk;if(!self.called){DYNAMICTOP=alignMemoryPage(DYNAMICTOP);self.called=true;assert(Runtime.dynamicAlloc);self.alloc=Runtime.dynamicAlloc;Runtime.dynamicAlloc=(function(){abort("cannot dynamically allocate, sbrk now has control")})}var ret=DYNAMICTOP;if(bytes!=0)self.alloc(bytes);return ret}Module["_bitshift64Shl"]=_bitshift64Shl;var LOCALE={curr:0,check:(function(locale){if(locale)locale=Pointer_stringify(locale);return locale==="C"||locale==="POSIX"||!locale})};function _calloc(n,s){var ret=_malloc(n*s);_memset(ret,0,n*s);return ret}Module["_calloc"]=_calloc;function _newlocale(mask,locale,base){if(!LOCALE.check(locale)){___setErrNo(ERRNO_CODES.ENOENT);return 0}if(!base)base=_calloc(1,4);return base}Module["_memmove"]=_memmove;function ___errno_location(){return ___errno_state}function _strerror_r(errnum,strerrbuf,buflen){if(errnum in ERRNO_MESSAGES){if(ERRNO_MESSAGES[errnum].length>buflen-1){return ___setErrNo(ERRNO_CODES.ERANGE)}else{var msg=ERRNO_MESSAGES[errnum];writeAsciiToMemory(msg,strerrbuf);return 0}}else{return ___setErrNo(ERRNO_CODES.EINVAL)}}function _strerror(errnum){if(!_strerror.buffer)_strerror.buffer=_malloc(256);_strerror_r(errnum,_strerror.buffer,256);return _strerror.buffer}function _pthread_mutex_destroy(){}function _catclose(catd){return 0}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 ___cxa_guard_release(){}function _ungetc(c,stream){stream=FS.getStreamFromPtr(stream);if(!stream){return-1}if(c===-1){return c}c=unSign(c&255);stream.ungotten.push(c);stream.eof=false;return c}function _uselocale(locale){var old=LOCALE.curr;if(locale)LOCALE.curr=locale;return old}function ___assert_fail(condition,filename,line,func){ABORT=true;throw"Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"]+" at "+stackTrace()}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":(function(){return undefined}),"toWireType":(function(destructors,o){return undefined})})}Module["_memset"]=_memset;var _BDtoILow=true;var _BItoD=true;function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]);return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?Pointer_stringify(tm_zone):""};var pattern=Pointer_stringify(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":(function(date){return WEEKDAYS[date.tm_wday].substring(0,3)}),"%A":(function(date){return WEEKDAYS[date.tm_wday]}),"%b":(function(date){return MONTHS[date.tm_mon].substring(0,3)}),"%B":(function(date){return MONTHS[date.tm_mon]}),"%C":(function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)}),"%d":(function(date){return leadingNulls(date.tm_mday,2)}),"%e":(function(date){return leadingSomething(date.tm_mday,2," ")}),"%g":(function(date){return getWeekBasedYear(date).toString().substring(2)}),"%G":(function(date){return getWeekBasedYear(date)}),"%H":(function(date){return leadingNulls(date.tm_hour,2)}),"%I":(function(date){return leadingNulls(date.tm_hour<13?date.tm_hour:date.tm_hour-12,2)}),"%j":(function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)}),"%m":(function(date){return leadingNulls(date.tm_mon+1,2)}),"%M":(function(date){return leadingNulls(date.tm_min,2)}),"%n":(function(){return"\n"}),"%p":(function(date){if(date.tm_hour>0&&date.tm_hour<13){return"AM"}else{return"PM"}}),"%S":(function(date){return leadingNulls(date.tm_sec,2)}),"%t":(function(){return"\t"}),"%u":(function(date){var day=new Date(date.tm_year+1900,date.tm_mon+1,date.tm_mday,0,0,0,0);return day.getDay()||7}),"%U":(function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"}),"%V":(function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)}),"%Z":(function(date){return date.tm_zone}),"%%":(function(){return"%"})};for(var rule in EXPANSION_RULES_2){if(pattern.indexOf(rule)>=0){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _abort(){Module["abort"]()}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Runtime.dynCall("v",func);_pthread_once.seen[ptr]=1}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){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}if(this.isSmartPointer){var 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;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,__emval_register((function(){clonedHandle["delete"]()})));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+handle.$$.ptrType.name+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle["delete"]()}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}var _throwInternalError=undefined;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&®isteredClass.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}}function requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i0){HEAP8[ptr++>>0]=streamObj.ungotten.pop();bytesToRead--;bytesRead++}var err=_read(streamObj.fd,ptr,bytesToRead);if(err==-1){if(streamObj)streamObj.error=true;return 0}bytesRead+=err;if(bytesRead>0]}}function _getc(){return _fgetc.apply(null,arguments)}function _embind_repr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function 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);registerType(primitiveType,{name:name,"fromWireType":(function(value){return value}),"toWireType":(function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){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 value|0}),"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler(){setTimeout(Browser.mainLoop.runner,value)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}return 0}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop,arg){Module["noExitRuntime"]=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=func;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}if(Browser.mainLoop.method==="timeout"&&Module.ctx){Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!");Browser.mainLoop.method=""}Browser.mainLoop.runIter((function(){if(typeof arg!=="undefined"){Runtime.dynCall("vi",func,[arg])}else{Runtime.dynCall("v",func)}}));if(thisMainLoopId0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler();if(simulateInfiniteLoop){throw"SimulateInfiniteLoop"}}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:(function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++}),resume:(function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;_emscripten_set_main_loop(func,0,false,Browser.mainLoop.arg);_emscripten_set_main_loop_timing(timingMode,timingValue)}),updateStatus:(function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout((function(){finish(audio)}),1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);var canvas=Module["canvas"];function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===canvas||document["mozPointerLockElement"]===canvas||document["webkitPointerLockElement"]===canvas||document["msPointerLockElement"]===canvas}if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(function(){});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(function(){});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",(function(ev){if(!Browser.pointerLock&&canvas.requestPointerLock){canvas.requestPointerLock();ev.preventDefault()}}),false)}}}),createContext:(function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}canvas.style.backgroundColor="black"}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach((function(callback){callback()}));Browser.init()}return ctx}),destroyContext:(function(canvas,useWebGL,setInModule){}),fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:(function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullScreenChange(){Browser.isFullScreen=false;var canvasContainer=canvas.parentNode;if((document["webkitFullScreenElement"]||document["webkitFullscreenElement"]||document["mozFullScreenElement"]||document["mozFullscreenElement"]||document["fullScreenElement"]||document["fullscreenElement"]||document["msFullScreenElement"]||document["msFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.cancelFullScreen=document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["webkitCancelFullScreen"]||document["msExitFullscreen"]||document["exitFullscreen"]||(function(){});canvas.cancelFullScreen=canvas.cancelFullScreen.bind(document);if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullScreen=true;if(Browser.resizeCanvas)Browser.setFullScreenCanvasSize()}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas)Browser.setWindowedCanvasSize()}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullScreen);Browser.updateCanvasDimensions(canvas)}if(!Browser.fullScreenHandlersInstalled){Browser.fullScreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullScreenChange,false);document.addEventListener("mozfullscreenchange",fullScreenChange,false);document.addEventListener("webkitfullscreenchange",fullScreenChange,false);document.addEventListener("MSFullscreenChange",fullScreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullScreen=canvasContainer["requestFullScreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullScreen"]?(function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}):null);canvasContainer.requestFullScreen()}),nextRAF:0,fakeRequestAnimationFrame:(function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)}),requestAnimationFrame:function requestAnimationFrame(func){if(typeof window==="undefined"){Browser.fakeRequestAnimationFrame(func)}else{if(!window.requestAnimationFrame){window.requestAnimationFrame=window["requestAnimationFrame"]||window["mozRequestAnimationFrame"]||window["webkitRequestAnimationFrame"]||window["msRequestAnimationFrame"]||window["oRequestAnimationFrame"]||Browser.fakeRequestAnimationFrame}window.requestAnimationFrame(func)}},safeCallback:(function(func){return(function(){if(!ABORT)return func.apply(null,arguments)})}),safeRequestAnimationFrame:(function(func){return Browser.requestAnimationFrame((function(){if(!ABORT)func()}))}),safeSetTimeout:(function(func,timeout){Module["noExitRuntime"]=true;return setTimeout((function(){if(!ABORT)func()}),timeout)}),safeSetInterval:(function(func,timeout){Module["noExitRuntime"]=true;return setInterval((function(){if(!ABORT)func()}),timeout)}),getMimetype:(function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]}),getUserMedia:(function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)}),getMovementX:(function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0}),getMovementY:(function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0}),getMouseWheelDelta:(function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail;break;case"mousewheel":delta=event.wheelDelta;break;case"wheel":delta=event["deltaY"];break;default:throw"unrecognized mouse wheel event: "+event.type}return delta}),mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:(function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){Browser.lastTouches[touch.identifier]=Browser.touches[touch.identifier];Browser.touches[touch.identifier]={x:adjustedX,y:adjustedY}}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}}),xhrLoad:(function(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)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)}),asyncLoad:(function(url,onload,onerror,noRunDep){Browser.xhrLoad(url,(function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(!noRunDep)removeRunDependency("al "+url)}),(function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}}));if(!noRunDep)addRunDependency("al "+url)}),resizeListeners:[],updateResizeListeners:(function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach((function(listener){listener(canvas.width,canvas.height)}))}),setCanvasSize:(function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()}),windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags|8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),setWindowedCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags&~8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),updateCanvasDimensions:(function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>1]=values[i]}me.ret=allocate([arr+128*i16size],"i16*",ALLOC_NORMAL)}return me.ret}function _freelocale(locale){_free(locale)}function ___cxa_allocate_exception(size){return _malloc(size)}function _fmod(x,y){return x%y}function _fmodl(){return _fmod.apply(null,arguments)}function _catopen(name,oflag){return-1}function _catgets(catd,set_id,msg_id,s){return s}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return(function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])});case 3:return(function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])});default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":(function(value){return value}),"toWireType":(function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value}),"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}function ___ctype_toupper_loc(){var me=___ctype_toupper_loc;if(!me.ret){var values=[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255];var i32size=4;var arr=_malloc(values.length*i32size);for(var i=0;i>2]=values[i]}me.ret=allocate([arr+128*i32size],"i32*",ALLOC_NORMAL)}return me.ret}function ___cxa_guard_acquire(variable){if(!HEAP8[variable>>0]){HEAP8[variable>>0]=1;return 1}return 0}function ___ctype_tolower_loc(){var me=___ctype_tolower_loc;if(!me.ret){var values=[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255];var i32size=4;var arr=_malloc(values.length*i32size);for(var i=0;i>2]=values[i]}me.ret=allocate([arr+128*i32size],"i32*",ALLOC_NORMAL)}return me.ret}function ___cxa_begin_catch(ptr){__ZSt18uncaught_exceptionv.uncaught_exception--;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr}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 heap32VectorToArray(count,firstElement){var array=[];for(var i=0;i>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=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;i0?", ":"")+argsListWired}var returns=argTypes[0].name!=="void";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>2]=0;__ATINIT__.unshift({func:(function(){TTY.init()})});__ATEXIT__.push({func:(function(){TTY.shutdown()})});TTY.utf8=new Runtime.UTF8Processor;if(ENVIRONMENT_IS_NODE){var fs=require("fs");NODEFS.staticInit()}_fputc.ret=allocate([0],"i8",ALLOC_STATIC);__ATINIT__.push({func:(function(){SOCKFS.root=FS.mount(SOCKFS,{},null)})});init_emval();init_ClassHandle();init_RegisteredPointer();init_embind();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");_fgetc.ret=allocate([0],"i8",ALLOC_STATIC);Module["requestFullScreen"]=function Module_requestFullScreen(lockPointer,resizeCanvas){Browser.requestFullScreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);staticSealed=true;STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=DYNAMICTOP=Runtime.alignMemory(STACK_MAX);assert(DYNAMIC_BASE>2]=16312;a=c[a+4>>2]|0;e=a+4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if(d){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function Ph(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=16312;d=c[a+4>>2]|0;f=d+4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if(e){Uq(a);i=b;return}jd[c[(c[d>>2]|0)+8>>2]&255](d);Uq(a);i=b;return}function Qh(b,d){b=b|0;d=d|0;var e=0;e=i;md[c[(c[b>>2]|0)+24>>2]&127](b)|0;d=Sn(c[d>>2]|0,19144)|0;c[b+36>>2]=d;a[b+44>>0]=(md[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;i=e;return}function Rh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;i=i+16|0;g=b+8|0;d=b;e=a+36|0;f=a+40|0;h=g+8|0;j=g;a=a+32|0;while(1){k=c[e>>2]|0;k=wd[c[(c[k>>2]|0)+20>>2]&15](k,c[f>>2]|0,g,h,d)|0;l=(c[d>>2]|0)-j|0;if((Ib(g|0,1,l|0,c[a>>2]|0)|0)!=(l|0)){e=-1;d=5;break}if((k|0)==2){e=-1;d=5;break}else if((k|0)!=1){d=4;break}}if((d|0)==4){l=((Ac(c[a>>2]|0)|0)!=0)<<31>>31;i=b;return l|0}else if((d|0)==5){i=b;return e|0}return 0}function Sh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;if(a[b+44>>0]|0){g=Ib(d|0,4,e|0,c[b+32>>2]|0)|0;i=f;return g|0}if((e|0)>0)g=0;else{g=0;i=f;return g|0}while(1){if((vd[c[(c[b>>2]|0)+52>>2]&63](b,c[d>>2]|0)|0)==-1){e=6;break}g=g+1|0;if((g|0)<(e|0))d=d+4|0;else{e=6;break}}if((e|0)==6){i=f;return g|0}return 0}function Th(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=i;i=i+32|0;k=e+16|0;p=e+8|0;j=e+4|0;h=e;f=(d|0)==-1;a:do if(!f){c[p>>2]=d;if(a[b+44>>0]|0){if((Ib(p|0,4,1,c[b+32>>2]|0)|0)==1)break;else d=-1;i=e;return d|0}c[j>>2]=k;l=p+4|0;n=b+36|0;o=b+40|0;g=k+8|0;m=k;b=b+32|0;while(1){q=c[n>>2]|0;q=rd[c[(c[q>>2]|0)+12>>2]&15](q,c[o>>2]|0,p,l,h,k,g,j)|0;if((c[h>>2]|0)==(p|0)){d=-1;g=12;break}if((q|0)==3){g=7;break}r=(q|0)==1;if(q>>>0>=2){d=-1;g=12;break}q=(c[j>>2]|0)-m|0;if((Ib(k|0,1,q|0,c[b>>2]|0)|0)!=(q|0)){d=-1;g=12;break}if(r)p=r?c[h>>2]|0:p;else break a}if((g|0)==7){if((Ib(p|0,1,1,c[b>>2]|0)|0)==1)break;else d=-1;i=e;return d|0}else if((g|0)==12){i=e;return d|0}}while(0);r=f?0:d;i=e;return r|0}function Uh(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=16312;a=c[a+4>>2]|0;e=a+4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if(d){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function Vh(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=16312;d=c[a+4>>2]|0;f=d+4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if(e){Uq(a);i=b;return}jd[c[(c[d>>2]|0)+8>>2]&255](d);Uq(a);i=b;return}function Wh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;g=Sn(c[d>>2]|0,19144)|0;f=b+36|0;c[f>>2]=g;d=b+44|0;c[d>>2]=md[c[(c[g>>2]|0)+24>>2]&127](g)|0;f=c[f>>2]|0;a[b+53>>0]=(md[c[(c[f>>2]|0)+28>>2]&127](f)|0)&1;if((c[d>>2]|0)>8)dn(15216);else{i=e;return}}function Xh(a){a=a|0;var b=0;b=i;a=_h(a,0)|0;i=b;return a|0}function Yh(a){a=a|0;var b=0;b=i;a=_h(a,1)|0;i=b;return a|0}function Zh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+32|0;j=e+16|0;f=e+8|0;l=e+4|0;k=e;g=b+52|0;m=(a[g>>0]|0)!=0;if((d|0)==-1){if(m){m=-1;i=e;return m|0}m=c[b+48>>2]|0;a[g>>0]=(m|0)!=-1&1;i=e;return m|0}h=b+48|0;a:do if(m){c[l>>2]=c[h>>2];m=c[b+36>>2]|0;k=rd[c[(c[m>>2]|0)+12>>2]&15](m,c[b+40>>2]|0,l,l+4|0,k,j,j+8|0,f)|0;if((k|0)==1|(k|0)==2){m=-1;i=e;return m|0}else if((k|0)==3){a[j>>0]=c[h>>2];c[f>>2]=j+1}b=b+32|0;while(1){k=c[f>>2]|0;if(k>>>0<=j>>>0)break a;m=k+ -1|0;c[f>>2]=m;if((xc(a[m>>0]|0,c[b>>2]|0)|0)==-1){f=-1;break}}i=e;return f|0}while(0);c[h>>2]=d;a[g>>0]=1;m=d;i=e;return m|0}function _h(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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;e=i;i=i+32|0;g=e+16|0;j=e+8|0;m=e+4|0;l=e;n=b+52|0;if(a[n>>0]|0){f=b+48|0;g=c[f>>2]|0;if(!d){v=g;i=e;return v|0}c[f>>2]=-1;a[n>>0]=0;v=g;i=e;return v|0}s=c[b+44>>2]|0;s=(s|0)>1?s:1;a:do if((s|0)>0){p=b+32|0;n=0;while(1){o=Sc(c[p>>2]|0)|0;if((o|0)==-1){h=-1;break}a[g+n>>0]=o;n=n+1|0;if((n|0)>=(s|0))break a}i=e;return h|0}while(0);b:do if(!(a[b+53>>0]|0)){p=b+40|0;q=b+36|0;n=j+4|0;o=b+32|0;while(1){v=c[p>>2]|0;u=v;t=c[u>>2]|0;u=c[u+4>>2]|0;w=c[q>>2]|0;r=g+s|0;v=rd[c[(c[w>>2]|0)+16>>2]&15](w,v,g,r,m,j,n,l)|0;if((v|0)==3){f=14;break}else if((v|0)==2){h=-1;f=22;break}else if((v|0)!=1){k=s;break b}w=c[p>>2]|0;c[w>>2]=t;c[w+4>>2]=u;if((s|0)==8){h=-1;f=22;break}t=Sc(c[o>>2]|0)|0;if((t|0)==-1){h=-1;f=22;break}a[r>>0]=t;s=s+1|0}if((f|0)==14){c[j>>2]=a[g>>0];k=s;break}else if((f|0)==22){i=e;return h|0}}else{c[j>>2]=a[g>>0];k=s}while(0);if(d){w=c[j>>2]|0;c[b+48>>2]=w;i=e;return w|0}d=b+32|0;while(1){if((k|0)<=0)break;k=k+ -1|0;if((xc(a[g+k>>0]|0,c[d>>2]|0)|0)==-1){h=-1;f=22;break}}if((f|0)==22){i=e;return h|0}w=c[j>>2]|0;i=e;return w|0}function $h(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;c[b>>2]=16248;Qn(b+4|0);g=b+8|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[b>>2]=15264;c[b+32>>2]=d;g=c[b+4>>2]|0;j=g+4|0;c[j>>2]=(c[j>>2]|0)+1;d=Sn(g,19136)|0;h=c[j>>2]|0;c[j>>2]=h+ -1;if(!h)jd[c[(c[g>>2]|0)+8>>2]&255](g);c[b+36>>2]=d;c[b+40>>2]=e;a[b+44>>0]=(md[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;i=f;return}function ai(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=16248;a=c[a+4>>2]|0;e=a+4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if(d){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function bi(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=16248;d=c[a+4>>2]|0;f=d+4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if(e){Uq(a);i=b;return}jd[c[(c[d>>2]|0)+8>>2]&255](d);Uq(a);i=b;return}function ci(b,d){b=b|0;d=d|0;var e=0;e=i;md[c[(c[b>>2]|0)+24>>2]&127](b)|0;d=Sn(c[d>>2]|0,19136)|0;c[b+36>>2]=d;a[b+44>>0]=(md[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;i=e;return}function di(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;i=i+16|0;g=b+8|0;d=b;e=a+36|0;f=a+40|0;h=g+8|0;j=g;a=a+32|0;while(1){k=c[e>>2]|0;k=wd[c[(c[k>>2]|0)+20>>2]&15](k,c[f>>2]|0,g,h,d)|0;l=(c[d>>2]|0)-j|0;if((Ib(g|0,1,l|0,c[a>>2]|0)|0)!=(l|0)){e=-1;d=5;break}if((k|0)==2){e=-1;d=5;break}else if((k|0)!=1){d=4;break}}if((d|0)==4){l=((Ac(c[a>>2]|0)|0)!=0)<<31>>31;i=b;return l|0}else if((d|0)==5){i=b;return e|0}return 0}function ei(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0;g=i;if(a[b+44>>0]|0){h=Ib(e|0,1,f|0,c[b+32>>2]|0)|0;i=g;return h|0}if((f|0)>0)h=0;else{h=0;i=g;return h|0}while(1){if((vd[c[(c[b>>2]|0)+52>>2]&63](b,d[e>>0]|0)|0)==-1){f=6;break}h=h+1|0;if((h|0)<(f|0))e=e+1|0;else{f=6;break}}if((f|0)==6){i=g;return h|0}return 0}function fi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=i;i=i+32|0;k=e+16|0;p=e+8|0;j=e+4|0;h=e;f=(d|0)==-1;a:do if(!f){a[p>>0]=d;if(a[b+44>>0]|0){if((Ib(p|0,1,1,c[b+32>>2]|0)|0)==1)break;else d=-1;i=e;return d|0}c[j>>2]=k;l=p+1|0;n=b+36|0;o=b+40|0;g=k+8|0;m=k;b=b+32|0;while(1){q=c[n>>2]|0;q=rd[c[(c[q>>2]|0)+12>>2]&15](q,c[o>>2]|0,p,l,h,k,g,j)|0;if((c[h>>2]|0)==(p|0)){d=-1;g=12;break}if((q|0)==3){g=7;break}r=(q|0)==1;if(q>>>0>=2){d=-1;g=12;break}q=(c[j>>2]|0)-m|0;if((Ib(k|0,1,q|0,c[b>>2]|0)|0)!=(q|0)){d=-1;g=12;break}if(r)p=r?c[h>>2]|0:p;else break a}if((g|0)==7){if((Ib(p|0,1,1,c[b>>2]|0)|0)==1)break;else d=-1;i=e;return d|0}else if((g|0)==12){i=e;return d|0}}while(0);r=f?0:d;i=e;return r|0}function gi(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=16248;a=c[a+4>>2]|0;e=a+4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if(d){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function hi(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=16248;d=c[a+4>>2]|0;f=d+4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if(e){Uq(a);i=b;return}jd[c[(c[d>>2]|0)+8>>2]&255](d);Uq(a);i=b;return}function ii(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;g=Sn(c[d>>2]|0,19136)|0;f=b+36|0;c[f>>2]=g;d=b+44|0;c[d>>2]=md[c[(c[g>>2]|0)+24>>2]&127](g)|0;f=c[f>>2]|0;a[b+53>>0]=(md[c[(c[f>>2]|0)+28>>2]&127](f)|0)&1;if((c[d>>2]|0)>8)dn(15216);else{i=e;return}}function ji(a){a=a|0;var b=0;b=i;a=mi(a,0)|0;i=b;return a|0}function ki(a){a=a|0;var b=0;b=i;a=mi(a,1)|0;i=b;return a|0}function li(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+32|0;j=e+16|0;f=e+4|0;l=e+8|0;k=e;g=b+52|0;m=(a[g>>0]|0)!=0;if((d|0)==-1){if(m){m=-1;i=e;return m|0}m=c[b+48>>2]|0;a[g>>0]=(m|0)!=-1&1;i=e;return m|0}h=b+48|0;a:do if(m){a[l>>0]=c[h>>2];m=c[b+36>>2]|0;k=rd[c[(c[m>>2]|0)+12>>2]&15](m,c[b+40>>2]|0,l,l+1|0,k,j,j+8|0,f)|0;if((k|0)==1|(k|0)==2){m=-1;i=e;return m|0}else if((k|0)==3){a[j>>0]=c[h>>2];c[f>>2]=j+1}b=b+32|0;while(1){k=c[f>>2]|0;if(k>>>0<=j>>>0)break a;m=k+ -1|0;c[f>>2]=m;if((xc(a[m>>0]|0,c[b>>2]|0)|0)==-1){f=-1;break}}i=e;return f|0}while(0);c[h>>2]=d;a[g>>0]=1;m=d;i=e;return m|0}function mi(b,e){b=b|0;e=e|0;var f=0,g=0,h=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=i;i=i+32|0;h=f+16|0;j=f+8|0;n=f+4|0;m=f;o=b+52|0;if(a[o>>0]|0){g=b+48|0;h=c[g>>2]|0;if(!e){w=h;i=f;return w|0}c[g>>2]=-1;a[o>>0]=0;w=h;i=f;return w|0}p=c[b+44>>2]|0;p=(p|0)>1?p:1;a:do if((p|0)>0){r=b+32|0;o=0;while(1){q=Sc(c[r>>2]|0)|0;if((q|0)==-1){k=-1;break}a[h+o>>0]=q;o=o+1|0;if((o|0)>=(p|0))break a}i=f;return k|0}while(0);b:do if(!(a[b+53>>0]|0)){r=b+40|0;s=b+36|0;o=j+1|0;q=b+32|0;while(1){w=c[r>>2]|0;v=w;u=c[v>>2]|0;v=c[v+4>>2]|0;x=c[s>>2]|0;t=h+p|0;w=rd[c[(c[x>>2]|0)+16>>2]&15](x,w,h,t,n,j,o,m)|0;if((w|0)==2){k=-1;m=23;break}else if((w|0)==3){m=14;break}else if((w|0)!=1){l=p;break b}x=c[r>>2]|0;c[x>>2]=u;c[x+4>>2]=v;if((p|0)==8){k=-1;m=23;break}u=Sc(c[q>>2]|0)|0;if((u|0)==-1){k=-1;m=23;break}a[t>>0]=u;p=p+1|0}if((m|0)==14){a[j>>0]=a[h>>0]|0;l=p;break}else if((m|0)==23){i=f;return k|0}}else{a[j>>0]=a[h>>0]|0;l=p}while(0);do if(!e){e=b+32|0;while(1){if((l|0)<=0){m=21;break}l=l+ -1|0;if((xc(d[h+l>>0]|0,c[e>>2]|0)|0)==-1){k=-1;m=23;break}}if((m|0)==21){g=a[j>>0]|0;break}else if((m|0)==23){i=f;return k|0}}else{g=a[j>>0]|0;c[b+48>>2]=g&255}while(0);x=g&255;i=f;return x|0}function ni(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;e=c[q>>2]|0;c[3662]=16248;Qn(14652|0);c[3664]=0;c[3665]=0;c[3666]=0;c[3667]=0;c[3668]=0;c[3669]=0;c[3662]=15376;c[3670]=e;c[3672]=14704;c[3674]=-1;a[14700]=0;j=c[3663]|0;k=j+4|0;c[k>>2]=(c[k>>2]|0)+1;f=Rn(19136)|0;g=c[j+8>>2]|0;if((c[j+12>>2]|0)-g>>2>>>0>f>>>0?(h=c[g+(f<<2)>>2]|0,(h|0)!=0):0){c[3671]=h;c[3673]=md[c[(c[h>>2]|0)+24>>2]&127](h)|0;h=c[3671]|0;a[14701]=(md[c[(c[h>>2]|0)+28>>2]&127](h)|0)&1;if((c[3673]|0)>8)dn(15216);h=c[k>>2]|0;c[k>>2]=h+ -1;if(!h)jd[c[(c[j>>2]|0)+8>>2]&255](j);c[3484]=16380;c[3486]=16400;c[3485]=0;c[3492]=14648;c[3490]=0;c[3491]=0;c[3487]=4098;c[3489]=0;c[3488]=6;h=13976|0;j=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));Qn(13972|0);c[3504]=0;c[3505]=-1;f=c[r>>2]|0;$h(14752,f,14712|0);c[3506]=16460;c[3507]=16480;c[3513]=14752;c[3511]=0;c[3512]=0;c[3508]=4098;c[3510]=0;c[3509]=6;h=14060|0;j=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));Qn(14056|0);c[3525]=0;c[3526]=-1;g=c[p>>2]|0;$h(14800,g,14720|0);c[3528]=16460;c[3529]=16480;c[3535]=14800;c[3533]=0;c[3534]=0;c[3530]=4098;c[3532]=0;c[3531]=6;h=14148|0;j=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));Qn(14144|0);c[3547]=0;c[3548]=-1;h=c[(c[(c[3528]|0)+ -12>>2]|0)+14136>>2]|0;c[3550]=16460;c[3551]=16480;c[3557]=h;c[3555]=(h|0)==0&1;c[3556]=0;c[3552]=4098;c[3554]=0;c[3553]=6;h=14236|0;j=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));Qn(14232|0);c[3569]=0;c[3570]=-1;c[(c[(c[3484]|0)+ -12>>2]|0)+14008>>2]=14024;j=(c[(c[3528]|0)+ -12>>2]|0)+14116|0;c[j>>2]=c[j>>2]|8192;c[(c[(c[3528]|0)+ -12>>2]|0)+14184>>2]=14024;c[3712]=16312;Qn(14852|0);c[3714]=0;c[3715]=0;c[3716]=0;c[3717]=0;c[3718]=0;c[3719]=0;c[3712]=15120;c[3720]=e;c[3722]=14728;c[3724]=-1;a[14900]=0;j=c[3713]|0;k=j+4|0;c[k>>2]=(c[k>>2]|0)+1;h=Rn(19144)|0;e=c[j+8>>2]|0;if((c[j+12>>2]|0)-e>>2>>>0>h>>>0?(b=c[e+(h<<2)>>2]|0,(b|0)!=0):0){c[3721]=b;c[3723]=md[c[(c[b>>2]|0)+24>>2]&127](b)|0;h=c[3721]|0;a[14901]=(md[c[(c[h>>2]|0)+28>>2]&127](h)|0)&1;if((c[3723]|0)>8)dn(15216);h=c[k>>2]|0;c[k>>2]=h+ -1;if(!h)jd[c[(c[j>>2]|0)+8>>2]&255](j);c[3572]=16420;c[3574]=16440;c[3573]=0;c[3580]=14848;c[3578]=0;c[3579]=0;c[3575]=4098;c[3577]=0;c[3576]=6;h=14328|0;j=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));Qn(14324|0);c[3592]=0;c[3593]=-1;Nh(14904,f,14736|0);c[3594]=16500;c[3595]=16520;c[3601]=14904;c[3599]=0;c[3600]=0;c[3596]=4098;c[3598]=0;c[3597]=6;h=14412|0;j=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));Qn(14408|0);c[3613]=0;c[3614]=-1;Nh(14952,g,14744|0);c[3616]=16500;c[3617]=16520;c[3623]=14952;c[3621]=0;c[3622]=0;c[3618]=4098;c[3620]=0;c[3619]=6;h=14500|0;j=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));Qn(14496|0);c[3635]=0;c[3636]=-1;h=c[(c[(c[3616]|0)+ -12>>2]|0)+14488>>2]|0;c[3638]=16500;c[3639]=16520;c[3645]=h;c[3643]=(h|0)==0&1;c[3644]=0;c[3640]=4098;c[3642]=0;c[3641]=6;h=14588|0;j=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));Qn(14584|0);c[3657]=0;c[3658]=-1;c[(c[(c[3572]|0)+ -12>>2]|0)+14360>>2]=14376;k=(c[(c[3616]|0)+ -12>>2]|0)+14468|0;c[k>>2]=c[k>>2]|8192;c[(c[(c[3616]|0)+ -12>>2]|0)+14536>>2]=14376;eb(242,14640,o|0)|0;i=d;return}k=Wb(4)|0;c[k>>2]=27744;Zc(k|0,27816,228)}k=Wb(4)|0;c[k>>2]=27744;Zc(k|0,27816,228)}function oi(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=d;c[a+4>>2]=b;return}function pi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;od[c[(c[a>>2]|0)+12>>2]&15](f,a,b);if((c[f+4>>2]|0)!=(c[d+4>>2]|0)){a=0;i=e;return a|0}a=(c[f>>2]|0)==(c[d>>2]|0);i=e;return a|0}function qi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if((c[b+4>>2]|0)!=(a|0)){a=0;i=e;return a|0}a=(c[b>>2]|0)==(d|0);i=e;return a|0}function ri(a){a=a|0;return 15568}function si(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;d=i;if((e|0)>256){e=$p(48)|0;c[b+8>>2]=e;c[b>>2]=49;c[b+4>>2]=34;g=e+0|0;f=15576|0;b=g+34|0;do{a[g>>0]=a[f>>0]|0;g=g+1|0;f=f+1|0}while((g|0)<(b|0));a[e+34>>0]=0;i=d;return}else{g=bd(e|0)|0;Gi(b,g,mr(g|0)|0);i=d;return}}function ti(a){a=a|0;return}function ui(a){a=a|0;return 15632}function vi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;d=i;if((e|0)>256){e=$p(48)|0;c[b+8>>2]=e;c[b>>2]=49;c[b+4>>2]=33;g=e+0|0;f=15640|0;b=g+33|0;do{a[g>>0]=a[f>>0]|0;g=g+1|0;f=f+1|0}while((g|0)<(b|0));a[e+33>>0]=0;i=d;return}else{g=bd(e|0)|0;Gi(b,g,mr(g|0)|0);i=d;return}}function wi(b,d,e){b=b|0;d=d|0;e=e|0;d=i;if((e|0)>256){if((a[15688]|0)==0?(Fa(15688)|0)!=0:0){c[3920]=15952;Vc(15688)}c[b>>2]=e;c[b+4>>2]=15680;i=d;return}else{if((a[15624]|0)==0?(Fa(15624)|0)!=0:0){c[3904]=15856;Vc(15624)}c[b>>2]=e;c[b+4>>2]=15616;i=d;return}}function xi(a){a=a|0;return}function yi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;j=i;i=i+48|0;k=j+24|0;h=j+12|0;g=j;Gi(g,f,mr(f|0)|0);if(d){f=a[g>>0]|0;if(!(f&1))f=(f&255)>>>1;else f=c[g+4>>2]|0;if(f)Ni(g,15696,2);od[c[(c[e>>2]|0)+24>>2]&15](k,e,d);l=a[k>>0]|0;if(!(l&1)){f=k+1|0;l=(l&255)>>>1}else{f=c[k+8>>2]|0;l=c[k+4>>2]|0}Ni(g,f,l);if(a[k>>0]&1)Uq(c[k+8>>2]|0)}c[h+0>>2]=c[g+0>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[b>>2]=27520;f=(a[h>>0]&1)==0;if(f)k=h+1|0;else k=c[h+8>>2]|0;m=mr(k|0)|0;l=$p(m+13|0)|0;c[l>>2]=m;c[l+4>>2]=m;c[l+8>>2]=0;l=l+12|0;nr(l|0,k|0,m+1|0)|0;c[b+4>>2]=l;if(!f)Uq(c[h+8>>2]|0);if(!(a[g>>0]&1)){c[b>>2]=15712;m=b+8|0;l=e;f=m;c[f>>2]=d;m=m+4|0;c[m>>2]=l;i=j;return}Uq(c[g+8>>2]|0);c[b>>2]=15712;m=b+8|0;l=e;f=m;c[f>>2]=d;m=m+4|0;c[m>>2]=l;i=j;return}function zi(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function Ai(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function Bi(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Ci(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Di(a){a=a|0;var b=0;b=i;ac(a|0)|0;i=b;return}function Ei(){var b=0,d=0,e=0,f=0,g=0,h=0;f=Wb(8)|0;c[f>>2]=27496;d=$p(25)|0;e=f+4|0;c[d>>2]=12;c[d+4>>2]=12;c[d+8>>2]=0;d=d+12|0;h=d+0|0;g=16224|0;b=h+13|0;do{a[h>>0]=a[g>>0]|0;h=h+1|0;g=g+1|0}while((h|0)<(b|0));c[e>>2]=d;c[f>>2]=27576;Zc(f|0,27616,222)}function Fi(b,d){b=b|0;d=d|0;var e=0;e=i;if(!(a[d>>0]&1)){c[b+0>>2]=c[d+0>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];i=e;return}else{Gi(b,c[d+8>>2]|0,c[d+4>>2]|0);i=e;return}}function Gi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;if(e>>>0>4294967279)Ei();if(e>>>0<11){a[b>>0]=e<<1;b=b+1|0}else{h=e+16&-16;g=$p(h)|0;c[b+8>>2]=g;c[b>>2]=h|1;c[b+4>>2]=e;b=g}nr(b|0,d|0,e|0)|0;a[b+e>>0]=0;i=f;return}function Hi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;h=d;g=e-h|0;if(g>>>0>4294967279)Ei();if(g>>>0<11){a[b>>0]=g<<1;g=b+1|0}else{k=g+16&-16;j=$p(k)|0;c[b+8>>2]=j;c[b>>2]=k|1;c[b+4>>2]=g;g=j}if((d|0)==(e|0)){k=g;a[k>>0]=0;i=f;return}h=e+(0-h)|0;b=g;while(1){a[b>>0]=a[d>>0]|0;d=d+1|0;if((d|0)==(e|0))break;else b=b+1|0}k=g+h|0;a[k>>0]=0;i=f;return}function Ii(b){b=b|0;var d=0;d=i;if(!(a[b>>0]&1)){i=d;return}Uq(c[b+8>>2]|0);i=d;return}function Ji(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;h=a[b>>0]|0;if(!(h&1))g=10;else{h=c[b>>2]|0;g=(h&-2)+ -1|0;h=h&255}j=(h&1)==0;if(g>>>0>>0){if(j)h=(h&255)>>>1;else h=c[b+4>>2]|0;Oi(b,g,e-g|0,h,0,h,e,d);i=f;return}if(j)g=b+1|0;else g=c[b+8>>2]|0;pr(g|0,d|0,e|0)|0;a[g+e>>0]=0;if(!(a[b>>0]&1)){a[b>>0]=e<<1;i=f;return}else{c[b+4>>2]=e;i=f;return}}function Ki(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;g=a[b>>0]|0;j=(g&1)==0;if(j)h=(g&255)>>>1;else h=c[b+4>>2]|0;if(h>>>0>=d>>>0)if(j){a[b+d+1>>0]=0;a[b>>0]=d<<1;i=e;return}else{a[(c[b+8>>2]|0)+d>>0]=0;c[b+4>>2]=d;i=e;return}f=d-h|0;if((h|0)==(d|0)){i=e;return}if(j){h=g;d=10}else{d=c[b>>2]|0;h=d&255;d=(d&-2)+ -1|0}if(!(h&1))g=(h&255)>>>1;else g=c[b+4>>2]|0;if((d-g|0)>>>0>>0){Pi(b,d,f-d+g|0,g,g,0);h=a[b>>0]|0}if(!(h&1))d=b+1|0;else d=c[b+8>>2]|0;qr(d+g|0,0,f|0)|0;f=g+f|0;if(!(a[b>>0]&1))a[b>>0]=f<<1;else c[b+4>>2]=f;a[d+f>>0]=0;i=e;return}function Li(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;g=a[b>>0]|0;if(!(g&1))j=10;else{g=c[b>>2]|0;j=(g&-2)+ -1|0;g=g&255}h=(g&1)==0;if(h)e=(g&255)>>>1;else e=c[b+4>>2]|0;if(e>>>0<11)f=10;else f=(e+16&-16)+ -1|0;if((f|0)==(j|0)){i=d;return}do if((f|0)==10){k=b+1|0;j=c[b+8>>2]|0;if(h){nr(k|0,j|0,((g&255)>>>1)+1|0)|0;Uq(j);h=20}else{g=0;h=18}}else{k=f+1|0;if(f>>>0>j>>>0)k=$p(k)|0;else k=$p(k)|0;if(h){nr(k|0,b+1|0,((g&255)>>>1)+1|0)|0;h=19;break}else{g=1;j=c[b+8>>2]|0;h=18;break}}while(0);if((h|0)==18){nr(k|0,j|0,(c[b+4>>2]|0)+1|0)|0;Uq(j);if(g)h=19;else h=20}if((h|0)==19){c[b>>2]=f+1|1;c[b+4>>2]=e;c[b+8>>2]=k;i=d;return}else if((h|0)==20){a[b>>0]=e<<1;i=d;return}}function Mi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;g=a[b>>0]|0;f=(g&1)!=0;if(f){h=(c[b>>2]&-2)+ -1|0;g=c[b+4>>2]|0}else{h=10;g=(g&255)>>>1}if((g|0)==(h|0)){Pi(b,h,1,h,h,0);if(!(a[b>>0]&1))f=7;else f=8}else if(f)f=8;else f=7;if((f|0)==7){a[b>>0]=(g<<1)+2;f=b+1|0;h=g+1|0;g=f+g|0;a[g>>0]=d;h=f+h|0;a[h>>0]=0;i=e;return}else if((f|0)==8){f=c[b+8>>2]|0;h=g+1|0;c[b+4>>2]=h;g=f+g|0;a[g>>0]=d;h=f+h|0;a[h>>0]=0;i=e;return}}function Ni(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;j=a[b>>0]|0;if(!(j&1))g=10;else{j=c[b>>2]|0;g=(j&-2)+ -1|0;j=j&255}h=(j&1)==0;if(h)j=(j&255)>>>1;else j=c[b+4>>2]|0;if((g-j|0)>>>0>>0){Oi(b,g,e-g+j|0,j,j,0,e,d);i=f;return}if(!e){i=f;return}if(h)g=b+1|0;else g=c[b+8>>2]|0;nr(g+j|0,d|0,e|0)|0;e=j+e|0;if(!(a[b>>0]&1))a[b>>0]=e<<1;else c[b+4>>2]=e;a[g+e>>0]=0;i=f;return}function Oi(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0;l=i;if((-18-d|0)>>>0>>0)Ei();if(!(a[b>>0]&1))m=b+1|0;else m=c[b+8>>2]|0;if(d>>>0<2147483623){e=e+d|0;n=d<<1;e=e>>>0>>0?n:e;if(e>>>0<11)e=11;else e=e+16&-16}else e=-17;n=$p(e)|0;if(g)nr(n|0,m|0,g|0)|0;if(j)nr(n+g|0,k|0,j|0)|0;k=f-h|0;if((k|0)!=(g|0))nr(n+(j+g)|0,m+(h+g)|0,k-g|0)|0;if((d|0)==10){f=b+8|0;c[f>>2]=n;e=e|1;c[b>>2]=e;e=k+j|0;f=b+4|0;c[f>>2]=e;n=n+e|0;a[n>>0]=0;i=l;return}Uq(m);f=b+8|0;c[f>>2]=n;e=e|1;c[b>>2]=e;e=k+j|0;f=b+4|0;c[f>>2]=e;n=n+e|0;a[n>>0]=0;i=l;return}function Pi(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 j=0,k=0,l=0;j=i;if((-17-d|0)>>>0>>0)Ei();if(!(a[b>>0]&1))k=b+1|0;else k=c[b+8>>2]|0;if(d>>>0<2147483623){e=e+d|0;l=d<<1;e=e>>>0>>0?l:e;if(e>>>0<11)l=11;else l=e+16&-16}else l=-17;e=$p(l)|0;if(g)nr(e|0,k|0,g|0)|0;if((f|0)!=(g|0))nr(e+(h+g)|0,k+g|0,f-g|0)|0;if((d|0)==10){k=b+8|0;c[k>>2]=e;l=l|1;c[b>>2]=l;i=j;return}Uq(k);k=b+8|0;c[k>>2]=e;l=l|1;c[b>>2]=l;i=j;return}function Qi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;g=mr(d|0)|0;h=a[b>>0]|0;j=(h&1)==0;if(j)h=(h&255)>>>1;else h=c[b+4>>2]|0;if((g|0)==-1){b=Wb(8)|0;c[b>>2]=27496;d=$p(25)|0;h=b+4|0;c[d>>2]=12;c[d+4>>2]=12;c[d+8>>2]=0;d=d+12|0;g=d+0|0;e=16224|0;f=g+13|0;do{a[g>>0]=a[e>>0]|0;g=g+1|0;e=e+1|0}while((g|0)<(f|0));c[h>>2]=d;c[b>>2]=27640;Zc(b|0,27680,222)}if(j)k=b+1|0;else k=c[b+8>>2]|0;b=h>>>0>g>>>0;j=b?g:h;if(!j){l=h>>>0>>0;m=b&1;m=l?-1:m;i=f;return m|0}while(1){l=a[k>>0]|0;m=a[d>>0]|0;if(l<<24>>24!=m<<24>>24)break;j=j+ -1|0;if(!j){e=15;break}else{k=k+1|0;d=d+1|0}}if((e|0)==15){l=h>>>0>>0;m=b&1;m=l?-1:m;i=f;return m|0}if(l<<24>>24==m<<24>>24){l=h>>>0>>0;m=b&1;m=l?-1:m;i=f;return m|0}else{i=f;return(l&255)-(m&255)|0}return 0}function Ri(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;if(e>>>0>1073741807)Ei();if(e>>>0<2){a[b>>0]=e<<1;b=b+4|0}else{g=e+4&-4;h=$p(g<<2)|0;c[b+8>>2]=h;c[b>>2]=g|1;c[b+4>>2]=e;b=h}if(!e){h=b+(e<<2)|0;c[h>>2]=0;i=f;return}else{g=e;h=b}while(1){g=g+ -1|0;c[h>>2]=c[d>>2];if(!g)break;else{d=d+4|0;h=h+4|0}}h=b+(e<<2)|0;c[h>>2]=0;i=f;return}function Si(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;if(d>>>0>1073741807)Ei();if(d>>>0<2){a[b>>0]=d<<1;b=b+4|0}else{g=d+4&-4;h=$p(g<<2)|0;c[b+8>>2]=h;c[b>>2]=g|1;c[b+4>>2]=d;b=h}if(!d){h=b+(d<<2)|0;c[h>>2]=0;i=f;return}else{h=d;g=b}while(1){h=h+ -1|0;c[g>>2]=e;if(!h)break;else g=g+4|0}h=b+(d<<2)|0;c[h>>2]=0;i=f;return}function Ti(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;g=d;h=e-g|0;j=h>>2;if(j>>>0>1073741807)Ei();if(j>>>0<2){a[b>>0]=h>>>1;h=b+4|0}else{k=j+4&-4;h=$p(k<<2)|0;c[b+8>>2]=h;c[b>>2]=k|1;c[b+4>>2]=j}if((d|0)==(e|0)){k=h;c[k>>2]=0;i=f;return}g=((e+ -4+(0-g)|0)>>>2)+1|0;j=h;while(1){c[j>>2]=c[d>>2];d=d+4|0;if((d|0)==(e|0))break;else j=j+4|0}k=h+(g<<2)|0;c[k>>2]=0;i=f;return}function Ui(b){b=b|0;var d=0;d=i;if(!(a[b>>0]&1)){i=d;return}Uq(c[b+8>>2]|0);i=d;return}function Vi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;f=d;while(1)if(!(c[f>>2]|0))break;else f=f+4|0;j=d;h=f-j|0;f=h>>2;k=a[b>>0]|0;if(!(k&1))g=1;else{k=c[b>>2]|0;g=(k&-2)+ -1|0;k=k&255}if(g>>>0>=f>>>0){if(!(k&1))g=b+4|0;else g=c[b+8>>2]|0;k=(f|0)==0;if(g-j>>2>>>0>>0){if(!k){j=f;do{j=j+ -1|0;c[g+(j<<2)>>2]=c[d+(j<<2)>>2]}while((j|0)!=0)}}else if(!k){j=g;k=f;while(1){k=k+ -1|0;c[j>>2]=c[d>>2];if(!k)break;else{d=d+4|0;j=j+4|0}}}c[g+(f<<2)>>2]=0;if(!(a[b>>0]&1)){a[b>>0]=h>>>1;i=e;return}else{c[b+4>>2]=f;i=e;return}}if((1073741806-g|0)>>>0<(f-g|0)>>>0)Ei();if(!(k&1))h=b+4|0;else h=c[b+8>>2]|0;if(g>>>0<536870887){j=g<<1;j=f>>>0>>0?j:f;if(j>>>0<2)k=2;else k=j+4&-4}else k=1073741807;j=$p(k<<2)|0;if(f){l=f;m=j;while(1){l=l+ -1|0;c[m>>2]=c[d>>2];if(!l)break;else{d=d+4|0;m=m+4|0}}}if((g|0)!=1)Uq(h);c[b+8>>2]=j;c[b>>2]=k|1;c[b+4>>2]=f;c[j+(f<<2)>>2]=0;i=e;return}function Wi(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;d=i;j=a[b>>0]|0;if(!(j&1))g=1;else{j=c[b>>2]|0;g=(j&-2)+ -1|0;j=j&255}h=(j&1)==0;if(h)e=(j&255)>>>1;else e=c[b+4>>2]|0;if(e>>>0<2)f=1;else f=(e+4&-4)+ -1|0;if((f|0)==(g|0)){i=d;return}do if((f|0)==1){g=b+4|0;l=c[b+8>>2]|0;if(h){k=0;m=1;h=18}else{k=0;m=1;h=17}}else{k=(f<<2)+4|0;if(f>>>0>g>>>0)g=$p(k)|0;else g=$p(k)|0;if(h){k=1;l=b+4|0;m=0;h=18;break}else{k=1;l=c[b+8>>2]|0;m=1;h=17;break}}while(0);if((h|0)==17)j=c[b+4>>2]|0;else if((h|0)==18)j=(j&255)>>>1;j=j+1|0;if(j){n=l;h=g;while(1){j=j+ -1|0;c[h>>2]=c[n>>2];if(!j)break;else{n=n+4|0;h=h+4|0}}}if(m)Uq(l);if(k){c[b>>2]=f+1|1;c[b+4>>2]=e;c[b+8>>2]=g;i=d;return}else{a[b>>0]=e<<1;i=d;return}}function Xi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;g=a[b>>0]|0;f=(g&1)!=0;if(f){h=(c[b>>2]&-2)+ -1|0;g=c[b+4>>2]|0}else{h=1;g=(g&255)>>>1}if((g|0)==(h|0)){Yi(b,h,1,h,h,0,0);if(!(a[b>>0]&1))f=7;else f=8}else if(f)f=8;else f=7;if((f|0)==7){a[b>>0]=(g<<1)+2;f=b+4|0;h=g+1|0;g=f+(g<<2)|0;c[g>>2]=d;h=f+(h<<2)|0;c[h>>2]=0;i=e;return}else if((f|0)==8){f=c[b+8>>2]|0;h=g+1|0;c[b+4>>2]=h;g=f+(g<<2)|0;c[g>>2]=d;h=f+(h<<2)|0;c[h>>2]=0;i=e;return}}function Yi(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;k=i;if((1073741807-d|0)>>>0>>0)Ei();if(!(a[b>>0]&1))l=b+4|0;else l=c[b+8>>2]|0;if(d>>>0<536870887){e=e+d|0;p=d<<1;e=e>>>0

        >>0?p:e;if(e>>>0<2)e=2;else e=e+4&-4}else e=1073741807;m=$p(e<<2)|0;if(g){n=g;o=l;p=m;while(1){n=n+ -1|0;c[p>>2]=c[o>>2];if(!n)break;else{o=o+4|0;p=p+4|0}}}f=f-h|0;if((f|0)!=(g|0)){f=f-g|0;h=l+(h+g<<2)|0;j=m+(j+g<<2)|0;while(1){f=f+ -1|0;c[j>>2]=c[h>>2];if(!f)break;else{h=h+4|0;j=j+4|0}}}if((d|0)==1){p=b+8|0;c[p>>2]=m;p=e|1;c[b>>2]=p;i=k;return}Uq(l);p=b+8|0;c[p>>2]=m;p=e|1;c[b>>2]=p;i=k;return}function Zi(b,d){b=b|0;d=d|0;var e=0;e=(c[b+24>>2]|0)==0;if(e)c[b+16>>2]=d|1;else c[b+16>>2]=d;if(!((e&1|d)&c[b+20>>2]))return;d=Wb(16)|0;if((a[16592]|0)==0?(Fa(16592)|0)!=0:0){c[4146]=17368;Vc(16592)}yi(d,1,16584,16640);c[d>>2]=16608;Zc(d|0,16688,155)}function _i(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=16632;f=c[a+40>>2]|0;if(f){d=a+32|0;e=a+36|0;do{f=f+ -1|0;od[c[(c[d>>2]|0)+(f<<2)>>2]&15](0,a,c[(c[e>>2]|0)+(f<<2)>>2]|0)}while((f|0)!=0)}d=c[a+28>>2]|0;e=d+4|0;f=c[e>>2]|0;c[e>>2]=f+ -1;if(!f)jd[c[(c[d>>2]|0)+8>>2]&255](d);Uq(c[a+32>>2]|0);Uq(c[a+36>>2]|0);Uq(c[a+48>>2]|0);Uq(c[a+60>>2]|0);i=b;return}function $i(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=16248;d=c[a+4>>2]|0;f=d+4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if(e){Uq(a);i=b;return}jd[c[(c[d>>2]|0)+8>>2]&255](d);Uq(a);i=b;return}function aj(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=16248;a=c[a+4>>2]|0;e=a+4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if(d){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function bj(a,b){a=a|0;b=b|0;return}function cj(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function dj(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;g=a;c[g>>2]=0;c[g+4>>2]=0;g=a+8|0;c[g>>2]=-1;c[g+4>>2]=-1;return}function ej(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a;c[e>>2]=0;c[e+4>>2]=0;e=a+8|0;c[e>>2]=-1;c[e+4>>2]=-1;return}function fj(a){a=a|0;return 0}function gj(a){a=a|0;return 0}function hj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;if((e|0)<=0){k=0;i=f;return k|0}g=b+12|0;h=b+16|0;j=0;while(1){k=c[g>>2]|0;if(k>>>0<(c[h>>2]|0)>>>0){c[g>>2]=k+1;k=a[k>>0]|0}else{k=md[c[(c[b>>2]|0)+40>>2]&127](b)|0;if((k|0)==-1){e=8;break}k=k&255}a[d>>0]=k;j=j+1|0;if((j|0)<(e|0))d=d+1|0;else{e=8;break}}if((e|0)==8){i=f;return j|0}return 0}function ij(a){a=a|0;return-1}function jj(a){a=a|0;var b=0,e=0;b=i;if((md[c[(c[a>>2]|0)+36>>2]&127](a)|0)==-1){a=-1;i=b;return a|0}e=a+12|0;a=c[e>>2]|0;c[e>>2]=a+1;a=d[a>>0]|0;i=b;return a|0}function kj(a,b){a=a|0;b=b|0;return-1}function lj(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;if((f|0)<=0){l=0;i=g;return l|0}j=b+24|0;h=b+28|0;k=0;while(1){l=c[j>>2]|0;if(l>>>0>=(c[h>>2]|0)>>>0){if((vd[c[(c[b>>2]|0)+52>>2]&63](b,d[e>>0]|0)|0)==-1){h=7;break}}else{m=a[e>>0]|0;c[j>>2]=l+1;a[l>>0]=m}k=k+1|0;if((k|0)<(f|0))e=e+1|0;else{h=7;break}}if((h|0)==7){i=g;return k|0}return 0}function mj(a,b){a=a|0;b=b|0;return-1}function nj(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=16312;d=c[a+4>>2]|0;f=d+4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if(e){Uq(a);i=b;return}jd[c[(c[d>>2]|0)+8>>2]&255](d);Uq(a);i=b;return}function oj(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=16312;a=c[a+4>>2]|0;e=a+4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if(d){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function pj(a,b){a=a|0;b=b|0;return}function qj(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function rj(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;g=a;c[g>>2]=0;c[g+4>>2]=0;g=a+8|0;c[g>>2]=-1;c[g+4>>2]=-1;return}function sj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a;c[e>>2]=0;c[e+4>>2]=0;e=a+8|0;c[e>>2]=-1;c[e+4>>2]=-1;return}function tj(a){a=a|0;return 0}function uj(a){a=a|0;return 0}function vj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;if((d|0)<=0){j=0;i=e;return j|0}g=a+12|0;f=a+16|0;h=0;while(1){j=c[g>>2]|0;if(j>>>0>=(c[f>>2]|0)>>>0){j=md[c[(c[a>>2]|0)+40>>2]&127](a)|0;if((j|0)==-1){a=8;break}}else{c[g>>2]=j+4;j=c[j>>2]|0}c[b>>2]=j;h=h+1|0;if((h|0)>=(d|0)){a=8;break}b=b+4|0}if((a|0)==8){i=e;return h|0}return 0}function wj(a){a=a|0;return-1}function xj(a){a=a|0;var b=0,d=0;b=i;if((md[c[(c[a>>2]|0)+36>>2]&127](a)|0)==-1){a=-1;i=b;return a|0}d=a+12|0;a=c[d>>2]|0;c[d>>2]=a+4;a=c[a>>2]|0;i=b;return a|0}function yj(a,b){a=a|0;b=b|0;return-1}function zj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;if((d|0)<=0){j=0;i=e;return j|0}g=a+24|0;f=a+28|0;h=0;while(1){j=c[g>>2]|0;if(j>>>0>=(c[f>>2]|0)>>>0){if((vd[c[(c[a>>2]|0)+52>>2]&63](a,c[b>>2]|0)|0)==-1){f=8;break}}else{k=c[b>>2]|0;c[g>>2]=j+4;c[j>>2]=k}h=h+1|0;if((h|0)>=(d|0)){f=8;break}b=b+4|0}if((f|0)==8){i=e;return h|0}return 0}function Aj(a,b){a=a|0;b=b|0;return-1}function Bj(a){a=a|0;var b=0;b=i;_i(a+8|0);Uq(a);i=b;return}function Cj(a){a=a|0;var b=0;b=i;_i(a+8|0);i=b;return}function Dj(a){a=a|0;var b=0,d=0;b=i;d=c[(c[a>>2]|0)+ -12>>2]|0;_i(a+(d+8)|0);Uq(a+d|0);i=b;return}function Ej(a){a=a|0;var b=0;b=i;_i(a+((c[(c[a>>2]|0)+ -12>>2]|0)+8)|0);i=b;return}function Fj(b){b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d;if(!(c[b+((c[(c[b>>2]|0)+ -12>>2]|0)+24)>>2]|0)){i=d;return}Pj(e,b);if((a[e>>0]|0)!=0?(f=c[b+((c[(c[b>>2]|0)+ -12>>2]|0)+24)>>2]|0,(md[c[(c[f>>2]|0)+24>>2]&127](f)|0)==-1):0){f=c[(c[b>>2]|0)+ -12>>2]|0;Zi(b+f|0,c[b+(f+16)>>2]|1)}Qj(e);i=d;return}function Gj(a){a=a|0;var b=0;b=i;_i(a+8|0);Uq(a);i=b;return}function Hj(a){a=a|0;var b=0;b=i;_i(a+8|0);i=b;return}function Ij(a){a=a|0;var b=0,d=0;b=i;d=c[(c[a>>2]|0)+ -12>>2]|0;_i(a+(d+8)|0);Uq(a+d|0);i=b;return}function Jj(a){a=a|0;var b=0;b=i;_i(a+((c[(c[a>>2]|0)+ -12>>2]|0)+8)|0);i=b;return}function Kj(b){b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d;f=c[(c[b>>2]|0)+ -12>>2]|0;if(!(c[b+(f+24)>>2]|0)){i=d;return}a[e>>0]=0;c[e+4>>2]=b;if(!(c[b+(f+16)>>2]|0)){f=c[b+(f+72)>>2]|0;if(f)Kj(f);a[e>>0]=1;f=c[b+((c[(c[b>>2]|0)+ -12>>2]|0)+24)>>2]|0;if((md[c[(c[f>>2]|0)+24>>2]&127](f)|0)==-1){f=c[(c[b>>2]|0)+ -12>>2]|0;Zi(b+f|0,c[b+(f+16)>>2]|1)}}Wj(e);i=d;return}function Lj(a){a=a|0;var b=0;b=i;_i(a+4|0);Uq(a);i=b;return}function Mj(a){a=a|0;var b=0;b=i;_i(a+4|0);i=b;return}function Nj(a){a=a|0;var b=0,d=0;b=i;d=c[(c[a>>2]|0)+ -12>>2]|0;_i(a+(d+4)|0);Uq(a+d|0);i=b;return}function Oj(a){a=a|0;var b=0;b=i;_i(a+((c[(c[a>>2]|0)+ -12>>2]|0)+4)|0);i=b;return}function Pj(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;a[b>>0]=0;c[b+4>>2]=d;f=c[(c[d>>2]|0)+ -12>>2]|0;if(c[d+(f+16)>>2]|0){i=e;return}f=c[d+(f+72)>>2]|0;if(f)Fj(f);a[b>>0]=1;i=e;return}function Qj(a){a=a|0;var b=0,d=0,e=0;b=i;a=a+4|0;d=c[a>>2]|0;e=c[(c[d>>2]|0)+ -12>>2]|0;if(!(c[d+(e+24)>>2]|0)){i=b;return}if(c[d+(e+16)>>2]|0){i=b;return}if(!(c[d+(e+4)>>2]&8192)){i=b;return}if(Ia()|0){i=b;return}e=c[a>>2]|0;e=c[e+((c[(c[e>>2]|0)+ -12>>2]|0)+24)>>2]|0;if((md[c[(c[e>>2]|0)+24>>2]&127](e)|0)!=-1){i=b;return}d=c[a>>2]|0;e=c[(c[d>>2]|0)+ -12>>2]|0;Zi(d+e|0,c[d+(e+16)>>2]|1);i=b;return}function Rj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;h=i;i=i+32|0;k=h+20|0;e=h+16|0;g=h+8|0;f=h;Pj(g,b);if(a[g>>0]|0){l=c[b+((c[(c[b>>2]|0)+ -12>>2]|0)+28)>>2]|0;o=l+4|0;c[o>>2]=(c[o>>2]|0)+1;j=Sn(l,17776)|0;p=c[o>>2]|0;c[o>>2]=p+ -1;if(!p)jd[c[(c[l>>2]|0)+8>>2]&255](l);o=c[(c[b>>2]|0)+ -12>>2]|0;l=c[b+(o+24)>>2]|0;m=b+o|0;n=b+(o+76)|0;p=c[n>>2]|0;if((p|0)==-1){p=c[b+(o+28)>>2]|0;r=p+4|0;c[r>>2]=(c[r>>2]|0)+1;o=Sn(p,19072)|0;o=vd[c[(c[o>>2]|0)+28>>2]&63](o,32)|0;q=c[r>>2]|0;c[r>>2]=q+ -1;if(!q)jd[c[(c[p>>2]|0)+8>>2]&255](p);p=o<<24>>24;c[n>>2]=p}r=p&255;q=c[(c[j>>2]|0)+16>>2]|0;c[e>>2]=l;c[k+0>>2]=c[e+0>>2];ud[q&31](f,j,k,m,r,d);if(!(c[f>>2]|0)){r=c[(c[b>>2]|0)+ -12>>2]|0;Zi(b+r|0,c[b+(r+16)>>2]|5)}}Qj(g);i=h;return b|0}function Sj(a){a=a|0;var b=0;b=i;_i(a+4|0);Uq(a);i=b;return}function Tj(a){a=a|0;var b=0;b=i;_i(a+4|0);i=b;return}function Uj(a){a=a|0;var b=0,d=0;b=i;d=c[(c[a>>2]|0)+ -12>>2]|0;_i(a+(d+4)|0);Uq(a+d|0);i=b;return}function Vj(a){a=a|0;var b=0;b=i;_i(a+((c[(c[a>>2]|0)+ -12>>2]|0)+4)|0);i=b;return}function Wj(a){a=a|0;var b=0,d=0,e=0;b=i;a=a+4|0;d=c[a>>2]|0;e=c[(c[d>>2]|0)+ -12>>2]|0;if(!(c[d+(e+24)>>2]|0)){i=b;return}if(c[d+(e+16)>>2]|0){i=b;return}if(!(c[d+(e+4)>>2]&8192)){i=b;return}if(Ia()|0){i=b;return}e=c[a>>2]|0;e=c[e+((c[(c[e>>2]|0)+ -12>>2]|0)+24)>>2]|0;if((md[c[(c[e>>2]|0)+24>>2]&127](e)|0)!=-1){i=b;return}d=c[a>>2]|0;e=c[(c[d>>2]|0)+ -12>>2]|0;Zi(d+e|0,c[d+(e+16)>>2]|1);i=b;return}function Xj(a){a=a|0;return 16528}function Yj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;d=i;if((e|0)!=1&(e|0)<257){g=bd(e|0)|0;Gi(b,g,mr(g|0)|0);i=d;return}else{e=$p(48)|0;c[b+8>>2]=e;c[b>>2]=49;c[b+4>>2]=35;g=e+0|0;f=16544|0;b=g+35|0;do{a[g>>0]=a[f>>0]|0;g=g+1|0;f=f+1|0}while((g|0)<(b|0));a[e+35>>0]=0;i=d;return}}function Zj(a){a=a|0;return}function _j(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function $j(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function ak(a){a=a|0;var b=0;b=i;_i(a);Uq(a);i=b;return}function bk(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function ck(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function dk(a){a=a|0;return}function ek(a){a=a|0;return}function fk(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;b=i;a:do if((e|0)==(f|0))g=6;else while(1){if((c|0)==(d|0)){d=-1;break a}h=a[c>>0]|0;j=a[e>>0]|0;if(h<<24>>24>24){d=-1;break a}if(j<<24>>24>24){d=1;break a}c=c+1|0;e=e+1|0;if((e|0)==(f|0)){g=6;break}}while(0);if((g|0)==6)d=(c|0)!=(d|0)&1;i=b;return d|0}function gk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=i;Hi(a,c,d);i=b;return}function hk(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;b=i;if((c|0)==(d|0)){e=0;i=b;return e|0}else e=0;do{e=(a[c>>0]|0)+(e<<4)|0;f=e&-268435456;e=(f>>>24|f)^e;c=c+1|0}while((c|0)!=(d|0));i=b;return e|0}function ik(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function jk(a){a=a|0;return}function kk(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,j=0;a=i;a:do if((e|0)==(f|0))g=6;else while(1){if((b|0)==(d|0)){d=-1;break a}h=c[b>>2]|0;j=c[e>>2]|0;if((h|0)<(j|0)){d=-1;break a}if((j|0)<(h|0)){d=1;break a}b=b+4|0;e=e+4|0;if((e|0)==(f|0)){g=6;break}}while(0);if((g|0)==6)d=(b|0)!=(d|0)&1;i=a;return d|0}function lk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=i;Ti(a,c,d);i=b;return}function mk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;a=i;if((b|0)==(d|0)){e=0;i=a;return e|0}else e=0;do{e=(c[b>>2]|0)+(e<<4)|0;f=e&-268435456;e=(f>>>24|f)^e;b=b+4|0}while((b|0)!=(d|0));i=a;return e|0}function nk(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function ok(a){a=a|0;return}function pk(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=i;i=i+64|0;o=k+8|0;p=k+40|0;m=k+44|0;n=k+48|0;r=k+4|0;q=k;l=k+16|0;if(!(c[g+4>>2]&1)){c[m>>2]=-1;l=c[(c[d>>2]|0)+16>>2]|0;c[r>>2]=c[e>>2];c[q>>2]=c[f>>2];c[p+0>>2]=c[r+0>>2];c[o+0>>2]=c[q+0>>2];gd[l&63](n,d,p,o,g,h,m);l=c[n>>2]|0;c[e>>2]=l;e=c[m>>2]|0;if(!e)a[j>>0]=0;else if((e|0)==1)a[j>>0]=1;else{a[j>>0]=1;c[h>>2]=4}c[b>>2]=l;i=k;return}d=g+28|0;n=c[d>>2]|0;m=n+4|0;c[m>>2]=(c[m>>2]|0)+1;m=Sn(n,19072)|0;r=n+4|0;g=c[r>>2]|0;c[r>>2]=g+ -1;if(!g)jd[c[(c[n>>2]|0)+8>>2]&255](n);n=c[d>>2]|0;d=n+4|0;c[d>>2]=(c[d>>2]|0)+1;d=Sn(n,19216)|0;r=n+4|0;g=c[r>>2]|0;c[r>>2]=g+ -1;if(!g)jd[c[(c[n>>2]|0)+8>>2]&255](n);kd[c[(c[d>>2]|0)+24>>2]&63](l,d);g=l+12|0;kd[c[(c[d>>2]|0)+28>>2]&63](g,d);a[j>>0]=(qk(e,c[f>>2]|0,l,l+24|0,m,h,1)|0)==(l|0)&1;c[b>>2]=c[e>>2];if(a[g>>0]&1)Uq(c[l+20>>2]|0);if(!(a[l>>0]&1)){i=k;return}Uq(c[l+8>>2]|0);i=k;return}function qk(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;n=i;i=i+112|0;o=n;s=(g-f|0)/12|0;if(s>>>0>100){o=Tq(s)|0;if(!o){y=Wb(4)|0;c[y>>2]=27280;Zc(y|0,27328,220)}else l=o}else l=0;p=(f|0)==(g|0);if(p)t=0;else{q=f;t=0;r=o;while(1){u=a[q>>0]|0;if(!(u&1))u=(u&255)>>>1;else u=c[q+4>>2]|0;if(!u){a[r>>0]=2;t=t+1|0;s=s+ -1|0}else a[r>>0]=1;q=q+12|0;if((q|0)==(g|0))break;else r=r+1|0}}q=0;a:while(1){v=(s|0)!=0;r=q;while(1){q=c[b>>2]|0;do if(q){if((c[q+12>>2]|0)==(c[q+16>>2]|0))if((md[c[(c[q>>2]|0)+36>>2]&127](q)|0)==-1){c[b>>2]=0;q=0;break}else{q=c[b>>2]|0;break}}else q=0;while(0);x=(q|0)==0;if(e)if((c[e+12>>2]|0)==(c[e+16>>2]|0)){y=(md[c[(c[e>>2]|0)+36>>2]&127](e)|0)==-1;q=y?0:e;e=y?0:e}else q=e;else{q=0;e=0}u=(q|0)==0;w=c[b>>2]|0;if(!((x^u)&v))break a;q=c[w+12>>2]|0;if((q|0)==(c[w+16>>2]|0))q=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else q=d[q>>0]|0;u=q&255;if(!k)u=vd[c[(c[h>>2]|0)+12>>2]&63](h,u)|0;q=r+1|0;if(p)r=q;else{x=0;v=f;w=o;break}}while(1){do if((a[w>>0]|0)==1){if(!(a[v>>0]&1))y=v+1|0;else y=c[v+8>>2]|0;y=a[y+r>>0]|0;if(!k)y=vd[c[(c[h>>2]|0)+12>>2]&63](h,y)|0;if(u<<24>>24!=y<<24>>24){a[w>>0]=0;s=s+ -1|0;break}x=a[v>>0]|0;if(!(x&1))x=(x&255)>>>1;else x=c[v+4>>2]|0;if((x|0)==(q|0)){a[w>>0]=2;x=1;t=t+1|0;s=s+ -1|0}else x=1}while(0);v=v+12|0;if((v|0)==(g|0))break;w=w+1|0}if(!x)continue;r=c[b>>2]|0;u=r+12|0;v=c[u>>2]|0;if((v|0)==(c[r+16>>2]|0))md[c[(c[r>>2]|0)+40>>2]&127](r)|0;else c[u>>2]=v+1;if((t+s|0)>>>0<2)continue;else{r=f;u=o}while(1){if((a[u>>0]|0)==2){v=a[r>>0]|0;if(!(v&1))v=(v&255)>>>1;else v=c[r+4>>2]|0;if((v|0)!=(q|0)){a[u>>0]=0;t=t+ -1|0}}r=r+12|0;if((r|0)==(g|0))continue a;else u=u+1|0}}do if(w){if((c[w+12>>2]|0)==(c[w+16>>2]|0))if((md[c[(c[w>>2]|0)+36>>2]&127](w)|0)==-1){c[b>>2]=0;w=0;break}else{w=c[b>>2]|0;break}}else w=0;while(0);k=(w|0)==0;do if(!u){if((c[q+12>>2]|0)!=(c[q+16>>2]|0))if(k)break;else{m=72;break}if((md[c[(c[q>>2]|0)+36>>2]&127](q)|0)!=-1){if(!k)m=72}else m=70}else m=70;while(0);if((m|0)==70?k:0)m=72;if((m|0)==72)c[j>>2]=c[j>>2]|2;b:do if(!p)if((a[o>>0]|0)==2)g=f;else while(1){f=f+12|0;o=o+1|0;if((f|0)==(g|0)){m=77;break b}if((a[o>>0]|0)==2){g=f;break}}else m=77;while(0);if((m|0)==77)c[j>>2]=c[j>>2]|4;if(!l){i=n;return g|0}Uq(l);i=n;return g|0}function rk(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;m=i;i=i+224|0;t=m+198|0;w=m+196|0;e=m+16|0;n=m+4|0;r=m+192|0;s=m+32|0;p=m;q=m+28|0;v=c[f>>2]|0;y=c[g>>2]|0;g=c[h+4>>2]&74;if((g|0)==8)g=16;else if(!g)g=0;else if((g|0)==64)g=8;else g=10;Tk(e,h,t,w);c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;Ki(n,10);if(!(a[n>>0]&1)){z=n+1|0;h=z;u=n+8|0}else{z=n+8|0;h=n+1|0;u=z;z=c[z>>2]|0}c[r>>2]=z;c[p>>2]=s;c[q>>2]=0;f=n+4|0;w=a[w>>0]|0;a:while(1){if(v){if((c[v+12>>2]|0)==(c[v+16>>2]|0)){C=(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1;v=C?0:v}}else v=0;x=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(x)break;else break a;if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1){if(!x)break a}else l=19}else l=19;while(0);if((l|0)==19){l=0;if(x){y=0;break}else y=0}C=a[n>>0]|0;B=(C&1)==0;if(B)A=(C&255)>>>1;else A=c[f>>2]|0;if((c[r>>2]|0)==(z+A|0)){if(B)A=(C&255)>>>1;else A=c[f>>2]|0;Ki(n,A<<1);if(!(a[n>>0]&1))z=10;else z=(c[n>>2]&-2)+ -1|0;Ki(n,z);if(!(a[n>>0]&1))z=h;else z=c[u>>2]|0;c[r>>2]=z+A}A=v+12|0;C=c[A>>2]|0;B=v+16|0;if((C|0)==(c[B>>2]|0))C=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else C=d[C>>0]|0;if(Bk(C&255,g,z,r,q,w,e,s,p,t)|0)break;x=c[A>>2]|0;if((x|0)==(c[B>>2]|0)){md[c[(c[v>>2]|0)+40>>2]&127](v)|0;continue}else{c[A>>2]=x+1;continue}}t=a[e>>0]|0;if(!(t&1))t=(t&255)>>>1;else t=c[e+4>>2]|0;if((t|0)!=0?(o=c[p>>2]|0,(o-s|0)<160):0){C=c[q>>2]|0;c[p>>2]=o+4;c[o>>2]=C}c[k>>2]=Ip(z,c[r>>2]|0,j,g)|0;hn(e,s,c[p>>2]|0,j);if(!x){if((c[v+12>>2]|0)==(c[v+16>>2]|0)){C=(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1;v=C?0:v}}else v=0;k=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(k)break;else{l=60;break}if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1){if(!k)l=60}else l=58}else l=58;while(0);if((l|0)==58?k:0)l=60;if((l|0)==60)c[j>>2]=c[j>>2]|2;c[b>>2]=v;if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(!(a[e>>0]&1)){i=m;return}Uq(c[e+8>>2]|0);i=m;return}function sk(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;m=i;i=i+224|0;t=m+198|0;w=m+196|0;e=m+16|0;n=m+4|0;r=m+192|0;s=m+32|0;p=m;q=m+28|0;v=c[f>>2]|0;y=c[g>>2]|0;g=c[h+4>>2]&74;if((g|0)==64)g=8;else if(!g)g=0;else if((g|0)==8)g=16;else g=10;Tk(e,h,t,w);c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;Ki(n,10);if(!(a[n>>0]&1)){z=n+1|0;h=z;u=n+8|0}else{z=n+8|0;h=n+1|0;u=z;z=c[z>>2]|0}c[r>>2]=z;c[p>>2]=s;c[q>>2]=0;f=n+4|0;w=a[w>>0]|0;a:while(1){if(v){if((c[v+12>>2]|0)==(c[v+16>>2]|0)){C=(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1;v=C?0:v}}else v=0;x=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(x)break;else break a;if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1){if(!x)break a}else l=19}else l=19;while(0);if((l|0)==19){l=0;if(x){y=0;break}else y=0}C=a[n>>0]|0;B=(C&1)==0;if(B)A=(C&255)>>>1;else A=c[f>>2]|0;if((c[r>>2]|0)==(z+A|0)){if(B)A=(C&255)>>>1;else A=c[f>>2]|0;Ki(n,A<<1);if(!(a[n>>0]&1))z=10;else z=(c[n>>2]&-2)+ -1|0;Ki(n,z);if(!(a[n>>0]&1))z=h;else z=c[u>>2]|0;c[r>>2]=z+A}A=v+12|0;C=c[A>>2]|0;B=v+16|0;if((C|0)==(c[B>>2]|0))C=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else C=d[C>>0]|0;if(Bk(C&255,g,z,r,q,w,e,s,p,t)|0)break;x=c[A>>2]|0;if((x|0)==(c[B>>2]|0)){md[c[(c[v>>2]|0)+40>>2]&127](v)|0;continue}else{c[A>>2]=x+1;continue}}t=a[e>>0]|0;if(!(t&1))t=(t&255)>>>1;else t=c[e+4>>2]|0;if((t|0)!=0?(o=c[p>>2]|0,(o-s|0)<160):0){C=c[q>>2]|0;c[p>>2]=o+4;c[o>>2]=C}B=Hp(z,c[r>>2]|0,j,g)|0;C=k;c[C>>2]=B;c[C+4>>2]=H;hn(e,s,c[p>>2]|0,j);if(!x){if((c[v+12>>2]|0)==(c[v+16>>2]|0)){C=(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1;v=C?0:v}}else v=0;k=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(k)break;else{l=60;break}if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1){if(!k)l=60}else l=58}else l=58;while(0);if((l|0)==58?k:0)l=60;if((l|0)==60)c[j>>2]=c[j>>2]|2;c[b>>2]=v;if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(!(a[e>>0]&1)){i=m;return}Uq(c[e+8>>2]|0);i=m;return}function tk(e,f,g,h,j,k,l){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;n=i;i=i+224|0;u=n+198|0;x=n+196|0;f=n+16|0;o=n+4|0;s=n+192|0;t=n+32|0;q=n;r=n+28|0;w=c[g>>2]|0;z=c[h>>2]|0;h=c[j+4>>2]&74;if((h|0)==8)h=16;else if((h|0)==64)h=8;else if(!h)h=0;else h=10;Tk(f,j,u,x);c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;Ki(o,10);if(!(a[o>>0]&1)){A=o+1|0;j=A;v=o+8|0}else{A=o+8|0;j=o+1|0;v=A;A=c[A>>2]|0}c[s>>2]=A;c[q>>2]=t;c[r>>2]=0;g=o+4|0;x=a[x>>0]|0;a:while(1){if(w){if((c[w+12>>2]|0)==(c[w+16>>2]|0)){D=(md[c[(c[w>>2]|0)+36>>2]&127](w)|0)==-1;w=D?0:w}}else w=0;y=(w|0)==0;do if(z){if((c[z+12>>2]|0)!=(c[z+16>>2]|0))if(y)break;else break a;if((md[c[(c[z>>2]|0)+36>>2]&127](z)|0)!=-1){if(!y)break a}else m=19}else m=19;while(0);if((m|0)==19){m=0;if(y){z=0;break}else z=0}D=a[o>>0]|0;C=(D&1)==0;if(C)B=(D&255)>>>1;else B=c[g>>2]|0;if((c[s>>2]|0)==(A+B|0)){if(C)B=(D&255)>>>1;else B=c[g>>2]|0;Ki(o,B<<1);if(!(a[o>>0]&1))A=10;else A=(c[o>>2]&-2)+ -1|0;Ki(o,A);if(!(a[o>>0]&1))A=j;else A=c[v>>2]|0;c[s>>2]=A+B}B=w+12|0;D=c[B>>2]|0;C=w+16|0;if((D|0)==(c[C>>2]|0))D=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else D=d[D>>0]|0;if(Bk(D&255,h,A,s,r,x,f,t,q,u)|0)break;y=c[B>>2]|0;if((y|0)==(c[C>>2]|0)){md[c[(c[w>>2]|0)+40>>2]&127](w)|0;continue}else{c[B>>2]=y+1;continue}}u=a[f>>0]|0;if(!(u&1))u=(u&255)>>>1;else u=c[f+4>>2]|0;if((u|0)!=0?(p=c[q>>2]|0,(p-t|0)<160):0){D=c[r>>2]|0;c[q>>2]=p+4;c[p>>2]=D}b[l>>1]=Gp(A,c[s>>2]|0,k,h)|0;hn(f,t,c[q>>2]|0,k);if(!y){if((c[w+12>>2]|0)==(c[w+16>>2]|0)){D=(md[c[(c[w>>2]|0)+36>>2]&127](w)|0)==-1;w=D?0:w}}else w=0;l=(w|0)==0;do if(z){if((c[z+12>>2]|0)!=(c[z+16>>2]|0))if(l)break;else{m=60;break}if((md[c[(c[z>>2]|0)+36>>2]&127](z)|0)!=-1){if(!l)m=60}else m=58}else m=58;while(0);if((m|0)==58?l:0)m=60;if((m|0)==60)c[k>>2]=c[k>>2]|2;c[e>>2]=w;if(a[o>>0]&1)Uq(c[o+8>>2]|0);if(!(a[f>>0]&1)){i=n;return}Uq(c[f+8>>2]|0);i=n;return}function uk(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;m=i;i=i+224|0;t=m+198|0;w=m+196|0;e=m+16|0;n=m+4|0;r=m+192|0;s=m+32|0;p=m;q=m+28|0;v=c[f>>2]|0;y=c[g>>2]|0;g=c[h+4>>2]&74;if((g|0)==64)g=8;else if(!g)g=0;else if((g|0)==8)g=16;else g=10;Tk(e,h,t,w);c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;Ki(n,10);if(!(a[n>>0]&1)){z=n+1|0;h=z;u=n+8|0}else{z=n+8|0;h=n+1|0;u=z;z=c[z>>2]|0}c[r>>2]=z;c[p>>2]=s;c[q>>2]=0;f=n+4|0;w=a[w>>0]|0;a:while(1){if(v){if((c[v+12>>2]|0)==(c[v+16>>2]|0)){C=(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1;v=C?0:v}}else v=0;x=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(x)break;else break a;if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1){if(!x)break a}else l=19}else l=19;while(0);if((l|0)==19){l=0;if(x){y=0;break}else y=0}C=a[n>>0]|0;B=(C&1)==0;if(B)A=(C&255)>>>1;else A=c[f>>2]|0;if((c[r>>2]|0)==(z+A|0)){if(B)A=(C&255)>>>1;else A=c[f>>2]|0;Ki(n,A<<1);if(!(a[n>>0]&1))z=10;else z=(c[n>>2]&-2)+ -1|0;Ki(n,z);if(!(a[n>>0]&1))z=h;else z=c[u>>2]|0;c[r>>2]=z+A}A=v+12|0;C=c[A>>2]|0;B=v+16|0;if((C|0)==(c[B>>2]|0))C=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else C=d[C>>0]|0;if(Bk(C&255,g,z,r,q,w,e,s,p,t)|0)break;x=c[A>>2]|0;if((x|0)==(c[B>>2]|0)){md[c[(c[v>>2]|0)+40>>2]&127](v)|0;continue}else{c[A>>2]=x+1;continue}}t=a[e>>0]|0;if(!(t&1))t=(t&255)>>>1;else t=c[e+4>>2]|0;if((t|0)!=0?(o=c[p>>2]|0,(o-s|0)<160):0){C=c[q>>2]|0;c[p>>2]=o+4;c[o>>2]=C}c[k>>2]=Fp(z,c[r>>2]|0,j,g)|0;hn(e,s,c[p>>2]|0,j);if(!x){if((c[v+12>>2]|0)==(c[v+16>>2]|0)){C=(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1;v=C?0:v}}else v=0;k=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(k)break;else{l=60;break}if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1){if(!k)l=60}else l=58}else l=58;while(0);if((l|0)==58?k:0)l=60;if((l|0)==60)c[j>>2]=c[j>>2]|2;c[b>>2]=v;if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(!(a[e>>0]&1)){i=m;return}Uq(c[e+8>>2]|0);i=m;return}function vk(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;m=i;i=i+224|0;t=m+198|0;w=m+196|0;e=m+16|0;n=m+4|0;r=m+192|0;s=m+32|0;p=m;q=m+28|0;v=c[f>>2]|0;y=c[g>>2]|0;g=c[h+4>>2]&74;if((g|0)==8)g=16;else if((g|0)==64)g=8;else if(!g)g=0;else g=10;Tk(e,h,t,w);c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;Ki(n,10);if(!(a[n>>0]&1)){z=n+1|0;h=z;u=n+8|0}else{z=n+8|0;h=n+1|0;u=z;z=c[z>>2]|0}c[r>>2]=z;c[p>>2]=s;c[q>>2]=0;f=n+4|0;w=a[w>>0]|0;a:while(1){if(v){if((c[v+12>>2]|0)==(c[v+16>>2]|0)){C=(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1;v=C?0:v}}else v=0;x=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(x)break;else break a;if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1){if(!x)break a}else l=19}else l=19;while(0);if((l|0)==19){l=0;if(x){y=0;break}else y=0}C=a[n>>0]|0;B=(C&1)==0;if(B)A=(C&255)>>>1;else A=c[f>>2]|0;if((c[r>>2]|0)==(z+A|0)){if(B)A=(C&255)>>>1;else A=c[f>>2]|0;Ki(n,A<<1);if(!(a[n>>0]&1))z=10;else z=(c[n>>2]&-2)+ -1|0;Ki(n,z);if(!(a[n>>0]&1))z=h;else z=c[u>>2]|0;c[r>>2]=z+A}A=v+12|0;C=c[A>>2]|0;B=v+16|0;if((C|0)==(c[B>>2]|0))C=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else C=d[C>>0]|0;if(Bk(C&255,g,z,r,q,w,e,s,p,t)|0)break;x=c[A>>2]|0;if((x|0)==(c[B>>2]|0)){md[c[(c[v>>2]|0)+40>>2]&127](v)|0;continue}else{c[A>>2]=x+1;continue}}t=a[e>>0]|0;if(!(t&1))t=(t&255)>>>1;else t=c[e+4>>2]|0;if((t|0)!=0?(o=c[p>>2]|0,(o-s|0)<160):0){C=c[q>>2]|0;c[p>>2]=o+4;c[o>>2]=C}c[k>>2]=Ep(z,c[r>>2]|0,j,g)|0;hn(e,s,c[p>>2]|0,j);if(!x){if((c[v+12>>2]|0)==(c[v+16>>2]|0)){C=(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1;v=C?0:v}}else v=0;k=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(k)break;else{l=60;break}if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1){if(!k)l=60}else l=58}else l=58;while(0);if((l|0)==58?k:0)l=60;if((l|0)==60)c[j>>2]=c[j>>2]|2;c[b>>2]=v;if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(!(a[e>>0]&1)){i=m;return}Uq(c[e+8>>2]|0);i=m;return}function wk(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;m=i;i=i+224|0;t=m+198|0;w=m+196|0;e=m+16|0;n=m+4|0;r=m+192|0;s=m+32|0;p=m;q=m+28|0;v=c[f>>2]|0;y=c[g>>2]|0;g=c[h+4>>2]&74;if((g|0)==64)g=8;else if(!g)g=0;else if((g|0)==8)g=16;else g=10;Tk(e,h,t,w);c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;Ki(n,10);if(!(a[n>>0]&1)){z=n+1|0;h=z;u=n+8|0}else{z=n+8|0;h=n+1|0;u=z;z=c[z>>2]|0}c[r>>2]=z;c[p>>2]=s;c[q>>2]=0;f=n+4|0;w=a[w>>0]|0;a:while(1){if(v){if((c[v+12>>2]|0)==(c[v+16>>2]|0)){C=(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1;v=C?0:v}}else v=0;x=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(x)break;else break a;if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1){if(!x)break a}else l=19}else l=19;while(0);if((l|0)==19){l=0;if(x){y=0;break}else y=0}C=a[n>>0]|0;B=(C&1)==0;if(B)A=(C&255)>>>1;else A=c[f>>2]|0;if((c[r>>2]|0)==(z+A|0)){if(B)A=(C&255)>>>1;else A=c[f>>2]|0;Ki(n,A<<1);if(!(a[n>>0]&1))z=10;else z=(c[n>>2]&-2)+ -1|0;Ki(n,z);if(!(a[n>>0]&1))z=h;else z=c[u>>2]|0;c[r>>2]=z+A}A=v+12|0;C=c[A>>2]|0;B=v+16|0;if((C|0)==(c[B>>2]|0))C=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else C=d[C>>0]|0;if(Bk(C&255,g,z,r,q,w,e,s,p,t)|0)break;x=c[A>>2]|0;if((x|0)==(c[B>>2]|0)){md[c[(c[v>>2]|0)+40>>2]&127](v)|0;continue}else{c[A>>2]=x+1;continue}}t=a[e>>0]|0;if(!(t&1))t=(t&255)>>>1;else t=c[e+4>>2]|0;if((t|0)!=0?(o=c[p>>2]|0,(o-s|0)<160):0){C=c[q>>2]|0;c[p>>2]=o+4;c[o>>2]=C}B=Dp(z,c[r>>2]|0,j,g)|0;C=k;c[C>>2]=B;c[C+4>>2]=H;hn(e,s,c[p>>2]|0,j);if(!x){if((c[v+12>>2]|0)==(c[v+16>>2]|0)){C=(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1;v=C?0:v}}else v=0;k=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(k)break;else{l=60;break}if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1){if(!k)l=60}else l=58}else l=58;while(0);if((l|0)==58?k:0)l=60;if((l|0)==60)c[j>>2]=c[j>>2]|2;c[b>>2]=v;if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(!(a[e>>0]&1)){i=m;return}Uq(c[e+8>>2]|0);i=m;return}function xk(b,e,f,h,j,k,l){b=b|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|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;o=i;i=i+256|0;v=o+208|0;x=o+200|0;y=o+240|0;e=o;n=o+188|0;s=o+184|0;u=o+16|0;q=o+176|0;r=o+180|0;t=o+241|0;w=o+242|0;z=c[f>>2]|0;B=c[h>>2]|0;Uk(e,j,v,x,y);c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;Ki(n,10);if(!(a[n>>0]&1)){C=n+1|0;h=C;j=n+8|0}else{C=n+8|0;h=n+1|0;j=C;C=c[C>>2]|0}c[s>>2]=C;c[q>>2]=u;c[r>>2]=0;a[t>>0]=1;a[w>>0]=69;f=n+4|0;x=a[x>>0]|0;y=a[y>>0]|0;a:while(1){if(z){if((c[z+12>>2]|0)==(c[z+16>>2]|0)){F=(md[c[(c[z>>2]|0)+36>>2]&127](z)|0)==-1;z=F?0:z}}else z=0;A=(z|0)==0;do if(B){if((c[B+12>>2]|0)!=(c[B+16>>2]|0))if(A)break;else break a;if((md[c[(c[B>>2]|0)+36>>2]&127](B)|0)!=-1){if(!A)break a}else m=15}else m=15;while(0);if((m|0)==15){m=0;if(A){B=0;break}else B=0}E=a[n>>0]|0;F=(E&1)==0;if(F)D=(E&255)>>>1;else D=c[f>>2]|0;if((c[s>>2]|0)==(C+D|0)){if(F)D=(E&255)>>>1;else D=c[f>>2]|0;Ki(n,D<<1);if(!(a[n>>0]&1))C=10;else C=(c[n>>2]&-2)+ -1|0;Ki(n,C);if(!(a[n>>0]&1))C=h;else C=c[j>>2]|0;c[s>>2]=C+D}E=z+12|0;F=c[E>>2]|0;D=z+16|0;if((F|0)==(c[D>>2]|0))F=md[c[(c[z>>2]|0)+36>>2]&127](z)|0;else F=d[F>>0]|0;if(Vk(F&255,t,w,C,s,x,y,e,u,q,r,v)|0)break;A=c[E>>2]|0;if((A|0)==(c[D>>2]|0)){md[c[(c[z>>2]|0)+40>>2]&127](z)|0;continue}else{c[E>>2]=A+1;continue}}v=a[e>>0]|0;if(!(v&1))v=(v&255)>>>1;else v=c[e+4>>2]|0;if(((v|0)!=0?(a[t>>0]|0)!=0:0)?(p=c[q>>2]|0,(p-u|0)<160):0){F=c[r>>2]|0;c[q>>2]=p+4;c[p>>2]=F}g[l>>2]=+Cp(C,c[s>>2]|0,k);hn(e,u,c[q>>2]|0,k);if(!A){if((c[z+12>>2]|0)==(c[z+16>>2]|0)){F=(md[c[(c[z>>2]|0)+36>>2]&127](z)|0)==-1;z=F?0:z}}else z=0;p=(z|0)==0;do if(B){if((c[B+12>>2]|0)!=(c[B+16>>2]|0))if(p)break;else{m=57;break}if((md[c[(c[B>>2]|0)+36>>2]&127](B)|0)!=-1){if(!p)m=57}else m=55}else m=55;while(0);if((m|0)==55?p:0)m=57;if((m|0)==57)c[k>>2]=c[k>>2]|2;c[b>>2]=z;if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(!(a[e>>0]&1)){i=o;return}Uq(c[e+8>>2]|0);i=o;return}function yk(b,e,f,g,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|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;o=i;i=i+256|0;v=o+208|0;x=o+200|0;y=o+240|0;e=o;n=o+188|0;s=o+184|0;u=o+16|0;q=o+176|0;r=o+180|0;t=o+241|0;w=o+242|0;z=c[f>>2]|0;B=c[g>>2]|0;Uk(e,j,v,x,y);c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;Ki(n,10);if(!(a[n>>0]&1)){C=n+1|0;g=C;j=n+8|0}else{C=n+8|0;g=n+1|0;j=C;C=c[C>>2]|0}c[s>>2]=C;c[q>>2]=u;c[r>>2]=0;a[t>>0]=1;a[w>>0]=69;f=n+4|0;x=a[x>>0]|0;y=a[y>>0]|0;a:while(1){if(z){if((c[z+12>>2]|0)==(c[z+16>>2]|0)){F=(md[c[(c[z>>2]|0)+36>>2]&127](z)|0)==-1;z=F?0:z}}else z=0;A=(z|0)==0;do if(B){if((c[B+12>>2]|0)!=(c[B+16>>2]|0))if(A)break;else break a;if((md[c[(c[B>>2]|0)+36>>2]&127](B)|0)!=-1){if(!A)break a}else m=15}else m=15;while(0);if((m|0)==15){m=0;if(A){B=0;break}else B=0}E=a[n>>0]|0;F=(E&1)==0;if(F)D=(E&255)>>>1;else D=c[f>>2]|0;if((c[s>>2]|0)==(C+D|0)){if(F)D=(E&255)>>>1;else D=c[f>>2]|0;Ki(n,D<<1);if(!(a[n>>0]&1))C=10;else C=(c[n>>2]&-2)+ -1|0;Ki(n,C);if(!(a[n>>0]&1))C=g;else C=c[j>>2]|0;c[s>>2]=C+D}E=z+12|0;F=c[E>>2]|0;D=z+16|0;if((F|0)==(c[D>>2]|0))F=md[c[(c[z>>2]|0)+36>>2]&127](z)|0;else F=d[F>>0]|0;if(Vk(F&255,t,w,C,s,x,y,e,u,q,r,v)|0)break;A=c[E>>2]|0;if((A|0)==(c[D>>2]|0)){md[c[(c[z>>2]|0)+40>>2]&127](z)|0;continue}else{c[E>>2]=A+1;continue}}v=a[e>>0]|0;if(!(v&1))v=(v&255)>>>1;else v=c[e+4>>2]|0;if(((v|0)!=0?(a[t>>0]|0)!=0:0)?(p=c[q>>2]|0,(p-u|0)<160):0){F=c[r>>2]|0;c[q>>2]=p+4;c[p>>2]=F}h[l>>3]=+Bp(C,c[s>>2]|0,k);hn(e,u,c[q>>2]|0,k);if(!A){if((c[z+12>>2]|0)==(c[z+16>>2]|0)){F=(md[c[(c[z>>2]|0)+36>>2]&127](z)|0)==-1;z=F?0:z}}else z=0;p=(z|0)==0;do if(B){if((c[B+12>>2]|0)!=(c[B+16>>2]|0))if(p)break;else{m=57;break}if((md[c[(c[B>>2]|0)+36>>2]&127](B)|0)!=-1){if(!p)m=57}else m=55}else m=55;while(0);if((m|0)==55?p:0)m=57;if((m|0)==57)c[k>>2]=c[k>>2]|2;c[b>>2]=z;if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(!(a[e>>0]&1)){i=o;return}Uq(c[e+8>>2]|0);i=o;return}function zk(b,e,f,g,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|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;o=i;i=i+256|0;v=o+208|0;x=o+200|0;y=o+240|0;e=o;n=o+188|0;s=o+184|0;u=o+16|0;q=o+176|0;r=o+180|0;t=o+241|0;w=o+242|0;z=c[f>>2]|0;B=c[g>>2]|0;Uk(e,j,v,x,y);c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;Ki(n,10);if(!(a[n>>0]&1)){C=n+1|0;g=C;j=n+8|0}else{C=n+8|0;g=n+1|0;j=C;C=c[C>>2]|0}c[s>>2]=C;c[q>>2]=u;c[r>>2]=0;a[t>>0]=1;a[w>>0]=69;f=n+4|0;x=a[x>>0]|0;y=a[y>>0]|0;a:while(1){if(z){if((c[z+12>>2]|0)==(c[z+16>>2]|0)){F=(md[c[(c[z>>2]|0)+36>>2]&127](z)|0)==-1;z=F?0:z}}else z=0;A=(z|0)==0;do if(B){if((c[B+12>>2]|0)!=(c[B+16>>2]|0))if(A)break;else break a;if((md[c[(c[B>>2]|0)+36>>2]&127](B)|0)!=-1){if(!A)break a}else m=15}else m=15;while(0);if((m|0)==15){m=0;if(A){B=0;break}else B=0}E=a[n>>0]|0;F=(E&1)==0;if(F)D=(E&255)>>>1;else D=c[f>>2]|0;if((c[s>>2]|0)==(C+D|0)){if(F)D=(E&255)>>>1;else D=c[f>>2]|0;Ki(n,D<<1);if(!(a[n>>0]&1))C=10;else C=(c[n>>2]&-2)+ -1|0;Ki(n,C);if(!(a[n>>0]&1))C=g;else C=c[j>>2]|0;c[s>>2]=C+D}E=z+12|0;F=c[E>>2]|0;D=z+16|0;if((F|0)==(c[D>>2]|0))F=md[c[(c[z>>2]|0)+36>>2]&127](z)|0;else F=d[F>>0]|0;if(Vk(F&255,t,w,C,s,x,y,e,u,q,r,v)|0)break;A=c[E>>2]|0;if((A|0)==(c[D>>2]|0)){md[c[(c[z>>2]|0)+40>>2]&127](z)|0;continue}else{c[E>>2]=A+1;continue}}v=a[e>>0]|0;if(!(v&1))v=(v&255)>>>1;else v=c[e+4>>2]|0;if(((v|0)!=0?(a[t>>0]|0)!=0:0)?(p=c[q>>2]|0,(p-u|0)<160):0){F=c[r>>2]|0;c[q>>2]=p+4;c[p>>2]=F}h[l>>3]=+Ap(C,c[s>>2]|0,k);hn(e,u,c[q>>2]|0,k);if(!A){if((c[z+12>>2]|0)==(c[z+16>>2]|0)){F=(md[c[(c[z>>2]|0)+36>>2]&127](z)|0)==-1;z=F?0:z}}else z=0;p=(z|0)==0;do if(B){if((c[B+12>>2]|0)!=(c[B+16>>2]|0))if(p)break;else{m=57;break}if((md[c[(c[B>>2]|0)+36>>2]&127](B)|0)!=-1){if(!p)m=57}else m=55}else m=55;while(0);if((m|0)==55?p:0)m=57;if((m|0)==57)c[k>>2]=c[k>>2]|2;c[b>>2]=z;if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(!(a[e>>0]&1)){i=o;return}Uq(c[e+8>>2]|0);i=o;return}function Ak(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;n=i;i=i+240|0;o=n;s=n+204|0;e=n+184|0;m=n+172|0;p=n+168|0;r=n+8|0;t=n+196|0;q=n+200|0;c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;h=c[h+28>>2]|0;B=h+4|0;c[B>>2]=(c[B>>2]|0)+1;B=Sn(h,19072)|0;sd[c[(c[B>>2]|0)+32>>2]&7](B,17600,17626|0,s)|0;B=h+4|0;C=c[B>>2]|0;c[B>>2]=C+ -1;if(!C)jd[c[(c[h>>2]|0)+8>>2]&255](h);c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;Ki(m,10);if(!(a[m>>0]&1)){z=m+1|0;u=z;h=m+8|0}else{z=m+8|0;u=m+1|0;h=z;z=c[z>>2]|0}c[p>>2]=z;c[t>>2]=r;c[q>>2]=0;x=m+4|0;v=c[f>>2]|0;a:while(1){if(v){if((c[v+12>>2]|0)==(c[v+16>>2]|0)?(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1:0){c[f>>2]=0;v=0}}else v=0;w=(v|0)==0;y=c[g>>2]|0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(w)break;else break a;if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1)if(w)break;else break a;else{c[g>>2]=0;l=21;break}}else l=21;while(0);if((l|0)==21){l=0;if(w){y=0;break}else y=0}C=a[m>>0]|0;B=(C&1)==0;if(B)A=(C&255)>>>1;else A=c[x>>2]|0;if((c[p>>2]|0)==(z+A|0)){if(B)A=(C&255)>>>1;else A=c[x>>2]|0;Ki(m,A<<1);if(!(a[m>>0]&1))z=10;else z=(c[m>>2]&-2)+ -1|0;Ki(m,z);if(!(a[m>>0]&1))z=u;else z=c[h>>2]|0;c[p>>2]=z+A}A=v+12|0;C=c[A>>2]|0;B=v+16|0;if((C|0)==(c[B>>2]|0))C=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else C=d[C>>0]|0;if(Bk(C&255,16,z,p,q,0,e,r,t,s)|0)break;w=c[A>>2]|0;if((w|0)==(c[B>>2]|0)){md[c[(c[v>>2]|0)+40>>2]&127](v)|0;continue}else{c[A>>2]=w+1;continue}}Ki(m,(c[p>>2]|0)-z|0);if(a[m>>0]&1)u=c[h>>2]|0;C=Dk()|0;c[o>>2]=k;if((Ck(u,C,o)|0)!=1)c[j>>2]=4;if(!w){if((c[v+12>>2]|0)==(c[v+16>>2]|0)?(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1:0){c[f>>2]=0;v=0}}else v=0;k=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(k)break;else{l=64;break}if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1)if(k)break;else{l=64;break}else{c[g>>2]=0;l=62;break}}else l=62;while(0);if((l|0)==62?k:0)l=64;if((l|0)==64)c[j>>2]=c[j>>2]|2;c[b>>2]=v;if(a[m>>0]&1)Uq(c[m+8>>2]|0);if(!(a[e>>0]&1)){i=n;return}Uq(c[e+8>>2]|0);i=n;return}function Bk(b,d,e,f,g,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0;n=i;p=c[f>>2]|0;o=(p|0)==(e|0);do if(o){q=(a[m+24>>0]|0)==b<<24>>24;if(!q?(a[m+25>>0]|0)!=b<<24>>24:0)break;c[f>>2]=e+1;a[e>>0]=q?43:45;c[g>>2]=0;q=0;i=n;return q|0}while(0);q=a[j>>0]|0;if(!(q&1))j=(q&255)>>>1;else j=c[j+4>>2]|0;if((j|0)!=0?b<<24>>24==h<<24>>24:0){o=c[l>>2]|0;if((o-k|0)>=160){q=0;i=n;return q|0}q=c[g>>2]|0;c[l>>2]=o+4;c[o>>2]=q;c[g>>2]=0;q=0;i=n;return q|0}l=m+26|0;k=m;while(1){if((a[k>>0]|0)==b<<24>>24)break;k=k+1|0;if((k|0)==(l|0)){k=l;break}}m=k-m|0;if((m|0)>23){q=-1;i=n;return q|0}if((d|0)==16){if((m|0)>=22){if(o){q=-1;i=n;return q|0}if((p-e|0)>=3){q=-1;i=n;return q|0}if((a[p+ -1>>0]|0)!=48){q=-1;i=n;return q|0}c[g>>2]=0;q=a[17600+m>>0]|0;c[f>>2]=p+1;a[p>>0]=q;q=0;i=n;return q|0}}else if((d|0)==10|(d|0)==8?(m|0)>=(d|0):0){q=-1;i=n;return q|0}q=a[17600+m>>0]|0;c[f>>2]=p+1;a[p>>0]=q;c[g>>2]=(c[g>>2]|0)+1;q=0;i=n;return q|0}function Ck(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=d;b=Yb(b|0)|0;a=Vp(a,17640,f)|0;if(!b){i=e;return a|0}Yb(b|0)|0;i=e;return a|0}function Dk(){var b=0;b=i;if((a[18984]|0)==0?(Fa(18984)|0)!=0:0){c[4744]=rb(2147483647,18992,0)|0;Vc(18984)}i=b;return c[4744]|0}function Ek(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Fk(a){a=a|0;return}function Gk(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=i;i=i+64|0;o=k+8|0;p=k+40|0;m=k+44|0;n=k+48|0;r=k+4|0;q=k;l=k+16|0;if(!(c[g+4>>2]&1)){c[m>>2]=-1;l=c[(c[d>>2]|0)+16>>2]|0;c[r>>2]=c[e>>2];c[q>>2]=c[f>>2];c[p+0>>2]=c[r+0>>2];c[o+0>>2]=c[q+0>>2];gd[l&63](n,d,p,o,g,h,m);l=c[n>>2]|0;c[e>>2]=l;e=c[m>>2]|0;if((e|0)==1)a[j>>0]=1;else if(!e)a[j>>0]=0;else{a[j>>0]=1;c[h>>2]=4}c[b>>2]=l;i=k;return}d=g+28|0;n=c[d>>2]|0;m=n+4|0;c[m>>2]=(c[m>>2]|0)+1;m=Sn(n,19064)|0;r=n+4|0;g=c[r>>2]|0;c[r>>2]=g+ -1;if(!g)jd[c[(c[n>>2]|0)+8>>2]&255](n);n=c[d>>2]|0;d=n+4|0;c[d>>2]=(c[d>>2]|0)+1;d=Sn(n,19224)|0;r=n+4|0;g=c[r>>2]|0;c[r>>2]=g+ -1;if(!g)jd[c[(c[n>>2]|0)+8>>2]&255](n);kd[c[(c[d>>2]|0)+24>>2]&63](l,d);g=l+12|0;kd[c[(c[d>>2]|0)+28>>2]&63](g,d);a[j>>0]=(Hk(e,c[f>>2]|0,l,l+24|0,m,h,1)|0)==(l|0)&1;c[b>>2]=c[e>>2];if(a[g>>0]&1)Uq(c[l+20>>2]|0);if(!(a[l>>0]&1)){i=k;return}Uq(c[l+8>>2]|0);i=k;return}function Hk(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;m=i;i=i+112|0;n=m;s=(f-e|0)/12|0;if(s>>>0>100){n=Tq(s)|0;if(!n){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else l=n}else l=0;o=(e|0)==(f|0);if(o)r=0;else{p=e;r=0;q=n;while(1){t=a[p>>0]|0;if(!(t&1))t=(t&255)>>>1;else t=c[p+4>>2]|0;if(!t){a[q>>0]=2;r=r+1|0;s=s+ -1|0}else a[q>>0]=1;p=p+12|0;if((p|0)==(f|0))break;else q=q+1|0}}p=0;a:while(1){t=(s|0)!=0;q=p;while(1){p=c[b>>2]|0;do if(p){u=c[p+12>>2]|0;if((u|0)==(c[p+16>>2]|0))p=md[c[(c[p>>2]|0)+36>>2]&127](p)|0;else p=c[u>>2]|0;if((p|0)==-1){c[b>>2]=0;u=1;break}else{u=(c[b>>2]|0)==0;break}}else u=1;while(0);if(!d){p=0;w=1;d=0}else{p=c[d+12>>2]|0;if((p|0)==(c[d+16>>2]|0))p=md[c[(c[d>>2]|0)+36>>2]&127](d)|0;else p=c[p>>2]|0;x=(p|0)==-1;p=x?0:d;w=x?1:0;d=x?0:d}v=c[b>>2]|0;if(!((u^w)&t))break a;p=c[v+12>>2]|0;if((p|0)==(c[v+16>>2]|0))u=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else u=c[p>>2]|0;if(!j)u=vd[c[(c[g>>2]|0)+28>>2]&63](g,u)|0;p=q+1|0;if(o)q=p;else{w=0;t=e;v=n;break}}while(1){do if((a[v>>0]|0)==1){if(!(a[t>>0]&1))x=t+4|0;else x=c[t+8>>2]|0;x=c[x+(q<<2)>>2]|0;if(!j)x=vd[c[(c[g>>2]|0)+28>>2]&63](g,x)|0;if((u|0)!=(x|0)){a[v>>0]=0;s=s+ -1|0;break}w=a[t>>0]|0;if(!(w&1))w=(w&255)>>>1;else w=c[t+4>>2]|0;if((w|0)==(p|0)){a[v>>0]=2;w=1;r=r+1|0;s=s+ -1|0}else w=1}while(0);t=t+12|0;if((t|0)==(f|0))break;v=v+1|0}if(!w)continue;u=c[b>>2]|0;q=u+12|0;t=c[q>>2]|0;if((t|0)==(c[u+16>>2]|0))md[c[(c[u>>2]|0)+40>>2]&127](u)|0;else c[q>>2]=t+4;if((r+s|0)>>>0<2)continue;else{q=e;t=n}while(1){if((a[t>>0]|0)==2){u=a[q>>0]|0;if(!(u&1))u=(u&255)>>>1;else u=c[q+4>>2]|0;if((u|0)!=(p|0)){a[t>>0]=0;r=r+ -1|0}}q=q+12|0;if((q|0)==(f|0))continue a;else t=t+1|0}}do if(v){j=c[v+12>>2]|0;if((j|0)==(c[v+16>>2]|0))j=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else j=c[j>>2]|0;if((j|0)==-1){c[b>>2]=0;b=1;break}else{b=(c[b>>2]|0)==0;break}}else b=1;while(0);if(p){j=c[p+12>>2]|0;if((j|0)==(c[p+16>>2]|0))j=md[c[(c[p>>2]|0)+36>>2]&127](p)|0;else j=c[j>>2]|0;if((j|0)!=-1){if(!b)k=75}else k=73}else k=73;if((k|0)==73?b:0)k=75;if((k|0)==75)c[h>>2]=c[h>>2]|2;b:do if(!o)if((a[n>>0]|0)==2)f=e;else while(1){e=e+12|0;n=n+1|0;if((e|0)==(f|0)){k=80;break b}if((a[n>>0]|0)==2){f=e;break}}else k=80;while(0);if((k|0)==80)c[h>>2]=c[h>>2]|4;if(!l){i=m;return f|0}Uq(l);i=m;return f|0}function Ik(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;m=i;i=i+304|0;s=m+160|0;v=m+280|0;l=m+264|0;d=m+284|0;p=m+300|0;r=m;q=m+276|0;o=m+296|0;u=c[e>>2]|0;w=c[f>>2]|0;f=c[g+4>>2]&74;if(!f)f=0;else if((f|0)==8)f=16;else if((f|0)==64)f=8;else f=10;Wk(l,g,s,v);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;Ki(d,10);if(!(a[d>>0]&1)){x=d+1|0;e=x;t=d+8|0}else{x=d+8|0;e=d+1|0;t=x;x=c[x>>2]|0}c[p>>2]=x;c[q>>2]=r;c[o>>2]=0;g=d+4|0;v=c[v>>2]|0;while(1){if(!u){y=1;u=0}else{y=c[u+12>>2]|0;if((y|0)==(c[u+16>>2]|0))y=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else y=c[y>>2]|0;A=(y|0)==-1;y=A?1:0;u=A?0:u}if(w){z=c[w+12>>2]|0;if((z|0)==(c[w+16>>2]|0))z=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else z=c[z>>2]|0;if((z|0)!=-1){if(!y)break}else k=20}else k=20;if((k|0)==20){k=0;if(y){w=0;break}else w=0}A=a[d>>0]|0;y=(A&1)==0;if(y)z=(A&255)>>>1;else z=c[g>>2]|0;if((c[p>>2]|0)==(x+z|0)){if(y)y=(A&255)>>>1;else y=c[g>>2]|0;Ki(d,y<<1);if(!(a[d>>0]&1))x=10;else x=(c[d>>2]&-2)+ -1|0;Ki(d,x);if(!(a[d>>0]&1))x=e;else x=c[t>>2]|0;c[p>>2]=x+y}z=u+12|0;A=c[z>>2]|0;y=u+16|0;if((A|0)==(c[y>>2]|0))A=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else A=c[A>>2]|0;if(Sk(A,f,x,p,o,v,l,r,q,s)|0)break;A=c[z>>2]|0;if((A|0)==(c[y>>2]|0)){md[c[(c[u>>2]|0)+40>>2]&127](u)|0;continue}else{c[z>>2]=A+4;continue}}s=a[l>>0]|0;if(!(s&1))s=(s&255)>>>1;else s=c[l+4>>2]|0;if((s|0)!=0?(n=c[q>>2]|0,(n-r|0)<160):0){A=c[o>>2]|0;c[q>>2]=n+4;c[n>>2]=A}c[j>>2]=Ip(x,c[p>>2]|0,h,f)|0;hn(l,r,c[q>>2]|0,h);if(!u){j=0;n=1}else{j=c[u+12>>2]|0;if((j|0)==(c[u+16>>2]|0))j=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else j=c[j>>2]|0;n=(j|0)==-1;j=n?0:u;n=n?1:0}if(w){o=c[w+12>>2]|0;if((o|0)==(c[w+16>>2]|0))o=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else o=c[o>>2]|0;if((o|0)!=-1){if(!n)k=62}else k=60}else k=60;if((k|0)==60?n:0)k=62;if((k|0)==62)c[h>>2]=c[h>>2]|2;c[b>>2]=j;if(a[d>>0]&1)Uq(c[d+8>>2]|0);if(!(a[l>>0]&1)){i=m;return}Uq(c[l+8>>2]|0);i=m;return}function Jk(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;m=i;i=i+304|0;s=m+160|0;v=m+280|0;l=m+264|0;d=m+284|0;p=m+300|0;r=m;q=m+276|0;o=m+296|0;u=c[e>>2]|0;w=c[f>>2]|0;f=c[g+4>>2]&74;if((f|0)==64)f=8;else if((f|0)==8)f=16;else if(!f)f=0;else f=10;Wk(l,g,s,v);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;Ki(d,10);if(!(a[d>>0]&1)){x=d+1|0;e=x;t=d+8|0}else{x=d+8|0;e=d+1|0;t=x;x=c[x>>2]|0}c[p>>2]=x;c[q>>2]=r;c[o>>2]=0;g=d+4|0;v=c[v>>2]|0;while(1){if(!u){y=1;u=0}else{y=c[u+12>>2]|0;if((y|0)==(c[u+16>>2]|0))y=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else y=c[y>>2]|0;A=(y|0)==-1;y=A?1:0;u=A?0:u}if(w){z=c[w+12>>2]|0;if((z|0)==(c[w+16>>2]|0))z=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else z=c[z>>2]|0;if((z|0)!=-1){if(!y)break}else k=20}else k=20;if((k|0)==20){k=0;if(y){w=0;break}else w=0}A=a[d>>0]|0;y=(A&1)==0;if(y)z=(A&255)>>>1;else z=c[g>>2]|0;if((c[p>>2]|0)==(x+z|0)){if(y)y=(A&255)>>>1;else y=c[g>>2]|0;Ki(d,y<<1);if(!(a[d>>0]&1))x=10;else x=(c[d>>2]&-2)+ -1|0;Ki(d,x);if(!(a[d>>0]&1))x=e;else x=c[t>>2]|0;c[p>>2]=x+y}z=u+12|0;A=c[z>>2]|0;y=u+16|0;if((A|0)==(c[y>>2]|0))A=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else A=c[A>>2]|0;if(Sk(A,f,x,p,o,v,l,r,q,s)|0)break;A=c[z>>2]|0;if((A|0)==(c[y>>2]|0)){md[c[(c[u>>2]|0)+40>>2]&127](u)|0;continue}else{c[z>>2]=A+4;continue}}s=a[l>>0]|0;if(!(s&1))s=(s&255)>>>1;else s=c[l+4>>2]|0;if((s|0)!=0?(n=c[q>>2]|0,(n-r|0)<160):0){A=c[o>>2]|0;c[q>>2]=n+4;c[n>>2]=A}z=Hp(x,c[p>>2]|0,h,f)|0;A=j;c[A>>2]=z;c[A+4>>2]=H;hn(l,r,c[q>>2]|0,h);if(!u){j=0;n=1}else{j=c[u+12>>2]|0;if((j|0)==(c[u+16>>2]|0))j=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else j=c[j>>2]|0;n=(j|0)==-1;j=n?0:u;n=n?1:0}if(w){o=c[w+12>>2]|0;if((o|0)==(c[w+16>>2]|0))o=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else o=c[o>>2]|0;if((o|0)!=-1){if(!n)k=62}else k=60}else k=60;if((k|0)==60?n:0)k=62;if((k|0)==62)c[h>>2]=c[h>>2]|2;c[b>>2]=j;if(a[d>>0]&1)Uq(c[d+8>>2]|0);if(!(a[l>>0]&1)){i=m;return}Uq(c[l+8>>2]|0);i=m;return}function Kk(d,e,f,g,h,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;n=i;i=i+304|0;t=n+160|0;w=n+280|0;m=n+264|0;e=n+284|0;q=n+300|0;s=n;r=n+276|0;p=n+296|0;v=c[f>>2]|0;x=c[g>>2]|0;g=c[h+4>>2]&74;if((g|0)==8)g=16;else if(!g)g=0;else if((g|0)==64)g=8;else g=10;Wk(m,h,t,w);c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;Ki(e,10);if(!(a[e>>0]&1)){y=e+1|0;f=y;u=e+8|0}else{y=e+8|0;f=e+1|0;u=y;y=c[y>>2]|0}c[q>>2]=y;c[r>>2]=s;c[p>>2]=0;h=e+4|0;w=c[w>>2]|0;while(1){if(!v){z=1;v=0}else{z=c[v+12>>2]|0;if((z|0)==(c[v+16>>2]|0))z=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else z=c[z>>2]|0;B=(z|0)==-1;z=B?1:0;v=B?0:v}if(x){A=c[x+12>>2]|0;if((A|0)==(c[x+16>>2]|0))A=md[c[(c[x>>2]|0)+36>>2]&127](x)|0;else A=c[A>>2]|0;if((A|0)!=-1){if(!z)break}else l=20}else l=20;if((l|0)==20){l=0;if(z){x=0;break}else x=0}B=a[e>>0]|0;z=(B&1)==0;if(z)A=(B&255)>>>1;else A=c[h>>2]|0;if((c[q>>2]|0)==(y+A|0)){if(z)z=(B&255)>>>1;else z=c[h>>2]|0;Ki(e,z<<1);if(!(a[e>>0]&1))y=10;else y=(c[e>>2]&-2)+ -1|0;Ki(e,y);if(!(a[e>>0]&1))y=f;else y=c[u>>2]|0;c[q>>2]=y+z}A=v+12|0;B=c[A>>2]|0;z=v+16|0;if((B|0)==(c[z>>2]|0))B=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else B=c[B>>2]|0;if(Sk(B,g,y,q,p,w,m,s,r,t)|0)break;B=c[A>>2]|0;if((B|0)==(c[z>>2]|0)){md[c[(c[v>>2]|0)+40>>2]&127](v)|0;continue}else{c[A>>2]=B+4;continue}}t=a[m>>0]|0;if(!(t&1))t=(t&255)>>>1;else t=c[m+4>>2]|0;if((t|0)!=0?(o=c[r>>2]|0,(o-s|0)<160):0){B=c[p>>2]|0;c[r>>2]=o+4;c[o>>2]=B}b[k>>1]=Gp(y,c[q>>2]|0,j,g)|0;hn(m,s,c[r>>2]|0,j);if(!v){k=0;o=1}else{k=c[v+12>>2]|0;if((k|0)==(c[v+16>>2]|0))k=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else k=c[k>>2]|0;o=(k|0)==-1;k=o?0:v;o=o?1:0}if(x){p=c[x+12>>2]|0;if((p|0)==(c[x+16>>2]|0))p=md[c[(c[x>>2]|0)+36>>2]&127](x)|0;else p=c[p>>2]|0;if((p|0)!=-1){if(!o)l=62}else l=60}else l=60;if((l|0)==60?o:0)l=62;if((l|0)==62)c[j>>2]=c[j>>2]|2;c[d>>2]=k;if(a[e>>0]&1)Uq(c[e+8>>2]|0);if(!(a[m>>0]&1)){i=n;return}Uq(c[m+8>>2]|0);i=n;return}function Lk(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;m=i;i=i+304|0;s=m+160|0;v=m+280|0;l=m+264|0;d=m+284|0;p=m+300|0;r=m;q=m+276|0;o=m+296|0;u=c[e>>2]|0;w=c[f>>2]|0;f=c[g+4>>2]&74;if((f|0)==64)f=8;else if((f|0)==8)f=16;else if(!f)f=0;else f=10;Wk(l,g,s,v);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;Ki(d,10);if(!(a[d>>0]&1)){x=d+1|0;e=x;t=d+8|0}else{x=d+8|0;e=d+1|0;t=x;x=c[x>>2]|0}c[p>>2]=x;c[q>>2]=r;c[o>>2]=0;g=d+4|0;v=c[v>>2]|0;while(1){if(!u){y=1;u=0}else{y=c[u+12>>2]|0;if((y|0)==(c[u+16>>2]|0))y=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else y=c[y>>2]|0;A=(y|0)==-1;y=A?1:0;u=A?0:u}if(w){z=c[w+12>>2]|0;if((z|0)==(c[w+16>>2]|0))z=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else z=c[z>>2]|0;if((z|0)!=-1){if(!y)break}else k=20}else k=20;if((k|0)==20){k=0;if(y){w=0;break}else w=0}A=a[d>>0]|0;y=(A&1)==0;if(y)z=(A&255)>>>1;else z=c[g>>2]|0;if((c[p>>2]|0)==(x+z|0)){if(y)y=(A&255)>>>1;else y=c[g>>2]|0;Ki(d,y<<1);if(!(a[d>>0]&1))x=10;else x=(c[d>>2]&-2)+ -1|0;Ki(d,x);if(!(a[d>>0]&1))x=e;else x=c[t>>2]|0;c[p>>2]=x+y}z=u+12|0;A=c[z>>2]|0;y=u+16|0;if((A|0)==(c[y>>2]|0))A=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else A=c[A>>2]|0;if(Sk(A,f,x,p,o,v,l,r,q,s)|0)break;A=c[z>>2]|0;if((A|0)==(c[y>>2]|0)){md[c[(c[u>>2]|0)+40>>2]&127](u)|0;continue}else{c[z>>2]=A+4;continue}}s=a[l>>0]|0;if(!(s&1))s=(s&255)>>>1;else s=c[l+4>>2]|0;if((s|0)!=0?(n=c[q>>2]|0,(n-r|0)<160):0){A=c[o>>2]|0;c[q>>2]=n+4;c[n>>2]=A}c[j>>2]=Fp(x,c[p>>2]|0,h,f)|0;hn(l,r,c[q>>2]|0,h);if(!u){j=0;n=1}else{j=c[u+12>>2]|0;if((j|0)==(c[u+16>>2]|0))j=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else j=c[j>>2]|0;n=(j|0)==-1;j=n?0:u;n=n?1:0}if(w){o=c[w+12>>2]|0;if((o|0)==(c[w+16>>2]|0))o=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else o=c[o>>2]|0;if((o|0)!=-1){if(!n)k=62}else k=60}else k=60;if((k|0)==60?n:0)k=62;if((k|0)==62)c[h>>2]=c[h>>2]|2;c[b>>2]=j;if(a[d>>0]&1)Uq(c[d+8>>2]|0);if(!(a[l>>0]&1)){i=m;return}Uq(c[l+8>>2]|0);i=m;return}function Mk(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;m=i;i=i+304|0;s=m+160|0;v=m+280|0;l=m+264|0;d=m+284|0;p=m+300|0;r=m;q=m+276|0;o=m+296|0;u=c[e>>2]|0;w=c[f>>2]|0;f=c[g+4>>2]&74;if((f|0)==8)f=16;else if(!f)f=0;else if((f|0)==64)f=8;else f=10;Wk(l,g,s,v);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;Ki(d,10);if(!(a[d>>0]&1)){x=d+1|0;e=x;t=d+8|0}else{x=d+8|0;e=d+1|0;t=x;x=c[x>>2]|0}c[p>>2]=x;c[q>>2]=r;c[o>>2]=0;g=d+4|0;v=c[v>>2]|0;while(1){if(!u){y=1;u=0}else{y=c[u+12>>2]|0;if((y|0)==(c[u+16>>2]|0))y=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else y=c[y>>2]|0;A=(y|0)==-1;y=A?1:0;u=A?0:u}if(w){z=c[w+12>>2]|0;if((z|0)==(c[w+16>>2]|0))z=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else z=c[z>>2]|0;if((z|0)!=-1){if(!y)break}else k=20}else k=20;if((k|0)==20){k=0;if(y){w=0;break}else w=0}A=a[d>>0]|0;y=(A&1)==0;if(y)z=(A&255)>>>1;else z=c[g>>2]|0;if((c[p>>2]|0)==(x+z|0)){if(y)y=(A&255)>>>1;else y=c[g>>2]|0;Ki(d,y<<1);if(!(a[d>>0]&1))x=10;else x=(c[d>>2]&-2)+ -1|0;Ki(d,x);if(!(a[d>>0]&1))x=e;else x=c[t>>2]|0;c[p>>2]=x+y}z=u+12|0;A=c[z>>2]|0;y=u+16|0;if((A|0)==(c[y>>2]|0))A=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else A=c[A>>2]|0;if(Sk(A,f,x,p,o,v,l,r,q,s)|0)break;A=c[z>>2]|0;if((A|0)==(c[y>>2]|0)){md[c[(c[u>>2]|0)+40>>2]&127](u)|0;continue}else{c[z>>2]=A+4;continue}}s=a[l>>0]|0;if(!(s&1))s=(s&255)>>>1;else s=c[l+4>>2]|0;if((s|0)!=0?(n=c[q>>2]|0,(n-r|0)<160):0){A=c[o>>2]|0;c[q>>2]=n+4;c[n>>2]=A}c[j>>2]=Ep(x,c[p>>2]|0,h,f)|0;hn(l,r,c[q>>2]|0,h);if(!u){j=0;n=1}else{j=c[u+12>>2]|0;if((j|0)==(c[u+16>>2]|0))j=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else j=c[j>>2]|0;n=(j|0)==-1;j=n?0:u;n=n?1:0}if(w){o=c[w+12>>2]|0;if((o|0)==(c[w+16>>2]|0))o=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else o=c[o>>2]|0;if((o|0)!=-1){if(!n)k=62}else k=60}else k=60;if((k|0)==60?n:0)k=62;if((k|0)==62)c[h>>2]=c[h>>2]|2;c[b>>2]=j;if(a[d>>0]&1)Uq(c[d+8>>2]|0);if(!(a[l>>0]&1)){i=m;return}Uq(c[l+8>>2]|0);i=m;return}function Nk(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;m=i;i=i+304|0;s=m+160|0;v=m+280|0;l=m+264|0;d=m+284|0;p=m+300|0;r=m;q=m+276|0;o=m+296|0;u=c[e>>2]|0;w=c[f>>2]|0;f=c[g+4>>2]&74;if((f|0)==64)f=8;else if((f|0)==8)f=16;else if(!f)f=0;else f=10;Wk(l,g,s,v);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;Ki(d,10);if(!(a[d>>0]&1)){x=d+1|0;e=x;t=d+8|0}else{x=d+8|0;e=d+1|0;t=x;x=c[x>>2]|0}c[p>>2]=x;c[q>>2]=r;c[o>>2]=0;g=d+4|0;v=c[v>>2]|0;while(1){if(!u){y=1;u=0}else{y=c[u+12>>2]|0;if((y|0)==(c[u+16>>2]|0))y=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else y=c[y>>2]|0;A=(y|0)==-1;y=A?1:0;u=A?0:u}if(w){z=c[w+12>>2]|0;if((z|0)==(c[w+16>>2]|0))z=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else z=c[z>>2]|0;if((z|0)!=-1){if(!y)break}else k=20}else k=20;if((k|0)==20){k=0;if(y){w=0;break}else w=0}A=a[d>>0]|0;y=(A&1)==0;if(y)z=(A&255)>>>1;else z=c[g>>2]|0;if((c[p>>2]|0)==(x+z|0)){if(y)y=(A&255)>>>1;else y=c[g>>2]|0;Ki(d,y<<1);if(!(a[d>>0]&1))x=10;else x=(c[d>>2]&-2)+ -1|0;Ki(d,x);if(!(a[d>>0]&1))x=e;else x=c[t>>2]|0;c[p>>2]=x+y}z=u+12|0;A=c[z>>2]|0;y=u+16|0;if((A|0)==(c[y>>2]|0))A=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else A=c[A>>2]|0;if(Sk(A,f,x,p,o,v,l,r,q,s)|0)break;A=c[z>>2]|0;if((A|0)==(c[y>>2]|0)){md[c[(c[u>>2]|0)+40>>2]&127](u)|0;continue}else{c[z>>2]=A+4;continue}}s=a[l>>0]|0;if(!(s&1))s=(s&255)>>>1;else s=c[l+4>>2]|0;if((s|0)!=0?(n=c[q>>2]|0,(n-r|0)<160):0){A=c[o>>2]|0;c[q>>2]=n+4;c[n>>2]=A}z=Dp(x,c[p>>2]|0,h,f)|0;A=j;c[A>>2]=z;c[A+4>>2]=H;hn(l,r,c[q>>2]|0,h);if(!u){j=0;n=1}else{j=c[u+12>>2]|0;if((j|0)==(c[u+16>>2]|0))j=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else j=c[j>>2]|0;n=(j|0)==-1;j=n?0:u;n=n?1:0}if(w){o=c[w+12>>2]|0;if((o|0)==(c[w+16>>2]|0))o=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else o=c[o>>2]|0;if((o|0)!=-1){if(!n)k=62}else k=60}else k=60;if((k|0)==60?n:0)k=62;if((k|0)==62)c[h>>2]=c[h>>2]|2;c[b>>2]=j;if(a[d>>0]&1)Uq(c[d+8>>2]|0);if(!(a[l>>0]&1)){i=m;return}Uq(c[l+8>>2]|0);i=m;return}function Ok(b,d,e,f,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var 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;m=i;i=i+352|0;v=m+208|0;w=m+184|0;x=m+4|0;n=m+8|0;d=m+196|0;p=m;t=m+24|0;s=m+192|0;r=m+188|0;q=m+337|0;u=m+336|0;y=c[e>>2]|0;z=c[f>>2]|0;Xk(n,h,v,w,x);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;Ki(d,10);if(!(a[d>>0]&1)){A=d+1|0;f=A;h=d+8|0}else{A=d+8|0;f=d+1|0;h=A;A=c[A>>2]|0}c[p>>2]=A;c[s>>2]=t;c[r>>2]=0;a[q>>0]=1;a[u>>0]=69;e=d+4|0;w=c[w>>2]|0;x=c[x>>2]|0;while(1){if(!y){B=1;y=0}else{B=c[y+12>>2]|0;if((B|0)==(c[y+16>>2]|0))B=md[c[(c[y>>2]|0)+36>>2]&127](y)|0;else B=c[B>>2]|0;D=(B|0)==-1;B=D?1:0;y=D?0:y}if(z){C=c[z+12>>2]|0;if((C|0)==(c[z+16>>2]|0))C=md[c[(c[z>>2]|0)+36>>2]&127](z)|0;else C=c[C>>2]|0;if((C|0)!=-1){if(!B)break}else l=16}else l=16;if((l|0)==16){l=0;if(B){z=0;break}else z=0}D=a[d>>0]|0;B=(D&1)==0;if(B)C=(D&255)>>>1;else C=c[e>>2]|0;if((c[p>>2]|0)==(A+C|0)){if(B)B=(D&255)>>>1;else B=c[e>>2]|0;Ki(d,B<<1);if(!(a[d>>0]&1))A=10;else A=(c[d>>2]&-2)+ -1|0;Ki(d,A);if(!(a[d>>0]&1))A=f;else A=c[h>>2]|0;c[p>>2]=A+B}C=y+12|0;D=c[C>>2]|0;B=y+16|0;if((D|0)==(c[B>>2]|0))D=md[c[(c[y>>2]|0)+36>>2]&127](y)|0;else D=c[D>>2]|0;if(Yk(D,q,u,A,p,w,x,n,t,s,r,v)|0)break;D=c[C>>2]|0;if((D|0)==(c[B>>2]|0)){md[c[(c[y>>2]|0)+40>>2]&127](y)|0;continue}else{c[C>>2]=D+4;continue}}u=a[n>>0]|0;if(!(u&1))u=(u&255)>>>1;else u=c[n+4>>2]|0;if(((u|0)!=0?(a[q>>0]|0)!=0:0)?(o=c[s>>2]|0,(o-t|0)<160):0){D=c[r>>2]|0;c[s>>2]=o+4;c[o>>2]=D}g[k>>2]=+Cp(A,c[p>>2]|0,j);hn(n,t,c[s>>2]|0,j);if(!y){k=0;o=1}else{k=c[y+12>>2]|0;if((k|0)==(c[y+16>>2]|0))k=md[c[(c[y>>2]|0)+36>>2]&127](y)|0;else k=c[k>>2]|0;o=(k|0)==-1;k=o?0:y;o=o?1:0}if(z){p=c[z+12>>2]|0;if((p|0)==(c[z+16>>2]|0))p=md[c[(c[z>>2]|0)+36>>2]&127](z)|0;else p=c[p>>2]|0;if((p|0)!=-1){if(!o)l=59}else l=57}else l=57;if((l|0)==57?o:0)l=59;if((l|0)==59)c[j>>2]=c[j>>2]|2;c[b>>2]=k;if(a[d>>0]&1)Uq(c[d+8>>2]|0);if(!(a[n>>0]&1)){i=m;return}Uq(c[n+8>>2]|0);i=m;return}function Pk(b,d,e,f,g,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var 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;m=i;i=i+352|0;v=m+208|0;w=m+184|0;x=m+4|0;n=m+8|0;d=m+196|0;p=m;t=m+24|0;s=m+192|0;r=m+188|0;q=m+337|0;u=m+336|0;y=c[e>>2]|0;z=c[f>>2]|0;Xk(n,g,v,w,x);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;Ki(d,10);if(!(a[d>>0]&1)){A=d+1|0;f=A;g=d+8|0}else{A=d+8|0;f=d+1|0;g=A;A=c[A>>2]|0}c[p>>2]=A;c[s>>2]=t;c[r>>2]=0;a[q>>0]=1;a[u>>0]=69;e=d+4|0;w=c[w>>2]|0;x=c[x>>2]|0;while(1){if(!y){B=1;y=0}else{B=c[y+12>>2]|0;if((B|0)==(c[y+16>>2]|0))B=md[c[(c[y>>2]|0)+36>>2]&127](y)|0;else B=c[B>>2]|0;D=(B|0)==-1;B=D?1:0;y=D?0:y}if(z){C=c[z+12>>2]|0;if((C|0)==(c[z+16>>2]|0))C=md[c[(c[z>>2]|0)+36>>2]&127](z)|0;else C=c[C>>2]|0;if((C|0)!=-1){if(!B)break}else l=16}else l=16;if((l|0)==16){l=0;if(B){z=0;break}else z=0}D=a[d>>0]|0;B=(D&1)==0;if(B)C=(D&255)>>>1;else C=c[e>>2]|0;if((c[p>>2]|0)==(A+C|0)){if(B)B=(D&255)>>>1;else B=c[e>>2]|0;Ki(d,B<<1);if(!(a[d>>0]&1))A=10;else A=(c[d>>2]&-2)+ -1|0;Ki(d,A);if(!(a[d>>0]&1))A=f;else A=c[g>>2]|0;c[p>>2]=A+B}C=y+12|0;D=c[C>>2]|0;B=y+16|0;if((D|0)==(c[B>>2]|0))D=md[c[(c[y>>2]|0)+36>>2]&127](y)|0;else D=c[D>>2]|0;if(Yk(D,q,u,A,p,w,x,n,t,s,r,v)|0)break;D=c[C>>2]|0;if((D|0)==(c[B>>2]|0)){md[c[(c[y>>2]|0)+40>>2]&127](y)|0;continue}else{c[C>>2]=D+4;continue}}u=a[n>>0]|0;if(!(u&1))u=(u&255)>>>1;else u=c[n+4>>2]|0;if(((u|0)!=0?(a[q>>0]|0)!=0:0)?(o=c[s>>2]|0,(o-t|0)<160):0){D=c[r>>2]|0;c[s>>2]=o+4;c[o>>2]=D}h[k>>3]=+Bp(A,c[p>>2]|0,j);hn(n,t,c[s>>2]|0,j);if(!y){k=0;o=1}else{k=c[y+12>>2]|0;if((k|0)==(c[y+16>>2]|0))k=md[c[(c[y>>2]|0)+36>>2]&127](y)|0;else k=c[k>>2]|0;o=(k|0)==-1;k=o?0:y;o=o?1:0}if(z){p=c[z+12>>2]|0;if((p|0)==(c[z+16>>2]|0))p=md[c[(c[z>>2]|0)+36>>2]&127](z)|0;else p=c[p>>2]|0;if((p|0)!=-1){if(!o)l=59}else l=57}else l=57;if((l|0)==57?o:0)l=59;if((l|0)==59)c[j>>2]=c[j>>2]|2;c[b>>2]=k;if(a[d>>0]&1)Uq(c[d+8>>2]|0);if(!(a[n>>0]&1)){i=m;return}Uq(c[n+8>>2]|0);i=m;return}function Qk(b,d,e,f,g,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var 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;m=i;i=i+352|0;v=m+208|0;w=m+184|0;x=m+4|0;n=m+8|0;d=m+196|0;p=m;t=m+24|0;s=m+192|0;r=m+188|0;q=m+337|0;u=m+336|0;y=c[e>>2]|0;z=c[f>>2]|0;Xk(n,g,v,w,x);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;Ki(d,10);if(!(a[d>>0]&1)){A=d+1|0;f=A;g=d+8|0}else{A=d+8|0;f=d+1|0;g=A;A=c[A>>2]|0}c[p>>2]=A;c[s>>2]=t;c[r>>2]=0;a[q>>0]=1;a[u>>0]=69;e=d+4|0;w=c[w>>2]|0;x=c[x>>2]|0;while(1){if(!y){B=1;y=0}else{B=c[y+12>>2]|0;if((B|0)==(c[y+16>>2]|0))B=md[c[(c[y>>2]|0)+36>>2]&127](y)|0;else B=c[B>>2]|0;D=(B|0)==-1;B=D?1:0;y=D?0:y}if(z){C=c[z+12>>2]|0;if((C|0)==(c[z+16>>2]|0))C=md[c[(c[z>>2]|0)+36>>2]&127](z)|0;else C=c[C>>2]|0;if((C|0)!=-1){if(!B)break}else l=16}else l=16;if((l|0)==16){l=0;if(B){z=0;break}else z=0}D=a[d>>0]|0;B=(D&1)==0;if(B)C=(D&255)>>>1;else C=c[e>>2]|0;if((c[p>>2]|0)==(A+C|0)){if(B)B=(D&255)>>>1;else B=c[e>>2]|0;Ki(d,B<<1);if(!(a[d>>0]&1))A=10;else A=(c[d>>2]&-2)+ -1|0;Ki(d,A);if(!(a[d>>0]&1))A=f;else A=c[g>>2]|0;c[p>>2]=A+B}C=y+12|0;D=c[C>>2]|0;B=y+16|0;if((D|0)==(c[B>>2]|0))D=md[c[(c[y>>2]|0)+36>>2]&127](y)|0;else D=c[D>>2]|0;if(Yk(D,q,u,A,p,w,x,n,t,s,r,v)|0)break;D=c[C>>2]|0;if((D|0)==(c[B>>2]|0)){md[c[(c[y>>2]|0)+40>>2]&127](y)|0;continue}else{c[C>>2]=D+4;continue}}u=a[n>>0]|0;if(!(u&1))u=(u&255)>>>1;else u=c[n+4>>2]|0;if(((u|0)!=0?(a[q>>0]|0)!=0:0)?(o=c[s>>2]|0,(o-t|0)<160):0){D=c[r>>2]|0;c[s>>2]=o+4;c[o>>2]=D}h[k>>3]=+Ap(A,c[p>>2]|0,j);hn(n,t,c[s>>2]|0,j);if(!y){k=0;o=1}else{k=c[y+12>>2]|0;if((k|0)==(c[y+16>>2]|0))k=md[c[(c[y>>2]|0)+36>>2]&127](y)|0;else k=c[k>>2]|0;o=(k|0)==-1;k=o?0:y;o=o?1:0}if(z){p=c[z+12>>2]|0;if((p|0)==(c[z+16>>2]|0))p=md[c[(c[z>>2]|0)+36>>2]&127](z)|0;else p=c[p>>2]|0;if((p|0)!=-1){if(!o)l=59}else l=57}else l=57;if((l|0)==57?o:0)l=59;if((l|0)==59)c[j>>2]=c[j>>2]|2;c[b>>2]=k;if(a[d>>0]&1)Uq(c[d+8>>2]|0);if(!(a[n>>0]&1)){i=m;return}Uq(c[n+8>>2]|0);i=m;return}function Rk(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;d=i;i=i+320|0;n=d;p=d+168|0;l=d+288|0;m=d+276|0;o=d+300|0;q=d+8|0;s=d+272|0;r=d+304|0;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;g=c[g+28>>2]|0;z=g+4|0;c[z>>2]=(c[z>>2]|0)+1;z=Sn(g,19064)|0;sd[c[(c[z>>2]|0)+48>>2]&7](z,17600,17626|0,p)|0;z=g+4|0;A=c[z>>2]|0;c[z>>2]=A+ -1;if(!A)jd[c[(c[g>>2]|0)+8>>2]&255](g);c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;Ki(m,10);if(!(a[m>>0]&1)){w=m+1|0;g=w;t=m+8|0}else{w=m+8|0;g=m+1|0;t=w;w=c[w>>2]|0}c[o>>2]=w;c[s>>2]=q;c[r>>2]=0;v=m+4|0;u=c[e>>2]|0;a:while(1){if(u){x=c[u+12>>2]|0;if((x|0)==(c[u+16>>2]|0))x=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else x=c[x>>2]|0;if((x|0)==-1){c[e>>2]=0;y=1;u=0}else y=0}else{y=1;u=0}x=c[f>>2]|0;do if(x){z=c[x+12>>2]|0;if((z|0)==(c[x+16>>2]|0))z=md[c[(c[x>>2]|0)+36>>2]&127](x)|0;else z=c[z>>2]|0;if((z|0)!=-1)if(y)break;else break a;else{c[f>>2]=0;k=22;break}}else k=22;while(0);if((k|0)==22){k=0;if(y){x=0;break}else x=0}A=a[m>>0]|0;z=(A&1)==0;if(z)y=(A&255)>>>1;else y=c[v>>2]|0;if((c[o>>2]|0)==(w+y|0)){if(z)y=(A&255)>>>1;else y=c[v>>2]|0;Ki(m,y<<1);if(!(a[m>>0]&1))w=10;else w=(c[m>>2]&-2)+ -1|0;Ki(m,w);if(!(a[m>>0]&1))w=g;else w=c[t>>2]|0;c[o>>2]=w+y}z=u+12|0;A=c[z>>2]|0;y=u+16|0;if((A|0)==(c[y>>2]|0))A=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else A=c[A>>2]|0;if(Sk(A,16,w,o,r,0,l,q,s,p)|0)break;x=c[z>>2]|0;if((x|0)==(c[y>>2]|0)){md[c[(c[u>>2]|0)+40>>2]&127](u)|0;continue}else{c[z>>2]=x+4;continue}}Ki(m,(c[o>>2]|0)-w|0);if(a[m>>0]&1)g=c[t>>2]|0;A=Dk()|0;c[n>>2]=j;if((Ck(g,A,n)|0)!=1)c[h>>2]=4;if(u){j=c[u+12>>2]|0;if((j|0)==(c[u+16>>2]|0))j=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else j=c[j>>2]|0;if((j|0)==-1){c[e>>2]=0;u=0;e=1}else e=0}else{u=0;e=1}do if(x){j=c[x+12>>2]|0;if((j|0)==(c[x+16>>2]|0))j=md[c[(c[x>>2]|0)+36>>2]&127](x)|0;else j=c[j>>2]|0;if((j|0)!=-1)if(e)break;else{k=66;break}else{c[f>>2]=0;k=64;break}}else k=64;while(0);if((k|0)==64?e:0)k=66;if((k|0)==66)c[h>>2]=c[h>>2]|2;c[b>>2]=u;if(a[m>>0]&1)Uq(c[m+8>>2]|0);if(!(a[l>>0]&1)){i=d;return}Uq(c[l+8>>2]|0);i=d;return}function Sk(b,d,e,f,g,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0;n=i;p=c[f>>2]|0;o=(p|0)==(e|0);do if(o){q=(c[m+96>>2]|0)==(b|0);if(!q?(c[m+100>>2]|0)!=(b|0):0)break;c[f>>2]=e+1;a[e>>0]=q?43:45;c[g>>2]=0;q=0;i=n;return q|0}while(0);q=a[j>>0]|0;if(!(q&1))j=(q&255)>>>1;else j=c[j+4>>2]|0;if((j|0)!=0&(b|0)==(h|0)){o=c[l>>2]|0;if((o-k|0)>=160){q=0;i=n;return q|0}q=c[g>>2]|0;c[l>>2]=o+4;c[o>>2]=q;c[g>>2]=0;q=0;i=n;return q|0}l=m+104|0;k=m;while(1){if((c[k>>2]|0)==(b|0))break;k=k+4|0;if((k|0)==(l|0)){k=l;break}}b=k-m|0;m=b>>2;if((b|0)>92){q=-1;i=n;return q|0}if((d|0)==10|(d|0)==8){if((m|0)>=(d|0)){q=-1;i=n;return q|0}}else if((d|0)==16?(b|0)>=88:0){if(o){q=-1;i=n;return q|0}if((p-e|0)>=3){q=-1;i=n;return q|0}if((a[p+ -1>>0]|0)!=48){q=-1;i=n;return q|0}c[g>>2]=0;q=a[17600+m>>0]|0;c[f>>2]=p+1;a[p>>0]=q;q=0;i=n;return q|0}q=a[17600+m>>0]|0;c[f>>2]=p+1;a[p>>0]=q;c[g>>2]=(c[g>>2]|0)+1;q=0;i=n;return q|0}function Tk(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;d=c[d+28>>2]|0;h=d+4|0;c[h>>2]=(c[h>>2]|0)+1;h=Sn(d,19072)|0;sd[c[(c[h>>2]|0)+32>>2]&7](h,17600,17626|0,e)|0;e=Sn(d,19216)|0;a[f>>0]=md[c[(c[e>>2]|0)+16>>2]&127](e)|0;kd[c[(c[e>>2]|0)+20>>2]&63](b,e);f=d+4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if(e){i=g;return}jd[c[(c[d>>2]|0)+8>>2]&255](d);i=g;return}function Uk(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;d=c[d+28>>2]|0;j=d+4|0;c[j>>2]=(c[j>>2]|0)+1;j=Sn(d,19072)|0;sd[c[(c[j>>2]|0)+32>>2]&7](j,17600,17632|0,e)|0;e=Sn(d,19216)|0;a[f>>0]=md[c[(c[e>>2]|0)+12>>2]&127](e)|0;a[g>>0]=md[c[(c[e>>2]|0)+16>>2]&127](e)|0;kd[c[(c[e>>2]|0)+20>>2]&63](b,e);f=d+4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if(e){i=h;return}jd[c[(c[d>>2]|0)+8>>2]&255](d);i=h;return}function Vk(b,e,f,g,h,j,k,l,m,n,o,p){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0;q=i;if(b<<24>>24==j<<24>>24){if(!(a[e>>0]|0)){k=-1;i=q;return k|0}a[e>>0]=0;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=46;h=a[l>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[l+4>>2]|0;if(!h){k=0;i=q;return k|0}h=c[n>>2]|0;if((h-m|0)>=160){k=0;i=q;return k|0}k=c[o>>2]|0;c[n>>2]=h+4;c[h>>2]=k;k=0;i=q;return k|0}if(b<<24>>24==k<<24>>24){j=a[l>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[l+4>>2]|0;if(j){if(!(a[e>>0]|0)){k=-1;i=q;return k|0}h=c[n>>2]|0;if((h-m|0)>=160){k=0;i=q;return k|0}k=c[o>>2]|0;c[n>>2]=h+4;c[h>>2]=k;c[o>>2]=0;k=0;i=q;return k|0}}j=p+32|0;k=p;do{if((a[k>>0]|0)==b<<24>>24){j=k;break}k=k+1|0}while((k|0)!=(j|0));b=j-p|0;if((b|0)>31){k=-1;i=q;return k|0}p=a[17600+b>>0]|0;if((b|0)==23|(b|0)==22){a[f>>0]=80;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=p;k=0;i=q;return k|0}else if((b|0)==24|(b|0)==25){o=c[h>>2]|0;if((o|0)!=(g|0)?(d[o+ -1>>0]&95|0)!=(d[f>>0]&127|0):0){k=-1;i=q;return k|0}c[h>>2]=o+1;a[o>>0]=p;k=0;i=q;return k|0}else{g=p&95;if((g|0)==(a[f>>0]|0)?(a[f>>0]=g|128,(a[e>>0]|0)!=0):0){a[e>>0]=0;f=a[l>>0]|0;if(!(f&1))l=(f&255)>>>1;else l=c[l+4>>2]|0;if((l|0)!=0?(r=c[n>>2]|0,(r-m|0)<160):0){k=c[o>>2]|0;c[n>>2]=r+4;c[r>>2]=k}}k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=p;if((b|0)>21){k=0;i=q;return k|0}c[o>>2]=(c[o>>2]|0)+1;k=0;i=q;return k|0}return 0}function Wk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;b=c[b+28>>2]|0;g=b+4|0;c[g>>2]=(c[g>>2]|0)+1;g=Sn(b,19064)|0;sd[c[(c[g>>2]|0)+48>>2]&7](g,17600,17626|0,d)|0;d=Sn(b,19224)|0;c[e>>2]=md[c[(c[d>>2]|0)+16>>2]&127](d)|0;kd[c[(c[d>>2]|0)+20>>2]&63](a,d);e=b+4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if(d){i=f;return}jd[c[(c[b>>2]|0)+8>>2]&255](b);i=f;return}function Xk(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;g=i;b=c[b+28>>2]|0;h=b+4|0;c[h>>2]=(c[h>>2]|0)+1;h=Sn(b,19064)|0;sd[c[(c[h>>2]|0)+48>>2]&7](h,17600,17632|0,d)|0;d=Sn(b,19224)|0;c[e>>2]=md[c[(c[d>>2]|0)+12>>2]&127](d)|0;c[f>>2]=md[c[(c[d>>2]|0)+16>>2]&127](d)|0;kd[c[(c[d>>2]|0)+20>>2]&63](a,d);e=b+4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if(d){i=g;return}jd[c[(c[b>>2]|0)+8>>2]&255](b);i=g;return}function Yk(b,e,f,g,h,j,k,l,m,n,o,p){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0;q=i;if((b|0)==(j|0)){if(!(a[e>>0]|0)){k=-1;i=q;return k|0}a[e>>0]=0;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=46;h=a[l>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[l+4>>2]|0;if(!h){k=0;i=q;return k|0}h=c[n>>2]|0;if((h-m|0)>=160){k=0;i=q;return k|0}k=c[o>>2]|0;c[n>>2]=h+4;c[h>>2]=k;k=0;i=q;return k|0}if((b|0)==(k|0)){j=a[l>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[l+4>>2]|0;if(j){if(!(a[e>>0]|0)){k=-1;i=q;return k|0}h=c[n>>2]|0;if((h-m|0)>=160){k=0;i=q;return k|0}k=c[o>>2]|0;c[n>>2]=h+4;c[h>>2]=k;c[o>>2]=0;k=0;i=q;return k|0}}j=p+128|0;k=p;do{if((c[k>>2]|0)==(b|0)){j=k;break}k=k+4|0}while((k|0)!=(j|0));b=j-p|0;j=b>>2;if((b|0)>124){k=-1;i=q;return k|0}p=a[17600+j>>0]|0;if((j|0)==23|(j|0)==22)a[f>>0]=80;else if(!((j|0)==24|(j|0)==25)){g=p&95;if((g|0)==(a[f>>0]|0)?(a[f>>0]=g|128,(a[e>>0]|0)!=0):0){a[e>>0]=0;f=a[l>>0]|0;if(!(f&1))l=(f&255)>>>1;else l=c[l+4>>2]|0;if((l|0)!=0?(r=c[n>>2]|0,(r-m|0)<160):0){k=c[o>>2]|0;c[n>>2]=r+4;c[r>>2]=k}}}else{o=c[h>>2]|0;if((o|0)!=(g|0)?(d[o+ -1>>0]&95|0)!=(d[f>>0]&127|0):0){k=-1;i=q;return k|0}c[h>>2]=o+1;a[o>>0]=p;k=0;i=q;return k|0}k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=p;if((b|0)>84){k=0;i=q;return k|0}c[o>>2]=(c[o>>2]|0)+1;k=0;i=q;return k|0}function Zk(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function _k(a){a=a|0;return}function $k(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 j=0,k=0,l=0,m=0,n=0,o=0;j=i;i=i+32|0;l=j+16|0;m=j+12|0;k=j;if(!(c[f+4>>2]&1)){n=c[(c[d>>2]|0)+24>>2]|0;c[m>>2]=c[e>>2];o=h&1;c[l+0>>2]=c[m+0>>2];ud[n&31](b,d,l,f,g,o);i=j;return}l=c[f+28>>2]|0;d=l+4|0;c[d>>2]=(c[d>>2]|0)+1;d=Sn(l,19216)|0;n=l+4|0;o=c[n>>2]|0;c[n>>2]=o+ -1;if(!o)jd[c[(c[l>>2]|0)+8>>2]&255](l);l=c[d>>2]|0;if(h)kd[c[l+24>>2]&63](k,d);else kd[c[l+28>>2]&63](k,d);g=a[k>>0]|0;if(!(g&1)){h=k+1|0;m=h;d=k+8|0}else{d=k+8|0;m=c[d>>2]|0;h=k+1|0}l=k+4|0;while(1){f=(g&1)==0;if(f){n=h;g=(g&255)>>>1}else{n=c[d>>2]|0;g=c[l>>2]|0}if((m|0)==(n+g|0))break;n=a[m>>0]|0;f=c[e>>2]|0;do if(f){o=f+24|0;g=c[o>>2]|0;if((g|0)!=(c[f+28>>2]|0)){c[o>>2]=g+1;a[g>>0]=n;break}if((vd[c[(c[f>>2]|0)+52>>2]&63](f,n&255)|0)==-1)c[e>>2]=0}while(0);g=a[k>>0]|0;m=m+1|0}c[b>>2]=c[e>>2];if(f){i=j;return}Uq(c[k+8>>2]|0);i=j;return}function al(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 j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;l=i;i=i+64|0;p=l;r=l+16|0;n=l+24|0;d=l+36|0;m=l+8|0;k=l+4|0;o=l+12|0;a[r+0>>0]=a[17880]|0;a[r+1>>0]=a[17881]|0;a[r+2>>0]=a[17882]|0;a[r+3>>0]=a[17883]|0;a[r+4>>0]=a[17884]|0;a[r+5>>0]=a[17885]|0;q=f+4|0;bl(r+1|0,17784,1,c[q>>2]|0);s=Dk()|0;c[p>>2]=h;p=cl(n,12,s,r,p)|0;h=n+p|0;q=c[q>>2]&176;do if((q|0)==16){q=a[n>>0]|0;if(q<<24>>24==43|q<<24>>24==45){p=n+1|0;break}if((p|0)>1&q<<24>>24==48?(s=a[n+1>>0]|0,s<<24>>24==88|s<<24>>24==120):0)p=n+2|0;else j=7}else if((q|0)==32)p=h;else j=7;while(0);if((j|0)==7)p=n;j=c[f+28>>2]|0;c[o>>2]=j;j=j+4|0;c[j>>2]=(c[j>>2]|0)+1;dl(n,p,h,d,m,k,o);j=c[o>>2]|0;r=j+4|0;s=c[r>>2]|0;c[r>>2]=s+ -1;if(s){q=c[e>>2]|0;r=c[m>>2]|0;s=c[k>>2]|0;Sg(b,q,d,r,s,f,g);i=l;return}jd[c[(c[j>>2]|0)+8>>2]&255](j);q=c[e>>2]|0;r=c[m>>2]|0;s=c[k>>2]|0;Sg(b,q,d,r,s,f,g);i=l;return}function bl(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;if(e&2048){a[b>>0]=43;b=b+1|0}if(e&512){a[b>>0]=35;b=b+1|0}g=a[c>>0]|0;if(g<<24>>24)while(1){c=c+1|0;h=b+1|0;a[b>>0]=g;g=a[c>>0]|0;if(!(g<<24>>24)){b=h;break}else b=h}c=e&74;if((c|0)==64){a[b>>0]=111;i=f;return}else if((c|0)==8)if(!(e&16384)){a[b>>0]=120;i=f;return}else{a[b>>0]=88;i=f;return}else if(d){a[b>>0]=100;i=f;return}else{a[b>>0]=117;i=f;return}}function cl(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;g=i;i=i+16|0;h=g;c[h>>2]=f;d=Yb(d|0)|0;e=fr(a,b,e,h)|0;if(!d){i=g;return e|0}Yb(d|0)|0;i=g;return e|0}function dl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;l=i;i=i+16|0;k=l;n=Sn(c[j>>2]|0,19072)|0;o=Sn(c[j>>2]|0,19216)|0;kd[c[(c[o>>2]|0)+20>>2]&63](k,o);j=a[k>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[k+4>>2]|0;if(j){c[h>>2]=f;j=a[b>>0]|0;if(j<<24>>24==43|j<<24>>24==45){v=vd[c[(c[n>>2]|0)+28>>2]&63](n,j)|0;j=c[h>>2]|0;c[h>>2]=j+1;a[j>>0]=v;j=b+1|0}else j=b;if(((e-j|0)>1?(a[j>>0]|0)==48:0)?(q=j+1|0,v=a[q>>0]|0,v<<24>>24==88|v<<24>>24==120):0){v=vd[c[(c[n>>2]|0)+28>>2]&63](n,48)|0;u=c[h>>2]|0;c[h>>2]=u+1;a[u>>0]=v;u=vd[c[(c[n>>2]|0)+28>>2]&63](n,a[q>>0]|0)|0;v=c[h>>2]|0;c[h>>2]=v+1;a[v>>0]=u;j=j+2|0}if((j|0)!=(e|0)?(p=e+ -1|0,p>>>0>j>>>0):0){q=j;do{v=a[q>>0]|0;a[q>>0]=a[p>>0]|0;a[p>>0]=v;q=q+1|0;p=p+ -1|0}while(q>>>0

        >>0)}s=md[c[(c[o>>2]|0)+16>>2]&127](o)|0;if(j>>>0>>0){o=k+1|0;r=k+4|0;p=k+8|0;u=0;t=0;q=j;while(1){v=a[((a[k>>0]&1)==0?o:c[p>>2]|0)+t>>0]|0;if(v<<24>>24!=0&(u|0)==(v<<24>>24|0)){u=c[h>>2]|0;c[h>>2]=u+1;a[u>>0]=s;u=a[k>>0]|0;if(!(u&1))v=(u&255)>>>1;else v=c[r>>2]|0;u=0;t=(t>>>0<(v+ -1|0)>>>0&1)+t|0}w=vd[c[(c[n>>2]|0)+28>>2]&63](n,a[q>>0]|0)|0;v=c[h>>2]|0;c[h>>2]=v+1;a[v>>0]=w;q=q+1|0;if(q>>>0>=e>>>0)break;else u=u+1|0}}j=f+(j-b)|0;n=c[h>>2]|0;if((j|0)!=(n|0)?(m=n+ -1|0,m>>>0>j>>>0):0)do{w=a[j>>0]|0;a[j>>0]=a[m>>0]|0;a[m>>0]=w;j=j+1|0;m=m+ -1|0}while(j>>>0>>0)}else{sd[c[(c[n>>2]|0)+32>>2]&7](n,b,e,f)|0;c[h>>2]=f+(e-b)}if((d|0)==(e|0))f=c[h>>2]|0;else f=f+(d-b)|0;c[g>>2]=f;if(!(a[k>>0]&1)){i=l;return}Uq(c[k+8>>2]|0);i=l;return}function el(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;k=i;i=i+96|0;m=k+8|0;r=k;p=k+64|0;n=k+60|0;d=k+56|0;o=k+52|0;q=r;c[q>>2]=37;c[q+4>>2]=0;q=f+4|0;bl(r+1|0,17792,1,c[q>>2]|0);s=Dk()|0;t=m;c[t>>2]=h;c[t+4>>2]=j;h=cl(p,22,s,r,m)|0;j=p+h|0;q=c[q>>2]&176;do if((q|0)==32)h=j;else if((q|0)==16){q=a[p>>0]|0;if(q<<24>>24==43|q<<24>>24==45){h=p+1|0;break}if((h|0)>1&q<<24>>24==48?(t=a[p+1>>0]|0,t<<24>>24==88|t<<24>>24==120):0)h=p+2|0;else l=7}else l=7;while(0);if((l|0)==7)h=p;l=c[f+28>>2]|0;c[o>>2]=l;l=l+4|0;c[l>>2]=(c[l>>2]|0)+1;dl(p,h,j,m,n,d,o);l=c[o>>2]|0;s=l+4|0;t=c[s>>2]|0;c[s>>2]=t+ -1;if(t){r=c[e>>2]|0;s=c[n>>2]|0;t=c[d>>2]|0;Sg(b,r,m,s,t,f,g);i=k;return}jd[c[(c[l>>2]|0)+8>>2]&255](l);r=c[e>>2]|0;s=c[n>>2]|0;t=c[d>>2]|0;Sg(b,r,m,s,t,f,g);i=k;return}function fl(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 j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;l=i;i=i+64|0;p=l;r=l+16|0;n=l+24|0;d=l+36|0;m=l+8|0;k=l+4|0;o=l+12|0;a[r+0>>0]=a[17880]|0;a[r+1>>0]=a[17881]|0;a[r+2>>0]=a[17882]|0;a[r+3>>0]=a[17883]|0;a[r+4>>0]=a[17884]|0;a[r+5>>0]=a[17885]|0;q=f+4|0;bl(r+1|0,17784,0,c[q>>2]|0);s=Dk()|0;c[p>>2]=h;p=cl(n,12,s,r,p)|0;h=n+p|0;q=c[q>>2]&176;do if((q|0)==16){q=a[n>>0]|0;if(q<<24>>24==43|q<<24>>24==45){p=n+1|0;break}if((p|0)>1&q<<24>>24==48?(s=a[n+1>>0]|0,s<<24>>24==88|s<<24>>24==120):0)p=n+2|0;else j=7}else if((q|0)==32)p=h;else j=7;while(0);if((j|0)==7)p=n;j=c[f+28>>2]|0;c[o>>2]=j;j=j+4|0;c[j>>2]=(c[j>>2]|0)+1;dl(n,p,h,d,m,k,o);j=c[o>>2]|0;r=j+4|0;s=c[r>>2]|0;c[r>>2]=s+ -1;if(s){q=c[e>>2]|0;r=c[m>>2]|0;s=c[k>>2]|0;Sg(b,q,d,r,s,f,g);i=l;return}jd[c[(c[j>>2]|0)+8>>2]&255](j);q=c[e>>2]|0;r=c[m>>2]|0;s=c[k>>2]|0;Sg(b,q,d,r,s,f,g);i=l;return}function gl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;k=i;i=i+96|0;m=k+8|0;r=k;p=k+64|0;n=k+60|0;d=k+56|0;o=k+52|0;q=r;c[q>>2]=37;c[q+4>>2]=0;q=f+4|0;bl(r+1|0,17792,0,c[q>>2]|0);s=Dk()|0;t=m;c[t>>2]=h;c[t+4>>2]=j;h=cl(p,23,s,r,m)|0;j=p+h|0;q=c[q>>2]&176;do if((q|0)==32)h=j;else if((q|0)==16){q=a[p>>0]|0;if(q<<24>>24==43|q<<24>>24==45){h=p+1|0;break}if((h|0)>1&q<<24>>24==48?(t=a[p+1>>0]|0,t<<24>>24==88|t<<24>>24==120):0)h=p+2|0;else l=7}else l=7;while(0);if((l|0)==7)h=p;l=c[f+28>>2]|0;c[o>>2]=l;l=l+4|0;c[l>>2]=(c[l>>2]|0)+1;dl(p,h,j,m,n,d,o);l=c[o>>2]|0;s=l+4|0;t=c[s>>2]|0;c[s>>2]=t+ -1;if(t){r=c[e>>2]|0;s=c[n>>2]|0;t=c[d>>2]|0;Sg(b,r,m,s,t,f,g);i=k;return}jd[c[(c[l>>2]|0)+8>>2]&255](l);r=c[e>>2]|0;s=c[n>>2]|0;t=c[d>>2]|0;Sg(b,r,m,s,t,f,g);i=k;return}function hl(b,d,e,f,g,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=+j;var 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;m=i;i=i+128|0;p=m;u=m+64|0;r=m+92|0;s=m+80|0;l=m+76|0;d=m+72|0;o=m+84|0;n=m+88|0;t=u;c[t>>2]=37;c[t+4>>2]=0;t=f+4|0;v=il(u+1|0,17800,c[t>>2]|0)|0;c[s>>2]=r;w=Dk()|0;if(v){c[p>>2]=c[f+8>>2];x=p+4|0;h[k>>3]=j;c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];w=cl(r,30,w,u,p)|0}else{h[k>>3]=j;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];w=cl(r,30,w,u,p)|0}if((w|0)>29){if(v){w=Dk()|0;c[p>>2]=c[f+8>>2];x=p+4|0;h[k>>3]=j;c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];w=jl(s,w,u,p)|0}else{w=Dk()|0;c[p>>2]=c[f+8>>2];x=p+4|0;h[k>>3]=j;c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];w=jl(s,w,u,p)|0}s=c[s>>2]|0;if(!s){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else u=s}else{u=r;s=0}v=u+w|0;t=c[t>>2]&176;do if((t|0)==32)t=v;else if((t|0)==16){t=a[u>>0]|0;if(t<<24>>24==43|t<<24>>24==45){t=u+1|0;break}if((w|0)>1&t<<24>>24==48?(x=a[u+1>>0]|0,x<<24>>24==88|x<<24>>24==120):0)t=u+2|0;else q=19}else q=19;while(0);if((q|0)==19)t=u;if((u|0)!=(r|0)){p=Tq(w<<1)|0;if(!p){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else{r=u;q=p}}else q=0;w=c[f+28>>2]|0;c[o>>2]=w;w=w+4|0;c[w>>2]=(c[w>>2]|0)+1;kl(r,t,v,p,l,d,o);o=c[o>>2]|0;w=o+4|0;x=c[w>>2]|0;c[w>>2]=x+ -1;if(!x)jd[c[(c[o>>2]|0)+8>>2]&255](o);Sg(n,c[e>>2]|0,p,c[l>>2]|0,c[d>>2]|0,f,g);x=c[n>>2]|0;c[e>>2]=x;c[b>>2]=x;if(q)Uq(q);if(!s){i=m;return}Uq(s);i=m;return}function il(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;if(d&2048){a[b>>0]=43;b=b+1|0}if(d&1024){a[b>>0]=35;b=b+1|0}f=d&260;h=d>>>14;d=(f|0)==260;if(d)g=0;else{a[b>>0]=46;a[b+1>>0]=42;b=b+2|0;g=1}j=a[c>>0]|0;if(j<<24>>24)while(1){c=c+1|0;k=b+1|0;a[b>>0]=j;j=a[c>>0]|0;if(!(j<<24>>24)){b=k;break}else b=k}do if((f|0)==256)if(!(h&1)){a[b>>0]=101;break}else{a[b>>0]=69;break}else if((f|0)==4)if(!(h&1)){a[b>>0]=102;break}else{a[b>>0]=70;break}else{f=(h&1|0)!=0;if(d)if(f){a[b>>0]=65;break}else{a[b>>0]=97;break}else if(f){a[b>>0]=71;break}else{a[b>>0]=103;break}}while(0);i=e;return g|0}function jl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+32|0;k=f+16|0;j=f;c[j>>2]=e;b=Yb(b|0)|0;e=Tq(240)|0;do if(e){c[k>>2]=c[j>>2];k=fr(e,240,d,k)|0;if(k>>>0<240){j=Vq(e,k+1|0)|0;c[a>>2]=(j|0)!=0?j:e;break}Uq(e);if((k|0)>=0?(g=k+1|0,h=Tq(g)|0,c[a>>2]=h,(h|0)!=0):0)k=fr(h,g,d,j)|0;else k=-1}else k=-1;while(0);if(!b){i=f;return k|0}Yb(b|0)|0;i=f;return k|0}function kl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;k=i;i=i+16|0;l=k;m=Sn(c[j>>2]|0,19072)|0;j=Sn(c[j>>2]|0,19216)|0;kd[c[(c[j>>2]|0)+20>>2]&63](l,j);c[h>>2]=f;n=a[b>>0]|0;if(n<<24>>24==43|n<<24>>24==45){y=vd[c[(c[m>>2]|0)+28>>2]&63](m,n)|0;t=c[h>>2]|0;c[h>>2]=t+1;a[t>>0]=y;t=b+1|0}else t=b;n=e;a:do if(((n-t|0)>1?(a[t>>0]|0)==48:0)?(p=t+1|0,y=a[p>>0]|0,y<<24>>24==88|y<<24>>24==120):0){y=vd[c[(c[m>>2]|0)+28>>2]&63](m,48)|0;x=c[h>>2]|0;c[h>>2]=x+1;a[x>>0]=y;t=t+2|0;x=vd[c[(c[m>>2]|0)+28>>2]&63](m,a[p>>0]|0)|0;y=c[h>>2]|0;c[h>>2]=y+1;a[y>>0]=x;if(t>>>0>>0){q=t;while(1){y=a[q>>0]|0;Dk()|0;y=y<<24>>24;if((y+ -48|0)>>>0>=10?((y|32)+ -97|0)>>>0>=6:0){p=t;break a}q=q+1|0;if(q>>>0>=e>>>0){p=t;break}}}else{p=t;q=t}}else s=5;while(0);b:do if((s|0)==5)if(t>>>0>>0){q=t;while(1){y=a[q>>0]|0;Dk()|0;s=q+1|0;if(((y<<24>>24)+ -48|0)>>>0>=10){p=t;break b}if(s>>>0>>0)q=s;else{p=t;q=s;break}}}else{p=t;q=t}while(0);s=a[l>>0]|0;if(!(s&1))s=(s&255)>>>1;else s=c[l+4>>2]|0;if(s){if((p|0)!=(q|0)?(r=q+ -1|0,r>>>0>p>>>0):0){s=p;do{y=a[s>>0]|0;a[s>>0]=a[r>>0]|0;a[r>>0]=y;s=s+1|0;r=r+ -1|0}while(s>>>0>>0)}u=md[c[(c[j>>2]|0)+16>>2]&127](j)|0;if(p>>>0>>0){r=l+1|0;s=l+4|0;t=l+8|0;x=0;w=0;v=p;while(1){y=a[((a[l>>0]&1)==0?r:c[t>>2]|0)+w>>0]|0;if(y<<24>>24>0&(x|0)==(y<<24>>24|0)){x=c[h>>2]|0;c[h>>2]=x+1;a[x>>0]=u;x=a[l>>0]|0;if(!(x&1))y=(x&255)>>>1;else y=c[s>>2]|0;x=0;w=(w>>>0<(y+ -1|0)>>>0&1)+w|0}z=vd[c[(c[m>>2]|0)+28>>2]&63](m,a[v>>0]|0)|0;y=c[h>>2]|0;c[h>>2]=y+1;a[y>>0]=z;v=v+1|0;if(v>>>0>=q>>>0)break;else x=x+1|0}}r=f+(p-b)|0;p=c[h>>2]|0;if((r|0)!=(p|0)?(o=p+ -1|0,o>>>0>r>>>0):0)do{z=a[r>>0]|0;a[r>>0]=a[o>>0]|0;a[o>>0]=z;r=r+1|0;o=o+ -1|0}while(r>>>0>>0)}else{sd[c[(c[m>>2]|0)+32>>2]&7](m,p,q,c[h>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+(q-p)}c:do if(q>>>0>>0){while(1){o=a[q>>0]|0;if(o<<24>>24==46)break;y=vd[c[(c[m>>2]|0)+28>>2]&63](m,o)|0;z=c[h>>2]|0;c[h>>2]=z+1;a[z>>0]=y;q=q+1|0;if(q>>>0>=e>>>0)break c}y=md[c[(c[j>>2]|0)+12>>2]&127](j)|0;z=c[h>>2]|0;c[h>>2]=z+1;a[z>>0]=y;q=q+1|0}while(0);sd[c[(c[m>>2]|0)+32>>2]&7](m,q,e,c[h>>2]|0)|0;m=(c[h>>2]|0)+(n-q)|0;c[h>>2]=m;if((d|0)!=(e|0))m=f+(d-b)|0;c[g>>2]=m;if(!(a[l>>0]&1)){i=k;return}Uq(c[l+8>>2]|0);i=k;return}function ll(b,d,e,f,g,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=+j;var 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;l=i;i=i+128|0;p=l;u=l+64|0;r=l+92|0;s=l+80|0;m=l+76|0;n=l+72|0;o=l+84|0;d=l+88|0;t=u;c[t>>2]=37;c[t+4>>2]=0;t=f+4|0;v=il(u+1|0,17808,c[t>>2]|0)|0;c[s>>2]=r;w=Dk()|0;if(v){c[p>>2]=c[f+8>>2];x=p+4|0;h[k>>3]=j;c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];w=cl(r,30,w,u,p)|0}else{h[k>>3]=j;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];w=cl(r,30,w,u,p)|0}if((w|0)>29){if(v){w=Dk()|0;c[p>>2]=c[f+8>>2];x=p+4|0;h[k>>3]=j;c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];w=jl(s,w,u,p)|0}else{w=Dk()|0;h[k>>3]=j;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];w=jl(s,w,u,p)|0}s=c[s>>2]|0;if(!s){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else v=s}else{v=r;s=0}u=v+w|0;t=c[t>>2]&176;do if((t|0)==32)t=u;else if((t|0)==16){t=a[v>>0]|0;if(t<<24>>24==43|t<<24>>24==45){t=v+1|0;break}if((w|0)>1&t<<24>>24==48?(x=a[v+1>>0]|0,x<<24>>24==88|x<<24>>24==120):0)t=v+2|0;else q=19}else q=19;while(0);if((q|0)==19)t=v;if((v|0)!=(r|0)){p=Tq(w<<1)|0;if(!p){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else{r=v;q=p}}else q=0;w=c[f+28>>2]|0;c[o>>2]=w;w=w+4|0;c[w>>2]=(c[w>>2]|0)+1;kl(r,t,u,p,m,n,o);o=c[o>>2]|0;w=o+4|0;x=c[w>>2]|0;c[w>>2]=x+ -1;if(!x)jd[c[(c[o>>2]|0)+8>>2]&255](o);Sg(d,c[e>>2]|0,p,c[m>>2]|0,c[n>>2]|0,f,g);c[b>>2]=c[d>>2];Uq(q);Uq(s);i=l;return}function ml(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 j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;i=i+80|0;k=j;m=j+60|0;d=j+40|0;a[m+0>>0]=a[17888]|0;a[m+1>>0]=a[17889]|0;a[m+2>>0]=a[17890]|0;a[m+3>>0]=a[17891]|0;a[m+4>>0]=a[17892]|0;a[m+5>>0]=a[17893]|0;n=Dk()|0;c[k>>2]=h;m=cl(d,20,n,m,k)|0;h=d+m|0;n=c[f+4>>2]&176;do if((n|0)==32)n=h;else if((n|0)==16){n=a[d>>0]|0;if(n<<24>>24==43|n<<24>>24==45){n=d+1|0;break}if((m|0)>1&n<<24>>24==48?(o=a[d+1>>0]|0,o<<24>>24==88|o<<24>>24==120):0)n=d+2|0;else l=7}else l=7;while(0);if((l|0)==7)n=d;l=c[f+28>>2]|0;o=l+4|0;c[o>>2]=(c[o>>2]|0)+1;o=Sn(l,19072)|0;q=l+4|0;p=c[q>>2]|0;c[q>>2]=p+ -1;if(!p)jd[c[(c[l>>2]|0)+8>>2]&255](l);sd[c[(c[o>>2]|0)+32>>2]&7](o,d,h,k)|0;l=k+m|0;if((n|0)==(h|0)){q=l;p=c[e>>2]|0;Sg(b,p,k,q,l,f,g);i=j;return}q=k+(n-d)|0;p=c[e>>2]|0;Sg(b,p,k,q,l,f,g);i=j;return}function nl(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function ol(a){a=a|0;return}function pl(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 j=0,k=0,l=0,m=0,n=0;j=i;i=i+32|0;l=j+16|0;m=j+12|0;k=j;if(!(c[f+4>>2]&1)){k=c[(c[d>>2]|0)+24>>2]|0;c[m>>2]=c[e>>2];n=h&1;c[l+0>>2]=c[m+0>>2];ud[k&31](b,d,l,f,g,n);i=j;return}d=c[f+28>>2]|0;l=d+4|0;c[l>>2]=(c[l>>2]|0)+1;l=Sn(d,19224)|0;g=d+4|0;n=c[g>>2]|0;c[g>>2]=n+ -1;if(!n)jd[c[(c[d>>2]|0)+8>>2]&255](d);d=c[l>>2]|0;if(h)kd[c[d+24>>2]&63](k,l);else kd[c[d+28>>2]&63](k,l);m=a[k>>0]|0;if(!(m&1)){h=k+4|0;d=h;l=k+8|0}else{l=k+8|0;d=c[l>>2]|0;h=k+4|0}while(1){g=(m&1)==0;if(g){f=h;m=(m&255)>>>1}else{f=c[l>>2]|0;m=c[h>>2]|0}if((d|0)==(f+(m<<2)|0))break;n=c[d>>2]|0;g=c[e>>2]|0;if(g){f=g+24|0;m=c[f>>2]|0;if((m|0)==(c[g+28>>2]|0))n=vd[c[(c[g>>2]|0)+52>>2]&63](g,n)|0;else{c[f>>2]=m+4;c[m>>2]=n}if((n|0)==-1)c[e>>2]=0}m=a[k>>0]|0;d=d+4|0}c[b>>2]=c[e>>2];if(g){i=j;return}Uq(c[k+8>>2]|0);i=j;return}function ql(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 j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;l=i;i=i+128|0;d=l;p=l+108|0;n=l+96|0;m=l+92|0;k=l+88|0;o=l+84|0;a[p+0>>0]=a[17880]|0;a[p+1>>0]=a[17881]|0;a[p+2>>0]=a[17882]|0;a[p+3>>0]=a[17883]|0;a[p+4>>0]=a[17884]|0;a[p+5>>0]=a[17885]|0;q=f+4|0;bl(p+1|0,17784,1,c[q>>2]|0);r=Dk()|0;c[d>>2]=h;p=cl(n,12,r,p,d)|0;h=n+p|0;q=c[q>>2]&176;do if((q|0)==16){q=a[n>>0]|0;if(q<<24>>24==43|q<<24>>24==45){p=n+1|0;break}if((p|0)>1&q<<24>>24==48?(r=a[n+1>>0]|0,r<<24>>24==88|r<<24>>24==120):0)p=n+2|0;else j=7}else if((q|0)==32)p=h;else j=7;while(0);if((j|0)==7)p=n;j=c[f+28>>2]|0;c[o>>2]=j;j=j+4|0;c[j>>2]=(c[j>>2]|0)+1;rl(n,p,h,d,m,k,o);j=c[o>>2]|0;q=j+4|0;r=c[q>>2]|0;c[q>>2]=r+ -1;if(r){p=c[e>>2]|0;q=c[m>>2]|0;r=c[k>>2]|0;sl(b,p,d,q,r,f,g);i=l;return}jd[c[(c[j>>2]|0)+8>>2]&255](j);p=c[e>>2]|0;q=c[m>>2]|0;r=c[k>>2]|0;sl(b,p,d,q,r,f,g);i=l;return}function rl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;l=i;i=i+16|0;k=l;n=Sn(c[j>>2]|0,19064)|0;p=Sn(c[j>>2]|0,19224)|0;kd[c[(c[p>>2]|0)+20>>2]&63](k,p);j=a[k>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[k+4>>2]|0;if(j){c[h>>2]=f;j=a[b>>0]|0;if(j<<24>>24==43|j<<24>>24==45){v=vd[c[(c[n>>2]|0)+44>>2]&63](n,j)|0;j=c[h>>2]|0;c[h>>2]=j+4;c[j>>2]=v;j=b+1|0}else j=b;if(((e-j|0)>1?(a[j>>0]|0)==48:0)?(q=j+1|0,v=a[q>>0]|0,v<<24>>24==88|v<<24>>24==120):0){v=vd[c[(c[n>>2]|0)+44>>2]&63](n,48)|0;u=c[h>>2]|0;c[h>>2]=u+4;c[u>>2]=v;u=vd[c[(c[n>>2]|0)+44>>2]&63](n,a[q>>0]|0)|0;v=c[h>>2]|0;c[h>>2]=v+4;c[v>>2]=u;j=j+2|0}if((j|0)!=(e|0)?(o=e+ -1|0,o>>>0>j>>>0):0){q=j;do{v=a[q>>0]|0;a[q>>0]=a[o>>0]|0;a[o>>0]=v;q=q+1|0;o=o+ -1|0}while(q>>>0>>0)}s=md[c[(c[p>>2]|0)+16>>2]&127](p)|0;if(j>>>0>>0){o=k+1|0;r=k+4|0;p=k+8|0;u=0;t=0;q=j;while(1){v=a[((a[k>>0]&1)==0?o:c[p>>2]|0)+t>>0]|0;if(v<<24>>24!=0&(u|0)==(v<<24>>24|0)){u=c[h>>2]|0;c[h>>2]=u+4;c[u>>2]=s;u=a[k>>0]|0;if(!(u&1))v=(u&255)>>>1;else v=c[r>>2]|0;u=0;t=(t>>>0<(v+ -1|0)>>>0&1)+t|0}x=vd[c[(c[n>>2]|0)+44>>2]&63](n,a[q>>0]|0)|0;w=c[h>>2]|0;v=w+4|0;c[h>>2]=v;c[w>>2]=x;q=q+1|0;if(q>>>0>=e>>>0)break;else u=u+1|0}}else v=c[h>>2]|0;n=f+(j-b<<2)|0;if((n|0)!=(v|0)?(m=v+ -4|0,m>>>0>n>>>0):0)do{x=c[n>>2]|0;c[n>>2]=c[m>>2];c[m>>2]=x;n=n+4|0;m=m+ -4|0}while(n>>>0>>0)}else{sd[c[(c[n>>2]|0)+48>>2]&7](n,b,e,f)|0;v=f+(e-b<<2)|0;c[h>>2]=v}if((d|0)!=(e|0))v=f+(d-b<<2)|0;c[g>>2]=v;if(!(a[k>>0]&1)){i=l;return}Uq(c[k+8>>2]|0);i=l;return}function sl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;k=i;i=i+16|0;l=k;if(!d){c[b>>2]=0;i=k;return}p=e;n=g-p>>2;h=h+12|0;m=c[h>>2]|0;n=(m|0)>(n|0)?m-n|0:0;m=f;p=m-p|0;o=p>>2;if((p|0)>0?(fd[c[(c[d>>2]|0)+48>>2]&31](d,e,o)|0)!=(o|0):0){c[b>>2]=0;i=k;return}do if((n|0)>0){Si(l,n,j);if(!(a[l>>0]&1))e=l+4|0;else e=c[l+8>>2]|0;if((fd[c[(c[d>>2]|0)+48>>2]&31](d,e,n)|0)==(n|0)){if(!(a[l>>0]&1))break;Uq(c[l+8>>2]|0);break}c[b>>2]=0;if(!(a[l>>0]&1)){i=k;return}Uq(c[l+8>>2]|0);i=k;return}while(0);p=g-m|0;l=p>>2;if((p|0)>0?(fd[c[(c[d>>2]|0)+48>>2]&31](d,f,l)|0)!=(l|0):0){c[b>>2]=0;i=k;return}c[h>>2]=0;c[b>>2]=d;i=k;return}function tl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;k=i;i=i+208|0;m=k+8|0;r=k;p=k+184|0;n=k+180|0;d=k+176|0;o=k+172|0;q=r;c[q>>2]=37;c[q+4>>2]=0;q=f+4|0;bl(r+1|0,17792,1,c[q>>2]|0);s=Dk()|0;t=m;c[t>>2]=h;c[t+4>>2]=j;h=cl(p,22,s,r,m)|0;j=p+h|0;q=c[q>>2]&176;do if((q|0)==16){q=a[p>>0]|0;if(q<<24>>24==43|q<<24>>24==45){h=p+1|0;break}if((h|0)>1&q<<24>>24==48?(t=a[p+1>>0]|0,t<<24>>24==88|t<<24>>24==120):0)h=p+2|0;else l=7}else if((q|0)==32)h=j;else l=7;while(0);if((l|0)==7)h=p;l=c[f+28>>2]|0;c[o>>2]=l;l=l+4|0;c[l>>2]=(c[l>>2]|0)+1;rl(p,h,j,m,n,d,o);l=c[o>>2]|0;s=l+4|0;t=c[s>>2]|0;c[s>>2]=t+ -1;if(t){r=c[e>>2]|0;s=c[n>>2]|0;t=c[d>>2]|0;sl(b,r,m,s,t,f,g);i=k;return}jd[c[(c[l>>2]|0)+8>>2]&255](l);r=c[e>>2]|0;s=c[n>>2]|0;t=c[d>>2]|0;sl(b,r,m,s,t,f,g);i=k;return}function ul(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 j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;l=i;i=i+128|0;d=l;p=l+108|0;n=l+96|0;m=l+92|0;k=l+88|0;o=l+84|0;a[p+0>>0]=a[17880]|0;a[p+1>>0]=a[17881]|0;a[p+2>>0]=a[17882]|0;a[p+3>>0]=a[17883]|0;a[p+4>>0]=a[17884]|0;a[p+5>>0]=a[17885]|0;q=f+4|0;bl(p+1|0,17784,0,c[q>>2]|0);r=Dk()|0;c[d>>2]=h;p=cl(n,12,r,p,d)|0;h=n+p|0;q=c[q>>2]&176;do if((q|0)==16){q=a[n>>0]|0;if(q<<24>>24==43|q<<24>>24==45){p=n+1|0;break}if((p|0)>1&q<<24>>24==48?(r=a[n+1>>0]|0,r<<24>>24==88|r<<24>>24==120):0)p=n+2|0;else j=7}else if((q|0)==32)p=h;else j=7;while(0);if((j|0)==7)p=n;j=c[f+28>>2]|0;c[o>>2]=j;j=j+4|0;c[j>>2]=(c[j>>2]|0)+1;rl(n,p,h,d,m,k,o);j=c[o>>2]|0;q=j+4|0;r=c[q>>2]|0;c[q>>2]=r+ -1;if(r){p=c[e>>2]|0;q=c[m>>2]|0;r=c[k>>2]|0;sl(b,p,d,q,r,f,g);i=l;return}jd[c[(c[j>>2]|0)+8>>2]&255](j);p=c[e>>2]|0;q=c[m>>2]|0;r=c[k>>2]|0;sl(b,p,d,q,r,f,g);i=l;return}function vl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;k=i;i=i+224|0;m=k+8|0;r=k;p=k+192|0;n=k+188|0;d=k+184|0;o=k+180|0;q=r;c[q>>2]=37;c[q+4>>2]=0;q=f+4|0;bl(r+1|0,17792,0,c[q>>2]|0);s=Dk()|0;t=m;c[t>>2]=h;c[t+4>>2]=j;h=cl(p,23,s,r,m)|0;j=p+h|0;q=c[q>>2]&176;do if((q|0)==16){q=a[p>>0]|0;if(q<<24>>24==43|q<<24>>24==45){h=p+1|0;break}if((h|0)>1&q<<24>>24==48?(t=a[p+1>>0]|0,t<<24>>24==88|t<<24>>24==120):0)h=p+2|0;else l=7}else if((q|0)==32)h=j;else l=7;while(0);if((l|0)==7)h=p;l=c[f+28>>2]|0;c[o>>2]=l;l=l+4|0;c[l>>2]=(c[l>>2]|0)+1;rl(p,h,j,m,n,d,o);l=c[o>>2]|0;s=l+4|0;t=c[s>>2]|0;c[s>>2]=t+ -1;if(t){r=c[e>>2]|0;s=c[n>>2]|0;t=c[d>>2]|0;sl(b,r,m,s,t,f,g);i=k;return}jd[c[(c[l>>2]|0)+8>>2]&255](l);r=c[e>>2]|0;s=c[n>>2]|0;t=c[d>>2]|0;sl(b,r,m,s,t,f,g);i=k;return}function wl(b,d,e,f,g,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=+j;var 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;m=i;i=i+304|0;p=m;u=m+232|0;r=m+260|0;s=m+248|0;n=m+244|0;l=m+240|0;o=m+252|0;d=m+256|0;t=u;c[t>>2]=37;c[t+4>>2]=0;t=f+4|0;v=il(u+1|0,17800,c[t>>2]|0)|0;c[s>>2]=r;w=Dk()|0;if(v){c[p>>2]=c[f+8>>2];x=p+4|0;h[k>>3]=j;c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];w=cl(r,30,w,u,p)|0}else{h[k>>3]=j;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];w=cl(r,30,w,u,p)|0}if((w|0)>29){if(v){w=Dk()|0;c[p>>2]=c[f+8>>2];x=p+4|0;h[k>>3]=j;c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];w=jl(s,w,u,p)|0}else{w=Dk()|0;c[p>>2]=c[f+8>>2];x=p+4|0;h[k>>3]=j;c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];w=jl(s,w,u,p)|0}s=c[s>>2]|0;if(!s){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else u=s}else{u=r;s=0}v=u+w|0;t=c[t>>2]&176;do if((t|0)==16){t=a[u>>0]|0;if(t<<24>>24==43|t<<24>>24==45){t=u+1|0;break}if((w|0)>1&t<<24>>24==48?(x=a[u+1>>0]|0,x<<24>>24==88|x<<24>>24==120):0)t=u+2|0;else q=19}else if((t|0)==32)t=v;else q=19;while(0);if((q|0)==19)t=u;if((u|0)!=(r|0)){p=Tq(w<<3)|0;if(!p){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else{r=u;q=p}}else q=0;w=c[f+28>>2]|0;c[o>>2]=w;w=w+4|0;c[w>>2]=(c[w>>2]|0)+1;xl(r,t,v,p,n,l,o);o=c[o>>2]|0;w=o+4|0;x=c[w>>2]|0;c[w>>2]=x+ -1;if(!x)jd[c[(c[o>>2]|0)+8>>2]&255](o);sl(d,c[e>>2]|0,p,c[n>>2]|0,c[l>>2]|0,f,g);x=c[d>>2]|0;c[e>>2]=x;c[b>>2]=x;if(!q){Uq(s);i=m;return}Uq(q);Uq(s);i=m;return}function xl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;l=i;i=i+16|0;k=l;m=Sn(c[j>>2]|0,19064)|0;n=Sn(c[j>>2]|0,19224)|0;kd[c[(c[n>>2]|0)+20>>2]&63](k,n);c[h>>2]=f;j=a[b>>0]|0;if(j<<24>>24==43|j<<24>>24==45){y=vd[c[(c[m>>2]|0)+44>>2]&63](m,j)|0;t=c[h>>2]|0;c[h>>2]=t+4;c[t>>2]=y;t=b+1|0}else t=b;j=e;a:do if(((j-t|0)>1?(a[t>>0]|0)==48:0)?(p=t+1|0,y=a[p>>0]|0,y<<24>>24==88|y<<24>>24==120):0){y=vd[c[(c[m>>2]|0)+44>>2]&63](m,48)|0;x=c[h>>2]|0;c[h>>2]=x+4;c[x>>2]=y;t=t+2|0;x=vd[c[(c[m>>2]|0)+44>>2]&63](m,a[p>>0]|0)|0;y=c[h>>2]|0;c[h>>2]=y+4;c[y>>2]=x;if(t>>>0>>0){q=t;while(1){y=a[q>>0]|0;Dk()|0;y=y<<24>>24;if((y+ -48|0)>>>0>=10?((y|32)+ -97|0)>>>0>=6:0){p=t;break a}q=q+1|0;if(q>>>0>=e>>>0){p=t;break}}}else{p=t;q=t}}else s=5;while(0);b:do if((s|0)==5)if(t>>>0>>0){q=t;while(1){y=a[q>>0]|0;Dk()|0;s=q+1|0;if(((y<<24>>24)+ -48|0)>>>0>=10){p=t;break b}if(s>>>0>>0)q=s;else{p=t;q=s;break}}}else{p=t;q=t}while(0);s=a[k>>0]|0;if(!(s&1))s=(s&255)>>>1;else s=c[k+4>>2]|0;if(s){if((p|0)!=(q|0)?(r=q+ -1|0,r>>>0>p>>>0):0){s=p;do{y=a[s>>0]|0;a[s>>0]=a[r>>0]|0;a[r>>0]=y;s=s+1|0;r=r+ -1|0}while(s>>>0>>0)}t=md[c[(c[n>>2]|0)+16>>2]&127](n)|0;if(p>>>0>>0){r=k+1|0;s=k+4|0;v=k+8|0;x=0;w=0;u=p;while(1){y=a[((a[k>>0]&1)==0?r:c[v>>2]|0)+w>>0]|0;if(y<<24>>24>0&(x|0)==(y<<24>>24|0)){x=c[h>>2]|0;c[h>>2]=x+4;c[x>>2]=t;x=a[k>>0]|0;if(!(x&1))y=(x&255)>>>1;else y=c[s>>2]|0;x=0;w=(w>>>0<(y+ -1|0)>>>0&1)+w|0}A=vd[c[(c[m>>2]|0)+44>>2]&63](m,a[u>>0]|0)|0;z=c[h>>2]|0;y=z+4|0;c[h>>2]=y;c[z>>2]=A;u=u+1|0;if(u>>>0>=q>>>0)break;else x=x+1|0}}else y=c[h>>2]|0;p=f+(p-b<<2)|0;if((p|0)!=(y|0)?(o=y+ -4|0,o>>>0>p>>>0):0)do{A=c[p>>2]|0;c[p>>2]=c[o>>2];c[o>>2]=A;p=p+4|0;o=o+ -4|0}while(p>>>0>>0)}else{sd[c[(c[m>>2]|0)+48>>2]&7](m,p,q,c[h>>2]|0)|0;y=(c[h>>2]|0)+(q-p<<2)|0;c[h>>2]=y}c:do if(q>>>0>>0){while(1){o=a[q>>0]|0;if(o<<24>>24==46)break;z=vd[c[(c[m>>2]|0)+44>>2]&63](m,o)|0;A=c[h>>2]|0;y=A+4|0;c[h>>2]=y;c[A>>2]=z;q=q+1|0;if(q>>>0>=e>>>0)break c}z=md[c[(c[n>>2]|0)+12>>2]&127](n)|0;A=c[h>>2]|0;y=A+4|0;c[h>>2]=y;c[A>>2]=z;q=q+1|0}while(0);sd[c[(c[m>>2]|0)+48>>2]&7](m,q,e,y)|0;m=(c[h>>2]|0)+(j-q<<2)|0;c[h>>2]=m;if((d|0)!=(e|0))m=f+(d-b<<2)|0;c[g>>2]=m;if(!(a[k>>0]&1)){i=l;return}Uq(c[k+8>>2]|0);i=l;return}function yl(b,d,e,f,g,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=+j;var 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;m=i;i=i+304|0;p=m;u=m+232|0;r=m+260|0;s=m+248|0;n=m+244|0;l=m+240|0;o=m+252|0;d=m+256|0;t=u;c[t>>2]=37;c[t+4>>2]=0;t=f+4|0;v=il(u+1|0,17808,c[t>>2]|0)|0;c[s>>2]=r;w=Dk()|0;if(v){c[p>>2]=c[f+8>>2];x=p+4|0;h[k>>3]=j;c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];w=cl(r,30,w,u,p)|0}else{h[k>>3]=j;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];w=cl(r,30,w,u,p)|0}if((w|0)>29){if(v){w=Dk()|0;c[p>>2]=c[f+8>>2];x=p+4|0;h[k>>3]=j;c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];w=jl(s,w,u,p)|0}else{w=Dk()|0;h[k>>3]=j;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];w=jl(s,w,u,p)|0}s=c[s>>2]|0;if(!s){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else u=s}else{u=r;s=0}v=u+w|0;t=c[t>>2]&176;do if((t|0)==16){t=a[u>>0]|0;if(t<<24>>24==43|t<<24>>24==45){t=u+1|0;break}if((w|0)>1&t<<24>>24==48?(x=a[u+1>>0]|0,x<<24>>24==88|x<<24>>24==120):0)t=u+2|0;else q=19}else if((t|0)==32)t=v;else q=19;while(0);if((q|0)==19)t=u;if((u|0)!=(r|0)){p=Tq(w<<3)|0;if(!p){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else{r=u;q=p}}else q=0;w=c[f+28>>2]|0;c[o>>2]=w;w=w+4|0;c[w>>2]=(c[w>>2]|0)+1;xl(r,t,v,p,n,l,o);o=c[o>>2]|0;w=o+4|0;x=c[w>>2]|0;c[w>>2]=x+ -1;if(!x)jd[c[(c[o>>2]|0)+8>>2]&255](o);sl(d,c[e>>2]|0,p,c[n>>2]|0,c[l>>2]|0,f,g);x=c[d>>2]|0;c[e>>2]=x;c[b>>2]=x;if(!q){Uq(s);i=m;return}Uq(q);Uq(s);i=m;return}function zl(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 j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;i=i+176|0;k=j;m=j+168|0;d=j+148|0;a[m+0>>0]=a[17888]|0;a[m+1>>0]=a[17889]|0;a[m+2>>0]=a[17890]|0;a[m+3>>0]=a[17891]|0;a[m+4>>0]=a[17892]|0;a[m+5>>0]=a[17893]|0;n=Dk()|0;c[k>>2]=h;m=cl(d,20,n,m,k)|0;h=d+m|0;n=c[f+4>>2]&176;do if((n|0)==16){n=a[d>>0]|0;if(n<<24>>24==43|n<<24>>24==45){n=d+1|0;break}if((m|0)>1&n<<24>>24==48?(o=a[d+1>>0]|0,o<<24>>24==88|o<<24>>24==120):0)n=d+2|0;else l=7}else if((n|0)==32)n=h;else l=7;while(0);if((l|0)==7)n=d;l=c[f+28>>2]|0;o=l+4|0;c[o>>2]=(c[o>>2]|0)+1;o=Sn(l,19064)|0;q=l+4|0;p=c[q>>2]|0;c[q>>2]=p+ -1;if(!p)jd[c[(c[l>>2]|0)+8>>2]&255](l);sd[c[(c[o>>2]|0)+48>>2]&7](o,d,h,k)|0;l=k+(m<<2)|0;if((n|0)==(h|0)){q=l;p=c[e>>2]|0;sl(b,p,k,q,l,f,g);i=j;return}q=k+(n-d<<2)|0;p=c[e>>2]|0;sl(b,p,k,q,l,f,g);i=j;return}function Al(e,f,g,h,j,k,l,m,n){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;o=i;i=i+32|0;t=o+16|0;q=o+12|0;w=o+8|0;s=o+4|0;r=o;x=c[j+28>>2]|0;v=x+4|0;c[v>>2]=(c[v>>2]|0)+1;v=Sn(x,19072)|0;C=x+4|0;D=c[C>>2]|0;c[C>>2]=D+ -1;if(!D)jd[c[(c[x>>2]|0)+8>>2]&255](x);c[k>>2]=0;a:do if((m|0)!=(n|0)){x=v+8|0;y=0;b:while(1){z=y;y=g;while(1){if(z){g=y;break a}if(y)if((c[y+12>>2]|0)==(c[y+16>>2]|0)){D=(md[c[(c[y>>2]|0)+36>>2]&127](y)|0)==-1;g=D?0:y;y=D?0:y}else g=y;else{g=0;y=0}z=(g|0)==0;do if(h){if((c[h+12>>2]|0)==(c[h+16>>2]|0)?(md[c[(c[h>>2]|0)+36>>2]&127](h)|0)==-1:0){p=15;break}if(!z){p=16;break b}}else p=15;while(0);if((p|0)==15){p=0;if(z){h=0;p=16;break b}else h=0}if((fd[c[(c[v>>2]|0)+36>>2]&31](v,a[m>>0]|0,0)|0)<<24>>24==37){p=18;break}z=a[m>>0]|0;if(z<<24>>24>-1?(u=c[x>>2]|0,(b[u+(z<<24>>24<<1)>>1]&8192)!=0):0){p=29;break}A=g+12|0;B=c[A>>2]|0;z=g+16|0;if((B|0)==(c[z>>2]|0))B=md[c[(c[g>>2]|0)+36>>2]&127](g)|0;else B=d[B>>0]|0;D=vd[c[(c[v>>2]|0)+12>>2]&63](v,B&255)|0;if(D<<24>>24==(vd[c[(c[v>>2]|0)+12>>2]&63](v,a[m>>0]|0)|0)<<24>>24){p=54;break}c[k>>2]=4;z=4}c:do if((p|0)==18){p=0;z=m+1|0;if((z|0)==(n|0)){p=19;break b}y=fd[c[(c[v>>2]|0)+36>>2]&31](v,a[z>>0]|0,0)|0;if(y<<24>>24==48|y<<24>>24==69){z=m+2|0;if((z|0)==(n|0)){p=22;break b}m=z;z=fd[c[(c[v>>2]|0)+36>>2]&31](v,a[z>>0]|0,0)|0}else{m=z;z=y;y=0}D=c[(c[f>>2]|0)+36>>2]|0;c[s>>2]=g;c[r>>2]=h;c[q+0>>2]=c[s+0>>2];c[t+0>>2]=c[r+0>>2];ld[D&3](w,f,q,t,j,k,l,z,y);m=m+1|0;g=c[w>>2]|0}else if((p|0)==29){while(1){p=0;m=m+1|0;if((m|0)==(n|0)){m=n;break}z=a[m>>0]|0;if(z<<24>>24<=-1)break;if(!(b[u+(z<<24>>24<<1)>>1]&8192))break;else p=29}B=h;A=h;while(1){if(g){if((c[g+12>>2]|0)==(c[g+16>>2]|0)){D=(md[c[(c[g>>2]|0)+36>>2]&127](g)|0)==-1;g=D?0:g;y=D?0:y}}else g=0;C=(g|0)==0;do if(A){if((c[A+12>>2]|0)!=(c[A+16>>2]|0))if(C){z=B;break}else{g=y;break c}if((md[c[(c[A>>2]|0)+36>>2]&127](A)|0)!=-1)if(C^(B|0)==0){z=B;A=B}else{g=y;break c}else{z=0;h=0;p=40}}else{z=B;p=40}while(0);if((p|0)==40){p=0;if(C){g=y;break c}else A=0}C=g+12|0;D=c[C>>2]|0;B=g+16|0;if((D|0)==(c[B>>2]|0))D=md[c[(c[g>>2]|0)+36>>2]&127](g)|0;else D=d[D>>0]|0;if((D&255)<<24>>24<=-1){g=y;break c}if(!(b[(c[x>>2]|0)+(D<<24>>24<<1)>>1]&8192)){g=y;break c}D=c[C>>2]|0;if((D|0)==(c[B>>2]|0)){md[c[(c[g>>2]|0)+40>>2]&127](g)|0;B=z;continue}else{c[C>>2]=D+1;B=z;continue}}}else if((p|0)==54){p=0;B=c[A>>2]|0;if((B|0)==(c[z>>2]|0))md[c[(c[g>>2]|0)+40>>2]&127](g)|0;else c[A>>2]=B+1;m=m+1|0;g=y}while(0);if((m|0)==(n|0))break a;y=c[k>>2]|0}if((p|0)==16){c[k>>2]=4;break}else if((p|0)==19){c[k>>2]=4;break}else if((p|0)==22){c[k>>2]=4;break}}while(0);if(g){if((c[g+12>>2]|0)==(c[g+16>>2]|0)){D=(md[c[(c[g>>2]|0)+36>>2]&127](g)|0)==-1;g=D?0:g}}else g=0;l=(g|0)==0;do if(h){if((c[h+12>>2]|0)==(c[h+16>>2]|0)?(md[c[(c[h>>2]|0)+36>>2]&127](h)|0)==-1:0){p=66;break}if(l){c[e>>2]=g;i=o;return}}else p=66;while(0);if((p|0)==66?!l:0){c[e>>2]=g;i=o;return}c[k>>2]=c[k>>2]|2;c[e>>2]=g;i=o;return}function Bl(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Cl(a){a=a|0;return}function Dl(a){a=a|0;return 2}function El(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 j=0;j=i;Al(a,b,c[d>>2]|0,c[e>>2]|0,f,g,h,17992,18e3|0);i=j;return}function Fl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0;k=i;m=d+8|0;m=md[c[(c[m>>2]|0)+20>>2]&127](m)|0;n=a[m>>0]|0;if(!(n&1)){l=m+1|0;m=(n&255)>>>1}else{l=c[m+8>>2]|0;m=c[m+4>>2]|0}Al(b,d,c[e>>2]|0,c[f>>2]|0,g,h,j,l,l+m|0);i=k;return}function Gl(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 j=0,k=0,l=0,m=0;j=i;k=c[f+28>>2]|0;f=k+4|0;c[f>>2]=(c[f>>2]|0)+1;f=Sn(k,19072)|0;m=k+4|0;l=c[m>>2]|0;c[m>>2]=l+ -1;if(!l)jd[c[(c[k>>2]|0)+8>>2]&255](k);Hl(b,h+24|0,d,c[e>>2]|0,g,f);c[a>>2]=c[d>>2];i=j;return}function Hl(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;h=i;a=a+8|0;a=md[c[c[a>>2]>>2]&127](a)|0;f=(qk(d,e,a,a+168|0,g,f,0)|0)-a|0;if((f|0)>=168){i=h;return}c[b>>2]=((f|0)/12|0|0)%7|0;i=h;return}function Il(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 j=0,k=0,l=0,m=0;j=i;k=c[f+28>>2]|0;f=k+4|0;c[f>>2]=(c[f>>2]|0)+1;f=Sn(k,19072)|0;m=k+4|0;l=c[m>>2]|0;c[m>>2]=l+ -1;if(!l)jd[c[(c[k>>2]|0)+8>>2]&255](k);Jl(b,h+16|0,d,c[e>>2]|0,g,f);c[a>>2]=c[d>>2];i=j;return}function Jl(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;h=i;a=a+8|0;a=md[c[(c[a>>2]|0)+4>>2]&127](a)|0;f=(qk(d,e,a,a+288|0,g,f,0)|0)-a|0;if((f|0)>=288){i=h;return}c[b>>2]=((f|0)/12|0|0)%12|0;i=h;return}function Kl(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 j=0,k=0,l=0;b=i;j=c[f+28>>2]|0;f=j+4|0;c[f>>2]=(c[f>>2]|0)+1;f=Sn(j,19072)|0;l=j+4|0;k=c[l>>2]|0;c[l>>2]=k+ -1;if(!k)jd[c[(c[j>>2]|0)+8>>2]&255](j);Ll(h+20|0,d,c[e>>2]|0,g,f);c[a>>2]=c[d>>2];i=b;return}function Ll(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=i;f=Nl(b,d,e,f,4)|0;if(c[e>>2]&4){i=g;return}if((f|0)<69)e=f+2e3|0;else e=(f+ -69|0)>>>0<31?f+1900|0:f;c[a>>2]=e+ -1900;i=g;return} - - - -function yd(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+15&-16;return b|0}function zd(){return i|0}function Ad(a){a=a|0;i=a}function Bd(a,b){a=a|0;b=b|0;if(!s){s=a;t=b}}function Cd(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0]}function Dd(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[k+4>>0]=a[b+4>>0];a[k+5>>0]=a[b+5>>0];a[k+6>>0]=a[b+6>>0];a[k+7>>0]=a[b+7>>0]}function Ed(a){a=a|0;H=a}function Fd(){return H|0}function Gd(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,j=0,l=0,m=0,n=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,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0;g=i;i=i+224|0;s=g+24|0;q=g+80|0;m=g+200|0;j=g+184|0;l=g+104|0;C=g+216|0;B=g+88|0;y=g;t=Rg(14024,10064,9)|0;a[m>>0]=0;c[m+4>>2]=t;v=c[(c[t>>2]|0)+ -12>>2]|0;do if(!(c[t+(v+16)>>2]|0)){v=c[t+(v+72)>>2]|0;if(v)Fj(v);a[m>>0]=1;D=c[t+((c[(c[t>>2]|0)+ -12>>2]|0)+28)>>2]|0;x=D+4|0;c[x>>2]=(c[x>>2]|0)+1;w=Rn(17776)|0;v=c[D+8>>2]|0;if((c[D+12>>2]|0)-v>>2>>>0>w>>>0?(r=c[v+(w<<2)>>2]|0,(r|0)!=0):0){L=c[x>>2]|0;c[x>>2]=L+ -1;if(!L)jd[c[(c[D>>2]|0)+8>>2]&255](D);E=c[(c[t>>2]|0)+ -12>>2]|0;w=c[t+(E+24)>>2]|0;v=t+E|0;x=t+(E+76)|0;D=c[x>>2]|0;do if((D|0)==-1){D=c[t+(E+28)>>2]|0;E=D+4|0;c[E>>2]=(c[E>>2]|0)+1;F=Rn(19072)|0;G=c[D+8>>2]|0;if((c[D+12>>2]|0)-G>>2>>>0>F>>>0?(u=c[G+(F<<2)>>2]|0,(u|0)!=0):0){u=vd[c[(c[u>>2]|0)+28>>2]&63](u,32)|0;L=c[E>>2]|0;c[E>>2]=L+ -1;if(!L)jd[c[(c[D>>2]|0)+8>>2]&255](D);D=u<<24>>24;c[x>>2]=D;break}L=Wb(4)|0;c[L>>2]=27744;Zc(L|0,27816,228)}while(0);L=D&255;K=c[(c[r>>2]|0)+24>>2]|0;c[q>>2]=w;c[s+0>>2]=c[q+0>>2];ud[K&31](j,r,s,v,L,f);if(c[j>>2]|0)break;L=c[(c[t>>2]|0)+ -12>>2]|0;Zi(t+L|0,c[t+(L+16)>>2]|5);break}L=Wb(4)|0;c[L>>2]=27744;Zc(L|0,27816,228)}while(0);Qj(m);r=Rg(t,10080,6)|0;t=c[r+((c[(c[r>>2]|0)+ -12>>2]|0)+28)>>2]|0;u=t+4|0;c[u>>2]=(c[u>>2]|0)+1;w=Rn(19072)|0;v=c[t+8>>2]|0;if((c[t+12>>2]|0)-v>>2>>>0>w>>>0?(p=c[v+(w<<2)>>2]|0,(p|0)!=0):0){p=vd[c[(c[p>>2]|0)+28>>2]&63](p,10)|0;L=c[u>>2]|0;c[u>>2]=L+ -1;if(!L)jd[c[(c[t>>2]|0)+8>>2]&255](t);a[s>>0]=0;c[s+4>>2]=r;t=c[(c[r>>2]|0)+ -12>>2]|0;do if(!(c[r+(t+16)>>2]|0)){t=c[r+(t+72)>>2]|0;if(t)Fj(t);a[s>>0]=1;u=c[(c[r>>2]|0)+ -12>>2]|0;t=c[r+(u+24)>>2]|0;if(t){u=t+24|0;v=c[u>>2]|0;if((v|0)!=(c[t+28>>2]|0)){c[u>>2]=v+1;a[v>>0]=p;break}if((vd[c[(c[t>>2]|0)+52>>2]&63](t,p&255)|0)!=-1)break;u=c[(c[r>>2]|0)+ -12>>2]|0}Zi(r+u|0,c[r+(u+16)>>2]|1)}while(0);Qj(s);Fj(r);p=Tq(20)|0;a:do if(!p){while(1){p=c[6860]|0;c[6860]=p+0;if(!p)break;qd[p&3]();p=Tq(20)|0;if(p)break a}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[p>>2]=e;c[p+4>>2]=f;c[p+8>>2]=0;a[p+12>>0]=0;a[p+13>>0]=0;c[p+16>>2]=0;e=Tq(16)|0;b:do if(!e){while(1){f=c[6860]|0;c[6860]=f+0;if(!f)break;qd[f&3]();e=Tq(16)|0;if(e)break b}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[e+4>>2]=0;c[e+8>>2]=0;c[e>>2]=12e3;c[e+12>>2]=p;c[b>>2]=p;L=b+4|0;f=c[L>>2]|0;c[L>>2]=e;if(f){K=f+4|0;L=c[K>>2]|0;c[K>>2]=L+ -1;if((L|0)==0?(jd[c[(c[f>>2]|0)+8>>2]&255](f),K=f+8|0,L=c[K>>2]|0,c[K>>2]=L+ -1,(L|0)==0):0)jd[c[(c[f>>2]|0)+16>>2]&255](f);p=c[b>>2]|0}f=Tq(352)|0;c:do if(!f){while(1){f=c[6860]|0;c[6860]=f+0;if(!f)break;qd[f&3]();f=Tq(352)|0;if(f)break c}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[f>>2]=p;c[f+4>>2]=p;e=f+8|0;c[e>>2]=0;p=f+12|0;c[p>>2]=0;w=Tq(1048644)|0;x=w+68&-64;c[x+ -4>>2]=w;c[f+16>>2]=x;x=f+279|0;a[x>>0]=0;a[x+1>>0]=0;w=f+281|0;a[w>>0]=0;a[w+1>>0]=0;a[w+2>>0]=0;a[w+3>>0]=0;t=f+288|0;r=f+292|0;v=f+300|0;u=f+304|0;F=f+344|0;D=t+0|0;E=D+56|0;do{c[D>>2]=0;D=D+4|0}while((D|0)<(E|0));D=F;c[D>>2]=-1;c[D+4>>2]=-1;D=c[f>>2]|0;E=D+13|0;if(!(a[E>>0]|0)){L=D+4|0;I=D+8|0;K=c[I>>2]|0;J=(c[L>>2]|0)-K|0;J=(J|0)<4?J:4;pr(C|0,(c[D>>2]|0)+K|0,J|0)|0;K=(c[I>>2]|0)+J|0;c[I>>2]=K;c[D+16>>2]=J;if((K|0)>=(c[L>>2]|0))a[E>>0]=1}else a[D+12>>0]=1;a[B>>0]=8;a[B+1>>0]=a[C>>0]|0;a[B+2>>0]=a[C+1>>0]|0;a[B+3>>0]=a[C+2>>0]|0;a[B+4>>0]=a[C+3>>0]|0;a[B+(C+(4-C))+1>>0]=0;C=(Qi(B,10088)|0)==0;if(a[B>>0]&1)Uq(c[B+8>>2]|0);if(!C){b=Wb(8)|0;c[b>>2]=27520;g=b+4|0;j=Tq(36)|0;d:do if(!j){while(1){j=c[6860]|0;c[6860]=j+0;if(!j)break;qd[j&3]();j=Tq(36)|0;if(j)break d}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[j>>2]=23;c[j+4>>2]=23;c[j+8>>2]=0;j=j+12|0;D=j+0|0;y=11664;E=D+24|0;do{a[D>>0]=a[y>>0]|0;D=D+1|0;y=y+1|0}while((D|0)<(E|0));c[g>>2]=j;c[b>>2]=11696;Zc(b|0,10128,115)}B=c[f>>2]|0;if((c[B+4>>2]|0)>0)c[B+8>>2]=0;else a[B+12>>0]=1;D=c[f>>2]|0;B=f+20|0;C=D+13|0;if(!(a[C>>0]|0)){L=D+4|0;I=D+8|0;K=c[I>>2]|0;J=(c[L>>2]|0)-K|0;J=(J|0)<227?J:227;pr(B|0,(c[D>>2]|0)+K|0,J|0)|0;K=(c[I>>2]|0)+J|0;c[I>>2]=K;c[D+16>>2]=J;if((K|0)>=(c[L>>2]|0))a[C>>0]=1}else a[D+12>>0]=1;F=f+199|0;a[k>>0]=a[F>>0];a[k+1>>0]=a[F+1>>0];a[k+2>>0]=a[F+2>>0];a[k+3>>0]=a[F+3>>0];a[k+4>>0]=a[F+4>>0];a[k+5>>0]=a[F+5>>0];a[k+6>>0]=a[F+6>>0];a[k+7>>0]=a[F+7>>0];Q=+h[k>>3];I=f+207|0;a[k>>0]=a[I>>0];a[k+1>>0]=a[I+1>>0];a[k+2>>0]=a[I+2>>0];a[k+3>>0]=a[I+3>>0];a[k+4>>0]=a[I+4>>0];a[k+5>>0]=a[I+5>>0];a[k+6>>0]=a[I+6>>0];a[k+7>>0]=a[I+7>>0];R=+h[k>>3];K=f+215|0;a[k>>0]=a[K>>0];a[k+1>>0]=a[K+1>>0];a[k+2>>0]=a[K+2>>0];a[k+3>>0]=a[K+3>>0];a[k+4>>0]=a[K+4>>0];a[k+5>>0]=a[K+5>>0];a[k+6>>0]=a[K+6>>0];a[k+7>>0]=a[K+7>>0];O=+h[k>>3];G=f+223|0;a[k>>0]=a[G>>0];a[k+1>>0]=a[G+1>>0];a[k+2>>0]=a[G+2>>0];a[k+3>>0]=a[G+3>>0];a[k+4>>0]=a[G+4>>0];a[k+5>>0]=a[G+5>>0];a[k+6>>0]=a[G+6>>0];a[k+7>>0]=a[G+7>>0];P=+h[k>>3];J=f+231|0;a[k>>0]=a[J>>0];a[k+1>>0]=a[J+1>>0];a[k+2>>0]=a[J+2>>0];a[k+3>>0]=a[J+3>>0];a[k+4>>0]=a[J+4>>0];a[k+5>>0]=a[J+5>>0];a[k+6>>0]=a[J+6>>0];a[k+7>>0]=a[J+7>>0];M=+h[k>>3];L=f+239|0;a[k>>0]=a[L>>0];a[k+1>>0]=a[L+1>>0];a[k+2>>0]=a[L+2>>0];a[k+3>>0]=a[L+3>>0];a[k+4>>0]=a[L+4>>0];a[k+5>>0]=a[L+5>>0];a[k+6>>0]=a[L+6>>0];a[k+7>>0]=a[L+7>>0];N=+h[k>>3];h[k>>3]=R;a[F>>0]=a[k>>0];a[F+1>>0]=a[k+1>>0];a[F+2>>0]=a[k+2>>0];a[F+3>>0]=a[k+3>>0];a[F+4>>0]=a[k+4>>0];a[F+5>>0]=a[k+5>>0];a[F+6>>0]=a[k+6>>0];a[F+7>>0]=a[k+7>>0];h[k>>3]=Q;a[G>>0]=a[k>>0];a[G+1>>0]=a[k+1>>0];a[G+2>>0]=a[k+2>>0];a[G+3>>0]=a[k+3>>0];a[G+4>>0]=a[k+4>>0];a[G+5>>0]=a[k+5>>0];a[G+6>>0]=a[k+6>>0];a[G+7>>0]=a[k+7>>0];h[k>>3]=P;a[I>>0]=a[k>>0];a[I+1>>0]=a[k+1>>0];a[I+2>>0]=a[k+2>>0];a[I+3>>0]=a[k+3>>0];a[I+4>>0]=a[k+4>>0];a[I+5>>0]=a[k+5>>0];a[I+6>>0]=a[k+6>>0];a[I+7>>0]=a[k+7>>0];h[k>>3]=O;a[J>>0]=a[k>>0];a[J+1>>0]=a[k+1>>0];a[J+2>>0]=a[k+2>>0];a[J+3>>0]=a[k+3>>0];a[J+4>>0]=a[k+4>>0];a[J+5>>0]=a[k+5>>0];a[J+6>>0]=a[k+6>>0];a[J+7>>0]=a[k+7>>0];h[k>>3]=N;a[K>>0]=a[k>>0];a[K+1>>0]=a[k+1>>0];a[K+2>>0]=a[k+2>>0];a[K+3>>0]=a[k+3>>0];a[K+4>>0]=a[k+4>>0];a[K+5>>0]=a[k+5>>0];a[K+6>>0]=a[k+6>>0];a[K+7>>0]=a[k+7>>0];h[k>>3]=M;a[L>>0]=a[k>>0];a[L+1>>0]=a[k+1>>0];a[L+2>>0]=a[k+2>>0];a[L+3>>0]=a[k+3>>0];a[L+4>>0]=a[k+4>>0];a[L+5>>0]=a[k+5>>0];a[L+6>>0]=a[k+6>>0];a[L+7>>0]=a[k+7>>0];if((a[10976]|0)==0?(Fa(10976)|0)!=0:0){c[2740]=0;c[2741]=0;c[2742]=0;eb(238,10960,o|0)|0;Vc(10976)}if((a[11008]|0)==0?(Fa(11008)|0)!=0:0){eb(239,10984,o|0)|0;Vc(11008)}D=c[2740]|0;C=c[2741]|0;do if((D|0)==(C|0)){C=Cc(10984)|0;if(C){g=Wb(16)|0;do if(!(a[15688]|0)){if(!(Fa(15688)|0))break;c[3920]=15952;Vc(15688)}while(0);yi(g,C,15680,16040);Zc(g|0,15752,133)}D=c[2740]|0;do if((D|0)==(c[2741]|0)){C=s+16|0;c[C>>2]=s;c[s>>2]=11024;E=c[2742]|0;do if(D>>>0>>0){if(!D)D=0;else{c[D+16>>2]=D;L=c[C>>2]|0;kd[c[(c[L>>2]|0)+12>>2]&63](L,D);D=c[2741]|0}c[2741]=D+24}else{D=(E-D|0)/24|0;if(D>>>0<89478485){D=D<<1;D=(D|0)==0?1:D}else D=178956970;E=D*24|0;E=(E|0)==0?1:E;F=Tq(E)|0;e:do if(!F){while(1){F=c[6860]|0;c[6860]=F+0;if(!F)break;qd[F&3]();F=Tq(E)|0;if(F)break e}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);D=F+(D*24|0)|0;do if(F){E=c[C>>2]|0;if(!E){c[F+16>>2]=0;break}if((E|0)==(s|0)){c[F+16>>2]=F;kd[c[(c[s>>2]|0)+12>>2]&63](s,F);break}else{c[F+16>>2]=E;c[C>>2]=0;break}}while(0);E=F+24|0;G=c[2740]|0;I=c[2741]|0;do if((I|0)==(G|0)){c[2740]=F;c[2741]=E;c[2742]=D}else{do{J=F;F=F+ -24|0;K=I+ -8|0;I=I+ -24|0;L=c[K>>2]|0;do if(L)if((L|0)==(I|0)){c[J+ -8>>2]=F;L=c[K>>2]|0;kd[c[(c[L>>2]|0)+12>>2]&63](L,F);break}else{c[J+ -8>>2]=L;c[K>>2]=0;break}else c[J+ -8>>2]=0;while(0)}while((I|0)!=(G|0));G=c[2740]|0;I=c[2741]|0;c[2740]=F;c[2741]=E;c[2742]=D;if((I|0)==(G|0))break;do{D=c[I+ -8>>2]|0;I=I+ -24|0;do if((D|0)==(I|0))jd[c[(c[D>>2]|0)+16>>2]&255](D);else{if(!D)break;jd[c[(c[D>>2]|0)+20>>2]&255](D)}while(0)}while((I|0)!=(G|0))}while(0);if(!G)break;Uq(G)}while(0);C=c[C>>2]|0;if((C|0)==(s|0)){jd[c[(c[s>>2]|0)+16>>2]&255](s);break}if(!C)break;jd[c[(c[C>>2]|0)+20>>2]&255](C)}while(0);if(!(zb(10984)|0)){A=c[2740]|0;z=c[2741]|0;break}Ha(16064,16072,47,16144)}else{A=D;z=C}while(0);f:do if((A|0)!=(z|0)){C=y+16|0;while(1){D=A+16|0;E=c[D>>2]|0;if(!E){n=148;break}if((E|0)==(A|0)){c[C>>2]=y;D=c[D>>2]|0;kd[c[(c[D>>2]|0)+12>>2]&63](D,y);D=c[C>>2]|0}else{D=md[c[(c[E>>2]|0)+8>>2]&127](E)|0;c[C>>2]=D}if(!D)break;kd[c[(c[D>>2]|0)+24>>2]&63](D,B);D=c[C>>2]|0;do if((D|0)==(y|0))jd[c[(c[y>>2]|0)+16>>2]&255](y);else{if(!D)break;jd[c[(c[D>>2]|0)+20>>2]&255](D)}while(0);A=A+24|0;if((A|0)==(z|0))break f}if((n|0)==148)c[C>>2]=0;L=Wb(4)|0;c[L>>2]=10944;Zc(L|0,10920,105)}while(0);y=c[f>>2]|0;z=f+114|0;z=d[z>>0]|d[z+1>>0]<<8;L=c[y+4>>2]|0;K=((L|0)<0)<<31>>31;if(0<(K|0)|0==(K|0)&(z&65535)>>>0>>0)c[y+8>>2]=z&65535;else a[y+12>>0]=1;A=f+120|0;g:do if(d[A>>0]|d[A+1>>0]<<8|d[A+2>>0]<<16|d[A+3>>0]<<24){z=s+2|0;D=s+16|0;C=s+18|0;B=s+20|0;y=0;while(1){K=(c[f>>2]|0)+12|0;L=a[K>>0]|0;a[K>>0]=0;if(L<<24>>24)break g;F=c[f>>2]|0;E=F+13|0;if(a[E>>0]|0)break g;L=F+4|0;I=F+8|0;K=c[I>>2]|0;J=(c[L>>2]|0)-K|0;J=(J|0)<54?J:54;pr(s|0,(c[F>>2]|0)+K|0,J|0)|0;K=(c[I>>2]|0)+J|0;c[I>>2]=K;c[F+16>>2]=J;if((K|0)<(c[L>>2]|0)){F=z;E=10616}else{a[E>>0]=1;F=z;E=10616}while(1){if((a[F>>0]|0)!=(a[E>>0]|0))break;F=F+1|0;if((F|0)==(D|0)){n=174;break}else E=E+1|0}if((n|0)==174?(n=0,(d[C>>0]|d[C+1>>0]<<8)<<16>>16==22204):0)break;E=c[f>>2]|0;G=E+8|0;F=c[G>>2]|0;F=kr(F|0,((F|0)<0)<<31>>31|0,(d[B>>0]|d[B+1>>0]<<8)&65535|0,0)|0;L=H;K=c[E+4>>2]|0;J=((K|0)<0)<<31>>31;E=E+12|0;if((L|0)>(J|0)|(L|0)==(J|0)&F>>>0>=K>>>0|(L|0)<0)a[E>>0]=1;else{a[E>>0]=0;c[G>>2]=F}y=y+1|0;if(y>>>0>=(d[A>>0]|d[A+1>>0]<<8|d[A+2>>0]<<16|d[A+3>>0]<<24)>>>0)break g}A=d[B>>0]|d[B+1>>0]<<8;y=A&65535;A=A<<16>>16==0?1:y;z=Tq(A)|0;h:do if(!z){while(1){z=c[6860]|0;c[6860]=z+0;if(!z)break;qd[z&3]();z=Tq(A)|0;if(z)break h}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);A=c[f>>2]|0;B=A+13|0;do if(!(a[B>>0]|0)){L=A+4|0;I=A+8|0;K=c[I>>2]|0;J=(c[L>>2]|0)-K|0;J=(J|0)<(y|0)?J:y;pr(z|0,(c[A>>2]|0)+K|0,J|0)|0;K=(c[I>>2]|0)+J|0;c[I>>2]=K;c[A+16>>2]=J;if((K|0)<(c[L>>2]|0))break;a[B>>0]=1}else a[A+12>>0]=1;while(0);A=f+247|0;D=A+0|0;y=z+0|0;E=D+34|0;do{a[D>>0]=a[y>>0]|0;D=D+1|0;y=y+1|0}while((D|0)<(E|0));if((d[A>>0]|d[A+1>>0]<<8)<<16>>16!=2){b=Wb(8)|0;c[b>>2]=27520;g=b+4|0;j=Tq(68)|0;i:do if(!j){while(1){j=c[6860]|0;c[6860]=j+0;if(!j)break;qd[j&3]();j=Tq(68)|0;if(j)break i}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[j>>2]=55;c[j+4>>2]=55;c[j+8>>2]=0;j=j+12|0;D=j+0|0;y=10808;E=D+56|0;do{a[D>>0]=a[y>>0]|0;D=D+1|0;y=y+1|0}while((D|0)<(E|0));c[g>>2]=j;c[b>>2]=10872;Zc(b|0,10792,103)}y=d[x>>0]|d[x+1>>0]<<8;A=(y&65535)*6|0;A=(A|0)==0?1:A;B=Tq(A)|0;j:do if(!B){while(1){B=c[6860]|0;c[6860]=B+0;if(!B)break;qd[B&3]();B=Tq(A)|0;if(B)break j}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);a[w>>0]=B;a[w+1>>0]=B>>8;a[w+2>>0]=B>>16;a[w+3>>0]=B>>24;k:do if(!(y<<16>>16))B=0;else{A=z+34|0;a[B+0>>0]=a[A+0>>0]|0;a[B+1>>0]=a[A+1>>0]|0;a[B+2>>0]=a[A+2>>0]|0;a[B+3>>0]=a[A+3>>0]|0;a[B+4>>0]=a[A+4>>0]|0;a[B+5>>0]=a[A+5>>0]|0;if((y&65535)>1)y=1;else{B=1;break}while(1){A=A+6|0;pr(B+(y*6|0)|0,A|0,6)|0;y=y+1|0;B=d[x>>0]|d[x+1>>0]<<8;if((y|0)>=(B&65535|0))break k;B=d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24}}while(0);if(z){Uq(z);B=d[x>>0]|d[x+1>>0]<<8}l:do if(B<<16>>16){y=f+308|0;z=0;m:while(1){D=d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24;C=D+(z*6|0)|0;C=(d[C>>0]|d[C+1>>0]<<8)&65535;A=D+(z*6|0)+2|0;A=(d[A>>0]|d[A+1>>0]<<8)&65535;D=D+(z*6|0)+4|0;D=(d[D>>0]|d[D+1>>0]<<8)&65535;E=c[u>>2]|0;do if((E|0)==(c[y>>2]|0)){B=c[v>>2]|0;F=E-B|0;G=(F|0)/12|0;E=G+1|0;if(E>>>0>357913941){n=225;break m}if(G>>>0<178956970){I=G<<1;I=I>>>0>>0?E:I;if(!I){I=0;K=0}else n=229}else{I=357913941;n=229}if((n|0)==229){n=0;J=I*12|0;J=(J|0)==0?1:J;K=Tq(J)|0;if(!K)do{K=c[6860]|0;c[6860]=K+0;if(!K){n=233;break m}qd[K&3]();K=Tq(J)|0}while((K|0)==0)}J=K+(G*12|0)|0;if(J){c[J>>2]=C;c[K+(G*12|0)+4>>2]=A;c[K+(G*12|0)+8>>2]=D}L=K+((((F|0)/-12|0)+G|0)*12|0)|0;nr(L|0,B|0,F|0)|0;c[v>>2]=L;c[u>>2]=K+(E*12|0);c[y>>2]=K+(I*12|0);if(!B)break;Uq(B)}else{if(!E)A=0;else{c[E>>2]=C;c[E+4>>2]=A;c[E+8>>2]=D;A=c[u>>2]|0}c[u>>2]=A+12}while(0);z=z+1|0;if((z|0)>=((d[x>>0]|d[x+1>>0]<<8)&65535|0))break l}if((n|0)==225)Mn();else if((n|0)==233){L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}}while(0);w=c[f>>2]|0;u=f+116|0;v=d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24;L=c[w+4>>2]|0;K=((L|0)<0)<<31>>31;if(0<(K|0)|0==(K|0)&v>>>0>>0)c[w+8>>2]=v;else a[w+12>>0]=1;w=s;c[w>>2]=0;c[w+4>>2]=0;w=c[f>>2]|0;v=w+13|0;do if(!(a[v>>0]|0)){L=c[w+4>>2]|0;I=w+8|0;K=c[I>>2]|0;J=L-K|0;J=(J|0)<8?J:8;nr(s|0,(c[w>>2]|0)+K|0,J|0)|0;K=K+J|0;c[I>>2]=K;c[w+16>>2]=J;if((K|0)<(L|0))break;a[v>>0]=1}else a[w+12>>0]=1;while(0);K=(c[f>>2]|0)+12|0;L=a[K>>0]|0;a[K>>0]=0;if(L<<24>>24){g=Wb(8)|0;c[g>>2]=27520;b=g+4|0;j=Tq(56)|0;n:do if(!j){while(1){j=c[6860]|0;c[6860]=j+0;if(!j)break;qd[j&3]();j=Tq(56)|0;if(j)break n}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[j>>2]=43;c[j+4>>2]=43;c[j+8>>2]=0;j=j+12|0;D=j+0|0;y=10544;E=D+44|0;do{a[D>>0]=a[y>>0]|0;D=D+1|0;y=y+1|0}while((D|0)<(E|0));c[b>>2]=j;c[g>>2]=10600;Zc(g|0,10184,99)}v=s;w=c[v>>2]|0;v=c[v+4>>2]|0;if((w|0)==-1&(v|0)==-1){g=Wb(8)|0;c[g>>2]=27520;b=g+4|0;j=Tq(67)|0;o:do if(!j){while(1){j=c[6860]|0;c[6860]=j+0;if(!j)break;qd[j&3]();j=Tq(67)|0;if(j)break o}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[j>>2]=54;c[j+4>>2]=54;c[j+8>>2]=0;j=j+12|0;D=j+0|0;y=10200;E=D+55|0;do{a[D>>0]=a[y>>0]|0;D=D+1|0;y=y+1|0}while((D|0)<(E|0));c[b>>2]=j;c[g>>2]=10528;Zc(g|0,10288,97)}s=c[f>>2]|0;L=c[s+4>>2]|0;K=((L|0)<0)<<31>>31;if((v|0)<(K|0)|(v|0)==(K|0)&w>>>0>>0)c[s+8>>2]=w;else a[s+12>>0]=1;K=(c[f>>2]|0)+12|0;L=a[K>>0]|0;a[K>>0]=0;if(L<<24>>24){g=Wb(8)|0;c[g>>2]=27520;b=g+4|0;j=Tq(56)|0;p:do if(!j){while(1){j=c[6860]|0;c[6860]=j+0;if(!j)break;qd[j&3]();j=Tq(56)|0;if(j)break p}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[j>>2]=43;c[j+4>>2]=43;c[j+8>>2]=0;j=j+12|0;D=j+0|0;y=10544;E=D+44|0;do{a[D>>0]=a[y>>0]|0;D=D+1|0;y=y+1|0}while((D|0)<(E|0));c[b>>2]=j;c[g>>2]=10600;Zc(g|0,10184,99)}s=c[f>>2]|0;v=s+13|0;do if(!(a[v>>0]|0)){L=c[s+4>>2]|0;I=s+8|0;K=c[I>>2]|0;J=L-K|0;J=(J|0)<8?J:8;nr(q|0,(c[s>>2]|0)+K|0,J|0)|0;K=K+J|0;c[I>>2]=K;c[s+16>>2]=J;if((K|0)<(L|0))break;a[v>>0]=1}else a[s+12>>0]=1;while(0);K=(c[f>>2]|0)+12|0;L=a[K>>0]|0;a[K>>0]=0;if(L<<24>>24){b=Wb(8)|0;c[b>>2]=27520;g=b+4|0;j=Tq(56)|0;q:do if(!j){while(1){j=c[6860]|0;c[6860]=j+0;if(!j)break;qd[j&3]();j=Tq(56)|0;if(j)break q}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[j>>2]=43;c[j+4>>2]=43;c[j+8>>2]=0;j=j+12|0;D=j+0|0;y=10544;E=D+44|0;do{a[D>>0]=a[y>>0]|0;D=D+1|0;y=y+1|0}while((D|0)<(E|0));c[g>>2]=j;c[b>>2]=10600;Zc(b|0,10184,99)}if(c[q>>2]|0){g=Wb(8)|0;c[g>>2]=27520;b=g+4|0;j=Tq(54)|0;r:do if(!j){while(1){j=c[6860]|0;c[6860]=j+0;if(!j)break;qd[j&3]();j=Tq(54)|0;if(j)break r}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[j>>2]=41;c[j+4>>2]=41;c[j+8>>2]=0;j=j+12|0;D=j+0|0;y=10448;E=D+42|0;do{a[D>>0]=a[y>>0]|0;D=D+1|0;y=y+1|0}while((D|0)<(E|0));c[b>>2]=j;c[g>>2]=10504;Zc(g|0,10344,95)}s=c[t>>2]|0;v=c[r>>2]|0;if((v|0)==(s|0))y=s;else{y=v+(~((v+ -8+(0-s)|0)>>>3)<<3)|0;c[r>>2]=y}L=f+259|0;if((d[L>>0]|d[L+1>>0]<<8|d[L+2>>0]<<16|d[L+3>>0]<<24|0)==-1){b=Wb(8)|0;c[b>>2]=27520;g=b+4|0;j=Tq(96)|0;s:do if(!j){while(1){j=c[6860]|0;c[6860]=j+0;if(!j)break;qd[j&3]();j=Tq(96)|0;if(j)break s}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[j>>2]=83;c[j+4>>2]=83;c[j+8>>2]=0;j=j+12|0;D=j+0|0;y=10360;E=D+84|0;do{a[D>>0]=a[y>>0]|0;D=D+1|0;y=y+1|0}while((D|0)<(E|0));c[g>>2]=j;c[b>>2]=10528;Zc(b|0,10288,97)}q=q+4|0;v=c[q>>2]|0;w=v+1|0;B=s;x=y-B>>3;do if(x>>>0>>0){x=w-x|0;w=f+296|0;C=c[w>>2]|0;z=y;if(C-z>>3>>>0>=x>>>0){n=x;w=y;while(1){if(w){L=w;c[L>>2]=0;c[L+4>>2]=0}n=n+ -1|0;if(!n)break;else w=w+8|0}c[r>>2]=y+(x<<3);break}z=z-B|0;A=z>>3;y=A+x|0;if(y>>>0>536870911)Mn();B=C-B|0;if(B>>3>>>0<268435455){B=B>>2;B=B>>>0>>0?y:B;if(!B){B=0;C=0}else n=322}else{B=536870911;n=322}if((n|0)==322){n=B<<3;n=(n|0)==0?1:n;C=Tq(n)|0;t:do if(!C){while(1){C=c[6860]|0;c[6860]=C+0;if(!C)break;qd[C&3]();C=Tq(n)|0;if(C)break t}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0)}n=C+(A<<3)|0;while(1){if(n){L=n;c[L>>2]=0;c[L+4>>2]=0}x=x+ -1|0;if(!x)break;else n=n+8|0}nr(C|0,s|0,z|0)|0;c[t>>2]=C;c[r>>2]=C+(y<<3);c[w>>2]=C+(B<<3);if(!s){s=C;break}Uq(s);s=c[t>>2]|0}else{if(x>>>0<=w>>>0)break;n=s+(w<<3)|0;if((y|0)==(n|0))break;c[r>>2]=y+(~((y+ -8+(0-n)|0)>>>3)<<3)}while(0);L=s;c[L>>2]=(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)+8;c[L+4>>2]=0;if(v>>>0>1){c[m>>2]=c[f>>2];c[m+4>>2]=0;c[m+8>>2]=0;n=m+12|0;v=Tq(1048644)|0;L=v+68&-64;c[L+ -4>>2]=v;c[n>>2]=L;c[j>>2]=m;L=j+4|0;c[L>>2]=0;c[j+8>>2]=-1;c[l+4>>2]=32;c[l+8>>2]=2;c[l+12>>2]=8;c[l+16>>2]=0;v=l+36|0;c[v>>2]=0;s=l+40|0;c[s>>2]=0;c[l+44>>2]=0;c[l+60>>2]=1;c[l+64>>2]=2;c[l+56>>2]=4096;c[l+52>>2]=4;c[l+48>>2]=4;w=l+68|0;c[w>>2]=0;x=l+72|0;c[x>>2]=0;c[l+76>>2]=0;c[l+20>>2]=32;y=l+24|0;c[y>>2]=0;c[l+28>>2]=-2147483648;c[l+32>>2]=2147483647;c[l>>2]=0;J=Wf(m)|0;I=Wf(m)|0;K=Wf(m)|0;c[L>>2]=(I&255)<<16|(J&255)<<24|(K&255)<<8|(Wf(m)|0)&255;ge(l);m=c[q>>2]|0;if(!m)A=c[t>>2]|0;else{q=1;do{if(q>>>0>1)z=c[(c[t>>2]|0)+(q+ -1<<3)>>2]|0;else z=0;A=($f(l,j,(c[v>>2]|0)+44|0)|0)+z|0;z=c[y>>2]|0;if((A|0)<0)z=z+A|0;else z=A-(A>>>0>>0?0:z)|0;A=c[t>>2]|0;L=A+(q<<3)|0;c[L>>2]=z;c[L+4>>2]=((z|0)<0)<<31>>31;q=q+1|0}while(q>>>0<=m>>>0)}j=(c[r>>2]|0)-A>>3;if(j>>>0>1){m=A;l=c[m>>2]|0;m=c[m+4>>2]|0;q=1;do{L=A+(q<<3)|0;K=L;l=kr(c[K>>2]|0,c[K+4>>2]|0,l|0,m|0)|0;m=H;c[L>>2]=l;c[L+4>>2]=m;q=q+1|0}while(q>>>0>>0)}j=c[w>>2]|0;if(j){l=c[x>>2]|0;if((l|0)!=(j|0)){do{c[x>>2]=l+ -44;m=c[l+ -36>>2]|0;if(m)Uq(c[m+ -4>>2]|0);m=c[l+ -32>>2]|0;if(m)Uq(c[m+ -4>>2]|0);l=c[l+ -28>>2]|0;if(l)Uq(c[l+ -4>>2]|0);l=c[x>>2]|0}while((l|0)!=(j|0));j=c[w>>2]|0}Uq(j)}j=c[v>>2]|0;if(j){l=c[s>>2]|0;if((l|0)!=(j|0)){do{c[s>>2]=l+ -44;m=c[l+ -36>>2]|0;if(m)Uq(c[m+ -4>>2]|0);m=c[l+ -32>>2]|0;if(m)Uq(c[m+ -4>>2]|0);l=c[l+ -28>>2]|0;if(l)Uq(c[l+ -4>>2]|0);l=c[s>>2]|0}while((l|0)!=(j|0));j=c[v>>2]|0}Uq(j)}Uq(c[(c[n>>2]|0)+ -4>>2]|0)}j=c[f>>2]|0;a[j+12>>0]=0;a[j+13>>0]=0;j=c[f>>2]|0;l=(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)+8|0;L=c[j+4>>2]|0;K=((L|0)<0)<<31>>31;if(0<(K|0)|0==(K|0)&l>>>0>>0)c[j+8>>2]=l;else a[j+12>>0]=1;c[p>>2]=0;c[e>>2]=0;j=Tq(16)|0;u:do if(!j){while(1){j=c[6860]|0;c[6860]=j+0;if(!j)break;qd[j&3]();j=Tq(16)|0;if(j)break u}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[j+4>>2]=0;c[j+8>>2]=0;c[j>>2]=11720;c[j+12>>2]=f;c[b+8>>2]=f;L=b+12|0;b=c[L>>2]|0;c[L>>2]=j;if(!b){i=g;return}K=b+4|0;L=c[K>>2]|0;c[K>>2]=L+ -1;if(L){i=g;return}jd[c[(c[b>>2]|0)+8>>2]&255](b);K=b+8|0;L=c[K>>2]|0;c[K>>2]=L+ -1;if(L){i=g;return}jd[c[(c[b>>2]|0)+16>>2]&255](b);i=g;return}while(0);g=Wb(8)|0;c[g>>2]=27520;b=g+4|0;j=Tq(56)|0;v:do if(!j){while(1){j=c[6860]|0;c[6860]=j+0;if(!j)break;qd[j&3]();j=Tq(56)|0;if(j)break v}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[j>>2]=43;c[j+4>>2]=43;c[j+8>>2]=0;j=j+12|0;D=j+0|0;y=10680;E=D+44|0;do{a[D>>0]=a[y>>0]|0;D=D+1|0;y=y+1|0}while((D|0)<(E|0));c[b>>2]=j;c[g>>2]=10736;Zc(g|0,10664,101)}L=Wb(4)|0;c[L>>2]=27744;Zc(L|0,27816,228)}function Hd(b,e){b=b|0;e=e|0;var f=0,g=0,h=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;f=i;i=i+176|0;r=f+160|0;m=f+16|0;g=f;b=c[b+8>>2]|0;j=b+336|0;x=j;y=b+259|0;h=b+320|0;if((!((c[x+4>>2]|0)==0?(c[x>>2]|0)==(d[y>>0]|d[y+1>>0]<<8|d[y+2>>0]<<16|d[y+3>>0]<<24|0):0)?(k=c[h>>2]|0,(k|0)!=0):0)?(c[b+312>>2]|0)!=0:0){v=k;x=c[v>>2]|0;x=c[x>>2]|0;kd[x&63](v,e);v=j;x=v;x=c[x>>2]|0;v=v+4|0;v=c[v>>2]|0;v=kr(x|0,v|0,1,0)|0;x=H;y=j;w=y;c[w>>2]=v;y=y+4|0;c[y>>2]=x;i=f;return}c[h>>2]=0;k=b+324|0;l=c[k>>2]|0;c[k>>2]=0;if(((l|0)!=0?(x=l+4|0,y=c[x>>2]|0,c[x>>2]=y+ -1,(y|0)==0):0)?(jd[c[(c[l>>2]|0)+8>>2]&255](l),x=l+8|0,y=c[x>>2]|0,c[x>>2]=y+ -1,(y|0)==0):0)jd[c[(c[l>>2]|0)+16>>2]&255](l);n=b+312|0;c[n>>2]=0;o=b+316|0;l=c[o>>2]|0;c[o>>2]=0;if(((l|0)!=0?(x=l+4|0,y=c[x>>2]|0,c[x>>2]=y+ -1,(y|0)==0):0)?(jd[c[(c[l>>2]|0)+8>>2]&255](l),x=l+8|0,y=c[x>>2]|0,c[x>>2]=y+ -1,(y|0)==0):0)jd[c[(c[l>>2]|0)+16>>2]&255](l);l=Tq(12)|0;a:do if(!l){while(1){l=c[6860]|0;c[6860]=l+0;if(!l)break;qd[l&3]();l=Tq(12)|0;if(l)break a}y=Wb(4)|0;c[y>>2]=27280;Zc(y|0,27328,220)}while(0);c[l>>2]=b+4;c[l+4>>2]=0;c[l+8>>2]=-1;q=Tq(16)|0;b:do if(!q){while(1){p=c[6860]|0;c[6860]=p+0;if(!p)break;qd[p&3]();q=Tq(16)|0;if(q)break b}y=Wb(4)|0;c[y>>2]=27280;Zc(y|0,27328,220)}while(0);c[q+4>>2]=0;c[q+8>>2]=0;c[q>>2]=9736;c[q+12>>2]=l;c[n>>2]=l;p=c[o>>2]|0;c[o>>2]=q;if(p){x=p+4|0;y=c[x>>2]|0;c[x>>2]=y+ -1;if((y|0)==0?(jd[c[(c[p>>2]|0)+8>>2]&255](p),x=p+8|0,y=c[x>>2]|0,c[x>>2]=y+ -1,(y|0)==0):0)jd[c[(c[p>>2]|0)+16>>2]&255](p);l=c[n>>2]|0}n=m+64|0;o=m+8|0;c[o>>2]=9416;p=m+12|0;c[m>>2]=9548;c[n>>2]=9568;c[m+4>>2]=0;c[m+88>>2]=p;c[m+80>>2]=0;c[m+84>>2]=0;c[m+68>>2]=4098;c[m+76>>2]=0;c[m+72>>2]=6;t=m+92|0;q=m+96|0;s=q+40|0;do{c[q>>2]=0;q=q+4|0}while((q|0)<(s|0));Qn(t);c[m+136>>2]=0;c[m+140>>2]=-1;c[m>>2]=9396;c[n>>2]=9436;c[o>>2]=9416;c[p>>2]=16248;Qn(m+16|0);t=m+20|0;c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;c[t+16>>2]=0;c[t+20>>2]=0;c[p>>2]=9584;q=m+44|0;u=m+60|0;c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[u>>2]=24;c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;Ji(q,r+1|0,0);s=m+56|0;c[s>>2]=0;v=c[u>>2]|0;if(v&8){w=a[q>>0]|0;if(!(w&1)){w=q+((w&255)>>>1)+1|0;c[s>>2]=w;x=q+1|0}else{x=c[m+52>>2]|0;w=x+(c[m+48>>2]|0)|0;c[s>>2]=w}c[t>>2]=x;c[m+24>>2]=x;c[m+28>>2]=w}if(v&16){v=a[q>>0]|0;if(!(v&1)){v=(v&255)>>>1;c[s>>2]=q+v+1;w=10}else{v=c[m+48>>2]|0;c[s>>2]=(c[m+52>>2]|0)+v;w=(c[q>>2]&-2)+ -1|0}Ki(q,w);x=a[q>>0]|0;if(!(x&1)){w=q+1|0;x=(x&255)>>>1}else{w=c[m+52>>2]|0;x=c[m+48>>2]|0}y=m+36|0;c[y>>2]=w;c[m+32>>2]=w;c[m+40>>2]=w+x;if(c[u>>2]&3)c[y>>2]=w+v}if(a[r>>0]&1)Uq(c[r+8>>2]|0);w=c[b+300>>2]|0;r=c[b+304>>2]|0;if((w|0)!=(r|0)){v=m+8|0;do{x=c[w>>2]|0;y=c[w+4>>2]|0;z=c[w+8>>2]|0;Rj(Rg(Rj(Rg(Rj(Rg(v,9360,1)|0,z)|0,9368,1)|0,x)|0,9376,1)|0,y)|0;w=w+12|0}while((w|0)!=(r|0))}r=c[u>>2]|0;do if(!(r&16)){if(!(r&8)){c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;break}t=c[t>>2]|0;s=c[m+28>>2]|0;r=t;v=s-r|0;if(v>>>0>4294967279)Ei();if(v>>>0<11){a[g>>0]=v<<1;x=g+1|0}else{u=v+16&-16;w=(u|0)==0?1:u;x=Tq(w)|0;c:do if(!x){while(1){x=c[6860]|0;c[6860]=x+0;if(!x)break;qd[x&3]();x=Tq(w)|0;if(x)break c}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[g+8>>2]=x;c[g>>2]=u|1;c[g+4>>2]=v}if((t|0)!=(s|0)){u=x;while(1){a[u>>0]=a[t>>0]|0;t=t+1|0;if((t|0)==(s|0))break;else u=u+1|0}x=x+(s+(0-r))|0}a[x>>0]=0}else{t=c[s>>2]|0;r=c[m+36>>2]|0;if(t>>>0>>0)c[s>>2]=r;else r=t;t=c[m+32>>2]|0;s=t;v=r-s|0;if(v>>>0>4294967279)Ei();if(v>>>0<11){a[g>>0]=v<<1;x=g+1|0}else{u=v+16&-16;w=(u|0)==0?1:u;x=Tq(w)|0;d:do if(!x){while(1){x=c[6860]|0;c[6860]=x+0;if(!x)break;qd[x&3]();x=Tq(w)|0;if(x)break d}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[g+8>>2]=x;c[g>>2]=u|1;c[g+4>>2]=v}if((t|0)!=(r|0)){u=x;while(1){a[u>>0]=a[t>>0]|0;t=t+1|0;if((t|0)==(r|0))break;else u=u+1|0}x=x+(r+(0-s))|0}a[x>>0]=0}while(0);c[m>>2]=9396;c[m+64>>2]=9436;c[o>>2]=9416;c[p>>2]=9584;if(a[q>>0]&1)Uq(c[m+52>>2]|0);c[p>>2]=16248;m=c[m+16>>2]|0;y=m+4|0;z=c[y>>2]|0;c[y>>2]=z+ -1;if(!z)jd[c[(c[m>>2]|0)+8>>2]&255](m);_i(n);do if(!(Qi(g,5184)|0)){n=Tq(4788)|0;e:do if(!n){while(1){m=c[6860]|0;c[6860]=m+0;if(!m)break;qd[m&3]();n=Tq(4788)|0;if(n)break e}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);Pf(n);a[n+4784>>0]=1;m=Tq(12)|0;f:do if(!m){while(1){m=c[6860]|0;c[6860]=m+0;if(!m)break;qd[m&3]();m=Tq(12)|0;if(m)break f}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[m>>2]=8504;c[m+4>>2]=l;c[m+8>>2]=n;l=Tq(16)|0;g:do if(!l){while(1){l=c[6860]|0;c[6860]=l+0;if(!l)break;qd[l&3]();l=Tq(16)|0;if(l)break g}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[l+4>>2]=0;c[l+8>>2]=0;c[l>>2]=8768;c[l+12>>2]=m}else{if(!(Qi(g,5192)|0)){n=Tq(5116)|0;h:do if(!n){while(1){m=c[6860]|0;c[6860]=m+0;if(!m)break;qd[m&3]();n=Tq(5116)|0;if(n)break h}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);Pf(n);Of(n+4784|0);c[n+4952>>2]=32;c[n+4956>>2]=9;c[n+4960>>2]=8;c[n+4964>>2]=0;c[n+4984>>2]=0;c[n+4988>>2]=0;c[n+4992>>2]=0;c[n+5008>>2]=1;c[n+5012>>2]=2;c[n+5004>>2]=4096;c[n+5e3>>2]=4;c[n+4996>>2]=4;c[n+5016>>2]=0;c[n+5020>>2]=0;c[n+5024>>2]=0;c[n+4968>>2]=32;c[n+4972>>2]=0;c[n+4976>>2]=-2147483648;c[n+4980>>2]=2147483647;c[n+4948>>2]=0;c[n+5032>>2]=32;c[n+5036>>2]=9;c[n+5040>>2]=8;c[n+5044>>2]=0;c[n+5064>>2]=0;c[n+5068>>2]=0;c[n+5072>>2]=0;c[n+5088>>2]=1;c[n+5092>>2]=2;c[n+5084>>2]=4096;c[n+5080>>2]=4;c[n+5076>>2]=4;c[n+5096>>2]=0;c[n+5100>>2]=0;c[n+5104>>2]=0;c[n+5048>>2]=32;c[n+5052>>2]=0;c[n+5056>>2]=-2147483648;c[n+5060>>2]=2147483647;c[n+5028>>2]=0;a[n+5108>>0]=0;a[n+5109>>0]=0;a[n+5112>>0]=1;m=Tq(12)|0;i:do if(!m){while(1){m=c[6860]|0;c[6860]=m+0;if(!m)break;qd[m&3]();m=Tq(12)|0;if(m)break i}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[m>>2]=7560;c[m+4>>2]=l;c[m+8>>2]=n;l=Tq(16)|0;j:do if(!l){while(1){l=c[6860]|0;c[6860]=l+0;if(!l)break;qd[l&3]();l=Tq(16)|0;if(l)break j}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[l+4>>2]=0;c[l+8>>2]=0;c[l>>2]=7848;c[l+12>>2]=m;break}if(!(Qi(g,5208)|0)){n=Tq(5104)|0;k:do if(!n){while(1){m=c[6860]|0;c[6860]=m+0;if(!m)break;qd[m&3]();n=Tq(5104)|0;if(n)break k}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);Pf(n);Nf(n+4784|0);a[n+5100>>0]=1;m=Tq(12)|0;l:do if(!m){while(1){m=c[6860]|0;c[6860]=m+0;if(!m)break;qd[m&3]();m=Tq(12)|0;if(m)break l}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[m>>2]=6616;c[m+4>>2]=l;c[m+8>>2]=n;l=Tq(16)|0;m:do if(!l){while(1){l=c[6860]|0;c[6860]=l+0;if(!l)break;qd[l&3]();l=Tq(16)|0;if(l)break m}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[l+4>>2]=0;c[l+8>>2]=0;c[l>>2]=6904;c[l+12>>2]=m;break}if(Qi(g,5224)|0){g=Wb(8)|0;c[g>>2]=27520;f=g+4|0;e=Tq(45)|0;n:do if(!e){while(1){e=c[6860]|0;c[6860]=e+0;if(!e)break;qd[e&3]();e=Tq(45)|0;if(e)break n}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[e>>2]=32;c[e+4>>2]=32;c[e+8>>2]=0;b=e+12|0;q=b+0|0;e=5296|0;s=q+33|0;do{a[q>>0]=a[e>>0]|0;q=q+1|0;e=e+1|0}while((q|0)<(s|0));c[f>>2]=b;c[g>>2]=5344;Zc(g|0,5280,51)}n=Tq(5432)|0;o:do if(!n){while(1){m=c[6860]|0;c[6860]=m+0;if(!m)break;qd[m&3]();n=Tq(5432)|0;if(n)break o}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);Pf(n);Of(n+4784|0);c[n+4952>>2]=32;c[n+4956>>2]=9;c[n+4960>>2]=8;c[n+4964>>2]=0;c[n+4984>>2]=0;c[n+4988>>2]=0;c[n+4992>>2]=0;c[n+5008>>2]=1;c[n+5012>>2]=2;c[n+5004>>2]=4096;c[n+5e3>>2]=4;c[n+4996>>2]=4;c[n+5016>>2]=0;c[n+5020>>2]=0;c[n+5024>>2]=0;c[n+4968>>2]=32;c[n+4972>>2]=0;c[n+4976>>2]=-2147483648;c[n+4980>>2]=2147483647;c[n+4948>>2]=0;c[n+5032>>2]=32;c[n+5036>>2]=9;c[n+5040>>2]=8;c[n+5044>>2]=0;c[n+5064>>2]=0;c[n+5068>>2]=0;c[n+5072>>2]=0;c[n+5088>>2]=1;c[n+5092>>2]=2;c[n+5084>>2]=4096;c[n+5080>>2]=4;c[n+5076>>2]=4;c[n+5096>>2]=0;c[n+5100>>2]=0;c[n+5104>>2]=0;c[n+5048>>2]=32;c[n+5052>>2]=0;c[n+5056>>2]=-2147483648;c[n+5060>>2]=2147483647;c[n+5028>>2]=0;a[n+5108>>0]=0;a[n+5109>>0]=0;Nf(n+5112|0);a[n+5428>>0]=1;m=Tq(12)|0;p:do if(!m){while(1){m=c[6860]|0;c[6860]=m+0;if(!m)break;qd[m&3]();m=Tq(12)|0;if(m)break p}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[m>>2]=5368;c[m+4>>2]=l;c[m+8>>2]=n;l=Tq(16)|0;q:do if(!l){while(1){l=c[6860]|0;c[6860]=l+0;if(!l)break;qd[l&3]();l=Tq(16)|0;if(l)break q}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[l+4>>2]=0;c[l+8>>2]=0;c[l>>2]=5904;c[l+12>>2]=m}while(0);if(a[g>>0]&1)Uq(c[g+8>>2]|0);c[h>>2]=m;g=c[k>>2]|0;c[k>>2]=l;if(((g|0)!=0?(y=g+4|0,z=c[y>>2]|0,c[y>>2]=z+ -1,(z|0)==0):0)?(jd[c[(c[g>>2]|0)+8>>2]&255](g),y=g+8|0,z=c[y>>2]|0,c[y>>2]=z+ -1,(z|0)==0):0)jd[c[(c[g>>2]|0)+16>>2]&255](g);w=b+328|0;y=w;y=kr(c[y>>2]|0,c[y+4>>2]|0,1,0)|0;c[w>>2]=y;c[w+4>>2]=H;w=j;c[w>>2]=0;c[w+4>>2]=0;w=c[h>>2]|0;y=c[w>>2]|0;y=c[y>>2]|0;kd[y&63](w,e);w=j;y=w;y=c[y>>2]|0;w=w+4|0;w=c[w>>2]|0;w=kr(y|0,w|0,1,0)|0;y=H;z=j;x=z;c[x>>2]=w;z=z+4|0;c[z>>2]=y;i=f;return}function Id(a){a=a|0;a=(c[a+8>>2]|0)+127|0;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0}function Jd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;g=Tq(12)|0;a:do if(!g){while(1){g=c[6860]|0;c[6860]=g+0;if(!g)break;qd[g&3]();g=Tq(12)|0;if(g)break a}h=Wb(4)|0;c[h>>2]=27280;Zc(h|0,27328,220)}while(0);c[g>>2]=d;c[g+4>>2]=e;c[g+8>>2]=0;d=Tq(16)|0;b:do if(!d){while(1){e=c[6860]|0;c[6860]=e+0;if(!e)break;qd[e&3]();d=Tq(16)|0;if(d)break b}h=Wb(4)|0;c[h>>2]=27280;Zc(h|0,27328,220)}while(0);c[d+4>>2]=0;c[d+8>>2]=0;c[d>>2]=5008;c[d+12>>2]=g;c[b>>2]=g;h=b+4|0;e=c[h>>2]|0;c[h>>2]=d;if(!e)e=g;else{d=e+4|0;h=c[d>>2]|0;c[d>>2]=h+ -1;if((h|0)==0?(jd[c[(c[e>>2]|0)+8>>2]&255](e),d=e+8|0,h=c[d>>2]|0,c[d>>2]=h+ -1,(h|0)==0):0)jd[c[(c[e>>2]|0)+16>>2]&255](e);e=c[b>>2]|0}g=Tq(12)|0;c:do if(!g){while(1){g=c[6860]|0;c[6860]=g+0;if(!g)break;qd[g&3]();g=Tq(12)|0;if(g)break c}h=Wb(4)|0;c[h>>2]=27280;Zc(h|0,27328,220)}while(0);c[g>>2]=e;c[g+4>>2]=0;c[g+8>>2]=-1;h=Tq(16)|0;d:do if(!h){while(1){e=c[6860]|0;c[6860]=e+0;if(!e)break;qd[e&3]();h=Tq(16)|0;if(h)break d}h=Wb(4)|0;c[h>>2]=27280;Zc(h|0,27328,220)}while(0);c[h+4>>2]=0;c[h+8>>2]=0;c[h>>2]=4760;c[h+12>>2]=g;e=b+8|0;c[e>>2]=g;j=b+12|0;d=c[j>>2]|0;c[j>>2]=h;if(d){h=d+4|0;j=c[h>>2]|0;c[h>>2]=j+ -1;if((j|0)==0?(jd[c[(c[d>>2]|0)+8>>2]&255](d),h=d+8|0,j=c[h>>2]|0,c[h>>2]=j+ -1,(j|0)==0):0)jd[c[(c[d>>2]|0)+16>>2]&255](d);g=c[e>>2]|0}e=Tq(24)|0;e:do if(!e){while(1){e=c[6860]|0;c[6860]=e+0;if(!e)break;qd[e&3]();e=Tq(24)|0;if(e)break e}j=Wb(4)|0;c[j>>2]=27280;Zc(j|0,27328,220)}while(0);c[e>>2]=4248;c[e+4>>2]=g;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;a[e+20>>0]=1;g=Tq(16)|0;f:do if(!g){while(1){g=c[6860]|0;c[6860]=g+0;if(!g)break;qd[g&3]();g=Tq(16)|0;if(g)break f}j=Wb(4)|0;c[j>>2]=27280;Zc(j|0,27328,220)}while(0);c[g+4>>2]=0;c[g+8>>2]=0;c[g>>2]=4424;c[g+12>>2]=e;c[b+16>>2]=e;j=b+20|0;b=c[j>>2]|0;c[j>>2]=g;if(!b){i=f;return}h=b+4|0;j=c[h>>2]|0;c[h>>2]=j+ -1;if(j){i=f;return}jd[c[(c[b>>2]|0)+8>>2]&255](b);h=b+8|0;j=c[h>>2]|0;c[h>>2]=j+ -1;if(j){i=f;return}jd[c[(c[b>>2]|0)+16>>2]&255](b);i=f;return}function Kd(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=a+16|0;a=c[e>>2]|0;if(!a){i=d;return}if((b|0)==4){Oe(a);i=d;return}else if((b|0)==8){ae(a);ae(c[e>>2]|0);i=d;return}else{i=d;return}}function Ld(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+16|0;f=e+8|0;g=e;h=b+16|0;b=c[h>>2]|0;if(!b){i=e;return}if((d|0)==1){d=Tq(172)|0;a:do if(!d){while(1){f=c[6860]|0;c[6860]=f+0;if(!f)break;qd[f&3]();d=Tq(172)|0;if(d)break a}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);f=c[b+4>>2]|0;c[d>>2]=3640;c[d+4>>2]=f;c[d+12>>2]=8;c[d+16>>2]=1;c[d+20>>2]=8;c[d+24>>2]=0;c[d+44>>2]=0;c[d+48>>2]=0;c[d+52>>2]=0;c[d+68>>2]=1;c[d+72>>2]=2;c[d+64>>2]=4096;c[d+60>>2]=4;c[d+56>>2]=4;c[d+76>>2]=0;c[d+80>>2]=0;c[d+84>>2]=0;c[d+28>>2]=8;c[d+32>>2]=256;c[d+36>>2]=-128;c[d+40>>2]=127;c[d+8>>2]=0;c[d+92>>2]=8;c[d+96>>2]=1;c[d+100>>2]=8;c[d+104>>2]=0;c[d+124>>2]=0;c[d+128>>2]=0;c[d+132>>2]=0;c[d+148>>2]=1;c[d+152>>2]=2;c[d+144>>2]=4096;c[d+140>>2]=4;c[d+136>>2]=4;c[d+156>>2]=0;c[d+160>>2]=0;c[d+164>>2]=0;c[d+108>>2]=8;c[d+112>>2]=256;c[d+116>>2]=-128;c[d+120>>2]=127;c[d+88>>2]=0;a[d+168>>0]=0;a[d+169>>0]=0;a[d+171>>0]=0;f=b+8|0;c[g>>2]=d;k=Tq(16)|0;b:do if(!k){while(1){h=c[6860]|0;c[6860]=h+0;if(!h)break;qd[h&3]();k=Tq(16)|0;if(k)break b}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);c[k+4>>2]=0;c[k+8>>2]=0;c[k>>2]=3824;c[k+12>>2]=d;j=g+4|0;c[j>>2]=k;h=b+12|0;l=c[h>>2]|0;if(l>>>0<(c[b+16>>2]|0)>>>0){if(!l)b=0;else{c[l>>2]=d;c[l+4>>2]=k;c[g>>2]=0;c[j>>2]=0;k=0;b=c[h>>2]|0}c[h>>2]=b+8}else{ve(f,g);k=c[j>>2]|0}if(!k){i=e;return}j=k+4|0;l=c[j>>2]|0;c[j>>2]=l+ -1;if(l){i=e;return}jd[c[(c[k>>2]|0)+8>>2]&255](k);j=k+8|0;l=c[j>>2]|0;c[j>>2]=l+ -1;if(l){i=e;return}jd[c[(c[k>>2]|0)+16>>2]&255](k);i=e;return}else if((d|0)==8){Oe(b);b=c[h>>2]|0}else if((d|0)!=4)if((d|0)==2){g=Tq(176)|0;c:do if(!g){while(1){g=c[6860]|0;c[6860]=g+0;if(!g)break;qd[g&3]();g=Tq(176)|0;if(g)break c}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);d=c[b+4>>2]|0;c[g>>2]=3032;c[g+4>>2]=d;c[g+12>>2]=16;c[g+16>>2]=1;c[g+20>>2]=8;c[g+24>>2]=0;c[g+44>>2]=0;c[g+48>>2]=0;c[g+52>>2]=0;c[g+68>>2]=1;c[g+72>>2]=2;c[g+64>>2]=4096;c[g+60>>2]=4;c[g+56>>2]=4;c[g+76>>2]=0;c[g+80>>2]=0;c[g+84>>2]=0;c[g+28>>2]=16;c[g+32>>2]=65536;c[g+36>>2]=-32768;c[g+40>>2]=32767;c[g+8>>2]=0;c[g+92>>2]=16;c[g+96>>2]=1;c[g+100>>2]=8;c[g+104>>2]=0;c[g+124>>2]=0;c[g+128>>2]=0;c[g+132>>2]=0;c[g+148>>2]=1;c[g+152>>2]=2;c[g+144>>2]=4096;c[g+140>>2]=4;c[g+136>>2]=4;c[g+156>>2]=0;c[g+160>>2]=0;c[g+164>>2]=0;c[g+108>>2]=16;c[g+112>>2]=65536;c[g+116>>2]=-32768;c[g+120>>2]=32767;c[g+88>>2]=0;a[g+168>>0]=0;a[g+169>>0]=0;a[g+172>>0]=0;d=b+8|0;c[f>>2]=g;j=Tq(16)|0;d:do if(!j){while(1){h=c[6860]|0;c[6860]=h+0;if(!h)break;qd[h&3]();j=Tq(16)|0;if(j)break d}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);c[j+4>>2]=0;c[j+8>>2]=0;c[j>>2]=3216;c[j+12>>2]=g;l=f+4|0;c[l>>2]=j;h=b+12|0;k=c[h>>2]|0;if(k>>>0<(c[b+16>>2]|0)>>>0){if(!k)b=0;else{c[k>>2]=g;c[k+4>>2]=j;c[f>>2]=0;c[l>>2]=0;b=c[h>>2]|0;j=0}c[h>>2]=b+8}else{ve(d,f);j=c[l>>2]|0}if(!j){i=e;return}k=j+4|0;l=c[k>>2]|0;c[k>>2]=l+ -1;if(l){i=e;return}jd[c[(c[j>>2]|0)+8>>2]&255](j);k=j+8|0;l=c[k>>2]|0;c[k>>2]=l+ -1;if(l){i=e;return}jd[c[(c[j>>2]|0)+16>>2]&255](j);i=e;return}else{i=e;return}Oe(b);i=e;return}function Md(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+16|0;f=e+8|0;g=e;h=b+16|0;b=c[h>>2]|0;if(!b){i=e;return}if((d|0)==2){d=Tq(176)|0;a:do if(!d){while(1){g=c[6860]|0;c[6860]=g+0;if(!g)break;qd[g&3]();d=Tq(176)|0;if(d)break a}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);g=c[b+4>>2]|0;c[d>>2]=1208;c[d+4>>2]=g;c[d+12>>2]=16;c[d+16>>2]=1;c[d+20>>2]=8;c[d+24>>2]=0;c[d+44>>2]=0;c[d+48>>2]=0;c[d+52>>2]=0;c[d+68>>2]=1;c[d+72>>2]=2;c[d+64>>2]=4096;c[d+60>>2]=4;c[d+56>>2]=4;c[d+76>>2]=0;c[d+80>>2]=0;c[d+84>>2]=0;c[d+28>>2]=16;c[d+32>>2]=65536;c[d+36>>2]=-32768;c[d+40>>2]=32767;c[d+8>>2]=0;c[d+92>>2]=16;c[d+96>>2]=1;c[d+100>>2]=8;c[d+104>>2]=0;c[d+124>>2]=0;c[d+128>>2]=0;c[d+132>>2]=0;c[d+148>>2]=1;c[d+152>>2]=2;c[d+144>>2]=4096;c[d+140>>2]=4;c[d+136>>2]=4;c[d+156>>2]=0;c[d+160>>2]=0;c[d+164>>2]=0;c[d+108>>2]=16;c[d+112>>2]=65536;c[d+116>>2]=-32768;c[d+120>>2]=32767;c[d+88>>2]=0;a[d+168>>0]=0;a[d+169>>0]=0;a[d+172>>0]=0;g=b+8|0;c[f>>2]=d;j=Tq(16)|0;b:do if(!j){while(1){h=c[6860]|0;c[6860]=h+0;if(!h)break;qd[h&3]();j=Tq(16)|0;if(j)break b}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);c[j+4>>2]=0;c[j+8>>2]=0;c[j>>2]=1392;c[j+12>>2]=d;k=f+4|0;c[k>>2]=j;h=b+12|0;l=c[h>>2]|0;if(l>>>0<(c[b+16>>2]|0)>>>0){if(!l)b=0;else{c[l>>2]=d;c[l+4>>2]=j;c[f>>2]=0;c[k>>2]=0;b=c[h>>2]|0;j=0}c[h>>2]=b+8}else{ve(g,f);j=c[k>>2]|0}if(!j){i=e;return}k=j+4|0;l=c[k>>2]|0;c[k>>2]=l+ -1;if(l){i=e;return}jd[c[(c[j>>2]|0)+8>>2]&255](j);k=j+8|0;l=c[k>>2]|0;c[k>>2]=l+ -1;if(l){i=e;return}jd[c[(c[j>>2]|0)+16>>2]&255](j);i=e;return}else if((d|0)==8){ae(b);b=c[h>>2]|0}else if((d|0)!=4)if((d|0)==1){f=Tq(172)|0;c:do if(!f){while(1){f=c[6860]|0;c[6860]=f+0;if(!f)break;qd[f&3]();f=Tq(172)|0;if(f)break c}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);d=c[b+4>>2]|0;c[f>>2]=1816;c[f+4>>2]=d;c[f+12>>2]=8;c[f+16>>2]=1;c[f+20>>2]=8;c[f+24>>2]=0;c[f+44>>2]=0;c[f+48>>2]=0;c[f+52>>2]=0;c[f+68>>2]=1;c[f+72>>2]=2;c[f+64>>2]=4096;c[f+60>>2]=4;c[f+56>>2]=4;c[f+76>>2]=0;c[f+80>>2]=0;c[f+84>>2]=0;c[f+28>>2]=8;c[f+32>>2]=256;c[f+36>>2]=-128;c[f+40>>2]=127;c[f+8>>2]=0;c[f+92>>2]=8;c[f+96>>2]=1;c[f+100>>2]=8;c[f+104>>2]=0;c[f+124>>2]=0;c[f+128>>2]=0;c[f+132>>2]=0;c[f+148>>2]=1;c[f+152>>2]=2;c[f+144>>2]=4096;c[f+140>>2]=4;c[f+136>>2]=4;c[f+156>>2]=0;c[f+160>>2]=0;c[f+164>>2]=0;c[f+108>>2]=8;c[f+112>>2]=256;c[f+116>>2]=-128;c[f+120>>2]=127;c[f+88>>2]=0;a[f+168>>0]=0;a[f+169>>0]=0;a[f+171>>0]=0;d=b+8|0;c[g>>2]=f;l=Tq(16)|0;d:do if(!l){while(1){h=c[6860]|0;c[6860]=h+0;if(!h)break;qd[h&3]();l=Tq(16)|0;if(l)break d}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);c[l+4>>2]=0;c[l+8>>2]=0;c[l>>2]=2e3;c[l+12>>2]=f;j=g+4|0;c[j>>2]=l;h=b+12|0;k=c[h>>2]|0;if(k>>>0<(c[b+16>>2]|0)>>>0){if(!k)b=0;else{c[k>>2]=f;c[k+4>>2]=l;c[g>>2]=0;c[j>>2]=0;l=0;b=c[h>>2]|0}c[h>>2]=b+8}else{ve(d,g);l=c[j>>2]|0}if(!l){i=e;return}j=l+4|0;k=c[j>>2]|0;c[j>>2]=k+ -1;if(k){i=e;return}jd[c[(c[l>>2]|0)+8>>2]&255](l);j=l+8|0;k=c[j>>2]|0;c[j>>2]=k+ -1;if(k){i=e;return}jd[c[(c[l>>2]|0)+16>>2]&255](l);i=e;return}else{i=e;return}ae(b);i=e;return}function Nd(a,b){a=a|0;b=b|0;var d=0;d=i;a=c[a+16>>2]|0;if(!a){i=d;return}kd[c[c[a>>2]>>2]&63](a,b);i=d;return}function Od(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0;f=i;g=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;a=a+4|0;a=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;b=b+(a>>1)|0;if(!(a&1)){a=g;kd[a&63](b,e);i=f;return}else{a=c[(c[b>>2]|0)+g>>2]|0;kd[a&63](b,e);i=f;return}}function Pd(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0;f=i;g=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;a=a+4|0;a=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;b=b+(a>>1)|0;if(!(a&1)){a=g;kd[a&63](b,e);i=f;return}else{a=c[(c[b>>2]|0)+g>>2]|0;kd[a&63](b,e);i=f;return}}function Qd(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0;g=i;h=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;a=a+4|0;a=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;b=b+(a>>1)|0;if(!(a&1)){a=h;od[a&15](b,e,f);i=g;return}else{a=c[(c[b>>2]|0)+h>>2]|0;od[a&15](b,e,f);i=g;return}}function Rd(){var a=0,b=0;a=i;b=Tq(24)|0;a:do if(!b){while(1){b=c[6860]|0;c[6860]=b+0;if(!b)break;qd[b&3]();b=Tq(24)|0;if(b)break a}b=Wb(4)|0;c[b>>2]=27280;Zc(b|0,27328,220)}while(0);c[b+0>>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;i=a;return b|0}function Sd(a){a=a|0;var b=0;b=i;a=id[a&3]()|0;i=b;return a|0}function Td(a){a=a|0;return 200}function Ud(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;if(!a){i=b;return}c[a>>2]=0;d=a+4|0;e=c[d>>2]|0;c[d>>2]=0;if(((e|0)!=0?(f=e+4|0,g=c[f>>2]|0,c[f>>2]=g+ -1,(g|0)==0):0)?(jd[c[(c[e>>2]|0)+8>>2]&255](e),f=e+8|0,g=c[f>>2]|0,c[f>>2]=g+ -1,(g|0)==0):0)jd[c[(c[e>>2]|0)+16>>2]&255](e);e=a+16|0;c[e>>2]=0;f=a+20|0;g=c[f>>2]|0;c[f>>2]=0;if(g){j=g+4|0;h=c[j>>2]|0;c[j>>2]=h+ -1;if((h|0)==0?(jd[c[(c[g>>2]|0)+8>>2]&255](g),h=g+8|0,j=c[h>>2]|0,c[h>>2]=j+ -1,(j|0)==0):0)jd[c[(c[g>>2]|0)+16>>2]&255](g);g=c[f>>2]|0;c[e>>2]=0;c[f>>2]=0;if(g){h=g+4|0;j=c[h>>2]|0;c[h>>2]=j+ -1;if((j|0)==0?(jd[c[(c[g>>2]|0)+8>>2]&255](g),h=g+8|0,j=c[h>>2]|0,c[h>>2]=j+ -1,(j|0)==0):0)jd[c[(c[g>>2]|0)+16>>2]&255](g);e=c[f>>2]|0;if(((e|0)!=0?(h=e+4|0,j=c[h>>2]|0,c[h>>2]=j+ -1,(j|0)==0):0)?(jd[c[(c[e>>2]|0)+8>>2]&255](e),h=e+8|0,j=c[h>>2]|0,c[h>>2]=j+ -1,(j|0)==0):0)jd[c[(c[e>>2]|0)+16>>2]&255](e)}}else{c[e>>2]=0;c[f>>2]=0}e=c[a+12>>2]|0;if(((e|0)!=0?(h=e+4|0,j=c[h>>2]|0,c[h>>2]=j+ -1,(j|0)==0):0)?(jd[c[(c[e>>2]|0)+8>>2]&255](e),h=e+8|0,j=c[h>>2]|0,c[h>>2]=j+ -1,(j|0)==0):0)jd[c[(c[e>>2]|0)+16>>2]&255](e);d=c[d>>2]|0;if(((d|0)!=0?(h=d+4|0,j=c[h>>2]|0,c[h>>2]=j+ -1,(j|0)==0):0)?(jd[c[(c[d>>2]|0)+8>>2]&255](d),h=d+8|0,j=c[h>>2]|0,c[h>>2]=j+ -1,(j|0)==0):0)jd[c[(c[d>>2]|0)+16>>2]&255](d);Uq(a);i=b;return}function Vd(a,b){a=a|0;b=b|0;var e=0,f=0;e=i;f=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;a=a+4|0;a=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;b=b+(a>>1)|0;if(!(a&1)){a=f;a=md[a&127](b)|0;i=e;return a|0}else{a=c[(c[b>>2]|0)+f>>2]|0;a=md[a&127](b)|0;i=e;return a|0}return 0}function Wd(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0;f=i;g=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;a=a+4|0;a=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;b=b+(a>>1)|0;if(!(a&1)){a=g;kd[a&63](b,e);i=f;return}else{a=c[(c[b>>2]|0)+g>>2]|0;kd[a&63](b,e);i=f;return}}function Xd(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0;g=i;h=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;a=a+4|0;a=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;b=b+(a>>1)|0;if(!(a&1)){a=h;od[a&15](b,e,f);i=g;return}else{a=c[(c[b>>2]|0)+h>>2]|0;od[a&15](b,e,f);i=g;return}}function Yd(){var a=0,b=0;a=i;b=Tq(16)|0;a:do if(!b){while(1){b=c[6860]|0;c[6860]=b+0;if(!b)break;qd[b&3]();b=Tq(16)|0;if(b)break a}b=Wb(4)|0;c[b>>2]=27280;Zc(b|0,27328,220)}while(0);c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;i=a;return b|0}function Zd(a){a=a|0;var b=0;b=i;a=id[a&3]()|0;i=b;return a|0}function _d(a){a=a|0;return 384}function $d(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;if(!a){i=b;return}c[a>>2]=0;d=a+4|0;e=c[d>>2]|0;c[d>>2]=0;if(((e|0)!=0?(g=e+4|0,f=c[g>>2]|0,c[g>>2]=f+ -1,(f|0)==0):0)?(jd[c[(c[e>>2]|0)+8>>2]&255](e),f=e+8|0,g=c[f>>2]|0,c[f>>2]=g+ -1,(g|0)==0):0)jd[c[(c[e>>2]|0)+16>>2]&255](e);c[a+8>>2]=0;e=a+12|0;f=c[e>>2]|0;c[e>>2]=0;if(f){h=f+4|0;g=c[h>>2]|0;c[h>>2]=g+ -1;if((g|0)==0?(jd[c[(c[f>>2]|0)+8>>2]&255](f),g=f+8|0,h=c[g>>2]|0,c[g>>2]=h+ -1,(h|0)==0):0)jd[c[(c[f>>2]|0)+16>>2]&255](f);e=c[e>>2]|0;if(((e|0)!=0?(g=e+4|0,h=c[g>>2]|0,c[g>>2]=h+ -1,(h|0)==0):0)?(jd[c[(c[e>>2]|0)+8>>2]&255](e),g=e+8|0,h=c[g>>2]|0,c[g>>2]=h+ -1,(h|0)==0):0)jd[c[(c[e>>2]|0)+16>>2]&255](e)}d=c[d>>2]|0;if(((d|0)!=0?(g=d+4|0,h=c[g>>2]|0,c[g>>2]=h+ -1,(h|0)==0):0)?(jd[c[(c[d>>2]|0)+8>>2]&255](d),g=d+8|0,h=c[g>>2]|0,c[g>>2]=h+ -1,(h|0)==0):0)jd[c[(c[d>>2]|0)+16>>2]&255](d);Uq(a);i=b;return}function ae(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;i=i+16|0;e=d;f=Tq(180)|0;a:do if(!f){while(1){f=c[6860]|0;c[6860]=f+0;if(!f)break;qd[f&3]();f=Tq(180)|0;if(f)break a}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);g=c[b+4>>2]|0;c[f>>2]=528;c[f+4>>2]=g;c[f+12>>2]=32;c[f+16>>2]=1;c[f+20>>2]=8;c[f+24>>2]=0;c[f+44>>2]=0;c[f+48>>2]=0;c[f+52>>2]=0;c[f+68>>2]=1;c[f+72>>2]=2;c[f+64>>2]=4096;c[f+60>>2]=4;c[f+56>>2]=4;c[f+76>>2]=0;c[f+80>>2]=0;c[f+84>>2]=0;c[f+28>>2]=32;c[f+32>>2]=0;c[f+36>>2]=-2147483648;c[f+40>>2]=2147483647;c[f+8>>2]=0;c[f+92>>2]=32;c[f+96>>2]=1;c[f+100>>2]=8;c[f+104>>2]=0;c[f+124>>2]=0;c[f+128>>2]=0;c[f+132>>2]=0;c[f+148>>2]=1;c[f+152>>2]=2;c[f+144>>2]=4096;c[f+140>>2]=4;c[f+136>>2]=4;c[f+156>>2]=0;c[f+160>>2]=0;c[f+164>>2]=0;c[f+108>>2]=32;c[f+112>>2]=0;c[f+116>>2]=-2147483648;c[f+120>>2]=2147483647;c[f+88>>2]=0;a[f+168>>0]=0;a[f+169>>0]=0;a[f+176>>0]=0;g=b+8|0;c[e>>2]=f;j=Tq(16)|0;b:do if(!j){while(1){h=c[6860]|0;c[6860]=h+0;if(!h)break;qd[h&3]();j=Tq(16)|0;if(j)break b}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);c[j+4>>2]=0;c[j+8>>2]=0;c[j>>2]=784;c[j+12>>2]=f;l=e+4|0;c[l>>2]=j;h=b+12|0;k=c[h>>2]|0;if(k>>>0<(c[b+16>>2]|0)>>>0){if(!k)b=0;else{c[k>>2]=f;c[k+4>>2]=j;c[e>>2]=0;c[l>>2]=0;b=c[h>>2]|0;j=0}c[h>>2]=b+8}else{ve(g,e);j=c[l>>2]|0}if(!j){i=d;return}k=j+4|0;l=c[k>>2]|0;c[k>>2]=l+ -1;if(l){i=d;return}jd[c[(c[j>>2]|0)+8>>2]&255](j);k=j+8|0;l=c[k>>2]|0;c[k>>2]=l+ -1;if(l){i=d;return}jd[c[(c[j>>2]|0)+16>>2]&255](j);i=d;return}function be(a){a=a|0;var b=0;b=i;c[a>>2]=528;pe(a+156|0);pe(a+124|0);oe(a+8|0);i=b;return}function ce(a){a=a|0;var b=0;b=i;c[a>>2]=528;pe(a+156|0);pe(a+124|0);oe(a+8|0);Uq(a);i=b;return}function de(a){a=a|0;return 4}function ee(a,b){a=a|0;b=b|0;return}function fe(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;j=c[b+4>>2]|0;if(!(a[b+169>>0]|0))ge(b+88|0);g=b+172|0;h=b+176|0;do if(a[h>>0]|0){k=c[g>>2]|0;j=(he(b+88|0,j,c[b+124>>2]|0)|0)+k|0;b=c[b+112>>2]|0;if((j|0)<0){b=j+b|0;break}else{b=j-(j>>>0>>0?0:b)|0;break}}else{k=c[j>>2]|0;n=k+8|0;o=c[n>>2]|0;m=o+1|0;c[n>>2]=m;k=c[k>>2]|0;l=a[k+o>>0]|0;j=o+2|0;c[n>>2]=j;m=a[k+m>>0]|0;b=o+3|0;c[n>>2]=b;j=a[k+j>>0]|0;c[n>>2]=o+4;b=(m&255)<<8|l&255|(j&255)<<16|d[k+b>>0]<<24}while(0);if(!(a[h>>0]|0))a[h>>0]=1;c[g>>2]=b;a[e+3>>0]=b>>>24;a[e+2>>0]=b>>>16;a[e+1>>0]=b>>>8;a[e>>0]=b;i=f;return}function ge(b){b=b|0;var d=0,e=0,f=0,g=0,h=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=i;i=i+96|0;h=f+44|0;d=f;w=b+36|0;u=b+40|0;if((c[w>>2]|0)!=(c[u>>2]|0)){i=f;return}j=b+8|0;e=b+20|0;if(c[j>>2]|0){g=b+44|0;n=h+4|0;m=h+8|0;l=h+12|0;k=h+16|0;o=h+20|0;p=h+24|0;q=h+28|0;r=h+32|0;s=h+36|0;t=h+40|0;v=0;do{me(h,(c[e>>2]|0)+1|0);x=c[u>>2]|0;if(x>>>0<(c[g>>2]|0)>>>0){if(!x)x=0;else{c[x>>2]=c[h>>2];a[x+4>>0]=a[n>>0]|0;c[x+8>>2]=c[m>>2];c[x+12>>2]=c[l>>2];c[x+16>>2]=c[k>>2];c[x+20>>2]=c[o>>2];c[x+24>>2]=c[p>>2];c[x+28>>2]=c[q>>2];c[x+32>>2]=c[r>>2];c[x+36>>2]=c[s>>2];c[x+40>>2]=c[t>>2];c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;x=c[u>>2]|0}c[u>>2]=x+44}else ne(w,h);x=c[m>>2]|0;if(x)Uq(c[x+ -4>>2]|0);x=c[l>>2]|0;if(x)Uq(c[x+ -4>>2]|0);x=c[k>>2]|0;if(x)Uq(c[x+ -4>>2]|0);v=v+1|0}while(v>>>0<(c[j>>2]|0)>>>0)}if(!(c[e>>2]|0)){i=f;return}t=b+12|0;k=b+72|0;s=b+76|0;l=d+4|0;j=d+8|0;o=d+12|0;h=d+16|0;m=d+20|0;n=d+24|0;g=d+28|0;p=d+32|0;q=d+36|0;r=d+40|0;b=b+68|0;u=1;do{v=c[t>>2]|0;me(d,1<<(u>>>0>v>>>0?v:u));v=c[k>>2]|0;if(v>>>0<(c[s>>2]|0)>>>0){if(!v)v=0;else{c[v>>2]=c[d>>2];a[v+4>>0]=a[l>>0]|0;c[v+8>>2]=c[j>>2];c[v+12>>2]=c[o>>2];c[v+16>>2]=c[h>>2];c[v+20>>2]=c[m>>2];c[v+24>>2]=c[n>>2];c[v+28>>2]=c[g>>2];c[v+32>>2]=c[p>>2];c[v+36>>2]=c[q>>2];c[v+40>>2]=c[r>>2];c[j+0>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;v=c[k>>2]|0}c[k>>2]=v+44}else ne(b,d);v=c[j>>2]|0;if(v)Uq(c[v+ -4>>2]|0);v=c[o>>2]|0;if(v)Uq(c[v+ -4>>2]|0);v=c[h>>2]|0;if(v)Uq(c[v+ -4>>2]|0);u=u+1|0}while(u>>>0<=(c[e>>2]|0)>>>0);i=f;return}function he(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;g=ie(b,e)|0;c[a>>2]=g;if(g){if(g>>>0>=32){m=c[a+28>>2]|0;i=f;return m|0}e=c[a+12>>2]|0;if(g>>>0>e>>>0){e=g-e|0;m=ie(b,(c[a+68>>2]|0)+((g+ -1|0)*44|0)|0)|0;e=m<>2]|0)+((g+ -1|0)*44|0)|0)|0;a=c[a>>2]|0;if((e|0)<(1<>2]|0;k=da(m>>>13,c[g>>2]|0)|0;h=b+4|0;l=c[h>>2]|0;n=l>>>0>=k>>>0;e=n&1;if(n){c[h>>2]=l-k;k=m-k|0;c[j>>2]=k}else{c[j>>2]=k;k=a+60|0;c[k>>2]=(c[k>>2]|0)+1;k=c[j>>2]|0}if(k>>>0<16777216){k=c[h>>2]|0;do{m=c[b>>2]|0;l=m+8|0;n=c[l>>2]|0;c[l>>2]=n+1;k=d[(c[m>>2]|0)+n>>0]|0|k<<8;c[h>>2]=k;n=c[j>>2]<<8;c[j>>2]=n}while(n>>>0<16777216)}j=a+52|0;n=(c[j>>2]|0)+ -1|0;c[j>>2]=n;if(n){n=e;i=f;return n|0}b=a+48|0;h=c[b>>2]|0;k=a+64|0;l=(c[k>>2]|0)+h|0;c[k>>2]=l;if(l>>>0>8192){l=(l+1|0)>>>1;c[k>>2]=l;n=a+60|0;a=((c[n>>2]|0)+1|0)>>>1;c[n>>2]=a;if((a|0)==(l|0)){n=l+1|0;c[k>>2]=n;k=n}else{k=l;l=a}}else{k=l;l=c[a+60>>2]|0}c[g>>2]=(da(2147483648/(k>>>0)|0,l)|0)>>>18;n=h*5|0;n=n>>>0>259?64:n>>>2;c[b>>2]=n;c[j>>2]=n;n=e;i=f;return n|0}function ie(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=i;e=a+8|0;g=c[e>>2]|0;j=c[b+16>>2]|0;if(j){k=c[a+4>>2]|0;h=g>>>15;c[e>>2]=h;m=(k>>>0)/(h>>>0)|0;n=m>>>(c[b+40>>2]|0);l=c[j+(n<<2)>>2]|0;n=(c[j+(n+1<<2)>>2]|0)+1|0;o=l+1|0;j=c[b+8>>2]|0;if(n>>>0>o>>>0){do{o=(n+l|0)>>>1;p=(c[j+(o<<2)>>2]|0)>>>0>m>>>0;l=p?l:o;n=p?o:n;o=l+1|0}while(n>>>0>o>>>0);m=o}else m=o;o=da(h,c[j+(l<<2)>>2]|0)|0;if((l|0)!=(c[b+32>>2]|0))g=da(c[j+(m<<2)>>2]|0,h)|0}else{j=g>>>15;c[e>>2]=j;m=c[b>>2]|0;h=c[b+8>>2]|0;k=c[a+4>>2]|0;n=m>>>1;l=0;o=0;do{q=da(c[h+(n<<2)>>2]|0,j)|0;p=q>>>0>k>>>0;g=p?q:g;o=p?o:q;l=p?l:n;m=p?n:m;n=(l+m|0)>>>1}while((n|0)!=(l|0))}h=a+4|0;j=k-o|0;c[h>>2]=j;q=g-o|0;c[e>>2]=q;if(q>>>0<16777216)do{p=c[a>>2]|0;o=p+8|0;q=c[o>>2]|0;c[o>>2]=q+1;j=d[(c[p>>2]|0)+q>>0]|0|j<<8;c[h>>2]=j;q=c[e>>2]<<8;c[e>>2]=q}while(q>>>0<16777216);p=(c[b+12>>2]|0)+(l<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=b+28|0;q=(c[p>>2]|0)+ -1|0;c[p>>2]=q;if(q){i=f;return l|0}ke(b);i=f;return l|0}function je(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;g=i;e=a+4|0;h=c[e>>2]|0;f=a+8|0;j=c[f>>2]|0;if(b>>>0>19){k=j>>>16;c[f>>2]=k;j=(h>>>0)/(k>>>0)|0;h=h-(da(j,k)|0)|0;c[e>>2]=h;do{l=c[a>>2]|0;m=l+8|0;k=c[m>>2]|0;c[m>>2]=k+1;h=d[(c[l>>2]|0)+k>>0]|0|h<<8;c[e>>2]=h;k=c[f>>2]<<8;c[f>>2]=k}while(k>>>0<16777216);m=(je(a,b+ -16|0)|0)<<16|j&65535;i=g;return m|0}m=j>>>b;c[f>>2]=m;b=(h>>>0)/(m>>>0)|0;h=h-(da(b,m)|0)|0;c[e>>2]=h;if(m>>>0>=16777216){i=g;return b|0}do{l=c[a>>2]|0;k=l+8|0;m=c[k>>2]|0;c[k>>2]=m+1;h=d[(c[l>>2]|0)+m>>0]|0|h<<8;c[e>>2]=h;m=c[f>>2]<<8;c[f>>2]=m}while(m>>>0<16777216);i=g;return b|0}function ke(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;d=i;e=b+24|0;h=b+20|0;k=(c[h>>2]|0)+(c[e>>2]|0)|0;c[h>>2]=k;if(k>>>0>32768){c[h>>2]=0;if(!(c[b>>2]|0))k=0;else{l=c[b+12>>2]|0;j=0;do{s=l+(j<<2)|0;k=((c[s>>2]|0)+1|0)>>>1;c[s>>2]=k;k=k+(c[h>>2]|0)|0;c[h>>2]=k;j=j+1|0}while(j>>>0<(c[b>>2]|0)>>>0)}}h=2147483648/(k>>>0)|0;if((a[b+4>>0]|0)==0?(f=b+36|0,(c[f>>2]|0)!=0):0){if(c[b>>2]|0){o=c[b+8>>2]|0;m=c[b+12>>2]|0;k=b+40|0;n=b+16|0;j=0;s=0;l=0;while(1){r=(da(l,h)|0)>>>16;c[o+(j<<2)>>2]=r;l=(c[m+(j<<2)>>2]|0)+l|0;r=r>>>(c[k>>2]|0);if(s>>>0>>0){p=j+ -1|0;q=c[n>>2]|0;do{s=s+1|0;c[q+(s<<2)>>2]=p}while((s|0)!=(r|0))}else r=s;j=j+1|0;if(j>>>0>=(c[b>>2]|0)>>>0)break;else s=r}h=c[n>>2]|0;c[h>>2]=0;if(r>>>0<=(c[f>>2]|0)>>>0)g=18}else{h=c[b+16>>2]|0;c[h>>2]=0;r=0;g=18}if((g|0)==18)do{r=r+1|0;c[h+(r<<2)>>2]=(c[b>>2]|0)+ -1}while(r>>>0<=(c[f>>2]|0)>>>0);s=c[b>>2]|0;r=c[e>>2]|0;r=r*5|0;r=r>>>2;s=s<<3;s=s+48|0;q=r>>>0>s>>>0;r=q?s:r;c[e>>2]=r;s=b+28|0;c[s>>2]=r;i=d;return}if(!(c[b>>2]|0)){s=0;r=c[e>>2]|0;r=r*5|0;r=r>>>2;s=s<<3;s=s+48|0;q=r>>>0>s>>>0;r=q?s:r;c[e>>2]=r;s=b+28|0;c[s>>2]=r;i=d;return}j=c[b+8>>2]|0;k=c[b+12>>2]|0;l=0;g=0;do{c[j+(l<<2)>>2]=(da(g,h)|0)>>>16;g=(c[k+(l<<2)>>2]|0)+g|0;l=l+1|0;f=c[b>>2]|0}while(l>>>0>>0);r=c[e>>2]|0;r=r*5|0;r=r>>>2;s=f<<3;s=s+48|0;q=r>>>0>s>>>0;r=q?s:r;c[e>>2]=r;s=b+28|0;c[s>>2]=r;i=d;return}function le(a){a=a|0;Oa(a|0)|0;eq()}function me(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;f=i;c[b>>2]=d;a[b+4>>0]=0;j=b+8|0;c[j>>2]=0;g=b+12|0;c[g>>2]=0;h=b+16|0;c[h>>2]=0;if((d+ -2|0)>>>0>2046){b=Wb(8)|0;c[b>>2]=27520;f=b+4|0;d=Tq(38)|0;if(d){e=d;c[e>>2]=25;g=e+4|0;c[g>>2]=25;g=e+8|0;c[g>>2]=0;e=e+12|0;g=e+0|0;d=744|0;h=g+26|0;do{a[g>>0]=a[d>>0]|0;g=g+1|0;d=d+1|0}while((g|0)<(h|0));c[f>>2]=e;Zc(b|0,27720,224)}while(1){d=c[6860]|0;c[6860]=d+0;if(!d)break;qd[d&3]();d=Tq(38)|0;if(d){e=8;break}}if((e|0)==8){c[d>>2]=25;e=d+4|0;c[e>>2]=25;e=d+8|0;c[e>>2]=0;e=d+12|0;g=e+0|0;d=744|0;h=g+26|0;do{a[g>>0]=a[d>>0]|0;g=g+1|0;d=d+1|0}while((g|0)<(h|0));c[f>>2]=e;Zc(b|0,27720,224)}j=Wb(4)|0;c[j>>2]=27280;Zc(j|0,27328,220)}else{c[b+32>>2]=d+ -1;if(d>>>0>16){e=3;while(1)if(1<>>0>>0)e=e+1|0;else break;k=1<>2]=k;c[b+40>>2]=15-e;k=Tq((k<<2)+76|0)|0;e=k+68&-64;c[e+ -4>>2]=k;c[h>>2]=e}else{c[h>>2]=0;c[b+40>>2]=0;c[b+36>>2]=0}k=(d<<2)+68|0;h=Tq(k)|0;e=h+68&-64;c[e+ -4>>2]=h;c[j>>2]=e;k=Tq(k)|0;e=k+68&-64;c[e+ -4>>2]=k;c[g>>2]=e;c[b+20>>2]=0;g=b+24|0;c[g>>2]=d;if(!d){ke(b);j=c[b>>2]|0;j=j+6|0;j=j>>>1;c[g>>2]=j;k=b+28|0;c[k>>2]=j;i=f;return}else d=0;do{c[e+(d<<2)>>2]=1;d=d+1|0}while(d>>>0<(c[b>>2]|0)>>>0);ke(b);j=c[b>>2]|0;j=j+6|0;j=j>>>1;c[g>>2]=j;k=b+28|0;c[k>>2]=j;i=f;return}}function ne(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=i;f=b+4|0;l=c[f>>2]|0;k=c[b>>2]|0;m=k;h=(l-m|0)/44|0;j=h+1|0;if(j>>>0>97612893)Mn();g=b+8|0;m=((c[g>>2]|0)-m|0)/44|0;if(m>>>0<48806446){o=m<<1;o=o>>>0>>0?j:o;if(!o){p=0;m=0}else n=5}else{o=97612893;n=5}if((n|0)==5){n=o*44|0;n=(n|0)==0?1:n;m=Tq(n)|0;a:do if(!m){while(1){m=c[6860]|0;c[6860]=m+0;if(!m)break;qd[m&3]();m=Tq(n)|0;if(m)break a}p=Wb(4)|0;c[p>>2]=27280;Zc(p|0,27328,220)}while(0);p=o}o=m+(h*44|0)|0;n=m+(p*44|0)|0;if(o){c[o>>2]=c[d>>2];a[m+(h*44|0)+4>>0]=a[d+4>>0]|0;l=d+8|0;c[m+(h*44|0)+8>>2]=c[l>>2];c[m+(h*44|0)+12>>2]=c[d+12>>2];c[m+(h*44|0)+16>>2]=c[d+16>>2];c[m+(h*44|0)+20>>2]=c[d+20>>2];c[m+(h*44|0)+24>>2]=c[d+24>>2];c[m+(h*44|0)+28>>2]=c[d+28>>2];c[m+(h*44|0)+32>>2]=c[d+32>>2];c[m+(h*44|0)+36>>2]=c[d+36>>2];c[m+(h*44|0)+40>>2]=c[d+40>>2];c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;l=c[f>>2]|0;k=c[b>>2]|0}j=m+(j*44|0)|0;if((l|0)!=(k|0)){h=h+ -1-(((l+ -44+(0-k)|0)>>>0)/44|0)|0;while(1){d=l;l=l+ -44|0;c[o+ -44>>2]=c[l>>2];a[o+ -40>>0]=a[d+ -40>>0]|0;p=d+ -36|0;c[o+ -36>>2]=c[p>>2];c[o+ -32>>2]=c[d+ -32>>2];c[o+ -28>>2]=c[d+ -28>>2];c[o+ -24>>2]=c[d+ -24>>2];c[o+ -20>>2]=c[d+ -20>>2];c[o+ -16>>2]=c[d+ -16>>2];c[o+ -12>>2]=c[d+ -12>>2];c[o+ -8>>2]=c[d+ -8>>2];c[o+ -4>>2]=c[d+ -4>>2];c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;if((l|0)==(k|0))break;else o=o+ -44|0}l=c[b>>2]|0;k=c[f>>2]|0;c[b>>2]=m+(h*44|0);c[f>>2]=j;c[g>>2]=n;if((k|0)!=(l|0))do{b=c[k+ -36>>2]|0;if(b)Uq(c[b+ -4>>2]|0);b=c[k+ -32>>2]|0;if(b)Uq(c[b+ -4>>2]|0);b=c[k+ -28>>2]|0;k=k+ -44|0;if(b)Uq(c[b+ -4>>2]|0)}while((k|0)!=(l|0))}else{c[b>>2]=o;c[f>>2]=j;c[g>>2]=n}if(!l){i=e;return}Uq(l);i=e;return}function oe(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=a+36|0;e=c[d>>2]|0;f=a+40|0;g=c[f>>2]|0;if((g|0)!=(e|0))do{c[f>>2]=g+ -44;h=c[g+ -36>>2]|0;if(h)Uq(c[h+ -4>>2]|0);h=c[g+ -32>>2]|0;if(h)Uq(c[h+ -4>>2]|0);g=c[g+ -28>>2]|0;if(g)Uq(c[g+ -4>>2]|0);g=c[f>>2]|0}while((g|0)!=(e|0));f=a+68|0;e=c[f>>2]|0;a=a+72|0;g=c[a>>2]|0;if((g|0)==(e|0)){pe(f);pe(d);i=b;return}do{c[a>>2]=g+ -44;h=c[g+ -36>>2]|0;if(h)Uq(c[h+ -4>>2]|0);h=c[g+ -32>>2]|0;if(h)Uq(c[h+ -4>>2]|0);g=c[g+ -28>>2]|0;if(g)Uq(c[g+ -4>>2]|0);g=c[a>>2]|0}while((g|0)!=(e|0));pe(f);pe(d);i=b;return}function pe(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=c[a>>2]|0;if(!d){i=b;return}e=a+4|0;f=c[e>>2]|0;if((f|0)!=(d|0)){do{c[e>>2]=f+ -44;g=c[f+ -36>>2]|0;if(g)Uq(c[g+ -4>>2]|0);g=c[f+ -32>>2]|0;if(g)Uq(c[g+ -4>>2]|0);f=c[f+ -28>>2]|0;if(f)Uq(c[f+ -4>>2]|0);f=c[e>>2]|0}while((f|0)!=(d|0));d=c[a>>2]|0}Uq(d);i=b;return}function qe(a){a=a|0;return}function re(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function se(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+4>>2]&255](a);i=b;return}function te(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==1040)a=a+12|0;else a=0;return a|0}function ue(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function ve(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;d=i;f=a+4|0;k=c[f>>2]|0;j=c[a>>2]|0;l=j;g=k-l>>3;h=g+1|0;if(h>>>0>536870911)Mn();e=a+8|0;l=(c[e>>2]|0)-l|0;if(l>>3>>>0<268435455){n=l>>2;n=n>>>0>>0?h:n;if(!n){o=0;l=0}else m=5}else{n=536870911;m=5}if((m|0)==5){m=n<<3;m=(m|0)==0?1:m;l=Tq(m)|0;a:do if(!l){while(1){l=c[6860]|0;c[6860]=l+0;if(!l)break;qd[l&3]();l=Tq(m)|0;if(l)break a}o=Wb(4)|0;c[o>>2]=27280;Zc(o|0,27328,220)}while(0);o=n}n=l+(g<<3)|0;m=l+(o<<3)|0;if(n){c[n>>2]=c[b>>2];k=b+4|0;c[l+(g<<3)+4>>2]=c[k>>2];c[b>>2]=0;c[k>>2]=0;k=c[f>>2]|0;j=c[a>>2]|0}h=l+(h<<3)|0;if((k|0)!=(j|0)){g=g+ -1-((k+ -8+(0-j)|0)>>>3)|0;while(1){o=k;k=k+ -8|0;c[n+ -8>>2]=c[k>>2];o=o+ -4|0;c[n+ -4>>2]=c[o>>2];c[k>>2]=0;c[o>>2]=0;if((k|0)==(j|0))break;else n=n+ -8|0}k=c[a>>2]|0;j=c[f>>2]|0;c[a>>2]=l+(g<<3);c[f>>2]=h;c[e>>2]=m;if((j|0)!=(k|0))do{a=c[j+ -4>>2]|0;j=j+ -8|0;if(((a|0)!=0?(n=a+4|0,o=c[n>>2]|0,c[n>>2]=o+ -1,(o|0)==0):0)?(jd[c[(c[a>>2]|0)+8>>2]&255](a),n=a+8|0,o=c[n>>2]|0,c[n>>2]=o+ -1,(o|0)==0):0)jd[c[(c[a>>2]|0)+16>>2]&255](a)}while((j|0)!=(k|0))}else{c[a>>2]=n;c[f>>2]=h;c[e>>2]=m}if(!k){i=d;return}Uq(k);i=d;return}function we(a){a=a|0;var b=0;b=i;c[a>>2]=1208;pe(a+156|0);pe(a+124|0);oe(a+8|0);i=b;return}function xe(a){a=a|0;var b=0;b=i;c[a>>2]=1208;pe(a+156|0);pe(a+124|0);oe(a+8|0);Uq(a);i=b;return}function ye(a){a=a|0;return 2}function ze(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;k=c[d+4>>2]|0;if(!(a[d+169>>0]|0))ge(d+88|0);h=d+170|0;j=d+172|0;do if(a[j>>0]|0){l=e[h>>1]|0;k=(he(d+88|0,k,c[d+124>>2]|0)|0)+l|0;d=c[d+112>>2]|0;if((k|0)<0){k=k+d|0;break}else{k=k-(k>>>0>>0?0:d)|0;break}}else{d=c[k>>2]|0;m=d+8|0;n=c[m>>2]|0;l=n+1|0;c[m>>2]=l;d=c[d>>2]|0;k=a[d+n>>0]|0;c[m>>2]=n+2;k=a[d+l>>0]<<8|k&255}while(0);d=k&65535;if(a[j>>0]|0){b[h>>1]=d;m=(d&65535)>>>8;m=m&255;n=f+1|0;a[n>>0]=m;n=k&255;a[f>>0]=n;i=g;return}a[j>>0]=1;b[h>>1]=d;m=(d&65535)>>>8;m=m&255;n=f+1|0;a[n>>0]=m;n=k&255;a[f>>0]=n;i=g;return}function Ae(a){a=a|0;return}function Be(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Ce(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+4>>2]&255](a);i=b;return}function De(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==1648)a=a+12|0;else a=0;return a|0}function Ee(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Fe(a){a=a|0;var b=0;b=i;c[a>>2]=1816;pe(a+156|0);pe(a+124|0);oe(a+8|0);i=b;return}function Ge(a){a=a|0;var b=0;b=i;c[a>>2]=1816;pe(a+156|0);pe(a+124|0);oe(a+8|0);Uq(a);i=b;return}function He(a){a=a|0;return 1}function Ie(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;j=c[b+4>>2]|0;if(!(a[b+169>>0]|0))ge(b+88|0);h=b+170|0;g=b+171|0;if(a[g>>0]|0){k=d[h>>0]|0;j=(he(b+88|0,j,c[b+124>>2]|0)|0)+k|0;b=c[b+112>>2]|0;if((j|0)<0)b=j+b|0;else b=j-(j>>>0>>0?0:b)|0;b=b&255;if(a[g>>0]|0){j=h;k=b;a[j>>0]=k;a[e>>0]=k;i=f;return}}else{k=c[j>>2]|0;j=k+8|0;b=c[j>>2]|0;c[j>>2]=b+1;b=a[(c[k>>2]|0)+b>>0]|0}a[g>>0]=1;j=h;k=b;a[j>>0]=k;a[e>>0]=k;i=f;return}function Je(a){a=a|0;return}function Ke(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Le(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+4>>2]&255](a);i=b;return}function Me(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==2256)a=a+12|0;else a=0;return a|0}function Ne(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Oe(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;i=i+16|0;e=d;f=Tq(180)|0;a:do if(!f){while(1){f=c[6860]|0;c[6860]=f+0;if(!f)break;qd[f&3]();f=Tq(180)|0;if(f)break a}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);g=c[b+4>>2]|0;c[f>>2]=2424;c[f+4>>2]=g;c[f+12>>2]=32;c[f+16>>2]=1;c[f+20>>2]=8;c[f+24>>2]=0;c[f+44>>2]=0;c[f+48>>2]=0;c[f+52>>2]=0;c[f+68>>2]=1;c[f+72>>2]=2;c[f+64>>2]=4096;c[f+60>>2]=4;c[f+56>>2]=4;c[f+76>>2]=0;c[f+80>>2]=0;c[f+84>>2]=0;c[f+28>>2]=32;c[f+32>>2]=0;c[f+36>>2]=-2147483648;c[f+40>>2]=2147483647;c[f+8>>2]=0;c[f+92>>2]=32;c[f+96>>2]=1;c[f+100>>2]=8;c[f+104>>2]=0;c[f+124>>2]=0;c[f+128>>2]=0;c[f+132>>2]=0;c[f+148>>2]=1;c[f+152>>2]=2;c[f+144>>2]=4096;c[f+140>>2]=4;c[f+136>>2]=4;c[f+156>>2]=0;c[f+160>>2]=0;c[f+164>>2]=0;c[f+108>>2]=32;c[f+112>>2]=0;c[f+116>>2]=-2147483648;c[f+120>>2]=2147483647;c[f+88>>2]=0;a[f+168>>0]=0;a[f+169>>0]=0;a[f+176>>0]=0;g=b+8|0;c[e>>2]=f;j=Tq(16)|0;b:do if(!j){while(1){h=c[6860]|0;c[6860]=h+0;if(!h)break;qd[h&3]();j=Tq(16)|0;if(j)break b}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);c[j+4>>2]=0;c[j+8>>2]=0;c[j>>2]=2608;c[j+12>>2]=f;l=e+4|0;c[l>>2]=j;h=b+12|0;k=c[h>>2]|0;if(k>>>0<(c[b+16>>2]|0)>>>0){if(!k)b=0;else{c[k>>2]=f;c[k+4>>2]=j;c[e>>2]=0;c[l>>2]=0;b=c[h>>2]|0;j=0}c[h>>2]=b+8}else{ve(g,e);j=c[l>>2]|0}if(!j){i=d;return}k=j+4|0;l=c[k>>2]|0;c[k>>2]=l+ -1;if(l){i=d;return}jd[c[(c[j>>2]|0)+8>>2]&255](j);k=j+8|0;l=c[k>>2]|0;c[k>>2]=l+ -1;if(l){i=d;return}jd[c[(c[j>>2]|0)+16>>2]&255](j);i=d;return}function Pe(a){a=a|0;var b=0;b=i;c[a>>2]=2424;pe(a+156|0);pe(a+124|0);oe(a+8|0);i=b;return}function Qe(a){a=a|0;var b=0;b=i;c[a>>2]=2424;pe(a+156|0);pe(a+124|0);oe(a+8|0);Uq(a);i=b;return}function Re(a){a=a|0;return 4}function Se(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;j=c[b+4>>2]|0;if(!(a[b+169>>0]|0))ge(b+88|0);g=b+172|0;h=b+176|0;do if(a[h>>0]|0){k=c[g>>2]|0;j=(he(b+88|0,j,c[b+124>>2]|0)|0)+k|0;b=c[b+112>>2]|0;if((j|0)<0){b=j+b|0;break}else{b=j-(j>>>0>>0?0:b)|0;break}}else{k=c[j>>2]|0;n=k+8|0;o=c[n>>2]|0;m=o+1|0;c[n>>2]=m;k=c[k>>2]|0;l=a[k+o>>0]|0;j=o+2|0;c[n>>2]=j;m=a[k+m>>0]|0;b=o+3|0;c[n>>2]=b;j=a[k+j>>0]|0;c[n>>2]=o+4;b=(m&255)<<8|l&255|(j&255)<<16|d[k+b>>0]<<24}while(0);if(!(a[h>>0]|0))a[h>>0]=1;c[g>>2]=b;a[e+3>>0]=b>>>24;a[e+2>>0]=b>>>16;a[e+1>>0]=b>>>8;a[e>>0]=b;i=f;return}function Te(a){a=a|0;return}function Ue(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Ve(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+4>>2]&255](a);i=b;return}function We(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==2864)a=a+12|0;else a=0;return a|0}function Xe(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Ye(a){a=a|0;var b=0;b=i;c[a>>2]=3032;pe(a+156|0);pe(a+124|0);oe(a+8|0);i=b;return}function Ze(a){a=a|0;var b=0;b=i;c[a>>2]=3032;pe(a+156|0);pe(a+124|0);oe(a+8|0);Uq(a);i=b;return}function _e(a){a=a|0;return 2}function $e(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;j=c[d+4>>2]|0;if(!(a[d+169>>0]|0))ge(d+88|0);g=d+170|0;h=d+172|0;do if(a[h>>0]|0){k=b[g>>1]|0;j=(he(d+88|0,j,c[d+124>>2]|0)|0)+k|0;d=c[d+112>>2]|0;if((j|0)<0){j=j+d|0;break}else{j=j-(j>>>0>>0?0:d)|0;break}}else{d=c[j>>2]|0;l=d+8|0;m=c[l>>2]|0;k=m+1|0;c[l>>2]=k;d=c[d>>2]|0;j=a[d+m>>0]|0;c[l>>2]=m+2;j=a[d+k>>0]<<8|j&255}while(0);d=j&65535;if(a[h>>0]|0){b[g>>1]=d;l=(d&65535)>>>8;l=l&255;m=e+1|0;a[m>>0]=l;m=j&255;a[e>>0]=m;i=f;return}a[h>>0]=1;b[g>>1]=d;l=(d&65535)>>>8;l=l&255;m=e+1|0;a[m>>0]=l;m=j&255;a[e>>0]=m;i=f;return}function af(a){a=a|0;return}function bf(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function cf(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+4>>2]&255](a);i=b;return}function df(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==3472)a=a+12|0;else a=0;return a|0}function ef(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function ff(a){a=a|0;var b=0;b=i;c[a>>2]=3640;pe(a+156|0);pe(a+124|0);oe(a+8|0);i=b;return}function gf(a){a=a|0;var b=0;b=i;c[a>>2]=3640;pe(a+156|0);pe(a+124|0);oe(a+8|0);Uq(a);i=b;return}function hf(a){a=a|0;return 1}function jf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;h=c[b+4>>2]|0;if(!(a[b+169>>0]|0))ge(b+88|0);g=b+170|0;f=b+171|0;if(a[f>>0]|0){j=a[g>>0]|0;h=(he(b+88|0,h,c[b+124>>2]|0)|0)+j|0;b=c[b+112>>2]|0;if((h|0)<0)b=h+b|0;else b=h-(h>>>0>>0?0:b)|0;b=b&255;if(a[f>>0]|0){h=g;j=b;a[h>>0]=j;a[d>>0]=j;i=e;return}}else{j=c[h>>2]|0;h=j+8|0;b=c[h>>2]|0;c[h>>2]=b+1;b=a[(c[j>>2]|0)+b>>0]|0}a[f>>0]=1;h=g;j=b;a[h>>0]=j;a[d>>0]=j;i=e;return}function kf(a){a=a|0;return}function lf(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function mf(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+4>>2]&255](a);i=b;return}function nf(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==4080)a=a+12|0;else a=0;return a|0}function of(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function pf(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;m=c[b+8>>2]|0;g=c[b+12>>2]|0;if((m|0)!=(g|0)){k=0;do{j=c[m>>2]|0;l=c[m+4>>2]|0;h=(l|0)==0;if(!h){n=l+4|0;c[n>>2]=(c[n>>2]|0)+1}kd[c[(c[j>>2]|0)+16>>2]&63](j,e+k|0);k=(md[c[(c[j>>2]|0)+8>>2]&127](j)|0)+k|0;if((!h?(j=l+4|0,n=c[j>>2]|0,c[j>>2]=n+ -1,(n|0)==0):0)?(jd[c[(c[l>>2]|0)+8>>2]&255](l),j=l+8|0,n=c[j>>2]|0,c[j>>2]=n+ -1,(n|0)==0):0)jd[c[(c[l>>2]|0)+16>>2]&255](l);m=m+8|0}while((m|0)!=(g|0))}g=b+20|0;if(!(a[g>>0]|0)){i=f;return}a[g>>0]=0;n=c[b+4>>2]|0;m=c[n>>2]|0;k=m+8|0;j=c[k>>2]|0;c[k>>2]=j+1;j=d[(c[m>>2]|0)+j>>0]<<24;m=c[n>>2]|0;k=m+8|0;l=c[k>>2]|0;c[k>>2]=l+1;j=d[(c[m>>2]|0)+l>>0]<<16|j;l=c[n>>2]|0;m=l+8|0;k=c[m>>2]|0;c[m>>2]=k+1;k=j|d[(c[l>>2]|0)+k>>0]<<8;l=c[n>>2]|0;j=l+8|0;m=c[j>>2]|0;c[j>>2]=m+1;c[n+4>>2]=k|d[(c[l>>2]|0)+m>>0];i=f;return}function qf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;c[a>>2]=4248;e=a+8|0;d=c[e>>2]|0;if(!d){i=b;return}a=a+12|0;g=c[a>>2]|0;if((g|0)!=(d|0)){while(1){f=g+ -8|0;c[a>>2]=f;g=c[g+ -4>>2]|0;if(g){h=g+4|0;f=c[h>>2]|0;c[h>>2]=f+ -1;if((f|0)==0?(jd[c[(c[g>>2]|0)+8>>2]&255](g),f=g+8|0,h=c[f>>2]|0,c[f>>2]=h+ -1,(h|0)==0):0)jd[c[(c[g>>2]|0)+16>>2]&255](g);f=c[a>>2]|0}if((f|0)==(d|0))break;else g=f}d=c[e>>2]|0}Uq(d);i=b;return}function rf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;c[a>>2]=4248;e=a+8|0;d=c[e>>2]|0;if(!d){Uq(a);i=b;return}f=a+12|0;h=c[f>>2]|0;if((h|0)!=(d|0)){while(1){g=h+ -8|0;c[f>>2]=g;h=c[h+ -4>>2]|0;if(h){j=h+4|0;g=c[j>>2]|0;c[j>>2]=g+ -1;if((g|0)==0?(jd[c[(c[h>>2]|0)+8>>2]&255](h),g=h+8|0,j=c[g>>2]|0,c[g>>2]=j+ -1,(j|0)==0):0)jd[c[(c[h>>2]|0)+16>>2]&255](h);g=c[f>>2]|0}if((g|0)==(d|0))break;else h=g}d=c[e>>2]|0}Uq(d);Uq(a);i=b;return}function sf(a){a=a|0;return}function tf(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function uf(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function vf(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==4632)a=a+12|0;else a=0;return a|0}function wf(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function xf(a){a=a|0;return}function yf(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function zf(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(a)Uq(a);i=b;return}function Af(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==4928)a=a+12|0;else a=0;return a|0}function Bf(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Cf(a){a=a|0;return}function Df(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Ef(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(a)Uq(a);i=b;return}function Ff(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==5144)a=a+12|0;else a=0;return a|0}function Gf(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Hf(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function If(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function Jf(a){a=a|0;var b=0;b=i;pe(a+4768|0);pe(a+4736|0);pe(a+4688|0);pe(a+4656|0);pe(a+4608|0);pe(a+4576|0);pe(a+4528|0);pe(a+4496|0);pe(a+4448|0);pe(a+4416|0);oe(a+4300|0);oe(a+4220|0);oe(a+4140|0);oe(a+4060|0);oe(a+3980|0);Kf(a);i=b;return}function Kf(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=c[a+896>>2]|0;if(d){e=c[d+8>>2]|0;if(e)Uq(c[e+ -4>>2]|0);e=c[d+12>>2]|0;if(e)Uq(c[e+ -4>>2]|0);e=c[d+16>>2]|0;if(e)Uq(c[e+ -4>>2]|0);Uq(d)}d=c[a+900>>2]|0;if(!d)d=0;else{e=c[d+8>>2]|0;if(e)Uq(c[e+ -4>>2]|0);e=c[d+12>>2]|0;if(e)Uq(c[e+ -4>>2]|0);e=c[d+16>>2]|0;if(e)Uq(c[e+ -4>>2]|0);Uq(d);d=0}do{e=c[a+(d<<2)+904>>2]|0;if(e){f=c[e+8>>2]|0;if(f)Uq(c[f+ -4>>2]|0);f=c[e+12>>2]|0;if(f)Uq(c[f+ -4>>2]|0);f=c[e+16>>2]|0;if(f)Uq(c[f+ -4>>2]|0);Uq(e)}e=c[a+(d<<2)+1928>>2]|0;if(e){f=c[e+8>>2]|0;if(f)Uq(c[f+ -4>>2]|0);f=c[e+12>>2]|0;if(f)Uq(c[f+ -4>>2]|0);f=c[e+16>>2]|0;if(f)Uq(c[f+ -4>>2]|0);Uq(e)}e=c[a+(d<<2)+2952>>2]|0;if(e){f=c[e+8>>2]|0;if(f)Uq(c[f+ -4>>2]|0);f=c[e+12>>2]|0;if(f)Uq(c[f+ -4>>2]|0);f=c[e+16>>2]|0;if(f)Uq(c[f+ -4>>2]|0);Uq(e)}d=d+1|0}while((d|0)!=256);d=c[a+860>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+864>>2]|0;if(d)Uq(c[d+ -4>>2]|0);a=c[a+868>>2]|0;if(!a){i=b;return}Uq(c[a+ -4>>2]|0);i=b;return}function Lf(a){a=a|0;var b=0,d=0;b=i;d=c[a+56>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+60>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+64>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+12>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+16>>2]|0;if(d)Uq(c[d+ -4>>2]|0);a=c[a+20>>2]|0;if(!a){i=b;return}Uq(c[a+ -4>>2]|0);i=b;return}function Mf(a){a=a|0;var b=0,d=0;b=i;d=c[a+280>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+284>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+288>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+236>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+240>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+244>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+192>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+196>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+200>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+148>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+152>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+156>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+104>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+108>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+112>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+60>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+64>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+68>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+16>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+20>>2]|0;if(d)Uq(c[d+ -4>>2]|0);a=c[a+24>>2]|0;if(!a){i=b;return}Uq(c[a+ -4>>2]|0);i=b;return}function Nf(b){b=b|0;var c=0,d=0;c=i;d=b+8|0;a[b+0>>0]=0;a[b+1>>0]=0;a[b+2>>0]=0;a[b+3>>0]=0;a[b+4>>0]=0;a[b+5>>0]=0;a[b+6>>0]=0;me(d,128);me(b+52|0,256);me(b+96|0,256);me(b+140|0,256);me(b+184|0,256);me(b+228|0,256);me(b+272|0,256);i=c;return}function Of(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;a[b>>0]=0;me(b+4|0,516);e=b+48|0;c[e>>2]=6;a[b+52>>0]=0;c[b+80>>2]=5;c[b+64>>2]=0;c[b+88>>2]=0;c[b+84>>2]=0;g=Tq(92)|0;f=g+68&-64;c[f+ -4>>2]=g;c[b+56>>2]=f;f=Tq(92)|0;g=f+68&-64;c[g+ -4>>2]=f;c[b+60>>2]=g;c[b+68>>2]=0;f=b+72|0;c[f>>2]=6;h=0;do{c[g+(h<<2)>>2]=1;h=h+1|0}while(h>>>0<(c[e>>2]|0)>>>0);ke(e);e=((c[e>>2]|0)+6|0)>>>1;c[f>>2]=e;c[b+76>>2]=e;e=b+92|0;b=e+72|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(b|0));i=d;return}function Pf(d){d=d|0;var e=0,f=0,g=0;e=i;f=d+52|0;g=d+72|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+76|0;f=d+96|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+100|0;g=d+120|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+124|0;f=d+144|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+148|0;g=d+168|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+172|0;f=d+192|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+196|0;g=d+216|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+220|0;f=d+240|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+244|0;g=d+264|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+268|0;f=d+288|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+292|0;g=d+312|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+316|0;f=d+336|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+340|0;g=d+360|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+364|0;f=d+384|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+388|0;g=d+408|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+412|0;f=d+432|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+436|0;g=d+456|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+460|0;f=d+480|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+484|0;g=d+504|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+508|0;f=d+528|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+532|0;g=d+552|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+556|0;f=d+576|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+580|0;g=d+600|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+604|0;f=d+624|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+628|0;g=d+648|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+652|0;f=d+672|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+676|0;g=d+696|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+700|0;f=d+720|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+724|0;g=d+744|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+748|0;f=d+768|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+772|0;g=d+792|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+796|0;f=d+816|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;me(d+852|0,64);a[d+3976>>0]=0;f=d+20|0;g=f+32|0;do{b[f>>1]=0;f=f+2|0}while((f|0)<(g|0));f=Tq(44)|0;a:do if(!f){while(1){f=c[6860]|0;c[6860]=f+0;if(!f)break;qd[f&3]();f=Tq(44)|0;if(f)break a}g=Wb(4)|0;c[g>>2]=27280;Zc(g|0,27328,220)}while(0);me(f,256);c[d+896>>2]=f;f=Tq(44)|0;b:do if(!f){while(1){f=c[6860]|0;c[6860]=f+0;if(!f)break;qd[f&3]();f=Tq(44)|0;if(f)break b}g=Wb(4)|0;c[g>>2]=27280;Zc(g|0,27328,220)}while(0);me(f,256);c[d+900>>2]=f;f=d+820|0;c[f+0>>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;c[f+24>>2]=0;c[f+28>>2]=0;f=0;c:while(1){g=Tq(44)|0;if(!g)do{g=c[6860]|0;c[6860]=g+0;if(!g){f=20;break c}qd[g&3]();g=Tq(44)|0}while((g|0)==0);me(g,256);c[d+(f<<2)+904>>2]=g;g=Tq(44)|0;if(!g)do{g=c[6860]|0;c[6860]=g+0;if(!g){f=27;break c}qd[g&3]();g=Tq(44)|0}while((g|0)==0);me(g,256);c[d+(f<<2)+1928>>2]=g;g=Tq(44)|0;if(!g)do{g=c[6860]|0;c[6860]=g+0;if(!g){f=34;break c}qd[g&3]();g=Tq(44)|0}while((g|0)==0);me(g,256);c[d+(f<<2)+2952>>2]=g;f=f+1|0;if((f|0)>=256){f=38;break}}if((f|0)==20){g=Wb(4)|0;c[g>>2]=27280;Zc(g|0,27328,220)}else if((f|0)==27){g=Wb(4)|0;c[g>>2]=27280;Zc(g|0,27328,220)}else if((f|0)==34){g=Wb(4)|0;c[g>>2]=27280;Zc(g|0,27328,220)}else if((f|0)==38){c[d+3984>>2]=16;c[d+3988>>2]=4;c[d+3992>>2]=8;c[d+3996>>2]=0;c[d+4016>>2]=0;c[d+4020>>2]=0;c[d+4024>>2]=0;c[d+4040>>2]=1;c[d+4044>>2]=2;c[d+4036>>2]=4096;c[d+4032>>2]=4;c[d+4028>>2]=4;c[d+4048>>2]=0;c[d+4052>>2]=0;c[d+4056>>2]=0;c[d+4e3>>2]=16;c[d+4004>>2]=65536;c[d+4008>>2]=-32768;c[d+4012>>2]=32767;c[d+3980>>2]=0;c[d+4064>>2]=16;c[d+4068>>2]=1;c[d+4072>>2]=8;c[d+4076>>2]=0;c[d+4096>>2]=0;c[d+4100>>2]=0;c[d+4104>>2]=0;c[d+4120>>2]=1;c[d+4124>>2]=2;c[d+4116>>2]=4096;c[d+4112>>2]=4;c[d+4108>>2]=4;c[d+4128>>2]=0;c[d+4132>>2]=0;c[d+4136>>2]=0;c[d+4080>>2]=16;c[d+4084>>2]=65536;c[d+4088>>2]=-32768;c[d+4092>>2]=32767;c[d+4060>>2]=0;c[d+4144>>2]=32;c[d+4148>>2]=2;c[d+4152>>2]=8;c[d+4156>>2]=0;c[d+4176>>2]=0;c[d+4180>>2]=0;c[d+4184>>2]=0;c[d+4200>>2]=1;c[d+4204>>2]=2;c[d+4196>>2]=4096;c[d+4192>>2]=4;c[d+4188>>2]=4;c[d+4208>>2]=0;c[d+4212>>2]=0;c[d+4216>>2]=0;c[d+4160>>2]=32;c[d+4164>>2]=0;c[d+4168>>2]=-2147483648;c[d+4172>>2]=2147483647;c[d+4140>>2]=0;c[d+4224>>2]=32;c[d+4228>>2]=22;c[d+4232>>2]=8;c[d+4236>>2]=0;c[d+4256>>2]=0;c[d+4260>>2]=0;c[d+4264>>2]=0;c[d+4280>>2]=1;c[d+4284>>2]=2;c[d+4276>>2]=4096;c[d+4272>>2]=4;c[d+4268>>2]=4;c[d+4288>>2]=0;c[d+4292>>2]=0;c[d+4296>>2]=0;c[d+4240>>2]=32;c[d+4244>>2]=0;c[d+4248>>2]=-2147483648;c[d+4252>>2]=2147483647;c[d+4220>>2]=0;c[d+4304>>2]=32;c[d+4308>>2]=20;c[d+4312>>2]=8;c[d+4316>>2]=0;c[d+4336>>2]=0;c[d+4340>>2]=0;c[d+4344>>2]=0;c[d+4360>>2]=1;c[d+4364>>2]=2;c[d+4356>>2]=4096;c[d+4352>>2]=4;c[d+4348>>2]=4;c[d+4368>>2]=0;c[d+4372>>2]=0;c[d+4376>>2]=0;c[d+4320>>2]=32;c[d+4324>>2]=0;c[d+4328>>2]=-2147483648;c[d+4332>>2]=2147483647;c[d+4300>>2]=0;c[d+4384>>2]=16;c[d+4388>>2]=4;c[d+4392>>2]=8;c[d+4396>>2]=0;c[d+4416>>2]=0;c[d+4420>>2]=0;c[d+4424>>2]=0;c[d+4440>>2]=1;c[d+4444>>2]=2;c[d+4436>>2]=4096;c[d+4432>>2]=4;c[d+4428>>2]=4;c[d+4448>>2]=0;c[d+4452>>2]=0;c[d+4456>>2]=0;c[d+4400>>2]=16;c[d+4404>>2]=65536;c[d+4408>>2]=-32768;c[d+4412>>2]=32767;c[d+4380>>2]=0;c[d+4464>>2]=16;c[d+4468>>2]=1;c[d+4472>>2]=8;c[d+4476>>2]=0;c[d+4496>>2]=0;c[d+4500>>2]=0;c[d+4504>>2]=0;c[d+4520>>2]=1;c[d+4524>>2]=2;c[d+4516>>2]=4096;c[d+4512>>2]=4;c[d+4508>>2]=4;c[d+4528>>2]=0;c[d+4532>>2]=0;c[d+4536>>2]=0;c[d+4480>>2]=16;c[d+4484>>2]=65536;c[d+4488>>2]=-32768;c[d+4492>>2]=32767;c[d+4460>>2]=0;c[d+4544>>2]=32;c[d+4548>>2]=2;c[d+4552>>2]=8;c[d+4556>>2]=0;c[d+4576>>2]=0;c[d+4580>>2]=0;c[d+4584>>2]=0;c[d+4600>>2]=1;c[d+4604>>2]=2;c[d+4596>>2]=4096;c[d+4592>>2]=4;c[d+4588>>2]=4;c[d+4608>>2]=0;c[d+4612>>2]=0;c[d+4616>>2]=0;c[d+4560>>2]=32;c[d+4564>>2]=0;c[d+4568>>2]=-2147483648;c[d+4572>>2]=2147483647;c[d+4540>>2]=0;c[d+4624>>2]=32;c[d+4628>>2]=22;c[d+4632>>2]=8;c[d+4636>>2]=0;c[d+4656>>2]=0;c[d+4660>>2]=0;c[d+4664>>2]=0;c[d+4680>>2]=1;c[d+4684>>2]=2;c[d+4676>>2]=4096;c[d+4672>>2]=4;c[d+4668>>2]=4;c[d+4688>>2]=0;c[d+4692>>2]=0;c[d+4696>>2]=0;c[d+4640>>2]=32;c[d+4644>>2]=0;c[d+4648>>2]=-2147483648;c[d+4652>>2]=2147483647;c[d+4620>>2]=0;c[d+4704>>2]=32;c[d+4708>>2]=20;c[d+4712>>2]=8;c[d+4716>>2]=0;c[d+4736>>2]=0;c[d+4740>>2]=0;c[d+4744>>2]=0;c[d+4760>>2]=1;c[d+4764>>2]=2;c[d+4756>>2]=4096;c[d+4752>>2]=4;c[d+4748>>2]=4;c[d+4768>>2]=0;c[d+4772>>2]=0;c[d+4776>>2]=0;c[d+4720>>2]=32;c[d+4724>>2]=0;c[d+4728>>2]=-2147483648;c[d+4732>>2]=2147483647;c[d+4700>>2]=0;a[d+4780>>0]=0;a[d+4781>>0]=0;i=e;return}}function Qf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;h=e;f=c[b+8>>2]|0;b=c[b+4>>2]|0;Tf(h,f,b);g=c[h>>2]|0;a[d+3>>0]=g>>>24;a[d+2>>0]=g>>>16;a[d+1>>0]=g>>>8;a[d>>0]=g;g=c[h+4>>2]|0;a[d+7>>0]=g>>>24;a[d+6>>0]=g>>>16;a[d+5>>0]=g>>>8;a[d+4>>0]=g;g=c[h+8>>2]|0;a[d+11>>0]=g>>>24;a[d+10>>0]=g>>>16;a[d+9>>0]=g>>>8;a[d+8>>0]=g;g=c[h+12>>2]|0;a[d+13>>0]=(g&65535)>>>8;a[d+12>>0]=g;a[d+14>>0]=g>>>16;a[d+15>>0]=g>>>24;h=c[h+16>>2]|0;a[d+16>>0]=h;a[d+17>>0]=(h&65535)>>>8;a[d+19>>0]=h>>>24;a[d+18>>0]=h>>>16;h=Uf(f+4784|0,b)|0;g=H;a[d+23>>0]=h>>>24;a[d+22>>0]=h>>>16;a[d+21>>0]=h>>>8;a[d+20>>0]=h;j=lr(h|0,g|0,56)|0;a[d+27>>0]=j;j=lr(h|0,g|0,48)|0;a[d+26>>0]=j;h=lr(h|0,g|0,40)|0;a[d+25>>0]=h;a[d+24>>0]=g;Vf(f+5112|0,b,d+28|0);i=e;return}function Rf(a){a=a|0;var b=0;b=i;c[a>>2]=5368;a=c[a+8>>2]|0;if(!a){i=b;return}Mf(a+5112|0);pe(a+5096|0);pe(a+5064|0);oe(a+4948|0);Lf(a+4784|0);Jf(a);Uq(a);i=b;return}function Sf(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=5368;d=c[a+8>>2]|0;if(!d){Uq(a);i=b;return}Mf(d+5112|0);pe(d+5096|0);pe(d+5064|0);oe(d+4948|0);Lf(d+4784|0);Jf(d);Uq(d);Uq(a);i=b;return}function Tf(f,g,h){f=f|0;g=g|0;h=h|0;var 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;j=i;i=i+32|0;k=j;l=g+4781|0;if(!(a[l>>0]|0)){ge(g+4380|0);ge(g+4460|0);ge(g+4540|0);ge(g+4620|0);ge(g+4700|0);a[l>>0]=1}l=g+3976|0;if(!(a[l>>0]|0)){a[l>>0]=1;Zf(c[h>>2]|0,k,20);r=d[k+1>>0]<<8|d[k>>0]|d[k+2>>0]<<16|d[k+3>>0]<<24;o=d[k+5>>0]<<8|d[k+4>>0]|d[k+6>>0]<<16|d[k+7>>0]<<24;p=d[k+9>>0]<<8|d[k+8>>0]|d[k+10>>0]<<16|d[k+11>>0]<<24;q=(a[k+13>>0]<<8|d[k+12>>0])&65535;s=a[k+14>>0]|0;t=a[k+15>>0]|0;u=a[k+16>>0]|0;h=a[k+17>>0]|0;v=(a[k+19>>0]<<8|d[k+18>>0])&65535;a[g>>0]=r;a[g+1>>0]=r>>8;a[g+2>>0]=r>>16;a[g+3>>0]=r>>24;r=g+4|0;a[r>>0]=o;a[r+1>>0]=o>>8;a[r+2>>0]=o>>16;a[r+3>>0]=o>>24;r=g+8|0;a[r>>0]=p;a[r+1>>0]=p>>8;a[r+2>>0]=p>>16;a[r+3>>0]=p>>24;r=g+12|0;a[r>>0]=q;a[r+1>>0]=q>>8;a[g+14>>0]=s;a[g+15>>0]=t;a[g+16>>0]=u;a[g+17>>0]=h;h=g+18|0;a[h>>0]=v;a[h+1>>0]=v>>8;f=f+0|0;h=g+0|0;g=f+20|0;do{a[f>>0]=a[h>>0]|0;f=f+1|0;h=h+1|0}while((f|0)<(g|0));i=j;return}m=_f(h,g+852|0)|0;if(m){o=g+14|0;k=a[o>>0]|0;if(m&32){k=(_f(h,c[g+((((k&255)>>>7&255)<<7|k&7|((k&255)>>>6&255)<<6&64|((k&255)>>>3&255)<<3&56)<<2)+904>>2]|0)|0)&255;a[o>>0]=k}l=k&7;k=(k&255)>>>3&7;n=d[5768+(k<<3)+l>>0]|0;l=d[5832+(k<<3)+l>>0]|0;if(!(m&16)){u=b[g+(n<<1)+20>>1]|0;v=g+12|0;a[v>>0]=u;a[v+1>>0]=u>>8}else{p=g+(n<<1)+20|0;q=e[p>>1]|0;q=($f(g+4380|0,h,(c[g+4416>>2]|0)+((n>>>0<3?n:3)*44|0)|0)|0)+q|0;r=c[g+4404>>2]|0;if((q|0)<0)q=q+r|0;else q=q-(q>>>0>>0?0:r)|0;v=q&65535;u=g+12|0;a[u>>0]=v;a[u+1>>0]=v>>8;b[p>>1]=v}if(m&8){v=g+15|0;a[v>>0]=_f(h,c[g+(d[v>>0]<<2)+1928>>2]|0)|0}if(m&4){p=_f(h,c[g+(((d[o>>0]|0)>>>6&1)<<2)+896>>2]|0)|0;o=g+16|0;p=(a[o>>0]|0)+p|0;if((p|0)<0)p=p+256|0;else p=(p|0)>255?p+ -256|0:p;a[o>>0]=p}if(m&2){v=g+17|0;a[v>>0]=_f(h,c[g+(d[v>>0]<<2)+2952>>2]|0)|0}if(m&1){m=g+18|0;p=(d[m>>0]|d[m+1>>0]<<8)&65535;p=($f(g+4460|0,h,c[g+4496>>2]|0)|0)+p|0;o=c[g+4484>>2]|0;if((p|0)<0)o=p+o|0;else o=p-(p>>>0>>0?0:o)|0;v=o&65535;a[m>>0]=v;a[m+1>>0]=v>>8}}else{k=a[g+14>>0]|0;n=k&7;k=(k&255)>>>3&7;l=d[5832+(k<<3)+n>>0]|0;n=d[5768+(k<<3)+n>>0]|0}q=g+(n*24|0)+52|0;o=g+(n*24|0)+60|0;p=c[o>>2]|0;m=g+4540|0;k=(k|0)==1&1;p=($f(m,h,(c[g+4576>>2]|0)+(k*44|0)|0)|0)+p|0;r=c[g+4564>>2]|0;if((p|0)<0)p=p+r|0;else p=p-(p>>>0>>0?0:r)|0;r=(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)+p|0;a[g>>0]=r;a[g+1>>0]=r>>8;a[g+2>>0]=r>>16;a[g+3>>0]=r>>24;r=g+(n*24|0)+72|0;s=c[o>>2]|0;do if(!(a[r>>0]|0)){u=g+(n*24|0)+56|0;t=c[u>>2]|0;if((s|0)>=(p|0)){if((t|0)<(p|0)){c[q>>2]=t;c[u>>2]=p}else c[q>>2]=p;a[r>>0]=1;break}c[q>>2]=t;c[u>>2]=s;t=g+(n*24|0)+68|0;q=c[t>>2]|0;s=g+(n*24|0)+64|0;r=c[s>>2]|0;if((q|0)<(p|0)){c[o>>2]=r;c[s>>2]=q;c[t>>2]=p;break}if((r|0)<(p|0)){c[o>>2]=r;c[s>>2]=p;break}else{c[o>>2]=p;break}}else{t=g+(n*24|0)+64|0;u=c[t>>2]|0;if((p|0)>=(s|0)){o=g+(n*24|0)+68|0;if((p|0)<(u|0)){c[o>>2]=u;c[t>>2]=p}else c[o>>2]=p;a[r>>0]=0;break}c[g+(n*24|0)+68>>2]=u;c[t>>2]=s;s=c[q>>2]|0;t=g+(n*24|0)+56|0;r=c[t>>2]|0;if((p|0)<(s|0)){c[o>>2]=r;c[t>>2]=s;c[q>>2]=p;break}if((p|0)<(r|0)){c[o>>2]=r;c[t>>2]=p;break}else{c[o>>2]=p;break}}while(0);r=g+(n*24|0)+436|0;p=g+(n*24|0)+444|0;q=c[p>>2]|0;s=c[m>>2]|0;o=g+4620|0;q=($f(o,h,(c[g+4656>>2]|0)+(((s>>>0<20?s&-2:20)|k)*44|0)|0)|0)+q|0;s=c[g+4644>>2]|0;if((q|0)<0)q=q+s|0;else q=q-(q>>>0>>0?0:s)|0;s=g+4|0;t=(d[s>>0]|d[s+1>>0]<<8|d[s+2>>0]<<16|d[s+3>>0]<<24)+q|0;a[s>>0]=t;a[s+1>>0]=t>>8;a[s+2>>0]=t>>16;a[s+3>>0]=t>>24;s=g+(n*24|0)+456|0;t=c[p>>2]|0;do if(!(a[s>>0]|0)){u=g+(n*24|0)+440|0;v=c[u>>2]|0;if((t|0)>=(q|0)){if((v|0)<(q|0)){c[r>>2]=v;c[u>>2]=q}else c[r>>2]=q;a[s>>0]=1;break}c[r>>2]=v;c[u>>2]=t;s=g+(n*24|0)+452|0;r=c[s>>2]|0;n=g+(n*24|0)+448|0;t=c[n>>2]|0;if((r|0)<(q|0)){c[p>>2]=t;c[n>>2]=r;c[s>>2]=q;break}if((t|0)<(q|0)){c[p>>2]=t;c[n>>2]=q;break}else{c[p>>2]=q;break}}else{u=g+(n*24|0)+448|0;v=c[u>>2]|0;if((q|0)>=(t|0)){n=g+(n*24|0)+452|0;if((q|0)<(v|0)){c[n>>2]=v;c[u>>2]=q}else c[n>>2]=q;a[s>>0]=0;break}c[g+(n*24|0)+452>>2]=v;c[u>>2]=t;s=c[r>>2]|0;n=g+(n*24|0)+440|0;t=c[n>>2]|0;if((q|0)<(s|0)){c[p>>2]=t;c[n>>2]=s;c[r>>2]=q;break}if((q|0)<(t|0)){c[p>>2]=t;c[n>>2]=q;break}else{c[p>>2]=q;break}}while(0);m=(c[o>>2]|0)+(c[m>>2]|0)|0;l=g+(l<<2)+820|0;n=c[l>>2]|0;if(m>>>0<36)m=m>>>1&2147483646;else m=18;k=($f(g+4700|0,h,(c[g+4736>>2]|0)+((m|k)*44|0)|0)|0)+n|0;h=c[g+4724>>2]|0;if((k|0)<0)h=k+h|0;else h=k-(k>>>0>>0?0:h)|0;v=g+8|0;a[v>>0]=h;a[v+1>>0]=h>>8;a[v+2>>0]=h>>16;a[v+3>>0]=h>>24;c[l>>2]=h;f=f+0|0;h=g+0|0;g=f+20|0;do{a[f>>0]=a[h>>0]|0;f=f+1|0;h=h+1|0}while((f|0)<(g|0));i=j;return}function Uf(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;i=i+16|0;g=f;h=b+325|0;if(!(a[h>>0]|0)){ge(b+244|0);a[h>>0]=1}if(!(a[b>>0]|0)){a[b>>0]=1;Zf(c[e>>2]|0,g,8);n=d[g+1>>0]<<8|d[g>>0]|d[g+2>>0]<<16|d[g+3>>0]<<24;m=d[g+5>>0]<<8|d[g+4>>0]|d[g+6>>0]<<16|d[g+7>>0]<<24;l=b+100|0;k=l;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;l=l+4|0;a[l>>0]=m;a[l+1>>0]=m>>8;a[l+2>>0]=m>>16;a[l+3>>0]=m>>24;H=m;i=f;return n|0}g=b+92|0;do if(!(c[b+(c[g>>2]<<2)+132>>2]|0)){h=_f(e,b+48|0)|0;if((h|0)==2){h=b+96|0;c[h>>2]=(c[h>>2]|0)+1&3;j=b+(c[g>>2]<<3)+104|0;j=d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24;j=($f(b+244|0,e,(c[b+280>>2]|0)+352|0)|0)+j|0;k=c[b+268>>2]|0;if((j|0)<0)j=j+k|0;else j=j-(j>>>0>>0?0:k)|0;m=((j|0)<0)<<31>>31;k=b+(c[h>>2]<<3)+100|0;n=k;a[n>>0]=j;a[n+1>>0]=j>>8;a[n+2>>0]=j>>16;a[n+3>>0]=j>>24;k=k+4|0;a[k>>0]=m;a[k+1>>0]=m>>8;a[k+2>>0]=m>>16;a[k+3>>0]=m>>24;k=b+(c[h>>2]<<3)+100|0;m=k;m=d[m>>0]|d[m+1>>0]<<8|d[m+2>>0]<<16|d[m+3>>0]<<24;j=k;a[j>>0]=0;a[j+1>>0]=0;a[j+2>>0]=0;a[j+3>>0]=0;k=k+4|0;a[k>>0]=m;a[k+1>>0]=m>>8;a[k+2>>0]=m>>16;a[k+3>>0]=m>>24;k=e+4|0;m=c[k>>2]|0;j=e+8|0;n=(c[j>>2]|0)>>>16;c[j>>2]=n;l=(m>>>0)/(n>>>0)|0;n=m-(da(n,l)|0)|0;c[k>>2]=n;do{n=(Wf(c[e>>2]|0)|0)&255|n<<8;c[k>>2]=n;m=c[j>>2]|0;o=m<<8;c[j>>2]=o}while(o>>>0<16777216);o=m>>>8&65535;c[j>>2]=o;m=(n>>>0)/(o>>>0)|0;n=n-(da(m,o)|0)|0;c[k>>2]=n;do{n=(Wf(c[e>>2]|0)|0)&255|n<<8;c[k>>2]=n;o=c[j>>2]<<8;c[j>>2]=o}while(o>>>0<16777216);o=b+(c[h>>2]<<3)+100|0;n=o;k=n;n=n+4|0;n=d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24;l=d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24|(m<<16|l&65535);m=o;a[m>>0]=l;a[m+1>>0]=l>>8;a[m+2>>0]=l>>16;a[m+3>>0]=l>>24;o=o+4|0;a[o>>0]=n;a[o+1>>0]=n>>8;a[o+2>>0]=n>>16;a[o+3>>0]=n>>24;o=c[h>>2]|0;c[g>>2]=o;c[b+(o<<2)+132>>2]=0;c[b+(c[g>>2]<<2)+148>>2]=0;break}else if((h|0)==1){e=$f(b+244|0,e,c[b+280>>2]|0)|0;h=c[b+268>>2]|0;if((e|0)<0)e=h+e|0;else e=e-(e>>>0>>0?0:h)|0;c[b+(c[g>>2]<<2)+132>>2]=e;o=c[g>>2]|0;l=c[b+(o<<2)+132>>2]|0;o=b+(o<<3)+100|0;n=o;m=n;n=n+4|0;l=kr(d[m>>0]|d[m+1>>0]<<8|d[m+2>>0]<<16|d[m+3>>0]<<24|0,d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24|0,l|0,((l|0)<0)<<31>>31|0)|0;n=H;m=o;a[m>>0]=l;a[m+1>>0]=l>>8;a[m+2>>0]=l>>16;a[m+3>>0]=l>>24;o=o+4|0;a[o>>0]=n;a[o+1>>0]=n>>8;a[o+2>>0]=n>>16;a[o+3>>0]=n>>24;c[b+(c[g>>2]<<2)+148>>2]=0;break}else{if((h|0)<=2)break;c[g>>2]=h+2+(c[g>>2]|0)&3;Uf(b,e)|0;break}}else{h=_f(e,b+4|0)|0;if((h|0)==1){h=c[b+(c[g>>2]<<2)+132>>2]|0;e=($f(b+244|0,e,(c[b+280>>2]|0)+44|0)|0)+h|0;h=c[b+268>>2]|0;if((e|0)<0)e=e+h|0;else e=e-(e>>>0>>0?0:h)|0;o=b+(c[g>>2]<<3)+100|0;l=o;n=l;l=l+4|0;l=kr(d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24|0,d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24|0,e|0,((e|0)<0)<<31>>31|0)|0;n=H;m=o;a[m>>0]=l;a[m+1>>0]=l>>8;a[m+2>>0]=l>>16;a[m+3>>0]=l>>24;o=o+4|0;a[o>>0]=n;a[o+1>>0]=n>>8;a[o+2>>0]=n>>16;a[o+3>>0]=n>>24;c[b+(c[g>>2]<<2)+148>>2]=0;break}if((h|0)>=511){if((h|0)!=512){if((h|0)<=511)break;c[g>>2]=(c[g>>2]|0)+h&3;Uf(b,e)|0;break}h=b+96|0;c[h>>2]=(c[h>>2]|0)+1&3;k=b+(c[g>>2]<<3)+104|0;k=d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24;k=($f(b+244|0,e,(c[b+280>>2]|0)+352|0)|0)+k|0;j=c[b+268>>2]|0;if((k|0)<0)j=k+j|0;else j=k-(k>>>0>>0?0:j)|0;o=((j|0)<0)<<31>>31;k=b+(c[h>>2]<<3)+100|0;l=k;a[l>>0]=j;a[l+1>>0]=j>>8;a[l+2>>0]=j>>16;a[l+3>>0]=j>>24;k=k+4|0;a[k>>0]=o;a[k+1>>0]=o>>8;a[k+2>>0]=o>>16;a[k+3>>0]=o>>24;k=b+(c[h>>2]<<3)+100|0;o=k;o=d[o>>0]|d[o+1>>0]<<8|d[o+2>>0]<<16|d[o+3>>0]<<24;l=k;a[l>>0]=0;a[l+1>>0]=0;a[l+2>>0]=0;a[l+3>>0]=0;k=k+4|0;a[k>>0]=o;a[k+1>>0]=o>>8;a[k+2>>0]=o>>16;a[k+3>>0]=o>>24;k=e+4|0;o=c[k>>2]|0;l=e+8|0;m=(c[l>>2]|0)>>>16;c[l>>2]=m;j=(o>>>0)/(m>>>0)|0;m=o-(da(m,j)|0)|0;c[k>>2]=m;do{m=(Wf(c[e>>2]|0)|0)&255|m<<8;c[k>>2]=m;n=c[l>>2]|0;o=n<<8;c[l>>2]=o}while(o>>>0<16777216);o=n>>>8&65535;c[l>>2]=o;n=(m>>>0)/(o>>>0)|0;m=m-(da(n,o)|0)|0;c[k>>2]=m;do{m=(Wf(c[e>>2]|0)|0)&255|m<<8;c[k>>2]=m;o=c[l>>2]<<8;c[l>>2]=o}while(o>>>0<16777216);o=b+(c[h>>2]<<3)+100|0;m=o;l=m;m=m+4|0;m=d[m>>0]|d[m+1>>0]<<8|d[m+2>>0]<<16|d[m+3>>0]<<24;l=d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24|(n<<16|j&65535);n=o;a[n>>0]=l;a[n+1>>0]=l>>8;a[n+2>>0]=l>>16;a[n+3>>0]=l>>24;o=o+4|0;a[o>>0]=m;a[o+1>>0]=m>>8;a[o+2>>0]=m>>16;a[o+3>>0]=m>>24;o=c[h>>2]|0;c[g>>2]=o;c[b+(o<<2)+132>>2]=0;c[b+(c[g>>2]<<2)+148>>2]=0;break}do if(!h){e=$f(b+244|0,e,(c[b+280>>2]|0)+308|0)|0;h=c[b+268>>2]|0;if((e|0)<0)e=h+e|0;else e=e-(e>>>0>>0?0:h)|0;h=b+(c[g>>2]<<2)+148|0;c[h>>2]=(c[h>>2]|0)+1;h=c[g>>2]|0;if((c[b+(h<<2)+148>>2]|0)>3){c[b+(h<<2)+132>>2]=e;c[b+(c[g>>2]<<2)+148>>2]=0}}else{if((h|0)<500){l=b+244|0;j=da(c[b+(c[g>>2]<<2)+132>>2]|0,h)|0;k=c[b+280>>2]|0;if((h|0)<10){h=($f(l,e,k+88|0)|0)+j|0;e=c[b+268>>2]|0;if((h|0)<0){e=h+e|0;break}else{e=h-(h>>>0>>0?0:e)|0;break}}else{h=($f(l,e,k+132|0)|0)+j|0;e=c[b+268>>2]|0;if((h|0)<0){e=h+e|0;break}else{e=h-(h>>>0>>0?0:e)|0;break}}}if((h|0)==500){h=(c[b+(c[g>>2]<<2)+132>>2]|0)*500|0;h=($f(b+244|0,e,(c[b+280>>2]|0)+176|0)|0)+h|0;e=c[b+268>>2]|0;if((h|0)<0)e=h+e|0;else e=h-(h>>>0>>0?0:e)|0;h=b+(c[g>>2]<<2)+148|0;c[h>>2]=(c[h>>2]|0)+1;h=c[g>>2]|0;if((c[b+(h<<2)+148>>2]|0)<=3)break;c[b+(h<<2)+132>>2]=e;c[b+(c[g>>2]<<2)+148>>2]=0;break}h=500-h|0;k=b+244|0;j=c[b+(c[g>>2]<<2)+132>>2]|0;if((h|0)>-10){h=da(j,h)|0;h=($f(k,e,(c[b+280>>2]|0)+220|0)|0)+h|0;e=c[b+268>>2]|0;if((h|0)<0){e=h+e|0;break}else{e=h-(h>>>0>>0?0:e)|0;break}}h=da(j,-10)|0;e=($f(k,e,(c[b+280>>2]|0)+264|0)|0)+h|0;h=c[b+268>>2]|0;if((e|0)<0)h=e+h|0;else h=e-(e>>>0>>0?0:h)|0;e=b+(c[g>>2]<<2)+148|0;c[e>>2]=(c[e>>2]|0)+1;e=c[g>>2]|0;if((c[b+(e<<2)+148>>2]|0)>3){c[b+(e<<2)+132>>2]=h;c[b+(c[g>>2]<<2)+148>>2]=0;e=h}else e=h}while(0);o=b+(c[g>>2]<<3)+100|0;l=o;n=l;l=l+4|0;l=kr(d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24|0,d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24|0,e|0,((e|0)<0)<<31>>31|0)|0;n=H;m=o;a[m>>0]=l;a[m+1>>0]=l>>8;a[m+2>>0]=l>>16;a[m+3>>0]=l>>24;o=o+4|0;a[o>>0]=n;a[o+1>>0]=n>>8;a[o+2>>0]=n>>16;a[o+3>>0]=n>>24}while(0);n=b+(c[g>>2]<<3)+100|0;o=n;n=n+4|0;n=d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24;o=d[o>>0]|d[o+1>>0]<<8|d[o+2>>0]<<16|d[o+3>>0]<<24;H=n;i=f;return o|0}function Vf(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=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;g=i;i=i+16|0;h=g;if(!(a[b>>0]|0)){a[b>>0]=1;Zf(c[e>>2]|0,h,6);u=a[h+1>>0]<<8|d[h>>0];j=u&65535;l=a[h+2>>0]|0;k=(a[h+3>>0]<<8|l&255)&65535;n=a[h+4>>0]|0;m=(a[h+5>>0]<<8|n&255)&65535;h=b+1|0;a[h>>0]=j;a[h+1>>0]=j>>8;h=b+3|0;a[h>>0]=k;a[h+1>>0]=k>>8;h=b+5|0;a[h>>0]=m;a[h+1>>0]=m>>8;h=u;m=(m&65535)>>>8&255}else{l=_f(e,b+8|0)|0;if(!(l&1)){m=b+1|0;m=d[m>>0]|d[m+1>>0]<<8;h=m&255}else{h=(_f(e,b+52|0)|0)&255;m=b+1|0;m=d[m>>0]|d[m+1>>0]<<8;h=(m&255)+h|0;h=(h|0)>255?h+65280|0:h}if(!(l&2))h=m&65280|h&65535;else{u=(_f(e,b+96|0)|0)&255;m=b+1|0;m=d[m>>0]|d[m+1>>0]<<8;u=((m&65535)>>>8)+u|0;h=((u|0)>255?u+65280|0:u)<<8|h&65535}j=h&65535;do if(!(l&64)){k=b+1|0;l=b+5|0;n=j;m=j}else{k=b+1|0;m=(h&255)-(m&255)|0;do if(l&4){p=_f(e,b+140|0)|0;n=p&255;o=b+3|0;o=d[o>>0]|d[o+1>>0]<<8;q=o&65535;r=(q&255)+m|0;s=(r|0)<1;if((r+ -1|0)>>>0>253)t=s?0:255;else t=q+m&255;if((t+n|0)>255){if(!s)if((r|0)>254)n=255;else n=q+m&255;else n=0;n=(p|-256)+n|0;break}else{if(!s)if((r|0)>254)p=255;else p=q+m&255;else p=0;n=p+n|0;break}}else{o=b+3|0;o=d[o>>0]|d[o+1>>0]<<8;n=o&255}while(0);do if(l&16){p=_f(e,b+228|0)|0;o=b+3|0;o=d[o>>0]|d[o+1>>0]<<8;r=((n&255)+m-(o&255)|0)/2|0;m=p&255;t=b+5|0;t=(d[t>>0]|d[t+1>>0]<<8)&65535;u=(t&255)+r|0;s=(u|0)<1;if((u+ -1|0)>>>0>253)q=s?0:255;else q=t+r&255;if((q+m|0)>255){if(!s)if((u|0)>254)m=255;else m=t+r&255;else m=0;m=(p|-256)+m|0;p=o;break}else{if(!s)if((u|0)>254)p=255;else p=t+r&255;else p=0;m=p+m|0;p=o;break}}else{m=b+5|0;m=(d[m>>0]|d[m+1>>0]<<8)&255;p=o}while(0);o=(h>>>8&255)-(((d[k>>0]|d[k+1>>0]<<8)&65535)>>>8)|0;if(!(l&8))r=p&65280|n&65535;else{p=_f(e,b+184|0)|0;q=p&255;t=b+3|0;t=(((d[t>>0]|d[t+1>>0]<<8)&65535)>>>8)+o|0;r=(t|0)<1;if(r)s=0;else s=(t|0)>254?255:t&255;if((s+q|0)>255){if(r)q=0;else q=(t|0)>254?255:t&255;p=(p|-256)+q|0}else{if(r)p=0;else p=(t|0)>254?255:t&255;p=p+q|0}r=p<<8|n&65535}n=r&65535;if(!(l&32)){u=b+5|0;l=u;m=((d[u>>0]|d[u+1>>0]<<8)&65280|m)&65535;break}q=_f(e,b+272|0)|0;u=b+3|0;p=q&255;l=b+5|0;r=(((d[l>>0]|d[l+1>>0]<<8)&65535)>>>8)+(((r>>>8&255)+o-(((d[u>>0]|d[u+1>>0]<<8)&65535)>>>8)|0)/2|0)|0;o=(r|0)<1;if(o)s=0;else s=(r|0)>254?255:r&255;if((s+p|0)>255){if(o)o=0;else o=(r|0)>254?255:r&255;o=(q|-256)+o|0}else{if(o)o=0;else o=(r|0)>254?255:r&255;o=o+p|0}m=(o<<8|m)&65535}while(0);a[k>>0]=j;a[k+1>>0]=j>>8;k=b+3|0;a[k>>0]=n;a[k+1>>0]=n>>8;a[l>>0]=m;a[l+1>>0]=m>>8;k=n;l=n&255;n=m&255;m=(m&65535)>>>8&255}a[f+1>>0]=(j&65535)>>>8;a[f>>0]=h;a[f+3>>0]=(k&65535)>>>8;a[f+2>>0]=l;a[f+5>>0]=m;a[f+4>>0]=n;f=b+316|0;if(!(a[f>>0]|0)){i=g;return}u=((Wf(c[e>>2]|0)|0)&255)<<24;u=((Wf(c[e>>2]|0)|0)&255)<<16|u;u=u|((Wf(c[e>>2]|0)|0)&255)<<8;c[e+4>>2]=u|(Wf(c[e>>2]|0)|0)&255;a[f>>0]=0;i=g;return}function Wf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;d=b+4|0;g=c[d>>2]|0;e=b+8|0;if((g|0)<(c[e>>2]|0)){h=g;g=h+1|0;c[d>>2]=g;g=b+12|0;g=c[g>>2]|0;h=g+h|0;h=a[h>>0]|0;i=f;return h|0}c[d>>2]=0;g=c[b>>2]|0;h=g+13|0;if(!(a[h>>0]|0)){j=g+4|0;m=g+8|0;k=c[m>>2]|0;l=(c[j>>2]|0)-k|0;l=(l|0)<1048576?l:1048576;pr(c[b+12>>2]|0,(c[g>>2]|0)+k|0,l|0)|0;k=(c[m>>2]|0)+l|0;c[m>>2]=k;c[g+16>>2]=l;if((k|0)>=(c[j>>2]|0))a[h>>0]=1}else a[g+12>>0]=1;m=c[(c[b>>2]|0)+16>>2]|0;c[e>>2]=m;if(m){m=c[d>>2]|0;l=m+1|0;c[d>>2]=l;l=b+12|0;l=c[l>>2]|0;m=l+m|0;m=a[m>>0]|0;i=f;return m|0}b=Wb(8)|0;c[b>>2]=27520;d=b+4|0;e=Tq(32)|0;a:do if(!e){while(1){e=c[6860]|0;c[6860]=e+0;if(!e)break;qd[e&3]();e=Tq(32)|0;if(e)break a}m=Wb(4)|0;c[m>>2]=27280;Zc(m|0,27328,220)}while(0);c[e>>2]=19;c[e+4>>2]=19;c[e+8>>2]=0;f=e+12|0;h=f+0|0;g=5720;e=h+20|0;do{a[h>>0]=a[g>>0]|0;h=h+1|0;g=g+1|0}while((h|0)<(e|0));c[d>>2]=f;c[b>>2]=5752;Zc(b|0,5704,55);return 0}function Xf(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function Yf(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function Zf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;h=b+4|0;k=c[h>>2]|0;j=b+8|0;do if((k|0)<(c[j>>2]|0))j=k;else{c[h>>2]=0;k=c[b>>2]|0;l=k+13|0;if(!(a[l>>0]|0)){m=k+4|0;p=k+8|0;n=c[p>>2]|0;o=(c[m>>2]|0)-n|0;o=(o|0)<1048576?o:1048576;pr(c[b+12>>2]|0,(c[k>>2]|0)+n|0,o|0)|0;n=(c[p>>2]|0)+o|0;c[p>>2]=n;c[k+16>>2]=o;if((n|0)>=(c[m>>2]|0))a[l>>0]=1}else a[k+12>>0]=1;p=c[(c[b>>2]|0)+16>>2]|0;c[j>>2]=p;if(p){j=c[h>>2]|0;break}e=Wb(8)|0;c[e>>2]=27520;g=e+4|0;h=Tq(32)|0;if(h){c[h>>2]=19;d=h+4|0;c[d>>2]=19;d=h+8|0;c[d>>2]=0;h=h+12|0;d=h+0|0;b=5720;f=d+20|0;do{a[d>>0]=a[b>>0]|0;d=d+1|0;b=b+1|0}while((d|0)<(f|0));c[g>>2]=h;c[e>>2]=5752;Zc(e|0,5704,55)}while(1){h=c[6860]|0;c[6860]=h+0;if(!h)break;qd[h&3]();h=Tq(32)|0;if(h){f=14;break}}if((f|0)==14){c[h>>2]=19;d=h+4|0;c[d>>2]=19;d=h+8|0;c[d>>2]=0;h=h+12|0;d=h+0|0;b=5720;f=d+20|0;do{a[d>>0]=a[b>>0]|0;d=d+1|0;b=b+1|0}while((d|0)<(f|0));c[g>>2]=h;c[e>>2]=5752;Zc(e|0,5704,55)}p=Wb(4)|0;c[p>>2]=27280;Zc(p|0,27328,220)}while(0);b=c[b+12>>2]|0;f=b+(j+e)|0;if(!e){p=j;p=p+e|0;c[h>>2]=p;i=g;return}b=b+j|0;while(1){a[d>>0]=a[b>>0]|0;b=b+1|0;if((b|0)==(f|0))break;else d=d+1|0}p=c[h>>2]|0;p=p+e|0;c[h>>2]=p;i=g;return}function _f(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=i;d=a+8|0;f=c[d>>2]|0;h=c[b+16>>2]|0;if(h){j=c[a+4>>2]|0;g=f>>>15;c[d>>2]=g;l=(j>>>0)/(g>>>0)|0;m=l>>>(c[b+40>>2]|0);k=c[h+(m<<2)>>2]|0;m=(c[h+(m+1<<2)>>2]|0)+1|0;n=k+1|0;h=c[b+8>>2]|0;if(m>>>0>n>>>0){do{n=(m+k|0)>>>1;o=(c[h+(n<<2)>>2]|0)>>>0>l>>>0;k=o?k:n;m=o?n:m;n=k+1|0}while(m>>>0>n>>>0);l=n}else l=n;n=da(g,c[h+(k<<2)>>2]|0)|0;if((k|0)!=(c[b+32>>2]|0))f=da(c[h+(l<<2)>>2]|0,g)|0}else{h=f>>>15;c[d>>2]=h;l=c[b>>2]|0;g=c[b+8>>2]|0;j=c[a+4>>2]|0;m=l>>>1;k=0;n=0;do{p=da(c[g+(m<<2)>>2]|0,h)|0;o=p>>>0>j>>>0;f=o?p:f;n=o?n:p;k=o?k:m;l=o?m:l;m=(k+l|0)>>>1}while((m|0)!=(k|0))}g=a+4|0;h=j-n|0;c[g>>2]=h;p=f-n|0;c[d>>2]=p;if(p>>>0<16777216)do{h=(Wf(c[a>>2]|0)|0)&255|h<<8;c[g>>2]=h;p=c[d>>2]<<8;c[d>>2]=p}while(p>>>0<16777216);o=(c[b+12>>2]|0)+(k<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=b+28|0;p=(c[o>>2]|0)+ -1|0;c[o>>2]=p;if(p){i=e;return k|0}ke(b);i=e;return k|0}function $f(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;f=_f(b,d)|0;c[a>>2]=f;if(f){if(f>>>0>=32){l=c[a+28>>2]|0;i=e;return l|0}d=c[a+12>>2]|0;if(f>>>0>d>>>0){d=f-d|0;l=_f(b,(c[a+68>>2]|0)+((f+ -1|0)*44|0)|0)|0;d=l<>2]|0)+((f+ -1|0)*44|0)|0)|0;a=c[a>>2]|0;if((d|0)<(1<>2]|0;j=da(l>>>13,c[f>>2]|0)|0;g=b+4|0;k=c[g>>2]|0;m=k>>>0>=j>>>0;d=m&1;if(m){c[g>>2]=k-j;j=l-j|0;c[h>>2]=j}else{c[h>>2]=j;j=a+60|0;c[j>>2]=(c[j>>2]|0)+1;j=c[h>>2]|0}if(j>>>0<16777216){j=c[g>>2]|0;do{j=(Wf(c[b>>2]|0)|0)&255|j<<8;c[g>>2]=j;m=c[h>>2]<<8;c[h>>2]=m}while(m>>>0<16777216)}h=a+52|0;m=(c[h>>2]|0)+ -1|0;c[h>>2]=m;if(m){m=d;i=e;return m|0}b=a+48|0;g=c[b>>2]|0;j=a+64|0;k=(c[j>>2]|0)+g|0;c[j>>2]=k;if(k>>>0>8192){k=(k+1|0)>>>1;c[j>>2]=k;m=a+60|0;a=((c[m>>2]|0)+1|0)>>>1;c[m>>2]=a;if((a|0)==(k|0)){m=k+1|0;c[j>>2]=m;j=m}else{j=k;k=a}}else{j=k;k=c[a+60>>2]|0}c[f>>2]=(da(2147483648/(j>>>0)|0,k)|0)>>>18;m=g*5|0;m=m>>>0>259?64:m>>>2;c[b>>2]=m;c[h>>2]=m;m=d;i=e;return m|0}function ag(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;f=i;d=a+4|0;g=c[d>>2]|0;e=a+8|0;h=c[e>>2]|0;if(b>>>0>19){j=h>>>16;c[e>>2]=j;h=(g>>>0)/(j>>>0)|0;g=g-(da(h,j)|0)|0;c[d>>2]=g;do{g=(Wf(c[a>>2]|0)|0)&255|g<<8;c[d>>2]=g;j=c[e>>2]<<8;c[e>>2]=j}while(j>>>0<16777216);j=(ag(a,b+ -16|0)|0)<<16|h&65535;i=f;return j|0}j=h>>>b;c[e>>2]=j;b=(g>>>0)/(j>>>0)|0;g=g-(da(b,j)|0)|0;c[d>>2]=g;if(j>>>0>=16777216){i=f;return b|0}do{g=(Wf(c[a>>2]|0)|0)&255|g<<8;c[d>>2]=g;j=c[e>>2]<<8;c[e>>2]=j}while(j>>>0<16777216);i=f;return b|0}function bg(a){a=a|0;return}function cg(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function dg(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function eg(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==6304)a=a+12|0;else a=0;return a|0}function fg(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function gg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+32|0;g=e;f=c[b+8>>2]|0;b=c[b+4>>2]|0;Tf(g,f,b);h=c[g>>2]|0;a[d+3>>0]=h>>>24;a[d+2>>0]=h>>>16;a[d+1>>0]=h>>>8;a[d>>0]=h;h=c[g+4>>2]|0;a[d+7>>0]=h>>>24;a[d+6>>0]=h>>>16;a[d+5>>0]=h>>>8;a[d+4>>0]=h;h=c[g+8>>2]|0;a[d+11>>0]=h>>>24;a[d+10>>0]=h>>>16;a[d+9>>0]=h>>>8;a[d+8>>0]=h;h=c[g+12>>2]|0;a[d+13>>0]=(h&65535)>>>8;a[d+12>>0]=h;a[d+14>>0]=h>>>16;a[d+15>>0]=h>>>24;g=c[g+16>>2]|0;a[d+16>>0]=g;a[d+17>>0]=(g&65535)>>>8;a[d+19>>0]=g>>>24;a[d+18>>0]=g>>>16;Vf(f+4784|0,b,d+20|0);i=e;return}function hg(a){a=a|0;var b=0;b=i;c[a>>2]=6616;a=c[a+8>>2]|0;if(!a){i=b;return}Mf(a+4784|0);Jf(a);Uq(a);i=b;return}function ig(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=6616;d=c[a+8>>2]|0;if(!d){Uq(a);i=b;return}Mf(d+4784|0);Jf(d);Uq(d);Uq(a);i=b;return}function jg(a){a=a|0;return}function kg(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function lg(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function mg(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==7272)a=a+12|0;else a=0;return a|0}function ng(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function og(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;h=e;f=c[b+8>>2]|0;b=c[b+4>>2]|0;Tf(h,f,b);g=c[h>>2]|0;a[d+3>>0]=g>>>24;a[d+2>>0]=g>>>16;a[d+1>>0]=g>>>8;a[d>>0]=g;g=c[h+4>>2]|0;a[d+7>>0]=g>>>24;a[d+6>>0]=g>>>16;a[d+5>>0]=g>>>8;a[d+4>>0]=g;g=c[h+8>>2]|0;a[d+11>>0]=g>>>24;a[d+10>>0]=g>>>16;a[d+9>>0]=g>>>8;a[d+8>>0]=g;g=c[h+12>>2]|0;a[d+13>>0]=(g&65535)>>>8;a[d+12>>0]=g;a[d+14>>0]=g>>>16;a[d+15>>0]=g>>>24;h=c[h+16>>2]|0;a[d+16>>0]=h;a[d+17>>0]=(h&65535)>>>8;a[d+19>>0]=h>>>24;a[d+18>>0]=h>>>16;h=Uf(f+4784|0,b)|0;g=H;a[d+23>>0]=h>>>24;a[d+22>>0]=h>>>16;a[d+21>>0]=h>>>8;a[d+20>>0]=h;j=lr(h|0,g|0,56)|0;a[d+27>>0]=j;j=lr(h|0,g|0,48)|0;a[d+26>>0]=j;h=lr(h|0,g|0,40)|0;a[d+25>>0]=h;a[d+24>>0]=g;d=f+5112|0;if(!(a[d>>0]|0)){i=e;return}j=((Wf(c[b>>2]|0)|0)&255)<<24;j=((Wf(c[b>>2]|0)|0)&255)<<16|j;j=j|((Wf(c[b>>2]|0)|0)&255)<<8;c[b+4>>2]=j|(Wf(c[b>>2]|0)|0)&255;a[d>>0]=0;i=e;return}function pg(a){a=a|0;var b=0;b=i;c[a>>2]=7560;a=c[a+8>>2]|0;if(!a){i=b;return}pe(a+5096|0);pe(a+5064|0);oe(a+4948|0);Lf(a+4784|0);Jf(a);Uq(a);i=b;return}function qg(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=7560;d=c[a+8>>2]|0;if(!d){Uq(a);i=b;return}pe(d+5096|0);pe(d+5064|0);oe(d+4948|0);Lf(d+4784|0);Jf(d);Uq(d);Uq(a);i=b;return}function rg(a){a=a|0;return}function sg(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function tg(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function ug(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==8216)a=a+12|0;else a=0;return a|0}function vg(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function wg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+32|0;g=e;f=c[b+8>>2]|0;b=c[b+4>>2]|0;Tf(g,f,b);h=c[g>>2]|0;a[d+3>>0]=h>>>24;a[d+2>>0]=h>>>16;a[d+1>>0]=h>>>8;a[d>>0]=h;h=c[g+4>>2]|0;a[d+7>>0]=h>>>24;a[d+6>>0]=h>>>16;a[d+5>>0]=h>>>8;a[d+4>>0]=h;h=c[g+8>>2]|0;a[d+11>>0]=h>>>24;a[d+10>>0]=h>>>16;a[d+9>>0]=h>>>8;a[d+8>>0]=h;h=c[g+12>>2]|0;a[d+13>>0]=(h&65535)>>>8;a[d+12>>0]=h;a[d+14>>0]=h>>>16;a[d+15>>0]=h>>>24;g=c[g+16>>2]|0;a[d+16>>0]=g;a[d+17>>0]=(g&65535)>>>8;a[d+19>>0]=g>>>24;a[d+18>>0]=g>>>16;d=f+4784|0;if(!(a[d>>0]|0)){i=e;return}h=((Wf(c[b>>2]|0)|0)&255)<<24;h=((Wf(c[b>>2]|0)|0)&255)<<16|h;h=h|((Wf(c[b>>2]|0)|0)&255)<<8;c[b+4>>2]=h|(Wf(c[b>>2]|0)|0)&255;a[d>>0]=0;i=e;return}function xg(a){a=a|0;var b=0;b=i;c[a>>2]=8504;a=c[a+8>>2]|0;if(!a){i=b;return}Jf(a);Uq(a);i=b;return}function yg(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=8504;d=c[a+8>>2]|0;if(!d){Uq(a);i=b;return}Jf(d);Uq(d);Uq(a);i=b;return}function zg(a){a=a|0;return}function Ag(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Bg(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function Cg(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==9112)a=a+12|0;else a=0;return a|0}function Dg(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Eg(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;c[b>>2]=9396;c[b+64>>2]=9436;c[b+8>>2]=9416;e=b+12|0;c[e>>2]=9584;if(a[b+44>>0]&1)Uq(c[b+52>>2]|0);c[e>>2]=16248;e=c[b+16>>2]|0;g=e+4|0;f=c[g>>2]|0;c[g>>2]=f+ -1;if(f){g=b+64|0;_i(g);i=d;return}jd[c[(c[e>>2]|0)+8>>2]&255](e);g=b+64|0;_i(g);i=d;return}function Fg(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;f=b+ -8|0;c[f>>2]=9396;b=f+64|0;c[b>>2]=9436;c[f+8>>2]=9416;e=f+12|0;c[e>>2]=9584;if(a[f+44>>0]&1)Uq(c[f+52>>2]|0);c[e>>2]=16248;e=c[f+16>>2]|0;g=e+4|0;f=c[g>>2]|0;c[g>>2]=f+ -1;if(f){_i(b);i=d;return}jd[c[(c[e>>2]|0)+8>>2]&255](e);_i(b);i=d;return}function Gg(b){b=b|0;var d=0,e=0,f=0,g=0;e=i;g=c[(c[b>>2]|0)+ -12>>2]|0;c[b+g>>2]=9396;d=b+(g+64)|0;c[d>>2]=9436;c[b+(g+8)>>2]=9416;f=b+(g+12)|0;c[f>>2]=9584;if(a[b+(g+44)>>0]&1)Uq(c[b+(g+52)>>2]|0);c[f>>2]=16248;b=c[b+(g+16)>>2]|0;f=b+4|0;g=c[f>>2]|0;c[f>>2]=g+ -1;if(g){_i(d);i=e;return}jd[c[(c[b>>2]|0)+8>>2]&255](b);_i(d);i=e;return}function Hg(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;c[b>>2]=9396;c[b+64>>2]=9436;c[b+8>>2]=9416;e=b+12|0;c[e>>2]=9584;if(a[b+44>>0]&1)Uq(c[b+52>>2]|0);c[e>>2]=16248;e=c[b+16>>2]|0;g=e+4|0;f=c[g>>2]|0;c[g>>2]=f+ -1;if(f){g=b+64|0;_i(g);Uq(b);i=d;return}jd[c[(c[e>>2]|0)+8>>2]&255](e);g=b+64|0;_i(g);Uq(b);i=d;return}function Ig(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;e=b+ -8|0;c[e>>2]=9396;b=e+64|0;c[b>>2]=9436;c[e+8>>2]=9416;f=e+12|0;c[f>>2]=9584;if(a[e+44>>0]&1)Uq(c[e+52>>2]|0);c[f>>2]=16248;f=c[e+16>>2]|0;h=f+4|0;g=c[h>>2]|0;c[h>>2]=g+ -1;if(g){_i(b);Uq(e);i=d;return}jd[c[(c[f>>2]|0)+8>>2]&255](f);_i(b);Uq(e);i=d;return}function Jg(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;f=i;h=c[(c[b>>2]|0)+ -12>>2]|0;e=b+h|0;c[e>>2]=9396;d=b+(h+64)|0;c[d>>2]=9436;c[b+(h+8)>>2]=9416;g=b+(h+12)|0;c[g>>2]=9584;if(a[b+(h+44)>>0]&1)Uq(c[b+(h+52)>>2]|0);c[g>>2]=16248;b=c[b+(h+16)>>2]|0;g=b+4|0;h=c[g>>2]|0;c[g>>2]=h+ -1;if(h){_i(d);Uq(e);i=f;return}jd[c[(c[b>>2]|0)+8>>2]&255](b);_i(d);Uq(e);i=f;return}function Kg(b){b=b|0;var d=0,e=0,f=0;d=i;c[b>>2]=9584;if(a[b+32>>0]&1)Uq(c[b+40>>2]|0);c[b>>2]=16248;b=c[b+4>>2]|0;f=b+4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if(e){i=d;return}jd[c[(c[b>>2]|0)+8>>2]&255](b);i=d;return}function Lg(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;c[b>>2]=9584;if(a[b+32>>0]&1)Uq(c[b+40>>2]|0);c[b>>2]=16248;e=c[b+4>>2]|0;g=e+4|0;f=c[g>>2]|0;c[g>>2]=f+ -1;if(f){Uq(b);i=d;return}jd[c[(c[e>>2]|0)+8>>2]&255](e);Uq(b);i=d;return}function Mg(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 j=0,k=0,l=0,m=0,n=0,o=0;l=i;o=d+44|0;m=c[o>>2]|0;k=d+24|0;j=c[k>>2]|0;if(m>>>0>>0){c[o>>2]=j;m=j}o=h&24;do if(!o){o=b;c[o>>2]=0;c[o+4>>2]=0;o=b+8|0;c[o>>2]=-1;c[o+4>>2]=-1;i=l;return}else if((o|0)!=24){if(!g){g=0;o=0;break}else if((g|0)==2){n=11;break}else if((g|0)!=1){n=15;break}if(!(h&8)){o=j-(c[d+20>>2]|0)|0;g=o;o=((o|0)<0)<<31>>31;break}else{o=(c[d+12>>2]|0)-(c[d+8>>2]|0)|0;g=o;o=((o|0)<0)<<31>>31;break}}else{if(!g){g=0;o=0;break}else if((g|0)==2){n=11;break}else if((g|0)!=1){n=15;break}o=b;c[o>>2]=0;c[o+4>>2]=0;o=b+8|0;c[o>>2]=-1;c[o+4>>2]=-1;i=l;return}while(0);if((n|0)==15){o=b;c[o>>2]=0;c[o+4>>2]=0;o=b+8|0;c[o>>2]=-1;c[o+4>>2]=-1;i=l;return}if((n|0)==11){n=d+32|0;if(!(a[n>>0]&1))n=n+1|0;else n=c[d+40>>2]|0;o=m-n|0;g=o;o=((o|0)<0)<<31>>31}f=kr(g|0,o|0,e|0,f|0)|0;e=H;if((e|0)>=0){n=d+32|0;if(!(a[n>>0]&1))n=n+1|0;else n=c[d+40>>2]|0;o=m-n|0;g=((o|0)<0)<<31>>31;if(!((g|0)<(e|0)|(g|0)==(e|0)&o>>>0>>0)){n=h&8;if(!((f|0)==0&(e|0)==0)){if((n|0)!=0?(c[d+12>>2]|0)==0:0){o=b;c[o>>2]=0;c[o+4>>2]=0;o=b+8|0;c[o>>2]=-1;c[o+4>>2]=-1;i=l;return}if((h&16|0)!=0&(j|0)==0){o=b;c[o>>2]=0;c[o+4>>2]=0;o=b+8|0;c[o>>2]=-1;c[o+4>>2]=-1;i=l;return}}if(n){c[d+12>>2]=(c[d+8>>2]|0)+f;c[d+16>>2]=m}if(h&16)c[k>>2]=(c[d+20>>2]|0)+f;o=b;c[o>>2]=0;c[o+4>>2]=0;o=b+8|0;c[o>>2]=f;c[o+4>>2]=e;i=l;return}}o=b;c[o>>2]=0;c[o+4>>2]=0;o=b+8|0;c[o>>2]=-1;c[o+4>>2]=-1;i=l;return}function Ng(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;d=d+8|0;ud[c[(c[b>>2]|0)+16>>2]&31](a,b,c[d>>2]|0,c[d+4>>2]|0,0,e);i=f;return}function Og(a){a=a|0;var b=0,e=0,f=0,g=0;b=i;f=a+44|0;g=c[f>>2]|0;e=c[a+24>>2]|0;if(g>>>0>>0)c[f>>2]=e;else e=g;if(!(c[a+48>>2]&8)){g=-1;i=b;return g|0}f=a+16|0;g=c[f>>2]|0;a=c[a+12>>2]|0;if(g>>>0>>0)c[f>>2]=e;else e=g;if(a>>>0>=e>>>0){g=-1;i=b;return g|0}g=d[a>>0]|0;i=b;return g|0}function Pg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;g=b+44|0;f=c[g>>2]|0;j=c[b+24>>2]|0;if(f>>>0>>0)c[g>>2]=j;else j=f;f=b+8|0;g=c[f>>2]|0;h=b+12|0;l=c[h>>2]|0;if(g>>>0>=l>>>0){l=-1;i=e;return l|0}if((d|0)==-1){c[f>>2]=g;c[h>>2]=l+ -1;c[b+16>>2]=j;l=0;i=e;return l|0}if(!(c[b+48>>2]&16)){k=d&255;l=l+ -1|0;if(k<<24>>24!=(a[l>>0]|0)){l=-1;i=e;return l|0}}else{k=d&255;l=l+ -1|0}c[f>>2]=g;c[h>>2]=l;c[b+16>>2]=j;a[l>>0]=k;l=d;i=e;return l|0}function Qg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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=i;if((d|0)==-1){u=0;i=e;return u|0}h=b+12|0;f=b+8|0;g=(c[h>>2]|0)-(c[f>>2]|0)|0;j=b+24|0;o=c[j>>2]|0;k=b+28|0;n=c[k>>2]|0;if((o|0)==(n|0)){l=b+48|0;if(!(c[l>>2]&16)){u=-1;i=e;return u|0}m=b+20|0;q=c[m>>2]|0;p=o-q|0;n=b+44|0;o=(c[n>>2]|0)-q|0;q=b+32|0;r=a[q>>0]|0;t=(r&1)!=0;if(t){s=(c[q>>2]&-2)+ -1|0;r=c[b+36>>2]|0}else{s=10;r=(r&255)>>>1}if((r|0)==(s|0)){Pi(q,s,1,s,s,0);if(!(a[q>>0]&1))s=12;else s=13}else if(t)s=13;else s=12;if((s|0)==12){a[q>>0]=(r<<1)+2;u=q+1|0;t=r+1|0}else if((s|0)==13){u=c[b+40>>2]|0;t=r+1|0;c[b+36>>2]=t}a[u+r>>0]=0;a[u+t>>0]=0;if(!(a[q>>0]&1))r=10;else r=(c[q>>2]&-2)+ -1|0;Ki(q,r);r=a[q>>0]|0;if(!(r&1)){q=q+1|0;r=(r&255)>>>1}else{q=c[b+40>>2]|0;r=c[b+36>>2]|0}u=q+r|0;c[m>>2]=q;c[k>>2]=u;k=q+p|0;c[j>>2]=k;o=q+o|0;c[n>>2]=o;n=u}else{l=b+48|0;k=o;o=c[b+44>>2]|0}m=k+1|0;o=m>>>0>>0?o:m;c[b+44>>2]=o;if(c[l>>2]&8){l=b+32|0;if(!(a[l>>0]&1))l=l+1|0;else l=c[b+40>>2]|0;c[f>>2]=l;c[h>>2]=l+g;c[b+16>>2]=o}if((k|0)==(n|0)){u=vd[c[(c[b>>2]|0)+52>>2]&63](b,d&255)|0;i=e;return u|0}else{c[j>>2]=m;a[k>>0]=d;u=d&255;i=e;return u|0}return 0}function Rg(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;h=i;i=i+16|0;f=h+8|0;g=h;a[f>>0]=0;c[f+4>>2]=b;j=c[(c[b>>2]|0)+ -12>>2]|0;if(!(c[b+(j+16)>>2]|0)){j=c[b+(j+72)>>2]|0;if(j)Fj(j);a[f>>0]=1;p=c[(c[b>>2]|0)+ -12>>2]|0;j=c[b+(p+24)>>2]|0;if((c[b+(p+4)>>2]&176|0)==32)l=d+e|0;else l=d;m=b+p|0;n=b+(p+76)|0;o=c[n>>2]|0;do if((o|0)==-1){p=c[b+(p+28)>>2]|0;o=p+4|0;c[o>>2]=(c[o>>2]|0)+1;r=Rn(19072)|0;q=c[p+8>>2]|0;if((c[p+12>>2]|0)-q>>2>>>0>r>>>0?(k=c[q+(r<<2)>>2]|0,(k|0)!=0):0){k=vd[c[(c[k>>2]|0)+28>>2]&63](k,32)|0;r=c[o>>2]|0;c[o>>2]=r+ -1;if(!r)jd[c[(c[p>>2]|0)+8>>2]&255](p);o=k<<24>>24;c[n>>2]=o;break}r=Wb(4)|0;c[r>>2]=27744;Zc(r|0,27816,228)}while(0);Sg(g,j,d,l,d+e|0,m,o&255);if(!(c[g>>2]|0)){r=c[(c[b>>2]|0)+ -12>>2]|0;Zi(b+r|0,c[b+(r+16)>>2]|5)}}Qj(f);i=h;return b|0}function Sg(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;k=i;i=i+16|0;l=k;if(!d){c[b>>2]=0;i=k;return}o=e;m=g-o|0;h=h+12|0;n=c[h>>2]|0;m=(n|0)>(m|0)?n-m|0:0;n=f;o=n-o|0;if((o|0)>0?(fd[c[(c[d>>2]|0)+48>>2]&31](d,e,o)|0)!=(o|0):0){c[b>>2]=0;i=k;return}do if((m|0)>0){if(m>>>0<11){a[l>>0]=m<<1;e=l;o=l+1|0}else{e=m+16&-16;o=(e|0)==0?1:e;p=Tq(o)|0;a:do if(!p){while(1){p=c[6860]|0;c[6860]=p+0;if(!p)break;qd[p&3]();p=Tq(o)|0;if(p){o=p;break a}}p=Wb(4)|0;c[p>>2]=27280;Zc(p|0,27328,220)}else o=p;while(0);c[l+8>>2]=o;c[l>>2]=e|1;c[l+4>>2]=m;e=l}qr(o|0,j|0,m|0)|0;a[o+m>>0]=0;if(!(a[e>>0]&1))j=l+1|0;else j=c[l+8>>2]|0;if((fd[c[(c[d>>2]|0)+48>>2]&31](d,j,m)|0)==(m|0)){if(!(a[e>>0]&1))break;Uq(c[l+8>>2]|0);break}c[b>>2]=0;if(!(a[e>>0]&1)){i=k;return}Uq(c[l+8>>2]|0);i=k;return}while(0);l=g-n|0;if((l|0)>0?(fd[c[(c[d>>2]|0)+48>>2]&31](d,f,l)|0)!=(l|0):0){c[b>>2]=0;i=k;return}c[h>>2]=0;c[b>>2]=d;i=k;return}function Tg(a){a=a|0;return}function Ug(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Vg(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(a)Uq(a);i=b;return}function Wg(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==9944)a=a+12|0;else a=0;return a|0}function Xg(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Yg(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function Zg(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function _g(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function $g(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function ah(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function bh(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function ch(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function dh(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function eh(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function fh(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function gh(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function hh(a){a=a|0;return}function ih(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function jh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=c[a>>2]|0;if(!d){i=b;return}e=a+4|0;f=c[e>>2]|0;if((f|0)!=(d|0)){do{g=f+ -24|0;c[e>>2]=g;f=c[f+ -8>>2]|0;if((f|0)!=(g|0)){if(f)jd[c[(c[f>>2]|0)+20>>2]&255](f)}else jd[c[(c[f>>2]|0)+16>>2]&255](f);f=c[e>>2]|0}while((f|0)!=(d|0));d=c[a>>2]|0}Uq(d);i=b;return}function kh(a){a=a|0;return}function lh(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function mh(a){a=a|0;var b=0;a=i;b=Tq(8)|0;a:do if(!b){while(1){b=c[6860]|0;c[6860]=b+0;if(!b)break;qd[b&3]();b=Tq(8)|0;if(b)break a}b=Wb(4)|0;c[b>>2]=27280;Zc(b|0,27328,220)}while(0);c[b>>2]=11024;i=a;return b|0}function nh(a,b){a=a|0;b=b|0;if(b)c[b>>2]=11024;return}function oh(a){a=a|0;return}function ph(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function qh(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;b=i;h=e+104|0;g=d[h>>0]|0;f=g>>>7;e=g>>>6&1;if(!((f|0)!=1|(e|0)==0)){b=Wb(8)|0;c[b>>2]=27520;e=b+4|0;f=Tq(80)|0;a:do if(!f){while(1){f=c[6860]|0;c[6860]=f+0;if(!f)break;qd[f&3]();f=Tq(80)|0;if(f)break a}j=Wb(4)|0;c[j>>2]=27280;Zc(j|0,27328,220)}while(0);c[f>>2]=67;c[f+4>>2]=67;c[f+8>>2]=0;j=f+12|0;h=j+0|0;g=11568|0;f=h+68|0;do{a[h>>0]=a[g>>0]|0;h=h+1|0;g=g+1|0}while((h|0)<(f|0));c[e>>2]=j;c[b>>2]=11648;Zc(b|0,11440,113)}if((f|0)!=(e|0)){a[h>>0]=g&63;i=b;return}b=Wb(8)|0;c[b>>2]=27520;e=b+4|0;f=Tq(51)|0;b:do if(!f){while(1){f=c[6860]|0;c[6860]=f+0;if(!f)break;qd[f&3]();f=Tq(51)|0;if(f)break b}j=Wb(4)|0;c[j>>2]=27280;Zc(j|0,27328,220)}while(0);c[f>>2]=38;c[f+4>>2]=38;c[f+8>>2]=0;j=f+12|0;h=j+0|0;g=11504|0;f=h+39|0;do{a[h>>0]=a[g>>0]|0;h=h+1|0;g=g+1|0}while((h|0)<(f|0));c[e>>2]=j;c[b>>2]=11552;Zc(b|0,11488,111)}function rh(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==11296?a+4|0:0)|0}function sh(a){a=a|0;return 11392}function th(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function uh(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function vh(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function wh(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function xh(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function yh(a){a=a|0;var b=0,e=0,f=0,g=0;b=i;e=c[a+324>>2]|0;if(((e|0)!=0?(f=e+4|0,g=c[f>>2]|0,c[f>>2]=g+ -1,(g|0)==0):0)?(jd[c[(c[e>>2]|0)+8>>2]&255](e),f=e+8|0,g=c[f>>2]|0,c[f>>2]=g+ -1,(g|0)==0):0)jd[c[(c[e>>2]|0)+16>>2]&255](e);e=c[a+316>>2]|0;if(((e|0)!=0?(f=e+4|0,g=c[f>>2]|0,c[f>>2]=g+ -1,(g|0)==0):0)?(jd[c[(c[e>>2]|0)+8>>2]&255](e),f=e+8|0,g=c[f>>2]|0,c[f>>2]=g+ -1,(g|0)==0):0)jd[c[(c[e>>2]|0)+16>>2]&255](e);e=c[a+300>>2]|0;if(e){f=a+304|0;g=c[f>>2]|0;if((g|0)!=(e|0))c[f>>2]=g+(~(((g+ -12+(0-e)|0)>>>0)/12|0)*12|0);Uq(e)}g=c[a+288>>2]|0;if(g){f=a+292|0;e=c[f>>2]|0;if((e|0)!=(g|0))c[f>>2]=e+(~((e+ -8+(0-g)|0)>>>3)<<3);Uq(g)}e=a+281|0;e=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;if(!e){g=a+16|0;g=c[g>>2]|0;g=g+ -4|0;g=c[g>>2]|0;Uq(g);i=b;return}Uq(e);g=a+16|0;g=c[g>>2]|0;g=g+ -4|0;g=c[g>>2]|0;Uq(g);i=b;return}function zh(a){a=a|0;return}function Ah(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Bh(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}yh(a);Uq(a);i=b;return}function Ch(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==11904)a=a+12|0;else a=0;return a|0}function Dh(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Eh(a){a=a|0;return}function Fh(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Gh(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(a)Uq(a);i=b;return}function Hh(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==12152)a=a+12|0;else a=0;return a|0}function Ih(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Jh(){var b=0,d=0,e=0;b=i;Pb(384,392,504,0,480,76,9360,0,9360,0,8,472,240);cb(384,1,464,456,77,1);d=Tq(8)|0;a:do if(!d){while(1){d=c[6860]|0;c[6860]=d+0;if(!d)break;qd[d&3]();d=Tq(8)|0;if(d)break a}e=Wb(4)|0;c[e>>2]=27280;Zc(e|0,27328,220)}while(0);a[d>>0]=6;a[d+1>>0]=0;a[d+2>>0]=0;a[d+3>>0]=0;e=d+4|0;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;Hc(384,16,4,440,432,9,d|0,0);d=Tq(8)|0;b:do if(!d){while(1){d=c[6860]|0;c[6860]=d+0;if(!d)break;qd[d&3]();d=Tq(8)|0;if(d)break b}e=Wb(4)|0;c[e>>2]=27280;Zc(e|0,27328,220)}while(0);a[d>>0]=53;a[d+1>>0]=0;a[d+2>>0]=0;a[d+3>>0]=0;e=d+4|0;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;Hc(384,24,3,416,408,7,d|0,0);d=Tq(8)|0;c:do if(!d){while(1){d=c[6860]|0;c[6860]=d+0;if(!d)break;qd[d&3]();d=Tq(8)|0;if(d)break c}e=Wb(4)|0;c[e>>2]=27280;Zc(e|0,27328,220)}while(0);a[d>>0]=78;a[d+1>>0]=0;a[d+2>>0]=0;a[d+3>>0]=0;e=d+4|0;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;Hc(384,40,2,352,344,34,d|0,0);Pb(200,208,328,0,296,79,9360,0,9360,0,56,288,241);cb(200,1,280,272,80,2);d=Tq(8)|0;d:do if(!d){while(1){d=c[6860]|0;c[6860]=d+0;if(!d)break;qd[d&3]();d=Tq(8)|0;if(d)break d}e=Wb(4)|0;c[e>>2]=27280;Zc(e|0,27328,220)}while(0);a[d>>0]=8;a[d+1>>0]=0;a[d+2>>0]=0;a[d+3>>0]=0;e=d+4|0;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;Hc(200,16,4,256,248,10,d|0,0);d=Tq(8)|0;e:do if(!d){while(1){d=c[6860]|0;c[6860]=d+0;if(!d)break;qd[d&3]();d=Tq(8)|0;if(d)break e}e=Wb(4)|0;c[e>>2]=27280;Zc(e|0,27328,220)}while(0);a[d>>0]=54;a[d+1>>0]=0;a[d+2>>0]=0;a[d+3>>0]=0;e=d+4|0;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;Hc(200,72,3,232,224,9,d|0,0);d=Tq(8)|0;f:do if(!d){while(1){d=c[6860]|0;c[6860]=d+0;if(!d)break;qd[d&3]();d=Tq(8)|0;if(d)break f}e=Wb(4)|0;c[e>>2]=27280;Zc(e|0,27328,220)}while(0);a[d>>0]=55;a[d+1>>0]=0;a[d+2>>0]=0;a[d+3>>0]=0;e=d+4|0;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;Hc(200,96,3,232,224,9,d|0,0);d=Tq(8)|0;g:do if(!d){while(1){d=c[6860]|0;c[6860]=d+0;if(!d)break;qd[d&3]();d=Tq(8)|0;if(d)break g}e=Wb(4)|0;c[e>>2]=27280;Zc(e|0,27328,220)}while(0);a[d>>0]=56;a[d+1>>0]=0;a[d+2>>0]=0;a[d+3>>0]=0;e=d+4|0;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;Hc(200,112,3,232,224,9,d|0,0);d=Tq(8)|0;if(d){e=d;a[e>>0]=57;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;d=e+4|0;a[d>>0]=0;a[d+1>>0]=0;a[d+2>>0]=0;a[d+3>>0]=0;Hc(200,24,3,144,136,10,e|0,0);i=b;return}while(1){d=c[6860]|0;c[6860]=d+0;if(!d){e=32;break}qd[d&3]();d=Tq(8)|0;if(d){e=33;break}}if((e|0)==32){e=Wb(4)|0;c[e>>2]=27280;Zc(e|0,27328,220)}else if((e|0)==33){a[d>>0]=57;a[d+1>>0]=0;a[d+2>>0]=0;a[d+3>>0]=0;e=d+4|0;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;Hc(200,24,3,144,136,10,d|0,0);i=b;return}}function Kh(a){a=a|0;var b=0,d=0,e=0;b=i;d=c[a+4>>2]|0;e=(mr(d|0)|0)+1|0;a=Tq(e)|0;if(!a){e=0;i=b;return e|0}nr(a|0,d|0,e|0)|0;e=a;i=b;return e|0}function Lh(){var a=0;a=i;zc(28224,12216);sb(28256,12224,1,1,0);Vb(28272,12232,1,-128,127);Vb(28304,12240,1,-128,127);Vb(28288,12256,1,0,255);Vb(28312,12272,2,-32768,32767);Vb(28320,12280,2,0,65535);Vb(28336,12296,4,-2147483648,2147483647);Vb(28352,12304,4,0,-1);Vb(28360,12320,4,-2147483648,2147483647);Vb(28376,12328,4,0,-1);Qc(28392,12344,4);Qc(28408,12352,8);Ta(13912,12360);Ta(13824,12376);Gc(13736,4,12416);mb(13616,12432);sc(13584,0,12448);sc(13544,0,12480);sc(13504,1,12520);sc(13464,2,12560);sc(13424,3,12592);sc(13384,4,12632);sc(13344,5,12664);sc(13304,4,12704);sc(13264,5,12736);sc(13544,0,12776);sc(13504,1,12808);sc(13464,2,12848);sc(13424,3,12888);sc(13384,4,12928);sc(13344,5,12968);sc(13224,6,13008);sc(13184,7,13040);sc(13144,7,13072);i=a;return}function Mh(a){a=a|0;a=i;Fj(14024);Fj(14200);Kj(14376);Kj(14552);i=a;return}function Nh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;c[b>>2]=16312;Qn(b+4|0);g=b+8|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[b>>2]=15008;c[b+32>>2]=d;g=c[b+4>>2]|0;j=g+4|0;c[j>>2]=(c[j>>2]|0)+1;d=Sn(g,19144)|0;h=c[j>>2]|0;c[j>>2]=h+ -1;if(!h)jd[c[(c[g>>2]|0)+8>>2]&255](g);c[b+36>>2]=d;c[b+40>>2]=e;a[b+44>>0]=(md[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;i=f;return} - - - -function Ml(e,f,g,h,j,k,l,m,n){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;n=i;i=i+48|0;x=n+36|0;w=n+16|0;r=n;y=n+28|0;z=n+32|0;t=n+40|0;A=n+12|0;B=n+24|0;u=n+20|0;v=n+8|0;s=n+4|0;c[k>>2]=0;C=c[j+28>>2]|0;p=C+4|0;c[p>>2]=(c[p>>2]|0)+1;p=Sn(C,19072)|0;E=C+4|0;D=c[E>>2]|0;c[E>>2]=D+ -1;if(!D)jd[c[(c[C>>2]|0)+8>>2]&255](C);a:do switch(m<<24>>24|0){case 89:{o=Nl(g,c[h>>2]|0,k,p,4)|0;if(!(c[k>>2]&4))c[l+20>>2]=o+ -1900;break};case 37:{l=c[h>>2]|0;h=c[g>>2]|0;do if(h){if((c[h+12>>2]|0)==(c[h+16>>2]|0))if((md[c[(c[h>>2]|0)+36>>2]&127](h)|0)==-1){c[g>>2]=0;h=0;break}else{h=c[g>>2]|0;break}}else h=0;while(0);h=(h|0)==0;do if(l){if((c[l+12>>2]|0)==(c[l+16>>2]|0)?(md[c[(c[l>>2]|0)+36>>2]&127](l)|0)==-1:0){o=104;break}if(!h)o=105}else o=104;while(0);if((o|0)==104)if(h)o=105;else l=0;if((o|0)==105){c[k>>2]=c[k>>2]|6;break a}h=c[g>>2]|0;f=c[h+12>>2]|0;if((f|0)==(c[h+16>>2]|0))h=md[c[(c[h>>2]|0)+36>>2]&127](h)|0;else h=d[f>>0]|0;if((fd[c[(c[p>>2]|0)+36>>2]&31](p,h&255,0)|0)<<24>>24!=37){c[k>>2]=c[k>>2]|4;break a}f=c[g>>2]|0;p=f+12|0;h=c[p>>2]|0;if((h|0)==(c[f+16>>2]|0))md[c[(c[f>>2]|0)+40>>2]&127](f)|0;else c[p>>2]=h+1;p=c[g>>2]|0;do if(p){if((c[p+12>>2]|0)==(c[p+16>>2]|0))if((md[c[(c[p>>2]|0)+36>>2]&127](p)|0)==-1){c[g>>2]=0;p=0;break}else{p=c[g>>2]|0;break}}else p=0;while(0);p=(p|0)==0;do if(l){if((c[l+12>>2]|0)==(c[l+16>>2]|0)?(md[c[(c[l>>2]|0)+36>>2]&127](l)|0)==-1:0){o=123;break}if(p)break a}else o=123;while(0);if((o|0)==123?!p:0)break a;c[k>>2]=c[k>>2]|2;break};case 109:{o=Nl(g,c[h>>2]|0,k,p,2)|0;p=c[k>>2]|0;if((p&4|0)==0&(o|0)<13){c[l+16>>2]=o+ -1;break a}else{c[k>>2]=p|4;break a}};case 72:{p=Nl(g,c[h>>2]|0,k,p,2)|0;o=c[k>>2]|0;if((o&4|0)==0&(p|0)<24){c[l+8>>2]=p;break a}else{c[k>>2]=o|4;break a}};case 70:{Al(z,f,c[g>>2]|0,c[h>>2]|0,j,k,l,18008,18016|0);c[g>>2]=c[z>>2];break};case 104:case 66:case 98:{Jl(f,l+16|0,g,c[h>>2]|0,k,p);break};case 77:{p=Nl(g,c[h>>2]|0,k,p,2)|0;o=c[k>>2]|0;if((o&4|0)==0&(p|0)<60){c[l+4>>2]=p;break a}else{c[k>>2]=o|4;break a}};case 99:{p=f+8|0;p=md[c[(c[p>>2]|0)+12>>2]&127](p)|0;q=a[p>>0]|0;if(!(q&1)){o=p+1|0;p=(q&255)>>>1}else{o=c[p+8>>2]|0;p=c[p+4>>2]|0}Al(r,f,c[g>>2]|0,c[h>>2]|0,j,k,l,o,o+p|0);c[g>>2]=c[r>>2];break};case 112:{o=l+8|0;h=c[h>>2]|0;l=f+8|0;l=md[c[(c[l>>2]|0)+8>>2]&127](l)|0;f=a[l>>0]|0;if(!(f&1))f=(f&255)>>>1;else f=c[l+4>>2]|0;j=a[l+12>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[l+16>>2]|0;if((f|0)==(0-j|0)){c[k>>2]=c[k>>2]|4;break a}E=qk(g,h,l,l+24|0,p,k,0)|0;k=E-l|0;if((E|0)==(l|0)?(c[o>>2]|0)==12:0){c[o>>2]=0;break a}if((k|0)==12?(q=c[o>>2]|0,(q|0)<12):0)c[o>>2]=q+12;break};case 116:case 110:{l=p+8|0;p=c[h>>2]|0;b:while(1){h=c[g>>2]|0;do if(h){if((c[h+12>>2]|0)==(c[h+16>>2]|0))if((md[c[(c[h>>2]|0)+36>>2]&127](h)|0)==-1){c[g>>2]=0;h=0;break}else{h=c[g>>2]|0;break}}else h=0;while(0);h=(h|0)==0;do if(p){if((c[p+12>>2]|0)!=(c[p+16>>2]|0))if(h)break;else break b;if((md[c[(c[p>>2]|0)+36>>2]&127](p)|0)!=-1){if(!h)break b}else o=43}else o=43;while(0);if((o|0)==43){o=0;if(h){p=0;break}else p=0}f=c[g>>2]|0;h=c[f+12>>2]|0;if((h|0)==(c[f+16>>2]|0))h=md[c[(c[f>>2]|0)+36>>2]&127](f)|0;else h=d[h>>0]|0;if((h&255)<<24>>24<=-1)break;if(!(b[(c[l>>2]|0)+(h<<24>>24<<1)>>1]&8192))break;f=c[g>>2]|0;j=f+12|0;h=c[j>>2]|0;if((h|0)==(c[f+16>>2]|0)){md[c[(c[f>>2]|0)+40>>2]&127](f)|0;continue}else{c[j>>2]=h+1;continue}}l=c[g>>2]|0;do if(l){if((c[l+12>>2]|0)==(c[l+16>>2]|0))if((md[c[(c[l>>2]|0)+36>>2]&127](l)|0)==-1){c[g>>2]=0;l=0;break}else{l=c[g>>2]|0;break}}else l=0;while(0);l=(l|0)==0;do if(p){if((c[p+12>>2]|0)==(c[p+16>>2]|0)?(md[c[(c[p>>2]|0)+36>>2]&127](p)|0)==-1:0){o=62;break}if(l)break a}else o=62;while(0);if((o|0)==62?!l:0)break a;c[k>>2]=c[k>>2]|2;break};case 83:{o=Nl(g,c[h>>2]|0,k,p,2)|0;p=c[k>>2]|0;if((p&4|0)==0&(o|0)<61){c[l>>2]=o;break a}else{c[k>>2]=p|4;break a}};case 121:{Ll(l+20|0,g,c[h>>2]|0,k,p);break};case 65:case 97:{Hl(f,l+24|0,g,c[h>>2]|0,k,p);break};case 101:case 100:{o=l+12|0;p=Nl(g,c[h>>2]|0,k,p,2)|0;l=c[k>>2]|0;if((l&4|0)==0?(p+ -1|0)>>>0<31:0){c[o>>2]=p;break a}c[k>>2]=l|4;break};case 114:{Al(t,f,c[g>>2]|0,c[h>>2]|0,j,k,l,18016,18027|0);c[g>>2]=c[t>>2];break};case 120:{E=c[(c[f>>2]|0)+20>>2]|0;c[u>>2]=c[g>>2];c[v>>2]=c[h>>2];c[w+0>>2]=c[u+0>>2];c[x+0>>2]=c[v+0>>2];gd[E&63](e,f,w,x,j,k,l);i=n;return};case 106:{o=Nl(g,c[h>>2]|0,k,p,3)|0;p=c[k>>2]|0;if((p&4|0)==0&(o|0)<366){c[l+28>>2]=o;break a}else{c[k>>2]=p|4;break a}};case 68:{Al(y,f,c[g>>2]|0,c[h>>2]|0,j,k,l,18e3,18008|0);c[g>>2]=c[y>>2];break};case 88:{q=f+8|0;q=md[c[(c[q>>2]|0)+24>>2]&127](q)|0;p=a[q>>0]|0;if(!(p&1)){o=q+1|0;p=(p&255)>>>1}else{o=c[q+8>>2]|0;p=c[q+4>>2]|0}Al(s,f,c[g>>2]|0,c[h>>2]|0,j,k,l,o,o+p|0);c[g>>2]=c[s>>2];break};case 82:{Al(A,f,c[g>>2]|0,c[h>>2]|0,j,k,l,18032,18037|0);c[g>>2]=c[A>>2];break};case 119:{o=Nl(g,c[h>>2]|0,k,p,1)|0;p=c[k>>2]|0;if((p&4|0)==0&(o|0)<7){c[l+24>>2]=o;break a}else{c[k>>2]=p|4;break a}};case 84:{Al(B,f,c[g>>2]|0,c[h>>2]|0,j,k,l,18040,18048|0);c[g>>2]=c[B>>2];break};case 73:{o=l+8|0;l=Nl(g,c[h>>2]|0,k,p,2)|0;p=c[k>>2]|0;if((p&4|0)==0?(l+ -1|0)>>>0<12:0){c[o>>2]=l;break a}c[k>>2]=p|4;break};default:c[k>>2]=c[k>>2]|4}while(0);c[e>>2]=c[g>>2];i=n;return}function Nl(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=i;l=c[a>>2]|0;do if(l){if((c[l+12>>2]|0)==(c[l+16>>2]|0))if((md[c[(c[l>>2]|0)+36>>2]&127](l)|0)==-1){c[a>>2]=0;l=0;break}else{l=c[a>>2]|0;break}}else l=0;while(0);l=(l|0)==0;do if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(md[c[(c[e>>2]|0)+36>>2]&127](e)|0)==-1:0){m=10;break}if(!l)m=11}else m=10;while(0);if((m|0)==10)if(l)m=11;else e=0;if((m|0)==11){c[f>>2]=c[f>>2]|6;p=0;i=j;return p|0}m=c[a>>2]|0;l=c[m+12>>2]|0;if((l|0)==(c[m+16>>2]|0))m=md[c[(c[m>>2]|0)+36>>2]&127](m)|0;else m=d[l>>0]|0;l=m&255;if(l<<24>>24>-1?(k=g+8|0,(b[(c[k>>2]|0)+(m<<24>>24<<1)>>1]&2048)!=0):0){l=(fd[c[(c[g>>2]|0)+36>>2]&31](g,l,0)|0)<<24>>24;o=c[a>>2]|0;m=o+12|0;n=c[m>>2]|0;if((n|0)==(c[o+16>>2]|0)){md[c[(c[o>>2]|0)+40>>2]&127](o)|0;n=e;m=e}else{c[m>>2]=n+1;n=e;m=e}while(1){l=l+ -48|0;h=h+ -1|0;e=c[a>>2]|0;do if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0))if((md[c[(c[e>>2]|0)+36>>2]&127](e)|0)==-1){c[a>>2]=0;e=0;break}else{e=c[a>>2]|0;break}}else e=0;while(0);o=(e|0)==0;if(m)if((c[m+12>>2]|0)==(c[m+16>>2]|0)){m=(md[c[(c[m>>2]|0)+36>>2]&127](m)|0)==-1;e=m?0:n;m=m?0:n}else e=n;else{e=n;m=0}n=c[a>>2]|0;if(!((o^(m|0)==0)&(h|0)>0)){m=38;break}o=c[n+12>>2]|0;if((o|0)==(c[n+16>>2]|0))n=md[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=d[o>>0]|0;o=n&255;if(o<<24>>24<=-1){m=49;break}if(!(b[(c[k>>2]|0)+(n<<24>>24<<1)>>1]&2048)){m=49;break}l=((fd[c[(c[g>>2]|0)+36>>2]&31](g,o,0)|0)<<24>>24)+(l*10|0)|0;n=c[a>>2]|0;p=n+12|0;o=c[p>>2]|0;if((o|0)==(c[n+16>>2]|0)){md[c[(c[n>>2]|0)+40>>2]&127](n)|0;n=e;continue}else{c[p>>2]=o+1;n=e;continue}}if((m|0)==38){do if(n){if((c[n+12>>2]|0)==(c[n+16>>2]|0))if((md[c[(c[n>>2]|0)+36>>2]&127](n)|0)==-1){c[a>>2]=0;n=0;break}else{n=c[a>>2]|0;break}}else n=0;while(0);g=(n|0)==0;do if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(md[c[(c[e>>2]|0)+36>>2]&127](e)|0)==-1:0){m=47;break}if(g){p=l;i=j;return p|0}}else m=47;while(0);if((m|0)==47?!g:0){p=l;i=j;return p|0}c[f>>2]=c[f>>2]|2;p=l;i=j;return p|0}else if((m|0)==49){i=j;return l|0}}c[f>>2]=c[f>>2]|4;p=0;i=j;return p|0}function Ol(a,b,d,e,f,g,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;l=i;i=i+32|0;r=l+16|0;n=l+12|0;q=l+8|0;o=l+4|0;p=l;t=c[f+28>>2]|0;s=t+4|0;c[s>>2]=(c[s>>2]|0)+1;s=Sn(t,19064)|0;x=t+4|0;y=c[x>>2]|0;c[x>>2]=y+ -1;if(!y)jd[c[(c[t>>2]|0)+8>>2]&255](t);c[g>>2]=0;a:do if((j|0)!=(k|0)){t=0;b:while(1){u=t;t=d;while(1){if(u){d=t;break a}if(!t){u=1;d=0;t=0}else{d=c[t+12>>2]|0;if((d|0)==(c[t+16>>2]|0))d=md[c[(c[t>>2]|0)+36>>2]&127](t)|0;else d=c[d>>2]|0;y=(d|0)==-1;u=y?1:0;d=y?0:t;t=y?0:t}if(e){v=c[e+12>>2]|0;if((v|0)==(c[e+16>>2]|0))v=md[c[(c[e>>2]|0)+36>>2]&127](e)|0;else v=c[v>>2]|0;if((v|0)!=-1){if(!u){m=20;break b}}else m=18}else m=18;if((m|0)==18){m=0;if(u){e=0;m=20;break b}else e=0}if((fd[c[(c[s>>2]|0)+52>>2]&31](s,c[j>>2]|0,0)|0)<<24>>24==37){m=22;break}if(fd[c[(c[s>>2]|0)+12>>2]&31](s,8192,c[j>>2]|0)|0){m=32;break}u=d+12|0;w=c[u>>2]|0;v=d+16|0;if((w|0)==(c[v>>2]|0))w=md[c[(c[d>>2]|0)+36>>2]&127](d)|0;else w=c[w>>2]|0;y=vd[c[(c[s>>2]|0)+28>>2]&63](s,w)|0;if((y|0)==(vd[c[(c[s>>2]|0)+28>>2]&63](s,c[j>>2]|0)|0)){m=58;break}c[g>>2]=4;u=4}c:do if((m|0)==22){m=0;u=j+4|0;if((u|0)==(k|0)){m=23;break b}t=fd[c[(c[s>>2]|0)+52>>2]&31](s,c[u>>2]|0,0)|0;if(t<<24>>24==48|t<<24>>24==69){u=j+8|0;if((u|0)==(k|0)){m=26;break b}j=u;u=fd[c[(c[s>>2]|0)+52>>2]&31](s,c[u>>2]|0,0)|0}else{j=u;u=t;t=0}y=c[(c[b>>2]|0)+36>>2]|0;c[o>>2]=d;c[p>>2]=e;c[n+0>>2]=c[o+0>>2];c[r+0>>2]=c[p+0>>2];ld[y&3](q,b,n,r,f,g,h,u,t);j=j+4|0;d=c[q>>2]|0}else if((m|0)==32){while(1){m=0;j=j+4|0;if((j|0)==(k|0)){j=k;break}if(fd[c[(c[s>>2]|0)+12>>2]&31](s,8192,c[j>>2]|0)|0)m=32;else break}u=e;v=e;while(1){if(!d){w=1;d=0}else{w=c[d+12>>2]|0;if((w|0)==(c[d+16>>2]|0))w=md[c[(c[d>>2]|0)+36>>2]&127](d)|0;else w=c[w>>2]|0;y=(w|0)==-1;w=y?1:0;d=y?0:d;t=y?0:t}if(v){x=c[v+12>>2]|0;if((x|0)==(c[v+16>>2]|0))v=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else v=c[x>>2]|0;if((v|0)!=-1)if(w^(u|0)==0){w=u;v=u}else{d=t;break c}else{u=0;e=0;m=45}}else m=45;if((m|0)==45){m=0;if(w){d=t;break c}else{w=u;v=0}}u=d+12|0;y=c[u>>2]|0;x=d+16|0;if((y|0)==(c[x>>2]|0))y=md[c[(c[d>>2]|0)+36>>2]&127](d)|0;else y=c[y>>2]|0;if(!(fd[c[(c[s>>2]|0)+12>>2]&31](s,8192,y)|0)){d=t;break c}y=c[u>>2]|0;if((y|0)==(c[x>>2]|0)){md[c[(c[d>>2]|0)+40>>2]&127](d)|0;u=w;continue}else{c[u>>2]=y+4;u=w;continue}}}else if((m|0)==58){m=0;w=c[u>>2]|0;if((w|0)==(c[v>>2]|0))md[c[(c[d>>2]|0)+40>>2]&127](d)|0;else c[u>>2]=w+4;j=j+4|0;d=t}while(0);if((j|0)==(k|0))break a;t=c[g>>2]|0}if((m|0)==20){c[g>>2]=4;break}else if((m|0)==23){c[g>>2]=4;break}else if((m|0)==26){c[g>>2]=4;break}}while(0);if(!d){f=0;n=1}else{f=c[d+12>>2]|0;if((f|0)==(c[d+16>>2]|0))f=md[c[(c[d>>2]|0)+36>>2]&127](d)|0;else f=c[f>>2]|0;n=(f|0)==-1;f=n?0:d;n=n?1:0}if(e){o=c[e+12>>2]|0;if((o|0)==(c[e+16>>2]|0))o=md[c[(c[e>>2]|0)+36>>2]&127](e)|0;else o=c[o>>2]|0;if((o|0)!=-1){if(n){c[a>>2]=f;i=l;return}}else m=73}else m=73;if((m|0)==73?!n:0){c[a>>2]=f;i=l;return}c[g>>2]=c[g>>2]|2;c[a>>2]=f;i=l;return}function Pl(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Ql(a){a=a|0;return}function Rl(a){a=a|0;return 2}function Sl(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 j=0;j=i;Ol(a,b,c[d>>2]|0,c[e>>2]|0,f,g,h,18144,18176|0);i=j;return}function Tl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0;k=i;m=d+8|0;m=md[c[(c[m>>2]|0)+20>>2]&127](m)|0;n=a[m>>0]|0;if(!(n&1)){l=m+4|0;m=(n&255)>>>1}else{l=c[m+8>>2]|0;m=c[m+4>>2]|0}Ol(b,d,c[e>>2]|0,c[f>>2]|0,g,h,j,l,l+(m<<2)|0);i=k;return}function Ul(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 j=0,k=0,l=0,m=0;j=i;k=c[f+28>>2]|0;f=k+4|0;c[f>>2]=(c[f>>2]|0)+1;f=Sn(k,19064)|0;m=k+4|0;l=c[m>>2]|0;c[m>>2]=l+ -1;if(!l)jd[c[(c[k>>2]|0)+8>>2]&255](k);Vl(b,h+24|0,d,c[e>>2]|0,g,f);c[a>>2]=c[d>>2];i=j;return}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;h=i;a=a+8|0;a=md[c[c[a>>2]>>2]&127](a)|0;f=(Hk(d,e,a,a+168|0,g,f,0)|0)-a|0;if((f|0)>=168){i=h;return}c[b>>2]=((f|0)/12|0|0)%7|0;i=h;return}function Wl(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 j=0,k=0,l=0,m=0;j=i;k=c[f+28>>2]|0;f=k+4|0;c[f>>2]=(c[f>>2]|0)+1;f=Sn(k,19064)|0;m=k+4|0;l=c[m>>2]|0;c[m>>2]=l+ -1;if(!l)jd[c[(c[k>>2]|0)+8>>2]&255](k);Xl(b,h+16|0,d,c[e>>2]|0,g,f);c[a>>2]=c[d>>2];i=j;return}function Xl(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;h=i;a=a+8|0;a=md[c[(c[a>>2]|0)+4>>2]&127](a)|0;f=(Hk(d,e,a,a+288|0,g,f,0)|0)-a|0;if((f|0)>=288){i=h;return}c[b>>2]=((f|0)/12|0|0)%12|0;i=h;return}function Yl(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 j=0,k=0,l=0;b=i;j=c[f+28>>2]|0;f=j+4|0;c[f>>2]=(c[f>>2]|0)+1;f=Sn(j,19064)|0;l=j+4|0;k=c[l>>2]|0;c[l>>2]=k+ -1;if(!k)jd[c[(c[j>>2]|0)+8>>2]&255](j);Zl(h+20|0,d,c[e>>2]|0,g,f);c[a>>2]=c[d>>2];i=b;return}function Zl(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=i;f=$l(b,d,e,f,4)|0;if(c[e>>2]&4){i=g;return}if((f|0)<69)e=f+2e3|0;else e=(f+ -69|0)>>>0<31?f+1900|0:f;c[a>>2]=e+ -1900;i=g;return}function _l(b,d,e,f,g,h,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;l=i;i=i+48|0;x=l+36|0;w=l+16|0;q=l;r=l+28|0;t=l+32|0;y=l+40|0;s=l+12|0;z=l+24|0;u=l+20|0;v=l+8|0;p=l+4|0;c[h>>2]=0;A=c[g+28>>2]|0;n=A+4|0;c[n>>2]=(c[n>>2]|0)+1;n=Sn(A,19064)|0;C=A+4|0;B=c[C>>2]|0;c[C>>2]=B+ -1;if(!B)jd[c[(c[A>>2]|0)+8>>2]&255](A);a:do switch(k<<24>>24|0){case 89:{m=$l(e,c[f>>2]|0,h,n,4)|0;if(!(c[h>>2]&4))c[j+20>>2]=m+ -1900;break};case 37:{j=c[f>>2]|0;d=c[e>>2]|0;do if(d){f=c[d+12>>2]|0;if((f|0)==(c[d+16>>2]|0))f=md[c[(c[d>>2]|0)+36>>2]&127](d)|0;else f=c[f>>2]|0;if((f|0)==-1){c[e>>2]=0;f=1;break}else{f=(c[e>>2]|0)==0;break}}else f=1;while(0);if(j){d=c[j+12>>2]|0;if((d|0)==(c[j+16>>2]|0))d=md[c[(c[j>>2]|0)+36>>2]&127](j)|0;else d=c[d>>2]|0;if((d|0)!=-1){if(!f)m=115}else m=113}else m=113;if((m|0)==113)if(f)m=115;else j=0;if((m|0)==115){c[h>>2]=c[h>>2]|6;break a}f=c[e>>2]|0;d=c[f+12>>2]|0;if((d|0)==(c[f+16>>2]|0))f=md[c[(c[f>>2]|0)+36>>2]&127](f)|0;else f=c[d>>2]|0;if((fd[c[(c[n>>2]|0)+52>>2]&31](n,f,0)|0)<<24>>24!=37){c[h>>2]=c[h>>2]|4;break a}n=c[e>>2]|0;f=n+12|0;d=c[f>>2]|0;if((d|0)==(c[n+16>>2]|0))md[c[(c[n>>2]|0)+40>>2]&127](n)|0;else c[f>>2]=d+4;f=c[e>>2]|0;do if(f){n=c[f+12>>2]|0;if((n|0)==(c[f+16>>2]|0))n=md[c[(c[f>>2]|0)+36>>2]&127](f)|0;else n=c[n>>2]|0;if((n|0)==-1){c[e>>2]=0;n=1;break}else{n=(c[e>>2]|0)==0;break}}else n=1;while(0);if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))j=md[c[(c[j>>2]|0)+36>>2]&127](j)|0;else j=c[f>>2]|0;if((j|0)!=-1){if(n)break a}else m=136}else m=136;if((m|0)==136?!n:0)break a;c[h>>2]=c[h>>2]|2;break};case 65:case 97:{Vl(d,j+24|0,e,c[f>>2]|0,h,n);break};case 101:case 100:{m=j+12|0;n=$l(e,c[f>>2]|0,h,n,2)|0;j=c[h>>2]|0;if((j&4|0)==0?(n+ -1|0)>>>0<31:0){c[m>>2]=n;break a}c[h>>2]=j|4;break};case 70:{Ol(t,d,c[e>>2]|0,c[f>>2]|0,g,h,j,18208,18240|0);c[e>>2]=c[t>>2];break};case 77:{m=$l(e,c[f>>2]|0,h,n,2)|0;n=c[h>>2]|0;if((n&4|0)==0&(m|0)<60){c[j+4>>2]=m;break a}else{c[h>>2]=n|4;break a}};case 73:{m=j+8|0;j=$l(e,c[f>>2]|0,h,n,2)|0;n=c[h>>2]|0;if((n&4|0)==0?(j+ -1|0)>>>0<12:0){c[m>>2]=j;break a}c[h>>2]=n|4;break};case 112:{m=j+8|0;f=c[f>>2]|0;j=d+8|0;j=md[c[(c[j>>2]|0)+8>>2]&127](j)|0;d=a[j>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[j+4>>2]|0;g=a[j+12>>0]|0;if(!(g&1))g=(g&255)>>>1;else g=c[j+16>>2]|0;if((d|0)==(0-g|0)){c[h>>2]=c[h>>2]|4;break a}C=Hk(e,f,j,j+24|0,n,h,0)|0;h=C-j|0;if((C|0)==(j|0)?(c[m>>2]|0)==12:0){c[m>>2]=0;break a}if((h|0)==12?(o=c[m>>2]|0,(o|0)<12):0)c[m>>2]=o+12;break};case 82:{Ol(s,d,c[e>>2]|0,c[f>>2]|0,g,h,j,18288,18308|0);c[e>>2]=c[s>>2];break};case 104:case 66:case 98:{Xl(d,j+16|0,e,c[f>>2]|0,h,n);break};case 84:{Ol(z,d,c[e>>2]|0,c[f>>2]|0,g,h,j,18312,18344|0);c[e>>2]=c[z>>2];break};case 68:{Ol(r,d,c[e>>2]|0,c[f>>2]|0,g,h,j,18176,18208|0);c[e>>2]=c[r>>2];break};case 121:{Zl(j+20|0,e,c[f>>2]|0,h,n);break};case 109:{n=$l(e,c[f>>2]|0,h,n,2)|0;m=c[h>>2]|0;if((m&4|0)==0&(n|0)<13){c[j+16>>2]=n+ -1;break a}else{c[h>>2]=m|4;break a}};case 99:{n=d+8|0;n=md[c[(c[n>>2]|0)+12>>2]&127](n)|0;o=a[n>>0]|0;if(!(o&1)){m=n+4|0;n=(o&255)>>>1}else{m=c[n+8>>2]|0;n=c[n+4>>2]|0}Ol(q,d,c[e>>2]|0,c[f>>2]|0,g,h,j,m,m+(n<<2)|0);c[e>>2]=c[q>>2];break};case 72:{n=$l(e,c[f>>2]|0,h,n,2)|0;m=c[h>>2]|0;if((m&4|0)==0&(n|0)<24){c[j+8>>2]=n;break a}else{c[h>>2]=m|4;break a}};case 106:{m=$l(e,c[f>>2]|0,h,n,3)|0;n=c[h>>2]|0;if((n&4|0)==0&(m|0)<366){c[j+28>>2]=m;break a}else{c[h>>2]=n|4;break a}};case 120:{C=c[(c[d>>2]|0)+20>>2]|0;c[u>>2]=c[e>>2];c[v>>2]=c[f>>2];c[w+0>>2]=c[u+0>>2];c[x+0>>2]=c[v+0>>2];gd[C&63](b,d,w,x,g,h,j);i=l;return};case 114:{Ol(y,d,c[e>>2]|0,c[f>>2]|0,g,h,j,18240,18284|0);c[e>>2]=c[y>>2];break};case 116:case 110:{j=c[f>>2]|0;while(1){f=c[e>>2]|0;do if(f){d=c[f+12>>2]|0;if((d|0)==(c[f+16>>2]|0))f=md[c[(c[f>>2]|0)+36>>2]&127](f)|0;else f=c[d>>2]|0;if((f|0)==-1){c[e>>2]=0;f=1;break}else{f=(c[e>>2]|0)==0;break}}else f=1;while(0);if(j){d=c[j+12>>2]|0;if((d|0)==(c[j+16>>2]|0))d=md[c[(c[j>>2]|0)+36>>2]&127](j)|0;else d=c[d>>2]|0;if((d|0)!=-1){if(!f)break}else m=46}else m=46;if((m|0)==46){m=0;if(f){j=0;break}else j=0}f=c[e>>2]|0;d=c[f+12>>2]|0;if((d|0)==(c[f+16>>2]|0))f=md[c[(c[f>>2]|0)+36>>2]&127](f)|0;else f=c[d>>2]|0;if(!(fd[c[(c[n>>2]|0)+12>>2]&31](n,8192,f)|0))break;g=c[e>>2]|0;d=g+12|0;f=c[d>>2]|0;if((f|0)==(c[g+16>>2]|0)){md[c[(c[g>>2]|0)+40>>2]&127](g)|0;continue}else{c[d>>2]=f+4;continue}}f=c[e>>2]|0;do if(f){n=c[f+12>>2]|0;if((n|0)==(c[f+16>>2]|0))n=md[c[(c[f>>2]|0)+36>>2]&127](f)|0;else n=c[n>>2]|0;if((n|0)==-1){c[e>>2]=0;n=1;break}else{n=(c[e>>2]|0)==0;break}}else n=1;while(0);if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))j=md[c[(c[j>>2]|0)+36>>2]&127](j)|0;else j=c[f>>2]|0;if((j|0)!=-1){if(n)break a}else m=67}else m=67;if((m|0)==67?!n:0)break a;c[h>>2]=c[h>>2]|2;break};case 88:{n=d+8|0;n=md[c[(c[n>>2]|0)+24>>2]&127](n)|0;o=a[n>>0]|0;if(!(o&1)){m=n+4|0;n=(o&255)>>>1}else{m=c[n+8>>2]|0;n=c[n+4>>2]|0}Ol(p,d,c[e>>2]|0,c[f>>2]|0,g,h,j,m,m+(n<<2)|0);c[e>>2]=c[p>>2];break};case 83:{n=$l(e,c[f>>2]|0,h,n,2)|0;m=c[h>>2]|0;if((m&4|0)==0&(n|0)<61){c[j>>2]=n;break a}else{c[h>>2]=m|4;break a}};case 119:{m=$l(e,c[f>>2]|0,h,n,1)|0;n=c[h>>2]|0;if((n&4|0)==0&(m|0)<7){c[j+24>>2]=m;break a}else{c[h>>2]=n|4;break a}};default:c[h>>2]=c[h>>2]|4}while(0);c[b>>2]=c[e>>2];i=l;return}function $l(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,j=0,k=0,l=0,m=0,n=0;h=i;k=c[a>>2]|0;do if(k){j=c[k+12>>2]|0;if((j|0)==(c[k+16>>2]|0))j=md[c[(c[k>>2]|0)+36>>2]&127](k)|0;else j=c[j>>2]|0;if((j|0)==-1){c[a>>2]=0;j=1;break}else{j=(c[a>>2]|0)==0;break}}else j=1;while(0);if(b){k=c[b+12>>2]|0;if((k|0)==(c[b+16>>2]|0))k=md[c[(c[b>>2]|0)+36>>2]&127](b)|0;else k=c[k>>2]|0;if((k|0)!=-1){if(!j)g=15}else g=13}else g=13;if((g|0)==13)if(j)g=15;else b=0;if((g|0)==15){c[d>>2]=c[d>>2]|6;n=0;i=h;return n|0}j=c[a>>2]|0;k=c[j+12>>2]|0;if((k|0)==(c[j+16>>2]|0))j=md[c[(c[j>>2]|0)+36>>2]&127](j)|0;else j=c[k>>2]|0;if(!(fd[c[(c[e>>2]|0)+12>>2]&31](e,2048,j)|0)){c[d>>2]=c[d>>2]|4;n=0;i=h;return n|0}j=(fd[c[(c[e>>2]|0)+52>>2]&31](e,j,0)|0)<<24>>24;l=c[a>>2]|0;k=l+12|0;m=c[k>>2]|0;if((m|0)==(c[l+16>>2]|0)){md[c[(c[l>>2]|0)+40>>2]&127](l)|0;k=b;l=b;b=j}else{c[k>>2]=m+4;k=b;l=b;b=j}while(1){b=b+ -48|0;f=f+ -1|0;j=c[a>>2]|0;do if(j){m=c[j+12>>2]|0;if((m|0)==(c[j+16>>2]|0))j=md[c[(c[j>>2]|0)+36>>2]&127](j)|0;else j=c[m>>2]|0;if((j|0)==-1){c[a>>2]=0;m=1;break}else{m=(c[a>>2]|0)==0;break}}else m=1;while(0);if(!l){j=k;l=0;n=1}else{j=c[l+12>>2]|0;if((j|0)==(c[l+16>>2]|0))j=md[c[(c[l>>2]|0)+36>>2]&127](l)|0;else j=c[j>>2]|0;n=(j|0)==-1;j=n?0:k;l=n?0:k;n=n?1:(k|0)==0}k=c[a>>2]|0;if(!((m^n)&(f|0)>0))break;m=c[k+12>>2]|0;if((m|0)==(c[k+16>>2]|0))k=md[c[(c[k>>2]|0)+36>>2]&127](k)|0;else k=c[m>>2]|0;if(!(fd[c[(c[e>>2]|0)+12>>2]&31](e,2048,k)|0)){g=59;break}b=((fd[c[(c[e>>2]|0)+52>>2]&31](e,k,0)|0)<<24>>24)+(b*10|0)|0;m=c[a>>2]|0;n=m+12|0;k=c[n>>2]|0;if((k|0)==(c[m+16>>2]|0)){md[c[(c[m>>2]|0)+40>>2]&127](m)|0;k=j;continue}else{c[n>>2]=k+4;k=j;continue}}if((g|0)==59){i=h;return b|0}do if(k){e=c[k+12>>2]|0;if((e|0)==(c[k+16>>2]|0))e=md[c[(c[k>>2]|0)+36>>2]&127](k)|0;else e=c[e>>2]|0;if((e|0)==-1){c[a>>2]=0;a=1;break}else{a=(c[a>>2]|0)==0;break}}else a=1;while(0);if(j){e=c[j+12>>2]|0;if((e|0)==(c[j+16>>2]|0))e=md[c[(c[j>>2]|0)+36>>2]&127](j)|0;else e=c[e>>2]|0;if((e|0)!=-1){if(a){n=b;i=h;return n|0}}else g=56}else g=56;if((g|0)==56?!a:0){n=b;i=h;return n|0}c[d>>2]=c[d>>2]|2;n=b;i=h;return n|0}function am(a){a=a|0;var b=0;b=i;cm(a+8|0);Uq(a);i=b;return}function bm(a){a=a|0;var b=0;b=i;cm(a+8|0);i=b;return}function cm(a){a=a|0;var b=0,d=0;b=i;d=c[a>>2]|0;if((d|0)==(Dk()|0)){i=b;return}ub(c[a>>2]|0);i=b;return}function dm(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0;g=i;i=i+112|0;f=g+4|0;l=g;c[l>>2]=f+100;em(d+8|0,f,l,h,j,k);j=c[l>>2]|0;d=c[e>>2]|0;if((f|0)==(j|0)){l=d;c[b>>2]=l;i=g;return}else e=d;do{l=a[f>>0]|0;do if(d){k=d+24|0;h=c[k>>2]|0;if((h|0)==(c[d+28>>2]|0)){l=(vd[c[(c[d>>2]|0)+52>>2]&63](d,l&255)|0)==-1;e=l?0:e;d=l?0:d;break}else{c[k>>2]=h+1;a[h>>0]=l;break}}else d=0;while(0);f=f+1|0}while((f|0)!=(j|0));c[b>>2]=e;i=g;return}function em(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 j=0,k=0,l=0,m=0;j=i;i=i+16|0;k=j;a[k>>0]=37;m=k+1|0;a[m>>0]=g;l=k+2|0;a[l>>0]=h;a[k+3>>0]=0;if(h<<24>>24){a[m>>0]=h;a[l>>0]=g}c[e>>2]=d+(Bc(d|0,(c[e>>2]|0)-d|0,k|0,f|0,c[b>>2]|0)|0);i=j;return}function fm(a){a=a|0;var b=0;b=i;cm(a+8|0);Uq(a);i=b;return}function gm(a){a=a|0;var b=0;b=i;cm(a+8|0);i=b;return}function hm(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0;f=i;i=i+528|0;m=f+416|0;n=f+412|0;k=f;l=f+408|0;e=f+8|0;b=b+8|0;c[n>>2]=m+100;em(b,m,n,g,h,j);h=k;c[h>>2]=0;c[h+4>>2]=0;c[l>>2]=m;b=Yb(c[b>>2]|0)|0;h=Tp(e,l,100,k)|0;if(b)Yb(b|0)|0;if((h|0)==-1)dn(19912);b=e+(h<<2)|0;j=c[d>>2]|0;if(!h){n=j;c[a>>2]=n;i=f;return}else{d=e;e=j}do{g=c[d>>2]|0;if(!e)e=0;else{h=e+24|0;k=c[h>>2]|0;if((k|0)==(c[e+28>>2]|0))g=vd[c[(c[e>>2]|0)+52>>2]&63](e,g)|0;else{c[h>>2]=k+4;c[k>>2]=g}n=(g|0)==-1;j=n?0:j;e=n?0:e}d=d+4|0}while((d|0)!=(b|0));c[a>>2]=j;i=f;return}function im(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function jm(a){a=a|0;return}function km(a){a=a|0;return 127}function lm(a){a=a|0;return 127}function mm(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function nm(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function om(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function pm(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=45;a[b+2>>0]=0;return}function qm(a){a=a|0;return 0}function rm(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function sm(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function tm(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function um(a){a=a|0;return}function vm(a){a=a|0;return 127}function wm(a){a=a|0;return 127}function xm(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function ym(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function zm(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function Am(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=45;a[b+2>>0]=0;return}function Bm(a){a=a|0;return 0}function Cm(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function Dm(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function Em(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Fm(a){a=a|0;return}function Gm(a){a=a|0;return 2147483647}function Hm(a){a=a|0;return 2147483647}function Im(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function Jm(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function Km(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function Lm(b,d){b=b|0;d=d|0;var e=0,f=0;d=i;a[b>>0]=2;b=b+4|0;f=1;e=b;while(1){f=f+ -1|0;c[e>>2]=45;if(!f)break;else e=e+4|0}c[b+4>>2]=0;i=d;return}function Mm(a){a=a|0;return 0}function Nm(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function Om(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function Pm(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Qm(a){a=a|0;return}function Rm(a){a=a|0;return 2147483647}function Sm(a){a=a|0;return 2147483647}function Tm(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function Um(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function Vm(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function Wm(b,d){b=b|0;d=d|0;var e=0,f=0;d=i;a[b>>0]=2;b=b+4|0;f=1;e=b;while(1){f=f+ -1|0;c[e>>2]=45;if(!f)break;else e=e+4|0}c[b+4>>2]=0;i=d;return}function Xm(a){a=a|0;return 0}function Ym(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function Zm(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function _m(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function $m(a){a=a|0;return}function an(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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=i;i=i+240|0;q=d;x=d+132|0;n=d+8|0;s=d+16|0;t=d+130|0;r=d+120|0;p=d+20|0;c[n>>2]=x;m=n+4|0;c[m>>2]=243;o=c[h+28>>2]|0;u=o+4|0;c[u>>2]=(c[u>>2]|0)+1;u=Sn(o,19072)|0;a[t>>0]=0;if(cn(e,c[f>>2]|0,g,o,c[h+4>>2]|0,j,t,u,n,s,x+100|0)|0){sd[c[(c[u>>2]|0)+32>>2]&7](u,18704,18714,r)|0;g=c[s>>2]|0;u=c[n>>2]|0;h=g-u|0;if((h|0)>98){v=Tq(h+2|0)|0;if(!v){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else h=v}else{h=0;v=p}if(a[t>>0]|0){a[v>>0]=45;v=v+1|0}if(u>>>0>>0){t=r+10|0;g=r;do{w=a[u>>0]|0;x=r;while(1){if((a[x>>0]|0)==w<<24>>24)break;x=x+1|0;if((x|0)==(t|0)){x=t;break}}a[v>>0]=a[18704+(x-g)>>0]|0;u=u+1|0;v=v+1|0}while(u>>>0<(c[s>>2]|0)>>>0)}a[v>>0]=0;c[q>>2]=k;if((Up(p,18720,q)|0)!=1)dn(18728);Uq(h)}k=c[e>>2]|0;if(k){if((c[k+12>>2]|0)==(c[k+16>>2]|0)?(md[c[(c[k>>2]|0)+36>>2]&127](k)|0)==-1:0){c[e>>2]=0;k=0}}else k=0;p=(k|0)==0;e=c[f>>2]|0;do if(e){if((c[e+12>>2]|0)!=(c[e+16>>2]|0))if(p)break;else{l=33;break}if((md[c[(c[e>>2]|0)+36>>2]&127](e)|0)!=-1)if(p)break;else{l=33;break}else{c[f>>2]=0;l=31;break}}else l=31;while(0);if((l|0)==31?p:0)l=33;if((l|0)==33)c[j>>2]=c[j>>2]|2;c[b>>2]=k;w=o+4|0;x=c[w>>2]|0;c[w>>2]=x+ -1;if(!x)jd[c[(c[o>>2]|0)+8>>2]&255](o);l=c[n>>2]|0;c[n>>2]=0;if(!l){i=d;return}jd[c[m>>2]&255](l);i=d;return}function bn(a){a=a|0;return}function cn(e,f,g,h,j,k,l,m,n,o,p){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;r=i;i=i+592|0;F=r+76|0;G=r+112|0;J=r;A=r+176|0;H=r+64|0;M=r+24|0;K=r+28|0;L=r+124|0;I=r+148|0;z=r+164|0;B=r+188|0;U=r+192|0;q=r+80|0;E=r+88|0;D=r+104|0;C=r+108|0;u=r+92|0;w=r+40|0;t=r+136|0;v=r+12|0;s=r+52|0;x=r+160|0;c[B>>2]=p;c[q>>2]=U;p=q+4|0;c[p>>2]=243;c[E>>2]=U;c[D>>2]=U+400;c[C>>2]=0;c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;c[w+0>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;if(g){z=Sn(h,18528)|0;kd[c[(c[z>>2]|0)+44>>2]&63](F,z);c[C>>2]=c[F>>2];kd[c[(c[z>>2]|0)+32>>2]&63](G,z);if(!(a[v>>0]&1)){a[v+1>>0]=0;a[v>>0]=0}else{a[c[v+8>>2]>>0]=0;c[v+4>>2]=0}Li(v);c[v+0>>2]=c[G+0>>2];c[v+4>>2]=c[G+4>>2];c[v+8>>2]=c[G+8>>2];c[G+0>>2]=0;c[G+4>>2]=0;c[G+8>>2]=0;kd[c[(c[z>>2]|0)+28>>2]&63](J,z);if(!(a[t>>0]&1)){a[t+1>>0]=0;a[t>>0]=0}else{a[c[t+8>>2]>>0]=0;c[t+4>>2]=0}Li(t);c[t+0>>2]=c[J+0>>2];c[t+4>>2]=c[J+4>>2];c[t+8>>2]=c[J+8>>2];c[J+0>>2]=0;c[J+4>>2]=0;c[J+8>>2]=0;F=md[c[(c[z>>2]|0)+12>>2]&127](z)|0;G=md[c[(c[z>>2]|0)+16>>2]&127](z)|0;kd[c[(c[z>>2]|0)+20>>2]&63](A,z);if(!(a[u>>0]&1)){a[u+1>>0]=0;a[u>>0]=0}else{a[c[u+8>>2]>>0]=0;c[u+4>>2]=0}Li(u);c[u+0>>2]=c[A+0>>2];c[u+4>>2]=c[A+4>>2];c[u+8>>2]=c[A+8>>2];c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;kd[c[(c[z>>2]|0)+24>>2]&63](H,z);if(!(a[w>>0]&1)){a[w+1>>0]=0;a[w>>0]=0}else{a[c[w+8>>2]>>0]=0;c[w+4>>2]=0}Li(w);c[w+0>>2]=c[H+0>>2];c[w+4>>2]=c[H+4>>2];c[w+8>>2]=c[H+8>>2];c[H+0>>2]=0;c[H+4>>2]=0;c[H+8>>2]=0;T=md[c[(c[z>>2]|0)+36>>2]&127](z)|0}else{A=Sn(h,18464)|0;kd[c[(c[A>>2]|0)+44>>2]&63](M,A);c[C>>2]=c[M>>2];kd[c[(c[A>>2]|0)+32>>2]&63](K,A);if(!(a[v>>0]&1)){a[v+1>>0]=0;a[v>>0]=0}else{a[c[v+8>>2]>>0]=0;c[v+4>>2]=0}Li(v);c[v+0>>2]=c[K+0>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[K+0>>2]=0;c[K+4>>2]=0;c[K+8>>2]=0;kd[c[(c[A>>2]|0)+28>>2]&63](L,A);if(!(a[t>>0]&1)){a[t+1>>0]=0;a[t>>0]=0}else{a[c[t+8>>2]>>0]=0;c[t+4>>2]=0}Li(t);c[t+0>>2]=c[L+0>>2];c[t+4>>2]=c[L+4>>2];c[t+8>>2]=c[L+8>>2];c[L+0>>2]=0;c[L+4>>2]=0;c[L+8>>2]=0;F=md[c[(c[A>>2]|0)+12>>2]&127](A)|0;G=md[c[(c[A>>2]|0)+16>>2]&127](A)|0;kd[c[(c[A>>2]|0)+20>>2]&63](I,A);if(!(a[u>>0]&1)){a[u+1>>0]=0;a[u>>0]=0}else{a[c[u+8>>2]>>0]=0;c[u+4>>2]=0}Li(u);c[u+0>>2]=c[I+0>>2];c[u+4>>2]=c[I+4>>2];c[u+8>>2]=c[I+8>>2];c[I+0>>2]=0;c[I+4>>2]=0;c[I+8>>2]=0;kd[c[(c[A>>2]|0)+24>>2]&63](z,A);if(!(a[w>>0]&1)){a[w+1>>0]=0;a[w>>0]=0}else{a[c[w+8>>2]>>0]=0;c[w+4>>2]=0}Li(w);c[w+0>>2]=c[z+0>>2];c[w+4>>2]=c[z+4>>2];c[w+8>>2]=c[z+8>>2];c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;T=md[c[(c[A>>2]|0)+36>>2]&127](A)|0}c[o>>2]=c[n>>2];L=m+8|0;J=v+1|0;I=v+4|0;m=v+8|0;H=t+1|0;K=t+4|0;z=t+8|0;P=(j&512|0)!=0;Q=w+1|0;A=w+8|0;h=w+4|0;g=s+1|0;j=s+8|0;M=s+4|0;N=C+3|0;O=u+4|0;S=0;R=0;a:while(1){V=c[e>>2]|0;do if(V){if((c[V+12>>2]|0)==(c[V+16>>2]|0))if((md[c[(c[V>>2]|0)+36>>2]&127](V)|0)==-1){c[e>>2]=0;V=0;break}else{V=c[e>>2]|0;break}}else V=0;while(0);V=(V|0)==0;do if(f){if((c[f+12>>2]|0)!=(c[f+16>>2]|0))if(V)break;else{y=311;break a}if((md[c[(c[f>>2]|0)+36>>2]&127](f)|0)!=-1){if(!V){y=311;break a}}else y=64}else y=64;while(0);if((y|0)==64){y=0;if(V){f=0;y=311;break}else f=0}b:do switch(a[C+S>>0]|0){case 2:{if(!((R|0)!=0|S>>>0<2)){if((S|0)==2)V=(a[N>>0]|0)!=0;else V=0;if(!(P|V)){W=f;R=0;break b}}Y=a[w>>0]|0;W=(Y&1)==0;V=W?Q:c[A>>2]|0;c:do if((S|0)!=0?(d[C+(S+ -1)>>0]|0)<2:0){W=V+(W?(Y&255)>>>1:c[h>>2]|0)|0;X=V;while(1){if((X|0)==(W|0))break;Z=a[X>>0]|0;if(Z<<24>>24<=-1)break;if(!(b[(c[L>>2]|0)+(Z<<24>>24<<1)>>1]&8192))break;else X=X+1|0}W=X-V|0;_=a[s>>0]|0;$=(_&1)==0;if($)Z=(_&255)>>>1;else Z=c[M>>2]|0;if(W>>>0<=Z>>>0){if($){$=(_&255)>>>1;_=g;Z=$;W=s+($-W)+1|0}else{aa=c[j>>2]|0;$=c[M>>2]|0;_=aa;Z=$;W=aa+($-W)|0}Z=_+Z|0;if((W|0)==(Z|0)){W=f;V=X;X=f}else{_=V;while(1){if((a[W>>0]|0)!=(a[_>>0]|0)){W=f;X=f;break c}W=W+1|0;if((W|0)==(Z|0)){W=f;V=X;X=f;break}else _=_+1|0}}}else{W=f;X=f}}else{W=f;X=f}while(0);d:while(1){if(!(Y&1)){Z=Q;Y=(Y&255)>>>1}else{Z=c[A>>2]|0;Y=c[h>>2]|0}if((V|0)==(Z+Y|0))break;Y=c[e>>2]|0;do if(Y){if((c[Y+12>>2]|0)==(c[Y+16>>2]|0))if((md[c[(c[Y>>2]|0)+36>>2]&127](Y)|0)==-1){c[e>>2]=0;Y=0;break}else{Y=c[e>>2]|0;break}}else Y=0;while(0);Y=(Y|0)==0;do if(X){if((c[X+12>>2]|0)!=(c[X+16>>2]|0))if(Y){Y=W;break}else break d;if((md[c[(c[X>>2]|0)+36>>2]&127](X)|0)!=-1)if(Y^(W|0)==0){Y=W;X=W}else break d;else{W=0;f=0;y=204}}else y=204;while(0);if((y|0)==204){y=0;if(Y)break;else{Y=W;X=0}}Z=c[e>>2]|0;W=c[Z+12>>2]|0;if((W|0)==(c[Z+16>>2]|0))W=md[c[(c[Z>>2]|0)+36>>2]&127](Z)|0;else W=d[W>>0]|0;if((W&255)<<24>>24!=(a[V>>0]|0)){W=Y;break}W=c[e>>2]|0;Z=W+12|0;_=c[Z>>2]|0;if((_|0)==(c[W+16>>2]|0))md[c[(c[W>>2]|0)+40>>2]&127](W)|0;else c[Z>>2]=_+1;W=Y;Y=a[w>>0]|0;V=V+1|0}if(P){Y=a[w>>0]|0;if(!(Y&1)){X=Q;Y=(Y&255)>>>1}else{X=c[A>>2]|0;Y=c[h>>2]|0}if((V|0)!=(X+Y|0)){y=219;break a}}break};case 3:{V=a[t>>0]|0;X=(V&1)==0;if(X)_=(V&255)>>>1;else _=c[K>>2]|0;W=a[v>>0]|0;Y=(W&1)==0;if(Y)Z=(W&255)>>>1;else Z=c[I>>2]|0;if((_|0)==(0-Z|0))W=f;else{if(X)Z=(V&255)>>>1;else Z=c[K>>2]|0;if(Z){if(Y)Y=(W&255)>>>1;else Y=c[I>>2]|0;if(Y){X=c[e>>2]|0;Z=c[X+12>>2]|0;Y=c[X+16>>2]|0;if((Z|0)==(Y|0)){W=md[c[(c[X>>2]|0)+36>>2]&127](X)|0;Y=c[e>>2]|0;V=a[t>>0]|0;X=Y;Z=c[Y+12>>2]|0;Y=c[Y+16>>2]|0}else W=d[Z>>0]|0;_=X+12|0;Y=(Z|0)==(Y|0);if((W&255)<<24>>24==(a[((V&1)==0?H:c[z>>2]|0)>>0]|0)){if(Y)md[c[(c[X>>2]|0)+40>>2]&127](X)|0;else c[_>>2]=Z+1;V=a[t>>0]|0;if(!(V&1))V=(V&255)>>>1;else V=c[K>>2]|0;W=f;R=V>>>0>1?t:R;break b}if(Y)V=md[c[(c[X>>2]|0)+36>>2]&127](X)|0;else V=d[Z>>0]|0;if((V&255)<<24>>24!=(a[((a[v>>0]&1)==0?J:c[m>>2]|0)>>0]|0)){y=168;break a}X=c[e>>2]|0;W=X+12|0;V=c[W>>2]|0;if((V|0)==(c[X+16>>2]|0))md[c[(c[X>>2]|0)+40>>2]&127](X)|0;else c[W>>2]=V+1;a[l>>0]=1;V=a[v>>0]|0;if(!(V&1))V=(V&255)>>>1;else V=c[I>>2]|0;W=f;R=V>>>0>1?v:R;break b}}if(X)_=(V&255)>>>1;else _=c[K>>2]|0;Z=c[e>>2]|0;Y=c[Z+12>>2]|0;X=(Y|0)==(c[Z+16>>2]|0);if(!_){if(X){V=md[c[(c[Z>>2]|0)+36>>2]&127](Z)|0;W=a[v>>0]|0}else V=d[Y>>0]|0;if((V&255)<<24>>24!=(a[((W&1)==0?J:c[m>>2]|0)>>0]|0)){W=f;break b}X=c[e>>2]|0;W=X+12|0;V=c[W>>2]|0;if((V|0)==(c[X+16>>2]|0))md[c[(c[X>>2]|0)+40>>2]&127](X)|0;else c[W>>2]=V+1;a[l>>0]=1;V=a[v>>0]|0;if(!(V&1))V=(V&255)>>>1;else V=c[I>>2]|0;W=f;R=V>>>0>1?v:R;break b}if(X){W=md[c[(c[Z>>2]|0)+36>>2]&127](Z)|0;V=a[t>>0]|0}else W=d[Y>>0]|0;if((W&255)<<24>>24!=(a[((V&1)==0?H:c[z>>2]|0)>>0]|0)){a[l>>0]=1;W=f;break b}X=c[e>>2]|0;W=X+12|0;V=c[W>>2]|0;if((V|0)==(c[X+16>>2]|0))md[c[(c[X>>2]|0)+40>>2]&127](X)|0;else c[W>>2]=V+1;V=a[t>>0]|0;if(!(V&1))V=(V&255)>>>1;else V=c[K>>2]|0;W=f;R=V>>>0>1?t:R}break};case 4:{Y=f;X=f;V=0;e:while(1){W=c[e>>2]|0;do if(W){if((c[W+12>>2]|0)==(c[W+16>>2]|0))if((md[c[(c[W>>2]|0)+36>>2]&127](W)|0)==-1){c[e>>2]=0;W=0;break}else{W=c[e>>2]|0;break}}else W=0;while(0);Z=(W|0)==0;do if(X){if((c[X+12>>2]|0)!=(c[X+16>>2]|0))if(Z){W=Y;break}else{W=Y;break e}if((md[c[(c[X>>2]|0)+36>>2]&127](X)|0)!=-1)if(Z^(Y|0)==0){W=Y;X=Y}else{W=Y;break e}else{W=0;f=0;y=231}}else{W=Y;y=231}while(0);if((y|0)==231){y=0;if(Z)break;else X=0}Y=c[e>>2]|0;Z=c[Y+12>>2]|0;if((Z|0)==(c[Y+16>>2]|0))Z=md[c[(c[Y>>2]|0)+36>>2]&127](Y)|0;else Z=d[Z>>0]|0;Y=Z&255;if(Y<<24>>24>-1?(b[(c[L>>2]|0)+(Z<<24>>24<<1)>>1]&2048)!=0:0){Z=c[o>>2]|0;if((Z|0)==(c[B>>2]|0)){fn(n,o,B);Z=c[o>>2]|0}c[o>>2]=Z+1;a[Z>>0]=Y;V=V+1|0}else{Z=a[u>>0]|0;if(!(Z&1))Z=(Z&255)>>>1;else Z=c[O>>2]|0;if(!((V|0)!=0&(Z|0)!=0&Y<<24>>24==G<<24>>24))break;if((U|0)==(c[D>>2]|0)){gn(q,E,D);U=c[E>>2]|0}aa=U+4|0;c[E>>2]=aa;c[U>>2]=V;U=aa;V=0}Z=c[e>>2]|0;_=Z+12|0;Y=c[_>>2]|0;if((Y|0)==(c[Z+16>>2]|0)){md[c[(c[Z>>2]|0)+40>>2]&127](Z)|0;Y=W;continue}else{c[_>>2]=Y+1;Y=W;continue}}if(!((V|0)==0?1:(c[q>>2]|0)==(U|0))){if((U|0)==(c[D>>2]|0)){gn(q,E,D);U=c[E>>2]|0}aa=U+4|0;c[E>>2]=aa;c[U>>2]=V;U=aa}if((T|0)>0){V=c[e>>2]|0;do if(V){if((c[V+12>>2]|0)==(c[V+16>>2]|0))if((md[c[(c[V>>2]|0)+36>>2]&127](V)|0)==-1){c[e>>2]=0;V=0;break}else{V=c[e>>2]|0;break}}else V=0;while(0);V=(V|0)==0;do if(W){if((c[W+12>>2]|0)!=(c[W+16>>2]|0))if(V)break;else{y=276;break a}if((md[c[(c[W>>2]|0)+36>>2]&127](W)|0)!=-1){if(!V){y=276;break a}}else{f=0;y=270}}else y=270;while(0);if((y|0)==270){y=0;if(V){y=276;break a}else W=0}V=c[e>>2]|0;X=c[V+12>>2]|0;if((X|0)==(c[V+16>>2]|0))V=md[c[(c[V>>2]|0)+36>>2]&127](V)|0;else V=d[X>>0]|0;if((V&255)<<24>>24!=F<<24>>24){y=276;break a}Y=c[e>>2]|0;X=Y+12|0;V=c[X>>2]|0;if((V|0)==(c[Y+16>>2]|0)){md[c[(c[Y>>2]|0)+40>>2]&127](Y)|0;X=W;V=W}else{c[X>>2]=V+1;X=W;V=W}while(1){W=c[e>>2]|0;do if(W){if((c[W+12>>2]|0)==(c[W+16>>2]|0))if((md[c[(c[W>>2]|0)+36>>2]&127](W)|0)==-1){c[e>>2]=0;W=0;break}else{W=c[e>>2]|0;break}}else W=0;while(0);Y=(W|0)==0;do if(V){if((c[V+12>>2]|0)!=(c[V+16>>2]|0))if(Y){W=X;break}else{y=298;break a}if((md[c[(c[V>>2]|0)+36>>2]&127](V)|0)!=-1)if(Y^(X|0)==0){W=X;V=X}else{y=298;break a}else{W=0;f=0;y=291}}else{W=X;y=291}while(0);if((y|0)==291){y=0;if(Y){y=298;break a}else V=0}X=c[e>>2]|0;Y=c[X+12>>2]|0;if((Y|0)==(c[X+16>>2]|0))X=md[c[(c[X>>2]|0)+36>>2]&127](X)|0;else X=d[Y>>0]|0;if((X&255)<<24>>24<=-1){y=298;break a}if(!(b[(c[L>>2]|0)+(X<<24>>24<<1)>>1]&2048)){y=298;break a}if((c[o>>2]|0)==(c[B>>2]|0))fn(n,o,B);Y=c[e>>2]|0;X=c[Y+12>>2]|0;if((X|0)==(c[Y+16>>2]|0))X=md[c[(c[Y>>2]|0)+36>>2]&127](Y)|0;else X=d[X>>0]|0;Y=c[o>>2]|0;c[o>>2]=Y+1;a[Y>>0]=X;T=T+ -1|0;X=c[e>>2]|0;Y=X+12|0;Z=c[Y>>2]|0;if((Z|0)==(c[X+16>>2]|0))md[c[(c[X>>2]|0)+40>>2]&127](X)|0;else c[Y>>2]=Z+1;if((T|0)>0)X=W;else break}}if((c[o>>2]|0)==(c[n>>2]|0)){y=309;break a}break};case 0:{y=78;break};case 1:{if((S|0)==3){y=311;break a}y=c[e>>2]|0;V=c[y+12>>2]|0;if((V|0)==(c[y+16>>2]|0))y=md[c[(c[y>>2]|0)+36>>2]&127](y)|0;else y=d[V>>0]|0;if((y&255)<<24>>24<=-1){y=77;break a}if(!(b[(c[L>>2]|0)+(y<<24>>24<<1)>>1]&8192)){y=77;break a}V=c[e>>2]|0;y=V+12|0;W=c[y>>2]|0;if((W|0)==(c[V+16>>2]|0))y=md[c[(c[V>>2]|0)+40>>2]&127](V)|0;else{c[y>>2]=W+1;y=d[W>>0]|0}Mi(s,y&255);y=78;break};default:W=f}while(0);f:do if((y|0)==78){y=0;if((S|0)==3){y=311;break a}else{W=f;X=f}while(1){V=c[e>>2]|0;do if(V){if((c[V+12>>2]|0)==(c[V+16>>2]|0))if((md[c[(c[V>>2]|0)+36>>2]&127](V)|0)==-1){c[e>>2]=0;V=0;break}else{V=c[e>>2]|0;break}}else V=0;while(0);V=(V|0)==0;do if(X){if((c[X+12>>2]|0)!=(c[X+16>>2]|0))if(V){V=W;break}else break f;if((md[c[(c[X>>2]|0)+36>>2]&127](X)|0)!=-1)if(V^(W|0)==0){V=W;X=W}else break f;else{W=0;f=0;y=90}}else y=90;while(0);if((y|0)==90){y=0;if(V)break f;else{V=W;X=0}}Y=c[e>>2]|0;W=c[Y+12>>2]|0;if((W|0)==(c[Y+16>>2]|0))W=md[c[(c[Y>>2]|0)+36>>2]&127](Y)|0;else W=d[W>>0]|0;if((W&255)<<24>>24<=-1){W=V;break f}if(!(b[(c[L>>2]|0)+(W<<24>>24<<1)>>1]&8192)){W=V;break f}W=c[e>>2]|0;Z=W+12|0;Y=c[Z>>2]|0;if((Y|0)==(c[W+16>>2]|0))W=md[c[(c[W>>2]|0)+40>>2]&127](W)|0;else{c[Z>>2]=Y+1;W=d[Y>>0]|0}Mi(s,W&255);W=V}}while(0);S=S+1|0;if(S>>>0>=4){f=W;y=311;break}}g:do if((y|0)==77){c[k>>2]=c[k>>2]|4;k=0}else if((y|0)==168){c[k>>2]=c[k>>2]|4;k=0}else if((y|0)==219){c[k>>2]=c[k>>2]|4;k=0}else if((y|0)==276){c[k>>2]=c[k>>2]|4;k=0}else if((y|0)==298){c[k>>2]=c[k>>2]|4;k=0}else if((y|0)==309){c[k>>2]=c[k>>2]|4;k=0}else if((y|0)==311){h:do if(R){B=R+1|0;C=R+8|0;D=R+4|0;n=f;E=f;l=1;i:while(1){o=a[R>>0]|0;if(!(o&1))o=(o&255)>>>1;else o=c[D>>2]|0;if(l>>>0>=o>>>0)break h;o=c[e>>2]|0;do if(o){if((c[o+12>>2]|0)==(c[o+16>>2]|0))if((md[c[(c[o>>2]|0)+36>>2]&127](o)|0)==-1){c[e>>2]=0;o=0;break}else{o=c[e>>2]|0;break}}else o=0;while(0);F=(o|0)==0;do if(E){if((c[E+12>>2]|0)!=(c[E+16>>2]|0))if(F){o=n;break}else break i;if((md[c[(c[E>>2]|0)+36>>2]&127](E)|0)!=-1)if(F^(n|0)==0){o=n;E=n}else break i;else{o=0;y=328}}else{o=n;y=328}while(0);if((y|0)==328){y=0;if(F)break;else E=0}n=c[e>>2]|0;F=c[n+12>>2]|0;if((F|0)==(c[n+16>>2]|0))n=md[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=d[F>>0]|0;if(!(a[R>>0]&1))F=B;else F=c[C>>2]|0;if((n&255)<<24>>24!=(a[F+l>>0]|0))break;l=l+1|0;G=c[e>>2]|0;F=G+12|0;n=c[F>>2]|0;if((n|0)==(c[G+16>>2]|0)){md[c[(c[G>>2]|0)+40>>2]&127](G)|0;n=o;continue}else{c[F>>2]=n+1;n=o;continue}}c[k>>2]=c[k>>2]|4;k=0;break g}while(0);e=c[q>>2]|0;if((e|0)!=(U|0)?(c[x>>2]=0,hn(u,e,U,x),(c[x>>2]|0)!=0):0){c[k>>2]=c[k>>2]|4;k=0}else k=1}while(0);if(a[s>>0]&1)Uq(c[j>>2]|0);if(a[v>>0]&1)Uq(c[m>>2]|0);if(a[t>>0]&1)Uq(c[z>>2]|0);if(a[w>>0]&1)Uq(c[A>>2]|0);if(a[u>>0]&1)Uq(c[u+8>>2]|0);s=c[q>>2]|0;c[q>>2]=0;if(!s){i=r;return k|0}jd[c[p>>2]&255](s);i=r;return k|0}function dn(a){a=a|0;var b=0,d=0,e=0;b=Wb(8)|0;c[b>>2]=27520;e=mr(a|0)|0;d=$p(e+13|0)|0;c[d>>2]=e;c[d+4>>2]=e;c[d+8>>2]=0;d=d+12|0;nr(d|0,a|0,e+1|0)|0;c[b+4>>2]=d;Zc(b|0,27720,224)}function en(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;d=i;i=i+128|0;u=d+20|0;n=d+8|0;q=d;s=d+16|0;c[n>>2]=u;l=n+4|0;c[l>>2]=243;p=c[h+28>>2]|0;r=p+4|0;c[r>>2]=(c[r>>2]|0)+1;r=Sn(p,19072)|0;a[s>>0]=0;o=c[f>>2]|0;do if(cn(e,o,g,p,c[h+4>>2]|0,j,s,r,n,q,u+100|0)|0){if(!(a[k>>0]&1)){a[k+1>>0]=0;a[k>>0]=0}else{a[c[k+8>>2]>>0]=0;c[k+4>>2]=0}if(a[s>>0]|0)Mi(k,vd[c[(c[r>>2]|0)+28>>2]&63](r,45)|0);g=vd[c[(c[r>>2]|0)+28>>2]&63](r,48)|0;r=c[n>>2]|0;q=c[q>>2]|0;h=q+ -1|0;a:do if(r>>>0>>0)while(1){s=r+1|0;if((a[r>>0]|0)!=g<<24>>24)break a;if(s>>>0>>0)r=s;else{r=s;break}}while(0);t=r;g=a[k>>0]|0;if(!(g&1)){s=g;u=10;g=(g&255)>>>1}else{u=c[k>>2]|0;s=u&255;u=(u&-2)+ -1|0;g=c[k+4>>2]|0}h=q-t|0;if((q|0)!=(r|0)){if((u-g|0)>>>0>>0){Pi(k,u,g+h-u|0,g,g,0);s=a[k>>0]|0}if(!(s&1))s=k+1|0;else s=c[k+8>>2]|0;t=q+(g-t)|0;u=s+g|0;while(1){a[u>>0]=a[r>>0]|0;r=r+1|0;if((r|0)==(q|0))break;u=u+1|0}a[s+t>>0]=0;q=g+h|0;if(!(a[k>>0]&1)){a[k>>0]=q<<1;break}else{c[k+4>>2]=q;break}}}while(0);k=c[e>>2]|0;if(k){if((c[k+12>>2]|0)==(c[k+16>>2]|0)?(md[c[(c[k>>2]|0)+36>>2]&127](k)|0)==-1:0){c[e>>2]=0;k=0}}else k=0;e=(k|0)==0;do if(o){if((c[o+12>>2]|0)!=(c[o+16>>2]|0))if(e)break;else{m=43;break}if((md[c[(c[o>>2]|0)+36>>2]&127](o)|0)!=-1)if(e)break;else{m=43;break}else{c[f>>2]=0;m=41;break}}else m=41;while(0);if((m|0)==41?e:0)m=43;if((m|0)==43)c[j>>2]=c[j>>2]|2;c[b>>2]=k;t=p+4|0;u=c[t>>2]|0;c[t>>2]=u+ -1;if(!u)jd[c[(c[p>>2]|0)+8>>2]&255](p);b=c[n>>2]|0;c[n>>2]=0;if(!b){i=d;return}jd[c[l>>2]&255](b);i=d;return}function fn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;f=a+4|0;k=(c[f>>2]|0)!=243;j=c[a>>2]|0;g=j;h=(c[d>>2]|0)-g|0;h=h>>>0<2147483647?h<<1:-1;g=(c[b>>2]|0)-g|0;j=Vq(k?j:0,h)|0;if(!j){k=Wb(4)|0;c[k>>2]=27280;Zc(k|0,27328,220)}if(!k){k=c[a>>2]|0;c[a>>2]=j;if(k){jd[c[f>>2]&255](k);j=c[a>>2]|0}}else c[a>>2]=j;c[f>>2]=244;c[b>>2]=j+g;c[d>>2]=(c[a>>2]|0)+h;i=e;return}function gn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;g=i;h=a+4|0;j=(c[h>>2]|0)!=243;k=c[a>>2]|0;e=k;f=(c[d>>2]|0)-e|0;f=f>>>0<2147483647?f<<1:-1;e=(c[b>>2]|0)-e>>2;if(!j)k=0;k=Vq(k,f)|0;if(!k){k=Wb(4)|0;c[k>>2]=27280;Zc(k|0,27328,220)}if(!j){j=c[a>>2]|0;c[a>>2]=k;if(j){jd[c[h>>2]&255](j);k=c[a>>2]|0}}else c[a>>2]=k;c[h>>2]=244;c[b>>2]=k+(e<<2);c[d>>2]=(c[a>>2]|0)+(f>>>2<<2);i=g;return}function hn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;k=a[b>>0]|0;if(!(k&1))j=(k&255)>>>1;else j=c[b+4>>2]|0;if(!j){i=g;return}if((d|0)!=(e|0)?(h=e+ -4|0,h>>>0>d>>>0):0){j=d;do{k=c[j>>2]|0;c[j>>2]=c[h>>2];c[h>>2]=k;j=j+4|0;h=h+ -4|0}while(j>>>0>>0);k=a[b>>0]|0}if(!(k&1)){h=b+1|0;b=(k&255)>>>1}else{h=c[b+8>>2]|0;b=c[b+4>>2]|0}e=e+ -4|0;k=a[h>>0]|0;j=k<<24>>24<1|k<<24>>24==127;a:do if(e>>>0>d>>>0){b=h+b|0;while(1){if(!j?(k<<24>>24|0)!=(c[d>>2]|0):0)break;h=(b-h|0)>1?h+1|0:h;d=d+4|0;k=a[h>>0]|0;j=k<<24>>24<1|k<<24>>24==127;if(d>>>0>=e>>>0)break a}c[f>>2]=4;i=g;return}while(0);if(j){i=g;return}j=c[e>>2]|0;if(!(k<<24>>24>>>0>>0|(j|0)==0)){i=g;return}c[f>>2]=4;i=g;return}function jn(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function kn(a){a=a|0;return}function ln(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;n=i;i=i+576|0;q=n;x=n+16|0;m=n+8|0;r=n+456|0;t=n+560|0;s=n+416|0;p=n+460|0;c[m>>2]=x;d=m+4|0;c[d>>2]=243;o=c[h+28>>2]|0;u=o+4|0;c[u>>2]=(c[u>>2]|0)+1;u=Sn(o,19064)|0;a[t>>0]=0;if(mn(e,c[f>>2]|0,g,o,c[h+4>>2]|0,j,t,u,m,r,x+400|0)|0){sd[c[(c[u>>2]|0)+48>>2]&7](u,18784,18794,s)|0;u=c[r>>2]|0;g=c[m>>2]|0;h=u-g|0;if((h|0)>392){v=Tq((h>>2)+2|0)|0;if(!v){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else h=v}else{h=0;v=p}if(a[t>>0]|0){a[v>>0]=45;v=v+1|0}if(g>>>0>>0){t=s+40|0;u=s;do{x=c[g>>2]|0;w=s;while(1){if((c[w>>2]|0)==(x|0))break;w=w+4|0;if((w|0)==(t|0)){w=t;break}}a[v>>0]=a[18784+(w-u>>2)>>0]|0;g=g+4|0;v=v+1|0}while(g>>>0<(c[r>>2]|0)>>>0)}a[v>>0]=0;c[q>>2]=k;if((Up(p,18720,q)|0)!=1)dn(18728);Uq(h)}k=c[e>>2]|0;if(k){p=c[k+12>>2]|0;if((p|0)==(c[k+16>>2]|0))p=md[c[(c[k>>2]|0)+36>>2]&127](k)|0;else p=c[p>>2]|0;if((p|0)==-1){c[e>>2]=0;e=0;k=1}else{e=k;k=0}}else{e=0;k=1}p=c[f>>2]|0;do if(p){q=c[p+12>>2]|0;if((q|0)==(c[p+16>>2]|0))p=md[c[(c[p>>2]|0)+36>>2]&127](p)|0;else p=c[q>>2]|0;if((p|0)!=-1)if(k)break;else{l=34;break}else{c[f>>2]=0;l=32;break}}else l=32;while(0);if((l|0)==32?k:0)l=34;if((l|0)==34)c[j>>2]=c[j>>2]|2;c[b>>2]=e;w=o+4|0;x=c[w>>2]|0;c[w>>2]=x+ -1;if(!x)jd[c[(c[o>>2]|0)+8>>2]&255](o);f=c[m>>2]|0;c[m>>2]=0;if(!f){i=n;return}jd[c[d>>2]&255](f);i=n;return}function mn(b,e,f,g,h,j,k,l,m,n,o){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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,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;p=i;i=i+592|0;L=p+76|0;I=p+112|0;G=p;z=p+176|0;y=p+64|0;F=p+24|0;K=p+28|0;J=p+124|0;H=p+148|0;A=p+164|0;C=p+188|0;P=p+192|0;q=p+80|0;E=p+88|0;D=p+104|0;B=p+108|0;s=p+92|0;r=p+40|0;t=p+136|0;u=p+12|0;v=p+52|0;w=p+160|0;c[C>>2]=o;c[q>>2]=P;o=q+4|0;c[o>>2]=243;c[E>>2]=P;c[D>>2]=P+400;c[B>>2]=0;c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;if(f){A=Sn(g,18656)|0;kd[c[(c[A>>2]|0)+44>>2]&63](L,A);c[B>>2]=c[L>>2];kd[c[(c[A>>2]|0)+32>>2]&63](I,A);if(!(a[u>>0]&1)){c[u+4>>2]=0;a[u>>0]=0}else{c[c[u+8>>2]>>2]=0;c[u+4>>2]=0}Wi(u);c[u+0>>2]=c[I+0>>2];c[u+4>>2]=c[I+4>>2];c[u+8>>2]=c[I+8>>2];c[I+0>>2]=0;c[I+4>>2]=0;c[I+8>>2]=0;kd[c[(c[A>>2]|0)+28>>2]&63](G,A);if(!(a[t>>0]&1)){c[t+4>>2]=0;a[t>>0]=0}else{c[c[t+8>>2]>>2]=0;c[t+4>>2]=0}Wi(t);c[t+0>>2]=c[G+0>>2];c[t+4>>2]=c[G+4>>2];c[t+8>>2]=c[G+8>>2];c[G+0>>2]=0;c[G+4>>2]=0;c[G+8>>2]=0;F=md[c[(c[A>>2]|0)+12>>2]&127](A)|0;G=md[c[(c[A>>2]|0)+16>>2]&127](A)|0;kd[c[(c[A>>2]|0)+20>>2]&63](z,A);if(!(a[s>>0]&1)){a[s+1>>0]=0;a[s>>0]=0}else{a[c[s+8>>2]>>0]=0;c[s+4>>2]=0}Li(s);c[s+0>>2]=c[z+0>>2];c[s+4>>2]=c[z+4>>2];c[s+8>>2]=c[z+8>>2];c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;kd[c[(c[A>>2]|0)+24>>2]&63](y,A);if(!(a[r>>0]&1)){c[r+4>>2]=0;a[r>>0]=0}else{c[c[r+8>>2]>>2]=0;c[r+4>>2]=0}Wi(r);c[r+0>>2]=c[y+0>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[y+0>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;O=md[c[(c[A>>2]|0)+36>>2]&127](A)|0}else{y=Sn(g,18592)|0;kd[c[(c[y>>2]|0)+44>>2]&63](F,y);c[B>>2]=c[F>>2];kd[c[(c[y>>2]|0)+32>>2]&63](K,y);if(!(a[u>>0]&1)){c[u+4>>2]=0;a[u>>0]=0}else{c[c[u+8>>2]>>2]=0;c[u+4>>2]=0}Wi(u);c[u+0>>2]=c[K+0>>2];c[u+4>>2]=c[K+4>>2];c[u+8>>2]=c[K+8>>2];c[K+0>>2]=0;c[K+4>>2]=0;c[K+8>>2]=0;kd[c[(c[y>>2]|0)+28>>2]&63](J,y);if(!(a[t>>0]&1)){c[t+4>>2]=0;a[t>>0]=0}else{c[c[t+8>>2]>>2]=0;c[t+4>>2]=0}Wi(t);c[t+0>>2]=c[J+0>>2];c[t+4>>2]=c[J+4>>2];c[t+8>>2]=c[J+8>>2];c[J+0>>2]=0;c[J+4>>2]=0;c[J+8>>2]=0;F=md[c[(c[y>>2]|0)+12>>2]&127](y)|0;G=md[c[(c[y>>2]|0)+16>>2]&127](y)|0;kd[c[(c[y>>2]|0)+20>>2]&63](H,y);if(!(a[s>>0]&1)){a[s+1>>0]=0;a[s>>0]=0}else{a[c[s+8>>2]>>0]=0;c[s+4>>2]=0}Li(s);c[s+0>>2]=c[H+0>>2];c[s+4>>2]=c[H+4>>2];c[s+8>>2]=c[H+8>>2];c[H+0>>2]=0;c[H+4>>2]=0;c[H+8>>2]=0;kd[c[(c[y>>2]|0)+24>>2]&63](A,y);if(!(a[r>>0]&1)){c[r+4>>2]=0;a[r>>0]=0}else{c[c[r+8>>2]>>2]=0;c[r+4>>2]=0}Wi(r);c[r+0>>2]=c[A+0>>2];c[r+4>>2]=c[A+4>>2];c[r+8>>2]=c[A+8>>2];c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;O=md[c[(c[y>>2]|0)+36>>2]&127](y)|0}c[n>>2]=c[m>>2];H=u+4|0;z=u+8|0;I=t+4|0;y=t+8|0;L=(h&512|0)!=0;f=r+4|0;A=r+8|0;K=v+4|0;h=v+8|0;J=B+3|0;g=s+4|0;N=0;M=0;a:while(1){R=c[b>>2]|0;do if(R){Q=c[R+12>>2]|0;if((Q|0)==(c[R+16>>2]|0))Q=md[c[(c[R>>2]|0)+36>>2]&127](R)|0;else Q=c[Q>>2]|0;if((Q|0)==-1){c[b>>2]=0;Q=1;break}else{Q=(c[b>>2]|0)==0;break}}else Q=1;while(0);if(e){R=c[e+12>>2]|0;if((R|0)==(c[e+16>>2]|0))R=md[c[(c[e>>2]|0)+36>>2]&127](e)|0;else R=c[R>>2]|0;if((R|0)!=-1){if(!Q){x=322;break}}else x=65}else x=65;if((x|0)==65){x=0;if(Q){e=0;x=322;break}else e=0}b:do switch(a[B+N>>0]|0){case 2:{if(!((M|0)!=0|N>>>0<2)){if((N|0)==2)Q=(a[J>>0]|0)!=0;else Q=0;if(!(L|Q)){R=e;M=0;break b}}T=a[r>>0]|0;Q=(T&1)==0?f:c[A>>2]|0;c:do if((N|0)!=0?(d[B+(N+ -1)>>0]|0)<2:0){while(1){if(!(T&1)){R=f;S=(T&255)>>>1}else{R=c[A>>2]|0;S=c[f>>2]|0}if((Q|0)==(R+(S<<2)|0))break;if(!(fd[c[(c[l>>2]|0)+12>>2]&31](l,8192,c[Q>>2]|0)|0)){x=184;break}T=a[r>>0]|0;Q=Q+4|0}if((x|0)==184){x=0;T=a[r>>0]|0}S=(T&1)==0?f:c[A>>2]|0;R=Q-S>>2;U=a[v>>0]|0;V=(U&1)==0;if(V)W=(U&255)>>>1;else W=c[K>>2]|0;if(R>>>0<=W>>>0){if(V){U=(U&255)>>>1;W=K;V=U;U=K+(U-R<<2)|0}else{X=c[h>>2]|0;U=c[K>>2]|0;W=X;V=U;U=X+(U-R<<2)|0}R=W+(V<<2)|0;if((U|0)==(R|0)){R=e;S=e}else{V=U;U=S;while(1){if((c[V>>2]|0)!=(c[U>>2]|0)){R=e;Q=S;S=e;break c}V=V+4|0;if((V|0)==(R|0)){R=e;S=e;break c}U=U+4|0}}}else{R=e;Q=S;S=e}}else{R=e;S=e}while(0);while(1){if(!(T&1)){U=f;T=(T&255)>>>1}else{U=c[A>>2]|0;T=c[f>>2]|0}if((Q|0)==(U+(T<<2)|0))break;T=c[b>>2]|0;do if(T){U=c[T+12>>2]|0;if((U|0)==(c[T+16>>2]|0))T=md[c[(c[T>>2]|0)+36>>2]&127](T)|0;else T=c[U>>2]|0;if((T|0)==-1){c[b>>2]=0;T=1;break}else{T=(c[b>>2]|0)==0;break}}else T=1;while(0);if(S){U=c[S+12>>2]|0;if((U|0)==(c[S+16>>2]|0))S=md[c[(c[S>>2]|0)+36>>2]&127](S)|0;else S=c[U>>2]|0;if((S|0)!=-1)if(T^(R|0)==0){T=R;S=R}else break;else{R=0;e=0;x=212}}else x=212;if((x|0)==212){x=0;if(T)break;else{T=R;S=0}}R=c[b>>2]|0;U=c[R+12>>2]|0;if((U|0)==(c[R+16>>2]|0))R=md[c[(c[R>>2]|0)+36>>2]&127](R)|0;else R=c[U>>2]|0;if((R|0)!=(c[Q>>2]|0)){R=T;break}V=c[b>>2]|0;U=V+12|0;R=c[U>>2]|0;if((R|0)==(c[V+16>>2]|0))md[c[(c[V>>2]|0)+40>>2]&127](V)|0;else c[U>>2]=R+4;R=T;T=a[r>>0]|0;Q=Q+4|0}if(L){T=a[r>>0]|0;if(!(T&1)){S=f;T=(T&255)>>>1}else{S=c[A>>2]|0;T=c[f>>2]|0}if((Q|0)!=(S+(T<<2)|0)){x=227;break a}}break};case 4:{R=e;T=e;Q=0;while(1){U=c[b>>2]|0;do if(U){S=c[U+12>>2]|0;if((S|0)==(c[U+16>>2]|0))S=md[c[(c[U>>2]|0)+36>>2]&127](U)|0;else S=c[S>>2]|0;if((S|0)==-1){c[b>>2]=0;S=1;break}else{S=(c[b>>2]|0)==0;break}}else S=1;while(0);if(T){U=c[T+12>>2]|0;if((U|0)==(c[T+16>>2]|0))T=md[c[(c[T>>2]|0)+36>>2]&127](T)|0;else T=c[U>>2]|0;if((T|0)!=-1)if(S^(R|0)==0){S=R;T=R}else break;else{R=0;e=0;x=240}}else x=240;if((x|0)==240){x=0;if(S)break;else{S=R;T=0}}R=c[b>>2]|0;U=c[R+12>>2]|0;if((U|0)==(c[R+16>>2]|0))R=md[c[(c[R>>2]|0)+36>>2]&127](R)|0;else R=c[U>>2]|0;if(fd[c[(c[l>>2]|0)+12>>2]&31](l,2048,R)|0){U=c[n>>2]|0;if((U|0)==(c[C>>2]|0)){on(m,n,C);U=c[n>>2]|0}c[n>>2]=U+4;c[U>>2]=R;Q=Q+1|0}else{U=a[s>>0]|0;if(!(U&1))U=(U&255)>>>1;else U=c[g>>2]|0;if(!((Q|0)!=0&(U|0)!=0&(R|0)==(G|0))){R=S;break}if((P|0)==(c[D>>2]|0)){gn(q,E,D);P=c[E>>2]|0}X=P+4|0;c[E>>2]=X;c[P>>2]=Q;P=X;Q=0}R=c[b>>2]|0;U=R+12|0;V=c[U>>2]|0;if((V|0)==(c[R+16>>2]|0)){md[c[(c[R>>2]|0)+40>>2]&127](R)|0;R=S;continue}else{c[U>>2]=V+4;R=S;continue}}if(!((Q|0)==0?1:(c[q>>2]|0)==(P|0))){if((P|0)==(c[D>>2]|0)){gn(q,E,D);P=c[E>>2]|0}X=P+4|0;c[E>>2]=X;c[P>>2]=Q;P=X}if((O|0)>0){S=c[b>>2]|0;do if(S){Q=c[S+12>>2]|0;if((Q|0)==(c[S+16>>2]|0))Q=md[c[(c[S>>2]|0)+36>>2]&127](S)|0;else Q=c[Q>>2]|0;if((Q|0)==-1){c[b>>2]=0;Q=1;break}else{Q=(c[b>>2]|0)==0;break}}else Q=1;while(0);if(R){S=c[R+12>>2]|0;if((S|0)==(c[R+16>>2]|0))S=md[c[(c[R>>2]|0)+36>>2]&127](R)|0;else S=c[S>>2]|0;if((S|0)!=-1){if(!Q){x=286;break a}}else{e=0;x=280}}else x=280;if((x|0)==280){x=0;if(Q){x=286;break a}else R=0}S=c[b>>2]|0;Q=c[S+12>>2]|0;if((Q|0)==(c[S+16>>2]|0))Q=md[c[(c[S>>2]|0)+36>>2]&127](S)|0;else Q=c[Q>>2]|0;if((Q|0)!=(F|0)){x=286;break a}T=c[b>>2]|0;S=T+12|0;Q=c[S>>2]|0;if((Q|0)==(c[T+16>>2]|0)){md[c[(c[T>>2]|0)+40>>2]&127](T)|0;Q=R;S=R}else{c[S>>2]=Q+4;Q=R;S=R}while(1){R=c[b>>2]|0;do if(R){T=c[R+12>>2]|0;if((T|0)==(c[R+16>>2]|0))R=md[c[(c[R>>2]|0)+36>>2]&127](R)|0;else R=c[T>>2]|0;if((R|0)==-1){c[b>>2]=0;T=1;break}else{T=(c[b>>2]|0)==0;break}}else T=1;while(0);if(S){R=c[S+12>>2]|0;if((R|0)==(c[S+16>>2]|0))R=md[c[(c[S>>2]|0)+36>>2]&127](S)|0;else R=c[R>>2]|0;if((R|0)!=-1)if(T^(Q|0)==0){R=Q;S=Q}else{x=309;break a}else{R=0;e=0;x=302}}else{R=Q;x=302}if((x|0)==302){x=0;if(T){x=309;break a}else S=0}Q=c[b>>2]|0;T=c[Q+12>>2]|0;if((T|0)==(c[Q+16>>2]|0))Q=md[c[(c[Q>>2]|0)+36>>2]&127](Q)|0;else Q=c[T>>2]|0;if(!(fd[c[(c[l>>2]|0)+12>>2]&31](l,2048,Q)|0)){x=309;break a}if((c[n>>2]|0)==(c[C>>2]|0))on(m,n,C);Q=c[b>>2]|0;T=c[Q+12>>2]|0;if((T|0)==(c[Q+16>>2]|0))Q=md[c[(c[Q>>2]|0)+36>>2]&127](Q)|0;else Q=c[T>>2]|0;U=c[n>>2]|0;c[n>>2]=U+4;c[U>>2]=Q;O=O+ -1|0;Q=c[b>>2]|0;U=Q+12|0;T=c[U>>2]|0;if((T|0)==(c[Q+16>>2]|0))md[c[(c[Q>>2]|0)+40>>2]&127](Q)|0;else c[U>>2]=T+4;if((O|0)>0)Q=R;else break}}if((c[n>>2]|0)==(c[m>>2]|0)){x=320;break a}break};case 0:{x=79;break};case 1:{if((N|0)==3){x=322;break a}x=c[b>>2]|0;Q=c[x+12>>2]|0;if((Q|0)==(c[x+16>>2]|0))x=md[c[(c[x>>2]|0)+36>>2]&127](x)|0;else x=c[Q>>2]|0;if(!(fd[c[(c[l>>2]|0)+12>>2]&31](l,8192,x)|0)){x=78;break a}x=c[b>>2]|0;R=x+12|0;Q=c[R>>2]|0;if((Q|0)==(c[x+16>>2]|0))x=md[c[(c[x>>2]|0)+40>>2]&127](x)|0;else{c[R>>2]=Q+4;x=c[Q>>2]|0}Xi(v,x);x=79;break};case 3:{Q=a[t>>0]|0;S=(Q&1)==0;if(S)U=(Q&255)>>>1;else U=c[I>>2]|0;R=a[u>>0]|0;T=(R&1)==0;if(T)V=(R&255)>>>1;else V=c[H>>2]|0;if((U|0)==(0-V|0))R=e;else{if(S)U=(Q&255)>>>1;else U=c[I>>2]|0;if(U){if(T)T=(R&255)>>>1;else T=c[H>>2]|0;if(T){S=c[b>>2]|0;T=c[S+12>>2]|0;U=c[S+16>>2]|0;if((T|0)==(U|0)){R=md[c[(c[S>>2]|0)+36>>2]&127](S)|0;U=c[b>>2]|0;Q=a[t>>0]|0;S=U;T=c[U+12>>2]|0;U=c[U+16>>2]|0}else R=c[T>>2]|0;V=S+12|0;U=(T|0)==(U|0);if((R|0)==(c[((Q&1)==0?I:c[y>>2]|0)>>2]|0)){if(U)md[c[(c[S>>2]|0)+40>>2]&127](S)|0;else c[V>>2]=T+4;Q=a[t>>0]|0;if(!(Q&1))Q=(Q&255)>>>1;else Q=c[I>>2]|0;R=e;M=Q>>>0>1?t:M;break b}if(U)Q=md[c[(c[S>>2]|0)+36>>2]&127](S)|0;else Q=c[T>>2]|0;if((Q|0)!=(c[((a[u>>0]&1)==0?H:c[z>>2]|0)>>2]|0)){x=170;break a}Q=c[b>>2]|0;R=Q+12|0;S=c[R>>2]|0;if((S|0)==(c[Q+16>>2]|0))md[c[(c[Q>>2]|0)+40>>2]&127](Q)|0;else c[R>>2]=S+4;a[k>>0]=1;Q=a[u>>0]|0;if(!(Q&1))Q=(Q&255)>>>1;else Q=c[H>>2]|0;R=e;M=Q>>>0>1?u:M;break b}}if(S)V=(Q&255)>>>1;else V=c[I>>2]|0;T=c[b>>2]|0;S=c[T+12>>2]|0;U=(S|0)==(c[T+16>>2]|0);if(!V){if(U){Q=md[c[(c[T>>2]|0)+36>>2]&127](T)|0;R=a[u>>0]|0}else Q=c[S>>2]|0;if((Q|0)!=(c[((R&1)==0?H:c[z>>2]|0)>>2]|0)){R=e;break b}Q=c[b>>2]|0;R=Q+12|0;S=c[R>>2]|0;if((S|0)==(c[Q+16>>2]|0))md[c[(c[Q>>2]|0)+40>>2]&127](Q)|0;else c[R>>2]=S+4;a[k>>0]=1;Q=a[u>>0]|0;if(!(Q&1))Q=(Q&255)>>>1;else Q=c[H>>2]|0;R=e;M=Q>>>0>1?u:M;break b}if(U){R=md[c[(c[T>>2]|0)+36>>2]&127](T)|0;Q=a[t>>0]|0}else R=c[S>>2]|0;if((R|0)!=(c[((Q&1)==0?I:c[y>>2]|0)>>2]|0)){a[k>>0]=1;R=e;break b}S=c[b>>2]|0;R=S+12|0;Q=c[R>>2]|0;if((Q|0)==(c[S+16>>2]|0))md[c[(c[S>>2]|0)+40>>2]&127](S)|0;else c[R>>2]=Q+4;Q=a[t>>0]|0;if(!(Q&1))Q=(Q&255)>>>1;else Q=c[I>>2]|0;R=e;M=Q>>>0>1?t:M}break};default:R=e}while(0);d:do if((x|0)==79){x=0;if((N|0)==3){x=322;break a}else{R=e;S=e}while(1){T=c[b>>2]|0;do if(T){Q=c[T+12>>2]|0;if((Q|0)==(c[T+16>>2]|0))Q=md[c[(c[T>>2]|0)+36>>2]&127](T)|0;else Q=c[Q>>2]|0;if((Q|0)==-1){c[b>>2]=0;Q=1;break}else{Q=(c[b>>2]|0)==0;break}}else Q=1;while(0);if(S){T=c[S+12>>2]|0;if((T|0)==(c[S+16>>2]|0))S=md[c[(c[S>>2]|0)+36>>2]&127](S)|0;else S=c[T>>2]|0;if((S|0)!=-1)if(Q^(R|0)==0){Q=R;S=R}else break d;else{R=0;e=0;x=92}}else x=92;if((x|0)==92){x=0;if(Q)break d;else{Q=R;S=0}}R=c[b>>2]|0;T=c[R+12>>2]|0;if((T|0)==(c[R+16>>2]|0))R=md[c[(c[R>>2]|0)+36>>2]&127](R)|0;else R=c[T>>2]|0;if(!(fd[c[(c[l>>2]|0)+12>>2]&31](l,8192,R)|0)){R=Q;break d}T=c[b>>2]|0;U=T+12|0;R=c[U>>2]|0;if((R|0)==(c[T+16>>2]|0))R=md[c[(c[T>>2]|0)+40>>2]&127](T)|0;else{c[U>>2]=R+4;R=c[R>>2]|0}Xi(v,R);R=Q}}while(0);N=N+1|0;if(N>>>0>=4){e=R;x=322;break}}e:do if((x|0)==78){c[j>>2]=c[j>>2]|4;w=0}else if((x|0)==170){c[j>>2]=c[j>>2]|4;w=0}else if((x|0)==227){c[j>>2]=c[j>>2]|4;w=0}else if((x|0)==286){c[j>>2]=c[j>>2]|4;w=0}else if((x|0)==309){c[j>>2]=c[j>>2]|4;w=0}else if((x|0)==320){c[j>>2]=c[j>>2]|4;w=0}else if((x|0)==322){f:do if(M){l=M+4|0;B=M+8|0;n=e;m=e;C=1;while(1){k=a[M>>0]|0;if(!(k&1))k=(k&255)>>>1;else k=c[l>>2]|0;if(C>>>0>=k>>>0)break f;k=c[b>>2]|0;do if(k){D=c[k+12>>2]|0;if((D|0)==(c[k+16>>2]|0))k=md[c[(c[k>>2]|0)+36>>2]&127](k)|0;else k=c[D>>2]|0;if((k|0)==-1){c[b>>2]=0;k=1;break}else{k=(c[b>>2]|0)==0;break}}else k=1;while(0);if(m){D=c[m+12>>2]|0;if((D|0)==(c[m+16>>2]|0))m=md[c[(c[m>>2]|0)+36>>2]&127](m)|0;else m=c[D>>2]|0;if((m|0)!=-1)if(k^(n|0)==0){k=n;m=n}else break;else{n=0;x=340}}else x=340;if((x|0)==340){x=0;if(k)break;else{k=n;m=0}}n=c[b>>2]|0;D=c[n+12>>2]|0;if((D|0)==(c[n+16>>2]|0))D=md[c[(c[n>>2]|0)+36>>2]&127](n)|0;else D=c[D>>2]|0;if(!(a[M>>0]&1))n=l;else n=c[B>>2]|0;if((D|0)!=(c[n+(C<<2)>>2]|0))break;C=C+1|0;E=c[b>>2]|0;n=E+12|0;D=c[n>>2]|0;if((D|0)==(c[E+16>>2]|0)){md[c[(c[E>>2]|0)+40>>2]&127](E)|0;n=k;continue}else{c[n>>2]=D+4;n=k;continue}}c[j>>2]=c[j>>2]|4;w=0;break e}while(0);b=c[q>>2]|0;if((b|0)!=(P|0)?(c[w>>2]=0,hn(s,b,P,w),(c[w>>2]|0)!=0):0){c[j>>2]=c[j>>2]|4;w=0}else w=1}while(0);if(a[v>>0]&1)Uq(c[h>>2]|0);if(a[u>>0]&1)Uq(c[z>>2]|0);if(a[t>>0]&1)Uq(c[y>>2]|0);if(a[r>>0]&1)Uq(c[A>>2]|0);if(a[s>>0]&1)Uq(c[s+8>>2]|0);r=c[q>>2]|0;c[q>>2]=0;if(!r){i=p;return w|0}jd[c[o>>2]&255](r);i=p;return w|0}function nn(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;d=i;i=i+432|0;v=d+16|0;n=d+8|0;q=d;s=d+416|0;c[n>>2]=v;m=n+4|0;c[m>>2]=243;o=c[h+28>>2]|0;r=o+4|0;c[r>>2]=(c[r>>2]|0)+1;r=Sn(o,19064)|0;a[s>>0]=0;p=c[f>>2]|0;do if(mn(e,p,g,o,c[h+4>>2]|0,j,s,r,n,q,v+400|0)|0){if(!(a[k>>0]&1)){c[k+4>>2]=0;a[k>>0]=0}else{c[c[k+8>>2]>>2]=0;c[k+4>>2]=0}if(a[s>>0]|0)Xi(k,vd[c[(c[r>>2]|0)+44>>2]&63](r,45)|0);h=vd[c[(c[r>>2]|0)+44>>2]&63](r,48)|0;s=c[n>>2]|0;q=c[q>>2]|0;r=q+ -4|0;a:do if(s>>>0>>0)while(1){g=s+4|0;if((c[s>>2]|0)!=(h|0))break a;if(g>>>0>>0)s=g;else{s=g;break}}while(0);t=s;h=a[k>>0]|0;if(!(h&1)){u=h;v=1;h=(h&255)>>>1}else{v=c[k>>2]|0;u=v&255;v=(v&-2)+ -1|0;h=c[k+4>>2]|0}g=q-t>>2;if(g){if((v-h|0)>>>0>>0){Yi(k,v,h+g-v|0,h,h,0,0);u=a[k>>0]|0}if(!(u&1))u=k+4|0;else u=c[k+8>>2]|0;v=u+(h<<2)|0;if((s|0)!=(q|0)){r=h+((r+(0-t)|0)>>>2)+1|0;while(1){c[v>>2]=c[s>>2];s=s+4|0;if((s|0)==(q|0))break;v=v+4|0}v=u+(r<<2)|0}c[v>>2]=0;q=h+g|0;if(!(a[k>>0]&1)){a[k>>0]=q<<1;break}else{c[k+4>>2]=q;break}}}while(0);k=c[e>>2]|0;if(k){q=c[k+12>>2]|0;if((q|0)==(c[k+16>>2]|0))q=md[c[(c[k>>2]|0)+36>>2]&127](k)|0;else q=c[q>>2]|0;if((q|0)==-1){c[e>>2]=0;k=0;e=1}else e=0}else{k=0;e=1}do if(p){q=c[p+12>>2]|0;if((q|0)==(c[p+16>>2]|0))p=md[c[(c[p>>2]|0)+36>>2]&127](p)|0;else p=c[q>>2]|0;if((p|0)!=-1)if(e)break;else{l=46;break}else{c[f>>2]=0;l=44;break}}else l=44;while(0);if((l|0)==44?e:0)l=46;if((l|0)==46)c[j>>2]=c[j>>2]|2;c[b>>2]=k;u=o+4|0;v=c[u>>2]|0;c[u>>2]=v+ -1;if(!v)jd[c[(c[o>>2]|0)+8>>2]&255](o);j=c[n>>2]|0;c[n>>2]=0;if(!j){i=d;return}jd[c[m>>2]&255](j);i=d;return}function on(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;g=i;h=a+4|0;j=(c[h>>2]|0)!=243;k=c[a>>2]|0;e=k;f=(c[d>>2]|0)-e|0;f=f>>>0<2147483647?f<<1:-1;e=(c[b>>2]|0)-e>>2;if(!j)k=0;k=Vq(k,f)|0;if(!k){k=Wb(4)|0;c[k>>2]=27280;Zc(k|0,27328,220)}if(!j){j=c[a>>2]|0;c[a>>2]=k;if(j){jd[c[h>>2]&255](j);k=c[a>>2]|0}}else c[a>>2]=k;c[h>>2]=244;c[b>>2]=k+(e<<2);c[d>>2]=(c[a>>2]|0)+(f>>>2<<2);i=g;return}function pn(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function qn(a){a=a|0;return}function rn(b,d,e,f,g,j,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;l=+l;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;p=i;i=i+368|0;v=p;A=p+156|0;B=p+132|0;x=p+256|0;t=p+148|0;s=p+356|0;d=p+357|0;q=p+136|0;m=p+104|0;n=p+116|0;C=p+100|0;r=p+128|0;o=p+152|0;c[B>>2]=A;h[k>>3]=l;c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];A=dr(A,100,18840,v)|0;if(A>>>0>99){A=Dk()|0;h[k>>3]=l;c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];A=jl(B,A,18840,v)|0;w=c[B>>2]|0;if(!w){D=Wb(4)|0;c[D>>2]=27280;Zc(D|0,27328,220)}x=Tq(A)|0;if(!x){D=Wb(4)|0;c[D>>2]=27280;Zc(D|0,27328,220)}else u=x}else{u=0;w=0}y=c[g+28>>2]|0;z=y+4|0;c[z>>2]=(c[z>>2]|0)+1;z=Sn(y,19072)|0;B=c[B>>2]|0;sd[c[(c[z>>2]|0)+32>>2]&7](z,B,B+A|0,x)|0;if(!A)B=0;else B=(a[B>>0]|0)==45;c[t>>2]=0;c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;sn(f,B,y,t,s,d,q,m,n,C);f=c[C>>2]|0;if((A|0)>(f|0)){C=a[n>>0]|0;if(!(C&1))C=(C&255)>>>1;else C=c[n+4>>2]|0;D=a[m>>0]|0;if(!(D&1))D=(D&255)>>>1;else D=c[m+4>>2]|0;C=C+(A-f<<1|1)+D|0}else{C=a[n>>0]|0;if(!(C&1))C=(C&255)>>>1;else C=c[n+4>>2]|0;D=a[m>>0]|0;if(!(D&1))D=(D&255)>>>1;else D=c[m+4>>2]|0;C=C+2+D|0}C=C+f|0;if(C>>>0>100){v=Tq(C)|0;if(!v){D=Wb(4)|0;c[D>>2]=27280;Zc(D|0,27328,220)}else C=v}else C=0;tn(v,r,o,c[g+4>>2]|0,x,x+A|0,z,B,t,a[s>>0]|0,a[d>>0]|0,q,m,n,f);Sg(b,c[e>>2]|0,v,c[r>>2]|0,c[o>>2]|0,g,j);Uq(C);if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(a[m>>0]&1)Uq(c[m+8>>2]|0);if(a[q>>0]&1)Uq(c[q+8>>2]|0);C=y+4|0;D=c[C>>2]|0;c[C>>2]=D+ -1;if(D){Uq(u);Uq(w);i=p;return}jd[c[(c[y>>2]|0)+8>>2]&255](y);Uq(u);Uq(w);i=p;return}function sn(b,d,e,f,g,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;n=i;i=i+112|0;w=n;v=n+16|0;y=n+92|0;x=n+40|0;u=n+80|0;s=n+96|0;q=n+108|0;p=n+56|0;t=n+52|0;r=n+28|0;o=n+4|0;z=n+68|0;if(b){o=Sn(e,18528)|0;p=c[o>>2]|0;if(d){kd[c[p+44>>2]&63](w,o);b=c[w>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;kd[c[(c[o>>2]|0)+32>>2]&63](v,o);if(!(a[l>>0]&1)){a[l+1>>0]=0;a[l>>0]=0}else{a[c[l+8>>2]>>0]=0;c[l+4>>2]=0}Li(l);c[l+0>>2]=c[v+0>>2];c[l+4>>2]=c[v+4>>2];c[l+8>>2]=c[v+8>>2];c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0}else{kd[c[p+40>>2]&63](y,o);b=c[y>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;kd[c[(c[o>>2]|0)+28>>2]&63](x,o);if(!(a[l>>0]&1)){a[l+1>>0]=0;a[l>>0]=0}else{a[c[l+8>>2]>>0]=0;c[l+4>>2]=0}Li(l);c[l+0>>2]=c[x+0>>2];c[l+4>>2]=c[x+4>>2];c[l+8>>2]=c[x+8>>2];c[x+0>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0}a[g>>0]=md[c[(c[o>>2]|0)+12>>2]&127](o)|0;a[h>>0]=md[c[(c[o>>2]|0)+16>>2]&127](o)|0;kd[c[(c[o>>2]|0)+20>>2]&63](u,o);if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[j+8>>2]>>0]=0;c[j+4>>2]=0}Li(j);c[j+0>>2]=c[u+0>>2];c[j+4>>2]=c[u+4>>2];c[j+8>>2]=c[u+8>>2];c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;kd[c[(c[o>>2]|0)+24>>2]&63](s,o);if(!(a[k>>0]&1)){a[k+1>>0]=0;a[k>>0]=0}else{a[c[k+8>>2]>>0]=0;c[k+4>>2]=0}Li(k);c[k+0>>2]=c[s+0>>2];c[k+4>>2]=c[s+4>>2];c[k+8>>2]=c[s+8>>2];c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;b=md[c[(c[o>>2]|0)+36>>2]&127](o)|0;c[m>>2]=b;i=n;return}else{s=Sn(e,18464)|0;u=c[s>>2]|0;if(d){kd[c[u+44>>2]&63](q,s);b=c[q>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;kd[c[(c[s>>2]|0)+32>>2]&63](p,s);if(!(a[l>>0]&1)){a[l+1>>0]=0;a[l>>0]=0}else{a[c[l+8>>2]>>0]=0;c[l+4>>2]=0}Li(l);c[l+0>>2]=c[p+0>>2];c[l+4>>2]=c[p+4>>2];c[l+8>>2]=c[p+8>>2];c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0}else{kd[c[u+40>>2]&63](t,s);b=c[t>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;kd[c[(c[s>>2]|0)+28>>2]&63](r,s);if(!(a[l>>0]&1)){a[l+1>>0]=0;a[l>>0]=0}else{a[c[l+8>>2]>>0]=0;c[l+4>>2]=0}Li(l);c[l+0>>2]=c[r+0>>2];c[l+4>>2]=c[r+4>>2];c[l+8>>2]=c[r+8>>2];c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0}a[g>>0]=md[c[(c[s>>2]|0)+12>>2]&127](s)|0;a[h>>0]=md[c[(c[s>>2]|0)+16>>2]&127](s)|0;kd[c[(c[s>>2]|0)+20>>2]&63](o,s);if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[j+8>>2]>>0]=0;c[j+4>>2]=0}Li(j);c[j+0>>2]=c[o+0>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;kd[c[(c[s>>2]|0)+24>>2]&63](z,s);if(!(a[k>>0]&1)){a[k+1>>0]=0;a[k>>0]=0}else{a[c[k+8>>2]>>0]=0;c[k+4>>2]=0}Li(k);c[k+0>>2]=c[z+0>>2];c[k+4>>2]=c[z+4>>2];c[k+8>>2]=c[z+8>>2];c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=md[c[(c[s>>2]|0)+36>>2]&127](s)|0;c[m>>2]=b;i=n;return}}function tn(d,e,f,g,h,j,k,l,m,n,o,p,q,r,s){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;s=s|0;var 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;t=i;c[f>>2]=d;v=r+1|0;w=r+8|0;u=r+4|0;A=(g&512|0)==0;x=q+1|0;y=q+8|0;z=q+4|0;B=(s|0)>0;C=p+1|0;E=p+8|0;H=p+4|0;D=k+8|0;I=0-s|0;J=0;do{switch(a[m+J>>0]|0){case 4:{K=c[f>>2]|0;h=l?h+1|0:h;a:do if(h>>>0>>0){L=h;while(1){M=a[L>>0]|0;if(M<<24>>24<=-1)break a;N=L+1|0;if(!(b[(c[D>>2]|0)+(M<<24>>24<<1)>>1]&2048))break a;if(N>>>0>>0)L=N;else{L=N;break}}}else L=h;while(0);M=L;if(B){if(L>>>0>h>>>0){N=h+(0-M)|0;N=N>>>0>>0?I:N;M=N+s|0;Q=K;P=L;O=s;while(1){P=P+ -1|0;R=a[P>>0]|0;c[f>>2]=Q+1;a[Q>>0]=R;O=O+ -1|0;Q=(O|0)>0;if(!(P>>>0>h>>>0&Q))break;Q=c[f>>2]|0}L=L+N|0;if(Q)F=32;else N=0}else{M=s;F=32}if((F|0)==32){F=0;N=vd[c[(c[k>>2]|0)+28>>2]&63](k,48)|0}O=c[f>>2]|0;c[f>>2]=O+1;if((M|0)>0)do{a[O>>0]=N;M=M+ -1|0;O=c[f>>2]|0;c[f>>2]=O+1}while((M|0)>0);a[O>>0]=n}if((L|0)==(h|0)){Q=vd[c[(c[k>>2]|0)+28>>2]&63](k,48)|0;R=c[f>>2]|0;c[f>>2]=R+1;a[R>>0]=Q}else{N=a[p>>0]|0;M=(N&1)==0;if(M)N=(N&255)>>>1;else N=c[H>>2]|0;if(!N){M=-1;N=0;O=0}else{if(M)M=C;else M=c[E>>2]|0;M=a[M>>0]|0;N=0;O=0}while(1){if((O|0)==(M|0)){P=c[f>>2]|0;c[f>>2]=P+1;a[P>>0]=o;N=N+1|0;P=a[p>>0]|0;O=(P&1)==0;if(O)P=(P&255)>>>1;else P=c[H>>2]|0;if(N>>>0

        >>0){if(O)M=C;else M=c[E>>2]|0;if((a[M+N>>0]|0)==127){M=-1;O=0}else{if(O)M=C;else M=c[E>>2]|0;M=a[M+N>>0]|0;O=0}}else O=0}L=L+ -1|0;Q=a[L>>0]|0;R=c[f>>2]|0;c[f>>2]=R+1;a[R>>0]=Q;if((L|0)==(h|0))break;else O=O+1|0}}L=c[f>>2]|0;if((K|0)!=(L|0)?(G=L+ -1|0,G>>>0>K>>>0):0){L=G;do{R=a[K>>0]|0;a[K>>0]=a[L>>0]|0;a[L>>0]=R;K=K+1|0;L=L+ -1|0}while(K>>>0>>0)}break};case 1:{c[e>>2]=c[f>>2];Q=vd[c[(c[k>>2]|0)+28>>2]&63](k,32)|0;R=c[f>>2]|0;c[f>>2]=R+1;a[R>>0]=Q;break};case 3:{L=a[r>>0]|0;K=(L&1)==0;if(K)L=(L&255)>>>1;else L=c[u>>2]|0;if(L){if(K)K=v;else K=c[w>>2]|0;Q=a[K>>0]|0;R=c[f>>2]|0;c[f>>2]=R+1;a[R>>0]=Q}break};case 2:{L=a[q>>0]|0;K=(L&1)==0;if(K)M=(L&255)>>>1;else M=c[z>>2]|0;if(!((M|0)==0|A)){if(K){K=x;L=(L&255)>>>1}else{K=c[y>>2]|0;L=c[z>>2]|0}L=K+L|0;M=c[f>>2]|0;if((K|0)!=(L|0))do{a[M>>0]=a[K>>0]|0;K=K+1|0;M=M+1|0}while((K|0)!=(L|0));c[f>>2]=M}break};case 0:{c[e>>2]=c[f>>2];break};default:{}}J=J+1|0}while((J|0)!=4);o=a[r>>0]|0;x=(o&1)==0;if(x)y=(o&255)>>>1;else y=c[u>>2]|0;if(y>>>0>1){if(x)u=(o&255)>>>1;else{v=c[w>>2]|0;u=c[u>>2]|0}w=v+1|0;u=v+u|0;v=c[f>>2]|0;if((w|0)!=(u|0))do{a[v>>0]=a[w>>0]|0;w=w+1|0;v=v+1|0}while((w|0)!=(u|0));c[f>>2]=v}g=g&176;if((g|0)==32){c[e>>2]=c[f>>2];i=t;return}else if((g|0)==16){i=t;return}else{c[e>>2]=d;i=t;return}}function un(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;q=i;i=i+160|0;s=q;k=q+52|0;r=q+53|0;l=q+16|0;m=q+4|0;n=q+40|0;w=q+36|0;u=q+56|0;p=q+28|0;t=q+32|0;o=c[g+28>>2]|0;d=o+4|0;c[d>>2]=(c[d>>2]|0)+1;d=Sn(o,19072)|0;x=a[j>>0]|0;v=(x&1)==0;if(v)x=(x&255)>>>1;else x=c[j+4>>2]|0;if(!x)v=0;else{if(v)v=j+1|0;else v=c[j+8>>2]|0;v=a[v>>0]|0;v=v<<24>>24==(vd[c[(c[d>>2]|0)+28>>2]&63](d,45)|0)<<24>>24}c[s>>2]=0;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;sn(f,v,o,s,k,r,l,m,n,w);f=a[j>>0]|0;x=(f&1)==0;if(x)y=(f&255)>>>1;else y=c[j+4>>2]|0;w=c[w>>2]|0;if((y|0)>(w|0)){if(x)y=(f&255)>>>1;else y=c[j+4>>2]|0;z=a[n>>0]|0;if(!(z&1))z=(z&255)>>>1;else z=c[n+4>>2]|0;A=a[m>>0]|0;if(!(A&1))A=(A&255)>>>1;else A=c[m+4>>2]|0;y=z+(y-w<<1|1)+A|0}else{y=a[n>>0]|0;if(!(y&1))y=(y&255)>>>1;else y=c[n+4>>2]|0;z=a[m>>0]|0;if(!(z&1))z=(z&255)>>>1;else z=c[m+4>>2]|0;y=y+2+z|0}y=y+w|0;if(y>>>0>100){u=Tq(y)|0;if(!u){A=Wb(4)|0;c[A>>2]=27280;Zc(A|0,27328,220)}else y=u}else y=0;if(x){x=j+1|0;j=(f&255)>>>1}else{x=c[j+8>>2]|0;j=c[j+4>>2]|0}tn(u,p,t,c[g+4>>2]|0,x,x+j|0,d,v,s,a[k>>0]|0,a[r>>0]|0,l,m,n,w);Sg(b,c[e>>2]|0,u,c[p>>2]|0,c[t>>2]|0,g,h);Uq(y);if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(a[m>>0]&1)Uq(c[m+8>>2]|0);if(a[l>>0]&1)Uq(c[l+8>>2]|0);z=o+4|0;A=c[z>>2]|0;c[z>>2]=A+ -1;if(A){i=q;return}jd[c[(c[o>>2]|0)+8>>2]&255](o);i=q;return}function vn(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function wn(a){a=a|0;return}function xn(b,d,e,f,g,j,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;l=+l;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;p=i;i=i+976|0;v=p;A=p+868|0;B=p+816|0;x=p+416|0;q=p+408|0;m=p+860|0;n=p+400|0;r=p+824|0;o=p+836|0;t=p+848|0;C=p+820|0;s=p+404|0;d=p+864|0;c[B>>2]=A;h[k>>3]=l;c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];A=dr(A,100,18840,v)|0;if(A>>>0>99){A=Dk()|0;h[k>>3]=l;c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];A=jl(B,A,18840,v)|0;w=c[B>>2]|0;if(!w){D=Wb(4)|0;c[D>>2]=27280;Zc(D|0,27328,220)}x=Tq(A<<2)|0;if(!x){D=Wb(4)|0;c[D>>2]=27280;Zc(D|0,27328,220)}else u=x}else{u=0;w=0}z=c[g+28>>2]|0;y=z+4|0;c[y>>2]=(c[y>>2]|0)+1;y=Sn(z,19064)|0;B=c[B>>2]|0;sd[c[(c[y>>2]|0)+48>>2]&7](y,B,B+A|0,x)|0;if(!A)B=0;else B=(a[B>>0]|0)==45;c[q>>2]=0;c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;yn(f,B,z,q,m,n,r,o,t,C);f=c[C>>2]|0;if((A|0)>(f|0)){C=a[t>>0]|0;if(!(C&1))C=(C&255)>>>1;else C=c[t+4>>2]|0;D=a[o>>0]|0;if(!(D&1))D=(D&255)>>>1;else D=c[o+4>>2]|0;C=C+(A-f<<1|1)+D|0}else{C=a[t>>0]|0;if(!(C&1))C=(C&255)>>>1;else C=c[t+4>>2]|0;D=a[o>>0]|0;if(!(D&1))D=(D&255)>>>1;else D=c[o+4>>2]|0;C=C+2+D|0}C=C+f|0;if(C>>>0>100){v=Tq(C<<2)|0;if(!v){D=Wb(4)|0;c[D>>2]=27280;Zc(D|0,27328,220)}else C=v}else C=0;zn(v,s,d,c[g+4>>2]|0,x,x+(A<<2)|0,y,B,q,c[m>>2]|0,c[n>>2]|0,r,o,t,f);sl(b,c[e>>2]|0,v,c[s>>2]|0,c[d>>2]|0,g,j);if(C)Uq(C);if(a[t>>0]&1)Uq(c[t+8>>2]|0);if(a[o>>0]&1)Uq(c[o+8>>2]|0);if(a[r>>0]&1)Uq(c[r+8>>2]|0);C=z+4|0;D=c[C>>2]|0;c[C>>2]=D+ -1;if(!D)jd[c[(c[z>>2]|0)+8>>2]&255](z);if(!u){Uq(w);i=p;return}Uq(u);Uq(w);i=p;return}function yn(b,d,e,f,g,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;n=i;i=i+112|0;w=n;v=n+16|0;y=n+92|0;x=n+40|0;u=n+80|0;s=n+96|0;q=n+108|0;p=n+56|0;t=n+52|0;r=n+28|0;o=n+4|0;z=n+68|0;if(b){o=Sn(e,18656)|0;p=c[o>>2]|0;if(d){kd[c[p+44>>2]&63](w,o);b=c[w>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;kd[c[(c[o>>2]|0)+32>>2]&63](v,o);if(!(a[l>>0]&1)){c[l+4>>2]=0;a[l>>0]=0}else{c[c[l+8>>2]>>2]=0;c[l+4>>2]=0}Wi(l);c[l+0>>2]=c[v+0>>2];c[l+4>>2]=c[v+4>>2];c[l+8>>2]=c[v+8>>2];c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0}else{kd[c[p+40>>2]&63](y,o);b=c[y>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;kd[c[(c[o>>2]|0)+28>>2]&63](x,o);if(!(a[l>>0]&1)){c[l+4>>2]=0;a[l>>0]=0}else{c[c[l+8>>2]>>2]=0;c[l+4>>2]=0}Wi(l);c[l+0>>2]=c[x+0>>2];c[l+4>>2]=c[x+4>>2];c[l+8>>2]=c[x+8>>2];c[x+0>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0}c[g>>2]=md[c[(c[o>>2]|0)+12>>2]&127](o)|0;c[h>>2]=md[c[(c[o>>2]|0)+16>>2]&127](o)|0;kd[c[(c[o>>2]|0)+20>>2]&63](u,o);if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[j+8>>2]>>0]=0;c[j+4>>2]=0}Li(j);c[j+0>>2]=c[u+0>>2];c[j+4>>2]=c[u+4>>2];c[j+8>>2]=c[u+8>>2];c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;kd[c[(c[o>>2]|0)+24>>2]&63](s,o);if(!(a[k>>0]&1)){c[k+4>>2]=0;a[k>>0]=0}else{c[c[k+8>>2]>>2]=0;c[k+4>>2]=0}Wi(k);c[k+0>>2]=c[s+0>>2];c[k+4>>2]=c[s+4>>2];c[k+8>>2]=c[s+8>>2];c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;b=md[c[(c[o>>2]|0)+36>>2]&127](o)|0;c[m>>2]=b;i=n;return}else{s=Sn(e,18592)|0;u=c[s>>2]|0;if(d){kd[c[u+44>>2]&63](q,s);b=c[q>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;kd[c[(c[s>>2]|0)+32>>2]&63](p,s);if(!(a[l>>0]&1)){c[l+4>>2]=0;a[l>>0]=0}else{c[c[l+8>>2]>>2]=0;c[l+4>>2]=0}Wi(l);c[l+0>>2]=c[p+0>>2];c[l+4>>2]=c[p+4>>2];c[l+8>>2]=c[p+8>>2];c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0}else{kd[c[u+40>>2]&63](t,s);b=c[t>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;kd[c[(c[s>>2]|0)+28>>2]&63](r,s);if(!(a[l>>0]&1)){c[l+4>>2]=0;a[l>>0]=0}else{c[c[l+8>>2]>>2]=0;c[l+4>>2]=0}Wi(l);c[l+0>>2]=c[r+0>>2];c[l+4>>2]=c[r+4>>2];c[l+8>>2]=c[r+8>>2];c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0}c[g>>2]=md[c[(c[s>>2]|0)+12>>2]&127](s)|0;c[h>>2]=md[c[(c[s>>2]|0)+16>>2]&127](s)|0;kd[c[(c[s>>2]|0)+20>>2]&63](o,s);if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[j+8>>2]>>0]=0;c[j+4>>2]=0}Li(j);c[j+0>>2]=c[o+0>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;kd[c[(c[s>>2]|0)+24>>2]&63](z,s);if(!(a[k>>0]&1)){c[k+4>>2]=0;a[k>>0]=0}else{c[c[k+8>>2]>>2]=0;c[k+4>>2]=0}Wi(k);c[k+0>>2]=c[z+0>>2];c[k+4>>2]=c[z+4>>2];c[k+8>>2]=c[z+8>>2];c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=md[c[(c[s>>2]|0)+36>>2]&127](s)|0;c[m>>2]=b;i=n;return}}function zn(b,d,e,f,g,h,j,k,l,m,n,o,p,q,r){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var 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;s=i;c[e>>2]=b;t=q+4|0;u=q+8|0;x=(f&512|0)==0;w=p+4|0;A=p+8|0;v=(r|0)>0;y=o+1|0;C=o+8|0;D=o+4|0;E=0;do{switch(a[l+E>>0]|0){case 2:{F=a[p>>0]|0;H=(F&1)==0;if(H)G=(F&255)>>>1;else G=c[w>>2]|0;if(!((G|0)==0|x)){if(H){H=w;I=(F&255)>>>1}else{H=c[A>>2]|0;I=c[w>>2]|0}G=H+(I<<2)|0;F=c[e>>2]|0;if((H|0)!=(G|0)){J=(H+(I+ -1<<2)+(0-H)|0)>>>2;I=F;while(1){c[I>>2]=c[H>>2];H=H+4|0;if((H|0)==(G|0))break;I=I+4|0}F=F+(J+1<<2)|0}c[e>>2]=F}break};case 0:{c[d>>2]=c[e>>2];break};case 3:{G=a[q>>0]|0;F=(G&1)==0;if(F)G=(G&255)>>>1;else G=c[t>>2]|0;if(G){if(F)F=t;else F=c[u>>2]|0;L=c[F>>2]|0;M=c[e>>2]|0;c[e>>2]=M+4;c[M>>2]=L}break};case 4:{F=c[e>>2]|0;g=k?g+4|0:g;a:do if(g>>>0>>0){G=g;while(1){H=G+4|0;if(!(fd[c[(c[j>>2]|0)+12>>2]&31](j,2048,c[G>>2]|0)|0))break a;if(H>>>0>>0)G=H;else{G=H;break}}}else G=g;while(0);if(v){if(G>>>0>g>>>0){H=c[e>>2]|0;I=r;while(1){G=G+ -4|0;K=H+4|0;c[H>>2]=c[G>>2];I=I+ -1|0;J=(I|0)>0;if(!(G>>>0>g>>>0&J))break;else H=K}c[e>>2]=K;if(J)z=34;else c[e>>2]=H+8}else{I=r;z=34}if((z|0)==34){z=0;J=vd[c[(c[j>>2]|0)+44>>2]&63](j,48)|0;K=c[e>>2]|0;M=K+4|0;c[e>>2]=M;if((I|0)>0){H=K;L=I;while(1){c[H>>2]=J;L=L+ -1|0;if((L|0)<=0)break;else{H=M;M=M+4|0}}c[e>>2]=K+(I+1<<2);K=K+(I<<2)|0}}c[K>>2]=m}if((G|0)==(g|0)){K=vd[c[(c[j>>2]|0)+44>>2]&63](j,48)|0;M=c[e>>2]|0;L=M+4|0;c[e>>2]=L;c[M>>2]=K}else{I=a[o>>0]|0;H=(I&1)==0;if(H)I=(I&255)>>>1;else I=c[D>>2]|0;if(!I)H=-1;else{if(H)H=y;else H=c[C>>2]|0;H=a[H>>0]|0}I=c[e>>2]|0;K=0;J=0;while(1){if((J|0)==(H|0)){J=I+4|0;c[e>>2]=J;c[I>>2]=n;K=K+1|0;L=a[o>>0]|0;I=(L&1)==0;if(I)L=(L&255)>>>1;else L=c[D>>2]|0;if(K>>>0>>0){if(I)H=y;else H=c[C>>2]|0;if((a[H+K>>0]|0)==127){I=J;H=-1;J=0}else{if(I)H=y;else H=c[C>>2]|0;I=J;H=a[H+K>>0]|0;J=0}}else{I=J;J=0}}G=G+ -4|0;M=c[G>>2]|0;L=I+4|0;c[e>>2]=L;c[I>>2]=M;if((G|0)==(g|0))break;else{I=L;J=J+1|0}}}if((F|0)!=(L|0)?(B=L+ -4|0,B>>>0>F>>>0):0){G=B;do{M=c[F>>2]|0;c[F>>2]=c[G>>2];c[G>>2]=M;F=F+4|0;G=G+ -4|0}while(F>>>0>>0)}break};case 1:{c[d>>2]=c[e>>2];L=vd[c[(c[j>>2]|0)+44>>2]&63](j,32)|0;M=c[e>>2]|0;c[e>>2]=M+4;c[M>>2]=L;break};default:{}}E=E+1|0}while((E|0)!=4);v=a[q>>0]|0;h=(v&1)==0;if(h)q=(v&255)>>>1;else q=c[t>>2]|0;if(q>>>0>1){if(h){h=t;q=(v&255)>>>1}else{h=c[u>>2]|0;q=c[t>>2]|0}v=h+4|0;u=h+(q<<2)|0;t=c[e>>2]|0;if((v|0)!=(u|0)){q=(h+(q+ -1<<2)+(0-v)|0)>>>2;h=t;while(1){c[h>>2]=c[v>>2];v=v+4|0;if((v|0)==(u|0))break;else h=h+4|0}t=t+(q+1<<2)|0}c[e>>2]=t}f=f&176;if((f|0)==16){i=s;return}else if((f|0)==32){c[d>>2]=c[e>>2];i=s;return}else{c[d>>2]=b;i=s;return}}function An(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;q=i;i=i+464|0;s=q;k=q+24|0;r=q+432|0;l=q+4|0;m=q+436|0;n=q+448|0;w=q+20|0;u=q+32|0;p=q+28|0;t=q+16|0;o=c[g+28>>2]|0;d=o+4|0;c[d>>2]=(c[d>>2]|0)+1;d=Sn(o,19064)|0;x=a[j>>0]|0;v=(x&1)==0;if(v)x=(x&255)>>>1;else x=c[j+4>>2]|0;if(!x)v=0;else{if(v)v=j+4|0;else v=c[j+8>>2]|0;v=c[v>>2]|0;v=(v|0)==(vd[c[(c[d>>2]|0)+44>>2]&63](d,45)|0)}c[s>>2]=0;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;yn(f,v,o,s,k,r,l,m,n,w);f=a[j>>0]|0;x=(f&1)==0;if(x)y=(f&255)>>>1;else y=c[j+4>>2]|0;w=c[w>>2]|0;if((y|0)>(w|0)){if(x)y=(f&255)>>>1;else y=c[j+4>>2]|0;z=a[n>>0]|0;if(!(z&1))z=(z&255)>>>1;else z=c[n+4>>2]|0;A=a[m>>0]|0;if(!(A&1))A=(A&255)>>>1;else A=c[m+4>>2]|0;y=z+(y-w<<1|1)+A|0}else{y=a[n>>0]|0;if(!(y&1))y=(y&255)>>>1;else y=c[n+4>>2]|0;z=a[m>>0]|0;if(!(z&1))z=(z&255)>>>1;else z=c[m+4>>2]|0;y=y+2+z|0}y=y+w|0;if(y>>>0>100){u=Tq(y<<2)|0;if(!u){A=Wb(4)|0;c[A>>2]=27280;Zc(A|0,27328,220)}else y=u}else y=0;if(x){x=j+4|0;j=(f&255)>>>1}else{x=c[j+8>>2]|0;j=c[j+4>>2]|0}zn(u,p,t,c[g+4>>2]|0,x,x+(j<<2)|0,d,v,s,c[k>>2]|0,c[r>>2]|0,l,m,n,w);sl(b,c[e>>2]|0,u,c[p>>2]|0,c[t>>2]|0,g,h);if(y)Uq(y);if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(a[m>>0]&1)Uq(c[m+8>>2]|0);if(a[l>>0]&1)Uq(c[l+8>>2]|0);z=o+4|0;A=c[z>>2]|0;c[z>>2]=A+ -1;if(A){i=q;return}jd[c[(c[o>>2]|0)+8>>2]&255](o);i=q;return}function Bn(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Cn(a){a=a|0;return}function Dn(b,d,e){b=b|0;d=d|0;e=e|0;b=i;if(!(a[d>>0]&1))d=d+1|0;else d=c[d+8>>2]|0;e=Nb(d|0,1)|0;i=b;return e>>>((e|0)!=(-1|0)&1)|0}function En(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 j=0,k=0,l=0,m=0;d=i;i=i+16|0;j=d;c[j+0>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;m=a[h>>0]|0;if(!(m&1)){l=h+1|0;h=(m&255)>>>1}else{l=c[h+8>>2]|0;h=c[h+4>>2]|0}h=l+h|0;if(l>>>0>>0){do{Mi(j,a[l>>0]|0);l=l+1|0}while((l|0)!=(h|0));e=(e|0)==-1?-1:e<<1;if(!(a[j>>0]&1))k=10;else l=c[j+8>>2]|0}else{e=(e|0)==-1?-1:e<<1;k=10}if((k|0)==10)l=j+1|0;g=Fc(e|0,f|0,g|0,l|0)|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;m=mr(g|0)|0;f=g+m|0;if((m|0)>0)do{Mi(b,a[g>>0]|0);g=g+1|0}while((g|0)!=(f|0));if(!(a[j>>0]&1)){i=d;return}Uq(c[j+8>>2]|0);i=d;return}function Fn(a,b){a=a|0;b=b|0;a=i;gb(((b|0)==-1?-1:b<<1)|0)|0;i=a;return}function Gn(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Hn(a){a=a|0;return}function In(b,d,e){b=b|0;d=d|0;e=e|0;b=i;if(!(a[d>>0]&1))d=d+1|0;else d=c[d+8>>2]|0;e=Nb(d|0,1)|0;i=b;return e>>>((e|0)!=(-1|0)&1)|0}function Jn(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 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;n=i;i=i+176|0;o=n;l=n+40|0;k=n+168|0;j=n+172|0;m=n+16|0;r=n+8|0;d=n+32|0;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[r+4>>2]=0;c[r>>2]=20688;s=a[h>>0]|0;if(!(s&1)){t=h+4|0;h=(s&255)>>>1}else{t=c[h+8>>2]|0;h=c[h+4>>2]|0}h=t+(h<<2)|0;u=o;c[u>>2]=0;c[u+4>>2]=0;do if(t>>>0>>0){s=l+32|0;u=20688|0;while(1){c[j>>2]=t;v=(rd[c[u+12>>2]&15](r,o,t,h,j,l,s,k)|0)==2;u=c[j>>2]|0;if(v|(u|0)==(t|0))break;if(l>>>0<(c[k>>2]|0)>>>0){t=l;do{Mi(m,a[t>>0]|0);t=t+1|0}while(t>>>0<(c[k>>2]|0)>>>0);t=c[j>>2]|0}else t=u;if(t>>>0>=h>>>0){p=16;break}u=c[r>>2]|0}if((p|0)==16){q=(a[m>>0]&1)==0;break}dn(19912)}else q=1;while(0);if(q)p=m+1|0;else p=c[m+8>>2]|0;p=Fc(((e|0)==-1?-1:e<<1)|0,f|0,g|0,p|0)|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[d+4>>2]=0;c[d>>2]=20792;v=mr(p|0)|0;e=p+v|0;u=o;c[u>>2]=0;c[u+4>>2]=0;a:do if((v|0)>0){g=e;f=l+128|0;q=20792|0;while(1){c[j>>2]=p;v=(rd[c[q+16>>2]&15](d,o,p,(g-p|0)>32?p+32|0:e,j,l,f,k)|0)==2;q=c[j>>2]|0;if(v|(q|0)==(p|0))break;if(l>>>0<(c[k>>2]|0)>>>0){p=l;do{Xi(b,c[p>>2]|0);p=p+4|0}while(p>>>0<(c[k>>2]|0)>>>0);p=c[j>>2]|0}else p=q;if(p>>>0>=e>>>0)break a;q=c[d>>2]|0}dn(19912)}while(0);if(!(a[m>>0]&1)){i=n;return}Uq(c[m+8>>2]|0);i=n;return}function Kn(a,b){a=a|0;b=b|0;a=i;gb(((b|0)==-1?-1:b<<1)|0)|0;i=a;return}function Ln(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=19160;a=a+8|0;d=c[a>>2]|0;if((d|0)==(Dk()|0)){i=b;return}ub(c[a>>2]|0);i=b;return}function Mn(){var b=0,d=0,e=0;b=Wb(8)|0;c[b>>2]=27496;e=$p(19)|0;d=b+4|0;c[e>>2]=6;c[e+4>>2]=6;c[e+8>>2]=0;e=e+12|0;a[e+0>>0]=a[18968]|0;a[e+1>>0]=a[18969]|0;a[e+2>>0]=a[18970]|0;a[e+3>>0]=a[18971]|0;a[e+4>>0]=a[18972]|0;a[e+5>>0]=a[18973]|0;a[e+6>>0]=a[18974]|0;c[d>>2]=e;c[b>>2]=27576;Zc(b|0,27616,222)}function Nn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=i;i=i+16|0;j=f;h=d+4|0;c[h>>2]=(c[h>>2]|0)+1;h=b+12|0;m=c[h>>2]|0;g=b+8|0;k=c[g>>2]|0;r=m;q=k;l=r-q>>2;do if(l>>>0<=e>>>0){p=e+1|0;if(l>>>0>=p>>>0){if(l>>>0<=p>>>0)break;j=k+(p<<2)|0;if((m|0)==(j|0))break;c[h>>2]=m+(~((m+ -4+(0-j)|0)>>>2)<<2);break}o=p-l|0;k=b+16|0;s=c[k>>2]|0;do if(s-r>>2>>>0>>0){m=b+24|0;if(p>>>0>1073741823)Mn();q=s-q|0;if(q>>2>>>0<536870911){q=q>>1;q=q>>>0

        >>0?p:q;c[j>>2]=0;if(q){p=b+136|0;if((a[p>>0]|0)==0&q>>>0<29){a[p>>0]=1;p=m}else{p=q;n=15}}else{q=0;p=0}}else{c[j>>2]=0;p=1073741823;n=15}if((n|0)==15){q=p;p=$p(p<<2)|0}c[j>>2]=p+(q<<2);n=p+(l<<2)|0;do{if(!n)n=0;else c[n>>2]=0;n=n+4|0;o=o+ -1|0}while((o|0)!=0);q=c[g>>2]|0;r=(c[h>>2]|0)-q|0;s=p+(l-(r>>2)<<2)|0;nr(s|0,q|0,r|0)|0;l=c[g>>2]|0;c[g>>2]=s;c[h>>2]=n;s=c[k>>2]|0;c[k>>2]=c[j>>2];c[j>>2]=s;if(l)if((m|0)==(l|0)){a[b+136>>0]=0;break}else{Uq(l);break}}else do{if(!m)j=0;else{c[m>>2]=0;j=c[h>>2]|0}m=j+4|0;c[h>>2]=m;o=o+ -1|0}while((o|0)!=0);while(0);k=c[g>>2]|0}while(0);h=c[k+(e<<2)>>2]|0;if(!h){s=k;s=s+(e<<2)|0;c[s>>2]=d;i=f;return}r=h+4|0;s=c[r>>2]|0;c[r>>2]=s+ -1;if(!s)jd[c[(c[h>>2]|0)+8>>2]&255](h);s=c[g>>2]|0;s=s+(e<<2)|0;c[s>>2]=d;i=f;return}function On(a){a=a|0;var b=0;b=i;Pn(a);Uq(a);i=b;return}function Pn(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;c[b>>2]=19008;f=b+8|0;e=b+12|0;g=c[e>>2]|0;j=c[f>>2]|0;if((g|0)!=(j|0)){h=0;do{k=c[j+(h<<2)>>2]|0;if(k){g=k+4|0;j=c[g>>2]|0;c[g>>2]=j+ -1;if(!j)jd[c[(c[k>>2]|0)+8>>2]&255](k);g=c[e>>2]|0;j=c[f>>2]|0}h=h+1|0}while(h>>>0>2>>>0)}if(!(a[b+144>>0]&1)){Jp(f);i=d;return}Uq(c[b+152>>2]|0);Jp(f);i=d;return}function Qn(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;if(a[19048]|0){g=c[4760]|0;c[b>>2]=g;g=g+4|0;f=c[g>>2]|0;c[g>>2]=f+1;i=d;return}if(!(Fa(19048)|0)){g=c[4760]|0;c[b>>2]=g;g=g+4|0;f=c[g>>2]|0;c[g>>2]=f+1;i=d;return}if((a[19032]|0)==0?(Fa(19032)|0)!=0:0){c[5845]=0;c[5844]=19008;a[23512]=1;c[5847]=23400;c[5846]=23400;c[5848]=23512;g=28;e=23400;do{c[e>>2]=0;f=c[5847]|0;e=f+4|0;c[5847]=e;g=g+ -1|0}while((g|0)!=0);a[23520]=2;a[23521]=67;a[23522]=0;g=c[5846]|0;if((e|0)!=(g|0))c[5847]=f+(0-((f+(0-g)|0)>>>2)<<2);c[5961]=0;c[5960]=17456;Nn(23376,23840,Rn(17480)|0);c[5959]=0;c[5958]=17496;Nn(23376,23832,Rn(17520)|0);c[5955]=0;c[5954]=19088;c[5956]=0;a[23828]=0;c[5956]=c[(Rb()|0)>>2];Nn(23376,23816,Rn(19072)|0);c[5953]=0;c[5952]=20008;Nn(23376,23808,Rn(19064)|0);c[5951]=0;c[5950]=20224;Nn(23376,23800,Rn(19136)|0);c[5947]=0;c[5946]=19160;c[5948]=Dk()|0;Nn(23376,23784,Rn(19144)|0);c[5945]=0;c[5944]=20448;Nn(23376,23776,Rn(19200)|0);c[5943]=0;c[5942]=20568;Nn(23376,23768,Rn(19208)|0);c[5937]=0;c[5936]=19240;a[23752]=46;a[23753]=44;c[5939]=0;c[5940]=0;c[5941]=0;Nn(23376,23744,Rn(19216)|0);c[5929]=0;c[5928]=19280;c[5930]=46;c[5931]=44;c[5932]=0;c[5933]=0;c[5934]=0;Nn(23376,23712,Rn(19224)|0);c[5927]=0;c[5926]=17536;Nn(23376,23704,Rn(17592)|0);c[5925]=0;c[5924]=17656;Nn(23376,23696,Rn(17712)|0);c[5923]=0;c[5922]=17728;Nn(23376,23688,Rn(17776)|0);c[5921]=0;c[5920]=17824;Nn(23376,23680,Rn(17872)|0);c[5919]=0;c[5918]=18416;Nn(23376,23672,Rn(18464)|0);c[5917]=0;c[5916]=18480;Nn(23376,23664,Rn(18528)|0);c[5915]=0;c[5914]=18544;Nn(23376,23656,Rn(18592)|0);c[5913]=0;c[5912]=18608;Nn(23376,23648,Rn(18656)|0);c[5911]=0;c[5910]=18672;Nn(23376,23640,Rn(18696)|0);c[5909]=0;c[5908]=18752;Nn(23376,23632,Rn(18776)|0);c[5907]=0;c[5906]=18808;Nn(23376,23624,Rn(18832)|0);c[5905]=0;c[5904]=18856;Nn(23376,23616,Rn(18880)|0);c[5901]=0;c[5900]=17904;c[5902]=17952;Nn(23376,23600,Rn(17984)|0);c[5897]=0;c[5896]=18056;c[5898]=18104;Nn(23376,23584,Rn(18136)|0);c[5893]=0;c[5892]=19944;c[5894]=Dk()|0;c[5892]=18352;Nn(23376,23568,Rn(18368)|0);c[5889]=0;c[5888]=19944;c[5890]=Dk()|0;c[5888]=18384;Nn(23376,23552,Rn(18400)|0);c[5887]=0;c[5886]=18896;Nn(23376,23544,Rn(18920)|0);c[5885]=0;c[5884]=18936;Nn(23376,23536,Rn(18960)|0);c[4756]=23376;Vc(19032)}g=c[4756]|0;c[4760]=g;g=g+4|0;c[g>>2]=(c[g>>2]|0)+1;Vc(19048);g=c[4760]|0;c[b>>2]=g;g=g+4|0;f=c[g>>2]|0;c[g>>2]=f+1;i=d;return}function Rn(a){a=a|0;var b=0;b=i;do if((c[a>>2]|0)!=-1){Cc(16152)|0;if((c[a>>2]|0)==1)do rc(16176,16152)|0;while((c[a>>2]|0)==1);if(c[a>>2]|0){zb(16152)|0;break}c[a>>2]=1;zb(16152)|0;Vn(a);Cc(16152)|0;c[a>>2]=-1;zb(16152)|0;gc(16176)|0}while(0);i=b;return(c[a+4>>2]|0)+ -1|0}function Sn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;b=Rn(b)|0;f=c[a+8>>2]|0;if((c[a+12>>2]|0)-f>>2>>>0>b>>>0?(d=c[f+(b<<2)>>2]|0,(d|0)!=0):0){i=e;return d|0}f=Wb(4)|0;c[f>>2]=27744;Zc(f|0,27816,228);return 0}function Tn(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Un(a){a=a|0;var b=0;b=i;if(!a){i=b;return}jd[c[(c[a>>2]|0)+4>>2]&255](a);i=b;return}function Vn(a){a=a|0;var b=0;b=c[4764]|0;c[4764]=b+1;c[a+4>>2]=b+1;return}function Wn(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Xn(a,d,e){a=a|0;d=d|0;e=e|0;a=i;if(e>>>0>=128){d=0;i=a;return d|0}d=(b[(c[(Rb()|0)>>2]|0)+(e<<1)>>1]&d)<<16>>16!=0;i=a;return d|0}function Yn(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;a=i;if((d|0)==(e|0)){j=d;i=a;return j|0}g=((e+ -4+(0-d)|0)>>>2)+1|0;h=d;while(1){j=c[h>>2]|0;if(j>>>0<128)j=b[(c[(Rb()|0)>>2]|0)+(j<<1)>>1]|0;else j=0;b[f>>1]=j;h=h+4|0;if((h|0)==(e|0))break;else f=f+2|0}j=d+(g<<2)|0;i=a;return j|0}function Zn(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0;a=i;a:do if((e|0)==(f|0))f=e;else do{g=c[e>>2]|0;if(g>>>0<128?(b[(c[(Rb()|0)>>2]|0)+(g<<1)>>1]&d)<<16>>16!=0:0){f=e;break a}e=e+4|0}while((e|0)!=(f|0));while(0);i=a;return f|0}function _n(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0;a=i;a:do if((e|0)==(f|0))f=e;else do{g=c[e>>2]|0;if(g>>>0>=128){f=e;break a}if(!((b[(c[(Rb()|0)>>2]|0)+(g<<1)>>1]&d)<<16>>16)){f=e;break a}e=e+4|0}while((e|0)!=(f|0));while(0);i=a;return f|0}function $n(a,b){a=a|0;b=b|0;a=i;if(b>>>0>=128){i=a;return b|0}b=c[(c[(Ab()|0)>>2]|0)+(b<<2)>>2]|0;i=a;return b|0}function ao(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;a=i;if((b|0)==(d|0)){g=b;i=a;return g|0}e=((d+ -4+(0-b)|0)>>>2)+1|0;f=b;do{g=c[f>>2]|0;if(g>>>0<128)g=c[(c[(Ab()|0)>>2]|0)+(g<<2)>>2]|0;c[f>>2]=g;f=f+4|0}while((f|0)!=(d|0));g=b+(e<<2)|0;i=a;return g|0}function bo(a,b){a=a|0;b=b|0;a=i;if(b>>>0>=128){i=a;return b|0}b=c[(c[(qb()|0)>>2]|0)+(b<<2)>>2]|0;i=a;return b|0}function co(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;a=i;if((b|0)==(d|0)){g=b;i=a;return g|0}e=((d+ -4+(0-b)|0)>>>2)+1|0;f=b;do{g=c[f>>2]|0;if(g>>>0<128)g=c[(c[(qb()|0)>>2]|0)+(g<<2)>>2]|0;c[f>>2]=g;f=f+4|0}while((f|0)!=(d|0));g=b+(e<<2)|0;i=a;return g|0}function eo(a,b){a=a|0;b=b|0;return b<<24>>24|0}function fo(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;b=i;if((d|0)==(e|0)){i=b;return d|0}while(1){c[f>>2]=a[d>>0];d=d+1|0;if((d|0)==(e|0))break;else f=f+4|0}i=b;return e|0}function go(a,b,c){a=a|0;b=b|0;c=c|0;return(b>>>0<128?b&255:c)|0}function ho(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;b=i;if((d|0)==(e|0)){j=d;i=b;return j|0}h=((e+ -4+(0-d)|0)>>>2)+1|0;j=d;while(1){k=c[j>>2]|0;a[g>>0]=k>>>0<128?k&255:f;j=j+4|0;if((j|0)==(e|0))break;else g=g+1|0}k=d+(h<<2)|0;i=b;return k|0}function io(b){b=b|0;var d=0,e=0;d=i;c[b>>2]=19088;e=c[b+8>>2]|0;if((e|0)!=0?(a[b+12>>0]|0)!=0:0)Uq(e);Uq(b);i=d;return}function jo(b){b=b|0;var d=0,e=0;d=i;c[b>>2]=19088;e=c[b+8>>2]|0;if((e|0)!=0?(a[b+12>>0]|0)!=0:0)Uq(e);i=d;return}function ko(a,b){a=a|0;b=b|0;a=i;if(b<<24>>24<=-1){i=a;return b|0}b=c[(c[(Ab()|0)>>2]|0)+((b&255)<<2)>>2]&255;i=a;return b|0}function lo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;b=i;if((d|0)==(e|0)){f=d;i=b;return f|0}do{f=a[d>>0]|0;if(f<<24>>24>-1)f=c[(c[(Ab()|0)>>2]|0)+(f<<24>>24<<2)>>2]&255;a[d>>0]=f;d=d+1|0}while((d|0)!=(e|0));i=b;return e|0}function mo(a,b){a=a|0;b=b|0;a=i;if(b<<24>>24<=-1){i=a;return b|0}b=c[(c[(qb()|0)>>2]|0)+(b<<24>>24<<2)>>2]&255;i=a;return b|0}function no(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;b=i;if((d|0)==(e|0)){f=d;i=b;return f|0}do{f=a[d>>0]|0;if(f<<24>>24>-1)f=c[(c[(qb()|0)>>2]|0)+(f<<24>>24<<2)>>2]&255;a[d>>0]=f;d=d+1|0}while((d|0)!=(e|0));i=b;return e|0}function oo(a,b){a=a|0;b=b|0;return b|0}function po(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;b=i;if((c|0)==(d|0))d=c;else while(1){a[e>>0]=a[c>>0]|0;c=c+1|0;if((c|0)==(d|0))break;else e=e+1|0}i=b;return d|0}function qo(a,b,c){a=a|0;b=b|0;c=c|0;return(b<<24>>24>-1?b:c)|0}function ro(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;b=i;if((c|0)==(d|0)){i=b;return c|0}while(1){g=a[c>>0]|0;a[f>>0]=g<<24>>24>-1?g:e;c=c+1|0;if((c|0)==(d|0))break;else f=f+1|0}i=b;return d|0}function so(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function to(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;c[f>>2]=d;c[i>>2]=g;return 3}function uo(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;c[f>>2]=d;c[i>>2]=g;return 3}function vo(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function wo(a){a=a|0;return 1}function xo(a){a=a|0;return 1}function yo(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;b=d-c|0;return(b>>>0>>0?b:e)|0}function zo(a){a=a|0;return 1}function Ao(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=19160;d=a+8|0;e=c[d>>2]|0;if((e|0)==(Dk()|0)){Uq(a);i=b;return}ub(c[d>>2]|0);Uq(a);i=b;return}function Bo(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;d=i;i=i+272|0;o=d+264|0;n=d+8|0;m=d;a:do if((e|0)!=(f|0)){q=e;while(1){if(!(c[q>>2]|0))break;q=q+4|0;if((q|0)==(f|0)){q=f;break}}c[k>>2]=h;c[g>>2]=e;if((h|0)!=(j|0)){p=j;b=b+8|0;while(1){w=q-e>>2;r=Yb(c[b>>2]|0)|0;y=c[g>>2]|0;s=(h|0)!=0;u=s?p-h|0:256;v=s?h:n;b:do if((y|0)==0|(u|0)==0)t=0;else{t=0;do{x=w>>>0>=u>>>0;if(!(x|w>>>0>32))break b;x=x?u:w;w=w-x|0;c:do if(!v){A=c[y>>2]|0;if(!A)x=0;else{x=0;z=y;while(1){if(A>>>0>127){A=ar(o,A)|0;if((A|0)==-1){u=0;t=-1;break b}}else A=1;x=A+x|0;z=z+4|0;A=c[z>>2]|0;if(!A){l=32;break}}}}else{d:do if(x>>>0>3){z=v;A=x;while(1){B=c[y>>2]|0;if((B+ -1|0)>>>0>126){if(!B)break;B=ar(z,B)|0;if((B|0)==-1){u=0;t=-1;break b}z=z+B|0;A=A-B|0}else{a[z>>0]=B;z=z+1|0;A=A+ -1|0}y=y+4|0;if(A>>>0<=3)break d}a[z>>0]=0;x=x-A|0;y=0;l=32;break c}else{z=v;A=x}while(0);if(A){while(1){B=c[y>>2]|0;if((B+ -1|0)>>>0>126){if(!B){l=25;break}B=ar(o,B)|0;if((B|0)==-1){u=0;t=-1;break b}if(B>>>0>A>>>0){l=28;break}ar(z,c[y>>2]|0)|0;z=z+B|0;A=A-B|0}else{a[z>>0]=B;z=z+1|0;A=A+ -1|0}y=y+4|0;if(!A){l=32;break c}}if((l|0)==25){a[z>>0]=0;x=x-A|0;y=0;l=32;break}else if((l|0)==28){x=x-A|0;l=32;break}}else l=32}while(0);if((l|0)==32){l=0;if((x|0)==-1){u=0;t=-1;break b}}if((v|0)==(n|0))v=n;else{u=u-x|0;v=v+x|0}t=x+t|0}while(!((y|0)==0|(u|0)==0))}while(0);e:do if((y|0)!=0?!((u|0)==0|(w|0)==0):0){while(1){x=ar(v,c[y>>2]|0)|0;if((x+1|0)>>>0<2)break;y=y+4|0;w=w+ -1|0;t=t+1|0;if((u|0)==(x|0)|(w|0)==0)break e;else{u=u-x|0;v=v+x|0}}B=(x|0)==0;t=B?t:-1;y=B?0:y}while(0);if(s)c[g>>2]=y;if(r)Yb(r|0)|0;if(!t){g=1;l=67;break}else if((t|0)==-1){l=46;break}h=(c[k>>2]|0)+t|0;c[k>>2]=h;if((h|0)==(j|0)){l=65;break}if((q|0)==(f|0)){e=c[g>>2]|0;q=f}else{e=Yb(c[b>>2]|0)|0;a[m>>0]=0;if(e)Yb(e|0)|0;r=c[k>>2]|0;if((r|0)==(j|0)){g=1;l=67;break}else{q=0;h=0;e=m}while(1){c[k>>2]=r+1;a[r>>0]=q;if(!h)break;B=e+1|0;r=c[k>>2]|0;q=a[B>>0]|0;h=h+ -1|0;e=B}e=(c[g>>2]|0)+4|0;c[g>>2]=e;f:do if((e|0)==(f|0))q=f;else{q=e;while(1){if(!(c[q>>2]|0))break f;q=q+4|0;if((q|0)==(f|0)){q=f;break}}}while(0);h=c[k>>2]|0}if((e|0)==(f|0)|(h|0)==(j|0))break a}if((l|0)==46){c[k>>2]=h;g:do if((e|0)!=(c[g>>2]|0))do{f=c[e>>2]|0;l=Yb(c[b>>2]|0)|0;f=ar(h,f)|0;if(l)Yb(l|0)|0;if((f|0)==-1)break g;h=(c[k>>2]|0)+f|0;c[k>>2]=h;e=e+4|0}while((e|0)!=(c[g>>2]|0));while(0);c[g>>2]=e;B=2;i=d;return B|0}else if((l|0)==65){e=c[g>>2]|0;break}else if((l|0)==67){i=d;return g|0}}}else{c[k>>2]=h;c[g>>2]=e}while(0);B=(e|0)!=(f|0)&1;i=d;return B|0}function Co(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;l=i;i=i+1040|0;n=l+16|0;o=l+8|0;m=l;a:do if((e|0)!=(f|0)){r=e;while(1){if(!(a[r>>0]|0))break;r=r+1|0;if((r|0)==(f|0)){r=f;break}}c[k>>2]=h;c[g>>2]=e;if((h|0)!=(j|0)){p=j;b=b+8|0;while(1){t=d;u=c[t+4>>2]|0;q=m;c[q>>2]=c[t>>2];c[q+4>>2]=u;q=r;u=q-e|0;t=Yb(c[b>>2]|0)|0;y=c[g>>2]|0;c[o>>2]=y;s=(h|0)!=0;w=s?p-h>>2:256;x=s?h:n;b:do if((y|0)==0|(w|0)==0)v=0;else{v=0;while(1){z=u>>>2;A=z>>>0>=w>>>0;if(!(A|u>>>0>131))break b;y=A?w:z;u=u-y|0;y=Tp(x,o,y,d)|0;if((y|0)==-1)break;if((x|0)==(n|0))x=n;else{w=w-y|0;x=x+(y<<2)|0}v=y+v|0;y=c[o>>2]|0;if((y|0)==0|(w|0)==0)break b}w=0;y=c[o>>2]|0;v=-1}while(0);c:do if(y){if(!((w|0)==0|(u|0)==0)){while(1){z=Sp(x,y,u,d)|0;if((z+2|0)>>>0<3)break;y=y+z|0;c[o>>2]=y;w=w+ -1|0;v=v+1|0;if((w|0)==0|(u|0)==(z|0))break c;else{u=u-z|0;x=x+4|0}}if(!z){c[o>>2]=0;y=0;break}else if((z|0)==-1){v=-1;break}else{c[d>>2]=0;break}}}else y=0;while(0);if(s)c[g>>2]=y;if(t)Yb(t|0)|0;if(!v){f=2;d=48;break}else if((v|0)==-1){d=26;break}h=(c[k>>2]|0)+(v<<2)|0;c[k>>2]=h;if((h|0)==(j|0)){d=46;break}e=c[g>>2]|0;if((r|0)==(f|0))r=f;else{q=Yb(c[b>>2]|0)|0;e=Sp(h,e,1,d)|0;if(q)Yb(q|0)|0;if(e){f=2;d=48;break}c[k>>2]=(c[k>>2]|0)+4;e=(c[g>>2]|0)+1|0;c[g>>2]=e;d:do if((e|0)==(f|0))r=f;else{r=e;while(1){if(!(a[r>>0]|0))break d;r=r+1|0;if((r|0)==(f|0)){r=f;break}}}while(0);h=c[k>>2]|0}if((e|0)==(f|0)|(h|0)==(j|0))break a}if((d|0)==26){c[k>>2]=h;e:do if((e|0)!=(c[g>>2]|0)){while(1){d=Yb(c[b>>2]|0)|0;n=Sp(h,e,q-e|0,m)|0;if(d)Yb(d|0)|0;if(!n)e=e+1|0;else if((n|0)==-1){d=31;break}else if((n|0)==-2){d=32;break}else e=e+n|0;h=(c[k>>2]|0)+4|0;c[k>>2]=h;if((e|0)==(c[g>>2]|0))break e}if((d|0)==31){c[g>>2]=e;A=2;i=l;return A|0}else if((d|0)==32){c[g>>2]=e;A=1;i=l;return A|0}}while(0);c[g>>2]=e;A=(e|0)!=(f|0)&1;i=l;return A|0}else if((d|0)==46){e=c[g>>2]|0;break}else if((d|0)==48){i=l;return f|0}}}else{c[k>>2]=h;c[g>>2]=e}while(0);A=(e|0)!=(f|0)&1;i=l;return A|0}function Do(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;b=i;c[f>>2]=d;a=Yb(c[a+8>>2]|0)|0;if(!a){i=b;return 0}Yb(a|0)|0;i=b;return 0}function Eo(a){a=a|0;var b=0,d=0;b=i;a=a+8|0;d=Yb(c[a>>2]|0)|0;if(d)Yb(d|0)|0;a=c[a>>2]|0;if(a){a=Yb(a|0)|0;if(!a)a=0;else{Yb(a|0)|0;a=0}}else a=1;i=b;return a|0}function Fo(a){a=a|0;return 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,j=0,k=0,l=0,m=0;g=i;if((f|0)==0|(d|0)==(e|0)){m=0;i=g;return m|0}h=e;a=a+8|0;b=(b|0)!=0?b:26896;k=0;j=0;while(1){m=Yb(c[a>>2]|0)|0;l=Sp(0,d,h-d|0,b)|0;if(m)Yb(m|0)|0;if(!l){d=d+1|0;l=1}else if((l|0)==-2|(l|0)==-1){f=9;break}else d=d+l|0;k=l+k|0;j=j+1|0;if(j>>>0>=f>>>0|(d|0)==(e|0)){f=9;break}}if((f|0)==9){i=g;return k|0}return 0}function Ho(a){a=a|0;var b=0;b=i;a=c[a+8>>2]|0;if(a){a=Yb(a|0)|0;if(!a)a=4;else{Yb(a|0)|0;a=4}}else a=1;i=b;return a|0}function Io(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Jo(d,f,g,h,j,k,l,m){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0;f=i;d=h;a:do if(g>>>0>>0){o=g;n=k;while(1){q=b[o>>1]|0;p=q&65535;do if((q&65535)<128){if((l-n|0)<1){h=1;break a}a[n>>0]=q;n=n+1|0}else{if((q&65535)<2048){if((l-n|0)<2){h=1;break a}a[n>>0]=p>>>6|192;a[n+1>>0]=p&63|128;n=n+2|0;break}if((q&65535)<55296){if((l-n|0)<3){h=1;break a}a[n>>0]=p>>>12|224;a[n+1>>0]=p>>>6&63|128;a[n+2>>0]=p&63|128;n=n+3|0;break}if((q&65535)>=56320){if((q&65535)<57344){h=2;break a}if((l-n|0)<3){h=1;break a}a[n>>0]=p>>>12|224;a[n+1>>0]=p>>>6&63|128;a[n+2>>0]=p&63|128;n=n+3|0;break}if((d-o|0)<4){h=1;break a}q=o+2|0;r=e[q>>1]|0;if((r&64512|0)!=56320){h=2;break a}if((l-n|0)<4){h=1;break a}s=p&960;if(((s<<10)+65536|0)>>>0>1114111){h=2;break a}o=(s>>>6)+1|0;a[n>>0]=o>>>2|240;a[n+1>>0]=p>>>2&15|o<<4&48|128;a[n+2>>0]=p<<4&48|r>>>6&15|128;a[n+3>>0]=r&63|128;o=q;n=n+4|0}while(0);o=o+2|0;if(o>>>0>=h>>>0){h=0;break}}}else{h=0;o=g;n=k}while(0);c[j>>2]=g+(o-g>>1<<1);c[m>>2]=k+(n-k);i=f;return h|0}function Ko(e,f,g,h,j,k,l,m){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=i;a:do if(g>>>0>>0){o=h;p=l;q=g;e=k;while(1){if(e>>>0>=l>>>0){n=31;break a}s=a[q>>0]|0;r=s&255;do if(s<<24>>24>-1){b[e>>1]=s&255;q=q+1|0}else{if((s&255)<194){h=2;break a}if((s&255)<224){if((o-q|0)<2){h=1;break a}s=d[q+1>>0]|0;if((s&192|0)!=128){h=2;break a}b[e>>1]=s&63|r<<6&1984;q=q+2|0;break}if((s&255)<240){if((o-q|0)<3){h=1;break a}s=a[q+1>>0]|0;t=a[q+2>>0]|0;if((r|0)==237){if((s&-32)<<24>>24!=-128){h=2;break a}}else if((r|0)==224){if((s&-32)<<24>>24!=-96){h=2;break a}}else if((s&-64)<<24>>24!=-128){h=2;break a}t=t&255;if((t&192|0)!=128){h=2;break a}b[e>>1]=(s&255)<<6&4032|r<<12|t&63;q=q+3|0;break}if((s&255)>=245){h=2;break a}if((o-q|0)<4){h=1;break a}s=a[q+1>>0]|0;t=a[q+2>>0]|0;u=a[q+3>>0]|0;if((r|0)==244){if((s&-16)<<24>>24!=-128){h=2;break a}}else if((r|0)==240){if((s+112<<24>>24&255)>=48){h=2;break a}}else if((s&-64)<<24>>24!=-128){h=2;break a}t=t&255;if((t&192|0)!=128){h=2;break a}u=u&255;if((u&192|0)!=128){h=2;break a}if((p-e|0)<4){h=1;break a}r=r&7;s=s&255;if((s<<12&196608|r<<18)>>>0>1114111){h=2;break a}b[e>>1]=s<<2&60|t>>>4&3|((s>>>4&3|r<<2)<<6)+16320|55296;e=e+2|0;b[e>>1]=u&63|t<<6&960|56320;q=q+4|0}while(0);e=e+2|0;if(q>>>0>=h>>>0){n=31;break}}}else{q=g;e=k;n=31}while(0);if((n|0)==31)h=q>>>0>>0&1;c[j>>2]=g+(q-g);c[m>>2]=k+(e-k>>1<<1);i=f;return h|0}function Lo(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function Mo(a){a=a|0;return 0}function No(a){a=a|0;return 0}function Oo(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;c=i;a:do if(d>>>0>>0&(f|0)!=0){b=e;h=d;g=0;b:while(1){k=a[h>>0]|0;j=k&255;do if(k<<24>>24>-1)h=h+1|0;else{if((k&255)<194)break a;if((k&255)<224){if((b-h|0)<2)break a;if((a[h+1>>0]&-64)<<24>>24!=-128)break a;h=h+2|0;break}if((k&255)<240){k=h;if((b-k|0)<3)break a;m=a[h+1>>0]|0;l=a[h+2>>0]|0;if((j|0)==237){if((m&-32)<<24>>24!=-128){e=16;break b}}else if((j|0)==224){if((m&-32)<<24>>24!=-96){e=14;break b}}else if((m&-64)<<24>>24!=-128){e=18;break b}if((l&-64)<<24>>24!=-128)break a;h=h+3|0;break}if((k&255)>=245)break a;k=h;if((b-k|0)<4)break a;if((f-g|0)>>>0<2)break a;n=a[h+1>>0]|0;l=a[h+2>>0]|0;m=a[h+3>>0]|0;if((j|0)==240){if((n+112<<24>>24&255)>=48){e=26;break b}}else if((j|0)==244){if((n&-16)<<24>>24!=-128){e=28;break b}}else if((n&-64)<<24>>24!=-128){e=30;break b}if((l&-64)<<24>>24!=-128)break a;if((m&-64)<<24>>24!=-128)break a;if(((n&255)<<12&196608|j<<18&1835008)>>>0>1114111)break a;h=h+4|0;g=g+1|0}while(0);g=g+1|0;if(!(h>>>0>>0&g>>>0>>0))break a}if((e|0)==14){n=k-d|0;i=c;return n|0}else if((e|0)==16){n=k-d|0;i=c;return n|0}else if((e|0)==18){n=k-d|0;i=c;return n|0}else if((e|0)==26){n=k-d|0;i=c;return n|0}else if((e|0)==28){n=k-d|0;i=c;return n|0}else if((e|0)==30){n=k-d|0;i=c;return n|0}}else h=d;while(0);n=h-d|0;i=c;return n|0}function Po(a){a=a|0;return 4}function Qo(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Ro(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0;d=i;a:do if(e>>>0>>0){b=e;l=h;while(1){m=c[b>>2]|0;if((m&-2048|0)==55296|m>>>0>1114111){f=2;break a}do if(m>>>0>=128){if(m>>>0<2048){if((j-l|0)<2){f=1;break a}a[l>>0]=m>>>6|192;a[l+1>>0]=m&63|128;l=l+2|0;break}n=j-l|0;if(m>>>0<65536){if((n|0)<3){f=1;break a}a[l>>0]=m>>>12|224;a[l+1>>0]=m>>>6&63|128;a[l+2>>0]=m&63|128;l=l+3|0;break}else{if((n|0)<4){f=1;break a}a[l>>0]=m>>>18|240;a[l+1>>0]=m>>>12&63|128;a[l+2>>0]=m>>>6&63|128;a[l+3>>0]=m&63|128;l=l+4|0;break}}else{if((j-l|0)<1){f=1;break a}a[l>>0]=m;l=l+1|0}while(0);b=b+4|0;if(b>>>0>=f>>>0){f=0;break}}}else{f=0;b=e;l=h}while(0);c[g>>2]=e+(b-e>>2<<2);c[k>>2]=h+(l-h);i=d;return f|0}function So(b,e,f,g,h,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=i;a:do if(f>>>0>>0){o=g;n=f;b=j;while(1){if(b>>>0>=k>>>0){m=30;break a}q=a[n>>0]|0;p=q&255;do if(q<<24>>24>-1){c[b>>2]=p;n=n+1|0}else{if((q&255)<194){g=2;break a}if((q&255)<224){if((o-n|0)<2){g=1;break a}q=d[n+1>>0]|0;if((q&192|0)!=128){g=2;break a}c[b>>2]=q&63|p<<6&1984;n=n+2|0;break}if((q&255)<240){if((o-n|0)<3){g=1;break a}q=a[n+1>>0]|0;r=a[n+2>>0]|0;if((p|0)==237){if((q&-32)<<24>>24!=-128){g=2;break a}}else if((p|0)==224){if((q&-32)<<24>>24!=-96){g=2;break a}}else if((q&-64)<<24>>24!=-128){g=2;break a}r=r&255;if((r&192|0)!=128){g=2;break a}c[b>>2]=(q&255)<<6&4032|p<<12&61440|r&63;n=n+3|0;break}if((q&255)>=245){g=2;break a}if((o-n|0)<4){g=1;break a}q=a[n+1>>0]|0;r=a[n+2>>0]|0;s=a[n+3>>0]|0;if((p|0)==240){if((q+112<<24>>24&255)>=48){g=2;break a}}else if((p|0)==244){if((q&-16)<<24>>24!=-128){g=2;break a}}else if((q&-64)<<24>>24!=-128){g=2;break a}r=r&255;if((r&192|0)!=128){g=2;break a}s=s&255;if((s&192|0)!=128){g=2;break a}p=(q&255)<<12&258048|p<<18&1835008|r<<6&4032|s&63;if(p>>>0>1114111){g=2;break a}c[b>>2]=p;n=n+4|0}while(0);b=b+4|0;if(n>>>0>=g>>>0){m=30;break}}}else{n=f;b=j;m=30}while(0);if((m|0)==30)g=n>>>0>>0&1;c[h>>2]=f+(n-f);c[l>>2]=j+(b-j>>2<<2);i=e;return g|0}function To(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function Uo(a){a=a|0;return 0}function Vo(a){a=a|0;return 0}function Wo(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;c=i;a:do if(d>>>0>>0&(f|0)!=0){g=e;j=d;b=1;b:while(1){k=a[j>>0]|0;h=k&255;do if(k<<24>>24>-1)j=j+1|0;else{if((k&255)<194)break a;if((k&255)<224){if((g-j|0)<2)break a;if((a[j+1>>0]&-64)<<24>>24!=-128)break a;j=j+2|0;break}if((k&255)<240){k=j;if((g-k|0)<3)break a;m=a[j+1>>0]|0;l=a[j+2>>0]|0;if((h|0)==237){if((m&-32)<<24>>24!=-128){e=16;break b}}else if((h|0)==224){if((m&-32)<<24>>24!=-96){e=14;break b}}else if((m&-64)<<24>>24!=-128){e=18;break b}if((l&-64)<<24>>24!=-128)break a;j=j+3|0;break}if((k&255)>=245)break a;k=j;if((g-k|0)<4)break a;m=a[j+1>>0]|0;n=a[j+2>>0]|0;l=a[j+3>>0]|0;if((h|0)==240){if((m+112<<24>>24&255)>=48){e=25;break b}}else if((h|0)==244){if((m&-16)<<24>>24!=-128){e=27;break b}}else if((m&-64)<<24>>24!=-128){e=29;break b}if((n&-64)<<24>>24!=-128)break a;if((l&-64)<<24>>24!=-128)break a;if(((m&255)<<12&196608|h<<18&1835008)>>>0>1114111)break a;j=j+4|0}while(0);if(!(j>>>0>>0&b>>>0>>0))break a;b=b+1|0}if((e|0)==14){n=k-d|0;i=c;return n|0}else if((e|0)==16){n=k-d|0;i=c;return n|0}else if((e|0)==18){n=k-d|0;i=c;return n|0}else if((e|0)==25){n=k-d|0;i=c;return n|0}else if((e|0)==27){n=k-d|0;i=c;return n|0}else if((e|0)==29){n=k-d|0;i=c;return n|0}}else j=d;while(0);n=j-d|0;i=c;return n|0}function Xo(a){a=a|0;return 4}function Yo(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Zo(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function _o(b){b=b|0;var d=0;d=i;c[b>>2]=19240;if(!(a[b+12>>0]&1)){Uq(b);i=d;return}Uq(c[b+20>>2]|0);Uq(b);i=d;return}function $o(b){b=b|0;var d=0;d=i;c[b>>2]=19240;if(!(a[b+12>>0]&1)){i=d;return}Uq(c[b+20>>2]|0);i=d;return}function ap(b){b=b|0;var d=0;d=i;c[b>>2]=19280;if(!(a[b+16>>0]&1)){Uq(b);i=d;return}Uq(c[b+24>>2]|0);Uq(b);i=d;return}function bp(b){b=b|0;var d=0;d=i;c[b>>2]=19280;if(!(a[b+16>>0]&1)){i=d;return}Uq(c[b+24>>2]|0);i=d;return}function cp(b){b=b|0;return a[b+8>>0]|0}function dp(a){a=a|0;return c[a+8>>2]|0}function ep(b){b=b|0;return a[b+9>>0]|0}function fp(a){a=a|0;return c[a+12>>2]|0}function gp(a,b){a=a|0;b=b|0;var c=0;c=i;Fi(a,b+12|0);i=c;return}function hp(a,b){a=a|0;b=b|0;var c=0;c=i;Fi(a,b+16|0);i=c;return}function ip(b,c){b=b|0;c=c|0;a[b>>0]=8;c=b+1|0;a[c>>0]=116;a[c+1>>0]=114;a[c+2>>0]=117;a[c+3>>0]=101;a[b+5>>0]=0;return}function jp(a,b){a=a|0;b=b|0;var d=0;d=i;b=19312;while(1)if(!(c[b>>2]|0))break;else b=b+4|0;Ri(a,19312,b-19312>>2);i=d;return}function kp(b,c){b=b|0;c=c|0;var d=0;c=i;a[b>>0]=10;d=b+1|0;a[d+0>>0]=a[19336]|0;a[d+1>>0]=a[19337]|0;a[d+2>>0]=a[19338]|0;a[d+3>>0]=a[19339]|0;a[d+4>>0]=a[19340]|0;a[b+6>>0]=0;i=c;return}function lp(a,b){a=a|0;b=b|0;var d=0;d=i;b=19344;while(1)if(!(c[b>>2]|0))break;else b=b+4|0;Ri(a,19344,b-19344>>2);i=d;return}function mp(b){b=b|0;var d=0;b=i;if(a[19376]|0){d=c[4842]|0;i=b;return d|0}if(!(Fa(19376)|0)){d=c[4842]|0;i=b;return d|0}if((a[26544]|0)==0?(Fa(26544)|0)!=0:0){qr(26376,0,168)|0;eb(245,0,o|0)|0;Vc(26544)}Ji(26376,26552,6);Ji(26388,26560,6);Ji(26400,26568,7);Ji(26412,26576,9);Ji(26424,26592,8);Ji(26436,26608,6);Ji(26448,26616,8);Ji(26460,26632,3);Ji(26472,26640,3);Ji(26484,26648,3);Ji(26496,26656,3);Ji(26508,26664,3);Ji(26520,26672,3);Ji(26532,26680,3);c[4842]=26376;Vc(19376);d=c[4842]|0;i=b;return d|0}function np(b){b=b|0;var d=0;b=i;if(a[19392]|0){d=c[4846]|0;i=b;return d|0}if(!(Fa(19392)|0)){d=c[4846]|0;i=b;return d|0}if((a[26008]|0)==0?(Fa(26008)|0)!=0:0){qr(25840,0,168)|0;eb(246,0,o|0)|0;Vc(26008)}Vi(25840,26016);Vi(25852,26048);Vi(25864,26080);Vi(25876,26112);Vi(25888,26152);Vi(25900,26192);Vi(25912,26224);Vi(25924,26264);Vi(25936,26280);Vi(25948,26296);Vi(25960,26312);Vi(25972,26328);Vi(25984,26344);Vi(25996,26360);c[4846]=25840;Vc(19392);d=c[4846]|0;i=b;return d|0}function op(b){b=b|0;var d=0;b=i;if(a[19408]|0){d=c[4850]|0;i=b;return d|0}if(!(Fa(19408)|0)){d=c[4850]|0;i=b;return d|0}if((a[25616]|0)==0?(Fa(25616)|0)!=0:0){qr(25328,0,288)|0;eb(247,0,o|0)|0;Vc(25616)}Ji(25328,25624,7);Ji(25340,25632,8);Ji(25352,25648,5);Ji(25364,25656,5);Ji(25376,25664,3);Ji(25388,25672,4);Ji(25400,25680,4);Ji(25412,25688,6);Ji(25424,25696,9);Ji(25436,25712,7);Ji(25448,25720,8);Ji(25460,25736,8);Ji(25472,25752,3);Ji(25484,25760,3);Ji(25496,25768,3);Ji(25508,25776,3);Ji(25520,25664,3);Ji(25532,25784,3);Ji(25544,25792,3);Ji(25556,25800,3);Ji(25568,25808,3);Ji(25580,25816,3);Ji(25592,25824,3);Ji(25604,25832,3);c[4850]=25328;Vc(19408);d=c[4850]|0;i=b;return d|0}function pp(b){b=b|0;var d=0;b=i;if(a[19424]|0){d=c[4854]|0;i=b;return d|0}if(!(Fa(19424)|0)){d=c[4854]|0;i=b;return d|0}if((a[24776]|0)==0?(Fa(24776)|0)!=0:0){qr(24488,0,288)|0;eb(248,0,o|0)|0;Vc(24776)}Vi(24488,24784);Vi(24500,24816);Vi(24512,24856);Vi(24524,24880);Vi(24536,25200);Vi(24548,24904);Vi(24560,24928);Vi(24572,24952);Vi(24584,24984);Vi(24596,25024);Vi(24608,25056);Vi(24620,25096);Vi(24632,25136);Vi(24644,25152);Vi(24656,25168);Vi(24668,25184);Vi(24680,25200);Vi(24692,25216);Vi(24704,25232);Vi(24716,25248);Vi(24728,25264);Vi(24740,25280);Vi(24752,25296);Vi(24764,25312);c[4854]=24488;Vc(19424);d=c[4854]|0;i=b;return d|0}function qp(b){b=b|0;var d=0;b=i;if(a[19440]|0){d=c[4858]|0;i=b;return d|0}if(!(Fa(19440)|0)){d=c[4858]|0;i=b;return d|0}if((a[24464]|0)==0?(Fa(24464)|0)!=0:0){qr(24176,0,288)|0;eb(249,0,o|0)|0;Vc(24464)}Ji(24176,24472,2);Ji(24188,24480,2);c[4858]=24176;Vc(19440);d=c[4858]|0;i=b;return d|0}function rp(b){b=b|0;var d=0;b=i;if(a[19456]|0){d=c[4862]|0;i=b;return d|0}if(!(Fa(19456)|0)){d=c[4862]|0;i=b;return d|0}if((a[24136]|0)==0?(Fa(24136)|0)!=0:0){qr(23848,0,288)|0;eb(250,0,o|0)|0;Vc(24136)}Vi(23848,24144);Vi(23860,24160);c[4862]=23848;Vc(19456);d=c[4862]|0;i=b;return d|0}function sp(b){b=b|0;var c=0,d=0;b=i;if(a[19480]|0){i=b;return 19464}if(!(Fa(19480)|0)){i=b;return 19464}a[19464]=16;c=19465;d=c;a[d>>0]=37;a[d+1>>0]=109;a[d+2>>0]=47;a[d+3>>0]=37;c=c+4|0;a[c>>0]=100;a[c+1>>0]=47;a[c+2>>0]=37;a[c+3>>0]=121;a[19473]=0;eb(251,19464,o|0)|0;Vc(19480);i=b;return 19464}function tp(b){b=b|0;var d=0;b=i;if(a[19504]|0){i=b;return 19488}if(!(Fa(19504)|0)){i=b;return 19488}else d=19512;while(1)if(!(c[d>>2]|0))break;else d=d+4|0;Ri(19488,19512,d-19512>>2);eb(252,19488,o|0)|0;Vc(19504);i=b;return 19488}function up(b){b=b|0;var c=0,d=0;b=i;if(a[19568]|0){i=b;return 19552}if(!(Fa(19568)|0)){i=b;return 19552}a[19552]=16;c=19553;d=c;a[d>>0]=37;a[d+1>>0]=72;a[d+2>>0]=58;a[d+3>>0]=37;c=c+4|0;a[c>>0]=77;a[c+1>>0]=58;a[c+2>>0]=37;a[c+3>>0]=83;a[19561]=0;eb(251,19552,o|0)|0;Vc(19568);i=b;return 19552}function vp(b){b=b|0;var d=0;b=i;if(a[19592]|0){i=b;return 19576}if(!(Fa(19592)|0)){i=b;return 19576}else d=19600;while(1)if(!(c[d>>2]|0))break;else d=d+4|0;Ri(19576,19600,d-19600>>2);eb(252,19576,o|0)|0;Vc(19592);i=b;return 19576}function wp(b){b=b|0;var d=0,e=0,f=0,g=0;b=i;if(a[19656]|0){i=b;return 19640}if(!(Fa(19656)|0)){i=b;return 19640}e=$p(32)|0;c[4912]=e;c[4910]=33;c[4911]=20;g=e+0|0;f=19664;d=g+20|0;do{a[g>>0]=a[f>>0]|0;g=g+1|0;f=f+1|0}while((g|0)<(d|0));a[e+20>>0]=0;eb(251,19640,o|0)|0;Vc(19656);i=b;return 19640}function xp(b){b=b|0;var d=0;b=i;if(a[19704]|0){i=b;return 19688}if(!(Fa(19704)|0)){i=b;return 19688}else d=19712;while(1)if(!(c[d>>2]|0))break;else d=d+4|0;Ri(19688,19712,d-19712>>2);eb(252,19688,o|0)|0;Vc(19704);i=b;return 19688}function yp(b){b=b|0;var d=0,e=0,f=0,g=0;b=i;if(a[19816]|0){i=b;return 19800}if(!(Fa(19816)|0)){i=b;return 19800}e=$p(16)|0;c[4952]=e;c[4950]=17;c[4951]=11;g=e+0|0;f=19824;d=g+11|0;do{a[g>>0]=a[f>>0]|0;g=g+1|0;f=f+1|0}while((g|0)<(d|0));a[e+11>>0]=0;eb(251,19800,o|0)|0;Vc(19816);i=b;return 19800}function zp(b){b=b|0;var d=0;b=i;if(a[19856]|0){i=b;return 19840}if(!(Fa(19856)|0)){i=b;return 19840}else d=19864;while(1)if(!(c[d>>2]|0))break;else d=d+4|0;Ri(19840,19864,d-19864>>2);eb(252,19840,o|0)|0;Vc(19856);i=b;return 19840}function Ap(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0.0;e=i;i=i+16|0;f=e;do if((a|0)!=(b|0)){g=Uc()|0;h=c[g>>2]|0;c[g>>2]=0;Dk()|0;j=+hr(a,f);a=c[g>>2]|0;if(!a)c[g>>2]=h;if((c[f>>2]|0)!=(b|0)){c[d>>2]=4;j=0.0;break}if((a|0)==34)c[d>>2]=4}else{c[d>>2]=4;j=0.0}while(0);i=e;return+j}function Bp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0.0;e=i;i=i+16|0;f=e;do if((a|0)!=(b|0)){g=Uc()|0;h=c[g>>2]|0;c[g>>2]=0;Dk()|0;j=+hr(a,f);a=c[g>>2]|0;if(!a)c[g>>2]=h;if((c[f>>2]|0)!=(b|0)){c[d>>2]=4;j=0.0;break}if((a|0)==34)c[d>>2]=4}else{c[d>>2]=4;j=0.0}while(0);i=e;return+j}function Cp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0.0;e=i;i=i+16|0;f=e;if((a|0)==(b|0)){c[d>>2]=4;j=0.0;i=e;return+j}g=Uc()|0;h=c[g>>2]|0;c[g>>2]=0;Dk()|0;j=+hr(a,f);a=c[g>>2]|0;if(!a)c[g>>2]=h;if((c[f>>2]|0)!=(b|0)){c[d>>2]=4;j=0.0;i=e;return+j}if((a|0)==34)c[d>>2]=4;i=e;return+j}function Dp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;i=i+16|0;h=g;do if((b|0)!=(d|0)){if((a[b>>0]|0)==45){c[e>>2]=4;e=0;f=0;break}j=Uc()|0;k=c[j>>2]|0;c[j>>2]=0;Dk()|0;f=Qp(b,h,f)|0;b=c[j>>2]|0;if(!b)c[j>>2]=k;if((c[h>>2]|0)!=(d|0)){c[e>>2]=4;e=0;f=0;break}if((b|0)==34){c[e>>2]=4;e=-1;f=-1}else e=H}else{c[e>>2]=4;e=0;f=0}while(0);H=e;i=g;return f|0}function Ep(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;h=k;if((b|0)==(d|0)){c[e>>2]=4;l=0;i=k;return l|0}if((a[b>>0]|0)==45){c[e>>2]=4;l=0;i=k;return l|0}j=Uc()|0;g=c[j>>2]|0;c[j>>2]=0;Dk()|0;l=Qp(b,h,f)|0;f=H;b=c[j>>2]|0;if(!b)c[j>>2]=g;if((c[h>>2]|0)!=(d|0)){c[e>>2]=4;l=0;i=k;return l|0}if((b|0)==34|(f>>>0>0|(f|0)==0&l>>>0>4294967295)){c[e>>2]=4;l=-1;i=k;return l|0}else{i=k;return l|0}return 0}function Fp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;h=k;if((b|0)==(d|0)){c[e>>2]=4;l=0;i=k;return l|0}if((a[b>>0]|0)==45){c[e>>2]=4;l=0;i=k;return l|0}j=Uc()|0;g=c[j>>2]|0;c[j>>2]=0;Dk()|0;l=Qp(b,h,f)|0;f=H;b=c[j>>2]|0;if(!b)c[j>>2]=g;if((c[h>>2]|0)!=(d|0)){c[e>>2]=4;l=0;i=k;return l|0}if((b|0)==34|(f>>>0>0|(f|0)==0&l>>>0>4294967295)){c[e>>2]=4;l=-1;i=k;return l|0}else{i=k;return l|0}return 0}function Gp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;h=k;if((b|0)==(d|0)){c[e>>2]=4;l=0;i=k;return l|0}if((a[b>>0]|0)==45){c[e>>2]=4;l=0;i=k;return l|0}j=Uc()|0;g=c[j>>2]|0;c[j>>2]=0;Dk()|0;l=Qp(b,h,f)|0;f=H;b=c[j>>2]|0;if(!b)c[j>>2]=g;if((c[h>>2]|0)!=(d|0)){c[e>>2]=4;l=0;i=k;return l|0}if((b|0)==34|(f>>>0>0|(f|0)==0&l>>>0>65535)){c[e>>2]=4;l=-1;i=k;return l|0}else{l=l&65535;i=k;return l|0}return 0}function Hp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;j=i;i=i+16|0;g=j;if((a|0)==(b|0)){c[d>>2]=4;e=0;k=0;H=e;i=j;return k|0}h=Uc()|0;f=c[h>>2]|0;c[h>>2]=0;Dk()|0;e=Rp(a,g,e)|0;a=H;k=c[h>>2]|0;if(!k)c[h>>2]=f;if((c[g>>2]|0)!=(b|0)){c[d>>2]=4;e=0;k=0;H=e;i=j;return k|0}if((k|0)==34){c[d>>2]=4;k=(a|0)>0|(a|0)==0&e>>>0>0;H=k?2147483647:-2147483648;i=j;return(k?-1:0)|0}else{k=e;H=a;i=j;return k|0}return 0}function Ip(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;j=i;i=i+16|0;g=j;if((a|0)==(b|0)){c[d>>2]=4;k=0;i=j;return k|0}h=Uc()|0;f=c[h>>2]|0;c[h>>2]=0;Dk()|0;e=Rp(a,g,e)|0;a=H;k=c[h>>2]|0;if(!k)c[h>>2]=f;if((c[g>>2]|0)!=(b|0)){c[d>>2]=4;k=0;i=j;return k|0}do if((k|0)==34){c[d>>2]=4;if((a|0)>0|(a|0)==0&e>>>0>0){k=2147483647;i=j;return k|0}}else{if((a|0)<-1|(a|0)==-1&e>>>0<2147483648){c[d>>2]=4;break}if((a|0)>0|(a|0)==0&e>>>0>2147483647){c[d>>2]=4;k=2147483647;i=j;return k|0}else{k=e;i=j;return k|0}}while(0);k=-2147483648;i=j;return k|0}function Jp(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;e=c[b>>2]|0;if(!e){i=d;return}f=b+4|0;g=c[f>>2]|0;if((g|0)!=(e|0))c[f>>2]=g+(~((g+ -4+(0-e)|0)>>>2)<<2);if((b+16|0)==(e|0)){a[b+128>>0]=0;i=d;return}else{Uq(e);i=d;return}}function Kp(b){b=b|0;b=i;if(a[24124]&1)Uq(c[6033]|0);if(a[24112]&1)Uq(c[6030]|0);if(a[24100]&1)Uq(c[6027]|0);if(a[24088]&1)Uq(c[6024]|0);if(a[24076]&1)Uq(c[6021]|0);if(a[24064]&1)Uq(c[6018]|0);if(a[24052]&1)Uq(c[6015]|0);if(a[24040]&1)Uq(c[6012]|0);if(a[24028]&1)Uq(c[6009]|0);if(a[24016]&1)Uq(c[6006]|0);if(a[24004]&1)Uq(c[6003]|0);if(a[23992]&1)Uq(c[6e3]|0);if(a[23980]&1)Uq(c[5997]|0);if(a[23968]&1)Uq(c[5994]|0);if(a[23956]&1)Uq(c[5991]|0);if(a[23944]&1)Uq(c[5988]|0);if(a[23932]&1)Uq(c[5985]|0);if(a[23920]&1)Uq(c[5982]|0);if(a[23908]&1)Uq(c[5979]|0);if(a[23896]&1)Uq(c[5976]|0);if(a[23884]&1)Uq(c[5973]|0);if(a[23872]&1)Uq(c[5970]|0);if(a[23860]&1)Uq(c[5967]|0);if(!(a[23848]&1)){i=b;return}Uq(c[5964]|0);i=b;return}function Lp(b){b=b|0;b=i;if(a[24452]&1)Uq(c[6115]|0);if(a[24440]&1)Uq(c[6112]|0);if(a[24428]&1)Uq(c[6109]|0);if(a[24416]&1)Uq(c[6106]|0);if(a[24404]&1)Uq(c[6103]|0);if(a[24392]&1)Uq(c[6100]|0);if(a[24380]&1)Uq(c[6097]|0);if(a[24368]&1)Uq(c[6094]|0);if(a[24356]&1)Uq(c[6091]|0);if(a[24344]&1)Uq(c[6088]|0);if(a[24332]&1)Uq(c[6085]|0);if(a[24320]&1)Uq(c[6082]|0);if(a[24308]&1)Uq(c[6079]|0);if(a[24296]&1)Uq(c[6076]|0);if(a[24284]&1)Uq(c[6073]|0);if(a[24272]&1)Uq(c[6070]|0);if(a[24260]&1)Uq(c[6067]|0);if(a[24248]&1)Uq(c[6064]|0);if(a[24236]&1)Uq(c[6061]|0);if(a[24224]&1)Uq(c[6058]|0);if(a[24212]&1)Uq(c[6055]|0);if(a[24200]&1)Uq(c[6052]|0);if(a[24188]&1)Uq(c[6049]|0);if(!(a[24176]&1)){i=b;return}Uq(c[6046]|0);i=b;return} - - - -function Mp(b){b=b|0;b=i;if(a[24764]&1)Uq(c[6193]|0);if(a[24752]&1)Uq(c[6190]|0);if(a[24740]&1)Uq(c[6187]|0);if(a[24728]&1)Uq(c[6184]|0);if(a[24716]&1)Uq(c[6181]|0);if(a[24704]&1)Uq(c[6178]|0);if(a[24692]&1)Uq(c[6175]|0);if(a[24680]&1)Uq(c[6172]|0);if(a[24668]&1)Uq(c[6169]|0);if(a[24656]&1)Uq(c[6166]|0);if(a[24644]&1)Uq(c[6163]|0);if(a[24632]&1)Uq(c[6160]|0);if(a[24620]&1)Uq(c[6157]|0);if(a[24608]&1)Uq(c[6154]|0);if(a[24596]&1)Uq(c[6151]|0);if(a[24584]&1)Uq(c[6148]|0);if(a[24572]&1)Uq(c[6145]|0);if(a[24560]&1)Uq(c[6142]|0);if(a[24548]&1)Uq(c[6139]|0);if(a[24536]&1)Uq(c[6136]|0);if(a[24524]&1)Uq(c[6133]|0);if(a[24512]&1)Uq(c[6130]|0);if(a[24500]&1)Uq(c[6127]|0);if(!(a[24488]&1)){i=b;return}Uq(c[6124]|0);i=b;return}function Np(b){b=b|0;b=i;if(a[25604]&1)Uq(c[6403]|0);if(a[25592]&1)Uq(c[6400]|0);if(a[25580]&1)Uq(c[6397]|0);if(a[25568]&1)Uq(c[6394]|0);if(a[25556]&1)Uq(c[6391]|0);if(a[25544]&1)Uq(c[6388]|0);if(a[25532]&1)Uq(c[6385]|0);if(a[25520]&1)Uq(c[6382]|0);if(a[25508]&1)Uq(c[6379]|0);if(a[25496]&1)Uq(c[6376]|0);if(a[25484]&1)Uq(c[6373]|0);if(a[25472]&1)Uq(c[6370]|0);if(a[25460]&1)Uq(c[6367]|0);if(a[25448]&1)Uq(c[6364]|0);if(a[25436]&1)Uq(c[6361]|0);if(a[25424]&1)Uq(c[6358]|0);if(a[25412]&1)Uq(c[6355]|0);if(a[25400]&1)Uq(c[6352]|0);if(a[25388]&1)Uq(c[6349]|0);if(a[25376]&1)Uq(c[6346]|0);if(a[25364]&1)Uq(c[6343]|0);if(a[25352]&1)Uq(c[6340]|0);if(a[25340]&1)Uq(c[6337]|0);if(!(a[25328]&1)){i=b;return}Uq(c[6334]|0);i=b;return}function Op(b){b=b|0;b=i;if(a[25996]&1)Uq(c[6501]|0);if(a[25984]&1)Uq(c[6498]|0);if(a[25972]&1)Uq(c[6495]|0);if(a[25960]&1)Uq(c[6492]|0);if(a[25948]&1)Uq(c[6489]|0);if(a[25936]&1)Uq(c[6486]|0);if(a[25924]&1)Uq(c[6483]|0);if(a[25912]&1)Uq(c[6480]|0);if(a[25900]&1)Uq(c[6477]|0);if(a[25888]&1)Uq(c[6474]|0);if(a[25876]&1)Uq(c[6471]|0);if(a[25864]&1)Uq(c[6468]|0);if(a[25852]&1)Uq(c[6465]|0);if(!(a[25840]&1)){i=b;return}Uq(c[6462]|0);i=b;return}function Pp(b){b=b|0;b=i;if(a[26532]&1)Uq(c[6635]|0);if(a[26520]&1)Uq(c[6632]|0);if(a[26508]&1)Uq(c[6629]|0);if(a[26496]&1)Uq(c[6626]|0);if(a[26484]&1)Uq(c[6623]|0);if(a[26472]&1)Uq(c[6620]|0);if(a[26460]&1)Uq(c[6617]|0);if(a[26448]&1)Uq(c[6614]|0);if(a[26436]&1)Uq(c[6611]|0);if(a[26424]&1)Uq(c[6608]|0);if(a[26412]&1)Uq(c[6605]|0);if(a[26400]&1)Uq(c[6602]|0);if(a[26388]&1)Uq(c[6599]|0);if(!(a[26376]&1)){i=b;return}Uq(c[6596]|0);i=b;return}function Qp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+112|0;g=e;c[g>>2]=0;f=g+4|0;c[f>>2]=a;c[g+44>>2]=a;if((a|0)<0){c[g+8>>2]=-1;j=-1}else{j=a+2147483647|0;c[g+8>>2]=j}c[g+76>>2]=-1;c[g+104>>2]=0;h=g+108|0;c[h>>2]=j-a;c[g+100>>2]=j;d=Xq(g,d,1,-1,-1)|0;j=H;if(!b){H=j;i=e;return d|0}c[b>>2]=a+((c[f>>2]|0)+(c[h>>2]|0)-(c[g+8>>2]|0));H=j;i=e;return d|0}function Rp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+112|0;g=e;c[g>>2]=0;f=g+4|0;c[f>>2]=a;c[g+44>>2]=a;if((a|0)<0){c[g+8>>2]=-1;j=-1}else{j=a+2147483647|0;c[g+8>>2]=j}c[g+76>>2]=-1;c[g+104>>2]=0;h=g+108|0;c[h>>2]=j-a;c[g+100>>2]=j;d=Xq(g,d,1,0,-2147483648)|0;j=H;if(!b){H=j;i=e;return d|0}c[b>>2]=a+((c[f>>2]|0)+(c[h>>2]|0)-(c[g+8>>2]|0));H=j;i=e;return d|0}function Sp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;i=i+16|0;h=g;c[h>>2]=b;f=(f|0)==0?26904:f;j=c[f>>2]|0;a:do if(!d){if(!j){k=0;i=g;return k|0}}else{if(!b)c[h>>2]=h;else h=b;if(!e){k=-2;i=g;return k|0}do if(!j){b=a[d>>0]|0;j=b&255;if(b<<24>>24>-1){c[h>>2]=j;k=b<<24>>24!=0&1;i=g;return k|0}else{j=j+ -194|0;if(j>>>0>50)break a;b=e+ -1|0;j=c[26688+(j<<2)>>2]|0;d=d+1|0;break}}else b=e;while(0);b:do if(b){k=a[d>>0]|0;l=(k&255)>>>3;if((l+ -16|l+(j>>26))>>>0>7)break a;while(1){d=d+1|0;j=(k&255)+ -128|j<<6;b=b+ -1|0;if((j|0)>=0)break;if(!b)break b;k=a[d>>0]|0;if(((k&255)+ -128|0)>>>0>63)break a}c[f>>2]=0;c[h>>2]=j;l=e-b|0;i=g;return l|0}while(0);c[f>>2]=j;l=-2;i=g;return l|0}while(0);c[f>>2]=0;c[(Uc()|0)>>2]=84;l=-1;i=g;return l|0}function Tp(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;h=i;k=c[e>>2]|0;if((g|0)!=0?(l=c[g>>2]|0,(l|0)!=0):0)if(!b){j=f;g=16}else{c[g>>2]=0;j=f;g=36}else if(!b){j=f;g=7}else{j=f;g=6}a:while(1)if((g|0)==6){if(!j){g=26;break}while(1){g=a[k>>0]|0;b:do if(((g&255)+ -1|0)>>>0<127?(k&3|0)==0&j>>>0>4:0){do{g=c[k>>2]|0;if((g+ -16843009|g)&-2139062144){g=g&255;break b}c[b>>2]=g&255;c[b+4>>2]=d[k+1>>0];c[b+8>>2]=d[k+2>>0];l=k;k=k+4|0;m=b;b=b+16|0;c[m+12>>2]=d[l+3>>0];j=j+ -4|0}while(j>>>0>4);g=a[k>>0]|0}while(0);l=g&255;if((l+ -1|0)>>>0>=127)break;k=k+1|0;c[b>>2]=l;j=j+ -1|0;if(!j){g=26;break a}else b=b+4|0}l=l+ -194|0;if(l>>>0>50){l=g;g=48;break}l=c[26688+(l<<2)>>2]|0;k=k+1|0;g=36;continue}else if((g|0)==7){l=a[k>>0]|0;if(((l&255)+ -1|0)>>>0<127?(k&3|0)==0:0){l=c[k>>2]|0;if(!((l+ -16843009|l)&-2139062144))do{k=k+4|0;j=j+ -4|0;l=c[k>>2]|0}while(((l+ -16843009|l)&-2139062144|0)==0);g=l&255;l=l&255}else g=l;l=l&255;if((l+ -1|0)>>>0<127){j=j+ -1|0;k=k+1|0;g=7;continue}l=l+ -194|0;if(l>>>0>50){l=g;g=48;break}l=c[26688+(l<<2)>>2]|0;k=k+1|0;g=16;continue}else if((g|0)==16){m=(d[k>>0]|0)>>>3;if((m+ -16|m+(l>>26))>>>0>7){g=17;break}g=k+1|0;if(l&33554432){if(((d[g>>0]|0)+ -128|0)>>>0>63){g=20;break}g=k+2|0;if(!(l&524288))k=g;else{if(((d[g>>0]|0)+ -128|0)>>>0>63){g=23;break}k=k+3|0}}else k=g;j=j+ -1|0;g=7;continue}else if((g|0)==36){m=d[k>>0]|0;g=m>>>3;if((g+ -16|g+(l>>26))>>>0>7){g=37;break}g=k+1|0;l=m+ -128|l<<6;if((l|0)<0){m=(d[g>>0]|0)+ -128|0;if(m>>>0>63){g=40;break}g=k+2|0;l=m|l<<6;if((l|0)<0){g=(d[g>>0]|0)+ -128|0;if(g>>>0>63){g=43;break}l=g|l<<6;k=k+3|0}else k=g}else k=g;c[b>>2]=l;b=b+4|0;j=j+ -1|0;g=6;continue}if((g|0)==17){k=k+ -1|0;g=46}else if((g|0)==20){k=k+ -1|0;g=46}else if((g|0)==23){k=k+ -1|0;g=46}else if((g|0)==26){c[e>>2]=k;m=f;i=h;return m|0}else if((g|0)==37){k=k+ -1|0;g=46}else if((g|0)==40){k=k+ -1|0;g=46}else if((g|0)==43){k=k+ -1|0;g=46}if((g|0)==46)if(!l){l=a[k>>0]|0;g=48}if((g|0)==48)if(!(l<<24>>24)){if(b){c[b>>2]=0;c[e>>2]=0}m=f-j|0;i=h;return m|0}c[(Uc()|0)>>2]=84;if(!b){m=-1;i=h;return m|0}c[e>>2]=k;m=-1;i=h;return m|0}function Up(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=d;d=Vp(a,b,f)|0;i=e;return d|0}function Vp(e,f,j){e=e|0;f=f|0;j=j|0;var 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,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0.0;l=i;i=i+416|0;q=l+128|0;o=l+120|0;m=l+145|0;n=l+112|0;p=l+144|0;r=l;s=r+0|0;t=s+112|0;do{c[s>>2]=0;s=s+4|0}while((s|0)<(t|0));c[r+32>>2]=26;c[r+44>>2]=e;c[r+76>>2]=-1;c[r+84>>2]=e;C=a[f>>0]|0;if(!(C<<24>>24)){O=0;i=l;return O|0}A=r+4|0;e=r+100|0;z=r+108|0;B=r+8|0;v=m+10|0;u=m+33|0;t=o+4|0;x=m+46|0;w=m+94|0;y=r+104|0;s=0;D=0;J=0;I=0;a:while(1){b:do if(C<<24>>24!=32?((C&255)+ -9|0)>>>0>=5:0){C=C<<24>>24==37;c:do if(C){G=f+1|0;E=a[G>>0]|0;do if(E<<24>>24==42){C=0;G=f+2|0}else if(E<<24>>24==37)break c;else{E=(E&255)+ -48|0;if(E>>>0<10?(a[f+2>>0]|0)==36:0){c[q>>2]=c[j>>2];while(1){O=c[q>>2]|0;C=c[O>>2]|0;c[q>>2]=O+4;if(E>>>0>1)E=E+ -1|0;else break}G=f+3|0;break}O=c[j>>2]|0;C=c[O>>2]|0;c[j>>2]=O+4}while(0);F=a[G>>0]|0;f=F&255;if((f+ -48|0)>>>0<10){E=0;do{E=(E*10|0)+ -48+f|0;G=G+1|0;F=a[G>>0]|0;f=F&255}while((f+ -48|0)>>>0<10)}else E=0;if(F<<24>>24==109){G=G+1|0;F=a[G>>0]|0;f=(C|0)!=0&1;J=0;I=0}else f=0;K=G+1|0;switch(F&255|0){case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{F=0;break};case 106:{G=K;F=3;break};case 108:{F=(a[K>>0]|0)==108;G=F?G+2|0:K;F=F?3:1;break};case 116:case 122:{G=K;F=1;break};case 104:{F=(a[K>>0]|0)==104;G=F?G+2|0:K;F=F?-2:-1;break};case 76:{G=K;F=2;break};default:{k=169;break a}}M=d[G>>0]|0;K=(M&47|0)==3;M=K?M|32:M;K=K?1:F;if((M|0)==110){if(!C)break b;switch(K|0){case 1:{c[C>>2]=D;break b};case-2:{a[C>>0]=D;break b};case 3:{O=C;c[O>>2]=D;c[O+4>>2]=((D|0)<0)<<31>>31;break b};case-1:{b[C>>1]=D;break b};case 0:{c[C>>2]=D;break b};default:break b}}else if((M|0)==99)E=(E|0)<1?1:E;else if((M|0)!=91){c[y>>2]=0;F=c[B>>2]|0;L=c[A>>2]|0;c[z>>2]=F-L;c[e>>2]=F;while(1){if(L>>>0>>0){c[A>>2]=L+1;F=d[L>>0]|0}else F=_q(r)|0;if(!((F|0)==32|(F+ -9|0)>>>0<5))break;L=c[A>>2]|0;F=c[e>>2]|0}F=c[A>>2]|0;if(c[e>>2]|0){F=F+ -1|0;c[A>>2]=F}D=(c[z>>2]|0)+D+F-(c[B>>2]|0)|0}c[y>>2]=E;L=c[B>>2]|0;F=c[A>>2]|0;O=L-F|0;c[z>>2]=O;if((E|0)!=0&(O|0)>(E|0))L=F+E|0;c[e>>2]=L;if(F>>>0>>0)c[A>>2]=F+1;else{if((_q(r)|0)<0){k=169;break a}L=c[e>>2]|0}if(L)c[A>>2]=(c[A>>2]|0)+ -1;d:do switch(M|0){case 111:{E=8;k=151;break};case 117:case 100:{E=10;k=151;break};case 105:{E=0;k=151;break};case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{P=+Yq(r,K,0);if((c[z>>2]|0)==((c[B>>2]|0)-(c[A>>2]|0)|0))break a;if(C)if(!K){g[C>>2]=P;break d}else if((K|0)==1){h[C>>3]=P;break d}else if((K|0)==2){h[C>>3]=P;break d}else break d;break};case 120:case 88:case 112:{E=16;k=151;break};case 91:case 99:case 115:{F=(M|0)==99;e:do if((M&239|0)==99){qr(m|0,-1,257)|0;a[m>>0]=0;if((M|0)==115){a[u>>0]=0;a[v+0>>0]=0;a[v+1>>0]=0;a[v+2>>0]=0;a[v+3>>0]=0;a[v+4>>0]=0}}else{O=G+1|0;N=(a[O>>0]|0)==94;M=N&1;G=N?G+2|0:O;qr(m|0,N&1|0,257)|0;a[m>>0]=0;N=a[G>>0]|0;if(N<<24>>24==93){M=(M^1)&255;a[w>>0]=M;G=G+1|0}else if(N<<24>>24==45){M=(M^1)&255;a[x>>0]=M;G=G+1|0}else M=(M^1)&255;while(1){O=a[G>>0]|0;if(O<<24>>24==93)break e;else if(!(O<<24>>24)){k=169;break a}else if(O<<24>>24==45){N=G+1|0;O=a[N>>0]|0;if(!(O<<24>>24==93|O<<24>>24==0)){G=a[G+ -1>>0]|0;if((G&255)<(O&255)){G=G&255;do{G=G+1|0;a[m+G>>0]=M;O=a[N>>0]|0}while((G|0)<(O&255|0));G=N}else G=N}else O=45}a[m+((O&255)+1)>>0]=M;G=G+1|0}}while(0);N=F?E+1|0:31;J=(K|0)==1;I=(f|0)!=0;f:do if(J){if(I){K=Tq(N<<2)|0;if(!K){J=0;I=K;k=169;break a}}else K=C;c[o>>2]=0;c[t>>2]=0;M=0;L=N;g:while(1){if(!K){N=I&(M|0)==(L|0);while(1){O=c[A>>2]|0;if(O>>>0<(c[e>>2]|0)>>>0){c[A>>2]=O+1;O=d[O>>0]|0}else O=_q(r)|0;if(!(a[m+(O+1)>>0]|0)){K=0;break g}a[p>>0]=O;O=Sp(n,p,1,o)|0;if((O|0)==-1){J=0;I=0;k=169;break a}else if((O|0)==-2)continue;if(N)break}}else{if(!I){k=105;break}while(1){while(1){N=c[A>>2]|0;if(N>>>0<(c[e>>2]|0)>>>0){c[A>>2]=N+1;N=d[N>>0]|0}else N=_q(r)|0;if(!(a[m+(N+1)>>0]|0))break g;a[p>>0]=N;N=Sp(n,p,1,o)|0;if((N|0)==-1){J=0;I=K;k=169;break a}else if((N|0)!=-2)break}c[K+(M<<2)>>2]=c[n>>2];M=M+1|0;if((M|0)==(L|0)){M=L;break}}}L=L<<1|1;N=Vq(K,L<<2)|0;if(!N){J=0;I=K;k=169;break a}K=N}h:do if((k|0)==105)while(1){k=0;while(1){L=c[A>>2]|0;if(L>>>0<(c[e>>2]|0)>>>0){c[A>>2]=L+1;L=d[L>>0]|0}else L=_q(r)|0;if(!(a[m+(L+1)>>0]|0))break h;a[p>>0]=L;L=Sp(n,p,1,o)|0;if((L|0)==-1){f=0;J=0;I=K;k=169;break a}else if((L|0)!=-2)break}c[K+(M<<2)>>2]=c[n>>2];M=M+1|0;k=105}while(0);if(!(c[o>>2]|0))L=0;else{J=0;I=K;k=169;break a}}else{if(I){L=Tq(N)|0;if(!L){J=0;I=0;k=169;break a}else{M=0;K=N}while(1){do{N=c[A>>2]|0;if(N>>>0<(c[e>>2]|0)>>>0){c[A>>2]=N+1;N=d[N>>0]|0}else N=_q(r)|0;if(!(a[m+(N+1)>>0]|0)){K=0;break f}a[L+M>>0]=N;M=M+1|0}while((M|0)!=(K|0));M=K<<1|1;N=Vq(L,M)|0;if(!N){J=L;I=0;k=169;break a}else{O=K;K=M;L=N;M=O}}}if(!C)while(1){K=c[A>>2]|0;if(K>>>0>>0){c[A>>2]=K+1;K=d[K>>0]|0}else K=_q(r)|0;if(!(a[m+(K+1)>>0]|0)){M=0;L=0;K=0;break f}L=c[e>>2]|0}else{M=0;while(1){K=c[A>>2]|0;if(K>>>0>>0){c[A>>2]=K+1;K=d[K>>0]|0}else K=_q(r)|0;if(!(a[m+(K+1)>>0]|0)){L=C;K=0;break f}a[C+M>>0]=K;L=c[e>>2]|0;M=M+1|0}}}while(0);N=c[A>>2]|0;if(c[e>>2]|0){N=N+ -1|0;c[A>>2]=N}N=N-(c[B>>2]|0)+(c[z>>2]|0)|0;if(!N){J=L;I=K;break a}if(!((N|0)==(E|0)|F^1)){J=L;I=K;break a}do if(I)if(J){c[C>>2]=K;break}else{c[C>>2]=L;break}while(0);if(F){J=L;I=K}else{if(K)c[K+(M<<2)>>2]=0;if(!L){J=0;I=K;break d}a[L+M>>0]=0;J=L;I=K}break};default:{}}while(0);i:do if((k|0)==151){k=0;E=Xq(r,E,0,-1,-1)|0;if((c[z>>2]|0)==((c[B>>2]|0)-(c[A>>2]|0)|0))break a;f=(C|0)==0;if(!((M|0)!=112|f)){c[C>>2]=E;break}if(!f)switch(K|0){case-2:{a[C>>0]=E;break i};case-1:{b[C>>1]=E;break i};case 0:{c[C>>2]=E;break i};case 1:{c[C>>2]=E;break i};case 3:{O=C;c[O>>2]=E;c[O+4>>2]=H;break i};default:break i}}while(0);s=((C|0)!=0&1)+s|0;D=(c[z>>2]|0)+D+(c[A>>2]|0)-(c[B>>2]|0)|0;break b}while(0);G=f+(C&1)|0;c[y>>2]=0;O=c[B>>2]|0;C=c[A>>2]|0;c[z>>2]=O-C;c[e>>2]=O;if(C>>>0>>0){c[A>>2]=C+1;C=d[C>>0]|0}else C=_q(r)|0;if((C|0)!=(d[G>>0]|0)){k=22;break a}D=D+1|0}else{G=f;k=5}while(0);if((k|0)==5){while(1){k=0;f=G+1|0;C=a[f>>0]|0;if(C<<24>>24==32){G=f;k=5;continue}if(((C&255)+ -9|0)>>>0<5){G=f;k=5}else break}c[y>>2]=0;f=c[B>>2]|0;C=c[A>>2]|0;c[z>>2]=f-C;c[e>>2]=f;while(1){if(C>>>0>>0){c[A>>2]=C+1;C=d[C>>0]|0}else C=_q(r)|0;if(!((C|0)==32|(C+ -9|0)>>>0<5))break;C=c[A>>2]|0;f=c[e>>2]|0}C=c[A>>2]|0;if(c[e>>2]|0){C=C+ -1|0;c[A>>2]=C}D=(c[z>>2]|0)+D+C-(c[B>>2]|0)|0}f=G+1|0;C=a[f>>0]|0;if(!(C<<24>>24)){k=172;break}}if((k|0)==172){i=l;return s|0}if((k|0)==22){if(c[e>>2]|0)c[A>>2]=(c[A>>2]|0)+ -1;if((C|0)<0){f=0;k=169}else{O=s;i=l;return O|0}}if((k|0)==169)s=(((s|0)==0)<<31>>31)+s|0;if(!f){O=s;i=l;return O|0}Uq(J);Uq(I);O=s;i=l;return O|0}function Wp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;g=b+84|0;f=c[g>>2]|0;k=e+256|0;j=f;o=(k|0)==0;a:do if((j&3|0)==0|o){m=k;n=f;l=4}else{m=k;n=f;while(1){if(!(a[n>>0]|0))break a;n=n+1|0;m=m+ -1|0;o=(m|0)==0;if((n&3|0)==0|o){l=4;break}}}while(0);b:do if((l|0)==4)if(!o){if(a[n>>0]|0){c:do if(m>>>0>3)do{o=c[n>>2]|0;if((o&-2139062144^-2139062144)&o+ -16843009)break c;n=n+4|0;m=m+ -4|0}while(m>>>0>3);while(0);if(!m)m=0;else while(1){if(!(a[n>>0]|0))break b;n=n+1|0;m=m+ -1|0;if(!m){m=0;break}}}}else m=0;while(0);l=(m|0)!=0?n:0;if(l)k=l-j|0;o=k>>>0>>0?k:e;nr(d|0,f|0,o|0)|0;c[b+4>>2]=f+o;n=f+k|0;c[b+8>>2]=n;c[g>>2]=n;i=h;return o|0}function Xp(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d>>2]=b;b=c[p>>2]|0;Ub(b|0,a|0,d|0)|0;Yc(10,b|0)|0;mc()}function Yp(){var a=0,b=0,d=0,e=0,f=0;a=i;i=i+16|0;b=a;a=a+12|0;if(yb(27096,2)|0)Xp(27104,b);d=qc(c[6772]|0)|0;if(!d)Xp(27072,b);d=c[d>>2]|0;if(!d)Xp(27072,b);f=d+48|0;e=c[f>>2]|0;f=c[f+4>>2]|0;if(!((e&-256|0)==1126902528&(f|0)==1129074247)){c[b>>2]=26920;Xp(27032,b)}if((e|0)==1126902529&(f|0)==1129074247)e=c[d+44>>2]|0;else e=d+80|0;c[a>>2]=e;f=c[d>>2]|0;d=c[f+4>>2]|0;if(Aq(27480,f,a)|0){f=c[a>>2]|0;f=md[c[(c[f>>2]|0)+8>>2]&127](f)|0;c[b>>2]=26920;c[b+4>>2]=d;c[b+8>>2]=f;Xp(26936,b)}else{c[b>>2]=26920;c[b+4>>2]=d;Xp(26984,b)}}function Zp(){var a=0;a=i;i=i+16|0;if(!(dc(27088,253)|0)){i=a;return}else Xp(27160,a)}function _p(a){a=a|0;var b=0;b=i;i=i+16|0;Uq(a);if(!(Wc(c[6772]|0,0)|0)){i=b;return}else Xp(27216,b)}function $p(a){a=a|0;var b=0,d=0;b=i;a=(a|0)==0?1:a;d=Tq(a)|0;if(d){i=b;return d|0}while(1){d=c[6860]|0;c[6860]=d+0;if(!d){a=4;break}qd[d&3]();d=Tq(a)|0;if(d){a=5;break}}if((a|0)==4){d=Wb(4)|0;c[d>>2]=27280;Zc(d|0,27328,220)}else if((a|0)==5){i=b;return d|0}return 0}function aq(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function bq(a){a=a|0;return}function cq(a){a=a|0;return 27296}function dq(a){a=a|0;var b=0;b=i;i=i+16|0;qd[a&3]();Xp(27344,b)}function eq(){var a=0,b=0;b=i;i=i+16|0;if(yb(27096,2)|0)Xp(27104,b);b=qc(c[6772]|0)|0;if(((b|0)!=0?(a=c[b>>2]|0,(a|0)!=0):0)?(b=a+48|0,(c[b>>2]&-256|0)==1126902528?(c[b+4>>2]|0)==1129074247:0):0)dq(c[a+12>>2]|0);b=c[6728]|0;c[6728]=b+0;dq(b)}function fq(a){a=a|0;return 27448}function gq(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27496;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function hq(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27496;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function iq(a){a=a|0;return c[a+4>>2]|0}function jq(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function kq(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function lq(a){a=a|0;return c[a+4>>2]|0}function mq(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27496;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function nq(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27496;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function oq(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function pq(a){a=a|0;return}function qq(a){a=a|0;return 27760}function rq(a){a=a|0;return}function sq(a){a=a|0;return}function tq(a){a=a|0;return}function uq(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function vq(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function wq(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function xq(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function yq(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function zq(a,b,c){a=a|0;b=b|0;c=c|0;return(a|0)==(b|0)|0}function Aq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+64|0;f=e;if((a|0)==(b|0)){h=1;i=e;return h|0}if(!b){h=0;i=e;return h|0}b=Hq(b,27928)|0;if(!b){h=0;i=e;return h|0}h=f+0|0;g=h+56|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(g|0));c[f>>2]=b;c[f+8>>2]=a;c[f+12>>2]=-1;c[f+48>>2]=1;xd[c[(c[b>>2]|0)+28>>2]&15](b,f,c[d>>2]|0,1);if((c[f+24>>2]|0)!=1){h=0;i=e;return h|0}c[d>>2]=c[f+16>>2];h=1;i=e;return h|0}function Bq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;g=b+16|0;h=c[g>>2]|0;if(!h){c[g>>2]=d;c[b+24>>2]=e;c[b+36>>2]=1;i=f;return}if((h|0)!=(d|0)){h=b+36|0;c[h>>2]=(c[h>>2]|0)+1;c[b+24>>2]=2;a[b+54>>0]=1;i=f;return}d=b+24|0;if((c[d>>2]|0)!=2){i=f;return}c[d>>2]=e;i=f;return}function Cq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;if((c[b+8>>2]|0)!=(a|0)){i=f;return}Bq(b,d,e);i=f;return}function Dq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;if((a|0)==(c[b+8>>2]|0)){Bq(b,d,e);i=f;return}else{a=c[a+8>>2]|0;xd[c[(c[a>>2]|0)+28>>2]&15](a,b,d,e);i=f;return}}function Eq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;g=c[a+4>>2]|0;h=g>>8;if(g&1)h=c[(c[d>>2]|0)+h>>2]|0;a=c[a>>2]|0;xd[c[(c[a>>2]|0)+28>>2]&15](a,b,d+h|0,(g&2|0)!=0?e:2);i=f;return}function Fq(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;if((b|0)==(c[d+8>>2]|0)){Bq(d,e,f);i=g;return}j=c[b+12>>2]|0;h=b+(j<<3)+16|0;Eq(b+16|0,d,e,f);if((j|0)<=1){i=g;return}j=d+54|0;b=b+24|0;while(1){Eq(b,d,e,f);if(a[j>>0]|0){f=7;break}b=b+8|0;if(b>>>0>=h>>>0){f=7;break}}if((f|0)==7){i=g;return}}function Gq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+64|0;h=e;c[d>>2]=c[c[d>>2]>>2];if(!((a|0)==(b|0)|(b|0)==28240))if(((b|0)!=0?(k=Hq(b,28040)|0,(k|0)!=0):0)?(c[k+8>>2]&~c[a+8>>2]|0)==0:0){b=c[a+12>>2]|0;k=k+12|0;if(!((b|0)==28224?1:(b|0)==(c[k>>2]|0)))if((((b|0)!=0?(g=Hq(b,27928)|0,(g|0)!=0):0)?(j=c[k>>2]|0,(j|0)!=0):0)?(f=Hq(j,27928)|0,(f|0)!=0):0){k=h+0|0;j=k+56|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(j|0));c[h>>2]=f;c[h+8>>2]=g;c[h+12>>2]=-1;c[h+48>>2]=1;xd[c[(c[f>>2]|0)+28>>2]&15](f,h,c[d>>2]|0,1);if((c[h+24>>2]|0)==1){c[d>>2]=c[h+16>>2];d=1}else d=0}else d=0;else d=1}else d=0;else d=1;i=e;return d|0}function Hq(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=i;i=i+64|0;m=f;g=c[d>>2]|0;h=d+(c[g+ -8>>2]|0)|0;g=c[g+ -4>>2]|0;c[m>>2]=e;c[m+4>>2]=d;c[m+8>>2]=27872;p=m+12|0;n=m+16|0;o=m+20|0;j=m+24|0;d=m+28|0;k=m+32|0;l=m+40|0;r=(g|0)==(e|0);e=p+0|0;q=e+40|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(q|0));b[p+40>>1]=0;a[p+42>>0]=0;do if(r){c[m+48>>2]=1;ud[c[(c[g>>2]|0)+20>>2]&31](g,m,h,h,1,0);d=(c[j>>2]|0)==1?h:0}else{hd[c[(c[g>>2]|0)+24>>2]&3](g,m,h,1,0);g=c[m+36>>2]|0;if(!g){if((c[l>>2]|0)!=1){d=0;break}if((c[d>>2]|0)!=1){d=0;break}d=(c[k>>2]|0)==1?c[o>>2]|0:0;break}else if((g|0)!=1){d=0;break}if((c[j>>2]|0)!=1){if(c[l>>2]|0){d=0;break}if((c[d>>2]|0)!=1){d=0;break}if((c[k>>2]|0)!=1){d=0;break}}d=c[n>>2]|0}while(0);i=f;return d|0}function Iq(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;a[b+53>>0]=1;if((c[b+4>>2]|0)!=(e|0)){i=g;return}a[b+52>>0]=1;e=b+16|0;h=c[e>>2]|0;if(!h){c[e>>2]=d;c[b+24>>2]=f;c[b+36>>2]=1;if(!((f|0)==1?(c[b+48>>2]|0)==1:0)){i=g;return}a[b+54>>0]=1;i=g;return}if((h|0)!=(d|0)){h=b+36|0;c[h>>2]=(c[h>>2]|0)+1;a[b+54>>0]=1;i=g;return}d=b+24|0;e=c[d>>2]|0;if((e|0)==2)c[d>>2]=f;else f=e;if(!((f|0)==1?(c[b+48>>2]|0)==1:0)){i=g;return}a[b+54>>0]=1;i=g;return}function Jq(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=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=i;if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)!=(e|0)){i=h;return}e=d+28|0;if((c[e>>2]|0)==1){i=h;return}c[e>>2]=f;i=h;return}if((b|0)!=(c[d>>2]|0)){u=c[b+12>>2]|0;m=b+(u<<3)+16|0;Lq(b+16|0,d,e,f,g);n=b+24|0;if((u|0)<=1){i=h;return}p=c[b+8>>2]|0;if((p&2|0)==0?(o=d+36|0,(c[o>>2]|0)!=1):0){if(!(p&1)){q=d+54|0;p=n;while(1){if(a[q>>0]|0){p=43;break}if((c[o>>2]|0)==1){p=43;break}Lq(p,d,e,f,g);p=p+8|0;if(p>>>0>=m>>>0){p=43;break}}if((p|0)==43){i=h;return}}p=d+24|0;q=d+54|0;r=n;while(1){if(a[q>>0]|0){p=43;break}if((c[o>>2]|0)==1?(c[p>>2]|0)==1:0){p=43;break}Lq(r,d,e,f,g);r=r+8|0;if(r>>>0>=m>>>0){p=43;break}}if((p|0)==43){i=h;return}}o=d+54|0;while(1){if(a[o>>0]|0){p=43;break}Lq(n,d,e,f,g);n=n+8|0;if(n>>>0>=m>>>0){p=43;break}}if((p|0)==43){i=h;return}}if((c[d+16>>2]|0)!=(e|0)?(j=d+20|0,(c[j>>2]|0)!=(e|0)):0){c[d+32>>2]=f;m=d+44|0;if((c[m>>2]|0)==4){i=h;return}u=c[b+12>>2]|0;t=b+(u<<3)+16|0;a:do if((u|0)>0){o=d+52|0;n=d+53|0;r=d+54|0;q=b+8|0;p=d+24|0;u=0;s=0;b=b+16|0;b:do{a[o>>0]=0;a[n>>0]=0;Kq(b,d,e,e,1,g);if(a[r>>0]|0)break;do if(a[n>>0]|0){if(!(a[o>>0]|0))if(!(c[q>>2]&1)){s=1;break b}else{s=1;break}if((c[p>>2]|0)==1){p=25;break a}if(!(c[q>>2]&2)){p=25;break a}else{u=1;s=1}}while(0);b=b+8|0}while(b>>>0>>0);if(u){l=s;p=24}else{k=s;p=21}}else{k=0;p=21}while(0);if((p|0)==21){c[j>>2]=e;u=d+40|0;c[u>>2]=(c[u>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0){a[d+54>>0]=1;if(k)p=25;else p=26}else{l=k;p=24}}if((p|0)==24)if(l)p=25;else p=26;if((p|0)==25){c[m>>2]=3;i=h;return}else if((p|0)==26){c[m>>2]=4;i=h;return}}if((f|0)!=1){i=h;return}c[d+32>>2]=1;i=h;return}function Kq(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,j=0,k=0;h=i;j=c[a+4>>2]|0;k=j>>8;if(j&1)k=c[(c[e>>2]|0)+k>>2]|0;a=c[a>>2]|0;ud[c[(c[a>>2]|0)+20>>2]&31](a,b,d,e+k|0,(j&2|0)!=0?f:2,g);i=h;return}function Lq(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,j=0;g=i;h=c[a+4>>2]|0;j=h>>8;if(h&1)j=c[(c[d>>2]|0)+j>>2]|0;a=c[a>>2]|0;hd[c[(c[a>>2]|0)+24>>2]&3](a,b,d+j|0,(h&2|0)!=0?e:2,f);i=g;return}function Mq(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;h=i;if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)!=(e|0)){i=h;return}j=d+28|0;if((c[j>>2]|0)==1){i=h;return}c[j>>2]=f;i=h;return}if((b|0)!=(c[d>>2]|0)){l=c[b+8>>2]|0;hd[c[(c[l>>2]|0)+24>>2]&3](l,d,e,f,g);i=h;return}if((c[d+16>>2]|0)!=(e|0)?(k=d+20|0,(c[k>>2]|0)!=(e|0)):0){c[d+32>>2]=f;f=d+44|0;if((c[f>>2]|0)==4){i=h;return}l=d+52|0;a[l>>0]=0;m=d+53|0;a[m>>0]=0;b=c[b+8>>2]|0;ud[c[(c[b>>2]|0)+20>>2]&31](b,d,e,e,1,g);if(a[m>>0]|0){if(!(a[l>>0]|0)){b=1;j=13}}else{b=0;j=13}do if((j|0)==13){c[k>>2]=e;m=d+40|0;c[m>>2]=(c[m>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0){a[d+54>>0]=1;if(b)break}else j=16;if((j|0)==16?b:0)break;c[f>>2]=4;i=h;return}while(0);c[f>>2]=3;i=h;return}if((f|0)!=1){i=h;return}c[d+32>>2]=1;i=h;return}function Nq(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;g=i;if((c[d+8>>2]|0)==(b|0)){if((c[d+4>>2]|0)!=(e|0)){i=g;return}d=d+28|0;if((c[d>>2]|0)==1){i=g;return}c[d>>2]=f;i=g;return}if((c[d>>2]|0)!=(b|0)){i=g;return}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;b=d+40|0;c[b>>2]=(c[b>>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;i=g;return}if((f|0)!=1){i=g;return}c[d+32>>2]=1;i=g;return}function Oq(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 j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;m=i;if((b|0)==(c[d+8>>2]|0)){Iq(d,e,f,g);i=m;return}j=d+52|0;l=a[j>>0]|0;o=d+53|0;n=a[o>>0]|0;r=c[b+12>>2]|0;p=b+(r<<3)+16|0;a[j>>0]=0;a[o>>0]=0;Kq(b+16|0,d,e,f,g,h);a:do if((r|0)>1){k=d+24|0;q=b+8|0;r=d+54|0;b=b+24|0;do{if(a[r>>0]|0)break a;if(!(a[j>>0]|0)){if((a[o>>0]|0)!=0?(c[q>>2]&1|0)==0:0)break a}else{if((c[k>>2]|0)==1)break a;if(!(c[q>>2]&2))break a}a[j>>0]=0;a[o>>0]=0;Kq(b,d,e,f,g,h);b=b+8|0}while(b>>>0

        >>0)}while(0);a[j>>0]=l;a[o>>0]=n;i=m;return}function Pq(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;h=i;if((a|0)==(c[b+8>>2]|0)){Iq(b,d,e,f);i=h;return}else{a=c[a+8>>2]|0;ud[c[(c[a>>2]|0)+20>>2]&31](a,b,d,e,f,g);i=h;return}}function Qq(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;g=i;if((c[b+8>>2]|0)!=(a|0)){i=g;return}Iq(b,d,e,f);i=g;return}function Rq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=c[d>>2];a=fd[c[(c[a>>2]|0)+16>>2]&31](a,b,f)|0;b=a&1;if(!a){i=e;return b|0}c[d>>2]=c[f>>2];i=e;return b|0}function Sq(a){a=a|0;var b=0;b=i;if(!a)a=0;else a=(Hq(a,28040)|0)!=0;i=b;return a&1|0}function Tq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=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;b=i;do if(a>>>0<245){if(a>>>0<11)a=16;else a=a+11&-8;v=a>>>3;p=c[7152]|0;w=p>>>v;if(w&3){h=(w&1^1)+v|0;g=h<<1;e=28648+(g<<2)|0;g=28648+(g+2<<2)|0;j=c[g>>2]|0;d=j+8|0;f=c[d>>2]|0;do if((e|0)!=(f|0)){if(f>>>0<(c[7156]|0)>>>0)mc();k=f+12|0;if((c[k>>2]|0)==(j|0)){c[k>>2]=e;c[g>>2]=f;break}else mc()}else c[7152]=p&~(1<>2]=H|3;H=j+(H|4)|0;c[H>>2]=c[H>>2]|1;H=d;i=b;return H|0}if(a>>>0>(c[7154]|0)>>>0){if(w){h=2<>>12&16;h=h>>>d;f=h>>>5&8;h=h>>>f;g=h>>>2&4;h=h>>>g;e=h>>>1&2;h=h>>>e;j=h>>>1&1;j=(f|d|g|e|j)+(h>>>j)|0;h=j<<1;e=28648+(h<<2)|0;h=28648+(h+2<<2)|0;g=c[h>>2]|0;d=g+8|0;f=c[d>>2]|0;do if((e|0)!=(f|0)){if(f>>>0<(c[7156]|0)>>>0)mc();k=f+12|0;if((c[k>>2]|0)==(g|0)){c[k>>2]=e;c[h>>2]=f;break}else mc()}else c[7152]=p&~(1<>2]=a|3;e=g+a|0;c[g+(a|4)>>2]=f|1;c[g+h>>2]=f;h=c[7154]|0;if(h){g=c[7157]|0;k=h>>>3;j=k<<1;h=28648+(j<<2)|0;l=c[7152]|0;k=1<>2]|0;if(k>>>0<(c[7156]|0)>>>0)mc();else{D=j;C=k}}else{c[7152]=l|k;D=28648+(j+2<<2)|0;C=h}c[D>>2]=g;c[C+12>>2]=g;c[g+8>>2]=C;c[g+12>>2]=h}c[7154]=f;c[7157]=e;H=d;i=b;return H|0}p=c[7153]|0;if(p){e=(p&0-p)+ -1|0;G=e>>>12&16;e=e>>>G;F=e>>>5&8;e=e>>>F;H=e>>>2&4;e=e>>>H;f=e>>>1&2;e=e>>>f;d=e>>>1&1;d=c[28912+((F|G|H|f|d)+(e>>>d)<<2)>>2]|0;e=(c[d+4>>2]&-8)-a|0;f=d;while(1){g=c[f+16>>2]|0;if(!g){g=c[f+20>>2]|0;if(!g)break}f=(c[g+4>>2]&-8)-a|0;H=f>>>0>>0;e=H?f:e;f=g;d=H?g:d}h=c[7156]|0;if(d>>>0>>0)mc();f=d+a|0;if(d>>>0>=f>>>0)mc();g=c[d+24>>2]|0;k=c[d+12>>2]|0;do if((k|0)==(d|0)){k=d+20|0;j=c[k>>2]|0;if(!j){k=d+16|0;j=c[k>>2]|0;if(!j){B=0;break}}while(1){l=j+20|0;m=c[l>>2]|0;if(m){j=m;k=l;continue}m=j+16|0;l=c[m>>2]|0;if(!l)break;else{j=l;k=m}}if(k>>>0>>0)mc();else{c[k>>2]=0;B=j;break}}else{j=c[d+8>>2]|0;if(j>>>0>>0)mc();h=j+12|0;if((c[h>>2]|0)!=(d|0))mc();l=k+8|0;if((c[l>>2]|0)==(d|0)){c[h>>2]=k;c[l>>2]=j;B=k;break}else mc()}while(0);do if(g){h=c[d+28>>2]|0;j=28912+(h<<2)|0;if((d|0)==(c[j>>2]|0)){c[j>>2]=B;if(!B){c[7153]=c[7153]&~(1<>>0<(c[7156]|0)>>>0)mc();h=g+16|0;if((c[h>>2]|0)==(d|0))c[h>>2]=B;else c[g+20>>2]=B;if(!B)break}if(B>>>0<(c[7156]|0)>>>0)mc();c[B+24>>2]=g;g=c[d+16>>2]|0;do if(g)if(g>>>0<(c[7156]|0)>>>0)mc();else{c[B+16>>2]=g;c[g+24>>2]=B;break}while(0);g=c[d+20>>2]|0;if(g)if(g>>>0<(c[7156]|0)>>>0)mc();else{c[B+20>>2]=g;c[g+24>>2]=B;break}}while(0);if(e>>>0<16){H=e+a|0;c[d+4>>2]=H|3;H=d+(H+4)|0;c[H>>2]=c[H>>2]|1}else{c[d+4>>2]=a|3;c[d+(a|4)>>2]=e|1;c[d+(e+a)>>2]=e;h=c[7154]|0;if(h){g=c[7157]|0;l=h>>>3;j=l<<1;h=28648+(j<<2)|0;k=c[7152]|0;l=1<>2]|0;if(k>>>0<(c[7156]|0)>>>0)mc();else{A=j;z=k}}else{c[7152]=k|l;A=28648+(j+2<<2)|0;z=h}c[A>>2]=g;c[z+12>>2]=g;c[g+8>>2]=z;c[g+12>>2]=h}c[7154]=e;c[7157]=f}H=d+8|0;i=b;return H|0}}}else if(a>>>0<=4294967231){z=a+11|0;a=z&-8;B=c[7153]|0;if(B){A=0-a|0;z=z>>>8;if(z)if(a>>>0>16777215)C=31;else{G=(z+1048320|0)>>>16&8;H=z<>>16&4;H=H<>>16&2;C=14-(F|G|C)+(H<>>15)|0;C=a>>>(C+7|0)&1|C<<1}else C=0;D=c[28912+(C<<2)>>2]|0;a:do if(!D){F=0;z=0}else{if((C|0)==31)z=0;else z=25-(C>>>1)|0;F=0;E=a<>2]&-8;G=H-a|0;if(G>>>0>>0)if((H|0)==(a|0)){A=G;F=D;z=D;break a}else{A=G;z=D}H=c[D+20>>2]|0;D=c[D+(E>>>31<<2)+16>>2]|0;F=(H|0)==0|(H|0)==(D|0)?F:H;if(!D)break;else E=E<<1}}while(0);if((F|0)==0&(z|0)==0){H=2<>>12&16;H=H>>>D;C=H>>>5&8;H=H>>>C;E=H>>>2&4;H=H>>>E;G=H>>>1&2;H=H>>>G;F=H>>>1&1;F=c[28912+((C|D|E|G|F)+(H>>>F)<<2)>>2]|0}if(F)while(1){H=(c[F+4>>2]&-8)-a|0;B=H>>>0>>0;A=B?H:A;z=B?F:z;B=c[F+16>>2]|0;if(B){F=B;continue}F=c[F+20>>2]|0;if(!F)break}if((z|0)!=0?A>>>0<((c[7154]|0)-a|0)>>>0:0){f=c[7156]|0;if(z>>>0>>0)mc();d=z+a|0;if(z>>>0>=d>>>0)mc();e=c[z+24>>2]|0;h=c[z+12>>2]|0;do if((h|0)==(z|0)){h=z+20|0;g=c[h>>2]|0;if(!g){h=z+16|0;g=c[h>>2]|0;if(!g){x=0;break}}while(1){j=g+20|0;k=c[j>>2]|0;if(k){g=k;h=j;continue}j=g+16|0;k=c[j>>2]|0;if(!k)break;else{g=k;h=j}}if(h>>>0>>0)mc();else{c[h>>2]=0;x=g;break}}else{g=c[z+8>>2]|0;if(g>>>0>>0)mc();f=g+12|0;if((c[f>>2]|0)!=(z|0))mc();j=h+8|0;if((c[j>>2]|0)==(z|0)){c[f>>2]=h;c[j>>2]=g;x=h;break}else mc()}while(0);do if(e){g=c[z+28>>2]|0;f=28912+(g<<2)|0;if((z|0)==(c[f>>2]|0)){c[f>>2]=x;if(!x){c[7153]=c[7153]&~(1<>>0<(c[7156]|0)>>>0)mc();f=e+16|0;if((c[f>>2]|0)==(z|0))c[f>>2]=x;else c[e+20>>2]=x;if(!x)break}if(x>>>0<(c[7156]|0)>>>0)mc();c[x+24>>2]=e;e=c[z+16>>2]|0;do if(e)if(e>>>0<(c[7156]|0)>>>0)mc();else{c[x+16>>2]=e;c[e+24>>2]=x;break}while(0);e=c[z+20>>2]|0;if(e)if(e>>>0<(c[7156]|0)>>>0)mc();else{c[x+20>>2]=e;c[e+24>>2]=x;break}}while(0);b:do if(A>>>0>=16){c[z+4>>2]=a|3;c[z+(a|4)>>2]=A|1;c[z+(A+a)>>2]=A;f=A>>>3;if(A>>>0<256){h=f<<1;e=28648+(h<<2)|0;g=c[7152]|0;f=1<>2]|0;if(g>>>0>=(c[7156]|0)>>>0){w=f;v=g;break}mc()}while(0);c[w>>2]=d;c[v+12>>2]=d;c[z+(a+8)>>2]=v;c[z+(a+12)>>2]=e;break}e=A>>>8;if(e)if(A>>>0>16777215)e=31;else{G=(e+1048320|0)>>>16&8;H=e<>>16&4;H=H<>>16&2;e=14-(F|G|e)+(H<>>15)|0;e=A>>>(e+7|0)&1|e<<1}else e=0;f=28912+(e<<2)|0;c[z+(a+28)>>2]=e;c[z+(a+20)>>2]=0;c[z+(a+16)>>2]=0;h=c[7153]|0;g=1<>2]=d;c[z+(a+24)>>2]=f;c[z+(a+12)>>2]=d;c[z+(a+8)>>2]=d;break}f=c[f>>2]|0;if((e|0)==31)e=0;else e=25-(e>>>1)|0;c:do if((c[f+4>>2]&-8|0)!=(A|0)){e=A<>>31<<2)+16|0;h=c[g>>2]|0;if(!h)break;if((c[h+4>>2]&-8|0)==(A|0)){p=h;break c}else{e=e<<1;f=h}}if(g>>>0<(c[7156]|0)>>>0)mc();else{c[g>>2]=d;c[z+(a+24)>>2]=f;c[z+(a+12)>>2]=d;c[z+(a+8)>>2]=d;break b}}else p=f;while(0);f=p+8|0;e=c[f>>2]|0;g=c[7156]|0;if(p>>>0>>0)mc();if(e>>>0>>0)mc();else{c[e+12>>2]=d;c[f>>2]=d;c[z+(a+8)>>2]=e;c[z+(a+12)>>2]=p;c[z+(a+24)>>2]=0;break}}else{H=A+a|0;c[z+4>>2]=H|3;H=z+(H+4)|0;c[H>>2]=c[H>>2]|1}while(0);H=z+8|0;i=b;return H|0}}}else a=-1;while(0);p=c[7154]|0;if(a>>>0<=p>>>0){e=p-a|0;d=c[7157]|0;if(e>>>0>15){c[7157]=d+a;c[7154]=e;c[d+(a+4)>>2]=e|1;c[d+p>>2]=e;c[d+4>>2]=a|3}else{c[7154]=0;c[7157]=0;c[d+4>>2]=p|3;H=d+(p+4)|0;c[H>>2]=c[H>>2]|1}H=d+8|0;i=b;return H|0}p=c[7155]|0;if(a>>>0

        >>0){G=p-a|0;c[7155]=G;H=c[7158]|0;c[7158]=H+a;c[H+(a+4)>>2]=G|1;c[H+4>>2]=a|3;H=H+8|0;i=b;return H|0}do if(!(c[7270]|0)){p=Ra(30)|0;if(!(p+ -1&p)){c[7272]=p;c[7271]=p;c[7273]=-1;c[7274]=-1;c[7275]=0;c[7263]=0;c[7270]=(Jb(0)|0)&-16^1431655768;break}else mc()}while(0);w=a+48|0;p=c[7272]|0;x=a+47|0;z=p+x|0;p=0-p|0;v=z&p;if(v>>>0<=a>>>0){H=0;i=b;return H|0}A=c[7262]|0;if((A|0)!=0?(G=c[7260]|0,H=G+v|0,H>>>0<=G>>>0|H>>>0>A>>>0):0){H=0;i=b;return H|0}d:do if(!(c[7263]&4)){B=c[7158]|0;e:do if(B){A=29056|0;while(1){C=c[A>>2]|0;if(C>>>0<=B>>>0?(y=A+4|0,(C+(c[y>>2]|0)|0)>>>0>B>>>0):0)break;A=c[A+8>>2]|0;if(!A){o=182;break e}}if(A){B=z-(c[7155]|0)&p;if(B>>>0<2147483647){p=Na(B|0)|0;A=(p|0)==((c[A>>2]|0)+(c[y>>2]|0)|0);y=p;z=B;p=A?p:-1;A=A?B:0;o=191}else A=0}else o=182}else o=182;while(0);do if((o|0)==182){p=Na(0)|0;if((p|0)!=(-1|0)){z=p;A=c[7271]|0;y=A+ -1|0;if(!(y&z))A=v;else A=v-z+(y+z&0-A)|0;y=c[7260]|0;z=y+A|0;if(A>>>0>a>>>0&A>>>0<2147483647){H=c[7262]|0;if((H|0)!=0?z>>>0<=y>>>0|z>>>0>H>>>0:0){A=0;break}y=Na(A|0)|0;o=(y|0)==(p|0);z=A;p=o?p:-1;A=o?A:0;o=191}else A=0}else A=0}while(0);f:do if((o|0)==191){o=0-z|0;if((p|0)!=(-1|0)){q=A;o=202;break d}do if((y|0)!=(-1|0)&z>>>0<2147483647&z>>>0>>0?(u=c[7272]|0,u=x-z+u&0-u,u>>>0<2147483647):0)if((Na(u|0)|0)==(-1|0)){Na(o|0)|0;break f}else{z=u+z|0;break}while(0);if((y|0)!=(-1|0)){p=y;q=z;o=202;break d}}while(0);c[7263]=c[7263]|4;o=199}else{A=0;o=199}while(0);if((((o|0)==199?v>>>0<2147483647:0)?(t=Na(v|0)|0,s=Na(0)|0,(s|0)!=(-1|0)&(t|0)!=(-1|0)&t>>>0>>0):0)?(r=s-t|0,q=r>>>0>(a+40|0)>>>0,q):0){p=t;q=q?r:A;o=202}if((o|0)==202){r=(c[7260]|0)+q|0;c[7260]=r;if(r>>>0>(c[7261]|0)>>>0)c[7261]=r;r=c[7158]|0;g:do if(r){v=29056|0;while(1){t=c[v>>2]|0;u=v+4|0;s=c[u>>2]|0;if((p|0)==(t+s|0)){o=214;break}w=c[v+8>>2]|0;if(!w)break;else v=w}if(((o|0)==214?(c[v+12>>2]&8|0)==0:0)?r>>>0>=t>>>0&r>>>0

        >>0:0){c[u>>2]=s+q;d=(c[7155]|0)+q|0;e=r+8|0;if(!(e&7))e=0;else e=0-e&7;H=d-e|0;c[7158]=r+e;c[7155]=H;c[r+(e+4)>>2]=H|1;c[r+(d+4)>>2]=40;c[7159]=c[7274];break}if(p>>>0<(c[7156]|0)>>>0)c[7156]=p;t=p+q|0;s=29056|0;while(1){if((c[s>>2]|0)==(t|0)){o=224;break}u=c[s+8>>2]|0;if(!u)break;else s=u}if((o|0)==224?(c[s+12>>2]&8|0)==0:0){c[s>>2]=p;h=s+4|0;c[h>>2]=(c[h>>2]|0)+q;h=p+8|0;if(!(h&7))h=0;else h=0-h&7;j=p+(q+8)|0;if(!(j&7))n=0;else n=0-j&7;o=p+(n+q)|0;j=h+a|0;k=p+j|0;m=o-(p+h)-a|0;c[p+(h+4)>>2]=a|3;h:do if((o|0)!=(c[7158]|0)){if((o|0)==(c[7157]|0)){H=(c[7154]|0)+m|0;c[7154]=H;c[7157]=k;c[p+(j+4)>>2]=H|1;c[p+(H+j)>>2]=H;break}r=q+4|0;t=c[p+(r+n)>>2]|0;if((t&3|0)==1){a=t&-8;s=t>>>3;i:do if(t>>>0>=256){l=c[p+((n|24)+q)>>2]|0;u=c[p+(q+12+n)>>2]|0;do if((u|0)==(o|0)){u=n|16;t=p+(r+u)|0;s=c[t>>2]|0;if(!s){t=p+(u+q)|0;s=c[t>>2]|0;if(!s){g=0;break}}while(1){u=s+20|0;v=c[u>>2]|0;if(v){s=v;t=u;continue}u=s+16|0;v=c[u>>2]|0;if(!v)break;else{s=v;t=u}}if(t>>>0<(c[7156]|0)>>>0)mc();else{c[t>>2]=0;g=s;break}}else{t=c[p+((n|8)+q)>>2]|0;if(t>>>0<(c[7156]|0)>>>0)mc();v=t+12|0;if((c[v>>2]|0)!=(o|0))mc();s=u+8|0;if((c[s>>2]|0)==(o|0)){c[v>>2]=u;c[s>>2]=t;g=u;break}else mc()}while(0);if(!l)break;t=c[p+(q+28+n)>>2]|0;s=28912+(t<<2)|0;do if((o|0)!=(c[s>>2]|0)){if(l>>>0<(c[7156]|0)>>>0)mc();s=l+16|0;if((c[s>>2]|0)==(o|0))c[s>>2]=g;else c[l+20>>2]=g;if(!g)break i}else{c[s>>2]=g;if(g)break;c[7153]=c[7153]&~(1<>>0<(c[7156]|0)>>>0)mc();c[g+24>>2]=l;l=n|16;o=c[p+(l+q)>>2]|0;do if(o)if(o>>>0<(c[7156]|0)>>>0)mc();else{c[g+16>>2]=o;c[o+24>>2]=g;break}while(0);l=c[p+(r+l)>>2]|0;if(!l)break;if(l>>>0<(c[7156]|0)>>>0)mc();else{c[g+20>>2]=l;c[l+24>>2]=g;break}}else{r=c[p+((n|8)+q)>>2]|0;g=c[p+(q+12+n)>>2]|0;t=28648+(s<<1<<2)|0;do if((r|0)!=(t|0)){if(r>>>0<(c[7156]|0)>>>0)mc();if((c[r+12>>2]|0)==(o|0))break;mc()}while(0);if((g|0)==(r|0)){c[7152]=c[7152]&~(1<>>0<(c[7156]|0)>>>0)mc();s=g+8|0;if((c[s>>2]|0)==(o|0)){l=s;break}mc()}while(0);c[r+12>>2]=g;c[l>>2]=r}while(0);o=p+((a|n)+q)|0;m=a+m|0}g=o+4|0;c[g>>2]=c[g>>2]&-2;c[p+(j+4)>>2]=m|1;c[p+(m+j)>>2]=m;g=m>>>3;if(m>>>0<256){m=g<<1;d=28648+(m<<2)|0;l=c[7152]|0;g=1<>2]|0;if(g>>>0>=(c[7156]|0)>>>0){f=l;e=g;break}mc()}while(0);c[f>>2]=k;c[e+12>>2]=k;c[p+(j+8)>>2]=e;c[p+(j+12)>>2]=d;break}e=m>>>8;do if(!e)e=0;else{if(m>>>0>16777215){e=31;break}G=(e+1048320|0)>>>16&8;H=e<>>16&4;H=H<>>16&2;e=14-(F|G|e)+(H<>>15)|0;e=m>>>(e+7|0)&1|e<<1}while(0);l=28912+(e<<2)|0;c[p+(j+28)>>2]=e;c[p+(j+20)>>2]=0;c[p+(j+16)>>2]=0;f=c[7153]|0;g=1<>2]=k;c[p+(j+24)>>2]=l;c[p+(j+12)>>2]=k;c[p+(j+8)>>2]=k;break}l=c[l>>2]|0;if((e|0)==31)e=0;else e=25-(e>>>1)|0;j:do if((c[l+4>>2]&-8|0)!=(m|0)){e=m<>>31<<2)+16|0;f=c[g>>2]|0;if(!f)break;if((c[f+4>>2]&-8|0)==(m|0)){d=f;break j}else{e=e<<1;l=f}}if(g>>>0<(c[7156]|0)>>>0)mc();else{c[g>>2]=k;c[p+(j+24)>>2]=l;c[p+(j+12)>>2]=k;c[p+(j+8)>>2]=k;break h}}else d=l;while(0);f=d+8|0;e=c[f>>2]|0;g=c[7156]|0;if(d>>>0>>0)mc();if(e>>>0>>0)mc();else{c[e+12>>2]=k;c[f>>2]=k;c[p+(j+8)>>2]=e;c[p+(j+12)>>2]=d;c[p+(j+24)>>2]=0;break}}else{H=(c[7155]|0)+m|0;c[7155]=H;c[7158]=k;c[p+(j+4)>>2]=H|1}while(0);H=p+(h|8)|0;i=b;return H|0}e=29056|0;while(1){d=c[e>>2]|0;if(d>>>0<=r>>>0?(n=c[e+4>>2]|0,m=d+n|0,m>>>0>r>>>0):0)break;e=c[e+8>>2]|0}e=d+(n+ -39)|0;if(!(e&7))e=0;else e=0-e&7;d=d+(n+ -47+e)|0;d=d>>>0<(r+16|0)>>>0?r:d;e=d+8|0;f=p+8|0;if(!(f&7))f=0;else f=0-f&7;H=q+ -40-f|0;c[7158]=p+f;c[7155]=H;c[p+(f+4)>>2]=H|1;c[p+(q+ -36)>>2]=40;c[7159]=c[7274];c[d+4>>2]=27;c[e+0>>2]=c[7264];c[e+4>>2]=c[7265];c[e+8>>2]=c[7266];c[e+12>>2]=c[7267];c[7264]=p;c[7265]=q;c[7267]=0;c[7266]=e;e=d+28|0;c[e>>2]=7;if((d+32|0)>>>0>>0)do{H=e;e=e+4|0;c[e>>2]=7}while((H+8|0)>>>0>>0);if((d|0)!=(r|0)){d=d-r|0;e=r+(d+4)|0;c[e>>2]=c[e>>2]&-2;c[r+4>>2]=d|1;c[r+d>>2]=d;e=d>>>3;if(d>>>0<256){g=e<<1;d=28648+(g<<2)|0;f=c[7152]|0;e=1<>2]|0;if(e>>>0>=(c[7156]|0)>>>0){k=f;j=e;break}mc()}while(0);c[k>>2]=r;c[j+12>>2]=r;c[r+8>>2]=j;c[r+12>>2]=d;break}e=d>>>8;if(e)if(d>>>0>16777215)e=31;else{G=(e+1048320|0)>>>16&8;H=e<>>16&4;H=H<>>16&2;e=14-(F|G|e)+(H<>>15)|0;e=d>>>(e+7|0)&1|e<<1}else e=0;j=28912+(e<<2)|0;c[r+28>>2]=e;c[r+20>>2]=0;c[r+16>>2]=0;f=c[7153]|0;g=1<>2]=r;c[r+24>>2]=j;c[r+12>>2]=r;c[r+8>>2]=r;break}f=c[j>>2]|0;if((e|0)==31)e=0;else e=25-(e>>>1)|0;k:do if((c[f+4>>2]&-8|0)!=(d|0)){e=d<>>31<<2)+16|0;g=c[j>>2]|0;if(!g)break;if((c[g+4>>2]&-8|0)==(d|0)){h=g;break k}else{e=e<<1;f=g}}if(j>>>0<(c[7156]|0)>>>0)mc();else{c[j>>2]=r;c[r+24>>2]=f;c[r+12>>2]=r;c[r+8>>2]=r;break g}}else h=f;while(0);f=h+8|0;e=c[f>>2]|0;d=c[7156]|0;if(h>>>0>>0)mc();if(e>>>0>>0)mc();else{c[e+12>>2]=r;c[f>>2]=r;c[r+8>>2]=e;c[r+12>>2]=h;c[r+24>>2]=0;break}}}else{H=c[7156]|0;if((H|0)==0|p>>>0>>0)c[7156]=p;c[7264]=p;c[7265]=q;c[7267]=0;c[7161]=c[7270];c[7160]=-1;d=0;do{H=d<<1;G=28648+(H<<2)|0;c[28648+(H+3<<2)>>2]=G;c[28648+(H+2<<2)>>2]=G;d=d+1|0}while((d|0)!=32);d=p+8|0;if(!(d&7))d=0;else d=0-d&7;H=q+ -40-d|0;c[7158]=p+d;c[7155]=H;c[p+(d+4)>>2]=H|1;c[p+(q+ -36)>>2]=40;c[7159]=c[7274]}while(0);d=c[7155]|0;if(d>>>0>a>>>0){G=d-a|0;c[7155]=G;H=c[7158]|0;c[7158]=H+a;c[H+(a+4)>>2]=G|1;c[H+4>>2]=a|3;H=H+8|0;i=b;return H|0}}c[(Uc()|0)>>2]=12;H=0;i=b;return H|0}function Uq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=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;b=i;if(!a){i=b;return}q=a+ -8|0;r=c[7156]|0;if(q>>>0>>0)mc();o=c[a+ -4>>2]|0;n=o&3;if((n|0)==1)mc();j=o&-8;h=a+(j+ -8)|0;do if(!(o&1)){u=c[q>>2]|0;if(!n){i=b;return}q=-8-u|0;o=a+q|0;n=u+j|0;if(o>>>0>>0)mc();if((o|0)==(c[7157]|0)){d=a+(j+ -4)|0;if((c[d>>2]&3|0)!=3){d=o;m=n;break}c[7154]=n;c[d>>2]=c[d>>2]&-2;c[a+(q+4)>>2]=n|1;c[h>>2]=n;i=b;return}t=u>>>3;if(u>>>0<256){d=c[a+(q+8)>>2]|0;m=c[a+(q+12)>>2]|0;p=28648+(t<<1<<2)|0;if((d|0)!=(p|0)){if(d>>>0>>0)mc();if((c[d+12>>2]|0)!=(o|0))mc()}if((m|0)==(d|0)){c[7152]=c[7152]&~(1<>>0>>0)mc();p=m+8|0;if((c[p>>2]|0)==(o|0))s=p;else mc()}else s=m+8|0;c[d+12>>2]=m;c[s>>2]=d;d=o;m=n;break}s=c[a+(q+24)>>2]|0;t=c[a+(q+12)>>2]|0;do if((t|0)==(o|0)){u=a+(q+20)|0;t=c[u>>2]|0;if(!t){u=a+(q+16)|0;t=c[u>>2]|0;if(!t){p=0;break}}while(1){w=t+20|0;v=c[w>>2]|0;if(v){t=v;u=w;continue}v=t+16|0;w=c[v>>2]|0;if(!w)break;else{t=w;u=v}}if(u>>>0>>0)mc();else{c[u>>2]=0;p=t;break}}else{u=c[a+(q+8)>>2]|0;if(u>>>0>>0)mc();r=u+12|0;if((c[r>>2]|0)!=(o|0))mc();v=t+8|0;if((c[v>>2]|0)==(o|0)){c[r>>2]=t;c[v>>2]=u;p=t;break}else mc()}while(0);if(s){t=c[a+(q+28)>>2]|0;r=28912+(t<<2)|0;if((o|0)==(c[r>>2]|0)){c[r>>2]=p;if(!p){c[7153]=c[7153]&~(1<>>0<(c[7156]|0)>>>0)mc();r=s+16|0;if((c[r>>2]|0)==(o|0))c[r>>2]=p;else c[s+20>>2]=p;if(!p){d=o;m=n;break}}if(p>>>0<(c[7156]|0)>>>0)mc();c[p+24>>2]=s;r=c[a+(q+16)>>2]|0;do if(r)if(r>>>0<(c[7156]|0)>>>0)mc();else{c[p+16>>2]=r;c[r+24>>2]=p;break}while(0);q=c[a+(q+20)>>2]|0;if(q)if(q>>>0<(c[7156]|0)>>>0)mc();else{c[p+20>>2]=q;c[q+24>>2]=p;d=o;m=n;break}else{d=o;m=n}}else{d=o;m=n}}else{d=q;m=j}while(0);if(d>>>0>=h>>>0)mc();n=a+(j+ -4)|0;o=c[n>>2]|0;if(!(o&1))mc();if(!(o&2)){if((h|0)==(c[7158]|0)){w=(c[7155]|0)+m|0;c[7155]=w;c[7158]=d;c[d+4>>2]=w|1;if((d|0)!=(c[7157]|0)){i=b;return}c[7157]=0;c[7154]=0;i=b;return}if((h|0)==(c[7157]|0)){w=(c[7154]|0)+m|0;c[7154]=w;c[7157]=d;c[d+4>>2]=w|1;c[d+w>>2]=w;i=b;return}m=(o&-8)+m|0;n=o>>>3;do if(o>>>0>=256){l=c[a+(j+16)>>2]|0;q=c[a+(j|4)>>2]|0;do if((q|0)==(h|0)){o=a+(j+12)|0;n=c[o>>2]|0;if(!n){o=a+(j+8)|0;n=c[o>>2]|0;if(!n){k=0;break}}while(1){p=n+20|0;q=c[p>>2]|0;if(q){n=q;o=p;continue}p=n+16|0;q=c[p>>2]|0;if(!q)break;else{n=q;o=p}}if(o>>>0<(c[7156]|0)>>>0)mc();else{c[o>>2]=0;k=n;break}}else{o=c[a+j>>2]|0;if(o>>>0<(c[7156]|0)>>>0)mc();p=o+12|0;if((c[p>>2]|0)!=(h|0))mc();n=q+8|0;if((c[n>>2]|0)==(h|0)){c[p>>2]=q;c[n>>2]=o;k=q;break}else mc()}while(0);if(l){n=c[a+(j+20)>>2]|0;o=28912+(n<<2)|0;if((h|0)==(c[o>>2]|0)){c[o>>2]=k;if(!k){c[7153]=c[7153]&~(1<>>0<(c[7156]|0)>>>0)mc();n=l+16|0;if((c[n>>2]|0)==(h|0))c[n>>2]=k;else c[l+20>>2]=k;if(!k)break}if(k>>>0<(c[7156]|0)>>>0)mc();c[k+24>>2]=l;h=c[a+(j+8)>>2]|0;do if(h)if(h>>>0<(c[7156]|0)>>>0)mc();else{c[k+16>>2]=h;c[h+24>>2]=k;break}while(0);h=c[a+(j+12)>>2]|0;if(h)if(h>>>0<(c[7156]|0)>>>0)mc();else{c[k+20>>2]=h;c[h+24>>2]=k;break}}}else{k=c[a+j>>2]|0;a=c[a+(j|4)>>2]|0;j=28648+(n<<1<<2)|0;if((k|0)!=(j|0)){if(k>>>0<(c[7156]|0)>>>0)mc();if((c[k+12>>2]|0)!=(h|0))mc()}if((a|0)==(k|0)){c[7152]=c[7152]&~(1<>>0<(c[7156]|0)>>>0)mc();j=a+8|0;if((c[j>>2]|0)==(h|0))l=j;else mc()}else l=a+8|0;c[k+12>>2]=a;c[l>>2]=k}while(0);c[d+4>>2]=m|1;c[d+m>>2]=m;if((d|0)==(c[7157]|0)){c[7154]=m;i=b;return}}else{c[n>>2]=o&-2;c[d+4>>2]=m|1;c[d+m>>2]=m}h=m>>>3;if(m>>>0<256){a=h<<1;e=28648+(a<<2)|0;j=c[7152]|0;h=1<>2]|0;if(a>>>0<(c[7156]|0)>>>0)mc();else{f=h;g=a}}else{c[7152]=j|h;f=28648+(a+2<<2)|0;g=e}c[f>>2]=d;c[g+12>>2]=d;c[d+8>>2]=g;c[d+12>>2]=e;i=b;return}f=m>>>8;if(f)if(m>>>0>16777215)f=31;else{v=(f+1048320|0)>>>16&8;w=f<>>16&4;w=w<>>16&2;f=14-(u|v|f)+(w<>>15)|0;f=m>>>(f+7|0)&1|f<<1}else f=0;g=28912+(f<<2)|0;c[d+28>>2]=f;c[d+20>>2]=0;c[d+16>>2]=0;a=c[7153]|0;h=1<>2]|0;if((f|0)==31)f=0;else f=25-(f>>>1)|0;b:do if((c[g+4>>2]&-8|0)!=(m|0)){f=m<>>31<<2)+16|0;g=c[h>>2]|0;if(!g)break;if((c[g+4>>2]&-8|0)==(m|0)){e=g;break b}else{f=f<<1;a=g}}if(h>>>0<(c[7156]|0)>>>0)mc();else{c[h>>2]=d;c[d+24>>2]=a;c[d+12>>2]=d;c[d+8>>2]=d;break a}}else e=g;while(0);g=e+8|0;f=c[g>>2]|0;h=c[7156]|0;if(e>>>0>>0)mc();if(f>>>0>>0)mc();else{c[f+12>>2]=d;c[g>>2]=d;c[d+8>>2]=f;c[d+12>>2]=e;c[d+24>>2]=0;break}}else{c[7153]=a|h;c[g>>2]=d;c[d+24>>2]=g;c[d+12>>2]=d;c[d+8>>2]=d}while(0);w=(c[7160]|0)+ -1|0;c[7160]=w;if(!w)d=29064|0;else{i=b;return}while(1){d=c[d>>2]|0;if(!d)break;else d=d+8|0}c[7160]=-1;i=b;return}function Vq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=i;if(!a){r=Tq(b)|0;i=d;return r|0}if(b>>>0>4294967231){c[(Uc()|0)>>2]=12;r=0;i=d;return r|0}if(b>>>0<11)f=16;else f=b+11&-8;e=a+ -4|0;k=c[e>>2]|0;l=k&-8;o=l+ -8|0;h=a+o|0;m=c[7156]|0;if((a+ -8|0)>>>0>>0)mc();r=k&3;if(!((r|0)!=1&(o|0)>-8))mc();o=l|4;q=a+(o+ -8)|0;p=c[q>>2]|0;if(!(p&1))mc();do if(!r){if(!(f>>>0<256|l>>>0<(f|4)>>>0)?(l-f|0)>>>0<=c[7272]<<1>>>0:0){r=a;i=d;return r|0}}else{if(l>>>0>=f>>>0){g=l-f|0;if(g>>>0<=15){r=a;i=d;return r|0}c[e>>2]=k&1|f|2;c[a+((f|4)+ -8)>>2]=g|3;c[q>>2]=c[q>>2]|1;Wq(a+(f+ -8)|0,g);r=a;i=d;return r|0}if((h|0)==(c[7158]|0)){g=(c[7155]|0)+l|0;if(g>>>0<=f>>>0)break;r=g-f|0;c[e>>2]=k&1|f|2;c[a+((f|4)+ -8)>>2]=r|1;c[7158]=a+(f+ -8);c[7155]=r;r=a;i=d;return r|0}if((h|0)==(c[7157]|0)){g=(c[7154]|0)+l|0;if(g>>>0>>0)break;h=g-f|0;if(h>>>0>15){c[e>>2]=k&1|f|2;c[a+((f|4)+ -8)>>2]=h|1;c[a+(g+ -8)>>2]=h;e=a+(g+ -4)|0;c[e>>2]=c[e>>2]&-2;e=a+(f+ -8)|0}else{c[e>>2]=k&1|g|2;e=a+(g+ -4)|0;c[e>>2]=c[e>>2]|1;e=0;h=0}c[7154]=h;c[7157]=e;r=a;i=d;return r|0}if((p&2|0)==0?(g=(p&-8)+l|0,g>>>0>=f>>>0):0){k=g-f|0;b=p>>>3;do if(p>>>0>=256){n=c[a+(l+16)>>2]|0;o=c[a+o>>2]|0;do if((o|0)==(h|0)){b=a+(l+12)|0;o=c[b>>2]|0;if(!o){b=a+(l+8)|0;o=c[b>>2]|0;if(!o){j=0;break}}while(1){q=o+20|0;p=c[q>>2]|0;if(p){o=p;b=q;continue}p=o+16|0;q=c[p>>2]|0;if(!q)break;else{o=q;b=p}}if(b>>>0>>0)mc();else{c[b>>2]=0;j=o;break}}else{b=c[a+l>>2]|0;if(b>>>0>>0)mc();p=b+12|0;if((c[p>>2]|0)!=(h|0))mc();m=o+8|0;if((c[m>>2]|0)==(h|0)){c[p>>2]=o;c[m>>2]=b;j=o;break}else mc()}while(0);if(n){o=c[a+(l+20)>>2]|0;m=28912+(o<<2)|0;if((h|0)==(c[m>>2]|0)){c[m>>2]=j;if(!j){c[7153]=c[7153]&~(1<>>0<(c[7156]|0)>>>0)mc();m=n+16|0;if((c[m>>2]|0)==(h|0))c[m>>2]=j;else c[n+20>>2]=j;if(!j)break}if(j>>>0<(c[7156]|0)>>>0)mc();c[j+24>>2]=n;h=c[a+(l+8)>>2]|0;do if(h)if(h>>>0<(c[7156]|0)>>>0)mc();else{c[j+16>>2]=h;c[h+24>>2]=j;break}while(0);h=c[a+(l+12)>>2]|0;if(!h)break;if(h>>>0<(c[7156]|0)>>>0)mc();else{c[j+20>>2]=h;c[h+24>>2]=j;break}}}else{j=c[a+l>>2]|0;l=c[a+o>>2]|0;o=28648+(b<<1<<2)|0;if((j|0)!=(o|0)){if(j>>>0>>0)mc();if((c[j+12>>2]|0)!=(h|0))mc()}if((l|0)==(j|0)){c[7152]=c[7152]&~(1<>>0>>0)mc();m=l+8|0;if((c[m>>2]|0)==(h|0)){n=m;break}mc()}while(0);c[j+12>>2]=l;c[n>>2]=j}while(0);if(k>>>0<16){c[e>>2]=g|c[e>>2]&1|2;r=a+((g|4)+ -8)|0;c[r>>2]=c[r>>2]|1;r=a;i=d;return r|0}else{c[e>>2]=c[e>>2]&1|f|2;c[a+((f|4)+ -8)>>2]=k|3;r=a+((g|4)+ -8)|0;c[r>>2]=c[r>>2]|1;Wq(a+(f+ -8)|0,k);r=a;i=d;return r|0}}}while(0);f=Tq(b)|0;if(!f){r=0;i=d;return r|0}r=c[e>>2]|0;r=(r&-8)-((r&3|0)==0?8:4)|0;nr(f|0,a|0,(r>>>0>>0?r:b)|0)|0;Uq(a);r=f;i=d;return r|0}function Wq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=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;d=i;h=a+b|0;l=c[a+4>>2]|0;do if(!(l&1)){p=c[a>>2]|0;if(!(l&3)){i=d;return}l=a+(0-p)|0;m=p+b|0;q=c[7156]|0;if(l>>>0>>0)mc();if((l|0)==(c[7157]|0)){e=a+(b+4)|0;if((c[e>>2]&3|0)!=3){e=l;n=m;break}c[7154]=m;c[e>>2]=c[e>>2]&-2;c[a+(4-p)>>2]=m|1;c[h>>2]=m;i=d;return}s=p>>>3;if(p>>>0<256){e=c[a+(8-p)>>2]|0;n=c[a+(12-p)>>2]|0;o=28648+(s<<1<<2)|0;if((e|0)!=(o|0)){if(e>>>0>>0)mc();if((c[e+12>>2]|0)!=(l|0))mc()}if((n|0)==(e|0)){c[7152]=c[7152]&~(1<>>0>>0)mc();o=n+8|0;if((c[o>>2]|0)==(l|0))r=o;else mc()}else r=n+8|0;c[e+12>>2]=n;c[r>>2]=e;e=l;n=m;break}r=c[a+(24-p)>>2]|0;t=c[a+(12-p)>>2]|0;do if((t|0)==(l|0)){u=16-p|0;t=a+(u+4)|0;s=c[t>>2]|0;if(!s){t=a+u|0;s=c[t>>2]|0;if(!s){o=0;break}}while(1){u=s+20|0;v=c[u>>2]|0;if(v){s=v;t=u;continue}v=s+16|0;u=c[v>>2]|0;if(!u)break;else{s=u;t=v}}if(t>>>0>>0)mc();else{c[t>>2]=0;o=s;break}}else{s=c[a+(8-p)>>2]|0;if(s>>>0>>0)mc();u=s+12|0;if((c[u>>2]|0)!=(l|0))mc();q=t+8|0;if((c[q>>2]|0)==(l|0)){c[u>>2]=t;c[q>>2]=s;o=t;break}else mc()}while(0);if(r){q=c[a+(28-p)>>2]|0;s=28912+(q<<2)|0;if((l|0)==(c[s>>2]|0)){c[s>>2]=o;if(!o){c[7153]=c[7153]&~(1<>>0<(c[7156]|0)>>>0)mc();q=r+16|0;if((c[q>>2]|0)==(l|0))c[q>>2]=o;else c[r+20>>2]=o;if(!o){e=l;n=m;break}}if(o>>>0<(c[7156]|0)>>>0)mc();c[o+24>>2]=r;p=16-p|0;q=c[a+p>>2]|0;do if(q)if(q>>>0<(c[7156]|0)>>>0)mc();else{c[o+16>>2]=q;c[q+24>>2]=o;break}while(0);p=c[a+(p+4)>>2]|0;if(p)if(p>>>0<(c[7156]|0)>>>0)mc();else{c[o+20>>2]=p;c[p+24>>2]=o;e=l;n=m;break}else{e=l;n=m}}else{e=l;n=m}}else{e=a;n=b}while(0);l=c[7156]|0;if(h>>>0>>0)mc();m=a+(b+4)|0;o=c[m>>2]|0;if(!(o&2)){if((h|0)==(c[7158]|0)){v=(c[7155]|0)+n|0;c[7155]=v;c[7158]=e;c[e+4>>2]=v|1;if((e|0)!=(c[7157]|0)){i=d;return}c[7157]=0;c[7154]=0;i=d;return}if((h|0)==(c[7157]|0)){v=(c[7154]|0)+n|0;c[7154]=v;c[7157]=e;c[e+4>>2]=v|1;c[e+v>>2]=v;i=d;return}n=(o&-8)+n|0;m=o>>>3;do if(o>>>0>=256){k=c[a+(b+24)>>2]|0;m=c[a+(b+12)>>2]|0;do if((m|0)==(h|0)){o=a+(b+20)|0;m=c[o>>2]|0;if(!m){o=a+(b+16)|0;m=c[o>>2]|0;if(!m){j=0;break}}while(1){q=m+20|0;p=c[q>>2]|0;if(p){m=p;o=q;continue}p=m+16|0;q=c[p>>2]|0;if(!q)break;else{m=q;o=p}}if(o>>>0>>0)mc();else{c[o>>2]=0;j=m;break}}else{o=c[a+(b+8)>>2]|0;if(o>>>0>>0)mc();l=o+12|0;if((c[l>>2]|0)!=(h|0))mc();p=m+8|0;if((c[p>>2]|0)==(h|0)){c[l>>2]=m;c[p>>2]=o;j=m;break}else mc()}while(0);if(k){l=c[a+(b+28)>>2]|0;m=28912+(l<<2)|0;if((h|0)==(c[m>>2]|0)){c[m>>2]=j;if(!j){c[7153]=c[7153]&~(1<>>0<(c[7156]|0)>>>0)mc();l=k+16|0;if((c[l>>2]|0)==(h|0))c[l>>2]=j;else c[k+20>>2]=j;if(!j)break}if(j>>>0<(c[7156]|0)>>>0)mc();c[j+24>>2]=k;h=c[a+(b+16)>>2]|0;do if(h)if(h>>>0<(c[7156]|0)>>>0)mc();else{c[j+16>>2]=h;c[h+24>>2]=j;break}while(0);h=c[a+(b+20)>>2]|0;if(h)if(h>>>0<(c[7156]|0)>>>0)mc();else{c[j+20>>2]=h;c[h+24>>2]=j;break}}}else{j=c[a+(b+8)>>2]|0;a=c[a+(b+12)>>2]|0;b=28648+(m<<1<<2)|0;if((j|0)!=(b|0)){if(j>>>0>>0)mc();if((c[j+12>>2]|0)!=(h|0))mc()}if((a|0)==(j|0)){c[7152]=c[7152]&~(1<>>0>>0)mc();b=a+8|0;if((c[b>>2]|0)==(h|0))k=b;else mc()}else k=a+8|0;c[j+12>>2]=a;c[k>>2]=j}while(0);c[e+4>>2]=n|1;c[e+n>>2]=n;if((e|0)==(c[7157]|0)){c[7154]=n;i=d;return}}else{c[m>>2]=o&-2;c[e+4>>2]=n|1;c[e+n>>2]=n}a=n>>>3;if(n>>>0<256){b=a<<1;h=28648+(b<<2)|0;j=c[7152]|0;a=1<>2]|0;if(a>>>0<(c[7156]|0)>>>0)mc();else{g=b;f=a}}else{c[7152]=j|a;g=28648+(b+2<<2)|0;f=h}c[g>>2]=e;c[f+12>>2]=e;c[e+8>>2]=f;c[e+12>>2]=h;i=d;return}f=n>>>8;if(f)if(n>>>0>16777215)f=31;else{u=(f+1048320|0)>>>16&8;v=f<>>16&4;v=v<>>16&2;f=14-(t|u|f)+(v<>>15)|0;f=n>>>(f+7|0)&1|f<<1}else f=0;a=28912+(f<<2)|0;c[e+28>>2]=f;c[e+20>>2]=0;c[e+16>>2]=0;h=c[7153]|0;g=1<>2]=e;c[e+24>>2]=a;c[e+12>>2]=e;c[e+8>>2]=e;i=d;return}g=c[a>>2]|0;if((f|0)==31)f=0;else f=25-(f>>>1)|0;a:do if((c[g+4>>2]&-8|0)!=(n|0)){f=n<>>31<<2)+16|0;g=c[h>>2]|0;if(!g)break;if((c[g+4>>2]&-8|0)==(n|0))break a;else{f=f<<1;a=g}}if(h>>>0<(c[7156]|0)>>>0)mc();c[h>>2]=e;c[e+24>>2]=a;c[e+12>>2]=e;c[e+8>>2]=e;i=d;return}while(0);f=g+8|0;a=c[f>>2]|0;h=c[7156]|0;if(g>>>0>>0)mc();if(a>>>0>>0)mc();c[a+12>>2]=e;c[f>>2]=e;c[e+8>>2]=a;c[e+12>>2]=g;c[e+24>>2]=0;i=d;return}function Xq(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;j=i;if(e>>>0>36){c[(Uc()|0)>>2]=22;s=0;t=0;H=s;i=j;return t|0}l=b+4|0;k=b+100|0;do{m=c[l>>2]|0;if(m>>>0<(c[k>>2]|0)>>>0){c[l>>2]=m+1;o=d[m>>0]|0}else o=_q(b)|0}while((o|0)==32|(o+ -9|0)>>>0<5);do if((o|0)==43|(o|0)==45){m=((o|0)==45)<<31>>31;n=c[l>>2]|0;if(n>>>0<(c[k>>2]|0)>>>0){c[l>>2]=n+1;o=d[n>>0]|0;break}else{o=_q(b)|0;break}}else m=0;while(0);n=(e|0)==0;do if((e&-17|0)==0&(o|0)==48){o=c[l>>2]|0;if(o>>>0<(c[k>>2]|0)>>>0){c[l>>2]=o+1;o=d[o>>0]|0}else o=_q(b)|0;if((o|32|0)!=120){f=n?8:e;e=32;break}e=c[l>>2]|0;if(e>>>0<(c[k>>2]|0)>>>0){c[l>>2]=e+1;o=d[e>>0]|0}else o=_q(b)|0;if((d[o+29105>>0]|0)>15){g=(c[k>>2]|0)==0;if(!g)c[l>>2]=(c[l>>2]|0)+ -1;if(!f){c[b+104>>2]=0;s=c[b+8>>2]|0;c[b+108>>2]=s-(c[l>>2]|0);c[k>>2]=s;s=0;t=0;H=s;i=j;return t|0}if(g){s=0;t=0;H=s;i=j;return t|0}c[l>>2]=(c[l>>2]|0)+ -1;s=0;t=0;H=s;i=j;return t|0}else{f=16;e=47}}else{f=n?10:e;if((d[o+29105>>0]|0)>>>0>>0)e=32;else{g=c[l>>2]|0;if(c[k>>2]|0){g=g+ -1|0;c[l>>2]=g}c[b+104>>2]=0;s=c[b+8>>2]|0;c[b+108>>2]=s-g;c[k>>2]=s;c[(Uc()|0)>>2]=22;s=0;t=0;H=s;i=j;return t|0}}while(0);if((e|0)==32)if((f|0)==10){f=o+ -48|0;if(f>>>0<10){n=0;while(1){n=n+f|0;f=c[l>>2]|0;if(f>>>0<(c[k>>2]|0)>>>0){c[l>>2]=f+1;o=d[f>>0]|0}else o=_q(b)|0;f=o+ -48|0;if(!(f>>>0<10&n>>>0<429496729))break;n=n*10|0}p=0}else{n=0;p=0}f=o+ -48|0;if(f>>>0<10){do{r=xr(n|0,p|0,10,0)|0;q=H;s=((f|0)<0)<<31>>31;t=~s;if(q>>>0>t>>>0|(q|0)==(t|0)&r>>>0>~f>>>0)break;n=kr(r|0,q|0,f|0,s|0)|0;p=H;f=c[l>>2]|0;if(f>>>0<(c[k>>2]|0)>>>0){c[l>>2]=f+1;o=d[f>>0]|0}else o=_q(b)|0;f=o+ -48|0}while(f>>>0<10&(p>>>0<429496729|(p|0)==429496729&n>>>0<2576980378));if(f>>>0<=9){f=10;e=73}}}else e=47;a:do if((e|0)==47){if(!(f+ -1&f)){e=a[29368+((f*23|0)>>>5&7)>>0]|0;r=a[o+29105>>0]|0;n=r&255;if(n>>>0>>0){o=n;n=0;do{n=o|n<>2]|0;if(o>>>0<(c[k>>2]|0)>>>0){c[l>>2]=o+1;s=d[o>>0]|0}else s=_q(b)|0;r=a[s+29105>>0]|0;o=r&255}while(o>>>0>>0&n>>>0<134217728);p=0}else{p=0;n=0;s=o}q=lr(-1,-1,e|0)|0;o=H;if((r&255)>>>0>=f>>>0|(p>>>0>o>>>0|(p|0)==(o|0)&n>>>0>q>>>0)){o=s;e=73;break}while(1){n=or(n|0,p|0,e|0)|0;p=H;n=r&255|n;r=c[l>>2]|0;if(r>>>0<(c[k>>2]|0)>>>0){c[l>>2]=r+1;s=d[r>>0]|0}else s=_q(b)|0;r=a[s+29105>>0]|0;if((r&255)>>>0>=f>>>0|(p>>>0>o>>>0|(p|0)==(o|0)&n>>>0>q>>>0)){o=s;e=73;break a}}}r=a[o+29105>>0]|0;e=r&255;if(e>>>0>>0){n=0;do{n=e+(da(n,f)|0)|0;e=c[l>>2]|0;if(e>>>0<(c[k>>2]|0)>>>0){c[l>>2]=e+1;q=d[e>>0]|0}else q=_q(b)|0;r=a[q+29105>>0]|0;e=r&255}while(e>>>0>>0&n>>>0<119304647);p=0}else{n=0;p=0;q=o}if((r&255)>>>0>>0){e=yr(-1,-1,f|0,0)|0;o=H;while(1){if(p>>>0>o>>>0|(p|0)==(o|0)&n>>>0>e>>>0){o=q;e=73;break a}s=xr(n|0,p|0,f|0,0)|0;t=H;r=r&255;if(t>>>0>4294967295|(t|0)==-1&s>>>0>~r>>>0){o=q;e=73;break a}n=kr(r|0,0,s|0,t|0)|0;p=H;q=c[l>>2]|0;if(q>>>0<(c[k>>2]|0)>>>0){c[l>>2]=q+1;q=d[q>>0]|0}else q=_q(b)|0;r=a[q+29105>>0]|0;if((r&255)>>>0>=f>>>0){o=q;e=73;break}}}else{o=q;e=73}}while(0);if((e|0)==73)if((d[o+29105>>0]|0)>>>0>>0){do{e=c[l>>2]|0;if(e>>>0<(c[k>>2]|0)>>>0){c[l>>2]=e+1;e=d[e>>0]|0}else e=_q(b)|0}while((d[e+29105>>0]|0)>>>0>>0);c[(Uc()|0)>>2]=34;p=h;n=g}if(c[k>>2]|0)c[l>>2]=(c[l>>2]|0)+ -1;if(!(p>>>0>>0|(p|0)==(h|0)&n>>>0>>0)){if((g&1|0)==0&0==0&(m|0)==0){c[(Uc()|0)>>2]=34;t=kr(g|0,h|0,-1,-1)|0;s=H;H=s;i=j;return t|0}if(p>>>0>h>>>0|(p|0)==(h|0)&n>>>0>g>>>0){c[(Uc()|0)>>2]=34;s=h;t=g;H=s;i=j;return t|0}}t=((m|0)<0)<<31>>31;t=jr(n^m|0,p^t|0,m|0,t|0)|0;s=H;H=s;i=j;return t|0}function Yq(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0.0,L=0,M=0.0,N=0.0,O=0.0,P=0.0;g=i;i=i+512|0;m=g;if((e|0)==1){j=53;l=-1074}else if(!e){j=24;l=-149}else if((e|0)==2){j=53;l=-1074}else{O=0.0;i=g;return+O}p=b+4|0;q=b+100|0;do{e=c[p>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[p>>2]=e+1;A=d[e>>0]|0}else A=_q(b)|0}while((A|0)==32|(A+ -9|0)>>>0<5);do if((A|0)==43|(A|0)==45){e=1-(((A|0)==45&1)<<1)|0;r=c[p>>2]|0;if(r>>>0<(c[q>>2]|0)>>>0){c[p>>2]=r+1;A=d[r>>0]|0;break}else{A=_q(b)|0;break}}else e=1;while(0);u=0;do{if((A|32|0)!=(a[29384+u>>0]|0))break;do if(u>>>0<7){r=c[p>>2]|0;if(r>>>0<(c[q>>2]|0)>>>0){c[p>>2]=r+1;A=d[r>>0]|0;break}else{A=_q(b)|0;break}}while(0);u=u+1|0}while(u>>>0<8);do if((u|0)==3)s=23;else if((u|0)!=8){r=(f|0)==0;if(!(u>>>0<4|r))if((u|0)==8)break;else{s=23;break}a:do if(!u){u=0;do{if((A|32|0)!=(a[29968+u>>0]|0))break a;do if(u>>>0<2){o=c[p>>2]|0;if(o>>>0<(c[q>>2]|0)>>>0){c[p>>2]=o+1;A=d[o>>0]|0;break}else{A=_q(b)|0;break}}while(0);u=u+1|0}while(u>>>0<3)}while(0);if(!u){do if((A|0)==48){o=c[p>>2]|0;if(o>>>0<(c[q>>2]|0)>>>0){c[p>>2]=o+1;o=d[o>>0]|0}else o=_q(b)|0;if((o|32|0)!=120){if(!(c[q>>2]|0)){A=48;break}c[p>>2]=(c[p>>2]|0)+ -1;A=48;break}m=c[p>>2]|0;if(m>>>0<(c[q>>2]|0)>>>0){c[p>>2]=m+1;C=d[m>>0]|0;A=0}else{C=_q(b)|0;A=0}while(1){if((C|0)==46){s=71;break}else if((C|0)!=48){m=0;o=0;u=0;v=0;z=0;B=0;K=1.0;y=0;t=0.0;break}m=c[p>>2]|0;if(m>>>0<(c[q>>2]|0)>>>0){c[p>>2]=m+1;C=d[m>>0]|0;A=1;continue}else{C=_q(b)|0;A=1;continue}}b:do if((s|0)==71){m=c[p>>2]|0;if(m>>>0<(c[q>>2]|0)>>>0){c[p>>2]=m+1;C=d[m>>0]|0}else C=_q(b)|0;if((C|0)==48){u=-1;v=-1;while(1){m=c[p>>2]|0;if(m>>>0<(c[q>>2]|0)>>>0){c[p>>2]=m+1;C=d[m>>0]|0}else C=_q(b)|0;if((C|0)!=48){m=0;o=0;A=1;z=1;B=0;K=1.0;y=0;t=0.0;break b}L=kr(u|0,v|0,-1,-1)|0;u=L;v=H}}else{m=0;o=0;u=0;v=0;z=1;B=0;K=1.0;y=0;t=0.0}}while(0);c:while(1){F=C+ -48|0;do if(F>>>0>=10){E=C|32;D=(C|0)==46;if(!((E+ -97|0)>>>0<6|D))break c;if(D)if(!z){u=o;v=m;z=1;break}else{C=46;break c}else{F=(C|0)>57?E+ -87|0:F;s=85;break}}else s=85;while(0);if((s|0)==85){s=0;do if(!((m|0)<0|(m|0)==0&o>>>0<8)){if((m|0)<0|(m|0)==0&o>>>0<14){O=K*.0625;M=O;t=t+O*+(F|0);break}if((F|0)!=0&(B|0)==0){B=1;M=K;t=t+K*.5}else M=K}else{M=K;y=F+(y<<4)|0}while(0);o=kr(o|0,m|0,1,0)|0;m=H;A=1;K=M}C=c[p>>2]|0;if(C>>>0<(c[q>>2]|0)>>>0){c[p>>2]=C+1;C=d[C>>0]|0;continue}else{C=_q(b)|0;continue}}if(!A){j=(c[q>>2]|0)==0;if(!j)c[p>>2]=(c[p>>2]|0)+ -1;if(!r){if(!j?(n=c[p>>2]|0,c[p>>2]=n+ -1,(z|0)!=0):0)c[p>>2]=n+ -2}else{c[b+104>>2]=0;L=c[b+8>>2]|0;c[b+108>>2]=L-(c[p>>2]|0);c[q>>2]=L}O=+(e|0)*0.0;i=g;return+O}s=(z|0)==0;n=s?o:u;s=s?m:v;if((m|0)<0|(m|0)==0&o>>>0<8)do{y=y<<4;o=kr(o|0,m|0,1,0)|0;m=H}while((m|0)<0|(m|0)==0&o>>>0<8);do if((C|32|0)==112){o=Zq(b,f)|0;m=H;if((o|0)==0&(m|0)==-2147483648)if(r){c[b+104>>2]=0;L=c[b+8>>2]|0;c[b+108>>2]=L-(c[p>>2]|0);c[q>>2]=L;O=0.0;i=g;return+O}else{if(!(c[q>>2]|0)){o=0;m=0;break}c[p>>2]=(c[p>>2]|0)+ -1;o=0;m=0;break}}else if(!(c[q>>2]|0)){o=0;m=0}else{c[p>>2]=(c[p>>2]|0)+ -1;o=0;m=0}while(0);n=or(n|0,s|0,2)|0;n=kr(n|0,H|0,-32,-1)|0;m=kr(n|0,H|0,o|0,m|0)|0;n=H;if(!y){O=+(e|0)*0.0;i=g;return+O}if((n|0)>0|(n|0)==0&m>>>0>(0-l|0)>>>0){c[(Uc()|0)>>2]=34;O=+(e|0)*1.7976931348623157e+308*1.7976931348623157e+308;i=g;return+O}L=l+ -106|0;J=((L|0)<0)<<31>>31;if((n|0)<(J|0)|(n|0)==(J|0)&m>>>0>>0){c[(Uc()|0)>>2]=34;O=+(e|0)*2.2250738585072014e-308*2.2250738585072014e-308;i=g;return+O}if((y|0)>-1)do{y=y<<1;if(!(t>=.5))K=t;else{K=t+-1.0;y=y|1}t=t+K;m=kr(m|0,n|0,-1,-1)|0;n=H}while((y|0)>-1);l=jr(32,0,l|0,((l|0)<0)<<31>>31|0)|0;l=kr(m|0,n|0,l|0,H|0)|0;L=H;if(0>(L|0)|0==(L|0)&j>>>0>l>>>0)j=(l|0)<0?0:l;do if((j|0)<53){l=84-j|0;do if((l|0)>1023){n=l+ -1023|0;if((n|0)<=1023){l=n;M=8.98846567431158e+307;break}l=l+ -2046|0;l=(l|0)>1023?1023:l;M=x}else{if((l|0)>=-1022){M=1.0;break}n=l+1022|0;if((n|0)>=-1022){l=n;M=2.2250738585072014e-308;break}l=l+2044|0;l=(l|0)<-1022?-1022:l;M=0.0}while(0);J=or(l+1023|0,0,52)|0;L=H;c[k>>2]=J;c[k+4>>2]=L;K=+(e|0);M=+_c(+(M*+h[k>>3]),+K);if(!((j|0)<32&t!=0.0))break;L=y&1;y=(L^1)+y|0;t=(L|0)==0?0.0:t}else{K=+(e|0);M=0.0}while(0);t=K*t+(M+K*+(y>>>0))-M;if(!(t!=0.0))c[(Uc()|0)>>2]=34;do if((m|0)>1023){t=t*8.98846567431158e+307;e=m+ -1023|0;if((e|0)<=1023){m=e;break}m=m+ -2046|0;m=(m|0)>1023?1023:m;t=t*8.98846567431158e+307}else{if((m|0)>=-1022)break;t=t*2.2250738585072014e-308;e=m+1022|0;if((e|0)>=-1022){m=e;break}m=m+2044|0;m=(m|0)<-1022?-1022:m;t=t*2.2250738585072014e-308}while(0);J=or(m+1023|0,0,52)|0;L=H;c[k>>2]=J;c[k+4>>2]=L;O=t*+h[k>>3];i=g;return+O}while(0);o=l+j|0;n=0-o|0;F=0;while(1){if((A|0)==46){s=152;break}else if((A|0)!=48){J=0;G=0;B=0;break}u=c[p>>2]|0;if(u>>>0<(c[q>>2]|0)>>>0){c[p>>2]=u+1;A=d[u>>0]|0;F=1;continue}else{A=_q(b)|0;F=1;continue}}d:do if((s|0)==152){u=c[p>>2]|0;if(u>>>0<(c[q>>2]|0)>>>0){c[p>>2]=u+1;A=d[u>>0]|0}else A=_q(b)|0;if((A|0)==48){J=-1;G=-1;while(1){u=c[p>>2]|0;if(u>>>0<(c[q>>2]|0)>>>0){c[p>>2]=u+1;A=d[u>>0]|0}else A=_q(b)|0;if((A|0)!=48){F=1;B=1;break d}L=kr(J|0,G|0,-1,-1)|0;J=L;G=H}}else{J=0;G=0;B=1}}while(0);c[m>>2]=0;D=A+ -48|0;I=(A|0)==46;e:do if(D>>>0<10|I){u=m+496|0;E=0;C=0;z=0;y=0;v=0;while(1){do if(I)if(!B){J=E;G=C;B=1}else break e;else{L=kr(E|0,C|0,1,0)|0;C=H;I=(A|0)!=48;if((y|0)>=125){if(!I){E=L;break}c[u>>2]=c[u>>2]|1;E=L;break}E=m+(y<<2)|0;if(z)D=A+ -48+((c[E>>2]|0)*10|0)|0;c[E>>2]=D;z=z+1|0;D=(z|0)==9;E=L;F=1;z=D?0:z;y=(D&1)+y|0;v=I?L:v}while(0);A=c[p>>2]|0;if(A>>>0<(c[q>>2]|0)>>>0){c[p>>2]=A+1;A=d[A>>0]|0}else A=_q(b)|0;D=A+ -48|0;I=(A|0)==46;if(!(D>>>0<10|I)){s=175;break}}}else{E=0;C=0;z=0;y=0;v=0;s=175}while(0);if((s|0)==175){L=(B|0)==0;J=L?E:J;G=L?C:G}s=(F|0)!=0;if(s?(A|32|0)==101:0){u=Zq(b,f)|0;f=H;do if((u|0)==0&(f|0)==-2147483648)if(r){c[b+104>>2]=0;L=c[b+8>>2]|0;c[b+108>>2]=L-(c[p>>2]|0);c[q>>2]=L;O=0.0;i=g;return+O}else{if(!(c[q>>2]|0)){r=0;f=0;break}c[p>>2]=(c[p>>2]|0)+ -1;r=0;f=0;break}else r=u;while(0);J=kr(r|0,f|0,J|0,G|0)|0;G=H}else if((A|0)>-1?(c[q>>2]|0)!=0:0)c[p>>2]=(c[p>>2]|0)+ -1;if(!s){c[(Uc()|0)>>2]=22;c[b+104>>2]=0;L=c[b+8>>2]|0;c[b+108>>2]=L-(c[p>>2]|0);c[q>>2]=L;O=0.0;i=g;return+O}p=c[m>>2]|0;if(!p){O=+(e|0)*0.0;i=g;return+O}do if((J|0)==(E|0)&(G|0)==(C|0)&((C|0)<0|(C|0)==0&E>>>0<10)){if(j>>>0<=30?(p>>>j|0)!=0:0)break;O=+(e|0)*+(p>>>0);i=g;return+O}while(0);L=(l|0)/-2|0;I=((L|0)<0)<<31>>31;if((G|0)>(I|0)|(G|0)==(I|0)&J>>>0>L>>>0){c[(Uc()|0)>>2]=34;O=+(e|0)*1.7976931348623157e+308*1.7976931348623157e+308;i=g;return+O}L=l+ -106|0;I=((L|0)<0)<<31>>31;if((G|0)<(I|0)|(G|0)==(I|0)&J>>>0>>0){c[(Uc()|0)>>2]=34;O=+(e|0)*2.2250738585072014e-308*2.2250738585072014e-308;i=g;return+O}if(z){if((z|0)<9){p=m+(y<<2)|0;b=c[p>>2]|0;do{b=b*10|0;z=z+1|0}while((z|0)!=9);c[p>>2]=b}y=y+1|0}do if((v|0)<9?(v|0)<=(J|0)&(J|0)<18:0){if((J|0)==9){O=+(e|0)*+((c[m>>2]|0)>>>0);i=g;return+O}if((J|0)<9){O=+(e|0)*+((c[m>>2]|0)>>>0)/+(c[29408+(8-J<<2)>>2]|0);i=g;return+O}L=j+27+(da(J,-3)|0)|0;p=c[m>>2]|0;if((L|0)<=30?(p>>>L|0)!=0:0)break;O=+(e|0)*+(p>>>0)*+(c[29408+(J+ -10<<2)>>2]|0);i=g;return+O}while(0);p=(J|0)%9|0;if(!p){p=0;b=0;q=J}else{q=(J|0)>-1?p:p+9|0;s=c[29408+(8-q<<2)>>2]|0;if(y){f=1e9/(s|0)|0;p=0;b=0;r=0;do{G=m+(r<<2)|0;I=c[G>>2]|0;L=((I>>>0)/(s>>>0)|0)+b|0;c[G>>2]=L;b=da((I>>>0)%(s>>>0)|0,f)|0;I=r;r=r+1|0;if((I|0)==(p|0)&(L|0)==0){p=r&127;J=J+ -9|0}}while((r|0)!=(y|0));if(b){c[m+(y<<2)>>2]=b;y=y+1|0}}else{p=0;y=0}b=0;q=9-q+J|0}f:while(1){r=m+(p<<2)|0;if((q|0)<18){do{s=0;r=y+127|0;while(1){r=r&127;f=m+(r<<2)|0;u=or(c[f>>2]|0,0,29)|0;u=kr(u|0,H|0,s|0,0)|0;s=H;if(s>>>0>0|(s|0)==0&u>>>0>1e9){L=yr(u|0,s|0,1e9,0)|0;u=zr(u|0,s|0,1e9,0)|0;s=L}else s=0;c[f>>2]=u;f=(r|0)==(p|0);if(!((r|0)!=(y+127&127|0)|f))y=(u|0)==0?r:y;if(f)break;else r=r+ -1|0}b=b+ -29|0}while((s|0)==0)}else{if((q|0)!=18)break;do{if((c[r>>2]|0)>>>0>=9007199){q=18;break f}s=0;f=y+127|0;while(1){f=f&127;u=m+(f<<2)|0;v=or(c[u>>2]|0,0,29)|0;v=kr(v|0,H|0,s|0,0)|0;s=H;if(s>>>0>0|(s|0)==0&v>>>0>1e9){L=yr(v|0,s|0,1e9,0)|0;v=zr(v|0,s|0,1e9,0)|0;s=L}else s=0;c[u>>2]=v;u=(f|0)==(p|0);if(!((f|0)!=(y+127&127|0)|u))y=(v|0)==0?f:y;if(u)break;else f=f+ -1|0}b=b+ -29|0}while((s|0)==0)}p=p+127&127;if((p|0)==(y|0)){L=y+127&127;y=m+((y+126&127)<<2)|0;c[y>>2]=c[y>>2]|c[m+(L<<2)>>2];y=L}c[m+(p<<2)>>2]=s;q=q+9|0}g:while(1){r=y+1&127;f=m+((y+127&127)<<2)|0;while(1){u=(q|0)==18;s=(q|0)>27?9:1;while(1){v=0;while(1){z=v+p&127;if((z|0)==(y|0)){v=2;break}z=c[m+(z<<2)>>2]|0;A=c[29400+(v<<2)>>2]|0;if(z>>>0>>0){v=2;break}B=v+1|0;if(z>>>0>A>>>0)break;if((B|0)<2)v=B;else{v=B;break}}if((v|0)==2&u)break g;b=s+b|0;if((p|0)==(y|0))p=y;else break}v=(1<>>s;A=p;u=0;do{I=m+(p<<2)|0;J=c[I>>2]|0;L=(J>>>s)+u|0;c[I>>2]=L;u=da(J&v,z)|0;L=(p|0)==(A|0)&(L|0)==0;p=p+1&127;q=L?q+ -9|0:q;A=L?p:A}while((p|0)!=(y|0));if(!u){p=A;continue}if((r|0)!=(A|0))break;c[f>>2]=c[f>>2]|1;p=A}c[m+(y<<2)>>2]=u;p=A;y=r}q=p&127;if((q|0)==(y|0)){c[m+(r+ -1<<2)>>2]=0;y=r}K=+((c[m+(q<<2)>>2]|0)>>>0);q=p+1&127;if((q|0)==(y|0)){y=y+1&127;c[m+(y+ -1<<2)>>2]=0}t=+(e|0);K=t*(K*1.0e9+ +((c[m+(q<<2)>>2]|0)>>>0));e=b+53|0;l=e-l|0;if((l|0)<(j|0)){j=(l|0)<0?0:l;q=1}else q=0;if((j|0)<53){r=105-j|0;do if((r|0)>1023){f=r+ -1023|0;if((f|0)<=1023){r=f;M=8.98846567431158e+307;break}r=r+ -2046|0;r=(r|0)>1023?1023:r;M=x}else{if((r|0)>=-1022){M=1.0;break}f=r+1022|0;if((f|0)>=-1022){r=f;M=2.2250738585072014e-308;break}r=r+2044|0;r=(r|0)<-1022?-1022:r;M=0.0}while(0);L=or(r+1023|0,0,52)|0;r=H;c[k>>2]=L;c[k+4>>2]=r;N=+_c(+(M*+h[k>>3]),+K);r=53-j|0;do if((r|0)>1023){f=r+ -1023|0;if((f|0)<=1023){r=f;M=8.98846567431158e+307;break}r=r+ -2046|0;r=(r|0)>1023?1023:r;M=x}else{if((r|0)>=-1022){M=1.0;break}f=r+1022|0;if((f|0)>=-1022){r=f;M=2.2250738585072014e-308;break}r=r+2044|0;r=(r|0)<-1022?-1022:r;M=0.0}while(0);J=or(r+1023|0,0,52)|0;L=H;c[k>>2]=J;c[k+4>>2]=L;P=+Ga(+K,+(M*+h[k>>3]));M=N;O=P;K=N+(K-P)}else{M=0.0;O=0.0}r=p+2&127;do if((r|0)!=(y|0)){m=c[m+(r<<2)>>2]|0;do if(m>>>0>=5e8){if(m>>>0>5e8){O=t*.75+O;break}if((p+3&127|0)==(y|0)){O=t*.5+O;break}else{O=t*.75+O;break}}else{if((m|0)==0?(p+3&127|0)==(y|0):0)break;O=t*.25+O}while(0);if((53-j|0)<=1)break;if(+Ga(+O,1.0)!=0.0)break;O=O+1.0}while(0);t=K+O-M;do if((e&2147483647|0)>(-2-o|0)){if(+S(+t)>=9007199254740992.0){q=(q|0)!=0&(j|0)==(l|0)?0:q;b=b+1|0;t=t*.5}if((b+50|0)<=(n|0)?!((q|0)!=0&O!=0.0):0)break;c[(Uc()|0)>>2]=34}while(0);do if((b|0)>1023){t=t*8.98846567431158e+307;e=b+ -1023|0;if((e|0)<=1023){b=e;break}b=b+ -2046|0;b=(b|0)>1023?1023:b;t=t*8.98846567431158e+307}else{if((b|0)>=-1022)break;t=t*2.2250738585072014e-308;e=b+1022|0;if((e|0)>=-1022){b=e;break}b=b+2044|0;b=(b|0)<-1022?-1022:b;t=t*2.2250738585072014e-308}while(0);J=or(b+1023|0,0,52)|0;L=H;c[k>>2]=J;c[k+4>>2]=L;P=t*+h[k>>3];i=g;return+P}else if((u|0)==3){e=c[p>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[p>>2]=e+1;e=d[e>>0]|0}else e=_q(b)|0;if((e|0)==40)e=1;else{if(!(c[q>>2]|0)){P=w;i=g;return+P}c[p>>2]=(c[p>>2]|0)+ -1;P=w;i=g;return+P}while(1){j=c[p>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[p>>2]=j+1;j=d[j>>0]|0}else j=_q(b)|0;if(!((j+ -48|0)>>>0<10|(j+ -65|0)>>>0<26)?!((j+ -97|0)>>>0<26|(j|0)==95):0)break;e=e+1|0}if((j|0)==41){P=w;i=g;return+P}j=(c[q>>2]|0)==0;if(!j)c[p>>2]=(c[p>>2]|0)+ -1;if(r){c[(Uc()|0)>>2]=22;c[b+104>>2]=0;L=c[b+8>>2]|0;c[b+108>>2]=L-(c[p>>2]|0);c[q>>2]=L;P=0.0;i=g;return+P}if((e|0)==0|j){P=w;i=g;return+P}j=c[p>>2]|0;do{e=e+ -1|0;j=j+ -1|0}while((e|0)!=0);c[p>>2]=j;P=w;i=g;return+P}else{e=c[p>>2]|0;if(c[q>>2]|0){e=e+ -1|0;c[p>>2]=e}c[(Uc()|0)>>2]=22;c[b+104>>2]=0;L=c[b+8>>2]|0;c[b+108>>2]=L-e;c[q>>2]=L;P=0.0;i=g;return+P}}while(0);if(((s|0)==23?(c[q>>2]|0)!=0:0)?(o=(c[p>>2]|0)+ -1|0,c[p>>2]=o,!(u>>>0<4|(f|0)==0)):0){do{o=o+ -1|0;u=u+ -1|0}while(u>>>0>3);c[p>>2]=o}P=+(e|0)*x;i=g;return+P}function Zq(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;g=a+4|0;h=c[g>>2]|0;f=a+100|0;if(h>>>0<(c[f>>2]|0)>>>0){c[g>>2]=h+1;j=d[h>>0]|0}else j=_q(a)|0;if((j|0)==43|(j|0)==45){h=(j|0)==45&1;j=c[g>>2]|0;if(j>>>0<(c[f>>2]|0)>>>0){c[g>>2]=j+1;j=d[j>>0]|0}else j=_q(a)|0;if(!((j+ -48|0)>>>0<10|(b|0)==0)?(c[f>>2]|0)!=0:0)c[g>>2]=(c[g>>2]|0)+ -1}else h=0;if((j+ -48|0)>>>0>9){if(!(c[f>>2]|0)){k=-2147483648;l=0;H=k;i=e;return l|0}c[g>>2]=(c[g>>2]|0)+ -1;k=-2147483648;l=0;H=k;i=e;return l|0}else b=0;while(1){b=j+ -48+b|0;j=c[g>>2]|0;if(j>>>0<(c[f>>2]|0)>>>0){c[g>>2]=j+1;j=d[j>>0]|0}else j=_q(a)|0;l=(j+ -48|0)>>>0<10;if(!(l&(b|0)<214748364))break;b=b*10|0}k=((b|0)<0)<<31>>31;if(l)do{k=xr(b|0,k|0,10,0)|0;b=H;j=kr(j|0,((j|0)<0)<<31>>31|0,-48,-1)|0;b=kr(j|0,H|0,k|0,b|0)|0;k=H;j=c[g>>2]|0;if(j>>>0<(c[f>>2]|0)>>>0){c[g>>2]=j+1;j=d[j>>0]|0}else j=_q(a)|0}while((j+ -48|0)>>>0<10&((k|0)<21474836|(k|0)==21474836&b>>>0<2061584302));if((j+ -48|0)>>>0<10)do{j=c[g>>2]|0;if(j>>>0<(c[f>>2]|0)>>>0){c[g>>2]=j+1;j=d[j>>0]|0}else j=_q(a)|0}while((j+ -48|0)>>>0<10);if(c[f>>2]|0)c[g>>2]=(c[g>>2]|0)+ -1;j=(h|0)!=0;l=jr(0,0,b|0,k|0)|0;k=j?H:k;l=j?l:b;H=k;i=e;return l|0}function _q(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;h=b+104|0;l=c[h>>2]|0;if(!((l|0)!=0?(c[b+108>>2]|0)>=(l|0):0))g=3;if((g|0)==3?(f=br(b)|0,(f|0)>=0):0){l=c[h>>2]|0;h=c[b+8>>2]|0;k=c[b+4>>2]|0;if((l|0)!=0?(j=l-(c[b+108>>2]|0)+ -1|0,(h-k|0)>(j|0)):0)c[b+100>>2]=k+j;else g=8;if((g|0)==8)c[b+100>>2]=h;if(h){l=b+108|0;c[l>>2]=h+1-k+(c[l>>2]|0)}b=k+ -1|0;if((d[b>>0]|0|0)==(f|0)){l=f;i=e;return l|0}a[b>>0]=f;l=f;i=e;return l|0}c[b+100>>2]=0;l=-1;i=e;return l|0}function $q(a,b){a=+a;b=b|0;var d=0,e=0,f=0,g=0;d=i;h[k>>3]=a;f=c[k>>2]|0;e=c[k+4>>2]|0;g=lr(f|0,e|0,52)|0;g=g&2047;if(!g){if(a!=0.0){a=+$q(a*18446744073709552000.0,b);e=(c[b>>2]|0)+ -64|0}else e=0;c[b>>2]=e;i=d;return+a}else if((g|0)==2047){i=d;return+a}else{c[b>>2]=g+ -1022;c[k>>2]=f;c[k+4>>2]=e&-2146435073|1071644672;a=+h[k>>3];i=d;return+a}return 0.0}function ar(b,d){b=b|0;d=d|0;var e=0;e=i;if(!b){b=1;i=e;return b|0}if(d>>>0<128){a[b>>0]=d;b=1;i=e;return b|0}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;b=2;i=e;return b|0}if(d>>>0<55296|(d+ -57344|0)>>>0<8192){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;b=3;i=e;return b|0}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;b=4;i=e;return b|0}else{c[(Uc()|0)>>2]=84;b=-1;i=e;return b|0}return 0}function br(b){b=b|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+16|0;e=g;f=b+8|0;do if(!(c[f>>2]|0)){j=b+74|0;h=a[j>>0]|0;a[j>>0]=h+255|h;j=b+20|0;h=b+44|0;if((c[j>>2]|0)>>>0>(c[h>>2]|0)>>>0)fd[c[b+36>>2]&31](b,0,0)|0;c[b+16>>2]=0;c[b+28>>2]=0;c[j>>2]=0;j=c[b>>2]|0;if(!(j&20)){j=c[h>>2]|0;c[f>>2]=j;c[b+4>>2]=j;break}if(!(j&4)){j=-1;i=g;return j|0}c[b>>2]=j|32;j=-1;i=g;return j|0}while(0);if((fd[c[b+32>>2]&31](b,e,1)|0)!=1){j=-1;i=g;return j|0}j=d[e>>0]|0;i=g;return j|0}function cr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;g=e+16|0;j=c[g>>2]|0;do if(!j){h=e+74|0;k=a[h>>0]|0;a[h>>0]=k+255|k;h=c[e>>2]|0;if(!(h&8)){c[e+8>>2]=0;c[e+4>>2]=0;h=c[e+44>>2]|0;c[e+28>>2]=h;c[e+20>>2]=h;j=h+(c[e+48>>2]|0)|0;c[g>>2]=j;break}c[e>>2]=h|32;i=f;return}else h=c[e+20>>2]|0;while(0);g=e+20|0;if((j-h|0)>>>0>>0){fd[c[e+36>>2]&31](e,b,d)|0;i=f;return}a:do if((a[e+75>>0]|0)>-1){j=d;while(1){if(!j)break a;k=j+ -1|0;if((a[b+k>>0]|0)==10)break;else j=k}if((fd[c[e+36>>2]&31](e,b,j)|0)>>>0>>0){i=f;return}else{d=d-j|0;b=b+j|0;h=c[g>>2]|0;break}}while(0);nr(h|0,b|0,d|0)|0;c[g>>2]=(c[g>>2]|0)+d;i=f;return}function dr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f;c[g>>2]=e;e=fr(a,b,d,g)|0;i=f;return e|0}function er(e,f,g,j,l){e=e|0;f=f|0;g=g|0;j=j|0;l=l|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,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,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.0,fb=0,gb=0.0,hb=0;m=i;i=i+864|0;B=m+16|0;r=m+8|0;v=m+560|0;w=v;u=m+840|0;s=m+584|0;J=m+520|0;N=m;G=m+852|0;L=(e|0)!=0;Y=J+40|0;I=Y;J=J+39|0;M=N+4|0;t=u+12|0;u=u+11|0;A=t;z=A-w|0;x=-2-w|0;y=A+2|0;C=B+288|0;D=v+9|0;E=D;F=v+8|0;Ra=0;Ua=0;pa=0;Va=0;Sa=0;a:while(1){do if((pa|0)>-1)if((Va|0)>(2147483647-pa|0)){c[(Uc()|0)>>2]=75;pa=-1;break}else{pa=Va+pa|0;break}while(0);Pa=a[f>>0]|0;if(!(Pa<<24>>24)){Na=357;break}else Oa=f;while(1){if(Pa<<24>>24==37){O=Oa;K=Oa;Na=9;break}else if(!(Pa<<24>>24)){ma=Oa;oa=Oa;break}fb=Oa+1|0;Pa=a[fb>>0]|0;Oa=fb}b:do if((Na|0)==9)while(1){Na=0;if((a[O+1>>0]|0)!=37){ma=O;oa=K;break b}oa=K+1|0;ma=O+2|0;if((a[ma>>0]|0)==37){O=ma;K=oa}else break}while(0);Va=oa-f|0;if(L)cr(f,Va,e);if((oa|0)!=(f|0)){f=ma;continue}Qa=ma+1|0;Ta=a[Qa>>0]|0;Wa=(Ta<<24>>24)+ -48|0;if(Wa>>>0<10?(a[ma+2>>0]|0)==36:0){Qa=ma+3|0;Ta=a[Qa>>0]|0;Oa=1}else{Wa=-1;Oa=Sa}Pa=Ta<<24>>24;c:do if((Pa+ -32|0)>>>0<32){Xa=0;while(1){if(!(1<>24)+ -32|Xa;Qa=Qa+1|0;Ta=a[Qa>>0]|0;Pa=Ta<<24>>24;if((Pa+ -32|0)>>>0>=32){Pa=Ta;break}}}else{Pa=Ta;Xa=0}while(0);do if(Pa<<24>>24==42){Pa=Qa+1|0;Ta=(a[Pa>>0]|0)+ -48|0;if(Ta>>>0<10?(a[Qa+2>>0]|0)==36:0){c[l+(Ta<<2)>>2]=10;Oa=1;Ta=Qa+3|0;Qa=c[j+((a[Pa>>0]|0)+ -48<<3)>>2]|0}else{if(Oa){p=-1;Na=376;break a}if(!L){Oa=0;Qa=0;break}Oa=c[g>>2]|0;Qa=c[Oa>>2]|0;c[g>>2]=Oa+4;Oa=0;Ta=Pa}if((Qa|0)<0){Pa=Ta;Xa=Xa|8192;Qa=0-Qa|0}else Pa=Ta}else{Ta=Pa<<24>>24;if((Ta+ -48|0)>>>0<10){Pa=Qa;Qa=0;do{Qa=Ta+ -48+(Qa*10|0)|0;Pa=Pa+1|0;Ta=a[Pa>>0]|0}while((Ta+ -48|0)>>>0<10);if((Qa|0)<0){p=-1;Na=376;break a}}else{Pa=Qa;Qa=0}}while(0);d:do if((a[Pa>>0]|0)==46){Ta=Pa+1|0;Ya=a[Ta>>0]|0;if(Ya<<24>>24!=42){Ya=Ya<<24>>24;if((Ya+ -48|0)>>>0<10){Pa=Ta;Ta=0}else{Pa=Ta;Ta=0;break}while(1){Ta=Ya+ -48+(Ta*10|0)|0;Pa=Pa+1|0;Ya=a[Pa>>0]|0;if((Ya+ -48|0)>>>0>=10)break d}}Ta=Pa+2|0;Ya=(a[Ta>>0]|0)+ -48|0;if(Ya>>>0<10?(a[Pa+3>>0]|0)==36:0){c[l+(Ya<<2)>>2]=10;Pa=Pa+4|0;Ta=c[j+((a[Ta>>0]|0)+ -48<<3)>>2]|0;break}if(Oa){p=-1;Na=376;break a}if(L){Pa=c[g>>2]|0;fb=c[Pa>>2]|0;c[g>>2]=Pa+4;Pa=Ta;Ta=fb}else{Pa=Ta;Ta=0}}else Ta=-1;while(0);Za=Pa;Ya=0;while(1){_a=a[Za>>0]|0;$a=(_a<<24>>24)+ -65|0;if($a>>>0>57){p=-1;Na=376;break a}Pa=Za+1|0;ab=a[29440+(Ya*58|0)+$a>>0]|0;$a=ab&255;if(($a+ -1|0)>>>0<8){Za=Pa;Ya=$a}else break}if(!(ab<<24>>24)){p=-1;Na=376;break}bb=(Wa|0)>-1;e:do if(ab<<24>>24==19)if(bb){p=-1;Na=376;break a}else{Q=Ra;P=Ua;Na=63}else{if(bb){c[l+(Wa<<2)>>2]=$a;P=j+(Wa<<3)|0;Q=c[P+4>>2]|0;P=c[P>>2]|0;Na=63;break}if(!L){p=0;Na=376;break a}if((ab&255)>20){T=_a;U=Ua;V=Ra}else do switch($a|0){case 11:{S=c[g>>2]|0;R=c[S>>2]|0;c[g>>2]=S+4;S=0;Na=64;break e};case 14:{S=c[g>>2]|0;R=c[S>>2]|0;c[g>>2]=S+4;R=R&65535;S=0;Na=64;break e};case 12:{Na=c[g>>2]|0;S=Na;R=c[S>>2]|0;S=c[S+4>>2]|0;c[g>>2]=Na+8;Na=64;break e};case 16:{S=c[g>>2]|0;R=c[S>>2]|0;c[g>>2]=S+4;R=R&255;S=0;Na=64;break e};case 15:{R=c[g>>2]|0;S=c[R>>2]|0;c[g>>2]=R+4;R=S<<24>>24;S=(((S&255)<<24>>24|0)<0)<<31>>31;Na=64;break e};case 17:{R=c[g>>2]|0;c[k>>2]=c[R>>2];c[k+4>>2]=c[R+4>>2];gb=+h[k>>3];c[g>>2]=R+8;h[k>>3]=gb;R=c[k>>2]|0;S=c[k+4>>2]|0;Na=64;break e};case 9:{S=c[g>>2]|0;R=c[S>>2]|0;c[g>>2]=S+4;S=Ra;Na=64;break e};case 10:{R=c[g>>2]|0;S=c[R>>2]|0;c[g>>2]=R+4;R=S;S=((S|0)<0)<<31>>31;Na=64;break e};case 13:{R=c[g>>2]|0;S=c[R>>2]|0;c[g>>2]=R+4;R=S<<16>>16;S=(((S&65535)<<16>>16|0)<0)<<31>>31;Na=64;break e};case 18:{R=c[g>>2]|0;c[k>>2]=c[R>>2];c[k+4>>2]=c[R+4>>2];gb=+h[k>>3];c[g>>2]=R+8;h[k>>3]=gb;R=c[k>>2]|0;S=c[k+4>>2]|0;Na=64;break e};default:{R=Ua;S=Ra;Na=64;break e}}while(0)}while(0);if((Na|0)==63){Na=0;if(L){R=P;S=Q;Na=64}else{Ra=Q;Ua=P;f=Pa;Sa=Oa;continue}}if((Na|0)==64){Na=0;T=a[Za>>0]|0;U=R;V=S}Ua=T<<24>>24;if(Ya)Ua=(Ua&15|0)==3?Ua&-33:Ua;Wa=Xa&-65537;Ra=(Xa&8192|0)==0?Xa:Wa;f:do switch(Ua|0){case 111:{Ba=U;Ma=(Ba|0)==0&(V|0)==0;if(Ma)Ja=Y;else{Ja=Y;xa=V;do{Ja=Ja+ -1|0;a[Ja>>0]=Ba&7|48;Ba=lr(Ba|0,xa|0,3)|0;xa=H}while(!((Ba|0)==0&(xa|0)==0))}if(!(Ra&8)){xa=U;Ba=V;La=Ra;Ia=Ta;Ka=0;Ma=29904;Na=94}else{xa=U;Ba=V;La=Ra;Ia=Ta;Ka=Ma&1^1;Ma=Ma?29904:29909;Na=94}break};case 67:{c[N>>2]=U;c[M>>2]=0;Z=N;X=N;q=-1;Na=115;break};case 83:{if(!Ta){sa=U;qa=U;ta=0;Na=122}else{Z=U;X=U;q=Ta;Na=115}break};case 109:{ja=bd(c[(Uc()|0)>>2]|0)|0;Na=99;break};case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{c[k>>2]=U;c[k+4>>2]=V;eb=+h[k>>3];c[r>>2]=0;if((V|0)>=0)if(!(Ra&2048)){Sa=Ra&1;f=Sa;Sa=(Sa|0)==0?29929:29934}else{f=1;Sa=29931}else{eb=-eb;f=1;Sa=29928}h[k>>3]=eb;fb=c[k+4>>2]&2146435072;if(!(fb>>>0<2146435072|(fb|0)==2146435072&0<0)){Ta=(Ua&32|0)!=0;if(eb!=eb|0.0!=0.0){f=0;Ua=Ta?29968:29976}else Ua=Ta?29952:29960;Va=f+3|0;Ta=(Va|0)<(Qa|0);if((Ra&8192|0)==0&Ta){Wa=Qa-Va|0;qr(s|0,32,(Wa>>>0>256?256:Wa)|0)|0;if(Wa>>>0>255)do{cr(s,256,e);Wa=Wa+ -256|0}while(Wa>>>0>255);cr(s,Wa,e)}cr(Sa,f,e);cr(Ua,3,e);if((Ra&73728|0)==8192&Ta){Ra=Qa-Va|0;qr(s|0,32,(Ra>>>0>256?256:Ra)|0)|0;if(Ra>>>0>255)do{cr(s,256,e);Ra=Ra+ -256|0}while(Ra>>>0>255);cr(s,Ra,e)}Ra=V;Ua=U;f=Pa;Va=Ta?Qa:Va;Sa=Oa;continue a}eb=+$q(eb,r)*2.0;Wa=eb!=0.0;if(Wa)c[r>>2]=(c[r>>2]|0)+ -1;Ya=Ua|32;if((Ya|0)==97){Wa=Ua&32;Sa=(Wa|0)==0?Sa:Sa+9|0;f=f|2;Va=Ta>>>0>11?0:12-Ta|0;do if(Va){gb=8.0;do{Va=Va+ -1|0;gb=gb*16.0}while((Va|0)!=0);if((a[Sa>>0]|0)==45){eb=-(gb+(-eb-gb));break}else{eb=eb+gb-gb;break}}while(0);Ya=c[r>>2]|0;Ya=(Ya|0)<0?0-Ya|0:Ya;if((Ya|0)<0){Xa=t;Va=Ya;Ya=((Ya|0)<0)<<31>>31;while(1){fb=zr(Va|0,Ya|0,10,0)|0;Xa=Xa+ -1|0;a[Xa>>0]=fb|48;fb=Va;Va=yr(Va|0,Ya|0,10,0)|0;if(!(Ya>>>0>9|(Ya|0)==9&fb>>>0>4294967295))break;else Ya=H}}else{Xa=t;Va=Ya}if(Va)while(1){Xa=Xa+ -1|0;a[Xa>>0]=(Va>>>0)%10|0|48;if(Va>>>0<10)break;else Va=(Va>>>0)/10|0}if((Xa|0)==(t|0)){a[u>>0]=48;Xa=u}a[Xa+ -1>>0]=(c[r>>2]>>31&2)+43;Va=Xa+ -2|0;a[Va>>0]=Ua+15;Ua=(Ra&8|0)==0;if((Ta|0)>0)if(Ua){Xa=v;while(1){fb=~~eb;Ua=Xa+1|0;a[Xa>>0]=d[29984+fb>>0]|Wa;eb=(eb- +(fb|0))*16.0;if((Ua-w|0)==1){a[Ua>>0]=46;Ua=Xa+2|0}if(!(eb!=0.0))break;else Xa=Ua}}else{Xa=v;while(1){fb=~~eb;Ua=Xa+1|0;a[Xa>>0]=d[29984+fb>>0]|Wa;eb=(eb- +(fb|0))*16.0;if((Ua-w|0)==1){a[Ua>>0]=46;Ua=Xa+2|0}if(!(eb!=0.0))break;else Xa=Ua}}else if(Ua){Ya=v;while(1){Xa=~~eb;Ua=Ya+1|0;a[Ya>>0]=d[29984+Xa>>0]|Wa;eb=(eb- +(Xa|0))*16.0;Xa=eb!=0.0;if((Ua-w|0)==1&Xa){a[Ua>>0]=46;Ua=Ya+2|0}if(!Xa)break;else Ya=Ua}}else{Xa=v;while(1){fb=~~eb;Ua=Xa+1|0;a[Xa>>0]=d[29984+fb>>0]|Wa;eb=(eb- +(fb|0))*16.0;if((Ua-w|0)==1){a[Ua>>0]=46;Ua=Xa+2|0}if(!(eb!=0.0))break;else Xa=Ua}}do if(!Ta)Na=186;else{if((x+Ua|0)>=(Ta|0)){Na=186;break}W=y+Ta-Va|0}while(0);if((Na|0)==186){Na=0;W=z-Va+Ua|0}Ta=W+f|0;Ra=Ra&73728;Wa=(Ta|0)<(Qa|0);if((Ra|0)==0&Wa){Xa=Qa-Ta|0;qr(s|0,32,(Xa>>>0>256?256:Xa)|0)|0;if(Xa>>>0>255)do{cr(s,256,e);Xa=Xa+ -256|0}while(Xa>>>0>255);cr(s,Xa,e)}cr(Sa,f,e);if((Ra|0)==65536&Wa){Sa=Qa-Ta|0;qr(s|0,48,(Sa>>>0>256?256:Sa)|0)|0;if(Sa>>>0>255)do{cr(s,256,e);Sa=Sa+ -256|0}while(Sa>>>0>255);cr(s,Sa,e)}f=Ua-w|0;cr(v,f,e);Sa=A-Va|0;f=W-Sa-f|0;if((f|0)>0){qr(s|0,48,(f>>>0>256?256:f)|0)|0;if(f>>>0>255)do{cr(s,256,e);f=f+ -256|0}while(f>>>0>255);cr(s,f,e)}cr(Va,Sa,e);if((Ra|0)==8192&Wa){Ra=Qa-Ta|0;qr(s|0,32,(Ra>>>0>256?256:Ra)|0)|0;if(Ra>>>0>255)do{cr(s,256,e);Ra=Ra+ -256|0}while(Ra>>>0>255);cr(s,Ra,e)}Ra=V;Ua=U;f=Pa;Va=Wa?Qa:Ta;Sa=Oa;continue a}Va=(Ta|0)<0?6:Ta;if(Wa){Ta=(c[r>>2]|0)+ -28|0;c[r>>2]=Ta;eb=eb*268435456.0}else Ta=c[r>>2]|0;Ta=(Ta|0)<0?B:C;Wa=Ta;do{fb=~~eb>>>0;c[Wa>>2]=fb;Wa=Wa+4|0;eb=(eb- +(fb>>>0))*1.0e9}while(eb!=0.0);ab=c[r>>2]|0;if((ab|0)>0){Xa=Ta;do{Za=(ab|0)>29?29:ab;$a=Wa+ -4|0;do if($a>>>0>=Xa>>>0){_a=0;do{db=or(c[$a>>2]|0,0,Za|0)|0;db=kr(db|0,H|0,_a|0,0)|0;fb=H;cb=zr(db|0,fb|0,1e9,0)|0;c[$a>>2]=cb;_a=yr(db|0,fb|0,1e9,0)|0;$a=$a+ -4|0}while($a>>>0>=Xa>>>0);if(!_a)break;Xa=Xa+ -4|0;c[Xa>>2]=_a}while(0);while(1){if(Wa>>>0<=Xa>>>0)break;_a=Wa+ -4|0;if(!(c[_a>>2]|0))Wa=_a;else break}ab=(c[r>>2]|0)-Za|0;c[r>>2]=ab}while((ab|0)>0)}else Xa=Ta;g:do if((ab|0)<0){Za=((Va+25|0)/9|0)+1|0;if((Ya|0)==102){_a=Ta;$a=Ta+(Za<<2)|0;while(1){ab=0-ab|0;ab=(ab|0)>9?9:ab;do if(Xa>>>0>>0){cb=(1<>>ab;bb=0;fb=Xa;do{hb=c[fb>>2]|0;c[fb>>2]=(hb>>>ab)+bb;bb=da(hb&cb,db)|0;fb=fb+4|0}while(fb>>>0>>0);Xa=(c[Xa>>2]|0)==0?Xa+4|0:Xa;if(!bb)break;c[Wa>>2]=bb;Wa=Wa+4|0}else Xa=(c[Xa>>2]|0)==0?Xa+4|0:Xa;while(0);Wa=(Wa-_a>>2|0)>(Za|0)?$a:Wa;ab=(c[r>>2]|0)+ab|0;c[r>>2]=ab;if((ab|0)>=0)break g}}do{_a=0-ab|0;_a=(_a|0)>9?9:_a;do if(Xa>>>0>>0){cb=(1<<_a)+ -1|0;ab=1e9>>>_a;$a=0;bb=Xa;do{hb=c[bb>>2]|0;c[bb>>2]=(hb>>>_a)+$a;$a=da(hb&cb,ab)|0;bb=bb+4|0}while(bb>>>0>>0);Xa=(c[Xa>>2]|0)==0?Xa+4|0:Xa;if(!$a)break;c[Wa>>2]=$a;Wa=Wa+4|0}else Xa=(c[Xa>>2]|0)==0?Xa+4|0:Xa;while(0);if((Wa-Xa>>2|0)>(Za|0))Wa=Xa+(Za<<2)|0;ab=(c[r>>2]|0)+_a|0;c[r>>2]=ab}while((ab|0)<0)}while(0);Za=Ta;do if(Xa>>>0>>0){_a=(Za-Xa>>2)*9|0;$a=c[Xa>>2]|0;if($a>>>0<10)break;else ab=10;do{ab=ab*10|0;_a=_a+1|0}while($a>>>0>=ab>>>0)}else _a=0;while(0);$a=(Ya|0)==103;Ya=Va-((Ya|0)!=102?_a:0)+(($a&(Va|0)!=0)<<31>>31)|0;if((Ya|0)<(((Wa-Za>>2)*9|0)+ -9|0)){cb=Ya+9216|0;bb=(cb|0)/9|0;Ya=Ta+(bb+ -1023<<2)|0;cb=((cb|0)%9|0)+1|0;if((cb|0)<9){ab=10;do{ab=ab*10|0;cb=cb+1|0}while((cb|0)!=9)}else ab=10;db=c[Ya>>2]|0;cb=(db>>>0)%(ab>>>0)|0;if((cb|0)==0?(Ta+(bb+ -1022<<2)|0)==(Wa|0):0){va=Xa;wa=Ya;Da=_a}else Na=246;do if((Na|0)==246){Na=0;eb=(((db>>>0)/(ab>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;va=(ab|0)/2|0;do if(cb>>>0>>0)gb=.5;else{if((cb|0)==(va|0)?(Ta+(bb+ -1022<<2)|0)==(Wa|0):0){gb=1.0;break}gb=1.5}while(0);do if(f){if((a[Sa>>0]|0)!=45)break;eb=eb*-1.0;gb=gb*-1.0}while(0);va=db-cb|0;c[Ya>>2]=va;if(!(eb+gb!=eb)){va=Xa;wa=Ya;Da=_a;break}hb=va+ab|0;c[Ya>>2]=hb;if(hb>>>0>999999999){va=Xa;while(1){wa=Ya+ -4|0;c[Ya>>2]=0;if(wa>>>0>>0){va=va+ -4|0;c[va>>2]=0}hb=(c[wa>>2]|0)+1|0;c[wa>>2]=hb;if(hb>>>0>999999999)Ya=wa;else break}}else{va=Xa;wa=Ya}Da=(Za-va>>2)*9|0;Xa=c[va>>2]|0;if(Xa>>>0<10)break;else Ya=10;do{Ya=Ya*10|0;Da=Da+1|0}while(Xa>>>0>=Ya>>>0)}while(0);hb=wa+4|0;Xa=va;Ya=Da;Wa=Wa>>>0>hb>>>0?hb:Wa}else Ya=_a;bb=0-Ya|0;while(1){if(Wa>>>0<=Xa>>>0){_a=0;break}_a=Wa+ -4|0;if(!(c[_a>>2]|0))Wa=_a;else{_a=1;break}}do if($a){Va=((Va|0)==0&1)+Va|0;if((Va|0)>(Ya|0)&(Ya|0)>-5){Ua=Ua+ -1|0;Va=Va+ -1-Ya|0}else{Ua=Ua+ -2|0;Va=Va+ -1|0}if(Ra&8)break;do if(_a){ab=c[Wa+ -4>>2]|0;if(!ab){cb=9;break}if(!((ab>>>0)%10|0)){$a=10;cb=0}else{cb=0;break}do{$a=$a*10|0;cb=cb+1|0}while(((ab>>>0)%($a>>>0)|0|0)==0)}else cb=9;while(0);Za=((Wa-Za>>2)*9|0)+ -9|0;if((Ua|32|0)==102){hb=Za-cb|0;hb=(hb|0)<0?0:hb;Va=(Va|0)<(hb|0)?Va:hb;break}else{hb=Za+Ya-cb|0;hb=(hb|0)<0?0:hb;Va=(Va|0)<(hb|0)?Va:hb;break}}while(0);$a=(Va|0)!=0;if($a)Za=1;else Za=(Ra&8|0)!=0;Za=Za&1;ab=(Ua|32|0)==102;if(ab){Ua=(Ya|0)>0?Ya:0;bb=0}else{cb=(Ya|0)<0?bb:Ya;if((cb|0)<0){db=t;bb=cb;cb=((cb|0)<0)<<31>>31;while(1){hb=zr(bb|0,cb|0,10,0)|0;db=db+ -1|0;a[db>>0]=hb|48;hb=bb;bb=yr(bb|0,cb|0,10,0)|0;if(!(cb>>>0>9|(cb|0)==9&hb>>>0>4294967295))break;else cb=H}}else{db=t;bb=cb}if(bb)while(1){db=db+ -1|0;a[db>>0]=(bb>>>0)%10|0|48;if(bb>>>0<10)break;else bb=(bb>>>0)/10|0}if((A-db|0)<2)do{db=db+ -1|0;a[db>>0]=48}while((A-db|0)<2);a[db+ -1>>0]=(Ya>>31&2)+43;bb=db+ -2|0;a[bb>>0]=Ua;Ua=A-bb|0}Ya=f+1+Va+Za+Ua|0;Ua=Ra&73728;Za=(Ya|0)<(Qa|0);if((Ua|0)==0&Za){cb=Qa-Ya|0;qr(s|0,32,(cb>>>0>256?256:cb)|0)|0;if(cb>>>0>255)do{cr(s,256,e);cb=cb+ -256|0}while(cb>>>0>255);cr(s,cb,e)}cr(Sa,f,e);if((Ua|0)==65536&Za){Sa=Qa-Ya|0;qr(s|0,48,(Sa>>>0>256?256:Sa)|0)|0;if(Sa>>>0>255)do{cr(s,256,e);Sa=Sa+ -256|0}while(Sa>>>0>255);cr(s,Sa,e)}do if(ab){f=Xa>>>0>Ta>>>0?Ta:Xa;Sa=f;do{_a=c[Sa>>2]|0;if(!_a)Xa=D;else{Xa=D;while(1){Xa=Xa+ -1|0;a[Xa>>0]=(_a>>>0)%10|0|48;if(_a>>>0<10)break;else _a=(_a>>>0)/10|0}}do if((Sa|0)==(f|0)){if((Xa|0)!=(D|0))break;a[F>>0]=48;Xa=F}else{if(Xa>>>0<=v>>>0)break;do{Xa=Xa+ -1|0;a[Xa>>0]=48}while(Xa>>>0>v>>>0)}while(0);cr(Xa,E-Xa|0,e);Sa=Sa+4|0}while(Sa>>>0<=Ta>>>0);if(!$a?(Ra&8|0)==0:0)break;cr(3e4,1,e);if(Sa>>>0>>0&(Va|0)>0)do{Ta=c[Sa>>2]|0;if(Ta){Ra=D;while(1){Ra=Ra+ -1|0;a[Ra>>0]=(Ta>>>0)%10|0|48;if(Ta>>>0<10)break;else Ta=(Ta>>>0)/10|0}if(Ra>>>0>v>>>0){$=Ra;Na=313}else na=Ra}else{$=D;Na=313}if((Na|0)==313)while(1){Na=0;na=$+ -1|0;a[na>>0]=48;if(na>>>0>v>>>0)$=na;else break}cr(na,(Va|0)>9?9:Va,e);Sa=Sa+4|0;Va=Va+ -9|0}while(Sa>>>0>>0&(Va|0)>0);if((Va|0)<=0)break;qr(s|0,48,(Va>>>0>256?256:Va)|0)|0;if(Va>>>0>255)do{cr(s,256,e);Va=Va+ -256|0}while(Va>>>0>255);cr(s,Va,e)}else{Sa=_a?Wa:Xa+4|0;do if((Va|0)>-1){Ra=(Ra&8|0)!=0;Ta=Xa;do{Wa=c[Ta>>2]|0;if(Wa){f=D;while(1){f=f+ -1|0;a[f>>0]=(Wa>>>0)%10|0|48;if(Wa>>>0<10)break;else Wa=(Wa>>>0)/10|0}if((f|0)!=(D|0))aa=f;else Na=324}else Na=324;if((Na|0)==324){Na=0;a[F>>0]=48;aa=F}do if((Ta|0)==(Xa|0)){f=aa+1|0;cr(aa,1,e);if(!((Va|0)>0|Ra))break;cr(3e4,1,e)}else{if(aa>>>0>v>>>0)f=aa;else{f=aa;break}do{f=f+ -1|0;a[f>>0]=48}while(f>>>0>v>>>0)}while(0);hb=E-f|0;cr(f,(hb|0)<(Va|0)?hb:Va,e);Va=Va-hb|0;Ta=Ta+4|0}while(Ta>>>0>>0&(Va|0)>-1);if((Va|0)<=0)break;qr(s|0,48,(Va>>>0>256?256:Va)|0)|0;if(Va>>>0>255)do{cr(s,256,e);Va=Va+ -256|0}while(Va>>>0>255);cr(s,Va,e)}while(0);cr(bb,A-bb|0,e)}while(0);if((Ua|0)==8192&Za){Ra=Qa-Ya|0;qr(s|0,32,(Ra>>>0>256?256:Ra)|0)|0;if(Ra>>>0>255)do{cr(s,256,e);Ra=Ra+ -256|0}while(Ra>>>0>255);cr(s,Ra,e)}Ra=V;Ua=U;f=Pa;Va=Za?Qa:Ya;Sa=Oa;continue a};case 88:case 120:{ca=Ra;ea=Ta;ba=Ua;Na=77;break};case 105:case 100:{if((V|0)<0){fa=jr(0,0,U|0,V|0)|0;ga=H;ha=1;ia=29904;Na=89;break f}if(!(Ra&2048)){ia=Ra&1;fa=U;ga=V;ha=ia;ia=(ia|0)==0?29904:29906;Na=89}else{fa=U;ga=V;ha=1;ia=29905;Na=89}break};case 117:{fa=U;ga=V;ha=0;ia=29904;Na=89;break};case 99:{a[J>>0]=U;Aa=V;za=U;ya=J;Ca=Wa;Ga=1;Fa=0;Ea=29904;Ha=Y;break};case 110:switch(Ya|0){case 7:{Ra=U;c[Ra>>2]=pa;c[Ra+4>>2]=((pa|0)<0)<<31>>31;Ra=V;Ua=U;f=Pa;Sa=Oa;continue a};case 0:{c[U>>2]=pa;Ra=V;Ua=U;f=Pa;Sa=Oa;continue a};case 2:{Ra=U;c[Ra>>2]=pa;c[Ra+4>>2]=((pa|0)<0)<<31>>31;Ra=V;Ua=U;f=Pa;Sa=Oa;continue a};case 6:{c[U>>2]=pa;Ra=V;Ua=U;f=Pa;Sa=Oa;continue a};case 1:{c[U>>2]=pa;Ra=V;Ua=U;f=Pa;Sa=Oa;continue a};case 3:{b[U>>1]=pa;Ra=V;Ua=U;f=Pa;Sa=Oa;continue a};case 4:{a[U>>0]=pa;Ra=V;Ua=U;f=Pa;Sa=Oa;continue a};default:{Ra=V;Ua=U;f=Pa;Sa=Oa;continue a}};case 112:{ca=Ra|8;ea=Ta>>>0>8?Ta:8;ba=120;Na=77;break};case 115:{ja=(U|0)==0?29920:U;Na=99;break};default:{Aa=V;za=U;ya=f;Ca=Ra;Ga=Ta;Fa=0;Ea=29904;Ha=Y}}while(0);h:do if((Na|0)==77){Ba=U;xa=ba&32;if(!((Ba|0)==0&(V|0)==0)){Ja=Y;Ia=V;do{Ja=Ja+ -1|0;a[Ja>>0]=d[29984+(Ba&15)>>0]|xa;Ba=lr(Ba|0,Ia|0,4)|0;Ia=H}while(!((Ba|0)==0&(Ia|0)==0));if(!(ca&8)){xa=U;Ba=V;La=ca;Ia=ea;Ka=0;Ma=29904;Na=94}else{xa=U;Ba=V;La=ca;Ia=ea;Ka=2;Ma=29904+(ba>>4)|0;Na=94}}else{xa=U;Ba=V;Ja=Y;La=ca;Ia=ea;Ka=0;Ma=29904;Na=94}}else if((Na|0)==89){xa=fa;if(ga>>>0>0|(ga|0)==0&xa>>>0>4294967295){Ja=Y;Ba=ga;while(1){hb=zr(xa|0,Ba|0,10,0)|0;Ja=Ja+ -1|0;a[Ja>>0]=hb|48;hb=xa;xa=yr(xa|0,Ba|0,10,0)|0;if(!(Ba>>>0>9|(Ba|0)==9&hb>>>0>4294967295))break;else Ba=H}}else Ja=Y;if(!xa){xa=fa;Ba=ga;La=Ra;Ia=Ta;Ka=ha;Ma=ia;Na=94}else while(1){Ja=Ja+ -1|0;a[Ja>>0]=(xa>>>0)%10|0|48;if(xa>>>0<10){xa=fa;Ba=ga;La=Ra;Ia=Ta;Ka=ha;Ma=ia;Na=94;break}else xa=(xa>>>0)/10|0}}else if((Na|0)==99){Na=0;Ea=ja;ya=(Ta|0)==0;i:do if((Ea&3|0)==0|ya){_=Ta;ka=ya;la=ja;Na=102}else{za=Ta;ya=ja;while(1){if(!(a[ya>>0]|0)){ra=za;ua=ya;break i}ya=ya+1|0;za=za+ -1|0;Aa=(za|0)==0;if((ya&3|0)==0|Aa){_=za;ka=Aa;la=ya;Na=102;break}}}while(0);j:do if((Na|0)==102){Na=0;if(!ka)if(a[la>>0]|0){k:do if(_>>>0>3){ra=_;ua=la;do{hb=c[ua>>2]|0;if((hb&-2139062144^-2139062144)&hb+ -16843009)break k;ua=ua+4|0;ra=ra+ -4|0}while(ra>>>0>3)}else{ra=_;ua=la}while(0);if(!ra)ra=0;else while(1){if(!(a[ua>>0]|0))break j;ua=ua+1|0;ra=ra+ -1|0;if(!ra){ra=0;break}}}else{ra=_;ua=la}else{ra=0;ua=la}}while(0);Ha=(ra|0)!=0?ua:0;if(!Ha){Aa=V;za=U;ya=ja;Ca=Wa;Ga=Ta;Fa=0;Ea=29904;Ha=ja+Ta|0;break}else{Aa=V;za=U;ya=ja;Ca=Wa;Ga=Ha-Ea|0;Fa=0;Ea=29904;break}}else if((Na|0)==115){ta=0;sa=0;qa=Z;while(1){Na=c[qa>>2]|0;if(!Na)break;sa=ar(G,Na)|0;if((sa|0)<=-1){p=-1;Na=376;break a}Na=sa+ta|0;if(sa>>>0>(q-ta|0)>>>0){sa=Z;qa=X;Na=122;break h}if(Na>>>0>=q>>>0){ta=Na;break}ta=Na;qa=qa+4|0}if((sa|0)<0){p=-1;Na=376;break a}else{sa=Z;qa=X;Na=122}}while(0);if((Na|0)==94){Na=0;Ca=(Ia|0)>-1?La&-65537:La;ya=(xa|0)==0&(Ba|0)==0;if(ya&(Ia|0)==0){Aa=Ba;za=xa;ya=Y;Ga=0;Fa=Ka;Ea=Ma;Ha=Y}else{Ga=(ya&1)+(I-Ja)|0;Aa=Ba;za=xa;ya=Ja;Ga=(Ia|0)>(Ga|0)?Ia:Ga;Fa=Ka;Ea=Ma;Ha=Y}}else if((Na|0)==122){Na=0;Ra=Ra&73728;Sa=(ta|0)<(Qa|0);if((Ra|0)==0&Sa){Ta=Qa-ta|0;qr(s|0,32,(Ta>>>0>256?256:Ta)|0)|0;if(Ta>>>0>255)do{cr(s,256,e);Ta=Ta+ -256|0}while(Ta>>>0>255);cr(s,Ta,e)}l:do if(ta){f=0;Ta=sa;while(1){Ua=c[Ta>>2]|0;if(!Ua)break l;Ua=ar(G,Ua)|0;f=Ua+f|0;if((f|0)>(ta|0))break l;cr(G,Ua,e);if(f>>>0>=ta>>>0)break l;Ta=Ta+4|0}}while(0);if((Ra|0)==8192&Sa){Ra=Qa-ta|0;qr(s|0,32,(Ra>>>0>256?256:Ra)|0)|0;if(Ra>>>0>255)do{cr(s,256,e);Ra=Ra+ -256|0}while(Ra>>>0>255);cr(s,Ra,e)}Ra=V;Ua=qa;f=Pa;Va=Sa?Qa:ta;Sa=Oa;continue}Ra=Ha-ya|0;f=(Ga|0)<(Ra|0)?Ra:Ga;Sa=Fa+f|0;Va=(Qa|0)<(Sa|0)?Sa:Qa;Ta=Ca&73728;Qa=(Sa|0)<(Va|0);if((Ta|0)==0&Qa){Ua=Va-Sa|0;qr(s|0,32,(Ua>>>0>256?256:Ua)|0)|0;if(Ua>>>0>255)do{cr(s,256,e);Ua=Ua+ -256|0}while(Ua>>>0>255);cr(s,Ua,e)}cr(Ea,Fa,e);if((Ta|0)==65536&Qa){Ua=Va-Sa|0;qr(s|0,48,(Ua>>>0>256?256:Ua)|0)|0;if(Ua>>>0>255)do{cr(s,256,e);Ua=Ua+ -256|0}while(Ua>>>0>255);cr(s,Ua,e)}if((Ra|0)<(f|0)){f=f-Ra|0;qr(s|0,48,(f>>>0>256?256:f)|0)|0;if(f>>>0>255)do{cr(s,256,e);f=f+ -256|0}while(f>>>0>255);cr(s,f,e)}cr(ya,Ra,e);if(!((Ta|0)==8192&Qa)){Ra=Aa;Ua=za;f=Pa;Sa=Oa;continue}Qa=Va-Sa|0;qr(s|0,32,(Qa>>>0>256?256:Qa)|0)|0;if(Qa>>>0>255)do{cr(s,256,e);Qa=Qa+ -256|0}while(Qa>>>0>255);cr(s,Qa,e);Ra=Aa;Ua=za;f=Pa;Sa=Oa}if((Na|0)==357){if(e){hb=pa;i=m;return hb|0}if(!Sa){hb=0;i=m;return hb|0}else q=1;while(1){r=c[l+(q<<2)>>2]|0;if(!r){n=1;o=q;break}s=j+(q<<3)|0;m:do if(r>>>0<=20)do switch(r|0){case 10:{hb=c[g>>2]|0;fb=c[hb>>2]|0;c[g>>2]=hb+4;hb=s;c[hb>>2]=fb;c[hb+4>>2]=((fb|0)<0)<<31>>31;break m};case 11:{hb=c[g>>2]|0;fb=c[hb>>2]|0;c[g>>2]=hb+4;hb=s;c[hb>>2]=fb;c[hb+4>>2]=0;break m};case 12:{hb=c[g>>2]|0;fb=hb;db=c[fb>>2]|0;fb=c[fb+4>>2]|0;c[g>>2]=hb+8;hb=s;c[hb>>2]=db;c[hb+4>>2]=fb;break m};case 13:{hb=c[g>>2]|0;fb=c[hb>>2]|0;c[g>>2]=hb+4;fb=(fb&65535)<<16>>16;hb=s;c[hb>>2]=fb;c[hb+4>>2]=((fb|0)<0)<<31>>31;break m};case 14:{hb=c[g>>2]|0;fb=c[hb>>2]|0;c[g>>2]=hb+4;hb=s;c[hb>>2]=fb&65535;c[hb+4>>2]=0;break m};case 15:{hb=c[g>>2]|0;fb=c[hb>>2]|0;c[g>>2]=hb+4;fb=(fb&255)<<24>>24;hb=s;c[hb>>2]=fb;c[hb+4>>2]=((fb|0)<0)<<31>>31;break m};case 16:{hb=c[g>>2]|0;fb=c[hb>>2]|0;c[g>>2]=hb+4;hb=s;c[hb>>2]=fb&255;c[hb+4>>2]=0;break m};case 17:{hb=c[g>>2]|0;c[k>>2]=c[hb>>2];c[k+4>>2]=c[hb+4>>2];gb=+h[k>>3];c[g>>2]=hb+8;h[s>>3]=gb;break m};case 18:{hb=c[g>>2]|0;c[k>>2]=c[hb>>2];c[k+4>>2]=c[hb+4>>2];gb=+h[k>>3];c[g>>2]=hb+8;h[s>>3]=gb;break m};case 9:{fb=c[g>>2]|0;hb=c[fb>>2]|0;c[g>>2]=fb+4;c[s>>2]=hb;break m};default:break m}while(0);while(0);q=q+1|0;if((q|0)>=10){p=1;Na=376;break}}if((Na|0)==376){i=m;return p|0}while(1){o=o+1|0;if(!n){p=-1;Na=376;break}if((o|0)>=10){p=1;Na=376;break}n=(c[l+(o<<2)>>2]|0)==0}if((Na|0)==376){i=m;return p|0}}else if((Na|0)==376){i=m;return p|0}return 0}function fr(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=i;i=i+336|0;k=g+232|0;j=g+192|0;l=g;m=g+256|0;q=g+248|0;h=g+80|0;n=h+0|0;p=30008|0;o=n+112|0;do{c[n>>2]=c[p>>2];n=n+4|0;p=p+4|0}while((n|0)<(o|0));if((d+ -1|0)>>>0>2147483646)if(!d){n=q;d=1}else{c[(Uc()|0)>>2]=75;s=-1;i=g;return s|0}else n=b;b=-2-n|0;b=d>>>0>b>>>0?b:d;q=h+48|0;c[q>>2]=b;d=h+20|0;c[d>>2]=n;r=h+44|0;c[r>>2]=n;n=n+b|0;p=h+16|0;c[p>>2]=n;s=h+28|0;c[s>>2]=n;n=j+0|0;o=n+40|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(o|0));c[k>>2]=c[f>>2];if((er(0,e,k,l,j)|0)<0)e=-1;else if(!(c[q>>2]|0)){f=c[r>>2]|0;c[r>>2]=m;c[s>>2]=m;c[d>>2]=m;c[q>>2]=80;c[p>>2]=m+80;e=er(h,e,k,l,j)|0;if(f){fd[c[h+36>>2]&31](h,0,0)|0;e=(c[d>>2]|0)==0?-1:e;c[r>>2]=f;c[q>>2]=0;c[p>>2]=0;c[s>>2]=0;c[d>>2]=0}}else e=er(h,e,k,l,j)|0;if(!b){s=e;i=g;return s|0}s=c[d>>2]|0;a[s+(((s|0)==(c[p>>2]|0))<<31>>31)>>0]=0;s=e;i=g;return s|0}function gr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;f=a+20|0;g=c[f>>2]|0;a=(c[a+16>>2]|0)-g|0;a=a>>>0>d>>>0?d:a;nr(g|0,b|0,a|0)|0;c[f>>2]=(c[f>>2]|0)+a;i=e;return d|0}function hr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0.0,j=0;d=i;i=i+112|0;f=d;g=f+0|0;e=g+108|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(e|0));j=f+4|0;c[j>>2]=a;g=f+8|0;c[g>>2]=-1;c[f+44>>2]=a;c[f+76>>2]=-1;c[f+104>>2]=0;e=f+108|0;c[e>>2]=~a;c[f+100>>2]=-1;h=+Yq(f,2,1);e=(c[j>>2]|0)-(c[g>>2]|0)+(c[e>>2]|0)|0;if(!b){i=d;return+h}if(e)a=a+e|0;c[b>>2]=a;i=d;return+h}function ir(){}function jr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=b-d-(c>>>0>a>>>0|0)>>>0;return(H=b,a-c>>>0|0)|0}function kr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return(H=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function lr(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){H=b>>>c;return a>>>c|(b&(1<>>c-32|0}function mr(b){b=b|0;var c=0;c=b;while(a[c>>0]|0)c=c+1|0;return c-b|0}function nr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((e|0)>=4096)return Pa(b|0,d|0,e|0)|0;f=b|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}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function or(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){H=b<>>32-c;return a<0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else nr(b,c,d)|0;return b|0}function qr(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;if((e|0)>=20){d=d&255;i=b&3;h=d|d<<8|d<<16|d<<24;g=f&~3;if(i){i=b+4-i|0;while((b|0)<(i|0)){a[b>>0]=d;b=b+1|0}}while((b|0)<(g|0)){c[b>>2]=h;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return b-e|0}function rr(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){H=b>>c;return a>>>c|(b&(1<>c-32|0}function sr(b){b=b|0;var c=0;c=a[n+(b>>>24)>>0]|0;if((c|0)<8)return c|0;c=a[n+(b>>16&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[n+(b>>8&255)>>0]|0;if((c|0)<8)return c+16|0;return(a[n+(b&255)>>0]|0)+24|0}function tr(b){b=b|0;var c=0;c=a[m+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return(a[m+(b>>>24)>>0]|0)+24|0}function ur(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;d=b&65535;c=da(d,f)|0;e=a>>>16;d=(c>>>16)+(da(d,e)|0)|0;b=b>>>16;a=da(b,f)|0;return(H=(d>>>16)+(da(b,e)|0)+(((d&65535)+a|0)>>>16)|0,d+a<<16|c&65535|0)|0}function vr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=jr(j^a,i^b,j,i)|0;g=H;b=f^j;a=e^i;a=jr((Ar(h,g,jr(f^c,e^d,f,e)|0,H,0)|0)^b,H^a,b,a)|0;return a|0}function wr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+8|0;j=f|0;h=b>>31|((b|0)<0?-1:0)<<1;g=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;l=e>>31|((e|0)<0?-1:0)<<1;k=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;b=jr(h^a,g^b,h,g)|0;a=H;Ar(b,a,jr(l^d,k^e,l,k)|0,H,j)|0;a=jr(c[j>>2]^h,c[j+4>>2]^g,h,g)|0;b=H;i=f;return(H=b,a)|0}function xr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;a=ur(e,f)|0;c=H;return(H=(da(b,f)|0)+(da(d,e)|0)+c|c&0,a|0|0)|0}function yr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=Ar(a,b,c,d,0)|0;return a|0}function zr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+8|0;f=g|0;Ar(a,b,d,e,f)|0;i=g;return(H=c[f+4>>2]|0,c[f>>2]|0)|0}function Ar(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;h=a;j=b;i=j;l=d;g=e;k=g;if(!i){g=(f|0)!=0;if(!k){if(g){c[f>>2]=(h>>>0)%(l>>>0);c[f+4>>2]=0}k=0;m=(h>>>0)/(l>>>0)>>>0;return(H=k,m)|0}else{if(!g){l=0;m=0;return(H=l,m)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;l=0;m=0;return(H=l,m)|0}}m=(k|0)==0;do if(l){if(!m){k=(sr(k|0)|0)-(sr(i|0)|0)|0;if(k>>>0<=31){m=k+1|0;l=31-k|0;a=k-31>>31;j=m;b=h>>>(m>>>0)&a|i<>>(m>>>0)&a;k=0;l=h<>2]=a|0;c[f+4>>2]=j|b&0;l=0;m=0;return(H=l,m)|0}k=l-1|0;if(k&l){l=(sr(l|0)|0)+33-(sr(i|0)|0)|0;p=64-l|0;m=32-l|0;n=m>>31;o=l-32|0;a=o>>31;j=l;b=m-1>>31&i>>>(o>>>0)|(i<>>(l>>>0))&a;a=a&i>>>(l>>>0);k=h<>>(o>>>0))&n|h<>31;break}if(f){c[f>>2]=k&h;c[f+4>>2]=0}if((l|0)==1){o=j|b&0;p=a|0|0;return(H=o,p)|0}else{p=tr(l|0)|0;o=i>>>(p>>>0)|0;p=i<<32-p|h>>>(p>>>0)|0;return(H=o,p)|0}}else{if(m){if(f){c[f>>2]=(i>>>0)%(l>>>0);c[f+4>>2]=0}o=0;p=(i>>>0)/(l>>>0)>>>0;return(H=o,p)|0}if(!h){if(f){c[f>>2]=0;c[f+4>>2]=(i>>>0)%(k>>>0)}o=0;p=(i>>>0)/(k>>>0)>>>0;return(H=o,p)|0}l=k-1|0;if(!(l&k)){if(f){c[f>>2]=a|0;c[f+4>>2]=l&i|b&0}o=0;p=i>>>((tr(k|0)|0)>>>0);return(H=o,p)|0}k=(sr(k|0)|0)-(sr(i|0)|0)|0;if(k>>>0<=30){a=k+1|0;l=31-k|0;j=a;b=i<>>(a>>>0);a=i>>>(a>>>0);k=0;l=h<>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return(H=o,p)|0}while(0);if(!j){g=l;e=0;i=0}else{h=d|0|0;g=g|e&0;e=kr(h,g,-1,-1)|0;d=H;i=0;do{m=l;l=k>>>31|l<<1;k=i|k<<1;m=b<<1|m>>>31|0;n=b>>>31|a<<1|0;jr(e,d,m,n)|0;p=H;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;b=jr(m,n,o&h,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&g)|0;a=H;j=j-1|0}while((j|0)!=0);g=l;e=0}h=0;if(f){c[f>>2]=b;c[f+4>>2]=a}o=(k|0)>>>31|(g|h)<<1|(h<<1|k>>>31)&0|e;p=(k<<1|0>>>31)&-2|i;return(H=o,p)|0}function Br(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return fd[a&31](b|0,c|0,d|0)|0}function Cr(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;gd[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function Dr(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;hd[a&3](b|0,c|0,d|0,e|0,f|0)}function Er(a){a=a|0;return id[a&3]()|0}function Fr(a,b){a=a|0;b=b|0;jd[a&255](b|0)}function Gr(a,b,c){a=a|0;b=b|0;c=c|0;kd[a&63](b|0,c|0)}function Hr(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ld[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function Ir(a,b){a=a|0;b=b|0;return md[a&127](b|0)|0}function Jr(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;nd[a&3](b|0,c|0,d|0,e|0,f|0,g|0,+h)}function Kr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;od[a&15](b|0,c|0,d|0)}function Lr(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;pd[a&7](b|0,c|0,d|0,e|0,f|0,+g)}function Mr(a){a=a|0;qd[a&3]()}function Nr(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return rd[a&15](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function Or(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return sd[a&7](b|0,c|0,d|0,e|0)|0}function Pr(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;td[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function Qr(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;ud[a&31](b|0,c|0,d|0,e|0,f|0,g|0)}function Rr(a,b,c){a=a|0;b=b|0;c=c|0;return vd[a&63](b|0,c|0)|0}function Sr(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 wd[a&15](b|0,c|0,d|0,e|0,f|0)|0}function Tr(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;xd[a&15](b|0,c|0,d|0,e|0)}function Ur(a,b,c){a=a|0;b=b|0;c=c|0;ea(0);return 0}function Vr(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;ea(1)}function Wr(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ea(2)}function Xr(){ea(3);return 0}function Yr(a){a=a|0;ea(4)}function Zr(a,b){a=a|0;b=b|0;ea(5)}function _r(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ea(6)}function $r(a){a=a|0;ea(7);return 0}function as(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;ea(8)}function bs(a,b,c){a=a|0;b=b|0;c=c|0;ea(9)}function cs(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ea(10)}function ds(){ea(11)}function es(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ea(12);return 0}function fs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ea(13);return 0}function gs(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ea(14)}function hs(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ea(15)}function is(a,b){a=a|0;b=b|0;ea(16);return 0}function js(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ea(17);return 0}function ks(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ea(18)} - - - - -// EMSCRIPTEN_END_FUNCS -var fd=[Ur,cj,hj,lj,qj,vj,Sh,zj,ei,pi,qi,hk,mk,Dn,In,lo,no,qo,Xn,ao,co,go,Aq,Gq,zq,gr,Wp,Ur,Ur,Ur,Ur,Ur];var gd=[Vr,pk,rk,sk,tk,uk,vk,wk,xk,yk,zk,Ak,Gk,Ik,Jk,Kk,Lk,Mk,Nk,Ok,Pk,Qk,Rk,el,gl,tl,vl,El,Fl,Gl,Il,Kl,Sl,Tl,Ul,Wl,Yl,un,An,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr];var hd=[Wr,Nq,Mq,Jq];var id=[Xr,Yd,Rd,Xr];var jd=[Yr,be,ce,qe,re,se,ue,we,xe,Ae,Be,Ce,Ee,Fe,Ge,Je,Ke,Le,Ne,Pe,Qe,Te,Ue,Ve,Xe,Ye,Ze,af,bf,cf,ef,ff,gf,kf,lf,mf,of,qf,rf,sf,tf,uf,wf,xf,yf,zf,Bf,Cf,Df,Ef,Gf,Hf,If,Rf,Sf,Xf,Yf,bg,cg,dg,fg,hg,ig,jg,kg,lg,ng,pg,qg,rg,sg,tg,vg,xg,yg,zg,Ag,Bg,Dg,Eg,Hg,Fg,Ig,Gg,Jg,Cj,Bj,Ej,Dj,Kg,Lg,Tg,Ug,Vg,Xg,$g,ah,_g,bh,Zg,ch,dh,eh,fh,gh,hh,ih,kh,lh,oh,ph,uh,vh,th,wh,Yg,xh,zh,Ah,Bh,Dh,Eh,Fh,Gh,Ih,Oh,Ph,Uh,Vh,ai,bi,gi,hi,Ai,zi,ti,Bi,xi,Ci,aj,$i,oj,nj,Hj,Gj,Jj,Ij,Mj,Lj,Oj,Nj,Tj,Sj,Vj,Uj,$j,_j,_i,ak,Zj,bk,dk,ck,Un,jk,ik,ok,nk,Fk,Ek,_k,Zk,ol,nl,Cl,Bl,Ql,Pl,bm,am,gm,fm,jm,im,um,tm,Fm,Em,Qm,Pm,$m,_m,kn,jn,qn,pn,wn,vn,Cn,Bn,Hn,Gn,Pn,On,jo,io,Ln,Ao,$o,_o,bp,ap,ek,Tn,Wn,so,Io,Qo,Yo,Zo,bq,aq,hq,gq,kq,jq,mq,nq,pq,oq,rq,vq,sq,tq,yq,uq,wq,xq,jh,Di,$d,Ud,Mh,bn,Uq,Pp,Op,Np,Mp,Lp,Kp,Ii,Ui,_p,Yr,Yr];var kd=[Zr,ee,fe,ze,Ie,Se,$e,jf,pf,Qf,gg,og,wg,bj,nh,qh,Qh,Wh,ci,ii,pj,mm,nm,om,pm,rm,sm,xm,ym,zm,Am,Cm,Dm,Im,Jm,Km,Lm,Nm,Om,Tm,Um,Vm,Wm,Ym,Zm,Fn,Kn,gp,ip,kp,hp,jp,lp,Hd,Kd,Ld,Md,Nd,Zr,Zr,Zr,Zr,Zr,Zr];var ld=[_r,Ml,_l,_r];var md=[$r,de,ye,He,Re,_e,hf,lq,fj,gj,Og,jj,fq,mh,sh,Rh,uj,wj,xj,tj,Xh,Yh,di,ij,ji,ki,ri,ui,Xj,Dl,mp,op,qp,wp,yp,sp,up,Rl,np,pp,rp,xp,zp,tp,vp,km,lm,qm,vm,wm,Bm,Gm,Hm,Mm,Rm,Sm,Xm,Eo,Fo,Ho,cp,ep,dp,fp,wo,xo,zo,Mo,No,Po,Uo,Vo,Xo,cq,iq,qq,_d,Zd,Id,Td,Sd,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r];var nd=[as,rn,xn,as];var od=[bs,oi,si,wi,vi,Yj,Gd,Wd,Jd,Pd,Od,bs,bs,bs,bs,bs];var pd=[cs,hl,ll,wl,yl,cs,cs,cs];var qd=[ds,Yp,Zp,ds];var rd=[es,Bo,Co,to,uo,Jo,Ko,Ro,So,es,es,es,es,es,es,es];var sd=[fs,po,Yn,Zn,_n,fo,fs,fs];var td=[gs,dm,hm,an,en,ln,nn,gs];var ud=[hs,Mg,rj,dj,$k,al,fl,ml,pl,ql,ul,zl,En,Jn,Qq,Pq,Oq,hs,hs,hs,hs,hs,hs,hs,hs,hs,hs,hs,hs,hs,hs,hs];var vd=[is,te,De,Me,We,df,nf,vf,Af,Ff,eg,mg,ug,Cg,Pg,Qg,Wg,rh,Ch,Hh,yj,Th,Zh,Aj,kj,fi,li,mj,ko,mo,oo,$n,bo,eo,Vd,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is];var wd=[js,fk,kk,ro,Do,Go,ho,vo,yo,Lo,Oo,To,Wo,js,js,js];var xd=[ks,Ng,sj,ej,gk,lk,Cq,Dq,Fq,Xd,Qd,ks,ks,ks,ks,ks];return{___cxa_can_catch:Rq,_free:Uq,_memset:qr,_realloc:Vq,_i64Add:kr,_memmove:pr,___cxa_is_pointer_type:Sq,_i64Subtract:jr,_strlen:mr,_malloc:Tq,_memcpy:nr,___getTypeName:Kh,_bitshift64Lshr:lr,_bitshift64Shl:or,__GLOBAL__I_a:Jh,__GLOBAL__I_a64:Lh,__GLOBAL__I_a117:ni,runPostSets:ir,stackAlloc:yd,stackSave:zd,stackRestore:Ad,setThrew:Bd,setTempRet0:Ed,getTempRet0:Fd,dynCall_iiii:Br,dynCall_viiiiiii:Cr,dynCall_viiiii:Dr,dynCall_i:Er,dynCall_vi:Fr,dynCall_vii:Gr,dynCall_viiiiiiiii:Hr,dynCall_ii:Ir,dynCall_viiiiiid:Jr,dynCall_viii:Kr,dynCall_viiiiid:Lr,dynCall_v:Mr,dynCall_iiiiiiiii:Nr,dynCall_iiiii:Or,dynCall_viiiiiiii:Pr,dynCall_viiiiii:Qr,dynCall_iii:Rr,dynCall_iiiiii:Sr,dynCall_viiii:Tr}}) - - -// EMSCRIPTEN_END_ASM -(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var _free=Module["_free"]=asm["_free"];var _memset=Module["_memset"]=asm["_memset"];var _realloc=Module["_realloc"]=asm["_realloc"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _memmove=Module["_memmove"]=asm["_memmove"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _strlen=Module["_strlen"]=asm["_strlen"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var ___getTypeName=Module["___getTypeName"]=asm["___getTypeName"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var __GLOBAL__I_a=Module["__GLOBAL__I_a"]=asm["__GLOBAL__I_a"];var __GLOBAL__I_a64=Module["__GLOBAL__I_a64"]=asm["__GLOBAL__I_a64"];var __GLOBAL__I_a117=Module["__GLOBAL__I_a117"]=asm["__GLOBAL__I_a117"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=asm["dynCall_viiiiiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=asm["dynCall_viiiiiiiii"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_viiiiiid=Module["dynCall_viiiiiid"]=asm["dynCall_viiiiiid"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_viiiiid=Module["dynCall_viiiiid"]=asm["dynCall_viiiiid"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=asm["dynCall_iiiiiiiii"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_viiiiiiii=Module["dynCall_viiiiiiii"]=asm["dynCall_viiiiiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];var i64Math=(function(){var goog={math:{}};goog.math.Long=(function(low,high){this.low_=low|0;this.high_=high|0});goog.math.Long.IntCache_={};goog.math.Long.fromInt=(function(value){if(-128<=value&&value<128){var cachedObj=goog.math.Long.IntCache_[value];if(cachedObj){return cachedObj}}var obj=new goog.math.Long(value|0,value<0?-1:0);if(-128<=value&&value<128){goog.math.Long.IntCache_[value]=obj}return obj});goog.math.Long.fromNumber=(function(value){if(isNaN(value)||!isFinite(value)){return goog.math.Long.ZERO}else if(value<=-goog.math.Long.TWO_PWR_63_DBL_){return goog.math.Long.MIN_VALUE}else if(value+1>=goog.math.Long.TWO_PWR_63_DBL_){return goog.math.Long.MAX_VALUE}else if(value<0){return goog.math.Long.fromNumber(-value).negate()}else{return new goog.math.Long(value%goog.math.Long.TWO_PWR_32_DBL_|0,value/goog.math.Long.TWO_PWR_32_DBL_|0)}});goog.math.Long.fromBits=(function(lowBits,highBits){return new goog.math.Long(lowBits,highBits)});goog.math.Long.fromString=(function(str,opt_radix){if(str.length==0){throw Error("number format error: empty string")}var radix=opt_radix||10;if(radix<2||36=0){throw Error('number format error: interior "-" character: '+str)}var radixToPower=goog.math.Long.fromNumber(Math.pow(radix,8));var result=goog.math.Long.ZERO;for(var i=0;i=0?this.low_:goog.math.Long.TWO_PWR_32_DBL_+this.low_});goog.math.Long.prototype.getNumBitsAbs=(function(){if(this.isNegative()){if(this.equals(goog.math.Long.MIN_VALUE)){return 64}else{return this.negate().getNumBitsAbs()}}else{var val=this.high_!=0?this.high_:this.low_;for(var bit=31;bit>0;bit--){if((val&1<0});goog.math.Long.prototype.greaterThanOrEqual=(function(other){return this.compare(other)>=0});goog.math.Long.prototype.compare=(function(other){if(this.equals(other)){return 0}var thisNeg=this.isNegative();var otherNeg=other.isNegative();if(thisNeg&&!otherNeg){return-1}if(!thisNeg&&otherNeg){return 1}if(this.subtract(other).isNegative()){return-1}else{return 1}});goog.math.Long.prototype.negate=(function(){if(this.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.MIN_VALUE}else{return this.not().add(goog.math.Long.ONE)}});goog.math.Long.prototype.add=(function(other){var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00+b00;c16+=c00>>>16;c00&=65535;c16+=a16+b16;c32+=c16>>>16;c16&=65535;c32+=a32+b32;c48+=c32>>>16;c32&=65535;c48+=a48+b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)});goog.math.Long.prototype.subtract=(function(other){return this.add(other.negate())});goog.math.Long.prototype.multiply=(function(other){if(this.isZero()){return goog.math.Long.ZERO}else if(other.isZero()){return goog.math.Long.ZERO}if(this.equals(goog.math.Long.MIN_VALUE)){return other.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO}else if(other.equals(goog.math.Long.MIN_VALUE)){return this.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO}if(this.isNegative()){if(other.isNegative()){return this.negate().multiply(other.negate())}else{return this.negate().multiply(other).negate()}}else if(other.isNegative()){return this.multiply(other.negate()).negate()}if(this.lessThan(goog.math.Long.TWO_PWR_24_)&&other.lessThan(goog.math.Long.TWO_PWR_24_)){return goog.math.Long.fromNumber(this.toNumber()*other.toNumber())}var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00*b00;c16+=c00>>>16;c00&=65535;c16+=a16*b00;c32+=c16>>>16;c16&=65535;c16+=a00*b16;c32+=c16>>>16;c16&=65535;c32+=a32*b00;c48+=c32>>>16;c32&=65535;c32+=a16*b16;c48+=c32>>>16;c32&=65535;c32+=a00*b32;c48+=c32>>>16;c32&=65535;c48+=a48*b00+a32*b16+a16*b32+a00*b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)});goog.math.Long.prototype.div=(function(other){if(other.isZero()){throw Error("division by zero")}else if(this.isZero()){return goog.math.Long.ZERO}if(this.equals(goog.math.Long.MIN_VALUE)){if(other.equals(goog.math.Long.ONE)||other.equals(goog.math.Long.NEG_ONE)){return goog.math.Long.MIN_VALUE}else if(other.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.ONE}else{var halfThis=this.shiftRight(1);var approx=halfThis.div(other).shiftLeft(1);if(approx.equals(goog.math.Long.ZERO)){return other.isNegative()?goog.math.Long.ONE:goog.math.Long.NEG_ONE}else{var rem=this.subtract(other.multiply(approx));var result=approx.add(rem.div(other));return result}}}else if(other.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.ZERO}if(this.isNegative()){if(other.isNegative()){return this.negate().div(other.negate())}else{return this.negate().div(other).negate()}}else if(other.isNegative()){return this.div(other.negate()).negate()}var res=goog.math.Long.ZERO;var rem=this;while(rem.greaterThanOrEqual(other)){var approx=Math.max(1,Math.floor(rem.toNumber()/other.toNumber()));var log2=Math.ceil(Math.log(approx)/Math.LN2);var delta=log2<=48?1:Math.pow(2,log2-48);var approxRes=goog.math.Long.fromNumber(approx);var approxRem=approxRes.multiply(other);while(approxRem.isNegative()||approxRem.greaterThan(rem)){approx-=delta;approxRes=goog.math.Long.fromNumber(approx);approxRem=approxRes.multiply(other)}if(approxRes.isZero()){approxRes=goog.math.Long.ONE}res=res.add(approxRes);rem=rem.subtract(approxRem)}return res});goog.math.Long.prototype.modulo=(function(other){return this.subtract(this.div(other).multiply(other))});goog.math.Long.prototype.not=(function(){return goog.math.Long.fromBits(~this.low_,~this.high_)});goog.math.Long.prototype.and=(function(other){return goog.math.Long.fromBits(this.low_&other.low_,this.high_&other.high_)});goog.math.Long.prototype.or=(function(other){return goog.math.Long.fromBits(this.low_|other.low_,this.high_|other.high_)});goog.math.Long.prototype.xor=(function(other){return goog.math.Long.fromBits(this.low_^other.low_,this.high_^other.high_)});goog.math.Long.prototype.shiftLeft=(function(numBits){numBits&=63;if(numBits==0){return this}else{var low=this.low_;if(numBits<32){var high=this.high_;return goog.math.Long.fromBits(low<>>32-numBits)}else{return goog.math.Long.fromBits(0,low<>>numBits|high<<32-numBits,high>>numBits)}else{return goog.math.Long.fromBits(high>>numBits-32,high>=0?0:-1)}}});goog.math.Long.prototype.shiftRightUnsigned=(function(numBits){numBits&=63;if(numBits==0){return this}else{var high=this.high_;if(numBits<32){var low=this.low_;return goog.math.Long.fromBits(low>>>numBits|high<<32-numBits,high>>>numBits)}else if(numBits==32){return goog.math.Long.fromBits(high,0)}else{return goog.math.Long.fromBits(high>>>numBits-32,0)}}});var navigator={appName:"Modern Browser"};var dbits;var canary=0xdeadbeefcafe;var j_lm=(canary&16777215)==15715070;function BigInteger(a,b,c){if(a!=null)if("number"==typeof a)this.fromNumber(a,b,c);else if(b==null&&"string"!=typeof a)this.fromString(a,256);else this.fromString(a,b)}function nbi(){return new BigInteger(null)}function am1(i,x,w,j,c,n){while(--n>=0){var v=x*this[i++]+w[j]+c;c=Math.floor(v/67108864);w[j++]=v&67108863}return c}function am2(i,x,w,j,c,n){var xl=x&32767,xh=x>>15;while(--n>=0){var l=this[i]&32767;var h=this[i++]>>15;var m=xh*l+h*xl;l=xl*l+((m&32767)<<15)+w[j]+(c&1073741823);c=(l>>>30)+(m>>>15)+xh*h+(c>>>30);w[j++]=l&1073741823}return c}function am3(i,x,w,j,c,n){var xl=x&16383,xh=x>>14;while(--n>=0){var l=this[i]&16383;var h=this[i++]>>14;var m=xh*l+h*xl;l=xl*l+((m&16383)<<14)+w[j]+c;c=(l>>28)+(m>>14)+xh*h;w[j++]=l&268435455}return c}if(j_lm&&navigator.appName=="Microsoft Internet Explorer"){BigInteger.prototype.am=am2;dbits=30}else if(j_lm&&navigator.appName!="Netscape"){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=(1<=0;--i)r[i]=this[i];r.t=this.t;r.s=this.s}function bnpFromInt(x){this.t=1;this.s=x<0?-1:0;if(x>0)this[0]=x;else if(x<-1)this[0]=x+DV;else this.t=0}function nbv(i){var r=nbi();r.fromInt(i);return r}function bnpFromString(s,b){var k;if(b==16)k=4;else if(b==8)k=3;else if(b==256)k=8;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else{this.fromRadix(s,b);return}this.t=0;this.s=0;var i=s.length,mi=false,sh=0;while(--i>=0){var x=k==8?s[i]&255:intAt(s,i);if(x<0){if(s.charAt(i)=="-")mi=true;continue}mi=false;if(sh==0)this[this.t++]=x;else if(sh+k>this.DB){this[this.t-1]|=(x&(1<>this.DB-sh}else this[this.t-1]|=x<=this.DB)sh-=this.DB}if(k==8&&(s[0]&128)!=0){this.s=-1;if(sh>0)this[this.t-1]|=(1<0&&this[this.t-1]==c)--this.t}function bnToString(b){if(this.s<0)return"-"+this.negate().toString(b);var k;if(b==16)k=4;else if(b==8)k=3;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else return this.toRadix(b);var km=(1<0){if(p>p)>0){m=true;r=int2char(d)}while(i>=0){if(p>(p+=this.DB-k)}else{d=this[i]>>(p-=k)&km;if(p<=0){p+=this.DB;--i}}if(d>0)m=true;if(m)r+=int2char(d)}}return m?r:"0"}function bnNegate(){var r=nbi();BigInteger.ZERO.subTo(this,r);return r}function bnAbs(){return this.s<0?this.negate():this}function bnCompareTo(a){var r=this.s-a.s;if(r!=0)return r;var i=this.t;r=i-a.t;if(r!=0)return this.s<0?-r:r;while(--i>=0)if((r=this[i]-a[i])!=0)return r;return 0}function nbits(x){var r=1,t;if((t=x>>>16)!=0){x=t;r+=16}if((t=x>>8)!=0){x=t;r+=8}if((t=x>>4)!=0){x=t;r+=4}if((t=x>>2)!=0){x=t;r+=2}if((t=x>>1)!=0){x=t;r+=1}return r}function bnBitLength(){if(this.t<=0)return 0;return this.DB*(this.t-1)+nbits(this[this.t-1]^this.s&this.DM)}function bnpDLShiftTo(n,r){var i;for(i=this.t-1;i>=0;--i)r[i+n]=this[i];for(i=n-1;i>=0;--i)r[i]=0;r.t=this.t+n;r.s=this.s}function bnpDRShiftTo(n,r){for(var i=n;i=0;--i){r[i+ds+1]=this[i]>>cbs|c;c=(this[i]&bm)<=0;--i)r[i]=0;r[ds]=c;r.t=this.t+ds+1;r.s=this.s;r.clamp()}function bnpRShiftTo(n,r){r.s=this.s;var ds=Math.floor(n/this.DB);if(ds>=this.t){r.t=0;return}var bs=n%this.DB;var cbs=this.DB-bs;var bm=(1<>bs;for(var i=ds+1;i>bs}if(bs>0)r[this.t-ds-1]|=(this.s&bm)<>=this.DB}if(a.t>=this.DB}c+=this.s}else{c+=this.s;while(i>=this.DB}c-=a.s}r.s=c<0?-1:0;if(c<-1)r[i++]=this.DV+c;else if(c>0)r[i++]=c;r.t=i;r.clamp()}function bnpMultiplyTo(a,r){var x=this.abs(),y=a.abs();var i=x.t;r.t=i+y.t;while(--i>=0)r[i]=0;for(i=0;i=0)r[i]=0;for(i=0;i=x.DV){r[i+x.t]-=x.DV;r[i+x.t+1]=1}}if(r.t>0)r[r.t-1]+=x.am(i,x[i],r,2*i,0,1);r.s=0;r.clamp()}function bnpDivRemTo(m,q,r){var pm=m.abs();if(pm.t<=0)return;var pt=this.abs();if(pt.t0){pm.lShiftTo(nsh,y);pt.lShiftTo(nsh,r)}else{pm.copyTo(y);pt.copyTo(r)}var ys=y.t;var y0=y[ys-1];if(y0==0)return;var yt=y0*(1<1?y[ys-2]>>this.F2:0);var d1=this.FV/yt,d2=(1<=0){r[r.t++]=1;r.subTo(t,r)}BigInteger.ONE.dlShiftTo(ys,t);t.subTo(y,y);while(y.t=0){var qd=r[--i]==y0?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);if((r[i]+=y.am(0,qd,r,j,0,ys))0)r.rShiftTo(nsh,r);if(ts<0)BigInteger.ZERO.subTo(r,r)}function bnMod(a){var r=nbi();this.abs().divRemTo(a,null,r);if(this.s<0&&r.compareTo(BigInteger.ZERO)>0)a.subTo(r,r);return r}function Classic(m){this.m=m}function cConvert(x){if(x.s<0||x.compareTo(this.m)>=0)return x.mod(this.m);else return x}function cRevert(x){return x}function cReduce(x){x.divRemTo(this.m,null,x)}function cMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}function cSqrTo(x,r){x.squareTo(r);this.reduce(r)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1)return 0;var x=this[0];if((x&1)==0)return 0;var y=x&3;y=y*(2-(x&15)*y)&15;y=y*(2-(x&255)*y)&255;y=y*(2-((x&65535)*y&65535))&65535;y=y*(2-x*y%this.DV)%this.DV;return y>0?this.DV-y:-y}function Montgomery(m){this.m=m;this.mp=m.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<0)this.m.subTo(r,r);return r}function montRevert(x){var r=nbi();x.copyTo(r);this.reduce(r);return r}function montReduce(x){while(x.t<=this.mt2)x[x.t++]=0;for(var i=0;i>15)*this.mpl&this.um)<<15)&x.DM;j=i+this.m.t;x[j]+=this.m.am(0,u0,x,i,0,this.m.t);while(x[j]>=x.DV){x[j]-=x.DV;x[++j]++}}x.clamp();x.drShiftTo(this.m.t,x);if(x.compareTo(this.m)>=0)x.subTo(this.m,x)}function montSqrTo(x,r){x.squareTo(r);this.reduce(r)}function montMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return(this.t>0?this[0]&1:this.s)==0}function bnpExp(e,z){if(e>4294967295||e<1)return BigInteger.ONE;var r=nbi(),r2=nbi(),g=z.convert(this),i=nbits(e)-1;g.copyTo(r);while(--i>=0){z.sqrTo(r,r2);if((e&1<0)z.mulTo(r2,g,r);else{var t=r;r=r2;r2=t}}return z.revert(r)}function bnModPowInt(e,m){var z;if(e<256||m.isEven())z=new Classic(m);else z=new Montgomery(m);return this.exp(e,z)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);function bnpFromRadix(s,b){this.fromInt(0);if(b==null)b=10;var cs=this.chunkSize(b);var d=Math.pow(b,cs),mi=false,j=0,w=0;for(var i=0;i=cs){this.dMultiply(d);this.dAddOffset(w,0);j=0;w=0}}if(j>0){this.dMultiply(Math.pow(b,j));this.dAddOffset(w,0)}if(mi)BigInteger.ZERO.subTo(this,this)}function bnpChunkSize(r){return Math.floor(Math.LN2*this.DB/Math.log(r))}function bnSigNum(){if(this.s<0)return-1;else if(this.t<=0||this.t==1&&this[0]<=0)return 0;else return 1}function bnpDMultiply(n){this[this.t]=this.am(0,n-1,this,0,0,this.t);++this.t;this.clamp()}function bnpDAddOffset(n,w){if(n==0)return;while(this.t<=w)this[this.t++]=0;this[w]+=n;while(this[w]>=this.DV){this[w]-=this.DV;if(++w>=this.t)this[this.t++]=0;++this[w]}}function bnpToRadix(b){if(b==null)b=10;if(this.signum()==0||b<2||b>36)return"0";var cs=this.chunkSize(b);var a=Math.pow(b,cs);var d=nbv(a),y=nbi(),z=nbi(),r="";this.divRemTo(d,y,z);while(y.signum()>0){r=(a+z.intValue()).toString(b).substr(1)+r;y.divRemTo(d,y,z)}return z.intValue().toString(b)+r}function bnIntValue(){if(this.s<0){if(this.t==1)return this[0]-this.DV;else if(this.t==0)return-1}else if(this.t==1)return this[0];else if(this.t==0)return 0;return(this[1]&(1<<32-this.DB)-1)<>=this.DB}if(a.t>=this.DB}c+=this.s}else{c+=this.s;while(i>=this.DB}c+=a.s}r.s=c<0?-1:0;if(c>0)r[i++]=c;else if(c<-1)r[i++]=this.DV+c;r.t=i;r.clamp()}BigInteger.prototype.fromRadix=bnpFromRadix;BigInteger.prototype.chunkSize=bnpChunkSize;BigInteger.prototype.signum=bnSigNum;BigInteger.prototype.dMultiply=bnpDMultiply;BigInteger.prototype.dAddOffset=bnpDAddOffset;BigInteger.prototype.toRadix=bnpToRadix;BigInteger.prototype.intValue=bnIntValue;BigInteger.prototype.addTo=bnpAddTo;var Wrapper={abs:(function(l,h){var x=new goog.math.Long(l,h);var ret;if(x.isNegative()){ret=x.negate()}else{ret=x}HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_}),ensureTemps:(function(){if(Wrapper.ensuredTemps)return;Wrapper.ensuredTemps=true;Wrapper.two32=new BigInteger;Wrapper.two32.fromString("4294967296",10);Wrapper.two64=new BigInteger;Wrapper.two64.fromString("18446744073709551616",10);Wrapper.temp1=new BigInteger;Wrapper.temp2=new BigInteger}),lh2bignum:(function(l,h){var a=new BigInteger;a.fromString(h.toString(),10);var b=new BigInteger;a.multiplyTo(Wrapper.two32,b);var c=new BigInteger;c.fromString(l.toString(),10);var d=new BigInteger;c.addTo(b,d);return d}),stringify:(function(l,h,unsigned){var ret=(new goog.math.Long(l,h)).toString();if(unsigned&&ret[0]=="-"){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(ret,10);ret=new BigInteger;Wrapper.two64.addTo(bignum,ret);ret=ret.toString(10)}return ret}),fromString:(function(str,base,min,max,unsigned){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(str,base);var bigmin=new BigInteger;bigmin.fromString(min,10);var bigmax=new BigInteger;bigmax.fromString(max,10);if(unsigned&&bignum.compareTo(BigInteger.ZERO)<0){var temp=new BigInteger;bignum.addTo(Wrapper.two64,temp);bignum=temp}var error=false;if(bignum.compareTo(bigmin)<0){bignum=bigmin;error=true}else if(bignum.compareTo(bigmax)>0){bignum=bigmax;error=true}var ret=goog.math.Long.fromString(bignum.toString());HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_;if(error)throw"range error"})};return Wrapper})();if(memoryInitializer){if(typeof Module["locateFile"]==="function"){memoryInitializer=Module["locateFile"](memoryInitializer)}else if(Module["memoryInitializerPrefixURL"]){memoryInitializer=Module["memoryInitializerPrefixURL"]+memoryInitializer}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,STATIC_BASE)}else{addRunDependency("memory initializer");Browser.asyncLoad(memoryInitializer,(function(data){HEAPU8.set(data,STATIC_BASE);removeRunDependency("memory initializer")}),(function(data){throw"could not load memory initializer "+memoryInitializer}))}}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;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"]&&shouldRunNow)run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){assert(runDependencies==0,"cannot call main when async dependencies remain! (listen on __ATMAIN__)");assert(__ATPRERUN__.length==0,"cannot call main when preRun functions remain to be called");args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){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(ENVIRONMENT_IS_WEB&&preloadStartTime!==null){Module.printErr("pre-main prep time: "+(Date.now()-preloadStartTime)+" ms")}if(Module["_main"]&&shouldRunNow){Module["callMain"](args)}postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status){if(Module["noExitRuntime"]){return}ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(ENVIRONMENT_IS_NODE){process["stdout"]["once"]("drain",(function(){process["exit"](status)}));console.log(" ");setTimeout((function(){process["exit"](status)}),500)}else if(ENVIRONMENT_IS_SHELL&&typeof quit==="function"){quit(status)}throw new ExitStatus(status)}Module["exit"]=Module.exit=exit;function abort(text){if(text){Module.print(text);Module.printErr(text)}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";throw"abort() at "+stackTrace()+extra}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}run() - -//export {Module}; - - - diff --git a/libs/potree/LICENSE b/libs/potree/LICENSE deleted file mode 100644 index a1e6a6e..0000000 --- a/libs/potree/LICENSE +++ /dev/null @@ -1,33 +0,0 @@ - -============ -== POTREE == -============ - -http://potree.org - -Copyright (c) 2011-2020, Markus Schütz -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -The views and conclusions contained in the software and documentation are those -of the authors and should not be interpreted as representing official policies, -either expressed or implied, of the FreeBSD Project. diff --git a/libs/potree/lazylibs/geopackage/LICENSE b/libs/potree/lazylibs/geopackage/LICENSE deleted file mode 100644 index f81e84a..0000000 --- a/libs/potree/lazylibs/geopackage/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 National Geospatial-Intelligence Agency - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/libs/potree/lazylibs/geopackage/README.md b/libs/potree/lazylibs/geopackage/README.md deleted file mode 100644 index 020db55..0000000 --- a/libs/potree/lazylibs/geopackage/README.md +++ /dev/null @@ -1,259 +0,0 @@ -# GeoPackage JS - -GeoPackage JS is an implementation of the OGC GeoPackage spec. This library works in both the browser and Node 4+. - -### Demo ### -[GeoPackage JS Demo Page](http://ngageoint.github.io/geopackage-js/) - -Cloning this repository and opening the docs/index.html in your browser will run the demo locally. - -### Installation ### - -[![Build Status](https://travis-ci.org/ngageoint/geopackage-js.svg?branch=master)](https://travis-ci.org/ngageoint/geopackage-js) -[![NPM](https://img.shields.io/npm/v/@ngageoint/geopackage.svg)](https://www.npmjs.com/package/@ngageoint/geopackage) -[![Coverage Status](https://coveralls.io/repos/github/ngageoint/geopackage-js/badge.svg)](https://coveralls.io/github/ngageoint/geopackage-js) - -```sh -$ npm install @ngageoint/geopackage -``` - -#### GeoPackage JS Library #### - -The [GeoPackage Libraries](http://ngageoint.github.io/GeoPackage/) were developed at the [National Geospatial-Intelligence Agency (NGA)](http://www.nga.mil/) in collaboration with [BIT Systems](http://www.bit-sys.com/). The government has "unlimited rights" and is releasing this software to increase the impact of government investments by providing developers with the opportunity to take things in new directions. The software use, modification, and distribution rights are stipulated within the [MIT license](http://choosealicense.com/licenses/mit/). - -### Pull Requests ### -If you'd like to contribute to this project, please make a pull request. We'll review the pull request and discuss the changes. All pull request contributions to this project will be released under the MIT license. - -Software source code previously released under an open source license and then modified by NGA staff is considered a "joint work" (see 17 USC § 101); it is partially copyrighted, partially public domain, and as a whole is protected by the copyrights of the non-government authors and must be released according to the terms of the original open source license. - -### About ### - -[GeoPackage JS](https://github.com/ngageoint/geopackage-js) is a [GeoPackage Library](http://ngageoint.github.io/GeoPackage/) JavaScript implementation of the Open Geospatial Consortium [GeoPackage](http://www.geopackage.org/) [spec](http://www.geopackage.org/spec/). It is listed as an [OGC GeoPackage Implementation](http://www.geopackage.org/#implementations_nga) by the National Geospatial-Intelligence Agency. - -The GeoPackage JavaScript library currently provides the ability to read GeoPackage files. This library works both in the browser and in Node. In the browser tiles are rendered using HTML5 Canvas and GeoPackages are read using [sql.js](https://github.com/kripken/sql.js/). In Node tiles are rendered [PureImage](https://github.com/joshmarinacci/node-pureimage) and GeoPackages are read using [node-sqlite3](https://github.com/mapbox/node-sqlite3). - -### Changelog - -##### 2.1.0 - -- Implementation of the Feature Style Extension and Contents ID Extension - -##### 2.0.8 - -- Checks for Electron when returning a tile creator - -##### 2.0 - -- All new API utilizing Promises - -##### 1.1.4 - -- Adds a method to retrieve tiles in EPSG:4326 - -##### 1.1.3 - -- Fixes issue #115 - -##### 1.1.2 - -- fix case where GeoPackage Zoom does not correspond to the web map zoom - -##### 1.1.1 - -- fix more instances of proj4 bug for react -- fixed tile generation for images with different x and y pixel densities - -##### 1.1.0 - -- accept pull request adding support for react -- fix bug with projected tiles that spanned the date line - -##### 1.0.25 - -- ensure we use proj4 2.4.3 instead of 2.4.4 - -##### 1.0.22 - -- Fixed bug where querying for indexed features only returned the geometry instead of the entire feature - -##### 1.0.19 - -- Remove dependency on Lwip - -### Usage ### - -View examples using [Bower](https://github.com/ngageoint/geopackage-js/tree/master/docs/bower) and [Browserify](https://github.com/ngageoint/geopackage-js/tree/master/docs) - -View the latest [docs](http://ngageoint.github.io/geopackage-js/jsdoc/module-geoPackage-GeoPackage.html) (currently being updated). - -#### Browser Usage #### -```javascript - -// attach this method to a file input onchange event -window.loadGeoPackage = function(files) { - var f = files[0]; - var r = new FileReader(); - r.onload = function() { - var array = new Uint8Array(r.result); - loadByteArray(array); - } - r.readAsArrayBuffer(f); -} - -function loadByteArray(array, callback) { - var db = new SQL.Database(array); - GeoPackageConnection.connectWithDatabase(db, function(err, connection) { - var geoPackage = new GeoPackage('', '', connection); - - // Now you can operate on the GeoPackage - - // get the tile table names - geoPackage.getTileTables(function(err, tileTableNames) { - // tileTableNames is an array of all tile table names - - // get the info for the first table - geoPackage.getTileDaoWithTableName(tileTableNames[0], function(err, tileDao) { - geoPackage.getInfoForTable(tileDao, function(err, info) { - // do something with the tile table info - }); - - // draw a tile into a canvas for an XYZ tile - var canvas = canvasFromSomewhere; - var gpr = new GeoPackageTileRetriever(tileDao, 256, 256); - var x = 0; - var y = 0; - var zoom = 0; - - console.time('Draw tile ' + x + ', ' + y + ' zoom: ' + zoom); - gpr.drawTileIn(x, y, zoom, canvas, function() { - console.timeEnd('Draw tile ' + x + ', ' + y + ' zoom: ' + zoom); - }); - - // or get a tile base64 data URL for an XYZ tile - gpr.getTile(x, y, zoom, function(err, tileBase64DataURL) { - console.log('got the base64 data url'); - }); - - // or get a tile from a GeoPackage tile column and tile row - tileDao.queryForTile(tileColumn, tileRow, zoom, function(err, tile) { - var tileData = tile.getTileData(); // the raw bytes from the GeoPackage - }); - - }); - }); - - // get the feature table names - geoPackage.getFeatureTables(function(err, featureTableNames) { - // featureTableNames is an array of all feature table names - - // get the info for the first table - geoPackage.getFeatureDaoWithTableName(featureTableNames[0], function(err, featureDao) { - geoPackage.getInfoForTable(featureDao, function(err, info) { - // do something with the feature table info - }); - - // query for all features - featureDao.queryForEach(function(err, row, rowDone) { - var feature = featureDao.getFeatureRow(row); - var geometry = currentRow.getGeometry(); - if (geometry) { - var geom = geometry.geometry; - var geoJson = geometry.geometry.toGeoJSON(); - - geoJson.properties = {}; - for (var key in feature.values) { - if(feature.values.hasOwnProperty(key) && key != feature.getGeometryColumn().name) { - var column = info.columnMap[key]; - geoJson.properties[column.displayName] = currentRow.values[key]; - } - } - } - rowDone(); - }); - }); - }); - }); -} - -``` - -#### NodeJS Usage #### - -```javascript -var GeoPackageAPI = require('@ngageoint/geopackage') - , GeoPackageManager = GeoPackageAPI.GeoPackageManager - , GeoPackageConnection = GeoPackageAPI.GeoPackageConnection - , GeoPackageTileRetriever = GeoPackageAPI.GeoPackageTileRetriever; - -GeoPackageAPI.open(filename, function(err, geoPackage) { - - // Now you can operate on the GeoPackage - - // get the tile table names - geoPackage.getTileTables(function(err, tileTableNames) { - // tileTableNames is an array of all tile table names - - // get the info for the first table - geoPackage.getTileDaoWithTableName(tileTableNames[0], function(err, tileDao) { - geoPackage.getInfoForTable(tileDao, function(err, info) { - // do something with the tile table info - }); - - // draw a tile into a canvas for an XYZ tile - var canvas = canvasFromSomewhere; - var gpr = new GeoPackageTileRetriever(tileDao, 256, 256); - var x = 0; - var y = 0; - var zoom = 0; - - console.time('Draw tile ' + x + ', ' + y + ' zoom: ' + zoom); - gpr.drawTileIn(x, y, zoom, canvas, function() { - console.timeEnd('Draw tile ' + x + ', ' + y + ' zoom: ' + zoom); - }); - - // or get a tile base64 data URL for an XYZ tile - gpr.getTile(x, y, zoom, function(err, tileBase64DataURL) { - console.log('got the base64 data url'); - }); - - // or get a tile from a GeoPackage tile column and tile row - tileDao.queryForTile(tileColumn, tileRow, zoom, function(err, tile) { - var tileData = tile.getTileData(); // the raw bytes from the GeoPackage - }); - - }); - }); - - // get the feature table names - geoPackage.getFeatureTables(function(err, featureTableNames) { - // featureTableNames is an array of all feature table names - - // get the info for the first table - geoPackage.getFeatureDaoWithTableName(featureTableNames[0], function(err, featureDao) { - geoPackage.getInfoForTable(featureDao, function(err, info) { - // do something with the feature table info - }); - - // query for all features - featureDao.queryForEach(function(err, row, rowDone) { - var feature = featureDao.getFeatureRow(row); - var geometry = currentRow.getGeometry(); - if (geometry) { - var geom = geometry.geometry; - var geoJson = geometry.geometry.toGeoJSON(); - - geoJson.properties = {}; - for (var key in feature.values) { - if(feature.values.hasOwnProperty(key) && key != feature.getGeometryColumn().name) { - var column = info.columnMap[key]; - geoJson.properties[column.displayName] = currentRow.values[key]; - } - } - } - rowDone(); - }); - }); - }); -}); - -``` diff --git a/libs/potree/lazylibs/geopackage/geopackage.js b/libs/potree/lazylibs/geopackage/geopackage.js deleted file mode 100644 index c9a8edc..0000000 --- a/libs/potree/lazylibs/geopackage/geopackage.js +++ /dev/null @@ -1,80817 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.geopackage = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i} - */ -GeoPackageAPI.iterateGeoJSONFeaturesFromTable = function(geopackage, table) { - var featureDao = geopackage.getFeatureDao(table); - if (!featureDao) { - throw new Error('No Table exists with the name ' + table); - } - - var columnMap = GeoPackageAPI.createDataColumnMap(featureDao); - - var srs = featureDao.getSrs(); - - var iterator = featureDao.queryForEach(); - - return { - srs: srs, - featureDao: featureDao, - results: { - [Symbol.iterator]() { - return this; - }, - next: function() { - var nextRow = iterator.next(); - if (!nextRow.done) { - var featureRow; - var geometry; - - while(!nextRow.done && !geometry) { - featureRow = featureDao.getRow(nextRow.value); - return { - value: GeoPackageAPI.parseFeatureRowIntoGeoJSON(featureRow, srs, columnMap), - done: false - }; - } - } - return { - done: true - } - }.bind(this) - } - }; -}; - -/** - * Gets a GeoJSON feature from the table by id - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table name of the table to get the feature from - * @param {Number} featureId ID of the feature - * @param {Function} callback called with an error if one occurred and the GeoJSON feature - */ -GeoPackageAPI.getFeature = function(geopackage, table, featureId) { - var srs; - var featureDao = geopackage.getFeatureDao(table) - srs = featureDao.getSrs(); - var feature = featureDao.queryForId(featureId); - if (!feature) { - var features = featureDao.queryForAllEq('_feature_id', featureId) - if (features.length) { - feature = featureDao.getRow(features[0]); - } else { - var features = featureDao.queryForAllEq('_properties_id', featureId) - if (features.length) { - feature = featureDao.getRow(features[0]); - } - } - } - if (feature) { - return GeoPackageAPI.parseFeatureRowIntoGeoJSON(feature, srs); - } -}; - -GeoPackageAPI.parseFeatureRowIntoGeoJSON = function(featureRow, srs, columnMap) { - var geoJson = { - type: 'Feature', - properties: {} - }; - var geometry = featureRow.getGeometry(); - if (geometry && geometry.geometry) { - var geom = geometry.geometry; - var geoJsonGeom = geometry.geometry.toGeoJSON(); - if (srs.definition && srs.definition !== 'undefined' && (srs.organization.toUpperCase() + ':' + srs.organization_coordsys_id) != 'EPSG:4326') { - // geoJsonGeom = reproject.reproject(geoJsonGeom, srs.organization.toUpperCase() + ':' + srs.organization_coordsys_id, 'EPSG:4326'); - geoJsonGeom = reproject.reproject(geoJsonGeom, srs.getProjection(), 'EPSG:4326'); - - } - geoJson.geometry = geoJsonGeom; - } - - for (var key in featureRow.values) { - if(featureRow.values.hasOwnProperty(key) && key != featureRow.getGeometryColumn().name && key != 'id') { - if (key.toLowerCase() == '_feature_id') { - geoJson.id = featureRow.values[key]; - } else if (key.toLowerCase() == '_properties_id') { - geoJson.properties[key.substring(12)] = featureRow.values[key]; - } else if (columnMap && columnMap[key]) { - geoJson.properties[columnMap[key].displayName] = featureRow.values[key]; - } else { - geoJson.properties[key] = featureRow.values[key]; - } - } else if (featureRow.getGeometryColumn().name === key) { - // geoJson.properties[key] = geometry && !geometry.geometryError ? 'Valid' : geometry.geometryError; - } - } - geoJson.id = geoJson.id || featureRow.getId(); - return geoJson; -} - - -/** - * Gets a tile from the specified table - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table name of the table to get the tile from - * @param {Number} zoom zoom level of the tile - * @param {Number} tileRow row of the tile - * @param {Number} tileColumn column of the tile - * - * @todo jsdoc return value - */ -GeoPackageAPI.getTileFromTable = function(geopackage, table, zoom, tileRow, tileColumn) { - var tileDao = geopackage.getTileDao(table); - return tileDao.queryForTile(tileColumn, tileRow, zoom); -}; - -/** - * Gets the tiles in the EPSG:4326 bounding box - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table name of the tile table - * @param {Number} zoom Zoom of the tiles to query for - * @param {Number} west EPSG:4326 western boundary - * @param {Number} east EPSG:4326 eastern boundary - * @param {Number} south EPSG:4326 southern boundary - * @param {Number} north EPSG:4326 northern boundary - * @param {Function} callback called with an error if one occurred and a tiles object describing the tiles - */ -GeoPackageAPI.getTilesInBoundingBox = function(geopackage, table, zoom, west, east, south, north) { - var tiles = {}; - - var tileDao = geopackage.getTileDao(table); - if (zoom < tileDao.minZoom || zoom > tileDao.maxZoom) { - return - } - tiles.columns = []; - for (var i = 0; i < tileDao.table.columns.length; i++) { - var column = tileDao.table.columns[i]; - tiles.columns.push({ - index: column.index, - name: column.name, - max: column.max, - min: column.min, - notNull: column.notNull, - primaryKey: column.primaryKey - }); - } - var srs = tileDao.getSrs(); - tiles.srs = srs; - tiles.tiles = []; - - var tms = tileDao.tileMatrixSet; - var tm = tileDao.getTileMatrixWithZoomLevel(zoom); - if (!tm) { - return tiles; - } - var mapBoundingBox = new BoundingBox(Math.max(-180, west), Math.min(east, 180), south, north); - tiles.west = Math.max(-180, west).toFixed(2); - tiles.east = Math.min(east, 180).toFixed(2); - tiles.south = south.toFixed(2); - tiles.north = north.toFixed(2); - tiles.zoom = zoom; - mapBoundingBox = mapBoundingBox.projectBoundingBox('EPSG:4326', tileDao.srs.organization.toUpperCase() + ':' + tileDao.srs.organization_coordsys_id); - - var grid = TileBoundingBoxUtils.getTileGridWithTotalBoundingBox(tms.getBoundingBox(), tm.matrix_width, tm.matrix_height, mapBoundingBox); - - var iterator = tileDao.queryByTileGrid(grid, zoom); - - for (var row of iterator ) { - var tile = {}; - tile.tableName = table; - tile.id = row.getId(); - - var tileBB = TileBoundingBoxUtils.getTileBoundingBox(tms.getBoundingBox(), tm, row.getTileColumn(), row.getRow()); - tile.minLongitude = tileBB.minLongitude; - tile.maxLongitude = tileBB.maxLongitude; - tile.minLatitude = tileBB.minLatitude; - tile.maxLatitude = tileBB.maxLatitude; - tile.projection = tileDao.srs.organization.toUpperCase() + ':' + tileDao.srs.organization_coordsys_id; - tile.values = []; - for (var i = 0; i < tiles.columns.length; i++) { - var value = row.values[tiles.columns[i].name]; - if (tiles.columns[i].name === 'tile_data') { - tile.values.push('data'); - } else - if (value === null || value === 'null') { - tile.values.push(''); - } else { - tile.values.push(value.toString()); - tile[tiles.columns[i].name] = value; - } - } - tiles.tiles.push(tile); - } - return tiles; -}; - -/** - * Gets the tiles in the EPSG:4326 bounding box - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table name of the tile table - * @param {Number} zoom Zoom of the tiles to query for - * @param {Number} west EPSG:4326 western boundary - * @param {Number} east EPSG:4326 eastern boundary - * @param {Number} south EPSG:4326 southern boundary - * @param {Number} north EPSG:4326 northern boundary - * @param {Function} callback called with an error if one occurred and a tiles object describing the tiles - */ -GeoPackageAPI.getTilesInBoundingBoxWebZoom = function(geopackage, table, webZoom, west, east, south, north) { - var tiles = {}; - - var tileDao = geopackage.getTileDao(table); - if (webZoom < tileDao.minWebZoom || webZoom > tileDao.maxWebZoom) { - return; - } - tiles.columns = []; - for (var i = 0; i < tileDao.table.columns.length; i++) { - var column = tileDao.table.columns[i]; - tiles.columns.push({ - index: column.index, - name: column.name, - max: column.max, - min: column.min, - notNull: column.notNull, - primaryKey: column.primaryKey - }); - } - var srs = tileDao.getSrs(); - tiles.srs = srs; - tiles.tiles = []; - - var zoom = tileDao.webZoomToGeoPackageZoom(webZoom); - - var tms = tileDao.tileMatrixSet; - var tm = tileDao.getTileMatrixWithZoomLevel(zoom); - if (!tm) { - return tiles; - } - var mapBoundingBox = new BoundingBox(Math.max(-180, west), Math.min(east, 180), south, north); - tiles.west = Math.max(-180, west).toFixed(2); - tiles.east = Math.min(east, 180).toFixed(2); - tiles.south = south.toFixed(2); - tiles.north = north.toFixed(2); - tiles.zoom = zoom; - mapBoundingBox = mapBoundingBox.projectBoundingBox('EPSG:4326', tileDao.srs.organization.toUpperCase() + ':' + tileDao.srs.organization_coordsys_id); - - var grid = TileBoundingBoxUtils.getTileGridWithTotalBoundingBox(tms.getBoundingBox(), tm.matrix_width, tm.matrix_height, mapBoundingBox); - - var iterator = tileDao.queryByTileGrid(grid, zoom); - for (var row of iterator) { - var tile = {}; - tile.tableName = table; - tile.id = row.getId(); - - var tileBB = TileBoundingBoxUtils.getTileBoundingBox(tms.getBoundingBox(), tm, row.getTileColumn(), row.getRow()); - tile.minLongitude = tileBB.minLongitude; - tile.maxLongitude = tileBB.maxLongitude; - tile.minLatitude = tileBB.minLatitude; - tile.maxLatitude = tileBB.maxLatitude; - tile.projection = tileDao.srs.organization.toUpperCase() + ':' + tileDao.srs.organization_coordsys_id; - tile.values = []; - for (var i = 0; i < tiles.columns.length; i++) { - var value = row.values[tiles.columns[i].name]; - if (tiles.columns[i].name === 'tile_data') { - tile.values.push('data'); - } else - if (value === null || value === 'null') { - tile.values.push(''); - } else { - tile.values.push(value.toString()); - tile[tiles.columns[i].name] = value; - } - } - tiles.tiles.push(tile); - } - return tiles; -}; - -GeoPackageAPI.getFeatureTileFromXYZ = function(geopackage, table, x, y, z, width, height) { - x = Number(x); - y = Number(y); - z = Number(z); - width = Number(width); - height = Number(height); - var featureDao = geopackage.getFeatureDao(table) - if (!featureDao) return; - var ft = new FeatureTile(featureDao, width, height); - return ft.drawTile(x, y, z); -} - -/** - * Gets the features in the EPSG:4326 bounding box - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table name of the feature table - * @param {Number} west EPSG:4326 western boundary - * @param {Number} east EPSG:4326 eastern boundary - * @param {Number} south EPSG:4326 southern boundary - * @param {Number} north EPSG:4326 northern boundary - */ -GeoPackageAPI.getGeoJSONFeaturesInTile = function(geopackage, table, x, y, z, skipVerification) { - var webMercatorBoundingBox = TileBoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(x, y, z); - var bb = webMercatorBoundingBox.projectBoundingBox('EPSG:3857', 'EPSG:4326'); - return geopackage.indexFeatureTable(table) - .then(function(indexed) { - return geopackage.getFeatureDao(table); - }) - .then(function(featureDao) { - if (!featureDao) return; - var features = []; - var iterator = featureDao.queryForGeoJSONIndexedFeaturesWithBoundingBox(bb, skipVerification); - for (var feature of iterator) { - features.push(feature); - } - return features; - }) - .catch(function(error) { - console.log('error', error); - }); -} - -GeoPackageAPI.convertPBFToVectorTile = function(pbf) { - return new VectorTile.VectorTile(new Pbf(pbf)); -} - -/** - * Gets a mapbox VectorTile for the x y z web mercator tile specified - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table table name - * @param {Number} x x tile - * @param {Number} y y tile - * @param {Number} z web zoom - * @return {VectorTile} - */ -GeoPackageAPI.getVectorTile = function(geopackage, table, x, y, z) { - return GeoPackageAPI.getVectorTileProtobuf(geopackage, table, x, y, z) - .then(function(pbf) { - return new VectorTile.VectorTile(new Pbf(pbf)); - }); -} - -/** - * Gets a protobuf for the x y z web mercator tile specified - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table table name - * @param {Number} x x tile - * @param {Number} y y tile - * @param {Number} z web zoom - * @return {Protobuf} - */ -GeoPackageAPI.getVectorTileProtobuf = function(geopackage, table, x, y, z) { - return GeoPackageAPI.getGeoJSONFeaturesInTile(geopackage, table, x, y, z, true) - .then(function(features) { - var featureCollection = { - type: 'FeatureCollection', - features: features - }; - var tileBuffer = 8; - var tileIndex = geojsonvt(featureCollection, {buffer: tileBuffer * 8, maxZoom: z}); - var layer = {}; - var tile = tileIndex.getTile(z, x, y); - - var gjvt = {}; - - if (tile) { - gjvt[table] = tile; - } else { - gjvt[table] = {features:[]}; - } - - return vtpbf.fromGeojsonVt(gjvt); - }); -} - -/** - * Gets the features in the EPSG:4326 bounding box - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table name of the feature table - * @param {Number} west EPSG:4326 western boundary - * @param {Number} east EPSG:4326 eastern boundary - * @param {Number} south EPSG:4326 southern boundary - * @param {Number} north EPSG:4326 northern boundary - */ -GeoPackageAPI.getFeaturesInBoundingBox = function(geopackage, table, west, east, south, north) { - return geopackage.indexFeatureTable(table) - .then(function(indexed) { - var featureDao = geopackage.getFeatureDao(table); - if (!featureDao) throw new Error('Unable to find table ' + table); - var features = []; - var bb = new BoundingBox(west, east, south, north); - var iterator = featureDao.queryIndexedFeaturesWithBoundingBox(bb); - return iterator; - }); -} - -/** - * Gets a tile image for an XYZ tile pyramid location - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table name of the table containing the tiles - * @param {Number} x x index of the tile - * @param {Number} y y index of the tile - * @param {Number} z zoom level of the tile - * @param {Number} width width of the resulting tile - * @param {Number} height height of the resulting tile - * @return {Promise} - */ -GeoPackageAPI.getTileFromXYZ = function(geopackage, table, x, y, z, width, height) { - x = Number(x); - y = Number(y); - z = Number(z); - width = Number(width); - height = Number(height); - var tileDao = geopackage.getTileDao(table); - var retriever = new GeoPackageTileRetriever(tileDao, width, height); - return retriever.getTile(x, y, z); -}; - -/** - * Draws an XYZ tile pyramid location into the provided canvas - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table name of the table containing the tiles - * @param {Number} x x index of the tile - * @param {Number} y y index of the tile - * @param {Number} z zoom level of the tile - * @param {Number} width width of the resulting tile - * @param {Number} height height of the resulting tile - * @param {Canvas} canvas canvas element to draw the tile into - */ -GeoPackageAPI.drawXYZTileInCanvas = function(geopackage, table, x, y, z, width, height, canvas) { - x = Number(x); - y = Number(y); - z = Number(z); - width = Number(width); - height = Number(height); - var tileDao = geopackage.getTileDao(table) - var retriever = new GeoPackageTileRetriever(tileDao, width, height); - return retriever.drawTileIn(x, y, z, canvas); -}; - -/** - * Draws a tile specified by the bounds in EPSG:4326 into the canvas - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table name of the table containing the tiles - * @param {Number} minLat minimum latitude bounds of tile - * @param {Number} minLon minimum longitude bounds of tile - * @param {Number} maxLat maximum latitude bounds of tile - * @param {Number} maxLon maximum longitude bounds of tile - * @param {Number} z zoom level of the tile - * @param {Number} width width of the resulting tile - * @param {Number} height height of the resulting tile - * @param {Canvas} canvas canvas element to draw the tile into - */ -GeoPackageAPI.draw4326TileInCanvas = function(geopackage, table, minLat, minLon, maxLat, maxLon, z, width, height, canvas) { - z = Number(z); - width = Number(width); - height = Number(height); - var tileDao = geopackage.getTileDao(table); - var retriever = new GeoPackageTileRetriever(tileDao, width, height); - var bounds = new BoundingBox(minLon, maxLon, minLat, maxLat); - return retriever.drawTileWithWgs84BoundsInProjection(bounds, z, 'EPSG:4326', canvas); -} - - -/////////////////// -// JSDoc Globals // -/////////////////// - -/** - * @callback geopackageCallback - * @param {?Error} error - * @param {module:geoPackage~GeoPackage=} geopackage a GeoPackage instance - */ - - /** - * An integer database key referencing a {@link module:core/srs~SpatialReferenceSystem} row in a GeoPackage database - * @typedef {number} SRSRef - * @see https://www.geopackage.org/spec121/index.html#spatial_ref_sys - */ - -}).call(this,require('_process')) -},{"./boundingBox":7,"./dataColumns":13,"./db/dataTypes":14,"./db/geoPackageConnection":15,"./db/tableCreator":19,"./extension/index/featureTableIndex":26,"./extension/relatedTables/mediaTable":35,"./extension/relatedTables/relationType":36,"./extension/relatedTables/simpleAttributesTable":39,"./features/columns":64,"./features/user/featureColumn":65,"./geoPackage":70,"./geom/geometryData":73,"./tiles/features":87,"./tiles/retriever":92,"./tiles/tileBoundingBoxUtils":93,"./user/userColumn":105,"./validate/geoPackageValidate":110,"@mapbox/vector-tile":113,"_process":284,"fs":177,"geojson-vt":226,"path":276,"pbf":277,"reproject":315,"vt-pbf":345,"wkx":360}],3:[function(require,module,exports){ -/** - * @module attributes/attributeDao - */ - -var UserDao = require('../user/userDao') - , AttributeRow = require('./attributeRow'); - -var util = require('util'); - -/** - * Attribute DAO for reading attribute user data tables - * @class AttributeDao - * @extends {module:user/userDao~UserDao} - * @param {module:geoPackage~GeoPackage} geopackage geopackage object - * @param {module:attributes/attributeTable~AttributeTable} table attribute table - */ -var AttributeDao = function(geoPackage, table) { - UserDao.call(this, geoPackage, table); - if (!table.contents) { - throw new Error('Attributes table has null Contents'); - } - /** - * Contents of this AttributeDao - * @member {module:core/contents~Contents} - */ - this.contents = table.contents; -} - -util.inherits(AttributeDao, UserDao); - -/** - * Create a new attribute row with the column types and values - * @param {Array} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @return {moule:attributes/attributeRow~AttributeRow} attribute row - */ -AttributeDao.prototype.newRowWithColumnTypes = function (columnTypes, values) { - return new AttributeRow(this.table, columnTypes, values); -}; - -/** - * Create a new attribute row - * @return {module:attributes/attributeRow~AttributeRow} attribute row - */ -AttributeDao.prototype.newRow = function () { - return new AttributeRow(this.table); -}; - -module.exports = AttributeDao; - -},{"../user/userDao":106,"./attributeRow":4,"util":343}],4:[function(require,module,exports){ -/** - * AttributeRow module. - * @module attributes/attributeRow - */ - -var UserRow = require('../user/userRow'); -var util = require('util'); - -/** - * Attribute Row containing the values from a single result set row - * @class AttributeRow - * @extends module:user/userRow~UserRow - * @param {module:attributes/attributeTable~AttributeTable} attributeTable attribute table - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - */ -var AttributeRow = function(attributeTable, columnTypes, values) { - UserRow.call(this, attributeTable, columnTypes, values); -} - -util.inherits(AttributeRow, UserRow); - -module.exports = AttributeRow; - -},{"../user/userRow":107,"util":343}],5:[function(require,module,exports){ -/** - * @module attributes/attributeTable - */ - -var UserTable = require('../user/userTable') - , ContentsDao = require('../core/contents').ContentsDao; - -var util = require('util'); - -/** - * Represents a user attribute table - * @class AttributeTable - * @extends {module:user/userTable~UserTable} - * @constructor - * @param {string} tableName table name - * @param {module:user/userColumn~UserColumn[]} columns attribute columns - */ -var AttributeTable = function(tableName, columns) { - /** - * Contents of this AttributeTable - * @member {module:core/contents~Contents} - */ - this.contents; - - UserTable.call(this, tableName, columns); -} - -util.inherits(AttributeTable, UserTable); - -/** - * Set the contents - * @param {module:core/contents~Contents} contents the contents - */ -AttributeTable.prototype.setContents = function(contents) { - this.contents = contents; - if (contents.data_type !== ContentsDao.GPKG_CDT_ATTRIBUTES_NAME) { - throw new Error('The Contents of an Attributes Table must have a data type of ' + ContentsDao.GPKG_CDT_ATTRIBUTES_NAME); - } -} - -module.exports = AttributeTable; - -},{"../core/contents":8,"../user/userTable":108,"util":343}],6:[function(require,module,exports){ -/** - * attributeTableReader module. - * @module attributes/attributeTableReader - */ - -var UserTableReader = require('../user/userTableReader') - , AttributeTable = require('./attributeTable') - , DataTypes = require('../db/dataTypes'); - -var util = require('util'); - -/** -* Reads the metadata from an existing attribute table -* @class AttributeTableReader -* @extends {module:user/userTableReader~UserTableReader} -* @classdesc Reads the metadata from an existing attributes table -*/ -var AttributeTableReader = function(tableName) { - UserTableReader.call(this, tableName); -} - -util.inherits(AttributeTableReader, UserTableReader); - -/** - * @inheritdoc - */ -AttributeTableReader.prototype.createTable = function (tableName, columns) { - return new AttributeTable(tableName, columns); -}; - -module.exports = AttributeTableReader; - -},{"../db/dataTypes":14,"../user/userTableReader":109,"./attributeTable":5,"util":343}],7:[function(require,module,exports){ -var proj4 = require('proj4'); -proj4 = 'default' in proj4 ? proj4['default'] : proj4; - -/** - * Create a new bounding box - * @class BoundingBox - * @param {Number} minLongitudeOrBoundingBox minimum longitude or bounding box to copy (west) - * @param {Number} maxLongitude maximum longitude (east) - * @param {Number} minLatitude Minimum latitude (south) - * @param {Number} maxLatitude Maximum latitude (north) - * @return {BoundingBox} newly constructed bounding box - */ -var BoundingBox = function(minLongitudeOrBoundingBox, maxLongitude, minLatitude, maxLatitude) { - // if there is a second argument the first argument is the minLongitude - if (maxLongitude !== undefined) { - this.minLongitude = minLongitudeOrBoundingBox; - this.maxLongitude = maxLongitude; - this.minLatitude = minLatitude; - this.maxLatitude = maxLatitude; - } else { - var boundingBox = minLongitudeOrBoundingBox; - this.minLongitude = boundingBox.minLongitude; - this.maxLongitude = boundingBox.maxLongitude; - this.minLatitude = boundingBox.minLatitude; - this.maxLatitude = boundingBox.maxLatitude; - } -} - -module.exports = BoundingBox; - -/** - * Build a Geometry Envelope from the bounding box - * - * @return geometry envelope - */ -BoundingBox.prototype.buildEnvelope = function () { - return { - minY: this.minLatitude, - minX: this.minLongitude, - maxY: this.maxLatitude, - maxX: this.maxLongitude - }; -}; - -BoundingBox.prototype.toGeoJSON = function() { - return { - "type": "Feature", - "properties": {}, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [this.minLongitude,this.minLatitude], - [this.maxLongitude,this.minLatitude], - [this.maxLongitude,this.maxLatitude], - [this.minLongitude,this.maxLatitude], - [this.minLongitude,this.minLatitude] - ] - ] - } - }; -} - -/** - * Determine if equal to the provided bounding box - * @param {BoundingBox} boundingBox bounding boundingBox - * @return {Boolean} true if equal, false if not - */ -BoundingBox.prototype.equals = function (boundingBox) { - if (!boundingBox) { - return false; - } - - if (this === boundingBox) { - return true; - } - - return this.maxLatitude === boundingBox.maxLatitude - && this.minLatitude === boundingBox.minLatitude - && this.maxLongitude === boundingBox.maxLongitude - && this.maxLatitude === boundingBox.maxLatitude; -}; - -BoundingBox.prototype.projectBoundingBox = function (from, to) { - if (from && from !== 'undefined' && to && to !== 'undefined') { - var toProj = to.toUpperCase ? proj4(to) : to; - var fromProj = from.toUpperCase ? proj4(from) : from; - if (to.toUpperCase && to.toUpperCase() === 'EPSG:3857' && from.toUpperCase && from.toUpperCase() === 'EPSG:4326') { - this.maxLatitude = this.maxLatitude > 85.0511 ? 85.0511 : this.maxLatitude; - this.minLatitude = this.minLatitude < -85.0511 ? -85.0511 : this.minLatitude; - this.minLongitude = this.minLongitude < -180.0 ? -180.0 : this.minLongitude; - this.maxLongitude = this.maxLongitude > 180.0 ? 180.0 : this.maxLongitude; - } - var min = proj4(from, to, [this.minLongitude, this.minLatitude]); - var max = proj4(from, to, [this.maxLongitude, this.maxLatitude]); - var projected = new BoundingBox(min[0], max[0], min[1], max[1]); - return projected; - } else { - return this; - } -}; - - - -// /** -// * Get a Map Rectangle representing the bounding box -// * -// * @return map rectangle -// */ -// -(MKMapRect) getMapRect; -// -// /** -// * Get a Coordinate Region of the bounding box -// * -// * @return Coordinate Region -// */ -// -(MKCoordinateRegion) getCoordinateRegion; -// -// /** -// * Get the Span of the bounding box -// * -// * @return Span -// */ -// -(MKCoordinateSpan) getSpan; -// -// /** -// * Get the center of the bounding box -// * -// * @return center location -// */ -// -(CLLocationCoordinate2D) getCenter; -// -// /** -// * Get with width and height of the bounding box in meters -// * -// * @return bounding box size -// */ -// -(struct GPKGBoundingBoxSize) sizeInMeters; - -},{"proj4":285}],8:[function(require,module,exports){ -/** - * Contents module. - * @module core/contents - */ - -var Dao = require('../../dao/dao') - , GeometryColumnsDao = require('../../features/columns').GeometryColumnsDao - , SpatialReferenceSystemDao = require('../srs').SpatialReferenceSystemDao - , TileMatrixDao = require('../../tiles/matrix').TileMatrixDao - , TileMatrixSetDao = require('../../tiles/matrixset').TileMatrixSetDao - , ColumnValues = require('../../dao/columnValues'); - -var util = require('util'); - -/** - * The Contents class models rows in the [`gpkg_contents`](https://www.geopackage.org/spec121/index.html#_contents) - * table. The contents table stores identifying and descriptive information - * that an application can display to a user in a menu of geospatial data - * available in a GeoPackage. - * @class Contents - * @see https://www.geopackage.org/spec121/index.html#_contents - */ -var Contents = function() { - /** - * the name of the tiles, or feature table - * @member {string} - */ - this.table_name; - - /** - * Type of data stored in the table:. “features” per clause Features, - * “tiles” per clause Tiles, or an implementer-defined value for other data - * tables per clause in an Extended GeoPackage. - * @member {string} - */ - this.data_type; - - /** - * A human-readable identifier (e.g. short name) for the table_name content - * @member {string} - */ - this.identifier; - - /** - * A human-readable description for the table_name content - * @member {string} - */ - this.description; - - /** - * timestamp value in ISO 8601 format as defined by the strftime function - * %Y-%m-%dT%H:%M:%fZ format string applied to the current time - * @member {Date} - */ - this.last_change; - - /** - * Bounding box minimum easting or longitude for all content in table_name - * @member {Number} - */ - this.min_x; - - /** - * Bounding box minimum northing or latitude for all content in table_name - * @member {Number} - */ - this.min_y; - - /** - * Bounding box maximum easting or longitude for all content in table_name - * @member {Number} - */ - this.max_x; - - /** - * Bounding box maximum northing or latitude for all content in table_name - * @member {Number} - */ - this.max_y; - - /** - * Unique identifier for each Spatial Reference System within a GeoPackage - * @member {SRSRef} - */ - this.srs_id; -} - -/** - * Contents object. Provides identifying and descriptive information that an - * application can display to a user in a menu of geospatial data that is - * available for access and/or update. - * @class ContentsDao - * @extends {module:dao/dao~Dao} - */ -var ContentsDao = function(geoPackage) { - Dao.call(this, geoPackage); -} - -util.inherits(ContentsDao, Dao); - -/** - * Creates a new Contents object - * @return {module:core/contents~Contents} new Contents object - */ -ContentsDao.prototype.createObject = function () { - return new Contents(); -}; - -/** - * Get table names by table type - * @param {string} [tableType] table type to query for - * @return {string[]} Array of table names - */ -ContentsDao.prototype.getTables = function(tableType) { - var results; - if (tableType) { - var fieldValues = new ColumnValues(); - fieldValues.addColumn(ContentsDao.COLUMN_DATA_TYPE, tableType); - results = this.queryForColumns('table_name', fieldValues); - } else { - results = this.queryForColumns('table_name'); - } - var tableNames = []; - for (var i = 0; i < results.length; i++) { - tableNames.push(results[i].table_name); - } - return tableNames; -} - -/** - * Returns the proj4 projection for the Contents - * @param {module:core/contents~Contents} contents Contents to get the projection from - * @return {proj4} proj4 projection - */ -ContentsDao.prototype.getProjection = function (contents) { - var srs = this.getSrs(contents); - var srsDao = this.geoPackage.getSpatialReferenceSystemDao(); - return srsDao.getProjection(srs); -}; - -/** - * Get the SpatialReferenceSystemDao for the Contents - * @param {module:core/contents~Contents} contents Contents to get the SpatialReferenceSystemDao from - * @return {module:core/srs~SpatialReferenceSystemDao} - */ -ContentsDao.prototype.getSrs = function (contents) { - var dao = this.geoPackage.getSpatialReferenceSystemDao(); - return dao.queryForId(contents.srs_id); -}; - -/** - * Get the GeometryColumns for the Contents - * @param {module:core/contents~Contents} contents Contents - * @return {module:features/columns~GeometryColumns} - */ -ContentsDao.prototype.getGeometryColumns = function (contents) { - var dao = this.geoPackage.getGeometryColumnsDao(); - // TODO what is causing this to need to be here and not up in the require section - var GeometryColumnsDao = require('../../features/columns').GeometryColumnsDao; - var results = dao.queryForAllEq(GeometryColumnsDao.COLUMN_TABLE_NAME, contents.table_name); - if (!results || !results.length) return; - var gc = dao.createObject(); - dao.populateObjectFromResult(gc, results[0]); - return gc; -}; - -/** - * Get the TileMatrixSet for the Contents - * @param {module:core/contents~Contents} contents Contents - * @return {module:tiles/matrixset~TileMatrixSet} - */ -ContentsDao.prototype.getTileMatrixSet = function (contents) { - var dao = this.geoPackage.getTileMatrixSetDao(); - var results = dao.queryForAllEq(TileMatrixSetDao.COLUMN_TABLE_NAME, contents.table_name); - if (!results || !results.length) return; - var gc = dao.createObject(); - dao.populateObjectFromResult(gc, results[0]); - return gc; -}; - -/** - * Get the TileMatrix for the Contents - * @param {module:core/contents~Contents} contents Contents - * @return {module:tiles/matrix~TileMatrix} - */ -ContentsDao.prototype.getTileMatrix = function (contents) { - var dao = this.geoPackage.getTileMatrixDao(); - var results = dao.queryForAllEq(TileMatrixDao.COLUMN_TABLE_NAME, contents.table_name); - if (!results || !results.length) return; - var tileMatricies = []; - for (var i = 0; i < results.length; i++) { - var gc = dao.createObject(); - dao.populateObjectFromResult(gc, results[i]); - tileMatricies.push(gc); - } - return tileMatricies; -}; - -ContentsDao.TABLE_NAME = "gpkg_contents"; -ContentsDao.COLUMN_PK = "table_name"; -ContentsDao.COLUMN_TABLE_NAME = "table_name"; -ContentsDao.COLUMN_DATA_TYPE = "data_type"; -ContentsDao.COLUMN_IDENTIFIER = "identifier"; -ContentsDao.COLUMN_DESCRIPTION = "description"; -ContentsDao.COLUMN_LAST_CHANGE = "last_change"; -ContentsDao.COLUMN_MIN_X = "min_x"; -ContentsDao.COLUMN_MIN_Y = "min_y"; -ContentsDao.COLUMN_MAX_X = "max_x"; -ContentsDao.COLUMN_MAX_Y = "max_y"; -ContentsDao.COLUMN_SRS_ID = "srs_id"; - -ContentsDao.GPKG_CDT_FEATURES_NAME = "features"; -ContentsDao.GPKG_CDT_TILES_NAME = "tiles"; -ContentsDao.GPKG_CDT_ATTRIBUTES_NAME = "attributes"; - -ContentsDao.prototype.gpkgTableName = ContentsDao.TABLE_NAME; -ContentsDao.prototype.idColumns = [ContentsDao.COLUMN_PK]; - -module.exports.ContentsDao = ContentsDao; -Contents.TABLE_NAME = ContentsDao.TABLE_NAME; -module.exports.Contents = Contents; - -},{"../../dao/columnValues":10,"../../dao/dao":11,"../../features/columns":64,"../../tiles/matrix":90,"../../tiles/matrixset":91,"../srs":9,"util":343}],9:[function(require,module,exports){ -/** - * SpatialReferenceSystem module. - * @module core/srs - */ - -var Dao = require('../../dao/dao'); - -var util = require('util') - , proj4 = require('proj4'); -proj4 = 'default' in proj4 ? proj4['default'] : proj4; - -/** - * Spatial Reference System object. The coordinate reference system definitions it contains are referenced by the GeoPackage Contents and GeometryColumns objects to relate the vector and tile data in user tables to locations on the earth. - * @class SpatialReferenceSystem - */ -var SpatialReferenceSystem = function() { - /** - * Human readable name of this SRS - * @member {string} - */ - this.srs_name; - /** - * Unique identifier for each Spatial Reference System within a GeoPackage - * @member {Number} - */ - this.srs_id; - - /** - * Case-insensitive name of the defining organization e.g. EPSG or epsg - * @member {string} - */ - this.organization; - - /** - * Numeric ID of the Spatial Reference System assigned by the organization - * @member {Number} - */ - this.organization_coordsys_id; - - /** - * Well-known Text [32] Representation of the Spatial Reference System - * @member {string} - */ - this.definition; - - /** - * Human readable description of this SRS - * @member {string} - */ - this.description; - - /** - * Well-known Text Representation of the Spatial Reference System - * @member {string} - */ - this.definition_12_063; -}; - -/** - * Return the proj4 projection specified by this SpatialReferenceSystem - * @return {proj4} - */ -SpatialReferenceSystem.prototype.getProjection = function() { - if(this.organization === 'NONE') return {}; - if(this.organization_coordsys_id === 4326 && (this.organization === 'EPSG' || this.organization === 'epsg')) { - return proj4('EPSG:4326'); - } else if (this.definition_12_063 && this.definition_12_063 !== '' && this.definition_12_063 !== 'undefined') { - return proj4(this.definition_12_063); - } else if (this.definition && this.definition !== '' && this.definition !== 'undefined') { - return proj4(this.definition); - } else if (this.organization && this.organization_coordsys_id) { - return proj4(this.organization.toUpperCase() + ':' + this.organization_coordsys_id); - } else { - return {}; - } -} - -/** - * Spatial Reference System Data Access Object - * @class SpatialReferenceSystemDao - * @extends {module:dao/dao~Dao} - * @param {module:geoPackage~GeoPackage} geoPackage The GeoPackage object - */ -var SpatialReferenceSystemDao = function(geoPackage) { - Dao.call(this, geoPackage); -} - -util.inherits(SpatialReferenceSystemDao, Dao); - -/** - * Create a new SpatialReferenceSystem object - * @return {module:core/srs~SpatialReferenceSystem} - */ -SpatialReferenceSystemDao.prototype.createObject = function () { - return new SpatialReferenceSystem(); -}; - -/** - * Get the Spatial Reference System for the provided id - * @param {Number} srsId srs id - * @return {module:core/srs~SpatialReferenceSystem} - */ -SpatialReferenceSystemDao.prototype.getBySrsId = function(srsId) { - return this.queryForId(srsId); -}; - -/** - * Return the proj4 projection specified by this SpatialReferenceSystem - * @return {proj4} - */ -SpatialReferenceSystemDao.prototype.getProjection = function (srs) { - return srs.getProjection(); -}; - -/** - * Creates the required EPSG WGS84 Spatial Reference System (spec - * Requirement 11) - * @return {Number} id of the created row - */ -SpatialReferenceSystemDao.prototype.createWgs84 = function() { - var srs = this.getBySrsId(4326); - if (srs) { - return srs; - } - var srs = new SpatialReferenceSystem(); - srs.srs_name = 'WGS 84 geodetic'; - srs.srs_id = 4326; - srs.organization = 'EPSG'; - srs.organization_coordsys_id = 4326; - srs.definition = 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]'; - srs.description = 'longitude/latitude coordinates in decimal degrees on the WGS 84 spheroid'; - if (this.connection.columnAndTableExists('gpkg_spatial_ref_sys', 'definition_12_063')) { - srs.definition_12_063 = 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]'; - } - return this.create(srs); -} - -/** - * Creates the required Undefined Cartesian Spatial Reference System (spec - * Requirement 11) - * @return {Number} id of the created row - */ -SpatialReferenceSystemDao.prototype.createUndefinedCartesian = function() { - var srs = this.getBySrsId(-1); - if (srs) { - return srs; - } - var srs = new SpatialReferenceSystem(); - srs.srs_name = 'Undefined cartesian SRS'; - srs.srs_id = -1; - srs.organization = 'NONE'; - srs.organization_coordsys_id = -1; - srs.definition = 'undefined'; - srs.description = 'undefined cartesian coordinate reference system'; - if (this.connection.columnAndTableExists('gpkg_spatial_ref_sys', 'definition_12_063')) { - srs.definition_12_063 = 'undefined'; - } - return this.create(srs); -} - -/** - * Creates the required Undefined Geographic Spatial Reference System (spec - * Requirement 11) - * @return {Number} id of the created row - */ -SpatialReferenceSystemDao.prototype.createUndefinedGeographic = function() { - var srs = this.getBySrsId(0); - if (srs) { - return srs; - } - var srs = new SpatialReferenceSystem(); - srs.srs_name = 'Undefined geographic SRS'; - srs.srs_id = 0; - srs.organization = 'NONE'; - srs.organization_coordsys_id = 0; - srs.definition = 'undefined'; - srs.description = 'undefined geographic coordinate reference system'; - if (this.connection.columnAndTableExists('gpkg_spatial_ref_sys', 'definition_12_063')) { - srs.definition_12_063 = 'undefined'; - } - return this.create(srs); -} - -/** - * Creates the Web Mercator Spatial Reference System if it does not already - * exist - * @return {Number} id of the created row - */ -SpatialReferenceSystemDao.prototype.createWebMercator = function() { - var srs = this.getBySrsId(3857); - if (srs) { - return srs; - } - var srs = new SpatialReferenceSystem(); - srs.srs_name = 'WGS 84 / Pseudo-Mercator'; - srs.srs_id = 3857; - srs.organization = 'EPSG'; - srs.organization_coordsys_id = 3857; - srs.definition = 'PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["X",EAST],AXIS["Y",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]'; - srs.description = 'Spherical Mercator projection coordinate system'; - if(this.connection.columnAndTableExists('gpkg_spatial_ref_sys', 'definition_12_063')) { - srs.definition_12_063 = 'PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["X",EAST],AXIS["Y",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]'; - } - return this.create(srs); -} - -/** - * Spatial Reference System Table Name - * @type {String} - */ -SpatialReferenceSystemDao.TABLE_NAME = 'gpkg_spatial_ref_sys'; - -/** - * Table Name - * @type {String} - */ -SpatialReferenceSystemDao.prototype.gpkgTableName = SpatialReferenceSystemDao.TABLE_NAME; - -/** - * srsName field name - * @type {String} - */ -SpatialReferenceSystemDao.COLUMN_SRS_NAME = "srs_name"; - -/** - * srsId field name - * @type {String} - */ -SpatialReferenceSystemDao.COLUMN_SRS_ID = "srs_id"; - -/** - * id field name, srsId - * @type {String} - */ -SpatialReferenceSystemDao.COLUMN_ID = SpatialReferenceSystemDao.COLUMN_SRS_ID; - -/** - * organization field name - * @type {String} - */ -SpatialReferenceSystemDao.COLUMN_ORGANIZATION = "organization"; - -/** - * organizationCoordsysId field name - * @type {String} - */ -SpatialReferenceSystemDao.COLUMN_ORGANIZATION_COORDSYS_ID = "organization_coordsys_id"; - -/** - * definition field name - * @type {String} - */ -SpatialReferenceSystemDao.COLUMN_DEFINITION = "definition"; - -/** - * description field name - * @type {String} - */ -SpatialReferenceSystemDao.COLUMN_DESCRIPTION = "description"; - - -SpatialReferenceSystemDao.prototype.idColumns = [SpatialReferenceSystemDao.COLUMN_SRS_ID]; - -module.exports.SpatialReferenceSystemDao = SpatialReferenceSystemDao; -SpatialReferenceSystem.TABLE_NAME = SpatialReferenceSystemDao.TABLE_NAME; -module.exports.SpatialReferenceSystem = SpatialReferenceSystem; - -},{"../../dao/dao":11,"proj4":285,"util":343}],10:[function(require,module,exports){ -/** - * @module dao/columnValues - */ - -/** - * Structure to define columns in a table - * @class ColumnValues - */ -var ColumnValues = function() { - this.values = {}; - this.columns = []; -} - -module.exports = ColumnValues; - -/** - * adds a column to the structure - * @param {string} columnName name of column to add - * @param {module:user/userColumn~UserColumn} column column to add - */ -ColumnValues.prototype.addColumn = function (columnName, column) { - this.columns.push(columnName); - this.values[columnName] = column; -}; - -/** - * Gets the column by name - * @param {string} columnName name of column - * @return {module:user/userColumn~UserColumn} user column - */ -ColumnValues.prototype.getValue = function (columnName) { - return this.values[columnName]; -}; - -},{}],11:[function(require,module,exports){ -/** - * Dao module. - * @module dao/dao - */ - -var sqliteQueryBuilder = require('../db/sqliteQueryBuilder') - , ColumnValues = require('./columnValues'); - -/** - * Base DAO - * @class Dao - * @param {module:geoPackage~GeoPackage} geoPackage GeoPackage object - */ -var Dao = function(geoPackage) { - /** - * GeoPackage object this dao belongs to - * @type {module:geoPackage~GeoPackage} - */ - this.geoPackage = geoPackage; - /** - * Database connection to the sqlite file - * @type {module:db/geoPackageConnection~GeoPackageConnection} - */ - this.connection = geoPackage.getDatabase(); -} - -/** - * Copies object properties from result object to the object - * @param {Object} object object to copy properties to - * @param {Object} result object to copy properties from - */ -Dao.prototype.populateObjectFromResult = function (object, result) { - if (!result) return; - for (var key in result) { - object[key] = result[key]; - } -}; - -/** - * Checks if the table exists - * @return {Boolean} - */ -Dao.prototype.isTableExists = function () { - var results = this.connection.isTableExists(this.gpkgTableName); - return !!results; -}; - -/** - * Refreshes the object by id - * @param {Object} object object to refresh - * @return {Object} - */ -Dao.prototype.refresh = function(object) { - return this.queryForSameId(object); -} - -/** - * Query for object by id - * @param {object} id ID of the object to query for - * @return {Object} object created from the raw database object - */ -Dao.prototype.queryForId = function(id) { - var whereString = this.buildPkWhere(id); - var whereArgs = this.buildPkWhereArgs(id); - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", undefined, whereString); - var result = this.connection.get(query, whereArgs); - if (!result) return; - var object = this.createObject(result); - // TOOD something is wrong here - this.populateObjectFromResult(object, result); - return object; -}; - -Dao.prototype.queryForSameId = function (object) { - var idArray = this.getMultiId(object); - return this.queryForMultiId(idArray); -}; - -Dao.prototype.getMultiId = function (object) { - var idValues = []; - for (var i = 0; i < this.idColumns.length; i++) { - var idValue = object.values ? object.values[this.idColumns[i]] : object[this.idColumns[i]]; - if (idValue !== undefined) { - idValues.push(idValue); - } - } - return idValues; -}; - -/** - * Query for object by multi id - * @param {module:dao/columnValues~ColumnValues} idValues ColumnValues with the multi id - * @return {Object} object created from the raw database object - */ -Dao.prototype.queryForMultiId = function (idValues) { - var whereString = this.buildPkWhere(idValues); - var whereArgs = this.buildPkWhereArgs(idValues); - - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", undefined, whereString); - - var result = this.connection.get(query, whereArgs); - if (!result) return; - var object = this.createObject(result); - this.populateObjectFromResult(object, result); - return object; -}; - -/** - * Queries for all matches and returns them in the callback. Be aware this pulls all results into memory - * @param {string} [where] Optional where clause - * @param {object[]} [whereArgs] Optional where args array - * @return {Object[]} raw object array from the database - */ -Dao.prototype.queryForAll = function (where, whereArgs) { - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", undefined, where); - return this.connection.all(query, whereArgs); -}; - -/** - * Queries for all matches and returns them in the callback. Be aware this pulls all results into memory - * @param {string} fieldName name of the field to query for - * @param {string} value value of the like clause - * @return {Object[]} raw object array from the database - */ -Dao.prototype.queryForLike = function(fieldName, value) { - var values = new ColumnValues(); - values.addColumn(fieldName, value); - var where = this.buildWhereLike(values); - var whereArgs = this.buildWhereArgs(value); - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", undefined, where); - return this.connection.all(query, whereArgs); -} - -/** - * Queries for all matches and returns them. Only queries for the specified column name Be aware this pulls all results into memory - * @param {string} columnName name of the column to query for - * @param {module:dao/columnValues~ColumnValues} [fieldValues] optional values to filter on - * @return {Object[]} raw object array from the database - */ -Dao.prototype.queryForColumns = function (columnName, fieldValues) { - var where; - var whereArgs; - if (fieldValues) { - where = this.buildWhere(fieldValues); - whereArgs = this.buildWhereArgs(fieldValues); - } - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", [columnName], where); - return this.connection.all(query, whereArgs); -}; - -/** - * Queries for all items in the table with a page size and page number - * @param {Number} pageSize size of the chunk to query for - * @param {Number} page chunk number to query for - * @return {Object[]} raw object array from the database - */ -Dao.prototype.queryForChunk = function(pageSize, page) { - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", undefined, undefined, undefined, undefined, undefined, this.idColumns[0], pageSize, page * pageSize); - return this.connection.all(query); -}; - -/** - * Iterate all items in the table one at a time. If no parameters are passed, iterates the entire table. Returns an Iterable object - * @param {string} [field] field to filter on - * @param {Object} [value] value to filter on - * @param {string} [groupBy] group by clause - * @param {string} [having] having clause - * @param {string} [orderBy] order by clause - * @return {Iterable} iterable of database objects - */ -Dao.prototype.queryForEach = function (field, value, groupBy, having, orderBy) { - if (!field) { - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'"); - var count = 0; - return this.connection.each(query); - } else { - var whereString = this.buildWhereWithFieldAndValue(field, value); - var whereArgs = this.buildWhereArgs(value); - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", undefined, whereString); - return this.connection.each(query, whereArgs); - } -}; - -/** - * Iterate all objects in thet able that match the ColumnValues passed in - * @param {module:dao/columnValues~ColumnValues} fieldValues ColumnValues to query for - * @return {Iterable.Object} - */ -Dao.prototype.queryForFieldValues = function (fieldValues) { - var whereString = this.buildWhere(fieldValues); - var whereArgs = this.buildWhereArgs(fieldValues); - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", undefined, whereString); - var count = 0; - return this.connection.each(query, whereArgs); -}; - -/** - * Iterate all matching objects - * @param {string} join join clause - * @param {string} where where clause - * @param {Object[]} whereArgs array of where query values - * @param {string[]} columns columns to query for - * @return {Iterable.} - */ -Dao.prototype.queryJoinWhereWithArgs = function(join, where, whereArgs, columns) { - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", columns, where, join); - var count = 0; - return this.connection.each(query, whereArgs); -} - -/** - * Count all matching objects - * @param {string} join join clause - * @param {string} where where clause - * @param {Object[]} whereArgs array of where query values - * @param {string[]} columns columns to query for - * @return {Number} - */ -Dao.prototype.countJoinWhereWithArgs = function(join, where, whereArgs, columns) { - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", columns, where, join); - return this.connection.all(query, whereArgs).length; -} - -/** - * Iterate all distinct matching rows in the table - * @param {string} where where clause - * @param {Object[]} whereArgs array of where query values - * @return {Iterable.} - */ -Dao.prototype.queryWhereWithArgsDistinct = function(where, whereArgs) { - var query = sqliteQueryBuilder.buildQuery(true, "'"+this.gpkgTableName+"'", undefined, where); - var count = 0; - return this.connection.each(query, whereArgs); -} - -/** - * Iterate all matching rows - * @param {string} [where] where clause - * @param {Object[]} [whereArgs] array of where query values - * @param {string} [groupBy] group by clause - * @param {string} [having] having clause - * @param {string} [orderBy] order by clause - * @param {string} [limit] limit clause - * @return {Iterable.} - */ -Dao.prototype.queryWhere = function (where, whereArgs, groupBy, having, orderBy, limit) { - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", undefined, where, undefined, groupBy, having, orderBy, limit); - return this.connection.each(query, whereArgs); -}; - -/** - * Get the primary key where clause - * @param {Object|Object[]} idValue id - * @return {string} primary key where clause - */ -Dao.prototype.buildPkWhere = function(idValue) { - if (Array.isArray(idValue)) { - var idValuesArray = idValue; - var idColumnValues = new ColumnValues(); - for (var i = 0; i < idValuesArray.length; i++) { - idColumnValues.addColumn(this.idColumns[i], idValuesArray[i]); - } - return this.buildWhere(idColumnValues); - } - return this.buildWhereWithFieldAndValue(this.idColumns, idValue); -}; - -/** - * Get the primary key where args - * @param {Object} idValue id - * @return {Object[]} where args - */ -Dao.prototype.buildPkWhereArgs = function (idValue) { - if (Array.isArray(idValue)) { - var idValuesArray = idValue; - var values = []; - for (var i = 0; i < idValuesArray.length; i++) { - values = values.concat(this.buildWhereArgs(idValuesArray[i])); - } - return values; - } - return this.buildWhereArgs(idValue); -}; - -/** - * Build where (or selection) LIKE statement for fields - * @param {module:dao/columnValues~ColumnValues} fields columns and values - * @param {string} operation AND or OR - * @return {string} where clause - */ -Dao.prototype.buildWhereLike = function(fields, operation) { - var whereString = ''; - for (var i = 0; i < fields.columns.length; i++) { - var column = fields.columns[i]; - if (i) { - whereString += ' ' + operation + ' '; - } - whereString += this.buildWhereWithFieldAndValue(column, fields.getValue(column), 'like'); - } - return whereString; -} - -/** - * Build where or selection statement for fields - * @param {module:dao/columnValues~ColumnValues} fields columns and values - * @param {string} [operation=AND] AND or OR - * @return {string} where clause - */ -Dao.prototype.buildWhere = function (fields, operation) { - operation = operation || 'and'; - var whereString = ''; - - for (var i = 0; i < fields.columns.length; i++) { - var column = fields.columns[i]; - if (i) { - whereString += ' ' + operation + ' '; - } - whereString += this.buildWhereWithFieldAndValue(column, fields.getValue(column)); - } - return whereString; -}; - -Dao.prototype.buildWhereArgs = function (values) { - var args = []; - if (Array.isArray(values)) { - for (var i = 0; i < values.length; i++) { - var value = values[i]; - if (value !== undefined && value !== null) { - args.push(value); - } - } - } else if (values.columns) { - for (var i = 0; i < values.columns.length; i++) { - var column = values.columns[i]; - var value = values.getValue(column); - if (value !== undefined && value !== null) { - args.push(value); - } - } - } else { - if(values !== undefined || values !== null) { - args.push(values); - } - } - return args.count ? null : args; -}; - -/** - * Builds a where clause from the field and value with an optional operation. If the value is empty, 'is null' is added to the query for the field - * @param {string} field field name - * @param {Object} [value] optional value to filter on - * @param {string} [operation='='] optional operation - * @return {string} where clause - */ -Dao.prototype.buildWhereWithFieldAndValue = function (field, value, operation) { - operation = operation || '='; - var whereString = '' + field + ' '; - if(value === undefined || value === null){ - whereString += "is null"; - } else { - whereString += operation + ' ?'; - } - return whereString; -}; - -/** - * Query for all rows in the table that match - * @param {string} field field to match - * @param {string} value value to match - * @param {string} [groupBy] group by clause - * @param {string} [having] having clause - * @param {string} [orderBy] order by clause - * @return {Object[]} array of raw database objects - */ -Dao.prototype.queryForAllEq = function(field, value, groupBy, having, orderBy) { - var whereString = this.buildWhereWithFieldAndValue(field, value); - var whereArgs = this.buildWhereArgs(value); - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", undefined, whereString, undefined, groupBy, having, orderBy); - return this.connection.all(query, whereArgs); -}; - -/** - * Count rows in the table optionally filtered by the parameters specified - * @param {module:dao/columnValues~ColumnValues|string} [fields] Either a ColumnValues object or a string specifying a field name - * @param {Object} [value] value to filter on if fields is a string - * @return {Number} count of objects - */ -Dao.prototype.count = function(fields, value) { - if (!fields) { - return this.connection.count(this.gpkgTableName); - } - var where; - var whereArgs; - var query; - if (fields.columns) { - where = this.buildWhere(fields, 'and'); - whereArgs = this.buildWhereArgs(fields); - query = sqliteQueryBuilder.buildCount("'"+this.gpkgTableName+"'", where); - } else { - whereString = this.buildWhereWithFieldAndValue(fields, value); - whereArgs = this.buildWhereArgs(value); - query = sqliteQueryBuilder.buildCount("'"+this.gpkgTableName+"'", whereString); - } - var result = this.connection.get(query, whereArgs); - if (!result) return 0; - return result.count; -} - -/** - * Get the min of the column - * @param {string} column column name - * @param {string} [where] where clause - * @param {Object[]} [whereArgs] where args - * @return {Number} - */ -Dao.prototype.minOfColumn = function (column, where, whereArgs) { - return this.connection.minOfColumn("'"+this.gpkgTableName+"'", column, where, whereArgs); -}; - -/** - * Get the max of the column - * @param {string} column column name - * @param {string} [where] where clause - * @param {Object[]} [whereArgs] where args - * @return {Number} - */ -Dao.prototype.maxOfColumn = function (column, where, whereArgs) { - return this.connection.maxOfColumn("'"+this.gpkgTableName+"'", column, where, whereArgs); -}; - -/** - * Delete the object passed in. Object is deleted by id - * @param {Object} object object to delete - * @return {Number} number of objects deleted - */ -Dao.prototype.delete = function(object) { - if (object.getId) { - return this.deleteById(object.getId()); - } - return this.deleteByMultiId(this.getMultiId(object)); -}; - -/** - * Delete the object specified by the id - * @param {Object} idValue id value - * @return {Number} number of objects deleted - */ -Dao.prototype.deleteById = function(idValue) { - var where = this.buildPkWhere(idValue); - var whereArgs = this.buildPkWhereArgs(idValue); - - return this.connection.delete("'"+this.gpkgTableName+"'", where, whereArgs); -}; - -/** - * Delete the object specified by the ids - * @param {module:dao/columnValues~ColumnValues} idValue id values - * @return {Number} number of objects deleted - */ -Dao.prototype.deleteByMultiId = function(idValues) { - var where = this.buildPkWhere(idValues); - var whereArgs = this.buildPkWhereArgs(idValues); - - return this.connection.delete("'"+this.gpkgTableName+"'", where, whereArgs); -}; - -/** - * Delete objects that match the query - * @param {string} where where clause - * @param {Object[]} whereArgs where arguments - * @return {Number} number of objects deleted - */ -Dao.prototype.deleteWhere = function(where, whereArgs) { - return this.connection.delete("'"+this.gpkgTableName+"'", where, whereArgs); -}; - -/** - * Delete all objects in the table - * @return {Number} number of objects deleted - */ -Dao.prototype.deleteAll = function() { - return this.connection.delete("'"+this.gpkgTableName+"'", '', []); -}; - -/** - * Insert the object into the table - * @param {Object} object object to be inserted - * @return {Number} id of the inserted object - */ -Dao.prototype.create = function(object) { - var sql = sqliteQueryBuilder.buildInsert("'"+this.gpkgTableName+"'", object); - var insertObject = sqliteQueryBuilder.buildUpdateOrInsertObject(object); - return this.connection.insert(sql, insertObject); -}; - -/** - * Update all rows that match the query - * @param {module:dao/columnValues~ColumnValues} values values to insert - * @param {string} where where clause - * @param {Object[]} whereArgs where arguments - * @return {Number} number of objects updated - */ -Dao.prototype.updateWithValues = function (values, where, whereArgs) { - var update = sqliteQueryBuilder.buildUpdate("'"+this.gpkgTableName+"'", values, where, whereArgs); - return this.connection.run(update.sql, update.args); -}; - -/** - * Update the object specified - * @param {Object} object object with updated values - * @return {Number} number of objects updated - */ -Dao.prototype.update = function(object) { - var updateValues = sqliteQueryBuilder.buildUpdateOrInsertObject(object); - var update = sqliteQueryBuilder.buildObjectUpdate("'"+this.gpkgTableName+"'", object); - var multiId = this.getMultiId(object); - if (multiId.length) { - var where = ' where '; - for (var i = 0; i < multiId.length; i++) { - where += '"' + this.idColumns[i] + '" = $' + sqliteQueryBuilder.fixColumnName(this.idColumns[i]); - updateValues[sqliteQueryBuilder.fixColumnName(this.idColumns[i])] = multiId[i]; - } - update += where; - } - return this.connection.run(update, updateValues); -}; - -/** - * Queries for the object by id, and if it exists, updates it, otherwise creates a new object - * @param {Object} object object to update or create - * @return {Number} number of objects modified - */ -Dao.prototype.createOrUpdate = function(object) { - var existing = this.queryForSameId(object); - if (!existing) { - return this.create(object); - } else { - return this.update(object); - } -}; - -/** - * Drops this table - * @return {Number} results of the drop - */ -Dao.prototype.dropTable = function() { - return this.connection.dropTable(this.gpkgTableName); -}; - -Dao.prototype.rename = function(newName) { - var result = this.connection.run('ALTER TABLE ' + '"' + this.gpkgTableName + '" RENAME TO "' + newName + '"'); - this.gpkgTableName = newName; -} - -module.exports = Dao; - -},{"../db/sqliteQueryBuilder":17,"./columnValues":10}],12:[function(require,module,exports){ -/** - * DataColumnConstraints module. - * @module dataColumnConstraints - */ - -var Dao = require('../dao/dao'); - -var util = require('util'); - -/** - * Contains data to specify restrictions on basic data type column values - * @class DataColumnConstraints - */ -var DataColumnConstraints = function() { - - /** - * Case sensitive name of constraint - * @member {string} - */ - this.constraint_name; - - /** - * Lowercase type name of constraint: range | enum | glob - * @member {string} - */ - this.constraint_type; - - /** - * Specified case sensitive value for enum or glob or NULL for range constraint_type - * @member {string} - */ - this.value; - - /** - * Minimum value for 'range' or NULL for 'enum' or 'glob' constraint_type - * @member {Number} - */ - this.min; - - /** - * 0 (false) if min value is exclusive, or 1 (true) if min value is inclusive - * @member {Number} - */ - this.min_is_inclusive; - - /** - * Maximum value for 'range' or NULL for 'enum' or 'glob' constraint_type - * @member {Number} - */ - this.max; - - /** - * 0 (false) if max value is exclusive, or 1 (true) if max value is inclusive - * @member {Number} - */ - this.max_is_inclusive; - - /** - * For ranges and globs, describes the constraing; for enums, describes the enum value. - */ - this.description; - -} - -/** - * Data Column Constraints Data Access Object - * @class - * @param {module:geoPackage~GeoPackage} geoPackage GeoPackage object - * @extends {module:dao/dao~Dao} - */ -var DataColumnConstraintsDao = function(geoPackage) { - Dao.call(this, geoPackage); -} - -util.inherits(DataColumnConstraintsDao, Dao); - -/** - * Creates a new DataColumnConstraints object - * @return {module:dataColumnConstraints~DataColumnConstraints} - */ -DataColumnConstraintsDao.prototype.createObject = function () { - return new DataColumnConstraints(); -}; - -/** - * query by constraint name - * @param {String} constraintName constraint name - * @return {Iterable} - */ -DataColumnConstraintsDao.prototype.queryByConstraintName = function (constraintName) { - return this.queryForEach(DataColumnConstraintsDao.COLUMN_CONSTRAINT_NAME, constraintName); -}; - -/** - * Query by the unique column values - * @param {String} constraintName constraint name - * @param {String} constraintType constraint type - * @param {String} value value - * @return {module:dataColumnConstraints~DataColumnConstraints} - */ -DataColumnConstraintsDao.prototype.queryUnique = function (constraintName, constraintType, value) { - var dataColumnConstraints = new DataColumnConstraints(); - dataColumnConstraints.constraint_name = constraintName; - dataColumnConstraints.constraint_type = constraintType; - dataColumnConstraints.value = value; - - return this.queryForSameId(dataColumnConstraints); -}; - -DataColumnConstraintsDao.TABLE_NAME = "gpkg_data_column_constraints"; -DataColumnConstraintsDao.COLUMN_CONSTRAINT_NAME = "constraint_name"; -DataColumnConstraintsDao.COLUMN_CONSTRAINT_TYPE = "constraint_type"; -DataColumnConstraintsDao.COLUMN_VALUE = "value"; -DataColumnConstraintsDao.COLUMN_MIN = "min"; -DataColumnConstraintsDao.COLUMN_MIN_IS_INCLUSIVE = "min_is_inclusive"; -DataColumnConstraintsDao.COLUMN_MAX = "max"; -DataColumnConstraintsDao.COLUMN_MAX_IS_INCLUSIVE = "max_is_inclusive"; -DataColumnConstraintsDao.COLUMN_DESCRIPTION = "description"; - -DataColumnConstraintsDao.ENUM_TYPE = 'enum'; -DataColumnConstraintsDao.GLOB_TYPE = 'glob'; -DataColumnConstraintsDao.RANGE_TYPE = 'range'; - -DataColumnConstraintsDao.prototype.gpkgTableName = DataColumnConstraintsDao.TABLE_NAME; -DataColumnConstraintsDao.prototype.idColumns = [DataColumnConstraintsDao.COLUMN_CONSTRAINT_NAME, DataColumnConstraintsDao.COLUMN_CONSTRAINT_TYPE, DataColumnConstraintsDao.COLUMN_VALUE]; - -module.exports.DataColumnConstraintsDao = DataColumnConstraintsDao; -module.exports.DataColumnConstraints = DataColumnConstraints; - -},{"../dao/dao":11,"util":343}],13:[function(require,module,exports){ -/** - * DataColumns module. - * @module dataColumns - */ - -var Dao = require('../dao/dao') - , ContentsDao = require('../core/contents').ContentsDao; - -var util = require('util'); - -/** - * Stores minimal application schema identifying, descriptive and MIME type - * information about columns in user vector feature and tile matrix data tables - * that supplements the data available from the SQLite sqlite_master table and - * pragma table_info(table_name) SQL function. The gpkg_data_columns data CAN be - * used to provide more specific column data types and value ranges and - * application specific structural and semantic information to enable more - * informative user menu displays and more effective user decisions on the - * suitability of GeoPackage contents for specific purposes. - * @class DataColumns - */ -var DataColumns = function() { - /** - * the name of the tiles, or feature table - * @member {string} - */ - this.table_name; - - /** - * the name of the table column - * @member {string} - */ - this.column_name; - - /** - * A human-readable identifier (e.g. short name) for the column_name content - * @member {string} - */ - this.name; - - /** - * A human-readable formal title for the column_name content - * @member {string} - */ - this.title; - - /** - * A human-readable description for the table_name contente - * @member {string} - */ - this.description; - - /** - * MIME type of columnName if BLOB type or NULL for other types - * @member {string} - */ - this.mime_type; - - /** - * Case sensitive column value constraint name specified - */ - this.constraint_name; -} - -/** - * Contents object. Provides identifying and descriptive information that an - * application can display to a user in a menu of geospatial data that is - * available for access and/or update. - * @class - * @param {module:geoPackage~GeoPackage} geoPackage GeoPackage object - * @extends {module:dao/dao~Dao} - */ -var DataColumnsDao = function(geoPackage) { - Dao.call(this, geoPackage); -} - -util.inherits(DataColumnsDao, Dao); - -/** - * Creates a new {module:dataColumns~DataColumns} object - * @return {module:dataColumns~DataColumns} - */ -DataColumnsDao.prototype.createObject = function () { - return new DataColumns(); -}; - -/** - * Get the Contents from the Data Columns - * @param {module:dataColumns~DataColumns} dataColumns data columns - * @return {module:core/contents~Contents} contents - */ -DataColumnsDao.prototype.getContents = function (dataColumns) { - var cd = new ContentsDao(this.geoPackage); - return cd.queryForId(dataColumns.table_name); -}; - -/** - * Query by constraint name - * @param {String} constraintName constraint name - * @return {Iterator} iterator of database objects - */ -DataColumnsDao.prototype.queryByConstraintName = function (constraintName) { - return this.queryForEach(DataColumnsDao.COLUMN_CONSTRAINT_NAME, constraintName); -}; - -/** - * Get DataColumn by column name and table name - * @param {String} tableName table name - * @param {String} columnName column name - * @return {module:dataColumns~DataColumns} - */ -DataColumnsDao.prototype.getDataColumns = function (tableName, columnName) { - var exists = this.isTableExists(); - if (!exists) { - return; - } - var where = this.buildWhereWithFieldAndValue(DataColumnsDao.COLUMN_TABLE_NAME, tableName) + - ' and ' + - this.buildWhereWithFieldAndValue(DataColumnsDao.COLUMN_COLUMN_NAME, columnName); - var values = [tableName, columnName]; - var dataColumn; - for (var row of this.queryWhere(where, values)) { - dataColumn = row; - } - return dataColumn; -}; - -DataColumnsDao.TABLE_NAME = "gpkg_data_columns"; -DataColumnsDao.COLUMN_PK1 = "table_name"; -DataColumnsDao.COLUMN_PK2 = "column_name"; -DataColumnsDao.COLUMN_TABLE_NAME = "table_name"; -DataColumnsDao.COLUMN_COLUMN_NAME = "column_name"; -DataColumnsDao.COLUMN_NAME = "name"; -DataColumnsDao.COLUMN_TITLE = "title"; -DataColumnsDao.COLUMN_DESCRIPTION = "description"; -DataColumnsDao.COLUMN_MIME_TYPE = "mime_type"; -DataColumnsDao.COLUMN_CONSTRAINT_NAME = "constraint_name"; - -DataColumnsDao.prototype.gpkgTableName = DataColumnsDao.TABLE_NAME; -DataColumnsDao.prototype.idColumns = [DataColumnsDao.COLUMN_PK1, DataColumnsDao.COLUMN_PK2]; - -module.exports.DataColumnsDao = DataColumnsDao; -module.exports.DataColumns = DataColumns; - -},{"../core/contents":8,"../dao/dao":11,"util":343}],14:[function(require,module,exports){ -/** - * @module db/dataTypes - */ - -/** - * A boolean value representing true or false. - * @type {String} - */ -module.exports.GPKG_DT_BOOLEAN_NAME = "BOOLEAN"; -/** - * 8-bit signed two’s complement integer. - * @type {String} - */ -module.exports.GPKG_DT_TINYINT_NAME = "TINYINT"; -/** - * 16-bit signed two’s complement integer. - * @type {String} - */ -module.exports.GPKG_DT_SMALLINT_NAME = "SMALLINT"; -/** - * 32-bit signed two’s complement integer. - * @type {String} - */ -module.exports.GPKG_DT_MEDIUMINT_NAME = "MEDIUMINT"; -/** - * 64-bit signed two’s complement integer. - * @type {String} - */ -module.exports.GPKG_DT_INT_NAME = "INT"; -/** - * 64-bit signed two’s complement integer. - * @type {String} - */ -module.exports.GPKG_DT_INTEGER_NAME = "INTEGER"; -/** - * 32-bit IEEE floating point number. - * @type {String} - */ -module.exports.GPKG_DT_FLOAT_NAME = "FLOAT"; -/** - * 64-bit IEEE floating point number. - * @type {String} - */ -module.exports.GPKG_DT_DOUBLE_NAME = "DOUBLE"; -/** - * 64-bit IEEE floating point number. - * @type {String} - */ -module.exports.GPKG_DT_REAL_NAME = "REAL"; -/** - * TEXT{(maxchar_count)}: Variable length string encoded in either UTF-8 or UTF-16, determined by PRAGMA encoding; see http://www.sqlite.org/pragma.html#pragma_encoding. - * @type {String} - */ -module.exports.GPKG_DT_TEXT_NAME = "TEXT"; -/** - * BLOB{(max_size)}: Variable length binary data. - * @type {String} - */ -module.exports.GPKG_DT_BLOB_NAME = "BLOB"; -/** - * ISO-8601 date string in the form YYYY-MM-DD encoded in either UTF-8 or UTF-16. - * @type {String} - */ -module.exports.GPKG_DT_DATE_NAME = "DATE"; -/** - * ISO-8601 date/time string in the form YYYY-MM-DDTHH:MM:SS.SSSZ with T separator character and Z suffix for coordinated universal time (UTC) encoded in either UTF-8 or UTF-16. - * @type {String} - */ -module.exports.GPKG_DT_DATETIME_NAME = "DATETIME"; -module.exports.GPKG_DT_GEOMETRY_NAME = "GEOMETRY"; - -/** - * DataType enumeration - * @typedef {object} GPKGDataType - */ -module.exports.GPKGDataType = {}; -module.exports.GPKGDataType[module.exports.GPKG_DT_BOOLEAN_NAME] = 0; -module.exports.GPKGDataType[module.exports.GPKG_DT_TINYINT_NAME] = 1; -module.exports.GPKGDataType[module.exports.GPKG_DT_SMALLINT_NAME] = 2; -module.exports.GPKGDataType[module.exports.GPKG_DT_MEDIUMINT_NAME] = 3; -module.exports.GPKGDataType[module.exports.GPKG_DT_INT_NAME] = 4; -module.exports.GPKGDataType[module.exports.GPKG_DT_INTEGER_NAME] = 5; -module.exports.GPKGDataType[module.exports.GPKG_DT_FLOAT_NAME] = 6; -module.exports.GPKGDataType[module.exports.GPKG_DT_DOUBLE_NAME] = 7; -module.exports.GPKGDataType[module.exports.GPKG_DT_REAL_NAME] = 8; -module.exports.GPKGDataType[module.exports.GPKG_DT_TEXT_NAME] = 9; -module.exports.GPKGDataType[module.exports.GPKG_DT_BLOB_NAME] = 10; -module.exports.GPKGDataType[module.exports.GPKG_DT_DATE_NAME] = 11; -module.exports.GPKGDataType[module.exports.GPKG_DT_DATETIME_NAME] = 12; -module.exports.GPKGDataType[module.exports.GPKG_DT_GEOMETRY_NAME] = 13; - -module.exports.GPKGDataType.GPKG_DT_BOOLEAN = 0; -module.exports.GPKGDataType.GPKG_DT_TINYINT = 1; -module.exports.GPKGDataType.GPKG_DT_SMALLINT = 2; -module.exports.GPKGDataType.GPKG_DT_MEDIUMINT = 3; -module.exports.GPKGDataType.GPKG_DT_INT = 4; -module.exports.GPKGDataType.GPKG_DT_INTEGER = 5; -module.exports.GPKGDataType.GPKG_DT_FLOAT = 6; -module.exports.GPKGDataType.GPKG_DT_DOUBLE = 7; -module.exports.GPKGDataType.GPKG_DT_REAL = 8; -module.exports.GPKGDataType.GPKG_DT_TEXT = 9; -module.exports.GPKGDataType.GPKG_DT_BLOB = 10; -module.exports.GPKGDataType.GPKG_DT_DATE = 11; -module.exports.GPKGDataType.GPKG_DT_DATETIME = 12; -module.exports.GPKGDataType.GPKG_DT_GEOMETRY = 13; - - -/** - * Return the name of the given data type. - * - * @param {module:db/dataTypes~GPKGDataType} dataType the enum to retrieve the name for - * @return {String} the string name of the given data type enum - */ -module.exports.name = function(dataType) { - var name = undefined; - - switch(dataType){ - case module.exports.GPKGDataType.GPKG_DT_BOOLEAN: - name = module.exports.GPKG_DT_BOOLEAN_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_TINYINT: - name = module.exports.GPKG_DT_TINYINT_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_SMALLINT: - name = module.exports.GPKG_DT_SMALLINT_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_MEDIUMINT: - name = module.exports.GPKG_DT_MEDIUMINT_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_INT: - name = module.exports.GPKG_DT_INT_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_INTEGER: - name = module.exports.GPKG_DT_INTEGER_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_FLOAT: - name = module.exports.GPKG_DT_FLOAT_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_DOUBLE: - name = module.exports.GPKG_DT_DOUBLE_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_REAL: - name = module.exports.GPKG_DT_REAL_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_TEXT: - name = module.exports.GPKG_DT_TEXT_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_BLOB: - name = module.exports.GPKG_DT_BLOB_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_DATE: - name = module.exports.GPKG_DT_DATE_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_DATETIME: - name = module.exports.GPKG_DT_DATETIME_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_GEOMETRY: - name = module.exports.GPKG_DT_GEOMETRY_NAME; - break; - } - - return name; -} - -/** - * Return the data type enum value for the given name, ignoring case. - * - * @param {String} name the name of the data type enum - * @return {module:db/dataTypes~GPKGDataType} the enum value - */ -module.exports.fromName = function(name) { - var value = 9; - if (name) { - name = name.toUpperCase(); - value = module.exports.GPKGDataType[name]; - } - return value; -} - -},{}],15:[function(require,module,exports){ -(function (process,Buffer){ -/** - * Connection to the SQLite file - * @module db/geoPackageConnection - */ - -var GeoPackageConstants = require('../geoPackageConstants'); - -if (typeof(process) !== 'undefined' && process.version && !process.env.FORCE_SQLJS) { - console.log('Better SQLite'); -} else { - console.log('SQL.js'); -} - -/** - * Creates a connection to the SQLite file and when connected, returns a promise that resolves the connection. - * This will create a {module:db/sqliteAdapter~Adapter} if running in node and the FORCE_SQLJS environment variable is not set. - * This will create a {module:db/sqljsAdapter~Adapter} if running in the browser or the FORCE_SQLJS environment variable is set - * @see {module:db/sqliteAdapter~Adapter} - * @see {module:db/sqljsAdapter~Adapter} - * @class - * @param {string} filePath path to the sqlite file - * @return {Promise} - * @todo change this constructor to return an actual `GeoPackageConnection` instance instead of a `Promise` - */ -var GeoPackageConnection = function(filePath) { - if (typeof(process) !== 'undefined' && process.version && !process.env.FORCE_SQLJS) { - this.adapterCreator = require('./sqliteAdapter'); - } else { - this.adapterCreator = require('./sqljsAdapter'); - } - - var promise = new Promise(function(resolve, reject) { - this.adapterCreator.createAdapter(filePath) - .then(function(adapter) { - this.adapter = adapter; - resolve(this); - }.bind(this)) - .catch(function(error) { - reject(error); - }); - }.bind(this)); - - return promise; -} - -/** - * Close the database. - */ -GeoPackageConnection.prototype.close = function() { - this.adapter.close(); -} - -/** - * exports the GeoPackage as a file - * @param {Function} callback called with an err and the buffer containing the contents of the file - */ -GeoPackageConnection.prototype.export = function(callback) { - this.adapter.export(callback); -} - -/** - * Gets the raw connection to the database - * @return {Object} - */ -GeoPackageConnection.prototype.getDBConnection = function () { - return this.adapter.db; -}; - -/** - * Connects to a GeoPackage database - * @param {Object} db database to connect to - * @return {(module:db/sqliteAdapter~Adapter|module:db/sqljsAdapter~Adapter)} - */ -GeoPackageConnection.prototype.setDBConnection = function (db) { - return this.adapter = this.adapterCreator.createAdapterFromDb(db); -}; - -/** -* Registers the given function so that it can be used by SQL statements -* @param {string} name name of function to register -* @param {Function} functionDefinition function to register -* @return {(module:db/sqliteAdapter~Adapter|module:db/sqljsAdapter~Adapter)} the adapter in use -*/ -GeoPackageConnection.prototype.registerFunction = function(name, functionDefinition) { - this.adapter.registerFunction(name, functionDefinition); - return this.adapter; -} - -/** - * Gets the first result from the query - * @param {string} sql sql query to run - * @param {Array|Object} [params] array of substitution parameters - * @return {object} - */ -GeoPackageConnection.prototype.get = function (sql, params) { - return this.adapter.get(sql, params); -}; - -/** - * Checks if table exists in database - * @param {String} tableName - * @returns {Boolean} - */ -GeoPackageConnection.prototype.isTableExists = function (tableName) { - return this.adapter.isTableExists(tableName); -}; - -/** - * Run the given SQL and return the results. - * @param {string} sql sql to run - * @param {Array|Object} [params] array of substitution parameters - * @return {{changes: number, lastInsertROWID: number}} object: `{ "changes": number, "lastInsertROWID": number }` - * * `changes`: number of rows the statement changed - * * `lastInsertROWID`: ID of the last inserted row - */ -GeoPackageConnection.prototype.run = function (sql, params) { - return this.adapter.run(sql, params) -}; - -/** - * Executes the query and returns all results in an array - * @param {string} sql sql to run - * @param {Array|Object} [params] substitution parameters - * @return {Object[]} - */ -GeoPackageConnection.prototype.all = function (sql, params) { - return this.adapter.all(sql, params); -}; - -/** - * Executes the query and returns an Iterable object of results - * @param {string} sql sql to run - * @param {Array|Object} [params] substitution parameters - * @return {Iterable} - */ -GeoPackageConnection.prototype.each = function (sql, params) { - return this.adapter.each(sql, params); -}; - -/** - * Gets the minimum value from the column - * @param {string} table table to query - * @param {string} column column to get the min value from - * @param {string} [where] where clause - * @param {Array|Object} [whereArgs] substitution parameters - * @return {Object} - */ -GeoPackageConnection.prototype.minOfColumn = function(table, column, where, whereArgs) { - var minStatement = 'select min('+column+') as min from ' + table; - if(where) { - minStatement += ' '; - if (where.indexOf('where')) { - where = 'where ' + where; - } - minStatement += where; - } - return this.adapter.get(minStatement, whereArgs).min; -}; - -/** - * Gets the maximum value from the column - * @param {string} table table to query - * @param {string} column column to get the max value from - * @param {string} [where] where clause - * @param {Array|Object} [whereArgs] substitution parameters - * @return {Object} - */ -GeoPackageConnection.prototype.maxOfColumn = function(table, column, where, whereArgs, callback) { - var maxStatement = 'select max('+column+') as max from ' + table; - if(where) { - maxStatement += ' '; - if (where.indexOf('where')) { - where = 'where ' + where; - } - maxStatement += where; - } - return this.adapter.get(maxStatement, whereArgs).max; -}; - -/** - * Return the count of objects in the table - * @param {string} table table name - * @param {string} [where] where clause - * @param {Array|Object} [whereArgs] substitution parameters - * @return {Number} - */ -GeoPackageConnection.prototype.count = function(table, where, whereArgs) { - return this.adapter.count(table, where, whereArgs); -}; - -/** - * Executes an insert statement and returns the last id inserted - * @param {string} sql sql to insert - * @param {Array|Object} params substitution parameters - * @return {Object} last row id inserted - */ -GeoPackageConnection.prototype.insert = function (sql, params) { - return this.adapter.insert(sql, params); -}; - -/** - * Delete from the table - * @param {string} tableName table name to delete from - * @param {string} [where] where clause - * @param {Array|Object} [whereArgs] substitution parameters - * @return {Number} number of rows deleted - */ -GeoPackageConnection.prototype.delete = function(tableName, where, whereArgs) { - var deleteStatement = 'DELETE FROM ' + tableName + ''; - - if (where) { - deleteStatement += ' WHERE ' + where; - } - - return this.adapter.delete(deleteStatement, whereArgs); -}; - -/** - * Drops the table specified - * @param {string} tableName table to drop - * @return {Boolean} results of table drop - */ -GeoPackageConnection.prototype.dropTable = function(tableName) { - return this.adapter.dropTable(tableName); -}; - -/** - * Gets information about the table specified. If data is returned, the table exists - * @param {string} tableName table to check - * @return {Object} - */ -GeoPackageConnection.prototype.tableExists = function(tableName) { - return this.adapter.get('SELECT name FROM sqlite_master WHERE type="table" AND name=?', [tableName]); -}; - -/** - * Checks if a table and column exist - * @param {string} tableName table to check - * @param {string} columnName column to check - * @return {Boolean} - */ -GeoPackageConnection.prototype.columnAndTableExists = function(tableName, columnName) { - var columns = this.adapter.all('PRAGMA table_info(\''+tableName+'\')'); - for (var i = 0; i < columns.length; i++) { - if (columns[i].name === columnName) { - return true; - } - } - return false; -} - -/** - * Sets the APPLICATION_ID and user_version for GeoPackage - */ -GeoPackageConnection.prototype.setApplicationId = function() { - var buff = Buffer.from(GeoPackageConstants.APPLICATION_ID); - var applicationId = buff.readUInt32BE(0); - this.adapter.run('PRAGMA application_id = ' + applicationId); - this.adapter.run('PRAGMA user_version = ' + GeoPackageConstants.USER_VERSION); -} - -/** - * gets the application_id from the sqlite file - * @return {Object} - */ -GeoPackageConnection.prototype.getApplicationId = function() { - return this.adapter.get('PRAGMA application_id').application_id; -} - -module.exports = GeoPackageConnection; - -/** - * Convenience method - * @see {module:db/geoPackageConnection~GeoPackageConnection} - * @see {module:db/sqliteAdapter~Adapter} - * @see {module:db/sqljsAdapter~Adapter} - * @param {string|Buffer} filePath string path to an existing file or a path to where a new file will be created or a Buffer containing the contents of the file, if undefined, an in memory database is created - * @return {Promise} that resolves - */ -GeoPackageConnection.connect = function(filePath) { - return new GeoPackageConnection(filePath); -} - -/** - * Convenience method - * @param {Object} db open database to connect to - * @return {Promise} - */ -GeoPackageConnection.connectWithDatabase = function(db) { - return new GeoPackageConnection(undefined) - .then(function(connection) { - connection.setDBConnection(db); - }); -} - -}).call(this,require('_process'),require("buffer").Buffer) -},{"../geoPackageConstants":71,"./sqliteAdapter":16,"./sqljsAdapter":18,"_process":284,"buffer":182}],16:[function(require,module,exports){ -/** - * This adapter uses better-sqlite3 to execute queries against the GeoPackage database - * @module db/sqliteAdapter - * @see {@link https://github.com/JoshuaWise/better-sqlite3|better-sqlite3} - */ - -var fs = require('fs') - , path = require('path') - , http = require('http') - , Buffer = require('buffer') - , os = require('os'); - -/** - * Returns a Promise which, when resolved, returns a {module:db/sqliteAdapter~Adapter} which has connected to the GeoPackage database file - * @param {string|Buffer} [filePath] string path to an existing file or a path to where a new file will be created or a Buffer containing the contents of the file, if undefined, an in memory database is created - * @return {Promise} - */ -module.exports.createAdapter = function(filePath) { - var promise = new Promise(function(resolve, reject) { - var Database = require('better-sqlite3'); - try { - var db; - if (filePath && typeof filePath === 'string') { - if (filePath.indexOf('http') === 0) { - http.get(filePath, function(response) { - if (response.statusCode !== 200) { - return reject(new Error('Unable to reach url: ' + filePath)); - } - var tmpPath = path.join(os.tmpdir(), Date.now() + '.gpkg'); - var writeStream = fs.createWriteStream(tmpPath); - response.pipe(writeStream); - writeStream.on('close', function() { - try { - db = new Database(tmpPath); - // verify that this is an actual database - var applicationId = db.pragma('application_id'); - db.pragma('journal_mode = WAL'); - var adapter = new Adapter(db); - adapter.filePath = tmpPath; - resolve(adapter); - } catch (err) { - console.log('error', err); - return reject(err); - } - }); - }); - } else { - db = new Database(filePath); - var adapter = new Adapter(db); - adapter.filePath = filePath; - resolve(adapter); - } - } else if (filePath) { - // write this byte array to a file then open it - var byteArray = filePath; - var tmpPath = path.join(os.tmpdir(), Date.now() + '.gpkg'); - return fs.writeFile(tmpPath, byteArray, function(err) { - db = new Database(tmpPath); - // verify that this is an actual database - try { - var applicationId = db.pragma('application_id'); - db.pragma('journal_mode = WAL'); - } catch (err) { - console.log('error', err); - return reject(err); - } - var adapter = new Adapter(db); - adapter.filePath = tmpPath; - resolve(adapter); - }); - } else { - console.log('create in memory'); - db = new Database("memory", { - memory: !filePath - }); - var adapter = new Adapter(db); - adapter.filePath = filePath; - resolve(adapter); - } - - } catch (err) { - console.log('Error opening database', err); - return reject(err); - } - }); - return promise; -} -/** - * Creates an adapter from an already established better-sqlite3 database connection - * @param {better-sqlite3.Database} db better-sqlite3 database connection - * @return {module:db/sqliteAdapter~Adapter} - */ -module.exports.createAdapterFromDb = function(db) { - return new Adapter(db); -} - -/** - * Class which adapts generic GeoPackage queries to better-sqlite3 queries - * @class Adapter - * @param {better-sqlite3.Database} db better-sqlite3 database connection - */ -function Adapter(db) { - this.db = db; -} - -/** - * Closes the connection to the GeoPackage - */ -Adapter.prototype.close = function() { - this.db.close(); -} - -/** - * Get the connection to the database file - * @return {better-sqlite3.Database} - */ -Adapter.prototype.getDBConnection = function () { - return this.db; -}; - -/** - * Returns a Buffer containing the contents of the database as a file - * @param {Function} callback called when export is complete - */ -Adapter.prototype.export = function(callback) { - fs.readFile(this.filePath, callback); -} - -/** - * Registers the given function so that it can be used by SQL statements - * @see {@link https://github.com/JoshuaWise/better-sqlite3/wiki/API#registeroptions-function---this|better-sqlite3 register} - * @param {string} name name of function to register - * @param {Function} functionDefinition function to register - * @return {module:db/sqliteAdapter~Adapter} this - */ -Adapter.prototype.registerFunction = function(name, functionDefinition) { - this.db.function(name, functionDefinition); - return this; -} - -/** - * Gets one row of results from the statement - * @see {@link https://github.com/JoshuaWise/better-sqlite3/wiki/API#getbindparameters---row|better-sqlite3 get} - * @param {string} sql statement to run - * @param {Array|Object} [params] bind parameters - * @return {Object} - */ -Adapter.prototype.get = function (sql, params) { - var statement = this.db.prepare(sql); - if (params) { - return statement.get(params); - } else { - return statement.get(); - } -}; - -/** - * Determines if a tableName exists in the database - * @param {String} tableName - * @returns {Boolean} - */ -Adapter.prototype.isTableExists = function (tableName) { - var statement = this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name=:name"); - var result; - result = statement.get({name: tableName}); - return !!result; -}; - -/** - * Gets all results from the statement in an array - * @see {@link https://github.com/JoshuaWise/better-sqlite3/wiki/API#allbindparameters---array-of-rows|better-sqlite3 all} - * @param {string} sql statement to run - * @param {Array|Object} [params] bind parameters - * @return {Object[]} - */ -Adapter.prototype.all = function (sql, params) { - var statement = this.db.prepare(sql); - if (params) { - return statement.all(params); - } else { - return statement.all(); - } -}; - -/** - * Returns an `Iterable` with results from the query - * @see {@link https://github.com/JoshuaWise/better-sqlite3/wiki/API#iteratebindparameters---iterator|better-sqlite3 iterate} - * @param {string} sql statement to run - * @param {Object|Array} [params] bind parameters - * @return {Iterable} - */ -Adapter.prototype.each = function (sql, params) { - var statement = this.db.prepare(sql); - if (params) { - return statement.iterate(params); - } else { - return statement.iterate(); - } -}; - -/** - * Run the given statement, returning information about what changed. - * - * @see {@link https://github.com/JoshuaWise/better-sqlite3/wiki/API#runbindparameters---object|better-sqlite3} - * @param {string} sql statement to run - * @param {Object|Array} [params] bind parameters - * @return {{changes: number, lastInsertROWID: number}} object: `{ "changes": number, "lastInsertROWID": number }` - * * `changes`: number of rows the statement changed - * * `lastInsertROWID`: ID of the last inserted row - */ -Adapter.prototype.run = function(sql, params) { - var statement = this.db.prepare(sql); - if (params) { - return statement.run(params); - } else { - return statement.run(); - } -} - -/** - * Runs the specified insert statement and returns the last inserted id or undefined if no insert happened - * @param {string} sql statement to run - * @param {Object|Array} [params] bind parameters - * @return {Number} last inserted row id - */ -Adapter.prototype.insert = function(sql, params) { - var statement = this.db.prepare(sql); - return statement.run(params).lastInsertRowid; -}; - -/** - * Runs the specified delete statement and returns the number of deleted rows - * @param {string} sql statement to run - * @param {Object|Array} params bind parameters - * @return {number} deleted rows - */ -Adapter.prototype.delete = function(sql, params) { - var statement = this.db.prepare(sql); - return statement.run(params).changes; -}; - -/** - * Drops the table - * @param {string} table table name - * @return {Boolean} indicates if the table was dropped - */ -Adapter.prototype.dropTable = function(table) { - try { - var statement = this.db.prepare('DROP TABLE IF EXISTS "' + table + '"'); - var result = statement.run(); - var vacuum = this.db.prepare('VACUUM'); - vacuum.run(); - return result.changes == 0; - } catch (e) { - console.log('Drop Table Error', e); - return false; - } -}; - -/** - * Counts rows that match the query - * @param {string} tableName table name from which to count - * @param {string} [where] where clause - * @param {Object|Array} [whereArgs] where args - * @return {Number} count - */ -Adapter.prototype.count = function (tableName, where, whereArgs) { - var sql = 'SELECT COUNT(*) as count FROM "' + tableName + '"'; - if (where) { - sql += ' where ' + where; - } - var statement = this.db.prepare(sql); - if (whereArgs) { - return statement.get(whereArgs).count; - } else { - return statement.get().count; - } -}; - -},{"better-sqlite3":undefined,"buffer":182,"fs":177,"http":329,"os":270,"path":276}],17:[function(require,module,exports){ -/** - * SQLite query builder module. - * @module db/sqliteQueryBuilder - */ - -/** - * Utility class to build sql queries - * @class - */ -function SqliteQueryBuilder() {} - -module.exports = SqliteQueryBuilder; - -/** - * Replaces all whitespace in a column name with underscores - * @param {string} columnName column name to fix - * @return {string} - */ -SqliteQueryBuilder.fixColumnName = function(columnName) { - return columnName.replace(/\W+/g, '_'); -} - -/** - * Builds a query - * @param {Boolean} distinct whether query should be distinct or not - * @param {string} tables table names to query, added to the query from clause - * @param {string[]} [columns=*] columns to query for - * @param {string} [where] where clause - * @param {string} [join] join clause - * @param {string} [groupBy] group by clause - * @param {string} [having] having clause - * @param {string} [orderBy] order by clause - * @param {Number} [limit] limit - * @param {Number} [offset] offset - * @return {string} - */ -SqliteQueryBuilder.buildQuery = function(distinct, tables, columns, where, join, groupBy, having, orderBy, limit, offset) { - - var query = ''; - if (isEmpty(groupBy) && !isEmpty(having)) { - throw new Error('Illegal Arguments: having clauses require a groupBy clause'); - } - - query += 'select '; - if (distinct) { - query += 'distinct '; - } - if(columns && columns.length) { - query = appendColumnsToString(columns, query); - } else { - query += '* '; - } - - query += 'from ' + tables; - if (join) { - query += ' ' + join; - } - query = appendClauseToString(query, ' where ', where); - query = appendClauseToString(query, ' group by ', groupBy); - query = appendClauseToString(query, ' having ', having); - query = appendClauseToString(query, ' order by ', orderBy); - query = appendClauseToString(query, ' limit ', limit); - query = appendClauseToString(query, ' offset ', offset); - - return query; -} - -/** - * Builds a count statement - * @param {string} tables table names to query for - * @param {string} [where] where clause - * @return {string} count statement - */ -SqliteQueryBuilder.buildCount = function(tables, where) { - var query = 'select count(*) as count from ' + tables; - query = appendClauseToString(query, ' where ', where); - return query; -} - -/** - * Builds an insert statement using the properties of the object - * @param {string} table table to insert into - * @param {Object} object object to insert - * @return {string} insert statement - */ -SqliteQueryBuilder.buildInsert = function(table, object) { - if (object.getColumnNames) { - return SqliteQueryBuilder.buildInsertFromColumnNames(table, object); - } - var insert = 'insert into ' + table + ' ('; - var keys = ''; - var values = ''; - var first = true; - for (var key in object) { - if (object.hasOwnProperty(key)) { - if (!first) { - keys += ','; - values += ','; - } - first = false; - keys += key; - values += '$' + SqliteQueryBuilder.fixColumnName(key); - } - } - - insert += keys + ') values (' + values + ')'; - return insert; -} - -/** - * Builds an insert statement from the object.getColumnNames method - * @param {string} table table to insert into - * @param {Object} object object with a getColumnNames method - * @return {string} insert statement - */ -SqliteQueryBuilder.buildInsertFromColumnNames = function(table, object) { - var insert = 'insert into ' + table + ' ('; - var keys = ''; - var values = ''; - var first = true; - var columnNames = object.getColumnNames(); - for (var i = 0; i < columnNames.length; i++) { - var key = columnNames[i]; - if (!first) { - keys += ','; - values += ','; - } - first = false; - keys += '"' + key + '"'; - values += '$' + SqliteQueryBuilder.fixColumnName(key); - } - - insert += keys + ') values (' + values + ')'; - return insert; -} - -/** - * Builds an update or insert object to bind to a statement - * @param {Object} object object to create bind parameters from - * @return {Object} bind parameters - */ -SqliteQueryBuilder.buildUpdateOrInsertObject = function(object) { - var insertOrUpdate = {}; - if (object.getColumnNames) { - var columnNames = object.getColumnNames(); - for (var i = 0; i < columnNames.length; i++) { - insertOrUpdate[SqliteQueryBuilder.fixColumnName(columnNames[i])] = object.toDatabaseValue(columnNames[i]); - } - } else { - for (var key in object) { - if (object.hasOwnProperty(key)) { - if (object.toDatabaseValue) { - insertOrUpdate[SqliteQueryBuilder.fixColumnName(key)] = object.toDatabaseValue(key); - } else { - if (typeof object[key] == 'boolean') { - insertOrUpdate[SqliteQueryBuilder.fixColumnName(key)] = object[key] ? 1 : 0; - } else { - insertOrUpdate[SqliteQueryBuilder.fixColumnName(key)] = object[key]; - } - } - } - } - } - return insertOrUpdate; -} - -/** - * Builds an update statement - * @param {string} table table to update - * @param {Object} values object with values to update - * @param {string} [where] where clause - * @param {Array|Ojbect} [whereArgs] where bind parameters - * @return {Object} object with a sql property containing the update statement and an args property with bind arguments - */ -SqliteQueryBuilder.buildUpdate = function(table, values, where, whereArgs) { - var args = []; - var update = 'update ' + table + ' set '; - var first = true; - for (var columnName in values) { - if (!first) { - update += ', '; - } - first = false; - update += '"'+ columnName + '"'; - args.push(values[columnName]); - update += '=?'; - } - if (whereArgs) { - for (var i = 0; i < whereArgs.length; i++) { - args.push(whereArgs[i]); - } - } - if (where) { - update += ' where '; - update += where; - } - return { - sql: update, - args: args - }; -} - -/** - * Builds an update from an object - * @param {string} table table name to update - * @param {Object} object object with values to update - * @return {string} update statement - */ -SqliteQueryBuilder.buildObjectUpdate = function(table, object) { - var update = 'update ' + table + ' set '; - var first = true; - if (object.getColumnNames) { - var columnNames = object.getColumnNames(); - - for (var i = 0; i < columnNames.length; i++) { - var key = columnNames[i]; - if (!first) { - update += ', '; - } - first = false; - update += '"' + key + '"='; - update += '$' + SqliteQueryBuilder.fixColumnName(key); - } - } else { - for (var key in object) { - if (!first) { - update += ', '; - } - first = false; - - if (object.hasOwnProperty(key)) { - update += '"' + key + '"='; - update += '$' + SqliteQueryBuilder.fixColumnName(key); - } - } - } - - return update; -} - -function appendClauseToString(string, name, clause) { - if (clause) { - string += name + clause; - } - return string; -} - -function appendColumnsToString(columns, string) { - if (!columns || columns.length == 0) return string; - string += columnToAppend(columns[0]); - for (var i = 1; i < columns.length; i++) { - string += ', ' + columnToAppend(columns[i]); - } - string += ' '; - return string; -} - -function columnToAppend(column) { - return column.indexOf('*') != -1 ? column : '"' + column + '"'; -} - -function isEmpty(string) { - return !string || string.length === 0; -} - -},{}],18:[function(require,module,exports){ -(function (process,Buffer){ -/** - * This adapter uses sql.js to execute queries against the GeoPackage database - * @module db/sqljsAdapter - * @see {@link http://kripken.github.io/sql.js/documentation/|sqljs} - */ - -var sqljs = require('sql.js/dist/sql-asm-memory-growth.js'); -// var sqljs = require('sql.js/js/sql.js'); - -/** - * Returns a Promise which, when resolved, returns a {module:db/sqljsAdapter~Adapter} which has connected to the GeoPackage database file - * @param {string|Buffer} [filePath] string path to an existing file or a path to where a new file will be created or a url from which to download a GeoPackage or a Uint8Array containing the contents of the file, if undefined, an in memory database is created - * @return {Promise} - */ -module.exports.createAdapter = function(filePath) { - var promise = new Promise(function(resolve, reject) { - sqljs().then(SQL => { - if (filePath && typeof filePath === 'string') { - if (typeof (process) !== 'undefined' && process.version) { - var fs = require('fs'); - if (filePath.indexOf('http') === 0) { - var http = require('http'); - http.get(filePath, function(response) { - if (response.statusCode !== 200) { - return reject(new Error('Unable to reach url: ' + filePath)); - } - var body = []; - response.on('data', chunk => body.push(chunk)); - response.on('end', function() { - var t = new Uint8Array(Buffer.concat(body)); - var db = new SQL.Database(t); - var adapter = new Adapter(db); - resolve(adapter); - }); - }); - } else { - try { - var stats = fs.statSync(filePath); - } catch (e) { - var db = new SQL.Database(); - var adapter = new Adapter(db); - return resolve(adapter); - } - var filebuffer = fs.readFileSync(filePath); - var t = new Uint8Array(filebuffer); - var db = new SQL.Database(t); - // console.log('setting wal mode'); - // var walMode = db.exec('PRAGMA journal_mode=DELETE'); - // console.log('walMode', walMode); - var adapter = new Adapter(db); - return resolve(adapter); - } - } else { - var xhr = new XMLHttpRequest(); - xhr.open('GET', filePath, true); - xhr.responseType = 'arraybuffer'; - - xhr.onload = function (e) { - if (xhr.status !== 200) { - return reject(new Error('Unable to reach url: ' + filePath)); - } - var uInt8Array = new Uint8Array(this.response); - var db = new SQL.Database(uInt8Array); - var adapter = new Adapter(db); - return resolve(adapter); - }; - xhr.onerror = function (e) { - return reject(new Error('Error reaching url: ' + filePath)); - }; - xhr.send(); - } - } else if (filePath) { - var byteArray = filePath; - var db = new SQL.Database(byteArray); - var adapter = new Adapter(db); - return resolve(adapter); - } else { - var db = new SQL.Database(); - var adapter = new Adapter(db); - return resolve(adapter); - } - }); - }); - - return promise; -} - -/** - * Creates an adapter from an already established better-sqlite3 database connection - * @param {sqljs.Database} db sqljs database connection - * @return {module:db/sqljsAdapter~Adapter} - */ -module.exports.createAdapterFromDb = function(db) { - return new Adapter(db); -} - -/** - * Class which adapts generic GeoPackage queries to sqljs queries - * @class Adapter - * @param {sqljs.Database} db sqljs database connection - */ -function Adapter(db) { - this.db = db; -} - -/** - * Closes the connection to the GeoPackage - */ -Adapter.prototype.close = function() { - this.db.close(); -} - -/** - * Get the connection to the database file - * @return {sqljs.Database} - */ -Adapter.prototype.getDBConnection = function () { - return this.db; -}; - -/** - * Returns a Uint8Array containing the contents of the database as a file - * @param {Function} callback called when export is complete - */ -Adapter.prototype.export = function(callback) { - callback(null, this.db.export()); -} - -/** - * Registers the given function so that it can be used by SQL statements - * @see {@link http://kripken.github.io/sql.js/documentation/#http://kripken.github.io/sql.js/documentation/class/Database.html#create_function-dynamic|sqljs create_function} - * @param {string} name name of function to register - * @param {Function} functionDefinition function to register - * @return {module:db/sqljsAdapter~Adapter} this - */ -Adapter.prototype.registerFunction = function(name, functionDefinition) { - this.db.create_function(name, functionDefinition); - return this; -} - -/** - * Gets one row of results from the statement - * @see {@link http://kripken.github.io/sql.js/documentation/#http://kripken.github.io/sql.js/documentation/class/Statement.html#get-dynamic|sqljs get} - * @see {@link http://kripken.github.io/sql.js/documentation/#http://kripken.github.io/sql.js/documentation/class/Statement.html#getAsObject-dynamic|sqljs getAsObject} - * @param {string} sql statement to run - * @param {Array|Object} [params] substitution parameters - * @return {Object} - */ -Adapter.prototype.get = function (sql, params) { - params = params || []; - var statement = this.db.prepare(sql); - statement.bind(params); - var hasResult = statement.step(); - var row; - - if (hasResult) { - row = statement.getAsObject(); - } - - statement.free(); - return row; -}; - -/** - * Determines if a tableName exists in the database - * @param {String} tableName - * @returns {Boolean} - */ -Adapter.prototype.isTableExists = function (tableName) { - var statement = this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name=:name"); - statement.bind([tableName]); - var hasResult = statement.step(); - var row; - if (hasResult) { - row = statement.getAsObject(); - } - statement.free(); - return !!row; -}; - -/** - * Gets all results from the statement in an array - * @param {string} sql statement to run - * @param {Array|Object} [params] bind parameters - * @return {Object[]} - */ -Adapter.prototype.all = function (sql, params) { - var rows = []; - var iterator = this.each(sql, params); - for (var row of iterator) { - rows.push(row); - } - return rows; -}; - -/** - * Returns an Iterable with results from the query - * @param {string} sql statement to run - * @param {Object|Array} params bind parameters - * @return {Iterable} - */ -Adapter.prototype.each = function (sql, params) { - var statement = this.db.prepare(sql); - statement.bind(params); - - return { - [Symbol.iterator]() { - return this; - }, - next: function() { - if (statement.step()) { - return { - value: statement.getAsObject(), - done: false - }; - } else { - statement.free(); - return { - done: true - } - } - } - } -}; - -/** - * Runs the statement specified, returning information about what changed - * @see {@link http://kripken.github.io/sql.js/documentation/#http://kripken.github.io/sql.js/documentation/class/Statement.html#run-dynamic|sqljs run} - * @param {string} sql statement to run - * @param {Object|Array} [params] bind parameters - * @return {Object} object containing a changes property indicating the number of rows changed and a lastInsertROWID indicating the last inserted row - */ -Adapter.prototype.run = function(sql, params) { - if (params) { - for (var key in params) { - params['$' + key] = params[key]; - } - } - this.db.run(sql, params); - var lastId = this.db.exec('select last_insert_rowid();'); - var lastInsertedId; - if (lastId) { - lastInsertedId = lastId[0].values[0][0]; - } - return { - lastInsertROWID: lastInsertedId, - changes: this.db.getRowsModified() - }; -}; - -/** - * Runs the specified insert statement and returns the last inserted id or undefined if no insert happened - * @param {string} sql statement to run - * @param {Object|Array} [params] bind parameters - * @return {Number} last inserted row id - */ -Adapter.prototype.insert = function(sql, params) { - if (params) { - for (var key in params) { - params['$' + key] = params[key]; - } - } - var statement = this.db.prepare(sql, params); - statement.step(); - statement.free(); - var lastId = this.db.exec('select last_insert_rowid();'); - if (lastId) { - return lastId[0].values[0][0]; - } else { - return; - } -}; - -/** - * Runs the specified delete statement and returns the number of deleted rows - * @param {string} sql statement to run - * @param {Object|Array} [params] bind parameters - * @return {number} deleted rows - */ -Adapter.prototype.delete = function(sql, params) { - var rowsModified = 0; - var statement = this.db.prepare(sql, params); - statement.step(); - rowsModified = this.db.getRowsModified(); - statement.free(); - return rowsModified; -}; - -/** - * Drops the table - * @param {string} table table name - * @return {Boolean} indicates if the table was dropped - */ -Adapter.prototype.dropTable = function(table) { - var response = this.db.exec('DROP TABLE IF EXISTS "' + table + '"'); - var vacuum = this.db.exec('VACUUM'); - return !!response; -}; - -/** - * Counts rows that match the query - * @param {string} tableName table name from which to count - * @param {string} [where] where clause - * @param {Object|Array} [whereArgs] where args - * @return {Number} count - */ -Adapter.prototype.count = function (tableName, where, whereArgs) { - var sql = 'SELECT COUNT(*) as count FROM "' + tableName + '"'; - if (where) { - sql += ' where ' + where; - } - return this.get(sql, whereArgs).count; -}; - -}).call(this,require('_process'),require("buffer").Buffer) -},{"_process":284,"buffer":182,"fs":177,"http":329,"sql.js/dist/sql-asm-memory-growth.js":327}],19:[function(require,module,exports){ -/** - * Creates tables necessary for GeoPackages - * @module db/tableCreator - */ - -const SpatialReferenceSystemDao = require('../core/srs').SpatialReferenceSystemDao; -const DataTypes = require('./dataTypes'); - -/** - * `TableCreator` provides methods for creating the various standard tables in - * a GeoPackage database. - * - * @class - * @param {module:geoPackage~GeoPackage} geopackage GeoPackage object - */ -var TableCreator = function(geopackage) { - this.geopackage = geopackage; - this.connection = geopackage.getDatabase(); -} - -module.exports = TableCreator; - -/** - * Creates all required tables and Spatial Reference Systems, in addition to EPSG:3857 - * @return {Promise} - */ -TableCreator.prototype.createRequired = function () { - var dao = new SpatialReferenceSystemDao(this.geopackage); - return Promise.all([this.createSpatialReferenceSystem(), this.createContents()]) - .then(function() { - // Create the required Spatial Reference Systems (spec Requirement 11) - dao.createUndefinedGeographic(); - dao.createWgs84(); - dao.createUndefinedCartesian(); - // not required but very common - dao.createWebMercator(); - return true; - }); -}; - -/** - * Creates the spatial reference system tables - * @return {Promise} - */ -TableCreator.prototype.createSpatialReferenceSystem = function() { - return this.createTable('spatial_reference_system'); -} - -/** - * Creates the contents tables - * @return {Promise} - */ -TableCreator.prototype.createContents = function() { - return this.createTable('contents'); -} - -/** - * Creates the geometry columns tables - * @return {Promise} - */ -TableCreator.prototype.createGeometryColumns = function() { - return this.createTable('geometry_columns'); -} - -/** - * Creates the tile matrix set tables - * @return {Promise} - */ -TableCreator.prototype.createTileMatrixSet = function() { - return this.createTable('tile_matrix_set'); -} - -/** - * Creates the tile matrix tables - * @return {Promise} - */ -TableCreator.prototype.createTileMatrix = function() { - return this.createTable('tile_matrix'); -} - -/** - * Creates the data columns tables - * @return {Promise} - */ -TableCreator.prototype.createDataColumns = function() { - return this.createTable('data_columns'); -} - -/** - * Creates the data column constraints tables - * @return {Promise} - */ -TableCreator.prototype.createDataColumnConstraints = function() { - return this.createTable('data_column_constraints'); -} - -/** - * Creates the metadata tables - * @return {Promise} - */ -TableCreator.prototype.createMetadata = function() { - return this.createTable('metadata'); -} - -/** - * Creates the metadata reference tables - * @return {Promise} - */ -TableCreator.prototype.createMetadataReference = function() { - return this.createTable('metadata_reference'); -} - -/** - * Creates the extensions tables - * @return {Promise} - */ -TableCreator.prototype.createExtensions = function() { - return this.createTable('extensions'); -} - -/** - * Creates the table index tables - * @return {Promise} - */ -TableCreator.prototype.createTableIndex = function() { - return this.createTable('table_index'); -} - -/** - * Creates the geometry index tables - * @return {Promise} - */ -TableCreator.prototype.createGeometryIndex = function() { - return this.createTable('geometry_index'); -} - -/** - * Creates the feature tile link tables - * @return {Promise} - */ -TableCreator.prototype.createFeatureTileLink = function() { - return this.createTable('feature_tile_link'); -} - -/** - * Creates the extended relations tables - * @return {Promise} - */ -TableCreator.prototype.createExtendedRelations = function() { - return this.createTable('extended_relations'); -} - -/** - * Creates the contentsId tables - * @return {Promise} - */ -TableCreator.prototype.createContentsId = function() { - return this.createTable('contents_id'); -} - -/** - * Creates all tables necessary for the specified table creation script name in the GeoPackage - * @param {string} creationScriptName creation scripts to run - * @return {Promise} - */ -TableCreator.prototype.createTable = function(creationScriptName) { - var connection = this.connection; - - return tableCreationScripts[creationScriptName].reduce(function(sequence, sql) { - return sequence.then(function() { - try { - return !!connection.run(sql); - } catch (error) { - if (error.message.indexOf('already exists') === -1) { - throw error; - } - } - }); - }, Promise.resolve()); -} - -/** - * Create the given user table. - * - * @param {modle:user/userTable~UserTable} userTable user table to create - * @return {object} the result of {@link module:db/geoPackageConnection~GeoPackageConnection#run} - * @throws {Error} if the table already exists - */ -TableCreator.prototype.createUserTable = function (userTable) { - var connection = this.connection; - var result = connection.tableExists(userTable.table_name); - if (result) { - throw new Error('Table already exists and cannot be created: ' + userTable.table_name); - } - var check = ''; - - var sql = 'create table \'' + userTable.table_name + '\' ('; - for (var i = 0; i < userTable.columns.length; i++) { - var tc = userTable.columns[i]; - if (i) { - sql += ', '; - } - sql += '\n\'' + tc.name + '\' ' + tc.getTypeName(); - if (tc.max != null) { - sql += '(' + tc.max + ')'; - if (check.length) { - check += ' AND\n'; - } - check += '\tlength("'+tc.name+'") <= ' + tc.max; - } - if (tc.notNull) { - sql += ' not null' - } - if (tc.primaryKey) { - sql += ' primary key autoincrement'; - } - if (tc.defaultValue) { - if (tc.dataType === DataTypes.GPKGDataType.GPKG_DT_TEXT) { - sql += ' default \'' + tc.defaultValue + '\''; - } else { - sql += ' default ' + tc.defaultValue; - } - } - } - for (var i = 0; i < userTable.uniqueConstraints.length; i++) { - var uniqueConstraint = userTable.uniqueConstraints[i]; - sql += ',\n unique ('; - for (var j = 0; j < uniqueConstraint.columns.length; j++) { - var uniqueColumn = uniqueConstraint.columns[j]; - if (j) { - sql += ', '; - } - sql += uniqueColumn.name; - } - sql += ')'; - } - - if (check.length) { - sql += '\nCHECK(\n' + check + '\n)'; - } - - sql += '\n);'; - return connection.run(sql); -}; - -var tableCreationScripts = { - spatial_reference_system: [ - 'CREATE TABLE gpkg_spatial_ref_sys ('+ - ' srs_name TEXT NOT NULL,'+ - ' srs_id INTEGER NOT NULL PRIMARY KEY,'+ - ' organization TEXT NOT NULL,'+ - ' organization_coordsys_id INTEGER NOT NULL,'+ - ' definition TEXT NOT NULL,'+ - ' description TEXT,'+ - ' definition_12_063 TEXT NOT NULL DEFAULT "undefined"'+ - ')', - - 'CREATE VIEW st_spatial_ref_sys AS'+ - ' SELECT'+ - ' srs_name,'+ - ' srs_id,'+ - ' organization,'+ - ' organization_coordsys_id,'+ - ' definition,'+ - ' description'+ - ' FROM gpkg_spatial_ref_sys', - - 'CREATE VIEW spatial_ref_sys AS'+ - ' SELECT'+ - ' srs_id AS srid,'+ - ' organization AS auth_name,'+ - ' organization_coordsys_id AS auth_srid,'+ - ' definition AS srtext'+ - ' FROM gpkg_spatial_ref_sys' - ], - contents: [ - 'CREATE TABLE gpkg_contents ('+ - ' table_name TEXT NOT NULL PRIMARY KEY,'+ - ' data_type TEXT NOT NULL,'+ - ' identifier TEXT UNIQUE,'+ - " description TEXT DEFAULT '',"+ - " last_change DATETIME NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')),"+ - ' min_x DOUBLE,'+ - ' min_y DOUBLE,'+ - ' max_x DOUBLE,'+ - ' max_y DOUBLE,'+ - ' srs_id INTEGER,'+ - ' CONSTRAINT fk_gc_r_srs_id FOREIGN KEY (srs_id) REFERENCES gpkg_spatial_ref_sys(srs_id)'+ - ')' - ], - geometry_columns: [ - 'CREATE TABLE gpkg_geometry_columns ('+ - ' table_name TEXT NOT NULL,'+ - ' column_name TEXT NOT NULL,'+ - ' geometry_type_name TEXT NOT NULL,'+ - ' srs_id INTEGER NOT NULL,'+ - ' z TINYINT NOT NULL,'+ - ' m TINYINT NOT NULL,'+ - ' CONSTRAINT pk_geom_cols PRIMARY KEY (table_name, column_name),'+ - ' CONSTRAINT uk_gc_table_name UNIQUE (table_name),'+ - ' CONSTRAINT fk_gc_tn FOREIGN KEY (table_name) REFERENCES gpkg_contents(table_name),'+ - ' CONSTRAINT fk_gc_srs FOREIGN KEY (srs_id) REFERENCES gpkg_spatial_ref_sys (srs_id)'+ - ')', - - 'CREATE VIEW st_geometry_columns AS'+ - ' SELECT'+ - ' table_name,'+ - ' column_name,'+ - ' "ST_" || geometry_type_name AS geometry_type_name,'+ - ' g.srs_id,'+ - ' srs_name'+ - ' FROM gpkg_geometry_columns as g JOIN gpkg_spatial_ref_sys AS s'+ - ' WHERE g.srs_id = s.srs_id', - - 'CREATE VIEW geometry_columns AS'+ - ' SELECT'+ - ' table_name AS f_table_name,'+ - ' column_name AS f_geometry_column,'+ - ' (CASE geometry_type_name'+ - ' WHEN "GEOMETRY" THEN 0'+ - ' WHEN "POINT" THEN 1'+ - ' WHEN "LINESTRING" THEN 2'+ - ' WHEN "POLYGON" THEN 3'+ - ' WHEN "MULTIPOINT" THEN 4'+ - ' WHEN "MULTILINESTRING" THEN 5'+ - ' WHEN "MULTIPOLYGON" THEN 6'+ - ' WHEN "GEOMETRYCOLLECTION" THEN 7'+ - ' WHEN "CIRCULARSTRING" THEN 8'+ - ' WHEN "COMPOUNDCURVE" THEN 9'+ - ' WHEN "CURVEPOLYGON" THEN 10'+ - ' WHEN "MULTICURVE" THEN 11'+ - ' WHEN "MULTISURFACE" THEN 12'+ - ' WHEN "CURVE" THEN 13'+ - ' WHEN "SURFACE" THEN 14'+ - ' WHEN "POLYHEDRALSURFACE" THEN 15'+ - ' WHEN "TIN" THEN 16'+ - ' WHEN "TRIANGLE" THEN 17'+ - ' ELSE 0 END) AS geometry_type,'+ - ' 2 + (CASE z WHEN 1 THEN 1 WHEN 2 THEN 1 ELSE 0 END) + (CASE m WHEN 1 THEN 1 WHEN 2 THEN 1 ELSE 0 END) AS coord_dimension,'+ - ' srs_id AS srid'+ - ' FROM gpkg_geometry_columns' - ], - tile_matrix_set: [ - 'CREATE TABLE gpkg_tile_matrix_set ('+ - ' table_name TEXT NOT NULL PRIMARY KEY,'+ - ' srs_id INTEGER NOT NULL,'+ - ' min_x DOUBLE NOT NULL,'+ - ' min_y DOUBLE NOT NULL,'+ - ' max_x DOUBLE NOT NULL,'+ - ' max_y DOUBLE NOT NULL,'+ - ' CONSTRAINT fk_gtms_table_name FOREIGN KEY (table_name) REFERENCES gpkg_contents(table_name),'+ - ' CONSTRAINT fk_gtms_srs FOREIGN KEY (srs_id) REFERENCES gpkg_spatial_ref_sys (srs_id)'+ - ')' - ], - tile_matrix: [ - 'CREATE TABLE gpkg_tile_matrix ('+ - ' table_name TEXT NOT NULL,'+ - ' zoom_level INTEGER NOT NULL,'+ - ' matrix_width INTEGER NOT NULL,'+ - ' matrix_height INTEGER NOT NULL,'+ - ' tile_width INTEGER NOT NULL,'+ - ' tile_height INTEGER NOT NULL,'+ - ' pixel_x_size DOUBLE NOT NULL,'+ - ' pixel_y_size DOUBLE NOT NULL,'+ - ' CONSTRAINT pk_ttm PRIMARY KEY (table_name, zoom_level),'+ - ' CONSTRAINT fk_tmm_table_name FOREIGN KEY (table_name) REFERENCES gpkg_contents(table_name)'+ - ')', - - "CREATE TRIGGER 'gpkg_tile_matrix_zoom_level_insert'"+ - "BEFORE INSERT ON 'gpkg_tile_matrix'"+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'insert on table ''gpkg_tile_matrix'' violates constraint: zoom_level cannot be less than 0')"+ - "WHERE (NEW.zoom_level < 0);"+ - "END", - - "CREATE TRIGGER 'gpkg_tile_matrix_zoom_level_update'"+ - "BEFORE UPDATE of zoom_level ON 'gpkg_tile_matrix'"+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'update on table ''gpkg_tile_matrix'' violates constraint: zoom_level cannot be less than 0')"+ - "WHERE (NEW.zoom_level < 0);"+ - "END", - - "CREATE TRIGGER 'gpkg_tile_matrix_matrix_width_insert'"+ - "BEFORE INSERT ON 'gpkg_tile_matrix'"+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'insert on table ''gpkg_tile_matrix'' violates constraint: matrix_width cannot be less than 1')"+ - "WHERE (NEW.matrix_width < 1);"+ - "END", - - "CREATE TRIGGER 'gpkg_tile_matrix_matrix_width_update'"+ - "BEFORE UPDATE OF matrix_width ON 'gpkg_tile_matrix'"+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'update on table ''gpkg_tile_matrix'' violates constraint: matrix_width cannot be less than 1')"+ - "WHERE (NEW.matrix_width < 1);"+ - "END", - - "CREATE TRIGGER 'gpkg_tile_matrix_matrix_height_insert'"+ - "BEFORE INSERT ON 'gpkg_tile_matrix'"+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'insert on table ''gpkg_tile_matrix'' violates constraint: matrix_height cannot be less than 1')"+ - "WHERE (NEW.matrix_height < 1);"+ - "END", - - "CREATE TRIGGER 'gpkg_tile_matrix_matrix_height_update'"+ - "BEFORE UPDATE OF matrix_height ON 'gpkg_tile_matrix'"+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'update on table ''gpkg_tile_matrix'' violates constraint: matrix_height cannot be less than 1')"+ - "WHERE (NEW.matrix_height < 1);"+ - "END", - - "CREATE TRIGGER 'gpkg_tile_matrix_pixel_x_size_insert'"+ - "BEFORE INSERT ON 'gpkg_tile_matrix'"+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'insert on table ''gpkg_tile_matrix'' violates constraint: pixel_x_size must be greater than 0')"+ - "WHERE NOT (NEW.pixel_x_size > 0);"+ - "END", - - "CREATE TRIGGER 'gpkg_tile_matrix_pixel_x_size_update'"+ - "BEFORE UPDATE OF pixel_x_size ON 'gpkg_tile_matrix'"+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'update on table ''gpkg_tile_matrix'' violates constraint: pixel_x_size must be greater than 0')"+ - "WHERE NOT (NEW.pixel_x_size > 0);"+ - "END", - - "CREATE TRIGGER 'gpkg_tile_matrix_pixel_y_size_insert'"+ - "BEFORE INSERT ON 'gpkg_tile_matrix'"+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'insert on table ''gpkg_tile_matrix'' violates constraint: pixel_y_size must be greater than 0')"+ - "WHERE NOT (NEW.pixel_y_size > 0);"+ - "END", - - "CREATE TRIGGER 'gpkg_tile_matrix_pixel_y_size_update'"+ - "BEFORE UPDATE OF pixel_y_size ON 'gpkg_tile_matrix'"+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'update on table ''gpkg_tile_matrix'' violates constraint: pixel_y_size must be greater than 0')"+ - "WHERE NOT (NEW.pixel_y_size > 0);"+ - "END" - ], - data_columns: [ - 'CREATE TABLE gpkg_data_columns ('+ - ' table_name TEXT NOT NULL,'+ - ' column_name TEXT NOT NULL,'+ - ' name TEXT,'+ - ' title TEXT,'+ - ' description TEXT,'+ - ' mime_type TEXT,'+ - ' constraint_name TEXT,'+ - ' CONSTRAINT pk_gdc PRIMARY KEY (table_name, column_name),'+ - ' CONSTRAINT fk_gdc_tn FOREIGN KEY (table_name) REFERENCES gpkg_contents(table_name)'+ - ')' - ], - data_column_constraints: [ - 'CREATE TABLE gpkg_data_column_constraints ('+ - ' constraint_name TEXT NOT NULL,'+ - ' constraint_type TEXT NOT NULL, /* "range" | "enum" | "glob" */'+ - ' value TEXT,'+ - ' min NUMERIC,'+ - ' min_is_inclusive BOOLEAN, /* 0 = false, 1 = true */'+ - ' max NUMERIC,'+ - ' max_is_inclusive BOOLEAN, /* 0 = false, 1 = true */'+ - ' description TEXT,'+ - ' CONSTRAINT gdcc_ntv UNIQUE (constraint_name, constraint_type, value)'+ - ')' - ], - metadata: [ - 'CREATE TABLE gpkg_metadata ('+ - ' id INTEGER CONSTRAINT m_pk PRIMARY KEY ASC NOT NULL UNIQUE,'+ - ' md_scope TEXT NOT NULL DEFAULT "dataset",'+ - ' md_standard_uri TEXT NOT NULL,'+ - ' mime_type TEXT NOT NULL DEFAULT "text/xml",'+ - ' metadata TEXT NOT NULL'+ - ')', - - "CREATE TRIGGER 'gpkg_metadata_md_scope_insert' "+ - "BEFORE INSERT ON 'gpkg_metadata' "+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'insert on table gpkg_metadata violates "+ - "constraint: md_scope must be one of undefined | fieldSession | "+ - "collectionSession | series | dataset | featureType | feature | "+ - "attributeType | attribute | tile | model | catalogue | schema | "+ - "taxonomy software | service | collectionHardware | "+ - "nonGeographicDataset | dimensionGroup') "+ - "WHERE NOT(NEW.md_scope IN "+ - "('undefined','fieldSession','collectionSession','series','dataset', "+ - "'featureType','feature','attributeType','attribute','tile','model', "+ - "'catalogue','schema','taxonomy','software','service', "+ - "'collectionHardware','nonGeographicDataset','dimensionGroup')); "+ - "END", - - "CREATE TRIGGER 'gpkg_metadata_md_scope_update' "+ - "BEFORE UPDATE OF 'md_scope' ON 'gpkg_metadata' "+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'update on table gpkg_metadata violates "+ - "constraint: md_scope must be one of undefined | fieldSession | "+ - "collectionSession | series | dataset | featureType | feature | "+ - "attributeType | attribute | tile | model | catalogue | schema | "+ - "taxonomy software | service | collectionHardware | "+ - "nonGeographicDataset | dimensionGroup') "+ - "WHERE NOT(NEW.md_scope IN "+ - "('undefined','fieldSession','collectionSession','series','dataset', "+ - "'featureType','feature','attributeType','attribute','tile','model', "+ - "'catalogue','schema','taxonomy','software','service', "+ - "'collectionHardware','nonGeographicDataset','dimensionGroup')); "+ - "END" - ], - metadata_reference: [ - "CREATE TABLE gpkg_metadata_reference (" + - " reference_scope TEXT NOT NULL," + - " table_name TEXT," + - " column_name TEXT," + - " row_id_value INTEGER," + - " timestamp DATETIME NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now'))," + - " md_file_id INTEGER NOT NULL," + - " md_parent_id INTEGER," + - " CONSTRAINT crmr_mfi_fk FOREIGN KEY (md_file_id) REFERENCES gpkg_metadata(id)," + - " CONSTRAINT crmr_mpi_fk FOREIGN KEY (md_parent_id) REFERENCES gpkg_metadata(id)" + - ")", - - "CREATE TRIGGER 'gpkg_metadata_reference_reference_scope_insert' "+ - "BEFORE INSERT ON 'gpkg_metadata_reference' "+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'insert on table gpkg_metadata_reference "+ - "violates constraint: reference_scope must be one of \"geopackage\", "+ - "table\", \"column\", \"row\", \"row/col\"') "+ - "WHERE NOT NEW.reference_scope IN "+ - "('geopackage','table','column','row','row/col'); "+ - "END", - - "CREATE TRIGGER 'gpkg_metadata_reference_reference_scope_update' "+ - "BEFORE UPDATE OF 'reference_scope' ON 'gpkg_metadata_reference' "+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'update on table gpkg_metadata_reference "+ - "violates constraint: referrence_scope must be one of \"geopackage\", "+ - "\"table\", \"column\", \"row\", \"row/col\"') "+ - "WHERE NOT NEW.reference_scope IN "+ - "('geopackage','table','column','row','row/col'); "+ - "END", - - "CREATE TRIGGER 'gpkg_metadata_reference_column_name_insert' "+ - "BEFORE INSERT ON 'gpkg_metadata_reference' "+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'insert on table gpkg_metadata_reference "+ - "violates constraint: column name must be NULL when reference_scope "+ - "is \"geopackage\", \"table\" or \"row\"') "+ - "WHERE (NEW.reference_scope IN ('geopackage','table','row') "+ - "AND NEW.column_name IS NOT NULL); "+ - "SELECT RAISE(ABORT, 'insert on table gpkg_metadata_reference "+ - "violates constraint: column name must be defined for the specified "+ - "table when reference_scope is \"column\" or \"row/col\"') "+ - "WHERE (NEW.reference_scope IN ('column','row/col') "+ - "AND NOT NEW.table_name IN ( "+ - "SELECT name FROM SQLITE_MASTER WHERE type = 'table' "+ - "AND name = NEW.table_name "+ - "AND sql LIKE ('%' || NEW.column_name || '%'))); "+ - "END", - - "CREATE TRIGGER 'gpkg_metadata_reference_column_name_update' "+ - "BEFORE UPDATE OF column_name ON 'gpkg_metadata_reference' "+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'update on table gpkg_metadata_reference "+ - "violates constraint: column name must be NULL when reference_scope "+ - "is \"geopackage\", \"table\" or \"row\"') "+ - "WHERE (NEW.reference_scope IN ('geopackage','table','row') "+ - "AND NEW.column_nameIS NOT NULL); "+ - "SELECT RAISE(ABORT, 'update on table gpkg_metadata_reference "+ - "violates constraint: column name must be defined for the specified "+ - "table when reference_scope is \"column\" or \"row/col\"') "+ - "WHERE (NEW.reference_scope IN ('column','row/col') "+ - "AND NOT NEW.table_name IN ( "+ - "SELECT name FROM SQLITE_MASTER WHERE type = 'table' "+ - "AND name = NEW.table_name "+ - "AND sql LIKE ('%' || NEW.column_name || '%'))); "+ - "END", - - "CREATE TRIGGER 'gpkg_metadata_reference_row_id_value_insert' "+ - "BEFORE INSERT ON 'gpkg_metadata_reference' "+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'insert on table gpkg_metadata_reference "+ - "violates constraint: row_id_value must be NULL when reference_scope "+ - "is \"geopackage\", \"table\" or \"column\"') "+ - "WHERE NEW.reference_scope IN ('geopackage','table','column') "+ - "AND NEW.row_id_value IS NOT NULL; "+ - "END ", - - "CREATE TRIGGER 'gpkg_metadata_reference_row_id_value_update' "+ - "BEFORE UPDATE OF 'row_id_value' ON 'gpkg_metadata_reference' "+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'update on table gpkg_metadata_reference "+ - "violates constraint: row_id_value must be NULL when reference_scope "+ - "is \"geopackage\", \"table\" or \"column\"') "+ - "WHERE NEW.reference_scope IN ('geopackage','table','column') "+ - "AND NEW.row_id_value IS NOT NULL; "+ - "END", - - "CREATE TRIGGER 'gpkg_metadata_reference_timestamp_insert' "+ - "BEFORE INSERT ON 'gpkg_metadata_reference' "+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'insert on table gpkg_metadata_reference "+ - "violates constraint: timestamp must be a valid time in ISO 8601 "+ - "\"yyyy-mm-ddThh:mm:ss.cccZ\" form') "+ - "WHERE NOT (NEW.timestamp GLOB "+ - "'[1-2][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-5][0-9]:[0-5][0-9].[0-9][0-9][0-9]Z' "+ - "AND strftime('%s',NEW.timestamp) NOT NULL); "+ - "END", - - "CREATE TRIGGER 'gpkg_metadata_reference_timestamp_update' "+ - "BEFORE UPDATE OF 'timestamp' ON 'gpkg_metadata_reference' "+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'update on table gpkg_metadata_reference "+ - "violates constraint: timestamp must be a valid time in ISO 8601 "+ - "\"yyyy-mm-ddThh:mm:ss.cccZ\" form') "+ - "WHERE NOT (NEW.timestamp GLOB "+ - "'[1-2][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-5][0-9]:[0-5][0-9].[0-9][0-9][0-9]Z' "+ - "AND strftime('%s',NEW.timestamp) NOT NULL); "+ - "END " - ], - extensions: [ - 'CREATE TABLE gpkg_extensions ('+ - ' table_name TEXT,'+ - ' column_name TEXT,'+ - ' extension_name TEXT NOT NULL,'+ - ' definition TEXT NOT NULL,'+ - ' scope TEXT NOT NULL,'+ - ' CONSTRAINT ge_tce UNIQUE (table_name, column_name, extension_name)'+ - ')' - ], - table_index: [ - 'CREATE TABLE nga_table_index ('+ - ' table_name TEXT NOT NULL PRIMARY KEY,'+ - ' last_indexed DATETIME'+ - ')' - ], - geometry_index: [ - 'CREATE TABLE nga_geometry_index ('+ - ' table_name TEXT NOT NULL,'+ - ' geom_id INTEGER NOT NULL,'+ - ' min_x DOUBLE NOT NULL,'+ - ' max_x DOUBLE NOT NULL,'+ - ' min_y DOUBLE NOT NULL,'+ - ' max_y DOUBLE NOT NULL,'+ - ' min_z DOUBLE,'+ - ' max_z DOUBLE,'+ - ' min_m DOUBLE,'+ - ' max_m DOUBLE,'+ - ' CONSTRAINT pk_ngi PRIMARY KEY (table_name, geom_id),'+ - ' CONSTRAINT fk_ngi_nti_tn FOREIGN KEY (table_name) REFERENCES nga_table_index(table_name)'+ - ')' - ], - feature_tile_link: [ - 'CREATE TABLE nga_feature_tile_link ('+ - ' feature_table_name TEXT NOT NULL,'+ - ' tile_table_name TEXT NOT NULL,'+ - ' CONSTRAINT pk_nftl PRIMARY KEY (feature_table_name, tile_table_name)'+ - ')' - ], - extended_relations: [ - 'CREATE TABLE gpkgext_relations (' + - ' id INTEGER PRIMARY KEY AUTOINCREMENT,' + - ' base_table_name TEXT NOT NULL,' + - ' base_primary_column TEXT NOT NULL DEFAULT \'id\',' + - ' related_table_name TEXT NOT NULL,' + - ' related_primary_column TEXT NOT NULL DEFAULT \'id\',' + - ' relation_name TEXT NOT NULL,' + - ' mapping_table_name TEXT NOT NULL UNIQUE' + - ')' - ], - contents_id: [ - 'CREATE TABLE nga_contents_id (' + - ' id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,' + - ' table_name TEXT NOT NULL,' + - ' CONSTRAINT uk_nci_table_name UNIQUE (table_name),' + - ' CONSTRAINT fk_nci_gc_tn FOREIGN KEY (table_name) REFERENCES gpkg_contents(table_name)' + - ')' - ] -}; - -},{"../core/srs":9,"./dataTypes":14}],20:[function(require,module,exports){ -/** - * Base Extension - * @module extension/baseExtension - */ - -var Extension = require('./index').Extension - , ExtensionDao = require('./index').ExtensionDao; -/** - * Abstract base GeoPackage extension - * @class - */ -var BaseExtension = function(geoPackage) { - this.geoPackage = geoPackage; - this.connection = geoPackage.connection; - this.extensionsDao = geoPackage.getExtensionDao(); -} - -module.exports = BaseExtension; - -/** - * Get the extension or create as needed - * @param {String} extensionName extension name - * @param {String} tableName table name - * @param {String} columnName column name - * @param {String} definition extension definition - * @param {String} scopeType extension scope type - * @return {Promise} - */ -BaseExtension.prototype.getOrCreate = function(extensionName, tableName, columnName, definition, scopeType) { - var extension = this.getExtension(extensionName, tableName, columnName); - if (extension) { - return Promise.resolve(extension); - } - return this.extensionsDao.createTable() - .then(function() { - return this.createExtension(extensionName, tableName, columnName, definition, scopeType); - }.bind(this)); -}; - -/** - * Get the extension for the name, table name and column name - * @param {String} extensionName extension name - * @param {String} tableName table name - * @param {String} columnName column name - * @param {Function} callback Called with err if one occurred and the extension - */ -BaseExtension.prototype.getExtension = function(extensionName, tableName, columnName) { - if (!this.extensionsDao.isTableExists()) { - return false; - } - return this.extensionsDao.queryByExtensionAndTableNameAndColumnName(extensionName, tableName, columnName); -}; - -/** - * Determine if the GeoPackage has the extension - * @param {String} extensionName extension name - * @param {String} tableName table name - * @param {String} columnName column name - */ -BaseExtension.prototype.hasExtension = function(extensionName, tableName, columnName) { - var exists = this.getExtension(extensionName, tableName, columnName); - return !!this.getExtension(extensionName, tableName, columnName).length; -}; - -BaseExtension.prototype.createExtension = function(extensionName, tableName, columnName, definition, scopeType) { - var extension = new Extension(); - extension.table_name = tableName; - extension.column_name = columnName; - extension.extension_name = extensionName; - extension.definition = definition; - extension.scope = scopeType; - return this.extensionsDao.create(extension); -}; - -},{"./index":25}],21:[function(require,module,exports){ -/** - * @memberOf module:extension/contents - * @class ContentsId - */ - -/** - * Contents Id object, for maintaining a unique identifier for contents tables - * @constructor - */ -var ContentsId = function() { - /** - * Id column, primary key - * @member {Number} - */ - this.id = undefined; - - /** - * Table name column - * @member {String} - */ - this.table_name = undefined; -}; - -module.exports = ContentsId; - -},{}],22:[function(require,module,exports){ -/** - * @memberOf module:extension/contents - * @class ContentsIdDao - */ - -var Dao = require('../../dao/dao') - , ContentsId = require('./contentsId'); -var util = require('util'); - -/** - * Contents Id Data Access Object - * @extends {module:dao/dao~Dao} - * @constructor - */ -var ContentsIdDao = function(geoPackage) { - Dao.call(this, geoPackage); -}; - -util.inherits(ContentsIdDao, Dao); - -/** - * Create a {module:extension/contents.ContentsId} object - * @return {module:extension/contents.ContentsId} - */ -ContentsIdDao.prototype.createObject = function() { - return new ContentsId(); -}; - -/** - * Create the necessary tables for this dao - * @return {Promise} - */ -ContentsIdDao.prototype.createTable = function() { - return this.geoPackage.getTableCreator().createContentsId(); -}; - -/** - * Get all the table names - * @return {string[]} - */ -ContentsIdDao.prototype.getTableNames = function() { - var tableNames = []; - var tableNameColumns = this.queryForColumns('table_name'); - for (var i = 0; i < tableNameColumns.length; i++) { - tableNames.push(tableNameColumns[i].table_name); - } - return tableNames; -}; - -/** - * Query by table name - * @param {string} tableName name of the table - * @return {module:extension/contents.ContentsId} - */ -ContentsIdDao.prototype.queryForTableName = function(tableName) { - var contentsIds = this.queryForAll(this.buildWhereWithFieldAndValue(ContentsIdDao.COLUMN_TABLE_NAME, tableName), this.buildWhereArgs(tableName)); - if (contentsIds.length > 0) { - return contentsIds[0]; - } else { - return null; - } -}; - -/** - * Delete by tableName - * @param {string} tableName the table name to delete by - * @return {number} number of deleted rows - */ -ContentsIdDao.prototype.deleteByTableName = function(tableName) { - return this.deleteWhere(this.buildWhereWithFieldAndValue(ContentsIdDao.COLUMN_TABLE_NAME, tableName), this.buildWhereArgs(tableName)); -}; - -ContentsIdDao.TABLE_NAME = 'nga_contents_id'; -ContentsIdDao.COLUMN_ID = 'id'; -ContentsIdDao.COLUMN_TABLE_NAME = 'table_name'; - -ContentsIdDao.prototype.gpkgTableName = ContentsIdDao.TABLE_NAME; -ContentsIdDao.prototype.idColumns = ['id']; - -module.exports = ContentsIdDao; - -},{"../../dao/dao":11,"./contentsId":21,"util":343}],23:[function(require,module,exports){ -/** - * @module extension/contents - */ - -var BaseExtension = require('../baseExtension') - , Extension = require('../.').Extension - , ContentsDao = require('../../core/contents').ContentsDao - , ContentsIdDao = require('./contentsIdDao'); - -var util = require('util'); - -/** - * Style extension - * @param {module:geoPackage~GeoPackage} geoPackage GeoPackage object - * @extends {module:extension/baseExtension~BaseExtension} - * @class ContentsIdExtension - * @constructor - */ -var ContentsIdExtension = function(geoPackage) { - BaseExtension.call(this, geoPackage); - this.contentsIdDao = geoPackage.getContentsIdDao(); -}; - -util.inherits(ContentsIdExtension, BaseExtension); - -/** - * Get or create the contents id extension - * @return {Promise} - */ -ContentsIdExtension.prototype.getOrCreateExtension = function() { - return this.getOrCreate(ContentsIdExtension.EXTENSION_NAME, null, null, ContentsIdExtension.EXTENSION_DEFINITION, Extension.READ_WRITE) - .then(function() { - return this.contentsIdDao.createTable(); - }.bind(this)); -}; - -/** - * Get the ContentsIdDao - * @returns {module:extension/contents.ContentsIdDao} - */ -ContentsIdExtension.prototype.getDao = function() { - return this.contentsIdDao; -}; - -ContentsIdExtension.prototype.has = function () { - return this.hasExtension(ContentsIdExtension.EXTENSION_NAME, null, null) && this.contentsIdDao.isTableExists(); -}; - -/** - * Get the ContentsId object - * @param contents {module:core/contents.Contents} - * @returns {module:extension/contents.ContentsId} - */ -ContentsIdExtension.prototype.get = function (contents) { - var contentsId = null; - if (contents && contents.table_name) { - contentsId = this.getByTableName(contents.table_name); - } - return contentsId; -}; - -/** - * Get the ContentsId object - * @param tableName - * @returns {module:extension/contents.ContentsId} - */ -ContentsIdExtension.prototype.getByTableName = function (tableName) { - var contentsId = null; - if (this.contentsIdDao.isTableExists()) { - contentsId = this.contentsIdDao.queryForTableName(tableName); - } - return contentsId; -}; - -/** - * Get the ContentsId id - * @param contents {module:core/contents.Contents} - * @returns {Number} - */ -ContentsIdExtension.prototype.getId = function (contents) { - let contentsId = null; - if (contents && contents.table_name) { - contentsId = this.getIdByTableName(contents.table_name); - } - return contentsId; -}; - -/** - * Get the ContentsId id - * @param tableName - * @returns {Number} - */ -ContentsIdExtension.prototype.getIdByTableName = function (tableName) { - var id = null; - if (this.contentsIdDao.isTableExists()) { - var contentsId = this.contentsIdDao.queryForTableName(tableName); - if (contentsId) { - id = contentsId.id; - } - } - return id; -}; - -/** - * Creates contentsId for contents - * @param contents {module:core/contents.Contents} - * @returns {module:extension/contents.ContentsId} - */ -ContentsIdExtension.prototype.create = function (contents) { - var contentsId = null; - if (contents && contents.table_name) { - contentsId = this.createWithTableName(contents.table_name); - } - return contentsId; -}; - -/** - * Creates contentsId for contents - * @param tableName - * @returns {module:extension/contents.ContentsId} - */ -ContentsIdExtension.prototype.createWithTableName = function (tableName) { - var contentsId = this.contentsIdDao.createObject(); - contentsId.table_name = tableName; - contentsId.id = this.contentsIdDao.create(contentsId); - return contentsId; -}; - -/** - * Creates contentsId for contents - * @param contents {module:core/contents.Contents} - * @returns {module:extension/contents.ContentsId} - */ -ContentsIdExtension.prototype.createId = function (contents) { - var contentsId = null; - if (contents && contents.table_name) { - contentsId = this.createIdWithTableName(contents.table_name); - } - return contentsId; -}; - -/** - * Creates contentsId for contents - * @param tableName {string} - * @returns {module:extension/contents.ContentsId} - */ -ContentsIdExtension.prototype.createIdWithTableName = function (tableName) { - return this.createWithTableName(tableName); -}; - -/** - * Gets or creates contentsId for contents - * @param contents {module:core/contents.Contents} - * @returns {module:extension/contents.ContentsId} - */ -ContentsIdExtension.prototype.getOrCreateId = function (contents) { - var contentsId = null; - if (contents && contents.table_name) { - contentsId = this.getOrCreateIdByTableName(contents.table_name); - } - return contentsId; -}; - -/** - * Gets or creates contentsId for table name - * @param tableName {string} - * @returns {module:extension/contents.ContentsId} - */ -ContentsIdExtension.prototype.getOrCreateIdByTableName = function (tableName) { - var contentId = this.getByTableName(tableName); - if (contentId == null) { - contentId = this.createWithTableName(tableName); - } - return contentId; -}; - -/** - * Deletes contentsId for contents - * @param contents {module:core/contents.Contents} - * @returns {number} number of deleted rows - */ -ContentsIdExtension.prototype.deleteId = function (contents) { - var deleted = false; - if (contents && contents.table_name) { - deleted = this.deleteIdByTableName(contents.table_name); - } - return deleted; -}; - -/** - * Deletes contentId for table name - * @param tableName {string} - * @returns {number} number of deleted rows - */ -ContentsIdExtension.prototype.deleteIdByTableName = function (tableName) { - return this.contentsIdDao.deleteByTableName(tableName); -}; - -/** - * Number of contentsIds - * @returns {number} - */ -ContentsIdExtension.prototype.count = function () { - var count = 0; - if (this.has()) { - count = this.contentsIdDao.count(); - } - return count; -}; - -/** - * Create contentsIds for contents of type passed in - * @param type {string} defaults to "" - * @returns {number} - */ -ContentsIdExtension.prototype.createIds = function (type = "") { - var missing = this.getMissing(type); - for (var i = 0; i < missing.length; i++) { - this.getOrCreateIdByTableName(missing[i].table_name); - } - return missing.length; -}; - -/** - * Deletes ids by type - * @param type - * @returns {number} - */ -ContentsIdExtension.prototype.deleteIds = function (type = "") { - var deleted = 0; - if (this.has()) { - if (type.length === 0) { - deleted = this.contentsIdDao.deleteAll(); - } else { - var ids = this.getIdsByType(type); - for (var i = 0; i < ids.length; i++) { - deleted += this.contentsIdDao.deleteById(ids[i].id); - } - } - } - return deleted; -}; - -ContentsIdExtension.prototype.getIdsByType = function (type = "") { - var contentIds = []; - if (this.has()) { - var query = "SELECT "; - query += ContentsIdDao.COLUMN_ID; - query += ", "; - query += ContentsIdDao.COLUMN_TABLE_NAME; - query += " FROM " + ContentsIdDao.TABLE_NAME; - query += " WHERE "; - query += ContentsIdDao.COLUMN_TABLE_NAME; - query += " IN (SELECT "; - query += ContentsDao.COLUMN_TABLE_NAME; - query += " FROM "; - query += ContentsDao.TABLE_NAME; - var where = ""; - var params = []; - if (type != null && type.length > 0) { - where += ContentsDao.COLUMN_DATA_TYPE; - where += " = ?"; - params.push(type); - } - if (where.length > 0) { - query += " WHERE " + where; - } - query += ")"; - contentIds = this.connection.all(query, params); - } - return contentIds; -}; - -/** - * Get contents without contents ids - * @param type - * @returns {string[]} - */ -ContentsIdExtension.prototype.getMissing = function (type = "") { - var query = "SELECT " + ContentsDao.COLUMN_TABLE_NAME + " FROM " + ContentsDao.TABLE_NAME; - var where = ""; - var params = []; - if (type != null && type.length > 0) { - where += ContentsDao.COLUMN_DATA_TYPE; - where += " = ?"; - params.push(type); - } - if (this.has()) { - if (where.length > 0) { - where += " AND "; - } - where += ContentsDao.COLUMN_TABLE_NAME; - where += " NOT IN (SELECT "; - where += ContentsIdDao.COLUMN_TABLE_NAME; - where += " FROM "; - where += ContentsIdDao.TABLE_NAME; - where += ")"; - } - if (where.length > 0) { - query += " WHERE " + where; - } - return this.connection.all(query, params); -}; - -/** - * Remove contents id extension - */ -ContentsIdExtension.prototype.removeExtension = function() { - if (this.contentsIdDao.isTableExists()) { - this.geoPackage.deleteTable(ContentsIdDao.TABLE_NAME); - } - if (this.extensionsDao.isTableExists()) { - this.extensionsDao.deleteByExtension(ContentsIdDao.EXTENSION_NAME); - } -}; - -ContentsIdExtension.EXTENSION_NAME = 'nga_contents_id'; -ContentsIdExtension.EXTENSION_AUTHOR = 'nga'; -ContentsIdExtension.EXTENSION_NAME_NO_AUTHOR = 'contents_id'; -ContentsIdExtension.EXTENSION_DEFINITION = 'http://ngageoint.github.io/GeoPackage/docs/extensions/contents-id.html'; - -module.exports = ContentsIdExtension; - -},{"../.":25,"../../core/contents":8,"../baseExtension":20,"./contentsIdDao":22,"util":343}],24:[function(require,module,exports){ -/** - * CrsWktExtension module. - * @module extension/crsWkt - */ - -var BaseExtension = require('../baseExtension') - , Extension = require('../.').Extension; - -var util = require('util'); - -/** - * OGC Well known text representation of Coordinate Reference Systems extensionName - * @param {module:geoPackage~GeoPackage} geoPackage GeoPackage object - * @class - * @extends {module:extension/baseExtension~BaseExtension} - */ -var CrsWktExtension = function(geoPackage) { - BaseExtension.call(this, geoPackage); - - this.extensionName = CrsWktExtension.EXTENSION_NAME; - - this.extensionDefinition = CrsWktExtension.EXTENSION_CRS_WKT_DEFINITION; -} - -util.inherits(CrsWktExtension, BaseExtension); - -/** - * Get or create the extension - * @return {Promise} - */ -CrsWktExtension.prototype.getOrCreateExtension = function() { - return this.getOrCreate(this.extensionName, null, null, this.extensionDefinition, Extension.READ_WRITE); -}; - -CrsWktExtension.EXTENSION_NAME = 'gpkg_crs_wkt'; -CrsWktExtension.EXTENSION_CRS_WKT_AUTHOR = 'gpkg'; -CrsWktExtension.EXTENSION_CRS_WKT_NAME_NO_AUTHOR = 'crs_wkt'; -CrsWktExtension.EXTENSION_CRS_WKT_DEFINITION = 'http://www.geopackage.org/spec/#extension_crs_wkt'; - -module.exports.CrsWktExtension = CrsWktExtension; - -},{"../.":25,"../baseExtension":20,"util":343}],25:[function(require,module,exports){ -/** - * Metadata module. - * @module extension - * @see module:dao/dao - */ - -var Dao = require('../dao/dao') - , ColumnValues = require('../dao/columnValues') - , TableCreator = require('../db/tableCreator'); - -var util = require('util'); - -/** - * Indicates that a particular extension applies to a GeoPackage, a table in a - * GeoPackage or a column of a table in a GeoPackage. An application that access - * a GeoPackage can query the gpkg_extensions table instead of the contents of - * all the user data tables to determine if it has the required capabilities to - * read or write to tables with extensions, and to “fail fast” and return an - * error message if it does not. - * @class Extension - */ -var Extension = function() { - - /** - * Name of the table that requires the extension. When NULL, the extension - * is required for the entire GeoPackage. SHALL NOT be NULL when the - * column_name is not NULL. - * @member {String} - */ - this.table_name; - - /** - * Name of the column that requires the extension. When NULL, the extension - * is required for the entire table. - * @member {String} - */ - this.column_name; - - /** - * The case sensitive name of the extension that is required, in the form - * _. - * @member {String} - */ - this.extension_name; - - /** - * Definition of the extension in the form specfied by the template in - * GeoPackage Extension Template (Normative) or reference thereto. - * @member {String} - */ - this.definition; - - /** - * Indicates scope of extension effects on readers / writers: read-write or - * write-only in lowercase. - * @member {String} - */ - this.scope; -} - -Extension.EXTENSION_NAME_DIVIDER = "_"; - -Extension.READ_WRITE = "read-write"; -Extension.WRITE_ONLY = "write-only"; - -Extension.prototype.setExtensionName = function(author, extensionName) { - this.extension_name = Extension.buildExtensionName(author, extensionName); -}; - -Extension.prototype.getAuthor = function() { - return Extension.getAuthorWithExtensionName(this.extension_name); -} - -Extension.prototype.getExtensionNameNoAuthor = function() { - return Extension.getExtensionNameNoAuthor(this.extension_name); -} - -Extension.buildExtensionName = function(author, extensionName) { - return author + Extension.EXTENSION_NAME_DIVIDER + extensionName; -} - -Extension.getAuthorWithExtensionName = function(extensionName) { - return extensionName.split(Extension.EXTENSION_NAME_DIVIDER)[0]; -} - -Extension.getExtensionNameNoAuthor = function(extensionName) { - return extensionName.slice(extensionName.indexOf(Extension.EXTENSION_NAME_DIVIDER)+1); -} - -/** - * Extension Data Access Object - * @class - * @extends {module:dao/dao~Dao} - */ -var ExtensionDao = function(geoPackage) { - Dao.call(this, geoPackage); -}; - -util.inherits(ExtensionDao, Dao); - -ExtensionDao.prototype.createObject = function(row) { - var e = new Extension(); - for (var key in row) { - e[key] = row[key]; - } - return e; -}; - -ExtensionDao.prototype.queryByExtension = function(extensionName) { - var results = this.queryForAllEq(ExtensionDao.COLUMN_EXTENSION_NAME, extensionName); - var e = this.createObject(results[0]); - return e; -} - -ExtensionDao.prototype.queryAllByExtension = function(extensionName) { - var extensions = [] - for (var row of this.queryForAllEq(ExtensionDao.COLUMN_EXTENSION_NAME, extensionName)) { - var e = this.createObject(row); - extensions.push(e); - } - if (extensions.length) { - return extensions; - } else { - return false; - } -} - -ExtensionDao.prototype.queryByExtensionAndTableName = function(extensionName, tableName) { - var values = new ColumnValues(); - values.addColumn(ExtensionDao.COLUMN_EXTENSION_NAME, extensionName); - values.addColumn(ExtensionDao.COLUMN_TABLE_NAME, tableName); - var extensions = []; - for (var row of this.queryForFieldValues(values)) { - var e = this.createObject(row); - extensions.push(e); - } - if (extensions.length) { - return extensions; - } else { - return false; - } -} - -ExtensionDao.prototype.queryByExtensionAndTableNameAndColumnName = function (extensionName, tableName, columnName) { - var values = new ColumnValues(); - values.addColumn(ExtensionDao.COLUMN_EXTENSION_NAME, extensionName); - values.addColumn(ExtensionDao.COLUMN_TABLE_NAME, tableName); - values.addColumn(ExtensionDao.COLUMN_COLUMN_NAME, columnName); - var extensions = []; - for (var row of this.queryForFieldValues(values)) { - var e = this.createObject(row); - extensions.push(e); - } - if (extensions.length) { - return extensions; - } else { - return false; - } -}; - -ExtensionDao.prototype.createTable = function() { - var tc = new TableCreator(this.geoPackage); - return tc.createExtensions(); -} - -ExtensionDao.prototype.deleteByExtension = function(extensionName) { - var values = new ColumnValues(); - values.addColumn(ExtensionDao.COLUMN_EXTENSION_NAME, extensionName); - this.deleteWhere(this.buildWhere(values, '='), this.buildWhereArgs(values)); -} - -ExtensionDao.prototype.deleteByExtensionAndTableName = function(extensionName, tableName) { - var values = new ColumnValues(); - values.addColumn(ExtensionDao.COLUMN_EXTENSION_NAME, extensionName); - values.addColumn(ExtensionDao.COLUMN_TABLE_NAME, tableName); - this.deleteWhere(this.buildWhere(values, 'and'), this.buildWhereArgs(values)); -} - -ExtensionDao.TABLE_NAME = "gpkg_extensions"; -ExtensionDao.COLUMN_TABLE_NAME = "table_name"; -ExtensionDao.COLUMN_COLUMN_NAME = "column_name"; -ExtensionDao.COLUMN_EXTENSION_NAME = "extension_name"; -ExtensionDao.COLUMN_DEFINITION = "definition"; -ExtensionDao.COLUMN_SCOPE = "scope"; - -ExtensionDao.prototype.gpkgTableName = ExtensionDao.TABLE_NAME; -ExtensionDao.prototype.idColumns = [ExtensionDao.COLUMN_TABLE_NAME, ExtensionDao.COLUMN_COLUMN_NAME, ExtensionDao.COLUMN_EXTENSION_NAME]; - -module.exports.ExtensionDao = ExtensionDao; -module.exports.Extension = Extension; - -},{"../dao/columnValues":10,"../dao/dao":11,"../db/tableCreator":19,"util":343}],26:[function(require,module,exports){ -/** - * Feature Table Index - * @module extension/index - */ - -var Extension = require('../index').Extension - , ExtensionDao = require('../index').ExtensionDao - , BaseExtension = require('../baseExtension') - , TableIndexDao = require('./tableIndex').TableIndexDao - , TableIndex = require('./tableIndex').TableIndex - , GeometryIndexDao = require('./geometryIndex').GeometryIndexDao - , RTreeIndexDao = require('../rtree').RTreeIndexDao - , RTreeIndex = require('../rtree').RTreeIndex - , ContentsDao = require('../../core/contents').ContentsDao - , EnvelopeBuilder = require('../../geom/envelopeBuilder'); - -var proj4 = require('proj4'); -proj4 = 'default' in proj4 ? proj4['default'] : proj4; - -var util = require('util'); - -/** - * This class will either use the RTree index if it exists, or the - * Feature Table Index NGA Extension implementation. This extension is used to - * index Geometries within a feature table by their minimum bounding box for - * bounding box queries. - * @extends {module:extension/baseExtension~BaseExtension} - * @class - */ -var FeatureTableIndex = function(geoPackage, featureDao) { - BaseExtension.call(this, geoPackage); - - this.progress; - - /** - * Feature Dao to index - * @type {module:features/user/featureDao~FeatureDao} - */ - this.featureDao = featureDao; - - this.extensionName = Extension.buildExtensionName(FeatureTableIndex.EXTENSION_GEOMETRY_INDEX_AUTHOR, FeatureTableIndex.EXTENSION_GEOMETRY_INDEX_NAME_NO_AUTHOR); - - this.extensionDefinition = FeatureTableIndex.EXTENSION_GEOMETRY_INDEX_DEFINITION; - - this.tableName = featureDao.table_name; - - this.columnName = featureDao.getGeometryColumnName(); - - this.extensionsDao = geoPackage.getExtensionDao(); - - this.tableIndexDao = geoPackage.getTableIndexDao(); - - this.geometryIndexDao = geoPackage.getGeometryIndexDao(featureDao); - - this.rtreeIndexDao = new RTreeIndexDao(geoPackage, featureDao); - this.rtreeIndexDao.gpkgTableName = 'rtree_'+this.tableName+'_'+this.columnName; - - this.rtreeIndex = new RTreeIndex(geoPackage, featureDao); - - /** - * true if the table is indexed with an RTree - * @type {Boolean} - */ - this.rtreeIndexed = this.hasExtension('gpkg_rtree_index', this.tableName, this.columnName); -} - -util.inherits(FeatureTableIndex, BaseExtension); - -/** - * Index the table if not already indexed - * @param {Function} progress function which is called with progress while indexing - * @return {Promise} promise resolved when the indexing is complete - */ -FeatureTableIndex.prototype.index = function(progress) { - return this.indexWithForce(false, progress); -}; - -/** - * Index the table if not already indexed or force is true - * @param {Boolean} force force index even if the table is already indexed - * @param {Function} progress function which is called with progress while indexing - * @return {Promise} promise resolved when the indexing is complete - */ -FeatureTableIndex.prototype.indexWithForce = function(force, progress) { - progress = progress || function() {}; - this.progress = function(message) { - setTimeout(progress, 0, message); - }; - var indexed = this.isIndexed(); - if (force || !indexed) { - return this.getOrCreateExtension() - .then(function(extension) { - return this.getOrCreateTableIndex(); - }.bind(this)) - .then(function(tableIndex) { - return this.createOrClearGeometryIndicies() - .then(function() { - return this.indexTable(tableIndex); - }.bind(this)) - .then(function() { - return true; - }); - }.bind(this)); - } else { - return Promise.resolve(indexed); - } -} - -/** - * Check if the table is indexed either with an RTree or the NGA Feature Table Index - * @return {Boolean} - */ -FeatureTableIndex.prototype.isIndexed = function () { - if (this.rtreeIndexed) return true; - - try { - var result = this.getFeatureTableIndexExtension(); - if (result) { - var contentsDao = this.geoPackage.getContentsDao(); - var contents = contentsDao.queryForId(this.tableName); - if (!contents) return false; - var lastChange = new Date(contents.last_change); - var tableIndex = this.tableIndexDao.queryForId(this.tableName); - if (!tableIndex || !tableIndex.last_indexed) { - return false; - } - var lastIndexed = new Date(tableIndex.last_indexed); - return lastIndexed >= lastChange; - } else { - return false; - } - } catch (e) { - return false; - } -}; - -/** - * Returns the feature table index extension for this table and column name if exists - * @return {module:extension~Extension} - */ -FeatureTableIndex.prototype.getFeatureTableIndexExtension = function () { - return this.getExtension(this.extensionName, this.tableName, this.columnName); -}; - -/** - * Get or create the extension for this table name and column name - * @return {module:extension~Extension} - */ -FeatureTableIndex.prototype.getOrCreateExtension = function() { - return this.getOrCreate(this.extensionName, this.tableName, this.columnName, this.extensionDefinition, Extension.READ_WRITE); -}; - -/** - * Get or create if needed the table index - * @return {Promise} - */ -FeatureTableIndex.prototype.getOrCreateTableIndex = function() { - var tableIndex = this.getTableIndex(); - if (tableIndex) return Promise.resolve(tableIndex); - return this.tableIndexDao.createTable() - .then(function() { - this.createTableIndex(); - return this.getTableIndex(); - }.bind(this)); -}; - -/** - * Create the table index - * @return {module:extension/index~TableIndex} - */ -FeatureTableIndex.prototype.createTableIndex = function() { - var ti = new TableIndex(); - ti.table_name = this.tableName; - ti.last_indexed = this.lastIndexed; - return this.tableIndexDao.create(ti); -}; - -/** - * Get the table index - * @return {module:extension/index~TableIndex} - */ -FeatureTableIndex.prototype.getTableIndex = function() { - if (this.tableIndexDao.isTableExists()) { - return this.tableIndexDao.queryForId(this.tableName); - } else { - return; - } -}; - -/** - * Clear the geometry indices or create the table if needed - * @return {Promise} resolved when complete - */ -FeatureTableIndex.prototype.createOrClearGeometryIndicies = function() { - return this.geometryIndexDao.createTable() - .then(function() { - return this.clearGeometryIndicies(); - }.bind(this)); -}; - -/** - * Clears the geometry indices - * @return {Number} number of rows deleted - */ -FeatureTableIndex.prototype.clearGeometryIndicies = function() { - var where = this.geometryIndexDao.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_TABLE_NAME, this.tableName); - var whereArgs = this.geometryIndexDao.buildWhereArgs(this.tableName); - return this.geometryIndexDao.deleteWhere(where, whereArgs); -}; - -/** - * Indexes the table - * @param {module:extension/index~TableIndex} tableIndex TableIndex - * @return {Promise} resolved when complete - */ -FeatureTableIndex.prototype.indexTable = function(tableIndex) { - return new Promise(function(resolve, reject) { - setTimeout(function() { - this.indexChunk(0, tableIndex, resolve, reject); - }.bind(this)); - }.bind(this)) - .then(function(result) { - return this.updateLastIndexed(tableIndex); - }.bind(this)); -}; - -/** - * Indexes a chunk of 100 rows - * @param {Number} page page to start on - * @param {module:extension/index~TableIndex} tableIndex TableIndex - * @param {Function} resolve function to call when all chunks are indexed - * @param {Function} reject called if there is an error - */ -FeatureTableIndex.prototype.indexChunk = function(page, tableIndex, resolve, reject) { - var rows = this.featureDao.queryForChunk(100, page); - if (rows.length) { - this.progress('Indexing ' + (page * 100) + ' to ' + ((page+1) * 100)); - console.log('Indexing ' + (page * 100) + ' to ' + ((page+1) * 100)); - rows.forEach(function(row) { - var fr = this.featureDao.getRow(row); - this.indexRow(tableIndex, fr.getId(), fr.getGeometry()); - }.bind(this)); - setTimeout(function() { - this.indexChunk(++page, tableIndex, resolve, reject); - }.bind(this)); - } else { - resolve(); - } -} - -/** - * Indexes a row - * @param {module:extension/index~TableIndex} tableIndex TableIndex` - * @param {Number} geomId id of the row - * @param {module:geom/geometryData~GeometryData} geomData GeometryData to index - * @return {Boolean} success - */ -FeatureTableIndex.prototype.indexRow = function(tableIndex, geomId, geomData) { - if (!geomData) return false; - var envelope = geomData.envelope; - if (!envelope) { - var geometry = geomData.geometry; - if (geometry) { - envelope = EnvelopeBuilder.buildEnvelopeWithGeometry(geometry); - } - } - if (envelope) { - var geometryIndex = this.geometryIndexDao.populate(tableIndex, geomId, envelope); - return this.geometryIndexDao.createOrUpdate(geometryIndex); - } else { - return false; - } -}; - -/** - * Update the last time this feature table was indexed - * @param {module:extension/index~TableIndex} tableIndex TableIndex - * @return {Object} update status - */ -FeatureTableIndex.prototype.updateLastIndexed = function(tableIndex) { - if (!tableIndex) { - tableIndex = new TableIndex(); - tableIndex.table_name = this.tableName; - } - tableIndex.last_indexed = new Date().toISOString(); - var updateIndex = this.tableIndexDao.createOrUpdate(tableIndex); - return updateIndex; -} - -/** - * Query the index with the specified bounding box and projection - * @param {module:boundingBox~BoundingBox} boundingBox bounding box to query for - * @param {string} projection projection the boundingBox is in - * @return {Iterable} - */ -FeatureTableIndex.prototype.queryWithBoundingBox = function(boundingBox, projection) { - var projectedBoundingBox = boundingBox.projectBoundingBox(projection, this.featureDao.projection); - var envelope = projectedBoundingBox.buildEnvelope(); - return this.queryWithGeometryEnvelope(envelope); -} - -/** - * Query witha geometry envelope - * @param {Envelope} envelope envelope - * @return {Iterable} - */ -FeatureTableIndex.prototype.queryWithGeometryEnvelope = function(envelope) { - if (this.rtreeIndexed) { - return this.rtreeIndexDao.queryWithGeometryEnvelope(envelope); - } else { - return this.geometryIndexDao.queryWithGeometryEnvelope(envelope); - } -} - - -/** - * Count the index with the specified bounding box and projection - * @param {module:boundingBox~BoundingBox} boundingBox bounding box to query for - * @param {string} projection projection the boundingBox is in - * @return {Number} - */ -FeatureTableIndex.prototype.countWithBoundingBox = function(boundingBox, projection) { - var projectedBoundingBox = boundingBox.projectBoundingBox(projection, this.featureDao.projection); - var envelope = projectedBoundingBox.buildEnvelope(); - return this.countWithGeometryEnvelope(envelope); -}; - -/** - * Count with a geometry envelope - * @param {Envelope} envelope envelope - * @return {Number} - */ -FeatureTableIndex.prototype.countWithGeometryEnvelope = function(envelope) { - if (this.rtreeIndexed) { - return this.rtreeIndexDao.countWithGeometryEnvelope(envelope); - } else { - return this.geometryIndexDao.countWithGeometryEnvelope(envelope); - } -}; - -FeatureTableIndex.EXTENSION_GEOMETRY_INDEX_AUTHOR = 'nga'; -FeatureTableIndex.EXTENSION_GEOMETRY_INDEX_NAME_NO_AUTHOR = 'geometry_index'; -FeatureTableIndex.EXTENSION_GEOMETRY_INDEX_DEFINITION = 'http://ngageoint.github.io/GeoPackage/docs/extensions/geometry-index.html'; - -module.exports = FeatureTableIndex; - -},{"../../core/contents":8,"../../geom/envelopeBuilder":72,"../baseExtension":20,"../index":25,"../rtree":44,"./geometryIndex":27,"./tableIndex":28,"proj4":285,"util":343}],27:[function(require,module,exports){ -/** - * GeometryIndexDao module. - * @module extension/index - */ - -var Dao = require('../../dao/dao') - , TableIndexDao = require('./tableIndex').TableIndexDao - , TableCreator = require('../../db/tableCreator'); - -var util = require('util'); - -/** - * Geometry Index object, for indexing data within user tables - * @class - */ -var GeometryIndex = function() { - - /** - * Name of the table - * @member {String} - */ - this.table_name; - - /** - * Geometry Id column - * @member {Number} - */ - this.geom_id; - - /** - * Min X - * @member {Number} - */ - this.min_x; - - /** - * Max X - * @member {Number} - */ - this.max_x; - - /** - * Min Y - * @member {Number} - */ - this.min_y; - - /** - * Max Y - * @member {Number} - */ - this.max_y; - - /** - * Min Z - * @member {Number} - */ - this.min_z; - - /** - * Max Z - * @member {Number} - */ - this.max_z; - - /** - * Min M - * @member {Number} - */ - this.min_m; - - /** - * Max M - * @member {Number} - */ - this.max_m; -} - -GeometryIndex.prototype.setTableIndex = function(tableIndex) { - this.table_name = tableIndex.table_name; -} - -/** - * Geometry Index Data Access Object - * @class - * @extends {module:dao/dao~Dao} - */ -var GeometryIndexDao = function(geoPackage, featureDao) { - Dao.call(this, geoPackage); - this.featureDao = featureDao; -}; - -util.inherits(GeometryIndexDao, Dao); - -GeometryIndexDao.prototype.createObject = function() { - return new GeometryIndex(); -}; - -/** - * Get the Table Index of the Geometry Index - * - * @param {module:extension/index~GeometryIndex} geometryIndex geometry index - * @return {module:extension/index~TableIndex} - */ -GeometryIndexDao.prototype.getTableIndex = function(geometryIndex) { - var dao = this.geoPackage.getTableIndexDao(); - return dao.queryForId(geometryIndex.tableName); -}; - -/** - * Query by table name - * @param {string} tableName table name - * @return {Iterable} - */ -GeometryIndexDao.prototype.queryForTableName = function(tableName) { - return this.queryForEach(GeometryIndexDao.COLUMN_TABLE_NAME, tableName); -}; - -/** - * Count by table name - * - * @param tableName table name - * - * @return count - */ -/** - * Count by table name - * @param {string} tableName table name - * @return {Number} - */ -GeometryIndexDao.prototype.countByTableName = function(tableName) { - return this.count(GeometryIndexDao.COLUMN_TABLE_NAME, tableName); -}; - -/** - * Populate a new geometry index from an envelope - * - * @param tableIndex table index - * @param geomId geometry id - * @param envelope geometry envelope - * @param callback called with results of the populate - */ -/** - * Populate a new goemetry index from an envelope - * @param {module:extension/index~TableIndex} tableIndex TableIndex - * @param {Number} geometryId id of the geometry - * @param {Object} envelope envelope to store - * @return {module:extension/index~GeometryIndex} - */ -GeometryIndexDao.prototype.populate = function(tableIndex, geometryId, envelope) { - var geometryIndex = new GeometryIndex(); - geometryIndex.setTableIndex(tableIndex); - geometryIndex.geom_id = geometryId; - geometryIndex.min_x = envelope.minX; - geometryIndex.min_y = envelope.minY; - geometryIndex.max_x = envelope.maxX; - geometryIndex.max_y = envelope.maxY; - if (envelope.hasZ) { - geometryIndex.min_z = envelope.minZ; - geometryIndex.max_z = envelope.maxZ; - } - - if (envelope.hasM) { - geometryIndex.min_m = envelope.minM; - geometryIndex.max_m = envelope.maxM; - } - return geometryIndex; -}; - -/** - * Create the GeometryIndex table - * @return {Promise} - */ -GeometryIndexDao.prototype.createTable = function() { - var exists = this.isTableExists(); - if (exists) return Promise.resolve(true); - var tc = new TableCreator(this.geoPackage); - return tc.createGeometryIndex(); -} - -/** - * Query the index with an envelope - * @param {Object} envelope envelope - * @param {Number} envelope.minX min x - * @param {Number} envelope.maxX max x - * @param {Number} envelope.minY min y - * @param {Number} envelope.maxY max y - * @return {Iterable} - */ -GeometryIndexDao.prototype._generateGeometryEnvelopeQuery = function(envelope) { - var tableName = this.featureDao.gpkgTableName; - var where = ''; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_TABLE_NAME, tableName); - where += ' and '; - var minXLessThanMaxX = envelope.minX < envelope.maxX; - if (minXLessThanMaxX) { - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MIN_X, envelope.maxX, '<='); - where += ' and '; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MAX_X, envelope.minX, '>='); - } else { - where += '('; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MIN_X, envelope.maxX, '<='); - where += ' or '; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MAX_X, envelope.minX, '>='); - where += ' or '; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MIN_X, envelope.minX, '>='); - where += ' or '; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MAX_X, envelope.maxX, '<='); - where += ')'; - } - - where += ' and '; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MIN_Y, envelope.maxY, '<='); - where += ' and '; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MAX_Y, envelope.minY, '>='); - - var whereArgs = [tableName, envelope.maxX, envelope.minX]; - if (!minXLessThanMaxX) { - whereArgs.push(envelope.minX, envelope.maxX); - } - whereArgs.push(envelope.maxY, envelope.minY); - if (envelope.hasZ) { - where += ' and '; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MIN_Z, envelope.minZ, '<='); - where += ' and '; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MAX_Z, envelope.maxZ, '>='); - whereArgs.push(envelope.maxZ, envelope.minZ); - } - - if (envelope.hasM) { - where += ' and '; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MIN_M, envelope.minM, '<='); - where += ' and '; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MAX_M, envelope.maxM, '>='); - whereArgs.push(envelope.maxM, envelope.minM); - } - return { - join: 'inner join "' + tableName + '" on "' + tableName + '".' + this.featureDao.idColumns[0] + ' = ' + GeometryIndexDao.COLUMN_GEOM_ID, - where, - whereArgs, - tableNameArr: ['"' + tableName + '".*'] - }; -}; - -GeometryIndexDao.prototype.queryWithGeometryEnvelope = function(envelope) { - var result = this._generateGeometryEnvelopeQuery(envelope); - return this.queryJoinWhereWithArgs(result.join, result.where, result.whereArgs, result.tableNameArr); -}; - -GeometryIndexDao.prototype.countWithGeometryEnvelope = function(envelope) { - var result = this._generateGeometryEnvelopeQuery(envelope); - return this.countJoinWhereWithArgs(result.join, result.where, result.whereArgs, result.tableNameArr); -}; - -GeometryIndexDao.TABLE_NAME = "nga_geometry_index"; -GeometryIndexDao.COLUMN_TABLE_NAME = GeometryIndexDao.TABLE_NAME + ".table_name"; -GeometryIndexDao.COLUMN_GEOM_ID = GeometryIndexDao.TABLE_NAME + ".geom_id"; -GeometryIndexDao.COLUMN_MIN_X = GeometryIndexDao.TABLE_NAME + ".min_x"; -GeometryIndexDao.COLUMN_MAX_X = GeometryIndexDao.TABLE_NAME + ".max_x"; -GeometryIndexDao.COLUMN_MIN_Y = GeometryIndexDao.TABLE_NAME + ".min_y"; -GeometryIndexDao.COLUMN_MAX_Y = GeometryIndexDao.TABLE_NAME + ".max_y"; -GeometryIndexDao.COLUMN_MIN_Z = GeometryIndexDao.TABLE_NAME + ".min_z"; -GeometryIndexDao.COLUMN_MAX_Z = GeometryIndexDao.TABLE_NAME + ".max_z"; -GeometryIndexDao.COLUMN_MIN_M = GeometryIndexDao.TABLE_NAME + ".min_m"; -GeometryIndexDao.COLUMN_MAX_M = GeometryIndexDao.TABLE_NAME + ".max_m"; - -GeometryIndexDao.prototype.gpkgTableName = GeometryIndexDao.TABLE_NAME; -GeometryIndexDao.prototype.idColumns = ['table_name', 'geom_id']; - -module.exports.GeometryIndexDao = GeometryIndexDao; -module.exports.GeometryIndex = GeometryIndex; - -},{"../../dao/dao":11,"../../db/tableCreator":19,"./tableIndex":28,"util":343}],28:[function(require,module,exports){ -/** - * TableIndexDao module. - * @module extension/index - */ - -var Dao = require('../../dao/dao') - , TableCreator = require('../../db/tableCreator'); - -var util = require('util'); - -/** - * Table Index object, for indexing data within user tables - * @class TableIndex - */ -var TableIndex = function() { - - /** - * Name of the table - * @member {String} - */ - this.table_name; - - /** - * Last indexed date - * @member {String} - */ - this.last_indexed; -} - -/** - * Table Index Data Access Object - * @class - * @extends {module:dao/dao~Dao} - * @param {module:geoPackage~GeoPackage} geoPackage The GeoPackage object - */ -var TableIndexDao = function(geoPackage) { - Dao.call(this, geoPackage); -}; - -util.inherits(TableIndexDao, Dao); - -/** - * Create a new TableIndex object - * @return {module:extension/index~TableIndex} - */ -TableIndexDao.prototype.createObject = function() { - return new TableIndex(); -}; - -TableIndexDao.prototype.getGeometryIndices = function(tableIndex) { - -}; - -TableIndexDao.prototype.getGeometryIndexCount = function(tableIndex) { - -}; - -/** - * Creates the tables necessary - * @return {Promise} - */ -TableIndexDao.prototype.createTable = function() { - var tc = new TableCreator(this.geoPackage); - return tc.createTableIndex(); -} - - -TableIndexDao.TABLE_NAME = "nga_table_index"; -TableIndexDao.COLUMN_TABLE_NAME = "table_name"; -TableIndexDao.COLUMN_LAST_INDEXED = "last_indexed"; - -TableIndexDao.prototype.gpkgTableName = TableIndexDao.TABLE_NAME; -TableIndexDao.prototype.idColumns = [TableIndexDao.COLUMN_TABLE_NAME]; - -module.exports.TableIndexDao = TableIndexDao; -module.exports.TableIndex = TableIndex; - -},{"../../dao/dao":11,"../../db/tableCreator":19,"util":343}],29:[function(require,module,exports){ -/** - * MetadataExtension module. - * @module extension/metadata - */ - -var BaseExtension = require('../baseExtension') - , Extension = require('../.').Extension; - -var util = require('util'); - -/** - * Metadata extension - * @param {module:geoPackage~GeoPackage} geoPackage GeoPackage object - * @class - * @extends {module:extension/baseExtension~BaseExtension} - */ -var MetadataExtension = function(geoPackage) { - BaseExtension.call(this, geoPackage); - - this.extensionName = MetadataExtension.EXTENSION_NAME; - - this.extensionDefinition = MetadataExtension.EXTENSION_Metadata_DEFINITION; -} - -util.inherits(MetadataExtension, BaseExtension); - -/** - * Get or create the metadata extension - * @return {Promise} - */ -MetadataExtension.prototype.getOrCreateExtension = function() { - return this.getOrCreate(this.extensionName, null, null, this.extensionDefinition, Extension.READ_WRITE); -}; - -MetadataExtension.EXTENSION_NAME = 'gpkg_metadata'; -MetadataExtension.EXTENSION_Metadata_AUTHOR = 'gpkg'; -MetadataExtension.EXTENSION_Metadata_NAME_NO_AUTHOR = 'metadata'; -MetadataExtension.EXTENSION_Metadata_DEFINITION = 'http://www.geopackage.org/spec/#extension_metadata'; - -module.exports.MetadataExtension = MetadataExtension; - -},{"../.":25,"../baseExtension":20,"util":343}],30:[function(require,module,exports){ -/** - * @module extension/relatedTables - */ - -/** - * Dublin Core Metadata Initiative term types - * @class - */ -function DublinCoreType() {} - -module.exports = DublinCoreType; - -/** - * A point or period of time associated with an event in the lifecycle of - * the resource. - * @type {Object} - */ -DublinCoreType.DATE = { - name: 'date' -}; - -/** - * An account of the resource. - * @type {Object} - */ -DublinCoreType.DESCRIPTION = { - name: 'description' -}; - -/** - * The file format, physical medium, or dimensions of the resource. - * @type {Object} - */ -DublinCoreType.FORMAT = { - name: 'format', - synonyms: ['content_type'] -}; - -/** - * An unambiguous reference to the resource within a given context. - * @type {Object} - */ -DublinCoreType.IDENTIFIER = { - name: 'identifier', - synonyms: ['id'] -}; - -/** - * A related resource from which the described resource is derived. - * @type {Object} - */ -DublinCoreType.SOURCE = { - name: 'source' -}; - -/** - * A name given to the resource. - * @type {Object} - */ -DublinCoreType.TITLE = { - name: 'title' -}; - -/** - * Get the Dublin Core Type from the name - * @param {string} name name - * @return {module:extension/relatedTables~DublinCoreType} - */ -DublinCoreType.fromName = function(name) { - for (var prop in module.exports) { - var type = module.exports[prop]; - if (type.name === name) { - return type; - } - } - for (var prop in module.exports) { - var type = module.exports[prop]; - if (type.synonyms) { - for (var i = 0; i < type.synonyms.length; i++) { - if (type.synonyms[i] === name) { - return type; - } - } - } - } -} - -},{}],31:[function(require,module,exports){ -/** - * @module extension/relatedTables - */ - -var Dao = require('../../dao/dao') - , ColumnValues = require('../../dao/columnValues'); - -var util = require('util'); - -/** - * Describes the relationships between a base table, a related data table, and a - * mapping table - * @class ExtendedRelation - */ -var ExtendedRelation = function() { - - /** - * Autoincrement primary key - * @member {Number} - */ - this.id; - - /** - * Name of the table containing the base data (e.g., features) to relate - * @member {String} - */ - this.base_table_name; - - /** - * Name of the primary key column in base_table_name - * @member {String} - */ - this.base_primary_column; - - /** - * Name of the table containing the related content - * @member {String} - */ - this.related_table_name; - - /** - * Name of the primary key column in related_table_name - * @member {String} - */ - this.related_primary_column; - - /** - * Name (profile) of the relationship - * @member {String} - */ - this.relation_name; - - /** - * Name of a mapping table - * @member {String} - */ - this.mapping_table_name; -} - -/** - * Extended Relations Data Access Object - * @class ExtendedRelationDao - * @extends {module:dao/dao~Dao} - */ -var ExtendedRelationDao = function(geoPackage) { - Dao.call(this, geoPackage); -}; - -util.inherits(ExtendedRelationDao, Dao); - -/** - * Create a {module:extension/relatedTables~ExtendedRelation} object - * @return {module:extension/relatedTables~ExtendedRelation} - */ -ExtendedRelationDao.prototype.createObject = function() { - return new ExtendedRelation(); -}; - -/** - * Create the necessary tables for this dao - * @return {Promise} - */ -ExtendedRelationDao.prototype.createTable = function() { - var tc = this.geoPackage.getTableCreator(); - return tc.createExtendedRelations(); -} - -/** - * Get all the base table names - * @return {string[]} - */ -ExtendedRelationDao.prototype.getBaseTables = function() { - var baseTables = []; - var baseTableColumns = this.queryForColumns('base_table_name'); - for (var i = 0; i < baseTableColumns.length; i++) { - baseTables.push(baseTableColumns[i].base_table_name); - } - return baseTables; -}; - -/** - * Get all the related table names - * @return {string[]} - */ -ExtendedRelationDao.prototype.getRelatedTables = function() { - var relatedTables = []; - var relatedTableColumns = this.queryForColumns('related_table_name'); - for (var i = 0; i < relatedTableColumns.length; i++) { - relatedTables.push(relatedTableColumns[i].related_table_name); - } - return relatedTables; -}; - -/** - * Get all relations for the given base table name - * @param {string} baseTable base table name - * @return {module:extension/relatedTables~ExtendedRelation[]} - */ -ExtendedRelationDao.prototype.getBaseTableRelations = function(baseTable) { - return this.queryForAllEq(ExtendedRelationDao.COLUMN_BASE_TABLE_NAME, baseTable); -} - -/** - * Get all relations for the given related table name - * @param {string} relatedTable related table name - * @return {module:extension/relatedTables~ExtendedRelation[]} - */ -ExtendedRelationDao.prototype.getRelatedTableRelations = function(relatedTable) { - return this.queryForAllEq(ExtendedRelationDao.COLUMN_RELATED_TABLE_NAME, relatedTable); -} - -/** - * Get all relations for the base table with the relation name - * @param {string} baseTable base table name - * @param {string} name relation name - * @return {module:extension/relatedTables~ExtendedRelation[]} - */ -ExtendedRelationDao.prototype.getBaseTableRelationsWithName = function(baseTable, name) { - var fields = new ColumnValues(); - fields.addColumn(ExtendedRelationDao.COLUMN_BASE_TABLE_NAME, baseTable); - fields.addColumn(ExtendedRelationDao.COLUMN_RELATION_NAME, name); - var where = this.buildWhere(fields, 'and'); - var whereArgs = this.buildWhereArgs(fields); - return this.queryForAll(where, whereArgs); -} - -/** - * Get all relations to the table. Returns relations where the table is the base table and relations where the table is the related table. - * @param {string} table table name to query for - * @return {module:extension/relatedTables~ExtendedRelation[]} - */ -ExtendedRelationDao.prototype.getTableRelations = function(table) { - var fields = new ColumnValues(); - fields.addColumn(ExtendedRelationDao.COLUMN_BASE_TABLE_NAME, table); - fields.addColumn(ExtendedRelationDao.COLUMN_RELATED_TABLE_NAME, table); - var where = this.buildWhere(fields, 'or'); - var whereArgs = this.buildWhereArgs(fields); - return this.queryForAll(where, whereArgs); -} - -/** - * Gets all relationships in the GeoPackage with an optional base table name and an optional base id - * @param {String} [baseTableName] base table name - * @param {String} [relatedTableName] related table name - * @param {String} [mappingTableName] mapping table name - * @return {module:extension/relatedTables~ExtendedRelation[]} - */ -ExtendedRelationDao.prototype.getRelations = function(baseTableName, relatedTableName, mappingTableName) { - var fields = new ColumnValues(); - fields.addColumn(ExtendedRelationDao.COLUMN_BASE_TABLE_NAME, baseTableName); - fields.addColumn(ExtendedRelationDao.COLUMN_RELATED_TABLE_NAME, relatedTableName); - fields.addColumn(ExtendedRelationDao.COLUMN_MAPPING_TABLE_NAME, mappingTableName); - var where = this.buildWhereLike(fields, 'and'); - var whereArgs = this.buildWhereArgs(fields); - return this.queryForAll(where, whereArgs); -}; - -/** - * Get all relations by the mapping table name - * @param {string} mappingTableName name of the mapping table - * @return {module:extension/relatedTables~ExtendedRelation[]} - */ -ExtendedRelationDao.prototype.queryByMappingTableName = function(mappingTableName) { - var fields = new ColumnValues(); - fields.addColumn(ExtendedRelationDao.COLUMN_MAPPING_TABLE_NAME, mappingTableName); - var where = this.buildWhere(fields, 'and'); - var whereArgs = this.buildWhereArgs(fields); - return this.queryForAll(where, whereArgs); -} - -ExtendedRelationDao.TABLE_NAME = 'gpkgext_relations'; -ExtendedRelationDao.COLUMN_ID = ExtendedRelationDao.TABLE_NAME + '.id'; -ExtendedRelationDao.COLUMN_BASE_TABLE_NAME = ExtendedRelationDao.TABLE_NAME + '.base_table_name'; -ExtendedRelationDao.COLUMN_BASE_PRIMARY_COLUMN = ExtendedRelationDao.TABLE_NAME + '.base_primary_column'; -ExtendedRelationDao.COLUMN_RELATED_TABLE_NAME = ExtendedRelationDao.TABLE_NAME + '.related_table_name'; -ExtendedRelationDao.COLUMN_RELATED_PRIMARY_COLUMN = ExtendedRelationDao.TABLE_NAME + '.related_primary_column'; -ExtendedRelationDao.COLUMN_RELATION_NAME = ExtendedRelationDao.TABLE_NAME + '.relation_name'; -ExtendedRelationDao.COLUMN_MAPPING_TABLE_NAME = ExtendedRelationDao.TABLE_NAME + '.mapping_table_name'; - -ExtendedRelationDao.prototype.gpkgTableName = ExtendedRelationDao.TABLE_NAME; -ExtendedRelationDao.prototype.idColumns = ['id']; - -module.exports.ExtendedRelationDao = ExtendedRelationDao; -module.exports.ExtendedRelation = ExtendedRelation; - -},{"../../dao/columnValues":10,"../../dao/dao":11,"util":343}],32:[function(require,module,exports){ -/** - * RelatedTablesExtension module. - * @module extension/relatedTables - * @see module:extension/BaseExtension - */ - -var BaseExtension = require('../baseExtension') - , Extension = require('../.').Extension - , ColumnValues = require('../../dao/columnValues') - , OptionBuilder = require('../../optionBuilder') - , ExtendedRelationDao = require('./extendedRelation').ExtendedRelationDao - , ExtendedRelation = require('./extendedRelation').ExtendedRelation - , MediaDao = require('./mediaDao') - , MediaTable = require('./mediaTable') - , SimpleAttributesDao = require('./simpleAttributesDao') - , SimpleAttributesTable = require('./simpleAttributesTable') - , UserMappingTable = require('./userMappingTable') - , UserMappingDao = require('./userMappingDao') - , UserCustomDao = require('../../user/custom/userCustomDao') - , UserDao = require('../../user/userDao') - , UserTableReader = require('../../user/userTableReader') - , RelationType = require('./relationType') - , ContentsDao = require('../../core/contents').ContentsDao - , Contents = require('../../core/contents').Contents - , GeometryColumnsDao = require('../../features/columns').GeometryColumnsDao; - -var util = require('util'); - -/** - * Related Tables Extension - * @param {module:geoPackage~GeoPackage} geoPackage the GeoPackage object - * @class - * @extends {module:extension/baseExtension~BaseExtension} - */ -var RelatedTablesExtension = function(geoPackage) { - BaseExtension.call(this, geoPackage); - this.extendedRelationDao = geoPackage.getExtendedRelationDao(); -} - -util.inherits(RelatedTablesExtension, BaseExtension); - -/** - * Get or create the extension - * @return {Promise} - */ -RelatedTablesExtension.prototype.getOrCreateExtension = function() { - return this.getOrCreate(RelatedTablesExtension.EXTENSION_NAME, 'gpkgext_relations', undefined, RelatedTablesExtension.EXTENSION_RELATED_TABLES_DEFINITION, Extension.READ_WRITE) - .then(function() { - return this.extendedRelationDao.createTable(); - }.bind(this)); -}; - -/** - * Get or create the extension for the mapping table - * @param {string} mappingTableName user mapping table - * @return {Promise} - */ -RelatedTablesExtension.prototype.getOrCreateMappingTable = function(mappingTableName) { - return this.getOrCreateExtension() - .then(function() { - this.getOrCreate(RelatedTablesExtension.EXTENSION_NAME, mappingTableName, undefined, RelatedTablesExtension.EXTENSION_RELATED_TABLES_DEFINITION, Extension.READ_WRITE); - }.bind(this)); -} - -/** - * Set the contents in the UserRelatedTable - * @param {module:extension/relatedTables~UserRelatedTable} userRelatedTable user related table - */ -RelatedTablesExtension.prototype.setContents = function(userRelatedTable) { - var contents = this.geoPackage.getContentsDao().queryForId(userRelatedTable.table_name); - userRelatedTable.setContents(contents); -} - -/** - * Reads the user table and creates a UserCustomDao - * @param {string} tableName table name to reader - * @param {string[]} requiredColumns required columns - * @return {module:user/custom~UserCustomDao} - */ -RelatedTablesExtension.prototype.getUserDao = function(tableName, requiredColumns) { - return UserCustomDao.readTable(this.geoPackage, tableName, requiredColumns); -} - -/** - * Gets the UserMappingDao from the mapping table name - * @param {string|module:extension/relatedTables~ExtendedRelation} tableName user mapping table name or ExtendedRelation object - * @return {module:extension/relatedTables~UserMappingDao} - */ -RelatedTablesExtension.prototype.getMappingDao = function(tableName) { - if (tableName.mapping_table_name) { - tableName = tableName.mapping_table_name; - } - return new UserMappingDao(this.getUserDao(tableName, UserMappingTable.requiredColumns()), this.geoPackage); -} - -/** - * Gets all relationships in the GeoPackage with an optional base table name and an optional base id - * @param {string} [baseTableName] base table name - * @return {module:extension/relatedTables~ExtendedRelation[]} - */ -RelatedTablesExtension.prototype.getRelationships = function(baseTableName) { - if (this.extendedRelationDao.isTableExists()) { - if (baseTableName) { - return this.geoPackage.getExtendedRelationDao().getBaseTableRelations(baseTableName); - } - return this.extendedRelationDao.queryForAll(); - } - return []; -} - -/** - * Gets all relationships in the GeoPackage with an optional base table name and an optional base id - * @param {String} [baseTableName] base table name - * @param {String} [relatedTableName] related table name - * @param {String} [mappingTableName] mapping table name - * @return {Boolean} - */ -RelatedTablesExtension.prototype.hasRelations = function(baseTableName, relatedTableName, mappingTableName) { - var relations = []; - if (this.extendedRelationDao.isTableExists()) { - relations = this.extendedRelationDao.getRelations(baseTableName, relatedTableName, mappingTableName); - } - return relations; -}; - -RelatedTablesExtension.prototype.getRelatedRows = function(baseTableName, baseId) { - var relationships = this.getRelationships(baseTableName); - for (var i = 0; i < relationships.length; i++) { - var relation = relationships[i]; - var mappingRows = this.getMappingRowsForBase(relation.mapping_table_name, baseId); - relation.mappingRows = mappingRows; - var userDao; - // TODO do this for all known types - if (relation.relation_name === 'media') { - userDao = MediaDao.readTable(this.geoPackage, relation.related_table_name); - } else { - userDao = UserDao.readTable(this.geoPackage, relation.related_table_name); - } - for (var m = 0; m < mappingRows.length; m++) { - var mappingRow = mappingRows[m]; - mappingRow.row = userDao.queryForId(mappingRow.related_id); - } - } - return relationships; -} - -RelatedTablesExtension.RelationshipBuilder = function() { - return OptionBuilder([ - 'baseTableName', - 'relatedTableName', - 'userMappingTable', - 'mappingTableName', - 'relationName', - 'relationAuthor', - 'relationType', - 'relatedTable' - ]); -} -/** - * Convience object to build a Relationship object for querying and adding - * @typedef {Object} module:extension/relatedTables~Relationship - * @property {module:extension/relatedTables~RelationType} relationType type of relationship - * @property {string} baseTableName base table name - * @property {string} relatedTableName related table name - * @property {string} relationAuthor relationship author - * @property {string} mappingTableName mapping table name - * @property {module:extension/relatedTables~UserMappingTable} userMappingTable UserMappingTable - * @property {module:extension/relatedTables~UserRelatedTable} relatedTable UserRelatedTable - */ -RelatedTablesExtension.prototype.getRelationshipBuilder = function() { - return RelatedTablesExtension.RelationshipBuilder(); -} - -/** - * Adds a relationship to the GeoPackage - * @param {module:extension/relatedTables~Relationship|module:extension/relatedTables~ExtendedRelation} relationship relationship to add - * @return {Promise} - */ -RelatedTablesExtension.prototype.addRelationship = function(relationship) { - var extendedRelation = this.extendedRelationDao.createObject(); - var userMappingTable = relationship.userMappingTable; - if (relationship.hasOwnProperty('base_table_name')) { - extendedRelation = relationship; - userMappingTable = UserMappingTable.create(extendedRelation.mapping_table_name); - } else { - if (relationship.relationType) { - relationship.relationName = relationship.relationType.name; - } - if (relationship.relationAuthor) { - relationship.relationName = this.buildRelationName(relationship.relationAuthor, relationship.relationName); - } - if (relationship.mappingTableName) { - userMappingTable = UserMappingTable.create(relationship.mappingTableName); - } - - if (relationship.relatedTable) { - this.createRelatedTable(relationship.relatedTable); - relationship.relatedTableName = relationship.relatedTable.table_name; - relationship.relationName = relationship.relatedTable.relation_name; - } - - extendedRelation.base_table_name = relationship.baseTableName; - extendedRelation.base_primary_column = this.getPrimaryKeyColumnName(relationship.baseTableName); - extendedRelation.related_table_name = relationship.relatedTableName; - extendedRelation.related_primary_column = this.getPrimaryKeyColumnName(relationship.relatedTableName); - extendedRelation.mapping_table_name = userMappingTable.table_name; - extendedRelation.relation_name = relationship.relationName; - } - - if (!this.validateRelationship(extendedRelation.base_table_name, extendedRelation.related_table_name, extendedRelation.relation_name)) { - return Promise.resolve(false); - } - return this.createUserMappingTable(userMappingTable) - .then(function() { - var mappingTableRelations = this.extendedRelationDao.queryByMappingTableName(extendedRelation.mapping_table_name); - if (mappingTableRelations.length) { - return mappingTableRelations[0]; - } - this.extendedRelationDao.create(extendedRelation); - return extendedRelation; - }.bind(this)); -} - -/** - * Get the primary key column name from the specified table - * @param {string} tableName table name - * @return {string} - */ -RelatedTablesExtension.prototype.getPrimaryKeyColumnName = function(tableName) { - var reader = new UserTableReader(tableName); - var table = reader.readTable(this.geoPackage.getDatabase()); - return table.getPkColumn().name; -} - -/** - * Adds a features relationship between the base feature and related feature - * table. Creates a default user mapping table if needed. - * @param {module:extension/relatedTables~Relationship|module:extension/relatedTables~ExtendedRelation} relationship relationship to add - * @return {Promise} - */ -RelatedTablesExtension.prototype.addFeaturesRelationship = function(relationship) { - if (relationship.hasOwnProperty('relation_name')) { - relationship.relation_name = relationship.relation_name || RelationType.FEATURES.name; - } else { - relationship.relationType = RelationType.FEATURES; - } - return this.addRelationship(relationship); -} - -/** - * Adds a tiles relationship between the base table and related tile - * table. Creates a default user mapping table if needed. - * @param {module:extension/relatedTables~Relationship|module:extension/relatedTables~ExtendedRelation} relationship relationship to add - * @return {Promise} - */ -RelatedTablesExtension.prototype.addTilesRelationship = function(relationship) { - if (relationship.hasOwnProperty('relation_name')) { - relationship.relation_name = relationship.relation_name || RelationType.TILES.name; - } else { - relationship.relationType = RelationType.TILES; - } - return this.addRelationship(relationship); -} - -/** - * Adds an attributes relationship between the base table and related attribute - * table. Creates a default user mapping table if needed. - * @param {module:extension/relatedTables~Relationship|module:extension/relatedTables~ExtendedRelation} relationship relationship to add - * @return {Promise} - */ -RelatedTablesExtension.prototype.addAttributesRelationship = function(relationship) { - if (relationship.hasOwnProperty('relation_name')) { - relationship.relation_name = relationship.relation_name || RelationType.ATTRIBUTES.name; - } else { - relationship.relationType = RelationType.ATTRIBUTES; - } - return this.addRelationship(relationship); -} - -/** - * Adds a simple attributes relationship between the base table and user - * simple attributes related table. Creates a default user mapping table and - * the simple attributes table if needed. - * @param {module:extension/relatedTables~Relationship|module:extension/relatedTables~ExtendedRelation} relationship relationship to add - * @return {Promise} - */ -RelatedTablesExtension.prototype.addSimpleAttributesRelationship = function(relationship) { - if (relationship.hasOwnProperty('relation_name')) { - relationship.relation_name = relationship.relation_name || RelationType.SIMPLE_ATTRIBUTES.name; - } else { - relationship.relationType = RelationType.SIMPLE_ATTRIBUTES; - } - return this.addRelationship(relationship); -} - -/** - * Adds a media relationship between the base table and user media related - * table. Creates a default user mapping table and the media table if - * needed. - * @param {module:extension/relatedTables~Relationship|module:extension/relatedTables~ExtendedRelation} relationship relationship to add - * @return {Promise} - */ -RelatedTablesExtension.prototype.addMediaRelationship = function(relationship) { - if (relationship.hasOwnProperty('relation_name')) { - relationship.relation_name = relationship.relation_name || RelationType.MEDIA.name; - } else { - relationship.relationType = RelationType.MEDIA; - } - return this.addRelationship(relationship); -} - -/** - * Remove a specific relationship from the GeoPackage - * @param {module:extension/relatedTables~Relationship|module:extension/relatedTables~ExtendedRelation} relationship relationship to remove - * @return {Number} number of relationships removed - */ -RelatedTablesExtension.prototype.removeRelationship = function(relationship) { - // this is an ExtendedRelation - if (relationship.hasOwnProperty('base_table_name')) { - relationship.baseTableName = relationship.base_table_name; - relationship.relatedTableName = relationship.related_table_name; - relationship.relationName = relationship.relation_name; - relationship.userMappingTable = relationship.mapping_table_name; - } - - if (relationship.relationType) { - relationship.relationName = relationship.relationType.name; - } - if (relationship.relationAuthor) { - relationship.relationName = this.buildRelationName(relationship.relationAuthor, relationship.relationName); - } - - if (this.extendedRelationDao.isTableExists()) { - - var values = new ColumnValues(); - values.addColumn(ExtendedRelationDao.COLUMN_BASE_TABLE_NAME, relationship.baseTableName); - values.addColumn(ExtendedRelationDao.COLUMN_RELATED_TABLE_NAME, relationship.relatedTableName); - values.addColumn(ExtendedRelationDao.COLUMN_RELATION_NAME, relationship.relationName); - - var iterator = this.extendedRelationDao.queryForFieldValues(values); - - var tablesToDelete = []; - for (var extendedRelation of iterator) { - tablesToDelete.push(extendedRelation.mapping_table_name); - } - tablesToDelete.forEach(function(table) { - this.geoPackage.deleteTable(table); - }.bind(this)); - this.extensionsDao.deleteByExtensionAndTableName(RelatedTablesExtension.EXTENSION_NAME, relationship.userMappingTable); - return this.extendedRelationDao.delete(extendedRelation); - } - - return 0; -} - -/** - * Create a default user mapping table and extension row if either does not - * exist. When not created, there is no guarantee that an existing table has - * the same schema as the provided tabled. - * @param {string|module:extension/relatedTables~UserMappingTable} userMappingTableOrName user mapping table or name - * @return {Promise} - */ -RelatedTablesExtension.prototype.createUserMappingTable = function(userMappingTableOrName) { - var userMappingTable = userMappingTableOrName; - if (typeof userMappingTableOrName === 'string') { - userMappingTable = UserMappingTable.create(userMappingTableOrName); - } - return this.getOrCreateMappingTable(userMappingTable.table_name) - .then(function(){ - if (!this.geoPackage.isTable(userMappingTable.table_name)) { - return this.geoPackage.tableCreator.createUserTable(userMappingTable); - } - return true; - }.bind(this)); -} - -/** - * Create a user related table if it does not exist. When not created, there - * is no guarantee that an existing table has the same schema as the - * provided tabled. - * @param {module:extension/relatedTables~UserRelatedTable} relatedTable user related table - * @return {Boolean} true if the table now exists - */ -RelatedTablesExtension.prototype.createRelatedTable = function(relatedTable) { - if (!this.geoPackage.isTable(relatedTable.table_name)) { - this.geoPackage.tableCreator.createUserTable(relatedTable); - - var contents = new Contents(); - contents.table_name = relatedTable.table_name; - contents.data_type = relatedTable.data_type; - contents.identifier = relatedTable.table_name; - this.geoPackage.getContentsDao().create(contents); - var refreshed = this.geoPackage.getContentsDao().refresh(contents); - relatedTable.setContents(refreshed); - } - return true; -} - -/** - * Validate that the relation name is valid between the base and related tables - * @param {string} baseTableName base table name - * @param {string} relatedTableName related table name - * @param {string} relationName relation name - * @return {Boolean} - */ -RelatedTablesExtension.prototype.validateRelationship = function(baseTableName, relatedTableName, relationName) { - // Verify the base and related tables exist - if (!this.geoPackage.isTable(baseTableName)) { - console.log('Base relationship table does not exist: ' + baseTableName + ', Relation: ' + relationName); - return false; - } - if (!this.geoPackage.isTable(relatedTableName)) { - console.log('Related relationship table does not exist: ' + relatedTableName + ', Relation: ' + relationName); - return false; - } - // Verify spec defined relation types - var relationType = RelationType.fromName(relationName); - if (relationType) { - if (!this.geoPackage.isTableType(relationType.dataType, relatedTableName)) { - console.log('The related table must be a ' + relationType.dataType + ' table. Related Table: ' + relatedTableName + ', Type: ' + this.geoPackage.getTableType(relatedTableName)); - return false; - } - return true; - } - return true; -} - -/** - * Link related Ids - * @param {string} baseTableName base table name - * @param {Number} baseId base row id - * @param {string} relatedTableName related table name - * @param {Number} relatedId related row id - * @param {module:extension/relatedTables~RelationType} relationType relation type - * @return {Promise} - */ -RelatedTablesExtension.prototype.linkRelatedIds = function(baseTableName, baseId, relatedTableName, relatedId, relationType) { - var baseDao = UserDao.readTable(this.geoPackage, baseTableName); - var relatedDao = UserDao.readTable(this.geoPackage, relatedTableName); - - var baseRow = baseDao.queryForId(baseId); - var relatedRow = relatedDao.queryForId(relatedId); - - return baseDao.linkRelatedRow(baseRow, relatedRow, relationType); -} - -/** - * Get the related id mappings for the base id - * @param {string} mappingTableName mapping table name - * @param {Number} baseId base id - * @return {Number[]} ids of related items - */ -RelatedTablesExtension.prototype.getMappingsForBase = function(mappingTableName, baseId) { - var mappingDao = this.getMappingDao(mappingTableName); - var results = mappingDao.queryByBaseId(baseId); - var relatedIds = []; - for (var i = 0; i < results.length; i++) { - var row = mappingDao.getUserMappingRow(results[i]); - relatedIds.push(row.getRelatedId()); - } - return relatedIds; -} - -/** - * Get the related id mapping rows for the base id - * @param {string} mappingTableName mapping table name - * @param {Number} baseId base id - * @return {module:extension/relatedTables~UserMappingRow[]} user mapping rows - */ -RelatedTablesExtension.prototype.getMappingRowsForBase = function(mappingTableName, baseId) { - var mappingDao = this.getMappingDao(mappingTableName); - return mappingDao.queryByBaseId(baseId); -} - -/** - * Get the base id mappings for the base id - * @param {string} mappingTableName mapping table name - * @param {Number} relatedId related id - * @return {Number[]} ids of base items - */ -RelatedTablesExtension.prototype.getMappingsForRelated = function(mappingTableName, relatedId) { - var mappingDao = this.getMappingDao(mappingTableName); - var results = mappingDao.queryByRelatedId(relatedId); - var baseIds = []; - for (var i = 0; i < results.length; i++) { - var row = mappingDao.getUserMappingRow(results[i]); - baseIds.push(row.getBaseId()); - } - return baseIds; -} - -/** - * Returns a {module:extension/relatedTables~MediaDao} from the table specified - * @param {string|module:extension/relatedTables~MediaTable} tableName either a table name or a MediaTable - * @return {module:extension/relatedTables~MediaDao} - */ -RelatedTablesExtension.prototype.getMediaDao = function(tableName) { - var table; - if (tableName.TABLE_TYPE && tableName.TABLE_TYPE === 'media') { - table = tableName; - } else { - if (tableName.related_table_name) { - tableName = tableName.related_table_name; - } - var reader = new UserTableReader(tableName, MediaTable.requiredColumns()); - var userTable = reader.readTable(this.geoPackage.getDatabase()); - table = new MediaTable(userTable.table_name, userTable.columns, MediaTable.requiredColumns()); - table.setContents(this.geoPackage.getContentsDao().queryForId(table.table_name)); - } - - return new MediaDao(this.geoPackage, table); -} - -/** - * Returns a {module:extension/relatedTables~SimpleAttributesDao} from the table specified - * @param {string|module:extension/relatedTables~SimpleAttributesDao} tableName either a table name or a SimpleAttributesDao - * @return {module:extension/relatedTables~SimpleAttributesDao} - */ -RelatedTablesExtension.prototype.getSimpleAttributesDao = function(tableName) { - var table; - if (tableName.TABLE_TYPE && tableName.TABLE_TYPE === 'simple_attributes') { - table = tableName; - } else { - if (tableName.related_table_name) { - tableName = tableName.related_table_name; - } - var reader = new UserTableReader(tableName, SimpleAttributesTable.requiredColumns()); - var userTable = reader.readTable(this.geoPackage.getDatabase()); - table = new SimpleAttributesTable(userTable.table_name, userTable.columns, SimpleAttributesTable.requiredColumns()); - table.setContents(this.geoPackage.getContentsDao().queryForId(table.table_name)); - } - - return new SimpleAttributesDao(this.geoPackage, table); -} - -/** - * Builds the custom relation name with the author - * @param {string} author author - * @param {string} name name - * @return {string} - */ -RelatedTablesExtension.prototype.buildRelationName = function(author, name) { - return 'x-' + author + '_' + name; -} - -/** - * Remove all traces of the extension - */ -RelatedTablesExtension.prototype.removeExtension = function() { - if (this.extendedRelationDao.isTableExists()) { - var extendedRelations = this.extendedRelationDao.queryForAll(); - extendedRelations.forEach(function(relation) { - this.geoPackage.deleteTable(relation.mapping_table_name); - }.bind(this)); - this.geoPackage.deleteTable(ExtendedRelationDao.TABLE_NAME); - } - if (this.extensionsDao.isTableExists()) { - this.extensionsDao.deleteByExtension(RelatedTablesExtension.EXTENSION_NAME); - } -} - -/** - * Determine if the GeoPackage has the extension - * @param {string} [mappingTableName] mapping table name to check, if not specified, this checks for any mapping table name - * @return {Boolean} - */ -RelatedTablesExtension.prototype.has = function(mappingTableName) { - if (mappingTableName) { - return this.hasExtension(RelatedTablesExtension.EXTENSION_NAME, ExtendedRelationDao.TABLE_NAME) - && this.hasExtension(RelatedTablesExtension.EXTENSION_NAME, mappingTableName); - } - return this.hasExtension(RelatedTablesExtension.EXTENSION_NAME, ExtendedRelationDao.TABLE_NAME); -} - -RelatedTablesExtension.EXTENSION_NAME = 'related_tables'; -RelatedTablesExtension.EXTENSION_RELATED_TABLES_AUTHOR = 'gpkg'; -RelatedTablesExtension.EXTENSION_RELATED_TABLES_NAME_NO_AUTHOR = 'related_tables'; -RelatedTablesExtension.EXTENSION_RELATED_TABLES_DEFINITION = 'TBD'; - -module.exports = RelatedTablesExtension; - -},{"../.":25,"../../core/contents":8,"../../dao/columnValues":10,"../../features/columns":64,"../../optionBuilder":76,"../../user/custom/userCustomDao":102,"../../user/userDao":106,"../../user/userTableReader":109,"../baseExtension":20,"./extendedRelation":31,"./mediaDao":33,"./mediaTable":35,"./relationType":36,"./simpleAttributesDao":37,"./simpleAttributesTable":39,"./userMappingDao":40,"./userMappingTable":42,"util":343}],33:[function(require,module,exports){ -/** - * MediaDao module. - * @module extension/relatedTables - */ - -var MediaRow = require('./mediaRow') - , MediaTable = require('./mediaTable') - , Dao = require('../../dao/dao') - , UserDao = require('../../user/userDao') - , UserTableReader = require('../../user/userTableReader'); - -var util = require('util'); - -/** - * User Media DAO for reading user media data tables - * @class - * @extends {module:user/userDao~UserDao} - * @param {module:db/geoPackageConnection~GeoPackageConnection} connection connection - * @param {string} table table name - */ -var MediaDao = function(geoPackage, table) { - UserDao.call(this, geoPackage, table); - this.mediaTable = table; -} - -util.inherits(MediaDao, UserDao); - -/** - * Reads the table specified from the geopackage - * @param {module:geoPackage~GeoPackage} geoPackage geopackage object - * @param {string} tableName table name - * @param {string[]} requiredColumns required columns - * @return {module:user/userDao~UserDao} - */ -MediaDao.readTable = function(geoPackage, tableName) { - var reader = new UserTableReader(tableName); - var userTable = reader.readTable(geoPackage.getDatabase()); - return new MediaDao(geoPackage, userTable); -} - -/** - * Create a new media row - * @return {module:extension/relatedTables~MediaRow} - */ -MediaDao.prototype.newRow = function() { - return new MediaRow(this.mediaTable); -} - -/** - * Create a media row with the column types and values - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @return {module:extension/relatedTables~MediaRow} media row - */ -MediaDao.prototype.newRowWithColumnTypes = function (columnTypes, values) { - return new MediaRow(this.mediaTable, columnTypes, values); -}; - -/** - * Gets the media table - * @return {module:extension/relatedTables~MediaTable} - */ -MediaDao.prototype.getTable = function() { - return this.mediaTable; -} - -module.exports = MediaDao; - -},{"../../dao/dao":11,"../../user/userDao":106,"../../user/userTableReader":109,"./mediaRow":34,"./mediaTable":35,"util":343}],34:[function(require,module,exports){ -/** - * MediaRow module. - * @module extension/relatedTables - */ -var UserRow = require('../../user/userRow'); - -var util = require('util'); - -var ImageUtils = require('../../tiles/imageUtils'); - -/** - * User Media Row containing the values from a single result set row - * @class - * @extends {module:user/userRow~UserRow} - * @param {module:extension/relatedTables~MediaTable} mediaTable media table - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - */ -var MediaRow = function(mediaTable, columnTypes, values) { - UserRow.call(this, mediaTable, columnTypes, values); - this.mediaTable = mediaTable; -} - -util.inherits(MediaRow, UserRow); - -/** - * Gets the id column - * @return {module:user/userColumn~UserColumn} - */ -MediaRow.prototype.getIdColumn = function() { - return this.mediaTable.getIdColumn(); -} - -/** - * Gets the id - * @return {Number} - */ -MediaRow.prototype.getId = function() { - return this.getValueWithColumnName(this.getIdColumn().name); -} - -/** - * Get the data column - * @return {module:user/userColumn~UserColumn} - */ -MediaRow.prototype.getDataColumn = function() { - return this.mediaTable.getDataColumn(); -} - -/** - * Gets the data - * @return {Buffer} - */ -MediaRow.prototype.getData = function() { - return this.getValueWithColumnName(this.getDataColumn().name); -} - -/** - * Get the data image - * - * @return {Promise} - */ -MediaRow.prototype.getDataImage = function() { - return ImageUtils.getImage(this.getData(), this.getContentType()); -} -/** - * Get the scaled data image - * @param {Number} scale - * @return {Promise} - */ -MediaRow.prototype.getScaledDataImage = function(scale) { - return ImageUtils.getScaledImage(this.getData(), scale); -} - -/** - * Sets the data for the row - * @param {Buffer} data data - */ -MediaRow.prototype.setData = function(data) { - this.setValueWithColumnName(this.getDataColumn().name, data); -} - -/** - * Get the content type column - * @return {module:user/userColumn~UserColumn} - */ -MediaRow.prototype.getContentTypeColumn = function() { - return this.mediaTable.getContentTypeColumn(); -} - -/** - * Gets the content type - * @return {string} - */ -MediaRow.prototype.getContentType = function() { - return this.getValueWithColumnName(this.getContentTypeColumn().name); -} - -/** - * Sets the content type for the row - * @param {string} contentType contentType - */ -MediaRow.prototype.setContentType = function(contentType) { - this.setValueWithColumnName(this.getContentTypeColumn().name, contentType); -} - -module.exports = MediaRow; - -},{"../../tiles/imageUtils":89,"../../user/userRow":107,"util":343}],35:[function(require,module,exports){ -/** - * mediaTable module. - * @module extension/relatedTables - */ - -var UserTable = require('../../user/userTable') - , UserRelatedTable = require('./userRelatedTable') - , UserColumn = require('../../user/userColumn') - , DataType = require('../../db/dataTypes') - , RelationType = require('./relationType'); - -var util = require('util'); - -/** - * Media Requirements Class User-Defined Related Data Table - * @class - * @extends {module:extension/relatedTables~UserRelatedTable} - * @param {string} tableName table name - * @param {module:user/userColumn~UserColumn[]} columns media columns - * @param {string[]} requiredColumns required column names - */ -var MediaTable = function(tableName, columns, requiredColumns) { - UserRelatedTable.call(this, tableName, MediaTable.RELATION_TYPE.name, MediaTable.RELATION_TYPE.dataType, columns, requiredColumns); -} - -util.inherits(MediaTable, UserRelatedTable); - -/** - * Create a media table with a minimum required columns followed by the additional columns - * @param {string} tableName name of the table - * @param {module:user/userColumn~UserColumn[]} additionalColumns additional columns - * @return {module:extension/relatedTables~MediaTable} - */ -MediaTable.create = function(tableName, additionalColumns) { - var columns = MediaTable.createRequiredColumns(); - if (additionalColumns) { - columns = columns.concat(additionalColumns); - } - return new MediaTable(tableName, columns, MediaTable.requiredColumns()); -} - -/** - * Get the required columns - * @param {string} [idColumnName=id] id column name - * @return {string[]} - */ -MediaTable.requiredColumns = function(idColumnName) { - var requiredColumns = []; - requiredColumns.push(idColumnName || MediaTable.COLUMN_ID); - requiredColumns.push(MediaTable.COLUMN_DATA); - requiredColumns.push(MediaTable.COLUMN_CONTENT_TYPE); - return requiredColumns; -} - -/** - * Get the number of required columns - * @return {Number} - */ -MediaTable.numRequiredColumns = function(){ - return MediaTable.requiredColumns().length; -} - -/** - * Create the required columns - * @param {Number} [startingIndex=0] starting index of the required columns - * @param {string} [idColumnName=id] id column name - * @return {module:user/userColumn~UserColumn[]} - */ -MediaTable.createRequiredColumns = function(startingIndex, idColumnName) { - startingIndex = startingIndex || 0; - return [ - MediaTable.createIdColumn(startingIndex++, idColumnName || MediaTable.COLUMN_ID), - MediaTable.createDataColumn(startingIndex++), - MediaTable.createContentTypeColumn(startingIndex++) - ]; -} - -/** - * Create the primary key id column - * @param {Number} index index of the column - * @param {string} idColumnName name of the id column - * @return {module:user/userColumn~UserColumn} - */ -MediaTable.createIdColumn = function(index, idColumnName) { - return UserColumn.createPrimaryKeyColumnWithIndexAndName(index, idColumnName); -} - -/** - * Create the data column - * @param {Number} index index of the column - * @param {string} idColumnName name of the id column - * @return {module:user/userColumn~UserColumn} - */ -MediaTable.createDataColumn = function(index) { - return UserColumn.createColumnWithIndex(index, MediaTable.COLUMN_DATA, DataType.GPKGDataType.GPKG_DT_BLOB, true); -} - -/** - * Create the content type column - * @param {Number} index index of the column - * @param {string} idColumnName name of the id column - * @return {module:user/userColumn~UserColumn} - */ -MediaTable.createContentTypeColumn = function(index) { - return UserColumn.createColumnWithIndex(index, MediaTable.COLUMN_CONTENT_TYPE, DataType.GPKGDataType.GPKG_DT_TEXT, true); -} - -/** - * Get the primary key id column - * @return {module:user/userColumn~UserColumn} - */ -MediaTable.prototype.getIdColumn = function() { - return this.getPkColumn(); -} - -/** - * Get the data column - * @return {module:user/userColumn~UserColumn} - */ -MediaTable.prototype.getDataColumn = function() { - return this.getColumnWithColumnName(MediaTable.COLUMN_DATA); -} - -/** - * Get the content type column - * @return {module:user/userColumn~UserColumn} - */ -MediaTable.prototype.getContentTypeColumn = function() { - return this.getColumnWithColumnName(MediaTable.COLUMN_CONTENT_TYPE); -} - -MediaTable.RELATION_TYPE = RelationType.MEDIA; -MediaTable.COLUMN_ID = 'id'; -MediaTable.COLUMN_DATA = 'data'; -MediaTable.COLUMN_CONTENT_TYPE = 'content_type'; - -MediaTable.prototype.TABLE_TYPE = 'media'; - -module.exports = MediaTable; - -},{"../../db/dataTypes":14,"../../user/userColumn":105,"../../user/userTable":108,"./relationType":36,"./userRelatedTable":43,"util":343}],36:[function(require,module,exports){ -/** - * @module extension/relatedTables - */ - -var ContentsDao = require('../../core/contents').ContentsDao; - -/** - * Spec supported User-Defined Related Data Tables - * @class - */ -var RelationType = function() {} - -module.exports = RelationType; - -/** - * Link features with other features - * @type {Object} - */ -RelationType.FEATURES = { - name: 'features', - dataType: ContentsDao.GPKG_CDT_FEATURES_NAME -}; - -/** - * Relate sets of tabular text or numeric data - * @type {Object} - */ -RelationType.SIMPLE_ATTRIBUTES = { - name: 'simple_attributes', - dataType: ContentsDao.GPKG_CDT_ATTRIBUTES_NAME -}; - -/** - * Relate features or attributes to multimedia files such as pictures and videos - * @type {Object} - */ -RelationType.MEDIA = { - name: 'media', - dataType: ContentsDao.GPKG_CDT_ATTRIBUTES_NAME -}; - -/** - * Attribute type relation - * @type {Object} - */ -RelationType.ATTRIBUTES = { - name: 'attributes', - dataType: ContentsDao.GPKG_CDT_ATTRIBUTES_NAME -}; - -/** - * Tile type relation - * @type {Object} - */ -RelationType.TILES = { - name: 'tiles', - dataType: ContentsDao.GPKG_CDT_TILES_NAME -}; - -/** - * Get the relation type from the name - * @param {string} name name - * @return {module:extension/relatedTables~RelationType} - */ -RelationType.fromName = function(name) { - return RelationType[name.toUpperCase()]; -} - -},{"../../core/contents":8}],37:[function(require,module,exports){ -/** - * SimpleAttributesDao module. - * @module extension/relatedTables - */ - -var SimpleAttributesRow = require('./simpleAttributesRow') - , SimpleAttributesTable = require('./simpleAttributesTable') - , Dao = require('../../dao/dao') - , UserDao = require('../../user/userDao'); - -var util = require('util'); - -/** - * User Simple Attributes DAO for reading user simple attributes data tables - * @class - * @extends {module:user/userDao~UserDao} - * @param {module:db/geoPackageConnection~GeoPackageConnection} connection connection - * @param {string} table table name - */ -var SimpleAttributesDao = function(geoPackage, table) { - UserDao.call(this, geoPackage, table); - this.simpleAttributesTable = table; -} - -util.inherits(SimpleAttributesDao, UserDao); - -/** - * Create a new {module:extension/relatedTables~SimpleAttributesRow} - * @return {module:extension/relatedTables~SimpleAttributesRow} - */ -SimpleAttributesDao.prototype.newRow = function() { - return new SimpleAttributesRow(this.simpleAttributesTable); -} - -/** - * Create a new {module:extension/relatedTables~SimpleAttributesRow} with the column types and values - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @return {module:extension/relatedTables~SimpleAttributesRow} simple attributes row - */ -SimpleAttributesDao.prototype.newRowWithColumnTypes = function (columnTypes, values) { - return new SimpleAttributesRow(this.simpleAttributesTable, columnTypes, values); -}; - -/** - * Gets the {module:extension/relatedTables~SimpleAttributesTable} - * @return {module:extension/relatedTables~SimpleAttributesTable} - */ -SimpleAttributesDao.prototype.getTable = function() { - return this.simpleAttributesTable; -} - -/** - * Get the simple attributes rows from this table by ids - * @param {Number[]} ids array of ids - * @return {module:extension/relatedTables~SimpleAttributesRow[]} - */ -SimpleAttributesDao.prototype.getRows = function(ids) { - var simpleAttributesRows = []; - for (var i = 0; i < ids.length; i++) { - var row = this.queryForId(ids[i]); - if (row) { - simpleAttributesRows.push(row); - } - } - return simpleAttributesRows; -} - -module.exports = SimpleAttributesDao; - -},{"../../dao/dao":11,"../../user/userDao":106,"./simpleAttributesRow":38,"./simpleAttributesTable":39,"util":343}],38:[function(require,module,exports){ -/** - * SimpleAttributesRow module. - * @module extension/relatedTables - */ - -var UserRow = require('../../user/userRow'); - -var util = require('util'); - -/** - * User Simple Attributes Row containing the values from a single result set row - * @class - * @extends {module:user/userRow~UserRow} - * @param {module:extension/relatedTables~SimpleAttributesTable} simpleAttributesTable simple attributes table - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - */ -var SimpleAttributesRow = function(simpleAttributesTable, columnTypes, values) { - UserRow.call(this, simpleAttributesTable, columnTypes, values); - this.simpleAttributesTable = simpleAttributesTable; -} - -util.inherits(SimpleAttributesRow, UserRow); - -/** - * Gets the primary key id column - * @return {module:user/userColumn~UserColumn} - */ -SimpleAttributesRow.prototype.getIdColumn = function() { - return this.simpleAttributesTable.getIdColumn(); -} - -/** - * Gets the id - * @return {Number} - */ -SimpleAttributesRow.prototype.getId = function() { - return this.getValueWithColumnName(this.getIdColumn().name); -} - -module.exports = SimpleAttributesRow; - -},{"../../user/userRow":107,"util":343}],39:[function(require,module,exports){ -/** - * simpleAttributesTable module. - * @module extension/relatedTables - */ - -var UserTable = require('../../user/userTable') - , UserRelatedTable = require('./userRelatedTable') - , UserColumn = require('../../user/userColumn') - , DataTypes = require('../../db/dataTypes') - , RelationType = require('./relationType'); - -var util = require('util'); - -/** - * Simple Attributes Requirements Class User-Defined Related Data Table - * @class - * @extends {module:extension/relatedTables~UserRelatedTable} - * @param {string} tableName table name - * @param {module:user/userColumn~UserColumn[]} columns attribute columns - * @param {string[]} requiredColumns required column names - */ -var SimpleAttributesTable = function(tableName, columns, requiredColumns) { - UserRelatedTable.call(this, tableName, SimpleAttributesTable.RELATION_TYPE.name, SimpleAttributesTable.RELATION_TYPE.dataType, columns, requiredColumns); - this.validateColumns(); -} - -util.inherits(SimpleAttributesTable, UserRelatedTable); - -/** - * Create a simple attributes table with the columns - * @param {string} tableName name of the table - * @param {module:user/userColumn~UserColumn[]} additionalColumns additional columns - * @return {module:extension/relatedTables~SimpleAttributesTable} - */ -SimpleAttributesTable.create = function(tableName, additionalColumns) { - var tableColumns = SimpleAttributesTable.createRequiredColumns(0); - - if (additionalColumns) { - tableColumns = tableColumns.concat(additionalColumns); - } - - return new SimpleAttributesTable(tableName, tableColumns, SimpleAttributesTable.requiredColumns()); -} - -/** - * Get the required columns - * @param {string} [idColumnName=id] id column name - * @return {string[]} - */ -SimpleAttributesTable.requiredColumns = function(idColumnName) { - var requiredColumns = []; - requiredColumns.push(idColumnName || SimpleAttributesTable.COLUMN_ID); - return requiredColumns; -} - -/** - * Get the number of required columns - * @return {Number} - */ -SimpleAttributesTable.numRequiredColumns = function(){ - return SimpleAttributesTable.requiredColumns().length; -} - -/** - * Create the required columns - * @param {Number} [startingIndex=0] starting index of the required columns - * @param {string} [idColumnName=id] id column name - * @return {module:user/userColumn~UserColumn[]} - */ -SimpleAttributesTable.createRequiredColumns = function(startingIndex, idColumnName) { - startingIndex = startingIndex || 0; - return [SimpleAttributesTable.createIdColumn(startingIndex++, idColumnName || SimpleAttributesTable.COLUMN_ID)]; -} - -/** - * Create the primary key id column - * @param {Number} index index of the column - * @param {string} idColumnName name of the id column - * @return {module:user/userColumn~UserColumn} - */ -SimpleAttributesTable.createIdColumn = function(index, idColumnName) { - return UserColumn.createPrimaryKeyColumnWithIndexAndName(index, idColumnName); -} - -/** - * Validate that Simple Attributes columns to verify at least one non id - * column exists and that all columns are simple data types - */ -SimpleAttributesTable.prototype.validateColumns = function() { - var columns = this.columns; - if (columns.length < 2) { - throw new Error('Simple Attributes Tables require at least one non id column'); - } - - for (var i = 0; i < columns.length; i++) { - var column = columns[i]; - if (!SimpleAttributesTable.isSimple(column)) { - throw new Error('Simple Attributes Tables only support simple data types. Column: ' + column.name + ', Non Simple Data Type: ' + column.dataType); - } - } -} - -/** - * Get the column index of the id column - * @return {Number} - */ -SimpleAttributesTable.prototype.getIdColumnIndex = function() { - return this.pkIndex; -} - -/** - * Get the primary key id column - * @return {module:user/userColumn~UserColumn} - */ -SimpleAttributesTable.prototype.getIdColumn = function() { - return this.getPkColumn(); -} - -/** - * Determine if the column is a simple column - * @param {module:user/userColumn~UserColumn} column column to check - * @return {Boolean} - */ -SimpleAttributesTable.isSimple = function(column) { - return column.notNull && SimpleAttributesTable.isSimpleDataType(column.dataType); -} - -/** - * Determine if the data type is a simple type: TEXT, INTEGER, or REAL - * @param {module:db/dataTypes~GPKGDataType} - * @return {Boolean} - */ -SimpleAttributesTable.isSimpleDataType = function(dataType) { - return dataType !== DataTypes.GPKGDataType.GPKG_DT_BLOB && dataType !== DataTypes.GPKGDataType.GPKG_DT_GEOMETRY; -} - -SimpleAttributesTable.RELATION_TYPE = RelationType.SIMPLE_ATTRIBUTES; -SimpleAttributesTable.COLUMN_ID = 'id'; - -SimpleAttributesTable.prototype.TABLE_TYPE = 'simple_attributes'; - -module.exports = SimpleAttributesTable; - -},{"../../db/dataTypes":14,"../../user/userColumn":105,"../../user/userTable":108,"./relationType":36,"./userRelatedTable":43,"util":343}],40:[function(require,module,exports){ -/** - * @module extension/relatedTables - */ - -var UserMappingRow = require('./userMappingRow') - , UserMappingTable = require('./userMappingTable') - , UserCustomDao = require('../../user/custom/userCustomDao') - , ColumnValues = require('../../dao/columnValues'); - -var util = require('util'); - -/** - * User Mapping DAO for reading user mapping data tables - * @class - * @extends {module:user/custom/userCustomDao~UserCustomDao} - * @param {string} table table name - * @param {module:geoPackage~GeoPackage} geoPackage geopackage object - */ -var UserMappingDao = function(userCustomDao, geoPackage) { - UserCustomDao.call(this, geoPackage, this.createMappingTable(userCustomDao)); -} - -util.inherits(UserMappingDao, UserCustomDao); - -/** - * Create a new {module:user/custom~UserCustomTable} - * @param {module:user/custom~UserCustomDao} userCustomDao - * @return {module:user/custom~UserCustomTable} userCustomTable user custom table - */ -UserMappingDao.prototype.createMappingTable = function(userCustomDao) { - return new UserMappingTable(userCustomDao.table.table_name, userCustomDao.table.columns); -} - -/** - * Create a new {module:extension/relatedTables~UserMappingRow} - * @return {module:extension/relatedTables~UserMappingRow} - */ -UserMappingDao.prototype.newRow = function() { - return new UserMappingRow(this.table); -} - -/** - * Gets the {module:extension/relatedTables~UserMappingTable} - * @return {module:extension/relatedTables~UserMappingTable} - */ -UserMappingDao.prototype.getTable = function() { - return this.table; -} - -/** - * Create a user mapping row - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @return {module:extension/relatedTables~UserMappingRow} user mapping row - */ -UserMappingDao.prototype.newRowWithColumnTypes = function (columnTypes, values) { - return new UserMappingRow(this.table, columnTypes, values); -}; - -/** - * Gets the user mapping row from the result - * @param {Object} result db result - * @return {module:extension/relatedTables~UserMappingRow} user mapping row - */ -UserMappingDao.prototype.getUserMappingRow = function(result) { - return this.getRow(result); -} - -/** - * Query by base id - * @param {Number} baseId base id - * @return {Object[]} - */ -UserMappingDao.prototype.queryByBaseId = function(baseId) { - if (baseId.getBaseId) { - baseId = baseId.getBaseId(); - } - return this.queryForAllEq(UserMappingTable.COLUMN_BASE_ID, baseId); -} - -/** - * Query by related id - * @param {Number} relatedId related id - * @return {Object[]} - */ -UserMappingDao.prototype.queryByRelatedId = function(relatedId) { - if (relatedId.getRelatedId) { - relatedId = relatedId.getRelatedId(); - } - return this.queryForAllEq(UserMappingTable.COLUMN_RELATED_ID, relatedId); -} - -/** - * Query by base id and related id - * @param {Number} baseId base id - * @param {Number} relatedId related id - * @return {Object[]} - */ -UserMappingDao.prototype.queryByIds = function(baseId, relatedId) { - if (baseId.getBaseId) { - relatedId = baseId.getRelatedId(); - baseId = baseId.getBaseId(); - } - - var values = new ColumnValues(); - values.addColumn(UserMappingTable.COLUMN_BASE_ID, baseId); - values.addColumn(UserMappingTable.COLUMN_RELATED_ID, relatedId); - - return this.queryForFieldValues(values); -} - -/** - * The unique related ids - * @return {Number[]} - */ -UserMappingDao.prototype.uniqueRelatedIds = function() { - var query = 'SELECT DISTINCT '; - query += UserMappingTable.COLUMN_RELATED_ID; - query += ' FROM '; - query += "'"+this.gpkgTableName+"'"; - return this.connection.all(query); -} - -/** - * Count user mapping rows by base id and related id - * @param {Number} baseId base id - * @param {Number} relatedId related id - * @return {Number} - */ -UserMappingDao.prototype.countByIds = function(baseId, relatedId) { - if (baseId.getBaseId) { - relatedId = baseId.getRelatedId(); - baseId = baseId.getBaseId(); - } - - var values = new ColumnValues(); - values.addColumn(UserMappingTable.COLUMN_BASE_ID, baseId); - values.addColumn(UserMappingTable.COLUMN_RELATED_ID, relatedId); - - return this.count(values); -} - -/** - * Delete by base id - * @param {Number} baseId base id - * @return {Number} number of deleted rows - */ -UserMappingDao.prototype.deleteByBaseId = function(baseId) { - if (baseId.getBaseId) { - baseId = baseId.getBaseId(); - } - - var where = ''; - where += this.buildWhereWithFieldAndValue(UserMappingTable.COLUMN_BASE_ID, baseId); - var whereArgs = this.buildWhereArgs([baseId]); - - return this.deleteWhere(where, whereArgs); -}; - -/** - * Delete by related id - * @param {Number} relatedId related id - * @return {Number} number of deleted rows - */ -UserMappingDao.prototype.deleteByRelatedId = function(relatedId) { - if (relatedId.getRelatedId) { - relatedId = relatedId.getRelatedId(); - } - - var where = ''; - where += this.buildWhereWithFieldAndValue(UserMappingTable.COLUMN_RELATED_ID, relatedId); - var whereArgs = this.buildWhereArgs([relatedId]); - - return this.deleteWhere(where, whereArgs); -}; - -/** - * Delete by base id and related id - * @param {Number} baseId base id - * @param {Number} relatedId related id - * @return {Number} number of deleted rows - */ -UserMappingDao.prototype.deleteByIds = function(baseId, relatedId) { - if (baseId.getBaseId) { - relatedId = baseId.getRelatedId(); - baseId = baseId.getBaseId(); - } - - var where = ''; - where += this.buildWhereWithFieldAndValue(UserMappingTable.COLUMN_BASE_ID, baseId); - where += ' and '; - where += this.buildWhereWithFieldAndValue(UserMappingTable.COLUMN_RELATED_ID, relatedId); - var whereArgs = this.buildWhereArgs([baseId, relatedId]); - - return this.deleteWhere(where, whereArgs); -} - -module.exports = UserMappingDao; - -},{"../../dao/columnValues":10,"../../user/custom/userCustomDao":102,"./userMappingRow":41,"./userMappingTable":42,"util":343}],41:[function(require,module,exports){ -/** - * UserMappingRow module. - * @module extension/relatedTables - */ - -var UserRow = require('../../user/userRow'); - -var util = require('util'); - -/** - * User Mapping Row containing the values from a single result set row - * @class - * @extends {module:user/userRow~UserRow} - * @param {module:extension/relatedTables~UserMappingTable} userMappingTable user mapping table - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - */ -var UserMappingRow = function(userMappingTable, columnTypes, values) { - UserRow.call(this, userMappingTable, columnTypes, values); -} - -util.inherits(UserMappingRow, UserRow); - -/** - * Get the base id column - * @return {module:user/userColumn~UserColumn} - */ -UserMappingRow.prototype.getBaseIdColumn = function() { - return this.table.getBaseIdColumn(); -} - -/** - * Gets the base id - * @return {Number} - */ -UserMappingRow.prototype.getBaseId = function() { - return this.getValueWithColumnName(this.getBaseIdColumn().name); -} - -/** - * Sets the base id - * @param {Number} baseId base id - */ -UserMappingRow.prototype.setBaseId = function(baseId) { - this.setValueWithColumnName(this.getBaseIdColumn().name, baseId); -} - -/** - * Get the related id column - * @return {module:user/userColumn~UserColumn} - */ -UserMappingRow.prototype.getRelatedIdColumn = function() { - return this.table.getRelatedIdColumn(); -} - -/** - * Gets the related id - * @return {Number} - */ -UserMappingRow.prototype.getRelatedId = function() { - return this.getValueWithColumnName(this.getRelatedIdColumn().name); -} - -/** - * Sets the related id - * @param {Number} relatedId related id - */ -UserMappingRow.prototype.setRelatedId = function(relatedId) { - this.setValueWithColumnName(this.getRelatedIdColumn().name, relatedId); -} - -module.exports = UserMappingRow; - -},{"../../user/userRow":107,"util":343}],42:[function(require,module,exports){ -/** - * userMappingTable module. - * @module extension/relatedTables - */ - -var UserTable = require('../../user/userTable') - , UserCustomColumn = require('../../user/custom/userCustomColumn') - , DataTypes = require('../../db/dataTypes'); - -var util = require('util'); - -/** - * Contains user mapping table factory and utility methods - * @class - * @extends {module:user/userTable~UserTable} - * @param {string} tableName table name - * @param {module:user/userColumn~UserColumn[]} columns user mapping columns - */ -var UserMappingTable = function(tableName, columns) { - UserTable.call(this, tableName, columns); -} - -util.inherits(UserMappingTable, UserTable); - -/** - * Creates a user mapping table with the minimum required columns followed by the additional columns - * @param {string} tableName name of the table - * @param {module:user/userColumn~UserColumn[]} additionalColumns additional columns - * @return {module:extension/relatedTables~UserMappingTable} - */ -UserMappingTable.create = function(tableName, columns) { - var allColumns = UserMappingTable.createRequiredColumns(0); - if (columns) { - allColumns = allColumns.concat(columns); - } - return new UserMappingTable(tableName, allColumns); -} - -/** - * Get the number of required columns - * @return {Number} - */ -UserMappingTable.numRequiredColumns = function() { - return UserMappingTable.createRequiredColumns(0).length; -} - -/** - * Create the required columns - * @param {Number} [startingIndex=0] starting index of the required columns - * @return {module:user/userColumn~UserColumn[]} - */ -UserMappingTable.createRequiredColumns = function(startingIndex) { - startingIndex = startingIndex || 0; - return [ - UserMappingTable.createBaseIdColumn(startingIndex++), - UserMappingTable.createRelatedIdColumn(startingIndex) - ]; -} - -/** - * Create the base id column - * @param {Number} index index of the column - * @return {module:user/userColumn~UserColumn} - */ -UserMappingTable.createBaseIdColumn = function(index) { - var baseIdColumn = UserCustomColumn.createColumn(index, UserMappingTable.COLUMN_BASE_ID, DataTypes.GPKGDataType.GPKG_DT_INTEGER, undefined, true); - return baseIdColumn; -} - -/** - * Create the related id column - * @param {Number} index index of the column - * @return {module:user/userColumn~UserColumn} - */ -UserMappingTable.createRelatedIdColumn = function(index) { - return UserCustomColumn.createColumn(index, UserMappingTable.COLUMN_RELATED_ID, DataTypes.GPKGDataType.GPKG_DT_INTEGER, undefined, true); -} - -/** - * Get the base id column - * @return {module:user/userColumn~UserColumn} - */ -UserMappingTable.prototype.getBaseIdColumn = function() { - return this.getColumnWithColumnName(UserMappingTable.COLUMN_BASE_ID); -} - -/** - * Get the related id column - * @return {module:user/userColumn~UserColumn} - */ -UserMappingTable.prototype.getRelatedIdColumn = function() { - return this.getColumnWithColumnName(UserMappingTable.COLUMN_RELATED_ID); -} - -/** - * Get the required columns - * @return {string[]} - */ -UserMappingTable.requiredColumns = function() { - return [UserMappingTable.COLUMN_BASE_ID, UserMappingTable.COLUMN_RELATED_ID]; -} - -UserMappingTable.COLUMN_BASE_ID = 'base_id'; -UserMappingTable.COLUMN_RELATED_ID = 'related_id'; - -module.exports = UserMappingTable; - -},{"../../db/dataTypes":14,"../../user/custom/userCustomColumn":101,"../../user/userTable":108,"util":343}],43:[function(require,module,exports){ -/** - * userRelatedTable module. - * @module extension/relatedTables - */ - -var UserTable = require('../../user/userTable') - , UserColumn = require('../../user/userColumn') - , DataTypes = require('../../db/dataTypes'); - -var util = require('util'); - -/** - * User Defined Related Table - * @param {string} tableName table name - * @param {array} columns attribute columns - */ -/** - * User Defined Related Table - * @param {string} tableName table name - * @param {string} relationName relation name - * @param {string} dataType Contents data type - * @param {module:user/userColumn~UserColumn} columns columns - * @param {string[]} requiredColumns required columns - * @return {module:extension/relatedTables~UserRelatedTable} - */ -var UserRelatedTable = function(tableName, relationName, dataType, columns, requiredColumns) { - UserTable.call(this, tableName, columns, requiredColumns); - this.relation_name = relationName; - this.data_type = dataType; -} - -util.inherits(UserRelatedTable, UserTable); - -/** - * Sets the contents - * @param {module:core/contents~Contents} contents contents - * @throw Error if the contents data type does not match this data type - */ -UserRelatedTable.prototype.setContents = function(contents) { - this.contents = contents; - - // verify the contents have a relation name data type - if (!contents.data_type || contents.data_type !== this.data_type) { - throw new Error('The contents of this related table must have a data type of ' + this.data_type); - } -} - -module.exports = UserRelatedTable; - -},{"../../db/dataTypes":14,"../../user/userColumn":105,"../../user/userTable":108,"util":343}],44:[function(require,module,exports){ -/** - * RTreeIndexDao module. - * @module RTreeIndexDao - * @see module:dao/dao - */ - -var Dao = require('../../dao/dao') - , BaseExtension = require('../baseExtension') - , Extension = require('../.').Extension - , EnvelopeBuilder = require('../../geom/envelopeBuilder') - , GeometryData = require('../../geom/geometryData'); - -var util = require('util'); - -var RTreeIndex = function(geoPackage, featureDao) { - BaseExtension.call(this, geoPackage); - - this.extensionName = Extension.buildExtensionName(RTreeIndexDao.EXTENSION_RTREE_INDEX_AUTHOR, RTreeIndexDao.EXTENSION_RTREE_INDEX_NAME_NO_AUTHOR); - - this.extensionDefinition = RTreeIndexDao.EXTENSION_RTREE_INDEX_DEFINITION; - - this.tableName = featureDao.table_name; - this.primaryKeyColumn = featureDao.idColumns[0]; - this.columnName = featureDao.getGeometryColumnName(); - - this.rtreeIndexDao = new RTreeIndexDao(geoPackage, featureDao); - this.extensionExists = this.hasExtension(this.extensionName, this.tableName, this.columnName); -} - -util.inherits(RTreeIndex, BaseExtension); - -RTreeIndex.prototype.getRTreeIndexExtension = function () { - return this.getExtension(this.extensionName, this.tableName, this.columnName); -}; - -RTreeIndex.prototype.getOrCreateExtension = function() { - return this.getOrCreate(this.extensionName, this.tableName, this.columnName, this.extensionDefinition, Extension.WRITE_ONLY); -}; - -RTreeIndex.prototype.create = function() { - if (this.extensionExists) { - return Promise.resolve(this.getRTreeIndexExtension()); - } - - return this.getOrCreate(this.extensionName, this.tableName, this.columnName, RTreeIndexDao.EXTENSION_RTREE_INDEX_DEFINITION, Extension.WRITE_ONLY) - .then(function() { - this.createAllFunctions(); - this.createRTreeIndex(); - this.loadRTreeIndex(); - this.createAllTriggers(); - return this.getRTreeIndexExtension(); - }.bind(this)); -} - -RTreeIndex.prototype.createAllTriggers = function() { - var insertTrigger = - 'CREATE TRIGGER rtree_'+this.tableName+'_'+this.columnName+'_insert AFTER INSERT ON '+this.tableName+ - ' WHEN (new.'+this.columnName+' NOT NULL AND NOT ST_IsEmpty(NEW.'+this.columnName+')) '+ - 'BEGIN '+ - ' INSERT OR REPLACE INTO rtree_'+this.tableName+'_'+this.columnName+' VALUES ('+ - ' NEW.'+this.primaryKeyColumn+','+ - ' ST_MinX(NEW.'+this.columnName+'), ST_MaxX(NEW.'+this.columnName+'), '+ - ' ST_MinY(NEW.'+this.columnName+'), ST_MaxY(NEW.'+this.columnName+') '+ - ' ); '+ - 'END;'; - - var update1Trigger = - 'CREATE TRIGGER rtree_'+this.tableName+'_'+this.columnName+'_update1 AFTER UPDATE OF '+this.columnName+' ON '+this.tableName+ - ' WHEN OLD.'+this.primaryKeyColumn+' = NEW.'+this.primaryKeyColumn+' AND '+ - ' (NEW.'+this.columnName+' NOTNULL AND NOT ST_IsEmpty(NEW.'+this.columnName+')) '+ - 'BEGIN '+ - ' INSERT OR REPLACE INTO rtree_'+this.tableName+'_'+this.columnName+' VALUES ('+ - ' NEW.'+this.primaryKeyColumn+','+ - ' ST_MinX(NEW.'+this.columnName+'), ST_MaxX(NEW.'+this.columnName+'), '+ - ' ST_MinY(NEW.'+this.columnName+'), ST_MaxY(NEW.'+this.columnName+') '+ - ' ); '+ - 'END;'; - - var update2Trigger = - 'CREATE TRIGGER rtree_'+this.tableName+'_'+this.columnName+'_update2 AFTER UPDATE OF '+this.columnName+' ON '+this.tableName+ - ' WHEN OLD.'+this.primaryKeyColumn+' = NEW.'+this.primaryKeyColumn+' AND '+ - ' (NEW.'+this.columnName+' ISNULL OR ST_IsEmpty(NEW.'+this.columnName+')) '+ - 'BEGIN '+ - ' DELETE FROM rtree_'+this.tableName+'_'+this.columnName+' WHERE id = OLD.'+this.primaryKeyColumn+'; '+ - 'END;'; - - var update3Trigger = - 'CREATE TRIGGER rtree_'+this.tableName+'_'+this.columnName+'_update3 AFTER UPDATE OF '+this.columnName+' ON '+this.tableName+ - ' WHEN OLD.'+this.primaryKeyColumn+' != NEW.'+this.primaryKeyColumn+' AND '+ - ' (NEW.'+this.columnName+' NOTNULL AND NOT ST_IsEmpty(NEW.'+this.columnName+')) '+ - 'BEGIN '+ - ' DELETE FROM rtree_'+this.tableName+'_'+this.columnName+' WHERE id = OLD.'+this.primaryKeyColumn+'; '+ - ' INSERT OR REPLACE INTO rtree_'+this.tableName+'_'+this.columnName+' VALUES ('+ - ' NEW.'+this.primaryKeyColumn+', '+ - ' ST_MinX(NEW.'+this.columnName+'), ST_MaxX(NEW.'+this.columnName+'), '+ - ' ST_MinY(NEW.'+this.columnName+'), ST_MaxY(NEW.'+this.columnName+')'+ - ' ); '+ - 'END;'; - - var update4Trigger = - 'CREATE TRIGGER rtree_'+this.tableName+'_'+this.columnName+'_update4 AFTER UPDATE ON '+this.tableName+ - ' WHEN OLD.'+this.primaryKeyColumn+' != NEW.'+this.primaryKeyColumn+' AND '+ - ' (NEW.'+this.columnName+' ISNULL OR ST_IsEmpty(NEW.'+this.columnName+')) '+ - 'BEGIN '+ - ' DELETE FROM rtree_'+this.tableName+'_'+this.columnName+' WHERE id IN (OLD.'+this.primaryKeyColumn+', NEW.'+this.primaryKeyColumn+'); '+ - 'END;'; - - var deleteTrigger = - 'CREATE TRIGGER rtree_'+this.tableName+'_'+this.columnName+'_delete AFTER DELETE ON '+this.tableName+ - ' WHEN old.'+this.columnName+' NOT NULL '+ - 'BEGIN'+ - ' DELETE FROM rtree_'+this.tableName+'_'+this.columnName+' WHERE id = OLD.'+this.primaryKeyColumn+'; '+ - 'END;'; - - this.connection.run(insertTrigger); - this.connection.run(update1Trigger); - this.connection.run(update2Trigger); - this.connection.run(update3Trigger); - this.connection.run(update4Trigger); - this.connection.run(deleteTrigger); -} - -RTreeIndex.prototype.loadRTreeIndex = function() { - this.connection.run('INSERT OR REPLACE INTO rtree_'+this.tableName+'_'+this.columnName+' SELECT '+this.primaryKeyColumn+', st_minx('+this.columnName+'), st_maxx('+this.columnName+'), st_miny('+this.columnName+'), st_maxy('+this.columnName+') FROM '+this.tableName); -} - -RTreeIndex.prototype.createRTreeIndex = function() { - this.connection.run('CREATE VIRTUAL TABLE rtree_'+this.tableName+'_'+this.columnName+' USING rtree(id, minx, maxx, miny, maxy)'); -} - -RTreeIndex.prototype.createAllFunctions = function() { - this.createMinXFunction(); - this.createMaxXFunction(); - this.createMinYFunction(); - this.createMaxYFunction(); - this.createIsEmptyFunction(); -} - -RTreeIndex.prototype.createMinXFunction = function() { - this.connection.registerFunction('ST_MinX', function(buffer) { - var geom = new GeometryData(buffer); - var envelope = geom.envelope; - if (!envelope) { - envelope = EnvelopeBuilder.buildEnvelopeWithGeometry(geom.geometry); - } - return envelope.minX; - }); -} - -RTreeIndex.prototype.createMinYFunction = function() { - this.connection.registerFunction('ST_MinY', function(buffer) { - var geom = new GeometryData(buffer); - var envelope = geom.envelope; - if (!envelope) { - envelope = EnvelopeBuilder.buildEnvelopeWithGeometry(geom.geometry); - } - return envelope.minY; - }); -} - -RTreeIndex.prototype.createMaxXFunction = function() { - this.connection.registerFunction('ST_MaxX', function(buffer) { - var geom = new GeometryData(buffer); - var envelope = geom.envelope; - if (!envelope) { - envelope = EnvelopeBuilder.buildEnvelopeWithGeometry(geom.geometry); - } - return envelope.maxX; - }); -} - -RTreeIndex.prototype.createMaxYFunction = function() { - this.connection.registerFunction('ST_MaxY', function(buffer) { - var geom = new GeometryData(buffer); - var envelope = geom.envelope; - if (!envelope) { - envelope = EnvelopeBuilder.buildEnvelopeWithGeometry(geom.geometry); - } - return envelope.maxY; - }); -} - -RTreeIndex.prototype.createIsEmptyFunction = function() { - this.connection.registerFunction('ST_IsEmpty', function(buffer) { - var geom = new GeometryData(buffer); - return !geom || geom.empty || !geom.geometry; - }); -} - -/** - * RTree Index Data Access Object - * @class - * @extends {module:dao/dao~Dao} - */ -var RTreeIndexDao = function(geoPackage, featureDao) { - Dao.call(this, geoPackage); - this.featureDao = featureDao; - -}; - -util.inherits(RTreeIndexDao, Dao); - -/** - * Generate query components - * @param envelope - * @returns {{whereArgs: Array, where: string, join: string, tableNameArr: string[]}} - * @private - */ -RTreeIndexDao.prototype._generateGeometryEnvelopeQuery = function(envelope) { - var tableName = this.featureDao.gpkgTableName; - - var where = ''; - var minXLessThanMaxX = envelope.minX < envelope.maxX; - if (minXLessThanMaxX) { - where += this.buildWhereWithFieldAndValue('minx', envelope.maxX, '<='); - where += ' and '; - where += this.buildWhereWithFieldAndValue('maxx', envelope.minX, '>='); - } else { - where += '('; - where += this.buildWhereWithFieldAndValue('minx', envelope.maxX, '<='); - where += ' or '; - where += this.buildWhereWithFieldAndValue('maxx', envelope.minX, '>='); - where += ' or '; - where += this.buildWhereWithFieldAndValue('minx', envelope.minX, '>='); - where += ' or '; - where += this.buildWhereWithFieldAndValue('maxx', envelope.maxX, '<='); - where += ')'; - } - - where += ' and '; - where += this.buildWhereWithFieldAndValue('miny', envelope.maxY, '<='); - where += ' and '; - where += this.buildWhereWithFieldAndValue('maxy', envelope.minY, '>='); - - var whereArgs = [] - whereArgs.push(envelope.maxX, envelope.minX); - if (!minXLessThanMaxX) { - whereArgs.push(envelope.minX, envelope.maxX); - } - whereArgs.push(envelope.maxY, envelope.minY); - - return { - join: 'inner join ' + tableName + ' on ' + tableName + '.' + this.featureDao.idColumns[0] + ' = ' + this.gpkgTableName+'.id', - where, - whereArgs, - tableNameArr: [tableName + '.*'] - }; -}; - -RTreeIndexDao.prototype.queryWithGeometryEnvelope = function(envelope) { - var result = this._generateGeometryEnvelopeQuery(envelope) - return this.queryJoinWhereWithArgs(result.join, result.where, result.whereArgs, result.tableNameArr); -}; - -RTreeIndexDao.prototype.countWithGeometryEnvelope = function(envelope) { - var result = this._generateGeometryEnvelopeQuery(envelope) - return this.countJoinWhereWithArgs(result.join, result.where, result.whereArgs, result.tableNameArr); -}; - -RTreeIndexDao.TABLE_NAME = "rtree"; -RTreeIndexDao.COLUMN_TABLE_NAME = RTreeIndexDao.TABLE_NAME + ".table_name"; -RTreeIndexDao.COLUMN_GEOM_ID = RTreeIndexDao.TABLE_NAME + ".geom_id"; -RTreeIndexDao.COLUMN_MIN_X = RTreeIndexDao.TABLE_NAME + ".minx"; -RTreeIndexDao.COLUMN_MAX_X = RTreeIndexDao.TABLE_NAME + ".maxx"; -RTreeIndexDao.COLUMN_MIN_Y = RTreeIndexDao.TABLE_NAME + ".miny"; -RTreeIndexDao.COLUMN_MAX_Y = RTreeIndexDao.TABLE_NAME + ".maxy"; -RTreeIndexDao.COLUMN_MIN_Z = RTreeIndexDao.TABLE_NAME + ".minz"; -RTreeIndexDao.COLUMN_MAX_Z = RTreeIndexDao.TABLE_NAME + ".maxz"; -RTreeIndexDao.COLUMN_MIN_M = RTreeIndexDao.TABLE_NAME + ".minm"; -RTreeIndexDao.COLUMN_MAX_M = RTreeIndexDao.TABLE_NAME + ".maxm"; - -RTreeIndexDao.EXTENSION_NAME = 'gpkg_rtree_index'; -RTreeIndexDao.EXTENSION_RTREE_INDEX_AUTHOR = 'gpkg'; -RTreeIndexDao.EXTENSION_RTREE_INDEX_NAME_NO_AUTHOR = 'rtree_index'; -RTreeIndexDao.EXTENSION_RTREE_INDEX_DEFINITION = 'http://www.geopackage.org/spec/#extension_rtree'; - -RTreeIndexDao.prototype.gpkgTableName = RTreeIndexDao.TABLE_NAME; - -module.exports.RTreeIndexDao = RTreeIndexDao; -module.exports.RTreeIndex = RTreeIndex; - -},{"../.":25,"../../dao/dao":11,"../../geom/envelopeBuilder":72,"../../geom/geometryData":73,"../baseExtension":20,"util":343}],45:[function(require,module,exports){ -/** - * SchemaExtension module. - * @module SchemaExtension - * @see module:extension/BaseExtension - */ - -var BaseExtension = require('../baseExtension') - , Extension = require('../.').Extension; - -var util = require('util'); - -var SchemaExtension = function(geoPackage) { - BaseExtension.call(this, geoPackage); - - this.extensionName = SchemaExtension.EXTENSION_NAME; - - this.extensionDefinition = SchemaExtension.EXTENSION_SCHEMA_DEFINITION; -} - -util.inherits(SchemaExtension, BaseExtension); - -SchemaExtension.prototype.getOrCreateExtension = function() { - return this.getOrCreate(this.extensionName, null, null, this.extensionDefinition, Extension.READ_WRITE); -}; - -SchemaExtension.EXTENSION_NAME = 'gpkg_schema'; -SchemaExtension.EXTENSION_SCHEMA_AUTHOR = 'gpkg'; -SchemaExtension.EXTENSION_SCHEMA_NAME_NO_AUTHOR = 'schema'; -SchemaExtension.EXTENSION_SCHEMA_DEFINITION = 'http://www.geopackage.org/spec/#extension_schema'; - -module.exports.SchemaExtension = SchemaExtension; - -},{"../.":25,"../baseExtension":20,"util":343}],46:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class FeatureStyle - */ - -/** - * FeatureStyle constructor - * @param {module:extension/style.StyleRow} styleRow - * @param {module:extension/style.IconRow} iconRow - * @constructor - */ -var FeatureStyle = function(styleRow, iconRow) { - this.styleRow = styleRow; - this.iconRow = iconRow; -}; - -/** - * Set style - * @param {module:extension/style.StyleRow} styleRow - */ -FeatureStyle.prototype.setStyle = function(styleRow) { - this.styleRow = styleRow; -}; - -/** - * Get style - * @returns {module:extension/style.StyleRow} - */ -FeatureStyle.prototype.getStyle = function() { - return this.styleRow; -}; - -/** - * Returns true if has style - * @returns {Boolean} - */ -FeatureStyle.prototype.hasStyle = function() { - return !!this.styleRow; -}; - -/** - * Set icon - * @param {module:extension/style.IconRow} iconRow - */ -FeatureStyle.prototype.setIcon = function(iconRow) { - this.iconRow = iconRow; -}; - -/** - * Get icon - * @returns {module:extension/style.IconRow} - */ -FeatureStyle.prototype.getIcon = function() { - return this.iconRow; -}; - -/** - * Returns true if has icon - * @returns {Boolean} - */ -FeatureStyle.prototype.hasIcon = function() { - return !!this.iconRow; -}; - -module.exports = FeatureStyle; - -},{}],47:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class FeatureStyles - */ - -/** - * FeatureStyles constructor - * @param {module:extension/style.Styles} styles - * @param {module:extension/style.Icons} icons - * @constructor - */ -var FeatureStyles = function(styles = null, icons = null) { - this.styles = styles; - this.icons = icons; -}; - -/** - * Set style - * @param {module:extension/style.Styles} styles - */ -FeatureStyles.prototype.setStyles = function(styles) { - this.styles = styles; -}; - -/** - * Get style - * @returns {module:extension/style.Styles} - */ -FeatureStyles.prototype.getStyles = function() { - return this.styles; -}; - -/** - * Set icon - * @param {module:extension/style.Icons} icons - */ -FeatureStyles.prototype.setIcons = function(icons) { - this.icons = icons; -}; - -/** - * Get icon - * @returns {module:extension/style.Icons} - */ -FeatureStyles.prototype.getIcons = function() { - return this.icons; -}; - -module.exports = FeatureStyles; - -},{}],48:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class FeatureStyleExtension - */ - -var FeatureStyles = require('./featureStyles') - , FeatureStyle = require('./featureStyle') - , Styles = require('./styles') - , Icons = require('./icons'); - - -/** - * Feature Table Styles, styles and icons for an individual feature table - * @param {module:geoPackage~GeoPackage} geoPackage GeoPackage object - * @param {String} tableName - * @constructor - */ -var FeatureTableStyles = function(geoPackage, tableName) { - this.featureStyleExtension = geoPackage.getFeatureStyleExtension(); - this.cachedTableFeatureStyles = new FeatureStyles(); - this.tableName = tableName; -}; - -/** - * Get the feature style extension - * @return {module:extension/style.FeatureStyleExtension} feature style extension - */ -FeatureTableStyles.prototype.getFeatureStyleExtension = function() { - return this.featureStyleExtension; -}; - -/** - * Get the feature table name - * @return {String} feature table name - */ -FeatureTableStyles.prototype.getTableName = function() { - return this.tableName; -}; - -/** - * Determine if the GeoPackage has the extension for the table - * @return {Boolean} true if has extension - */ -FeatureTableStyles.prototype.has = function() { - return this.featureStyleExtension.has(this.tableName); -}; - -/** - * Create style, icon, table style, and table icon relationships for the - * feature table - * @return {Promise} - */ -FeatureTableStyles.prototype.createRelationships = function() { - return this.featureStyleExtension.createRelationships(this.tableName); -}; - -/** - * Check if feature table has a style, icon, table style, or table icon - * relationships - * @return {Boolean} true if has a relationship - */ -FeatureTableStyles.prototype.hasRelationship = function() { - return this.featureStyleExtension.hasRelationship(this.tableName); -}; - -/** - * Create a style relationship for the feature table - * @return {Promise} - */ -FeatureTableStyles.prototype.createStyleRelationship = function() { - return this.featureStyleExtension.createStyleRelationship(this.tableName); -}; - -/** - * Determine if a style relationship exists for the feature table - * @return {Boolean} true if relationship exists - */ -FeatureTableStyles.prototype.hasStyleRelationship = function() { - return this.featureStyleExtension.hasStyleRelationship(this.tableName); -}; - -/** - * Create a feature table style relationship - * @return {Promise} - */ -FeatureTableStyles.prototype.createTableStyleRelationship = function() { - return this.featureStyleExtension.createTableStyleRelationship(this.tableName); -}; - -/** - * Determine if feature table style relationship exists - * - * @return {Boolean} true if relationship exists - */ -FeatureTableStyles.prototype.hasTableStyleRelationship = function() { - return this.featureStyleExtension.hasTableStyleRelationship(this.tableName); -}; - -/** - * Create an icon relationship for the feature table - * @return {Promise} - */ -FeatureTableStyles.prototype.createIconRelationship = function() { - return this.featureStyleExtension.createIconRelationship(this.tableName); -}; - -/** - * Determine if an icon relationship exists for the feature table - * @return {Boolean} true if relationship exists - */ -FeatureTableStyles.prototype.hasIconRelationship = function() { - return this.featureStyleExtension.hasIconRelationship(this.tableName); -}; - -/** - * Create a feature table icon relationship - * @return {Promise} - */ -FeatureTableStyles.prototype.createTableIconRelationship = function() { - return this.featureStyleExtension.createTableIconRelationship(this.tableName); -}; - -/** - * Determine if feature table icon relationship exists - * @return {Boolean} true if relationship exists - */ -FeatureTableStyles.prototype.hasTableIconRelationship = function() { - return this.featureStyleExtension.hasTableIconRelationship(this.tableName); -}; - -/** - * Delete the style and icon table and row relationships for the feature - * table - */ -FeatureTableStyles.prototype.deleteRelationships = function() { - this.featureStyleExtension.deleteRelationships(this.tableName); -}; - -/** - * Delete a style relationship for the feature table - */ -FeatureTableStyles.prototype.deleteStyleRelationship = function() { - this.featureStyleExtension.deleteStyleRelationship(this.tableName); -}; - -/** - * Delete a table style relationship for the feature table - */ -FeatureTableStyles.prototype.deleteTableStyleRelationship = function() { - this.featureStyleExtension.deleteTableStyleRelationship(this.tableName); -}; - -/** - * Delete a icon relationship for the feature table - */ -FeatureTableStyles.prototype.deleteIconRelationship = function() { - this.featureStyleExtension.deleteIconRelationship(this.tableName); -}; - -/** - * Delete a table icon relationship for the feature table - */ -FeatureTableStyles.prototype.deleteTableIconRelationship = function() { - this.featureStyleExtension.deleteTableIconRelationship(this.tableName); -}; - -/** - * Get a Style Mapping DAO - * @return {module:extension/style.StyleMappingDao} style mapping DAO - */ -FeatureTableStyles.prototype.getStyleMappingDao = function() { - return this.featureStyleExtension.getStyleMappingDao(this.tableName); -}; - -/** - * Get a Table Style Mapping DAO - * @return {module:extension/style.StyleMappingDao} table style mapping DAO - */ -FeatureTableStyles.prototype.getTableStyleMappingDao = function() { - return this.featureStyleExtension.getTableStyleMappingDao(this.tableName); -}; - -/** - * Get a Icon Mapping DAO - * @return {module:extension/style.StyleMappingDao} icon mapping DAO - */ -FeatureTableStyles.prototype.getIconMappingDao = function() { - return this.featureStyleExtension.getIconMappingDao(this.tableName); -}; - -/** - * Get a Table Icon Mapping DAO - * @return {module:extension/style.StyleMappingDao} table icon mapping DAO - */ -FeatureTableStyles.prototype.getTableIconMappingDao = function() { - return this.featureStyleExtension.getTableIconMappingDao(this.tableName); -}; - -/** - * Get a style DAO - * @return {module:extension/style.StyleDao} style DAO - */ -FeatureTableStyles.prototype.getStyleDao = function() { - return this.featureStyleExtension.getStyleDao(); -}; - -/** - * Get a icon DAO - * @return {module:extension/style.IconDao} icon DAO - */ -FeatureTableStyles.prototype.getIconDao = function() { - return this.featureStyleExtension.getIconDao(); -}; - -/** - * Get the table feature styles - * @return {module:extension/style.FeatureStyles} table feature styles or null - */ -FeatureTableStyles.prototype.getTableFeatureStyles = function() { - return this.featureStyleExtension.getTableFeatureStyles(this.tableName); -}; - -/** - * Get the table styles - * @return {module:extension/style.Styles} table styles or null - */ -FeatureTableStyles.prototype.getTableStyles = function() { - return this.featureStyleExtension.getTableStyles(this.tableName); -}; - -/** - * Get the cached table styles, querying and caching if needed - * @return {module:extension/style.Styles} cached table styles - */ -FeatureTableStyles.prototype.getCachedTableStyles = function() { - var styles = this.cachedTableFeatureStyles.getStyles(); - if (styles === null) { - styles = this.cachedTableFeatureStyles.getStyles(); - if (styles === null) { - styles = this.getTableStyles(); - if (styles === null) { - styles = new Styles(); - } - this.cachedTableFeatureStyles.setStyles(styles); - } - } - if (styles.isEmpty()) { - styles = null; - } - return styles; -}; - -/** - * Get the table style of the geometry type - * @param {String} geometryType geometry type - * @return {module:extension/style.StyleRow} style row - */ -FeatureTableStyles.prototype.getTableStyle = function(geometryType) { - return this.featureStyleExtension.getTableStyle(this.tableName, geometryType); -}; - -/** - * Get the table style default - * @return {module:extension/style.StyleRow} style row - */ -FeatureTableStyles.prototype.getTableStyleDefault = function() { - return this.featureStyleExtension.getTableStyleDefault(this.tableName); -}; - -/** - * Get the table icons - * @return {module:extension/style.Icons} table icons or null - */ -FeatureTableStyles.prototype.getTableIcons = function() { - return this.featureStyleExtension.getTableIcons(this.tableName); -}; - -/** - * Get the cached table icons, querying and caching if needed - * @return {module:extension/style.Icons} cached table icons - */ -FeatureTableStyles.prototype.getCachedTableIcons = function() { - var icons = this.cachedTableFeatureStyles.getIcons(); - if (icons === null) { - icons = this.cachedTableFeatureStyles.getIcons(); - if (icons === null) { - icons = this.getTableIcons(); - if (icons === null) { - icons = new Icons(); - } - this.cachedTableFeatureStyles.setIcons(icons); - } - } - if (icons.isEmpty()) { - icons = null; - } - return icons; -}; - -/** - * Get the table icon of the geometry type - * @param {String} geometryType geometry type - * @return {module:extension/style.IconRow} icon row - */ -FeatureTableStyles.prototype.getTableIcon = function(geometryType) { - return this.featureStyleExtension.getTableIcon(this.tableName, geometryType); -}; - -/** - * Get the table icon default - * @return {module:extension/style.IconRow} icon row - */ -FeatureTableStyles.prototype.getTableIconDefault = function() { - return this.featureStyleExtension.getTableIconDefault(this.tableName); -}; - -/** - * Get the feature styles for the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.FeatureStyles} feature styles or null - */ -FeatureTableStyles.prototype.getFeatureStylesForFeatureRow = function(featureRow) { - return this.featureStyleExtension.getFeatureStylesForFeatureRow(featureRow); -}; - -/** - * Get the feature styles for the feature id - * - * @param {Number} featureId feature id - * @return {module:extension/style.FeatureStyles} feature styles or null - */ -FeatureTableStyles.prototype.getFeatureStyles = function(featureId) { - return this.featureStyleExtension.getFeatureStyles(this.tableName, featureId); -}; - -/** - * Get the feature style (style and icon) of the feature row, searching in - * order: feature geometry type style or icon, feature default style or - * icon, table geometry type style or icon, table default style or icon - * - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.FeatureStyle} feature style - */ -FeatureTableStyles.prototype.getFeatureStyleForFeatureRow = function(featureRow) { - return this.getFeatureStyleForFeatureRowAndGeometryType(featureRow, featureRow.getGeometryType()); -}; - -/** - * Get the feature style (style and icon) of the feature row with the - * provided geometry type, searching in order: feature geometry type style - * or icon, feature default style or icon, table geometry type style or - * icon, table default style or icon - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - * @return {module:extension/style.FeatureStyle} feature style - */ -FeatureTableStyles.prototype.getFeatureStyleForFeatureRowAndGeometryType = function(featureRow, geometryType) { - return this.getFeatureStyle(featureRow.getId(), geometryType); -}; - -/** - * Get the feature style default (style and icon) of the feature row, - * searching in order: feature default style or icon, table default style or - * icon - * - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.FeatureStyle} feature style - */ -FeatureTableStyles.prototype.getFeatureStyleDefaultForFeatureRow = function(featureRow) { - return this.getFeatureStyle(featureRow.getId(), null); -}; - -/** - * Get the feature style (style and icon) of the feature, searching in - * order: feature geometry type style or icon, feature default style or - * icon, table geometry type style or icon, table default style or icon - * - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - * @return {module:extension/style.FeatureStyle} feature style - */ -FeatureTableStyles.prototype.getFeatureStyle = function(featureId, geometryType) { - var featureStyle = null; - var style = this.getStyle(featureId, geometryType); - var icon = this.getIcon(featureId, geometryType); - if (style != null || icon != null) { - featureStyle = new FeatureStyle(style, icon); - } - return featureStyle; -}; - -/** - * Get the feature style (style and icon) of the feature, searching in - * order: feature geometry type style or icon, feature default style or - * icon, table geometry type style or icon, table default style or icon - * - * @param {Number} featureId feature id - * @return {module:extension/style.FeatureStyle} feature style - */ -FeatureTableStyles.prototype.getFeatureStyleDefault = function(featureId) { - return this.getFeatureStyle(featureId, null); -}; - -/** - * Get the styles for the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.Styles} styles or null - */ -FeatureTableStyles.prototype.getStylesForFeatureRow = function(featureRow) { - return this.featureStyleExtension.getStylesForFeatureRow(featureRow); -}; - -/** - * Get the styles for the feature id - * - * @param {Number} featureId feature id - * @return {module:extension/style.Styles} styles or null - */ -FeatureTableStyles.prototype.getStylesForFeatureId = function(featureId) { - return this.featureStyleExtension.getStylesForFeatureId(this.tableName, featureId); -}; - -/** - * Get the style of the feature row, searching in order: feature geometry - * type style, feature default style, table geometry type style, table - * default style - * - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.StyleRow} style row - */ -FeatureTableStyles.prototype.getStyleForFeatureRow = function(featureRow) { - return this.getStyleForFeatureRowAndGeometryType(featureRow, featureRow.getGeometryType()); -}; - -/** - * Get the style of the feature row with the provided geometry type, - * searching in order: feature geometry type style, feature default style, - * table geometry type style, table default style - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - * @return {module:extension/style.StyleRow} style row - */ -FeatureTableStyles.prototype.getStyleForFeatureRowAndGeometryType = function(featureRow, geometryType) { - return this.getStyle(featureRow.getId(), geometryType); -}; - -/** - * Get the default style of the feature row, searching in order: feature - * default style, table default style - * - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.StyleRow} style row - */ -FeatureTableStyles.prototype.getStyleDefaultForFeatureRow = function(featureRow) { - return this.getStyle(featureRow.getId(), null); -}; - -/** - * Get the style of the feature, searching in order: feature geometry type - * style, feature default style, table geometry type style, table default - * style - * - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - * @return {module:extension/style.StyleRow} style row - */ -FeatureTableStyles.prototype.getStyle = function(featureId, geometryType) { - var styleRow = this.featureStyleExtension.getStyle(this.tableName, featureId, geometryType, false); - if (styleRow === null) { - // Table Style - var styles = this.getCachedTableStyles(); - if (styles != null) { - styleRow = styles.getStyle(geometryType); - } - } - return styleRow; -}; - -/** - * Get the default style of the feature, searching in order: feature default - * style, table default style - * - * @param {Number} featureId feature id - * @return {module:extension/style.StyleRow} style row - */ -FeatureTableStyles.prototype.getStyleDefault = function(featureId) { - return this.getStyle(featureId, null); -}; - -/** - * Get the icons for the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.Icons} icons or null - */ -FeatureTableStyles.prototype.getIconsForFeatureRow = function(featureRow) { - return this.featureStyleExtension.getIconsForFeatureRow(featureRow); -}; - -/** - * Get the icons for the feature id - * - * @param {Number} featureId feature id - * @return {module:extension/style.Icons} icons or null - */ -FeatureTableStyles.prototype.getIconsForFeatureId = function(featureId) { - return this.featureStyleExtension.getIconsForFeatureId(this.tableName, featureId); -}; - -/** - * Get the icon of the feature row, searching in order: feature geometry - * type icon, feature default icon, table geometry type icon, table default - * icon - * - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.IconRow} icon row - */ -FeatureTableStyles.prototype.getIconForFeatureRow = function(featureRow) { - return this.getIconForFeatureRowAndGeometryType(featureRow, featureRow.getGeometryType()); -}; - -/** - * Get the icon of the feature row with the provided geometry type, - * searching in order: feature geometry type icon, feature default icon, - * table geometry type icon, table default icon - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - * @return {module:extension/style.IconRow} icon row - */ -FeatureTableStyles.prototype.getIconForFeatureRowAndGeometryType = function(featureRow, geometryType) { - return this.getIcon(featureRow.getId(), geometryType); -}; - -/** - * Get the default icon of the feature row, searching in order: feature - * default icon, table default icon - * - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.IconRow} icon row - */ -FeatureTableStyles.prototype.getIconDefaultForFeatureRow = function(featureRow) { - return this.getIcon(featureRow.getId(), null); -}; - -/** - * Get the icon of the feature, searching in order: feature geometry type - * icon, feature default icon, table geometry type icon, table default icon - * - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - * @return {module:extension/style.IconRow} icon row - */ -FeatureTableStyles.prototype.getIcon = function(featureId, geometryType) { - var iconRow = this.featureStyleExtension.getIcon(this.tableName, featureId, geometryType, false); - if (iconRow === null) { - // Table Icon - var icons = this.getCachedTableIcons(); - if (icons != null) { - iconRow = icons.getIcon(geometryType); - } - } - return iconRow; -}; - -/** - * Get the default icon of the feature, searching in order: feature default - * icon, table default icon - * - * @param {Number} featureId feature id - * @return {module:extension/style.IconRow} icon row - */ -FeatureTableStyles.prototype.getIconDefault = function(featureId) { - return this.getIcon(featureId, null); -}; - -/** - * Set the feature table default feature styles - * - * @param {module:extension/style.FeatureStyles} featureStyles default feature styles - * @return {Promise} - */ -FeatureTableStyles.prototype.setTableFeatureStyles = function(featureStyles) { - return this.featureStyleExtension.setTableFeatureStyles(this.tableName, featureStyles).then(function () { - this.clearCachedTableFeatureStyles(); - }.bind(this)); -}; - -/** - * Set the feature table default styles - * - * @param {module:extension/style.Styles} styles default styles - * @return {Promise} - */ -FeatureTableStyles.prototype.setTableStyles = function(styles) { - return this.featureStyleExtension.setTableStyles(this.tableName, styles).then(function () { - this.clearCachedTableStyles(); - }.bind(this)); -}; - -/** - * Set the feature table style default - * - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureTableStyles.prototype.setTableStyleDefault = function(style) { - return this.featureStyleExtension.setTableStyleDefault(this.tableName, style).then(function () { - this.clearCachedTableStyles(); - }.bind(this)); -}; - -/** - * Set the feature table style for the geometry type - * - * @param {String} geometryType geometry type - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureTableStyles.prototype.setTableStyle = function(geometryType, style) { - return this.featureStyleExtension.setTableStyle(this.tableName, geometryType, style).then(function () { - this.clearCachedTableStyles(); - }.bind(this)); -}; - -/** - * Set the feature table default icons - * - * @param {module:extension/style.Icons} icons default icons - * @return {Promise} - */ -FeatureTableStyles.prototype.setTableIcons = function(icons) { - return this.featureStyleExtension.setTableIcons(this.tableName, icons).then(function () { - this.clearCachedTableIcons(); - }.bind(this)); -}; - -/** - * Set the feature table icon default - * - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureTableStyles.prototype.setTableIconDefault = function(icon) { - return this.featureStyleExtension.setTableIconDefault(this.tableName, icon).then(function () { - this.clearCachedTableIcons(); - }.bind(this)); -}; - -/** - * Set the feature table icon for the geometry type - * - * @param {String} geometryType geometry type - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureTableStyles.prototype.setTableIcon = function(geometryType, icon) { - return this.featureStyleExtension.setTableIcon(this.tableName, geometryType, icon).then(function () { - this.clearCachedTableIcons(); - }.bind(this)); -}; - -/** - * Set the feature styles for the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.FeatureStyles} featureStyles feature styles - * @return {Promise} - */ -FeatureTableStyles.prototype.setFeatureStylesForFeatureRow = function(featureRow, featureStyles) { - return this.featureStyleExtension.setFeatureStylesForFeatureRow(featureRow, featureStyles); -}; - -/** - * Set the feature styles for the feature table and feature id - * - * @param {Number} featureId feature id - * @param {module:extension/style.FeatureStyles} featureStyles feature styles - * @return {Promise} - */ -FeatureTableStyles.prototype.setFeatureStyles = function(featureId, featureStyles) { - return this.featureStyleExtension.setFeatureStyles(this.tableName, featureId, featureStyles); -}; - -/** - * Set the feature style (style and icon) of the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.FeatureStyle} featureStyle feature style - * @return {Promise} - */ -FeatureTableStyles.prototype.setFeatureStyleForFeatureRow = function(featureRow, featureStyle) { - return this.featureStyleExtension.setFeatureStyleForFeatureRow(featureRow, featureStyle); -}; - -/** - * Set the feature style (style and icon) of the feature row for the - * specified geometry type - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - * @param {module:extension/style.FeatureStyle} featureStyle feature style - * @return {Promise} - */ -FeatureTableStyles.prototype.setFeatureStyleForFeatureRowAndGeometryType = function(featureRow, geometryType, featureStyle) { - return this.featureStyleExtension.setFeatureStyleForFeatureRowAndGeometryType(featureRow, geometryType, featureStyle); -}; - -/** - * Set the feature style default (style and icon) of the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.FeatureStyle} featureStyle feature style - * @return {Promise} - */ -FeatureTableStyles.prototype.setFeatureStyleDefaultForFeatureRow = function(featureRow, featureStyle) { - return this.featureStyleExtension.setFeatureStyleDefaultForFeatureRow(featureRow, featureStyle); -}; - -/** - * Set the feature style (style and icon) of the feature - * - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - * @param {module:extension/style.FeatureStyle} featureStyle feature style - * @return {Promise} - */ -FeatureTableStyles.prototype.setFeatureStyle = function(featureId, geometryType, featureStyle) { - return this.featureStyleExtension.setFeatureStyle(this.tableName, featureId, geometryType, featureStyle); -}; - -/** - * Set the feature style (style and icon) of the feature - * - * @param {Number} featureId feature id - * @param {module:extension/style.FeatureStyle} featureStyle feature style - * @return {Promise} - */ -FeatureTableStyles.prototype.setFeatureStyleDefault = function(featureId, featureStyle) { - return this.featureStyleExtension.setFeatureStyleDefault(this.tableName, featureId, featureStyle); -}; - -/** - * Set the styles for the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.StyleRow} styles styles - * @return {Promise} - */ -FeatureTableStyles.prototype.setStylesForFeatureRow = function(featureRow, styles) { - return this.featureStyleExtension.setStylesForFeatureRow(featureRow, styles); -}; - -/** - * Set the styles for the feature table and feature id - * - * @param {Number} featureId feature id - * @param {module:extension/style.Styles} styles styles - * @return {Promise} - */ -FeatureTableStyles.prototype.setStyles = function(featureId, styles) { - return this.featureStyleExtension.setStyles(this.tableName, featureId, styles); -}; - -/** - * Set the style of the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureTableStyles.prototype.setStyleForFeatureRow = function(featureRow, style) { - return this.featureStyleExtension.setStyleForFeatureRow(featureRow, style); -}; - -/** - * Set the style of the feature row for the specified geometry type - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureTableStyles.prototype.setStyleForFeatureRowAndGeometryType = function(featureRow, geometryType, style) { - return this.featureStyleExtension.setStyleForFeatureRowAndGeometryType(featureRow, geometryType, style); -}; - -/** - * Set the default style of the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureTableStyles.prototype.setStyleDefaultForFeatureRow = function(featureRow, style) { - return this.featureStyleExtension.setStyleDefaultForFeatureRow(featureRow, style); -}; - -/** - * Set the style of the feature - * - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureTableStyles.prototype.setStyle = function(featureId, geometryType, style) { - return this.featureStyleExtension.setStyle(this.tableName, featureId, geometryType, style); -}; - -/** - * Set the default style of the feature - * - * @param {Number} featureId feature id - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureTableStyles.prototype.setStyleDefault = function(featureId, style) { - return this.featureStyleExtension.setStyleDefault(this.tableName, featureId, style); -}; - -/** - * Set the icons for the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.Icons} icons icons - * @return {Promise} - */ -FeatureTableStyles.prototype.setIconsForFeatureRow = function(featureRow, icons) { - return this.featureStyleExtension.setIconsForFeatureRow(featureRow, icons); -}; - -/** - * Set the icons for the feature table and feature id - * - * @param {Number} featureId feature id - * @param {module:extension/style.Icons} icons icons - * @return {Promise} - */ -FeatureTableStyles.prototype.setIcons = function(featureId, icons) { - return this.featureStyleExtension.setIcons(this.tableName, featureId, icons); -}; - -/** - * Set the icon of the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureTableStyles.prototype.setIconForFeatureRow = function(featureRow, icon) { - return this.featureStyleExtension.setIconForFeatureRow(featureRow, icon); -}; - -/** - * Set the icon of the feature row for the specified geometry type - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureTableStyles.prototype.setIconForFeatureRowAndGeometryType = function(featureRow, geometryType, icon) { - return this.featureStyleExtension.setIconForFeatureRowAndGeometryType(featureRow, geometryType, icon); -}; - -/** - * Set the default icon of the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureTableStyles.prototype.setIconDefaultForFeatureRow = function(featureRow, icon) { - return this.featureStyleExtension.setIconDefaultForFeatureRow(featureRow, icon); -}; - -/** - * Get the icon of the feature, searching in order: feature geometry type - * icon, feature default icon, table geometry type icon, table default icon - * - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureTableStyles.prototype.setIcon = function(featureId, geometryType, icon) { - return this.featureStyleExtension.setIcon(this.tableName, featureId, geometryType, icon); -}; - -/** - * Set the default icon of the feature - * - * @param {Number} featureId feature id - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureTableStyles.prototype.setIconDefault = function(featureId, icon) { - return this.featureStyleExtension.setIconDefault(this.tableName, featureId, icon); -}; - -/** - * Delete all feature styles including table styles, table icons, style, and - * icons - */ -FeatureTableStyles.prototype.deleteAllFeatureStyles = function() { - this.featureStyleExtension.deleteAllFeatureStyles(this.tableName); - this.clearCachedTableFeatureStyles(); -}; - -/** - * Delete all styles including table styles and feature row styles - */ -FeatureTableStyles.prototype.deleteAllStyles = function() { - this.featureStyleExtension.deleteAllStyles(this.tableName); - this.clearCachedTableStyles(); -}; - -/** - * Delete all icons including table icons and feature row icons - */ -FeatureTableStyles.prototype.deleteAllIcons = function() { - this.featureStyleExtension.deleteAllIcons(this.tableName); - this.clearCachedTableIcons(); -}; - -/** - * Delete the feature table feature styles - */ -FeatureTableStyles.prototype.deleteTableFeatureStyles = function() { - this.featureStyleExtension.deleteTableFeatureStyles(this.tableName); - this.clearCachedTableFeatureStyles(); -}; - -/** - * Delete the feature table styles - */ -FeatureTableStyles.prototype.deleteTableStyles = function() { - this.featureStyleExtension.deleteTableStyles(this.tableName); - this.clearCachedTableStyles(); -}; - -/** - * Delete the feature table default style - */ -FeatureTableStyles.prototype.deleteTableStyleDefault = function() { - this.featureStyleExtension.deleteTableStyleDefault(this.tableName); - this.clearCachedTableStyles(); -}; - -/** - * Delete the feature table style for the geometry type - * - * @param {String} geometryType geometry type - */ -FeatureTableStyles.prototype.deleteTableStyle = function(geometryType) { - this.featureStyleExtension.deleteTableStyle(this.tableName, geometryType); - this.clearCachedTableStyles(); -}; - -/** - * Delete the feature table icons - */ -FeatureTableStyles.prototype.deleteTableIcons = function() { - this.featureStyleExtension.deleteTableIcons(this.tableName); - this.clearCachedTableIcons(); -}; - -/** - * Delete the feature table default icon - */ -FeatureTableStyles.prototype.deleteTableIconDefault = function() { - this.featureStyleExtension.deleteTableIconDefault(this.tableName); - this.clearCachedTableIcons(); -}; - -/** - * Delete the feature table icon for the geometry type - * - * @param {String} geometryType geometry type - */ -FeatureTableStyles.prototype.deleteTableIcon = function(geometryType) { - this.featureStyleExtension.deleteTableIcon(this.tableName, geometryType); - this.clearCachedTableIcons(); -}; - -/** - * Clear the cached table feature styles - */ -FeatureTableStyles.prototype.clearCachedTableFeatureStyles = function() { - this.cachedTableFeatureStyles.setStyles(null); - this.cachedTableFeatureStyles.setIcons(null); -}; - -/** - * Clear the cached table styles - */ -FeatureTableStyles.prototype.clearCachedTableStyles = function() { - this.cachedTableFeatureStyles.setStyles(null); -}; - -/** - * Clear the cached table icons - */ -FeatureTableStyles.prototype.clearCachedTableIcons = function() { - this.cachedTableFeatureStyles.setIcons(null); -}; - -/** - * Delete all feature styles - */ -FeatureTableStyles.prototype.deleteFeatureStyles = function() { - this.featureStyleExtension.deleteFeatureStyles(this.tableName); -}; - -/** - * Delete all styles - */ -FeatureTableStyles.prototype.deleteStyles = function() { - this.featureStyleExtension.deleteStyles(this.tableName); -}; - -/** - * Delete feature row styles - * - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureTableStyles.prototype.deleteStylesForFeatureRow = function(featureRow) { - this.featureStyleExtension.deleteStylesForFeatureRow(featureRow); -}; - -/** - * Delete feature row styles - * - * @param {Number} featureId feature id - */ -FeatureTableStyles.prototype.deleteStylesForFeatureId = function(featureId) { - this.featureStyleExtension.deleteStylesForFeatureId(this.tableName, featureId); -}; - -/** - * Delete the feature row default style - * - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureTableStyles.prototype.deleteStyleDefaultForFeatureRow = function(featureRow) { - this.featureStyleExtension.deleteStyleDefaultForFeatureRow(featureRow); -}; - -/** - * Delete the feature row default style - * - * @param {Number} featureId feature id - */ -FeatureTableStyles.prototype.deleteStyleDefault = function(featureId) { - this.featureStyleExtension.deleteStyleDefault(this.tableName, featureId); -}; - -/** - * Delete the feature row style for the feature row geometry type - * - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureTableStyles.prototype.deleteStyleForFeatureRow = function(featureRow) { - this.featureStyleExtension.deleteStyleForFeatureRow(featureRow); -}; - -/** - * Delete the feature row style for the geometry type - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - */ -FeatureTableStyles.prototype.deleteStyleForFeatureRowAndGeometryType = function(featureRow, geometryType) { - this.featureStyleExtension.deleteStyleForFeatureRowAndGeometryType(featureRow, geometryType); -}; - -/** - * Delete the feature row style for the geometry type - * - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - */ -FeatureTableStyles.prototype.deleteStyle = function(featureId, geometryType) { - this.featureStyleExtension.deleteStyle(this.tableName, featureId, geometryType); -}; - -/** - * Delete all icons - */ -FeatureTableStyles.prototype.deleteIcons = function() { - this.featureStyleExtension.deleteIcons(this.tableName); -}; - -/** - * Delete feature row icons - * - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureTableStyles.prototype.deleteIconsForFeatureRow = function(featureRow) { - this.featureStyleExtension.deleteIconsForFeatureRow(featureRow); -}; - -/** - * Delete feature row icons - * - * @param {Number} featureId feature id - */ -FeatureTableStyles.prototype.deleteIconsForFeatureId = function(featureId) { - this.featureStyleExtension.deleteIconsForFeatureId(this.tableName, featureId); -}; - -/** - * Delete the feature row default icon - * - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureTableStyles.prototype.deleteIconDefaultForFeatureRow = function(featureRow) { - this.featureStyleExtension.deleteIconDefaultForFeatureRow(featureRow); -}; - -/** - * Delete the feature row default icon - * - * @param {Number} featureId feature id - */ -FeatureTableStyles.prototype.deleteIconDefault = function(featureId) { - this.featureStyleExtension.deleteIconDefault(this.tableName, featureId); -}; - -/** - * Delete the feature row icon for the feature row geometry type - * - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureTableStyles.prototype.deleteIconForFeatureRow = function(featureRow) { - this.featureStyleExtension.deleteIconForFeatureRow(featureRow); -}; - -/** - * Delete the feature row icon for the geometry type - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - */ -FeatureTableStyles.prototype.deleteIconForFeatureRowAndGeometryType = function(featureRow, geometryType) { - this.featureStyleExtension.deleteIconForFeatureRowAndGeometryType(featureRow, geometryType); -}; - -/** - * Delete the feature row icon for the geometry type - * - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - */ -FeatureTableStyles.prototype.deleteIcon = function(featureId, geometryType) { - this.featureStyleExtension.deleteIcon(this.tableName, featureId, geometryType); -}; - -/** - * Get all the unique style row ids the table maps to - * - * @return {module:extension/style.StyleRow} style row ids - */ -FeatureTableStyles.prototype.getAllTableStyleIds = function() { - return this.featureStyleExtension.getAllTableStyleIds(this.tableName); -}; - -/** - * Get all the unique icon row ids the table maps to - * - * @return {module:extension/style.IconRow} icon row ids - */ -FeatureTableStyles.prototype.getAllTableIconIds = function() { - return this.featureStyleExtension.getAllTableIconIds(this.tableName); -}; - -/** - * Get all the unique style row ids the features map to - * - * @return {module:extension/style.StyleRow} style row ids - */ -FeatureTableStyles.prototype.getAllStyleIds = function() { - return this.featureStyleExtension.getAllStyleIds(this.tableName); -}; - -/** - * Get all the unique icon row ids the features map to - * - * @return {module:extension/style.IconRow} icon row ids - */ -FeatureTableStyles.prototype.getAllIconIds = function() { - return this.featureStyleExtension.getAllIconIds(this.tableName); -}; - -module.exports = FeatureTableStyles; - -},{"./featureStyle":46,"./featureStyles":47,"./icons":53,"./styles":62}],49:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class IconCache - */ - -/** - * Constructor, created with cache size of {@link #IconCache.DEFAULT_CACHE_SIZE} - * @constructor - */ -var IconCache = function(size = null) { - this.cacheSize = size !== null ? size : IconCache.DEFAULT_CACHE_SIZE; - this.iconCache = {}; - this.accessHistory = []; -}; - -/** - * Get the cached image for the icon row or null if not cached - * @param {module:extension/style.IconRow} iconRow icon row - * @return {Image} icon image or null - */ -IconCache.prototype.getIconForIconRow = function(iconRow) { - return this.get(iconRow.getId()); -}; - -/** - * Get the cached image for the icon row id or null if not cached - * @param {Number} iconRowId icon row id - * @return {Image} icon image or null - */ -IconCache.prototype.get = function(iconRowId) { - var image = this.iconCache[iconRowId]; - if (!!image) { - var index = this.accessHistory.indexOf(iconRowId); - if (index > -1) { - this.accessHistory.splice(index, 1); - } - this.accessHistory.push(iconRowId); - } - return image; -}; - -/** - * Cache the icon image for the icon row - * @param {module:extension/style.IconRow} iconRow icon row - * @param {Image} image icon image - * @return {Image} previous cached icon image or null - */ -IconCache.prototype.putIconForIconRow = function(iconRow, image) { - return this.put(iconRow.getId(), image); -}; - -/** - * Cache the icon image for the icon row id - * @param {Number} iconRowId icon row id - * @param {Image} image icon image - * @return {Image} previous cached icon image or null - */ -IconCache.prototype.put = function(iconRowId, image) { - var previous = this.iconCache[iconRowId]; - this.iconCache[iconRowId] = image; - if (!!previous) { - var index = this.accessHistory.indexOf(iconRowId); - if (index > -1) { - this.accessHistory.splice(index, 1); - } - } - this.accessHistory.push(iconRowId); - if (Object.keys(this.iconCache).length > this.cacheSize) { - var iconId = this.accessHistory.shift(); - if (iconId) { - delete this.iconCache[iconId]; - } - } - return previous; -}; - -/** - * Remove the cached image for the icon row - * @param {module:extension/style.IconRow} iconRow icon row - * @return {Image} removed icon image or null - */ -IconCache.prototype.removeIconForIconRow = function(iconRow) { - return this.remove(iconRow.getId()); -}; - -/** - * Remove the cached image for the icon row id - * @param {Number} iconRowId icon row id - * @return {Image} removed icon image or null - */ -IconCache.prototype.remove = function(iconRowId) { - var removed = this.iconCache[iconRowId]; - delete this.iconCache[iconRowId]; - if (!!removed) { - var index = this.accessHistory.indexOf(iconRowId); - if (index > -1) { - this.accessHistory.splice(index, 1); - } } - return removed; -}; - -/** - * Clear the cache - */ -IconCache.prototype.clear = function() { - this.iconCache = {}; - this.accessHistory = []; -}; - -/** - * Resize the cache - * @param {Number} maxSize max size - */ -IconCache.prototype.resize = function(maxSize) { - this.cacheSize = maxSize; - var keys = Object.keys(this.iconCache); - if (keys.length > maxSize) { - var numberToRemove = keys.length - maxSize; - for (var i = 0; i < numberToRemove; i++) { - delete this.iconCache[this.accessHistory.shift()]; - } - } -}; - -/** - * Create or retrieve from cache an icon image for the icon row - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} icon image - */ -IconCache.prototype.createIcon = function(icon) { - return this.createAndCacheIcon(icon, this); -}; - -/** - * Create or retrieve from cache an icon image for the icon row - * @param {module:extension/style.IconRow} icon icon row - * @param {Number} scale scale factor - * @return {Promise} icon image - */ -IconCache.prototype.createScaledIcon = function(icon, scale) { - return this.createAndCacheScaledIcon(icon, scale, this); -}; - -/** - * Create an icon image for the icon row without caching - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} icon image - */ -IconCache.prototype.createIconNoCache = function(icon) { - return this.createScaledIconNoCache(icon, 1.0); -}; - -/** - * Create an icon image for the icon row without caching - * @param icon icon row - * @param scale scale factor - * @return {Promise} icon image - */ -IconCache.prototype.createScaledIconNoCache = function(icon, scale) { - return this.createAndCacheScaledIcon(icon, scale, null); -}; - -/** - * Create or retrieve from cache an icon image for the icon row - * @param {module:extension/style.IconRow} icon icon row - * @param {module:extension/style.IconCache} iconCache icon cache - * @return {Promise} icon image - */ -IconCache.prototype.createAndCacheIcon = function(icon, iconCache) { - return this.createAndCacheScaledIcon(icon, 1.0, iconCache); -}; - -/** - * Create or retrieve from cache an icon image for the icon row - * @param {module:extension/style.IconRow} icon icon row - * @param {Number} scale scale factor - * @param {module:extension/style.IconCache} iconCache icon cache - * @return {Promise} icon image - */ -IconCache.prototype.createAndCacheScaledIcon = async function(icon, scale, iconCache) { - var iconImage = null; - if (icon != null) { - var iconId = icon.getId(); - if (iconCache !== null) { - iconImage = iconCache.get(iconId); - } - var iconScaledWidth = Math.round(icon.getWidth() * scale); - var iconScaledHeight = Math.round(icon.getHeight() * scale); - if (!iconImage || iconImage.width !== iconScaledWidth || iconImage.height !== iconScaledHeight) { - iconImage = await icon.getScaledDataImage(scale); - } - if (iconCache !== null) { - iconCache.putIconForIconRow(icon, iconImage); - } - } - return iconImage; -}; - -IconCache.DEFAULT_CACHE_SIZE = 100; - -module.exports = IconCache; - -},{}],50:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class IconDao - */ - -var IconRow = require('./iconRow') - , MediaDao = require('../relatedTables/mediaDao'); - -var util = require('util'); - -/** - * Icon DAO for reading user icon data tables - * @extends {module:user/userDao~MediaDao} - * @param {module:db/geoPackageConnection~GeoPackageConnection} geoPackage connection - * @param {string} table table name - * @constructor - */ -var IconDao = function(geoPackage, table) { - MediaDao.call(this, geoPackage, table); - this.table = table; -}; - -util.inherits(IconDao, MediaDao); - -/** - * Create a new icon row - * @return {module:extension/style.IconRow} - */ -IconDao.prototype.newRow = function() { - return new IconRow(this.table); -}; - -/** - * Create a icon row with the column types and values - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @return {module:extension/style.IconRow} icon row - */ -IconDao.prototype.newRowWithColumnTypes = function (columnTypes, values) { - return new IconRow(this.table, columnTypes, values); -}; - -module.exports = IconDao; - -},{"../relatedTables/mediaDao":33,"./iconRow":51,"util":343}],51:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class IconRow - */ - -var MediaRow = require('../relatedTables/mediaRow'); -var util = require('util'); -var ImageUtils = require('../../tiles/imageUtils'); - -/** - * Icon Row - * @extends {module:extension/relatedTables~MediaRow} - * @param {module:extension/style.IconTable} iconTable icon table - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @constructor - */ -var IconRow = function(iconTable, columnTypes, values) { - MediaRow.call(this, iconTable, columnTypes, values); - this.iconTable = iconTable; -}; - -util.inherits(IconRow, MediaRow); - -/** - * Get the name column - * @return {module:user/userColumn~UserColumn} - */ -IconRow.prototype.getNameColumn = function() { - return this.iconTable.getNameColumn(); -}; - -/** - * Gets the name - * @return {String} - */ -IconRow.prototype.getName = function() { - return this.getValueWithColumnName(this.getNameColumn().name); -}; - -/** - * Sets the name for the row - * @param {String} name name - */ -IconRow.prototype.setName = function(name) { - this.setValueWithColumnName(this.getNameColumn().name, name); -}; - -/** - * Get the description column - * @return {module:user/userColumn~UserColumn} - */ -IconRow.prototype.getDescriptionColumn = function() { - return this.iconTable.getDescriptionColumn(); -}; - -/** - * Gets the description - * @return {String} - */ -IconRow.prototype.getDescription = function() { - return this.getValueWithColumnName(this.getDescriptionColumn().name); -}; - -/** - * Sets the description for the row - * @param {string} description description - */ -IconRow.prototype.setDescription = function(description) { - this.setValueWithColumnName(this.getDescriptionColumn().name, description); -}; - -/** - * Get the width column - * @return {module:user/userColumn~UserColumn} - */ -IconRow.prototype.getWidthColumn = function() { - return this.iconTable.getWidthColumn(); -}; - -/** - * Gets the width - * @return {Number} - */ -IconRow.prototype.getWidth = function() { - return this.getValueWithColumnName(this.getWidthColumn().name); -}; - -/** - * Sets the width for the row - * @param {Number} width width - */ -IconRow.prototype.setWidth = function(width) { - this.setValueWithColumnName(this.getWidthColumn().name, width); -}; - -/** - * Get the width or derived width from the icon data and scaled as needed - * for the height - * - * @return {Promise} derived width - */ -IconRow.prototype.getDerivedWidth = function() { - var width = this.getWidth(); - if (width === undefined || width === null) { - width = this.getDerivedDimensions()[0]; - } - return width; -}; - -/** - * Get the height column - * @return {module:user/userColumn~UserColumn} - */ -IconRow.prototype.getHeightColumn = function() { - return this.iconTable.getHeightColumn(); -}; - -/** - * Gets the height - * @return {Number} - */ -IconRow.prototype.getHeight = function() { - return this.getValueWithColumnName(this.getHeightColumn().name); -}; - -/** - * Sets the height for the row - * @param {Number} height height - */ -IconRow.prototype.setHeight = function(height) { - this.setValueWithColumnName(this.getHeightColumn().name, height); -}; - -/** - * Get the height or derived height from the icon data and scaled as needed - * for the width - * - * @return {Promise} derived height - */ -IconRow.prototype.getDerivedHeight = function() { - var height = this.getHeight(); - if (height === undefined || height === null) { - height = this.getDerivedDimensions()[1]; - } - return height; -}; - -/** - * Get the derived width and height from the values and icon data, scaled as needed - * @return {Number[]} derived dimensions array with two values, width at index 0, height at index 1 - */ -IconRow.prototype.getDerivedDimensions = function() { - var width = this.getWidth(); - var height = this.getHeight(); - if (width === undefined || width === null || height === undefined || height === null) { - var dataWidth; - var dataHeight; - var imageSize = ImageUtils.getImageSize(this.getData()); - dataWidth = imageSize.width; - dataHeight = imageSize.height; - if (width === undefined || width === null) { - width = dataWidth; - if (height !== undefined && height !== null) { - width *= (height / dataHeight); - } - } - if (height === undefined || height === null) { - height = dataHeight; - if (width !== undefined && width !== null) { - height *= (width / dataWidth); - } - } - } - return [width, height]; -}; - -/** - * Get the anchor_u column - * @return {module:user/userColumn~UserColumn} - */ -IconRow.prototype.getAnchorUColumn = function() { - return this.iconTable.getAnchorUColumn(); -}; - -/** - * Gets the anchor_u - * @return {Number} - */ -IconRow.prototype.getAnchorU = function() { - return this.getValueWithColumnName(this.getAnchorUColumn().name); -}; - -/** - * Sets the anchor_u for the row - * @param {Number} anchor_u anchor_u - */ -IconRow.prototype.setAnchorU = function(anchor_u) { - this.validateAnchor(anchor_u); - this.setValueWithColumnName(this.getAnchorUColumn().name, anchor_u); -}; - -/** - * Get the anchor u value or the default value of 0.5 - * @return {Number} anchor u value - */ -IconRow.prototype.getAnchorUOrDefault = function() { - var anchorU = this.getAnchorU(); - if (anchorU == null) { - anchorU = 0.5; - } - return anchorU; -}; - -/** - * Get the anchor_v column - * @return {module:user/userColumn~UserColumn} - */ -IconRow.prototype.getAnchorVColumn = function() { - return this.iconTable.getAnchorVColumn(); -}; - -/** - * Gets the anchor_v - * @return {Number} - */ -IconRow.prototype.getAnchorV = function() { - return this.getValueWithColumnName(this.getAnchorVColumn().name); -}; - -/** - * Sets the anchor_v for the row - * @param {Number} anchor_v anchor_v - */ -IconRow.prototype.setAnchorV = function(anchor_v) { - this.validateAnchor(anchor_v); - this.setValueWithColumnName(this.getAnchorVColumn().name, anchor_v); -}; - -/** - * Get the anchor v value or the default value of 1.0 - * @return {Number} anchor v value - */ -IconRow.prototype.getAnchorVOrDefault = function() { - var anchorV = this.getAnchorV(); - if (anchorV == null) { - anchorV = 1.0; - } - return anchorV; -}; - -/** - * Validate the anchor value - * @param {Number} anchor anchor - */ -IconRow.prototype.validateAnchor = function(anchor) { - if (anchor != null && (anchor < 0.0 || anchor > 1.0)) { - throw new Error("Anchor must be set inclusively between 0.0 and 1.0, invalid value: " + anchor); - } -}; - -module.exports = IconRow; - -},{"../../tiles/imageUtils":89,"../relatedTables/mediaRow":34,"util":343}],52:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class IconTable - */ - -var MediaTable = require('../relatedTables/mediaTable') - , UserCustomColumn = require('../../user/custom/userCustomColumn') - , DataTypes = require('../../db/dataTypes'); - -var util = require('util'); - -/** - * Icon Requirements Class Media Table - * @class - * @extends {module:extension/relatedTables~MediaTable} - * @param {string} tableName table name - * @param {module:user/userColumn~UserColumn[]} columns media columns - * @param {string[]} requiredColumns required column names - */ -var IconTable = function(tableName, columns, requiredColumns) { - MediaTable.call(this, tableName, columns, requiredColumns); -}; - -util.inherits(IconTable, MediaTable); - -/** - * Create a media table with a minimum required columns followed by the additional columns - * @return {module:extension/relatedTables~MediaTable} - */ -IconTable.create = function() { - return new IconTable(IconTable.TABLE_NAME, IconTable.createColumns(), IconTable.requiredColumns()); -}; - -IconTable.createRequiredColumns = function() { - return MediaTable.createRequiredColumns(); -}; - -/** - * Get the required columns - * @return {string[]} - */ -IconTable.requiredColumns = function() { - return MediaTable.requiredColumns(); -}; - -/** - * Create the columns - * @return {module:user/userColumn~UserColumn[]} - */ -IconTable.createColumns = function() { - var columns = IconTable.createRequiredColumns(); - var index = columns.length; - columns.push(UserCustomColumn.createColumn(index++, IconTable.COLUMN_NAME, DataTypes.GPKGDataType.GPKG_DT_TEXT, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index++, IconTable.COLUMN_DESCRIPTION, DataTypes.GPKGDataType.GPKG_DT_TEXT, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index++, IconTable.COLUMN_WIDTH, DataTypes.GPKGDataType.GPKG_DT_REAL, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index++, IconTable.COLUMN_HEIGHT, DataTypes.GPKGDataType.GPKG_DT_REAL, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index++, IconTable.COLUMN_ANCHOR_U, DataTypes.GPKGDataType.GPKG_DT_REAL, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index, IconTable.COLUMN_ANCHOR_V, DataTypes.GPKGDataType.GPKG_DT_REAL, undefined, false, undefined)); - return columns; -}; - -/** - * Get the name column index - * @return int - */ -IconTable.prototype.getNameColumnIndex = function() { - return this.getColumnIndex(IconTable.COLUMN_NAME); -}; - -/** - * Get the name column - * @return {module:user/userColumn~UserColumn} - */ -IconTable.prototype.getNameColumn = function() { - return this.getColumnWithColumnName(IconTable.COLUMN_NAME); -}; - -/** - * Get the description column index - * @return int - */ -IconTable.prototype.getDescriptionColumnIndex = function() { - return this.getColumnIndex(IconTable.COLUMN_DESCRIPTION); -}; - -/** - * Get the description column - * @return {module:user/userColumn~UserColumn} - */ -IconTable.prototype.getDescriptionColumn = function() { - return this.getColumnWithColumnName(IconTable.COLUMN_DESCRIPTION); -}; - -/** - * Get the width column index - * @return int - */ -IconTable.prototype.getWidthColumnIndex = function() { - return this.getColumnIndex(IconTable.COLUMN_WIDTH); -}; - -/** - * Get the width column - * @return {module:user/userColumn~UserColumn} - */ -IconTable.prototype.getWidthColumn = function() { - return this.getColumnWithColumnName(IconTable.COLUMN_WIDTH); -}; - -/** - * Get the height column index - * @return int - */ -IconTable.prototype.getHeightColumnIndex = function() { - return this.getColumnIndex(IconTable.COLUMN_HEIGHT); -}; - -/** - * Get the height column - * @return {module:user/userColumn~UserColumn} - */ -IconTable.prototype.getHeightColumn = function() { - return this.getColumnWithColumnName(IconTable.COLUMN_HEIGHT); -}; - -/** - * Get the anchor_u column index - * @return int - */ -IconTable.prototype.getAnchorUColumnIndex = function() { - return this.getColumnIndex(IconTable.COLUMN_ANCHOR_U); -}; - -/** - * Get the anchor_u column - * @return {module:user/userColumn~UserColumn} - */ -IconTable.prototype.getAnchorUColumn = function() { - return this.getColumnWithColumnName(IconTable.COLUMN_ANCHOR_U); -}; - -/** - * Get the anchor_v column index - * @return int - */ -IconTable.prototype.getAnchorVColumnIndex = function() { - return this.getColumnIndex(IconTable.COLUMN_ANCHOR_V); -}; - -/** - * Get the anchor_v column - * @return {module:user/userColumn~UserColumn} - */ -IconTable.prototype.getAnchorVColumn = function() { - return this.getColumnWithColumnName(IconTable.COLUMN_ANCHOR_V); -}; - -IconTable.TABLE_NAME = 'nga_icon'; -IconTable.COLUMN_NAME = 'name'; -IconTable.COLUMN_DESCRIPTION = 'description'; -IconTable.COLUMN_WIDTH = 'width'; -IconTable.COLUMN_HEIGHT = 'height'; -IconTable.COLUMN_ANCHOR_U = 'anchor_u'; -IconTable.COLUMN_ANCHOR_V = 'anchor_v'; -IconTable.prototype.TABLE_TYPE = 'media'; - -module.exports = IconTable; - -},{"../../db/dataTypes":14,"../../user/custom/userCustomColumn":101,"../relatedTables/mediaTable":35,"util":343}],53:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class Icons - */ - -/** - * Icons constructor - * @constructor - */ -var Icons = function() { - this.defaultIcon = null; - this.icons = {}; -}; - -Icons.prototype.setDefault = function(iconRow) { - this.defaultIcon = iconRow; -}; - -Icons.prototype.getDefault = function() { - return this.defaultIcon; -}; - -Icons.prototype.setIcon = function(iconRow, geometryType) { - if (geometryType != null) { - if (iconRow != null) { - this.icons[geometryType] = iconRow; - } else { - delete this.icons[geometryType]; - } - } else { - this.setDefault(iconRow); - } -}; - -Icons.prototype.getIcon = function(geometryType) { - var iconRow = null; - if (geometryType != null) { - iconRow = this.icons[geometryType]; - } - if (iconRow === null || geometryType === null) { - iconRow = this.getDefault(); - } - return iconRow; -}; - -Icons.prototype.isEmpty = function() { - return Object.keys(this.icons).length === 0 && this.defaultIcon === null; -}; - -module.exports = Icons; - -},{}],54:[function(require,module,exports){ -/** - * @module extension/style - */ - -var BaseExtension = require('../baseExtension') - , Extension = require('../.').Extension - , ContentsIdDao = require('../contents/contentsIdDao') - , IconTable = require('./iconTable') - , IconDao = require('./iconDao') - , StyleTable = require('./styleTable') - , StyleDao = require('./styleDao') - , StyleMappingTable = require('./styleMappingTable') - , StyleMappingDao = require('./styleMappingDao') - , UserMappingTable = require('../relatedTables/userMappingTable') - , FeatureStyles = require('./featureStyles') - , FeatureStyle = require('./featureStyle') - , Styles = require('./styles') - , Icons = require('./icons') - , StyleTableReader = require('./styleTableReader') - , UserTableReader = require('../../user/userTableReader'); - -var util = require('util'); - -/** - * Style extension - * @param {module:geoPackage~GeoPackage} geoPackage GeoPackage object - * @extends {module:extension/baseExtension~BaseExtension} - * @constructor - */ -var FeatureStyleExtension = function(geoPackage) { - BaseExtension.call(this, geoPackage); - this.relatedTablesExtension = geoPackage.getRelatedTablesExtension(); - this.contentsIdExtension = geoPackage.getContentsIdExtension(); -}; - -util.inherits(FeatureStyleExtension, BaseExtension); - -/** - * Get or create the metadata extension - * @param {module:features/user/featureTable|String} featureTable, defaults to null - * @return {Promise} - */ -FeatureStyleExtension.prototype.getOrCreateExtension = function(featureTable) { - return this.getOrCreate(FeatureStyleExtension.EXTENSION_NAME, this.getFeatureTableName(featureTable), null, FeatureStyleExtension.EXTENSION_DEFINITION, Extension.READ_WRITE); -}; - -/** - * Determine if the GeoPackage has the extension or has the extension for the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - * @returns {Boolean} - */ -FeatureStyleExtension.prototype.has = function (featureTable) { - return this.hasExtension(FeatureStyleExtension.EXTENSION_NAME, this.getFeatureTableName(featureTable), null); -}; - -/** - * Gets featureTables - * @returns {String[]} - */ -FeatureStyleExtension.prototype.getTables = function() { - var tables = []; - if (this.extensionsDao.isTableExists()) { - var extensions = this.extensionsDao.queryAllByExtension(FeatureStyleExtension.EXTENSION_NAME); - for (var i = 0; i < extensions.length; i++) { - tables.push(extensions[i].table_name); - } - } - return tables; -}; - -/** - * Get the related tables extension - * @returns {module:extension/relatedTables~RelatedTablesExtension} - */ -FeatureStyleExtension.prototype.getRelatedTables = function () { - return this.relatedTablesExtension; -}; - -/** - * Get the contentsId extension - * @returns {module:extension/contents~ContentsIdExtension} - */ -FeatureStyleExtension.prototype.getContentsId = function () { - return this.contentsIdExtension; -}; - -/** - * Create style, icon, table style, and table icon relationships for the - * feature table - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {Promise} - */ -FeatureStyleExtension.prototype.createRelationships = function(featureTable) { - var promises = []; - promises.push(this.createStyleRelationship(featureTable)); - promises.push(this.createTableStyleRelationship(featureTable)); - promises.push(this.createIconRelationship(featureTable)); - promises.push(this.createTableIconRelationship(featureTable)); - return Promise.all(promises); -}; - -/** - * Check if feature table has a style, icon, table style, or table icon - * relationships - * @param {module:features/user/featureTable|String} featureTable feature table - * @returns {boolean} - */ -FeatureStyleExtension.prototype.hasRelationship = function(featureTable) { - return this.hasStyleRelationship(featureTable) - || this.hasTableStyleRelationship(featureTable) - || this.hasIconRelationship(featureTable) - || this.hasTableIconRelationship(featureTable); -}; - -/** - * Create a style relationship for the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {Promise} - */ -FeatureStyleExtension.prototype.createStyleRelationship = function(featureTable) { - return this._createStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_STYLE, featureTable), this.getFeatureTableName(featureTable), this.getFeatureTableName(featureTable), StyleTable.TABLE_NAME); -}; - -/** - * Determine if a style relationship exists for the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - * @returns {boolean} - */ -FeatureStyleExtension.prototype.hasStyleRelationship = function(featureTable) { - return this._hasStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_STYLE, featureTable), this.getFeatureTableName(featureTable), StyleTable.TABLE_NAME); -}; - -/** - * Create a feature table style relationship - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {Promise} - */ -FeatureStyleExtension.prototype.createTableStyleRelationship = function(featureTable) { - return this._createStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_TABLE_STYLE, featureTable), this.getFeatureTableName(featureTable), ContentsIdDao.TABLE_NAME, StyleTable.TABLE_NAME); -}; - -/** - * Determine if a feature table style relationship exists - * @param {module:features/user/featureTable|String} featureTable feature table - * @returns {boolean} true if relationship exists - */ -FeatureStyleExtension.prototype.hasTableStyleRelationship = function(featureTable) { - return this._hasStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_TABLE_STYLE, featureTable), ContentsIdDao.TABLE_NAME, StyleTable.TABLE_NAME); -}; - -/** - * Create an icon relationship for the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {Promise} - */ -FeatureStyleExtension.prototype.createIconRelationship = function(featureTable) { - return this._createStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_ICON, featureTable), this.getFeatureTableName(featureTable), this.getFeatureTableName(featureTable), IconTable.TABLE_NAME); -}; - -/** - * Determine if an icon relationship exists for the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - * @returns {boolean} true if relationship exists - */ -FeatureStyleExtension.prototype.hasIconRelationship = function(featureTable) { - return this._hasStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_ICON, featureTable), this.getFeatureTableName(featureTable), IconTable.TABLE_NAME); -}; - -/** - * Create a feature table icon relationship - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {Promise} - */ -FeatureStyleExtension.prototype.createTableIconRelationship = function(featureTable) { - return this._createStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_TABLE_ICON, featureTable), this.getFeatureTableName(featureTable), ContentsIdDao.TABLE_NAME, IconTable.TABLE_NAME); -}; - -/** - * Determine if a feature table icon relationship exists - * @param {module:features/user/featureTable|String} featureTable feature table - * @returns {Boolean} true if relationship exists - */ -FeatureStyleExtension.prototype.hasTableIconRelationship = function(featureTable) { - return this._hasStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_TABLE_ICON, featureTable), ContentsIdDao.TABLE_NAME, IconTable.TABLE_NAME); -}; - -/** - * Get the mapping table name - * @param tablePrefix table name prefix - * @param {module:features/user/featureTable|String} featureTable feature table name - * @returns {String} mapping table name - */ -FeatureStyleExtension.prototype.getMappingTableName = function(tablePrefix, featureTable) { - return tablePrefix + this.getFeatureTableName(featureTable); -}; - -/** - * Check if the style extension relationship between a feature table and - * style extension table exists - * @param {String} mappingTableName mapping table name - * @param {String} baseTable base table name - * @param {String} relatedTable related table name - * @returns {boolean} true if relationship exists - */ -FeatureStyleExtension.prototype._hasStyleRelationship = function(mappingTableName, baseTable, relatedTable) { - return this.relatedTablesExtension.hasRelations(baseTable, relatedTable, mappingTableName).length !== 0; -}; - -/** - * Create a style extension relationship between a feature table and style - * extension table - * @param {String} mappingTableName mapping table name - * @param {String} featureTable feature table - * @param {String} baseTable base table name - * @param {String} relatedTable related table name - * @return {Promise} - * @private - */ -FeatureStyleExtension.prototype._createStyleRelationship = function(mappingTableName, featureTable, baseTable, relatedTable) { - if (!this._hasStyleRelationship(mappingTableName, baseTable, relatedTable)) { - // Create the extension - return this.getOrCreateExtension(featureTable).then(function () { - if (baseTable === ContentsIdDao.TABLE_NAME && !this.contentsIdExtension.has()) { - return this.contentsIdExtension.getOrCreateExtension().then(function () { - return this._handleCreateStyleRelationship(mappingTableName, baseTable, relatedTable); - }.bind(this)); - } else { - return this._handleCreateStyleRelationship(mappingTableName, baseTable, relatedTable); - } - }.bind(this)); - } else { - return Promise.resolve(); - } -}; - -/** - * Private function to aid in creation of the a style extension relationship between a feature table and style extension table - * @param {String} mappingTableName - * @param {String} baseTable - * @param {String} relatedTable - * @return {Promise} - * @private - */ -FeatureStyleExtension.prototype._handleCreateStyleRelationship = function(mappingTableName, baseTable, relatedTable) { - if (relatedTable === StyleTable.TABLE_NAME) { - return this.relatedTablesExtension.addAttributesRelationship(this.geoPackage.getRelatedTablesExtension().getRelationshipBuilder() - .setBaseTableName(baseTable) - .setUserMappingTable(StyleMappingTable.create(mappingTableName)) - .setRelatedTable(StyleTable.create())); - } else { - return this.relatedTablesExtension.addMediaRelationship(this.geoPackage.getRelatedTablesExtension().getRelationshipBuilder() - .setBaseTableName(baseTable) - .setUserMappingTable(StyleMappingTable.create(mappingTableName)) - .setRelatedTable(IconTable.create())); - } -}; - -/** - * Delete the style and icon table and row relationships for all feature - * tables - */ -FeatureStyleExtension.prototype.deleteAllRelationships = function() { - var tables = this.getTables(); - for (var i = 0; i < tables.length; i++) { - this.deleteRelationships(tables[i]); - } -}; - -/** - * Delete the style and icon table and row relationships for the feature - * table - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteRelationships = function(featureTable) { - this.deleteStyleRelationship(featureTable); - this.deleteTableStyleRelationship(featureTable); - this.deleteIconRelationship(featureTable); - this.deleteTableIconRelationship(featureTable); -}; - -/** - * Delete a style relationship for the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteStyleRelationship = function(featureTable) { - this._deleteStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_STYLE, featureTable), featureTable); -}; - -/** - * Delete a table style relationship for the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteTableStyleRelationship = function(featureTable) { - this._deleteStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_TABLE_STYLE, featureTable), featureTable); -}; - -/** - * Delete a icon relationship for the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteIconRelationship = function(featureTable) { - this._deleteStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_ICON, featureTable), featureTable); -}; - -/** - * Delete a table icon relationship for the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteTableIconRelationship = function(featureTable) { - this._deleteStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_TABLE_ICON, featureTable), featureTable); -}; - -/** - * Delete a style extension feature table relationship and the mapping table - * @param {String} mappingTableName - * @param {module:features/user/featureTable|String} featureTable feature table - * @private - */ -FeatureStyleExtension.prototype._deleteStyleRelationship = function(mappingTableName, featureTable) { - var relationships = this.geoPackage.getExtendedRelationDao().queryByMappingTableName(mappingTableName); - for (var i = 0; i < relationships.length; i++) { - this.relatedTablesExtension.removeRelationship(relationships[i]); - } - if (!this.hasRelationship(featureTable)) { - if (this.extensionsDao.isTableExists()) { - this.extensionsDao.deleteByExtension(FeatureStyleExtension.EXTENSION_NAME, this.getFeatureTableName(featureTable)); - } - } -}; - -/** - * Get a Style Mapping DAO - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {module:extension/style.StyleMappingDao} style mapping DAO - */ -FeatureStyleExtension.prototype.getStyleMappingDao = function (featureTable) { - return this._getMappingDao(FeatureStyleExtension.TABLE_MAPPING_STYLE, featureTable); -}; - -/** - * Get a Table Style Mapping DAO - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {module:extension/style.StyleMappingDao} table style mapping DAO - */ -FeatureStyleExtension.prototype.getTableStyleMappingDao = function (featureTable) { - return this._getMappingDao(FeatureStyleExtension.TABLE_MAPPING_TABLE_STYLE, featureTable); -}; - -/** - * Get a Icon Mapping DAO - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {module:extension/style.StyleMappingDao} icon mapping DAO - */ -FeatureStyleExtension.prototype.getIconMappingDao = function (featureTable) { - return this._getMappingDao(FeatureStyleExtension.TABLE_MAPPING_ICON, featureTable); -}; - -/** - * Get a Table Icon Mapping DAO - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {module:extension/style.StyleMappingDao} table icon mapping DAO - */ -FeatureStyleExtension.prototype.getTableIconMappingDao = function (featureTable) { - return this._getMappingDao(FeatureStyleExtension.TABLE_MAPPING_TABLE_ICON, featureTable); -}; - -/** - * Get a Style Mapping DAO from a table name - * @param {String} tablePrefix table name prefix - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {module:extension/style.StyleMappingDao} style mapping dao - * @private - */ -FeatureStyleExtension.prototype._getMappingDao = function (tablePrefix, featureTable) { - var featureTableName = this.getFeatureTableName(featureTable); - var tableName = tablePrefix + featureTableName; - var dao = null; - if (this.geoPackage.isTable(tableName)) { - dao = new StyleMappingDao(this.relatedTablesExtension.getUserDao(tableName, UserMappingTable.requiredColumns()), this.geoPackage); - } - return dao; -}; - -/** - * Get a style DAO - * @return {module:extension/style.StyleDao} style DAO - */ -FeatureStyleExtension.prototype.getStyleDao = function () { - var styleDao = null; - if (this.geoPackage.isTable(StyleTable.TABLE_NAME)) { - var dao = this.geoPackage.getContentsDao(); - var contents = dao.queryForId(StyleTable.TABLE_NAME); - if (contents) { - var reader = new StyleTableReader(contents.table_name); - var table = reader.readTable(this.geoPackage.connection); - this.relatedTablesExtension.setContents(table); - styleDao = new StyleDao(this.geoPackage, table); - } - } - return styleDao; -}; - -/** - * Get a icon DAO - * @return {module:extension/style.IconDao} - */ -FeatureStyleExtension.prototype.getIconDao = function() { - var iconDao = null; - if (this.geoPackage.isTable(IconTable.TABLE_NAME)) { - var reader = new UserTableReader(IconTable.TABLE_NAME, IconTable.requiredColumns()); - var userTable = reader.readTable(this.geoPackage.getDatabase()); - var table = new IconTable(userTable.table_name, userTable.columns, IconTable.requiredColumns()); - table.setContents(this.geoPackage.getContentsDao().queryForId(IconTable.TABLE_NAME)); - iconDao = new IconDao(this.geoPackage, table); - } - return iconDao; -}; - -/** - * Get the feature table default feature styles - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {module:extension/style.FeatureStyles} table feature styles or null - */ -FeatureStyleExtension.prototype.getTableFeatureStyles = function(featureTable) { - var featureStyles = null; - var id = this.contentsIdExtension.getIdByTableName(this.getFeatureTableName(featureTable)); - if (id !== null) { - var styles = this.getTableStyles(featureTable); - var icons = this.getTableIcons(featureTable); - if (styles !== null || icons !== null) { - featureStyles = new FeatureStyles(styles, icons); - } - } - return featureStyles; -}; - -/** - * Get the default style of the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {module:extension/style.StyleRow} style row - */ -FeatureStyleExtension.prototype.getTableStyleDefault = function(featureTable) { - return this.getTableStyle(featureTable, null); -}; - -/** - * Get the style of the feature table and geometry type - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {String} geometryType geometry type - * @return {module:extension/style.StyleRow} style row - */ -FeatureStyleExtension.prototype.getTableStyle = function(featureTable, geometryType) { - var style = null; - var styles = this.getTableStyles(featureTable); - if (styles !== null) { - if (geometryType === null) { - style = styles.getDefault(); - } else { - style = styles.getStyle(geometryType); - } - } - return style; -}; - -/** - * Get the feature table default styles - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {module:extension/style.Styles} table styles or null - */ -FeatureStyleExtension.prototype.getTableStyles = function(featureTable) { - var styles = null; - var id = this.contentsIdExtension.getIdByTableName(this.getFeatureTableName(featureTable)); - if (id !== null) { - styles = this.getStyles(id, this.getTableStyleMappingDao(featureTable)); - } - return styles; -}; - -/** - * Get the default icon of the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {module:extension/style.IconRow} icon row - */ -FeatureStyleExtension.prototype.getTableIconDefault = function(featureTable) { - return this.getTableIcon(featureTable, null); -}; - -/** - * Get the icon of the feature table and geometry type - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {String} geometryType geometry type - * @return {module:extension/style.IconRow} icon row - */ -FeatureStyleExtension.prototype.getTableIcon = function(featureTable, geometryType) { - var icon = null; - var icons = this.getTableIcons(featureTable); - if (icons !== null) { - if (geometryType === null) { - icon = icons.getDefault(); - } else { - icon = icons.getIcon(geometryType); - } - } - return icon; -}; - -/** - * Get the feature table default icons - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {module:extension/style.Icons} table icons or null - */ -FeatureStyleExtension.prototype.getTableIcons = function(featureTable) { - var icons = null; - var id = this.contentsIdExtension.getIdByTableName(this.getFeatureTableName(featureTable)); - if (id !== null) { - icons = this.getIcons(id, this.getTableIconMappingDao(featureTable)); - } - return icons; -}; - -/** - * Gets Icons for featureId and mappingDao - * @param {Number} featureId - * @param mappingDao - * @returns {module:extension/style.Icons} - * @private - */ -FeatureStyleExtension.prototype.getIcons = function(featureId, mappingDao) { - var icons = new Icons(); - if (mappingDao !== null) { - var iconDao = this.getIconDao(); - var styleMappingRows = mappingDao.queryByBaseId(featureId); - for (var i = 0; i < styleMappingRows.length; i++) { - var styleMappingRow = mappingDao.createObject(styleMappingRows[i]); - var iconRow = iconDao.queryForId(styleMappingRow.getRelatedId()); - if (styleMappingRow.getGeometryTypeName() === null) { - icons.setDefault(iconRow); - } else { - icons.setIcon(iconRow, styleMappingRow.getGeometryTypeName()); - } - } - } - if (icons.isEmpty()) { - icons = null; - } - return icons; -}; - -/** - * Gets Styles for featureId and mappingDao - * @param {Number} featureId - * @param {module:extension/style.StyleMappingDao} mappingDao - * @returns {module:extension/style.Styles} - */ -FeatureStyleExtension.prototype.getStyles = function(featureId, mappingDao) { - var styles = new Styles(); - if (mappingDao !== null) { - var styleDao = this.getStyleDao(); - var styleMappingRows = mappingDao.queryByBaseId(featureId); - for (var i = 0; i < styleMappingRows.length; i++) { - var styleMappingRow = mappingDao.createObject(styleMappingRows[i]); - var styleRow = styleDao.queryForId(styleMappingRow.getRelatedId()); - if (styleMappingRow.getGeometryTypeName() === null) { - styles.setDefault(styleRow); - } else { - styles.setStyle(styleRow, styleMappingRow.getGeometryTypeName()); - } - } - } - if (styles.isEmpty()) { - styles = null; - } - return styles; -}; - -/** - * Get the feature styles for the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.FeatureStyles} feature styles or null - */ -FeatureStyleExtension.prototype.getFeatureStylesForFeatureRow = function(featureRow) { - return this.getFeatureStyles(featureRow.featureTable, featureRow.getId()); -}; -/** - * Get the feature styles for the feature row - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @return {module:extension/style.FeatureStyles} feature styles or null - */ -FeatureStyleExtension.prototype.getFeatureStyles = function(featureTable, featureId) { - var styles = this.getStyles(featureId, this.getStyleMappingDao(featureTable)); - var icons = this.getIcons(featureId, this.getIconMappingDao(featureTable)); - var featureStyles = null; - if (styles !== null || icons !== null) { - featureStyles = new FeatureStyles(styles, icons); - } - return featureStyles; -}; - -/** - * Get the styles for the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.Styles} styles or null - */ -FeatureStyleExtension.prototype.getStylesForFeatureRow = function(featureRow) { - return this.getStyles(featureRow.getId(), this.getStyleMappingDao(featureRow.featureTable.table_name)); -}; -/** - * Get the styles for the feature id - * @param {String} tableName table name - * @param {Number} featureId feature id - * @return {module:extension/style.Styles} styles or null - */ -FeatureStyleExtension.prototype.getStylesForFeatureId = function(tableName, featureId) { - return this.getStyles(featureId, this.getStyleMappingDao(tableName)); -}; - -/** - * Get the icons for the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.Icons} icons or null - */ -FeatureStyleExtension.prototype.getIconsForFeatureRow = function(featureRow) { - return this.getIcons(featureRow.getId(), this.getIconMappingDao(featureRow.featureTable.table_name)); -}; - -/** - * Get the icons for the feature id - * @param {String} tableName table name - * @param {Number} featureId feature id - * @return {module:extension/style.Icons} icons or null - */ -FeatureStyleExtension.prototype.getIconsForFeatureId = function(tableName, featureId) { - return this.getIcons(featureId, this.getIconMappingDao(tableName)); -}; - -/** - * Get the feature style (style and icon) of the feature row, searching in - * order: feature geometry type style or icon, feature default style or - * icon, table geometry type style or icon, table default style or icon - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.FeatureStyle} feature style - */ -FeatureStyleExtension.prototype.getFeatureStyleForFeatureRow = function(featureRow) { - return new FeatureStyle(this.getStyle(featureRow.featureTable.table_name, featureRow.getId(), featureRow.getGeometryType(), true), this.getIcon(featureRow.featureTable.table_name, featureRow.getId(), featureRow.getGeometryType(), true)); -}; - -/** - * Get the feature style (style and icon) of the feature, searching in - * order: feature geometry type style or icon, feature default style or - * icon, table geometry type style or icon, table default style or icon - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.FeatureStyle} feature style - */ -FeatureStyleExtension.prototype.getFeatureStyleDefault = function(featureRow) { - return new FeatureStyle(this.getStyle(featureRow.featureTable.table_name, featureRow.getId(), null, true), this.getIcon(featureRow.featureTable.table_name, featureRow.getId(), null, true)); -}; - -/** - * Get the icon of the feature, searching in order: feature geometry type - * icon, feature default icon, when tableIcon enabled continue searching: - * table geometry type icon, table default icon - * @param {module:features/user/featureTable|String} featureTable - * @param {Number} featureId - * @param {String} geometryType - * @param {Boolean} tableIcon - * @returns {module:extension/style.IconRow} - * @private - */ -FeatureStyleExtension.prototype.getIcon = function(featureTable, featureId, geometryType, tableIcon) { - var iconRow = null; - var icons = this.getIcons(featureId, this.getIconMappingDao(featureTable)); - if (icons !== null) { - iconRow = icons.getIcon(geometryType); - } - if (iconRow === null && tableIcon) { - iconRow = this.getTableIcon(featureTable, geometryType); - } - return iconRow; -}; - -/** - * Get the style of the feature, searching in order: feature geometry type - * style, feature default style, when tableStyle enabled continue searching: - * table geometry type style, table default style - * @param {module:features/user/featureTable|String} featureTable - * @param {Number} featureId - * @param {String} geometryType - * @param {Boolean} tableStyle - * @returns {module:extension/style.StyleRow} - * @private - */ -FeatureStyleExtension.prototype.getStyle = function(featureTable, featureId, geometryType, tableStyle) { - var styleRow = null; - var styles = this.getStyles(featureId, this.getStyleMappingDao(featureTable)); - if (styles !== null) { - styleRow = styles.getStyle(geometryType); - } - if (styleRow === null && tableStyle) { - styleRow = this.getTableStyle(featureTable, geometryType); - } - return styleRow; -}; - -/** - * Set the feature table default feature styles - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {module:extension/style.FeatureStyles} featureStyles feature styles - * @return {Promise} - */ -FeatureStyleExtension.prototype.setTableFeatureStyles = function(featureTable, featureStyles) { - if (featureStyles !== null) { - var promises = []; - promises.push(this.setTableStyles(featureTable, featureStyles.getStyles())); - promises.push(this.setTableIcons(featureTable, featureStyles.getIcons())); - return Promise.all(promises); - } else { - this.deleteTableFeatureStyles(featureTable); - return Promise.resolve(); - } -}; - -/** - * Set the feature table default styles - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {module:extension/style.Styles} styles default styles - * @return {Promise} - */ -FeatureStyleExtension.prototype.setTableStyles = function(featureTable, styles) { - // var tableName = featureTable.table_name ? featureTable.table_name : featureTable; - this.deleteTableStyles(featureTable); - if (styles !== null) { - var promises = []; - if (styles.getDefault() !== null) { - promises.push(this.setTableStyleDefault(featureTable, styles.getDefault())); - } - var keys = Object.keys(styles.styles); - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - var value = styles.styles[key]; - promises.push(this.setTableStyle(featureTable, key, value)); - } - return Promise.all(promises); - } else { - return Promise.resolve(); - } -}; - -/** - * Set the feature table style default - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setTableStyleDefault = function(featureTable, style) { - return this.setTableStyle(featureTable, null, style); -}; - -/** - * Set the feature table style for the geometry type - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {String} geometryType geometry type - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setTableStyle = function(featureTable, geometryType, style) { - this.deleteTableStyle(featureTable, geometryType); - if (style !== null) { - return this.createTableStyleRelationship(featureTable).then(function () { - var featureContentsId = this.contentsIdExtension.getOrCreateIdByTableName(this.getFeatureTableName(featureTable)); - var styleId = this.getOrInsertStyle(style); - var mappingDao = this.getTableStyleMappingDao(featureTable); - this.insertStyleMapping(mappingDao, featureContentsId.id, styleId, geometryType); - }.bind(this)); - } else { - return Promise.resolve(); - } -}; - -/** - * Set the feature table default icons - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {module:extension/style.Icons} icons default icons - * @return {Promise} - */ -FeatureStyleExtension.prototype.setTableIcons = function(featureTable, icons) { - this.deleteTableIcons(featureTable); - if (icons !== null) { - var promises = []; - if (icons.getDefault() !== null) { - promises.push(this.setTableIconDefault(featureTable, icons.getDefault())); - } - var keys = Object.keys(icons.icons); - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - var value = icons.icons[key]; - promises.push(this.setTableIcon(featureTable, key, value)); - } - return Promise.all(promises); - } else { - return Promise.resolve(); - } -}; -/** - * Set the feature table icon default - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setTableIconDefault = function(featureTable, icon) { - return this.setTableIcon(featureTable, null, icon); -}; - -/** - * Set the feature table icon for the geometry type - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {String} geometryType geometry type - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setTableIcon = function(featureTable, geometryType, icon) { - this.deleteTableIcon(featureTable, geometryType); - if (icon !== null) { - return this.createTableIconRelationship(featureTable).then(function () { - var featureContentsId = this.contentsIdExtension.getOrCreateIdByTableName(this.getFeatureTableName(featureTable)); - var iconId = this.getOrInsertIcon(icon); - var mappingDao = this.getTableIconMappingDao(featureTable); - this.insertStyleMapping(mappingDao, featureContentsId.id, iconId, geometryType); - }.bind(this)); - } else { - return Promise.resolve(); - } -}; - -/** - * Set the feature styles for the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.FeatureStyles} featureStyles feature styles - * @return {Promise} - */ -FeatureStyleExtension.prototype.setFeatureStylesForFeatureRow = function(featureRow, featureStyles) { - return this.setFeatureStyles(featureRow.featureTable.table_name, featureRow.getId(), featureStyles); -}; - -/** - * Set the feature styles for the feature table and feature id - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {module:extension/style.FeatureStyles} featureStyles feature styles - * @return {Promise} - */ -FeatureStyleExtension.prototype.setFeatureStyles = function(featureTable, featureId, featureStyles) { - if (featureStyles !== null) { - var promises = []; - promises.push(this.setStyles(featureTable, featureId, featureStyles.getStyles())); - promises.push(this.setIcons(featureTable, featureId, featureStyles.getIcons())); - return Promise.all(promises); - } else { - this.deleteStyles(featureTable, featureId); - this.deleteIcons(featureTable, featureId); - return Promise.resolve(); - } -}; - -/** - * Set the feature style (style and icon) of the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.FeatureStyle} featureStyle feature style - * @return {Promise} - */ -FeatureStyleExtension.prototype.setFeatureStyleForFeatureRow = function(featureRow, featureStyle) { - return this.setFeatureStyleForFeatureRowAndGeometryType(featureRow, featureRow.getGeometryType(), featureStyle); -}; - -/** - * Set the feature style (style and icon) of the feature row for the - * specified geometry type - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - * @param {module:extension/style.FeatureStyle} featureStyle feature style - * @return {Promise} - */ -FeatureStyleExtension.prototype.setFeatureStyleForFeatureRowAndGeometryType = function(featureRow, geometryType, featureStyle) { - return this.setFeatureStyle(featureRow.featureTable.table_name, featureRow.getId(), geometryType, featureStyle); -}; - -/** - * Set the feature style default (style and icon) of the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.FeatureStyle} featureStyle feature style - * @return {Promise} - */ -FeatureStyleExtension.prototype.setFeatureStyleDefaultForFeatureRow = function(featureRow, featureStyle) { - return this.setFeatureStyle(featureRow.featureTable.table_name, featureRow.getId(), null, featureStyle); -}; - -/** - * Set the feature style (style and icon) of the feature - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - * @param {module:extension/style.FeatureStyle} featureStyle feature style - * @return {Promise} - */ -FeatureStyleExtension.prototype.setFeatureStyle = async function(featureTable, featureId, geometryType, featureStyle) { - if (featureStyle !== null) { - var promises = []; - promises.push(this.setStyle(featureTable, featureId, geometryType, featureStyle.getStyle())); - promises.push(this.setIcon(featureTable, featureId, geometryType, featureStyle.getIcon())); - return Promise.all(promises); - } else { - this.deleteStyle(featureTable, featureId, geometryType); - this.deleteIcon(featureTable, featureId, geometryType); - return Promise.resolve(); - } -}; - -/** - * Set the feature style (style and icon) of the feature - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {module:extension/style.FeatureStyle} featureStyle feature style - * @return {Promise} - */ -FeatureStyleExtension.prototype.setFeatureStyleDefault = function(featureTable, featureId, featureStyle) { - return this.setFeatureStyle(featureTable, featureId, null, featureStyle); -}; - -/** - * Set the styles for the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.Styles} styles styles - * @return {Promise} - */ -FeatureStyleExtension.prototype.setStylesForFeatureRow = function(featureRow, styles) { - return this.setStyles(featureRow.featureTable.table_name, featureRow.getId(), styles); -}; - -/** - * Set the styles for the feature table and feature id - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {module:extension/style.Styles} styles styles - * @return {Promise} - */ -FeatureStyleExtension.prototype.setStyles = function(featureTable, featureId, styles) { - this.deleteStylesForFeatureId(featureTable, featureId); - if (styles !== null) { - var promises = []; - if (styles.getDefault() !== null) { - promises.push(this.setStyleDefault(featureTable, featureId, styles.getDefault())); - } - var keys = Object.keys(styles.styles); - for (var i = 0; i < keys.length; i++) { - promises.push(this.setStyle(featureTable, featureId, keys[i], styles.styles[keys[i]])); - } - return Promise.all(promises); - } else { - return Promise.resolve(); - } -}; - -/** - * Set the style of the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setStyleForFeatureRow = function(featureRow, style) { - return this.setStyleForFeatureRowAndGeometryType(featureRow, featureRow.getGeometryType(), style); -}; - -/** - * Set the style of the feature row for the specified geometry type - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setStyleForFeatureRowAndGeometryType = function(featureRow, geometryType, style) { - return this.setStyle(featureRow.featureTable.table_name, featureRow.getId(), geometryType, style); -}; - -/** - * Set the default style of the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setStyleDefaultForFeatureRow = function(featureRow, style) { - return this.setStyle(featureRow.featureTable.table_name, featureRow.getId(), null, style); -}; - -/** - * Set the style of the feature - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setStyle = function(featureTable, featureId, geometryType, style) { - this.deleteStyle(featureTable, featureId, geometryType); - if (style !== null) { - return this.createStyleRelationship(featureTable).then(function () { - var styleId = this.getOrInsertStyle(style); - var mappingDao = this.getStyleMappingDao(featureTable); - this.insertStyleMapping(mappingDao, featureId, styleId, geometryType); - }.bind(this)); - } else { - return Promise.resolve(); - } -}; - -/** - * Set the default style of the feature - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setStyleDefault = function(featureTable, featureId, style) { - return this.setStyle(featureTable, featureId, null, style); -}; - -/** - * Set the icons for the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.Icons} icons icons - * @return {Promise} - */ -FeatureStyleExtension.prototype.setIconsForFeatureRow = function(featureRow, icons) { - return this.setIcons(featureRow.featureTable.table_name, featureRow.getId(), icons); -}; - -/** - * Set the icons for the feature table and feature id - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {module:extension/style.Icons} icons icons - * @return {Promise} - */ -FeatureStyleExtension.prototype.setIcons = function(featureTable, featureId, icons) { - this.deleteIconsForFeatureId(featureTable, featureId); - if (icons !== null) { - var promises = []; - if (icons.getDefault() !== null) { - promises.push(this.setIconDefault(featureTable, featureId, icons.getDefault())); - } - var keys = Object.keys(icons.icons); - for (var i = 0; i < keys.length; i++) { - promises.push(this.setIcon(featureTable, featureId, keys[i], icons.icons[keys[i]])); - } - return Promise.all(promises); - } else { - return Promise.resolve(); - } -}; - -/** - * Set the icon of the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setIconForFeatureRow = function(featureRow, icon) { - return this.setIconForFeatureRowAndGeometryType(featureRow, featureRow.getGeometryType(), icon); -}; - -/** - * Set the icon of the feature row for the specified geometry type - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setIconForFeatureRowAndGeometryType = function(featureRow, geometryType, icon) { - return this.setIcon(featureRow.featureTable.table_name, featureRow.getId(), geometryType, icon); -}; - -/** - * Set the default icon of the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setIconDefaultForFeatureRow = function(featureRow, icon) { - return this.setIcon(featureRow.featureTable.table_name, featureRow.getId(), null, icon); -}; - -/** - * Get the icon of the feature, searching in order: feature geometry type - * icon, feature default icon, table geometry type icon, table default icon - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setIcon = function(featureTable, featureId, geometryType, icon) { - this.deleteIcon(featureTable, featureId, geometryType); - if (icon !== null) { - return this.createIconRelationship(featureTable).then(function () { - var iconId = this.getOrInsertIcon(icon); - var mappingDao = this.getIconMappingDao(featureTable); - this.insertStyleMapping(mappingDao, featureId, iconId, geometryType); - }.bind(this)); - } else { - return Promise.resolve(); - } -}; - -/** - * Set the default icon of the feature - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setIconDefault = function(featureTable, featureId, icon) { - return this.setIcon(featureTable, featureId, null, icon); -}; - -/** - * Get the style id, either from the existing style or by inserting a new one - * @param {module:extension/style.StyleRow} style style row - * @return {Number} style id - */ -FeatureStyleExtension.prototype.getOrInsertStyle = function(style) { - var styleId; - if (style.hasId()) { - styleId = style.getId(); - } else { - var styleDao = this.getStyleDao(); - if (styleDao !== null) { - styleId = styleDao.create(style); - style.setId(styleId); - } - } - return styleId; -}; - -/** - * Get the icon id, either from the existing icon or by inserting a new one - * @param {module:extension/style.IconRow} icon icon row - * @return {Number} icon id - */ -FeatureStyleExtension.prototype.getOrInsertIcon = function(icon) { - var iconId; - if (icon.hasId()) { - iconId = icon.getId(); - } else { - var iconDao = this.getIconDao(); - if (iconDao != null) { - iconId = iconDao.create(icon); - icon.setId(iconId); - } - } - return iconId; -}; - -/** - * Insert a style mapping row - * @param {module:extension/style.StyleMappingDao} mappingDao mapping dao - * @param {Number} baseId base id, either contents id or feature id - * @param {Number} relatedId related id, either style or icon id - * @param {String} geometryType geometry type or null - */ -FeatureStyleExtension.prototype.insertStyleMapping = function(mappingDao, baseId, relatedId, geometryType) { - var row = mappingDao.newRow(); - row.setBaseId(baseId); - row.setRelatedId(relatedId); - row.setGeometryTypeName(geometryType); - mappingDao.create(row); -}; - -/** - * Delete all feature styles including table styles, table icons, style, and icons - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteAllFeatureStyles = function(featureTable) { - this.deleteTableFeatureStyles(featureTable); - this.deleteFeatureStyles(featureTable); -}; - -/** - * Delete all styles including table styles and feature row style - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteAllStyles = function(featureTable) { - this.deleteTableStyles(featureTable); - this.deleteStyles(featureTable); -}; - -/** - * Delete all icons including table icons and feature row icons - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteAllIcons = function(featureTable) { - this.deleteTableIcons(featureTable); - this.deleteIcons(featureTable); -}; - -/** - * Delete the feature table feature styles - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteTableFeatureStyles = function(featureTable) { - this.deleteTableStyles(featureTable); - this.deleteTableIcons(featureTable); -}; - -/** - * Delete the feature table styles - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteTableStyles = function(featureTable) { - this.deleteTableMappings(this.getTableStyleMappingDao(featureTable), featureTable); -}; - -/** - * Delete the feature table default style - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteTableStyleDefault = function(featureTable) { - this.deleteTableStyle(featureTable, null); -}; - -/** - * Delete the feature table style for the geometry type - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {String} geometryType geometry type - */ -FeatureStyleExtension.prototype.deleteTableStyle = function(featureTable, geometryType) { - this.deleteTableMapping(this.getTableStyleMappingDao(featureTable), featureTable, geometryType); -}; - -/** - * Delete the feature table icons - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteTableIcons = function(featureTable) { - this.deleteTableMappings(this.getTableIconMappingDao(featureTable), featureTable); -}; - -/** - * Delete the feature table default icon - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteTableIconDefault = function(featureTable) { - this.deleteTableIcon(featureTable, null); -}; - -/** - * Delete the feature table icon for the geometry type - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {String} geometryType geometry type - */ -FeatureStyleExtension.prototype.deleteTableIcon = function(featureTable, geometryType) { - this.deleteTableMapping(this.getTableIconMappingDao(featureTable), featureTable, geometryType); -}; - -/** - * Delete the table style mappings - * @param {module:extension/style.StyleMappingDao} mappingDao mapping dao - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteTableMappings = function(mappingDao, featureTable) { - if (mappingDao !== null) { - var featureContentsId = this.contentsIdExtension.getIdByTableName(this.getFeatureTableName(featureTable)); - if (featureContentsId !== null) { - mappingDao.deleteByBaseId(featureContentsId); - } - } -}; - -/** - * Delete the table style mapping with the geometry type value - * @param {module:extension/style.StyleMappingDao} mappingDao mapping dao - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {String} geometryType geometry type - */ -FeatureStyleExtension.prototype.deleteTableMapping = function(mappingDao, featureTable, geometryType) { - if (mappingDao !== null) { - var featureContentsId = this.contentsIdExtension.getIdByTableName(this.getFeatureTableName(featureTable)); - if (featureContentsId !== null) { - mappingDao.deleteByBaseIdAndGeometryType(featureContentsId, geometryType); - } - } -}; - -/** - * Delete all feature styles - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteFeatureStyles = function(featureTable) { - this.deleteStyles(featureTable); - this.deleteIcons(featureTable); -}; - -/** - * Delete all styles - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteStyles = function(featureTable) { - this.deleteMappings(this.getStyleMappingDao(featureTable)); -}; - -/** - * Delete feature row styles - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureStyleExtension.prototype.deleteStylesForFeatureRow = function(featureRow) { - this.deleteStylesForFeatureId(featureRow.featureTable.table_name, featureRow.getId()); -}; - -/** - * Delete feature row styles - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {Number} featureId feature id - */ -FeatureStyleExtension.prototype.deleteStylesForFeatureId = function(featureTable, featureId) { - this.deleteMappingsForFeatureId(this.getStyleMappingDao(featureTable), featureId); -}; - -/** - * Delete the feature row default style - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureStyleExtension.prototype.deleteStyleDefaultForFeatureRow = function(featureRow) { - this.deleteStyleForFeatureRowAndGeometryType(featureRow, null); -}; - -/** - * Delete the feature row default style - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {Number} featureId feature id - */ -FeatureStyleExtension.prototype.deleteStyleDefault = function(featureTable, featureId) { - this.deleteStyle(featureTable, featureId, null); -}; - -/** - * Delete the feature row style for the feature row geometry type - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureStyleExtension.prototype.deleteStyleForFeatureRow = function(featureRow) { - this.deleteStyleForFeatureRowAndGeometryType(featureRow, featureRow.getGeometryType()); -}; - -/** - * Delete the feature row style for the geometry type - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - */ -FeatureStyleExtension.prototype.deleteStyleForFeatureRowAndGeometryType = function(featureRow, geometryType) { - this.deleteStyle(featureRow.featureTable, featureRow.getId(), geometryType); -}; - -/** - * Delete the feature row style for the geometry type - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - */ -FeatureStyleExtension.prototype.deleteStyle = function(featureTable, featureId, geometryType) { - this.deleteMapping(this.getStyleMappingDao(featureTable), featureId, geometryType); -}; - -/** - * Delete all icons - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteIcons = function(featureTable) { - this.deleteMappings(this.getIconMappingDao(featureTable)); -}; - -/** - * Delete feature row icons - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureStyleExtension.prototype.deleteIconsForFeatureRow = function(featureRow) { - this.deleteIconsForFeatureId(featureRow.featureTable.table_name, featureRow.getId()); -}; - -/** - * Delete feature row icons - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {Number} featureId feature id - */ -FeatureStyleExtension.prototype.deleteIconsForFeatureId = function(featureTable, featureId) { - this.deleteMappingsForFeatureId(this.getIconMappingDao(featureTable), featureId); -}; - -/** - * Delete the feature row default icon - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureStyleExtension.prototype.deleteIconDefaultForFeatureRow = function(featureRow) { - this.deleteIconDefault(featureRow.featureTable.table_name, featureRow.getId()); -}; - -/** - * Delete the feature row default icon - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {Number} featureId feature id - */ -FeatureStyleExtension.prototype.deleteIconDefault = function(featureTable, featureId) { - this.deleteIcon(featureTable, featureId, null); -}; - -/** - * Delete the feature row icon for the feature row geometry type - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureStyleExtension.prototype.deleteIconForFeatureRow = function(featureRow) { - this.deleteIconForFeatureRowAndGeometryType(featureRow, featureRow.getGeometryType()); -}; - -/** - * Delete the feature row icon for the geometry type - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - */ -FeatureStyleExtension.prototype.deleteIconForFeatureRowAndGeometryType = function(featureRow, geometryType) { - this.deleteIcon(featureRow.featureTable, featureRow.getId(), geometryType); -}; - -/** - * Delete the feature row icon for the geometry type - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - */ -FeatureStyleExtension.prototype.deleteIcon = function(featureTable, featureId, geometryType) { - this.deleteMapping(this.getIconMappingDao(featureTable), featureId, geometryType); -}; - -/** - * Delete all style mappings - * @param {module:extension/style.StyleMappingDao} mappingDao mapping dao - */ -FeatureStyleExtension.prototype.deleteMappings = function(mappingDao) { - if (mappingDao !== null) { - mappingDao.deleteAll(); - } -}; - -/** - * Delete the style mappings - * @param {module:extension/style.StyleMappingDao} mappingDao mapping dao - * @param {Number} featureId feature id - */ -FeatureStyleExtension.prototype.deleteMappingsForFeatureId = function(mappingDao, featureId) { - if (mappingDao !== null) { - mappingDao.deleteByBaseId(featureId); - } -}; - -/** - * Delete the style mapping with the geometry type value - * @param {module:extension/style.StyleMappingDao} mappingDao mapping dao - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - */ -FeatureStyleExtension.prototype.deleteMapping = function(mappingDao, featureId, geometryType) { - if (mappingDao !== null) { - mappingDao.deleteByBaseIdAndGeometryType(featureId, geometryType); - } -}; - -/** - * Get all the unique style row ids the table maps to - * @param {module:features/user/featureTable|String} featureTable feature table - * @return style row ids - */ -FeatureStyleExtension.prototype.getAllTableStyleIds = function(featureTable) { - var styleIds = null; - var mappingDao = this.getTableStyleMappingDao(featureTable); - if (mappingDao !== null) { - styleIds = mappingDao.uniqueRelatedIds().map(row => row['related_id']); - } - return styleIds; -}; - -/** - * Get all the unique icon row ids the table maps to - * @param {module:features/user/featureTable|String} featureTable feature table - * @return icon row ids - */ -FeatureStyleExtension.prototype.getAllTableIconIds = function(featureTable) { - var styleIds = null; - var mappingDao = this.getTableIconMappingDao(featureTable); - if (mappingDao !== null) { - styleIds = mappingDao.uniqueRelatedIds().map(row => row['related_id']); - } - return styleIds; -}; - -/** - * Get all the unique style row ids the features map to - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {Number[]} style row ids - */ -FeatureStyleExtension.prototype.getAllStyleIds = function(featureTable) { - var styleIds = null; - var mappingDao = this.getStyleMappingDao(featureTable); - if (mappingDao !== null) { - styleIds = mappingDao.uniqueRelatedIds().map(row => row['related_id']); - } - return styleIds; -}; - -/** - * Get all the unique icon row ids the features map to - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {Number[]} icon row ids - */ -FeatureStyleExtension.prototype.getAllIconIds = function(featureTable) { - var styleIds = null; - var mappingDao = this.getIconMappingDao(featureTable); - if (mappingDao !== null) { - styleIds = mappingDao.uniqueRelatedIds().map(row => row['related_id']); - } - return styleIds; -}; - -/** - * Get name of feature table - * @param featureTable - * @returns {String} - */ -FeatureStyleExtension.prototype.getFeatureTableName = function(featureTable) { - return featureTable.table_name ? featureTable.table_name : featureTable; -}; - -/** - * Remove all traces of the extension - */ -FeatureStyleExtension.prototype.removeExtension = function() { - this.deleteAllRelationships(); - this.geoPackage.deleteTable(StyleTable.TABLE_NAME); - this.geoPackage.deleteTable(IconTable.TABLE_NAME); - if (this.extensionsDao.isTableExists()) { - this.extensionsDao.deleteByExtension(FeatureStyleExtension.EXTENSION_NAME); - } -}; - -FeatureStyleExtension.EXTENSION_NAME = 'nga_feature_style'; -FeatureStyleExtension.EXTENSION_AUTHOR = 'nga'; -FeatureStyleExtension.EXTENSION_NAME_NO_AUTHOR = 'feature_style'; -FeatureStyleExtension.EXTENSION_DEFINITION = 'http://ngageoint.github.io/GeoPackage/docs/extensions/feature-style.html'; -FeatureStyleExtension.TABLE_MAPPING_STYLE = FeatureStyleExtension.EXTENSION_AUTHOR + "_style_"; -FeatureStyleExtension.TABLE_MAPPING_TABLE_STYLE = FeatureStyleExtension.EXTENSION_AUTHOR + "_style_default_"; -FeatureStyleExtension.TABLE_MAPPING_ICON = FeatureStyleExtension.EXTENSION_AUTHOR + "_icon_"; -FeatureStyleExtension.TABLE_MAPPING_TABLE_ICON = FeatureStyleExtension.EXTENSION_AUTHOR + "_icon_default_"; - -module.exports = FeatureStyleExtension; - -},{"../.":25,"../../user/userTableReader":109,"../baseExtension":20,"../contents/contentsIdDao":22,"../relatedTables/userMappingTable":42,"./featureStyle":46,"./featureStyles":47,"./iconDao":50,"./iconTable":52,"./icons":53,"./styleDao":55,"./styleMappingDao":56,"./styleMappingTable":58,"./styleTable":60,"./styleTableReader":61,"./styles":62,"util":343}],55:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class StyleDao - */ - -var StyleRow = require('./styleRow') - , StyleTable = require('./styleTable') - , AttributesDao = require('../../attributes/attributeDao'); - -var util = require('util'); - -/** - * Style DAO for reading style tables - * @extends {module:attributes/attributeDao~AttributesDao} - * @param {module:db/geoPackageConnection~GeoPackageConnection} geoPackage connection - * @param {string} table table name - * @constructor - */ -var StyleDao = function(geoPackage, table) { - AttributesDao.call(this, geoPackage, table); - this.table = table; -}; - -util.inherits(StyleDao, AttributesDao); - -/** - * Creates a StyleRow object from the results - * @param results - * @returns {module:extension/style.StyleRow} - */ -StyleDao.prototype.createObject = function (results) { - if (results) { - return this.getRow(results); - } - return this.newRow(); -}; - -/** - * Create a new style row - * @return {module:extension/style.StyleRow} - */ -StyleDao.prototype.newRow = function() { - return new StyleRow(this.table); -}; - -/** - * Create a style row with the column types and values - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @return {module:extension/style.StyleRow} icon row - */ -StyleDao.prototype.newRowWithColumnTypes = function (columnTypes, values) { - return new StyleRow(this.table, columnTypes, values); -}; - -module.exports = StyleDao; - -},{"../../attributes/attributeDao":3,"./styleRow":59,"./styleTable":60,"util":343}],56:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class StyleMappingDao - */ - -var StyleMappingRow = require('./styleMappingRow') - , StyleMappingTable = require('./styleMappingTable') - , UserMappingTable = require('../relatedTables/userMappingTable') - , UserMappingDao = require('../relatedTables/userMappingDao'); - -var util = require('util'); - -/** - * Style Mapping DAO for reading user mapping data tables - * @extends {module:extension/relatedTables~UserMappingDao} - * @param {module:user/custom~UserCustomDao} userCustomDao - * @param {module:geoPackage~GeoPackage} geoPackage geopackage object - * @constructor - */ -var StyleMappingDao = function(userCustomDao, geoPackage) { - UserMappingDao.call(this, userCustomDao, geoPackage); -}; - -util.inherits(StyleMappingDao, UserMappingDao); - -/** - * Create a new {module:user/custom~UserCustomTable} - * @param {module:user/custom~UserCustomDao} userCustomDao - * @return {module:user/custom~UserCustomTable} userCustomTable user custom table - */ -StyleMappingDao.prototype.createMappingTable = function(userCustomDao) { - return new StyleMappingTable(userCustomDao.table.table_name, userCustomDao.table.columns); -}; - -/** - * Create a new {module:extension/style.StyleMappingRow} - * @return {module:extension/style.StyleMappingRow} - */ -StyleMappingDao.prototype.newRow = function() { - return new StyleMappingRow(this.table); -}; - -/** - * Create a user mapping row - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @return {module:extension/style.StyleMappingRow} style mapping row - */ -StyleMappingDao.prototype.newRowWithColumnTypes = function (columnTypes, values) { - return new StyleMappingRow(this.table, columnTypes, values); -}; - -/** - * Delete by base id and geometry type - * @param {Number} baseId base id - * @param {String} geometryType geometry type - * @return {Number} number of deleted rows - */ -StyleMappingDao.prototype.deleteByBaseIdAndGeometryType = function(baseId, geometryType) { - var where = ''; - where += this.buildWhereWithFieldAndValue(UserMappingTable.COLUMN_BASE_ID, baseId); - where += ' AND '; - where += this.buildWhereWithFieldAndValue(StyleMappingTable.COLUMN_GEOMETRY_TYPE_NAME, geometryType); - var whereArgs = this.buildWhereArgs([baseId, geometryType]); - return this.deleteWhere(where, whereArgs); -}; - -module.exports = StyleMappingDao; - -},{"../relatedTables/userMappingDao":40,"../relatedTables/userMappingTable":42,"./styleMappingRow":57,"./styleMappingTable":58,"util":343}],57:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class StyleMappingRow - */ - -var UserMappingRow = require('../relatedTables/userMappingRow'); - -var util = require('util'); - -/** - * User Mapping Row containing the values from a single result set row - * @extends {module:extension/relatedTables~UserMappingRow} - * @param {module:extension/style.StyleMappingTable} styleMappingTable style mapping table - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @constructor - */ -var StyleMappingRow = function(styleMappingTable, columnTypes, values) { - UserMappingRow.call(this, styleMappingTable, columnTypes, values); - this.styleMappingTable = styleMappingTable; -}; - -util.inherits(StyleMappingRow, UserMappingRow); - -/** - * Get the geometry type name column - * @return {module:user/userColumn~UserColumn} - */ -StyleMappingRow.prototype.getGeometryTypeNameColumn = function() { - return this.styleMappingTable.getGeometryTypeNameColumn(); -}; - -/** - * Gets the geometry type name - * @return {string} - */ -StyleMappingRow.prototype.getGeometryTypeName = function() { - return this.getValueWithColumnName(this.getGeometryTypeNameColumn().name); -}; - -/** - * Sets the geometry type name - * @param {string} geometryTypeName geometry type name - */ -StyleMappingRow.prototype.setGeometryTypeName = function(geometryTypeName) { - this.setValueWithColumnName(this.getGeometryTypeNameColumn().name, geometryTypeName); -}; - -module.exports = StyleMappingRow; - -},{"../relatedTables/userMappingRow":41,"util":343}],58:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class StyleMappingTable - */ - -var UserMappingTable = require('../relatedTables/userMappingTable') - , UserCustomColumn = require('../../user/custom/userCustomColumn') - , DataTypes = require('../../db/dataTypes'); - -var util = require('util'); - -/** - * Contains style mapping table factory and utility methods - * @extends {module:extension/relatedTables~UserMappingTable} - * @param {string} tableName table name - * @param {module:user/userColumn~UserColumn[]} columns style mapping columns - * @constructor - */ -var StyleMappingTable = function(tableName, columns) { - UserMappingTable.call(this, tableName, columns); -}; - -util.inherits(StyleMappingTable, UserMappingTable); - -/** - * Creates a user mapping table with the minimum required columns followed by the additional columns - * @param {string} tableName name of the table - * @return {module:extension/relatedTables~UserMappingTable} - */ -StyleMappingTable.create = function(tableName) { - return new StyleMappingTable(tableName, StyleMappingTable.createColumns()); -}; - -/** - * Create the columns - * @return {module:user/userColumn~UserColumn[]} - */ -StyleMappingTable.createColumns = function() { - var columns = UserMappingTable.createRequiredColumns(); - var index = columns.length; - columns.push(UserCustomColumn.createColumn(index, StyleMappingTable.COLUMN_GEOMETRY_TYPE_NAME, DataTypes.GPKGDataType.GPKG_DT_TEXT, undefined, false, undefined)) - return columns; -}; - -/** - * Get the geometry type name column index - * @return int - */ -StyleMappingTable.prototype.getGeometryTypeNameColumnIndex = function() { - return this.getColumnIndex(StyleMappingTable.COLUMN_GEOMETRY_TYPE_NAME); -}; - -/** - * Get the geometry type name column - * @return {module:user/userColumn~UserColumn} - */ -StyleMappingTable.prototype.getGeometryTypeNameColumn = function() { - return this.getColumnWithColumnName(StyleMappingTable.COLUMN_GEOMETRY_TYPE_NAME); -}; - -StyleMappingTable.COLUMN_GEOMETRY_TYPE_NAME = 'geometry_type_name'; - -module.exports = StyleMappingTable; - -},{"../../db/dataTypes":14,"../../user/custom/userCustomColumn":101,"../relatedTables/userMappingTable":42,"util":343}],59:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class StyleRow - */ - -var AttributesRow = require('../../attributes/attributeRow'); - -var util = require('util'); - -/** - * Color hex pattern - */ -var colorPattern = /^#([0-9a-fA-F]{3}){1,2}$/; - -/** - * Style Row - * @extends {module:attributes/attributeRow~AttributesRow} - * @param {module:extension/style.StyleTable} styleTable style table - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @constructor - */ -var StyleRow = function(styleTable, columnTypes, values) { - AttributesRow.call(this, styleTable, columnTypes, values); - this.styleTable = styleTable; -}; - -util.inherits(StyleRow, AttributesRow); - -/** - * Get the name column - * @return {module:user/userColumn~UserColumn} - */ -StyleRow.prototype.getNameColumn = function() { - return this.styleTable.getNameColumn(); -}; - -/** - * Gets the name - * @return {String} - */ -StyleRow.prototype.getName = function() { - return this.getValueWithColumnName(this.getNameColumn().name); -}; - -/** - * Sets the name for the row - * @param {String} name name - */ -StyleRow.prototype.setName = function(name) { - this.setValueWithColumnName(this.getNameColumn().name, name); -}; - -/** - * Get the description column - * @return {module:user/userColumn~UserColumn} - */ -StyleRow.prototype.getDescriptionColumn = function() { - return this.styleTable.getDescriptionColumn(); -}; - -/** - * Gets the description - * @return {String} - */ -StyleRow.prototype.getDescription = function() { - return this.getValueWithColumnName(this.getDescriptionColumn().name); -}; - -/** - * Sets the description for the row - * @param {String} description description - */ -StyleRow.prototype.setDescription = function(description) { - this.setValueWithColumnName(this.getDescriptionColumn().name, description); -}; - -/** - * Get the color column - * @return {module:user/userColumn~UserColumn} - */ -StyleRow.prototype.getColorColumn = function() { - return this.styleTable.getColorColumn(); -}; - -/** - * Get the style color - * @return {String} color - */ -StyleRow.prototype.getColor = function() { - return this.createColor(this.getHexColor(), this.getOpacity()); -}; - -/** - * Check if the style has a color - * @return true if has a color - */ -StyleRow.prototype.hasColor = function() { - return this._hasColor(this.getHexColor(), this.getOpacity()); -}; - -/** - * Get the color - * @return {String} color - */ -StyleRow.prototype.getHexColor = function() { - return this.getValueWithColumnName(this.getColorColumn().name); -}; - -/** - * Set the color - * @param {String} color color - * @param {Number} opacity opacity - */ -StyleRow.prototype.setColor = function(color, opacity) { - this.setHexColor(color); - this.setOpacity(opacity); -}; - -/** - * Sets the color for the row - * @param {String} color color - */ -StyleRow.prototype.setHexColor = function(color) { - var validatedColor = this.validateColor(color); - this.setValueWithColumnName(this.getColorColumn().name, validatedColor); -}; - -/** - * Get the opacity column - * @return {module:user/userColumn~UserColumn} - */ -StyleRow.prototype.getOpacityColumn = function() { - return this.styleTable.getOpacityColumn(); -}; - -/** - * Gets the opacity - * @return {Number} - */ -StyleRow.prototype.getOpacity = function() { - return this.getValueWithColumnName(this.getOpacityColumn().name); -}; - -/** - * Get the opacity or default value - * @return {Number} opacity - */ -StyleRow.prototype.getOpacityOrDefault = function() { - var opacity = this.getOpacity(); - if (opacity === null) { - opacity = 1.0; - } - return opacity; -}; - -/** - * Sets the opacity for the row - * @param {Number} opacity opacity - */ -StyleRow.prototype.setOpacity = function(opacity) { - this.validateOpacity(opacity); - this.setValueWithColumnName(this.getOpacityColumn().name, opacity); -}; - -/** - * Get the width column - * @return {module:user/userColumn~UserColumn} - */ -StyleRow.prototype.getWidthColumn = function() { - return this.styleTable.getWidthColumn(); -}; - -/** - * Gets the width - * @return {int} - */ -StyleRow.prototype.getWidth = function() { - return this.getValueWithColumnName(this.getWidthColumn().name); -}; - -/** - * Sets the width for the row - * @param {Number} width width - */ -StyleRow.prototype.setWidth = function(width) { - if (width !== null && width < 0.0) { - throw new Error("Width must be greater than or equal to 0.0, invalid value: " + width); - } - this.setValueWithColumnName(this.getWidthColumn().name, width); -}; - -/** - * Get the width value or default width - * @return width - */ -StyleRow.prototype.getWidthOrDefault = function() { - var width = this.getWidth(); - if (width === null) { - width = 1.0; - } - return width; -}; - -/** - * Get the fill color column - * @return {module:user/userColumn~UserColumn} - */ -StyleRow.prototype.getFillColorColumn = function() { - return this.styleTable.getFillColorColumn(); -}; - - -/** - * Get the style fill color - * @return {String} color - */ -StyleRow.prototype.getFillColor = function() { - return this.createColor(this.getFillHexColor(), this.getFillOpacity()); -}; - -/** - * Check if the style has a fill color - * @return true if has a color - */ -StyleRow.prototype.hasFillColor = function() { - return this._hasColor(this.getFillHexColor(), this.getFillOpacity()); -}; - -/** - * Get the fill color - * @return {String} color - */ -StyleRow.prototype.getFillHexColor = function() { - return this.getValueWithColumnName(this.getFillColorColumn().name); -}; - -/** - * Set the fill color - * @param {String} color color - * @param {Number} opacity opacity - */ -StyleRow.prototype.setFillColor = function(color, opacity) { - this.setFillHexColor(color); - this.setFillOpacity(opacity); -}; - -/** - * Sets the fill color for the row - * @param {String} color color - */ -StyleRow.prototype.setFillHexColor = function(color) { - var validatedColor = this.validateColor(color); - this.setValueWithColumnName(this.getFillColorColumn().name, validatedColor); -}; - -/** - * Get the fill opacity column - * @return {module:user/userColumn~UserColumn} - */ -StyleRow.prototype.getFillOpacityColumn = function() { - return this.styleTable.getFillOpacityColumn(); -}; - -/** - * Gets the fill opacity - * @return {Number} - */ -StyleRow.prototype.getFillOpacity = function() { - return this.getValueWithColumnName(this.getFillOpacityColumn().name); -}; - -/** - * Sets the fill opacity for the row - * @param {Number} fillOpacity fillOpacity - */ -StyleRow.prototype.setFillOpacity = function(fillOpacity) { - this.validateOpacity(fillOpacity); - this.setValueWithColumnName(this.getFillOpacityColumn().name, fillOpacity); -}; - -/** - * Get the fill opacity or default value - * @return {Number} fill opacity - */ -StyleRow.prototype.getFillOpacityOrDefault = function() { - var fillOpacity = this.getFillOpacity(); - if (fillOpacity == null) { - fillOpacity = 1.0; - } - return fillOpacity; -}; - -/** - * Validate and adjust the color value - * @param {String} color color - */ -StyleRow.prototype.validateColor = function(color) { - var validated = color; - if (color != null) { - if (!color.startsWith("#")) { - validated = "#" + color; - } - if (!colorPattern.test(validated)) { - throw new Error("Color must be in hex format #RRGGBB or #RGB, invalid value: " + color); - } - validated = validated.toUpperCase(); - } - return validated; -}; - -/** - * Validate the opacity value - * @param {Number} opacity opacity - */ -StyleRow.prototype.validateOpacity = function(opacity) { - if (opacity != null && (opacity < 0.0 || opacity > 1.0)) { - throw new Error("Opacity must be set inclusively between 0.0 and 1.0, invalid value: " + opacity); - } -}; - -/** - * Create a color from the hex color and opacity - * @param {String} hexColor hex color - * @param {Number} opacity opacity - * @return {String} rgba color - */ -StyleRow.prototype.createColor = function(hexColor, opacity) { - var color = '#000000'; - if (hexColor !== null) { - color = hexColor; - } - if (opacity !== null) { - var a = Math.round(opacity * 255).toString(16); - if (a.length === 1) { - a = "0" + a; - } - color += a; - } - return color.toUpperCase(); -}; - -/** - * Determine if a color exists from the hex color and opacity - * @param {String} hexColor hex color - * @param {Number} opacity opacity - * @return true if has a color - */ -StyleRow.prototype._hasColor = function(hexColor, opacity) { - return hexColor !== null || opacity !== null; -}; - -module.exports = StyleRow; - -},{"../../attributes/attributeRow":4,"util":343}],60:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class StyleTable - */ - -var AttributesTable = require('../../attributes/attributeTable') - , UserColumn = require('../../user/userColumn') - , UserCustomColumn = require('../../user/custom/userCustomColumn') - , RelationType = require('../relatedTables/relationType') - , DataTypes = require('../../db/dataTypes'); - -var util = require('util'); - -/** - * Icon Requirements Class Media Table - * @extends {module:attributes/attributeTable~AttributeTable} - * @param {string} tableName table name - * @param {module:user/userColumn~UserColumn[]} columns media columns - * @constructor - */ -var StyleTable = function(tableName, columns) { - this.data_type = RelationType.ATTRIBUTES.dataType; - this.relation_name = RelationType.ATTRIBUTES.name; - AttributesTable.call(this, tableName, columns); -}; - -util.inherits(StyleTable, AttributesTable); - -/** - * Create a media table with a minimum required columns followed by the additional columns - * @return {module:extension/style.StyleTable} - */ -StyleTable.create = function() { - return new StyleTable(StyleTable.TABLE_NAME, StyleTable.createColumns()); -}; - -/** - * Create the columns - * @return {module:user/custom~UserCustomColumn[]} - */ -StyleTable.createColumns = function() { - var columns = []; - var index = 0; - columns.push(UserColumn.createPrimaryKeyColumnWithIndexAndName(index++, StyleTable.COLUMN_ID)); - columns.push(UserCustomColumn.createColumn(index++, StyleTable.COLUMN_NAME, DataTypes.GPKGDataType.GPKG_DT_TEXT, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index++, StyleTable.COLUMN_DESCRIPTION, DataTypes.GPKGDataType.GPKG_DT_TEXT, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index++, StyleTable.COLUMN_COLOR, DataTypes.GPKGDataType.GPKG_DT_TEXT, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index++, StyleTable.COLUMN_OPACITY, DataTypes.GPKGDataType.GPKG_DT_REAL, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index++, StyleTable.COLUMN_WIDTH, DataTypes.GPKGDataType.GPKG_DT_REAL, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index++, StyleTable.COLUMN_FILL_COLOR, DataTypes.GPKGDataType.GPKG_DT_TEXT, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index, StyleTable.COLUMN_FILL_OPACITY, DataTypes.GPKGDataType.GPKG_DT_TEXT, undefined, false, undefined)); - return columns; -}; - -/** - * Get the name column index - * @return int - */ -StyleTable.prototype.getNameColumnIndex = function() { - return this.getColumnIndex(StyleTable.COLUMN_NAME); -}; - -/** - * Get the name column - * @return {module:user/userColumn~UserColumn} - */ -StyleTable.prototype.getNameColumn = function() { - return this.getColumnWithColumnName(StyleTable.COLUMN_NAME); -}; - -/** - * Get the description column index - * @return int - */ -StyleTable.prototype.getDescriptionColumnIndex = function() { - return this.getColumnIndex(StyleTable.COLUMN_DESCRIPTION); -}; - -/** - * Get the description column - * @return {module:user/userColumn~UserColumn} - */ -StyleTable.prototype.getDescriptionColumn = function() { - return this.getColumnWithColumnName(StyleTable.COLUMN_DESCRIPTION); -}; - -/** - * Get the color column index - * @return int - */ -StyleTable.prototype.getColorColumnIndex = function() { - return this.getColumnIndex(StyleTable.COLUMN_COLOR); -}; - -/** - * Get the color column - * @return {module:user/userColumn~UserColumn} - */ -StyleTable.prototype.getColorColumn = function() { - return this.getColumnWithColumnName(StyleTable.COLUMN_COLOR); -}; - -/** - * Get the opacity column index - * @return int - */ -StyleTable.prototype.getOpacityColumnIndex = function() { - return this.getColumnIndex(StyleTable.COLUMN_OPACITY); -}; - -/** - * Get the opacity column - * @return {module:user/userColumn~UserColumn} - */ -StyleTable.prototype.getOpacityColumn = function() { - return this.getColumnWithColumnName(StyleTable.COLUMN_OPACITY); -}; - -/** - * Get the width column index - * @return int - */ -StyleTable.prototype.getWidthColumnIndex = function() { - return this.getColumnIndex(StyleTable.COLUMN_WIDTH); -}; - -/** - * Get the width column - * @return {module:user/userColumn~UserColumn} - */ -StyleTable.prototype.getWidthColumn = function() { - return this.getColumnWithColumnName(StyleTable.COLUMN_WIDTH); -}; - -/** - * Get the fill_color column index - * @return int - */ -StyleTable.prototype.getFillColorColumnIndex = function() { - return this.getColumnIndex(StyleTable.COLUMN_FILL_COLOR); -}; - -/** - * Get the fill_color column - * @return {module:user/userColumn~UserColumn} - */ -StyleTable.prototype.getFillColorColumn = function() { - return this.getColumnWithColumnName(StyleTable.COLUMN_FILL_COLOR); -}; - -/** - * Get the fill_opacity column index - * @return int - */ -StyleTable.prototype.getFillOpacityColumnIndex = function() { - return this.getColumnIndex(StyleTable.COLUMN_FILL_OPACITY); -}; - -/** - * Get the fill_opacity column - * @return {module:user/userColumn~UserColumn} - */ -StyleTable.prototype.getFillOpacityColumn = function() { - return this.getColumnWithColumnName(StyleTable.COLUMN_FILL_OPACITY); -}; - -StyleTable.TABLE_NAME = 'nga_style'; -StyleTable.COLUMN_ID = 'id'; -StyleTable.COLUMN_NAME = 'name'; -StyleTable.COLUMN_DESCRIPTION = 'description'; -StyleTable.COLUMN_COLOR = 'color'; -StyleTable.COLUMN_OPACITY = 'opacity'; -StyleTable.COLUMN_WIDTH = 'width'; -StyleTable.COLUMN_FILL_COLOR = 'fill_color'; -StyleTable.COLUMN_FILL_OPACITY = 'fill_opacity'; -StyleTable.prototype.TABLE_TYPE = 'media'; - -module.exports = StyleTable; - -},{"../../attributes/attributeTable":5,"../../db/dataTypes":14,"../../user/custom/userCustomColumn":101,"../../user/userColumn":105,"../relatedTables/relationType":36,"util":343}],61:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class StyleTableReader - */ - -var AttributeTableReader = require('../../attributes/attributeTableReader') - , StyleTable = require('./styleTable'); - -var util = require('util'); - -/** - * Reads the metadata from an existing attribute table - * @extends {module:attributes/attributeTableReader} - * @constructor -*/ -var StyleTableReader = function(tableName) { - AttributeTableReader.call(this, tableName); -}; - -util.inherits(StyleTableReader, AttributeTableReader); - -/** - * - * @param {String} tableName - * @param columns - * @returns {module:extension/style.StyleTable} - */ -StyleTableReader.prototype.createTable = function (tableName, columns) { - return new StyleTable(tableName, columns); -}; - -module.exports = StyleTableReader; - -},{"../../attributes/attributeTableReader":6,"./styleTable":60,"util":343}],62:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class Styles - */ - - -/** - * Styles constructor - * @constructor - */ -var Styles = function() { - this.defaultStyle = null; - this.styles = {}; -}; - -Styles.prototype.setDefault = function(styleRow) { - this.defaultStyle = styleRow; -}; - -Styles.prototype.getDefault = function() { - return this.defaultStyle; -}; - -Styles.prototype.setStyle = function(styleRow, geometryType) { - if (geometryType != null) { - if (styleRow != null) { - this.styles[geometryType] = styleRow; - } else { - delete this.styles[geometryType]; - } - } else { - this.setDefault(styleRow); - } -}; - -Styles.prototype.getStyle = function(geometryType) { - var styleRow = null; - if (geometryType != null) { - styleRow = this.styles[geometryType]; - } - if (styleRow === null || geometryType === null) { - styleRow = this.getDefault(); - } - return styleRow; -}; - -Styles.prototype.isEmpty = function() { - return Object.keys(this.styles).length === 0 && this.defaultStyle === null; -}; - -module.exports = Styles; - -},{}],63:[function(require,module,exports){ -/** - * WebPExtension module. - * @module WebPExtension - * @see module:extension/BaseExtension - */ - -var BaseExtension = require('../baseExtension') - , Extension = require('../.').Extension; - -var util = require('util'); - -var WebPExtension = function(geoPackage, tableName) { - BaseExtension.call(this, geoPackage); - - this.tableName = tableName; -} - -util.inherits(WebPExtension, BaseExtension); - -WebPExtension.prototype.getOrCreateExtension = function() { - return this.getOrCreate(WebPExtension.EXTENSION_NAME, this.tableName, 'tile_data', WebPExtension.EXTENSION_WEBP_DEFINITION, Extension.READ_WRITE); -}; - -WebPExtension.EXTENSION_NAME = 'gpkg_webp'; -WebPExtension.EXTENSION_WEBP_AUTHOR = 'gpkg'; -WebPExtension.EXTENSION_WEBP_NAME_NO_AUTHOR = 'webp'; -WebPExtension.EXTENSION_WEBP_DEFINITION = 'http://www.geopackage.org/spec/#extension_webp'; - -module.exports.WebPExtension = WebPExtension; - -},{"../.":25,"../baseExtension":20,"util":343}],64:[function(require,module,exports){ -/** - * GeometryColumns module. - * @module features/columns - */ - -var Dao = require('../../dao/dao') - , SpatialReferenceSystemDao = require('../../core/srs').SpatialReferenceSystemDao - , ContentsDao = require('../../core/contents').ContentsDao - , Contents = require('../../core/contents').Contents; - -var util = require('util'); - -/** - * Spatial Reference System object. The coordinate reference system definitions it contains are referenced by the GeoPackage Contents and GeometryColumns objects to relate the vector and tile data in user tables to locations on the earth. - * @class GeometryColumns - */ -var GeometryColumns = function() { - /** - * Name of the table containing the geometry column - * @member {string} - */ - this.table_name; - - /** - * Name of a column in the feature table that is a Geometry Column - * @member {string} - */ - this.column_name; - - /** - * Name from Geometry Type Codes (Core) or Geometry Type Codes (Extension) - * in Geometry Types (Normative) - * @member {string} - */ - this.geometry_type_name; - - /** - * Spatial Reference System ID: gpkg_spatial_ref_sys.srs_id - * @member {module:dao/spatialReferenceSystem~SpatialReferenceSystem} - */ - this.srs; - - /** - * Unique identifier for each Spatial Reference System within a GeoPackage - * @member {Number} - */ - this.srs_id; - - /** - * 0: z values prohibited; 1: z values mandatory; 2: z values optional - * @member {byte} - */ - this.z; - - /** - * 0: m values prohibited; 1: m values mandatory; 2: m values optional - * @member {byte} - */ - this.m; - -}; - -GeometryColumns.prototype.getGeometryType = function() { - return this.geometry_type_name; -}; - - // /** - // * Contents - // */ - // @ForeignCollectionField(eager = false) - // private ForeignCollection contents; - // - // /** - // * Geometry Columns - // */ - // @ForeignCollectionField(eager = false) - // private ForeignCollection geometryColumns; - // - // /** - // * Matrix Tile Set - // */ - // @ForeignCollectionField(eager = false) - // private ForeignCollection tileMatrixSet; - - - -/** - * Geometry Columns Data Access Object - * @class GeometryColumnsDao - * @extends {module:dao/dao~Dao} - */ -var GeometryColumnsDao = function(geoPackage) { - Dao.call(this, geoPackage); -} - -util.inherits(GeometryColumnsDao, Dao); - -GeometryColumnsDao.prototype.createObject = function () { - return new GeometryColumns(); -}; - -/** - * Query for the table name - * - * @param {string} tableName table name - * @param {callback} callback called with an error if one occurred and the {module:dao/geometryColumns~GeometryColumns} - */ -GeometryColumnsDao.prototype.queryForTableName = function (tableName) { - var results = this.queryForAllEq(GeometryColumnsDao.COLUMN_TABLE_NAME, tableName); - if (results && results.length) { - var gc = this.createObject(); - this.populateObjectFromResult(gc, results[0]); - return gc; - } - return; -}; - -/** - * Get the feature table names - * - * @param {callback} callback called with an error if one occurred and an array of the {FeatureTable} - */ -GeometryColumnsDao.prototype.getFeatureTables = function () { - var tableNames = []; - for (var result of this.connection.each('select ' + GeometryColumnsDao.COLUMN_TABLE_NAME + ' from ' + this.gpkgTableName)) { - tableNames.push(result[GeometryColumnsDao.COLUMN_TABLE_NAME]); - } - return tableNames; -}; - -/** - * Get the Spatial Reference System of the Geometry Columns - * - * @param {module:dao/geometryColumns~GeometryColumns} geometryColumns geometry columns - * @param {callback} callback called with an error if one occurred and the {SpatialReferenceSystem} - */ -GeometryColumnsDao.prototype.getSrs = function (geometryColumns) { - var dao = this.geoPackage.getSpatialReferenceSystemDao(); - return dao.queryForId(geometryColumns.srs_id);; -}; - -/** - * Get the Contents of the Geometry Columns - * - * @param {module:dao/geometryColumns~GeometryColumns} geometryColumns geometry columns - * @return {ContentsDao} contents dao - */ -GeometryColumnsDao.prototype.getContents = function (geometryColumns) { - var dao = this.geoPackage.getContentsDao(); - return dao.queryForId(geometryColumns.table_name); -}; - -GeometryColumnsDao.prototype.getProjection = function (projectionObject) { - var srs = this.getSrs(projectionObject); - var srsDao = this.geoPackage.getSpatialReferenceSystemDao(); - return srsDao.getProjection(srs); -}; - -/** - * tableName field name - * @type {String} - */ -GeometryColumnsDao.COLUMN_TABLE_NAME = "table_name"; - -/** - * columnName field name - * @type {String} - */ -GeometryColumnsDao.COLUMN_COLUMN_NAME = "column_name"; - -/** - * id 1 field name, tableName - * @type {String} - */ -GeometryColumnsDao.COLUMN_ID_1 = GeometryColumnsDao.COLUMN_TABLE_NAME; - -/** - * id 2 field name, columnName - * @type {String} - */ -GeometryColumnsDao.COLUMN_ID_2 = GeometryColumnsDao.COLUMN_COLUMN_NAME; - -/** - * geometryTypeName field name - * @type {String} - */ -GeometryColumnsDao.COLUMN_GEOMETRY_TYPE_NAME = "geometry_type_name"; - -/** - * srsId field name - * @type {String} - */ -GeometryColumnsDao.COLUMN_SRS_ID = 'srs_id'; - -/** - * z field name - * @type {String} - */ -GeometryColumnsDao.COLUMN_Z = "z"; - -/** - * m field name - * @type {String} - */ -GeometryColumnsDao.COLUMN_M = "m"; - -/** - * Table Name - * @type {String} - */ -GeometryColumnsDao.prototype.gpkgTableName = 'gpkg_geometry_columns'; - -GeometryColumnsDao.prototype.idColumns = [GeometryColumnsDao.COLUMN_ID_1, GeometryColumnsDao.COLUMN_ID_2]; -GeometryColumnsDao.prototype.columns = - [GeometryColumnsDao.COLUMN_TABLE_NAME, GeometryColumnsDao.COLUMN_COLUMN_NAME, GeometryColumnsDao.COLUMN_GEOMETRY_TYPE_NAME, GeometryColumnsDao.COLUMN_SRS_ID, GeometryColumnsDao.COLUMN_Z, GeometryColumnsDao.COLUMN_M]; - -GeometryColumns.TABLE_NAME = "tableName"; -GeometryColumns.COLUMN_NAME = "columnName"; -GeometryColumns.GEOMETRY_TYPE_NAME = "geometryTypeName"; -GeometryColumns.SRS_ID = "srsId"; -GeometryColumns.Z = "z"; -GeometryColumns.M = "m"; - -module.exports.GeometryColumnsDao = GeometryColumnsDao; -module.exports.GeometryColumns = GeometryColumns; - -},{"../../core/contents":8,"../../core/srs":9,"../../dao/dao":11,"util":343}],65:[function(require,module,exports){ -/** - * @module features/user/featureColumn - */ - -const UserColumn = require('../../user/userColumn'); -const DataTypes = require('../../db/dataTypes'); -const util = require('util'); - -/** - * Represents a user feature column - * @class - * @extends {module:user/userColumn~UserColumn} - */ -var FeatureColumn = function(index, name, dataType, max, notNull, defaultValue, primaryKey, geometryType) { - UserColumn.call(this, index, name, dataType, max, notNull, defaultValue, primaryKey); - this.geometryType = geometryType; - - if (!geometryType && dataType === DataTypes.GPKGDataType.GPKG_DT_GEOMETRY) { - throw new Error('Data or Geometry Type is required to create column: ' + name); - } -} - -util.inherits(FeatureColumn, UserColumn); - -FeatureColumn.prototype.getTypeName = function () { - if (this.isGeometry()) { - return DataTypes.name(DataTypes.GPKGDataType.GPKG_DT_GEOMETRY); - } - return this.dataType !== undefined && DataTypes.name(this.dataType); -}; - -/** - * Create a new primary key column - * - * @param {Number} index column index - * @param {string} name column name - * - * @return feature column - */ -FeatureColumn.createPrimaryKeyColumnWithIndexAndName = function(index, name) { - return new FeatureColumn(index, name, DataTypes.GPKGDataType.GPKG_DT_INTEGER, undefined, true, undefined, true); -} - -/** - * Create a new geometry column - * - * @param {Number} index column index - * @param {string} name column name - * @param {WKBGeometryType} type geometry type - * @param {Boolean} notNull not null - * @param {Object} defaultValue default value or nil - * - * @return feature column - */ -FeatureColumn.createGeometryColumn = function(index, name, type, notNull, defaultValue) { - return new FeatureColumn(index, name, type, undefined, notNull, defaultValue, false, type); -} - -/** - * Create a new column - * - * @param {Number} index column index - * @param {string} name column name - * @param {module:db/dataTypes~GPKGDataType} type data type - * @param {Boolean} notNull not null - * @param {Object} defaultValue default value or nil - * - * @return feature column - */ -FeatureColumn.createColumnWithIndex = function(index, name, type, notNull, defaultValue) { - return FeatureColumn.createColumnWithIndexAndMax(index, name, type, undefined, notNull, defaultValue); -} - -/** - * Create a new column - * - * @param {Number} index column index - * @param {string} name column name - * @param {module:db/dataTypes~GPKGDataType} type data type - * @param {Number} max max value - * @param {Boolean} notNull not null - * @param {Object} defaultValue default value or nil - * - * @return feature column - */ -FeatureColumn.createColumnWithIndexAndMax = function(index, name, type, max, notNull, defaultValue) { - return new FeatureColumn(index, name, type, max, notNull, defaultValue, false); -} - -/** - * Determine if this column is a geometry - * @return {Boolean} true if a geometry column - */ -FeatureColumn.prototype.isGeometry = function () { - return this.geometryType !== undefined; -}; - -module.exports = FeatureColumn; - -},{"../../db/dataTypes":14,"../../user/userColumn":105,"util":343}],66:[function(require,module,exports){ -/** - * featureDao module. - * @module features/user/featureDao - */ - -var UserDao = require('../../user/userDao') - , GeometryColumnsDao = require('../columns').GeometryColumnsDao - , ContentsDao = require('../../core/contents').ContentsDao - , DataColumnsDao = require('../../dataColumns').DataColumnsDao - , FeatureRow = require('./featureRow') - , DataTypes = require('../../db/dataTypes') - , FeatureTableIndex = require('../../extension/index/featureTableIndex') - , BoundingBox = require('../../boundingBox'); - -var util = require('util') - , reproject = require('reproject') - , LineIntersect = require('@turf/line-intersect').default - , Intersect = require('@turf/intersect').default - , BooleanWithin = require('@turf/boolean-within').default; - -/** - * Feature DAO for reading feature user data tables - * @class FeatureDao - * @extends {module:user/userDao~UserDao} - * @param {sqlite3} db database connection - * @param {FeatureTable} table feature table - * @param {GeometryColumns} geometryColumns geometry columns - * @param {MetadataDb} metadataDb metadata db - */ -var FeatureDao = function(geoPackage, table, geometryColumns, metadataDb) { - UserDao.call(this, geoPackage, table); - this.geometryColumns = geometryColumns; - this.metadataDb = metadataDb; - this.dataColumnsDao = new DataColumnsDao(geoPackage); - this.featureTableIndex = new FeatureTableIndex(geoPackage, this); - var dao = geoPackage.getGeometryColumnsDao(); - if (!dao.getContents(geometryColumns)) { - throw new Error('Geometry Columns ' + dao.getId(geometryColumns) + ' has null Contents'); - } - if (!dao.getSrs(geometryColumns)) { - throw new Error('Geometry Columns ' + dao.getId(geometryColumns) + ' has null Spatial Reference System'); - } - this.projection = dao.getProjection(geometryColumns); -} - -util.inherits(FeatureDao, UserDao); - -FeatureDao.prototype.createObject = function (results) { - if (results) { - return this.getRow(results); - } - return this.newRow(); -}; - -FeatureDao.prototype.getContents = function() { - var dao = this.geoPackage.getGeometryColumnsDao(); - return dao.getContents(this.geometryColumns); -} - -/** - * Get the feature table - * @return {FeatureTable} the feature table - */ -FeatureDao.prototype.getFeatureTable = function () { - return this.table; -}; - -/** - * Create a new feature row with the column types and values - * @param {Array} columnTypes column types - * @param {Array} values values - * @return {FeatureRow} feature row - */ -FeatureDao.prototype.newRowWithColumnTypes = function (columnTypes, values) { - return new FeatureRow(this.getFeatureTable(), columnTypes, values); -}; - -/** - * Create a new feature row - * @return {FeatureRow} feature row - */ -FeatureDao.prototype.newRow = function () { - return new FeatureRow(this.getFeatureTable()); -}; - -/** - * Get the geometry column name - * @return {string} the geometry column name - */ -FeatureDao.prototype.getGeometryColumnName = function () { - return this.geometryColumns.column_name; -}; - -/** - * Get the geometry types - * @return {WKBGeometryType} well known binary geometry type - */ -FeatureDao.prototype.getGeometryType = function () { - return this.geometryColumns.getGeometryType(); -}; - -FeatureDao.prototype.getSrs = function() { - return this.geoPackage.getGeometryColumnsDao().getSrs(this.geometryColumns); -}; - -/** - * Determine if the feature table is indexed - * @param {Function} callback called with err if one occurred and true or false indicating the indexed status - */ -FeatureDao.prototype.isIndexed = function() { - return this.featureTableIndex.isIndexed(); -} - -/** - * Query for count in bounding box - * @param boundingBox - * @returns {Number}} - */ -FeatureDao.prototype.countWebMercatorBoundingBox = function(boundingBox) { - var srs = this.getSrs(); - return this.featureTableIndex.countWithBoundingBox(boundingBox, 'EPSG:3857'); -} - -FeatureDao.prototype.fastQueryWebMercatorBoundingBox = function(boundingBox, featureRowCallback) { - var srs = this.getSrs(); - var iterator = this.featureTableIndex.queryWithBoundingBox(boundingBox, 'EPSG:3857'); - var thisgetRow = this.getRow.bind(this); - - return { - [Symbol.iterator]() { - return this; - }, - next: function() { - var nextRow = iterator.next(); - if (!nextRow.done) { - var featureRow = thisgetRow(nextRow.value); - - return { - value: featureRow, - done: false - }; - } else { - return { - done: true - } - } - } - } -} - -FeatureDao.prototype.queryIndexedFeaturesWithWebMercatorBoundingBox = function(boundingBox) { - var srs = this.getSrs(); - var projection = this.projection; - - var iterator = this.featureTableIndex.queryWithBoundingBox(boundingBox, 'EPSG:3857'); - var thisgetRow = this.getRow.bind(this); - var projectedBoundingBox = boundingBox.projectBoundingBox('EPSG:3857', 'EPSG:4326'); - return { - [Symbol.iterator]() { - return this; - }, - next: function() { - var nextRow = iterator.next(); - if (!nextRow.done) { - var featureRow; - var geometry; - - while(!nextRow.done && !geometry) { - featureRow = thisgetRow(nextRow.value); - geometry = reprojectFeature(featureRow, srs, projection); - geometry = verifyFeature(geometry, projectedBoundingBox); - if (geometry) { - geometry.properties = featureRow.values; - return { - value: featureRow, - done: false - }; - } else { - nextRow = iterator.next(); - } - } - } - return { - done: true - } - } - } -} - -/** - * Calls geoJSONFeatureCallback with the geoJSON of each matched feature (always in 4326 projection) - * @param {BoundingBox} boundingBox 4326 bounding box to query - * @param {function} geoJSONFeatureCallback called with err, geoJSON, doneCallback - * @param {function} doneCallback called when all rows have been returned - */ -FeatureDao.prototype.queryForGeoJSONIndexedFeaturesWithBoundingBox = function(boundingBox, skipVerification) { - - var columns = []; - var columnMap = {}; - - var srs = this.getSrs(); - var projection = this.projection; - this.table.columns.forEach(function(column) { - var dataColumn = this.dataColumnsDao.getDataColumns(this.table.table_name, column.name); - columns.push({ - index: column.index, - name: column.name, - max: column.max, - min: column.min, - notNull: column.notNull, - primaryKey: column.primaryKey, - dataType: column.dataType ? DataTypes.name(column.dataType) : '', - displayName: dataColumn && dataColumn.name ? dataColumn.name : column.name, - dataColumn: dataColumn - }); - columnMap[column.name] = columns[columns.length-1]; - }.bind(this)); - - var verifiedCount = 0; - var iterator = this.featureTableIndex.queryWithBoundingBox(boundingBox, 'EPSG:4326')[Symbol.iterator](); - var thisgetRow = this.getRow.bind(this); - return { - [Symbol.iterator]() { - return this; - }, - next: function() { - var nextRow = iterator.next(); - if (!nextRow.done) { - var featureRow; - var geometry; - - while(!nextRow.done && !geometry) { - featureRow = thisgetRow(nextRow.value); - geometry = reprojectFeature(featureRow, srs, projection); - if (!skipVerification) { - geometry = verifyFeature(geometry, boundingBox); - } - if (geometry) { - var geoJson = { - properties: {}, - geometry: geometry - }; - for (var key in featureRow.values) { - if(featureRow.values.hasOwnProperty(key) && key != featureRow.getGeometryColumn().name && key != 'id') { - if (key.toLowerCase() == '_feature_id') { - geoJson.id = featureRow.values[key]; - } else if (key.toLowerCase() == '_properties_id') { - geoJson.properties[key.substring(12)] = featureRow.values[key]; - } else { - geoJson.properties[columnMap[key].displayName] = featureRow.values[key]; - } - } - } - geoJson.id = geoJson.id || featureRow.getId(); - return { - value: geoJson, - done: false - }; - } else { - nextRow = iterator.next(); - } - } - } - return { - done: true - } - }.bind(this) - } -} - -function reprojectFeature(featureRow, srs, projection) { - var geometry = featureRow.getGeometry().toGeoJSON(); - if (srs.organization + ':' + srs.organization_coordsys_id != 'EPSG:4326') { - geometry = reproject.reproject(geometry, projection, 'EPSG:4326'); - } - return geometry; -} - -function verifyFeature(geometry, boundingBox) { - try { - if (geometry.type == 'Point') { - return geometry; - } else if (geometry.type == 'LineString') { - var intersect = LineIntersect(geometry, boundingBox.toGeoJSON().geometry); - if (intersect.features.length) { - return geometry; - } else if (BooleanWithin(geometry, boundingBox.toGeoJSON().geometry)) { - return geometry; - } - } else if (geometry.type == 'Polygon') { - var polyIntersect = Intersect(geometry, boundingBox.toGeoJSON().geometry); - if (polyIntersect) { - return geometry; - } else if (BooleanWithin(geometry, boundingBox.toGeoJSON().geometry)) { - return geometry; - } - } - } catch (e) {} -} - -FeatureDao.prototype.queryIndexedFeaturesWithBoundingBox = function(boundingBox) { - var srs = this.getSrs(); - var projection = this.projection; - - var iterator = this.featureTableIndex.queryWithBoundingBox(boundingBox, 'EPSG:4326'); - var thisgetRow = this.getRow.bind(this); - return { - [Symbol.iterator]() { - return this; - }, - next: function() { - var nextRow = iterator.next(); - if (!nextRow.done) { - var featureRow; - var geometry; - - while(!nextRow.done && !geometry) { - featureRow = thisgetRow(nextRow.value); - geometry = reprojectFeature(featureRow, srs, projection); - geometry = verifyFeature(geometry, boundingBox); - if (geometry) { - geometry.properties = featureRow.values; - return { - value: featureRow, - done: false - }; - } else { - nextRow = iterator.next(); - } - } - } - return { - done: true - } - }.bind(this) - } -} - -FeatureDao.prototype.getBoundingBox = function () { - var contents = this.getContents(); - return new BoundingBox(contents.min_x, contents.max_x, contents.min_y, contents.max_y); -}; - -module.exports = FeatureDao; - -},{"../../boundingBox":7,"../../core/contents":8,"../../dataColumns":13,"../../db/dataTypes":14,"../../extension/index/featureTableIndex":26,"../../user/userDao":106,"../columns":64,"./featureRow":67,"@turf/boolean-within":120,"@turf/intersect":124,"@turf/line-intersect":126,"reproject":315,"util":343}],67:[function(require,module,exports){ -/** - * featureRow module. - * @module features/user/featureRow - */ - -var UserRow = require('../../user/userRow') - , FeatureColumn = require('./featureColumn') - , GeometryData = require('../../geom/geometryData') - , DataTypes = require('../../db/dataTypes'); - -var util = require('util'); - -/** - * Feature Row containing the values from a single result set row - * @param {FeatureTable} featureTable feature table - * @param {Array} columnTypes column types - * @param {Array} values values - */ -var FeatureRow = function(featureTable, columnTypes, values) { - UserRow.call(this, featureTable, columnTypes, values); - this.featureTable = featureTable; -} - -util.inherits(FeatureRow, UserRow); - -/** - * Get the geometry column index - * @return {Number} geometry column index - */ -FeatureRow.prototype.getGeometryColumnIndex = function () { - return this.featureTable.geometryIndex; -}; - -/** - * Get the geometry column - * @return {FeatureColumn} geometry column - */ -FeatureRow.prototype.getGeometryColumn = function () { - return this.featureTable.getGeometryColumn(); -}; - -/** - * Get the geometry - * @return {Buffer} geometry data - */ -FeatureRow.prototype.getGeometry = function () { - return this.getValueWithIndex(this.featureTable.geometryIndex); -}; - -/** - * Get the geometry's type - * @return {String} geometry data - */ -FeatureRow.prototype.getGeometryType = function () { - var geometryType = null; - var geometry = this.getValueWithIndex(this.featureTable.geometryIndex); - if (geometry !== null) { - geometryType = geometry.toGeoJSON().type; - } - return geometryType; -}; - -/** - * set the geometry - * @param {Buffer} geometryData geometry data - */ -FeatureRow.prototype.setGeometry = function (geometryData) { - this.setValueWithIndex(this.featureTable.geometryIndex, geometryData); -}; - -FeatureRow.prototype.toObjectValue = function (index, value) { - var objectValue = value; - var column = this.getColumnWithIndex(index); - if (column.isGeometry() && value) { - objectValue = new GeometryData(value); - } - return objectValue; -}; - -FeatureRow.prototype.toDatabaseValue = function(columnName) { - var column = this.getColumnWithColumnName(columnName); - var value = this.getValueWithColumnName(columnName); - if (column.isGeometry() && value.toData) { - return value.toData(); - } else if (column.dataType === DataTypes.GPKGDataType.BOOLEAN) { - return value === true ? 1 : 0; - } - - return value; -} - -module.exports = FeatureRow; - -},{"../../db/dataTypes":14,"../../geom/geometryData":73,"../../user/userRow":107,"./featureColumn":65,"util":343}],68:[function(require,module,exports){ -/** - * featureTable module. - * @module features/user/featureTable - */ - -var UserTable = require('../../user/userTable'); - -var util = require('util'); - -/** - * Represents a user feature table - * @param {string} tableName table name - * @param {array} columns feature columns - */ -var FeatureTable = function(tableName, columns) { - UserTable.call(this, tableName, columns); - var geometry = undefined; - for (var i = 0; i < columns.length; i++) { - var column = columns[i]; - if (column.isGeometry()) { - this.duplicateCheck(column.index, geometry, /* WKB_GEOMETRY_NAME */ 'GEOMETRY'); - geometry = column.index; - } - } - this.missingCheck(geometry, /* WKB_GEOMETRY_NAME */ 'GEOMETRY'); - this.geometryIndex = geometry; -} - -util.inherits(FeatureTable, UserTable); - -/** - * Get the geometry feature column - * @return {FeatureColumn} geometry feature column - */ -FeatureTable.prototype.getGeometryColumn = function () { - return this.getColumnWithIndex(this.geometryIndex); -}; - -FeatureTable.prototype.getTableType = function() { - return UserTable.FEATURE_TABLE; -} - -/** - * The FeatureTable - * @type {FeatureTable} - */ -module.exports = FeatureTable; - -},{"../../user/userTable":108,"util":343}],69:[function(require,module,exports){ -/** - * featureTableReader module. - * @module features/user/featureTableReader - */ - -var UserTableReader = require('../../user/userTableReader') - , FeatureTable = require('./featureTable') - , FeatureColumn = require('./featureColumn') - , GeometryColumnsDao = require('../columns').GeometryColumnsDao - , DataTypes = require('../../db/dataTypes') - , wkb = require('../../wkb'); - -var util = require('util'); - -/** -* Reads the metadata from an existing feature table -* @class FeatureTableReader -* @extends {module:user~UserTableReader} -*/ -var FeatureTableReader = function(tableNameOrGeometryColumns) { - if (util.isString(tableNameOrGeometryColumns)) { - UserTableReader.call(this, tableNameOrGeometryColumns); - } else { - UserTableReader.call(this, tableNameOrGeometryColumns.table_name); - this.geometryColumns = tableNameOrGeometryColumns; - } -} - -util.inherits(FeatureTableReader, UserTableReader); - -FeatureTableReader.prototype.readFeatureTable = function (geoPackage) { - if (!this.geometryColumns) { - var gcd = new GeometryColumnsDao(geoPackage); - this.geometryColumns = gcd.queryForTableName(this.table_name); - return this.readTable(geoPackage.getDatabase()); - } else { - return this.readTable(geoPackage.getDatabase()); - } -}; - -FeatureTableReader.prototype.createTable = function (tableName, columns) { - return new FeatureTable(tableName, columns); -}; - -FeatureTableReader.prototype.createColumnWithResults = function (results, index, name, type, max, notNull, defaultValue, primaryKey) { - var geometry = name === this.geometryColumns.column_name; - var geometryType = undefined; - var dataType = undefined; - if (geometry) { - geometryType = wkb.fromName(type); - } else { - dataType = DataTypes.fromName(type); - } - var column = new FeatureColumn(index, name, dataType, max, notNull, defaultValue, primaryKey, geometryType); - - return column; -}; - -/** - * The FeatureTableReader - * @type {FeatureTableReader} - */ -module.exports = FeatureTableReader; - -},{"../../db/dataTypes":14,"../../user/userTableReader":109,"../../wkb":111,"../columns":64,"./featureColumn":65,"./featureTable":68,"util":343}],70:[function(require,module,exports){ - -/** - * @module geoPackage - */ - -var SpatialReferenceSystemDao = require('./core/srs').SpatialReferenceSystemDao - , GeometryColumnsDao = require('./features/columns').GeometryColumnsDao - , FeatureDao = require('./features/user/featureDao') - , FeatureTableReader = require('./features/user/featureTableReader') - , ContentsDao = require('./core/contents').ContentsDao - , Contents = require('./core/contents').Contents - , TileMatrixSetDao = require('./tiles/matrixset').TileMatrixSetDao - , TileMatrixSet = require('./tiles/matrixset').TileMatrixSet - , TileMatrixDao = require('./tiles/matrix').TileMatrixDao - , TileMatrix = require('./tiles/matrix').TileMatrix - , TileTableReader = require('./tiles/user/tileTableReader') - , TileDao = require('./tiles/user/tileDao') - , TileTable = require('./tiles/user/tileTable') - , TileBoundingBoxUtils = require('./tiles/tileBoundingBoxUtils') - , TableCreator = require('./db/tableCreator') - , UserTable = require('./user/userTable') - , FeatureTable = require('./features/user/featureTable') - , DataColumnsDao = require('./dataColumns').DataColumnsDao - , DataColumnConstraintsDao = require('./dataColumnConstraints').DataColumnConstraintsDao - , MetadataDao = require('./metadata').MetadataDao - , MetadataReferenceDao = require('./metadata/reference').MetadataReferenceDao - , ExtensionDao = require('./extension').ExtensionDao - , CrsWktExtension = require('./extension/crsWkt').CrsWktExtension - , SchemaExtension = require('./extension/schema').SchemaExtension - , RelatedTablesExtension = require('./extension/relatedTables') - , TableIndexDao = require('./extension/index/tableIndex').TableIndexDao - , GeometryIndexDao = require('./extension/index/geometryIndex').GeometryIndexDao - , ExtendedRelationDao = require('./extension/relatedTables/extendedRelation').ExtendedRelationDao - , ContentsIdDao = require('./extension/contents/contentsIdDao') - , ContentsIdExtension = require('./extension/contents/.') - , FeatureStyleExtension = require('./extension/style/.') - , AttributeTable = require('./attributes/attributeTable') - , AttributeTableReader = require('./attributes/attributeTableReader') - , AttributeDao = require('./attributes/attributeDao') - , DataTypes = require('./db/dataTypes'); - -var proj4 = require('proj4'); - -proj4 = 'default' in proj4 ? proj4['default'] : proj4; // Module loading hack - -var defs = require('./proj4Defs'); -for (var name in defs) { - if (defs[name]) { - proj4.defs(name, defs[name]); - } -} - -/** - * A `GeoPackage` instance is the interface to a physical GeoPackage SQLite - * database. - * @param {string} name - * @param {string} path - * @param {module:db/geoPackageConnection~GeoPackageConnection} connection - * @class - */ -var GeoPackage = module.exports = function(name, path, connection) { - this.name = name; - this.path = path; - this.connection = connection; - this.tableCreator = new TableCreator(this); -} - -GeoPackage.loadProjections = function(items) { - if (!(items instanceof Array)) throw new Error('Invalid array of projections'); - for (var i = 0; i < items.length; i++) { - if (!defs[items[i]]) throw new Error('Projection not found'); - this.addProjection(items[i], defs[items[i]]); - } -} - -GeoPackage.addProjection = function(name, definition) { - if (!name || ! definition) throw new Error('Invalid projection name/definition'); - proj4.defs(''+name, ''+definition); -} - -GeoPackage.hasProjection = function(name) { - return proj4.defs(''+name); -} - -GeoPackage.prototype.close = function() { - this.connection.close(); -} - -GeoPackage.prototype.getDatabase = function() { - return this.connection; -} - -GeoPackage.prototype.getPath = function() { - return this.path; -} - -GeoPackage.prototype.export = function(callback) { - this.connection.export(callback); -} - -/** - * Get the GeoPackage name - * @return {String} the GeoPackage name - */ -GeoPackage.prototype.getName = function() { - return this.name; -} - -/** - * @returns {module:core/srs~SpatialReferenceSystemDao} the DAO to access the [SRS table]{@link module:core/srs~SpatialReferenceSystem} in this `GeoPackage` - */ -GeoPackage.prototype.getSpatialReferenceSystemDao = function() { - return this.spatialReferenceSystemDao || (this.spatialReferenceSystemDao = new SpatialReferenceSystemDao(this)); -} - -/** - * @returns {module:core/contents~ContentsDao} the DAO to access the [contents table]{@link module:core/contents~Contents} in this `GeoPackage` - */ -GeoPackage.prototype.getContentsDao = function() { - return this.contentsDao || (this.contentsDao = new ContentsDao(this)); -} - -/** - * @returns {module:tiles/matrixset~TileMatrixSetDao} the DAO to access the [tile matrix set]{@link module:tiles/matrixset~TileMatrixSet} in this `GeoPackage` - */ -GeoPackage.prototype.getTileMatrixSetDao = function () { - return this.tileMatrixSetDao || (this.tileMatrixSetDao = new TileMatrixSetDao(this)); -}; - -/** - * @returns {module:tiles/matrixset~TileMatrixDao} the DAO to access the [tile matrix]{@link module:tiles/matrixset~TileMatrix} in this `GeoPackage` - */ -GeoPackage.prototype.getTileMatrixDao = function() { - return this.tileMatrixDao || (this.tileMatrixDao = new TileMatrixDao(this)); -} - -GeoPackage.prototype.getDataColumnsDao = function() { - return this.dataColumnsDao || (this.dataColumnsDao = new DataColumnsDao(this)); -} - -GeoPackage.prototype.getExtensionDao = function() { - return this.extensionDao || (this.extensionDao = new ExtensionDao(this)); -} - -GeoPackage.prototype.getTableIndexDao = function() { - return this.tableIndexDao || (this.tableIndexDao = new TableIndexDao(this)); -} - -GeoPackage.prototype.getGeometryColumnsDao = function () { - return this.geometryColumnsDao || (this.geometryColumnsDao = new GeometryColumnsDao(this)); -}; - -GeoPackage.prototype.getDataColumnConstraintsDao = function () { - return this.dataColumnConstraintsDao || (this.dataColumnConstraintsDao = new DataColumnConstraintsDao(this)); -}; - -GeoPackage.prototype.getMetadataReferenceDao = function () { - return this.metadataReferenceDao || (this.metadataReferenceDao = new MetadataReferenceDao(this)); -}; - -GeoPackage.prototype.getMetadataDao = function () { - return this.metadataDao || (this.metadataDao = new MetadataDao(this)); -}; - -GeoPackage.prototype.getExtendedRelationDao = function() { - return this.extendedRelationDao || (this.extendedRelationDao = new ExtendedRelationDao(this)); -} - -GeoPackage.prototype.getContentsIdDao = function() { - return this.contentsIdDao || (this.contentsIdDao = new ContentsIdDao(this)); -} - -GeoPackage.prototype.getContentsIdExtension = function() { - return this.contentsIdExtension || (this.contentsIdExtension = new ContentsIdExtension(this)); -} - -GeoPackage.prototype.getFeatureStyleExtension = function() { - return this.featureStyleExtension || (this.featureStyleExtension = new FeatureStyleExtension(this)); -} - -GeoPackage.prototype.getGeometryIndexDao = function(featureDao) { - return new GeometryIndexDao(this, featureDao); -} - -GeoPackage.prototype.getRelatedTablesExtension = function() { - return this.relatedTablesExtension || (this.relatedTablesExtension = new RelatedTablesExtension(this)); -} - -GeoPackage.prototype.getSrs = function(srsId) { - var dao = this.getSpatialReferenceSystemDao(); - return dao.queryForId(srsId); -} - -GeoPackage.prototype.createRequiredTables = function() { - var geopackage = this; - return this.tableCreator.createRequired() - .then(function(results) { - return geopackage; - }); -} - -GeoPackage.prototype.createSupportedExtensions = function() { - var crs = new CrsWktExtension(this); - crs.getOrCreateExtension(); - var schema = new SchemaExtension(this); - schema.getOrCreateExtension(); - return this; -} - -/** - * @returns {module:tiles/user/tileDao~TileDao} the `TileDao` to access [tiles]{@link module:tiles/user/tileTable} - */ -GeoPackage.prototype.getTileDaoWithTileMatrixSet = function (tileMatrixSet) { - var tileMatrices = []; - var tileMatrixDao = this.getTileMatrixDao(); - var results = tileMatrixDao.queryForAllEq(TileMatrixDao.COLUMN_TABLE_NAME, tileMatrixSet.table_name, null, null, TileMatrixDao.COLUMN_ZOOM_LEVEL + ' ASC, ' + TileMatrixDao.COLUMN_PIXEL_X_SIZE + ' DESC, ' + TileMatrixDao.COLUMN_PIXEL_Y_SIZE + ' DESC'); - results.forEach(function(result) { - var tm = new TileMatrix(); - tileMatrixDao.populateObjectFromResult(tm, result); - tileMatrices.push(tm); - }); - var tableReader = new TileTableReader(tileMatrixSet); - var tileTable = tableReader.readTileTable(this); - return new TileDao(this, tileTable, tileMatrixSet, tileMatrices); -}; - -GeoPackage.prototype.getTileDaoWithContents = function (contents) { - var dao = this.getContentsDao(); - var tileMatrixSet = dao.getTileMatrixSet(contents); - return this.getTileDaoWithTileMatrixSet(tileMatrixSet); -}; - -GeoPackage.prototype.getTileDao = function (tableName) { - var tms = this.getTileMatrixSetDao(); - var results = tms.queryForAllEq(TileMatrixSetDao.COLUMN_TABLE_NAME, tableName); - if (results.length > 1) { - throw new Error('Unexpected state. More than one Tile Matrix Set matched for table name: ' + tableName + ', count: ' + results.length); - } else if (results.length === 0) { - throw new Error('No Tile Matrix found for table name: ' + tableName); - } - var tileMatrixSet = new TileMatrixSet(); - tms.populateObjectFromResult(tileMatrixSet, results[0]); - return this.getTileDaoWithTileMatrixSet(tileMatrixSet); -}; - -/** - * Return a hash containing arrays of table names grouped under keys `features`, - * `tiles`, and `attributes`. - * @return {{features: string[], tiles: string[], attributes: string[]}} - */ -GeoPackage.prototype.getTables = function() { - var tables = {}; - var featureTables = this.getFeatureTables(); - tables.features = featureTables; - var tileTables = this.getTileTables(); - tables.tiles = tileTables; - var attributesTables = this.getAttributesTables(); - tables.attributes = attributesTables; - return tables; -}; - -GeoPackage.prototype.getAttributesTables = function() { - return this.getContentsDao().getTables(ContentsDao.GPKG_CDT_ATTRIBUTES_NAME); -} - -GeoPackage.prototype.hasAttributeTable = function(attributeTableName) { - var tables = this.getAttributesTables(); - return tables && tables.indexOf(attributeTableName) != -1; -} - -/** - * Get the tile tables - * @param {callback} callback called with an error if one occurred and the array of {TileTable} names - */ -GeoPackage.prototype.getTileTables = function () { - var tms = this.getTileMatrixSetDao(); - if (!tms.isTableExists()) { - return []; - } - return tms.getTileTables(); -}; - -/** - * Checks if the tile table exists in the GeoPackage - * @param {String} tileTableName name of the table to query for - * @param {Function} callback called with an error if one occurred and true or false for the existence of the table - */ -GeoPackage.prototype.hasTileTable = function(tileTableName) { - var tables = this.getTileTables(); - return tables && tables.indexOf(tileTableName) != -1; -}; - -/** - * Checks if the feature table exists in the GeoPackage - * @param {GeoPackage} geopackage open GeoPackage object - * @param {String} featureTableName name of the table to query for - * @param {Function} callback called with an error if one occurred and true or false for the existence of the table - */ -GeoPackage.prototype.hasFeatureTable = function(featureTableName) { - var tables = this.getFeatureTables(); - return tables && tables.indexOf(featureTableName) != -1; -}; - -/** - * Get the feature tables - * @param {callback} callback called with an error if one occurred and the array of {FeatureTable} names - */ -GeoPackage.prototype.getFeatureTables = function () { - var gcd = this.getGeometryColumnsDao(); - if (!gcd.isTableExists()) { - return []; - } - return gcd.getFeatureTables(); -}; - -GeoPackage.prototype.isTable = function(tableName) { - return !!this.connection.tableExists(tableName); -} - -GeoPackage.prototype.isTableType = function(type, tableName) { - return type === this.getTableType(tableName); -} - -GeoPackage.prototype.getTableType = function(tableName) { - var contents = this.getTableContents(tableName); - if (contents) { - return contents.data_type; - } -} - -GeoPackage.prototype.getTableContents = function(tableName) { - return this.getContentsDao().queryForId(tableName); -} - -GeoPackage.prototype.deleteTable = function(tableName) { - this.connection.dropTable(tableName); -} - -GeoPackage.prototype.getTableCreator = function() { - return this.tableCreator; -} - -GeoPackage.prototype.index = function() { - var tables = this.getFeatureTables(); - - return tables.reduce(function(sequence, table) { - return sequence.then(function() { - return this.indexFeatureTable(table) - .then(function(indexed) { - if (indexed) { - return true; - } else { - throw new Error('Unable to index table ' + table); - } - }); - }.bind(this)) - }.bind(this), Promise.resolve()); -} - -GeoPackage.prototype.indexFeatureTable = function(table, progress) { - var featureDao = this.getFeatureDao(table); - var fti = featureDao.featureTableIndex; - return new Promise(function(resolve, reject) { - var tableIndex = fti.getTableIndex(); - if (tableIndex) { - return resolve(true); - } - resolve(fti.index(progress)); - }); -} - -/** - * Get a Feature DAO from Geometry Columns - * - * @param {GeometryColumns} geometryColumns Geometry Columns - * @param {callback} callback called with an error if one occurred and the {FeatureDao} - */ -GeoPackage.prototype.getFeatureDaoWithGeometryColumns = function (geometryColumns) { - if (!geometryColumns) { - throw new Error('Non null Geometry Columns is required to create Feature DAO'); - } - - var tableReader = new FeatureTableReader(geometryColumns); - var featureTable = tableReader.readFeatureTable(this); - var dao = new FeatureDao(this, featureTable, geometryColumns, this.metadataDb); - return dao; -}; - -/** - * Get a Feature DAO from Contents - * @param {Contents} contents Contents - * @param {Function} callback callback called with an error if one occurred and the {FeatureDao} - */ -GeoPackage.prototype.getFeatureDaoWithContents = function (contents) { - var dao = this.getContentsDao(); - var columns = dao.getGeometryColumns(contents); - return this.getFeatureDaoWithGeometryColumns(columns); -}; - -/** - * Get a Feature DAO from Contents - * @param {string} tableName table name - * @param {Function} callback callback called with an error if one occurred and the {FeatureDao} - */ -GeoPackage.prototype.getFeatureDao = function (tableName) { - var dao = this.getGeometryColumnsDao(); - var geometryColumns = dao.queryForTableName(tableName); - if (!geometryColumns) { - throw new Error('No Feature Table exists for table name: ' + tableName); - } - return this.getFeatureDaoWithGeometryColumns(geometryColumns); -}; - -/** - * Queries for GeoJSON features in a feature table - * @param {String} tableName Table name to query - * @param {BoundingBox} boundingBox BoundingBox to query - * @param {Function} callback Caled with err, featureArray - */ -GeoPackage.prototype.queryForGeoJSONFeaturesInTable = function(tableName, boundingBox) { - var featureDao = this.getFeatureDao(tableName); - var features = []; - var iterator = featureDao.queryForGeoJSONIndexedFeaturesWithBoundingBox(boundingBox); - for (var feature of iterator) { - features.push(feature); - } - return features; -} - -/** - * iterates GeoJSON features in a feature table within a bounding box - * @param {String} tableName Table name to query - * @param {BoundingBox} boundingBox BoundingBox to query - * @param {Function} rowCallback Caled with err, geoJSON - * @param {Function} doneCallback Caled with err if one occurred - */ -GeoPackage.prototype.iterateGeoJSONFeaturesInTableWithinBoundingBox = function(tableName, boundingBox) { - var featureDao = this.getFeatureDao(tableName); - return featureDao.queryForGeoJSONIndexedFeaturesWithBoundingBox(boundingBox); -} - -/** - * Create the Geometry Columns table if it does not already exist - * @param {Function} callback called with an error if one occurred otherwise the table now exists - */ -GeoPackage.prototype.createGeometryColumnsTable = function () { - var dao = this.getGeometryColumnsDao(); - if (dao.isTableExists()) { - return Promise.resolve().then(function() { return true; }); - } - return this.tableCreator.createGeometryColumns(); -}; - -/** - * Get a Attribute DAO - * @param {string} tableName table name - * @param {Function} callback callback called with an error if one occurred and the {AttributeDao} - */ -GeoPackage.prototype.getAttributeDaoWithTableName = function (tableName) { - var dao = this.getContentsDao(); - var contents = dao.queryForId(tableName); - return this.getAttributeDaoWithContents(contents); -}; - -/** - * Get a Attribute DAO - * @param {Contents} contents Contents - * @param {Function} callback callback called with an error if one occurred and the {AttributeDao} - */ -GeoPackage.prototype.getAttributeDaoWithContents = function (contents) { - if (!contents) { - throw new Error('Non null Contents is required to create an Attributes DAO'); - } - - var reader = new AttributeTableReader(contents.table_name); - var table = reader.readTable(this.connection); - table.setContents(contents); - return new AttributeDao(this, table); -} - -GeoPackage.prototype.createAttributeTable = function(tableName, columns, dataColumns) { - return Promise.resolve() - .then(function() { - var attributeTable = new AttributeTable(tableName, columns); - var result = this.tableCreator.createUserTable(attributeTable); - var contents = new Contents(); - contents.table_name = tableName; - contents.data_type = ContentsDao.GPKG_CDT_ATTRIBUTES_NAME; - contents.identifier = tableName; - contents.last_change = new Date().toISOString(); - - return this.getContentsDao().create(contents); - }.bind(this)) - .then(function() { - if (dataColumns) { - return this.createDataColumns() - .then(function() { - var dataColumnsDao = this.getDataColumnsDao(); - dataColumns.forEach(function(dataColumn) { - dataColumnsDao.create(dataColumn); - }); - }.bind(this)); - } - }.bind(this)) - .then(function() { - return true; - }); -} - -/** - * Create the given {@link module:features/user/featureTable~FeatureTable} - * @param {FeatureTable} featureTable feature table - */ -GeoPackage.prototype.createFeatureTable = function(featureTable) { - return this.tableCreator.createUserTable(featureTable); -}; - -GeoPackage.prototype.createFeatureTableWithGeometryColumns = function(geometryColumns, boundingBox, srsId, columns) { - return this.createFeatureTableWithGeometryColumnsAndDataColumns(geometryColumns, boundingBox, srsId, columns, undefined); -}; - -GeoPackage.prototype.createFeatureTableWithGeometryColumnsAndDataColumns = function(geometryColumns, boundingBox, srsId, columns, dataColumns) { - return this.createGeometryColumnsTable() - .then(function(result) { - var featureTable = new FeatureTable(geometryColumns.table_name, columns); - var result = this.createFeatureTable(featureTable); - var contents = new Contents(); - contents.table_name = geometryColumns.table_name; - contents.data_type = ContentsDao.GPKG_CDT_FEATURES_NAME; - contents.identifier = geometryColumns.table_name; - contents.last_change = new Date().toISOString(); - contents.min_x = boundingBox.minLongitude; - contents.min_y = boundingBox.minLatitude; - contents.max_x = boundingBox.maxLongitude; - contents.max_y = boundingBox.maxLatitude; - contents.srs_id = srsId; - - this.getContentsDao().create(contents); - geometryColumns.srs_id = srsId; - return this.getGeometryColumnsDao().create(geometryColumns); - }.bind(this)) - .then(function() { - if (dataColumns) { - return this.createDataColumns() - .then(function() { - var dataColumnsDao = this.getDataColumnsDao(); - dataColumns.forEach(function(dataColumn) { - dataColumnsDao.create(dataColumn); - }); - }.bind(this)); - } - }.bind(this)) - .then(function() { - return true; - }); -}; - -/** - * Create the Tile Matrix Set table if it does not already exist - * @param {Function} callback called with an error if one occurred otherwise the table now exists - */ -GeoPackage.prototype.createTileMatrixSetTable = function() { - var dao = this.getTileMatrixSetDao(); - if (dao.isTableExists()) { - return Promise.resolve().then(function() { return true; }); - } - return this.tableCreator.createTileMatrixSet(); -} - -/** - * Create the Tile Matrix table if it does not already exist - * @param {Function} callback called with an error if one occurred otherwise the table now exists - */ -GeoPackage.prototype.createTileMatrixTable = function() { - var dao = this.getTileMatrixDao(); - if (dao.isTableExists()) { - return Promise.resolve().then(function() { return true; }); - } - return this.tableCreator.createTileMatrix(); -}; - -/** - * Create the given tile table in this GeoPackage. - * - * @param {module:tiles/user/tileTable~TileTable} tileTable - * @returns {@link module:db/tableCreator~TableCreator#createUserTable} - */ -GeoPackage.prototype.createTileTable = function(tileTable) { - return this.tableCreator.createUserTable(tileTable); -}; - -/** - * Create a new [tile table]{@link module:tiles/user/tileTable~TileTable} in this GeoPackage. - * - * @param {String} tableName tile table name - * @param {BoundingBox} contentsBoundingBox bounding box of the contents table - * @param {Number} contentsSrsId srs id of the contents table - * @param {BoundingBox} tileMatrixSetBoundingBox bounding box of the matrix set - * @param {Number} tileMatrixSetSrsId srs id of the matrix set - * @returns {Promise} `Promise` of the created {@link module:tiles/matrixset~TileMatrixSet} - */ -GeoPackage.prototype.createTileTableWithTableName = function(tableName, contentsBoundingBox, contentsSrsId, tileMatrixSetBoundingBox, tileMatrixSetSrsId) { - const columns = TileTable.createRequiredColumns(); - const tileTable = new TileTable(tableName, columns); - const contents = new Contents(); - contents.table_name = tableName; - contents.data_type = ContentsDao.GPKG_CDT_TILES_NAME; - contents.identifier = tableName; - contents.last_change = new Date().toISOString(); - contents.min_x = contentsBoundingBox.minLongitude; - contents.min_y = contentsBoundingBox.minLatitude; - contents.max_x = contentsBoundingBox.maxLongitude; - contents.max_y = contentsBoundingBox.maxLatitude; - contents.srs_id = contentsSrsId; - - const tileMatrixSet = new TileMatrixSet(); - tileMatrixSet.setContents(contents); - tileMatrixSet.srs_id = tileMatrixSetSrsId; - tileMatrixSet.min_x = tileMatrixSetBoundingBox.minLongitude; - tileMatrixSet.min_y = tileMatrixSetBoundingBox.minLatitude; - tileMatrixSet.max_x = tileMatrixSetBoundingBox.maxLongitude; - tileMatrixSet.max_y = tileMatrixSetBoundingBox.maxLatitude; - - return this.createTileMatrixSetTable() - .then(function() { - return this.createTileMatrixTable(); - }.bind(this)) - .then(function() { - return this.createTileTable(tileTable); - }.bind(this)) - .then(function() { - return this.getContentsDao().create(contents); - }.bind(this)) - .then(function() { - return this.getTileMatrixSetDao().create(tileMatrixSet); - }.bind(this)) - .then(function() { - return tileMatrixSet; - }); -}; - -/** - * Create the tables and rows necessary to store tiles in a {@link module:tiles/matrixset~TileMatrixSet}. - * This will create a [tile matrix row]{@link module:tiles/matrix~TileMatrix} - * for every integral zoom level in the range `[minZoom..maxZoom]`. - * - * @param {BoundingBox} epsg3857TileBoundingBox - * @param {module:tiles/matrixset~TileMatrixSet} tileMatrixSet - * @param {number} minZoom - * @param {number} maxZoom - * @param {number} [tileSize=256] optional tile size in pixels - * @returns {module:geoPackage~GeoPackage} `this` `GeoPackage` - */ -GeoPackage.prototype.createStandardWebMercatorTileMatrix = function(epsg3857TileBoundingBox, tileMatrixSet, minZoom, maxZoom, tileSize) { - tileSize = tileSize || 256; - var tileMatrixDao = this.getTileMatrixDao(); - - for (var zoom = minZoom; zoom <= maxZoom; zoom++) { - var box = TileBoundingBoxUtils.webMercatorTileBox(epsg3857TileBoundingBox, zoom); - var matrixWidth = (box.maxX - box.minX) + 1; - var matrixHeight = (box.maxY - box.minY) + 1; - - var pixelXSize = ((epsg3857TileBoundingBox.maxLongitude - epsg3857TileBoundingBox.minLongitude) / matrixWidth) / tileSize; - var pixelYSize = ((epsg3857TileBoundingBox.maxLatitude - epsg3857TileBoundingBox.minLatitude) / matrixHeight) / tileSize; - - var tileMatrix = new TileMatrix(); - tileMatrix.table_name = tileMatrixSet.table_name; - tileMatrix.zoom_level = zoom; - tileMatrix.matrix_width = matrixWidth; - tileMatrix.matrix_height = matrixHeight; - tileMatrix.tile_width = tileSize; - tileMatrix.tile_height = tileSize; - tileMatrix.pixel_x_size = pixelXSize; - tileMatrix.pixel_y_size = pixelYSize; - tileMatrixDao.create(tileMatrix); - } - - return this; -}; - -/** - * Adds a tile to the GeoPackage - * @param {object} tile Byte array or Buffer containing the tile bytes - * @param {String} tableName Table name to add the tile to - * @param {Number} zoom zoom level of this tile - * @param {Number} tileRow row of this tile - * @param {Number} tileColumn column of this tile - */ -GeoPackage.prototype.addTile = function(tileStream, tableName, zoom, tileRow, tileColumn) { - var tileDao = this.getTileDao(tableName); - var newRow = tileDao.newRow(); - newRow.setZoomLevel(zoom); - newRow.setTileColumn(tileColumn); - newRow.setTileRow(tileRow); - newRow.setTileData(tileStream); - return tileDao.create(newRow); -}; - -/** - * Create the Data Columns table if it does not already exist - * @param {Function} callback called with an error if one occurred otherwise the table now exists - */ -GeoPackage.prototype.createDataColumns = function() { - var dao = this.getDataColumnsDao(); - if (dao.isTableExists()) { - return Promise.resolve().then(function() { return true; }); - } - return this.tableCreator.createDataColumns(); -}; - -/** - * Create the Data Column Constraints table if it does not already exist - * @param {Function} callback called with an error if one occurred otherwise the table now exists - */ -GeoPackage.prototype.createDataColumnConstraintsTable = function () { - var dao = this.getDataColumnConstraintsDao(); - if (dao.isTableExists()) { - return Promise.resolve().then(function() { return true; }); - } - return this.tableCreator.createDataColumnConstraints(); -}; - -GeoPackage.prototype.createMetadataTable = function () { - var dao = this.getMetadataDao() - if (dao.isTableExists()) { - return Promise.resolve().then(function() { return true; }); - } - return this.tableCreator.createMetadata(); -}; - -GeoPackage.prototype.createMetadataReferenceTable = function () { - var dao = this.getMetadataReferenceDao() - if (dao.isTableExists()) { - return Promise.resolve().then(function() { return true; }); - } - return this.tableCreator.createMetadataReference(); -}; - -GeoPackage.prototype.createExtensionTable = function () { - var dao = this.getExtensionDao() - if (dao.isTableExists()) { - return Promise.resolve().then(function() { return true; }); - } - return this.tableCreator.createExtensions(); -}; - -GeoPackage.prototype.createTableIndexTable = function () { - var dao = this.getTableIndexDao(); - if (dao.isTableExists()) { - return Promise.resolve().then(function() { return true; }); - } - return this.tableCreator.createTableIndex(); -}; - -GeoPackage.prototype.createGeometryIndexTable = function() { - var dao = this.getGeometryIndexDao(); - if (dao.isTableExists()) { - return Promise.resolve().then(function() { return true; }); - } - return this.tableCreator.createGeometryIndex(); -}; - -GeoPackage.prototype.createStyleMappingTable = function(tableName, columns, dataColumns) { - return Promise.resolve() - .then(function() { - var attributeTable = new StyleMappingTable(tableName, columns); - var result = this.tableCreator.createUserTable(attributeTable); - var contents = new Contents(); - contents.table_name = tableName; - contents.data_type = ContentsDao.GPKG_CDT_ATTRIBUTES_NAME; - contents.identifier = tableName; - contents.last_change = new Date().toISOString(); - - return this.getContentsDao().create(contents); - }.bind(this)) - .then(function() { - if (dataColumns) { - return this.createDataColumns() - .then(function() { - var dataColumnsDao = this.getDataColumnsDao(); - dataColumns.forEach(function(dataColumn) { - dataColumnsDao.create(dataColumn); - }); - }.bind(this)); - } - }.bind(this)) - .then(function() { - return true; - }); -} - -/** - * Get the application id of the GeoPackage - * @param {Function} callback callback called with the application id - */ -GeoPackage.prototype.getApplicationId = function() { - var connection = this.getDatabase(); - return connection.getApplicationId(); -} - -GeoPackage.prototype.getInfoForTable = function (tableDao) { - var info = {}; - info.tableName = tableDao.table_name; - info.tableType = tableDao.table.getTableType(); - info.count = tableDao.getCount(); - if (info.tableType === UserTable.FEATURE_TABLE) { - info.geometryColumns = {}; - info.geometryColumns.tableName = tableDao.geometryColumns.table_name; - info.geometryColumns.geometryColumn = tableDao.geometryColumns.column_name; - info.geometryColumns.geometryTypeName = tableDao.geometryColumns.geometry_type_name; - info.geometryColumns.z = tableDao.geometryColumns.z; - info.geometryColumns.m = tableDao.geometryColumns.m; - } - if (info.tableType === UserTable.TILE_TABLE) { - info.minZoom = tableDao.minZoom; - info.maxZoom = tableDao.maxZoom; - info.minWebMapZoom = tableDao.minWebMapZoom; - info.maxWebMapZoom = tableDao.maxWebMapZoom; - info.zoomLevels = tableDao.tileMatrices.length; - } - - var dao; - var contentsRetriever; - if (info.tableType === UserTable.FEATURE_TABLE) { - dao = this.getGeometryColumnsDao(); - contentsRetriever = tableDao.geometryColumns; - } else if (info.tableType === UserTable.TILE_TABLE) { - dao = this.getTileMatrixSetDao(); - contentsRetriever = tableDao.tileMatrixSet; - info.tileMatrixSet = {}; - info.tileMatrixSet.srsId = tableDao.tileMatrixSet.srs_id; - info.tileMatrixSet.minX = tableDao.tileMatrixSet.min_x; - info.tileMatrixSet.maxX = tableDao.tileMatrixSet.max_x; - info.tileMatrixSet.minY = tableDao.tileMatrixSet.min_y; - info.tileMatrixSet.maxY = tableDao.tileMatrixSet.max_y; - } - var contents = dao.getContents(contentsRetriever); - info.contents = {}; - info.contents.tableName = contents.table_name; - info.contents.dataType = contents.data_type; - info.contents.identifier = contents.identifier; - info.contents.description = contents.description; - info.contents.lastChange = contents.last_change; - info.contents.minX = contents.min_x; - info.contents.maxX = contents.max_x; - info.contents.minY = contents.min_y; - info.contents.maxY = contents.max_y; - var contentsDao = this.getContentsDao(); - var contentsSrs = contentsDao.getSrs(contents); - info.contents.srs = { - name:contentsSrs.srs_name, - id:contentsSrs.srs_id, - organization:contentsSrs.organization, - organization_coordsys_id:contentsSrs.organization_coordsys_id, - definition:contentsSrs.definition, - description:contentsSrs.description - }; - var srs = tableDao.getSrs(); - - info.srs = { - name:srs.srs_name, - id:srs.srs_id, - organization:srs.organization, - organization_coordsys_id:srs.organization_coordsys_id, - definition:srs.definition, - description:srs.description - }; - info.columns = []; - info.columnMap = {}; - - var dcd = this.getDataColumnsDao(); - - tableDao.table.columns.forEach(function(column) { - var dataColumn = dcd.getDataColumns(tableDao.table.table_name, column.name); - info.columns.push({ - index: column.index, - name: column.name, - max: column.max, - min: column.min, - notNull: column.notNull, - primaryKey: column.primaryKey, - dataType: column.dataType ? DataTypes.name(column.dataType) : '', - displayName: dataColumn && dataColumn.name ? dataColumn.name : column.name, - dataColumn: dataColumn - }); - info.columnMap[column.name] = info.columns[info.columns.length-1]; - }.bind(this)); - - return info; -}; - -},{"./attributes/attributeDao":3,"./attributes/attributeTable":5,"./attributes/attributeTableReader":6,"./core/contents":8,"./core/srs":9,"./dataColumnConstraints":12,"./dataColumns":13,"./db/dataTypes":14,"./db/tableCreator":19,"./extension":25,"./extension/contents/.":23,"./extension/contents/contentsIdDao":22,"./extension/crsWkt":24,"./extension/index/geometryIndex":27,"./extension/index/tableIndex":28,"./extension/relatedTables":32,"./extension/relatedTables/extendedRelation":31,"./extension/schema":45,"./extension/style/.":54,"./features/columns":64,"./features/user/featureDao":66,"./features/user/featureTable":68,"./features/user/featureTableReader":69,"./metadata":74,"./metadata/reference":75,"./proj4Defs":77,"./tiles/matrix":90,"./tiles/matrixset":91,"./tiles/tileBoundingBoxUtils":93,"./tiles/user/tileDao":96,"./tiles/user/tileTable":99,"./tiles/user/tileTableReader":100,"./user/userTable":108,"proj4":285}],71:[function(require,module,exports){ -/** - * GeoPackage Constants module. - * @module dao/geoPackageConstants - */ - -/** @constant {string} GEOPACKAGE_EXTENSION Extension to GeoPackage files */ -exports.GEOPACKAGE_EXTENSION = 'gpkg'; -/** @constant {string} GEOPACKAGE_EXTENDED_EXTENSION Extension to GeoPackage extension files */ -exports.GEOPACKAGE_EXTENDED_EXTENSION = 'gpkx'; -/** @constant {string} APPLICATION_ID GeoPackage application id */ -exports.APPLICATION_ID = 'GPKG'; -/** @constant {string} USER_VERSION GeoPackage user version */ -exports.USER_VERSION = '10200'; -/** @constant {string} GEOPACKAGE_EXTENSION_AUTHOR GeoPackage author */ -exports.GEOPACKAGE_EXTENSION_AUTHOR = exports.GEOPACKAGE_EXTENSION; -/** @constant {string} GEOMETRY_EXTENSION_PREFIX Geometry extension prefix */ -exports.GEOMETRY_EXTENSION_PREFIX = 'geom'; -/** @constant {string} GEOPACKAGE_GEOMETRY_MAGIX_NUMBER Expected magic number */ -exports.GEOPACKAGE_GEOMETRY_MAGIC_NUMBER = 'GP'; -/** @constant {string} GEOPACKAGE_GEOMETRY_VERSION_1 Expected version 1 value */ -exports.GEOPACKAGE_GEOMETRY_VERSION_1 = 0; -/** @constant {string} SQLITE_HEADER_PREFIX SQLite header string prefix */ -exports.SQLITE_HEADER_PREFIX = 'SQLite format 3'; - -},{}],72:[function(require,module,exports){ -var wkx = require('wkx'); -var turfBbox = require('@turf/bbox'); - -module.exports.buildEnvelopeWithGeometry = function(wkbGeometry) { - var geoJson = wkbGeometry.toGeoJSON(); - var bbox = turfBbox(geoJson); - return { - minX: bbox[0], - minY: bbox[1], - maxX: bbox[2], - maxY: bbox[3] - }; -} - -module.exports.expandEnvelopeForGeometry = function(envelope, wkbGeometry) { - -} - -},{"@turf/bbox":117,"wkx":360}],73:[function(require,module,exports){ -(function (Buffer){ -/** - * GeometryData module. - * @module geom/geometryData - */ - -var GeoPackageConstants = require('../geoPackageConstants'); - -var wkx = require('wkx'); - -var BIG_ENDIAN = 0; -var LITTLE_ENDIAN = 1; - -/** - * GeoPackage Geometry Data - */ -var GeometryData = function(buffer) { - this.empty = true; - this.byteOrder = BIG_ENDIAN; - if (buffer) { - this.fromData(buffer); - } -} - -module.exports = GeometryData; - -GeometryData.prototype.setSrsId = function(srsId) { - this.srsId = srsId; -} - -GeometryData.prototype.setGeometry = function(wkbGeometry) { - this.empty = false; - this.geometry = wkbGeometry; -} - -GeometryData.prototype.setEnvelope = function(envelope) { - this.envelope = envelope; -} - -GeometryData.prototype.toGeoJSON = function() { - return this.geometry.toGeoJSON(); -} - -GeometryData.prototype.fromData = function (buffer) { - this.buffer = buffer; - if (buffer instanceof Uint8Array) { - this.buffer = buffer = Buffer.from(buffer); - } - var magicString = buffer.toString('ascii', 0, 2); - if (magicString !== GeoPackageConstants.GEOPACKAGE_GEOMETRY_MAGIC_NUMBER) { - throw new Error('Unexpected GeoPackage Geometry magic number: ' + magicString + ', Expected: ' + GeoPackageConstants.GEOPACKAGE_GEOMETRY_MAGIC_NUMBER); - } - - var version = buffer.readUInt8(2); - if (version !== GeoPackageConstants.GEOPACKAGE_GEOMETRY_VERSION_1) { - throw new Error('Unexpected GeoPackage Geometry version ' + version + ', Expected: ' + GeoPackageConstants.GEOPACKAGE_GEOMETRY_VERSION_1); - } - - var flags = buffer.readUInt8(3); - var envelopeIndicator = this.readFlags(flags); - - this.srsId = buffer[this.byteOrder ? 'readUInt32LE' : 'readUInt32BE'](4); - var envelopeAndOffset = this.readEnvelope(envelopeIndicator, buffer); - this.envelope = envelopeAndOffset.envelope; - - var offset = envelopeAndOffset.offset; - - var wkbBuffer = buffer.slice(offset); - try { - this.geometry = wkx.Geometry.parse(wkbBuffer); - this.geometryError = undefined; - } catch (error) { - this.geometryError = error.message; - console.log('Error parsing geometry'); - } -}; - -GeometryData.prototype.toData = function() { - var header = Buffer.alloc(8); - - // Write GP as the 2 byte magic number - header.write(GeoPackageConstants.GEOPACKAGE_GEOMETRY_MAGIC_NUMBER); - - // Write a byte as the version value of 0 = version 1 - header.writeUInt8(GeoPackageConstants.GEOPACKAGE_GEOMETRY_VERSION_1, 2); - - // Build and write a flags byte - var flags = this.buildFlagsByte(); - header.writeUInt8(flags, 3); - - // write the 4 byte srs id - header[this.byteOrder ? 'writeUInt32LE' : 'writeUInt32BE'](this.srsId, 4); - - var envelopeBuffer = this.writeEnvelope(this.envelope); - var concatArray = [header, envelopeBuffer]; - try { - concatArray.push(this.geometry.toWkb()); - this.geometryError = undefined; - } catch (error) { - this.geometryError = error.message; - } - - this.buffer = Buffer.concat(concatArray); - return this.buffer; -}; - -GeometryData.prototype.writeEnvelope = function() { - if (!this.envelope) return Buffer.alloc(0); - - var writeDoubleMethod = 'writeDouble' + (this.byteOrder ? 'LE' : 'BE'); - - var length = 32; - if (this.envelope.hasZ) { - length += 16; - } - if (this.envelope.hasM) { - length += 16; - } - var envelopeBuffer = Buffer.alloc(length); - envelopeBuffer[writeDoubleMethod](this.envelope.minX, 0); - envelopeBuffer[writeDoubleMethod](this.envelope.maxX, 8); - envelopeBuffer[writeDoubleMethod](this.envelope.minY, 16); - envelopeBuffer[writeDoubleMethod](this.envelope.maxY, 24); - - var position = 32; - if (this.envelope.hasZ) { - envelopeBuffer[writeDoubleMethod](this.envelope.minZ, position); - envelopeBuffer[writeDoubleMethod](this.envelope.maxZ, position+8); - position = 48; - } - if (this.envelope.hasM) { - envelopeBuffer[writeDoubleMethod](this.envelope.minM, position); - envelopeBuffer[writeDoubleMethod](this.envelope.maxM, position+8); - } - - return envelopeBuffer; -}; - -GeometryData.prototype.buildFlagsByte = function() { - var flag = 0; - - // Add the binary type to bit 5, 0 for standard and 1 for extended - var binaryType = this.extended ? 1 : 0; - flag += (binaryType << 5); - - // Add the empty geometry flag to bit 4, 0 for non-empty and 1 for empty - var emptyValue = this.empty ? 1 : 0; - flag += (emptyValue << 4); - - // Add the envelope contents indicator code (3-bit unsigned integer to bits 3, 2, and 1) - var envelopeIndicator = !this.envelope ? 0 : this.getIndicatorWithEnvelope(this.envelope); - flag += (envelopeIndicator << 1); - - // Add the byte order to bit 0, 0 for Big Endian and 1 for Little Endian - var byteOrderValue = (this.byteOrder === BIG_ENDIAN) ? 0 : 1; - flag += byteOrderValue; - - return flag; -}; - -GeometryData.prototype.getIndicatorWithEnvelope = function(envelope) { - var indicator = 1; - if (envelope.hasZ) { - indicator++; - } - if (envelope.hasM) { - indicator += 2; - } - return indicator; -}; - -GeometryData.prototype.readFlags = function (flagsInt) { - // Verify the reserved bits at 7 and 6 are 0 - var reserved7 = (flagsInt >> 7) & 1; - var reserved6 = (flagsInt >> 6) & 1; - if (reserved7 !== 0 || reserved6 !== 0) { - throw new Error('Unexpected GeoPackage Geometry flags. Flag bit 7 and 6 should both be 0, 7='+reserved7+', 6='+ reserved6); - } - - // Get the binary type from bit 5, 0 for standard and 1 for extended - var binaryType = (flagsInt >> 5) & 1; - this.extended = binaryType == 1; - - // Get the empty geometry flag from bit 4, 0 for non-empty and 1 for - // empty - var emptyValue = (flagsInt >> 4) & 1; - this.empty = emptyValue == 1; - - // Get the envelope contents indicator code (3-bit unsigned integer from - // bits 3, 2, and 1) - var envelopeIndicator = (flagsInt >> 1) & 7; - if (envelopeIndicator > 4) { - throw new Error('Unexpected GeoPackage Geometry flags. Envelope contents indicator must be between 0 and 4. Actual: ' + envelopeIndicator); - } - - // Get the byte order from bit 0, 0 for Big Endian and 1 for Little Endian - var byteOrderValue = flagsInt & 1; - this.byteOrder = byteOrderValue; - return envelopeIndicator; -}; - -GeometryData.prototype.readEnvelope = function (envelopeIndicator, buffer) { - var readDoubleMethod = 'readDouble' + (this.byteOrder ? 'LE' : 'BE'); - - var envelopeByteOffset = 8; - reads = 0; - var envelopeAndOffset = { - envelope: undefined, - offset: envelopeByteOffset - }; - - if (envelopeIndicator <= 0) { - return envelopeAndOffset; - } - var envelope = {}; - // Read x and y values and create envelope - envelope.minX = buffer[readDoubleMethod](envelopeByteOffset + (8 * reads++)); - envelope.maxX = buffer[readDoubleMethod](envelopeByteOffset + (8 * reads++)); - envelope.minY = buffer[readDoubleMethod](envelopeByteOffset + (8 * reads++)); - envelope.maxY = buffer[readDoubleMethod](envelopeByteOffset + (8 * reads++)); - - envelope.hasZ = false; - var minZ = undefined; - var maxZ = undefined; - - envelope.hasM = false; - var minM = undefined; - var maxM = undefined; - - // Read z values - if (envelopeIndicator === 2 || envelopeIndicator === 4) { - envelope.hasZ = true; - envelope.minZ = buffer[readDoubleMethod](envelopeByteOffset + (8 * reads++)); - envelope.maxZ = buffer[readDoubleMethod](envelopeByteOffset + (8 * reads++)); - } - - // Read m values - if (envelopeIndicator === 3 || envelopeIndicator === 4) { - envelope.hasM = true; - envelope.minM = buffer[readDoubleMethod](envelopeByteOffset + (8 * reads++)); - envelope.maxM = buffer[readDoubleMethod](envelopeByteOffset + (8 * reads++)); - } - envelopeAndOffset.envelope = envelope; - envelopeAndOffset.offset = envelopeByteOffset + (8 * reads); - return envelopeAndOffset; -}; - -}).call(this,require("buffer").Buffer) -},{"../geoPackageConstants":71,"buffer":182,"wkx":360}],74:[function(require,module,exports){ -/** - * Metadata module. - * @module metadata - * @see module:dao/dao - */ - -var Dao = require('../dao/dao'); - -var util = require('util'); - -/** - * Contains metadata in MIME encodings structured in accordance with any - * authoritative metadata specification - * @class Metadata - */ -var Metadata = function() { - - /** - * Metadata primary key - * @member {Number} - */ - this.id; - - /** - * Case sensitive name of the data scope to which this metadata applies; see Metadata Scopes below - * @member {string} - */ - this.md_scope; - - /** - * URI reference to the metadata structure definition authority - * @member {string} - */ - this.md_standard_uri; - - /** - * MIME encoding of metadata - * @member {string} - */ - this.mime_type; - - /** - * metadata - * @member {string} - */ - this.metadata; -} - -Metadata.UNDEFINED = "undefined"; -Metadata.FIELD_SESSION = "fieldSession"; -Metadata.COLLECTION_SESSION = "collectionSession"; -Metadata.SERIES = "series"; -Metadata.DATASET = "dataset"; -Metadata.FEATURE_TYPE = "featureType"; -Metadata.FEATURE = "feature"; -Metadata.ATTRIBUTE_TYPE = "attributeType"; -Metadata.ATTRIBUTE = "attribute"; -Metadata.TILE = "tile"; -Metadata.MODEL = "model"; -Metadata.CATALOG = "catalog"; -Metadata.SCHEMA = "schema"; -Metadata.TAXONOMY = "taxonomy"; -Metadata.SOFTWARE = "software"; -Metadata.SERVICE = "service"; -Metadata.COLLECTION_HARDWARE = "collectionHardware"; -Metadata.NON_GEOGRAPHIC_DATASET = "nonGeographicDataset"; -Metadata.DIMENSION_GROUP = "dimensionGroup"; - -Metadata.prototype.getScopeInformation = function(type) { - switch(type) { - case Metadata.UNDEFINED: - return { - name: Metadata.UNDEFINED, - code: 'NA', - definition: 'Metadata information scope is undefined' - }; - case Metadata.FIELD_SESSION: - return { - name: Metadata.FIELD_SESSION, - code: '012', - definition: 'Information applies to the field session' - }; - case Metadata.COLLECTION_SESSION: - return { - name: Metadata.COLLECTION_SESSION, - code: '004', - definition: 'Information applies to the collection session' - }; - case Metadata.SERIES: - return { - name: Metadata.SERIES, - code: '006', - definition: 'Information applies to the (dataset) series' - }; - case Metadata.DATASET: - return { - name: Metadata.DATASET, - code: '005', - definition: 'Information applies to the (geographic feature) dataset' - }; - case Metadata.FEATURE_TYPE: - return { - name: Metadata.FEATURE_TYPE, - code: '010', - definition: 'Information applies to a feature type (class)' - }; - case Metadata.FEATURE: - return { - name: Metadata.FEATURE, - code: '009', - definition: 'Information applies to a feature (instance)' - }; - case Metadata.ATTRIBUTE_TYPE: - return { - name: Metadata.ATTRIBUTE_TYPE, - code: '002', - definition: 'Information applies to the attribute class' - }; - case Metadata.ATTRIBUTE: - return { - name: Metadata.ATTRIBUTE, - code: '001', - definition: 'Information applies to the characteristic of a feature (instance)' - }; - case Metadata.TILE: - return { - name: Metadata.TILE, - code: '016', - definition: 'Information applies to a tile, a spatial subset of geographic data' - }; - case Metadata.MODEL: - return { - name: Metadata.MODEL, - code: '015', - definition: 'Information applies to a copy or imitation of an existing or hypothetical object' - }; - case Metadata.CATALOG: - return { - name: Metadata.CATALOG, - code: 'NA', - definition: 'Metadata applies to a feature catalog' - }; - case Metadata.SCHEMA: - return { - name: Metadata.SCHEMA, - code: 'NA', - definition: 'Metadata applies to an application schema' - }; - case Metadata.TAXONOMY: - return { - name: Metadata.TAXONOMY, - code: 'NA', - definition: 'Metadata applies to a taxonomy or knowledge system' - }; - case Metadata.SOFTWARE: - return { - name: Metadata.SOFTWARE, - code: '013', - definition: 'Information applies to a computer program or routine' - }; - case Metadata.SERVICE: - return { - name: Metadata.SERVICE, - code: '014', - definition: 'Information applies to a capability which a service provider entity makes available to a service user entity through a set of interfaces that define a behaviour, such as a use case' - }; - case Metadata.COLLECTION_HARDWARE: - return { - name: Metadata.COLLECTION_HARDWARE, - code: '003', - definition: 'Information applies to the collection hardware class' - }; - case Metadata.NON_GEOGRAPHIC_DATASET: - return { - name: Metadata.NON_GEOGRAPHIC_DATASET, - code: '007', - definition: 'Information applies to non-geographic data' - }; - case Metadata.DIMENSION_GROUP: - return { - name: Metadata.DIMENSION_GROUP, - code: '008', - definition: 'Information applies to a dimension group' - }; - } -} - -/** - * Metadata Data Access Object - * @class - * @extends {module:dao/dao~Dao} - */ -var MetadataDao = function(geoPackage) { - Dao.call(this, geoPackage); -}; - -util.inherits(MetadataDao, Dao); - -MetadataDao.prototype.createObject = function() { - return new Metadata(); -}; - -MetadataDao.TABLE_NAME = "gpkg_metadata"; -MetadataDao.COLUMN_ID = "id"; -MetadataDao.COLUMN_MD_SCOPE = "md_scope"; -MetadataDao.COLUMN_MD_STANDARD_URI = "md_standard_uri"; -MetadataDao.COLUMN_MIME_TYPE = "mime_type"; -MetadataDao.COLUMN_METADATA = "metadata"; - -MetadataDao.prototype.gpkgTableName = MetadataDao.TABLE_NAME; -MetadataDao.prototype.idColumns = [MetadataDao.COLUMN_ID]; - -module.exports.MetadataDao = MetadataDao; -module.exports.Metadata = Metadata; - -},{"../dao/dao":11,"util":343}],75:[function(require,module,exports){ -/** - * MetadataReference module. - * @module metadata/reference - * @see module:dao/dao - */ - -var Dao = require('../../dao/dao') - , ColumnValues = require('../../dao/columnValues'); - -var util = require('util'); - -/** - * Links metadata in the gpkg_metadata table to data in the feature, and tiles tables - * @class MetadataReference - */ -var MetadataReference = function() { - - /** - * Lowercase metadata reference scope; one of ‘geopackage’, ‘table’, ‘column’, ’row’, ’row/col’ - * @member {string} - */ - this.reference_scope; - - /** - * Name of the table to which this metadata reference applies, or NULL for reference_scope of ‘geopackage’. - * @member {string} - */ - this.table_name; - - /** - * Name of the column to which this metadata reference applies; NULL for - * reference_scope of ‘geopackage’,‘table’ or ‘row’, or the name of a column - * in the table_name table for reference_scope of ‘column’ or ‘row/col’ - * @member {string} - */ - this.column_name; - - /** - * NULL for reference_scope of ‘geopackage’, ‘table’ or ‘column’, or the - * rowed of a row record in the table_name table for reference_scope of - * ‘row’ or ‘row/col’ - * @member {Number} - */ - this.row_id_value; - - /** - * timestamp value in ISO 8601 format as defined by the strftime function - * '%Y-%m-%dT%H:%M:%fZ' format string applied to the current time - * @member {Date} - */ - this.timestamp; - - /** - * gpkg_metadata table id column value for the metadata to which this - * gpkg_metadata_reference applies - * @member {Number} - */ - this.md_file_id; - - /** - * gpkg_metadata table id column value for the hierarchical parent - * gpkg_metadata for the gpkg_metadata to which this gpkg_metadata_reference - * applies, or NULL if md_file_id forms the root of a metadata hierarchy - * @member {Number} - */ - this.md_parent_id; -} - -MetadataReference.prototype.toDatabaseValue = function(columnName) { - if (columnName === 'timestamp') { - return this.timestamp.toISOString(); - } - return this[columnName]; -} - -/** - * Set the metadata - * @param {Metadata} metadata metadata - */ -MetadataReference.prototype.setMetadata = function(metadata) { - if (metadata) { - this.md_file_id = metadata.id; - } else { - this.md_file_id = -1; - } -} - -/** - * Set the parent metadata - * @param {Metadata} metadata parent metadata - */ -MetadataReference.prototype.setParentMetadata = function(metadata) { - if (metadata) { - this.md_parent_id = metadata.id; - } else { - this.md_parent_id = -1; - } -} - -MetadataReference.prototype.setReferenceScopeType = function(referenceScopeType) { - this.reference_scope = referenceScopeType; - switch(referenceScopeType) { - case MetadataReference.GEOPACKAGE: - this.table_name = undefined; - this.column_name = undefined; - this.row_id_value = undefined; - break; - case MetadataReference.TABLE: - this.column_name = undefined; - this.row_id_value = undefined; - break; - case MetadataReference.ROW: - this.column_name = undefined; - break; - case MetadataReference.COLUMN: - this.row_id_value = undefined; - break; - } -} - -MetadataReference.GEOPACKAGE = "geopackage"; -MetadataReference.TABLE = "table"; -MetadataReference.COLUMN = "column"; -MetadataReference.ROW = "row"; -MetadataReference.ROW_COL = "row/col"; - -/** - * Metadata Reference Data Access Object - * @class - * @extends {module:dao/dao~Dao} - */ -var MetadataReferenceDao = function(geoPackage) { - Dao.call(this, geoPackage); -}; - -util.inherits(MetadataReferenceDao, Dao); - -MetadataReferenceDao.prototype.createObject = function() { - return new MetadataReference(); -}; - -MetadataReferenceDao.prototype.removeMetadataParent = function(parentId) { - var values = {}; - values[MetadataReferenceDao.COLUMN_MD_PARENT_ID] = null; - - var where = this.buildWhereWithFieldAndValue(MetadataReferenceDao.COLUMN_MD_PARENT_ID, parentId); - var whereArgs = this.buildWhereArgs(parentId); - return this.updateWithValues(values, where, whereArgs); -} - -MetadataReferenceDao.prototype.queryByMetadataAndParent = function (fileId, parentId) { - var columnValues = new ColumnValues(); - columnValues.addColumn(MetadataReferenceDao.COLUMN_MD_FILE_ID, fileId); - columnValues.addColumn(MetadataReferenceDao.COLUMN_MD_PARENT_ID, parentId); - return this.queryForFieldValues(columnValues); -}; - -MetadataReferenceDao.prototype.queryByMetadata = function(fileId) { - var columnValues = new ColumnValues(); - columnValues.addColumn(MetadataReferenceDao.COLUMN_MD_FILE_ID, fileId); - return this.queryForFieldValues(columnValues); -}; - -MetadataReferenceDao.prototype.queryByMetadataParent = function(parentId) { - var columnValues = new ColumnValues(); - columnValues.addColumn(MetadataReferenceDao.COLUMN_MD_PARENT_ID, parentId); - return this.queryForFieldValues(columnValues); -}; - -MetadataReferenceDao.TABLE_NAME = "gpkg_metadata_reference"; -MetadataReferenceDao.COLUMN_REFERENCE_SCOPE = "reference_scope"; -MetadataReferenceDao.COLUMN_TABLE_NAME = "table_name"; -MetadataReferenceDao.COLUMN_COLUMN_NAME = "column_name"; -MetadataReferenceDao.COLUMN_ROW_ID = "row_id"; -MetadataReferenceDao.COLUMN_TIMESTAMP = "timestamp"; -MetadataReferenceDao.COLUMN_MD_FILE_ID = "md_file_id"; -MetadataReferenceDao.COLUMN_MD_PARENT_ID = "md_parent_id"; - - -MetadataReferenceDao.prototype.gpkgTableName = MetadataReferenceDao.TABLE_NAME; -MetadataReferenceDao.prototype.idColumns = [MetadataReferenceDao.COLUMN_MD_FILE_ID, MetadataReferenceDao.COLUMN_MD_PARENT_ID]; - -module.exports.MetadataReferenceDao = MetadataReferenceDao; -module.exports.MetadataReference = MetadataReference; - -},{"../../dao/columnValues":10,"../../dao/dao":11,"util":343}],76:[function(require,module,exports){ -module.exports = function(optionList) { - var optionBuilder = {}; - optionList.forEach(function(option) { - optionBuilder['set'+option.slice(0,1).toUpperCase()+option.slice(1)] = function(param) { - this[option] = param; - return this; - } - optionBuilder['get'+option.slice(0,1).toUpperCase()+option.slice(1)] = function() { - return this[option]; - } - }); - return optionBuilder; -} - -},{}],77:[function(require,module,exports){ -module.exports = { - "EPSG:3819":'+proj=longlat +ellps=bessel +towgs84=595.48,121.69,515.35,4.115,-2.9383,0.853,-3.408 +no_defs ', - "EPSG:3821":'+proj=longlat +ellps=aust_SA +no_defs ', - "EPSG:3824":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:3889":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:3906":'+proj=longlat +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +no_defs ', - "EPSG:4001":'+proj=longlat +ellps=airy +no_defs ', - "EPSG:4002":'+proj=longlat +ellps=mod_airy +no_defs ', - "EPSG:4003":'+proj=longlat +ellps=aust_SA +no_defs ', - "EPSG:4004":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:4005":'+proj=longlat +a=6377492.018 +b=6356173.508712696 +no_defs ', - "EPSG:4006":'+proj=longlat +ellps=bess_nam +no_defs ', - "EPSG:4007":'+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs ', - "EPSG:4008":'+proj=longlat +ellps=clrk66 +no_defs ', - "EPSG:4009":'+proj=longlat +a=6378450.047548896 +b=6356826.621488444 +no_defs ', - "EPSG:4010":'+proj=longlat +a=6378300.789 +b=6356566.435 +no_defs ', - "EPSG:4011":'+proj=longlat +a=6378249.2 +b=6356515 +no_defs ', - "EPSG:4012":'+proj=longlat +ellps=clrk80 +no_defs ', - "EPSG:4013":'+proj=longlat +a=6378249.145 +b=6356514.966398753 +no_defs ', - "EPSG:4014":'+proj=longlat +a=6378249.2 +b=6356514.996941779 +no_defs ', - "EPSG:4015":'+proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs ', - "EPSG:4016":'+proj=longlat +ellps=evrstSS +no_defs ', - "EPSG:4018":'+proj=longlat +a=6377304.063 +b=6356103.038993155 +no_defs ', - "EPSG:4019":'+proj=longlat +ellps=GRS80 +no_defs ', - "EPSG:4020":'+proj=longlat +ellps=helmert +no_defs ', - "EPSG:4021":'+proj=longlat +a=6378160 +b=6356774.50408554 +no_defs ', - "EPSG:4022":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4023":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4024":'+proj=longlat +ellps=krass +no_defs ', - "EPSG:4025":'+proj=longlat +ellps=WGS66 +no_defs ', - "EPSG:4027":'+proj=longlat +a=6376523 +b=6355862.933255573 +no_defs ', - "EPSG:4028":'+proj=longlat +a=6378298.3 +b=6356657.142669561 +no_defs ', - "EPSG:4029":'+proj=longlat +a=6378300 +b=6356751.689189189 +no_defs ', - "EPSG:4030":'+proj=longlat +ellps=WGS84 +no_defs ', - "EPSG:4031":'+proj=longlat +ellps=WGS84 +no_defs ', - "EPSG:4032":'+proj=longlat +a=6378136.2 +b=6356751.516927429 +no_defs ', - "EPSG:4033":'+proj=longlat +a=6378136.3 +b=6356751.616592146 +no_defs ', - "EPSG:4034":'+proj=longlat +a=6378249.144808011 +b=6356514.966204134 +no_defs ', - "EPSG:4035":'+proj=longlat +a=6371000 +b=6371000 +no_defs ', - "EPSG:4036":'+proj=longlat +ellps=GRS67 +no_defs ', - "EPSG:4041":'+proj=longlat +a=6378135 +b=6356750.304921594 +no_defs ', - "EPSG:4042":'+proj=longlat +a=6377299.36559538 +b=6356098.359005156 +no_defs ', - "EPSG:4043":'+proj=longlat +ellps=WGS72 +no_defs ', - "EPSG:4044":'+proj=longlat +a=6377301.243 +b=6356100.230165384 +no_defs ', - "EPSG:4045":'+proj=longlat +a=6377299.151 +b=6356098.145120132 +no_defs ', - "EPSG:4046":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4047":'+proj=longlat +a=6371007 +b=6371007 +no_defs ', - "EPSG:4052":'+proj=longlat +a=6370997 +b=6370997 +no_defs ', - "EPSG:4053":'+proj=longlat +a=6371228 +b=6371228 +no_defs ', - "EPSG:4054":'+proj=longlat +a=6378273 +b=6356889.449 +no_defs ', - "EPSG:4055":'+proj=longlat +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4075":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4081":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4120":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:4121":'+proj=longlat +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +no_defs ', - "EPSG:4122":'+proj=longlat +a=6378135 +b=6356750.304921594 +no_defs ', - "EPSG:4123":'+proj=longlat +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +no_defs ', - "EPSG:4124":'+proj=longlat +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +no_defs ', - "EPSG:4125":'+proj=longlat +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +no_defs ', - "EPSG:4126":'+proj=longlat +ellps=GRS80 +no_defs ', - "EPSG:4127":'+proj=longlat +ellps=clrk66 +towgs84=-73.472,-51.66,-112.482,0.953,4.6,-2.368,0.586 +no_defs ', - "EPSG:4128":'+proj=longlat +ellps=clrk66 +no_defs ', - "EPSG:4129":'+proj=longlat +ellps=clrk66 +no_defs ', - "EPSG:4130":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +no_defs ', - "EPSG:4131":'+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=198,881,317,0,0,0,0 +no_defs ', - "EPSG:4132":'+proj=longlat +ellps=clrk80 +towgs84=-241.54,-163.64,396.06,0,0,0,0 +no_defs ', - "EPSG:4133":'+proj=longlat +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014 +no_defs ', - "EPSG:4134":'+proj=longlat +ellps=clrk80 +towgs84=-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.7101 +no_defs ', - "EPSG:4135":'+proj=longlat +ellps=clrk66 +towgs84=61,-285,-181,0,0,0,0 +no_defs ', - "EPSG:4136":'+proj=longlat +ellps=clrk66 +no_defs ', - "EPSG:4137":'+proj=longlat +ellps=clrk66 +no_defs ', - "EPSG:4138":'+proj=longlat +ellps=clrk66 +no_defs ', - "EPSG:4139":'+proj=longlat +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +no_defs ', - "EPSG:4140":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4141":'+proj=longlat +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +no_defs ', - "EPSG:4142":'+proj=longlat +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +no_defs ', - "EPSG:4143":'+proj=longlat +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +no_defs ', - "EPSG:4144":'+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=214,804,268,0,0,0,0 +no_defs ', - "EPSG:4145":'+proj=longlat +a=6377301.243 +b=6356100.230165384 +towgs84=283,682,231,0,0,0,0 +no_defs ', - "EPSG:4146":'+proj=longlat +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +no_defs ', - "EPSG:4147":'+proj=longlat +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +no_defs ', - "EPSG:4148":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4149":'+proj=longlat +ellps=bessel +towgs84=674.4,15.1,405.3,0,0,0,0 +no_defs ', - "EPSG:4150":'+proj=longlat +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +no_defs ', - "EPSG:4151":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4152":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4153":'+proj=longlat +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +no_defs ', - "EPSG:4154":'+proj=longlat +ellps=intl +towgs84=-117,-132,-164,0,0,0,0 +no_defs ', - "EPSG:4155":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +no_defs ', - "EPSG:4156":'+proj=longlat +ellps=bessel +towgs84=589,76,480,0,0,0,0 +no_defs ', - "EPSG:4157":'+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs ', - "EPSG:4158":'+proj=longlat +ellps=intl +towgs84=-0.465,372.095,171.736,0,0,0,0 +no_defs ', - "EPSG:4159":'+proj=longlat +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +no_defs ', - "EPSG:4160":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4161":'+proj=longlat +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0 +no_defs ', - "EPSG:4162":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:4163":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4164":'+proj=longlat +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +no_defs ', - "EPSG:4165":'+proj=longlat +ellps=intl +towgs84=-173,253,27,0,0,0,0 +no_defs ', - "EPSG:4166":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4167":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4168":'+proj=longlat +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +no_defs ', - "EPSG:4169":'+proj=longlat +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +no_defs ', - "EPSG:4170":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4171":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4172":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4173":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4174":'+proj=longlat +a=6378300 +b=6356751.689189189 +no_defs ', - "EPSG:4175":'+proj=longlat +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +no_defs ', - "EPSG:4176":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4178":'+proj=longlat +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +no_defs ', - "EPSG:4179":'+proj=longlat +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +no_defs ', - "EPSG:4180":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4181":'+proj=longlat +ellps=intl +towgs84=-189.681,18.3463,-42.7695,-0.33746,-3.09264,2.53861,0.4598 +no_defs ', - "EPSG:4182":'+proj=longlat +ellps=intl +towgs84=-425,-169,81,0,0,0,0 +no_defs ', - "EPSG:4183":'+proj=longlat +ellps=intl +towgs84=-104,167,-38,0,0,0,0 +no_defs ', - "EPSG:4184":'+proj=longlat +ellps=intl +towgs84=-203,141,53,0,0,0,0 +no_defs ', - "EPSG:4185":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4188":'+proj=longlat +ellps=airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +no_defs ', - "EPSG:4189":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4190":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4191":'+proj=longlat +ellps=krass +no_defs ', - "EPSG:4192":'+proj=longlat +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +no_defs ', - "EPSG:4193":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +no_defs ', - "EPSG:4194":'+proj=longlat +ellps=intl +towgs84=164,138,-189,0,0,0,0 +no_defs ', - "EPSG:4195":'+proj=longlat +ellps=intl +towgs84=105,326,-102.5,0,0,0.814,-0.6 +no_defs ', - "EPSG:4196":'+proj=longlat +ellps=intl +towgs84=-45,417,-3.5,0,0,0.814,-0.6 +no_defs ', - "EPSG:4197":'+proj=longlat +ellps=clrk80 +no_defs ', - "EPSG:4198":'+proj=longlat +ellps=clrk80 +no_defs ', - "EPSG:4199":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4200":'+proj=longlat +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +no_defs ', - "EPSG:4201":'+proj=longlat +ellps=clrk80 +towgs84=-166,-15,204,0,0,0,0 +no_defs ', - "EPSG:4202":'+proj=longlat +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +no_defs ', - "EPSG:4203":'+proj=longlat +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +no_defs ', - "EPSG:4204":'+proj=longlat +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +no_defs ', - "EPSG:4205":'+proj=longlat +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +no_defs ', - "EPSG:4206":'+proj=longlat +a=6378249.2 +b=6356515 +no_defs ', - "EPSG:4207":'+proj=longlat +ellps=intl +towgs84=-304.046,-60.576,103.64,0,0,0,0 +no_defs ', - "EPSG:4208":'+proj=longlat +ellps=intl +towgs84=-151.99,287.04,-147.45,0,0,0,0 +no_defs ', - "EPSG:4209":'+proj=longlat +a=6378249.145 +b=6356514.966398753 +towgs84=-143,-90,-294,0,0,0,0 +no_defs ', - "EPSG:4210":'+proj=longlat +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +no_defs ', - "EPSG:4211":'+proj=longlat +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +no_defs ', - "EPSG:4212":'+proj=longlat +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +no_defs ', - "EPSG:4213":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-106,-87,188,0,0,0,0 +no_defs ', - "EPSG:4214":'+proj=longlat +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +no_defs ', - "EPSG:4215":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4216":'+proj=longlat +ellps=clrk66 +towgs84=-73,213,296,0,0,0,0 +no_defs ', - "EPSG:4218":'+proj=longlat +ellps=intl +towgs84=307,304,-318,0,0,0,0 +no_defs ', - "EPSG:4219":'+proj=longlat +ellps=bessel +towgs84=-384,664,-48,0,0,0,0 +no_defs ', - "EPSG:4220":'+proj=longlat +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0,0,0,0 +no_defs ', - "EPSG:4221":'+proj=longlat +ellps=intl +towgs84=-148,136,90,0,0,0,0 +no_defs ', - "EPSG:4222":'+proj=longlat +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +no_defs ', - "EPSG:4223":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-263,6,431,0,0,0,0 +no_defs ', - "EPSG:4224":'+proj=longlat +ellps=intl +towgs84=-134,229,-29,0,0,0,0 +no_defs ', - "EPSG:4225":'+proj=longlat +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +no_defs ', - "EPSG:4226":'+proj=longlat +a=6378249.2 +b=6356515 +no_defs ', - "EPSG:4227":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-190.421,8.532,238.69,0,0,0,0 +no_defs ', - "EPSG:4228":'+proj=longlat +a=6378249.2 +b=6356515 +no_defs ', - "EPSG:4229":'+proj=longlat +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +no_defs ', - "EPSG:4230":'+proj=longlat +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +no_defs ', - "EPSG:4231":'+proj=longlat +ellps=intl +towgs84=-83.11,-97.38,-117.22,0.00569291,-0.0446976,0.0442851,0.1218 +no_defs ', - "EPSG:4232":'+proj=longlat +ellps=clrk80 +towgs84=-346,-1,224,0,0,0,0 +no_defs ', - "EPSG:4233":'+proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0 +no_defs ', - "EPSG:4234":'+proj=longlat +a=6378249.2 +b=6356515 +no_defs ', - "EPSG:4235":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4236":'+proj=longlat +ellps=intl +towgs84=-637,-549,-203,0,0,0,0 +no_defs ', - "EPSG:4237":'+proj=longlat +ellps=GRS67 +towgs84=52.17,-71.82,-14.9,0,0,0,0 +no_defs ', - "EPSG:4238":'+proj=longlat +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +no_defs ', - "EPSG:4239":'+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +no_defs ', - "EPSG:4240":'+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=210,814,289,0,0,0,0 +no_defs ', - "EPSG:4241":'+proj=longlat +a=6378249.144808011 +b=6356514.966204134 +no_defs ', - "EPSG:4242":'+proj=longlat +ellps=clrk66 +towgs84=70,207,389.5,0,0,0,0 +no_defs ', - "EPSG:4243":'+proj=longlat +a=6377299.36559538 +b=6356098.359005156 +no_defs ', - "EPSG:4244":'+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=-97,787,86,0,0,0,0 +no_defs ', - "EPSG:4245":'+proj=longlat +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +no_defs ', - "EPSG:4246":'+proj=longlat +ellps=clrk80 +towgs84=-294.7,-200.1,525.5,0,0,0,0 +no_defs ', - "EPSG:4247":'+proj=longlat +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +no_defs ', - "EPSG:4248":'+proj=longlat +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +no_defs ', - "EPSG:4249":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4250":'+proj=longlat +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0 +no_defs ', - "EPSG:4251":'+proj=longlat +ellps=clrk80 +towgs84=-90,40,88,0,0,0,0 +no_defs ', - "EPSG:4252":'+proj=longlat +a=6378249.2 +b=6356515 +no_defs ', - "EPSG:4253":'+proj=longlat +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +no_defs ', - "EPSG:4254":'+proj=longlat +ellps=intl +towgs84=16,196,93,0,0,0,0 +no_defs ', - "EPSG:4255":'+proj=longlat +ellps=intl +towgs84=-333,-222,114,0,0,0,0 +no_defs ', - "EPSG:4256":'+proj=longlat +ellps=clrk80 +towgs84=41,-220,-134,0,0,0,0 +no_defs ', - "EPSG:4257":'+proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +no_defs ', - "EPSG:4258":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4259":'+proj=longlat +ellps=intl +towgs84=-254.1,-5.36,-100.29,0,0,0,0 +no_defs ', - "EPSG:4260":'+proj=longlat +ellps=clrk80 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +no_defs ', - "EPSG:4261":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +no_defs ', - "EPSG:4262":'+proj=longlat +ellps=bessel +towgs84=639,405,60,0,0,0,0 +no_defs ', - "EPSG:4263":'+proj=longlat +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +no_defs ', - "EPSG:4264":'+proj=longlat +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0 +no_defs ', - "EPSG:4265":'+proj=longlat +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +no_defs ', - "EPSG:4266":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-74,-130,42,0,0,0,0 +no_defs ', - "EPSG:4267":'+proj=longlat +datum=NAD27 +no_defs ', - "EPSG:4268":'+proj=longlat +a=6378450.047548896 +b=6356826.621488444 +no_defs ', - "EPSG:4269":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4270":'+proj=longlat +ellps=clrk80 +towgs84=-242.2,-144.9,370.3,0,0,0,0 +no_defs ', - "EPSG:4271":'+proj=longlat +ellps=intl +towgs84=-10,375,165,0,0,0,0 +no_defs ', - "EPSG:4272":'+proj=longlat +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +no_defs ', - "EPSG:4273":'+proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +no_defs ', - "EPSG:4274":'+proj=longlat +ellps=intl +towgs84=-223.237,110.193,36.649,0,0,0,0 +no_defs ', - "EPSG:4275":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +no_defs ', - "EPSG:4276":'+proj=longlat +ellps=WGS66 +no_defs ', - "EPSG:4277":'+proj=longlat +ellps=airy +towgs84=446.448,-125.157,542.06,0.15,0.247,0.842,-20.489 +no_defs ', - "EPSG:4278":'+proj=longlat +ellps=airy +no_defs ', - "EPSG:4279":'+proj=longlat +ellps=airy +no_defs ', - "EPSG:4280":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:4281":'+proj=longlat +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +no_defs ', - "EPSG:4282":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-148,51,-291,0,0,0,0 +no_defs ', - "EPSG:4283":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4284":'+proj=longlat +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +no_defs ', - "EPSG:4285":'+proj=longlat +ellps=intl +towgs84=-128.16,-282.42,21.93,0,0,0,0 +no_defs ', - "EPSG:4286":'+proj=longlat +ellps=helmert +no_defs ', - "EPSG:4287":'+proj=longlat +ellps=intl +towgs84=164,138,-189,0,0,0,0 +no_defs ', - "EPSG:4288":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4289":'+proj=longlat +ellps=bessel +towgs84=565.417,50.3319,465.552,-0.398957,0.343988,-1.8774,4.0725 +no_defs ', - "EPSG:4291":'+proj=longlat +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +no_defs ', - "EPSG:4292":'+proj=longlat +ellps=intl +towgs84=-355,21,72,0,0,0,0 +no_defs ', - "EPSG:4293":'+proj=longlat +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +no_defs ', - "EPSG:4294":'+proj=longlat +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +no_defs ', - "EPSG:4295":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:4296":'+proj=longlat +a=6378249.2 +b=6356515 +no_defs ', - "EPSG:4297":'+proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +no_defs ', - "EPSG:4298":'+proj=longlat +ellps=evrstSS +towgs84=-679,669,-48,0,0,0,0 +no_defs ', - "EPSG:4299":'+proj=longlat +ellps=mod_airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +no_defs ', - "EPSG:4300":'+proj=longlat +ellps=mod_airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +no_defs ', - "EPSG:4301":'+proj=longlat +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +no_defs ', - "EPSG:4302":'+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +towgs84=-61.702,284.488,472.052,0,0,0,0 +no_defs ', - "EPSG:4303":'+proj=longlat +ellps=helmert +no_defs ', - "EPSG:4304":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +no_defs ', - "EPSG:4306":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:4307":'+proj=longlat +ellps=clrk80 +towgs84=-209.362,-87.8162,404.62,0.0046,3.4784,0.5805,-1.4547 +no_defs ', - "EPSG:4308":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:4309":'+proj=longlat +ellps=intl +towgs84=-155,171,37,0,0,0,0 +no_defs ', - "EPSG:4310":'+proj=longlat +a=6378249.2 +b=6356515 +no_defs ', - "EPSG:4311":'+proj=longlat +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +no_defs ', - "EPSG:4312":'+proj=longlat +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +no_defs ', - "EPSG:4313":'+proj=longlat +ellps=intl +towgs84=-106.869,52.2978,-103.724,0.3366,-0.457,1.8422,-1.2747 +no_defs ', - "EPSG:4314":'+proj=longlat +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +no_defs ', - "EPSG:4315":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +no_defs ', - "EPSG:4316":'+proj=longlat +ellps=intl +towgs84=103.25,-100.4,-307.19,0,0,0,0 +no_defs ', - "EPSG:4317":'+proj=longlat +ellps=krass +towgs84=28,-121,-77,0,0,0,0 +no_defs ', - "EPSG:4318":'+proj=longlat +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +no_defs ', - "EPSG:4319":'+proj=longlat +ellps=GRS80 +towgs84=-20.8,11.3,2.4,0,0,0,0 +no_defs ', - "EPSG:4322":'+proj=longlat +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +no_defs ', - "EPSG:4324":'+proj=longlat +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +no_defs ', - "EPSG:4326":'+proj=longlat +datum=WGS84 +no_defs ', - "EPSG:4463":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4470":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4475":'+proj=longlat +ellps=intl +towgs84=-381.788,-57.501,-256.673,0,0,0,0 +no_defs ', - "EPSG:4483":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4490":'+proj=longlat +ellps=GRS80 +no_defs ', - "EPSG:4555":'+proj=longlat +ellps=krass +no_defs ', - "EPSG:4558":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4600":'+proj=longlat +ellps=clrk80 +no_defs ', - "EPSG:4601":'+proj=longlat +ellps=clrk80 +towgs84=-255,-15,71,0,0,0,0 +no_defs ', - "EPSG:4602":'+proj=longlat +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +no_defs ', - "EPSG:4603":'+proj=longlat +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +no_defs ', - "EPSG:4604":'+proj=longlat +ellps=clrk80 +towgs84=174,359,365,0,0,0,0 +no_defs ', - "EPSG:4605":'+proj=longlat +ellps=clrk80 +towgs84=9,183,236,0,0,0,0 +no_defs ', - "EPSG:4606":'+proj=longlat +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0 +no_defs ', - "EPSG:4607":'+proj=longlat +ellps=clrk80 +towgs84=195.671,332.517,274.607,0,0,0,0 +no_defs ', - "EPSG:4608":'+proj=longlat +ellps=clrk66 +no_defs ', - "EPSG:4609":'+proj=longlat +ellps=clrk66 +no_defs ', - "EPSG:4610":'+proj=longlat +a=6378140 +b=6356755.288157528 +no_defs ', - "EPSG:4611":'+proj=longlat +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883,-1.09425 +no_defs ', - "EPSG:4612":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4613":'+proj=longlat +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +no_defs ', - "EPSG:4614":'+proj=longlat +ellps=intl +towgs84=-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706 +no_defs ', - "EPSG:4615":'+proj=longlat +ellps=intl +towgs84=-499,-249,314,0,0,0,0 +no_defs ', - "EPSG:4616":'+proj=longlat +ellps=intl +towgs84=-289,-124,60,0,0,0,0 +no_defs ', - "EPSG:4617":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4618":'+proj=longlat +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +no_defs ', - "EPSG:4619":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4620":'+proj=longlat +ellps=clrk80 +towgs84=-106,-129,165,0,0,0,0 +no_defs ', - "EPSG:4621":'+proj=longlat +ellps=intl +towgs84=137,248,-430,0,0,0,0 +no_defs ', - "EPSG:4622":'+proj=longlat +ellps=intl +towgs84=-467,-16,-300,0,0,0,0 +no_defs ', - "EPSG:4623":'+proj=longlat +ellps=intl +towgs84=-186,230,110,0,0,0,0 +no_defs ', - "EPSG:4624":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4625":'+proj=longlat +ellps=intl +towgs84=186,482,151,0,0,0,0 +no_defs ', - "EPSG:4626":'+proj=longlat +ellps=intl +towgs84=94,-948,-1262,0,0,0,0 +no_defs ', - "EPSG:4627":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4628":'+proj=longlat +ellps=intl +towgs84=162,117,154,0,0,0,0 +no_defs ', - "EPSG:4629":'+proj=longlat +ellps=intl +towgs84=72.438,345.918,79.486,1.6045,0.8823,0.5565,1.3746 +no_defs ', - "EPSG:4630":'+proj=longlat +ellps=intl +towgs84=84,274,65,0,0,0,0 +no_defs ', - "EPSG:4631":'+proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0 +no_defs ', - "EPSG:4632":'+proj=longlat +ellps=intl +towgs84=-382,-59,-262,0,0,0,0 +no_defs ', - "EPSG:4633":'+proj=longlat +ellps=intl +towgs84=335.47,222.58,-230.94,0,0,0,0 +no_defs ', - "EPSG:4634":'+proj=longlat +ellps=intl +towgs84=-13,-348,292,0,0,0,0 +no_defs ', - "EPSG:4635":'+proj=longlat +ellps=intl +towgs84=-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798 +no_defs ', - "EPSG:4636":'+proj=longlat +ellps=intl +towgs84=365,194,166,0,0,0,0 +no_defs ', - "EPSG:4637":'+proj=longlat +ellps=intl +towgs84=325,154,172,0,0,0,0 +no_defs ', - "EPSG:4638":'+proj=longlat +ellps=clrk66 +towgs84=30,430,368,0,0,0,0 +no_defs ', - "EPSG:4639":'+proj=longlat +ellps=intl +towgs84=253,-132,-127,0,0,0,0 +no_defs ', - "EPSG:4640":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4641":'+proj=longlat +ellps=intl +towgs84=287.58,177.78,-135.41,0,0,0,0 +no_defs ', - "EPSG:4642":'+proj=longlat +ellps=intl +towgs84=-13,-348,292,0,0,0,0 +no_defs ', - "EPSG:4643":'+proj=longlat +ellps=intl +towgs84=-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7 +no_defs ', - "EPSG:4644":'+proj=longlat +ellps=intl +towgs84=-10.18,-350.43,291.37,0,0,0,0 +no_defs ', - "EPSG:4645":'+proj=longlat +ellps=intl +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4646":'+proj=longlat +ellps=intl +towgs84=-963,510,-359,0,0,0,0 +no_defs ', - "EPSG:4657":'+proj=longlat +a=6377019.27 +b=6355762.5391 +towgs84=-28,199,5,0,0,0,0 +no_defs ', - "EPSG:4658":'+proj=longlat +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +no_defs ', - "EPSG:4659":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4660":'+proj=longlat +ellps=intl +towgs84=982.609,552.753,-540.873,6.68163,-31.6115,-19.8482,16.805 +no_defs ', - "EPSG:4661":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4662":'+proj=longlat +ellps=intl +towgs84=-11.64,-348.6,291.98,0,0,0,0 +no_defs ', - "EPSG:4663":'+proj=longlat +ellps=intl +towgs84=-502.862,-247.438,312.724,0,0,0,0 +no_defs ', - "EPSG:4664":'+proj=longlat +ellps=intl +towgs84=-204.619,140.176,55.226,0,0,0,0 +no_defs ', - "EPSG:4665":'+proj=longlat +ellps=intl +towgs84=-106.226,166.366,-37.893,0,0,0,0 +no_defs ', - "EPSG:4666":'+proj=longlat +ellps=bessel +towgs84=508.088,-191.042,565.223,0,0,0,0 +no_defs ', - "EPSG:4667":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4668":'+proj=longlat +ellps=intl +towgs84=-86,-98,-119,0,0,0,0 +no_defs ', - "EPSG:4669":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4670":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4671":'+proj=longlat +a=6378249.2 +b=6356515 +no_defs ', - "EPSG:4672":'+proj=longlat +ellps=intl +towgs84=175,-38,113,0,0,0,0 +no_defs ', - "EPSG:4673":'+proj=longlat +ellps=intl +towgs84=174.05,-25.49,112.57,-0,-0,0.554,0.2263 +no_defs ', - "EPSG:4674":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4675":'+proj=longlat +ellps=clrk66 +towgs84=-100,-248,259,0,0,0,0 +no_defs ', - "EPSG:4676":'+proj=longlat +ellps=krass +no_defs ', - "EPSG:4677":'+proj=longlat +ellps=krass +no_defs ', - "EPSG:4678":'+proj=longlat +ellps=krass +towgs84=44.585,-131.212,-39.544,0,0,0,0 +no_defs ', - "EPSG:4679":'+proj=longlat +ellps=clrk80 +towgs84=-80.01,253.26,291.19,0,0,0,0 +no_defs ', - "EPSG:4680":'+proj=longlat +ellps=clrk80 +towgs84=124.5,-63.5,-281,0,0,0,0 +no_defs ', - "EPSG:4681":'+proj=longlat +ellps=clrk80 +no_defs ', - "EPSG:4682":'+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=283.7,735.9,261.1,0,0,0,0 +no_defs ', - "EPSG:4683":'+proj=longlat +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +no_defs ', - "EPSG:4684":'+proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0 +no_defs ', - "EPSG:4685":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4686":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4687":'+proj=longlat +ellps=GRS80 +towgs84=0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +no_defs ', - "EPSG:4688":'+proj=longlat +ellps=intl +towgs84=347.103,1078.12,2623.92,-33.8875,70.6773,-9.3943,186.074 +no_defs ', - "EPSG:4689":'+proj=longlat +ellps=intl +towgs84=410.721,55.049,80.746,2.5779,2.3514,0.6664,17.3311 +no_defs ', - "EPSG:4690":'+proj=longlat +ellps=intl +towgs84=221.525,152.948,176.768,-2.3847,-1.3896,-0.877,11.4741 +no_defs ', - "EPSG:4691":'+proj=longlat +ellps=intl +towgs84=215.525,149.593,176.229,-3.2624,-1.692,-1.1571,10.4773 +no_defs ', - "EPSG:4692":'+proj=longlat +ellps=intl +towgs84=217.037,86.959,23.956,0,0,0,0 +no_defs ', - "EPSG:4693":'+proj=longlat +ellps=WGS84 +towgs84=0,-0.15,0.68,0,0,0,0 +no_defs ', - "EPSG:4694":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4695":'+proj=longlat +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +no_defs ', - "EPSG:4696":'+proj=longlat +ellps=clrk80 +no_defs ', - "EPSG:4697":'+proj=longlat +ellps=clrk80 +no_defs ', - "EPSG:4698":'+proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0 +no_defs ', - "EPSG:4699":'+proj=longlat +ellps=clrk80 +towgs84=-770.1,158.4,-498.2,0,0,0,0 +no_defs ', - "EPSG:4700":'+proj=longlat +ellps=clrk80 +no_defs ', - "EPSG:4701":'+proj=longlat +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +no_defs ', - "EPSG:4702":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4703":'+proj=longlat +ellps=clrk80 +no_defs ', - "EPSG:4704":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4705":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4706":'+proj=longlat +ellps=helmert +towgs84=-146.21,112.63,4.05,0,0,0,0 +no_defs ', - "EPSG:4707":'+proj=longlat +ellps=intl +towgs84=114,-116,-333,0,0,0,0 +no_defs ', - "EPSG:4708":'+proj=longlat +ellps=aust_SA +towgs84=-491,-22,435,0,0,0,0 +no_defs ', - "EPSG:4709":'+proj=longlat +ellps=intl +towgs84=145,75,-272,0,0,0,0 +no_defs ', - "EPSG:4710":'+proj=longlat +ellps=intl +towgs84=-320,550,-494,0,0,0,0 +no_defs ', - "EPSG:4711":'+proj=longlat +ellps=intl +towgs84=124,-234,-25,0,0,0,0 +no_defs ', - "EPSG:4712":'+proj=longlat +ellps=intl +towgs84=-205,107,53,0,0,0,0 +no_defs ', - "EPSG:4713":'+proj=longlat +ellps=clrk80 +towgs84=-79,-129,145,0,0,0,0 +no_defs ', - "EPSG:4714":'+proj=longlat +ellps=intl +towgs84=-127,-769,472,0,0,0,0 +no_defs ', - "EPSG:4715":'+proj=longlat +ellps=intl +towgs84=-104,-129,239,0,0,0,0 +no_defs ', - "EPSG:4716":'+proj=longlat +ellps=intl +towgs84=298,-304,-375,0,0,0,0 +no_defs ', - "EPSG:4717":'+proj=longlat +ellps=clrk66 +towgs84=-2,151,181,0,0,0,0 +no_defs ', - "EPSG:4718":'+proj=longlat +ellps=intl +towgs84=230,-199,-752,0,0,0,0 +no_defs ', - "EPSG:4719":'+proj=longlat +ellps=intl +towgs84=211,147,111,0,0,0,0 +no_defs ', - "EPSG:4720":'+proj=longlat +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +no_defs ', - "EPSG:4721":'+proj=longlat +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +no_defs ', - "EPSG:4722":'+proj=longlat +ellps=intl +towgs84=-794,119,-298,0,0,0,0 +no_defs ', - "EPSG:4723":'+proj=longlat +ellps=clrk66 +towgs84=-179.483,-69.379,-27.584,-7.862,8.163,6.042,-13.925 +no_defs ', - "EPSG:4724":'+proj=longlat +ellps=intl +towgs84=208,-435,-229,0,0,0,0 +no_defs ', - "EPSG:4725":'+proj=longlat +ellps=intl +towgs84=189,-79,-202,0,0,0,0 +no_defs ', - "EPSG:4726":'+proj=longlat +ellps=clrk66 +towgs84=8.853,-52.644,180.304,-0.393,-2.323,2.96,-24.081 +no_defs ', - "EPSG:4727":'+proj=longlat +ellps=intl +towgs84=403,-81,277,0,0,0,0 +no_defs ', - "EPSG:4728":'+proj=longlat +ellps=intl +towgs84=-307,-92,127,0,0,0,0 +no_defs ', - "EPSG:4729":'+proj=longlat +ellps=intl +towgs84=185,165,42,0,0,0,0 +no_defs ', - "EPSG:4730":'+proj=longlat +ellps=intl +towgs84=170,42,84,0,0,0,0 +no_defs ', - "EPSG:4731":'+proj=longlat +ellps=clrk80 +towgs84=51,391,-36,0,0,0,0 +no_defs ', - "EPSG:4732":'+proj=longlat +a=6378270 +b=6356794.343434343 +towgs84=102,52,-38,0,0,0,0 +no_defs ', - "EPSG:4733":'+proj=longlat +ellps=intl +towgs84=276,-57,149,0,0,0,0 +no_defs ', - "EPSG:4734":'+proj=longlat +ellps=intl +towgs84=-632,438,-609,0,0,0,0 +no_defs ', - "EPSG:4735":'+proj=longlat +ellps=intl +towgs84=647,1777,-1124,0,0,0,0 +no_defs ', - "EPSG:4736":'+proj=longlat +ellps=clrk80 +towgs84=260,12,-147,0,0,0,0 +no_defs ', - "EPSG:4737":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4738":'+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs ', - "EPSG:4739":'+proj=longlat +ellps=intl +towgs84=-156,-271,-189,0,0,0,0 +no_defs ', - "EPSG:4740":'+proj=longlat +a=6378136 +b=6356751.361745712 +towgs84=0,0,1.5,-0,-0,0.076,0 +no_defs ', - "EPSG:4741":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4742":'+proj=longlat +ellps=GRS80 +no_defs ', - "EPSG:4743":'+proj=longlat +ellps=clrk80 +towgs84=70.995,-335.916,262.898,0,0,0,0 +no_defs ', - "EPSG:4744":'+proj=longlat +ellps=clrk80 +no_defs ', - "EPSG:4745":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:4746":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:4747":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4748":'+proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +no_defs ', - "EPSG:4749":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4750":'+proj=longlat +ellps=WGS84 +towgs84=-56.263,16.136,-22.856,0,0,0,0 +no_defs ', - "EPSG:4751":'+proj=longlat +a=6377295.664 +b=6356094.667915204 +no_defs ', - "EPSG:4752":'+proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +no_defs ', - "EPSG:4753":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4754":'+proj=longlat +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +no_defs ', - "EPSG:4755":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4756":'+proj=longlat +ellps=WGS84 +towgs84=-192.873,-39.382,-111.202,-0.00205,-0.0005,0.00335,0.0188 +no_defs ', - "EPSG:4757":'+proj=longlat +ellps=WGS84 +no_defs ', - "EPSG:4758":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4759":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4760":'+proj=longlat +ellps=WGS66 +no_defs ', - "EPSG:4761":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4762":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4763":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4764":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4765":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4801":'+proj=longlat +ellps=bessel +towgs84=674.4,15.1,405.3,0,0,0,0 +pm=bern +no_defs ', - "EPSG:4802":'+proj=longlat +ellps=intl +towgs84=307,304,-318,0,0,0,0 +pm=bogota +no_defs ', - "EPSG:4803":'+proj=longlat +ellps=intl +towgs84=-304.046,-60.576,103.64,0,0,0,0 +pm=lisbon +no_defs ', - "EPSG:4804":'+proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +no_defs ', - "EPSG:4805":'+proj=longlat +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +no_defs ', - "EPSG:4806":'+proj=longlat +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +pm=rome +no_defs ', - "EPSG:4807":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +no_defs ', - "EPSG:4808":'+proj=longlat +ellps=bessel +pm=jakarta +no_defs ', - "EPSG:4809":'+proj=longlat +ellps=intl +pm=brussels +no_defs ', - "EPSG:4810":'+proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +no_defs ', - "EPSG:4811":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +pm=paris +no_defs ', - "EPSG:4813":'+proj=longlat +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +pm=jakarta +no_defs ', - "EPSG:4814":'+proj=longlat +ellps=bessel +pm=stockholm +no_defs ', - "EPSG:4815":'+proj=longlat +ellps=bessel +pm=athens +no_defs ', - "EPSG:4816":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-263,6,431,0,0,0,0 +pm=paris +no_defs ', - "EPSG:4817":'+proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +no_defs ', - "EPSG:4818":'+proj=longlat +ellps=bessel +towgs84=589,76,480,0,0,0,0 +pm=ferro +no_defs ', - "EPSG:4819":'+proj=longlat +ellps=clrk80 +towgs84=-209.362,-87.8162,404.62,0.0046,3.4784,0.5805,-1.4547 +pm=paris +no_defs ', - "EPSG:4820":'+proj=longlat +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +pm=jakarta +no_defs ', - "EPSG:4821":'+proj=longlat +a=6378249.2 +b=6356515 +pm=paris +no_defs ', - "EPSG:4823":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4824":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4901":'+proj=longlat +a=6376523 +b=6355862.933255573 +pm=2.337208333333333 +no_defs ', - "EPSG:4902":'+proj=longlat +a=6376523 +b=6355862.933255573 +pm=paris +no_defs ', - "EPSG:4903":'+proj=longlat +a=6378298.3 +b=6356657.142669561 +pm=madrid +no_defs ', - "EPSG:4904":'+proj=longlat +ellps=bessel +towgs84=508.088,-191.042,565.223,0,0,0,0 +pm=lisbon +no_defs ', - "EPSG:5013":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5132":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:5228":'+proj=longlat +ellps=bessel +towgs84=572.213,85.334,461.94,4.9732,1.529,5.2484,3.5378 +no_defs ', - "EPSG:5229":'+proj=longlat +ellps=bessel +towgs84=572.213,85.334,461.94,4.9732,1.529,5.2484,3.5378 +pm=ferro +no_defs ', - "EPSG:5233":'+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=-0.293,766.95,87.713,0.195704,1.69507,3.47302,-0.039338 +no_defs ', - "EPSG:5246":'+proj=longlat +ellps=GRS80 +no_defs ', - "EPSG:5252":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5264":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5324":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5340":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5354":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5360":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5365":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5371":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5373":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5381":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5393":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5451":'+proj=longlat +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +no_defs ', - "EPSG:5464":'+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs ', - "EPSG:5467":'+proj=longlat +ellps=clrk66 +no_defs ', - "EPSG:5489":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5524":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:5527":'+proj=longlat +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +no_defs ', - "EPSG:5546":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5561":'+proj=longlat +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +no_defs ', - "EPSG:5593":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5681":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:5886":'+proj=longlat +ellps=GRS80 +no_defs ', - "EPSG:6135":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:2000":'+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs ', - "EPSG:2001":'+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=-255,-15,71,0,0,0,0 +units=m +no_defs ', - "EPSG:2002":'+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +units=m +no_defs ', - "EPSG:2003":'+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +units=m +no_defs ', - "EPSG:2004":'+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=174,359,365,0,0,0,0 +units=m +no_defs ', - "EPSG:2005":'+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=9,183,236,0,0,0,0 +units=m +no_defs ', - "EPSG:2006":'+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0 +units=m +no_defs ', - "EPSG:2007":'+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=195.671,332.517,274.607,0,0,0,0 +units=m +no_defs ', - "EPSG:2008":'+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2009":'+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2010":'+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2011":'+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2012":'+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2013":'+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2014":'+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2015":'+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2016":'+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2017":'+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2018":'+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2019":'+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2020":'+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2021":'+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2022":'+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2023":'+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2024":'+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2025":'+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2026":'+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2027":'+proj=utm +zone=15 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2028":'+proj=utm +zone=16 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2029":'+proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2030":'+proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2031":'+proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2032":'+proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2033":'+proj=utm +zone=19 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2034":'+proj=utm +zone=20 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2035":'+proj=utm +zone=21 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2036":'+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2037":'+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2038":'+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2039":'+proj=tmerc +lat_0=31.73439361111111 +lon_0=35.20451694444445 +k=1.0000067 +x_0=219529.584 +y_0=626907.39 +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +units=m +no_defs ', - "EPSG:2040":'+proj=utm +zone=30 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs ', - "EPSG:2041":'+proj=utm +zone=30 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs ', - "EPSG:2042":'+proj=utm +zone=29 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs ', - "EPSG:2043":'+proj=utm +zone=29 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs ', - "EPSG:2044":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs ', - "EPSG:2045":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs ', - "EPSG:2046":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2047":'+proj=tmerc +lat_0=0 +lon_0=17 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2048":'+proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2049":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2050":'+proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2051":'+proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2052":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2053":'+proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2054":'+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2055":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2056":'+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=2600000 +y_0=1200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs ', - "EPSG:2057":'+proj=omerc +lat_0=27.51882880555555 +lonc=52.60353916666667 +alpha=0.5716611944444444 +k=0.999895934 +x_0=658377.437 +y_0=3044969.194 +gamma=0.5716611944444444 +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +units=m +no_defs ', - "EPSG:2058":'+proj=utm +zone=38 +ellps=intl +towgs84=-117,-132,-164,0,0,0,0 +units=m +no_defs ', - "EPSG:2059":'+proj=utm +zone=39 +ellps=intl +towgs84=-117,-132,-164,0,0,0,0 +units=m +no_defs ', - "EPSG:2060":'+proj=utm +zone=40 +ellps=intl +towgs84=-117,-132,-164,0,0,0,0 +units=m +no_defs ', - "EPSG:2061":'+proj=utm +zone=41 +ellps=intl +towgs84=-117,-132,-164,0,0,0,0 +units=m +no_defs ', - "EPSG:2062":'+proj=lcc +lat_1=40 +lat_0=40 +lon_0=0 +k_0=0.9988085293 +x_0=600000 +y_0=600000 +a=6378298.3 +b=6356657.142669561 +pm=madrid +units=m +no_defs ', - "EPSG:2063":'+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs ', - "EPSG:2064":'+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs ', - "EPSG:2065":'+proj=krovak +lat_0=49.5 +lon_0=42.5 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=589,76,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:2066":'+proj=cass +lat_0=11.25217861111111 +lon_0=-60.68600888888889 +x_0=37718.66159325 +y_0=36209.91512952 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.201166195164 +no_defs ', - "EPSG:2067":'+proj=utm +zone=20 +ellps=intl +towgs84=-0.465,372.095,171.736,0,0,0,0 +units=m +no_defs ', - "EPSG:2068":'+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2069":'+proj=tmerc +lat_0=0 +lon_0=11 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2070":'+proj=tmerc +lat_0=0 +lon_0=13 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2071":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2072":'+proj=tmerc +lat_0=0 +lon_0=17 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2073":'+proj=tmerc +lat_0=0 +lon_0=19 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2074":'+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2075":'+proj=tmerc +lat_0=0 +lon_0=23 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2076":'+proj=tmerc +lat_0=0 +lon_0=25 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2077":'+proj=utm +zone=32 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2078":'+proj=utm +zone=33 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2079":'+proj=utm +zone=34 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2080":'+proj=utm +zone=35 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2081":'+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs ', - "EPSG:2082":'+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0 +units=m +no_defs ', - "EPSG:2083":'+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=16,196,93,0,0,0,0 +units=m +no_defs ', - "EPSG:2084":'+proj=utm +zone=19 +south +ellps=intl +towgs84=16,196,93,0,0,0,0 +units=m +no_defs ', - "EPSG:2085":'+proj=lcc +lat_1=22.35 +lat_0=22.35 +lon_0=-81 +k_0=0.99993602 +x_0=500000 +y_0=280296.016 +datum=NAD27 +units=m +no_defs ', - "EPSG:2086":'+proj=lcc +lat_1=20.71666666666667 +lat_0=20.71666666666667 +lon_0=-76.83333333333333 +k_0=0.99994848 +x_0=500000 +y_0=229126.939 +datum=NAD27 +units=m +no_defs ', - "EPSG:2087":'+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2088":'+proj=tmerc +lat_0=0 +lon_0=11 +k=0.9996 +x_0=500000 +y_0=0 +a=6378249.2 +b=6356515 +towgs84=-263,6,431,0,0,0,0 +units=m +no_defs ', - "EPSG:2089":'+proj=utm +zone=38 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2090":'+proj=utm +zone=39 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2091":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs ', - "EPSG:2092":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs ', - "EPSG:2093":'+proj=tmerc +lat_0=0 +lon_0=106 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs ', - "EPSG:2094":'+proj=tmerc +lat_0=0 +lon_0=106 +k=0.9996 +x_0=500000 +y_0=0 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:2095":'+proj=utm +zone=28 +ellps=intl +towgs84=-173,253,27,0,0,0,0 +units=m +no_defs ', - "EPSG:2096":'+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:2097":'+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:2098":'+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:2099":'+proj=cass +lat_0=25.38236111111111 +lon_0=50.76138888888889 +x_0=100000 +y_0=100000 +ellps=helmert +units=m +no_defs ', - "EPSG:2100":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +units=m +no_defs ', - "EPSG:2101":'+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=0 +y_0=-52684.972 +ellps=intl +units=m +no_defs ', - "EPSG:2102":'+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=200000 +y_0=147315.028 +ellps=intl +units=m +no_defs ', - "EPSG:2103":'+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=500000 +y_0=447315.028 +ellps=intl +units=m +no_defs ', - "EPSG:2104":'+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=-17044 +y_0=-23139.97 +ellps=intl +units=m +no_defs ', - "EPSG:2105":'+proj=tmerc +lat_0=-36.87972222222222 +lon_0=174.7641666666667 +k=0.9999 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2106":'+proj=tmerc +lat_0=-37.76111111111111 +lon_0=176.4661111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2107":'+proj=tmerc +lat_0=-38.62444444444444 +lon_0=177.8855555555556 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2108":'+proj=tmerc +lat_0=-39.65083333333333 +lon_0=176.6736111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2109":'+proj=tmerc +lat_0=-39.13555555555556 +lon_0=174.2277777777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2110":'+proj=tmerc +lat_0=-39.51222222222222 +lon_0=175.64 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2111":'+proj=tmerc +lat_0=-40.24194444444444 +lon_0=175.4880555555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2112":'+proj=tmerc +lat_0=-40.92527777777777 +lon_0=175.6472222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2113":'+proj=tmerc +lat_0=-41.3011111111111 +lon_0=174.7763888888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2114":'+proj=tmerc +lat_0=-40.71472222222223 +lon_0=172.6719444444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2115":'+proj=tmerc +lat_0=-41.27444444444444 +lon_0=173.2991666666667 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2116":'+proj=tmerc +lat_0=-41.28972222222222 +lon_0=172.1088888888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2117":'+proj=tmerc +lat_0=-41.81055555555555 +lon_0=171.5811111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2118":'+proj=tmerc +lat_0=-42.33361111111111 +lon_0=171.5497222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2119":'+proj=tmerc +lat_0=-42.68888888888888 +lon_0=173.01 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2120":'+proj=tmerc +lat_0=-41.54444444444444 +lon_0=173.8019444444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2121":'+proj=tmerc +lat_0=-42.88611111111111 +lon_0=170.9797222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2122":'+proj=tmerc +lat_0=-43.11 +lon_0=170.2608333333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2123":'+proj=tmerc +lat_0=-43.97777777777778 +lon_0=168.6061111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2124":'+proj=tmerc +lat_0=-43.59055555555556 +lon_0=172.7269444444445 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2125":'+proj=tmerc +lat_0=-43.74861111111111 +lon_0=171.3605555555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2126":'+proj=tmerc +lat_0=-44.40194444444445 +lon_0=171.0572222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2127":'+proj=tmerc +lat_0=-44.735 +lon_0=169.4675 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2128":'+proj=tmerc +lat_0=-45.13277777777778 +lon_0=168.3986111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2129":'+proj=tmerc +lat_0=-45.56361111111111 +lon_0=167.7386111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2130":'+proj=tmerc +lat_0=-45.81611111111111 +lon_0=170.6283333333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2131":'+proj=tmerc +lat_0=-45.86138888888889 +lon_0=170.2825 +k=0.99996 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2132":'+proj=tmerc +lat_0=-46.6 +lon_0=168.3427777777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2133":'+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2134":'+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2135":'+proj=utm +zone=60 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2136":'+proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.99975 +x_0=274319.7391633579 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +to_meter=0.3047997101815088 +no_defs ', - "EPSG:2137":'+proj=tmerc +lat_0=0 +lon_0=-1 +k=0.9996 +x_0=500000 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +units=m +no_defs ', - "EPSG:2138":'+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2139":'+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2140":'+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2141":'+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2142":'+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2143":'+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2144":'+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2145":'+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2146":'+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2147":'+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2148":'+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2149":'+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2150":'+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2151":'+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2152":'+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2153":'+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2154":'+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2155":'+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2156":'+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2157":'+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=0.99982 +x_0=600000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2158":'+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2159":'+proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1 +x_0=152399.8550907544 +y_0=0 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs ', - "EPSG:2160":'+proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1 +x_0=243839.7681452071 +y_0=182879.8261089053 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs ', - "EPSG:2161":'+proj=utm +zone=28 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m +no_defs ', - "EPSG:2162":'+proj=utm +zone=29 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m +no_defs ', - "EPSG:2163":'+proj=laea +lat_0=45 +lon_0=-100 +x_0=0 +y_0=0 +a=6370997 +b=6370997 +units=m +no_defs ', - "EPSG:2164":'+proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs ', - "EPSG:2165":'+proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs ', - "EPSG:2166":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:2167":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:2168":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:2169":'+proj=tmerc +lat_0=49.83333333333334 +lon_0=6.166666666666667 +k=1 +x_0=80000 +y_0=100000 +ellps=intl +towgs84=-189.681,18.3463,-42.7695,-0.33746,-3.09264,2.53861,0.4598 +units=m +no_defs ', - "EPSG:2170":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:2171":'+proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0.9998 +x_0=4637000 +y_0=5647000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:2172":'+proj=sterea +lat_0=53.00194444444445 +lon_0=21.50277777777778 +k=0.9998 +x_0=4603000 +y_0=5806000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:2173":'+proj=sterea +lat_0=53.58333333333334 +lon_0=17.00833333333333 +k=0.9998 +x_0=3501000 +y_0=5999000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:2174":'+proj=sterea +lat_0=51.67083333333333 +lon_0=16.67222222222222 +k=0.9998 +x_0=3703000 +y_0=5627000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:2175":'+proj=tmerc +lat_0=0 +lon_0=18.95833333333333 +k=0.999983 +x_0=237000 +y_0=-4700000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:2176":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.999923 +x_0=5500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2177":'+proj=tmerc +lat_0=0 +lon_0=18 +k=0.999923 +x_0=6500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2178":'+proj=tmerc +lat_0=0 +lon_0=21 +k=0.999923 +x_0=7500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2179":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.999923 +x_0=8500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2180":'+proj=tmerc +lat_0=0 +lon_0=19 +k=0.9993 +x_0=500000 +y_0=-5300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2188":'+proj=utm +zone=25 +ellps=intl +towgs84=-425,-169,81,0,0,0,0 +units=m +no_defs ', - "EPSG:2189":'+proj=utm +zone=26 +ellps=intl +towgs84=-104,167,-38,0,0,0,0 +units=m +no_defs ', - "EPSG:2190":'+proj=utm +zone=26 +ellps=intl +towgs84=-203,141,53,0,0,0,0 +units=m +no_defs ', - "EPSG:2191":'+proj=utm +zone=28 +ellps=intl +units=m +no_defs ', - "EPSG:2192":'+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.337229166666667 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2193":'+proj=tmerc +lat_0=0 +lon_0=173 +k=0.9996 +x_0=1600000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2194":'+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2195":'+proj=utm +zone=2 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2196":'+proj=tmerc +lat_0=0 +lon_0=9.5 +k=0.99995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2197":'+proj=tmerc +lat_0=0 +lon_0=12 +k=0.99995 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2198":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2199":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:2200":'+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=300000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m +no_defs ', - "EPSG:2201":'+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2202":'+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2203":'+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2204":'+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=609601.2192024384 +y_0=30480.06096012192 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:2205":'+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2206":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2207":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2208":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2209":'+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2210":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2211":'+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2212":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2213":'+proj=tmerc +lat_0=0 +lon_0=30 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2214":'+proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +units=m +no_defs ', - "EPSG:2215":'+proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +units=m +no_defs ', - "EPSG:2216":'+proj=utm +zone=22 +ellps=intl +towgs84=164,138,-189,0,0,0,0 +units=m +no_defs ', - "EPSG:2217":'+proj=utm +zone=23 +ellps=intl +towgs84=164,138,-189,0,0,0,0 +units=m +no_defs ', - "EPSG:2219":'+proj=utm +zone=19 +a=6378135 +b=6356750.304921594 +units=m +no_defs ', - "EPSG:2220":'+proj=utm +zone=20 +a=6378135 +b=6356750.304921594 +units=m +no_defs ', - "EPSG:2222":'+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2223":'+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2224":'+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2225":'+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2226":'+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2227":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2228":'+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2229":'+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2230":'+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2231":'+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2232":'+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2233":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2234":'+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2235":'+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2236":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2237":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2238":'+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2239":'+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2240":'+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2241":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2242":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2243":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2244":'+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249364.9987299975 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2245":'+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2246":'+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2247":'+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2248":'+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2249":'+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2250":'+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2251":'+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2252":'+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2253":'+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2254":'+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2255":'+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2256":'+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2257":'+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2258":'+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2259":'+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2260":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2261":'+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2262":'+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2263":'+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2264":'+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2265":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2266":'+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2267":'+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2268":'+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2269":'+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2270":'+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2271":'+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2272":'+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2273":'+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2274":'+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2275":'+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2276":'+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2277":'+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2278":'+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2279":'+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2280":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2281":'+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2282":'+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2283":'+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2284":'+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2285":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2286":'+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2287":'+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2288":'+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2289":'+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2290":'+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=700000 +y_0=400000 +a=6378135 +b=6356750.304921594 +units=m +no_defs ', - "EPSG:2291":'+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m +no_defs ', - "EPSG:2292":'+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2294":'+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=4500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_defs ', - "EPSG:2295":'+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=5500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_defs ', - "EPSG:2308":'+proj=tmerc +lat_0=0 +lon_0=109 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +units=m +no_defs ', - "EPSG:2309":'+proj=tmerc +lat_0=0 +lon_0=116 +k=0.9996 +x_0=500000 +y_0=10000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:2310":'+proj=tmerc +lat_0=0 +lon_0=132 +k=0.9996 +x_0=500000 +y_0=10000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:2311":'+proj=tmerc +lat_0=0 +lon_0=6 +k=0.9996 +x_0=500000 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:2312":'+proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs ', - "EPSG:2313":'+proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs ', - "EPSG:2314":'+proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46392052001 +y_0=65379.0134283 +a=6378293.645208759 +b=6356617.987679838 +towgs84=-61.702,284.488,472.052,0,0,0,0 +to_meter=0.3047972654 +no_defs ', - "EPSG:2315":'+proj=utm +zone=19 +south +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs ', - "EPSG:2316":'+proj=utm +zone=20 +south +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs ', - "EPSG:2317":'+proj=lcc +lat_1=9 +lat_2=3 +lat_0=6 +lon_0=-66 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:2318":'+proj=lcc +lat_1=17 +lat_2=33 +lat_0=25.08951 +lon_0=48 +x_0=0 +y_0=0 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +units=m +no_defs ', - "EPSG:2319":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2320":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2321":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2322":'+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2323":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2324":'+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2325":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2326":'+proj=tmerc +lat_0=22.31213333333334 +lon_0=114.1785555555556 +k=1 +x_0=836694.05 +y_0=819069.8 +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883,-1.09425 +units=m +no_defs ', - "EPSG:2327":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2328":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2329":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2330":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2331":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2332":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2333":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2334":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2335":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2336":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2337":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2338":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2339":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2340":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2341":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2342":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2343":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2344":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2345":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2346":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2347":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2348":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2349":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2350":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2351":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2352":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2353":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2354":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2355":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2356":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2357":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2358":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2359":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2360":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2361":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2362":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2363":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2364":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2365":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2366":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2367":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2368":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2369":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2370":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2371":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2372":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2373":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2374":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2375":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2376":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2377":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2378":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2379":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2380":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2381":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2382":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2383":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2384":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2385":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2386":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2387":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2388":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2389":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2390":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2391":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=1500000 +y_0=0 +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +units=m +no_defs ', - "EPSG:2392":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +units=m +no_defs ', - "EPSG:2393":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +units=m +no_defs ', - "EPSG:2394":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=4500000 +y_0=0 +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +units=m +no_defs ', - "EPSG:2395":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs ', - "EPSG:2396":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs ', - "EPSG:2397":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:2398":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:2399":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:2400":'+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +units=m +no_defs ', - "EPSG:2401":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2402":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2403":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2404":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2405":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2406":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2407":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2408":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2409":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2410":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2411":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2412":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2413":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2414":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2415":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2416":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2417":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2418":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2419":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2420":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2421":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2422":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2423":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2424":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2425":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2426":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2427":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2428":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2429":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2430":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2431":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2432":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2433":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2434":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2435":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2436":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2437":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2438":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2439":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2440":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2441":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2442":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2443":'+proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2444":'+proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2445":'+proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2446":'+proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2447":'+proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2448":'+proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2449":'+proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2450":'+proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2451":'+proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2452":'+proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2453":'+proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2454":'+proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2455":'+proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2456":'+proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2457":'+proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2458":'+proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2459":'+proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2460":'+proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2461":'+proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2462":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:2463":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2464":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2465":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2466":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2467":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2468":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2469":'+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2470":'+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2471":'+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2472":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2473":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2474":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2475":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2476":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2477":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2478":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2479":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2480":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2481":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2482":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2483":'+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2484":'+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2485":'+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2486":'+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2487":'+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2488":'+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2489":'+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2490":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2491":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2492":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2493":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2494":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2495":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2496":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2497":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2498":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2499":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2500":'+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2501":'+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2502":'+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2503":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2504":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2505":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2506":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2507":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2508":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2509":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2510":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2511":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2512":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2513":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2514":'+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2515":'+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2516":'+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2517":'+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2518":'+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2519":'+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2520":'+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2521":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2522":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2523":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2524":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2525":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2526":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2527":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2528":'+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2529":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2530":'+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2531":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2532":'+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2533":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2534":'+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2535":'+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2536":'+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2537":'+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2538":'+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2539":'+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2540":'+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2541":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2542":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2543":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2544":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2545":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2546":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2547":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2548":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2549":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2550":'+proj=utm +zone=50 +south +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +units=m +no_defs ', - "EPSG:2551":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2552":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2553":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2554":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2555":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2556":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2557":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2558":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2559":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2560":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2561":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2562":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2563":'+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2564":'+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2565":'+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2566":'+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2567":'+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2568":'+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2569":'+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2570":'+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2571":'+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2572":'+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2573":'+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2574":'+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2575":'+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2576":'+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2577":'+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2578":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2579":'+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2580":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2581":'+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2582":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2583":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2584":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2585":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2586":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2587":'+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2588":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2589":'+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2590":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2591":'+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2592":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2593":'+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2594":'+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2595":'+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2596":'+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2597":'+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2598":'+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2599":'+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2600":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2601":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2602":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2603":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2604":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2605":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2606":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2607":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2608":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2609":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2610":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2611":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2612":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2613":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2614":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2615":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2616":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2617":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2618":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2619":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2620":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2621":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2622":'+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2623":'+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2624":'+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2625":'+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2626":'+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2627":'+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2628":'+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2629":'+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2630":'+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2631":'+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2632":'+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2633":'+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2634":'+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2635":'+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2636":'+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2637":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2638":'+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2639":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2640":'+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2641":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2642":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2643":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2644":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2645":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2646":'+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2647":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2648":'+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2649":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2650":'+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2651":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2652":'+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2653":'+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2654":'+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2655":'+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2656":'+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2657":'+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2658":'+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2659":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2660":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2661":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2662":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2663":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2664":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2665":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2666":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2667":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2668":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2669":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2670":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2671":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2672":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2673":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2674":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2675":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2676":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2677":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2678":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2679":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2680":'+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2681":'+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2682":'+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2683":'+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2684":'+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2685":'+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2686":'+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2687":'+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2688":'+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2689":'+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2690":'+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2691":'+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2692":'+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2693":'+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2694":'+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2695":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2696":'+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2697":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2698":'+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2699":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2700":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2701":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2702":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2703":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2704":'+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2705":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2706":'+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2707":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2708":'+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2709":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2710":'+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2711":'+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2712":'+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2713":'+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2714":'+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2715":'+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2716":'+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2717":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2718":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2719":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2720":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2721":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2722":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2723":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2724":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2725":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2726":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2727":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2728":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2729":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2730":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2731":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2732":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2733":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2734":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2735":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2736":'+proj=utm +zone=36 +south +ellps=clrk66 +towgs84=-73.472,-51.66,-112.482,0.953,4.6,-2.368,0.586 +units=m +no_defs ', - "EPSG:2737":'+proj=utm +zone=37 +south +ellps=clrk66 +towgs84=-73.472,-51.66,-112.482,0.953,4.6,-2.368,0.586 +units=m +no_defs ', - "EPSG:2738":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2739":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2740":'+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2741":'+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2742":'+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2743":'+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2744":'+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2745":'+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2746":'+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2747":'+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2748":'+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2749":'+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2750":'+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2751":'+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2752":'+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2753":'+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2754":'+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2755":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2756":'+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2757":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2758":'+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2759":'+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2760":'+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2761":'+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2762":'+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2763":'+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2764":'+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2765":'+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2766":'+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2767":'+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2768":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2769":'+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2770":'+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2771":'+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2772":'+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2773":'+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2774":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2775":'+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2776":'+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2777":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2778":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2779":'+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2780":'+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2781":'+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2782":'+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2783":'+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2784":'+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2785":'+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2786":'+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2787":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2788":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2789":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2790":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2791":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2792":'+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2793":'+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2794":'+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2795":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2796":'+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2797":'+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2798":'+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2799":'+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2800":'+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2801":'+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2802":'+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2803":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2804":'+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2805":'+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2806":'+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2807":'+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2808":'+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2809":'+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2810":'+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2811":'+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2812":'+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2813":'+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2814":'+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2815":'+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2816":'+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2817":'+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2818":'+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2819":'+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2820":'+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2821":'+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2822":'+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2823":'+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2824":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2825":'+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2826":'+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2827":'+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2828":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2829":'+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2830":'+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2831":'+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2832":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2833":'+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2834":'+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2835":'+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2836":'+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2837":'+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2838":'+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2839":'+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2840":'+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2841":'+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2842":'+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2843":'+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2844":'+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2845":'+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2846":'+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2847":'+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2848":'+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2849":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2850":'+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2851":'+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2852":'+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2853":'+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2854":'+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2855":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2856":'+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2857":'+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2858":'+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2859":'+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2860":'+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2861":'+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2862":'+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2863":'+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2864":'+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2865":'+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2866":'+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2867":'+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2868":'+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2869":'+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2870":'+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2871":'+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2872":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2873":'+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2874":'+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2875":'+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2876":'+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2877":'+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2878":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2879":'+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2880":'+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2881":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2882":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2883":'+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2884":'+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2885":'+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2886":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2887":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2888":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2889":'+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249364.9987299975 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2890":'+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2891":'+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2892":'+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2893":'+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2894":'+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2895":'+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2896":'+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2897":'+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2898":'+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2899":'+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2900":'+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2901":'+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2902":'+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2903":'+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2904":'+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2905":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2906":'+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2907":'+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2908":'+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2909":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2910":'+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2911":'+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2912":'+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2913":'+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2914":'+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2915":'+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2916":'+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2917":'+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2918":'+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2919":'+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2920":'+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2921":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2922":'+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2923":'+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2924":'+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2925":'+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2926":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2927":'+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2928":'+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2929":'+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2930":'+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2931":'+proj=tmerc +lat_0=0 +lon_0=13 +k=0.9996 +x_0=500000 +y_0=0 +a=6378249.2 +b=6356515 +towgs84=-106,-87,188,0,0,0,0 +units=m +no_defs ', - "EPSG:2932":'+proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.99999 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706 +units=m +no_defs ', - "EPSG:2933":'+proj=utm +zone=50 +south +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +units=m +no_defs ', - "EPSG:2934":'+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +pm=jakarta +units=m +no_defs ', - "EPSG:2935":'+proj=tmerc +lat_0=0.1166666666666667 +lon_0=41.53333333333333 +k=1 +x_0=1300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2936":'+proj=tmerc +lat_0=0.1166666666666667 +lon_0=44.53333333333333 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2937":'+proj=tmerc +lat_0=0.1166666666666667 +lon_0=47.53333333333333 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2938":'+proj=tmerc +lat_0=0.1166666666666667 +lon_0=50.53333333333333 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2939":'+proj=tmerc +lat_0=0.1333333333333333 +lon_0=50.76666666666667 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2940":'+proj=tmerc +lat_0=0.1333333333333333 +lon_0=53.76666666666667 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2941":'+proj=tmerc +lat_0=0.1333333333333333 +lon_0=56.76666666666667 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2942":'+proj=utm +zone=28 +ellps=intl +towgs84=-499,-249,314,0,0,0,0 +units=m +no_defs ', - "EPSG:2943":'+proj=utm +zone=28 +ellps=intl +towgs84=-289,-124,60,0,0,0,0 +units=m +no_defs ', - "EPSG:2944":'+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2945":'+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2946":'+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2947":'+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2948":'+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2949":'+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2950":'+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2951":'+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2952":'+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2953":'+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2954":'+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2955":'+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2956":'+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2957":'+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2958":'+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2959":'+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2960":'+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2961":'+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2962":'+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2964":'+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:2965":'+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2966":'+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2967":'+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2968":'+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2969":'+proj=utm +zone=20 +ellps=intl +towgs84=137,248,-430,0,0,0,0 +units=m +no_defs ', - "EPSG:2970":'+proj=utm +zone=20 +ellps=intl +towgs84=-467,-16,-300,0,0,0,0 +units=m +no_defs ', - "EPSG:2971":'+proj=utm +zone=22 +ellps=intl +towgs84=-186,230,110,0,0,0,0 +units=m +no_defs ', - "EPSG:2972":'+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2973":'+proj=utm +zone=20 +ellps=intl +towgs84=186,482,151,0,0,0,0 +units=m +no_defs ', - "EPSG:2975":'+proj=utm +zone=40 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2976":'+proj=utm +zone=6 +south +ellps=intl +towgs84=162,117,154,0,0,0,0 +units=m +no_defs ', - "EPSG:2977":'+proj=utm +zone=5 +south +ellps=intl +towgs84=72.438,345.918,79.486,1.6045,0.8823,0.5565,1.3746 +units=m +no_defs ', - "EPSG:2978":'+proj=utm +zone=7 +south +ellps=intl +towgs84=84,274,65,0,0,0,0 +units=m +no_defs ', - "EPSG:2979":'+proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,103,0,0,0,0 +units=m +no_defs ', - "EPSG:2980":'+proj=utm +zone=38 +south +ellps=intl +towgs84=-382,-59,-262,0,0,0,0 +units=m +no_defs ', - "EPSG:2981":'+proj=utm +zone=58 +south +ellps=intl +towgs84=335.47,222.58,-230.94,0,0,0,0 +units=m +no_defs ', - "EPSG:2982":'+proj=utm +zone=58 +south +ellps=intl +towgs84=-13,-348,292,0,0,0,0 +units=m +no_defs ', - "EPSG:2983":'+proj=utm +zone=58 +south +ellps=intl +towgs84=-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798 +units=m +no_defs ', - "EPSG:2984":'+proj=lcc +lat_1=-20.66666666666667 +lat_2=-22.33333333333333 +lat_0=-21.5 +lon_0=166 +x_0=400000 +y_0=300000 +ellps=intl +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2987":'+proj=utm +zone=21 +ellps=clrk66 +towgs84=30,430,368,0,0,0,0 +units=m +no_defs ', - "EPSG:2988":'+proj=utm +zone=1 +south +ellps=intl +towgs84=253,-132,-127,0,0,0,0 +units=m +no_defs ', - "EPSG:2989":'+proj=utm +zone=20 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2990":'+proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333333333 +k=1 +x_0=50000 +y_0=160000 +ellps=intl +towgs84=94,-948,-1262,0,0,0,0 +units=m +no_defs ', - "EPSG:2991":'+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2992":'+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2993":'+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2994":'+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2995":'+proj=utm +zone=58 +south +ellps=intl +towgs84=287.58,177.78,-135.41,0,0,0,0 +units=m +no_defs ', - "EPSG:2996":'+proj=utm +zone=58 +south +ellps=intl +towgs84=-13,-348,292,0,0,0,0 +units=m +no_defs ', - "EPSG:2997":'+proj=utm +zone=58 +south +ellps=intl +towgs84=-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7 +units=m +no_defs ', - "EPSG:2998":'+proj=utm +zone=58 +south +ellps=intl +towgs84=-10.18,-350.43,291.37,0,0,0,0 +units=m +no_defs ', - "EPSG:2999":'+proj=utm +zone=38 +south +ellps=intl +towgs84=-963,510,-359,0,0,0,0 +units=m +no_defs ', - "EPSG:3000":'+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +units=m +no_defs ', - "EPSG:3001":'+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +units=m +no_defs ', - "EPSG:3002":'+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +units=m +no_defs ', - "EPSG:3003":'+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +units=m +no_defs ', - "EPSG:3004":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +units=m +no_defs ', - "EPSG:3005":'+proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3006":'+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3007":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3008":'+proj=tmerc +lat_0=0 +lon_0=13.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3009":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3010":'+proj=tmerc +lat_0=0 +lon_0=16.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3011":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3012":'+proj=tmerc +lat_0=0 +lon_0=14.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3013":'+proj=tmerc +lat_0=0 +lon_0=15.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3014":'+proj=tmerc +lat_0=0 +lon_0=17.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3015":'+proj=tmerc +lat_0=0 +lon_0=18.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3016":'+proj=tmerc +lat_0=0 +lon_0=20.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3017":'+proj=tmerc +lat_0=0 +lon_0=21.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3018":'+proj=tmerc +lat_0=0 +lon_0=23.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3019":'+proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +units=m +no_defs ', - "EPSG:3020":'+proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +units=m +no_defs ', - "EPSG:3021":'+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +units=m +no_defs ', - "EPSG:3022":'+proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +units=m +no_defs ', - "EPSG:3023":'+proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +units=m +no_defs ', - "EPSG:3024":'+proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +units=m +no_defs ', - "EPSG:3025":'+proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:3026":'+proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:3027":'+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:3028":'+proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:3029":'+proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:3030":'+proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:3031":'+proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3032":'+proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=70 +k=1 +x_0=6000000 +y_0=6000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:3033":'+proj=lcc +lat_1=-68.5 +lat_2=-74.5 +lat_0=-50 +lon_0=70 +x_0=6000000 +y_0=6000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:3034":'+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3035":'+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3036":'+proj=utm +zone=36 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m +no_defs ', - "EPSG:3037":'+proj=utm +zone=37 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m +no_defs ', - "EPSG:3038":'+proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3039":'+proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3040":'+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3041":'+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3042":'+proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3043":'+proj=utm +zone=31 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3044":'+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3045":'+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3046":'+proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3047":'+proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3048":'+proj=utm +zone=36 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3049":'+proj=utm +zone=37 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3050":'+proj=utm +zone=38 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3051":'+proj=utm +zone=39 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3054":'+proj=utm +zone=26 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m +no_defs ', - "EPSG:3055":'+proj=utm +zone=27 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m +no_defs ', - "EPSG:3056":'+proj=utm +zone=28 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m +no_defs ', - "EPSG:3057":'+proj=lcc +lat_1=64.25 +lat_2=65.75 +lat_0=65 +lon_0=-19 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3058":'+proj=tmerc +lat_0=0 +lon_0=-8.5 +k=1 +x_0=50000 +y_0=-7800000 +ellps=intl +towgs84=982.609,552.753,-540.873,6.68163,-31.6115,-19.8482,16.805 +units=m +no_defs ', - "EPSG:3059":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=-6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3060":'+proj=utm +zone=58 +south +ellps=intl +towgs84=-11.64,-348.6,291.98,0,0,0,0 +units=m +no_defs ', - "EPSG:3061":'+proj=utm +zone=28 +ellps=intl +towgs84=-502.862,-247.438,312.724,0,0,0,0 +units=m +no_defs ', - "EPSG:3062":'+proj=utm +zone=26 +ellps=intl +towgs84=-204.619,140.176,55.226,0,0,0,0 +units=m +no_defs ', - "EPSG:3063":'+proj=utm +zone=26 +ellps=intl +towgs84=-106.226,166.366,-37.893,0,0,0,0 +units=m +no_defs ', - "EPSG:3064":'+proj=utm +zone=32 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3065":'+proj=utm +zone=33 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3066":'+proj=tmerc +lat_0=0 +lon_0=37 +k=0.9998 +x_0=500000 +y_0=-3000000 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:3067":'+proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3068":'+proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 +x_0=40000 +y_0=10000 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:3069":'+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=500000 +y_0=-4500000 +datum=NAD27 +units=m +no_defs ', - "EPSG:3070":'+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3071":'+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3072":'+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3073":'+proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3074":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3075":'+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3076":'+proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3077":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3078":'+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +no_uoff +gamma=337.25556 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3079":'+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +no_uoff +gamma=337.25556 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3080":'+proj=lcc +lat_1=27.41666666666667 +lat_2=34.91666666666666 +lat_0=31.16666666666667 +lon_0=-100 +x_0=914400 +y_0=914400 +datum=NAD27 +units=ft +no_defs ', - "EPSG:3081":'+proj=lcc +lat_1=27.41666666666667 +lat_2=34.91666666666666 +lat_0=31.16666666666667 +lon_0=-100 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3082":'+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3083":'+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3084":'+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3085":'+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3086":'+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3087":'+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3088":'+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3089":'+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3090":'+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3091":'+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3092":'+proj=utm +zone=51 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:3093":'+proj=utm +zone=52 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:3094":'+proj=utm +zone=53 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:3095":'+proj=utm +zone=54 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:3096":'+proj=utm +zone=55 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:3097":'+proj=utm +zone=51 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3098":'+proj=utm +zone=52 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3099":'+proj=utm +zone=53 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3100":'+proj=utm +zone=54 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3101":'+proj=utm +zone=55 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3102":'+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=95169.31165862332 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3103":'+proj=utm +zone=28 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3104":'+proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3105":'+proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3106":'+proj=tmerc +lat_0=0 +lon_0=90 +k=0.9996 +x_0=500000 +y_0=0 +a=6377276.345 +b=6356075.41314024 +towgs84=283.7,735.9,261.1,0,0,0,0 +units=m +no_defs ', - "EPSG:3107":'+proj=lcc +lat_1=-28 +lat_2=-36 +lat_0=-32 +lon_0=135 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3108":'+proj=tmerc +lat_0=49.5 +lon_0=-2.416666666666667 +k=0.999997 +x_0=47000 +y_0=50000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3109":'+proj=tmerc +lat_0=49.225 +lon_0=-2.135 +k=0.9999999000000001 +x_0=40000 +y_0=70000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3110":'+proj=lcc +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145 +x_0=2500000 +y_0=4500000 +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:3111":'+proj=lcc +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145 +x_0=2500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3112":'+proj=lcc +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=134 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3113":'+proj=tmerc +lat_0=-28 +lon_0=153 +k=0.99999 +x_0=50000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3114":'+proj=tmerc +lat_0=4.596200416666666 +lon_0=-80.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3115":'+proj=tmerc +lat_0=4.596200416666666 +lon_0=-77.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3116":'+proj=tmerc +lat_0=4.596200416666666 +lon_0=-74.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3117":'+proj=tmerc +lat_0=4.596200416666666 +lon_0=-71.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3118":'+proj=tmerc +lat_0=4.596200416666666 +lon_0=-68.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3119":'+proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +units=m +no_defs ', - "EPSG:3120":'+proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0.9998 +x_0=4637000 +y_0=5467000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3121":'+proj=tmerc +lat_0=0 +lon_0=117 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs ', - "EPSG:3122":'+proj=tmerc +lat_0=0 +lon_0=119 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs ', - "EPSG:3123":'+proj=tmerc +lat_0=0 +lon_0=121 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs ', - "EPSG:3124":'+proj=tmerc +lat_0=0 +lon_0=123 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs ', - "EPSG:3125":'+proj=tmerc +lat_0=0 +lon_0=125 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs ', - "EPSG:3126":'+proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3127":'+proj=tmerc +lat_0=0 +lon_0=20 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3128":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3129":'+proj=tmerc +lat_0=0 +lon_0=22 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3130":'+proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3131":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3132":'+proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3133":'+proj=tmerc +lat_0=0 +lon_0=26 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3134":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3135":'+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3136":'+proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3137":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3138":'+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3140":'+proj=cass +lat_0=-18 +lon_0=178 +x_0=109435.392 +y_0=141622.272 +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +to_meter=0.201168 +no_defs ', - "EPSG:3141":'+proj=utm +zone=60 +south +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +units=m +no_defs ', - "EPSG:3142":'+proj=utm +zone=1 +south +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +units=m +no_defs ', - "EPSG:3143":'+proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.99985 +x_0=2000000 +y_0=4000000 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:3146":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:3147":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:3148":'+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +towgs84=198,881,317,0,0,0,0 +units=m +no_defs ', - "EPSG:3149":'+proj=utm +zone=49 +a=6377276.345 +b=6356075.41314024 +towgs84=198,881,317,0,0,0,0 +units=m +no_defs ', - "EPSG:3150":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:3151":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:3152":'+proj=tmerc +lat_0=0 +lon_0=18.05779 +k=0.99999425 +x_0=100178.1808 +y_0=-6500614.7836 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3153":'+proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3154":'+proj=utm +zone=7 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3155":'+proj=utm +zone=8 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3156":'+proj=utm +zone=9 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3157":'+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3158":'+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3159":'+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3160":'+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3161":'+proj=lcc +lat_1=44.5 +lat_2=53.5 +lat_0=0 +lon_0=-85 +x_0=930000 +y_0=6430000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3162":'+proj=lcc +lat_1=44.5 +lat_2=53.5 +lat_0=0 +lon_0=-85 +x_0=930000 +y_0=6430000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3163":'+proj=lcc +lat_1=-20.66666666666667 +lat_2=-22.33333333333333 +lat_0=-21.5 +lon_0=166 +x_0=400000 +y_0=300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3164":'+proj=utm +zone=58 +south +ellps=WGS84 +towgs84=-56.263,16.136,-22.856,0,0,0,0 +units=m +no_defs ', - "EPSG:3165":'+proj=lcc +lat_1=-22.24469175 +lat_2=-22.29469175 +lat_0=-22.26969175 +lon_0=166.44242575 +x_0=0.66 +y_0=1.02 +ellps=intl +towgs84=-10.18,-350.43,291.37,0,0,0,0 +units=m +no_defs ', - "EPSG:3166":'+proj=lcc +lat_1=-22.24472222222222 +lat_2=-22.29472222222222 +lat_0=-22.26972222222222 +lon_0=166.4425 +x_0=8.313000000000001 +y_0=-2.354 +ellps=intl +towgs84=-10.18,-350.43,291.37,0,0,0,0 +units=m +no_defs ', - "EPSG:3167":'+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=40000 +y_0=0 +no_uoff +gamma=323.1301023611111 +a=6377295.664 +b=6356094.667915204 +to_meter=20.116756 +no_defs ', - "EPSG:3168":'+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=804670.24 +y_0=0 +no_uoff +gamma=323.1301023611111 +a=6377295.664 +b=6356094.667915204 +units=m +no_defs ', - "EPSG:3169":'+proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3170":'+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3171":'+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3172":'+proj=utm +zone=59 +south +ellps=intl +towgs84=287.58,177.78,-135.41,0,0,0,0 +units=m +no_defs ', - "EPSG:3174":'+proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568977 +lon_0=-84.455955 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3175":'+proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568977 +lon_0=-83.248627 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3176":'+proj=tmerc +lat_0=0 +lon_0=106 +k=0.9996 +x_0=500000 +y_0=0 +a=6377276.345 +b=6356075.41314024 +towgs84=198,881,317,0,0,0,0 +units=m +no_defs ', - "EPSG:3177":'+proj=tmerc +lat_0=0 +lon_0=17 +k=0.9965000000000001 +x_0=1000000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3178":'+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3179":'+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3180":'+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3181":'+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3182":'+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3183":'+proj=utm +zone=23 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3184":'+proj=utm +zone=24 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3185":'+proj=utm +zone=25 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3186":'+proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3187":'+proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3188":'+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3189":'+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3190":'+proj=tmerc +lat_0=0 +lon_0=9 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3191":'+proj=tmerc +lat_0=0 +lon_0=11 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3192":'+proj=tmerc +lat_0=0 +lon_0=13 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3193":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3194":'+proj=tmerc +lat_0=0 +lon_0=17 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3195":'+proj=tmerc +lat_0=0 +lon_0=19 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3196":'+proj=tmerc +lat_0=0 +lon_0=21 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3197":'+proj=tmerc +lat_0=0 +lon_0=23 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3198":'+proj=tmerc +lat_0=0 +lon_0=25 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3199":'+proj=utm +zone=32 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3200":'+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +towgs84=-241.54,-163.64,396.06,0,0,0,0 +units=m +no_defs ', - "EPSG:3201":'+proj=utm +zone=33 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3202":'+proj=utm +zone=34 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3203":'+proj=utm +zone=35 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3204":'+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3205":'+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-54 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3206":'+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-42 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3207":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-174 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3208":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3209":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-54 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3210":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=42 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3211":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=54 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3212":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=66 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3213":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=78 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3214":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=90 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3215":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=102 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3216":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=114 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3217":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=126 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3218":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=138 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3219":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=150 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3220":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=162 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3221":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-102 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3222":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-90 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3223":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-78 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3224":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3225":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-18 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3226":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-6 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3227":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=6 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3228":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=18 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3229":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=30 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3230":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=42 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3231":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=54 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3232":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=66 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3233":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=78 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3234":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=90 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3235":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=102 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3236":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=114 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3237":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=126 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3238":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=138 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3239":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=150 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3240":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=162 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3241":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=174 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3242":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-153 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3243":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-135 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3244":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-117 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3245":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-99 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3246":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-81 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3247":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-63 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3248":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-27 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3249":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-9 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3250":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=9 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3251":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=27 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3252":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=45 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3253":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=63 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3254":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=81 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3255":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=99 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3256":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=117 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3257":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=135 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3258":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=153 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3259":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=171 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3260":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-168 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3261":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-144 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3262":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-120 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3263":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-96 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3264":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-72 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3265":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-48 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3266":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-24 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3267":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3268":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=24 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3269":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=48 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3270":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=72 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3271":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=96 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3272":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=120 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3273":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=144 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3274":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=168 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3275":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-165 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3276":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-135 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3277":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-105 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3278":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-75 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3279":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3280":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-15 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3281":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=15 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3282":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=45 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3283":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=75 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3284":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=105 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3285":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=135 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3286":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=165 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3287":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-150 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3288":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-90 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3289":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-30 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3290":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=30 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3291":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=90 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3292":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=150 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3293":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3294":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-78 +lon_0=162 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3296":'+proj=utm +zone=5 +south +ellps=GRS80 +towgs84=0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +units=m +no_defs ', - "EPSG:3297":'+proj=utm +zone=6 +south +ellps=GRS80 +towgs84=0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +units=m +no_defs ', - "EPSG:3298":'+proj=utm +zone=7 +south +ellps=GRS80 +towgs84=0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +units=m +no_defs ', - "EPSG:3299":'+proj=utm +zone=8 +south +ellps=GRS80 +towgs84=0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +units=m +no_defs ', - "EPSG:3300":'+proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.51755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014 +units=m +no_defs ', - "EPSG:3301":'+proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.51755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3302":'+proj=utm +zone=7 +south +ellps=intl +towgs84=410.721,55.049,80.746,2.5779,2.3514,0.6664,17.3311 +units=m +no_defs ', - "EPSG:3303":'+proj=utm +zone=7 +south +ellps=intl +towgs84=347.103,1078.12,2623.92,-33.8875,70.6773,-9.3943,186.074 +units=m +no_defs ', - "EPSG:3304":'+proj=utm +zone=6 +south +ellps=intl +towgs84=221.525,152.948,176.768,-2.3847,-1.3896,-0.877,11.4741 +units=m +no_defs ', - "EPSG:3305":'+proj=utm +zone=6 +south +ellps=intl +towgs84=215.525,149.593,176.229,-3.2624,-1.692,-1.1571,10.4773 +units=m +no_defs ', - "EPSG:3306":'+proj=utm +zone=5 +south +ellps=intl +towgs84=217.037,86.959,23.956,0,0,0,0 +units=m +no_defs ', - "EPSG:3307":'+proj=utm +zone=39 +ellps=WGS84 +towgs84=0,-0.15,0.68,0,0,0,0 +units=m +no_defs ', - "EPSG:3308":'+proj=lcc +lat_1=-30.75 +lat_2=-35.75 +lat_0=-33.25 +lon_0=147 +x_0=9300000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3309":'+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +datum=NAD27 +units=m +no_defs ', - "EPSG:3310":'+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3311":'+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3312":'+proj=utm +zone=21 +ellps=intl +towgs84=-186,230,110,0,0,0,0 +units=m +no_defs ', - "EPSG:3313":'+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3314":'+proj=lcc +lat_1=-6.5 +lat_2=-11.5 +lat_0=0 +lon_0=26 +x_0=0 +y_0=0 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs ', - "EPSG:3315":'+proj=tmerc +lat_0=-9 +lon_0=26 +k=0.9998 +x_0=0 +y_0=0 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs ', - "EPSG:3316":'+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3317":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3318":'+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3319":'+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3320":'+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3321":'+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3322":'+proj=tmerc +lat_0=0 +lon_0=20 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3323":'+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3324":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3325":'+proj=tmerc +lat_0=0 +lon_0=26 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3326":'+proj=tmerc +lat_0=0 +lon_0=28 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3327":'+proj=tmerc +lat_0=0 +lon_0=30 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3328":'+proj=sterea +lat_0=52.16666666666666 +lon_0=19.16666666666667 +k=0.999714 +x_0=500000 +y_0=500000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3329":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3330":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3331":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3332":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3333":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3334":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3335":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3336":'+proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,103,0,0,0,0 +units=m +no_defs ', - "EPSG:3337":'+proj=lcc +lat_1=-20.19506944444445 +lat_0=-20.19506944444445 +lon_0=57.52182777777778 +k_0=1 +x_0=1000000 +y_0=1000000 +ellps=clrk80 +towgs84=-770.1,158.4,-498.2,0,0,0,0 +units=m +no_defs ', - "EPSG:3338":'+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3339":'+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs ', - "EPSG:3340":'+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs ', - "EPSG:3341":'+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs ', - "EPSG:3342":'+proj=utm +zone=33 +south +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs ', - "EPSG:3343":'+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3344":'+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3345":'+proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3346":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3347":'+proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675 +lon_0=-91.86666666666666 +x_0=6200000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3348":'+proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675 +lon_0=-91.86666666666666 +x_0=6200000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3349":'+proj=merc +lon_0=-150 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3350":'+proj=tmerc +lat_0=0.1 +lon_0=21.95 +k=1 +x_0=250000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:3351":'+proj=tmerc +lat_0=0.1 +lon_0=24.95 +k=1 +x_0=1250000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:3352":'+proj=tmerc +lat_0=0.1 +lon_0=27.95 +k=1 +x_0=2250000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:3353":'+proj=utm +zone=32 +south +ellps=intl +units=m +no_defs ', - "EPSG:3354":'+proj=utm +zone=32 +south +ellps=intl +units=m +no_defs ', - "EPSG:3355":'+proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=810000 +ellps=helmert +towgs84=-146.21,112.63,4.05,0,0,0,0 +units=m +no_defs ', - "EPSG:3356":'+proj=utm +zone=17 +ellps=clrk66 +towgs84=-179.483,-69.379,-27.584,-7.862,8.163,6.042,-13.925 +units=m +no_defs ', - "EPSG:3357":'+proj=utm +zone=17 +ellps=clrk66 +towgs84=8.853,-52.644,180.304,-0.393,-2.323,2.96,-24.081 +units=m +no_defs ', - "EPSG:3358":'+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3359":'+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024385 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3360":'+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3361":'+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3362":'+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3363":'+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3364":'+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3365":'+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3366":'+proj=cass +lat_0=22.31213333333334 +lon_0=114.1785555555556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=6378293.645208759 +b=6356617.987679838 +units=m +no_defs ', - "EPSG:3367":'+proj=utm +zone=28 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3368":'+proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3369":'+proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3370":'+proj=utm +zone=59 +datum=NAD27 +units=m +no_defs ', - "EPSG:3371":'+proj=utm +zone=60 +datum=NAD27 +units=m +no_defs ', - "EPSG:3372":'+proj=utm +zone=59 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3373":'+proj=utm +zone=60 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3374":'+proj=utm +zone=29 +ellps=intl +units=m +no_defs ', - "EPSG:3375":'+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257964666666 +k=0.99984 +x_0=804671 +y_0=0 +no_uoff +gamma=323.1301023611111 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3376":'+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31580995 +k=0.99984 +x_0=0 +y_0=0 +no_uoff +gamma=53.13010236111111 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3377":'+proj=cass +lat_0=2.121679744444445 +lon_0=103.4279362361111 +x_0=-14810.562 +y_0=8758.32 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3378":'+proj=cass +lat_0=2.682347636111111 +lon_0=101.9749050416667 +x_0=3673.785 +y_0=-4240.573 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3379":'+proj=cass +lat_0=3.769388088888889 +lon_0=102.3682989833333 +x_0=-7368.228 +y_0=6485.858 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3380":'+proj=cass +lat_0=3.68464905 +lon_0=101.3891079138889 +x_0=-34836.161 +y_0=56464.049 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3381":'+proj=cass +lat_0=4.9762852 +lon_0=103.070275625 +x_0=19594.245 +y_0=3371.895 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3382":'+proj=cass +lat_0=5.421517541666667 +lon_0=100.3443769638889 +x_0=-23.414 +y_0=62.283 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3383":'+proj=cass +lat_0=5.964672713888889 +lon_0=100.6363711111111 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3384":'+proj=cass +lat_0=4.859063022222222 +lon_0=100.8154105861111 +x_0=-1.769 +y_0=133454.779 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3385":'+proj=cass +lat_0=5.972543658333334 +lon_0=102.2952416694444 +x_0=13227.851 +y_0=8739.894 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3386":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +units=m +no_defs ', - "EPSG:3387":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=5500000 +y_0=0 +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +units=m +no_defs ', - "EPSG:3388":'+proj=merc +lon_0=51 +lat_ts=42 +x_0=0 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:3389":'+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:3390":'+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:3391":'+proj=utm +zone=37 +ellps=clrk80 +towgs84=70.995,-335.916,262.898,0,0,0,0 +units=m +no_defs ', - "EPSG:3392":'+proj=utm +zone=38 +ellps=clrk80 +towgs84=70.995,-335.916,262.898,0,0,0,0 +units=m +no_defs ', - "EPSG:3393":'+proj=utm +zone=39 +ellps=clrk80 +towgs84=70.995,-335.916,262.898,0,0,0,0 +units=m +no_defs ', - "EPSG:3394":'+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3395":'+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3396":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:3397":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:3398":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:3399":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:3400":'+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3401":'+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3402":'+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3403":'+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3404":'+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3405":'+proj=utm +zone=48 +ellps=WGS84 +towgs84=-192.873,-39.382,-111.202,-0.00205,-0.0005,0.00335,0.0188 +units=m +no_defs ', - "EPSG:3406":'+proj=utm +zone=49 +ellps=WGS84 +towgs84=-192.873,-39.382,-111.202,-0.00205,-0.0005,0.00335,0.0188 +units=m +no_defs ', - "EPSG:3407":'+proj=cass +lat_0=22.31213333333334 +lon_0=114.1785555555556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.3047972654 +no_defs ', - "EPSG:3408":'+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m +no_defs ', - "EPSG:3409":'+proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m +no_defs ', - "EPSG:3410":'+proj=cea +lon_0=0 +lat_ts=30 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m +no_defs ', - "EPSG:3411":'+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs ', - "EPSG:3412":'+proj=stere +lat_0=-90 +lat_ts=-70 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs ', - "EPSG:3413":'+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3414":'+proj=tmerc +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +units=m +no_defs ', - "EPSG:3415":'+proj=lcc +lat_1=18 +lat_2=24 +lat_0=21 +lon_0=114 +x_0=500000 +y_0=500000 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:3416":'+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3417":'+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3418":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3419":'+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3420":'+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3421":'+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3422":'+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3423":'+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3424":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3425":'+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3426":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3427":'+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3428":'+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3429":'+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3430":'+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3431":'+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3432":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3433":'+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3434":'+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3435":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3436":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3437":'+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3438":'+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3439":'+proj=utm +zone=39 +ellps=clrk80 +towgs84=-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.7101 +units=m +no_defs ', - "EPSG:3440":'+proj=utm +zone=40 +ellps=clrk80 +towgs84=-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.7101 +units=m +no_defs ', - "EPSG:3441":'+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3442":'+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3443":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3444":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3445":'+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3446":'+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3447":'+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=50.797815 +lon_0=4.359215833333333 +x_0=150328 +y_0=166262 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3448":'+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=750000 +y_0=650000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3449":'+proj=utm +zone=17 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3450":'+proj=utm +zone=18 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3451":'+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3452":'+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3453":'+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3454":'+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3455":'+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3456":'+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3457":'+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3458":'+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3459":'+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3460":'+proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.99985 +x_0=2000000 +y_0=4000000 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:3461":'+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +units=m +no_defs ', - "EPSG:3462":'+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +units=m +no_defs ', - "EPSG:3463":'+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3464":'+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3465":'+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3466":'+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3467":'+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3468":'+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +no_uoff +gamma=323.1301023611111 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3469":'+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3470":'+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3471":'+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3472":'+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3473":'+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3474":'+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3475":'+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3476":'+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3477":'+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3478":'+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3479":'+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3480":'+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3481":'+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3482":'+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3483":'+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3484":'+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3485":'+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3486":'+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3487":'+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3488":'+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3489":'+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3490":'+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3491":'+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3492":'+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3493":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3494":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3495":'+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3496":'+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3497":'+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3498":'+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3499":'+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3500":'+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3501":'+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3502":'+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3503":'+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3504":'+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3505":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3506":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3507":'+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3508":'+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3509":'+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3510":'+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3511":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3512":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3513":'+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3514":'+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3515":'+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3516":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3517":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3518":'+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3519":'+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3520":'+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3521":'+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3522":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3523":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3524":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3525":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3526":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3527":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3528":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3529":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3530":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3531":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3532":'+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3533":'+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3534":'+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3535":'+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3536":'+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3537":'+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3538":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3539":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3540":'+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3541":'+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3542":'+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3543":'+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3544":'+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3545":'+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3546":'+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3547":'+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3548":'+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3549":'+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3550":'+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3551":'+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3552":'+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3553":'+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3554":'+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3555":'+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3556":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3557":'+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3558":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3559":'+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3560":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3561":'+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=61,-285,-181,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3562":'+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=61,-285,-181,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3563":'+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=61,-285,-181,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3564":'+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=61,-285,-181,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3565":'+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=61,-285,-181,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3566":'+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3567":'+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3568":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3569":'+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3570":'+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3571":'+proj=laea +lat_0=90 +lon_0=180 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3572":'+proj=laea +lat_0=90 +lon_0=-150 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3573":'+proj=laea +lat_0=90 +lon_0=-100 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3574":'+proj=laea +lat_0=90 +lon_0=-40 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3575":'+proj=laea +lat_0=90 +lon_0=10 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3576":'+proj=laea +lat_0=90 +lon_0=90 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3577":'+proj=aea +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=132 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3578":'+proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +lon_0=-132.5 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3579":'+proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +lon_0=-132.5 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3580":'+proj=lcc +lat_1=62 +lat_2=70 +lat_0=0 +lon_0=-112 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3581":'+proj=lcc +lat_1=62 +lat_2=70 +lat_0=0 +lon_0=-112 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3582":'+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3583":'+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3584":'+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3585":'+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3586":'+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3587":'+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3588":'+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3589":'+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3590":'+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3591":'+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +no_uoff +gamma=337.25556 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3592":'+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3593":'+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3594":'+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3595":'+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3596":'+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3597":'+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3598":'+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3599":'+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3600":'+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3601":'+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3602":'+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3603":'+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3604":'+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3605":'+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3606":'+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3607":'+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3608":'+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3609":'+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3610":'+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3611":'+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3612":'+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3613":'+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3614":'+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3615":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3616":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3617":'+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3618":'+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3619":'+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3620":'+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3621":'+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3622":'+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3623":'+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3624":'+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3625":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3626":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3627":'+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3628":'+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3629":'+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3630":'+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3631":'+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3632":'+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3633":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3634":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3635":'+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3636":'+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3637":'+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3638":'+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3639":'+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3640":'+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3641":'+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3642":'+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3643":'+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3644":'+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3645":'+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3646":'+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3647":'+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3648":'+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3649":'+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3650":'+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3651":'+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3652":'+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3653":'+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3654":'+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3655":'+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3656":'+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3657":'+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3658":'+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3659":'+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3660":'+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3661":'+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3662":'+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3663":'+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3664":'+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3665":'+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3666":'+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3667":'+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3668":'+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3669":'+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3670":'+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3671":'+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3672":'+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3673":'+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3674":'+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3675":'+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3676":'+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3677":'+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3678":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3679":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3680":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3681":'+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3682":'+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3683":'+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3684":'+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3685":'+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3686":'+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3687":'+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3688":'+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3689":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3690":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3691":'+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3692":'+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3693":'+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3694":'+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3695":'+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3696":'+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3697":'+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3698":'+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3699":'+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3700":'+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3701":'+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3702":'+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3703":'+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3704":'+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3705":'+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3706":'+proj=utm +zone=59 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3707":'+proj=utm +zone=60 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3708":'+proj=utm +zone=1 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3709":'+proj=utm +zone=2 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3710":'+proj=utm +zone=3 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3711":'+proj=utm +zone=4 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3712":'+proj=utm +zone=5 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3713":'+proj=utm +zone=6 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3714":'+proj=utm +zone=7 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3715":'+proj=utm +zone=8 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3716":'+proj=utm +zone=9 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3717":'+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3718":'+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3719":'+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3720":'+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3721":'+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3722":'+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3723":'+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3724":'+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3725":'+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3726":'+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3727":'+proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333333333 +k=1 +x_0=160000 +y_0=50000 +ellps=intl +towgs84=94,-948,-1262,0,0,0,0 +units=m +no_defs ', - "EPSG:3728":'+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3729":'+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3730":'+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3731":'+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3732":'+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3733":'+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3734":'+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3735":'+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3736":'+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3737":'+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3738":'+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3739":'+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3740":'+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3741":'+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3742":'+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3743":'+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3744":'+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3745":'+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3746":'+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3747":'+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3748":'+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3749":'+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3750":'+proj=utm +zone=4 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3751":'+proj=utm +zone=5 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3752":'+proj=merc +lon_0=100 +lat_ts=-41 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3753":'+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3754":'+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3755":'+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3756":'+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3757":'+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3758":'+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3759":'+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3760":'+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3761":'+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3762":'+proj=lcc +lat_1=-54 +lat_2=-54.75 +lat_0=-55 +lon_0=-37 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3763":'+proj=tmerc +lat_0=39.66825833333333 +lon_0=-8.133108333333334 +k=1 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3764":'+proj=tmerc +lat_0=-44 +lon_0=-176.5 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3765":'+proj=tmerc +lat_0=0 +lon_0=16.5 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3766":'+proj=lcc +lat_1=45.91666666666666 +lat_2=43.08333333333334 +lat_0=0 +lon_0=16.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3767":'+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3768":'+proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3769":'+proj=utm +zone=20 +ellps=clrk66 +towgs84=-73,213,296,0,0,0,0 +units=m +no_defs ', - "EPSG:3770":'+proj=tmerc +lat_0=32 +lon_0=-64.75 +k=1 +x_0=550000 +y_0=100000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3771":'+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9999 +x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:3772":'+proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:3773":'+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:3774":'+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:3775":'+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3776":'+proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3777":'+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3778":'+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3779":'+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3780":'+proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3781":'+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3782":'+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3783":'+proj=tmerc +lat_0=-25.06855261111111 +lon_0=-130.1129671111111 +k=1 +x_0=14200 +y_0=15500 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3784":'+proj=utm +zone=9 +south +ellps=intl +towgs84=185,165,42,0,0,0,0 +units=m +no_defs ', - "EPSG:3785":'+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs', - "EPSG:3786":'+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371007 +b=6371007 +units=m +no_defs ', - "EPSG:3787":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:3788":'+proj=tmerc +lat_0=0 +lon_0=166 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3789":'+proj=tmerc +lat_0=0 +lon_0=169 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3790":'+proj=tmerc +lat_0=0 +lon_0=179 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3791":'+proj=tmerc +lat_0=0 +lon_0=-178 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3793":'+proj=tmerc +lat_0=0 +lon_0=-176.5 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3794":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3795":'+proj=lcc +lat_1=23 +lat_2=21.7 +lat_0=22.35 +lon_0=-81 +x_0=500000 +y_0=280296.016 +datum=NAD27 +units=m +no_defs ', - "EPSG:3796":'+proj=lcc +lat_1=21.3 +lat_2=20.13333333333333 +lat_0=20.71666666666667 +lon_0=-76.83333333333333 +x_0=500000 +y_0=229126.939 +datum=NAD27 +units=m +no_defs ', - "EPSG:3797":'+proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0=800000 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:3798":'+proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3799":'+proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3800":'+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:3801":'+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3802":'+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3812":'+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=50.797815 +lon_0=4.359215833333333 +x_0=649328 +y_0=665262 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3814":'+proj=tmerc +lat_0=32.5 +lon_0=-89.75 +k=0.9998335 +x_0=500000 +y_0=1300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3815":'+proj=tmerc +lat_0=32.5 +lon_0=-89.75 +k=0.9998335 +x_0=500000 +y_0=1300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3816":'+proj=tmerc +lat_0=32.5 +lon_0=-89.75 +k=0.9998335 +x_0=500000 +y_0=1300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3825":'+proj=tmerc +lat_0=0 +lon_0=119 +k=0.9999 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3826":'+proj=tmerc +lat_0=0 +lon_0=121 +k=0.9999 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3827":'+proj=tmerc +lat_0=0 +lon_0=119 +k=0.9999 +x_0=250000 +y_0=0 +ellps=aust_SA +units=m +no_defs ', - "EPSG:3828":'+proj=tmerc +lat_0=0 +lon_0=121 +k=0.9999 +x_0=250000 +y_0=0 +ellps=aust_SA +units=m +no_defs ', - "EPSG:3829":'+proj=utm +zone=51 +ellps=intl +towgs84=-637,-549,-203,0,0,0,0 +units=m +no_defs ', - "EPSG:3832":'+proj=merc +lon_0=150 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3833":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3834":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:3835":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:3836":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:3837":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3838":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3839":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3840":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3841":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:3842":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:3843":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:3844":'+proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 +y_0=500000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3845":'+proj=tmerc +lat_0=0 +lon_0=11.30625 +k=1.000006 +x_0=1500025.141 +y_0=-667.282 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3846":'+proj=tmerc +lat_0=0 +lon_0=13.55626666666667 +k=1.0000058 +x_0=1500044.695 +y_0=-667.13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3847":'+proj=tmerc +lat_0=0 +lon_0=15.80628452944445 +k=1.00000561024 +x_0=1500064.274 +y_0=-667.711 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3848":'+proj=tmerc +lat_0=0 +lon_0=18.0563 +k=1.0000054 +x_0=1500083.521 +y_0=-668.8440000000001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3849":'+proj=tmerc +lat_0=0 +lon_0=20.30631666666667 +k=1.0000052 +x_0=1500102.765 +y_0=-670.706 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3850":'+proj=tmerc +lat_0=0 +lon_0=22.55633333333333 +k=1.0000049 +x_0=1500121.846 +y_0=-672.557 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3851":'+proj=lcc +lat_1=-37.5 +lat_2=-44.5 +lat_0=-41 +lon_0=173 +x_0=3000000 +y_0=7000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3852":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=157 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3854":'+proj=tmerc +lat_0=0 +lon_0=18.05787 +k=0.99999506 +x_0=100182.7406 +y_0=-6500620.1207 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - //"EPSG:3857":'+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs', - "EPSG:3873":'+proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=19500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3874":'+proj=tmerc +lat_0=0 +lon_0=20 +k=1 +x_0=20500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3875":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=21500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3876":'+proj=tmerc +lat_0=0 +lon_0=22 +k=1 +x_0=22500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3877":'+proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=23500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3878":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=24500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3879":'+proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=25500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3880":'+proj=tmerc +lat_0=0 +lon_0=26 +k=1 +x_0=26500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3881":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=27500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3882":'+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=28500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3883":'+proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=29500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3884":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=30500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3885":'+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=31500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3890":'+proj=utm +zone=37 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3891":'+proj=utm +zone=38 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3892":'+proj=utm +zone=39 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3893":'+proj=tmerc +lat_0=29.02626833333333 +lon_0=46.5 +k=0.9994 +x_0=800000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:3907":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m +no_defs ', - "EPSG:3908":'+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=6500000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m +no_defs ', - "EPSG:3909":'+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m +no_defs ', - "EPSG:3910":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=8500000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m +no_defs ', - "EPSG:3911":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m +no_defs ', - "EPSG:3912":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m +no_defs ', - "EPSG:3920":'+proj=utm +zone=20 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +units=m +no_defs ', - "EPSG:3942":'+proj=lcc +lat_1=41.25 +lat_2=42.75 +lat_0=42 +lon_0=3 +x_0=1700000 +y_0=1200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3943":'+proj=lcc +lat_1=42.25 +lat_2=43.75 +lat_0=43 +lon_0=3 +x_0=1700000 +y_0=2200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3944":'+proj=lcc +lat_1=43.25 +lat_2=44.75 +lat_0=44 +lon_0=3 +x_0=1700000 +y_0=3200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3945":'+proj=lcc +lat_1=44.25 +lat_2=45.75 +lat_0=45 +lon_0=3 +x_0=1700000 +y_0=4200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3946":'+proj=lcc +lat_1=45.25 +lat_2=46.75 +lat_0=46 +lon_0=3 +x_0=1700000 +y_0=5200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3947":'+proj=lcc +lat_1=46.25 +lat_2=47.75 +lat_0=47 +lon_0=3 +x_0=1700000 +y_0=6200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3948":'+proj=lcc +lat_1=47.25 +lat_2=48.75 +lat_0=48 +lon_0=3 +x_0=1700000 +y_0=7200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3949":'+proj=lcc +lat_1=48.25 +lat_2=49.75 +lat_0=49 +lon_0=3 +x_0=1700000 +y_0=8200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3950":'+proj=lcc +lat_1=49.25 +lat_2=50.75 +lat_0=50 +lon_0=3 +x_0=1700000 +y_0=9200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3968":'+proj=lcc +lat_1=37 +lat_2=39.5 +lat_0=36 +lon_0=-79.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3969":'+proj=lcc +lat_1=37 +lat_2=39.5 +lat_0=36 +lon_0=-79.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3970":'+proj=lcc +lat_1=37 +lat_2=39.5 +lat_0=36 +lon_0=-79.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3973":'+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3974":'+proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3975":'+proj=cea +lon_0=0 +lat_ts=30 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3976":'+proj=stere +lat_0=-90 +lat_ts=-70 +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3978":'+proj=lcc +lat_1=49 +lat_2=77 +lat_0=49 +lon_0=-95 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3979":'+proj=lcc +lat_1=49 +lat_2=77 +lat_0=49 +lon_0=-95 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3985":'+proj=lcc +lat_1=-6.5 +lat_2=-11.5 +lat_0=9 +lon_0=26 +x_0=500000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs ', - "EPSG:3986":'+proj=tmerc +lat_0=-9 +lon_0=30 +k=1 +x_0=200000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs ', - "EPSG:3987":'+proj=tmerc +lat_0=-9 +lon_0=28 +k=1 +x_0=200000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs ', - "EPSG:3988":'+proj=tmerc +lat_0=-9 +lon_0=26 +k=1 +x_0=200000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs ', - "EPSG:3989":'+proj=tmerc +lat_0=-9 +lon_0=24 +k=1 +x_0=200000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs ', - "EPSG:3991":'+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3992":'+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=30480.06096012192 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3994":'+proj=merc +lon_0=100 +lat_ts=-41 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3995":'+proj=stere +lat_0=90 +lat_ts=71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3996":'+proj=stere +lat_0=90 +lat_ts=75 +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3997":'+proj=tmerc +lat_0=0 +lon_0=55.33333333333334 +k=1 +x_0=500000 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:4026":'+proj=tmerc +lat_0=0 +lon_0=28.4 +k=0.9999400000000001 +x_0=200000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4037":'+proj=utm +zone=35 +datum=WGS84 +units=m +no_defs ', - "EPSG:4038":'+proj=utm +zone=36 +datum=WGS84 +units=m +no_defs ', - "EPSG:4048":'+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4049":'+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4050":'+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4051":'+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4056":'+proj=tmerc +lat_0=0 +lon_0=20 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4057":'+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4058":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4059":'+proj=tmerc +lat_0=0 +lon_0=26 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4060":'+proj=tmerc +lat_0=0 +lon_0=28 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4061":'+proj=utm +zone=33 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4062":'+proj=utm +zone=34 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4063":'+proj=utm +zone=35 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4071":'+proj=utm +zone=23 +south +ellps=intl +towgs84=-134,229,-29,0,0,0,0 +units=m +no_defs ', - "EPSG:4082":'+proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4083":'+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4087":'+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:4088":'+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371007 +b=6371007 +units=m +no_defs ', - "EPSG:4093":'+proj=tmerc +lat_0=0 +lon_0=9 +k=0.99998 +x_0=200000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4094":'+proj=tmerc +lat_0=0 +lon_0=10 +k=0.99998 +x_0=400000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4095":'+proj=tmerc +lat_0=0 +lon_0=11.75 +k=0.99998 +x_0=600000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4096":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=800000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4217":'+proj=tmerc +lat_0=0 +lon_0=171 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4399":'+proj=tmerc +lat_0=0 +lon_0=171 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4400":'+proj=tmerc +lat_0=0 +lon_0=177 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4401":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4402":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4403":'+proj=tmerc +lat_0=0 +lon_0=-165 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4404":'+proj=tmerc +lat_0=0 +lon_0=-159 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4405":'+proj=tmerc +lat_0=0 +lon_0=-153 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4406":'+proj=tmerc +lat_0=0 +lon_0=-147 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4407":'+proj=tmerc +lat_0=0 +lon_0=-141 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4408":'+proj=tmerc +lat_0=0 +lon_0=-135 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4409":'+proj=tmerc +lat_0=0 +lon_0=-129 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4410":'+proj=tmerc +lat_0=0 +lon_0=-123 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4411":'+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4412":'+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4413":'+proj=tmerc +lat_0=0 +lon_0=-105 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4414":'+proj=tmerc +lat_0=13.5 +lon_0=144.75 +k=1 +x_0=100000 +y_0=200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4415":'+proj=lcc +lat_1=-6.5 +lat_2=-11.5 +lat_0=-9 +lon_0=26 +x_0=500000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs ', - "EPSG:4417":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:4418":'+proj=tmerc +lat_0=0 +lon_0=-75 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4419":'+proj=tmerc +lat_0=0 +lon_0=-69 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4420":'+proj=tmerc +lat_0=0 +lon_0=177 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4421":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4422":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4423":'+proj=tmerc +lat_0=0 +lon_0=-165 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4424":'+proj=tmerc +lat_0=0 +lon_0=-159 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4425":'+proj=tmerc +lat_0=0 +lon_0=-153 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4426":'+proj=tmerc +lat_0=0 +lon_0=-147 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4427":'+proj=tmerc +lat_0=0 +lon_0=-141 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4428":'+proj=tmerc +lat_0=0 +lon_0=-135 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4429":'+proj=tmerc +lat_0=0 +lon_0=-129 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4430":'+proj=tmerc +lat_0=0 +lon_0=-123 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4431":'+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4432":'+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4433":'+proj=tmerc +lat_0=0 +lon_0=-105 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4434":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:4437":'+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4438":'+proj=tmerc +lat_0=0 +lon_0=-75 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4439":'+proj=tmerc +lat_0=0 +lon_0=-69 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4455":'+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4456":'+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.5 +lon_0=-74 +x_0=609601.2192024384 +y_0=30480.06096012192 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4457":'+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4462":'+proj=lcc +lat_1=-18 +lat_2=-36 +lat_0=-27 +lon_0=132 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:4467":'+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4471":'+proj=utm +zone=38 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4474":'+proj=utm +zone=38 +south +ellps=intl +towgs84=-382,-59,-262,0,0,0,0 +units=m +no_defs ', - "EPSG:4484":'+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4485":'+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4486":'+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4487":'+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4488":'+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4489":'+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4491":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4492":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4493":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4494":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4495":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4496":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4497":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4498":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4499":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4500":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4501":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4502":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4503":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4504":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4505":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4506":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4507":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4508":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4509":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4510":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4511":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4512":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4513":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4514":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4515":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4516":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4517":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4518":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4519":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4520":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4521":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4522":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4523":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4524":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4525":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4526":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4527":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4528":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4529":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4530":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4531":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4532":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4533":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4534":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4535":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4536":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4537":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4538":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4539":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4540":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4541":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4542":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4543":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4544":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4545":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4546":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4547":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4548":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4549":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4550":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4551":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4552":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4553":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4554":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4559":'+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4568":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4569":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4570":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4571":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4572":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4573":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4574":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4575":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4576":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4577":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4578":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4579":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4580":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4581":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4582":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4583":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4584":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4585":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4586":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4587":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4588":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4589":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4647":'+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=32500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4652":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4653":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4654":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4655":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4656":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4766":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4767":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4768":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4769":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4770":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4771":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4772":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4773":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4774":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4775":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4776":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4777":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4778":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4779":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4780":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4781":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4782":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4783":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4784":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4785":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4786":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4787":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4788":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4789":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4790":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4791":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4792":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4793":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4794":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4795":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4796":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4797":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4798":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4799":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4800":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4812":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4822":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4826":'+proj=lcc +lat_1=15 +lat_2=16.66666666666667 +lat_0=15.83333333333333 +lon_0=-24 +x_0=161587.83 +y_0=128511.202 +datum=WGS84 +units=m +no_defs ', - "EPSG:4839":'+proj=lcc +lat_1=48.66666666666666 +lat_2=53.66666666666666 +lat_0=51 +lon_0=10.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4855":'+proj=tmerc +lat_0=0 +lon_0=5.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4856":'+proj=tmerc +lat_0=0 +lon_0=6.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4857":'+proj=tmerc +lat_0=0 +lon_0=7.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4858":'+proj=tmerc +lat_0=0 +lon_0=8.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4859":'+proj=tmerc +lat_0=0 +lon_0=9.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4860":'+proj=tmerc +lat_0=0 +lon_0=10.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4861":'+proj=tmerc +lat_0=0 +lon_0=11.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4862":'+proj=tmerc +lat_0=0 +lon_0=12.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4863":'+proj=tmerc +lat_0=0 +lon_0=13.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4864":'+proj=tmerc +lat_0=0 +lon_0=14.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4865":'+proj=tmerc +lat_0=0 +lon_0=15.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4866":'+proj=tmerc +lat_0=0 +lon_0=16.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4867":'+proj=tmerc +lat_0=0 +lon_0=17.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4868":'+proj=tmerc +lat_0=0 +lon_0=18.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4869":'+proj=tmerc +lat_0=0 +lon_0=19.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4870":'+proj=tmerc +lat_0=0 +lon_0=20.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4871":'+proj=tmerc +lat_0=0 +lon_0=21.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4872":'+proj=tmerc +lat_0=0 +lon_0=22.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4873":'+proj=tmerc +lat_0=0 +lon_0=23.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4874":'+proj=tmerc +lat_0=0 +lon_0=24.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4875":'+proj=tmerc +lat_0=0 +lon_0=25.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4876":'+proj=tmerc +lat_0=0 +lon_0=26.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4877":'+proj=tmerc +lat_0=0 +lon_0=27.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4878":'+proj=tmerc +lat_0=0 +lon_0=28.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4879":'+proj=tmerc +lat_0=0 +lon_0=29.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4880":'+proj=tmerc +lat_0=0 +lon_0=30.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5014":'+proj=utm +zone=25 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5015":'+proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5016":'+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5018":'+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=0 +y_0=0 +ellps=intl +towgs84=-304.046,-60.576,103.64,0,0,0,0 +units=m +no_defs ', - "EPSG:5041":'+proj=stere +lat_0=90 +lat_ts=90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:5042":'+proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:5048":'+proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5069":'+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:5070":'+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5071":'+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5072":'+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5105":'+proj=tmerc +lat_0=58 +lon_0=5.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5106":'+proj=tmerc +lat_0=58 +lon_0=6.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5107":'+proj=tmerc +lat_0=58 +lon_0=7.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5108":'+proj=tmerc +lat_0=58 +lon_0=8.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5109":'+proj=tmerc +lat_0=58 +lon_0=9.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5110":'+proj=tmerc +lat_0=58 +lon_0=10.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5111":'+proj=tmerc +lat_0=58 +lon_0=11.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5112":'+proj=tmerc +lat_0=58 +lon_0=12.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5113":'+proj=tmerc +lat_0=58 +lon_0=13.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5114":'+proj=tmerc +lat_0=58 +lon_0=14.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5115":'+proj=tmerc +lat_0=58 +lon_0=15.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5116":'+proj=tmerc +lat_0=58 +lon_0=16.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5117":'+proj=tmerc +lat_0=58 +lon_0=17.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5118":'+proj=tmerc +lat_0=58 +lon_0=18.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5119":'+proj=tmerc +lat_0=58 +lon_0=19.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5120":'+proj=tmerc +lat_0=58 +lon_0=20.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5121":'+proj=tmerc +lat_0=58 +lon_0=21.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5122":'+proj=tmerc +lat_0=58 +lon_0=22.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5123":'+proj=tmerc +lat_0=58 +lon_0=23.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5124":'+proj=tmerc +lat_0=58 +lon_0=24.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5125":'+proj=tmerc +lat_0=58 +lon_0=25.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5126":'+proj=tmerc +lat_0=58 +lon_0=26.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5127":'+proj=tmerc +lat_0=58 +lon_0=27.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5128":'+proj=tmerc +lat_0=58 +lon_0=28.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5129":'+proj=tmerc +lat_0=58 +lon_0=29.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5130":'+proj=tmerc +lat_0=58 +lon_0=30.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5167":'+proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:5168":'+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=550000 +ellps=bessel +units=m +no_defs ', - "EPSG:5169":'+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:5170":'+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:5171":'+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:5172":'+proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:5173":'+proj=tmerc +lat_0=38 +lon_0=125.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:5174":'+proj=tmerc +lat_0=38 +lon_0=127.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:5175":'+proj=tmerc +lat_0=38 +lon_0=127.0028902777778 +k=1 +x_0=200000 +y_0=550000 +ellps=bessel +units=m +no_defs ', - "EPSG:5176":'+proj=tmerc +lat_0=38 +lon_0=129.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:5177":'+proj=tmerc +lat_0=38 +lon_0=131.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:5178":'+proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=1000000 +y_0=2000000 +ellps=bessel +units=m +no_defs ', - "EPSG:5179":'+proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5180":'+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5181":'+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5182":'+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=550000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5183":'+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5184":'+proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5185":'+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5186":'+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5187":'+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5188":'+proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5221":'+proj=krovak +lat_0=49.5 +lon_0=42.5 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=589,76,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:5223":'+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:5234":'+proj=tmerc +lat_0=7.000480277777778 +lon_0=80.77171111111112 +k=0.9999238418 +x_0=200000 +y_0=200000 +a=6377276.345 +b=6356075.41314024 +towgs84=-97,787,86,0,0,0,0 +units=m +no_defs ', - "EPSG:5235":'+proj=tmerc +lat_0=7.000471527777778 +lon_0=80.77171308333334 +k=0.9999238418 +x_0=500000 +y_0=500000 +a=6377276.345 +b=6356075.41314024 +towgs84=-0.293,766.95,87.713,0.195704,1.69507,3.47302,-0.039338 +units=m +no_defs ', - "EPSG:5243":'+proj=lcc +lat_1=48.66666666666666 +lat_2=53.66666666666666 +lat_0=51 +lon_0=10.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5247":'+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31580995 +k=0.99984 +x_0=0 +y_0=0 +no_uoff +gamma=53.13010236111111 +ellps=GRS80 +units=m +no_defs ', - "EPSG:5253":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5254":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5255":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5256":'+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5257":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5258":'+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5259":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5266":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5269":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5270":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5271":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5272":'+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5273":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5274":'+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5275":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5292":'+proj=tmerc +lat_0=0 +lon_0=90.73333333333333 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5293":'+proj=tmerc +lat_0=0 +lon_0=89.55 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5294":'+proj=tmerc +lat_0=0 +lon_0=89.84999999999999 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5295":'+proj=tmerc +lat_0=0 +lon_0=90.03333333333333 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5296":'+proj=tmerc +lat_0=0 +lon_0=90.15000000000001 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5297":'+proj=tmerc +lat_0=0 +lon_0=91.13333333333334 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5298":'+proj=tmerc +lat_0=0 +lon_0=91.23333333333333 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5299":'+proj=tmerc +lat_0=0 +lon_0=89.34999999999999 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5300":'+proj=tmerc +lat_0=0 +lon_0=91.34999999999999 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5301":'+proj=tmerc +lat_0=0 +lon_0=89.84999999999999 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5302":'+proj=tmerc +lat_0=0 +lon_0=91.56666666666666 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5303":'+proj=tmerc +lat_0=0 +lon_0=89.06666666666666 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5304":'+proj=tmerc +lat_0=0 +lon_0=90.26666666666667 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5305":'+proj=tmerc +lat_0=0 +lon_0=89.55 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5306":'+proj=tmerc +lat_0=0 +lon_0=91.75 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5307":'+proj=tmerc +lat_0=0 +lon_0=90.5 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5308":'+proj=tmerc +lat_0=0 +lon_0=90.16666666666667 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5309":'+proj=tmerc +lat_0=0 +lon_0=90.11666666666666 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5310":'+proj=tmerc +lat_0=0 +lon_0=91.56666666666666 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5311":'+proj=tmerc +lat_0=0 +lon_0=90.86666666666666 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5316":'+proj=tmerc +lat_0=0 +lon_0=-7 +k=0.999997 +x_0=200000 +y_0=-6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5320":'+proj=lcc +lat_1=44.5 +lat_2=54.5 +lat_0=0 +lon_0=-84 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5321":'+proj=lcc +lat_1=44.5 +lat_2=54.5 +lat_0=0 +lon_0=-84 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5325":'+proj=lcc +lat_1=64.25 +lat_2=65.75 +lat_0=65 +lon_0=-19 +x_0=1700000 +y_0=300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5329":'+proj=merc +lon_0=3.192280555555556 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +pm=jakarta +units=m +no_defs ', - "EPSG:5330":'+proj=merc +lon_0=3.192280555555556 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +pm=jakarta +units=m +no_defs ', - "EPSG:5331":'+proj=merc +lon_0=3.192280555555556 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +units=m +no_defs ', - "EPSG:5337":'+proj=utm +zone=25 +south +ellps=intl +towgs84=-151.99,287.04,-147.45,0,0,0,0 +units=m +no_defs ', - "EPSG:5343":'+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5344":'+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5345":'+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5346":'+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5347":'+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5348":'+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5349":'+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5355":'+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5356":'+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5357":'+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5361":'+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5362":'+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5367":'+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5382":'+proj=utm +zone=21 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5383":'+proj=utm +zone=22 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5387":'+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5388":'+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5389":'+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5396":'+proj=utm +zone=26 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5456":'+proj=lcc +lat_1=10.46666666666667 +lat_0=10.46666666666667 +lon_0=-84.33333333333333 +k_0=0.99995696 +x_0=500000 +y_0=271820.522 +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +units=m +no_defs ', - "EPSG:5457":'+proj=lcc +lat_1=9 +lat_0=9 +lon_0=-83.66666666666667 +k_0=0.99995696 +x_0=500000 +y_0=327987.436 +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +units=m +no_defs ', - "EPSG:5458":'+proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=500000 +y_0=292209.579 +datum=NAD27 +units=m +no_defs ', - "EPSG:5459":'+proj=lcc +lat_1=14.9 +lat_0=14.9 +lon_0=-90.33333333333333 +k_0=0.99989906 +x_0=500000 +y_0=325992.681 +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +units=m +no_defs ', - "EPSG:5460":'+proj=lcc +lat_1=13.78333333333333 +lat_0=13.78333333333333 +lon_0=-89 +k_0=0.99996704 +x_0=500000 +y_0=295809.184 +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +units=m +no_defs ', - "EPSG:5461":'+proj=lcc +lat_1=13.86666666666667 +lat_0=13.86666666666667 +lon_0=-85.5 +k_0=0.99990314 +x_0=500000 +y_0=359891.816 +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +units=m +no_defs ', - "EPSG:5462":'+proj=lcc +lat_1=11.73333333333333 +lat_0=11.73333333333333 +lon_0=-85.5 +k_0=0.9999222800000001 +x_0=500000 +y_0=288876.327 +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +units=m +no_defs ', - "EPSG:5463":'+proj=utm +zone=17 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:5466":'+proj=tmerc +lat_0=17.06124194444444 +lon_0=-88.6318575 +k=1 +x_0=66220.02833082761 +y_0=135779.5099885299 +a=6378293.645208759 +b=6356617.987679838 +units=m +no_defs ', - "EPSG:5469":'+proj=lcc +lat_1=8.416666666666666 +lat_0=8.416666666666666 +lon_0=-80 +k_0=0.99989909 +x_0=500000 +y_0=294865.303 +ellps=clrk66 +units=m +no_defs ', - "EPSG:5472":'+proj=poly +lat_0=8.25 +lon_0=-81 +x_0=914391.7962 +y_0=999404.7217154861 +ellps=clrk66 +to_meter=0.9143917962 +no_defs ', - "EPSG:5479":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-78 +lon_0=163 +x_0=7000000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5480":'+proj=lcc +lat_1=-73.66666666666667 +lat_2=-75.33333333333333 +lat_0=-74.5 +lon_0=165 +x_0=5000000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5481":'+proj=lcc +lat_1=-70.66666666666667 +lat_2=-72.33333333333333 +lat_0=-71.5 +lon_0=166 +x_0=3000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5482":'+proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=180 +k=0.994 +x_0=5000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5490":'+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5513":'+proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=589,76,480,0,0,0,0 +units=m +no_defs ', - "EPSG:5514":'+proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=589,76,480,0,0,0,0 +units=m +no_defs ', - "EPSG:5518":'+proj=tmerc +lat_0=-44 +lon_0=-176.5 +k=1 +x_0=350000 +y_0=650000 +ellps=intl +towgs84=175,-38,113,0,0,0,0 +units=m +no_defs ', - "EPSG:5519":'+proj=tmerc +lat_0=-44 +lon_0=-176.5 +k=1 +x_0=350000 +y_0=650000 +ellps=intl +towgs84=174.05,-25.49,112.57,-0,-0,0.554,0.2263 +units=m +no_defs ', - "EPSG:5520":'+proj=tmerc +lat_0=0 +lon_0=3 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:5523":'+proj=tmerc +lat_0=0 +lon_0=11.5 +k=0.9996 +x_0=1500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:5530":'+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs ', - "EPSG:5531":'+proj=utm +zone=21 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs ', - "EPSG:5532":'+proj=utm +zone=22 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:5533":'+proj=utm +zone=23 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs ', - "EPSG:5534":'+proj=utm +zone=24 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs ', - "EPSG:5535":'+proj=utm +zone=25 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs ', - "EPSG:5536":'+proj=utm +zone=21 +south +ellps=intl +units=m +no_defs ', - "EPSG:5537":'+proj=utm +zone=22 +south +ellps=intl +units=m +no_defs ', - "EPSG:5538":'+proj=utm +zone=23 +south +ellps=intl +units=m +no_defs ', - "EPSG:5539":'+proj=utm +zone=24 +south +ellps=intl +units=m +no_defs ', - "EPSG:5550":'+proj=utm +zone=54 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5551":'+proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5552":'+proj=utm +zone=56 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5559":'+proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=500000 +y_0=292209.579 +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +units=m +no_defs ', - "EPSG:5562":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5563":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5564":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5565":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5566":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5567":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5568":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5569":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5570":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5571":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5572":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5573":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5574":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5575":'+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5576":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5577":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5578":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5579":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5580":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5581":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5582":'+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5583":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5588":'+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=304800 +y_0=304800 +datum=NAD27 +units=ft +no_defs ', - "EPSG:5589":'+proj=tmerc +lat_0=17.06124194444444 +lon_0=-88.6318575 +k=1 +x_0=66220.02833082761 +y_0=135779.5099885299 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.3047972654 +no_defs ', - "EPSG:5596":'+proj=tmerc +lat_0=0 +lon_0=11.33333333333333 +k=1 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5623":'+proj=tmerc +lat_0=41.5 +lon_0=-83.66666666666667 +k=0.999942857 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:5624":'+proj=tmerc +lat_0=41.5 +lon_0=-85.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:5625":'+proj=tmerc +lat_0=41.5 +lon_0=-88.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:5627":'+proj=tmerc +lat_0=0 +lon_0=6 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:5629":'+proj=utm +zone=38 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m +no_defs ', - "EPSG:5631":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:5632":'+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5633":'+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5634":'+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5635":'+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5636":'+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5637":'+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5638":'+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5639":'+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5641":'+proj=merc +lon_0=-43 +lat_ts=-2 +x_0=5000000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5643":'+proj=lcc +lat_1=52.66666666666666 +lat_2=54.33333333333334 +lat_0=48 +lon_0=10 +x_0=815000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:5644":'+proj=utm +zone=39 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5646":'+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:5649":'+proj=tmerc +lat_0=0 +lon_0=3 +k=0.9996 +x_0=31500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5650":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=33500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5651":'+proj=tmerc +lat_0=0 +lon_0=3 +k=0.9996 +x_0=31500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5652":'+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=32500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5653":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=33500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5654":'+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:5655":'+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:5659":'+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=500053 +y_0=-3999820 +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +units=m +no_defs ', - "EPSG:5663":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:5664":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:5665":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:5666":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:5667":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:5668":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:5669":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:5670":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:5671":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:5672":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:5673":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:5674":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:5675":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:5676":'+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:5677":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:5678":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:5679":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:5680":'+proj=tmerc +lat_0=0 +lon_0=3 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:5682":'+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:5683":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:5684":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:5685":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:5700":'+proj=utm +zone=1 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5825":'+proj=tmerc +lat_0=-35.31773627777778 +lon_0=149.0092948305555 +k=1.000086 +x_0=200000 +y_0=600000 +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:5836":'+proj=utm +zone=37 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5837":'+proj=utm +zone=40 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5839":'+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5842":'+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=10000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:5844":'+proj=tmerc +lat_0=0 +lon_0=30 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5858":'+proj=utm +zone=22 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs ', - "EPSG:5875":'+proj=utm +zone=18 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs ', - "EPSG:5876":'+proj=utm +zone=19 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs ', - "EPSG:5877":'+proj=utm +zone=20 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs ', - "EPSG:5879":'+proj=utm +zone=38 +south +ellps=intl +towgs84=-381.788,-57.501,-256.673,0,0,0,0 +units=m +no_defs ', - "EPSG:5880":'+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5887":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=0.9996 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +units=m +no_defs ', - "EPSG:5890":'+proj=stere +lat_0=90 +lat_ts=70 +lon_0=90 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs ', - "EPSG:5921":'+proj=lcc +lat_1=85 +lat_2=77 +lat_0=81.31722600000001 +lon_0=-111 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5922":'+proj=lcc +lat_1=85 +lat_2=77 +lat_0=81.31722600000001 +lon_0=-39 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5923":'+proj=lcc +lat_1=85 +lat_2=77 +lat_0=81.31722600000001 +lon_0=33 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5924":'+proj=lcc +lat_1=85 +lat_2=77 +lat_0=81.31722600000001 +lon_0=105 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5925":'+proj=lcc +lat_1=85 +lat_2=77 +lat_0=81.31722600000001 +lon_0=177 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5926":'+proj=lcc +lat_1=77 +lat_2=69 +lat_0=73.15574086111111 +lon_0=-111 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5927":'+proj=lcc +lat_1=77 +lat_2=69 +lat_0=73.15574086111111 +lon_0=-39 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5928":'+proj=lcc +lat_1=77 +lat_2=69 +lat_0=73.15574086111111 +lon_0=33 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5929":'+proj=lcc +lat_1=77 +lat_2=69 +lat_0=73.15574086111111 +lon_0=105 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5930":'+proj=lcc +lat_1=77 +lat_2=69 +lat_0=73.15574086111111 +lon_0=177 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5931":'+proj=lcc +lat_1=69 +lat_2=61 +lat_0=65.10127088888888 +lon_0=-111 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5932":'+proj=lcc +lat_1=69 +lat_2=61 +lat_0=65.10127088888888 +lon_0=-39 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5933":'+proj=lcc +lat_1=69 +lat_2=61 +lat_0=65.10127088888888 +lon_0=33 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5934":'+proj=lcc +lat_1=69 +lat_2=61 +lat_0=65.10127088888888 +lon_0=105 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5935":'+proj=lcc +lat_1=69 +lat_2=61 +lat_0=65.10127088888888 +lon_0=177 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5936":'+proj=stere +lat_0=90 +lat_ts=90 +lon_0=-150 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:5937":'+proj=stere +lat_0=90 +lat_ts=90 +lon_0=-100 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:5938":'+proj=stere +lat_0=90 +lat_ts=90 +lon_0=-33 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:5939":'+proj=stere +lat_0=90 +lat_ts=90 +lon_0=18 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:5940":'+proj=stere +lat_0=90 +lat_ts=90 +lon_0=105 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6050":'+proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.43711833333333 +lon_0=-30 +x_0=25500000 +y_0=1500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6051":'+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=-52 +x_0=18500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6052":'+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=-12 +x_0=20500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6053":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=-69 +x_0=29500000 +y_0=3500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6054":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=-39 +x_0=31500000 +y_0=3500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6055":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=-10 +x_0=33500000 +y_0=3500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6056":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=-64 +x_0=20500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6057":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=-39 +x_0=22500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6058":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=-14 +x_0=24500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6059":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-62 +x_0=41500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6060":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-42 +x_0=43500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6061":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-22 +x_0=45500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6062":'+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-56 +x_0=26500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6063":'+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-38 +x_0=28500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6064":'+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-20 +x_0=30500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6065":'+proj=lcc +lat_1=67 +lat_2=63.66666666666666 +lat_0=65.35103930555555 +lon_0=-51 +x_0=11500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6066":'+proj=lcc +lat_1=67 +lat_2=63.66666666666666 +lat_0=65.35103930555555 +lon_0=-34 +x_0=13500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6067":'+proj=lcc +lat_1=63.66666666666666 +lat_2=60.33333333333334 +lat_0=62.01530688888889 +lon_0=-52 +x_0=20500000 +y_0=8500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6068":'+proj=lcc +lat_1=63.66666666666666 +lat_2=60.33333333333334 +lat_0=62.01530688888889 +lon_0=-37 +x_0=22500000 +y_0=8500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6069":'+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=16 +x_0=22500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6070":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=21 +x_0=11500000 +y_0=3500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6071":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=10 +x_0=26500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6072":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=34 +x_0=28500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6073":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=14 +x_0=11500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6074":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=34 +x_0=13500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6075":'+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=53 +x_0=24500000 +y_0=2500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6076":'+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=93 +x_0=26500000 +y_0=2500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6077":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=52 +x_0=13500000 +y_0=3500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6078":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=83 +x_0=15500000 +y_0=3500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6079":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=114 +x_0=17500000 +y_0=3500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6080":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=145 +x_0=19500000 +y_0=3500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6081":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=58 +x_0=30500000 +y_0=4500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6082":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=82 +x_0=32500000 +y_0=4500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6083":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=106 +x_0=34500000 +y_0=4500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6084":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=130 +x_0=36500000 +y_0=4500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6085":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=154 +x_0=38500000 +y_0=4500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6086":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=179 +x_0=40500000 +y_0=4500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6087":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=54 +x_0=15500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6088":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=74 +x_0=17500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6089":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=95 +x_0=19500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6090":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=116 +x_0=21500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6091":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=137 +x_0=23500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6092":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=158 +x_0=25500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6093":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=179 +x_0=27500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6094":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-163 +x_0=29500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6095":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-147 +x_0=31500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6096":'+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-165 +x_0=14500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6097":'+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-147 +x_0=16500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6098":'+proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.43711833333333 +lon_0=-90 +x_0=23500000 +y_0=1500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6099":'+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=-115 +x_0=14500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6100":'+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=-75 +x_0=16500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6101":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=-129 +x_0=25500000 +y_0=3500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6102":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=-99 +x_0=27500000 +y_0=3500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6103":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=-69 +x_0=29500000 +y_0=3500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6104":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=-129 +x_0=14500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6105":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=-104 +x_0=16500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6106":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=-79 +x_0=18500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6107":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-131 +x_0=33500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6108":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-111 +x_0=35500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6109":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-91 +x_0=37500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6110":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-71 +x_0=39500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6111":'+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-132 +x_0=18500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6112":'+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-113 +x_0=20500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6113":'+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-94 +x_0=22500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6114":'+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-75 +x_0=24500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6115":'+proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.43711833333333 +lon_0=30 +x_0=27500000 +y_0=1500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6116":'+proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.43711833333333 +lon_0=90 +x_0=29500000 +y_0=1500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6117":'+proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.43711833333333 +lon_0=150 +x_0=31500000 +y_0=1500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6118":'+proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.43711833333333 +lon_0=-150 +x_0=21500000 +y_0=1500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6119":'+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=133 +x_0=28500000 +y_0=2500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6120":'+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=166 +x_0=10500000 +y_0=2500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6121":'+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=-154 +x_0=12500000 +y_0=2500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6122":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=176 +x_0=21500000 +y_0=3500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6123":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=-153 +x_0=23500000 +y_0=3500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6124":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=-155 +x_0=12500000 +y_0=4500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6125":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-5 +x_0=47500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6128":'+proj=utm +zone=17 +ellps=clrk66 +towgs84=-179.483,-69.379,-27.584,-7.862,8.163,6.042,-13.925 +units=ft +no_defs ', - "EPSG:6129":'+proj=utm +zone=17 +ellps=clrk66 +towgs84=8.853,-52.644,180.304,-0.393,-2.323,2.96,-24.081 +units=ft +no_defs ', - "EPSG:6141":'+proj=lcc +lat_1=19.33333333333333 +lat_2=19.7 +lat_0=19.33333333333333 +lon_0=80.56666666666666 +x_0=899160 +y_0=579120 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:20004":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20005":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20006":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20007":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20008":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20009":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20010":'+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20011":'+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20012":'+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20013":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20014":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20015":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20016":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20017":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20018":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20019":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20020":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20021":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20022":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20023":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20024":'+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20025":'+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20026":'+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20027":'+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20028":'+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20029":'+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20030":'+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20031":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20032":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20064":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20065":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20066":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20067":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20068":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20069":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20070":'+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20071":'+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20072":'+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20073":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20074":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20075":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20076":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20077":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20078":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20079":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20080":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20081":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20082":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20083":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20084":'+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20085":'+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20086":'+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20087":'+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20088":'+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20089":'+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20090":'+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20091":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20092":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20135":'+proj=utm +zone=35 +ellps=clrk80 +towgs84=-166,-15,204,0,0,0,0 +units=m +no_defs ', - "EPSG:20136":'+proj=utm +zone=36 +ellps=clrk80 +towgs84=-166,-15,204,0,0,0,0 +units=m +no_defs ', - "EPSG:20137":'+proj=utm +zone=37 +ellps=clrk80 +towgs84=-166,-15,204,0,0,0,0 +units=m +no_defs ', - "EPSG:20138":'+proj=utm +zone=38 +ellps=clrk80 +towgs84=-166,-15,204,0,0,0,0 +units=m +no_defs ', - "EPSG:20248":'+proj=utm +zone=48 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20249":'+proj=utm +zone=49 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20250":'+proj=utm +zone=50 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20251":'+proj=utm +zone=51 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20252":'+proj=utm +zone=52 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20253":'+proj=utm +zone=53 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20254":'+proj=utm +zone=54 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20255":'+proj=utm +zone=55 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20256":'+proj=utm +zone=56 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20257":'+proj=utm +zone=57 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20258":'+proj=utm +zone=58 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20348":'+proj=utm +zone=48 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20349":'+proj=utm +zone=49 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20350":'+proj=utm +zone=50 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20351":'+proj=utm +zone=51 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20352":'+proj=utm +zone=52 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20353":'+proj=utm +zone=53 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20354":'+proj=utm +zone=54 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20355":'+proj=utm +zone=55 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20356":'+proj=utm +zone=56 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20357":'+proj=utm +zone=57 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20358":'+proj=utm +zone=58 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20436":'+proj=utm +zone=36 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +units=m +no_defs ', - "EPSG:20437":'+proj=utm +zone=37 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +units=m +no_defs ', - "EPSG:20438":'+proj=utm +zone=38 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +units=m +no_defs ', - "EPSG:20439":'+proj=utm +zone=39 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +units=m +no_defs ', - "EPSG:20440":'+proj=utm +zone=40 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +units=m +no_defs ', - "EPSG:20499":'+proj=utm +zone=39 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +units=m +no_defs ', - "EPSG:20538":'+proj=utm +zone=38 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m +no_defs ', - "EPSG:20539":'+proj=utm +zone=39 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m +no_defs ', - "EPSG:20790":'+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-304.046,-60.576,103.64,0,0,0,0 +pm=lisbon +units=m +no_defs ', - "EPSG:20791":'+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=0 +y_0=0 +ellps=intl +towgs84=-304.046,-60.576,103.64,0,0,0,0 +pm=lisbon +units=m +no_defs ', - "EPSG:20822":'+proj=utm +zone=22 +south +ellps=intl +towgs84=-151.99,287.04,-147.45,0,0,0,0 +units=m +no_defs ', - "EPSG:20823":'+proj=utm +zone=23 +south +ellps=intl +towgs84=-151.99,287.04,-147.45,0,0,0,0 +units=m +no_defs ', - "EPSG:20824":'+proj=utm +zone=24 +south +ellps=intl +towgs84=-151.99,287.04,-147.45,0,0,0,0 +units=m +no_defs ', - "EPSG:20934":'+proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398753 +towgs84=-143,-90,-294,0,0,0,0 +units=m +no_defs ', - "EPSG:20935":'+proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398753 +towgs84=-143,-90,-294,0,0,0,0 +units=m +no_defs ', - "EPSG:20936":'+proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398753 +towgs84=-143,-90,-294,0,0,0,0 +units=m +no_defs ', - "EPSG:21035":'+proj=utm +zone=35 +south +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +units=m +no_defs ', - "EPSG:21036":'+proj=utm +zone=36 +south +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +units=m +no_defs ', - "EPSG:21037":'+proj=utm +zone=37 +south +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +units=m +no_defs ', - "EPSG:21095":'+proj=utm +zone=35 +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +units=m +no_defs ', - "EPSG:21096":'+proj=utm +zone=36 +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +units=m +no_defs ', - "EPSG:21097":'+proj=utm +zone=37 +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +units=m +no_defs ', - "EPSG:21100":'+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +pm=jakarta +units=m +no_defs ', - "EPSG:21148":'+proj=utm +zone=48 +south +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +units=m +no_defs ', - "EPSG:21149":'+proj=utm +zone=49 +south +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +units=m +no_defs ', - "EPSG:21150":'+proj=utm +zone=50 +south +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +units=m +no_defs ', - "EPSG:21291":'+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +units=m +no_defs ', - "EPSG:21292":'+proj=tmerc +lat_0=13.17638888888889 +lon_0=-59.55972222222222 +k=0.9999986 +x_0=30000 +y_0=75000 +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +units=m +no_defs ', - "EPSG:21413":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21414":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21415":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21416":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21417":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21418":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21419":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21420":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21421":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21422":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21423":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21453":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21454":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21455":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21456":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21457":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21458":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21459":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21460":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21461":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21462":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21463":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21473":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21474":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21475":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21476":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21477":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21478":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21479":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21480":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21481":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21482":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21483":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21500":'+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=90 +lon_0=0 +x_0=150000 +y_0=5400000 +ellps=intl +pm=brussels +units=m +no_defs ', - "EPSG:21780":'+proj=somerc +lat_0=46.95240555555556 +lon_0=0 +k_0=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=674.4,15.1,405.3,0,0,0,0 +pm=bern +units=m +no_defs ', - "EPSG:21781":'+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=600000 +y_0=200000 +ellps=bessel +towgs84=674.4,15.1,405.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21782":'+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=674.4,15.1,405.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21817":'+proj=utm +zone=17 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs ', - "EPSG:21818":'+proj=utm +zone=18 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs ', - "EPSG:21891":'+proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs ', - "EPSG:21892":'+proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs ', - "EPSG:21893":'+proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs ', - "EPSG:21894":'+proj=tmerc +lat_0=4.599047222222222 +lon_0=-68.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs ', - "EPSG:21896":'+proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs ', - "EPSG:21897":'+proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs ', - "EPSG:21898":'+proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs ', - "EPSG:21899":'+proj=tmerc +lat_0=4.599047222222222 +lon_0=-68.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs ', - "EPSG:22032":'+proj=utm +zone=32 +south +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0,0,0,0 +units=m +no_defs ', - "EPSG:22033":'+proj=utm +zone=33 +south +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0,0,0,0 +units=m +no_defs ', - "EPSG:22091":'+proj=tmerc +lat_0=0 +lon_0=11.5 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0,0,0,0 +units=m +no_defs ', - "EPSG:22092":'+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0,0,0,0 +units=m +no_defs ', - "EPSG:22171":'+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22172":'+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22173":'+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22174":'+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22175":'+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22176":'+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22177":'+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22181":'+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22182":'+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22183":'+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22184":'+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22185":'+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22186":'+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22187":'+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22191":'+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs ', - "EPSG:22192":'+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs ', - "EPSG:22193":'+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs ', - "EPSG:22194":'+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs ', - "EPSG:22195":'+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs ', - "EPSG:22196":'+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs ', - "EPSG:22197":'+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs ', - "EPSG:22234":'+proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22235":'+proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22236":'+proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22275":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22277":'+proj=tmerc +lat_0=0 +lon_0=17 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22279":'+proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22281":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22283":'+proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22285":'+proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22287":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22289":'+proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22291":'+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22293":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22332":'+proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-263,6,431,0,0,0,0 +units=m +no_defs ', - "EPSG:22391":'+proj=lcc +lat_1=36 +lat_0=36 +lon_0=9.9 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-263,6,431,0,0,0,0 +units=m +no_defs ', - "EPSG:22392":'+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=9.9 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-263,6,431,0,0,0,0 +units=m +no_defs ', - "EPSG:22521":'+proj=utm +zone=21 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs ', - "EPSG:22522":'+proj=utm +zone=22 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs ', - "EPSG:22523":'+proj=utm +zone=23 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs ', - "EPSG:22524":'+proj=utm +zone=24 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs ', - "EPSG:22525":'+proj=utm +zone=25 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs ', - "EPSG:22700":'+proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-190.421,8.532,238.69,0,0,0,0 +units=m +no_defs ', - "EPSG:22770":'+proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-190.421,8.532,238.69,0,0,0,0 +units=m +no_defs ', - "EPSG:22780":'+proj=sterea +lat_0=34.2 +lon_0=39.15 +k=0.9995341 +x_0=0 +y_0=0 +a=6378249.2 +b=6356515 +towgs84=-190.421,8.532,238.69,0,0,0,0 +units=m +no_defs ', - "EPSG:22832":'+proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_defs ', - "EPSG:22991":'+proj=tmerc +lat_0=30 +lon_0=35 +k=1 +x_0=300000 +y_0=1100000 +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +units=m +no_defs ', - "EPSG:22992":'+proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=810000 +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +units=m +no_defs ', - "EPSG:22993":'+proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=200000 +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +units=m +no_defs ', - "EPSG:22994":'+proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=1200000 +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +units=m +no_defs ', - "EPSG:23028":'+proj=utm +zone=28 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23029":'+proj=utm +zone=29 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23030":'+proj=utm +zone=30 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23031":'+proj=utm +zone=31 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23032":'+proj=utm +zone=32 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23033":'+proj=utm +zone=33 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23034":'+proj=utm +zone=34 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23035":'+proj=utm +zone=35 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23036":'+proj=utm +zone=36 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23037":'+proj=utm +zone=37 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23038":'+proj=utm +zone=38 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23090":'+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23095":'+proj=tmerc +lat_0=0 +lon_0=5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23239":'+proj=utm +zone=39 +ellps=clrk80 +towgs84=-346,-1,224,0,0,0,0 +units=m +no_defs ', - "EPSG:23240":'+proj=utm +zone=40 +ellps=clrk80 +towgs84=-346,-1,224,0,0,0,0 +units=m +no_defs ', - "EPSG:23433":'+proj=utm +zone=33 +a=6378249.2 +b=6356515 +units=m +no_defs ', - "EPSG:23700":'+proj=somerc +lat_0=47.14439372222222 +lon_0=19.04857177777778 +k_0=0.99993 +x_0=650000 +y_0=200000 +ellps=GRS67 +towgs84=52.17,-71.82,-14.9,0,0,0,0 +units=m +no_defs ', - "EPSG:23830":'+proj=tmerc +lat_0=0 +lon_0=94.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23831":'+proj=tmerc +lat_0=0 +lon_0=97.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23832":'+proj=tmerc +lat_0=0 +lon_0=100.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23833":'+proj=tmerc +lat_0=0 +lon_0=103.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23834":'+proj=tmerc +lat_0=0 +lon_0=106.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23835":'+proj=tmerc +lat_0=0 +lon_0=109.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23836":'+proj=tmerc +lat_0=0 +lon_0=112.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23837":'+proj=tmerc +lat_0=0 +lon_0=115.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23838":'+proj=tmerc +lat_0=0 +lon_0=118.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23839":'+proj=tmerc +lat_0=0 +lon_0=121.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23840":'+proj=tmerc +lat_0=0 +lon_0=124.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23841":'+proj=tmerc +lat_0=0 +lon_0=127.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23842":'+proj=tmerc +lat_0=0 +lon_0=130.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23843":'+proj=tmerc +lat_0=0 +lon_0=133.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23844":'+proj=tmerc +lat_0=0 +lon_0=136.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23845":'+proj=tmerc +lat_0=0 +lon_0=139.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23846":'+proj=utm +zone=46 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23847":'+proj=utm +zone=47 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23848":'+proj=utm +zone=48 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23849":'+proj=utm +zone=49 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23850":'+proj=utm +zone=50 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23851":'+proj=utm +zone=51 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23852":'+proj=utm +zone=52 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23853":'+proj=utm +zone=53 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23866":'+proj=utm +zone=46 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23867":'+proj=utm +zone=47 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23868":'+proj=utm +zone=48 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23869":'+proj=utm +zone=49 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23870":'+proj=utm +zone=50 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23871":'+proj=utm +zone=51 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23872":'+proj=utm +zone=52 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23877":'+proj=utm +zone=47 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23878":'+proj=utm +zone=48 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23879":'+proj=utm +zone=49 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23880":'+proj=utm +zone=50 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23881":'+proj=utm +zone=51 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23882":'+proj=utm +zone=52 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23883":'+proj=utm +zone=53 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23884":'+proj=utm +zone=54 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23886":'+proj=utm +zone=46 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23887":'+proj=utm +zone=47 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23888":'+proj=utm +zone=48 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23889":'+proj=utm +zone=49 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23890":'+proj=utm +zone=50 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23891":'+proj=utm +zone=51 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23892":'+proj=utm +zone=52 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23893":'+proj=utm +zone=53 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23894":'+proj=utm +zone=54 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23946":'+proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs ', - "EPSG:23947":'+proj=utm +zone=47 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs ', - "EPSG:23948":'+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs ', - "EPSG:24047":'+proj=utm +zone=47 +a=6377276.345 +b=6356075.41314024 +towgs84=210,814,289,0,0,0,0 +units=m +no_defs ', - "EPSG:24048":'+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +towgs84=210,814,289,0,0,0,0 +units=m +no_defs ', - "EPSG:24100":'+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=167638.49597 +y_0=121918.90616 +a=6378249.144808011 +b=6356514.966204134 +to_meter=0.3047972654 +no_defs ', - "EPSG:24200":'+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=250000 +y_0=150000 +ellps=clrk66 +towgs84=70,207,389.5,0,0,0,0 +units=m +no_defs ', - "EPSG:24305":'+proj=utm +zone=45 +a=6377276.345 +b=6356075.41314024 +towgs84=214,804,268,0,0,0,0 +units=m +no_defs ', - "EPSG:24306":'+proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +towgs84=214,804,268,0,0,0,0 +units=m +no_defs ', - "EPSG:24311":'+proj=utm +zone=41 +a=6377301.243 +b=6356100.230165384 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs ', - "EPSG:24312":'+proj=utm +zone=42 +a=6377301.243 +b=6356100.230165384 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs ', - "EPSG:24313":'+proj=utm +zone=43 +a=6377301.243 +b=6356100.230165384 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs ', - "EPSG:24342":'+proj=utm +zone=42 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24343":'+proj=utm +zone=43 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24344":'+proj=utm +zone=44 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24345":'+proj=utm +zone=45 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24346":'+proj=utm +zone=46 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24347":'+proj=utm +zone=47 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24370":'+proj=lcc +lat_1=39.5 +lat_0=39.5 +lon_0=68 +k_0=0.99846154 +x_0=2153865.73916853 +y_0=2368292.194628102 +a=6377299.36559538 +b=6356098.359005156 +to_meter=0.9143985307444408 +no_defs ', - "EPSG:24371":'+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005156 +to_meter=0.9143985307444408 +no_defs ', - "EPSG:24372":'+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005156 +to_meter=0.9143985307444408 +no_defs ', - "EPSG:24373":'+proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005156 +to_meter=0.9143985307444408 +no_defs ', - "EPSG:24374":'+proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005156 +to_meter=0.9143985307444408 +no_defs ', - "EPSG:24375":'+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743185.69 +y_0=914395.23 +a=6377276.345 +b=6356075.41314024 +towgs84=214,804,268,0,0,0,0 +units=m +no_defs ', - "EPSG:24376":'+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165384 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs ', - "EPSG:24377":'+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165384 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs ', - "EPSG:24378":'+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24379":'+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24380":'+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24381":'+proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24382":'+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005156 +to_meter=0.9143985307444408 +no_defs ', - "EPSG:24383":'+proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24500":'+proj=cass +lat_0=1.287646666666667 +lon_0=103.8530022222222 +x_0=30000 +y_0=30000 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs ', - "EPSG:24547":'+proj=utm +zone=47 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs ', - "EPSG:24548":'+proj=utm +zone=48 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs ', - "EPSG:24571":'+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=804671.2997750348 +y_0=0 +no_uoff +gamma=323.1301023611111 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +to_meter=20.11678249437587 +no_defs ', - "EPSG:24600":'+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +towgs84=-294.7,-200.1,525.5,0,0,0,0 +units=m +no_defs ', - "EPSG:24718":'+proj=utm +zone=18 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs ', - "EPSG:24719":'+proj=utm +zone=19 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs ', - "EPSG:24720":'+proj=utm +zone=20 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs ', - "EPSG:24817":'+proj=utm +zone=17 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24818":'+proj=utm +zone=18 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24819":'+proj=utm +zone=19 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24820":'+proj=utm +zone=20 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24821":'+proj=utm +zone=21 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24877":'+proj=utm +zone=17 +south +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24878":'+proj=utm +zone=18 +south +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24879":'+proj=utm +zone=19 +south +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24880":'+proj=utm +zone=20 +south +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24881":'+proj=utm +zone=21 +south +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24882":'+proj=utm +zone=22 +south +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24891":'+proj=tmerc +lat_0=-6 +lon_0=-80.5 +k=0.99983008 +x_0=222000 +y_0=1426834.743 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24892":'+proj=tmerc +lat_0=-9.5 +lon_0=-76 +k=0.99932994 +x_0=720000 +y_0=1039979.159 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24893":'+proj=tmerc +lat_0=-9.5 +lon_0=-70.5 +k=0.99952992 +x_0=1324000 +y_0=1040084.558 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:25000":'+proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.99975 +x_0=274319.51 +y_0=0 +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0 +units=m +no_defs ', - "EPSG:25231":'+proj=utm +zone=31 +a=6378249.2 +b=6356515 +units=m +no_defs ', - "EPSG:25391":'+proj=tmerc +lat_0=0 +lon_0=117 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units=m +no_defs ', - "EPSG:25392":'+proj=tmerc +lat_0=0 +lon_0=119 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units=m +no_defs ', - "EPSG:25393":'+proj=tmerc +lat_0=0 +lon_0=121 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units=m +no_defs ', - "EPSG:25394":'+proj=tmerc +lat_0=0 +lon_0=123 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units=m +no_defs ', - "EPSG:25395":'+proj=tmerc +lat_0=0 +lon_0=125 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units=m +no_defs ', - "EPSG:25700":'+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +units=m +no_defs ', - "EPSG:25828":'+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25829":'+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25830":'+proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25831":'+proj=utm +zone=31 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25832":'+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25833":'+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25834":'+proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25835":'+proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25836":'+proj=utm +zone=36 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25837":'+proj=utm +zone=37 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25838":'+proj=utm +zone=38 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25884":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25932":'+proj=utm +zone=32 +south +ellps=intl +towgs84=-254.1,-5.36,-100.29,0,0,0,0 +units=m +no_defs ', - "EPSG:26191":'+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=-5.4 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs ', - "EPSG:26192":'+proj=lcc +lat_1=29.7 +lat_0=29.7 +lon_0=-5.4 +k_0=0.9996155960000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs ', - "EPSG:26193":'+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.9996 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs ', - "EPSG:26194":'+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.999616304 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs ', - "EPSG:26195":'+proj=lcc +lat_1=22.5 +lat_0=22.5 +lon_0=-5.4 +k_0=0.999616437 +x_0=1500000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs ', - "EPSG:26237":'+proj=utm +zone=37 +ellps=bessel +towgs84=639,405,60,0,0,0,0 +units=m +no_defs ', - "EPSG:26331":'+proj=utm +zone=31 +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +units=m +no_defs ', - "EPSG:26332":'+proj=utm +zone=32 +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +units=m +no_defs ', - "EPSG:26391":'+proj=tmerc +lat_0=4 +lon_0=4.5 +k=0.99975 +x_0=230738.26 +y_0=0 +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +units=m +no_defs ', - "EPSG:26392":'+proj=tmerc +lat_0=4 +lon_0=8.5 +k=0.99975 +x_0=670553.98 +y_0=0 +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +units=m +no_defs ', - "EPSG:26393":'+proj=tmerc +lat_0=4 +lon_0=12.5 +k=0.99975 +x_0=1110369.7 +y_0=0 +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +units=m +no_defs ', - "EPSG:26432":'+proj=utm +zone=32 +south +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0 +units=m +no_defs ', - "EPSG:26591":'+proj=tmerc +lat_0=0 +lon_0=-3.45233333333333 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +pm=rome +units=m +no_defs ', - "EPSG:26592":'+proj=tmerc +lat_0=0 +lon_0=2.54766666666666 +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +pm=rome +units=m +no_defs ', - "EPSG:26632":'+proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-74,-130,42,0,0,0,0 +units=m +no_defs ', - "EPSG:26692":'+proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +towgs84=-74,-130,42,0,0,0,0 +units=m +no_defs ', - "EPSG:26701":'+proj=utm +zone=1 +datum=NAD27 +units=m +no_defs ', - "EPSG:26702":'+proj=utm +zone=2 +datum=NAD27 +units=m +no_defs ', - "EPSG:26703":'+proj=utm +zone=3 +datum=NAD27 +units=m +no_defs ', - "EPSG:26704":'+proj=utm +zone=4 +datum=NAD27 +units=m +no_defs ', - "EPSG:26705":'+proj=utm +zone=5 +datum=NAD27 +units=m +no_defs ', - "EPSG:26706":'+proj=utm +zone=6 +datum=NAD27 +units=m +no_defs ', - "EPSG:26707":'+proj=utm +zone=7 +datum=NAD27 +units=m +no_defs ', - "EPSG:26708":'+proj=utm +zone=8 +datum=NAD27 +units=m +no_defs ', - "EPSG:26709":'+proj=utm +zone=9 +datum=NAD27 +units=m +no_defs ', - "EPSG:26710":'+proj=utm +zone=10 +datum=NAD27 +units=m +no_defs ', - "EPSG:26711":'+proj=utm +zone=11 +datum=NAD27 +units=m +no_defs ', - "EPSG:26712":'+proj=utm +zone=12 +datum=NAD27 +units=m +no_defs ', - "EPSG:26713":'+proj=utm +zone=13 +datum=NAD27 +units=m +no_defs ', - "EPSG:26714":'+proj=utm +zone=14 +datum=NAD27 +units=m +no_defs ', - "EPSG:26715":'+proj=utm +zone=15 +datum=NAD27 +units=m +no_defs ', - "EPSG:26716":'+proj=utm +zone=16 +datum=NAD27 +units=m +no_defs ', - "EPSG:26717":'+proj=utm +zone=17 +datum=NAD27 +units=m +no_defs ', - "EPSG:26718":'+proj=utm +zone=18 +datum=NAD27 +units=m +no_defs ', - "EPSG:26719":'+proj=utm +zone=19 +datum=NAD27 +units=m +no_defs ', - "EPSG:26720":'+proj=utm +zone=20 +datum=NAD27 +units=m +no_defs ', - "EPSG:26721":'+proj=utm +zone=21 +datum=NAD27 +units=m +no_defs ', - "EPSG:26722":'+proj=utm +zone=22 +datum=NAD27 +units=m +no_defs ', - "EPSG:26729":'+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26730":'+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26731":'+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000.001016002 +y_0=-5000000.001016002 +no_uoff +gamma=323.1301023611111 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26732":'+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26733":'+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26734":'+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26735":'+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26736":'+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26737":'+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=213360.4267208534 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26738":'+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26739":'+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=182880.3657607315 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26740":'+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=914401.8288036576 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26741":'+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26742":'+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26743":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26744":'+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26745":'+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26746":'+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26747":'+proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +x_0=1276106.450596901 +y_0=127079.524511049 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26748":'+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26749":'+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26750":'+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26751":'+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26752":'+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26753":'+proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26754":'+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26755":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26756":'+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=182880.3657607315 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26757":'+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26758":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26759":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26760":'+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26766":'+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26767":'+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26768":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26769":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26770":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26771":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26772":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26773":'+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26774":'+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26775":'+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26776":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26777":'+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26778":'+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26779":'+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26780":'+proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26781":'+proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.66666666666667 +lon_0=-92.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26782":'+proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.66666666666667 +lon_0=-91.33333333333333 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26783":'+proj=tmerc +lat_0=43.83333333333334 +lon_0=-68.5 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26784":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26785":'+proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.83333333333334 +lon_0=-77 +x_0=243840.4876809754 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26786":'+proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=182880.3657607315 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26787":'+proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=60960.12192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26791":'+proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26792":'+proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26793":'+proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26794":'+proj=tmerc +lat_0=29.66666666666667 +lon_0=-88.83333333333333 +k=0.99996 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26795":'+proj=tmerc +lat_0=30.5 +lon_0=-90.33333333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26796":'+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26797":'+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26798":'+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26799":'+proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +x_0=1276106.450596901 +y_0=1268253.006858014 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26801":'+proj=tmerc +lat_0=41.5 +lon_0=-83.66666666666667 +k=0.999942857 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +units=us-ft +no_defs ', - "EPSG:26802":'+proj=tmerc +lat_0=41.5 +lon_0=-85.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +units=us-ft +no_defs ', - "EPSG:26803":'+proj=tmerc +lat_0=41.5 +lon_0=-88.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +units=us-ft +no_defs ', - "EPSG:26811":'+proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +units=us-ft +no_defs ', - "EPSG:26812":'+proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +units=us-ft +no_defs ', - "EPSG:26813":'+proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +units=us-ft +no_defs ', - "EPSG:26814":'+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26815":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26819":'+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26820":'+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26821":'+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26822":'+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000101601 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26823":'+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26824":'+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26825":'+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26826":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26830":'+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26831":'+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26832":'+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26833":'+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000101601 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26834":'+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26835":'+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26836":'+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26837":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26841":'+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26842":'+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26843":'+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26844":'+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000101601 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26845":'+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26846":'+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26847":'+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26848":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26849":'+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26850":'+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26851":'+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26852":'+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26853":'+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26854":'+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26855":'+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26856":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26857":'+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26858":'+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26859":'+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26860":'+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26861":'+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26862":'+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26863":'+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26864":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26865":'+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26866":'+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26867":'+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26868":'+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26869":'+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26870":'+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26891":'+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26892":'+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26893":'+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26894":'+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26895":'+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26896":'+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26897":'+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26898":'+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26899":'+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26901":'+proj=utm +zone=1 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26902":'+proj=utm +zone=2 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26903":'+proj=utm +zone=3 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26904":'+proj=utm +zone=4 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26905":'+proj=utm +zone=5 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26906":'+proj=utm +zone=6 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26907":'+proj=utm +zone=7 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26908":'+proj=utm +zone=8 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26909":'+proj=utm +zone=9 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26910":'+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26911":'+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26912":'+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26913":'+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26914":'+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26915":'+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26916":'+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26917":'+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26918":'+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26919":'+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26920":'+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26921":'+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26922":'+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26923":'+proj=utm +zone=23 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26929":'+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26930":'+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26931":'+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +no_uoff +gamma=323.1301023611111 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26932":'+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26933":'+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26934":'+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26935":'+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26936":'+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26937":'+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26938":'+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26939":'+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26940":'+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26941":'+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26942":'+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26943":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26944":'+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26945":'+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26946":'+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26948":'+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26949":'+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26950":'+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26951":'+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26952":'+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26953":'+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26954":'+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26955":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26956":'+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26957":'+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26958":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26959":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26960":'+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26961":'+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26962":'+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26963":'+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26964":'+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26965":'+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26966":'+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26967":'+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26968":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26969":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26970":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26971":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26972":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26973":'+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26974":'+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26975":'+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26976":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26977":'+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26978":'+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26979":'+proj=lcc +lat_1=37.96666666666667 +lat_2=37.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26980":'+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26981":'+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26982":'+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26983":'+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26984":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26985":'+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26986":'+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26987":'+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26988":'+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26989":'+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26990":'+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26991":'+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26992":'+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26993":'+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26994":'+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26995":'+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26996":'+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26997":'+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26998":'+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:27037":'+proj=utm +zone=37 +ellps=clrk80 +towgs84=-242.2,-144.9,370.3,0,0,0,0 +units=m +no_defs ', - "EPSG:27038":'+proj=utm +zone=38 +ellps=clrk80 +towgs84=-242.2,-144.9,370.3,0,0,0,0 +units=m +no_defs ', - "EPSG:27039":'+proj=utm +zone=39 +ellps=clrk80 +towgs84=-242.2,-144.9,370.3,0,0,0,0 +units=m +no_defs ', - "EPSG:27040":'+proj=utm +zone=40 +ellps=clrk80 +towgs84=-242.2,-144.9,370.3,0,0,0,0 +units=m +no_defs ', - "EPSG:27120":'+proj=utm +zone=20 +ellps=intl +towgs84=-10,375,165,0,0,0,0 +units=m +no_defs ', - "EPSG:27200":'+proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27205":'+proj=tmerc +lat_0=-36.87986527777778 +lon_0=174.7643393611111 +k=0.9999 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27206":'+proj=tmerc +lat_0=-37.76124980555556 +lon_0=176.46619725 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27207":'+proj=tmerc +lat_0=-38.62470277777778 +lon_0=177.8856362777778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27208":'+proj=tmerc +lat_0=-39.65092930555556 +lon_0=176.6736805277778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27209":'+proj=tmerc +lat_0=-39.13575830555556 +lon_0=174.22801175 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27210":'+proj=tmerc +lat_0=-39.51247038888889 +lon_0=175.6400368055556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27211":'+proj=tmerc +lat_0=-40.24194713888889 +lon_0=175.4880996111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27212":'+proj=tmerc +lat_0=-40.92553263888889 +lon_0=175.6473496666667 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27213":'+proj=tmerc +lat_0=-41.30131963888888 +lon_0=174.7766231111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27214":'+proj=tmerc +lat_0=-40.71475905555556 +lon_0=172.6720465 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27215":'+proj=tmerc +lat_0=-41.27454472222222 +lon_0=173.2993168055555 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27216":'+proj=tmerc +lat_0=-41.28991152777778 +lon_0=172.1090281944444 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27217":'+proj=tmerc +lat_0=-41.81080286111111 +lon_0=171.5812600555556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27218":'+proj=tmerc +lat_0=-42.33369427777778 +lon_0=171.5497713055556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27219":'+proj=tmerc +lat_0=-42.68911658333333 +lon_0=173.0101333888889 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27220":'+proj=tmerc +lat_0=-41.54448666666666 +lon_0=173.8020741111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27221":'+proj=tmerc +lat_0=-42.88632236111111 +lon_0=170.9799935 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27222":'+proj=tmerc +lat_0=-43.11012813888889 +lon_0=170.2609258333333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27223":'+proj=tmerc +lat_0=-43.97780288888889 +lon_0=168.606267 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27224":'+proj=tmerc +lat_0=-43.59063758333333 +lon_0=172.7271935833333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27225":'+proj=tmerc +lat_0=-43.74871155555556 +lon_0=171.3607484722222 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27226":'+proj=tmerc +lat_0=-44.40222036111111 +lon_0=171.0572508333333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27227":'+proj=tmerc +lat_0=-44.73526797222222 +lon_0=169.4677550833333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27228":'+proj=tmerc +lat_0=-45.13290258333333 +lon_0=168.3986411944444 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27229":'+proj=tmerc +lat_0=-45.56372616666666 +lon_0=167.7388617777778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27230":'+proj=tmerc +lat_0=-45.81619661111111 +lon_0=170.6285951666667 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27231":'+proj=tmerc +lat_0=-45.86151336111111 +lon_0=170.2825891111111 +k=0.99996 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27232":'+proj=tmerc +lat_0=-46.60000961111111 +lon_0=168.342872 +k=1 +x_0=300002.66 +y_0=699999.58 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27258":'+proj=utm +zone=58 +south +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27259":'+proj=utm +zone=59 +south +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27260":'+proj=utm +zone=60 +south +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27291":'+proj=tmerc +lat_0=-39 +lon_0=175.5 +k=1 +x_0=274319.5243848086 +y_0=365759.3658464114 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +to_meter=0.9143984146160287 +no_defs ', - "EPSG:27292":'+proj=tmerc +lat_0=-44 +lon_0=171.5 +k=1 +x_0=457199.2073080143 +y_0=457199.2073080143 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +to_meter=0.9143984146160287 +no_defs ', - "EPSG:27391":'+proj=tmerc +lat_0=58 +lon_0=-4.666666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs ', - "EPSG:27392":'+proj=tmerc +lat_0=58 +lon_0=-2.333333333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs ', - "EPSG:27393":'+proj=tmerc +lat_0=58 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs ', - "EPSG:27394":'+proj=tmerc +lat_0=58 +lon_0=2.5 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs ', - "EPSG:27395":'+proj=tmerc +lat_0=58 +lon_0=6.166666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs ', - "EPSG:27396":'+proj=tmerc +lat_0=58 +lon_0=10.16666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs ', - "EPSG:27397":'+proj=tmerc +lat_0=58 +lon_0=14.16666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs ', - "EPSG:27398":'+proj=tmerc +lat_0=58 +lon_0=18.33333333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs ', - "EPSG:27429":'+proj=utm +zone=29 +ellps=intl +towgs84=-223.237,110.193,36.649,0,0,0,0 +units=m +no_defs ', - "EPSG:27492":'+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +towgs84=-223.237,110.193,36.649,0,0,0,0 +units=m +no_defs ', - "EPSG:27493":'+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +towgs84=-223.237,110.193,36.649,0,0,0,0 +units=m +no_defs ', - "EPSG:27500":'+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=5.399999999999999 +k_0=0.99950908 +x_0=500000 +y_0=300000 +a=6376523 +b=6355862.933255573 +pm=2.337208333333333 +units=m +no_defs ', - "EPSG:27561":'+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27562":'+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27563":'+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27564":'+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27571":'+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27572":'+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27573":'+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27574":'+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27581":'+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27582":'+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27583":'+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27584":'+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27591":'+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27592":'+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27593":'+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27594":'+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27700":'+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=446.448,-125.157,542.06,0.15,0.247,0.842,-20.489 +units=m +no_defs ', - "EPSG:28191":'+proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m +no_defs ', - "EPSG:28192":'+proj=tmerc +lat_0=31.73409694444445 +lon_0=35.21208055555556 +k=1 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m +no_defs ', - "EPSG:28193":'+proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m +no_defs ', - "EPSG:28232":'+proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +towgs84=-148,51,-291,0,0,0,0 +units=m +no_defs ', - "EPSG:28348":'+proj=utm +zone=48 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28349":'+proj=utm +zone=49 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28350":'+proj=utm +zone=50 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28351":'+proj=utm +zone=51 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28352":'+proj=utm +zone=52 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28353":'+proj=utm +zone=53 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28354":'+proj=utm +zone=54 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28355":'+proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28356":'+proj=utm +zone=56 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28357":'+proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28358":'+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28402":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28403":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28404":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28405":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28406":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28407":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28408":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28409":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28410":'+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28411":'+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28412":'+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28413":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28414":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28415":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28416":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28417":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28418":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28419":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28420":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28421":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28422":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28423":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28424":'+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28425":'+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28426":'+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28427":'+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28428":'+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28429":'+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28430":'+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28431":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28432":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28462":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28463":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28464":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28465":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28466":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28467":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28468":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28469":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28470":'+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28471":'+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28472":'+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28473":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28474":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28475":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28476":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28477":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28478":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28479":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28480":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28481":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28482":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28483":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28484":'+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28485":'+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28486":'+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28487":'+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28488":'+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28489":'+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28490":'+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28491":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28492":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28600":'+proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.99999 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-128.16,-282.42,21.93,0,0,0,0 +units=m +no_defs ', - "EPSG:28991":'+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=0 +y_0=0 +ellps=bessel +towgs84=565.417,50.3319,465.552,-0.398957,0.343988,-1.8774,4.0725 +units=m +no_defs ', - "EPSG:28992":'+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +towgs84=565.417,50.3319,465.552,-0.398957,0.343988,-1.8774,4.0725 +units=m +no_defs ', - "EPSG:29100":'+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29101":'+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29118":'+proj=utm +zone=18 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29119":'+proj=utm +zone=19 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29120":'+proj=utm +zone=20 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29121":'+proj=utm +zone=21 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29122":'+proj=utm +zone=22 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29168":'+proj=utm +zone=18 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29169":'+proj=utm +zone=19 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29170":'+proj=utm +zone=20 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29171":'+proj=utm +zone=21 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29172":'+proj=utm +zone=22 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29177":'+proj=utm +zone=17 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29178":'+proj=utm +zone=18 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29179":'+proj=utm +zone=19 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29180":'+proj=utm +zone=20 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29181":'+proj=utm +zone=21 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29182":'+proj=utm +zone=22 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29183":'+proj=utm +zone=23 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29184":'+proj=utm +zone=24 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29185":'+proj=utm +zone=25 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29187":'+proj=utm +zone=17 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29188":'+proj=utm +zone=18 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29189":'+proj=utm +zone=19 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29190":'+proj=utm +zone=20 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29191":'+proj=utm +zone=21 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29192":'+proj=utm +zone=22 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29193":'+proj=utm +zone=23 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29194":'+proj=utm +zone=24 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29195":'+proj=utm +zone=25 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29220":'+proj=utm +zone=20 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m +no_defs ', - "EPSG:29221":'+proj=utm +zone=21 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m +no_defs ', - "EPSG:29333":'+proj=utm +zone=33 +south +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +units=m +no_defs ', - "EPSG:29371":'+proj=tmerc +lat_0=-22 +lon_0=11 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs ', - "EPSG:29373":'+proj=tmerc +lat_0=-22 +lon_0=13 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs ', - "EPSG:29375":'+proj=tmerc +lat_0=-22 +lon_0=15 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs ', - "EPSG:29377":'+proj=tmerc +lat_0=-22 +lon_0=17 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs ', - "EPSG:29379":'+proj=tmerc +lat_0=-22 +lon_0=19 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs ', - "EPSG:29381":'+proj=tmerc +lat_0=-22 +lon_0=21 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs ', - "EPSG:29383":'+proj=tmerc +lat_0=-22 +lon_0=23 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs ', - "EPSG:29385":'+proj=tmerc +lat_0=-22 +lon_0=25 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs ', - "EPSG:29635":'+proj=utm +zone=35 +a=6378249.2 +b=6356515 +units=m +no_defs ', - "EPSG:29636":'+proj=utm +zone=36 +a=6378249.2 +b=6356515 +units=m +no_defs ', - "EPSG:29700":'+proj=omerc +lat_0=-18.9 +lonc=44.10000000000001 +alpha=18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +gamma=18.9 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:29702":'+proj=omerc +lat_0=-18.9 +lonc=44.10000000000001 +alpha=18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +gamma=18.9 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:29738":'+proj=utm +zone=38 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m +no_defs ', - "EPSG:29739":'+proj=utm +zone=39 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m +no_defs ', - "EPSG:29849":'+proj=utm +zone=49 +ellps=evrstSS +towgs84=-679,669,-48,0,0,0,0 +units=m +no_defs ', - "EPSG:29850":'+proj=utm +zone=50 +ellps=evrstSS +towgs84=-679,669,-48,0,0,0,0 +units=m +no_defs ', - "EPSG:29871":'+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.8714630401 +y_0=442857.653094361 +gamma=53.13010236111111 +ellps=evrstSS +towgs84=-679,669,-48,0,0,0,0 +to_meter=20.11676512155263 +no_defs ', - "EPSG:29872":'+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.8727431979 +y_0=442857.6545573985 +gamma=53.13010236111111 +ellps=evrstSS +towgs84=-679,669,-48,0,0,0,0 +to_meter=0.3047994715386762 +no_defs ', - "EPSG:29873":'+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.87 +y_0=442857.65 +gamma=53.13010236111111 +ellps=evrstSS +towgs84=-679,669,-48,0,0,0,0 +units=m +no_defs ', - "EPSG:29900":'+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +ellps=mod_airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +units=m +no_defs ', - "EPSG:29901":'+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1 +x_0=200000 +y_0=250000 +ellps=airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +units=m +no_defs ', - "EPSG:29902":'+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +ellps=mod_airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +units=m +no_defs ', - "EPSG:29903":'+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +ellps=mod_airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +units=m +no_defs ', - "EPSG:30161":'+proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30162":'+proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30163":'+proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30164":'+proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30165":'+proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30166":'+proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30167":'+proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30168":'+proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30169":'+proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30170":'+proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30171":'+proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30172":'+proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30173":'+proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30174":'+proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30175":'+proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30176":'+proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30177":'+proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30178":'+proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30179":'+proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30200":'+proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46392051999 +y_0=65379.0134283 +a=6378293.645208759 +b=6356617.987679838 +towgs84=-61.702,284.488,472.052,0,0,0,0 +to_meter=0.201166195164 +no_defs ', - "EPSG:30339":'+proj=utm +zone=39 +ellps=helmert +units=m +no_defs ', - "EPSG:30340":'+proj=utm +zone=40 +ellps=helmert +units=m +no_defs ', - "EPSG:30491":'+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m +no_defs ', - "EPSG:30492":'+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m +no_defs ', - "EPSG:30493":'+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs ', - "EPSG:30494":'+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs ', - "EPSG:30729":'+proj=utm +zone=29 +ellps=clrk80 +towgs84=-209.362,-87.8162,404.62,0.0046,3.4784,0.5805,-1.4547 +units=m +no_defs ', - "EPSG:30730":'+proj=utm +zone=30 +ellps=clrk80 +towgs84=-209.362,-87.8162,404.62,0.0046,3.4784,0.5805,-1.4547 +units=m +no_defs ', - "EPSG:30731":'+proj=utm +zone=31 +ellps=clrk80 +towgs84=-209.362,-87.8162,404.62,0.0046,3.4784,0.5805,-1.4547 +units=m +no_defs ', - "EPSG:30732":'+proj=utm +zone=32 +ellps=clrk80 +towgs84=-209.362,-87.8162,404.62,0.0046,3.4784,0.5805,-1.4547 +units=m +no_defs ', - "EPSG:30791":'+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +towgs84=-209.362,-87.8162,404.62,0.0046,3.4784,0.5805,-1.4547 +units=m +no_defs ', - "EPSG:30792":'+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500135 +y_0=300090 +ellps=clrk80 +towgs84=-209.362,-87.8162,404.62,0.0046,3.4784,0.5805,-1.4547 +units=m +no_defs ', - "EPSG:30800":'+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:31028":'+proj=utm +zone=28 +a=6378249.2 +b=6356515 +units=m +no_defs ', - "EPSG:31121":'+proj=utm +zone=21 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs ', - "EPSG:31154":'+proj=tmerc +lat_0=0 +lon_0=-54 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs ', - "EPSG:31170":'+proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs ', - "EPSG:31171":'+proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.9999 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs ', - "EPSG:31251":'+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31252":'+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31253":'+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31254":'+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31255":'+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31256":'+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31257":'+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31258":'+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31259":'+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31265":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31266":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31267":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31268":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31275":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31276":'+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=6500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31277":'+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31278":'+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31279":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=8500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31281":'+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31282":'+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31283":'+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31284":'+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31285":'+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31286":'+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31287":'+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31288":'+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31289":'+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31290":'+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31291":'+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31292":'+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31293":'+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31294":'+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31295":'+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31296":'+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31297":'+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31300":'+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=90 +lon_0=4.356939722222222 +x_0=150000.01256 +y_0=5400088.4378 +ellps=intl +towgs84=-106.869,52.2978,-103.724,0.3366,-0.457,1.8422,-1.2747 +units=m +no_defs ', - "EPSG:31370":'+proj=lcc +lat_1=51.16666723333333 +lat_2=49.8333339 +lat_0=90 +lon_0=4.367486666666666 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +towgs84=-106.869,52.2978,-103.724,0.3366,-0.457,1.8422,-1.2747 +units=m +no_defs ', - "EPSG:31461":'+proj=tmerc +lat_0=0 +lon_0=3 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:31462":'+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:31463":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:31464":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:31465":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:31466":'+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:31467":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:31468":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:31469":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:31528":'+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs ', - "EPSG:31529":'+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs ', - "EPSG:31600":'+proj=sterea +lat_0=45.9 +lon_0=25.39246588888889 +k=0.9996667 +x_0=500000 +y_0=500000 +ellps=intl +towgs84=103.25,-100.4,-307.19,0,0,0,0 +units=m +no_defs ', - "EPSG:31700":'+proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 +y_0=500000 +ellps=krass +towgs84=28,-121,-77,0,0,0,0 +units=m +no_defs ', - "EPSG:31838":'+proj=utm +zone=38 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +units=m +no_defs ', - "EPSG:31839":'+proj=utm +zone=39 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +units=m +no_defs ', - "EPSG:31900":'+proj=tmerc +lat_0=0 +lon_0=48 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-20.8,11.3,2.4,0,0,0,0 +units=m +no_defs ', - "EPSG:31901":'+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-20.8,11.3,2.4,0,0,0,0 +units=m +no_defs ', - "EPSG:31965":'+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31966":'+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31967":'+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31968":'+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31969":'+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31970":'+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31971":'+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31972":'+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31973":'+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31974":'+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31975":'+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31976":'+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31977":'+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31978":'+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31979":'+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31980":'+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31981":'+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31982":'+proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31983":'+proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31984":'+proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31985":'+proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31986":'+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31987":'+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31988":'+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31989":'+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31990":'+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31991":'+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31992":'+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31993":'+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31994":'+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31995":'+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31996":'+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31997":'+proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31998":'+proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31999":'+proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32000":'+proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32001":'+proj=lcc +lat_1=48.71666666666667 +lat_2=47.85 +lat_0=47 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32002":'+proj=lcc +lat_1=47.88333333333333 +lat_2=46.45 +lat_0=45.83333333333334 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32003":'+proj=lcc +lat_1=46.4 +lat_2=44.86666666666667 +lat_0=44 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32005":'+proj=lcc +lat_1=41.85 +lat_2=42.81666666666667 +lat_0=41.33333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32006":'+proj=lcc +lat_1=40.28333333333333 +lat_2=41.71666666666667 +lat_0=39.66666666666666 +lon_0=-99.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32007":'+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32008":'+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32009":'+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32010":'+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32011":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.66666666666667 +k=0.9999749999999999 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32012":'+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32013":'+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32014":'+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32015":'+proj=tmerc +lat_0=40 +lon_0=-74.33333333333333 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32016":'+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32017":'+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32018":'+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.5 +lon_0=-74 +x_0=304800.6096012192 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32019":'+proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32020":'+proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32021":'+proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32022":'+proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32023":'+proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32024":'+proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32025":'+proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32026":'+proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32027":'+proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32028":'+proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32029":'+proj=lcc +lat_1=39.93333333333333 +lat_2=40.8 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32030":'+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9999938 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32031":'+proj=lcc +lat_1=33.76666666666667 +lat_2=34.96666666666667 +lat_0=33 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32033":'+proj=lcc +lat_1=32.33333333333334 +lat_2=33.66666666666666 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32034":'+proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32035":'+proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32036":'+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=30480.06096012192 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32037":'+proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32038":'+proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-97.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32039":'+proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32040":'+proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32041":'+proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32042":'+proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32043":'+proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32044":'+proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32045":'+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32046":'+proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32047":'+proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32048":'+proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32049":'+proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32050":'+proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32051":'+proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32052":'+proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32053":'+proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32054":'+proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32055":'+proj=tmerc +lat_0=40.66666666666666 +lon_0=-105.1666666666667 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32056":'+proj=tmerc +lat_0=40.66666666666666 +lon_0=-107.3333333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32057":'+proj=tmerc +lat_0=40.66666666666666 +lon_0=-108.75 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32058":'+proj=tmerc +lat_0=40.66666666666666 +lon_0=-110.0833333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32061":'+proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=500000 +y_0=292209.579 +datum=NAD27 +units=m +no_defs ', - "EPSG:32062":'+proj=lcc +lat_1=14.9 +lat_0=14.9 +lon_0=-90.33333333333333 +k_0=0.99989906 +x_0=500000 +y_0=325992.681 +datum=NAD27 +units=m +no_defs ', - "EPSG:32064":'+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32065":'+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32066":'+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32067":'+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32074":'+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32075":'+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32076":'+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32077":'+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32081":'+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:32082":'+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:32083":'+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:32084":'+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:32085":'+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:32086":'+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:32098":'+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:32099":'+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-91.33333333333333 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32100":'+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32104":'+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32107":'+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32108":'+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32109":'+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32110":'+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32111":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32112":'+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32113":'+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32114":'+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32115":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32116":'+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32117":'+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32118":'+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32119":'+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32120":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32121":'+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32122":'+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32123":'+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32124":'+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32125":'+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32126":'+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32127":'+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32128":'+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32129":'+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32130":'+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32133":'+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32134":'+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32135":'+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32136":'+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32137":'+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32138":'+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32139":'+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32140":'+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32141":'+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32142":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32143":'+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32144":'+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32145":'+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32146":'+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32147":'+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32148":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32149":'+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32150":'+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32151":'+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32152":'+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32153":'+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32154":'+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32155":'+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32156":'+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32157":'+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32158":'+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32161":'+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32164":'+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:32165":'+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:32166":'+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:32167":'+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:32180":'+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32181":'+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32182":'+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32183":'+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32184":'+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32185":'+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32186":'+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32187":'+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32188":'+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32189":'+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32190":'+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32191":'+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32192":'+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32193":'+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32194":'+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32195":'+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32196":'+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32197":'+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32198":'+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32199":'+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32201":'+proj=utm +zone=1 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32202":'+proj=utm +zone=2 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32203":'+proj=utm +zone=3 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32204":'+proj=utm +zone=4 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32205":'+proj=utm +zone=5 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32206":'+proj=utm +zone=6 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32207":'+proj=utm +zone=7 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32208":'+proj=utm +zone=8 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32209":'+proj=utm +zone=9 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32210":'+proj=utm +zone=10 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32211":'+proj=utm +zone=11 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32212":'+proj=utm +zone=12 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32213":'+proj=utm +zone=13 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32214":'+proj=utm +zone=14 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32215":'+proj=utm +zone=15 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32216":'+proj=utm +zone=16 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32217":'+proj=utm +zone=17 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32218":'+proj=utm +zone=18 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32219":'+proj=utm +zone=19 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32220":'+proj=utm +zone=20 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32221":'+proj=utm +zone=21 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32222":'+proj=utm +zone=22 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32223":'+proj=utm +zone=23 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32224":'+proj=utm +zone=24 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32225":'+proj=utm +zone=25 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32226":'+proj=utm +zone=26 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32227":'+proj=utm +zone=27 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32228":'+proj=utm +zone=28 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32229":'+proj=utm +zone=29 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32230":'+proj=utm +zone=30 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32231":'+proj=utm +zone=31 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32232":'+proj=utm +zone=32 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32233":'+proj=utm +zone=33 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32234":'+proj=utm +zone=34 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32235":'+proj=utm +zone=35 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32236":'+proj=utm +zone=36 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32237":'+proj=utm +zone=37 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32238":'+proj=utm +zone=38 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32239":'+proj=utm +zone=39 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32240":'+proj=utm +zone=40 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32241":'+proj=utm +zone=41 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32242":'+proj=utm +zone=42 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32243":'+proj=utm +zone=43 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32244":'+proj=utm +zone=44 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32245":'+proj=utm +zone=45 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32246":'+proj=utm +zone=46 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32247":'+proj=utm +zone=47 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32248":'+proj=utm +zone=48 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32249":'+proj=utm +zone=49 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32250":'+proj=utm +zone=50 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32251":'+proj=utm +zone=51 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32252":'+proj=utm +zone=52 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32253":'+proj=utm +zone=53 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32254":'+proj=utm +zone=54 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32255":'+proj=utm +zone=55 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32256":'+proj=utm +zone=56 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32257":'+proj=utm +zone=57 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32258":'+proj=utm +zone=58 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32259":'+proj=utm +zone=59 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32260":'+proj=utm +zone=60 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32301":'+proj=utm +zone=1 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32302":'+proj=utm +zone=2 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32303":'+proj=utm +zone=3 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32304":'+proj=utm +zone=4 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32305":'+proj=utm +zone=5 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32306":'+proj=utm +zone=6 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32307":'+proj=utm +zone=7 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32308":'+proj=utm +zone=8 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32309":'+proj=utm +zone=9 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32310":'+proj=utm +zone=10 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32311":'+proj=utm +zone=11 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32312":'+proj=utm +zone=12 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32313":'+proj=utm +zone=13 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32314":'+proj=utm +zone=14 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32315":'+proj=utm +zone=15 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32316":'+proj=utm +zone=16 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32317":'+proj=utm +zone=17 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32318":'+proj=utm +zone=18 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32319":'+proj=utm +zone=19 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32320":'+proj=utm +zone=20 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32321":'+proj=utm +zone=21 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32322":'+proj=utm +zone=22 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32323":'+proj=utm +zone=23 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32324":'+proj=utm +zone=24 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32325":'+proj=utm +zone=25 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32326":'+proj=utm +zone=26 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32327":'+proj=utm +zone=27 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32328":'+proj=utm +zone=28 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32329":'+proj=utm +zone=29 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32330":'+proj=utm +zone=30 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32331":'+proj=utm +zone=31 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32332":'+proj=utm +zone=32 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32333":'+proj=utm +zone=33 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32334":'+proj=utm +zone=34 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32335":'+proj=utm +zone=35 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32336":'+proj=utm +zone=36 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32337":'+proj=utm +zone=37 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32338":'+proj=utm +zone=38 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32339":'+proj=utm +zone=39 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32340":'+proj=utm +zone=40 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32341":'+proj=utm +zone=41 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32342":'+proj=utm +zone=42 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32343":'+proj=utm +zone=43 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32344":'+proj=utm +zone=44 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32345":'+proj=utm +zone=45 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32346":'+proj=utm +zone=46 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32347":'+proj=utm +zone=47 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32348":'+proj=utm +zone=48 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32349":'+proj=utm +zone=49 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32350":'+proj=utm +zone=50 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32351":'+proj=utm +zone=51 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32352":'+proj=utm +zone=52 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32353":'+proj=utm +zone=53 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32354":'+proj=utm +zone=54 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32355":'+proj=utm +zone=55 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32356":'+proj=utm +zone=56 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32357":'+proj=utm +zone=57 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32358":'+proj=utm +zone=58 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32359":'+proj=utm +zone=59 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32360":'+proj=utm +zone=60 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32401":'+proj=utm +zone=1 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32402":'+proj=utm +zone=2 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32403":'+proj=utm +zone=3 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32404":'+proj=utm +zone=4 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32405":'+proj=utm +zone=5 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32406":'+proj=utm +zone=6 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32407":'+proj=utm +zone=7 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32408":'+proj=utm +zone=8 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32409":'+proj=utm +zone=9 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32410":'+proj=utm +zone=10 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32411":'+proj=utm +zone=11 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32412":'+proj=utm +zone=12 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32413":'+proj=utm +zone=13 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32414":'+proj=utm +zone=14 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32415":'+proj=utm +zone=15 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32416":'+proj=utm +zone=16 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32417":'+proj=utm +zone=17 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32418":'+proj=utm +zone=18 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32419":'+proj=utm +zone=19 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32420":'+proj=utm +zone=20 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32421":'+proj=utm +zone=21 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32422":'+proj=utm +zone=22 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32423":'+proj=utm +zone=23 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32424":'+proj=utm +zone=24 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32425":'+proj=utm +zone=25 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32426":'+proj=utm +zone=26 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32427":'+proj=utm +zone=27 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32428":'+proj=utm +zone=28 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32429":'+proj=utm +zone=29 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32430":'+proj=utm +zone=30 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32431":'+proj=utm +zone=31 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32432":'+proj=utm +zone=32 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32433":'+proj=utm +zone=33 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32434":'+proj=utm +zone=34 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32435":'+proj=utm +zone=35 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32436":'+proj=utm +zone=36 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32437":'+proj=utm +zone=37 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32438":'+proj=utm +zone=38 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32439":'+proj=utm +zone=39 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32440":'+proj=utm +zone=40 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32441":'+proj=utm +zone=41 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32442":'+proj=utm +zone=42 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32443":'+proj=utm +zone=43 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32444":'+proj=utm +zone=44 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32445":'+proj=utm +zone=45 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32446":'+proj=utm +zone=46 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32447":'+proj=utm +zone=47 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32448":'+proj=utm +zone=48 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32449":'+proj=utm +zone=49 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32450":'+proj=utm +zone=50 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32451":'+proj=utm +zone=51 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32452":'+proj=utm +zone=52 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32453":'+proj=utm +zone=53 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32454":'+proj=utm +zone=54 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32455":'+proj=utm +zone=55 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32456":'+proj=utm +zone=56 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32457":'+proj=utm +zone=57 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32458":'+proj=utm +zone=58 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32459":'+proj=utm +zone=59 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32460":'+proj=utm +zone=60 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32501":'+proj=utm +zone=1 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32502":'+proj=utm +zone=2 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32503":'+proj=utm +zone=3 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32504":'+proj=utm +zone=4 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32505":'+proj=utm +zone=5 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32506":'+proj=utm +zone=6 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32507":'+proj=utm +zone=7 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32508":'+proj=utm +zone=8 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32509":'+proj=utm +zone=9 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32510":'+proj=utm +zone=10 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32511":'+proj=utm +zone=11 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32512":'+proj=utm +zone=12 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32513":'+proj=utm +zone=13 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32514":'+proj=utm +zone=14 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32515":'+proj=utm +zone=15 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32516":'+proj=utm +zone=16 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32517":'+proj=utm +zone=17 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32518":'+proj=utm +zone=18 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32519":'+proj=utm +zone=19 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32520":'+proj=utm +zone=20 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32521":'+proj=utm +zone=21 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32522":'+proj=utm +zone=22 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32523":'+proj=utm +zone=23 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32524":'+proj=utm +zone=24 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32525":'+proj=utm +zone=25 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32526":'+proj=utm +zone=26 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32527":'+proj=utm +zone=27 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32528":'+proj=utm +zone=28 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32529":'+proj=utm +zone=29 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32530":'+proj=utm +zone=30 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32531":'+proj=utm +zone=31 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32532":'+proj=utm +zone=32 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32533":'+proj=utm +zone=33 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32534":'+proj=utm +zone=34 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32535":'+proj=utm +zone=35 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32536":'+proj=utm +zone=36 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32537":'+proj=utm +zone=37 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32538":'+proj=utm +zone=38 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32539":'+proj=utm +zone=39 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32540":'+proj=utm +zone=40 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32541":'+proj=utm +zone=41 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32542":'+proj=utm +zone=42 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32543":'+proj=utm +zone=43 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32544":'+proj=utm +zone=44 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32545":'+proj=utm +zone=45 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32546":'+proj=utm +zone=46 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32547":'+proj=utm +zone=47 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32548":'+proj=utm +zone=48 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32549":'+proj=utm +zone=49 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32550":'+proj=utm +zone=50 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32551":'+proj=utm +zone=51 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32552":'+proj=utm +zone=52 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32553":'+proj=utm +zone=53 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32554":'+proj=utm +zone=54 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32555":'+proj=utm +zone=55 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32556":'+proj=utm +zone=56 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32557":'+proj=utm +zone=57 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32558":'+proj=utm +zone=58 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32559":'+proj=utm +zone=59 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32560":'+proj=utm +zone=60 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32601":'+proj=utm +zone=1 +datum=WGS84 +units=m +no_defs ', - "EPSG:32602":'+proj=utm +zone=2 +datum=WGS84 +units=m +no_defs ', - "EPSG:32603":'+proj=utm +zone=3 +datum=WGS84 +units=m +no_defs ', - "EPSG:32604":'+proj=utm +zone=4 +datum=WGS84 +units=m +no_defs ', - "EPSG:32605":'+proj=utm +zone=5 +datum=WGS84 +units=m +no_defs ', - "EPSG:32606":'+proj=utm +zone=6 +datum=WGS84 +units=m +no_defs ', - "EPSG:32607":'+proj=utm +zone=7 +datum=WGS84 +units=m +no_defs ', - "EPSG:32608":'+proj=utm +zone=8 +datum=WGS84 +units=m +no_defs ', - "EPSG:32609":'+proj=utm +zone=9 +datum=WGS84 +units=m +no_defs ', - "EPSG:32610":'+proj=utm +zone=10 +datum=WGS84 +units=m +no_defs ', - "EPSG:32611":'+proj=utm +zone=11 +datum=WGS84 +units=m +no_defs ', - "EPSG:32612":'+proj=utm +zone=12 +datum=WGS84 +units=m +no_defs ', - "EPSG:32613":'+proj=utm +zone=13 +datum=WGS84 +units=m +no_defs ', - "EPSG:32614":'+proj=utm +zone=14 +datum=WGS84 +units=m +no_defs ', - "EPSG:32615":'+proj=utm +zone=15 +datum=WGS84 +units=m +no_defs ', - "EPSG:32616":'+proj=utm +zone=16 +datum=WGS84 +units=m +no_defs ', - "EPSG:32617":'+proj=utm +zone=17 +datum=WGS84 +units=m +no_defs ', - "EPSG:32618":'+proj=utm +zone=18 +datum=WGS84 +units=m +no_defs ', - "EPSG:32619":'+proj=utm +zone=19 +datum=WGS84 +units=m +no_defs ', - "EPSG:32620":'+proj=utm +zone=20 +datum=WGS84 +units=m +no_defs ', - "EPSG:32621":'+proj=utm +zone=21 +datum=WGS84 +units=m +no_defs ', - "EPSG:32622":'+proj=utm +zone=22 +datum=WGS84 +units=m +no_defs ', - "EPSG:32623":'+proj=utm +zone=23 +datum=WGS84 +units=m +no_defs ', - "EPSG:32624":'+proj=utm +zone=24 +datum=WGS84 +units=m +no_defs ', - "EPSG:32625":'+proj=utm +zone=25 +datum=WGS84 +units=m +no_defs ', - "EPSG:32626":'+proj=utm +zone=26 +datum=WGS84 +units=m +no_defs ', - "EPSG:32627":'+proj=utm +zone=27 +datum=WGS84 +units=m +no_defs ', - "EPSG:32628":'+proj=utm +zone=28 +datum=WGS84 +units=m +no_defs ', - "EPSG:32629":'+proj=utm +zone=29 +datum=WGS84 +units=m +no_defs ', - "EPSG:32630":'+proj=utm +zone=30 +datum=WGS84 +units=m +no_defs ', - "EPSG:32631":'+proj=utm +zone=31 +datum=WGS84 +units=m +no_defs ', - "EPSG:32632":'+proj=utm +zone=32 +datum=WGS84 +units=m +no_defs ', - "EPSG:32633":'+proj=utm +zone=33 +datum=WGS84 +units=m +no_defs ', - "EPSG:32634":'+proj=utm +zone=34 +datum=WGS84 +units=m +no_defs ', - "EPSG:32635":'+proj=utm +zone=35 +datum=WGS84 +units=m +no_defs ', - "EPSG:32636":'+proj=utm +zone=36 +datum=WGS84 +units=m +no_defs ', - "EPSG:32637":'+proj=utm +zone=37 +datum=WGS84 +units=m +no_defs ', - "EPSG:32638":'+proj=utm +zone=38 +datum=WGS84 +units=m +no_defs ', - "EPSG:32639":'+proj=utm +zone=39 +datum=WGS84 +units=m +no_defs ', - "EPSG:32640":'+proj=utm +zone=40 +datum=WGS84 +units=m +no_defs ', - "EPSG:32641":'+proj=utm +zone=41 +datum=WGS84 +units=m +no_defs ', - "EPSG:32642":'+proj=utm +zone=42 +datum=WGS84 +units=m +no_defs ', - "EPSG:32643":'+proj=utm +zone=43 +datum=WGS84 +units=m +no_defs ', - "EPSG:32644":'+proj=utm +zone=44 +datum=WGS84 +units=m +no_defs ', - "EPSG:32645":'+proj=utm +zone=45 +datum=WGS84 +units=m +no_defs ', - "EPSG:32646":'+proj=utm +zone=46 +datum=WGS84 +units=m +no_defs ', - "EPSG:32647":'+proj=utm +zone=47 +datum=WGS84 +units=m +no_defs ', - "EPSG:32648":'+proj=utm +zone=48 +datum=WGS84 +units=m +no_defs ', - "EPSG:32649":'+proj=utm +zone=49 +datum=WGS84 +units=m +no_defs ', - "EPSG:32650":'+proj=utm +zone=50 +datum=WGS84 +units=m +no_defs ', - "EPSG:32651":'+proj=utm +zone=51 +datum=WGS84 +units=m +no_defs ', - "EPSG:32652":'+proj=utm +zone=52 +datum=WGS84 +units=m +no_defs ', - "EPSG:32653":'+proj=utm +zone=53 +datum=WGS84 +units=m +no_defs ', - "EPSG:32654":'+proj=utm +zone=54 +datum=WGS84 +units=m +no_defs ', - "EPSG:32655":'+proj=utm +zone=55 +datum=WGS84 +units=m +no_defs ', - "EPSG:32656":'+proj=utm +zone=56 +datum=WGS84 +units=m +no_defs ', - "EPSG:32657":'+proj=utm +zone=57 +datum=WGS84 +units=m +no_defs ', - "EPSG:32658":'+proj=utm +zone=58 +datum=WGS84 +units=m +no_defs ', - "EPSG:32659":'+proj=utm +zone=59 +datum=WGS84 +units=m +no_defs ', - "EPSG:32660":'+proj=utm +zone=60 +datum=WGS84 +units=m +no_defs ', - "EPSG:32661":'+proj=stere +lat_0=90 +lat_ts=90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:32662":'+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:32663":'+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32664":'+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=WGS84 +units=us-ft +no_defs ', - "EPSG:32665":'+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=WGS84 +units=us-ft +no_defs ', - "EPSG:32666":'+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=WGS84 +units=us-ft +no_defs ', - "EPSG:32667":'+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=WGS84 +units=us-ft +no_defs ', - "EPSG:32701":'+proj=utm +zone=1 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32702":'+proj=utm +zone=2 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32703":'+proj=utm +zone=3 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32704":'+proj=utm +zone=4 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32705":'+proj=utm +zone=5 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32706":'+proj=utm +zone=6 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32707":'+proj=utm +zone=7 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32708":'+proj=utm +zone=8 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32709":'+proj=utm +zone=9 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32710":'+proj=utm +zone=10 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32711":'+proj=utm +zone=11 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32712":'+proj=utm +zone=12 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32713":'+proj=utm +zone=13 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32714":'+proj=utm +zone=14 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32715":'+proj=utm +zone=15 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32716":'+proj=utm +zone=16 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32717":'+proj=utm +zone=17 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32718":'+proj=utm +zone=18 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32719":'+proj=utm +zone=19 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32720":'+proj=utm +zone=20 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32721":'+proj=utm +zone=21 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32722":'+proj=utm +zone=22 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32723":'+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32724":'+proj=utm +zone=24 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32725":'+proj=utm +zone=25 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32726":'+proj=utm +zone=26 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32727":'+proj=utm +zone=27 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32728":'+proj=utm +zone=28 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32729":'+proj=utm +zone=29 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32730":'+proj=utm +zone=30 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32731":'+proj=utm +zone=31 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32732":'+proj=utm +zone=32 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32733":'+proj=utm +zone=33 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32734":'+proj=utm +zone=34 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32735":'+proj=utm +zone=35 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32736":'+proj=utm +zone=36 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32737":'+proj=utm +zone=37 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32738":'+proj=utm +zone=38 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32739":'+proj=utm +zone=39 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32740":'+proj=utm +zone=40 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32741":'+proj=utm +zone=41 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32742":'+proj=utm +zone=42 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32743":'+proj=utm +zone=43 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32744":'+proj=utm +zone=44 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32745":'+proj=utm +zone=45 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32746":'+proj=utm +zone=46 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32747":'+proj=utm +zone=47 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32748":'+proj=utm +zone=48 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32749":'+proj=utm +zone=49 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32750":'+proj=utm +zone=50 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32751":'+proj=utm +zone=51 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32752":'+proj=utm +zone=52 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32753":'+proj=utm +zone=53 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32754":'+proj=utm +zone=54 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32755":'+proj=utm +zone=55 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32756":'+proj=utm +zone=56 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32757":'+proj=utm +zone=57 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32758":'+proj=utm +zone=58 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32759":'+proj=utm +zone=59 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32760":'+proj=utm +zone=60 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32761":'+proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:32766":'+proj=tmerc +lat_0=0 +lon_0=36 +k=0.9996 +x_0=500000 +y_0=10000000 +datum=WGS84 +units=m +no_defs ' -}; - -},{}],78:[function(require,module,exports){ -var util = require('util') - , fileType = require('file-type'); - -var TileCreator = require('./index').TileCreator - , TileBoundingBoxUtils = require('../tileBoundingBoxUtils') - , TileUtilities = require('./tileUtilities') - , ProjectTile = require('./projectTile.js'); - -function CanvasTileCreator(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo, canvas) { - TileCreator.apply(this, arguments); - this.canvas = canvas || document.createElement('canvas'); - this.canvas.width = width; - this.canvas.height = height; - this.ctx = this.canvas.getContext('2d'); - - this.image = document.createElement('img'); - - this.tileCanvas = document.createElement('canvas'); - this.tileContext = this.tileCanvas.getContext('2d'); - this.tileCanvas.width = tileMatrix.tile_width; - this.tileCanvas.height = tileMatrix.tile_height; - - this.imageData = new Uint8ClampedArray(width * height * 4); -} - -util.inherits(CanvasTileCreator, TileCreator); - -CanvasTileCreator.prototype.addPixel = function (targetX, targetY, sourceX, sourceY) { - var color = this.tileContext.getImageData(sourceX, sourceY, 1, 1); - this.imageData.set(color.data, (targetY * this.width * 4) + (targetX * 4)); -}; - -CanvasTileCreator.prototype.addTile = function (tileData, gridColumn, gridRow) { - var bb = TileBoundingBoxUtils.getTileBoundingBox(this.tileMatrixSet.getBoundingBox(), this.tileMatrix, gridColumn, gridRow); - - var type = fileType(tileData); - var binary = ''; - var bytes = tileData; - var len = bytes.byteLength; - for (var i = 0; i < len; i++) { - binary += String.fromCharCode( bytes[ i ] ); - } - var base64Data = btoa( binary ); - - return new Promise(function(resolve, reject) { - this.chunks = []; - this.image.onload = function() { - resolve(this.tileContext.drawImage(this.image, 0, 0)); - }.bind(this); - this.image.src = 'data:'+type.mime+';base64,' + base64Data; - }.bind(this)) - .then(function() { - return this.projectTile(tileData, gridColumn, gridRow); - }.bind(this)) - .then(function() { - if (this.chunks && this.chunks.length) { - return this.chunks.reduce(function(sequence, chunk) { - var type = fileType(tileData); - - var binary = ''; - var bytes = chunk.chunk; - var len = bytes.byteLength; - for (var i = 0; i < len; i++) { - binary += String.fromCharCode( bytes[ i ] ); - } - - var base64DataChunk = btoa( binary ); - var image = document.createElement('img'); - - return sequence.then(function() { - return new Promise(function(resolve, reject) { - image.onload = function() { - var p = chunk.position; - - this.ctx.drawImage(image, - p.sx, - p.sy, - p.sWidth, - p.sHeight, - p.dx, - p.dy, - p.dWidth, - p.dHeight - ); - resolve(); - }.bind(this); - image.src = 'data:'+type.mime+';base64,' + base64DataChunk; - }.bind(this)); - }.bind(this)); - - }.bind(this), Promise.resolve()); - } - }.bind(this)); -}; - -CanvasTileCreator.prototype.getCompleteTile = function (format, callback) { - return this.canvas.toDataURL(); -}; - -CanvasTileCreator.prototype.reproject = function (tileData, tilePieceBoundingBox) { - var ctx = this.ctx; - var width = this.width; - var height = this.height; - - var piecePosition = TileUtilities.getPiecePosition(tilePieceBoundingBox, this.tileBoundingBox, this.height, this.width, this.projectionTo, this.projectionFrom, this.projectionFromDefinition, this.tileHeightUnitsPerPixel, this.tileWidthUnitsPerPixel, this.tileMatrix.pixel_x_size, this.tileMatrix.pixel_y_size); - - var job = { - tileBoundingBox: JSON.stringify(this.tileBoundingBox), - tileWidthUnitsPerPixel: this.tileWidthUnitsPerPixel, - tileHeightUnitsPerPixel: this.tileHeightUnitsPerPixel, - projectionTo: this.projectionTo, - projectionFrom: this.projectionFrom, - projectionFromDefinition: this.projectionFromDefinition, - tileWidth: this.tileMatrix.tile_width, - tileHeight: this.tileMatrix.tile_height, - pixelYSize: this.tileMatrix.pixel_y_size, - pixelXSize: this.tileMatrix.pixel_x_size, - height: this.height, - width: this.width, - tilePieceBoundingBox: JSON.stringify(tilePieceBoundingBox), - imageData: this.tileContext.getImageData(0, 0, this.tileMatrix.tile_width, this.tileMatrix.tile_height).data.buffer - }; - - return new Promise(function(resolve, reject) { - try { - var work = require('webworkify'); - var worker = work(require('./tileWorker.js')); - - worker.onmessage = function(e) { - resolve(workerDone(e.data, piecePosition, ctx)); - }; - - worker.postMessage(job, [this.tileContext.getImageData(0, 0, this.tileMatrix.tile_width, this.tileMatrix.tile_height).data.buffer]); - - } catch (e) { - worker = ProjectTile; - worker(job, function(err, data) { - resolve(workerDone(data, piecePosition, ctx)); - }); - } - }.bind(this)); -}; - -function workerDone(data, piecePosition, ctx) { - if (data.message === 'done') { - var imageData = new Uint8ClampedArray(data.imageData); - var offsetX = piecePosition.startX; - var offsetY = piecePosition.startY; - var finalWidth = data.finalWidth; - var finalHeight = data.finalHeight; - - var tmpCanvas = document.createElement('canvas'); - tmpCanvas.width = finalWidth; - tmpCanvas.height = finalHeight; - tmpCanvas.getContext('2d').putImageData(new ImageData(imageData, finalWidth, finalHeight), 0, 0); - - ctx.drawImage(tmpCanvas, offsetX, offsetY); - } -} - - -module.exports = CanvasTileCreator; - -},{"../tileBoundingBoxUtils":93,"./index":79,"./projectTile.js":81,"./tileUtilities":82,"./tileWorker.js":83,"file-type":223,"util":343,"webworkify":347}],79:[function(require,module,exports){ -(function (process){ -var proj4 = require('proj4'); - -proj4 = 'default' in proj4 ? proj4['default'] : proj4; - -var TileBoundingBoxUtils = require('../tileBoundingBoxUtils'); - -module.exports.initialize = function(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo, canvas) { - var isElectron = !!(typeof navigator != 'undefined' && navigator.userAgent.toLowerCase().indexOf(' electron/') > -1); - var isPhantom = !!(typeof window != 'undefined' && window.callPhantom && window._phantom); - var isNode = typeof(process) !== 'undefined' && process.version; - if (isNode && !isPhantom && !isElectron) { - var NodeTileCreator = require('./node'); - return new NodeTileCreator(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo, canvas); - } else { - var CanvasTileCreator = require('./canvas'); - return new CanvasTileCreator(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo, canvas); - } -} - -function TileCreator(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo) { - this.width = width; - this.height = height; - this.tileMatrix = tileMatrix; - this.projectionFrom = srs.organization.toUpperCase() + ':' + srs.organization_coordsys_id; - this.projectionFromDefinition = srs.definition; - this.projectionTo = projectionTo.toUpperCase(); - this.tileBoundingBox = tileBoundingBox; - this.tileMatrixSet = tileMatrixSet; - this.chunks = []; - - this.tileHeightUnitsPerPixel = (tileBoundingBox.maxLatitude - tileBoundingBox.minLatitude) / height; - this.tileWidthUnitsPerPixel = (tileBoundingBox.maxLongitude - tileBoundingBox.minLongitude) / width; - - // use this as a quick check if the projections are equal. If they are we can shortcut some math - // special cases 'EPSG:900913' =='EPSG:3857' == 'EPSG:102113' - this.sameProjection = (this.projectionFrom === this.projectionTo) || (this.projectionTo === 'EPSG:3857' && (this.projectionFrom === 'EPSG:900913' || this.projectionFrom === 'EPSG:102113')); -} - -module.exports.TileCreator = TileCreator; - -TileCreator.prototype.projectTile = function(tileData, gridColumn, gridRow) { - var bb = TileBoundingBoxUtils.getTileBoundingBox(this.tileMatrixSet.getBoundingBox(), this.tileMatrix, gridColumn, gridRow); - if (!this.sameProjection) { - return this.reproject(tileData, bb); - } else { - return Promise.resolve(this.cutAndScale(tileData, bb)); - } -} - -TileCreator.prototype.cutAndScale = function (tileData, tilePieceBoundingBox) { - var position = TileBoundingBoxUtils.determinePositionAndScale(tilePieceBoundingBox, this.tileMatrix.tile_height, this.tileMatrix.tile_width, this.tileBoundingBox, this.height, this.width); - if (position.xPositionInFinalTileStart >= this.width || position.xPositionInFinalTileEnd <= 0 || position.yPositionInFinalTileStart >= this.height || position.yPositionInFinalTileEnd <= 0) { - // this tile doesn't belong just skip it - } else { - this.addChunk(tileData, position); - } -}; - -TileCreator.prototype.addChunk = function (chunk, position) { - this.chunks.push({ - chunk: chunk, - position: position - }); -}; - -TileCreator.prototype.reproject = function (tileData, tilePieceBoundingBox) { - var y = 0; - var x = 0; - var height = this.height; - var width = this.width; - var proj4To = proj4(this.projectionTo); - var proj4From; - if (this.projectionFrom) { - try { - proj4From = proj4(this.projectionFrom); - } catch (e) {} - } - if (!proj4From && this.projectionFromDefinition) { - proj4From = proj4(this.projectionFromDefinition); - } - var conversion; - try { - conversion = proj4(this.projectionTo, this.projectionFrom); - } catch (e) {} - if (!conversion) { - conversion = proj4(this.projectionTo, this.projectionFromDefinition); - } - - var latitude; - - var rows = []; - for (var i = 0; i < height; i++) { - rows.push(i); - } - var columns = []; - for (var i = 0; i < width; i++) { - columns.push(i); - } - - return rows.reduce(function(rowSequence, row) { - return rowSequence.then(function() { - latitude = this.tileBoundingBox.maxLatitude - (row * this.tileHeightUnitsPerPixel); - var currentColumns = columns.slice(); - return currentColumns.reduce(function(columnSequence, column) { - return columnSequence.then(function() { - // loop over all pixels in the target tile - - // determine the position of the current pixel in the target tile - var longitude = this.tileBoundingBox.minLongitude + (column * this.tileWidthUnitsPerPixel); - - // project that lat/lng to the source coordinate system - var projected = conversion.forward([longitude, latitude]); - var projectedLongitude = projected[0]; - var projectedLatitude = projected[1]; - - // now find the source pixel - var xPixel = this.tileMatrix.tile_width - Math.round((tilePieceBoundingBox.maxLongitude - projectedLongitude) / this.tileMatrix.pixel_x_size); - var yPixel = Math.round((tilePieceBoundingBox.maxLatitude - projectedLatitude) / this.tileMatrix.pixel_y_size); - - if (xPixel >= 0 && xPixel < this.tileMatrix.tile_width - && yPixel >= 0 && yPixel < this.tileMatrix.tile_height) { - this.addPixel(column, row, xPixel, yPixel); - } - }.bind(this)); - }.bind(this), Promise.resolve()); - }.bind(this)); - }.bind(this), Promise.resolve()); -}; - -}).call(this,require('_process')) -},{"../tileBoundingBoxUtils":93,"./canvas":78,"./node":80,"_process":284,"proj4":285}],80:[function(require,module,exports){ -var util = require('util') - , concat = require('concat-stream') - , ImageUtils = require('../imageUtils'); - -var TileCreator = require('./index').TileCreator; - -function NodeTileCreator(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, projectionFrom, projectionTo, canvas) { - TileCreator.apply(this, arguments); - - this.Canvas = require('canvas'); - this.canvas = canvas || this.Canvas.createCanvas(width, height); - this.ctx = this.canvas.getContext('2d'); - - this.tileCanvas = this.Canvas.createCanvas(width, height); - this.tileContext = this.tileCanvas.getContext('2d'); - this.tileCanvas.width = tileMatrix.tile_width; - this.tileCanvas.height = tileMatrix.tile_height; - this.imageData = this.Canvas.createImageData(new Uint8ClampedArray(width * height * 4), width, height); - this.pixelAdded = false; -} - -util.inherits(NodeTileCreator, TileCreator); - -NodeTileCreator.prototype.addPixel = function (targetX, targetY, sourceX, sourceY) { - var color = this.tileContext.getImageData(sourceX, sourceY, 1, 1); - this.imageData.data.set(color.data, (targetY * this.width * 4) + (targetX * 4)); - this.pixelAdded = true; -}; - -NodeTileCreator.prototype.addTile = function (tileData, gridColumn, gridRow) { - return ImageUtils.getImage(tileData) - .then(function(img) { - this.tile = img; - this.tileContext.drawImage(img, 0, 0); - this.chunks = []; - }.bind(this)) - .then(function() { - return this.projectTile(tileData, gridColumn, gridRow); - }.bind(this)) - .then(function() { - if (this.pixelAdded) { - this.ctx.putImageData(this.imageData, 0, 0); - } - }.bind(this)) - .then(function() { - if (this.chunks && this.chunks.length) { - return this.chunks.reduce(function(sequence, chunk) { - return sequence.then(function() { - return ImageUtils.getImage(tileData); - }.bind(this)) - .then(function(image) { - var p = chunk.position; - this.ctx.drawImage(image, - p.sx, - p.sy, - p.sWidth, - p.sHeight, - p.dx, - p.dy, - p.dWidth, - p.dHeight - ); - }.bind(this)); - }.bind(this), Promise.resolve()); - } - }.bind(this)) - .then(function() { - return this.canvas; - }.bind(this)); -}; - -NodeTileCreator.prototype.getCompleteTile = function (format) { - return new Promise(function (resolve, reject) { - var writeStream = concat(function(buffer) { - resolve(buffer); - }); - var stream = null; - if (format === 'png') { - stream = this.canvas.createPNGStream(); - } else { - stream = this.canvas.createJPEGStream(); - } - stream.pipe(writeStream); - }.bind(this)); -}; - -module.exports = NodeTileCreator; - -},{"../imageUtils":89,"./index":79,"canvas":undefined,"concat-stream":185,"util":343}],81:[function(require,module,exports){ -var proj4 = require('proj4'); - -proj4 = 'default' in proj4 ? proj4['default'] : proj4; - -var TileUtilities = require('./tileUtilities') - , proj4Defs = require('../../proj4Defs'); - -module.exports = function(job, callback) { - console.log('Tile Worker - working'); - console.time('Tile Worker - time'); - var self = this; - - if (proj4Defs[job.projectionTo]) { - proj4.defs(job.projectionTo, proj4Defs[job.projectionTo]); - } - if (proj4Defs[job.projectionFrom]) { - proj4.defs(job.projectionFrom, proj4Defs[job.projectionFrom]); - } - var proj4To = proj4(job.projectionTo); - var proj4From = proj4(job.projectionFrom); - - var conversion; - try { - conversion = proj4(job.projectionTo, job.projectionFrom); - } catch (e) {} - if (!conversion) { - conversion = proj4(job.projectionTo, job.projectionFromDefinition); - } - - var tileBoundingBox = JSON.parse(job.tileBoundingBox); - var tilePieceBoundingBox = JSON.parse(job.tilePieceBoundingBox); - - var piecePosition = TileUtilities.getPiecePosition(tilePieceBoundingBox, tileBoundingBox, job.height, job.width, job.projectionTo, job.projectionFrom, job.projectionFromDefinition, job.tileHeightUnitsPerPixel, job.tileWidthUnitsPerPixel, job.pixelXSize, job.pixelYSize); - var x = piecePosition.startX; - var y = piecePosition.startY; - - var finalWidth = (piecePosition.endX - piecePosition.startX); - var finalHeight = (piecePosition.endY - piecePosition.startY); - if (finalWidth <= 0 || finalHeight <= 0) { - console.timeEnd('Tile Worker - time'); - if (callback) { - return callback(null, {message:'donenodata'}); - } else { - postMessage({message:'donenodata'}); - return self.close(); - } - } - - var imageData = new Uint8ClampedArray(job.imageData); - - var finalImageData = new Uint8ClampedArray(finalWidth * finalHeight * 4); - var latitude; - - var yArray = []; - for (var i = y; i < piecePosition.endY; i++) { - yArray.push(i); - } - - var xArray = []; - for (var i = x; i < piecePosition.endX; i++) { - xArray.push(i); - } - - return yArray.reduce(function(ySequence, y) { - return ySequence.then(function() { - latitude = tileBoundingBox.maxLatitude - (y * job.tileHeightUnitsPerPixel); - var currentXArray = xArray.slice(); - return currentXArray.reduce(function(xSequence, x) { - return xSequence.then(function() { - longitude = tileBoundingBox.minLongitude + (x * job.tileWidthUnitsPerPixel); - var projected = conversion.forward([longitude, latitude]); - var projectedLongitude = projected[0]; - var projectedLatitude = projected[1]; - - var xPixel = job.tileWidth - Math.round((tilePieceBoundingBox.maxLongitude - projectedLongitude) / job.pixelXSize); - var yPixel = Math.round((tilePieceBoundingBox.maxLatitude - projectedLatitude) / job.pixelYSize); - if (xPixel >= 0 && xPixel < job.tileWidth - && yPixel >= 0 && yPixel < job.tileHeight) { - var sliceStart = (yPixel * job.tileWidth * 4) + (xPixel * 4); - if (sliceStart >= 0) { - finalImageData.set(imageData.slice(sliceStart, sliceStart + 4), ((y-piecePosition.startY)*finalWidth*4) + ((x-piecePosition.startX)*4)); - } - } - }); - }, Promise.resolve()); - }); - }, Promise.resolve()) - .then(function() { - console.timeEnd('Tile Worker - time'); - if (callback) { - callback(null, {message:'done', imageData: finalImageData.buffer, finalWidth: finalWidth, finalHeight: finalHeight}, [finalImageData.buffer]); - } else { - postMessage({message:'done', imageData: finalImageData.buffer, finalWidth: finalWidth, finalHeight: finalHeight}, [finalImageData.buffer]); - self.close(); - } - }); -} - -},{"../../proj4Defs":77,"./tileUtilities":82,"proj4":285}],82:[function(require,module,exports){ -var proj4 = require('proj4'); -proj4 = 'default' in proj4 ? proj4['default'] : proj4; - -module.exports.getPiecePosition = function(tilePieceBoundingBox, tileBoundingBox, height, width, projectionTo, projectionFrom, projectionFromDefinition, tileHeightUnitsPerPixel, tileWidthUnitsPerPixel, pixelXSize, pixelYSize) { - var conversion; - try { - conversion = proj4(projectionTo, projectionFrom); - } catch (e) {} - if (!conversion) { - conversion = proj4(projectionTo, projectionFromDefinition); - } - - var maxLatitude = tilePieceBoundingBox.maxLatitude; - var minLatitude = tilePieceBoundingBox.minLatitude; - var minLongitude = tilePieceBoundingBox.minLongitude - pixelXSize; - var maxLongitude = tilePieceBoundingBox.maxLongitude + pixelXSize; - - if (projectionTo.toUpperCase() === 'EPSG:3857' && projectionFrom.toUpperCase() === 'EPSG:4326') { - maxLatitude = maxLatitude > 85.0511 ? 85.0511 : maxLatitude; - minLatitude = minLatitude < -85.0511 ? -85.0511 : minLatitude; - minLongitude = minLongitude < -180.0 ? -180.0 : minLongitude; - maxLongitude = maxLongitude > 180.0 ? 180.0 : maxLongitude; - } - - // ensure the projeced longitude wont wrap around the world - var negative180 = proj4('EPSG:4326', projectionTo, [-180,0]); - var positive180 = proj4('EPSG:4326', projectionTo, [180,0]); - minLongitude = minLongitude < negative180[0] ? negative180[0] : minLongitude; - maxLongitude = maxLongitude > positive180[0] ? positive180[0] : maxLongitude; - - var pieceBoundingBoxInTileProjectionSW = conversion.inverse([minLongitude, minLatitude]); - var pieceBoundingBoxInTileProjectionNE = conversion.inverse([maxLongitude, maxLatitude]); - - var pieceBBProjected = { - minLatitude: isNaN(pieceBoundingBoxInTileProjectionSW[1]) ? tileBoundingBox.minLatitude : pieceBoundingBoxInTileProjectionSW[1], - maxLatitude: isNaN(pieceBoundingBoxInTileProjectionNE[1]) ? tileBoundingBox.maxLatitude : pieceBoundingBoxInTileProjectionNE[1], - minLongitude: pieceBoundingBoxInTileProjectionSW[0], - maxLongitude: pieceBoundingBoxInTileProjectionNE[0] - }; - - var startY = y = Math.max(0, Math.floor((tileBoundingBox.maxLatitude - pieceBBProjected.maxLatitude) / tileHeightUnitsPerPixel)); - var startX = x = Math.max(0, Math.floor((pieceBBProjected.minLongitude - tileBoundingBox.minLongitude) / tileWidthUnitsPerPixel)); - - var endY = Math.min(height, height - Math.floor((pieceBBProjected.minLatitude - tileBoundingBox.minLatitude) / tileHeightUnitsPerPixel)); - var endX = Math.min(width, width - Math.floor((tileBoundingBox.maxLongitude - pieceBBProjected.maxLongitude) / tileWidthUnitsPerPixel)); - - return { - startY: startY, - startX: startX, - endY: endY, - endX: endX - }; -} - -},{"proj4":285}],83:[function(require,module,exports){ -var ProjectTile = require('./projectTile'); - -function tileWorker(e) { - console.log('Tile Worker - working'); - console.time('Tile Worker - time'); - var self = this; - var job = e.data; - - ProjectTile(job, function(err, data) { - postMessage(data); - self.close(); - }); -} - -module.exports = function(self) { - self.onmessage = tileWorker; - self.onerror = function(e) { - console.log('error', e); - } -}; - -},{"./projectTile":81}],84:[function(require,module,exports){ -/** - * Feature Draw Type module. - * @module tiles/features - */ -var FeatureDrawType = { - /** - * Circle for a point - */ - CIRCLE: 'CIRCLE', - /** - * Stroke for a line of polygon - */ - STROKE: 'STOKE', - /** - * Fill for a polygon - */ - FILL: 'FILL' -}; - - -module.exports = FeatureDrawType; - -},{}],85:[function(require,module,exports){ -/** - * FeaturePaint module. - * @module tiles/features - */ -var FeaturePaint = function () { - this.featurePaints = {}; -}; - -/** - * Get the feature paint for the featureDrawType - * @param {module:tiles/features~FeatureDrawType} featureDrawType - * @return {module:tiles/features~FeaturePaint} paint - */ -FeaturePaint.prototype.getPaint = function(featureDrawType) { - return this.featurePaints[featureDrawType]; -}; - -/** - * Set the feature paint for the featureDrawType - * @param {module:tiles/features~FeatureDrawType} featureDrawType - * @param {module:tiles/features~Paint} paint - */ -FeaturePaint.prototype.setPaint = function(featureDrawType, paint) { - this.featurePaints[featureDrawType] = paint; -}; - -module.exports = FeaturePaint; - -},{}],86:[function(require,module,exports){ -/** - * Feature Paint Cache. - * @module tiles/features - */ -var FeaturePaint = require('./featurePaint'); - - -/** - * Constructor, created with cache size of {@link #DEFAULT_CACHE_SIZE} - * @constructor - */ -var FeaturePaintCache = function(size = null) { - this.cacheSize = size !== null ? size : FeaturePaintCache.DEFAULT_STYLE_PAINT_CACHE_SIZE; - this.paintCache = {}; - this.accessHistory = []; -}; - -/** - * Get the cached featurePaint for the style row or null if not cached - * @param {module:extension/style~StyleRow} styleRow style row - * @return {module:tiles/features~FeaturePaint} feature paint or null - */ -FeaturePaintCache.prototype.getFeaturePaintForStyleRow = function(styleRow) { - return this.getFeaturePaint(styleRow.getId()); -}; - -/** - * Get the cached featurePaint for the style row id or null if not cached - * @param {Number} styleRowId style row id - * @return {module:tiles/features~FeaturePaint} feature paint or null - */ -FeaturePaintCache.prototype.getFeaturePaint = function(styleRowId) { - var featurePaint = this.paintCache[styleRowId]; - if (!!featurePaint) { - var index = this.accessHistory.indexOf(styleRowId); - if (index > -1) { - this.accessHistory.splice(index, 1); - } - this.accessHistory.push(styleRowId); - } - return featurePaint; -}; - -/** - * Get the paint for the style row and draw type - * @param {module:extension/style~StyleRow} styleRow style row - * @param {String} type feature draw type - * @return {module:tiles/features~Paint} paint - */ -FeaturePaintCache.prototype.getPaintForStyleRow = function(styleRow, type) { - return this.getPaint(styleRow.getId(), type); -}; - -/** - * Get the paint for the style row id and draw type - * @param {Number} styleId style row id - * @param {String} type feature draw type - * @return {module:tiles/features~Paint} paint - */ -FeaturePaintCache.prototype.getPaint = function(styleId, type) { - var paint = null; - var featurePaint = this.getFeaturePaint(styleId); - if (featurePaint !== undefined && featurePaint !== null) { - paint = featurePaint.getPaint(type); - } - return paint; -}; - -/** - * Cache the featurePaint for the style row - * @param {module:extension/style~StyleRow} styleRow style row - * @param {module:tiles/features~FeatureDrawType} type feature draw type - * @param {module:tiles/features~Paint} paint paint - */ -FeaturePaintCache.prototype.setPaintForStyleRow = function(styleRow, type, paint) { - this.setPaint(styleRow.getId(), type, paint); -}; - -/** - * Cache the featurePaint for the style row id - * @param {Number} styleRowId style row id - * @param {module:tiles/features~FeatureDrawType} type feature draw type - * @param {module:tiles/features~Paint} paint paint - */ -FeaturePaintCache.prototype.setPaint = function(styleRowId, type, paint) { - var featurePaint = this.paintCache[styleRowId]; - if (!featurePaint) { - featurePaint = new FeaturePaint(); - } else { - var index = this.accessHistory.indexOf(styleRowId); - if (index > -1) { - this.accessHistory.splice(index, 1); - } - } - featurePaint.setPaint(type, paint); - this.paintCache[styleRowId] = featurePaint; - this.accessHistory.push(styleRowId); - if (Object.keys(this.paintCache).length > this.cacheSize) { - var styleId = this.accessHistory.shift(); - if (styleId) { - delete this.paintCache[styleId]; - } - } -}; - -/** - * Remove the cached featurePaint for the style row id - * @param {Number} styleRowId style row id - * @return {module:tiles/features~FeaturePaint} removed feature paint or null - */ -FeaturePaintCache.prototype.remove = function(styleRowId) { - var removed = this.paintCache[styleRowId]; - delete this.paintCache[styleRowId]; - if (!!removed) { - var index = this.accessHistory.indexOf(styleRowId); - if (index > -1) { - this.accessHistory.splice(index, 1); - } } - return removed; -}; - -/** - * Clear the cache - */ -FeaturePaintCache.prototype.clear = function() { - this.paintCache = {}; - this.accessHistory = []; -}; - -/** - * Resize the cache - * @param {Number} maxSize max size - */ -FeaturePaintCache.prototype.resize = function(maxSize) { - this.cacheSize = maxSize; - var keys = Object.keys(this.paintCache); - if (keys.length > maxSize) { - var numberToRemove = keys.length - maxSize; - for (var i = 0; i < numberToRemove; i++) { - var styleRowId = this.accessHistory.shift(); - if (!!styleRowId) { - delete this.paintCache[styleRowId]; - } - } - } -}; - -FeaturePaintCache.DEFAULT_STYLE_PAINT_CACHE_SIZE = 100; - - -module.exports = FeaturePaintCache; - -},{"./featurePaint":85}],87:[function(require,module,exports){ -(function (process){ -/** - * FeatureTiles module. - * @module tiles/features - */ -var TileBoundingBoxUtils = require('../tileBoundingBoxUtils') - , BoundingBox = require('../../boundingBox') - , FeatureTableStyles = require('../../extension/style/featureTableStyles') - , Paint = require('./paint') - , FeaturePaintCache = require('./featurePaintCache') - , FeatureDrawType = require('./featureDrawType') - , IconCache = require('../../extension/style/iconCache') - , ImageUtils = require('../imageUtils'); - -var d3geo = require('d3-geo') - , concat = require('concat-stream') - , reproject = require('reproject') - , PolyToLine = require('@turf/polygon-to-line').default; - -/** - * Tiles drawn from or linked to features. Used to query features and optionally draw tiles - * from those features. - */ -var FeatureTiles = function(featureDao, tileWidth = null, tileHeight = null) { - var isElectron = !!(typeof navigator != 'undefined' && navigator.userAgent.toLowerCase().indexOf(' electron/') > -1); - var isPhantom = !!(typeof window != 'undefined' && window.callPhantom && window._phantom); - var isNode = typeof(process) !== 'undefined' && process.version; - this.useNodeCanvas = isNode && !isPhantom && !isElectron; - this.featureDao = featureDao; - this.tileWidth = tileWidth !== null ? tileWidth : 256; - this.tileHeight = tileHeight !== null ? tileHeight : 256; - this.compressFormat = 'png'; - this.pointRadius = 4.0; - this.pointPaint = new Paint(); - this.pointIcon = null; - this.linePaint = new Paint(); - this.linePaint.setStrokeWidth(2.0); - this.lineStrokeWidth = 2.0; - this.polygonPaint = new Paint(); - this.polygonPaint.setStrokeWidth(2.0); - this.polygonStrokeWidth = 2.0; - this.fillPolygon = true; - this.polygonFillPaint = new Paint(); - this.featurePaintCache = new FeaturePaintCache(); - this.iconCache = new IconCache(); - this.scale = 1.0; - this.geoPackage = this.featureDao.geoPackage; - if (this.geoPackage != null) { - this.featureTableStyles = new FeatureTableStyles(this.geoPackage, this.featureDao.getTable()); - if (!this.featureTableStyles.has()) { - this.featureTableStyles = null; - } - } - this.maxFeaturesPerTile = null; - this.maxFeaturesTileDraw = null; - this.calculateDrawOverlap(); -}; - -/** - * Manually set the width and height draw overlap - * @param {Number} pixels pixels - */ -FeatureTiles.prototype.setDrawOverlap = function (pixels) { - this.setWidthDrawOverlap(pixels); - this.setHeightDrawOverlap(pixels); -}; - -/** - * Get the width draw overlap - * @return {Number} width draw overlap - */ -FeatureTiles.prototype.getWidthDrawOverlap = function () { - return this.widthOverlap; -}; - -/** - * Manually set the width draw overlap - * @param {Number} pixels pixels - */ -FeatureTiles.prototype.setWidthDrawOverlap = function (pixels) { - this.widthOverlap = pixels; -}; - -/** - * Get the height draw overlap - * @return {Number} height draw overlap - */ -FeatureTiles.prototype.getHeightDrawOverlap = function () { - return this.heightOverlap; -}; - -/** - * Manually set the height draw overlap - * @param {Number} pixels pixels - */ -FeatureTiles.prototype.setHeightDrawOverlap = function (pixels) { - this.heightOverlap = pixels; -}; - -/** - * Get the feature DAO - * @return {module:features/user/featureDao} feature dao - */ -FeatureTiles.prototype.getFeatureDao = function () { - return this.featureDao; -}; - -/** - * Get the feature table styles - * @return {module:extension/style~FeatureTableStyles} feature table styles - */ -FeatureTiles.prototype.getFeatureTableStyles = function () { - return this.featureTableStyles; -}; - -/** - * Set the feature table styles - * @param {module:extension/style~FeatureTableStyles} featureTableStyles feature table styles - */ -FeatureTiles.prototype.setFeatureTableStyles = function (featureTableStyles) { - this.featureTableStyles = featureTableStyles; -}; - -/** - * Ignore the feature table styles within the GeoPackage - */ -FeatureTiles.prototype.ignoreFeatureTableStyles = function () { - this.setFeatureTableStyles(null); - this.calculateDrawOverlap(); -}; - -/** - * Clear all caches - */ -FeatureTiles.prototype.clearCache = function () { - this.clearStylePaintCache(); - this.clearIconCache(); -}; - -/** - * Clear the style paint cache - */ -FeatureTiles.prototype.clearStylePaintCache = function () { - this.featurePaintCache.clear(); -}; - -/** - * Set / resize the style paint cache size - * - * @param {Number} size - * @since 3.3.0 - */ -FeatureTiles.prototype.setStylePaintCacheSize = function (size) { - this.featurePaintCache.resize(size); -}; - -/** - * Clear the icon cache - */ -FeatureTiles.prototype.clearIconCache = function () { - this.iconCache.clear(); -}; - -/** - * Set / resize the icon cache size - * @param {Number} size new size - */ -FeatureTiles.prototype.setIconCacheSize = function (size) { - this.iconCache.resize(size); -}; - -/** - * Get the tile width - * @return {Number} tile width - */ -FeatureTiles.prototype.getTileWidth = function () { - return this.tileWidth; -}; - -/** - * Set the tile width - * @param {Number} tileWidth tile width - */ -FeatureTiles.prototype.setTileWidth = function (tileWidth) { - this.tileWidth = tileWidth; -}; - -/** - * Get the tile height - * @return {Number} tile height - */ -FeatureTiles.prototype.getTileHeight = function () { - return this.tileHeight; -}; - -/** - * Set the tile height - * @param {Number} tileHeight tile height - */ -FeatureTiles.prototype.setTileHeight = function (tileHeight) { - this.tileHeight = tileHeight; -}; - -/** - * Get the compress format - * @return {String} compress format - */ -FeatureTiles.prototype.getCompressFormat = function () { - return this.compressFormat; -}; - -/** - * Set the compress format - * @param {String} compressFormat compress format - */ -FeatureTiles.prototype.setCompressFormat = function (compressFormat) { - this.compressFormat = compressFormat; -}; - -/** - * Set the scale - * - * @param {Number} scale scale factor - */ -FeatureTiles.prototype.setScale = function(scale) { - this.scale = scale; - this.linePaint.setStrokeWidth(scale * this.lineStrokeWidth); - this.polygonPaint.setStrokeWidth(scale * this.polygonStrokeWidth); - this.featurePaintCache.clear(); -}; - -/** - * Get the scale - * @return {Number} scale factor - */ -FeatureTiles.prototype.getScale = function() { - return this.scale; -}; - -FeatureTiles.prototype.calculateDrawOverlap = function() { - if (this.pointIcon) { - this.heightOverlap = this.scale * this.pointIcon.getHeight(); - this.widthOverlap = this.scale * this.pointIcon.getWidth(); - } else { - this.heightOverlap = this.scale * this.pointRadius; - this.widthOverlap = this.scale * this.pointRadius; - } - - var lineHalfStroke = this.scale * this.lineStrokeWidth / 2.0; - this.heightOverlap = Math.max(this.heightOverlap, lineHalfStroke); - this.widthOverlap = Math.max(this.widthOverlap, lineHalfStroke); - - var polygonHalfStroke = this.scale * this.polygonStrokeWidth / 2.0; - this.heightOverlap = Math.max(this.heightOverlap, polygonHalfStroke); - this.widthOverlap = Math.max(this.widthOverlap, polygonHalfStroke); - - if (this.featureTableStyles !== null && this.featureTableStyles.has()) { - var styleRowIds = []; - var tableStyleIds = this.featureTableStyles.getAllTableStyleIds(); - if (tableStyleIds !== null) { - styleRowIds = styleRowIds.concat(tableStyleIds); - } - var styleIds = this.featureTableStyles.getAllStyleIds(); - if (styleIds != null) { - styleRowIds = styleRowIds.concat(styleIds.filter(id => styleRowIds.indexOf(id) === -1)); - } - var styleDao = this.featureTableStyles.getStyleDao(); - for (var i = 0; i < styleRowIds.length; i++) { - var styleRowId = styleRowIds[i]; - var styleRow = styleDao.queryForId(styleRowId); - var styleHalfWidth = this.scale * (styleRow.getWidthOrDefault() / 2.0); - this.widthOverlap = Math.max(this.widthOverlap, styleHalfWidth); - this.heightOverlap = Math.max(this.heightOverlap, styleHalfWidth); - } - - var iconRowIds = []; - var tableIconIds = this.featureTableStyles.getAllTableIconIds(); - if (tableIconIds != null) { - iconRowIds = iconRowIds.concat(tableIconIds); - } - var iconIds = this.featureTableStyles.getAllIconIds(); - if (iconIds != null) { - iconRowIds = iconRowIds.concat(iconIds.filter(id => iconRowIds.indexOf(id) === -1)); - } - var iconDao = this.featureTableStyles.getIconDao(); - for (i = 0; i < iconRowIds.length; i++) { - var iconRowId = iconRowIds[i]; - var iconRow = iconDao.queryForId(iconRowId); - var iconDimensions = iconRow.getDerivedDimensions(); - var iconWidth = this.scale * Math.ceil(iconDimensions[0]); - var iconHeight = this.scale * Math.ceil(iconDimensions[1]); - this.widthOverlap = Math.max(this.widthOverlap, iconWidth); - this.heightOverlap = Math.max(this.heightOverlap, iconHeight); - } - } -}; - -FeatureTiles.prototype.setDrawOverlapsWithPixels = function(pixels) { - this.widthOverlap = pixels; - this.heightOverlap = pixels; -}; - -FeatureTiles.prototype.getFeatureStyle = function(featureRow) { - var featureStyle = null; - if (this.featureTableStyles !== null) { - featureStyle = this.featureTableStyles.getFeatureStyleForFeatureRow(featureRow); - } - return featureStyle; -}; - -/** - * Get the point paint for the feature style, or return the default paint - * @param featureStyle feature style - * @return paint - */ -FeatureTiles.prototype.getPointPaint = function(featureStyle) { - var paint = this.getFeatureStylePaint(featureStyle, FeatureDrawType.CIRCLE); - if (paint == null) { - paint = this.pointPaint; - } - return paint; -}; - -/** - * Get the line paint for the feature style, or return the default paint - * @param featureStyle feature style - * @return paint - */ -FeatureTiles.prototype.getLinePaint = function(featureStyle) { - var paint = this.getFeatureStylePaint(featureStyle, FeatureDrawType.STROKE); - if (paint === null) { - paint = this.linePaint; - } - return paint; -}; - -/** - * Get the polygon paint for the feature style, or return the default paint - * @param featureStyle feature style - * @return paint - */ -FeatureTiles.prototype.getPolygonPaint = function(featureStyle) { - var paint = this.getFeatureStylePaint(featureStyle, FeatureDrawType.STROKE); - if (paint == null) { - paint = this.polygonPaint; - } - return paint; -}; - -/** - * Get the polygon fill paint for the feature style, or return the default - * paint - * @param featureStyle feature style - * @return paint - */ -FeatureTiles.prototype.getPolygonFillPaint = function(featureStyle) { - var paint = null; - var hasStyleColor = false; - if (featureStyle != null) { - var style = featureStyle.getStyle(); - if (style != null) { - if (style.hasFillColor()) { - paint = this.getStylePaint(style, FeatureDrawType.FILL); - } else { - hasStyleColor = style.hasColor(); - } - } - } - if (paint === null && !hasStyleColor && this.fillPolygon) { - paint = this.polygonFillPaint; - } - return paint; -}; - -/** - * Get the feature style paint from cache, or create and cache it - * @param featureStyle feature style - * @param drawType draw type - * @return feature style paint - */ -FeatureTiles.prototype.getFeatureStylePaint = function(featureStyle, drawType) { - var paint = null; - if (featureStyle != null) { - var style = featureStyle.getStyle(); - if (style !== null && style.hasColor()) { - paint = this.getStylePaint(style, drawType); - } - } - return paint; -}; - -/** - * Get the style paint from cache, or create and cache it - * @param style style row - * @param drawType draw type - * @return {Paint} paint - */ -FeatureTiles.prototype.getStylePaint = function(style, drawType) { - var paint = this.featurePaintCache.getPaintForStyleRow(style, drawType); - if (paint === undefined || paint === null) { - var color = null; - var strokeWidth = null; - if (drawType === FeatureDrawType.CIRCLE) { - color = style.getColor(); - } else if (drawType === FeatureDrawType.STROKE) { - color = style.getColor(); - strokeWidth = this.scale * style.getWidthOrDefault(); - } else if (drawType === FeatureDrawType.FILL) { - color = style.getFillColor(); - strokeWidth = this.scale * style.getWidthOrDefault(); - } else { - throw new Error("Unsupported Draw Type: " + drawType); - } - var stylePaint = new Paint(); - stylePaint.setColor(color); - if (strokeWidth !== null) { - stylePaint.setStrokeWidth(strokeWidth); - } - paint = this.featurePaintCache.getPaintForStyleRow(style, drawType); - if (paint === undefined || paint === null) { - this.featurePaintCache.setPaintForStyleRow(style, drawType, stylePaint); - paint = stylePaint; - } - } - return paint; -}; - -/** - * Get the point radius - * @return {Number} radius - */ -FeatureTiles.prototype.getPointRadius = function() { - return this.pointRadius; -}; - -/** - * Set the point radius - * @param {Number} pointRadius point radius - */ -FeatureTiles.prototype.setPointRadius = function(pointRadius) { - this.pointRadius = pointRadius; -}; - -/** - * Get point color - * @return {String} color - */ -FeatureTiles.prototype.getPointColor = function() { - return this.pointPaint.getColor(); -}; - -/** - * Set point color - * @param {String} pointColor point color - */ -FeatureTiles.prototype.setPointColor = function(pointColor) { - this.pointPaint.setColor(pointColor); -}; - -/** - * Get the point icon - * @return {module:tiles/features.FeatureTilePointIcon} icon - */ -FeatureTiles.prototype.getPointIcon = function() { - return this.pointIcon; -}; - -/** - * Set the point icon - * @param {module:tiles/features.FeatureTilePointIcon} pointIcon point icon - */ -FeatureTiles.prototype.setPointIcon = function(pointIcon) { - this.pointIcon = pointIcon; -}; - -/** - * Get line stroke width - * @return {Number} width - */ -FeatureTiles.prototype.getLineStrokeWidth = function() { - return this.lineStrokeWidth; -}; - -/** - * Set line stroke width - * @param {Number} lineStrokeWidth line stroke width - */ -FeatureTiles.prototype.setLineStrokeWidth = function(lineStrokeWidth) { - this.lineStrokeWidth = lineStrokeWidth; - this.linePaint.setStrokeWidth(this.scale * this.lineStrokeWidth); -}; - -/** - * Get line color - * @return {String} color - */ -FeatureTiles.prototype.getLineColor = function() { - return this.linePaint.getColor(); -}; - -/** - * Set line color - * @param {String} lineColor line color - */ -FeatureTiles.prototype.setLineColor = function(lineColor) { - this.linePaint.setColor(lineColor); -}; - -/** - * Get polygon stroke width - * @return {Number} width - */ -FeatureTiles.prototype.getPolygonStrokeWidth = function() { - return this.polygonStrokeWidth; -}; - -/** - * Set polygon stroke width - * @param {Number} polygonStrokeWidth polygon stroke width - */ -FeatureTiles.prototype.setPolygonStrokeWidth = function(polygonStrokeWidth) { - this.polygonStrokeWidth = polygonStrokeWidth; - this.polygonPaint.setStrokeWidth(this.scale * this.polygonStrokeWidth); -}; - -/** - * Get polygon color - * @return {String} color - */ -FeatureTiles.prototype.getPolygonColor = function() { - return this.polygonPaint.getColor(); -}; - -/** - * Set polygon color - * @param {String} polygonColor polygon color - */ -FeatureTiles.prototype.setPolygonColor = function(polygonColor) { - this.polygonPaint.setColor(polygonColor); -}; - -/** - * Is fill polygon - * @return {Boolean} true if fill polygon - */ -FeatureTiles.prototype.isFillPolygon = function() { - return this.fillPolygon; -}; - -/** - * Set the fill polygon - * @param {Boolean} fillPolygon fill polygon - */ -FeatureTiles.prototype.setFillPolygon = function(fillPolygon) { - this.fillPolygon = fillPolygon; -}; - -/** - * Get polygon fill color - * @return {String} color - */ -FeatureTiles.prototype.getPolygonFillColor = function() { - return this.polygonFillPaint.getColor(); -}; - -/** - * Set polygon fill color - * @param {String} polygonFillColor polygon fill color - */ -FeatureTiles.prototype.setPolygonFillColor = function(polygonFillColor) { - this.polygonFillPaint.setColor(polygonFillColor); -}; - -/** - * Get the max features per tile - * @return {Number} max features per tile or null - */ -FeatureTiles.prototype.getMaxFeaturesPerTile = function() { - return this.maxFeaturesPerTile; -}; - -/** - * Set the max features per tile. When more features are returned in a query - * to create a single tile, the tile is not created. - * @param {Number} maxFeaturesPerTile max features per tile - */ -FeatureTiles.prototype.setMaxFeaturesPerTile = function(maxFeaturesPerTile) { - this.maxFeaturesPerTile = maxFeaturesPerTile; -}; - -/** - * Get the max features tile draw, the custom tile drawing implementation - * for tiles with more features than the max at #getMaxFeaturesPerTile - * @return {module:tiles/features/custom~CustomFeatureTile} max features tile draw or null - */ -FeatureTiles.prototype.getMaxFeaturesTileDraw = function() { - return this.maxFeaturesTileDraw; -}; - -/** - * Set the max features tile draw, used to draw tiles when more features for - * a single tile than the max at #getMaxFeaturesPerTile exist - * @param {module:tiles/features/custom~CustomFeatureTile} maxFeaturesTileDraw max features tile draw - */ -FeatureTiles.prototype.setMaxFeaturesTileDraw = function(maxFeaturesTileDraw) { - this.maxFeaturesTileDraw = maxFeaturesTileDraw; -}; - -FeatureTiles.prototype.drawTile = function (x, y, z, canvas = null) { - var indexed = this.featureDao.isIndexed(); - if (indexed) { - return this.drawTileQueryIndex(x, y, z, canvas); - } else { - return this.drawTileQueryAll(x, y, z, canvas); - } -}; - -FeatureTiles.prototype.drawTileQueryAll = function(x, y, zoom, canvas) { - var boundingBox = TileBoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(x, y, zoom); - boundingBox = this.expandBoundingBox(boundingBox); - - var count = this.featureDao.getCount(); - if (this.maxFeaturesPerTile === null || count <= this.maxFeaturesPerTile) { - return this.drawTileWithBoundingBox(boundingBox, zoom, canvas); - } else if (this.maxFeaturesTileDraw !== null) { - return this.maxFeaturesTileDraw.drawUnindexedTile(256, 256, canvas); - } -}; - -FeatureTiles.prototype.drawTileQueryIndex = async function(x, y, z, tileCanvas) { - var boundingBox = TileBoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(x, y, z); - var expandedBoundingBox = this.expandBoundingBox(boundingBox); - - var width = 256; - var height = 256; - - var positionAndScale = TileBoundingBoxUtils.determinePositionAndScale(boundingBox, height, width, new BoundingBox(-20037508.342789244, 20037508.342789244, -20037508.342789244, 20037508.342789244), height * (1 << z), width * (1 << z)); - var xTranslate = -positionAndScale.xPositionInFinalTileStart; - var yTranslate = -positionAndScale.yPositionInFinalTileStart; - - var pi = Math.PI, - tau = 2 * pi; - var drawProjection = d3geo.geoMercator() - .scale((1 << z) * 256 / tau) - .center([-180, 85.0511287798066]) - .translate([xTranslate, yTranslate]); - - var canvas; - if (tileCanvas !== null) { - canvas = tileCanvas; - } - var context; - if (canvas === undefined || canvas === null) { - if (this.useNodeCanvas) { - var Canvas = require('canvas'); - canvas = Canvas.createCanvas(width, height); - } else { - canvas = document.createElement('canvas'); - canvas.width = width; - canvas.height = height; - } - } - context = canvas.getContext('2d'); - context.clearRect(0, 0, width, height); - var srs = this.featureDao.getSrs(); - var tileCount = this.featureDao.countWebMercatorBoundingBox(expandedBoundingBox); - if (this.maxFeaturesPerTile === null || tileCount <= this.maxFeaturesPerTile) { - var iterator = this.featureDao.fastQueryWebMercatorBoundingBox(expandedBoundingBox); - var geojsonFeatures = [] - for (var featureRow of iterator) { - geojsonFeatures.push(featureRow.getGeometry().geometry.toGeoJSON()); - } - for (var gj of geojsonFeatures) { - var style = this.getFeatureStyle(featureRow); - if (srs.organization !== 'EPSG' || srs.organization_coordsys_id !== 4326) { - gj = reproject.toWgs84(gj, this.featureDao.projection); - } - await this.addFeatureToBatch(gj, context, drawProjection, boundingBox, style); - } - return new Promise(function(resolve, reject) { - if (this.useNodeCanvas) { - var writeStream = concat(function (buffer) { - resolve(buffer); - }); - var stream = null; - if (this.compressFormat === 'png') { - stream = canvas.createPNGStream(); - } else { - stream = canvas.createJPEGStream(); - } - stream.pipe(writeStream); - } else { - resolve(canvas.toDataURL('image/' + this.compressFormat)); - } - }.bind(this)); - } else if (this.maxFeaturesTileDraw !== null) { - // Draw the max features tile - return this.maxFeaturesTileDraw.drawTile(width, height, tileCount, canvas); - } -}; - -FeatureTiles.prototype.drawTileWithBoundingBox = async function(boundingBox, zoom, tileCanvas) { - var width = 256; - var height = 256; - var positionAndScale = TileBoundingBoxUtils.determinePositionAndScale(boundingBox, height, width, new BoundingBox(-20037508.342789244, 20037508.342789244, -20037508.342789244, 20037508.342789244), height * (1 << zoom), width * (1 << zoom)); - var xTranslate = -positionAndScale.xPositionInFinalTileStart; - var yTranslate = -positionAndScale.yPositionInFinalTileStart; - - var pi = Math.PI, - tau = 2 * pi; - var drawProjection = d3geo.geoMercator() - .scale((1 << zoom) * 256 / tau) - .center([-180, 85.0511287798066]) - .translate([xTranslate, yTranslate]); - var canvas; - if (tileCanvas !== null) { - canvas = tileCanvas; - } - var context; - if (canvas === undefined || canvas === null) { - if (this.useNodeCanvas) { - var Canvas = require('canvas'); - canvas = Canvas.createCanvas(width, height); - } else { - canvas = document.createElement('canvas'); - canvas.width = width; - canvas.height = height; - } - } - context = canvas.getContext('2d'); - context.clearRect(0, 0, width, height); - var featureDao = this.featureDao; - var srs = featureDao.getSrs(); - var each = featureDao.queryForEach(); - var featureRows = []; - for (var row of each) { - featureRows.push(featureDao.getRow(row)); - } - for (var fr of featureRows) { - var gj = fr.getGeometry().geometry.toGeoJSON(); - var style = this.getFeatureStyle(fr); - if (srs.organization !== 'EPSG' || srs.organization_coordsys_id !== 4326) { - gj = reproject.toWgs84(gj, featureDao.projection); - } - await this.addFeatureToBatch(gj, context, drawProjection, boundingBox, style); - } - return new Promise(function(resolve, reject) { - if (this.useNodeCanvas) { - var writeStream = concat(function (buffer) { - resolve(buffer); - }); - var stream = null; - if (this.compressFormat === 'png') { - stream = canvas.createPNGStream(); - } else { - stream = canvas.createJPEGStream(); - } - stream.pipe(writeStream); - } else { - resolve(canvas.toDataURL('image/' + this.compressFormat)); - } - }.bind(this)); -}; - -/** - * Draw a point in the context - * @param path - * @param geoJson - * @param context - * @param boundingBox - * @param featureStyle - * @param drawProjection - */ -FeatureTiles.prototype.drawPoint = async function(path, geoJson, context, boundingBox, featureStyle, drawProjection) { - var width; - var height; - var iconX; - var iconY; - var transformedCoords = drawProjection([geoJson.coordinates[0], geoJson.coordinates[1]]); - var x = transformedCoords[0]; - var y = transformedCoords[1]; - - if (featureStyle !== undefined && featureStyle !== null && featureStyle.hasIcon()) { - var iconRow = featureStyle.getIcon(); - var image = await iconRow.getDataImage(iconRow); - width = Math.round(this.scale * iconRow.getWidth()); - height = Math.round(this.scale * iconRow.getHeight()); - if (x >= 0 - width && x <= this.tileWidth + width && y >= 0 - height && y <= this.tileHeight + height) { - var anchorU = iconRow.getAnchorUOrDefault(); - var anchorV = iconRow.getAnchorVOrDefault(); - iconX = Math.round(x - (anchorU * width)); - iconY = Math.round(y - (anchorV * height)); - context.drawImage(image, iconX, iconY, width, height); - } - } else if (this.pointIcon !== undefined && this.pointIcon !== null) { - width = Math.round(this.scale * this.pointIcon.getWidth()); - height = Math.round(this.scale * this.pointIcon.getHeight()); - if (x >= 0 - width && x <= this.tileWidth + width && y >= 0 - height - && y <= this.tileHeight + height) { - iconX = Math.round(x - this.scale * this.pointIcon.getXOffset()); - iconY = Math.round(y - this.scale * this.pointIcon.getYOffset()); - ImageUtils.scaleBitmap(this.pointIcon.getIcon(), this.scale).then((image) => { - context.drawImage(image, iconX, iconY, width, height); - }); - } - } else { - context.save(); - var radius = null; - if (featureStyle !== undefined && featureStyle !== null) { - var styleRow = featureStyle.getStyle(); - if (styleRow !== undefined && styleRow !== null) { - radius = this.scale * (styleRow.getWidthOrDefault() / 2.0); - } - } - if (radius == null) { - radius = this.scale * this.pointRadius; - } - var pointPaint = this.getPointPaint(featureStyle); - if (x >= 0 - radius && x <= this.tileWidth + radius && y >= 0 - radius && y <= this.tileHeight + radius) { - var circleX = Math.round(x); - var circleY = Math.round(y); - context.beginPath(); - context.arc(circleX, circleY, radius, 0, 2 * Math.PI, true); - context.closePath() - context.fillStyle = pointPaint.getColorRGBA(); - context.fill(); - } - context.restore(); - } -}; - -/** - * Draw a line in the context - * @param path - * @param geoJson - * @param context - * @param featureStyle - */ -FeatureTiles.prototype.drawLine = function(path, geoJson, context, featureStyle) { - context.save(); - context.beginPath(); - var paint = this.getLinePaint(featureStyle); - context.strokeStyle = paint.getColorRGBA(); - context.lineWidth = paint.getStrokeWidth(); - path(geoJson); - context.stroke(); - context.closePath(); - context.restore(); -}; - -/** - * Draw a polygon in the context - * @param path - * @param geoJson - * @param context - * @param featureStyle - */ -FeatureTiles.prototype.drawPolygon = function(path, geoJson, context, featureStyle) { - context.save(); - context.beginPath(); - path(PolyToLine(geoJson).geometry); - context.closePath(); - var fillPaint = this.getPolygonFillPaint(featureStyle); - if (fillPaint !== undefined && fillPaint !== null) { - context.fillStyle = fillPaint.getColorRGBA(); - context.fill(); - } - var paint = this.getPolygonPaint(featureStyle); - context.strokeStyle = paint.getColorRGBA(); - context.lineWidth = paint.getStrokeWidth(); - context.stroke(); - context.restore(); -}; - -/** - * Add a feature to the batch - * @param geoJson - * @param context - * @param drawProjection - * @param boundingBox - * @param featureStyle - */ -FeatureTiles.prototype.addFeatureToBatch = async function(geoJson, context, drawProjection, boundingBox, featureStyle) { - var path = new d3geo.geoPath() - .context(context) - .projection(drawProjection); - var i, c; - if (geoJson.type === 'Point') { - await this.drawPoint(path, geoJson, context, boundingBox, featureStyle, drawProjection); - } else if (geoJson.type === 'LineString') { - this.drawLine(path, geoJson, context, featureStyle); - } else if (geoJson.type === 'Polygon') { - this.drawPolygon(path, geoJson, context, featureStyle); - } else if (geoJson.type === 'MultiPoint') { - for (i = 0; i < geoJson.coordinates.length; i++) { - c = geoJson.coordinates[i]; - var ptGeom = { - type: 'Point', - coordinates: c - }; - await this.drawPoint(path, ptGeom, context, boundingBox, featureStyle, drawProjection); - } - } else if (geoJson.type === 'MultiLineString') { - for (i = 0; i < geoJson.coordinates.length; i++) { - c = geoJson.coordinates[i]; - var lsGeom = { - type: 'LineString', - coordinates: c - }; - this.drawLine(path, lsGeom, context, featureStyle); - } - } else if (geoJson.type === 'MultiPolygon') { - for (i = 0; i < geoJson.coordinates.length; i++) { - c = geoJson.coordinates[i]; - var pGeom = { - type: 'Polygon', - coordinates: c - }; - this.drawPolygon(path, pGeom, context, featureStyle); - } - } -}; - -/** - * Create an expanded bounding box to handle features outside the tile that overlap - * @param webMercatorBoundingBox web mercator bounding box - * @return {BoundingBox} bounding box - */ -FeatureTiles.prototype.expandBoundingBox = function(webMercatorBoundingBox) { - return this.expandWebMercatorBoundingBox(webMercatorBoundingBox, webMercatorBoundingBox); -}; - -/** - * Create an expanded bounding box to handle features outside the tile that overlap - * @param webMercatorBoundingBox web mercator bounding box - * @param tileWebMercatorBoundingBox tile web mercator bounding box - * @return {BoundingBox} bounding box - */ -FeatureTiles.prototype.expandWebMercatorBoundingBox = function(webMercatorBoundingBox, tileWebMercatorBoundingBox) { - // Create an expanded bounding box to handle features outside the tile that overlap - var minLongitude = TileBoundingBoxUtils.getLongitudeFromPixel(this.tileWidth, webMercatorBoundingBox, tileWebMercatorBoundingBox, 0 - this.widthOverlap); - var maxLongitude = TileBoundingBoxUtils.getLongitudeFromPixel(this.tileWidth, webMercatorBoundingBox, tileWebMercatorBoundingBox, this.tileWidth + this.widthOverlap); - var maxLatitude = TileBoundingBoxUtils.getLatitudeFromPixel(this.tileHeight, webMercatorBoundingBox, tileWebMercatorBoundingBox, 0 - this.heightOverlap); - var minLatitude = TileBoundingBoxUtils.getLatitudeFromPixel(this.tileHeight, webMercatorBoundingBox, tileWebMercatorBoundingBox, this.tileHeight + this. heightOverlap); - - // Choose the most expanded longitudes and latitudes - minLongitude = Math.min(minLongitude, webMercatorBoundingBox.minLongitude); - maxLongitude = Math.max(maxLongitude, webMercatorBoundingBox.maxLongitude); - minLatitude = Math.min(minLatitude, webMercatorBoundingBox.minLatitude); - maxLatitude = Math.max(maxLatitude, webMercatorBoundingBox.maxLatitude); - - // Bound with the web mercator limits - minLongitude = Math.max(minLongitude, -1 * TileBoundingBoxUtils.WEB_MERCATOR_HALF_WORLD_WIDTH); - maxLongitude = Math.min(maxLongitude, TileBoundingBoxUtils.WEB_MERCATOR_HALF_WORLD_WIDTH); - minLatitude = Math.max(minLatitude, -1 * TileBoundingBoxUtils.WEB_MERCATOR_HALF_WORLD_WIDTH); - maxLatitude = Math.min(maxLatitude, TileBoundingBoxUtils.WEB_MERCATOR_HALF_WORLD_WIDTH); - - return new BoundingBox(minLongitude, maxLongitude, minLatitude, maxLatitude); -}; - -module.exports = FeatureTiles; - -}).call(this,require('_process')) -},{"../../boundingBox":7,"../../extension/style/featureTableStyles":48,"../../extension/style/iconCache":49,"../imageUtils":89,"../tileBoundingBoxUtils":93,"./featureDrawType":84,"./featurePaintCache":86,"./paint":88,"@turf/polygon-to-line":131,"_process":284,"canvas":undefined,"concat-stream":185,"d3-geo":194,"reproject":315}],88:[function(require,module,exports){ -/** - * Paint module. - * @module tiles/features - */ -var Paint = function () { - this.color = '#000000FF'; - this.strokeWidth = 1.0; -}; - -/** - * Get the color - * @returns {String} color - */ -Paint.prototype.getColor = function() { - return this.color; -}; - -/** - * Get the color - * @returns {String} color - */ -Paint.prototype.getColorRGBA = function() { - // assumes color is in the format #RRGGBB or #RRGGBBAA - var red = parseInt(this.color.substr(1,2), 16); - var green = parseInt(this.color.substr(3,2), 16); - var blue = parseInt(this.color.substr(5,2), 16); - var alpha = 1.0; - if (this.color.length > 7) { - alpha = parseInt(this.color.substr(7,2), 16) / 255; - } - return 'rgba(' + red + ',' + green + ',' + blue + ',' + alpha + ')'; -}; - -/** - * Set the color - * @param {String} color - */ -Paint.prototype.setColor = function(color) { - this.color = color; -}; - -/** - * Get the stroke width - * @returns {Number} strokeWidth - */ -Paint.prototype.getStrokeWidth = function() { - return this.strokeWidth; -}; - -/** - * Set the stroke width - * @param {Number} strokeWidth - */ -Paint.prototype.setStrokeWidth = function(strokeWidth) { - this.strokeWidth = strokeWidth; -}; - -module.exports = Paint; - -},{}],89:[function(require,module,exports){ -(function (process,Buffer){ -var sizeOf = require('image-size'); -var ImageUtils = {}; -var isElectron = !!(typeof navigator != 'undefined' && navigator.userAgent.toLowerCase().indexOf(' electron/') > -1); -var isPhantom = !!(typeof window != 'undefined' && window.callPhantom && window._phantom); -var isNode = typeof(process) !== 'undefined' && process.version; -ImageUtils.useNodeCanvas = isNode && !isPhantom && !isElectron; - -/** - * Get image for data - * @param {Buffer|String} data file data or file path - * @returns {Object} - */ -ImageUtils.getImageSize = function (data) { - return sizeOf(data); -}; - -/** - * Get image for data - * @param {Buffer|String} data file data or file path - * @param {String} contentType - * @returns {Promise} - */ -ImageUtils.getImage = function (data, contentType = 'image/png') { - return new Promise(function (resolve, reject) { - var image; - if (ImageUtils.useNodeCanvas) { - var Canvas = require('canvas'); - image = new Canvas.Image(); - } else { - image = new Image(); - } - image.onload = () => { - resolve(image); - }; - image.onerror = (error) => { - reject(error); - }; - var src = data; - if (data instanceof Buffer) { - src = 'data:' + contentType + ';base64,' + data.toString('base64'); - } - image.src = src; - }.bind(this)); -}; - -/** - * Get a scaled image - * @param {Buffer} data - * @param {Number} scale - * @returns {Promise} - */ -ImageUtils.getScaledImage = function (data, scale) { - return ImageUtils.getImage(data).then(function (image) { - return ImageUtils.scaleBitmap(image, scale); - }.bind(this)); -}; - -/** - * Get a scaled image - * @param {Image} image - * @param {Number} scale - * @returns {Promise} - */ -ImageUtils.scaleBitmap = function (image, scale) { - if (scale === 1.0) { - return Promise.resolve(image); - } else { - var iconWidth = image.width; - var iconHeight = image.height; - var scaledWidth = Math.round(scale * iconWidth); - var scaledHeight = Math.round(scale * iconHeight); - var canvas, ctx, img; - if (ImageUtils.useNodeCanvas) { - var Canvas = require('canvas'); - canvas = Canvas.createCanvas(scaledWidth, scaledHeight); - img = new Canvas.Image(); - } else { - canvas = document.createElement('canvas'); - canvas.width = scaledWidth; - canvas.height = scaledHeight; - img = new Image(); - } - ctx = canvas.getContext('2d'); - ctx.drawImage(image, 0, 0, iconWidth, iconHeight, 0, 0, scaledWidth, scaledHeight); - return new Promise(function (resolve) { - img.onload = () => { resolve(img); }; - img.src = canvas.toDataURL(); - }.bind(this)); - } -}; - -module.exports = ImageUtils; - -}).call(this,require('_process'),require("buffer").Buffer) -},{"_process":284,"buffer":182,"canvas":undefined,"image-size":244}],90:[function(require,module,exports){ -/** - * @module tiles/matrix - * @see module:dao/dao - */ - -var Dao = require('../../dao/dao') - // , ContentsDao = require('../../core/contents').ContentsDao - , TileMatrixSetDao = require('../matrixset').TileMatrixSetDao; - -var util = require('util'); - -/** - * Tile Matrix object. Documents the structure of the tile matrix at each zoom - * level in each tiles table. It allows GeoPackages to contain rectangular as - * well as square tiles (e.g. for better representation of polar regions). It - * allows tile pyramids with zoom levels that differ in resolution by factors of - * 2, irregular intervals, or regular intervals other than factors of 2. - * @class TileMatrix - */ -var TileMatrix = function() { - - /** - * Tile Pyramid User Data Table Name - * @member {string} - */ - this.table_name; - - /** - * 0 ⇐ zoom_level ⇐ max_level for table_name - * @member {Number} - */ - this.zoom_level; - - /** - * Number of columns (>= 1) in tile matrix at this zoom level - * @member {Number} - */ - this.matrix_width; - - /** - * Number of rows (>= 1) in tile matrix at this zoom level - * @member {Number} - */ - this.matrix_height; - - /** - * Tile width in pixels (>= 1)for this zoom level - * @member {Number} - */ - this.tile_width; - - /** - * Tile height in pixels (>= 1)for this zoom level - * @member {Number} - */ - this.tile_height; - - /** - * In t_table_name srid units or default meters for srid 0 (>0) - * @member {Number} - */ - this.pixel_x_size; - - /** - * In t_table_name srid units or default meters for srid 0 (>0) - * @member {Number} - */ - this.pixel_y_size; -}; - -/** - * Tile Matrix Set Data Access Object - * @class TileMatrixDao - * @extends {module:dao/dao~Dao} - */ -var TileMatrixDao = function(geoPackage) { - Dao.call(this, geoPackage); -} - -util.inherits(TileMatrixDao, Dao); - -TileMatrixDao.prototype.createObject = function () { - return new TileMatrix(); -}; - -/** - * get the Contents of the Tile matrix - * @param {tileMatrix} tileMatrix the tile matrix - * @param {Function} callback returns the contents - */ -TileMatrixDao.prototype.getContents = function (tileMatrix) { - var dao = this.geoPackage.getContentsDao(); - return dao.queryForId(tileMatrix.table_name); -}; - -TileMatrixDao.prototype.getTileMatrixSet = function (tileMatrix) { - var dao = this.geoPackage.getTileMatrixSetDao(); - return dao.queryForId(tileMatrix.table_name); -}; - -TileMatrixDao.TABLE_NAME = "gpkg_tile_matrix"; -TileMatrixDao.COLUMN_PK1 = "table_name"; -TileMatrixDao.COLUMN_PK2 = "zoom_level"; -TileMatrixDao.COLUMN_TABLE_NAME = "table_name"; -TileMatrixDao.COLUMN_ZOOM_LEVEL = "zoom_level"; -TileMatrixDao.COLUMN_MATRIX_WIDTH = "matrix_width"; -TileMatrixDao.COLUMN_MATRIX_HEIGHT = "matrix_height"; -TileMatrixDao.COLUMN_TILE_WIDTH = "tile_width"; -TileMatrixDao.COLUMN_TILE_HEIGHT = "tile_height"; -TileMatrixDao.COLUMN_PIXEL_X_SIZE = "pixel_x_size"; -TileMatrixDao.COLUMN_PIXEL_Y_SIZE = "pixel_y_size"; - -TileMatrix.TABLE_NAME = 'tableName'; -TileMatrix.ZOOM_LEVEL = 'zoomLevel'; -TileMatrix.MATRIX_WIDTH = 'matrixWidth'; -TileMatrix.MATRIX_HEIGHT = 'matrixHeight'; -TileMatrix.TILE_WIDTH = 'tileWidth'; -TileMatrix.TILE_HEIGHT = 'tileHeight'; -TileMatrix.PIXEL_X_SIZE = 'pixelXSize'; -TileMatrix.PIXEL_Y_SIZE = 'pixelYSize'; - - -TileMatrixDao.prototype.gpkgTableName = 'gpkg_tile_matrix'; -TileMatrixDao.prototype.idColumns = [TileMatrixDao.COLUMN_PK1, TileMatrixDao.COLUMN_PK2]; -TileMatrixDao.prototype.columns = [TileMatrixDao.COLUMN_TABLE_NAME, TileMatrixDao.COLUMN_ZOOM_LEVEL, TileMatrixDao.COLUMN_MATRIX_WIDTH, TileMatrixDao.COLUMN_MATRIX_HEIGHT, TileMatrixDao.COLUMN_TILE_WIDTH, TileMatrixDao.COLUMN_TILE_HEIGHT, TileMatrixDao.COLUMN_PIXEL_X_SIZE, TileMatrixDao.COLUMN_PIXEL_Y_SIZE]; - -module.exports.TileMatrixDao = TileMatrixDao; -module.exports.TileMatrix = TileMatrix; - -},{"../../dao/dao":11,"../matrixset":91,"util":343}],91:[function(require,module,exports){ -/** - * @module tiles/matrixset - * @see module:dao/dao - */ - -var Dao = require('../../dao/dao') - , BoundingBox = require('../../boundingBox') - , SpatialReferenceSystemDao = require('../../core/srs').SpatialReferenceSystemDao; - // , ContentsDao = require('../../core/contents').ContentsDao; - -var util = require('util'); - -/** - * `TileMatrixSet` models the [`gpkg_tile_matrix_set`](https://www.geopackage.org/spec121/index.html#_tile_matrix_set) - * table. A row in this table defines the minimum bounding box (min_x, min_y, - * max_x, max_y) and spatial reference system (srs_id) for all tiles in a - * [tile pyramid](https://www.geopackage.org/spec121/index.html#tiles_user_tables) - * user data table. While the parent [Contents]{@link module:core/contents~Contents} - * row/object also defines a bounding box, the tile matrix set bounding box is - * used as the reference for calculating tile column/row matrix coordinates, so - * (min_x, max_y) in SRS coordinates would be the upper-left corner of the tile - * at tile matrix coordinate (0, 0). The parent `Contents` bounding box may be - * smaller or larger than the `TileMatrixSet` bounding box, and its purpose is - * to guide a user-facing application to the target region of the tile pyramid. - * The [`srs_id`]{@link module:tiles/matrixset~TileMatrixSet#srs_id} of the `TileMatrixSet`, on the other hand, must - * match that of the parent [`Contents`]{@link module:core/contents~Contents#srs_id}. - * - * @class TileMatrixSet - */ -var TileMatrixSet = function() { - - /** - * Name of the [tile pyramid user data table](https://www.geopackage.org/spec121/index.html#tiles_user_tables) - * that stores the tiles - * @member {string} - */ - this.table_name; - - /** - * Unique identifier for each Spatial Reference System within a GeoPackage - * @member {SRSRef} - */ - this.srs_id; - - /** - * Bounding box minimum easting or longitude for all content in table_name - * @member {Number} - */ - this.min_x; - - /** - * Bounding box minimum northing or latitude for all content in table_name - * @member {Number} - */ - this.min_y; - - /** - * Bounding box maximum easting or longitude for all content in table_name - * @member {Number} - */ - this.max_x; - - /** - * Bounding box maximum northing or latitude for all content in table_name - * @member {Number} - */ - this.max_y; -}; - -TileMatrixSet.prototype.setBoundingBox = function (boundingBox) { - this.min_x = boundingBox.minLongitude; - this.max_x = boundingBox.maxLongitude; - this.min_y = boundingBox.minLatitude; - this.max_y = boundingBox.maxLatitude; -}; - -TileMatrixSet.prototype.getBoundingBox = function () { - return new BoundingBox(this.min_x, this.max_x, this.min_y, this.max_y); -}; - -TileMatrixSet.prototype.setContents = function(contents) { - if (contents && contents.data_type === 'tiles') { - this.table_name = contents.table_name; - } -} - -/** - * Tile Matrix Set Data Access Object - * @class TileMatrixSetDao - * @extends {module:dao/dao~Dao} - */ -var TileMatrixSetDao = function(geoPackage) { - Dao.call(this, geoPackage); -} - -util.inherits(TileMatrixSetDao, Dao); - -TileMatrixSetDao.prototype.createObject = function () { - return new TileMatrixSet(); -}; - -/** - * Get the tile table names - * @param {Function} callback returns the tile table names - */ -TileMatrixSetDao.prototype.getTileTables = function () { - var tableNames = []; - for (var result of this.connection.each('select ' + TileMatrixSetDao.COLUMN_TABLE_NAME + ' from ' + TileMatrixSetDao.TABLE_NAME)) { - tableNames.push(result[TileMatrixSetDao.COLUMN_TABLE_NAME]); - } - return tableNames; -}; - -TileMatrixSetDao.prototype.getProjection = function (tileMatrixSet) { - var srs = this.getSrs(tileMatrixSet); - if (!srs) return; - var srsDao = this.geoPackage.getSpatialReferenceSystemDao(); - return srsDao.getProjection(srs); -}; - -/** - * Get the Spatial Reference System of the Tile Matrix set - * @param {TileMatrixSet} tileMatrixSet tile matrix set - */ -TileMatrixSetDao.prototype.getSrs = function (tileMatrixSet) { - var dao = this.geoPackage.getSpatialReferenceSystemDao(); - return dao.queryForId(tileMatrixSet.srs_id); -}; - -TileMatrixSetDao.prototype.getContents = function (tileMatrixSet) { - var dao = this.geoPackage.getContentsDao(); - return dao.queryForId(tileMatrixSet.table_name); -}; - -TileMatrixSet.TABLE_NAME = "tableName"; -TileMatrixSet.MIN_X = "minX"; -TileMatrixSet.MIN_Y = "minY"; -TileMatrixSet.MAX_X = "maxX"; -TileMatrixSet.MAX_Y = "maxY"; -TileMatrixSet.SRS_ID = "srsId"; - -TileMatrixSetDao.TABLE_NAME = "gpkg_tile_matrix_set"; -TileMatrixSetDao.COLUMN_PK = "table_name"; -TileMatrixSetDao.COLUMN_TABLE_NAME = "table_name"; -TileMatrixSetDao.COLUMN_SRS_ID = "srs_id"; -TileMatrixSetDao.COLUMN_MIN_X = "min_x"; -TileMatrixSetDao.COLUMN_MIN_Y = "min_y"; -TileMatrixSetDao.COLUMN_MAX_X = "max_x"; -TileMatrixSetDao.COLUMN_MAX_Y = "max_y"; - -TileMatrixSetDao.prototype.gpkgTableName = 'gpkg_tile_matrix_set'; -TileMatrixSetDao.prototype.idColumns = [TileMatrixSetDao.COLUMN_PK]; -TileMatrixSetDao.prototype.columns = [TileMatrixSetDao.COLUMN_TABLE_NAME, TileMatrixSetDao.COLUMN_SRS_ID, TileMatrixSetDao.COLUMN_MIN_X, TileMatrixSetDao.COLUMN_MIN_Y, TileMatrixSetDao.COLUMN_MAX_X, TileMatrixSetDao.COLUMN_MAX_Y]; - -TileMatrixSetDao.prototype.columnToPropertyMap = {}; -TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_TABLE_NAME] = TileMatrixSet.TABLE_NAME; -TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_SRS_ID] = TileMatrixSet.SRS_ID; -TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_MIN_X] = TileMatrixSet.MIN_X; -TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_MIN_Y] = TileMatrixSet.MIN_Y; -TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_MAX_X] = TileMatrixSet.MAX_X; -TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_MAX_Y] = TileMatrixSet.MAX_Y; - -module.exports.TileMatrixSetDao = TileMatrixSetDao; -module.exports.TileMatrixSet = TileMatrixSet; - -},{"../../boundingBox":7,"../../core/srs":9,"../../dao/dao":11,"util":343}],92:[function(require,module,exports){ -var TileMatrixSetDao = require('../matrixset').TileMatrixSetDao - , TileBoundingBoxUtils = require('../tileBoundingBoxUtils') - , TileCreator = require('../creator') - , BoundingBox = require('../../boundingBox'); - -var proj4 = require('proj4'); - -proj4 = 'default' in proj4 ? proj4['default'] : proj4; - -var GeoPackageTileRetriever = function(tileDao, width, height) { - this.tileDao = tileDao; - this.tileDao.adjustTileMatrixLengths(); - - this.width = width; - this.height = height; -} - -module.exports = GeoPackageTileRetriever; - -GeoPackageTileRetriever.prototype.getWebMercatorBoundingBox = function () { - if (this.setWebMercatorBoundingBox) { - return this.setWebMercatorBoundingBox; - } else { - var tileMatrixSetDao = this.tileDao.geoPackage.getTileMatrixSetDao(); - var tileMatrixSet = this.tileDao.tileMatrixSet; - var srs = tileMatrixSetDao.getSrs(tileMatrixSet); - this.setProjectionBoundingBox = tileMatrixSet.getBoundingBox(); - if (srs.organization_coordsys_id === 4326 && srs.organization === 'EPSG') { - this.setProjectionBoundingBox.minLatitude = Math.max(this.setProjectionBoundingBox.minLatitude, -85.05); - this.setProjectionBoundingBox.maxLatitude = Math.min(this.setProjectionBoundingBox.maxLatitude, 85.05); - } - this.setWebMercatorBoundingBox = this.setProjectionBoundingBox.projectBoundingBox(this.tileDao.projection, 'EPSG:3857'); - - return this.setWebMercatorBoundingBox; - } -}; - -GeoPackageTileRetriever.prototype.hasTile = function (x, y, zoom) { - var webMercatorBoundingBox = TileBoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(x, y, zoom); - var tileMatrix = this.tileDao.getTileMatrixWithZoomLevel(zoom); - var iterator = this.retrieveTileResults(webMercatorBoundingBox, tileMatrix); - var exists = false; - for (var row of iterator) { - exists = true; - } - return exists; -}; - -GeoPackageTileRetriever.prototype.getTile = function (x, y, zoom) { - var webMercatorBoundingBox = TileBoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(x, y, zoom); - var gpZoom = this.determineGeoPackageZoomLevel(webMercatorBoundingBox, zoom); - return this.getTileWithBounds(webMercatorBoundingBox, gpZoom, 'EPSG:3857'); -}; - -GeoPackageTileRetriever.prototype.drawTileIn = function (x, y, zoom, canvas) { - var webMercatorBoundingBox = TileBoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(x, y, zoom); - var gpZoom = this.determineGeoPackageZoomLevel(webMercatorBoundingBox, zoom); - return this.getTileWithBounds(webMercatorBoundingBox, gpZoom, 'EPSG:3857', canvas); -}; - -GeoPackageTileRetriever.prototype.getTileWithWgs84Bounds = function (wgs84BoundingBox, zoom) { - var webMercatorBoundingBox = wgs84BoundingBox.projectBoundingBox('EPSG:4326', 'EPSG:3857'); - var gpZoom = this.determineGeoPackageZoomLevel(webMercatorBoundingBox, zoom); - return this.getTileWithBounds(webMercatorBoundingBox, gpZoom, 'EPSG:3857'); -}; - -GeoPackageTileRetriever.prototype.getTileWithWgs84BoundsInProjection = function (wgs84BoundingBox, zoom, targetProjection) { - var targetBoundingBox = wgs84BoundingBox.projectBoundingBox('EPSG:4326', targetProjection); - return this.getTileWithBounds(targetBoundingBox, zoom, targetProjection); -}; - -GeoPackageTileRetriever.prototype.getWebMercatorTile = function (x, y, zoom) { - // need to determine the geoPackage zoom level from the web mercator zoom level - var webMercatorBoundingBox = TileBoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(x, y, zoom); - var gpZoom = this.determineGeoPackageZoomLevel(webMercatorBoundingBox, zoom); - return this.getTileWithBounds(webMercatorBoundingBox, gpZoom, 'EPSG:3857'); -}; - -GeoPackageTileRetriever.prototype.determineGeoPackageZoomLevel = function(webMercatorBoundingBox, zoom) { - // find width and height of this tile in geopackage projection - var proj4Projection = proj4(this.tileDao.projection, 'EPSG:3857'); - var ne = proj4Projection.inverse([webMercatorBoundingBox.maxLongitude, webMercatorBoundingBox.maxLatitude]); - var sw = proj4Projection.inverse([webMercatorBoundingBox.minLongitude, webMercatorBoundingBox.minLatitude]); - var width = (ne[0] - sw[0]); - var height = (ne[1] - sw[1]); - var gpZoom = undefined; - // find the closest zoom for width - for (var i = 0; i < this.tileDao.widths.length; i++) { - var tileWidth = this.tileDao.widths[i]; - var difference = Math.abs(width - tileWidth); - var tolerance = .001 * tileWidth; - if (tileWidth <= width || difference <= tolerance) { - gpZoom = this.tileDao.maxZoom - i; - } - } - - return gpZoom; -}; - -GeoPackageTileRetriever.prototype.getTileWithBounds = function (targetBoundingBox, zoom, targetProjection, canvas) { - var tiles = []; - var tileMatrix = this.tileDao.getTileMatrixWithZoomLevel(zoom); - if (!tileMatrix) return Promise.resolve(); - var tileWidth = tileMatrix.tile_width; - var tileHeight = tileMatrix.tile_height; - var matrixSetBoundsInTargetProjection = this.tileDao.tileMatrixSet.getBoundingBox().projectBoundingBox(this.tileDao.projection, targetProjection); - - var matrixTotalBoundingBox = this.tileDao.tileMatrixSet.getBoundingBox(); - var targetBoundingBoxInMatrixSetProjection = targetBoundingBox.projectBoundingBox(targetProjection, this.tileDao.projection); - - var tileGrid = TileBoundingBoxUtils.getTileGridWithTotalBoundingBox(matrixTotalBoundingBox, tileMatrix.matrix_width, tileMatrix.matrix_height, targetBoundingBoxInMatrixSetProjection); - var creator = TileCreator.initialize(this.width || tileWidth, this.height || tileHeight, tileMatrix, this.tileDao.tileMatrixSet, targetBoundingBox, this.tileDao.srs, targetProjection, canvas); - - var iterator = this.retrieveTileResults(targetBoundingBox.projectBoundingBox(targetProjection, this.tileDao.projection), tileMatrix); - for (var tile of iterator) { - tiles.push({ - data: tile.getTileData(), - gridColumn: tile.getTileColumn(), - gridRow: tile.getRow() - }); - } - - return tiles.reduce(function(sequence, tile) { - return sequence.then(function() { - return creator.addTile(tile.data, tile.gridColumn, tile.gridRow); - }); - }, Promise.resolve()) - .then(function() { - if (!canvas) { - return creator.getCompleteTile('png'); - } - }); -}; - -GeoPackageTileRetriever.prototype.retrieveTileResults = function (tileMatrixProjectionBoundingBox, tileMatrix) { - if(tileMatrix) { - var tileGrid = TileBoundingBoxUtils.getTileGridWithTotalBoundingBox(this.tileDao.tileMatrixSet.getBoundingBox(), tileMatrix.matrix_width, tileMatrix.matrix_height, tileMatrixProjectionBoundingBox); - return this.tileDao.queryByTileGrid(tileGrid, tileMatrix.zoom_level); - } else { - return Promise.resolve(); - } -}; - -},{"../../boundingBox":7,"../creator":79,"../matrixset":91,"../tileBoundingBoxUtils":93,"proj4":285}],93:[function(require,module,exports){ - -/** - * This module exports utility functions for [slippy map (XYZ)](https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames) - * tile calculations. - * - * @module tiles/tileBoundingBoxUtils - */ - -const BoundingBox = require('../boundingBox'); -const TileGrid = require('./tileGrid'); -const proj4 = ((proj4) => { return 'default' in proj4 ? proj4['default'] : proj4 })(require('proj4')); - -var WEB_MERCATOR_HALF_WORLD_WIDTH = proj4('EPSG:4326', 'EPSG:3857').forward([180, 0])[0]; - -/** - * Calculate the bounds in tile coordinates that covers the given bounding box - * at the given zoom level. The result object contains the keys `minX`, `maxX`, - * `minY`, and `maxY`, which are tile column and row values in the XYZ tile - * scheme. - * - * @param {BoundingBox} webMercatorBoundingBox bounds in EPSG:3857 coordinates (meters) - * @param {number} zoom the integral zoom level - * @returns {{minX: number, maxX: number, minY: number, maxY: number}} bounds in tile column and row coordinates - */ -module.exports.webMercatorTileBox = function(webMercatorBoundingBox, zoom) { - var tilesPerSide = module.exports.tilesPerSideWithZoom(zoom); - var tileSize = module.exports.tileSizeWithTilesPerSide(tilesPerSide); - - const minLonClip = Math.max(-WEB_MERCATOR_HALF_WORLD_WIDTH, webMercatorBoundingBox.minLongitude); - const maxLonClip = Math.min(WEB_MERCATOR_HALF_WORLD_WIDTH, webMercatorBoundingBox.maxLongitude); - const minLatClip = Math.max(-WEB_MERCATOR_HALF_WORLD_WIDTH, webMercatorBoundingBox.minLatitude); - const maxLatClip = Math.min(WEB_MERCATOR_HALF_WORLD_WIDTH, webMercatorBoundingBox.maxLatitude); - - var minX = Math.floor((minLonClip + WEB_MERCATOR_HALF_WORLD_WIDTH) / tileSize); - var maxX = Math.max(0, Math.ceil((maxLonClip + WEB_MERCATOR_HALF_WORLD_WIDTH) / tileSize) - 1); - var minY = Math.floor((WEB_MERCATOR_HALF_WORLD_WIDTH - maxLatClip) / tileSize); - var maxY = Math.max(0, Math.ceil((WEB_MERCATOR_HALF_WORLD_WIDTH - minLatClip) / tileSize) - 1); - - return { - minX: minX, - maxX: maxX, - minY: minY, - maxY: maxY - }; -} - -module.exports.WEB_MERCATOR_HALF_WORLD_WIDTH = WEB_MERCATOR_HALF_WORLD_WIDTH; - -module.exports.determinePositionAndScale = function(geoPackageTileBoundingBox, tileHeight, tileWidth, totalBoundingBox, totalHeight, totalWidth) { - var p = {}; - - var finalTileWidth = totalBoundingBox.maxLongitude - totalBoundingBox.minLongitude; - var xoffsetMin = geoPackageTileBoundingBox.minLongitude - totalBoundingBox.minLongitude; - var xpercentageMin = xoffsetMin / finalTileWidth; - - var finalTileHeight = totalBoundingBox.maxLatitude - totalBoundingBox.minLatitude; - var yoffsetMax = totalBoundingBox.maxLatitude - geoPackageTileBoundingBox.maxLatitude; - var ypercentageMax = yoffsetMax / finalTileHeight; - - var gpTileWidth = geoPackageTileBoundingBox.maxLongitude - geoPackageTileBoundingBox.minLongitude; - var gpPixelsPerUnitWidth = tileWidth / gpTileWidth; - - var finalTilePixelsPerUnitWidth = totalWidth / finalTileWidth; - - var xPositionInFinalTileUnits = ((geoPackageTileBoundingBox.minLongitude - totalBoundingBox.minLongitude) * finalTilePixelsPerUnitWidth); - var widthInFinalTileUnits = Math.round(((geoPackageTileBoundingBox.maxLongitude - geoPackageTileBoundingBox.minLongitude) * finalTilePixelsPerUnitWidth)); - - var gpTileHeight = geoPackageTileBoundingBox.maxLatitude - geoPackageTileBoundingBox.minLatitude; - var gpPixelsPerUnitHeight = tileHeight / gpTileHeight; - - var finalTilePixelsPerUnitHeight = totalHeight / finalTileHeight; - - var yPositionInFinalTileUnits = ((totalBoundingBox.maxLatitude - geoPackageTileBoundingBox.maxLatitude) * finalTilePixelsPerUnitHeight); - var heightInFinalTileUnits = Math.round((geoPackageTileBoundingBox.maxLatitude - geoPackageTileBoundingBox.minLatitude) * finalTilePixelsPerUnitHeight); - - p.yPositionInFinalTileStart = Math.round(ypercentageMax * totalHeight); - p.xPositionInFinalTileStart = Math.round(xpercentageMin * totalWidth); - p.dx = p.xPositionInFinalTileStart; - p.dy = p.yPositionInFinalTileStart; - p.sx = 0; - p.sy = 0; - p.dWidth = widthInFinalTileUnits; - p.dHeight = heightInFinalTileUnits; - p.sWidth = tileWidth; - p.sHeight = tileHeight; - - return p; -} - -/** - * Calculate the bounds in EPSG:3857 coordinates of the tile at the given XYZ - * coordinates coordinates and zoom level. - * - * @param {number} x tile column - * @param {number} y tile row - * @param {number} zoom zoom level - * @return {BoundingBox} a bounding box in EPSG:3857 meters - */ -module.exports.getWebMercatorBoundingBoxFromXYZ = function(x, y, zoom, options) { - var tilesPerSide = module.exports.tilesPerSideWithZoom(zoom); - var tileSize = module.exports.tileSizeWithTilesPerSide(tilesPerSide); - - var meterBuffer = 0; - if (options && options.buffer && options.tileSize) { - var pixelBuffer = options.buffer; - var metersPerPixel = tileSize / options.tileSize; - meterBuffer = metersPerPixel * pixelBuffer; - } - - var minLon = (-1 * WEB_MERCATOR_HALF_WORLD_WIDTH) + (x * tileSize) - meterBuffer; - var maxLon = (-1 * WEB_MERCATOR_HALF_WORLD_WIDTH) + ((x + 1) * tileSize) + meterBuffer; - var minLat = WEB_MERCATOR_HALF_WORLD_WIDTH - ((y + 1) * tileSize) - meterBuffer; - var maxLat = WEB_MERCATOR_HALF_WORLD_WIDTH - (y * tileSize) + meterBuffer; - - minLon = Math.max((-1 * WEB_MERCATOR_HALF_WORLD_WIDTH), minLon); - maxLon = Math.min(WEB_MERCATOR_HALF_WORLD_WIDTH, maxLon); - minLat = Math.max((-1 * WEB_MERCATOR_HALF_WORLD_WIDTH), minLat); - maxLat = Math.min(WEB_MERCATOR_HALF_WORLD_WIDTH, maxLat); - - var box = new BoundingBox(minLon, maxLon, minLat, maxLat); - - return box; -} - -/** - * Get the tile size in meters - * - * @param tilesPerSide tiles per side - * - * @return meters - */ -module.exports.tileSizeWithTilesPerSide = function(tilesPerSide) { - return (2 * WEB_MERCATOR_HALF_WORLD_WIDTH) / tilesPerSide; -} - -/** - * Get the tiles per side, width and height, at the zoom level - * - * @param zoom zoom level - * - * @return tiles per side - */ -module.exports.tilesPerSideWithZoom = function(zoom) { - return 1 << zoom; -} - -/** - * Get the tile grid - * - * @param webMercatorTotalBox web mercator total bounding box - * @param matrixWidth matrix width - * @param matrixHeight matrix height - * @param boundingBox bounding box - * - * @return tile grid - */ -module.exports.getTileGridWithTotalBoundingBox = function(totalBoundingBox, matrixWidth, matrixHeight, boundingBox) { - var minColumn = module.exports.getTileColumnWithTotalBoundingBox(totalBoundingBox, matrixWidth, boundingBox.minLongitude); - var maxColumn = module.exports.getTileColumnWithTotalBoundingBox(totalBoundingBox, matrixWidth, boundingBox.maxLongitude, true); - if (minColumn < matrixWidth && maxColumn >= 0) { - if (minColumn < 0) { - minColumn = 0; - } - if (maxColumn >= matrixWidth) { - maxColumn = matrixWidth - 1; - } - } - - var maxRow = module.exports.getRowWithTotalBoundingBox(totalBoundingBox, matrixHeight, boundingBox.minLatitude, true); - var minRow = module.exports.getRowWithTotalBoundingBox(totalBoundingBox, matrixHeight, boundingBox.maxLatitude); - - - if(minRow < matrixHeight && maxRow >= 0){ - if(minRow < 0){ - minRow = 0; - } - if(maxRow >= matrixHeight){ - maxRow = matrixHeight - 1; - } - } - - var tileGrid = new TileGrid(minColumn, maxColumn, minRow, maxRow); - return tileGrid; -} - -/** - * Get the tile column of the longitude in degrees - * - * @param webMercatorTotalBox web mercator total bounding box - * @param matrixWidth matrix width - * @param longitude longitude - * - * @return tile column - */ -module.exports.getTileColumnWithTotalBoundingBox = function(webMercatorTotalBox, matrixWidth, longitude, max) { - var minX = webMercatorTotalBox.minLongitude; - var maxX = webMercatorTotalBox.maxLongitude; - var tileId; - if (longitude < minX) { - tileId = -1; - } else if (longitude >= maxX) { - tileId = matrixWidth; - } else { - var matrixWidthMeters = maxX - minX; - var tileWidth = matrixWidthMeters / matrixWidth; - var tileIdDouble = ((longitude - minX) / tileWidth); - tileId = ~~tileIdDouble; - if (max) { - // if the edge lands right on the calculated edge, subtract one - if (tileIdDouble === tileId) { - tileId--; - } - } - } - return tileId; -} - -/** - * Get the tile row of the latitude in degrees - * - * @param webMercatorTotalBox web mercator total bounding box - * @param matrixHeight matrix height - * @param latitude latitude - * - * @return tile row - */ -module.exports.getRowWithTotalBoundingBox = function(webMercatorTotalBox, matrixHeight, latitude, max) { - var minY = webMercatorTotalBox.minLatitude; - var maxY = webMercatorTotalBox.maxLatitude; - - var tileId; - if (latitude < minY) { - tileId = matrixHeight; - } else if (latitude >= maxY) { - tileId = -1; - } else { - var matrixHeightMeters = maxY - minY; - var tileHeight = matrixHeightMeters / matrixHeight; - var tileIdDouble = ((maxY - latitude) / tileHeight); - tileId = ~~tileIdDouble; - if (max) { - // if the edge lands right on the calculated edge, add one - if (tileIdDouble === tileId) { - tileId--; - } - } - } - return tileId; -} - -/** - * Get the web mercator bounding box of the tile column and row in the tile - * matrix using the total bounding box - * - * @param webMercatorTotalBox web mercator total bounding box - * @param tileMatrix tile matrix - * @param tileColumn tile column - * @param tileRow tile row - * - * @return web mercator bounding box - */ -module.exports.getTileBoundingBox = function(box, tileMatrix, tileColumn, tileRow) { - var tileMatrixWidth = tileMatrix.matrix_width; - var tileMatrixHeight = tileMatrix.matrix_height; - var tileGrid = new TileGrid(tileColumn, tileColumn, tileRow, tileRow); - var matrixMinX = box.minLongitude; - var matrixMaxX = box.maxLongitude; - var matrixWidth = matrixMaxX - matrixMinX; - var tileWidth = matrixWidth / tileMatrixWidth; - - // Find the longitude range - var minLon = matrixMinX + (tileWidth * tileGrid.min_x); - var maxLon = minLon + (tileWidth * (tileGrid.max_x + 1 - tileGrid.min_x)); - - // Get the tile height - var matrixMinY = box.minLatitude; - var matrixMaxY = box.maxLatitude; - var matrixHeight = matrixMaxY - matrixMinY; - var tileHeight = matrixHeight / tileMatrixHeight; - - // Find the latitude range - var maxLat = matrixMaxY - (tileHeight * tileGrid.min_y); - var minLat = maxLat - (tileHeight * (tileGrid.max_y + 1 - tileGrid.min_y)); - - return new BoundingBox(minLon, maxLon, minLat, maxLat); -} - -module.exports.getTileGridBoundingBox = function(matrixSetBoundingBox, tileMatrixWidth, tileMatrixHeight, tileGrid) { - // Get the tile width - var matrixMinX = matrixSetBoundingBox.minLongitude; - var matrixMaxX = matrixSetBoundingBox.maxLongitude; - var matrixWidth = matrixMaxX - matrixMinX; - var tileWidth = matrixWidth / tileMatrixWidth; - - // Find the longitude range - var minLon = matrixMinX + (tileWidth * tileGrid.min_x); - var maxLon = minLon + (tileWidth * (tileGrid.max_x + 1 - tileGrid.min_x)); - - // Get the tile height - var matrixMinY = matrixSetBoundingBox.minLatitude; - var matrixMaxY = matrixSetBoundingBox.maxLatitude; - var matrixHeight = matrixMaxY - matrixMinY; - var tileHeight = matrixHeight / tileMatrixHeight; - - // Find the latitude range - var maxLat = matrixMaxY - (tileHeight * tileGrid.min_y); - var minLat = maxLat - (tileHeight * (tileGrid.max_y + 1 - tileGrid.min_y)); - - return new BoundingBox(minLon, maxLon, minLat, maxLat); -} - -module.exports.getXPixel = function(width, boundingBox, longitude) { - var boxWidth = boundingBox.maxLongitude - boundingBox.minLongitude; - var offset = longitude - boundingBox.minLongitude; - var percentage = offset / boxWidth; - return percentage * width; -} - -module.exports.getLongitudeFromPixel = function(width, boundingBox, tileBoundingBox, pixel) { - var boxWidth = tileBoundingBox.maxLongitude - tileBoundingBox.minLongitude; - var percentage = pixel / width; - var offset = percentage * boxWidth; - return offset + boundingBox.minLongitude; -} - -module.exports.getYPixel = function(height, boundingBox, latitude) { - var boxHeight = boundingBox.maxLatitude - boundingBox.minLatitude; - var offset = boundingBox.maxLatitude - latitude; - var percentage = offset / boxHeight; - return percentage * height; -} - -module.exports.getLatitudeFromPixel = function(height, boundingBox, tileBoundingBox, pixel) { - var boxHeight = tileBoundingBox.maxLatitude - tileBoundingBox.minLatitude; - var percentage = pixel / height; - var offset = percentage * boxHeight; - return boundingBox.maxLatitude - offset; -} - -},{"../boundingBox":7,"./tileGrid":94,"proj4":285}],94:[function(require,module,exports){ - -/** - * Tile grid with x and y ranges - * @module tiles/tileGrid - * @class - */ -var TileGrid = function(minX, maxX, minY, maxY) { - this.min_x = minX; - this.max_x = maxX; - this.min_y = minY; - this.max_y = maxY; -} - -TileGrid.prototype.count = function () { - return ((this.max_x + 1) - this.min_x) * ((this.max_y + 1) - this.min_y); -}; - -TileGrid.prototype.equals = function (tileGrid) { - if (!tileGrid) return false; - return this.min_x === tileGrid.min_x - && this.max_x === tileGrid.max_x - && this.min_y === tileGrid.min_y - && this.max_y === tileGrid.max_y; -}; - -module.exports = TileGrid; - -},{}],95:[function(require,module,exports){ -/** - * @module tiles/user/tileColumn - */ - -const UserColumn = require('../../user/userColumn'); -const DataTypes = require('../../db/dataTypes'); -const util = require('util'); - -/** - * `TileColumn` models columns in [user tile pyramid tables]{@link module:tiles/user/tileTable~TileTable}. - * - * @class - * @extends {module:user/userColumn~UserColumn} - */ -var TileColumn = function(index, name, dataType, max, notNull, defaultValue, primaryKey) { - UserColumn.call(this, index, name, dataType, max, notNull, defaultValue, primaryKey); - if (dataType === DataTypes.GPKG_DT_GEOMETRY) { - throw new Error('Data Type is required to create column: ' + name); - } -} - -util.inherits(TileColumn, UserColumn); - -/** - * Create an id column - * @param {number} index Index - */ -TileColumn.createIdColumn = function(index) { - return new TileColumn(index, TileColumn.COLUMN_ID, DataTypes.GPKGDataType.GPKG_DT_INTEGER, null, false, null, true); -} - -/** - * Create a zoom level column - * @param {number} index Index - */ -TileColumn.createZoomLevelColumn = function(index) { - return new TileColumn(index, TileColumn.COLUMN_ZOOM_LEVEL, DataTypes.GPKGDataType.GPKG_DT_INTEGER, null, true, null, false); -} - -/** - * Create a tile column column - * - * @param {number} index column index - */ -TileColumn.createTileColumnColumn = function(index) { - return new TileColumn(index, TileColumn.COLUMN_TILE_COLUMN, DataTypes.GPKGDataType.GPKG_DT_INTEGER, null, true, null, false); -} - -/** - * Create a tile row column - * - * @param {number} index column index - * - */ -TileColumn.createTileRowColumn = function(index) { - return new TileColumn(index, TileColumn.COLUMN_TILE_ROW, DataTypes.GPKGDataType.GPKG_DT_INTEGER, null, true, null, false); -} - -/** - * Create a tile data column - * - * @param {number} index column index - */ -TileColumn.createTileDataColumn = function(index) { - return new TileColumn(index, TileColumn.COLUMN_TILE_DATA, DataTypes.GPKGDataType.GPKG_DT_BLOB, null, true, null, false); -} - -TileColumn.COLUMN_ID = "id"; -TileColumn.COLUMN_ZOOM_LEVEL = "zoom_level"; -TileColumn.COLUMN_TILE_COLUMN = "tile_column"; -TileColumn.COLUMN_TILE_ROW = "tile_row"; -TileColumn.COLUMN_TILE_DATA = "tile_data"; - -module.exports = TileColumn; - -},{"../../db/dataTypes":14,"../../user/userColumn":105,"util":343}],96:[function(require,module,exports){ -/** - * tileDao module. - * @module tiles/user/tileDao - */ - -var UserDao = require('../../user/userDao') - , TileGrid = require('../tileGrid') - , TileRow = require('./tileRow') - , TileMatrixSetDao = require('../matrixset').TileMatrixSetDao - , TileMatrixDao = require('../matrix').TileMatrixDao - , ContentsDao = require('../../core/contents').ContentsDao - , BoundingBox = require('../../boundingBox') - , BoundingBoxUtils = require('../tileBoundingBoxUtils') - , BoundingBox = require('../../boundingBox') - , ColumnValues = require('../../dao/columnValues') - , TileColumn = require('./tileColumn') - , TileDaoUtils = require('./tileDaoUtils'); - -var util = require('util') - , proj4 = require('proj4'); - -proj4 = 'default' in proj4 ? proj4['default'] : proj4; - -/** - * `TileDao` is a {@link module:dao/dao~Dao} subclass for reading - * [user tile tables]{@link module:tiles/user/tileTable~TileTable}. - * - * @class TileDao - * @extends {module:user/userDao~UserDao} - * @param {GeoPackageConnection} connection - * @param {TileTable} table - * @param {TileMatrixSet} tileMatrixSet - * @param {TileMatrix[]} tileMatrices - */ -var TileDao = function(geoPackage, table, tileMatrixSet, tileMatrices) { - UserDao.call(this, geoPackage, table); - - this.tileMatrixSet = tileMatrixSet; - this.tileMatrices = tileMatrices; - this.zoomLevelToTileMatrix = []; - this.widths = []; - this.heights = []; - - if (tileMatrices.length === 0) { - this.minZoom = 0; - this.maxZoom = 0; - } else { - this.minZoom = this.tileMatrices[0].zoom_level; - this.maxZoom = this.tileMatrices[this.tileMatrices.length-1].zoom_level; - } - - // Populate the zoom level to tile matrix and the sorted tile widths and heights - for (var i = this.tileMatrices.length-1; i >= 0; i--) { - var tileMatrix = this.tileMatrices[i]; - this.zoomLevelToTileMatrix[tileMatrix.zoom_level] = tileMatrix; - } - - this.initialize(); -} - -util.inherits(TileDao, UserDao); - -TileDao.prototype.initialize = function() { - var tileMatrixSetDao = this.geoPackage.getTileMatrixSetDao(); - this.srs = tileMatrixSetDao.getSrs(this.tileMatrixSet); - this.projection = this.srs.organization.toUpperCase() + ':' + this.srs.organization_coordsys_id; - - // Populate the zoom level to tile matrix and the sorted tile widths and heights - for (var i = this.tileMatrices.length-1; i >= 0; i--) { - var tileMatrix = this.tileMatrices[i]; - - var width = tileMatrix.pixel_x_size * tileMatrix.tile_width; - var height = tileMatrix.pixel_y_size * tileMatrix.tile_height; - var proj4Projection = proj4(this.projection); - if (proj4Projection.to_meter) { - width = proj4Projection.to_meter * tileMatrix.pixel_x_size * tileMatrix.tile_width; - height = proj4Projection.to_meter * tileMatrix.pixel_y_size * tileMatrix.tile_height; - } - this.widths.push(width); - this.heights.push(height); - } - this.setWebMapZoomLevels(); -} - -TileDao.prototype.webZoomToGeoPackageZoom = function(webZoom) { - var webMercatorBoundingBox = BoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(0, 0, webZoom); - return this.determineGeoPackageZoomLevel(webMercatorBoundingBox, webZoom); -} - -TileDao.prototype.setWebMapZoomLevels = function() { - this.minWebMapZoom = 20; - this.maxWebMapZoom = 0; - - this.webZoomToGeoPackageZooms = {}; - - var totalTileWidth = this.tileMatrixSet.max_x - this.tileMatrixSet.min_x; - var totalTileHeight = this.tileMatrixSet.max_y - this.tileMatrixSet.min_y; - for (var i = 0; i < this.tileMatrices.length; i++) { - var tileMatrix = this.tileMatrices[i]; - var singleTileWidth = totalTileWidth / tileMatrix.matrix_width; - var singleTileHeight = totalTileHeight / tileMatrix.matrix_height; - var tileBox = new BoundingBox(this.tileMatrixSet.min_x, this.tileMatrixSet.min_x + singleTileWidth, this.tileMatrixSet.min_y, this.tileMatrixSet.min_y + singleTileHeight); - var proj4Projection = proj4(this.projection, 'EPSG:4326'); - var ne = proj4Projection.forward([tileBox.maxLongitude, tileBox.maxLatitude]); - var sw = proj4Projection.forward([tileBox.minLongitude, tileBox.minLatitude]); - var width = (ne[0] - sw[0]); - var height = (ne[1] - sw[1]); - var zoom = Math.ceil(Math.log2(360/width)); - if (this.minWebMapZoom > zoom) { - this.minWebMapZoom = zoom; - } - if (this.maxWebMapZoom < zoom) { - this.maxWebMapZoom = zoom; - } - this.webZoomToGeoPackageZooms[zoom] = tileMatrix.zoom_level; - } -} - -TileDao.prototype.determineGeoPackageZoomLevel = function(webMercatorBoundingBox, zoom) { - return this.webZoomToGeoPackageZooms[zoom]; -}; - -/** - * Get the bounding box of tiles at the zoom level - * @param {Number} zoomLevel zoom level - * @return {BoundingBox} bounding box of the zoom level, or null if no tiles - */ -TileDao.prototype.getBoundingBoxWithZoomLevel = function (zoomLevel) { - var boundingBox; - - var tileMatrix = this.getTileMatrixWithZoomLevel(zoomLevel); - if (tileMatrix) { - var tileGrid = this.queryForTileGridWithZoomLevel(zoomLevel); - if (tileGrid) { - var matrixSetBoundingBox = this.getBoundingBox(); - boundingBox = BoundingBoxUtils.getTileGridBoundingBox(matrixSetBoundingBox, tileMatrix.matrix_width, tileMatrix.matrix_height, tileGrid); - } - return boundingBox; - } else { - return boundingBox; - } -}; - -TileDao.prototype.getBoundingBox = function () { - return this.tileMatrixSet.getBoundingBox(); -}; - -TileDao.prototype.queryForTileGridWithZoomLevel = function (zoomLevel) { - var where = this.buildWhereWithFieldAndValue(TileColumn.COLUMN_ZOOM_LEVEL, zoomLevel); - var whereArgs = this.buildWhereArgs(zoomLevel); - var minX = this.minOfColumn(TileColumn.COLUMN_TILE_COLUMN, where, whereArgs); - var maxX = this.maxOfColumn(TileColumn.COLUMN_TILE_COLUMN, where, whereArgs); - var minY = this.minOfColumn(TileColumn.COLUMN_TILE_ROW, where, whereArgs); - var maxY = this.maxOfColumn(TileColumn.COLUMN_TILE_ROW, where, whereArgs); - var tileGrid; - if (minX != null && minY != null && maxX != null && maxY != null) { - tileGrid = new TileGrid(minX, maxX, minY, maxY); - } - return tileGrid; -}; - -/** - * Get the tile grid of the zoom level - * @param {Number} zoomLevel zoom level - * @return {TileGrid} tile grid at zoom level, null if no tile matrix at zoom level - */ -TileDao.prototype.getTileGridWithZoomLevel = function (zoomLevel) { - var tileGrid; - var tileMatrix = this.getTileMatrixWithZoomLevel(zoomLevel); - if (tileMatrix) { - tileGrid = new TileGrid(0, ~~tileMatrix.matrix_width - 1, 0, ~~tileMatrix.matrix_height - 1); - } - return tileGrid; -}; - -/** - * get the tile table - * @return {TileTable} tile table - */ -TileDao.prototype.getTileTable = function () { - return this.table; -}; - -/** - * Create a new tile row with the column types and values - * @param {Array} columnTypes column types - * @param {Array} values values - * @return {TileRow} tile row - */ -TileDao.prototype.newRowWithColumnTypes = function (columnTypes, values) { - return new TileRow(this.getTileTable(), columnTypes, values); -}; - -/** - * Create a new tile row - * @return {TileRow} tile row - */ -TileDao.prototype.newRow = function () { - return new TileRow(this.getTileTable()); -}; - -/** - * Adjust the tile matrix lengths if needed. Check if the tile matrix width - * and height need to expand to account for pixel * number of pixels fitting - * into the tile matrix lengths - */ -TileDao.prototype.adjustTileMatrixLengths = function () { - TileDaoUtils.adjustTileMatrixLengths(this.tileMatrixSet, this.tileMatrices); -}; - -/** - * Get the tile matrix at the zoom level - * @param {Number} zoomLevel zoom level - * @return {TileMatrix} tile matrix - */ -TileDao.prototype.getTileMatrixWithZoomLevel = function (zoomLevel) { - return this.zoomLevelToTileMatrix[zoomLevel]; -}; - -/** - * Query for a tile - * @param {Number} column column - * @param {Number} row row - * @param {Number} zoomLevel zoom level - * @param {Function} callback called with an error if one occurred and the TileDao - */ -TileDao.prototype.queryForTile = function (column, row, zoomLevel) { - var fieldValues = new ColumnValues(); - fieldValues.addColumn(TileColumn.COLUMN_TILE_COLUMN, column); - fieldValues.addColumn(TileColumn.COLUMN_TILE_ROW, row); - fieldValues.addColumn(TileColumn.COLUMN_ZOOM_LEVEL, zoomLevel); - var tileRow; - for (var row of this.queryForFieldValues(fieldValues)) { - tileRow = this.getRow(row); - } - return tileRow; -}; - -TileDao.prototype.queryForTilesWithZoomLevel = function (zoomLevel, tileCallback) { - var iterator = this.queryForEach(TileColumn.COLUMN_ZOOM_LEVEL, zoomLevel); - var thisgetRow = this.getRow.bind(this); - return { - [Symbol.iterator]() { - return this; - }, - next: function() { - var nextRow = iterator.next(); - if (!nextRow.done) { - return { - value: thisgetRow(nextRow.value), - done: false - }; - } - return { - done: true - } - }.bind(this) - } -}; - -/** - * Query for Tiles at a zoom level in descending row and column order - * @param {Number} zoomLevel zoom level - * @param {Function} tileCallback callback for each tile - * @param {Function} doneCallback called when all tiles are retrieved - */ -TileDao.prototype.queryForTilesDescending = function (zoomLevel, tileCallback) { - var iterator = this.queryForEach(TileColumn.COLUMN_ZOOM_LEVEL, zoomLevel, undefined, undefined, TileColumn.COLUMN_TILE_COLUMN + ' DESC, ' + TileColumn.COLUMN_TILE_ROW + ', DESC'); - - var thisgetRow = this.getRow.bind(this); - return { - [Symbol.iterator]() { - return this; - }, - next: function() { - var nextRow = iterator.next(); - if (!nextRow.done) { - return { - value: thisgetRow(nextRow.value), - done: false - }; - } - return { - done: true - } - }.bind(this) - }; -}; - -/** - * Query for tiles at a zoom level and column - * @param {Number} column column - * @param {Number} zoomLevel zoom level - * @param {Function} tileCallback called for each tile - * @param {Function} doneCallback called when all tiles have been retrieved - */ -TileDao.prototype.queryForTilesInColumn = function (column, zoomLevel, tileCallback) { - var fieldValues = new ColumnValues(); - fieldValues.addColumn(TileColumn.COLUMN_TILE_COLUMN, column); - fieldValues.addColumn(TileColumn.COLUMN_ZOOM_LEVEL, zoomLevel); - - var iterator = this.queryForFieldValues(fieldValues); - var thisgetRow = this.getRow.bind(this); - - return { - [Symbol.iterator]() { - return this; - }, - next: function() { - var nextRow = iterator.next(); - if (!nextRow.done) { - var tileRow = thisgetRow(nextRow.value); - - return { - value: tileRow, - done: false - }; - } else { - return { - done: true - } - } - } - } -}; - -/** - * Query for tiles at a zoom level and row - * @param {Number} row row - * @param {Number} zoomLevel zoom level - * @param {Function} tileCallback called for each tile - * @param {Function} doneCallback called when all tiles have been retrieved - */ -TileDao.prototype.queryForTilesInRow = function (row, zoomLevel, tileCallback, doneCallback) { - var fieldValues = new ColumnValues(); - fieldValues.addColumn(TileColumn.COLUMN_TILE_ROW, row); - fieldValues.addColumn(TileColumn.COLUMN_ZOOM_LEVEL, zoomLevel); - - var iterator = this.queryForFieldValues(fieldValues); - var thisgetRow = this.getRow.bind(this); - - return { - [Symbol.iterator]() { - return this; - }, - next: function() { - var nextRow = iterator.next(); - if (!nextRow.done) { - var tileRow = thisgetRow(nextRow.value); - - return { - value: tileRow, - done: false - }; - } else { - return { - done: true - } - } - } - } -}; - -/** - * Query by tile grid and zoom level - * @param {TileGrid} tileGrid tile grid - * @param {Number} zoomLevel zoom level - * @param {Function} tileCallback called for each tile - * @param {Function} doneCallback called when all tiles have been retrieved - */ -TileDao.prototype.queryByTileGrid = function (tileGrid, zoomLevel) { - if (!tileGrid) return doneCallback(); - var tileCount = 0; - var x = tileGrid.min_x; - - var where = ''; - where += this.buildWhereWithFieldAndValue(TileColumn.COLUMN_ZOOM_LEVEL, zoomLevel); - where += ' and '; - where += this.buildWhereWithFieldAndValue(TileColumn.COLUMN_TILE_COLUMN, tileGrid.min_x, '>='); - where += ' and '; - where += this.buildWhereWithFieldAndValue(TileColumn.COLUMN_TILE_COLUMN, tileGrid.max_x, '<='); - where += ' and '; - where += this.buildWhereWithFieldAndValue(TileColumn.COLUMN_TILE_ROW, tileGrid.min_y, '>='); - where += ' and '; - where += this.buildWhereWithFieldAndValue(TileColumn.COLUMN_TILE_ROW, tileGrid.max_y, '<='); - var whereArgs = this.buildWhereArgs([zoomLevel, tileGrid.min_x, tileGrid.max_x, tileGrid.min_y, tileGrid.max_y]); - - var iterator = this.queryWhereWithArgsDistinct(where, whereArgs); - var thisgetRow = this.getRow.bind(this); - - return { - [Symbol.iterator]() { - return this; - }, - next: function() { - var nextRow = iterator.next(); - if (!nextRow.done) { - var tileRow = thisgetRow(nextRow.value); - - return { - value: tileRow, - done: false - }; - } else { - return { - done: true - } - } - } - } -}; - -TileDao.prototype.deleteTile = function(column, row, zoomLevel) { - var where = ''; - - where += this.buildWhereWithFieldAndValue(TileColumn.COLUMN_ZOOM_LEVEL, zoomLevel); - where += ' and '; - where += this.buildWhereWithFieldAndValue(TileColumn.COLUMN_TILE_COLUMN, column); - where += ' and '; - where += this.buildWhereWithFieldAndValue(TileColumn.COLUMN_TILE_ROW, row); - - var whereArgs = this.buildWhereArgs([zoomLevel, column, row]); - - return this.deleteWhere(where, whereArgs); -}; - -TileDao.prototype.getSrs = function() { - return this.geoPackage.getContentsDao().getSrs(this.tileMatrixSet); -}; - -TileDao.prototype.dropTable = function() { - var tileMatrixDao = this.geoPackage.getTileMatrixDao(); - var dropResult = UserDao.prototype.dropTable.call(this); - - var tileMatrixSetDao = this.geoPackage.getTileMatrixSetDao(); - tileMatrixSetDao.delete(this.tileMatrixSet); - - for (var i = this.tileMatrices.length-1; i >= 0; i--) { - var tileMatrix = this.tileMatrices[i]; - tileMatrixDao.delete(tileMatrix); - } - - var dao = this.geoPackage.getContentsDao(); - dao.deleteById(this.gpkgTableName); - return dropResult; -} - -TileDao.prototype.rename = function(newName) { - UserDao.prototype.rename.call(this, newName); - - var oldName = this.tileMatrixSet.table_name; - - var values = {}; - values[TileMatrixSetDao.COLUMN_TABLE_NAME] = newName; - - var where = this.buildWhereWithFieldAndValue(TileMatrixSetDao.COLUMN_TABLE_NAME, oldName); - var whereArgs = this.buildWhereArgs([oldName]); - - var contentsDao = this.geoPackage.getContentsDao(); - var contents = contentsDao.queryForId(oldName); - contents.table_name = newName; - contents.identifier = newName; - contentsDao.create(contents); - - var tileMatrixSetDao = this.geoPackage.getTileMatrixSetDao(); - tileMatrixSetDao.updateWithValues(values, where, whereArgs); - - var tileMatrixDao = this.geoPackage.getTileMatrixDao(); - var tileMatrixUpdate = {}; - tileMatrixUpdate[TileMatrixDao.COLUMN_TABLE_NAME] = newName; - var tileMatrixWhere = this.buildWhereWithFieldAndValue(TileMatrixDao.COLUMN_TABLE_NAME, oldName); - - tileMatrixDao.updateWithValues(tileMatrixUpdate, tileMatrixWhere, whereArgs); - - contentsDao.deleteById(oldName); -} - -module.exports = TileDao; - -},{"../../boundingBox":7,"../../core/contents":8,"../../dao/columnValues":10,"../../user/userDao":106,"../matrix":90,"../matrixset":91,"../tileBoundingBoxUtils":93,"../tileGrid":94,"./tileColumn":95,"./tileDaoUtils":97,"./tileRow":98,"proj4":285,"util":343}],97:[function(require,module,exports){ - -module.exports.adjustTileMatrixLengths = function(tileMatrixSet, tileMatrices) { - var tileMatrixWidth = tileMatrixSet.maxX - tileMatrixSet.minX; - var tileMatrixHeight = tileMatrixSet.maxY - tileMatrixSet.minY; - for (var i = 0; i < tileMatrices.length; i++) { - var tileMatrix = tileMatrices[i]; - var tempMatrixWidth = ~~((tileMatrixWidth / (tileMatrix.pixelXSize * ~~tileMatrix.tileWidth))); - var tempMatrixHeight = ~~((tileMatrixHeight / (tileMatrix.pixelYSize * ~~(tileMatrix.tileHeight)))); - if(tempMatrixWidth > ~~(tileMatrix.matrixWidth)) { - tileMatrix.matrixWidth = ~~(tempMatrixWidth); - } - if (tempMatrixHeight > ~~(tileMatrix.matrixHeight)) { - tileMatrix.matrixHeight = ~~(tempMatrixHeight); - } - } -} - -},{}],98:[function(require,module,exports){ -/** - * tileRow module. - * @module tiles/user/tileRow - */ - -var UserRow = require('../../user/userRow'); - -var util = require('util'); - -/** - * Tile Row containing the values from a single result set row - * @param {TileTable} tileTable tile table - * @param {Array} columnTypes column types - * @param {Array} values values - */ -var TileRow = function(tileTable, columnTypes, values) { - UserRow.call(this, tileTable, columnTypes, values); - this.tileTable = tileTable; -} - -util.inherits(TileRow, UserRow); - -TileRow.prototype.toObjectValue = function (value) { - return value; -}; - -TileRow.prototype.toDatabaseValue = function (columnName) { - return this.getValueWithColumnName(columnName); -}; - -/** - * Get the zoom level column index - * @return {Number} zoom level column index - */ -TileRow.prototype.getZoomLevelColumnIndex = function () { - return this.tileTable.zoomLevelIndex; -}; - -/** - * Get the zoom level column - * @return {TileColumn} zoom level column - */ -TileRow.prototype.getZoomLevelColumn = function() { - return this.tileTable.getZoomLevelColumn(); -} - -/** - * Get the zoom level - * @return {Number} zoom level - */ -TileRow.prototype.getZoomLevel = function () { - return this.getValueWithColumnName(this.getZoomLevelColumn().name); -}; - -/** - * Set the zoom level - * @param {Number} zoomLevel zoom level - */ -TileRow.prototype.setZoomLevel = function (zoomLevel) { - this.setValueWithIndex(this.getZoomLevelColumnIndex(), zoomLevel); -}; - -/** - * Get the tile column column Index - * @return {number} tile column column index - */ -TileRow.prototype.getTileColumnColumnIndex = function () { - return this.tileTable.tileColumnIndex; -}; - -/** - * Get the tile column column - * @return {TileColumn} tile column column - */ -TileRow.prototype.getTileColumnColumn = function () { - return this.tileTable.getTileColumnColumn(); -}; - -/** - * Get the tile column - * @return {Number} tile column - */ -TileRow.prototype.getTileColumn = function () { - return this.getValueWithColumnName(this.getTileColumnColumn().name); -}; - -/** - * Set the tile column - * @param {number} tileColumn tile column - */ -TileRow.prototype.setTileColumn = function (tileColumn) { - this.setValueWithColumnName(this.getTileColumnColumn().name, tileColumn); -}; - -/** - * Get the tile row column index - * @return {Number} tile row column index - */ -TileRow.prototype.getRowColumnIndex = function () { - return this.tileTable.tileRowIndex; -}; - -/** - * Get the tile row column - * @return {TileColumn} tile row column - */ -TileRow.prototype.getRowColumn = function () { - return this.tileTable.getRowColumn(); -}; - -/** - * Get the tile row - * @return {Number} tile row - */ -TileRow.prototype.getRow = function () { - return this.getValueWithColumnName(this.getRowColumn().name); -}; - -/** - * Set the tile row - * @param {Number} tileRow tile row - */ -TileRow.prototype.setTileRow = function (tileRow) { - this.setValueWithColumnName(this.getRowColumn().name, tileRow); -}; - -/** - * Get the tile data column index - * @return {Number} tile data column index - */ -TileRow.prototype.getTileDataColumnIndex = function () { - return this.tileTable.tileDataIndex; -}; - -/** - * Get the tile data column - * @return {TileColumn} tile data column - */ -TileRow.prototype.getTileDataColumn = function () { - return this.tileTable.getTileDataColumn(); -}; - -/** - * Get the tile data - * @return {Buffer} tile data - */ -TileRow.prototype.getTileData = function () { - return this.getValueWithColumnName(this.getTileDataColumn().name); -}; - -/** - * Set the tile data - * @param {Buffer} tileData tile data - */ -TileRow.prototype.setTileData = function (tileData) { - this.setValueWithColumnName(this.getTileDataColumn().name, tileData); -}; - -/** - * Get the tile data as an image - * @return {image} tile image - */ -TileRow.prototype.getTileDataImage = function () { - // TODO -}; - - -// /** -// * Get the tile data as a scaled image -// * -// * @param scale scale, 0.0 to 1.0 -// * -// * @return tile image -// */ -// -(UIImage *) getTileDataImageWithScale: (CGFloat) scale; -// -// /** -// * Set the tile data with an image -// * -// * @param image image -// * @param format image format -// */ -// -(void) setTileDataWithImage: (UIImage *) image andFormat: (enum GPKGCompressFormat) format; -// -// /** -// * Set the tile data with an image -// * -// * @param image image -// * @param format image format -// * @param quality compression quality, 0.0 to 1.0, used only for GPKG_CF_JPEG -// */ -// -(void) setTileDataWithImage: (UIImage *) image andFormat: (enum GPKGCompressFormat) format andQuality: (CGFloat) quality; - - -module.exports = TileRow; - -},{"../../user/userRow":107,"util":343}],99:[function(require,module,exports){ -/** - * @module tiles/user/tileTable - */ - -const UserTable = require('../../user/userTable'); -const TileColumn = require('./tileColumn'); -const util = require('util'); - -/** - * `TileTable` models [tile pyramid user tables](https://www.geopackage.org/spec121/index.html#tiles_user_tables). - * - * @class - * @extends {module:user/userTable~UserTable} - * @param {string} tableName - * @param {module:tiles/user/tileColumn~TileColumn[]} columns - */ -var TileTable = module.exports = function(tableName, columns) { - UserTable.call(this, tableName, columns); - - var zoomLevel; - var tileColumn; - var tileRow; - var tileData; - var uniqueColumns = []; - - for (var i = 0; i < columns.length; i++) { - var column = columns[i]; - var columnName = column.name; - var columnIndex = column.index; - - switch(columnName) { - case TileColumn.COLUMN_ZOOM_LEVEL: - this.duplicateCheck(columnIndex, zoomLevel, TileColumn.COLUMN_ZOOM_LEVEL); - zoomLevel = columnIndex; - uniqueColumns.push(column); - break; - case TileColumn.COLUMN_TILE_COLUMN: - this.duplicateCheck(columnIndex, tileColumn, TileColumn.COLUMN_TILE_COLUMN); - tileColumn = columnIndex; - uniqueColumns.push(column); - break; - case TileColumn.COLUMN_TILE_ROW: - this.duplicateCheck(columnIndex, tileRow, TileColumn.COLUMN_TILE_ROW); - tileRow = columnIndex; - uniqueColumns.push(column); - break; - case TileColumn.COLUMN_TILE_DATA: - this.duplicateCheck(columnIndex, tileData, TileColumn.COLUMN_TILE_DATA); - tileData = columnIndex; - break; - } - } - - this.uniqueConstraints = [{columns: uniqueColumns}]; - - this.missingCheck(zoomLevel, TileColumn.COLUMN_ZOOM_LEVEL); - this.zoomLevelIndex = zoomLevel; - - this.missingCheck(tileColumn, TileColumn.COLUMN_TILE_COLUMN); - this.tileColumnIndex = tileColumn; - - this.missingCheck(tileRow, TileColumn.COLUMN_TILE_ROW); - this.tileRowIndex = tileRow; - - this.missingCheck(tileData, TileColumn.COLUMN_TILE_DATA); - this.tileDataIndex = tileData; -} - -util.inherits(TileTable, UserTable); - -TileTable.prototype.getZoomLevelColumn = function() { - return this.getColumnWithIndex(this.zoomLevelIndex); -}; - -TileTable.prototype.getTileColumnColumn = function() { - return this.getColumnWithIndex(this.tileColumnIndex); -}; - -TileTable.prototype.getRowColumn = function() { - return this.getColumnWithIndex(this.tileRowIndex); -}; - -TileTable.prototype.getTileDataColumn = function() { - return this.getColumnWithIndex(this.tileDataIndex); -}; - -TileTable.prototype.getTableType = function() { - return UserTable.TILE_TABLE; -} - -TileTable.createRequiredColumns = function() { - return TileTable.createRequiredColumnsWithStartingIndex(0); -} - -TileTable.createRequiredColumnsWithStartingIndex = function(startingIndex) { - var columns = []; - columns.push(TileColumn.createIdColumn(startingIndex++)); - columns.push(TileColumn.createZoomLevelColumn(startingIndex++)); - columns.push(TileColumn.createTileColumnColumn(startingIndex++)); - columns.push(TileColumn.createTileRowColumn(startingIndex++)); - columns.push(TileColumn.createTileDataColumn(startingIndex++)); - return columns; -} - -},{"../../user/userTable":108,"./tileColumn":95,"util":343}],100:[function(require,module,exports){ -/** - * tileTableReader module. - * @module tiles/user/tileTableReader - */ - -var UserTableReader = require('../../user/userTableReader') - , DataTypes = require('../../db/dataTypes') - , TileMatrixSet = require('../matrixset').TileMatrixSet - , TileTable = require('./tileTable') - , TileColumn = require('./tileColumn'); - -var util = require('util'); - -/** -* Reads the metadata from an existing tile table -* @class TileTableReader -* @extends {module:user~UserTableReader} -*/ -var TileTableReader = function(tileMatrixSet) { - UserTableReader.call(this, tileMatrixSet.table_name); - this.tileMatrixSet = tileMatrixSet; -} - -util.inherits(TileTableReader, UserTableReader); - -TileTableReader.prototype.readTileTable = function (geoPackage) { - return this.readTable(geoPackage.getDatabase()); -}; - -TileTableReader.prototype.createTable = function (tableName, columns) { - return new TileTable(tableName, columns); -}; - -TileTableReader.prototype.createColumnWithResults = function (results, index, name, type, max, notNull, defaultValueIndex, primaryKey) { - var dataType = DataTypes.fromName(type); - var defaultValue = undefined; - if (defaultValueIndex) { - // console.log('default value index', defaultValueIndex); - // console.log('result', results); - } - var column = new TileColumn(index, name, dataType, max, notNull, defaultValue, primaryKey); - - return column; -}; - -/** - * The TileTableReader - * @type {TileTableReader} - */ -module.exports = TileTableReader; - -},{"../../db/dataTypes":14,"../../user/userTableReader":109,"../matrixset":91,"./tileColumn":95,"./tileTable":99,"util":343}],101:[function(require,module,exports){ -/** - * @module user/custom - */ - -var util = require('util'); - -var UserColumn = require('../userColumn') - , DataTypes = require('../../db/dataTypes') - -/** - * Create a new user custom columnd - * @param {Number} index column index - * @param {string} name column name - * @param {module:db/dataTypes~GPKGDataType} dataType data type - * @param {Number} max max value - * @param {Boolean} notNull not null - * @param {Object} defaultValue default value or nil - * @param {Boolean} primaryKey primary key - */ -var UserCustomColumn = function(index, name, dataType, max, notNull, defaultValue, primaryKey) { - UserColumn.call(this, index, name, dataType, max, notNull, defaultValue, primaryKey); - if (dataType == null) { - throw new Error('Data type is required to create column: ' + name); - } -} - -util.inherits(UserCustomColumn, UserColumn); - -/** - * Create a new column - * - * @param {Number} index column index - * @param {string} name column name - * @param {module:db/dataTypes~GPKGDataType} type data type - * @param {Number} max max value - * @param {Boolean} notNull not null - * @param {Object} defaultValue default value or nil - * - * @return {module:user/custom~UserCustomColumn} created column - */ -UserCustomColumn.createColumn = function(index, name, dataType, max, notNull, defaultValue) { - return new UserCustomColumn(index, name, dataType, max, notNull, defaultValue, false); -} - -module.exports = UserCustomColumn; - -},{"../../db/dataTypes":14,"../userColumn":105,"util":343}],102:[function(require,module,exports){ -/** - * @module user/custom - */ -var util = require('util'); - -var UserDao = require('../userDao') - , UserRow = require('../userRow') - , UserCustomTableReader = require('./userCustomTableReader'); - -/** - * User Custom Dao - * @class - * @extends module:user/userDao~UserDao - * @param {module:geoPackage~GeoPackage} geoPackage geopackage object - * @param {module:user/custom~UserCustomTable} userCustomTable user custom table - */ -var UserCustomDao = function(geoPackage, userCustomTable) { - UserDao.call(this, geoPackage, userCustomTable); -} - -util.inherits(UserCustomDao, UserDao); - -/** - * Create a new UserRow - * @return {module:user/userRow~UserRow} - */ -UserCustomDao.prototype.newRow = function() { - return new UserRow(this.table); -} - -/** - * Reads the table specified from the geopackage - * @param {module:geoPackage~GeoPackage} geoPackage geopackage object - * @param {string} tableName table name - * @param {string[]} requiredColumns required columns - * @return {module:user/custom~UserCustomDao} - */ -UserCustomDao.readTable = function(geoPackage, tableName, requiredColumns) { - var reader = new UserCustomTableReader(tableName, requiredColumns); - var userCustomTable = reader.readTable(geoPackage.getDatabase()); - return new UserCustomDao(geoPackage, userCustomTable); -} - -module.exports = UserCustomDao; - -},{"../userDao":106,"../userRow":107,"./userCustomTableReader":104,"util":343}],103:[function(require,module,exports){ -/** - * @module user/custom - */ -var util = require('util'); - -var UserTable = require('../userTable'); - -/** - * Create a new user custom table - * @class - * @extends module:user/userTable~UserTable - * @param {string} tableName table name - * @param {module:user/userColumn~UserColumn[]} columns user columns - * @param {string[]} requiredColumns required columns - */ -var UserCustomTable = function(tableName, columns, requiredColumns) { - UserTable.call(this, tableName, columns); - if (requiredColumns && requiredColumns.length) { - var found = {}; - for (var i = 0; i < columns.length; i++) { - var column = columns[i]; - if (requiredColumns.indexOf(column.name) !== -1) { - var previousIndex = found[column.name]; - this.duplicateCheck(column.index, previousIndex, column.name); - found[column.name] = column.index; - } - } - for (var i = 0; i < requiredColumns.length; i++) { - this.missingCheck(found[requiredColumns[i]], requiredColumns); - } - } -} - -util.inherits(UserCustomTable, UserTable); - -module.exports = UserCustomTable; - -},{"../userTable":108,"util":343}],104:[function(require,module,exports){ -/** - * @module user/custom - */ -var util = require('util'); - -var UserTableReader = require('../userTableReader') - , DataTypes = require('../../db/dataTypes') - , UserCustomColumn = require('./userCustomColumn') - , UserCustomTable = require('./userCustomTable'); - -/** - * User custom table reader - * @class - * @extends module:user/userTableReader~UserTableReader - * @param {string} tableName table name - * @param {string[]} requiredColumns required columns - */ -var UserCustomTableReader = function(tableName, requiredColumns) { - UserTableReader.call(this, tableName, requiredColumns); -} - -util.inherits(UserCustomTableReader, UserTableReader); - -/** - * Creates user custom column - * @param {string} tableName table name - * @param {module:user/userCustom~UserCustomColumn[]} columnList columns - * @param {string[]} requiredColumns required columns - * @return {module:user/userCustom~UserCustomTable} - */ -UserCustomTableReader.prototype.createTable = function(tableName, columnList, requiredColumns) { - return new UserCustomTable(tableName, columnList, requiredColumns); -} - -/** - * Creates a user custom column - * @param {Object} result - * @param {Number} index column index - * @param {string} name column name - * @param {module:db/dataTypes~GPKGDataType} type data type - * @param {Number} max max value - * @param {Boolean} notNull not null - * @param {Object} defaultValue default value or nil - * @param {Boolean} primaryKey primary key - * @return {module:user/custom~UserCustomColumn} - */ -UserCustomTableReader.prototype.createColumnWithResults = function(result, index, name, type, max, notNull, defaultValue, primaryKey) { - - var dataType = DataTypes.fromName(type); - return new UserCustomColumn(index, name, dataType, max, notNull, defaultValue, primaryKey); -} - - -module.exports = UserCustomTableReader; - -},{"../../db/dataTypes":14,"../userTableReader":109,"./userCustomColumn":101,"./userCustomTable":103,"util":343}],105:[function(require,module,exports){ -/** - * @module user/userColumn - */ - -var DataTypes = require('../db/dataTypes'); - -/** - * A `UserColumn` is meta-data about a single column from a {@link module:/user/userTable~UserTable}. - * - * @class - * @param {Number} index column index - * @param {string} name column name - * @param {module:db/dataTypes~GPKGDataType} dataType data type of the column - * @param {?Number} max max value - * @param {Boolean} notNull not null - * @param {?Object} defaultValue default value or null - * @param {Boolean} primaryKey `true` if this column is part of the table's primary key - */ -function UserColumn(index, name, dataType, max, notNull, defaultValue, primaryKey) { - this.index = index; - this.name = name; - this.dataType = dataType; - this.max = max; - this.notNull = notNull; - this.defaultValue = defaultValue; - this.primaryKey = primaryKey; - this.validateMax(); -} - -/** - * Gets the type name - * @return {module:db/dataTypes~GPKGDataType} - */ -UserColumn.prototype.getTypeName = function () { - var type = undefined; - if (this.dataType !== DataTypes.GPKGDataType.GPKG_DT_GEOMETRY) { - type = DataTypes.name(this.dataType); - } - return type; -}; - -/** - * Validate that if max is set, the data type is text or blob - */ -UserColumn.prototype.validateMax = function () { - if(this.max && this.dataType !== DataTypes.GPKGDataType.GPKG_DT_TEXT && this.dataType !== DataTypes.GPKGDataType.GPKG_DT_BLOB) { - throw new Error('Column max is only supported for TEXT and BLOB columns. column: ' + this.name + ', max: ' + this.max + ', type: ' + this.dataType) - } -}; - -/** - * Create a new primary key column - * - * @param {Number} index column index - * @param {string} name column name - * - * @return {module:user/userColumn~UserColumn} created column - */ -UserColumn.createPrimaryKeyColumnWithIndexAndName = function(index, name) { - return new UserColumn(index, name, DataTypes.GPKGDataType.GPKG_DT_INTEGER, undefined, true, undefined, true); -} - -/** - * Create a new column - * - * @param {Number} index column index - * @param {string} name column name - * @param {module:db/dataTypes~GPKGDataType} type data type - * @param {Boolean} notNull not null - * @param {Object} defaultValue default value or nil - * - * @return {module:user/userColumn~UserColumn} created column - */ -UserColumn.createColumnWithIndex = function(index, name, type, notNull, defaultValue) { - return UserColumn.createColumnWithIndexAndMax(index, name, type, undefined, notNull, defaultValue); -} - -/** - * Create a new column - * - * @param {Number} index column index - * @param {string} name column name - * @param {module:db/dataTypes~GPKGDataType} type data type - * @param {Number} max max value - * @param {Boolean} notNull not null - * @param {Object} defaultValue default value or nil - * - * @return {module:user/userColumn~UserColumn} created column - */ -UserColumn.createColumnWithIndexAndMax = function(index, name, type, max, notNull, defaultValue) { - return new UserColumn(index, name, type, max, notNull, defaultValue, false); -} - -module.exports = UserColumn; - -},{"../db/dataTypes":14}],106:[function(require,module,exports){ -/** - * UserDao module. - * @module user/userDao - */ - -var UserRow = require('./userRow') - , MediaTable = require('../extension/relatedTables/mediaTable') - , SimpleAttributesTable = require('../extension/relatedTables/simpleAttributesTable') - , RelationType = require('../extension/relatedTables/relationType') - , UserTableReader = require('./userTableReader') - , Dao = require('../dao/dao'); - -var util = require('util'); - -/** - * Abstract User DAO for reading user tables - * @class UserDao - * @extends {module:dao/dao~Dao} - * @param {module:db/geoPackageConnection~GeoPackageConnection} connection connection - * @param {string} table table name - */ -var UserDao = function(geoPackage, table) { - Dao.call(this, geoPackage); - this.table = table; - this.table_name = table.table_name; - this.gpkgTableName = table.table_name; - if (table.getPkColumn()) { - this.idColumns = [table.getPkColumn().name]; - } else { - this.idColumns = []; - } - this.columns = table.columnNames; -} - -util.inherits(UserDao, Dao); - -/** - * Reads the table specified from the geopackage - * @param {module:geoPackage~GeoPackage} geoPackage geopackage object - * @param {string} tableName table name - * @param {string[]} requiredColumns required columns - * @return {module:user/userDao~UserDao} - */ -UserDao.readTable = function(geoPackage, tableName) { - var reader = new UserTableReader(tableName); - var userTable = reader.readTable(geoPackage.getDatabase()); - return new UserDao(geoPackage, userTable); -} - -/** - * Creates a UserRow - * @param {Object} [results] results to create the row from if not specified, an empty row is created - * @return {module:user/userRow~UserRow} - */ -UserDao.prototype.createObject = function (results) { - if (results) { - return this.getRow(results); - } - return this.newRow(); -}; - -/** - * Sets the value in the row - * @param {module:user/userRow~UserRow} object user row - * @param {Number} columnIndex index - * @param {Object} value value - */ -UserDao.prototype.setValueInObject = function (object, columnIndex, value) { - object.setValueNoValidationWithIndex(columnIndex, value); -}; - -/** - * Get a user row from the current results - * @param {Object} results result to create the row from - * @return {module:user/userRow~UserRow} the user row - */ -UserDao.prototype.getRow = function (results) { - var row = undefined; - if (!this.table) return row; - var columns = this.table.columnCount(); - var columnTypes = {}; - for (var i = 0; i < columns; i++) { - var column = this.table.getColumnWithIndex(i); - columnTypes[column.name] = column.dataType; - } - return this.newRowWithColumnTypes(columnTypes, results); -}; - -/** - * Get the table for this dao - * @return {module:user/userTable~UserTable} - */ -UserDao.prototype.getTable = function() { - return this.table; -} - -/** - * Create a user row - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @return {module:user/userRow~UserRow} user row - */ -UserDao.prototype.newRowWithColumnTypes = function (columnTypes, values) { - return new UserRow(this.table, columnTypes, values); -}; - -/** - * Get the projection - * @return {string} the projection - */ -UserDao.prototype.getProjection = function () { - return this.projection; -}; - -/** - * Links related rows together - * @param {module:user/userRow~UserRow} userRow user row - * @param {module:user/userRow~UserRow} relatedRow related row - * @param {string} relationType relation type - * @param {string|module:extension/relatedTables~UserMappingTable} [mappingTable] mapping table - * @param {module:dao/columnValues~ColumnValues} [mappingColumnValues] column values - * @return {Promise} - */ -UserDao.prototype.linkRelatedRow = function(userRow, relatedRow, relationType, mappingTable, mappingColumnValues) { - var rte = this.geoPackage.getRelatedTablesExtension(); - var baseTableName = userRow.table.table_name; - var relatedTableName = relatedRow.table.table_name; - var relationship = rte.getRelationshipBuilder() - .setBaseTableName(baseTableName) - .setRelatedTableName(relatedTableName) - .setRelationType(relationType); - - var mappingTableName; - if (!mappingTable || typeof mappingTable === 'string') { - var mappingTable = mappingTable || baseTableName + '_' + relatedTableName; - relationship.setMappingTableName(mappingTable); - mappingTableName = mappingTable; - } else { - relationship.setUserMappingTable(mappingTable); - mappingTableName = mappingTable.table_name; - } - - return rte.addRelationship(relationship) - .then(function() { - var userMappingDao = rte.getMappingDao(mappingTableName); - var userMappingRow = userMappingDao.newRow(); - userMappingRow.setBaseId(userRow.getId()); - userMappingRow.setRelatedId(relatedRow.getId()); - for (var column in mappingColumnValues) { - userMappingRow.setValueWithColumnName(column, mappingColumnValues[column]); - } - userMappingDao.create(userMappingRow); - }); -} - -/** - * Links a user row to a feature row - * @param {module:user/userRow~UserRow} userRow user row - * @param {module:features/user/featureRow~FeatureRow} featureRow feature row - * @param {string|module:extension/relatedTables~UserMappingTable} [mappingTable] mapping table - * @param {module:dao/columnValues~ColumnValues} [mappingColumnValues] column values - * @return {Promise} - */ -UserDao.prototype.linkFeatureRow = function(userRow, featureRow, mappingTable, mappingColumnValues) { - return this.linkRelatedRow(userRow, featureRow, RelationType.FEATURES, mappingTable, mappingColumnValues); -} - -/** - * Links a user row to a media row - * @param {module:user/userRow~UserRow} userRow user row - * @param {module:extension/relatedTables~MediaRow} mediaRow media row - * @param {string|module:extension/relatedTables~UserMappingTable} [mappingTable] mapping table - * @param {module:dao/columnValues~ColumnValues} [mappingColumnValues] column values - * @return {Promise} - */ -UserDao.prototype.linkMediaRow = function(userRow, mediaRow, mappingTable, mappingColumnValues) { - return this.linkRelatedRow(userRow, mediaRow, RelationType.MEDIA, mappingTable, mappingColumnValues); -} - -/** - * Links a user row to a simpleAttributes row - * @param {module:user/userRow~UserRow} userRow user row - * @param {module:extension/relatedTables~SimpleAttributesRow} simpleAttributesRow simple attributes row - * @param {string|module:extension/relatedTables~UserMappingTable} [mappingTable] mapping table - * @param {module:dao/columnValues~ColumnValues} [mappingColumnValues] column values - * @return {Promise} - */ -UserDao.prototype.linkSimpleAttributesRow = function(userRow, simpleAttrbuteRow, mappingTable, mappingColumnValues) { - return this.linkRelatedRow(userRow, simpleAttrbuteRow, RelationType.SIMPLE_ATTRIBUTES, mappingTable, mappingColumnValues); -} - -/** - * Get all media rows that are linked to this user row - * @param {module:user/userRow~UserRow} userRow user row - * @return {module:extension/relatedTables~MediaRow[]} - */ -UserDao.prototype.getLinkedMedia = function(userRow) { - var mediaRelations = this.getMediaRelations(); - var rte = this.geoPackage.getRelatedTablesExtension(); - var linkedMedia = []; - for (var i = 0; i < mediaRelations.length; i++) { - var mediaRelation = mediaRelations[i]; - var mediaDao = rte.getMediaDao(mediaRelation); - var userMappingDao = rte.getMappingDao(mediaRelation.mapping_table_name); - var mappings = userMappingDao.queryByBaseId(userRow.getId()); - for (var m = 0; m < mappings.length; m++) { - var relatedId = mappings[m].related_id; - linkedMedia.push(mediaDao.queryForId(relatedId)); - } - } - return linkedMedia; -} - -/** - * Get all simple attribute rows that are linked to this user row - * @param {module:user/userRow~UserRow} userRow user row - * @return {module:extension/relatedTables~SimpleAttributeRow[]} - */ -UserDao.prototype.getLinkedSimpleAttributes = function(userRow) { - var simpleRelations = this.getSimpleAttributesRelations(); - var rte = this.geoPackage.getRelatedTablesExtension(); - var linkedSimpleAttributes = []; - for (var i = 0; i < simpleRelations.length; i++) { - var simpleRelation = simpleRelations[i]; - var simpleDao = rte.getSimpleAttributesDao(simpleRelation); - var userMappingDao = rte.getMappingDao(simpleRelation.mapping_table_name); - var mappings = userMappingDao.queryByBaseId(userRow.getId()); - for (var m = 0; m < mappings.length; m++) { - var relatedId = mappings[m].related_id; - linkedSimpleAttributes.push(simpleDao.queryForId(relatedId)); - } - } - return linkedSimpleAttributes; -} - -/** - * Get all feature rows that are linked to this user row - * @param {module:user/userRow~UserRow} userRow user row - * @return {module:features/user/featureRow~FeatureRow[]} - */ -UserDao.prototype.getLinkedFeatures = function(userRow) { - var featureRelations = this.getFeatureRelations(); - var rte = this.geoPackage.getRelatedTablesExtension(); - var linkedFeatures = []; - for (var i = 0; i < featureRelations.length; i++) { - var featureRelation = featureRelations[i]; - var featureDao = this.geoPackage.getFeatureDao(featureRelation.base_table_name); - var userMappingDao = rte.getMappingDao(featureRelation.mapping_table_name); - var mappings = userMappingDao.queryByBaseId(userRow.getId()); - for (var m = 0; m < mappings.length; m++) { - var relatedId = mappings[m].related_id; - linkedFeatures.push(featureDao.queryForId(relatedId)); - } - } - return linkedFeatures; -} - -/** - * Get all simple attribute relations to this table - * @return {Object[]} - */ -UserDao.prototype.getSimpleAttributesRelations = function() { - return this.getRelationsWithName(SimpleAttributesTable.RELATION_TYPE.name); -} - -/** - * Get all feature relations to this table - * @return {Object[]} - */ -UserDao.prototype.getFeatureRelations = function() { - return this.getRelationsWithName(RelationType.FEATURES.name); -} - -/** - * Get all media relations to this table - * @return {Object[]} - */ -UserDao.prototype.getMediaRelations = function() { - return this.getRelationsWithName(MediaTable.RELATION_TYPE.name); -} - -/** - * Get all relations to this table with the specified name - * @param {string} name - * @return {Object[]} - */ -UserDao.prototype.getRelationsWithName = function(name) { - return this.geoPackage.getExtendedRelationDao().getBaseTableRelationsWithName(this.table_name, name); -} - -/** - * Get all relations to this table - * @return {Object[]} - */ -UserDao.prototype.getRelations = function() { - return this.geoPackage.getExtendedRelationDao().getBaseTableRelations(this.table_name); -} - -/** - * Gets the rows in this table by id - * @param {Number[]} ids ids to query for - * @return {Object[]} - */ -UserDao.prototype.getRows = function(ids) { - var rows = []; - for (var i = 0; i < ids.length; i++) { - var row = this.queryForId(ids[i]); - if (row) { - rows.push(row); - } - } - return rows; -} - -/** - * Get the approximate zoom level of where the bounding box of the user data fits into the world - * - * @return zoom level - */ -UserDao.prototype.getZoomLevel = function () { - return 0; - // if(self.projection == nil){ - // [NSException raise:@"No Projection" format:@"No projection was set which is required to determine the zoom level"]; - // } - // GPKGBoundingBox * boundingBox = [self getBoundingBox]; - // if([self.projection.epsg intValue] == PROJ_EPSG_WORLD_GEODETIC_SYSTEM){ - // boundingBox = [GPKGTileBoundingBoxUtils boundWgs84BoundingBoxWithWebMercatorLimits:boundingBox]; - // } - // GPKGProjectionTransform * webMercatorTransform = [[GPKGProjectionTransform alloc] initWithFromProjection:self.projection andToEpsg:PROJ_EPSG_WEB_MERCATOR]; - // GPKGBoundingBox * webMercatorBoundingBox = [webMercatorTransform transformWithBoundingBox:boundingBox]; - // int zoomLevel = [GPKGTileBoundingBoxUtils getZoomLevelWithWebMercatorBoundingBox:webMercatorBoundingBox]; - // return zoomLevel; -}; - -/** - * Get count of all rows in this table - * @return {Number} - */ -UserDao.prototype.getCount = function () { - return this.connection.count(this.table_name); -}; - -module.exports = UserDao; - -},{"../dao/dao":11,"../extension/relatedTables/mediaTable":35,"../extension/relatedTables/relationType":36,"../extension/relatedTables/simpleAttributesTable":39,"./userRow":107,"./userTableReader":109,"util":343}],107:[function(require,module,exports){ -(function (Buffer){ -/** - * UserRow module. - * @module user/userRow - */ - -var DataTypes = require('../db/dataTypes'); - -/** - * User Row containing the values from a single result row - * @class UserRow - * @param {UserTable} table user table - * @param {module:db/dataTypes[]} columnTypes column types - * @param {Array} values values - */ -var UserRow = function(table, columnTypes, values) { - /** - * User table - * @type {UserTable} - */ - this.table = table; - /** - * Column types of this row, based upon the data values - * @type {Object} - */ - this.columnTypes = columnTypes; - /** - * Array of row values - * @type {Object} - */ - this.values = values; - - if (!this.columnTypes) { - var columnCount = this.table.columnCount(); - this.columnTypes = {}; - this.values = {}; - for (var i = 0; i < columnCount; i++) { - this.columnTypes[this.table.columnNames[i]] = this.table.columns[i].dataType; - this.values[this.table.columnNames[i]] = this.table.columns[i].defaultValue; - } - } - -} - -module.exports = UserRow; - -/** - * Get the column count - * @return {number} column count - */ -UserRow.prototype.columnCount = function () { - return this.table.columnCount(); -}; - -/** - * Get the column names - * @return {Array} column names - */ -UserRow.prototype.getColumnNames = function () { - return this.table.columnNames; -}; - -/** - * Get the column name at the index - * @param {Number} index index - * @return {string} column name - */ -UserRow.prototype.getColumnNameWithIndex = function (index) { - return this.table.getColumnNameWithIndex(index); -}; - -/** - * Get the column index of the column name - * @param {string} columnName column name - * @return {Number} column index - */ -UserRow.prototype.getColumnIndexWithColumnName = function (columnName) { - return this.table.getColumnIndex(columnName); -}; - -/** - * Get the value at the index - * @param {Number} index index - * @return {object} value - */ -UserRow.prototype.getValueWithIndex = function (index) { - var value = this.values[this.getColumnNameWithIndex(index)]; - if (value !== undefined) { - value = this.toObjectValue(index, value); - } - return value; -}; - -/** - * Get the value of the column name - * @param {string} columnName column name - * @return {Object} value - */ -UserRow.prototype.getValueWithColumnName = function (columnName) { - var value = this.values[columnName]; - var dataType = this.getRowColumnTypeWithColumnName(columnName); - if (value === undefined || value === null) return value; - - if (dataType === DataTypes.GPKGDataType.BOOLEAN) { - return value === 1 ? true : false; - } else if (dataType === DataTypes.GPKGDataType.BLOB) { - return Buffer.from(value); - } - return value; -}; - -UserRow.prototype.toObjectValue = function (index, value) { - var objectValue = value; - var column = this.getColumnWithIndex(index); - if (column.dataType === DataTypes.GPKGDataType.BOOLEAN && value) { - return value === 1 ? true : false; - } - return objectValue; -}; - -UserRow.prototype.toDatabaseValue = function(columnName) { - var column = this.getColumnWithColumnName(columnName); - var value = this.getValueWithColumnName(columnName); - if (column.dataType === DataTypes.GPKGDataType.BOOLEAN) { - return value === true ? 1 : 0; - } - - return value; -} - -/** - * Get the row column type at the index - * @param {Number} index index - * @return {Number} row column type - */ -UserRow.prototype.getRowColumnTypeWithIndex = function (index) { - return this.columnTypes[this.getColumnNameWithIndex(index)]; -}; - -/** - * Get the row column type of the column name - * @param {string} columnName column name - * @return {Number} row column type - */ -UserRow.prototype.getRowColumnTypeWithColumnName = function (columnName) { - return this.columnTypes[columnName]; -}; - -/** - * Get the column at the index - * @param {Number} index index - * @return {UserColumn} column - */ -UserRow.prototype.getColumnWithIndex = function (index) { - return this.table.getColumnWithIndex(index); -}; - -/** - * Get the column of the column name - * @param {string} columnName column name - * @return {UserColumn} column - */ -UserRow.prototype.getColumnWithColumnName = function (columnName) { - return this.table.getColumnWithColumnName(columnName); -}; - -/** - * Get the id value, which is the value of the primary key - * @return {Number} id value - */ -UserRow.prototype.getId = function () { - if (this.getPkColumn()) { - return this.getValueWithColumnName(this.getPkColumn().name); - } -}; - -/** - * Get the primary key column Index - * @return {Number} pk index - */ -UserRow.prototype.getPkColumnIndex = function () { - return this.table.pkIndex; -}; - -/** - * Get the primary key column - * @return {UserColumn} pk column - */ -UserRow.prototype.getPkColumn = function () { - return this.table.getPkColumn(); -}; - -/** - * Set the value at the index - * @param {Number} index index - * @param {object} value value - */ -UserRow.prototype.setValueWithIndex = function (index, value) { - if (index === this.table.pkIndex) { - throw new Error('Cannot update the primary key of the row. Table Name: ' + this.table.tableName + ', Index: ' + index + ', Name: ' + this.table.getPkColumn().name); - } - this.setValueWithColumnName(this.getColumnNameWithIndex(index), value); -}; - -/** - * Set the value at the index without validation - * @param {Number} index index - * @param {Object} value value - */ -UserRow.prototype.setValueNoValidationWithIndex = function (index, value) { - this.values[this.getColumnNameWithIndex(index)] = value; -}; - -/** - * Set the value of the column name - * @param {string} columnName column name - * @param {Object} value value - */ -UserRow.prototype.setValueWithColumnName = function (columnName, value) { - var dataType = this.getRowColumnTypeWithColumnName(columnName); - if (dataType === DataTypes.GPKGDataType.BOOLEAN) { - value === true ? this.values[columnName] = 1 : this.values[columnName] = 0; - } else if (dataType === DataTypes.GPKGDataType.DATE) { - this.values[columnName] = value.toISOString().slice(0,10); - } else if (dataType === DataTypes.GPKGDataType.DATETIME) { - this.values[columnName] = value.toISOString(); - } else { - this.values[columnName] = value; - } -}; - -UserRow.prototype.hasIdColumn = function() { - return this.table.pkIndex !== undefined; -} - -UserRow.prototype.hasId = function() { - var hasId = false; - if (this.hasIdColumn()) { - var objectValue = this.getValueWithIndex(this.table.pkIndex); - hasId = objectValue !== null && objectValue !== undefined && typeof objectValue === 'number'; - } - return hasId; -} - -/** - * Set the primary key id value - * @param {Number} id id - */ -UserRow.prototype.setId = function (id) { - this.values[this.table.getPkColumn().name] = id; -}; - -/** - * Clears the id so the row can be used as part of an insert or create - */ -UserRow.prototype.resetId = function () { - this.values[this.table.getPkColumn().name] = undefined; -}; - -/** - * Validate the value and its actual value types against eh column data type class - * @param {UserColumn} column column - * @param {Object} value value - * @param {Array} valueTypes value types - */ -UserRow.prototype.validateValueWithColumn = function (column, value, valueTypes) { - // TODO implement validation -}; - -}).call(this,require("buffer").Buffer) -},{"../db/dataTypes":14,"buffer":182}],108:[function(require,module,exports){ -/** - * @module user/userTable - */ - -/** - * `UserTable` models optional [user data tables](https://www.geopackage.org/spec121/index.html#_options) - * in a [GeoPackage]{@link module:geoPackage~GeoPackage}. - * - * @class - * @param {string} tableName table name - * @param {module:user/userColumn~UserColumn[]} columns user columns - */ -var UserTable = function(tableName, columns) { - /** - * The name of the table - * @type {string} - */ - this.table_name = tableName; - - // Sort the columns by index - columns.sort(function(a, b) { - return a.index - b.index; - }); - - for (var i = 0; i < columns.length; i++) { - var column = columns[i]; - if (column.index != i) { - throw new Error('Column has wrong index of ' + column.index + ', found at index: ' + i + ', Table Name: ' + this.table_name); - } - } - - var pk = undefined; - var tempColumnNames = new Array(); - var tempNameToIndex = {}; - - for (var i = 0; i < columns.length; i++) { - var column = columns[i]; - var index = column.index; - if (column.primaryKey) { - if (pk !== undefined) { - throw new Error('More than one primary key column was found for table \'' + this.table_name + '\'. Index ' + pk + ' and ' + index); - } - pk = index; - } - tempColumnNames.push(column.name); - tempNameToIndex[column.name] = index; - } - - /** - * Array of columns - * @type {module:user/userColumn~UserColumn[]} - */ - this.columns = columns; - - /** - * Array of column names - * @type {string[]} - */ - this.columnNames = tempColumnNames; - - /** - * Mapping between column names and their index - * @type {Object} - */ - this.nameToIndex = tempNameToIndex; - this.uniqueConstraints = []; - - /** - * Primary key column Index - * @type {Number} - */ - this.pkIndex = pk; -} - -/** - * Check for duplicate column names - * @param {Number} index index - * @param {Number} previousIndex previous index - * @param {string} column column - * @throws Throws an error if previous index is not undefined - */ -UserTable.prototype.duplicateCheck = function (index, previousIndex, column) { - if(previousIndex !== undefined) { - throw new Error('More than one ' + column + ' column was found for table \'' + this.table_name + '\'. Index ' + previousIndex + ' and ' + index); - } -}; - -/** - * Check for the expected data type - * @param {module:db/dataTypes~GPKGDataType} expected expected data type - * @param {module:user/userColumn~UserColumn} column column - * @throws Will throw an error if the actual column type does not match the expected column type - */ -UserTable.prototype.typeCheck = function (expected, column) { - var actual = column.dataType; - if (!actual || actual !== expected) { - throw new Error('Unexpected ' + column.name + ' column data type was found for table \'' + this.table_name + '\', expected: ' + DataTypes.name(expected) + ', actual: ' + column.dataType); - } -}; - -/** - * Check for missing columns - * @param {Number} index index - * @param {string} column column - * @throws Will throw an error if no column is found - */ -UserTable.prototype.missingCheck = function (index, column) { - if (index === undefined || index === null) { - throw new Error('No ' + column + ' column was found for table \'' + this.table_name +'\''); - } -}; - -/** - * Get the column index of the column name - * @param {string} columnName column name - * @return {Number} the column index - * @throws Will throw an error if the column is not found in the table - */ -UserTable.prototype.getColumnIndex = function (columnName) { - var index = this.nameToIndex[columnName]; - if (index === undefined || index === null) { - throw new Error('Column does not exist in table \'' + this.table_name + '\', column: ' + columnName); - } - return index; -}; - -/** - * Check if the table has the column - * @param {string} columnName name of the column - * @return {Boolean} true if the column exists in the table - */ -UserTable.prototype.hasColumn = function(columnName) { - try { - this.getColumnIndex(columnName); - return true; - } catch (e) { - return false; - } - return false; -} - -/** - * Get the column name from the index - * @param {Number} index index - * @return {string} the column name - */ -UserTable.prototype.getColumnNameWithIndex = function (index) { - return this.columnNames[index]; -}; - -/** - * Get the column from the index - * @param {Number} index index - * @return {module:user/userColumn~UserColumn} column at the index - */ -UserTable.prototype.getColumnWithIndex = function (index) { - return this.columns[index]; -}; - -/** - * Get column with the column name - * @param {string} columnName column name - * @return {module:user/userColumn~UserColumn} column at the index - */ -UserTable.prototype.getColumnWithColumnName = function (columnName) { - return this.getColumnWithIndex(this.getColumnIndex(columnName)); -}; - -/** - * Get the column count - * @return {Number} the count of the columns - */ -UserTable.prototype.columnCount = function () { - return this.columns.length; -}; - -/** - * Get the primary key column - * @return {module:user/userColumn~UserColumn} the primary key column - */ -UserTable.prototype.getPkColumn = function () { - return this.columns[this.pkIndex]; -}; - -/** - * Get the primary key id column - * @return {module:user/userColumn~UserColumn} - */ -UserTable.prototype.getIdColumn = function() { - return this.getPkColumn(); -} - -UserTable.prototype.addUniqueConstraint = function (uniqueConstraint) { - this.uniqueConstraints.push(uniqueConstraint); -}; - -UserTable.FEATURE_TABLE = 'FEATURE'; -UserTable.TILE_TABLE = 'TILE'; - -module.exports = UserTable; - -},{}],109:[function(require,module,exports){ -/** - * userTableReader module. - * @module user/userTableReader - */ - -var UserColumn = require('./userColumn') - , UserTable = require('./userTable') - , DataTypes = require('../db/dataTypes'); - -/** - * @class - * @param {string} tableName name of the table - * @param {string[]} requiredColumns array of required column names - */ -var UserTableReader = function(tableName, requiredColumns) { - this.table_name = tableName; - this.requiredColumns = requiredColumns; -} - -var GPKG_UTR_CID = "cid"; -var GPKG_UTR_NAME = "name"; -var GPKG_UTR_TYPE = "type"; -var GPKG_UTR_NOT_NULL = "notnull"; -var GPKG_UTR_PK = "pk"; -var GPKG_UTR_DFLT_VALUE = "dflt_value"; - -/** - * Read the table - * @param {object} db db connection - * @return {module:user/userTable~UserTable} - */ -UserTableReader.prototype.readTable = function (db) { - var columnList = []; - var results = db.all('PRAGMA table_info(\''+this.table_name+'\')'); - for (var i =0; i < results.length; i++) { - var result = results[i]; - var index = result[GPKG_UTR_CID]; - var name = result[GPKG_UTR_NAME]; - var type = result[GPKG_UTR_TYPE]; - var notNull = result[GPKG_UTR_NOT_NULL] === 1; - var primarykey = result[GPKG_UTR_PK] === 1; - var max = undefined; - if (type && type.lastIndexOf(')') === type.length-1) { - var maxStart = type.indexOf('('); - if (maxStart > -1) { - var maxString = type.substring(maxStart + 1, type.length - 1); - if (maxString !== '') { - max = parseInt(maxString); - type = type.substring(0, maxStart); - } - } - } - var defaultValue = undefined; - if (result[GPKG_UTR_DFLT_VALUE]) { - defaultValue = result[GPKG_UTR_DFLT_VALUE].replace(/\\'/g, ''); - } - var column = this.createColumnWithResults(result, index, name, type, max, notNull, defaultValue, primarykey); - - columnList.push(column); - } - - if (columnList.length === 0) { - throw new Error('Table does not exist: ' + this.table_name); - } - return this.createTable(this.table_name, columnList, this.requiredColumns); -}; - -/** - * Creates a user column - * @param {Object} result - * @param {Number} index column index - * @param {string} name column name - * @param {module:db/dataTypes~GPKGDataType} type data type - * @param {Number} max max value - * @param {Boolean} notNull not null - * @param {Object} defaultValue default value or nil - * @param {Boolean} primaryKey primary key - * @return {module:user/custom~UserCustomColumn} - */ -UserTableReader.prototype.createColumnWithResults = function(result, index, name, type, max, notNull, defaultValue, primaryKey) { - - var dataType = DataTypes.fromName(type); - return new UserColumn(index, name, dataType, max, notNull, defaultValue, primaryKey); -} - -/** - * Create the table - * @param {string} tableName table name - * @param {module:dao/columnValues~ColumnValues[]} columns columns - * @return {module:user/userTable~UserTable} the user table - */ -UserTableReader.prototype.createTable = function (tableName, columns) { - return new UserTable(tableName, columns); -}; - -module.exports = UserTableReader; - -},{"../db/dataTypes":14,"./userColumn":105,"./userTable":108}],110:[function(require,module,exports){ -/** - * GeoPackageValidate module. - * @module validate/geoPackageValidate - * - */ - -var path = require('path') - , SpatialReferenceSystem = require('../core/srs').SpatialReferenceSystem - , Contents = require('../core/contents').Contents - , GeoPackageConstants = require('../geoPackageConstants'); - -/** - * Check the file extension to see if it is a GeoPackage - * @param {string} filePath Absolute path to the GeoPackage to create - * @return {boolean} true if GeoPackage extension - */ -exports.hasGeoPackageExtension = function(filePath) { - var extension = path.extname(filePath); - return extension && extension !== '' - && (extension.toLowerCase() === '.'+GeoPackageConstants.GEOPACKAGE_EXTENSION.toLowerCase() - || extension.toLowerCase() === '.'+GeoPackageConstants.GEOPACKAGE_EXTENDED_EXTENSION.toLowerCase()); -} - -/** - * Validate the extension file as a GeoPackage - * @param {string} filePath Absolute path to the GeoPackage to create - * @return {Error} error if the extension is not valid - */ -exports.validateGeoPackageExtension = function(filePath) { - if (!exports.hasGeoPackageExtension(filePath)) { - return new Error("GeoPackage database file '" + filePath - + "' does not have a valid extension of '" - + GeoPackageConstants.GEOPACKAGE_EXTENSION + "' or '" - + GeoPackageConstants.GEOPACKAGE_EXTENDED_EXTENSION + "'"); - } -} - -/** - * Check the GeoPackage for the minimum required tables - * @param {Object} geoPackage GeoPackage to check - * @param {module:validate/geoPackageValidate~validationCallback} callback - The validation callback - */ -exports.hasMinimumTables = function(geoPackage) { - var srsExists = geoPackage.getSpatialReferenceSystemDao().isTableExists(); - var contentsExists = geoPackage.getContentsDao().isTableExists(); - return (srsExists && contentsExists); -} - -/** - * Validation callback is passed an error if the validation failed. - * @callback module:validate/geoPackageValidate~validationCallback - * @param {Error} null if no error, otherwise describes the error - */ - -},{"../core/contents":8,"../core/srs":9,"../geoPackageConstants":71,"path":276}],111:[function(require,module,exports){ -/** - * WKB module. - * @module wkb - */ - -var wkx = require('wkx'); - -var wktToEnum = {}; -wktToEnum[wkx.Types.wkt.Point] = wkx.Types.wkb.Point; -wktToEnum[wkx.Types.wkt.LineString] = wkx.Types.wkb.LineString; -wktToEnum[wkx.Types.wkt.Polygon] = wkx.Types.wkb.Polygon; -wktToEnum[wkx.Types.wkt.MultiPoint] = wkx.Types.wkb.MultiPoint; -wktToEnum[wkx.Types.wkt.MultiLineString] = wkx.Types.wkb.MultiLineString; -wktToEnum[wkx.Types.wkt.MultiPolygon] = wkx.Types.wkb.MultiPolygon; -wktToEnum[wkx.Types.wkt.GeometryCollection] = wkx.Types.wkb.GeometryCollection; - -/** - * number from name - * @param {string} name name - * @return {Number} number corresponding to the wkb name - */ -module.exports.fromName = function(name) { - name = name.toUpperCase(); - if (name === 'GEOMETRY') { - return wkx.Types.wkb.GeometryCollection; - } - return wktToEnum[name]; -} - -},{"wkx":360}],112:[function(require,module,exports){ -'use strict'; - -module.exports = Point; - -/** - * A standalone point geometry with useful accessor, comparison, and - * modification methods. - * - * @class Point - * @param {Number} x the x-coordinate. this could be longitude or screen - * pixels, or any other sort of unit. - * @param {Number} y the y-coordinate. this could be latitude or screen - * pixels, or any other sort of unit. - * @example - * var point = new Point(-77, 38); - */ -function Point(x, y) { - this.x = x; - this.y = y; -} - -Point.prototype = { - - /** - * Clone this point, returning a new point that can be modified - * without affecting the old one. - * @return {Point} the clone - */ - clone: function() { return new Point(this.x, this.y); }, - - /** - * Add this point's x & y coordinates to another point, - * yielding a new point. - * @param {Point} p the other point - * @return {Point} output point - */ - add: function(p) { return this.clone()._add(p); }, - - /** - * Subtract this point's x & y coordinates to from point, - * yielding a new point. - * @param {Point} p the other point - * @return {Point} output point - */ - sub: function(p) { return this.clone()._sub(p); }, - - /** - * Multiply this point's x & y coordinates by point, - * yielding a new point. - * @param {Point} p the other point - * @return {Point} output point - */ - multByPoint: function(p) { return this.clone()._multByPoint(p); }, - - /** - * Divide this point's x & y coordinates by point, - * yielding a new point. - * @param {Point} p the other point - * @return {Point} output point - */ - divByPoint: function(p) { return this.clone()._divByPoint(p); }, - - /** - * Multiply this point's x & y coordinates by a factor, - * yielding a new point. - * @param {Point} k factor - * @return {Point} output point - */ - mult: function(k) { return this.clone()._mult(k); }, - - /** - * Divide this point's x & y coordinates by a factor, - * yielding a new point. - * @param {Point} k factor - * @return {Point} output point - */ - div: function(k) { return this.clone()._div(k); }, - - /** - * Rotate this point around the 0, 0 origin by an angle a, - * given in radians - * @param {Number} a angle to rotate around, in radians - * @return {Point} output point - */ - rotate: function(a) { return this.clone()._rotate(a); }, - - /** - * Rotate this point around p point by an angle a, - * given in radians - * @param {Number} a angle to rotate around, in radians - * @param {Point} p Point to rotate around - * @return {Point} output point - */ - rotateAround: function(a,p) { return this.clone()._rotateAround(a,p); }, - - /** - * Multiply this point by a 4x1 transformation matrix - * @param {Array} m transformation matrix - * @return {Point} output point - */ - matMult: function(m) { return this.clone()._matMult(m); }, - - /** - * Calculate this point but as a unit vector from 0, 0, meaning - * that the distance from the resulting point to the 0, 0 - * coordinate will be equal to 1 and the angle from the resulting - * point to the 0, 0 coordinate will be the same as before. - * @return {Point} unit vector point - */ - unit: function() { return this.clone()._unit(); }, - - /** - * Compute a perpendicular point, where the new y coordinate - * is the old x coordinate and the new x coordinate is the old y - * coordinate multiplied by -1 - * @return {Point} perpendicular point - */ - perp: function() { return this.clone()._perp(); }, - - /** - * Return a version of this point with the x & y coordinates - * rounded to integers. - * @return {Point} rounded point - */ - round: function() { return this.clone()._round(); }, - - /** - * Return the magitude of this point: this is the Euclidean - * distance from the 0, 0 coordinate to this point's x and y - * coordinates. - * @return {Number} magnitude - */ - mag: function() { - return Math.sqrt(this.x * this.x + this.y * this.y); - }, - - /** - * Judge whether this point is equal to another point, returning - * true or false. - * @param {Point} other the other point - * @return {boolean} whether the points are equal - */ - equals: function(other) { - return this.x === other.x && - this.y === other.y; - }, - - /** - * Calculate the distance from this point to another point - * @param {Point} p the other point - * @return {Number} distance - */ - dist: function(p) { - return Math.sqrt(this.distSqr(p)); - }, - - /** - * Calculate the distance from this point to another point, - * without the square root step. Useful if you're comparing - * relative distances. - * @param {Point} p the other point - * @return {Number} distance - */ - distSqr: function(p) { - var dx = p.x - this.x, - dy = p.y - this.y; - return dx * dx + dy * dy; - }, - - /** - * Get the angle from the 0, 0 coordinate to this point, in radians - * coordinates. - * @return {Number} angle - */ - angle: function() { - return Math.atan2(this.y, this.x); - }, - - /** - * Get the angle from this point to another point, in radians - * @param {Point} b the other point - * @return {Number} angle - */ - angleTo: function(b) { - return Math.atan2(this.y - b.y, this.x - b.x); - }, - - /** - * Get the angle between this point and another point, in radians - * @param {Point} b the other point - * @return {Number} angle - */ - angleWith: function(b) { - return this.angleWithSep(b.x, b.y); - }, - - /* - * Find the angle of the two vectors, solving the formula for - * the cross product a x b = |a||b|sin(θ) for θ. - * @param {Number} x the x-coordinate - * @param {Number} y the y-coordinate - * @return {Number} the angle in radians - */ - angleWithSep: function(x, y) { - return Math.atan2( - this.x * y - this.y * x, - this.x * x + this.y * y); - }, - - _matMult: function(m) { - var x = m[0] * this.x + m[1] * this.y, - y = m[2] * this.x + m[3] * this.y; - this.x = x; - this.y = y; - return this; - }, - - _add: function(p) { - this.x += p.x; - this.y += p.y; - return this; - }, - - _sub: function(p) { - this.x -= p.x; - this.y -= p.y; - return this; - }, - - _mult: function(k) { - this.x *= k; - this.y *= k; - return this; - }, - - _div: function(k) { - this.x /= k; - this.y /= k; - return this; - }, - - _multByPoint: function(p) { - this.x *= p.x; - this.y *= p.y; - return this; - }, - - _divByPoint: function(p) { - this.x /= p.x; - this.y /= p.y; - return this; - }, - - _unit: function() { - this._div(this.mag()); - return this; - }, - - _perp: function() { - var y = this.y; - this.y = this.x; - this.x = -y; - return this; - }, - - _rotate: function(angle) { - var cos = Math.cos(angle), - sin = Math.sin(angle), - x = cos * this.x - sin * this.y, - y = sin * this.x + cos * this.y; - this.x = x; - this.y = y; - return this; - }, - - _rotateAround: function(angle, p) { - var cos = Math.cos(angle), - sin = Math.sin(angle), - x = p.x + cos * (this.x - p.x) - sin * (this.y - p.y), - y = p.y + sin * (this.x - p.x) + cos * (this.y - p.y); - this.x = x; - this.y = y; - return this; - }, - - _round: function() { - this.x = Math.round(this.x); - this.y = Math.round(this.y); - return this; - } -}; - -/** - * Construct a point from an array if necessary, otherwise if the input - * is already a Point, or an unknown type, return it unchanged - * @param {Array|Point|*} a any kind of input value - * @return {Point} constructed point, or passed-through value. - * @example - * // this - * var point = Point.convert([0, 1]); - * // is equivalent to - * var point = new Point(0, 1); - */ -Point.convert = function (a) { - if (a instanceof Point) { - return a; - } - if (Array.isArray(a)) { - return new Point(a[0], a[1]); - } - return a; -}; - -},{}],113:[function(require,module,exports){ -module.exports.VectorTile = require('./lib/vectortile.js'); -module.exports.VectorTileFeature = require('./lib/vectortilefeature.js'); -module.exports.VectorTileLayer = require('./lib/vectortilelayer.js'); - -},{"./lib/vectortile.js":114,"./lib/vectortilefeature.js":115,"./lib/vectortilelayer.js":116}],114:[function(require,module,exports){ -'use strict'; - -var VectorTileLayer = require('./vectortilelayer'); - -module.exports = VectorTile; - -function VectorTile(pbf, end) { - this.layers = pbf.readFields(readTile, {}, end); -} - -function readTile(tag, layers, pbf) { - if (tag === 3) { - var layer = new VectorTileLayer(pbf, pbf.readVarint() + pbf.pos); - if (layer.length) layers[layer.name] = layer; - } -} - - -},{"./vectortilelayer":116}],115:[function(require,module,exports){ -'use strict'; - -var Point = require('@mapbox/point-geometry'); - -module.exports = VectorTileFeature; - -function VectorTileFeature(pbf, end, extent, keys, values) { - // Public - this.properties = {}; - this.extent = extent; - this.type = 0; - - // Private - this._pbf = pbf; - this._geometry = -1; - this._keys = keys; - this._values = values; - - pbf.readFields(readFeature, this, end); -} - -function readFeature(tag, feature, pbf) { - if (tag == 1) feature.id = pbf.readVarint(); - else if (tag == 2) readTag(pbf, feature); - else if (tag == 3) feature.type = pbf.readVarint(); - else if (tag == 4) feature._geometry = pbf.pos; -} - -function readTag(pbf, feature) { - var end = pbf.readVarint() + pbf.pos; - - while (pbf.pos < end) { - var key = feature._keys[pbf.readVarint()], - value = feature._values[pbf.readVarint()]; - feature.properties[key] = value; - } -} - -VectorTileFeature.types = ['Unknown', 'Point', 'LineString', 'Polygon']; - -VectorTileFeature.prototype.loadGeometry = function() { - var pbf = this._pbf; - pbf.pos = this._geometry; - - var end = pbf.readVarint() + pbf.pos, - cmd = 1, - length = 0, - x = 0, - y = 0, - lines = [], - line; - - while (pbf.pos < end) { - if (length <= 0) { - var cmdLen = pbf.readVarint(); - cmd = cmdLen & 0x7; - length = cmdLen >> 3; - } - - length--; - - if (cmd === 1 || cmd === 2) { - x += pbf.readSVarint(); - y += pbf.readSVarint(); - - if (cmd === 1) { // moveTo - if (line) lines.push(line); - line = []; - } - - line.push(new Point(x, y)); - - } else if (cmd === 7) { - - // Workaround for https://github.com/mapbox/mapnik-vector-tile/issues/90 - if (line) { - line.push(line[0].clone()); // closePolygon - } - - } else { - throw new Error('unknown command ' + cmd); - } - } - - if (line) lines.push(line); - - return lines; -}; - -VectorTileFeature.prototype.bbox = function() { - var pbf = this._pbf; - pbf.pos = this._geometry; - - var end = pbf.readVarint() + pbf.pos, - cmd = 1, - length = 0, - x = 0, - y = 0, - x1 = Infinity, - x2 = -Infinity, - y1 = Infinity, - y2 = -Infinity; - - while (pbf.pos < end) { - if (length <= 0) { - var cmdLen = pbf.readVarint(); - cmd = cmdLen & 0x7; - length = cmdLen >> 3; - } - - length--; - - if (cmd === 1 || cmd === 2) { - x += pbf.readSVarint(); - y += pbf.readSVarint(); - if (x < x1) x1 = x; - if (x > x2) x2 = x; - if (y < y1) y1 = y; - if (y > y2) y2 = y; - - } else if (cmd !== 7) { - throw new Error('unknown command ' + cmd); - } - } - - return [x1, y1, x2, y2]; -}; - -VectorTileFeature.prototype.toGeoJSON = function(x, y, z) { - var size = this.extent * Math.pow(2, z), - x0 = this.extent * x, - y0 = this.extent * y, - coords = this.loadGeometry(), - type = VectorTileFeature.types[this.type], - i, j; - - function project(line) { - for (var j = 0; j < line.length; j++) { - var p = line[j], y2 = 180 - (p.y + y0) * 360 / size; - line[j] = [ - (p.x + x0) * 360 / size - 180, - 360 / Math.PI * Math.atan(Math.exp(y2 * Math.PI / 180)) - 90 - ]; - } - } - - switch (this.type) { - case 1: - var points = []; - for (i = 0; i < coords.length; i++) { - points[i] = coords[i][0]; - } - coords = points; - project(coords); - break; - - case 2: - for (i = 0; i < coords.length; i++) { - project(coords[i]); - } - break; - - case 3: - coords = classifyRings(coords); - for (i = 0; i < coords.length; i++) { - for (j = 0; j < coords[i].length; j++) { - project(coords[i][j]); - } - } - break; - } - - if (coords.length === 1) { - coords = coords[0]; - } else { - type = 'Multi' + type; - } - - var result = { - type: "Feature", - geometry: { - type: type, - coordinates: coords - }, - properties: this.properties - }; - - if ('id' in this) { - result.id = this.id; - } - - return result; -}; - -// classifies an array of rings into polygons with outer rings and holes - -function classifyRings(rings) { - var len = rings.length; - - if (len <= 1) return [rings]; - - var polygons = [], - polygon, - ccw; - - for (var i = 0; i < len; i++) { - var area = signedArea(rings[i]); - if (area === 0) continue; - - if (ccw === undefined) ccw = area < 0; - - if (ccw === area < 0) { - if (polygon) polygons.push(polygon); - polygon = [rings[i]]; - - } else { - polygon.push(rings[i]); - } - } - if (polygon) polygons.push(polygon); - - return polygons; -} - -function signedArea(ring) { - var sum = 0; - for (var i = 0, len = ring.length, j = len - 1, p1, p2; i < len; j = i++) { - p1 = ring[i]; - p2 = ring[j]; - sum += (p2.x - p1.x) * (p1.y + p2.y); - } - return sum; -} - -},{"@mapbox/point-geometry":112}],116:[function(require,module,exports){ -'use strict'; - -var VectorTileFeature = require('./vectortilefeature.js'); - -module.exports = VectorTileLayer; - -function VectorTileLayer(pbf, end) { - // Public - this.version = 1; - this.name = null; - this.extent = 4096; - this.length = 0; - - // Private - this._pbf = pbf; - this._keys = []; - this._values = []; - this._features = []; - - pbf.readFields(readLayer, this, end); - - this.length = this._features.length; -} - -function readLayer(tag, layer, pbf) { - if (tag === 15) layer.version = pbf.readVarint(); - else if (tag === 1) layer.name = pbf.readString(); - else if (tag === 5) layer.extent = pbf.readVarint(); - else if (tag === 2) layer._features.push(pbf.pos); - else if (tag === 3) layer._keys.push(pbf.readString()); - else if (tag === 4) layer._values.push(readValueMessage(pbf)); -} - -function readValueMessage(pbf) { - var value = null, - end = pbf.readVarint() + pbf.pos; - - while (pbf.pos < end) { - var tag = pbf.readVarint() >> 3; - - value = tag === 1 ? pbf.readString() : - tag === 2 ? pbf.readFloat() : - tag === 3 ? pbf.readDouble() : - tag === 4 ? pbf.readVarint64() : - tag === 5 ? pbf.readVarint() : - tag === 6 ? pbf.readSVarint() : - tag === 7 ? pbf.readBoolean() : null; - } - - return value; -} - -// return feature `i` from this layer as a `VectorTileFeature` -VectorTileLayer.prototype.feature = function(i) { - if (i < 0 || i >= this._features.length) throw new Error('feature index out of bounds'); - - this._pbf.pos = this._features[i]; - - var end = this._pbf.readVarint() + this._pbf.pos; - return new VectorTileFeature(this._pbf, end, this.extent, this._keys, this._values); -}; - -},{"./vectortilefeature.js":115}],117:[function(require,module,exports){ -var each = require('@turf/meta').coordEach; - -/** - * Takes a set of features, calculates the bbox of all input features, and returns a bounding box. - * - * @name bbox - * @param {(Feature|FeatureCollection)} geojson input features - * @returns {Array} bbox extent in [minX, minY, maxX, maxY] order - * @addToMap features, bboxPolygon - * @example - * var pt1 = turf.point([114.175329, 22.2524]) - * var pt2 = turf.point([114.170007, 22.267969]) - * var pt3 = turf.point([114.200649, 22.274641]) - * var pt4 = turf.point([114.200649, 22.274641]) - * var pt5 = turf.point([114.186744, 22.265745]) - * var features = turf.featureCollection([pt1, pt2, pt3, pt4, pt5]) - * - * var bbox = turf.bbox(features); - * - * var bboxPolygon = turf.bboxPolygon(bbox); - * - * //=bbox - * - * //=bboxPolygon - */ -module.exports = function (geojson) { - var bbox = [Infinity, Infinity, -Infinity, -Infinity]; - each(geojson, function (coord) { - if (bbox[0] > coord[0]) bbox[0] = coord[0]; - if (bbox[1] > coord[1]) bbox[1] = coord[1]; - if (bbox[2] < coord[0]) bbox[2] = coord[0]; - if (bbox[3] < coord[1]) bbox[3] = coord[1]; - }); - return bbox; -}; - -},{"@turf/meta":130}],118:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var invariant_1 = require("@turf/invariant"); -// http://en.wikipedia.org/wiki/Even%E2%80%93odd_rule -// modified from: https://github.com/substack/point-in-polygon/blob/master/index.js -// which was modified from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html -/** - * Takes a {@link Point} and a {@link Polygon} or {@link MultiPolygon} and determines if the point - * resides inside the polygon. The polygon can be convex or concave. The function accounts for holes. - * - * @name booleanPointInPolygon - * @param {Coord} point input point - * @param {Feature} polygon input polygon or multipolygon - * @param {Object} [options={}] Optional parameters - * @param {boolean} [options.ignoreBoundary=false] True if polygon boundary should be ignored when determining if - * the point is inside the polygon otherwise false. - * @returns {boolean} `true` if the Point is inside the Polygon; `false` if the Point is not inside the Polygon - * @example - * var pt = turf.point([-77, 44]); - * var poly = turf.polygon([[ - * [-81, 41], - * [-81, 47], - * [-72, 47], - * [-72, 41], - * [-81, 41] - * ]]); - * - * turf.booleanPointInPolygon(pt, poly); - * //= true - */ -function booleanPointInPolygon(point, polygon, options) { - if (options === void 0) { options = {}; } - // validation - if (!point) { - throw new Error("point is required"); - } - if (!polygon) { - throw new Error("polygon is required"); - } - var pt = invariant_1.getCoord(point); - var geom = invariant_1.getGeom(polygon); - var type = geom.type; - var bbox = polygon.bbox; - var polys = geom.coordinates; - // Quick elimination if point is not inside bbox - if (bbox && inBBox(pt, bbox) === false) { - return false; - } - // normalize to multipolygon - if (type === "Polygon") { - polys = [polys]; - } - var insidePoly = false; - for (var i = 0; i < polys.length && !insidePoly; i++) { - // check if it is in the outer ring first - if (inRing(pt, polys[i][0], options.ignoreBoundary)) { - var inHole = false; - var k = 1; - // check for the point in any of the holes - while (k < polys[i].length && !inHole) { - if (inRing(pt, polys[i][k], !options.ignoreBoundary)) { - inHole = true; - } - k++; - } - if (!inHole) { - insidePoly = true; - } - } - } - return insidePoly; -} -exports.default = booleanPointInPolygon; -/** - * inRing - * - * @private - * @param {Array} pt [x,y] - * @param {Array>} ring [[x,y], [x,y],..] - * @param {boolean} ignoreBoundary ignoreBoundary - * @returns {boolean} inRing - */ -function inRing(pt, ring, ignoreBoundary) { - var isInside = false; - if (ring[0][0] === ring[ring.length - 1][0] && ring[0][1] === ring[ring.length - 1][1]) { - ring = ring.slice(0, ring.length - 1); - } - for (var i = 0, j = ring.length - 1; i < ring.length; j = i++) { - var xi = ring[i][0]; - var yi = ring[i][1]; - var xj = ring[j][0]; - var yj = ring[j][1]; - var onBoundary = (pt[1] * (xi - xj) + yi * (xj - pt[0]) + yj * (pt[0] - xi) === 0) && - ((xi - pt[0]) * (xj - pt[0]) <= 0) && ((yi - pt[1]) * (yj - pt[1]) <= 0); - if (onBoundary) { - return !ignoreBoundary; - } - var intersect = ((yi > pt[1]) !== (yj > pt[1])) && - (pt[0] < (xj - xi) * (pt[1] - yi) / (yj - yi) + xi); - if (intersect) { - isInside = !isInside; - } - } - return isInside; -} -/** - * inBBox - * - * @private - * @param {Position} pt point [x,y] - * @param {BBox} bbox BBox [west, south, east, north] - * @returns {boolean} true/false if point is inside BBox - */ -function inBBox(pt, bbox) { - return bbox[0] <= pt[0] && - bbox[1] <= pt[1] && - bbox[2] >= pt[0] && - bbox[3] >= pt[1]; -} - -},{"@turf/invariant":125}],119:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var invariant_1 = require("@turf/invariant"); -/** - * Returns true if a point is on a line. Accepts a optional parameter to ignore the - * start and end vertices of the linestring. - * - * @name booleanPointOnLine - * @param {Coord} pt GeoJSON Point - * @param {Feature} line GeoJSON LineString - * @param {Object} [options={}] Optional parameters - * @param {boolean} [options.ignoreEndVertices=false] whether to ignore the start and end vertices. - * @returns {boolean} true/false - * @example - * var pt = turf.point([0, 0]); - * var line = turf.lineString([[-1, -1],[1, 1],[1.5, 2.2]]); - * var isPointOnLine = turf.booleanPointOnLine(pt, line); - * //=true - */ -function booleanPointOnLine(pt, line, options) { - if (options === void 0) { options = {}; } - // Normalize inputs - var ptCoords = invariant_1.getCoord(pt); - var lineCoords = invariant_1.getCoords(line); - // Main - for (var i = 0; i < lineCoords.length - 1; i++) { - var ignoreBoundary = false; - if (options.ignoreEndVertices) { - if (i === 0) { - ignoreBoundary = "start"; - } - if (i === lineCoords.length - 2) { - ignoreBoundary = "end"; - } - if (i === 0 && i + 1 === lineCoords.length - 1) { - ignoreBoundary = "both"; - } - } - if (isPointOnLineSegment(lineCoords[i], lineCoords[i + 1], ptCoords, ignoreBoundary)) { - return true; - } - } - return false; -} -// See http://stackoverflow.com/a/4833823/1979085 -/** - * @private - * @param {Position} lineSegmentStart coord pair of start of line - * @param {Position} lineSegmentEnd coord pair of end of line - * @param {Position} pt coord pair of point to check - * @param {boolean|string} excludeBoundary whether the point is allowed to fall on the line ends. - * If true which end to ignore. - * @returns {boolean} true/false - */ -function isPointOnLineSegment(lineSegmentStart, lineSegmentEnd, pt, excludeBoundary) { - var x = pt[0]; - var y = pt[1]; - var x1 = lineSegmentStart[0]; - var y1 = lineSegmentStart[1]; - var x2 = lineSegmentEnd[0]; - var y2 = lineSegmentEnd[1]; - var dxc = pt[0] - x1; - var dyc = pt[1] - y1; - var dxl = x2 - x1; - var dyl = y2 - y1; - var cross = dxc * dyl - dyc * dxl; - if (cross !== 0) { - return false; - } - if (!excludeBoundary) { - if (Math.abs(dxl) >= Math.abs(dyl)) { - return dxl > 0 ? x1 <= x && x <= x2 : x2 <= x && x <= x1; - } - return dyl > 0 ? y1 <= y && y <= y2 : y2 <= y && y <= y1; - } - else if (excludeBoundary === "start") { - if (Math.abs(dxl) >= Math.abs(dyl)) { - return dxl > 0 ? x1 < x && x <= x2 : x2 <= x && x < x1; - } - return dyl > 0 ? y1 < y && y <= y2 : y2 <= y && y < y1; - } - else if (excludeBoundary === "end") { - if (Math.abs(dxl) >= Math.abs(dyl)) { - return dxl > 0 ? x1 <= x && x < x2 : x2 < x && x <= x1; - } - return dyl > 0 ? y1 <= y && y < y2 : y2 < y && y <= y1; - } - else if (excludeBoundary === "both") { - if (Math.abs(dxl) >= Math.abs(dyl)) { - return dxl > 0 ? x1 < x && x < x2 : x2 < x && x < x1; - } - return dyl > 0 ? y1 < y && y < y2 : y2 < y && y < y1; - } - return false; -} -exports.default = booleanPointOnLine; - -},{"@turf/invariant":125}],120:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var bbox_1 = require("@turf/bbox"); -var boolean_point_on_line_1 = require("@turf/boolean-point-on-line"); -var boolean_point_in_polygon_1 = require("@turf/boolean-point-in-polygon"); -var invariant_1 = require("@turf/invariant"); -/** - * Boolean-within returns true if the first geometry is completely within the second geometry. - * The interiors of both geometries must intersect and, the interior and boundary of the primary (geometry a) - * must not intersect the exterior of the secondary (geometry b). - * Boolean-within returns the exact opposite result of the `@turf/boolean-contains`. - * - * @name booleanWithin - * @param {Geometry|Feature} feature1 GeoJSON Feature or Geometry - * @param {Geometry|Feature} feature2 GeoJSON Feature or Geometry - * @returns {boolean} true/false - * @example - * var line = turf.lineString([[1, 1], [1, 2], [1, 3], [1, 4]]); - * var point = turf.point([1, 2]); - * - * turf.booleanWithin(point, line); - * //=true - */ -function booleanWithin(feature1, feature2) { - var type1 = invariant_1.getType(feature1); - var type2 = invariant_1.getType(feature2); - var geom1 = invariant_1.getGeom(feature1); - var geom2 = invariant_1.getGeom(feature2); - switch (type1) { - case 'Point': - switch (type2) { - case 'MultiPoint': - return isPointInMultiPoint(geom1, geom2); - case 'LineString': - return boolean_point_on_line_1.default(geom1, geom2, { ignoreEndVertices: true }); - case 'Polygon': - case 'MultiPolygon': - return boolean_point_in_polygon_1.default(geom1, geom2, { ignoreBoundary: true }); - default: - throw new Error('feature2 ' + type2 + ' geometry not supported'); - } - case 'MultiPoint': - switch (type2) { - case 'MultiPoint': - return isMultiPointInMultiPoint(geom1, geom2); - case 'LineString': - return isMultiPointOnLine(geom1, geom2); - case 'Polygon': - case 'MultiPolygon': - return isMultiPointInPoly(geom1, geom2); - default: - throw new Error('feature2 ' + type2 + ' geometry not supported'); - } - case 'LineString': - switch (type2) { - case 'LineString': - return isLineOnLine(geom1, geom2); - case 'Polygon': - case 'MultiPolygon': - return isLineInPoly(geom1, geom2); - default: - throw new Error('feature2 ' + type2 + ' geometry not supported'); - } - case 'Polygon': - switch (type2) { - case 'Polygon': - case 'MultiPolygon': - return isPolyInPoly(geom1, geom2); - default: - throw new Error('feature2 ' + type2 + ' geometry not supported'); - } - default: - throw new Error('feature1 ' + type1 + ' geometry not supported'); - } -} -function isPointInMultiPoint(point, multiPoint) { - var i; - var output = false; - for (i = 0; i < multiPoint.coordinates.length; i++) { - if (compareCoords(multiPoint.coordinates[i], point.coordinates)) { - output = true; - break; - } - } - return output; -} -function isMultiPointInMultiPoint(multiPoint1, multiPoint2) { - for (var i = 0; i < multiPoint1.coordinates.length; i++) { - var anyMatch = false; - for (var i2 = 0; i2 < multiPoint2.coordinates.length; i2++) { - if (compareCoords(multiPoint1.coordinates[i], multiPoint2.coordinates[i2])) { - anyMatch = true; - } - } - if (!anyMatch) { - return false; - } - } - return true; -} -function isMultiPointOnLine(multiPoint, lineString) { - var foundInsidePoint = false; - for (var i = 0; i < multiPoint.coordinates.length; i++) { - if (!boolean_point_on_line_1.default(multiPoint.coordinates[i], lineString)) { - return false; - } - if (!foundInsidePoint) { - foundInsidePoint = boolean_point_on_line_1.default(multiPoint.coordinates[i], lineString, { ignoreEndVertices: true }); - } - } - return foundInsidePoint; -} -function isMultiPointInPoly(multiPoint, polygon) { - var output = true; - var oneInside = false; - for (var i = 0; i < multiPoint.coordinates.length; i++) { - var isInside = boolean_point_in_polygon_1.default(multiPoint.coordinates[1], polygon); - if (!isInside) { - output = false; - break; - } - if (!oneInside) { - isInside = boolean_point_in_polygon_1.default(multiPoint.coordinates[1], polygon, { ignoreBoundary: true }); - } - } - return output && isInside; -} -function isLineOnLine(lineString1, lineString2) { - for (var i = 0; i < lineString1.coordinates.length; i++) { - if (!boolean_point_on_line_1.default(lineString1.coordinates[i], lineString2)) { - return false; - } - } - return true; -} -function isLineInPoly(linestring, polygon) { - var polyBbox = bbox_1.default(polygon); - var lineBbox = bbox_1.default(linestring); - if (!doBBoxOverlap(polyBbox, lineBbox)) { - return false; - } - var foundInsidePoint = false; - for (var i = 0; i < linestring.coordinates.length - 1; i++) { - if (!boolean_point_in_polygon_1.default(linestring.coordinates[i], polygon)) { - return false; - } - if (!foundInsidePoint) { - foundInsidePoint = boolean_point_in_polygon_1.default(linestring.coordinates[i], polygon, { ignoreBoundary: true }); - } - if (!foundInsidePoint) { - var midpoint = getMidpoint(linestring.coordinates[i], linestring.coordinates[i + 1]); - foundInsidePoint = boolean_point_in_polygon_1.default(midpoint, polygon, { ignoreBoundary: true }); - } - } - return foundInsidePoint; -} -/** - * Is Polygon2 in Polygon1 - * Only takes into account outer rings - * - * @private - * @param {Geometry|Feature} feature1 Polygon1 - * @param {Geometry|Feature} feature2 Polygon2 - * @returns {boolean} true/false - */ -function isPolyInPoly(feature1, feature2) { - var poly1Bbox = bbox_1.default(feature1); - var poly2Bbox = bbox_1.default(feature2); - if (!doBBoxOverlap(poly2Bbox, poly1Bbox)) { - return false; - } - for (var i = 0; i < feature1.coordinates[0].length; i++) { - if (!boolean_point_in_polygon_1.default(feature1.coordinates[0][i], feature2)) { - return false; - } - } - return true; -} -function doBBoxOverlap(bbox1, bbox2) { - if (bbox1[0] > bbox2[0]) - return false; - if (bbox1[2] < bbox2[2]) - return false; - if (bbox1[1] > bbox2[1]) - return false; - if (bbox1[3] < bbox2[3]) - return false; - return true; -} -/** - * compareCoords - * - * @private - * @param {Position} pair1 point [x,y] - * @param {Position} pair2 point [x,y] - * @returns {boolean} true/false if coord pairs match - */ -function compareCoords(pair1, pair2) { - return pair1[0] === pair2[0] && pair1[1] === pair2[1]; -} -/** - * getMidpoint - * - * @private - * @param {Position} pair1 point [x,y] - * @param {Position} pair2 point [x,y] - * @returns {Position} midpoint of pair1 and pair2 - */ -function getMidpoint(pair1, pair2) { - return [(pair1[0] + pair2[0]) / 2, (pair1[1] + pair2[1]) / 2]; -} -exports.default = booleanWithin; - -},{"@turf/bbox":121,"@turf/boolean-point-in-polygon":118,"@turf/boolean-point-on-line":119,"@turf/invariant":125}],121:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var meta_1 = require("@turf/meta"); -/** - * Takes a set of features, calculates the bbox of all input features, and returns a bounding box. - * - * @name bbox - * @param {GeoJSON} geojson any GeoJSON object - * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order - * @example - * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]); - * var bbox = turf.bbox(line); - * var bboxPolygon = turf.bboxPolygon(bbox); - * - * //addToMap - * var addToMap = [line, bboxPolygon] - */ -function bbox(geojson) { - var result = [Infinity, Infinity, -Infinity, -Infinity]; - meta_1.coordEach(geojson, function (coord) { - if (result[0] > coord[0]) { - result[0] = coord[0]; - } - if (result[1] > coord[1]) { - result[1] = coord[1]; - } - if (result[2] < coord[0]) { - result[2] = coord[0]; - } - if (result[3] < coord[1]) { - result[3] = coord[1]; - } - }); - return result; -} -exports.default = bbox; - -},{"@turf/meta":122}],122:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var helpers = require('@turf/helpers'); - -/** - * Callback for coordEach - * - * @callback coordEachCallback - * @param {Array} currentCoord The current coordinate being processed. - * @param {number} coordIndex The current index of the coordinate being processed. - * @param {number} featureIndex The current index of the Feature being processed. - * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed. - * @param {number} geometryIndex The current index of the Geometry being processed. - */ - -/** - * Iterate over coordinates in any GeoJSON object, similar to Array.forEach() - * - * @name coordEach - * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object - * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex) - * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration. - * @returns {void} - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {"foo": "bar"}), - * turf.point([36, 53], {"hello": "world"}) - * ]); - * - * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) { - * //=currentCoord - * //=coordIndex - * //=featureIndex - * //=multiFeatureIndex - * //=geometryIndex - * }); - */ -function coordEach(geojson, callback, excludeWrapCoord) { - // Handles null Geometry -- Skips this GeoJSON - if (geojson === null) return; - var j, k, l, geometry, stopG, coords, - geometryMaybeCollection, - wrapShrink = 0, - coordIndex = 0, - isGeometryCollection, - type = geojson.type, - isFeatureCollection = type === 'FeatureCollection', - isFeature = type === 'Feature', - stop = isFeatureCollection ? geojson.features.length : 1; - - // This logic may look a little weird. The reason why it is that way - // is because it's trying to be fast. GeoJSON supports multiple kinds - // of objects at its root: FeatureCollection, Features, Geometries. - // This function has the responsibility of handling all of them, and that - // means that some of the `for` loops you see below actually just don't apply - // to certain inputs. For instance, if you give this just a - // Point geometry, then both loops are short-circuited and all we do - // is gradually rename the input until it's called 'geometry'. - // - // This also aims to allocate as few resources as possible: just a - // few numbers and booleans, rather than any temporary arrays as would - // be required with the normalization approach. - for (var featureIndex = 0; featureIndex < stop; featureIndex++) { - geometryMaybeCollection = (isFeatureCollection ? geojson.features[featureIndex].geometry : - (isFeature ? geojson.geometry : geojson)); - isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false; - stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1; - - for (var geomIndex = 0; geomIndex < stopG; geomIndex++) { - var multiFeatureIndex = 0; - var geometryIndex = 0; - geometry = isGeometryCollection ? - geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection; - - // Handles null Geometry -- Skips this geometry - if (geometry === null) continue; - coords = geometry.coordinates; - var geomType = geometry.type; - - wrapShrink = (excludeWrapCoord && (geomType === 'Polygon' || geomType === 'MultiPolygon')) ? 1 : 0; - - switch (geomType) { - case null: - break; - case 'Point': - if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false; - coordIndex++; - multiFeatureIndex++; - break; - case 'LineString': - case 'MultiPoint': - for (j = 0; j < coords.length; j++) { - if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false; - coordIndex++; - if (geomType === 'MultiPoint') multiFeatureIndex++; - } - if (geomType === 'LineString') multiFeatureIndex++; - break; - case 'Polygon': - case 'MultiLineString': - for (j = 0; j < coords.length; j++) { - for (k = 0; k < coords[j].length - wrapShrink; k++) { - if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false; - coordIndex++; - } - if (geomType === 'MultiLineString') multiFeatureIndex++; - if (geomType === 'Polygon') geometryIndex++; - } - if (geomType === 'Polygon') multiFeatureIndex++; - break; - case 'MultiPolygon': - for (j = 0; j < coords.length; j++) { - geometryIndex = 0; - for (k = 0; k < coords[j].length; k++) { - for (l = 0; l < coords[j][k].length - wrapShrink; l++) { - if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false; - coordIndex++; - } - geometryIndex++; - } - multiFeatureIndex++; - } - break; - case 'GeometryCollection': - for (j = 0; j < geometry.geometries.length; j++) - if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false) return false; - break; - default: - throw new Error('Unknown Geometry Type'); - } - } - } -} - -/** - * Callback for coordReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @callback coordReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {Array} currentCoord The current coordinate being processed. - * @param {number} coordIndex The current index of the coordinate being processed. - * Starts at index 0, if an initialValue is provided, and at index 1 otherwise. - * @param {number} featureIndex The current index of the Feature being processed. - * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed. - * @param {number} geometryIndex The current index of the Geometry being processed. - */ - -/** - * Reduce coordinates in any GeoJSON object, similar to Array.reduce() - * - * @name coordReduce - * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object - * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration. - * @returns {*} The value that results from the reduction. - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {"foo": "bar"}), - * turf.point([36, 53], {"hello": "world"}) - * ]); - * - * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) { - * //=previousValue - * //=currentCoord - * //=coordIndex - * //=featureIndex - * //=multiFeatureIndex - * //=geometryIndex - * return currentCoord; - * }); - */ -function coordReduce(geojson, callback, initialValue, excludeWrapCoord) { - var previousValue = initialValue; - coordEach(geojson, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) { - if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord; - else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex); - }, excludeWrapCoord); - return previousValue; -} - -/** - * Callback for propEach - * - * @callback propEachCallback - * @param {Object} currentProperties The current Properties being processed. - * @param {number} featureIndex The current index of the Feature being processed. - */ - -/** - * Iterate over properties in any GeoJSON object, similar to Array.forEach() - * - * @name propEach - * @param {FeatureCollection|Feature} geojson any GeoJSON object - * @param {Function} callback a method that takes (currentProperties, featureIndex) - * @returns {void} - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {foo: 'bar'}), - * turf.point([36, 53], {hello: 'world'}) - * ]); - * - * turf.propEach(features, function (currentProperties, featureIndex) { - * //=currentProperties - * //=featureIndex - * }); - */ -function propEach(geojson, callback) { - var i; - switch (geojson.type) { - case 'FeatureCollection': - for (i = 0; i < geojson.features.length; i++) { - if (callback(geojson.features[i].properties, i) === false) break; - } - break; - case 'Feature': - callback(geojson.properties, 0); - break; - } -} - - -/** - * Callback for propReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @callback propReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {*} currentProperties The current Properties being processed. - * @param {number} featureIndex The current index of the Feature being processed. - */ - -/** - * Reduce properties in any GeoJSON object into a single value, - * similar to how Array.reduce works. However, in this case we lazily run - * the reduction, so an array of all properties is unnecessary. - * - * @name propReduce - * @param {FeatureCollection|Feature} geojson any GeoJSON object - * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @returns {*} The value that results from the reduction. - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {foo: 'bar'}), - * turf.point([36, 53], {hello: 'world'}) - * ]); - * - * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) { - * //=previousValue - * //=currentProperties - * //=featureIndex - * return currentProperties - * }); - */ -function propReduce(geojson, callback, initialValue) { - var previousValue = initialValue; - propEach(geojson, function (currentProperties, featureIndex) { - if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties; - else previousValue = callback(previousValue, currentProperties, featureIndex); - }); - return previousValue; -} - -/** - * Callback for featureEach - * - * @callback featureEachCallback - * @param {Feature} currentFeature The current Feature being processed. - * @param {number} featureIndex The current index of the Feature being processed. - */ - -/** - * Iterate over features in any GeoJSON object, similar to - * Array.forEach. - * - * @name featureEach - * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object - * @param {Function} callback a method that takes (currentFeature, featureIndex) - * @returns {void} - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {foo: 'bar'}), - * turf.point([36, 53], {hello: 'world'}) - * ]); - * - * turf.featureEach(features, function (currentFeature, featureIndex) { - * //=currentFeature - * //=featureIndex - * }); - */ -function featureEach(geojson, callback) { - if (geojson.type === 'Feature') { - callback(geojson, 0); - } else if (geojson.type === 'FeatureCollection') { - for (var i = 0; i < geojson.features.length; i++) { - if (callback(geojson.features[i], i) === false) break; - } - } -} - -/** - * Callback for featureReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @callback featureReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {Feature} currentFeature The current Feature being processed. - * @param {number} featureIndex The current index of the Feature being processed. - */ - -/** - * Reduce features in any GeoJSON object, similar to Array.reduce(). - * - * @name featureReduce - * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object - * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @returns {*} The value that results from the reduction. - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {"foo": "bar"}), - * turf.point([36, 53], {"hello": "world"}) - * ]); - * - * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) { - * //=previousValue - * //=currentFeature - * //=featureIndex - * return currentFeature - * }); - */ -function featureReduce(geojson, callback, initialValue) { - var previousValue = initialValue; - featureEach(geojson, function (currentFeature, featureIndex) { - if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature; - else previousValue = callback(previousValue, currentFeature, featureIndex); - }); - return previousValue; -} - -/** - * Get all coordinates from any GeoJSON object. - * - * @name coordAll - * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object - * @returns {Array>} coordinate position array - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {foo: 'bar'}), - * turf.point([36, 53], {hello: 'world'}) - * ]); - * - * var coords = turf.coordAll(features); - * //= [[26, 37], [36, 53]] - */ -function coordAll(geojson) { - var coords = []; - coordEach(geojson, function (coord) { - coords.push(coord); - }); - return coords; -} - -/** - * Callback for geomEach - * - * @callback geomEachCallback - * @param {Geometry} currentGeometry The current Geometry being processed. - * @param {number} featureIndex The current index of the Feature being processed. - * @param {Object} featureProperties The current Feature Properties being processed. - * @param {Array} featureBBox The current Feature BBox being processed. - * @param {number|string} featureId The current Feature Id being processed. - */ - -/** - * Iterate over each geometry in any GeoJSON object, similar to Array.forEach() - * - * @name geomEach - * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object - * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) - * @returns {void} - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {foo: 'bar'}), - * turf.point([36, 53], {hello: 'world'}) - * ]); - * - * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) { - * //=currentGeometry - * //=featureIndex - * //=featureProperties - * //=featureBBox - * //=featureId - * }); - */ -function geomEach(geojson, callback) { - var i, j, g, geometry, stopG, - geometryMaybeCollection, - isGeometryCollection, - featureProperties, - featureBBox, - featureId, - featureIndex = 0, - isFeatureCollection = geojson.type === 'FeatureCollection', - isFeature = geojson.type === 'Feature', - stop = isFeatureCollection ? geojson.features.length : 1; - - // This logic may look a little weird. The reason why it is that way - // is because it's trying to be fast. GeoJSON supports multiple kinds - // of objects at its root: FeatureCollection, Features, Geometries. - // This function has the responsibility of handling all of them, and that - // means that some of the `for` loops you see below actually just don't apply - // to certain inputs. For instance, if you give this just a - // Point geometry, then both loops are short-circuited and all we do - // is gradually rename the input until it's called 'geometry'. - // - // This also aims to allocate as few resources as possible: just a - // few numbers and booleans, rather than any temporary arrays as would - // be required with the normalization approach. - for (i = 0; i < stop; i++) { - - geometryMaybeCollection = (isFeatureCollection ? geojson.features[i].geometry : - (isFeature ? geojson.geometry : geojson)); - featureProperties = (isFeatureCollection ? geojson.features[i].properties : - (isFeature ? geojson.properties : {})); - featureBBox = (isFeatureCollection ? geojson.features[i].bbox : - (isFeature ? geojson.bbox : undefined)); - featureId = (isFeatureCollection ? geojson.features[i].id : - (isFeature ? geojson.id : undefined)); - isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false; - stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1; - - for (g = 0; g < stopG; g++) { - geometry = isGeometryCollection ? - geometryMaybeCollection.geometries[g] : geometryMaybeCollection; - - // Handle null Geometry - if (geometry === null) { - if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false; - continue; - } - switch (geometry.type) { - case 'Point': - case 'LineString': - case 'MultiPoint': - case 'Polygon': - case 'MultiLineString': - case 'MultiPolygon': { - if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false; - break; - } - case 'GeometryCollection': { - for (j = 0; j < geometry.geometries.length; j++) { - if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false; - } - break; - } - default: - throw new Error('Unknown Geometry Type'); - } - } - // Only increase `featureIndex` per each feature - featureIndex++; - } -} - -/** - * Callback for geomReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @callback geomReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {Geometry} currentGeometry The current Geometry being processed. - * @param {number} featureIndex The current index of the Feature being processed. - * @param {Object} featureProperties The current Feature Properties being processed. - * @param {Array} featureBBox The current Feature BBox being processed. - * @param {number|string} featureId The current Feature Id being processed. - */ - -/** - * Reduce geometry in any GeoJSON object, similar to Array.reduce(). - * - * @name geomReduce - * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object - * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @returns {*} The value that results from the reduction. - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {foo: 'bar'}), - * turf.point([36, 53], {hello: 'world'}) - * ]); - * - * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) { - * //=previousValue - * //=currentGeometry - * //=featureIndex - * //=featureProperties - * //=featureBBox - * //=featureId - * return currentGeometry - * }); - */ -function geomReduce(geojson, callback, initialValue) { - var previousValue = initialValue; - geomEach(geojson, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) { - if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry; - else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId); - }); - return previousValue; -} - -/** - * Callback for flattenEach - * - * @callback flattenEachCallback - * @param {Feature} currentFeature The current flattened feature being processed. - * @param {number} featureIndex The current index of the Feature being processed. - * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed. - */ - -/** - * Iterate over flattened features in any GeoJSON object, similar to - * Array.forEach. - * - * @name flattenEach - * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object - * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex) - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {foo: 'bar'}), - * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'}) - * ]); - * - * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) { - * //=currentFeature - * //=featureIndex - * //=multiFeatureIndex - * }); - */ -function flattenEach(geojson, callback) { - geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) { - // Callback for single geometry - var type = (geometry === null) ? null : geometry.type; - switch (type) { - case null: - case 'Point': - case 'LineString': - case 'Polygon': - if (callback(helpers.feature(geometry, properties, {bbox: bbox, id: id}), featureIndex, 0) === false) return false; - return; - } - - var geomType; - - // Callback for multi-geometry - switch (type) { - case 'MultiPoint': - geomType = 'Point'; - break; - case 'MultiLineString': - geomType = 'LineString'; - break; - case 'MultiPolygon': - geomType = 'Polygon'; - break; - } - - for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) { - var coordinate = geometry.coordinates[multiFeatureIndex]; - var geom = { - type: geomType, - coordinates: coordinate - }; - if (callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) === false) return false; - } - }); -} - -/** - * Callback for flattenReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @callback flattenReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {Feature} currentFeature The current Feature being processed. - * @param {number} featureIndex The current index of the Feature being processed. - * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed. - */ - -/** - * Reduce flattened features in any GeoJSON object, similar to Array.reduce(). - * - * @name flattenReduce - * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object - * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @returns {*} The value that results from the reduction. - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {foo: 'bar'}), - * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'}) - * ]); - * - * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) { - * //=previousValue - * //=currentFeature - * //=featureIndex - * //=multiFeatureIndex - * return currentFeature - * }); - */ -function flattenReduce(geojson, callback, initialValue) { - var previousValue = initialValue; - flattenEach(geojson, function (currentFeature, featureIndex, multiFeatureIndex) { - if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature; - else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex); - }); - return previousValue; -} - -/** - * Callback for segmentEach - * - * @callback segmentEachCallback - * @param {Feature} currentSegment The current Segment being processed. - * @param {number} featureIndex The current index of the Feature being processed. - * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed. - * @param {number} geometryIndex The current index of the Geometry being processed. - * @param {number} segmentIndex The current index of the Segment being processed. - * @returns {void} - */ - -/** - * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach() - * (Multi)Point geometries do not contain segments therefore they are ignored during this operation. - * - * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON - * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) - * @returns {void} - * @example - * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]); - * - * // Iterate over GeoJSON by 2-vertex segments - * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) { - * //=currentSegment - * //=featureIndex - * //=multiFeatureIndex - * //=geometryIndex - * //=segmentIndex - * }); - * - * // Calculate the total number of segments - * var total = 0; - * turf.segmentEach(polygon, function () { - * total++; - * }); - */ -function segmentEach(geojson, callback) { - flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) { - var segmentIndex = 0; - - // Exclude null Geometries - if (!feature.geometry) return; - // (Multi)Point geometries do not contain segments therefore they are ignored during this operation. - var type = feature.geometry.type; - if (type === 'Point' || type === 'MultiPoint') return; - - // Generate 2-vertex line segments - var previousCoords; - var previousFeatureIndex = 0; - var previousMultiIndex = 0; - var prevGeomIndex = 0; - if (coordEach(feature, function (currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) { - // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false` - if (previousCoords === undefined || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex) { - previousCoords = currentCoord; - previousFeatureIndex = featureIndex; - previousMultiIndex = multiPartIndexCoord; - prevGeomIndex = geometryIndex; - segmentIndex = 0; - return; - } - var currentSegment = helpers.lineString([previousCoords, currentCoord], feature.properties); - if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false; - segmentIndex++; - previousCoords = currentCoord; - }) === false) return false; - }); -} - -/** - * Callback for segmentReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @callback segmentReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {Feature} currentSegment The current Segment being processed. - * @param {number} featureIndex The current index of the Feature being processed. - * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed. - * @param {number} geometryIndex The current index of the Geometry being processed. - * @param {number} segmentIndex The current index of the Segment being processed. - */ - -/** - * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce() - * (Multi)Point geometries do not contain segments therefore they are ignored during this operation. - * - * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON - * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @returns {void} - * @example - * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]); - * - * // Iterate over GeoJSON by 2-vertex segments - * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) { - * //= previousSegment - * //= currentSegment - * //= featureIndex - * //= multiFeatureIndex - * //= geometryIndex - * //= segmentInex - * return currentSegment - * }); - * - * // Calculate the total number of segments - * var initialValue = 0 - * var total = turf.segmentReduce(polygon, function (previousValue) { - * previousValue++; - * return previousValue; - * }, initialValue); - */ -function segmentReduce(geojson, callback, initialValue) { - var previousValue = initialValue; - var started = false; - segmentEach(geojson, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) { - if (started === false && initialValue === undefined) previousValue = currentSegment; - else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex); - started = true; - }); - return previousValue; -} - -/** - * Callback for lineEach - * - * @callback lineEachCallback - * @param {Feature} currentLine The current LineString|LinearRing being processed - * @param {number} featureIndex The current index of the Feature being processed - * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed - * @param {number} geometryIndex The current index of the Geometry being processed - */ - -/** - * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries, - * similar to Array.forEach. - * - * @name lineEach - * @param {Geometry|Feature} geojson object - * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex) - * @example - * var multiLine = turf.multiLineString([ - * [[26, 37], [35, 45]], - * [[36, 53], [38, 50], [41, 55]] - * ]); - * - * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) { - * //=currentLine - * //=featureIndex - * //=multiFeatureIndex - * //=geometryIndex - * }); - */ -function lineEach(geojson, callback) { - // validation - if (!geojson) throw new Error('geojson is required'); - - flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) { - if (feature.geometry === null) return; - var type = feature.geometry.type; - var coords = feature.geometry.coordinates; - switch (type) { - case 'LineString': - if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false) return false; - break; - case 'Polygon': - for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) { - if (callback(helpers.lineString(coords[geometryIndex], feature.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false; - } - break; - } - }); -} - -/** - * Callback for lineReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @callback lineReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {Feature} currentLine The current LineString|LinearRing being processed. - * @param {number} featureIndex The current index of the Feature being processed - * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed - * @param {number} geometryIndex The current index of the Geometry being processed - */ - -/** - * Reduce features in any GeoJSON object, similar to Array.reduce(). - * - * @name lineReduce - * @param {Geometry|Feature} geojson object - * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @returns {*} The value that results from the reduction. - * @example - * var multiPoly = turf.multiPolygon([ - * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]), - * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]]) - * ]); - * - * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) { - * //=previousValue - * //=currentLine - * //=featureIndex - * //=multiFeatureIndex - * //=geometryIndex - * return currentLine - * }); - */ -function lineReduce(geojson, callback, initialValue) { - var previousValue = initialValue; - lineEach(geojson, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) { - if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine; - else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex); - }); - return previousValue; -} - -/** - * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes. - * - * Negative indexes are permitted. - * Point & MultiPoint will always return null. - * - * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry - * @param {Object} [options={}] Optional parameters - * @param {number} [options.featureIndex=0] Feature Index - * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index - * @param {number} [options.geometryIndex=0] Geometry Index - * @param {number} [options.segmentIndex=0] Segment Index - * @param {Object} [options.properties={}] Translate Properties to output LineString - * @param {BBox} [options.bbox={}] Translate BBox to output LineString - * @param {number|string} [options.id={}] Translate Id to output LineString - * @returns {Feature} 2-vertex GeoJSON Feature LineString - * @example - * var multiLine = turf.multiLineString([ - * [[10, 10], [50, 30], [30, 40]], - * [[-10, -10], [-50, -30], [-30, -40]] - * ]); - * - * // First Segment (defaults are 0) - * turf.findSegment(multiLine); - * // => Feature> - * - * // First Segment of 2nd Multi Feature - * turf.findSegment(multiLine, {multiFeatureIndex: 1}); - * // => Feature> - * - * // Last Segment of Last Multi Feature - * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1}); - * // => Feature> - */ -function findSegment(geojson, options) { - // Optional Parameters - options = options || {}; - if (!helpers.isObject(options)) throw new Error('options is invalid'); - var featureIndex = options.featureIndex || 0; - var multiFeatureIndex = options.multiFeatureIndex || 0; - var geometryIndex = options.geometryIndex || 0; - var segmentIndex = options.segmentIndex || 0; - - // Find FeatureIndex - var properties = options.properties; - var geometry; - - switch (geojson.type) { - case 'FeatureCollection': - if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex; - properties = properties || geojson.features[featureIndex].properties; - geometry = geojson.features[featureIndex].geometry; - break; - case 'Feature': - properties = properties || geojson.properties; - geometry = geojson.geometry; - break; - case 'Point': - case 'MultiPoint': - return null; - case 'LineString': - case 'Polygon': - case 'MultiLineString': - case 'MultiPolygon': - geometry = geojson; - break; - default: - throw new Error('geojson is invalid'); - } - - // Find SegmentIndex - if (geometry === null) return null; - var coords = geometry.coordinates; - switch (geometry.type) { - case 'Point': - case 'MultiPoint': - return null; - case 'LineString': - if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1; - return helpers.lineString([coords[segmentIndex], coords[segmentIndex + 1]], properties, options); - case 'Polygon': - if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex; - if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1; - return helpers.lineString([coords[geometryIndex][segmentIndex], coords[geometryIndex][segmentIndex + 1]], properties, options); - case 'MultiLineString': - if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex; - if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1; - return helpers.lineString([coords[multiFeatureIndex][segmentIndex], coords[multiFeatureIndex][segmentIndex + 1]], properties, options); - case 'MultiPolygon': - if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex; - if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex; - if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1; - return helpers.lineString([coords[multiFeatureIndex][geometryIndex][segmentIndex], coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]], properties, options); - } - throw new Error('geojson is invalid'); -} - -/** - * Finds a particular Point from a GeoJSON using `@turf/meta` indexes. - * - * Negative indexes are permitted. - * - * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry - * @param {Object} [options={}] Optional parameters - * @param {number} [options.featureIndex=0] Feature Index - * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index - * @param {number} [options.geometryIndex=0] Geometry Index - * @param {number} [options.coordIndex=0] Coord Index - * @param {Object} [options.properties={}] Translate Properties to output Point - * @param {BBox} [options.bbox={}] Translate BBox to output Point - * @param {number|string} [options.id={}] Translate Id to output Point - * @returns {Feature} 2-vertex GeoJSON Feature Point - * @example - * var multiLine = turf.multiLineString([ - * [[10, 10], [50, 30], [30, 40]], - * [[-10, -10], [-50, -30], [-30, -40]] - * ]); - * - * // First Segment (defaults are 0) - * turf.findPoint(multiLine); - * // => Feature> - * - * // First Segment of the 2nd Multi-Feature - * turf.findPoint(multiLine, {multiFeatureIndex: 1}); - * // => Feature> - * - * // Last Segment of last Multi-Feature - * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1}); - * // => Feature> - */ -function findPoint(geojson, options) { - // Optional Parameters - options = options || {}; - if (!helpers.isObject(options)) throw new Error('options is invalid'); - var featureIndex = options.featureIndex || 0; - var multiFeatureIndex = options.multiFeatureIndex || 0; - var geometryIndex = options.geometryIndex || 0; - var coordIndex = options.coordIndex || 0; - - // Find FeatureIndex - var properties = options.properties; - var geometry; - - switch (geojson.type) { - case 'FeatureCollection': - if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex; - properties = properties || geojson.features[featureIndex].properties; - geometry = geojson.features[featureIndex].geometry; - break; - case 'Feature': - properties = properties || geojson.properties; - geometry = geojson.geometry; - break; - case 'Point': - case 'MultiPoint': - return null; - case 'LineString': - case 'Polygon': - case 'MultiLineString': - case 'MultiPolygon': - geometry = geojson; - break; - default: - throw new Error('geojson is invalid'); - } - - // Find Coord Index - if (geometry === null) return null; - var coords = geometry.coordinates; - switch (geometry.type) { - case 'Point': - return helpers.point(coords, properties, options); - case 'MultiPoint': - if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex; - return helpers.point(coords[multiFeatureIndex], properties, options); - case 'LineString': - if (coordIndex < 0) coordIndex = coords.length + coordIndex; - return helpers.point(coords[coordIndex], properties, options); - case 'Polygon': - if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex; - if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex; - return helpers.point(coords[geometryIndex][coordIndex], properties, options); - case 'MultiLineString': - if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex; - if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex; - return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options); - case 'MultiPolygon': - if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex; - if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex; - if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex; - return helpers.point(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options); - } - throw new Error('geojson is invalid'); -} - -exports.coordEach = coordEach; -exports.coordReduce = coordReduce; -exports.propEach = propEach; -exports.propReduce = propReduce; -exports.featureEach = featureEach; -exports.featureReduce = featureReduce; -exports.coordAll = coordAll; -exports.geomEach = geomEach; -exports.geomReduce = geomReduce; -exports.flattenEach = flattenEach; -exports.flattenReduce = flattenReduce; -exports.segmentEach = segmentEach; -exports.segmentReduce = segmentReduce; -exports.lineEach = lineEach; -exports.lineReduce = lineReduce; -exports.findSegment = findSegment; -exports.findPoint = findPoint; - -},{"@turf/helpers":123}],123:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * @module helpers - */ -/** - * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth. - * - * @memberof helpers - * @type {number} - */ -exports.earthRadius = 6371008.8; -/** - * Unit of measurement factors using a spherical (non-ellipsoid) earth radius. - * - * @memberof helpers - * @type {Object} - */ -exports.factors = { - centimeters: exports.earthRadius * 100, - centimetres: exports.earthRadius * 100, - degrees: exports.earthRadius / 111325, - feet: exports.earthRadius * 3.28084, - inches: exports.earthRadius * 39.370, - kilometers: exports.earthRadius / 1000, - kilometres: exports.earthRadius / 1000, - meters: exports.earthRadius, - metres: exports.earthRadius, - miles: exports.earthRadius / 1609.344, - millimeters: exports.earthRadius * 1000, - millimetres: exports.earthRadius * 1000, - nauticalmiles: exports.earthRadius / 1852, - radians: 1, - yards: exports.earthRadius / 1.0936, -}; -/** - * Units of measurement factors based on 1 meter. - * - * @memberof helpers - * @type {Object} - */ -exports.unitsFactors = { - centimeters: 100, - centimetres: 100, - degrees: 1 / 111325, - feet: 3.28084, - inches: 39.370, - kilometers: 1 / 1000, - kilometres: 1 / 1000, - meters: 1, - metres: 1, - miles: 1 / 1609.344, - millimeters: 1000, - millimetres: 1000, - nauticalmiles: 1 / 1852, - radians: 1 / exports.earthRadius, - yards: 1 / 1.0936, -}; -/** - * Area of measurement factors based on 1 square meter. - * - * @memberof helpers - * @type {Object} - */ -exports.areaFactors = { - acres: 0.000247105, - centimeters: 10000, - centimetres: 10000, - feet: 10.763910417, - inches: 1550.003100006, - kilometers: 0.000001, - kilometres: 0.000001, - meters: 1, - metres: 1, - miles: 3.86e-7, - millimeters: 1000000, - millimetres: 1000000, - yards: 1.195990046, -}; -/** - * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}. - * - * @name feature - * @param {Geometry} geometry input geometry - * @param {Object} [properties={}] an Object of key-value pairs to add as properties - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature - * @param {string|number} [options.id] Identifier associated with the Feature - * @returns {Feature} a GeoJSON Feature - * @example - * var geometry = { - * "type": "Point", - * "coordinates": [110, 50] - * }; - * - * var feature = turf.feature(geometry); - * - * //=feature - */ -function feature(geom, properties, options) { - if (options === void 0) { options = {}; } - var feat = { type: "Feature" }; - if (options.id === 0 || options.id) { - feat.id = options.id; - } - if (options.bbox) { - feat.bbox = options.bbox; - } - feat.properties = properties || {}; - feat.geometry = geom; - return feat; -} -exports.feature = feature; -/** - * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates. - * For GeometryCollection type use `helpers.geometryCollection` - * - * @name geometry - * @param {string} type Geometry Type - * @param {Array} coordinates Coordinates - * @param {Object} [options={}] Optional Parameters - * @returns {Geometry} a GeoJSON Geometry - * @example - * var type = "Point"; - * var coordinates = [110, 50]; - * var geometry = turf.geometry(type, coordinates); - * // => geometry - */ -function geometry(type, coordinates, options) { - if (options === void 0) { options = {}; } - switch (type) { - case "Point": return point(coordinates).geometry; - case "LineString": return lineString(coordinates).geometry; - case "Polygon": return polygon(coordinates).geometry; - case "MultiPoint": return multiPoint(coordinates).geometry; - case "MultiLineString": return multiLineString(coordinates).geometry; - case "MultiPolygon": return multiPolygon(coordinates).geometry; - default: throw new Error(type + " is invalid"); - } -} -exports.geometry = geometry; -/** - * Creates a {@link Point} {@link Feature} from a Position. - * - * @name point - * @param {Array} coordinates longitude, latitude position (each in decimal degrees) - * @param {Object} [properties={}] an Object of key-value pairs to add as properties - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature - * @param {string|number} [options.id] Identifier associated with the Feature - * @returns {Feature} a Point feature - * @example - * var point = turf.point([-75.343, 39.984]); - * - * //=point - */ -function point(coordinates, properties, options) { - if (options === void 0) { options = {}; } - var geom = { - type: "Point", - coordinates: coordinates, - }; - return feature(geom, properties, options); -} -exports.point = point; -/** - * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates. - * - * @name points - * @param {Array>} coordinates an array of Points - * @param {Object} [properties={}] Translate these properties to each Feature - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] - * associated with the FeatureCollection - * @param {string|number} [options.id] Identifier associated with the FeatureCollection - * @returns {FeatureCollection} Point Feature - * @example - * var points = turf.points([ - * [-75, 39], - * [-80, 45], - * [-78, 50] - * ]); - * - * //=points - */ -function points(coordinates, properties, options) { - if (options === void 0) { options = {}; } - return featureCollection(coordinates.map(function (coords) { - return point(coords, properties); - }), options); -} -exports.points = points; -/** - * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings. - * - * @name polygon - * @param {Array>>} coordinates an array of LinearRings - * @param {Object} [properties={}] an Object of key-value pairs to add as properties - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature - * @param {string|number} [options.id] Identifier associated with the Feature - * @returns {Feature} Polygon Feature - * @example - * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' }); - * - * //=polygon - */ -function polygon(coordinates, properties, options) { - if (options === void 0) { options = {}; } - for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) { - var ring = coordinates_1[_i]; - if (ring.length < 4) { - throw new Error("Each LinearRing of a Polygon must have 4 or more Positions."); - } - for (var j = 0; j < ring[ring.length - 1].length; j++) { - // Check if first point of Polygon contains two numbers - if (ring[ring.length - 1][j] !== ring[0][j]) { - throw new Error("First and last Position are not equivalent."); - } - } - } - var geom = { - type: "Polygon", - coordinates: coordinates, - }; - return feature(geom, properties, options); -} -exports.polygon = polygon; -/** - * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates. - * - * @name polygons - * @param {Array>>>} coordinates an array of Polygon coordinates - * @param {Object} [properties={}] an Object of key-value pairs to add as properties - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature - * @param {string|number} [options.id] Identifier associated with the FeatureCollection - * @returns {FeatureCollection} Polygon FeatureCollection - * @example - * var polygons = turf.polygons([ - * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], - * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]], - * ]); - * - * //=polygons - */ -function polygons(coordinates, properties, options) { - if (options === void 0) { options = {}; } - return featureCollection(coordinates.map(function (coords) { - return polygon(coords, properties); - }), options); -} -exports.polygons = polygons; -/** - * Creates a {@link LineString} {@link Feature} from an Array of Positions. - * - * @name lineString - * @param {Array>} coordinates an array of Positions - * @param {Object} [properties={}] an Object of key-value pairs to add as properties - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature - * @param {string|number} [options.id] Identifier associated with the Feature - * @returns {Feature} LineString Feature - * @example - * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'}); - * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'}); - * - * //=linestring1 - * //=linestring2 - */ -function lineString(coordinates, properties, options) { - if (options === void 0) { options = {}; } - if (coordinates.length < 2) { - throw new Error("coordinates must be an array of two or more positions"); - } - var geom = { - type: "LineString", - coordinates: coordinates, - }; - return feature(geom, properties, options); -} -exports.lineString = lineString; -/** - * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates. - * - * @name lineStrings - * @param {Array>>} coordinates an array of LinearRings - * @param {Object} [properties={}] an Object of key-value pairs to add as properties - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] - * associated with the FeatureCollection - * @param {string|number} [options.id] Identifier associated with the FeatureCollection - * @returns {FeatureCollection} LineString FeatureCollection - * @example - * var linestrings = turf.lineStrings([ - * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]], - * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]] - * ]); - * - * //=linestrings - */ -function lineStrings(coordinates, properties, options) { - if (options === void 0) { options = {}; } - return featureCollection(coordinates.map(function (coords) { - return lineString(coords, properties); - }), options); -} -exports.lineStrings = lineStrings; -/** - * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}. - * - * @name featureCollection - * @param {Feature[]} features input features - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature - * @param {string|number} [options.id] Identifier associated with the Feature - * @returns {FeatureCollection} FeatureCollection of Features - * @example - * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'}); - * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'}); - * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'}); - * - * var collection = turf.featureCollection([ - * locationA, - * locationB, - * locationC - * ]); - * - * //=collection - */ -function featureCollection(features, options) { - if (options === void 0) { options = {}; } - var fc = { type: "FeatureCollection" }; - if (options.id) { - fc.id = options.id; - } - if (options.bbox) { - fc.bbox = options.bbox; - } - fc.features = features; - return fc; -} -exports.featureCollection = featureCollection; -/** - * Creates a {@link Feature} based on a - * coordinate array. Properties can be added optionally. - * - * @name multiLineString - * @param {Array>>} coordinates an array of LineStrings - * @param {Object} [properties={}] an Object of key-value pairs to add as properties - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature - * @param {string|number} [options.id] Identifier associated with the Feature - * @returns {Feature} a MultiLineString feature - * @throws {Error} if no coordinates are passed - * @example - * var multiLine = turf.multiLineString([[[0,0],[10,10]]]); - * - * //=multiLine - */ -function multiLineString(coordinates, properties, options) { - if (options === void 0) { options = {}; } - var geom = { - type: "MultiLineString", - coordinates: coordinates, - }; - return feature(geom, properties, options); -} -exports.multiLineString = multiLineString; -/** - * Creates a {@link Feature} based on a - * coordinate array. Properties can be added optionally. - * - * @name multiPoint - * @param {Array>} coordinates an array of Positions - * @param {Object} [properties={}] an Object of key-value pairs to add as properties - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature - * @param {string|number} [options.id] Identifier associated with the Feature - * @returns {Feature} a MultiPoint feature - * @throws {Error} if no coordinates are passed - * @example - * var multiPt = turf.multiPoint([[0,0],[10,10]]); - * - * //=multiPt - */ -function multiPoint(coordinates, properties, options) { - if (options === void 0) { options = {}; } - var geom = { - type: "MultiPoint", - coordinates: coordinates, - }; - return feature(geom, properties, options); -} -exports.multiPoint = multiPoint; -/** - * Creates a {@link Feature} based on a - * coordinate array. Properties can be added optionally. - * - * @name multiPolygon - * @param {Array>>>} coordinates an array of Polygons - * @param {Object} [properties={}] an Object of key-value pairs to add as properties - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature - * @param {string|number} [options.id] Identifier associated with the Feature - * @returns {Feature} a multipolygon feature - * @throws {Error} if no coordinates are passed - * @example - * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]); - * - * //=multiPoly - * - */ -function multiPolygon(coordinates, properties, options) { - if (options === void 0) { options = {}; } - var geom = { - type: "MultiPolygon", - coordinates: coordinates, - }; - return feature(geom, properties, options); -} -exports.multiPolygon = multiPolygon; -/** - * Creates a {@link Feature} based on a - * coordinate array. Properties can be added optionally. - * - * @name geometryCollection - * @param {Array} geometries an array of GeoJSON Geometries - * @param {Object} [properties={}] an Object of key-value pairs to add as properties - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature - * @param {string|number} [options.id] Identifier associated with the Feature - * @returns {Feature} a GeoJSON GeometryCollection Feature - * @example - * var pt = turf.geometry("Point", [100, 0]); - * var line = turf.geometry("LineString", [[101, 0], [102, 1]]); - * var collection = turf.geometryCollection([pt, line]); - * - * // => collection - */ -function geometryCollection(geometries, properties, options) { - if (options === void 0) { options = {}; } - var geom = { - type: "GeometryCollection", - geometries: geometries, - }; - return feature(geom, properties, options); -} -exports.geometryCollection = geometryCollection; -/** - * Round number to precision - * - * @param {number} num Number - * @param {number} [precision=0] Precision - * @returns {number} rounded number - * @example - * turf.round(120.4321) - * //=120 - * - * turf.round(120.4321, 2) - * //=120.43 - */ -function round(num, precision) { - if (precision === void 0) { precision = 0; } - if (precision && !(precision >= 0)) { - throw new Error("precision must be a positive number"); - } - var multiplier = Math.pow(10, precision || 0); - return Math.round(num * multiplier) / multiplier; -} -exports.round = round; -/** - * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit. - * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet - * - * @name radiansToLength - * @param {number} radians in radians across the sphere - * @param {string} [units="kilometers"] can be degrees, radians, miles, or kilometers inches, yards, metres, - * meters, kilometres, kilometers. - * @returns {number} distance - */ -function radiansToLength(radians, units) { - if (units === void 0) { units = "kilometers"; } - var factor = exports.factors[units]; - if (!factor) { - throw new Error(units + " units is invalid"); - } - return radians * factor; -} -exports.radiansToLength = radiansToLength; -/** - * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians - * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet - * - * @name lengthToRadians - * @param {number} distance in real units - * @param {string} [units="kilometers"] can be degrees, radians, miles, or kilometers inches, yards, metres, - * meters, kilometres, kilometers. - * @returns {number} radians - */ -function lengthToRadians(distance, units) { - if (units === void 0) { units = "kilometers"; } - var factor = exports.factors[units]; - if (!factor) { - throw new Error(units + " units is invalid"); - } - return distance / factor; -} -exports.lengthToRadians = lengthToRadians; -/** - * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees - * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet - * - * @name lengthToDegrees - * @param {number} distance in real units - * @param {string} [units="kilometers"] can be degrees, radians, miles, or kilometers inches, yards, metres, - * meters, kilometres, kilometers. - * @returns {number} degrees - */ -function lengthToDegrees(distance, units) { - return radiansToDegrees(lengthToRadians(distance, units)); -} -exports.lengthToDegrees = lengthToDegrees; -/** - * Converts any bearing angle from the north line direction (positive clockwise) - * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line - * - * @name bearingToAzimuth - * @param {number} bearing angle, between -180 and +180 degrees - * @returns {number} angle between 0 and 360 degrees - */ -function bearingToAzimuth(bearing) { - var angle = bearing % 360; - if (angle < 0) { - angle += 360; - } - return angle; -} -exports.bearingToAzimuth = bearingToAzimuth; -/** - * Converts an angle in radians to degrees - * - * @name radiansToDegrees - * @param {number} radians angle in radians - * @returns {number} degrees between 0 and 360 degrees - */ -function radiansToDegrees(radians) { - var degrees = radians % (2 * Math.PI); - return degrees * 180 / Math.PI; -} -exports.radiansToDegrees = radiansToDegrees; -/** - * Converts an angle in degrees to radians - * - * @name degreesToRadians - * @param {number} degrees angle between 0 and 360 degrees - * @returns {number} angle in radians - */ -function degreesToRadians(degrees) { - var radians = degrees % 360; - return radians * Math.PI / 180; -} -exports.degreesToRadians = degreesToRadians; -/** - * Converts a length to the requested unit. - * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet - * - * @param {number} length to be converted - * @param {Units} [originalUnit="kilometers"] of the length - * @param {Units} [finalUnit="kilometers"] returned unit - * @returns {number} the converted length - */ -function convertLength(length, originalUnit, finalUnit) { - if (originalUnit === void 0) { originalUnit = "kilometers"; } - if (finalUnit === void 0) { finalUnit = "kilometers"; } - if (!(length >= 0)) { - throw new Error("length must be a positive number"); - } - return radiansToLength(lengthToRadians(length, originalUnit), finalUnit); -} -exports.convertLength = convertLength; -/** - * Converts a area to the requested unit. - * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches - * @param {number} area to be converted - * @param {Units} [originalUnit="meters"] of the distance - * @param {Units} [finalUnit="kilometers"] returned unit - * @returns {number} the converted distance - */ -function convertArea(area, originalUnit, finalUnit) { - if (originalUnit === void 0) { originalUnit = "meters"; } - if (finalUnit === void 0) { finalUnit = "kilometers"; } - if (!(area >= 0)) { - throw new Error("area must be a positive number"); - } - var startFactor = exports.areaFactors[originalUnit]; - if (!startFactor) { - throw new Error("invalid original units"); - } - var finalFactor = exports.areaFactors[finalUnit]; - if (!finalFactor) { - throw new Error("invalid final units"); - } - return (area / startFactor) * finalFactor; -} -exports.convertArea = convertArea; -/** - * isNumber - * - * @param {*} num Number to validate - * @returns {boolean} true/false - * @example - * turf.isNumber(123) - * //=true - * turf.isNumber('foo') - * //=false - */ -function isNumber(num) { - return !isNaN(num) && num !== null && !Array.isArray(num) && !/^\s*$/.test(num); -} -exports.isNumber = isNumber; -/** - * isObject - * - * @param {*} input variable to validate - * @returns {boolean} true/false - * @example - * turf.isObject({elevation: 10}) - * //=true - * turf.isObject('foo') - * //=false - */ -function isObject(input) { - return (!!input) && (input.constructor === Object); -} -exports.isObject = isObject; -/** - * Validate BBox - * - * @private - * @param {Array} bbox BBox to validate - * @returns {void} - * @throws Error if BBox is not valid - * @example - * validateBBox([-180, -40, 110, 50]) - * //=OK - * validateBBox([-180, -40]) - * //=Error - * validateBBox('Foo') - * //=Error - * validateBBox(5) - * //=Error - * validateBBox(null) - * //=Error - * validateBBox(undefined) - * //=Error - */ -function validateBBox(bbox) { - if (!bbox) { - throw new Error("bbox is required"); - } - if (!Array.isArray(bbox)) { - throw new Error("bbox must be an Array"); - } - if (bbox.length !== 4 && bbox.length !== 6) { - throw new Error("bbox must be an Array of 4 or 6 numbers"); - } - bbox.forEach(function (num) { - if (!isNumber(num)) { - throw new Error("bbox must only contain numbers"); - } - }); -} -exports.validateBBox = validateBBox; -/** - * Validate Id - * - * @private - * @param {string|number} id Id to validate - * @returns {void} - * @throws Error if Id is not valid - * @example - * validateId([-180, -40, 110, 50]) - * //=Error - * validateId([-180, -40]) - * //=Error - * validateId('Foo') - * //=OK - * validateId(5) - * //=OK - * validateId(null) - * //=Error - * validateId(undefined) - * //=Error - */ -function validateId(id) { - if (!id) { - throw new Error("id is required"); - } - if (["string", "number"].indexOf(typeof id) === -1) { - throw new Error("id must be a number or a string"); - } -} -exports.validateId = validateId; -// Deprecated methods -function radians2degrees() { - throw new Error("method has been renamed to `radiansToDegrees`"); -} -exports.radians2degrees = radians2degrees; -function degrees2radians() { - throw new Error("method has been renamed to `degreesToRadians`"); -} -exports.degrees2radians = degrees2radians; -function distanceToDegrees() { - throw new Error("method has been renamed to `lengthToDegrees`"); -} -exports.distanceToDegrees = distanceToDegrees; -function distanceToRadians() { - throw new Error("method has been renamed to `lengthToRadians`"); -} -exports.distanceToRadians = distanceToRadians; -function radiansToDistance() { - throw new Error("method has been renamed to `radiansToLength`"); -} -exports.radiansToDistance = radiansToDistance; -function bearingToAngle() { - throw new Error("method has been renamed to `bearingToAzimuth`"); -} -exports.bearingToAngle = bearingToAngle; -function convertDistance() { - throw new Error("method has been renamed to `convertLength`"); -} -exports.convertDistance = convertDistance; - -},{}],124:[function(require,module,exports){ -"use strict"; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result["default"] = mod; - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var helpers_1 = require("@turf/helpers"); -var invariant_1 = require("@turf/invariant"); -var martinez = __importStar(require("martinez-polygon-clipping")); -/** - * Takes two {@link Polygon|polygon} or {@link MultiPolygon|multi-polygon} geometries and - * finds their polygonal intersection. If they don't intersect, returns null. - * - * @name intersect - * @param {Feature} poly1 the first polygon or multipolygon - * @param {Feature} poly2 the second polygon or multipolygon - * @param {Object} [options={}] Optional Parameters - * @param {Object} [options.properties={}] Translate GeoJSON Properties to Feature - * @returns {Feature|null} returns a feature representing the area they share (either a {@link Polygon} or - * {@link MultiPolygon}). If they do not share any area, returns `null`. - * @example - * var poly1 = turf.polygon([[ - * [-122.801742, 45.48565], - * [-122.801742, 45.60491], - * [-122.584762, 45.60491], - * [-122.584762, 45.48565], - * [-122.801742, 45.48565] - * ]]); - * - * var poly2 = turf.polygon([[ - * [-122.520217, 45.535693], - * [-122.64038, 45.553967], - * [-122.720031, 45.526554], - * [-122.669906, 45.507309], - * [-122.723464, 45.446643], - * [-122.532577, 45.408574], - * [-122.487258, 45.477466], - * [-122.520217, 45.535693] - * ]]); - * - * var intersection = turf.intersect(poly1, poly2); - * - * //addToMap - * var addToMap = [poly1, poly2, intersection]; - */ -function intersect(poly1, poly2, options) { - if (options === void 0) { options = {}; } - var geom1 = invariant_1.getGeom(poly1); - var geom2 = invariant_1.getGeom(poly2); - if (geom1.type === "Polygon" && geom2.type === "Polygon") { - var intersection = martinez.intersection(geom1.coordinates, geom2.coordinates); - if (intersection === null || intersection.length === 0) { - return null; - } - if (intersection.length === 1) { - var start = intersection[0][0][0]; - var end = intersection[0][0][intersection[0][0].length - 1]; - if (start[0] === end[0] && start[1] === end[1]) { - return helpers_1.polygon(intersection[0], options.properties); - } - return null; - } - return helpers_1.multiPolygon(intersection, options.properties); - } - else if (geom1.type === "MultiPolygon") { - var resultCoords = []; - // iterate through the polygon and run intersect with each part, adding to the resultCoords. - for (var _i = 0, _a = geom1.coordinates; _i < _a.length; _i++) { - var coords = _a[_i]; - var subGeom = invariant_1.getGeom(helpers_1.polygon(coords)); - var subIntersection = intersect(subGeom, geom2); - if (subIntersection) { - var subIntGeom = invariant_1.getGeom(subIntersection); - if (subIntGeom.type === "Polygon") { - resultCoords.push(subIntGeom.coordinates); - } - else if (subIntGeom.type === "MultiPolygon") { - resultCoords = resultCoords.concat(subIntGeom.coordinates); - } - else { - throw new Error("intersection is invalid"); - } - } - } - // Make a polygon with the result - if (resultCoords.length === 0) { - return null; - } - if (resultCoords.length === 1) { - return helpers_1.polygon(resultCoords[0], options.properties); - } - else { - return helpers_1.multiPolygon(resultCoords, options.properties); - } - } - else if (geom2.type === "MultiPolygon") { - // geom1 is a polygon and geom2 a multiPolygon, - // put the multiPolygon first and fallback to the previous case. - return intersect(geom2, geom1); - } - else { - // handle invalid geometry types - throw new Error("poly1 and poly2 must be either polygons or multiPolygons"); - } -} -exports.default = intersect; - -},{"@turf/helpers":123,"@turf/invariant":125,"martinez-polygon-clipping":265}],125:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var helpers_1 = require("@turf/helpers"); -/** - * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate. - * - * @name getCoord - * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers - * @returns {Array} coordinates - * @example - * var pt = turf.point([10, 10]); - * - * var coord = turf.getCoord(pt); - * //= [10, 10] - */ -function getCoord(coord) { - if (!coord) { - throw new Error("coord is required"); - } - if (!Array.isArray(coord)) { - if (coord.type === "Feature" && coord.geometry !== null && coord.geometry.type === "Point") { - return coord.geometry.coordinates; - } - if (coord.type === "Point") { - return coord.coordinates; - } - } - if (Array.isArray(coord) && coord.length >= 2 && !Array.isArray(coord[0]) && !Array.isArray(coord[1])) { - return coord; - } - throw new Error("coord must be GeoJSON Point or an Array of numbers"); -} -exports.getCoord = getCoord; -/** - * Unwrap coordinates from a Feature, Geometry Object or an Array - * - * @name getCoords - * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array - * @returns {Array} coordinates - * @example - * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]); - * - * var coords = turf.getCoords(poly); - * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]] - */ -function getCoords(coords) { - if (Array.isArray(coords)) { - return coords; - } - // Feature - if (coords.type === "Feature") { - if (coords.geometry !== null) { - return coords.geometry.coordinates; - } - } - else { - // Geometry - if (coords.coordinates) { - return coords.coordinates; - } - } - throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array"); -} -exports.getCoords = getCoords; -/** - * Checks if coordinates contains a number - * - * @name containsNumber - * @param {Array} coordinates GeoJSON Coordinates - * @returns {boolean} true if Array contains a number - */ -function containsNumber(coordinates) { - if (coordinates.length > 1 && helpers_1.isNumber(coordinates[0]) && helpers_1.isNumber(coordinates[1])) { - return true; - } - if (Array.isArray(coordinates[0]) && coordinates[0].length) { - return containsNumber(coordinates[0]); - } - throw new Error("coordinates must only contain numbers"); -} -exports.containsNumber = containsNumber; -/** - * Enforce expectations about types of GeoJSON objects for Turf. - * - * @name geojsonType - * @param {GeoJSON} value any GeoJSON object - * @param {string} type expected GeoJSON type - * @param {string} name name of calling function - * @throws {Error} if value is not the expected type. - */ -function geojsonType(value, type, name) { - if (!type || !name) { - throw new Error("type and name required"); - } - if (!value || value.type !== type) { - throw new Error("Invalid input to " + name + ": must be a " + type + ", given " + value.type); - } -} -exports.geojsonType = geojsonType; -/** - * Enforce expectations about types of {@link Feature} inputs for Turf. - * Internally this uses {@link geojsonType} to judge geometry types. - * - * @name featureOf - * @param {Feature} feature a feature with an expected geometry type - * @param {string} type expected GeoJSON type - * @param {string} name name of calling function - * @throws {Error} error if value is not the expected type. - */ -function featureOf(feature, type, name) { - if (!feature) { - throw new Error("No feature passed"); - } - if (!name) { - throw new Error(".featureOf() requires a name"); - } - if (!feature || feature.type !== "Feature" || !feature.geometry) { - throw new Error("Invalid input to " + name + ", Feature with geometry required"); - } - if (!feature.geometry || feature.geometry.type !== type) { - throw new Error("Invalid input to " + name + ": must be a " + type + ", given " + feature.geometry.type); - } -} -exports.featureOf = featureOf; -/** - * Enforce expectations about types of {@link FeatureCollection} inputs for Turf. - * Internally this uses {@link geojsonType} to judge geometry types. - * - * @name collectionOf - * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged - * @param {string} type expected GeoJSON type - * @param {string} name name of calling function - * @throws {Error} if value is not the expected type. - */ -function collectionOf(featureCollection, type, name) { - if (!featureCollection) { - throw new Error("No featureCollection passed"); - } - if (!name) { - throw new Error(".collectionOf() requires a name"); - } - if (!featureCollection || featureCollection.type !== "FeatureCollection") { - throw new Error("Invalid input to " + name + ", FeatureCollection required"); - } - for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) { - var feature = _a[_i]; - if (!feature || feature.type !== "Feature" || !feature.geometry) { - throw new Error("Invalid input to " + name + ", Feature with geometry required"); - } - if (!feature.geometry || feature.geometry.type !== type) { - throw new Error("Invalid input to " + name + ": must be a " + type + ", given " + feature.geometry.type); - } - } -} -exports.collectionOf = collectionOf; -/** - * Get Geometry from Feature or Geometry Object - * - * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object - * @returns {Geometry|null} GeoJSON Geometry Object - * @throws {Error} if geojson is not a Feature or Geometry Object - * @example - * var point = { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [110, 40] - * } - * } - * var geom = turf.getGeom(point) - * //={"type": "Point", "coordinates": [110, 40]} - */ -function getGeom(geojson) { - if (geojson.type === "Feature") { - return geojson.geometry; - } - return geojson; -} -exports.getGeom = getGeom; -/** - * Get GeoJSON object's type, Geometry type is prioritize. - * - * @param {GeoJSON} geojson GeoJSON object - * @param {string} [name="geojson"] name of the variable to display in error message - * @returns {string} GeoJSON type - * @example - * var point = { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [110, 40] - * } - * } - * var geom = turf.getType(point) - * //="Point" - */ -function getType(geojson, name) { - if (geojson.type === "FeatureCollection") { - return "FeatureCollection"; - } - if (geojson.type === "GeometryCollection") { - return "GeometryCollection"; - } - if (geojson.type === "Feature" && geojson.geometry !== null) { - return geojson.geometry.type; - } - return geojson.type; -} -exports.getType = getType; - -},{"@turf/helpers":123}],126:[function(require,module,exports){ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -} -Object.defineProperty(exports, "__esModule", { value: true }); -var helpers_1 = require("@turf/helpers"); -var invariant_1 = require("@turf/invariant"); -var line_segment_1 = __importDefault(require("@turf/line-segment")); -var meta_1 = require("@turf/meta"); -var geojson_rbush_1 = __importDefault(require("geojson-rbush")); -/** - * Takes any LineString or Polygon GeoJSON and returns the intersecting point(s). - * - * @name lineIntersect - * @param {GeoJSON} line1 any LineString or Polygon - * @param {GeoJSON} line2 any LineString or Polygon - * @returns {FeatureCollection} point(s) that intersect both - * @example - * var line1 = turf.lineString([[126, -11], [129, -21]]); - * var line2 = turf.lineString([[123, -18], [131, -14]]); - * var intersects = turf.lineIntersect(line1, line2); - * - * //addToMap - * var addToMap = [line1, line2, intersects] - */ -function lineIntersect(line1, line2) { - var unique = {}; - var results = []; - // First, normalize geometries to features - // Then, handle simple 2-vertex segments - if (line1.type === "LineString") { - line1 = helpers_1.feature(line1); - } - if (line2.type === "LineString") { - line2 = helpers_1.feature(line2); - } - if (line1.type === "Feature" && - line2.type === "Feature" && - line1.geometry !== null && - line2.geometry !== null && - line1.geometry.type === "LineString" && - line2.geometry.type === "LineString" && - line1.geometry.coordinates.length === 2 && - line2.geometry.coordinates.length === 2) { - var intersect = intersects(line1, line2); - if (intersect) { - results.push(intersect); - } - return helpers_1.featureCollection(results); - } - // Handles complex GeoJSON Geometries - var tree = geojson_rbush_1.default(); - tree.load(line_segment_1.default(line2)); - meta_1.featureEach(line_segment_1.default(line1), function (segment) { - meta_1.featureEach(tree.search(segment), function (match) { - var intersect = intersects(segment, match); - if (intersect) { - // prevent duplicate points https://github.com/Turfjs/turf/issues/688 - var key = invariant_1.getCoords(intersect).join(","); - if (!unique[key]) { - unique[key] = true; - results.push(intersect); - } - } - }); - }); - return helpers_1.featureCollection(results); -} -/** - * Find a point that intersects LineStrings with two coordinates each - * - * @private - * @param {Feature} line1 GeoJSON LineString (Must only contain 2 coordinates) - * @param {Feature} line2 GeoJSON LineString (Must only contain 2 coordinates) - * @returns {Feature} intersecting GeoJSON Point - */ -function intersects(line1, line2) { - var coords1 = invariant_1.getCoords(line1); - var coords2 = invariant_1.getCoords(line2); - if (coords1.length !== 2) { - throw new Error(" line1 must only contain 2 coordinates"); - } - if (coords2.length !== 2) { - throw new Error(" line2 must only contain 2 coordinates"); - } - var x1 = coords1[0][0]; - var y1 = coords1[0][1]; - var x2 = coords1[1][0]; - var y2 = coords1[1][1]; - var x3 = coords2[0][0]; - var y3 = coords2[0][1]; - var x4 = coords2[1][0]; - var y4 = coords2[1][1]; - var denom = ((y4 - y3) * (x2 - x1)) - ((x4 - x3) * (y2 - y1)); - var numeA = ((x4 - x3) * (y1 - y3)) - ((y4 - y3) * (x1 - x3)); - var numeB = ((x2 - x1) * (y1 - y3)) - ((y2 - y1) * (x1 - x3)); - if (denom === 0) { - if (numeA === 0 && numeB === 0) { - return null; - } - return null; - } - var uA = numeA / denom; - var uB = numeB / denom; - if (uA >= 0 && uA <= 1 && uB >= 0 && uB <= 1) { - var x = x1 + (uA * (x2 - x1)); - var y = y1 + (uA * (y2 - y1)); - return helpers_1.point([x, y]); - } - return null; -} -exports.default = lineIntersect; - -},{"@turf/helpers":123,"@turf/invariant":125,"@turf/line-segment":128,"@turf/meta":127,"geojson-rbush":224}],127:[function(require,module,exports){ -arguments[4][122][0].apply(exports,arguments) -},{"@turf/helpers":123,"dup":122}],128:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var helpers_1 = require("@turf/helpers"); -var invariant_1 = require("@turf/invariant"); -var meta_1 = require("@turf/meta"); -/** - * Creates a {@link FeatureCollection} of 2-vertex {@link LineString} segments from a - * {@link LineString|(Multi)LineString} or {@link Polygon|(Multi)Polygon}. - * - * @name lineSegment - * @param {GeoJSON} geojson GeoJSON Polygon or LineString - * @returns {FeatureCollection} 2-vertex line segments - * @example - * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]); - * var segments = turf.lineSegment(polygon); - * - * //addToMap - * var addToMap = [polygon, segments] - */ -function lineSegment(geojson) { - if (!geojson) { - throw new Error("geojson is required"); - } - var results = []; - meta_1.flattenEach(geojson, function (feature) { - lineSegmentFeature(feature, results); - }); - return helpers_1.featureCollection(results); -} -/** - * Line Segment - * - * @private - * @param {Feature} geojson Line or polygon feature - * @param {Array} results push to results - * @returns {void} - */ -function lineSegmentFeature(geojson, results) { - var coords = []; - var geometry = geojson.geometry; - if (geometry !== null) { - switch (geometry.type) { - case "Polygon": - coords = invariant_1.getCoords(geometry); - break; - case "LineString": - coords = [invariant_1.getCoords(geometry)]; - } - coords.forEach(function (coord) { - var segments = createSegments(coord, geojson.properties); - segments.forEach(function (segment) { - segment.id = results.length; - results.push(segment); - }); - }); - } -} -/** - * Create Segments from LineString coordinates - * - * @private - * @param {Array>} coords LineString coordinates - * @param {*} properties GeoJSON properties - * @returns {Array>} line segments - */ -function createSegments(coords, properties) { - var segments = []; - coords.reduce(function (previousCoords, currentCoords) { - var segment = helpers_1.lineString([previousCoords, currentCoords], properties); - segment.bbox = bbox(previousCoords, currentCoords); - segments.push(segment); - return currentCoords; - }); - return segments; -} -/** - * Create BBox between two coordinates (faster than @turf/bbox) - * - * @private - * @param {Array} coords1 Point coordinate - * @param {Array} coords2 Point coordinate - * @returns {BBox} [west, south, east, north] - */ -function bbox(coords1, coords2) { - var x1 = coords1[0]; - var y1 = coords1[1]; - var x2 = coords2[0]; - var y2 = coords2[1]; - var west = (x1 < x2) ? x1 : x2; - var south = (y1 < y2) ? y1 : y2; - var east = (x1 > x2) ? x1 : x2; - var north = (y1 > y2) ? y1 : y2; - return [west, south, east, north]; -} -exports.default = lineSegment; - -},{"@turf/helpers":123,"@turf/invariant":125,"@turf/meta":129}],129:[function(require,module,exports){ -arguments[4][122][0].apply(exports,arguments) -},{"@turf/helpers":123,"dup":122}],130:[function(require,module,exports){ -/** - * Callback for coordEach - * - * @private - * @callback coordEachCallback - * @param {[number, number]} currentCoords The current coordinates being processed. - * @param {number} currentIndex The index of the current element being processed in the - * array.Starts at index 0, if an initialValue is provided, and at index 1 otherwise. - */ - -/** - * Iterate over coordinates in any GeoJSON object, similar to Array.forEach() - * - * @name coordEach - * @param {Object} layer any GeoJSON object - * @param {Function} callback a method that takes (currentCoords, currentIndex) - * @param {boolean} [excludeWrapCoord=false] whether or not to include - * the final coordinate of LinearRings that wraps the ring in its iteration. - * @example - * var features = { - * "type": "FeatureCollection", - * "features": [ - * { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [26, 37] - * } - * }, - * { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [36, 53] - * } - * } - * ] - * }; - * turf.coordEach(features, function (currentCoords, currentIndex) { - * //=currentCoords - * //=currentIndex - * }); - */ -function coordEach(layer, callback, excludeWrapCoord) { - var i, j, k, g, l, geometry, stopG, coords, - geometryMaybeCollection, - wrapShrink = 0, - currentIndex = 0, - isGeometryCollection, - isFeatureCollection = layer.type === 'FeatureCollection', - isFeature = layer.type === 'Feature', - stop = isFeatureCollection ? layer.features.length : 1; - - // This logic may look a little weird. The reason why it is that way - // is because it's trying to be fast. GeoJSON supports multiple kinds - // of objects at its root: FeatureCollection, Features, Geometries. - // This function has the responsibility of handling all of them, and that - // means that some of the `for` loops you see below actually just don't apply - // to certain inputs. For instance, if you give this just a - // Point geometry, then both loops are short-circuited and all we do - // is gradually rename the input until it's called 'geometry'. - // - // This also aims to allocate as few resources as possible: just a - // few numbers and booleans, rather than any temporary arrays as would - // be required with the normalization approach. - for (i = 0; i < stop; i++) { - - geometryMaybeCollection = (isFeatureCollection ? layer.features[i].geometry : - (isFeature ? layer.geometry : layer)); - isGeometryCollection = geometryMaybeCollection.type === 'GeometryCollection'; - stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1; - - for (g = 0; g < stopG; g++) { - geometry = isGeometryCollection ? - geometryMaybeCollection.geometries[g] : geometryMaybeCollection; - coords = geometry.coordinates; - - wrapShrink = (excludeWrapCoord && - (geometry.type === 'Polygon' || geometry.type === 'MultiPolygon')) ? - 1 : 0; - - if (geometry.type === 'Point') { - callback(coords, currentIndex); - currentIndex++; - } else if (geometry.type === 'LineString' || geometry.type === 'MultiPoint') { - for (j = 0; j < coords.length; j++) { - callback(coords[j], currentIndex); - currentIndex++; - } - } else if (geometry.type === 'Polygon' || geometry.type === 'MultiLineString') { - for (j = 0; j < coords.length; j++) - for (k = 0; k < coords[j].length - wrapShrink; k++) { - callback(coords[j][k], currentIndex); - currentIndex++; - } - } else if (geometry.type === 'MultiPolygon') { - for (j = 0; j < coords.length; j++) - for (k = 0; k < coords[j].length; k++) - for (l = 0; l < coords[j][k].length - wrapShrink; l++) { - callback(coords[j][k][l], currentIndex); - currentIndex++; - } - } else if (geometry.type === 'GeometryCollection') { - for (j = 0; j < geometry.geometries.length; j++) - coordEach(geometry.geometries[j], callback, excludeWrapCoord); - } else { - throw new Error('Unknown Geometry Type'); - } - } - } -} -module.exports.coordEach = coordEach; - -/** - * Callback for coordReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @private - * @callback coordReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {[number, number]} currentCoords The current coordinate being processed. - * @param {number} currentIndex The index of the current element being processed in the - * array.Starts at index 0, if an initialValue is provided, and at index 1 otherwise. - */ - -/** - * Reduce coordinates in any GeoJSON object, similar to Array.reduce() - * - * @name coordReduce - * @param {Object} layer any GeoJSON object - * @param {Function} callback a method that takes (previousValue, currentCoords, currentIndex) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @param {boolean} [excludeWrapCoord=false] whether or not to include - * the final coordinate of LinearRings that wraps the ring in its iteration. - * @returns {*} The value that results from the reduction. - * @example - * var features = { - * "type": "FeatureCollection", - * "features": [ - * { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [26, 37] - * } - * }, - * { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [36, 53] - * } - * } - * ] - * }; - * turf.coordReduce(features, function (previousValue, currentCoords, currentIndex) { - * //=previousValue - * //=currentCoords - * //=currentIndex - * return currentCoords; - * }); - */ -function coordReduce(layer, callback, initialValue, excludeWrapCoord) { - var previousValue = initialValue; - coordEach(layer, function (currentCoords, currentIndex) { - if (currentIndex === 0 && initialValue === undefined) { - previousValue = currentCoords; - } else { - previousValue = callback(previousValue, currentCoords, currentIndex); - } - }, excludeWrapCoord); - return previousValue; -} -module.exports.coordReduce = coordReduce; - -/** - * Callback for propEach - * - * @private - * @callback propEachCallback - * @param {*} currentProperties The current properties being processed. - * @param {number} currentIndex The index of the current element being processed in the - * array.Starts at index 0, if an initialValue is provided, and at index 1 otherwise. - */ - -/** - * Iterate over properties in any GeoJSON object, similar to Array.forEach() - * - * @name propEach - * @param {Object} layer any GeoJSON object - * @param {Function} callback a method that takes (currentProperties, currentIndex) - * @example - * var features = { - * "type": "FeatureCollection", - * "features": [ - * { - * "type": "Feature", - * "properties": {"foo": "bar"}, - * "geometry": { - * "type": "Point", - * "coordinates": [26, 37] - * } - * }, - * { - * "type": "Feature", - * "properties": {"hello": "world"}, - * "geometry": { - * "type": "Point", - * "coordinates": [36, 53] - * } - * } - * ] - * }; - * turf.propEach(features, function (currentProperties, currentIndex) { - * //=currentProperties - * //=currentIndex - * }); - */ -function propEach(layer, callback) { - var i; - switch (layer.type) { - case 'FeatureCollection': - for (i = 0; i < layer.features.length; i++) { - callback(layer.features[i].properties, i); - } - break; - case 'Feature': - callback(layer.properties, 0); - break; - } -} -module.exports.propEach = propEach; - - -/** - * Callback for propReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @private - * @callback propReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {*} currentProperties The current properties being processed. - * @param {number} currentIndex The index of the current element being processed in the - * array.Starts at index 0, if an initialValue is provided, and at index 1 otherwise. - */ - -/** - * Reduce properties in any GeoJSON object into a single value, - * similar to how Array.reduce works. However, in this case we lazily run - * the reduction, so an array of all properties is unnecessary. - * - * @name propReduce - * @param {Object} layer any GeoJSON object - * @param {Function} callback a method that takes (previousValue, currentProperties, currentIndex) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @returns {*} The value that results from the reduction. - * @example - * var features = { - * "type": "FeatureCollection", - * "features": [ - * { - * "type": "Feature", - * "properties": {"foo": "bar"}, - * "geometry": { - * "type": "Point", - * "coordinates": [26, 37] - * } - * }, - * { - * "type": "Feature", - * "properties": {"hello": "world"}, - * "geometry": { - * "type": "Point", - * "coordinates": [36, 53] - * } - * } - * ] - * }; - * turf.propReduce(features, function (previousValue, currentProperties, currentIndex) { - * //=previousValue - * //=currentProperties - * //=currentIndex - * return currentProperties - * }); - */ -function propReduce(layer, callback, initialValue) { - var previousValue = initialValue; - propEach(layer, function (currentProperties, currentIndex) { - if (currentIndex === 0 && initialValue === undefined) { - previousValue = currentProperties; - } else { - previousValue = callback(previousValue, currentProperties, currentIndex); - } - }); - return previousValue; -} -module.exports.propReduce = propReduce; - -/** - * Callback for featureEach - * - * @private - * @callback featureEachCallback - * @param {Feature} currentFeature The current feature being processed. - * @param {number} currentIndex The index of the current element being processed in the - * array.Starts at index 0, if an initialValue is provided, and at index 1 otherwise. - */ - -/** - * Iterate over features in any GeoJSON object, similar to - * Array.forEach. - * - * @name featureEach - * @param {Object} layer any GeoJSON object - * @param {Function} callback a method that takes (currentFeature, currentIndex) - * @example - * var features = { - * "type": "FeatureCollection", - * "features": [ - * { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [26, 37] - * } - * }, - * { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [36, 53] - * } - * } - * ] - * }; - * turf.featureEach(features, function (currentFeature, currentIndex) { - * //=currentFeature - * //=currentIndex - * }); - */ -function featureEach(layer, callback) { - if (layer.type === 'Feature') { - callback(layer, 0); - } else if (layer.type === 'FeatureCollection') { - for (var i = 0; i < layer.features.length; i++) { - callback(layer.features[i], i); - } - } -} -module.exports.featureEach = featureEach; - -/** - * Callback for featureReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @private - * @callback featureReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {Feature} currentFeature The current Feature being processed. - * @param {number} currentIndex The index of the current element being processed in the - * array.Starts at index 0, if an initialValue is provided, and at index 1 otherwise. - */ - -/** - * Reduce features in any GeoJSON object, similar to Array.reduce(). - * - * @name featureReduce - * @param {Object} layer any GeoJSON object - * @param {Function} callback a method that takes (previousValue, currentFeature, currentIndex) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @returns {*} The value that results from the reduction. - * @example - * var features = { - * "type": "FeatureCollection", - * "features": [ - * { - * "type": "Feature", - * "properties": {"foo": "bar"}, - * "geometry": { - * "type": "Point", - * "coordinates": [26, 37] - * } - * }, - * { - * "type": "Feature", - * "properties": {"hello": "world"}, - * "geometry": { - * "type": "Point", - * "coordinates": [36, 53] - * } - * } - * ] - * }; - * turf.featureReduce(features, function (previousValue, currentFeature, currentIndex) { - * //=previousValue - * //=currentFeature - * //=currentIndex - * return currentFeature - * }); - */ -function featureReduce(layer, callback, initialValue) { - var previousValue = initialValue; - featureEach(layer, function (currentFeature, currentIndex) { - if (currentIndex === 0 && initialValue === undefined) { - previousValue = currentFeature; - } else { - previousValue = callback(previousValue, currentFeature, currentIndex); - } - }); - return previousValue; -} -module.exports.featureReduce = featureReduce; - -/** - * Get all coordinates from any GeoJSON object. - * - * @name coordAll - * @param {Object} layer any GeoJSON object - * @returns {Array>} coordinate position array - * @example - * var features = { - * "type": "FeatureCollection", - * "features": [ - * { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [26, 37] - * } - * }, - * { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [36, 53] - * } - * } - * ] - * }; - * var coords = turf.coordAll(features); - * //=coords - */ -function coordAll(layer) { - var coords = []; - coordEach(layer, function (coord) { - coords.push(coord); - }); - return coords; -} -module.exports.coordAll = coordAll; - -/** - * Iterate over each geometry in any GeoJSON object, similar to Array.forEach() - * - * @name geomEach - * @param {Object} layer any GeoJSON object - * @param {Function} callback a method that takes (currentGeometry, currentIndex) - * @example - * var features = { - * "type": "FeatureCollection", - * "features": [ - * { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [26, 37] - * } - * }, - * { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [36, 53] - * } - * } - * ] - * }; - * turf.geomEach(features, function (currentGeometry, currentIndex) { - * //=currentGeometry - * //=currentIndex - * }); - */ -function geomEach(layer, callback) { - var i, j, g, geometry, stopG, - geometryMaybeCollection, - isGeometryCollection, - currentIndex = 0, - isFeatureCollection = layer.type === 'FeatureCollection', - isFeature = layer.type === 'Feature', - stop = isFeatureCollection ? layer.features.length : 1; - - // This logic may look a little weird. The reason why it is that way - // is because it's trying to be fast. GeoJSON supports multiple kinds - // of objects at its root: FeatureCollection, Features, Geometries. - // This function has the responsibility of handling all of them, and that - // means that some of the `for` loops you see below actually just don't apply - // to certain inputs. For instance, if you give this just a - // Point geometry, then both loops are short-circuited and all we do - // is gradually rename the input until it's called 'geometry'. - // - // This also aims to allocate as few resources as possible: just a - // few numbers and booleans, rather than any temporary arrays as would - // be required with the normalization approach. - for (i = 0; i < stop; i++) { - - geometryMaybeCollection = (isFeatureCollection ? layer.features[i].geometry : - (isFeature ? layer.geometry : layer)); - isGeometryCollection = geometryMaybeCollection.type === 'GeometryCollection'; - stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1; - - for (g = 0; g < stopG; g++) { - geometry = isGeometryCollection ? - geometryMaybeCollection.geometries[g] : geometryMaybeCollection; - - if (geometry.type === 'Point' || - geometry.type === 'LineString' || - geometry.type === 'MultiPoint' || - geometry.type === 'Polygon' || - geometry.type === 'MultiLineString' || - geometry.type === 'MultiPolygon') { - callback(geometry, currentIndex); - currentIndex++; - } else if (geometry.type === 'GeometryCollection') { - for (j = 0; j < geometry.geometries.length; j++) { - callback(geometry.geometries[j], currentIndex); - currentIndex++; - } - } else { - throw new Error('Unknown Geometry Type'); - } - } - } -} -module.exports.geomEach = geomEach; - -/** - * Callback for geomReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @private - * @callback geomReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {*} currentGeometry The current Feature being processed. - * @param {number} currentIndex The index of the current element being processed in the - * array.Starts at index 0, if an initialValue is provided, and at index 1 otherwise. - */ - -/** - * Reduce geometry in any GeoJSON object, similar to Array.reduce(). - * - * @name geomReduce - * @param {Object} layer any GeoJSON object - * @param {Function} callback a method that takes (previousValue, currentGeometry, currentIndex) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @returns {*} The value that results from the reduction. - * @example - * var features = { - * "type": "FeatureCollection", - * "features": [ - * { - * "type": "Feature", - * "properties": {"foo": "bar"}, - * "geometry": { - * "type": "Point", - * "coordinates": [26, 37] - * } - * }, - * { - * "type": "Feature", - * "properties": {"hello": "world"}, - * "geometry": { - * "type": "Point", - * "coordinates": [36, 53] - * } - * } - * ] - * }; - * turf.geomReduce(features, function (previousValue, currentGeometry, currentIndex) { - * //=previousValue - * //=currentGeometry - * //=currentIndex - * return currentGeometry - * }); - */ -function geomReduce(layer, callback, initialValue) { - var previousValue = initialValue; - geomEach(layer, function (currentGeometry, currentIndex) { - if (currentIndex === 0 && initialValue === undefined) { - previousValue = currentGeometry; - } else { - previousValue = callback(previousValue, currentGeometry, currentIndex); - } - }); - return previousValue; -} -module.exports.geomReduce = geomReduce; - -},{}],131:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var helpers_1 = require("@turf/helpers"); -var invariant_1 = require("@turf/invariant"); -/** - * Converts a {@link Polygon} to {@link LineString|(Multi)LineString} or {@link MultiPolygon} to a - * {@link FeatureCollection} of {@link LineString|(Multi)LineString}. - * - * @name polygonToLine - * @param {Feature} poly Feature to convert - * @param {Object} [options={}] Optional parameters - * @param {Object} [options.properties={}] translates GeoJSON properties to Feature - * @returns {FeatureCollection|Feature} converted (Multi)Polygon to (Multi)LineString - * @example - * var poly = turf.polygon([[[125, -30], [145, -30], [145, -20], [125, -20], [125, -30]]]); - * - * var line = turf.polygonToLine(poly); - * - * //addToMap - * var addToMap = [line]; - */ -function default_1(poly, options) { - if (options === void 0) { options = {}; } - var geom = invariant_1.getGeom(poly); - if (!options.properties && poly.type === "Feature") { - options.properties = poly.properties; - } - switch (geom.type) { - case "Polygon": return polygonToLine(geom, options); - case "MultiPolygon": return multiPolygonToLine(geom, options); - default: throw new Error("invalid poly"); - } -} -exports.default = default_1; -/** - * @private - */ -function polygonToLine(poly, options) { - if (options === void 0) { options = {}; } - var geom = invariant_1.getGeom(poly); - var type = geom.type; - var coords = geom.coordinates; - var properties = options.properties ? options.properties : poly.type === "Feature" ? poly.properties : {}; - return coordsToLine(coords, properties); -} -exports.polygonToLine = polygonToLine; -/** - * @private - */ -function multiPolygonToLine(multiPoly, options) { - if (options === void 0) { options = {}; } - var geom = invariant_1.getGeom(multiPoly); - var type = geom.type; - var coords = geom.coordinates; - var properties = options.properties ? options.properties : - multiPoly.type === "Feature" ? multiPoly.properties : {}; - var lines = []; - coords.forEach(function (coord) { - lines.push(coordsToLine(coord, properties)); - }); - return helpers_1.featureCollection(lines); -} -exports.multiPolygonToLine = multiPolygonToLine; -/** - * @private - */ -function coordsToLine(coords, properties) { - if (coords.length > 1) { - return helpers_1.multiLineString(coords, properties); - } - return helpers_1.lineString(coords[0], properties); -} -exports.coordsToLine = coordsToLine; - -},{"@turf/helpers":123,"@turf/invariant":125}],132:[function(require,module,exports){ -var asn1 = exports; - -asn1.bignum = require('bn.js'); - -asn1.define = require('./asn1/api').define; -asn1.base = require('./asn1/base'); -asn1.constants = require('./asn1/constants'); -asn1.decoders = require('./asn1/decoders'); -asn1.encoders = require('./asn1/encoders'); - -},{"./asn1/api":133,"./asn1/base":135,"./asn1/constants":139,"./asn1/decoders":141,"./asn1/encoders":144,"bn.js":147}],133:[function(require,module,exports){ -var asn1 = require('../asn1'); -var inherits = require('inherits'); - -var api = exports; - -api.define = function define(name, body) { - return new Entity(name, body); -}; - -function Entity(name, body) { - this.name = name; - this.body = body; - - this.decoders = {}; - this.encoders = {}; -}; - -Entity.prototype._createNamed = function createNamed(base) { - var named; - try { - named = require('vm').runInThisContext( - '(function ' + this.name + '(entity) {\n' + - ' this._initNamed(entity);\n' + - '})' - ); - } catch (e) { - named = function (entity) { - this._initNamed(entity); - }; - } - inherits(named, base); - named.prototype._initNamed = function initnamed(entity) { - base.call(this, entity); - }; - - return new named(this); -}; - -Entity.prototype._getDecoder = function _getDecoder(enc) { - enc = enc || 'der'; - // Lazily create decoder - if (!this.decoders.hasOwnProperty(enc)) - this.decoders[enc] = this._createNamed(asn1.decoders[enc]); - return this.decoders[enc]; -}; - -Entity.prototype.decode = function decode(data, enc, options) { - return this._getDecoder(enc).decode(data, options); -}; - -Entity.prototype._getEncoder = function _getEncoder(enc) { - enc = enc || 'der'; - // Lazily create encoder - if (!this.encoders.hasOwnProperty(enc)) - this.encoders[enc] = this._createNamed(asn1.encoders[enc]); - return this.encoders[enc]; -}; - -Entity.prototype.encode = function encode(data, enc, /* internal */ reporter) { - return this._getEncoder(enc).encode(data, reporter); -}; - -},{"../asn1":132,"inherits":262,"vm":344}],134:[function(require,module,exports){ -var inherits = require('inherits'); -var Reporter = require('../base').Reporter; -var Buffer = require('buffer').Buffer; - -function DecoderBuffer(base, options) { - Reporter.call(this, options); - if (!Buffer.isBuffer(base)) { - this.error('Input not Buffer'); - return; - } - - this.base = base; - this.offset = 0; - this.length = base.length; -} -inherits(DecoderBuffer, Reporter); -exports.DecoderBuffer = DecoderBuffer; - -DecoderBuffer.prototype.save = function save() { - return { offset: this.offset, reporter: Reporter.prototype.save.call(this) }; -}; - -DecoderBuffer.prototype.restore = function restore(save) { - // Return skipped data - var res = new DecoderBuffer(this.base); - res.offset = save.offset; - res.length = this.offset; - - this.offset = save.offset; - Reporter.prototype.restore.call(this, save.reporter); - - return res; -}; - -DecoderBuffer.prototype.isEmpty = function isEmpty() { - return this.offset === this.length; -}; - -DecoderBuffer.prototype.readUInt8 = function readUInt8(fail) { - if (this.offset + 1 <= this.length) - return this.base.readUInt8(this.offset++, true); - else - return this.error(fail || 'DecoderBuffer overrun'); -} - -DecoderBuffer.prototype.skip = function skip(bytes, fail) { - if (!(this.offset + bytes <= this.length)) - return this.error(fail || 'DecoderBuffer overrun'); - - var res = new DecoderBuffer(this.base); - - // Share reporter state - res._reporterState = this._reporterState; - - res.offset = this.offset; - res.length = this.offset + bytes; - this.offset += bytes; - return res; -} - -DecoderBuffer.prototype.raw = function raw(save) { - return this.base.slice(save ? save.offset : this.offset, this.length); -} - -function EncoderBuffer(value, reporter) { - if (Array.isArray(value)) { - this.length = 0; - this.value = value.map(function(item) { - if (!(item instanceof EncoderBuffer)) - item = new EncoderBuffer(item, reporter); - this.length += item.length; - return item; - }, this); - } else if (typeof value === 'number') { - if (!(0 <= value && value <= 0xff)) - return reporter.error('non-byte EncoderBuffer value'); - this.value = value; - this.length = 1; - } else if (typeof value === 'string') { - this.value = value; - this.length = Buffer.byteLength(value); - } else if (Buffer.isBuffer(value)) { - this.value = value; - this.length = value.length; - } else { - return reporter.error('Unsupported type: ' + typeof value); - } -} -exports.EncoderBuffer = EncoderBuffer; - -EncoderBuffer.prototype.join = function join(out, offset) { - if (!out) - out = new Buffer(this.length); - if (!offset) - offset = 0; - - if (this.length === 0) - return out; - - if (Array.isArray(this.value)) { - this.value.forEach(function(item) { - item.join(out, offset); - offset += item.length; - }); - } else { - if (typeof this.value === 'number') - out[offset] = this.value; - else if (typeof this.value === 'string') - out.write(this.value, offset); - else if (Buffer.isBuffer(this.value)) - this.value.copy(out, offset); - offset += this.length; - } - - return out; -}; - -},{"../base":135,"buffer":182,"inherits":262}],135:[function(require,module,exports){ -var base = exports; - -base.Reporter = require('./reporter').Reporter; -base.DecoderBuffer = require('./buffer').DecoderBuffer; -base.EncoderBuffer = require('./buffer').EncoderBuffer; -base.Node = require('./node'); - -},{"./buffer":134,"./node":136,"./reporter":137}],136:[function(require,module,exports){ -var Reporter = require('../base').Reporter; -var EncoderBuffer = require('../base').EncoderBuffer; -var DecoderBuffer = require('../base').DecoderBuffer; -var assert = require('minimalistic-assert'); - -// Supported tags -var tags = [ - 'seq', 'seqof', 'set', 'setof', 'objid', 'bool', - 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc', - 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str', - 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr' -]; - -// Public methods list -var methods = [ - 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice', - 'any', 'contains' -].concat(tags); - -// Overrided methods list -var overrided = [ - '_peekTag', '_decodeTag', '_use', - '_decodeStr', '_decodeObjid', '_decodeTime', - '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList', - - '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime', - '_encodeNull', '_encodeInt', '_encodeBool' -]; - -function Node(enc, parent) { - var state = {}; - this._baseState = state; - - state.enc = enc; - - state.parent = parent || null; - state.children = null; - - // State - state.tag = null; - state.args = null; - state.reverseArgs = null; - state.choice = null; - state.optional = false; - state.any = false; - state.obj = false; - state.use = null; - state.useDecoder = null; - state.key = null; - state['default'] = null; - state.explicit = null; - state.implicit = null; - state.contains = null; - - // Should create new instance on each method - if (!state.parent) { - state.children = []; - this._wrap(); - } -} -module.exports = Node; - -var stateProps = [ - 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice', - 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit', - 'implicit', 'contains' -]; - -Node.prototype.clone = function clone() { - var state = this._baseState; - var cstate = {}; - stateProps.forEach(function(prop) { - cstate[prop] = state[prop]; - }); - var res = new this.constructor(cstate.parent); - res._baseState = cstate; - return res; -}; - -Node.prototype._wrap = function wrap() { - var state = this._baseState; - methods.forEach(function(method) { - this[method] = function _wrappedMethod() { - var clone = new this.constructor(this); - state.children.push(clone); - return clone[method].apply(clone, arguments); - }; - }, this); -}; - -Node.prototype._init = function init(body) { - var state = this._baseState; - - assert(state.parent === null); - body.call(this); - - // Filter children - state.children = state.children.filter(function(child) { - return child._baseState.parent === this; - }, this); - assert.equal(state.children.length, 1, 'Root node can have only one child'); -}; - -Node.prototype._useArgs = function useArgs(args) { - var state = this._baseState; - - // Filter children and args - var children = args.filter(function(arg) { - return arg instanceof this.constructor; - }, this); - args = args.filter(function(arg) { - return !(arg instanceof this.constructor); - }, this); - - if (children.length !== 0) { - assert(state.children === null); - state.children = children; - - // Replace parent to maintain backward link - children.forEach(function(child) { - child._baseState.parent = this; - }, this); - } - if (args.length !== 0) { - assert(state.args === null); - state.args = args; - state.reverseArgs = args.map(function(arg) { - if (typeof arg !== 'object' || arg.constructor !== Object) - return arg; - - var res = {}; - Object.keys(arg).forEach(function(key) { - if (key == (key | 0)) - key |= 0; - var value = arg[key]; - res[value] = key; - }); - return res; - }); - } -}; - -// -// Overrided methods -// - -overrided.forEach(function(method) { - Node.prototype[method] = function _overrided() { - var state = this._baseState; - throw new Error(method + ' not implemented for encoding: ' + state.enc); - }; -}); - -// -// Public methods -// - -tags.forEach(function(tag) { - Node.prototype[tag] = function _tagMethod() { - var state = this._baseState; - var args = Array.prototype.slice.call(arguments); - - assert(state.tag === null); - state.tag = tag; - - this._useArgs(args); - - return this; - }; -}); - -Node.prototype.use = function use(item) { - assert(item); - var state = this._baseState; - - assert(state.use === null); - state.use = item; - - return this; -}; - -Node.prototype.optional = function optional() { - var state = this._baseState; - - state.optional = true; - - return this; -}; - -Node.prototype.def = function def(val) { - var state = this._baseState; - - assert(state['default'] === null); - state['default'] = val; - state.optional = true; - - return this; -}; - -Node.prototype.explicit = function explicit(num) { - var state = this._baseState; - - assert(state.explicit === null && state.implicit === null); - state.explicit = num; - - return this; -}; - -Node.prototype.implicit = function implicit(num) { - var state = this._baseState; - - assert(state.explicit === null && state.implicit === null); - state.implicit = num; - - return this; -}; - -Node.prototype.obj = function obj() { - var state = this._baseState; - var args = Array.prototype.slice.call(arguments); - - state.obj = true; - - if (args.length !== 0) - this._useArgs(args); - - return this; -}; - -Node.prototype.key = function key(newKey) { - var state = this._baseState; - - assert(state.key === null); - state.key = newKey; - - return this; -}; - -Node.prototype.any = function any() { - var state = this._baseState; - - state.any = true; - - return this; -}; - -Node.prototype.choice = function choice(obj) { - var state = this._baseState; - - assert(state.choice === null); - state.choice = obj; - this._useArgs(Object.keys(obj).map(function(key) { - return obj[key]; - })); - - return this; -}; - -Node.prototype.contains = function contains(item) { - var state = this._baseState; - - assert(state.use === null); - state.contains = item; - - return this; -}; - -// -// Decoding -// - -Node.prototype._decode = function decode(input, options) { - var state = this._baseState; - - // Decode root node - if (state.parent === null) - return input.wrapResult(state.children[0]._decode(input, options)); - - var result = state['default']; - var present = true; - - var prevKey = null; - if (state.key !== null) - prevKey = input.enterKey(state.key); - - // Check if tag is there - if (state.optional) { - var tag = null; - if (state.explicit !== null) - tag = state.explicit; - else if (state.implicit !== null) - tag = state.implicit; - else if (state.tag !== null) - tag = state.tag; - - if (tag === null && !state.any) { - // Trial and Error - var save = input.save(); - try { - if (state.choice === null) - this._decodeGeneric(state.tag, input, options); - else - this._decodeChoice(input, options); - present = true; - } catch (e) { - present = false; - } - input.restore(save); - } else { - present = this._peekTag(input, tag, state.any); - - if (input.isError(present)) - return present; - } - } - - // Push object on stack - var prevObj; - if (state.obj && present) - prevObj = input.enterObject(); - - if (present) { - // Unwrap explicit values - if (state.explicit !== null) { - var explicit = this._decodeTag(input, state.explicit); - if (input.isError(explicit)) - return explicit; - input = explicit; - } - - var start = input.offset; - - // Unwrap implicit and normal values - if (state.use === null && state.choice === null) { - if (state.any) - var save = input.save(); - var body = this._decodeTag( - input, - state.implicit !== null ? state.implicit : state.tag, - state.any - ); - if (input.isError(body)) - return body; - - if (state.any) - result = input.raw(save); - else - input = body; - } - - if (options && options.track && state.tag !== null) - options.track(input.path(), start, input.length, 'tagged'); - - if (options && options.track && state.tag !== null) - options.track(input.path(), input.offset, input.length, 'content'); - - // Select proper method for tag - if (state.any) - result = result; - else if (state.choice === null) - result = this._decodeGeneric(state.tag, input, options); - else - result = this._decodeChoice(input, options); - - if (input.isError(result)) - return result; - - // Decode children - if (!state.any && state.choice === null && state.children !== null) { - state.children.forEach(function decodeChildren(child) { - // NOTE: We are ignoring errors here, to let parser continue with other - // parts of encoded data - child._decode(input, options); - }); - } - - // Decode contained/encoded by schema, only in bit or octet strings - if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) { - var data = new DecoderBuffer(result); - result = this._getUse(state.contains, input._reporterState.obj) - ._decode(data, options); - } - } - - // Pop object - if (state.obj && present) - result = input.leaveObject(prevObj); - - // Set key - if (state.key !== null && (result !== null || present === true)) - input.leaveKey(prevKey, state.key, result); - else if (prevKey !== null) - input.exitKey(prevKey); - - return result; -}; - -Node.prototype._decodeGeneric = function decodeGeneric(tag, input, options) { - var state = this._baseState; - - if (tag === 'seq' || tag === 'set') - return null; - if (tag === 'seqof' || tag === 'setof') - return this._decodeList(input, tag, state.args[0], options); - else if (/str$/.test(tag)) - return this._decodeStr(input, tag, options); - else if (tag === 'objid' && state.args) - return this._decodeObjid(input, state.args[0], state.args[1], options); - else if (tag === 'objid') - return this._decodeObjid(input, null, null, options); - else if (tag === 'gentime' || tag === 'utctime') - return this._decodeTime(input, tag, options); - else if (tag === 'null_') - return this._decodeNull(input, options); - else if (tag === 'bool') - return this._decodeBool(input, options); - else if (tag === 'objDesc') - return this._decodeStr(input, tag, options); - else if (tag === 'int' || tag === 'enum') - return this._decodeInt(input, state.args && state.args[0], options); - - if (state.use !== null) { - return this._getUse(state.use, input._reporterState.obj) - ._decode(input, options); - } else { - return input.error('unknown tag: ' + tag); - } -}; - -Node.prototype._getUse = function _getUse(entity, obj) { - - var state = this._baseState; - // Create altered use decoder if implicit is set - state.useDecoder = this._use(entity, obj); - assert(state.useDecoder._baseState.parent === null); - state.useDecoder = state.useDecoder._baseState.children[0]; - if (state.implicit !== state.useDecoder._baseState.implicit) { - state.useDecoder = state.useDecoder.clone(); - state.useDecoder._baseState.implicit = state.implicit; - } - return state.useDecoder; -}; - -Node.prototype._decodeChoice = function decodeChoice(input, options) { - var state = this._baseState; - var result = null; - var match = false; - - Object.keys(state.choice).some(function(key) { - var save = input.save(); - var node = state.choice[key]; - try { - var value = node._decode(input, options); - if (input.isError(value)) - return false; - - result = { type: key, value: value }; - match = true; - } catch (e) { - input.restore(save); - return false; - } - return true; - }, this); - - if (!match) - return input.error('Choice not matched'); - - return result; -}; - -// -// Encoding -// - -Node.prototype._createEncoderBuffer = function createEncoderBuffer(data) { - return new EncoderBuffer(data, this.reporter); -}; - -Node.prototype._encode = function encode(data, reporter, parent) { - var state = this._baseState; - if (state['default'] !== null && state['default'] === data) - return; - - var result = this._encodeValue(data, reporter, parent); - if (result === undefined) - return; - - if (this._skipDefault(result, reporter, parent)) - return; - - return result; -}; - -Node.prototype._encodeValue = function encode(data, reporter, parent) { - var state = this._baseState; - - // Decode root node - if (state.parent === null) - return state.children[0]._encode(data, reporter || new Reporter()); - - var result = null; - - // Set reporter to share it with a child class - this.reporter = reporter; - - // Check if data is there - if (state.optional && data === undefined) { - if (state['default'] !== null) - data = state['default'] - else - return; - } - - // Encode children first - var content = null; - var primitive = false; - if (state.any) { - // Anything that was given is translated to buffer - result = this._createEncoderBuffer(data); - } else if (state.choice) { - result = this._encodeChoice(data, reporter); - } else if (state.contains) { - content = this._getUse(state.contains, parent)._encode(data, reporter); - primitive = true; - } else if (state.children) { - content = state.children.map(function(child) { - if (child._baseState.tag === 'null_') - return child._encode(null, reporter, data); - - if (child._baseState.key === null) - return reporter.error('Child should have a key'); - var prevKey = reporter.enterKey(child._baseState.key); - - if (typeof data !== 'object') - return reporter.error('Child expected, but input is not object'); - - var res = child._encode(data[child._baseState.key], reporter, data); - reporter.leaveKey(prevKey); - - return res; - }, this).filter(function(child) { - return child; - }); - content = this._createEncoderBuffer(content); - } else { - if (state.tag === 'seqof' || state.tag === 'setof') { - // TODO(indutny): this should be thrown on DSL level - if (!(state.args && state.args.length === 1)) - return reporter.error('Too many args for : ' + state.tag); - - if (!Array.isArray(data)) - return reporter.error('seqof/setof, but data is not Array'); - - var child = this.clone(); - child._baseState.implicit = null; - content = this._createEncoderBuffer(data.map(function(item) { - var state = this._baseState; - - return this._getUse(state.args[0], data)._encode(item, reporter); - }, child)); - } else if (state.use !== null) { - result = this._getUse(state.use, parent)._encode(data, reporter); - } else { - content = this._encodePrimitive(state.tag, data); - primitive = true; - } - } - - // Encode data itself - var result; - if (!state.any && state.choice === null) { - var tag = state.implicit !== null ? state.implicit : state.tag; - var cls = state.implicit === null ? 'universal' : 'context'; - - if (tag === null) { - if (state.use === null) - reporter.error('Tag could be omitted only for .use()'); - } else { - if (state.use === null) - result = this._encodeComposite(tag, primitive, cls, content); - } - } - - // Wrap in explicit - if (state.explicit !== null) - result = this._encodeComposite(state.explicit, false, 'context', result); - - return result; -}; - -Node.prototype._encodeChoice = function encodeChoice(data, reporter) { - var state = this._baseState; - - var node = state.choice[data.type]; - if (!node) { - assert( - false, - data.type + ' not found in ' + - JSON.stringify(Object.keys(state.choice))); - } - return node._encode(data.value, reporter); -}; - -Node.prototype._encodePrimitive = function encodePrimitive(tag, data) { - var state = this._baseState; - - if (/str$/.test(tag)) - return this._encodeStr(data, tag); - else if (tag === 'objid' && state.args) - return this._encodeObjid(data, state.reverseArgs[0], state.args[1]); - else if (tag === 'objid') - return this._encodeObjid(data, null, null); - else if (tag === 'gentime' || tag === 'utctime') - return this._encodeTime(data, tag); - else if (tag === 'null_') - return this._encodeNull(); - else if (tag === 'int' || tag === 'enum') - return this._encodeInt(data, state.args && state.reverseArgs[0]); - else if (tag === 'bool') - return this._encodeBool(data); - else if (tag === 'objDesc') - return this._encodeStr(data, tag); - else - throw new Error('Unsupported tag: ' + tag); -}; - -Node.prototype._isNumstr = function isNumstr(str) { - return /^[0-9 ]*$/.test(str); -}; - -Node.prototype._isPrintstr = function isPrintstr(str) { - return /^[A-Za-z0-9 '\(\)\+,\-\.\/:=\?]*$/.test(str); -}; - -},{"../base":135,"minimalistic-assert":268}],137:[function(require,module,exports){ -var inherits = require('inherits'); - -function Reporter(options) { - this._reporterState = { - obj: null, - path: [], - options: options || {}, - errors: [] - }; -} -exports.Reporter = Reporter; - -Reporter.prototype.isError = function isError(obj) { - return obj instanceof ReporterError; -}; - -Reporter.prototype.save = function save() { - var state = this._reporterState; - - return { obj: state.obj, pathLen: state.path.length }; -}; - -Reporter.prototype.restore = function restore(data) { - var state = this._reporterState; - - state.obj = data.obj; - state.path = state.path.slice(0, data.pathLen); -}; - -Reporter.prototype.enterKey = function enterKey(key) { - return this._reporterState.path.push(key); -}; - -Reporter.prototype.exitKey = function exitKey(index) { - var state = this._reporterState; - - state.path = state.path.slice(0, index - 1); -}; - -Reporter.prototype.leaveKey = function leaveKey(index, key, value) { - var state = this._reporterState; - - this.exitKey(index); - if (state.obj !== null) - state.obj[key] = value; -}; - -Reporter.prototype.path = function path() { - return this._reporterState.path.join('/'); -}; - -Reporter.prototype.enterObject = function enterObject() { - var state = this._reporterState; - - var prev = state.obj; - state.obj = {}; - return prev; -}; - -Reporter.prototype.leaveObject = function leaveObject(prev) { - var state = this._reporterState; - - var now = state.obj; - state.obj = prev; - return now; -}; - -Reporter.prototype.error = function error(msg) { - var err; - var state = this._reporterState; - - var inherited = msg instanceof ReporterError; - if (inherited) { - err = msg; - } else { - err = new ReporterError(state.path.map(function(elem) { - return '[' + JSON.stringify(elem) + ']'; - }).join(''), msg.message || msg, msg.stack); - } - - if (!state.options.partial) - throw err; - - if (!inherited) - state.errors.push(err); - - return err; -}; - -Reporter.prototype.wrapResult = function wrapResult(result) { - var state = this._reporterState; - if (!state.options.partial) - return result; - - return { - result: this.isError(result) ? null : result, - errors: state.errors - }; -}; - -function ReporterError(path, msg) { - this.path = path; - this.rethrow(msg); -}; -inherits(ReporterError, Error); - -ReporterError.prototype.rethrow = function rethrow(msg) { - this.message = msg + ' at: ' + (this.path || '(shallow)'); - if (Error.captureStackTrace) - Error.captureStackTrace(this, ReporterError); - - if (!this.stack) { - try { - // IE only adds stack when thrown - throw new Error(this.message); - } catch (e) { - this.stack = e.stack; - } - } - return this; -}; - -},{"inherits":262}],138:[function(require,module,exports){ -var constants = require('../constants'); - -exports.tagClass = { - 0: 'universal', - 1: 'application', - 2: 'context', - 3: 'private' -}; -exports.tagClassByName = constants._reverse(exports.tagClass); - -exports.tag = { - 0x00: 'end', - 0x01: 'bool', - 0x02: 'int', - 0x03: 'bitstr', - 0x04: 'octstr', - 0x05: 'null_', - 0x06: 'objid', - 0x07: 'objDesc', - 0x08: 'external', - 0x09: 'real', - 0x0a: 'enum', - 0x0b: 'embed', - 0x0c: 'utf8str', - 0x0d: 'relativeOid', - 0x10: 'seq', - 0x11: 'set', - 0x12: 'numstr', - 0x13: 'printstr', - 0x14: 't61str', - 0x15: 'videostr', - 0x16: 'ia5str', - 0x17: 'utctime', - 0x18: 'gentime', - 0x19: 'graphstr', - 0x1a: 'iso646str', - 0x1b: 'genstr', - 0x1c: 'unistr', - 0x1d: 'charstr', - 0x1e: 'bmpstr' -}; -exports.tagByName = constants._reverse(exports.tag); - -},{"../constants":139}],139:[function(require,module,exports){ -var constants = exports; - -// Helper -constants._reverse = function reverse(map) { - var res = {}; - - Object.keys(map).forEach(function(key) { - // Convert key to integer if it is stringified - if ((key | 0) == key) - key = key | 0; - - var value = map[key]; - res[value] = key; - }); - - return res; -}; - -constants.der = require('./der'); - -},{"./der":138}],140:[function(require,module,exports){ -var inherits = require('inherits'); - -var asn1 = require('../../asn1'); -var base = asn1.base; -var bignum = asn1.bignum; - -// Import DER constants -var der = asn1.constants.der; - -function DERDecoder(entity) { - this.enc = 'der'; - this.name = entity.name; - this.entity = entity; - - // Construct base tree - this.tree = new DERNode(); - this.tree._init(entity.body); -}; -module.exports = DERDecoder; - -DERDecoder.prototype.decode = function decode(data, options) { - if (!(data instanceof base.DecoderBuffer)) - data = new base.DecoderBuffer(data, options); - - return this.tree._decode(data, options); -}; - -// Tree methods - -function DERNode(parent) { - base.Node.call(this, 'der', parent); -} -inherits(DERNode, base.Node); - -DERNode.prototype._peekTag = function peekTag(buffer, tag, any) { - if (buffer.isEmpty()) - return false; - - var state = buffer.save(); - var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: "' + tag + '"'); - if (buffer.isError(decodedTag)) - return decodedTag; - - buffer.restore(state); - - return decodedTag.tag === tag || decodedTag.tagStr === tag || - (decodedTag.tagStr + 'of') === tag || any; -}; - -DERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) { - var decodedTag = derDecodeTag(buffer, - 'Failed to decode tag of "' + tag + '"'); - if (buffer.isError(decodedTag)) - return decodedTag; - - var len = derDecodeLen(buffer, - decodedTag.primitive, - 'Failed to get length of "' + tag + '"'); - - // Failure - if (buffer.isError(len)) - return len; - - if (!any && - decodedTag.tag !== tag && - decodedTag.tagStr !== tag && - decodedTag.tagStr + 'of' !== tag) { - return buffer.error('Failed to match tag: "' + tag + '"'); - } - - if (decodedTag.primitive || len !== null) - return buffer.skip(len, 'Failed to match body of: "' + tag + '"'); - - // Indefinite length... find END tag - var state = buffer.save(); - var res = this._skipUntilEnd( - buffer, - 'Failed to skip indefinite length body: "' + this.tag + '"'); - if (buffer.isError(res)) - return res; - - len = buffer.offset - state.offset; - buffer.restore(state); - return buffer.skip(len, 'Failed to match body of: "' + tag + '"'); -}; - -DERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) { - while (true) { - var tag = derDecodeTag(buffer, fail); - if (buffer.isError(tag)) - return tag; - var len = derDecodeLen(buffer, tag.primitive, fail); - if (buffer.isError(len)) - return len; - - var res; - if (tag.primitive || len !== null) - res = buffer.skip(len) - else - res = this._skipUntilEnd(buffer, fail); - - // Failure - if (buffer.isError(res)) - return res; - - if (tag.tagStr === 'end') - break; - } -}; - -DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder, - options) { - var result = []; - while (!buffer.isEmpty()) { - var possibleEnd = this._peekTag(buffer, 'end'); - if (buffer.isError(possibleEnd)) - return possibleEnd; - - var res = decoder.decode(buffer, 'der', options); - if (buffer.isError(res) && possibleEnd) - break; - result.push(res); - } - return result; -}; - -DERNode.prototype._decodeStr = function decodeStr(buffer, tag) { - if (tag === 'bitstr') { - var unused = buffer.readUInt8(); - if (buffer.isError(unused)) - return unused; - return { unused: unused, data: buffer.raw() }; - } else if (tag === 'bmpstr') { - var raw = buffer.raw(); - if (raw.length % 2 === 1) - return buffer.error('Decoding of string type: bmpstr length mismatch'); - - var str = ''; - for (var i = 0; i < raw.length / 2; i++) { - str += String.fromCharCode(raw.readUInt16BE(i * 2)); - } - return str; - } else if (tag === 'numstr') { - var numstr = buffer.raw().toString('ascii'); - if (!this._isNumstr(numstr)) { - return buffer.error('Decoding of string type: ' + - 'numstr unsupported characters'); - } - return numstr; - } else if (tag === 'octstr') { - return buffer.raw(); - } else if (tag === 'objDesc') { - return buffer.raw(); - } else if (tag === 'printstr') { - var printstr = buffer.raw().toString('ascii'); - if (!this._isPrintstr(printstr)) { - return buffer.error('Decoding of string type: ' + - 'printstr unsupported characters'); - } - return printstr; - } else if (/str$/.test(tag)) { - return buffer.raw().toString(); - } else { - return buffer.error('Decoding of string type: ' + tag + ' unsupported'); - } -}; - -DERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) { - var result; - var identifiers = []; - var ident = 0; - while (!buffer.isEmpty()) { - var subident = buffer.readUInt8(); - ident <<= 7; - ident |= subident & 0x7f; - if ((subident & 0x80) === 0) { - identifiers.push(ident); - ident = 0; - } - } - if (subident & 0x80) - identifiers.push(ident); - - var first = (identifiers[0] / 40) | 0; - var second = identifiers[0] % 40; - - if (relative) - result = identifiers; - else - result = [first, second].concat(identifiers.slice(1)); - - if (values) { - var tmp = values[result.join(' ')]; - if (tmp === undefined) - tmp = values[result.join('.')]; - if (tmp !== undefined) - result = tmp; - } - - return result; -}; - -DERNode.prototype._decodeTime = function decodeTime(buffer, tag) { - var str = buffer.raw().toString(); - if (tag === 'gentime') { - var year = str.slice(0, 4) | 0; - var mon = str.slice(4, 6) | 0; - var day = str.slice(6, 8) | 0; - var hour = str.slice(8, 10) | 0; - var min = str.slice(10, 12) | 0; - var sec = str.slice(12, 14) | 0; - } else if (tag === 'utctime') { - var year = str.slice(0, 2) | 0; - var mon = str.slice(2, 4) | 0; - var day = str.slice(4, 6) | 0; - var hour = str.slice(6, 8) | 0; - var min = str.slice(8, 10) | 0; - var sec = str.slice(10, 12) | 0; - if (year < 70) - year = 2000 + year; - else - year = 1900 + year; - } else { - return buffer.error('Decoding ' + tag + ' time is not supported yet'); - } - - return Date.UTC(year, mon - 1, day, hour, min, sec, 0); -}; - -DERNode.prototype._decodeNull = function decodeNull(buffer) { - return null; -}; - -DERNode.prototype._decodeBool = function decodeBool(buffer) { - var res = buffer.readUInt8(); - if (buffer.isError(res)) - return res; - else - return res !== 0; -}; - -DERNode.prototype._decodeInt = function decodeInt(buffer, values) { - // Bigint, return as it is (assume big endian) - var raw = buffer.raw(); - var res = new bignum(raw); - - if (values) - res = values[res.toString(10)] || res; - - return res; -}; - -DERNode.prototype._use = function use(entity, obj) { - if (typeof entity === 'function') - entity = entity(obj); - return entity._getDecoder('der').tree; -}; - -// Utility methods - -function derDecodeTag(buf, fail) { - var tag = buf.readUInt8(fail); - if (buf.isError(tag)) - return tag; - - var cls = der.tagClass[tag >> 6]; - var primitive = (tag & 0x20) === 0; - - // Multi-octet tag - load - if ((tag & 0x1f) === 0x1f) { - var oct = tag; - tag = 0; - while ((oct & 0x80) === 0x80) { - oct = buf.readUInt8(fail); - if (buf.isError(oct)) - return oct; - - tag <<= 7; - tag |= oct & 0x7f; - } - } else { - tag &= 0x1f; - } - var tagStr = der.tag[tag]; - - return { - cls: cls, - primitive: primitive, - tag: tag, - tagStr: tagStr - }; -} - -function derDecodeLen(buf, primitive, fail) { - var len = buf.readUInt8(fail); - if (buf.isError(len)) - return len; - - // Indefinite form - if (!primitive && len === 0x80) - return null; - - // Definite form - if ((len & 0x80) === 0) { - // Short form - return len; - } - - // Long form - var num = len & 0x7f; - if (num > 4) - return buf.error('length octect is too long'); - - len = 0; - for (var i = 0; i < num; i++) { - len <<= 8; - var j = buf.readUInt8(fail); - if (buf.isError(j)) - return j; - len |= j; - } - - return len; -} - -},{"../../asn1":132,"inherits":262}],141:[function(require,module,exports){ -var decoders = exports; - -decoders.der = require('./der'); -decoders.pem = require('./pem'); - -},{"./der":140,"./pem":142}],142:[function(require,module,exports){ -var inherits = require('inherits'); -var Buffer = require('buffer').Buffer; - -var DERDecoder = require('./der'); - -function PEMDecoder(entity) { - DERDecoder.call(this, entity); - this.enc = 'pem'; -}; -inherits(PEMDecoder, DERDecoder); -module.exports = PEMDecoder; - -PEMDecoder.prototype.decode = function decode(data, options) { - var lines = data.toString().split(/[\r\n]+/g); - - var label = options.label.toUpperCase(); - - var re = /^-----(BEGIN|END) ([^-]+)-----$/; - var start = -1; - var end = -1; - for (var i = 0; i < lines.length; i++) { - var match = lines[i].match(re); - if (match === null) - continue; - - if (match[2] !== label) - continue; - - if (start === -1) { - if (match[1] !== 'BEGIN') - break; - start = i; - } else { - if (match[1] !== 'END') - break; - end = i; - break; - } - } - if (start === -1 || end === -1) - throw new Error('PEM section not found for: ' + label); - - var base64 = lines.slice(start + 1, end).join(''); - // Remove excessive symbols - base64.replace(/[^a-z0-9\+\/=]+/gi, ''); - - var input = new Buffer(base64, 'base64'); - return DERDecoder.prototype.decode.call(this, input, options); -}; - -},{"./der":140,"buffer":182,"inherits":262}],143:[function(require,module,exports){ -var inherits = require('inherits'); -var Buffer = require('buffer').Buffer; - -var asn1 = require('../../asn1'); -var base = asn1.base; - -// Import DER constants -var der = asn1.constants.der; - -function DEREncoder(entity) { - this.enc = 'der'; - this.name = entity.name; - this.entity = entity; - - // Construct base tree - this.tree = new DERNode(); - this.tree._init(entity.body); -}; -module.exports = DEREncoder; - -DEREncoder.prototype.encode = function encode(data, reporter) { - return this.tree._encode(data, reporter).join(); -}; - -// Tree methods - -function DERNode(parent) { - base.Node.call(this, 'der', parent); -} -inherits(DERNode, base.Node); - -DERNode.prototype._encodeComposite = function encodeComposite(tag, - primitive, - cls, - content) { - var encodedTag = encodeTag(tag, primitive, cls, this.reporter); - - // Short form - if (content.length < 0x80) { - var header = new Buffer(2); - header[0] = encodedTag; - header[1] = content.length; - return this._createEncoderBuffer([ header, content ]); - } - - // Long form - // Count octets required to store length - var lenOctets = 1; - for (var i = content.length; i >= 0x100; i >>= 8) - lenOctets++; - - var header = new Buffer(1 + 1 + lenOctets); - header[0] = encodedTag; - header[1] = 0x80 | lenOctets; - - for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8) - header[i] = j & 0xff; - - return this._createEncoderBuffer([ header, content ]); -}; - -DERNode.prototype._encodeStr = function encodeStr(str, tag) { - if (tag === 'bitstr') { - return this._createEncoderBuffer([ str.unused | 0, str.data ]); - } else if (tag === 'bmpstr') { - var buf = new Buffer(str.length * 2); - for (var i = 0; i < str.length; i++) { - buf.writeUInt16BE(str.charCodeAt(i), i * 2); - } - return this._createEncoderBuffer(buf); - } else if (tag === 'numstr') { - if (!this._isNumstr(str)) { - return this.reporter.error('Encoding of string type: numstr supports ' + - 'only digits and space'); - } - return this._createEncoderBuffer(str); - } else if (tag === 'printstr') { - if (!this._isPrintstr(str)) { - return this.reporter.error('Encoding of string type: printstr supports ' + - 'only latin upper and lower case letters, ' + - 'digits, space, apostrophe, left and rigth ' + - 'parenthesis, plus sign, comma, hyphen, ' + - 'dot, slash, colon, equal sign, ' + - 'question mark'); - } - return this._createEncoderBuffer(str); - } else if (/str$/.test(tag)) { - return this._createEncoderBuffer(str); - } else if (tag === 'objDesc') { - return this._createEncoderBuffer(str); - } else { - return this.reporter.error('Encoding of string type: ' + tag + - ' unsupported'); - } -}; - -DERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) { - if (typeof id === 'string') { - if (!values) - return this.reporter.error('string objid given, but no values map found'); - if (!values.hasOwnProperty(id)) - return this.reporter.error('objid not found in values map'); - id = values[id].split(/[\s\.]+/g); - for (var i = 0; i < id.length; i++) - id[i] |= 0; - } else if (Array.isArray(id)) { - id = id.slice(); - for (var i = 0; i < id.length; i++) - id[i] |= 0; - } - - if (!Array.isArray(id)) { - return this.reporter.error('objid() should be either array or string, ' + - 'got: ' + JSON.stringify(id)); - } - - if (!relative) { - if (id[1] >= 40) - return this.reporter.error('Second objid identifier OOB'); - id.splice(0, 2, id[0] * 40 + id[1]); - } - - // Count number of octets - var size = 0; - for (var i = 0; i < id.length; i++) { - var ident = id[i]; - for (size++; ident >= 0x80; ident >>= 7) - size++; - } - - var objid = new Buffer(size); - var offset = objid.length - 1; - for (var i = id.length - 1; i >= 0; i--) { - var ident = id[i]; - objid[offset--] = ident & 0x7f; - while ((ident >>= 7) > 0) - objid[offset--] = 0x80 | (ident & 0x7f); - } - - return this._createEncoderBuffer(objid); -}; - -function two(num) { - if (num < 10) - return '0' + num; - else - return num; -} - -DERNode.prototype._encodeTime = function encodeTime(time, tag) { - var str; - var date = new Date(time); - - if (tag === 'gentime') { - str = [ - two(date.getFullYear()), - two(date.getUTCMonth() + 1), - two(date.getUTCDate()), - two(date.getUTCHours()), - two(date.getUTCMinutes()), - two(date.getUTCSeconds()), - 'Z' - ].join(''); - } else if (tag === 'utctime') { - str = [ - two(date.getFullYear() % 100), - two(date.getUTCMonth() + 1), - two(date.getUTCDate()), - two(date.getUTCHours()), - two(date.getUTCMinutes()), - two(date.getUTCSeconds()), - 'Z' - ].join(''); - } else { - this.reporter.error('Encoding ' + tag + ' time is not supported yet'); - } - - return this._encodeStr(str, 'octstr'); -}; - -DERNode.prototype._encodeNull = function encodeNull() { - return this._createEncoderBuffer(''); -}; - -DERNode.prototype._encodeInt = function encodeInt(num, values) { - if (typeof num === 'string') { - if (!values) - return this.reporter.error('String int or enum given, but no values map'); - if (!values.hasOwnProperty(num)) { - return this.reporter.error('Values map doesn\'t contain: ' + - JSON.stringify(num)); - } - num = values[num]; - } - - // Bignum, assume big endian - if (typeof num !== 'number' && !Buffer.isBuffer(num)) { - var numArray = num.toArray(); - if (!num.sign && numArray[0] & 0x80) { - numArray.unshift(0); - } - num = new Buffer(numArray); - } - - if (Buffer.isBuffer(num)) { - var size = num.length; - if (num.length === 0) - size++; - - var out = new Buffer(size); - num.copy(out); - if (num.length === 0) - out[0] = 0 - return this._createEncoderBuffer(out); - } - - if (num < 0x80) - return this._createEncoderBuffer(num); - - if (num < 0x100) - return this._createEncoderBuffer([0, num]); - - var size = 1; - for (var i = num; i >= 0x100; i >>= 8) - size++; - - var out = new Array(size); - for (var i = out.length - 1; i >= 0; i--) { - out[i] = num & 0xff; - num >>= 8; - } - if(out[0] & 0x80) { - out.unshift(0); - } - - return this._createEncoderBuffer(new Buffer(out)); -}; - -DERNode.prototype._encodeBool = function encodeBool(value) { - return this._createEncoderBuffer(value ? 0xff : 0); -}; - -DERNode.prototype._use = function use(entity, obj) { - if (typeof entity === 'function') - entity = entity(obj); - return entity._getEncoder('der').tree; -}; - -DERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) { - var state = this._baseState; - var i; - if (state['default'] === null) - return false; - - var data = dataBuffer.join(); - if (state.defaultBuffer === undefined) - state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join(); - - if (data.length !== state.defaultBuffer.length) - return false; - - for (i=0; i < data.length; i++) - if (data[i] !== state.defaultBuffer[i]) - return false; - - return true; -}; - -// Utility methods - -function encodeTag(tag, primitive, cls, reporter) { - var res; - - if (tag === 'seqof') - tag = 'seq'; - else if (tag === 'setof') - tag = 'set'; - - if (der.tagByName.hasOwnProperty(tag)) - res = der.tagByName[tag]; - else if (typeof tag === 'number' && (tag | 0) === tag) - res = tag; - else - return reporter.error('Unknown tag: ' + tag); - - if (res >= 0x1f) - return reporter.error('Multi-octet tag encoding unsupported'); - - if (!primitive) - res |= 0x20; - - res |= (der.tagClassByName[cls || 'universal'] << 6); - - return res; -} - -},{"../../asn1":132,"buffer":182,"inherits":262}],144:[function(require,module,exports){ -var encoders = exports; - -encoders.der = require('./der'); -encoders.pem = require('./pem'); - -},{"./der":143,"./pem":145}],145:[function(require,module,exports){ -var inherits = require('inherits'); - -var DEREncoder = require('./der'); - -function PEMEncoder(entity) { - DEREncoder.call(this, entity); - this.enc = 'pem'; -}; -inherits(PEMEncoder, DEREncoder); -module.exports = PEMEncoder; - -PEMEncoder.prototype.encode = function encode(data, options) { - var buf = DEREncoder.prototype.encode.call(this, data); - - var p = buf.toString('base64'); - var out = [ '-----BEGIN ' + options.label + '-----' ]; - for (var i = 0; i < p.length; i += 64) - out.push(p.slice(i, i + 64)); - out.push('-----END ' + options.label + '-----'); - return out.join('\n'); -}; - -},{"./der":143,"inherits":262}],146:[function(require,module,exports){ -'use strict' - -exports.byteLength = byteLength -exports.toByteArray = toByteArray -exports.fromByteArray = fromByteArray - -var lookup = [] -var revLookup = [] -var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array - -var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' -for (var i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i] - revLookup[code.charCodeAt(i)] = i -} - -// Support decoding URL-safe base64 strings, as Node.js does. -// See: https://en.wikipedia.org/wiki/Base64#URL_applications -revLookup['-'.charCodeAt(0)] = 62 -revLookup['_'.charCodeAt(0)] = 63 - -function getLens (b64) { - var len = b64.length - - if (len % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // Trim off extra bytes after placeholder bytes are found - // See: https://github.com/beatgammit/base64-js/issues/42 - var validLen = b64.indexOf('=') - if (validLen === -1) validLen = len - - var placeHoldersLen = validLen === len - ? 0 - : 4 - (validLen % 4) - - return [validLen, placeHoldersLen] -} - -// base64 is 4/3 + up to two characters of the original data -function byteLength (b64) { - var lens = getLens(b64) - var validLen = lens[0] - var placeHoldersLen = lens[1] - return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen -} - -function _byteLength (b64, validLen, placeHoldersLen) { - return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen -} - -function toByteArray (b64) { - var tmp - var lens = getLens(b64) - var validLen = lens[0] - var placeHoldersLen = lens[1] - - var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) - - var curByte = 0 - - // if there are placeholders, only get up to the last complete 4 chars - var len = placeHoldersLen > 0 - ? validLen - 4 - : validLen - - var i - for (i = 0; i < len; i += 4) { - tmp = - (revLookup[b64.charCodeAt(i)] << 18) | - (revLookup[b64.charCodeAt(i + 1)] << 12) | - (revLookup[b64.charCodeAt(i + 2)] << 6) | - revLookup[b64.charCodeAt(i + 3)] - arr[curByte++] = (tmp >> 16) & 0xFF - arr[curByte++] = (tmp >> 8) & 0xFF - arr[curByte++] = tmp & 0xFF - } - - if (placeHoldersLen === 2) { - tmp = - (revLookup[b64.charCodeAt(i)] << 2) | - (revLookup[b64.charCodeAt(i + 1)] >> 4) - arr[curByte++] = tmp & 0xFF - } - - if (placeHoldersLen === 1) { - tmp = - (revLookup[b64.charCodeAt(i)] << 10) | - (revLookup[b64.charCodeAt(i + 1)] << 4) | - (revLookup[b64.charCodeAt(i + 2)] >> 2) - arr[curByte++] = (tmp >> 8) & 0xFF - arr[curByte++] = tmp & 0xFF - } - - return arr -} - -function tripletToBase64 (num) { - return lookup[num >> 18 & 0x3F] + - lookup[num >> 12 & 0x3F] + - lookup[num >> 6 & 0x3F] + - lookup[num & 0x3F] -} - -function encodeChunk (uint8, start, end) { - var tmp - var output = [] - for (var i = start; i < end; i += 3) { - tmp = - ((uint8[i] << 16) & 0xFF0000) + - ((uint8[i + 1] << 8) & 0xFF00) + - (uint8[i + 2] & 0xFF) - output.push(tripletToBase64(tmp)) - } - return output.join('') -} - -function fromByteArray (uint8) { - var tmp - var len = uint8.length - var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes - var parts = [] - var maxChunkLength = 16383 // must be multiple of 3 - - // go through the array every three bytes, we'll deal with trailing stuff later - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk( - uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength) - )) - } - - // pad the end with zeros, but make sure to not forget the extra bytes - if (extraBytes === 1) { - tmp = uint8[len - 1] - parts.push( - lookup[tmp >> 2] + - lookup[(tmp << 4) & 0x3F] + - '==' - ) - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + uint8[len - 1] - parts.push( - lookup[tmp >> 10] + - lookup[(tmp >> 4) & 0x3F] + - lookup[(tmp << 2) & 0x3F] + - '=' - ) - } - - return parts.join('') -} - -},{}],147:[function(require,module,exports){ -(function (module, exports) { - 'use strict'; - - // Utils - function assert (val, msg) { - if (!val) throw new Error(msg || 'Assertion failed'); - } - - // Could use `inherits` module, but don't want to move from single file - // architecture yet. - function inherits (ctor, superCtor) { - ctor.super_ = superCtor; - var TempCtor = function () {}; - TempCtor.prototype = superCtor.prototype; - ctor.prototype = new TempCtor(); - ctor.prototype.constructor = ctor; - } - - // BN - - function BN (number, base, endian) { - if (BN.isBN(number)) { - return number; - } - - this.negative = 0; - this.words = null; - this.length = 0; - - // Reduction context - this.red = null; - - if (number !== null) { - if (base === 'le' || base === 'be') { - endian = base; - base = 10; - } - - this._init(number || 0, base || 10, endian || 'be'); - } - } - if (typeof module === 'object') { - module.exports = BN; - } else { - exports.BN = BN; - } - - BN.BN = BN; - BN.wordSize = 26; - - var Buffer; - try { - Buffer = require('buffer').Buffer; - } catch (e) { - } - - BN.isBN = function isBN (num) { - if (num instanceof BN) { - return true; - } - - return num !== null && typeof num === 'object' && - num.constructor.wordSize === BN.wordSize && Array.isArray(num.words); - }; - - BN.max = function max (left, right) { - if (left.cmp(right) > 0) return left; - return right; - }; - - BN.min = function min (left, right) { - if (left.cmp(right) < 0) return left; - return right; - }; - - BN.prototype._init = function init (number, base, endian) { - if (typeof number === 'number') { - return this._initNumber(number, base, endian); - } - - if (typeof number === 'object') { - return this._initArray(number, base, endian); - } - - if (base === 'hex') { - base = 16; - } - assert(base === (base | 0) && base >= 2 && base <= 36); - - number = number.toString().replace(/\s+/g, ''); - var start = 0; - if (number[0] === '-') { - start++; - } - - if (base === 16) { - this._parseHex(number, start); - } else { - this._parseBase(number, base, start); - } - - if (number[0] === '-') { - this.negative = 1; - } - - this.strip(); - - if (endian !== 'le') return; - - this._initArray(this.toArray(), base, endian); - }; - - BN.prototype._initNumber = function _initNumber (number, base, endian) { - if (number < 0) { - this.negative = 1; - number = -number; - } - if (number < 0x4000000) { - this.words = [ number & 0x3ffffff ]; - this.length = 1; - } else if (number < 0x10000000000000) { - this.words = [ - number & 0x3ffffff, - (number / 0x4000000) & 0x3ffffff - ]; - this.length = 2; - } else { - assert(number < 0x20000000000000); // 2 ^ 53 (unsafe) - this.words = [ - number & 0x3ffffff, - (number / 0x4000000) & 0x3ffffff, - 1 - ]; - this.length = 3; - } - - if (endian !== 'le') return; - - // Reverse the bytes - this._initArray(this.toArray(), base, endian); - }; - - BN.prototype._initArray = function _initArray (number, base, endian) { - // Perhaps a Uint8Array - assert(typeof number.length === 'number'); - if (number.length <= 0) { - this.words = [ 0 ]; - this.length = 1; - return this; - } - - this.length = Math.ceil(number.length / 3); - this.words = new Array(this.length); - for (var i = 0; i < this.length; i++) { - this.words[i] = 0; - } - - var j, w; - var off = 0; - if (endian === 'be') { - for (i = number.length - 1, j = 0; i >= 0; i -= 3) { - w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16); - this.words[j] |= (w << off) & 0x3ffffff; - this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff; - off += 24; - if (off >= 26) { - off -= 26; - j++; - } - } - } else if (endian === 'le') { - for (i = 0, j = 0; i < number.length; i += 3) { - w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16); - this.words[j] |= (w << off) & 0x3ffffff; - this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff; - off += 24; - if (off >= 26) { - off -= 26; - j++; - } - } - } - return this.strip(); - }; - - function parseHex (str, start, end) { - var r = 0; - var len = Math.min(str.length, end); - for (var i = start; i < len; i++) { - var c = str.charCodeAt(i) - 48; - - r <<= 4; - - // 'a' - 'f' - if (c >= 49 && c <= 54) { - r |= c - 49 + 0xa; - - // 'A' - 'F' - } else if (c >= 17 && c <= 22) { - r |= c - 17 + 0xa; - - // '0' - '9' - } else { - r |= c & 0xf; - } - } - return r; - } - - BN.prototype._parseHex = function _parseHex (number, start) { - // Create possibly bigger array to ensure that it fits the number - this.length = Math.ceil((number.length - start) / 6); - this.words = new Array(this.length); - for (var i = 0; i < this.length; i++) { - this.words[i] = 0; - } - - var j, w; - // Scan 24-bit chunks and add them to the number - var off = 0; - for (i = number.length - 6, j = 0; i >= start; i -= 6) { - w = parseHex(number, i, i + 6); - this.words[j] |= (w << off) & 0x3ffffff; - // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb - this.words[j + 1] |= w >>> (26 - off) & 0x3fffff; - off += 24; - if (off >= 26) { - off -= 26; - j++; - } - } - if (i + 6 !== start) { - w = parseHex(number, start, i + 6); - this.words[j] |= (w << off) & 0x3ffffff; - this.words[j + 1] |= w >>> (26 - off) & 0x3fffff; - } - this.strip(); - }; - - function parseBase (str, start, end, mul) { - var r = 0; - var len = Math.min(str.length, end); - for (var i = start; i < len; i++) { - var c = str.charCodeAt(i) - 48; - - r *= mul; - - // 'a' - if (c >= 49) { - r += c - 49 + 0xa; - - // 'A' - } else if (c >= 17) { - r += c - 17 + 0xa; - - // '0' - '9' - } else { - r += c; - } - } - return r; - } - - BN.prototype._parseBase = function _parseBase (number, base, start) { - // Initialize as zero - this.words = [ 0 ]; - this.length = 1; - - // Find length of limb in base - for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) { - limbLen++; - } - limbLen--; - limbPow = (limbPow / base) | 0; - - var total = number.length - start; - var mod = total % limbLen; - var end = Math.min(total, total - mod) + start; - - var word = 0; - for (var i = start; i < end; i += limbLen) { - word = parseBase(number, i, i + limbLen, base); - - this.imuln(limbPow); - if (this.words[0] + word < 0x4000000) { - this.words[0] += word; - } else { - this._iaddn(word); - } - } - - if (mod !== 0) { - var pow = 1; - word = parseBase(number, i, number.length, base); - - for (i = 0; i < mod; i++) { - pow *= base; - } - - this.imuln(pow); - if (this.words[0] + word < 0x4000000) { - this.words[0] += word; - } else { - this._iaddn(word); - } - } - }; - - BN.prototype.copy = function copy (dest) { - dest.words = new Array(this.length); - for (var i = 0; i < this.length; i++) { - dest.words[i] = this.words[i]; - } - dest.length = this.length; - dest.negative = this.negative; - dest.red = this.red; - }; - - BN.prototype.clone = function clone () { - var r = new BN(null); - this.copy(r); - return r; - }; - - BN.prototype._expand = function _expand (size) { - while (this.length < size) { - this.words[this.length++] = 0; - } - return this; - }; - - // Remove leading `0` from `this` - BN.prototype.strip = function strip () { - while (this.length > 1 && this.words[this.length - 1] === 0) { - this.length--; - } - return this._normSign(); - }; - - BN.prototype._normSign = function _normSign () { - // -0 = 0 - if (this.length === 1 && this.words[0] === 0) { - this.negative = 0; - } - return this; - }; - - BN.prototype.inspect = function inspect () { - return (this.red ? ''; - }; - - /* - - var zeros = []; - var groupSizes = []; - var groupBases = []; - - var s = ''; - var i = -1; - while (++i < BN.wordSize) { - zeros[i] = s; - s += '0'; - } - groupSizes[0] = 0; - groupSizes[1] = 0; - groupBases[0] = 0; - groupBases[1] = 0; - var base = 2 - 1; - while (++base < 36 + 1) { - var groupSize = 0; - var groupBase = 1; - while (groupBase < (1 << BN.wordSize) / base) { - groupBase *= base; - groupSize += 1; - } - groupSizes[base] = groupSize; - groupBases[base] = groupBase; - } - - */ - - var zeros = [ - '', - '0', - '00', - '000', - '0000', - '00000', - '000000', - '0000000', - '00000000', - '000000000', - '0000000000', - '00000000000', - '000000000000', - '0000000000000', - '00000000000000', - '000000000000000', - '0000000000000000', - '00000000000000000', - '000000000000000000', - '0000000000000000000', - '00000000000000000000', - '000000000000000000000', - '0000000000000000000000', - '00000000000000000000000', - '000000000000000000000000', - '0000000000000000000000000' - ]; - - var groupSizes = [ - 0, 0, - 25, 16, 12, 11, 10, 9, 8, - 8, 7, 7, 7, 7, 6, 6, - 6, 6, 6, 6, 6, 5, 5, - 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5 - ]; - - var groupBases = [ - 0, 0, - 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, - 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, - 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, - 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, - 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176 - ]; - - BN.prototype.toString = function toString (base, padding) { - base = base || 10; - padding = padding | 0 || 1; - - var out; - if (base === 16 || base === 'hex') { - out = ''; - var off = 0; - var carry = 0; - for (var i = 0; i < this.length; i++) { - var w = this.words[i]; - var word = (((w << off) | carry) & 0xffffff).toString(16); - carry = (w >>> (24 - off)) & 0xffffff; - if (carry !== 0 || i !== this.length - 1) { - out = zeros[6 - word.length] + word + out; - } else { - out = word + out; - } - off += 2; - if (off >= 26) { - off -= 26; - i--; - } - } - if (carry !== 0) { - out = carry.toString(16) + out; - } - while (out.length % padding !== 0) { - out = '0' + out; - } - if (this.negative !== 0) { - out = '-' + out; - } - return out; - } - - if (base === (base | 0) && base >= 2 && base <= 36) { - // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base)); - var groupSize = groupSizes[base]; - // var groupBase = Math.pow(base, groupSize); - var groupBase = groupBases[base]; - out = ''; - var c = this.clone(); - c.negative = 0; - while (!c.isZero()) { - var r = c.modn(groupBase).toString(base); - c = c.idivn(groupBase); - - if (!c.isZero()) { - out = zeros[groupSize - r.length] + r + out; - } else { - out = r + out; - } - } - if (this.isZero()) { - out = '0' + out; - } - while (out.length % padding !== 0) { - out = '0' + out; - } - if (this.negative !== 0) { - out = '-' + out; - } - return out; - } - - assert(false, 'Base should be between 2 and 36'); - }; - - BN.prototype.toNumber = function toNumber () { - var ret = this.words[0]; - if (this.length === 2) { - ret += this.words[1] * 0x4000000; - } else if (this.length === 3 && this.words[2] === 0x01) { - // NOTE: at this stage it is known that the top bit is set - ret += 0x10000000000000 + (this.words[1] * 0x4000000); - } else if (this.length > 2) { - assert(false, 'Number can only safely store up to 53 bits'); - } - return (this.negative !== 0) ? -ret : ret; - }; - - BN.prototype.toJSON = function toJSON () { - return this.toString(16); - }; - - BN.prototype.toBuffer = function toBuffer (endian, length) { - assert(typeof Buffer !== 'undefined'); - return this.toArrayLike(Buffer, endian, length); - }; - - BN.prototype.toArray = function toArray (endian, length) { - return this.toArrayLike(Array, endian, length); - }; - - BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) { - var byteLength = this.byteLength(); - var reqLength = length || Math.max(1, byteLength); - assert(byteLength <= reqLength, 'byte array longer than desired length'); - assert(reqLength > 0, 'Requested array length <= 0'); - - this.strip(); - var littleEndian = endian === 'le'; - var res = new ArrayType(reqLength); - - var b, i; - var q = this.clone(); - if (!littleEndian) { - // Assume big-endian - for (i = 0; i < reqLength - byteLength; i++) { - res[i] = 0; - } - - for (i = 0; !q.isZero(); i++) { - b = q.andln(0xff); - q.iushrn(8); - - res[reqLength - i - 1] = b; - } - } else { - for (i = 0; !q.isZero(); i++) { - b = q.andln(0xff); - q.iushrn(8); - - res[i] = b; - } - - for (; i < reqLength; i++) { - res[i] = 0; - } - } - - return res; - }; - - if (Math.clz32) { - BN.prototype._countBits = function _countBits (w) { - return 32 - Math.clz32(w); - }; - } else { - BN.prototype._countBits = function _countBits (w) { - var t = w; - var r = 0; - if (t >= 0x1000) { - r += 13; - t >>>= 13; - } - if (t >= 0x40) { - r += 7; - t >>>= 7; - } - if (t >= 0x8) { - r += 4; - t >>>= 4; - } - if (t >= 0x02) { - r += 2; - t >>>= 2; - } - return r + t; - }; - } - - BN.prototype._zeroBits = function _zeroBits (w) { - // Short-cut - if (w === 0) return 26; - - var t = w; - var r = 0; - if ((t & 0x1fff) === 0) { - r += 13; - t >>>= 13; - } - if ((t & 0x7f) === 0) { - r += 7; - t >>>= 7; - } - if ((t & 0xf) === 0) { - r += 4; - t >>>= 4; - } - if ((t & 0x3) === 0) { - r += 2; - t >>>= 2; - } - if ((t & 0x1) === 0) { - r++; - } - return r; - }; - - // Return number of used bits in a BN - BN.prototype.bitLength = function bitLength () { - var w = this.words[this.length - 1]; - var hi = this._countBits(w); - return (this.length - 1) * 26 + hi; - }; - - function toBitArray (num) { - var w = new Array(num.bitLength()); - - for (var bit = 0; bit < w.length; bit++) { - var off = (bit / 26) | 0; - var wbit = bit % 26; - - w[bit] = (num.words[off] & (1 << wbit)) >>> wbit; - } - - return w; - } - - // Number of trailing zero bits - BN.prototype.zeroBits = function zeroBits () { - if (this.isZero()) return 0; - - var r = 0; - for (var i = 0; i < this.length; i++) { - var b = this._zeroBits(this.words[i]); - r += b; - if (b !== 26) break; - } - return r; - }; - - BN.prototype.byteLength = function byteLength () { - return Math.ceil(this.bitLength() / 8); - }; - - BN.prototype.toTwos = function toTwos (width) { - if (this.negative !== 0) { - return this.abs().inotn(width).iaddn(1); - } - return this.clone(); - }; - - BN.prototype.fromTwos = function fromTwos (width) { - if (this.testn(width - 1)) { - return this.notn(width).iaddn(1).ineg(); - } - return this.clone(); - }; - - BN.prototype.isNeg = function isNeg () { - return this.negative !== 0; - }; - - // Return negative clone of `this` - BN.prototype.neg = function neg () { - return this.clone().ineg(); - }; - - BN.prototype.ineg = function ineg () { - if (!this.isZero()) { - this.negative ^= 1; - } - - return this; - }; - - // Or `num` with `this` in-place - BN.prototype.iuor = function iuor (num) { - while (this.length < num.length) { - this.words[this.length++] = 0; - } - - for (var i = 0; i < num.length; i++) { - this.words[i] = this.words[i] | num.words[i]; - } - - return this.strip(); - }; - - BN.prototype.ior = function ior (num) { - assert((this.negative | num.negative) === 0); - return this.iuor(num); - }; - - // Or `num` with `this` - BN.prototype.or = function or (num) { - if (this.length > num.length) return this.clone().ior(num); - return num.clone().ior(this); - }; - - BN.prototype.uor = function uor (num) { - if (this.length > num.length) return this.clone().iuor(num); - return num.clone().iuor(this); - }; - - // And `num` with `this` in-place - BN.prototype.iuand = function iuand (num) { - // b = min-length(num, this) - var b; - if (this.length > num.length) { - b = num; - } else { - b = this; - } - - for (var i = 0; i < b.length; i++) { - this.words[i] = this.words[i] & num.words[i]; - } - - this.length = b.length; - - return this.strip(); - }; - - BN.prototype.iand = function iand (num) { - assert((this.negative | num.negative) === 0); - return this.iuand(num); - }; - - // And `num` with `this` - BN.prototype.and = function and (num) { - if (this.length > num.length) return this.clone().iand(num); - return num.clone().iand(this); - }; - - BN.prototype.uand = function uand (num) { - if (this.length > num.length) return this.clone().iuand(num); - return num.clone().iuand(this); - }; - - // Xor `num` with `this` in-place - BN.prototype.iuxor = function iuxor (num) { - // a.length > b.length - var a; - var b; - if (this.length > num.length) { - a = this; - b = num; - } else { - a = num; - b = this; - } - - for (var i = 0; i < b.length; i++) { - this.words[i] = a.words[i] ^ b.words[i]; - } - - if (this !== a) { - for (; i < a.length; i++) { - this.words[i] = a.words[i]; - } - } - - this.length = a.length; - - return this.strip(); - }; - - BN.prototype.ixor = function ixor (num) { - assert((this.negative | num.negative) === 0); - return this.iuxor(num); - }; - - // Xor `num` with `this` - BN.prototype.xor = function xor (num) { - if (this.length > num.length) return this.clone().ixor(num); - return num.clone().ixor(this); - }; - - BN.prototype.uxor = function uxor (num) { - if (this.length > num.length) return this.clone().iuxor(num); - return num.clone().iuxor(this); - }; - - // Not ``this`` with ``width`` bitwidth - BN.prototype.inotn = function inotn (width) { - assert(typeof width === 'number' && width >= 0); - - var bytesNeeded = Math.ceil(width / 26) | 0; - var bitsLeft = width % 26; - - // Extend the buffer with leading zeroes - this._expand(bytesNeeded); - - if (bitsLeft > 0) { - bytesNeeded--; - } - - // Handle complete words - for (var i = 0; i < bytesNeeded; i++) { - this.words[i] = ~this.words[i] & 0x3ffffff; - } - - // Handle the residue - if (bitsLeft > 0) { - this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft)); - } - - // And remove leading zeroes - return this.strip(); - }; - - BN.prototype.notn = function notn (width) { - return this.clone().inotn(width); - }; - - // Set `bit` of `this` - BN.prototype.setn = function setn (bit, val) { - assert(typeof bit === 'number' && bit >= 0); - - var off = (bit / 26) | 0; - var wbit = bit % 26; - - this._expand(off + 1); - - if (val) { - this.words[off] = this.words[off] | (1 << wbit); - } else { - this.words[off] = this.words[off] & ~(1 << wbit); - } - - return this.strip(); - }; - - // Add `num` to `this` in-place - BN.prototype.iadd = function iadd (num) { - var r; - - // negative + positive - if (this.negative !== 0 && num.negative === 0) { - this.negative = 0; - r = this.isub(num); - this.negative ^= 1; - return this._normSign(); - - // positive + negative - } else if (this.negative === 0 && num.negative !== 0) { - num.negative = 0; - r = this.isub(num); - num.negative = 1; - return r._normSign(); - } - - // a.length > b.length - var a, b; - if (this.length > num.length) { - a = this; - b = num; - } else { - a = num; - b = this; - } - - var carry = 0; - for (var i = 0; i < b.length; i++) { - r = (a.words[i] | 0) + (b.words[i] | 0) + carry; - this.words[i] = r & 0x3ffffff; - carry = r >>> 26; - } - for (; carry !== 0 && i < a.length; i++) { - r = (a.words[i] | 0) + carry; - this.words[i] = r & 0x3ffffff; - carry = r >>> 26; - } - - this.length = a.length; - if (carry !== 0) { - this.words[this.length] = carry; - this.length++; - // Copy the rest of the words - } else if (a !== this) { - for (; i < a.length; i++) { - this.words[i] = a.words[i]; - } - } - - return this; - }; - - // Add `num` to `this` - BN.prototype.add = function add (num) { - var res; - if (num.negative !== 0 && this.negative === 0) { - num.negative = 0; - res = this.sub(num); - num.negative ^= 1; - return res; - } else if (num.negative === 0 && this.negative !== 0) { - this.negative = 0; - res = num.sub(this); - this.negative = 1; - return res; - } - - if (this.length > num.length) return this.clone().iadd(num); - - return num.clone().iadd(this); - }; - - // Subtract `num` from `this` in-place - BN.prototype.isub = function isub (num) { - // this - (-num) = this + num - if (num.negative !== 0) { - num.negative = 0; - var r = this.iadd(num); - num.negative = 1; - return r._normSign(); - - // -this - num = -(this + num) - } else if (this.negative !== 0) { - this.negative = 0; - this.iadd(num); - this.negative = 1; - return this._normSign(); - } - - // At this point both numbers are positive - var cmp = this.cmp(num); - - // Optimization - zeroify - if (cmp === 0) { - this.negative = 0; - this.length = 1; - this.words[0] = 0; - return this; - } - - // a > b - var a, b; - if (cmp > 0) { - a = this; - b = num; - } else { - a = num; - b = this; - } - - var carry = 0; - for (var i = 0; i < b.length; i++) { - r = (a.words[i] | 0) - (b.words[i] | 0) + carry; - carry = r >> 26; - this.words[i] = r & 0x3ffffff; - } - for (; carry !== 0 && i < a.length; i++) { - r = (a.words[i] | 0) + carry; - carry = r >> 26; - this.words[i] = r & 0x3ffffff; - } - - // Copy rest of the words - if (carry === 0 && i < a.length && a !== this) { - for (; i < a.length; i++) { - this.words[i] = a.words[i]; - } - } - - this.length = Math.max(this.length, i); - - if (a !== this) { - this.negative = 1; - } - - return this.strip(); - }; - - // Subtract `num` from `this` - BN.prototype.sub = function sub (num) { - return this.clone().isub(num); - }; - - function smallMulTo (self, num, out) { - out.negative = num.negative ^ self.negative; - var len = (self.length + num.length) | 0; - out.length = len; - len = (len - 1) | 0; - - // Peel one iteration (compiler can't do it, because of code complexity) - var a = self.words[0] | 0; - var b = num.words[0] | 0; - var r = a * b; - - var lo = r & 0x3ffffff; - var carry = (r / 0x4000000) | 0; - out.words[0] = lo; - - for (var k = 1; k < len; k++) { - // Sum all words with the same `i + j = k` and accumulate `ncarry`, - // note that ncarry could be >= 0x3ffffff - var ncarry = carry >>> 26; - var rword = carry & 0x3ffffff; - var maxJ = Math.min(k, num.length - 1); - for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { - var i = (k - j) | 0; - a = self.words[i] | 0; - b = num.words[j] | 0; - r = a * b + rword; - ncarry += (r / 0x4000000) | 0; - rword = r & 0x3ffffff; - } - out.words[k] = rword | 0; - carry = ncarry | 0; - } - if (carry !== 0) { - out.words[k] = carry | 0; - } else { - out.length--; - } - - return out.strip(); - } - - // TODO(indutny): it may be reasonable to omit it for users who don't need - // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit - // multiplication (like elliptic secp256k1). - var comb10MulTo = function comb10MulTo (self, num, out) { - var a = self.words; - var b = num.words; - var o = out.words; - var c = 0; - var lo; - var mid; - var hi; - var a0 = a[0] | 0; - var al0 = a0 & 0x1fff; - var ah0 = a0 >>> 13; - var a1 = a[1] | 0; - var al1 = a1 & 0x1fff; - var ah1 = a1 >>> 13; - var a2 = a[2] | 0; - var al2 = a2 & 0x1fff; - var ah2 = a2 >>> 13; - var a3 = a[3] | 0; - var al3 = a3 & 0x1fff; - var ah3 = a3 >>> 13; - var a4 = a[4] | 0; - var al4 = a4 & 0x1fff; - var ah4 = a4 >>> 13; - var a5 = a[5] | 0; - var al5 = a5 & 0x1fff; - var ah5 = a5 >>> 13; - var a6 = a[6] | 0; - var al6 = a6 & 0x1fff; - var ah6 = a6 >>> 13; - var a7 = a[7] | 0; - var al7 = a7 & 0x1fff; - var ah7 = a7 >>> 13; - var a8 = a[8] | 0; - var al8 = a8 & 0x1fff; - var ah8 = a8 >>> 13; - var a9 = a[9] | 0; - var al9 = a9 & 0x1fff; - var ah9 = a9 >>> 13; - var b0 = b[0] | 0; - var bl0 = b0 & 0x1fff; - var bh0 = b0 >>> 13; - var b1 = b[1] | 0; - var bl1 = b1 & 0x1fff; - var bh1 = b1 >>> 13; - var b2 = b[2] | 0; - var bl2 = b2 & 0x1fff; - var bh2 = b2 >>> 13; - var b3 = b[3] | 0; - var bl3 = b3 & 0x1fff; - var bh3 = b3 >>> 13; - var b4 = b[4] | 0; - var bl4 = b4 & 0x1fff; - var bh4 = b4 >>> 13; - var b5 = b[5] | 0; - var bl5 = b5 & 0x1fff; - var bh5 = b5 >>> 13; - var b6 = b[6] | 0; - var bl6 = b6 & 0x1fff; - var bh6 = b6 >>> 13; - var b7 = b[7] | 0; - var bl7 = b7 & 0x1fff; - var bh7 = b7 >>> 13; - var b8 = b[8] | 0; - var bl8 = b8 & 0x1fff; - var bh8 = b8 >>> 13; - var b9 = b[9] | 0; - var bl9 = b9 & 0x1fff; - var bh9 = b9 >>> 13; - - out.negative = self.negative ^ num.negative; - out.length = 19; - /* k = 0 */ - lo = Math.imul(al0, bl0); - mid = Math.imul(al0, bh0); - mid = (mid + Math.imul(ah0, bl0)) | 0; - hi = Math.imul(ah0, bh0); - var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0; - w0 &= 0x3ffffff; - /* k = 1 */ - lo = Math.imul(al1, bl0); - mid = Math.imul(al1, bh0); - mid = (mid + Math.imul(ah1, bl0)) | 0; - hi = Math.imul(ah1, bh0); - lo = (lo + Math.imul(al0, bl1)) | 0; - mid = (mid + Math.imul(al0, bh1)) | 0; - mid = (mid + Math.imul(ah0, bl1)) | 0; - hi = (hi + Math.imul(ah0, bh1)) | 0; - var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0; - w1 &= 0x3ffffff; - /* k = 2 */ - lo = Math.imul(al2, bl0); - mid = Math.imul(al2, bh0); - mid = (mid + Math.imul(ah2, bl0)) | 0; - hi = Math.imul(ah2, bh0); - lo = (lo + Math.imul(al1, bl1)) | 0; - mid = (mid + Math.imul(al1, bh1)) | 0; - mid = (mid + Math.imul(ah1, bl1)) | 0; - hi = (hi + Math.imul(ah1, bh1)) | 0; - lo = (lo + Math.imul(al0, bl2)) | 0; - mid = (mid + Math.imul(al0, bh2)) | 0; - mid = (mid + Math.imul(ah0, bl2)) | 0; - hi = (hi + Math.imul(ah0, bh2)) | 0; - var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0; - w2 &= 0x3ffffff; - /* k = 3 */ - lo = Math.imul(al3, bl0); - mid = Math.imul(al3, bh0); - mid = (mid + Math.imul(ah3, bl0)) | 0; - hi = Math.imul(ah3, bh0); - lo = (lo + Math.imul(al2, bl1)) | 0; - mid = (mid + Math.imul(al2, bh1)) | 0; - mid = (mid + Math.imul(ah2, bl1)) | 0; - hi = (hi + Math.imul(ah2, bh1)) | 0; - lo = (lo + Math.imul(al1, bl2)) | 0; - mid = (mid + Math.imul(al1, bh2)) | 0; - mid = (mid + Math.imul(ah1, bl2)) | 0; - hi = (hi + Math.imul(ah1, bh2)) | 0; - lo = (lo + Math.imul(al0, bl3)) | 0; - mid = (mid + Math.imul(al0, bh3)) | 0; - mid = (mid + Math.imul(ah0, bl3)) | 0; - hi = (hi + Math.imul(ah0, bh3)) | 0; - var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0; - w3 &= 0x3ffffff; - /* k = 4 */ - lo = Math.imul(al4, bl0); - mid = Math.imul(al4, bh0); - mid = (mid + Math.imul(ah4, bl0)) | 0; - hi = Math.imul(ah4, bh0); - lo = (lo + Math.imul(al3, bl1)) | 0; - mid = (mid + Math.imul(al3, bh1)) | 0; - mid = (mid + Math.imul(ah3, bl1)) | 0; - hi = (hi + Math.imul(ah3, bh1)) | 0; - lo = (lo + Math.imul(al2, bl2)) | 0; - mid = (mid + Math.imul(al2, bh2)) | 0; - mid = (mid + Math.imul(ah2, bl2)) | 0; - hi = (hi + Math.imul(ah2, bh2)) | 0; - lo = (lo + Math.imul(al1, bl3)) | 0; - mid = (mid + Math.imul(al1, bh3)) | 0; - mid = (mid + Math.imul(ah1, bl3)) | 0; - hi = (hi + Math.imul(ah1, bh3)) | 0; - lo = (lo + Math.imul(al0, bl4)) | 0; - mid = (mid + Math.imul(al0, bh4)) | 0; - mid = (mid + Math.imul(ah0, bl4)) | 0; - hi = (hi + Math.imul(ah0, bh4)) | 0; - var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0; - w4 &= 0x3ffffff; - /* k = 5 */ - lo = Math.imul(al5, bl0); - mid = Math.imul(al5, bh0); - mid = (mid + Math.imul(ah5, bl0)) | 0; - hi = Math.imul(ah5, bh0); - lo = (lo + Math.imul(al4, bl1)) | 0; - mid = (mid + Math.imul(al4, bh1)) | 0; - mid = (mid + Math.imul(ah4, bl1)) | 0; - hi = (hi + Math.imul(ah4, bh1)) | 0; - lo = (lo + Math.imul(al3, bl2)) | 0; - mid = (mid + Math.imul(al3, bh2)) | 0; - mid = (mid + Math.imul(ah3, bl2)) | 0; - hi = (hi + Math.imul(ah3, bh2)) | 0; - lo = (lo + Math.imul(al2, bl3)) | 0; - mid = (mid + Math.imul(al2, bh3)) | 0; - mid = (mid + Math.imul(ah2, bl3)) | 0; - hi = (hi + Math.imul(ah2, bh3)) | 0; - lo = (lo + Math.imul(al1, bl4)) | 0; - mid = (mid + Math.imul(al1, bh4)) | 0; - mid = (mid + Math.imul(ah1, bl4)) | 0; - hi = (hi + Math.imul(ah1, bh4)) | 0; - lo = (lo + Math.imul(al0, bl5)) | 0; - mid = (mid + Math.imul(al0, bh5)) | 0; - mid = (mid + Math.imul(ah0, bl5)) | 0; - hi = (hi + Math.imul(ah0, bh5)) | 0; - var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0; - w5 &= 0x3ffffff; - /* k = 6 */ - lo = Math.imul(al6, bl0); - mid = Math.imul(al6, bh0); - mid = (mid + Math.imul(ah6, bl0)) | 0; - hi = Math.imul(ah6, bh0); - lo = (lo + Math.imul(al5, bl1)) | 0; - mid = (mid + Math.imul(al5, bh1)) | 0; - mid = (mid + Math.imul(ah5, bl1)) | 0; - hi = (hi + Math.imul(ah5, bh1)) | 0; - lo = (lo + Math.imul(al4, bl2)) | 0; - mid = (mid + Math.imul(al4, bh2)) | 0; - mid = (mid + Math.imul(ah4, bl2)) | 0; - hi = (hi + Math.imul(ah4, bh2)) | 0; - lo = (lo + Math.imul(al3, bl3)) | 0; - mid = (mid + Math.imul(al3, bh3)) | 0; - mid = (mid + Math.imul(ah3, bl3)) | 0; - hi = (hi + Math.imul(ah3, bh3)) | 0; - lo = (lo + Math.imul(al2, bl4)) | 0; - mid = (mid + Math.imul(al2, bh4)) | 0; - mid = (mid + Math.imul(ah2, bl4)) | 0; - hi = (hi + Math.imul(ah2, bh4)) | 0; - lo = (lo + Math.imul(al1, bl5)) | 0; - mid = (mid + Math.imul(al1, bh5)) | 0; - mid = (mid + Math.imul(ah1, bl5)) | 0; - hi = (hi + Math.imul(ah1, bh5)) | 0; - lo = (lo + Math.imul(al0, bl6)) | 0; - mid = (mid + Math.imul(al0, bh6)) | 0; - mid = (mid + Math.imul(ah0, bl6)) | 0; - hi = (hi + Math.imul(ah0, bh6)) | 0; - var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0; - w6 &= 0x3ffffff; - /* k = 7 */ - lo = Math.imul(al7, bl0); - mid = Math.imul(al7, bh0); - mid = (mid + Math.imul(ah7, bl0)) | 0; - hi = Math.imul(ah7, bh0); - lo = (lo + Math.imul(al6, bl1)) | 0; - mid = (mid + Math.imul(al6, bh1)) | 0; - mid = (mid + Math.imul(ah6, bl1)) | 0; - hi = (hi + Math.imul(ah6, bh1)) | 0; - lo = (lo + Math.imul(al5, bl2)) | 0; - mid = (mid + Math.imul(al5, bh2)) | 0; - mid = (mid + Math.imul(ah5, bl2)) | 0; - hi = (hi + Math.imul(ah5, bh2)) | 0; - lo = (lo + Math.imul(al4, bl3)) | 0; - mid = (mid + Math.imul(al4, bh3)) | 0; - mid = (mid + Math.imul(ah4, bl3)) | 0; - hi = (hi + Math.imul(ah4, bh3)) | 0; - lo = (lo + Math.imul(al3, bl4)) | 0; - mid = (mid + Math.imul(al3, bh4)) | 0; - mid = (mid + Math.imul(ah3, bl4)) | 0; - hi = (hi + Math.imul(ah3, bh4)) | 0; - lo = (lo + Math.imul(al2, bl5)) | 0; - mid = (mid + Math.imul(al2, bh5)) | 0; - mid = (mid + Math.imul(ah2, bl5)) | 0; - hi = (hi + Math.imul(ah2, bh5)) | 0; - lo = (lo + Math.imul(al1, bl6)) | 0; - mid = (mid + Math.imul(al1, bh6)) | 0; - mid = (mid + Math.imul(ah1, bl6)) | 0; - hi = (hi + Math.imul(ah1, bh6)) | 0; - lo = (lo + Math.imul(al0, bl7)) | 0; - mid = (mid + Math.imul(al0, bh7)) | 0; - mid = (mid + Math.imul(ah0, bl7)) | 0; - hi = (hi + Math.imul(ah0, bh7)) | 0; - var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0; - w7 &= 0x3ffffff; - /* k = 8 */ - lo = Math.imul(al8, bl0); - mid = Math.imul(al8, bh0); - mid = (mid + Math.imul(ah8, bl0)) | 0; - hi = Math.imul(ah8, bh0); - lo = (lo + Math.imul(al7, bl1)) | 0; - mid = (mid + Math.imul(al7, bh1)) | 0; - mid = (mid + Math.imul(ah7, bl1)) | 0; - hi = (hi + Math.imul(ah7, bh1)) | 0; - lo = (lo + Math.imul(al6, bl2)) | 0; - mid = (mid + Math.imul(al6, bh2)) | 0; - mid = (mid + Math.imul(ah6, bl2)) | 0; - hi = (hi + Math.imul(ah6, bh2)) | 0; - lo = (lo + Math.imul(al5, bl3)) | 0; - mid = (mid + Math.imul(al5, bh3)) | 0; - mid = (mid + Math.imul(ah5, bl3)) | 0; - hi = (hi + Math.imul(ah5, bh3)) | 0; - lo = (lo + Math.imul(al4, bl4)) | 0; - mid = (mid + Math.imul(al4, bh4)) | 0; - mid = (mid + Math.imul(ah4, bl4)) | 0; - hi = (hi + Math.imul(ah4, bh4)) | 0; - lo = (lo + Math.imul(al3, bl5)) | 0; - mid = (mid + Math.imul(al3, bh5)) | 0; - mid = (mid + Math.imul(ah3, bl5)) | 0; - hi = (hi + Math.imul(ah3, bh5)) | 0; - lo = (lo + Math.imul(al2, bl6)) | 0; - mid = (mid + Math.imul(al2, bh6)) | 0; - mid = (mid + Math.imul(ah2, bl6)) | 0; - hi = (hi + Math.imul(ah2, bh6)) | 0; - lo = (lo + Math.imul(al1, bl7)) | 0; - mid = (mid + Math.imul(al1, bh7)) | 0; - mid = (mid + Math.imul(ah1, bl7)) | 0; - hi = (hi + Math.imul(ah1, bh7)) | 0; - lo = (lo + Math.imul(al0, bl8)) | 0; - mid = (mid + Math.imul(al0, bh8)) | 0; - mid = (mid + Math.imul(ah0, bl8)) | 0; - hi = (hi + Math.imul(ah0, bh8)) | 0; - var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0; - w8 &= 0x3ffffff; - /* k = 9 */ - lo = Math.imul(al9, bl0); - mid = Math.imul(al9, bh0); - mid = (mid + Math.imul(ah9, bl0)) | 0; - hi = Math.imul(ah9, bh0); - lo = (lo + Math.imul(al8, bl1)) | 0; - mid = (mid + Math.imul(al8, bh1)) | 0; - mid = (mid + Math.imul(ah8, bl1)) | 0; - hi = (hi + Math.imul(ah8, bh1)) | 0; - lo = (lo + Math.imul(al7, bl2)) | 0; - mid = (mid + Math.imul(al7, bh2)) | 0; - mid = (mid + Math.imul(ah7, bl2)) | 0; - hi = (hi + Math.imul(ah7, bh2)) | 0; - lo = (lo + Math.imul(al6, bl3)) | 0; - mid = (mid + Math.imul(al6, bh3)) | 0; - mid = (mid + Math.imul(ah6, bl3)) | 0; - hi = (hi + Math.imul(ah6, bh3)) | 0; - lo = (lo + Math.imul(al5, bl4)) | 0; - mid = (mid + Math.imul(al5, bh4)) | 0; - mid = (mid + Math.imul(ah5, bl4)) | 0; - hi = (hi + Math.imul(ah5, bh4)) | 0; - lo = (lo + Math.imul(al4, bl5)) | 0; - mid = (mid + Math.imul(al4, bh5)) | 0; - mid = (mid + Math.imul(ah4, bl5)) | 0; - hi = (hi + Math.imul(ah4, bh5)) | 0; - lo = (lo + Math.imul(al3, bl6)) | 0; - mid = (mid + Math.imul(al3, bh6)) | 0; - mid = (mid + Math.imul(ah3, bl6)) | 0; - hi = (hi + Math.imul(ah3, bh6)) | 0; - lo = (lo + Math.imul(al2, bl7)) | 0; - mid = (mid + Math.imul(al2, bh7)) | 0; - mid = (mid + Math.imul(ah2, bl7)) | 0; - hi = (hi + Math.imul(ah2, bh7)) | 0; - lo = (lo + Math.imul(al1, bl8)) | 0; - mid = (mid + Math.imul(al1, bh8)) | 0; - mid = (mid + Math.imul(ah1, bl8)) | 0; - hi = (hi + Math.imul(ah1, bh8)) | 0; - lo = (lo + Math.imul(al0, bl9)) | 0; - mid = (mid + Math.imul(al0, bh9)) | 0; - mid = (mid + Math.imul(ah0, bl9)) | 0; - hi = (hi + Math.imul(ah0, bh9)) | 0; - var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0; - w9 &= 0x3ffffff; - /* k = 10 */ - lo = Math.imul(al9, bl1); - mid = Math.imul(al9, bh1); - mid = (mid + Math.imul(ah9, bl1)) | 0; - hi = Math.imul(ah9, bh1); - lo = (lo + Math.imul(al8, bl2)) | 0; - mid = (mid + Math.imul(al8, bh2)) | 0; - mid = (mid + Math.imul(ah8, bl2)) | 0; - hi = (hi + Math.imul(ah8, bh2)) | 0; - lo = (lo + Math.imul(al7, bl3)) | 0; - mid = (mid + Math.imul(al7, bh3)) | 0; - mid = (mid + Math.imul(ah7, bl3)) | 0; - hi = (hi + Math.imul(ah7, bh3)) | 0; - lo = (lo + Math.imul(al6, bl4)) | 0; - mid = (mid + Math.imul(al6, bh4)) | 0; - mid = (mid + Math.imul(ah6, bl4)) | 0; - hi = (hi + Math.imul(ah6, bh4)) | 0; - lo = (lo + Math.imul(al5, bl5)) | 0; - mid = (mid + Math.imul(al5, bh5)) | 0; - mid = (mid + Math.imul(ah5, bl5)) | 0; - hi = (hi + Math.imul(ah5, bh5)) | 0; - lo = (lo + Math.imul(al4, bl6)) | 0; - mid = (mid + Math.imul(al4, bh6)) | 0; - mid = (mid + Math.imul(ah4, bl6)) | 0; - hi = (hi + Math.imul(ah4, bh6)) | 0; - lo = (lo + Math.imul(al3, bl7)) | 0; - mid = (mid + Math.imul(al3, bh7)) | 0; - mid = (mid + Math.imul(ah3, bl7)) | 0; - hi = (hi + Math.imul(ah3, bh7)) | 0; - lo = (lo + Math.imul(al2, bl8)) | 0; - mid = (mid + Math.imul(al2, bh8)) | 0; - mid = (mid + Math.imul(ah2, bl8)) | 0; - hi = (hi + Math.imul(ah2, bh8)) | 0; - lo = (lo + Math.imul(al1, bl9)) | 0; - mid = (mid + Math.imul(al1, bh9)) | 0; - mid = (mid + Math.imul(ah1, bl9)) | 0; - hi = (hi + Math.imul(ah1, bh9)) | 0; - var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0; - w10 &= 0x3ffffff; - /* k = 11 */ - lo = Math.imul(al9, bl2); - mid = Math.imul(al9, bh2); - mid = (mid + Math.imul(ah9, bl2)) | 0; - hi = Math.imul(ah9, bh2); - lo = (lo + Math.imul(al8, bl3)) | 0; - mid = (mid + Math.imul(al8, bh3)) | 0; - mid = (mid + Math.imul(ah8, bl3)) | 0; - hi = (hi + Math.imul(ah8, bh3)) | 0; - lo = (lo + Math.imul(al7, bl4)) | 0; - mid = (mid + Math.imul(al7, bh4)) | 0; - mid = (mid + Math.imul(ah7, bl4)) | 0; - hi = (hi + Math.imul(ah7, bh4)) | 0; - lo = (lo + Math.imul(al6, bl5)) | 0; - mid = (mid + Math.imul(al6, bh5)) | 0; - mid = (mid + Math.imul(ah6, bl5)) | 0; - hi = (hi + Math.imul(ah6, bh5)) | 0; - lo = (lo + Math.imul(al5, bl6)) | 0; - mid = (mid + Math.imul(al5, bh6)) | 0; - mid = (mid + Math.imul(ah5, bl6)) | 0; - hi = (hi + Math.imul(ah5, bh6)) | 0; - lo = (lo + Math.imul(al4, bl7)) | 0; - mid = (mid + Math.imul(al4, bh7)) | 0; - mid = (mid + Math.imul(ah4, bl7)) | 0; - hi = (hi + Math.imul(ah4, bh7)) | 0; - lo = (lo + Math.imul(al3, bl8)) | 0; - mid = (mid + Math.imul(al3, bh8)) | 0; - mid = (mid + Math.imul(ah3, bl8)) | 0; - hi = (hi + Math.imul(ah3, bh8)) | 0; - lo = (lo + Math.imul(al2, bl9)) | 0; - mid = (mid + Math.imul(al2, bh9)) | 0; - mid = (mid + Math.imul(ah2, bl9)) | 0; - hi = (hi + Math.imul(ah2, bh9)) | 0; - var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0; - w11 &= 0x3ffffff; - /* k = 12 */ - lo = Math.imul(al9, bl3); - mid = Math.imul(al9, bh3); - mid = (mid + Math.imul(ah9, bl3)) | 0; - hi = Math.imul(ah9, bh3); - lo = (lo + Math.imul(al8, bl4)) | 0; - mid = (mid + Math.imul(al8, bh4)) | 0; - mid = (mid + Math.imul(ah8, bl4)) | 0; - hi = (hi + Math.imul(ah8, bh4)) | 0; - lo = (lo + Math.imul(al7, bl5)) | 0; - mid = (mid + Math.imul(al7, bh5)) | 0; - mid = (mid + Math.imul(ah7, bl5)) | 0; - hi = (hi + Math.imul(ah7, bh5)) | 0; - lo = (lo + Math.imul(al6, bl6)) | 0; - mid = (mid + Math.imul(al6, bh6)) | 0; - mid = (mid + Math.imul(ah6, bl6)) | 0; - hi = (hi + Math.imul(ah6, bh6)) | 0; - lo = (lo + Math.imul(al5, bl7)) | 0; - mid = (mid + Math.imul(al5, bh7)) | 0; - mid = (mid + Math.imul(ah5, bl7)) | 0; - hi = (hi + Math.imul(ah5, bh7)) | 0; - lo = (lo + Math.imul(al4, bl8)) | 0; - mid = (mid + Math.imul(al4, bh8)) | 0; - mid = (mid + Math.imul(ah4, bl8)) | 0; - hi = (hi + Math.imul(ah4, bh8)) | 0; - lo = (lo + Math.imul(al3, bl9)) | 0; - mid = (mid + Math.imul(al3, bh9)) | 0; - mid = (mid + Math.imul(ah3, bl9)) | 0; - hi = (hi + Math.imul(ah3, bh9)) | 0; - var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0; - w12 &= 0x3ffffff; - /* k = 13 */ - lo = Math.imul(al9, bl4); - mid = Math.imul(al9, bh4); - mid = (mid + Math.imul(ah9, bl4)) | 0; - hi = Math.imul(ah9, bh4); - lo = (lo + Math.imul(al8, bl5)) | 0; - mid = (mid + Math.imul(al8, bh5)) | 0; - mid = (mid + Math.imul(ah8, bl5)) | 0; - hi = (hi + Math.imul(ah8, bh5)) | 0; - lo = (lo + Math.imul(al7, bl6)) | 0; - mid = (mid + Math.imul(al7, bh6)) | 0; - mid = (mid + Math.imul(ah7, bl6)) | 0; - hi = (hi + Math.imul(ah7, bh6)) | 0; - lo = (lo + Math.imul(al6, bl7)) | 0; - mid = (mid + Math.imul(al6, bh7)) | 0; - mid = (mid + Math.imul(ah6, bl7)) | 0; - hi = (hi + Math.imul(ah6, bh7)) | 0; - lo = (lo + Math.imul(al5, bl8)) | 0; - mid = (mid + Math.imul(al5, bh8)) | 0; - mid = (mid + Math.imul(ah5, bl8)) | 0; - hi = (hi + Math.imul(ah5, bh8)) | 0; - lo = (lo + Math.imul(al4, bl9)) | 0; - mid = (mid + Math.imul(al4, bh9)) | 0; - mid = (mid + Math.imul(ah4, bl9)) | 0; - hi = (hi + Math.imul(ah4, bh9)) | 0; - var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0; - w13 &= 0x3ffffff; - /* k = 14 */ - lo = Math.imul(al9, bl5); - mid = Math.imul(al9, bh5); - mid = (mid + Math.imul(ah9, bl5)) | 0; - hi = Math.imul(ah9, bh5); - lo = (lo + Math.imul(al8, bl6)) | 0; - mid = (mid + Math.imul(al8, bh6)) | 0; - mid = (mid + Math.imul(ah8, bl6)) | 0; - hi = (hi + Math.imul(ah8, bh6)) | 0; - lo = (lo + Math.imul(al7, bl7)) | 0; - mid = (mid + Math.imul(al7, bh7)) | 0; - mid = (mid + Math.imul(ah7, bl7)) | 0; - hi = (hi + Math.imul(ah7, bh7)) | 0; - lo = (lo + Math.imul(al6, bl8)) | 0; - mid = (mid + Math.imul(al6, bh8)) | 0; - mid = (mid + Math.imul(ah6, bl8)) | 0; - hi = (hi + Math.imul(ah6, bh8)) | 0; - lo = (lo + Math.imul(al5, bl9)) | 0; - mid = (mid + Math.imul(al5, bh9)) | 0; - mid = (mid + Math.imul(ah5, bl9)) | 0; - hi = (hi + Math.imul(ah5, bh9)) | 0; - var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0; - w14 &= 0x3ffffff; - /* k = 15 */ - lo = Math.imul(al9, bl6); - mid = Math.imul(al9, bh6); - mid = (mid + Math.imul(ah9, bl6)) | 0; - hi = Math.imul(ah9, bh6); - lo = (lo + Math.imul(al8, bl7)) | 0; - mid = (mid + Math.imul(al8, bh7)) | 0; - mid = (mid + Math.imul(ah8, bl7)) | 0; - hi = (hi + Math.imul(ah8, bh7)) | 0; - lo = (lo + Math.imul(al7, bl8)) | 0; - mid = (mid + Math.imul(al7, bh8)) | 0; - mid = (mid + Math.imul(ah7, bl8)) | 0; - hi = (hi + Math.imul(ah7, bh8)) | 0; - lo = (lo + Math.imul(al6, bl9)) | 0; - mid = (mid + Math.imul(al6, bh9)) | 0; - mid = (mid + Math.imul(ah6, bl9)) | 0; - hi = (hi + Math.imul(ah6, bh9)) | 0; - var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0; - w15 &= 0x3ffffff; - /* k = 16 */ - lo = Math.imul(al9, bl7); - mid = Math.imul(al9, bh7); - mid = (mid + Math.imul(ah9, bl7)) | 0; - hi = Math.imul(ah9, bh7); - lo = (lo + Math.imul(al8, bl8)) | 0; - mid = (mid + Math.imul(al8, bh8)) | 0; - mid = (mid + Math.imul(ah8, bl8)) | 0; - hi = (hi + Math.imul(ah8, bh8)) | 0; - lo = (lo + Math.imul(al7, bl9)) | 0; - mid = (mid + Math.imul(al7, bh9)) | 0; - mid = (mid + Math.imul(ah7, bl9)) | 0; - hi = (hi + Math.imul(ah7, bh9)) | 0; - var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0; - w16 &= 0x3ffffff; - /* k = 17 */ - lo = Math.imul(al9, bl8); - mid = Math.imul(al9, bh8); - mid = (mid + Math.imul(ah9, bl8)) | 0; - hi = Math.imul(ah9, bh8); - lo = (lo + Math.imul(al8, bl9)) | 0; - mid = (mid + Math.imul(al8, bh9)) | 0; - mid = (mid + Math.imul(ah8, bl9)) | 0; - hi = (hi + Math.imul(ah8, bh9)) | 0; - var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0; - w17 &= 0x3ffffff; - /* k = 18 */ - lo = Math.imul(al9, bl9); - mid = Math.imul(al9, bh9); - mid = (mid + Math.imul(ah9, bl9)) | 0; - hi = Math.imul(ah9, bh9); - var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0; - w18 &= 0x3ffffff; - o[0] = w0; - o[1] = w1; - o[2] = w2; - o[3] = w3; - o[4] = w4; - o[5] = w5; - o[6] = w6; - o[7] = w7; - o[8] = w8; - o[9] = w9; - o[10] = w10; - o[11] = w11; - o[12] = w12; - o[13] = w13; - o[14] = w14; - o[15] = w15; - o[16] = w16; - o[17] = w17; - o[18] = w18; - if (c !== 0) { - o[19] = c; - out.length++; - } - return out; - }; - - // Polyfill comb - if (!Math.imul) { - comb10MulTo = smallMulTo; - } - - function bigMulTo (self, num, out) { - out.negative = num.negative ^ self.negative; - out.length = self.length + num.length; - - var carry = 0; - var hncarry = 0; - for (var k = 0; k < out.length - 1; k++) { - // Sum all words with the same `i + j = k` and accumulate `ncarry`, - // note that ncarry could be >= 0x3ffffff - var ncarry = hncarry; - hncarry = 0; - var rword = carry & 0x3ffffff; - var maxJ = Math.min(k, num.length - 1); - for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { - var i = k - j; - var a = self.words[i] | 0; - var b = num.words[j] | 0; - var r = a * b; - - var lo = r & 0x3ffffff; - ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0; - lo = (lo + rword) | 0; - rword = lo & 0x3ffffff; - ncarry = (ncarry + (lo >>> 26)) | 0; - - hncarry += ncarry >>> 26; - ncarry &= 0x3ffffff; - } - out.words[k] = rword; - carry = ncarry; - ncarry = hncarry; - } - if (carry !== 0) { - out.words[k] = carry; - } else { - out.length--; - } - - return out.strip(); - } - - function jumboMulTo (self, num, out) { - var fftm = new FFTM(); - return fftm.mulp(self, num, out); - } - - BN.prototype.mulTo = function mulTo (num, out) { - var res; - var len = this.length + num.length; - if (this.length === 10 && num.length === 10) { - res = comb10MulTo(this, num, out); - } else if (len < 63) { - res = smallMulTo(this, num, out); - } else if (len < 1024) { - res = bigMulTo(this, num, out); - } else { - res = jumboMulTo(this, num, out); - } - - return res; - }; - - // Cooley-Tukey algorithm for FFT - // slightly revisited to rely on looping instead of recursion - - function FFTM (x, y) { - this.x = x; - this.y = y; - } - - FFTM.prototype.makeRBT = function makeRBT (N) { - var t = new Array(N); - var l = BN.prototype._countBits(N) - 1; - for (var i = 0; i < N; i++) { - t[i] = this.revBin(i, l, N); - } - - return t; - }; - - // Returns binary-reversed representation of `x` - FFTM.prototype.revBin = function revBin (x, l, N) { - if (x === 0 || x === N - 1) return x; - - var rb = 0; - for (var i = 0; i < l; i++) { - rb |= (x & 1) << (l - i - 1); - x >>= 1; - } - - return rb; - }; - - // Performs "tweedling" phase, therefore 'emulating' - // behaviour of the recursive algorithm - FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) { - for (var i = 0; i < N; i++) { - rtws[i] = rws[rbt[i]]; - itws[i] = iws[rbt[i]]; - } - }; - - FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) { - this.permute(rbt, rws, iws, rtws, itws, N); - - for (var s = 1; s < N; s <<= 1) { - var l = s << 1; - - var rtwdf = Math.cos(2 * Math.PI / l); - var itwdf = Math.sin(2 * Math.PI / l); - - for (var p = 0; p < N; p += l) { - var rtwdf_ = rtwdf; - var itwdf_ = itwdf; - - for (var j = 0; j < s; j++) { - var re = rtws[p + j]; - var ie = itws[p + j]; - - var ro = rtws[p + j + s]; - var io = itws[p + j + s]; - - var rx = rtwdf_ * ro - itwdf_ * io; - - io = rtwdf_ * io + itwdf_ * ro; - ro = rx; - - rtws[p + j] = re + ro; - itws[p + j] = ie + io; - - rtws[p + j + s] = re - ro; - itws[p + j + s] = ie - io; - - /* jshint maxdepth : false */ - if (j !== l) { - rx = rtwdf * rtwdf_ - itwdf * itwdf_; - - itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_; - rtwdf_ = rx; - } - } - } - } - }; - - FFTM.prototype.guessLen13b = function guessLen13b (n, m) { - var N = Math.max(m, n) | 1; - var odd = N & 1; - var i = 0; - for (N = N / 2 | 0; N; N = N >>> 1) { - i++; - } - - return 1 << i + 1 + odd; - }; - - FFTM.prototype.conjugate = function conjugate (rws, iws, N) { - if (N <= 1) return; - - for (var i = 0; i < N / 2; i++) { - var t = rws[i]; - - rws[i] = rws[N - i - 1]; - rws[N - i - 1] = t; - - t = iws[i]; - - iws[i] = -iws[N - i - 1]; - iws[N - i - 1] = -t; - } - }; - - FFTM.prototype.normalize13b = function normalize13b (ws, N) { - var carry = 0; - for (var i = 0; i < N / 2; i++) { - var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + - Math.round(ws[2 * i] / N) + - carry; - - ws[i] = w & 0x3ffffff; - - if (w < 0x4000000) { - carry = 0; - } else { - carry = w / 0x4000000 | 0; - } - } - - return ws; - }; - - FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) { - var carry = 0; - for (var i = 0; i < len; i++) { - carry = carry + (ws[i] | 0); - - rws[2 * i] = carry & 0x1fff; carry = carry >>> 13; - rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13; - } - - // Pad with zeroes - for (i = 2 * len; i < N; ++i) { - rws[i] = 0; - } - - assert(carry === 0); - assert((carry & ~0x1fff) === 0); - }; - - FFTM.prototype.stub = function stub (N) { - var ph = new Array(N); - for (var i = 0; i < N; i++) { - ph[i] = 0; - } - - return ph; - }; - - FFTM.prototype.mulp = function mulp (x, y, out) { - var N = 2 * this.guessLen13b(x.length, y.length); - - var rbt = this.makeRBT(N); - - var _ = this.stub(N); - - var rws = new Array(N); - var rwst = new Array(N); - var iwst = new Array(N); - - var nrws = new Array(N); - var nrwst = new Array(N); - var niwst = new Array(N); - - var rmws = out.words; - rmws.length = N; - - this.convert13b(x.words, x.length, rws, N); - this.convert13b(y.words, y.length, nrws, N); - - this.transform(rws, _, rwst, iwst, N, rbt); - this.transform(nrws, _, nrwst, niwst, N, rbt); - - for (var i = 0; i < N; i++) { - var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i]; - iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i]; - rwst[i] = rx; - } - - this.conjugate(rwst, iwst, N); - this.transform(rwst, iwst, rmws, _, N, rbt); - this.conjugate(rmws, _, N); - this.normalize13b(rmws, N); - - out.negative = x.negative ^ y.negative; - out.length = x.length + y.length; - return out.strip(); - }; - - // Multiply `this` by `num` - BN.prototype.mul = function mul (num) { - var out = new BN(null); - out.words = new Array(this.length + num.length); - return this.mulTo(num, out); - }; - - // Multiply employing FFT - BN.prototype.mulf = function mulf (num) { - var out = new BN(null); - out.words = new Array(this.length + num.length); - return jumboMulTo(this, num, out); - }; - - // In-place Multiplication - BN.prototype.imul = function imul (num) { - return this.clone().mulTo(num, this); - }; - - BN.prototype.imuln = function imuln (num) { - assert(typeof num === 'number'); - assert(num < 0x4000000); - - // Carry - var carry = 0; - for (var i = 0; i < this.length; i++) { - var w = (this.words[i] | 0) * num; - var lo = (w & 0x3ffffff) + (carry & 0x3ffffff); - carry >>= 26; - carry += (w / 0x4000000) | 0; - // NOTE: lo is 27bit maximum - carry += lo >>> 26; - this.words[i] = lo & 0x3ffffff; - } - - if (carry !== 0) { - this.words[i] = carry; - this.length++; - } - - return this; - }; - - BN.prototype.muln = function muln (num) { - return this.clone().imuln(num); - }; - - // `this` * `this` - BN.prototype.sqr = function sqr () { - return this.mul(this); - }; - - // `this` * `this` in-place - BN.prototype.isqr = function isqr () { - return this.imul(this.clone()); - }; - - // Math.pow(`this`, `num`) - BN.prototype.pow = function pow (num) { - var w = toBitArray(num); - if (w.length === 0) return new BN(1); - - // Skip leading zeroes - var res = this; - for (var i = 0; i < w.length; i++, res = res.sqr()) { - if (w[i] !== 0) break; - } - - if (++i < w.length) { - for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) { - if (w[i] === 0) continue; - - res = res.mul(q); - } - } - - return res; - }; - - // Shift-left in-place - BN.prototype.iushln = function iushln (bits) { - assert(typeof bits === 'number' && bits >= 0); - var r = bits % 26; - var s = (bits - r) / 26; - var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r); - var i; - - if (r !== 0) { - var carry = 0; - - for (i = 0; i < this.length; i++) { - var newCarry = this.words[i] & carryMask; - var c = ((this.words[i] | 0) - newCarry) << r; - this.words[i] = c | carry; - carry = newCarry >>> (26 - r); - } - - if (carry) { - this.words[i] = carry; - this.length++; - } - } - - if (s !== 0) { - for (i = this.length - 1; i >= 0; i--) { - this.words[i + s] = this.words[i]; - } - - for (i = 0; i < s; i++) { - this.words[i] = 0; - } - - this.length += s; - } - - return this.strip(); - }; - - BN.prototype.ishln = function ishln (bits) { - // TODO(indutny): implement me - assert(this.negative === 0); - return this.iushln(bits); - }; - - // Shift-right in-place - // NOTE: `hint` is a lowest bit before trailing zeroes - // NOTE: if `extended` is present - it will be filled with destroyed bits - BN.prototype.iushrn = function iushrn (bits, hint, extended) { - assert(typeof bits === 'number' && bits >= 0); - var h; - if (hint) { - h = (hint - (hint % 26)) / 26; - } else { - h = 0; - } - - var r = bits % 26; - var s = Math.min((bits - r) / 26, this.length); - var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r); - var maskedWords = extended; - - h -= s; - h = Math.max(0, h); - - // Extended mode, copy masked part - if (maskedWords) { - for (var i = 0; i < s; i++) { - maskedWords.words[i] = this.words[i]; - } - maskedWords.length = s; - } - - if (s === 0) { - // No-op, we should not move anything at all - } else if (this.length > s) { - this.length -= s; - for (i = 0; i < this.length; i++) { - this.words[i] = this.words[i + s]; - } - } else { - this.words[0] = 0; - this.length = 1; - } - - var carry = 0; - for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) { - var word = this.words[i] | 0; - this.words[i] = (carry << (26 - r)) | (word >>> r); - carry = word & mask; - } - - // Push carried bits as a mask - if (maskedWords && carry !== 0) { - maskedWords.words[maskedWords.length++] = carry; - } - - if (this.length === 0) { - this.words[0] = 0; - this.length = 1; - } - - return this.strip(); - }; - - BN.prototype.ishrn = function ishrn (bits, hint, extended) { - // TODO(indutny): implement me - assert(this.negative === 0); - return this.iushrn(bits, hint, extended); - }; - - // Shift-left - BN.prototype.shln = function shln (bits) { - return this.clone().ishln(bits); - }; - - BN.prototype.ushln = function ushln (bits) { - return this.clone().iushln(bits); - }; - - // Shift-right - BN.prototype.shrn = function shrn (bits) { - return this.clone().ishrn(bits); - }; - - BN.prototype.ushrn = function ushrn (bits) { - return this.clone().iushrn(bits); - }; - - // Test if n bit is set - BN.prototype.testn = function testn (bit) { - assert(typeof bit === 'number' && bit >= 0); - var r = bit % 26; - var s = (bit - r) / 26; - var q = 1 << r; - - // Fast case: bit is much higher than all existing words - if (this.length <= s) return false; - - // Check bit and return - var w = this.words[s]; - - return !!(w & q); - }; - - // Return only lowers bits of number (in-place) - BN.prototype.imaskn = function imaskn (bits) { - assert(typeof bits === 'number' && bits >= 0); - var r = bits % 26; - var s = (bits - r) / 26; - - assert(this.negative === 0, 'imaskn works only with positive numbers'); - - if (this.length <= s) { - return this; - } - - if (r !== 0) { - s++; - } - this.length = Math.min(s, this.length); - - if (r !== 0) { - var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r); - this.words[this.length - 1] &= mask; - } - - return this.strip(); - }; - - // Return only lowers bits of number - BN.prototype.maskn = function maskn (bits) { - return this.clone().imaskn(bits); - }; - - // Add plain number `num` to `this` - BN.prototype.iaddn = function iaddn (num) { - assert(typeof num === 'number'); - assert(num < 0x4000000); - if (num < 0) return this.isubn(-num); - - // Possible sign change - if (this.negative !== 0) { - if (this.length === 1 && (this.words[0] | 0) < num) { - this.words[0] = num - (this.words[0] | 0); - this.negative = 0; - return this; - } - - this.negative = 0; - this.isubn(num); - this.negative = 1; - return this; - } - - // Add without checks - return this._iaddn(num); - }; - - BN.prototype._iaddn = function _iaddn (num) { - this.words[0] += num; - - // Carry - for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) { - this.words[i] -= 0x4000000; - if (i === this.length - 1) { - this.words[i + 1] = 1; - } else { - this.words[i + 1]++; - } - } - this.length = Math.max(this.length, i + 1); - - return this; - }; - - // Subtract plain number `num` from `this` - BN.prototype.isubn = function isubn (num) { - assert(typeof num === 'number'); - assert(num < 0x4000000); - if (num < 0) return this.iaddn(-num); - - if (this.negative !== 0) { - this.negative = 0; - this.iaddn(num); - this.negative = 1; - return this; - } - - this.words[0] -= num; - - if (this.length === 1 && this.words[0] < 0) { - this.words[0] = -this.words[0]; - this.negative = 1; - } else { - // Carry - for (var i = 0; i < this.length && this.words[i] < 0; i++) { - this.words[i] += 0x4000000; - this.words[i + 1] -= 1; - } - } - - return this.strip(); - }; - - BN.prototype.addn = function addn (num) { - return this.clone().iaddn(num); - }; - - BN.prototype.subn = function subn (num) { - return this.clone().isubn(num); - }; - - BN.prototype.iabs = function iabs () { - this.negative = 0; - - return this; - }; - - BN.prototype.abs = function abs () { - return this.clone().iabs(); - }; - - BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) { - var len = num.length + shift; - var i; - - this._expand(len); - - var w; - var carry = 0; - for (i = 0; i < num.length; i++) { - w = (this.words[i + shift] | 0) + carry; - var right = (num.words[i] | 0) * mul; - w -= right & 0x3ffffff; - carry = (w >> 26) - ((right / 0x4000000) | 0); - this.words[i + shift] = w & 0x3ffffff; - } - for (; i < this.length - shift; i++) { - w = (this.words[i + shift] | 0) + carry; - carry = w >> 26; - this.words[i + shift] = w & 0x3ffffff; - } - - if (carry === 0) return this.strip(); - - // Subtraction overflow - assert(carry === -1); - carry = 0; - for (i = 0; i < this.length; i++) { - w = -(this.words[i] | 0) + carry; - carry = w >> 26; - this.words[i] = w & 0x3ffffff; - } - this.negative = 1; - - return this.strip(); - }; - - BN.prototype._wordDiv = function _wordDiv (num, mode) { - var shift = this.length - num.length; - - var a = this.clone(); - var b = num; - - // Normalize - var bhi = b.words[b.length - 1] | 0; - var bhiBits = this._countBits(bhi); - shift = 26 - bhiBits; - if (shift !== 0) { - b = b.ushln(shift); - a.iushln(shift); - bhi = b.words[b.length - 1] | 0; - } - - // Initialize quotient - var m = a.length - b.length; - var q; - - if (mode !== 'mod') { - q = new BN(null); - q.length = m + 1; - q.words = new Array(q.length); - for (var i = 0; i < q.length; i++) { - q.words[i] = 0; - } - } - - var diff = a.clone()._ishlnsubmul(b, 1, m); - if (diff.negative === 0) { - a = diff; - if (q) { - q.words[m] = 1; - } - } - - for (var j = m - 1; j >= 0; j--) { - var qj = (a.words[b.length + j] | 0) * 0x4000000 + - (a.words[b.length + j - 1] | 0); - - // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max - // (0x7ffffff) - qj = Math.min((qj / bhi) | 0, 0x3ffffff); - - a._ishlnsubmul(b, qj, j); - while (a.negative !== 0) { - qj--; - a.negative = 0; - a._ishlnsubmul(b, 1, j); - if (!a.isZero()) { - a.negative ^= 1; - } - } - if (q) { - q.words[j] = qj; - } - } - if (q) { - q.strip(); - } - a.strip(); - - // Denormalize - if (mode !== 'div' && shift !== 0) { - a.iushrn(shift); - } - - return { - div: q || null, - mod: a - }; - }; - - // NOTE: 1) `mode` can be set to `mod` to request mod only, - // to `div` to request div only, or be absent to - // request both div & mod - // 2) `positive` is true if unsigned mod is requested - BN.prototype.divmod = function divmod (num, mode, positive) { - assert(!num.isZero()); - - if (this.isZero()) { - return { - div: new BN(0), - mod: new BN(0) - }; - } - - var div, mod, res; - if (this.negative !== 0 && num.negative === 0) { - res = this.neg().divmod(num, mode); - - if (mode !== 'mod') { - div = res.div.neg(); - } - - if (mode !== 'div') { - mod = res.mod.neg(); - if (positive && mod.negative !== 0) { - mod.iadd(num); - } - } - - return { - div: div, - mod: mod - }; - } - - if (this.negative === 0 && num.negative !== 0) { - res = this.divmod(num.neg(), mode); - - if (mode !== 'mod') { - div = res.div.neg(); - } - - return { - div: div, - mod: res.mod - }; - } - - if ((this.negative & num.negative) !== 0) { - res = this.neg().divmod(num.neg(), mode); - - if (mode !== 'div') { - mod = res.mod.neg(); - if (positive && mod.negative !== 0) { - mod.isub(num); - } - } - - return { - div: res.div, - mod: mod - }; - } - - // Both numbers are positive at this point - - // Strip both numbers to approximate shift value - if (num.length > this.length || this.cmp(num) < 0) { - return { - div: new BN(0), - mod: this - }; - } - - // Very short reduction - if (num.length === 1) { - if (mode === 'div') { - return { - div: this.divn(num.words[0]), - mod: null - }; - } - - if (mode === 'mod') { - return { - div: null, - mod: new BN(this.modn(num.words[0])) - }; - } - - return { - div: this.divn(num.words[0]), - mod: new BN(this.modn(num.words[0])) - }; - } - - return this._wordDiv(num, mode); - }; - - // Find `this` / `num` - BN.prototype.div = function div (num) { - return this.divmod(num, 'div', false).div; - }; - - // Find `this` % `num` - BN.prototype.mod = function mod (num) { - return this.divmod(num, 'mod', false).mod; - }; - - BN.prototype.umod = function umod (num) { - return this.divmod(num, 'mod', true).mod; - }; - - // Find Round(`this` / `num`) - BN.prototype.divRound = function divRound (num) { - var dm = this.divmod(num); - - // Fast case - exact division - if (dm.mod.isZero()) return dm.div; - - var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod; - - var half = num.ushrn(1); - var r2 = num.andln(1); - var cmp = mod.cmp(half); - - // Round down - if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; - - // Round up - return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1); - }; - - BN.prototype.modn = function modn (num) { - assert(num <= 0x3ffffff); - var p = (1 << 26) % num; - - var acc = 0; - for (var i = this.length - 1; i >= 0; i--) { - acc = (p * acc + (this.words[i] | 0)) % num; - } - - return acc; - }; - - // In-place division by number - BN.prototype.idivn = function idivn (num) { - assert(num <= 0x3ffffff); - - var carry = 0; - for (var i = this.length - 1; i >= 0; i--) { - var w = (this.words[i] | 0) + carry * 0x4000000; - this.words[i] = (w / num) | 0; - carry = w % num; - } - - return this.strip(); - }; - - BN.prototype.divn = function divn (num) { - return this.clone().idivn(num); - }; - - BN.prototype.egcd = function egcd (p) { - assert(p.negative === 0); - assert(!p.isZero()); - - var x = this; - var y = p.clone(); - - if (x.negative !== 0) { - x = x.umod(p); - } else { - x = x.clone(); - } - - // A * x + B * y = x - var A = new BN(1); - var B = new BN(0); - - // C * x + D * y = y - var C = new BN(0); - var D = new BN(1); - - var g = 0; - - while (x.isEven() && y.isEven()) { - x.iushrn(1); - y.iushrn(1); - ++g; - } - - var yp = y.clone(); - var xp = x.clone(); - - while (!x.isZero()) { - for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1); - if (i > 0) { - x.iushrn(i); - while (i-- > 0) { - if (A.isOdd() || B.isOdd()) { - A.iadd(yp); - B.isub(xp); - } - - A.iushrn(1); - B.iushrn(1); - } - } - - for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); - if (j > 0) { - y.iushrn(j); - while (j-- > 0) { - if (C.isOdd() || D.isOdd()) { - C.iadd(yp); - D.isub(xp); - } - - C.iushrn(1); - D.iushrn(1); - } - } - - if (x.cmp(y) >= 0) { - x.isub(y); - A.isub(C); - B.isub(D); - } else { - y.isub(x); - C.isub(A); - D.isub(B); - } - } - - return { - a: C, - b: D, - gcd: y.iushln(g) - }; - }; - - // This is reduced incarnation of the binary EEA - // above, designated to invert members of the - // _prime_ fields F(p) at a maximal speed - BN.prototype._invmp = function _invmp (p) { - assert(p.negative === 0); - assert(!p.isZero()); - - var a = this; - var b = p.clone(); - - if (a.negative !== 0) { - a = a.umod(p); - } else { - a = a.clone(); - } - - var x1 = new BN(1); - var x2 = new BN(0); - - var delta = b.clone(); - - while (a.cmpn(1) > 0 && b.cmpn(1) > 0) { - for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1); - if (i > 0) { - a.iushrn(i); - while (i-- > 0) { - if (x1.isOdd()) { - x1.iadd(delta); - } - - x1.iushrn(1); - } - } - - for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); - if (j > 0) { - b.iushrn(j); - while (j-- > 0) { - if (x2.isOdd()) { - x2.iadd(delta); - } - - x2.iushrn(1); - } - } - - if (a.cmp(b) >= 0) { - a.isub(b); - x1.isub(x2); - } else { - b.isub(a); - x2.isub(x1); - } - } - - var res; - if (a.cmpn(1) === 0) { - res = x1; - } else { - res = x2; - } - - if (res.cmpn(0) < 0) { - res.iadd(p); - } - - return res; - }; - - BN.prototype.gcd = function gcd (num) { - if (this.isZero()) return num.abs(); - if (num.isZero()) return this.abs(); - - var a = this.clone(); - var b = num.clone(); - a.negative = 0; - b.negative = 0; - - // Remove common factor of two - for (var shift = 0; a.isEven() && b.isEven(); shift++) { - a.iushrn(1); - b.iushrn(1); - } - - do { - while (a.isEven()) { - a.iushrn(1); - } - while (b.isEven()) { - b.iushrn(1); - } - - var r = a.cmp(b); - if (r < 0) { - // Swap `a` and `b` to make `a` always bigger than `b` - var t = a; - a = b; - b = t; - } else if (r === 0 || b.cmpn(1) === 0) { - break; - } - - a.isub(b); - } while (true); - - return b.iushln(shift); - }; - - // Invert number in the field F(num) - BN.prototype.invm = function invm (num) { - return this.egcd(num).a.umod(num); - }; - - BN.prototype.isEven = function isEven () { - return (this.words[0] & 1) === 0; - }; - - BN.prototype.isOdd = function isOdd () { - return (this.words[0] & 1) === 1; - }; - - // And first word and num - BN.prototype.andln = function andln (num) { - return this.words[0] & num; - }; - - // Increment at the bit position in-line - BN.prototype.bincn = function bincn (bit) { - assert(typeof bit === 'number'); - var r = bit % 26; - var s = (bit - r) / 26; - var q = 1 << r; - - // Fast case: bit is much higher than all existing words - if (this.length <= s) { - this._expand(s + 1); - this.words[s] |= q; - return this; - } - - // Add bit and propagate, if needed - var carry = q; - for (var i = s; carry !== 0 && i < this.length; i++) { - var w = this.words[i] | 0; - w += carry; - carry = w >>> 26; - w &= 0x3ffffff; - this.words[i] = w; - } - if (carry !== 0) { - this.words[i] = carry; - this.length++; - } - return this; - }; - - BN.prototype.isZero = function isZero () { - return this.length === 1 && this.words[0] === 0; - }; - - BN.prototype.cmpn = function cmpn (num) { - var negative = num < 0; - - if (this.negative !== 0 && !negative) return -1; - if (this.negative === 0 && negative) return 1; - - this.strip(); - - var res; - if (this.length > 1) { - res = 1; - } else { - if (negative) { - num = -num; - } - - assert(num <= 0x3ffffff, 'Number is too big'); - - var w = this.words[0] | 0; - res = w === num ? 0 : w < num ? -1 : 1; - } - if (this.negative !== 0) return -res | 0; - return res; - }; - - // Compare two numbers and return: - // 1 - if `this` > `num` - // 0 - if `this` == `num` - // -1 - if `this` < `num` - BN.prototype.cmp = function cmp (num) { - if (this.negative !== 0 && num.negative === 0) return -1; - if (this.negative === 0 && num.negative !== 0) return 1; - - var res = this.ucmp(num); - if (this.negative !== 0) return -res | 0; - return res; - }; - - // Unsigned comparison - BN.prototype.ucmp = function ucmp (num) { - // At this point both numbers have the same sign - if (this.length > num.length) return 1; - if (this.length < num.length) return -1; - - var res = 0; - for (var i = this.length - 1; i >= 0; i--) { - var a = this.words[i] | 0; - var b = num.words[i] | 0; - - if (a === b) continue; - if (a < b) { - res = -1; - } else if (a > b) { - res = 1; - } - break; - } - return res; - }; - - BN.prototype.gtn = function gtn (num) { - return this.cmpn(num) === 1; - }; - - BN.prototype.gt = function gt (num) { - return this.cmp(num) === 1; - }; - - BN.prototype.gten = function gten (num) { - return this.cmpn(num) >= 0; - }; - - BN.prototype.gte = function gte (num) { - return this.cmp(num) >= 0; - }; - - BN.prototype.ltn = function ltn (num) { - return this.cmpn(num) === -1; - }; - - BN.prototype.lt = function lt (num) { - return this.cmp(num) === -1; - }; - - BN.prototype.lten = function lten (num) { - return this.cmpn(num) <= 0; - }; - - BN.prototype.lte = function lte (num) { - return this.cmp(num) <= 0; - }; - - BN.prototype.eqn = function eqn (num) { - return this.cmpn(num) === 0; - }; - - BN.prototype.eq = function eq (num) { - return this.cmp(num) === 0; - }; - - // - // A reduce context, could be using montgomery or something better, depending - // on the `m` itself. - // - BN.red = function red (num) { - return new Red(num); - }; - - BN.prototype.toRed = function toRed (ctx) { - assert(!this.red, 'Already a number in reduction context'); - assert(this.negative === 0, 'red works only with positives'); - return ctx.convertTo(this)._forceRed(ctx); - }; - - BN.prototype.fromRed = function fromRed () { - assert(this.red, 'fromRed works only with numbers in reduction context'); - return this.red.convertFrom(this); - }; - - BN.prototype._forceRed = function _forceRed (ctx) { - this.red = ctx; - return this; - }; - - BN.prototype.forceRed = function forceRed (ctx) { - assert(!this.red, 'Already a number in reduction context'); - return this._forceRed(ctx); - }; - - BN.prototype.redAdd = function redAdd (num) { - assert(this.red, 'redAdd works only with red numbers'); - return this.red.add(this, num); - }; - - BN.prototype.redIAdd = function redIAdd (num) { - assert(this.red, 'redIAdd works only with red numbers'); - return this.red.iadd(this, num); - }; - - BN.prototype.redSub = function redSub (num) { - assert(this.red, 'redSub works only with red numbers'); - return this.red.sub(this, num); - }; - - BN.prototype.redISub = function redISub (num) { - assert(this.red, 'redISub works only with red numbers'); - return this.red.isub(this, num); - }; - - BN.prototype.redShl = function redShl (num) { - assert(this.red, 'redShl works only with red numbers'); - return this.red.shl(this, num); - }; - - BN.prototype.redMul = function redMul (num) { - assert(this.red, 'redMul works only with red numbers'); - this.red._verify2(this, num); - return this.red.mul(this, num); - }; - - BN.prototype.redIMul = function redIMul (num) { - assert(this.red, 'redMul works only with red numbers'); - this.red._verify2(this, num); - return this.red.imul(this, num); - }; - - BN.prototype.redSqr = function redSqr () { - assert(this.red, 'redSqr works only with red numbers'); - this.red._verify1(this); - return this.red.sqr(this); - }; - - BN.prototype.redISqr = function redISqr () { - assert(this.red, 'redISqr works only with red numbers'); - this.red._verify1(this); - return this.red.isqr(this); - }; - - // Square root over p - BN.prototype.redSqrt = function redSqrt () { - assert(this.red, 'redSqrt works only with red numbers'); - this.red._verify1(this); - return this.red.sqrt(this); - }; - - BN.prototype.redInvm = function redInvm () { - assert(this.red, 'redInvm works only with red numbers'); - this.red._verify1(this); - return this.red.invm(this); - }; - - // Return negative clone of `this` % `red modulo` - BN.prototype.redNeg = function redNeg () { - assert(this.red, 'redNeg works only with red numbers'); - this.red._verify1(this); - return this.red.neg(this); - }; - - BN.prototype.redPow = function redPow (num) { - assert(this.red && !num.red, 'redPow(normalNum)'); - this.red._verify1(this); - return this.red.pow(this, num); - }; - - // Prime numbers with efficient reduction - var primes = { - k256: null, - p224: null, - p192: null, - p25519: null - }; - - // Pseudo-Mersenne prime - function MPrime (name, p) { - // P = 2 ^ N - K - this.name = name; - this.p = new BN(p, 16); - this.n = this.p.bitLength(); - this.k = new BN(1).iushln(this.n).isub(this.p); - - this.tmp = this._tmp(); - } - - MPrime.prototype._tmp = function _tmp () { - var tmp = new BN(null); - tmp.words = new Array(Math.ceil(this.n / 13)); - return tmp; - }; - - MPrime.prototype.ireduce = function ireduce (num) { - // Assumes that `num` is less than `P^2` - // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P) - var r = num; - var rlen; - - do { - this.split(r, this.tmp); - r = this.imulK(r); - r = r.iadd(this.tmp); - rlen = r.bitLength(); - } while (rlen > this.n); - - var cmp = rlen < this.n ? -1 : r.ucmp(this.p); - if (cmp === 0) { - r.words[0] = 0; - r.length = 1; - } else if (cmp > 0) { - r.isub(this.p); - } else { - r.strip(); - } - - return r; - }; - - MPrime.prototype.split = function split (input, out) { - input.iushrn(this.n, 0, out); - }; - - MPrime.prototype.imulK = function imulK (num) { - return num.imul(this.k); - }; - - function K256 () { - MPrime.call( - this, - 'k256', - 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f'); - } - inherits(K256, MPrime); - - K256.prototype.split = function split (input, output) { - // 256 = 9 * 26 + 22 - var mask = 0x3fffff; - - var outLen = Math.min(input.length, 9); - for (var i = 0; i < outLen; i++) { - output.words[i] = input.words[i]; - } - output.length = outLen; - - if (input.length <= 9) { - input.words[0] = 0; - input.length = 1; - return; - } - - // Shift by 9 limbs - var prev = input.words[9]; - output.words[output.length++] = prev & mask; - - for (i = 10; i < input.length; i++) { - var next = input.words[i] | 0; - input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22); - prev = next; - } - prev >>>= 22; - input.words[i - 10] = prev; - if (prev === 0 && input.length > 10) { - input.length -= 10; - } else { - input.length -= 9; - } - }; - - K256.prototype.imulK = function imulK (num) { - // K = 0x1000003d1 = [ 0x40, 0x3d1 ] - num.words[num.length] = 0; - num.words[num.length + 1] = 0; - num.length += 2; - - // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390 - var lo = 0; - for (var i = 0; i < num.length; i++) { - var w = num.words[i] | 0; - lo += w * 0x3d1; - num.words[i] = lo & 0x3ffffff; - lo = w * 0x40 + ((lo / 0x4000000) | 0); - } - - // Fast length reduction - if (num.words[num.length - 1] === 0) { - num.length--; - if (num.words[num.length - 1] === 0) { - num.length--; - } - } - return num; - }; - - function P224 () { - MPrime.call( - this, - 'p224', - 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001'); - } - inherits(P224, MPrime); - - function P192 () { - MPrime.call( - this, - 'p192', - 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff'); - } - inherits(P192, MPrime); - - function P25519 () { - // 2 ^ 255 - 19 - MPrime.call( - this, - '25519', - '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed'); - } - inherits(P25519, MPrime); - - P25519.prototype.imulK = function imulK (num) { - // K = 0x13 - var carry = 0; - for (var i = 0; i < num.length; i++) { - var hi = (num.words[i] | 0) * 0x13 + carry; - var lo = hi & 0x3ffffff; - hi >>>= 26; - - num.words[i] = lo; - carry = hi; - } - if (carry !== 0) { - num.words[num.length++] = carry; - } - return num; - }; - - // Exported mostly for testing purposes, use plain name instead - BN._prime = function prime (name) { - // Cached version of prime - if (primes[name]) return primes[name]; - - var prime; - if (name === 'k256') { - prime = new K256(); - } else if (name === 'p224') { - prime = new P224(); - } else if (name === 'p192') { - prime = new P192(); - } else if (name === 'p25519') { - prime = new P25519(); - } else { - throw new Error('Unknown prime ' + name); - } - primes[name] = prime; - - return prime; - }; - - // - // Base reduction engine - // - function Red (m) { - if (typeof m === 'string') { - var prime = BN._prime(m); - this.m = prime.p; - this.prime = prime; - } else { - assert(m.gtn(1), 'modulus must be greater than 1'); - this.m = m; - this.prime = null; - } - } - - Red.prototype._verify1 = function _verify1 (a) { - assert(a.negative === 0, 'red works only with positives'); - assert(a.red, 'red works only with red numbers'); - }; - - Red.prototype._verify2 = function _verify2 (a, b) { - assert((a.negative | b.negative) === 0, 'red works only with positives'); - assert(a.red && a.red === b.red, - 'red works only with red numbers'); - }; - - Red.prototype.imod = function imod (a) { - if (this.prime) return this.prime.ireduce(a)._forceRed(this); - return a.umod(this.m)._forceRed(this); - }; - - Red.prototype.neg = function neg (a) { - if (a.isZero()) { - return a.clone(); - } - - return this.m.sub(a)._forceRed(this); - }; - - Red.prototype.add = function add (a, b) { - this._verify2(a, b); - - var res = a.add(b); - if (res.cmp(this.m) >= 0) { - res.isub(this.m); - } - return res._forceRed(this); - }; - - Red.prototype.iadd = function iadd (a, b) { - this._verify2(a, b); - - var res = a.iadd(b); - if (res.cmp(this.m) >= 0) { - res.isub(this.m); - } - return res; - }; - - Red.prototype.sub = function sub (a, b) { - this._verify2(a, b); - - var res = a.sub(b); - if (res.cmpn(0) < 0) { - res.iadd(this.m); - } - return res._forceRed(this); - }; - - Red.prototype.isub = function isub (a, b) { - this._verify2(a, b); - - var res = a.isub(b); - if (res.cmpn(0) < 0) { - res.iadd(this.m); - } - return res; - }; - - Red.prototype.shl = function shl (a, num) { - this._verify1(a); - return this.imod(a.ushln(num)); - }; - - Red.prototype.imul = function imul (a, b) { - this._verify2(a, b); - return this.imod(a.imul(b)); - }; - - Red.prototype.mul = function mul (a, b) { - this._verify2(a, b); - return this.imod(a.mul(b)); - }; - - Red.prototype.isqr = function isqr (a) { - return this.imul(a, a.clone()); - }; - - Red.prototype.sqr = function sqr (a) { - return this.mul(a, a); - }; - - Red.prototype.sqrt = function sqrt (a) { - if (a.isZero()) return a.clone(); - - var mod3 = this.m.andln(3); - assert(mod3 % 2 === 1); - - // Fast case - if (mod3 === 3) { - var pow = this.m.add(new BN(1)).iushrn(2); - return this.pow(a, pow); - } - - // Tonelli-Shanks algorithm (Totally unoptimized and slow) - // - // Find Q and S, that Q * 2 ^ S = (P - 1) - var q = this.m.subn(1); - var s = 0; - while (!q.isZero() && q.andln(1) === 0) { - s++; - q.iushrn(1); - } - assert(!q.isZero()); - - var one = new BN(1).toRed(this); - var nOne = one.redNeg(); - - // Find quadratic non-residue - // NOTE: Max is such because of generalized Riemann hypothesis. - var lpow = this.m.subn(1).iushrn(1); - var z = this.m.bitLength(); - z = new BN(2 * z * z).toRed(this); - - while (this.pow(z, lpow).cmp(nOne) !== 0) { - z.redIAdd(nOne); - } - - var c = this.pow(z, q); - var r = this.pow(a, q.addn(1).iushrn(1)); - var t = this.pow(a, q); - var m = s; - while (t.cmp(one) !== 0) { - var tmp = t; - for (var i = 0; tmp.cmp(one) !== 0; i++) { - tmp = tmp.redSqr(); - } - assert(i < m); - var b = this.pow(c, new BN(1).iushln(m - i - 1)); - - r = r.redMul(b); - c = b.redSqr(); - t = t.redMul(c); - m = i; - } - - return r; - }; - - Red.prototype.invm = function invm (a) { - var inv = a._invmp(this.m); - if (inv.negative !== 0) { - inv.negative = 0; - return this.imod(inv).redNeg(); - } else { - return this.imod(inv); - } - }; - - Red.prototype.pow = function pow (a, num) { - if (num.isZero()) return new BN(1).toRed(this); - if (num.cmpn(1) === 0) return a.clone(); - - var windowSize = 4; - var wnd = new Array(1 << windowSize); - wnd[0] = new BN(1).toRed(this); - wnd[1] = a; - for (var i = 2; i < wnd.length; i++) { - wnd[i] = this.mul(wnd[i - 1], a); - } - - var res = wnd[0]; - var current = 0; - var currentLen = 0; - var start = num.bitLength() % 26; - if (start === 0) { - start = 26; - } - - for (i = num.length - 1; i >= 0; i--) { - var word = num.words[i]; - for (var j = start - 1; j >= 0; j--) { - var bit = (word >> j) & 1; - if (res !== wnd[0]) { - res = this.sqr(res); - } - - if (bit === 0 && current === 0) { - currentLen = 0; - continue; - } - - current <<= 1; - current |= bit; - currentLen++; - if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue; - - res = this.mul(res, wnd[current]); - currentLen = 0; - current = 0; - } - start = 26; - } - - return res; - }; - - Red.prototype.convertTo = function convertTo (num) { - var r = num.umod(this.m); - - return r === num ? r.clone() : r; - }; - - Red.prototype.convertFrom = function convertFrom (num) { - var res = num.clone(); - res.red = null; - return res; - }; - - // - // Montgomery method engine - // - - BN.mont = function mont (num) { - return new Mont(num); - }; - - function Mont (m) { - Red.call(this, m); - - this.shift = this.m.bitLength(); - if (this.shift % 26 !== 0) { - this.shift += 26 - (this.shift % 26); - } - - this.r = new BN(1).iushln(this.shift); - this.r2 = this.imod(this.r.sqr()); - this.rinv = this.r._invmp(this.m); - - this.minv = this.rinv.mul(this.r).isubn(1).div(this.m); - this.minv = this.minv.umod(this.r); - this.minv = this.r.sub(this.minv); - } - inherits(Mont, Red); - - Mont.prototype.convertTo = function convertTo (num) { - return this.imod(num.ushln(this.shift)); - }; - - Mont.prototype.convertFrom = function convertFrom (num) { - var r = this.imod(num.mul(this.rinv)); - r.red = null; - return r; - }; - - Mont.prototype.imul = function imul (a, b) { - if (a.isZero() || b.isZero()) { - a.words[0] = 0; - a.length = 1; - return a; - } - - var t = a.imul(b); - var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); - var u = t.isub(c).iushrn(this.shift); - var res = u; - - if (u.cmp(this.m) >= 0) { - res = u.isub(this.m); - } else if (u.cmpn(0) < 0) { - res = u.iadd(this.m); - } - - return res._forceRed(this); - }; - - Mont.prototype.mul = function mul (a, b) { - if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this); - - var t = a.mul(b); - var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); - var u = t.isub(c).iushrn(this.shift); - var res = u; - if (u.cmp(this.m) >= 0) { - res = u.isub(this.m); - } else if (u.cmpn(0) < 0) { - res = u.iadd(this.m); - } - - return res._forceRed(this); - }; - - Mont.prototype.invm = function invm (a) { - // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R - var res = this.imod(a._invmp(this.m).mul(this.r2)); - return res._forceRed(this); - }; -})(typeof module === 'undefined' || module, this); - -},{"buffer":149}],148:[function(require,module,exports){ -var r; - -module.exports = function rand(len) { - if (!r) - r = new Rand(null); - - return r.generate(len); -}; - -function Rand(rand) { - this.rand = rand; -} -module.exports.Rand = Rand; - -Rand.prototype.generate = function generate(len) { - return this._rand(len); -}; - -// Emulate crypto API using randy -Rand.prototype._rand = function _rand(n) { - if (this.rand.getBytes) - return this.rand.getBytes(n); - - var res = new Uint8Array(n); - for (var i = 0; i < res.length; i++) - res[i] = this.rand.getByte(); - return res; -}; - -if (typeof self === 'object') { - if (self.crypto && self.crypto.getRandomValues) { - // Modern browsers - Rand.prototype._rand = function _rand(n) { - var arr = new Uint8Array(n); - self.crypto.getRandomValues(arr); - return arr; - }; - } else if (self.msCrypto && self.msCrypto.getRandomValues) { - // IE - Rand.prototype._rand = function _rand(n) { - var arr = new Uint8Array(n); - self.msCrypto.getRandomValues(arr); - return arr; - }; - - // Safari's WebWorkers do not have `crypto` - } else if (typeof window === 'object') { - // Old junk - Rand.prototype._rand = function() { - throw new Error('Not implemented yet'); - }; - } -} else { - // Node.js or Web worker with no crypto support - try { - var crypto = require('crypto'); - if (typeof crypto.randomBytes !== 'function') - throw new Error('Not supported'); - - Rand.prototype._rand = function _rand(n) { - return crypto.randomBytes(n); - }; - } catch (e) { - } -} - -},{"crypto":149}],149:[function(require,module,exports){ - -},{}],150:[function(require,module,exports){ -// based on the aes implimentation in triple sec -// https://github.com/keybase/triplesec -// which is in turn based on the one from crypto-js -// https://code.google.com/p/crypto-js/ - -var Buffer = require('safe-buffer').Buffer - -function asUInt32Array (buf) { - if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf) - - var len = (buf.length / 4) | 0 - var out = new Array(len) - - for (var i = 0; i < len; i++) { - out[i] = buf.readUInt32BE(i * 4) - } - - return out -} - -function scrubVec (v) { - for (var i = 0; i < v.length; v++) { - v[i] = 0 - } -} - -function cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) { - var SUB_MIX0 = SUB_MIX[0] - var SUB_MIX1 = SUB_MIX[1] - var SUB_MIX2 = SUB_MIX[2] - var SUB_MIX3 = SUB_MIX[3] - - var s0 = M[0] ^ keySchedule[0] - var s1 = M[1] ^ keySchedule[1] - var s2 = M[2] ^ keySchedule[2] - var s3 = M[3] ^ keySchedule[3] - var t0, t1, t2, t3 - var ksRow = 4 - - for (var round = 1; round < nRounds; round++) { - t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++] - t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++] - t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++] - t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++] - s0 = t0 - s1 = t1 - s2 = t2 - s3 = t3 - } - - t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++] - t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++] - t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++] - t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++] - t0 = t0 >>> 0 - t1 = t1 >>> 0 - t2 = t2 >>> 0 - t3 = t3 >>> 0 - - return [t0, t1, t2, t3] -} - -// AES constants -var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36] -var G = (function () { - // Compute double table - var d = new Array(256) - for (var j = 0; j < 256; j++) { - if (j < 128) { - d[j] = j << 1 - } else { - d[j] = (j << 1) ^ 0x11b - } - } - - var SBOX = [] - var INV_SBOX = [] - var SUB_MIX = [[], [], [], []] - var INV_SUB_MIX = [[], [], [], []] - - // Walk GF(2^8) - var x = 0 - var xi = 0 - for (var i = 0; i < 256; ++i) { - // Compute sbox - var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4) - sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63 - SBOX[x] = sx - INV_SBOX[sx] = x - - // Compute multiplication - var x2 = d[x] - var x4 = d[x2] - var x8 = d[x4] - - // Compute sub bytes, mix columns tables - var t = (d[sx] * 0x101) ^ (sx * 0x1010100) - SUB_MIX[0][x] = (t << 24) | (t >>> 8) - SUB_MIX[1][x] = (t << 16) | (t >>> 16) - SUB_MIX[2][x] = (t << 8) | (t >>> 24) - SUB_MIX[3][x] = t - - // Compute inv sub bytes, inv mix columns tables - t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100) - INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8) - INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16) - INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24) - INV_SUB_MIX[3][sx] = t - - if (x === 0) { - x = xi = 1 - } else { - x = x2 ^ d[d[d[x8 ^ x2]]] - xi ^= d[d[xi]] - } - } - - return { - SBOX: SBOX, - INV_SBOX: INV_SBOX, - SUB_MIX: SUB_MIX, - INV_SUB_MIX: INV_SUB_MIX - } -})() - -function AES (key) { - this._key = asUInt32Array(key) - this._reset() -} - -AES.blockSize = 4 * 4 -AES.keySize = 256 / 8 -AES.prototype.blockSize = AES.blockSize -AES.prototype.keySize = AES.keySize -AES.prototype._reset = function () { - var keyWords = this._key - var keySize = keyWords.length - var nRounds = keySize + 6 - var ksRows = (nRounds + 1) * 4 - - var keySchedule = [] - for (var k = 0; k < keySize; k++) { - keySchedule[k] = keyWords[k] - } - - for (k = keySize; k < ksRows; k++) { - var t = keySchedule[k - 1] - - if (k % 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 ^= RCON[(k / keySize) | 0] << 24 - } else if (keySize > 6 && k % keySize === 4) { - t = - (G.SBOX[t >>> 24] << 24) | - (G.SBOX[(t >>> 16) & 0xff] << 16) | - (G.SBOX[(t >>> 8) & 0xff] << 8) | - (G.SBOX[t & 0xff]) - } - - keySchedule[k] = keySchedule[k - keySize] ^ t - } - - var invKeySchedule = [] - for (var ik = 0; ik < ksRows; ik++) { - var ksR = ksRows - ik - var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)] - - if (ik < 4 || ksR <= 4) { - invKeySchedule[ik] = tt - } else { - invKeySchedule[ik] = - G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^ - G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^ - G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^ - G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]] - } - } - - this._nRounds = nRounds - this._keySchedule = keySchedule - this._invKeySchedule = invKeySchedule -} - -AES.prototype.encryptBlockRaw = function (M) { - M = asUInt32Array(M) - return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds) -} - -AES.prototype.encryptBlock = function (M) { - var out = this.encryptBlockRaw(M) - var buf = Buffer.allocUnsafe(16) - buf.writeUInt32BE(out[0], 0) - buf.writeUInt32BE(out[1], 4) - buf.writeUInt32BE(out[2], 8) - buf.writeUInt32BE(out[3], 12) - return buf -} - -AES.prototype.decryptBlock = function (M) { - M = asUInt32Array(M) - - // swap - var m1 = M[1] - M[1] = M[3] - M[3] = m1 - - var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds) - var buf = Buffer.allocUnsafe(16) - buf.writeUInt32BE(out[0], 0) - buf.writeUInt32BE(out[3], 4) - buf.writeUInt32BE(out[2], 8) - buf.writeUInt32BE(out[1], 12) - return buf -} - -AES.prototype.scrub = function () { - scrubVec(this._keySchedule) - scrubVec(this._invKeySchedule) - scrubVec(this._key) -} - -module.exports.AES = AES - -},{"safe-buffer":318}],151:[function(require,module,exports){ -var aes = require('./aes') -var Buffer = require('safe-buffer').Buffer -var Transform = require('cipher-base') -var inherits = require('inherits') -var GHASH = require('./ghash') -var xor = require('buffer-xor') -var incr32 = require('./incr32') - -function xorTest (a, b) { - var out = 0 - if (a.length !== b.length) out++ - - var len = Math.min(a.length, b.length) - for (var i = 0; i < len; ++i) { - out += (a[i] ^ b[i]) - } - - return out -} - -function calcIv (self, iv, ck) { - if (iv.length === 12) { - self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])]) - return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])]) - } - var ghash = new GHASH(ck) - var len = iv.length - var toPad = len % 16 - ghash.update(iv) - if (toPad) { - toPad = 16 - toPad - ghash.update(Buffer.alloc(toPad, 0)) - } - ghash.update(Buffer.alloc(8, 0)) - var ivBits = len * 8 - var tail = Buffer.alloc(8) - tail.writeUIntBE(ivBits, 0, 8) - ghash.update(tail) - self._finID = ghash.state - var out = Buffer.from(self._finID) - incr32(out) - return out -} -function StreamCipher (mode, key, iv, decrypt) { - Transform.call(this) - - var h = Buffer.alloc(4, 0) - - this._cipher = new aes.AES(key) - var ck = this._cipher.encryptBlock(h) - this._ghash = new GHASH(ck) - iv = calcIv(this, iv, ck) - - this._prev = Buffer.from(iv) - this._cache = Buffer.allocUnsafe(0) - this._secCache = Buffer.allocUnsafe(0) - this._decrypt = decrypt - this._alen = 0 - this._len = 0 - this._mode = mode - - this._authTag = null - this._called = false -} - -inherits(StreamCipher, Transform) - -StreamCipher.prototype._update = function (chunk) { - if (!this._called && this._alen) { - var rump = 16 - (this._alen % 16) - if (rump < 16) { - rump = Buffer.alloc(rump, 0) - this._ghash.update(rump) - } - } - - this._called = true - var out = this._mode.encrypt(this, chunk) - if (this._decrypt) { - this._ghash.update(chunk) - } else { - this._ghash.update(out) - } - this._len += chunk.length - return out -} - -StreamCipher.prototype._final = function () { - if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data') - - var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID)) - if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data') - - this._authTag = tag - this._cipher.scrub() -} - -StreamCipher.prototype.getAuthTag = function getAuthTag () { - if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state') - - return this._authTag -} - -StreamCipher.prototype.setAuthTag = function setAuthTag (tag) { - if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state') - - this._authTag = tag -} - -StreamCipher.prototype.setAAD = function setAAD (buf) { - if (this._called) throw new Error('Attempting to set AAD in unsupported state') - - this._ghash.update(buf) - this._alen += buf.length -} - -module.exports = StreamCipher - -},{"./aes":150,"./ghash":155,"./incr32":156,"buffer-xor":181,"cipher-base":184,"inherits":262,"safe-buffer":318}],152:[function(require,module,exports){ -var ciphers = require('./encrypter') -var deciphers = require('./decrypter') -var modes = require('./modes/list.json') - -function getCiphers () { - return Object.keys(modes) -} - -exports.createCipher = exports.Cipher = ciphers.createCipher -exports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv -exports.createDecipher = exports.Decipher = deciphers.createDecipher -exports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv -exports.listCiphers = exports.getCiphers = getCiphers - -},{"./decrypter":153,"./encrypter":154,"./modes/list.json":164}],153:[function(require,module,exports){ -var AuthCipher = require('./authCipher') -var Buffer = require('safe-buffer').Buffer -var MODES = require('./modes') -var StreamCipher = require('./streamCipher') -var Transform = require('cipher-base') -var aes = require('./aes') -var ebtk = require('evp_bytestokey') -var inherits = require('inherits') - -function Decipher (mode, key, iv) { - Transform.call(this) - - this._cache = new Splitter() - this._last = void 0 - this._cipher = new aes.AES(key) - this._prev = Buffer.from(iv) - this._mode = mode - this._autopadding = true -} - -inherits(Decipher, Transform) - -Decipher.prototype._update = function (data) { - this._cache.add(data) - var chunk - var thing - var out = [] - while ((chunk = this._cache.get(this._autopadding))) { - thing = this._mode.decrypt(this, chunk) - out.push(thing) - } - return Buffer.concat(out) -} - -Decipher.prototype._final = function () { - var chunk = this._cache.flush() - if (this._autopadding) { - return unpad(this._mode.decrypt(this, chunk)) - } else if (chunk) { - throw new Error('data not multiple of block length') - } -} - -Decipher.prototype.setAutoPadding = function (setTo) { - this._autopadding = !!setTo - return this -} - -function Splitter () { - this.cache = Buffer.allocUnsafe(0) -} - -Splitter.prototype.add = function (data) { - this.cache = Buffer.concat([this.cache, data]) -} - -Splitter.prototype.get = function (autoPadding) { - var out - if (autoPadding) { - if (this.cache.length > 16) { - out = this.cache.slice(0, 16) - this.cache = this.cache.slice(16) - return out - } - } else { - if (this.cache.length >= 16) { - out = this.cache.slice(0, 16) - this.cache = this.cache.slice(16) - return out - } - } - - return null -} - -Splitter.prototype.flush = function () { - if (this.cache.length) return this.cache -} - -function unpad (last) { - var padded = last[15] - if (padded < 1 || padded > 16) { - throw new Error('unable to decrypt data') - } - var i = -1 - while (++i < padded) { - if (last[(i + (16 - padded))] !== padded) { - throw new Error('unable to decrypt data') - } - } - if (padded === 16) return - - return last.slice(0, 16 - padded) -} - -function createDecipheriv (suite, password, iv) { - var config = MODES[suite.toLowerCase()] - if (!config) throw new TypeError('invalid suite type') - - if (typeof iv === 'string') iv = Buffer.from(iv) - if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length) - - if (typeof password === 'string') password = Buffer.from(password) - if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length) - - if (config.type === 'stream') { - return new StreamCipher(config.module, password, iv, true) - } else if (config.type === 'auth') { - return new AuthCipher(config.module, password, iv, true) - } - - return new Decipher(config.module, password, iv) -} - -function createDecipher (suite, password) { - var config = MODES[suite.toLowerCase()] - if (!config) throw new TypeError('invalid suite type') - - var keys = ebtk(password, false, config.key, config.iv) - return createDecipheriv(suite, keys.key, keys.iv) -} - -exports.createDecipher = createDecipher -exports.createDecipheriv = createDecipheriv - -},{"./aes":150,"./authCipher":151,"./modes":163,"./streamCipher":166,"cipher-base":184,"evp_bytestokey":222,"inherits":262,"safe-buffer":318}],154:[function(require,module,exports){ -var MODES = require('./modes') -var AuthCipher = require('./authCipher') -var Buffer = require('safe-buffer').Buffer -var StreamCipher = require('./streamCipher') -var Transform = require('cipher-base') -var aes = require('./aes') -var ebtk = require('evp_bytestokey') -var inherits = require('inherits') - -function Cipher (mode, key, iv) { - Transform.call(this) - - this._cache = new Splitter() - this._cipher = new aes.AES(key) - this._prev = Buffer.from(iv) - this._mode = mode - this._autopadding = true -} - -inherits(Cipher, Transform) - -Cipher.prototype._update = function (data) { - this._cache.add(data) - var chunk - var thing - var out = [] - - while ((chunk = this._cache.get())) { - thing = this._mode.encrypt(this, chunk) - out.push(thing) - } - - return Buffer.concat(out) -} - -var PADDING = Buffer.alloc(16, 0x10) - -Cipher.prototype._final = function () { - var chunk = this._cache.flush() - if (this._autopadding) { - chunk = this._mode.encrypt(this, chunk) - this._cipher.scrub() - return chunk - } - - if (!chunk.equals(PADDING)) { - this._cipher.scrub() - throw new Error('data not multiple of block length') - } -} - -Cipher.prototype.setAutoPadding = function (setTo) { - this._autopadding = !!setTo - return this -} - -function Splitter () { - this.cache = Buffer.allocUnsafe(0) -} - -Splitter.prototype.add = function (data) { - this.cache = Buffer.concat([this.cache, data]) -} - -Splitter.prototype.get = function () { - if (this.cache.length > 15) { - var out = this.cache.slice(0, 16) - this.cache = this.cache.slice(16) - return out - } - return null -} - -Splitter.prototype.flush = function () { - var len = 16 - this.cache.length - var padBuff = Buffer.allocUnsafe(len) - - var i = -1 - while (++i < len) { - padBuff.writeUInt8(len, i) - } - - return Buffer.concat([this.cache, padBuff]) -} - -function createCipheriv (suite, password, iv) { - var config = MODES[suite.toLowerCase()] - if (!config) throw new TypeError('invalid suite type') - - if (typeof password === 'string') password = Buffer.from(password) - if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length) - - if (typeof iv === 'string') iv = Buffer.from(iv) - if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length) - - if (config.type === 'stream') { - return new StreamCipher(config.module, password, iv) - } else if (config.type === 'auth') { - return new AuthCipher(config.module, password, iv) - } - - return new Cipher(config.module, password, iv) -} - -function createCipher (suite, password) { - var config = MODES[suite.toLowerCase()] - if (!config) throw new TypeError('invalid suite type') - - var keys = ebtk(password, false, config.key, config.iv) - return createCipheriv(suite, keys.key, keys.iv) -} - -exports.createCipheriv = createCipheriv -exports.createCipher = createCipher - -},{"./aes":150,"./authCipher":151,"./modes":163,"./streamCipher":166,"cipher-base":184,"evp_bytestokey":222,"inherits":262,"safe-buffer":318}],155:[function(require,module,exports){ -var Buffer = require('safe-buffer').Buffer -var ZEROES = Buffer.alloc(16, 0) - -function toArray (buf) { - return [ - buf.readUInt32BE(0), - buf.readUInt32BE(4), - buf.readUInt32BE(8), - buf.readUInt32BE(12) - ] -} - -function fromArray (out) { - var buf = Buffer.allocUnsafe(16) - buf.writeUInt32BE(out[0] >>> 0, 0) - buf.writeUInt32BE(out[1] >>> 0, 4) - buf.writeUInt32BE(out[2] >>> 0, 8) - buf.writeUInt32BE(out[3] >>> 0, 12) - return buf -} - -function GHASH (key) { - this.h = key - this.state = Buffer.alloc(16, 0) - this.cache = Buffer.allocUnsafe(0) -} - -// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html -// by Juho Vähä-Herttua -GHASH.prototype.ghash = function (block) { - var i = -1 - while (++i < block.length) { - this.state[i] ^= block[i] - } - this._multiply() -} - -GHASH.prototype._multiply = function () { - var Vi = toArray(this.h) - var Zi = [0, 0, 0, 0] - var j, xi, lsbVi - var i = -1 - while (++i < 128) { - xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0 - if (xi) { - // Z_i+1 = Z_i ^ V_i - Zi[0] ^= Vi[0] - Zi[1] ^= Vi[1] - Zi[2] ^= Vi[2] - Zi[3] ^= Vi[3] - } - - // Store the value of LSB(V_i) - lsbVi = (Vi[3] & 1) !== 0 - - // V_i+1 = V_i >> 1 - for (j = 3; j > 0; j--) { - Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31) - } - Vi[0] = Vi[0] >>> 1 - - // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R - if (lsbVi) { - Vi[0] = Vi[0] ^ (0xe1 << 24) - } - } - this.state = fromArray(Zi) -} - -GHASH.prototype.update = function (buf) { - this.cache = Buffer.concat([this.cache, buf]) - var chunk - while (this.cache.length >= 16) { - chunk = this.cache.slice(0, 16) - this.cache = this.cache.slice(16) - this.ghash(chunk) - } -} - -GHASH.prototype.final = function (abl, bl) { - if (this.cache.length) { - this.ghash(Buffer.concat([this.cache, ZEROES], 16)) - } - - this.ghash(fromArray([0, abl, 0, bl])) - return this.state -} - -module.exports = GHASH - -},{"safe-buffer":318}],156:[function(require,module,exports){ -function incr32 (iv) { - var len = iv.length - var item - while (len--) { - item = iv.readUInt8(len) - if (item === 255) { - iv.writeUInt8(0, len) - } else { - item++ - iv.writeUInt8(item, len) - break - } - } -} -module.exports = incr32 - -},{}],157:[function(require,module,exports){ -var xor = require('buffer-xor') - -exports.encrypt = function (self, block) { - var data = xor(block, self._prev) - - self._prev = self._cipher.encryptBlock(data) - return self._prev -} - -exports.decrypt = function (self, block) { - var pad = self._prev - - self._prev = block - var out = self._cipher.decryptBlock(block) - - return xor(out, pad) -} - -},{"buffer-xor":181}],158:[function(require,module,exports){ -var Buffer = require('safe-buffer').Buffer -var xor = require('buffer-xor') - -function encryptStart (self, data, decrypt) { - var len = data.length - var out = xor(data, self._cache) - self._cache = self._cache.slice(len) - self._prev = Buffer.concat([self._prev, decrypt ? data : out]) - return out -} - -exports.encrypt = function (self, data, decrypt) { - var out = Buffer.allocUnsafe(0) - var len - - while (data.length) { - if (self._cache.length === 0) { - self._cache = self._cipher.encryptBlock(self._prev) - self._prev = Buffer.allocUnsafe(0) - } - - if (self._cache.length <= data.length) { - len = self._cache.length - out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)]) - data = data.slice(len) - } else { - out = Buffer.concat([out, encryptStart(self, data, decrypt)]) - break - } - } - - return out -} - -},{"buffer-xor":181,"safe-buffer":318}],159:[function(require,module,exports){ -var Buffer = require('safe-buffer').Buffer - -function encryptByte (self, byteParam, decrypt) { - var pad - var i = -1 - var len = 8 - var out = 0 - var bit, value - while (++i < len) { - pad = self._cipher.encryptBlock(self._prev) - bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0 - value = pad[0] ^ bit - out += ((value & 0x80) >> (i % 8)) - self._prev = shiftIn(self._prev, decrypt ? bit : value) - } - return out -} - -function shiftIn (buffer, value) { - var len = buffer.length - var i = -1 - var out = Buffer.allocUnsafe(buffer.length) - buffer = Buffer.concat([buffer, Buffer.from([value])]) - - while (++i < len) { - out[i] = buffer[i] << 1 | buffer[i + 1] >> (7) - } - - return out -} - -exports.encrypt = function (self, chunk, decrypt) { - var len = chunk.length - var out = Buffer.allocUnsafe(len) - var i = -1 - - while (++i < len) { - out[i] = encryptByte(self, chunk[i], decrypt) - } - - return out -} - -},{"safe-buffer":318}],160:[function(require,module,exports){ -var Buffer = require('safe-buffer').Buffer - -function encryptByte (self, byteParam, decrypt) { - var pad = self._cipher.encryptBlock(self._prev) - var out = pad[0] ^ byteParam - - self._prev = Buffer.concat([ - self._prev.slice(1), - Buffer.from([decrypt ? byteParam : out]) - ]) - - return out -} - -exports.encrypt = function (self, chunk, decrypt) { - var len = chunk.length - var out = Buffer.allocUnsafe(len) - var i = -1 - - while (++i < len) { - out[i] = encryptByte(self, chunk[i], decrypt) - } - - return out -} - -},{"safe-buffer":318}],161:[function(require,module,exports){ -var xor = require('buffer-xor') -var Buffer = require('safe-buffer').Buffer -var incr32 = require('../incr32') - -function getBlock (self) { - var out = self._cipher.encryptBlockRaw(self._prev) - incr32(self._prev) - return out -} - -var blockSize = 16 -exports.encrypt = function (self, chunk) { - var chunkNum = Math.ceil(chunk.length / blockSize) - var start = self._cache.length - self._cache = Buffer.concat([ - self._cache, - Buffer.allocUnsafe(chunkNum * blockSize) - ]) - for (var i = 0; i < chunkNum; i++) { - var out = getBlock(self) - var offset = start + i * blockSize - self._cache.writeUInt32BE(out[0], offset + 0) - self._cache.writeUInt32BE(out[1], offset + 4) - self._cache.writeUInt32BE(out[2], offset + 8) - self._cache.writeUInt32BE(out[3], offset + 12) - } - var pad = self._cache.slice(0, chunk.length) - self._cache = self._cache.slice(chunk.length) - return xor(chunk, pad) -} - -},{"../incr32":156,"buffer-xor":181,"safe-buffer":318}],162:[function(require,module,exports){ -exports.encrypt = function (self, block) { - return self._cipher.encryptBlock(block) -} - -exports.decrypt = function (self, block) { - return self._cipher.decryptBlock(block) -} - -},{}],163:[function(require,module,exports){ -var modeModules = { - ECB: require('./ecb'), - CBC: require('./cbc'), - CFB: require('./cfb'), - CFB8: require('./cfb8'), - CFB1: require('./cfb1'), - OFB: require('./ofb'), - CTR: require('./ctr'), - GCM: require('./ctr') -} - -var modes = require('./list.json') - -for (var key in modes) { - modes[key].module = modeModules[modes[key].mode] -} - -module.exports = modes - -},{"./cbc":157,"./cfb":158,"./cfb1":159,"./cfb8":160,"./ctr":161,"./ecb":162,"./list.json":164,"./ofb":165}],164:[function(require,module,exports){ -module.exports={ - "aes-128-ecb": { - "cipher": "AES", - "key": 128, - "iv": 0, - "mode": "ECB", - "type": "block" - }, - "aes-192-ecb": { - "cipher": "AES", - "key": 192, - "iv": 0, - "mode": "ECB", - "type": "block" - }, - "aes-256-ecb": { - "cipher": "AES", - "key": 256, - "iv": 0, - "mode": "ECB", - "type": "block" - }, - "aes-128-cbc": { - "cipher": "AES", - "key": 128, - "iv": 16, - "mode": "CBC", - "type": "block" - }, - "aes-192-cbc": { - "cipher": "AES", - "key": 192, - "iv": 16, - "mode": "CBC", - "type": "block" - }, - "aes-256-cbc": { - "cipher": "AES", - "key": 256, - "iv": 16, - "mode": "CBC", - "type": "block" - }, - "aes128": { - "cipher": "AES", - "key": 128, - "iv": 16, - "mode": "CBC", - "type": "block" - }, - "aes192": { - "cipher": "AES", - "key": 192, - "iv": 16, - "mode": "CBC", - "type": "block" - }, - "aes256": { - "cipher": "AES", - "key": 256, - "iv": 16, - "mode": "CBC", - "type": "block" - }, - "aes-128-cfb": { - "cipher": "AES", - "key": 128, - "iv": 16, - "mode": "CFB", - "type": "stream" - }, - "aes-192-cfb": { - "cipher": "AES", - "key": 192, - "iv": 16, - "mode": "CFB", - "type": "stream" - }, - "aes-256-cfb": { - "cipher": "AES", - "key": 256, - "iv": 16, - "mode": "CFB", - "type": "stream" - }, - "aes-128-cfb8": { - "cipher": "AES", - "key": 128, - "iv": 16, - "mode": "CFB8", - "type": "stream" - }, - "aes-192-cfb8": { - "cipher": "AES", - "key": 192, - "iv": 16, - "mode": "CFB8", - "type": "stream" - }, - "aes-256-cfb8": { - "cipher": "AES", - "key": 256, - "iv": 16, - "mode": "CFB8", - "type": "stream" - }, - "aes-128-cfb1": { - "cipher": "AES", - "key": 128, - "iv": 16, - "mode": "CFB1", - "type": "stream" - }, - "aes-192-cfb1": { - "cipher": "AES", - "key": 192, - "iv": 16, - "mode": "CFB1", - "type": "stream" - }, - "aes-256-cfb1": { - "cipher": "AES", - "key": 256, - "iv": 16, - "mode": "CFB1", - "type": "stream" - }, - "aes-128-ofb": { - "cipher": "AES", - "key": 128, - "iv": 16, - "mode": "OFB", - "type": "stream" - }, - "aes-192-ofb": { - "cipher": "AES", - "key": 192, - "iv": 16, - "mode": "OFB", - "type": "stream" - }, - "aes-256-ofb": { - "cipher": "AES", - "key": 256, - "iv": 16, - "mode": "OFB", - "type": "stream" - }, - "aes-128-ctr": { - "cipher": "AES", - "key": 128, - "iv": 16, - "mode": "CTR", - "type": "stream" - }, - "aes-192-ctr": { - "cipher": "AES", - "key": 192, - "iv": 16, - "mode": "CTR", - "type": "stream" - }, - "aes-256-ctr": { - "cipher": "AES", - "key": 256, - "iv": 16, - "mode": "CTR", - "type": "stream" - }, - "aes-128-gcm": { - "cipher": "AES", - "key": 128, - "iv": 12, - "mode": "GCM", - "type": "auth" - }, - "aes-192-gcm": { - "cipher": "AES", - "key": 192, - "iv": 12, - "mode": "GCM", - "type": "auth" - }, - "aes-256-gcm": { - "cipher": "AES", - "key": 256, - "iv": 12, - "mode": "GCM", - "type": "auth" - } -} - -},{}],165:[function(require,module,exports){ -(function (Buffer){ -var xor = require('buffer-xor') - -function getBlock (self) { - self._prev = self._cipher.encryptBlock(self._prev) - return self._prev -} - -exports.encrypt = function (self, chunk) { - while (self._cache.length < chunk.length) { - self._cache = Buffer.concat([self._cache, getBlock(self)]) - } - - var pad = self._cache.slice(0, chunk.length) - self._cache = self._cache.slice(chunk.length) - return xor(chunk, pad) -} - -}).call(this,require("buffer").Buffer) -},{"buffer":182,"buffer-xor":181}],166:[function(require,module,exports){ -var aes = require('./aes') -var Buffer = require('safe-buffer').Buffer -var Transform = require('cipher-base') -var inherits = require('inherits') - -function StreamCipher (mode, key, iv, decrypt) { - Transform.call(this) - - this._cipher = new aes.AES(key) - this._prev = Buffer.from(iv) - this._cache = Buffer.allocUnsafe(0) - this._secCache = Buffer.allocUnsafe(0) - this._decrypt = decrypt - this._mode = mode -} - -inherits(StreamCipher, Transform) - -StreamCipher.prototype._update = function (chunk) { - return this._mode.encrypt(this, chunk, this._decrypt) -} - -StreamCipher.prototype._final = function () { - this._cipher.scrub() -} - -module.exports = StreamCipher - -},{"./aes":150,"cipher-base":184,"inherits":262,"safe-buffer":318}],167:[function(require,module,exports){ -var DES = require('browserify-des') -var aes = require('browserify-aes/browser') -var aesModes = require('browserify-aes/modes') -var desModes = require('browserify-des/modes') -var ebtk = require('evp_bytestokey') - -function createCipher (suite, password) { - suite = suite.toLowerCase() - - var keyLen, ivLen - if (aesModes[suite]) { - keyLen = aesModes[suite].key - ivLen = aesModes[suite].iv - } else if (desModes[suite]) { - keyLen = desModes[suite].key * 8 - ivLen = desModes[suite].iv - } else { - throw new TypeError('invalid suite type') - } - - var keys = ebtk(password, false, keyLen, ivLen) - return createCipheriv(suite, keys.key, keys.iv) -} - -function createDecipher (suite, password) { - suite = suite.toLowerCase() - - var keyLen, ivLen - if (aesModes[suite]) { - keyLen = aesModes[suite].key - ivLen = aesModes[suite].iv - } else if (desModes[suite]) { - keyLen = desModes[suite].key * 8 - ivLen = desModes[suite].iv - } else { - throw new TypeError('invalid suite type') - } - - var keys = ebtk(password, false, keyLen, ivLen) - return createDecipheriv(suite, keys.key, keys.iv) -} - -function createCipheriv (suite, key, iv) { - suite = suite.toLowerCase() - if (aesModes[suite]) return aes.createCipheriv(suite, key, iv) - if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite }) - - throw new TypeError('invalid suite type') -} - -function createDecipheriv (suite, key, iv) { - suite = suite.toLowerCase() - if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv) - if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true }) - - throw new TypeError('invalid suite type') -} - -function getCiphers () { - return Object.keys(desModes).concat(aes.getCiphers()) -} - -exports.createCipher = exports.Cipher = createCipher -exports.createCipheriv = exports.Cipheriv = createCipheriv -exports.createDecipher = exports.Decipher = createDecipher -exports.createDecipheriv = exports.Decipheriv = createDecipheriv -exports.listCiphers = exports.getCiphers = getCiphers - -},{"browserify-aes/browser":152,"browserify-aes/modes":163,"browserify-des":168,"browserify-des/modes":169,"evp_bytestokey":222}],168:[function(require,module,exports){ -var CipherBase = require('cipher-base') -var des = require('des.js') -var inherits = require('inherits') -var Buffer = require('safe-buffer').Buffer - -var modes = { - 'des-ede3-cbc': des.CBC.instantiate(des.EDE), - 'des-ede3': des.EDE, - 'des-ede-cbc': des.CBC.instantiate(des.EDE), - 'des-ede': des.EDE, - 'des-cbc': des.CBC.instantiate(des.DES), - 'des-ecb': des.DES -} -modes.des = modes['des-cbc'] -modes.des3 = modes['des-ede3-cbc'] -module.exports = DES -inherits(DES, CipherBase) -function DES (opts) { - CipherBase.call(this) - var modeName = opts.mode.toLowerCase() - var mode = modes[modeName] - var type - if (opts.decrypt) { - type = 'decrypt' - } else { - type = 'encrypt' - } - var key = opts.key - if (!Buffer.isBuffer(key)) { - key = Buffer.from(key) - } - if (modeName === 'des-ede' || modeName === 'des-ede-cbc') { - key = Buffer.concat([key, key.slice(0, 8)]) - } - var iv = opts.iv - if (!Buffer.isBuffer(iv)) { - iv = Buffer.from(iv) - } - this._des = mode.create({ - key: key, - iv: iv, - type: type - }) -} -DES.prototype._update = function (data) { - return Buffer.from(this._des.update(data)) -} -DES.prototype._final = function () { - return Buffer.from(this._des.final()) -} - -},{"cipher-base":184,"des.js":195,"inherits":262,"safe-buffer":318}],169:[function(require,module,exports){ -exports['des-ecb'] = { - key: 8, - iv: 0 -} -exports['des-cbc'] = exports.des = { - key: 8, - iv: 8 -} -exports['des-ede3-cbc'] = exports.des3 = { - key: 24, - iv: 8 -} -exports['des-ede3'] = { - key: 24, - iv: 0 -} -exports['des-ede-cbc'] = { - key: 16, - iv: 8 -} -exports['des-ede'] = { - key: 16, - iv: 0 -} - -},{}],170:[function(require,module,exports){ -(function (Buffer){ -var bn = require('bn.js'); -var randomBytes = require('randombytes'); -module.exports = crt; -function blind(priv) { - var r = getr(priv); - var blinder = r.toRed(bn.mont(priv.modulus)) - .redPow(new bn(priv.publicExponent)).fromRed(); - return { - blinder: blinder, - unblinder:r.invm(priv.modulus) - }; -} -function crt(msg, priv) { - var blinds = blind(priv); - var len = priv.modulus.byteLength(); - var mod = bn.mont(priv.modulus); - var blinded = new bn(msg).mul(blinds.blinder).umod(priv.modulus); - var c1 = blinded.toRed(bn.mont(priv.prime1)); - var c2 = blinded.toRed(bn.mont(priv.prime2)); - var qinv = priv.coefficient; - var p = priv.prime1; - var q = priv.prime2; - var m1 = c1.redPow(priv.exponent1); - var m2 = c2.redPow(priv.exponent2); - m1 = m1.fromRed(); - m2 = m2.fromRed(); - var h = m1.isub(m2).imul(qinv).umod(p); - h.imul(q); - m2.iadd(h); - return new Buffer(m2.imul(blinds.unblinder).umod(priv.modulus).toArray(false, len)); -} -crt.getr = getr; -function getr(priv) { - var len = priv.modulus.byteLength(); - var r = new bn(randomBytes(len)); - while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2)) { - r = new bn(randomBytes(len)); - } - return r; -} - -}).call(this,require("buffer").Buffer) -},{"bn.js":147,"buffer":182,"randombytes":298}],171:[function(require,module,exports){ -module.exports = require('./browser/algorithms.json') - -},{"./browser/algorithms.json":172}],172:[function(require,module,exports){ -module.exports={ - "sha224WithRSAEncryption": { - "sign": "rsa", - "hash": "sha224", - "id": "302d300d06096086480165030402040500041c" - }, - "RSA-SHA224": { - "sign": "ecdsa/rsa", - "hash": "sha224", - "id": "302d300d06096086480165030402040500041c" - }, - "sha256WithRSAEncryption": { - "sign": "rsa", - "hash": "sha256", - "id": "3031300d060960864801650304020105000420" - }, - "RSA-SHA256": { - "sign": "ecdsa/rsa", - "hash": "sha256", - "id": "3031300d060960864801650304020105000420" - }, - "sha384WithRSAEncryption": { - "sign": "rsa", - "hash": "sha384", - "id": "3041300d060960864801650304020205000430" - }, - "RSA-SHA384": { - "sign": "ecdsa/rsa", - "hash": "sha384", - "id": "3041300d060960864801650304020205000430" - }, - "sha512WithRSAEncryption": { - "sign": "rsa", - "hash": "sha512", - "id": "3051300d060960864801650304020305000440" - }, - "RSA-SHA512": { - "sign": "ecdsa/rsa", - "hash": "sha512", - "id": "3051300d060960864801650304020305000440" - }, - "RSA-SHA1": { - "sign": "rsa", - "hash": "sha1", - "id": "3021300906052b0e03021a05000414" - }, - "ecdsa-with-SHA1": { - "sign": "ecdsa", - "hash": "sha1", - "id": "" - }, - "sha256": { - "sign": "ecdsa", - "hash": "sha256", - "id": "" - }, - "sha224": { - "sign": "ecdsa", - "hash": "sha224", - "id": "" - }, - "sha384": { - "sign": "ecdsa", - "hash": "sha384", - "id": "" - }, - "sha512": { - "sign": "ecdsa", - "hash": "sha512", - "id": "" - }, - "DSA-SHA": { - "sign": "dsa", - "hash": "sha1", - "id": "" - }, - "DSA-SHA1": { - "sign": "dsa", - "hash": "sha1", - "id": "" - }, - "DSA": { - "sign": "dsa", - "hash": "sha1", - "id": "" - }, - "DSA-WITH-SHA224": { - "sign": "dsa", - "hash": "sha224", - "id": "" - }, - "DSA-SHA224": { - "sign": "dsa", - "hash": "sha224", - "id": "" - }, - "DSA-WITH-SHA256": { - "sign": "dsa", - "hash": "sha256", - "id": "" - }, - "DSA-SHA256": { - "sign": "dsa", - "hash": "sha256", - "id": "" - }, - "DSA-WITH-SHA384": { - "sign": "dsa", - "hash": "sha384", - "id": "" - }, - "DSA-SHA384": { - "sign": "dsa", - "hash": "sha384", - "id": "" - }, - "DSA-WITH-SHA512": { - "sign": "dsa", - "hash": "sha512", - "id": "" - }, - "DSA-SHA512": { - "sign": "dsa", - "hash": "sha512", - "id": "" - }, - "DSA-RIPEMD160": { - "sign": "dsa", - "hash": "rmd160", - "id": "" - }, - "ripemd160WithRSA": { - "sign": "rsa", - "hash": "rmd160", - "id": "3021300906052b2403020105000414" - }, - "RSA-RIPEMD160": { - "sign": "rsa", - "hash": "rmd160", - "id": "3021300906052b2403020105000414" - }, - "md5WithRSAEncryption": { - "sign": "rsa", - "hash": "md5", - "id": "3020300c06082a864886f70d020505000410" - }, - "RSA-MD5": { - "sign": "rsa", - "hash": "md5", - "id": "3020300c06082a864886f70d020505000410" - } -} - -},{}],173:[function(require,module,exports){ -module.exports={ - "1.3.132.0.10": "secp256k1", - "1.3.132.0.33": "p224", - "1.2.840.10045.3.1.1": "p192", - "1.2.840.10045.3.1.7": "p256", - "1.3.132.0.34": "p384", - "1.3.132.0.35": "p521" -} - -},{}],174:[function(require,module,exports){ -(function (Buffer){ -var createHash = require('create-hash') -var stream = require('stream') -var inherits = require('inherits') -var sign = require('./sign') -var verify = require('./verify') - -var algorithms = require('./algorithms.json') -Object.keys(algorithms).forEach(function (key) { - algorithms[key].id = new Buffer(algorithms[key].id, 'hex') - algorithms[key.toLowerCase()] = algorithms[key] -}) - -function Sign (algorithm) { - stream.Writable.call(this) - - var data = algorithms[algorithm] - if (!data) throw new Error('Unknown message digest') - - this._hashType = data.hash - this._hash = createHash(data.hash) - this._tag = data.id - this._signType = data.sign -} -inherits(Sign, stream.Writable) - -Sign.prototype._write = function _write (data, _, done) { - this._hash.update(data) - done() -} - -Sign.prototype.update = function update (data, enc) { - if (typeof data === 'string') data = new Buffer(data, enc) - - this._hash.update(data) - return this -} - -Sign.prototype.sign = function signMethod (key, enc) { - this.end() - var hash = this._hash.digest() - var sig = sign(hash, key, this._hashType, this._signType, this._tag) - - return enc ? sig.toString(enc) : sig -} - -function Verify (algorithm) { - stream.Writable.call(this) - - var data = algorithms[algorithm] - if (!data) throw new Error('Unknown message digest') - - this._hash = createHash(data.hash) - this._tag = data.id - this._signType = data.sign -} -inherits(Verify, stream.Writable) - -Verify.prototype._write = function _write (data, _, done) { - this._hash.update(data) - done() -} - -Verify.prototype.update = function update (data, enc) { - if (typeof data === 'string') data = new Buffer(data, enc) - - this._hash.update(data) - return this -} - -Verify.prototype.verify = function verifyMethod (key, sig, enc) { - if (typeof sig === 'string') sig = new Buffer(sig, enc) - - this.end() - var hash = this._hash.digest() - return verify(sig, hash, key, this._signType, this._tag) -} - -function createSign (algorithm) { - return new Sign(algorithm) -} - -function createVerify (algorithm) { - return new Verify(algorithm) -} - -module.exports = { - Sign: createSign, - Verify: createVerify, - createSign: createSign, - createVerify: createVerify -} - -}).call(this,require("buffer").Buffer) -},{"./algorithms.json":172,"./sign":175,"./verify":176,"buffer":182,"create-hash":188,"inherits":262,"stream":328}],175:[function(require,module,exports){ -(function (Buffer){ -// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js -var createHmac = require('create-hmac') -var crt = require('browserify-rsa') -var EC = require('elliptic').ec -var BN = require('bn.js') -var parseKeys = require('parse-asn1') -var curves = require('./curves.json') - -function sign (hash, key, hashType, signType, tag) { - var priv = parseKeys(key) - if (priv.curve) { - // rsa keys can be interpreted as ecdsa ones in openssl - if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type') - return ecSign(hash, priv) - } else if (priv.type === 'dsa') { - if (signType !== 'dsa') throw new Error('wrong private key type') - return dsaSign(hash, priv, hashType) - } else { - if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type') - } - hash = Buffer.concat([tag, hash]) - var len = priv.modulus.byteLength() - var pad = [ 0, 1 ] - while (hash.length + pad.length + 1 < len) pad.push(0xff) - pad.push(0x00) - var i = -1 - while (++i < hash.length) pad.push(hash[i]) - - var out = crt(pad, priv) - return out -} - -function ecSign (hash, priv) { - var curveId = curves[priv.curve.join('.')] - if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.')) - - var curve = new EC(curveId) - var key = curve.keyFromPrivate(priv.privateKey) - var out = key.sign(hash) - - return new Buffer(out.toDER()) -} - -function dsaSign (hash, priv, algo) { - var x = priv.params.priv_key - var p = priv.params.p - var q = priv.params.q - var g = priv.params.g - var r = new BN(0) - var k - var H = bits2int(hash, q).mod(q) - var s = false - var kv = getKey(x, q, hash, algo) - while (s === false) { - k = makeKey(q, kv, algo) - r = makeR(g, k, p, q) - s = k.invm(q).imul(H.add(x.mul(r))).mod(q) - if (s.cmpn(0) === 0) { - s = false - r = new BN(0) - } - } - return toDER(r, s) -} - -function toDER (r, s) { - r = r.toArray() - s = s.toArray() - - // Pad values - if (r[0] & 0x80) r = [ 0 ].concat(r) - if (s[0] & 0x80) s = [ 0 ].concat(s) - - var total = r.length + s.length + 4 - var res = [ 0x30, total, 0x02, r.length ] - res = res.concat(r, [ 0x02, s.length ], s) - return new Buffer(res) -} - -function getKey (x, q, hash, algo) { - x = new Buffer(x.toArray()) - if (x.length < q.byteLength()) { - var zeros = new Buffer(q.byteLength() - x.length) - zeros.fill(0) - x = Buffer.concat([ zeros, x ]) - } - var hlen = hash.length - var hbits = bits2octets(hash, q) - var v = new Buffer(hlen) - v.fill(1) - var k = new Buffer(hlen) - k.fill(0) - k = createHmac(algo, k).update(v).update(new Buffer([ 0 ])).update(x).update(hbits).digest() - v = createHmac(algo, k).update(v).digest() - k = createHmac(algo, k).update(v).update(new Buffer([ 1 ])).update(x).update(hbits).digest() - v = createHmac(algo, k).update(v).digest() - return { k: k, v: v } -} - -function bits2int (obits, q) { - var bits = new BN(obits) - var shift = (obits.length << 3) - q.bitLength() - if (shift > 0) bits.ishrn(shift) - return bits -} - -function bits2octets (bits, q) { - bits = bits2int(bits, q) - bits = bits.mod(q) - var out = new Buffer(bits.toArray()) - if (out.length < q.byteLength()) { - var zeros = new Buffer(q.byteLength() - out.length) - zeros.fill(0) - out = Buffer.concat([ zeros, out ]) - } - return out -} - -function makeKey (q, kv, algo) { - var t - var k - - do { - t = new Buffer(0) - - while (t.length * 8 < q.bitLength()) { - kv.v = createHmac(algo, kv.k).update(kv.v).digest() - t = Buffer.concat([ t, kv.v ]) - } - - k = bits2int(t, q) - kv.k = createHmac(algo, kv.k).update(kv.v).update(new Buffer([ 0 ])).digest() - kv.v = createHmac(algo, kv.k).update(kv.v).digest() - } while (k.cmp(q) !== -1) - - return k -} - -function makeR (g, k, p, q) { - return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q) -} - -module.exports = sign -module.exports.getKey = getKey -module.exports.makeKey = makeKey - -}).call(this,require("buffer").Buffer) -},{"./curves.json":173,"bn.js":147,"browserify-rsa":170,"buffer":182,"create-hmac":190,"elliptic":205,"parse-asn1":275}],176:[function(require,module,exports){ -(function (Buffer){ -// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js -var BN = require('bn.js') -var EC = require('elliptic').ec -var parseKeys = require('parse-asn1') -var curves = require('./curves.json') - -function verify (sig, hash, key, signType, tag) { - var pub = parseKeys(key) - if (pub.type === 'ec') { - // rsa keys can be interpreted as ecdsa ones in openssl - if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type') - return ecVerify(sig, hash, pub) - } else if (pub.type === 'dsa') { - if (signType !== 'dsa') throw new Error('wrong public key type') - return dsaVerify(sig, hash, pub) - } else { - if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type') - } - hash = Buffer.concat([tag, hash]) - var len = pub.modulus.byteLength() - var pad = [ 1 ] - var padNum = 0 - while (hash.length + pad.length + 2 < len) { - pad.push(0xff) - padNum++ - } - pad.push(0x00) - var i = -1 - while (++i < hash.length) { - pad.push(hash[i]) - } - pad = new Buffer(pad) - var red = BN.mont(pub.modulus) - sig = new BN(sig).toRed(red) - - sig = sig.redPow(new BN(pub.publicExponent)) - sig = new Buffer(sig.fromRed().toArray()) - var out = padNum < 8 ? 1 : 0 - len = Math.min(sig.length, pad.length) - if (sig.length !== pad.length) out = 1 - - i = -1 - while (++i < len) out |= sig[i] ^ pad[i] - return out === 0 -} - -function ecVerify (sig, hash, pub) { - var curveId = curves[pub.data.algorithm.curve.join('.')] - if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.')) - - var curve = new EC(curveId) - var pubkey = pub.data.subjectPrivateKey.data - - return curve.verify(hash, sig, pubkey) -} - -function dsaVerify (sig, hash, pub) { - var p = pub.data.p - var q = pub.data.q - var g = pub.data.g - var y = pub.data.pub_key - var unpacked = parseKeys.signature.decode(sig, 'der') - var s = unpacked.s - var r = unpacked.r - checkValue(s, q) - checkValue(r, q) - var montp = BN.mont(p) - var w = s.invm(q) - var v = g.toRed(montp) - .redPow(new BN(hash).mul(w).mod(q)) - .fromRed() - .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed()) - .mod(p) - .mod(q) - return v.cmp(r) === 0 -} - -function checkValue (b, q) { - if (b.cmpn(0) <= 0) throw new Error('invalid sig') - if (b.cmp(q) >= q) throw new Error('invalid sig') -} - -module.exports = verify - -}).call(this,require("buffer").Buffer) -},{"./curves.json":173,"bn.js":147,"buffer":182,"elliptic":205,"parse-asn1":275}],177:[function(require,module,exports){ -arguments[4][149][0].apply(exports,arguments) -},{"dup":149}],178:[function(require,module,exports){ -/* eslint-disable node/no-deprecated-api */ -var buffer = require('buffer') -var Buffer = buffer.Buffer - -// alternative to using Object.keys for old browsers -function copyProps (src, dst) { - for (var key in src) { - dst[key] = src[key] - } -} -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports) - exports.Buffer = SafeBuffer -} - -function SafeBuffer (arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length) -} - -// Copy static methods from Buffer -copyProps(Buffer, SafeBuffer) - -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number') - } - return Buffer(arg, encodingOrOffset, length) -} - -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - var buf = Buffer(size) - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding) - } else { - buf.fill(fill) - } - } else { - buf.fill(0) - } - return buf -} - -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return Buffer(size) -} - -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return buffer.SlowBuffer(size) -} - -},{"buffer":182}],179:[function(require,module,exports){ -'use strict'; - -var Buffer = require('safe-buffer').Buffer; - -var isEncoding = Buffer.isEncoding || function (encoding) { - encoding = '' + encoding; - switch (encoding && encoding.toLowerCase()) { - 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': - return true; - default: - return false; - } -}; - -function _normalizeEncoding(enc) { - if (!enc) return 'utf8'; - var retried; - while (true) { - switch (enc) { - case 'utf8': - case 'utf-8': - return 'utf8'; - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return 'utf16le'; - case 'latin1': - case 'binary': - return 'latin1'; - case 'base64': - case 'ascii': - case 'hex': - return enc; - default: - if (retried) return; // undefined - enc = ('' + enc).toLowerCase(); - retried = true; - } - } -}; - -// Do not cache `Buffer.isEncoding` when checking encoding names as some -// modules monkey-patch it to support additional encodings -function normalizeEncoding(enc) { - var nenc = _normalizeEncoding(enc); - if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); - return nenc || enc; -} - -// StringDecoder provides an interface for efficiently splitting a series of -// buffers into a series of JS strings without breaking apart multi-byte -// characters. -exports.StringDecoder = StringDecoder; -function StringDecoder(encoding) { - this.encoding = normalizeEncoding(encoding); - var nb; - switch (this.encoding) { - case 'utf16le': - this.text = utf16Text; - this.end = utf16End; - nb = 4; - break; - case 'utf8': - this.fillLast = utf8FillLast; - nb = 4; - break; - case 'base64': - this.text = base64Text; - this.end = base64End; - nb = 3; - break; - default: - this.write = simpleWrite; - this.end = simpleEnd; - return; - } - this.lastNeed = 0; - this.lastTotal = 0; - this.lastChar = Buffer.allocUnsafe(nb); -} - -StringDecoder.prototype.write = function (buf) { - if (buf.length === 0) return ''; - var r; - var i; - if (this.lastNeed) { - r = this.fillLast(buf); - if (r === undefined) return ''; - i = this.lastNeed; - this.lastNeed = 0; - } else { - i = 0; - } - if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); - return r || ''; -}; - -StringDecoder.prototype.end = utf8End; - -// Returns only complete characters in a Buffer -StringDecoder.prototype.text = utf8Text; - -// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer -StringDecoder.prototype.fillLast = function (buf) { - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); - this.lastNeed -= buf.length; -}; - -// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a -// continuation byte. -function utf8CheckByte(byte) { - 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; - return -1; -} - -// Checks at most 3 bytes at the end of a Buffer in order to detect an -// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) -// needed to complete the UTF-8 character (if applicable) are returned. -function utf8CheckIncomplete(self, buf, i) { - var j = buf.length - 1; - if (j < i) return 0; - var nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 1; - return nb; - } - if (--j < i) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 2; - return nb; - } - if (--j < i) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) { - if (nb === 2) nb = 0;else self.lastNeed = nb - 3; - } - return nb; - } - return 0; -} - -// Validates as many continuation bytes for a multi-byte UTF-8 character as -// needed or are available. If we see a non-continuation byte where we expect -// one, we "replace" the validated continuation bytes we've seen so far with -// UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding -// behavior. The continuation byte check is included three times in the case -// where all of the continuation bytes for a character exist in the same buffer. -// It is also done this way as a slight performance increase instead of using a -// loop. -function utf8CheckExtraBytes(self, buf, p) { - if ((buf[0] & 0xC0) !== 0x80) { - self.lastNeed = 0; - return '\ufffd'.repeat(p); - } - if (self.lastNeed > 1 && buf.length > 1) { - if ((buf[1] & 0xC0) !== 0x80) { - self.lastNeed = 1; - return '\ufffd'.repeat(p + 1); - } - if (self.lastNeed > 2 && buf.length > 2) { - if ((buf[2] & 0xC0) !== 0x80) { - self.lastNeed = 2; - return '\ufffd'.repeat(p + 2); - } - } - } -} - -// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. -function utf8FillLast(buf) { - var p = this.lastTotal - this.lastNeed; - var r = utf8CheckExtraBytes(this, buf, p); - if (r !== undefined) return r; - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, p, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, p, 0, buf.length); - this.lastNeed -= buf.length; -} - -// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a -// partial character, the character's bytes are buffered until the required -// number of bytes are available. -function utf8Text(buf, i) { - var total = utf8CheckIncomplete(this, buf, i); - if (!this.lastNeed) return buf.toString('utf8', i); - this.lastTotal = total; - var end = buf.length - (total - this.lastNeed); - buf.copy(this.lastChar, 0, end); - return buf.toString('utf8', i, end); -} - -// For UTF-8, a replacement character for each buffered byte of a (partial) -// character needs to be added to the output. -function utf8End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed); - return r; -} - -// UTF-16LE typically needs two bytes per character, but even if we have an even -// number of bytes available, we need to check if we end on a leading/high -// surrogate. In that case, we need to wait for the next two bytes in order to -// decode the last character properly. -function utf16Text(buf, i) { - if ((buf.length - i) % 2 === 0) { - var r = buf.toString('utf16le', i); - if (r) { - var c = r.charCodeAt(r.length - 1); - if (c >= 0xD800 && c <= 0xDBFF) { - this.lastNeed = 2; - this.lastTotal = 4; - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - return r.slice(0, -1); - } - } - return r; - } - this.lastNeed = 1; - this.lastTotal = 2; - this.lastChar[0] = buf[buf.length - 1]; - return buf.toString('utf16le', i, buf.length - 1); -} - -// For UTF-16LE we do not explicitly append special replacement characters if we -// end on a partial character, we simply let v8 handle that. -function utf16End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) { - var end = this.lastTotal - this.lastNeed; - return r + this.lastChar.toString('utf16le', 0, end); - } - return r; -} - -function base64Text(buf, i) { - var n = (buf.length - i) % 3; - if (n === 0) return buf.toString('base64', i); - this.lastNeed = 3 - n; - this.lastTotal = 3; - if (n === 1) { - this.lastChar[0] = buf[buf.length - 1]; - } else { - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - } - return buf.toString('base64', i, buf.length - n); -} - -function base64End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); - return r; -} - -// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) -function simpleWrite(buf) { - return buf.toString(this.encoding); -} - -function simpleEnd(buf) { - return buf && buf.length ? this.write(buf) : ''; -} -},{"safe-buffer":178}],180:[function(require,module,exports){ -(function (Buffer){ -var toString = Object.prototype.toString - -var isModern = ( - typeof Buffer.alloc === 'function' && - typeof Buffer.allocUnsafe === 'function' && - typeof Buffer.from === 'function' -) - -function isArrayBuffer (input) { - return toString.call(input).slice(8, -1) === 'ArrayBuffer' -} - -function fromArrayBuffer (obj, byteOffset, length) { - byteOffset >>>= 0 - - var maxLength = obj.byteLength - byteOffset - - if (maxLength < 0) { - throw new RangeError("'offset' is out of bounds") - } - - if (length === undefined) { - length = maxLength - } else { - length >>>= 0 - - if (length > maxLength) { - throw new RangeError("'length' is out of bounds") - } - } - - return isModern - ? Buffer.from(obj.slice(byteOffset, byteOffset + length)) - : new Buffer(new Uint8Array(obj.slice(byteOffset, byteOffset + length))) -} - -function fromString (string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8' - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('"encoding" must be a valid string encoding') - } - - return isModern - ? Buffer.from(string, encoding) - : new Buffer(string, encoding) -} - -function bufferFrom (value, encodingOrOffset, length) { - if (typeof value === 'number') { - throw new TypeError('"value" argument must not be a number') - } - - if (isArrayBuffer(value)) { - return fromArrayBuffer(value, encodingOrOffset, length) - } - - if (typeof value === 'string') { - return fromString(value, encodingOrOffset) - } - - return isModern - ? Buffer.from(value) - : new Buffer(value) -} - -module.exports = bufferFrom - -}).call(this,require("buffer").Buffer) -},{"buffer":182}],181:[function(require,module,exports){ -(function (Buffer){ -module.exports = function xor (a, b) { - var length = Math.min(a.length, b.length) - var buffer = new Buffer(length) - - for (var i = 0; i < length; ++i) { - buffer[i] = a[i] ^ b[i] - } - - return buffer -} - -}).call(this,require("buffer").Buffer) -},{"buffer":182}],182:[function(require,module,exports){ -(function (Buffer){ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -/* eslint-disable no-proto */ - -'use strict' - -var base64 = require('base64-js') -var ieee754 = require('ieee754') -var customInspectSymbol = - (typeof Symbol === 'function' && typeof Symbol.for === 'function') - ? Symbol.for('nodejs.util.inspect.custom') - : null - -exports.Buffer = Buffer -exports.SlowBuffer = SlowBuffer -exports.INSPECT_MAX_BYTES = 50 - -var K_MAX_LENGTH = 0x7fffffff -exports.kMaxLength = K_MAX_LENGTH - -/** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Print warning and recommend using `buffer` v4.x which has an Object - * implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * We report that the browser does not support typed arrays if the are not subclassable - * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` - * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support - * for __proto__ and has a buggy typed array implementation. - */ -Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport() - -if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && - typeof console.error === 'function') { - console.error( - 'This browser lacks typed array (Uint8Array) support which is required by ' + - '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' - ) -} - -function typedArraySupport () { - // Can typed array instances can be augmented? - try { - var arr = new Uint8Array(1) - var proto = { foo: function () { return 42 } } - Object.setPrototypeOf(proto, Uint8Array.prototype) - Object.setPrototypeOf(arr, proto) - return arr.foo() === 42 - } catch (e) { - return false - } -} - -Object.defineProperty(Buffer.prototype, 'parent', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.buffer - } -}) - -Object.defineProperty(Buffer.prototype, 'offset', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.byteOffset - } -}) - -function createBuffer (length) { - if (length > K_MAX_LENGTH) { - throw new RangeError('The value "' + length + '" is invalid for option "size"') - } - // Return an augmented `Uint8Array` instance - var buf = new Uint8Array(length) - Object.setPrototypeOf(buf, Buffer.prototype) - return buf -} - -/** - * The Buffer constructor returns instances of `Uint8Array` that have their - * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of - * `Uint8Array`, so the returned instances will have all the node `Buffer` methods - * and the `Uint8Array` methods. Square bracket notation works as expected -- it - * returns a single octet. - * - * The `Uint8Array` prototype remains unmodified. - */ - -function Buffer (arg, encodingOrOffset, length) { - // Common case. - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new TypeError( - 'The "string" argument must be of type string. Received type number' - ) - } - return allocUnsafe(arg) - } - return from(arg, encodingOrOffset, length) -} - -// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 -if (typeof Symbol !== 'undefined' && Symbol.species != null && - Buffer[Symbol.species] === Buffer) { - Object.defineProperty(Buffer, Symbol.species, { - value: null, - configurable: true, - enumerable: false, - writable: false - }) -} - -Buffer.poolSize = 8192 // not used by this implementation - -function from (value, encodingOrOffset, length) { - if (typeof value === 'string') { - return fromString(value, encodingOrOffset) - } - - if (ArrayBuffer.isView(value)) { - return fromArrayLike(value) - } - - if (value == null) { - throw new TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) - } - - if (isInstance(value, ArrayBuffer) || - (value && isInstance(value.buffer, ArrayBuffer))) { - return fromArrayBuffer(value, encodingOrOffset, length) - } - - if (typeof value === 'number') { - throw new TypeError( - 'The "value" argument must not be of type number. Received type number' - ) - } - - var valueOf = value.valueOf && value.valueOf() - if (valueOf != null && valueOf !== value) { - return Buffer.from(valueOf, encodingOrOffset, length) - } - - var b = fromObject(value) - if (b) return b - - if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && - typeof value[Symbol.toPrimitive] === 'function') { - return Buffer.from( - value[Symbol.toPrimitive]('string'), encodingOrOffset, length - ) - } - - throw new TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) -} - -/** - * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError - * if value is a number. - * Buffer.from(str[, encoding]) - * Buffer.from(array) - * Buffer.from(buffer) - * Buffer.from(arrayBuffer[, byteOffset[, length]]) - **/ -Buffer.from = function (value, encodingOrOffset, length) { - return from(value, encodingOrOffset, length) -} - -// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: -// https://github.com/feross/buffer/pull/148 -Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype) -Object.setPrototypeOf(Buffer, Uint8Array) - -function assertSize (size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be of type number') - } else if (size < 0) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } -} - -function alloc (size, fill, encoding) { - assertSize(size) - if (size <= 0) { - return createBuffer(size) - } - if (fill !== undefined) { - // Only pay attention to encoding if it's a string. This - // prevents accidentally sending in a number that would - // be interpretted as a start offset. - return typeof encoding === 'string' - ? createBuffer(size).fill(fill, encoding) - : createBuffer(size).fill(fill) - } - return createBuffer(size) -} - -/** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/ -Buffer.alloc = function (size, fill, encoding) { - return alloc(size, fill, encoding) -} - -function allocUnsafe (size) { - assertSize(size) - return createBuffer(size < 0 ? 0 : checked(size) | 0) -} - -/** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */ -Buffer.allocUnsafe = function (size) { - return allocUnsafe(size) -} -/** - * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. - */ -Buffer.allocUnsafeSlow = function (size) { - return allocUnsafe(size) -} - -function fromString (string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8' - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - - var length = byteLength(string, encoding) | 0 - var buf = createBuffer(length) - - var actual = buf.write(string, encoding) - - if (actual !== length) { - // Writing a hex string, for example, that contains invalid characters will - // cause everything after the first invalid character to be ignored. (e.g. - // 'abxxcd' will be treated as 'ab') - buf = buf.slice(0, actual) - } - - return buf -} - -function fromArrayLike (array) { - var length = array.length < 0 ? 0 : checked(array.length) | 0 - var buf = createBuffer(length) - for (var i = 0; i < length; i += 1) { - buf[i] = array[i] & 255 - } - return buf -} - -function fromArrayBuffer (array, byteOffset, length) { - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('"offset" is outside of buffer bounds') - } - - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('"length" is outside of buffer bounds') - } - - var buf - if (byteOffset === undefined && length === undefined) { - buf = new Uint8Array(array) - } else if (length === undefined) { - buf = new Uint8Array(array, byteOffset) - } else { - buf = new Uint8Array(array, byteOffset, length) - } - - // Return an augmented `Uint8Array` instance - Object.setPrototypeOf(buf, Buffer.prototype) - - return buf -} - -function fromObject (obj) { - if (Buffer.isBuffer(obj)) { - var len = checked(obj.length) | 0 - var buf = createBuffer(len) - - if (buf.length === 0) { - return buf - } - - obj.copy(buf, 0, 0, len) - return buf - } - - if (obj.length !== undefined) { - if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { - return createBuffer(0) - } - return fromArrayLike(obj) - } - - if (obj.type === 'Buffer' && Array.isArray(obj.data)) { - return fromArrayLike(obj.data) - } -} - -function checked (length) { - // Note: cannot use `length < K_MAX_LENGTH` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= K_MAX_LENGTH) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + - 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') - } - return length | 0 -} - -function SlowBuffer (length) { - if (+length != length) { // eslint-disable-line eqeqeq - length = 0 - } - return Buffer.alloc(+length) -} - -Buffer.isBuffer = function isBuffer (b) { - return b != null && b._isBuffer === true && - b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false -} - -Buffer.compare = function compare (a, b) { - if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength) - if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength) - if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { - throw new TypeError( - 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' - ) - } - - if (a === b) return 0 - - var x = a.length - var y = b.length - - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i] - y = b[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -Buffer.isEncoding = function isEncoding (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } -} - -Buffer.concat = function concat (list, length) { - if (!Array.isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - - if (list.length === 0) { - return Buffer.alloc(0) - } - - var i - if (length === undefined) { - length = 0 - for (i = 0; i < list.length; ++i) { - length += list[i].length - } - } - - var buffer = Buffer.allocUnsafe(length) - var pos = 0 - for (i = 0; i < list.length; ++i) { - var buf = list[i] - if (isInstance(buf, Uint8Array)) { - buf = Buffer.from(buf) - } - if (!Buffer.isBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - buf.copy(buffer, pos) - pos += buf.length - } - return buffer -} - -function byteLength (string, encoding) { - if (Buffer.isBuffer(string)) { - return string.length - } - if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { - return string.byteLength - } - if (typeof string !== 'string') { - throw new TypeError( - 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + - 'Received type ' + typeof string - ) - } - - var len = string.length - var mustMatch = (arguments.length > 2 && arguments[2] === true) - if (!mustMatch && len === 0) return 0 - - // Use a for loop to avoid recursion - var loweredCase = false - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len - case 'utf8': - case 'utf-8': - return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2 - case 'hex': - return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: - if (loweredCase) { - return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 - } - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} -Buffer.byteLength = byteLength - -function slowToString (encoding, start, end) { - var loweredCase = false - - // No need to verify that "this.length <= MAX_UINT32" since it's a read-only - // property of a typed array. - - // This behaves neither like String nor Uint8Array in that we set start/end - // to their upper/lower bounds if the value passed is out of range. - // undefined is handled specially as per ECMA-262 6th Edition, - // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. - if (start === undefined || start < 0) { - start = 0 - } - // Return early if start > this.length. Done here to prevent potential uint32 - // coercion fail below. - if (start > this.length) { - return '' - } - - if (end === undefined || end > this.length) { - end = this.length - } - - if (end <= 0) { - return '' - } - - // Force coersion to uint32. This will also coerce falsey/NaN values to 0. - end >>>= 0 - start >>>= 0 - - if (end <= start) { - return '' - } - - if (!encoding) encoding = 'utf8' - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end) - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end) - - case 'ascii': - return asciiSlice(this, start, end) - - case 'latin1': - case 'binary': - return latin1Slice(this, start, end) - - case 'base64': - return base64Slice(this, start, end) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = (encoding + '').toLowerCase() - loweredCase = true - } - } -} - -// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) -// to detect a Buffer instance. It's not possible to use `instanceof Buffer` -// reliably in a browserify context because there could be multiple different -// copies of the 'buffer' package in use. This method works even for Buffer -// instances that were created from another copy of the `buffer` package. -// See: https://github.com/feross/buffer/issues/154 -Buffer.prototype._isBuffer = true - -function swap (b, n, m) { - var i = b[n] - b[n] = b[m] - b[m] = i -} - -Buffer.prototype.swap16 = function swap16 () { - var len = this.length - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits') - } - for (var i = 0; i < len; i += 2) { - swap(this, i, i + 1) - } - return this -} - -Buffer.prototype.swap32 = function swap32 () { - var len = this.length - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits') - } - for (var i = 0; i < len; i += 4) { - swap(this, i, i + 3) - swap(this, i + 1, i + 2) - } - return this -} - -Buffer.prototype.swap64 = function swap64 () { - var len = this.length - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits') - } - for (var i = 0; i < len; i += 8) { - swap(this, i, i + 7) - swap(this, i + 1, i + 6) - swap(this, i + 2, i + 5) - swap(this, i + 3, i + 4) - } - return this -} - -Buffer.prototype.toString = function toString () { - var length = this.length - if (length === 0) return '' - if (arguments.length === 0) return utf8Slice(this, 0, length) - return slowToString.apply(this, arguments) -} - -Buffer.prototype.toLocaleString = Buffer.prototype.toString - -Buffer.prototype.equals = function equals (b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return true - return Buffer.compare(this, b) === 0 -} - -Buffer.prototype.inspect = function inspect () { - var str = '' - var max = exports.INSPECT_MAX_BYTES - str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim() - if (this.length > max) str += ' ... ' - return '' -} -if (customInspectSymbol) { - Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect -} - -Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { - if (isInstance(target, Uint8Array)) { - target = Buffer.from(target, target.offset, target.byteLength) - } - if (!Buffer.isBuffer(target)) { - throw new TypeError( - 'The "target" argument must be one of type Buffer or Uint8Array. ' + - 'Received type ' + (typeof target) - ) - } - - if (start === undefined) { - start = 0 - } - if (end === undefined) { - end = target ? target.length : 0 - } - if (thisStart === undefined) { - thisStart = 0 - } - if (thisEnd === undefined) { - thisEnd = this.length - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index') - } - - if (thisStart >= thisEnd && start >= end) { - return 0 - } - if (thisStart >= thisEnd) { - return -1 - } - if (start >= end) { - return 1 - } - - start >>>= 0 - end >>>= 0 - thisStart >>>= 0 - thisEnd >>>= 0 - - if (this === target) return 0 - - var x = thisEnd - thisStart - var y = end - start - var len = Math.min(x, y) - - var thisCopy = this.slice(thisStart, thisEnd) - var targetCopy = target.slice(start, end) - - for (var i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i] - y = targetCopy[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, -// OR the last index of `val` in `buffer` at offset <= `byteOffset`. -// -// Arguments: -// - buffer - a Buffer to search -// - val - a string, Buffer, or number -// - byteOffset - an index into `buffer`; will be clamped to an int32 -// - encoding - an optional encoding, relevant is val is a string -// - dir - true for indexOf, false for lastIndexOf -function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { - // Empty buffer means no match - if (buffer.length === 0) return -1 - - // Normalize byteOffset - if (typeof byteOffset === 'string') { - encoding = byteOffset - byteOffset = 0 - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff - } else if (byteOffset < -0x80000000) { - byteOffset = -0x80000000 - } - byteOffset = +byteOffset // Coerce to Number. - if (numberIsNaN(byteOffset)) { - // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer - byteOffset = dir ? 0 : (buffer.length - 1) - } - - // Normalize byteOffset: negative offsets start from the end of the buffer - if (byteOffset < 0) byteOffset = buffer.length + byteOffset - if (byteOffset >= buffer.length) { - if (dir) return -1 - else byteOffset = buffer.length - 1 - } else if (byteOffset < 0) { - if (dir) byteOffset = 0 - else return -1 - } - - // Normalize val - if (typeof val === 'string') { - val = Buffer.from(val, encoding) - } - - // Finally, search either indexOf (if dir is true) or lastIndexOf - if (Buffer.isBuffer(val)) { - // Special case: looking for empty string/buffer always fails - if (val.length === 0) { - return -1 - } - return arrayIndexOf(buffer, val, byteOffset, encoding, dir) - } else if (typeof val === 'number') { - val = val & 0xFF // Search for a byte value [0-255] - if (typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) - } - } - return arrayIndexOf(buffer, [val], byteOffset, encoding, dir) - } - - throw new TypeError('val must be string, number or Buffer') -} - -function arrayIndexOf (arr, val, byteOffset, encoding, dir) { - var indexSize = 1 - var arrLength = arr.length - var valLength = val.length - - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase() - if (encoding === 'ucs2' || encoding === 'ucs-2' || - encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1 - } - indexSize = 2 - arrLength /= 2 - valLength /= 2 - byteOffset /= 2 - } - } - - function read (buf, i) { - if (indexSize === 1) { - return buf[i] - } else { - return buf.readUInt16BE(i * indexSize) - } - } - - var i - if (dir) { - var foundIndex = -1 - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize - } else { - if (foundIndex !== -1) i -= i - foundIndex - foundIndex = -1 - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength - for (i = byteOffset; i >= 0; i--) { - var found = true - for (var j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false - break - } - } - if (found) return i - } - } - - return -1 -} - -Buffer.prototype.includes = function includes (val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1 -} - -Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true) -} - -Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false) -} - -function hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0 - var remaining = buf.length - offset - if (!length) { - length = remaining - } else { - length = Number(length) - if (length > remaining) { - length = remaining - } - } - - var strLen = string.length - - if (length > strLen / 2) { - length = strLen / 2 - } - for (var i = 0; i < length; ++i) { - var parsed = parseInt(string.substr(i * 2, 2), 16) - if (numberIsNaN(parsed)) return i - buf[offset + i] = parsed - } - return i -} - -function utf8Write (buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) -} - -function asciiWrite (buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length) -} - -function latin1Write (buf, string, offset, length) { - return asciiWrite(buf, string, offset, length) -} - -function base64Write (buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length) -} - -function ucs2Write (buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) -} - -Buffer.prototype.write = function write (string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8' - length = this.length - offset = 0 - // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset - length = this.length - offset = 0 - // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset >>> 0 - if (isFinite(length)) { - length = length >>> 0 - if (encoding === undefined) encoding = 'utf8' - } else { - encoding = length - length = undefined - } - } else { - throw new Error( - 'Buffer.write(string, encoding, offset[, length]) is no longer supported' - ) - } - - var remaining = this.length - offset - if (length === undefined || length > remaining) length = remaining - - if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds') - } - - if (!encoding) encoding = 'utf8' - - var loweredCase = false - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length) - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length) - - case 'ascii': - return asciiWrite(this, string, offset, length) - - case 'latin1': - case 'binary': - return latin1Write(this, string, offset, length) - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} - -Buffer.prototype.toJSON = function toJSON () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - } -} - -function base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf) - } else { - return base64.fromByteArray(buf.slice(start, end)) - } -} - -function utf8Slice (buf, start, end) { - end = Math.min(buf.length, end) - var res = [] - - var i = start - while (i < end) { - var firstByte = buf[i] - var codePoint = null - var bytesPerSequence = (firstByte > 0xEF) ? 4 - : (firstByte > 0xDF) ? 3 - : (firstByte > 0xBF) ? 2 - : 1 - - if (i + bytesPerSequence <= end) { - var secondByte, thirdByte, fourthByte, tempCodePoint - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte - } - break - case 2: - secondByte = buf[i + 1] - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint - } - } - break - case 3: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint - } - } - break - case 4: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - fourthByte = buf[i + 3] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint - } - } - } - } - - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD - bytesPerSequence = 1 - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000 - res.push(codePoint >>> 10 & 0x3FF | 0xD800) - codePoint = 0xDC00 | codePoint & 0x3FF - } - - res.push(codePoint) - i += bytesPerSequence - } - - return decodeCodePointsArray(res) -} - -// Based on http://stackoverflow.com/a/22747272/680742, the browser with -// the lowest limit is Chrome, with 0x10000 args. -// We go 1 magnitude less, for safety -var MAX_ARGUMENTS_LENGTH = 0x1000 - -function decodeCodePointsArray (codePoints) { - var len = codePoints.length - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints) // avoid extra slice() - } - - // Decode in chunks to avoid "call stack size exceeded". - var res = '' - var i = 0 - while (i < len) { - res += String.fromCharCode.apply( - String, - codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) - ) - } - return res -} - -function asciiSlice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F) - } - return ret -} - -function latin1Slice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]) - } - return ret -} - -function hexSlice (buf, start, end) { - var len = buf.length - - if (!start || start < 0) start = 0 - if (!end || end < 0 || end > len) end = len - - var out = '' - for (var i = start; i < end; ++i) { - out += hexSliceLookupTable[buf[i]] - } - return out -} - -function utf16leSlice (buf, start, end) { - var bytes = buf.slice(start, end) - var res = '' - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)) - } - return res -} - -Buffer.prototype.slice = function slice (start, end) { - var len = this.length - start = ~~start - end = end === undefined ? len : ~~end - - if (start < 0) { - start += len - if (start < 0) start = 0 - } else if (start > len) { - start = len - } - - if (end < 0) { - end += len - if (end < 0) end = 0 - } else if (end > len) { - end = len - } - - if (end < start) end = start - - var newBuf = this.subarray(start, end) - // Return an augmented `Uint8Array` instance - Object.setPrototypeOf(newBuf, Buffer.prototype) - - return newBuf -} - -/* - * Need to make sure that buffer isn't trying to write out of bounds. - */ -function checkOffset (offset, ext, length) { - if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') -} - -Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - - return val -} - -Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - checkOffset(offset, byteLength, this.length) - } - - var val = this[offset + --byteLength] - var mul = 1 - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul - } - - return val -} - -Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 1, this.length) - return this[offset] -} - -Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - return this[offset] | (this[offset + 1] << 8) -} - -Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - return (this[offset] << 8) | this[offset + 1] -} - -Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return ((this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16)) + - (this[offset + 3] * 0x1000000) -} - -Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] * 0x1000000) + - ((this[offset + 1] << 16) | - (this[offset + 2] << 8) | - this[offset + 3]) -} - -Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var i = byteLength - var mul = 1 - var val = this[offset + --i] - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 1, this.length) - if (!(this[offset] & 0x80)) return (this[offset]) - return ((0xff - this[offset] + 1) * -1) -} - -Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset] | (this[offset + 1] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset + 1] | (this[offset] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16) | - (this[offset + 3] << 24) -} - -Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] << 24) | - (this[offset + 1] << 16) | - (this[offset + 2] << 8) | - (this[offset + 3]) -} - -Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, true, 23, 4) -} - -Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, false, 23, 4) -} - -Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, true, 52, 8) -} - -Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, false, 52, 8) -} - -function checkInt (buf, value, offset, ext, max, min) { - if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') - if (offset + ext > buf.length) throw new RangeError('Index out of range') -} - -Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - var mul = 1 - var i = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - var i = byteLength - 1 - var mul = 1 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) - this[offset] = (value & 0xff) - return offset + 1 -} - -Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - return offset + 2 -} - -Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - return offset + 2 -} - -Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - this[offset + 3] = (value >>> 24) - this[offset + 2] = (value >>> 16) - this[offset + 1] = (value >>> 8) - this[offset] = (value & 0xff) - return offset + 4 -} - -Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - return offset + 4 -} - -Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - var limit = Math.pow(2, (8 * byteLength) - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = 0 - var mul = 1 - var sub = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - var limit = Math.pow(2, (8 * byteLength) - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = byteLength - 1 - var mul = 1 - var sub = 0 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) - if (value < 0) value = 0xff + value + 1 - this[offset] = (value & 0xff) - return offset + 1 -} - -Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - return offset + 2 -} - -Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - return offset + 2 -} - -Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - this[offset + 2] = (value >>> 16) - this[offset + 3] = (value >>> 24) - return offset + 4 -} - -Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - if (value < 0) value = 0xffffffff + value + 1 - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - return offset + 4 -} - -function checkIEEE754 (buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range') - if (offset < 0) throw new RangeError('Index out of range') -} - -function writeFloat (buf, value, offset, littleEndian, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) - } - ieee754.write(buf, value, offset, littleEndian, 23, 4) - return offset + 4 -} - -Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert) -} - -function writeDouble (buf, value, offset, littleEndian, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) - } - ieee754.write(buf, value, offset, littleEndian, 52, 8) - return offset + 8 -} - -Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert) -} - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function copy (target, targetStart, start, end) { - if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') - if (!start) start = 0 - if (!end && end !== 0) end = this.length - if (targetStart >= target.length) targetStart = target.length - if (!targetStart) targetStart = 0 - if (end > 0 && end < start) end = start - - // Copy 0 bytes; we're done - if (end === start) return 0 - if (target.length === 0 || this.length === 0) return 0 - - // Fatal error conditions - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds') - } - if (start < 0 || start >= this.length) throw new RangeError('Index out of range') - if (end < 0) throw new RangeError('sourceEnd out of bounds') - - // Are we oob? - if (end > this.length) end = this.length - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start - } - - var len = end - start - - if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { - // Use built-in when available, missing from IE11 - this.copyWithin(targetStart, start, end) - } else if (this === target && start < targetStart && targetStart < end) { - // descending copy from end - for (var i = len - 1; i >= 0; --i) { - target[i + targetStart] = this[i + start] - } - } else { - Uint8Array.prototype.set.call( - target, - this.subarray(start, end), - targetStart - ) - } - - return len -} - -// Usage: -// buffer.fill(number[, offset[, end]]) -// buffer.fill(buffer[, offset[, end]]) -// buffer.fill(string[, offset[, end]][, encoding]) -Buffer.prototype.fill = function fill (val, start, end, encoding) { - // Handle string cases: - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start - start = 0 - end = this.length - } else if (typeof end === 'string') { - encoding = end - end = this.length - } - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string') - } - if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - if (val.length === 1) { - var code = val.charCodeAt(0) - if ((encoding === 'utf8' && code < 128) || - encoding === 'latin1') { - // Fast path: If `val` fits into a single byte, use that numeric value. - val = code - } - } - } else if (typeof val === 'number') { - val = val & 255 - } else if (typeof val === 'boolean') { - val = Number(val) - } - - // Invalid ranges are not set to a default, so can range check early. - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index') - } - - if (end <= start) { - return this - } - - start = start >>> 0 - end = end === undefined ? this.length : end >>> 0 - - if (!val) val = 0 - - var i - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val - } - } else { - var bytes = Buffer.isBuffer(val) - ? val - : Buffer.from(val, encoding) - var len = bytes.length - if (len === 0) { - throw new TypeError('The value "' + val + - '" is invalid for argument "value"') - } - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len] - } - } - - return this -} - -// HELPER FUNCTIONS -// ================ - -var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g - -function base64clean (str) { - // Node takes equal signs as end of the Base64 encoding - str = str.split('=')[0] - // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = str.trim().replace(INVALID_BASE64_RE, '') - // Node converts strings with length < 2 to '' - if (str.length < 2) return '' - // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - while (str.length % 4 !== 0) { - str = str + '=' - } - return str -} - -function utf8ToBytes (string, units) { - units = units || Infinity - var codePoint - var length = string.length - var leadSurrogate = null - var bytes = [] - - for (var i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i) - - // is surrogate component - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } - - // valid lead - leadSurrogate = codePoint - - continue - } - - // 2 leads in a row - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - leadSurrogate = codePoint - continue - } - - // valid surrogate pair - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - } - - leadSurrogate = null - - // encode utf8 - if (codePoint < 0x80) { - if ((units -= 1) < 0) break - bytes.push(codePoint) - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break - bytes.push( - codePoint >> 0x6 | 0xC0, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break - bytes.push( - codePoint >> 0xC | 0xE0, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break - bytes.push( - codePoint >> 0x12 | 0xF0, - codePoint >> 0xC & 0x3F | 0x80, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else { - throw new Error('Invalid code point') - } - } - - return bytes -} - -function asciiToBytes (str) { - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF) - } - return byteArray -} - -function utf16leToBytes (str, units) { - var c, hi, lo - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break - - c = str.charCodeAt(i) - hi = c >> 8 - lo = c % 256 - byteArray.push(lo) - byteArray.push(hi) - } - - return byteArray -} - -function base64ToBytes (str) { - return base64.toByteArray(base64clean(str)) -} - -function blitBuffer (src, dst, offset, length) { - for (var i = 0; i < length; ++i) { - if ((i + offset >= dst.length) || (i >= src.length)) break - dst[i + offset] = src[i] - } - return i -} - -// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass -// the `instanceof` check but they should be treated as of that type. -// See: https://github.com/feross/buffer/issues/166 -function isInstance (obj, type) { - return obj instanceof type || - (obj != null && obj.constructor != null && obj.constructor.name != null && - obj.constructor.name === type.name) -} -function numberIsNaN (obj) { - // For IE11 support - return obj !== obj // eslint-disable-line no-self-compare -} - -// Create lookup table for `toString('hex')` -// See: https://github.com/feross/buffer/issues/219 -var hexSliceLookupTable = (function () { - var alphabet = '0123456789abcdef' - var table = new Array(256) - for (var i = 0; i < 16; ++i) { - var i16 = i * 16 - for (var j = 0; j < 16; ++j) { - table[i16 + j] = alphabet[i] + alphabet[j] - } - } - return table -})() - -}).call(this,require("buffer").Buffer) -},{"base64-js":146,"buffer":182,"ieee754":241}],183:[function(require,module,exports){ -module.exports = { - "100": "Continue", - "101": "Switching Protocols", - "102": "Processing", - "200": "OK", - "201": "Created", - "202": "Accepted", - "203": "Non-Authoritative Information", - "204": "No Content", - "205": "Reset Content", - "206": "Partial Content", - "207": "Multi-Status", - "208": "Already Reported", - "226": "IM Used", - "300": "Multiple Choices", - "301": "Moved Permanently", - "302": "Found", - "303": "See Other", - "304": "Not Modified", - "305": "Use Proxy", - "307": "Temporary Redirect", - "308": "Permanent Redirect", - "400": "Bad Request", - "401": "Unauthorized", - "402": "Payment Required", - "403": "Forbidden", - "404": "Not Found", - "405": "Method Not Allowed", - "406": "Not Acceptable", - "407": "Proxy Authentication Required", - "408": "Request Timeout", - "409": "Conflict", - "410": "Gone", - "411": "Length Required", - "412": "Precondition Failed", - "413": "Payload Too Large", - "414": "URI Too Long", - "415": "Unsupported Media Type", - "416": "Range Not Satisfiable", - "417": "Expectation Failed", - "418": "I'm a teapot", - "421": "Misdirected Request", - "422": "Unprocessable Entity", - "423": "Locked", - "424": "Failed Dependency", - "425": "Unordered Collection", - "426": "Upgrade Required", - "428": "Precondition Required", - "429": "Too Many Requests", - "431": "Request Header Fields Too Large", - "451": "Unavailable For Legal Reasons", - "500": "Internal Server Error", - "501": "Not Implemented", - "502": "Bad Gateway", - "503": "Service Unavailable", - "504": "Gateway Timeout", - "505": "HTTP Version Not Supported", - "506": "Variant Also Negotiates", - "507": "Insufficient Storage", - "508": "Loop Detected", - "509": "Bandwidth Limit Exceeded", - "510": "Not Extended", - "511": "Network Authentication Required" -} - -},{}],184:[function(require,module,exports){ -var Buffer = require('safe-buffer').Buffer -var Transform = require('stream').Transform -var StringDecoder = require('string_decoder').StringDecoder -var inherits = require('inherits') - -function CipherBase (hashMode) { - Transform.call(this) - this.hashMode = typeof hashMode === 'string' - if (this.hashMode) { - this[hashMode] = this._finalOrDigest - } else { - this.final = this._finalOrDigest - } - if (this._final) { - this.__final = this._final - this._final = null - } - this._decoder = null - this._encoding = null -} -inherits(CipherBase, Transform) - -CipherBase.prototype.update = function (data, inputEnc, outputEnc) { - if (typeof data === 'string') { - data = Buffer.from(data, inputEnc) - } - - var outData = this._update(data) - if (this.hashMode) return this - - if (outputEnc) { - outData = this._toString(outData, outputEnc) - } - - return outData -} - -CipherBase.prototype.setAutoPadding = function () {} -CipherBase.prototype.getAuthTag = function () { - throw new Error('trying to get auth tag in unsupported state') -} - -CipherBase.prototype.setAuthTag = function () { - throw new Error('trying to set auth tag in unsupported state') -} - -CipherBase.prototype.setAAD = function () { - throw new Error('trying to set aad in unsupported state') -} - -CipherBase.prototype._transform = function (data, _, next) { - var err - try { - if (this.hashMode) { - this._update(data) - } else { - this.push(this._update(data)) - } - } catch (e) { - err = e - } finally { - next(err) - } -} -CipherBase.prototype._flush = function (done) { - var err - try { - this.push(this.__final()) - } catch (e) { - err = e - } - - done(err) -} -CipherBase.prototype._finalOrDigest = function (outputEnc) { - var outData = this.__final() || Buffer.alloc(0) - if (outputEnc) { - outData = this._toString(outData, outputEnc, true) - } - return outData -} - -CipherBase.prototype._toString = function (value, enc, fin) { - if (!this._decoder) { - this._decoder = new StringDecoder(enc) - this._encoding = enc - } - - if (this._encoding !== enc) throw new Error('can\'t switch encodings') - - var out = this._decoder.write(value) - if (fin) { - out += this._decoder.end() - } - - return out -} - -module.exports = CipherBase - -},{"inherits":262,"safe-buffer":318,"stream":328,"string_decoder":179}],185:[function(require,module,exports){ -(function (Buffer){ -var Writable = require('readable-stream').Writable -var inherits = require('inherits') -var bufferFrom = require('buffer-from') - -if (typeof Uint8Array === 'undefined') { - var U8 = require('typedarray').Uint8Array -} else { - var U8 = Uint8Array -} - -function ConcatStream(opts, cb) { - if (!(this instanceof ConcatStream)) return new ConcatStream(opts, cb) - - if (typeof opts === 'function') { - cb = opts - opts = {} - } - if (!opts) opts = {} - - var encoding = opts.encoding - var shouldInferEncoding = false - - if (!encoding) { - shouldInferEncoding = true - } else { - encoding = String(encoding).toLowerCase() - if (encoding === 'u8' || encoding === 'uint8') { - encoding = 'uint8array' - } - } - - Writable.call(this, { objectMode: true }) - - this.encoding = encoding - this.shouldInferEncoding = shouldInferEncoding - - if (cb) this.on('finish', function () { cb(this.getBody()) }) - this.body = [] -} - -module.exports = ConcatStream -inherits(ConcatStream, Writable) - -ConcatStream.prototype._write = function(chunk, enc, next) { - this.body.push(chunk) - next() -} - -ConcatStream.prototype.inferEncoding = function (buff) { - var firstBuffer = buff === undefined ? this.body[0] : buff; - if (Buffer.isBuffer(firstBuffer)) return 'buffer' - if (typeof Uint8Array !== 'undefined' && firstBuffer instanceof Uint8Array) return 'uint8array' - if (Array.isArray(firstBuffer)) return 'array' - if (typeof firstBuffer === 'string') return 'string' - if (Object.prototype.toString.call(firstBuffer) === "[object Object]") return 'object' - return 'buffer' -} - -ConcatStream.prototype.getBody = function () { - if (!this.encoding && this.body.length === 0) return [] - if (this.shouldInferEncoding) this.encoding = this.inferEncoding() - if (this.encoding === 'array') return arrayConcat(this.body) - if (this.encoding === 'string') return stringConcat(this.body) - if (this.encoding === 'buffer') return bufferConcat(this.body) - if (this.encoding === 'uint8array') return u8Concat(this.body) - return this.body -} - -var isArray = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) == '[object Array]' -} - -function isArrayish (arr) { - return /Array\]$/.test(Object.prototype.toString.call(arr)) -} - -function isBufferish (p) { - return typeof p === 'string' || isArrayish(p) || (p && typeof p.subarray === 'function') -} - -function stringConcat (parts) { - var strings = [] - var needsToString = false - for (var i = 0; i < parts.length; i++) { - var p = parts[i] - if (typeof p === 'string') { - strings.push(p) - } else if (Buffer.isBuffer(p)) { - strings.push(p) - } else if (isBufferish(p)) { - strings.push(bufferFrom(p)) - } else { - strings.push(bufferFrom(String(p))) - } - } - if (Buffer.isBuffer(parts[0])) { - strings = Buffer.concat(strings) - strings = strings.toString('utf8') - } else { - strings = strings.join('') - } - return strings -} - -function bufferConcat (parts) { - var bufs = [] - for (var i = 0; i < parts.length; i++) { - var p = parts[i] - if (Buffer.isBuffer(p)) { - bufs.push(p) - } else if (isBufferish(p)) { - bufs.push(bufferFrom(p)) - } else { - bufs.push(bufferFrom(String(p))) - } - } - return Buffer.concat(bufs) -} - -function arrayConcat (parts) { - var res = [] - for (var i = 0; i < parts.length; i++) { - res.push.apply(res, parts[i]) - } - return res -} - -function u8Concat (parts) { - var len = 0 - for (var i = 0; i < parts.length; i++) { - if (typeof parts[i] === 'string') { - parts[i] = bufferFrom(parts[i]) - } - len += parts[i].length - } - var u8 = new U8(len) - for (var i = 0, offset = 0; i < parts.length; i++) { - var part = parts[i] - for (var j = 0; j < part.length; j++) { - u8[offset++] = part[j] - } - } - return u8 -} - -}).call(this,require("buffer").Buffer) -},{"buffer":182,"buffer-from":180,"inherits":262,"readable-stream":312,"typedarray":337}],186:[function(require,module,exports){ -(function (Buffer){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. - -function isArray(arg) { - if (Array.isArray) { - return Array.isArray(arg); - } - return objectToString(arg) === '[object Array]'; -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -exports.isBuffer = Buffer.isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} - -}).call(this,{"isBuffer":require("../../is-buffer/index.js")}) -},{"../../is-buffer/index.js":263}],187:[function(require,module,exports){ -(function (Buffer){ -var elliptic = require('elliptic') -var BN = require('bn.js') - -module.exports = function createECDH (curve) { - return new ECDH(curve) -} - -var aliases = { - secp256k1: { - name: 'secp256k1', - byteLength: 32 - }, - secp224r1: { - name: 'p224', - byteLength: 28 - }, - prime256v1: { - name: 'p256', - byteLength: 32 - }, - prime192v1: { - name: 'p192', - byteLength: 24 - }, - ed25519: { - name: 'ed25519', - byteLength: 32 - }, - secp384r1: { - name: 'p384', - byteLength: 48 - }, - secp521r1: { - name: 'p521', - byteLength: 66 - } -} - -aliases.p224 = aliases.secp224r1 -aliases.p256 = aliases.secp256r1 = aliases.prime256v1 -aliases.p192 = aliases.secp192r1 = aliases.prime192v1 -aliases.p384 = aliases.secp384r1 -aliases.p521 = aliases.secp521r1 - -function ECDH (curve) { - this.curveType = aliases[curve] - if (!this.curveType) { - this.curveType = { - name: curve - } - } - this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap - this.keys = void 0 -} - -ECDH.prototype.generateKeys = function (enc, format) { - this.keys = this.curve.genKeyPair() - return this.getPublicKey(enc, format) -} - -ECDH.prototype.computeSecret = function (other, inenc, enc) { - inenc = inenc || 'utf8' - if (!Buffer.isBuffer(other)) { - other = new Buffer(other, inenc) - } - var otherPub = this.curve.keyFromPublic(other).getPublic() - var out = otherPub.mul(this.keys.getPrivate()).getX() - return formatReturnValue(out, enc, this.curveType.byteLength) -} - -ECDH.prototype.getPublicKey = function (enc, format) { - var key = this.keys.getPublic(format === 'compressed', true) - if (format === 'hybrid') { - if (key[key.length - 1] % 2) { - key[0] = 7 - } else { - key[0] = 6 - } - } - return formatReturnValue(key, enc) -} - -ECDH.prototype.getPrivateKey = function (enc) { - return formatReturnValue(this.keys.getPrivate(), enc) -} - -ECDH.prototype.setPublicKey = function (pub, enc) { - enc = enc || 'utf8' - if (!Buffer.isBuffer(pub)) { - pub = new Buffer(pub, enc) - } - this.keys._importPublic(pub) - return this -} - -ECDH.prototype.setPrivateKey = function (priv, enc) { - enc = enc || 'utf8' - if (!Buffer.isBuffer(priv)) { - priv = new Buffer(priv, enc) - } - - var _priv = new BN(priv) - _priv = _priv.toString(16) - this.keys = this.curve.genKeyPair() - this.keys._importPrivate(_priv) - return this -} - -function formatReturnValue (bn, enc, len) { - if (!Array.isArray(bn)) { - bn = bn.toArray() - } - var buf = new Buffer(bn) - if (len && buf.length < len) { - var zeros = new Buffer(len - buf.length) - zeros.fill(0) - buf = Buffer.concat([zeros, buf]) - } - if (!enc) { - return buf - } else { - return buf.toString(enc) - } -} - -}).call(this,require("buffer").Buffer) -},{"bn.js":147,"buffer":182,"elliptic":205}],188:[function(require,module,exports){ -'use strict' -var inherits = require('inherits') -var MD5 = require('md5.js') -var RIPEMD160 = require('ripemd160') -var sha = require('sha.js') -var Base = require('cipher-base') - -function Hash (hash) { - Base.call(this, 'digest') - - this._hash = hash -} - -inherits(Hash, Base) - -Hash.prototype._update = function (data) { - this._hash.update(data) -} - -Hash.prototype._final = function () { - return this._hash.digest() -} - -module.exports = function createHash (alg) { - alg = alg.toLowerCase() - if (alg === 'md5') return new MD5() - if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160() - - return new Hash(sha(alg)) -} - -},{"cipher-base":184,"inherits":262,"md5.js":266,"ripemd160":317,"sha.js":320}],189:[function(require,module,exports){ -var MD5 = require('md5.js') - -module.exports = function (buffer) { - return new MD5().update(buffer).digest() -} - -},{"md5.js":266}],190:[function(require,module,exports){ -'use strict' -var inherits = require('inherits') -var Legacy = require('./legacy') -var Base = require('cipher-base') -var Buffer = require('safe-buffer').Buffer -var md5 = require('create-hash/md5') -var RIPEMD160 = require('ripemd160') - -var sha = require('sha.js') - -var ZEROS = Buffer.alloc(128) - -function Hmac (alg, key) { - Base.call(this, 'digest') - if (typeof key === 'string') { - key = Buffer.from(key) - } - - var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64 - - this._alg = alg - this._key = key - if (key.length > blocksize) { - var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg) - key = hash.update(key).digest() - } else if (key.length < blocksize) { - key = Buffer.concat([key, ZEROS], blocksize) - } - - var ipad = this._ipad = Buffer.allocUnsafe(blocksize) - var opad = this._opad = Buffer.allocUnsafe(blocksize) - - for (var i = 0; i < blocksize; i++) { - ipad[i] = key[i] ^ 0x36 - opad[i] = key[i] ^ 0x5C - } - this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg) - this._hash.update(ipad) -} - -inherits(Hmac, Base) - -Hmac.prototype._update = function (data) { - this._hash.update(data) -} - -Hmac.prototype._final = function () { - var h = this._hash.digest() - var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg) - return hash.update(this._opad).update(h).digest() -} - -module.exports = function createHmac (alg, key) { - alg = alg.toLowerCase() - if (alg === 'rmd160' || alg === 'ripemd160') { - return new Hmac('rmd160', key) - } - if (alg === 'md5') { - return new Legacy(md5, key) - } - return new Hmac(alg, key) -} - -},{"./legacy":191,"cipher-base":184,"create-hash/md5":189,"inherits":262,"ripemd160":317,"safe-buffer":318,"sha.js":320}],191:[function(require,module,exports){ -'use strict' -var inherits = require('inherits') -var Buffer = require('safe-buffer').Buffer - -var Base = require('cipher-base') - -var ZEROS = Buffer.alloc(128) -var blocksize = 64 - -function Hmac (alg, key) { - Base.call(this, 'digest') - if (typeof key === 'string') { - key = Buffer.from(key) - } - - this._alg = alg - this._key = key - - if (key.length > blocksize) { - key = alg(key) - } else if (key.length < blocksize) { - key = Buffer.concat([key, ZEROS], blocksize) - } - - var ipad = this._ipad = Buffer.allocUnsafe(blocksize) - var opad = this._opad = Buffer.allocUnsafe(blocksize) - - for (var i = 0; i < blocksize; i++) { - ipad[i] = key[i] ^ 0x36 - opad[i] = key[i] ^ 0x5C - } - - this._hash = [ipad] -} - -inherits(Hmac, Base) - -Hmac.prototype._update = function (data) { - this._hash.push(data) -} - -Hmac.prototype._final = function () { - var h = this._alg(Buffer.concat(this._hash)) - return this._alg(Buffer.concat([this._opad, h])) -} -module.exports = Hmac - -},{"cipher-base":184,"inherits":262,"safe-buffer":318}],192:[function(require,module,exports){ -'use strict' - -exports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes') -exports.createHash = exports.Hash = require('create-hash') -exports.createHmac = exports.Hmac = require('create-hmac') - -var algos = require('browserify-sign/algos') -var algoKeys = Object.keys(algos) -var hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys) -exports.getHashes = function () { - return hashes -} - -var p = require('pbkdf2') -exports.pbkdf2 = p.pbkdf2 -exports.pbkdf2Sync = p.pbkdf2Sync - -var aes = require('browserify-cipher') - -exports.Cipher = aes.Cipher -exports.createCipher = aes.createCipher -exports.Cipheriv = aes.Cipheriv -exports.createCipheriv = aes.createCipheriv -exports.Decipher = aes.Decipher -exports.createDecipher = aes.createDecipher -exports.Decipheriv = aes.Decipheriv -exports.createDecipheriv = aes.createDecipheriv -exports.getCiphers = aes.getCiphers -exports.listCiphers = aes.listCiphers - -var dh = require('diffie-hellman') - -exports.DiffieHellmanGroup = dh.DiffieHellmanGroup -exports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup -exports.getDiffieHellman = dh.getDiffieHellman -exports.createDiffieHellman = dh.createDiffieHellman -exports.DiffieHellman = dh.DiffieHellman - -var sign = require('browserify-sign') - -exports.createSign = sign.createSign -exports.Sign = sign.Sign -exports.createVerify = sign.createVerify -exports.Verify = sign.Verify - -exports.createECDH = require('create-ecdh') - -var publicEncrypt = require('public-encrypt') - -exports.publicEncrypt = publicEncrypt.publicEncrypt -exports.privateEncrypt = publicEncrypt.privateEncrypt -exports.publicDecrypt = publicEncrypt.publicDecrypt -exports.privateDecrypt = publicEncrypt.privateDecrypt - -// the least I can do is make error messages for the rest of the node.js/crypto api. -// ;[ -// 'createCredentials' -// ].forEach(function (name) { -// exports[name] = function () { -// throw new Error([ -// 'sorry, ' + name + ' is not implemented yet', -// 'we accept pull requests', -// 'https://github.com/crypto-browserify/crypto-browserify' -// ].join('\n')) -// } -// }) - -var rf = require('randomfill') - -exports.randomFill = rf.randomFill -exports.randomFillSync = rf.randomFillSync - -exports.createCredentials = function () { - throw new Error([ - 'sorry, createCredentials is not implemented yet', - 'we accept pull requests', - 'https://github.com/crypto-browserify/crypto-browserify' - ].join('\n')) -} - -exports.constants = { - 'DH_CHECK_P_NOT_SAFE_PRIME': 2, - 'DH_CHECK_P_NOT_PRIME': 1, - 'DH_UNABLE_TO_CHECK_GENERATOR': 4, - 'DH_NOT_SUITABLE_GENERATOR': 8, - 'NPN_ENABLED': 1, - 'ALPN_ENABLED': 1, - 'RSA_PKCS1_PADDING': 1, - 'RSA_SSLV23_PADDING': 2, - 'RSA_NO_PADDING': 3, - 'RSA_PKCS1_OAEP_PADDING': 4, - 'RSA_X931_PADDING': 5, - 'RSA_PKCS1_PSS_PADDING': 6, - 'POINT_CONVERSION_COMPRESSED': 2, - 'POINT_CONVERSION_UNCOMPRESSED': 4, - 'POINT_CONVERSION_HYBRID': 6 -} - -},{"browserify-cipher":167,"browserify-sign":174,"browserify-sign/algos":171,"create-ecdh":187,"create-hash":188,"create-hmac":190,"diffie-hellman":201,"pbkdf2":278,"public-encrypt":286,"randombytes":298,"randomfill":299}],193:[function(require,module,exports){ -// https://d3js.org/d3-array/ v1.2.4 Copyright 2018 Mike Bostock -(function (global, factory) { -typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : -typeof define === 'function' && define.amd ? define(['exports'], factory) : -(factory((global.d3 = global.d3 || {}))); -}(this, (function (exports) { 'use strict'; - -function ascending(a, b) { - return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; -} - -function bisector(compare) { - if (compare.length === 1) compare = ascendingComparator(compare); - return { - left: function(a, x, lo, hi) { - if (lo == null) lo = 0; - if (hi == null) hi = a.length; - while (lo < hi) { - var mid = lo + hi >>> 1; - if (compare(a[mid], x) < 0) lo = mid + 1; - else hi = mid; - } - return lo; - }, - right: function(a, x, lo, hi) { - if (lo == null) lo = 0; - if (hi == null) hi = a.length; - while (lo < hi) { - var mid = lo + hi >>> 1; - if (compare(a[mid], x) > 0) hi = mid; - else lo = mid + 1; - } - return lo; - } - }; -} - -function ascendingComparator(f) { - return function(d, x) { - return ascending(f(d), x); - }; -} - -var ascendingBisect = bisector(ascending); -var bisectRight = ascendingBisect.right; -var bisectLeft = ascendingBisect.left; - -function pairs(array, f) { - if (f == null) f = pair; - var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n); - while (i < n) pairs[i] = f(p, p = array[++i]); - return pairs; -} - -function pair(a, b) { - return [a, b]; -} - -function cross(values0, values1, reduce) { - var n0 = values0.length, - n1 = values1.length, - values = new Array(n0 * n1), - i0, - i1, - i, - value0; - - if (reduce == null) reduce = pair; - - for (i0 = i = 0; i0 < n0; ++i0) { - for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) { - values[i] = reduce(value0, values1[i1]); - } - } - - return values; -} - -function descending(a, b) { - return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; -} - -function number(x) { - return x === null ? NaN : +x; -} - -function variance(values, valueof) { - var n = values.length, - m = 0, - i = -1, - mean = 0, - value, - delta, - sum = 0; - - if (valueof == null) { - while (++i < n) { - if (!isNaN(value = number(values[i]))) { - delta = value - mean; - mean += delta / ++m; - sum += delta * (value - mean); - } - } - } - - else { - while (++i < n) { - if (!isNaN(value = number(valueof(values[i], i, values)))) { - delta = value - mean; - mean += delta / ++m; - sum += delta * (value - mean); - } - } - } - - if (m > 1) return sum / (m - 1); -} - -function deviation(array, f) { - var v = variance(array, f); - return v ? Math.sqrt(v) : v; -} - -function extent(values, valueof) { - var n = values.length, - i = -1, - value, - min, - max; - - if (valueof == null) { - while (++i < n) { // Find the first comparable value. - if ((value = values[i]) != null && value >= value) { - min = max = value; - while (++i < n) { // Compare the remaining values. - if ((value = values[i]) != null) { - if (min > value) min = value; - if (max < value) max = value; - } - } - } - } - } - - else { - while (++i < n) { // Find the first comparable value. - if ((value = valueof(values[i], i, values)) != null && value >= value) { - min = max = value; - while (++i < n) { // Compare the remaining values. - if ((value = valueof(values[i], i, values)) != null) { - if (min > value) min = value; - if (max < value) max = value; - } - } - } - } - } - - return [min, max]; -} - -var array = Array.prototype; - -var slice = array.slice; -var map = array.map; - -function constant(x) { - return function() { - return x; - }; -} - -function identity(x) { - return x; -} - -function range(start, stop, step) { - start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step; - - var i = -1, - n = Math.max(0, Math.ceil((stop - start) / step)) | 0, - range = new Array(n); - - while (++i < n) { - range[i] = start + i * step; - } - - return range; -} - -var e10 = Math.sqrt(50), - e5 = Math.sqrt(10), - e2 = Math.sqrt(2); - -function ticks(start, stop, count) { - var reverse, - i = -1, - n, - ticks, - step; - - stop = +stop, start = +start, count = +count; - if (start === stop && count > 0) return [start]; - if (reverse = stop < start) n = start, start = stop, stop = n; - if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return []; - - if (step > 0) { - start = Math.ceil(start / step); - stop = Math.floor(stop / step); - ticks = new Array(n = Math.ceil(stop - start + 1)); - while (++i < n) ticks[i] = (start + i) * step; - } else { - start = Math.floor(start * step); - stop = Math.ceil(stop * step); - ticks = new Array(n = Math.ceil(start - stop + 1)); - while (++i < n) ticks[i] = (start - i) / step; - } - - if (reverse) ticks.reverse(); - - return ticks; -} - -function tickIncrement(start, stop, count) { - var step = (stop - start) / Math.max(0, count), - power = Math.floor(Math.log(step) / Math.LN10), - error = step / Math.pow(10, power); - return power >= 0 - ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power) - : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1); -} - -function tickStep(start, stop, count) { - var step0 = Math.abs(stop - start) / Math.max(0, count), - step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)), - error = step0 / step1; - if (error >= e10) step1 *= 10; - else if (error >= e5) step1 *= 5; - else if (error >= e2) step1 *= 2; - return stop < start ? -step1 : step1; -} - -function sturges(values) { - return Math.ceil(Math.log(values.length) / Math.LN2) + 1; -} - -function histogram() { - var value = identity, - domain = extent, - threshold = sturges; - - function histogram(data) { - var i, - n = data.length, - x, - values = new Array(n); - - for (i = 0; i < n; ++i) { - values[i] = value(data[i], i, data); - } - - var xz = domain(values), - x0 = xz[0], - x1 = xz[1], - tz = threshold(values, x0, x1); - - // Convert number of thresholds into uniform thresholds. - if (!Array.isArray(tz)) { - tz = tickStep(x0, x1, tz); - tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive - } - - // Remove any thresholds outside the domain. - var m = tz.length; - while (tz[0] <= x0) tz.shift(), --m; - while (tz[m - 1] > x1) tz.pop(), --m; - - var bins = new Array(m + 1), - bin; - - // Initialize bins. - for (i = 0; i <= m; ++i) { - bin = bins[i] = []; - bin.x0 = i > 0 ? tz[i - 1] : x0; - bin.x1 = i < m ? tz[i] : x1; - } - - // Assign data to bins by value, ignoring any outside the domain. - for (i = 0; i < n; ++i) { - x = values[i]; - if (x0 <= x && x <= x1) { - bins[bisectRight(tz, x, 0, m)].push(data[i]); - } - } - - return bins; - } - - histogram.value = function(_) { - return arguments.length ? (value = typeof _ === "function" ? _ : constant(_), histogram) : value; - }; - - histogram.domain = function(_) { - return arguments.length ? (domain = typeof _ === "function" ? _ : constant([_[0], _[1]]), histogram) : domain; - }; - - histogram.thresholds = function(_) { - return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold; - }; - - return histogram; -} - -function quantile(values, p, valueof) { - if (valueof == null) valueof = number; - if (!(n = values.length)) return; - if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values); - if (p >= 1) return +valueof(values[n - 1], n - 1, values); - var n, - i = (n - 1) * p, - i0 = Math.floor(i), - value0 = +valueof(values[i0], i0, values), - value1 = +valueof(values[i0 + 1], i0 + 1, values); - return value0 + (value1 - value0) * (i - i0); -} - -function freedmanDiaconis(values, min, max) { - values = map.call(values, number).sort(ascending); - return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3))); -} - -function scott(values, min, max) { - return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3))); -} - -function max(values, valueof) { - var n = values.length, - i = -1, - value, - max; - - if (valueof == null) { - while (++i < n) { // Find the first comparable value. - if ((value = values[i]) != null && value >= value) { - max = value; - while (++i < n) { // Compare the remaining values. - if ((value = values[i]) != null && value > max) { - max = value; - } - } - } - } - } - - else { - while (++i < n) { // Find the first comparable value. - if ((value = valueof(values[i], i, values)) != null && value >= value) { - max = value; - while (++i < n) { // Compare the remaining values. - if ((value = valueof(values[i], i, values)) != null && value > max) { - max = value; - } - } - } - } - } - - return max; -} - -function mean(values, valueof) { - var n = values.length, - m = n, - i = -1, - value, - sum = 0; - - if (valueof == null) { - while (++i < n) { - if (!isNaN(value = number(values[i]))) sum += value; - else --m; - } - } - - else { - while (++i < n) { - if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value; - else --m; - } - } - - if (m) return sum / m; -} - -function median(values, valueof) { - var n = values.length, - i = -1, - value, - numbers = []; - - if (valueof == null) { - while (++i < n) { - if (!isNaN(value = number(values[i]))) { - numbers.push(value); - } - } - } - - else { - while (++i < n) { - if (!isNaN(value = number(valueof(values[i], i, values)))) { - numbers.push(value); - } - } - } - - return quantile(numbers.sort(ascending), 0.5); -} - -function merge(arrays) { - var n = arrays.length, - m, - i = -1, - j = 0, - merged, - array; - - while (++i < n) j += arrays[i].length; - merged = new Array(j); - - while (--n >= 0) { - array = arrays[n]; - m = array.length; - while (--m >= 0) { - merged[--j] = array[m]; - } - } - - return merged; -} - -function min(values, valueof) { - var n = values.length, - i = -1, - value, - min; - - if (valueof == null) { - while (++i < n) { // Find the first comparable value. - if ((value = values[i]) != null && value >= value) { - min = value; - while (++i < n) { // Compare the remaining values. - if ((value = values[i]) != null && min > value) { - min = value; - } - } - } - } - } - - else { - while (++i < n) { // Find the first comparable value. - if ((value = valueof(values[i], i, values)) != null && value >= value) { - min = value; - while (++i < n) { // Compare the remaining values. - if ((value = valueof(values[i], i, values)) != null && min > value) { - min = value; - } - } - } - } - } - - return min; -} - -function permute(array, indexes) { - var i = indexes.length, permutes = new Array(i); - while (i--) permutes[i] = array[indexes[i]]; - return permutes; -} - -function scan(values, compare) { - if (!(n = values.length)) return; - var n, - i = 0, - j = 0, - xi, - xj = values[j]; - - if (compare == null) compare = ascending; - - while (++i < n) { - if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) { - xj = xi, j = i; - } - } - - if (compare(xj, xj) === 0) return j; -} - -function shuffle(array, i0, i1) { - var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0), - t, - i; - - while (m) { - i = Math.random() * m-- | 0; - t = array[m + i0]; - array[m + i0] = array[i + i0]; - array[i + i0] = t; - } - - return array; -} - -function sum(values, valueof) { - var n = values.length, - i = -1, - value, - sum = 0; - - if (valueof == null) { - while (++i < n) { - if (value = +values[i]) sum += value; // Note: zero and null are equivalent. - } - } - - else { - while (++i < n) { - if (value = +valueof(values[i], i, values)) sum += value; - } - } - - return sum; -} - -function transpose(matrix) { - if (!(n = matrix.length)) return []; - for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) { - for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) { - row[j] = matrix[j][i]; - } - } - return transpose; -} - -function length(d) { - return d.length; -} - -function zip() { - return transpose(arguments); -} - -exports.bisect = bisectRight; -exports.bisectRight = bisectRight; -exports.bisectLeft = bisectLeft; -exports.ascending = ascending; -exports.bisector = bisector; -exports.cross = cross; -exports.descending = descending; -exports.deviation = deviation; -exports.extent = extent; -exports.histogram = histogram; -exports.thresholdFreedmanDiaconis = freedmanDiaconis; -exports.thresholdScott = scott; -exports.thresholdSturges = sturges; -exports.max = max; -exports.mean = mean; -exports.median = median; -exports.merge = merge; -exports.min = min; -exports.pairs = pairs; -exports.permute = permute; -exports.quantile = quantile; -exports.range = range; -exports.scan = scan; -exports.shuffle = shuffle; -exports.sum = sum; -exports.ticks = ticks; -exports.tickIncrement = tickIncrement; -exports.tickStep = tickStep; -exports.transpose = transpose; -exports.variance = variance; -exports.zip = zip; - -Object.defineProperty(exports, '__esModule', { value: true }); - -}))); - -},{}],194:[function(require,module,exports){ -// https://d3js.org/d3-geo/ v1.11.6 Copyright 2019 Mike Bostock -(function (global, factory) { -typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-array')) : -typeof define === 'function' && define.amd ? define(['exports', 'd3-array'], factory) : -(factory((global.d3 = global.d3 || {}),global.d3)); -}(this, (function (exports,d3Array) { 'use strict'; - -// Adds floating point numbers with twice the normal precision. -// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and -// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3) -// 305–363 (1997). -// Code adapted from GeographicLib by Charles F. F. Karney, -// http://geographiclib.sourceforge.net/ - -function adder() { - return new Adder; -} - -function Adder() { - this.reset(); -} - -Adder.prototype = { - constructor: Adder, - reset: function() { - this.s = // rounded value - this.t = 0; // exact error - }, - add: function(y) { - add(temp, y, this.t); - add(this, temp.s, this.s); - if (this.s) this.t += temp.t; - else this.s = temp.t; - }, - valueOf: function() { - return this.s; - } -}; - -var temp = new Adder; - -function add(adder, a, b) { - var x = adder.s = a + b, - bv = x - a, - av = x - bv; - adder.t = (a - av) + (b - bv); -} - -var epsilon = 1e-6; -var epsilon2 = 1e-12; -var pi = Math.PI; -var halfPi = pi / 2; -var quarterPi = pi / 4; -var tau = pi * 2; - -var degrees = 180 / pi; -var radians = pi / 180; - -var abs = Math.abs; -var atan = Math.atan; -var atan2 = Math.atan2; -var cos = Math.cos; -var ceil = Math.ceil; -var exp = Math.exp; -var log = Math.log; -var pow = Math.pow; -var sin = Math.sin; -var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; }; -var sqrt = Math.sqrt; -var tan = Math.tan; - -function acos(x) { - return x > 1 ? 0 : x < -1 ? pi : Math.acos(x); -} - -function asin(x) { - return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x); -} - -function haversin(x) { - return (x = sin(x / 2)) * x; -} - -function noop() {} - -function streamGeometry(geometry, stream) { - if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) { - streamGeometryType[geometry.type](geometry, stream); - } -} - -var streamObjectType = { - Feature: function(object, stream) { - streamGeometry(object.geometry, stream); - }, - FeatureCollection: function(object, stream) { - var features = object.features, i = -1, n = features.length; - while (++i < n) streamGeometry(features[i].geometry, stream); - } -}; - -var streamGeometryType = { - Sphere: function(object, stream) { - stream.sphere(); - }, - Point: function(object, stream) { - object = object.coordinates; - stream.point(object[0], object[1], object[2]); - }, - MultiPoint: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]); - }, - LineString: function(object, stream) { - streamLine(object.coordinates, stream, 0); - }, - MultiLineString: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) streamLine(coordinates[i], stream, 0); - }, - Polygon: function(object, stream) { - streamPolygon(object.coordinates, stream); - }, - MultiPolygon: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) streamPolygon(coordinates[i], stream); - }, - GeometryCollection: function(object, stream) { - var geometries = object.geometries, i = -1, n = geometries.length; - while (++i < n) streamGeometry(geometries[i], stream); - } -}; - -function streamLine(coordinates, stream, closed) { - var i = -1, n = coordinates.length - closed, coordinate; - stream.lineStart(); - while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]); - stream.lineEnd(); -} - -function streamPolygon(coordinates, stream) { - var i = -1, n = coordinates.length; - stream.polygonStart(); - while (++i < n) streamLine(coordinates[i], stream, 1); - stream.polygonEnd(); -} - -function geoStream(object, stream) { - if (object && streamObjectType.hasOwnProperty(object.type)) { - streamObjectType[object.type](object, stream); - } else { - streamGeometry(object, stream); - } -} - -var areaRingSum = adder(); - -var areaSum = adder(), - lambda00, - phi00, - lambda0, - cosPhi0, - sinPhi0; - -var areaStream = { - point: noop, - lineStart: noop, - lineEnd: noop, - polygonStart: function() { - areaRingSum.reset(); - areaStream.lineStart = areaRingStart; - areaStream.lineEnd = areaRingEnd; - }, - polygonEnd: function() { - var areaRing = +areaRingSum; - areaSum.add(areaRing < 0 ? tau + areaRing : areaRing); - this.lineStart = this.lineEnd = this.point = noop; - }, - sphere: function() { - areaSum.add(tau); - } -}; - -function areaRingStart() { - areaStream.point = areaPointFirst; -} - -function areaRingEnd() { - areaPoint(lambda00, phi00); -} - -function areaPointFirst(lambda, phi) { - areaStream.point = areaPoint; - lambda00 = lambda, phi00 = phi; - lambda *= radians, phi *= radians; - lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi); -} - -function areaPoint(lambda, phi) { - lambda *= radians, phi *= radians; - phi = phi / 2 + quarterPi; // half the angular distance from south pole - - // Spherical excess E for a spherical triangle with vertices: south pole, - // previous point, current point. Uses a formula derived from Cagnoli’s - // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2). - var dLambda = lambda - lambda0, - sdLambda = dLambda >= 0 ? 1 : -1, - adLambda = sdLambda * dLambda, - cosPhi = cos(phi), - sinPhi = sin(phi), - k = sinPhi0 * sinPhi, - u = cosPhi0 * cosPhi + k * cos(adLambda), - v = k * sdLambda * sin(adLambda); - areaRingSum.add(atan2(v, u)); - - // Advance the previous points. - lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi; -} - -function area(object) { - areaSum.reset(); - geoStream(object, areaStream); - return areaSum * 2; -} - -function spherical(cartesian) { - return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])]; -} - -function cartesian(spherical) { - var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi); - return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)]; -} - -function cartesianDot(a, b) { - return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; -} - -function cartesianCross(a, b) { - return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]]; -} - -// TODO return a -function cartesianAddInPlace(a, b) { - a[0] += b[0], a[1] += b[1], a[2] += b[2]; -} - -function cartesianScale(vector, k) { - return [vector[0] * k, vector[1] * k, vector[2] * k]; -} - -// TODO return d -function cartesianNormalizeInPlace(d) { - var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]); - d[0] /= l, d[1] /= l, d[2] /= l; -} - -var lambda0$1, phi0, lambda1, phi1, // bounds - lambda2, // previous lambda-coordinate - lambda00$1, phi00$1, // first point - p0, // previous 3D point - deltaSum = adder(), - ranges, - range; - -var boundsStream = { - point: boundsPoint, - lineStart: boundsLineStart, - lineEnd: boundsLineEnd, - polygonStart: function() { - boundsStream.point = boundsRingPoint; - boundsStream.lineStart = boundsRingStart; - boundsStream.lineEnd = boundsRingEnd; - deltaSum.reset(); - areaStream.polygonStart(); - }, - polygonEnd: function() { - areaStream.polygonEnd(); - boundsStream.point = boundsPoint; - boundsStream.lineStart = boundsLineStart; - boundsStream.lineEnd = boundsLineEnd; - if (areaRingSum < 0) lambda0$1 = -(lambda1 = 180), phi0 = -(phi1 = 90); - else if (deltaSum > epsilon) phi1 = 90; - else if (deltaSum < -epsilon) phi0 = -90; - range[0] = lambda0$1, range[1] = lambda1; - }, - sphere: function() { - lambda0$1 = -(lambda1 = 180), phi0 = -(phi1 = 90); - } -}; - -function boundsPoint(lambda, phi) { - ranges.push(range = [lambda0$1 = lambda, lambda1 = lambda]); - if (phi < phi0) phi0 = phi; - if (phi > phi1) phi1 = phi; -} - -function linePoint(lambda, phi) { - var p = cartesian([lambda * radians, phi * radians]); - if (p0) { - var normal = cartesianCross(p0, p), - equatorial = [normal[1], -normal[0], 0], - inflection = cartesianCross(equatorial, normal); - cartesianNormalizeInPlace(inflection); - inflection = spherical(inflection); - var delta = lambda - lambda2, - sign$$1 = delta > 0 ? 1 : -1, - lambdai = inflection[0] * degrees * sign$$1, - phii, - antimeridian = abs(delta) > 180; - if (antimeridian ^ (sign$$1 * lambda2 < lambdai && lambdai < sign$$1 * lambda)) { - phii = inflection[1] * degrees; - if (phii > phi1) phi1 = phii; - } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign$$1 * lambda2 < lambdai && lambdai < sign$$1 * lambda)) { - phii = -inflection[1] * degrees; - if (phii < phi0) phi0 = phii; - } else { - if (phi < phi0) phi0 = phi; - if (phi > phi1) phi1 = phi; - } - if (antimeridian) { - if (lambda < lambda2) { - if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda; - } else { - if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda; - } - } else { - if (lambda1 >= lambda0$1) { - if (lambda < lambda0$1) lambda0$1 = lambda; - if (lambda > lambda1) lambda1 = lambda; - } else { - if (lambda > lambda2) { - if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda; - } else { - if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda; - } - } - } - } else { - ranges.push(range = [lambda0$1 = lambda, lambda1 = lambda]); - } - if (phi < phi0) phi0 = phi; - if (phi > phi1) phi1 = phi; - p0 = p, lambda2 = lambda; -} - -function boundsLineStart() { - boundsStream.point = linePoint; -} - -function boundsLineEnd() { - range[0] = lambda0$1, range[1] = lambda1; - boundsStream.point = boundsPoint; - p0 = null; -} - -function boundsRingPoint(lambda, phi) { - if (p0) { - var delta = lambda - lambda2; - deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta); - } else { - lambda00$1 = lambda, phi00$1 = phi; - } - areaStream.point(lambda, phi); - linePoint(lambda, phi); -} - -function boundsRingStart() { - areaStream.lineStart(); -} - -function boundsRingEnd() { - boundsRingPoint(lambda00$1, phi00$1); - areaStream.lineEnd(); - if (abs(deltaSum) > epsilon) lambda0$1 = -(lambda1 = 180); - range[0] = lambda0$1, range[1] = lambda1; - p0 = null; -} - -// Finds the left-right distance between two longitudes. -// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want -// the distance between ±180° to be 360°. -function angle(lambda0, lambda1) { - return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1; -} - -function rangeCompare(a, b) { - return a[0] - b[0]; -} - -function rangeContains(range, x) { - return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x; -} - -function bounds(feature) { - var i, n, a, b, merged, deltaMax, delta; - - phi1 = lambda1 = -(lambda0$1 = phi0 = Infinity); - ranges = []; - geoStream(feature, boundsStream); - - // First, sort ranges by their minimum longitudes. - if (n = ranges.length) { - ranges.sort(rangeCompare); - - // Then, merge any ranges that overlap. - for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) { - b = ranges[i]; - if (rangeContains(a, b[0]) || rangeContains(a, b[1])) { - if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1]; - if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0]; - } else { - merged.push(a = b); - } - } - - // Finally, find the largest gap between the merged ranges. - // The final bounding box will be the inverse of this gap. - for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) { - b = merged[i]; - if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0$1 = b[0], lambda1 = a[1]; - } - } - - ranges = range = null; - - return lambda0$1 === Infinity || phi0 === Infinity - ? [[NaN, NaN], [NaN, NaN]] - : [[lambda0$1, phi0], [lambda1, phi1]]; -} - -var W0, W1, - X0, Y0, Z0, - X1, Y1, Z1, - X2, Y2, Z2, - lambda00$2, phi00$2, // first point - x0, y0, z0; // previous point - -var centroidStream = { - sphere: noop, - point: centroidPoint, - lineStart: centroidLineStart, - lineEnd: centroidLineEnd, - polygonStart: function() { - centroidStream.lineStart = centroidRingStart; - centroidStream.lineEnd = centroidRingEnd; - }, - polygonEnd: function() { - centroidStream.lineStart = centroidLineStart; - centroidStream.lineEnd = centroidLineEnd; - } -}; - -// Arithmetic mean of Cartesian vectors. -function centroidPoint(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos(phi); - centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)); -} - -function centroidPointCartesian(x, y, z) { - ++W0; - X0 += (x - X0) / W0; - Y0 += (y - Y0) / W0; - Z0 += (z - Z0) / W0; -} - -function centroidLineStart() { - centroidStream.point = centroidLinePointFirst; -} - -function centroidLinePointFirst(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos(phi); - x0 = cosPhi * cos(lambda); - y0 = cosPhi * sin(lambda); - z0 = sin(phi); - centroidStream.point = centroidLinePoint; - centroidPointCartesian(x0, y0, z0); -} - -function centroidLinePoint(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos(phi), - x = cosPhi * cos(lambda), - y = cosPhi * sin(lambda), - z = sin(phi), - w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z); - W1 += w; - X1 += w * (x0 + (x0 = x)); - Y1 += w * (y0 + (y0 = y)); - Z1 += w * (z0 + (z0 = z)); - centroidPointCartesian(x0, y0, z0); -} - -function centroidLineEnd() { - centroidStream.point = centroidPoint; -} - -// See J. E. Brock, The Inertia Tensor for a Spherical Triangle, -// J. Applied Mechanics 42, 239 (1975). -function centroidRingStart() { - centroidStream.point = centroidRingPointFirst; -} - -function centroidRingEnd() { - centroidRingPoint(lambda00$2, phi00$2); - centroidStream.point = centroidPoint; -} - -function centroidRingPointFirst(lambda, phi) { - lambda00$2 = lambda, phi00$2 = phi; - lambda *= radians, phi *= radians; - centroidStream.point = centroidRingPoint; - var cosPhi = cos(phi); - x0 = cosPhi * cos(lambda); - y0 = cosPhi * sin(lambda); - z0 = sin(phi); - centroidPointCartesian(x0, y0, z0); -} - -function centroidRingPoint(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos(phi), - x = cosPhi * cos(lambda), - y = cosPhi * sin(lambda), - z = sin(phi), - cx = y0 * z - z0 * y, - cy = z0 * x - x0 * z, - cz = x0 * y - y0 * x, - m = sqrt(cx * cx + cy * cy + cz * cz), - w = asin(m), // line weight = angle - v = m && -w / m; // area weight multiplier - X2 += v * cx; - Y2 += v * cy; - Z2 += v * cz; - W1 += w; - X1 += w * (x0 + (x0 = x)); - Y1 += w * (y0 + (y0 = y)); - Z1 += w * (z0 + (z0 = z)); - centroidPointCartesian(x0, y0, z0); -} - -function centroid(object) { - W0 = W1 = - X0 = Y0 = Z0 = - X1 = Y1 = Z1 = - X2 = Y2 = Z2 = 0; - geoStream(object, centroidStream); - - var x = X2, - y = Y2, - z = Z2, - m = x * x + y * y + z * z; - - // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid. - if (m < epsilon2) { - x = X1, y = Y1, z = Z1; - // If the feature has zero length, fall back to arithmetic mean of point vectors. - if (W1 < epsilon) x = X0, y = Y0, z = Z0; - m = x * x + y * y + z * z; - // If the feature still has an undefined ccentroid, then return. - if (m < epsilon2) return [NaN, NaN]; - } - - return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees]; -} - -function constant(x) { - return function() { - return x; - }; -} - -function compose(a, b) { - - function compose(x, y) { - return x = a(x, y), b(x[0], x[1]); - } - - if (a.invert && b.invert) compose.invert = function(x, y) { - return x = b.invert(x, y), x && a.invert(x[0], x[1]); - }; - - return compose; -} - -function rotationIdentity(lambda, phi) { - return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi]; -} - -rotationIdentity.invert = rotationIdentity; - -function rotateRadians(deltaLambda, deltaPhi, deltaGamma) { - return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma)) - : rotationLambda(deltaLambda)) - : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma) - : rotationIdentity); -} - -function forwardRotationLambda(deltaLambda) { - return function(lambda, phi) { - return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi]; - }; -} - -function rotationLambda(deltaLambda) { - var rotation = forwardRotationLambda(deltaLambda); - rotation.invert = forwardRotationLambda(-deltaLambda); - return rotation; -} - -function rotationPhiGamma(deltaPhi, deltaGamma) { - var cosDeltaPhi = cos(deltaPhi), - sinDeltaPhi = sin(deltaPhi), - cosDeltaGamma = cos(deltaGamma), - sinDeltaGamma = sin(deltaGamma); - - function rotation(lambda, phi) { - var cosPhi = cos(phi), - x = cos(lambda) * cosPhi, - y = sin(lambda) * cosPhi, - z = sin(phi), - k = z * cosDeltaPhi + x * sinDeltaPhi; - return [ - atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi), - asin(k * cosDeltaGamma + y * sinDeltaGamma) - ]; - } - - rotation.invert = function(lambda, phi) { - var cosPhi = cos(phi), - x = cos(lambda) * cosPhi, - y = sin(lambda) * cosPhi, - z = sin(phi), - k = z * cosDeltaGamma - y * sinDeltaGamma; - return [ - atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi), - asin(k * cosDeltaPhi - x * sinDeltaPhi) - ]; - }; - - return rotation; -} - -function rotation(rotate) { - rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0); - - function forward(coordinates) { - coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians); - return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates; - } - - forward.invert = function(coordinates) { - coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians); - return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates; - }; - - return forward; -} - -// Generates a circle centered at [0°, 0°], with a given radius and precision. -function circleStream(stream, radius, delta, direction, t0, t1) { - if (!delta) return; - var cosRadius = cos(radius), - sinRadius = sin(radius), - step = direction * delta; - if (t0 == null) { - t0 = radius + direction * tau; - t1 = radius - step / 2; - } else { - t0 = circleRadius(cosRadius, t0); - t1 = circleRadius(cosRadius, t1); - if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau; - } - for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) { - point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]); - stream.point(point[0], point[1]); - } -} - -// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0]. -function circleRadius(cosRadius, point) { - point = cartesian(point), point[0] -= cosRadius; - cartesianNormalizeInPlace(point); - var radius = acos(-point[1]); - return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau; -} - -function circle() { - var center = constant([0, 0]), - radius = constant(90), - precision = constant(6), - ring, - rotate, - stream = {point: point}; - - function point(x, y) { - ring.push(x = rotate(x, y)); - x[0] *= degrees, x[1] *= degrees; - } - - function circle() { - var c = center.apply(this, arguments), - r = radius.apply(this, arguments) * radians, - p = precision.apply(this, arguments) * radians; - ring = []; - rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert; - circleStream(stream, r, p, 1); - c = {type: "Polygon", coordinates: [ring]}; - ring = rotate = null; - return c; - } - - circle.center = function(_) { - return arguments.length ? (center = typeof _ === "function" ? _ : constant([+_[0], +_[1]]), circle) : center; - }; - - circle.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant(+_), circle) : radius; - }; - - circle.precision = function(_) { - return arguments.length ? (precision = typeof _ === "function" ? _ : constant(+_), circle) : precision; - }; - - return circle; -} - -function clipBuffer() { - var lines = [], - line; - return { - point: function(x, y) { - line.push([x, y]); - }, - lineStart: function() { - lines.push(line = []); - }, - lineEnd: noop, - rejoin: function() { - if (lines.length > 1) lines.push(lines.pop().concat(lines.shift())); - }, - result: function() { - var result = lines; - lines = []; - line = null; - return result; - } - }; -} - -function pointEqual(a, b) { - return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon; -} - -function Intersection(point, points, other, entry) { - this.x = point; - this.z = points; - this.o = other; // another intersection - this.e = entry; // is an entry? - this.v = false; // visited - this.n = this.p = null; // next & previous -} - -// A generalized polygon clipping algorithm: given a polygon that has been cut -// into its visible line segments, and rejoins the segments by interpolating -// along the clip edge. -function clipRejoin(segments, compareIntersection, startInside, interpolate, stream) { - var subject = [], - clip = [], - i, - n; - - segments.forEach(function(segment) { - if ((n = segment.length - 1) <= 0) return; - var n, p0 = segment[0], p1 = segment[n], x; - - // If the first and last points of a segment are coincident, then treat as a - // closed ring. TODO if all rings are closed, then the winding order of the - // exterior ring should be checked. - if (pointEqual(p0, p1)) { - stream.lineStart(); - for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]); - stream.lineEnd(); - return; - } - - subject.push(x = new Intersection(p0, segment, null, true)); - clip.push(x.o = new Intersection(p0, null, x, false)); - subject.push(x = new Intersection(p1, segment, null, false)); - clip.push(x.o = new Intersection(p1, null, x, true)); - }); - - if (!subject.length) return; - - clip.sort(compareIntersection); - link(subject); - link(clip); - - for (i = 0, n = clip.length; i < n; ++i) { - clip[i].e = startInside = !startInside; - } - - var start = subject[0], - points, - point; - - while (1) { - // Find first unvisited intersection. - var current = start, - isSubject = true; - while (current.v) if ((current = current.n) === start) return; - points = current.z; - stream.lineStart(); - do { - current.v = current.o.v = true; - if (current.e) { - if (isSubject) { - for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]); - } else { - interpolate(current.x, current.n.x, 1, stream); - } - current = current.n; - } else { - if (isSubject) { - points = current.p.z; - for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]); - } else { - interpolate(current.x, current.p.x, -1, stream); - } - current = current.p; - } - current = current.o; - points = current.z; - isSubject = !isSubject; - } while (!current.v); - stream.lineEnd(); - } -} - -function link(array) { - if (!(n = array.length)) return; - var n, - i = 0, - a = array[0], - b; - while (++i < n) { - a.n = b = array[i]; - b.p = a; - a = b; - } - a.n = b = array[0]; - b.p = a; -} - -var sum = adder(); - -function longitude(point) { - if (abs(point[0]) <= pi) - return point[0]; - else - return sign(point[0]) * ((abs(point[0]) + pi) % tau - pi); -} - -function polygonContains(polygon, point) { - var lambda = longitude(point), - phi = point[1], - sinPhi = sin(phi), - normal = [sin(lambda), -cos(lambda), 0], - angle = 0, - winding = 0; - - sum.reset(); - - if (sinPhi === 1) phi = halfPi + epsilon; - else if (sinPhi === -1) phi = -halfPi - epsilon; - - for (var i = 0, n = polygon.length; i < n; ++i) { - if (!(m = (ring = polygon[i]).length)) continue; - var ring, - m, - point0 = ring[m - 1], - lambda0 = longitude(point0), - phi0 = point0[1] / 2 + quarterPi, - sinPhi0 = sin(phi0), - cosPhi0 = cos(phi0); - - for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) { - var point1 = ring[j], - lambda1 = longitude(point1), - phi1 = point1[1] / 2 + quarterPi, - sinPhi1 = sin(phi1), - cosPhi1 = cos(phi1), - delta = lambda1 - lambda0, - sign$$1 = delta >= 0 ? 1 : -1, - absDelta = sign$$1 * delta, - antimeridian = absDelta > pi, - k = sinPhi0 * sinPhi1; - - sum.add(atan2(k * sign$$1 * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta))); - angle += antimeridian ? delta + sign$$1 * tau : delta; - - // Are the longitudes either side of the point’s meridian (lambda), - // and are the latitudes smaller than the parallel (phi)? - if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) { - var arc = cartesianCross(cartesian(point0), cartesian(point1)); - cartesianNormalizeInPlace(arc); - var intersection = cartesianCross(normal, arc); - cartesianNormalizeInPlace(intersection); - var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]); - if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) { - winding += antimeridian ^ delta >= 0 ? 1 : -1; - } - } - } - } - - // First, determine whether the South pole is inside or outside: - // - // It is inside if: - // * the polygon winds around it in a clockwise direction. - // * the polygon does not (cumulatively) wind around it, but has a negative - // (counter-clockwise) area. - // - // Second, count the (signed) number of times a segment crosses a lambda - // from the point to the South pole. If it is zero, then the point is the - // same side as the South pole. - - return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1); -} - -function clip(pointVisible, clipLine, interpolate, start) { - return function(sink) { - var line = clipLine(sink), - ringBuffer = clipBuffer(), - ringSink = clipLine(ringBuffer), - polygonStarted = false, - polygon, - segments, - ring; - - var clip = { - point: point, - lineStart: lineStart, - lineEnd: lineEnd, - polygonStart: function() { - clip.point = pointRing; - clip.lineStart = ringStart; - clip.lineEnd = ringEnd; - segments = []; - polygon = []; - }, - polygonEnd: function() { - clip.point = point; - clip.lineStart = lineStart; - clip.lineEnd = lineEnd; - segments = d3Array.merge(segments); - var startInside = polygonContains(polygon, start); - if (segments.length) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - clipRejoin(segments, compareIntersection, startInside, interpolate, sink); - } else if (startInside) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - sink.lineStart(); - interpolate(null, null, 1, sink); - sink.lineEnd(); - } - if (polygonStarted) sink.polygonEnd(), polygonStarted = false; - segments = polygon = null; - }, - sphere: function() { - sink.polygonStart(); - sink.lineStart(); - interpolate(null, null, 1, sink); - sink.lineEnd(); - sink.polygonEnd(); - } - }; - - function point(lambda, phi) { - if (pointVisible(lambda, phi)) sink.point(lambda, phi); - } - - function pointLine(lambda, phi) { - line.point(lambda, phi); - } - - function lineStart() { - clip.point = pointLine; - line.lineStart(); - } - - function lineEnd() { - clip.point = point; - line.lineEnd(); - } - - function pointRing(lambda, phi) { - ring.push([lambda, phi]); - ringSink.point(lambda, phi); - } - - function ringStart() { - ringSink.lineStart(); - ring = []; - } - - function ringEnd() { - pointRing(ring[0][0], ring[0][1]); - ringSink.lineEnd(); - - var clean = ringSink.clean(), - ringSegments = ringBuffer.result(), - i, n = ringSegments.length, m, - segment, - point; - - ring.pop(); - polygon.push(ring); - ring = null; - - if (!n) return; - - // No intersections. - if (clean & 1) { - segment = ringSegments[0]; - if ((m = segment.length - 1) > 0) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - sink.lineStart(); - for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]); - sink.lineEnd(); - } - return; - } - - // Rejoin connected segments. - // TODO reuse ringBuffer.rejoin()? - if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift())); - - segments.push(ringSegments.filter(validSegment)); - } - - return clip; - }; -} - -function validSegment(segment) { - return segment.length > 1; -} - -// Intersections are sorted along the clip edge. For both antimeridian cutting -// and circle clipping, the same comparison is used. -function compareIntersection(a, b) { - return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1]) - - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]); -} - -var clipAntimeridian = clip( - function() { return true; }, - clipAntimeridianLine, - clipAntimeridianInterpolate, - [-pi, -halfPi] -); - -// Takes a line and cuts into visible segments. Return values: 0 - there were -// intersections or the line was empty; 1 - no intersections; 2 - there were -// intersections, and the first and last segments should be rejoined. -function clipAntimeridianLine(stream) { - var lambda0 = NaN, - phi0 = NaN, - sign0 = NaN, - clean; // no intersections - - return { - lineStart: function() { - stream.lineStart(); - clean = 1; - }, - point: function(lambda1, phi1) { - var sign1 = lambda1 > 0 ? pi : -pi, - delta = abs(lambda1 - lambda0); - if (abs(delta - pi) < epsilon) { // line crosses a pole - stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi); - stream.point(sign0, phi0); - stream.lineEnd(); - stream.lineStart(); - stream.point(sign1, phi0); - stream.point(lambda1, phi0); - clean = 0; - } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian - if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies - if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon; - phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1); - stream.point(sign0, phi0); - stream.lineEnd(); - stream.lineStart(); - stream.point(sign1, phi0); - clean = 0; - } - stream.point(lambda0 = lambda1, phi0 = phi1); - sign0 = sign1; - }, - lineEnd: function() { - stream.lineEnd(); - lambda0 = phi0 = NaN; - }, - clean: function() { - return 2 - clean; // if intersections, rejoin first and last segments - } - }; -} - -function clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) { - var cosPhi0, - cosPhi1, - sinLambda0Lambda1 = sin(lambda0 - lambda1); - return abs(sinLambda0Lambda1) > epsilon - ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1) - - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0)) - / (cosPhi0 * cosPhi1 * sinLambda0Lambda1)) - : (phi0 + phi1) / 2; -} - -function clipAntimeridianInterpolate(from, to, direction, stream) { - var phi; - if (from == null) { - phi = direction * halfPi; - stream.point(-pi, phi); - stream.point(0, phi); - stream.point(pi, phi); - stream.point(pi, 0); - stream.point(pi, -phi); - stream.point(0, -phi); - stream.point(-pi, -phi); - stream.point(-pi, 0); - stream.point(-pi, phi); - } else if (abs(from[0] - to[0]) > epsilon) { - var lambda = from[0] < to[0] ? pi : -pi; - phi = direction * lambda / 2; - stream.point(-lambda, phi); - stream.point(0, phi); - stream.point(lambda, phi); - } else { - stream.point(to[0], to[1]); - } -} - -function clipCircle(radius) { - var cr = cos(radius), - delta = 6 * radians, - smallRadius = cr > 0, - notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case - - function interpolate(from, to, direction, stream) { - circleStream(stream, radius, delta, direction, from, to); - } - - function visible(lambda, phi) { - return cos(lambda) * cos(phi) > cr; - } - - // Takes a line and cuts into visible segments. Return values used for polygon - // clipping: 0 - there were intersections or the line was empty; 1 - no - // intersections 2 - there were intersections, and the first and last segments - // should be rejoined. - function clipLine(stream) { - var point0, // previous point - c0, // code for previous point - v0, // visibility of previous point - v00, // visibility of first point - clean; // no intersections - return { - lineStart: function() { - v00 = v0 = false; - clean = 1; - }, - point: function(lambda, phi) { - var point1 = [lambda, phi], - point2, - v = visible(lambda, phi), - c = smallRadius - ? v ? 0 : code(lambda, phi) - : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0; - if (!point0 && (v00 = v0 = v)) stream.lineStart(); - // Handle degeneracies. - // TODO ignore if not clipping polygons. - if (v !== v0) { - point2 = intersect(point0, point1); - if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) { - point1[0] += epsilon; - point1[1] += epsilon; - v = visible(point1[0], point1[1]); - } - } - if (v !== v0) { - clean = 0; - if (v) { - // outside going in - stream.lineStart(); - point2 = intersect(point1, point0); - stream.point(point2[0], point2[1]); - } else { - // inside going out - point2 = intersect(point0, point1); - stream.point(point2[0], point2[1]); - stream.lineEnd(); - } - point0 = point2; - } else if (notHemisphere && point0 && smallRadius ^ v) { - var t; - // If the codes for two points are different, or are both zero, - // and there this segment intersects with the small circle. - if (!(c & c0) && (t = intersect(point1, point0, true))) { - clean = 0; - if (smallRadius) { - stream.lineStart(); - stream.point(t[0][0], t[0][1]); - stream.point(t[1][0], t[1][1]); - stream.lineEnd(); - } else { - stream.point(t[1][0], t[1][1]); - stream.lineEnd(); - stream.lineStart(); - stream.point(t[0][0], t[0][1]); - } - } - } - if (v && (!point0 || !pointEqual(point0, point1))) { - stream.point(point1[0], point1[1]); - } - point0 = point1, v0 = v, c0 = c; - }, - lineEnd: function() { - if (v0) stream.lineEnd(); - point0 = null; - }, - // Rejoin first and last segments if there were intersections and the first - // and last points were visible. - clean: function() { - return clean | ((v00 && v0) << 1); - } - }; - } - - // Intersects the great circle between a and b with the clip circle. - function intersect(a, b, two) { - var pa = cartesian(a), - pb = cartesian(b); - - // We have two planes, n1.p = d1 and n2.p = d2. - // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2). - var n1 = [1, 0, 0], // normal - n2 = cartesianCross(pa, pb), - n2n2 = cartesianDot(n2, n2), - n1n2 = n2[0], // cartesianDot(n1, n2), - determinant = n2n2 - n1n2 * n1n2; - - // Two polar points. - if (!determinant) return !two && a; - - var c1 = cr * n2n2 / determinant, - c2 = -cr * n1n2 / determinant, - n1xn2 = cartesianCross(n1, n2), - A = cartesianScale(n1, c1), - B = cartesianScale(n2, c2); - cartesianAddInPlace(A, B); - - // Solve |p(t)|^2 = 1. - var u = n1xn2, - w = cartesianDot(A, u), - uu = cartesianDot(u, u), - t2 = w * w - uu * (cartesianDot(A, A) - 1); - - if (t2 < 0) return; - - var t = sqrt(t2), - q = cartesianScale(u, (-w - t) / uu); - cartesianAddInPlace(q, A); - q = spherical(q); - - if (!two) return q; - - // Two intersection points. - var lambda0 = a[0], - lambda1 = b[0], - phi0 = a[1], - phi1 = b[1], - z; - - if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z; - - var delta = lambda1 - lambda0, - polar = abs(delta - pi) < epsilon, - meridian = polar || delta < epsilon; - - if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z; - - // Check that the first point is between a and b. - if (meridian - ? polar - ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1) - : phi0 <= q[1] && q[1] <= phi1 - : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) { - var q1 = cartesianScale(u, (-w + t) / uu); - cartesianAddInPlace(q1, A); - return [q, spherical(q1)]; - } - } - - // Generates a 4-bit vector representing the location of a point relative to - // the small circle's bounding box. - function code(lambda, phi) { - var r = smallRadius ? radius : pi - radius, - code = 0; - if (lambda < -r) code |= 1; // left - else if (lambda > r) code |= 2; // right - if (phi < -r) code |= 4; // below - else if (phi > r) code |= 8; // above - return code; - } - - return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]); -} - -function clipLine(a, b, x0, y0, x1, y1) { - var ax = a[0], - ay = a[1], - bx = b[0], - by = b[1], - t0 = 0, - t1 = 1, - dx = bx - ax, - dy = by - ay, - r; - - r = x0 - ax; - if (!dx && r > 0) return; - r /= dx; - if (dx < 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } else if (dx > 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } - - r = x1 - ax; - if (!dx && r < 0) return; - r /= dx; - if (dx < 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } else if (dx > 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } - - r = y0 - ay; - if (!dy && r > 0) return; - r /= dy; - if (dy < 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } else if (dy > 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } - - r = y1 - ay; - if (!dy && r < 0) return; - r /= dy; - if (dy < 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } else if (dy > 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } - - if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy; - if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy; - return true; -} - -var clipMax = 1e9, clipMin = -clipMax; - -// TODO Use d3-polygon’s polygonContains here for the ring check? -// TODO Eliminate duplicate buffering in clipBuffer and polygon.push? - -function clipRectangle(x0, y0, x1, y1) { - - function visible(x, y) { - return x0 <= x && x <= x1 && y0 <= y && y <= y1; - } - - function interpolate(from, to, direction, stream) { - var a = 0, a1 = 0; - if (from == null - || (a = corner(from, direction)) !== (a1 = corner(to, direction)) - || comparePoint(from, to) < 0 ^ direction > 0) { - do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0); - while ((a = (a + direction + 4) % 4) !== a1); - } else { - stream.point(to[0], to[1]); - } - } - - function corner(p, direction) { - return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3 - : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1 - : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0 - : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon - } - - function compareIntersection(a, b) { - return comparePoint(a.x, b.x); - } - - function comparePoint(a, b) { - var ca = corner(a, 1), - cb = corner(b, 1); - return ca !== cb ? ca - cb - : ca === 0 ? b[1] - a[1] - : ca === 1 ? a[0] - b[0] - : ca === 2 ? a[1] - b[1] - : b[0] - a[0]; - } - - return function(stream) { - var activeStream = stream, - bufferStream = clipBuffer(), - segments, - polygon, - ring, - x__, y__, v__, // first point - x_, y_, v_, // previous point - first, - clean; - - var clipStream = { - point: point, - lineStart: lineStart, - lineEnd: lineEnd, - polygonStart: polygonStart, - polygonEnd: polygonEnd - }; - - function point(x, y) { - if (visible(x, y)) activeStream.point(x, y); - } - - function polygonInside() { - var winding = 0; - - for (var i = 0, n = polygon.length; i < n; ++i) { - for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) { - a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1]; - if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; } - else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; } - } - } - - return winding; - } - - // Buffer geometry within a polygon and then clip it en masse. - function polygonStart() { - activeStream = bufferStream, segments = [], polygon = [], clean = true; - } - - function polygonEnd() { - var startInside = polygonInside(), - cleanInside = clean && startInside, - visible = (segments = d3Array.merge(segments)).length; - if (cleanInside || visible) { - stream.polygonStart(); - if (cleanInside) { - stream.lineStart(); - interpolate(null, null, 1, stream); - stream.lineEnd(); - } - if (visible) { - clipRejoin(segments, compareIntersection, startInside, interpolate, stream); - } - stream.polygonEnd(); - } - activeStream = stream, segments = polygon = ring = null; - } - - function lineStart() { - clipStream.point = linePoint; - if (polygon) polygon.push(ring = []); - first = true; - v_ = false; - x_ = y_ = NaN; - } - - // TODO rather than special-case polygons, simply handle them separately. - // Ideally, coincident intersection points should be jittered to avoid - // clipping issues. - function lineEnd() { - if (segments) { - linePoint(x__, y__); - if (v__ && v_) bufferStream.rejoin(); - segments.push(bufferStream.result()); - } - clipStream.point = point; - if (v_) activeStream.lineEnd(); - } - - function linePoint(x, y) { - var v = visible(x, y); - if (polygon) ring.push([x, y]); - if (first) { - x__ = x, y__ = y, v__ = v; - first = false; - if (v) { - activeStream.lineStart(); - activeStream.point(x, y); - } - } else { - if (v && v_) activeStream.point(x, y); - else { - var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))], - b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))]; - if (clipLine(a, b, x0, y0, x1, y1)) { - if (!v_) { - activeStream.lineStart(); - activeStream.point(a[0], a[1]); - } - activeStream.point(b[0], b[1]); - if (!v) activeStream.lineEnd(); - clean = false; - } else if (v) { - activeStream.lineStart(); - activeStream.point(x, y); - clean = false; - } - } - } - x_ = x, y_ = y, v_ = v; - } - - return clipStream; - }; -} - -function extent() { - var x0 = 0, - y0 = 0, - x1 = 960, - y1 = 500, - cache, - cacheStream, - clip; - - return clip = { - stream: function(stream) { - return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream); - }, - extent: function(_) { - return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]]; - } - }; -} - -var lengthSum = adder(), - lambda0$2, - sinPhi0$1, - cosPhi0$1; - -var lengthStream = { - sphere: noop, - point: noop, - lineStart: lengthLineStart, - lineEnd: noop, - polygonStart: noop, - polygonEnd: noop -}; - -function lengthLineStart() { - lengthStream.point = lengthPointFirst; - lengthStream.lineEnd = lengthLineEnd; -} - -function lengthLineEnd() { - lengthStream.point = lengthStream.lineEnd = noop; -} - -function lengthPointFirst(lambda, phi) { - lambda *= radians, phi *= radians; - lambda0$2 = lambda, sinPhi0$1 = sin(phi), cosPhi0$1 = cos(phi); - lengthStream.point = lengthPoint; -} - -function lengthPoint(lambda, phi) { - lambda *= radians, phi *= radians; - var sinPhi = sin(phi), - cosPhi = cos(phi), - delta = abs(lambda - lambda0$2), - cosDelta = cos(delta), - sinDelta = sin(delta), - x = cosPhi * sinDelta, - y = cosPhi0$1 * sinPhi - sinPhi0$1 * cosPhi * cosDelta, - z = sinPhi0$1 * sinPhi + cosPhi0$1 * cosPhi * cosDelta; - lengthSum.add(atan2(sqrt(x * x + y * y), z)); - lambda0$2 = lambda, sinPhi0$1 = sinPhi, cosPhi0$1 = cosPhi; -} - -function length(object) { - lengthSum.reset(); - geoStream(object, lengthStream); - return +lengthSum; -} - -var coordinates = [null, null], - object = {type: "LineString", coordinates: coordinates}; - -function distance(a, b) { - coordinates[0] = a; - coordinates[1] = b; - return length(object); -} - -var containsObjectType = { - Feature: function(object, point) { - return containsGeometry(object.geometry, point); - }, - FeatureCollection: function(object, point) { - var features = object.features, i = -1, n = features.length; - while (++i < n) if (containsGeometry(features[i].geometry, point)) return true; - return false; - } -}; - -var containsGeometryType = { - Sphere: function() { - return true; - }, - Point: function(object, point) { - return containsPoint(object.coordinates, point); - }, - MultiPoint: function(object, point) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) if (containsPoint(coordinates[i], point)) return true; - return false; - }, - LineString: function(object, point) { - return containsLine(object.coordinates, point); - }, - MultiLineString: function(object, point) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) if (containsLine(coordinates[i], point)) return true; - return false; - }, - Polygon: function(object, point) { - return containsPolygon(object.coordinates, point); - }, - MultiPolygon: function(object, point) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) if (containsPolygon(coordinates[i], point)) return true; - return false; - }, - GeometryCollection: function(object, point) { - var geometries = object.geometries, i = -1, n = geometries.length; - while (++i < n) if (containsGeometry(geometries[i], point)) return true; - return false; - } -}; - -function containsGeometry(geometry, point) { - return geometry && containsGeometryType.hasOwnProperty(geometry.type) - ? containsGeometryType[geometry.type](geometry, point) - : false; -} - -function containsPoint(coordinates, point) { - return distance(coordinates, point) === 0; -} - -function containsLine(coordinates, point) { - var ao, bo, ab; - for (var i = 0, n = coordinates.length; i < n; i++) { - bo = distance(coordinates[i], point); - if (bo === 0) return true; - if (i > 0) { - ab = distance(coordinates[i], coordinates[i - 1]); - if ( - ab > 0 && - ao <= ab && - bo <= ab && - (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab - ) - return true; - } - ao = bo; - } - return false; -} - -function containsPolygon(coordinates, point) { - return !!polygonContains(coordinates.map(ringRadians), pointRadians(point)); -} - -function ringRadians(ring) { - return ring = ring.map(pointRadians), ring.pop(), ring; -} - -function pointRadians(point) { - return [point[0] * radians, point[1] * radians]; -} - -function contains(object, point) { - return (object && containsObjectType.hasOwnProperty(object.type) - ? containsObjectType[object.type] - : containsGeometry)(object, point); -} - -function graticuleX(y0, y1, dy) { - var y = d3Array.range(y0, y1 - epsilon, dy).concat(y1); - return function(x) { return y.map(function(y) { return [x, y]; }); }; -} - -function graticuleY(x0, x1, dx) { - var x = d3Array.range(x0, x1 - epsilon, dx).concat(x1); - return function(y) { return x.map(function(x) { return [x, y]; }); }; -} - -function graticule() { - var x1, x0, X1, X0, - y1, y0, Y1, Y0, - dx = 10, dy = dx, DX = 90, DY = 360, - x, y, X, Y, - precision = 2.5; - - function graticule() { - return {type: "MultiLineString", coordinates: lines()}; - } - - function lines() { - return d3Array.range(ceil(X0 / DX) * DX, X1, DX).map(X) - .concat(d3Array.range(ceil(Y0 / DY) * DY, Y1, DY).map(Y)) - .concat(d3Array.range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x)) - .concat(d3Array.range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y)); - } - - graticule.lines = function() { - return lines().map(function(coordinates) { return {type: "LineString", coordinates: coordinates}; }); - }; - - graticule.outline = function() { - return { - type: "Polygon", - coordinates: [ - X(X0).concat( - Y(Y1).slice(1), - X(X1).reverse().slice(1), - Y(Y0).reverse().slice(1)) - ] - }; - }; - - graticule.extent = function(_) { - if (!arguments.length) return graticule.extentMinor(); - return graticule.extentMajor(_).extentMinor(_); - }; - - graticule.extentMajor = function(_) { - if (!arguments.length) return [[X0, Y0], [X1, Y1]]; - X0 = +_[0][0], X1 = +_[1][0]; - Y0 = +_[0][1], Y1 = +_[1][1]; - if (X0 > X1) _ = X0, X0 = X1, X1 = _; - if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _; - return graticule.precision(precision); - }; - - graticule.extentMinor = function(_) { - if (!arguments.length) return [[x0, y0], [x1, y1]]; - x0 = +_[0][0], x1 = +_[1][0]; - y0 = +_[0][1], y1 = +_[1][1]; - if (x0 > x1) _ = x0, x0 = x1, x1 = _; - if (y0 > y1) _ = y0, y0 = y1, y1 = _; - return graticule.precision(precision); - }; - - graticule.step = function(_) { - if (!arguments.length) return graticule.stepMinor(); - return graticule.stepMajor(_).stepMinor(_); - }; - - graticule.stepMajor = function(_) { - if (!arguments.length) return [DX, DY]; - DX = +_[0], DY = +_[1]; - return graticule; - }; - - graticule.stepMinor = function(_) { - if (!arguments.length) return [dx, dy]; - dx = +_[0], dy = +_[1]; - return graticule; - }; - - graticule.precision = function(_) { - if (!arguments.length) return precision; - precision = +_; - x = graticuleX(y0, y1, 90); - y = graticuleY(x0, x1, precision); - X = graticuleX(Y0, Y1, 90); - Y = graticuleY(X0, X1, precision); - return graticule; - }; - - return graticule - .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]]) - .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]); -} - -function graticule10() { - return graticule()(); -} - -function interpolate(a, b) { - var x0 = a[0] * radians, - y0 = a[1] * radians, - x1 = b[0] * radians, - y1 = b[1] * radians, - cy0 = cos(y0), - sy0 = sin(y0), - cy1 = cos(y1), - sy1 = sin(y1), - kx0 = cy0 * cos(x0), - ky0 = cy0 * sin(x0), - kx1 = cy1 * cos(x1), - ky1 = cy1 * sin(x1), - d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))), - k = sin(d); - - var interpolate = d ? function(t) { - var B = sin(t *= d) / k, - A = sin(d - t) / k, - x = A * kx0 + B * kx1, - y = A * ky0 + B * ky1, - z = A * sy0 + B * sy1; - return [ - atan2(y, x) * degrees, - atan2(z, sqrt(x * x + y * y)) * degrees - ]; - } : function() { - return [x0 * degrees, y0 * degrees]; - }; - - interpolate.distance = d; - - return interpolate; -} - -function identity(x) { - return x; -} - -var areaSum$1 = adder(), - areaRingSum$1 = adder(), - x00, - y00, - x0$1, - y0$1; - -var areaStream$1 = { - point: noop, - lineStart: noop, - lineEnd: noop, - polygonStart: function() { - areaStream$1.lineStart = areaRingStart$1; - areaStream$1.lineEnd = areaRingEnd$1; - }, - polygonEnd: function() { - areaStream$1.lineStart = areaStream$1.lineEnd = areaStream$1.point = noop; - areaSum$1.add(abs(areaRingSum$1)); - areaRingSum$1.reset(); - }, - result: function() { - var area = areaSum$1 / 2; - areaSum$1.reset(); - return area; - } -}; - -function areaRingStart$1() { - areaStream$1.point = areaPointFirst$1; -} - -function areaPointFirst$1(x, y) { - areaStream$1.point = areaPoint$1; - x00 = x0$1 = x, y00 = y0$1 = y; -} - -function areaPoint$1(x, y) { - areaRingSum$1.add(y0$1 * x - x0$1 * y); - x0$1 = x, y0$1 = y; -} - -function areaRingEnd$1() { - areaPoint$1(x00, y00); -} - -var x0$2 = Infinity, - y0$2 = x0$2, - x1 = -x0$2, - y1 = x1; - -var boundsStream$1 = { - point: boundsPoint$1, - lineStart: noop, - lineEnd: noop, - polygonStart: noop, - polygonEnd: noop, - result: function() { - var bounds = [[x0$2, y0$2], [x1, y1]]; - x1 = y1 = -(y0$2 = x0$2 = Infinity); - return bounds; - } -}; - -function boundsPoint$1(x, y) { - if (x < x0$2) x0$2 = x; - if (x > x1) x1 = x; - if (y < y0$2) y0$2 = y; - if (y > y1) y1 = y; -} - -// TODO Enforce positive area for exterior, negative area for interior? - -var X0$1 = 0, - Y0$1 = 0, - Z0$1 = 0, - X1$1 = 0, - Y1$1 = 0, - Z1$1 = 0, - X2$1 = 0, - Y2$1 = 0, - Z2$1 = 0, - x00$1, - y00$1, - x0$3, - y0$3; - -var centroidStream$1 = { - point: centroidPoint$1, - lineStart: centroidLineStart$1, - lineEnd: centroidLineEnd$1, - polygonStart: function() { - centroidStream$1.lineStart = centroidRingStart$1; - centroidStream$1.lineEnd = centroidRingEnd$1; - }, - polygonEnd: function() { - centroidStream$1.point = centroidPoint$1; - centroidStream$1.lineStart = centroidLineStart$1; - centroidStream$1.lineEnd = centroidLineEnd$1; - }, - result: function() { - var centroid = Z2$1 ? [X2$1 / Z2$1, Y2$1 / Z2$1] - : Z1$1 ? [X1$1 / Z1$1, Y1$1 / Z1$1] - : Z0$1 ? [X0$1 / Z0$1, Y0$1 / Z0$1] - : [NaN, NaN]; - X0$1 = Y0$1 = Z0$1 = - X1$1 = Y1$1 = Z1$1 = - X2$1 = Y2$1 = Z2$1 = 0; - return centroid; - } -}; - -function centroidPoint$1(x, y) { - X0$1 += x; - Y0$1 += y; - ++Z0$1; -} - -function centroidLineStart$1() { - centroidStream$1.point = centroidPointFirstLine; -} - -function centroidPointFirstLine(x, y) { - centroidStream$1.point = centroidPointLine; - centroidPoint$1(x0$3 = x, y0$3 = y); -} - -function centroidPointLine(x, y) { - var dx = x - x0$3, dy = y - y0$3, z = sqrt(dx * dx + dy * dy); - X1$1 += z * (x0$3 + x) / 2; - Y1$1 += z * (y0$3 + y) / 2; - Z1$1 += z; - centroidPoint$1(x0$3 = x, y0$3 = y); -} - -function centroidLineEnd$1() { - centroidStream$1.point = centroidPoint$1; -} - -function centroidRingStart$1() { - centroidStream$1.point = centroidPointFirstRing; -} - -function centroidRingEnd$1() { - centroidPointRing(x00$1, y00$1); -} - -function centroidPointFirstRing(x, y) { - centroidStream$1.point = centroidPointRing; - centroidPoint$1(x00$1 = x0$3 = x, y00$1 = y0$3 = y); -} - -function centroidPointRing(x, y) { - var dx = x - x0$3, - dy = y - y0$3, - z = sqrt(dx * dx + dy * dy); - - X1$1 += z * (x0$3 + x) / 2; - Y1$1 += z * (y0$3 + y) / 2; - Z1$1 += z; - - z = y0$3 * x - x0$3 * y; - X2$1 += z * (x0$3 + x); - Y2$1 += z * (y0$3 + y); - Z2$1 += z * 3; - centroidPoint$1(x0$3 = x, y0$3 = y); -} - -function PathContext(context) { - this._context = context; -} - -PathContext.prototype = { - _radius: 4.5, - pointRadius: function(_) { - return this._radius = _, this; - }, - polygonStart: function() { - this._line = 0; - }, - polygonEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._line === 0) this._context.closePath(); - this._point = NaN; - }, - point: function(x, y) { - switch (this._point) { - case 0: { - this._context.moveTo(x, y); - this._point = 1; - break; - } - case 1: { - this._context.lineTo(x, y); - break; - } - default: { - this._context.moveTo(x + this._radius, y); - this._context.arc(x, y, this._radius, 0, tau); - break; - } - } - }, - result: noop -}; - -var lengthSum$1 = adder(), - lengthRing, - x00$2, - y00$2, - x0$4, - y0$4; - -var lengthStream$1 = { - point: noop, - lineStart: function() { - lengthStream$1.point = lengthPointFirst$1; - }, - lineEnd: function() { - if (lengthRing) lengthPoint$1(x00$2, y00$2); - lengthStream$1.point = noop; - }, - polygonStart: function() { - lengthRing = true; - }, - polygonEnd: function() { - lengthRing = null; - }, - result: function() { - var length = +lengthSum$1; - lengthSum$1.reset(); - return length; - } -}; - -function lengthPointFirst$1(x, y) { - lengthStream$1.point = lengthPoint$1; - x00$2 = x0$4 = x, y00$2 = y0$4 = y; -} - -function lengthPoint$1(x, y) { - x0$4 -= x, y0$4 -= y; - lengthSum$1.add(sqrt(x0$4 * x0$4 + y0$4 * y0$4)); - x0$4 = x, y0$4 = y; -} - -function PathString() { - this._string = []; -} - -PathString.prototype = { - _radius: 4.5, - _circle: circle$1(4.5), - pointRadius: function(_) { - if ((_ = +_) !== this._radius) this._radius = _, this._circle = null; - return this; - }, - polygonStart: function() { - this._line = 0; - }, - polygonEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._line === 0) this._string.push("Z"); - this._point = NaN; - }, - point: function(x, y) { - switch (this._point) { - case 0: { - this._string.push("M", x, ",", y); - this._point = 1; - break; - } - case 1: { - this._string.push("L", x, ",", y); - break; - } - default: { - if (this._circle == null) this._circle = circle$1(this._radius); - this._string.push("M", x, ",", y, this._circle); - break; - } - } - }, - result: function() { - if (this._string.length) { - var result = this._string.join(""); - this._string = []; - return result; - } else { - return null; - } - } -}; - -function circle$1(radius) { - return "m0," + radius - + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius - + "a" + radius + "," + radius + " 0 1,1 0," + 2 * radius - + "z"; -} - -function index(projection, context) { - var pointRadius = 4.5, - projectionStream, - contextStream; - - function path(object) { - if (object) { - if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments)); - geoStream(object, projectionStream(contextStream)); - } - return contextStream.result(); - } - - path.area = function(object) { - geoStream(object, projectionStream(areaStream$1)); - return areaStream$1.result(); - }; - - path.measure = function(object) { - geoStream(object, projectionStream(lengthStream$1)); - return lengthStream$1.result(); - }; - - path.bounds = function(object) { - geoStream(object, projectionStream(boundsStream$1)); - return boundsStream$1.result(); - }; - - path.centroid = function(object) { - geoStream(object, projectionStream(centroidStream$1)); - return centroidStream$1.result(); - }; - - path.projection = function(_) { - return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection; - }; - - path.context = function(_) { - if (!arguments.length) return context; - contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _); - if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius); - return path; - }; - - path.pointRadius = function(_) { - if (!arguments.length) return pointRadius; - pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_); - return path; - }; - - return path.projection(projection).context(context); -} - -function transform(methods) { - return { - stream: transformer(methods) - }; -} - -function transformer(methods) { - return function(stream) { - var s = new TransformStream; - for (var key in methods) s[key] = methods[key]; - s.stream = stream; - return s; - }; -} - -function TransformStream() {} - -TransformStream.prototype = { - constructor: TransformStream, - point: function(x, y) { this.stream.point(x, y); }, - sphere: function() { this.stream.sphere(); }, - lineStart: function() { this.stream.lineStart(); }, - lineEnd: function() { this.stream.lineEnd(); }, - polygonStart: function() { this.stream.polygonStart(); }, - polygonEnd: function() { this.stream.polygonEnd(); } -}; - -function fit(projection, fitBounds, object) { - var clip = projection.clipExtent && projection.clipExtent(); - projection.scale(150).translate([0, 0]); - if (clip != null) projection.clipExtent(null); - geoStream(object, projection.stream(boundsStream$1)); - fitBounds(boundsStream$1.result()); - if (clip != null) projection.clipExtent(clip); - return projection; -} - -function fitExtent(projection, extent, object) { - return fit(projection, function(b) { - var w = extent[1][0] - extent[0][0], - h = extent[1][1] - extent[0][1], - k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])), - x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2, - y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2; - projection.scale(150 * k).translate([x, y]); - }, object); -} - -function fitSize(projection, size, object) { - return fitExtent(projection, [[0, 0], size], object); -} - -function fitWidth(projection, width, object) { - return fit(projection, function(b) { - var w = +width, - k = w / (b[1][0] - b[0][0]), - x = (w - k * (b[1][0] + b[0][0])) / 2, - y = -k * b[0][1]; - projection.scale(150 * k).translate([x, y]); - }, object); -} - -function fitHeight(projection, height, object) { - return fit(projection, function(b) { - var h = +height, - k = h / (b[1][1] - b[0][1]), - x = -k * b[0][0], - y = (h - k * (b[1][1] + b[0][1])) / 2; - projection.scale(150 * k).translate([x, y]); - }, object); -} - -var maxDepth = 16, // maximum depth of subdivision - cosMinDistance = cos(30 * radians); // cos(minimum angular distance) - -function resample(project, delta2) { - return +delta2 ? resample$1(project, delta2) : resampleNone(project); -} - -function resampleNone(project) { - return transformer({ - point: function(x, y) { - x = project(x, y); - this.stream.point(x[0], x[1]); - } - }); -} - -function resample$1(project, delta2) { - - function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) { - var dx = x1 - x0, - dy = y1 - y0, - d2 = dx * dx + dy * dy; - if (d2 > 4 * delta2 && depth--) { - var a = a0 + a1, - b = b0 + b1, - c = c0 + c1, - m = sqrt(a * a + b * b + c * c), - phi2 = asin(c /= m), - lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a), - p = project(lambda2, phi2), - x2 = p[0], - y2 = p[1], - dx2 = x2 - x0, - dy2 = y2 - y0, - dz = dy * dx2 - dx * dy2; - if (dz * dz / d2 > delta2 // perpendicular projected distance - || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end - || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance - resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream); - stream.point(x2, y2); - resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream); - } - } - } - return function(stream) { - var lambda00, x00, y00, a00, b00, c00, // first point - lambda0, x0, y0, a0, b0, c0; // previous point - - var resampleStream = { - point: point, - lineStart: lineStart, - lineEnd: lineEnd, - polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; }, - polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; } - }; - - function point(x, y) { - x = project(x, y); - stream.point(x[0], x[1]); - } - - function lineStart() { - x0 = NaN; - resampleStream.point = linePoint; - stream.lineStart(); - } - - function linePoint(lambda, phi) { - var c = cartesian([lambda, phi]), p = project(lambda, phi); - resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream); - stream.point(x0, y0); - } - - function lineEnd() { - resampleStream.point = point; - stream.lineEnd(); - } - - function ringStart() { - lineStart(); - resampleStream.point = ringPoint; - resampleStream.lineEnd = ringEnd; - } - - function ringPoint(lambda, phi) { - linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0; - resampleStream.point = linePoint; - } - - function ringEnd() { - resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream); - resampleStream.lineEnd = lineEnd; - lineEnd(); - } - - return resampleStream; - }; -} - -var transformRadians = transformer({ - point: function(x, y) { - this.stream.point(x * radians, y * radians); - } -}); - -function transformRotate(rotate) { - return transformer({ - point: function(x, y) { - var r = rotate(x, y); - return this.stream.point(r[0], r[1]); - } - }); -} - -function scaleTranslate(k, dx, dy) { - function transform$$1(x, y) { - return [dx + k * x, dy - k * y]; - } - transform$$1.invert = function(x, y) { - return [(x - dx) / k, (dy - y) / k]; - }; - return transform$$1; -} - -function scaleTranslateRotate(k, dx, dy, alpha) { - var cosAlpha = cos(alpha), - sinAlpha = sin(alpha), - a = cosAlpha * k, - b = sinAlpha * k, - ai = cosAlpha / k, - bi = sinAlpha / k, - ci = (sinAlpha * dy - cosAlpha * dx) / k, - fi = (sinAlpha * dx + cosAlpha * dy) / k; - function transform$$1(x, y) { - return [a * x - b * y + dx, dy - b * x - a * y]; - } - transform$$1.invert = function(x, y) { - return [ai * x - bi * y + ci, fi - bi * x - ai * y]; - }; - return transform$$1; -} - -function projection(project) { - return projectionMutator(function() { return project; })(); -} - -function projectionMutator(projectAt) { - var project, - k = 150, // scale - x = 480, y = 250, // translate - lambda = 0, phi = 0, // center - deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate - alpha = 0, // post-rotate - theta = null, preclip = clipAntimeridian, // pre-clip angle - x0 = null, y0, x1, y1, postclip = identity, // post-clip extent - delta2 = 0.5, // precision - projectResample, - projectTransform, - projectRotateTransform, - cache, - cacheStream; - - function projection(point) { - return projectRotateTransform(point[0] * radians, point[1] * radians); - } - - function invert(point) { - point = projectRotateTransform.invert(point[0], point[1]); - return point && [point[0] * degrees, point[1] * degrees]; - } - - projection.stream = function(stream) { - return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream))))); - }; - - projection.preclip = function(_) { - return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip; - }; - - projection.postclip = function(_) { - return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip; - }; - - projection.clipAngle = function(_) { - return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees; - }; - - projection.clipExtent = function(_) { - return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]]; - }; - - projection.scale = function(_) { - return arguments.length ? (k = +_, recenter()) : k; - }; - - projection.translate = function(_) { - return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y]; - }; - - projection.center = function(_) { - return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees]; - }; - - projection.rotate = function(_) { - return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees]; - }; - - projection.angle = function(_) { - return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees; - }; - - projection.precision = function(_) { - return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2); - }; - - projection.fitExtent = function(extent, object) { - return fitExtent(projection, extent, object); - }; - - projection.fitSize = function(size, object) { - return fitSize(projection, size, object); - }; - - projection.fitWidth = function(width, object) { - return fitWidth(projection, width, object); - }; - - projection.fitHeight = function(height, object) { - return fitHeight(projection, height, object); - }; - - function recenter() { - var center = scaleTranslateRotate(k, 0, 0, alpha).apply(null, project(lambda, phi)), - transform$$1 = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], alpha); - rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma); - projectTransform = compose(project, transform$$1); - projectRotateTransform = compose(rotate, projectTransform); - projectResample = resample(projectTransform, delta2); - return reset(); - } - - function reset() { - cache = cacheStream = null; - return projection; - } - - return function() { - project = projectAt.apply(this, arguments); - projection.invert = project.invert && invert; - return recenter(); - }; -} - -function conicProjection(projectAt) { - var phi0 = 0, - phi1 = pi / 3, - m = projectionMutator(projectAt), - p = m(phi0, phi1); - - p.parallels = function(_) { - return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees]; - }; - - return p; -} - -function cylindricalEqualAreaRaw(phi0) { - var cosPhi0 = cos(phi0); - - function forward(lambda, phi) { - return [lambda * cosPhi0, sin(phi) / cosPhi0]; - } - - forward.invert = function(x, y) { - return [x / cosPhi0, asin(y * cosPhi0)]; - }; - - return forward; -} - -function conicEqualAreaRaw(y0, y1) { - var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2; - - // Are the parallels symmetrical around the Equator? - if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0); - - var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n; - - function project(x, y) { - var r = sqrt(c - 2 * n * sin(y)) / n; - return [r * sin(x *= n), r0 - r * cos(x)]; - } - - project.invert = function(x, y) { - var r0y = r0 - y; - return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))]; - }; - - return project; -} - -function conicEqualArea() { - return conicProjection(conicEqualAreaRaw) - .scale(155.424) - .center([0, 33.6442]); -} - -function albers() { - return conicEqualArea() - .parallels([29.5, 45.5]) - .scale(1070) - .translate([480, 250]) - .rotate([96, 0]) - .center([-0.6, 38.7]); -} - -// The projections must have mutually exclusive clip regions on the sphere, -// as this will avoid emitting interleaving lines and polygons. -function multiplex(streams) { - var n = streams.length; - return { - point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); }, - sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); }, - lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); }, - lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); }, - polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); }, - polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); } - }; -} - -// A composite projection for the United States, configured by default for -// 960×500. The projection also works quite well at 960×600 if you change the -// scale to 1285 and adjust the translate accordingly. The set of standard -// parallels for each region comes from USGS, which is published here: -// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers -function albersUsa() { - var cache, - cacheStream, - lower48 = albers(), lower48Point, - alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338 - hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007 - point, pointStream = {point: function(x, y) { point = [x, y]; }}; - - function albersUsa(coordinates) { - var x = coordinates[0], y = coordinates[1]; - return point = null, - (lower48Point.point(x, y), point) - || (alaskaPoint.point(x, y), point) - || (hawaiiPoint.point(x, y), point); - } - - albersUsa.invert = function(coordinates) { - var k = lower48.scale(), - t = lower48.translate(), - x = (coordinates[0] - t[0]) / k, - y = (coordinates[1] - t[1]) / k; - return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska - : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii - : lower48).invert(coordinates); - }; - - albersUsa.stream = function(stream) { - return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]); - }; - - albersUsa.precision = function(_) { - if (!arguments.length) return lower48.precision(); - lower48.precision(_), alaska.precision(_), hawaii.precision(_); - return reset(); - }; - - albersUsa.scale = function(_) { - if (!arguments.length) return lower48.scale(); - lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_); - return albersUsa.translate(lower48.translate()); - }; - - albersUsa.translate = function(_) { - if (!arguments.length) return lower48.translate(); - var k = lower48.scale(), x = +_[0], y = +_[1]; - - lower48Point = lower48 - .translate(_) - .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]]) - .stream(pointStream); - - alaskaPoint = alaska - .translate([x - 0.307 * k, y + 0.201 * k]) - .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]]) - .stream(pointStream); - - hawaiiPoint = hawaii - .translate([x - 0.205 * k, y + 0.212 * k]) - .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]]) - .stream(pointStream); - - return reset(); - }; - - albersUsa.fitExtent = function(extent, object) { - return fitExtent(albersUsa, extent, object); - }; - - albersUsa.fitSize = function(size, object) { - return fitSize(albersUsa, size, object); - }; - - albersUsa.fitWidth = function(width, object) { - return fitWidth(albersUsa, width, object); - }; - - albersUsa.fitHeight = function(height, object) { - return fitHeight(albersUsa, height, object); - }; - - function reset() { - cache = cacheStream = null; - return albersUsa; - } - - return albersUsa.scale(1070); -} - -function azimuthalRaw(scale) { - return function(x, y) { - var cx = cos(x), - cy = cos(y), - k = scale(cx * cy); - return [ - k * cy * sin(x), - k * sin(y) - ]; - } -} - -function azimuthalInvert(angle) { - return function(x, y) { - var z = sqrt(x * x + y * y), - c = angle(z), - sc = sin(c), - cc = cos(c); - return [ - atan2(x * sc, z * cc), - asin(z && y * sc / z) - ]; - } -} - -var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) { - return sqrt(2 / (1 + cxcy)); -}); - -azimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) { - return 2 * asin(z / 2); -}); - -function azimuthalEqualArea() { - return projection(azimuthalEqualAreaRaw) - .scale(124.75) - .clipAngle(180 - 1e-3); -} - -var azimuthalEquidistantRaw = azimuthalRaw(function(c) { - return (c = acos(c)) && c / sin(c); -}); - -azimuthalEquidistantRaw.invert = azimuthalInvert(function(z) { - return z; -}); - -function azimuthalEquidistant() { - return projection(azimuthalEquidistantRaw) - .scale(79.4188) - .clipAngle(180 - 1e-3); -} - -function mercatorRaw(lambda, phi) { - return [lambda, log(tan((halfPi + phi) / 2))]; -} - -mercatorRaw.invert = function(x, y) { - return [x, 2 * atan(exp(y)) - halfPi]; -}; - -function mercator() { - return mercatorProjection(mercatorRaw) - .scale(961 / tau); -} - -function mercatorProjection(project) { - var m = projection(project), - center = m.center, - scale = m.scale, - translate = m.translate, - clipExtent = m.clipExtent, - x0 = null, y0, x1, y1; // clip extent - - m.scale = function(_) { - return arguments.length ? (scale(_), reclip()) : scale(); - }; - - m.translate = function(_) { - return arguments.length ? (translate(_), reclip()) : translate(); - }; - - m.center = function(_) { - return arguments.length ? (center(_), reclip()) : center(); - }; - - m.clipExtent = function(_) { - return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]]; - }; - - function reclip() { - var k = pi * scale(), - t = m(rotation(m.rotate()).invert([0, 0])); - return clipExtent(x0 == null - ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw - ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]] - : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]); - } - - return reclip(); -} - -function tany(y) { - return tan((halfPi + y) / 2); -} - -function conicConformalRaw(y0, y1) { - var cy0 = cos(y0), - n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)), - f = cy0 * pow(tany(y0), n) / n; - - if (!n) return mercatorRaw; - - function project(x, y) { - if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; } - else { if (y > halfPi - epsilon) y = halfPi - epsilon; } - var r = f / pow(tany(y), n); - return [r * sin(n * x), f - r * cos(n * x)]; - } - - project.invert = function(x, y) { - var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy); - return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi]; - }; - - return project; -} - -function conicConformal() { - return conicProjection(conicConformalRaw) - .scale(109.5) - .parallels([30, 30]); -} - -function equirectangularRaw(lambda, phi) { - return [lambda, phi]; -} - -equirectangularRaw.invert = equirectangularRaw; - -function equirectangular() { - return projection(equirectangularRaw) - .scale(152.63); -} - -function conicEquidistantRaw(y0, y1) { - var cy0 = cos(y0), - n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0), - g = cy0 / n + y0; - - if (abs(n) < epsilon) return equirectangularRaw; - - function project(x, y) { - var gy = g - y, nx = n * x; - return [gy * sin(nx), g - gy * cos(nx)]; - } - - project.invert = function(x, y) { - var gy = g - y; - return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)]; - }; - - return project; -} - -function conicEquidistant() { - return conicProjection(conicEquidistantRaw) - .scale(131.154) - .center([0, 13.9389]); -} - -var A1 = 1.340264, - A2 = -0.081106, - A3 = 0.000893, - A4 = 0.003796, - M = sqrt(3) / 2, - iterations = 12; - -function equalEarthRaw(lambda, phi) { - var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2; - return [ - lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))), - l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - ]; -} - -equalEarthRaw.invert = function(x, y) { - var l = y, l2 = l * l, l6 = l2 * l2 * l2; - for (var i = 0, delta, fy, fpy; i < iterations; ++i) { - fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y; - fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2); - l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2; - if (abs(delta) < epsilon2) break; - } - return [ - M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l), - asin(sin(l) / M) - ]; -}; - -function equalEarth() { - return projection(equalEarthRaw) - .scale(177.158); -} - -function gnomonicRaw(x, y) { - var cy = cos(y), k = cos(x) * cy; - return [cy * sin(x) / k, sin(y) / k]; -} - -gnomonicRaw.invert = azimuthalInvert(atan); - -function gnomonic() { - return projection(gnomonicRaw) - .scale(144.049) - .clipAngle(60); -} - -function scaleTranslate$1(kx, ky, tx, ty) { - return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity : transformer({ - point: function(x, y) { - this.stream.point(x * kx + tx, y * ky + ty); - } - }); -} - -function identity$1() { - var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform$$1 = identity, // scale, translate and reflect - x0 = null, y0, x1, y1, // clip extent - postclip = identity, - cache, - cacheStream, - projection; - - function reset() { - cache = cacheStream = null; - return projection; - } - - return projection = { - stream: function(stream) { - return cache && cacheStream === stream ? cache : cache = transform$$1(postclip(cacheStream = stream)); - }, - postclip: function(_) { - return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip; - }, - clipExtent: function(_) { - return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]]; - }, - scale: function(_) { - return arguments.length ? (transform$$1 = scaleTranslate$1((k = +_) * sx, k * sy, tx, ty), reset()) : k; - }, - translate: function(_) { - return arguments.length ? (transform$$1 = scaleTranslate$1(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty]; - }, - reflectX: function(_) { - return arguments.length ? (transform$$1 = scaleTranslate$1(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0; - }, - reflectY: function(_) { - return arguments.length ? (transform$$1 = scaleTranslate$1(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0; - }, - fitExtent: function(extent, object) { - return fitExtent(projection, extent, object); - }, - fitSize: function(size, object) { - return fitSize(projection, size, object); - }, - fitWidth: function(width, object) { - return fitWidth(projection, width, object); - }, - fitHeight: function(height, object) { - return fitHeight(projection, height, object); - } - }; -} - -function naturalEarth1Raw(lambda, phi) { - var phi2 = phi * phi, phi4 = phi2 * phi2; - return [ - lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))), - phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - ]; -} - -naturalEarth1Raw.invert = function(x, y) { - var phi = y, i = 25, delta; - do { - var phi2 = phi * phi, phi4 = phi2 * phi2; - phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) / - (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4))); - } while (abs(delta) > epsilon && --i > 0); - return [ - x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))), - phi - ]; -}; - -function naturalEarth1() { - return projection(naturalEarth1Raw) - .scale(175.295); -} - -function orthographicRaw(x, y) { - return [cos(y) * sin(x), sin(y)]; -} - -orthographicRaw.invert = azimuthalInvert(asin); - -function orthographic() { - return projection(orthographicRaw) - .scale(249.5) - .clipAngle(90 + epsilon); -} - -function stereographicRaw(x, y) { - var cy = cos(y), k = 1 + cos(x) * cy; - return [cy * sin(x) / k, sin(y) / k]; -} - -stereographicRaw.invert = azimuthalInvert(function(z) { - return 2 * atan(z); -}); - -function stereographic() { - return projection(stereographicRaw) - .scale(250) - .clipAngle(142); -} - -function transverseMercatorRaw(lambda, phi) { - return [log(tan((halfPi + phi) / 2)), -lambda]; -} - -transverseMercatorRaw.invert = function(x, y) { - return [-y, 2 * atan(exp(x)) - halfPi]; -}; - -function transverseMercator() { - var m = mercatorProjection(transverseMercatorRaw), - center = m.center, - rotate = m.rotate; - - m.center = function(_) { - return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]); - }; - - m.rotate = function(_) { - return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]); - }; - - return rotate([0, 0, 90]) - .scale(159.155); -} - -exports.geoArea = area; -exports.geoBounds = bounds; -exports.geoCentroid = centroid; -exports.geoCircle = circle; -exports.geoClipAntimeridian = clipAntimeridian; -exports.geoClipCircle = clipCircle; -exports.geoClipExtent = extent; -exports.geoClipRectangle = clipRectangle; -exports.geoContains = contains; -exports.geoDistance = distance; -exports.geoGraticule = graticule; -exports.geoGraticule10 = graticule10; -exports.geoInterpolate = interpolate; -exports.geoLength = length; -exports.geoPath = index; -exports.geoAlbers = albers; -exports.geoAlbersUsa = albersUsa; -exports.geoAzimuthalEqualArea = azimuthalEqualArea; -exports.geoAzimuthalEqualAreaRaw = azimuthalEqualAreaRaw; -exports.geoAzimuthalEquidistant = azimuthalEquidistant; -exports.geoAzimuthalEquidistantRaw = azimuthalEquidistantRaw; -exports.geoConicConformal = conicConformal; -exports.geoConicConformalRaw = conicConformalRaw; -exports.geoConicEqualArea = conicEqualArea; -exports.geoConicEqualAreaRaw = conicEqualAreaRaw; -exports.geoConicEquidistant = conicEquidistant; -exports.geoConicEquidistantRaw = conicEquidistantRaw; -exports.geoEqualEarth = equalEarth; -exports.geoEqualEarthRaw = equalEarthRaw; -exports.geoEquirectangular = equirectangular; -exports.geoEquirectangularRaw = equirectangularRaw; -exports.geoGnomonic = gnomonic; -exports.geoGnomonicRaw = gnomonicRaw; -exports.geoIdentity = identity$1; -exports.geoProjection = projection; -exports.geoProjectionMutator = projectionMutator; -exports.geoMercator = mercator; -exports.geoMercatorRaw = mercatorRaw; -exports.geoNaturalEarth1 = naturalEarth1; -exports.geoNaturalEarth1Raw = naturalEarth1Raw; -exports.geoOrthographic = orthographic; -exports.geoOrthographicRaw = orthographicRaw; -exports.geoStereographic = stereographic; -exports.geoStereographicRaw = stereographicRaw; -exports.geoTransverseMercator = transverseMercator; -exports.geoTransverseMercatorRaw = transverseMercatorRaw; -exports.geoRotation = rotation; -exports.geoStream = geoStream; -exports.geoTransform = transform; - -Object.defineProperty(exports, '__esModule', { value: true }); - -}))); - -},{"d3-array":193}],195:[function(require,module,exports){ -'use strict'; - -exports.utils = require('./des/utils'); -exports.Cipher = require('./des/cipher'); -exports.DES = require('./des/des'); -exports.CBC = require('./des/cbc'); -exports.EDE = require('./des/ede'); - -},{"./des/cbc":196,"./des/cipher":197,"./des/des":198,"./des/ede":199,"./des/utils":200}],196:[function(require,module,exports){ -'use strict'; - -var assert = require('minimalistic-assert'); -var inherits = require('inherits'); - -var proto = {}; - -function CBCState(iv) { - assert.equal(iv.length, 8, 'Invalid IV length'); - - this.iv = new Array(8); - for (var i = 0; i < this.iv.length; i++) - this.iv[i] = iv[i]; -} - -function instantiate(Base) { - function CBC(options) { - Base.call(this, options); - this._cbcInit(); - } - inherits(CBC, Base); - - var keys = Object.keys(proto); - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - CBC.prototype[key] = proto[key]; - } - - CBC.create = function create(options) { - return new CBC(options); - }; - - return CBC; -} - -exports.instantiate = instantiate; - -proto._cbcInit = function _cbcInit() { - var state = new CBCState(this.options.iv); - this._cbcState = state; -}; - -proto._update = function _update(inp, inOff, out, outOff) { - var state = this._cbcState; - var superProto = this.constructor.super_.prototype; - - var iv = state.iv; - if (this.type === 'encrypt') { - for (var i = 0; i < this.blockSize; i++) - iv[i] ^= inp[inOff + i]; - - superProto._update.call(this, iv, 0, out, outOff); - - for (var i = 0; i < this.blockSize; i++) - iv[i] = out[outOff + i]; - } else { - superProto._update.call(this, inp, inOff, out, outOff); - - for (var i = 0; i < this.blockSize; i++) - out[outOff + i] ^= iv[i]; - - for (var i = 0; i < this.blockSize; i++) - iv[i] = inp[inOff + i]; - } -}; - -},{"inherits":262,"minimalistic-assert":268}],197:[function(require,module,exports){ -'use strict'; - -var assert = require('minimalistic-assert'); - -function Cipher(options) { - this.options = options; - - this.type = this.options.type; - this.blockSize = 8; - this._init(); - - this.buffer = new Array(this.blockSize); - this.bufferOff = 0; -} -module.exports = Cipher; - -Cipher.prototype._init = function _init() { - // Might be overrided -}; - -Cipher.prototype.update = function update(data) { - if (data.length === 0) - return []; - - if (this.type === 'decrypt') - return this._updateDecrypt(data); - else - return this._updateEncrypt(data); -}; - -Cipher.prototype._buffer = function _buffer(data, off) { - // Append data to buffer - var min = Math.min(this.buffer.length - this.bufferOff, data.length - off); - for (var i = 0; i < min; i++) - this.buffer[this.bufferOff + i] = data[off + i]; - this.bufferOff += min; - - // Shift next - return min; -}; - -Cipher.prototype._flushBuffer = function _flushBuffer(out, off) { - this._update(this.buffer, 0, out, off); - this.bufferOff = 0; - return this.blockSize; -}; - -Cipher.prototype._updateEncrypt = function _updateEncrypt(data) { - var inputOff = 0; - var outputOff = 0; - - var count = ((this.bufferOff + data.length) / this.blockSize) | 0; - var out = new Array(count * this.blockSize); - - if (this.bufferOff !== 0) { - inputOff += this._buffer(data, inputOff); - - if (this.bufferOff === this.buffer.length) - outputOff += this._flushBuffer(out, outputOff); - } - - // Write blocks - var max = data.length - ((data.length - inputOff) % this.blockSize); - for (; inputOff < max; inputOff += this.blockSize) { - this._update(data, inputOff, out, outputOff); - outputOff += this.blockSize; - } - - // Queue rest - for (; inputOff < data.length; inputOff++, this.bufferOff++) - this.buffer[this.bufferOff] = data[inputOff]; - - return out; -}; - -Cipher.prototype._updateDecrypt = function _updateDecrypt(data) { - var inputOff = 0; - var outputOff = 0; - - var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1; - var out = new Array(count * this.blockSize); - - // TODO(indutny): optimize it, this is far from optimal - for (; count > 0; count--) { - inputOff += this._buffer(data, inputOff); - outputOff += this._flushBuffer(out, outputOff); - } - - // Buffer rest of the input - inputOff += this._buffer(data, inputOff); - - return out; -}; - -Cipher.prototype.final = function final(buffer) { - var first; - if (buffer) - first = this.update(buffer); - - var last; - if (this.type === 'encrypt') - last = this._finalEncrypt(); - else - last = this._finalDecrypt(); - - if (first) - return first.concat(last); - else - return last; -}; - -Cipher.prototype._pad = function _pad(buffer, off) { - if (off === 0) - return false; - - while (off < buffer.length) - buffer[off++] = 0; - - return true; -}; - -Cipher.prototype._finalEncrypt = function _finalEncrypt() { - if (!this._pad(this.buffer, this.bufferOff)) - return []; - - var out = new Array(this.blockSize); - this._update(this.buffer, 0, out, 0); - return out; -}; - -Cipher.prototype._unpad = function _unpad(buffer) { - return buffer; -}; - -Cipher.prototype._finalDecrypt = function _finalDecrypt() { - assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt'); - var out = new Array(this.blockSize); - this._flushBuffer(out, 0); - - return this._unpad(out); -}; - -},{"minimalistic-assert":268}],198:[function(require,module,exports){ -'use strict'; - -var assert = require('minimalistic-assert'); -var inherits = require('inherits'); - -var des = require('../des'); -var utils = des.utils; -var Cipher = des.Cipher; - -function DESState() { - this.tmp = new Array(2); - this.keys = null; -} - -function DES(options) { - Cipher.call(this, options); - - var state = new DESState(); - this._desState = state; - - this.deriveKeys(state, options.key); -} -inherits(DES, Cipher); -module.exports = DES; - -DES.create = function create(options) { - return new DES(options); -}; - -var shiftTable = [ - 1, 1, 2, 2, 2, 2, 2, 2, - 1, 2, 2, 2, 2, 2, 2, 1 -]; - -DES.prototype.deriveKeys = function deriveKeys(state, key) { - state.keys = new Array(16 * 2); - - assert.equal(key.length, this.blockSize, 'Invalid key length'); - - var kL = utils.readUInt32BE(key, 0); - var kR = utils.readUInt32BE(key, 4); - - utils.pc1(kL, kR, state.tmp, 0); - kL = state.tmp[0]; - kR = state.tmp[1]; - for (var i = 0; i < state.keys.length; i += 2) { - var shift = shiftTable[i >>> 1]; - kL = utils.r28shl(kL, shift); - kR = utils.r28shl(kR, shift); - utils.pc2(kL, kR, state.keys, i); - } -}; - -DES.prototype._update = function _update(inp, inOff, out, outOff) { - var state = this._desState; - - var l = utils.readUInt32BE(inp, inOff); - var r = utils.readUInt32BE(inp, inOff + 4); - - // Initial Permutation - utils.ip(l, r, state.tmp, 0); - l = state.tmp[0]; - r = state.tmp[1]; - - if (this.type === 'encrypt') - this._encrypt(state, l, r, state.tmp, 0); - else - this._decrypt(state, l, r, state.tmp, 0); - - l = state.tmp[0]; - r = state.tmp[1]; - - utils.writeUInt32BE(out, l, outOff); - utils.writeUInt32BE(out, r, outOff + 4); -}; - -DES.prototype._pad = function _pad(buffer, off) { - var value = buffer.length - off; - for (var i = off; i < buffer.length; i++) - buffer[i] = value; - - return true; -}; - -DES.prototype._unpad = function _unpad(buffer) { - var pad = buffer[buffer.length - 1]; - for (var i = buffer.length - pad; i < buffer.length; i++) - assert.equal(buffer[i], pad); - - return buffer.slice(0, buffer.length - pad); -}; - -DES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) { - var l = lStart; - var r = rStart; - - // Apply f() x16 times - for (var i = 0; i < state.keys.length; i += 2) { - var keyL = state.keys[i]; - var keyR = state.keys[i + 1]; - - // f(r, k) - utils.expand(r, state.tmp, 0); - - keyL ^= state.tmp[0]; - keyR ^= state.tmp[1]; - var s = utils.substitute(keyL, keyR); - var f = utils.permute(s); - - var t = r; - r = (l ^ f) >>> 0; - l = t; - } - - // Reverse Initial Permutation - utils.rip(r, l, out, off); -}; - -DES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) { - var l = rStart; - var r = lStart; - - // Apply f() x16 times - for (var i = state.keys.length - 2; i >= 0; i -= 2) { - var keyL = state.keys[i]; - var keyR = state.keys[i + 1]; - - // f(r, k) - utils.expand(l, state.tmp, 0); - - keyL ^= state.tmp[0]; - keyR ^= state.tmp[1]; - var s = utils.substitute(keyL, keyR); - var f = utils.permute(s); - - var t = l; - l = (r ^ f) >>> 0; - r = t; - } - - // Reverse Initial Permutation - utils.rip(l, r, out, off); -}; - -},{"../des":195,"inherits":262,"minimalistic-assert":268}],199:[function(require,module,exports){ -'use strict'; - -var assert = require('minimalistic-assert'); -var inherits = require('inherits'); - -var des = require('../des'); -var Cipher = des.Cipher; -var DES = des.DES; - -function EDEState(type, key) { - assert.equal(key.length, 24, 'Invalid key length'); - - var k1 = key.slice(0, 8); - var k2 = key.slice(8, 16); - var k3 = key.slice(16, 24); - - if (type === 'encrypt') { - this.ciphers = [ - DES.create({ type: 'encrypt', key: k1 }), - DES.create({ type: 'decrypt', key: k2 }), - DES.create({ type: 'encrypt', key: k3 }) - ]; - } else { - this.ciphers = [ - DES.create({ type: 'decrypt', key: k3 }), - DES.create({ type: 'encrypt', key: k2 }), - DES.create({ type: 'decrypt', key: k1 }) - ]; - } -} - -function EDE(options) { - Cipher.call(this, options); - - var state = new EDEState(this.type, this.options.key); - this._edeState = state; -} -inherits(EDE, Cipher); - -module.exports = EDE; - -EDE.create = function create(options) { - return new EDE(options); -}; - -EDE.prototype._update = function _update(inp, inOff, out, outOff) { - var state = this._edeState; - - state.ciphers[0]._update(inp, inOff, out, outOff); - state.ciphers[1]._update(out, outOff, out, outOff); - state.ciphers[2]._update(out, outOff, out, outOff); -}; - -EDE.prototype._pad = DES.prototype._pad; -EDE.prototype._unpad = DES.prototype._unpad; - -},{"../des":195,"inherits":262,"minimalistic-assert":268}],200:[function(require,module,exports){ -'use strict'; - -exports.readUInt32BE = function readUInt32BE(bytes, off) { - var res = (bytes[0 + off] << 24) | - (bytes[1 + off] << 16) | - (bytes[2 + off] << 8) | - bytes[3 + off]; - return res >>> 0; -}; - -exports.writeUInt32BE = function writeUInt32BE(bytes, value, off) { - bytes[0 + off] = value >>> 24; - bytes[1 + off] = (value >>> 16) & 0xff; - bytes[2 + off] = (value >>> 8) & 0xff; - bytes[3 + off] = value & 0xff; -}; - -exports.ip = function ip(inL, inR, out, off) { - var outL = 0; - var outR = 0; - - for (var i = 6; i >= 0; i -= 2) { - for (var j = 0; j <= 24; j += 8) { - outL <<= 1; - outL |= (inR >>> (j + i)) & 1; - } - for (var j = 0; j <= 24; j += 8) { - outL <<= 1; - outL |= (inL >>> (j + i)) & 1; - } - } - - for (var i = 6; i >= 0; i -= 2) { - for (var j = 1; j <= 25; j += 8) { - outR <<= 1; - outR |= (inR >>> (j + i)) & 1; - } - for (var j = 1; j <= 25; j += 8) { - outR <<= 1; - outR |= (inL >>> (j + i)) & 1; - } - } - - out[off + 0] = outL >>> 0; - out[off + 1] = outR >>> 0; -}; - -exports.rip = function rip(inL, inR, out, off) { - var outL = 0; - var outR = 0; - - for (var i = 0; i < 4; i++) { - for (var j = 24; j >= 0; j -= 8) { - outL <<= 1; - outL |= (inR >>> (j + i)) & 1; - outL <<= 1; - outL |= (inL >>> (j + i)) & 1; - } - } - for (var i = 4; i < 8; i++) { - for (var j = 24; j >= 0; j -= 8) { - outR <<= 1; - outR |= (inR >>> (j + i)) & 1; - outR <<= 1; - outR |= (inL >>> (j + i)) & 1; - } - } - - out[off + 0] = outL >>> 0; - out[off + 1] = outR >>> 0; -}; - -exports.pc1 = function pc1(inL, inR, out, off) { - var outL = 0; - var outR = 0; - - // 7, 15, 23, 31, 39, 47, 55, 63 - // 6, 14, 22, 30, 39, 47, 55, 63 - // 5, 13, 21, 29, 39, 47, 55, 63 - // 4, 12, 20, 28 - for (var i = 7; i >= 5; i--) { - for (var j = 0; j <= 24; j += 8) { - outL <<= 1; - outL |= (inR >> (j + i)) & 1; - } - for (var j = 0; j <= 24; j += 8) { - outL <<= 1; - outL |= (inL >> (j + i)) & 1; - } - } - for (var j = 0; j <= 24; j += 8) { - outL <<= 1; - outL |= (inR >> (j + i)) & 1; - } - - // 1, 9, 17, 25, 33, 41, 49, 57 - // 2, 10, 18, 26, 34, 42, 50, 58 - // 3, 11, 19, 27, 35, 43, 51, 59 - // 36, 44, 52, 60 - for (var i = 1; i <= 3; i++) { - for (var j = 0; j <= 24; j += 8) { - outR <<= 1; - outR |= (inR >> (j + i)) & 1; - } - for (var j = 0; j <= 24; j += 8) { - outR <<= 1; - outR |= (inL >> (j + i)) & 1; - } - } - for (var j = 0; j <= 24; j += 8) { - outR <<= 1; - outR |= (inL >> (j + i)) & 1; - } - - out[off + 0] = outL >>> 0; - out[off + 1] = outR >>> 0; -}; - -exports.r28shl = function r28shl(num, shift) { - return ((num << shift) & 0xfffffff) | (num >>> (28 - shift)); -}; - -var pc2table = [ - // inL => outL - 14, 11, 17, 4, 27, 23, 25, 0, - 13, 22, 7, 18, 5, 9, 16, 24, - 2, 20, 12, 21, 1, 8, 15, 26, - - // inR => outR - 15, 4, 25, 19, 9, 1, 26, 16, - 5, 11, 23, 8, 12, 7, 17, 0, - 22, 3, 10, 14, 6, 20, 27, 24 -]; - -exports.pc2 = function pc2(inL, inR, out, off) { - var outL = 0; - var outR = 0; - - var len = pc2table.length >>> 1; - for (var i = 0; i < len; i++) { - outL <<= 1; - outL |= (inL >>> pc2table[i]) & 0x1; - } - for (var i = len; i < pc2table.length; i++) { - outR <<= 1; - outR |= (inR >>> pc2table[i]) & 0x1; - } - - out[off + 0] = outL >>> 0; - out[off + 1] = outR >>> 0; -}; - -exports.expand = function expand(r, out, off) { - var outL = 0; - var outR = 0; - - outL = ((r & 1) << 5) | (r >>> 27); - for (var i = 23; i >= 15; i -= 4) { - outL <<= 6; - outL |= (r >>> i) & 0x3f; - } - for (var i = 11; i >= 3; i -= 4) { - outR |= (r >>> i) & 0x3f; - outR <<= 6; - } - outR |= ((r & 0x1f) << 1) | (r >>> 31); - - out[off + 0] = outL >>> 0; - out[off + 1] = outR >>> 0; -}; - -var sTable = [ - 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1, - 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8, - 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7, - 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13, - - 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14, - 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5, - 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2, - 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9, - - 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10, - 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1, - 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7, - 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12, - - 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3, - 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9, - 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8, - 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14, - - 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1, - 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6, - 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13, - 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3, - - 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5, - 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8, - 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10, - 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13, - - 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10, - 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6, - 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7, - 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12, - - 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4, - 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2, - 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13, - 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11 -]; - -exports.substitute = function substitute(inL, inR) { - var out = 0; - for (var i = 0; i < 4; i++) { - var b = (inL >>> (18 - i * 6)) & 0x3f; - var sb = sTable[i * 0x40 + b]; - - out <<= 4; - out |= sb; - } - for (var i = 0; i < 4; i++) { - var b = (inR >>> (18 - i * 6)) & 0x3f; - var sb = sTable[4 * 0x40 + i * 0x40 + b]; - - out <<= 4; - out |= sb; - } - return out >>> 0; -}; - -var permuteTable = [ - 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, - 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7 -]; - -exports.permute = function permute(num) { - var out = 0; - for (var i = 0; i < permuteTable.length; i++) { - out <<= 1; - out |= (num >>> permuteTable[i]) & 0x1; - } - return out >>> 0; -}; - -exports.padSplit = function padSplit(num, size, group) { - var str = num.toString(2); - while (str.length < size) - str = '0' + str; - - var out = []; - for (var i = 0; i < size; i += group) - out.push(str.slice(i, i + group)); - return out.join(' '); -}; - -},{}],201:[function(require,module,exports){ -(function (Buffer){ -var generatePrime = require('./lib/generatePrime') -var primes = require('./lib/primes.json') - -var DH = require('./lib/dh') - -function getDiffieHellman (mod) { - var prime = new Buffer(primes[mod].prime, 'hex') - var gen = new Buffer(primes[mod].gen, 'hex') - - return new DH(prime, gen) -} - -var ENCODINGS = { - 'binary': true, 'hex': true, 'base64': true -} - -function createDiffieHellman (prime, enc, generator, genc) { - if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) { - return createDiffieHellman(prime, 'binary', enc, generator) - } - - enc = enc || 'binary' - genc = genc || 'binary' - generator = generator || new Buffer([2]) - - if (!Buffer.isBuffer(generator)) { - generator = new Buffer(generator, genc) - } - - if (typeof prime === 'number') { - return new DH(generatePrime(prime, generator), generator, true) - } - - if (!Buffer.isBuffer(prime)) { - prime = new Buffer(prime, enc) - } - - return new DH(prime, generator, true) -} - -exports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman -exports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman - -}).call(this,require("buffer").Buffer) -},{"./lib/dh":202,"./lib/generatePrime":203,"./lib/primes.json":204,"buffer":182}],202:[function(require,module,exports){ -(function (Buffer){ -var BN = require('bn.js'); -var MillerRabin = require('miller-rabin'); -var millerRabin = new MillerRabin(); -var TWENTYFOUR = new BN(24); -var ELEVEN = new BN(11); -var TEN = new BN(10); -var THREE = new BN(3); -var SEVEN = new BN(7); -var primes = require('./generatePrime'); -var randomBytes = require('randombytes'); -module.exports = DH; - -function setPublicKey(pub, enc) { - enc = enc || 'utf8'; - if (!Buffer.isBuffer(pub)) { - pub = new Buffer(pub, enc); - } - this._pub = new BN(pub); - return this; -} - -function setPrivateKey(priv, enc) { - enc = enc || 'utf8'; - if (!Buffer.isBuffer(priv)) { - priv = new Buffer(priv, enc); - } - this._priv = new BN(priv); - return this; -} - -var primeCache = {}; -function checkPrime(prime, generator) { - var gen = generator.toString('hex'); - var hex = [gen, prime.toString(16)].join('_'); - if (hex in primeCache) { - return primeCache[hex]; - } - var error = 0; - - if (prime.isEven() || - !primes.simpleSieve || - !primes.fermatTest(prime) || - !millerRabin.test(prime)) { - //not a prime so +1 - error += 1; - - if (gen === '02' || gen === '05') { - // we'd be able to check the generator - // it would fail so +8 - error += 8; - } else { - //we wouldn't be able to test the generator - // so +4 - error += 4; - } - primeCache[hex] = error; - return error; - } - if (!millerRabin.test(prime.shrn(1))) { - //not a safe prime - error += 2; - } - var rem; - switch (gen) { - case '02': - if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) { - // unsuidable generator - error += 8; - } - break; - case '05': - rem = prime.mod(TEN); - if (rem.cmp(THREE) && rem.cmp(SEVEN)) { - // prime mod 10 needs to equal 3 or 7 - error += 8; - } - break; - default: - error += 4; - } - primeCache[hex] = error; - return error; -} - -function DH(prime, generator, malleable) { - this.setGenerator(generator); - this.__prime = new BN(prime); - this._prime = BN.mont(this.__prime); - this._primeLen = prime.length; - this._pub = undefined; - this._priv = undefined; - this._primeCode = undefined; - if (malleable) { - this.setPublicKey = setPublicKey; - this.setPrivateKey = setPrivateKey; - } else { - this._primeCode = 8; - } -} -Object.defineProperty(DH.prototype, 'verifyError', { - enumerable: true, - get: function () { - if (typeof this._primeCode !== 'number') { - this._primeCode = checkPrime(this.__prime, this.__gen); - } - return this._primeCode; - } -}); -DH.prototype.generateKeys = function () { - if (!this._priv) { - this._priv = new BN(randomBytes(this._primeLen)); - } - this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed(); - return this.getPublicKey(); -}; - -DH.prototype.computeSecret = function (other) { - other = new BN(other); - other = other.toRed(this._prime); - var secret = other.redPow(this._priv).fromRed(); - var out = new Buffer(secret.toArray()); - var prime = this.getPrime(); - if (out.length < prime.length) { - var front = new Buffer(prime.length - out.length); - front.fill(0); - out = Buffer.concat([front, out]); - } - return out; -}; - -DH.prototype.getPublicKey = function getPublicKey(enc) { - return formatReturnValue(this._pub, enc); -}; - -DH.prototype.getPrivateKey = function getPrivateKey(enc) { - return formatReturnValue(this._priv, enc); -}; - -DH.prototype.getPrime = function (enc) { - return formatReturnValue(this.__prime, enc); -}; - -DH.prototype.getGenerator = function (enc) { - return formatReturnValue(this._gen, enc); -}; - -DH.prototype.setGenerator = function (gen, enc) { - enc = enc || 'utf8'; - if (!Buffer.isBuffer(gen)) { - gen = new Buffer(gen, enc); - } - this.__gen = gen; - this._gen = new BN(gen); - return this; -}; - -function formatReturnValue(bn, enc) { - var buf = new Buffer(bn.toArray()); - if (!enc) { - return buf; - } else { - return buf.toString(enc); - } -} - -}).call(this,require("buffer").Buffer) -},{"./generatePrime":203,"bn.js":147,"buffer":182,"miller-rabin":267,"randombytes":298}],203:[function(require,module,exports){ -var randomBytes = require('randombytes'); -module.exports = findPrime; -findPrime.simpleSieve = simpleSieve; -findPrime.fermatTest = fermatTest; -var BN = require('bn.js'); -var TWENTYFOUR = new BN(24); -var MillerRabin = require('miller-rabin'); -var millerRabin = new MillerRabin(); -var ONE = new BN(1); -var TWO = new BN(2); -var FIVE = new BN(5); -var SIXTEEN = new BN(16); -var EIGHT = new BN(8); -var TEN = new BN(10); -var THREE = new BN(3); -var SEVEN = new BN(7); -var ELEVEN = new BN(11); -var FOUR = new BN(4); -var TWELVE = new BN(12); -var primes = null; - -function _getPrimes() { - if (primes !== null) - return primes; - - var limit = 0x100000; - var res = []; - res[0] = 2; - for (var i = 1, k = 3; k < limit; k += 2) { - var sqrt = Math.ceil(Math.sqrt(k)); - for (var j = 0; j < i && res[j] <= sqrt; j++) - if (k % res[j] === 0) - break; - - if (i !== j && res[j] <= sqrt) - continue; - - res[i++] = k; - } - primes = res; - return res; -} - -function simpleSieve(p) { - var primes = _getPrimes(); - - for (var i = 0; i < primes.length; i++) - if (p.modn(primes[i]) === 0) { - if (p.cmpn(primes[i]) === 0) { - return true; - } else { - return false; - } - } - - return true; -} - -function fermatTest(p) { - var red = BN.mont(p); - return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0; -} - -function findPrime(bits, gen) { - if (bits < 16) { - // this is what openssl does - if (gen === 2 || gen === 5) { - return new BN([0x8c, 0x7b]); - } else { - return new BN([0x8c, 0x27]); - } - } - gen = new BN(gen); - - var num, n2; - - while (true) { - num = new BN(randomBytes(Math.ceil(bits / 8))); - while (num.bitLength() > bits) { - num.ishrn(1); - } - if (num.isEven()) { - num.iadd(ONE); - } - if (!num.testn(1)) { - num.iadd(TWO); - } - if (!gen.cmp(TWO)) { - while (num.mod(TWENTYFOUR).cmp(ELEVEN)) { - num.iadd(FOUR); - } - } else if (!gen.cmp(FIVE)) { - while (num.mod(TEN).cmp(THREE)) { - num.iadd(FOUR); - } - } - n2 = num.shrn(1); - if (simpleSieve(n2) && simpleSieve(num) && - fermatTest(n2) && fermatTest(num) && - millerRabin.test(n2) && millerRabin.test(num)) { - return num; - } - } - -} - -},{"bn.js":147,"miller-rabin":267,"randombytes":298}],204:[function(require,module,exports){ -module.exports={ - "modp1": { - "gen": "02", - "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff" - }, - "modp2": { - "gen": "02", - "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff" - }, - "modp5": { - "gen": "02", - "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff" - }, - "modp14": { - "gen": "02", - "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff" - }, - "modp15": { - "gen": "02", - "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff" - }, - "modp16": { - "gen": "02", - "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff" - }, - "modp17": { - "gen": "02", - "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff" - }, - "modp18": { - "gen": "02", - "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff" - } -} -},{}],205:[function(require,module,exports){ -'use strict'; - -var elliptic = exports; - -elliptic.version = require('../package.json').version; -elliptic.utils = require('./elliptic/utils'); -elliptic.rand = require('brorand'); -elliptic.curve = require('./elliptic/curve'); -elliptic.curves = require('./elliptic/curves'); - -// Protocols -elliptic.ec = require('./elliptic/ec'); -elliptic.eddsa = require('./elliptic/eddsa'); - -},{"../package.json":220,"./elliptic/curve":208,"./elliptic/curves":211,"./elliptic/ec":212,"./elliptic/eddsa":215,"./elliptic/utils":219,"brorand":148}],206:[function(require,module,exports){ -'use strict'; - -var BN = require('bn.js'); -var utils = require('../utils'); -var getNAF = utils.getNAF; -var getJSF = utils.getJSF; -var assert = utils.assert; - -function BaseCurve(type, conf) { - this.type = type; - this.p = new BN(conf.p, 16); - - // Use Montgomery, when there is no fast reduction for the prime - this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p); - - // Useful for many curves - this.zero = new BN(0).toRed(this.red); - this.one = new BN(1).toRed(this.red); - this.two = new BN(2).toRed(this.red); - - // Curve configuration, optional - this.n = conf.n && new BN(conf.n, 16); - this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed); - - // Temporary arrays - this._wnafT1 = new Array(4); - this._wnafT2 = new Array(4); - this._wnafT3 = new Array(4); - this._wnafT4 = new Array(4); - - // Generalized Greg Maxwell's trick - var adjustCount = this.n && this.p.div(this.n); - if (!adjustCount || adjustCount.cmpn(100) > 0) { - this.redN = null; - } else { - this._maxwellTrick = true; - this.redN = this.n.toRed(this.red); - } -} -module.exports = BaseCurve; - -BaseCurve.prototype.point = function point() { - throw new Error('Not implemented'); -}; - -BaseCurve.prototype.validate = function validate() { - throw new Error('Not implemented'); -}; - -BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) { - assert(p.precomputed); - var doubles = p._getDoubles(); - - var naf = getNAF(k, 1); - var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1); - I /= 3; - - // Translate into more windowed form - var repr = []; - for (var j = 0; j < naf.length; j += doubles.step) { - var nafW = 0; - for (var k = j + doubles.step - 1; k >= j; k--) - nafW = (nafW << 1) + naf[k]; - repr.push(nafW); - } - - var a = this.jpoint(null, null, null); - var b = this.jpoint(null, null, null); - for (var i = I; i > 0; i--) { - for (var j = 0; j < repr.length; j++) { - var nafW = repr[j]; - if (nafW === i) - b = b.mixedAdd(doubles.points[j]); - else if (nafW === -i) - b = b.mixedAdd(doubles.points[j].neg()); - } - a = a.add(b); - } - return a.toP(); -}; - -BaseCurve.prototype._wnafMul = function _wnafMul(p, k) { - var w = 4; - - // Precompute window - var nafPoints = p._getNAFPoints(w); - w = nafPoints.wnd; - var wnd = nafPoints.points; - - // Get NAF form - var naf = getNAF(k, w); - - // Add `this`*(N+1) for every w-NAF index - var acc = this.jpoint(null, null, null); - for (var i = naf.length - 1; i >= 0; i--) { - // Count zeroes - for (var k = 0; i >= 0 && naf[i] === 0; i--) - k++; - if (i >= 0) - k++; - acc = acc.dblp(k); - - if (i < 0) - break; - var z = naf[i]; - assert(z !== 0); - if (p.type === 'affine') { - // J +- P - if (z > 0) - acc = acc.mixedAdd(wnd[(z - 1) >> 1]); - else - acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg()); - } else { - // J +- J - if (z > 0) - acc = acc.add(wnd[(z - 1) >> 1]); - else - acc = acc.add(wnd[(-z - 1) >> 1].neg()); - } - } - return p.type === 'affine' ? acc.toP() : acc; -}; - -BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW, - points, - coeffs, - len, - jacobianResult) { - var wndWidth = this._wnafT1; - var wnd = this._wnafT2; - var naf = this._wnafT3; - - // Fill all arrays - var max = 0; - for (var i = 0; i < len; i++) { - var p = points[i]; - var nafPoints = p._getNAFPoints(defW); - wndWidth[i] = nafPoints.wnd; - wnd[i] = nafPoints.points; - } - - // Comb small window NAFs - for (var i = len - 1; i >= 1; i -= 2) { - var a = i - 1; - var b = i; - if (wndWidth[a] !== 1 || wndWidth[b] !== 1) { - naf[a] = getNAF(coeffs[a], wndWidth[a]); - naf[b] = getNAF(coeffs[b], wndWidth[b]); - max = Math.max(naf[a].length, max); - max = Math.max(naf[b].length, max); - continue; - } - - var comb = [ - points[a], /* 1 */ - null, /* 3 */ - null, /* 5 */ - points[b] /* 7 */ - ]; - - // Try to avoid Projective points, if possible - if (points[a].y.cmp(points[b].y) === 0) { - comb[1] = points[a].add(points[b]); - comb[2] = points[a].toJ().mixedAdd(points[b].neg()); - } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) { - comb[1] = points[a].toJ().mixedAdd(points[b]); - comb[2] = points[a].add(points[b].neg()); - } else { - comb[1] = points[a].toJ().mixedAdd(points[b]); - comb[2] = points[a].toJ().mixedAdd(points[b].neg()); - } - - var index = [ - -3, /* -1 -1 */ - -1, /* -1 0 */ - -5, /* -1 1 */ - -7, /* 0 -1 */ - 0, /* 0 0 */ - 7, /* 0 1 */ - 5, /* 1 -1 */ - 1, /* 1 0 */ - 3 /* 1 1 */ - ]; - - var jsf = getJSF(coeffs[a], coeffs[b]); - max = Math.max(jsf[0].length, max); - naf[a] = new Array(max); - naf[b] = new Array(max); - for (var j = 0; j < max; j++) { - var ja = jsf[0][j] | 0; - var jb = jsf[1][j] | 0; - - naf[a][j] = index[(ja + 1) * 3 + (jb + 1)]; - naf[b][j] = 0; - wnd[a] = comb; - } - } - - var acc = this.jpoint(null, null, null); - var tmp = this._wnafT4; - for (var i = max; i >= 0; i--) { - var k = 0; - - while (i >= 0) { - var zero = true; - for (var j = 0; j < len; j++) { - tmp[j] = naf[j][i] | 0; - if (tmp[j] !== 0) - zero = false; - } - if (!zero) - break; - k++; - i--; - } - if (i >= 0) - k++; - acc = acc.dblp(k); - if (i < 0) - break; - - for (var j = 0; j < len; j++) { - var z = tmp[j]; - var p; - if (z === 0) - continue; - else if (z > 0) - p = wnd[j][(z - 1) >> 1]; - else if (z < 0) - p = wnd[j][(-z - 1) >> 1].neg(); - - if (p.type === 'affine') - acc = acc.mixedAdd(p); - else - acc = acc.add(p); - } - } - // Zeroify references - for (var i = 0; i < len; i++) - wnd[i] = null; - - if (jacobianResult) - return acc; - else - return acc.toP(); -}; - -function BasePoint(curve, type) { - this.curve = curve; - this.type = type; - this.precomputed = null; -} -BaseCurve.BasePoint = BasePoint; - -BasePoint.prototype.eq = function eq(/*other*/) { - throw new Error('Not implemented'); -}; - -BasePoint.prototype.validate = function validate() { - return this.curve.validate(this); -}; - -BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) { - bytes = utils.toArray(bytes, enc); - - var len = this.p.byteLength(); - - // uncompressed, hybrid-odd, hybrid-even - if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) && - bytes.length - 1 === 2 * len) { - if (bytes[0] === 0x06) - assert(bytes[bytes.length - 1] % 2 === 0); - else if (bytes[0] === 0x07) - assert(bytes[bytes.length - 1] % 2 === 1); - - var res = this.point(bytes.slice(1, 1 + len), - bytes.slice(1 + len, 1 + 2 * len)); - - return res; - } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) && - bytes.length - 1 === len) { - return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03); - } - throw new Error('Unknown point format'); -}; - -BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) { - return this.encode(enc, true); -}; - -BasePoint.prototype._encode = function _encode(compact) { - var len = this.curve.p.byteLength(); - var x = this.getX().toArray('be', len); - - if (compact) - return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x); - - return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ; -}; - -BasePoint.prototype.encode = function encode(enc, compact) { - return utils.encode(this._encode(compact), enc); -}; - -BasePoint.prototype.precompute = function precompute(power) { - if (this.precomputed) - return this; - - var precomputed = { - doubles: null, - naf: null, - beta: null - }; - precomputed.naf = this._getNAFPoints(8); - precomputed.doubles = this._getDoubles(4, power); - precomputed.beta = this._getBeta(); - this.precomputed = precomputed; - - return this; -}; - -BasePoint.prototype._hasDoubles = function _hasDoubles(k) { - if (!this.precomputed) - return false; - - var doubles = this.precomputed.doubles; - if (!doubles) - return false; - - return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step); -}; - -BasePoint.prototype._getDoubles = function _getDoubles(step, power) { - if (this.precomputed && this.precomputed.doubles) - return this.precomputed.doubles; - - var doubles = [ this ]; - var acc = this; - for (var i = 0; i < power; i += step) { - for (var j = 0; j < step; j++) - acc = acc.dbl(); - doubles.push(acc); - } - return { - step: step, - points: doubles - }; -}; - -BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) { - if (this.precomputed && this.precomputed.naf) - return this.precomputed.naf; - - var res = [ this ]; - var max = (1 << wnd) - 1; - var dbl = max === 1 ? null : this.dbl(); - for (var i = 1; i < max; i++) - res[i] = res[i - 1].add(dbl); - return { - wnd: wnd, - points: res - }; -}; - -BasePoint.prototype._getBeta = function _getBeta() { - return null; -}; - -BasePoint.prototype.dblp = function dblp(k) { - var r = this; - for (var i = 0; i < k; i++) - r = r.dbl(); - return r; -}; - -},{"../utils":219,"bn.js":147}],207:[function(require,module,exports){ -'use strict'; - -var utils = require('../utils'); -var BN = require('bn.js'); -var inherits = require('inherits'); -var Base = require('./base'); - -var assert = utils.assert; - -function EdwardsCurve(conf) { - // NOTE: Important as we are creating point in Base.call() - this.twisted = (conf.a | 0) !== 1; - this.mOneA = this.twisted && (conf.a | 0) === -1; - this.extended = this.mOneA; - - Base.call(this, 'edwards', conf); - - this.a = new BN(conf.a, 16).umod(this.red.m); - this.a = this.a.toRed(this.red); - this.c = new BN(conf.c, 16).toRed(this.red); - this.c2 = this.c.redSqr(); - this.d = new BN(conf.d, 16).toRed(this.red); - this.dd = this.d.redAdd(this.d); - - assert(!this.twisted || this.c.fromRed().cmpn(1) === 0); - this.oneC = (conf.c | 0) === 1; -} -inherits(EdwardsCurve, Base); -module.exports = EdwardsCurve; - -EdwardsCurve.prototype._mulA = function _mulA(num) { - if (this.mOneA) - return num.redNeg(); - else - return this.a.redMul(num); -}; - -EdwardsCurve.prototype._mulC = function _mulC(num) { - if (this.oneC) - return num; - else - return this.c.redMul(num); -}; - -// Just for compatibility with Short curve -EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) { - return this.point(x, y, z, t); -}; - -EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) { - x = new BN(x, 16); - if (!x.red) - x = x.toRed(this.red); - - var x2 = x.redSqr(); - var rhs = this.c2.redSub(this.a.redMul(x2)); - var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2)); - - var y2 = rhs.redMul(lhs.redInvm()); - var y = y2.redSqrt(); - if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) - throw new Error('invalid point'); - - var isOdd = y.fromRed().isOdd(); - if (odd && !isOdd || !odd && isOdd) - y = y.redNeg(); - - return this.point(x, y); -}; - -EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) { - y = new BN(y, 16); - if (!y.red) - y = y.toRed(this.red); - - // x^2 = (y^2 - c^2) / (c^2 d y^2 - a) - var y2 = y.redSqr(); - var lhs = y2.redSub(this.c2); - var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a); - var x2 = lhs.redMul(rhs.redInvm()); - - if (x2.cmp(this.zero) === 0) { - if (odd) - throw new Error('invalid point'); - else - return this.point(this.zero, y); - } - - var x = x2.redSqrt(); - if (x.redSqr().redSub(x2).cmp(this.zero) !== 0) - throw new Error('invalid point'); - - if (x.fromRed().isOdd() !== odd) - x = x.redNeg(); - - return this.point(x, y); -}; - -EdwardsCurve.prototype.validate = function validate(point) { - if (point.isInfinity()) - return true; - - // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2) - point.normalize(); - - var x2 = point.x.redSqr(); - var y2 = point.y.redSqr(); - var lhs = x2.redMul(this.a).redAdd(y2); - var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2))); - - return lhs.cmp(rhs) === 0; -}; - -function Point(curve, x, y, z, t) { - Base.BasePoint.call(this, curve, 'projective'); - if (x === null && y === null && z === null) { - this.x = this.curve.zero; - this.y = this.curve.one; - this.z = this.curve.one; - this.t = this.curve.zero; - this.zOne = true; - } else { - this.x = new BN(x, 16); - this.y = new BN(y, 16); - this.z = z ? new BN(z, 16) : this.curve.one; - this.t = t && new BN(t, 16); - if (!this.x.red) - this.x = this.x.toRed(this.curve.red); - if (!this.y.red) - this.y = this.y.toRed(this.curve.red); - if (!this.z.red) - this.z = this.z.toRed(this.curve.red); - if (this.t && !this.t.red) - this.t = this.t.toRed(this.curve.red); - this.zOne = this.z === this.curve.one; - - // Use extended coordinates - if (this.curve.extended && !this.t) { - this.t = this.x.redMul(this.y); - if (!this.zOne) - this.t = this.t.redMul(this.z.redInvm()); - } - } -} -inherits(Point, Base.BasePoint); - -EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) { - return Point.fromJSON(this, obj); -}; - -EdwardsCurve.prototype.point = function point(x, y, z, t) { - return new Point(this, x, y, z, t); -}; - -Point.fromJSON = function fromJSON(curve, obj) { - return new Point(curve, obj[0], obj[1], obj[2]); -}; - -Point.prototype.inspect = function inspect() { - if (this.isInfinity()) - return ''; - return ''; -}; - -Point.prototype.isInfinity = function isInfinity() { - // XXX This code assumes that zero is always zero in red - return this.x.cmpn(0) === 0 && - (this.y.cmp(this.z) === 0 || - (this.zOne && this.y.cmp(this.curve.c) === 0)); -}; - -Point.prototype._extDbl = function _extDbl() { - // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html - // #doubling-dbl-2008-hwcd - // 4M + 4S - - // A = X1^2 - var a = this.x.redSqr(); - // B = Y1^2 - var b = this.y.redSqr(); - // C = 2 * Z1^2 - var c = this.z.redSqr(); - c = c.redIAdd(c); - // D = a * A - var d = this.curve._mulA(a); - // E = (X1 + Y1)^2 - A - B - var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b); - // G = D + B - var g = d.redAdd(b); - // F = G - C - var f = g.redSub(c); - // H = D - B - var h = d.redSub(b); - // X3 = E * F - var nx = e.redMul(f); - // Y3 = G * H - var ny = g.redMul(h); - // T3 = E * H - var nt = e.redMul(h); - // Z3 = F * G - var nz = f.redMul(g); - return this.curve.point(nx, ny, nz, nt); -}; - -Point.prototype._projDbl = function _projDbl() { - // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html - // #doubling-dbl-2008-bbjlp - // #doubling-dbl-2007-bl - // and others - // Generally 3M + 4S or 2M + 4S - - // B = (X1 + Y1)^2 - var b = this.x.redAdd(this.y).redSqr(); - // C = X1^2 - var c = this.x.redSqr(); - // D = Y1^2 - var d = this.y.redSqr(); - - var nx; - var ny; - var nz; - if (this.curve.twisted) { - // E = a * C - var e = this.curve._mulA(c); - // F = E + D - var f = e.redAdd(d); - if (this.zOne) { - // X3 = (B - C - D) * (F - 2) - nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two)); - // Y3 = F * (E - D) - ny = f.redMul(e.redSub(d)); - // Z3 = F^2 - 2 * F - nz = f.redSqr().redSub(f).redSub(f); - } else { - // H = Z1^2 - var h = this.z.redSqr(); - // J = F - 2 * H - var j = f.redSub(h).redISub(h); - // X3 = (B-C-D)*J - nx = b.redSub(c).redISub(d).redMul(j); - // Y3 = F * (E - D) - ny = f.redMul(e.redSub(d)); - // Z3 = F * J - nz = f.redMul(j); - } - } else { - // E = C + D - var e = c.redAdd(d); - // H = (c * Z1)^2 - var h = this.curve._mulC(this.z).redSqr(); - // J = E - 2 * H - var j = e.redSub(h).redSub(h); - // X3 = c * (B - E) * J - nx = this.curve._mulC(b.redISub(e)).redMul(j); - // Y3 = c * E * (C - D) - ny = this.curve._mulC(e).redMul(c.redISub(d)); - // Z3 = E * J - nz = e.redMul(j); - } - return this.curve.point(nx, ny, nz); -}; - -Point.prototype.dbl = function dbl() { - if (this.isInfinity()) - return this; - - // Double in extended coordinates - if (this.curve.extended) - return this._extDbl(); - else - return this._projDbl(); -}; - -Point.prototype._extAdd = function _extAdd(p) { - // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html - // #addition-add-2008-hwcd-3 - // 8M - - // A = (Y1 - X1) * (Y2 - X2) - var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x)); - // B = (Y1 + X1) * (Y2 + X2) - var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x)); - // C = T1 * k * T2 - var c = this.t.redMul(this.curve.dd).redMul(p.t); - // D = Z1 * 2 * Z2 - var d = this.z.redMul(p.z.redAdd(p.z)); - // E = B - A - var e = b.redSub(a); - // F = D - C - var f = d.redSub(c); - // G = D + C - var g = d.redAdd(c); - // H = B + A - var h = b.redAdd(a); - // X3 = E * F - var nx = e.redMul(f); - // Y3 = G * H - var ny = g.redMul(h); - // T3 = E * H - var nt = e.redMul(h); - // Z3 = F * G - var nz = f.redMul(g); - return this.curve.point(nx, ny, nz, nt); -}; - -Point.prototype._projAdd = function _projAdd(p) { - // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html - // #addition-add-2008-bbjlp - // #addition-add-2007-bl - // 10M + 1S - - // A = Z1 * Z2 - var a = this.z.redMul(p.z); - // B = A^2 - var b = a.redSqr(); - // C = X1 * X2 - var c = this.x.redMul(p.x); - // D = Y1 * Y2 - var d = this.y.redMul(p.y); - // E = d * C * D - var e = this.curve.d.redMul(c).redMul(d); - // F = B - E - var f = b.redSub(e); - // G = B + E - var g = b.redAdd(e); - // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D) - var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d); - var nx = a.redMul(f).redMul(tmp); - var ny; - var nz; - if (this.curve.twisted) { - // Y3 = A * G * (D - a * C) - ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c))); - // Z3 = F * G - nz = f.redMul(g); - } else { - // Y3 = A * G * (D - C) - ny = a.redMul(g).redMul(d.redSub(c)); - // Z3 = c * F * G - nz = this.curve._mulC(f).redMul(g); - } - return this.curve.point(nx, ny, nz); -}; - -Point.prototype.add = function add(p) { - if (this.isInfinity()) - return p; - if (p.isInfinity()) - return this; - - if (this.curve.extended) - return this._extAdd(p); - else - return this._projAdd(p); -}; - -Point.prototype.mul = function mul(k) { - if (this._hasDoubles(k)) - return this.curve._fixedNafMul(this, k); - else - return this.curve._wnafMul(this, k); -}; - -Point.prototype.mulAdd = function mulAdd(k1, p, k2) { - return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false); -}; - -Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) { - return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true); -}; - -Point.prototype.normalize = function normalize() { - if (this.zOne) - return this; - - // Normalize coordinates - var zi = this.z.redInvm(); - this.x = this.x.redMul(zi); - this.y = this.y.redMul(zi); - if (this.t) - this.t = this.t.redMul(zi); - this.z = this.curve.one; - this.zOne = true; - return this; -}; - -Point.prototype.neg = function neg() { - return this.curve.point(this.x.redNeg(), - this.y, - this.z, - this.t && this.t.redNeg()); -}; - -Point.prototype.getX = function getX() { - this.normalize(); - return this.x.fromRed(); -}; - -Point.prototype.getY = function getY() { - this.normalize(); - return this.y.fromRed(); -}; - -Point.prototype.eq = function eq(other) { - return this === other || - this.getX().cmp(other.getX()) === 0 && - this.getY().cmp(other.getY()) === 0; -}; - -Point.prototype.eqXToP = function eqXToP(x) { - var rx = x.toRed(this.curve.red).redMul(this.z); - if (this.x.cmp(rx) === 0) - return true; - - var xc = x.clone(); - var t = this.curve.redN.redMul(this.z); - for (;;) { - xc.iadd(this.curve.n); - if (xc.cmp(this.curve.p) >= 0) - return false; - - rx.redIAdd(t); - if (this.x.cmp(rx) === 0) - return true; - } -}; - -// Compatibility with BaseCurve -Point.prototype.toP = Point.prototype.normalize; -Point.prototype.mixedAdd = Point.prototype.add; - -},{"../utils":219,"./base":206,"bn.js":147,"inherits":262}],208:[function(require,module,exports){ -'use strict'; - -var curve = exports; - -curve.base = require('./base'); -curve.short = require('./short'); -curve.mont = require('./mont'); -curve.edwards = require('./edwards'); - -},{"./base":206,"./edwards":207,"./mont":209,"./short":210}],209:[function(require,module,exports){ -'use strict'; - -var BN = require('bn.js'); -var inherits = require('inherits'); -var Base = require('./base'); - -var utils = require('../utils'); - -function MontCurve(conf) { - Base.call(this, 'mont', conf); - - this.a = new BN(conf.a, 16).toRed(this.red); - this.b = new BN(conf.b, 16).toRed(this.red); - this.i4 = new BN(4).toRed(this.red).redInvm(); - this.two = new BN(2).toRed(this.red); - this.a24 = this.i4.redMul(this.a.redAdd(this.two)); -} -inherits(MontCurve, Base); -module.exports = MontCurve; - -MontCurve.prototype.validate = function validate(point) { - var x = point.normalize().x; - var x2 = x.redSqr(); - var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x); - var y = rhs.redSqrt(); - - return y.redSqr().cmp(rhs) === 0; -}; - -function Point(curve, x, z) { - Base.BasePoint.call(this, curve, 'projective'); - if (x === null && z === null) { - this.x = this.curve.one; - this.z = this.curve.zero; - } else { - this.x = new BN(x, 16); - this.z = new BN(z, 16); - if (!this.x.red) - this.x = this.x.toRed(this.curve.red); - if (!this.z.red) - this.z = this.z.toRed(this.curve.red); - } -} -inherits(Point, Base.BasePoint); - -MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) { - return this.point(utils.toArray(bytes, enc), 1); -}; - -MontCurve.prototype.point = function point(x, z) { - return new Point(this, x, z); -}; - -MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) { - return Point.fromJSON(this, obj); -}; - -Point.prototype.precompute = function precompute() { - // No-op -}; - -Point.prototype._encode = function _encode() { - return this.getX().toArray('be', this.curve.p.byteLength()); -}; - -Point.fromJSON = function fromJSON(curve, obj) { - return new Point(curve, obj[0], obj[1] || curve.one); -}; - -Point.prototype.inspect = function inspect() { - if (this.isInfinity()) - return ''; - return ''; -}; - -Point.prototype.isInfinity = function isInfinity() { - // XXX This code assumes that zero is always zero in red - return this.z.cmpn(0) === 0; -}; - -Point.prototype.dbl = function dbl() { - // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3 - // 2M + 2S + 4A - - // A = X1 + Z1 - var a = this.x.redAdd(this.z); - // AA = A^2 - var aa = a.redSqr(); - // B = X1 - Z1 - var b = this.x.redSub(this.z); - // BB = B^2 - var bb = b.redSqr(); - // C = AA - BB - var c = aa.redSub(bb); - // X3 = AA * BB - var nx = aa.redMul(bb); - // Z3 = C * (BB + A24 * C) - var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c))); - return this.curve.point(nx, nz); -}; - -Point.prototype.add = function add() { - throw new Error('Not supported on Montgomery curve'); -}; - -Point.prototype.diffAdd = function diffAdd(p, diff) { - // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3 - // 4M + 2S + 6A - - // A = X2 + Z2 - var a = this.x.redAdd(this.z); - // B = X2 - Z2 - var b = this.x.redSub(this.z); - // C = X3 + Z3 - var c = p.x.redAdd(p.z); - // D = X3 - Z3 - var d = p.x.redSub(p.z); - // DA = D * A - var da = d.redMul(a); - // CB = C * B - var cb = c.redMul(b); - // X5 = Z1 * (DA + CB)^2 - var nx = diff.z.redMul(da.redAdd(cb).redSqr()); - // Z5 = X1 * (DA - CB)^2 - var nz = diff.x.redMul(da.redISub(cb).redSqr()); - return this.curve.point(nx, nz); -}; - -Point.prototype.mul = function mul(k) { - var t = k.clone(); - var a = this; // (N / 2) * Q + Q - var b = this.curve.point(null, null); // (N / 2) * Q - var c = this; // Q - - for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1)) - bits.push(t.andln(1)); - - for (var i = bits.length - 1; i >= 0; i--) { - if (bits[i] === 0) { - // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q - a = a.diffAdd(b, c); - // N * Q = 2 * ((N / 2) * Q + Q)) - b = b.dbl(); - } else { - // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q) - b = a.diffAdd(b, c); - // N * Q + Q = 2 * ((N / 2) * Q + Q) - a = a.dbl(); - } - } - return b; -}; - -Point.prototype.mulAdd = function mulAdd() { - throw new Error('Not supported on Montgomery curve'); -}; - -Point.prototype.jumlAdd = function jumlAdd() { - throw new Error('Not supported on Montgomery curve'); -}; - -Point.prototype.eq = function eq(other) { - return this.getX().cmp(other.getX()) === 0; -}; - -Point.prototype.normalize = function normalize() { - this.x = this.x.redMul(this.z.redInvm()); - this.z = this.curve.one; - return this; -}; - -Point.prototype.getX = function getX() { - // Normalize coordinates - this.normalize(); - - return this.x.fromRed(); -}; - -},{"../utils":219,"./base":206,"bn.js":147,"inherits":262}],210:[function(require,module,exports){ -'use strict'; - -var utils = require('../utils'); -var BN = require('bn.js'); -var inherits = require('inherits'); -var Base = require('./base'); - -var assert = utils.assert; - -function ShortCurve(conf) { - Base.call(this, 'short', conf); - - this.a = new BN(conf.a, 16).toRed(this.red); - this.b = new BN(conf.b, 16).toRed(this.red); - this.tinv = this.two.redInvm(); - - this.zeroA = this.a.fromRed().cmpn(0) === 0; - this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0; - - // If the curve is endomorphic, precalculate beta and lambda - this.endo = this._getEndomorphism(conf); - this._endoWnafT1 = new Array(4); - this._endoWnafT2 = new Array(4); -} -inherits(ShortCurve, Base); -module.exports = ShortCurve; - -ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) { - // No efficient endomorphism - if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1) - return; - - // Compute beta and lambda, that lambda * P = (beta * Px; Py) - var beta; - var lambda; - if (conf.beta) { - beta = new BN(conf.beta, 16).toRed(this.red); - } else { - var betas = this._getEndoRoots(this.p); - // Choose the smallest beta - beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1]; - beta = beta.toRed(this.red); - } - if (conf.lambda) { - lambda = new BN(conf.lambda, 16); - } else { - // Choose the lambda that is matching selected beta - var lambdas = this._getEndoRoots(this.n); - if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) { - lambda = lambdas[0]; - } else { - lambda = lambdas[1]; - assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0); - } - } - - // Get basis vectors, used for balanced length-two representation - var basis; - if (conf.basis) { - basis = conf.basis.map(function(vec) { - return { - a: new BN(vec.a, 16), - b: new BN(vec.b, 16) - }; - }); - } else { - basis = this._getEndoBasis(lambda); - } - - return { - beta: beta, - lambda: lambda, - basis: basis - }; -}; - -ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) { - // Find roots of for x^2 + x + 1 in F - // Root = (-1 +- Sqrt(-3)) / 2 - // - var red = num === this.p ? this.red : BN.mont(num); - var tinv = new BN(2).toRed(red).redInvm(); - var ntinv = tinv.redNeg(); - - var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv); - - var l1 = ntinv.redAdd(s).fromRed(); - var l2 = ntinv.redSub(s).fromRed(); - return [ l1, l2 ]; -}; - -ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) { - // aprxSqrt >= sqrt(this.n) - var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2)); - - // 3.74 - // Run EGCD, until r(L + 1) < aprxSqrt - var u = lambda; - var v = this.n.clone(); - var x1 = new BN(1); - var y1 = new BN(0); - var x2 = new BN(0); - var y2 = new BN(1); - - // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n) - var a0; - var b0; - // First vector - var a1; - var b1; - // Second vector - var a2; - var b2; - - var prevR; - var i = 0; - var r; - var x; - while (u.cmpn(0) !== 0) { - var q = v.div(u); - r = v.sub(q.mul(u)); - x = x2.sub(q.mul(x1)); - var y = y2.sub(q.mul(y1)); - - if (!a1 && r.cmp(aprxSqrt) < 0) { - a0 = prevR.neg(); - b0 = x1; - a1 = r.neg(); - b1 = x; - } else if (a1 && ++i === 2) { - break; - } - prevR = r; - - v = u; - u = r; - x2 = x1; - x1 = x; - y2 = y1; - y1 = y; - } - a2 = r.neg(); - b2 = x; - - var len1 = a1.sqr().add(b1.sqr()); - var len2 = a2.sqr().add(b2.sqr()); - if (len2.cmp(len1) >= 0) { - a2 = a0; - b2 = b0; - } - - // Normalize signs - if (a1.negative) { - a1 = a1.neg(); - b1 = b1.neg(); - } - if (a2.negative) { - a2 = a2.neg(); - b2 = b2.neg(); - } - - return [ - { a: a1, b: b1 }, - { a: a2, b: b2 } - ]; -}; - -ShortCurve.prototype._endoSplit = function _endoSplit(k) { - var basis = this.endo.basis; - var v1 = basis[0]; - var v2 = basis[1]; - - var c1 = v2.b.mul(k).divRound(this.n); - var c2 = v1.b.neg().mul(k).divRound(this.n); - - var p1 = c1.mul(v1.a); - var p2 = c2.mul(v2.a); - var q1 = c1.mul(v1.b); - var q2 = c2.mul(v2.b); - - // Calculate answer - var k1 = k.sub(p1).sub(p2); - var k2 = q1.add(q2).neg(); - return { k1: k1, k2: k2 }; -}; - -ShortCurve.prototype.pointFromX = function pointFromX(x, odd) { - x = new BN(x, 16); - if (!x.red) - x = x.toRed(this.red); - - var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b); - var y = y2.redSqrt(); - if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) - throw new Error('invalid point'); - - // XXX Is there any way to tell if the number is odd without converting it - // to non-red form? - var isOdd = y.fromRed().isOdd(); - if (odd && !isOdd || !odd && isOdd) - y = y.redNeg(); - - return this.point(x, y); -}; - -ShortCurve.prototype.validate = function validate(point) { - if (point.inf) - return true; - - var x = point.x; - var y = point.y; - - var ax = this.a.redMul(x); - var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b); - return y.redSqr().redISub(rhs).cmpn(0) === 0; -}; - -ShortCurve.prototype._endoWnafMulAdd = - function _endoWnafMulAdd(points, coeffs, jacobianResult) { - var npoints = this._endoWnafT1; - var ncoeffs = this._endoWnafT2; - for (var i = 0; i < points.length; i++) { - var split = this._endoSplit(coeffs[i]); - var p = points[i]; - var beta = p._getBeta(); - - if (split.k1.negative) { - split.k1.ineg(); - p = p.neg(true); - } - if (split.k2.negative) { - split.k2.ineg(); - beta = beta.neg(true); - } - - npoints[i * 2] = p; - npoints[i * 2 + 1] = beta; - ncoeffs[i * 2] = split.k1; - ncoeffs[i * 2 + 1] = split.k2; - } - var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult); - - // Clean-up references to points and coefficients - for (var j = 0; j < i * 2; j++) { - npoints[j] = null; - ncoeffs[j] = null; - } - return res; -}; - -function Point(curve, x, y, isRed) { - Base.BasePoint.call(this, curve, 'affine'); - if (x === null && y === null) { - this.x = null; - this.y = null; - this.inf = true; - } else { - this.x = new BN(x, 16); - this.y = new BN(y, 16); - // Force redgomery representation when loading from JSON - if (isRed) { - this.x.forceRed(this.curve.red); - this.y.forceRed(this.curve.red); - } - if (!this.x.red) - this.x = this.x.toRed(this.curve.red); - if (!this.y.red) - this.y = this.y.toRed(this.curve.red); - this.inf = false; - } -} -inherits(Point, Base.BasePoint); - -ShortCurve.prototype.point = function point(x, y, isRed) { - return new Point(this, x, y, isRed); -}; - -ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) { - return Point.fromJSON(this, obj, red); -}; - -Point.prototype._getBeta = function _getBeta() { - if (!this.curve.endo) - return; - - var pre = this.precomputed; - if (pre && pre.beta) - return pre.beta; - - var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y); - if (pre) { - var curve = this.curve; - var endoMul = function(p) { - return curve.point(p.x.redMul(curve.endo.beta), p.y); - }; - pre.beta = beta; - beta.precomputed = { - beta: null, - naf: pre.naf && { - wnd: pre.naf.wnd, - points: pre.naf.points.map(endoMul) - }, - doubles: pre.doubles && { - step: pre.doubles.step, - points: pre.doubles.points.map(endoMul) - } - }; - } - return beta; -}; - -Point.prototype.toJSON = function toJSON() { - if (!this.precomputed) - return [ this.x, this.y ]; - - return [ this.x, this.y, this.precomputed && { - doubles: this.precomputed.doubles && { - step: this.precomputed.doubles.step, - points: this.precomputed.doubles.points.slice(1) - }, - naf: this.precomputed.naf && { - wnd: this.precomputed.naf.wnd, - points: this.precomputed.naf.points.slice(1) - } - } ]; -}; - -Point.fromJSON = function fromJSON(curve, obj, red) { - if (typeof obj === 'string') - obj = JSON.parse(obj); - var res = curve.point(obj[0], obj[1], red); - if (!obj[2]) - return res; - - function obj2point(obj) { - return curve.point(obj[0], obj[1], red); - } - - var pre = obj[2]; - res.precomputed = { - beta: null, - doubles: pre.doubles && { - step: pre.doubles.step, - points: [ res ].concat(pre.doubles.points.map(obj2point)) - }, - naf: pre.naf && { - wnd: pre.naf.wnd, - points: [ res ].concat(pre.naf.points.map(obj2point)) - } - }; - return res; -}; - -Point.prototype.inspect = function inspect() { - if (this.isInfinity()) - return ''; - return ''; -}; - -Point.prototype.isInfinity = function isInfinity() { - return this.inf; -}; - -Point.prototype.add = function add(p) { - // O + P = P - if (this.inf) - return p; - - // P + O = P - if (p.inf) - return this; - - // P + P = 2P - if (this.eq(p)) - return this.dbl(); - - // P + (-P) = O - if (this.neg().eq(p)) - return this.curve.point(null, null); - - // P + Q = O - if (this.x.cmp(p.x) === 0) - return this.curve.point(null, null); - - var c = this.y.redSub(p.y); - if (c.cmpn(0) !== 0) - c = c.redMul(this.x.redSub(p.x).redInvm()); - var nx = c.redSqr().redISub(this.x).redISub(p.x); - var ny = c.redMul(this.x.redSub(nx)).redISub(this.y); - return this.curve.point(nx, ny); -}; - -Point.prototype.dbl = function dbl() { - if (this.inf) - return this; - - // 2P = O - var ys1 = this.y.redAdd(this.y); - if (ys1.cmpn(0) === 0) - return this.curve.point(null, null); - - var a = this.curve.a; - - var x2 = this.x.redSqr(); - var dyinv = ys1.redInvm(); - var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv); - - var nx = c.redSqr().redISub(this.x.redAdd(this.x)); - var ny = c.redMul(this.x.redSub(nx)).redISub(this.y); - return this.curve.point(nx, ny); -}; - -Point.prototype.getX = function getX() { - return this.x.fromRed(); -}; - -Point.prototype.getY = function getY() { - return this.y.fromRed(); -}; - -Point.prototype.mul = function mul(k) { - k = new BN(k, 16); - if (this.isInfinity()) - return this; - else if (this._hasDoubles(k)) - return this.curve._fixedNafMul(this, k); - else if (this.curve.endo) - return this.curve._endoWnafMulAdd([ this ], [ k ]); - else - return this.curve._wnafMul(this, k); -}; - -Point.prototype.mulAdd = function mulAdd(k1, p2, k2) { - var points = [ this, p2 ]; - var coeffs = [ k1, k2 ]; - if (this.curve.endo) - return this.curve._endoWnafMulAdd(points, coeffs); - else - return this.curve._wnafMulAdd(1, points, coeffs, 2); -}; - -Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) { - var points = [ this, p2 ]; - var coeffs = [ k1, k2 ]; - if (this.curve.endo) - return this.curve._endoWnafMulAdd(points, coeffs, true); - else - return this.curve._wnafMulAdd(1, points, coeffs, 2, true); -}; - -Point.prototype.eq = function eq(p) { - return this === p || - this.inf === p.inf && - (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0); -}; - -Point.prototype.neg = function neg(_precompute) { - if (this.inf) - return this; - - var res = this.curve.point(this.x, this.y.redNeg()); - if (_precompute && this.precomputed) { - var pre = this.precomputed; - var negate = function(p) { - return p.neg(); - }; - res.precomputed = { - naf: pre.naf && { - wnd: pre.naf.wnd, - points: pre.naf.points.map(negate) - }, - doubles: pre.doubles && { - step: pre.doubles.step, - points: pre.doubles.points.map(negate) - } - }; - } - return res; -}; - -Point.prototype.toJ = function toJ() { - if (this.inf) - return this.curve.jpoint(null, null, null); - - var res = this.curve.jpoint(this.x, this.y, this.curve.one); - return res; -}; - -function JPoint(curve, x, y, z) { - Base.BasePoint.call(this, curve, 'jacobian'); - if (x === null && y === null && z === null) { - this.x = this.curve.one; - this.y = this.curve.one; - this.z = new BN(0); - } else { - this.x = new BN(x, 16); - this.y = new BN(y, 16); - this.z = new BN(z, 16); - } - if (!this.x.red) - this.x = this.x.toRed(this.curve.red); - if (!this.y.red) - this.y = this.y.toRed(this.curve.red); - if (!this.z.red) - this.z = this.z.toRed(this.curve.red); - - this.zOne = this.z === this.curve.one; -} -inherits(JPoint, Base.BasePoint); - -ShortCurve.prototype.jpoint = function jpoint(x, y, z) { - return new JPoint(this, x, y, z); -}; - -JPoint.prototype.toP = function toP() { - if (this.isInfinity()) - return this.curve.point(null, null); - - var zinv = this.z.redInvm(); - var zinv2 = zinv.redSqr(); - var ax = this.x.redMul(zinv2); - var ay = this.y.redMul(zinv2).redMul(zinv); - - return this.curve.point(ax, ay); -}; - -JPoint.prototype.neg = function neg() { - return this.curve.jpoint(this.x, this.y.redNeg(), this.z); -}; - -JPoint.prototype.add = function add(p) { - // O + P = P - if (this.isInfinity()) - return p; - - // P + O = P - if (p.isInfinity()) - return this; - - // 12M + 4S + 7A - var pz2 = p.z.redSqr(); - var z2 = this.z.redSqr(); - var u1 = this.x.redMul(pz2); - var u2 = p.x.redMul(z2); - var s1 = this.y.redMul(pz2.redMul(p.z)); - var s2 = p.y.redMul(z2.redMul(this.z)); - - var h = u1.redSub(u2); - var r = s1.redSub(s2); - if (h.cmpn(0) === 0) { - if (r.cmpn(0) !== 0) - return this.curve.jpoint(null, null, null); - else - return this.dbl(); - } - - var h2 = h.redSqr(); - var h3 = h2.redMul(h); - var v = u1.redMul(h2); - - var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v); - var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)); - var nz = this.z.redMul(p.z).redMul(h); - - return this.curve.jpoint(nx, ny, nz); -}; - -JPoint.prototype.mixedAdd = function mixedAdd(p) { - // O + P = P - if (this.isInfinity()) - return p.toJ(); - - // P + O = P - if (p.isInfinity()) - return this; - - // 8M + 3S + 7A - var z2 = this.z.redSqr(); - var u1 = this.x; - var u2 = p.x.redMul(z2); - var s1 = this.y; - var s2 = p.y.redMul(z2).redMul(this.z); - - var h = u1.redSub(u2); - var r = s1.redSub(s2); - if (h.cmpn(0) === 0) { - if (r.cmpn(0) !== 0) - return this.curve.jpoint(null, null, null); - else - return this.dbl(); - } - - var h2 = h.redSqr(); - var h3 = h2.redMul(h); - var v = u1.redMul(h2); - - var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v); - var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)); - var nz = this.z.redMul(h); - - return this.curve.jpoint(nx, ny, nz); -}; - -JPoint.prototype.dblp = function dblp(pow) { - if (pow === 0) - return this; - if (this.isInfinity()) - return this; - if (!pow) - return this.dbl(); - - if (this.curve.zeroA || this.curve.threeA) { - var r = this; - for (var i = 0; i < pow; i++) - r = r.dbl(); - return r; - } - - // 1M + 2S + 1A + N * (4S + 5M + 8A) - // N = 1 => 6M + 6S + 9A - var a = this.curve.a; - var tinv = this.curve.tinv; - - var jx = this.x; - var jy = this.y; - var jz = this.z; - var jz4 = jz.redSqr().redSqr(); - - // Reuse results - var jyd = jy.redAdd(jy); - for (var i = 0; i < pow; i++) { - var jx2 = jx.redSqr(); - var jyd2 = jyd.redSqr(); - var jyd4 = jyd2.redSqr(); - var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)); - - var t1 = jx.redMul(jyd2); - var nx = c.redSqr().redISub(t1.redAdd(t1)); - var t2 = t1.redISub(nx); - var dny = c.redMul(t2); - dny = dny.redIAdd(dny).redISub(jyd4); - var nz = jyd.redMul(jz); - if (i + 1 < pow) - jz4 = jz4.redMul(jyd4); - - jx = nx; - jz = nz; - jyd = dny; - } - - return this.curve.jpoint(jx, jyd.redMul(tinv), jz); -}; - -JPoint.prototype.dbl = function dbl() { - if (this.isInfinity()) - return this; - - if (this.curve.zeroA) - return this._zeroDbl(); - else if (this.curve.threeA) - return this._threeDbl(); - else - return this._dbl(); -}; - -JPoint.prototype._zeroDbl = function _zeroDbl() { - var nx; - var ny; - var nz; - // Z = 1 - if (this.zOne) { - // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html - // #doubling-mdbl-2007-bl - // 1M + 5S + 14A - - // XX = X1^2 - var xx = this.x.redSqr(); - // YY = Y1^2 - var yy = this.y.redSqr(); - // YYYY = YY^2 - var yyyy = yy.redSqr(); - // S = 2 * ((X1 + YY)^2 - XX - YYYY) - var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); - s = s.redIAdd(s); - // M = 3 * XX + a; a = 0 - var m = xx.redAdd(xx).redIAdd(xx); - // T = M ^ 2 - 2*S - var t = m.redSqr().redISub(s).redISub(s); - - // 8 * YYYY - var yyyy8 = yyyy.redIAdd(yyyy); - yyyy8 = yyyy8.redIAdd(yyyy8); - yyyy8 = yyyy8.redIAdd(yyyy8); - - // X3 = T - nx = t; - // Y3 = M * (S - T) - 8 * YYYY - ny = m.redMul(s.redISub(t)).redISub(yyyy8); - // Z3 = 2*Y1 - nz = this.y.redAdd(this.y); - } else { - // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html - // #doubling-dbl-2009-l - // 2M + 5S + 13A - - // A = X1^2 - var a = this.x.redSqr(); - // B = Y1^2 - var b = this.y.redSqr(); - // C = B^2 - var c = b.redSqr(); - // D = 2 * ((X1 + B)^2 - A - C) - var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c); - d = d.redIAdd(d); - // E = 3 * A - var e = a.redAdd(a).redIAdd(a); - // F = E^2 - var f = e.redSqr(); - - // 8 * C - var c8 = c.redIAdd(c); - c8 = c8.redIAdd(c8); - c8 = c8.redIAdd(c8); - - // X3 = F - 2 * D - nx = f.redISub(d).redISub(d); - // Y3 = E * (D - X3) - 8 * C - ny = e.redMul(d.redISub(nx)).redISub(c8); - // Z3 = 2 * Y1 * Z1 - nz = this.y.redMul(this.z); - nz = nz.redIAdd(nz); - } - - return this.curve.jpoint(nx, ny, nz); -}; - -JPoint.prototype._threeDbl = function _threeDbl() { - var nx; - var ny; - var nz; - // Z = 1 - if (this.zOne) { - // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html - // #doubling-mdbl-2007-bl - // 1M + 5S + 15A - - // XX = X1^2 - var xx = this.x.redSqr(); - // YY = Y1^2 - var yy = this.y.redSqr(); - // YYYY = YY^2 - var yyyy = yy.redSqr(); - // S = 2 * ((X1 + YY)^2 - XX - YYYY) - var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); - s = s.redIAdd(s); - // M = 3 * XX + a - var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a); - // T = M^2 - 2 * S - var t = m.redSqr().redISub(s).redISub(s); - // X3 = T - nx = t; - // Y3 = M * (S - T) - 8 * YYYY - var yyyy8 = yyyy.redIAdd(yyyy); - yyyy8 = yyyy8.redIAdd(yyyy8); - yyyy8 = yyyy8.redIAdd(yyyy8); - ny = m.redMul(s.redISub(t)).redISub(yyyy8); - // Z3 = 2 * Y1 - nz = this.y.redAdd(this.y); - } else { - // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b - // 3M + 5S - - // delta = Z1^2 - var delta = this.z.redSqr(); - // gamma = Y1^2 - var gamma = this.y.redSqr(); - // beta = X1 * gamma - var beta = this.x.redMul(gamma); - // alpha = 3 * (X1 - delta) * (X1 + delta) - var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta)); - alpha = alpha.redAdd(alpha).redIAdd(alpha); - // X3 = alpha^2 - 8 * beta - var beta4 = beta.redIAdd(beta); - beta4 = beta4.redIAdd(beta4); - var beta8 = beta4.redAdd(beta4); - nx = alpha.redSqr().redISub(beta8); - // Z3 = (Y1 + Z1)^2 - gamma - delta - nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta); - // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2 - var ggamma8 = gamma.redSqr(); - ggamma8 = ggamma8.redIAdd(ggamma8); - ggamma8 = ggamma8.redIAdd(ggamma8); - ggamma8 = ggamma8.redIAdd(ggamma8); - ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8); - } - - return this.curve.jpoint(nx, ny, nz); -}; - -JPoint.prototype._dbl = function _dbl() { - var a = this.curve.a; - - // 4M + 6S + 10A - var jx = this.x; - var jy = this.y; - var jz = this.z; - var jz4 = jz.redSqr().redSqr(); - - var jx2 = jx.redSqr(); - var jy2 = jy.redSqr(); - - var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)); - - var jxd4 = jx.redAdd(jx); - jxd4 = jxd4.redIAdd(jxd4); - var t1 = jxd4.redMul(jy2); - var nx = c.redSqr().redISub(t1.redAdd(t1)); - var t2 = t1.redISub(nx); - - var jyd8 = jy2.redSqr(); - jyd8 = jyd8.redIAdd(jyd8); - jyd8 = jyd8.redIAdd(jyd8); - jyd8 = jyd8.redIAdd(jyd8); - var ny = c.redMul(t2).redISub(jyd8); - var nz = jy.redAdd(jy).redMul(jz); - - return this.curve.jpoint(nx, ny, nz); -}; - -JPoint.prototype.trpl = function trpl() { - if (!this.curve.zeroA) - return this.dbl().add(this); - - // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl - // 5M + 10S + ... - - // XX = X1^2 - var xx = this.x.redSqr(); - // YY = Y1^2 - var yy = this.y.redSqr(); - // ZZ = Z1^2 - var zz = this.z.redSqr(); - // YYYY = YY^2 - var yyyy = yy.redSqr(); - // M = 3 * XX + a * ZZ2; a = 0 - var m = xx.redAdd(xx).redIAdd(xx); - // MM = M^2 - var mm = m.redSqr(); - // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM - var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); - e = e.redIAdd(e); - e = e.redAdd(e).redIAdd(e); - e = e.redISub(mm); - // EE = E^2 - var ee = e.redSqr(); - // T = 16*YYYY - var t = yyyy.redIAdd(yyyy); - t = t.redIAdd(t); - t = t.redIAdd(t); - t = t.redIAdd(t); - // U = (M + E)^2 - MM - EE - T - var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t); - // X3 = 4 * (X1 * EE - 4 * YY * U) - var yyu4 = yy.redMul(u); - yyu4 = yyu4.redIAdd(yyu4); - yyu4 = yyu4.redIAdd(yyu4); - var nx = this.x.redMul(ee).redISub(yyu4); - nx = nx.redIAdd(nx); - nx = nx.redIAdd(nx); - // Y3 = 8 * Y1 * (U * (T - U) - E * EE) - var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee))); - ny = ny.redIAdd(ny); - ny = ny.redIAdd(ny); - ny = ny.redIAdd(ny); - // Z3 = (Z1 + E)^2 - ZZ - EE - var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee); - - return this.curve.jpoint(nx, ny, nz); -}; - -JPoint.prototype.mul = function mul(k, kbase) { - k = new BN(k, kbase); - - return this.curve._wnafMul(this, k); -}; - -JPoint.prototype.eq = function eq(p) { - if (p.type === 'affine') - return this.eq(p.toJ()); - - if (this === p) - return true; - - // x1 * z2^2 == x2 * z1^2 - var z2 = this.z.redSqr(); - var pz2 = p.z.redSqr(); - if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0) - return false; - - // y1 * z2^3 == y2 * z1^3 - var z3 = z2.redMul(this.z); - var pz3 = pz2.redMul(p.z); - return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0; -}; - -JPoint.prototype.eqXToP = function eqXToP(x) { - var zs = this.z.redSqr(); - var rx = x.toRed(this.curve.red).redMul(zs); - if (this.x.cmp(rx) === 0) - return true; - - var xc = x.clone(); - var t = this.curve.redN.redMul(zs); - for (;;) { - xc.iadd(this.curve.n); - if (xc.cmp(this.curve.p) >= 0) - return false; - - rx.redIAdd(t); - if (this.x.cmp(rx) === 0) - return true; - } -}; - -JPoint.prototype.inspect = function inspect() { - if (this.isInfinity()) - return ''; - return ''; -}; - -JPoint.prototype.isInfinity = function isInfinity() { - // XXX This code assumes that zero is always zero in red - return this.z.cmpn(0) === 0; -}; - -},{"../utils":219,"./base":206,"bn.js":147,"inherits":262}],211:[function(require,module,exports){ -'use strict'; - -var curves = exports; - -var hash = require('hash.js'); -var curve = require('./curve'); -var utils = require('./utils'); - -var assert = utils.assert; - -function PresetCurve(options) { - if (options.type === 'short') - this.curve = new curve.short(options); - else if (options.type === 'edwards') - this.curve = new curve.edwards(options); - else - this.curve = new curve.mont(options); - this.g = this.curve.g; - this.n = this.curve.n; - this.hash = options.hash; - - assert(this.g.validate(), 'Invalid curve'); - assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O'); -} -curves.PresetCurve = PresetCurve; - -function defineCurve(name, options) { - Object.defineProperty(curves, name, { - configurable: true, - enumerable: true, - get: function() { - var curve = new PresetCurve(options); - Object.defineProperty(curves, name, { - configurable: true, - enumerable: true, - value: curve - }); - return curve; - } - }); -} - -defineCurve('p192', { - type: 'short', - prime: 'p192', - p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff', - a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc', - b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1', - n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831', - hash: hash.sha256, - gRed: false, - g: [ - '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012', - '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811' - ] -}); - -defineCurve('p224', { - type: 'short', - prime: 'p224', - p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001', - a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe', - b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4', - n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d', - hash: hash.sha256, - gRed: false, - g: [ - 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21', - 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34' - ] -}); - -defineCurve('p256', { - type: 'short', - prime: null, - p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff', - a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc', - b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b', - n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551', - hash: hash.sha256, - gRed: false, - g: [ - '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296', - '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5' - ] -}); - -defineCurve('p384', { - type: 'short', - prime: null, - p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + - 'fffffffe ffffffff 00000000 00000000 ffffffff', - a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + - 'fffffffe ffffffff 00000000 00000000 fffffffc', - b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' + - '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef', - n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' + - 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973', - hash: hash.sha384, - gRed: false, - g: [ - 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' + - '5502f25d bf55296c 3a545e38 72760ab7', - '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' + - '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f' - ] -}); - -defineCurve('p521', { - type: 'short', - prime: null, - p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + - 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + - 'ffffffff ffffffff ffffffff ffffffff ffffffff', - a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + - 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + - 'ffffffff ffffffff ffffffff ffffffff fffffffc', - b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' + - '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' + - '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00', - n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + - 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' + - 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409', - hash: hash.sha512, - gRed: false, - g: [ - '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' + - '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' + - 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66', - '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' + - '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' + - '3fad0761 353c7086 a272c240 88be9476 9fd16650' - ] -}); - -defineCurve('curve25519', { - type: 'mont', - prime: 'p25519', - p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed', - a: '76d06', - b: '1', - n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed', - hash: hash.sha256, - gRed: false, - g: [ - '9' - ] -}); - -defineCurve('ed25519', { - type: 'edwards', - prime: 'p25519', - p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed', - a: '-1', - c: '1', - // -121665 * (121666^(-1)) (mod P) - d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3', - n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed', - hash: hash.sha256, - gRed: false, - g: [ - '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a', - - // 4/5 - '6666666666666666666666666666666666666666666666666666666666666658' - ] -}); - -var pre; -try { - pre = require('./precomputed/secp256k1'); -} catch (e) { - pre = undefined; -} - -defineCurve('secp256k1', { - type: 'short', - prime: 'k256', - p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f', - a: '0', - b: '7', - n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141', - h: '1', - hash: hash.sha256, - - // Precomputed endomorphism - beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee', - lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72', - basis: [ - { - a: '3086d221a7d46bcde86c90e49284eb15', - b: '-e4437ed6010e88286f547fa90abfe4c3' - }, - { - a: '114ca50f7a8e2f3f657c1108d9d44cfd8', - b: '3086d221a7d46bcde86c90e49284eb15' - } - ], - - gRed: false, - g: [ - '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798', - '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8', - pre - ] -}); - -},{"./curve":208,"./precomputed/secp256k1":218,"./utils":219,"hash.js":228}],212:[function(require,module,exports){ -'use strict'; - -var BN = require('bn.js'); -var HmacDRBG = require('hmac-drbg'); -var utils = require('../utils'); -var curves = require('../curves'); -var rand = require('brorand'); -var assert = utils.assert; - -var KeyPair = require('./key'); -var Signature = require('./signature'); - -function EC(options) { - if (!(this instanceof EC)) - return new EC(options); - - // Shortcut `elliptic.ec(curve-name)` - if (typeof options === 'string') { - assert(curves.hasOwnProperty(options), 'Unknown curve ' + options); - - options = curves[options]; - } - - // Shortcut for `elliptic.ec(elliptic.curves.curveName)` - if (options instanceof curves.PresetCurve) - options = { curve: options }; - - this.curve = options.curve.curve; - this.n = this.curve.n; - this.nh = this.n.ushrn(1); - this.g = this.curve.g; - - // Point on curve - this.g = options.curve.g; - this.g.precompute(options.curve.n.bitLength() + 1); - - // Hash for function for DRBG - this.hash = options.hash || options.curve.hash; -} -module.exports = EC; - -EC.prototype.keyPair = function keyPair(options) { - return new KeyPair(this, options); -}; - -EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) { - return KeyPair.fromPrivate(this, priv, enc); -}; - -EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) { - return KeyPair.fromPublic(this, pub, enc); -}; - -EC.prototype.genKeyPair = function genKeyPair(options) { - if (!options) - options = {}; - - // Instantiate Hmac_DRBG - var drbg = new HmacDRBG({ - hash: this.hash, - pers: options.pers, - persEnc: options.persEnc || 'utf8', - entropy: options.entropy || rand(this.hash.hmacStrength), - entropyEnc: options.entropy && options.entropyEnc || 'utf8', - nonce: this.n.toArray() - }); - - var bytes = this.n.byteLength(); - var ns2 = this.n.sub(new BN(2)); - do { - var priv = new BN(drbg.generate(bytes)); - if (priv.cmp(ns2) > 0) - continue; - - priv.iaddn(1); - return this.keyFromPrivate(priv); - } while (true); -}; - -EC.prototype._truncateToN = function truncateToN(msg, truncOnly) { - var delta = msg.byteLength() * 8 - this.n.bitLength(); - if (delta > 0) - msg = msg.ushrn(delta); - if (!truncOnly && msg.cmp(this.n) >= 0) - return msg.sub(this.n); - else - return msg; -}; - -EC.prototype.sign = function sign(msg, key, enc, options) { - if (typeof enc === 'object') { - options = enc; - enc = null; - } - if (!options) - options = {}; - - key = this.keyFromPrivate(key, enc); - msg = this._truncateToN(new BN(msg, 16)); - - // Zero-extend key to provide enough entropy - var bytes = this.n.byteLength(); - var bkey = key.getPrivate().toArray('be', bytes); - - // Zero-extend nonce to have the same byte size as N - var nonce = msg.toArray('be', bytes); - - // Instantiate Hmac_DRBG - var drbg = new HmacDRBG({ - hash: this.hash, - entropy: bkey, - nonce: nonce, - pers: options.pers, - persEnc: options.persEnc || 'utf8' - }); - - // Number of bytes to generate - var ns1 = this.n.sub(new BN(1)); - - for (var iter = 0; true; iter++) { - var k = options.k ? - options.k(iter) : - new BN(drbg.generate(this.n.byteLength())); - k = this._truncateToN(k, true); - if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0) - continue; - - var kp = this.g.mul(k); - if (kp.isInfinity()) - continue; - - var kpX = kp.getX(); - var r = kpX.umod(this.n); - if (r.cmpn(0) === 0) - continue; - - var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg)); - s = s.umod(this.n); - if (s.cmpn(0) === 0) - continue; - - var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | - (kpX.cmp(r) !== 0 ? 2 : 0); - - // Use complement of `s`, if it is > `n / 2` - if (options.canonical && s.cmp(this.nh) > 0) { - s = this.n.sub(s); - recoveryParam ^= 1; - } - - return new Signature({ r: r, s: s, recoveryParam: recoveryParam }); - } -}; - -EC.prototype.verify = function verify(msg, signature, key, enc) { - msg = this._truncateToN(new BN(msg, 16)); - key = this.keyFromPublic(key, enc); - signature = new Signature(signature, 'hex'); - - // Perform primitive values validation - var r = signature.r; - var s = signature.s; - if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0) - return false; - if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0) - return false; - - // Validate signature - var sinv = s.invm(this.n); - var u1 = sinv.mul(msg).umod(this.n); - var u2 = sinv.mul(r).umod(this.n); - - if (!this.curve._maxwellTrick) { - var p = this.g.mulAdd(u1, key.getPublic(), u2); - if (p.isInfinity()) - return false; - - return p.getX().umod(this.n).cmp(r) === 0; - } - - // NOTE: Greg Maxwell's trick, inspired by: - // https://git.io/vad3K - - var p = this.g.jmulAdd(u1, key.getPublic(), u2); - if (p.isInfinity()) - return false; - - // Compare `p.x` of Jacobian point with `r`, - // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the - // inverse of `p.z^2` - return p.eqXToP(r); -}; - -EC.prototype.recoverPubKey = function(msg, signature, j, enc) { - assert((3 & j) === j, 'The recovery param is more than two bits'); - signature = new Signature(signature, enc); - - var n = this.n; - var e = new BN(msg); - var r = signature.r; - var s = signature.s; - - // A set LSB signifies that the y-coordinate is odd - var isYOdd = j & 1; - var isSecondKey = j >> 1; - if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey) - throw new Error('Unable to find sencond key candinate'); - - // 1.1. Let x = r + jn. - if (isSecondKey) - r = this.curve.pointFromX(r.add(this.curve.n), isYOdd); - else - r = this.curve.pointFromX(r, isYOdd); - - var rInv = signature.r.invm(n); - var s1 = n.sub(e).mul(rInv).umod(n); - var s2 = s.mul(rInv).umod(n); - - // 1.6.1 Compute Q = r^-1 (sR - eG) - // Q = r^-1 (sR + -eG) - return this.g.mulAdd(s1, r, s2); -}; - -EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) { - signature = new Signature(signature, enc); - if (signature.recoveryParam !== null) - return signature.recoveryParam; - - for (var i = 0; i < 4; i++) { - var Qprime; - try { - Qprime = this.recoverPubKey(e, signature, i); - } catch (e) { - continue; - } - - if (Qprime.eq(Q)) - return i; - } - throw new Error('Unable to find valid recovery factor'); -}; - -},{"../curves":211,"../utils":219,"./key":213,"./signature":214,"bn.js":147,"brorand":148,"hmac-drbg":240}],213:[function(require,module,exports){ -'use strict'; - -var BN = require('bn.js'); -var utils = require('../utils'); -var assert = utils.assert; - -function KeyPair(ec, options) { - this.ec = ec; - this.priv = null; - this.pub = null; - - // KeyPair(ec, { priv: ..., pub: ... }) - if (options.priv) - this._importPrivate(options.priv, options.privEnc); - if (options.pub) - this._importPublic(options.pub, options.pubEnc); -} -module.exports = KeyPair; - -KeyPair.fromPublic = function fromPublic(ec, pub, enc) { - if (pub instanceof KeyPair) - return pub; - - return new KeyPair(ec, { - pub: pub, - pubEnc: enc - }); -}; - -KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) { - if (priv instanceof KeyPair) - return priv; - - return new KeyPair(ec, { - priv: priv, - privEnc: enc - }); -}; - -KeyPair.prototype.validate = function validate() { - var pub = this.getPublic(); - - if (pub.isInfinity()) - return { result: false, reason: 'Invalid public key' }; - if (!pub.validate()) - return { result: false, reason: 'Public key is not a point' }; - if (!pub.mul(this.ec.curve.n).isInfinity()) - return { result: false, reason: 'Public key * N != O' }; - - return { result: true, reason: null }; -}; - -KeyPair.prototype.getPublic = function getPublic(compact, enc) { - // compact is optional argument - if (typeof compact === 'string') { - enc = compact; - compact = null; - } - - if (!this.pub) - this.pub = this.ec.g.mul(this.priv); - - if (!enc) - return this.pub; - - return this.pub.encode(enc, compact); -}; - -KeyPair.prototype.getPrivate = function getPrivate(enc) { - if (enc === 'hex') - return this.priv.toString(16, 2); - else - return this.priv; -}; - -KeyPair.prototype._importPrivate = function _importPrivate(key, enc) { - this.priv = new BN(key, enc || 16); - - // Ensure that the priv won't be bigger than n, otherwise we may fail - // in fixed multiplication method - this.priv = this.priv.umod(this.ec.curve.n); -}; - -KeyPair.prototype._importPublic = function _importPublic(key, enc) { - if (key.x || key.y) { - // Montgomery points only have an `x` coordinate. - // Weierstrass/Edwards points on the other hand have both `x` and - // `y` coordinates. - if (this.ec.curve.type === 'mont') { - assert(key.x, 'Need x coordinate'); - } else if (this.ec.curve.type === 'short' || - this.ec.curve.type === 'edwards') { - assert(key.x && key.y, 'Need both x and y coordinate'); - } - this.pub = this.ec.curve.point(key.x, key.y); - return; - } - this.pub = this.ec.curve.decodePoint(key, enc); -}; - -// ECDH -KeyPair.prototype.derive = function derive(pub) { - return pub.mul(this.priv).getX(); -}; - -// ECDSA -KeyPair.prototype.sign = function sign(msg, enc, options) { - return this.ec.sign(msg, this, enc, options); -}; - -KeyPair.prototype.verify = function verify(msg, signature) { - return this.ec.verify(msg, signature, this); -}; - -KeyPair.prototype.inspect = function inspect() { - return ''; -}; - -},{"../utils":219,"bn.js":147}],214:[function(require,module,exports){ -'use strict'; - -var BN = require('bn.js'); - -var utils = require('../utils'); -var assert = utils.assert; - -function Signature(options, enc) { - if (options instanceof Signature) - return options; - - if (this._importDER(options, enc)) - return; - - assert(options.r && options.s, 'Signature without r or s'); - this.r = new BN(options.r, 16); - this.s = new BN(options.s, 16); - if (options.recoveryParam === undefined) - this.recoveryParam = null; - else - this.recoveryParam = options.recoveryParam; -} -module.exports = Signature; - -function Position() { - this.place = 0; -} - -function getLength(buf, p) { - var initial = buf[p.place++]; - if (!(initial & 0x80)) { - return initial; - } - var octetLen = initial & 0xf; - var val = 0; - for (var i = 0, off = p.place; i < octetLen; i++, off++) { - val <<= 8; - val |= buf[off]; - } - p.place = off; - return val; -} - -function rmPadding(buf) { - var i = 0; - var len = buf.length - 1; - while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) { - i++; - } - if (i === 0) { - return buf; - } - return buf.slice(i); -} - -Signature.prototype._importDER = function _importDER(data, enc) { - data = utils.toArray(data, enc); - var p = new Position(); - if (data[p.place++] !== 0x30) { - return false; - } - var len = getLength(data, p); - if ((len + p.place) !== data.length) { - return false; - } - if (data[p.place++] !== 0x02) { - return false; - } - var rlen = getLength(data, p); - var r = data.slice(p.place, rlen + p.place); - p.place += rlen; - if (data[p.place++] !== 0x02) { - return false; - } - var slen = getLength(data, p); - if (data.length !== slen + p.place) { - return false; - } - var s = data.slice(p.place, slen + p.place); - if (r[0] === 0 && (r[1] & 0x80)) { - r = r.slice(1); - } - if (s[0] === 0 && (s[1] & 0x80)) { - s = s.slice(1); - } - - this.r = new BN(r); - this.s = new BN(s); - this.recoveryParam = null; - - return true; -}; - -function constructLength(arr, len) { - if (len < 0x80) { - arr.push(len); - return; - } - var octets = 1 + (Math.log(len) / Math.LN2 >>> 3); - arr.push(octets | 0x80); - while (--octets) { - arr.push((len >>> (octets << 3)) & 0xff); - } - arr.push(len); -} - -Signature.prototype.toDER = function toDER(enc) { - var r = this.r.toArray(); - var s = this.s.toArray(); - - // Pad values - if (r[0] & 0x80) - r = [ 0 ].concat(r); - // Pad values - if (s[0] & 0x80) - s = [ 0 ].concat(s); - - r = rmPadding(r); - s = rmPadding(s); - - while (!s[0] && !(s[1] & 0x80)) { - s = s.slice(1); - } - var arr = [ 0x02 ]; - constructLength(arr, r.length); - arr = arr.concat(r); - arr.push(0x02); - constructLength(arr, s.length); - var backHalf = arr.concat(s); - var res = [ 0x30 ]; - constructLength(res, backHalf.length); - res = res.concat(backHalf); - return utils.encode(res, enc); -}; - -},{"../utils":219,"bn.js":147}],215:[function(require,module,exports){ -'use strict'; - -var hash = require('hash.js'); -var curves = require('../curves'); -var utils = require('../utils'); -var assert = utils.assert; -var parseBytes = utils.parseBytes; -var KeyPair = require('./key'); -var Signature = require('./signature'); - -function EDDSA(curve) { - assert(curve === 'ed25519', 'only tested with ed25519 so far'); - - if (!(this instanceof EDDSA)) - return new EDDSA(curve); - - var curve = curves[curve].curve; - this.curve = curve; - this.g = curve.g; - this.g.precompute(curve.n.bitLength() + 1); - - this.pointClass = curve.point().constructor; - this.encodingLength = Math.ceil(curve.n.bitLength() / 8); - this.hash = hash.sha512; -} - -module.exports = EDDSA; - -/** -* @param {Array|String} message - message bytes -* @param {Array|String|KeyPair} secret - secret bytes or a keypair -* @returns {Signature} - signature -*/ -EDDSA.prototype.sign = function sign(message, secret) { - message = parseBytes(message); - var key = this.keyFromSecret(secret); - var r = this.hashInt(key.messagePrefix(), message); - var R = this.g.mul(r); - var Rencoded = this.encodePoint(R); - var s_ = this.hashInt(Rencoded, key.pubBytes(), message) - .mul(key.priv()); - var S = r.add(s_).umod(this.curve.n); - return this.makeSignature({ R: R, S: S, Rencoded: Rencoded }); -}; - -/** -* @param {Array} message - message bytes -* @param {Array|String|Signature} sig - sig bytes -* @param {Array|String|Point|KeyPair} pub - public key -* @returns {Boolean} - true if public key matches sig of message -*/ -EDDSA.prototype.verify = function verify(message, sig, pub) { - message = parseBytes(message); - sig = this.makeSignature(sig); - var key = this.keyFromPublic(pub); - var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message); - var SG = this.g.mul(sig.S()); - var RplusAh = sig.R().add(key.pub().mul(h)); - return RplusAh.eq(SG); -}; - -EDDSA.prototype.hashInt = function hashInt() { - var hash = this.hash(); - for (var i = 0; i < arguments.length; i++) - hash.update(arguments[i]); - return utils.intFromLE(hash.digest()).umod(this.curve.n); -}; - -EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) { - return KeyPair.fromPublic(this, pub); -}; - -EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) { - return KeyPair.fromSecret(this, secret); -}; - -EDDSA.prototype.makeSignature = function makeSignature(sig) { - if (sig instanceof Signature) - return sig; - return new Signature(this, sig); -}; - -/** -* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2 -* -* EDDSA defines methods for encoding and decoding points and integers. These are -* helper convenience methods, that pass along to utility functions implied -* parameters. -* -*/ -EDDSA.prototype.encodePoint = function encodePoint(point) { - var enc = point.getY().toArray('le', this.encodingLength); - enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0; - return enc; -}; - -EDDSA.prototype.decodePoint = function decodePoint(bytes) { - bytes = utils.parseBytes(bytes); - - var lastIx = bytes.length - 1; - var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80); - var xIsOdd = (bytes[lastIx] & 0x80) !== 0; - - var y = utils.intFromLE(normed); - return this.curve.pointFromY(y, xIsOdd); -}; - -EDDSA.prototype.encodeInt = function encodeInt(num) { - return num.toArray('le', this.encodingLength); -}; - -EDDSA.prototype.decodeInt = function decodeInt(bytes) { - return utils.intFromLE(bytes); -}; - -EDDSA.prototype.isPoint = function isPoint(val) { - return val instanceof this.pointClass; -}; - -},{"../curves":211,"../utils":219,"./key":216,"./signature":217,"hash.js":228}],216:[function(require,module,exports){ -'use strict'; - -var utils = require('../utils'); -var assert = utils.assert; -var parseBytes = utils.parseBytes; -var cachedProperty = utils.cachedProperty; - -/** -* @param {EDDSA} eddsa - instance -* @param {Object} params - public/private key parameters -* -* @param {Array} [params.secret] - secret seed bytes -* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms) -* @param {Array} [params.pub] - public key point encoded as bytes -* -*/ -function KeyPair(eddsa, params) { - this.eddsa = eddsa; - this._secret = parseBytes(params.secret); - if (eddsa.isPoint(params.pub)) - this._pub = params.pub; - else - this._pubBytes = parseBytes(params.pub); -} - -KeyPair.fromPublic = function fromPublic(eddsa, pub) { - if (pub instanceof KeyPair) - return pub; - return new KeyPair(eddsa, { pub: pub }); -}; - -KeyPair.fromSecret = function fromSecret(eddsa, secret) { - if (secret instanceof KeyPair) - return secret; - return new KeyPair(eddsa, { secret: secret }); -}; - -KeyPair.prototype.secret = function secret() { - return this._secret; -}; - -cachedProperty(KeyPair, 'pubBytes', function pubBytes() { - return this.eddsa.encodePoint(this.pub()); -}); - -cachedProperty(KeyPair, 'pub', function pub() { - if (this._pubBytes) - return this.eddsa.decodePoint(this._pubBytes); - return this.eddsa.g.mul(this.priv()); -}); - -cachedProperty(KeyPair, 'privBytes', function privBytes() { - var eddsa = this.eddsa; - var hash = this.hash(); - var lastIx = eddsa.encodingLength - 1; - - var a = hash.slice(0, eddsa.encodingLength); - a[0] &= 248; - a[lastIx] &= 127; - a[lastIx] |= 64; - - return a; -}); - -cachedProperty(KeyPair, 'priv', function priv() { - return this.eddsa.decodeInt(this.privBytes()); -}); - -cachedProperty(KeyPair, 'hash', function hash() { - return this.eddsa.hash().update(this.secret()).digest(); -}); - -cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() { - return this.hash().slice(this.eddsa.encodingLength); -}); - -KeyPair.prototype.sign = function sign(message) { - assert(this._secret, 'KeyPair can only verify'); - return this.eddsa.sign(message, this); -}; - -KeyPair.prototype.verify = function verify(message, sig) { - return this.eddsa.verify(message, sig, this); -}; - -KeyPair.prototype.getSecret = function getSecret(enc) { - assert(this._secret, 'KeyPair is public only'); - return utils.encode(this.secret(), enc); -}; - -KeyPair.prototype.getPublic = function getPublic(enc) { - return utils.encode(this.pubBytes(), enc); -}; - -module.exports = KeyPair; - -},{"../utils":219}],217:[function(require,module,exports){ -'use strict'; - -var BN = require('bn.js'); -var utils = require('../utils'); -var assert = utils.assert; -var cachedProperty = utils.cachedProperty; -var parseBytes = utils.parseBytes; - -/** -* @param {EDDSA} eddsa - eddsa instance -* @param {Array|Object} sig - -* @param {Array|Point} [sig.R] - R point as Point or bytes -* @param {Array|bn} [sig.S] - S scalar as bn or bytes -* @param {Array} [sig.Rencoded] - R point encoded -* @param {Array} [sig.Sencoded] - S scalar encoded -*/ -function Signature(eddsa, sig) { - this.eddsa = eddsa; - - if (typeof sig !== 'object') - sig = parseBytes(sig); - - if (Array.isArray(sig)) { - sig = { - R: sig.slice(0, eddsa.encodingLength), - S: sig.slice(eddsa.encodingLength) - }; - } - - assert(sig.R && sig.S, 'Signature without R or S'); - - if (eddsa.isPoint(sig.R)) - this._R = sig.R; - if (sig.S instanceof BN) - this._S = sig.S; - - this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded; - this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded; -} - -cachedProperty(Signature, 'S', function S() { - return this.eddsa.decodeInt(this.Sencoded()); -}); - -cachedProperty(Signature, 'R', function R() { - return this.eddsa.decodePoint(this.Rencoded()); -}); - -cachedProperty(Signature, 'Rencoded', function Rencoded() { - return this.eddsa.encodePoint(this.R()); -}); - -cachedProperty(Signature, 'Sencoded', function Sencoded() { - return this.eddsa.encodeInt(this.S()); -}); - -Signature.prototype.toBytes = function toBytes() { - return this.Rencoded().concat(this.Sencoded()); -}; - -Signature.prototype.toHex = function toHex() { - return utils.encode(this.toBytes(), 'hex').toUpperCase(); -}; - -module.exports = Signature; - -},{"../utils":219,"bn.js":147}],218:[function(require,module,exports){ -module.exports = { - doubles: { - step: 4, - points: [ - [ - 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a', - 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821' - ], - [ - '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508', - '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf' - ], - [ - '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739', - 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695' - ], - [ - '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640', - '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9' - ], - [ - '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c', - '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36' - ], - [ - '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda', - '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f' - ], - [ - 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa', - '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999' - ], - [ - '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0', - 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09' - ], - [ - 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d', - '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d' - ], - [ - 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d', - 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088' - ], - [ - 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1', - '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d' - ], - [ - '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0', - '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8' - ], - [ - '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047', - '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a' - ], - [ - '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862', - '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453' - ], - [ - '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7', - '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160' - ], - [ - '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd', - '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0' - ], - [ - '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83', - '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6' - ], - [ - '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a', - '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589' - ], - [ - '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8', - 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17' - ], - [ - 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d', - '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda' - ], - [ - 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725', - '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd' - ], - [ - '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754', - '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2' - ], - [ - '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c', - '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6' - ], - [ - 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6', - '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f' - ], - [ - '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39', - 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01' - ], - [ - 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891', - '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3' - ], - [ - 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b', - 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f' - ], - [ - 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03', - '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7' - ], - [ - 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d', - 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78' - ], - [ - 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070', - '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1' - ], - [ - '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4', - 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150' - ], - [ - '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da', - '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82' - ], - [ - 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11', - '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc' - ], - [ - '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e', - 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b' - ], - [ - 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41', - '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51' - ], - [ - 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef', - '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45' - ], - [ - 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8', - 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120' - ], - [ - '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d', - '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84' - ], - [ - '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96', - '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d' - ], - [ - '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd', - 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d' - ], - [ - '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5', - '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8' - ], - [ - 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266', - '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8' - ], - [ - '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71', - '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac' - ], - [ - '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac', - 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f' - ], - [ - '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751', - '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962' - ], - [ - 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e', - '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907' - ], - [ - '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241', - 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec' - ], - [ - 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3', - 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d' - ], - [ - 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f', - '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414' - ], - [ - '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19', - 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd' - ], - [ - '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be', - 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0' - ], - [ - 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9', - '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811' - ], - [ - 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2', - '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1' - ], - [ - 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13', - '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c' - ], - [ - '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c', - 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73' - ], - [ - '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba', - '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd' - ], - [ - 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151', - 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405' - ], - [ - '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073', - 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589' - ], - [ - '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458', - '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e' - ], - [ - '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b', - '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27' - ], - [ - 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366', - 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1' - ], - [ - '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa', - '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482' - ], - [ - '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0', - '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945' - ], - [ - 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787', - '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573' - ], - [ - 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e', - 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82' - ] - ] - }, - naf: { - wnd: 7, - points: [ - [ - 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9', - '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672' - ], - [ - '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4', - 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6' - ], - [ - '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc', - '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da' - ], - [ - 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe', - 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37' - ], - [ - '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb', - 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b' - ], - [ - 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8', - 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81' - ], - [ - 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e', - '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58' - ], - [ - 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34', - '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77' - ], - [ - '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c', - '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a' - ], - [ - '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5', - '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c' - ], - [ - '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f', - '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67' - ], - [ - '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714', - '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402' - ], - [ - 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729', - 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55' - ], - [ - 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db', - '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482' - ], - [ - '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4', - 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82' - ], - [ - '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5', - 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396' - ], - [ - '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479', - '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49' - ], - [ - '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d', - '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf' - ], - [ - '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f', - '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a' - ], - [ - '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb', - 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7' - ], - [ - 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9', - 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933' - ], - [ - '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963', - '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a' - ], - [ - '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74', - '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6' - ], - [ - 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530', - 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37' - ], - [ - '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b', - '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e' - ], - [ - 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247', - 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6' - ], - [ - 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1', - 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476' - ], - [ - '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120', - '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40' - ], - [ - '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435', - '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61' - ], - [ - '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18', - '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683' - ], - [ - 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8', - '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5' - ], - [ - '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb', - '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b' - ], - [ - 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f', - '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417' - ], - [ - '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143', - 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868' - ], - [ - '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba', - 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a' - ], - [ - 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45', - 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6' - ], - [ - '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a', - '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996' - ], - [ - '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e', - 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e' - ], - [ - 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8', - 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d' - ], - [ - '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c', - '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2' - ], - [ - '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519', - 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e' - ], - [ - '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab', - '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437' - ], - [ - '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca', - 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311' - ], - [ - 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf', - '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4' - ], - [ - '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610', - '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575' - ], - [ - '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4', - 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d' - ], - [ - '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c', - 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d' - ], - [ - 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940', - 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629' - ], - [ - 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980', - 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06' - ], - [ - '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3', - '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374' - ], - [ - '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf', - '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee' - ], - [ - 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63', - '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1' - ], - [ - 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448', - 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b' - ], - [ - '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf', - '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661' - ], - [ - '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5', - '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6' - ], - [ - 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6', - '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e' - ], - [ - '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5', - '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d' - ], - [ - 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99', - 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc' - ], - [ - '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51', - 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4' - ], - [ - '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5', - '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c' - ], - [ - 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5', - '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b' - ], - [ - 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997', - '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913' - ], - [ - '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881', - '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154' - ], - [ - '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5', - '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865' - ], - [ - '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66', - 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc' - ], - [ - '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726', - 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224' - ], - [ - '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede', - '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e' - ], - [ - '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94', - '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6' - ], - [ - '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31', - '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511' - ], - [ - '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51', - 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b' - ], - [ - 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252', - 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2' - ], - [ - '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5', - 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c' - ], - [ - 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b', - '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3' - ], - [ - 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4', - '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d' - ], - [ - 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f', - '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700' - ], - [ - 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889', - '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4' - ], - [ - '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246', - 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196' - ], - [ - '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984', - '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4' - ], - [ - '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a', - 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257' - ], - [ - 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030', - 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13' - ], - [ - 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197', - '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096' - ], - [ - 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593', - 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38' - ], - [ - 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef', - '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f' - ], - [ - '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38', - '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448' - ], - [ - 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a', - '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a' - ], - [ - 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111', - '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4' - ], - [ - '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502', - '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437' - ], - [ - '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea', - 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7' - ], - [ - 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26', - '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d' - ], - [ - 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986', - '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a' - ], - [ - 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e', - '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54' - ], - [ - '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4', - '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77' - ], - [ - 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda', - 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517' - ], - [ - '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859', - 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10' - ], - [ - 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f', - 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125' - ], - [ - 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c', - '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e' - ], - [ - '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942', - 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1' - ], - [ - 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a', - '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2' - ], - [ - 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80', - '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423' - ], - [ - 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d', - '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8' - ], - [ - '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1', - 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758' - ], - [ - '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63', - 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375' - ], - [ - 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352', - '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d' - ], - [ - '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193', - 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec' - ], - [ - '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00', - '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0' - ], - [ - '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58', - 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c' - ], - [ - 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7', - 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4' - ], - [ - '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8', - 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f' - ], - [ - '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e', - '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649' - ], - [ - '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d', - 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826' - ], - [ - '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b', - '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5' - ], - [ - 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f', - 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87' - ], - [ - '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6', - '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b' - ], - [ - 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297', - '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc' - ], - [ - '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a', - '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c' - ], - [ - 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c', - 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f' - ], - [ - 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52', - '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a' - ], - [ - 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb', - 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46' - ], - [ - '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065', - 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f' - ], - [ - '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917', - '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03' - ], - [ - '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9', - 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08' - ], - [ - '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3', - '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8' - ], - [ - '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57', - '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373' - ], - [ - '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66', - 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3' - ], - [ - '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8', - '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8' - ], - [ - '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721', - '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1' - ], - [ - '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180', - '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9' - ] - ] - } -}; - -},{}],219:[function(require,module,exports){ -'use strict'; - -var utils = exports; -var BN = require('bn.js'); -var minAssert = require('minimalistic-assert'); -var minUtils = require('minimalistic-crypto-utils'); - -utils.assert = minAssert; -utils.toArray = minUtils.toArray; -utils.zero2 = minUtils.zero2; -utils.toHex = minUtils.toHex; -utils.encode = minUtils.encode; - -// Represent num in a w-NAF form -function getNAF(num, w) { - var naf = []; - var ws = 1 << (w + 1); - var k = num.clone(); - while (k.cmpn(1) >= 0) { - var z; - if (k.isOdd()) { - var mod = k.andln(ws - 1); - if (mod > (ws >> 1) - 1) - z = (ws >> 1) - mod; - else - z = mod; - k.isubn(z); - } else { - z = 0; - } - naf.push(z); - - // Optimization, shift by word if possible - var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1; - for (var i = 1; i < shift; i++) - naf.push(0); - k.iushrn(shift); - } - - return naf; -} -utils.getNAF = getNAF; - -// Represent k1, k2 in a Joint Sparse Form -function getJSF(k1, k2) { - var jsf = [ - [], - [] - ]; - - k1 = k1.clone(); - k2 = k2.clone(); - var d1 = 0; - var d2 = 0; - while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) { - - // First phase - var m14 = (k1.andln(3) + d1) & 3; - var m24 = (k2.andln(3) + d2) & 3; - if (m14 === 3) - m14 = -1; - if (m24 === 3) - m24 = -1; - var u1; - if ((m14 & 1) === 0) { - u1 = 0; - } else { - var m8 = (k1.andln(7) + d1) & 7; - if ((m8 === 3 || m8 === 5) && m24 === 2) - u1 = -m14; - else - u1 = m14; - } - jsf[0].push(u1); - - var u2; - if ((m24 & 1) === 0) { - u2 = 0; - } else { - var m8 = (k2.andln(7) + d2) & 7; - if ((m8 === 3 || m8 === 5) && m14 === 2) - u2 = -m24; - else - u2 = m24; - } - jsf[1].push(u2); - - // Second phase - if (2 * d1 === u1 + 1) - d1 = 1 - d1; - if (2 * d2 === u2 + 1) - d2 = 1 - d2; - k1.iushrn(1); - k2.iushrn(1); - } - - return jsf; -} -utils.getJSF = getJSF; - -function cachedProperty(obj, name, computer) { - var key = '_' + name; - obj.prototype[name] = function cachedProperty() { - return this[key] !== undefined ? this[key] : - this[key] = computer.call(this); - }; -} -utils.cachedProperty = cachedProperty; - -function parseBytes(bytes) { - return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') : - bytes; -} -utils.parseBytes = parseBytes; - -function intFromLE(bytes) { - return new BN(bytes, 'hex', 'le'); -} -utils.intFromLE = intFromLE; - - -},{"bn.js":147,"minimalistic-assert":268,"minimalistic-crypto-utils":269}],220:[function(require,module,exports){ -module.exports={ - "_args": [ - [ - "elliptic@6.5.1", - "/Users/caldwell/geopackage-js" - ] - ], - "_development": true, - "_from": "elliptic@6.5.1", - "_id": "elliptic@6.5.1", - "_inBundle": false, - "_integrity": "sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg==", - "_location": "/elliptic", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "elliptic@6.5.1", - "name": "elliptic", - "escapedName": "elliptic", - "rawSpec": "6.5.1", - "saveSpec": null, - "fetchSpec": "6.5.1" - }, - "_requiredBy": [ - "/browserify-sign", - "/create-ecdh" - ], - "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.1.tgz", - "_spec": "6.5.1", - "_where": "/Users/caldwell/geopackage-js", - "author": { - "name": "Fedor Indutny", - "email": "fedor@indutny.com" - }, - "bugs": { - "url": "https://github.com/indutny/elliptic/issues" - }, - "dependencies": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - }, - "description": "EC cryptography", - "devDependencies": { - "brfs": "^1.4.3", - "coveralls": "^3.0.4", - "grunt": "^1.0.4", - "grunt-browserify": "^5.0.0", - "grunt-cli": "^1.2.0", - "grunt-contrib-connect": "^1.0.0", - "grunt-contrib-copy": "^1.0.0", - "grunt-contrib-uglify": "^1.0.1", - "grunt-mocha-istanbul": "^3.0.1", - "grunt-saucelabs": "^9.0.1", - "istanbul": "^0.4.2", - "jscs": "^3.0.7", - "jshint": "^2.6.0", - "mocha": "^6.1.4" - }, - "files": [ - "lib" - ], - "homepage": "https://github.com/indutny/elliptic", - "keywords": [ - "EC", - "Elliptic", - "curve", - "Cryptography" - ], - "license": "MIT", - "main": "lib/elliptic.js", - "name": "elliptic", - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/indutny/elliptic.git" - }, - "scripts": { - "jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js", - "jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js", - "lint": "npm run jscs && npm run jshint", - "test": "npm run lint && npm run unit", - "unit": "istanbul test _mocha --reporter=spec test/index.js", - "version": "grunt dist && git add dist/" - }, - "version": "6.5.1" -} - -},{}],221:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -function EventEmitter() { - this._events = this._events || {}; - this._maxListeners = this._maxListeners || undefined; -} -module.exports = EventEmitter; - -// Backwards-compat with node 0.10.x -EventEmitter.EventEmitter = EventEmitter; - -EventEmitter.prototype._events = undefined; -EventEmitter.prototype._maxListeners = undefined; - -// By default EventEmitters will print a warning if more than 10 listeners are -// added to it. This is a useful default which helps finding memory leaks. -EventEmitter.defaultMaxListeners = 10; - -// Obviously not all Emitters should be limited to 10. This function allows -// that to be increased. Set to zero for unlimited. -EventEmitter.prototype.setMaxListeners = function(n) { - if (!isNumber(n) || n < 0 || isNaN(n)) - throw TypeError('n must be a positive number'); - this._maxListeners = n; - return this; -}; - -EventEmitter.prototype.emit = function(type) { - var er, handler, len, args, i, listeners; - - if (!this._events) - this._events = {}; - - // If there is no 'error' event listener then throw. - if (type === 'error') { - if (!this._events.error || - (isObject(this._events.error) && !this._events.error.length)) { - er = arguments[1]; - if (er instanceof Error) { - throw er; // Unhandled 'error' event - } else { - // At least give some kind of context to the user - var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); - err.context = er; - throw err; - } - } - } - - handler = this._events[type]; - - if (isUndefined(handler)) - return false; - - if (isFunction(handler)) { - switch (arguments.length) { - // fast cases - case 1: - handler.call(this); - break; - case 2: - handler.call(this, arguments[1]); - break; - case 3: - handler.call(this, arguments[1], arguments[2]); - break; - // slower - default: - args = Array.prototype.slice.call(arguments, 1); - handler.apply(this, args); - } - } else if (isObject(handler)) { - args = Array.prototype.slice.call(arguments, 1); - listeners = handler.slice(); - len = listeners.length; - for (i = 0; i < len; i++) - listeners[i].apply(this, args); - } - - return true; -}; - -EventEmitter.prototype.addListener = function(type, listener) { - var m; - - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - if (!this._events) - this._events = {}; - - // To avoid recursion in the case that type === "newListener"! Before - // adding it to the listeners, first emit "newListener". - if (this._events.newListener) - this.emit('newListener', type, - isFunction(listener.listener) ? - listener.listener : listener); - - if (!this._events[type]) - // Optimize the case of one listener. Don't need the extra array object. - this._events[type] = listener; - else if (isObject(this._events[type])) - // If we've already got an array, just append. - this._events[type].push(listener); - else - // Adding the second element, need to change to array. - this._events[type] = [this._events[type], listener]; - - // Check for listener leak - if (isObject(this._events[type]) && !this._events[type].warned) { - if (!isUndefined(this._maxListeners)) { - m = this._maxListeners; - } else { - m = EventEmitter.defaultMaxListeners; - } - - if (m && m > 0 && this._events[type].length > m) { - this._events[type].warned = true; - console.error('(node) warning: possible EventEmitter memory ' + - 'leak detected. %d listeners added. ' + - 'Use emitter.setMaxListeners() to increase limit.', - this._events[type].length); - if (typeof console.trace === 'function') { - // not supported in IE 10 - console.trace(); - } - } - } - - return this; -}; - -EventEmitter.prototype.on = EventEmitter.prototype.addListener; - -EventEmitter.prototype.once = function(type, listener) { - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - var fired = false; - - function g() { - this.removeListener(type, g); - - if (!fired) { - fired = true; - listener.apply(this, arguments); - } - } - - g.listener = listener; - this.on(type, g); - - return this; -}; - -// emits a 'removeListener' event iff the listener was removed -EventEmitter.prototype.removeListener = function(type, listener) { - var list, position, length, i; - - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - if (!this._events || !this._events[type]) - return this; - - list = this._events[type]; - length = list.length; - position = -1; - - if (list === listener || - (isFunction(list.listener) && list.listener === listener)) { - delete this._events[type]; - if (this._events.removeListener) - this.emit('removeListener', type, listener); - - } else if (isObject(list)) { - for (i = length; i-- > 0;) { - if (list[i] === listener || - (list[i].listener && list[i].listener === listener)) { - position = i; - break; - } - } - - if (position < 0) - return this; - - if (list.length === 1) { - list.length = 0; - delete this._events[type]; - } else { - list.splice(position, 1); - } - - if (this._events.removeListener) - this.emit('removeListener', type, listener); - } - - return this; -}; - -EventEmitter.prototype.removeAllListeners = function(type) { - var key, listeners; - - if (!this._events) - return this; - - // not listening for removeListener, no need to emit - if (!this._events.removeListener) { - if (arguments.length === 0) - this._events = {}; - else if (this._events[type]) - delete this._events[type]; - return this; - } - - // emit removeListener for all listeners on all events - if (arguments.length === 0) { - for (key in this._events) { - if (key === 'removeListener') continue; - this.removeAllListeners(key); - } - this.removeAllListeners('removeListener'); - this._events = {}; - return this; - } - - listeners = this._events[type]; - - if (isFunction(listeners)) { - this.removeListener(type, listeners); - } else if (listeners) { - // LIFO order - while (listeners.length) - this.removeListener(type, listeners[listeners.length - 1]); - } - delete this._events[type]; - - return this; -}; - -EventEmitter.prototype.listeners = function(type) { - var ret; - if (!this._events || !this._events[type]) - ret = []; - else if (isFunction(this._events[type])) - ret = [this._events[type]]; - else - ret = this._events[type].slice(); - return ret; -}; - -EventEmitter.prototype.listenerCount = function(type) { - if (this._events) { - var evlistener = this._events[type]; - - if (isFunction(evlistener)) - return 1; - else if (evlistener) - return evlistener.length; - } - return 0; -}; - -EventEmitter.listenerCount = function(emitter, type) { - return emitter.listenerCount(type); -}; - -function isFunction(arg) { - return typeof arg === 'function'; -} - -function isNumber(arg) { - return typeof arg === 'number'; -} - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} - -function isUndefined(arg) { - return arg === void 0; -} - -},{}],222:[function(require,module,exports){ -var Buffer = require('safe-buffer').Buffer -var MD5 = require('md5.js') - -/* eslint-disable camelcase */ -function EVP_BytesToKey (password, salt, keyBits, ivLen) { - if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary') - if (salt) { - if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary') - if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length') - } - - var keyLen = keyBits / 8 - var key = Buffer.alloc(keyLen) - var iv = Buffer.alloc(ivLen || 0) - var tmp = Buffer.alloc(0) - - while (keyLen > 0 || ivLen > 0) { - var hash = new MD5() - hash.update(tmp) - hash.update(password) - if (salt) hash.update(salt) - tmp = hash.digest() - - var used = 0 - - if (keyLen > 0) { - var keyStart = key.length - keyLen - used = Math.min(keyLen, tmp.length) - tmp.copy(key, keyStart, 0, used) - keyLen -= used - } - - if (used < tmp.length && ivLen > 0) { - var ivStart = iv.length - ivLen - var length = Math.min(ivLen, tmp.length - used) - tmp.copy(iv, ivStart, used, used + length) - ivLen -= length - } - } - - tmp.fill(0) - return { key: key, iv: iv } -} - -module.exports = EVP_BytesToKey - -},{"md5.js":266,"safe-buffer":318}],223:[function(require,module,exports){ -'use strict'; -const toBytes = s => [...s].map(c => c.charCodeAt(0)); -const xpiZipFilename = toBytes('META-INF/mozilla.rsa'); -const oxmlContentTypes = toBytes('[Content_Types].xml'); -const oxmlRels = toBytes('_rels/.rels'); - -module.exports = input => { - const buf = input instanceof Uint8Array ? input : new Uint8Array(input); - - if (!(buf && buf.length > 1)) { - return null; - } - - const check = (header, options) => { - options = Object.assign({ - offset: 0 - }, options); - - for (let i = 0; i < header.length; i++) { - // If a bitmask is set - if (options.mask) { - // If header doesn't equal `buf` with bits masked off - if (header[i] !== (options.mask[i] & buf[i + options.offset])) { - return false; - } - } else if (header[i] !== buf[i + options.offset]) { - return false; - } - } - - return true; - }; - - const checkString = (header, options) => check(toBytes(header), options); - - if (check([0xFF, 0xD8, 0xFF])) { - return { - ext: 'jpg', - mime: 'image/jpeg' - }; - } - - if (check([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])) { - return { - ext: 'png', - mime: 'image/png' - }; - } - - if (check([0x47, 0x49, 0x46])) { - return { - ext: 'gif', - mime: 'image/gif' - }; - } - - if (check([0x57, 0x45, 0x42, 0x50], {offset: 8})) { - return { - ext: 'webp', - mime: 'image/webp' - }; - } - - if (check([0x46, 0x4C, 0x49, 0x46])) { - return { - ext: 'flif', - mime: 'image/flif' - }; - } - - // Needs to be before `tif` check - if ( - (check([0x49, 0x49, 0x2A, 0x0]) || check([0x4D, 0x4D, 0x0, 0x2A])) && - check([0x43, 0x52], {offset: 8}) - ) { - return { - ext: 'cr2', - mime: 'image/x-canon-cr2' - }; - } - - if ( - check([0x49, 0x49, 0x2A, 0x0]) || - check([0x4D, 0x4D, 0x0, 0x2A]) - ) { - return { - ext: 'tif', - mime: 'image/tiff' - }; - } - - if (check([0x42, 0x4D])) { - return { - ext: 'bmp', - mime: 'image/bmp' - }; - } - - if (check([0x49, 0x49, 0xBC])) { - return { - ext: 'jxr', - mime: 'image/vnd.ms-photo' - }; - } - - if (check([0x38, 0x42, 0x50, 0x53])) { - return { - ext: 'psd', - mime: 'image/vnd.adobe.photoshop' - }; - } - - // Zip-based file formats - // Need to be before the `zip` check - if (check([0x50, 0x4B, 0x3, 0x4])) { - if ( - check([0x6D, 0x69, 0x6D, 0x65, 0x74, 0x79, 0x70, 0x65, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x65, 0x70, 0x75, 0x62, 0x2B, 0x7A, 0x69, 0x70], {offset: 30}) - ) { - return { - ext: 'epub', - mime: 'application/epub+zip' - }; - } - - // Assumes signed `.xpi` from addons.mozilla.org - if (check(xpiZipFilename, {offset: 30})) { - return { - ext: 'xpi', - mime: 'application/x-xpinstall' - }; - } - - if (checkString('mimetypeapplication/vnd.oasis.opendocument.text', {offset: 30})) { - return { - ext: 'odt', - mime: 'application/vnd.oasis.opendocument.text' - }; - } - - if (checkString('mimetypeapplication/vnd.oasis.opendocument.spreadsheet', {offset: 30})) { - return { - ext: 'ods', - mime: 'application/vnd.oasis.opendocument.spreadsheet' - }; - } - - if (checkString('mimetypeapplication/vnd.oasis.opendocument.presentation', {offset: 30})) { - return { - ext: 'odp', - mime: 'application/vnd.oasis.opendocument.presentation' - }; - } - - // https://github.com/file/file/blob/master/magic/Magdir/msooxml - if (check(oxmlContentTypes, {offset: 30}) || check(oxmlRels, {offset: 30})) { - const sliced = buf.subarray(4, 4 + 2000); - const nextZipHeaderIndex = arr => arr.findIndex((el, i, arr) => arr[i] === 0x50 && arr[i + 1] === 0x4B && arr[i + 2] === 0x3 && arr[i + 3] === 0x4); - const header2Pos = nextZipHeaderIndex(sliced); - - if (header2Pos !== -1) { - const slicedAgain = buf.subarray(header2Pos + 8, header2Pos + 8 + 1000); - const header3Pos = nextZipHeaderIndex(slicedAgain); - - if (header3Pos !== -1) { - const offset = 8 + header2Pos + header3Pos + 30; - - if (checkString('word/', {offset})) { - return { - ext: 'docx', - mime: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' - }; - } - - if (checkString('ppt/', {offset})) { - return { - ext: 'pptx', - mime: 'application/vnd.openxmlformats-officedocument.presentationml.presentation' - }; - } - - if (checkString('xl/', {offset})) { - return { - ext: 'xlsx', - mime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' - }; - } - } - } - } - } - - if ( - check([0x50, 0x4B]) && - (buf[2] === 0x3 || buf[2] === 0x5 || buf[2] === 0x7) && - (buf[3] === 0x4 || buf[3] === 0x6 || buf[3] === 0x8) - ) { - return { - ext: 'zip', - mime: 'application/zip' - }; - } - - if (check([0x75, 0x73, 0x74, 0x61, 0x72], {offset: 257})) { - return { - ext: 'tar', - mime: 'application/x-tar' - }; - } - - if ( - check([0x52, 0x61, 0x72, 0x21, 0x1A, 0x7]) && - (buf[6] === 0x0 || buf[6] === 0x1) - ) { - return { - ext: 'rar', - mime: 'application/x-rar-compressed' - }; - } - - if (check([0x1F, 0x8B, 0x8])) { - return { - ext: 'gz', - mime: 'application/gzip' - }; - } - - if (check([0x42, 0x5A, 0x68])) { - return { - ext: 'bz2', - mime: 'application/x-bzip2' - }; - } - - if (check([0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C])) { - return { - ext: '7z', - mime: 'application/x-7z-compressed' - }; - } - - if (check([0x78, 0x01])) { - return { - ext: 'dmg', - mime: 'application/x-apple-diskimage' - }; - } - - if (check([0x33, 0x67, 0x70, 0x35]) || // 3gp5 - ( - check([0x0, 0x0, 0x0]) && check([0x66, 0x74, 0x79, 0x70], {offset: 4}) && - ( - check([0x6D, 0x70, 0x34, 0x31], {offset: 8}) || // MP41 - check([0x6D, 0x70, 0x34, 0x32], {offset: 8}) || // MP42 - check([0x69, 0x73, 0x6F, 0x6D], {offset: 8}) || // ISOM - check([0x69, 0x73, 0x6F, 0x32], {offset: 8}) || // ISO2 - check([0x6D, 0x6D, 0x70, 0x34], {offset: 8}) || // MMP4 - check([0x4D, 0x34, 0x56], {offset: 8}) || // M4V - check([0x64, 0x61, 0x73, 0x68], {offset: 8}) // DASH - ) - )) { - return { - ext: 'mp4', - mime: 'video/mp4' - }; - } - - if (check([0x4D, 0x54, 0x68, 0x64])) { - return { - ext: 'mid', - mime: 'audio/midi' - }; - } - - // https://github.com/threatstack/libmagic/blob/master/magic/Magdir/matroska - if (check([0x1A, 0x45, 0xDF, 0xA3])) { - const sliced = buf.subarray(4, 4 + 4096); - const idPos = sliced.findIndex((el, i, arr) => arr[i] === 0x42 && arr[i + 1] === 0x82); - - if (idPos !== -1) { - const docTypePos = idPos + 3; - const findDocType = type => [...type].every((c, i) => sliced[docTypePos + i] === c.charCodeAt(0)); - - if (findDocType('matroska')) { - return { - ext: 'mkv', - mime: 'video/x-matroska' - }; - } - - if (findDocType('webm')) { - return { - ext: 'webm', - mime: 'video/webm' - }; - } - } - } - - if (check([0x0, 0x0, 0x0, 0x14, 0x66, 0x74, 0x79, 0x70, 0x71, 0x74, 0x20, 0x20]) || - check([0x66, 0x72, 0x65, 0x65], {offset: 4}) || - check([0x66, 0x74, 0x79, 0x70, 0x71, 0x74, 0x20, 0x20], {offset: 4}) || - check([0x6D, 0x64, 0x61, 0x74], {offset: 4}) || // MJPEG - check([0x77, 0x69, 0x64, 0x65], {offset: 4})) { - return { - ext: 'mov', - mime: 'video/quicktime' - }; - } - - // RIFF file format which might be AVI, WAV, QCP, etc - if (check([0x52, 0x49, 0x46, 0x46])) { - if (check([0x41, 0x56, 0x49], {offset: 8})) { - return { - ext: 'avi', - mime: 'video/x-msvideo' - }; - } - if (check([0x57, 0x41, 0x56, 0x45], {offset: 8})) { - return { - ext: 'wav', - mime: 'audio/x-wav' - }; - } - // QLCM, QCP file - if (check([0x51, 0x4C, 0x43, 0x4D], {offset: 8})) { - return { - ext: 'qcp', - mime: 'audio/qcelp' - }; - } - } - - if (check([0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9])) { - return { - ext: 'wmv', - mime: 'video/x-ms-wmv' - }; - } - - if ( - check([0x0, 0x0, 0x1, 0xBA]) || - check([0x0, 0x0, 0x1, 0xB3]) - ) { - return { - ext: 'mpg', - mime: 'video/mpeg' - }; - } - - if (check([0x66, 0x74, 0x79, 0x70, 0x33, 0x67], {offset: 4})) { - return { - ext: '3gp', - mime: 'video/3gpp' - }; - } - - // Check for MPEG header at different starting offsets - for (let start = 0; start < 2 && start < (buf.length - 16); start++) { - if ( - check([0x49, 0x44, 0x33], {offset: start}) || // ID3 header - check([0xFF, 0xE2], {offset: start, mask: [0xFF, 0xE2]}) // MPEG 1 or 2 Layer 3 header - ) { - return { - ext: 'mp3', - mime: 'audio/mpeg' - }; - } - - if ( - check([0xFF, 0xE4], {offset: start, mask: [0xFF, 0xE4]}) // MPEG 1 or 2 Layer 2 header - ) { - return { - ext: 'mp2', - mime: 'audio/mpeg' - }; - } - - if ( - check([0xFF, 0xF8], {offset: start, mask: [0xFF, 0xFC]}) // MPEG 2 layer 0 using ADTS - ) { - return { - ext: 'mp2', - mime: 'audio/mpeg' - }; - } - - if ( - check([0xFF, 0xF0], {offset: start, mask: [0xFF, 0xFC]}) // MPEG 4 layer 0 using ADTS - ) { - return { - ext: 'mp4', - mime: 'audio/mpeg' - }; - } - } - - if ( - check([0x66, 0x74, 0x79, 0x70, 0x4D, 0x34, 0x41], {offset: 4}) || - check([0x4D, 0x34, 0x41, 0x20]) - ) { - return { - ext: 'm4a', - mime: 'audio/m4a' - }; - } - - // Needs to be before `ogg` check - if (check([0x4F, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64], {offset: 28})) { - return { - ext: 'opus', - mime: 'audio/opus' - }; - } - - // If 'OggS' in first bytes, then OGG container - if (check([0x4F, 0x67, 0x67, 0x53])) { - // This is a OGG container - - // If ' theora' in header. - if (check([0x80, 0x74, 0x68, 0x65, 0x6F, 0x72, 0x61], {offset: 28})) { - return { - ext: 'ogv', - mime: 'video/ogg' - }; - } - // If '\x01video' in header. - if (check([0x01, 0x76, 0x69, 0x64, 0x65, 0x6F, 0x00], {offset: 28})) { - return { - ext: 'ogm', - mime: 'video/ogg' - }; - } - // If ' FLAC' in header https://xiph.org/flac/faq.html - if (check([0x7F, 0x46, 0x4C, 0x41, 0x43], {offset: 28})) { - return { - ext: 'oga', - mime: 'audio/ogg' - }; - } - - // 'Speex ' in header https://en.wikipedia.org/wiki/Speex - if (check([0x53, 0x70, 0x65, 0x65, 0x78, 0x20, 0x20], {offset: 28})) { - return { - ext: 'spx', - mime: 'audio/ogg' - }; - } - - // If '\x01vorbis' in header - if (check([0x01, 0x76, 0x6F, 0x72, 0x62, 0x69, 0x73], {offset: 28})) { - return { - ext: 'ogg', - mime: 'audio/ogg' - }; - } - - // Default OGG container https://www.iana.org/assignments/media-types/application/ogg - return { - ext: 'ogx', - mime: 'application/ogg' - }; - } - - if (check([0x66, 0x4C, 0x61, 0x43])) { - return { - ext: 'flac', - mime: 'audio/x-flac' - }; - } - - if (check([0x4D, 0x41, 0x43, 0x20])) { - return { - ext: 'ape', - mime: 'audio/ape' - }; - } - - if (check([0x23, 0x21, 0x41, 0x4D, 0x52, 0x0A])) { - return { - ext: 'amr', - mime: 'audio/amr' - }; - } - - if (check([0x25, 0x50, 0x44, 0x46])) { - return { - ext: 'pdf', - mime: 'application/pdf' - }; - } - - if (check([0x4D, 0x5A])) { - return { - ext: 'exe', - mime: 'application/x-msdownload' - }; - } - - if ( - (buf[0] === 0x43 || buf[0] === 0x46) && - check([0x57, 0x53], {offset: 1}) - ) { - return { - ext: 'swf', - mime: 'application/x-shockwave-flash' - }; - } - - if (check([0x7B, 0x5C, 0x72, 0x74, 0x66])) { - return { - ext: 'rtf', - mime: 'application/rtf' - }; - } - - if (check([0x00, 0x61, 0x73, 0x6D])) { - return { - ext: 'wasm', - mime: 'application/wasm' - }; - } - - if ( - check([0x77, 0x4F, 0x46, 0x46]) && - ( - check([0x00, 0x01, 0x00, 0x00], {offset: 4}) || - check([0x4F, 0x54, 0x54, 0x4F], {offset: 4}) - ) - ) { - return { - ext: 'woff', - mime: 'font/woff' - }; - } - - if ( - check([0x77, 0x4F, 0x46, 0x32]) && - ( - check([0x00, 0x01, 0x00, 0x00], {offset: 4}) || - check([0x4F, 0x54, 0x54, 0x4F], {offset: 4}) - ) - ) { - return { - ext: 'woff2', - mime: 'font/woff2' - }; - } - - if ( - check([0x4C, 0x50], {offset: 34}) && - ( - check([0x00, 0x00, 0x01], {offset: 8}) || - check([0x01, 0x00, 0x02], {offset: 8}) || - check([0x02, 0x00, 0x02], {offset: 8}) - ) - ) { - return { - ext: 'eot', - mime: 'application/octet-stream' - }; - } - - if (check([0x00, 0x01, 0x00, 0x00, 0x00])) { - return { - ext: 'ttf', - mime: 'font/ttf' - }; - } - - if (check([0x4F, 0x54, 0x54, 0x4F, 0x00])) { - return { - ext: 'otf', - mime: 'font/otf' - }; - } - - if (check([0x00, 0x00, 0x01, 0x00])) { - return { - ext: 'ico', - mime: 'image/x-icon' - }; - } - - if (check([0x00, 0x00, 0x02, 0x00])) { - return { - ext: 'cur', - mime: 'image/x-icon' - }; - } - - if (check([0x46, 0x4C, 0x56, 0x01])) { - return { - ext: 'flv', - mime: 'video/x-flv' - }; - } - - if (check([0x25, 0x21])) { - return { - ext: 'ps', - mime: 'application/postscript' - }; - } - - if (check([0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00])) { - return { - ext: 'xz', - mime: 'application/x-xz' - }; - } - - if (check([0x53, 0x51, 0x4C, 0x69])) { - return { - ext: 'sqlite', - mime: 'application/x-sqlite3' - }; - } - - if (check([0x4E, 0x45, 0x53, 0x1A])) { - return { - ext: 'nes', - mime: 'application/x-nintendo-nes-rom' - }; - } - - if (check([0x43, 0x72, 0x32, 0x34])) { - return { - ext: 'crx', - mime: 'application/x-google-chrome-extension' - }; - } - - if ( - check([0x4D, 0x53, 0x43, 0x46]) || - check([0x49, 0x53, 0x63, 0x28]) - ) { - return { - ext: 'cab', - mime: 'application/vnd.ms-cab-compressed' - }; - } - - // Needs to be before `ar` check - if (check([0x21, 0x3C, 0x61, 0x72, 0x63, 0x68, 0x3E, 0x0A, 0x64, 0x65, 0x62, 0x69, 0x61, 0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x61, 0x72, 0x79])) { - return { - ext: 'deb', - mime: 'application/x-deb' - }; - } - - if (check([0x21, 0x3C, 0x61, 0x72, 0x63, 0x68, 0x3E])) { - return { - ext: 'ar', - mime: 'application/x-unix-archive' - }; - } - - if (check([0xED, 0xAB, 0xEE, 0xDB])) { - return { - ext: 'rpm', - mime: 'application/x-rpm' - }; - } - - if ( - check([0x1F, 0xA0]) || - check([0x1F, 0x9D]) - ) { - return { - ext: 'Z', - mime: 'application/x-compress' - }; - } - - if (check([0x4C, 0x5A, 0x49, 0x50])) { - return { - ext: 'lz', - mime: 'application/x-lzip' - }; - } - - if (check([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1])) { - return { - ext: 'msi', - mime: 'application/x-msi' - }; - } - - if (check([0x06, 0x0E, 0x2B, 0x34, 0x02, 0x05, 0x01, 0x01, 0x0D, 0x01, 0x02, 0x01, 0x01, 0x02])) { - return { - ext: 'mxf', - mime: 'application/mxf' - }; - } - - if (check([0x47], {offset: 4}) && (check([0x47], {offset: 192}) || check([0x47], {offset: 196}))) { - return { - ext: 'mts', - mime: 'video/mp2t' - }; - } - - if (check([0x42, 0x4C, 0x45, 0x4E, 0x44, 0x45, 0x52])) { - return { - ext: 'blend', - mime: 'application/x-blender' - }; - } - - if (check([0x42, 0x50, 0x47, 0xFB])) { - return { - ext: 'bpg', - mime: 'image/bpg' - }; - } - - if (check([0x00, 0x00, 0x00, 0x0C, 0x6A, 0x50, 0x20, 0x20, 0x0D, 0x0A, 0x87, 0x0A])) { - // JPEG-2000 family - - if (check([0x6A, 0x70, 0x32, 0x20], {offset: 20})) { - return { - ext: 'jp2', - mime: 'image/jp2' - }; - } - - if (check([0x6A, 0x70, 0x78, 0x20], {offset: 20})) { - return { - ext: 'jpx', - mime: 'image/jpx' - }; - } - - if (check([0x6A, 0x70, 0x6D, 0x20], {offset: 20})) { - return { - ext: 'jpm', - mime: 'image/jpm' - }; - } - - if (check([0x6D, 0x6A, 0x70, 0x32], {offset: 20})) { - return { - ext: 'mj2', - mime: 'image/mj2' - }; - } - } - - if (check([0x46, 0x4F, 0x52, 0x4D, 0x00])) { - return { - ext: 'aif', - mime: 'audio/aiff' - }; - } - - if (checkString('} features load entire GeoJSON FeatureCollection - * @returns {RBush} GeoJSON RBush - * @example - * var polys = turf.polygons([ - * [[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]], - * [[[-93, 32], [-83, 32], [-83, 39], [-93, 39], [-93, 32]]] - * ]); - * tree.load(polys); - */ - tree.load = function (features) { - var load = []; - // Load an Array of Features - if (Array.isArray(features)) { - features.forEach(function (feature) { - if (feature.type !== 'Feature') throw new Error('invalid features'); - feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature); - load.push(feature); - }); - } else { - // Load a FeatureCollection - featureEach(features, function (feature) { - if (feature.type !== 'Feature') throw new Error('invalid features'); - feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature); - load.push(feature); - }); - } - return rbush.prototype.load.call(this, load); - }; - - /** - * [remove](https://github.com/mourner/rbush#removing-data) - * - * @param {Feature} feature remove single GeoJSON Feature - * @param {Function} equals Pass a custom equals function to compare by value for removal. - * @returns {RBush} GeoJSON RBush - * @example - * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]); - * - * tree.remove(poly); - */ - tree.remove = function (feature, equals) { - if (feature.type !== 'Feature') throw new Error('invalid feature'); - feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature); - return rbush.prototype.remove.call(this, feature, equals); - }; - - /** - * [clear](https://github.com/mourner/rbush#removing-data) - * - * @returns {RBush} GeoJSON Rbush - * @example - * tree.clear() - */ - tree.clear = function () { - return rbush.prototype.clear.call(this); - }; - - /** - * [search](https://github.com/mourner/rbush#search) - * - * @param {BBox|FeatureCollection|Feature} geojson search with GeoJSON - * @returns {FeatureCollection} all features that intersects with the given GeoJSON. - * @example - * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]); - * - * tree.search(poly); - */ - tree.search = function (geojson) { - var features = rbush.prototype.search.call(this, this.toBBox(geojson)); - return featureCollection(features); - }; - - /** - * [collides](https://github.com/mourner/rbush#collisions) - * - * @param {BBox|FeatureCollection|Feature} geojson collides with GeoJSON - * @returns {boolean} true if there are any items intersecting the given GeoJSON, otherwise false. - * @example - * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]); - * - * tree.collides(poly); - */ - tree.collides = function (geojson) { - return rbush.prototype.collides.call(this, this.toBBox(geojson)); - }; - - /** - * [all](https://github.com/mourner/rbush#search) - * - * @returns {FeatureCollection} all the features in RBush - * @example - * tree.all() - */ - tree.all = function () { - var features = rbush.prototype.all.call(this); - return featureCollection(features); - }; - - /** - * [toJSON](https://github.com/mourner/rbush#export-and-import) - * - * @returns {any} export data as JSON object - * @example - * var exported = tree.toJSON() - */ - tree.toJSON = function () { - return rbush.prototype.toJSON.call(this); - }; - - /** - * [fromJSON](https://github.com/mourner/rbush#export-and-import) - * - * @param {any} json import previously exported data - * @returns {RBush} GeoJSON RBush - * @example - * var exported = { - * "children": [ - * { - * "type": "Feature", - * "geometry": { - * "type": "Point", - * "coordinates": [110, 50] - * }, - * "properties": {}, - * "bbox": [110, 50, 110, 50] - * } - * ], - * "height": 1, - * "leaf": true, - * "minX": 110, - * "minY": 50, - * "maxX": 110, - * "maxY": 50 - * } - * tree.fromJSON(exported) - */ - tree.fromJSON = function (json) { - return rbush.prototype.fromJSON.call(this, json); - }; - - /** - * Converts GeoJSON to {minX, minY, maxX, maxY} schema - * - * @private - * @param {BBox|FeatureCollection|Feature} geojson feature(s) to retrieve BBox from - * @returns {Object} converted to {minX, minY, maxX, maxY} - */ - tree.toBBox = function (geojson) { - var bbox; - if (geojson.bbox) bbox = geojson.bbox; - else if (Array.isArray(geojson) && geojson.length === 4) bbox = geojson; - else if (Array.isArray(geojson) && geojson.length === 6) bbox = [geojson[0], geojson[1], geojson[3], geojson[4]]; - else if (geojson.type === 'Feature') bbox = turfBBox(geojson); - else if (geojson.type === 'FeatureCollection') bbox = turfBBox(geojson); - else throw new Error('invalid geojson') - - return { - minX: bbox[0], - minY: bbox[1], - maxX: bbox[2], - maxY: bbox[3] - }; - }; - return tree; -} - -module.exports = geojsonRbush; -module.exports.default = geojsonRbush; - -},{"@turf/bbox":117,"@turf/helpers":123,"@turf/meta":225,"rbush":300}],225:[function(require,module,exports){ -arguments[4][122][0].apply(exports,arguments) -},{"@turf/helpers":123,"dup":122}],226:[function(require,module,exports){ -(function (global, factory) { -typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : -typeof define === 'function' && define.amd ? define(factory) : -(global.geojsonvt = factory()); -}(this, (function () { 'use strict'; - -// calculate simplification data using optimized Douglas-Peucker algorithm - -function simplify(coords, first, last, sqTolerance) { - var maxSqDist = sqTolerance; - var mid = (last - first) >> 1; - var minPosToMid = last - first; - var index; - - var ax = coords[first]; - var ay = coords[first + 1]; - var bx = coords[last]; - var by = coords[last + 1]; - - for (var i = first + 3; i < last; i += 3) { - var d = getSqSegDist(coords[i], coords[i + 1], ax, ay, bx, by); - - if (d > maxSqDist) { - index = i; - maxSqDist = d; - - } else if (d === maxSqDist) { - // a workaround to ensure we choose a pivot close to the middle of the list, - // reducing recursion depth, for certain degenerate inputs - // https://github.com/mapbox/geojson-vt/issues/104 - var posToMid = Math.abs(i - mid); - if (posToMid < minPosToMid) { - index = i; - minPosToMid = posToMid; - } - } - } - - if (maxSqDist > sqTolerance) { - if (index - first > 3) simplify(coords, first, index, sqTolerance); - coords[index + 2] = maxSqDist; - if (last - index > 3) simplify(coords, index, last, sqTolerance); - } -} - -// square distance from a point to a segment -function getSqSegDist(px, py, x, y, bx, by) { - - var dx = bx - x; - var dy = by - y; - - if (dx !== 0 || dy !== 0) { - - var t = ((px - x) * dx + (py - y) * dy) / (dx * dx + dy * dy); - - if (t > 1) { - x = bx; - y = by; - - } else if (t > 0) { - x += dx * t; - y += dy * t; - } - } - - dx = px - x; - dy = py - y; - - return dx * dx + dy * dy; -} - -function createFeature(id, type, geom, tags) { - var feature = { - id: typeof id === 'undefined' ? null : id, - type: type, - geometry: geom, - tags: tags, - minX: Infinity, - minY: Infinity, - maxX: -Infinity, - maxY: -Infinity - }; - calcBBox(feature); - return feature; -} - -function calcBBox(feature) { - var geom = feature.geometry; - var type = feature.type; - - if (type === 'Point' || type === 'MultiPoint' || type === 'LineString') { - calcLineBBox(feature, geom); - - } else if (type === 'Polygon' || type === 'MultiLineString') { - for (var i = 0; i < geom.length; i++) { - calcLineBBox(feature, geom[i]); - } - - } else if (type === 'MultiPolygon') { - for (i = 0; i < geom.length; i++) { - for (var j = 0; j < geom[i].length; j++) { - calcLineBBox(feature, geom[i][j]); - } - } - } -} - -function calcLineBBox(feature, geom) { - for (var i = 0; i < geom.length; i += 3) { - feature.minX = Math.min(feature.minX, geom[i]); - feature.minY = Math.min(feature.minY, geom[i + 1]); - feature.maxX = Math.max(feature.maxX, geom[i]); - feature.maxY = Math.max(feature.maxY, geom[i + 1]); - } -} - -// converts GeoJSON feature into an intermediate projected JSON vector format with simplification data - -function convert(data, options) { - var features = []; - if (data.type === 'FeatureCollection') { - for (var i = 0; i < data.features.length; i++) { - convertFeature(features, data.features[i], options, i); - } - - } else if (data.type === 'Feature') { - convertFeature(features, data, options); - - } else { - // single geometry or a geometry collection - convertFeature(features, {geometry: data}, options); - } - - return features; -} - -function convertFeature(features, geojson, options, index) { - if (!geojson.geometry) return; - - var coords = geojson.geometry.coordinates; - var type = geojson.geometry.type; - var tolerance = Math.pow(options.tolerance / ((1 << options.maxZoom) * options.extent), 2); - var geometry = []; - var id = geojson.id; - if (options.promoteId) { - id = geojson.properties[options.promoteId]; - } else if (options.generateId) { - id = index || 0; - } - if (type === 'Point') { - convertPoint(coords, geometry); - - } else if (type === 'MultiPoint') { - for (var i = 0; i < coords.length; i++) { - convertPoint(coords[i], geometry); - } - - } else if (type === 'LineString') { - convertLine(coords, geometry, tolerance, false); - - } else if (type === 'MultiLineString') { - if (options.lineMetrics) { - // explode into linestrings to be able to track metrics - for (i = 0; i < coords.length; i++) { - geometry = []; - convertLine(coords[i], geometry, tolerance, false); - features.push(createFeature(id, 'LineString', geometry, geojson.properties)); - } - return; - } else { - convertLines(coords, geometry, tolerance, false); - } - - } else if (type === 'Polygon') { - convertLines(coords, geometry, tolerance, true); - - } else if (type === 'MultiPolygon') { - for (i = 0; i < coords.length; i++) { - var polygon = []; - convertLines(coords[i], polygon, tolerance, true); - geometry.push(polygon); - } - } else if (type === 'GeometryCollection') { - for (i = 0; i < geojson.geometry.geometries.length; i++) { - convertFeature(features, { - id: id, - geometry: geojson.geometry.geometries[i], - properties: geojson.properties - }, options, index); - } - return; - } else { - throw new Error('Input data is not a valid GeoJSON object.'); - } - - features.push(createFeature(id, type, geometry, geojson.properties)); -} - -function convertPoint(coords, out) { - out.push(projectX(coords[0])); - out.push(projectY(coords[1])); - out.push(0); -} - -function convertLine(ring, out, tolerance, isPolygon) { - var x0, y0; - var size = 0; - - for (var j = 0; j < ring.length; j++) { - var x = projectX(ring[j][0]); - var y = projectY(ring[j][1]); - - out.push(x); - out.push(y); - out.push(0); - - if (j > 0) { - if (isPolygon) { - size += (x0 * y - x * y0) / 2; // area - } else { - size += Math.sqrt(Math.pow(x - x0, 2) + Math.pow(y - y0, 2)); // length - } - } - x0 = x; - y0 = y; - } - - var last = out.length - 3; - out[2] = 1; - simplify(out, 0, last, tolerance); - out[last + 2] = 1; - - out.size = Math.abs(size); - out.start = 0; - out.end = out.size; -} - -function convertLines(rings, out, tolerance, isPolygon) { - for (var i = 0; i < rings.length; i++) { - var geom = []; - convertLine(rings[i], geom, tolerance, isPolygon); - out.push(geom); - } -} - -function projectX(x) { - return x / 360 + 0.5; -} - -function projectY(y) { - var sin = Math.sin(y * Math.PI / 180); - var y2 = 0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI; - return y2 < 0 ? 0 : y2 > 1 ? 1 : y2; -} - -/* clip features between two axis-parallel lines: - * | | - * ___|___ | / - * / | \____|____/ - * | | - */ - -function clip(features, scale, k1, k2, axis, minAll, maxAll, options) { - - k1 /= scale; - k2 /= scale; - - if (minAll >= k1 && maxAll < k2) return features; // trivial accept - else if (maxAll < k1 || minAll >= k2) return null; // trivial reject - - var clipped = []; - - for (var i = 0; i < features.length; i++) { - - var feature = features[i]; - var geometry = feature.geometry; - var type = feature.type; - - var min = axis === 0 ? feature.minX : feature.minY; - var max = axis === 0 ? feature.maxX : feature.maxY; - - if (min >= k1 && max < k2) { // trivial accept - clipped.push(feature); - continue; - } else if (max < k1 || min >= k2) { // trivial reject - continue; - } - - var newGeometry = []; - - if (type === 'Point' || type === 'MultiPoint') { - clipPoints(geometry, newGeometry, k1, k2, axis); - - } else if (type === 'LineString') { - clipLine(geometry, newGeometry, k1, k2, axis, false, options.lineMetrics); - - } else if (type === 'MultiLineString') { - clipLines(geometry, newGeometry, k1, k2, axis, false); - - } else if (type === 'Polygon') { - clipLines(geometry, newGeometry, k1, k2, axis, true); - - } else if (type === 'MultiPolygon') { - for (var j = 0; j < geometry.length; j++) { - var polygon = []; - clipLines(geometry[j], polygon, k1, k2, axis, true); - if (polygon.length) { - newGeometry.push(polygon); - } - } - } - - if (newGeometry.length) { - if (options.lineMetrics && type === 'LineString') { - for (j = 0; j < newGeometry.length; j++) { - clipped.push(createFeature(feature.id, type, newGeometry[j], feature.tags)); - } - continue; - } - - if (type === 'LineString' || type === 'MultiLineString') { - if (newGeometry.length === 1) { - type = 'LineString'; - newGeometry = newGeometry[0]; - } else { - type = 'MultiLineString'; - } - } - if (type === 'Point' || type === 'MultiPoint') { - type = newGeometry.length === 3 ? 'Point' : 'MultiPoint'; - } - - clipped.push(createFeature(feature.id, type, newGeometry, feature.tags)); - } - } - - return clipped.length ? clipped : null; -} - -function clipPoints(geom, newGeom, k1, k2, axis) { - for (var i = 0; i < geom.length; i += 3) { - var a = geom[i + axis]; - - if (a >= k1 && a <= k2) { - newGeom.push(geom[i]); - newGeom.push(geom[i + 1]); - newGeom.push(geom[i + 2]); - } - } -} - -function clipLine(geom, newGeom, k1, k2, axis, isPolygon, trackMetrics) { - - var slice = newSlice(geom); - var intersect = axis === 0 ? intersectX : intersectY; - var len = geom.start; - var segLen, t; - - for (var i = 0; i < geom.length - 3; i += 3) { - var ax = geom[i]; - var ay = geom[i + 1]; - var az = geom[i + 2]; - var bx = geom[i + 3]; - var by = geom[i + 4]; - var a = axis === 0 ? ax : ay; - var b = axis === 0 ? bx : by; - var exited = false; - - if (trackMetrics) segLen = Math.sqrt(Math.pow(ax - bx, 2) + Math.pow(ay - by, 2)); - - if (a < k1) { - // ---|--> | (line enters the clip region from the left) - if (b > k1) { - t = intersect(slice, ax, ay, bx, by, k1); - if (trackMetrics) slice.start = len + segLen * t; - } - } else if (a > k2) { - // | <--|--- (line enters the clip region from the right) - if (b < k2) { - t = intersect(slice, ax, ay, bx, by, k2); - if (trackMetrics) slice.start = len + segLen * t; - } - } else { - addPoint(slice, ax, ay, az); - } - if (b < k1 && a >= k1) { - // <--|--- | or <--|-----|--- (line exits the clip region on the left) - t = intersect(slice, ax, ay, bx, by, k1); - exited = true; - } - if (b > k2 && a <= k2) { - // | ---|--> or ---|-----|--> (line exits the clip region on the right) - t = intersect(slice, ax, ay, bx, by, k2); - exited = true; - } - - if (!isPolygon && exited) { - if (trackMetrics) slice.end = len + segLen * t; - newGeom.push(slice); - slice = newSlice(geom); - } - - if (trackMetrics) len += segLen; - } - - // add the last point - var last = geom.length - 3; - ax = geom[last]; - ay = geom[last + 1]; - az = geom[last + 2]; - a = axis === 0 ? ax : ay; - if (a >= k1 && a <= k2) addPoint(slice, ax, ay, az); - - // close the polygon if its endpoints are not the same after clipping - last = slice.length - 3; - if (isPolygon && last >= 3 && (slice[last] !== slice[0] || slice[last + 1] !== slice[1])) { - addPoint(slice, slice[0], slice[1], slice[2]); - } - - // add the final slice - if (slice.length) { - newGeom.push(slice); - } -} - -function newSlice(line) { - var slice = []; - slice.size = line.size; - slice.start = line.start; - slice.end = line.end; - return slice; -} - -function clipLines(geom, newGeom, k1, k2, axis, isPolygon) { - for (var i = 0; i < geom.length; i++) { - clipLine(geom[i], newGeom, k1, k2, axis, isPolygon, false); - } -} - -function addPoint(out, x, y, z) { - out.push(x); - out.push(y); - out.push(z); -} - -function intersectX(out, ax, ay, bx, by, x) { - var t = (x - ax) / (bx - ax); - out.push(x); - out.push(ay + (by - ay) * t); - out.push(1); - return t; -} - -function intersectY(out, ax, ay, bx, by, y) { - var t = (y - ay) / (by - ay); - out.push(ax + (bx - ax) * t); - out.push(y); - out.push(1); - return t; -} - -function wrap(features, options) { - var buffer = options.buffer / options.extent; - var merged = features; - var left = clip(features, 1, -1 - buffer, buffer, 0, -1, 2, options); // left world copy - var right = clip(features, 1, 1 - buffer, 2 + buffer, 0, -1, 2, options); // right world copy - - if (left || right) { - merged = clip(features, 1, -buffer, 1 + buffer, 0, -1, 2, options) || []; // center world copy - - if (left) merged = shiftFeatureCoords(left, 1).concat(merged); // merge left into center - if (right) merged = merged.concat(shiftFeatureCoords(right, -1)); // merge right into center - } - - return merged; -} - -function shiftFeatureCoords(features, offset) { - var newFeatures = []; - - for (var i = 0; i < features.length; i++) { - var feature = features[i], - type = feature.type; - - var newGeometry; - - if (type === 'Point' || type === 'MultiPoint' || type === 'LineString') { - newGeometry = shiftCoords(feature.geometry, offset); - - } else if (type === 'MultiLineString' || type === 'Polygon') { - newGeometry = []; - for (var j = 0; j < feature.geometry.length; j++) { - newGeometry.push(shiftCoords(feature.geometry[j], offset)); - } - } else if (type === 'MultiPolygon') { - newGeometry = []; - for (j = 0; j < feature.geometry.length; j++) { - var newPolygon = []; - for (var k = 0; k < feature.geometry[j].length; k++) { - newPolygon.push(shiftCoords(feature.geometry[j][k], offset)); - } - newGeometry.push(newPolygon); - } - } - - newFeatures.push(createFeature(feature.id, type, newGeometry, feature.tags)); - } - - return newFeatures; -} - -function shiftCoords(points, offset) { - var newPoints = []; - newPoints.size = points.size; - - if (points.start !== undefined) { - newPoints.start = points.start; - newPoints.end = points.end; - } - - for (var i = 0; i < points.length; i += 3) { - newPoints.push(points[i] + offset, points[i + 1], points[i + 2]); - } - return newPoints; -} - -// Transforms the coordinates of each feature in the given tile from -// mercator-projected space into (extent x extent) tile space. -function transformTile(tile, extent) { - if (tile.transformed) return tile; - - var z2 = 1 << tile.z, - tx = tile.x, - ty = tile.y, - i, j, k; - - for (i = 0; i < tile.features.length; i++) { - var feature = tile.features[i], - geom = feature.geometry, - type = feature.type; - - feature.geometry = []; - - if (type === 1) { - for (j = 0; j < geom.length; j += 2) { - feature.geometry.push(transformPoint(geom[j], geom[j + 1], extent, z2, tx, ty)); - } - } else { - for (j = 0; j < geom.length; j++) { - var ring = []; - for (k = 0; k < geom[j].length; k += 2) { - ring.push(transformPoint(geom[j][k], geom[j][k + 1], extent, z2, tx, ty)); - } - feature.geometry.push(ring); - } - } - } - - tile.transformed = true; - - return tile; -} - -function transformPoint(x, y, extent, z2, tx, ty) { - return [ - Math.round(extent * (x * z2 - tx)), - Math.round(extent * (y * z2 - ty))]; -} - -function createTile(features, z, tx, ty, options) { - var tolerance = z === options.maxZoom ? 0 : options.tolerance / ((1 << z) * options.extent); - var tile = { - features: [], - numPoints: 0, - numSimplified: 0, - numFeatures: 0, - source: null, - x: tx, - y: ty, - z: z, - transformed: false, - minX: 2, - minY: 1, - maxX: -1, - maxY: 0 - }; - for (var i = 0; i < features.length; i++) { - tile.numFeatures++; - addFeature(tile, features[i], tolerance, options); - - var minX = features[i].minX; - var minY = features[i].minY; - var maxX = features[i].maxX; - var maxY = features[i].maxY; - - if (minX < tile.minX) tile.minX = minX; - if (minY < tile.minY) tile.minY = minY; - if (maxX > tile.maxX) tile.maxX = maxX; - if (maxY > tile.maxY) tile.maxY = maxY; - } - return tile; -} - -function addFeature(tile, feature, tolerance, options) { - - var geom = feature.geometry, - type = feature.type, - simplified = []; - - if (type === 'Point' || type === 'MultiPoint') { - for (var i = 0; i < geom.length; i += 3) { - simplified.push(geom[i]); - simplified.push(geom[i + 1]); - tile.numPoints++; - tile.numSimplified++; - } - - } else if (type === 'LineString') { - addLine(simplified, geom, tile, tolerance, false, false); - - } else if (type === 'MultiLineString' || type === 'Polygon') { - for (i = 0; i < geom.length; i++) { - addLine(simplified, geom[i], tile, tolerance, type === 'Polygon', i === 0); - } - - } else if (type === 'MultiPolygon') { - - for (var k = 0; k < geom.length; k++) { - var polygon = geom[k]; - for (i = 0; i < polygon.length; i++) { - addLine(simplified, polygon[i], tile, tolerance, true, i === 0); - } - } - } - - if (simplified.length) { - var tags = feature.tags || null; - if (type === 'LineString' && options.lineMetrics) { - tags = {}; - for (var key in feature.tags) tags[key] = feature.tags[key]; - tags['mapbox_clip_start'] = geom.start / geom.size; - tags['mapbox_clip_end'] = geom.end / geom.size; - } - var tileFeature = { - geometry: simplified, - type: type === 'Polygon' || type === 'MultiPolygon' ? 3 : - type === 'LineString' || type === 'MultiLineString' ? 2 : 1, - tags: tags - }; - if (feature.id !== null) { - tileFeature.id = feature.id; - } - tile.features.push(tileFeature); - } -} - -function addLine(result, geom, tile, tolerance, isPolygon, isOuter) { - var sqTolerance = tolerance * tolerance; - - if (tolerance > 0 && (geom.size < (isPolygon ? sqTolerance : tolerance))) { - tile.numPoints += geom.length / 3; - return; - } - - var ring = []; - - for (var i = 0; i < geom.length; i += 3) { - if (tolerance === 0 || geom[i + 2] > sqTolerance) { - tile.numSimplified++; - ring.push(geom[i]); - ring.push(geom[i + 1]); - } - tile.numPoints++; - } - - if (isPolygon) rewind(ring, isOuter); - - result.push(ring); -} - -function rewind(ring, clockwise) { - var area = 0; - for (var i = 0, len = ring.length, j = len - 2; i < len; j = i, i += 2) { - area += (ring[i] - ring[j]) * (ring[i + 1] + ring[j + 1]); - } - if (area > 0 === clockwise) { - for (i = 0, len = ring.length; i < len / 2; i += 2) { - var x = ring[i]; - var y = ring[i + 1]; - ring[i] = ring[len - 2 - i]; - ring[i + 1] = ring[len - 1 - i]; - ring[len - 2 - i] = x; - ring[len - 1 - i] = y; - } - } -} - -function geojsonvt(data, options) { - return new GeoJSONVT(data, options); -} - -function GeoJSONVT(data, options) { - options = this.options = extend(Object.create(this.options), options); - - var debug = options.debug; - - if (debug) console.time('preprocess data'); - - if (options.maxZoom < 0 || options.maxZoom > 24) throw new Error('maxZoom should be in the 0-24 range'); - if (options.promoteId && options.generateId) throw new Error('promoteId and generateId cannot be used together.'); - - var features = convert(data, options); - - this.tiles = {}; - this.tileCoords = []; - - if (debug) { - console.timeEnd('preprocess data'); - console.log('index: maxZoom: %d, maxPoints: %d', options.indexMaxZoom, options.indexMaxPoints); - console.time('generate tiles'); - this.stats = {}; - this.total = 0; - } - - features = wrap(features, options); - - // start slicing from the top tile down - if (features.length) this.splitTile(features, 0, 0, 0); - - if (debug) { - if (features.length) console.log('features: %d, points: %d', this.tiles[0].numFeatures, this.tiles[0].numPoints); - console.timeEnd('generate tiles'); - console.log('tiles generated:', this.total, JSON.stringify(this.stats)); - } -} - -GeoJSONVT.prototype.options = { - maxZoom: 14, // max zoom to preserve detail on - indexMaxZoom: 5, // max zoom in the tile index - indexMaxPoints: 100000, // max number of points per tile in the tile index - tolerance: 3, // simplification tolerance (higher means simpler) - extent: 4096, // tile extent - buffer: 64, // tile buffer on each side - lineMetrics: false, // whether to calculate line metrics - promoteId: null, // name of a feature property to be promoted to feature.id - generateId: false, // whether to generate feature ids. Cannot be used with promoteId - debug: 0 // logging level (0, 1 or 2) -}; - -GeoJSONVT.prototype.splitTile = function (features, z, x, y, cz, cx, cy) { - - var stack = [features, z, x, y], - options = this.options, - debug = options.debug; - - // avoid recursion by using a processing queue - while (stack.length) { - y = stack.pop(); - x = stack.pop(); - z = stack.pop(); - features = stack.pop(); - - var z2 = 1 << z, - id = toID(z, x, y), - tile = this.tiles[id]; - - if (!tile) { - if (debug > 1) console.time('creation'); - - tile = this.tiles[id] = createTile(features, z, x, y, options); - this.tileCoords.push({z: z, x: x, y: y}); - - if (debug) { - if (debug > 1) { - console.log('tile z%d-%d-%d (features: %d, points: %d, simplified: %d)', - z, x, y, tile.numFeatures, tile.numPoints, tile.numSimplified); - console.timeEnd('creation'); - } - var key = 'z' + z; - this.stats[key] = (this.stats[key] || 0) + 1; - this.total++; - } - } - - // save reference to original geometry in tile so that we can drill down later if we stop now - tile.source = features; - - // if it's the first-pass tiling - if (!cz) { - // stop tiling if we reached max zoom, or if the tile is too simple - if (z === options.indexMaxZoom || tile.numPoints <= options.indexMaxPoints) continue; - - // if a drilldown to a specific tile - } else { - // stop tiling if we reached base zoom or our target tile zoom - if (z === options.maxZoom || z === cz) continue; - - // stop tiling if it's not an ancestor of the target tile - var m = 1 << (cz - z); - if (x !== Math.floor(cx / m) || y !== Math.floor(cy / m)) continue; - } - - // if we slice further down, no need to keep source geometry - tile.source = null; - - if (features.length === 0) continue; - - if (debug > 1) console.time('clipping'); - - // values we'll use for clipping - var k1 = 0.5 * options.buffer / options.extent, - k2 = 0.5 - k1, - k3 = 0.5 + k1, - k4 = 1 + k1, - tl, bl, tr, br, left, right; - - tl = bl = tr = br = null; - - left = clip(features, z2, x - k1, x + k3, 0, tile.minX, tile.maxX, options); - right = clip(features, z2, x + k2, x + k4, 0, tile.minX, tile.maxX, options); - features = null; - - if (left) { - tl = clip(left, z2, y - k1, y + k3, 1, tile.minY, tile.maxY, options); - bl = clip(left, z2, y + k2, y + k4, 1, tile.minY, tile.maxY, options); - left = null; - } - - if (right) { - tr = clip(right, z2, y - k1, y + k3, 1, tile.minY, tile.maxY, options); - br = clip(right, z2, y + k2, y + k4, 1, tile.minY, tile.maxY, options); - right = null; - } - - if (debug > 1) console.timeEnd('clipping'); - - stack.push(tl || [], z + 1, x * 2, y * 2); - stack.push(bl || [], z + 1, x * 2, y * 2 + 1); - stack.push(tr || [], z + 1, x * 2 + 1, y * 2); - stack.push(br || [], z + 1, x * 2 + 1, y * 2 + 1); - } -}; - -GeoJSONVT.prototype.getTile = function (z, x, y) { - var options = this.options, - extent = options.extent, - debug = options.debug; - - if (z < 0 || z > 24) return null; - - var z2 = 1 << z; - x = ((x % z2) + z2) % z2; // wrap tile x coordinate - - var id = toID(z, x, y); - if (this.tiles[id]) return transformTile(this.tiles[id], extent); - - if (debug > 1) console.log('drilling down to z%d-%d-%d', z, x, y); - - var z0 = z, - x0 = x, - y0 = y, - parent; - - while (!parent && z0 > 0) { - z0--; - x0 = Math.floor(x0 / 2); - y0 = Math.floor(y0 / 2); - parent = this.tiles[toID(z0, x0, y0)]; - } - - if (!parent || !parent.source) return null; - - // if we found a parent tile containing the original geometry, we can drill down from it - if (debug > 1) console.log('found parent tile z%d-%d-%d', z0, x0, y0); - - if (debug > 1) console.time('drilling down'); - this.splitTile(parent.source, z0, x0, y0, z, x, y); - if (debug > 1) console.timeEnd('drilling down'); - - return this.tiles[id] ? transformTile(this.tiles[id], extent) : null; -}; - -function toID(z, x, y) { - return (((1 << z) * y + x) * 32) + z; -} - -function extend(dest, src) { - for (var i in src) dest[i] = src[i]; - return dest; -} - -return geojsonvt; - -}))); - -},{}],227:[function(require,module,exports){ -'use strict' -var Buffer = require('safe-buffer').Buffer -var Transform = require('stream').Transform -var inherits = require('inherits') - -function throwIfNotStringOrBuffer (val, prefix) { - if (!Buffer.isBuffer(val) && typeof val !== 'string') { - throw new TypeError(prefix + ' must be a string or a buffer') - } -} - -function HashBase (blockSize) { - Transform.call(this) - - this._block = Buffer.allocUnsafe(blockSize) - this._blockSize = blockSize - this._blockOffset = 0 - this._length = [0, 0, 0, 0] - - this._finalized = false -} - -inherits(HashBase, Transform) - -HashBase.prototype._transform = function (chunk, encoding, callback) { - var error = null - try { - this.update(chunk, encoding) - } catch (err) { - error = err - } - - callback(error) -} - -HashBase.prototype._flush = function (callback) { - var error = null - try { - this.push(this.digest()) - } catch (err) { - error = err - } - - callback(error) -} - -HashBase.prototype.update = function (data, encoding) { - throwIfNotStringOrBuffer(data, 'Data') - if (this._finalized) throw new Error('Digest already called') - if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding) - - // consume data - var block = this._block - var offset = 0 - while (this._blockOffset + data.length - offset >= this._blockSize) { - for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++] - this._update() - this._blockOffset = 0 - } - while (offset < data.length) block[this._blockOffset++] = data[offset++] - - // update length - for (var j = 0, carry = data.length * 8; carry > 0; ++j) { - this._length[j] += carry - carry = (this._length[j] / 0x0100000000) | 0 - if (carry > 0) this._length[j] -= 0x0100000000 * carry - } - - return this -} - -HashBase.prototype._update = function () { - throw new Error('_update is not implemented') -} - -HashBase.prototype.digest = function (encoding) { - if (this._finalized) throw new Error('Digest already called') - this._finalized = true - - var digest = this._digest() - if (encoding !== undefined) digest = digest.toString(encoding) - - // reset state - this._block.fill(0) - this._blockOffset = 0 - for (var i = 0; i < 4; ++i) this._length[i] = 0 - - return digest -} - -HashBase.prototype._digest = function () { - throw new Error('_digest is not implemented') -} - -module.exports = HashBase - -},{"inherits":262,"safe-buffer":318,"stream":328}],228:[function(require,module,exports){ -var hash = exports; - -hash.utils = require('./hash/utils'); -hash.common = require('./hash/common'); -hash.sha = require('./hash/sha'); -hash.ripemd = require('./hash/ripemd'); -hash.hmac = require('./hash/hmac'); - -// Proxy hash functions to the main object -hash.sha1 = hash.sha.sha1; -hash.sha256 = hash.sha.sha256; -hash.sha224 = hash.sha.sha224; -hash.sha384 = hash.sha.sha384; -hash.sha512 = hash.sha.sha512; -hash.ripemd160 = hash.ripemd.ripemd160; - -},{"./hash/common":229,"./hash/hmac":230,"./hash/ripemd":231,"./hash/sha":232,"./hash/utils":239}],229:[function(require,module,exports){ -'use strict'; - -var utils = require('./utils'); -var assert = require('minimalistic-assert'); - -function BlockHash() { - this.pending = null; - this.pendingTotal = 0; - this.blockSize = this.constructor.blockSize; - this.outSize = this.constructor.outSize; - this.hmacStrength = this.constructor.hmacStrength; - this.padLength = this.constructor.padLength / 8; - this.endian = 'big'; - - this._delta8 = this.blockSize / 8; - this._delta32 = this.blockSize / 32; -} -exports.BlockHash = BlockHash; - -BlockHash.prototype.update = function update(msg, enc) { - // Convert message to array, pad it, and join into 32bit blocks - msg = utils.toArray(msg, enc); - if (!this.pending) - this.pending = msg; - else - this.pending = this.pending.concat(msg); - this.pendingTotal += msg.length; - - // Enough data, try updating - if (this.pending.length >= this._delta8) { - msg = this.pending; - - // Process pending data in blocks - var r = msg.length % this._delta8; - this.pending = msg.slice(msg.length - r, msg.length); - if (this.pending.length === 0) - this.pending = null; - - msg = utils.join32(msg, 0, msg.length - r, this.endian); - for (var i = 0; i < msg.length; i += this._delta32) - this._update(msg, i, i + this._delta32); - } - - return this; -}; - -BlockHash.prototype.digest = function digest(enc) { - this.update(this._pad()); - assert(this.pending === null); - - return this._digest(enc); -}; - -BlockHash.prototype._pad = function pad() { - var len = this.pendingTotal; - var bytes = this._delta8; - var k = bytes - ((len + this.padLength) % bytes); - var res = new Array(k + this.padLength); - res[0] = 0x80; - for (var i = 1; i < k; i++) - res[i] = 0; - - // Append length - len <<= 3; - if (this.endian === 'big') { - for (var t = 8; t < this.padLength; t++) - res[i++] = 0; - - res[i++] = 0; - res[i++] = 0; - res[i++] = 0; - res[i++] = 0; - res[i++] = (len >>> 24) & 0xff; - res[i++] = (len >>> 16) & 0xff; - res[i++] = (len >>> 8) & 0xff; - res[i++] = len & 0xff; - } else { - res[i++] = len & 0xff; - res[i++] = (len >>> 8) & 0xff; - res[i++] = (len >>> 16) & 0xff; - res[i++] = (len >>> 24) & 0xff; - res[i++] = 0; - res[i++] = 0; - res[i++] = 0; - res[i++] = 0; - - for (t = 8; t < this.padLength; t++) - res[i++] = 0; - } - - return res; -}; - -},{"./utils":239,"minimalistic-assert":268}],230:[function(require,module,exports){ -'use strict'; - -var utils = require('./utils'); -var assert = require('minimalistic-assert'); - -function Hmac(hash, key, enc) { - if (!(this instanceof Hmac)) - return new Hmac(hash, key, enc); - this.Hash = hash; - this.blockSize = hash.blockSize / 8; - this.outSize = hash.outSize / 8; - this.inner = null; - this.outer = null; - - this._init(utils.toArray(key, enc)); -} -module.exports = Hmac; - -Hmac.prototype._init = function init(key) { - // Shorten key, if needed - if (key.length > this.blockSize) - key = new this.Hash().update(key).digest(); - assert(key.length <= this.blockSize); - - // Add padding to key - for (var i = key.length; i < this.blockSize; i++) - key.push(0); - - for (i = 0; i < key.length; i++) - key[i] ^= 0x36; - this.inner = new this.Hash().update(key); - - // 0x36 ^ 0x5c = 0x6a - for (i = 0; i < key.length; i++) - key[i] ^= 0x6a; - this.outer = new this.Hash().update(key); -}; - -Hmac.prototype.update = function update(msg, enc) { - this.inner.update(msg, enc); - return this; -}; - -Hmac.prototype.digest = function digest(enc) { - this.outer.update(this.inner.digest()); - return this.outer.digest(enc); -}; - -},{"./utils":239,"minimalistic-assert":268}],231:[function(require,module,exports){ -'use strict'; - -var utils = require('./utils'); -var common = require('./common'); - -var rotl32 = utils.rotl32; -var sum32 = utils.sum32; -var sum32_3 = utils.sum32_3; -var sum32_4 = utils.sum32_4; -var BlockHash = common.BlockHash; - -function RIPEMD160() { - if (!(this instanceof RIPEMD160)) - return new RIPEMD160(); - - BlockHash.call(this); - - this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ]; - this.endian = 'little'; -} -utils.inherits(RIPEMD160, BlockHash); -exports.ripemd160 = RIPEMD160; - -RIPEMD160.blockSize = 512; -RIPEMD160.outSize = 160; -RIPEMD160.hmacStrength = 192; -RIPEMD160.padLength = 64; - -RIPEMD160.prototype._update = function update(msg, start) { - var A = this.h[0]; - var B = this.h[1]; - var C = this.h[2]; - var D = this.h[3]; - var E = this.h[4]; - var Ah = A; - var Bh = B; - var Ch = C; - var Dh = D; - var Eh = E; - for (var j = 0; j < 80; j++) { - var T = sum32( - rotl32( - sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)), - s[j]), - E); - A = E; - E = D; - D = rotl32(C, 10); - C = B; - B = T; - T = sum32( - rotl32( - sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)), - sh[j]), - Eh); - Ah = Eh; - Eh = Dh; - Dh = rotl32(Ch, 10); - Ch = Bh; - Bh = T; - } - T = sum32_3(this.h[1], C, Dh); - this.h[1] = sum32_3(this.h[2], D, Eh); - this.h[2] = sum32_3(this.h[3], E, Ah); - this.h[3] = sum32_3(this.h[4], A, Bh); - this.h[4] = sum32_3(this.h[0], B, Ch); - this.h[0] = T; -}; - -RIPEMD160.prototype._digest = function digest(enc) { - if (enc === 'hex') - return utils.toHex32(this.h, 'little'); - else - return utils.split32(this.h, 'little'); -}; - -function f(j, x, y, z) { - if (j <= 15) - return x ^ y ^ z; - else if (j <= 31) - return (x & y) | ((~x) & z); - else if (j <= 47) - return (x | (~y)) ^ z; - else if (j <= 63) - return (x & z) | (y & (~z)); - else - return x ^ (y | (~z)); -} - -function K(j) { - if (j <= 15) - return 0x00000000; - else if (j <= 31) - return 0x5a827999; - else if (j <= 47) - return 0x6ed9eba1; - else if (j <= 63) - return 0x8f1bbcdc; - else - return 0xa953fd4e; -} - -function Kh(j) { - if (j <= 15) - return 0x50a28be6; - else if (j <= 31) - return 0x5c4dd124; - else if (j <= 47) - return 0x6d703ef3; - else if (j <= 63) - return 0x7a6d76e9; - else - return 0x00000000; -} - -var r = [ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, - 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, - 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, - 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 -]; - -var rh = [ - 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, - 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, - 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, - 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, - 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 -]; - -var s = [ - 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, - 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, - 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, - 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, - 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 -]; - -var sh = [ - 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, - 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, - 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, - 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, - 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 -]; - -},{"./common":229,"./utils":239}],232:[function(require,module,exports){ -'use strict'; - -exports.sha1 = require('./sha/1'); -exports.sha224 = require('./sha/224'); -exports.sha256 = require('./sha/256'); -exports.sha384 = require('./sha/384'); -exports.sha512 = require('./sha/512'); - -},{"./sha/1":233,"./sha/224":234,"./sha/256":235,"./sha/384":236,"./sha/512":237}],233:[function(require,module,exports){ -'use strict'; - -var utils = require('../utils'); -var common = require('../common'); -var shaCommon = require('./common'); - -var rotl32 = utils.rotl32; -var sum32 = utils.sum32; -var sum32_5 = utils.sum32_5; -var ft_1 = shaCommon.ft_1; -var BlockHash = common.BlockHash; - -var sha1_K = [ - 0x5A827999, 0x6ED9EBA1, - 0x8F1BBCDC, 0xCA62C1D6 -]; - -function SHA1() { - if (!(this instanceof SHA1)) - return new SHA1(); - - BlockHash.call(this); - this.h = [ - 0x67452301, 0xefcdab89, 0x98badcfe, - 0x10325476, 0xc3d2e1f0 ]; - this.W = new Array(80); -} - -utils.inherits(SHA1, BlockHash); -module.exports = SHA1; - -SHA1.blockSize = 512; -SHA1.outSize = 160; -SHA1.hmacStrength = 80; -SHA1.padLength = 64; - -SHA1.prototype._update = function _update(msg, start) { - var W = this.W; - - for (var i = 0; i < 16; i++) - W[i] = msg[start + i]; - - for(; i < W.length; i++) - W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1); - - var a = this.h[0]; - var b = this.h[1]; - var c = this.h[2]; - var d = this.h[3]; - var e = this.h[4]; - - for (i = 0; i < W.length; i++) { - var s = ~~(i / 20); - var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]); - e = d; - d = c; - c = rotl32(b, 30); - b = a; - a = t; - } - - this.h[0] = sum32(this.h[0], a); - this.h[1] = sum32(this.h[1], b); - this.h[2] = sum32(this.h[2], c); - this.h[3] = sum32(this.h[3], d); - this.h[4] = sum32(this.h[4], e); -}; - -SHA1.prototype._digest = function digest(enc) { - if (enc === 'hex') - return utils.toHex32(this.h, 'big'); - else - return utils.split32(this.h, 'big'); -}; - -},{"../common":229,"../utils":239,"./common":238}],234:[function(require,module,exports){ -'use strict'; - -var utils = require('../utils'); -var SHA256 = require('./256'); - -function SHA224() { - if (!(this instanceof SHA224)) - return new SHA224(); - - SHA256.call(this); - this.h = [ - 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, - 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ]; -} -utils.inherits(SHA224, SHA256); -module.exports = SHA224; - -SHA224.blockSize = 512; -SHA224.outSize = 224; -SHA224.hmacStrength = 192; -SHA224.padLength = 64; - -SHA224.prototype._digest = function digest(enc) { - // Just truncate output - if (enc === 'hex') - return utils.toHex32(this.h.slice(0, 7), 'big'); - else - return utils.split32(this.h.slice(0, 7), 'big'); -}; - - -},{"../utils":239,"./256":235}],235:[function(require,module,exports){ -'use strict'; - -var utils = require('../utils'); -var common = require('../common'); -var shaCommon = require('./common'); -var assert = require('minimalistic-assert'); - -var sum32 = utils.sum32; -var sum32_4 = utils.sum32_4; -var sum32_5 = utils.sum32_5; -var ch32 = shaCommon.ch32; -var maj32 = shaCommon.maj32; -var s0_256 = shaCommon.s0_256; -var s1_256 = shaCommon.s1_256; -var g0_256 = shaCommon.g0_256; -var g1_256 = shaCommon.g1_256; - -var BlockHash = common.BlockHash; - -var sha256_K = [ - 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, - 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, - 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, - 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, - 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, - 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, - 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, - 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, - 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, - 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, - 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, - 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, - 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, - 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, - 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, - 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 -]; - -function SHA256() { - if (!(this instanceof SHA256)) - return new SHA256(); - - BlockHash.call(this); - this.h = [ - 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, - 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 - ]; - this.k = sha256_K; - this.W = new Array(64); -} -utils.inherits(SHA256, BlockHash); -module.exports = SHA256; - -SHA256.blockSize = 512; -SHA256.outSize = 256; -SHA256.hmacStrength = 192; -SHA256.padLength = 64; - -SHA256.prototype._update = function _update(msg, start) { - var W = this.W; - - for (var i = 0; i < 16; i++) - W[i] = msg[start + i]; - for (; i < W.length; i++) - W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]); - - var a = this.h[0]; - var b = this.h[1]; - var c = this.h[2]; - var d = this.h[3]; - var e = this.h[4]; - var f = this.h[5]; - var g = this.h[6]; - var h = this.h[7]; - - assert(this.k.length === W.length); - for (i = 0; i < W.length; i++) { - var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]); - var T2 = sum32(s0_256(a), maj32(a, b, c)); - h = g; - g = f; - f = e; - e = sum32(d, T1); - d = c; - c = b; - b = a; - a = sum32(T1, T2); - } - - this.h[0] = sum32(this.h[0], a); - this.h[1] = sum32(this.h[1], b); - this.h[2] = sum32(this.h[2], c); - this.h[3] = sum32(this.h[3], d); - this.h[4] = sum32(this.h[4], e); - this.h[5] = sum32(this.h[5], f); - this.h[6] = sum32(this.h[6], g); - this.h[7] = sum32(this.h[7], h); -}; - -SHA256.prototype._digest = function digest(enc) { - if (enc === 'hex') - return utils.toHex32(this.h, 'big'); - else - return utils.split32(this.h, 'big'); -}; - -},{"../common":229,"../utils":239,"./common":238,"minimalistic-assert":268}],236:[function(require,module,exports){ -'use strict'; - -var utils = require('../utils'); - -var SHA512 = require('./512'); - -function SHA384() { - if (!(this instanceof SHA384)) - return new SHA384(); - - SHA512.call(this); - this.h = [ - 0xcbbb9d5d, 0xc1059ed8, - 0x629a292a, 0x367cd507, - 0x9159015a, 0x3070dd17, - 0x152fecd8, 0xf70e5939, - 0x67332667, 0xffc00b31, - 0x8eb44a87, 0x68581511, - 0xdb0c2e0d, 0x64f98fa7, - 0x47b5481d, 0xbefa4fa4 ]; -} -utils.inherits(SHA384, SHA512); -module.exports = SHA384; - -SHA384.blockSize = 1024; -SHA384.outSize = 384; -SHA384.hmacStrength = 192; -SHA384.padLength = 128; - -SHA384.prototype._digest = function digest(enc) { - if (enc === 'hex') - return utils.toHex32(this.h.slice(0, 12), 'big'); - else - return utils.split32(this.h.slice(0, 12), 'big'); -}; - -},{"../utils":239,"./512":237}],237:[function(require,module,exports){ -'use strict'; - -var utils = require('../utils'); -var common = require('../common'); -var assert = require('minimalistic-assert'); - -var rotr64_hi = utils.rotr64_hi; -var rotr64_lo = utils.rotr64_lo; -var shr64_hi = utils.shr64_hi; -var shr64_lo = utils.shr64_lo; -var sum64 = utils.sum64; -var sum64_hi = utils.sum64_hi; -var sum64_lo = utils.sum64_lo; -var sum64_4_hi = utils.sum64_4_hi; -var sum64_4_lo = utils.sum64_4_lo; -var sum64_5_hi = utils.sum64_5_hi; -var sum64_5_lo = utils.sum64_5_lo; - -var BlockHash = common.BlockHash; - -var sha512_K = [ - 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, - 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, - 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, - 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, - 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, - 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, - 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, - 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, - 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, - 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, - 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, - 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, - 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, - 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, - 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, - 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, - 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, - 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, - 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, - 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, - 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, - 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, - 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, - 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, - 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, - 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, - 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, - 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, - 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, - 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, - 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, - 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, - 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, - 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, - 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, - 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, - 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, - 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, - 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, - 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 -]; - -function SHA512() { - if (!(this instanceof SHA512)) - return new SHA512(); - - BlockHash.call(this); - this.h = [ - 0x6a09e667, 0xf3bcc908, - 0xbb67ae85, 0x84caa73b, - 0x3c6ef372, 0xfe94f82b, - 0xa54ff53a, 0x5f1d36f1, - 0x510e527f, 0xade682d1, - 0x9b05688c, 0x2b3e6c1f, - 0x1f83d9ab, 0xfb41bd6b, - 0x5be0cd19, 0x137e2179 ]; - this.k = sha512_K; - this.W = new Array(160); -} -utils.inherits(SHA512, BlockHash); -module.exports = SHA512; - -SHA512.blockSize = 1024; -SHA512.outSize = 512; -SHA512.hmacStrength = 192; -SHA512.padLength = 128; - -SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) { - var W = this.W; - - // 32 x 32bit words - for (var i = 0; i < 32; i++) - W[i] = msg[start + i]; - for (; i < W.length; i += 2) { - var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2 - var c0_lo = g1_512_lo(W[i - 4], W[i - 3]); - var c1_hi = W[i - 14]; // i - 7 - var c1_lo = W[i - 13]; - var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15 - var c2_lo = g0_512_lo(W[i - 30], W[i - 29]); - var c3_hi = W[i - 32]; // i - 16 - var c3_lo = W[i - 31]; - - W[i] = sum64_4_hi( - c0_hi, c0_lo, - c1_hi, c1_lo, - c2_hi, c2_lo, - c3_hi, c3_lo); - W[i + 1] = sum64_4_lo( - c0_hi, c0_lo, - c1_hi, c1_lo, - c2_hi, c2_lo, - c3_hi, c3_lo); - } -}; - -SHA512.prototype._update = function _update(msg, start) { - this._prepareBlock(msg, start); - - var W = this.W; - - var ah = this.h[0]; - var al = this.h[1]; - var bh = this.h[2]; - var bl = this.h[3]; - var ch = this.h[4]; - var cl = this.h[5]; - var dh = this.h[6]; - var dl = this.h[7]; - var eh = this.h[8]; - var el = this.h[9]; - var fh = this.h[10]; - var fl = this.h[11]; - var gh = this.h[12]; - var gl = this.h[13]; - var hh = this.h[14]; - var hl = this.h[15]; - - assert(this.k.length === W.length); - for (var i = 0; i < W.length; i += 2) { - var c0_hi = hh; - var c0_lo = hl; - var c1_hi = s1_512_hi(eh, el); - var c1_lo = s1_512_lo(eh, el); - var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl); - var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl); - var c3_hi = this.k[i]; - var c3_lo = this.k[i + 1]; - var c4_hi = W[i]; - var c4_lo = W[i + 1]; - - var T1_hi = sum64_5_hi( - c0_hi, c0_lo, - c1_hi, c1_lo, - c2_hi, c2_lo, - c3_hi, c3_lo, - c4_hi, c4_lo); - var T1_lo = sum64_5_lo( - c0_hi, c0_lo, - c1_hi, c1_lo, - c2_hi, c2_lo, - c3_hi, c3_lo, - c4_hi, c4_lo); - - c0_hi = s0_512_hi(ah, al); - c0_lo = s0_512_lo(ah, al); - c1_hi = maj64_hi(ah, al, bh, bl, ch, cl); - c1_lo = maj64_lo(ah, al, bh, bl, ch, cl); - - var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo); - var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo); - - hh = gh; - hl = gl; - - gh = fh; - gl = fl; - - fh = eh; - fl = el; - - eh = sum64_hi(dh, dl, T1_hi, T1_lo); - el = sum64_lo(dl, dl, T1_hi, T1_lo); - - dh = ch; - dl = cl; - - ch = bh; - cl = bl; - - bh = ah; - bl = al; - - ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo); - al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo); - } - - sum64(this.h, 0, ah, al); - sum64(this.h, 2, bh, bl); - sum64(this.h, 4, ch, cl); - sum64(this.h, 6, dh, dl); - sum64(this.h, 8, eh, el); - sum64(this.h, 10, fh, fl); - sum64(this.h, 12, gh, gl); - sum64(this.h, 14, hh, hl); -}; - -SHA512.prototype._digest = function digest(enc) { - if (enc === 'hex') - return utils.toHex32(this.h, 'big'); - else - return utils.split32(this.h, 'big'); -}; - -function ch64_hi(xh, xl, yh, yl, zh) { - var r = (xh & yh) ^ ((~xh) & zh); - if (r < 0) - r += 0x100000000; - return r; -} - -function ch64_lo(xh, xl, yh, yl, zh, zl) { - var r = (xl & yl) ^ ((~xl) & zl); - if (r < 0) - r += 0x100000000; - return r; -} - -function maj64_hi(xh, xl, yh, yl, zh) { - var r = (xh & yh) ^ (xh & zh) ^ (yh & zh); - if (r < 0) - r += 0x100000000; - return r; -} - -function maj64_lo(xh, xl, yh, yl, zh, zl) { - var r = (xl & yl) ^ (xl & zl) ^ (yl & zl); - if (r < 0) - r += 0x100000000; - return r; -} - -function s0_512_hi(xh, xl) { - var c0_hi = rotr64_hi(xh, xl, 28); - var c1_hi = rotr64_hi(xl, xh, 2); // 34 - var c2_hi = rotr64_hi(xl, xh, 7); // 39 - - var r = c0_hi ^ c1_hi ^ c2_hi; - if (r < 0) - r += 0x100000000; - return r; -} - -function s0_512_lo(xh, xl) { - var c0_lo = rotr64_lo(xh, xl, 28); - var c1_lo = rotr64_lo(xl, xh, 2); // 34 - var c2_lo = rotr64_lo(xl, xh, 7); // 39 - - var r = c0_lo ^ c1_lo ^ c2_lo; - if (r < 0) - r += 0x100000000; - return r; -} - -function s1_512_hi(xh, xl) { - var c0_hi = rotr64_hi(xh, xl, 14); - var c1_hi = rotr64_hi(xh, xl, 18); - var c2_hi = rotr64_hi(xl, xh, 9); // 41 - - var r = c0_hi ^ c1_hi ^ c2_hi; - if (r < 0) - r += 0x100000000; - return r; -} - -function s1_512_lo(xh, xl) { - var c0_lo = rotr64_lo(xh, xl, 14); - var c1_lo = rotr64_lo(xh, xl, 18); - var c2_lo = rotr64_lo(xl, xh, 9); // 41 - - var r = c0_lo ^ c1_lo ^ c2_lo; - if (r < 0) - r += 0x100000000; - return r; -} - -function g0_512_hi(xh, xl) { - var c0_hi = rotr64_hi(xh, xl, 1); - var c1_hi = rotr64_hi(xh, xl, 8); - var c2_hi = shr64_hi(xh, xl, 7); - - var r = c0_hi ^ c1_hi ^ c2_hi; - if (r < 0) - r += 0x100000000; - return r; -} - -function g0_512_lo(xh, xl) { - var c0_lo = rotr64_lo(xh, xl, 1); - var c1_lo = rotr64_lo(xh, xl, 8); - var c2_lo = shr64_lo(xh, xl, 7); - - var r = c0_lo ^ c1_lo ^ c2_lo; - if (r < 0) - r += 0x100000000; - return r; -} - -function g1_512_hi(xh, xl) { - var c0_hi = rotr64_hi(xh, xl, 19); - var c1_hi = rotr64_hi(xl, xh, 29); // 61 - var c2_hi = shr64_hi(xh, xl, 6); - - var r = c0_hi ^ c1_hi ^ c2_hi; - if (r < 0) - r += 0x100000000; - return r; -} - -function g1_512_lo(xh, xl) { - var c0_lo = rotr64_lo(xh, xl, 19); - var c1_lo = rotr64_lo(xl, xh, 29); // 61 - var c2_lo = shr64_lo(xh, xl, 6); - - var r = c0_lo ^ c1_lo ^ c2_lo; - if (r < 0) - r += 0x100000000; - return r; -} - -},{"../common":229,"../utils":239,"minimalistic-assert":268}],238:[function(require,module,exports){ -'use strict'; - -var utils = require('../utils'); -var rotr32 = utils.rotr32; - -function ft_1(s, x, y, z) { - if (s === 0) - return ch32(x, y, z); - if (s === 1 || s === 3) - return p32(x, y, z); - if (s === 2) - return maj32(x, y, z); -} -exports.ft_1 = ft_1; - -function ch32(x, y, z) { - return (x & y) ^ ((~x) & z); -} -exports.ch32 = ch32; - -function maj32(x, y, z) { - return (x & y) ^ (x & z) ^ (y & z); -} -exports.maj32 = maj32; - -function p32(x, y, z) { - return x ^ y ^ z; -} -exports.p32 = p32; - -function s0_256(x) { - return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22); -} -exports.s0_256 = s0_256; - -function s1_256(x) { - return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25); -} -exports.s1_256 = s1_256; - -function g0_256(x) { - return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3); -} -exports.g0_256 = g0_256; - -function g1_256(x) { - return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10); -} -exports.g1_256 = g1_256; - -},{"../utils":239}],239:[function(require,module,exports){ -'use strict'; - -var assert = require('minimalistic-assert'); -var inherits = require('inherits'); - -exports.inherits = inherits; - -function isSurrogatePair(msg, i) { - if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) { - return false; - } - if (i < 0 || i + 1 >= msg.length) { - return false; - } - return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00; -} - -function toArray(msg, enc) { - if (Array.isArray(msg)) - return msg.slice(); - if (!msg) - return []; - var res = []; - if (typeof msg === 'string') { - if (!enc) { - // Inspired by stringToUtf8ByteArray() in closure-library by Google - // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143 - // Apache License 2.0 - // https://github.com/google/closure-library/blob/master/LICENSE - var p = 0; - for (var i = 0; i < msg.length; i++) { - var c = msg.charCodeAt(i); - if (c < 128) { - res[p++] = c; - } else if (c < 2048) { - res[p++] = (c >> 6) | 192; - res[p++] = (c & 63) | 128; - } else if (isSurrogatePair(msg, i)) { - c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF); - res[p++] = (c >> 18) | 240; - res[p++] = ((c >> 12) & 63) | 128; - res[p++] = ((c >> 6) & 63) | 128; - res[p++] = (c & 63) | 128; - } else { - res[p++] = (c >> 12) | 224; - res[p++] = ((c >> 6) & 63) | 128; - res[p++] = (c & 63) | 128; - } - } - } else if (enc === 'hex') { - msg = msg.replace(/[^a-z0-9]+/ig, ''); - if (msg.length % 2 !== 0) - msg = '0' + msg; - for (i = 0; i < msg.length; i += 2) - res.push(parseInt(msg[i] + msg[i + 1], 16)); - } - } else { - for (i = 0; i < msg.length; i++) - res[i] = msg[i] | 0; - } - return res; -} -exports.toArray = toArray; - -function toHex(msg) { - var res = ''; - for (var i = 0; i < msg.length; i++) - res += zero2(msg[i].toString(16)); - return res; -} -exports.toHex = toHex; - -function htonl(w) { - var res = (w >>> 24) | - ((w >>> 8) & 0xff00) | - ((w << 8) & 0xff0000) | - ((w & 0xff) << 24); - return res >>> 0; -} -exports.htonl = htonl; - -function toHex32(msg, endian) { - var res = ''; - for (var i = 0; i < msg.length; i++) { - var w = msg[i]; - if (endian === 'little') - w = htonl(w); - res += zero8(w.toString(16)); - } - return res; -} -exports.toHex32 = toHex32; - -function zero2(word) { - if (word.length === 1) - return '0' + word; - else - return word; -} -exports.zero2 = zero2; - -function zero8(word) { - if (word.length === 7) - return '0' + word; - else if (word.length === 6) - return '00' + word; - else if (word.length === 5) - return '000' + word; - else if (word.length === 4) - return '0000' + word; - else if (word.length === 3) - return '00000' + word; - else if (word.length === 2) - return '000000' + word; - else if (word.length === 1) - return '0000000' + word; - else - return word; -} -exports.zero8 = zero8; - -function join32(msg, start, end, endian) { - var len = end - start; - assert(len % 4 === 0); - var res = new Array(len / 4); - for (var i = 0, k = start; i < res.length; i++, k += 4) { - var w; - if (endian === 'big') - w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3]; - else - w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k]; - res[i] = w >>> 0; - } - return res; -} -exports.join32 = join32; - -function split32(msg, endian) { - var res = new Array(msg.length * 4); - for (var i = 0, k = 0; i < msg.length; i++, k += 4) { - var m = msg[i]; - if (endian === 'big') { - res[k] = m >>> 24; - res[k + 1] = (m >>> 16) & 0xff; - res[k + 2] = (m >>> 8) & 0xff; - res[k + 3] = m & 0xff; - } else { - res[k + 3] = m >>> 24; - res[k + 2] = (m >>> 16) & 0xff; - res[k + 1] = (m >>> 8) & 0xff; - res[k] = m & 0xff; - } - } - return res; -} -exports.split32 = split32; - -function rotr32(w, b) { - return (w >>> b) | (w << (32 - b)); -} -exports.rotr32 = rotr32; - -function rotl32(w, b) { - return (w << b) | (w >>> (32 - b)); -} -exports.rotl32 = rotl32; - -function sum32(a, b) { - return (a + b) >>> 0; -} -exports.sum32 = sum32; - -function sum32_3(a, b, c) { - return (a + b + c) >>> 0; -} -exports.sum32_3 = sum32_3; - -function sum32_4(a, b, c, d) { - return (a + b + c + d) >>> 0; -} -exports.sum32_4 = sum32_4; - -function sum32_5(a, b, c, d, e) { - return (a + b + c + d + e) >>> 0; -} -exports.sum32_5 = sum32_5; - -function sum64(buf, pos, ah, al) { - var bh = buf[pos]; - var bl = buf[pos + 1]; - - var lo = (al + bl) >>> 0; - var hi = (lo < al ? 1 : 0) + ah + bh; - buf[pos] = hi >>> 0; - buf[pos + 1] = lo; -} -exports.sum64 = sum64; - -function sum64_hi(ah, al, bh, bl) { - var lo = (al + bl) >>> 0; - var hi = (lo < al ? 1 : 0) + ah + bh; - return hi >>> 0; -} -exports.sum64_hi = sum64_hi; - -function sum64_lo(ah, al, bh, bl) { - var lo = al + bl; - return lo >>> 0; -} -exports.sum64_lo = sum64_lo; - -function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) { - var carry = 0; - var lo = al; - lo = (lo + bl) >>> 0; - carry += lo < al ? 1 : 0; - lo = (lo + cl) >>> 0; - carry += lo < cl ? 1 : 0; - lo = (lo + dl) >>> 0; - carry += lo < dl ? 1 : 0; - - var hi = ah + bh + ch + dh + carry; - return hi >>> 0; -} -exports.sum64_4_hi = sum64_4_hi; - -function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) { - var lo = al + bl + cl + dl; - return lo >>> 0; -} -exports.sum64_4_lo = sum64_4_lo; - -function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) { - var carry = 0; - var lo = al; - lo = (lo + bl) >>> 0; - carry += lo < al ? 1 : 0; - lo = (lo + cl) >>> 0; - carry += lo < cl ? 1 : 0; - lo = (lo + dl) >>> 0; - carry += lo < dl ? 1 : 0; - lo = (lo + el) >>> 0; - carry += lo < el ? 1 : 0; - - var hi = ah + bh + ch + dh + eh + carry; - return hi >>> 0; -} -exports.sum64_5_hi = sum64_5_hi; - -function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) { - var lo = al + bl + cl + dl + el; - - return lo >>> 0; -} -exports.sum64_5_lo = sum64_5_lo; - -function rotr64_hi(ah, al, num) { - var r = (al << (32 - num)) | (ah >>> num); - return r >>> 0; -} -exports.rotr64_hi = rotr64_hi; - -function rotr64_lo(ah, al, num) { - var r = (ah << (32 - num)) | (al >>> num); - return r >>> 0; -} -exports.rotr64_lo = rotr64_lo; - -function shr64_hi(ah, al, num) { - return ah >>> num; -} -exports.shr64_hi = shr64_hi; - -function shr64_lo(ah, al, num) { - var r = (ah << (32 - num)) | (al >>> num); - return r >>> 0; -} -exports.shr64_lo = shr64_lo; - -},{"inherits":262,"minimalistic-assert":268}],240:[function(require,module,exports){ -'use strict'; - -var hash = require('hash.js'); -var utils = require('minimalistic-crypto-utils'); -var assert = require('minimalistic-assert'); - -function HmacDRBG(options) { - if (!(this instanceof HmacDRBG)) - return new HmacDRBG(options); - this.hash = options.hash; - this.predResist = !!options.predResist; - - this.outLen = this.hash.outSize; - this.minEntropy = options.minEntropy || this.hash.hmacStrength; - - this._reseed = null; - this.reseedInterval = null; - this.K = null; - this.V = null; - - var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex'); - var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex'); - var pers = utils.toArray(options.pers, options.persEnc || 'hex'); - assert(entropy.length >= (this.minEntropy / 8), - 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits'); - this._init(entropy, nonce, pers); -} -module.exports = HmacDRBG; - -HmacDRBG.prototype._init = function init(entropy, nonce, pers) { - var seed = entropy.concat(nonce).concat(pers); - - this.K = new Array(this.outLen / 8); - this.V = new Array(this.outLen / 8); - for (var i = 0; i < this.V.length; i++) { - this.K[i] = 0x00; - this.V[i] = 0x01; - } - - this._update(seed); - this._reseed = 1; - this.reseedInterval = 0x1000000000000; // 2^48 -}; - -HmacDRBG.prototype._hmac = function hmac() { - return new hash.hmac(this.hash, this.K); -}; - -HmacDRBG.prototype._update = function update(seed) { - var kmac = this._hmac() - .update(this.V) - .update([ 0x00 ]); - if (seed) - kmac = kmac.update(seed); - this.K = kmac.digest(); - this.V = this._hmac().update(this.V).digest(); - if (!seed) - return; - - this.K = this._hmac() - .update(this.V) - .update([ 0x01 ]) - .update(seed) - .digest(); - this.V = this._hmac().update(this.V).digest(); -}; - -HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) { - // Optional entropy enc - if (typeof entropyEnc !== 'string') { - addEnc = add; - add = entropyEnc; - entropyEnc = null; - } - - entropy = utils.toArray(entropy, entropyEnc); - add = utils.toArray(add, addEnc); - - assert(entropy.length >= (this.minEntropy / 8), - 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits'); - - this._update(entropy.concat(add || [])); - this._reseed = 1; -}; - -HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) { - if (this._reseed > this.reseedInterval) - throw new Error('Reseed is required'); - - // Optional encoding - if (typeof enc !== 'string') { - addEnc = add; - add = enc; - enc = null; - } - - // Optional additional data - if (add) { - add = utils.toArray(add, addEnc || 'hex'); - this._update(add); - } - - var temp = []; - while (temp.length < len) { - this.V = this._hmac().update(this.V).digest(); - temp = temp.concat(this.V); - } - - var res = temp.slice(0, len); - this._update(add); - this._reseed++; - return utils.encode(res, enc); -}; - -},{"hash.js":228,"minimalistic-assert":268,"minimalistic-crypto-utils":269}],241:[function(require,module,exports){ -exports.read = function (buffer, offset, isLE, mLen, nBytes) { - var e, m - var eLen = (nBytes * 8) - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var nBits = -7 - var i = isLE ? (nBytes - 1) : 0 - var d = isLE ? -1 : 1 - var s = buffer[offset + i] - - i += d - - e = s & ((1 << (-nBits)) - 1) - s >>= (-nBits) - nBits += eLen - for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} - - m = e & ((1 << (-nBits)) - 1) - e >>= (-nBits) - nBits += mLen - for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} - - if (e === 0) { - e = 1 - eBias - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity) - } else { - m = m + Math.pow(2, mLen) - e = e - eBias - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen) -} - -exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c - var eLen = (nBytes * 8) - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) - var i = isLE ? 0 : (nBytes - 1) - var d = isLE ? 1 : -1 - var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 - - value = Math.abs(value) - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0 - e = eMax - } else { - e = Math.floor(Math.log(value) / Math.LN2) - if (value * (c = Math.pow(2, -e)) < 1) { - e-- - c *= 2 - } - if (e + eBias >= 1) { - value += rt / c - } else { - value += rt * Math.pow(2, 1 - eBias) - } - if (value * c >= 2) { - e++ - c /= 2 - } - - if (e + eBias >= eMax) { - m = 0 - e = eMax - } else if (e + eBias >= 1) { - m = ((value * c) - 1) * Math.pow(2, mLen) - e = e + eBias - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) - e = 0 - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - - e = (e << mLen) | m - eLen += mLen - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} - - buffer[offset + i - d] |= s * 128 -} - -},{}],242:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const types_1 = require("./types"); -const keys = Object.keys(types_1.typeHandlers); -// This map helps avoid validating for every single image type -const firstBytes = { - 0x38: 'psd', - 0x42: 'bmp', - 0x44: 'dds', - 0x47: 'gif', - 0x49: 'tiff', - 0x4d: 'tiff', - 0x52: 'webp', - 0x69: 'icns', - 0x89: 'png', - 0xff: 'jpg' -}; -function detector(buffer) { - const byte = buffer[0]; - if (byte in firstBytes) { - const type = firstBytes[byte]; - if (types_1.typeHandlers[type].validate(buffer)) { - return type; - } - } - const finder = (key) => types_1.typeHandlers[key].validate(buffer); - return keys.find(finder); -} -exports.detector = detector; - -},{"./types":246}],243:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const fs = require("fs"); -// fs.promises polyfill for node 8.x -if (!('promises' in fs)) { - class FileHandle { - constructor(fd) { - this.fd = fd; - } - stat() { - return new Promise((resolve, reject) => { - fs.fstat(this.fd, (err, stats) => { - if (err) { - reject(err); - } - else { - resolve(stats); - } - }); - }); - } - read(buffer, offset, length, position) { - return new Promise((resolve, reject) => { - fs.read(this.fd, buffer, offset, length, position, (err) => { - if (err) { - reject(err); - } - else { - resolve(); - } - }); - }); - } - close() { - return new Promise((resolve, reject) => { - fs.close(this.fd, (err) => { - if (err) { - reject(err); - } - else { - resolve(); - } - }); - }); - } - } - Object.defineProperty(fs, 'promises', { - value: { - open: (filepath, flags) => (new Promise((resolve, reject) => { - fs.open(filepath, flags, (err, fd) => { - if (err) { - reject(err); - } - else { - resolve(new FileHandle(fd)); - } - }); - })), - }, - writable: false - }); -} - -},{"fs":177}],244:[function(require,module,exports){ -(function (process,Buffer){ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const fs = require("fs"); -const path = require("path"); -const queue_1 = require("queue"); -const types_1 = require("./types"); -const detector_1 = require("./detector"); -require("./fs.promises"); -// Maximum buffer size, with a default of 512 kilobytes. -// TO-DO: make this adaptive based on the initial signature of the image -const MaxBufferSize = 512 * 1024; -// This queue is for async `fs` operations, to avoid reaching file-descriptor limits -const queue = new queue_1.default({ concurrency: 100, autostart: true }); -/** - * Return size information based on a buffer - * - * @param {Buffer} buffer - * @param {String} filepath - * @returns {Object} - */ -function lookup(buffer, filepath) { - // detect the file type.. don't rely on the extension - const type = detector_1.detector(buffer); - // find an appropriate handler for this file type - if (type && type in types_1.typeHandlers) { - const size = types_1.typeHandlers[type].calculate(buffer, filepath); - if (size !== undefined) { - size.type = type; - return size; - } - } - // throw up, if we don't understand the file - throw new TypeError('unsupported file type: ' + type + ' (file: ' + filepath + ')'); -} -/** - * Reads a file into a buffer. - * @param {String} filepath - * @returns {Promise} - */ -function asyncFileToBuffer(filepath) { - return __awaiter(this, void 0, void 0, function* () { - const handle = yield fs.promises.open(filepath, 'r'); - const { size } = yield handle.stat(); - if (size <= 0) { - throw new Error('Empty file'); - } - const bufferSize = Math.min(size, MaxBufferSize); - const buffer = Buffer.alloc(bufferSize); - yield handle.read(buffer, 0, bufferSize, 0); - yield handle.close(); - return buffer; - }); -} -/** - * Synchronously reads a file into a buffer, blocking the nodejs process. - * - * @param {String} filepath - * @returns {Buffer} - */ -function syncFileToBuffer(filepath) { - // read from the file, synchronously - const descriptor = fs.openSync(filepath, 'r'); - const size = fs.fstatSync(descriptor).size; - const bufferSize = Math.min(size, MaxBufferSize); - const buffer = Buffer.alloc(bufferSize); - fs.readSync(descriptor, buffer, 0, bufferSize, 0); - fs.closeSync(descriptor); - return buffer; -} -module.exports = exports = imageSize; // backwards compatibility -/** - * @param {Buffer|string} input - buffer or relative/absolute path of the image file - * @param {Function=} [callback] - optional function for async detection - */ -function imageSize(input, callback) { - // Handle buffer input - if (Buffer.isBuffer(input)) { - return lookup(input); - } - // input should be a string at this point - if (typeof input !== 'string') { - throw new TypeError('invalid invocation'); - } - // resolve the file path - const filepath = path.resolve(input); - if (typeof callback === 'function') { - queue.push(() => asyncFileToBuffer(filepath) - .then((buffer) => process.nextTick(callback, null, lookup(buffer, filepath))) - .catch(callback)); - } - else { - const buffer = syncFileToBuffer(filepath); - return lookup(buffer, filepath); - } -} -exports.imageSize = imageSize; -exports.setConcurrency = (c) => { queue.concurrency = c; }; -exports.types = Object.keys(types_1.typeHandlers); - -}).call(this,require('_process'),require("buffer").Buffer) -},{"./detector":242,"./fs.promises":243,"./types":246,"_process":284,"buffer":182,"fs":177,"path":276,"queue":296}],245:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -// Abstract reading multi-byte unsigned integers -function readUInt(buffer, bits, offset, isBigEndian) { - offset = offset || 0; - const endian = isBigEndian ? 'BE' : 'LE'; - const methodName = ('readUInt' + bits + endian); - const method = buffer[methodName]; - return method.call(buffer, offset); -} -exports.readUInt = readUInt; - -},{}],246:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const bmp_1 = require("./types/bmp"); -const cur_1 = require("./types/cur"); -const dds_1 = require("./types/dds"); -const gif_1 = require("./types/gif"); -const icns_1 = require("./types/icns"); -const ico_1 = require("./types/ico"); -const jpg_1 = require("./types/jpg"); -const ktx_1 = require("./types/ktx"); -const png_1 = require("./types/png"); -const pnm_1 = require("./types/pnm"); -const psd_1 = require("./types/psd"); -const svg_1 = require("./types/svg"); -const tiff_1 = require("./types/tiff"); -const webp_1 = require("./types/webp"); -exports.typeHandlers = { - bmp: bmp_1.BMP, - cur: cur_1.CUR, - dds: dds_1.DDS, - gif: gif_1.GIF, - icns: icns_1.ICNS, - ico: ico_1.ICO, - jpg: jpg_1.JPG, - ktx: ktx_1.KTX, - png: png_1.PNG, - pnm: pnm_1.PNM, - psd: psd_1.PSD, - svg: svg_1.SVG, - tiff: tiff_1.TIFF, - webp: webp_1.WEBP, -}; - -},{"./types/bmp":247,"./types/cur":248,"./types/dds":249,"./types/gif":250,"./types/icns":251,"./types/ico":252,"./types/jpg":253,"./types/ktx":254,"./types/png":255,"./types/pnm":256,"./types/psd":257,"./types/svg":258,"./types/tiff":259,"./types/webp":260}],247:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.BMP = { - validate(buffer) { - return ('BM' === buffer.toString('ascii', 0, 2)); - }, - calculate(buffer) { - return { - height: Math.abs(buffer.readInt32LE(22)), - width: buffer.readUInt32LE(18) - }; - } -}; - -},{}],248:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const ico_1 = require("./ico"); -const TYPE_CURSOR = 2; -exports.CUR = { - validate(buffer) { - if (buffer.readUInt16LE(0) !== 0) { - return false; - } - return buffer.readUInt16LE(2) === TYPE_CURSOR; - }, - calculate(buffer) { - return ico_1.ICO.calculate(buffer); - } -}; - -},{"./ico":252}],249:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.DDS = { - validate(buffer) { - return buffer.readUInt32LE(0) === 0x20534444; - }, - calculate(buffer) { - return { - height: buffer.readUInt32LE(12), - width: buffer.readUInt32LE(16) - }; - } -}; - -},{}],250:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const gifRegexp = /^GIF8[79]a/; -exports.GIF = { - validate(buffer) { - const signature = buffer.toString('ascii', 0, 6); - return (gifRegexp.test(signature)); - }, - calculate(buffer) { - return { - height: buffer.readUInt16LE(8), - width: buffer.readUInt16LE(6) - }; - } -}; - -},{}],251:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * ICNS Header - * - * | Offset | Size | Purpose | - * | 0 | 4 | Magic literal, must be "icns" (0x69, 0x63, 0x6e, 0x73) | - * | 4 | 4 | Length of file, in bytes, msb first. | - * - */ -const SIZE_HEADER = 4 + 4; // 8 -const FILE_LENGTH_OFFSET = 4; // MSB => BIG ENDIAN -/** - * Image Entry - * - * | Offset | Size | Purpose | - * | 0 | 4 | Icon type, see OSType below. | - * | 4 | 4 | Length of data, in bytes (including type and length), msb first. | - * | 8 | n | Icon data | - */ -const ENTRY_LENGTH_OFFSET = 4; // MSB => BIG ENDIAN -/* tslint:disable:object-literal-sort-keys */ -const ICON_TYPE_SIZE = { - ICON: 32, - 'ICN#': 32, - // m => 16 x 16 - 'icm#': 16, - icm4: 16, - icm8: 16, - // s => 16 x 16 - 'ics#': 16, - ics4: 16, - ics8: 16, - is32: 16, - s8mk: 16, - icp4: 16, - // l => 32 x 32 - icl4: 32, - icl8: 32, - il32: 32, - l8mk: 32, - icp5: 32, - ic11: 32, - // h => 48 x 48 - ich4: 48, - ich8: 48, - ih32: 48, - h8mk: 48, - // . => 64 x 64 - icp6: 64, - ic12: 32, - // t => 128 x 128 - it32: 128, - t8mk: 128, - ic07: 128, - // . => 256 x 256 - ic08: 256, - ic13: 256, - // . => 512 x 512 - ic09: 512, - ic14: 512, - // . => 1024 x 1024 - ic10: 1024, -}; -/* tslint:enable:object-literal-sort-keys */ -function readImageHeader(buffer, imageOffset) { - const imageLengthOffset = imageOffset + ENTRY_LENGTH_OFFSET; - return [ - buffer.toString('ascii', imageOffset, imageLengthOffset), - buffer.readUInt32BE(imageLengthOffset) - ]; -} -function getImageSize(type) { - const size = ICON_TYPE_SIZE[type]; - return { width: size, height: size, type }; -} -exports.ICNS = { - validate(buffer) { - return ('icns' === buffer.toString('ascii', 0, 4)); - }, - calculate(buffer) { - const bufferLength = buffer.length; - const fileLength = buffer.readUInt32BE(FILE_LENGTH_OFFSET); - let imageOffset = SIZE_HEADER; - let imageHeader = readImageHeader(buffer, imageOffset); - let imageSize = getImageSize(imageHeader[0]); - imageOffset += imageHeader[1]; - if (imageOffset === fileLength) { - return imageSize; - } - const result = { - height: imageSize.height, - images: [imageSize], - width: imageSize.width - }; - while (imageOffset < fileLength && imageOffset < bufferLength) { - imageHeader = readImageHeader(buffer, imageOffset); - imageSize = getImageSize(imageHeader[0]); - imageOffset += imageHeader[1]; - result.images.push(imageSize); - } - return result; - } -}; - -},{}],252:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const TYPE_ICON = 1; -/** - * ICON Header - * - * | Offset | Size | Purpose | - * | 0 | 2 | Reserved. Must always be 0. | - * | 2 | 2 | Image type: 1 for icon (.ICO) image, 2 for cursor (.CUR) image. Other values are invalid. | - * | 4 | 2 | Number of images in the file. | - * - */ -const SIZE_HEADER = 2 + 2 + 2; // 6 -/** - * Image Entry - * - * | Offset | Size | Purpose | - * | 0 | 1 | Image width in pixels. Can be any number between 0 and 255. Value 0 means width is 256 pixels. | - * | 1 | 1 | Image height in pixels. Can be any number between 0 and 255. Value 0 means height is 256 pixels. | - * | 2 | 1 | Number of colors in the color palette. Should be 0 if the image does not use a color palette. | - * | 3 | 1 | Reserved. Should be 0. | - * | 4 | 2 | ICO format: Color planes. Should be 0 or 1. | - * | | | CUR format: The horizontal coordinates of the hotspot in number of pixels from the left. | - * | 6 | 2 | ICO format: Bits per pixel. | - * | | | CUR format: The vertical coordinates of the hotspot in number of pixels from the top. | - * | 8 | 4 | The size of the image's data in bytes | - * | 12 | 4 | The offset of BMP or PNG data from the beginning of the ICO/CUR file | - * - */ -const SIZE_IMAGE_ENTRY = 1 + 1 + 1 + 1 + 2 + 2 + 4 + 4; // 16 -function getSizeFromOffset(buffer, offset) { - const value = buffer.readUInt8(offset); - return value === 0 ? 256 : value; -} -function getImageSize(buffer, imageIndex) { - const offset = SIZE_HEADER + (imageIndex * SIZE_IMAGE_ENTRY); - return { - height: getSizeFromOffset(buffer, offset + 1), - width: getSizeFromOffset(buffer, offset) - }; -} -exports.ICO = { - validate(buffer) { - if (buffer.readUInt16LE(0) !== 0) { - return false; - } - return buffer.readUInt16LE(2) === TYPE_ICON; - }, - calculate(buffer) { - const nbImages = buffer.readUInt16LE(4); - const imageSize = getImageSize(buffer, 0); - if (nbImages === 1) { - return imageSize; - } - const result = { - height: imageSize.height, - images: [imageSize], - width: imageSize.width - }; - for (let imageIndex = 1; imageIndex < nbImages; imageIndex += 1) { - result.images.push(getImageSize(buffer, imageIndex)); - } - return result; - } -}; - -},{}],253:[function(require,module,exports){ -"use strict"; -// NOTE: we only support baseline and progressive JPGs here -// due to the structure of the loader class, we only get a buffer -// with a maximum size of 4096 bytes. so if the SOF marker is outside -// if this range we can't detect the file size correctly. -Object.defineProperty(exports, "__esModule", { value: true }); -const readUInt_1 = require("../readUInt"); -const EXIF_MARKER = '45786966'; -const APP1_DATA_SIZE_BYTES = 2; -const EXIF_HEADER_BYTES = 6; -const TIFF_BYTE_ALIGN_BYTES = 2; -const BIG_ENDIAN_BYTE_ALIGN = '4d4d'; -const LITTLE_ENDIAN_BYTE_ALIGN = '4949'; -// Each entry is exactly 12 bytes -const IDF_ENTRY_BYTES = 12; -const NUM_DIRECTORY_ENTRIES_BYTES = 2; -function isEXIF(buffer) { - return (buffer.toString('hex', 2, 6) === EXIF_MARKER); -} -function extractSize(buffer, index) { - return { - height: buffer.readUInt16BE(index), - width: buffer.readUInt16BE(index + 2) - }; -} -function validateExifBlock(buffer, index) { - // Skip APP1 Data Size - const exifBlock = buffer.slice(APP1_DATA_SIZE_BYTES, index); - // Consider byte alignment - const byteAlign = exifBlock.toString('hex', EXIF_HEADER_BYTES, EXIF_HEADER_BYTES + TIFF_BYTE_ALIGN_BYTES); - // Ignore Empty EXIF. Validate byte alignment - const isBigEndian = byteAlign === BIG_ENDIAN_BYTE_ALIGN; - const isLittleEndian = byteAlign === LITTLE_ENDIAN_BYTE_ALIGN; - if (isBigEndian || isLittleEndian) { - return extractOrientation(exifBlock, isBigEndian); - } -} -function extractOrientation(exifBlock, isBigEndian) { - // TODO: assert that this contains 0x002A - // let STATIC_MOTOROLA_TIFF_HEADER_BYTES = 2 - // let TIFF_IMAGE_FILE_DIRECTORY_BYTES = 4 - // TODO: derive from TIFF_IMAGE_FILE_DIRECTORY_BYTES - const idfOffset = 8; - // IDF osset works from right after the header bytes - // (so the offset includes the tiff byte align) - const offset = EXIF_HEADER_BYTES + idfOffset; - const idfDirectoryEntries = readUInt_1.readUInt(exifBlock, 16, offset, isBigEndian); - for (let directoryEntryNumber = 0; directoryEntryNumber < idfDirectoryEntries; directoryEntryNumber++) { - const start = offset + NUM_DIRECTORY_ENTRIES_BYTES + (directoryEntryNumber * IDF_ENTRY_BYTES); - const end = start + IDF_ENTRY_BYTES; - // Skip on corrupt EXIF blocks - if (start > exifBlock.length) { - return; - } - const block = exifBlock.slice(start, end); - const tagNumber = readUInt_1.readUInt(block, 16, 0, isBigEndian); - // 0x0112 (decimal: 274) is the `orientation` tag ID - if (tagNumber === 274) { - const dataFormat = readUInt_1.readUInt(block, 16, 2, isBigEndian); - if (dataFormat !== 3) { - return; - } - // unsinged int has 2 bytes per component - // if there would more than 4 bytes in total it's a pointer - const numberOfComponents = readUInt_1.readUInt(block, 32, 4, isBigEndian); - if (numberOfComponents !== 1) { - return; - } - return readUInt_1.readUInt(block, 16, 8, isBigEndian); - } - } -} -function validateBuffer(buffer, index) { - // index should be within buffer limits - if (index > buffer.length) { - throw new TypeError('Corrupt JPG, exceeded buffer limits'); - } - // Every JPEG block must begin with a 0xFF - if (buffer[index] !== 0xFF) { - throw new TypeError('Invalid JPG, marker table corrupted'); - } -} -exports.JPG = { - validate(buffer) { - const SOIMarker = buffer.toString('hex', 0, 2); - return ('ffd8' === SOIMarker); - }, - calculate(buffer) { - // Skip 4 chars, they are for signature - buffer = buffer.slice(4); - let orientation; - let next; - while (buffer.length) { - // read length of the next block - const i = buffer.readUInt16BE(0); - if (isEXIF(buffer)) { - orientation = validateExifBlock(buffer, i); - } - // ensure correct format - validateBuffer(buffer, i); - // 0xFFC0 is baseline standard(SOF) - // 0xFFC1 is baseline optimized(SOF) - // 0xFFC2 is progressive(SOF2) - next = buffer[i + 1]; - if (next === 0xC0 || next === 0xC1 || next === 0xC2) { - const size = extractSize(buffer, i + 5); - // TODO: is orientation=0 a valid answer here? - if (!orientation) { - return size; - } - return { - height: size.height, - orientation, - width: size.width - }; - } - // move to the next block - buffer = buffer.slice(i + 2); - } - throw new TypeError('Invalid JPG, no size found'); - } -}; - -},{"../readUInt":245}],254:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const SIGNATURE = 'KTX 11'; -exports.KTX = { - validate(buffer) { - return SIGNATURE === buffer.toString('ascii', 1, 7); - }, - calculate(buffer) { - return { - height: buffer.readUInt32LE(40), - width: buffer.readUInt32LE(36), - }; - } -}; - -},{}],255:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const pngSignature = 'PNG\r\n\x1a\n'; -const pngImageHeaderChunkName = 'IHDR'; -// Used to detect "fried" png's: http://www.jongware.com/pngdefry.html -const pngFriedChunkName = 'CgBI'; -exports.PNG = { - validate(buffer) { - if (pngSignature === buffer.toString('ascii', 1, 8)) { - let chunkName = buffer.toString('ascii', 12, 16); - if (chunkName === pngFriedChunkName) { - chunkName = buffer.toString('ascii', 28, 32); - } - if (chunkName !== pngImageHeaderChunkName) { - throw new TypeError('Invalid PNG'); - } - return true; - } - return false; - }, - calculate(buffer) { - if (buffer.toString('ascii', 12, 16) === pngFriedChunkName) { - return { - height: buffer.readUInt32BE(36), - width: buffer.readUInt32BE(32) - }; - } - return { - height: buffer.readUInt32BE(20), - width: buffer.readUInt32BE(16) - }; - } -}; - -},{}],256:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const PNMTypes = { - P1: 'pbm/ascii', - P2: 'pgm/ascii', - P3: 'ppm/ascii', - P4: 'pbm', - P5: 'pgm', - P6: 'ppm', - P7: 'pam', - PF: 'pfm' -}; -const Signatures = Object.keys(PNMTypes); -const handlers = { - default: (lines) => { - let dimensions = []; - while (lines.length > 0) { - const line = lines.shift(); - if (line[0] === '#') { - continue; - } - dimensions = line.split(' '); - break; - } - if (dimensions.length === 2) { - return { - height: parseInt(dimensions[1], 10), - width: parseInt(dimensions[0], 10), - }; - } - else { - throw new TypeError('Invalid PNM'); - } - }, - pam: (lines) => { - const size = {}; - while (lines.length > 0) { - const line = lines.shift(); - if (line.length > 16 || line.charCodeAt(0) > 128) { - continue; - } - const [key, value] = line.split(' '); - if (key && value) { - size[key.toLowerCase()] = parseInt(value, 10); - } - if (size.height && size.width) { - break; - } - } - if (size.height && size.width) { - return { - height: size.height, - width: size.width - }; - } - else { - throw new TypeError('Invalid PAM'); - } - } -}; -exports.PNM = { - validate(buffer) { - const signature = buffer.toString('ascii', 0, 2); - return Signatures.includes(signature); - }, - calculate(buffer) { - const signature = buffer.toString('ascii', 0, 2); - const type = PNMTypes[signature]; - // TODO: this probably generates garbage. move to a stream based parser - const lines = buffer.toString('ascii', 3).split(/[\r\n]+/); - const handler = handlers[type] || handlers.default; - return handler(lines); - } -}; - -},{}],257:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.PSD = { - validate(buffer) { - return ('8BPS' === buffer.toString('ascii', 0, 4)); - }, - calculate(buffer) { - return { - height: buffer.readUInt32BE(14), - width: buffer.readUInt32BE(18) - }; - } -}; - -},{}],258:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const svgReg = /"']|"[^"]*"|'[^']*')*>/; -const extractorRegExps = { - height: /\sheight=(['"])([^%]+?)\1/, - root: svgReg, - viewbox: /\sviewBox=(['"])(.+?)\1/, - width: /\swidth=(['"])([^%]+?)\1/, -}; -const INCH_CM = 2.54; -const units = { - cm: 96 / INCH_CM, - em: 16, - ex: 8, - m: 96 / INCH_CM * 100, - mm: 96 / INCH_CM / 10, - pc: 96 / 72 / 12, - pt: 96 / 72, -}; -function parseLength(len) { - const m = /([0-9.]+)([a-z]*)/.exec(len); - if (!m) { - return undefined; - } - return Math.round(parseFloat(m[1]) * (units[m[2]] || 1)); -} -function parseViewbox(viewbox) { - const bounds = viewbox.split(' '); - return { - height: parseLength(bounds[3]), - width: parseLength(bounds[2]) - }; -} -function parseAttributes(root) { - const width = root.match(extractorRegExps.width); - const height = root.match(extractorRegExps.height); - const viewbox = root.match(extractorRegExps.viewbox); - return { - height: height && parseLength(height[2]), - viewbox: viewbox && parseViewbox(viewbox[2]), - width: width && parseLength(width[2]), - }; -} -function calculateByDimensions(attrs) { - return { - height: attrs.height, - width: attrs.width, - }; -} -function calculateByViewbox(attrs) { - const viewbox = attrs && attrs.viewbox; - if (!viewbox) { - return; - } - const ratio = viewbox.width / viewbox.height; - if (attrs.width) { - return { - height: Math.floor(attrs.width / ratio), - width: attrs.width, - }; - } - if (attrs.height) { - return { - height: attrs.height, - width: Math.floor(attrs.height * ratio), - }; - } - return { - height: viewbox.height, - width: viewbox.width, - }; -} -exports.SVG = { - validate(buffer) { - const str = String(buffer); - return svgReg.test(str); - }, - calculate(buffer) { - const root = buffer.toString('utf8').match(extractorRegExps.root); - if (root) { - const attrs = parseAttributes(root[0]); - if (attrs.width && attrs.height) { - return calculateByDimensions(attrs); - } - if (attrs.viewbox) { - return calculateByViewbox(attrs); - } - } - throw new TypeError('Invalid SVG'); - } -}; - -},{}],259:[function(require,module,exports){ -(function (Buffer){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -// based on http://www.compix.com/fileformattif.htm -// TO-DO: support big-endian as well -const fs = require("fs"); -const readUInt_1 = require("../readUInt"); -// Read IFD (image-file-directory) into a buffer -function readIFD(buffer, filepath, isBigEndian) { - const ifdOffset = readUInt_1.readUInt(buffer, 32, 4, isBigEndian); - // read only till the end of the file - let bufferSize = 1024; - const fileSize = fs.statSync(filepath).size; - if (ifdOffset + bufferSize > fileSize) { - bufferSize = fileSize - ifdOffset - 10; - } - // populate the buffer - const endBuffer = Buffer.alloc(bufferSize); - const descriptor = fs.openSync(filepath, 'r'); - fs.readSync(descriptor, endBuffer, 0, bufferSize, ifdOffset); - return endBuffer.slice(2); -} -// TIFF values seem to be messed up on Big-Endian, this helps -function readValue(buffer, isBigEndian) { - const low = readUInt_1.readUInt(buffer, 16, 8, isBigEndian); - const high = readUInt_1.readUInt(buffer, 16, 10, isBigEndian); - return (high << 16) + low; -} -// move to the next tag -function nextTag(buffer) { - if (buffer.length > 24) { - return buffer.slice(12); - } -} -// Extract IFD tags from TIFF metadata -function extractTags(buffer, isBigEndian) { - const tags = {}; - let temp = buffer; - while (temp && temp.length) { - const code = readUInt_1.readUInt(temp, 16, 0, isBigEndian); - const type = readUInt_1.readUInt(temp, 16, 2, isBigEndian); - const length = readUInt_1.readUInt(temp, 32, 4, isBigEndian); - // 0 means end of IFD - if (code === 0) { - break; - } - else { - // 256 is width, 257 is height - // if (code === 256 || code === 257) { - if (length === 1 && (type === 3 || type === 4)) { - tags[code] = readValue(temp, isBigEndian); - } - // move to the next tag - temp = nextTag(temp); - } - } - return tags; -} -// Test if the TIFF is Big Endian or Little Endian -function determineEndianness(buffer) { - const signature = buffer.toString('ascii', 0, 2); - if ('II' === signature) { - return 'LE'; - } - else if ('MM' === signature) { - return 'BE'; - } -} -const signatures = [ - // '492049', // currently not supported - '49492a00', - '4d4d002a', -]; -exports.TIFF = { - validate(buffer) { - return signatures.includes(buffer.toString('hex', 0, 4)); - }, - calculate(buffer, filepath) { - if (!filepath) { - throw new TypeError('Tiff doesn\'t support buffer'); - } - // Determine BE/LE - const isBigEndian = determineEndianness(buffer) === 'BE'; - // read the IFD - const ifdBuffer = readIFD(buffer, filepath, isBigEndian); - // extract the tags from the IFD - const tags = extractTags(ifdBuffer, isBigEndian); - const width = tags[256]; - const height = tags[257]; - if (!width || !height) { - throw new TypeError('Invalid Tiff. Missing tags'); - } - return { height, width }; - } -}; - -}).call(this,require("buffer").Buffer) -},{"../readUInt":245,"buffer":182,"fs":177}],260:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -function calculateExtended(buffer) { - return { - height: 1 + buffer.readUIntLE(7, 3), - width: 1 + buffer.readUIntLE(4, 3) - }; -} -function calculateLossless(buffer) { - return { - height: 1 + (((buffer[4] & 0xF) << 10) | (buffer[3] << 2) | ((buffer[2] & 0xC0) >> 6)), - width: 1 + (((buffer[2] & 0x3F) << 8) | buffer[1]) - }; -} -function calculateLossy(buffer) { - // `& 0x3fff` returns the last 14 bits - // TO-DO: include webp scaling in the calculations - return { - height: buffer.readInt16LE(8) & 0x3fff, - width: buffer.readInt16LE(6) & 0x3fff - }; -} -exports.WEBP = { - validate(buffer) { - const riffHeader = 'RIFF' === buffer.toString('ascii', 0, 4); - const webpHeader = 'WEBP' === buffer.toString('ascii', 8, 12); - const vp8Header = 'VP8' === buffer.toString('ascii', 12, 15); - return (riffHeader && webpHeader && vp8Header); - }, - calculate(buffer) { - const chunkHeader = buffer.toString('ascii', 12, 16); - buffer = buffer.slice(20, 30); - // Extended webp stream signature - if (chunkHeader === 'VP8X') { - const extendedHeader = buffer[0]; - const validStart = (extendedHeader & 0xc0) === 0; - const validEnd = (extendedHeader & 0x01) === 0; - if (validStart && validEnd) { - return calculateExtended(buffer); - } - else { - // TODO: breaking change - throw new TypeError('Invalid WebP'); - } - } - // Lossless webp stream signature - if (chunkHeader === 'VP8 ' && buffer[0] !== 0x2f) { - return calculateLossy(buffer); - } - // Lossy webp stream signature - const signature = buffer.toString('hex', 3, 6); - if (chunkHeader === 'VP8L' && signature !== '9d012a') { - return calculateLossless(buffer); - } - throw new TypeError('Invalid WebP'); - } -}; - -},{}],261:[function(require,module,exports){ - -var indexOf = [].indexOf; - -module.exports = function(arr, obj){ - if (indexOf) return arr.indexOf(obj); - for (var i = 0; i < arr.length; ++i) { - if (arr[i] === obj) return i; - } - return -1; -}; -},{}],262:[function(require,module,exports){ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }) - } - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } - } -} - -},{}],263:[function(require,module,exports){ -/*! - * Determine if an object is a Buffer - * - * @author Feross Aboukhadijeh - * @license MIT - */ - -// The _isBuffer check is for Safari 5-7 support, because it's missing -// Object.prototype.constructor. Remove this eventually -module.exports = function (obj) { - return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) -} - -function isBuffer (obj) { - return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) -} - -// For Node v0.10 support. Remove this eventually. -function isSlowBuffer (obj) { - return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) -} - -},{}],264:[function(require,module,exports){ -var toString = {}.toString; - -module.exports = Array.isArray || function (arr) { - return toString.call(arr) == '[object Array]'; -}; - -},{}],265:[function(require,module,exports){ -/** - * martinez v0.4.3 - * Martinez polygon clipping algorithm, does boolean operation on polygons (multipolygons, polygons with holes etc): intersection, union, difference, xor - * - * @author Alex Milevski - * @license MIT - * @preserve - */ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (factory((global.martinez = {}))); -}(this, (function (exports) { 'use strict'; - - function DEFAULT_COMPARE (a, b) { return a > b ? 1 : a < b ? -1 : 0; } - - var SplayTree = function SplayTree(compare, noDuplicates) { - if ( compare === void 0 ) compare = DEFAULT_COMPARE; - if ( noDuplicates === void 0 ) noDuplicates = false; - - this._compare = compare; - this._root = null; - this._size = 0; - this._noDuplicates = !!noDuplicates; - }; - - var prototypeAccessors = { size: { configurable: true } }; - - - SplayTree.prototype.rotateLeft = function rotateLeft (x) { - var y = x.right; - if (y) { - x.right = y.left; - if (y.left) { y.left.parent = x; } - y.parent = x.parent; - } - - if (!x.parent) { this._root = y; } - else if (x === x.parent.left) { x.parent.left = y; } - else { x.parent.right = y; } - if (y) { y.left = x; } - x.parent = y; - }; - - - SplayTree.prototype.rotateRight = function rotateRight (x) { - var y = x.left; - if (y) { - x.left = y.right; - if (y.right) { y.right.parent = x; } - y.parent = x.parent; - } - - if (!x.parent) { this._root = y; } - else if(x === x.parent.left) { x.parent.left = y; } - else { x.parent.right = y; } - if (y) { y.right = x; } - x.parent = y; - }; - - - SplayTree.prototype._splay = function _splay (x) { - var this$1 = this; - - while (x.parent) { - var p = x.parent; - if (!p.parent) { - if (p.left === x) { this$1.rotateRight(p); } - else { this$1.rotateLeft(p); } - } else if (p.left === x && p.parent.left === p) { - this$1.rotateRight(p.parent); - this$1.rotateRight(p); - } else if (p.right === x && p.parent.right === p) { - this$1.rotateLeft(p.parent); - this$1.rotateLeft(p); - } else if (p.left === x && p.parent.right === p) { - this$1.rotateRight(p); - this$1.rotateLeft(p); - } else { - this$1.rotateLeft(p); - this$1.rotateRight(p); - } - } - }; - - - SplayTree.prototype.splay = function splay (x) { - var this$1 = this; - - var p, gp, ggp, l, r; - - while (x.parent) { - p = x.parent; - gp = p.parent; - - if (gp && gp.parent) { - ggp = gp.parent; - if (ggp.left === gp) { ggp.left= x; } - else { ggp.right = x; } - x.parent = ggp; - } else { - x.parent = null; - this$1._root = x; - } - - l = x.left; r = x.right; - - if (x === p.left) { // left - if (gp) { - if (gp.left === p) { - /* zig-zig */ - if (p.right) { - gp.left = p.right; - gp.left.parent = gp; - } else { gp.left = null; } - - p.right = gp; - gp.parent = p; - } else { - /* zig-zag */ - if (l) { - gp.right = l; - l.parent = gp; - } else { gp.right = null; } - - x.left = gp; - gp.parent = x; - } - } - if (r) { - p.left = r; - r.parent = p; - } else { p.left = null; } - - x.right= p; - p.parent = x; - } else { // right - if (gp) { - if (gp.right === p) { - /* zig-zig */ - if (p.left) { - gp.right = p.left; - gp.right.parent = gp; - } else { gp.right = null; } - - p.left = gp; - gp.parent = p; - } else { - /* zig-zag */ - if (r) { - gp.left = r; - r.parent = gp; - } else { gp.left = null; } - - x.right = gp; - gp.parent = x; - } - } - if (l) { - p.right = l; - l.parent = p; - } else { p.right = null; } - - x.left = p; - p.parent = x; - } - } - }; - - - SplayTree.prototype.replace = function replace (u, v) { - if (!u.parent) { this._root = v; } - else if (u === u.parent.left) { u.parent.left = v; } - else { u.parent.right = v; } - if (v) { v.parent = u.parent; } - }; - - - SplayTree.prototype.minNode = function minNode (u) { - if ( u === void 0 ) u = this._root; - - if (u) { while (u.left) { u = u.left; } } - return u; - }; - - - SplayTree.prototype.maxNode = function maxNode (u) { - if ( u === void 0 ) u = this._root; - - if (u) { while (u.right) { u = u.right; } } - return u; - }; - - - SplayTree.prototype.insert = function insert (key, data) { - var z = this._root; - var p = null; - var comp = this._compare; - var cmp; - - if (this._noDuplicates) { - while (z) { - p = z; - cmp = comp(z.key, key); - if (cmp === 0) { return; } - else if (comp(z.key, key) < 0) { z = z.right; } - else { z = z.left; } - } - } else { - while (z) { - p = z; - if (comp(z.key, key) < 0) { z = z.right; } - else { z = z.left; } - } - } - - z = { key: key, data: data, left: null, right: null, parent: p }; - - if (!p) { this._root = z; } - else if (comp(p.key, z.key) < 0) { p.right = z; } - else { p.left= z; } - - this.splay(z); - this._size++; - return z; - }; - - - SplayTree.prototype.find = function find (key) { - var z = this._root; - var comp = this._compare; - while (z) { - var cmp = comp(z.key, key); - if (cmp < 0) { z = z.right; } - else if (cmp > 0) { z = z.left; } - else { return z; } - } - return null; - }; - - /** - * Whether the tree contains a node with the given key - * @param{Key} key - * @return {boolean} true/false - */ - SplayTree.prototype.contains = function contains (key) { - var node = this._root; - var comparator = this._compare; - while (node){ - var cmp = comparator(key, node.key); - if (cmp === 0) { return true; } - else if (cmp < 0) { node = node.left; } - else { node = node.right; } - } - - return false; - }; - - - SplayTree.prototype.remove = function remove (key) { - var z = this.find(key); - - if (!z) { return false; } - - this.splay(z); - - if (!z.left) { this.replace(z, z.right); } - else if (!z.right) { this.replace(z, z.left); } - else { - var y = this.minNode(z.right); - if (y.parent !== z) { - this.replace(y, y.right); - y.right = z.right; - y.right.parent = y; - } - this.replace(z, y); - y.left = z.left; - y.left.parent = y; - } - - this._size--; - return true; - }; - - - SplayTree.prototype.removeNode = function removeNode (z) { - if (!z) { return false; } - - this.splay(z); - - if (!z.left) { this.replace(z, z.right); } - else if (!z.right) { this.replace(z, z.left); } - else { - var y = this.minNode(z.right); - if (y.parent !== z) { - this.replace(y, y.right); - y.right = z.right; - y.right.parent = y; - } - this.replace(z, y); - y.left = z.left; - y.left.parent = y; - } - - this._size--; - return true; - }; - - - SplayTree.prototype.erase = function erase (key) { - var z = this.find(key); - if (!z) { return; } - - this.splay(z); - - var s = z.left; - var t = z.right; - - var sMax = null; - if (s) { - s.parent = null; - sMax = this.maxNode(s); - this.splay(sMax); - this._root = sMax; - } - if (t) { - if (s) { sMax.right = t; } - else { this._root = t; } - t.parent = sMax; - } - - this._size--; - }; - - /** - * Removes and returns the node with smallest key - * @return {?Node} - */ - SplayTree.prototype.pop = function pop () { - var node = this._root, returnValue = null; - if (node) { - while (node.left) { node = node.left; } - returnValue = { key: node.key, data: node.data }; - this.remove(node.key); - } - return returnValue; - }; - - - /* eslint-disable class-methods-use-this */ - - /** - * Successor node - * @param{Node} node - * @return {?Node} - */ - SplayTree.prototype.next = function next (node) { - var successor = node; - if (successor) { - if (successor.right) { - successor = successor.right; - while (successor && successor.left) { successor = successor.left; } - } else { - successor = node.parent; - while (successor && successor.right === node) { - node = successor; successor = successor.parent; - } - } - } - return successor; - }; - - - /** - * Predecessor node - * @param{Node} node - * @return {?Node} - */ - SplayTree.prototype.prev = function prev (node) { - var predecessor = node; - if (predecessor) { - if (predecessor.left) { - predecessor = predecessor.left; - while (predecessor && predecessor.right) { predecessor = predecessor.right; } - } else { - predecessor = node.parent; - while (predecessor && predecessor.left === node) { - node = predecessor; - predecessor = predecessor.parent; - } - } - } - return predecessor; - }; - /* eslint-enable class-methods-use-this */ - - - /** - * @param{forEachCallback} callback - * @return {SplayTree} - */ - SplayTree.prototype.forEach = function forEach (callback) { - var current = this._root; - var s = [], done = false, i = 0; - - while (!done) { - // Reach the left most Node of the current Node - if (current) { - // Place pointer to a tree node on the stack - // before traversing the node's left subtree - s.push(current); - current = current.left; - } else { - // BackTrack from the empty subtree and visit the Node - // at the top of the stack; however, if the stack is - // empty you are done - if (s.length > 0) { - current = s.pop(); - callback(current, i++); - - // We have visited the node and its left - // subtree. Now, it's right subtree's turn - current = current.right; - } else { done = true; } - } - } - return this; - }; - - - /** - * Walk key range from `low` to `high`. Stops if `fn` returns a value. - * @param{Key} low - * @param{Key} high - * @param{Function} fn - * @param{*?} ctx - * @return {SplayTree} - */ - SplayTree.prototype.range = function range (low, high, fn, ctx) { - var this$1 = this; - - var Q = []; - var compare = this._compare; - var node = this._root, cmp; - - while (Q.length !== 0 || node) { - if (node) { - Q.push(node); - node = node.left; - } else { - node = Q.pop(); - cmp = compare(node.key, high); - if (cmp > 0) { - break; - } else if (compare(node.key, low) >= 0) { - if (fn.call(ctx, node)) { return this$1; } // stop if smth is returned - } - node = node.right; - } - } - return this; - }; - - /** - * Returns all keys in order - * @return {Array} - */ - SplayTree.prototype.keys = function keys () { - var current = this._root; - var s = [], r = [], done = false; - - while (!done) { - if (current) { - s.push(current); - current = current.left; - } else { - if (s.length > 0) { - current = s.pop(); - r.push(current.key); - current = current.right; - } else { done = true; } - } - } - return r; - }; - - - /** - * Returns `data` fields of all nodes in order. - * @return {Array} - */ - SplayTree.prototype.values = function values () { - var current = this._root; - var s = [], r = [], done = false; - - while (!done) { - if (current) { - s.push(current); - current = current.left; - } else { - if (s.length > 0) { - current = s.pop(); - r.push(current.data); - current = current.right; - } else { done = true; } - } - } - return r; - }; - - - /** - * Returns node at given index - * @param{number} index - * @return {?Node} - */ - SplayTree.prototype.at = function at (index) { - // removed after a consideration, more misleading than useful - // index = index % this.size; - // if (index < 0) index = this.size - index; - - var current = this._root; - var s = [], done = false, i = 0; - - while (!done) { - if (current) { - s.push(current); - current = current.left; - } else { - if (s.length > 0) { - current = s.pop(); - if (i === index) { return current; } - i++; - current = current.right; - } else { done = true; } - } - } - return null; - }; - - /** - * Bulk-load items. Both array have to be same size - * @param{Array} keys - * @param{Array}[values] - * @param{Boolean} [presort=false] Pre-sort keys and values, using - * tree's comparator. Sorting is done - * in-place - * @return {AVLTree} - */ - SplayTree.prototype.load = function load (keys, values, presort) { - if ( keys === void 0 ) keys = []; - if ( values === void 0 ) values = []; - if ( presort === void 0 ) presort = false; - - if (this._size !== 0) { throw new Error('bulk-load: tree is not empty'); } - var size = keys.length; - if (presort) { sort(keys, values, 0, size - 1, this._compare); } - this._root = loadRecursive(null, keys, values, 0, size); - this._size = size; - return this; - }; - - - SplayTree.prototype.min = function min () { - var node = this.minNode(this._root); - if (node) { return node.key; } - else { return null; } - }; - - - SplayTree.prototype.max = function max () { - var node = this.maxNode(this._root); - if (node) { return node.key; } - else { return null; } - }; - - SplayTree.prototype.isEmpty = function isEmpty () { return this._root === null; }; - prototypeAccessors.size.get = function () { return this._size; }; - - - /** - * Create a tree and load it with items - * @param{Array} keys - * @param{Array?} [values] - - * @param{Function?} [comparator] - * @param{Boolean?} [presort=false] Pre-sort keys and values, using - * tree's comparator. Sorting is done - * in-place - * @param{Boolean?} [noDuplicates=false] Allow duplicates - * @return {SplayTree} - */ - SplayTree.createTree = function createTree (keys, values, comparator, presort, noDuplicates) { - return new SplayTree(comparator, noDuplicates).load(keys, values, presort); - }; - - Object.defineProperties( SplayTree.prototype, prototypeAccessors ); - - - function loadRecursive (parent, keys, values, start, end) { - var size = end - start; - if (size > 0) { - var middle = start + Math.floor(size / 2); - var key = keys[middle]; - var data = values[middle]; - var node = { key: key, data: data, parent: parent }; - node.left = loadRecursive(node, keys, values, start, middle); - node.right = loadRecursive(node, keys, values, middle + 1, end); - return node; - } - return null; - } - - - function sort(keys, values, left, right, compare) { - if (left >= right) { return; } - - var pivot = keys[(left + right) >> 1]; - var i = left - 1; - var j = right + 1; - - while (true) { - do { i++; } while (compare(keys[i], pivot) < 0); - do { j--; } while (compare(keys[j], pivot) > 0); - if (i >= j) { break; } - - var tmp = keys[i]; - keys[i] = keys[j]; - keys[j] = tmp; - - tmp = values[i]; - values[i] = values[j]; - values[j] = tmp; - } - - sort(keys, values, left, j, compare); - sort(keys, values, j + 1, right, compare); - } - - var NORMAL = 0; - var NON_CONTRIBUTING = 1; - var SAME_TRANSITION = 2; - var DIFFERENT_TRANSITION = 3; - - var INTERSECTION = 0; - var UNION = 1; - var DIFFERENCE = 2; - var XOR = 3; - - /** - * @param {SweepEvent} event - * @param {SweepEvent} prev - * @param {Operation} operation - */ - function computeFields (event, prev, operation) { - // compute inOut and otherInOut fields - if (prev === null) { - event.inOut = false; - event.otherInOut = true; - - // previous line segment in sweepline belongs to the same polygon - } else { - if (event.isSubject === prev.isSubject) { - event.inOut = !prev.inOut; - event.otherInOut = prev.otherInOut; - - // previous line segment in sweepline belongs to the clipping polygon - } else { - event.inOut = !prev.otherInOut; - event.otherInOut = prev.isVertical() ? !prev.inOut : prev.inOut; - } - - // compute prevInResult field - if (prev) { - event.prevInResult = (!inResult(prev, operation) || prev.isVertical()) - ? prev.prevInResult : prev; - } - } - - // check if the line segment belongs to the Boolean operation - event.inResult = inResult(event, operation); - } - - - /* eslint-disable indent */ - function inResult(event, operation) { - switch (event.type) { - case NORMAL: - switch (operation) { - case INTERSECTION: - return !event.otherInOut; - case UNION: - return event.otherInOut; - case DIFFERENCE: - // return (event.isSubject && !event.otherInOut) || - // (!event.isSubject && event.otherInOut); - return (event.isSubject && event.otherInOut) || - (!event.isSubject && !event.otherInOut); - case XOR: - return true; - } - break; - case SAME_TRANSITION: - return operation === INTERSECTION || operation === UNION; - case DIFFERENT_TRANSITION: - return operation === DIFFERENCE; - case NON_CONTRIBUTING: - return false; - } - return false; - } - /* eslint-enable indent */ - - var SweepEvent = function SweepEvent (point, left, otherEvent, isSubject, edgeType) { - - /** - * Is left endpoint? - * @type {Boolean} - */ - this.left = left; - - /** - * @type {Array.} - */ - this.point = point; - - /** - * Other edge reference - * @type {SweepEvent} - */ - this.otherEvent = otherEvent; - - /** - * Belongs to source or clipping polygon - * @type {Boolean} - */ - this.isSubject = isSubject; - - /** - * Edge contribution type - * @type {Number} - */ - this.type = edgeType || NORMAL; - - - /** - * In-out transition for the sweepline crossing polygon - * @type {Boolean} - */ - this.inOut = false; - - - /** - * @type {Boolean} - */ - this.otherInOut = false; - - /** - * Previous event in result? - * @type {SweepEvent} - */ - this.prevInResult = null; - - /** - * Does event belong to result? - * @type {Boolean} - */ - this.inResult = false; - - - // connection step - - /** - * @type {Boolean} - */ - this.resultInOut = false; - - this.isExteriorRing = true; - }; - - - /** - * @param{Array.}p - * @return {Boolean} - */ - SweepEvent.prototype.isBelow = function isBelow (p) { - var p0 = this.point, p1 = this.otherEvent.point; - return this.left - ? (p0[0] - p[0]) * (p1[1] - p[1]) - (p1[0] - p[0]) * (p0[1] - p[1]) > 0 - // signedArea(this.point, this.otherEvent.point, p) > 0 : - : (p1[0] - p[0]) * (p0[1] - p[1]) - (p0[0] - p[0]) * (p1[1] - p[1]) > 0; - //signedArea(this.otherEvent.point, this.point, p) > 0; - }; - - - /** - * @param{Array.}p - * @return {Boolean} - */ - SweepEvent.prototype.isAbove = function isAbove (p) { - return !this.isBelow(p); - }; - - - /** - * @return {Boolean} - */ - SweepEvent.prototype.isVertical = function isVertical () { - return this.point[0] === this.otherEvent.point[0]; - }; - - - SweepEvent.prototype.clone = function clone () { - var copy = new SweepEvent( - this.point, this.left, this.otherEvent, this.isSubject, this.type); - - copy.inResult = this.inResult; - copy.prevInResult = this.prevInResult; - copy.isExteriorRing = this.isExteriorRing; - copy.inOut = this.inOut; - copy.otherInOut = this.otherInOut; - - return copy; - }; - - function equals(p1, p2) { - if (p1[0] === p2[0]) { - if (p1[1] === p2[1]) { - return true; - } else { - return false; - } - } - return false; - } - - // const EPSILON = 1e-9; - // const abs = Math.abs; - // TODO https://github.com/w8r/martinez/issues/6#issuecomment-262847164 - // Precision problem. - // - // module.exports = function equals(p1, p2) { - // return abs(p1[0] - p2[0]) <= EPSILON && abs(p1[1] - p2[1]) <= EPSILON; - // }; - - /** - * Signed area of the triangle (p0, p1, p2) - * @param {Array.} p0 - * @param {Array.} p1 - * @param {Array.} p2 - * @return {Number} - */ - function signedArea(p0, p1, p2) { - return (p0[0] - p2[0]) * (p1[1] - p2[1]) - (p1[0] - p2[0]) * (p0[1] - p2[1]); - } - - /** - * @param {SweepEvent} e1 - * @param {SweepEvent} e2 - * @return {Number} - */ - function compareEvents(e1, e2) { - var p1 = e1.point; - var p2 = e2.point; - - // Different x-coordinate - if (p1[0] > p2[0]) { return 1; } - if (p1[0] < p2[0]) { return -1; } - - // Different points, but same x-coordinate - // Event with lower y-coordinate is processed first - if (p1[1] !== p2[1]) { return p1[1] > p2[1] ? 1 : -1; } - - return specialCases(e1, e2, p1, p2); - } - - - /* eslint-disable no-unused-vars */ - function specialCases(e1, e2, p1, p2) { - // Same coordinates, but one is a left endpoint and the other is - // a right endpoint. The right endpoint is processed first - if (e1.left !== e2.left) - { return e1.left ? 1 : -1; } - - // const p2 = e1.otherEvent.point, p3 = e2.otherEvent.point; - // const sa = (p1[0] - p3[0]) * (p2[1] - p3[1]) - (p2[0] - p3[0]) * (p1[1] - p3[1]) - // Same coordinates, both events - // are left endpoints or right endpoints. - // not collinear - if (signedArea(p1, e1.otherEvent.point, e2.otherEvent.point) !== 0) { - // the event associate to the bottom segment is processed first - return (!e1.isBelow(e2.otherEvent.point)) ? 1 : -1; - } - - return (!e1.isSubject && e2.isSubject) ? 1 : -1; - } - /* eslint-enable no-unused-vars */ - - /** - * @param {SweepEvent} se - * @param {Array.} p - * @param {Queue} queue - * @return {Queue} - */ - function divideSegment(se, p, queue) { - var r = new SweepEvent(p, false, se, se.isSubject); - var l = new SweepEvent(p, true, se.otherEvent, se.isSubject); - - /* eslint-disable no-console */ - if (equals(se.point, se.otherEvent.point)) { - - console.warn('what is that, a collapsed segment?', se); - } - /* eslint-enable no-console */ - - r.contourId = l.contourId = se.contourId; - - // avoid a rounding error. The left event would be processed after the right event - if (compareEvents(l, se.otherEvent) > 0) { - se.otherEvent.left = true; - l.left = false; - } - - // avoid a rounding error. The left event would be processed after the right event - // if (compareEvents(se, r) > 0) {} - - se.otherEvent.otherEvent = l; - se.otherEvent = r; - - queue.push(l); - queue.push(r); - - return queue; - } - - //const EPS = 1e-9; - - /** - * Finds the magnitude of the cross product of two vectors (if we pretend - * they're in three dimensions) - * - * @param {Object} a First vector - * @param {Object} b Second vector - * @private - * @returns {Number} The magnitude of the cross product - */ - function crossProduct(a, b) { - return (a[0] * b[1]) - (a[1] * b[0]); - } - - /** - * Finds the dot product of two vectors. - * - * @param {Object} a First vector - * @param {Object} b Second vector - * @private - * @returns {Number} The dot product - */ - function dotProduct(a, b) { - return (a[0] * b[0]) + (a[1] * b[1]); - } - - /** - * Finds the intersection (if any) between two line segments a and b, given the - * line segments' end points a1, a2 and b1, b2. - * - * This algorithm is based on Schneider and Eberly. - * http://www.cimec.org.ar/~ncalvo/Schneider_Eberly.pdf - * Page 244. - * - * @param {Array.} a1 point of first line - * @param {Array.} a2 point of first line - * @param {Array.} b1 point of second line - * @param {Array.} b2 point of second line - * @param {Boolean=} noEndpointTouch whether to skip single touchpoints - * (meaning connected segments) as - * intersections - * @returns {Array.>|Null} If the lines intersect, the point of - * intersection. If they overlap, the two end points of the overlapping segment. - * Otherwise, null. - */ - function intersection (a1, a2, b1, b2, noEndpointTouch) { - // The algorithm expects our lines in the form P + sd, where P is a point, - // s is on the interval [0, 1], and d is a vector. - // We are passed two points. P can be the first point of each pair. The - // vector, then, could be thought of as the distance (in x and y components) - // from the first point to the second point. - // So first, let's make our vectors: - var va = [a2[0] - a1[0], a2[1] - a1[1]]; - var vb = [b2[0] - b1[0], b2[1] - b1[1]]; - // We also define a function to convert back to regular point form: - - /* eslint-disable arrow-body-style */ - - function toPoint(p, s, d) { - return [ - p[0] + s * d[0], - p[1] + s * d[1] - ]; - } - - /* eslint-enable arrow-body-style */ - - // The rest is pretty much a straight port of the algorithm. - var e = [b1[0] - a1[0], b1[1] - a1[1]]; - var kross = crossProduct(va, vb); - var sqrKross = kross * kross; - var sqrLenA = dotProduct(va, va); - //const sqrLenB = dotProduct(vb, vb); - - // Check for line intersection. This works because of the properties of the - // cross product -- specifically, two vectors are parallel if and only if the - // cross product is the 0 vector. The full calculation involves relative error - // to account for possible very small line segments. See Schneider & Eberly - // for details. - if (sqrKross > 0/* EPS * sqrLenB * sqLenA */) { - // If they're not parallel, then (because these are line segments) they - // still might not actually intersect. This code checks that the - // intersection point of the lines is actually on both line segments. - var s = crossProduct(e, vb) / kross; - if (s < 0 || s > 1) { - // not on line segment a - return null; - } - var t = crossProduct(e, va) / kross; - if (t < 0 || t > 1) { - // not on line segment b - return null; - } - if (s === 0 || s === 1) { - // on an endpoint of line segment a - return noEndpointTouch ? null : [toPoint(a1, s, va)]; - } - if (t === 0 || t === 1) { - // on an endpoint of line segment b - return noEndpointTouch ? null : [toPoint(b1, t, vb)]; - } - return [toPoint(a1, s, va)]; - } - - // If we've reached this point, then the lines are either parallel or the - // same, but the segments could overlap partially or fully, or not at all. - // So we need to find the overlap, if any. To do that, we can use e, which is - // the (vector) difference between the two initial points. If this is parallel - // with the line itself, then the two lines are the same line, and there will - // be overlap. - //const sqrLenE = dotProduct(e, e); - kross = crossProduct(e, va); - sqrKross = kross * kross; - - if (sqrKross > 0 /* EPS * sqLenB * sqLenE */) { - // Lines are just parallel, not the same. No overlap. - return null; - } - - var sa = dotProduct(va, e) / sqrLenA; - var sb = sa + dotProduct(va, vb) / sqrLenA; - var smin = Math.min(sa, sb); - var smax = Math.max(sa, sb); - - // this is, essentially, the FindIntersection acting on floats from - // Schneider & Eberly, just inlined into this function. - if (smin <= 1 && smax >= 0) { - - // overlap on an end point - if (smin === 1) { - return noEndpointTouch ? null : [toPoint(a1, smin > 0 ? smin : 0, va)]; - } - - if (smax === 0) { - return noEndpointTouch ? null : [toPoint(a1, smax < 1 ? smax : 1, va)]; - } - - if (noEndpointTouch && smin === 0 && smax === 1) { return null; } - - // There's overlap on a segment -- two points of intersection. Return both. - return [ - toPoint(a1, smin > 0 ? smin : 0, va), - toPoint(a1, smax < 1 ? smax : 1, va) - ]; - } - - return null; - } - - /** - * @param {SweepEvent} se1 - * @param {SweepEvent} se2 - * @param {Queue} queue - * @return {Number} - */ - function possibleIntersection (se1, se2, queue) { - // that disallows self-intersecting polygons, - // did cost us half a day, so I'll leave it - // out of respect - // if (se1.isSubject === se2.isSubject) return; - var inter = intersection( - se1.point, se1.otherEvent.point, - se2.point, se2.otherEvent.point - ); - - var nintersections = inter ? inter.length : 0; - if (nintersections === 0) { return 0; } // no intersection - - // the line segments intersect at an endpoint of both line segments - if ((nintersections === 1) && - (equals(se1.point, se2.point) || - equals(se1.otherEvent.point, se2.otherEvent.point))) { - return 0; - } - - if (nintersections === 2 && se1.isSubject === se2.isSubject) { - // if(se1.contourId === se2.contourId){ - // console.warn('Edges of the same polygon overlap', - // se1.point, se1.otherEvent.point, se2.point, se2.otherEvent.point); - // } - //throw new Error('Edges of the same polygon overlap'); - return 0; - } - - // The line segments associated to se1 and se2 intersect - if (nintersections === 1) { - - // if the intersection point is not an endpoint of se1 - if (!equals(se1.point, inter[0]) && !equals(se1.otherEvent.point, inter[0])) { - divideSegment(se1, inter[0], queue); - } - - // if the intersection point is not an endpoint of se2 - if (!equals(se2.point, inter[0]) && !equals(se2.otherEvent.point, inter[0])) { - divideSegment(se2, inter[0], queue); - } - return 1; - } - - // The line segments associated to se1 and se2 overlap - var events = []; - var leftCoincide = false; - var rightCoincide = false; - - if (equals(se1.point, se2.point)) { - leftCoincide = true; // linked - } else if (compareEvents(se1, se2) === 1) { - events.push(se2, se1); - } else { - events.push(se1, se2); - } - - if (equals(se1.otherEvent.point, se2.otherEvent.point)) { - rightCoincide = true; - } else if (compareEvents(se1.otherEvent, se2.otherEvent) === 1) { - events.push(se2.otherEvent, se1.otherEvent); - } else { - events.push(se1.otherEvent, se2.otherEvent); - } - - if ((leftCoincide && rightCoincide) || leftCoincide) { - // both line segments are equal or share the left endpoint - se2.type = NON_CONTRIBUTING; - se1.type = (se2.inOut === se1.inOut) - ? SAME_TRANSITION : DIFFERENT_TRANSITION; - - if (leftCoincide && !rightCoincide) { - // honestly no idea, but changing events selection from [2, 1] - // to [0, 1] fixes the overlapping self-intersecting polygons issue - divideSegment(events[1].otherEvent, events[0].point, queue); - } - return 2; - } - - // the line segments share the right endpoint - if (rightCoincide) { - divideSegment(events[0], events[1].point, queue); - return 3; - } - - // no line segment includes totally the other one - if (events[0] !== events[3].otherEvent) { - divideSegment(events[0], events[1].point, queue); - divideSegment(events[1], events[2].point, queue); - return 3; - } - - // one line segment includes the other one - divideSegment(events[0], events[1].point, queue); - divideSegment(events[3].otherEvent, events[2].point, queue); - - return 3; - } - - /** - * @param {SweepEvent} le1 - * @param {SweepEvent} le2 - * @return {Number} - */ - function compareSegments(le1, le2) { - if (le1 === le2) { return 0; } - - // Segments are not collinear - if (signedArea(le1.point, le1.otherEvent.point, le2.point) !== 0 || - signedArea(le1.point, le1.otherEvent.point, le2.otherEvent.point) !== 0) { - - // If they share their left endpoint use the right endpoint to sort - if (equals(le1.point, le2.point)) { return le1.isBelow(le2.otherEvent.point) ? -1 : 1; } - - // Different left endpoint: use the left endpoint to sort - if (le1.point[0] === le2.point[0]) { return le1.point[1] < le2.point[1] ? -1 : 1; } - - // has the line segment associated to e1 been inserted - // into S after the line segment associated to e2 ? - if (compareEvents(le1, le2) === 1) { return le2.isAbove(le1.point) ? -1 : 1; } - - // The line segment associated to e2 has been inserted - // into S after the line segment associated to e1 - return le1.isBelow(le2.point) ? -1 : 1; - } - - if (le1.isSubject === le2.isSubject) { // same polygon - var p1 = le1.point, p2 = le2.point; - if (p1[0] === p2[0] && p1[1] === p2[1]/*equals(le1.point, le2.point)*/) { - p1 = le1.otherEvent.point; p2 = le2.otherEvent.point; - if (p1[0] === p2[0] && p1[1] === p2[1]) { return 0; } - else { return le1.contourId > le2.contourId ? 1 : -1; } - } - } else { // Segments are collinear, but belong to separate polygons - return le1.isSubject ? -1 : 1; - } - - return compareEvents(le1, le2) === 1 ? 1 : -1; - } - - function subdivide(eventQueue, subject, clipping, sbbox, cbbox, operation) { - var sweepLine = new SplayTree(compareSegments); - var sortedEvents = []; - - var rightbound = Math.min(sbbox[2], cbbox[2]); - - var prev, next, begin; - - while (eventQueue.length !== 0) { - var event = eventQueue.pop(); - sortedEvents.push(event); - - // optimization by bboxes for intersection and difference goes here - if ((operation === INTERSECTION && event.point[0] > rightbound) || - (operation === DIFFERENCE && event.point[0] > sbbox[2])) { - break; - } - - if (event.left) { - next = prev = sweepLine.insert(event); - begin = sweepLine.minNode(); - - if (prev !== begin) { prev = sweepLine.prev(prev); } - else { prev = null; } - - next = sweepLine.next(next); - - var prevEvent = prev ? prev.key : null; - var prevprevEvent = (void 0); - computeFields(event, prevEvent, operation); - if (next) { - if (possibleIntersection(event, next.key, eventQueue) === 2) { - computeFields(event, prevEvent, operation); - computeFields(event, next.key, operation); - } - } - - if (prev) { - if (possibleIntersection(prev.key, event, eventQueue) === 2) { - var prevprev = prev; - if (prevprev !== begin) { prevprev = sweepLine.prev(prevprev); } - else { prevprev = null; } - - prevprevEvent = prevprev ? prevprev.key : null; - computeFields(prevEvent, prevprevEvent, operation); - computeFields(event, prevEvent, operation); - } - } - } else { - event = event.otherEvent; - next = prev = sweepLine.find(event); - - if (prev && next) { - - if (prev !== begin) { prev = sweepLine.prev(prev); } - else { prev = null; } - - next = sweepLine.next(next); - sweepLine.remove(event); - - if (next && prev) { - possibleIntersection(prev.key, next.key, eventQueue); - } - } - } - } - return sortedEvents; - } - - /** - * @param {Array.} sortedEvents - * @return {Array.} - */ - function orderEvents(sortedEvents) { - var event, i, len, tmp; - var resultEvents = []; - for (i = 0, len = sortedEvents.length; i < len; i++) { - event = sortedEvents[i]; - if ((event.left && event.inResult) || - (!event.left && event.otherEvent.inResult)) { - resultEvents.push(event); - } - } - // Due to overlapping edges the resultEvents array can be not wholly sorted - var sorted = false; - while (!sorted) { - sorted = true; - for (i = 0, len = resultEvents.length; i < len; i++) { - if ((i + 1) < len && - compareEvents(resultEvents[i], resultEvents[i + 1]) === 1) { - tmp = resultEvents[i]; - resultEvents[i] = resultEvents[i + 1]; - resultEvents[i + 1] = tmp; - sorted = false; - } - } - } - - - for (i = 0, len = resultEvents.length; i < len; i++) { - event = resultEvents[i]; - event.pos = i; - } - - // imagine, the right event is found in the beginning of the queue, - // when his left counterpart is not marked yet - for (i = 0, len = resultEvents.length; i < len; i++) { - event = resultEvents[i]; - if (!event.left) { - tmp = event.pos; - event.pos = event.otherEvent.pos; - event.otherEvent.pos = tmp; - } - } - - return resultEvents; - } - - - /** - * @param {Number} pos - * @param {Array.} resultEvents - * @param {Object>} processed - * @return {Number} - */ - function nextPos(pos, resultEvents, processed, origIndex) { - var newPos = pos + 1; - var length = resultEvents.length; - if (newPos > length - 1) { return pos - 1; } - var p = resultEvents[pos].point; - var p1 = resultEvents[newPos].point; - - - // while in range and not the current one by value - while (newPos < length && p1[0] === p[0] && p1[1] === p[1]) { - if (!processed[newPos]) { - return newPos; - } else { - newPos++; - } - p1 = resultEvents[newPos].point; - } - - newPos = pos - 1; - - while (processed[newPos] && newPos >= origIndex) { - newPos--; - } - return newPos; - } - - - /** - * @param {Array.} sortedEvents - * @return {Array.<*>} polygons - */ - function connectEdges(sortedEvents, operation) { - var i, len; - var resultEvents = orderEvents(sortedEvents); - - // "false"-filled array - var processed = {}; - var result = []; - var event; - - for (i = 0, len = resultEvents.length; i < len; i++) { - if (processed[i]) { continue; } - var contour = [[]]; - - if (!resultEvents[i].isExteriorRing) { - if (operation === DIFFERENCE && !resultEvents[i].isSubject && result.length === 0) { - result.push(contour); - } else if (result.length === 0) { - result.push([[contour]]); - } else { - result[result.length - 1].push(contour[0]); - } - } else if (operation === DIFFERENCE && !resultEvents[i].isSubject && result.length > 1) { - result[result.length - 1].push(contour[0]); - } else { - result.push(contour); - } - - var ringId = result.length - 1; - var pos = i; - - var initial = resultEvents[i].point; - contour[0].push(initial); - - while (pos >= i) { - event = resultEvents[pos]; - processed[pos] = true; - - if (event.left) { - event.resultInOut = false; - event.contourId = ringId; - } else { - event.otherEvent.resultInOut = true; - event.otherEvent.contourId = ringId; - } - - pos = event.pos; - processed[pos] = true; - contour[0].push(resultEvents[pos].point); - pos = nextPos(pos, resultEvents, processed, i); - } - - pos = pos === -1 ? i : pos; - - event = resultEvents[pos]; - processed[pos] = processed[event.pos] = true; - event.otherEvent.resultInOut = true; - event.otherEvent.contourId = ringId; - } - - // Handle if the result is a polygon (eg not multipoly) - // Commented it again, let's see what do we mean by that - // if (result.length === 1) result = result[0]; - return result; - } - - var tinyqueue = TinyQueue; - var default_1 = TinyQueue; - - function TinyQueue(data, compare) { - var this$1 = this; - - if (!(this instanceof TinyQueue)) { return new TinyQueue(data, compare); } - - this.data = data || []; - this.length = this.data.length; - this.compare = compare || defaultCompare; - - if (this.length > 0) { - for (var i = (this.length >> 1) - 1; i >= 0; i--) { this$1._down(i); } - } - } - - function defaultCompare(a, b) { - return a < b ? -1 : a > b ? 1 : 0; - } - - TinyQueue.prototype = { - - push: function (item) { - this.data.push(item); - this.length++; - this._up(this.length - 1); - }, - - pop: function () { - if (this.length === 0) { return undefined; } - - var top = this.data[0]; - this.length--; - - if (this.length > 0) { - this.data[0] = this.data[this.length]; - this._down(0); - } - this.data.pop(); - - return top; - }, - - peek: function () { - return this.data[0]; - }, - - _up: function (pos) { - var data = this.data; - var compare = this.compare; - var item = data[pos]; - - while (pos > 0) { - var parent = (pos - 1) >> 1; - var current = data[parent]; - if (compare(item, current) >= 0) { break; } - data[pos] = current; - pos = parent; - } - - data[pos] = item; - }, - - _down: function (pos) { - var this$1 = this; - - var data = this.data; - var compare = this.compare; - var halfLength = this.length >> 1; - var item = data[pos]; - - while (pos < halfLength) { - var left = (pos << 1) + 1; - var right = left + 1; - var best = data[left]; - - if (right < this$1.length && compare(data[right], best) < 0) { - left = right; - best = data[right]; - } - if (compare(best, item) >= 0) { break; } - - data[pos] = best; - pos = left; - } - - data[pos] = item; - } - }; - tinyqueue.default = default_1; - - var max = Math.max; - var min = Math.min; - - var contourId = 0; - - - function processPolygon(contourOrHole, isSubject, depth, Q, bbox, isExteriorRing) { - var i, len, s1, s2, e1, e2; - for (i = 0, len = contourOrHole.length - 1; i < len; i++) { - s1 = contourOrHole[i]; - s2 = contourOrHole[i + 1]; - e1 = new SweepEvent(s1, false, undefined, isSubject); - e2 = new SweepEvent(s2, false, e1, isSubject); - e1.otherEvent = e2; - - if (s1[0] === s2[0] && s1[1] === s2[1]) { - continue; // skip collapsed edges, or it breaks - } - - e1.contourId = e2.contourId = depth; - if (!isExteriorRing) { - e1.isExteriorRing = false; - e2.isExteriorRing = false; - } - if (compareEvents(e1, e2) > 0) { - e2.left = true; - } else { - e1.left = true; - } - - var x = s1[0], y = s1[1]; - bbox[0] = min(bbox[0], x); - bbox[1] = min(bbox[1], y); - bbox[2] = max(bbox[2], x); - bbox[3] = max(bbox[3], y); - - // Pushing it so the queue is sorted from left to right, - // with object on the left having the highest priority. - Q.push(e1); - Q.push(e2); - } - } - - - function fillQueue(subject, clipping, sbbox, cbbox, operation) { - var eventQueue = new tinyqueue(null, compareEvents); - var polygonSet, isExteriorRing, i, ii, j, jj; //, k, kk; - - for (i = 0, ii = subject.length; i < ii; i++) { - polygonSet = subject[i]; - for (j = 0, jj = polygonSet.length; j < jj; j++) { - isExteriorRing = j === 0; - if (isExteriorRing) { contourId++; } - processPolygon(polygonSet[j], true, contourId, eventQueue, sbbox, isExteriorRing); - } - } - - for (i = 0, ii = clipping.length; i < ii; i++) { - polygonSet = clipping[i]; - for (j = 0, jj = polygonSet.length; j < jj; j++) { - isExteriorRing = j === 0; - if (operation === DIFFERENCE) { isExteriorRing = false; } - if (isExteriorRing) { contourId++; } - processPolygon(polygonSet[j], false, contourId, eventQueue, cbbox, isExteriorRing); - } - } - - return eventQueue; - } - - var EMPTY = []; - - - function trivialOperation(subject, clipping, operation) { - var result = null; - if (subject.length * clipping.length === 0) { - if (operation === INTERSECTION) { - result = EMPTY; - } else if (operation === DIFFERENCE) { - result = subject; - } else if (operation === UNION || - operation === XOR) { - result = (subject.length === 0) ? clipping : subject; - } - } - return result; - } - - - function compareBBoxes(subject, clipping, sbbox, cbbox, operation) { - var result = null; - if (sbbox[0] > cbbox[2] || - cbbox[0] > sbbox[2] || - sbbox[1] > cbbox[3] || - cbbox[1] > sbbox[3]) { - if (operation === INTERSECTION) { - result = EMPTY; - } else if (operation === DIFFERENCE) { - result = subject; - } else if (operation === UNION || - operation === XOR) { - result = subject.concat(clipping); - } - } - return result; - } - - - function boolean(subject, clipping, operation) { - if (typeof subject[0][0][0] === 'number') { - subject = [subject]; - } - if (typeof clipping[0][0][0] === 'number') { - clipping = [clipping]; - } - var trivial = trivialOperation(subject, clipping, operation); - if (trivial) { - return trivial === EMPTY ? null : trivial; - } - var sbbox = [Infinity, Infinity, -Infinity, -Infinity]; - var cbbox = [Infinity, Infinity, -Infinity, -Infinity]; - - //console.time('fill queue'); - var eventQueue = fillQueue(subject, clipping, sbbox, cbbox, operation); - //console.timeEnd('fill queue'); - - trivial = compareBBoxes(subject, clipping, sbbox, cbbox, operation); - if (trivial) { - return trivial === EMPTY ? null : trivial; - } - //console.time('subdivide edges'); - var sortedEvents = subdivide(eventQueue, subject, clipping, sbbox, cbbox, operation); - //console.timeEnd('subdivide edges'); - - //console.time('connect vertices'); - var result = connectEdges(sortedEvents, operation); - //console.timeEnd('connect vertices'); - return result; - } - - function union (subject, clipping) { - return boolean(subject, clipping, UNION); - } - - function diff (subject, clipping) { - return boolean(subject, clipping, DIFFERENCE); - } - - function xor (subject, clipping){ - return boolean(subject, clipping, XOR); - } - - function intersection$1 (subject, clipping) { - return boolean(subject, clipping, INTERSECTION); - } - - /** - * @enum {Number} - */ - var operations = { UNION: UNION, DIFFERENCE: DIFFERENCE, INTERSECTION: INTERSECTION, XOR: XOR }; - - exports.union = union; - exports.diff = diff; - exports.xor = xor; - exports.intersection = intersection$1; - exports.operations = operations; - - Object.defineProperty(exports, '__esModule', { value: true }); - -}))); - - -},{}],266:[function(require,module,exports){ -'use strict' -var inherits = require('inherits') -var HashBase = require('hash-base') -var Buffer = require('safe-buffer').Buffer - -var ARRAY16 = new Array(16) - -function MD5 () { - HashBase.call(this, 64) - - // state - this._a = 0x67452301 - this._b = 0xefcdab89 - this._c = 0x98badcfe - this._d = 0x10325476 -} - -inherits(MD5, HashBase) - -MD5.prototype._update = function () { - var M = ARRAY16 - for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4) - - var a = this._a - var b = this._b - var c = this._c - var d = this._d - - a = fnF(a, b, c, d, M[0], 0xd76aa478, 7) - d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12) - c = fnF(c, d, a, b, M[2], 0x242070db, 17) - b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22) - a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7) - d = fnF(d, a, b, c, M[5], 0x4787c62a, 12) - c = fnF(c, d, a, b, M[6], 0xa8304613, 17) - b = fnF(b, c, d, a, M[7], 0xfd469501, 22) - a = fnF(a, b, c, d, M[8], 0x698098d8, 7) - d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12) - c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17) - b = fnF(b, c, d, a, M[11], 0x895cd7be, 22) - a = fnF(a, b, c, d, M[12], 0x6b901122, 7) - d = fnF(d, a, b, c, M[13], 0xfd987193, 12) - c = fnF(c, d, a, b, M[14], 0xa679438e, 17) - b = fnF(b, c, d, a, M[15], 0x49b40821, 22) - - a = fnG(a, b, c, d, M[1], 0xf61e2562, 5) - d = fnG(d, a, b, c, M[6], 0xc040b340, 9) - c = fnG(c, d, a, b, M[11], 0x265e5a51, 14) - b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20) - a = fnG(a, b, c, d, M[5], 0xd62f105d, 5) - d = fnG(d, a, b, c, M[10], 0x02441453, 9) - c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14) - b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20) - a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5) - d = fnG(d, a, b, c, M[14], 0xc33707d6, 9) - c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14) - b = fnG(b, c, d, a, M[8], 0x455a14ed, 20) - a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5) - d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9) - c = fnG(c, d, a, b, M[7], 0x676f02d9, 14) - b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20) - - a = fnH(a, b, c, d, M[5], 0xfffa3942, 4) - d = fnH(d, a, b, c, M[8], 0x8771f681, 11) - c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16) - b = fnH(b, c, d, a, M[14], 0xfde5380c, 23) - a = fnH(a, b, c, d, M[1], 0xa4beea44, 4) - d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11) - c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16) - b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23) - a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4) - d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11) - c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16) - b = fnH(b, c, d, a, M[6], 0x04881d05, 23) - a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4) - d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11) - c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16) - b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23) - - a = fnI(a, b, c, d, M[0], 0xf4292244, 6) - d = fnI(d, a, b, c, M[7], 0x432aff97, 10) - c = fnI(c, d, a, b, M[14], 0xab9423a7, 15) - b = fnI(b, c, d, a, M[5], 0xfc93a039, 21) - a = fnI(a, b, c, d, M[12], 0x655b59c3, 6) - d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10) - c = fnI(c, d, a, b, M[10], 0xffeff47d, 15) - b = fnI(b, c, d, a, M[1], 0x85845dd1, 21) - a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6) - d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10) - c = fnI(c, d, a, b, M[6], 0xa3014314, 15) - b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21) - a = fnI(a, b, c, d, M[4], 0xf7537e82, 6) - d = fnI(d, a, b, c, M[11], 0xbd3af235, 10) - c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15) - b = fnI(b, c, d, a, M[9], 0xeb86d391, 21) - - this._a = (this._a + a) | 0 - this._b = (this._b + b) | 0 - this._c = (this._c + c) | 0 - this._d = (this._d + d) | 0 -} - -MD5.prototype._digest = function () { - // create padding and handle blocks - this._block[this._blockOffset++] = 0x80 - if (this._blockOffset > 56) { - this._block.fill(0, this._blockOffset, 64) - this._update() - this._blockOffset = 0 - } - - this._block.fill(0, this._blockOffset, 56) - this._block.writeUInt32LE(this._length[0], 56) - this._block.writeUInt32LE(this._length[1], 60) - this._update() - - // produce result - var buffer = Buffer.allocUnsafe(16) - buffer.writeInt32LE(this._a, 0) - buffer.writeInt32LE(this._b, 4) - buffer.writeInt32LE(this._c, 8) - buffer.writeInt32LE(this._d, 12) - return buffer -} - -function rotl (x, n) { - return (x << n) | (x >>> (32 - n)) -} - -function fnF (a, b, c, d, m, k, s) { - return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0 -} - -function fnG (a, b, c, d, m, k, s) { - return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0 -} - -function fnH (a, b, c, d, m, k, s) { - return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0 -} - -function fnI (a, b, c, d, m, k, s) { - return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0 -} - -module.exports = MD5 - -},{"hash-base":227,"inherits":262,"safe-buffer":318}],267:[function(require,module,exports){ -var bn = require('bn.js'); -var brorand = require('brorand'); - -function MillerRabin(rand) { - this.rand = rand || new brorand.Rand(); -} -module.exports = MillerRabin; - -MillerRabin.create = function create(rand) { - return new MillerRabin(rand); -}; - -MillerRabin.prototype._randbelow = function _randbelow(n) { - var len = n.bitLength(); - var min_bytes = Math.ceil(len / 8); - - // Generage random bytes until a number less than n is found. - // This ensures that 0..n-1 have an equal probability of being selected. - do - var a = new bn(this.rand.generate(min_bytes)); - while (a.cmp(n) >= 0); - - return a; -}; - -MillerRabin.prototype._randrange = function _randrange(start, stop) { - // Generate a random number greater than or equal to start and less than stop. - var size = stop.sub(start); - return start.add(this._randbelow(size)); -}; - -MillerRabin.prototype.test = function test(n, k, cb) { - var len = n.bitLength(); - var red = bn.mont(n); - var rone = new bn(1).toRed(red); - - if (!k) - k = Math.max(1, (len / 48) | 0); - - // Find d and s, (n - 1) = (2 ^ s) * d; - var n1 = n.subn(1); - for (var s = 0; !n1.testn(s); s++) {} - var d = n.shrn(s); - - var rn1 = n1.toRed(red); - - var prime = true; - for (; k > 0; k--) { - var a = this._randrange(new bn(2), n1); - if (cb) - cb(a); - - var x = a.toRed(red).redPow(d); - if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) - continue; - - for (var i = 1; i < s; i++) { - x = x.redSqr(); - - if (x.cmp(rone) === 0) - return false; - if (x.cmp(rn1) === 0) - break; - } - - if (i === s) - return false; - } - - return prime; -}; - -MillerRabin.prototype.getDivisor = function getDivisor(n, k) { - var len = n.bitLength(); - var red = bn.mont(n); - var rone = new bn(1).toRed(red); - - if (!k) - k = Math.max(1, (len / 48) | 0); - - // Find d and s, (n - 1) = (2 ^ s) * d; - var n1 = n.subn(1); - for (var s = 0; !n1.testn(s); s++) {} - var d = n.shrn(s); - - var rn1 = n1.toRed(red); - - for (; k > 0; k--) { - var a = this._randrange(new bn(2), n1); - - var g = n.gcd(a); - if (g.cmpn(1) !== 0) - return g; - - var x = a.toRed(red).redPow(d); - if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) - continue; - - for (var i = 1; i < s; i++) { - x = x.redSqr(); - - if (x.cmp(rone) === 0) - return x.fromRed().subn(1).gcd(n); - if (x.cmp(rn1) === 0) - break; - } - - if (i === s) { - x = x.redSqr(); - return x.fromRed().subn(1).gcd(n); - } - } - - return false; -}; - -},{"bn.js":147,"brorand":148}],268:[function(require,module,exports){ -module.exports = assert; - -function assert(val, msg) { - if (!val) - throw new Error(msg || 'Assertion failed'); -} - -assert.equal = function assertEqual(l, r, msg) { - if (l != r) - throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r)); -}; - -},{}],269:[function(require,module,exports){ -'use strict'; - -var utils = exports; - -function toArray(msg, enc) { - if (Array.isArray(msg)) - return msg.slice(); - if (!msg) - return []; - var res = []; - if (typeof msg !== 'string') { - for (var i = 0; i < msg.length; i++) - res[i] = msg[i] | 0; - return res; - } - if (enc === 'hex') { - msg = msg.replace(/[^a-z0-9]+/ig, ''); - if (msg.length % 2 !== 0) - msg = '0' + msg; - for (var i = 0; i < msg.length; i += 2) - res.push(parseInt(msg[i] + msg[i + 1], 16)); - } else { - for (var i = 0; i < msg.length; i++) { - var c = msg.charCodeAt(i); - var hi = c >> 8; - var lo = c & 0xff; - if (hi) - res.push(hi, lo); - else - res.push(lo); - } - } - return res; -} -utils.toArray = toArray; - -function zero2(word) { - if (word.length === 1) - return '0' + word; - else - return word; -} -utils.zero2 = zero2; - -function toHex(msg) { - var res = ''; - for (var i = 0; i < msg.length; i++) - res += zero2(msg[i].toString(16)); - return res; -} -utils.toHex = toHex; - -utils.encode = function encode(arr, enc) { - if (enc === 'hex') - return toHex(arr); - else - return arr; -}; - -},{}],270:[function(require,module,exports){ -exports.endianness = function () { return 'LE' }; - -exports.hostname = function () { - if (typeof location !== 'undefined') { - return location.hostname - } - else return ''; -}; - -exports.loadavg = function () { return [] }; - -exports.uptime = function () { return 0 }; - -exports.freemem = function () { - return Number.MAX_VALUE; -}; - -exports.totalmem = function () { - return Number.MAX_VALUE; -}; - -exports.cpus = function () { return [] }; - -exports.type = function () { return 'Browser' }; - -exports.release = function () { - if (typeof navigator !== 'undefined') { - return navigator.appVersion; - } - return ''; -}; - -exports.networkInterfaces -= exports.getNetworkInterfaces -= function () { return {} }; - -exports.arch = function () { return 'javascript' }; - -exports.platform = function () { return 'browser' }; - -exports.tmpdir = exports.tmpDir = function () { - return '/tmp'; -}; - -exports.EOL = '\n'; - -exports.homedir = function () { - return '/' -}; - -},{}],271:[function(require,module,exports){ -module.exports={"2.16.840.1.101.3.4.1.1": "aes-128-ecb", -"2.16.840.1.101.3.4.1.2": "aes-128-cbc", -"2.16.840.1.101.3.4.1.3": "aes-128-ofb", -"2.16.840.1.101.3.4.1.4": "aes-128-cfb", -"2.16.840.1.101.3.4.1.21": "aes-192-ecb", -"2.16.840.1.101.3.4.1.22": "aes-192-cbc", -"2.16.840.1.101.3.4.1.23": "aes-192-ofb", -"2.16.840.1.101.3.4.1.24": "aes-192-cfb", -"2.16.840.1.101.3.4.1.41": "aes-256-ecb", -"2.16.840.1.101.3.4.1.42": "aes-256-cbc", -"2.16.840.1.101.3.4.1.43": "aes-256-ofb", -"2.16.840.1.101.3.4.1.44": "aes-256-cfb" -} -},{}],272:[function(require,module,exports){ -// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js -// Fedor, you are amazing. -'use strict' - -var asn1 = require('asn1.js') - -exports.certificate = require('./certificate') - -var RSAPrivateKey = asn1.define('RSAPrivateKey', function () { - this.seq().obj( - this.key('version').int(), - this.key('modulus').int(), - this.key('publicExponent').int(), - this.key('privateExponent').int(), - this.key('prime1').int(), - this.key('prime2').int(), - this.key('exponent1').int(), - this.key('exponent2').int(), - this.key('coefficient').int() - ) -}) -exports.RSAPrivateKey = RSAPrivateKey - -var RSAPublicKey = asn1.define('RSAPublicKey', function () { - this.seq().obj( - this.key('modulus').int(), - this.key('publicExponent').int() - ) -}) -exports.RSAPublicKey = RSAPublicKey - -var PublicKey = asn1.define('SubjectPublicKeyInfo', function () { - this.seq().obj( - this.key('algorithm').use(AlgorithmIdentifier), - this.key('subjectPublicKey').bitstr() - ) -}) -exports.PublicKey = PublicKey - -var AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () { - this.seq().obj( - this.key('algorithm').objid(), - this.key('none').null_().optional(), - this.key('curve').objid().optional(), - this.key('params').seq().obj( - this.key('p').int(), - this.key('q').int(), - this.key('g').int() - ).optional() - ) -}) - -var PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () { - this.seq().obj( - this.key('version').int(), - this.key('algorithm').use(AlgorithmIdentifier), - this.key('subjectPrivateKey').octstr() - ) -}) -exports.PrivateKey = PrivateKeyInfo -var EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () { - this.seq().obj( - this.key('algorithm').seq().obj( - this.key('id').objid(), - this.key('decrypt').seq().obj( - this.key('kde').seq().obj( - this.key('id').objid(), - this.key('kdeparams').seq().obj( - this.key('salt').octstr(), - this.key('iters').int() - ) - ), - this.key('cipher').seq().obj( - this.key('algo').objid(), - this.key('iv').octstr() - ) - ) - ), - this.key('subjectPrivateKey').octstr() - ) -}) - -exports.EncryptedPrivateKey = EncryptedPrivateKeyInfo - -var DSAPrivateKey = asn1.define('DSAPrivateKey', function () { - this.seq().obj( - this.key('version').int(), - this.key('p').int(), - this.key('q').int(), - this.key('g').int(), - this.key('pub_key').int(), - this.key('priv_key').int() - ) -}) -exports.DSAPrivateKey = DSAPrivateKey - -exports.DSAparam = asn1.define('DSAparam', function () { - this.int() -}) - -var ECPrivateKey = asn1.define('ECPrivateKey', function () { - this.seq().obj( - this.key('version').int(), - this.key('privateKey').octstr(), - this.key('parameters').optional().explicit(0).use(ECParameters), - this.key('publicKey').optional().explicit(1).bitstr() - ) -}) -exports.ECPrivateKey = ECPrivateKey - -var ECParameters = asn1.define('ECParameters', function () { - this.choice({ - namedCurve: this.objid() - }) -}) - -exports.signature = asn1.define('signature', function () { - this.seq().obj( - this.key('r').int(), - this.key('s').int() - ) -}) - -},{"./certificate":273,"asn1.js":132}],273:[function(require,module,exports){ -// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js -// thanks to @Rantanen - -'use strict' - -var asn = require('asn1.js') - -var Time = asn.define('Time', function () { - this.choice({ - utcTime: this.utctime(), - generalTime: this.gentime() - }) -}) - -var AttributeTypeValue = asn.define('AttributeTypeValue', function () { - this.seq().obj( - this.key('type').objid(), - this.key('value').any() - ) -}) - -var AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () { - this.seq().obj( - this.key('algorithm').objid(), - this.key('parameters').optional(), - this.key('curve').objid().optional() - ) -}) - -var SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () { - this.seq().obj( - this.key('algorithm').use(AlgorithmIdentifier), - this.key('subjectPublicKey').bitstr() - ) -}) - -var RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () { - this.setof(AttributeTypeValue) -}) - -var RDNSequence = asn.define('RDNSequence', function () { - this.seqof(RelativeDistinguishedName) -}) - -var Name = asn.define('Name', function () { - this.choice({ - rdnSequence: this.use(RDNSequence) - }) -}) - -var Validity = asn.define('Validity', function () { - this.seq().obj( - this.key('notBefore').use(Time), - this.key('notAfter').use(Time) - ) -}) - -var Extension = asn.define('Extension', function () { - this.seq().obj( - this.key('extnID').objid(), - this.key('critical').bool().def(false), - this.key('extnValue').octstr() - ) -}) - -var TBSCertificate = asn.define('TBSCertificate', function () { - this.seq().obj( - this.key('version').explicit(0).int().optional(), - this.key('serialNumber').int(), - this.key('signature').use(AlgorithmIdentifier), - this.key('issuer').use(Name), - this.key('validity').use(Validity), - this.key('subject').use(Name), - this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo), - this.key('issuerUniqueID').implicit(1).bitstr().optional(), - this.key('subjectUniqueID').implicit(2).bitstr().optional(), - this.key('extensions').explicit(3).seqof(Extension).optional() - ) -}) - -var X509Certificate = asn.define('X509Certificate', function () { - this.seq().obj( - this.key('tbsCertificate').use(TBSCertificate), - this.key('signatureAlgorithm').use(AlgorithmIdentifier), - this.key('signatureValue').bitstr() - ) -}) - -module.exports = X509Certificate - -},{"asn1.js":132}],274:[function(require,module,exports){ -// adapted from https://github.com/apatil/pemstrip -var findProc = /Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r\+\/\=]+)[\n\r]+/m -var startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m -var fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r\+\/\=]+)-----END \1-----$/m -var evp = require('evp_bytestokey') -var ciphers = require('browserify-aes') -var Buffer = require('safe-buffer').Buffer -module.exports = function (okey, password) { - var key = okey.toString() - var match = key.match(findProc) - var decrypted - if (!match) { - var match2 = key.match(fullRegex) - decrypted = new Buffer(match2[2].replace(/[\r\n]/g, ''), 'base64') - } else { - var suite = 'aes' + match[1] - var iv = Buffer.from(match[2], 'hex') - var cipherText = Buffer.from(match[3].replace(/[\r\n]/g, ''), 'base64') - var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key - var out = [] - var cipher = ciphers.createDecipheriv(suite, cipherKey, iv) - out.push(cipher.update(cipherText)) - out.push(cipher.final()) - decrypted = Buffer.concat(out) - } - var tag = key.match(startRegex)[1] - return { - tag: tag, - data: decrypted - } -} - -},{"browserify-aes":152,"evp_bytestokey":222,"safe-buffer":318}],275:[function(require,module,exports){ -var asn1 = require('./asn1') -var aesid = require('./aesid.json') -var fixProc = require('./fixProc') -var ciphers = require('browserify-aes') -var compat = require('pbkdf2') -var Buffer = require('safe-buffer').Buffer -module.exports = parseKeys - -function parseKeys (buffer) { - var password - if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) { - password = buffer.passphrase - buffer = buffer.key - } - if (typeof buffer === 'string') { - buffer = Buffer.from(buffer) - } - - var stripped = fixProc(buffer, password) - - var type = stripped.tag - var data = stripped.data - var subtype, ndata - switch (type) { - case 'CERTIFICATE': - ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo - // falls through - case 'PUBLIC KEY': - if (!ndata) { - ndata = asn1.PublicKey.decode(data, 'der') - } - subtype = ndata.algorithm.algorithm.join('.') - switch (subtype) { - case '1.2.840.113549.1.1.1': - return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der') - case '1.2.840.10045.2.1': - ndata.subjectPrivateKey = ndata.subjectPublicKey - return { - type: 'ec', - data: ndata - } - case '1.2.840.10040.4.1': - ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der') - return { - type: 'dsa', - data: ndata.algorithm.params - } - default: throw new Error('unknown key id ' + subtype) - } - throw new Error('unknown key type ' + type) - case 'ENCRYPTED PRIVATE KEY': - data = asn1.EncryptedPrivateKey.decode(data, 'der') - data = decrypt(data, password) - // falls through - case 'PRIVATE KEY': - ndata = asn1.PrivateKey.decode(data, 'der') - subtype = ndata.algorithm.algorithm.join('.') - switch (subtype) { - case '1.2.840.113549.1.1.1': - return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der') - case '1.2.840.10045.2.1': - return { - curve: ndata.algorithm.curve, - privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey - } - case '1.2.840.10040.4.1': - ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der') - return { - type: 'dsa', - params: ndata.algorithm.params - } - default: throw new Error('unknown key id ' + subtype) - } - throw new Error('unknown key type ' + type) - case 'RSA PUBLIC KEY': - return asn1.RSAPublicKey.decode(data, 'der') - case 'RSA PRIVATE KEY': - return asn1.RSAPrivateKey.decode(data, 'der') - case 'DSA PRIVATE KEY': - return { - type: 'dsa', - params: asn1.DSAPrivateKey.decode(data, 'der') - } - case 'EC PRIVATE KEY': - data = asn1.ECPrivateKey.decode(data, 'der') - return { - curve: data.parameters.value, - privateKey: data.privateKey - } - default: throw new Error('unknown key type ' + type) - } -} -parseKeys.signature = asn1.signature -function decrypt (data, password) { - var salt = data.algorithm.decrypt.kde.kdeparams.salt - var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10) - var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')] - var iv = data.algorithm.decrypt.cipher.iv - var cipherText = data.subjectPrivateKey - var keylen = parseInt(algo.split('-')[1], 10) / 8 - var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1') - var cipher = ciphers.createDecipheriv(algo, key, iv) - var out = [] - out.push(cipher.update(cipherText)) - out.push(cipher.final()) - return Buffer.concat(out) -} - -},{"./aesid.json":271,"./asn1":272,"./fixProc":274,"browserify-aes":152,"pbkdf2":278,"safe-buffer":318}],276:[function(require,module,exports){ -(function (process){ -// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1, -// backported and transplited with Babel, with backwards-compat fixes - -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// resolves . and .. elements in a path array with directory names there -// must be no slashes, empty elements, or device names (c:\) in the array -// (so also no leading and trailing slashes - it does not distinguish -// relative and absolute paths) -function normalizeArray(parts, allowAboveRoot) { - // if the path tries to go above the root, `up` ends up > 0 - 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 the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up--; up) { - parts.unshift('..'); - } - } - - return parts; -} - -// path.resolve([from ...], to) -// posix version -exports.resolve = function() { - var resolvedPath = '', - resolvedAbsolute = false; - - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) ? arguments[i] : process.cwd(); - - // Skip empty and invalid entries - if (typeof path !== 'string') { - throw new TypeError('Arguments to path.resolve must be strings'); - } else if (!path) { - continue; - } - - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charAt(0) === '/'; - } - - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - - // Normalize the path - resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { - return !!p; - }), !resolvedAbsolute).join('/'); - - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; -}; - -// path.normalize(path) -// posix version -exports.normalize = function(path) { - var isAbsolute = exports.isAbsolute(path), - trailingSlash = substr(path, -1) === '/'; - - // Normalize the path - path = normalizeArray(filter(path.split('/'), function(p) { - return !!p; - }), !isAbsolute).join('/'); - - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - - return (isAbsolute ? '/' : '') + path; -}; - -// posix version -exports.isAbsolute = function(path) { - return path.charAt(0) === '/'; -}; - -// posix version -exports.join = function() { - var paths = Array.prototype.slice.call(arguments, 0); - return exports.normalize(filter(paths, function(p, index) { - if (typeof p !== 'string') { - throw new TypeError('Arguments to path.join must be strings'); - } - return p; - }).join('/')); -}; - - -// path.relative(from, to) -// posix version -exports.relative = function(from, to) { - from = exports.resolve(from).substr(1); - to = exports.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('/'); -}; - -exports.sep = '/'; -exports.delimiter = ':'; - -exports.dirname = function (path) { - if (typeof path !== 'string') path = path + ''; - if (path.length === 0) return '.'; - var code = path.charCodeAt(0); - var hasRoot = code === 47 /*/*/; - var end = -1; - var matchedSlash = true; - for (var i = path.length - 1; i >= 1; --i) { - code = path.charCodeAt(i); - if (code === 47 /*/*/) { - if (!matchedSlash) { - end = i; - break; - } - } else { - // We saw the first non-path separator - matchedSlash = false; - } - } - - if (end === -1) return hasRoot ? '/' : '.'; - if (hasRoot && end === 1) { - // return '//'; - // Backwards-compat fix: - return '/'; - } - return path.slice(0, end); -}; - -function basename(path) { - if (typeof path !== 'string') path = path + ''; - - var start = 0; - var end = -1; - var matchedSlash = true; - var i; - - for (i = path.length - 1; i >= 0; --i) { - if (path.charCodeAt(i) === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - start = i + 1; - break; - } - } else if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // path component - matchedSlash = false; - end = i + 1; - } - } - - if (end === -1) return ''; - return path.slice(start, end); -} - -// Uses a mixed approach for backwards-compatibility, as ext behavior changed -// in new Node.js versions, so only basename() above is backported here -exports.basename = function (path, ext) { - var f = basename(path); - if (ext && f.substr(-1 * ext.length) === ext) { - f = f.substr(0, f.length - ext.length); - } - return f; -}; - -exports.extname = function (path) { - if (typeof path !== 'string') path = path + ''; - var startDot = -1; - var startPart = 0; - var end = -1; - var matchedSlash = true; - // Track the state of characters (if any) we see before our first dot and - // after any path separator we find - var preDotState = 0; - for (var i = path.length - 1; i >= 0; --i) { - var code = path.charCodeAt(i); - if (code === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - startPart = i + 1; - break; - } - continue; - } - if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // extension - matchedSlash = false; - end = i + 1; - } - if (code === 46 /*.*/) { - // If this is our first dot, mark it as the start of our extension - if (startDot === -1) - startDot = i; - else if (preDotState !== 1) - preDotState = 1; - } else if (startDot !== -1) { - // We saw a non-dot and non-path separator before our dot, so we should - // have a good chance at having a non-empty extension - preDotState = -1; - } - } - - if (startDot === -1 || end === -1 || - // We saw a non-dot character immediately before the dot - preDotState === 0 || - // The (right-most) trimmed path component is exactly '..' - preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { - return ''; - } - return path.slice(startDot, end); -}; - -function filter (xs, f) { - if (xs.filter) return xs.filter(f); - var res = []; - for (var i = 0; i < xs.length; i++) { - if (f(xs[i], i, xs)) res.push(xs[i]); - } - return res; -} - -// String.prototype.substr - negative index don't work in IE8 -var substr = 'ab'.substr(-1) === 'b' - ? function (str, start, len) { return str.substr(start, len) } - : function (str, start, len) { - if (start < 0) start = str.length + start; - return str.substr(start, len); - } -; - -}).call(this,require('_process')) -},{"_process":284}],277:[function(require,module,exports){ -'use strict'; - -module.exports = Pbf; - -var ieee754 = require('ieee754'); - -function Pbf(buf) { - this.buf = ArrayBuffer.isView && ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf || 0); - this.pos = 0; - this.type = 0; - this.length = this.buf.length; -} - -Pbf.Varint = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum -Pbf.Fixed64 = 1; // 64-bit: double, fixed64, sfixed64 -Pbf.Bytes = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields -Pbf.Fixed32 = 5; // 32-bit: float, fixed32, sfixed32 - -var SHIFT_LEFT_32 = (1 << 16) * (1 << 16), - SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32; - -Pbf.prototype = { - - destroy: function() { - this.buf = null; - }, - - // === READING ================================================================= - - readFields: function(readField, result, end) { - end = end || this.length; - - while (this.pos < end) { - var val = this.readVarint(), - tag = val >> 3, - startPos = this.pos; - - this.type = val & 0x7; - readField(tag, result, this); - - if (this.pos === startPos) this.skip(val); - } - return result; - }, - - readMessage: function(readField, result) { - return this.readFields(readField, result, this.readVarint() + this.pos); - }, - - readFixed32: function() { - var val = readUInt32(this.buf, this.pos); - this.pos += 4; - return val; - }, - - readSFixed32: function() { - var val = readInt32(this.buf, this.pos); - this.pos += 4; - return val; - }, - - // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed) - - readFixed64: function() { - var val = readUInt32(this.buf, this.pos) + readUInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32; - this.pos += 8; - return val; - }, - - readSFixed64: function() { - var val = readUInt32(this.buf, this.pos) + readInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32; - this.pos += 8; - return val; - }, - - readFloat: function() { - var val = ieee754.read(this.buf, this.pos, true, 23, 4); - this.pos += 4; - return val; - }, - - readDouble: function() { - var val = ieee754.read(this.buf, this.pos, true, 52, 8); - this.pos += 8; - return val; - }, - - readVarint: function(isSigned) { - var buf = this.buf, - val, b; - - b = buf[this.pos++]; val = b & 0x7f; if (b < 0x80) return val; - b = buf[this.pos++]; val |= (b & 0x7f) << 7; if (b < 0x80) return val; - b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val; - b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val; - b = buf[this.pos]; val |= (b & 0x0f) << 28; - - return readVarintRemainder(val, isSigned, this); - }, - - readVarint64: function() { // for compatibility with v2.0.1 - return this.readVarint(true); - }, - - readSVarint: function() { - var num = this.readVarint(); - return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding - }, - - readBoolean: function() { - return Boolean(this.readVarint()); - }, - - readString: function() { - var end = this.readVarint() + this.pos, - str = readUtf8(this.buf, this.pos, end); - this.pos = end; - return str; - }, - - readBytes: function() { - var end = this.readVarint() + this.pos, - buffer = this.buf.subarray(this.pos, end); - this.pos = end; - return buffer; - }, - - // verbose for performance reasons; doesn't affect gzipped size - - readPackedVarint: function(arr, isSigned) { - if (this.type !== Pbf.Bytes) return arr.push(this.readVarint(isSigned)); - var end = readPackedEnd(this); - arr = arr || []; - while (this.pos < end) arr.push(this.readVarint(isSigned)); - return arr; - }, - readPackedSVarint: function(arr) { - if (this.type !== Pbf.Bytes) return arr.push(this.readSVarint()); - var end = readPackedEnd(this); - arr = arr || []; - while (this.pos < end) arr.push(this.readSVarint()); - return arr; - }, - readPackedBoolean: function(arr) { - if (this.type !== Pbf.Bytes) return arr.push(this.readBoolean()); - var end = readPackedEnd(this); - arr = arr || []; - while (this.pos < end) arr.push(this.readBoolean()); - return arr; - }, - readPackedFloat: function(arr) { - if (this.type !== Pbf.Bytes) return arr.push(this.readFloat()); - var end = readPackedEnd(this); - arr = arr || []; - while (this.pos < end) arr.push(this.readFloat()); - return arr; - }, - readPackedDouble: function(arr) { - if (this.type !== Pbf.Bytes) return arr.push(this.readDouble()); - var end = readPackedEnd(this); - arr = arr || []; - while (this.pos < end) arr.push(this.readDouble()); - return arr; - }, - readPackedFixed32: function(arr) { - if (this.type !== Pbf.Bytes) return arr.push(this.readFixed32()); - var end = readPackedEnd(this); - arr = arr || []; - while (this.pos < end) arr.push(this.readFixed32()); - return arr; - }, - readPackedSFixed32: function(arr) { - if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed32()); - var end = readPackedEnd(this); - arr = arr || []; - while (this.pos < end) arr.push(this.readSFixed32()); - return arr; - }, - readPackedFixed64: function(arr) { - if (this.type !== Pbf.Bytes) return arr.push(this.readFixed64()); - var end = readPackedEnd(this); - arr = arr || []; - while (this.pos < end) arr.push(this.readFixed64()); - return arr; - }, - readPackedSFixed64: function(arr) { - if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed64()); - var end = readPackedEnd(this); - arr = arr || []; - while (this.pos < end) arr.push(this.readSFixed64()); - return arr; - }, - - skip: function(val) { - var type = val & 0x7; - if (type === Pbf.Varint) while (this.buf[this.pos++] > 0x7f) {} - else if (type === Pbf.Bytes) this.pos = this.readVarint() + this.pos; - else if (type === Pbf.Fixed32) this.pos += 4; - else if (type === Pbf.Fixed64) this.pos += 8; - else throw new Error('Unimplemented type: ' + type); - }, - - // === WRITING ================================================================= - - writeTag: function(tag, type) { - this.writeVarint((tag << 3) | type); - }, - - realloc: function(min) { - var length = this.length || 16; - - while (length < this.pos + min) length *= 2; - - if (length !== this.length) { - var buf = new Uint8Array(length); - buf.set(this.buf); - this.buf = buf; - this.length = length; - } - }, - - finish: function() { - this.length = this.pos; - this.pos = 0; - return this.buf.subarray(0, this.length); - }, - - writeFixed32: function(val) { - this.realloc(4); - writeInt32(this.buf, val, this.pos); - this.pos += 4; - }, - - writeSFixed32: function(val) { - this.realloc(4); - writeInt32(this.buf, val, this.pos); - this.pos += 4; - }, - - writeFixed64: function(val) { - this.realloc(8); - writeInt32(this.buf, val & -1, this.pos); - writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4); - this.pos += 8; - }, - - writeSFixed64: function(val) { - this.realloc(8); - writeInt32(this.buf, val & -1, this.pos); - writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4); - this.pos += 8; - }, - - writeVarint: function(val) { - val = +val || 0; - - if (val > 0xfffffff || val < 0) { - writeBigVarint(val, this); - return; - } - - this.realloc(4); - - this.buf[this.pos++] = val & 0x7f | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return; - this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return; - this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return; - this.buf[this.pos++] = (val >>> 7) & 0x7f; - }, - - writeSVarint: function(val) { - this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2); - }, - - writeBoolean: function(val) { - this.writeVarint(Boolean(val)); - }, - - writeString: function(str) { - str = String(str); - this.realloc(str.length * 4); - - this.pos++; // reserve 1 byte for short string length - - var startPos = this.pos; - // write the string directly to the buffer and see how much was written - this.pos = writeUtf8(this.buf, str, this.pos); - var len = this.pos - startPos; - - if (len >= 0x80) makeRoomForExtraLength(startPos, len, this); - - // finally, write the message length in the reserved place and restore the position - this.pos = startPos - 1; - this.writeVarint(len); - this.pos += len; - }, - - writeFloat: function(val) { - this.realloc(4); - ieee754.write(this.buf, val, this.pos, true, 23, 4); - this.pos += 4; - }, - - writeDouble: function(val) { - this.realloc(8); - ieee754.write(this.buf, val, this.pos, true, 52, 8); - this.pos += 8; - }, - - writeBytes: function(buffer) { - var len = buffer.length; - this.writeVarint(len); - this.realloc(len); - for (var i = 0; i < len; i++) this.buf[this.pos++] = buffer[i]; - }, - - writeRawMessage: function(fn, obj) { - this.pos++; // reserve 1 byte for short message length - - // write the message directly to the buffer and see how much was written - var startPos = this.pos; - fn(obj, this); - var len = this.pos - startPos; - - if (len >= 0x80) makeRoomForExtraLength(startPos, len, this); - - // finally, write the message length in the reserved place and restore the position - this.pos = startPos - 1; - this.writeVarint(len); - this.pos += len; - }, - - writeMessage: function(tag, fn, obj) { - this.writeTag(tag, Pbf.Bytes); - this.writeRawMessage(fn, obj); - }, - - writePackedVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedVarint, arr); }, - writePackedSVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSVarint, arr); }, - writePackedBoolean: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedBoolean, arr); }, - writePackedFloat: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFloat, arr); }, - writePackedDouble: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedDouble, arr); }, - writePackedFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed32, arr); }, - writePackedSFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed32, arr); }, - writePackedFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed64, arr); }, - writePackedSFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed64, arr); }, - - writeBytesField: function(tag, buffer) { - this.writeTag(tag, Pbf.Bytes); - this.writeBytes(buffer); - }, - writeFixed32Field: function(tag, val) { - this.writeTag(tag, Pbf.Fixed32); - this.writeFixed32(val); - }, - writeSFixed32Field: function(tag, val) { - this.writeTag(tag, Pbf.Fixed32); - this.writeSFixed32(val); - }, - writeFixed64Field: function(tag, val) { - this.writeTag(tag, Pbf.Fixed64); - this.writeFixed64(val); - }, - writeSFixed64Field: function(tag, val) { - this.writeTag(tag, Pbf.Fixed64); - this.writeSFixed64(val); - }, - writeVarintField: function(tag, val) { - this.writeTag(tag, Pbf.Varint); - this.writeVarint(val); - }, - writeSVarintField: function(tag, val) { - this.writeTag(tag, Pbf.Varint); - this.writeSVarint(val); - }, - writeStringField: function(tag, str) { - this.writeTag(tag, Pbf.Bytes); - this.writeString(str); - }, - writeFloatField: function(tag, val) { - this.writeTag(tag, Pbf.Fixed32); - this.writeFloat(val); - }, - writeDoubleField: function(tag, val) { - this.writeTag(tag, Pbf.Fixed64); - this.writeDouble(val); - }, - writeBooleanField: function(tag, val) { - this.writeVarintField(tag, Boolean(val)); - } -}; - -function readVarintRemainder(l, s, p) { - var buf = p.buf, - h, b; - - b = buf[p.pos++]; h = (b & 0x70) >> 4; if (b < 0x80) return toNum(l, h, s); - b = buf[p.pos++]; h |= (b & 0x7f) << 3; if (b < 0x80) return toNum(l, h, s); - b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s); - b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s); - b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s); - b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s); - - throw new Error('Expected varint not more than 10 bytes'); -} - -function readPackedEnd(pbf) { - return pbf.type === Pbf.Bytes ? - pbf.readVarint() + pbf.pos : pbf.pos + 1; -} - -function toNum(low, high, isSigned) { - if (isSigned) { - return high * 0x100000000 + (low >>> 0); - } - - return ((high >>> 0) * 0x100000000) + (low >>> 0); -} - -function writeBigVarint(val, pbf) { - var low, high; - - if (val >= 0) { - low = (val % 0x100000000) | 0; - high = (val / 0x100000000) | 0; - } else { - low = ~(-val % 0x100000000); - high = ~(-val / 0x100000000); - - if (low ^ 0xffffffff) { - low = (low + 1) | 0; - } else { - low = 0; - high = (high + 1) | 0; - } - } - - if (val >= 0x10000000000000000 || val < -0x10000000000000000) { - throw new Error('Given varint doesn\'t fit into 10 bytes'); - } - - pbf.realloc(10); - - writeBigVarintLow(low, high, pbf); - writeBigVarintHigh(high, pbf); -} - -function writeBigVarintLow(low, high, pbf) { - pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7; - pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7; - pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7; - pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7; - pbf.buf[pbf.pos] = low & 0x7f; -} - -function writeBigVarintHigh(high, pbf) { - var lsb = (high & 0x07) << 4; - - pbf.buf[pbf.pos++] |= lsb | ((high >>>= 3) ? 0x80 : 0); if (!high) return; - pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return; - pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return; - pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return; - pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return; - pbf.buf[pbf.pos++] = high & 0x7f; -} - -function makeRoomForExtraLength(startPos, len, pbf) { - var extraLen = - len <= 0x3fff ? 1 : - len <= 0x1fffff ? 2 : - len <= 0xfffffff ? 3 : Math.floor(Math.log(len) / (Math.LN2 * 7)); - - // if 1 byte isn't enough for encoding message length, shift the data to the right - pbf.realloc(extraLen); - for (var i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i]; -} - -function writePackedVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]); } -function writePackedSVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]); } -function writePackedFloat(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]); } -function writePackedDouble(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]); } -function writePackedBoolean(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]); } -function writePackedFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]); } -function writePackedSFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]); } -function writePackedFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]); } -function writePackedSFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]); } - -// Buffer code below from https://github.com/feross/buffer, MIT-licensed - -function readUInt32(buf, pos) { - return ((buf[pos]) | - (buf[pos + 1] << 8) | - (buf[pos + 2] << 16)) + - (buf[pos + 3] * 0x1000000); -} - -function writeInt32(buf, val, pos) { - buf[pos] = val; - buf[pos + 1] = (val >>> 8); - buf[pos + 2] = (val >>> 16); - buf[pos + 3] = (val >>> 24); -} - -function readInt32(buf, pos) { - return ((buf[pos]) | - (buf[pos + 1] << 8) | - (buf[pos + 2] << 16)) + - (buf[pos + 3] << 24); -} - -function readUtf8(buf, pos, end) { - var str = ''; - var i = pos; - - while (i < end) { - var b0 = buf[i]; - var c = null; // codepoint - var bytesPerSequence = - b0 > 0xEF ? 4 : - b0 > 0xDF ? 3 : - b0 > 0xBF ? 2 : 1; - - if (i + bytesPerSequence > end) break; - - var b1, b2, b3; - - if (bytesPerSequence === 1) { - if (b0 < 0x80) { - c = b0; - } - } else if (bytesPerSequence === 2) { - b1 = buf[i + 1]; - if ((b1 & 0xC0) === 0x80) { - c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F); - if (c <= 0x7F) { - c = null; - } - } - } else if (bytesPerSequence === 3) { - b1 = buf[i + 1]; - b2 = buf[i + 2]; - if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) { - c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F); - if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) { - c = null; - } - } - } else if (bytesPerSequence === 4) { - b1 = buf[i + 1]; - b2 = buf[i + 2]; - b3 = buf[i + 3]; - if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) { - c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F); - if (c <= 0xFFFF || c >= 0x110000) { - c = null; - } - } - } - - if (c === null) { - c = 0xFFFD; - bytesPerSequence = 1; - - } else if (c > 0xFFFF) { - c -= 0x10000; - str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800); - c = 0xDC00 | c & 0x3FF; - } - - str += String.fromCharCode(c); - i += bytesPerSequence; - } - - return str; -} - -function writeUtf8(buf, str, pos) { - for (var i = 0, c, lead; i < str.length; i++) { - c = str.charCodeAt(i); // code point - - if (c > 0xD7FF && c < 0xE000) { - if (lead) { - if (c < 0xDC00) { - buf[pos++] = 0xEF; - buf[pos++] = 0xBF; - buf[pos++] = 0xBD; - lead = c; - continue; - } else { - c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000; - lead = null; - } - } else { - if (c > 0xDBFF || (i + 1 === str.length)) { - buf[pos++] = 0xEF; - buf[pos++] = 0xBF; - buf[pos++] = 0xBD; - } else { - lead = c; - } - continue; - } - } else if (lead) { - buf[pos++] = 0xEF; - buf[pos++] = 0xBF; - buf[pos++] = 0xBD; - lead = null; - } - - if (c < 0x80) { - buf[pos++] = c; - } else { - if (c < 0x800) { - buf[pos++] = c >> 0x6 | 0xC0; - } else { - if (c < 0x10000) { - buf[pos++] = c >> 0xC | 0xE0; - } else { - buf[pos++] = c >> 0x12 | 0xF0; - buf[pos++] = c >> 0xC & 0x3F | 0x80; - } - buf[pos++] = c >> 0x6 & 0x3F | 0x80; - } - buf[pos++] = c & 0x3F | 0x80; - } - } - return pos; -} - -},{"ieee754":241}],278:[function(require,module,exports){ -exports.pbkdf2 = require('./lib/async') -exports.pbkdf2Sync = require('./lib/sync') - -},{"./lib/async":279,"./lib/sync":282}],279:[function(require,module,exports){ -(function (process,global){ -var checkParameters = require('./precondition') -var defaultEncoding = require('./default-encoding') -var sync = require('./sync') -var Buffer = require('safe-buffer').Buffer - -var ZERO_BUF -var subtle = global.crypto && global.crypto.subtle -var toBrowser = { - 'sha': 'SHA-1', - 'sha-1': 'SHA-1', - 'sha1': 'SHA-1', - 'sha256': 'SHA-256', - 'sha-256': 'SHA-256', - 'sha384': 'SHA-384', - 'sha-384': 'SHA-384', - 'sha-512': 'SHA-512', - 'sha512': 'SHA-512' -} -var checks = [] -function checkNative (algo) { - if (global.process && !global.process.browser) { - return Promise.resolve(false) - } - if (!subtle || !subtle.importKey || !subtle.deriveBits) { - return Promise.resolve(false) - } - if (checks[algo] !== undefined) { - return checks[algo] - } - ZERO_BUF = ZERO_BUF || Buffer.alloc(8) - var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo) - .then(function () { - return true - }).catch(function () { - return false - }) - checks[algo] = prom - return prom -} - -function browserPbkdf2 (password, salt, iterations, length, algo) { - return subtle.importKey( - 'raw', password, {name: 'PBKDF2'}, false, ['deriveBits'] - ).then(function (key) { - return subtle.deriveBits({ - name: 'PBKDF2', - salt: salt, - iterations: iterations, - hash: { - name: algo - } - }, key, length << 3) - }).then(function (res) { - return Buffer.from(res) - }) -} - -function resolvePromise (promise, callback) { - promise.then(function (out) { - process.nextTick(function () { - callback(null, out) - }) - }, function (e) { - process.nextTick(function () { - callback(e) - }) - }) -} -module.exports = function (password, salt, iterations, keylen, digest, callback) { - if (typeof digest === 'function') { - callback = digest - digest = undefined - } - - digest = digest || 'sha1' - var algo = toBrowser[digest.toLowerCase()] - - if (!algo || typeof global.Promise !== 'function') { - return process.nextTick(function () { - var out - try { - out = sync(password, salt, iterations, keylen, digest) - } catch (e) { - return callback(e) - } - callback(null, out) - }) - } - - checkParameters(password, salt, iterations, keylen) - if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2') - if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding) - if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding) - - resolvePromise(checkNative(algo).then(function (resp) { - if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo) - - return sync(password, salt, iterations, keylen, digest) - }), callback) -} - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./default-encoding":280,"./precondition":281,"./sync":282,"_process":284,"safe-buffer":318}],280:[function(require,module,exports){ -(function (process){ -var defaultEncoding -/* istanbul ignore next */ -if (process.browser) { - defaultEncoding = 'utf-8' -} else { - var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10) - - defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary' -} -module.exports = defaultEncoding - -}).call(this,require('_process')) -},{"_process":284}],281:[function(require,module,exports){ -(function (Buffer){ -var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs - -function checkBuffer (buf, name) { - if (typeof buf !== 'string' && !Buffer.isBuffer(buf)) { - throw new TypeError(name + ' must be a buffer or string') - } -} - -module.exports = function (password, salt, iterations, keylen) { - checkBuffer(password, 'Password') - checkBuffer(salt, 'Salt') - - if (typeof iterations !== 'number') { - throw new TypeError('Iterations not a number') - } - - if (iterations < 0) { - throw new TypeError('Bad iterations') - } - - if (typeof keylen !== 'number') { - throw new TypeError('Key length not a number') - } - - if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */ - throw new TypeError('Bad key length') - } -} - -}).call(this,{"isBuffer":require("../../is-buffer/index.js")}) -},{"../../is-buffer/index.js":263}],282:[function(require,module,exports){ -var md5 = require('create-hash/md5') -var RIPEMD160 = require('ripemd160') -var sha = require('sha.js') - -var checkParameters = require('./precondition') -var defaultEncoding = require('./default-encoding') -var Buffer = require('safe-buffer').Buffer -var ZEROS = Buffer.alloc(128) -var sizes = { - md5: 16, - sha1: 20, - sha224: 28, - sha256: 32, - sha384: 48, - sha512: 64, - rmd160: 20, - ripemd160: 20 -} - -function Hmac (alg, key, saltLen) { - var hash = getDigest(alg) - var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64 - - if (key.length > blocksize) { - key = hash(key) - } else if (key.length < blocksize) { - key = Buffer.concat([key, ZEROS], blocksize) - } - - var ipad = Buffer.allocUnsafe(blocksize + sizes[alg]) - var opad = Buffer.allocUnsafe(blocksize + sizes[alg]) - for (var i = 0; i < blocksize; i++) { - ipad[i] = key[i] ^ 0x36 - opad[i] = key[i] ^ 0x5C - } - - var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4) - ipad.copy(ipad1, 0, 0, blocksize) - this.ipad1 = ipad1 - this.ipad2 = ipad - this.opad = opad - this.alg = alg - this.blocksize = blocksize - this.hash = hash - this.size = sizes[alg] -} - -Hmac.prototype.run = function (data, ipad) { - data.copy(ipad, this.blocksize) - var h = this.hash(ipad) - h.copy(this.opad, this.blocksize) - return this.hash(this.opad) -} - -function getDigest (alg) { - function shaFunc (data) { - return sha(alg).update(data).digest() - } - function rmd160Func (data) { - return new RIPEMD160().update(data).digest() - } - - if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func - if (alg === 'md5') return md5 - return shaFunc -} - -function pbkdf2 (password, salt, iterations, keylen, digest) { - checkParameters(password, salt, iterations, keylen) - - if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding) - if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding) - - digest = digest || 'sha1' - - var hmac = new Hmac(digest, password, salt.length) - - var DK = Buffer.allocUnsafe(keylen) - var block1 = Buffer.allocUnsafe(salt.length + 4) - salt.copy(block1, 0, 0, salt.length) - - var destPos = 0 - var hLen = sizes[digest] - var l = Math.ceil(keylen / hLen) - - for (var i = 1; i <= l; i++) { - block1.writeUInt32BE(i, salt.length) - - var T = hmac.run(block1, hmac.ipad1) - var U = T - - for (var j = 1; j < iterations; j++) { - U = hmac.run(U, hmac.ipad2) - for (var k = 0; k < hLen; k++) T[k] ^= U[k] - } - - T.copy(DK, destPos) - destPos += hLen - } - - return DK -} - -module.exports = pbkdf2 - -},{"./default-encoding":280,"./precondition":281,"create-hash/md5":189,"ripemd160":317,"safe-buffer":318,"sha.js":320}],283:[function(require,module,exports){ -(function (process){ -'use strict'; - -if (typeof process === 'undefined' || - !process.version || - process.version.indexOf('v0.') === 0 || - process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { - module.exports = { nextTick: nextTick }; -} else { - module.exports = process -} - -function nextTick(fn, arg1, arg2, arg3) { - if (typeof fn !== 'function') { - throw new TypeError('"callback" argument must be a function'); - } - var len = arguments.length; - var args, i; - switch (len) { - case 0: - case 1: - return process.nextTick(fn); - case 2: - return process.nextTick(function afterTickOne() { - fn.call(null, arg1); - }); - case 3: - return process.nextTick(function afterTickTwo() { - fn.call(null, arg1, arg2); - }); - case 4: - return process.nextTick(function afterTickThree() { - fn.call(null, arg1, arg2, arg3); - }); - default: - args = new Array(len - 1); - i = 0; - while (i < args.length) { - args[i++] = arguments[i]; - } - return process.nextTick(function afterTick() { - fn.apply(null, args); - }); - } -} - - -}).call(this,require('_process')) -},{"_process":284}],284:[function(require,module,exports){ -// shim for using process in browser -var process = module.exports = {}; - -// cached from whatever global is present so that test runners that stub it -// don't break things. But we need to wrap it in a try catch in case it is -// wrapped in strict mode code which doesn't define any globals. It's inside a -// function because try/catches deoptimize in certain engines. - -var cachedSetTimeout; -var cachedClearTimeout; - -function defaultSetTimout() { - throw new Error('setTimeout has not been defined'); -} -function defaultClearTimeout () { - throw new Error('clearTimeout has not been defined'); -} -(function () { - try { - if (typeof setTimeout === 'function') { - cachedSetTimeout = setTimeout; - } else { - cachedSetTimeout = defaultSetTimout; - } - } catch (e) { - cachedSetTimeout = defaultSetTimout; - } - try { - if (typeof clearTimeout === 'function') { - cachedClearTimeout = clearTimeout; - } else { - cachedClearTimeout = defaultClearTimeout; - } - } catch (e) { - cachedClearTimeout = defaultClearTimeout; - } -} ()) -function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } - // if setTimeout wasn't available but was latter defined - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // 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 - return cachedSetTimeout.call(this, fun, 0); - } - } - - -} -function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - // if clearTimeout wasn't available but was latter defined - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // 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. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } - - - -} -var queue = []; -var draining = false; -var currentQueue; -var queueIndex = -1; - -function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; - } - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } -} - -function drainQueue() { - if (draining) { - return; - } - var timeout = runTimeout(cleanUpNextTick); - draining = true; - - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - runClearTimeout(timeout); -} - -process.nextTick = function (fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } -}; - -// v8 likes predictible objects -function Item(fun, array) { - this.fun = fun; - this.array = array; -} -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; -process.version = ''; // empty string to avoid regexp issues -process.versions = {}; - -function noop() {} - -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; -process.prependListener = noop; -process.prependOnceListener = noop; - -process.listeners = function (name) { return [] } - -process.binding = function (name) { - throw new Error('process.binding is not supported'); -}; - -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; -process.umask = function() { return 0; }; - -},{}],285:[function(require,module,exports){ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.proj4 = factory()); -}(this, (function () { 'use strict'; - - var globals = function(defs) { - defs('EPSG:4326', "+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees"); - defs('EPSG:4269', "+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees"); - defs('EPSG:3857', "+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs"); - - defs.WGS84 = defs['EPSG:4326']; - defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857 - defs.GOOGLE = defs['EPSG:3857']; - defs['EPSG:900913'] = defs['EPSG:3857']; - defs['EPSG:102113'] = defs['EPSG:3857']; - }; - - var PJD_3PARAM = 1; - var PJD_7PARAM = 2; - var PJD_WGS84 = 4; // WGS84 or equivalent - var PJD_NODATUM = 5; // WGS84 or equivalent - var SEC_TO_RAD = 4.84813681109535993589914102357e-6; - var HALF_PI = Math.PI/2; - // ellipoid pj_set_ell.c - var SIXTH = 0.1666666666666666667; - /* 1/6 */ - var RA4 = 0.04722222222222222222; - /* 17/360 */ - var RA6 = 0.02215608465608465608; - var EPSLN = (typeof Number.EPSILON === 'undefined') ? 1.0e-10 : Number.EPSILON; - var D2R = 0.01745329251994329577; - var R2D = 57.29577951308232088; - var FORTPI = Math.PI/4; - var TWO_PI = Math.PI * 2; - // SPI is slightly greater than Math.PI, so values that exceed the -180..180 - // degree range by a tiny amount don't get wrapped. This prevents points that - // have drifted from their original location along the 180th meridian (due to - // floating point error) from changing their sign. - var SPI = 3.14159265359; - - var exports$1 = {}; - exports$1.greenwich = 0.0; //"0dE", - exports$1.lisbon = -9.131906111111; //"9d07'54.862\"W", - exports$1.paris = 2.337229166667; //"2d20'14.025\"E", - exports$1.bogota = -74.080916666667; //"74d04'51.3\"W", - exports$1.madrid = -3.687938888889; //"3d41'16.58\"W", - exports$1.rome = 12.452333333333; //"12d27'8.4\"E", - exports$1.bern = 7.439583333333; //"7d26'22.5\"E", - exports$1.jakarta = 106.807719444444; //"106d48'27.79\"E", - exports$1.ferro = -17.666666666667; //"17d40'W", - exports$1.brussels = 4.367975; //"4d22'4.71\"E", - exports$1.stockholm = 18.058277777778; //"18d3'29.8\"E", - exports$1.athens = 23.7163375; //"23d42'58.815\"E", - exports$1.oslo = 10.722916666667; //"10d43'22.5\"E" - - var units = { - ft: {to_meter: 0.3048}, - 'us-ft': {to_meter: 1200 / 3937} - }; - - var ignoredChar = /[\s_\-\/\(\)]/g; - function match(obj, key) { - if (obj[key]) { - return obj[key]; - } - var keys = Object.keys(obj); - var lkey = key.toLowerCase().replace(ignoredChar, ''); - var i = -1; - var testkey, processedKey; - while (++i < keys.length) { - testkey = keys[i]; - processedKey = testkey.toLowerCase().replace(ignoredChar, ''); - if (processedKey === lkey) { - return obj[testkey]; - } - } - } - - var parseProj = function(defData) { - var self = {}; - var paramObj = defData.split('+').map(function(v) { - return v.trim(); - }).filter(function(a) { - return a; - }).reduce(function(p, a) { - var split = a.split('='); - split.push(true); - p[split[0].toLowerCase()] = split[1]; - return p; - }, {}); - var paramName, paramVal, paramOutname; - var params = { - proj: 'projName', - datum: 'datumCode', - rf: function(v) { - self.rf = parseFloat(v); - }, - lat_0: function(v) { - self.lat0 = v * D2R; - }, - lat_1: function(v) { - self.lat1 = v * D2R; - }, - lat_2: function(v) { - self.lat2 = v * D2R; - }, - lat_ts: function(v) { - self.lat_ts = v * D2R; - }, - lon_0: function(v) { - self.long0 = v * D2R; - }, - lon_1: function(v) { - self.long1 = v * D2R; - }, - lon_2: function(v) { - self.long2 = v * D2R; - }, - alpha: function(v) { - self.alpha = parseFloat(v) * D2R; - }, - lonc: function(v) { - self.longc = v * D2R; - }, - x_0: function(v) { - self.x0 = parseFloat(v); - }, - y_0: function(v) { - self.y0 = parseFloat(v); - }, - k_0: function(v) { - self.k0 = parseFloat(v); - }, - k: function(v) { - self.k0 = parseFloat(v); - }, - a: function(v) { - self.a = parseFloat(v); - }, - b: function(v) { - self.b = parseFloat(v); - }, - r_a: function() { - self.R_A = true; - }, - zone: function(v) { - self.zone = parseInt(v, 10); - }, - south: function() { - self.utmSouth = true; - }, - towgs84: function(v) { - self.datum_params = v.split(",").map(function(a) { - return parseFloat(a); - }); - }, - to_meter: function(v) { - self.to_meter = parseFloat(v); - }, - units: function(v) { - self.units = v; - var unit = match(units, v); - if (unit) { - self.to_meter = unit.to_meter; - } - }, - from_greenwich: function(v) { - self.from_greenwich = v * D2R; - }, - pm: function(v) { - var pm = match(exports$1, v); - self.from_greenwich = (pm ? pm : parseFloat(v)) * D2R; - }, - nadgrids: function(v) { - if (v === '@null') { - self.datumCode = 'none'; - } - else { - self.nadgrids = v; - } - }, - axis: function(v) { - var legalAxis = "ewnsud"; - if (v.length === 3 && legalAxis.indexOf(v.substr(0, 1)) !== -1 && legalAxis.indexOf(v.substr(1, 1)) !== -1 && legalAxis.indexOf(v.substr(2, 1)) !== -1) { - self.axis = v; - } - } - }; - for (paramName in paramObj) { - paramVal = paramObj[paramName]; - if (paramName in params) { - paramOutname = params[paramName]; - if (typeof paramOutname === 'function') { - paramOutname(paramVal); - } - else { - self[paramOutname] = paramVal; - } - } - else { - self[paramName] = paramVal; - } - } - if(typeof self.datumCode === 'string' && self.datumCode !== "WGS84"){ - self.datumCode = self.datumCode.toLowerCase(); - } - return self; - }; - - var NEUTRAL = 1; - var KEYWORD = 2; - var NUMBER = 3; - var QUOTED = 4; - var AFTERQUOTE = 5; - var ENDED = -1; - var whitespace = /\s/; - var latin = /[A-Za-z]/; - var keyword = /[A-Za-z84]/; - var endThings = /[,\]]/; - var digets = /[\d\.E\-\+]/; - // const ignoredChar = /[\s_\-\/\(\)]/g; - function Parser(text) { - if (typeof text !== 'string') { - throw new Error('not a string'); - } - this.text = text.trim(); - this.level = 0; - this.place = 0; - this.root = null; - this.stack = []; - this.currentObject = null; - this.state = NEUTRAL; - } - Parser.prototype.readCharicter = function() { - var char = this.text[this.place++]; - if (this.state !== QUOTED) { - while (whitespace.test(char)) { - if (this.place >= this.text.length) { - return; - } - char = this.text[this.place++]; - } - } - switch (this.state) { - case NEUTRAL: - return this.neutral(char); - case KEYWORD: - return this.keyword(char) - case QUOTED: - return this.quoted(char); - case AFTERQUOTE: - return this.afterquote(char); - case NUMBER: - return this.number(char); - case ENDED: - return; - } - }; - Parser.prototype.afterquote = function(char) { - if (char === '"') { - this.word += '"'; - this.state = QUOTED; - return; - } - if (endThings.test(char)) { - this.word = this.word.trim(); - this.afterItem(char); - return; - } - throw new Error('havn\'t handled "' +char + '" in afterquote yet, index ' + this.place); - }; - Parser.prototype.afterItem = function(char) { - if (char === ',') { - if (this.word !== null) { - this.currentObject.push(this.word); - } - this.word = null; - this.state = NEUTRAL; - return; - } - if (char === ']') { - this.level--; - if (this.word !== null) { - this.currentObject.push(this.word); - this.word = null; - } - this.state = NEUTRAL; - this.currentObject = this.stack.pop(); - if (!this.currentObject) { - this.state = ENDED; - } - - return; - } - }; - Parser.prototype.number = function(char) { - if (digets.test(char)) { - this.word += char; - return; - } - if (endThings.test(char)) { - this.word = parseFloat(this.word); - this.afterItem(char); - return; - } - throw new Error('havn\'t handled "' +char + '" in number yet, index ' + this.place); - }; - Parser.prototype.quoted = function(char) { - if (char === '"') { - this.state = AFTERQUOTE; - return; - } - this.word += char; - return; - }; - Parser.prototype.keyword = function(char) { - if (keyword.test(char)) { - this.word += char; - return; - } - if (char === '[') { - var newObjects = []; - newObjects.push(this.word); - this.level++; - if (this.root === null) { - this.root = newObjects; - } else { - this.currentObject.push(newObjects); - } - this.stack.push(this.currentObject); - this.currentObject = newObjects; - this.state = NEUTRAL; - return; - } - if (endThings.test(char)) { - this.afterItem(char); - return; - } - throw new Error('havn\'t handled "' +char + '" in keyword yet, index ' + this.place); - }; - Parser.prototype.neutral = function(char) { - if (latin.test(char)) { - this.word = char; - this.state = KEYWORD; - return; - } - if (char === '"') { - this.word = ''; - this.state = QUOTED; - return; - } - if (digets.test(char)) { - this.word = char; - this.state = NUMBER; - return; - } - if (endThings.test(char)) { - this.afterItem(char); - return; - } - throw new Error('havn\'t handled "' +char + '" in neutral yet, index ' + this.place); - }; - Parser.prototype.output = function() { - while (this.place < this.text.length) { - this.readCharicter(); - } - if (this.state === ENDED) { - return this.root; - } - throw new Error('unable to parse string "' +this.text + '". State is ' + this.state); - }; - - function parseString(txt) { - var parser = new Parser(txt); - return parser.output(); - } - - function mapit(obj, key, value) { - if (Array.isArray(key)) { - value.unshift(key); - key = null; - } - var thing = key ? {} : obj; - - var out = value.reduce(function(newObj, item) { - sExpr(item, newObj); - return newObj - }, thing); - if (key) { - obj[key] = out; - } - } - - function sExpr(v, obj) { - if (!Array.isArray(v)) { - obj[v] = true; - return; - } - var key = v.shift(); - if (key === 'PARAMETER') { - key = v.shift(); - } - if (v.length === 1) { - if (Array.isArray(v[0])) { - obj[key] = {}; - sExpr(v[0], obj[key]); - return; - } - obj[key] = v[0]; - return; - } - if (!v.length) { - obj[key] = true; - return; - } - if (key === 'TOWGS84') { - obj[key] = v; - return; - } - if (!Array.isArray(key)) { - obj[key] = {}; - } - - var i; - switch (key) { - case 'UNIT': - case 'PRIMEM': - case 'VERT_DATUM': - obj[key] = { - name: v[0].toLowerCase(), - convert: v[1] - }; - if (v.length === 3) { - sExpr(v[2], obj[key]); - } - return; - case 'SPHEROID': - case 'ELLIPSOID': - obj[key] = { - name: v[0], - a: v[1], - rf: v[2] - }; - if (v.length === 4) { - sExpr(v[3], obj[key]); - } - return; - case 'PROJECTEDCRS': - case 'PROJCRS': - case 'GEOGCS': - case 'GEOCCS': - case 'PROJCS': - case 'LOCAL_CS': - case 'GEODCRS': - case 'GEODETICCRS': - case 'GEODETICDATUM': - case 'EDATUM': - case 'ENGINEERINGDATUM': - case 'VERT_CS': - case 'VERTCRS': - case 'VERTICALCRS': - case 'COMPD_CS': - case 'COMPOUNDCRS': - case 'ENGINEERINGCRS': - case 'ENGCRS': - case 'FITTED_CS': - case 'LOCAL_DATUM': - case 'DATUM': - v[0] = ['name', v[0]]; - mapit(obj, key, v); - return; - default: - i = -1; - while (++i < v.length) { - if (!Array.isArray(v[i])) { - return sExpr(v, obj[key]); - } - } - return mapit(obj, key, v); - } - } - - var D2R$1 = 0.01745329251994329577; - function rename(obj, params) { - var outName = params[0]; - var inName = params[1]; - if (!(outName in obj) && (inName in obj)) { - obj[outName] = obj[inName]; - if (params.length === 3) { - obj[outName] = params[2](obj[outName]); - } - } - } - - function d2r(input) { - return input * D2R$1; - } - - function cleanWKT(wkt) { - if (wkt.type === 'GEOGCS') { - wkt.projName = 'longlat'; - } else if (wkt.type === 'LOCAL_CS') { - wkt.projName = 'identity'; - wkt.local = true; - } else { - if (typeof wkt.PROJECTION === 'object') { - wkt.projName = Object.keys(wkt.PROJECTION)[0]; - } else { - wkt.projName = wkt.PROJECTION; - } - } - if (wkt.UNIT) { - wkt.units = wkt.UNIT.name.toLowerCase(); - if (wkt.units === 'metre') { - wkt.units = 'meter'; - } - if (wkt.UNIT.convert) { - if (wkt.type === 'GEOGCS') { - if (wkt.DATUM && wkt.DATUM.SPHEROID) { - wkt.to_meter = wkt.UNIT.convert*wkt.DATUM.SPHEROID.a; - } - } else { - wkt.to_meter = wkt.UNIT.convert, 10; - } - } - } - var geogcs = wkt.GEOGCS; - if (wkt.type === 'GEOGCS') { - geogcs = wkt; - } - if (geogcs) { - //if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){ - // wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R; - //} - if (geogcs.DATUM) { - wkt.datumCode = geogcs.DATUM.name.toLowerCase(); - } else { - wkt.datumCode = geogcs.name.toLowerCase(); - } - if (wkt.datumCode.slice(0, 2) === 'd_') { - wkt.datumCode = wkt.datumCode.slice(2); - } - if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') { - wkt.datumCode = 'nzgd49'; - } - if (wkt.datumCode === 'wgs_1984') { - if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') { - wkt.sphere = true; - } - wkt.datumCode = 'wgs84'; - } - if (wkt.datumCode.slice(-6) === '_ferro') { - wkt.datumCode = wkt.datumCode.slice(0, - 6); - } - if (wkt.datumCode.slice(-8) === '_jakarta') { - wkt.datumCode = wkt.datumCode.slice(0, - 8); - } - if (~wkt.datumCode.indexOf('belge')) { - wkt.datumCode = 'rnb72'; - } - if (geogcs.DATUM && geogcs.DATUM.SPHEROID) { - wkt.ellps = geogcs.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\_18/, 'clrk'); - if (wkt.ellps.toLowerCase().slice(0, 13) === 'international') { - wkt.ellps = 'intl'; - } - - wkt.a = geogcs.DATUM.SPHEROID.a; - wkt.rf = parseFloat(geogcs.DATUM.SPHEROID.rf, 10); - } - if (~wkt.datumCode.indexOf('osgb_1936')) { - wkt.datumCode = 'osgb36'; - } - } - if (wkt.b && !isFinite(wkt.b)) { - wkt.b = wkt.a; - } - - function toMeter(input) { - var ratio = wkt.to_meter || 1; - return input * ratio; - } - var renamer = function(a) { - return rename(wkt, a); - }; - var list = [ - ['standard_parallel_1', 'Standard_Parallel_1'], - ['standard_parallel_2', 'Standard_Parallel_2'], - ['false_easting', 'False_Easting'], - ['false_northing', 'False_Northing'], - ['central_meridian', 'Central_Meridian'], - ['latitude_of_origin', 'Latitude_Of_Origin'], - ['latitude_of_origin', 'Central_Parallel'], - ['scale_factor', 'Scale_Factor'], - ['k0', 'scale_factor'], - ['latitude_of_center', 'Latitude_of_center'], - ['lat0', 'latitude_of_center', d2r], - ['longitude_of_center', 'Longitude_Of_Center'], - ['longc', 'longitude_of_center', d2r], - ['x0', 'false_easting', toMeter], - ['y0', 'false_northing', toMeter], - ['long0', 'central_meridian', d2r], - ['lat0', 'latitude_of_origin', d2r], - ['lat0', 'standard_parallel_1', d2r], - ['lat1', 'standard_parallel_1', d2r], - ['lat2', 'standard_parallel_2', d2r], - ['alpha', 'azimuth', d2r], - ['srsCode', 'name'] - ]; - list.forEach(renamer); - if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === 'Lambert_Azimuthal_Equal_Area')) { - wkt.long0 = wkt.longc; - } - if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) { - wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90); - wkt.lat_ts = wkt.lat1; - } - } - var wkt = function(wkt) { - var lisp = parseString(wkt); - var type = lisp.shift(); - var name = lisp.shift(); - lisp.unshift(['name', name]); - lisp.unshift(['type', type]); - var obj = {}; - sExpr(lisp, obj); - cleanWKT(obj); - return obj; - }; - - function defs(name) { - /*global console*/ - var that = this; - if (arguments.length === 2) { - var def = arguments[1]; - if (typeof def === 'string') { - if (def.charAt(0) === '+') { - defs[name] = parseProj(arguments[1]); - } - else { - defs[name] = wkt(arguments[1]); - } - } else { - defs[name] = def; - } - } - else if (arguments.length === 1) { - if (Array.isArray(name)) { - return name.map(function(v) { - if (Array.isArray(v)) { - defs.apply(that, v); - } - else { - defs(v); - } - }); - } - else if (typeof name === 'string') { - if (name in defs) { - return defs[name]; - } - } - else if ('EPSG' in name) { - defs['EPSG:' + name.EPSG] = name; - } - else if ('ESRI' in name) { - defs['ESRI:' + name.ESRI] = name; - } - else if ('IAU2000' in name) { - defs['IAU2000:' + name.IAU2000] = name; - } - else { - console.log(name); - } - return; - } - - - } - globals(defs); - - function testObj(code){ - return typeof code === 'string'; - } - function testDef(code){ - return code in defs; - } - var codeWords = ['PROJECTEDCRS', 'PROJCRS', 'GEOGCS','GEOCCS','PROJCS','LOCAL_CS', 'GEODCRS', 'GEODETICCRS', 'GEODETICDATUM', 'ENGCRS', 'ENGINEERINGCRS']; - function testWKT(code){ - return codeWords.some(function (word) { - return code.indexOf(word) > -1; - }); - } - function testProj(code){ - return code[0] === '+'; - } - function parse(code){ - if (testObj(code)) { - //check to see if this is a WKT string - if (testDef(code)) { - return defs[code]; - } - if (testWKT(code)) { - return wkt(code); - } - if (testProj(code)) { - return parseProj(code); - } - }else{ - return code; - } - } - - var extend = function(destination, source) { - destination = destination || {}; - var value, property; - if (!source) { - return destination; - } - for (property in source) { - value = source[property]; - if (value !== undefined) { - destination[property] = value; - } - } - return destination; - }; - - var msfnz = function(eccent, sinphi, cosphi) { - var con = eccent * sinphi; - return cosphi / (Math.sqrt(1 - con * con)); - }; - - var sign = function(x) { - return x<0 ? -1 : 1; - }; - - var adjust_lon = function(x) { - return (Math.abs(x) <= SPI) ? x : (x - (sign(x) * TWO_PI)); - }; - - var tsfnz = function(eccent, phi, sinphi) { - var con = eccent * sinphi; - var com = 0.5 * eccent; - con = Math.pow(((1 - con) / (1 + con)), com); - return (Math.tan(0.5 * (HALF_PI - phi)) / con); - }; - - var phi2z = function(eccent, ts) { - var eccnth = 0.5 * eccent; - var con, dphi; - var phi = HALF_PI - 2 * Math.atan(ts); - for (var i = 0; i <= 15; i++) { - con = eccent * Math.sin(phi); - dphi = HALF_PI - 2 * Math.atan(ts * (Math.pow(((1 - con) / (1 + con)), eccnth))) - phi; - phi += dphi; - if (Math.abs(dphi) <= 0.0000000001) { - return phi; - } - } - //console.log("phi2z has NoConvergence"); - return -9999; - }; - - function init() { - var con = this.b / this.a; - this.es = 1 - con * con; - if(!('x0' in this)){ - this.x0 = 0; - } - if(!('y0' in this)){ - this.y0 = 0; - } - this.e = Math.sqrt(this.es); - if (this.lat_ts) { - if (this.sphere) { - this.k0 = Math.cos(this.lat_ts); - } - else { - this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)); - } - } - else { - if (!this.k0) { - if (this.k) { - this.k0 = this.k; - } - else { - this.k0 = 1; - } - } - } - } - - /* Mercator forward equations--mapping lat,long to x,y - --------------------------------------------------*/ - - function forward(p) { - var lon = p.x; - var lat = p.y; - // convert to radians - if (lat * R2D > 90 && lat * R2D < -90 && lon * R2D > 180 && lon * R2D < -180) { - return null; - } - - var x, y; - if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) { - return null; - } - else { - if (this.sphere) { - x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0); - y = this.y0 + this.a * this.k0 * Math.log(Math.tan(FORTPI + 0.5 * lat)); - } - else { - var sinphi = Math.sin(lat); - var ts = tsfnz(this.e, lat, sinphi); - x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0); - y = this.y0 - this.a * this.k0 * Math.log(ts); - } - p.x = x; - p.y = y; - return p; - } - } - - /* Mercator inverse equations--mapping x,y to lat/long - --------------------------------------------------*/ - function inverse(p) { - - var x = p.x - this.x0; - var y = p.y - this.y0; - var lon, lat; - - if (this.sphere) { - lat = HALF_PI - 2 * Math.atan(Math.exp(-y / (this.a * this.k0))); - } - else { - var ts = Math.exp(-y / (this.a * this.k0)); - lat = phi2z(this.e, ts); - if (lat === -9999) { - return null; - } - } - lon = adjust_lon(this.long0 + x / (this.a * this.k0)); - - p.x = lon; - p.y = lat; - return p; - } - - var names$1 = ["Mercator", "Popular Visualisation Pseudo Mercator", "Mercator_1SP", "Mercator_Auxiliary_Sphere", "merc"]; - var merc = { - init: init, - forward: forward, - inverse: inverse, - names: names$1 - }; - - function init$1() { - //no-op for longlat - } - - function identity(pt) { - return pt; - } - var names$2 = ["longlat", "identity"]; - var longlat = { - init: init$1, - forward: identity, - inverse: identity, - names: names$2 - }; - - var projs = [merc, longlat]; - var names$$1 = {}; - var projStore = []; - - function add(proj, i) { - var len = projStore.length; - if (!proj.names) { - console.log(i); - return true; - } - projStore[len] = proj; - proj.names.forEach(function(n) { - names$$1[n.toLowerCase()] = len; - }); - return this; - } - - function get(name) { - if (!name) { - return false; - } - var n = name.toLowerCase(); - if (typeof names$$1[n] !== 'undefined' && projStore[names$$1[n]]) { - return projStore[names$$1[n]]; - } - } - - function start() { - projs.forEach(add); - } - var projections = { - start: start, - add: add, - get: get - }; - - var exports$2 = {}; - exports$2.MERIT = { - a: 6378137.0, - rf: 298.257, - ellipseName: "MERIT 1983" - }; - - exports$2.SGS85 = { - a: 6378136.0, - rf: 298.257, - ellipseName: "Soviet Geodetic System 85" - }; - - exports$2.GRS80 = { - a: 6378137.0, - rf: 298.257222101, - ellipseName: "GRS 1980(IUGG, 1980)" - }; - - exports$2.IAU76 = { - a: 6378140.0, - rf: 298.257, - ellipseName: "IAU 1976" - }; - - exports$2.airy = { - a: 6377563.396, - b: 6356256.910, - ellipseName: "Airy 1830" - }; - - exports$2.APL4 = { - a: 6378137, - rf: 298.25, - ellipseName: "Appl. Physics. 1965" - }; - - exports$2.NWL9D = { - a: 6378145.0, - rf: 298.25, - ellipseName: "Naval Weapons Lab., 1965" - }; - - exports$2.mod_airy = { - a: 6377340.189, - b: 6356034.446, - ellipseName: "Modified Airy" - }; - - exports$2.andrae = { - a: 6377104.43, - rf: 300.0, - ellipseName: "Andrae 1876 (Den., Iclnd.)" - }; - - exports$2.aust_SA = { - a: 6378160.0, - rf: 298.25, - ellipseName: "Australian Natl & S. Amer. 1969" - }; - - exports$2.GRS67 = { - a: 6378160.0, - rf: 298.2471674270, - ellipseName: "GRS 67(IUGG 1967)" - }; - - exports$2.bessel = { - a: 6377397.155, - rf: 299.1528128, - ellipseName: "Bessel 1841" - }; - - exports$2.bess_nam = { - a: 6377483.865, - rf: 299.1528128, - ellipseName: "Bessel 1841 (Namibia)" - }; - - exports$2.clrk66 = { - a: 6378206.4, - b: 6356583.8, - ellipseName: "Clarke 1866" - }; - - exports$2.clrk80 = { - a: 6378249.145, - rf: 293.4663, - ellipseName: "Clarke 1880 mod." - }; - - exports$2.clrk58 = { - a: 6378293.645208759, - rf: 294.2606763692654, - ellipseName: "Clarke 1858" - }; - - exports$2.CPM = { - a: 6375738.7, - rf: 334.29, - ellipseName: "Comm. des Poids et Mesures 1799" - }; - - exports$2.delmbr = { - a: 6376428.0, - rf: 311.5, - ellipseName: "Delambre 1810 (Belgium)" - }; - - exports$2.engelis = { - a: 6378136.05, - rf: 298.2566, - ellipseName: "Engelis 1985" - }; - - exports$2.evrst30 = { - a: 6377276.345, - rf: 300.8017, - ellipseName: "Everest 1830" - }; - - exports$2.evrst48 = { - a: 6377304.063, - rf: 300.8017, - ellipseName: "Everest 1948" - }; - - exports$2.evrst56 = { - a: 6377301.243, - rf: 300.8017, - ellipseName: "Everest 1956" - }; - - exports$2.evrst69 = { - a: 6377295.664, - rf: 300.8017, - ellipseName: "Everest 1969" - }; - - exports$2.evrstSS = { - a: 6377298.556, - rf: 300.8017, - ellipseName: "Everest (Sabah & Sarawak)" - }; - - exports$2.fschr60 = { - a: 6378166.0, - rf: 298.3, - ellipseName: "Fischer (Mercury Datum) 1960" - }; - - exports$2.fschr60m = { - a: 6378155.0, - rf: 298.3, - ellipseName: "Fischer 1960" - }; - - exports$2.fschr68 = { - a: 6378150.0, - rf: 298.3, - ellipseName: "Fischer 1968" - }; - - exports$2.helmert = { - a: 6378200.0, - rf: 298.3, - ellipseName: "Helmert 1906" - }; - - exports$2.hough = { - a: 6378270.0, - rf: 297.0, - ellipseName: "Hough" - }; - - exports$2.intl = { - a: 6378388.0, - rf: 297.0, - ellipseName: "International 1909 (Hayford)" - }; - - exports$2.kaula = { - a: 6378163.0, - rf: 298.24, - ellipseName: "Kaula 1961" - }; - - exports$2.lerch = { - a: 6378139.0, - rf: 298.257, - ellipseName: "Lerch 1979" - }; - - exports$2.mprts = { - a: 6397300.0, - rf: 191.0, - ellipseName: "Maupertius 1738" - }; - - exports$2.new_intl = { - a: 6378157.5, - b: 6356772.2, - ellipseName: "New International 1967" - }; - - exports$2.plessis = { - a: 6376523.0, - rf: 6355863.0, - ellipseName: "Plessis 1817 (France)" - }; - - exports$2.krass = { - a: 6378245.0, - rf: 298.3, - ellipseName: "Krassovsky, 1942" - }; - - exports$2.SEasia = { - a: 6378155.0, - b: 6356773.3205, - ellipseName: "Southeast Asia" - }; - - exports$2.walbeck = { - a: 6376896.0, - b: 6355834.8467, - ellipseName: "Walbeck" - }; - - exports$2.WGS60 = { - a: 6378165.0, - rf: 298.3, - ellipseName: "WGS 60" - }; - - exports$2.WGS66 = { - a: 6378145.0, - rf: 298.25, - ellipseName: "WGS 66" - }; - - exports$2.WGS7 = { - a: 6378135.0, - rf: 298.26, - ellipseName: "WGS 72" - }; - - var WGS84 = exports$2.WGS84 = { - a: 6378137.0, - rf: 298.257223563, - ellipseName: "WGS 84" - }; - - exports$2.sphere = { - a: 6370997.0, - b: 6370997.0, - ellipseName: "Normal Sphere (r=6370997)" - }; - - function eccentricity(a, b, rf, R_A) { - var a2 = a * a; // used in geocentric - var b2 = b * b; // used in geocentric - var es = (a2 - b2) / a2; // e ^ 2 - var e = 0; - if (R_A) { - a *= 1 - es * (SIXTH + es * (RA4 + es * RA6)); - a2 = a * a; - es = 0; - } else { - e = Math.sqrt(es); // eccentricity - } - var ep2 = (a2 - b2) / b2; // used in geocentric - return { - es: es, - e: e, - ep2: ep2 - }; - } - function sphere(a, b, rf, ellps, sphere) { - if (!a) { // do we have an ellipsoid? - var ellipse = match(exports$2, ellps); - if (!ellipse) { - ellipse = WGS84; - } - a = ellipse.a; - b = ellipse.b; - rf = ellipse.rf; - } - - if (rf && !b) { - b = (1.0 - 1.0 / rf) * a; - } - if (rf === 0 || Math.abs(a - b) < EPSLN) { - sphere = true; - b = a; - } - return { - a: a, - b: b, - rf: rf, - sphere: sphere - }; - } - - var exports$3 = {}; - exports$3.wgs84 = { - towgs84: "0,0,0", - ellipse: "WGS84", - datumName: "WGS84" - }; - - exports$3.ch1903 = { - towgs84: "674.374,15.056,405.346", - ellipse: "bessel", - datumName: "swiss" - }; - - exports$3.ggrs87 = { - towgs84: "-199.87,74.79,246.62", - ellipse: "GRS80", - datumName: "Greek_Geodetic_Reference_System_1987" - }; - - exports$3.nad83 = { - towgs84: "0,0,0", - ellipse: "GRS80", - datumName: "North_American_Datum_1983" - }; - - exports$3.nad27 = { - nadgrids: "@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat", - ellipse: "clrk66", - datumName: "North_American_Datum_1927" - }; - - exports$3.potsdam = { - towgs84: "606.0,23.0,413.0", - ellipse: "bessel", - datumName: "Potsdam Rauenberg 1950 DHDN" - }; - - exports$3.carthage = { - towgs84: "-263.0,6.0,431.0", - ellipse: "clark80", - datumName: "Carthage 1934 Tunisia" - }; - - exports$3.hermannskogel = { - towgs84: "653.0,-212.0,449.0", - ellipse: "bessel", - datumName: "Hermannskogel" - }; - - exports$3.ire65 = { - towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15", - ellipse: "mod_airy", - datumName: "Ireland 1965" - }; - - exports$3.rassadiran = { - towgs84: "-133.63,-157.5,-158.62", - ellipse: "intl", - datumName: "Rassadiran" - }; - - exports$3.nzgd49 = { - towgs84: "59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993", - ellipse: "intl", - datumName: "New Zealand Geodetic Datum 1949" - }; - - exports$3.osgb36 = { - towgs84: "446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894", - ellipse: "airy", - datumName: "Airy 1830" - }; - - exports$3.s_jtsk = { - towgs84: "589,76,480", - ellipse: 'bessel', - datumName: 'S-JTSK (Ferro)' - }; - - exports$3.beduaram = { - towgs84: '-106,-87,188', - ellipse: 'clrk80', - datumName: 'Beduaram' - }; - - exports$3.gunung_segara = { - towgs84: '-403,684,41', - ellipse: 'bessel', - datumName: 'Gunung Segara Jakarta' - }; - - exports$3.rnb72 = { - towgs84: "106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1", - ellipse: "intl", - datumName: "Reseau National Belge 1972" - }; - - function datum(datumCode, datum_params, a, b, es, ep2) { - var out = {}; - - if (datumCode === undefined || datumCode === 'none') { - out.datum_type = PJD_NODATUM; - } else { - out.datum_type = PJD_WGS84; - } - - if (datum_params) { - out.datum_params = datum_params.map(parseFloat); - if (out.datum_params[0] !== 0 || out.datum_params[1] !== 0 || out.datum_params[2] !== 0) { - out.datum_type = PJD_3PARAM; - } - if (out.datum_params.length > 3) { - if (out.datum_params[3] !== 0 || out.datum_params[4] !== 0 || out.datum_params[5] !== 0 || out.datum_params[6] !== 0) { - out.datum_type = PJD_7PARAM; - out.datum_params[3] *= SEC_TO_RAD; - out.datum_params[4] *= SEC_TO_RAD; - out.datum_params[5] *= SEC_TO_RAD; - out.datum_params[6] = (out.datum_params[6] / 1000000.0) + 1.0; - } - } - } - - out.a = a; //datum object also uses these values - out.b = b; - out.es = es; - out.ep2 = ep2; - return out; - } - - function Projection$1(srsCode,callback) { - if (!(this instanceof Projection$1)) { - return new Projection$1(srsCode); - } - callback = callback || function(error){ - if(error){ - throw error; - } - }; - var json = parse(srsCode); - if(typeof json !== 'object'){ - callback(srsCode); - return; - } - var ourProj = Projection$1.projections.get(json.projName); - if(!ourProj){ - callback(srsCode); - return; - } - if (json.datumCode && json.datumCode !== 'none') { - var datumDef = match(exports$3, json.datumCode); - if (datumDef) { - json.datum_params = datumDef.towgs84 ? datumDef.towgs84.split(',') : null; - json.ellps = datumDef.ellipse; - json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode; - } - } - json.k0 = json.k0 || 1.0; - json.axis = json.axis || 'enu'; - json.ellps = json.ellps || 'wgs84'; - var sphere_ = sphere(json.a, json.b, json.rf, json.ellps, json.sphere); - var ecc = eccentricity(sphere_.a, sphere_.b, sphere_.rf, json.R_A); - var datumObj = json.datum || datum(json.datumCode, json.datum_params, sphere_.a, sphere_.b, ecc.es, ecc.ep2); - - extend(this, json); // transfer everything over from the projection because we don't know what we'll need - extend(this, ourProj); // transfer all the methods from the projection - - // copy the 4 things over we calulated in deriveConstants.sphere - this.a = sphere_.a; - this.b = sphere_.b; - this.rf = sphere_.rf; - this.sphere = sphere_.sphere; - - // copy the 3 things we calculated in deriveConstants.eccentricity - this.es = ecc.es; - this.e = ecc.e; - this.ep2 = ecc.ep2; - - // add in the datum object - this.datum = datumObj; - - // init the projection - this.init(); - - // legecy callback from back in the day when it went to spatialreference.org - callback(null, this); - - } - Projection$1.projections = projections; - Projection$1.projections.start(); - - function compareDatums(source, dest) { - if (source.datum_type !== dest.datum_type) { - return false; // false, datums are not equal - } else if (source.a !== dest.a || Math.abs(source.es - dest.es) > 0.000000000050) { - // the tolerance for es is to ensure that GRS80 and WGS84 - // are considered identical - return false; - } else if (source.datum_type === PJD_3PARAM) { - return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2]); - } else if (source.datum_type === PJD_7PARAM) { - return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2] && source.datum_params[3] === dest.datum_params[3] && source.datum_params[4] === dest.datum_params[4] && source.datum_params[5] === dest.datum_params[5] && source.datum_params[6] === dest.datum_params[6]); - } else { - return true; // datums are equal - } - } // cs_compare_datums() - - /* - * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates - * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z), - * according to the current ellipsoid parameters. - * - * Latitude : Geodetic latitude in radians (input) - * Longitude : Geodetic longitude in radians (input) - * Height : Geodetic height, in meters (input) - * X : Calculated Geocentric X coordinate, in meters (output) - * Y : Calculated Geocentric Y coordinate, in meters (output) - * Z : Calculated Geocentric Z coordinate, in meters (output) - * - */ - function geodeticToGeocentric(p, es, a) { - var Longitude = p.x; - var Latitude = p.y; - var Height = p.z ? p.z : 0; //Z value not always supplied - - var Rn; /* Earth radius at location */ - var Sin_Lat; /* Math.sin(Latitude) */ - var Sin2_Lat; /* Square of Math.sin(Latitude) */ - var Cos_Lat; /* Math.cos(Latitude) */ - - /* - ** Don't blow up if Latitude is just a little out of the value - ** range as it may just be a rounding issue. Also removed longitude - ** test, it should be wrapped by Math.cos() and Math.sin(). NFW for PROJ.4, Sep/2001. - */ - if (Latitude < -HALF_PI && Latitude > -1.001 * HALF_PI) { - Latitude = -HALF_PI; - } else if (Latitude > HALF_PI && Latitude < 1.001 * HALF_PI) { - Latitude = HALF_PI; - } else if ((Latitude < -HALF_PI) || (Latitude > HALF_PI)) { - /* Latitude out of range */ - //..reportError('geocent:lat out of range:' + Latitude); - return null; - } - - if (Longitude > Math.PI) { - Longitude -= (2 * Math.PI); - } - Sin_Lat = Math.sin(Latitude); - Cos_Lat = Math.cos(Latitude); - Sin2_Lat = Sin_Lat * Sin_Lat; - Rn = a / (Math.sqrt(1.0e0 - es * Sin2_Lat)); - return { - x: (Rn + Height) * Cos_Lat * Math.cos(Longitude), - y: (Rn + Height) * Cos_Lat * Math.sin(Longitude), - z: ((Rn * (1 - es)) + Height) * Sin_Lat - }; - } // cs_geodetic_to_geocentric() - - function geocentricToGeodetic(p, es, a, b) { - /* local defintions and variables */ - /* end-criterium of loop, accuracy of sin(Latitude) */ - var genau = 1e-12; - var genau2 = (genau * genau); - var maxiter = 30; - - var P; /* distance between semi-minor axis and location */ - var RR; /* distance between center and location */ - var CT; /* sin of geocentric latitude */ - var ST; /* cos of geocentric latitude */ - var RX; - var RK; - var RN; /* Earth radius at location */ - var CPHI0; /* cos of start or old geodetic latitude in iterations */ - var SPHI0; /* sin of start or old geodetic latitude in iterations */ - var CPHI; /* cos of searched geodetic latitude */ - var SPHI; /* sin of searched geodetic latitude */ - var SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */ - var iter; /* # of continous iteration, max. 30 is always enough (s.a.) */ - - var X = p.x; - var Y = p.y; - var Z = p.z ? p.z : 0.0; //Z value not always supplied - var Longitude; - var Latitude; - var Height; - - P = Math.sqrt(X * X + Y * Y); - RR = Math.sqrt(X * X + Y * Y + Z * Z); - - /* special cases for latitude and longitude */ - if (P / a < genau) { - - /* special case, if P=0. (X=0., Y=0.) */ - Longitude = 0.0; - - /* if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis - * of ellipsoid (=center of mass), Latitude becomes PI/2 */ - if (RR / a < genau) { - Latitude = HALF_PI; - Height = -b; - return { - x: p.x, - y: p.y, - z: p.z - }; - } - } else { - /* ellipsoidal (geodetic) longitude - * interval: -PI < Longitude <= +PI */ - Longitude = Math.atan2(Y, X); - } - - /* -------------------------------------------------------------- - * Following iterative algorithm was developped by - * "Institut for Erdmessung", University of Hannover, July 1988. - * Internet: www.ife.uni-hannover.de - * Iterative computation of CPHI,SPHI and Height. - * Iteration of CPHI and SPHI to 10**-12 radian resp. - * 2*10**-7 arcsec. - * -------------------------------------------------------------- - */ - CT = Z / RR; - ST = P / RR; - RX = 1.0 / Math.sqrt(1.0 - es * (2.0 - es) * ST * ST); - CPHI0 = ST * (1.0 - es) * RX; - SPHI0 = CT * RX; - iter = 0; - - /* loop to find sin(Latitude) resp. Latitude - * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */ - do { - iter++; - RN = a / Math.sqrt(1.0 - es * SPHI0 * SPHI0); - - /* ellipsoidal (geodetic) height */ - Height = P * CPHI0 + Z * SPHI0 - RN * (1.0 - es * SPHI0 * SPHI0); - - RK = es * RN / (RN + Height); - RX = 1.0 / Math.sqrt(1.0 - RK * (2.0 - RK) * ST * ST); - CPHI = ST * (1.0 - RK) * RX; - SPHI = CT * RX; - SDPHI = SPHI * CPHI0 - CPHI * SPHI0; - CPHI0 = CPHI; - SPHI0 = SPHI; - } - while (SDPHI * SDPHI > genau2 && iter < maxiter); - - /* ellipsoidal (geodetic) latitude */ - Latitude = Math.atan(SPHI / Math.abs(CPHI)); - return { - x: Longitude, - y: Latitude, - z: Height - }; - } // cs_geocentric_to_geodetic() - - /****************************************************************/ - // pj_geocentic_to_wgs84( p ) - // p = point to transform in geocentric coordinates (x,y,z) - - - /** point object, nothing fancy, just allows values to be - passed back and forth by reference rather than by value. - Other point classes may be used as long as they have - x and y properties, which will get modified in the transform method. - */ - function geocentricToWgs84(p, datum_type, datum_params) { - - if (datum_type === PJD_3PARAM) { - // if( x[io] === HUGE_VAL ) - // continue; - return { - x: p.x + datum_params[0], - y: p.y + datum_params[1], - z: p.z + datum_params[2], - }; - } else if (datum_type === PJD_7PARAM) { - var Dx_BF = datum_params[0]; - var Dy_BF = datum_params[1]; - var Dz_BF = datum_params[2]; - var Rx_BF = datum_params[3]; - var Ry_BF = datum_params[4]; - var Rz_BF = datum_params[5]; - var M_BF = datum_params[6]; - // if( x[io] === HUGE_VAL ) - // continue; - return { - x: M_BF * (p.x - Rz_BF * p.y + Ry_BF * p.z) + Dx_BF, - y: M_BF * (Rz_BF * p.x + p.y - Rx_BF * p.z) + Dy_BF, - z: M_BF * (-Ry_BF * p.x + Rx_BF * p.y + p.z) + Dz_BF - }; - } - } // cs_geocentric_to_wgs84 - - /****************************************************************/ - // pj_geocentic_from_wgs84() - // coordinate system definition, - // point to transform in geocentric coordinates (x,y,z) - function geocentricFromWgs84(p, datum_type, datum_params) { - - if (datum_type === PJD_3PARAM) { - //if( x[io] === HUGE_VAL ) - // continue; - return { - x: p.x - datum_params[0], - y: p.y - datum_params[1], - z: p.z - datum_params[2], - }; - - } else if (datum_type === PJD_7PARAM) { - var Dx_BF = datum_params[0]; - var Dy_BF = datum_params[1]; - var Dz_BF = datum_params[2]; - var Rx_BF = datum_params[3]; - var Ry_BF = datum_params[4]; - var Rz_BF = datum_params[5]; - var M_BF = datum_params[6]; - var x_tmp = (p.x - Dx_BF) / M_BF; - var y_tmp = (p.y - Dy_BF) / M_BF; - var z_tmp = (p.z - Dz_BF) / M_BF; - //if( x[io] === HUGE_VAL ) - // continue; - - return { - x: x_tmp + Rz_BF * y_tmp - Ry_BF * z_tmp, - y: -Rz_BF * x_tmp + y_tmp + Rx_BF * z_tmp, - z: Ry_BF * x_tmp - Rx_BF * y_tmp + z_tmp - }; - } //cs_geocentric_from_wgs84() - } - - function checkParams(type) { - return (type === PJD_3PARAM || type === PJD_7PARAM); - } - - var datum_transform = function(source, dest, point) { - // Short cut if the datums are identical. - if (compareDatums(source, dest)) { - return point; // in this case, zero is sucess, - // whereas cs_compare_datums returns 1 to indicate TRUE - // confusing, should fix this - } - - // Explicitly skip datum transform by setting 'datum=none' as parameter for either source or dest - if (source.datum_type === PJD_NODATUM || dest.datum_type === PJD_NODATUM) { - return point; - } - - // If this datum requires grid shifts, then apply it to geodetic coordinates. - - // Do we need to go through geocentric coordinates? - if (source.es === dest.es && source.a === dest.a && !checkParams(source.datum_type) && !checkParams(dest.datum_type)) { - return point; - } - - // Convert to geocentric coordinates. - point = geodeticToGeocentric(point, source.es, source.a); - // Convert between datums - if (checkParams(source.datum_type)) { - point = geocentricToWgs84(point, source.datum_type, source.datum_params); - } - if (checkParams(dest.datum_type)) { - point = geocentricFromWgs84(point, dest.datum_type, dest.datum_params); - } - return geocentricToGeodetic(point, dest.es, dest.a, dest.b); - - }; - - var adjust_axis = function(crs, denorm, point) { - var xin = point.x, - yin = point.y, - zin = point.z || 0.0; - var v, t, i; - var out = {}; - for (i = 0; i < 3; i++) { - if (denorm && i === 2 && point.z === undefined) { - continue; - } - if (i === 0) { - v = xin; - t = 'x'; - } - else if (i === 1) { - v = yin; - t = 'y'; - } - else { - v = zin; - t = 'z'; - } - switch (crs.axis[i]) { - case 'e': - out[t] = v; - break; - case 'w': - out[t] = -v; - break; - case 'n': - out[t] = v; - break; - case 's': - out[t] = -v; - break; - case 'u': - if (point[t] !== undefined) { - out.z = v; - } - break; - case 'd': - if (point[t] !== undefined) { - out.z = -v; - } - break; - default: - //console.log("ERROR: unknow axis ("+crs.axis[i]+") - check definition of "+crs.projName); - return null; - } - } - return out; - }; - - var toPoint = function (array){ - var out = { - x: array[0], - y: array[1] - }; - if (array.length>2) { - out.z = array[2]; - } - if (array.length>3) { - out.m = array[3]; - } - return out; - }; - - function checkNotWGS(source, dest) { - return ((source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM) && dest.datumCode !== 'WGS84') || ((dest.datum.datum_type === PJD_3PARAM || dest.datum.datum_type === PJD_7PARAM) && source.datumCode !== 'WGS84'); - } - - function transform(source, dest, point) { - var wgs84; - if (Array.isArray(point)) { - point = toPoint(point); - } - - // Workaround for datum shifts towgs84, if either source or destination projection is not wgs84 - if (source.datum && dest.datum && checkNotWGS(source, dest)) { - wgs84 = new Projection$1('WGS84'); - point = transform(source, wgs84, point); - source = wgs84; - } - // DGR, 2010/11/12 - if (source.axis !== 'enu') { - point = adjust_axis(source, false, point); - } - // Transform source points to long/lat, if they aren't already. - if (source.projName === 'longlat') { - point = { - x: point.x * D2R, - y: point.y * D2R - }; - } - else { - if (source.to_meter) { - point = { - x: point.x * source.to_meter, - y: point.y * source.to_meter - }; - } - point = source.inverse(point); // Convert Cartesian to longlat - } - // Adjust for the prime meridian if necessary - if (source.from_greenwich) { - point.x += source.from_greenwich; - } - - // Convert datums if needed, and if possible. - point = datum_transform(source.datum, dest.datum, point); - - // Adjust for the prime meridian if necessary - if (dest.from_greenwich) { - point = { - x: point.x - dest.from_greenwich, - y: point.y - }; - } - - if (dest.projName === 'longlat') { - // convert radians to decimal degrees - point = { - x: point.x * R2D, - y: point.y * R2D - }; - } else { // else project - point = dest.forward(point); - if (dest.to_meter) { - point = { - x: point.x / dest.to_meter, - y: point.y / dest.to_meter - }; - } - } - - // DGR, 2010/11/12 - if (dest.axis !== 'enu') { - return adjust_axis(dest, true, point); - } - - return point; - } - - var wgs84 = Projection$1('WGS84'); - - function transformer(from, to, coords) { - var transformedArray; - if (Array.isArray(coords)) { - transformedArray = transform(from, to, coords); - if (coords.length === 3) { - return [transformedArray.x, transformedArray.y, transformedArray.z]; - } - else { - return [transformedArray.x, transformedArray.y]; - } - } - else { - return transform(from, to, coords); - } - } - - function checkProj(item) { - if (item instanceof Projection$1) { - return item; - } - if (item.oProj) { - return item.oProj; - } - return Projection$1(item); - } - function proj4$1(fromProj, toProj, coord) { - fromProj = checkProj(fromProj); - var single = false; - var obj; - if (typeof toProj === 'undefined') { - toProj = fromProj; - fromProj = wgs84; - single = true; - } - else if (typeof toProj.x !== 'undefined' || Array.isArray(toProj)) { - coord = toProj; - toProj = fromProj; - fromProj = wgs84; - single = true; - } - toProj = checkProj(toProj); - if (coord) { - return transformer(fromProj, toProj, coord); - } - else { - obj = { - forward: function(coords) { - return transformer(fromProj, toProj, coords); - }, - inverse: function(coords) { - return transformer(toProj, fromProj, coords); - } - }; - if (single) { - obj.oProj = toProj; - } - return obj; - } - } - - /** - * UTM zones are grouped, and assigned to one of a group of 6 - * sets. - * - * {int} @private - */ - var NUM_100K_SETS = 6; - - /** - * The column letters (for easting) of the lower left value, per - * set. - * - * {string} @private - */ - var SET_ORIGIN_COLUMN_LETTERS = 'AJSAJS'; - - /** - * The row letters (for northing) of the lower left value, per - * set. - * - * {string} @private - */ - var SET_ORIGIN_ROW_LETTERS = 'AFAFAF'; - - var A = 65; // A - var I = 73; // I - var O = 79; // O - var V = 86; // V - var Z = 90; // Z - var mgrs = { - forward: forward$1, - inverse: inverse$1, - toPoint: toPoint$1 - }; - /** - * Conversion of lat/lon to MGRS. - * - * @param {object} ll Object literal with lat and lon properties on a - * WGS84 ellipsoid. - * @param {int} accuracy Accuracy in digits (5 for 1 m, 4 for 10 m, 3 for - * 100 m, 2 for 1000 m or 1 for 10000 m). Optional, default is 5. - * @return {string} the MGRS string for the given location and accuracy. - */ - function forward$1(ll, accuracy) { - accuracy = accuracy || 5; // default accuracy 1m - return encode(LLtoUTM({ - lat: ll[1], - lon: ll[0] - }), accuracy); - } - - /** - * Conversion of MGRS to lat/lon. - * - * @param {string} mgrs MGRS string. - * @return {array} An array with left (longitude), bottom (latitude), right - * (longitude) and top (latitude) values in WGS84, representing the - * bounding box for the provided MGRS reference. - */ - function inverse$1(mgrs) { - var bbox = UTMtoLL(decode(mgrs.toUpperCase())); - if (bbox.lat && bbox.lon) { - return [bbox.lon, bbox.lat, bbox.lon, bbox.lat]; - } - return [bbox.left, bbox.bottom, bbox.right, bbox.top]; - } - - function toPoint$1(mgrs) { - var bbox = UTMtoLL(decode(mgrs.toUpperCase())); - if (bbox.lat && bbox.lon) { - return [bbox.lon, bbox.lat]; - } - return [(bbox.left + bbox.right) / 2, (bbox.top + bbox.bottom) / 2]; - } - /** - * Conversion from degrees to radians. - * - * @private - * @param {number} deg the angle in degrees. - * @return {number} the angle in radians. - */ - function degToRad(deg) { - return (deg * (Math.PI / 180.0)); - } - - /** - * Conversion from radians to degrees. - * - * @private - * @param {number} rad the angle in radians. - * @return {number} the angle in degrees. - */ - function radToDeg(rad) { - return (180.0 * (rad / Math.PI)); - } - - /** - * Converts a set of Longitude and Latitude co-ordinates to UTM - * using the WGS84 ellipsoid. - * - * @private - * @param {object} ll Object literal with lat and lon properties - * representing the WGS84 coordinate to be converted. - * @return {object} Object literal containing the UTM value with easting, - * northing, zoneNumber and zoneLetter properties, and an optional - * accuracy property in digits. Returns null if the conversion failed. - */ - function LLtoUTM(ll) { - var Lat = ll.lat; - var Long = ll.lon; - var a = 6378137.0; //ellip.radius; - var eccSquared = 0.00669438; //ellip.eccsq; - var k0 = 0.9996; - var LongOrigin; - var eccPrimeSquared; - var N, T, C, A, M; - var LatRad = degToRad(Lat); - var LongRad = degToRad(Long); - var LongOriginRad; - var ZoneNumber; - // (int) - ZoneNumber = Math.floor((Long + 180) / 6) + 1; - - //Make sure the longitude 180.00 is in Zone 60 - if (Long === 180) { - ZoneNumber = 60; - } - - // Special zone for Norway - if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) { - ZoneNumber = 32; - } - - // Special zones for Svalbard - if (Lat >= 72.0 && Lat < 84.0) { - if (Long >= 0.0 && Long < 9.0) { - ZoneNumber = 31; - } - else if (Long >= 9.0 && Long < 21.0) { - ZoneNumber = 33; - } - else if (Long >= 21.0 && Long < 33.0) { - ZoneNumber = 35; - } - else if (Long >= 33.0 && Long < 42.0) { - ZoneNumber = 37; - } - } - - LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin - // in middle of - // zone - LongOriginRad = degToRad(LongOrigin); - - eccPrimeSquared = (eccSquared) / (1 - eccSquared); - - N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad)); - T = Math.tan(LatRad) * Math.tan(LatRad); - C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad); - A = Math.cos(LatRad) * (LongRad - LongOriginRad); - - M = a * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(2 * LatRad) + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared * eccSquared / 3072) * Math.sin(6 * LatRad)); - - var UTMEasting = (k0 * N * (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T + 72 * C - 58 * eccPrimeSquared) * A * A * A * A * A / 120.0) + 500000.0); - - var UTMNorthing = (k0 * (M + N * Math.tan(LatRad) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared) * A * A * A * A * A * A / 720.0))); - if (Lat < 0.0) { - UTMNorthing += 10000000.0; //10000000 meter offset for - // southern hemisphere - } - - return { - northing: Math.round(UTMNorthing), - easting: Math.round(UTMEasting), - zoneNumber: ZoneNumber, - zoneLetter: getLetterDesignator(Lat) - }; - } - - /** - * Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience - * class where the Zone can be specified as a single string eg."60N" which - * is then broken down into the ZoneNumber and ZoneLetter. - * - * @private - * @param {object} utm An object literal with northing, easting, zoneNumber - * and zoneLetter properties. If an optional accuracy property is - * provided (in meters), a bounding box will be returned instead of - * latitude and longitude. - * @return {object} An object literal containing either lat and lon values - * (if no accuracy was provided), or top, right, bottom and left values - * for the bounding box calculated according to the provided accuracy. - * Returns null if the conversion failed. - */ - function UTMtoLL(utm) { - - var UTMNorthing = utm.northing; - var UTMEasting = utm.easting; - var zoneLetter = utm.zoneLetter; - var zoneNumber = utm.zoneNumber; - // check the ZoneNummber is valid - if (zoneNumber < 0 || zoneNumber > 60) { - return null; - } - - var k0 = 0.9996; - var a = 6378137.0; //ellip.radius; - var eccSquared = 0.00669438; //ellip.eccsq; - var eccPrimeSquared; - var e1 = (1 - Math.sqrt(1 - eccSquared)) / (1 + Math.sqrt(1 - eccSquared)); - var N1, T1, C1, R1, D, M; - var LongOrigin; - var mu, phi1Rad; - - // remove 500,000 meter offset for longitude - var x = UTMEasting - 500000.0; - var y = UTMNorthing; - - // We must know somehow if we are in the Northern or Southern - // hemisphere, this is the only time we use the letter So even - // if the Zone letter isn't exactly correct it should indicate - // the hemisphere correctly - if (zoneLetter < 'N') { - y -= 10000000.0; // remove 10,000,000 meter offset used - // for southern hemisphere - } - - // There are 60 zones with zone 1 being at West -180 to -174 - LongOrigin = (zoneNumber - 1) * 6 - 180 + 3; // +3 puts origin - // in middle of - // zone - - eccPrimeSquared = (eccSquared) / (1 - eccSquared); - - M = y / k0; - mu = M / (a * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256)); - - phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * mu) + (151 * e1 * e1 * e1 / 96) * Math.sin(6 * mu); - // double phi1 = ProjMath.radToDeg(phi1Rad); - - N1 = a / Math.sqrt(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad)); - T1 = Math.tan(phi1Rad) * Math.tan(phi1Rad); - C1 = eccPrimeSquared * Math.cos(phi1Rad) * Math.cos(phi1Rad); - R1 = a * (1 - eccSquared) / Math.pow(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad), 1.5); - D = x / (N1 * k0); - - var lat = phi1Rad - (N1 * Math.tan(phi1Rad) / R1) * (D * D / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * eccPrimeSquared) * D * D * D * D / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C1 * C1) * D * D * D * D * D * D / 720); - lat = radToDeg(lat); - - var lon = (D - (1 + 2 * T1 + C1) * D * D * D / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * eccPrimeSquared + 24 * T1 * T1) * D * D * D * D * D / 120) / Math.cos(phi1Rad); - lon = LongOrigin + radToDeg(lon); - - var result; - if (utm.accuracy) { - var topRight = UTMtoLL({ - northing: utm.northing + utm.accuracy, - easting: utm.easting + utm.accuracy, - zoneLetter: utm.zoneLetter, - zoneNumber: utm.zoneNumber - }); - result = { - top: topRight.lat, - right: topRight.lon, - bottom: lat, - left: lon - }; - } - else { - result = { - lat: lat, - lon: lon - }; - } - return result; - } - - /** - * Calculates the MGRS letter designator for the given latitude. - * - * @private - * @param {number} lat The latitude in WGS84 to get the letter designator - * for. - * @return {char} The letter designator. - */ - function getLetterDesignator(lat) { - //This is here as an error flag to show that the Latitude is - //outside MGRS limits - var LetterDesignator = 'Z'; - - if ((84 >= lat) && (lat >= 72)) { - LetterDesignator = 'X'; - } - else if ((72 > lat) && (lat >= 64)) { - LetterDesignator = 'W'; - } - else if ((64 > lat) && (lat >= 56)) { - LetterDesignator = 'V'; - } - else if ((56 > lat) && (lat >= 48)) { - LetterDesignator = 'U'; - } - else if ((48 > lat) && (lat >= 40)) { - LetterDesignator = 'T'; - } - else if ((40 > lat) && (lat >= 32)) { - LetterDesignator = 'S'; - } - else if ((32 > lat) && (lat >= 24)) { - LetterDesignator = 'R'; - } - else if ((24 > lat) && (lat >= 16)) { - LetterDesignator = 'Q'; - } - else if ((16 > lat) && (lat >= 8)) { - LetterDesignator = 'P'; - } - else if ((8 > lat) && (lat >= 0)) { - LetterDesignator = 'N'; - } - else if ((0 > lat) && (lat >= -8)) { - LetterDesignator = 'M'; - } - else if ((-8 > lat) && (lat >= -16)) { - LetterDesignator = 'L'; - } - else if ((-16 > lat) && (lat >= -24)) { - LetterDesignator = 'K'; - } - else if ((-24 > lat) && (lat >= -32)) { - LetterDesignator = 'J'; - } - else if ((-32 > lat) && (lat >= -40)) { - LetterDesignator = 'H'; - } - else if ((-40 > lat) && (lat >= -48)) { - LetterDesignator = 'G'; - } - else if ((-48 > lat) && (lat >= -56)) { - LetterDesignator = 'F'; - } - else if ((-56 > lat) && (lat >= -64)) { - LetterDesignator = 'E'; - } - else if ((-64 > lat) && (lat >= -72)) { - LetterDesignator = 'D'; - } - else if ((-72 > lat) && (lat >= -80)) { - LetterDesignator = 'C'; - } - return LetterDesignator; - } - - /** - * Encodes a UTM location as MGRS string. - * - * @private - * @param {object} utm An object literal with easting, northing, - * zoneLetter, zoneNumber - * @param {number} accuracy Accuracy in digits (1-5). - * @return {string} MGRS string for the given UTM location. - */ - function encode(utm, accuracy) { - // prepend with leading zeroes - var seasting = "00000" + utm.easting, - snorthing = "00000" + utm.northing; - - return utm.zoneNumber + utm.zoneLetter + get100kID(utm.easting, utm.northing, utm.zoneNumber) + seasting.substr(seasting.length - 5, accuracy) + snorthing.substr(snorthing.length - 5, accuracy); - } - - /** - * Get the two letter 100k designator for a given UTM easting, - * northing and zone number value. - * - * @private - * @param {number} easting - * @param {number} northing - * @param {number} zoneNumber - * @return the two letter 100k designator for the given UTM location. - */ - function get100kID(easting, northing, zoneNumber) { - var setParm = get100kSetForZone(zoneNumber); - var setColumn = Math.floor(easting / 100000); - var setRow = Math.floor(northing / 100000) % 20; - return getLetter100kID(setColumn, setRow, setParm); - } - - /** - * Given a UTM zone number, figure out the MGRS 100K set it is in. - * - * @private - * @param {number} i An UTM zone number. - * @return {number} the 100k set the UTM zone is in. - */ - function get100kSetForZone(i) { - var setParm = i % NUM_100K_SETS; - if (setParm === 0) { - setParm = NUM_100K_SETS; - } - - return setParm; - } - - /** - * Get the two-letter MGRS 100k designator given information - * translated from the UTM northing, easting and zone number. - * - * @private - * @param {number} column the column index as it relates to the MGRS - * 100k set spreadsheet, created from the UTM easting. - * Values are 1-8. - * @param {number} row the row index as it relates to the MGRS 100k set - * spreadsheet, created from the UTM northing value. Values - * are from 0-19. - * @param {number} parm the set block, as it relates to the MGRS 100k set - * spreadsheet, created from the UTM zone. Values are from - * 1-60. - * @return two letter MGRS 100k code. - */ - function getLetter100kID(column, row, parm) { - // colOrigin and rowOrigin are the letters at the origin of the set - var index = parm - 1; - var colOrigin = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index); - var rowOrigin = SET_ORIGIN_ROW_LETTERS.charCodeAt(index); - - // colInt and rowInt are the letters to build to return - var colInt = colOrigin + column - 1; - var rowInt = rowOrigin + row; - var rollover = false; - - if (colInt > Z) { - colInt = colInt - Z + A - 1; - rollover = true; - } - - if (colInt === I || (colOrigin < I && colInt > I) || ((colInt > I || colOrigin < I) && rollover)) { - colInt++; - } - - if (colInt === O || (colOrigin < O && colInt > O) || ((colInt > O || colOrigin < O) && rollover)) { - colInt++; - - if (colInt === I) { - colInt++; - } - } - - if (colInt > Z) { - colInt = colInt - Z + A - 1; - } - - if (rowInt > V) { - rowInt = rowInt - V + A - 1; - rollover = true; - } - else { - rollover = false; - } - - if (((rowInt === I) || ((rowOrigin < I) && (rowInt > I))) || (((rowInt > I) || (rowOrigin < I)) && rollover)) { - rowInt++; - } - - if (((rowInt === O) || ((rowOrigin < O) && (rowInt > O))) || (((rowInt > O) || (rowOrigin < O)) && rollover)) { - rowInt++; - - if (rowInt === I) { - rowInt++; - } - } - - if (rowInt > V) { - rowInt = rowInt - V + A - 1; - } - - var twoLetter = String.fromCharCode(colInt) + String.fromCharCode(rowInt); - return twoLetter; - } - - /** - * Decode the UTM parameters from a MGRS string. - * - * @private - * @param {string} mgrsString an UPPERCASE coordinate string is expected. - * @return {object} An object literal with easting, northing, zoneLetter, - * zoneNumber and accuracy (in meters) properties. - */ - function decode(mgrsString) { - - if (mgrsString && mgrsString.length === 0) { - throw ("MGRSPoint coverting from nothing"); - } - - var length = mgrsString.length; - - var hunK = null; - var sb = ""; - var testChar; - var i = 0; - - // get Zone number - while (!(/[A-Z]/).test(testChar = mgrsString.charAt(i))) { - if (i >= 2) { - throw ("MGRSPoint bad conversion from: " + mgrsString); - } - sb += testChar; - i++; - } - - var zoneNumber = parseInt(sb, 10); - - if (i === 0 || i + 3 > length) { - // A good MGRS string has to be 4-5 digits long, - // ##AAA/#AAA at least. - throw ("MGRSPoint bad conversion from: " + mgrsString); - } - - var zoneLetter = mgrsString.charAt(i++); - - // Should we check the zone letter here? Why not. - if (zoneLetter <= 'A' || zoneLetter === 'B' || zoneLetter === 'Y' || zoneLetter >= 'Z' || zoneLetter === 'I' || zoneLetter === 'O') { - throw ("MGRSPoint zone letter " + zoneLetter + " not handled: " + mgrsString); - } - - hunK = mgrsString.substring(i, i += 2); - - var set = get100kSetForZone(zoneNumber); - - var east100k = getEastingFromChar(hunK.charAt(0), set); - var north100k = getNorthingFromChar(hunK.charAt(1), set); - - // We have a bug where the northing may be 2000000 too low. - // How - // do we know when to roll over? - - while (north100k < getMinNorthing(zoneLetter)) { - north100k += 2000000; - } - - // calculate the char index for easting/northing separator - var remainder = length - i; - - if (remainder % 2 !== 0) { - throw ("MGRSPoint has to have an even number \nof digits after the zone letter and two 100km letters - front \nhalf for easting meters, second half for \nnorthing meters" + mgrsString); - } - - var sep = remainder / 2; - - var sepEasting = 0.0; - var sepNorthing = 0.0; - var accuracyBonus, sepEastingString, sepNorthingString, easting, northing; - if (sep > 0) { - accuracyBonus = 100000.0 / Math.pow(10, sep); - sepEastingString = mgrsString.substring(i, i + sep); - sepEasting = parseFloat(sepEastingString) * accuracyBonus; - sepNorthingString = mgrsString.substring(i + sep); - sepNorthing = parseFloat(sepNorthingString) * accuracyBonus; - } - - easting = sepEasting + east100k; - northing = sepNorthing + north100k; - - return { - easting: easting, - northing: northing, - zoneLetter: zoneLetter, - zoneNumber: zoneNumber, - accuracy: accuracyBonus - }; - } - - /** - * Given the first letter from a two-letter MGRS 100k zone, and given the - * MGRS table set for the zone number, figure out the easting value that - * should be added to the other, secondary easting value. - * - * @private - * @param {char} e The first letter from a two-letter MGRS 100´k zone. - * @param {number} set The MGRS table set for the zone number. - * @return {number} The easting value for the given letter and set. - */ - function getEastingFromChar(e, set) { - // colOrigin is the letter at the origin of the set for the - // column - var curCol = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set - 1); - var eastingValue = 100000.0; - var rewindMarker = false; - - while (curCol !== e.charCodeAt(0)) { - curCol++; - if (curCol === I) { - curCol++; - } - if (curCol === O) { - curCol++; - } - if (curCol > Z) { - if (rewindMarker) { - throw ("Bad character: " + e); - } - curCol = A; - rewindMarker = true; - } - eastingValue += 100000.0; - } - - return eastingValue; - } - - /** - * Given the second letter from a two-letter MGRS 100k zone, and given the - * MGRS table set for the zone number, figure out the northing value that - * should be added to the other, secondary northing value. You have to - * remember that Northings are determined from the equator, and the vertical - * cycle of letters mean a 2000000 additional northing meters. This happens - * approx. every 18 degrees of latitude. This method does *NOT* count any - * additional northings. You have to figure out how many 2000000 meters need - * to be added for the zone letter of the MGRS coordinate. - * - * @private - * @param {char} n Second letter of the MGRS 100k zone - * @param {number} set The MGRS table set number, which is dependent on the - * UTM zone number. - * @return {number} The northing value for the given letter and set. - */ - function getNorthingFromChar(n, set) { - - if (n > 'V') { - throw ("MGRSPoint given invalid Northing " + n); - } - - // rowOrigin is the letter at the origin of the set for the - // column - var curRow = SET_ORIGIN_ROW_LETTERS.charCodeAt(set - 1); - var northingValue = 0.0; - var rewindMarker = false; - - while (curRow !== n.charCodeAt(0)) { - curRow++; - if (curRow === I) { - curRow++; - } - if (curRow === O) { - curRow++; - } - // fixing a bug making whole application hang in this loop - // when 'n' is a wrong character - if (curRow > V) { - if (rewindMarker) { // making sure that this loop ends - throw ("Bad character: " + n); - } - curRow = A; - rewindMarker = true; - } - northingValue += 100000.0; - } - - return northingValue; - } - - /** - * The function getMinNorthing returns the minimum northing value of a MGRS - * zone. - * - * Ported from Geotrans' c Lattitude_Band_Value structure table. - * - * @private - * @param {char} zoneLetter The MGRS zone to get the min northing for. - * @return {number} - */ - function getMinNorthing(zoneLetter) { - var northing; - switch (zoneLetter) { - case 'C': - northing = 1100000.0; - break; - case 'D': - northing = 2000000.0; - break; - case 'E': - northing = 2800000.0; - break; - case 'F': - northing = 3700000.0; - break; - case 'G': - northing = 4600000.0; - break; - case 'H': - northing = 5500000.0; - break; - case 'J': - northing = 6400000.0; - break; - case 'K': - northing = 7300000.0; - break; - case 'L': - northing = 8200000.0; - break; - case 'M': - northing = 9100000.0; - break; - case 'N': - northing = 0.0; - break; - case 'P': - northing = 800000.0; - break; - case 'Q': - northing = 1700000.0; - break; - case 'R': - northing = 2600000.0; - break; - case 'S': - northing = 3500000.0; - break; - case 'T': - northing = 4400000.0; - break; - case 'U': - northing = 5300000.0; - break; - case 'V': - northing = 6200000.0; - break; - case 'W': - northing = 7000000.0; - break; - case 'X': - northing = 7900000.0; - break; - default: - northing = -1.0; - } - if (northing >= 0.0) { - return northing; - } - else { - throw ("Invalid zone letter: " + zoneLetter); - } - - } - - function Point(x, y, z) { - if (!(this instanceof Point)) { - return new Point(x, y, z); - } - if (Array.isArray(x)) { - this.x = x[0]; - this.y = x[1]; - this.z = x[2] || 0.0; - } else if(typeof x === 'object') { - this.x = x.x; - this.y = x.y; - this.z = x.z || 0.0; - } else if (typeof x === 'string' && typeof y === 'undefined') { - var coords = x.split(','); - this.x = parseFloat(coords[0], 10); - this.y = parseFloat(coords[1], 10); - this.z = parseFloat(coords[2], 10) || 0.0; - } else { - this.x = x; - this.y = y; - this.z = z || 0.0; - } - console.warn('proj4.Point will be removed in version 3, use proj4.toPoint'); - } - - Point.fromMGRS = function(mgrsStr) { - return new Point(toPoint$1(mgrsStr)); - }; - Point.prototype.toMGRS = function(accuracy) { - return forward$1([this.x, this.y], accuracy); - }; - - var version = "2.4.3"; - - var C00 = 1; - var C02 = 0.25; - var C04 = 0.046875; - var C06 = 0.01953125; - var C08 = 0.01068115234375; - var C22 = 0.75; - var C44 = 0.46875; - var C46 = 0.01302083333333333333; - var C48 = 0.00712076822916666666; - var C66 = 0.36458333333333333333; - var C68 = 0.00569661458333333333; - var C88 = 0.3076171875; - - var pj_enfn = function(es) { - var en = []; - en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08))); - en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08))); - var t = es * es; - en[2] = t * (C44 - es * (C46 + es * C48)); - t *= es; - en[3] = t * (C66 - es * C68); - en[4] = t * es * C88; - return en; - }; - - var pj_mlfn = function(phi, sphi, cphi, en) { - cphi *= sphi; - sphi *= sphi; - return (en[0] * phi - cphi * (en[1] + sphi * (en[2] + sphi * (en[3] + sphi * en[4])))); - }; - - var MAX_ITER = 20; - - var pj_inv_mlfn = function(arg, es, en) { - var k = 1 / (1 - es); - var phi = arg; - for (var i = MAX_ITER; i; --i) { /* rarely goes over 2 iterations */ - var s = Math.sin(phi); - var t = 1 - es * s * s; - //t = this.pj_mlfn(phi, s, Math.cos(phi), en) - arg; - //phi -= t * (t * Math.sqrt(t)) * k; - t = (pj_mlfn(phi, s, Math.cos(phi), en) - arg) * (t * Math.sqrt(t)) * k; - phi -= t; - if (Math.abs(t) < EPSLN) { - return phi; - } - } - //..reportError("cass:pj_inv_mlfn: Convergence error"); - return phi; - }; - - // Heavily based on this tmerc projection implementation - // https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/tmerc.js - - function init$2() { - this.x0 = this.x0 !== undefined ? this.x0 : 0; - this.y0 = this.y0 !== undefined ? this.y0 : 0; - this.long0 = this.long0 !== undefined ? this.long0 : 0; - this.lat0 = this.lat0 !== undefined ? this.lat0 : 0; - - if (this.es) { - this.en = pj_enfn(this.es); - this.ml0 = pj_mlfn(this.lat0, Math.sin(this.lat0), Math.cos(this.lat0), this.en); - } - } - - /** - Transverse Mercator Forward - long/lat to x/y - long/lat in radians - */ - function forward$2(p) { - var lon = p.x; - var lat = p.y; - - var delta_lon = adjust_lon(lon - this.long0); - var con; - var x, y; - var sin_phi = Math.sin(lat); - var cos_phi = Math.cos(lat); - - if (!this.es) { - var b = cos_phi * Math.sin(delta_lon); - - if ((Math.abs(Math.abs(b) - 1)) < EPSLN) { - return (93); - } - else { - x = 0.5 * this.a * this.k0 * Math.log((1 + b) / (1 - b)) + this.x0; - y = cos_phi * Math.cos(delta_lon) / Math.sqrt(1 - Math.pow(b, 2)); - b = Math.abs(y); - - if (b >= 1) { - if ((b - 1) > EPSLN) { - return (93); - } - else { - y = 0; - } - } - else { - y = Math.acos(y); - } - - if (lat < 0) { - y = -y; - } - - y = this.a * this.k0 * (y - this.lat0) + this.y0; - } - } - else { - var al = cos_phi * delta_lon; - var als = Math.pow(al, 2); - var c = this.ep2 * Math.pow(cos_phi, 2); - var cs = Math.pow(c, 2); - var tq = Math.abs(cos_phi) > EPSLN ? Math.tan(lat) : 0; - var t = Math.pow(tq, 2); - var ts = Math.pow(t, 2); - con = 1 - this.es * Math.pow(sin_phi, 2); - al = al / Math.sqrt(con); - var ml = pj_mlfn(lat, sin_phi, cos_phi, this.en); - - x = this.a * (this.k0 * al * (1 + - als / 6 * (1 - t + c + - als / 20 * (5 - 18 * t + ts + 14 * c - 58 * t * c + - als / 42 * (61 + 179 * ts - ts * t - 479 * t))))) + - this.x0; - - y = this.a * (this.k0 * (ml - this.ml0 + - sin_phi * delta_lon * al / 2 * (1 + - als / 12 * (5 - t + 9 * c + 4 * cs + - als / 30 * (61 + ts - 58 * t + 270 * c - 330 * t * c + - als / 56 * (1385 + 543 * ts - ts * t - 3111 * t)))))) + - this.y0; - } - - p.x = x; - p.y = y; - - return p; - } - - /** - Transverse Mercator Inverse - x/y to long/lat - */ - function inverse$2(p) { - var con, phi; - var lat, lon; - var x = (p.x - this.x0) * (1 / this.a); - var y = (p.y - this.y0) * (1 / this.a); - - if (!this.es) { - var f = Math.exp(x / this.k0); - var g = 0.5 * (f - 1 / f); - var temp = this.lat0 + y / this.k0; - var h = Math.cos(temp); - con = Math.sqrt((1 - Math.pow(h, 2)) / (1 + Math.pow(g, 2))); - lat = Math.asin(con); - - if (y < 0) { - lat = -lat; - } - - if ((g === 0) && (h === 0)) { - lon = 0; - } - else { - lon = adjust_lon(Math.atan2(g, h) + this.long0); - } - } - else { // ellipsoidal form - con = this.ml0 + y / this.k0; - phi = pj_inv_mlfn(con, this.es, this.en); - - if (Math.abs(phi) < HALF_PI) { - var sin_phi = Math.sin(phi); - var cos_phi = Math.cos(phi); - var tan_phi = Math.abs(cos_phi) > EPSLN ? Math.tan(phi) : 0; - var c = this.ep2 * Math.pow(cos_phi, 2); - var cs = Math.pow(c, 2); - var t = Math.pow(tan_phi, 2); - var ts = Math.pow(t, 2); - con = 1 - this.es * Math.pow(sin_phi, 2); - var d = x * Math.sqrt(con) / this.k0; - var ds = Math.pow(d, 2); - con = con * tan_phi; - - lat = phi - (con * ds / (1 - this.es)) * 0.5 * (1 - - ds / 12 * (5 + 3 * t - 9 * c * t + c - 4 * cs - - ds / 30 * (61 + 90 * t - 252 * c * t + 45 * ts + 46 * c - - ds / 56 * (1385 + 3633 * t + 4095 * ts + 1574 * ts * t)))); - - lon = adjust_lon(this.long0 + (d * (1 - - ds / 6 * (1 + 2 * t + c - - ds / 20 * (5 + 28 * t + 24 * ts + 8 * c * t + 6 * c - - ds / 42 * (61 + 662 * t + 1320 * ts + 720 * ts * t)))) / cos_phi)); - } - else { - lat = HALF_PI * sign(y); - lon = 0; - } - } - - p.x = lon; - p.y = lat; - - return p; - } - - var names$3 = ["Transverse_Mercator", "Transverse Mercator", "tmerc"]; - var tmerc = { - init: init$2, - forward: forward$2, - inverse: inverse$2, - names: names$3 - }; - - var sinh = function(x) { - var r = Math.exp(x); - r = (r - 1 / r) / 2; - return r; - }; - - var hypot = function(x, y) { - x = Math.abs(x); - y = Math.abs(y); - var a = Math.max(x, y); - var b = Math.min(x, y) / (a ? a : 1); - - return a * Math.sqrt(1 + Math.pow(b, 2)); - }; - - var log1py = function(x) { - var y = 1 + x; - var z = y - 1; - - return z === 0 ? x : x * Math.log(y) / z; - }; - - var asinhy = function(x) { - var y = Math.abs(x); - y = log1py(y * (1 + y / (hypot(1, y) + 1))); - - return x < 0 ? -y : y; - }; - - var gatg = function(pp, B) { - var cos_2B = 2 * Math.cos(2 * B); - var i = pp.length - 1; - var h1 = pp[i]; - var h2 = 0; - var h; - - while (--i >= 0) { - h = -h2 + cos_2B * h1 + pp[i]; - h2 = h1; - h1 = h; - } - - return (B + h * Math.sin(2 * B)); - }; - - var clens = function(pp, arg_r) { - var r = 2 * Math.cos(arg_r); - var i = pp.length - 1; - var hr1 = pp[i]; - var hr2 = 0; - var hr; - - while (--i >= 0) { - hr = -hr2 + r * hr1 + pp[i]; - hr2 = hr1; - hr1 = hr; - } - - return Math.sin(arg_r) * hr; - }; - - var cosh = function(x) { - var r = Math.exp(x); - r = (r + 1 / r) / 2; - return r; - }; - - var clens_cmplx = function(pp, arg_r, arg_i) { - var sin_arg_r = Math.sin(arg_r); - var cos_arg_r = Math.cos(arg_r); - var sinh_arg_i = sinh(arg_i); - var cosh_arg_i = cosh(arg_i); - var r = 2 * cos_arg_r * cosh_arg_i; - var i = -2 * sin_arg_r * sinh_arg_i; - var j = pp.length - 1; - var hr = pp[j]; - var hi1 = 0; - var hr1 = 0; - var hi = 0; - var hr2; - var hi2; - - while (--j >= 0) { - hr2 = hr1; - hi2 = hi1; - hr1 = hr; - hi1 = hi; - hr = -hr2 + r * hr1 - i * hi1 + pp[j]; - hi = -hi2 + i * hr1 + r * hi1; - } - - r = sin_arg_r * cosh_arg_i; - i = cos_arg_r * sinh_arg_i; - - return [r * hr - i * hi, r * hi + i * hr]; - }; - - // Heavily based on this etmerc projection implementation - // https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/etmerc.js - - function init$3() { - if (this.es === undefined || this.es <= 0) { - throw new Error('incorrect elliptical usage'); - } - - this.x0 = this.x0 !== undefined ? this.x0 : 0; - this.y0 = this.y0 !== undefined ? this.y0 : 0; - this.long0 = this.long0 !== undefined ? this.long0 : 0; - this.lat0 = this.lat0 !== undefined ? this.lat0 : 0; - - this.cgb = []; - this.cbg = []; - this.utg = []; - this.gtu = []; - - var f = this.es / (1 + Math.sqrt(1 - this.es)); - var n = f / (2 - f); - var np = n; - - this.cgb[0] = n * (2 + n * (-2 / 3 + n * (-2 + n * (116 / 45 + n * (26 / 45 + n * (-2854 / 675 )))))); - this.cbg[0] = n * (-2 + n * ( 2 / 3 + n * ( 4 / 3 + n * (-82 / 45 + n * (32 / 45 + n * (4642 / 4725)))))); - - np = np * n; - this.cgb[1] = np * (7 / 3 + n * (-8 / 5 + n * (-227 / 45 + n * (2704 / 315 + n * (2323 / 945))))); - this.cbg[1] = np * (5 / 3 + n * (-16 / 15 + n * ( -13 / 9 + n * (904 / 315 + n * (-1522 / 945))))); - - np = np * n; - this.cgb[2] = np * (56 / 15 + n * (-136 / 35 + n * (-1262 / 105 + n * (73814 / 2835)))); - this.cbg[2] = np * (-26 / 15 + n * (34 / 21 + n * (8 / 5 + n * (-12686 / 2835)))); - - np = np * n; - this.cgb[3] = np * (4279 / 630 + n * (-332 / 35 + n * (-399572 / 14175))); - this.cbg[3] = np * (1237 / 630 + n * (-12 / 5 + n * ( -24832 / 14175))); - - np = np * n; - this.cgb[4] = np * (4174 / 315 + n * (-144838 / 6237)); - this.cbg[4] = np * (-734 / 315 + n * (109598 / 31185)); - - np = np * n; - this.cgb[5] = np * (601676 / 22275); - this.cbg[5] = np * (444337 / 155925); - - np = Math.pow(n, 2); - this.Qn = this.k0 / (1 + n) * (1 + np * (1 / 4 + np * (1 / 64 + np / 256))); - - this.utg[0] = n * (-0.5 + n * ( 2 / 3 + n * (-37 / 96 + n * ( 1 / 360 + n * (81 / 512 + n * (-96199 / 604800)))))); - this.gtu[0] = n * (0.5 + n * (-2 / 3 + n * (5 / 16 + n * (41 / 180 + n * (-127 / 288 + n * (7891 / 37800)))))); - - this.utg[1] = np * (-1 / 48 + n * (-1 / 15 + n * (437 / 1440 + n * (-46 / 105 + n * (1118711 / 3870720))))); - this.gtu[1] = np * (13 / 48 + n * (-3 / 5 + n * (557 / 1440 + n * (281 / 630 + n * (-1983433 / 1935360))))); - - np = np * n; - this.utg[2] = np * (-17 / 480 + n * (37 / 840 + n * (209 / 4480 + n * (-5569 / 90720 )))); - this.gtu[2] = np * (61 / 240 + n * (-103 / 140 + n * (15061 / 26880 + n * (167603 / 181440)))); - - np = np * n; - this.utg[3] = np * (-4397 / 161280 + n * (11 / 504 + n * (830251 / 7257600))); - this.gtu[3] = np * (49561 / 161280 + n * (-179 / 168 + n * (6601661 / 7257600))); - - np = np * n; - this.utg[4] = np * (-4583 / 161280 + n * (108847 / 3991680)); - this.gtu[4] = np * (34729 / 80640 + n * (-3418889 / 1995840)); - - np = np * n; - this.utg[5] = np * (-20648693 / 638668800); - this.gtu[5] = np * (212378941 / 319334400); - - var Z = gatg(this.cbg, this.lat0); - this.Zb = -this.Qn * (Z + clens(this.gtu, 2 * Z)); - } - - function forward$3(p) { - var Ce = adjust_lon(p.x - this.long0); - var Cn = p.y; - - Cn = gatg(this.cbg, Cn); - var sin_Cn = Math.sin(Cn); - var cos_Cn = Math.cos(Cn); - var sin_Ce = Math.sin(Ce); - var cos_Ce = Math.cos(Ce); - - Cn = Math.atan2(sin_Cn, cos_Ce * cos_Cn); - Ce = Math.atan2(sin_Ce * cos_Cn, hypot(sin_Cn, cos_Cn * cos_Ce)); - Ce = asinhy(Math.tan(Ce)); - - var tmp = clens_cmplx(this.gtu, 2 * Cn, 2 * Ce); - - Cn = Cn + tmp[0]; - Ce = Ce + tmp[1]; - - var x; - var y; - - if (Math.abs(Ce) <= 2.623395162778) { - x = this.a * (this.Qn * Ce) + this.x0; - y = this.a * (this.Qn * Cn + this.Zb) + this.y0; - } - else { - x = Infinity; - y = Infinity; - } - - p.x = x; - p.y = y; - - return p; - } - - function inverse$3(p) { - var Ce = (p.x - this.x0) * (1 / this.a); - var Cn = (p.y - this.y0) * (1 / this.a); - - Cn = (Cn - this.Zb) / this.Qn; - Ce = Ce / this.Qn; - - var lon; - var lat; - - if (Math.abs(Ce) <= 2.623395162778) { - var tmp = clens_cmplx(this.utg, 2 * Cn, 2 * Ce); - - Cn = Cn + tmp[0]; - Ce = Ce + tmp[1]; - Ce = Math.atan(sinh(Ce)); - - var sin_Cn = Math.sin(Cn); - var cos_Cn = Math.cos(Cn); - var sin_Ce = Math.sin(Ce); - var cos_Ce = Math.cos(Ce); - - Cn = Math.atan2(sin_Cn * cos_Ce, hypot(sin_Ce, cos_Ce * cos_Cn)); - Ce = Math.atan2(sin_Ce, cos_Ce * cos_Cn); - - lon = adjust_lon(Ce + this.long0); - lat = gatg(this.cgb, Cn); - } - else { - lon = Infinity; - lat = Infinity; - } - - p.x = lon; - p.y = lat; - - return p; - } - - var names$4 = ["Extended_Transverse_Mercator", "Extended Transverse Mercator", "etmerc"]; - var etmerc = { - init: init$3, - forward: forward$3, - inverse: inverse$3, - names: names$4 - }; - - var adjust_zone = function(zone, lon) { - if (zone === undefined) { - zone = Math.floor((adjust_lon(lon) + Math.PI) * 30 / Math.PI) + 1; - - if (zone < 0) { - return 0; - } else if (zone > 60) { - return 60; - } - } - return zone; - }; - - var dependsOn = 'etmerc'; - function init$4() { - var zone = adjust_zone(this.zone, this.long0); - if (zone === undefined) { - throw new Error('unknown utm zone'); - } - this.lat0 = 0; - this.long0 = ((6 * Math.abs(zone)) - 183) * D2R; - this.x0 = 500000; - this.y0 = this.utmSouth ? 10000000 : 0; - this.k0 = 0.9996; - - etmerc.init.apply(this); - this.forward = etmerc.forward; - this.inverse = etmerc.inverse; - } - - var names$5 = ["Universal Transverse Mercator System", "utm"]; - var utm = { - init: init$4, - names: names$5, - dependsOn: dependsOn - }; - - var srat = function(esinp, exp) { - return (Math.pow((1 - esinp) / (1 + esinp), exp)); - }; - - var MAX_ITER$1 = 20; - function init$6() { - var sphi = Math.sin(this.lat0); - var cphi = Math.cos(this.lat0); - cphi *= cphi; - this.rc = Math.sqrt(1 - this.es) / (1 - this.es * sphi * sphi); - this.C = Math.sqrt(1 + this.es * cphi * cphi / (1 - this.es)); - this.phic0 = Math.asin(sphi / this.C); - this.ratexp = 0.5 * this.C * this.e; - this.K = Math.tan(0.5 * this.phic0 + FORTPI) / (Math.pow(Math.tan(0.5 * this.lat0 + FORTPI), this.C) * srat(this.e * sphi, this.ratexp)); - } - - function forward$5(p) { - var lon = p.x; - var lat = p.y; - - p.y = 2 * Math.atan(this.K * Math.pow(Math.tan(0.5 * lat + FORTPI), this.C) * srat(this.e * Math.sin(lat), this.ratexp)) - HALF_PI; - p.x = this.C * lon; - return p; - } - - function inverse$5(p) { - var DEL_TOL = 1e-14; - var lon = p.x / this.C; - var lat = p.y; - var num = Math.pow(Math.tan(0.5 * lat + FORTPI) / this.K, 1 / this.C); - for (var i = MAX_ITER$1; i > 0; --i) { - lat = 2 * Math.atan(num * srat(this.e * Math.sin(p.y), - 0.5 * this.e)) - HALF_PI; - if (Math.abs(lat - p.y) < DEL_TOL) { - break; - } - p.y = lat; - } - /* convergence failed */ - if (!i) { - return null; - } - p.x = lon; - p.y = lat; - return p; - } - - var names$7 = ["gauss"]; - var gauss = { - init: init$6, - forward: forward$5, - inverse: inverse$5, - names: names$7 - }; - - function init$5() { - gauss.init.apply(this); - if (!this.rc) { - return; - } - this.sinc0 = Math.sin(this.phic0); - this.cosc0 = Math.cos(this.phic0); - this.R2 = 2 * this.rc; - if (!this.title) { - this.title = "Oblique Stereographic Alternative"; - } - } - - function forward$4(p) { - var sinc, cosc, cosl, k; - p.x = adjust_lon(p.x - this.long0); - gauss.forward.apply(this, [p]); - sinc = Math.sin(p.y); - cosc = Math.cos(p.y); - cosl = Math.cos(p.x); - k = this.k0 * this.R2 / (1 + this.sinc0 * sinc + this.cosc0 * cosc * cosl); - p.x = k * cosc * Math.sin(p.x); - p.y = k * (this.cosc0 * sinc - this.sinc0 * cosc * cosl); - p.x = this.a * p.x + this.x0; - p.y = this.a * p.y + this.y0; - return p; - } - - function inverse$4(p) { - var sinc, cosc, lon, lat, rho; - p.x = (p.x - this.x0) / this.a; - p.y = (p.y - this.y0) / this.a; - - p.x /= this.k0; - p.y /= this.k0; - if ((rho = Math.sqrt(p.x * p.x + p.y * p.y))) { - var c = 2 * Math.atan2(rho, this.R2); - sinc = Math.sin(c); - cosc = Math.cos(c); - lat = Math.asin(cosc * this.sinc0 + p.y * sinc * this.cosc0 / rho); - lon = Math.atan2(p.x * sinc, rho * this.cosc0 * cosc - p.y * this.sinc0 * sinc); - } - else { - lat = this.phic0; - lon = 0; - } - - p.x = lon; - p.y = lat; - gauss.inverse.apply(this, [p]); - p.x = adjust_lon(p.x + this.long0); - return p; - } - - var names$6 = ["Stereographic_North_Pole", "Oblique_Stereographic", "Polar_Stereographic", "sterea","Oblique Stereographic Alternative"]; - var sterea = { - init: init$5, - forward: forward$4, - inverse: inverse$4, - names: names$6 - }; - - function ssfn_(phit, sinphi, eccen) { - sinphi *= eccen; - return (Math.tan(0.5 * (HALF_PI + phit)) * Math.pow((1 - sinphi) / (1 + sinphi), 0.5 * eccen)); - } - - function init$7() { - this.coslat0 = Math.cos(this.lat0); - this.sinlat0 = Math.sin(this.lat0); - if (this.sphere) { - if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) { - this.k0 = 0.5 * (1 + sign(this.lat0) * Math.sin(this.lat_ts)); - } - } - else { - if (Math.abs(this.coslat0) <= EPSLN) { - if (this.lat0 > 0) { - //North pole - //trace('stere:north pole'); - this.con = 1; - } - else { - //South pole - //trace('stere:south pole'); - this.con = -1; - } - } - this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e)); - if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) { - this.k0 = 0.5 * this.cons * msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / tsfnz(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts)); - } - this.ms1 = msfnz(this.e, this.sinlat0, this.coslat0); - this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - HALF_PI; - this.cosX0 = Math.cos(this.X0); - this.sinX0 = Math.sin(this.X0); - } - } - - // Stereographic forward equations--mapping lat,long to x,y - function forward$6(p) { - var lon = p.x; - var lat = p.y; - var sinlat = Math.sin(lat); - var coslat = Math.cos(lat); - var A, X, sinX, cosX, ts, rh; - var dlon = adjust_lon(lon - this.long0); - - if (Math.abs(Math.abs(lon - this.long0) - Math.PI) <= EPSLN && Math.abs(lat + this.lat0) <= EPSLN) { - //case of the origine point - //trace('stere:this is the origin point'); - p.x = NaN; - p.y = NaN; - return p; - } - if (this.sphere) { - //trace('stere:sphere case'); - A = 2 * this.k0 / (1 + this.sinlat0 * sinlat + this.coslat0 * coslat * Math.cos(dlon)); - p.x = this.a * A * coslat * Math.sin(dlon) + this.x0; - p.y = this.a * A * (this.coslat0 * sinlat - this.sinlat0 * coslat * Math.cos(dlon)) + this.y0; - return p; - } - else { - X = 2 * Math.atan(this.ssfn_(lat, sinlat, this.e)) - HALF_PI; - cosX = Math.cos(X); - sinX = Math.sin(X); - if (Math.abs(this.coslat0) <= EPSLN) { - ts = tsfnz(this.e, lat * this.con, this.con * sinlat); - rh = 2 * this.a * this.k0 * ts / this.cons; - p.x = this.x0 + rh * Math.sin(lon - this.long0); - p.y = this.y0 - this.con * rh * Math.cos(lon - this.long0); - //trace(p.toString()); - return p; - } - else if (Math.abs(this.sinlat0) < EPSLN) { - //Eq - //trace('stere:equateur'); - A = 2 * this.a * this.k0 / (1 + cosX * Math.cos(dlon)); - p.y = A * sinX; - } - else { - //other case - //trace('stere:normal case'); - A = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * sinX + this.cosX0 * cosX * Math.cos(dlon))); - p.y = A * (this.cosX0 * sinX - this.sinX0 * cosX * Math.cos(dlon)) + this.y0; - } - p.x = A * cosX * Math.sin(dlon) + this.x0; - } - //trace(p.toString()); - return p; - } - - //* Stereographic inverse equations--mapping x,y to lat/long - function inverse$6(p) { - p.x -= this.x0; - p.y -= this.y0; - var lon, lat, ts, ce, Chi; - var rh = Math.sqrt(p.x * p.x + p.y * p.y); - if (this.sphere) { - var c = 2 * Math.atan(rh / (0.5 * this.a * this.k0)); - lon = this.long0; - lat = this.lat0; - if (rh <= EPSLN) { - p.x = lon; - p.y = lat; - return p; - } - lat = Math.asin(Math.cos(c) * this.sinlat0 + p.y * Math.sin(c) * this.coslat0 / rh); - if (Math.abs(this.coslat0) < EPSLN) { - if (this.lat0 > 0) { - lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y)); - } - else { - lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y)); - } - } - else { - lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(c), rh * this.coslat0 * Math.cos(c) - p.y * this.sinlat0 * Math.sin(c))); - } - p.x = lon; - p.y = lat; - return p; - } - else { - if (Math.abs(this.coslat0) <= EPSLN) { - if (rh <= EPSLN) { - lat = this.lat0; - lon = this.long0; - p.x = lon; - p.y = lat; - //trace(p.toString()); - return p; - } - p.x *= this.con; - p.y *= this.con; - ts = rh * this.cons / (2 * this.a * this.k0); - lat = this.con * phi2z(this.e, ts); - lon = this.con * adjust_lon(this.con * this.long0 + Math.atan2(p.x, - 1 * p.y)); - } - else { - ce = 2 * Math.atan(rh * this.cosX0 / (2 * this.a * this.k0 * this.ms1)); - lon = this.long0; - if (rh <= EPSLN) { - Chi = this.X0; - } - else { - Chi = Math.asin(Math.cos(ce) * this.sinX0 + p.y * Math.sin(ce) * this.cosX0 / rh); - lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(ce), rh * this.cosX0 * Math.cos(ce) - p.y * this.sinX0 * Math.sin(ce))); - } - lat = -1 * phi2z(this.e, Math.tan(0.5 * (HALF_PI + Chi))); - } - } - p.x = lon; - p.y = lat; - - //trace(p.toString()); - return p; - - } - - var names$8 = ["stere", "Stereographic_South_Pole", "Polar Stereographic (variant B)"]; - var stere = { - init: init$7, - forward: forward$6, - inverse: inverse$6, - names: names$8, - ssfn_: ssfn_ - }; - - /* - references: - Formules et constantes pour le Calcul pour la - projection cylindrique conforme à axe oblique et pour la transformation entre - des systèmes de référence. - http://www.swisstopo.admin.ch/internet/swisstopo/fr/home/topics/survey/sys/refsys/switzerland.parsysrelated1.31216.downloadList.77004.DownloadFile.tmp/swissprojectionfr.pdf - */ - - function init$8() { - var phy0 = this.lat0; - this.lambda0 = this.long0; - var sinPhy0 = Math.sin(phy0); - var semiMajorAxis = this.a; - var invF = this.rf; - var flattening = 1 / invF; - var e2 = 2 * flattening - Math.pow(flattening, 2); - var e = this.e = Math.sqrt(e2); - this.R = this.k0 * semiMajorAxis * Math.sqrt(1 - e2) / (1 - e2 * Math.pow(sinPhy0, 2)); - this.alpha = Math.sqrt(1 + e2 / (1 - e2) * Math.pow(Math.cos(phy0), 4)); - this.b0 = Math.asin(sinPhy0 / this.alpha); - var k1 = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2)); - var k2 = Math.log(Math.tan(Math.PI / 4 + phy0 / 2)); - var k3 = Math.log((1 + e * sinPhy0) / (1 - e * sinPhy0)); - this.K = k1 - this.alpha * k2 + this.alpha * e / 2 * k3; - } - - function forward$7(p) { - var Sa1 = Math.log(Math.tan(Math.PI / 4 - p.y / 2)); - var Sa2 = this.e / 2 * Math.log((1 + this.e * Math.sin(p.y)) / (1 - this.e * Math.sin(p.y))); - var S = -this.alpha * (Sa1 + Sa2) + this.K; - - // spheric latitude - var b = 2 * (Math.atan(Math.exp(S)) - Math.PI / 4); - - // spheric longitude - var I = this.alpha * (p.x - this.lambda0); - - // psoeudo equatorial rotation - var rotI = Math.atan(Math.sin(I) / (Math.sin(this.b0) * Math.tan(b) + Math.cos(this.b0) * Math.cos(I))); - - var rotB = Math.asin(Math.cos(this.b0) * Math.sin(b) - Math.sin(this.b0) * Math.cos(b) * Math.cos(I)); - - p.y = this.R / 2 * Math.log((1 + Math.sin(rotB)) / (1 - Math.sin(rotB))) + this.y0; - p.x = this.R * rotI + this.x0; - return p; - } - - function inverse$7(p) { - var Y = p.x - this.x0; - var X = p.y - this.y0; - - var rotI = Y / this.R; - var rotB = 2 * (Math.atan(Math.exp(X / this.R)) - Math.PI / 4); - - var b = Math.asin(Math.cos(this.b0) * Math.sin(rotB) + Math.sin(this.b0) * Math.cos(rotB) * Math.cos(rotI)); - var I = Math.atan(Math.sin(rotI) / (Math.cos(this.b0) * Math.cos(rotI) - Math.sin(this.b0) * Math.tan(rotB))); - - var lambda = this.lambda0 + I / this.alpha; - - var S = 0; - var phy = b; - var prevPhy = -1000; - var iteration = 0; - while (Math.abs(phy - prevPhy) > 0.0000001) { - if (++iteration > 20) { - //...reportError("omercFwdInfinity"); - return; - } - //S = Math.log(Math.tan(Math.PI / 4 + phy / 2)); - S = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + b / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(phy)) / 2)); - prevPhy = phy; - phy = 2 * Math.atan(Math.exp(S)) - Math.PI / 2; - } - - p.x = lambda; - p.y = phy; - return p; - } - - var names$9 = ["somerc"]; - var somerc = { - init: init$8, - forward: forward$7, - inverse: inverse$7, - names: names$9 - }; - - /* Initialize the Oblique Mercator projection - ------------------------------------------*/ - function init$9() { - this.no_off = this.no_off || false; - this.no_rot = this.no_rot || false; - - if (isNaN(this.k0)) { - this.k0 = 1; - } - var sinlat = Math.sin(this.lat0); - var coslat = Math.cos(this.lat0); - var con = this.e * sinlat; - - this.bl = Math.sqrt(1 + this.es / (1 - this.es) * Math.pow(coslat, 4)); - this.al = this.a * this.bl * this.k0 * Math.sqrt(1 - this.es) / (1 - con * con); - var t0 = tsfnz(this.e, this.lat0, sinlat); - var dl = this.bl / coslat * Math.sqrt((1 - this.es) / (1 - con * con)); - if (dl * dl < 1) { - dl = 1; - } - var fl; - var gl; - if (!isNaN(this.longc)) { - //Central point and azimuth method - - if (this.lat0 >= 0) { - fl = dl + Math.sqrt(dl * dl - 1); - } - else { - fl = dl - Math.sqrt(dl * dl - 1); - } - this.el = fl * Math.pow(t0, this.bl); - gl = 0.5 * (fl - 1 / fl); - this.gamma0 = Math.asin(Math.sin(this.alpha) / dl); - this.long0 = this.longc - Math.asin(gl * Math.tan(this.gamma0)) / this.bl; - - } - else { - //2 points method - var t1 = tsfnz(this.e, this.lat1, Math.sin(this.lat1)); - var t2 = tsfnz(this.e, this.lat2, Math.sin(this.lat2)); - if (this.lat0 >= 0) { - this.el = (dl + Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl); - } - else { - this.el = (dl - Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl); - } - var hl = Math.pow(t1, this.bl); - var ll = Math.pow(t2, this.bl); - fl = this.el / hl; - gl = 0.5 * (fl - 1 / fl); - var jl = (this.el * this.el - ll * hl) / (this.el * this.el + ll * hl); - var pl = (ll - hl) / (ll + hl); - var dlon12 = adjust_lon(this.long1 - this.long2); - this.long0 = 0.5 * (this.long1 + this.long2) - Math.atan(jl * Math.tan(0.5 * this.bl * (dlon12)) / pl) / this.bl; - this.long0 = adjust_lon(this.long0); - var dlon10 = adjust_lon(this.long1 - this.long0); - this.gamma0 = Math.atan(Math.sin(this.bl * (dlon10)) / gl); - this.alpha = Math.asin(dl * Math.sin(this.gamma0)); - } - - if (this.no_off) { - this.uc = 0; - } - else { - if (this.lat0 >= 0) { - this.uc = this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha)); - } - else { - this.uc = -1 * this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha)); - } - } - - } - - /* Oblique Mercator forward equations--mapping lat,long to x,y - ----------------------------------------------------------*/ - function forward$8(p) { - var lon = p.x; - var lat = p.y; - var dlon = adjust_lon(lon - this.long0); - var us, vs; - var con; - if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) { - if (lat > 0) { - con = -1; - } - else { - con = 1; - } - vs = this.al / this.bl * Math.log(Math.tan(FORTPI + con * this.gamma0 * 0.5)); - us = -1 * con * HALF_PI * this.al / this.bl; - } - else { - var t = tsfnz(this.e, lat, Math.sin(lat)); - var ql = this.el / Math.pow(t, this.bl); - var sl = 0.5 * (ql - 1 / ql); - var tl = 0.5 * (ql + 1 / ql); - var vl = Math.sin(this.bl * (dlon)); - var ul = (sl * Math.sin(this.gamma0) - vl * Math.cos(this.gamma0)) / tl; - if (Math.abs(Math.abs(ul) - 1) <= EPSLN) { - vs = Number.POSITIVE_INFINITY; - } - else { - vs = 0.5 * this.al * Math.log((1 - ul) / (1 + ul)) / this.bl; - } - if (Math.abs(Math.cos(this.bl * (dlon))) <= EPSLN) { - us = this.al * this.bl * (dlon); - } - else { - us = this.al * Math.atan2(sl * Math.cos(this.gamma0) + vl * Math.sin(this.gamma0), Math.cos(this.bl * dlon)) / this.bl; - } - } - - if (this.no_rot) { - p.x = this.x0 + us; - p.y = this.y0 + vs; - } - else { - - us -= this.uc; - p.x = this.x0 + vs * Math.cos(this.alpha) + us * Math.sin(this.alpha); - p.y = this.y0 + us * Math.cos(this.alpha) - vs * Math.sin(this.alpha); - } - return p; - } - - function inverse$8(p) { - var us, vs; - if (this.no_rot) { - vs = p.y - this.y0; - us = p.x - this.x0; - } - else { - vs = (p.x - this.x0) * Math.cos(this.alpha) - (p.y - this.y0) * Math.sin(this.alpha); - us = (p.y - this.y0) * Math.cos(this.alpha) + (p.x - this.x0) * Math.sin(this.alpha); - us += this.uc; - } - var qp = Math.exp(-1 * this.bl * vs / this.al); - var sp = 0.5 * (qp - 1 / qp); - var tp = 0.5 * (qp + 1 / qp); - var vp = Math.sin(this.bl * us / this.al); - var up = (vp * Math.cos(this.gamma0) + sp * Math.sin(this.gamma0)) / tp; - var ts = Math.pow(this.el / Math.sqrt((1 + up) / (1 - up)), 1 / this.bl); - if (Math.abs(up - 1) < EPSLN) { - p.x = this.long0; - p.y = HALF_PI; - } - else if (Math.abs(up + 1) < EPSLN) { - p.x = this.long0; - p.y = -1 * HALF_PI; - } - else { - p.y = phi2z(this.e, ts); - p.x = adjust_lon(this.long0 - Math.atan2(sp * Math.cos(this.gamma0) - vp * Math.sin(this.gamma0), Math.cos(this.bl * us / this.al)) / this.bl); - } - return p; - } - - var names$10 = ["Hotine_Oblique_Mercator", "Hotine Oblique Mercator", "Hotine_Oblique_Mercator_Azimuth_Natural_Origin", "Hotine_Oblique_Mercator_Azimuth_Center", "omerc"]; - var omerc = { - init: init$9, - forward: forward$8, - inverse: inverse$8, - names: names$10 - }; - - function init$10() { - - // array of: r_maj,r_min,lat1,lat2,c_lon,c_lat,false_east,false_north - //double c_lat; /* center latitude */ - //double c_lon; /* center longitude */ - //double lat1; /* first standard parallel */ - //double lat2; /* second standard parallel */ - //double r_maj; /* major axis */ - //double r_min; /* minor axis */ - //double false_east; /* x offset in meters */ - //double false_north; /* y offset in meters */ - - if (!this.lat2) { - this.lat2 = this.lat1; - } //if lat2 is not defined - if (!this.k0) { - this.k0 = 1; - } - this.x0 = this.x0 || 0; - this.y0 = this.y0 || 0; - // Standard Parallels cannot be equal and on opposite sides of the equator - if (Math.abs(this.lat1 + this.lat2) < EPSLN) { - return; - } - - var temp = this.b / this.a; - this.e = Math.sqrt(1 - temp * temp); - - var sin1 = Math.sin(this.lat1); - var cos1 = Math.cos(this.lat1); - var ms1 = msfnz(this.e, sin1, cos1); - var ts1 = tsfnz(this.e, this.lat1, sin1); - - var sin2 = Math.sin(this.lat2); - var cos2 = Math.cos(this.lat2); - var ms2 = msfnz(this.e, sin2, cos2); - var ts2 = tsfnz(this.e, this.lat2, sin2); - - var ts0 = tsfnz(this.e, this.lat0, Math.sin(this.lat0)); - - if (Math.abs(this.lat1 - this.lat2) > EPSLN) { - this.ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2); - } - else { - this.ns = sin1; - } - if (isNaN(this.ns)) { - this.ns = sin1; - } - this.f0 = ms1 / (this.ns * Math.pow(ts1, this.ns)); - this.rh = this.a * this.f0 * Math.pow(ts0, this.ns); - if (!this.title) { - this.title = "Lambert Conformal Conic"; - } - } - - // Lambert Conformal conic forward equations--mapping lat,long to x,y - // ----------------------------------------------------------------- - function forward$9(p) { - - var lon = p.x; - var lat = p.y; - - // singular cases : - if (Math.abs(2 * Math.abs(lat) - Math.PI) <= EPSLN) { - lat = sign(lat) * (HALF_PI - 2 * EPSLN); - } - - var con = Math.abs(Math.abs(lat) - HALF_PI); - var ts, rh1; - if (con > EPSLN) { - ts = tsfnz(this.e, lat, Math.sin(lat)); - rh1 = this.a * this.f0 * Math.pow(ts, this.ns); - } - else { - con = lat * this.ns; - if (con <= 0) { - return null; - } - rh1 = 0; - } - var theta = this.ns * adjust_lon(lon - this.long0); - p.x = this.k0 * (rh1 * Math.sin(theta)) + this.x0; - p.y = this.k0 * (this.rh - rh1 * Math.cos(theta)) + this.y0; - - return p; - } - - // Lambert Conformal Conic inverse equations--mapping x,y to lat/long - // ----------------------------------------------------------------- - function inverse$9(p) { - - var rh1, con, ts; - var lat, lon; - var x = (p.x - this.x0) / this.k0; - var y = (this.rh - (p.y - this.y0) / this.k0); - if (this.ns > 0) { - rh1 = Math.sqrt(x * x + y * y); - con = 1; - } - else { - rh1 = -Math.sqrt(x * x + y * y); - con = -1; - } - var theta = 0; - if (rh1 !== 0) { - theta = Math.atan2((con * x), (con * y)); - } - if ((rh1 !== 0) || (this.ns > 0)) { - con = 1 / this.ns; - ts = Math.pow((rh1 / (this.a * this.f0)), con); - lat = phi2z(this.e, ts); - if (lat === -9999) { - return null; - } - } - else { - lat = -HALF_PI; - } - lon = adjust_lon(theta / this.ns + this.long0); - - p.x = lon; - p.y = lat; - return p; - } - - var names$11 = ["Lambert Tangential Conformal Conic Projection", "Lambert_Conformal_Conic", "Lambert_Conformal_Conic_2SP", "lcc"]; - var lcc = { - init: init$10, - forward: forward$9, - inverse: inverse$9, - names: names$11 - }; - - function init$11() { - this.a = 6377397.155; - this.es = 0.006674372230614; - this.e = Math.sqrt(this.es); - if (!this.lat0) { - this.lat0 = 0.863937979737193; - } - if (!this.long0) { - this.long0 = 0.7417649320975901 - 0.308341501185665; - } - /* if scale not set default to 0.9999 */ - if (!this.k0) { - this.k0 = 0.9999; - } - this.s45 = 0.785398163397448; /* 45 */ - this.s90 = 2 * this.s45; - this.fi0 = this.lat0; - this.e2 = this.es; - this.e = Math.sqrt(this.e2); - this.alfa = Math.sqrt(1 + (this.e2 * Math.pow(Math.cos(this.fi0), 4)) / (1 - this.e2)); - this.uq = 1.04216856380474; - this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa); - this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2); - this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g; - this.k1 = this.k0; - this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2)); - this.s0 = 1.37008346281555; - this.n = Math.sin(this.s0); - this.ro0 = this.k1 * this.n0 / Math.tan(this.s0); - this.ad = this.s90 - this.uq; - } - - /* ellipsoid */ - /* calculate xy from lat/lon */ - /* Constants, identical to inverse transform function */ - function forward$10(p) { - var gfi, u, deltav, s, d, eps, ro; - var lon = p.x; - var lat = p.y; - var delta_lon = adjust_lon(lon - this.long0); - /* Transformation */ - gfi = Math.pow(((1 + this.e * Math.sin(lat)) / (1 - this.e * Math.sin(lat))), (this.alfa * this.e / 2)); - u = 2 * (Math.atan(this.k * Math.pow(Math.tan(lat / 2 + this.s45), this.alfa) / gfi) - this.s45); - deltav = -delta_lon * this.alfa; - s = Math.asin(Math.cos(this.ad) * Math.sin(u) + Math.sin(this.ad) * Math.cos(u) * Math.cos(deltav)); - d = Math.asin(Math.cos(u) * Math.sin(deltav) / Math.cos(s)); - eps = this.n * d; - ro = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(s / 2 + this.s45), this.n); - p.y = ro * Math.cos(eps) / 1; - p.x = ro * Math.sin(eps) / 1; - - if (!this.czech) { - p.y *= -1; - p.x *= -1; - } - return (p); - } - - /* calculate lat/lon from xy */ - function inverse$10(p) { - var u, deltav, s, d, eps, ro, fi1; - var ok; - - /* Transformation */ - /* revert y, x*/ - var tmp = p.x; - p.x = p.y; - p.y = tmp; - if (!this.czech) { - p.y *= -1; - p.x *= -1; - } - ro = Math.sqrt(p.x * p.x + p.y * p.y); - eps = Math.atan2(p.y, p.x); - d = eps / Math.sin(this.s0); - s = 2 * (Math.atan(Math.pow(this.ro0 / ro, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45); - u = Math.asin(Math.cos(this.ad) * Math.sin(s) - Math.sin(this.ad) * Math.cos(s) * Math.cos(d)); - deltav = Math.asin(Math.cos(s) * Math.sin(d) / Math.cos(u)); - p.x = this.long0 - deltav / this.alfa; - fi1 = u; - ok = 0; - var iter = 0; - do { - p.y = 2 * (Math.atan(Math.pow(this.k, - 1 / this.alfa) * Math.pow(Math.tan(u / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(fi1)) / (1 - this.e * Math.sin(fi1)), this.e / 2)) - this.s45); - if (Math.abs(fi1 - p.y) < 0.0000000001) { - ok = 1; - } - fi1 = p.y; - iter += 1; - } while (ok === 0 && iter < 15); - if (iter >= 15) { - return null; - } - - return (p); - } - - var names$12 = ["Krovak", "krovak"]; - var krovak = { - init: init$11, - forward: forward$10, - inverse: inverse$10, - names: names$12 - }; - - var mlfn = function(e0, e1, e2, e3, phi) { - return (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi)); - }; - - var e0fn = function(x) { - return (1 - 0.25 * x * (1 + x / 16 * (3 + 1.25 * x))); - }; - - var e1fn = function(x) { - return (0.375 * x * (1 + 0.25 * x * (1 + 0.46875 * x))); - }; - - var e2fn = function(x) { - return (0.05859375 * x * x * (1 + 0.75 * x)); - }; - - var e3fn = function(x) { - return (x * x * x * (35 / 3072)); - }; - - var gN = function(a, e, sinphi) { - var temp = e * sinphi; - return a / Math.sqrt(1 - temp * temp); - }; - - var adjust_lat = function(x) { - return (Math.abs(x) < HALF_PI) ? x : (x - (sign(x) * Math.PI)); - }; - - var imlfn = function(ml, e0, e1, e2, e3) { - var phi; - var dphi; - - phi = ml / e0; - for (var i = 0; i < 15; i++) { - dphi = (ml - (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi))) / (e0 - 2 * e1 * Math.cos(2 * phi) + 4 * e2 * Math.cos(4 * phi) - 6 * e3 * Math.cos(6 * phi)); - phi += dphi; - if (Math.abs(dphi) <= 0.0000000001) { - return phi; - } - } - - //..reportError("IMLFN-CONV:Latitude failed to converge after 15 iterations"); - return NaN; - }; - - function init$12() { - if (!this.sphere) { - this.e0 = e0fn(this.es); - this.e1 = e1fn(this.es); - this.e2 = e2fn(this.es); - this.e3 = e3fn(this.es); - this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); - } - } - - /* Cassini forward equations--mapping lat,long to x,y - -----------------------------------------------------------------------*/ - function forward$11(p) { - - /* Forward equations - -----------------*/ - var x, y; - var lam = p.x; - var phi = p.y; - lam = adjust_lon(lam - this.long0); - - if (this.sphere) { - x = this.a * Math.asin(Math.cos(phi) * Math.sin(lam)); - y = this.a * (Math.atan2(Math.tan(phi), Math.cos(lam)) - this.lat0); - } - else { - //ellipsoid - var sinphi = Math.sin(phi); - var cosphi = Math.cos(phi); - var nl = gN(this.a, this.e, sinphi); - var tl = Math.tan(phi) * Math.tan(phi); - var al = lam * Math.cos(phi); - var asq = al * al; - var cl = this.es * cosphi * cosphi / (1 - this.es); - var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi); - - x = nl * al * (1 - asq * tl * (1 / 6 - (8 - tl + 8 * cl) * asq / 120)); - y = ml - this.ml0 + nl * sinphi / cosphi * asq * (0.5 + (5 - tl + 6 * cl) * asq / 24); - - - } - - p.x = x + this.x0; - p.y = y + this.y0; - return p; - } - - /* Inverse equations - -----------------*/ - function inverse$11(p) { - p.x -= this.x0; - p.y -= this.y0; - var x = p.x / this.a; - var y = p.y / this.a; - var phi, lam; - - if (this.sphere) { - var dd = y + this.lat0; - phi = Math.asin(Math.sin(dd) * Math.cos(x)); - lam = Math.atan2(Math.tan(x), Math.cos(dd)); - } - else { - /* ellipsoid */ - var ml1 = this.ml0 / this.a + y; - var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3); - if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) { - p.x = this.long0; - p.y = HALF_PI; - if (y < 0) { - p.y *= -1; - } - return p; - } - var nl1 = gN(this.a, this.e, Math.sin(phi1)); - - var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es); - var tl1 = Math.pow(Math.tan(phi1), 2); - var dl = x * this.a / nl1; - var dsq = dl * dl; - phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24); - lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1); - - } - - p.x = adjust_lon(lam + this.long0); - p.y = adjust_lat(phi); - return p; - - } - - var names$13 = ["Cassini", "Cassini_Soldner", "cass"]; - var cass = { - init: init$12, - forward: forward$11, - inverse: inverse$11, - names: names$13 - }; - - var qsfnz = function(eccent, sinphi) { - var con; - if (eccent > 1.0e-7) { - con = eccent * sinphi; - return ((1 - eccent * eccent) * (sinphi / (1 - con * con) - (0.5 / eccent) * Math.log((1 - con) / (1 + con)))); - } - else { - return (2 * sinphi); - } - }; - - /* - reference - "New Equal-Area Map Projections for Noncircular Regions", John P. Snyder, - The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355. - */ - - var S_POLE = 1; - - var N_POLE = 2; - var EQUIT = 3; - var OBLIQ = 4; - - /* Initialize the Lambert Azimuthal Equal Area projection - ------------------------------------------------------*/ - function init$13() { - var t = Math.abs(this.lat0); - if (Math.abs(t - HALF_PI) < EPSLN) { - this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE; - } - else if (Math.abs(t) < EPSLN) { - this.mode = this.EQUIT; - } - else { - this.mode = this.OBLIQ; - } - if (this.es > 0) { - var sinphi; - - this.qp = qsfnz(this.e, 1); - this.mmf = 0.5 / (1 - this.es); - this.apa = authset(this.es); - switch (this.mode) { - case this.N_POLE: - this.dd = 1; - break; - case this.S_POLE: - this.dd = 1; - break; - case this.EQUIT: - this.rq = Math.sqrt(0.5 * this.qp); - this.dd = 1 / this.rq; - this.xmf = 1; - this.ymf = 0.5 * this.qp; - break; - case this.OBLIQ: - this.rq = Math.sqrt(0.5 * this.qp); - sinphi = Math.sin(this.lat0); - this.sinb1 = qsfnz(this.e, sinphi) / this.qp; - this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1); - this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * sinphi * sinphi) * this.rq * this.cosb1); - this.ymf = (this.xmf = this.rq) / this.dd; - this.xmf *= this.dd; - break; - } - } - else { - if (this.mode === this.OBLIQ) { - this.sinph0 = Math.sin(this.lat0); - this.cosph0 = Math.cos(this.lat0); - } - } - } - - /* Lambert Azimuthal Equal Area forward equations--mapping lat,long to x,y - -----------------------------------------------------------------------*/ - function forward$12(p) { - - /* Forward equations - -----------------*/ - var x, y, coslam, sinlam, sinphi, q, sinb, cosb, b, cosphi; - var lam = p.x; - var phi = p.y; - - lam = adjust_lon(lam - this.long0); - if (this.sphere) { - sinphi = Math.sin(phi); - cosphi = Math.cos(phi); - coslam = Math.cos(lam); - if (this.mode === this.OBLIQ || this.mode === this.EQUIT) { - y = (this.mode === this.EQUIT) ? 1 + cosphi * coslam : 1 + this.sinph0 * sinphi + this.cosph0 * cosphi * coslam; - if (y <= EPSLN) { - return null; - } - y = Math.sqrt(2 / y); - x = y * cosphi * Math.sin(lam); - y *= (this.mode === this.EQUIT) ? sinphi : this.cosph0 * sinphi - this.sinph0 * cosphi * coslam; - } - else if (this.mode === this.N_POLE || this.mode === this.S_POLE) { - if (this.mode === this.N_POLE) { - coslam = -coslam; - } - if (Math.abs(phi + this.phi0) < EPSLN) { - return null; - } - y = FORTPI - phi * 0.5; - y = 2 * ((this.mode === this.S_POLE) ? Math.cos(y) : Math.sin(y)); - x = y * Math.sin(lam); - y *= coslam; - } - } - else { - sinb = 0; - cosb = 0; - b = 0; - coslam = Math.cos(lam); - sinlam = Math.sin(lam); - sinphi = Math.sin(phi); - q = qsfnz(this.e, sinphi); - if (this.mode === this.OBLIQ || this.mode === this.EQUIT) { - sinb = q / this.qp; - cosb = Math.sqrt(1 - sinb * sinb); - } - switch (this.mode) { - case this.OBLIQ: - b = 1 + this.sinb1 * sinb + this.cosb1 * cosb * coslam; - break; - case this.EQUIT: - b = 1 + cosb * coslam; - break; - case this.N_POLE: - b = HALF_PI + phi; - q = this.qp - q; - break; - case this.S_POLE: - b = phi - HALF_PI; - q = this.qp + q; - break; - } - if (Math.abs(b) < EPSLN) { - return null; - } - switch (this.mode) { - case this.OBLIQ: - case this.EQUIT: - b = Math.sqrt(2 / b); - if (this.mode === this.OBLIQ) { - y = this.ymf * b * (this.cosb1 * sinb - this.sinb1 * cosb * coslam); - } - else { - y = (b = Math.sqrt(2 / (1 + cosb * coslam))) * sinb * this.ymf; - } - x = this.xmf * b * cosb * sinlam; - break; - case this.N_POLE: - case this.S_POLE: - if (q >= 0) { - x = (b = Math.sqrt(q)) * sinlam; - y = coslam * ((this.mode === this.S_POLE) ? b : -b); - } - else { - x = y = 0; - } - break; - } - } - - p.x = this.a * x + this.x0; - p.y = this.a * y + this.y0; - return p; - } - - /* Inverse equations - -----------------*/ - function inverse$12(p) { - p.x -= this.x0; - p.y -= this.y0; - var x = p.x / this.a; - var y = p.y / this.a; - var lam, phi, cCe, sCe, q, rho, ab; - if (this.sphere) { - var cosz = 0, - rh, sinz = 0; - - rh = Math.sqrt(x * x + y * y); - phi = rh * 0.5; - if (phi > 1) { - return null; - } - phi = 2 * Math.asin(phi); - if (this.mode === this.OBLIQ || this.mode === this.EQUIT) { - sinz = Math.sin(phi); - cosz = Math.cos(phi); - } - switch (this.mode) { - case this.EQUIT: - phi = (Math.abs(rh) <= EPSLN) ? 0 : Math.asin(y * sinz / rh); - x *= sinz; - y = cosz * rh; - break; - case this.OBLIQ: - phi = (Math.abs(rh) <= EPSLN) ? this.phi0 : Math.asin(cosz * this.sinph0 + y * sinz * this.cosph0 / rh); - x *= sinz * this.cosph0; - y = (cosz - Math.sin(phi) * this.sinph0) * rh; - break; - case this.N_POLE: - y = -y; - phi = HALF_PI - phi; - break; - case this.S_POLE: - phi -= HALF_PI; - break; - } - lam = (y === 0 && (this.mode === this.EQUIT || this.mode === this.OBLIQ)) ? 0 : Math.atan2(x, y); - } - else { - ab = 0; - if (this.mode === this.OBLIQ || this.mode === this.EQUIT) { - x /= this.dd; - y *= this.dd; - rho = Math.sqrt(x * x + y * y); - if (rho < EPSLN) { - p.x = 0; - p.y = this.phi0; - return p; - } - sCe = 2 * Math.asin(0.5 * rho / this.rq); - cCe = Math.cos(sCe); - x *= (sCe = Math.sin(sCe)); - if (this.mode === this.OBLIQ) { - ab = cCe * this.sinb1 + y * sCe * this.cosb1 / rho; - q = this.qp * ab; - y = rho * this.cosb1 * cCe - y * this.sinb1 * sCe; - } - else { - ab = y * sCe / rho; - q = this.qp * ab; - y = rho * cCe; - } - } - else if (this.mode === this.N_POLE || this.mode === this.S_POLE) { - if (this.mode === this.N_POLE) { - y = -y; - } - q = (x * x + y * y); - if (!q) { - p.x = 0; - p.y = this.phi0; - return p; - } - ab = 1 - q / this.qp; - if (this.mode === this.S_POLE) { - ab = -ab; - } - } - lam = Math.atan2(x, y); - phi = authlat(Math.asin(ab), this.apa); - } - - p.x = adjust_lon(this.long0 + lam); - p.y = phi; - return p; - } - - /* determine latitude from authalic latitude */ - var P00 = 0.33333333333333333333; - - var P01 = 0.17222222222222222222; - var P02 = 0.10257936507936507936; - var P10 = 0.06388888888888888888; - var P11 = 0.06640211640211640211; - var P20 = 0.01641501294219154443; - - function authset(es) { - var t; - var APA = []; - APA[0] = es * P00; - t = es * es; - APA[0] += t * P01; - APA[1] = t * P10; - t *= es; - APA[0] += t * P02; - APA[1] += t * P11; - APA[2] = t * P20; - return APA; - } - - function authlat(beta, APA) { - var t = beta + beta; - return (beta + APA[0] * Math.sin(t) + APA[1] * Math.sin(t + t) + APA[2] * Math.sin(t + t + t)); - } - - var names$14 = ["Lambert Azimuthal Equal Area", "Lambert_Azimuthal_Equal_Area", "laea"]; - var laea = { - init: init$13, - forward: forward$12, - inverse: inverse$12, - names: names$14, - S_POLE: S_POLE, - N_POLE: N_POLE, - EQUIT: EQUIT, - OBLIQ: OBLIQ - }; - - var asinz = function(x) { - if (Math.abs(x) > 1) { - x = (x > 1) ? 1 : -1; - } - return Math.asin(x); - }; - - function init$14() { - - if (Math.abs(this.lat1 + this.lat2) < EPSLN) { - return; - } - this.temp = this.b / this.a; - this.es = 1 - Math.pow(this.temp, 2); - this.e3 = Math.sqrt(this.es); - - this.sin_po = Math.sin(this.lat1); - this.cos_po = Math.cos(this.lat1); - this.t1 = this.sin_po; - this.con = this.sin_po; - this.ms1 = msfnz(this.e3, this.sin_po, this.cos_po); - this.qs1 = qsfnz(this.e3, this.sin_po, this.cos_po); - - this.sin_po = Math.sin(this.lat2); - this.cos_po = Math.cos(this.lat2); - this.t2 = this.sin_po; - this.ms2 = msfnz(this.e3, this.sin_po, this.cos_po); - this.qs2 = qsfnz(this.e3, this.sin_po, this.cos_po); - - this.sin_po = Math.sin(this.lat0); - this.cos_po = Math.cos(this.lat0); - this.t3 = this.sin_po; - this.qs0 = qsfnz(this.e3, this.sin_po, this.cos_po); - - if (Math.abs(this.lat1 - this.lat2) > EPSLN) { - this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1); - } - else { - this.ns0 = this.con; - } - this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1; - this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0; - } - - /* Albers Conical Equal Area forward equations--mapping lat,long to x,y - -------------------------------------------------------------------*/ - function forward$13(p) { - - var lon = p.x; - var lat = p.y; - - this.sin_phi = Math.sin(lat); - this.cos_phi = Math.cos(lat); - - var qs = qsfnz(this.e3, this.sin_phi, this.cos_phi); - var rh1 = this.a * Math.sqrt(this.c - this.ns0 * qs) / this.ns0; - var theta = this.ns0 * adjust_lon(lon - this.long0); - var x = rh1 * Math.sin(theta) + this.x0; - var y = this.rh - rh1 * Math.cos(theta) + this.y0; - - p.x = x; - p.y = y; - return p; - } - - function inverse$13(p) { - var rh1, qs, con, theta, lon, lat; - - p.x -= this.x0; - p.y = this.rh - p.y + this.y0; - if (this.ns0 >= 0) { - rh1 = Math.sqrt(p.x * p.x + p.y * p.y); - con = 1; - } - else { - rh1 = -Math.sqrt(p.x * p.x + p.y * p.y); - con = -1; - } - theta = 0; - if (rh1 !== 0) { - theta = Math.atan2(con * p.x, con * p.y); - } - con = rh1 * this.ns0 / this.a; - if (this.sphere) { - lat = Math.asin((this.c - con * con) / (2 * this.ns0)); - } - else { - qs = (this.c - con * con) / this.ns0; - lat = this.phi1z(this.e3, qs); - } - - lon = adjust_lon(theta / this.ns0 + this.long0); - p.x = lon; - p.y = lat; - return p; - } - - /* Function to compute phi1, the latitude for the inverse of the - Albers Conical Equal-Area projection. - -------------------------------------------*/ - function phi1z(eccent, qs) { - var sinphi, cosphi, con, com, dphi; - var phi = asinz(0.5 * qs); - if (eccent < EPSLN) { - return phi; - } - - var eccnts = eccent * eccent; - for (var i = 1; i <= 25; i++) { - sinphi = Math.sin(phi); - cosphi = Math.cos(phi); - con = eccent * sinphi; - com = 1 - con * con; - dphi = 0.5 * com * com / cosphi * (qs / (1 - eccnts) - sinphi / com + 0.5 / eccent * Math.log((1 - con) / (1 + con))); - phi = phi + dphi; - if (Math.abs(dphi) <= 1e-7) { - return phi; - } - } - return null; - } - - var names$15 = ["Albers_Conic_Equal_Area", "Albers", "aea"]; - var aea = { - init: init$14, - forward: forward$13, - inverse: inverse$13, - names: names$15, - phi1z: phi1z - }; - - /* - reference: - Wolfram Mathworld "Gnomonic Projection" - http://mathworld.wolfram.com/GnomonicProjection.html - Accessed: 12th November 2009 - */ - function init$15() { - - /* Place parameters in static storage for common use - -------------------------------------------------*/ - this.sin_p14 = Math.sin(this.lat0); - this.cos_p14 = Math.cos(this.lat0); - // Approximation for projecting points to the horizon (infinity) - this.infinity_dist = 1000 * this.a; - this.rc = 1; - } - - /* Gnomonic forward equations--mapping lat,long to x,y - ---------------------------------------------------*/ - function forward$14(p) { - var sinphi, cosphi; /* sin and cos value */ - var dlon; /* delta longitude value */ - var coslon; /* cos of longitude */ - var ksp; /* scale factor */ - var g; - var x, y; - var lon = p.x; - var lat = p.y; - /* Forward equations - -----------------*/ - dlon = adjust_lon(lon - this.long0); - - sinphi = Math.sin(lat); - cosphi = Math.cos(lat); - - coslon = Math.cos(dlon); - g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon; - ksp = 1; - if ((g > 0) || (Math.abs(g) <= EPSLN)) { - x = this.x0 + this.a * ksp * cosphi * Math.sin(dlon) / g; - y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon) / g; - } - else { - - // Point is in the opposing hemisphere and is unprojectable - // We still need to return a reasonable point, so we project - // to infinity, on a bearing - // equivalent to the northern hemisphere equivalent - // This is a reasonable approximation for short shapes and lines that - // straddle the horizon. - - x = this.x0 + this.infinity_dist * cosphi * Math.sin(dlon); - y = this.y0 + this.infinity_dist * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon); - - } - p.x = x; - p.y = y; - return p; - } - - function inverse$14(p) { - var rh; /* Rho */ - var sinc, cosc; - var c; - var lon, lat; - - /* Inverse equations - -----------------*/ - p.x = (p.x - this.x0) / this.a; - p.y = (p.y - this.y0) / this.a; - - p.x /= this.k0; - p.y /= this.k0; - - if ((rh = Math.sqrt(p.x * p.x + p.y * p.y))) { - c = Math.atan2(rh, this.rc); - sinc = Math.sin(c); - cosc = Math.cos(c); - - lat = asinz(cosc * this.sin_p14 + (p.y * sinc * this.cos_p14) / rh); - lon = Math.atan2(p.x * sinc, rh * this.cos_p14 * cosc - p.y * this.sin_p14 * sinc); - lon = adjust_lon(this.long0 + lon); - } - else { - lat = this.phic0; - lon = 0; - } - - p.x = lon; - p.y = lat; - return p; - } - - var names$16 = ["gnom"]; - var gnom = { - init: init$15, - forward: forward$14, - inverse: inverse$14, - names: names$16 - }; - - var iqsfnz = function(eccent, q) { - var temp = 1 - (1 - eccent * eccent) / (2 * eccent) * Math.log((1 - eccent) / (1 + eccent)); - if (Math.abs(Math.abs(q) - temp) < 1.0E-6) { - if (q < 0) { - return (-1 * HALF_PI); - } - else { - return HALF_PI; - } - } - //var phi = 0.5* q/(1-eccent*eccent); - var phi = Math.asin(0.5 * q); - var dphi; - var sin_phi; - var cos_phi; - var con; - for (var i = 0; i < 30; i++) { - sin_phi = Math.sin(phi); - cos_phi = Math.cos(phi); - con = eccent * sin_phi; - dphi = Math.pow(1 - con * con, 2) / (2 * cos_phi) * (q / (1 - eccent * eccent) - sin_phi / (1 - con * con) + 0.5 / eccent * Math.log((1 - con) / (1 + con))); - phi += dphi; - if (Math.abs(dphi) <= 0.0000000001) { - return phi; - } - } - - //console.log("IQSFN-CONV:Latitude failed to converge after 30 iterations"); - return NaN; - }; - - /* - reference: - "Cartographic Projection Procedures for the UNIX Environment- - A User's Manual" by Gerald I. Evenden, - USGS Open File Report 90-284and Release 4 Interim Reports (2003) - */ - function init$16() { - //no-op - if (!this.sphere) { - this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)); - } - } - - /* Cylindrical Equal Area forward equations--mapping lat,long to x,y - ------------------------------------------------------------*/ - function forward$15(p) { - var lon = p.x; - var lat = p.y; - var x, y; - /* Forward equations - -----------------*/ - var dlon = adjust_lon(lon - this.long0); - if (this.sphere) { - x = this.x0 + this.a * dlon * Math.cos(this.lat_ts); - y = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts); - } - else { - var qs = qsfnz(this.e, Math.sin(lat)); - x = this.x0 + this.a * this.k0 * dlon; - y = this.y0 + this.a * qs * 0.5 / this.k0; - } - - p.x = x; - p.y = y; - return p; - } - - /* Cylindrical Equal Area inverse equations--mapping x,y to lat/long - ------------------------------------------------------------*/ - function inverse$15(p) { - p.x -= this.x0; - p.y -= this.y0; - var lon, lat; - - if (this.sphere) { - lon = adjust_lon(this.long0 + (p.x / this.a) / Math.cos(this.lat_ts)); - lat = Math.asin((p.y / this.a) * Math.cos(this.lat_ts)); - } - else { - lat = iqsfnz(this.e, 2 * p.y * this.k0 / this.a); - lon = adjust_lon(this.long0 + p.x / (this.a * this.k0)); - } - - p.x = lon; - p.y = lat; - return p; - } - - var names$17 = ["cea"]; - var cea = { - init: init$16, - forward: forward$15, - inverse: inverse$15, - names: names$17 - }; - - function init$17() { - - this.x0 = this.x0 || 0; - this.y0 = this.y0 || 0; - this.lat0 = this.lat0 || 0; - this.long0 = this.long0 || 0; - this.lat_ts = this.lat_ts || 0; - this.title = this.title || "Equidistant Cylindrical (Plate Carre)"; - - this.rc = Math.cos(this.lat_ts); - } - - // forward equations--mapping lat,long to x,y - // ----------------------------------------------------------------- - function forward$16(p) { - - var lon = p.x; - var lat = p.y; - - var dlon = adjust_lon(lon - this.long0); - var dlat = adjust_lat(lat - this.lat0); - p.x = this.x0 + (this.a * dlon * this.rc); - p.y = this.y0 + (this.a * dlat); - return p; - } - - // inverse equations--mapping x,y to lat/long - // ----------------------------------------------------------------- - function inverse$16(p) { - - var x = p.x; - var y = p.y; - - p.x = adjust_lon(this.long0 + ((x - this.x0) / (this.a * this.rc))); - p.y = adjust_lat(this.lat0 + ((y - this.y0) / (this.a))); - return p; - } - - var names$18 = ["Equirectangular", "Equidistant_Cylindrical", "eqc"]; - var eqc = { - init: init$17, - forward: forward$16, - inverse: inverse$16, - names: names$18 - }; - - var MAX_ITER$2 = 20; - - function init$18() { - /* Place parameters in static storage for common use - -------------------------------------------------*/ - this.temp = this.b / this.a; - this.es = 1 - Math.pow(this.temp, 2); // devait etre dans tmerc.js mais n y est pas donc je commente sinon retour de valeurs nulles - this.e = Math.sqrt(this.es); - this.e0 = e0fn(this.es); - this.e1 = e1fn(this.es); - this.e2 = e2fn(this.es); - this.e3 = e3fn(this.es); - this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); //si que des zeros le calcul ne se fait pas - } - - /* Polyconic forward equations--mapping lat,long to x,y - ---------------------------------------------------*/ - function forward$17(p) { - var lon = p.x; - var lat = p.y; - var x, y, el; - var dlon = adjust_lon(lon - this.long0); - el = dlon * Math.sin(lat); - if (this.sphere) { - if (Math.abs(lat) <= EPSLN) { - x = this.a * dlon; - y = -1 * this.a * this.lat0; - } - else { - x = this.a * Math.sin(el) / Math.tan(lat); - y = this.a * (adjust_lat(lat - this.lat0) + (1 - Math.cos(el)) / Math.tan(lat)); - } - } - else { - if (Math.abs(lat) <= EPSLN) { - x = this.a * dlon; - y = -1 * this.ml0; - } - else { - var nl = gN(this.a, this.e, Math.sin(lat)) / Math.tan(lat); - x = nl * Math.sin(el); - y = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat) - this.ml0 + nl * (1 - Math.cos(el)); - } - - } - p.x = x + this.x0; - p.y = y + this.y0; - return p; - } - - /* Inverse equations - -----------------*/ - function inverse$17(p) { - var lon, lat, x, y, i; - var al, bl; - var phi, dphi; - x = p.x - this.x0; - y = p.y - this.y0; - - if (this.sphere) { - if (Math.abs(y + this.a * this.lat0) <= EPSLN) { - lon = adjust_lon(x / this.a + this.long0); - lat = 0; - } - else { - al = this.lat0 + y / this.a; - bl = x * x / this.a / this.a + al * al; - phi = al; - var tanphi; - for (i = MAX_ITER$2; i; --i) { - tanphi = Math.tan(phi); - dphi = -1 * (al * (phi * tanphi + 1) - phi - 0.5 * (phi * phi + bl) * tanphi) / ((phi - al) / tanphi - 1); - phi += dphi; - if (Math.abs(dphi) <= EPSLN) { - lat = phi; - break; - } - } - lon = adjust_lon(this.long0 + (Math.asin(x * Math.tan(phi) / this.a)) / Math.sin(lat)); - } - } - else { - if (Math.abs(y + this.ml0) <= EPSLN) { - lat = 0; - lon = adjust_lon(this.long0 + x / this.a); - } - else { - - al = (this.ml0 + y) / this.a; - bl = x * x / this.a / this.a + al * al; - phi = al; - var cl, mln, mlnp, ma; - var con; - for (i = MAX_ITER$2; i; --i) { - con = this.e * Math.sin(phi); - cl = Math.sqrt(1 - con * con) * Math.tan(phi); - mln = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi); - mlnp = this.e0 - 2 * this.e1 * Math.cos(2 * phi) + 4 * this.e2 * Math.cos(4 * phi) - 6 * this.e3 * Math.cos(6 * phi); - ma = mln / this.a; - dphi = (al * (cl * ma + 1) - ma - 0.5 * cl * (ma * ma + bl)) / (this.es * Math.sin(2 * phi) * (ma * ma + bl - 2 * al * ma) / (4 * cl) + (al - ma) * (cl * mlnp - 2 / Math.sin(2 * phi)) - mlnp); - phi -= dphi; - if (Math.abs(dphi) <= EPSLN) { - lat = phi; - break; - } - } - - //lat=phi4z(this.e,this.e0,this.e1,this.e2,this.e3,al,bl,0,0); - cl = Math.sqrt(1 - this.es * Math.pow(Math.sin(lat), 2)) * Math.tan(lat); - lon = adjust_lon(this.long0 + Math.asin(x * cl / this.a) / Math.sin(lat)); - } - } - - p.x = lon; - p.y = lat; - return p; - } - - var names$19 = ["Polyconic", "poly"]; - var poly = { - init: init$18, - forward: forward$17, - inverse: inverse$17, - names: names$19 - }; - - /* - reference - Department of Land and Survey Technical Circular 1973/32 - http://www.linz.govt.nz/docs/miscellaneous/nz-map-definition.pdf - OSG Technical Report 4.1 - http://www.linz.govt.nz/docs/miscellaneous/nzmg.pdf - */ - - /** - * iterations: Number of iterations to refine inverse transform. - * 0 -> km accuracy - * 1 -> m accuracy -- suitable for most mapping applications - * 2 -> mm accuracy - */ - - - function init$19() { - this.A = []; - this.A[1] = 0.6399175073; - this.A[2] = -0.1358797613; - this.A[3] = 0.063294409; - this.A[4] = -0.02526853; - this.A[5] = 0.0117879; - this.A[6] = -0.0055161; - this.A[7] = 0.0026906; - this.A[8] = -0.001333; - this.A[9] = 0.00067; - this.A[10] = -0.00034; - - this.B_re = []; - this.B_im = []; - this.B_re[1] = 0.7557853228; - this.B_im[1] = 0; - this.B_re[2] = 0.249204646; - this.B_im[2] = 0.003371507; - this.B_re[3] = -0.001541739; - this.B_im[3] = 0.041058560; - this.B_re[4] = -0.10162907; - this.B_im[4] = 0.01727609; - this.B_re[5] = -0.26623489; - this.B_im[5] = -0.36249218; - this.B_re[6] = -0.6870983; - this.B_im[6] = -1.1651967; - - this.C_re = []; - this.C_im = []; - this.C_re[1] = 1.3231270439; - this.C_im[1] = 0; - this.C_re[2] = -0.577245789; - this.C_im[2] = -0.007809598; - this.C_re[3] = 0.508307513; - this.C_im[3] = -0.112208952; - this.C_re[4] = -0.15094762; - this.C_im[4] = 0.18200602; - this.C_re[5] = 1.01418179; - this.C_im[5] = 1.64497696; - this.C_re[6] = 1.9660549; - this.C_im[6] = 2.5127645; - - this.D = []; - this.D[1] = 1.5627014243; - this.D[2] = 0.5185406398; - this.D[3] = -0.03333098; - this.D[4] = -0.1052906; - this.D[5] = -0.0368594; - this.D[6] = 0.007317; - this.D[7] = 0.01220; - this.D[8] = 0.00394; - this.D[9] = -0.0013; - } - - /** - New Zealand Map Grid Forward - long/lat to x/y - long/lat in radians - */ - function forward$18(p) { - var n; - var lon = p.x; - var lat = p.y; - - var delta_lat = lat - this.lat0; - var delta_lon = lon - this.long0; - - // 1. Calculate d_phi and d_psi ... // and d_lambda - // For this algorithm, delta_latitude is in seconds of arc x 10-5, so we need to scale to those units. Longitude is radians. - var d_phi = delta_lat / SEC_TO_RAD * 1E-5; - var d_lambda = delta_lon; - var d_phi_n = 1; // d_phi^0 - - var d_psi = 0; - for (n = 1; n <= 10; n++) { - d_phi_n = d_phi_n * d_phi; - d_psi = d_psi + this.A[n] * d_phi_n; - } - - // 2. Calculate theta - var th_re = d_psi; - var th_im = d_lambda; - - // 3. Calculate z - var th_n_re = 1; - var th_n_im = 0; // theta^0 - var th_n_re1; - var th_n_im1; - - var z_re = 0; - var z_im = 0; - for (n = 1; n <= 6; n++) { - th_n_re1 = th_n_re * th_re - th_n_im * th_im; - th_n_im1 = th_n_im * th_re + th_n_re * th_im; - th_n_re = th_n_re1; - th_n_im = th_n_im1; - z_re = z_re + this.B_re[n] * th_n_re - this.B_im[n] * th_n_im; - z_im = z_im + this.B_im[n] * th_n_re + this.B_re[n] * th_n_im; - } - - // 4. Calculate easting and northing - p.x = (z_im * this.a) + this.x0; - p.y = (z_re * this.a) + this.y0; - - return p; - } - - /** - New Zealand Map Grid Inverse - x/y to long/lat - */ - function inverse$18(p) { - var n; - var x = p.x; - var y = p.y; - - var delta_x = x - this.x0; - var delta_y = y - this.y0; - - // 1. Calculate z - var z_re = delta_y / this.a; - var z_im = delta_x / this.a; - - // 2a. Calculate theta - first approximation gives km accuracy - var z_n_re = 1; - var z_n_im = 0; // z^0 - var z_n_re1; - var z_n_im1; - - var th_re = 0; - var th_im = 0; - for (n = 1; n <= 6; n++) { - z_n_re1 = z_n_re * z_re - z_n_im * z_im; - z_n_im1 = z_n_im * z_re + z_n_re * z_im; - z_n_re = z_n_re1; - z_n_im = z_n_im1; - th_re = th_re + this.C_re[n] * z_n_re - this.C_im[n] * z_n_im; - th_im = th_im + this.C_im[n] * z_n_re + this.C_re[n] * z_n_im; - } - - // 2b. Iterate to refine the accuracy of the calculation - // 0 iterations gives km accuracy - // 1 iteration gives m accuracy -- good enough for most mapping applications - // 2 iterations bives mm accuracy - for (var i = 0; i < this.iterations; i++) { - var th_n_re = th_re; - var th_n_im = th_im; - var th_n_re1; - var th_n_im1; - - var num_re = z_re; - var num_im = z_im; - for (n = 2; n <= 6; n++) { - th_n_re1 = th_n_re * th_re - th_n_im * th_im; - th_n_im1 = th_n_im * th_re + th_n_re * th_im; - th_n_re = th_n_re1; - th_n_im = th_n_im1; - num_re = num_re + (n - 1) * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im); - num_im = num_im + (n - 1) * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im); - } - - th_n_re = 1; - th_n_im = 0; - var den_re = this.B_re[1]; - var den_im = this.B_im[1]; - for (n = 2; n <= 6; n++) { - th_n_re1 = th_n_re * th_re - th_n_im * th_im; - th_n_im1 = th_n_im * th_re + th_n_re * th_im; - th_n_re = th_n_re1; - th_n_im = th_n_im1; - den_re = den_re + n * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im); - den_im = den_im + n * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im); - } - - // Complex division - var den2 = den_re * den_re + den_im * den_im; - th_re = (num_re * den_re + num_im * den_im) / den2; - th_im = (num_im * den_re - num_re * den_im) / den2; - } - - // 3. Calculate d_phi ... // and d_lambda - var d_psi = th_re; - var d_lambda = th_im; - var d_psi_n = 1; // d_psi^0 - - var d_phi = 0; - for (n = 1; n <= 9; n++) { - d_psi_n = d_psi_n * d_psi; - d_phi = d_phi + this.D[n] * d_psi_n; - } - - // 4. Calculate latitude and longitude - // d_phi is calcuated in second of arc * 10^-5, so we need to scale back to radians. d_lambda is in radians. - var lat = this.lat0 + (d_phi * SEC_TO_RAD * 1E5); - var lon = this.long0 + d_lambda; - - p.x = lon; - p.y = lat; - - return p; - } - - var names$20 = ["New_Zealand_Map_Grid", "nzmg"]; - var nzmg = { - init: init$19, - forward: forward$18, - inverse: inverse$18, - names: names$20 - }; - - /* - reference - "New Equal-Area Map Projections for Noncircular Regions", John P. Snyder, - The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355. - */ - - - /* Initialize the Miller Cylindrical projection - -------------------------------------------*/ - function init$20() { - //no-op - } - - /* Miller Cylindrical forward equations--mapping lat,long to x,y - ------------------------------------------------------------*/ - function forward$19(p) { - var lon = p.x; - var lat = p.y; - /* Forward equations - -----------------*/ - var dlon = adjust_lon(lon - this.long0); - var x = this.x0 + this.a * dlon; - var y = this.y0 + this.a * Math.log(Math.tan((Math.PI / 4) + (lat / 2.5))) * 1.25; - - p.x = x; - p.y = y; - return p; - } - - /* Miller Cylindrical inverse equations--mapping x,y to lat/long - ------------------------------------------------------------*/ - function inverse$19(p) { - p.x -= this.x0; - p.y -= this.y0; - - var lon = adjust_lon(this.long0 + p.x / this.a); - var lat = 2.5 * (Math.atan(Math.exp(0.8 * p.y / this.a)) - Math.PI / 4); - - p.x = lon; - p.y = lat; - return p; - } - - var names$21 = ["Miller_Cylindrical", "mill"]; - var mill = { - init: init$20, - forward: forward$19, - inverse: inverse$19, - names: names$21 - }; - - var MAX_ITER$3 = 20; - function init$21() { - /* Place parameters in static storage for common use - -------------------------------------------------*/ - - - if (!this.sphere) { - this.en = pj_enfn(this.es); - } - else { - this.n = 1; - this.m = 0; - this.es = 0; - this.C_y = Math.sqrt((this.m + 1) / this.n); - this.C_x = this.C_y / (this.m + 1); - } - - } - - /* Sinusoidal forward equations--mapping lat,long to x,y - -----------------------------------------------------*/ - function forward$20(p) { - var x, y; - var lon = p.x; - var lat = p.y; - /* Forward equations - -----------------*/ - lon = adjust_lon(lon - this.long0); - - if (this.sphere) { - if (!this.m) { - lat = this.n !== 1 ? Math.asin(this.n * Math.sin(lat)) : lat; - } - else { - var k = this.n * Math.sin(lat); - for (var i = MAX_ITER$3; i; --i) { - var V = (this.m * lat + Math.sin(lat) - k) / (this.m + Math.cos(lat)); - lat -= V; - if (Math.abs(V) < EPSLN) { - break; - } - } - } - x = this.a * this.C_x * lon * (this.m + Math.cos(lat)); - y = this.a * this.C_y * lat; - - } - else { - - var s = Math.sin(lat); - var c = Math.cos(lat); - y = this.a * pj_mlfn(lat, s, c, this.en); - x = this.a * lon * c / Math.sqrt(1 - this.es * s * s); - } - - p.x = x; - p.y = y; - return p; - } - - function inverse$20(p) { - var lat, temp, lon, s; - - p.x -= this.x0; - lon = p.x / this.a; - p.y -= this.y0; - lat = p.y / this.a; - - if (this.sphere) { - lat /= this.C_y; - lon = lon / (this.C_x * (this.m + Math.cos(lat))); - if (this.m) { - lat = asinz((this.m * lat + Math.sin(lat)) / this.n); - } - else if (this.n !== 1) { - lat = asinz(Math.sin(lat) / this.n); - } - lon = adjust_lon(lon + this.long0); - lat = adjust_lat(lat); - } - else { - lat = pj_inv_mlfn(p.y / this.a, this.es, this.en); - s = Math.abs(lat); - if (s < HALF_PI) { - s = Math.sin(lat); - temp = this.long0 + p.x * Math.sqrt(1 - this.es * s * s) / (this.a * Math.cos(lat)); - //temp = this.long0 + p.x / (this.a * Math.cos(lat)); - lon = adjust_lon(temp); - } - else if ((s - EPSLN) < HALF_PI) { - lon = this.long0; - } - } - p.x = lon; - p.y = lat; - return p; - } - - var names$22 = ["Sinusoidal", "sinu"]; - var sinu = { - init: init$21, - forward: forward$20, - inverse: inverse$20, - names: names$22 - }; - - function init$22() {} - /* Mollweide forward equations--mapping lat,long to x,y - ----------------------------------------------------*/ - function forward$21(p) { - - /* Forward equations - -----------------*/ - var lon = p.x; - var lat = p.y; - - var delta_lon = adjust_lon(lon - this.long0); - var theta = lat; - var con = Math.PI * Math.sin(lat); - - /* Iterate using the Newton-Raphson method to find theta - -----------------------------------------------------*/ - for (var i = 0; true; i++) { - var delta_theta = -(theta + Math.sin(theta) - con) / (1 + Math.cos(theta)); - theta += delta_theta; - if (Math.abs(delta_theta) < EPSLN) { - break; - } - } - theta /= 2; - - /* If the latitude is 90 deg, force the x coordinate to be "0 + false easting" - this is done here because of precision problems with "cos(theta)" - --------------------------------------------------------------------------*/ - if (Math.PI / 2 - Math.abs(lat) < EPSLN) { - delta_lon = 0; - } - var x = 0.900316316158 * this.a * delta_lon * Math.cos(theta) + this.x0; - var y = 1.4142135623731 * this.a * Math.sin(theta) + this.y0; - - p.x = x; - p.y = y; - return p; - } - - function inverse$21(p) { - var theta; - var arg; - - /* Inverse equations - -----------------*/ - p.x -= this.x0; - p.y -= this.y0; - arg = p.y / (1.4142135623731 * this.a); - - /* Because of division by zero problems, 'arg' can not be 1. Therefore - a number very close to one is used instead. - -------------------------------------------------------------------*/ - if (Math.abs(arg) > 0.999999999999) { - arg = 0.999999999999; - } - theta = Math.asin(arg); - var lon = adjust_lon(this.long0 + (p.x / (0.900316316158 * this.a * Math.cos(theta)))); - if (lon < (-Math.PI)) { - lon = -Math.PI; - } - if (lon > Math.PI) { - lon = Math.PI; - } - arg = (2 * theta + Math.sin(2 * theta)) / Math.PI; - if (Math.abs(arg) > 1) { - arg = 1; - } - var lat = Math.asin(arg); - - p.x = lon; - p.y = lat; - return p; - } - - var names$23 = ["Mollweide", "moll"]; - var moll = { - init: init$22, - forward: forward$21, - inverse: inverse$21, - names: names$23 - }; - - function init$23() { - - /* Place parameters in static storage for common use - -------------------------------------------------*/ - // Standard Parallels cannot be equal and on opposite sides of the equator - if (Math.abs(this.lat1 + this.lat2) < EPSLN) { - return; - } - this.lat2 = this.lat2 || this.lat1; - this.temp = this.b / this.a; - this.es = 1 - Math.pow(this.temp, 2); - this.e = Math.sqrt(this.es); - this.e0 = e0fn(this.es); - this.e1 = e1fn(this.es); - this.e2 = e2fn(this.es); - this.e3 = e3fn(this.es); - - this.sinphi = Math.sin(this.lat1); - this.cosphi = Math.cos(this.lat1); - - this.ms1 = msfnz(this.e, this.sinphi, this.cosphi); - this.ml1 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat1); - - if (Math.abs(this.lat1 - this.lat2) < EPSLN) { - this.ns = this.sinphi; - } - else { - this.sinphi = Math.sin(this.lat2); - this.cosphi = Math.cos(this.lat2); - this.ms2 = msfnz(this.e, this.sinphi, this.cosphi); - this.ml2 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat2); - this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1); - } - this.g = this.ml1 + this.ms1 / this.ns; - this.ml0 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); - this.rh = this.a * (this.g - this.ml0); - } - - /* Equidistant Conic forward equations--mapping lat,long to x,y - -----------------------------------------------------------*/ - function forward$22(p) { - var lon = p.x; - var lat = p.y; - var rh1; - - /* Forward equations - -----------------*/ - if (this.sphere) { - rh1 = this.a * (this.g - lat); - } - else { - var ml = mlfn(this.e0, this.e1, this.e2, this.e3, lat); - rh1 = this.a * (this.g - ml); - } - var theta = this.ns * adjust_lon(lon - this.long0); - var x = this.x0 + rh1 * Math.sin(theta); - var y = this.y0 + this.rh - rh1 * Math.cos(theta); - p.x = x; - p.y = y; - return p; - } - - /* Inverse equations - -----------------*/ - function inverse$22(p) { - p.x -= this.x0; - p.y = this.rh - p.y + this.y0; - var con, rh1, lat, lon; - if (this.ns >= 0) { - rh1 = Math.sqrt(p.x * p.x + p.y * p.y); - con = 1; - } - else { - rh1 = -Math.sqrt(p.x * p.x + p.y * p.y); - con = -1; - } - var theta = 0; - if (rh1 !== 0) { - theta = Math.atan2(con * p.x, con * p.y); - } - - if (this.sphere) { - lon = adjust_lon(this.long0 + theta / this.ns); - lat = adjust_lat(this.g - rh1 / this.a); - p.x = lon; - p.y = lat; - return p; - } - else { - var ml = this.g - rh1 / this.a; - lat = imlfn(ml, this.e0, this.e1, this.e2, this.e3); - lon = adjust_lon(this.long0 + theta / this.ns); - p.x = lon; - p.y = lat; - return p; - } - - } - - var names$24 = ["Equidistant_Conic", "eqdc"]; - var eqdc = { - init: init$23, - forward: forward$22, - inverse: inverse$22, - names: names$24 - }; - - /* Initialize the Van Der Grinten projection - ----------------------------------------*/ - function init$24() { - //this.R = 6370997; //Radius of earth - this.R = this.a; - } - - function forward$23(p) { - - var lon = p.x; - var lat = p.y; - - /* Forward equations - -----------------*/ - var dlon = adjust_lon(lon - this.long0); - var x, y; - - if (Math.abs(lat) <= EPSLN) { - x = this.x0 + this.R * dlon; - y = this.y0; - } - var theta = asinz(2 * Math.abs(lat / Math.PI)); - if ((Math.abs(dlon) <= EPSLN) || (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN)) { - x = this.x0; - if (lat >= 0) { - y = this.y0 + Math.PI * this.R * Math.tan(0.5 * theta); - } - else { - y = this.y0 + Math.PI * this.R * -Math.tan(0.5 * theta); - } - // return(OK); - } - var al = 0.5 * Math.abs((Math.PI / dlon) - (dlon / Math.PI)); - var asq = al * al; - var sinth = Math.sin(theta); - var costh = Math.cos(theta); - - var g = costh / (sinth + costh - 1); - var gsq = g * g; - var m = g * (2 / sinth - 1); - var msq = m * m; - var con = Math.PI * this.R * (al * (g - msq) + Math.sqrt(asq * (g - msq) * (g - msq) - (msq + asq) * (gsq - msq))) / (msq + asq); - if (dlon < 0) { - con = -con; - } - x = this.x0 + con; - //con = Math.abs(con / (Math.PI * this.R)); - var q = asq + g; - con = Math.PI * this.R * (m * q - al * Math.sqrt((msq + asq) * (asq + 1) - q * q)) / (msq + asq); - if (lat >= 0) { - //y = this.y0 + Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con); - y = this.y0 + con; - } - else { - //y = this.y0 - Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con); - y = this.y0 - con; - } - p.x = x; - p.y = y; - return p; - } - - /* Van Der Grinten inverse equations--mapping x,y to lat/long - ---------------------------------------------------------*/ - function inverse$23(p) { - var lon, lat; - var xx, yy, xys, c1, c2, c3; - var a1; - var m1; - var con; - var th1; - var d; - - /* inverse equations - -----------------*/ - p.x -= this.x0; - p.y -= this.y0; - con = Math.PI * this.R; - xx = p.x / con; - yy = p.y / con; - xys = xx * xx + yy * yy; - c1 = -Math.abs(yy) * (1 + xys); - c2 = c1 - 2 * yy * yy + xx * xx; - c3 = -2 * c1 + 1 + 2 * yy * yy + xys * xys; - d = yy * yy / c3 + (2 * c2 * c2 * c2 / c3 / c3 / c3 - 9 * c1 * c2 / c3 / c3) / 27; - a1 = (c1 - c2 * c2 / 3 / c3) / c3; - m1 = 2 * Math.sqrt(-a1 / 3); - con = ((3 * d) / a1) / m1; - if (Math.abs(con) > 1) { - if (con >= 0) { - con = 1; - } - else { - con = -1; - } - } - th1 = Math.acos(con) / 3; - if (p.y >= 0) { - lat = (-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI; - } - else { - lat = -(-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI; - } - - if (Math.abs(xx) < EPSLN) { - lon = this.long0; - } - else { - lon = adjust_lon(this.long0 + Math.PI * (xys - 1 + Math.sqrt(1 + 2 * (xx * xx - yy * yy) + xys * xys)) / 2 / xx); - } - - p.x = lon; - p.y = lat; - return p; - } - - var names$25 = ["Van_der_Grinten_I", "VanDerGrinten", "vandg"]; - var vandg = { - init: init$24, - forward: forward$23, - inverse: inverse$23, - names: names$25 - }; - - function init$25() { - this.sin_p12 = Math.sin(this.lat0); - this.cos_p12 = Math.cos(this.lat0); - } - - function forward$24(p) { - var lon = p.x; - var lat = p.y; - var sinphi = Math.sin(p.y); - var cosphi = Math.cos(p.y); - var dlon = adjust_lon(lon - this.long0); - var e0, e1, e2, e3, Mlp, Ml, tanphi, Nl1, Nl, psi, Az, G, H, GH, Hs, c, kp, cos_c, s, s2, s3, s4, s5; - if (this.sphere) { - if (Math.abs(this.sin_p12 - 1) <= EPSLN) { - //North Pole case - p.x = this.x0 + this.a * (HALF_PI - lat) * Math.sin(dlon); - p.y = this.y0 - this.a * (HALF_PI - lat) * Math.cos(dlon); - return p; - } - else if (Math.abs(this.sin_p12 + 1) <= EPSLN) { - //South Pole case - p.x = this.x0 + this.a * (HALF_PI + lat) * Math.sin(dlon); - p.y = this.y0 + this.a * (HALF_PI + lat) * Math.cos(dlon); - return p; - } - else { - //default case - cos_c = this.sin_p12 * sinphi + this.cos_p12 * cosphi * Math.cos(dlon); - c = Math.acos(cos_c); - kp = c / Math.sin(c); - p.x = this.x0 + this.a * kp * cosphi * Math.sin(dlon); - p.y = this.y0 + this.a * kp * (this.cos_p12 * sinphi - this.sin_p12 * cosphi * Math.cos(dlon)); - return p; - } - } - else { - e0 = e0fn(this.es); - e1 = e1fn(this.es); - e2 = e2fn(this.es); - e3 = e3fn(this.es); - if (Math.abs(this.sin_p12 - 1) <= EPSLN) { - //North Pole case - Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI); - Ml = this.a * mlfn(e0, e1, e2, e3, lat); - p.x = this.x0 + (Mlp - Ml) * Math.sin(dlon); - p.y = this.y0 - (Mlp - Ml) * Math.cos(dlon); - return p; - } - else if (Math.abs(this.sin_p12 + 1) <= EPSLN) { - //South Pole case - Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI); - Ml = this.a * mlfn(e0, e1, e2, e3, lat); - p.x = this.x0 + (Mlp + Ml) * Math.sin(dlon); - p.y = this.y0 + (Mlp + Ml) * Math.cos(dlon); - return p; - } - else { - //Default case - tanphi = sinphi / cosphi; - Nl1 = gN(this.a, this.e, this.sin_p12); - Nl = gN(this.a, this.e, sinphi); - psi = Math.atan((1 - this.es) * tanphi + this.es * Nl1 * this.sin_p12 / (Nl * cosphi)); - Az = Math.atan2(Math.sin(dlon), this.cos_p12 * Math.tan(psi) - this.sin_p12 * Math.cos(dlon)); - if (Az === 0) { - s = Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi)); - } - else if (Math.abs(Math.abs(Az) - Math.PI) <= EPSLN) { - s = -Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi)); - } - else { - s = Math.asin(Math.sin(dlon) * Math.cos(psi) / Math.sin(Az)); - } - G = this.e * this.sin_p12 / Math.sqrt(1 - this.es); - H = this.e * this.cos_p12 * Math.cos(Az) / Math.sqrt(1 - this.es); - GH = G * H; - Hs = H * H; - s2 = s * s; - s3 = s2 * s; - s4 = s3 * s; - s5 = s4 * s; - c = Nl1 * s * (1 - s2 * Hs * (1 - Hs) / 6 + s3 / 8 * GH * (1 - 2 * Hs) + s4 / 120 * (Hs * (4 - 7 * Hs) - 3 * G * G * (1 - 7 * Hs)) - s5 / 48 * GH); - p.x = this.x0 + c * Math.sin(Az); - p.y = this.y0 + c * Math.cos(Az); - return p; - } - } - - - } - - function inverse$24(p) { - p.x -= this.x0; - p.y -= this.y0; - var rh, z, sinz, cosz, lon, lat, con, e0, e1, e2, e3, Mlp, M, N1, psi, Az, cosAz, tmp, A, B, D, Ee, F; - if (this.sphere) { - rh = Math.sqrt(p.x * p.x + p.y * p.y); - if (rh > (2 * HALF_PI * this.a)) { - return; - } - z = rh / this.a; - - sinz = Math.sin(z); - cosz = Math.cos(z); - - lon = this.long0; - if (Math.abs(rh) <= EPSLN) { - lat = this.lat0; - } - else { - lat = asinz(cosz * this.sin_p12 + (p.y * sinz * this.cos_p12) / rh); - con = Math.abs(this.lat0) - HALF_PI; - if (Math.abs(con) <= EPSLN) { - if (this.lat0 >= 0) { - lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y)); - } - else { - lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y)); - } - } - else { - /*con = cosz - this.sin_p12 * Math.sin(lat); - if ((Math.abs(con) < EPSLN) && (Math.abs(p.x) < EPSLN)) { - //no-op, just keep the lon value as is - } else { - var temp = Math.atan2((p.x * sinz * this.cos_p12), (con * rh)); - lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz * this.cos_p12), (con * rh))); - }*/ - lon = adjust_lon(this.long0 + Math.atan2(p.x * sinz, rh * this.cos_p12 * cosz - p.y * this.sin_p12 * sinz)); - } - } - - p.x = lon; - p.y = lat; - return p; - } - else { - e0 = e0fn(this.es); - e1 = e1fn(this.es); - e2 = e2fn(this.es); - e3 = e3fn(this.es); - if (Math.abs(this.sin_p12 - 1) <= EPSLN) { - //North pole case - Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI); - rh = Math.sqrt(p.x * p.x + p.y * p.y); - M = Mlp - rh; - lat = imlfn(M / this.a, e0, e1, e2, e3); - lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y)); - p.x = lon; - p.y = lat; - return p; - } - else if (Math.abs(this.sin_p12 + 1) <= EPSLN) { - //South pole case - Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI); - rh = Math.sqrt(p.x * p.x + p.y * p.y); - M = rh - Mlp; - - lat = imlfn(M / this.a, e0, e1, e2, e3); - lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y)); - p.x = lon; - p.y = lat; - return p; - } - else { - //default case - rh = Math.sqrt(p.x * p.x + p.y * p.y); - Az = Math.atan2(p.x, p.y); - N1 = gN(this.a, this.e, this.sin_p12); - cosAz = Math.cos(Az); - tmp = this.e * this.cos_p12 * cosAz; - A = -tmp * tmp / (1 - this.es); - B = 3 * this.es * (1 - A) * this.sin_p12 * this.cos_p12 * cosAz / (1 - this.es); - D = rh / N1; - Ee = D - A * (1 + A) * Math.pow(D, 3) / 6 - B * (1 + 3 * A) * Math.pow(D, 4) / 24; - F = 1 - A * Ee * Ee / 2 - D * Ee * Ee * Ee / 6; - psi = Math.asin(this.sin_p12 * Math.cos(Ee) + this.cos_p12 * Math.sin(Ee) * cosAz); - lon = adjust_lon(this.long0 + Math.asin(Math.sin(Az) * Math.sin(Ee) / Math.cos(psi))); - lat = Math.atan((1 - this.es * F * this.sin_p12 / Math.sin(psi)) * Math.tan(psi) / (1 - this.es)); - p.x = lon; - p.y = lat; - return p; - } - } - - } - - var names$26 = ["Azimuthal_Equidistant", "aeqd"]; - var aeqd = { - init: init$25, - forward: forward$24, - inverse: inverse$24, - names: names$26 - }; - - function init$26() { - //double temp; /* temporary variable */ - - /* Place parameters in static storage for common use - -------------------------------------------------*/ - this.sin_p14 = Math.sin(this.lat0); - this.cos_p14 = Math.cos(this.lat0); - } - - /* Orthographic forward equations--mapping lat,long to x,y - ---------------------------------------------------*/ - function forward$25(p) { - var sinphi, cosphi; /* sin and cos value */ - var dlon; /* delta longitude value */ - var coslon; /* cos of longitude */ - var ksp; /* scale factor */ - var g, x, y; - var lon = p.x; - var lat = p.y; - /* Forward equations - -----------------*/ - dlon = adjust_lon(lon - this.long0); - - sinphi = Math.sin(lat); - cosphi = Math.cos(lat); - - coslon = Math.cos(dlon); - g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon; - ksp = 1; - if ((g > 0) || (Math.abs(g) <= EPSLN)) { - x = this.a * ksp * cosphi * Math.sin(dlon); - y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon); - } - p.x = x; - p.y = y; - return p; - } - - function inverse$25(p) { - var rh; /* height above ellipsoid */ - var z; /* angle */ - var sinz, cosz; /* sin of z and cos of z */ - var con; - var lon, lat; - /* Inverse equations - -----------------*/ - p.x -= this.x0; - p.y -= this.y0; - rh = Math.sqrt(p.x * p.x + p.y * p.y); - z = asinz(rh / this.a); - - sinz = Math.sin(z); - cosz = Math.cos(z); - - lon = this.long0; - if (Math.abs(rh) <= EPSLN) { - lat = this.lat0; - p.x = lon; - p.y = lat; - return p; - } - lat = asinz(cosz * this.sin_p14 + (p.y * sinz * this.cos_p14) / rh); - con = Math.abs(this.lat0) - HALF_PI; - if (Math.abs(con) <= EPSLN) { - if (this.lat0 >= 0) { - lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y)); - } - else { - lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y)); - } - p.x = lon; - p.y = lat; - return p; - } - lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz), rh * this.cos_p14 * cosz - p.y * this.sin_p14 * sinz)); - p.x = lon; - p.y = lat; - return p; - } - - var names$27 = ["ortho"]; - var ortho = { - init: init$26, - forward: forward$25, - inverse: inverse$25, - names: names$27 - }; - - var includedProjections = function(proj4){ - proj4.Proj.projections.add(tmerc); - proj4.Proj.projections.add(etmerc); - proj4.Proj.projections.add(utm); - proj4.Proj.projections.add(sterea); - proj4.Proj.projections.add(stere); - proj4.Proj.projections.add(somerc); - proj4.Proj.projections.add(omerc); - proj4.Proj.projections.add(lcc); - proj4.Proj.projections.add(krovak); - proj4.Proj.projections.add(cass); - proj4.Proj.projections.add(laea); - proj4.Proj.projections.add(aea); - proj4.Proj.projections.add(gnom); - proj4.Proj.projections.add(cea); - proj4.Proj.projections.add(eqc); - proj4.Proj.projections.add(poly); - proj4.Proj.projections.add(nzmg); - proj4.Proj.projections.add(mill); - proj4.Proj.projections.add(sinu); - proj4.Proj.projections.add(moll); - proj4.Proj.projections.add(eqdc); - proj4.Proj.projections.add(vandg); - proj4.Proj.projections.add(aeqd); - proj4.Proj.projections.add(ortho); - }; - - proj4$1.defaultDatum = 'WGS84'; //default datum - proj4$1.Proj = Projection$1; - proj4$1.WGS84 = new proj4$1.Proj('WGS84'); - proj4$1.Point = Point; - proj4$1.toPoint = toPoint; - proj4$1.defs = defs; - proj4$1.transform = transform; - proj4$1.mgrs = mgrs; - proj4$1.version = version; - includedProjections(proj4$1); - - return proj4$1; - -}))); - -},{}],286:[function(require,module,exports){ -exports.publicEncrypt = require('./publicEncrypt') -exports.privateDecrypt = require('./privateDecrypt') - -exports.privateEncrypt = function privateEncrypt (key, buf) { - return exports.publicEncrypt(key, buf, true) -} - -exports.publicDecrypt = function publicDecrypt (key, buf) { - return exports.privateDecrypt(key, buf, true) -} - -},{"./privateDecrypt":288,"./publicEncrypt":289}],287:[function(require,module,exports){ -var createHash = require('create-hash') -var Buffer = require('safe-buffer').Buffer - -module.exports = function (seed, len) { - var t = Buffer.alloc(0) - var i = 0 - var c - while (t.length < len) { - c = i2ops(i++) - t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()]) - } - return t.slice(0, len) -} - -function i2ops (c) { - var out = Buffer.allocUnsafe(4) - out.writeUInt32BE(c, 0) - return out -} - -},{"create-hash":188,"safe-buffer":318}],288:[function(require,module,exports){ -var parseKeys = require('parse-asn1') -var mgf = require('./mgf') -var xor = require('./xor') -var BN = require('bn.js') -var crt = require('browserify-rsa') -var createHash = require('create-hash') -var withPublic = require('./withPublic') -var Buffer = require('safe-buffer').Buffer - -module.exports = function privateDecrypt (privateKey, enc, reverse) { - var padding - if (privateKey.padding) { - padding = privateKey.padding - } else if (reverse) { - padding = 1 - } else { - padding = 4 - } - - var key = parseKeys(privateKey) - var k = key.modulus.byteLength() - if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) { - throw new Error('decryption error') - } - var msg - if (reverse) { - msg = withPublic(new BN(enc), key) - } else { - msg = crt(enc, key) - } - var zBuffer = Buffer.alloc(k - msg.length) - msg = Buffer.concat([zBuffer, msg], k) - if (padding === 4) { - return oaep(key, msg) - } else if (padding === 1) { - return pkcs1(key, msg, reverse) - } else if (padding === 3) { - return msg - } else { - throw new Error('unknown padding') - } -} - -function oaep (key, msg) { - var k = key.modulus.byteLength() - var iHash = createHash('sha1').update(Buffer.alloc(0)).digest() - var hLen = iHash.length - if (msg[0] !== 0) { - throw new Error('decryption error') - } - var maskedSeed = msg.slice(1, hLen + 1) - var maskedDb = msg.slice(hLen + 1) - var seed = xor(maskedSeed, mgf(maskedDb, hLen)) - var db = xor(maskedDb, mgf(seed, k - hLen - 1)) - if (compare(iHash, db.slice(0, hLen))) { - throw new Error('decryption error') - } - var i = hLen - while (db[i] === 0) { - i++ - } - if (db[i++] !== 1) { - throw new Error('decryption error') - } - return db.slice(i) -} - -function pkcs1 (key, msg, reverse) { - var p1 = msg.slice(0, 2) - var i = 2 - var status = 0 - while (msg[i++] !== 0) { - if (i >= msg.length) { - status++ - break - } - } - var ps = msg.slice(2, i - 1) - - if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) { - status++ - } - if (ps.length < 8) { - status++ - } - if (status) { - throw new Error('decryption error') - } - return msg.slice(i) -} -function compare (a, b) { - a = Buffer.from(a) - b = Buffer.from(b) - var dif = 0 - var len = a.length - if (a.length !== b.length) { - dif++ - len = Math.min(a.length, b.length) - } - var i = -1 - while (++i < len) { - dif += (a[i] ^ b[i]) - } - return dif -} - -},{"./mgf":287,"./withPublic":290,"./xor":291,"bn.js":147,"browserify-rsa":170,"create-hash":188,"parse-asn1":275,"safe-buffer":318}],289:[function(require,module,exports){ -var parseKeys = require('parse-asn1') -var randomBytes = require('randombytes') -var createHash = require('create-hash') -var mgf = require('./mgf') -var xor = require('./xor') -var BN = require('bn.js') -var withPublic = require('./withPublic') -var crt = require('browserify-rsa') -var Buffer = require('safe-buffer').Buffer - -module.exports = function publicEncrypt (publicKey, msg, reverse) { - var padding - if (publicKey.padding) { - padding = publicKey.padding - } else if (reverse) { - padding = 1 - } else { - padding = 4 - } - var key = parseKeys(publicKey) - var paddedMsg - if (padding === 4) { - paddedMsg = oaep(key, msg) - } else if (padding === 1) { - paddedMsg = pkcs1(key, msg, reverse) - } else if (padding === 3) { - paddedMsg = new BN(msg) - if (paddedMsg.cmp(key.modulus) >= 0) { - throw new Error('data too long for modulus') - } - } else { - throw new Error('unknown padding') - } - if (reverse) { - return crt(paddedMsg, key) - } else { - return withPublic(paddedMsg, key) - } -} - -function oaep (key, msg) { - var k = key.modulus.byteLength() - var mLen = msg.length - var iHash = createHash('sha1').update(Buffer.alloc(0)).digest() - var hLen = iHash.length - var hLen2 = 2 * hLen - if (mLen > k - hLen2 - 2) { - throw new Error('message too long') - } - var ps = Buffer.alloc(k - mLen - hLen2 - 2) - var dblen = k - hLen - 1 - var seed = randomBytes(hLen) - var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen)) - var maskedSeed = xor(seed, mgf(maskedDb, hLen)) - return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k)) -} -function pkcs1 (key, msg, reverse) { - var mLen = msg.length - var k = key.modulus.byteLength() - if (mLen > k - 11) { - throw new Error('message too long') - } - var ps - if (reverse) { - ps = Buffer.alloc(k - mLen - 3, 0xff) - } else { - ps = nonZero(k - mLen - 3) - } - return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k)) -} -function nonZero (len) { - var out = Buffer.allocUnsafe(len) - var i = 0 - var cache = randomBytes(len * 2) - var cur = 0 - var num - while (i < len) { - if (cur === cache.length) { - cache = randomBytes(len * 2) - cur = 0 - } - num = cache[cur++] - if (num) { - out[i++] = num - } - } - return out -} - -},{"./mgf":287,"./withPublic":290,"./xor":291,"bn.js":147,"browserify-rsa":170,"create-hash":188,"parse-asn1":275,"randombytes":298,"safe-buffer":318}],290:[function(require,module,exports){ -var BN = require('bn.js') -var Buffer = require('safe-buffer').Buffer - -function withPublic (paddedMsg, key) { - return Buffer.from(paddedMsg - .toRed(BN.mont(key.modulus)) - .redPow(new BN(key.publicExponent)) - .fromRed() - .toArray()) -} - -module.exports = withPublic - -},{"bn.js":147,"safe-buffer":318}],291:[function(require,module,exports){ -module.exports = function xor (a, b) { - var len = a.length - var i = -1 - while (++i < len) { - a[i] ^= b[i] - } - return a -} - -},{}],292:[function(require,module,exports){ -(function (global){ -/*! https://mths.be/punycode v1.4.1 by @mathias */ -;(function(root) { - - /** Detect free variables */ - var freeExports = typeof exports == 'object' && exports && - !exports.nodeType && exports; - var freeModule = typeof module == 'object' && module && - !module.nodeType && module; - var freeGlobal = typeof global == 'object' && global; - if ( - freeGlobal.global === freeGlobal || - freeGlobal.window === freeGlobal || - freeGlobal.self === freeGlobal - ) { - root = freeGlobal; - } - - /** - * The `punycode` object. - * @name punycode - * @type Object - */ - var punycode, - - /** Highest positive signed 32-bit float value */ - maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 - - /** Bootstring parameters */ - base = 36, - tMin = 1, - tMax = 26, - skew = 38, - damp = 700, - initialBias = 72, - initialN = 128, // 0x80 - delimiter = '-', // '\x2D' - - /** Regular expressions */ - regexPunycode = /^xn--/, - regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars - regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators - - /** Error messages */ - errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' - }, - - /** Convenience shortcuts */ - baseMinusTMin = base - tMin, - floor = Math.floor, - stringFromCharCode = String.fromCharCode, - - /** Temporary variable */ - key; - - /*--------------------------------------------------------------------------*/ - - /** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ - function error(type) { - throw new RangeError(errors[type]); - } - - /** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ - function map(array, fn) { - var length = array.length; - var result = []; - while (length--) { - result[length] = fn(array[length]); - } - return result; - } - - /** - * A simple `Array#map`-like wrapper to work with domain name strings or email - * addresses. - * @private - * @param {String} domain The domain name or email address. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ - function mapDomain(string, fn) { - var parts = string.split('@'); - var result = ''; - if (parts.length > 1) { - // In email addresses, only the domain name should be punycoded. Leave - // the local part (i.e. everything up to `@`) intact. - result = parts[0] + '@'; - string = parts[1]; - } - // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - var labels = string.split('.'); - var encoded = map(labels, fn).join('.'); - return result + encoded; - } - - /** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ - function ucs2decode(string) { - var output = [], - counter = 0, - length = string.length, - value, - extra; - while (counter < length) { - value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // high surrogate, and there is a next character - extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { // low surrogate - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // unmatched surrogate; only append this code unit, in case the next - // code unit is the high surrogate of a surrogate pair - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; - } - - /** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ - function ucs2encode(array) { - return map(array, function(value) { - var output = ''; - if (value > 0xFFFF) { - value -= 0x10000; - output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); - value = 0xDC00 | value & 0x3FF; - } - output += stringFromCharCode(value); - return output; - }).join(''); - } - - /** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ - function basicToDigit(codePoint) { - if (codePoint - 48 < 10) { - return codePoint - 22; - } - if (codePoint - 65 < 26) { - return codePoint - 65; - } - if (codePoint - 97 < 26) { - return codePoint - 97; - } - return base; - } - - /** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ - function digitToBasic(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); - } - - /** - * Bias adaptation function as per section 3.4 of RFC 3492. - * https://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ - function adapt(delta, numPoints, firstTime) { - var k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); - } - - /** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ - function decode(input) { - // Don't use UCS-2 - var output = [], - inputLength = input.length, - out, - i = 0, - n = initialN, - bias = initialBias, - basic, - j, - index, - oldi, - w, - k, - digit, - t, - /** Cached calculation results */ - baseMinusT; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - for (oldi = i, w = 1, k = base; /* no condition */; k += base) { - - if (index >= inputLength) { - error('invalid-input'); - } - - digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error('overflow'); - } - - i += digit * w; - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - - if (digit < t) { - break; - } - - baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error('overflow'); - } - - w *= baseMinusT; - - } - - out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output - output.splice(i++, 0, n); - - } - - return ucs2encode(output); - } - - /** - * Converts a string of Unicode symbols (e.g. a domain name label) to a - * Punycode string of ASCII-only symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ - function encode(input) { - var n, - delta, - handledCPCount, - basicLength, - bias, - j, - m, - q, - k, - t, - currentValue, - output = [], - /** `inputLength` will hold the number of code points in `input`. */ - inputLength, - /** Cached calculation results */ - handledCPCountPlusOne, - baseMinusT, - qMinusT; - - // Convert the input in UCS-2 to Unicode - input = ucs2decode(input); - - // Cache the length - inputLength = input.length; - - // Initialize the state - n = initialN; - delta = 0; - bias = initialBias; - - // Handle the basic code points - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue < 0x80) { - output.push(stringFromCharCode(currentValue)); - } - } - - handledCPCount = basicLength = output.length; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string - if it is not empty - with a delimiter - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - for (m = maxInt, j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's state to , - // but guard against overflow - handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - - if (currentValue < n && ++delta > maxInt) { - error('overflow'); - } - - if (currentValue == n) { - // Represent delta as a generalized variable-length integer - for (q = delta, k = base; /* no condition */; k += base) { - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } - qMinusT = q - t; - baseMinusT = base - t; - output.push( - stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) - ); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - - ++delta; - ++n; - - } - return output.join(''); - } - - /** - * Converts a Punycode string representing a domain name or an email address - * to Unicode. Only the Punycoded parts of the input will be converted, i.e. - * it doesn't matter if you call it on a string that has already been - * converted to Unicode. - * @memberOf punycode - * @param {String} input The Punycoded domain name or email address to - * convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ - function toUnicode(input) { - return mapDomain(input, function(string) { - return regexPunycode.test(string) - ? decode(string.slice(4).toLowerCase()) - : string; - }); - } - - /** - * Converts a Unicode string representing a domain name or an email address to - * Punycode. Only the non-ASCII parts of the domain name will be converted, - * i.e. it doesn't matter if you call it with a domain that's already in - * ASCII. - * @memberOf punycode - * @param {String} input The domain name or email address to convert, as a - * Unicode string. - * @returns {String} The Punycode representation of the given domain name or - * email address. - */ - function toASCII(input) { - return mapDomain(input, function(string) { - return regexNonASCII.test(string) - ? 'xn--' + encode(string) - : string; - }); - } - - /*--------------------------------------------------------------------------*/ - - /** Define the public API */ - punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '1.4.1', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode - }; - - /** Expose `punycode` */ - // Some AMD build optimizers, like r.js, check for specific condition patterns - // like the following: - if ( - typeof define == 'function' && - typeof define.amd == 'object' && - define.amd - ) { - define('punycode', function() { - return punycode; - }); - } else if (freeExports && freeModule) { - if (module.exports == freeExports) { - // in Node.js, io.js, or RingoJS v0.8.0+ - freeModule.exports = punycode; - } else { - // in Narwhal or RingoJS v0.7.0- - for (key in punycode) { - punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); - } - } - } else { - // in Rhino or a web browser - root.punycode = punycode; - } - -}(this)); - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],293:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -'use strict'; - -// If obj.hasOwnProperty has been overridden, then calling -// obj.hasOwnProperty(prop) will break. -// See: https://github.com/joyent/node/issues/1707 -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} - -module.exports = function(qs, sep, eq, options) { - sep = sep || '&'; - eq = eq || '='; - var obj = {}; - - if (typeof qs !== 'string' || qs.length === 0) { - return obj; - } - - var regexp = /\+/g; - qs = qs.split(sep); - - var maxKeys = 1000; - if (options && typeof options.maxKeys === 'number') { - maxKeys = options.maxKeys; - } - - var len = qs.length; - // maxKeys <= 0 means that we should not limit keys count - if (maxKeys > 0 && len > maxKeys) { - len = maxKeys; - } - - for (var i = 0; i < len; ++i) { - var x = qs[i].replace(regexp, '%20'), - idx = x.indexOf(eq), - kstr, vstr, k, v; - - if (idx >= 0) { - kstr = x.substr(0, idx); - vstr = x.substr(idx + 1); - } else { - kstr = x; - vstr = ''; - } - - k = decodeURIComponent(kstr); - v = decodeURIComponent(vstr); - - if (!hasOwnProperty(obj, k)) { - obj[k] = v; - } else if (isArray(obj[k])) { - obj[k].push(v); - } else { - obj[k] = [obj[k], v]; - } - } - - return obj; -}; - -var isArray = Array.isArray || function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; - -},{}],294:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -'use strict'; - -var stringifyPrimitive = function(v) { - switch (typeof v) { - case 'string': - return v; - - case 'boolean': - return v ? 'true' : 'false'; - - case 'number': - return isFinite(v) ? v : ''; - - default: - return ''; - } -}; - -module.exports = function(obj, sep, eq, name) { - sep = sep || '&'; - eq = eq || '='; - if (obj === null) { - obj = undefined; - } - - if (typeof obj === 'object') { - return map(objectKeys(obj), function(k) { - var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; - if (isArray(obj[k])) { - return map(obj[k], function(v) { - return ks + encodeURIComponent(stringifyPrimitive(v)); - }).join(sep); - } else { - return ks + encodeURIComponent(stringifyPrimitive(obj[k])); - } - }).join(sep); - - } - - if (!name) return ''; - return encodeURIComponent(stringifyPrimitive(name)) + eq + - encodeURIComponent(stringifyPrimitive(obj)); -}; - -var isArray = Array.isArray || function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; - -function map (xs, f) { - if (xs.map) return xs.map(f); - var res = []; - for (var i = 0; i < xs.length; i++) { - res.push(f(xs[i], i)); - } - return res; -} - -var objectKeys = Object.keys || function (obj) { - var res = []; - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key); - } - return res; -}; - -},{}],295:[function(require,module,exports){ -'use strict'; - -exports.decode = exports.parse = require('./decode'); -exports.encode = exports.stringify = require('./encode'); - -},{"./decode":293,"./encode":294}],296:[function(require,module,exports){ -var inherits = require('inherits') -var EventEmitter = require('events').EventEmitter - -module.exports = Queue -module.exports.default = Queue - -function Queue (options) { - if (!(this instanceof Queue)) { - return new Queue(options) - } - - EventEmitter.call(this) - options = options || {} - this.concurrency = options.concurrency || Infinity - this.timeout = options.timeout || 0 - this.autostart = options.autostart || false - this.results = options.results || null - this.pending = 0 - this.session = 0 - this.running = false - this.jobs = [] - this.timers = {} -} -inherits(Queue, EventEmitter) - -var arrayMethods = [ - 'pop', - 'shift', - 'indexOf', - 'lastIndexOf' -] - -arrayMethods.forEach(function (method) { - Queue.prototype[method] = function () { - return Array.prototype[method].apply(this.jobs, arguments) - } -}) - -Queue.prototype.slice = function (begin, end) { - this.jobs = this.jobs.slice(begin, end) - return this -} - -Queue.prototype.reverse = function () { - this.jobs.reverse() - return this -} - -var arrayAddMethods = [ - 'push', - 'unshift', - 'splice' -] - -arrayAddMethods.forEach(function (method) { - Queue.prototype[method] = function () { - var methodResult = Array.prototype[method].apply(this.jobs, arguments) - if (this.autostart) { - this.start() - } - return methodResult - } -}) - -Object.defineProperty(Queue.prototype, 'length', { - get: function () { - return this.pending + this.jobs.length - } -}) - -Queue.prototype.start = function (cb) { - if (cb) { - callOnErrorOrEnd.call(this, cb) - } - - this.running = true - - if (this.pending >= this.concurrency) { - return - } - - if (this.jobs.length === 0) { - if (this.pending === 0) { - done.call(this) - } - return - } - - var self = this - var job = this.jobs.shift() - var once = true - var session = this.session - var timeoutId = null - var didTimeout = false - var resultIndex = null - var timeout = job.timeout || this.timeout - - function next (err, result) { - if (once && self.session === session) { - once = false - self.pending-- - if (timeoutId !== null) { - delete self.timers[timeoutId] - clearTimeout(timeoutId) - } - - if (err) { - self.emit('error', err, job) - } else if (didTimeout === false) { - if (resultIndex !== null) { - self.results[resultIndex] = Array.prototype.slice.call(arguments, 1) - } - self.emit('success', result, job) - } - - if (self.session === session) { - if (self.pending === 0 && self.jobs.length === 0) { - done.call(self) - } else if (self.running) { - self.start() - } - } - } - } - - if (timeout) { - timeoutId = setTimeout(function () { - didTimeout = true - if (self.listeners('timeout').length > 0) { - self.emit('timeout', next, job) - } else { - next() - } - }, timeout) - this.timers[timeoutId] = timeoutId - } - - if (this.results) { - resultIndex = this.results.length - this.results[resultIndex] = null - } - - this.pending++ - self.emit('start', job) - var promise = job(next) - if (promise && promise.then && typeof promise.then === 'function') { - promise.then(function (result) { - return next(null, result) - }).catch(function (err) { - return next(err || true) - }) - } - - if (this.running && this.jobs.length > 0) { - this.start() - } -} - -Queue.prototype.stop = function () { - this.running = false -} - -Queue.prototype.end = function (err) { - clearTimers.call(this) - this.jobs.length = 0 - this.pending = 0 - done.call(this, err) -} - -function clearTimers () { - for (var key in this.timers) { - var timeoutId = this.timers[key] - delete this.timers[key] - clearTimeout(timeoutId) - } -} - -function callOnErrorOrEnd (cb) { - var self = this - this.on('error', onerror) - this.on('end', onend) - - function onerror (err) { self.end(err) } - function onend (err) { - self.removeListener('error', onerror) - self.removeListener('end', onend) - cb(err, this.results) - } -} - -function done (err) { - this.session++ - this.running = false - this.emit('end', err) -} - -},{"events":221,"inherits":262}],297:[function(require,module,exports){ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.quickselect = factory()); -}(this, (function () { 'use strict'; - -function quickselect(arr, k, left, right, compare) { - quickselectStep(arr, k, left || 0, right || (arr.length - 1), compare || defaultCompare); -} - -function quickselectStep(arr, k, left, right, compare) { - - while (right > left) { - if (right - left > 600) { - var n = right - left + 1; - var m = k - left + 1; - var z = Math.log(n); - var s = 0.5 * Math.exp(2 * z / 3); - var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1); - var newLeft = Math.max(left, Math.floor(k - m * s / n + sd)); - var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd)); - quickselectStep(arr, k, newLeft, newRight, compare); - } - - var t = arr[k]; - var i = left; - var j = right; - - swap(arr, left, k); - if (compare(arr[right], t) > 0) swap(arr, left, right); - - while (i < j) { - swap(arr, i, j); - i++; - j--; - while (compare(arr[i], t) < 0) i++; - while (compare(arr[j], t) > 0) j--; - } - - if (compare(arr[left], t) === 0) swap(arr, left, j); - else { - j++; - swap(arr, j, right); - } - - if (j <= k) left = j + 1; - if (k <= j) right = j - 1; - } -} - -function swap(arr, i, j) { - var tmp = arr[i]; - arr[i] = arr[j]; - arr[j] = tmp; -} - -function defaultCompare(a, b) { - return a < b ? -1 : a > b ? 1 : 0; -} - -return quickselect; - -}))); - -},{}],298:[function(require,module,exports){ -(function (process,global){ -'use strict' - -// limit of Crypto.getRandomValues() -// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues -var MAX_BYTES = 65536 - -// Node supports requesting up to this number of bytes -// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48 -var MAX_UINT32 = 4294967295 - -function oldBrowser () { - throw new Error('Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11') -} - -var Buffer = require('safe-buffer').Buffer -var crypto = global.crypto || global.msCrypto - -if (crypto && crypto.getRandomValues) { - module.exports = randomBytes -} else { - module.exports = oldBrowser -} - -function randomBytes (size, cb) { - // phantomjs needs to throw - if (size > MAX_UINT32) throw new RangeError('requested too many random bytes') - - var bytes = Buffer.allocUnsafe(size) - - if (size > 0) { // getRandomValues fails on IE if size == 0 - if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues - // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues - for (var generated = 0; generated < size; generated += MAX_BYTES) { - // buffer.slice automatically checks if the end is past the end of - // the buffer so we don't have to here - crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES)) - } - } else { - crypto.getRandomValues(bytes) - } - } - - if (typeof cb === 'function') { - return process.nextTick(function () { - cb(null, bytes) - }) - } - - return bytes -} - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"_process":284,"safe-buffer":318}],299:[function(require,module,exports){ -(function (process,global){ -'use strict' - -function oldBrowser () { - throw new Error('secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11') -} -var safeBuffer = require('safe-buffer') -var randombytes = require('randombytes') -var Buffer = safeBuffer.Buffer -var kBufferMaxLength = safeBuffer.kMaxLength -var crypto = global.crypto || global.msCrypto -var kMaxUint32 = Math.pow(2, 32) - 1 -function assertOffset (offset, length) { - if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare - throw new TypeError('offset must be a number') - } - - if (offset > kMaxUint32 || offset < 0) { - throw new TypeError('offset must be a uint32') - } - - if (offset > kBufferMaxLength || offset > length) { - throw new RangeError('offset out of range') - } -} - -function assertSize (size, offset, length) { - if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare - throw new TypeError('size must be a number') - } - - if (size > kMaxUint32 || size < 0) { - throw new TypeError('size must be a uint32') - } - - if (size + offset > length || size > kBufferMaxLength) { - throw new RangeError('buffer too small') - } -} -if ((crypto && crypto.getRandomValues) || !process.browser) { - exports.randomFill = randomFill - exports.randomFillSync = randomFillSync -} else { - exports.randomFill = oldBrowser - exports.randomFillSync = oldBrowser -} -function randomFill (buf, offset, size, cb) { - if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) { - throw new TypeError('"buf" argument must be a Buffer or Uint8Array') - } - - if (typeof offset === 'function') { - cb = offset - offset = 0 - size = buf.length - } else if (typeof size === 'function') { - cb = size - size = buf.length - offset - } else if (typeof cb !== 'function') { - throw new TypeError('"cb" argument must be a function') - } - assertOffset(offset, buf.length) - assertSize(size, offset, buf.length) - return actualFill(buf, offset, size, cb) -} - -function actualFill (buf, offset, size, cb) { - if (process.browser) { - var ourBuf = buf.buffer - var uint = new Uint8Array(ourBuf, offset, size) - crypto.getRandomValues(uint) - if (cb) { - process.nextTick(function () { - cb(null, buf) - }) - return - } - return buf - } - if (cb) { - randombytes(size, function (err, bytes) { - if (err) { - return cb(err) - } - bytes.copy(buf, offset) - cb(null, buf) - }) - return - } - var bytes = randombytes(size) - bytes.copy(buf, offset) - return buf -} -function randomFillSync (buf, offset, size) { - if (typeof offset === 'undefined') { - offset = 0 - } - if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) { - throw new TypeError('"buf" argument must be a Buffer or Uint8Array') - } - - assertOffset(offset, buf.length) - - if (size === undefined) size = buf.length - offset - - assertSize(size, offset, buf.length) - - return actualFill(buf, offset, size) -} - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"_process":284,"randombytes":298,"safe-buffer":318}],300:[function(require,module,exports){ -'use strict'; - -module.exports = rbush; -module.exports.default = rbush; - -var quickselect = require('quickselect'); - -function rbush(maxEntries, format) { - if (!(this instanceof rbush)) return new rbush(maxEntries, format); - - // max entries in a node is 9 by default; min node fill is 40% for best performance - this._maxEntries = Math.max(4, maxEntries || 9); - this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4)); - - if (format) { - this._initFormat(format); - } - - this.clear(); -} - -rbush.prototype = { - - all: function () { - return this._all(this.data, []); - }, - - search: function (bbox) { - - var node = this.data, - result = [], - toBBox = this.toBBox; - - if (!intersects(bbox, node)) return result; - - var nodesToSearch = [], - i, len, child, childBBox; - - while (node) { - for (i = 0, len = node.children.length; i < len; i++) { - - child = node.children[i]; - childBBox = node.leaf ? toBBox(child) : child; - - if (intersects(bbox, childBBox)) { - if (node.leaf) result.push(child); - else if (contains(bbox, childBBox)) this._all(child, result); - else nodesToSearch.push(child); - } - } - node = nodesToSearch.pop(); - } - - return result; - }, - - collides: function (bbox) { - - var node = this.data, - toBBox = this.toBBox; - - if (!intersects(bbox, node)) return false; - - var nodesToSearch = [], - i, len, child, childBBox; - - while (node) { - for (i = 0, len = node.children.length; i < len; i++) { - - child = node.children[i]; - childBBox = node.leaf ? toBBox(child) : child; - - if (intersects(bbox, childBBox)) { - if (node.leaf || contains(bbox, childBBox)) return true; - nodesToSearch.push(child); - } - } - node = nodesToSearch.pop(); - } - - return false; - }, - - load: function (data) { - if (!(data && data.length)) return this; - - if (data.length < this._minEntries) { - for (var i = 0, len = data.length; i < len; i++) { - this.insert(data[i]); - } - return this; - } - - // recursively build the tree with the given data from scratch using OMT algorithm - var node = this._build(data.slice(), 0, data.length - 1, 0); - - if (!this.data.children.length) { - // save as is if tree is empty - this.data = node; - - } else if (this.data.height === node.height) { - // split root if trees have the same height - this._splitRoot(this.data, node); - - } else { - if (this.data.height < node.height) { - // swap trees if inserted one is bigger - var tmpNode = this.data; - this.data = node; - node = tmpNode; - } - - // insert the small tree into the large tree at appropriate level - this._insert(node, this.data.height - node.height - 1, true); - } - - return this; - }, - - insert: function (item) { - if (item) this._insert(item, this.data.height - 1); - return this; - }, - - clear: function () { - this.data = createNode([]); - return this; - }, - - remove: function (item, equalsFn) { - if (!item) return this; - - var node = this.data, - bbox = this.toBBox(item), - path = [], - indexes = [], - i, parent, index, goingUp; - - // depth-first iterative tree traversal - while (node || path.length) { - - if (!node) { // go up - node = path.pop(); - parent = path[path.length - 1]; - i = indexes.pop(); - goingUp = true; - } - - if (node.leaf) { // check current node - index = findItem(item, node.children, equalsFn); - - if (index !== -1) { - // item found, remove the item and condense tree upwards - node.children.splice(index, 1); - path.push(node); - this._condense(path); - return this; - } - } - - if (!goingUp && !node.leaf && contains(node, bbox)) { // go down - path.push(node); - indexes.push(i); - i = 0; - parent = node; - node = node.children[0]; - - } else if (parent) { // go right - i++; - node = parent.children[i]; - goingUp = false; - - } else node = null; // nothing found - } - - return this; - }, - - toBBox: function (item) { return item; }, - - compareMinX: compareNodeMinX, - compareMinY: compareNodeMinY, - - toJSON: function () { return this.data; }, - - fromJSON: function (data) { - this.data = data; - return this; - }, - - _all: function (node, result) { - var nodesToSearch = []; - while (node) { - if (node.leaf) result.push.apply(result, node.children); - else nodesToSearch.push.apply(nodesToSearch, node.children); - - node = nodesToSearch.pop(); - } - return result; - }, - - _build: function (items, left, right, height) { - - var N = right - left + 1, - M = this._maxEntries, - node; - - if (N <= M) { - // reached leaf level; return leaf - node = createNode(items.slice(left, right + 1)); - calcBBox(node, this.toBBox); - return node; - } - - if (!height) { - // target height of the bulk-loaded tree - height = Math.ceil(Math.log(N) / Math.log(M)); - - // target number of root entries to maximize storage utilization - M = Math.ceil(N / Math.pow(M, height - 1)); - } - - node = createNode([]); - node.leaf = false; - node.height = height; - - // split the items into M mostly square tiles - - var N2 = Math.ceil(N / M), - N1 = N2 * Math.ceil(Math.sqrt(M)), - i, j, right2, right3; - - multiSelect(items, left, right, N1, this.compareMinX); - - for (i = left; i <= right; i += N1) { - - right2 = Math.min(i + N1 - 1, right); - - multiSelect(items, i, right2, N2, this.compareMinY); - - for (j = i; j <= right2; j += N2) { - - right3 = Math.min(j + N2 - 1, right2); - - // pack each entry recursively - node.children.push(this._build(items, j, right3, height - 1)); - } - } - - calcBBox(node, this.toBBox); - - return node; - }, - - _chooseSubtree: function (bbox, node, level, path) { - - var i, len, child, targetNode, area, enlargement, minArea, minEnlargement; - - while (true) { - path.push(node); - - if (node.leaf || path.length - 1 === level) break; - - minArea = minEnlargement = Infinity; - - for (i = 0, len = node.children.length; i < len; i++) { - child = node.children[i]; - area = bboxArea(child); - enlargement = enlargedArea(bbox, child) - area; - - // choose entry with the least area enlargement - if (enlargement < minEnlargement) { - minEnlargement = enlargement; - minArea = area < minArea ? area : minArea; - targetNode = child; - - } else if (enlargement === minEnlargement) { - // otherwise choose one with the smallest area - if (area < minArea) { - minArea = area; - targetNode = child; - } - } - } - - node = targetNode || node.children[0]; - } - - return node; - }, - - _insert: function (item, level, isNode) { - - var toBBox = this.toBBox, - bbox = isNode ? item : toBBox(item), - insertPath = []; - - // find the best node for accommodating the item, saving all nodes along the path too - var node = this._chooseSubtree(bbox, this.data, level, insertPath); - - // put the item into the node - node.children.push(item); - extend(node, bbox); - - // split on node overflow; propagate upwards if necessary - while (level >= 0) { - if (insertPath[level].children.length > this._maxEntries) { - this._split(insertPath, level); - level--; - } else break; - } - - // adjust bboxes along the insertion path - this._adjustParentBBoxes(bbox, insertPath, level); - }, - - // split overflowed node into two - _split: function (insertPath, level) { - - var node = insertPath[level], - M = node.children.length, - m = this._minEntries; - - this._chooseSplitAxis(node, m, M); - - var splitIndex = this._chooseSplitIndex(node, m, M); - - var newNode = createNode(node.children.splice(splitIndex, node.children.length - splitIndex)); - newNode.height = node.height; - newNode.leaf = node.leaf; - - calcBBox(node, this.toBBox); - calcBBox(newNode, this.toBBox); - - if (level) insertPath[level - 1].children.push(newNode); - else this._splitRoot(node, newNode); - }, - - _splitRoot: function (node, newNode) { - // split root node - this.data = createNode([node, newNode]); - this.data.height = node.height + 1; - this.data.leaf = false; - calcBBox(this.data, this.toBBox); - }, - - _chooseSplitIndex: function (node, m, M) { - - var i, bbox1, bbox2, overlap, area, minOverlap, minArea, index; - - minOverlap = minArea = Infinity; - - for (i = m; i <= M - m; i++) { - bbox1 = distBBox(node, 0, i, this.toBBox); - bbox2 = distBBox(node, i, M, this.toBBox); - - overlap = intersectionArea(bbox1, bbox2); - area = bboxArea(bbox1) + bboxArea(bbox2); - - // choose distribution with minimum overlap - if (overlap < minOverlap) { - minOverlap = overlap; - index = i; - - minArea = area < minArea ? area : minArea; - - } else if (overlap === minOverlap) { - // otherwise choose distribution with minimum area - if (area < minArea) { - minArea = area; - index = i; - } - } - } - - return index; - }, - - // sorts node children by the best axis for split - _chooseSplitAxis: function (node, m, M) { - - var compareMinX = node.leaf ? this.compareMinX : compareNodeMinX, - compareMinY = node.leaf ? this.compareMinY : compareNodeMinY, - xMargin = this._allDistMargin(node, m, M, compareMinX), - yMargin = this._allDistMargin(node, m, M, compareMinY); - - // if total distributions margin value is minimal for x, sort by minX, - // otherwise it's already sorted by minY - if (xMargin < yMargin) node.children.sort(compareMinX); - }, - - // total margin of all possible split distributions where each node is at least m full - _allDistMargin: function (node, m, M, compare) { - - node.children.sort(compare); - - var toBBox = this.toBBox, - leftBBox = distBBox(node, 0, m, toBBox), - rightBBox = distBBox(node, M - m, M, toBBox), - margin = bboxMargin(leftBBox) + bboxMargin(rightBBox), - i, child; - - for (i = m; i < M - m; i++) { - child = node.children[i]; - extend(leftBBox, node.leaf ? toBBox(child) : child); - margin += bboxMargin(leftBBox); - } - - for (i = M - m - 1; i >= m; i--) { - child = node.children[i]; - extend(rightBBox, node.leaf ? toBBox(child) : child); - margin += bboxMargin(rightBBox); - } - - return margin; - }, - - _adjustParentBBoxes: function (bbox, path, level) { - // adjust bboxes along the given tree path - for (var i = level; i >= 0; i--) { - extend(path[i], bbox); - } - }, - - _condense: function (path) { - // go through the path, removing empty nodes and updating bboxes - for (var i = path.length - 1, siblings; i >= 0; i--) { - if (path[i].children.length === 0) { - if (i > 0) { - siblings = path[i - 1].children; - siblings.splice(siblings.indexOf(path[i]), 1); - - } else this.clear(); - - } else calcBBox(path[i], this.toBBox); - } - }, - - _initFormat: function (format) { - // data format (minX, minY, maxX, maxY accessors) - - // uses eval-type function compilation instead of just accepting a toBBox function - // because the algorithms are very sensitive to sorting functions performance, - // so they should be dead simple and without inner calls - - var compareArr = ['return a', ' - b', ';']; - - this.compareMinX = new Function('a', 'b', compareArr.join(format[0])); - this.compareMinY = new Function('a', 'b', compareArr.join(format[1])); - - this.toBBox = new Function('a', - 'return {minX: a' + format[0] + - ', minY: a' + format[1] + - ', maxX: a' + format[2] + - ', maxY: a' + format[3] + '};'); - } -}; - -function findItem(item, items, equalsFn) { - if (!equalsFn) return items.indexOf(item); - - for (var i = 0; i < items.length; i++) { - if (equalsFn(item, items[i])) return i; - } - return -1; -} - -// calculate node's bbox from bboxes of its children -function calcBBox(node, toBBox) { - distBBox(node, 0, node.children.length, toBBox, node); -} - -// min bounding rectangle of node children from k to p-1 -function distBBox(node, k, p, toBBox, destNode) { - if (!destNode) destNode = createNode(null); - destNode.minX = Infinity; - destNode.minY = Infinity; - destNode.maxX = -Infinity; - destNode.maxY = -Infinity; - - for (var i = k, child; i < p; i++) { - child = node.children[i]; - extend(destNode, node.leaf ? toBBox(child) : child); - } - - return destNode; -} - -function extend(a, b) { - a.minX = Math.min(a.minX, b.minX); - a.minY = Math.min(a.minY, b.minY); - a.maxX = Math.max(a.maxX, b.maxX); - a.maxY = Math.max(a.maxY, b.maxY); - return a; -} - -function compareNodeMinX(a, b) { return a.minX - b.minX; } -function compareNodeMinY(a, b) { return a.minY - b.minY; } - -function bboxArea(a) { return (a.maxX - a.minX) * (a.maxY - a.minY); } -function bboxMargin(a) { return (a.maxX - a.minX) + (a.maxY - a.minY); } - -function enlargedArea(a, b) { - return (Math.max(b.maxX, a.maxX) - Math.min(b.minX, a.minX)) * - (Math.max(b.maxY, a.maxY) - Math.min(b.minY, a.minY)); -} - -function intersectionArea(a, b) { - var minX = Math.max(a.minX, b.minX), - minY = Math.max(a.minY, b.minY), - maxX = Math.min(a.maxX, b.maxX), - maxY = Math.min(a.maxY, b.maxY); - - return Math.max(0, maxX - minX) * - Math.max(0, maxY - minY); -} - -function contains(a, b) { - return a.minX <= b.minX && - a.minY <= b.minY && - b.maxX <= a.maxX && - b.maxY <= a.maxY; -} - -function intersects(a, b) { - return b.minX <= a.maxX && - b.minY <= a.maxY && - b.maxX >= a.minX && - b.maxY >= a.minY; -} - -function createNode(children) { - return { - children: children, - height: 1, - leaf: true, - minX: Infinity, - minY: Infinity, - maxX: -Infinity, - maxY: -Infinity - }; -} - -// sort an array so that items come in groups of n unsorted items, with groups sorted between each other; -// combines selection algorithm with binary divide & conquer approach - -function multiSelect(arr, left, right, n, compare) { - var stack = [left, right], - mid; - - while (stack.length) { - right = stack.pop(); - left = stack.pop(); - - if (right - left <= n) continue; - - mid = left + Math.ceil((right - left) / n / 2) * n; - quickselect(arr, mid, left, right, compare); - - stack.push(left, mid, mid, right); - } -} - -},{"quickselect":297}],301:[function(require,module,exports){ -module.exports = require('./lib/_stream_duplex.js'); - -},{"./lib/_stream_duplex.js":302}],302:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -'use strict'; - -/**/ - -var pna = require('process-nextick-args'); -/**/ - -/**/ -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) { - keys.push(key); - }return keys; -}; -/**/ - -module.exports = Duplex; - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -{ - // avoid scope creep, the keys array can then be collected - var keys = objectKeys(Writable.prototype); - for (var v = 0; v < keys.length; v++) { - var method = keys[v]; - if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; - } -} - -function Duplex(options) { - if (!(this instanceof Duplex)) return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) this.readable = false; - - if (options && options.writable === false) this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; - - this.once('end', onend); -} - -Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function () { - return this._writableState.highWaterMark; - } -}); - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) return; - - // no more data can be written. - // But allow more writes to happen in this tick. - pna.nextTick(onEndNT, this); -} - -function onEndNT(self) { - self.end(); -} - -Object.defineProperty(Duplex.prototype, 'destroyed', { - get: function () { - if (this._readableState === undefined || this._writableState === undefined) { - return false; - } - return this._readableState.destroyed && this._writableState.destroyed; - }, - set: function (value) { - // we ignore the value if the stream - // has not been initialized yet - if (this._readableState === undefined || this._writableState === undefined) { - return; - } - - // backward compatibility, the user is explicitly - // managing destroyed - this._readableState.destroyed = value; - this._writableState.destroyed = value; - } -}); - -Duplex.prototype._destroy = function (err, cb) { - this.push(null); - this.end(); - - pna.nextTick(cb, err); -}; -},{"./_stream_readable":304,"./_stream_writable":306,"core-util-is":186,"inherits":262,"process-nextick-args":283}],303:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -'use strict'; - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) return new PassThrough(options); - - Transform.call(this, options); -} - -PassThrough.prototype._transform = function (chunk, encoding, cb) { - cb(null, chunk); -}; -},{"./_stream_transform":305,"core-util-is":186,"inherits":262}],304:[function(require,module,exports){ -(function (process,global){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -'use strict'; - -/**/ - -var pna = require('process-nextick-args'); -/**/ - -module.exports = Readable; - -/**/ -var isArray = require('isarray'); -/**/ - -/**/ -var Duplex; -/**/ - -Readable.ReadableState = ReadableState; - -/**/ -var EE = require('events').EventEmitter; - -var EElistenerCount = function (emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -/**/ -var Stream = require('./internal/streams/stream'); -/**/ - -/**/ - -var Buffer = require('safe-buffer').Buffer; -var OurUint8Array = global.Uint8Array || function () {}; -function _uint8ArrayToBuffer(chunk) { - return Buffer.from(chunk); -} -function _isUint8Array(obj) { - return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; -} - -/**/ - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -/**/ -var debugUtil = require('util'); -var debug = void 0; -if (debugUtil && debugUtil.debuglog) { - debug = debugUtil.debuglog('stream'); -} else { - debug = function () {}; -} -/**/ - -var BufferList = require('./internal/streams/BufferList'); -var destroyImpl = require('./internal/streams/destroy'); -var StringDecoder; - -util.inherits(Readable, Stream); - -var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; - -function prependListener(emitter, event, fn) { - // Sadly this is not cacheable as some libraries bundle their own - // event emitter implementation with them. - if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); - - // This is a hack to make sure that our error handler is attached before any - // userland ones. NEVER DO THIS. This is here only because this code needs - // to continue to work with older versions of Node.js that do not include - // the prependListener() method. The goal is to eventually remove this hack. - 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]]; -} - -function ReadableState(options, stream) { - Duplex = Duplex || require('./_stream_duplex'); - - options = options || {}; - - // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream. - // These options can be provided separately as readableXXX and writableXXX. - var isDuplex = stream instanceof Duplex; - - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - - if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; - - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - var readableHwm = options.readableHighWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - - if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; - - // cast to ints. - this.highWaterMark = Math.floor(this.highWaterMark); - - // A linked list is used to store data chunks instead of an array because the - // linked list can remove elements from the beginning faster than - // array.shift() - this.buffer = new BufferList(); - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = null; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // a flag to be able to tell if the event 'readable'/'data' is emitted - // immediately, or on a later tick. We set this to true at first, because - // any actions that shouldn't happen until "later" should generally also - // not happen before the first read call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - this.resumeScheduled = false; - - // has it been destroyed - this.destroyed = false; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; - - // if true, a maybeReadMore has been scheduled - this.readingMore = false; - - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -function Readable(options) { - Duplex = Duplex || require('./_stream_duplex'); - - if (!(this instanceof Readable)) return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - if (options) { - if (typeof options.read === 'function') this._read = options.read; - - if (typeof options.destroy === 'function') this._destroy = options.destroy; - } - - Stream.call(this); -} - -Object.defineProperty(Readable.prototype, 'destroyed', { - get: function () { - if (this._readableState === undefined) { - return false; - } - return this._readableState.destroyed; - }, - set: function (value) { - // we ignore the value if the stream - // has not been initialized yet - if (!this._readableState) { - return; - } - - // backward compatibility, the user is explicitly - // managing destroyed - this._readableState.destroyed = value; - } -}); - -Readable.prototype.destroy = destroyImpl.destroy; -Readable.prototype._undestroy = destroyImpl.undestroy; -Readable.prototype._destroy = function (err, cb) { - this.push(null); - cb(err); -}; - -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function (chunk, encoding) { - var state = this._readableState; - var skipChunkCheck; - - if (!state.objectMode) { - if (typeof chunk === 'string') { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = Buffer.from(chunk, encoding); - encoding = ''; - } - skipChunkCheck = true; - } - } else { - skipChunkCheck = true; - } - - return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); -}; - -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function (chunk) { - return readableAddChunk(this, chunk, null, true, false); -}; - -function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { - var state = stream._readableState; - if (chunk === null) { - state.reading = false; - onEofChunk(stream, state); - } else { - var er; - if (!skipChunkCheck) er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { - chunk = _uint8ArrayToBuffer(chunk); - } - - if (addToFront) { - if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true); - } else if (state.ended) { - stream.emit('error', new Error('stream.push() after EOF')); - } else { - state.reading = false; - if (state.decoder && !encoding) { - chunk = state.decoder.write(chunk); - if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); - } else { - addChunk(stream, state, chunk, false); - } - } - } else if (!addToFront) { - state.reading = false; - } - } - - return needMoreData(state); -} - -function addChunk(stream, state, chunk, addToFront) { - if (state.flowing && state.length === 0 && !state.sync) { - stream.emit('data', chunk); - stream.read(0); - } else { - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); - - if (state.needReadable) emitReadable(stream); - } - maybeReadMore(stream, state); -} - -function chunkInvalid(state, chunk) { - var er; - if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); -} - -Readable.prototype.isPaused = function () { - return this._readableState.flowing === false; -}; - -// backwards compatibility. -Readable.prototype.setEncoding = function (enc) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; - return this; -}; - -// Don't raise the hwm > 8MB -var MAX_HWM = 0x800000; -function computeNewHighWaterMark(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 to prevent increasing hwm excessively in - // tiny amounts - n--; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - n++; - } - return n; -} - -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function howMuchToRead(n, state) { - if (n <= 0 || state.length === 0 && state.ended) return 0; - if (state.objectMode) return 1; - if (n !== n) { - // Only flow one buffer at a time - if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; - } - // If we're asking for more than the current hwm, then raise the hwm. - if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); - if (n <= state.length) return n; - // Don't have enough - if (!state.ended) { - state.needReadable = true; - return 0; - } - return state.length; -} - -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function (n) { - debug('read', n); - n = parseInt(n, 10); - var state = this._readableState; - var nOrig = n; - - if (n !== 0) state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { - debug('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); - - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) endReadable(this); - return null; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - debug('need readable', doRead); - - // if we currently have less than the highWaterMark, then also read some - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug('length less than watermark', doRead); - } - - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) { - doRead = false; - debug('reading or ended', doRead); - } else if (doRead) { - debug('do read'); - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - if (!state.reading) n = howMuchToRead(nOrig, state); - } - - var ret; - if (n > 0) ret = fromList(n, state);else ret = null; - - if (ret === null) { - state.needReadable = true; - n = 0; - } else { - state.length -= n; - } - - if (state.length === 0) { - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (!state.ended) state.needReadable = true; - - // If we tried to read() past the EOF, then emit end on the next tick. - if (nOrig !== n && state.ended) endReadable(this); - } - - if (ret !== null) this.emit('data', ret); - - return ret; -}; - -function onEofChunk(stream, state) { - if (state.ended) return; - if (state.decoder) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // emit 'readable' now to make sure it gets picked up. - emitReadable(stream); -} - -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (!state.emittedReadable) { - debug('emitReadable', state.flowing); - state.emittedReadable = true; - if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream); - } -} - -function emitReadable_(stream) { - debug('emit readable'); - stream.emit('readable'); - flow(stream); -} - -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - pna.nextTick(maybeReadMore_, stream, state); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { - debug('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break;else len = state.length; - } - state.readingMore = false; -} - -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function (n) { - this.emit('error', new Error('_read() is not implemented')); -}; - -Readable.prototype.pipe = function (dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); - - var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; - - var endFn = doEnd ? onend : unpipe; - if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable, unpipeInfo) { - debug('onunpipe'); - if (readable === src) { - if (unpipeInfo && unpipeInfo.hasUnpiped === false) { - unpipeInfo.hasUnpiped = true; - cleanup(); - } - } - } - - function onend() { - debug('onend'); - dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - - var cleanedUp = false; - function cleanup() { - debug('cleanup'); - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', unpipe); - src.removeListener('data', ondata); - - cleanedUp = true; - - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); - } - - // If the user pushes more data while we're writing to dest then we'll end up - // in ondata again. However, we only want to increase awaitDrain once because - // dest will only emit one 'drain' event for the multiple writes. - // => Introduce a guard on increasing awaitDrain. - var increasedAwaitDrain = false; - src.on('data', ondata); - function ondata(chunk) { - debug('ondata'); - increasedAwaitDrain = false; - var ret = dest.write(chunk); - if (false === ret && !increasedAwaitDrain) { - // If the user unpiped during `dest.write()`, it is possible - // to get stuck in a permanently paused state if that write - // also returned false. - // => Check whether `dest` is still a piping destination. - if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { - debug('false write response, pause', src._readableState.awaitDrain); - src._readableState.awaitDrain++; - increasedAwaitDrain = true; - } - src.pause(); - } - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - debug('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); - } - - // Make sure our error handler is attached before userland ones. - prependListener(dest, 'error', onerror); - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - debug('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function unpipe() { - debug('unpipe'); - src.unpipe(dest); - } - - // tell the dest that it's being piped to - dest.emit('pipe', src); - - // start the flow if it hasn't been started already. - if (!state.flowing) { - debug('pipe resume'); - src.resume(); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function () { - var state = src._readableState; - debug('pipeOnDrain', state.awaitDrain); - if (state.awaitDrain) state.awaitDrain--; - if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { - state.flowing = true; - flow(src); - } - }; -} - -Readable.prototype.unpipe = function (dest) { - var state = this._readableState; - var unpipeInfo = { hasUnpiped: false }; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) return this; - - if (!dest) dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - if (dest) dest.emit('unpipe', this, unpipeInfo); - return this; - } - - // slow case. multiple pipe destinations. - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - - for (var i = 0; i < len; i++) { - dests[i].emit('unpipe', this, unpipeInfo); - }return this; - } - - // try to find the right one. - var index = indexOf(state.pipes, dest); - if (index === -1) return this; - - state.pipes.splice(index, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) state.pipes = state.pipes[0]; - - dest.emit('unpipe', this, unpipeInfo); - - return this; -}; - -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function (ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - - if (ev === 'data') { - // Start flowing on next tick if stream isn't explicitly paused - if (this._readableState.flowing !== false) this.resume(); - } else if (ev === 'readable') { - var state = this._readableState; - if (!state.endEmitted && !state.readableListening) { - state.readableListening = state.needReadable = true; - state.emittedReadable = false; - if (!state.reading) { - pna.nextTick(nReadingNextTick, this); - } else if (state.length) { - emitReadable(this); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -function nReadingNextTick(self) { - debug('readable nexttick read 0'); - self.read(0); -} - -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function () { - var state = this._readableState; - if (!state.flowing) { - debug('resume'); - state.flowing = true; - resume(this, state); - } - return this; -}; - -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - pna.nextTick(resume_, stream, state); - } -} - -function resume_(stream, state) { - if (!state.reading) { - debug('resume read 0'); - stream.read(0); - } - - state.resumeScheduled = false; - state.awaitDrain = 0; - stream.emit('resume'); - flow(stream); - if (state.flowing && !state.reading) stream.read(0); -} - -Readable.prototype.pause = function () { - debug('call pause flowing=%j', this._readableState.flowing); - if (false !== this._readableState.flowing) { - debug('pause'); - this._readableState.flowing = false; - this.emit('pause'); - } - return this; -}; - -function flow(stream) { - var state = stream._readableState; - debug('flow', state.flowing); - while (state.flowing && stream.read() !== null) {} -} - -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function (stream) { - var _this = this; - - var state = this._readableState; - var paused = false; - - stream.on('end', function () { - debug('wrapped end'); - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) _this.push(chunk); - } - - _this.push(null); - }); - - stream.on('data', function (chunk) { - debug('wrapped data'); - if (state.decoder) chunk = state.decoder.write(chunk); - - // don't skip over falsy values in objectMode - if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; - - var ret = _this.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = function (method) { - return function () { - return stream[method].apply(stream, arguments); - }; - }(i); - } - } - - // proxy certain important events. - for (var n = 0; n < kProxyEvents.length; n++) { - stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); - } - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - this._read = function (n) { - debug('wrapped _read', n); - if (paused) { - paused = false; - stream.resume(); - } - }; - - return this; -}; - -Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function () { - return this._readableState.highWaterMark; - } -}); - -// exposed for testing purposes only. -Readable._fromList = fromList; - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function fromList(n, state) { - // nothing buffered - if (state.length === 0) return null; - - var ret; - if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { - // read it all, truncate the list - 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); - state.buffer.clear(); - } else { - // read part of list - ret = fromListPartial(n, state.buffer, state.decoder); - } - - return ret; -} - -// Extracts only enough buffered data to satisfy the amount requested. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function fromListPartial(n, list, hasStrings) { - var ret; - if (n < list.head.data.length) { - // slice is the same for buffers and strings - ret = list.head.data.slice(0, n); - list.head.data = list.head.data.slice(n); - } else if (n === list.head.data.length) { - // first chunk is a perfect match - ret = list.shift(); - } else { - // result spans more than one buffer - ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); - } - return ret; -} - -// Copies a specified amount of characters from the list of buffered data -// chunks. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function copyFromBufferString(n, list) { - var p = list.head; - var c = 1; - var ret = p.data; - n -= ret.length; - while (p = p.next) { - var str = p.data; - var nb = n > str.length ? str.length : n; - if (nb === str.length) ret += str;else ret += str.slice(0, n); - n -= nb; - if (n === 0) { - if (nb === str.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = str.slice(nb); - } - break; - } - ++c; - } - list.length -= c; - return ret; -} - -// Copies a specified amount of bytes from the list of buffered data chunks. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function copyFromBuffer(n, list) { - var ret = Buffer.allocUnsafe(n); - var p = list.head; - var c = 1; - p.data.copy(ret); - n -= p.data.length; - while (p = p.next) { - var buf = p.data; - var nb = n > buf.length ? buf.length : n; - buf.copy(ret, ret.length - n, 0, nb); - n -= nb; - if (n === 0) { - if (nb === buf.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = buf.slice(nb); - } - break; - } - ++c; - } - list.length -= c; - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); - - if (!state.endEmitted) { - state.ended = true; - pna.nextTick(endReadableNT, state, stream); - } -} - -function endReadableNT(state, stream) { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } -} - -function indexOf(xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; -} -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./_stream_duplex":302,"./internal/streams/BufferList":307,"./internal/streams/destroy":308,"./internal/streams/stream":309,"_process":284,"core-util-is":186,"events":221,"inherits":262,"isarray":264,"process-nextick-args":283,"safe-buffer":310,"string_decoder/":333,"util":149}],305:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -'use strict'; - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(Transform, Duplex); - -function afterTransform(er, data) { - var ts = this._transformState; - ts.transforming = false; - - var cb = ts.writecb; - - if (!cb) { - return this.emit('error', new Error('write callback called multiple times')); - } - - ts.writechunk = null; - ts.writecb = null; - - if (data != null) // single equals check for both `null` and `undefined` - this.push(data); - - cb(er); - - var rs = this._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - this._read(rs.highWaterMark); - } -} - -function Transform(options) { - if (!(this instanceof Transform)) return new Transform(options); - - Duplex.call(this, options); - - this._transformState = { - afterTransform: afterTransform.bind(this), - needTransform: false, - transforming: false, - writecb: null, - writechunk: null, - writeencoding: null - }; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; - - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - - if (options) { - if (typeof options.transform === 'function') this._transform = options.transform; - - if (typeof options.flush === 'function') this._flush = options.flush; - } - - // When the writable side finishes, then flush out anything remaining. - this.on('prefinish', prefinish); -} - -function prefinish() { - var _this = this; - - if (typeof this._flush === 'function') { - this._flush(function (er, data) { - done(_this, er, data); - }); - } else { - done(this, null, null); - } -} - -Transform.prototype.push = function (chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function (chunk, encoding, cb) { - throw new Error('_transform() is not implemented'); -}; - -Transform.prototype._write = function (chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); - } -}; - -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function (n) { - var ts = this._transformState; - - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - -Transform.prototype._destroy = function (err, cb) { - var _this2 = this; - - Duplex.prototype._destroy.call(this, err, function (err2) { - cb(err2); - _this2.emit('close'); - }); -}; - -function done(stream, er, data) { - if (er) return stream.emit('error', er); - - if (data != null) // single equals check for both `null` and `undefined` - stream.push(data); - - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0'); - - if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming'); - - return stream.push(null); -} -},{"./_stream_duplex":302,"core-util-is":186,"inherits":262}],306:[function(require,module,exports){ -(function (process,global,setImmediate){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, encoding, cb), and it'll handle all -// the drain event emission and buffering. - -'use strict'; - -/**/ - -var pna = require('process-nextick-args'); -/**/ - -module.exports = Writable; - -/* */ -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; - this.next = null; -} - -// It seems a linked list but it is not -// there will be only 2 of these for each stream -function CorkedRequest(state) { - var _this = this; - - this.next = null; - this.entry = null; - this.finish = function () { - onCorkedFinish(_this, state); - }; -} -/* */ - -/**/ -var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick; -/**/ - -/**/ -var Duplex; -/**/ - -Writable.WritableState = WritableState; - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -/**/ -var internalUtil = { - deprecate: require('util-deprecate') -}; -/**/ - -/**/ -var Stream = require('./internal/streams/stream'); -/**/ - -/**/ - -var Buffer = require('safe-buffer').Buffer; -var OurUint8Array = global.Uint8Array || function () {}; -function _uint8ArrayToBuffer(chunk) { - return Buffer.from(chunk); -} -function _isUint8Array(obj) { - return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; -} - -/**/ - -var destroyImpl = require('./internal/streams/destroy'); - -util.inherits(Writable, Stream); - -function nop() {} - -function WritableState(options, stream) { - Duplex = Duplex || require('./_stream_duplex'); - - options = options || {}; - - // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream. - // These options can be provided separately as readableXXX and writableXXX. - var isDuplex = stream instanceof Duplex; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - var writableHwm = options.writableHighWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - - if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; - - // cast to ints. - this.highWaterMark = Math.floor(this.highWaterMark); - - // if _final has been called - this.finalCalled = false; - - // drain event flag. - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // has it been destroyed - this.destroyed = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // when true all writes will be buffered until .uncork() call - this.corked = 0; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function (er) { - onwrite(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.bufferedRequest = null; - this.lastBufferedRequest = null; - - // number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted - this.pendingcb = 0; - - // emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams - this.prefinished = false; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; - - // count buffered requests - this.bufferedRequestCount = 0; - - // allocate the first CorkedRequest, there is always - // one allocated and free to use, and we maintain at most two - this.corkedRequestsFree = new CorkedRequest(this); -} - -WritableState.prototype.getBuffer = function getBuffer() { - var current = this.bufferedRequest; - var out = []; - while (current) { - out.push(current); - current = current.next; - } - return out; -}; - -(function () { - try { - Object.defineProperty(WritableState.prototype, 'buffer', { - get: internalUtil.deprecate(function () { - return this.getBuffer(); - }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') - }); - } catch (_) {} -})(); - -// Test _writableState for inheritance to account for Duplex streams, -// whose prototype chain only points to Readable. -var realHasInstance; -if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { - realHasInstance = Function.prototype[Symbol.hasInstance]; - Object.defineProperty(Writable, Symbol.hasInstance, { - value: function (object) { - if (realHasInstance.call(this, object)) return true; - if (this !== Writable) return false; - - return object && object._writableState instanceof WritableState; - } - }); -} else { - realHasInstance = function (object) { - return object instanceof this; - }; -} - -function Writable(options) { - Duplex = Duplex || require('./_stream_duplex'); - - // Writable ctor is applied to Duplexes, too. - // `realHasInstance` is necessary because using plain `instanceof` - // would return false, as no `_writableState` property is attached. - - // Trying to use the custom `instanceof` for Writable here will also break the - // Node.js LazyTransform implementation, which has a non-trivial getter for - // `_writableState` that would lead to infinite recursion. - if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) { - return new Writable(options); - } - - this._writableState = new WritableState(options, this); - - // legacy. - this.writable = true; - - if (options) { - if (typeof options.write === 'function') this._write = options.write; - - if (typeof options.writev === 'function') this._writev = options.writev; - - if (typeof options.destroy === 'function') this._destroy = options.destroy; - - if (typeof options.final === 'function') this._final = options.final; - } - - Stream.call(this); -} - -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function () { - this.emit('error', new Error('Cannot pipe, not readable')); -}; - -function writeAfterEnd(stream, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - pna.nextTick(cb, er); -} - -// Checks that a user-supplied chunk is valid, especially for the particular -// mode the stream is in. Currently this means that `null` is never accepted -// and undefined/non-string values are only allowed in object mode. -function validChunk(stream, state, chunk, cb) { - var valid = true; - var er = false; - - if (chunk === null) { - er = new TypeError('May not write null values to stream'); - } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - if (er) { - stream.emit('error', er); - pna.nextTick(cb, er); - valid = false; - } - return valid; -} - -Writable.prototype.write = function (chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - var isBuf = !state.objectMode && _isUint8Array(chunk); - - if (isBuf && !Buffer.isBuffer(chunk)) { - chunk = _uint8ArrayToBuffer(chunk); - } - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; - - if (typeof cb !== 'function') cb = nop; - - if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { - state.pendingcb++; - ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); - } - - return ret; -}; - -Writable.prototype.cork = function () { - var state = this._writableState; - - state.corked++; -}; - -Writable.prototype.uncork = function () { - var state = this._writableState; - - if (state.corked) { - state.corked--; - - if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); - } -}; - -Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - // node::ParseEncoding() requires lower case. - if (typeof encoding === 'string') encoding = encoding.toLowerCase(); - 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); - this._writableState.defaultEncoding = encoding; - return this; -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { - chunk = Buffer.from(chunk, encoding); - } - return chunk; -} - -Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function () { - return this._writableState.highWaterMark; - } -}); - -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { - if (!isBuf) { - var newChunk = decodeChunk(state, chunk, encoding); - if (chunk !== newChunk) { - isBuf = true; - encoding = 'buffer'; - chunk = newChunk; - } - } - var len = state.objectMode ? 1 : chunk.length; - - state.length += len; - - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) state.needDrain = true; - - if (state.writing || state.corked) { - var last = state.lastBufferedRequest; - state.lastBufferedRequest = { - chunk: chunk, - encoding: encoding, - isBuf: isBuf, - callback: cb, - next: null - }; - if (last) { - last.next = state.lastBufferedRequest; - } else { - state.bufferedRequest = state.lastBufferedRequest; - } - state.bufferedRequestCount += 1; - } else { - doWrite(stream, state, false, len, chunk, encoding, cb); - } - - return ret; -} - -function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - --state.pendingcb; - - if (sync) { - // defer the callback if we are being called synchronously - // to avoid piling up things on the stack - pna.nextTick(cb, er); - // this can emit finish, and it will always happen - // after error - pna.nextTick(finishMaybe, stream, state); - stream._writableState.errorEmitted = true; - stream.emit('error', er); - } else { - // the caller expect this to happen before if - // it is async - cb(er); - stream._writableState.errorEmitted = true; - stream.emit('error', er); - // this can emit finish, but finish must - // always follow error - finishMaybe(stream, state); - } -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate(state); - - if (er) onwriteError(stream, state, sync, er, cb);else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(state); - - if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { - clearBuffer(stream, state); - } - - if (sync) { - /**/ - asyncWrite(afterWrite, stream, state, finished, cb); - /**/ - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) onwriteDrain(stream, state); - state.pendingcb--; - cb(); - finishMaybe(stream, state); -} - -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} - -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - var entry = state.bufferedRequest; - - if (stream._writev && entry && entry.next) { - // Fast case, write everything using _writev() - var l = state.bufferedRequestCount; - var buffer = new Array(l); - var holder = state.corkedRequestsFree; - holder.entry = entry; - - var count = 0; - var allBuffers = true; - while (entry) { - buffer[count] = entry; - if (!entry.isBuf) allBuffers = false; - entry = entry.next; - count += 1; - } - buffer.allBuffers = allBuffers; - - doWrite(stream, state, true, state.length, buffer, '', holder.finish); - - // doWrite is almost always async, defer these to save a bit of time - // as the hot path ends with doWrite - state.pendingcb++; - state.lastBufferedRequest = null; - if (holder.next) { - state.corkedRequestsFree = holder.next; - holder.next = null; - } else { - state.corkedRequestsFree = new CorkedRequest(state); - } - state.bufferedRequestCount = 0; - } else { - // Slow case, write chunks one-by-one - while (entry) { - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, false, len, chunk, encoding, cb); - entry = entry.next; - state.bufferedRequestCount--; - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - break; - } - } - - if (entry === null) state.lastBufferedRequest = null; - } - - state.bufferedRequest = entry; - state.bufferProcessing = false; -} - -Writable.prototype._write = function (chunk, encoding, cb) { - cb(new Error('_write() is not implemented')); -}; - -Writable.prototype._writev = null; - -Writable.prototype.end = function (chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); - - // .end() fully uncorks - if (state.corked) { - state.corked = 1; - this.uncork(); - } - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) endWritable(this, state, cb); -}; - -function needFinish(state) { - return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; -} -function callFinal(stream, state) { - stream._final(function (err) { - state.pendingcb--; - if (err) { - stream.emit('error', err); - } - state.prefinished = true; - stream.emit('prefinish'); - finishMaybe(stream, state); - }); -} -function prefinish(stream, state) { - if (!state.prefinished && !state.finalCalled) { - if (typeof stream._final === 'function') { - state.pendingcb++; - state.finalCalled = true; - pna.nextTick(callFinal, stream, state); - } else { - state.prefinished = true; - stream.emit('prefinish'); - } - } -} - -function finishMaybe(stream, state) { - var need = needFinish(state); - if (need) { - prefinish(stream, state); - if (state.pendingcb === 0) { - state.finished = true; - stream.emit('finish'); - } - } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) pna.nextTick(cb);else stream.once('finish', cb); - } - state.ended = true; - stream.writable = false; -} - -function onCorkedFinish(corkReq, state, err) { - var entry = corkReq.entry; - corkReq.entry = null; - while (entry) { - var cb = entry.callback; - state.pendingcb--; - cb(err); - entry = entry.next; - } - if (state.corkedRequestsFree) { - state.corkedRequestsFree.next = corkReq; - } else { - state.corkedRequestsFree = corkReq; - } -} - -Object.defineProperty(Writable.prototype, 'destroyed', { - get: function () { - if (this._writableState === undefined) { - return false; - } - return this._writableState.destroyed; - }, - set: function (value) { - // we ignore the value if the stream - // has not been initialized yet - if (!this._writableState) { - return; - } - - // backward compatibility, the user is explicitly - // managing destroyed - this._writableState.destroyed = value; - } -}); - -Writable.prototype.destroy = destroyImpl.destroy; -Writable.prototype._undestroy = destroyImpl.undestroy; -Writable.prototype._destroy = function (err, cb) { - this.end(); - cb(err); -}; -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate) -},{"./_stream_duplex":302,"./internal/streams/destroy":308,"./internal/streams/stream":309,"_process":284,"core-util-is":186,"inherits":262,"process-nextick-args":283,"safe-buffer":310,"timers":335,"util-deprecate":340}],307:[function(require,module,exports){ -'use strict'; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var Buffer = require('safe-buffer').Buffer; -var util = require('util'); - -function copyBuffer(src, target, offset) { - src.copy(target, offset); -} - -module.exports = function () { - function BufferList() { - _classCallCheck(this, BufferList); - - this.head = null; - this.tail = null; - this.length = 0; - } - - BufferList.prototype.push = function push(v) { - var entry = { data: v, next: null }; - if (this.length > 0) this.tail.next = entry;else this.head = entry; - this.tail = entry; - ++this.length; - }; - - BufferList.prototype.unshift = function unshift(v) { - var entry = { data: v, next: this.head }; - if (this.length === 0) this.tail = entry; - this.head = entry; - ++this.length; - }; - - BufferList.prototype.shift = function shift() { - if (this.length === 0) return; - var ret = this.head.data; - if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; - --this.length; - return ret; - }; - - BufferList.prototype.clear = function clear() { - this.head = this.tail = null; - this.length = 0; - }; - - BufferList.prototype.join = function join(s) { - if (this.length === 0) return ''; - var p = this.head; - var ret = '' + p.data; - while (p = p.next) { - ret += s + p.data; - }return ret; - }; - - BufferList.prototype.concat = function concat(n) { - if (this.length === 0) return Buffer.alloc(0); - if (this.length === 1) return this.head.data; - var ret = Buffer.allocUnsafe(n >>> 0); - var p = this.head; - var i = 0; - while (p) { - copyBuffer(p.data, ret, i); - i += p.data.length; - p = p.next; - } - return ret; - }; - - return BufferList; -}(); - -if (util && util.inspect && util.inspect.custom) { - module.exports.prototype[util.inspect.custom] = function () { - var obj = util.inspect({ length: this.length }); - return this.constructor.name + ' ' + obj; - }; -} -},{"safe-buffer":310,"util":149}],308:[function(require,module,exports){ -'use strict'; - -/**/ - -var pna = require('process-nextick-args'); -/**/ - -// undocumented cb() API, needed for core, not for public API -function destroy(err, cb) { - var _this = this; - - var readableDestroyed = this._readableState && this._readableState.destroyed; - var writableDestroyed = this._writableState && this._writableState.destroyed; - - if (readableDestroyed || writableDestroyed) { - if (cb) { - cb(err); - } else if (err && (!this._writableState || !this._writableState.errorEmitted)) { - pna.nextTick(emitErrorNT, this, err); - } - return this; - } - - // we set destroyed to true before firing error callbacks in order - // to make it re-entrance safe in case destroy() is called within callbacks - - if (this._readableState) { - this._readableState.destroyed = true; - } - - // if this is a duplex stream mark the writable part as destroyed as well - if (this._writableState) { - this._writableState.destroyed = true; - } - - this._destroy(err || null, function (err) { - if (!cb && err) { - pna.nextTick(emitErrorNT, _this, err); - if (_this._writableState) { - _this._writableState.errorEmitted = true; - } - } else if (cb) { - cb(err); - } - }); - - return this; -} - -function undestroy() { - if (this._readableState) { - this._readableState.destroyed = false; - this._readableState.reading = false; - this._readableState.ended = false; - this._readableState.endEmitted = false; - } - - if (this._writableState) { - this._writableState.destroyed = false; - this._writableState.ended = false; - this._writableState.ending = false; - this._writableState.finished = false; - this._writableState.errorEmitted = false; - } -} - -function emitErrorNT(self, err) { - self.emit('error', err); -} - -module.exports = { - destroy: destroy, - undestroy: undestroy -}; -},{"process-nextick-args":283}],309:[function(require,module,exports){ -module.exports = require('events').EventEmitter; - -},{"events":221}],310:[function(require,module,exports){ -arguments[4][178][0].apply(exports,arguments) -},{"buffer":182,"dup":178}],311:[function(require,module,exports){ -module.exports = require('./readable').PassThrough - -},{"./readable":312}],312:[function(require,module,exports){ -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = exports; -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); - -},{"./lib/_stream_duplex.js":302,"./lib/_stream_passthrough.js":303,"./lib/_stream_readable.js":304,"./lib/_stream_transform.js":305,"./lib/_stream_writable.js":306}],313:[function(require,module,exports){ -module.exports = require('./readable').Transform - -},{"./readable":312}],314:[function(require,module,exports){ -module.exports = require('./lib/_stream_writable.js'); - -},{"./lib/_stream_writable.js":306}],315:[function(require,module,exports){ -'use strict'; - -var proj4 = require('proj4').hasOwnProperty('default') ? require('proj4').default : require('proj4'); -// Checks if `list` looks like a `[x, y]`. -function isXY(list) { - return list.length >= 2 && - typeof list[0] === 'number' && - typeof list[1] === 'number'; -} - -function traverseCoords(coordinates, callback) { - if (isXY(coordinates)) return callback(coordinates); - return coordinates.map(function(coord){return traverseCoords(coord, callback);}); -} - -// Simplistic shallow clone that will work for a normal GeoJSON object. -function clone(obj) { - if (null == obj || 'object' !== typeof obj) return obj; - var copy = obj.constructor(); - for (var attr in obj) { - if (obj.hasOwnProperty(attr)) copy[attr] = obj[attr]; - } - return copy; -} - -function traverseGeoJson(geometryCb, nodeCb, geojson) { - if (geojson == null) return geojson; - - var r = clone(geojson); - var self = traverseGeoJson.bind(this, geometryCb, nodeCb); - - switch (geojson.type) { - case 'Feature': - r.geometry = self(geojson.geometry); - break; - case 'FeatureCollection': - r.features = r.features.map(self); - break; - case 'GeometryCollection': - r.geometries = r.geometries.map(self); - break; - default: - geometryCb(r); - break; - } - - if (nodeCb) nodeCb(r); - - return r; -} - -function detectCrs(geojson, projs) { - var crsInfo = geojson.crs, - crs; - - if (crsInfo === undefined) { - throw new Error('Unable to detect CRS, GeoJSON has no "crs" property.'); - } - - if (crsInfo.type === 'name') { - crs = projs[crsInfo.properties.name]; - } else if (crsInfo.type === 'EPSG') { - crs = projs['EPSG:' + crsInfo.properties.code]; - } - - if (!crs) { - throw new Error('CRS defined in crs section could not be identified: ' + JSON.stringify(crsInfo)); - } - - return crs; -} - -function determineCrs(crs, projs) { - if (typeof crs === 'string' || crs instanceof String) { - return projs[crs] || proj4.Proj(crs); - } - - return crs; -} - -function calcBbox(geojson) { - var min = [Number.MAX_VALUE, Number.MAX_VALUE], - max = [-Number.MAX_VALUE, -Number.MAX_VALUE]; - traverseGeoJson(function(_gj) { - traverseCoords(_gj.coordinates, function(xy) { - min[0] = Math.min(min[0], xy[0]); - min[1] = Math.min(min[1], xy[1]); - max[0] = Math.max(max[0], xy[0]); - max[1] = Math.max(max[1], xy[1]); - }); - }, null, geojson); - return [min[0], min[1], max[0], max[1]]; -} - -function reproject(geojson, from, to, projs) { - projs = projs || {}; - if (!from) { - from = detectCrs(geojson, projs); - } else { - from = determineCrs(from, projs); - } - - to = determineCrs(to, projs); - var transform = proj4(from, to).forward.bind(transform); - - var transformGeometryCoords = function(gj) { - // No easy way to put correct CRS info into the GeoJSON, - // and definitely wrong to keep the old, so delete it. - if (gj.crs) { - delete gj.crs; - } - gj.coordinates = traverseCoords(gj.coordinates, transform); - } - - var transformBbox = function(gj) { - if (gj.bbox) { - gj.bbox = calcBbox(gj); - } - } - - return traverseGeoJson(transformGeometryCoords, transformBbox, geojson); -} - -module.exports = { - detectCrs: detectCrs, - - reproject: reproject, - - reverse: function(geojson) { - return traverseGeoJson(function(gj) { - gj.coordinates = traverseCoords(gj.coordinates, function(xy) { - return [ xy[1], xy[0] ]; - }); - }, null, geojson); - }, - - toWgs84: function(geojson, from, projs) { - return reproject(geojson, from, proj4.WGS84, projs); - } -}; - -},{"proj4":316}],316:[function(require,module,exports){ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.proj4 = factory()); -}(this, (function () { 'use strict'; - - var globals = function(defs) { - defs('EPSG:4326', "+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees"); - defs('EPSG:4269', "+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees"); - defs('EPSG:3857', "+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs"); - - defs.WGS84 = defs['EPSG:4326']; - defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857 - defs.GOOGLE = defs['EPSG:3857']; - defs['EPSG:900913'] = defs['EPSG:3857']; - defs['EPSG:102113'] = defs['EPSG:3857']; - }; - - var PJD_3PARAM = 1; - var PJD_7PARAM = 2; - var PJD_WGS84 = 4; // WGS84 or equivalent - var PJD_NODATUM = 5; // WGS84 or equivalent - var SEC_TO_RAD = 4.84813681109535993589914102357e-6; - var HALF_PI = Math.PI/2; - // ellipoid pj_set_ell.c - var SIXTH = 0.1666666666666666667; - /* 1/6 */ - var RA4 = 0.04722222222222222222; - /* 17/360 */ - var RA6 = 0.02215608465608465608; - var EPSLN = 1.0e-10; - // you'd think you could use Number.EPSILON above but that makes - // Mollweide get into an infinate loop. - - var D2R = 0.01745329251994329577; - var R2D = 57.29577951308232088; - var FORTPI = Math.PI/4; - var TWO_PI = Math.PI * 2; - // SPI is slightly greater than Math.PI, so values that exceed the -180..180 - // degree range by a tiny amount don't get wrapped. This prevents points that - // have drifted from their original location along the 180th meridian (due to - // floating point error) from changing their sign. - var SPI = 3.14159265359; - - var exports$1 = {}; - exports$1.greenwich = 0.0; //"0dE", - exports$1.lisbon = -9.131906111111; //"9d07'54.862\"W", - exports$1.paris = 2.337229166667; //"2d20'14.025\"E", - exports$1.bogota = -74.080916666667; //"74d04'51.3\"W", - exports$1.madrid = -3.687938888889; //"3d41'16.58\"W", - exports$1.rome = 12.452333333333; //"12d27'8.4\"E", - exports$1.bern = 7.439583333333; //"7d26'22.5\"E", - exports$1.jakarta = 106.807719444444; //"106d48'27.79\"E", - exports$1.ferro = -17.666666666667; //"17d40'W", - exports$1.brussels = 4.367975; //"4d22'4.71\"E", - exports$1.stockholm = 18.058277777778; //"18d3'29.8\"E", - exports$1.athens = 23.7163375; //"23d42'58.815\"E", - exports$1.oslo = 10.722916666667; //"10d43'22.5\"E" - - var units = { - ft: {to_meter: 0.3048}, - 'us-ft': {to_meter: 1200 / 3937} - }; - - var ignoredChar = /[\s_\-\/\(\)]/g; - function match(obj, key) { - if (obj[key]) { - return obj[key]; - } - var keys = Object.keys(obj); - var lkey = key.toLowerCase().replace(ignoredChar, ''); - var i = -1; - var testkey, processedKey; - while (++i < keys.length) { - testkey = keys[i]; - processedKey = testkey.toLowerCase().replace(ignoredChar, ''); - if (processedKey === lkey) { - return obj[testkey]; - } - } - } - - var parseProj = function(defData) { - var self = {}; - var paramObj = defData.split('+').map(function(v) { - return v.trim(); - }).filter(function(a) { - return a; - }).reduce(function(p, a) { - var split = a.split('='); - split.push(true); - p[split[0].toLowerCase()] = split[1]; - return p; - }, {}); - var paramName, paramVal, paramOutname; - var params = { - proj: 'projName', - datum: 'datumCode', - rf: function(v) { - self.rf = parseFloat(v); - }, - lat_0: function(v) { - self.lat0 = v * D2R; - }, - lat_1: function(v) { - self.lat1 = v * D2R; - }, - lat_2: function(v) { - self.lat2 = v * D2R; - }, - lat_ts: function(v) { - self.lat_ts = v * D2R; - }, - lon_0: function(v) { - self.long0 = v * D2R; - }, - lon_1: function(v) { - self.long1 = v * D2R; - }, - lon_2: function(v) { - self.long2 = v * D2R; - }, - alpha: function(v) { - self.alpha = parseFloat(v) * D2R; - }, - lonc: function(v) { - self.longc = v * D2R; - }, - x_0: function(v) { - self.x0 = parseFloat(v); - }, - y_0: function(v) { - self.y0 = parseFloat(v); - }, - k_0: function(v) { - self.k0 = parseFloat(v); - }, - k: function(v) { - self.k0 = parseFloat(v); - }, - a: function(v) { - self.a = parseFloat(v); - }, - b: function(v) { - self.b = parseFloat(v); - }, - r_a: function() { - self.R_A = true; - }, - zone: function(v) { - self.zone = parseInt(v, 10); - }, - south: function() { - self.utmSouth = true; - }, - towgs84: function(v) { - self.datum_params = v.split(",").map(function(a) { - return parseFloat(a); - }); - }, - to_meter: function(v) { - self.to_meter = parseFloat(v); - }, - units: function(v) { - self.units = v; - var unit = match(units, v); - if (unit) { - self.to_meter = unit.to_meter; - } - }, - from_greenwich: function(v) { - self.from_greenwich = v * D2R; - }, - pm: function(v) { - var pm = match(exports$1, v); - self.from_greenwich = (pm ? pm : parseFloat(v)) * D2R; - }, - nadgrids: function(v) { - if (v === '@null') { - self.datumCode = 'none'; - } - else { - self.nadgrids = v; - } - }, - axis: function(v) { - var legalAxis = "ewnsud"; - if (v.length === 3 && legalAxis.indexOf(v.substr(0, 1)) !== -1 && legalAxis.indexOf(v.substr(1, 1)) !== -1 && legalAxis.indexOf(v.substr(2, 1)) !== -1) { - self.axis = v; - } - } - }; - for (paramName in paramObj) { - paramVal = paramObj[paramName]; - if (paramName in params) { - paramOutname = params[paramName]; - if (typeof paramOutname === 'function') { - paramOutname(paramVal); - } - else { - self[paramOutname] = paramVal; - } - } - else { - self[paramName] = paramVal; - } - } - if(typeof self.datumCode === 'string' && self.datumCode !== "WGS84"){ - self.datumCode = self.datumCode.toLowerCase(); - } - return self; - }; - - var NEUTRAL = 1; - var KEYWORD = 2; - var NUMBER = 3; - var QUOTED = 4; - var AFTERQUOTE = 5; - var ENDED = -1; - var whitespace = /\s/; - var latin = /[A-Za-z]/; - var keyword = /[A-Za-z84]/; - var endThings = /[,\]]/; - var digets = /[\d\.E\-\+]/; - // const ignoredChar = /[\s_\-\/\(\)]/g; - function Parser(text) { - if (typeof text !== 'string') { - throw new Error('not a string'); - } - this.text = text.trim(); - this.level = 0; - this.place = 0; - this.root = null; - this.stack = []; - this.currentObject = null; - this.state = NEUTRAL; - } - Parser.prototype.readCharicter = function() { - var char = this.text[this.place++]; - if (this.state !== QUOTED) { - while (whitespace.test(char)) { - if (this.place >= this.text.length) { - return; - } - char = this.text[this.place++]; - } - } - switch (this.state) { - case NEUTRAL: - return this.neutral(char); - case KEYWORD: - return this.keyword(char) - case QUOTED: - return this.quoted(char); - case AFTERQUOTE: - return this.afterquote(char); - case NUMBER: - return this.number(char); - case ENDED: - return; - } - }; - Parser.prototype.afterquote = function(char) { - if (char === '"') { - this.word += '"'; - this.state = QUOTED; - return; - } - if (endThings.test(char)) { - this.word = this.word.trim(); - this.afterItem(char); - return; - } - throw new Error('havn\'t handled "' +char + '" in afterquote yet, index ' + this.place); - }; - Parser.prototype.afterItem = function(char) { - if (char === ',') { - if (this.word !== null) { - this.currentObject.push(this.word); - } - this.word = null; - this.state = NEUTRAL; - return; - } - if (char === ']') { - this.level--; - if (this.word !== null) { - this.currentObject.push(this.word); - this.word = null; - } - this.state = NEUTRAL; - this.currentObject = this.stack.pop(); - if (!this.currentObject) { - this.state = ENDED; - } - - return; - } - }; - Parser.prototype.number = function(char) { - if (digets.test(char)) { - this.word += char; - return; - } - if (endThings.test(char)) { - this.word = parseFloat(this.word); - this.afterItem(char); - return; - } - throw new Error('havn\'t handled "' +char + '" in number yet, index ' + this.place); - }; - Parser.prototype.quoted = function(char) { - if (char === '"') { - this.state = AFTERQUOTE; - return; - } - this.word += char; - return; - }; - Parser.prototype.keyword = function(char) { - if (keyword.test(char)) { - this.word += char; - return; - } - if (char === '[') { - var newObjects = []; - newObjects.push(this.word); - this.level++; - if (this.root === null) { - this.root = newObjects; - } else { - this.currentObject.push(newObjects); - } - this.stack.push(this.currentObject); - this.currentObject = newObjects; - this.state = NEUTRAL; - return; - } - if (endThings.test(char)) { - this.afterItem(char); - return; - } - throw new Error('havn\'t handled "' +char + '" in keyword yet, index ' + this.place); - }; - Parser.prototype.neutral = function(char) { - if (latin.test(char)) { - this.word = char; - this.state = KEYWORD; - return; - } - if (char === '"') { - this.word = ''; - this.state = QUOTED; - return; - } - if (digets.test(char)) { - this.word = char; - this.state = NUMBER; - return; - } - if (endThings.test(char)) { - this.afterItem(char); - return; - } - throw new Error('havn\'t handled "' +char + '" in neutral yet, index ' + this.place); - }; - Parser.prototype.output = function() { - while (this.place < this.text.length) { - this.readCharicter(); - } - if (this.state === ENDED) { - return this.root; - } - throw new Error('unable to parse string "' +this.text + '". State is ' + this.state); - }; - - function parseString(txt) { - var parser = new Parser(txt); - return parser.output(); - } - - function mapit(obj, key, value) { - if (Array.isArray(key)) { - value.unshift(key); - key = null; - } - var thing = key ? {} : obj; - - var out = value.reduce(function(newObj, item) { - sExpr(item, newObj); - return newObj - }, thing); - if (key) { - obj[key] = out; - } - } - - function sExpr(v, obj) { - if (!Array.isArray(v)) { - obj[v] = true; - return; - } - var key = v.shift(); - if (key === 'PARAMETER') { - key = v.shift(); - } - if (v.length === 1) { - if (Array.isArray(v[0])) { - obj[key] = {}; - sExpr(v[0], obj[key]); - return; - } - obj[key] = v[0]; - return; - } - if (!v.length) { - obj[key] = true; - return; - } - if (key === 'TOWGS84') { - obj[key] = v; - return; - } - if (!Array.isArray(key)) { - obj[key] = {}; - } - - var i; - switch (key) { - case 'UNIT': - case 'PRIMEM': - case 'VERT_DATUM': - obj[key] = { - name: v[0].toLowerCase(), - convert: v[1] - }; - if (v.length === 3) { - sExpr(v[2], obj[key]); - } - return; - case 'SPHEROID': - case 'ELLIPSOID': - obj[key] = { - name: v[0], - a: v[1], - rf: v[2] - }; - if (v.length === 4) { - sExpr(v[3], obj[key]); - } - return; - case 'PROJECTEDCRS': - case 'PROJCRS': - case 'GEOGCS': - case 'GEOCCS': - case 'PROJCS': - case 'LOCAL_CS': - case 'GEODCRS': - case 'GEODETICCRS': - case 'GEODETICDATUM': - case 'EDATUM': - case 'ENGINEERINGDATUM': - case 'VERT_CS': - case 'VERTCRS': - case 'VERTICALCRS': - case 'COMPD_CS': - case 'COMPOUNDCRS': - case 'ENGINEERINGCRS': - case 'ENGCRS': - case 'FITTED_CS': - case 'LOCAL_DATUM': - case 'DATUM': - v[0] = ['name', v[0]]; - mapit(obj, key, v); - return; - default: - i = -1; - while (++i < v.length) { - if (!Array.isArray(v[i])) { - return sExpr(v, obj[key]); - } - } - return mapit(obj, key, v); - } - } - - var D2R$1 = 0.01745329251994329577; - function rename(obj, params) { - var outName = params[0]; - var inName = params[1]; - if (!(outName in obj) && (inName in obj)) { - obj[outName] = obj[inName]; - if (params.length === 3) { - obj[outName] = params[2](obj[outName]); - } - } - } - - function d2r(input) { - return input * D2R$1; - } - - function cleanWKT(wkt) { - if (wkt.type === 'GEOGCS') { - wkt.projName = 'longlat'; - } else if (wkt.type === 'LOCAL_CS') { - wkt.projName = 'identity'; - wkt.local = true; - } else { - if (typeof wkt.PROJECTION === 'object') { - wkt.projName = Object.keys(wkt.PROJECTION)[0]; - } else { - wkt.projName = wkt.PROJECTION; - } - } - if (wkt.UNIT) { - wkt.units = wkt.UNIT.name.toLowerCase(); - if (wkt.units === 'metre') { - wkt.units = 'meter'; - } - if (wkt.UNIT.convert) { - if (wkt.type === 'GEOGCS') { - if (wkt.DATUM && wkt.DATUM.SPHEROID) { - wkt.to_meter = wkt.UNIT.convert*wkt.DATUM.SPHEROID.a; - } - } else { - wkt.to_meter = wkt.UNIT.convert, 10; - } - } - } - var geogcs = wkt.GEOGCS; - if (wkt.type === 'GEOGCS') { - geogcs = wkt; - } - if (geogcs) { - //if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){ - // wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R; - //} - if (geogcs.DATUM) { - wkt.datumCode = geogcs.DATUM.name.toLowerCase(); - } else { - wkt.datumCode = geogcs.name.toLowerCase(); - } - if (wkt.datumCode.slice(0, 2) === 'd_') { - wkt.datumCode = wkt.datumCode.slice(2); - } - if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') { - wkt.datumCode = 'nzgd49'; - } - if (wkt.datumCode === 'wgs_1984') { - if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') { - wkt.sphere = true; - } - wkt.datumCode = 'wgs84'; - } - if (wkt.datumCode.slice(-6) === '_ferro') { - wkt.datumCode = wkt.datumCode.slice(0, - 6); - } - if (wkt.datumCode.slice(-8) === '_jakarta') { - wkt.datumCode = wkt.datumCode.slice(0, - 8); - } - if (~wkt.datumCode.indexOf('belge')) { - wkt.datumCode = 'rnb72'; - } - if (geogcs.DATUM && geogcs.DATUM.SPHEROID) { - wkt.ellps = geogcs.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\_18/, 'clrk'); - if (wkt.ellps.toLowerCase().slice(0, 13) === 'international') { - wkt.ellps = 'intl'; - } - - wkt.a = geogcs.DATUM.SPHEROID.a; - wkt.rf = parseFloat(geogcs.DATUM.SPHEROID.rf, 10); - } - - if (geogcs.DATUM && geogcs.DATUM.TOWGS84) { - wkt.datum_params = geogcs.DATUM.TOWGS84; - } - if (~wkt.datumCode.indexOf('osgb_1936')) { - wkt.datumCode = 'osgb36'; - } - if (~wkt.datumCode.indexOf('osni_1952')) { - wkt.datumCode = 'osni52'; - } - if (~wkt.datumCode.indexOf('tm65') - || ~wkt.datumCode.indexOf('geodetic_datum_of_1965')) { - wkt.datumCode = 'ire65'; - } - if (wkt.datumCode === 'ch1903+') { - wkt.datumCode = 'ch1903'; - } - if (~wkt.datumCode.indexOf('israel')) { - wkt.datumCode = 'isr93'; - } - } - if (wkt.b && !isFinite(wkt.b)) { - wkt.b = wkt.a; - } - - function toMeter(input) { - var ratio = wkt.to_meter || 1; - return input * ratio; - } - var renamer = function(a) { - return rename(wkt, a); - }; - var list = [ - ['standard_parallel_1', 'Standard_Parallel_1'], - ['standard_parallel_2', 'Standard_Parallel_2'], - ['false_easting', 'False_Easting'], - ['false_northing', 'False_Northing'], - ['central_meridian', 'Central_Meridian'], - ['latitude_of_origin', 'Latitude_Of_Origin'], - ['latitude_of_origin', 'Central_Parallel'], - ['scale_factor', 'Scale_Factor'], - ['k0', 'scale_factor'], - ['latitude_of_center', 'Latitude_Of_Center'], - ['latitude_of_center', 'Latitude_of_center'], - ['lat0', 'latitude_of_center', d2r], - ['longitude_of_center', 'Longitude_Of_Center'], - ['longitude_of_center', 'Longitude_of_center'], - ['longc', 'longitude_of_center', d2r], - ['x0', 'false_easting', toMeter], - ['y0', 'false_northing', toMeter], - ['long0', 'central_meridian', d2r], - ['lat0', 'latitude_of_origin', d2r], - ['lat0', 'standard_parallel_1', d2r], - ['lat1', 'standard_parallel_1', d2r], - ['lat2', 'standard_parallel_2', d2r], - ['azimuth', 'Azimuth'], - ['alpha', 'azimuth', d2r], - ['srsCode', 'name'] - ]; - list.forEach(renamer); - if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === 'Lambert_Azimuthal_Equal_Area')) { - wkt.long0 = wkt.longc; - } - if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) { - wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90); - wkt.lat_ts = wkt.lat1; - } - } - var wkt = function(wkt) { - var lisp = parseString(wkt); - var type = lisp.shift(); - var name = lisp.shift(); - lisp.unshift(['name', name]); - lisp.unshift(['type', type]); - var obj = {}; - sExpr(lisp, obj); - cleanWKT(obj); - return obj; - }; - - function defs(name) { - /*global console*/ - var that = this; - if (arguments.length === 2) { - var def = arguments[1]; - if (typeof def === 'string') { - if (def.charAt(0) === '+') { - defs[name] = parseProj(arguments[1]); - } - else { - defs[name] = wkt(arguments[1]); - } - } else { - defs[name] = def; - } - } - else if (arguments.length === 1) { - if (Array.isArray(name)) { - return name.map(function(v) { - if (Array.isArray(v)) { - defs.apply(that, v); - } - else { - defs(v); - } - }); - } - else if (typeof name === 'string') { - if (name in defs) { - return defs[name]; - } - } - else if ('EPSG' in name) { - defs['EPSG:' + name.EPSG] = name; - } - else if ('ESRI' in name) { - defs['ESRI:' + name.ESRI] = name; - } - else if ('IAU2000' in name) { - defs['IAU2000:' + name.IAU2000] = name; - } - else { - console.log(name); - } - return; - } - - - } - globals(defs); - - function testObj(code){ - return typeof code === 'string'; - } - function testDef(code){ - return code in defs; - } - var codeWords = ['PROJECTEDCRS', 'PROJCRS', 'GEOGCS','GEOCCS','PROJCS','LOCAL_CS', 'GEODCRS', 'GEODETICCRS', 'GEODETICDATUM', 'ENGCRS', 'ENGINEERINGCRS']; - function testWKT(code){ - return codeWords.some(function (word) { - return code.indexOf(word) > -1; - }); - } - var codes = ['3857', '900913', '3785', '102113']; - function checkMercator(item) { - var auth = match(item, 'authority'); - if (!auth) { - return; - } - var code = match(auth, 'epsg'); - return code && codes.indexOf(code) > -1; - } - function checkProjStr(item) { - var ext = match(item, 'extension'); - if (!ext) { - return; - } - return match(ext, 'proj4'); - } - function testProj(code){ - return code[0] === '+'; - } - function parse(code){ - if (testObj(code)) { - //check to see if this is a WKT string - if (testDef(code)) { - return defs[code]; - } - if (testWKT(code)) { - var out = wkt(code); - // test of spetial case, due to this being a very common and often malformed - if (checkMercator(out)) { - return defs['EPSG:3857']; - } - var maybeProjStr = checkProjStr(out); - if (maybeProjStr) { - return parseProj(maybeProjStr); - } - return out; - } - if (testProj(code)) { - return parseProj(code); - } - }else{ - return code; - } - } - - var extend = function(destination, source) { - destination = destination || {}; - var value, property; - if (!source) { - return destination; - } - for (property in source) { - value = source[property]; - if (value !== undefined) { - destination[property] = value; - } - } - return destination; - }; - - var msfnz = function(eccent, sinphi, cosphi) { - var con = eccent * sinphi; - return cosphi / (Math.sqrt(1 - con * con)); - }; - - var sign = function(x) { - return x<0 ? -1 : 1; - }; - - var adjust_lon = function(x) { - return (Math.abs(x) <= SPI) ? x : (x - (sign(x) * TWO_PI)); - }; - - var tsfnz = function(eccent, phi, sinphi) { - var con = eccent * sinphi; - var com = 0.5 * eccent; - con = Math.pow(((1 - con) / (1 + con)), com); - return (Math.tan(0.5 * (HALF_PI - phi)) / con); - }; - - var phi2z = function(eccent, ts) { - var eccnth = 0.5 * eccent; - var con, dphi; - var phi = HALF_PI - 2 * Math.atan(ts); - for (var i = 0; i <= 15; i++) { - con = eccent * Math.sin(phi); - dphi = HALF_PI - 2 * Math.atan(ts * (Math.pow(((1 - con) / (1 + con)), eccnth))) - phi; - phi += dphi; - if (Math.abs(dphi) <= 0.0000000001) { - return phi; - } - } - //console.log("phi2z has NoConvergence"); - return -9999; - }; - - function init() { - var con = this.b / this.a; - this.es = 1 - con * con; - if(!('x0' in this)){ - this.x0 = 0; - } - if(!('y0' in this)){ - this.y0 = 0; - } - this.e = Math.sqrt(this.es); - if (this.lat_ts) { - if (this.sphere) { - this.k0 = Math.cos(this.lat_ts); - } - else { - this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)); - } - } - else { - if (!this.k0) { - if (this.k) { - this.k0 = this.k; - } - else { - this.k0 = 1; - } - } - } - } - - /* Mercator forward equations--mapping lat,long to x,y - --------------------------------------------------*/ - - function forward(p) { - var lon = p.x; - var lat = p.y; - // convert to radians - if (lat * R2D > 90 && lat * R2D < -90 && lon * R2D > 180 && lon * R2D < -180) { - return null; - } - - var x, y; - if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) { - return null; - } - else { - if (this.sphere) { - x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0); - y = this.y0 + this.a * this.k0 * Math.log(Math.tan(FORTPI + 0.5 * lat)); - } - else { - var sinphi = Math.sin(lat); - var ts = tsfnz(this.e, lat, sinphi); - x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0); - y = this.y0 - this.a * this.k0 * Math.log(ts); - } - p.x = x; - p.y = y; - return p; - } - } - - /* Mercator inverse equations--mapping x,y to lat/long - --------------------------------------------------*/ - function inverse(p) { - - var x = p.x - this.x0; - var y = p.y - this.y0; - var lon, lat; - - if (this.sphere) { - lat = HALF_PI - 2 * Math.atan(Math.exp(-y / (this.a * this.k0))); - } - else { - var ts = Math.exp(-y / (this.a * this.k0)); - lat = phi2z(this.e, ts); - if (lat === -9999) { - return null; - } - } - lon = adjust_lon(this.long0 + x / (this.a * this.k0)); - - p.x = lon; - p.y = lat; - return p; - } - - var names$1 = ["Mercator", "Popular Visualisation Pseudo Mercator", "Mercator_1SP", "Mercator_Auxiliary_Sphere", "merc"]; - var merc = { - init: init, - forward: forward, - inverse: inverse, - names: names$1 - }; - - function init$1() { - //no-op for longlat - } - - function identity(pt) { - return pt; - } - var names$2 = ["longlat", "identity"]; - var longlat = { - init: init$1, - forward: identity, - inverse: identity, - names: names$2 - }; - - var projs = [merc, longlat]; - var names = {}; - var projStore = []; - - function add(proj, i) { - var len = projStore.length; - if (!proj.names) { - console.log(i); - return true; - } - projStore[len] = proj; - proj.names.forEach(function(n) { - names[n.toLowerCase()] = len; - }); - return this; - } - - function get(name) { - if (!name) { - return false; - } - var n = name.toLowerCase(); - if (typeof names[n] !== 'undefined' && projStore[names[n]]) { - return projStore[names[n]]; - } - } - - function start() { - projs.forEach(add); - } - var projections = { - start: start, - add: add, - get: get - }; - - var exports$2 = {}; - exports$2.MERIT = { - a: 6378137.0, - rf: 298.257, - ellipseName: "MERIT 1983" - }; - - exports$2.SGS85 = { - a: 6378136.0, - rf: 298.257, - ellipseName: "Soviet Geodetic System 85" - }; - - exports$2.GRS80 = { - a: 6378137.0, - rf: 298.257222101, - ellipseName: "GRS 1980(IUGG, 1980)" - }; - - exports$2.IAU76 = { - a: 6378140.0, - rf: 298.257, - ellipseName: "IAU 1976" - }; - - exports$2.airy = { - a: 6377563.396, - b: 6356256.910, - ellipseName: "Airy 1830" - }; - - exports$2.APL4 = { - a: 6378137, - rf: 298.25, - ellipseName: "Appl. Physics. 1965" - }; - - exports$2.NWL9D = { - a: 6378145.0, - rf: 298.25, - ellipseName: "Naval Weapons Lab., 1965" - }; - - exports$2.mod_airy = { - a: 6377340.189, - b: 6356034.446, - ellipseName: "Modified Airy" - }; - - exports$2.andrae = { - a: 6377104.43, - rf: 300.0, - ellipseName: "Andrae 1876 (Den., Iclnd.)" - }; - - exports$2.aust_SA = { - a: 6378160.0, - rf: 298.25, - ellipseName: "Australian Natl & S. Amer. 1969" - }; - - exports$2.GRS67 = { - a: 6378160.0, - rf: 298.2471674270, - ellipseName: "GRS 67(IUGG 1967)" - }; - - exports$2.bessel = { - a: 6377397.155, - rf: 299.1528128, - ellipseName: "Bessel 1841" - }; - - exports$2.bess_nam = { - a: 6377483.865, - rf: 299.1528128, - ellipseName: "Bessel 1841 (Namibia)" - }; - - exports$2.clrk66 = { - a: 6378206.4, - b: 6356583.8, - ellipseName: "Clarke 1866" - }; - - exports$2.clrk80 = { - a: 6378249.145, - rf: 293.4663, - ellipseName: "Clarke 1880 mod." - }; - - exports$2.clrk58 = { - a: 6378293.645208759, - rf: 294.2606763692654, - ellipseName: "Clarke 1858" - }; - - exports$2.CPM = { - a: 6375738.7, - rf: 334.29, - ellipseName: "Comm. des Poids et Mesures 1799" - }; - - exports$2.delmbr = { - a: 6376428.0, - rf: 311.5, - ellipseName: "Delambre 1810 (Belgium)" - }; - - exports$2.engelis = { - a: 6378136.05, - rf: 298.2566, - ellipseName: "Engelis 1985" - }; - - exports$2.evrst30 = { - a: 6377276.345, - rf: 300.8017, - ellipseName: "Everest 1830" - }; - - exports$2.evrst48 = { - a: 6377304.063, - rf: 300.8017, - ellipseName: "Everest 1948" - }; - - exports$2.evrst56 = { - a: 6377301.243, - rf: 300.8017, - ellipseName: "Everest 1956" - }; - - exports$2.evrst69 = { - a: 6377295.664, - rf: 300.8017, - ellipseName: "Everest 1969" - }; - - exports$2.evrstSS = { - a: 6377298.556, - rf: 300.8017, - ellipseName: "Everest (Sabah & Sarawak)" - }; - - exports$2.fschr60 = { - a: 6378166.0, - rf: 298.3, - ellipseName: "Fischer (Mercury Datum) 1960" - }; - - exports$2.fschr60m = { - a: 6378155.0, - rf: 298.3, - ellipseName: "Fischer 1960" - }; - - exports$2.fschr68 = { - a: 6378150.0, - rf: 298.3, - ellipseName: "Fischer 1968" - }; - - exports$2.helmert = { - a: 6378200.0, - rf: 298.3, - ellipseName: "Helmert 1906" - }; - - exports$2.hough = { - a: 6378270.0, - rf: 297.0, - ellipseName: "Hough" - }; - - exports$2.intl = { - a: 6378388.0, - rf: 297.0, - ellipseName: "International 1909 (Hayford)" - }; - - exports$2.kaula = { - a: 6378163.0, - rf: 298.24, - ellipseName: "Kaula 1961" - }; - - exports$2.lerch = { - a: 6378139.0, - rf: 298.257, - ellipseName: "Lerch 1979" - }; - - exports$2.mprts = { - a: 6397300.0, - rf: 191.0, - ellipseName: "Maupertius 1738" - }; - - exports$2.new_intl = { - a: 6378157.5, - b: 6356772.2, - ellipseName: "New International 1967" - }; - - exports$2.plessis = { - a: 6376523.0, - rf: 6355863.0, - ellipseName: "Plessis 1817 (France)" - }; - - exports$2.krass = { - a: 6378245.0, - rf: 298.3, - ellipseName: "Krassovsky, 1942" - }; - - exports$2.SEasia = { - a: 6378155.0, - b: 6356773.3205, - ellipseName: "Southeast Asia" - }; - - exports$2.walbeck = { - a: 6376896.0, - b: 6355834.8467, - ellipseName: "Walbeck" - }; - - exports$2.WGS60 = { - a: 6378165.0, - rf: 298.3, - ellipseName: "WGS 60" - }; - - exports$2.WGS66 = { - a: 6378145.0, - rf: 298.25, - ellipseName: "WGS 66" - }; - - exports$2.WGS7 = { - a: 6378135.0, - rf: 298.26, - ellipseName: "WGS 72" - }; - - var WGS84 = exports$2.WGS84 = { - a: 6378137.0, - rf: 298.257223563, - ellipseName: "WGS 84" - }; - - exports$2.sphere = { - a: 6370997.0, - b: 6370997.0, - ellipseName: "Normal Sphere (r=6370997)" - }; - - function eccentricity(a, b, rf, R_A) { - var a2 = a * a; // used in geocentric - var b2 = b * b; // used in geocentric - var es = (a2 - b2) / a2; // e ^ 2 - var e = 0; - if (R_A) { - a *= 1 - es * (SIXTH + es * (RA4 + es * RA6)); - a2 = a * a; - es = 0; - } else { - e = Math.sqrt(es); // eccentricity - } - var ep2 = (a2 - b2) / b2; // used in geocentric - return { - es: es, - e: e, - ep2: ep2 - }; - } - function sphere(a, b, rf, ellps, sphere) { - if (!a) { // do we have an ellipsoid? - var ellipse = match(exports$2, ellps); - if (!ellipse) { - ellipse = WGS84; - } - a = ellipse.a; - b = ellipse.b; - rf = ellipse.rf; - } - - if (rf && !b) { - b = (1.0 - 1.0 / rf) * a; - } - if (rf === 0 || Math.abs(a - b) < EPSLN) { - sphere = true; - b = a; - } - return { - a: a, - b: b, - rf: rf, - sphere: sphere - }; - } - - var exports$3 = {}; - exports$3.wgs84 = { - towgs84: "0,0,0", - ellipse: "WGS84", - datumName: "WGS84" - }; - - exports$3.ch1903 = { - towgs84: "674.374,15.056,405.346", - ellipse: "bessel", - datumName: "swiss" - }; - - exports$3.ggrs87 = { - towgs84: "-199.87,74.79,246.62", - ellipse: "GRS80", - datumName: "Greek_Geodetic_Reference_System_1987" - }; - - exports$3.nad83 = { - towgs84: "0,0,0", - ellipse: "GRS80", - datumName: "North_American_Datum_1983" - }; - - exports$3.nad27 = { - nadgrids: "@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat", - ellipse: "clrk66", - datumName: "North_American_Datum_1927" - }; - - exports$3.potsdam = { - towgs84: "606.0,23.0,413.0", - ellipse: "bessel", - datumName: "Potsdam Rauenberg 1950 DHDN" - }; - - exports$3.carthage = { - towgs84: "-263.0,6.0,431.0", - ellipse: "clark80", - datumName: "Carthage 1934 Tunisia" - }; - - exports$3.hermannskogel = { - towgs84: "653.0,-212.0,449.0", - ellipse: "bessel", - datumName: "Hermannskogel" - }; - - exports$3.osni52 = { - towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15", - ellipse: "airy", - datumName: "Irish National" - }; - - exports$3.ire65 = { - towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15", - ellipse: "mod_airy", - datumName: "Ireland 1965" - }; - - exports$3.rassadiran = { - towgs84: "-133.63,-157.5,-158.62", - ellipse: "intl", - datumName: "Rassadiran" - }; - - exports$3.nzgd49 = { - towgs84: "59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993", - ellipse: "intl", - datumName: "New Zealand Geodetic Datum 1949" - }; - - exports$3.osgb36 = { - towgs84: "446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894", - ellipse: "airy", - datumName: "Airy 1830" - }; - - exports$3.s_jtsk = { - towgs84: "589,76,480", - ellipse: 'bessel', - datumName: 'S-JTSK (Ferro)' - }; - - exports$3.beduaram = { - towgs84: '-106,-87,188', - ellipse: 'clrk80', - datumName: 'Beduaram' - }; - - exports$3.gunung_segara = { - towgs84: '-403,684,41', - ellipse: 'bessel', - datumName: 'Gunung Segara Jakarta' - }; - - exports$3.rnb72 = { - towgs84: "106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1", - ellipse: "intl", - datumName: "Reseau National Belge 1972" - }; - - function datum(datumCode, datum_params, a, b, es, ep2) { - var out = {}; - - if (datumCode === undefined || datumCode === 'none') { - out.datum_type = PJD_NODATUM; - } else { - out.datum_type = PJD_WGS84; - } - - if (datum_params) { - out.datum_params = datum_params.map(parseFloat); - if (out.datum_params[0] !== 0 || out.datum_params[1] !== 0 || out.datum_params[2] !== 0) { - out.datum_type = PJD_3PARAM; - } - if (out.datum_params.length > 3) { - if (out.datum_params[3] !== 0 || out.datum_params[4] !== 0 || out.datum_params[5] !== 0 || out.datum_params[6] !== 0) { - out.datum_type = PJD_7PARAM; - out.datum_params[3] *= SEC_TO_RAD; - out.datum_params[4] *= SEC_TO_RAD; - out.datum_params[5] *= SEC_TO_RAD; - out.datum_params[6] = (out.datum_params[6] / 1000000.0) + 1.0; - } - } - } - - out.a = a; //datum object also uses these values - out.b = b; - out.es = es; - out.ep2 = ep2; - return out; - } - - function Projection(srsCode,callback) { - if (!(this instanceof Projection)) { - return new Projection(srsCode); - } - callback = callback || function(error){ - if(error){ - throw error; - } - }; - var json = parse(srsCode); - if(typeof json !== 'object'){ - callback(srsCode); - return; - } - var ourProj = Projection.projections.get(json.projName); - if(!ourProj){ - callback(srsCode); - return; - } - if (json.datumCode && json.datumCode !== 'none') { - var datumDef = match(exports$3, json.datumCode); - if (datumDef) { - json.datum_params = datumDef.towgs84 ? datumDef.towgs84.split(',') : null; - json.ellps = datumDef.ellipse; - json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode; - } - } - json.k0 = json.k0 || 1.0; - json.axis = json.axis || 'enu'; - json.ellps = json.ellps || 'wgs84'; - var sphere_ = sphere(json.a, json.b, json.rf, json.ellps, json.sphere); - var ecc = eccentricity(sphere_.a, sphere_.b, sphere_.rf, json.R_A); - var datumObj = json.datum || datum(json.datumCode, json.datum_params, sphere_.a, sphere_.b, ecc.es, ecc.ep2); - - extend(this, json); // transfer everything over from the projection because we don't know what we'll need - extend(this, ourProj); // transfer all the methods from the projection - - // copy the 4 things over we calulated in deriveConstants.sphere - this.a = sphere_.a; - this.b = sphere_.b; - this.rf = sphere_.rf; - this.sphere = sphere_.sphere; - - // copy the 3 things we calculated in deriveConstants.eccentricity - this.es = ecc.es; - this.e = ecc.e; - this.ep2 = ecc.ep2; - - // add in the datum object - this.datum = datumObj; - - // init the projection - this.init(); - - // legecy callback from back in the day when it went to spatialreference.org - callback(null, this); - - } - Projection.projections = projections; - Projection.projections.start(); - - 'use strict'; - function compareDatums(source, dest) { - if (source.datum_type !== dest.datum_type) { - return false; // false, datums are not equal - } else if (source.a !== dest.a || Math.abs(source.es - dest.es) > 0.000000000050) { - // the tolerance for es is to ensure that GRS80 and WGS84 - // are considered identical - return false; - } else if (source.datum_type === PJD_3PARAM) { - return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2]); - } else if (source.datum_type === PJD_7PARAM) { - return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2] && source.datum_params[3] === dest.datum_params[3] && source.datum_params[4] === dest.datum_params[4] && source.datum_params[5] === dest.datum_params[5] && source.datum_params[6] === dest.datum_params[6]); - } else { - return true; // datums are equal - } - } // cs_compare_datums() - - /* - * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates - * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z), - * according to the current ellipsoid parameters. - * - * Latitude : Geodetic latitude in radians (input) - * Longitude : Geodetic longitude in radians (input) - * Height : Geodetic height, in meters (input) - * X : Calculated Geocentric X coordinate, in meters (output) - * Y : Calculated Geocentric Y coordinate, in meters (output) - * Z : Calculated Geocentric Z coordinate, in meters (output) - * - */ - function geodeticToGeocentric(p, es, a) { - var Longitude = p.x; - var Latitude = p.y; - var Height = p.z ? p.z : 0; //Z value not always supplied - - var Rn; /* Earth radius at location */ - var Sin_Lat; /* Math.sin(Latitude) */ - var Sin2_Lat; /* Square of Math.sin(Latitude) */ - var Cos_Lat; /* Math.cos(Latitude) */ - - /* - ** Don't blow up if Latitude is just a little out of the value - ** range as it may just be a rounding issue. Also removed longitude - ** test, it should be wrapped by Math.cos() and Math.sin(). NFW for PROJ.4, Sep/2001. - */ - if (Latitude < -HALF_PI && Latitude > -1.001 * HALF_PI) { - Latitude = -HALF_PI; - } else if (Latitude > HALF_PI && Latitude < 1.001 * HALF_PI) { - Latitude = HALF_PI; - } else if (Latitude < -HALF_PI) { - /* Latitude out of range */ - //..reportError('geocent:lat out of range:' + Latitude); - return { x: -Infinity, y: -Infinity, z: p.z }; - } else if (Latitude > HALF_PI) { - /* Latitude out of range */ - return { x: Infinity, y: Infinity, z: p.z }; - } - - if (Longitude > Math.PI) { - Longitude -= (2 * Math.PI); - } - Sin_Lat = Math.sin(Latitude); - Cos_Lat = Math.cos(Latitude); - Sin2_Lat = Sin_Lat * Sin_Lat; - Rn = a / (Math.sqrt(1.0e0 - es * Sin2_Lat)); - return { - x: (Rn + Height) * Cos_Lat * Math.cos(Longitude), - y: (Rn + Height) * Cos_Lat * Math.sin(Longitude), - z: ((Rn * (1 - es)) + Height) * Sin_Lat - }; - } // cs_geodetic_to_geocentric() - - function geocentricToGeodetic(p, es, a, b) { - /* local defintions and variables */ - /* end-criterium of loop, accuracy of sin(Latitude) */ - var genau = 1e-12; - var genau2 = (genau * genau); - var maxiter = 30; - - var P; /* distance between semi-minor axis and location */ - var RR; /* distance between center and location */ - var CT; /* sin of geocentric latitude */ - var ST; /* cos of geocentric latitude */ - var RX; - var RK; - var RN; /* Earth radius at location */ - var CPHI0; /* cos of start or old geodetic latitude in iterations */ - var SPHI0; /* sin of start or old geodetic latitude in iterations */ - var CPHI; /* cos of searched geodetic latitude */ - var SPHI; /* sin of searched geodetic latitude */ - var SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */ - var iter; /* # of continous iteration, max. 30 is always enough (s.a.) */ - - var X = p.x; - var Y = p.y; - var Z = p.z ? p.z : 0.0; //Z value not always supplied - var Longitude; - var Latitude; - var Height; - - P = Math.sqrt(X * X + Y * Y); - RR = Math.sqrt(X * X + Y * Y + Z * Z); - - /* special cases for latitude and longitude */ - if (P / a < genau) { - - /* special case, if P=0. (X=0., Y=0.) */ - Longitude = 0.0; - - /* if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis - * of ellipsoid (=center of mass), Latitude becomes PI/2 */ - if (RR / a < genau) { - Latitude = HALF_PI; - Height = -b; - return { - x: p.x, - y: p.y, - z: p.z - }; - } - } else { - /* ellipsoidal (geodetic) longitude - * interval: -PI < Longitude <= +PI */ - Longitude = Math.atan2(Y, X); - } - - /* -------------------------------------------------------------- - * Following iterative algorithm was developped by - * "Institut for Erdmessung", University of Hannover, July 1988. - * Internet: www.ife.uni-hannover.de - * Iterative computation of CPHI,SPHI and Height. - * Iteration of CPHI and SPHI to 10**-12 radian resp. - * 2*10**-7 arcsec. - * -------------------------------------------------------------- - */ - CT = Z / RR; - ST = P / RR; - RX = 1.0 / Math.sqrt(1.0 - es * (2.0 - es) * ST * ST); - CPHI0 = ST * (1.0 - es) * RX; - SPHI0 = CT * RX; - iter = 0; - - /* loop to find sin(Latitude) resp. Latitude - * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */ - do { - iter++; - RN = a / Math.sqrt(1.0 - es * SPHI0 * SPHI0); - - /* ellipsoidal (geodetic) height */ - Height = P * CPHI0 + Z * SPHI0 - RN * (1.0 - es * SPHI0 * SPHI0); - - RK = es * RN / (RN + Height); - RX = 1.0 / Math.sqrt(1.0 - RK * (2.0 - RK) * ST * ST); - CPHI = ST * (1.0 - RK) * RX; - SPHI = CT * RX; - SDPHI = SPHI * CPHI0 - CPHI * SPHI0; - CPHI0 = CPHI; - SPHI0 = SPHI; - } - while (SDPHI * SDPHI > genau2 && iter < maxiter); - - /* ellipsoidal (geodetic) latitude */ - Latitude = Math.atan(SPHI / Math.abs(CPHI)); - return { - x: Longitude, - y: Latitude, - z: Height - }; - } // cs_geocentric_to_geodetic() - - /****************************************************************/ - // pj_geocentic_to_wgs84( p ) - // p = point to transform in geocentric coordinates (x,y,z) - - - /** point object, nothing fancy, just allows values to be - passed back and forth by reference rather than by value. - Other point classes may be used as long as they have - x and y properties, which will get modified in the transform method. - */ - function geocentricToWgs84(p, datum_type, datum_params) { - - if (datum_type === PJD_3PARAM) { - // if( x[io] === HUGE_VAL ) - // continue; - return { - x: p.x + datum_params[0], - y: p.y + datum_params[1], - z: p.z + datum_params[2], - }; - } else if (datum_type === PJD_7PARAM) { - var Dx_BF = datum_params[0]; - var Dy_BF = datum_params[1]; - var Dz_BF = datum_params[2]; - var Rx_BF = datum_params[3]; - var Ry_BF = datum_params[4]; - var Rz_BF = datum_params[5]; - var M_BF = datum_params[6]; - // if( x[io] === HUGE_VAL ) - // continue; - return { - x: M_BF * (p.x - Rz_BF * p.y + Ry_BF * p.z) + Dx_BF, - y: M_BF * (Rz_BF * p.x + p.y - Rx_BF * p.z) + Dy_BF, - z: M_BF * (-Ry_BF * p.x + Rx_BF * p.y + p.z) + Dz_BF - }; - } - } // cs_geocentric_to_wgs84 - - /****************************************************************/ - // pj_geocentic_from_wgs84() - // coordinate system definition, - // point to transform in geocentric coordinates (x,y,z) - function geocentricFromWgs84(p, datum_type, datum_params) { - - if (datum_type === PJD_3PARAM) { - //if( x[io] === HUGE_VAL ) - // continue; - return { - x: p.x - datum_params[0], - y: p.y - datum_params[1], - z: p.z - datum_params[2], - }; - - } else if (datum_type === PJD_7PARAM) { - var Dx_BF = datum_params[0]; - var Dy_BF = datum_params[1]; - var Dz_BF = datum_params[2]; - var Rx_BF = datum_params[3]; - var Ry_BF = datum_params[4]; - var Rz_BF = datum_params[5]; - var M_BF = datum_params[6]; - var x_tmp = (p.x - Dx_BF) / M_BF; - var y_tmp = (p.y - Dy_BF) / M_BF; - var z_tmp = (p.z - Dz_BF) / M_BF; - //if( x[io] === HUGE_VAL ) - // continue; - - return { - x: x_tmp + Rz_BF * y_tmp - Ry_BF * z_tmp, - y: -Rz_BF * x_tmp + y_tmp + Rx_BF * z_tmp, - z: Ry_BF * x_tmp - Rx_BF * y_tmp + z_tmp - }; - } //cs_geocentric_from_wgs84() - } - - function checkParams(type) { - return (type === PJD_3PARAM || type === PJD_7PARAM); - } - - var datum_transform = function(source, dest, point) { - // Short cut if the datums are identical. - if (compareDatums(source, dest)) { - return point; // in this case, zero is sucess, - // whereas cs_compare_datums returns 1 to indicate TRUE - // confusing, should fix this - } - - // Explicitly skip datum transform by setting 'datum=none' as parameter for either source or dest - if (source.datum_type === PJD_NODATUM || dest.datum_type === PJD_NODATUM) { - return point; - } - - // If this datum requires grid shifts, then apply it to geodetic coordinates. - - // Do we need to go through geocentric coordinates? - if (source.es === dest.es && source.a === dest.a && !checkParams(source.datum_type) && !checkParams(dest.datum_type)) { - return point; - } - - // Convert to geocentric coordinates. - point = geodeticToGeocentric(point, source.es, source.a); - // Convert between datums - if (checkParams(source.datum_type)) { - point = geocentricToWgs84(point, source.datum_type, source.datum_params); - } - if (checkParams(dest.datum_type)) { - point = geocentricFromWgs84(point, dest.datum_type, dest.datum_params); - } - return geocentricToGeodetic(point, dest.es, dest.a, dest.b); - - }; - - var adjust_axis = function(crs, denorm, point) { - var xin = point.x, - yin = point.y, - zin = point.z || 0.0; - var v, t, i; - var out = {}; - for (i = 0; i < 3; i++) { - if (denorm && i === 2 && point.z === undefined) { - continue; - } - if (i === 0) { - v = xin; - t = 'x'; - } - else if (i === 1) { - v = yin; - t = 'y'; - } - else { - v = zin; - t = 'z'; - } - switch (crs.axis[i]) { - case 'e': - out[t] = v; - break; - case 'w': - out[t] = -v; - break; - case 'n': - out[t] = v; - break; - case 's': - out[t] = -v; - break; - case 'u': - if (point[t] !== undefined) { - out.z = v; - } - break; - case 'd': - if (point[t] !== undefined) { - out.z = -v; - } - break; - default: - //console.log("ERROR: unknow axis ("+crs.axis[i]+") - check definition of "+crs.projName); - return null; - } - } - return out; - }; - - var toPoint = function (array){ - var out = { - x: array[0], - y: array[1] - }; - if (array.length>2) { - out.z = array[2]; - } - if (array.length>3) { - out.m = array[3]; - } - return out; - }; - - var checkSanity = function (point) { - checkCoord(point.x); - checkCoord(point.y); - }; - function checkCoord(num) { - if (typeof Number.isFinite === 'function') { - if (Number.isFinite(num)) { - return; - } - throw new TypeError('coordinates must be finite numbers'); - } - if (typeof num !== 'number' || num !== num || !isFinite(num)) { - throw new TypeError('coordinates must be finite numbers'); - } - } - - function checkNotWGS(source, dest) { - return ((source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM) && dest.datumCode !== 'WGS84') || ((dest.datum.datum_type === PJD_3PARAM || dest.datum.datum_type === PJD_7PARAM) && source.datumCode !== 'WGS84'); - } - - function transform(source, dest, point) { - var wgs84; - if (Array.isArray(point)) { - point = toPoint(point); - } - checkSanity(point); - // Workaround for datum shifts towgs84, if either source or destination projection is not wgs84 - if (source.datum && dest.datum && checkNotWGS(source, dest)) { - wgs84 = new Projection('WGS84'); - point = transform(source, wgs84, point); - source = wgs84; - } - // DGR, 2010/11/12 - if (source.axis !== 'enu') { - point = adjust_axis(source, false, point); - } - // Transform source points to long/lat, if they aren't already. - if (source.projName === 'longlat') { - point = { - x: point.x * D2R, - y: point.y * D2R - }; - } - else { - if (source.to_meter) { - point = { - x: point.x * source.to_meter, - y: point.y * source.to_meter - }; - } - point = source.inverse(point); // Convert Cartesian to longlat - } - // Adjust for the prime meridian if necessary - if (source.from_greenwich) { - point.x += source.from_greenwich; - } - - // Convert datums if needed, and if possible. - point = datum_transform(source.datum, dest.datum, point); - - // Adjust for the prime meridian if necessary - if (dest.from_greenwich) { - point = { - x: point.x - dest.from_greenwich, - y: point.y - }; - } - - if (dest.projName === 'longlat') { - // convert radians to decimal degrees - point = { - x: point.x * R2D, - y: point.y * R2D - }; - } else { // else project - point = dest.forward(point); - if (dest.to_meter) { - point = { - x: point.x / dest.to_meter, - y: point.y / dest.to_meter - }; - } - } - - // DGR, 2010/11/12 - if (dest.axis !== 'enu') { - return adjust_axis(dest, true, point); - } - - return point; - } - - var wgs84 = Projection('WGS84'); - - function transformer(from, to, coords) { - var transformedArray, out, keys; - if (Array.isArray(coords)) { - transformedArray = transform(from, to, coords); - if (coords.length === 3) { - return [transformedArray.x, transformedArray.y, transformedArray.z]; - } - else { - return [transformedArray.x, transformedArray.y]; - } - } - else { - out = transform(from, to, coords); - keys = Object.keys(coords); - if (keys.length === 2) { - return out; - } - keys.forEach(function (key) { - if (key === 'x' || key === 'y') { - return; - } - out[key] = coords[key]; - }); - return out; - } - } - - function checkProj(item) { - if (item instanceof Projection) { - return item; - } - if (item.oProj) { - return item.oProj; - } - return Projection(item); - } - function proj4$1(fromProj, toProj, coord) { - fromProj = checkProj(fromProj); - var single = false; - var obj; - if (typeof toProj === 'undefined') { - toProj = fromProj; - fromProj = wgs84; - single = true; - } - else if (typeof toProj.x !== 'undefined' || Array.isArray(toProj)) { - coord = toProj; - toProj = fromProj; - fromProj = wgs84; - single = true; - } - toProj = checkProj(toProj); - if (coord) { - return transformer(fromProj, toProj, coord); - } - else { - obj = { - forward: function(coords) { - return transformer(fromProj, toProj, coords); - }, - inverse: function(coords) { - return transformer(toProj, fromProj, coords); - } - }; - if (single) { - obj.oProj = toProj; - } - return obj; - } - } - - /** - * UTM zones are grouped, and assigned to one of a group of 6 - * sets. - * - * {int} @private - */ - var NUM_100K_SETS = 6; - - /** - * The column letters (for easting) of the lower left value, per - * set. - * - * {string} @private - */ - var SET_ORIGIN_COLUMN_LETTERS = 'AJSAJS'; - - /** - * The row letters (for northing) of the lower left value, per - * set. - * - * {string} @private - */ - var SET_ORIGIN_ROW_LETTERS = 'AFAFAF'; - - var A = 65; // A - var I = 73; // I - var O = 79; // O - var V = 86; // V - var Z = 90; // Z - var mgrs = { - forward: forward$1, - inverse: inverse$1, - toPoint: toPoint$1 - }; - /** - * Conversion of lat/lon to MGRS. - * - * @param {object} ll Object literal with lat and lon properties on a - * WGS84 ellipsoid. - * @param {int} accuracy Accuracy in digits (5 for 1 m, 4 for 10 m, 3 for - * 100 m, 2 for 1000 m or 1 for 10000 m). Optional, default is 5. - * @return {string} the MGRS string for the given location and accuracy. - */ - function forward$1(ll, accuracy) { - accuracy = accuracy || 5; // default accuracy 1m - return encode(LLtoUTM({ - lat: ll[1], - lon: ll[0] - }), accuracy); - } - - /** - * Conversion of MGRS to lat/lon. - * - * @param {string} mgrs MGRS string. - * @return {array} An array with left (longitude), bottom (latitude), right - * (longitude) and top (latitude) values in WGS84, representing the - * bounding box for the provided MGRS reference. - */ - function inverse$1(mgrs) { - var bbox = UTMtoLL(decode(mgrs.toUpperCase())); - if (bbox.lat && bbox.lon) { - return [bbox.lon, bbox.lat, bbox.lon, bbox.lat]; - } - return [bbox.left, bbox.bottom, bbox.right, bbox.top]; - } - - function toPoint$1(mgrs) { - var bbox = UTMtoLL(decode(mgrs.toUpperCase())); - if (bbox.lat && bbox.lon) { - return [bbox.lon, bbox.lat]; - } - return [(bbox.left + bbox.right) / 2, (bbox.top + bbox.bottom) / 2]; - } - /** - * Conversion from degrees to radians. - * - * @private - * @param {number} deg the angle in degrees. - * @return {number} the angle in radians. - */ - function degToRad(deg) { - return (deg * (Math.PI / 180.0)); - } - - /** - * Conversion from radians to degrees. - * - * @private - * @param {number} rad the angle in radians. - * @return {number} the angle in degrees. - */ - function radToDeg(rad) { - return (180.0 * (rad / Math.PI)); - } - - /** - * Converts a set of Longitude and Latitude co-ordinates to UTM - * using the WGS84 ellipsoid. - * - * @private - * @param {object} ll Object literal with lat and lon properties - * representing the WGS84 coordinate to be converted. - * @return {object} Object literal containing the UTM value with easting, - * northing, zoneNumber and zoneLetter properties, and an optional - * accuracy property in digits. Returns null if the conversion failed. - */ - function LLtoUTM(ll) { - var Lat = ll.lat; - var Long = ll.lon; - var a = 6378137.0; //ellip.radius; - var eccSquared = 0.00669438; //ellip.eccsq; - var k0 = 0.9996; - var LongOrigin; - var eccPrimeSquared; - var N, T, C, A, M; - var LatRad = degToRad(Lat); - var LongRad = degToRad(Long); - var LongOriginRad; - var ZoneNumber; - // (int) - ZoneNumber = Math.floor((Long + 180) / 6) + 1; - - //Make sure the longitude 180.00 is in Zone 60 - if (Long === 180) { - ZoneNumber = 60; - } - - // Special zone for Norway - if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) { - ZoneNumber = 32; - } - - // Special zones for Svalbard - if (Lat >= 72.0 && Lat < 84.0) { - if (Long >= 0.0 && Long < 9.0) { - ZoneNumber = 31; - } - else if (Long >= 9.0 && Long < 21.0) { - ZoneNumber = 33; - } - else if (Long >= 21.0 && Long < 33.0) { - ZoneNumber = 35; - } - else if (Long >= 33.0 && Long < 42.0) { - ZoneNumber = 37; - } - } - - LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin - // in middle of - // zone - LongOriginRad = degToRad(LongOrigin); - - eccPrimeSquared = (eccSquared) / (1 - eccSquared); - - N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad)); - T = Math.tan(LatRad) * Math.tan(LatRad); - C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad); - A = Math.cos(LatRad) * (LongRad - LongOriginRad); - - M = a * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(2 * LatRad) + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared * eccSquared / 3072) * Math.sin(6 * LatRad)); - - var UTMEasting = (k0 * N * (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T + 72 * C - 58 * eccPrimeSquared) * A * A * A * A * A / 120.0) + 500000.0); - - var UTMNorthing = (k0 * (M + N * Math.tan(LatRad) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared) * A * A * A * A * A * A / 720.0))); - if (Lat < 0.0) { - UTMNorthing += 10000000.0; //10000000 meter offset for - // southern hemisphere - } - - return { - northing: Math.round(UTMNorthing), - easting: Math.round(UTMEasting), - zoneNumber: ZoneNumber, - zoneLetter: getLetterDesignator(Lat) - }; - } - - /** - * Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience - * class where the Zone can be specified as a single string eg."60N" which - * is then broken down into the ZoneNumber and ZoneLetter. - * - * @private - * @param {object} utm An object literal with northing, easting, zoneNumber - * and zoneLetter properties. If an optional accuracy property is - * provided (in meters), a bounding box will be returned instead of - * latitude and longitude. - * @return {object} An object literal containing either lat and lon values - * (if no accuracy was provided), or top, right, bottom and left values - * for the bounding box calculated according to the provided accuracy. - * Returns null if the conversion failed. - */ - function UTMtoLL(utm) { - - var UTMNorthing = utm.northing; - var UTMEasting = utm.easting; - var zoneLetter = utm.zoneLetter; - var zoneNumber = utm.zoneNumber; - // check the ZoneNummber is valid - if (zoneNumber < 0 || zoneNumber > 60) { - return null; - } - - var k0 = 0.9996; - var a = 6378137.0; //ellip.radius; - var eccSquared = 0.00669438; //ellip.eccsq; - var eccPrimeSquared; - var e1 = (1 - Math.sqrt(1 - eccSquared)) / (1 + Math.sqrt(1 - eccSquared)); - var N1, T1, C1, R1, D, M; - var LongOrigin; - var mu, phi1Rad; - - // remove 500,000 meter offset for longitude - var x = UTMEasting - 500000.0; - var y = UTMNorthing; - - // We must know somehow if we are in the Northern or Southern - // hemisphere, this is the only time we use the letter So even - // if the Zone letter isn't exactly correct it should indicate - // the hemisphere correctly - if (zoneLetter < 'N') { - y -= 10000000.0; // remove 10,000,000 meter offset used - // for southern hemisphere - } - - // There are 60 zones with zone 1 being at West -180 to -174 - LongOrigin = (zoneNumber - 1) * 6 - 180 + 3; // +3 puts origin - // in middle of - // zone - - eccPrimeSquared = (eccSquared) / (1 - eccSquared); - - M = y / k0; - mu = M / (a * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256)); - - phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * mu) + (151 * e1 * e1 * e1 / 96) * Math.sin(6 * mu); - // double phi1 = ProjMath.radToDeg(phi1Rad); - - N1 = a / Math.sqrt(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad)); - T1 = Math.tan(phi1Rad) * Math.tan(phi1Rad); - C1 = eccPrimeSquared * Math.cos(phi1Rad) * Math.cos(phi1Rad); - R1 = a * (1 - eccSquared) / Math.pow(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad), 1.5); - D = x / (N1 * k0); - - var lat = phi1Rad - (N1 * Math.tan(phi1Rad) / R1) * (D * D / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * eccPrimeSquared) * D * D * D * D / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C1 * C1) * D * D * D * D * D * D / 720); - lat = radToDeg(lat); - - var lon = (D - (1 + 2 * T1 + C1) * D * D * D / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * eccPrimeSquared + 24 * T1 * T1) * D * D * D * D * D / 120) / Math.cos(phi1Rad); - lon = LongOrigin + radToDeg(lon); - - var result; - if (utm.accuracy) { - var topRight = UTMtoLL({ - northing: utm.northing + utm.accuracy, - easting: utm.easting + utm.accuracy, - zoneLetter: utm.zoneLetter, - zoneNumber: utm.zoneNumber - }); - result = { - top: topRight.lat, - right: topRight.lon, - bottom: lat, - left: lon - }; - } - else { - result = { - lat: lat, - lon: lon - }; - } - return result; - } - - /** - * Calculates the MGRS letter designator for the given latitude. - * - * @private - * @param {number} lat The latitude in WGS84 to get the letter designator - * for. - * @return {char} The letter designator. - */ - function getLetterDesignator(lat) { - //This is here as an error flag to show that the Latitude is - //outside MGRS limits - var LetterDesignator = 'Z'; - - if ((84 >= lat) && (lat >= 72)) { - LetterDesignator = 'X'; - } - else if ((72 > lat) && (lat >= 64)) { - LetterDesignator = 'W'; - } - else if ((64 > lat) && (lat >= 56)) { - LetterDesignator = 'V'; - } - else if ((56 > lat) && (lat >= 48)) { - LetterDesignator = 'U'; - } - else if ((48 > lat) && (lat >= 40)) { - LetterDesignator = 'T'; - } - else if ((40 > lat) && (lat >= 32)) { - LetterDesignator = 'S'; - } - else if ((32 > lat) && (lat >= 24)) { - LetterDesignator = 'R'; - } - else if ((24 > lat) && (lat >= 16)) { - LetterDesignator = 'Q'; - } - else if ((16 > lat) && (lat >= 8)) { - LetterDesignator = 'P'; - } - else if ((8 > lat) && (lat >= 0)) { - LetterDesignator = 'N'; - } - else if ((0 > lat) && (lat >= -8)) { - LetterDesignator = 'M'; - } - else if ((-8 > lat) && (lat >= -16)) { - LetterDesignator = 'L'; - } - else if ((-16 > lat) && (lat >= -24)) { - LetterDesignator = 'K'; - } - else if ((-24 > lat) && (lat >= -32)) { - LetterDesignator = 'J'; - } - else if ((-32 > lat) && (lat >= -40)) { - LetterDesignator = 'H'; - } - else if ((-40 > lat) && (lat >= -48)) { - LetterDesignator = 'G'; - } - else if ((-48 > lat) && (lat >= -56)) { - LetterDesignator = 'F'; - } - else if ((-56 > lat) && (lat >= -64)) { - LetterDesignator = 'E'; - } - else if ((-64 > lat) && (lat >= -72)) { - LetterDesignator = 'D'; - } - else if ((-72 > lat) && (lat >= -80)) { - LetterDesignator = 'C'; - } - return LetterDesignator; - } - - /** - * Encodes a UTM location as MGRS string. - * - * @private - * @param {object} utm An object literal with easting, northing, - * zoneLetter, zoneNumber - * @param {number} accuracy Accuracy in digits (1-5). - * @return {string} MGRS string for the given UTM location. - */ - function encode(utm, accuracy) { - // prepend with leading zeroes - var seasting = "00000" + utm.easting, - snorthing = "00000" + utm.northing; - - return utm.zoneNumber + utm.zoneLetter + get100kID(utm.easting, utm.northing, utm.zoneNumber) + seasting.substr(seasting.length - 5, accuracy) + snorthing.substr(snorthing.length - 5, accuracy); - } - - /** - * Get the two letter 100k designator for a given UTM easting, - * northing and zone number value. - * - * @private - * @param {number} easting - * @param {number} northing - * @param {number} zoneNumber - * @return the two letter 100k designator for the given UTM location. - */ - function get100kID(easting, northing, zoneNumber) { - var setParm = get100kSetForZone(zoneNumber); - var setColumn = Math.floor(easting / 100000); - var setRow = Math.floor(northing / 100000) % 20; - return getLetter100kID(setColumn, setRow, setParm); - } - - /** - * Given a UTM zone number, figure out the MGRS 100K set it is in. - * - * @private - * @param {number} i An UTM zone number. - * @return {number} the 100k set the UTM zone is in. - */ - function get100kSetForZone(i) { - var setParm = i % NUM_100K_SETS; - if (setParm === 0) { - setParm = NUM_100K_SETS; - } - - return setParm; - } - - /** - * Get the two-letter MGRS 100k designator given information - * translated from the UTM northing, easting and zone number. - * - * @private - * @param {number} column the column index as it relates to the MGRS - * 100k set spreadsheet, created from the UTM easting. - * Values are 1-8. - * @param {number} row the row index as it relates to the MGRS 100k set - * spreadsheet, created from the UTM northing value. Values - * are from 0-19. - * @param {number} parm the set block, as it relates to the MGRS 100k set - * spreadsheet, created from the UTM zone. Values are from - * 1-60. - * @return two letter MGRS 100k code. - */ - function getLetter100kID(column, row, parm) { - // colOrigin and rowOrigin are the letters at the origin of the set - var index = parm - 1; - var colOrigin = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index); - var rowOrigin = SET_ORIGIN_ROW_LETTERS.charCodeAt(index); - - // colInt and rowInt are the letters to build to return - var colInt = colOrigin + column - 1; - var rowInt = rowOrigin + row; - var rollover = false; - - if (colInt > Z) { - colInt = colInt - Z + A - 1; - rollover = true; - } - - if (colInt === I || (colOrigin < I && colInt > I) || ((colInt > I || colOrigin < I) && rollover)) { - colInt++; - } - - if (colInt === O || (colOrigin < O && colInt > O) || ((colInt > O || colOrigin < O) && rollover)) { - colInt++; - - if (colInt === I) { - colInt++; - } - } - - if (colInt > Z) { - colInt = colInt - Z + A - 1; - } - - if (rowInt > V) { - rowInt = rowInt - V + A - 1; - rollover = true; - } - else { - rollover = false; - } - - if (((rowInt === I) || ((rowOrigin < I) && (rowInt > I))) || (((rowInt > I) || (rowOrigin < I)) && rollover)) { - rowInt++; - } - - if (((rowInt === O) || ((rowOrigin < O) && (rowInt > O))) || (((rowInt > O) || (rowOrigin < O)) && rollover)) { - rowInt++; - - if (rowInt === I) { - rowInt++; - } - } - - if (rowInt > V) { - rowInt = rowInt - V + A - 1; - } - - var twoLetter = String.fromCharCode(colInt) + String.fromCharCode(rowInt); - return twoLetter; - } - - /** - * Decode the UTM parameters from a MGRS string. - * - * @private - * @param {string} mgrsString an UPPERCASE coordinate string is expected. - * @return {object} An object literal with easting, northing, zoneLetter, - * zoneNumber and accuracy (in meters) properties. - */ - function decode(mgrsString) { - - if (mgrsString && mgrsString.length === 0) { - throw ("MGRSPoint coverting from nothing"); - } - - var length = mgrsString.length; - - var hunK = null; - var sb = ""; - var testChar; - var i = 0; - - // get Zone number - while (!(/[A-Z]/).test(testChar = mgrsString.charAt(i))) { - if (i >= 2) { - throw ("MGRSPoint bad conversion from: " + mgrsString); - } - sb += testChar; - i++; - } - - var zoneNumber = parseInt(sb, 10); - - if (i === 0 || i + 3 > length) { - // A good MGRS string has to be 4-5 digits long, - // ##AAA/#AAA at least. - throw ("MGRSPoint bad conversion from: " + mgrsString); - } - - var zoneLetter = mgrsString.charAt(i++); - - // Should we check the zone letter here? Why not. - if (zoneLetter <= 'A' || zoneLetter === 'B' || zoneLetter === 'Y' || zoneLetter >= 'Z' || zoneLetter === 'I' || zoneLetter === 'O') { - throw ("MGRSPoint zone letter " + zoneLetter + " not handled: " + mgrsString); - } - - hunK = mgrsString.substring(i, i += 2); - - var set = get100kSetForZone(zoneNumber); - - var east100k = getEastingFromChar(hunK.charAt(0), set); - var north100k = getNorthingFromChar(hunK.charAt(1), set); - - // We have a bug where the northing may be 2000000 too low. - // How - // do we know when to roll over? - - while (north100k < getMinNorthing(zoneLetter)) { - north100k += 2000000; - } - - // calculate the char index for easting/northing separator - var remainder = length - i; - - if (remainder % 2 !== 0) { - throw ("MGRSPoint has to have an even number \nof digits after the zone letter and two 100km letters - front \nhalf for easting meters, second half for \nnorthing meters" + mgrsString); - } - - var sep = remainder / 2; - - var sepEasting = 0.0; - var sepNorthing = 0.0; - var accuracyBonus, sepEastingString, sepNorthingString, easting, northing; - if (sep > 0) { - accuracyBonus = 100000.0 / Math.pow(10, sep); - sepEastingString = mgrsString.substring(i, i + sep); - sepEasting = parseFloat(sepEastingString) * accuracyBonus; - sepNorthingString = mgrsString.substring(i + sep); - sepNorthing = parseFloat(sepNorthingString) * accuracyBonus; - } - - easting = sepEasting + east100k; - northing = sepNorthing + north100k; - - return { - easting: easting, - northing: northing, - zoneLetter: zoneLetter, - zoneNumber: zoneNumber, - accuracy: accuracyBonus - }; - } - - /** - * Given the first letter from a two-letter MGRS 100k zone, and given the - * MGRS table set for the zone number, figure out the easting value that - * should be added to the other, secondary easting value. - * - * @private - * @param {char} e The first letter from a two-letter MGRS 100´k zone. - * @param {number} set The MGRS table set for the zone number. - * @return {number} The easting value for the given letter and set. - */ - function getEastingFromChar(e, set) { - // colOrigin is the letter at the origin of the set for the - // column - var curCol = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set - 1); - var eastingValue = 100000.0; - var rewindMarker = false; - - while (curCol !== e.charCodeAt(0)) { - curCol++; - if (curCol === I) { - curCol++; - } - if (curCol === O) { - curCol++; - } - if (curCol > Z) { - if (rewindMarker) { - throw ("Bad character: " + e); - } - curCol = A; - rewindMarker = true; - } - eastingValue += 100000.0; - } - - return eastingValue; - } - - /** - * Given the second letter from a two-letter MGRS 100k zone, and given the - * MGRS table set for the zone number, figure out the northing value that - * should be added to the other, secondary northing value. You have to - * remember that Northings are determined from the equator, and the vertical - * cycle of letters mean a 2000000 additional northing meters. This happens - * approx. every 18 degrees of latitude. This method does *NOT* count any - * additional northings. You have to figure out how many 2000000 meters need - * to be added for the zone letter of the MGRS coordinate. - * - * @private - * @param {char} n Second letter of the MGRS 100k zone - * @param {number} set The MGRS table set number, which is dependent on the - * UTM zone number. - * @return {number} The northing value for the given letter and set. - */ - function getNorthingFromChar(n, set) { - - if (n > 'V') { - throw ("MGRSPoint given invalid Northing " + n); - } - - // rowOrigin is the letter at the origin of the set for the - // column - var curRow = SET_ORIGIN_ROW_LETTERS.charCodeAt(set - 1); - var northingValue = 0.0; - var rewindMarker = false; - - while (curRow !== n.charCodeAt(0)) { - curRow++; - if (curRow === I) { - curRow++; - } - if (curRow === O) { - curRow++; - } - // fixing a bug making whole application hang in this loop - // when 'n' is a wrong character - if (curRow > V) { - if (rewindMarker) { // making sure that this loop ends - throw ("Bad character: " + n); - } - curRow = A; - rewindMarker = true; - } - northingValue += 100000.0; - } - - return northingValue; - } - - /** - * The function getMinNorthing returns the minimum northing value of a MGRS - * zone. - * - * Ported from Geotrans' c Lattitude_Band_Value structure table. - * - * @private - * @param {char} zoneLetter The MGRS zone to get the min northing for. - * @return {number} - */ - function getMinNorthing(zoneLetter) { - var northing; - switch (zoneLetter) { - case 'C': - northing = 1100000.0; - break; - case 'D': - northing = 2000000.0; - break; - case 'E': - northing = 2800000.0; - break; - case 'F': - northing = 3700000.0; - break; - case 'G': - northing = 4600000.0; - break; - case 'H': - northing = 5500000.0; - break; - case 'J': - northing = 6400000.0; - break; - case 'K': - northing = 7300000.0; - break; - case 'L': - northing = 8200000.0; - break; - case 'M': - northing = 9100000.0; - break; - case 'N': - northing = 0.0; - break; - case 'P': - northing = 800000.0; - break; - case 'Q': - northing = 1700000.0; - break; - case 'R': - northing = 2600000.0; - break; - case 'S': - northing = 3500000.0; - break; - case 'T': - northing = 4400000.0; - break; - case 'U': - northing = 5300000.0; - break; - case 'V': - northing = 6200000.0; - break; - case 'W': - northing = 7000000.0; - break; - case 'X': - northing = 7900000.0; - break; - default: - northing = -1.0; - } - if (northing >= 0.0) { - return northing; - } - else { - throw ("Invalid zone letter: " + zoneLetter); - } - - } - - function Point(x, y, z) { - if (!(this instanceof Point)) { - return new Point(x, y, z); - } - if (Array.isArray(x)) { - this.x = x[0]; - this.y = x[1]; - this.z = x[2] || 0.0; - } else if(typeof x === 'object') { - this.x = x.x; - this.y = x.y; - this.z = x.z || 0.0; - } else if (typeof x === 'string' && typeof y === 'undefined') { - var coords = x.split(','); - this.x = parseFloat(coords[0], 10); - this.y = parseFloat(coords[1], 10); - this.z = parseFloat(coords[2], 10) || 0.0; - } else { - this.x = x; - this.y = y; - this.z = z || 0.0; - } - console.warn('proj4.Point will be removed in version 3, use proj4.toPoint'); - } - - Point.fromMGRS = function(mgrsStr) { - return new Point(toPoint$1(mgrsStr)); - }; - Point.prototype.toMGRS = function(accuracy) { - return forward$1([this.x, this.y], accuracy); - }; - - var version = "2.5.0"; - - var C00 = 1; - var C02 = 0.25; - var C04 = 0.046875; - var C06 = 0.01953125; - var C08 = 0.01068115234375; - var C22 = 0.75; - var C44 = 0.46875; - var C46 = 0.01302083333333333333; - var C48 = 0.00712076822916666666; - var C66 = 0.36458333333333333333; - var C68 = 0.00569661458333333333; - var C88 = 0.3076171875; - - var pj_enfn = function(es) { - var en = []; - en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08))); - en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08))); - var t = es * es; - en[2] = t * (C44 - es * (C46 + es * C48)); - t *= es; - en[3] = t * (C66 - es * C68); - en[4] = t * es * C88; - return en; - }; - - var pj_mlfn = function(phi, sphi, cphi, en) { - cphi *= sphi; - sphi *= sphi; - return (en[0] * phi - cphi * (en[1] + sphi * (en[2] + sphi * (en[3] + sphi * en[4])))); - }; - - var MAX_ITER = 20; - - var pj_inv_mlfn = function(arg, es, en) { - var k = 1 / (1 - es); - var phi = arg; - for (var i = MAX_ITER; i; --i) { /* rarely goes over 2 iterations */ - var s = Math.sin(phi); - var t = 1 - es * s * s; - //t = this.pj_mlfn(phi, s, Math.cos(phi), en) - arg; - //phi -= t * (t * Math.sqrt(t)) * k; - t = (pj_mlfn(phi, s, Math.cos(phi), en) - arg) * (t * Math.sqrt(t)) * k; - phi -= t; - if (Math.abs(t) < EPSLN) { - return phi; - } - } - //..reportError("cass:pj_inv_mlfn: Convergence error"); - return phi; - }; - - // Heavily based on this tmerc projection implementation - // https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/tmerc.js - - function init$2() { - this.x0 = this.x0 !== undefined ? this.x0 : 0; - this.y0 = this.y0 !== undefined ? this.y0 : 0; - this.long0 = this.long0 !== undefined ? this.long0 : 0; - this.lat0 = this.lat0 !== undefined ? this.lat0 : 0; - - if (this.es) { - this.en = pj_enfn(this.es); - this.ml0 = pj_mlfn(this.lat0, Math.sin(this.lat0), Math.cos(this.lat0), this.en); - } - } - - /** - Transverse Mercator Forward - long/lat to x/y - long/lat in radians - */ - function forward$2(p) { - var lon = p.x; - var lat = p.y; - - var delta_lon = adjust_lon(lon - this.long0); - var con; - var x, y; - var sin_phi = Math.sin(lat); - var cos_phi = Math.cos(lat); - - if (!this.es) { - var b = cos_phi * Math.sin(delta_lon); - - if ((Math.abs(Math.abs(b) - 1)) < EPSLN) { - return (93); - } - else { - x = 0.5 * this.a * this.k0 * Math.log((1 + b) / (1 - b)) + this.x0; - y = cos_phi * Math.cos(delta_lon) / Math.sqrt(1 - Math.pow(b, 2)); - b = Math.abs(y); - - if (b >= 1) { - if ((b - 1) > EPSLN) { - return (93); - } - else { - y = 0; - } - } - else { - y = Math.acos(y); - } - - if (lat < 0) { - y = -y; - } - - y = this.a * this.k0 * (y - this.lat0) + this.y0; - } - } - else { - var al = cos_phi * delta_lon; - var als = Math.pow(al, 2); - var c = this.ep2 * Math.pow(cos_phi, 2); - var cs = Math.pow(c, 2); - var tq = Math.abs(cos_phi) > EPSLN ? Math.tan(lat) : 0; - var t = Math.pow(tq, 2); - var ts = Math.pow(t, 2); - con = 1 - this.es * Math.pow(sin_phi, 2); - al = al / Math.sqrt(con); - var ml = pj_mlfn(lat, sin_phi, cos_phi, this.en); - - x = this.a * (this.k0 * al * (1 + - als / 6 * (1 - t + c + - als / 20 * (5 - 18 * t + ts + 14 * c - 58 * t * c + - als / 42 * (61 + 179 * ts - ts * t - 479 * t))))) + - this.x0; - - y = this.a * (this.k0 * (ml - this.ml0 + - sin_phi * delta_lon * al / 2 * (1 + - als / 12 * (5 - t + 9 * c + 4 * cs + - als / 30 * (61 + ts - 58 * t + 270 * c - 330 * t * c + - als / 56 * (1385 + 543 * ts - ts * t - 3111 * t)))))) + - this.y0; - } - - p.x = x; - p.y = y; - - return p; - } - - /** - Transverse Mercator Inverse - x/y to long/lat - */ - function inverse$2(p) { - var con, phi; - var lat, lon; - var x = (p.x - this.x0) * (1 / this.a); - var y = (p.y - this.y0) * (1 / this.a); - - if (!this.es) { - var f = Math.exp(x / this.k0); - var g = 0.5 * (f - 1 / f); - var temp = this.lat0 + y / this.k0; - var h = Math.cos(temp); - con = Math.sqrt((1 - Math.pow(h, 2)) / (1 + Math.pow(g, 2))); - lat = Math.asin(con); - - if (y < 0) { - lat = -lat; - } - - if ((g === 0) && (h === 0)) { - lon = 0; - } - else { - lon = adjust_lon(Math.atan2(g, h) + this.long0); - } - } - else { // ellipsoidal form - con = this.ml0 + y / this.k0; - phi = pj_inv_mlfn(con, this.es, this.en); - - if (Math.abs(phi) < HALF_PI) { - var sin_phi = Math.sin(phi); - var cos_phi = Math.cos(phi); - var tan_phi = Math.abs(cos_phi) > EPSLN ? Math.tan(phi) : 0; - var c = this.ep2 * Math.pow(cos_phi, 2); - var cs = Math.pow(c, 2); - var t = Math.pow(tan_phi, 2); - var ts = Math.pow(t, 2); - con = 1 - this.es * Math.pow(sin_phi, 2); - var d = x * Math.sqrt(con) / this.k0; - var ds = Math.pow(d, 2); - con = con * tan_phi; - - lat = phi - (con * ds / (1 - this.es)) * 0.5 * (1 - - ds / 12 * (5 + 3 * t - 9 * c * t + c - 4 * cs - - ds / 30 * (61 + 90 * t - 252 * c * t + 45 * ts + 46 * c - - ds / 56 * (1385 + 3633 * t + 4095 * ts + 1574 * ts * t)))); - - lon = adjust_lon(this.long0 + (d * (1 - - ds / 6 * (1 + 2 * t + c - - ds / 20 * (5 + 28 * t + 24 * ts + 8 * c * t + 6 * c - - ds / 42 * (61 + 662 * t + 1320 * ts + 720 * ts * t)))) / cos_phi)); - } - else { - lat = HALF_PI * sign(y); - lon = 0; - } - } - - p.x = lon; - p.y = lat; - - return p; - } - - var names$3 = ["Transverse_Mercator", "Transverse Mercator", "tmerc"]; - var tmerc = { - init: init$2, - forward: forward$2, - inverse: inverse$2, - names: names$3 - }; - - var sinh = function(x) { - var r = Math.exp(x); - r = (r - 1 / r) / 2; - return r; - }; - - var hypot = function(x, y) { - x = Math.abs(x); - y = Math.abs(y); - var a = Math.max(x, y); - var b = Math.min(x, y) / (a ? a : 1); - - return a * Math.sqrt(1 + Math.pow(b, 2)); - }; - - var log1py = function(x) { - var y = 1 + x; - var z = y - 1; - - return z === 0 ? x : x * Math.log(y) / z; - }; - - var asinhy = function(x) { - var y = Math.abs(x); - y = log1py(y * (1 + y / (hypot(1, y) + 1))); - - return x < 0 ? -y : y; - }; - - var gatg = function(pp, B) { - var cos_2B = 2 * Math.cos(2 * B); - var i = pp.length - 1; - var h1 = pp[i]; - var h2 = 0; - var h; - - while (--i >= 0) { - h = -h2 + cos_2B * h1 + pp[i]; - h2 = h1; - h1 = h; - } - - return (B + h * Math.sin(2 * B)); - }; - - var clens = function(pp, arg_r) { - var r = 2 * Math.cos(arg_r); - var i = pp.length - 1; - var hr1 = pp[i]; - var hr2 = 0; - var hr; - - while (--i >= 0) { - hr = -hr2 + r * hr1 + pp[i]; - hr2 = hr1; - hr1 = hr; - } - - return Math.sin(arg_r) * hr; - }; - - var cosh = function(x) { - var r = Math.exp(x); - r = (r + 1 / r) / 2; - return r; - }; - - var clens_cmplx = function(pp, arg_r, arg_i) { - var sin_arg_r = Math.sin(arg_r); - var cos_arg_r = Math.cos(arg_r); - var sinh_arg_i = sinh(arg_i); - var cosh_arg_i = cosh(arg_i); - var r = 2 * cos_arg_r * cosh_arg_i; - var i = -2 * sin_arg_r * sinh_arg_i; - var j = pp.length - 1; - var hr = pp[j]; - var hi1 = 0; - var hr1 = 0; - var hi = 0; - var hr2; - var hi2; - - while (--j >= 0) { - hr2 = hr1; - hi2 = hi1; - hr1 = hr; - hi1 = hi; - hr = -hr2 + r * hr1 - i * hi1 + pp[j]; - hi = -hi2 + i * hr1 + r * hi1; - } - - r = sin_arg_r * cosh_arg_i; - i = cos_arg_r * sinh_arg_i; - - return [r * hr - i * hi, r * hi + i * hr]; - }; - - // Heavily based on this etmerc projection implementation - // https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/etmerc.js - - function init$3() { - if (this.es === undefined || this.es <= 0) { - throw new Error('incorrect elliptical usage'); - } - - this.x0 = this.x0 !== undefined ? this.x0 : 0; - this.y0 = this.y0 !== undefined ? this.y0 : 0; - this.long0 = this.long0 !== undefined ? this.long0 : 0; - this.lat0 = this.lat0 !== undefined ? this.lat0 : 0; - - this.cgb = []; - this.cbg = []; - this.utg = []; - this.gtu = []; - - var f = this.es / (1 + Math.sqrt(1 - this.es)); - var n = f / (2 - f); - var np = n; - - this.cgb[0] = n * (2 + n * (-2 / 3 + n * (-2 + n * (116 / 45 + n * (26 / 45 + n * (-2854 / 675 )))))); - this.cbg[0] = n * (-2 + n * ( 2 / 3 + n * ( 4 / 3 + n * (-82 / 45 + n * (32 / 45 + n * (4642 / 4725)))))); - - np = np * n; - this.cgb[1] = np * (7 / 3 + n * (-8 / 5 + n * (-227 / 45 + n * (2704 / 315 + n * (2323 / 945))))); - this.cbg[1] = np * (5 / 3 + n * (-16 / 15 + n * ( -13 / 9 + n * (904 / 315 + n * (-1522 / 945))))); - - np = np * n; - this.cgb[2] = np * (56 / 15 + n * (-136 / 35 + n * (-1262 / 105 + n * (73814 / 2835)))); - this.cbg[2] = np * (-26 / 15 + n * (34 / 21 + n * (8 / 5 + n * (-12686 / 2835)))); - - np = np * n; - this.cgb[3] = np * (4279 / 630 + n * (-332 / 35 + n * (-399572 / 14175))); - this.cbg[3] = np * (1237 / 630 + n * (-12 / 5 + n * ( -24832 / 14175))); - - np = np * n; - this.cgb[4] = np * (4174 / 315 + n * (-144838 / 6237)); - this.cbg[4] = np * (-734 / 315 + n * (109598 / 31185)); - - np = np * n; - this.cgb[5] = np * (601676 / 22275); - this.cbg[5] = np * (444337 / 155925); - - np = Math.pow(n, 2); - this.Qn = this.k0 / (1 + n) * (1 + np * (1 / 4 + np * (1 / 64 + np / 256))); - - this.utg[0] = n * (-0.5 + n * ( 2 / 3 + n * (-37 / 96 + n * ( 1 / 360 + n * (81 / 512 + n * (-96199 / 604800)))))); - this.gtu[0] = n * (0.5 + n * (-2 / 3 + n * (5 / 16 + n * (41 / 180 + n * (-127 / 288 + n * (7891 / 37800)))))); - - this.utg[1] = np * (-1 / 48 + n * (-1 / 15 + n * (437 / 1440 + n * (-46 / 105 + n * (1118711 / 3870720))))); - this.gtu[1] = np * (13 / 48 + n * (-3 / 5 + n * (557 / 1440 + n * (281 / 630 + n * (-1983433 / 1935360))))); - - np = np * n; - this.utg[2] = np * (-17 / 480 + n * (37 / 840 + n * (209 / 4480 + n * (-5569 / 90720 )))); - this.gtu[2] = np * (61 / 240 + n * (-103 / 140 + n * (15061 / 26880 + n * (167603 / 181440)))); - - np = np * n; - this.utg[3] = np * (-4397 / 161280 + n * (11 / 504 + n * (830251 / 7257600))); - this.gtu[3] = np * (49561 / 161280 + n * (-179 / 168 + n * (6601661 / 7257600))); - - np = np * n; - this.utg[4] = np * (-4583 / 161280 + n * (108847 / 3991680)); - this.gtu[4] = np * (34729 / 80640 + n * (-3418889 / 1995840)); - - np = np * n; - this.utg[5] = np * (-20648693 / 638668800); - this.gtu[5] = np * (212378941 / 319334400); - - var Z = gatg(this.cbg, this.lat0); - this.Zb = -this.Qn * (Z + clens(this.gtu, 2 * Z)); - } - - function forward$3(p) { - var Ce = adjust_lon(p.x - this.long0); - var Cn = p.y; - - Cn = gatg(this.cbg, Cn); - var sin_Cn = Math.sin(Cn); - var cos_Cn = Math.cos(Cn); - var sin_Ce = Math.sin(Ce); - var cos_Ce = Math.cos(Ce); - - Cn = Math.atan2(sin_Cn, cos_Ce * cos_Cn); - Ce = Math.atan2(sin_Ce * cos_Cn, hypot(sin_Cn, cos_Cn * cos_Ce)); - Ce = asinhy(Math.tan(Ce)); - - var tmp = clens_cmplx(this.gtu, 2 * Cn, 2 * Ce); - - Cn = Cn + tmp[0]; - Ce = Ce + tmp[1]; - - var x; - var y; - - if (Math.abs(Ce) <= 2.623395162778) { - x = this.a * (this.Qn * Ce) + this.x0; - y = this.a * (this.Qn * Cn + this.Zb) + this.y0; - } - else { - x = Infinity; - y = Infinity; - } - - p.x = x; - p.y = y; - - return p; - } - - function inverse$3(p) { - var Ce = (p.x - this.x0) * (1 / this.a); - var Cn = (p.y - this.y0) * (1 / this.a); - - Cn = (Cn - this.Zb) / this.Qn; - Ce = Ce / this.Qn; - - var lon; - var lat; - - if (Math.abs(Ce) <= 2.623395162778) { - var tmp = clens_cmplx(this.utg, 2 * Cn, 2 * Ce); - - Cn = Cn + tmp[0]; - Ce = Ce + tmp[1]; - Ce = Math.atan(sinh(Ce)); - - var sin_Cn = Math.sin(Cn); - var cos_Cn = Math.cos(Cn); - var sin_Ce = Math.sin(Ce); - var cos_Ce = Math.cos(Ce); - - Cn = Math.atan2(sin_Cn * cos_Ce, hypot(sin_Ce, cos_Ce * cos_Cn)); - Ce = Math.atan2(sin_Ce, cos_Ce * cos_Cn); - - lon = adjust_lon(Ce + this.long0); - lat = gatg(this.cgb, Cn); - } - else { - lon = Infinity; - lat = Infinity; - } - - p.x = lon; - p.y = lat; - - return p; - } - - var names$4 = ["Extended_Transverse_Mercator", "Extended Transverse Mercator", "etmerc"]; - var etmerc = { - init: init$3, - forward: forward$3, - inverse: inverse$3, - names: names$4 - }; - - var adjust_zone = function(zone, lon) { - if (zone === undefined) { - zone = Math.floor((adjust_lon(lon) + Math.PI) * 30 / Math.PI) + 1; - - if (zone < 0) { - return 0; - } else if (zone > 60) { - return 60; - } - } - return zone; - }; - - var dependsOn = 'etmerc'; - function init$4() { - var zone = adjust_zone(this.zone, this.long0); - if (zone === undefined) { - throw new Error('unknown utm zone'); - } - this.lat0 = 0; - this.long0 = ((6 * Math.abs(zone)) - 183) * D2R; - this.x0 = 500000; - this.y0 = this.utmSouth ? 10000000 : 0; - this.k0 = 0.9996; - - etmerc.init.apply(this); - this.forward = etmerc.forward; - this.inverse = etmerc.inverse; - } - - var names$5 = ["Universal Transverse Mercator System", "utm"]; - var utm = { - init: init$4, - names: names$5, - dependsOn: dependsOn - }; - - var srat = function(esinp, exp) { - return (Math.pow((1 - esinp) / (1 + esinp), exp)); - }; - - var MAX_ITER$1 = 20; - function init$6() { - var sphi = Math.sin(this.lat0); - var cphi = Math.cos(this.lat0); - cphi *= cphi; - this.rc = Math.sqrt(1 - this.es) / (1 - this.es * sphi * sphi); - this.C = Math.sqrt(1 + this.es * cphi * cphi / (1 - this.es)); - this.phic0 = Math.asin(sphi / this.C); - this.ratexp = 0.5 * this.C * this.e; - this.K = Math.tan(0.5 * this.phic0 + FORTPI) / (Math.pow(Math.tan(0.5 * this.lat0 + FORTPI), this.C) * srat(this.e * sphi, this.ratexp)); - } - - function forward$5(p) { - var lon = p.x; - var lat = p.y; - - p.y = 2 * Math.atan(this.K * Math.pow(Math.tan(0.5 * lat + FORTPI), this.C) * srat(this.e * Math.sin(lat), this.ratexp)) - HALF_PI; - p.x = this.C * lon; - return p; - } - - function inverse$5(p) { - var DEL_TOL = 1e-14; - var lon = p.x / this.C; - var lat = p.y; - var num = Math.pow(Math.tan(0.5 * lat + FORTPI) / this.K, 1 / this.C); - for (var i = MAX_ITER$1; i > 0; --i) { - lat = 2 * Math.atan(num * srat(this.e * Math.sin(p.y), - 0.5 * this.e)) - HALF_PI; - if (Math.abs(lat - p.y) < DEL_TOL) { - break; - } - p.y = lat; - } - /* convergence failed */ - if (!i) { - return null; - } - p.x = lon; - p.y = lat; - return p; - } - - var names$7 = ["gauss"]; - var gauss = { - init: init$6, - forward: forward$5, - inverse: inverse$5, - names: names$7 - }; - - function init$5() { - gauss.init.apply(this); - if (!this.rc) { - return; - } - this.sinc0 = Math.sin(this.phic0); - this.cosc0 = Math.cos(this.phic0); - this.R2 = 2 * this.rc; - if (!this.title) { - this.title = "Oblique Stereographic Alternative"; - } - } - - function forward$4(p) { - var sinc, cosc, cosl, k; - p.x = adjust_lon(p.x - this.long0); - gauss.forward.apply(this, [p]); - sinc = Math.sin(p.y); - cosc = Math.cos(p.y); - cosl = Math.cos(p.x); - k = this.k0 * this.R2 / (1 + this.sinc0 * sinc + this.cosc0 * cosc * cosl); - p.x = k * cosc * Math.sin(p.x); - p.y = k * (this.cosc0 * sinc - this.sinc0 * cosc * cosl); - p.x = this.a * p.x + this.x0; - p.y = this.a * p.y + this.y0; - return p; - } - - function inverse$4(p) { - var sinc, cosc, lon, lat, rho; - p.x = (p.x - this.x0) / this.a; - p.y = (p.y - this.y0) / this.a; - - p.x /= this.k0; - p.y /= this.k0; - if ((rho = Math.sqrt(p.x * p.x + p.y * p.y))) { - var c = 2 * Math.atan2(rho, this.R2); - sinc = Math.sin(c); - cosc = Math.cos(c); - lat = Math.asin(cosc * this.sinc0 + p.y * sinc * this.cosc0 / rho); - lon = Math.atan2(p.x * sinc, rho * this.cosc0 * cosc - p.y * this.sinc0 * sinc); - } - else { - lat = this.phic0; - lon = 0; - } - - p.x = lon; - p.y = lat; - gauss.inverse.apply(this, [p]); - p.x = adjust_lon(p.x + this.long0); - return p; - } - - var names$6 = ["Stereographic_North_Pole", "Oblique_Stereographic", "Polar_Stereographic", "sterea","Oblique Stereographic Alternative","Double_Stereographic"]; - var sterea = { - init: init$5, - forward: forward$4, - inverse: inverse$4, - names: names$6 - }; - - function ssfn_(phit, sinphi, eccen) { - sinphi *= eccen; - return (Math.tan(0.5 * (HALF_PI + phit)) * Math.pow((1 - sinphi) / (1 + sinphi), 0.5 * eccen)); - } - - function init$7() { - this.coslat0 = Math.cos(this.lat0); - this.sinlat0 = Math.sin(this.lat0); - if (this.sphere) { - if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) { - this.k0 = 0.5 * (1 + sign(this.lat0) * Math.sin(this.lat_ts)); - } - } - else { - if (Math.abs(this.coslat0) <= EPSLN) { - if (this.lat0 > 0) { - //North pole - //trace('stere:north pole'); - this.con = 1; - } - else { - //South pole - //trace('stere:south pole'); - this.con = -1; - } - } - this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e)); - if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) { - this.k0 = 0.5 * this.cons * msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / tsfnz(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts)); - } - this.ms1 = msfnz(this.e, this.sinlat0, this.coslat0); - this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - HALF_PI; - this.cosX0 = Math.cos(this.X0); - this.sinX0 = Math.sin(this.X0); - } - } - - // Stereographic forward equations--mapping lat,long to x,y - function forward$6(p) { - var lon = p.x; - var lat = p.y; - var sinlat = Math.sin(lat); - var coslat = Math.cos(lat); - var A, X, sinX, cosX, ts, rh; - var dlon = adjust_lon(lon - this.long0); - - if (Math.abs(Math.abs(lon - this.long0) - Math.PI) <= EPSLN && Math.abs(lat + this.lat0) <= EPSLN) { - //case of the origine point - //trace('stere:this is the origin point'); - p.x = NaN; - p.y = NaN; - return p; - } - if (this.sphere) { - //trace('stere:sphere case'); - A = 2 * this.k0 / (1 + this.sinlat0 * sinlat + this.coslat0 * coslat * Math.cos(dlon)); - p.x = this.a * A * coslat * Math.sin(dlon) + this.x0; - p.y = this.a * A * (this.coslat0 * sinlat - this.sinlat0 * coslat * Math.cos(dlon)) + this.y0; - return p; - } - else { - X = 2 * Math.atan(this.ssfn_(lat, sinlat, this.e)) - HALF_PI; - cosX = Math.cos(X); - sinX = Math.sin(X); - if (Math.abs(this.coslat0) <= EPSLN) { - ts = tsfnz(this.e, lat * this.con, this.con * sinlat); - rh = 2 * this.a * this.k0 * ts / this.cons; - p.x = this.x0 + rh * Math.sin(lon - this.long0); - p.y = this.y0 - this.con * rh * Math.cos(lon - this.long0); - //trace(p.toString()); - return p; - } - else if (Math.abs(this.sinlat0) < EPSLN) { - //Eq - //trace('stere:equateur'); - A = 2 * this.a * this.k0 / (1 + cosX * Math.cos(dlon)); - p.y = A * sinX; - } - else { - //other case - //trace('stere:normal case'); - A = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * sinX + this.cosX0 * cosX * Math.cos(dlon))); - p.y = A * (this.cosX0 * sinX - this.sinX0 * cosX * Math.cos(dlon)) + this.y0; - } - p.x = A * cosX * Math.sin(dlon) + this.x0; - } - //trace(p.toString()); - return p; - } - - //* Stereographic inverse equations--mapping x,y to lat/long - function inverse$6(p) { - p.x -= this.x0; - p.y -= this.y0; - var lon, lat, ts, ce, Chi; - var rh = Math.sqrt(p.x * p.x + p.y * p.y); - if (this.sphere) { - var c = 2 * Math.atan(rh / (2 * this.a * this.k0)); - lon = this.long0; - lat = this.lat0; - if (rh <= EPSLN) { - p.x = lon; - p.y = lat; - return p; - } - lat = Math.asin(Math.cos(c) * this.sinlat0 + p.y * Math.sin(c) * this.coslat0 / rh); - if (Math.abs(this.coslat0) < EPSLN) { - if (this.lat0 > 0) { - lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y)); - } - else { - lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y)); - } - } - else { - lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(c), rh * this.coslat0 * Math.cos(c) - p.y * this.sinlat0 * Math.sin(c))); - } - p.x = lon; - p.y = lat; - return p; - } - else { - if (Math.abs(this.coslat0) <= EPSLN) { - if (rh <= EPSLN) { - lat = this.lat0; - lon = this.long0; - p.x = lon; - p.y = lat; - //trace(p.toString()); - return p; - } - p.x *= this.con; - p.y *= this.con; - ts = rh * this.cons / (2 * this.a * this.k0); - lat = this.con * phi2z(this.e, ts); - lon = this.con * adjust_lon(this.con * this.long0 + Math.atan2(p.x, - 1 * p.y)); - } - else { - ce = 2 * Math.atan(rh * this.cosX0 / (2 * this.a * this.k0 * this.ms1)); - lon = this.long0; - if (rh <= EPSLN) { - Chi = this.X0; - } - else { - Chi = Math.asin(Math.cos(ce) * this.sinX0 + p.y * Math.sin(ce) * this.cosX0 / rh); - lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(ce), rh * this.cosX0 * Math.cos(ce) - p.y * this.sinX0 * Math.sin(ce))); - } - lat = -1 * phi2z(this.e, Math.tan(0.5 * (HALF_PI + Chi))); - } - } - p.x = lon; - p.y = lat; - - //trace(p.toString()); - return p; - - } - - var names$8 = ["stere", "Stereographic_South_Pole", "Polar Stereographic (variant B)"]; - var stere = { - init: init$7, - forward: forward$6, - inverse: inverse$6, - names: names$8, - ssfn_: ssfn_ - }; - - /* - references: - Formules et constantes pour le Calcul pour la - projection cylindrique conforme à axe oblique et pour la transformation entre - des systèmes de référence. - http://www.swisstopo.admin.ch/internet/swisstopo/fr/home/topics/survey/sys/refsys/switzerland.parsysrelated1.31216.downloadList.77004.DownloadFile.tmp/swissprojectionfr.pdf - */ - - function init$8() { - var phy0 = this.lat0; - this.lambda0 = this.long0; - var sinPhy0 = Math.sin(phy0); - var semiMajorAxis = this.a; - var invF = this.rf; - var flattening = 1 / invF; - var e2 = 2 * flattening - Math.pow(flattening, 2); - var e = this.e = Math.sqrt(e2); - this.R = this.k0 * semiMajorAxis * Math.sqrt(1 - e2) / (1 - e2 * Math.pow(sinPhy0, 2)); - this.alpha = Math.sqrt(1 + e2 / (1 - e2) * Math.pow(Math.cos(phy0), 4)); - this.b0 = Math.asin(sinPhy0 / this.alpha); - var k1 = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2)); - var k2 = Math.log(Math.tan(Math.PI / 4 + phy0 / 2)); - var k3 = Math.log((1 + e * sinPhy0) / (1 - e * sinPhy0)); - this.K = k1 - this.alpha * k2 + this.alpha * e / 2 * k3; - } - - function forward$7(p) { - var Sa1 = Math.log(Math.tan(Math.PI / 4 - p.y / 2)); - var Sa2 = this.e / 2 * Math.log((1 + this.e * Math.sin(p.y)) / (1 - this.e * Math.sin(p.y))); - var S = -this.alpha * (Sa1 + Sa2) + this.K; - - // spheric latitude - var b = 2 * (Math.atan(Math.exp(S)) - Math.PI / 4); - - // spheric longitude - var I = this.alpha * (p.x - this.lambda0); - - // psoeudo equatorial rotation - var rotI = Math.atan(Math.sin(I) / (Math.sin(this.b0) * Math.tan(b) + Math.cos(this.b0) * Math.cos(I))); - - var rotB = Math.asin(Math.cos(this.b0) * Math.sin(b) - Math.sin(this.b0) * Math.cos(b) * Math.cos(I)); - - p.y = this.R / 2 * Math.log((1 + Math.sin(rotB)) / (1 - Math.sin(rotB))) + this.y0; - p.x = this.R * rotI + this.x0; - return p; - } - - function inverse$7(p) { - var Y = p.x - this.x0; - var X = p.y - this.y0; - - var rotI = Y / this.R; - var rotB = 2 * (Math.atan(Math.exp(X / this.R)) - Math.PI / 4); - - var b = Math.asin(Math.cos(this.b0) * Math.sin(rotB) + Math.sin(this.b0) * Math.cos(rotB) * Math.cos(rotI)); - var I = Math.atan(Math.sin(rotI) / (Math.cos(this.b0) * Math.cos(rotI) - Math.sin(this.b0) * Math.tan(rotB))); - - var lambda = this.lambda0 + I / this.alpha; - - var S = 0; - var phy = b; - var prevPhy = -1000; - var iteration = 0; - while (Math.abs(phy - prevPhy) > 0.0000001) { - if (++iteration > 20) { - //...reportError("omercFwdInfinity"); - return; - } - //S = Math.log(Math.tan(Math.PI / 4 + phy / 2)); - S = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + b / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(phy)) / 2)); - prevPhy = phy; - phy = 2 * Math.atan(Math.exp(S)) - Math.PI / 2; - } - - p.x = lambda; - p.y = phy; - return p; - } - - var names$9 = ["somerc"]; - var somerc = { - init: init$8, - forward: forward$7, - inverse: inverse$7, - names: names$9 - }; - - /* Initialize the Oblique Mercator projection - ------------------------------------------*/ - function init$9() { - this.no_off = this.no_off || false; - this.no_rot = this.no_rot || false; - - if (isNaN(this.k0)) { - this.k0 = 1; - } - var sinlat = Math.sin(this.lat0); - var coslat = Math.cos(this.lat0); - var con = this.e * sinlat; - - this.bl = Math.sqrt(1 + this.es / (1 - this.es) * Math.pow(coslat, 4)); - this.al = this.a * this.bl * this.k0 * Math.sqrt(1 - this.es) / (1 - con * con); - var t0 = tsfnz(this.e, this.lat0, sinlat); - var dl = this.bl / coslat * Math.sqrt((1 - this.es) / (1 - con * con)); - if (dl * dl < 1) { - dl = 1; - } - var fl; - var gl; - if (!isNaN(this.longc)) { - //Central point and azimuth method - - if (this.lat0 >= 0) { - fl = dl + Math.sqrt(dl * dl - 1); - } - else { - fl = dl - Math.sqrt(dl * dl - 1); - } - this.el = fl * Math.pow(t0, this.bl); - gl = 0.5 * (fl - 1 / fl); - this.gamma0 = Math.asin(Math.sin(this.alpha) / dl); - this.long0 = this.longc - Math.asin(gl * Math.tan(this.gamma0)) / this.bl; - - } - else { - //2 points method - var t1 = tsfnz(this.e, this.lat1, Math.sin(this.lat1)); - var t2 = tsfnz(this.e, this.lat2, Math.sin(this.lat2)); - if (this.lat0 >= 0) { - this.el = (dl + Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl); - } - else { - this.el = (dl - Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl); - } - var hl = Math.pow(t1, this.bl); - var ll = Math.pow(t2, this.bl); - fl = this.el / hl; - gl = 0.5 * (fl - 1 / fl); - var jl = (this.el * this.el - ll * hl) / (this.el * this.el + ll * hl); - var pl = (ll - hl) / (ll + hl); - var dlon12 = adjust_lon(this.long1 - this.long2); - this.long0 = 0.5 * (this.long1 + this.long2) - Math.atan(jl * Math.tan(0.5 * this.bl * (dlon12)) / pl) / this.bl; - this.long0 = adjust_lon(this.long0); - var dlon10 = adjust_lon(this.long1 - this.long0); - this.gamma0 = Math.atan(Math.sin(this.bl * (dlon10)) / gl); - this.alpha = Math.asin(dl * Math.sin(this.gamma0)); - } - - if (this.no_off) { - this.uc = 0; - } - else { - if (this.lat0 >= 0) { - this.uc = this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha)); - } - else { - this.uc = -1 * this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha)); - } - } - - } - - /* Oblique Mercator forward equations--mapping lat,long to x,y - ----------------------------------------------------------*/ - function forward$8(p) { - var lon = p.x; - var lat = p.y; - var dlon = adjust_lon(lon - this.long0); - var us, vs; - var con; - if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) { - if (lat > 0) { - con = -1; - } - else { - con = 1; - } - vs = this.al / this.bl * Math.log(Math.tan(FORTPI + con * this.gamma0 * 0.5)); - us = -1 * con * HALF_PI * this.al / this.bl; - } - else { - var t = tsfnz(this.e, lat, Math.sin(lat)); - var ql = this.el / Math.pow(t, this.bl); - var sl = 0.5 * (ql - 1 / ql); - var tl = 0.5 * (ql + 1 / ql); - var vl = Math.sin(this.bl * (dlon)); - var ul = (sl * Math.sin(this.gamma0) - vl * Math.cos(this.gamma0)) / tl; - if (Math.abs(Math.abs(ul) - 1) <= EPSLN) { - vs = Number.POSITIVE_INFINITY; - } - else { - vs = 0.5 * this.al * Math.log((1 - ul) / (1 + ul)) / this.bl; - } - if (Math.abs(Math.cos(this.bl * (dlon))) <= EPSLN) { - us = this.al * this.bl * (dlon); - } - else { - us = this.al * Math.atan2(sl * Math.cos(this.gamma0) + vl * Math.sin(this.gamma0), Math.cos(this.bl * dlon)) / this.bl; - } - } - - if (this.no_rot) { - p.x = this.x0 + us; - p.y = this.y0 + vs; - } - else { - - us -= this.uc; - p.x = this.x0 + vs * Math.cos(this.alpha) + us * Math.sin(this.alpha); - p.y = this.y0 + us * Math.cos(this.alpha) - vs * Math.sin(this.alpha); - } - return p; - } - - function inverse$8(p) { - var us, vs; - if (this.no_rot) { - vs = p.y - this.y0; - us = p.x - this.x0; - } - else { - vs = (p.x - this.x0) * Math.cos(this.alpha) - (p.y - this.y0) * Math.sin(this.alpha); - us = (p.y - this.y0) * Math.cos(this.alpha) + (p.x - this.x0) * Math.sin(this.alpha); - us += this.uc; - } - var qp = Math.exp(-1 * this.bl * vs / this.al); - var sp = 0.5 * (qp - 1 / qp); - var tp = 0.5 * (qp + 1 / qp); - var vp = Math.sin(this.bl * us / this.al); - var up = (vp * Math.cos(this.gamma0) + sp * Math.sin(this.gamma0)) / tp; - var ts = Math.pow(this.el / Math.sqrt((1 + up) / (1 - up)), 1 / this.bl); - if (Math.abs(up - 1) < EPSLN) { - p.x = this.long0; - p.y = HALF_PI; - } - else if (Math.abs(up + 1) < EPSLN) { - p.x = this.long0; - p.y = -1 * HALF_PI; - } - else { - p.y = phi2z(this.e, ts); - p.x = adjust_lon(this.long0 - Math.atan2(sp * Math.cos(this.gamma0) - vp * Math.sin(this.gamma0), Math.cos(this.bl * us / this.al)) / this.bl); - } - return p; - } - - var names$10 = ["Hotine_Oblique_Mercator", "Hotine Oblique Mercator", "Hotine_Oblique_Mercator_Azimuth_Natural_Origin", "Hotine_Oblique_Mercator_Azimuth_Center", "omerc"]; - var omerc = { - init: init$9, - forward: forward$8, - inverse: inverse$8, - names: names$10 - }; - - function init$10() { - - // array of: r_maj,r_min,lat1,lat2,c_lon,c_lat,false_east,false_north - //double c_lat; /* center latitude */ - //double c_lon; /* center longitude */ - //double lat1; /* first standard parallel */ - //double lat2; /* second standard parallel */ - //double r_maj; /* major axis */ - //double r_min; /* minor axis */ - //double false_east; /* x offset in meters */ - //double false_north; /* y offset in meters */ - - if (!this.lat2) { - this.lat2 = this.lat1; - } //if lat2 is not defined - if (!this.k0) { - this.k0 = 1; - } - this.x0 = this.x0 || 0; - this.y0 = this.y0 || 0; - // Standard Parallels cannot be equal and on opposite sides of the equator - if (Math.abs(this.lat1 + this.lat2) < EPSLN) { - return; - } - - var temp = this.b / this.a; - this.e = Math.sqrt(1 - temp * temp); - - var sin1 = Math.sin(this.lat1); - var cos1 = Math.cos(this.lat1); - var ms1 = msfnz(this.e, sin1, cos1); - var ts1 = tsfnz(this.e, this.lat1, sin1); - - var sin2 = Math.sin(this.lat2); - var cos2 = Math.cos(this.lat2); - var ms2 = msfnz(this.e, sin2, cos2); - var ts2 = tsfnz(this.e, this.lat2, sin2); - - var ts0 = tsfnz(this.e, this.lat0, Math.sin(this.lat0)); - - if (Math.abs(this.lat1 - this.lat2) > EPSLN) { - this.ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2); - } - else { - this.ns = sin1; - } - if (isNaN(this.ns)) { - this.ns = sin1; - } - this.f0 = ms1 / (this.ns * Math.pow(ts1, this.ns)); - this.rh = this.a * this.f0 * Math.pow(ts0, this.ns); - if (!this.title) { - this.title = "Lambert Conformal Conic"; - } - } - - // Lambert Conformal conic forward equations--mapping lat,long to x,y - // ----------------------------------------------------------------- - function forward$9(p) { - - var lon = p.x; - var lat = p.y; - - // singular cases : - if (Math.abs(2 * Math.abs(lat) - Math.PI) <= EPSLN) { - lat = sign(lat) * (HALF_PI - 2 * EPSLN); - } - - var con = Math.abs(Math.abs(lat) - HALF_PI); - var ts, rh1; - if (con > EPSLN) { - ts = tsfnz(this.e, lat, Math.sin(lat)); - rh1 = this.a * this.f0 * Math.pow(ts, this.ns); - } - else { - con = lat * this.ns; - if (con <= 0) { - return null; - } - rh1 = 0; - } - var theta = this.ns * adjust_lon(lon - this.long0); - p.x = this.k0 * (rh1 * Math.sin(theta)) + this.x0; - p.y = this.k0 * (this.rh - rh1 * Math.cos(theta)) + this.y0; - - return p; - } - - // Lambert Conformal Conic inverse equations--mapping x,y to lat/long - // ----------------------------------------------------------------- - function inverse$9(p) { - - var rh1, con, ts; - var lat, lon; - var x = (p.x - this.x0) / this.k0; - var y = (this.rh - (p.y - this.y0) / this.k0); - if (this.ns > 0) { - rh1 = Math.sqrt(x * x + y * y); - con = 1; - } - else { - rh1 = -Math.sqrt(x * x + y * y); - con = -1; - } - var theta = 0; - if (rh1 !== 0) { - theta = Math.atan2((con * x), (con * y)); - } - if ((rh1 !== 0) || (this.ns > 0)) { - con = 1 / this.ns; - ts = Math.pow((rh1 / (this.a * this.f0)), con); - lat = phi2z(this.e, ts); - if (lat === -9999) { - return null; - } - } - else { - lat = -HALF_PI; - } - lon = adjust_lon(theta / this.ns + this.long0); - - p.x = lon; - p.y = lat; - return p; - } - - var names$11 = ["Lambert Tangential Conformal Conic Projection", "Lambert_Conformal_Conic", "Lambert_Conformal_Conic_2SP", "lcc"]; - var lcc = { - init: init$10, - forward: forward$9, - inverse: inverse$9, - names: names$11 - }; - - function init$11() { - this.a = 6377397.155; - this.es = 0.006674372230614; - this.e = Math.sqrt(this.es); - if (!this.lat0) { - this.lat0 = 0.863937979737193; - } - if (!this.long0) { - this.long0 = 0.7417649320975901 - 0.308341501185665; - } - /* if scale not set default to 0.9999 */ - if (!this.k0) { - this.k0 = 0.9999; - } - this.s45 = 0.785398163397448; /* 45 */ - this.s90 = 2 * this.s45; - this.fi0 = this.lat0; - this.e2 = this.es; - this.e = Math.sqrt(this.e2); - this.alfa = Math.sqrt(1 + (this.e2 * Math.pow(Math.cos(this.fi0), 4)) / (1 - this.e2)); - this.uq = 1.04216856380474; - this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa); - this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2); - this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g; - this.k1 = this.k0; - this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2)); - this.s0 = 1.37008346281555; - this.n = Math.sin(this.s0); - this.ro0 = this.k1 * this.n0 / Math.tan(this.s0); - this.ad = this.s90 - this.uq; - } - - /* ellipsoid */ - /* calculate xy from lat/lon */ - /* Constants, identical to inverse transform function */ - function forward$10(p) { - var gfi, u, deltav, s, d, eps, ro; - var lon = p.x; - var lat = p.y; - var delta_lon = adjust_lon(lon - this.long0); - /* Transformation */ - gfi = Math.pow(((1 + this.e * Math.sin(lat)) / (1 - this.e * Math.sin(lat))), (this.alfa * this.e / 2)); - u = 2 * (Math.atan(this.k * Math.pow(Math.tan(lat / 2 + this.s45), this.alfa) / gfi) - this.s45); - deltav = -delta_lon * this.alfa; - s = Math.asin(Math.cos(this.ad) * Math.sin(u) + Math.sin(this.ad) * Math.cos(u) * Math.cos(deltav)); - d = Math.asin(Math.cos(u) * Math.sin(deltav) / Math.cos(s)); - eps = this.n * d; - ro = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(s / 2 + this.s45), this.n); - p.y = ro * Math.cos(eps) / 1; - p.x = ro * Math.sin(eps) / 1; - - if (!this.czech) { - p.y *= -1; - p.x *= -1; - } - return (p); - } - - /* calculate lat/lon from xy */ - function inverse$10(p) { - var u, deltav, s, d, eps, ro, fi1; - var ok; - - /* Transformation */ - /* revert y, x*/ - var tmp = p.x; - p.x = p.y; - p.y = tmp; - if (!this.czech) { - p.y *= -1; - p.x *= -1; - } - ro = Math.sqrt(p.x * p.x + p.y * p.y); - eps = Math.atan2(p.y, p.x); - d = eps / Math.sin(this.s0); - s = 2 * (Math.atan(Math.pow(this.ro0 / ro, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45); - u = Math.asin(Math.cos(this.ad) * Math.sin(s) - Math.sin(this.ad) * Math.cos(s) * Math.cos(d)); - deltav = Math.asin(Math.cos(s) * Math.sin(d) / Math.cos(u)); - p.x = this.long0 - deltav / this.alfa; - fi1 = u; - ok = 0; - var iter = 0; - do { - p.y = 2 * (Math.atan(Math.pow(this.k, - 1 / this.alfa) * Math.pow(Math.tan(u / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(fi1)) / (1 - this.e * Math.sin(fi1)), this.e / 2)) - this.s45); - if (Math.abs(fi1 - p.y) < 0.0000000001) { - ok = 1; - } - fi1 = p.y; - iter += 1; - } while (ok === 0 && iter < 15); - if (iter >= 15) { - return null; - } - - return (p); - } - - var names$12 = ["Krovak", "krovak"]; - var krovak = { - init: init$11, - forward: forward$10, - inverse: inverse$10, - names: names$12 - }; - - var mlfn = function(e0, e1, e2, e3, phi) { - return (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi)); - }; - - var e0fn = function(x) { - return (1 - 0.25 * x * (1 + x / 16 * (3 + 1.25 * x))); - }; - - var e1fn = function(x) { - return (0.375 * x * (1 + 0.25 * x * (1 + 0.46875 * x))); - }; - - var e2fn = function(x) { - return (0.05859375 * x * x * (1 + 0.75 * x)); - }; - - var e3fn = function(x) { - return (x * x * x * (35 / 3072)); - }; - - var gN = function(a, e, sinphi) { - var temp = e * sinphi; - return a / Math.sqrt(1 - temp * temp); - }; - - var adjust_lat = function(x) { - return (Math.abs(x) < HALF_PI) ? x : (x - (sign(x) * Math.PI)); - }; - - var imlfn = function(ml, e0, e1, e2, e3) { - var phi; - var dphi; - - phi = ml / e0; - for (var i = 0; i < 15; i++) { - dphi = (ml - (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi))) / (e0 - 2 * e1 * Math.cos(2 * phi) + 4 * e2 * Math.cos(4 * phi) - 6 * e3 * Math.cos(6 * phi)); - phi += dphi; - if (Math.abs(dphi) <= 0.0000000001) { - return phi; - } - } - - //..reportError("IMLFN-CONV:Latitude failed to converge after 15 iterations"); - return NaN; - }; - - function init$12() { - if (!this.sphere) { - this.e0 = e0fn(this.es); - this.e1 = e1fn(this.es); - this.e2 = e2fn(this.es); - this.e3 = e3fn(this.es); - this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); - } - } - - /* Cassini forward equations--mapping lat,long to x,y - -----------------------------------------------------------------------*/ - function forward$11(p) { - - /* Forward equations - -----------------*/ - var x, y; - var lam = p.x; - var phi = p.y; - lam = adjust_lon(lam - this.long0); - - if (this.sphere) { - x = this.a * Math.asin(Math.cos(phi) * Math.sin(lam)); - y = this.a * (Math.atan2(Math.tan(phi), Math.cos(lam)) - this.lat0); - } - else { - //ellipsoid - var sinphi = Math.sin(phi); - var cosphi = Math.cos(phi); - var nl = gN(this.a, this.e, sinphi); - var tl = Math.tan(phi) * Math.tan(phi); - var al = lam * Math.cos(phi); - var asq = al * al; - var cl = this.es * cosphi * cosphi / (1 - this.es); - var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi); - - x = nl * al * (1 - asq * tl * (1 / 6 - (8 - tl + 8 * cl) * asq / 120)); - y = ml - this.ml0 + nl * sinphi / cosphi * asq * (0.5 + (5 - tl + 6 * cl) * asq / 24); - - - } - - p.x = x + this.x0; - p.y = y + this.y0; - return p; - } - - /* Inverse equations - -----------------*/ - function inverse$11(p) { - p.x -= this.x0; - p.y -= this.y0; - var x = p.x / this.a; - var y = p.y / this.a; - var phi, lam; - - if (this.sphere) { - var dd = y + this.lat0; - phi = Math.asin(Math.sin(dd) * Math.cos(x)); - lam = Math.atan2(Math.tan(x), Math.cos(dd)); - } - else { - /* ellipsoid */ - var ml1 = this.ml0 / this.a + y; - var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3); - if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) { - p.x = this.long0; - p.y = HALF_PI; - if (y < 0) { - p.y *= -1; - } - return p; - } - var nl1 = gN(this.a, this.e, Math.sin(phi1)); - - var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es); - var tl1 = Math.pow(Math.tan(phi1), 2); - var dl = x * this.a / nl1; - var dsq = dl * dl; - phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24); - lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1); - - } - - p.x = adjust_lon(lam + this.long0); - p.y = adjust_lat(phi); - return p; - - } - - var names$13 = ["Cassini", "Cassini_Soldner", "cass"]; - var cass = { - init: init$12, - forward: forward$11, - inverse: inverse$11, - names: names$13 - }; - - var qsfnz = function(eccent, sinphi) { - var con; - if (eccent > 1.0e-7) { - con = eccent * sinphi; - return ((1 - eccent * eccent) * (sinphi / (1 - con * con) - (0.5 / eccent) * Math.log((1 - con) / (1 + con)))); - } - else { - return (2 * sinphi); - } - }; - - /* - reference - "New Equal-Area Map Projections for Noncircular Regions", John P. Snyder, - The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355. - */ - - var S_POLE = 1; - - var N_POLE = 2; - var EQUIT = 3; - var OBLIQ = 4; - - /* Initialize the Lambert Azimuthal Equal Area projection - ------------------------------------------------------*/ - function init$13() { - var t = Math.abs(this.lat0); - if (Math.abs(t - HALF_PI) < EPSLN) { - this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE; - } - else if (Math.abs(t) < EPSLN) { - this.mode = this.EQUIT; - } - else { - this.mode = this.OBLIQ; - } - if (this.es > 0) { - var sinphi; - - this.qp = qsfnz(this.e, 1); - this.mmf = 0.5 / (1 - this.es); - this.apa = authset(this.es); - switch (this.mode) { - case this.N_POLE: - this.dd = 1; - break; - case this.S_POLE: - this.dd = 1; - break; - case this.EQUIT: - this.rq = Math.sqrt(0.5 * this.qp); - this.dd = 1 / this.rq; - this.xmf = 1; - this.ymf = 0.5 * this.qp; - break; - case this.OBLIQ: - this.rq = Math.sqrt(0.5 * this.qp); - sinphi = Math.sin(this.lat0); - this.sinb1 = qsfnz(this.e, sinphi) / this.qp; - this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1); - this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * sinphi * sinphi) * this.rq * this.cosb1); - this.ymf = (this.xmf = this.rq) / this.dd; - this.xmf *= this.dd; - break; - } - } - else { - if (this.mode === this.OBLIQ) { - this.sinph0 = Math.sin(this.lat0); - this.cosph0 = Math.cos(this.lat0); - } - } - } - - /* Lambert Azimuthal Equal Area forward equations--mapping lat,long to x,y - -----------------------------------------------------------------------*/ - function forward$12(p) { - - /* Forward equations - -----------------*/ - var x, y, coslam, sinlam, sinphi, q, sinb, cosb, b, cosphi; - var lam = p.x; - var phi = p.y; - - lam = adjust_lon(lam - this.long0); - if (this.sphere) { - sinphi = Math.sin(phi); - cosphi = Math.cos(phi); - coslam = Math.cos(lam); - if (this.mode === this.OBLIQ || this.mode === this.EQUIT) { - y = (this.mode === this.EQUIT) ? 1 + cosphi * coslam : 1 + this.sinph0 * sinphi + this.cosph0 * cosphi * coslam; - if (y <= EPSLN) { - return null; - } - y = Math.sqrt(2 / y); - x = y * cosphi * Math.sin(lam); - y *= (this.mode === this.EQUIT) ? sinphi : this.cosph0 * sinphi - this.sinph0 * cosphi * coslam; - } - else if (this.mode === this.N_POLE || this.mode === this.S_POLE) { - if (this.mode === this.N_POLE) { - coslam = -coslam; - } - if (Math.abs(phi + this.phi0) < EPSLN) { - return null; - } - y = FORTPI - phi * 0.5; - y = 2 * ((this.mode === this.S_POLE) ? Math.cos(y) : Math.sin(y)); - x = y * Math.sin(lam); - y *= coslam; - } - } - else { - sinb = 0; - cosb = 0; - b = 0; - coslam = Math.cos(lam); - sinlam = Math.sin(lam); - sinphi = Math.sin(phi); - q = qsfnz(this.e, sinphi); - if (this.mode === this.OBLIQ || this.mode === this.EQUIT) { - sinb = q / this.qp; - cosb = Math.sqrt(1 - sinb * sinb); - } - switch (this.mode) { - case this.OBLIQ: - b = 1 + this.sinb1 * sinb + this.cosb1 * cosb * coslam; - break; - case this.EQUIT: - b = 1 + cosb * coslam; - break; - case this.N_POLE: - b = HALF_PI + phi; - q = this.qp - q; - break; - case this.S_POLE: - b = phi - HALF_PI; - q = this.qp + q; - break; - } - if (Math.abs(b) < EPSLN) { - return null; - } - switch (this.mode) { - case this.OBLIQ: - case this.EQUIT: - b = Math.sqrt(2 / b); - if (this.mode === this.OBLIQ) { - y = this.ymf * b * (this.cosb1 * sinb - this.sinb1 * cosb * coslam); - } - else { - y = (b = Math.sqrt(2 / (1 + cosb * coslam))) * sinb * this.ymf; - } - x = this.xmf * b * cosb * sinlam; - break; - case this.N_POLE: - case this.S_POLE: - if (q >= 0) { - x = (b = Math.sqrt(q)) * sinlam; - y = coslam * ((this.mode === this.S_POLE) ? b : -b); - } - else { - x = y = 0; - } - break; - } - } - - p.x = this.a * x + this.x0; - p.y = this.a * y + this.y0; - return p; - } - - /* Inverse equations - -----------------*/ - function inverse$12(p) { - p.x -= this.x0; - p.y -= this.y0; - var x = p.x / this.a; - var y = p.y / this.a; - var lam, phi, cCe, sCe, q, rho, ab; - if (this.sphere) { - var cosz = 0, - rh, sinz = 0; - - rh = Math.sqrt(x * x + y * y); - phi = rh * 0.5; - if (phi > 1) { - return null; - } - phi = 2 * Math.asin(phi); - if (this.mode === this.OBLIQ || this.mode === this.EQUIT) { - sinz = Math.sin(phi); - cosz = Math.cos(phi); - } - switch (this.mode) { - case this.EQUIT: - phi = (Math.abs(rh) <= EPSLN) ? 0 : Math.asin(y * sinz / rh); - x *= sinz; - y = cosz * rh; - break; - case this.OBLIQ: - phi = (Math.abs(rh) <= EPSLN) ? this.phi0 : Math.asin(cosz * this.sinph0 + y * sinz * this.cosph0 / rh); - x *= sinz * this.cosph0; - y = (cosz - Math.sin(phi) * this.sinph0) * rh; - break; - case this.N_POLE: - y = -y; - phi = HALF_PI - phi; - break; - case this.S_POLE: - phi -= HALF_PI; - break; - } - lam = (y === 0 && (this.mode === this.EQUIT || this.mode === this.OBLIQ)) ? 0 : Math.atan2(x, y); - } - else { - ab = 0; - if (this.mode === this.OBLIQ || this.mode === this.EQUIT) { - x /= this.dd; - y *= this.dd; - rho = Math.sqrt(x * x + y * y); - if (rho < EPSLN) { - p.x = 0; - p.y = this.phi0; - return p; - } - sCe = 2 * Math.asin(0.5 * rho / this.rq); - cCe = Math.cos(sCe); - x *= (sCe = Math.sin(sCe)); - if (this.mode === this.OBLIQ) { - ab = cCe * this.sinb1 + y * sCe * this.cosb1 / rho; - q = this.qp * ab; - y = rho * this.cosb1 * cCe - y * this.sinb1 * sCe; - } - else { - ab = y * sCe / rho; - q = this.qp * ab; - y = rho * cCe; - } - } - else if (this.mode === this.N_POLE || this.mode === this.S_POLE) { - if (this.mode === this.N_POLE) { - y = -y; - } - q = (x * x + y * y); - if (!q) { - p.x = 0; - p.y = this.phi0; - return p; - } - ab = 1 - q / this.qp; - if (this.mode === this.S_POLE) { - ab = -ab; - } - } - lam = Math.atan2(x, y); - phi = authlat(Math.asin(ab), this.apa); - } - - p.x = adjust_lon(this.long0 + lam); - p.y = phi; - return p; - } - - /* determine latitude from authalic latitude */ - var P00 = 0.33333333333333333333; - - var P01 = 0.17222222222222222222; - var P02 = 0.10257936507936507936; - var P10 = 0.06388888888888888888; - var P11 = 0.06640211640211640211; - var P20 = 0.01641501294219154443; - - function authset(es) { - var t; - var APA = []; - APA[0] = es * P00; - t = es * es; - APA[0] += t * P01; - APA[1] = t * P10; - t *= es; - APA[0] += t * P02; - APA[1] += t * P11; - APA[2] = t * P20; - return APA; - } - - function authlat(beta, APA) { - var t = beta + beta; - return (beta + APA[0] * Math.sin(t) + APA[1] * Math.sin(t + t) + APA[2] * Math.sin(t + t + t)); - } - - var names$14 = ["Lambert Azimuthal Equal Area", "Lambert_Azimuthal_Equal_Area", "laea"]; - var laea = { - init: init$13, - forward: forward$12, - inverse: inverse$12, - names: names$14, - S_POLE: S_POLE, - N_POLE: N_POLE, - EQUIT: EQUIT, - OBLIQ: OBLIQ - }; - - var asinz = function(x) { - if (Math.abs(x) > 1) { - x = (x > 1) ? 1 : -1; - } - return Math.asin(x); - }; - - function init$14() { - - if (Math.abs(this.lat1 + this.lat2) < EPSLN) { - return; - } - this.temp = this.b / this.a; - this.es = 1 - Math.pow(this.temp, 2); - this.e3 = Math.sqrt(this.es); - - this.sin_po = Math.sin(this.lat1); - this.cos_po = Math.cos(this.lat1); - this.t1 = this.sin_po; - this.con = this.sin_po; - this.ms1 = msfnz(this.e3, this.sin_po, this.cos_po); - this.qs1 = qsfnz(this.e3, this.sin_po, this.cos_po); - - this.sin_po = Math.sin(this.lat2); - this.cos_po = Math.cos(this.lat2); - this.t2 = this.sin_po; - this.ms2 = msfnz(this.e3, this.sin_po, this.cos_po); - this.qs2 = qsfnz(this.e3, this.sin_po, this.cos_po); - - this.sin_po = Math.sin(this.lat0); - this.cos_po = Math.cos(this.lat0); - this.t3 = this.sin_po; - this.qs0 = qsfnz(this.e3, this.sin_po, this.cos_po); - - if (Math.abs(this.lat1 - this.lat2) > EPSLN) { - this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1); - } - else { - this.ns0 = this.con; - } - this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1; - this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0; - } - - /* Albers Conical Equal Area forward equations--mapping lat,long to x,y - -------------------------------------------------------------------*/ - function forward$13(p) { - - var lon = p.x; - var lat = p.y; - - this.sin_phi = Math.sin(lat); - this.cos_phi = Math.cos(lat); - - var qs = qsfnz(this.e3, this.sin_phi, this.cos_phi); - var rh1 = this.a * Math.sqrt(this.c - this.ns0 * qs) / this.ns0; - var theta = this.ns0 * adjust_lon(lon - this.long0); - var x = rh1 * Math.sin(theta) + this.x0; - var y = this.rh - rh1 * Math.cos(theta) + this.y0; - - p.x = x; - p.y = y; - return p; - } - - function inverse$13(p) { - var rh1, qs, con, theta, lon, lat; - - p.x -= this.x0; - p.y = this.rh - p.y + this.y0; - if (this.ns0 >= 0) { - rh1 = Math.sqrt(p.x * p.x + p.y * p.y); - con = 1; - } - else { - rh1 = -Math.sqrt(p.x * p.x + p.y * p.y); - con = -1; - } - theta = 0; - if (rh1 !== 0) { - theta = Math.atan2(con * p.x, con * p.y); - } - con = rh1 * this.ns0 / this.a; - if (this.sphere) { - lat = Math.asin((this.c - con * con) / (2 * this.ns0)); - } - else { - qs = (this.c - con * con) / this.ns0; - lat = this.phi1z(this.e3, qs); - } - - lon = adjust_lon(theta / this.ns0 + this.long0); - p.x = lon; - p.y = lat; - return p; - } - - /* Function to compute phi1, the latitude for the inverse of the - Albers Conical Equal-Area projection. - -------------------------------------------*/ - function phi1z(eccent, qs) { - var sinphi, cosphi, con, com, dphi; - var phi = asinz(0.5 * qs); - if (eccent < EPSLN) { - return phi; - } - - var eccnts = eccent * eccent; - for (var i = 1; i <= 25; i++) { - sinphi = Math.sin(phi); - cosphi = Math.cos(phi); - con = eccent * sinphi; - com = 1 - con * con; - dphi = 0.5 * com * com / cosphi * (qs / (1 - eccnts) - sinphi / com + 0.5 / eccent * Math.log((1 - con) / (1 + con))); - phi = phi + dphi; - if (Math.abs(dphi) <= 1e-7) { - return phi; - } - } - return null; - } - - var names$15 = ["Albers_Conic_Equal_Area", "Albers", "aea"]; - var aea = { - init: init$14, - forward: forward$13, - inverse: inverse$13, - names: names$15, - phi1z: phi1z - }; - - /* - reference: - Wolfram Mathworld "Gnomonic Projection" - http://mathworld.wolfram.com/GnomonicProjection.html - Accessed: 12th November 2009 - */ - function init$15() { - - /* Place parameters in static storage for common use - -------------------------------------------------*/ - this.sin_p14 = Math.sin(this.lat0); - this.cos_p14 = Math.cos(this.lat0); - // Approximation for projecting points to the horizon (infinity) - this.infinity_dist = 1000 * this.a; - this.rc = 1; - } - - /* Gnomonic forward equations--mapping lat,long to x,y - ---------------------------------------------------*/ - function forward$14(p) { - var sinphi, cosphi; /* sin and cos value */ - var dlon; /* delta longitude value */ - var coslon; /* cos of longitude */ - var ksp; /* scale factor */ - var g; - var x, y; - var lon = p.x; - var lat = p.y; - /* Forward equations - -----------------*/ - dlon = adjust_lon(lon - this.long0); - - sinphi = Math.sin(lat); - cosphi = Math.cos(lat); - - coslon = Math.cos(dlon); - g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon; - ksp = 1; - if ((g > 0) || (Math.abs(g) <= EPSLN)) { - x = this.x0 + this.a * ksp * cosphi * Math.sin(dlon) / g; - y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon) / g; - } - else { - - // Point is in the opposing hemisphere and is unprojectable - // We still need to return a reasonable point, so we project - // to infinity, on a bearing - // equivalent to the northern hemisphere equivalent - // This is a reasonable approximation for short shapes and lines that - // straddle the horizon. - - x = this.x0 + this.infinity_dist * cosphi * Math.sin(dlon); - y = this.y0 + this.infinity_dist * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon); - - } - p.x = x; - p.y = y; - return p; - } - - function inverse$14(p) { - var rh; /* Rho */ - var sinc, cosc; - var c; - var lon, lat; - - /* Inverse equations - -----------------*/ - p.x = (p.x - this.x0) / this.a; - p.y = (p.y - this.y0) / this.a; - - p.x /= this.k0; - p.y /= this.k0; - - if ((rh = Math.sqrt(p.x * p.x + p.y * p.y))) { - c = Math.atan2(rh, this.rc); - sinc = Math.sin(c); - cosc = Math.cos(c); - - lat = asinz(cosc * this.sin_p14 + (p.y * sinc * this.cos_p14) / rh); - lon = Math.atan2(p.x * sinc, rh * this.cos_p14 * cosc - p.y * this.sin_p14 * sinc); - lon = adjust_lon(this.long0 + lon); - } - else { - lat = this.phic0; - lon = 0; - } - - p.x = lon; - p.y = lat; - return p; - } - - var names$16 = ["gnom"]; - var gnom = { - init: init$15, - forward: forward$14, - inverse: inverse$14, - names: names$16 - }; - - var iqsfnz = function(eccent, q) { - var temp = 1 - (1 - eccent * eccent) / (2 * eccent) * Math.log((1 - eccent) / (1 + eccent)); - if (Math.abs(Math.abs(q) - temp) < 1.0E-6) { - if (q < 0) { - return (-1 * HALF_PI); - } - else { - return HALF_PI; - } - } - //var phi = 0.5* q/(1-eccent*eccent); - var phi = Math.asin(0.5 * q); - var dphi; - var sin_phi; - var cos_phi; - var con; - for (var i = 0; i < 30; i++) { - sin_phi = Math.sin(phi); - cos_phi = Math.cos(phi); - con = eccent * sin_phi; - dphi = Math.pow(1 - con * con, 2) / (2 * cos_phi) * (q / (1 - eccent * eccent) - sin_phi / (1 - con * con) + 0.5 / eccent * Math.log((1 - con) / (1 + con))); - phi += dphi; - if (Math.abs(dphi) <= 0.0000000001) { - return phi; - } - } - - //console.log("IQSFN-CONV:Latitude failed to converge after 30 iterations"); - return NaN; - }; - - /* - reference: - "Cartographic Projection Procedures for the UNIX Environment- - A User's Manual" by Gerald I. Evenden, - USGS Open File Report 90-284and Release 4 Interim Reports (2003) - */ - function init$16() { - //no-op - if (!this.sphere) { - this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)); - } - } - - /* Cylindrical Equal Area forward equations--mapping lat,long to x,y - ------------------------------------------------------------*/ - function forward$15(p) { - var lon = p.x; - var lat = p.y; - var x, y; - /* Forward equations - -----------------*/ - var dlon = adjust_lon(lon - this.long0); - if (this.sphere) { - x = this.x0 + this.a * dlon * Math.cos(this.lat_ts); - y = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts); - } - else { - var qs = qsfnz(this.e, Math.sin(lat)); - x = this.x0 + this.a * this.k0 * dlon; - y = this.y0 + this.a * qs * 0.5 / this.k0; - } - - p.x = x; - p.y = y; - return p; - } - - /* Cylindrical Equal Area inverse equations--mapping x,y to lat/long - ------------------------------------------------------------*/ - function inverse$15(p) { - p.x -= this.x0; - p.y -= this.y0; - var lon, lat; - - if (this.sphere) { - lon = adjust_lon(this.long0 + (p.x / this.a) / Math.cos(this.lat_ts)); - lat = Math.asin((p.y / this.a) * Math.cos(this.lat_ts)); - } - else { - lat = iqsfnz(this.e, 2 * p.y * this.k0 / this.a); - lon = adjust_lon(this.long0 + p.x / (this.a * this.k0)); - } - - p.x = lon; - p.y = lat; - return p; - } - - var names$17 = ["cea"]; - var cea = { - init: init$16, - forward: forward$15, - inverse: inverse$15, - names: names$17 - }; - - function init$17() { - - this.x0 = this.x0 || 0; - this.y0 = this.y0 || 0; - this.lat0 = this.lat0 || 0; - this.long0 = this.long0 || 0; - this.lat_ts = this.lat_ts || 0; - this.title = this.title || "Equidistant Cylindrical (Plate Carre)"; - - this.rc = Math.cos(this.lat_ts); - } - - // forward equations--mapping lat,long to x,y - // ----------------------------------------------------------------- - function forward$16(p) { - - var lon = p.x; - var lat = p.y; - - var dlon = adjust_lon(lon - this.long0); - var dlat = adjust_lat(lat - this.lat0); - p.x = this.x0 + (this.a * dlon * this.rc); - p.y = this.y0 + (this.a * dlat); - return p; - } - - // inverse equations--mapping x,y to lat/long - // ----------------------------------------------------------------- - function inverse$16(p) { - - var x = p.x; - var y = p.y; - - p.x = adjust_lon(this.long0 + ((x - this.x0) / (this.a * this.rc))); - p.y = adjust_lat(this.lat0 + ((y - this.y0) / (this.a))); - return p; - } - - var names$18 = ["Equirectangular", "Equidistant_Cylindrical", "eqc"]; - var eqc = { - init: init$17, - forward: forward$16, - inverse: inverse$16, - names: names$18 - }; - - var MAX_ITER$2 = 20; - - function init$18() { - /* Place parameters in static storage for common use - -------------------------------------------------*/ - this.temp = this.b / this.a; - this.es = 1 - Math.pow(this.temp, 2); // devait etre dans tmerc.js mais n y est pas donc je commente sinon retour de valeurs nulles - this.e = Math.sqrt(this.es); - this.e0 = e0fn(this.es); - this.e1 = e1fn(this.es); - this.e2 = e2fn(this.es); - this.e3 = e3fn(this.es); - this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); //si que des zeros le calcul ne se fait pas - } - - /* Polyconic forward equations--mapping lat,long to x,y - ---------------------------------------------------*/ - function forward$17(p) { - var lon = p.x; - var lat = p.y; - var x, y, el; - var dlon = adjust_lon(lon - this.long0); - el = dlon * Math.sin(lat); - if (this.sphere) { - if (Math.abs(lat) <= EPSLN) { - x = this.a * dlon; - y = -1 * this.a * this.lat0; - } - else { - x = this.a * Math.sin(el) / Math.tan(lat); - y = this.a * (adjust_lat(lat - this.lat0) + (1 - Math.cos(el)) / Math.tan(lat)); - } - } - else { - if (Math.abs(lat) <= EPSLN) { - x = this.a * dlon; - y = -1 * this.ml0; - } - else { - var nl = gN(this.a, this.e, Math.sin(lat)) / Math.tan(lat); - x = nl * Math.sin(el); - y = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat) - this.ml0 + nl * (1 - Math.cos(el)); - } - - } - p.x = x + this.x0; - p.y = y + this.y0; - return p; - } - - /* Inverse equations - -----------------*/ - function inverse$17(p) { - var lon, lat, x, y, i; - var al, bl; - var phi, dphi; - x = p.x - this.x0; - y = p.y - this.y0; - - if (this.sphere) { - if (Math.abs(y + this.a * this.lat0) <= EPSLN) { - lon = adjust_lon(x / this.a + this.long0); - lat = 0; - } - else { - al = this.lat0 + y / this.a; - bl = x * x / this.a / this.a + al * al; - phi = al; - var tanphi; - for (i = MAX_ITER$2; i; --i) { - tanphi = Math.tan(phi); - dphi = -1 * (al * (phi * tanphi + 1) - phi - 0.5 * (phi * phi + bl) * tanphi) / ((phi - al) / tanphi - 1); - phi += dphi; - if (Math.abs(dphi) <= EPSLN) { - lat = phi; - break; - } - } - lon = adjust_lon(this.long0 + (Math.asin(x * Math.tan(phi) / this.a)) / Math.sin(lat)); - } - } - else { - if (Math.abs(y + this.ml0) <= EPSLN) { - lat = 0; - lon = adjust_lon(this.long0 + x / this.a); - } - else { - - al = (this.ml0 + y) / this.a; - bl = x * x / this.a / this.a + al * al; - phi = al; - var cl, mln, mlnp, ma; - var con; - for (i = MAX_ITER$2; i; --i) { - con = this.e * Math.sin(phi); - cl = Math.sqrt(1 - con * con) * Math.tan(phi); - mln = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi); - mlnp = this.e0 - 2 * this.e1 * Math.cos(2 * phi) + 4 * this.e2 * Math.cos(4 * phi) - 6 * this.e3 * Math.cos(6 * phi); - ma = mln / this.a; - dphi = (al * (cl * ma + 1) - ma - 0.5 * cl * (ma * ma + bl)) / (this.es * Math.sin(2 * phi) * (ma * ma + bl - 2 * al * ma) / (4 * cl) + (al - ma) * (cl * mlnp - 2 / Math.sin(2 * phi)) - mlnp); - phi -= dphi; - if (Math.abs(dphi) <= EPSLN) { - lat = phi; - break; - } - } - - //lat=phi4z(this.e,this.e0,this.e1,this.e2,this.e3,al,bl,0,0); - cl = Math.sqrt(1 - this.es * Math.pow(Math.sin(lat), 2)) * Math.tan(lat); - lon = adjust_lon(this.long0 + Math.asin(x * cl / this.a) / Math.sin(lat)); - } - } - - p.x = lon; - p.y = lat; - return p; - } - - var names$19 = ["Polyconic", "poly"]; - var poly = { - init: init$18, - forward: forward$17, - inverse: inverse$17, - names: names$19 - }; - - /* - reference - Department of Land and Survey Technical Circular 1973/32 - http://www.linz.govt.nz/docs/miscellaneous/nz-map-definition.pdf - OSG Technical Report 4.1 - http://www.linz.govt.nz/docs/miscellaneous/nzmg.pdf - */ - - /** - * iterations: Number of iterations to refine inverse transform. - * 0 -> km accuracy - * 1 -> m accuracy -- suitable for most mapping applications - * 2 -> mm accuracy - */ - - - function init$19() { - this.A = []; - this.A[1] = 0.6399175073; - this.A[2] = -0.1358797613; - this.A[3] = 0.063294409; - this.A[4] = -0.02526853; - this.A[5] = 0.0117879; - this.A[6] = -0.0055161; - this.A[7] = 0.0026906; - this.A[8] = -0.001333; - this.A[9] = 0.00067; - this.A[10] = -0.00034; - - this.B_re = []; - this.B_im = []; - this.B_re[1] = 0.7557853228; - this.B_im[1] = 0; - this.B_re[2] = 0.249204646; - this.B_im[2] = 0.003371507; - this.B_re[3] = -0.001541739; - this.B_im[3] = 0.041058560; - this.B_re[4] = -0.10162907; - this.B_im[4] = 0.01727609; - this.B_re[5] = -0.26623489; - this.B_im[5] = -0.36249218; - this.B_re[6] = -0.6870983; - this.B_im[6] = -1.1651967; - - this.C_re = []; - this.C_im = []; - this.C_re[1] = 1.3231270439; - this.C_im[1] = 0; - this.C_re[2] = -0.577245789; - this.C_im[2] = -0.007809598; - this.C_re[3] = 0.508307513; - this.C_im[3] = -0.112208952; - this.C_re[4] = -0.15094762; - this.C_im[4] = 0.18200602; - this.C_re[5] = 1.01418179; - this.C_im[5] = 1.64497696; - this.C_re[6] = 1.9660549; - this.C_im[6] = 2.5127645; - - this.D = []; - this.D[1] = 1.5627014243; - this.D[2] = 0.5185406398; - this.D[3] = -0.03333098; - this.D[4] = -0.1052906; - this.D[5] = -0.0368594; - this.D[6] = 0.007317; - this.D[7] = 0.01220; - this.D[8] = 0.00394; - this.D[9] = -0.0013; - } - - /** - New Zealand Map Grid Forward - long/lat to x/y - long/lat in radians - */ - function forward$18(p) { - var n; - var lon = p.x; - var lat = p.y; - - var delta_lat = lat - this.lat0; - var delta_lon = lon - this.long0; - - // 1. Calculate d_phi and d_psi ... // and d_lambda - // For this algorithm, delta_latitude is in seconds of arc x 10-5, so we need to scale to those units. Longitude is radians. - var d_phi = delta_lat / SEC_TO_RAD * 1E-5; - var d_lambda = delta_lon; - var d_phi_n = 1; // d_phi^0 - - var d_psi = 0; - for (n = 1; n <= 10; n++) { - d_phi_n = d_phi_n * d_phi; - d_psi = d_psi + this.A[n] * d_phi_n; - } - - // 2. Calculate theta - var th_re = d_psi; - var th_im = d_lambda; - - // 3. Calculate z - var th_n_re = 1; - var th_n_im = 0; // theta^0 - var th_n_re1; - var th_n_im1; - - var z_re = 0; - var z_im = 0; - for (n = 1; n <= 6; n++) { - th_n_re1 = th_n_re * th_re - th_n_im * th_im; - th_n_im1 = th_n_im * th_re + th_n_re * th_im; - th_n_re = th_n_re1; - th_n_im = th_n_im1; - z_re = z_re + this.B_re[n] * th_n_re - this.B_im[n] * th_n_im; - z_im = z_im + this.B_im[n] * th_n_re + this.B_re[n] * th_n_im; - } - - // 4. Calculate easting and northing - p.x = (z_im * this.a) + this.x0; - p.y = (z_re * this.a) + this.y0; - - return p; - } - - /** - New Zealand Map Grid Inverse - x/y to long/lat - */ - function inverse$18(p) { - var n; - var x = p.x; - var y = p.y; - - var delta_x = x - this.x0; - var delta_y = y - this.y0; - - // 1. Calculate z - var z_re = delta_y / this.a; - var z_im = delta_x / this.a; - - // 2a. Calculate theta - first approximation gives km accuracy - var z_n_re = 1; - var z_n_im = 0; // z^0 - var z_n_re1; - var z_n_im1; - - var th_re = 0; - var th_im = 0; - for (n = 1; n <= 6; n++) { - z_n_re1 = z_n_re * z_re - z_n_im * z_im; - z_n_im1 = z_n_im * z_re + z_n_re * z_im; - z_n_re = z_n_re1; - z_n_im = z_n_im1; - th_re = th_re + this.C_re[n] * z_n_re - this.C_im[n] * z_n_im; - th_im = th_im + this.C_im[n] * z_n_re + this.C_re[n] * z_n_im; - } - - // 2b. Iterate to refine the accuracy of the calculation - // 0 iterations gives km accuracy - // 1 iteration gives m accuracy -- good enough for most mapping applications - // 2 iterations bives mm accuracy - for (var i = 0; i < this.iterations; i++) { - var th_n_re = th_re; - var th_n_im = th_im; - var th_n_re1; - var th_n_im1; - - var num_re = z_re; - var num_im = z_im; - for (n = 2; n <= 6; n++) { - th_n_re1 = th_n_re * th_re - th_n_im * th_im; - th_n_im1 = th_n_im * th_re + th_n_re * th_im; - th_n_re = th_n_re1; - th_n_im = th_n_im1; - num_re = num_re + (n - 1) * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im); - num_im = num_im + (n - 1) * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im); - } - - th_n_re = 1; - th_n_im = 0; - var den_re = this.B_re[1]; - var den_im = this.B_im[1]; - for (n = 2; n <= 6; n++) { - th_n_re1 = th_n_re * th_re - th_n_im * th_im; - th_n_im1 = th_n_im * th_re + th_n_re * th_im; - th_n_re = th_n_re1; - th_n_im = th_n_im1; - den_re = den_re + n * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im); - den_im = den_im + n * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im); - } - - // Complex division - var den2 = den_re * den_re + den_im * den_im; - th_re = (num_re * den_re + num_im * den_im) / den2; - th_im = (num_im * den_re - num_re * den_im) / den2; - } - - // 3. Calculate d_phi ... // and d_lambda - var d_psi = th_re; - var d_lambda = th_im; - var d_psi_n = 1; // d_psi^0 - - var d_phi = 0; - for (n = 1; n <= 9; n++) { - d_psi_n = d_psi_n * d_psi; - d_phi = d_phi + this.D[n] * d_psi_n; - } - - // 4. Calculate latitude and longitude - // d_phi is calcuated in second of arc * 10^-5, so we need to scale back to radians. d_lambda is in radians. - var lat = this.lat0 + (d_phi * SEC_TO_RAD * 1E5); - var lon = this.long0 + d_lambda; - - p.x = lon; - p.y = lat; - - return p; - } - - var names$20 = ["New_Zealand_Map_Grid", "nzmg"]; - var nzmg = { - init: init$19, - forward: forward$18, - inverse: inverse$18, - names: names$20 - }; - - /* - reference - "New Equal-Area Map Projections for Noncircular Regions", John P. Snyder, - The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355. - */ - - - /* Initialize the Miller Cylindrical projection - -------------------------------------------*/ - function init$20() { - //no-op - } - - /* Miller Cylindrical forward equations--mapping lat,long to x,y - ------------------------------------------------------------*/ - function forward$19(p) { - var lon = p.x; - var lat = p.y; - /* Forward equations - -----------------*/ - var dlon = adjust_lon(lon - this.long0); - var x = this.x0 + this.a * dlon; - var y = this.y0 + this.a * Math.log(Math.tan((Math.PI / 4) + (lat / 2.5))) * 1.25; - - p.x = x; - p.y = y; - return p; - } - - /* Miller Cylindrical inverse equations--mapping x,y to lat/long - ------------------------------------------------------------*/ - function inverse$19(p) { - p.x -= this.x0; - p.y -= this.y0; - - var lon = adjust_lon(this.long0 + p.x / this.a); - var lat = 2.5 * (Math.atan(Math.exp(0.8 * p.y / this.a)) - Math.PI / 4); - - p.x = lon; - p.y = lat; - return p; - } - - var names$21 = ["Miller_Cylindrical", "mill"]; - var mill = { - init: init$20, - forward: forward$19, - inverse: inverse$19, - names: names$21 - }; - - var MAX_ITER$3 = 20; - function init$21() { - /* Place parameters in static storage for common use - -------------------------------------------------*/ - - - if (!this.sphere) { - this.en = pj_enfn(this.es); - } - else { - this.n = 1; - this.m = 0; - this.es = 0; - this.C_y = Math.sqrt((this.m + 1) / this.n); - this.C_x = this.C_y / (this.m + 1); - } - - } - - /* Sinusoidal forward equations--mapping lat,long to x,y - -----------------------------------------------------*/ - function forward$20(p) { - var x, y; - var lon = p.x; - var lat = p.y; - /* Forward equations - -----------------*/ - lon = adjust_lon(lon - this.long0); - - if (this.sphere) { - if (!this.m) { - lat = this.n !== 1 ? Math.asin(this.n * Math.sin(lat)) : lat; - } - else { - var k = this.n * Math.sin(lat); - for (var i = MAX_ITER$3; i; --i) { - var V = (this.m * lat + Math.sin(lat) - k) / (this.m + Math.cos(lat)); - lat -= V; - if (Math.abs(V) < EPSLN) { - break; - } - } - } - x = this.a * this.C_x * lon * (this.m + Math.cos(lat)); - y = this.a * this.C_y * lat; - - } - else { - - var s = Math.sin(lat); - var c = Math.cos(lat); - y = this.a * pj_mlfn(lat, s, c, this.en); - x = this.a * lon * c / Math.sqrt(1 - this.es * s * s); - } - - p.x = x; - p.y = y; - return p; - } - - function inverse$20(p) { - var lat, temp, lon, s; - - p.x -= this.x0; - lon = p.x / this.a; - p.y -= this.y0; - lat = p.y / this.a; - - if (this.sphere) { - lat /= this.C_y; - lon = lon / (this.C_x * (this.m + Math.cos(lat))); - if (this.m) { - lat = asinz((this.m * lat + Math.sin(lat)) / this.n); - } - else if (this.n !== 1) { - lat = asinz(Math.sin(lat) / this.n); - } - lon = adjust_lon(lon + this.long0); - lat = adjust_lat(lat); - } - else { - lat = pj_inv_mlfn(p.y / this.a, this.es, this.en); - s = Math.abs(lat); - if (s < HALF_PI) { - s = Math.sin(lat); - temp = this.long0 + p.x * Math.sqrt(1 - this.es * s * s) / (this.a * Math.cos(lat)); - //temp = this.long0 + p.x / (this.a * Math.cos(lat)); - lon = adjust_lon(temp); - } - else if ((s - EPSLN) < HALF_PI) { - lon = this.long0; - } - } - p.x = lon; - p.y = lat; - return p; - } - - var names$22 = ["Sinusoidal", "sinu"]; - var sinu = { - init: init$21, - forward: forward$20, - inverse: inverse$20, - names: names$22 - }; - - function init$22() {} - /* Mollweide forward equations--mapping lat,long to x,y - ----------------------------------------------------*/ - function forward$21(p) { - - /* Forward equations - -----------------*/ - var lon = p.x; - var lat = p.y; - - var delta_lon = adjust_lon(lon - this.long0); - var theta = lat; - var con = Math.PI * Math.sin(lat); - - /* Iterate using the Newton-Raphson method to find theta - -----------------------------------------------------*/ - while (true) { - var delta_theta = -(theta + Math.sin(theta) - con) / (1 + Math.cos(theta)); - theta += delta_theta; - if (Math.abs(delta_theta) < EPSLN) { - break; - } - } - theta /= 2; - - /* If the latitude is 90 deg, force the x coordinate to be "0 + false easting" - this is done here because of precision problems with "cos(theta)" - --------------------------------------------------------------------------*/ - if (Math.PI / 2 - Math.abs(lat) < EPSLN) { - delta_lon = 0; - } - var x = 0.900316316158 * this.a * delta_lon * Math.cos(theta) + this.x0; - var y = 1.4142135623731 * this.a * Math.sin(theta) + this.y0; - - p.x = x; - p.y = y; - return p; - } - - function inverse$21(p) { - var theta; - var arg; - - /* Inverse equations - -----------------*/ - p.x -= this.x0; - p.y -= this.y0; - arg = p.y / (1.4142135623731 * this.a); - - /* Because of division by zero problems, 'arg' can not be 1. Therefore - a number very close to one is used instead. - -------------------------------------------------------------------*/ - if (Math.abs(arg) > 0.999999999999) { - arg = 0.999999999999; - } - theta = Math.asin(arg); - var lon = adjust_lon(this.long0 + (p.x / (0.900316316158 * this.a * Math.cos(theta)))); - if (lon < (-Math.PI)) { - lon = -Math.PI; - } - if (lon > Math.PI) { - lon = Math.PI; - } - arg = (2 * theta + Math.sin(2 * theta)) / Math.PI; - if (Math.abs(arg) > 1) { - arg = 1; - } - var lat = Math.asin(arg); - - p.x = lon; - p.y = lat; - return p; - } - - var names$23 = ["Mollweide", "moll"]; - var moll = { - init: init$22, - forward: forward$21, - inverse: inverse$21, - names: names$23 - }; - - function init$23() { - - /* Place parameters in static storage for common use - -------------------------------------------------*/ - // Standard Parallels cannot be equal and on opposite sides of the equator - if (Math.abs(this.lat1 + this.lat2) < EPSLN) { - return; - } - this.lat2 = this.lat2 || this.lat1; - this.temp = this.b / this.a; - this.es = 1 - Math.pow(this.temp, 2); - this.e = Math.sqrt(this.es); - this.e0 = e0fn(this.es); - this.e1 = e1fn(this.es); - this.e2 = e2fn(this.es); - this.e3 = e3fn(this.es); - - this.sinphi = Math.sin(this.lat1); - this.cosphi = Math.cos(this.lat1); - - this.ms1 = msfnz(this.e, this.sinphi, this.cosphi); - this.ml1 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat1); - - if (Math.abs(this.lat1 - this.lat2) < EPSLN) { - this.ns = this.sinphi; - } - else { - this.sinphi = Math.sin(this.lat2); - this.cosphi = Math.cos(this.lat2); - this.ms2 = msfnz(this.e, this.sinphi, this.cosphi); - this.ml2 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat2); - this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1); - } - this.g = this.ml1 + this.ms1 / this.ns; - this.ml0 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); - this.rh = this.a * (this.g - this.ml0); - } - - /* Equidistant Conic forward equations--mapping lat,long to x,y - -----------------------------------------------------------*/ - function forward$22(p) { - var lon = p.x; - var lat = p.y; - var rh1; - - /* Forward equations - -----------------*/ - if (this.sphere) { - rh1 = this.a * (this.g - lat); - } - else { - var ml = mlfn(this.e0, this.e1, this.e2, this.e3, lat); - rh1 = this.a * (this.g - ml); - } - var theta = this.ns * adjust_lon(lon - this.long0); - var x = this.x0 + rh1 * Math.sin(theta); - var y = this.y0 + this.rh - rh1 * Math.cos(theta); - p.x = x; - p.y = y; - return p; - } - - /* Inverse equations - -----------------*/ - function inverse$22(p) { - p.x -= this.x0; - p.y = this.rh - p.y + this.y0; - var con, rh1, lat, lon; - if (this.ns >= 0) { - rh1 = Math.sqrt(p.x * p.x + p.y * p.y); - con = 1; - } - else { - rh1 = -Math.sqrt(p.x * p.x + p.y * p.y); - con = -1; - } - var theta = 0; - if (rh1 !== 0) { - theta = Math.atan2(con * p.x, con * p.y); - } - - if (this.sphere) { - lon = adjust_lon(this.long0 + theta / this.ns); - lat = adjust_lat(this.g - rh1 / this.a); - p.x = lon; - p.y = lat; - return p; - } - else { - var ml = this.g - rh1 / this.a; - lat = imlfn(ml, this.e0, this.e1, this.e2, this.e3); - lon = adjust_lon(this.long0 + theta / this.ns); - p.x = lon; - p.y = lat; - return p; - } - - } - - var names$24 = ["Equidistant_Conic", "eqdc"]; - var eqdc = { - init: init$23, - forward: forward$22, - inverse: inverse$22, - names: names$24 - }; - - /* Initialize the Van Der Grinten projection - ----------------------------------------*/ - function init$24() { - //this.R = 6370997; //Radius of earth - this.R = this.a; - } - - function forward$23(p) { - - var lon = p.x; - var lat = p.y; - - /* Forward equations - -----------------*/ - var dlon = adjust_lon(lon - this.long0); - var x, y; - - if (Math.abs(lat) <= EPSLN) { - x = this.x0 + this.R * dlon; - y = this.y0; - } - var theta = asinz(2 * Math.abs(lat / Math.PI)); - if ((Math.abs(dlon) <= EPSLN) || (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN)) { - x = this.x0; - if (lat >= 0) { - y = this.y0 + Math.PI * this.R * Math.tan(0.5 * theta); - } - else { - y = this.y0 + Math.PI * this.R * -Math.tan(0.5 * theta); - } - // return(OK); - } - var al = 0.5 * Math.abs((Math.PI / dlon) - (dlon / Math.PI)); - var asq = al * al; - var sinth = Math.sin(theta); - var costh = Math.cos(theta); - - var g = costh / (sinth + costh - 1); - var gsq = g * g; - var m = g * (2 / sinth - 1); - var msq = m * m; - var con = Math.PI * this.R * (al * (g - msq) + Math.sqrt(asq * (g - msq) * (g - msq) - (msq + asq) * (gsq - msq))) / (msq + asq); - if (dlon < 0) { - con = -con; - } - x = this.x0 + con; - //con = Math.abs(con / (Math.PI * this.R)); - var q = asq + g; - con = Math.PI * this.R * (m * q - al * Math.sqrt((msq + asq) * (asq + 1) - q * q)) / (msq + asq); - if (lat >= 0) { - //y = this.y0 + Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con); - y = this.y0 + con; - } - else { - //y = this.y0 - Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con); - y = this.y0 - con; - } - p.x = x; - p.y = y; - return p; - } - - /* Van Der Grinten inverse equations--mapping x,y to lat/long - ---------------------------------------------------------*/ - function inverse$23(p) { - var lon, lat; - var xx, yy, xys, c1, c2, c3; - var a1; - var m1; - var con; - var th1; - var d; - - /* inverse equations - -----------------*/ - p.x -= this.x0; - p.y -= this.y0; - con = Math.PI * this.R; - xx = p.x / con; - yy = p.y / con; - xys = xx * xx + yy * yy; - c1 = -Math.abs(yy) * (1 + xys); - c2 = c1 - 2 * yy * yy + xx * xx; - c3 = -2 * c1 + 1 + 2 * yy * yy + xys * xys; - d = yy * yy / c3 + (2 * c2 * c2 * c2 / c3 / c3 / c3 - 9 * c1 * c2 / c3 / c3) / 27; - a1 = (c1 - c2 * c2 / 3 / c3) / c3; - m1 = 2 * Math.sqrt(-a1 / 3); - con = ((3 * d) / a1) / m1; - if (Math.abs(con) > 1) { - if (con >= 0) { - con = 1; - } - else { - con = -1; - } - } - th1 = Math.acos(con) / 3; - if (p.y >= 0) { - lat = (-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI; - } - else { - lat = -(-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI; - } - - if (Math.abs(xx) < EPSLN) { - lon = this.long0; - } - else { - lon = adjust_lon(this.long0 + Math.PI * (xys - 1 + Math.sqrt(1 + 2 * (xx * xx - yy * yy) + xys * xys)) / 2 / xx); - } - - p.x = lon; - p.y = lat; - return p; - } - - var names$25 = ["Van_der_Grinten_I", "VanDerGrinten", "vandg"]; - var vandg = { - init: init$24, - forward: forward$23, - inverse: inverse$23, - names: names$25 - }; - - function init$25() { - this.sin_p12 = Math.sin(this.lat0); - this.cos_p12 = Math.cos(this.lat0); - } - - function forward$24(p) { - var lon = p.x; - var lat = p.y; - var sinphi = Math.sin(p.y); - var cosphi = Math.cos(p.y); - var dlon = adjust_lon(lon - this.long0); - var e0, e1, e2, e3, Mlp, Ml, tanphi, Nl1, Nl, psi, Az, G, H, GH, Hs, c, kp, cos_c, s, s2, s3, s4, s5; - if (this.sphere) { - if (Math.abs(this.sin_p12 - 1) <= EPSLN) { - //North Pole case - p.x = this.x0 + this.a * (HALF_PI - lat) * Math.sin(dlon); - p.y = this.y0 - this.a * (HALF_PI - lat) * Math.cos(dlon); - return p; - } - else if (Math.abs(this.sin_p12 + 1) <= EPSLN) { - //South Pole case - p.x = this.x0 + this.a * (HALF_PI + lat) * Math.sin(dlon); - p.y = this.y0 + this.a * (HALF_PI + lat) * Math.cos(dlon); - return p; - } - else { - //default case - cos_c = this.sin_p12 * sinphi + this.cos_p12 * cosphi * Math.cos(dlon); - c = Math.acos(cos_c); - kp = c / Math.sin(c); - p.x = this.x0 + this.a * kp * cosphi * Math.sin(dlon); - p.y = this.y0 + this.a * kp * (this.cos_p12 * sinphi - this.sin_p12 * cosphi * Math.cos(dlon)); - return p; - } - } - else { - e0 = e0fn(this.es); - e1 = e1fn(this.es); - e2 = e2fn(this.es); - e3 = e3fn(this.es); - if (Math.abs(this.sin_p12 - 1) <= EPSLN) { - //North Pole case - Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI); - Ml = this.a * mlfn(e0, e1, e2, e3, lat); - p.x = this.x0 + (Mlp - Ml) * Math.sin(dlon); - p.y = this.y0 - (Mlp - Ml) * Math.cos(dlon); - return p; - } - else if (Math.abs(this.sin_p12 + 1) <= EPSLN) { - //South Pole case - Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI); - Ml = this.a * mlfn(e0, e1, e2, e3, lat); - p.x = this.x0 + (Mlp + Ml) * Math.sin(dlon); - p.y = this.y0 + (Mlp + Ml) * Math.cos(dlon); - return p; - } - else { - //Default case - tanphi = sinphi / cosphi; - Nl1 = gN(this.a, this.e, this.sin_p12); - Nl = gN(this.a, this.e, sinphi); - psi = Math.atan((1 - this.es) * tanphi + this.es * Nl1 * this.sin_p12 / (Nl * cosphi)); - Az = Math.atan2(Math.sin(dlon), this.cos_p12 * Math.tan(psi) - this.sin_p12 * Math.cos(dlon)); - if (Az === 0) { - s = Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi)); - } - else if (Math.abs(Math.abs(Az) - Math.PI) <= EPSLN) { - s = -Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi)); - } - else { - s = Math.asin(Math.sin(dlon) * Math.cos(psi) / Math.sin(Az)); - } - G = this.e * this.sin_p12 / Math.sqrt(1 - this.es); - H = this.e * this.cos_p12 * Math.cos(Az) / Math.sqrt(1 - this.es); - GH = G * H; - Hs = H * H; - s2 = s * s; - s3 = s2 * s; - s4 = s3 * s; - s5 = s4 * s; - c = Nl1 * s * (1 - s2 * Hs * (1 - Hs) / 6 + s3 / 8 * GH * (1 - 2 * Hs) + s4 / 120 * (Hs * (4 - 7 * Hs) - 3 * G * G * (1 - 7 * Hs)) - s5 / 48 * GH); - p.x = this.x0 + c * Math.sin(Az); - p.y = this.y0 + c * Math.cos(Az); - return p; - } - } - - - } - - function inverse$24(p) { - p.x -= this.x0; - p.y -= this.y0; - var rh, z, sinz, cosz, lon, lat, con, e0, e1, e2, e3, Mlp, M, N1, psi, Az, cosAz, tmp, A, B, D, Ee, F; - if (this.sphere) { - rh = Math.sqrt(p.x * p.x + p.y * p.y); - if (rh > (2 * HALF_PI * this.a)) { - return; - } - z = rh / this.a; - - sinz = Math.sin(z); - cosz = Math.cos(z); - - lon = this.long0; - if (Math.abs(rh) <= EPSLN) { - lat = this.lat0; - } - else { - lat = asinz(cosz * this.sin_p12 + (p.y * sinz * this.cos_p12) / rh); - con = Math.abs(this.lat0) - HALF_PI; - if (Math.abs(con) <= EPSLN) { - if (this.lat0 >= 0) { - lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y)); - } - else { - lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y)); - } - } - else { - /*con = cosz - this.sin_p12 * Math.sin(lat); - if ((Math.abs(con) < EPSLN) && (Math.abs(p.x) < EPSLN)) { - //no-op, just keep the lon value as is - } else { - var temp = Math.atan2((p.x * sinz * this.cos_p12), (con * rh)); - lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz * this.cos_p12), (con * rh))); - }*/ - lon = adjust_lon(this.long0 + Math.atan2(p.x * sinz, rh * this.cos_p12 * cosz - p.y * this.sin_p12 * sinz)); - } - } - - p.x = lon; - p.y = lat; - return p; - } - else { - e0 = e0fn(this.es); - e1 = e1fn(this.es); - e2 = e2fn(this.es); - e3 = e3fn(this.es); - if (Math.abs(this.sin_p12 - 1) <= EPSLN) { - //North pole case - Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI); - rh = Math.sqrt(p.x * p.x + p.y * p.y); - M = Mlp - rh; - lat = imlfn(M / this.a, e0, e1, e2, e3); - lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y)); - p.x = lon; - p.y = lat; - return p; - } - else if (Math.abs(this.sin_p12 + 1) <= EPSLN) { - //South pole case - Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI); - rh = Math.sqrt(p.x * p.x + p.y * p.y); - M = rh - Mlp; - - lat = imlfn(M / this.a, e0, e1, e2, e3); - lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y)); - p.x = lon; - p.y = lat; - return p; - } - else { - //default case - rh = Math.sqrt(p.x * p.x + p.y * p.y); - Az = Math.atan2(p.x, p.y); - N1 = gN(this.a, this.e, this.sin_p12); - cosAz = Math.cos(Az); - tmp = this.e * this.cos_p12 * cosAz; - A = -tmp * tmp / (1 - this.es); - B = 3 * this.es * (1 - A) * this.sin_p12 * this.cos_p12 * cosAz / (1 - this.es); - D = rh / N1; - Ee = D - A * (1 + A) * Math.pow(D, 3) / 6 - B * (1 + 3 * A) * Math.pow(D, 4) / 24; - F = 1 - A * Ee * Ee / 2 - D * Ee * Ee * Ee / 6; - psi = Math.asin(this.sin_p12 * Math.cos(Ee) + this.cos_p12 * Math.sin(Ee) * cosAz); - lon = adjust_lon(this.long0 + Math.asin(Math.sin(Az) * Math.sin(Ee) / Math.cos(psi))); - lat = Math.atan((1 - this.es * F * this.sin_p12 / Math.sin(psi)) * Math.tan(psi) / (1 - this.es)); - p.x = lon; - p.y = lat; - return p; - } - } - - } - - var names$26 = ["Azimuthal_Equidistant", "aeqd"]; - var aeqd = { - init: init$25, - forward: forward$24, - inverse: inverse$24, - names: names$26 - }; - - function init$26() { - //double temp; /* temporary variable */ - - /* Place parameters in static storage for common use - -------------------------------------------------*/ - this.sin_p14 = Math.sin(this.lat0); - this.cos_p14 = Math.cos(this.lat0); - } - - /* Orthographic forward equations--mapping lat,long to x,y - ---------------------------------------------------*/ - function forward$25(p) { - var sinphi, cosphi; /* sin and cos value */ - var dlon; /* delta longitude value */ - var coslon; /* cos of longitude */ - var ksp; /* scale factor */ - var g, x, y; - var lon = p.x; - var lat = p.y; - /* Forward equations - -----------------*/ - dlon = adjust_lon(lon - this.long0); - - sinphi = Math.sin(lat); - cosphi = Math.cos(lat); - - coslon = Math.cos(dlon); - g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon; - ksp = 1; - if ((g > 0) || (Math.abs(g) <= EPSLN)) { - x = this.a * ksp * cosphi * Math.sin(dlon); - y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon); - } - p.x = x; - p.y = y; - return p; - } - - function inverse$25(p) { - var rh; /* height above ellipsoid */ - var z; /* angle */ - var sinz, cosz; /* sin of z and cos of z */ - var con; - var lon, lat; - /* Inverse equations - -----------------*/ - p.x -= this.x0; - p.y -= this.y0; - rh = Math.sqrt(p.x * p.x + p.y * p.y); - z = asinz(rh / this.a); - - sinz = Math.sin(z); - cosz = Math.cos(z); - - lon = this.long0; - if (Math.abs(rh) <= EPSLN) { - lat = this.lat0; - p.x = lon; - p.y = lat; - return p; - } - lat = asinz(cosz * this.sin_p14 + (p.y * sinz * this.cos_p14) / rh); - con = Math.abs(this.lat0) - HALF_PI; - if (Math.abs(con) <= EPSLN) { - if (this.lat0 >= 0) { - lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y)); - } - else { - lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y)); - } - p.x = lon; - p.y = lat; - return p; - } - lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz), rh * this.cos_p14 * cosz - p.y * this.sin_p14 * sinz)); - p.x = lon; - p.y = lat; - return p; - } - - var names$27 = ["ortho"]; - var ortho = { - init: init$26, - forward: forward$25, - inverse: inverse$25, - names: names$27 - }; - - // QSC projection rewritten from the original PROJ4 - // https://github.com/OSGeo/proj.4/blob/master/src/PJ_qsc.c - - /* constants */ - var FACE_ENUM = { - FRONT: 1, - RIGHT: 2, - BACK: 3, - LEFT: 4, - TOP: 5, - BOTTOM: 6 - }; - - var AREA_ENUM = { - AREA_0: 1, - AREA_1: 2, - AREA_2: 3, - AREA_3: 4 - }; - - function init$27() { - - this.x0 = this.x0 || 0; - this.y0 = this.y0 || 0; - this.lat0 = this.lat0 || 0; - this.long0 = this.long0 || 0; - this.lat_ts = this.lat_ts || 0; - this.title = this.title || "Quadrilateralized Spherical Cube"; - - /* Determine the cube face from the center of projection. */ - if (this.lat0 >= HALF_PI - FORTPI / 2.0) { - this.face = FACE_ENUM.TOP; - } else if (this.lat0 <= -(HALF_PI - FORTPI / 2.0)) { - this.face = FACE_ENUM.BOTTOM; - } else if (Math.abs(this.long0) <= FORTPI) { - this.face = FACE_ENUM.FRONT; - } else if (Math.abs(this.long0) <= HALF_PI + FORTPI) { - this.face = this.long0 > 0.0 ? FACE_ENUM.RIGHT : FACE_ENUM.LEFT; - } else { - this.face = FACE_ENUM.BACK; - } - - /* Fill in useful values for the ellipsoid <-> sphere shift - * described in [LK12]. */ - if (this.es !== 0) { - this.one_minus_f = 1 - (this.a - this.b) / this.a; - this.one_minus_f_squared = this.one_minus_f * this.one_minus_f; - } - } - - // QSC forward equations--mapping lat,long to x,y - // ----------------------------------------------------------------- - function forward$26(p) { - var xy = {x: 0, y: 0}; - var lat, lon; - var theta, phi; - var t, mu; - /* nu; */ - var area = {value: 0}; - - // move lon according to projection's lon - p.x -= this.long0; - - /* Convert the geodetic latitude to a geocentric latitude. - * This corresponds to the shift from the ellipsoid to the sphere - * described in [LK12]. */ - if (this.es !== 0) {//if (P->es != 0) { - lat = Math.atan(this.one_minus_f_squared * Math.tan(p.y)); - } else { - lat = p.y; - } - - /* Convert the input lat, lon into theta, phi as used by QSC. - * This depends on the cube face and the area on it. - * For the top and bottom face, we can compute theta and phi - * directly from phi, lam. For the other faces, we must use - * unit sphere cartesian coordinates as an intermediate step. */ - lon = p.x; //lon = lp.lam; - if (this.face === FACE_ENUM.TOP) { - phi = HALF_PI - lat; - if (lon >= FORTPI && lon <= HALF_PI + FORTPI) { - area.value = AREA_ENUM.AREA_0; - theta = lon - HALF_PI; - } else if (lon > HALF_PI + FORTPI || lon <= -(HALF_PI + FORTPI)) { - area.value = AREA_ENUM.AREA_1; - theta = (lon > 0.0 ? lon - SPI : lon + SPI); - } else if (lon > -(HALF_PI + FORTPI) && lon <= -FORTPI) { - area.value = AREA_ENUM.AREA_2; - theta = lon + HALF_PI; - } else { - area.value = AREA_ENUM.AREA_3; - theta = lon; - } - } else if (this.face === FACE_ENUM.BOTTOM) { - phi = HALF_PI + lat; - if (lon >= FORTPI && lon <= HALF_PI + FORTPI) { - area.value = AREA_ENUM.AREA_0; - theta = -lon + HALF_PI; - } else if (lon < FORTPI && lon >= -FORTPI) { - area.value = AREA_ENUM.AREA_1; - theta = -lon; - } else if (lon < -FORTPI && lon >= -(HALF_PI + FORTPI)) { - area.value = AREA_ENUM.AREA_2; - theta = -lon - HALF_PI; - } else { - area.value = AREA_ENUM.AREA_3; - theta = (lon > 0.0 ? -lon + SPI : -lon - SPI); - } - } else { - var q, r, s; - var sinlat, coslat; - var sinlon, coslon; - - if (this.face === FACE_ENUM.RIGHT) { - lon = qsc_shift_lon_origin(lon, +HALF_PI); - } else if (this.face === FACE_ENUM.BACK) { - lon = qsc_shift_lon_origin(lon, +SPI); - } else if (this.face === FACE_ENUM.LEFT) { - lon = qsc_shift_lon_origin(lon, -HALF_PI); - } - sinlat = Math.sin(lat); - coslat = Math.cos(lat); - sinlon = Math.sin(lon); - coslon = Math.cos(lon); - q = coslat * coslon; - r = coslat * sinlon; - s = sinlat; - - if (this.face === FACE_ENUM.FRONT) { - phi = Math.acos(q); - theta = qsc_fwd_equat_face_theta(phi, s, r, area); - } else if (this.face === FACE_ENUM.RIGHT) { - phi = Math.acos(r); - theta = qsc_fwd_equat_face_theta(phi, s, -q, area); - } else if (this.face === FACE_ENUM.BACK) { - phi = Math.acos(-q); - theta = qsc_fwd_equat_face_theta(phi, s, -r, area); - } else if (this.face === FACE_ENUM.LEFT) { - phi = Math.acos(-r); - theta = qsc_fwd_equat_face_theta(phi, s, q, area); - } else { - /* Impossible */ - phi = theta = 0; - area.value = AREA_ENUM.AREA_0; - } - } - - /* Compute mu and nu for the area of definition. - * For mu, see Eq. (3-21) in [OL76], but note the typos: - * compare with Eq. (3-14). For nu, see Eq. (3-38). */ - mu = Math.atan((12 / SPI) * (theta + Math.acos(Math.sin(theta) * Math.cos(FORTPI)) - HALF_PI)); - t = Math.sqrt((1 - Math.cos(phi)) / (Math.cos(mu) * Math.cos(mu)) / (1 - Math.cos(Math.atan(1 / Math.cos(theta))))); - - /* Apply the result to the real area. */ - if (area.value === AREA_ENUM.AREA_1) { - mu += HALF_PI; - } else if (area.value === AREA_ENUM.AREA_2) { - mu += SPI; - } else if (area.value === AREA_ENUM.AREA_3) { - mu += 1.5 * SPI; - } - - /* Now compute x, y from mu and nu */ - xy.x = t * Math.cos(mu); - xy.y = t * Math.sin(mu); - xy.x = xy.x * this.a + this.x0; - xy.y = xy.y * this.a + this.y0; - - p.x = xy.x; - p.y = xy.y; - return p; - } - - // QSC inverse equations--mapping x,y to lat/long - // ----------------------------------------------------------------- - function inverse$26(p) { - var lp = {lam: 0, phi: 0}; - var mu, nu, cosmu, tannu; - var tantheta, theta, cosphi, phi; - var t; - var area = {value: 0}; - - /* de-offset */ - p.x = (p.x - this.x0) / this.a; - p.y = (p.y - this.y0) / this.a; - - /* Convert the input x, y to the mu and nu angles as used by QSC. - * This depends on the area of the cube face. */ - nu = Math.atan(Math.sqrt(p.x * p.x + p.y * p.y)); - mu = Math.atan2(p.y, p.x); - if (p.x >= 0.0 && p.x >= Math.abs(p.y)) { - area.value = AREA_ENUM.AREA_0; - } else if (p.y >= 0.0 && p.y >= Math.abs(p.x)) { - area.value = AREA_ENUM.AREA_1; - mu -= HALF_PI; - } else if (p.x < 0.0 && -p.x >= Math.abs(p.y)) { - area.value = AREA_ENUM.AREA_2; - mu = (mu < 0.0 ? mu + SPI : mu - SPI); - } else { - area.value = AREA_ENUM.AREA_3; - mu += HALF_PI; - } - - /* Compute phi and theta for the area of definition. - * The inverse projection is not described in the original paper, but some - * good hints can be found here (as of 2011-12-14): - * http://fits.gsfc.nasa.gov/fitsbits/saf.93/saf.9302 - * (search for "Message-Id: <9302181759.AA25477 at fits.cv.nrao.edu>") */ - t = (SPI / 12) * Math.tan(mu); - tantheta = Math.sin(t) / (Math.cos(t) - (1 / Math.sqrt(2))); - theta = Math.atan(tantheta); - cosmu = Math.cos(mu); - tannu = Math.tan(nu); - cosphi = 1 - cosmu * cosmu * tannu * tannu * (1 - Math.cos(Math.atan(1 / Math.cos(theta)))); - if (cosphi < -1) { - cosphi = -1; - } else if (cosphi > +1) { - cosphi = +1; - } - - /* Apply the result to the real area on the cube face. - * For the top and bottom face, we can compute phi and lam directly. - * For the other faces, we must use unit sphere cartesian coordinates - * as an intermediate step. */ - if (this.face === FACE_ENUM.TOP) { - phi = Math.acos(cosphi); - lp.phi = HALF_PI - phi; - if (area.value === AREA_ENUM.AREA_0) { - lp.lam = theta + HALF_PI; - } else if (area.value === AREA_ENUM.AREA_1) { - lp.lam = (theta < 0.0 ? theta + SPI : theta - SPI); - } else if (area.value === AREA_ENUM.AREA_2) { - lp.lam = theta - HALF_PI; - } else /* area.value == AREA_ENUM.AREA_3 */ { - lp.lam = theta; - } - } else if (this.face === FACE_ENUM.BOTTOM) { - phi = Math.acos(cosphi); - lp.phi = phi - HALF_PI; - if (area.value === AREA_ENUM.AREA_0) { - lp.lam = -theta + HALF_PI; - } else if (area.value === AREA_ENUM.AREA_1) { - lp.lam = -theta; - } else if (area.value === AREA_ENUM.AREA_2) { - lp.lam = -theta - HALF_PI; - } else /* area.value == AREA_ENUM.AREA_3 */ { - lp.lam = (theta < 0.0 ? -theta - SPI : -theta + SPI); - } - } else { - /* Compute phi and lam via cartesian unit sphere coordinates. */ - var q, r, s; - q = cosphi; - t = q * q; - if (t >= 1) { - s = 0; - } else { - s = Math.sqrt(1 - t) * Math.sin(theta); - } - t += s * s; - if (t >= 1) { - r = 0; - } else { - r = Math.sqrt(1 - t); - } - /* Rotate q,r,s into the correct area. */ - if (area.value === AREA_ENUM.AREA_1) { - t = r; - r = -s; - s = t; - } else if (area.value === AREA_ENUM.AREA_2) { - r = -r; - s = -s; - } else if (area.value === AREA_ENUM.AREA_3) { - t = r; - r = s; - s = -t; - } - /* Rotate q,r,s into the correct cube face. */ - if (this.face === FACE_ENUM.RIGHT) { - t = q; - q = -r; - r = t; - } else if (this.face === FACE_ENUM.BACK) { - q = -q; - r = -r; - } else if (this.face === FACE_ENUM.LEFT) { - t = q; - q = r; - r = -t; - } - /* Now compute phi and lam from the unit sphere coordinates. */ - lp.phi = Math.acos(-s) - HALF_PI; - lp.lam = Math.atan2(r, q); - if (this.face === FACE_ENUM.RIGHT) { - lp.lam = qsc_shift_lon_origin(lp.lam, -HALF_PI); - } else if (this.face === FACE_ENUM.BACK) { - lp.lam = qsc_shift_lon_origin(lp.lam, -SPI); - } else if (this.face === FACE_ENUM.LEFT) { - lp.lam = qsc_shift_lon_origin(lp.lam, +HALF_PI); - } - } - - /* Apply the shift from the sphere to the ellipsoid as described - * in [LK12]. */ - if (this.es !== 0) { - var invert_sign; - var tanphi, xa; - invert_sign = (lp.phi < 0 ? 1 : 0); - tanphi = Math.tan(lp.phi); - xa = this.b / Math.sqrt(tanphi * tanphi + this.one_minus_f_squared); - lp.phi = Math.atan(Math.sqrt(this.a * this.a - xa * xa) / (this.one_minus_f * xa)); - if (invert_sign) { - lp.phi = -lp.phi; - } - } - - lp.lam += this.long0; - p.x = lp.lam; - p.y = lp.phi; - return p; - } - - /* Helper function for forward projection: compute the theta angle - * and determine the area number. */ - function qsc_fwd_equat_face_theta(phi, y, x, area) { - var theta; - if (phi < EPSLN) { - area.value = AREA_ENUM.AREA_0; - theta = 0.0; - } else { - theta = Math.atan2(y, x); - if (Math.abs(theta) <= FORTPI) { - area.value = AREA_ENUM.AREA_0; - } else if (theta > FORTPI && theta <= HALF_PI + FORTPI) { - area.value = AREA_ENUM.AREA_1; - theta -= HALF_PI; - } else if (theta > HALF_PI + FORTPI || theta <= -(HALF_PI + FORTPI)) { - area.value = AREA_ENUM.AREA_2; - theta = (theta >= 0.0 ? theta - SPI : theta + SPI); - } else { - area.value = AREA_ENUM.AREA_3; - theta += HALF_PI; - } - } - return theta; - } - - /* Helper function: shift the longitude. */ - function qsc_shift_lon_origin(lon, offset) { - var slon = lon + offset; - if (slon < -SPI) { - slon += TWO_PI; - } else if (slon > +SPI) { - slon -= TWO_PI; - } - return slon; - } - - var names$28 = ["Quadrilateralized Spherical Cube", "Quadrilateralized_Spherical_Cube", "qsc"]; - var qsc = { - init: init$27, - forward: forward$26, - inverse: inverse$26, - names: names$28 - }; - - // Robinson projection - // Based on https://github.com/OSGeo/proj.4/blob/master/src/PJ_robin.c - // Polynomial coeficients from http://article.gmane.org/gmane.comp.gis.proj-4.devel/6039 - - var COEFS_X = [ - [1.0000, 2.2199e-17, -7.15515e-05, 3.1103e-06], - [0.9986, -0.000482243, -2.4897e-05, -1.3309e-06], - [0.9954, -0.00083103, -4.48605e-05, -9.86701e-07], - [0.9900, -0.00135364, -5.9661e-05, 3.6777e-06], - [0.9822, -0.00167442, -4.49547e-06, -5.72411e-06], - [0.9730, -0.00214868, -9.03571e-05, 1.8736e-08], - [0.9600, -0.00305085, -9.00761e-05, 1.64917e-06], - [0.9427, -0.00382792, -6.53386e-05, -2.6154e-06], - [0.9216, -0.00467746, -0.00010457, 4.81243e-06], - [0.8962, -0.00536223, -3.23831e-05, -5.43432e-06], - [0.8679, -0.00609363, -0.000113898, 3.32484e-06], - [0.8350, -0.00698325, -6.40253e-05, 9.34959e-07], - [0.7986, -0.00755338, -5.00009e-05, 9.35324e-07], - [0.7597, -0.00798324, -3.5971e-05, -2.27626e-06], - [0.7186, -0.00851367, -7.01149e-05, -8.6303e-06], - [0.6732, -0.00986209, -0.000199569, 1.91974e-05], - [0.6213, -0.010418, 8.83923e-05, 6.24051e-06], - [0.5722, -0.00906601, 0.000182, 6.24051e-06], - [0.5322, -0.00677797, 0.000275608, 6.24051e-06] - ]; - - var COEFS_Y = [ - [-5.20417e-18, 0.0124, 1.21431e-18, -8.45284e-11], - [0.0620, 0.0124, -1.26793e-09, 4.22642e-10], - [0.1240, 0.0124, 5.07171e-09, -1.60604e-09], - [0.1860, 0.0123999, -1.90189e-08, 6.00152e-09], - [0.2480, 0.0124002, 7.10039e-08, -2.24e-08], - [0.3100, 0.0123992, -2.64997e-07, 8.35986e-08], - [0.3720, 0.0124029, 9.88983e-07, -3.11994e-07], - [0.4340, 0.0123893, -3.69093e-06, -4.35621e-07], - [0.4958, 0.0123198, -1.02252e-05, -3.45523e-07], - [0.5571, 0.0121916, -1.54081e-05, -5.82288e-07], - [0.6176, 0.0119938, -2.41424e-05, -5.25327e-07], - [0.6769, 0.011713, -3.20223e-05, -5.16405e-07], - [0.7346, 0.0113541, -3.97684e-05, -6.09052e-07], - [0.7903, 0.0109107, -4.89042e-05, -1.04739e-06], - [0.8435, 0.0103431, -6.4615e-05, -1.40374e-09], - [0.8936, 0.00969686, -6.4636e-05, -8.547e-06], - [0.9394, 0.00840947, -0.000192841, -4.2106e-06], - [0.9761, 0.00616527, -0.000256, -4.2106e-06], - [1.0000, 0.00328947, -0.000319159, -4.2106e-06] - ]; - - var FXC = 0.8487; - var FYC = 1.3523; - var C1 = R2D/5; // rad to 5-degree interval - var RC1 = 1/C1; - var NODES = 18; - - var poly3_val = function(coefs, x) { - return coefs[0] + x * (coefs[1] + x * (coefs[2] + x * coefs[3])); - }; - - var poly3_der = function(coefs, x) { - return coefs[1] + x * (2 * coefs[2] + x * 3 * coefs[3]); - }; - - function newton_rapshon(f_df, start, max_err, iters) { - var x = start; - for (; iters; --iters) { - var upd = f_df(x); - x -= upd; - if (Math.abs(upd) < max_err) { - break; - } - } - return x; - } - - function init$28() { - this.x0 = this.x0 || 0; - this.y0 = this.y0 || 0; - this.long0 = this.long0 || 0; - this.es = 0; - this.title = this.title || "Robinson"; - } - - function forward$27(ll) { - var lon = adjust_lon(ll.x - this.long0); - - var dphi = Math.abs(ll.y); - var i = Math.floor(dphi * C1); - if (i < 0) { - i = 0; - } else if (i >= NODES) { - i = NODES - 1; - } - dphi = R2D * (dphi - RC1 * i); - var xy = { - x: poly3_val(COEFS_X[i], dphi) * lon, - y: poly3_val(COEFS_Y[i], dphi) - }; - if (ll.y < 0) { - xy.y = -xy.y; - } - - xy.x = xy.x * this.a * FXC + this.x0; - xy.y = xy.y * this.a * FYC + this.y0; - return xy; - } - - function inverse$27(xy) { - var ll = { - x: (xy.x - this.x0) / (this.a * FXC), - y: Math.abs(xy.y - this.y0) / (this.a * FYC) - }; - - if (ll.y >= 1) { // pathologic case - ll.x /= COEFS_X[NODES][0]; - ll.y = xy.y < 0 ? -HALF_PI : HALF_PI; - } else { - // find table interval - var i = Math.floor(ll.y * NODES); - if (i < 0) { - i = 0; - } else if (i >= NODES) { - i = NODES - 1; - } - for (;;) { - if (COEFS_Y[i][0] > ll.y) { - --i; - } else if (COEFS_Y[i+1][0] <= ll.y) { - ++i; - } else { - break; - } - } - // linear interpolation in 5 degree interval - var coefs = COEFS_Y[i]; - var t = 5 * (ll.y - coefs[0]) / (COEFS_Y[i+1][0] - coefs[0]); - // find t so that poly3_val(coefs, t) = ll.y - t = newton_rapshon(function(x) { - return (poly3_val(coefs, x) - ll.y) / poly3_der(coefs, x); - }, t, EPSLN, 100); - - ll.x /= poly3_val(COEFS_X[i], t); - ll.y = (5 * i + t) * D2R; - if (xy.y < 0) { - ll.y = -ll.y; - } - } - - ll.x = adjust_lon(ll.x + this.long0); - return ll; - } - - var names$29 = ["Robinson", "robin"]; - var robin = { - init: init$28, - forward: forward$27, - inverse: inverse$27, - names: names$29 - }; - - var includedProjections = function(proj4){ - proj4.Proj.projections.add(tmerc); - proj4.Proj.projections.add(etmerc); - proj4.Proj.projections.add(utm); - proj4.Proj.projections.add(sterea); - proj4.Proj.projections.add(stere); - proj4.Proj.projections.add(somerc); - proj4.Proj.projections.add(omerc); - proj4.Proj.projections.add(lcc); - proj4.Proj.projections.add(krovak); - proj4.Proj.projections.add(cass); - proj4.Proj.projections.add(laea); - proj4.Proj.projections.add(aea); - proj4.Proj.projections.add(gnom); - proj4.Proj.projections.add(cea); - proj4.Proj.projections.add(eqc); - proj4.Proj.projections.add(poly); - proj4.Proj.projections.add(nzmg); - proj4.Proj.projections.add(mill); - proj4.Proj.projections.add(sinu); - proj4.Proj.projections.add(moll); - proj4.Proj.projections.add(eqdc); - proj4.Proj.projections.add(vandg); - proj4.Proj.projections.add(aeqd); - proj4.Proj.projections.add(ortho); - proj4.Proj.projections.add(qsc); - proj4.Proj.projections.add(robin); - }; - - proj4$1.defaultDatum = 'WGS84'; //default datum - proj4$1.Proj = Projection; - proj4$1.WGS84 = new proj4$1.Proj('WGS84'); - proj4$1.Point = Point; - proj4$1.toPoint = toPoint; - proj4$1.defs = defs; - proj4$1.transform = transform; - proj4$1.mgrs = mgrs; - proj4$1.version = version; - includedProjections(proj4$1); - - return proj4$1; - -}))); - -},{}],317:[function(require,module,exports){ -'use strict' -var Buffer = require('buffer').Buffer -var inherits = require('inherits') -var HashBase = require('hash-base') - -var ARRAY16 = new Array(16) - -var zl = [ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, - 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, - 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, - 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 -] - -var zr = [ - 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, - 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, - 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, - 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, - 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 -] - -var sl = [ - 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, - 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, - 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, - 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, - 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 -] - -var sr = [ - 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, - 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, - 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, - 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, - 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 -] - -var hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e] -var hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000] - -function RIPEMD160 () { - HashBase.call(this, 64) - - // state - this._a = 0x67452301 - this._b = 0xefcdab89 - this._c = 0x98badcfe - this._d = 0x10325476 - this._e = 0xc3d2e1f0 -} - -inherits(RIPEMD160, HashBase) - -RIPEMD160.prototype._update = function () { - var words = ARRAY16 - for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4) - - var al = this._a | 0 - var bl = this._b | 0 - var cl = this._c | 0 - var dl = this._d | 0 - var el = this._e | 0 - - var ar = this._a | 0 - var br = this._b | 0 - var cr = this._c | 0 - var dr = this._d | 0 - var er = this._e | 0 - - // computation - for (var i = 0; i < 80; i += 1) { - var tl - var tr - if (i < 16) { - tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i]) - tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i]) - } else if (i < 32) { - tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i]) - tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i]) - } else if (i < 48) { - tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i]) - tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i]) - } else if (i < 64) { - tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i]) - tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i]) - } else { // if (i<80) { - tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i]) - tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i]) - } - - al = el - el = dl - dl = rotl(cl, 10) - cl = bl - bl = tl - - ar = er - er = dr - dr = rotl(cr, 10) - cr = br - br = tr - } - - // update state - var t = (this._b + cl + dr) | 0 - this._b = (this._c + dl + er) | 0 - this._c = (this._d + el + ar) | 0 - this._d = (this._e + al + br) | 0 - this._e = (this._a + bl + cr) | 0 - this._a = t -} - -RIPEMD160.prototype._digest = function () { - // create padding and handle blocks - this._block[this._blockOffset++] = 0x80 - if (this._blockOffset > 56) { - this._block.fill(0, this._blockOffset, 64) - this._update() - this._blockOffset = 0 - } - - this._block.fill(0, this._blockOffset, 56) - this._block.writeUInt32LE(this._length[0], 56) - this._block.writeUInt32LE(this._length[1], 60) - this._update() - - // produce result - var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20) - buffer.writeInt32LE(this._a, 0) - buffer.writeInt32LE(this._b, 4) - buffer.writeInt32LE(this._c, 8) - buffer.writeInt32LE(this._d, 12) - buffer.writeInt32LE(this._e, 16) - return buffer -} - -function rotl (x, n) { - return (x << n) | (x >>> (32 - n)) -} - -function fn1 (a, b, c, d, e, m, k, s) { - return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0 -} - -function fn2 (a, b, c, d, e, m, k, s) { - return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0 -} - -function fn3 (a, b, c, d, e, m, k, s) { - return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0 -} - -function fn4 (a, b, c, d, e, m, k, s) { - return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0 -} - -function fn5 (a, b, c, d, e, m, k, s) { - return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0 -} - -module.exports = RIPEMD160 - -},{"buffer":182,"hash-base":227,"inherits":262}],318:[function(require,module,exports){ -/* eslint-disable node/no-deprecated-api */ -var buffer = require('buffer') -var Buffer = buffer.Buffer - -// alternative to using Object.keys for old browsers -function copyProps (src, dst) { - for (var key in src) { - dst[key] = src[key] - } -} -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports) - exports.Buffer = SafeBuffer -} - -function SafeBuffer (arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length) -} - -SafeBuffer.prototype = Object.create(Buffer.prototype) - -// Copy static methods from Buffer -copyProps(Buffer, SafeBuffer) - -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number') - } - return Buffer(arg, encodingOrOffset, length) -} - -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - var buf = Buffer(size) - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding) - } else { - buf.fill(fill) - } - } else { - buf.fill(0) - } - return buf -} - -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return Buffer(size) -} - -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return buffer.SlowBuffer(size) -} - -},{"buffer":182}],319:[function(require,module,exports){ -var Buffer = require('safe-buffer').Buffer - -// prototype class for hash functions -function Hash (blockSize, finalSize) { - this._block = Buffer.alloc(blockSize) - this._finalSize = finalSize - this._blockSize = blockSize - this._len = 0 -} - -Hash.prototype.update = function (data, enc) { - if (typeof data === 'string') { - enc = enc || 'utf8' - data = Buffer.from(data, enc) - } - - var block = this._block - var blockSize = this._blockSize - var length = data.length - var accum = this._len - - for (var offset = 0; offset < length;) { - var assigned = accum % blockSize - var remainder = Math.min(length - offset, blockSize - assigned) - - for (var i = 0; i < remainder; i++) { - block[assigned + i] = data[offset + i] - } - - accum += remainder - offset += remainder - - if ((accum % blockSize) === 0) { - this._update(block) - } - } - - this._len += length - return this -} - -Hash.prototype.digest = function (enc) { - var rem = this._len % this._blockSize - - this._block[rem] = 0x80 - - // zero (rem + 1) trailing bits, where (rem + 1) is the smallest - // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize - this._block.fill(0, rem + 1) - - if (rem >= this._finalSize) { - this._update(this._block) - this._block.fill(0) - } - - var bits = this._len * 8 - - // uint32 - if (bits <= 0xffffffff) { - this._block.writeUInt32BE(bits, this._blockSize - 4) - - // uint64 - } else { - var lowBits = (bits & 0xffffffff) >>> 0 - var highBits = (bits - lowBits) / 0x100000000 - - this._block.writeUInt32BE(highBits, this._blockSize - 8) - this._block.writeUInt32BE(lowBits, this._blockSize - 4) - } - - this._update(this._block) - var hash = this._hash() - - return enc ? hash.toString(enc) : hash -} - -Hash.prototype._update = function () { - throw new Error('_update must be implemented by subclass') -} - -module.exports = Hash - -},{"safe-buffer":318}],320:[function(require,module,exports){ -var exports = module.exports = function SHA (algorithm) { - algorithm = algorithm.toLowerCase() - - var Algorithm = exports[algorithm] - if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)') - - return new Algorithm() -} - -exports.sha = require('./sha') -exports.sha1 = require('./sha1') -exports.sha224 = require('./sha224') -exports.sha256 = require('./sha256') -exports.sha384 = require('./sha384') -exports.sha512 = require('./sha512') - -},{"./sha":321,"./sha1":322,"./sha224":323,"./sha256":324,"./sha384":325,"./sha512":326}],321:[function(require,module,exports){ -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined - * in FIPS PUB 180-1 - * This source code is derived from sha1.js of the same repository. - * The difference between SHA-0 and SHA-1 is just a bitwise rotate left - * operation was added. - */ - -var inherits = require('inherits') -var Hash = require('./hash') -var Buffer = require('safe-buffer').Buffer - -var K = [ - 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 -] - -var W = new Array(80) - -function Sha () { - this.init() - this._w = W - - Hash.call(this, 64, 56) -} - -inherits(Sha, Hash) - -Sha.prototype.init = function () { - this._a = 0x67452301 - this._b = 0xefcdab89 - this._c = 0x98badcfe - this._d = 0x10325476 - this._e = 0xc3d2e1f0 - - return this -} - -function rotl5 (num) { - return (num << 5) | (num >>> 27) -} - -function rotl30 (num) { - return (num << 30) | (num >>> 2) -} - -function ft (s, b, c, d) { - if (s === 0) return (b & c) | ((~b) & d) - if (s === 2) return (b & c) | (b & d) | (c & d) - return b ^ c ^ d -} - -Sha.prototype._update = function (M) { - var W = this._w - - var a = this._a | 0 - var b = this._b | 0 - var c = this._c | 0 - var d = this._d | 0 - var e = this._e | 0 - - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) - for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16] - - for (var j = 0; j < 80; ++j) { - var s = ~~(j / 20) - var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 - - e = d - d = c - c = rotl30(b) - b = a - a = t - } - - this._a = (a + this._a) | 0 - this._b = (b + this._b) | 0 - this._c = (c + this._c) | 0 - this._d = (d + this._d) | 0 - this._e = (e + this._e) | 0 -} - -Sha.prototype._hash = function () { - var H = Buffer.allocUnsafe(20) - - H.writeInt32BE(this._a | 0, 0) - H.writeInt32BE(this._b | 0, 4) - H.writeInt32BE(this._c | 0, 8) - H.writeInt32BE(this._d | 0, 12) - H.writeInt32BE(this._e | 0, 16) - - return H -} - -module.exports = Sha - -},{"./hash":319,"inherits":262,"safe-buffer":318}],322:[function(require,module,exports){ -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined - * in FIPS PUB 180-1 - * Version 2.1a Copyright Paul Johnston 2000 - 2002. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for details. - */ - -var inherits = require('inherits') -var Hash = require('./hash') -var Buffer = require('safe-buffer').Buffer - -var K = [ - 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 -] - -var W = new Array(80) - -function Sha1 () { - this.init() - this._w = W - - Hash.call(this, 64, 56) -} - -inherits(Sha1, Hash) - -Sha1.prototype.init = function () { - this._a = 0x67452301 - this._b = 0xefcdab89 - this._c = 0x98badcfe - this._d = 0x10325476 - this._e = 0xc3d2e1f0 - - return this -} - -function rotl1 (num) { - return (num << 1) | (num >>> 31) -} - -function rotl5 (num) { - return (num << 5) | (num >>> 27) -} - -function rotl30 (num) { - return (num << 30) | (num >>> 2) -} - -function ft (s, b, c, d) { - if (s === 0) return (b & c) | ((~b) & d) - if (s === 2) return (b & c) | (b & d) | (c & d) - return b ^ c ^ d -} - -Sha1.prototype._update = function (M) { - var W = this._w - - var a = this._a | 0 - var b = this._b | 0 - var c = this._c | 0 - var d = this._d | 0 - var e = this._e | 0 - - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) - for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]) - - for (var j = 0; j < 80; ++j) { - var s = ~~(j / 20) - var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 - - e = d - d = c - c = rotl30(b) - b = a - a = t - } - - this._a = (a + this._a) | 0 - this._b = (b + this._b) | 0 - this._c = (c + this._c) | 0 - this._d = (d + this._d) | 0 - this._e = (e + this._e) | 0 -} - -Sha1.prototype._hash = function () { - var H = Buffer.allocUnsafe(20) - - H.writeInt32BE(this._a | 0, 0) - H.writeInt32BE(this._b | 0, 4) - H.writeInt32BE(this._c | 0, 8) - H.writeInt32BE(this._d | 0, 12) - H.writeInt32BE(this._e | 0, 16) - - return H -} - -module.exports = Sha1 - -},{"./hash":319,"inherits":262,"safe-buffer":318}],323:[function(require,module,exports){ -/** - * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined - * in FIPS 180-2 - * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * - */ - -var inherits = require('inherits') -var Sha256 = require('./sha256') -var Hash = require('./hash') -var Buffer = require('safe-buffer').Buffer - -var W = new Array(64) - -function Sha224 () { - this.init() - - this._w = W // new Array(64) - - Hash.call(this, 64, 56) -} - -inherits(Sha224, Sha256) - -Sha224.prototype.init = function () { - this._a = 0xc1059ed8 - this._b = 0x367cd507 - this._c = 0x3070dd17 - this._d = 0xf70e5939 - this._e = 0xffc00b31 - this._f = 0x68581511 - this._g = 0x64f98fa7 - this._h = 0xbefa4fa4 - - return this -} - -Sha224.prototype._hash = function () { - var H = Buffer.allocUnsafe(28) - - H.writeInt32BE(this._a, 0) - H.writeInt32BE(this._b, 4) - H.writeInt32BE(this._c, 8) - H.writeInt32BE(this._d, 12) - H.writeInt32BE(this._e, 16) - H.writeInt32BE(this._f, 20) - H.writeInt32BE(this._g, 24) - - return H -} - -module.exports = Sha224 - -},{"./hash":319,"./sha256":324,"inherits":262,"safe-buffer":318}],324:[function(require,module,exports){ -/** - * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined - * in FIPS 180-2 - * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * - */ - -var inherits = require('inherits') -var Hash = require('./hash') -var Buffer = require('safe-buffer').Buffer - -var K = [ - 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, - 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, - 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, - 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, - 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, - 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, - 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, - 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, - 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, - 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, - 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, - 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, - 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, - 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, - 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, - 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 -] - -var W = new Array(64) - -function Sha256 () { - this.init() - - this._w = W // new Array(64) - - Hash.call(this, 64, 56) -} - -inherits(Sha256, Hash) - -Sha256.prototype.init = function () { - this._a = 0x6a09e667 - this._b = 0xbb67ae85 - this._c = 0x3c6ef372 - this._d = 0xa54ff53a - this._e = 0x510e527f - this._f = 0x9b05688c - this._g = 0x1f83d9ab - this._h = 0x5be0cd19 - - return this -} - -function ch (x, y, z) { - return z ^ (x & (y ^ z)) -} - -function maj (x, y, z) { - return (x & y) | (z & (x | y)) -} - -function sigma0 (x) { - return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10) -} - -function sigma1 (x) { - return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7) -} - -function gamma0 (x) { - return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3) -} - -function gamma1 (x) { - return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10) -} - -Sha256.prototype._update = function (M) { - var W = this._w - - var a = this._a | 0 - var b = this._b | 0 - var c = this._c | 0 - var d = this._d | 0 - var e = this._e | 0 - var f = this._f | 0 - var g = this._g | 0 - var h = this._h | 0 - - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) - for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0 - - for (var j = 0; j < 64; ++j) { - var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0 - var T2 = (sigma0(a) + maj(a, b, c)) | 0 - - h = g - g = f - f = e - e = (d + T1) | 0 - d = c - c = b - b = a - a = (T1 + T2) | 0 - } - - this._a = (a + this._a) | 0 - this._b = (b + this._b) | 0 - this._c = (c + this._c) | 0 - this._d = (d + this._d) | 0 - this._e = (e + this._e) | 0 - this._f = (f + this._f) | 0 - this._g = (g + this._g) | 0 - this._h = (h + this._h) | 0 -} - -Sha256.prototype._hash = function () { - var H = Buffer.allocUnsafe(32) - - H.writeInt32BE(this._a, 0) - H.writeInt32BE(this._b, 4) - H.writeInt32BE(this._c, 8) - H.writeInt32BE(this._d, 12) - H.writeInt32BE(this._e, 16) - H.writeInt32BE(this._f, 20) - H.writeInt32BE(this._g, 24) - H.writeInt32BE(this._h, 28) - - return H -} - -module.exports = Sha256 - -},{"./hash":319,"inherits":262,"safe-buffer":318}],325:[function(require,module,exports){ -var inherits = require('inherits') -var SHA512 = require('./sha512') -var Hash = require('./hash') -var Buffer = require('safe-buffer').Buffer - -var W = new Array(160) - -function Sha384 () { - this.init() - this._w = W - - Hash.call(this, 128, 112) -} - -inherits(Sha384, SHA512) - -Sha384.prototype.init = function () { - this._ah = 0xcbbb9d5d - this._bh = 0x629a292a - this._ch = 0x9159015a - this._dh = 0x152fecd8 - this._eh = 0x67332667 - this._fh = 0x8eb44a87 - this._gh = 0xdb0c2e0d - this._hh = 0x47b5481d - - this._al = 0xc1059ed8 - this._bl = 0x367cd507 - this._cl = 0x3070dd17 - this._dl = 0xf70e5939 - this._el = 0xffc00b31 - this._fl = 0x68581511 - this._gl = 0x64f98fa7 - this._hl = 0xbefa4fa4 - - return this -} - -Sha384.prototype._hash = function () { - var H = Buffer.allocUnsafe(48) - - function writeInt64BE (h, l, offset) { - H.writeInt32BE(h, offset) - H.writeInt32BE(l, offset + 4) - } - - writeInt64BE(this._ah, this._al, 0) - writeInt64BE(this._bh, this._bl, 8) - writeInt64BE(this._ch, this._cl, 16) - writeInt64BE(this._dh, this._dl, 24) - writeInt64BE(this._eh, this._el, 32) - writeInt64BE(this._fh, this._fl, 40) - - return H -} - -module.exports = Sha384 - -},{"./hash":319,"./sha512":326,"inherits":262,"safe-buffer":318}],326:[function(require,module,exports){ -var inherits = require('inherits') -var Hash = require('./hash') -var Buffer = require('safe-buffer').Buffer - -var K = [ - 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, - 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, - 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, - 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, - 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, - 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, - 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, - 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, - 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, - 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, - 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, - 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, - 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, - 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, - 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, - 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, - 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, - 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, - 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, - 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, - 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, - 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, - 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, - 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, - 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, - 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, - 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, - 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, - 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, - 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, - 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, - 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, - 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, - 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, - 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, - 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, - 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, - 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, - 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, - 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 -] - -var W = new Array(160) - -function Sha512 () { - this.init() - this._w = W - - Hash.call(this, 128, 112) -} - -inherits(Sha512, Hash) - -Sha512.prototype.init = function () { - this._ah = 0x6a09e667 - this._bh = 0xbb67ae85 - this._ch = 0x3c6ef372 - this._dh = 0xa54ff53a - this._eh = 0x510e527f - this._fh = 0x9b05688c - this._gh = 0x1f83d9ab - this._hh = 0x5be0cd19 - - this._al = 0xf3bcc908 - this._bl = 0x84caa73b - this._cl = 0xfe94f82b - this._dl = 0x5f1d36f1 - this._el = 0xade682d1 - this._fl = 0x2b3e6c1f - this._gl = 0xfb41bd6b - this._hl = 0x137e2179 - - return this -} - -function Ch (x, y, z) { - return z ^ (x & (y ^ z)) -} - -function maj (x, y, z) { - return (x & y) | (z & (x | y)) -} - -function sigma0 (x, xl) { - return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25) -} - -function sigma1 (x, xl) { - return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23) -} - -function Gamma0 (x, xl) { - return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7) -} - -function Gamma0l (x, xl) { - return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25) -} - -function Gamma1 (x, xl) { - return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6) -} - -function Gamma1l (x, xl) { - return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26) -} - -function getCarry (a, b) { - return (a >>> 0) < (b >>> 0) ? 1 : 0 -} - -Sha512.prototype._update = function (M) { - var W = this._w - - var ah = this._ah | 0 - var bh = this._bh | 0 - var ch = this._ch | 0 - var dh = this._dh | 0 - var eh = this._eh | 0 - var fh = this._fh | 0 - var gh = this._gh | 0 - var hh = this._hh | 0 - - var al = this._al | 0 - var bl = this._bl | 0 - var cl = this._cl | 0 - var dl = this._dl | 0 - var el = this._el | 0 - var fl = this._fl | 0 - var gl = this._gl | 0 - var hl = this._hl | 0 - - for (var i = 0; i < 32; i += 2) { - W[i] = M.readInt32BE(i * 4) - W[i + 1] = M.readInt32BE(i * 4 + 4) - } - for (; i < 160; i += 2) { - var xh = W[i - 15 * 2] - var xl = W[i - 15 * 2 + 1] - var gamma0 = Gamma0(xh, xl) - var gamma0l = Gamma0l(xl, xh) - - xh = W[i - 2 * 2] - xl = W[i - 2 * 2 + 1] - var gamma1 = Gamma1(xh, xl) - var gamma1l = Gamma1l(xl, xh) - - // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] - var Wi7h = W[i - 7 * 2] - var Wi7l = W[i - 7 * 2 + 1] - - var Wi16h = W[i - 16 * 2] - var Wi16l = W[i - 16 * 2 + 1] - - var Wil = (gamma0l + Wi7l) | 0 - var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0 - Wil = (Wil + gamma1l) | 0 - Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0 - Wil = (Wil + Wi16l) | 0 - Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0 - - W[i] = Wih - W[i + 1] = Wil - } - - for (var j = 0; j < 160; j += 2) { - Wih = W[j] - Wil = W[j + 1] - - var majh = maj(ah, bh, ch) - var majl = maj(al, bl, cl) - - var sigma0h = sigma0(ah, al) - var sigma0l = sigma0(al, ah) - var sigma1h = sigma1(eh, el) - var sigma1l = sigma1(el, eh) - - // t1 = h + sigma1 + ch + K[j] + W[j] - var Kih = K[j] - var Kil = K[j + 1] - - var chh = Ch(eh, fh, gh) - var chl = Ch(el, fl, gl) - - var t1l = (hl + sigma1l) | 0 - var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0 - t1l = (t1l + chl) | 0 - t1h = (t1h + chh + getCarry(t1l, chl)) | 0 - t1l = (t1l + Kil) | 0 - t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0 - t1l = (t1l + Wil) | 0 - t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0 - - // t2 = sigma0 + maj - var t2l = (sigma0l + majl) | 0 - var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0 - - hh = gh - hl = gl - gh = fh - gl = fl - fh = eh - fl = el - el = (dl + t1l) | 0 - eh = (dh + t1h + getCarry(el, dl)) | 0 - dh = ch - dl = cl - ch = bh - cl = bl - bh = ah - bl = al - al = (t1l + t2l) | 0 - ah = (t1h + t2h + getCarry(al, t1l)) | 0 - } - - this._al = (this._al + al) | 0 - this._bl = (this._bl + bl) | 0 - this._cl = (this._cl + cl) | 0 - this._dl = (this._dl + dl) | 0 - this._el = (this._el + el) | 0 - this._fl = (this._fl + fl) | 0 - this._gl = (this._gl + gl) | 0 - this._hl = (this._hl + hl) | 0 - - this._ah = (this._ah + ah + getCarry(this._al, al)) | 0 - this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0 - this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0 - this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0 - this._eh = (this._eh + eh + getCarry(this._el, el)) | 0 - this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0 - this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0 - this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0 -} - -Sha512.prototype._hash = function () { - var H = Buffer.allocUnsafe(64) - - function writeInt64BE (h, l, offset) { - H.writeInt32BE(h, offset) - H.writeInt32BE(l, offset + 4) - } - - writeInt64BE(this._ah, this._al, 0) - writeInt64BE(this._bh, this._bl, 8) - writeInt64BE(this._ch, this._cl, 16) - writeInt64BE(this._dh, this._dl, 24) - writeInt64BE(this._eh, this._el, 32) - writeInt64BE(this._fh, this._fl, 40) - writeInt64BE(this._gh, this._gl, 48) - writeInt64BE(this._hh, this._hl, 56) - - return H -} - -module.exports = Sha512 - -},{"./hash":319,"inherits":262,"safe-buffer":318}],327:[function(require,module,exports){ -(function (process,Buffer,__dirname){ - -// We are modularizing this manually because the current modularize setting in Emscripten has some issues: -// https://github.com/kripken/emscripten/issues/5820 -// In addition, When you use emcc's modularization, it still expects to export a global object called `Module`, -// which is able to be used/called before the WASM is loaded. -// The modularization below exports a promise that loads and resolves to the actual sql.js module. -// That way, this module can't be used before the WASM is finished loading. - -// We are going to define a function that a user will call to start loading initializing our Sql.js library -// However, that function might be called multiple times, and on subsequent calls, we don't actually want it to instantiate a new instance of the Module -// Instead, we want to return the previously loaded module - -// TODO: Make this not declare a global if used in the browser -var initSqlJsPromise = undefined; - -var initSqlJs = function (moduleConfig) { - - if (initSqlJsPromise){ - return initSqlJsPromise; - } - // If we're here, we've never called this function before - initSqlJsPromise = new Promise((resolveModule, reject) => { - - // We are modularizing this manually because the current modularize setting in Emscripten has some issues: - // https://github.com/kripken/emscripten/issues/5820 - - // The way to affect the loading of emcc compiled modules is to create a variable called `Module` and add - // properties to it, like `preRun`, `postRun`, etc - // We are using that to get notified when the WASM has finished loading. - // Only then will we return our promise - - // If they passed in a moduleConfig object, use that - // Otherwise, initialize Module to the empty object - var Module = typeof moduleConfig !== 'undefined' ? moduleConfig : {}; - - // EMCC only allows for a single onAbort function (not an array of functions) - // So if the user defined their own onAbort function, we remember it and call it - var originalOnAbortFunction = Module['onAbort']; - Module['onAbort'] = function (errorThatCausedAbort) { - reject(new Error(errorThatCausedAbort)); - if (originalOnAbortFunction){ - originalOnAbortFunction(errorThatCausedAbort); - } - }; - - Module['postRun'] = Module['postRun'] || []; - Module['postRun'].push(function () { - // When Emscripted calls postRun, this promise resolves with the built Module - resolveModule(Module); - }); - - // There is a section of code in the emcc-generated code below that looks like this: - // (Note that this is lowercase `module`) - // if (typeof module !== 'undefined') { - // module['exports'] = Module; - // } - // When that runs, it's going to overwrite our own modularization export efforts in shell-post.js! - // The only way to tell emcc not to emit it is to pass the MODULARIZE=1 or MODULARIZE_INSTANCE=1 flags, - // but that carries with it additional unnecessary baggage/bugs we don't want either. - // So, we have three options: - // 1) We undefine `module` - // 2) We remember what `module['exports']` was at the beginning of this function and we restore it later - // 3) We write a script to remove those lines of code as part of the Make process. - // - // Since those are the only lines of code that care about module, we will undefine it. It's the most straightforward - // of the options, and has the side effect of reducing emcc's efforts to modify the module if its output were to change in the future. - // That's a nice side effect since we're handling the modularization efforts ourselves - module = undefined; - - // The emcc-generated code and shell-post.js code goes below, - // meaning that all of it runs inside of this promise. If anything throws an exception, our promise will abort -var aa;var f;f||(f=typeof Module !== 'undefined' ? Module : {}); -var wa=function(){var a;var b=h(4);var c={};var d=function(){function a(a,b){this.ga=a;this.db=b;this.oa=1;this.Ha=[]}a.prototype.bind=function(a){if(!this.ga)throw"Statement closed";this.reset();return Array.isArray(a)?this.pb(a):this.qb(a)};a.prototype.step=function(){var a;if(!this.ga)throw"Statement closed";this.oa=1;switch(a=fc(this.ga)){case c.lb:return!0;case c.DONE:return!1;default:return this.db.handleError(a)}};a.prototype.wb=function(a){null==a&&(a=this.oa++);return hc(this.ga,a)};a.prototype.xb= -function(a){null==a&&(a=this.oa++);return ic(this.ga,a)};a.prototype.getBlob=function(a){var b;null==a&&(a=this.oa++);var c=jc(this.ga,a);var d=kc(this.ga,a);var e=new Uint8Array(c);for(a=b=0;0<=c?bc;a=0<=c?++b:--b)e[a]=l[d+a];return e};a.prototype.get=function(a){var b,d;null!=a&&this.bind(a)&&this.step();var e=[];a=b=0;for(d=pb(this.ga);0<=d?bd;a=0<=d?++b:--b)switch(lc(this.ga,a)){case c.kb:case c.FLOAT:e.push(this.wb(a));break;case c.mb:e.push(this.xb(a));break;case c.cb:e.push(this.getBlob(a)); -break;default:e.push(null)}return e};a.prototype.getColumnNames=function(){var a,b;var c=[];var d=a=0;for(b=pb(this.ga);0<=b?ab;d=0<=b?++a:--a)c.push(mc(this.ga,d));return c};a.prototype.getAsObject=function(a){var b,c;var d=this.get(a);var e=this.getColumnNames();var g={};a=b=0;for(c=e.length;b>>0);if(null!=a){var c=this.filename,d=c?m("/",c):"/";c=ia(!0,!0);d=ja(d,(void 0!==c?c:438)&4095|32768,0);if(a){if("string"===typeof a){for(var e=Array(a.length),k=0,Oa=a.length;kc;e=0<=c?++g:--g){var n=q(d+4*e,"i32");var A=wc(n);e=function(){switch(!1){case 1!==A:return ub;case 2!==A:return ub;case 3!==A:return xc;case 4!==A:return function(a){var b,c;var d=zc(a);var e=Ac(a);a=new Uint8Array(d);for(b=c=0;0<=d?cd;b=0<=d?++c:--c)a[b]=l[e+b];return a};default:return function(){return null}}}();e=e(n);k.push(e)}try{var v=b.apply(null,k)}catch(yc){v=yc;vb(a,v,-1);return}switch(typeof v){case "boolean":Bc(a,v?1:0);break;case "number":Cc(a, -v);break;case "string":Dc(a,v,-1,-1);break;case "object":null===v?wb(a):null!=v.length?(c=ca(v),Ec(a,c,v.length,-1),fa(c)):vb(a,"Wrong API use : tried to return a value of an unknown type ("+v+").",-1);break;default:wb(a)}});this.qa[a]=d;this.handleError(Fc(this.db,a,b.length,c.nb,0,d,0,0,0));return this};return a}();var g=f.cwrap("sqlite3_open","number",["string","number"]);var k=f.cwrap("sqlite3_close_v2","number",["number"]);var n=f.cwrap("sqlite3_exec","number",["number","string","number","number", -"number"]);f.cwrap("sqlite3_free","",["number"]);var v=f.cwrap("sqlite3_changes","number",["number"]);var A=f.cwrap("sqlite3_prepare_v2","number",["number","string","number","number","number"]);var ha=f.cwrap("sqlite3_prepare_v2","number",["number","number","number","number","number"]);var da=f.cwrap("sqlite3_bind_text","number",["number","number","number","number","number"]);var Pa=f.cwrap("sqlite3_bind_blob","number",["number","number","number","number","number"]);var oc=f.cwrap("sqlite3_bind_double", -"number",["number","number","number"]);var nc=f.cwrap("sqlite3_bind_int","number",["number","number","number"]);var pc=f.cwrap("sqlite3_bind_parameter_index","number",["number","string"]);var fc=f.cwrap("sqlite3_step","number",["number"]);var uc=f.cwrap("sqlite3_errmsg","string",["number"]);var pb=f.cwrap("sqlite3_data_count","number",["number"]);var hc=f.cwrap("sqlite3_column_double","number",["number","number"]);var ic=f.cwrap("sqlite3_column_text","string",["number","number"]);var kc=f.cwrap("sqlite3_column_blob", -"number",["number","number"]);var jc=f.cwrap("sqlite3_column_bytes","number",["number","number"]);var lc=f.cwrap("sqlite3_column_type","number",["number","number"]);var mc=f.cwrap("sqlite3_column_name","string",["number","number"]);var rc=f.cwrap("sqlite3_reset","number",["number"]);var qc=f.cwrap("sqlite3_clear_bindings","number",["number"]);var sc=f.cwrap("sqlite3_finalize","number",["number"]);var Fc=f.cwrap("sqlite3_create_function_v2","number","number string number number number number number number number".split(" ")); -var wc=f.cwrap("sqlite3_value_type","number",["number"]);var zc=f.cwrap("sqlite3_value_bytes","number",["number"]);var xc=f.cwrap("sqlite3_value_text","string",["number"]);f.cwrap("sqlite3_value_int","number",["number"]);var Ac=f.cwrap("sqlite3_value_blob","number",["number"]);var ub=f.cwrap("sqlite3_value_double","number",["number"]);var Cc=f.cwrap("sqlite3_result_double","",["number","number"]);var wb=f.cwrap("sqlite3_result_null","",["number"]);var Dc=f.cwrap("sqlite3_result_text","",["number", -"string","number","number"]);var Ec=f.cwrap("sqlite3_result_blob","",["number","number","number","number"]);var Bc=f.cwrap("sqlite3_result_int","",["number","number"]);f.cwrap("sqlite3_result_int64","",["number","number"]);var vb=f.cwrap("sqlite3_result_error","",["number","string","number"]);var tc=f.cwrap("RegisterExtensionFunctions","number",["number"]);this.SQL={Database:e};for(a in this.SQL)f[a]=this.SQL[a];var ea=0;c.Aa=0;c.Dd=1;c.Wd=2;c.ge=3;c.Gb=4;c.Ib=5;c.Zd=6;c.NOMEM=7;c.je=8;c.Xd=9;c.Yd= -10;c.Lb=11;c.NOTFOUND=12;c.Vd=13;c.Jb=14;c.he=15;c.EMPTY=16;c.ke=17;c.le=18;c.Kb=19;c.$d=20;c.be=21;c.ce=22;c.Hb=23;c.Ud=24;c.ie=25;c.de=26;c.ee=27;c.me=28;c.lb=100;c.DONE=101;c.kb=1;c.FLOAT=2;c.mb=3;c.cb=4;c.fe=5;c.nb=1}.bind(this);f.preRun=f.preRun||[];f.preRun.push(wa);var xa={},w;for(w in f)f.hasOwnProperty(w)&&(xa[w]=f[w]);f.arguments=[];f.thisProgram="./this.program";f.quit=function(a,b){throw b;};f.preRun=[];f.postRun=[];var ya=!1,x=!1,y=!1,za=!1;ya="object"===typeof window; -x="function"===typeof importScripts;y="object"===typeof process&&"function"===typeof require&&!ya&&!x;za=!ya&&!y&&!x;var z=""; -if(y){z=__dirname+"/";var Aa,Ba;f.read=function(a,b){var c=B(a);c||(Aa||(Aa=require("fs")),Ba||(Ba=require("path")),a=Ba.normalize(a),c=Aa.readFileSync(a));return b?c:c.toString()};f.readBinary=function(a){a=f.read(a,!0);a.buffer||(a=new Uint8Array(a));assert(a.buffer);return a};1>2];a=b+a+15&-16;if(a<=Ha())D[Ga>>2]=a;else if(!Ia(a))return 0;return b}var ra=1,t=Array(64);function va(a){for(var b=0;64>b;b++)if(!t[b])return t[b]=a,ra+b;throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.";}var Ja=0; -function q(a,b){b=b||"i8";"*"===b.charAt(b.length-1)&&(b="i32");switch(b){case "i1":return l[a>>0];case "i8":return l[a>>0];case "i16":return Ka[a>>1];case "i32":return D[a>>2];case "i64":return D[a>>2];case "float":return La[a>>2];case "double":return Ma[a>>3];default:C("invalid type for getValue: "+b)}return null}var Na=!1;function assert(a,b){a||C("Assertion failed: "+b)}function Qa(a){var b=f["_"+a];assert(b,"Cannot call unknown function "+a+", make sure it is exported");return b} -function Ra(a,b,c,d){var e={string:function(a){var b=0;if(null!==a&&void 0!==a&&0!==a){var c=(a.length<<2)+1;b=h(c);r(a,E,b,c)}return b},array:function(a){var b=h(a.length);l.set(a,b);return b}},g=Qa(a),k=[];a=0;if(d)for(var n=0;n>0]=0;break;case "i8":l[a>>0]=0;break;case "i16":Ka[a>>1]=0;break;case "i32":D[a>>2]=0;break;case "i64":aa=[0,1<=+Sa(0)?~~+Ta(0)>>>0:0];D[a>>2]=aa[0];D[a+4>>2]=aa[1];break;case "float":La[a>>2]=0;break;case "double":Ma[a>>3]=0;break;default:C("invalid type for setValue: "+b)}}var Ua=0,Va=3; -function ca(a){var b=Ua;if("number"===typeof a){var c=!0;var d=a}else c=!1,d=a.length;var e;b==Va?e=g:e=[Wa,h,Fa][b](Math.max(d,1));if(c){var g=e;assert(0==(e&3));for(a=e+(d&-4);g>2]=0;for(a=e+d;g>0]=0;return e}a.subarray||a.slice?E.set(a,e):E.set(new Uint8Array(a),e);return e}var Xa="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0; -function u(a,b,c){var d=b+c;for(c=b;a[c]&&!(c>=d);)++c;if(16e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d}function F(a){return a?u(E,a,void 0):""} -function r(a,b,c,d){if(!(0=k){var n=a.charCodeAt(++g);k=65536+((k&1023)<<10)|n&1023}if(127>=k){if(c>=d)break;b[c++]=k}else{if(2047>=k){if(c+1>=d)break;b[c++]=192|k>>6}else{if(65535>=k){if(c+2>=d)break;b[c++]=224|k>>12}else{if(c+3>=d)break;b[c++]=240|k>>18;b[c++]=128|k>>12&63}b[c++]=128|k>>6&63}b[c++]=128|k&63}}b[c]=0;return c-e} -function oa(a){for(var b=0,c=0;c=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:b+4}return b}"undefined"!==typeof TextDecoder&&new TextDecoder("utf-16le");function Ya(a){return a.replace(/__Z[\w\d_]+/g,function(a){return a===a?a:a+" ["+a+"]"})}function Za(a){0ab&&Ea("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+ab+"! (TOTAL_STACK=5242880)");f.buffer?buffer=f.buffer:buffer=new ArrayBuffer(ab);$a();D[Ga>>2]=5303376; -function bb(a){for(;0>2];var c=D[b>>2]}else mb.pa=!0,I.USER=I.LOGNAME="web_user",I.PATH="/",I.PWD="/",I.HOME="/home/web_user",I.LANG="C.UTF-8",I._=f.thisProgram,c=gb?Wa(1024):Fa(1024),b=gb?Wa(256):Fa(256),D[b>>2]=c,D[a>>2]=b;a=[];var d=0,e;for(e in I)if("string"===typeof I[e]){var g=e+"="+I[e];a.push(g);d+=g.length}if(1024>0]=d.charCodeAt(n);l[k>>0]=0;D[b+ -4*e>>2]=c;c+=g.length+1}D[b+4*a.length>>2]=0}function nb(a){f.___errno_location&&(D[f.___errno_location()>>2]=a);return a}function ob(a,b){for(var c=0,d=a.length-1;0<=d;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift("..");return a}function qb(a){var b="/"===a.charAt(0),c="/"===a.substr(-1);(a=ob(a.split("/").filter(function(a){return!!a}),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b?"/":"")+a} -function rb(a){var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return".";b&&(b=b.substr(0,b.length-1));return a+b}function sb(a){if("/"===a)return"/";var b=a.lastIndexOf("/");return-1===b?a:a.substr(b+1)}function tb(){var a=Array.prototype.slice.call(arguments,0);return qb(a.join("/"))}function m(a,b){return qb(a+"/"+b)} -function xb(){for(var a="",b=!1,c=arguments.length-1;-1<=c&&!b;c--){b=0<=c?arguments[c]:"/";if("string"!==typeof b)throw new TypeError("Arguments to path.resolve must be strings");if(!b)return"";a=b+"/"+a;b="/"===b.charAt(0)}a=ob(a.split("/").filter(function(a){return!!a}),!b).join("/");return(b?"/":"")+a||"."}var yb=[];function zb(a,b){yb[a]={input:[],output:[],wa:b};Ab(a,Bb)} -var Bb={open:function(a){var b=yb[a.node.rdev];if(!b)throw new J(K.Fa);a.tty=b;a.seekable=!1},close:function(a){a.tty.wa.flush(a.tty)},flush:function(a){a.tty.wa.flush(a.tty)},read:function(a,b,c,d){if(!a.tty||!a.tty.wa.$a)throw new J(K.Ra);for(var e=0,g=0;g=b||(b=Math.max(b,c*(1048576>c?2:1.125)|0),0!=c&&(b=Math.max(b,256)),c=a.da,a.da=new Uint8Array(b),0b)a.da.length=b;else for(;a.da.length=a.node.ha)return 0;a=Math.min(a.node.ha-e,d);if(8b)throw new J(K.ja);return b},Sa:function(a,b,c){L.Wa(a.node,b+c);a.node.ha=Math.max(a.node.ha,b+c)},Ca:function(a,b,c,d,e,g,k){if(32768!== -(a.node.mode&61440))throw new J(K.Fa);c=a.node.da;if(k&2||c.buffer!==b&&c.buffer!==b.buffer){if(0>2)}catch(c){if(!c.code)throw c; -throw new J(K[c.code]);}return b.mode},la:function(a){for(var b=[];a.parent!==a;)b.push(a.name),a=a.parent;b.push(a.ka.Ka.root);b.reverse();return tb.apply(null,b)},ub:function(a){a&=-2656257;var b=0,c;for(c in O.Xa)a&c&&(b|=O.Xa[c],a^=c);if(a)throw new J(K.ja);return b},ba:{ma:function(a){a=O.la(a);try{var b=fs.lstatSync(a)}catch(c){if(!c.code)throw c;throw new J(K[c.code]);}O.Ba&&!b.sa&&(b.sa=4096);O.Ba&&!b.blocks&&(b.blocks=(b.size+b.sa-1)/b.sa|0);return{dev:b.dev,ino:b.ino,mode:b.mode,nlink:b.nlink, -uid:b.uid,gid:b.gid,rdev:b.rdev,size:b.size,atime:b.atime,mtime:b.mtime,ctime:b.ctime,sa:b.sa,blocks:b.blocks}},ia:function(a,b){var c=O.la(a);try{void 0!==b.mode&&(fs.chmodSync(c,b.mode),a.mode=b.mode),void 0!==b.size&&fs.truncateSync(c,b.size)}catch(d){if(!d.code)throw d;throw new J(K[d.code]);}},lookup:function(a,b){var c=m(O.la(a),b);c=O.Za(c);return O.createNode(a,b,c)},ya:function(a,b,c,d){a=O.createNode(a,b,c,d);b=O.la(a);try{M(a.mode)?fs.mkdirSync(b,a.mode):fs.writeFileSync(b,"",{mode:a.mode})}catch(e){if(!e.code)throw e; -throw new J(K[e.code]);}return a},rename:function(a,b,c){a=O.la(a);b=m(O.la(b),c);try{fs.renameSync(a,b)}catch(d){if(!d.code)throw d;throw new J(K[d.code]);}},unlink:function(a,b){a=m(O.la(a),b);try{fs.unlinkSync(a)}catch(c){if(!c.code)throw c;throw new J(K[c.code]);}},rmdir:function(a,b){a=m(O.la(a),b);try{fs.rmdirSync(a)}catch(c){if(!c.code)throw c;throw new J(K[c.code]);}},readdir:function(a){a=O.la(a);try{return fs.readdirSync(a)}catch(b){if(!b.code)throw b;throw new J(K[b.code]);}},symlink:function(a, -b,c){a=m(O.la(a),b);try{fs.symlinkSync(c,a)}catch(d){if(!d.code)throw d;throw new J(K[d.code]);}},readlink:function(a){var b=O.la(a);try{return b=fs.readlinkSync(b),b=Hb.relative(Hb.resolve(a.ka.Ka.root),b)}catch(c){if(!c.code)throw c;throw new J(K[c.code]);}}},ea:{open:function(a){var b=O.la(a.node);try{32768===(a.node.mode&61440)&&(a.za=fs.openSync(b,O.ub(a.flags)))}catch(c){if(!c.code)throw c;throw new J(K[c.code]);}},close:function(a){try{32768===(a.node.mode&61440)&&a.za&&fs.closeSync(a.za)}catch(b){if(!b.code)throw b; -throw new J(K[b.code]);}},read:function(a,b,c,d,e){if(0===d)return 0;try{return fs.readSync(a.za,O.Ua(b.buffer),c,d,e)}catch(g){throw new J(K[g.code]);}},write:function(a,b,c,d,e){try{return fs.writeSync(a.za,O.Ua(b.buffer),c,d,e)}catch(g){throw new J(K[g.code]);}},ra:function(a,b,c){if(1===c)b+=a.position;else if(2===c&&32768===(a.node.mode&61440))try{b+=fs.fstatSync(a.za).size}catch(d){throw new J(K[d.code]);}if(0>b)throw new J(K.ja);return b}}},Ib=null,Jb={},P=[],Kb=1,Q=null,Lb=!0,R={},J=null, -Gb={};function S(a,b){a=xb("/",a);b=b||{};if(!a)return{path:"",node:null};var c={Ya:!0,Ma:0},d;for(d in c)void 0===b[d]&&(b[d]=c[d]);if(8>>0)%Q.length}function Pb(a){var b=Ob(a.parent.id,a.name);a.va=Q[b];Q[b]=a}function Qb(a){var b=Ob(a.parent.id,a.name);if(Q[b]===a)Q[b]=a.va;else for(b=Q[b];b;){if(b.va===a){b.va=a.va;break}b=b.va}} -function N(a,b){var c;if(c=(c=Rb(a,"x"))?c:a.ba.lookup?0:13)throw new J(c,a);for(c=Q[Ob(a.id,b)];c;c=c.va){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.ba.lookup(a,b)} -function Fb(a,b,c,d){Sb||(Sb=function(a,b,c,d){a||(a=this);this.parent=a;this.ka=a.ka;this.ua=null;this.id=Kb++;this.name=b;this.mode=c;this.ba={};this.ea={};this.rdev=d},Sb.prototype={},Object.defineProperties(Sb.prototype,{read:{get:function(){return 365===(this.mode&365)},set:function(a){a?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146===(this.mode&146)},set:function(a){a?this.mode|=146:this.mode&=-147}}}));a=new Sb(a,b,c,d);Pb(a);return a} -function M(a){return 16384===(a&61440)}var Tb={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};function Ub(a){var b=["r","w","rw"][a&3];a&512&&(b+="w");return b}function Rb(a,b){if(Lb)return 0;if(-1===b.indexOf("r")||a.mode&292){if(-1!==b.indexOf("w")&&!(a.mode&146)||-1!==b.indexOf("x")&&!(a.mode&73))return 13}else return 13;return 0}function Vb(a,b){try{return N(a,b),17}catch(c){}return Rb(a,"wx")} -function Wb(a,b,c){try{var d=N(a,b)}catch(e){return e.fa}if(a=Rb(a,"wx"))return a;if(c){if(!M(d.mode))return 20;if(d===d.parent||"/"===Nb(d))return 16}else if(M(d.mode))return 21;return 0}function Xb(a){var b=4096;for(a=a||0;a<=b;a++)if(!P[a])return a;throw new J(24);} -function Yb(a,b){Zb||(Zb=function(){},Zb.prototype={},Object.defineProperties(Zb.prototype,{object:{get:function(){return this.node},set:function(a){this.node=a}}}));var c=new Zb,d;for(d in a)c[d]=a[d];a=c;b=Xb(b);a.fd=b;return P[b]=a}var Eb={open:function(a){a.ea=Jb[a.node.rdev].ea;a.ea.open&&a.ea.open(a)},ra:function(){throw new J(29);}};function Ab(a,b){Jb[a]={ea:b}} -function $b(a,b){var c="/"===b,d=!b;if(c&&Ib)throw new J(16);if(!c&&!d){var e=S(b,{Ya:!1});b=e.path;e=e.node;if(e.ua)throw new J(16);if(!M(e.mode))throw new J(20);}b={type:a,Ka:{},bb:b,Ab:[]};a=a.ka(b);a.ka=b;b.root=a;c?Ib=a:e&&(e.ua=b,e.ka&&e.ka.Ab.push(b))}function ja(a,b,c){var d=S(a,{parent:!0}).node;a=sb(a);if(!a||"."===a||".."===a)throw new J(22);var e=Vb(d,a);if(e)throw new J(e);if(!d.ba.ya)throw new J(1);return d.ba.ya(d,a,b,c)}function T(a,b){ja(a,(void 0!==b?b:511)&1023|16384,0)} -function ac(a,b,c){"undefined"===typeof c&&(c=b,b=438);ja(a,b|8192,c)}function bc(a,b){if(!xb(a))throw new J(2);var c=S(b,{parent:!0}).node;if(!c)throw new J(2);b=sb(b);var d=Vb(c,b);if(d)throw new J(d);if(!c.ba.symlink)throw new J(1);c.ba.symlink(c,b,a)} -function ua(a){var b=S(a,{parent:!0}).node,c=sb(a),d=N(b,c),e=Wb(b,c,!1);if(e)throw new J(e);if(!b.ba.unlink)throw new J(1);if(d.ua)throw new J(16);try{R.willDeletePath&&R.willDeletePath(a)}catch(g){console.log("FS.trackingDelegate['willDeletePath']('"+a+"') threw an exception: "+g.message)}b.ba.unlink(b,c);Qb(d);try{if(R.onDeletePath)R.onDeletePath(a)}catch(g){console.log("FS.trackingDelegate['onDeletePath']('"+a+"') threw an exception: "+g.message)}} -function Mb(a){a=S(a).node;if(!a)throw new J(2);if(!a.ba.readlink)throw new J(22);return xb(Nb(a.parent),a.ba.readlink(a))}function sa(a,b){a=S(a,{ta:!b}).node;if(!a)throw new J(2);if(!a.ba.ma)throw new J(1);return a.ba.ma(a)}function cc(a){return sa(a,!0)}function ka(a,b){var c;"string"===typeof a?c=S(a,{ta:!0}).node:c=a;if(!c.ba.ia)throw new J(1);c.ba.ia(c,{mode:b&4095|c.mode&-4096,timestamp:Date.now()})} -function dc(a){var b;"string"===typeof a?b=S(a,{ta:!0}).node:b=a;if(!b.ba.ia)throw new J(1);b.ba.ia(b,{timestamp:Date.now()})}function ec(a,b){if(0>b)throw new J(22);var c;"string"===typeof a?c=S(a,{ta:!0}).node:c=a;if(!c.ba.ia)throw new J(1);if(M(c.mode))throw new J(21);if(32768!==(c.mode&61440))throw new J(22);if(a=Rb(c,"w"))throw new J(a);c.ba.ia(c,{size:b,timestamp:Date.now()})} -function p(a,b,c,d){if(""===a)throw new J(2);if("string"===typeof b){var e=Tb[b];if("undefined"===typeof e)throw Error("Unknown file open mode: "+b);b=e}c=b&64?("undefined"===typeof c?438:c)&4095|32768:0;if("object"===typeof a)var g=a;else{a=qb(a);try{g=S(a,{ta:!(b&131072)}).node}catch(k){}}e=!1;if(b&64)if(g){if(b&128)throw new J(17);}else g=ja(a,c,0),e=!0;if(!g)throw new J(2);8192===(g.mode&61440)&&(b&=-513);if(b&65536&&!M(g.mode))throw new J(20);if(!e&&(c=g?40960===(g.mode&61440)?40:M(g.mode)&& -("r"!==Ub(b)||b&512)?21:Rb(g,Ub(b)):2))throw new J(c);b&512&&ec(g,0);b&=-641;d=Yb({node:g,path:Nb(g),flags:b,seekable:!0,position:0,ea:g.ea,Fb:[],error:!1},d);d.ea.open&&d.ea.open(d);!f.logReadFiles||b&1||(vc||(vc={}),a in vc||(vc[a]=1,console.log("FS.trackingDelegate error on read file: "+a)));try{R.onOpenFile&&(g=0,1!==(b&2097155)&&(g|=1),0!==(b&2097155)&&(g|=2),R.onOpenFile(a,g))}catch(k){console.log("FS.trackingDelegate['onOpenFile']('"+a+"', flags) threw an exception: "+k.message)}return d} -function ma(a){if(null===a.fd)throw new J(9);a.Ja&&(a.Ja=null);try{a.ea.close&&a.ea.close(a)}catch(b){throw b;}finally{P[a.fd]=null}a.fd=null}function Gc(a,b,c){if(null===a.fd)throw new J(9);if(!a.seekable||!a.ea.ra)throw new J(29);if(0!=c&&1!=c&&2!=c)throw new J(22);a.position=a.ea.ra(a,b,c);a.Fb=[]} -function ta(a,b,c,d,e){if(0>d||0>e)throw new J(22);if(null===a.fd)throw new J(9);if(1===(a.flags&2097155))throw new J(9);if(M(a.node.mode))throw new J(21);if(!a.ea.read)throw new J(22);var g="undefined"!==typeof e;if(!g)e=a.position;else if(!a.seekable)throw new J(29);b=a.ea.read(a,b,c,d,e);g||(a.position+=b);return b} -function la(a,b,c,d,e,g){if(0>d||0>e)throw new J(22);if(null===a.fd)throw new J(9);if(0===(a.flags&2097155))throw new J(9);if(M(a.node.mode))throw new J(21);if(!a.ea.write)throw new J(22);a.flags&1024&&Gc(a,0,2);var k="undefined"!==typeof e;if(!k)e=a.position;else if(!a.seekable)throw new J(29);b=a.ea.write(a,b,c,d,e,g);k||(a.position+=b);try{if(a.path&&R.onWriteToFile)R.onWriteToFile(a.path)}catch(n){console.log("FS.trackingDelegate['onWriteToFile']('"+a.path+"') threw an exception: "+n.message)}return b} -function Hc(){J||(J=function(a,b){this.node=b;this.Db=function(a){this.fa=a};this.Db(a);this.message="FS error";this.stack&&Object.defineProperty(this,"stack",{value:Error().stack,writable:!0})},J.prototype=Error(),J.prototype.constructor=J,[2].forEach(function(a){Gb[a]=new J(a);Gb[a].stack=""}))}var Ic;function ia(a,b){var c=0;a&&(c|=365);b&&(c|=146);return c} -function Jc(a,b,c){a=m("/dev",a);var d=ia(!!b,!!c);Kc||(Kc=64);var e=Kc++<<8|0;Ab(e,{open:function(a){a.seekable=!1},close:function(){c&&c.buffer&&c.buffer.length&&c(10)},read:function(a,c,d,e){for(var g=0,k=0;k>2]=d.dev;D[c+4>>2]=0;D[c+8>>2]=d.ino;D[c+12>>2]=d.mode;D[c+16>>2]=d.nlink;D[c+20>>2]=d.uid;D[c+24>>2]=d.gid;D[c+28>>2]=d.rdev;D[c+32>>2]=0;D[c+36>>2]=d.size;D[c+40>>2]=4096;D[c+44>>2]=d.blocks;D[c+48>>2]=d.atime.getTime()/1E3|0;D[c+52>>2]=0;D[c+56>>2]=d.mtime.getTime()/1E3|0;D[c+60>>2]=0;D[c+64>>2]=d.ctime.getTime()/1E3|0;D[c+68>>2]=0;D[c+72>>2]=d.ino;return 0}var V=0; -function W(){V+=4;return D[V-4>>2]}function X(){return F(W())}function Y(){var a=P[W()];if(!a)throw new J(K.Na);return a}function Nc(a,b){V=b;return 0}function Ha(){return l.length} -function Oc(a){try{var b=new ArrayBuffer(a);if(b.byteLength!=a)return!1;(new Int8Array(b)).set(l)}catch(c){return!1}f._emscripten_replace_memory(b);l=new Int8Array(b);Ka=new Int16Array(b);D=new Int32Array(b);E=new Uint8Array(b);new Uint16Array(b);new Uint32Array(b);La=new Float32Array(b);Ma=new Float64Array(b);return buffer=b} -function Ia(a){if(2130706432=b?b=Za(2*b):b=Math.min(Za((3*b+2147483648)/4),2130706432);a=Oc(b);if(!a||a.byteLength!=b)return!1;$a();return!0}function Pc(a){if(0===a)return 0;a=F(a);if(!I.hasOwnProperty(a))return 0;Pc.pa&&fa(Pc.pa);a=I[a];var b=oa(a)+1,c=Wa(b);c&&r(a,l,c,b);Pc.pa=c;return Pc.pa}function Qc(a){return Math.log(a)/Math.LN10}r("GMT",E,60384,4); -function Rc(){function a(a){return(a=a.toTimeString().match(/\(([A-Za-z ]+)\)$/))?a[1]:"GMT"}if(!Rc.pa){Rc.pa=!0;D[Sc()>>2]=60*(new Date).getTimezoneOffset();var b=new Date(2E3,0,1),c=new Date(2E3,6,1);D[Tc()>>2]=Number(b.getTimezoneOffset()!=c.getTimezoneOffset());var d=a(b),e=a(c);d=ca(ba(d));e=ca(ba(e));c.getTimezoneOffset()>2]=d,D[Uc()+4>>2]=e):(D[Uc()>>2]=e,D[Uc()+4>>2]=d)}} -function Vc(a,b){Rc();a=new Date(1E3*D[a>>2]);D[b>>2]=a.getSeconds();D[b+4>>2]=a.getMinutes();D[b+8>>2]=a.getHours();D[b+12>>2]=a.getDate();D[b+16>>2]=a.getMonth();D[b+20>>2]=a.getFullYear()-1900;D[b+24>>2]=a.getDay();var c=new Date(a.getFullYear(),0,1);D[b+28>>2]=(a.getTime()-c.getTime())/864E5|0;D[b+36>>2]=-(60*a.getTimezoneOffset());var d=(new Date(2E3,6,1)).getTimezoneOffset();c=c.getTimezoneOffset();a=(d!=c&&a.getTimezoneOffset()==Math.min(c,d))|0;D[b+32>>2]=a;a=D[Uc()+(a?4:0)>>2];D[b+40>>2]= -a;return b}function Wc(a){a/=1E3;if((ya||x)&&self.performance&&self.performance.now)for(var b=self.performance.now();self.performance.now()-b>4; -e=(e&15)<<4|g>>2;var n=(g&3)<<6|k;b+=String.fromCharCode(d);64!==g&&(b+=String.fromCharCode(e));64!==k&&(b+=String.fromCharCode(n))}while(c>2]=c.position;c.Ja&&0===d&&0===g&&(c.Ja=null);return 0}catch(k){return"undefined"!==typeof U&&k instanceof J||C(k),-k.fa}},v:function(a,b){V=b;try{var c=X(),d=W();ka(c,d);return 0}catch(e){return"undefined"!==typeof U&&e instanceof J||C(e),-e.fa}},w:function(a,b){V=b;try{var c=W(),d=W();if(0===d)return-K.ja;if(dd?-K.ja:p(c.path,c.flags,0,d).fd;case 1:case 2:return 0; -case 3:return c.flags;case 4:return d=W(),c.flags|=d,0;case 12:return d=W(),Ka[d+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-K.ja;case 9:return nb(K.ja),-1;default:return-K.ja}}catch(e){return"undefined"!==typeof U&&e instanceof J||C(e),-e.fa}},I:function(a,b){V=b;try{var c=Y(),d=W(),e=W();return ta(c,l,d,e)}catch(g){return"undefined"!==typeof U&&g instanceof J||C(g),-g.fa}},J:function(a,b){V=b;try{var c=X();var d=W();if(d&-8)var e=-K.ja;else{var g=S(c,{ta:!0}).node;a="";d&4&&(a+="r"); -d&2&&(a+="w");d&1&&(a+="x");e=a&&Rb(g,a)?-K.eb:0}return e}catch(k){return"undefined"!==typeof U&&k instanceof J||C(k),-k.fa}},K:function(a,b){V=b;try{var c=X(),d=W();a=c;a=qb(a);"/"===a[a.length-1]&&(a=a.substr(0,a.length-1));T(a,d);return 0}catch(e){return"undefined"!==typeof U&&e instanceof J||C(e),-e.fa}},L:function(a,b){V=b;try{var c=Y(),d=W(),e=W();return la(c,l,d,e)}catch(g){return"undefined"!==typeof U&&g instanceof J||C(g),-g.fa}},M:function(a,b){V=b;try{var c=X(),d=S(c,{parent:!0}).node, -e=sb(c),g=N(d,e),k=Wb(d,e,!0);if(k)throw new J(k);if(!d.ba.rmdir)throw new J(1);if(g.ua)throw new J(16);try{R.willDeletePath&&R.willDeletePath(c)}catch(n){console.log("FS.trackingDelegate['willDeletePath']('"+c+"') threw an exception: "+n.message)}d.ba.rmdir(d,e);Qb(g);try{if(R.onDeletePath)R.onDeletePath(c)}catch(n){console.log("FS.trackingDelegate['onDeletePath']('"+c+"') threw an exception: "+n.message)}return 0}catch(n){return"undefined"!==typeof U&&n instanceof J||C(n),-n.fa}},N:function(a,b){V= -b;try{var c=X(),d=W(),e=W();return p(c,d,e).fd}catch(g){return"undefined"!==typeof U&&g instanceof J||C(g),-g.fa}},O:function(a,b){V=b;try{var c=Y();ma(c);return 0}catch(d){return"undefined"!==typeof U&&d instanceof J||C(d),-d.fa}},P:function(a,b){V=b;try{var c=X(),d=W();var e=W();if(0>=e)var g=-K.ja;else{var k=Mb(c),n=Math.min(e,oa(k)),v=l[d+n];r(k,E,d,e+1);l[d+n]=v;g=n}return g}catch(A){return"undefined"!==typeof U&&A instanceof J||C(A),-A.fa}},Q:function(a,b){V=b;try{var c=W(),d=W(),e=Lc[c];if(!e)return 0; -if(d===e.yb){var g=P[e.fd],k=e.flags,n=new Uint8Array(E.subarray(c,c+d));g&&g.ea.Da&&g.ea.Da(g,n,0,d,k);Lc[c]=null;e.Ga&&fa(e.zb)}return 0}catch(v){return"undefined"!==typeof U&&v instanceof J||C(v),-v.fa}},R:function(a,b){V=b;try{var c=W(),d=W(),e=P[c];if(!e)throw new J(9);ka(e.node,d);return 0}catch(g){return"undefined"!==typeof U&&g instanceof J||C(g),-g.fa}},S:Ha,T:function(a,b,c){E.set(E.subarray(b,b+c),a)},U:Ia,V:Pc,W:function(a){var b=Date.now();D[a>>2]=b/1E3|0;D[a+4>>2]=b%1E3*1E3|0;return 0}, -X:Qc,Y:function(a){return Qc(a)},Z:function(){C("trap!")},_:function(a){return Vc(a,60336)},$:Vc,aa:function(a,b){var c=D[a>>2];a=D[a+4>>2];0!==b&&(D[b>>2]=0,D[b+4>>2]=0);return Wc(1E6*c+a/1E3)},ab:function(a){switch(a){case 30:return 16384;case 85:return 130048;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809; -case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32; -case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"===typeof navigator?navigator.hardwareConcurrency||1:1}nb(22);return-1}, -ac:function(a){var b=Date.now()/1E3|0;a&&(D[a>>2]=b);return b},ad:Rc,ae:Wc,af:function(a,b){if(b){var c=1E3*D[b+8>>2];c+=D[b+12>>2]/1E3}else c=Date.now();a=F(a);try{b=c;var d=S(a,{ta:!0}).node;d.ba.ia(d,{timestamp:Math.max(b,c)});return 0}catch(e){a=e;if(!(a instanceof J)){a+=" : ";a:{d=Error();if(!d.stack){try{throw Error(0);}catch(g){d=g}if(!d.stack){d="(no stack trace available)";break a}}d=d.stack.toString()}f.extraStackTrace&&(d+="\n"+f.extraStackTrace());d=Ya(d);throw a+d;}nb(a.fa);return-1}}, -ag:function(){C("OOM")},ah:Oc,ai:60480,aj:Ga};// EMSCRIPTEN_START_ASM -var Z=(/** @suppress {uselessCode} */ function(global,env,buffer) { -"almost asm";var a=new global.Int8Array(buffer),b=new global.Int16Array(buffer),c=new global.Int32Array(buffer),d=new global.Uint8Array(buffer),e=new global.Uint16Array(buffer),f=new global.Float32Array(buffer),g=new global.Float64Array(buffer),h=env.ai|0,i=env.aj|0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=global.Infinity,s=global.Math.floor,t=global.Math.abs,u=global.Math.sqrt,v=global.Math.pow,w=global.Math.cos,x=global.Math.sin,y=global.Math.tan,z=global.Math.acos,A=global.Math.asin,B=global.Math.atan,C=global.Math.atan2,D=global.Math.exp,E=global.Math.log,F=global.Math.ceil,G=global.Math.imul,H=global.Math.min,I=global.Math.clz32,J=env.a,K=env.b,L=env.c,M=env.d,N=env.e,O=env.f,P=env.g,Q=env.h,R=env.i,S=env.j,T=env.k,U=env.l,V=env.m,W=env.n,X=env.o,Y=env.p,Z=env.q,_=env.r,$=env.s,aa=env.t,ba=env.u,ca=env.v,da=env.w,ea=env.x,fa=env.y,ga=env.z,ha=env.A,ia=env.B,ja=env.C,ka=env.D,la=env.E,ma=env.F,na=env.G,oa=env.H,pa=env.I,qa=env.J,ra=env.K,sa=env.L,ta=env.M,ua=env.N,va=env.O,wa=env.P,xa=env.Q,ya=env.R,za=env.S,Aa=env.T,Ba=env.U,Ca=env.V,Da=env.W,Ea=env.X,Fa=env.Y,Ga=env.Z,Ha=env._,Ia=env.$,Ja=env.aa,Ka=env.ab,La=env.ac,Ma=env.ad,Na=env.ae,Oa=env.af,Pa=env.ag,Qa=env.ah,Ra=60496,Sa=5303376,Ta=0.0;function Ua(newBuffer){a=new Int8Array(newBuffer);d=new Uint8Array(newBuffer);b=new Int16Array(newBuffer);e=new Uint16Array(newBuffer);c=new Int32Array(newBuffer);f=new Float32Array(newBuffer);g=new Float64Array(newBuffer);buffer=newBuffer;return true} -// EMSCRIPTEN_START_FUNCS -function Rg(f){f=f|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.0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=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,_=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,Sa=0,Ta=0,Ua=0,Va=0,$a=0,db=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,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Eb=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,_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,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,ad=0,bd=0,cd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=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,Od=0,Pd=0,Qd=0,Rd=0,Td=0,Ud=0,Vd=0,Wd=0,Yd=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,Qe=0,Re=0,Se=0,Te=0,Ue=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,xf=0,yf=0,zf=0,Af=0,Bf=0,Cf=0,Ef=0,Ff=0,Gf=0,Hf=0;Hf=Ra;Ra=Ra+864|0;nf=Hf+848|0;yf=Hf+840|0;Be=Hf+832|0;Gf=Hf+816|0;Ff=Hf+800|0;Ef=Hf+792|0;ze=Hf+784|0;ye=Hf+776|0;xe=Hf+768|0;we=Hf+760|0;ve=Hf+752|0;ue=Hf+736|0;te=Hf+728|0;bf=Hf+720|0;Ye=Hf+712|0;Xe=Hf+704|0;We=Hf+696|0;Ue=Hf+688|0;Te=Hf+664|0;Se=Hf+656|0;Re=Hf+648|0;Qe=Hf+640|0;Oe=Hf+624|0;Ne=Hf+608|0;Me=Hf+592|0;Le=Hf+576|0;Ke=Hf+560|0;Je=Hf+544|0;ef=Hf+536|0;df=Hf+528|0;cf=Hf+520|0;Ie=Hf+512|0;He=Hf+504|0;Ge=Hf+496|0;Fe=Hf+488|0;Ee=Hf+472|0;De=Hf+456|0;Ce=Hf+440|0;Ae=Hf+432|0;lf=Hf+416|0;gf=Hf+408|0;kf=Hf+400|0;ff=Hf+392|0;rf=Hf+352|0;Hd=Hf+112|0;Td=Hf+280|0;Yd=Hf;ee=Hf+272|0;je=Hf+852|0;le=f+104|0;q=c[le>>2]|0;Cf=c[f>>2]|0;sd=a[Cf+78>>0]|0;xd=f+88|0;o=c[xd>>2]|0;i=c[f+156>>2]|0;if(i|0?(k=c[Cf+16>>2]|0,l=c[Cf+20>>2]|0,(l|0)>0):0){h=0;do{if(((h|0)!=1?1<>2]|0,m|0):0)c[(c[m+4>>2]|0)+4>>2]=c[m>>2];h=h+1|0}while((h|0)!=(l|0))}Af=Cf+320|0;if(!(c[Af>>2]|0))h=-1;else{h=c[Cf+328>>2]|0;h=h-(((c[f+176>>2]|0)>>>0)%(h>>>0)|0)|0}Bf=f+40|0;a:do if((c[Bf>>2]|0)==7){l=q;n=0;k=0;m=q;j=h;i=Cf+81|0;oa=3892}else{Zc=f+56|0;c[Zc>>2]=0;c[Zc+4>>2]=0;Zc=f+120|0;c[Zc>>2]=0;c[Cf+404>>2]=0;lc=Cf+264|0;b:do if(!(c[lc>>2]|0)){xf=f+36|0;mc=f+100|0;qf=Cf+88|0;nc=f+196|0;oc=f+96|0;pc=f+147|0;uf=Cf+16|0;vf=f+149|0;qc=rf+8|0;rc=f+44|0;sc=Cf+100|0;tc=Cf+104|0;uc=f+168|0;vc=Hd+8|0;wc=Hd+10|0;xc=Hd+4|0;zc=Hd+8|0;Ac=Hd+10|0;Bc=Hd+4|0;Cc=Cf+90|0;Dc=Td+4|0;Ec=Td+12|0;Fc=Td+16|0;Gc=Td+20|0;Hc=Td+24|0;Ic=Td+28|0;Jc=Td+8|0;Kc=Td+64|0;Lc=Td+40|0;Mc=Td+44|0;Nc=Td+48|0;Oc=Td+52|0;Pc=Td+56|0;Qc=Td+60|0;Rc=Td+61|0;Sc=Cf+32|0;$c=Cf+272|0;Tc=rf+8|0;Uc=rf+4|0;mf=f+124|0;Vc=Cf+332|0;Wc=rf+32|0;sa=rf+8|0;ad=Cf+184|0;ta=f+92|0;zf=Cf+81|0;ua=f+32|0;bd=Cf+176|0;qd=Cf+444|0;va=f+24|0;wa=Yd+8|0;xa=Yd+10|0;ya=Yd+4|0;za=Yd+14|0;Aa=Hd+8|0;Ba=Hd+4|0;Ca=Cf+232|0;Da=Cf+108|0;Ea=rf+8|0;Fa=rf+32|0;Ga=rf+24|0;Ha=Cf+172|0;hf=Cf+24|0;Ia=rf+8|0;Ja=rf+4|0;Ka=rf+16|0;Ze=Cf+480|0;La=f+204|0;Ma=Cf+148|0;Na=Cf+472|0;Oa=f+64|0;Pa=Cf+464|0;Xc=Cf+276|0;Qa=rf+12|0;Sa=Hd+8|0;Ta=Hd+32|0;Ua=rf+8|0;Va=rf+4|0;$a=Cf+4|0;db=Cf+356|0;fb=Cf+328|0;gb=Cf+324|0;hb=sd<<24>>24==1;ib=f+184|0;_e=Cf+304|0;$e=Cf+308|0;af=Cf+300|0;jb=Hd+8|0;kb=Hd+32|0;lb=Hd+24|0;mb=rf+16|0;nb=rf+12|0;ob=Cf+165|0;pb=rf+12|0;qb=rf+20|0;Yc=Cf+288|0;rb=rf+20|0;tb=rf+8|0;ub=rf+4|0;vb=rf+20|0;wb=f+108|0;hd=f+188|0;Fd=Cf+456|0;Gd=Cf+452|0;xb=rf+16|0;yb=rf+28|0;zb=Cf+40|0;Ab=Hd+8|0;Bb=Hd+20|0;Cb=Hd+24|0;Eb=Hd+16|0;Gb=Hd+12|0;Hb=f+216|0;Ib=f+28|0;cd=Cf+296|0;ed=Cf+284|0;Jb=rf+10|0;Kb=rf+20|0;Lb=Cf+180|0;of=Cf+196|0;pf=Cf+200|0;Mb=rf+8|0;Nb=rf+8|0;fd=Cf+292|0;Ob=rf+16|0;Pb=Cf+348|0;Qb=rf+24|0;Rb=Cf+86|0;gd=Cf+79|0;Sb=rf+32|0;Tb=Cf+228|0;Ub=rf+8|0;Vb=Cf+344|0;Wb=Cf+340|0;Xb=rf+12|0;Yb=Hd+16|0;_b=Hd+8|0;ac=Hd+12|0;bc=f+48|0;ra=Cf+80|0;cc=rf+8|0;dc=Cf+336|0;ec=rf+20|0;Id=Cf+87|0;fc=Hd+24|0;sf=Cf+20|0;jf=Cf+56|0;gc=f+72|0;hc=f+80|0;ic=rf+8|0;Jd=f+146|0;jc=Cf+8|0;kc=rf+4|0;m=q;p=q+((c[xf>>2]|0)*20|0)|0;K=0;k=0;qa=0;n=0;pa=o;c:while(1){n=n+1|0;z=a[p>>0]|0;d:do switch(z<<24>>24){case 81:{oa=153;break c}case 1:{oa=922;break c}case 11:{i=K;oa=20;break}case 12:{i=c[p+4>>2]|0;b[pa+(i*40|0)+8>>1]=4;oa=(p-m|0)/20|0;i=pa+(i*40|0)|0;c[i>>2]=oa;c[i+4>>2]=((oa|0)<0)<<31>>31;i=K;oa=28;break}case 66:{l=c[p+4>>2]|0;p=m+((c[pa+(l*40|0)>>2]|0)*20|0)|0;b[pa+(l*40|0)+8>>1]=128;l=m;q=pa;o=qa;i=K;break}case 13:{na=c[p+4>>2]|0;la=(c[p+12>>2]|0)+-1|0;ma=pa+(na*40|0)|0;c[ma>>2]=la;c[ma+4>>2]=((la|0)<0)<<31>>31;b[pa+(na*40|0)+8>>1]=4;if(!(c[p+8>>2]|0)){l=m;q=pa;o=qa;i=K}else{i=K;oa=28}break}case 67:{l=c[p+4>>2]|0;p=m+(((c[m+((c[pa+(l*40|0)>>2]|0)*20|0)+8>>2]|0)+-1|0)*20|0)|0;b[pa+(l*40|0)+8>>1]=128;l=m;q=pa;o=qa;i=K;break}case 14:{l=c[p+4>>2]|0;b[pa+(l*40|0)+8>>1]=4;l=pa+(l*40|0)|0;i=c[l>>2]|0;q=(p-m|0)/20|0;c[l>>2]=q;c[l+4>>2]=((q|0)<0)<<31>>31;l=m;q=pa;o=qa;p=m+(i*20|0)|0;i=K;break}case 68:{if(!(b[pa+((c[p+12>>2]|0)*40|0)+8>>1]&1)){l=m;q=pa;o=qa;i=K}else oa=34;break}case 69:{oa=34;break}case 70:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;q=c[p+4>>2]|0;l=i;c[l>>2]=q;c[l+4>>2]=((q|0)<0)<<31>>31;l=m;q=pa;o=qa;i=K;break}case 71:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;o=c[p+16>>2]|0;q=c[o+4>>2]|0;l=i;c[l>>2]=c[o>>2];c[l+4>>2]=q;l=m;q=pa;o=qa;i=K;break}case -111:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;b[i+8>>1]=8;g[i>>3]=+g[c[p+16>>2]>>3];l=m;q=pa;o=qa;i=K;break}case 110:{oa=c[xd>>2]|0;s=p+8|0;l=c[s>>2]|0;i=oa+(l*40|0)|0;l=oa+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;a[p>>0]=72;q=p+16|0;o=c[q>>2]|0;if(!o)l=0;else l=(Eu(o)|0)&1073741823;r=p+4|0;c[r>>2]=l;if(hb)i=K;else{if(yc(i,o,-1,1,0)|0){oa=3891;break c}o=i+8|0;l=b[o>>1]|0;if((l&2)!=0?(a[i+10>>0]|0)!=sd<<24>>24:0){if(Ig(i,sd)|0){l=p;j=h;i=zf;oa=3892;break a}l=b[o>>1]|0}c[i+24>>2]=0;b[o>>1]=l|2048;l=p+1|0;e:do if((a[l>>0]|0)==-7?(ae=c[q>>2]|0,ae|0):0){if(c[Ze>>2]|0){Xd(Cf,ae);break}o=ae;do if((c[_e>>2]|0)>>>0<=o>>>0){if((c[$e>>2]|0)>>>0<=o>>>0)break;c[ae>>2]=c[af>>2];c[af>>2]=ae;break e}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](ae);break}else{oa=Wa[c[29352>>2]&127](ae)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](ae);break}}while(0);a[l>>0]=-7;c[q>>2]=c[i+16>>2];l=c[i+12>>2]|0;c[r>>2]=l;i=0}if((l|0)>(c[Da>>2]|0)){oa=3891;break c}else{l=s;oa=83}break}case 72:{l=p+8|0;i=K;oa=83;break}case 73:{o=c[xd>>2]|0;q=p+8|0;i=c[q>>2]|0;l=o+(i*40|0)|0;o=o+(i*40|0)+8|0;if(!(b[o>>1]&9216))b[o>>1]=4;else{lh(l)|0;i=c[q>>2]|0}i=(c[p+12>>2]|0)-i|0;r=(c[p+4>>2]|0)==0?1:257;b[l+8>>1]=r;c[l+12>>2]=0;if((i|0)>0)while(1){o=l;l=l+40|0;q=o+48|0;if(!(b[q>>1]&9216))b[q>>1]=1;else Dg(l);b[q>>1]=r;c[o+52>>2]=0;if((i|0)<=1){l=m;q=pa;o=qa;i=K;break}else i=i+-1|0}else{l=m;q=pa;o=qa;i=K}break}case 74:{l=pa+((c[p+4>>2]|0)*40|0)+8|0;b[l>>1]=b[l>>1]&-160|1;l=m;q=pa;o=qa;i=K;break}case 75:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;yc(i,c[p+16>>2]|0,c[p+4>>2]|0,0,0)|0;a[i+10>>0]=sd;l=m;q=pa;o=qa;i=K;break}case 76:{o=c[mc>>2]|0;q=(c[p+4>>2]|0)+-1|0;r=o+(q*40|0)|0;l=e[o+(q*40|0)+8>>1]|0;if(l&18|0){i=c[o+(q*40|0)+12>>2]|0;if(l&16384)i=(c[r>>2]|0)+i|0;if((i|0)>(c[(c[o+(q*40|0)+32>>2]|0)+108>>2]|0)){oa=3891;break c}}l=c[p+8>>2]|0;i=pa+(l*40|0)|0;l=pa+(l*40|0)+8|0;if(b[l>>1]&9216)Dg(i);c[i>>2]=c[r>>2];c[i+4>>2]=c[r+4>>2];c[i+8>>2]=c[r+8>>2];c[i+12>>2]=c[r+12>>2];c[i+16>>2]=c[r+16>>2];b[l>>1]=b[l>>1]&-7201|2080;l=m;q=pa;o=qa;i=K;break}case 77:{q=pa+((c[p+4>>2]|0)*40|0)|0;r=c[p+12>>2]|0;s=pa+((c[p+8>>2]|0)*40|0)|0;while(1){t=s+8|0;if(!((b[t>>1]&9216)==0?!(c[s+24>>2]|0):0))Cg(s);ea=s;l=q;fa=ea+40|0;do{c[ea>>2]=c[l>>2];ea=ea+4|0;l=l+4|0}while((ea|0)<(fa|0));b[q+8>>1]=1;c[q+24>>2]=0;i=b[t>>1]|0;if(i&4096){l=i&65535;do if(l&18){do if(l&16384){o=s+12|0;l=(c[s>>2]|0)+(c[o>>2]|0)|0;if((l|0)<1)if(!(i&16))break;else i=1;else i=l;if(Eg(s,i,1)|0){l=p;j=h;i=zf;oa=3892;break a}gw((c[s+16>>2]|0)+(c[o>>2]|0)|0,0,c[s>>2]|0)|0;c[o>>2]=(c[o>>2]|0)+(c[s>>2]|0);i=b[t>>1]&-16897;b[t>>1]=i}while(0);if(c[s+24>>2]|0?(c[s+16>>2]|0)==(c[s+20>>2]|0):0)break;if(Jg(s)|0){l=p;j=h;i=zf;oa=3892;break a}i=b[t>>1]|0}while(0);b[t>>1]=i&-4097}r=r+-1|0;if(!r){l=m;q=pa;o=qa;i=K;break}else{q=q+40|0;s=s+40|0}}break}case 78:{q=c[p+12>>2]|0;r=pa+((c[p+4>>2]|0)*40|0)|0;s=pa+((c[p+8>>2]|0)*40|0)|0;while(1){t=s+8|0;if(!(b[t>>1]&9216)){c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];c[s+16>>2]=c[r+16>>2];if(!(b[r+8>>1]&2048))b[t>>1]=b[t>>1]&-7169|4096}else mh(s,r,4096);i=b[t>>1]|0;if(i&4096){l=i&65535;do if(l&18){do if(l&16384){o=s+12|0;l=(c[s>>2]|0)+(c[o>>2]|0)|0;if((l|0)<1)if(!(i&16))break;else i=1;else i=l;if(Eg(s,i,1)|0){l=p;j=h;i=zf;oa=3892;break a}gw((c[s+16>>2]|0)+(c[o>>2]|0)|0,0,c[s>>2]|0)|0;c[o>>2]=(c[o>>2]|0)+(c[s>>2]|0);i=b[t>>1]&-16897;b[t>>1]=i}while(0);if(c[s+24>>2]|0?(c[s+16>>2]|0)==(c[s+20>>2]|0):0)break;if(Jg(s)|0){l=p;j=h;i=zf;oa=3892;break a}i=b[t>>1]|0}while(0);b[t>>1]=i&-4097}if(!q){l=m;q=pa;o=qa;i=K;break d}q=q+-1|0;r=r+40|0;s=s+40|0}}case 79:{i=c[p+4>>2]|0;l=pa+(i*40|0)|0;q=c[p+8>>2]|0;o=pa+(q*40|0)|0;q=pa+(q*40|0)+8|0;if(b[q>>1]&9216){mh(o,l,4096);l=m;q=pa;o=qa;i=K;break d};c[o>>2]=c[l>>2];c[o+4>>2]=c[l+4>>2];c[o+8>>2]=c[l+8>>2];c[o+12>>2]=c[l+12>>2];c[o+16>>2]=c[l+16>>2];if(!(b[pa+(i*40|0)+8>>1]&2048)){b[q>>1]=b[q>>1]&-7169|4096;l=m;q=pa;o=qa;i=K}else{l=m;q=pa;o=qa;i=K}break}case 80:{q=c[p+8>>2]|0;i=pa+(q*40|0)|0;o=pa+((c[p+4>>2]|0)*40|0)|0;l=c[o>>2]|0;o=c[o+4>>2]|0;q=pa+(q*40|0)+8|0;if(!(b[q>>1]&9216)){c[i>>2]=l;c[i+4>>2]=o;b[q>>1]=4;l=m;q=pa;o=qa;i=K;break d}else{Pg(i,l,o);l=m;q=pa;o=qa;i=K;break d}}case 105:{z=c[p+4>>2]|0;s=pa+(z*40|0)|0;x=c[p+8>>2]|0;w=pa+(x*40|0)|0;A=c[p+12>>2]|0;y=pa+(A*40|0)|0;r=pa+(z*40|0)+8|0;l=b[r>>1]|0;t=pa+(x*40|0)+8|0;i=b[t>>1]|0;if((i|l)&1){i=pa+(A*40|0)+8|0;if(!(b[i>>1]&9216)){b[i>>1]=1;l=m;q=pa;o=qa;i=K;break d}else{Dg(y);l=m;q=pa;o=qa;i=K;break d}}do if(l&16384){q=pa+(z*40|0)+12|0;o=(c[s>>2]|0)+(c[q>>2]|0)|0;if((o|0)<1)if(!(l&16))break;else i=1;else i=o;if(Eg(s,i,1)|0){l=p;j=h;i=zf;oa=3892;break a}gw((c[pa+(z*40|0)+16>>2]|0)+(c[q>>2]|0)|0,0,c[s>>2]|0)|0;c[q>>2]=(c[q>>2]|0)+(c[s>>2]|0);l=b[r>>1]&-16897;b[r>>1]=l;i=b[t>>1]|0}while(0);do if(i&16384){q=pa+(x*40|0)+12|0;o=(c[w>>2]|0)+(c[q>>2]|0)|0;if((o|0)<1)if(!(i&16))break;else i=1;else i=o;if(Eg(w,i,1)|0){l=p;j=h;i=zf;oa=3892;break a}gw((c[pa+(x*40|0)+16>>2]|0)+(c[q>>2]|0)|0,0,c[w>>2]|0)|0;c[q>>2]=(c[q>>2]|0)+(c[w>>2]|0);i=b[t>>1]&-16897;b[t>>1]=i;l=b[r>>1]|0}while(0);if(!(l&18)){if(Hg(s,sd,0)|0){l=p;j=h;i=zf;oa=3892;break a}i=b[t>>1]|0}if((i&18)==0?Hg(w,sd,0)|0:0){l=p;j=h;i=zf;oa=3892;break a}q=pa+(z*40|0)+12|0;r=pa+(x*40|0)+12|0;s=(c[r>>2]|0)+(c[q>>2]|0)|0;if((s|0)>(c[Da>>2]|0)){oa=3891;break c}l=(A|0)==(x|0);if(Eg(y,s+2|0,l&1)|0){l=p;j=h;i=zf;oa=3892;break a}o=pa+(A*40|0)+8|0;b[o>>1]=b[o>>1]&15904|2;i=pa+(x*40|0)+16|0;if(!l){na=pa+(A*40|0)+16|0;ew(c[na>>2]|0,c[i>>2]|0,c[r>>2]|0)|0;i=na}ew((c[i>>2]|0)+(c[r>>2]|0)|0,c[pa+(z*40|0)+16>>2]|0,c[q>>2]|0)|0;a[(c[i>>2]|0)+s>>0]=0;a[(c[i>>2]|0)+(s+1)>>0]=0;b[o>>1]=b[o>>1]|512;c[pa+(A*40|0)+12>>2]=s;a[pa+(A*40|0)+10>>0]=sd;l=m;q=pa;o=qa;i=K;break}case 104:case 103:case 102:case 101:case 100:{s=c[p+4>>2]|0;t=pa+(s*40|0)|0;r=pa+(s*40|0)+8|0;i=e[r>>1]|0;l=i&12;if(!l)if(!(i&18))B=0;else B=nh(t)|0;else B=l&65535;x=c[p+8>>2]|0;y=pa+(x*40|0)|0;w=pa+(x*40|0)+8|0;i=e[w>>1]|0;l=i&12;if(!l)if(!(i&18))A=0;else A=nh(y)|0;else A=l&65535;C=c[p+12>>2]|0;D=pa+(C*40|0)|0;f:do if(!((B&4&A)<<16>>16)){if(!((b[w>>1]|b[r>>1])&1)){z=0;oa=245}}else{i=t;o=c[i>>2]|0;i=c[i+4>>2]|0;q=y;l=c[q>>2]|0;q=c[q+4>>2]|0;g:do switch(a[p>>0]|0){case 100:{if((i|0)>-1|(i|0)==-1&o>>>0>4294967295){na=Tv(-1,2147483647,l|0,q|0)|0;ma=L()|0;if(((q|0)>0|(q|0)==0&l>>>0>0)&((ma|0)<(i|0)|(ma|0)==(i|0)&na>>>0>>0)){z=1;oa=245;break f}}else if((q|0)<0?(ma=Tv(1,-2147483648,l|0,q|0)|0,ka=L()|0,na=Sv(o|0,i|0,1,0)|0,la=L()|0,(ka|0)>(la|0)|(ka|0)==(la|0)&ma>>>0>na>>>0):0){z=1;oa=245;break f}l=Sv(l|0,q|0,o|0,i|0)|0;i=L()|0;break}case 101:{if((o|0)==0&(i|0)==-2147483648)if((q|0)>-1|(q|0)==-1&l>>>0>4294967295){z=1;oa=245;break f}else{i=q^-2147483648;break g}if((i|0)<0|(i|0)==0&o>>>0<1){na=Tv(0,0,o|0,i|0)|0;la=L()|0;ma=Tv(-1,2147483647,l|0,q|0)|0;ka=L()|0;if(((q|0)>0|(q|0)==0&l>>>0>0)&((ka|0)<(la|0)|(ka|0)==(la|0)&ma>>>0>>0)){z=1;oa=245;break f}}else if((q|0)<0?(ma=Tv(1,-2147483648,l|0,q|0)|0,ka=L()|0,na=Tv(1,0,o|0,i|0)|0,la=L()|0,(ka|0)>(la|0)|(ka|0)==(la|0)&ma>>>0>na>>>0):0){z=1;oa=245;break f}l=Tv(l|0,q|0,o|0,i|0)|0;i=L()|0;break}case 102:{do if((i|0)>0|(i|0)==0&o>>>0>0){na=_v(-1,2147483647,o|0,i|0)|0;ma=L()|0;if((q|0)>(ma|0)|(q|0)==(ma|0)&l>>>0>na>>>0){z=1;oa=245;break f}na=Wv(0,-2147483648,o|0,i|0)|0;ma=L()|0;if((q|0)<(ma|0)|(q|0)==(ma|0)&l>>>0>>0){z=1;oa=245;break f}}else if((i|0)<0){if((q|0)>0|(q|0)==0&l>>>0>0){na=Wv(0,-2147483648,l|0,q|0)|0;ma=L()|0;if((ma|0)>(i|0)|(ma|0)==(i|0)&na>>>0>o>>>0){z=1;oa=245;break f}else break}if((q|0)<0){if((o|0)==0&(i|0)==-2147483648|(l|0)==0&(q|0)==-2147483648){z=1;oa=245;break f}na=Tv(0,0,l|0,q|0)|0;la=L()|0;ma=Tv(0,0,o|0,i|0)|0;ma=Wv(-1,2147483647,ma|0,L()|0)|0;ka=L()|0;if((ka|0)<(la|0)|(ka|0)==(la|0)&ma>>>0>>0){z=1;oa=245;break f}}}while(0);l=Yv(l|0,q|0,o|0,i|0)|0;i=L()|0;break}case 103:{if((o|0)==0&(i|0)==0)break f;if((o|0)==-1&(i|0)==-1&((l|0)==0&(q|0)==-2147483648)){z=1;oa=245;break f}l=Wv(l|0,q|0,o|0,i|0)|0;i=L()|0;break}default:{switch(o|0){case 0:{if(!i)break f;break}case -1:{if((i|0)==-1){o=1;i=0}break}default:{}}l=Zv(l|0,q|0,o|0,i|0)|0;i=L()|0}}while(0);q=D;c[q>>2]=l;c[q+4>>2]=i;l=pa+(C*40|0)+8|0;b[l>>1]=b[l>>1]&15904|4;l=m;q=pa;o=qa;i=K;break d}while(0);h:do if((oa|0)==245){oa=0;i=e[r>>1]|0;do if(!(i&8)){if(i&4|0){na=t;v=+((c[na>>2]|0)>>>0)+4294967296.0*+(c[na+4>>2]|0);break}if(!(i&18))v=0.0;else v=+Kg(a[pa+(s*40|0)+10>>0]|0,c[pa+(s*40|0)+12>>2]|0,c[pa+(s*40|0)+16>>2]|0)}else v=+g[t>>3];while(0);i=e[w>>1]|0;do if(!(i&8)){if(i&4|0){na=y;u=+((c[na>>2]|0)>>>0)+4294967296.0*+(c[na+4>>2]|0);break}if(!(i&18))u=0.0;else u=+Kg(a[pa+(x*40|0)+10>>0]|0,c[pa+(x*40|0)+12>>2]|0,c[pa+(x*40|0)+16>>2]|0)}else u=+g[y>>3];while(0);switch(a[p>>0]|0){case 100:{u=v+u;break}case 101:{u=u-v;break}case 102:{u=v*u;break}case 103:{if(v==0.0)break h;u=u/v;break}default:{i=e[r>>1]|0;do if(!(i&4)){if(i&8|0){r=Mg(+g[t>>3])|0;i=L()|0;break}if(!(i&18)){r=0;i=0}else{r=Ng(a[pa+(s*40|0)+10>>0]|0,c[pa+(s*40|0)+12>>2]|0,c[pa+(s*40|0)+16>>2]|0)|0;i=L()|0}}else{i=t;r=c[i>>2]|0;i=c[i+4>>2]|0}while(0);l=e[w>>1]|0;do if(!(l&4)){if(l&8|0){o=Mg(+g[y>>3])|0;q=L()|0;break}if(!(l&18)){o=0;q=0}else{o=Ng(a[pa+(x*40|0)+10>>0]|0,c[pa+(x*40|0)+12>>2]|0,c[pa+(x*40|0)+16>>2]|0)|0;q=L()|0}}else{q=y;o=c[q>>2]|0;q=c[q+4>>2]|0}while(0);switch(r|0){case 0:{if(!i)break h;else l=r;break}case -1:{if((i|0)==-1){l=1;i=0}else l=r;break}default:l=r}u=+((Zv(o|0,q|0,l|0,i|0)|0)>>>0)+4294967296.0*+(L()|0)}}g[rf>>3]=u;g[Hd>>3]=+g[rf>>3];if(+g[rf>>3]==+g[Hd>>3]){g[D>>3]=u;o=pa+(C*40|0)+8|0;q=b[o>>1]&15904;b[o>>1]=q|8;if(((A|B)&8)!=0|z<<24>>24!=0){l=m;q=pa;o=qa;i=K;break d}i=Mg(u)|0;l=L()|0;na=Sv(i|0,l|0,1,-2147483648)|0;ma=L()|0;if(!((ma>>>0>0|(ma|0)==0&na>>>0>1)&u==+(i>>>0)+4294967296.0*+(l|0))){l=m;q=pa;o=qa;i=K;break d}na=D;c[na>>2]=i;c[na+4>>2]=l;b[o>>1]=q|4;l=m;q=pa;o=qa;i=K;break d}}while(0);i=pa+(C*40|0)+8|0;if(!(b[i>>1]&9216)){b[i>>1]=1;l=m;q=pa;o=qa;i=K;break d}else{Dg(D);l=m;q=pa;o=qa;i=K;break d}}case 82:{i=c[p+4>>2]|0;if(i){l=pa+(i*40|0)|0;i=pa+(i*40|0)+8|0;if(!(b[i>>1]&9216)){c[l>>2]=0;c[l+4>>2]=0;b[i>>1]=4;l=m;q=pa;o=qa;i=K;break d}else{Pg(l,0,0);l=m;q=pa;o=qa;i=K;break d}}else{l=m;q=pa;o=qa;i=K}break}case 99:case 98:case 97:case 96:{s=c[p+4>>2]|0;l=c[p+8>>2]|0;w=c[p+12>>2]|0;x=pa+(w*40|0)|0;q=pa+(s*40|0)+8|0;o=b[q>>1]|0;i=b[pa+(l*40|0)+8>>1]|0;if((i|o)&1){i=pa+(w*40|0)+8|0;if(!(b[i>>1]&9216)){b[i>>1]=1;l=m;q=pa;o=qa;i=K;break d}else{Dg(x);l=m;q=pa;o=qa;i=K;break d}}r=pa+(l*40|0)|0;t=pa+(s*40|0)|0;i=i&65535;do if(!(i&4)){if(i&8|0){l=Mg(+g[r>>3])|0;i=L()|0;break}if(!(i&18)){l=0;i=0}else{l=Ng(a[pa+(l*40|0)+10>>0]|0,c[pa+(l*40|0)+12>>2]|0,c[pa+(l*40|0)+16>>2]|0)|0;i=L()|0;o=b[q>>1]|0}}else{i=r;l=c[i>>2]|0;i=c[i+4>>2]|0}while(0);o=o&65535;do if(!(o&4)){if(o&8|0){q=Mg(+g[t>>3])|0;s=L()|0;break}if(!(o&18)){q=0;s=0}else{q=Ng(a[pa+(s*40|0)+10>>0]|0,c[pa+(s*40|0)+12>>2]|0,c[pa+(s*40|0)+16>>2]|0)|0;s=L()|0}}else{s=t;q=c[s>>2]|0;s=c[s+4>>2]|0}while(0);o=a[p>>0]|0;i:do switch(o<<24>>24){case 96:{l=q&l;i=s&i;break}case 97:{l=q|l;i=s|i;break}default:if(!((q|0)==0&(s|0)==0)){la=(s|0)<0;ma=(s|0)>-1|(s|0)==-1&q>>>0>4294967232;ka=Tv(0,0,q|0,s|0)|0;na=L()|0;r=la?197-(o&255)&255:o;q=la?(ma?ka:64):q;o=la?(ma?na:0):s;if((o|0)>0|(o|0)==0&q>>>0>63){i=((i|0)<0&r<<24>>24!=98)<<31>>31;l=i;i=((i|0)<0)<<31>>31;break i}if(r<<24>>24==98){l=cw(l|0,i|0,q|0)|0;i=L()|0;break i}else{l=bw(l|0,i|0,q|0)|0;na=L()|0;ma=(i|0)<0;la=Tv(64,0,q|0,o|0)|0;L()|0;la=cw(-1,-1,la|0)|0;i=L()|0;l=(ma?la:0)|l;i=(ma?i:0)|na;break i}}}while(0);q=x;c[q>>2]=l;c[q+4>>2]=i;l=pa+(w*40|0)+8|0;b[l>>1]=b[l>>1]&15904|4;l=m;q=pa;o=qa;i=K;break}case 83:{i=c[p+4>>2]|0;r=pa+(i*40|0)|0;s=pa+(i*40|0)+8|0;q=b[s>>1]|0;l=q&65535;do if(!(l&4)){if(l&8|0){l=Mg(+g[r>>3])|0;o=L()|0;i=q;break}if(!(l&18)){l=0;o=0;i=q}else{l=Ng(a[pa+(i*40|0)+10>>0]|0,c[pa+(i*40|0)+12>>2]|0,c[pa+(i*40|0)+16>>2]|0)|0;o=L()|0;i=b[s>>1]|0}}else{o=r;l=c[o>>2]|0;o=c[o+4>>2]|0;i=q}while(0);q=r;c[q>>2]=l;c[q+4>>2]=o;b[s>>1]=i&15904|4;q=c[p+8>>2]|0;o=Sv(l|0,o|0,q|0,((q|0)<0)<<31>>31|0)|0;q=L()|0;l=r;c[l>>2]=o;c[l+4>>2]=q;l=m;q=pa;o=qa;i=K;break}case 15:{q=c[p+4>>2]|0;s=pa+(q*40|0)+8|0;i=b[s>>1]|0;if(!(i&4)){r=pa+(q*40|0)|0;l=i&65535;do if(!(l&4)){if(l&8|0){v=+g[r>>3];l=Mg(v)|0;o=L()|0;na=Sv(l|0,o|0,1,-2147483648)|0;ma=L()|0;q=i&15904|4;if(!((ma>>>0>0|(ma|0)==0&na>>>0>1)&v==+(l>>>0)+4294967296.0*+(o|0)))break;i=r;c[i>>2]=l;c[i+4>>2]=o;b[s>>1]=q;i=q;break}if(l&2){l=a[pa+(q*40|0)+10>>0]|0;o=pa+(q*40|0)+16|0;i=pa+(q*40|0)+12|0;if(!(Lg(c[o>>2]|0,rf,c[i>>2]|0,l)|0))i=b[s>>1]|0;else{if(Og(c[o>>2]|0,Hd,c[i>>2]|0,l)|0){v=+g[rf>>3];g[r>>3]=v;l=b[s>>1]|0;i=l|8;b[s>>1]=i;o=Mg(v)|0;q=L()|0;na=Sv(o|0,q|0,1,-2147483648)|0;ma=L()|0;if((ma>>>0>0|(ma|0)==0&na>>>0>1)&v==+(o>>>0)+4294967296.0*+(q|0)){i=r;c[i>>2]=o;c[i+4>>2]=q;i=l&15904;oa=334}}else{na=Hd;oa=c[na+4>>2]|0;i=r;c[i>>2]=c[na>>2];c[i+4>>2]=oa;i=b[s>>1]|0;oa=334}if((oa|0)==334){oa=0;i=i|4;b[s>>1]=i}i=i&-3;b[s>>1]=i}}}while(0);if(!(i&4))if(!(c[p+8>>2]|0)){i=20;oa=3855;break c}else{i=K;oa=28;break d}}b[s>>1]=i&15904|4;l=m;q=pa;o=qa;i=K;break}case 84:{l=c[p+4>>2]|0;q=pa+(l*40|0)+8|0;i=b[q>>1]|0;if(!(i&4)){l=m;q=pa;o=qa;i=K}else{r=pa+(l*40|0)|0;o=i&65535;do if(!(o&8)){if(o&4|0){na=r;u=+((c[na>>2]|0)>>>0)+4294967296.0*+(c[na+4>>2]|0);break}if(!(o&18))u=0.0;else{u=+Kg(a[pa+(l*40|0)+10>>0]|0,c[pa+(l*40|0)+12>>2]|0,c[pa+(l*40|0)+16>>2]|0);i=b[q>>1]|0}}else u=+g[r>>3];while(0);g[r>>3]=u;b[q>>1]=i&15904|8;l=m;q=pa;o=qa;i=K}break}case 85:{o=c[p+4>>2]|0;s=pa+(o*40|0)|0;q=pa+(o*40|0)+8|0;l=b[q>>1]|0;do if(l&16384){r=pa+(o*40|0)+12|0;i=(c[s>>2]|0)+(c[r>>2]|0)|0;if((i|0)<1)if(!(l&16)){i=0;break}else i=1;if(!(Eg(s,i,1)|0)){gw((c[pa+(o*40|0)+16>>2]|0)+(c[r>>2]|0)|0,0,c[s>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+(c[s>>2]|0);b[q>>1]=b[q>>1]&-16897;i=0}else i=7}else i=0;while(0);Sg(s,c[p+8>>2]&255,sd);if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case 57:case 54:case 55:case 56:case 52:case 53:{s=c[p+4>>2]|0;y=pa+(s*40|0)|0;w=c[p+12>>2]|0;x=pa+(w*40|0)|0;A=pa+(s*40|0)+8|0;i=b[A>>1]|0;B=pa+(w*40|0)+8|0;l=b[B>>1]|0;q=i&65535;t=l&65535;r=(l|i)&65535;C=p+2|0;o=e[C>>1]|0;do if(r&1){if(o&128|0){if(!((i&1&l)<<16>>16!=0&(t&256|0)==0)){r=(t<<1&2^2)+-1|0;oa=389;break}q=z;o=(z&255)+-52|0;oa=392;break}if(!(o&32))if(!(o&16)){l=m;q=pa;o=qa;i=K;break d}else{i=K;oa=28;break d}else{l=pa+((c[p+8>>2]|0)*40|0)+8|0;b[l>>1]=b[l>>1]&15904|1;l=m;q=pa;o=1;i=K;break d}}else{o=o&71;if(o>>>0>66){if(r&2){if((q&14|0)==2){o=a[pa+(s*40|0)+10>>0]|0;q=pa+(s*40|0)+16|0;l=pa+(s*40|0)+12|0;if(Lg(c[q>>2]|0,rf,c[l>>2]|0,o)|0){if(!(Og(c[q>>2]|0,Hd,c[l>>2]|0,o)|0)){na=Hd;oa=c[na+4>>2]|0;l=y;c[l>>2]=c[na>>2];c[l+4>>2]=oa;l=4}else{g[y>>3]=+g[rf>>3];l=8}b[A>>1]=b[A>>1]&-3|l}r=b[B>>1]|0}else r=l;if((r&14)==2){o=a[pa+(w*40|0)+10>>0]|0;q=pa+(w*40|0)+16|0;l=pa+(w*40|0)+12|0;if(!(Lg(c[q>>2]|0,rf,c[l>>2]|0,o)|0))l=b[B>>1]|0;else{if(!(Og(c[q>>2]|0,Hd,c[l>>2]|0,o)|0)){na=Hd;oa=c[na+4>>2]|0;l=x;c[l>>2]=c[na>>2];c[l+4>>2]=oa;l=4}else{g[x>>3]=+g[rf>>3];l=8}l=b[B>>1]&-3|l;b[B>>1]=l}s=r}else{s=r;l=r}}else s=l;if(!((l&4&b[A>>1])<<16>>16))l=s;else{r=x;q=c[r>>2]|0;r=c[r+4>>2]|0;o=y;l=c[o>>2]|0;o=c[o+4>>2]|0;if(!((r|0)>(o|0)|(r|0)==(o|0)&q>>>0>l>>>0)){r=((r|0)<(o|0)|(r|0)==(o|0)&q>>>0>>0)<<31>>31;l=s;oa=389;break}o=a[p>>0]|0;r=1;l=s;q=o;o=(o&255)+-52|0;oa=393;break}}else if((o|0)==66){if(!((q&2|0)!=0|(q&12|0)==0)){Hg(y,sd,1)|0;i=(q&49631|b[A>>1]&15904)&65535}if(!((t&2|0)!=0|(t&12|0)==0)){Hg(x,sd,1)|0;l=(t&49631|b[B>>1]&15904)&65535}}r=Tg(x,y,c[p+16>>2]|0)|0;oa=389}while(0);do if((oa|0)==389){oa=0;if((r|0)>=0){q=a[p>>0]|0;o=(q&255)+-52|0;if(!r){oa=392;break}else{oa=393;break}}else{na=a[p>>0]|0;s=r;o=34207+((na&255)+-52)|0;r=na;break}}while(0);if((oa|0)==392){oa=0;s=0;o=34213+o|0;r=q}else if((oa|0)==393){oa=0;s=r;o=34219+o|0;r=q}o=a[o>>0]|0;q=o&255;b[A>>1]=i;b[B>>1]=l;l=e[C>>1]|0;if(!(l&32))if(!(o<<24>>24)){l=m;q=pa;o=qa;i=K;break d}else{i=K;oa=28;break d}i=c[p+8>>2]|0;if(l&8|0?(q|0)==(r<<24>>24==53|0):0){l=m;q=pa;o=s;i=K;break d}l=pa+(i*40|0)+8|0;b[l>>1]=b[l>>1]&15904|4;l=pa+(i*40|0)|0;c[l>>2]=o&255;c[l+4>>2]=0;l=m;q=pa;o=s;i=K;break}case 58:{if(!qa){l=m;q=pa;o=0;i=K}else{i=K;oa=28}break}case -88:case 61:{l=a[qf>>0]|0;do if(l&65?((d[vf>>0]|d[vf+1>>0]<<8)&16)==0:0){i=c[p+16>>2]|0;if(!i){i=c[hd>>2]|0;if(!i)break}if(l&64){na=c[of>>2]|0;i=_c(f,i)|0;bb[na&127](c[pf>>2]|0,i);if(!i)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}if((c[Lb>>2]|0)<=1){Za[c[of>>2]&127](1,c[pf>>2]|0,f,i)|0;break}c[ze>>2]=i;i=dd(Cf,34793,ze)|0;Za[c[of>>2]&127](1,c[pf>>2]|0,f,i)|0;if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}na=i;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[i>>2]=c[af>>2];c[af>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}}while(0);q=p+4|0;i=c[q>>2]|0;if((i|0)>=(c[7392]|0)){if((a[p>>0]|0)==-88){l=m;q=pa;o=qa;i=K;break d}l=c[wb>>2]|0;if((l|0)>1){o=c[le>>2]|0;i=1;do{if((a[o+(i*20|0)>>0]|0)==17)c[o+(i*20|0)+4>>2]=0;i=i+1|0}while((i|0)!=(l|0))}c[q>>2]=0;i=0}c[q>>2]=i+1;c[ib>>2]=(c[ib>>2]|0)+1;i=K;oa=28;break}case 87:{if(!(b[p+2>>1]&1))q=0;else q=(c[p+-4>>2]|0)+4|0;s=c[p+12>>2]|0;t=c[p+16>>2]|0;w=c[p+4>>2]|0;x=c[p+8>>2]|0;if((s|0)>0){r=t+16|0;j:do if(!q){l=0;while(1){i=a[(c[r>>2]|0)+l>>0]|0;o=Tg(pa+((l+w|0)*40|0)|0,pa+((l+x|0)*40|0)|0,c[t+20+(l<<2)>>2]|0)|0;l=l+1|0;if(o|0)break j;if((l|0)>=(s|0)){l=m;q=pa;o=0;i=K;break d}}}else{l=0;while(1){o=c[q+(l<<2)>>2]|0;i=a[(c[r>>2]|0)+l>>0]|0;o=Tg(pa+((o+w|0)*40|0)|0,pa+((o+x|0)*40|0)|0,c[t+20+(l<<2)>>2]|0)|0;l=l+1|0;if(o|0)break j;if((l|0)>=(s|0)){l=m;q=pa;o=0;i=K;break d}}}while(0);l=m;q=pa;o=i<<24>>24==0?o:0-o|0;i=K}else{l=m;q=pa;o=qa;i=K}break}case 16:{if((qa|0)<0){l=m;q=pa;o=qa;p=m+(((c[p+4>>2]|0)+-1|0)*20|0)|0;i=K;break d}if(!qa){l=m;q=pa;o=0;p=m+(((c[p+8>>2]|0)+-1|0)*20|0)|0;i=K;break d}else{l=m;q=pa;o=qa;p=m+(((c[p+12>>2]|0)+-1|0)*20|0)|0;i=K;break d}}case 43:case 44:{i=c[p+4>>2]|0;l=pa+(i*40|0)|0;o=e[pa+(i*40|0)+8>>1]|0;if(!(o&4))if(!(o&1)){if(!(o&8))if(!(o&18))u=0.0;else u=+Kg(a[pa+(i*40|0)+10>>0]|0,c[pa+(i*40|0)+12>>2]|0,c[pa+(i*40|0)+16>>2]|0);else u=+g[l>>3];q=u!=0.0&1}else q=2;else{q=l;q=((c[q>>2]|0)!=0|(c[q+4>>2]|0)!=0)&1}i=c[p+8>>2]|0;l=pa+(i*40|0)|0;o=e[pa+(i*40|0)+8>>1]|0;if(!(o&4))if(!(o&1)){if(!(o&8))if(!(o&18))u=0.0;else u=+Kg(a[pa+(i*40|0)+10>>0]|0,c[pa+(i*40|0)+12>>2]|0,c[pa+(i*40|0)+16>>2]|0);else u=+g[l>>3];i=u!=0.0&1}else i=2;else{i=l;i=((c[i>>2]|0)!=0|(c[i+4>>2]|0)!=0)&1}i=a[((a[p>>0]|0)==44?34225:34234)+(i+(q*3|0))>>0]|0;l=c[p+12>>2]|0;if(i<<24>>24==2){l=pa+(l*40|0)+8|0;b[l>>1]=b[l>>1]&15904|1;l=m;q=pa;o=qa;i=K;break d}else{q=pa+(l*40|0)|0;c[q>>2]=i&255;c[q+4>>2]=0;l=pa+(l*40|0)+8|0;b[l>>1]=b[l>>1]&15904|4;l=m;q=pa;o=qa;i=K;break d}}case 88:{r=c[p+8>>2]|0;s=pa+(r*40|0)|0;l=c[p+4>>2]|0;o=pa+(l*40|0)|0;q=e[pa+(l*40|0)+8>>1]|0;if(!(q&4)){i=c[p+12>>2]|0;if(!(q&1)){if(!(q&8))if(!(q&18))u=0.0;else u=+Kg(a[pa+(l*40|0)+10>>0]|0,c[pa+(l*40|0)+12>>2]|0,c[pa+(l*40|0)+16>>2]|0);else u=+g[o>>3];i=u!=0.0&1}}else{i=o;i=((c[i>>2]|0)!=0|(c[i+4>>2]|0)!=0)&1}l=c[p+16>>2]^i;o=((l|0)<0)<<31>>31;i=pa+(r*40|0)+8|0;if(!(b[i>>1]&9216)){q=s;c[q>>2]=l;c[q+4>>2]=o;b[i>>1]=4;l=m;q=pa;o=qa;i=K;break d}else{Pg(s,l,o);l=m;q=pa;o=qa;i=K;break d}}case 19:{l=c[p+4>>2]|0;q=c[p+8>>2]|0;r=pa+(q*40|0)|0;i=b[pa+(l*40|0)+8>>1]|0;if(i&1){i=pa+(q*40|0)+8|0;if(!(b[i>>1]&9216)){b[i>>1]=1;l=m;q=pa;o=qa;i=K;break d}else{Dg(r);l=m;q=pa;o=qa;i=K;break d}}o=pa+(l*40|0)|0;i=i&65535;if(!(i&4))if(!(i&1)){if(!(i&8))if(!(i&18))u=0.0;else u=+Kg(a[pa+(l*40|0)+10>>0]|0,c[pa+(l*40|0)+12>>2]|0,c[pa+(l*40|0)+16>>2]|0);else u=+g[o>>3];i=u!=0.0}else i=0;else{i=o;i=(c[i>>2]|0)!=0|(c[i+4>>2]|0)!=0}l=(i^1)&1;i=pa+(q*40|0)+8|0;if(!(b[i>>1]&9216)){q=r;c[q>>2]=l;c[q+4>>2]=0;b[i>>1]=4;l=m;q=pa;o=qa;i=K;break d}else{Pg(r,l,0);l=m;q=pa;o=qa;i=K;break d}}case 107:{o=c[p+4>>2]|0;i=c[p+8>>2]|0;r=pa+(i*40|0)|0;i=pa+(i*40|0)+8|0;if(!(b[i>>1]&9216))b[i>>1]=1;else Dg(r);l=pa+(o*40|0)+8|0;if(!(b[l>>1]&1)){q=pa+(o*40|0)|0;b[i>>1]=4;i=e[l>>1]|0;do if(!(i&4)){if(i&8|0){i=Mg(+g[q>>3])|0;l=L()|0;break}if(!(i&18)){i=0;l=0}else{i=Ng(a[pa+(o*40|0)+10>>0]|0,c[pa+(o*40|0)+12>>2]|0,c[pa+(o*40|0)+16>>2]|0)|0;l=L()|0}}else{l=q;i=c[l>>2]|0;l=c[l+4>>2]|0}while(0);q=r;c[q>>2]=~i;c[q+4>>2]=~l;l=m;q=pa;o=qa;i=K}else{l=m;q=pa;o=qa;i=K}break}case 17:{i=c[nc>>2]|0;if(!i){l=c[(c[le>>2]|0)+4>>2]|0;i=p+4|0;if((l|0)==(c[i>>2]|0)){i=K;oa=28;break d}}else{o=(p-(c[le>>2]|0)|0)/20|0;i=(c[i+24>>2]|0)+(o>>>3)|0;l=d[i>>0]|0;o=1<<(o&7);if(o&l|0){i=K;oa=28;break d}a[i>>0]=o|l;i=p+4|0;l=c[(c[le>>2]|0)+4>>2]|0}c[i>>2]=l;l=m;q=pa;o=qa;i=K;break}case 18:{l=c[p+4>>2]|0;o=pa+(l*40|0)|0;q=e[pa+(l*40|0)+8>>1]|0;if(!(q&4)){i=c[p+12>>2]|0;if(!(q&1)){if(!(q&8))if(!(q&18))u=0.0;else u=+Kg(a[pa+(l*40|0)+10>>0]|0,c[pa+(l*40|0)+12>>2]|0,c[pa+(l*40|0)+16>>2]|0);else u=+g[o>>3];i=u!=0.0&1}}else{i=o;i=((c[i>>2]|0)!=0|(c[i+4>>2]|0)!=0)&1}if(!i){l=m;q=pa;o=qa;i=K}else{i=K;oa=28}break}case 20:{i=c[p+4>>2]|0;l=pa+(i*40|0)|0;o=e[pa+(i*40|0)+8>>1]|0;if(o&4|0){na=l;if((c[na>>2]|0)==0&(c[na+4>>2]|0)==0){i=K;oa=28;break d}else{l=m;q=pa;o=qa;i=K;break d}}if(o&1|0)if(!(c[p+12>>2]|0)){l=m;q=pa;o=qa;i=K;break d}else{i=K;oa=28;break d}if(!(o&8)){if(!(o&18)){i=K;oa=28;break d}u=+Kg(a[pa+(i*40|0)+10>>0]|0,c[pa+(i*40|0)+12>>2]|0,c[pa+(i*40|0)+16>>2]|0)}else u=+g[l>>3];if(u!=0.0){l=m;q=pa;o=qa;i=K}else{i=K;oa=28}break}case 50:{if(!(b[pa+((c[p+4>>2]|0)*40|0)+8>>1]&1)){l=m;q=pa;o=qa;i=K}else{i=K;oa=28}break}case 51:{if(!(b[pa+((c[p+4>>2]|0)*40|0)+8>>1]&1)){i=K;oa=28}else{l=m;q=pa;o=qa;i=K}break}case 21:{if(a[(c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0)+2>>0]|0){i=c[p+12>>2]|0;l=pa+(i*40|0)+8|0;if(!(b[l>>1]&9216)){b[l>>1]=1;i=K;oa=28;break d}else{Dg(pa+(i*40|0)|0);i=K;oa=28;break d}}else{l=m;q=pa;o=qa;i=K}break}case 90:{o=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;l=c[p+8>>2]|0;do if(!(a[o+3>>0]|0)){if(a[c[o+40>>2]>>0]|0){i=sh(o)|0;oa=508}}else{i=c[o+24>>2]|0;if(i|0?(Kd=c[i+(l+1<<2)>>2]|0,(Kd|0)>0):0){l=Kd+-1|0;o=c[o+36>>2]|0;break}i=rh(o)|0;oa=508}while(0);if((oa|0)==508){oa=0;if(i){oa=601;break c}}F=c[p+12>>2]|0;H=pa+(F*40|0)|0;E=c[o+72>>2]|0;r=o+28|0;i=c[ua>>2]|0;k:do if((c[r>>2]|0)!=(i|0)){do if(a[o+2>>0]|0){if((a[o>>0]|0)==3){q=c[o+32>>2]|0;x=c[pa+(q*40|0)+12>>2]|0;c[o+84>>2]=x;c[o+80>>2]=x;q=c[pa+(q*40|0)+16>>2]|0;x=o+76|0;c[x>>2]=q;break}i=pa+(F*40|0)+8|0;if(!(b[i>>1]&9216)){b[i>>1]=1;break k}else{Dg(H);break k}}else{na=c[o+40>>2]|0;bg(na);oa=c[na+44>>2]|0;c[o+80>>2]=oa;i=e[na+48>>1]|0;q=c[na+40>>2]|0;na=(c[(c[na+116>>2]|0)+60>>2]|0)-q|0;c[o+84>>2]=(na|0)<(i|0)?((na|0)>0?na:0):i;i=o+76|0;c[i>>2]=q;if(oa>>>0>(c[Da>>2]|0)>>>0){oa=518;break c}x=i;i=c[ua>>2]|0}while(0);c[r>>2]=i;oa=a[q>>0]|0;i=oa&255;if(oa<<24>>24>-1){c[E>>2]=i;w=1}else{r=d[q+1>>0]|0;do if(r&128){s=d[q+2>>0]|0;if(!(s&128)){c[E>>2]=(i<<14|s)&2080895|r<<7&16256;i=3;break}else{i=Of(q,rf)|0;na=rf;oa=c[na>>2]|0;c[E>>2]=((oa|0)==(oa|0)?0==(c[na+4>>2]|0):0)?oa:-1;break}}else{c[E>>2]=i<<7&16256|r;i=2}while(0);w=i&255}t=o+48|0;c[t>>2]=w;r=o+58|0;b[r>>1]=0;i=o+84|0;s=c[E>>2]|0;if((c[i>>2]|0)>>>0>=s>>>0){q=c[x>>2]|0;i=0;oa=540;break}c[x>>2]=0;c[i>>2]=0;oa=c[E>>2]|0;if(oa>>>0<=98307?oa>>>0<=(c[o+80>>2]|0)>>>0:0){i=0;oa=532}else oa=597}else{i=o+58|0;r=i;i=b[i>>1]|0;oa=532}while(0);do if((oa|0)==532){if((l|0)<(i&65535|0)){r=c[o+88+(l<<2)>>2]|0;oa=576;break}x=o+48|0;w=c[x>>2]|0;s=c[E>>2]|0;if(w>>>0>>0){q=c[o+76>>2]|0;if(!q){ea=Hd;fa=ea+40|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));s=c[o+40>>2]|0;t=c[E>>2]|0;oa=e[s+48>>1]|0;q=c[s+40>>2]|0;na=(c[(c[s+116>>2]|0)+60>>2]|0)-q|0;if(t>>>0>((na|0)<(oa|0)?((na|0)>0?na:0):oa)>>>0){i=uh(s,0,t,Hd)|0;if(i|0){oa=601;break c}i=b[r>>1]|0;s=c[x>>2]|0;q=c[Yb>>2]|0}else{c[Yb>>2]=q;b[_b>>1]=4112;c[ac>>2]=t;s=w}t=x;w=s;s=c[E>>2]|0;oa=540}else{t=x;oa=540}}else{q=0;oa=566}}while(0);do if((oa|0)==540){B=i&65535;D=q+s|0;i=B;s=q+w|0;B=c[E+(B<<2)>>2]|0;C=0;do{oa=a[s>>0]|0;w=oa&255;A=o+88+(i<<2)|0;c[A>>2]=w;if(oa<<24>>24>-1){s=s+1|0;y=w;w=d[3520+w>>0]|0;x=0}else{x=d[s>>0]|0;y=d[s+1>>0]|0;do if(y&128){z=d[s+2>>0]|0;if(!(z&128)){w=3;x=(x<<14|z)&2080895|y<<7&16256;oa=549;break}w=Of(s,rf)|0;oa=rf;x=c[oa>>2]|0;if((x|0)==(x|0)?0==(c[oa+4>>2]|0):0)oa=549;else{c[A>>2]=-1;x=-1;s=s+(w&255)|0;oa=550}}else{w=2;x=x<<7&16256|y;oa=549}while(0);if((oa|0)==549){oa=0;s=s+(w&255)|0;c[A>>2]=x;if(x>>>0>127)oa=550;else w=d[3520+x>>0]|0}if((oa|0)==550)w=(x+-12|0)>>>1;y=x;x=0}B=Sv(w|0,x|0,B|0,C|0)|0;C=L()|0;oa=i;i=i+1|0;c[E+(i<<2)>>2]=B;w=s>>>0>>0}while((oa|0)<(l|0)&w);if(!w)if(s>>>0<=D>>>0?((C|0)==0?(B|0)==(c[o+80>>2]|0):0):0){w=C;x=B;oa=558}else oa=559;else{w=0;x=c[o+80>>2]|0;oa=558}if((oa|0)==558){oa=0;if(C>>>0>w>>>0|(C|0)==(w|0)&B>>>0>x>>>0)oa=559}if((oa|0)==559)if(!(c[E>>2]|0)){i=0;s=D}else{if(c[o+76>>2]|0){oa=597;break}if((b[_b>>1]&9216)==0&(c[fc>>2]|0)==0){oa=597;break}Cg(Hd);oa=597;break}i=i&65535;b[r>>1]=i;c[t>>2]=s-q;if((c[o+76>>2]|0)==0?!((b[_b>>1]&9216)==0&(c[fc>>2]|0)==0):0){Cg(Hd);q=y;i=b[r>>1]|0;oa=566}else{q=y;oa=566}}while(0);do if((oa|0)==566){oa=0;if((l|0)>=(i&65535|0)){if((a[p+1>>0]|0)!=-11){i=pa+(F*40|0)+8|0;if(!(b[i>>1]&9216)){b[i>>1]=1;break}else{Dg(H);break}}l=c[p+16>>2]|0;i=pa+(F*40|0)+8|0;if(b[i>>1]&9216){mh(H,l,2048);break};c[H>>2]=c[l>>2];c[H+4>>2]=c[l+4>>2];c[H+8>>2]=c[l+8>>2];c[H+12>>2]=c[l+12>>2];c[H+16>>2]=c[l+16>>2];if(!(b[l+8>>1]&2048))b[i>>1]=b[i>>1]&-7169|2048}else{r=q;oa=576}}else if((oa|0)==597){oa=0;i=c[m+12>>2]|0;if((i|0)<=0){oa=599;break c}p=m+((i+-1|0)*20|0)|0}while(0);l:do if((oa|0)==576){oa=0;s=pa+(F*40|0)+8|0;if(b[s>>1]&9216)Dg(H);if((c[o+84>>2]|0)>>>0>=(c[E+(l+1<<2)>>2]|0)>>>0){o=(c[o+76>>2]|0)+(c[E+(l<<2)>>2]|0)|0;if(r>>>0<12){Ug(o,r,H)|0;break}q=(r+-12|0)>>>1;c[pa+(F*40|0)+12>>2]=q;a[pa+(F*40|0)+10>>0]=sd;i=q+2|0;if((c[pa+(F*40|0)+24>>2]|0)<(i|0)){b[s>>1]=1;if(Eg(H,i,0)|0){oa=602;break c}l=pa+(F*40|0)+16|0;i=l;l=c[l>>2]|0}else{l=c[pa+(F*40|0)+20>>2]|0;i=pa+(F*40|0)+16|0;c[i>>2]=l}ew(l|0,o|0,q|0)|0;a[(c[i>>2]|0)+q>>0]=0;a[(c[i>>2]|0)+(q+1)>>0]=0;b[s>>1]=b[31112+((r&1)<<1)>>1]|0;break}a[pa+(F*40|0)+10>>0]=sd;na=b[p+2>>1]|0;if(!((na&192)!=0?!((r>>>0<12|(r&1|0)!=0)&(na&128)==0):0))oa=588;do if((oa|0)==588){oa=0;if(r>>>0<=127){i=a[3520+r>>0]|0;if(!(i<<24>>24))break;else q=i&255}else q=(r+-12|0)>>>1;o=c[o+40>>2]|0;i=c[E+(l<<2)>>2]|0;na=e[o+48>>1]|0;l=c[o+40>>2]|0;ma=(c[(c[o+116>>2]|0)+60>>2]|0)-l|0;if((i+q|0)>>>0>((ma|0)<(na|0)?((ma|0)>0?ma:0):na)>>>0){i=uh(o,i,q,H)|0;if(i|0){oa=601;break c}i=c[pa+(F*40|0)+16>>2]|0}else{i=l+i|0;c[pa+(F*40|0)+16>>2]=i;b[s>>1]=4112;c[pa+(F*40|0)+12>>2]=q}Ug(i,r,H)|0;b[s>>1]=b[s>>1]&-4097;break l}while(0);Ug(59040,r,H)|0}while(0);l=m;q=pa;o=qa;i=0;break}case 91:{i=c[p+16>>2]|0;s=i;t=pa+((c[p+4>>2]|0)*40|0)|0;i=a[i>>0]|0;while(1){s=s+1|0;do if(i<<24>>24>66){r=t+8|0;o=b[r>>1]|0;i=o&65535;if(!(i&4)){if(i&8|0){v=+g[t>>3];i=Mg(v)|0;l=L()|0;na=Sv(i|0,l|0,1,-2147483648)|0;ma=L()|0;if(!((ma>>>0>0|(ma|0)==0&na>>>0>1)&v==+(i>>>0)+4294967296.0*+(l|0)))break;na=t;c[na>>2]=i;c[na+4>>2]=l;b[r>>1]=o&15904|4;break}if(i&2|0?(Ld=a[t+10>>0]|0,Md=t+16|0,Od=t+12|0,Lg(c[Md>>2]|0,rf,c[Od>>2]|0,Ld)|0):0){if(Og(c[Md>>2]|0,Hd,c[Od>>2]|0,Ld)|0){v=+g[rf>>3];g[t>>3]=v;l=b[r>>1]|0;i=l|8;b[r>>1]=i;o=Mg(v)|0;q=L()|0;na=Sv(o|0,q|0,1,-2147483648)|0;ma=L()|0;if((ma>>>0>0|(ma|0)==0&na>>>0>1)&v==+(o>>>0)+4294967296.0*+(q|0)){i=t;c[i>>2]=o;c[i+4>>2]=q;i=l&15904;oa=613}}else{na=Hd;oa=c[na+4>>2]|0;i=t;c[i>>2]=c[na>>2];c[i+4>>2]=oa;i=b[r>>1]|0;oa=613}if((oa|0)==613){oa=0;i=i|4;b[r>>1]=i}b[r>>1]=i&-3}}}else if(i<<24>>24==66){l=t+8|0;i=b[l>>1]|0;na=i&65535;if(!((na&2|0)!=0|(na&12|0)==0)){Hg(t,sd,1)|0;i=b[l>>1]|0}b[l>>1]=i&-13}while(0);i=a[s>>0]|0;if(!(i<<24>>24)){l=m;q=pa;o=qa;i=K;break}else t=t+40|0}break}case 92:{i=c[p+16>>2]|0;E=pa+((c[p+4>>2]|0)*40|0)|0;F=E+(((c[p+8>>2]|0)+-1|0)*40|0)|0;x=a[pc>>0]|0;H=c[p+12>>2]|0;I=pa+(H*40|0)|0;if(i|0){t=E;w=i;i=a[i>>0]|0;do{s=t;t=t+40|0;w=w+1|0;do if(i<<24>>24>66){r=s+8|0;o=b[r>>1]|0;i=o&65535;if(!(i&4)){if(i&8|0){v=+g[s>>3];i=Mg(v)|0;l=L()|0;na=Sv(i|0,l|0,1,-2147483648)|0;ma=L()|0;if(!((ma>>>0>0|(ma|0)==0&na>>>0>1)&v==+(i>>>0)+4294967296.0*+(l|0)))break;na=s;c[na>>2]=i;c[na+4>>2]=l;b[r>>1]=o&15904|4;break}if(i&2|0?(Pd=a[s+10>>0]|0,Qd=s+16|0,Rd=s+12|0,Lg(c[Qd>>2]|0,rf,c[Rd>>2]|0,Pd)|0):0){do if(!(Og(c[Qd>>2]|0,Hd,c[Rd>>2]|0,Pd)|0)){na=Hd;oa=c[na+4>>2]|0;i=s;c[i>>2]=c[na>>2];c[i+4>>2]=oa;i=b[r>>1]|0;oa=634}else{v=+g[rf>>3];g[s>>3]=v;l=b[r>>1]|0;i=l|8;b[r>>1]=i;o=Mg(v)|0;q=L()|0;na=Sv(o|0,q|0,1,-2147483648)|0;ma=L()|0;if(!((ma>>>0>0|(ma|0)==0&na>>>0>1)&v==+(o>>>0)+4294967296.0*+(q|0)))break;i=s;c[i>>2]=o;c[i+4>>2]=q;i=l&15904;oa=634}while(0);if((oa|0)==634){oa=0;i=i|4;b[r>>1]=i}b[r>>1]=i&-3}}}else if(i<<24>>24==66){l=s+8|0;i=b[l>>1]|0;na=i&65535;if(!((na&2|0)!=0|(na&12|0)==0)){Hg(s,sd,1)|0;i=b[l>>1]|0}b[l>>1]=i&-13}while(0);i=a[w>>0]|0}while(i<<24>>24!=0)}B=(x&255)>3;C=0;A=F;z=0;y=0;s=0;t=0;while(1){w=A+8|0;r=b[w>>1]|0;l=r&65535;do if(!(l&1)){if(!(l&4)){if(l&8|0){o=8;x=7;break}i=c[A+12>>2]|0;if(l&16384)i=(c[A>>2]|0)+i|0;o=i;x=(i<<1)+12|l>>>1&1;break}l=A;i=c[l>>2]|0;l=c[l+4>>2]|0;q=aw(i|0,l|0,63)|0;q=q^i;o=(L()|0)^l;if(o>>>0<0|(o|0)==0&q>>>0<128){if(!(B&((i&1|0)==(i|0)&0==(l|0)))){o=1;x=1;break}o=0;x=q+8|0;break}if(!(o>>>0<0|(o|0)==0&q>>>0<32768))if(o>>>0<0|(o|0)==0&q>>>0<8388608){o=3;x=3}else{na=o>>>0<0|(o|0)==0&q>>>0<2147483648;x=o>>>0<32768|(o|0)==32768&q>>>0<0;o=na?4:x?6:8;x=na?4:x?5:6}else{o=2;x=2}}else{o=0;x=0}while(0);do if(!(r&16384)){i=o;oa=666}else{if(!x){w=Sv(z|0,y|0,o|0,0)|0;i=10;o=1;x=L()|0;D=s;break}if((z|0)==0&(y|0)==0){i=c[A>>2]|0;s=Sv(s|0,t|0,i|0,((i|0)<0)<<31>>31|0)|0;i=o-i|0;t=L()|0;oa=666;break}l=A+12|0;i=(c[A>>2]|0)+(c[l>>2]|0)|0;if((i|0)<1)if(!(r&16)){i=o;oa=666;break}else i=1;if(Eg(A,i,1)|0){l=p;j=h;i=zf;oa=3892;break a}gw((c[A+16>>2]|0)+(c[l>>2]|0)|0,0,c[A>>2]|0)|0;c[l>>2]=(c[l>>2]|0)+(c[A>>2]|0);b[w>>1]=b[w>>1]&-16897;i=o;oa=666}while(0);if((oa|0)==666){oa=0;q=Sv(z|0,y|0,i|0,0)|0;r=L()|0;if(x>>>0<128){i=x;o=1;w=q;x=r;D=s}else{o=1;i=x;l=0;while(1){i=bw(i|0,l|0,7)|0;l=L()|0;if((i|0)==0&(l|0)==0){i=x;w=q;x=r;D=s;break}else o=o+1|0}}}C=o+C|0;c[A+28>>2]=i;if((A|0)==(E|0))break;else{A=A+-40|0;z=w;y=x;s=D}}if(C>>>0<127)r=C+1|0;else{r=1;i=C;l=0;while(1){i=bw(i|0,l|0,7)|0;l=L()|0;if((i|0)==0&(l|0)==0)break;else r=r+1|0}l=r+C|0;i=1;o=l;q=0;while(1){o=bw(o|0,q|0,7)|0;q=L()|0;if((o|0)==0&(q|0)==0)break;else i=i+1|0}r=l+(r>>>0>>0&1)|0}q=((r|0)<0)<<31>>31;z=Sv(w|0,x|0,r|0,q|0)|0;i=Sv(z|0,L()|0,D|0,t|0)|0;l=L()|0;o=c[pa+(H*40|0)+24>>2]|0;na=((o|0)<0)<<31>>31;do if((l|0)>(na|0)|(l|0)==(na|0)&i>>>0>o>>>0){na=c[Da>>2]|0;ma=((na|0)<0)<<31>>31;if((l|0)>(ma|0)|(l|0)==(ma|0)&i>>>0>na>>>0){oa=3891;break c}if((o|0)>=(z|0)){y=c[pa+(H*40|0)+20>>2]|0;c[pa+(H*40|0)+16>>2]=y;na=pa+(H*40|0)+8|0;b[na>>1]=b[na>>1]&13;break}if(Eg(I,z,0)|0){l=p;j=h;i=zf;oa=3892;break a}y=c[pa+(H*40|0)+16>>2]|0}else{y=c[pa+(H*40|0)+20>>2]|0;c[pa+(H*40|0)+16>>2]=y}while(0);do if(r>>>0>=128)if(r>>>0<16384){i=bw(r|0,q|0,7)|0;L()|0;a[y>>0]=i&255|-128;a[y+1>>0]=r&127;i=2;break}else{i=wh(y,r,q)|0;break}else{a[y>>0]=r;i=1}while(0);o=i&255;x=r;w=E;while(1){l=c[w+28>>2]|0;do if(l>>>0<128){a[y+o>>0]=l;i=o+1|0;o=y+x|0;if((l+-1|0)>>>0>=7)if(l>>>0>11){oa=699;break}else{l=0;break}s=w;l=d[3520+l>>0]|0;q=l;r=c[s>>2]|0;s=c[s+4>>2]|0;do{q=q+-1|0;a[o+q>>0]=r;r=bw(r|0,s|0,8)|0;s=L()|0}while((q|0)!=0)}else{i=y+o|0;if(l>>>0<16384){a[i>>0]=l>>>7&255|-128;a[i+1>>0]=l&127;i=2}else i=wh(i,l,0)|0;i=(i&255)+o|0;o=y+x|0;oa=699}while(0);if((oa|0)==699){oa=0;l=c[w+12>>2]|0;if(!l)l=0;else ew(o|0,c[w+16>>2]|0,l|0)|0}w=w+40|0;if(w>>>0>F>>>0)break;else{o=i;x=l+x|0}}c[pa+(H*40|0)+12>>2]=z;i=pa+(H*40|0)+8|0;b[i>>1]=16;if((D|0)==0&(t|0)==0){l=m;q=pa;o=qa;i=K}else{c[I>>2]=D;b[i>>1]=16400;l=m;q=pa;o=qa;i=K}break}case 93:{F=c[(c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0)+40>>2]|0;i=xh(F)|0;switch(i|0){case 16:{q=0;o=0;break}case 0:{y=F+116|0;z=F+70|0;A=F+68|0;B=F+50|0;C=F+1|0;D=F+20|0;E=F+2|0;q=0;o=0;m:while(1){l=c[y>>2]|0;if(!(a[l+8>>0]|0)){t=(a[l+2>>0]|0)==0;r=b[l+24>>1]|0;q=Sv((t?r&65535:0)|0,(t?0:0)|0,q|0,o|0)|0;o=L()|0;t=l;x=b[z>>1]|0;s=l}else{q=Sv(q|0,o|0,e[l+24>>1]|0,0)|0;o=L()|0;do{i=a[A>>0]|0;if(!(i<<24>>24))break m;b[B>>1]=0;a[C>>0]=a[C>>0]&-7;s=b[F+72+((i<<24>>24)+-1<<1)>>1]|0;b[z>>1]=s;r=i+-1<<24>>24;a[A>>0]=r;r=c[F+120+(r<<24>>24<<2)>>2]|0;c[y>>2]=r;i=c[l+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);l=c[y>>2]|0;w=l;i=b[z>>1]|0}else{w=c[i+20>>2]|0;l=w+120|0;c[l>>2]=(c[l>>2]|0)+-1;w=w+136|0;c[i+16>>2]=c[w>>2];c[w>>2]=i;w=r;l=r;i=s}r=b[l+24>>1]|0}while((i&65535)>=(r&65535));x=i+1<<16>>16;b[z>>1]=x;t=l;s=w}i=c[t+56>>2]|0;if(x<<16>>16==r<<16>>16){i=i+((d[t+9>>0]|0)+8)|0;l=a[A>>0]|0;if(l<<24>>24>18){oa=717;break c}i=d[i>>0]<<24|d[i+1>>0]<<16|d[i+2>>0]<<8|d[i+3>>0];na=c[D>>2]|0;b[B>>1]=0;a[C>>0]=a[C>>0]&-7;ma=l<<24>>24;b[F+72+(ma<<1)>>1]=x;c[F+120+(ma<<2)>>2]=s;b[z>>1]=0;a[A>>0]=l+1<<24>>24;i=yh(na,i,y,F,d[E>>0]|0)|0}else{l=(c[t+64>>2]|0)+((x&65535)<<1)|0;i=i+((d[l>>0]<<8|d[l+1>>0])&e[t+26>>1])|0;l=a[A>>0]|0;if(l<<24>>24>18){oa=720;break c}i=d[i>>0]<<24|d[i+1>>0]<<16|d[i+2>>0]<<8|d[i+3>>0];na=c[D>>2]|0;b[B>>1]=0;a[C>>0]=a[C>>0]&-7;ma=l<<24>>24;b[F+72+(ma<<1)>>1]=x;c[F+120+(ma<<2)>>2]=s;b[z>>1]=0;a[A>>0]=l+1<<24>>24;i=yh(na,i,y,F,d[E>>0]|0)|0}if(i){oa=3845;break c}}i=xh(F)|0;if(i){oa=3855;break c}break}default:{oa=3855;break c}}na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;l=i;c[l>>2]=q;c[l+4>>2]=o;l=m;q=pa;o=qa;i=0;break}case 0:{w=c[p+4>>2]|0;A=c[p+16>>2]|0;if(!w){if((c[bd>>2]|0)>0){oa=730;break c}if(!A)z=0;else z=(Eu(A)|0)&1073741823;x=(c[Gd>>2]|0)+(c[Fd>>2]|0)|0;n:do if(c[db>>2]|0){y=x+1|0;w=0;while(1){if((w|0)>=(c[Vc>>2]|0))break n;t=c[(c[db>>2]|0)+(w<<2)>>2]|0;i=c[c[t+4>>2]>>2]|0;r=t+8|0;l=c[r>>2]|0;o:do if((l|0)!=0?(c[i>>2]|0)>1:0){s=t+12|0;o=(c[s>>2]|0)+1|0;c[s>>2]=o;i=c[i+80>>2]|0;c[t+20>>2]=y;if(!i){q=0;i=o}else{q=Xa[i&255](l,x)|0;i=c[s>>2]|0}l=c[t>>2]|0;na=i+-1|0;c[s>>2]=na;if(na|0){i=q;break}i=c[r>>2]|0;if(i|0)Wa[c[(c[i>>2]|0)+16>>2]&127](i)|0;do if(l|0){if(c[l+480>>2]|0){Xd(l,t);i=q;break o}i=t;if((c[l+304>>2]|0)>>>0>i>>>0)break;if((c[l+308>>2]|0)>>>0<=i>>>0)break;i=l+300|0;c[t>>2]=c[i>>2];c[i>>2]=t;i=q;break o}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);i=q;break}else{i=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);i=q;break}}else i=0;while(0);if(!i)w=w+1|0;else{oa=3846;break c}}}while(0);l=z+33|0;do if(c[$c>>2]|0)if(!(a[zf>>0]|0))oa=761;else{l=m;q=pa;o=qa;i=0;break d}else{if(!(0<0|(0==0?(e[Xc>>1]|0)>>>0>>0:0))){i=c[af>>2]|0;if(i|0){c[af>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;break}i=c[cd>>2]|0;if(!i)i=fd;else{c[cd>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;break}}else i=Yc;c[i>>2]=(c[i>>2]|0)+1;oa=761}while(0);if((oa|0)==761){oa=0;i=_d(Cf,l,0)|0}if(!i){l=m;q=pa;o=qa;i=0;break d}na=i+32|0;c[i>>2]=na;ew(na|0,A|0,z+1|0)|0;if(!(a[gd>>0]|0))c[Gd>>2]=(c[Gd>>2]|0)+1;else{a[gd>>0]=0;a[Id>>0]=1}c[i+24>>2]=c[qd>>2];c[qd>>2]=i;l=Pa;q=c[l+4>>2]|0;o=i+8|0;c[o>>2]=c[l>>2];c[o+4>>2]=q;o=Na;q=c[o+4>>2]|0;l=i+16|0;c[l>>2]=c[o>>2];c[l+4>>2]=q;l=m;q=pa;o=qa;i=0;break d}i=c[qd>>2]|0;if(!i){oa=774;break c}q=d[208+(d[A>>0]|0)>>0]|0;B=i;r=0;while(1){l=c[B>>2]|0;na=a[l>>0]|0;i=(d[208+(na&255)>>0]|0)-q|0;if(!(na<<24>>24==0|(i|0)!=0)){o=A;do{l=l+1|0;o=o+1|0;na=a[l>>0]|0;i=(d[208+(na&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(na<<24>>24==0|(i|0)!=0))}if(!i)break;i=c[B+24>>2]|0;if(!i){oa=774;break c}else{B=i;r=r+1|0}}z=(w|0)==1;if(z&(c[bd>>2]|0)>0){oa=776;break c}A=B+24|0;if(!(c[A>>2]|0)){i=(a[Id>>0]|0)!=0;if(z&i){ma=c[f>>2]|0;na=ma+464|0;ma=ma+472|0;na=Sv(c[ma>>2]|0,c[ma+4>>2]|0,c[na>>2]|0,c[na+4>>2]|0)|0;ma=L()|0;if((ma|0)>0|(ma|0)==0&na>>>0>0){oa=780;break c}a[gd>>0]=1;if((pg(f)|0)==5){oa=782;break c}a[Id>>0]=0;y=r;i=c[Bf>>2]|0;q=1}else{q=i;oa=784}}else{q=0;oa=784}if((oa|0)==784){oa=0;s=(c[Gd>>2]|0)-r|0;x=s+-1|0;t=(w|0)==2;if(t){l=c[hf>>2]&1;if((c[sf>>2]|0)>0){o=l^1;i=0;while(1){r=jg(c[(c[uf>>2]|0)+(i<<4)+4>>2]|0,516,o)|0;i=i+1|0;if(r|0){oa=3854;break c}r=c[sf>>2]|0;if((i|0)>=(r|0)){i=0;oa=790;break}}}else i=K}else{l=0;i=K;r=c[sf>>2]|0;oa=790}p:do if((oa|0)==790){oa=0;if((r|0)>0){i=(s|0)<1;if(!t){if(!i){s=0;i=r;while(1){o=c[(c[uf>>2]|0)+(s<<4)+4>>2]|0;do if(o){if((a[o+8>>0]|0)!=2)break;r=c[o+4>>2]|0;c[r+4>>2]=c[o>>2];i=wf(c[r>>2]|0,w,x)|0;if(i|0){oa=3853;break c}i=Rf(r)|0;na=c[(c[r+12>>2]|0)+56>>2]|0;c[r+44>>2]=d[na+29>>0]<<16|d[na+28>>0]<<24|d[na+30>>0]<<8|d[na+31>>0];if(i|0){oa=3853;break c}i=c[sf>>2]|0}while(0);s=s+1|0;if((s|0)>=(i|0)){i=0;break p}}}s=0;i=r;while(1){o=c[(c[uf>>2]|0)+(s<<4)+4>>2]|0;do if(o){if((a[o+8>>0]|0)!=2)break;r=c[o+4>>2]|0;c[r+4>>2]=c[o>>2];i=wf(c[r>>2]|0,w,x)|0;if(i|0){oa=3852;break c}o=r+44|0;if(b[r+22>>1]&16)c[o>>2]=0;i=Rf(r)|0;na=c[(c[r+12>>2]|0)+56>>2]|0;c[o>>2]=d[na+29>>0]<<16|d[na+28>>0]<<24|d[na+30>>0]<<8|d[na+31>>0];if(i|0){oa=3852;break c}i=c[sf>>2]|0}while(0);s=s+1|0;if((s|0)>=(i|0)){i=0;break p}}}if(!i){s=0;i=r;while(1){o=c[(c[uf>>2]|0)+(s<<4)+4>>2]|0;do if(o){if((a[o+8>>0]|0)!=2)break;r=c[o+4>>2]|0;c[r+4>>2]=c[o>>2];i=c[r+8>>2]|0;if(i|0?(Vd=$f(i,0,0)|0,Vd|0):0){i=Vd;oa=3851;break c}i=wf(c[r>>2]|0,2,x)|0;if(i|0){oa=3851;break c}i=Rf(r)|0;na=c[(c[r+12>>2]|0)+56>>2]|0;c[r+44>>2]=d[na+29>>0]<<16|d[na+28>>0]<<24|d[na+30>>0]<<8|d[na+31>>0];if(i|0){oa=3851;break c}i=c[sf>>2]|0}while(0);s=s+1|0;if((s|0)>=(i|0)){i=0;break p}}}s=0;i=r;while(1){o=c[(c[uf>>2]|0)+(s<<4)+4>>2]|0;do if(o){if((a[o+8>>0]|0)!=2)break;r=c[o+4>>2]|0;c[r+4>>2]=c[o>>2];i=c[r+8>>2]|0;if(i|0?(Ud=$f(i,0,0)|0,Ud|0):0){i=Ud;oa=3850;break c}i=wf(c[r>>2]|0,2,x)|0;if(i|0){oa=3850;break c}o=r+44|0;if(b[r+22>>1]&16)c[o>>2]=0;i=Rf(r)|0;na=c[(c[r+12>>2]|0)+56>>2]|0;c[o>>2]=d[na+29>>0]<<16|d[na+28>>0]<<24|d[na+30>>0]<<8|d[na+31>>0];if(i|0){oa=3850;break c}i=c[sf>>2]|0}while(0);s=s+1|0;if((s|0)>=(i|0)){i=0;break}}}}while(0);if(!l)y=x;else{l=c[$a>>2]|0;if(l|0)do{na=l+149|0;ma=(d[na>>0]|d[na+1>>0]<<8)&-4|1;a[na>>0]=ma;a[na+1>>0]=ma>>8;l=c[l+8>>2]|0}while((l|0)!=0);$b(Cf);c[hf>>2]=c[hf>>2]|1;y=x}}l=c[qd>>2]|0;if((l|0)!=(B|0))do{c[qd>>2]=c[l+24>>2];q:do if(l|0){if(c[Ze>>2]|0){Xd(Cf,l);break}o=l;do if((c[_e>>2]|0)>>>0<=o>>>0){if((c[$e>>2]|0)>>>0<=o>>>0)break;c[l>>2]=c[af>>2];c[af>>2]=l;break q}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[Gd>>2]=(c[Gd>>2]|0)+-1;l=c[qd>>2]|0}while((l|0)!=(B|0));if(z){c[qd>>2]=c[A>>2];do if(!(c[Ze>>2]|0)){na=B;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[B>>2]=c[af>>2];c[af>>2]=B;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](B);break}else{na=Wa[c[29352>>2]&127](B)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](B);break}}else Xd(Cf,B);while(0);if(q){Wd=1;oa=859}else c[Gd>>2]=(c[Gd>>2]|0)+-1}else{Wd=B+8|0;oa=c[Wd+4>>2]|0;na=Pa;c[na>>2]=c[Wd>>2];c[na+4>>2]=oa;na=B+16|0;oa=c[na+4>>2]|0;Wd=Na;c[Wd>>2]=c[na>>2];c[Wd+4>>2]=oa;Wd=q;oa=859}if((oa|0)==859?(oa=0,!((w|0)==2|Wd^1)):0)if(!i){l=m;q=pa;o=qa;i=0;break d}else{oa=3855;break c}if(!(c[db>>2]|0)){l=m;q=pa;o=qa;i=0}else{x=y+1|0;switch(w|0){case 0:while(1){if((w|0)>=(c[Vc>>2]|0)){l=m;q=pa;o=qa;i=0;break d}t=c[(c[db>>2]|0)+(w<<2)>>2]|0;i=c[c[t+4>>2]>>2]|0;r=t+8|0;l=c[r>>2]|0;r:do if(l){if((c[i>>2]|0)<=1){i=0;break}s=t+12|0;o=(c[s>>2]|0)+1|0;c[s>>2]=o;i=c[i+80>>2]|0;c[t+20>>2]=x;if(!i){q=0;i=o}else{q=Xa[i&255](l,y)|0;i=c[s>>2]|0}l=c[t>>2]|0;na=i+-1|0;c[s>>2]=na;if(na|0){i=q;break}i=c[r>>2]|0;if(i|0)Wa[c[(c[i>>2]|0)+16>>2]&127](i)|0;do if(l|0){if(c[l+480>>2]|0){Xd(l,t);i=q;break r}i=t;if((c[l+304>>2]|0)>>>0>i>>>0)break;if((c[l+308>>2]|0)>>>0<=i>>>0)break;i=l+300|0;c[t>>2]=c[i>>2];c[i>>2]=t;i=q;break r}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);i=q;break}else{i=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);i=q;break}}else i=0;while(0);if(!i)w=w+1|0;else{oa=3848;break c}}case 2:{w=0;while(1){if((w|0)>=(c[Vc>>2]|0)){l=m;q=pa;o=qa;i=0;break d}t=c[(c[db>>2]|0)+(w<<2)>>2]|0;i=c[c[t+4>>2]>>2]|0;r=t+8|0;l=c[r>>2]|0;s:do if(l){if((c[i>>2]|0)<=1){i=0;break}s=t+12|0;o=(c[s>>2]|0)+1|0;c[s>>2]=o;i=c[i+88>>2]|0;do if(!i){q=0;i=o}else{if((c[t+20>>2]|0)<=(y|0)){q=0;i=o;break}q=Xa[i&255](l,y)|0;i=c[s>>2]|0}while(0);l=c[t>>2]|0;na=i+-1|0;c[s>>2]=na;if(na|0){i=q;break}i=c[r>>2]|0;if(i|0)Wa[c[(c[i>>2]|0)+16>>2]&127](i)|0;do if(l|0){if(c[l+480>>2]|0){Xd(l,t);i=q;break s}i=t;if((c[l+304>>2]|0)>>>0>i>>>0)break;if((c[l+308>>2]|0)>>>0<=i>>>0)break;i=l+300|0;c[t>>2]=c[i>>2];c[i>>2]=t;i=q;break s}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);i=q;break}else{i=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);i=q;break}}else i=0;while(0);if(!i)w=w+1|0;else{oa=3849;break c}}}default:{w=0;while(1){if((w|0)>=(c[Vc>>2]|0)){l=m;q=pa;o=qa;i=0;break d}t=c[(c[db>>2]|0)+(w<<2)>>2]|0;i=c[c[t+4>>2]>>2]|0;r=t+8|0;l=c[r>>2]|0;t:do if(l){if((c[i>>2]|0)<=1){i=0;break}s=t+12|0;o=(c[s>>2]|0)+1|0;c[s>>2]=o;i=c[i+84>>2]|0;do if(!i){q=0;i=o}else{if((c[t+20>>2]|0)<=(y|0)){q=0;i=o;break}q=Xa[i&255](l,y)|0;i=c[s>>2]|0}while(0);l=c[t>>2]|0;na=i+-1|0;c[s>>2]=na;if(na|0){i=q;break}i=c[r>>2]|0;if(i|0)Wa[c[(c[i>>2]|0)+16>>2]&127](i)|0;do if(l|0){if(c[l+480>>2]|0){Xd(l,t);i=q;break t}i=t;if((c[l+304>>2]|0)>>>0>i>>>0)break;if((c[l+308>>2]|0)>>>0<=i>>>0)break;i=l+300|0;c[t>>2]=c[i>>2];c[i>>2]=t;i=q;break t}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);i=q;break}else{i=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);i=q;break}}else i=0;while(0);if(!i)w=w+1|0;else{oa=3847;break c}}}}}break}case 2:{c[rf>>2]=0;o=p+8|0;i=c[o>>2]|0;if(i|0?!((c[Sc>>2]&1048576|0)==0&0==0):0){l=8;oa=1017;break c}z=p+4|0;y=c[(c[uf>>2]|0)+(c[z>>2]<<4)+4>>2]|0;do if(y){l=Zb(y,i,rf)|0;if(l|0){oa=950;break c}if((c[o>>2]|0)!=0?((d[vf>>0]|d[vf+1>>0]<<8)&128)!=0:0){if(a[gd>>0]|0?(c[Ha>>2]|0)<=1:0){i=0;break}i=c[bc>>2]|0;if(!i){l=(c[Fd>>2]|0)+1|0;c[Fd>>2]=l;l=(c[Gd>>2]|0)+l|0;c[bc>>2]=l}else l=i;x=l+-1|0;u:do if(!(c[db>>2]|0))oa=979;else{w=0;while(1){if((w|0)>=(c[Vc>>2]|0))break;t=c[(c[db>>2]|0)+(w<<2)>>2]|0;i=c[c[t+4>>2]>>2]|0;r=t+8|0;q=c[r>>2]|0;v:do if(q){if((c[i>>2]|0)<=1){i=0;break}s=t+12|0;o=(c[s>>2]|0)+1|0;c[s>>2]=o;i=c[i+80>>2]|0;c[t+20>>2]=l;if(!i)i=0;else{i=Xa[i&255](q,x)|0;o=c[s>>2]|0}q=c[t>>2]|0;na=o+-1|0;c[s>>2]=na;if(na|0)break;o=c[r>>2]|0;if(o|0)Wa[c[(c[o>>2]|0)+16>>2]&127](o)|0;do if(q|0){if(c[q+480>>2]|0){Xd(q,t);break v}o=t;if((c[q+304>>2]|0)>>>0>o>>>0)break;if((c[q+308>>2]|0)>>>0<=o>>>0)break;na=q+300|0;c[t>>2]=c[na>>2];c[na>>2]=t;break v}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{na=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}else i=0;while(0);if(!i)w=w+1|0;else break u}l=c[bc>>2]|0;oa=979}while(0);if((oa|0)==979){oa=0;i=c[y+4>>2]|0;c[i+4>>2]=c[y>>2];i=c[i>>2]|0;if((c[i+96>>2]|0)<(l|0)?(a[i+6>>0]|0)!=0:0)i=Vf(i,l)|0;else i=0}na=Pa;ma=c[na+4>>2]|0;la=gc;c[la>>2]=c[na>>2];c[la+4>>2]=ma;la=Na;ma=c[la+4>>2]|0;na=hc;c[na>>2]=c[la>>2];c[na+4>>2]=ma}else i=0}else i=K;while(0);if(b[p+2>>1]|0){if((c[rf>>2]|0)!=(c[p+12>>2]|0)){oa=986;break c}if((c[(c[(c[uf>>2]|0)+(c[z>>2]<<4)+12>>2]|0)+4>>2]|0)!=(c[p+16>>2]|0)){oa=986;break c}}if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case 94:{i=c[p+12>>2]|0;l=c[(c[uf>>2]|0)+(c[p+4>>2]<<4)+4>>2]|0;o=c[l+4>>2]|0;c[o+4>>2]=c[l>>2];if((i|0)==15)o=(c[l+20>>2]|0)+(c[(c[o>>2]|0)+100>>2]|0)|0;else{o=(c[(c[o+12>>2]|0)+56>>2]|0)+((i<<2)+36)|0;o=d[o+1>>0]<<16|d[o>>0]<<24|d[o+2>>0]<<8|d[o+3>>0]}na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;l=i;c[l>>2]=o;c[l+4>>2]=((o|0)<0)<<31>>31;l=m;q=pa;o=qa;i=K;break}case 95:{w=c[uf>>2]|0;x=p+4|0;y=c[x>>2]|0;l=c[w+(y<<4)+4>>2]|0;z=p+8|0;s=c[z>>2]|0;A=p+12|0;q=c[A>>2]|0;t=c[l+4>>2]|0;c[t+4>>2]=c[l>>2];l=c[t+12>>2]|0;r=c[l+56>>2]|0;l=c[l+72>>2]|0;o=c[l+20>>2]|0;if((b[l+28>>1]&4)!=0?(c[o+24>>2]|0)>>>0>=(c[l+24>>2]|0)>>>0:0)if(!(c[o+96>>2]|0))oa=1035;else{i=Ve(l)|0;oa=1034}else oa=1030;do if((oa|0)==1030){oa=0;i=c[o+40>>2]|0;if(!i)if((c[o+148>>2]|0)>>>0>(c[o+152>>2]|0)>>>0){i=Wf(l)|0;oa=1034;break}else{i=Xf(l)|0;oa=1034;break}else o=0}while(0);if((oa|0)==1034){oa=0;if(!i)oa=1035;else o=0}if((oa|0)==1035){oa=0;na=r+((s<<2)+36)|0;a[na>>0]=q>>>24;a[na+1>>0]=q>>>16;a[na+2>>0]=q>>>8;i=q&255;a[na+3>>0]=i;if((s|0)==7){a[t+18>>0]=i;i=0;o=1}else{i=0;o=1}}switch(c[z>>2]|0){case 1:{c[c[w+(y<<4)+12>>2]>>2]=c[A>>2];c[hf>>2]=c[hf>>2]|1;break}case 2:{a[(c[w+(y<<4)+12>>2]|0)+76>>0]=c[A>>2];break}default:{}}if((c[x>>2]|0)==1){l=c[$a>>2]|0;if(l|0)do{na=l+149|0;ma=(d[na>>0]|d[na+1>>0]<<8)&-4|1;a[na>>0]=ma;a[na+1>>0]=ma>>8;l=c[l+8>>2]|0}while((l|0)!=0);na=(d[vf>>0]|d[vf+1>>0]<<8)&-4;a[vf>>0]=na;a[vf+1>>0]=na>>8}if(o){l=m;q=pa;o=qa}else{oa=3855;break c}break}case 106:{i=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;if((i|0)!=0?(c[i+52>>2]|0)==(c[p+8>>2]|0):0){o=i;i=K;l=p+2|0;oa=1074}else oa=1049;break}case 109:case 108:{oa=1049;break}case 111:{l=c[oc>>2]|0;w=c[l+(c[p+8>>2]<<2)>>2]|0;q=c[p+4>>2]|0;s=b[w+56>>1]|0;t=s<<16>>16;i=c[xd>>2]|0;if((q|0)>0)i=i+(((c[va>>2]|0)-q|0)*40|0)|0;o=t<<3;r=o+96|0;o=o+296|0;l=c[l+(q<<2)>>2]|0;if(l|0){na=l+5|0;a[na>>0]=a[na>>0]&-2;tg(f,c[(c[oc>>2]|0)+(q<<2)>>2]|0);c[(c[oc>>2]|0)+(q<<2)>>2]=0}if((c[i+24>>2]|0)<(o|0)){if(Eg(i,o,0)|0){l=p;j=h;i=zf;oa=3892;break a}o=i+16|0;l=o;o=c[o>>2]|0}else{o=c[i+20>>2]|0;l=i+16|0;c[l>>2]=o;na=i+8|0;b[na>>1]=b[na>>1]&13}c[(c[oc>>2]|0)+(q<<2)>>2]=o;i=o+1|0;ea=o;fa=ea+36|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));a[i>>0]=-1;b[o+56>>1]=s;c[o+72>>2]=o+88+(t<<2);na=(c[l>>2]|0)+r|0;i=o+40|0;c[i>>2]=na;c[na>>2]=0;c[na+4>>2]=0;c[na+8>>2]=0;c[na+12>>2]=0;c[na+16>>2]=0;if(!o){l=p;j=h;i=zf;oa=3892;break a}a[o+2>>0]=1;l=o+5|0;q=a[l>>0]|1;a[l>>0]=q;na=c[w+44>>2]|0;c[o+44>>2]=na;a[o+4>>0]=a[w+4>>0]|0;ma=c[w+52>>2]|0;c[o+52>>2]=ma;a[l>>0]=a[w+5>>0]&4|q&-5;l=m;q=pa;o=qa;i=Vg(c[w+8>>2]|0,ma,4,na,c[i>>2]|0)|0;break}case 113:case 112:{o=c[p+4>>2]|0;q=(c[oc>>2]|0)+(o<<2)|0;i=c[q>>2]|0;if(!i){s=c[p+8>>2]|0;i=c[xd>>2]|0;if((o|0)>0)i=i+(((c[va>>2]|0)-o|0)*40|0)|0;l=s<<3;r=l+96|0;l=l+296|0;if((c[i+24>>2]|0)<(l|0)){if(Eg(i,l,0)|0){l=p;j=h;i=zf;oa=3892;break a}w=i+16|0;l=w;i=(c[oc>>2]|0)+(o<<2)|0;w=c[w>>2]|0}else{w=c[i+20>>2]|0;l=i+16|0;c[l>>2]=w;i=i+8|0;b[i>>1]=b[i>>1]&13;i=q}c[i>>2]=w;i=w+1|0;ea=w;fa=ea+36|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));a[i>>0]=-1;b[w+56>>1]=s;c[w+72>>2]=w+88+(s<<2);na=(c[l>>2]|0)+r|0;q=w+40|0;c[q>>2]=na;c[na>>2]=0;c[na+4>>2]=0;c[na+8>>2]=0;c[na+12>>2]=0;c[na+16>>2]=0;if(!w){l=p;j=h;i=zf;oa=3892;break a}a[w+2>>0]=1;s=w+5|0;a[s>>0]=a[s>>0]|1;r=w+8|0;t=p+2|0;i=Pe(c[Cf>>2]|0,0,Cf,r,(b[t>>1]|5)&65535,1054)|0;do if(!i){i=Zb(c[r>>2]|0,1,0)|0;if(!i){l=c[p+16>>2]|0;c[w+44>>2]=l;if(!l){c[w+52>>2]=1;i=Vg(c[r>>2]|0,1,4,0,c[q>>2]|0)|0;a[w+4>>0]=1;break}o=w+52|0;i=Wg(c[r>>2]|0,o,(b[t>>1]|2)&65535)|0;if(!i)i=Vg(c[r>>2]|0,c[o>>2]|0,4,l,c[q>>2]|0)|0;a[w+4>>0]=0}}while(0);a[s>>0]=((b[t>>1]|0)!=8&1)<<2&255|a[s>>0]&-5}else{l=c[i+8>>2]|0;q=c[i+52>>2]|0;o=l+4|0;r=c[o>>2]|0;c[r+4>>2]=c[l>>2];i=c[r+8>>2]|0;w:do if(i|0){x:do if(q)while(1){if((c[i+64>>2]|0)==(q|0))break x;i=c[i+24>>2]|0;if(!i)break w}while(0);i=$f(i,q,0)|0;if(i|0){oa=3855;break c}}while(0);l=l+11|0;if(a[l>>0]|0?(a[l>>0]=0,md=c[(c[o>>2]|0)+8>>2]|0,md|0):0){i=md;do{if(a[i+1>>0]&16?(a[l>>0]=1,(c[i+64>>2]|0)==(q|0)):0)a[i>>0]=1;i=c[i+24>>2]|0}while((i|0)!=0)}i=zh(r,q,0,0)|0}if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case 114:{q=c[p+4>>2]|0;r=c[p+8>>2]|0;i=c[xd>>2]|0;if((q|0)>0)i=i+(((c[va>>2]|0)-q|0)*40|0)|0;l=(r<<3)+96|0;o=c[(c[oc>>2]|0)+(q<<2)>>2]|0;if(o|0){na=o+5|0;a[na>>0]=a[na>>0]&-2;tg(f,c[(c[oc>>2]|0)+(q<<2)>>2]|0);c[(c[oc>>2]|0)+(q<<2)>>2]=0}if((c[i+24>>2]|0)<(l|0)){if(Eg(i,l,0)|0){l=p;j=h;i=zf;oa=3892;break a}s=c[i+16>>2]|0}else{s=c[i+20>>2]|0;c[i+16>>2]=s;na=i+8|0;b[na>>1]=b[na>>1]&13}c[(c[oc>>2]|0)+(q<<2)>>2]=s;ea=s;fa=ea+36|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));a[s>>0]=1;a[s+1>>0]=-1;b[s+56>>1]=r;c[s+72>>2]=s+88+(r<<2);if(!s){l=p;j=h;i=zf;oa=3892;break a}q=c[p+16>>2]|0;l=s+44|0;c[l>>2]=q;o=c[p+12>>2]|0;q=e[q+6>>1]<<2;r=q+156|0;do if(c[$c>>2]|0)if(!(a[zf>>0]|0))oa=1133;else{oa=1135;break c}else{if(!(0<0|(0==0?(e[Xc>>1]|0)>>>0>>0:0))){i=c[af>>2]|0;if(i|0){c[af>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;t=i;break}i=c[cd>>2]|0;if(!i)i=fd;else{c[cd>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;t=i;break}}else i=Yc;c[i>>2]=(c[i>>2]|0)+1;oa=1133}while(0);if((oa|0)==1133){oa=0;t=_d(Cf,r,0)|0}if(!t){oa=1135;break c}gw(t|0,0,r|0)|0;c[s+40>>2]=t;na=t+136|0;c[t+28>>2]=na;ew(na|0,c[l>>2]|0,q+20|0)|0;c[t+148>>2]=0;if(o|0)b[t+142>>1]=o;i=c[uf>>2]|0;l=c[(c[(c[i+4>>2]|0)+4>>2]|0)+32>>2]|0;c[t+12>>2]=l;a[t+59>>0]=1;a[t+58>>0]=-1;a[t+57>>0]=0;c[t+24>>2]=Cf;c[t+72>>2]=t;if((a[ra>>0]|0)!=2?(ma=G(c[7379]|0,l)|0,c[t>>2]=ma,na=c[(c[i+12>>2]|0)+80>>2]|0,la=(na|0)<0,be=((l|0)<0)<<31>>31,na=Yv((la?-1024:l)|0,(la?-1:be)|0,na|0,((na|0)<0)<<31>>31|0)|0,la=L()|0,ka=(la|0)<0|(la|0)==0&na>>>0<536870912,na=ka?na:536870912,ka?la:0,c[t+4>>2]=(ma|0)>(na|0)?ma:na,(c[7329]|0)==0):0){c[t+52>>2]=l;na=Sv(l|0,be|0,-1,-1)|0;ma=L()|0;do if(ma>>>0>0|(ma|0)==0&na>>>0>2147483390)i=0;else{if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](l)|0;break}o=Wa[c[29356>>2]&127](l)|0;if((c[14985]|0)>>>0>>0)c[14985]=l;l=59064;i=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&i>>>0>0){na=c[14978]|0;ma=Tv(i|0,l|0,o|0,((o|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}i=Wa[c[29340>>2]&127](o)|0;if(!i){i=0;break}l=Wa[c[29352>>2]&127](i)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0<=(c[14987]|0)>>>0)break;c[14987]=l}while(0);c[t+40>>2]=i;i=(i|0)==0?7:0}else i=0;do if((e[t+144>>1]|0)<13){na=c[t+156>>2]|0;if(na|0?(na|0)!=(c[jc>>2]|0):0)break;a[t+60>>0]=3}while(0);if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case 115:{la=(c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0)+16|0;na=la;ma=c[na>>2]|0;na=c[na+4>>2]|0;ja=Sv(ma|0,na|0,1,0)|0;ka=L()|0;c[la>>2]=ja;c[la+4>>2]=ka;if((ma|0)==0&(na|0)==0){i=K;oa=28}else{l=m;q=pa;o=qa;i=K}break}case 116:{q=c[p+4>>2]|0;r=c[p+12>>2]|0;i=c[xd>>2]|0;if((q|0)>0)i=i+(((c[va>>2]|0)-q|0)*40|0)|0;l=(r<<3)+96|0;o=c[(c[oc>>2]|0)+(q<<2)>>2]|0;if(o|0){na=o+5|0;a[na>>0]=a[na>>0]&-2;tg(f,c[(c[oc>>2]|0)+(q<<2)>>2]|0);c[(c[oc>>2]|0)+(q<<2)>>2]=0}if((c[i+24>>2]|0)<(l|0)){if(Eg(i,l,0)|0){l=p;j=h;i=zf;oa=3892;break a}i=c[i+16>>2]|0}else{na=c[i+20>>2]|0;c[i+16>>2]=na;i=i+8|0;b[i>>1]=b[i>>1]&13;i=na}c[(c[oc>>2]|0)+(q<<2)>>2]=i;ea=i;fa=ea+36|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));a[i>>0]=3;a[i+1>>0]=-1;b[i+56>>1]=r;c[i+72>>2]=i+88+(r<<2);if(!i){l=p;j=h;i=zf;oa=3892;break a}a[i+2>>0]=1;c[i+32>>2]=c[p+8>>2];a[i+4>>0]=1;c[i+40>>2]=59954;l=m;q=pa;o=qa;i=K;break}case 117:{l=p+4|0;tg(f,c[(c[oc>>2]|0)+(c[l>>2]<<2)>>2]|0);c[(c[oc>>2]|0)+(c[l>>2]<<2)>>2]=0;l=m;q=pa;o=qa;i=K;break}case 25:case 24:case 23:case 22:{w=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;l=z&255;a[w+2>>0]=0;y:do if(!(a[w+4>>0]|0)){i=c[w+40>>2]|0;o=(d[i+3>>0]|0)>>>1&1;oa=c[p+16>>2]|0;c[Yd>>2]=c[w+44>>2];b[wa>>1]=oa;a[xa>>0]=(l<<1&2^2)+255;c[ya>>2]=pa+((c[p+12>>2]|0)*40|0);a[za>>0]=0;i=Xg(i,Yd,0,0,0,Td)|0;if(i|0){oa=1213;break c}i=o&255;if(o<<24>>24!=0&(a[za>>0]|0)==0)if(!(c[Td>>2]|0)){p=p+20|0;oa=1212}else{i=0;oa=1211}else{o=i;oa=1194}}else{r=c[p+12>>2]|0;t=pa+(r*40|0)|0;s=pa+(r*40|0)+8|0;i=b[s>>1]|0;if((i&14)==2){i=a[pa+(r*40|0)+10>>0]|0;o=pa+(r*40|0)+16|0;q=pa+(r*40|0)+12|0;if(!(Lg(c[o>>2]|0,rf,c[q>>2]|0,i)|0))i=b[s>>1]|0;else{if(!(Og(c[o>>2]|0,Hd,c[q>>2]|0,i)|0)){na=Hd;oa=c[na+4>>2]|0;i=t;c[i>>2]=c[na>>2];c[i+4>>2]=oa;i=4}else{g[t>>3]=+g[rf>>3];i=8}i=b[s>>1]&-3|i;b[s>>1]=i}}i=i&65535;do if(!(i&4)){if(i&8|0){o=Mg(+g[t>>3])|0;q=L()|0;break}if(!(i&18)){o=0;q=0}else{o=Ng(a[pa+(r*40|0)+10>>0]|0,c[pa+(r*40|0)+12>>2]|0,c[pa+(r*40|0)+16>>2]|0)|0;q=L()|0;i=e[s>>1]|0}}else{q=t;o=c[q>>2]|0;q=c[q+4>>2]|0}while(0);do if(!(i&4)){if(!(i&8)){i=K;oa=1211;break y}u=+g[t>>3];v=+(o>>>0)+4294967296.0*+(q|0);if(u>31)+l|0;break}else{l=((l&1|0)==0&u>v&1)+l|0;break}}while(0);i=Xg(c[w+40>>2]|0,0,o,q,0,Td)|0;oa=w+64|0;c[oa>>2]=o;c[oa+4>>2]=q;if(!i){o=0;oa=1194}else{oa=1213;break c}}while(0);z:do if((oa|0)==1194){oa=0;a[w+3>>0]=0;c[w+28>>2]=0;i=c[Td>>2]|0;if((l|0)>23){if((i|0)>=0?!((l|0)==25&(i|0)==0):0)c[Td>>2]=0;else oa=1197;A:do if((oa|0)==1197){c[Td>>2]=0;i=Yg(c[w+40>>2]|0,0)|0;switch(i|0){case 0:break A;case 101:break;default:{oa=1213;break c}}c[Td>>2]=1;i=0;oa=1211;break z}while(0);p=(o|0)==0?p:p+20|0;oa=1212;break}if((i|0)<=0?!((l|0)==22&(i|0)==0):0){oa=(a[c[w+40>>2]>>0]|0)!=0;c[Td>>2]=oa&1;if(oa){i=0;oa=1211;break}else{p=(o|0)==0?p:p+20|0;oa=1212;break}}c[Td>>2]=0;i=c[w+40>>2]|0;na=i+1|0;a[na>>0]=a[na>>0]&-15;b[i+50>>1]=0;if(((a[i>>0]|0)==0?(ce=i+70|0,de=b[ce>>1]|0,de<<16>>16!=0):0)?(a[(c[i+116>>2]|0)+8>>0]|0)!=0:0)b[ce>>1]=de+-1<<16>>16;else oa=1206;B:do if((oa|0)==1206){i=Hh(i)|0;switch(i|0){case 0:break B;case 101:break;default:{oa=1213;break c}}c[Td>>2]=1;i=0;oa=1211;break z}while(0);p=(o|0)==0?p:p+20|0;oa=1212}while(0);if((oa|0)==1211){oa=28;break d}else if((oa|0)==1212){oa=0;l=m;q=pa;o=qa;i=0;break d}break}case 119:{l=(c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0)+5|0;a[l>>0]=(c[p+8>>2]&255)<<3&8|a[l>>0]&-9;l=m;q=pa;o=qa;i=K;break}case 26:{if(!(a[(c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0)+5>>0]&8))oa=1216;else{l=m;q=pa;o=qa;i=K}break}case 29:case 28:case 27:{oa=1216;break}case 30:{i=p+12|0;o=c[i>>2]|0;t=pa+(o*40|0)+8|0;w=b[t>>1]|0;if(!(w&4)){s=pa+(o*40|0)|0;l=w&65535;do if(!(l&4)){if(l&8|0){v=+g[s>>3];o=Mg(v)|0;q=L()|0;oa=Sv(o|0,q|0,1,-2147483648)|0;na=L()|0;l=w&15904|4;if(!((na>>>0>0|(na|0)==0&oa>>>0>1)&v==+(o>>>0)+4294967296.0*+(q|0))){l=w;break}oa=s;c[oa>>2]=o;c[oa+4>>2]=q;b[t>>1]=l;break}if(l&2){q=a[pa+(o*40|0)+10>>0]|0;r=pa+(o*40|0)+16|0;l=pa+(o*40|0)+12|0;if(!(Lg(c[r>>2]|0,rf,c[l>>2]|0,q)|0))l=b[t>>1]|0;else{if(Og(c[r>>2]|0,Hd,c[l>>2]|0,q)|0){v=+g[rf>>3];g[s>>3]=v;o=b[t>>1]|0;l=o|8;b[t>>1]=l;q=Mg(v)|0;r=L()|0;na=Sv(q|0,r|0,1,-2147483648)|0;ma=L()|0;if((ma>>>0>0|(ma|0)==0&na>>>0>1)&v==+(q>>>0)+4294967296.0*+(r|0)){l=s;c[l>>2]=q;c[l+4>>2]=r;l=o&15904;oa=1281}}else{na=Hd;oa=c[na+4>>2]|0;l=s;c[l>>2]=c[na>>2];c[l+4>>2]=oa;l=b[t>>1]|0;oa=1281}if((oa|0)==1281){l=l|4;b[t>>1]=l}l=l&-3;b[t>>1]=l}}else l=w}else l=w;while(0);b[t>>1]=w;if(!(l&4)){i=K;oa=28}else oa=1287}else oa=1287;break}case 31:{i=p+12|0;oa=1287;break}case 120:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;l=(c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0)+16|0;q=l;o=c[q>>2]|0;q=c[q+4>>2]|0;ma=Sv(o|0,q|0,1,0)|0;na=L()|0;c[l>>2]=ma;c[l+4>>2]=na;l=i;c[l>>2]=o;c[l+4>>2]=q;l=m;q=pa;o=qa;i=K;break}case 121:{na=rf;c[na>>2]=0;c[na+4>>2]=0;c[Hd>>2]=0;na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216)){b[l>>1]=4;y=i}else{lh(i)|0;y=i}z=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;x=z+5|0;do if(!(a[x>>0]&2)){l=z+40|0;i=$g(c[l>>2]|0,Hd)|0;if(i|0){oa=1328;break c}if(c[Hd>>2]|0){i=rf;c[i>>2]=1;c[i+4>>2]=0;i=0;break}l=c[l>>2]|0;bg(l);l=l+32|0;i=c[l>>2]|0;l=c[l+4>>2]|0;na=rf;c[na>>2]=i;c[na+4>>2]=l;if((i|0)==-1&(l|0)==2147483647){a[x>>0]=a[x>>0]|2;i=0;break}else{ma=Sv(i|0,l|0,1,0)|0;na=L()|0;i=rf;c[i>>2]=ma;c[i+4>>2]=na;i=0;break}}else i=K;while(0);r=c[p+12>>2]|0;if(r|0){l=c[nc>>2]|0;if(!l)o=pa;else{while(1){o=c[l+4>>2]|0;if(!o)break;else l=o}o=c[l+16>>2]|0}w=o+(r*40|0)|0;s=o+(r*40|0)+8|0;l=b[s>>1]|0;q=l&65535;do if(!(q&4)){if(q&8|0){q=Mg(+g[w>>3])|0;o=L()|0;oa=1317;break}if(!(q&18)){t=w;c[t>>2]=0;c[t+4>>2]=0;b[s>>1]=l&15904|4;t=0;q=0;break}else{q=Ng(a[o+(r*40|0)+10>>0]|0,c[o+(r*40|0)+12>>2]|0,c[o+(r*40|0)+16>>2]|0)|0;o=L()|0;l=b[s>>1]|0;oa=1317;break}}else{o=w;q=c[o>>2]|0;o=c[o+4>>2]|0;oa=1317}while(0);if((oa|0)==1317){oa=0;na=w;c[na>>2]=q;c[na+4>>2]=o;b[s>>1]=l&15904|4;if((q|0)==-1&(o|0)==2147483647){i=13;oa=1328;break c}else t=o}if(a[x>>0]&2){i=13;oa=1328;break c}l=rf;o=c[l>>2]|0;l=c[l+4>>2]|0;r=Sv(q|0,t|0,1,0)|0;s=L()|0;if(!((l|0)>(t|0)|(l|0)==(t|0)&o>>>0>q>>>0)){o=rf;c[o>>2]=r;c[o+4>>2]=s;o=r;l=s}na=w;c[na>>2]=o;c[na+4>>2]=l}if(a[x>>0]&2){o=z+40|0;l=0;do{Fb(8,rf);q=rf;q=Sv(c[q>>2]|0,c[q+4>>2]&1073741823|0,1,0)|0;i=L()|0;na=rf;c[na>>2]=q;c[na+4>>2]=i;i=Xg(c[o>>2]|0,0,q,i,0,Hd)|0;q=c[Hd>>2]|0;if(q|i|0)break;l=l+1|0}while(l>>>0<100);if(i|0){oa=1328;break c}if(!q){i=13;oa=1328;break c}else i=0}a[z+3>>0]=0;c[z+28>>2]=0;o=rf;q=c[o+4>>2]|0;l=y;c[l>>2]=c[o>>2];c[l+4>>2]=q;l=m;q=pa;o=qa;break}case 122:{i=c[p+8>>2]|0;s=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;w=pa+((c[p+12>>2]|0)*40|0)|0;t=c[w>>2]|0;w=c[w+4>>2]|0;na=qc;c[na>>2]=t;c[na+4>>2]=w;if((a[p+1>>0]|0)==-6?(c[Ca>>2]|0)!=0:0){q=c[(c[uf>>2]|0)+(a[s+1>>0]<<4)>>2]|0;r=c[p+16>>2]|0}else{q=0;r=0}x=p+2|0;l=b[x>>1]|0;if(l&1)c[rc>>2]=(c[rc>>2]|0)+1;if(l&32){na=zb;c[na>>2]=t;c[na+4>>2]=w}c[xb>>2]=c[pa+(i*40|0)+16>>2];c[yb>>2]=c[pa+(i*40|0)+12>>2];if(!(l&16))o=0;else o=c[s+32>>2]|0;if(!(b[pa+(i*40|0)+8>>1]&16384))i=0;else i=c[pa+(i*40|0)>>2]|0;c[Sb>>2]=i;c[rf>>2]=0;i=ah(c[s+40>>2]|0,rf,l&10,o)|0;a[s+3>>0]=0;c[s+28>>2]=0;if(i|0){oa=1345;break c}if(r|0)eb[c[Ca>>2]&127](c[Tb>>2]|0,(b[x>>1]&4)==0?18:23,q,c[r>>2]|0,t,w);l=m;q=pa;o=qa;i=0;break}case 123:{q=c[p+8>>2]|0;r=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;if((a[p+1>>0]|0)==-6?(c[Ca>>2]|0)!=0:0){i=c[(c[uf>>2]|0)+(a[r+1>>0]<<4)>>2]|0;l=c[p+16>>2]|0;if((b[p+2>>1]&2)!=0?(a[r+4>>0]|0)!=0:0){ma=c[r+40>>2]|0;bg(ma);ma=ma+32|0;na=c[ma+4>>2]|0;o=r+64|0;c[o>>2]=c[ma>>2];c[o+4>>2]=na;o=i}else o=i}else{o=0;l=0}i=bh(c[r+40>>2]|0,b[p+2>>1]&255)|0;c[r+28>>2]=0;c[r+32>>2]=0;if(i|0){oa=3855;break c}if(((q&1|0)!=0?(c[rc>>2]=(c[rc>>2]|0)+1,ge=c[Ca>>2]|0,(ge|0)!=0):0)?(c[l+36>>2]&32|0)==0:0){q=r+64|0;eb[ge&127](c[Tb>>2]|0,9,o,c[l>>2]|0,c[q>>2]|0,c[q+4>>2]|0);l=m;q=pa;o=qa;i=0}else{l=m;q=pa;o=qa;i=0}break}case 124:{l=c[rc>>2]|0;c[sc>>2]=l;c[tc>>2]=(c[tc>>2]|0)+l;c[rc>>2]=0;l=m;q=pa;o=qa;i=K;break}case 125:{t=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;w=c[p+12>>2]|0;x=c[p+16>>2]|0;s=c[t+40>>2]|0;r=s+32|0;i=c[r>>2]|0;t=c[t+44>>2]|0;if(!i){q=((e[t+6>>1]|0)*40|0)+56|0;o=c[t+12>>2]|0;C:do if(!o){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](q)|0;oa=1381;break}o=Wa[c[29356>>2]&127](q)|0;if((c[14985]|0)>>>0>>0)c[14985]=q;l=59064;i=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&i>>>0>0){na=c[14978]|0;ma=Tv(i|0,l|0,o|0,((o|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}i=Wa[c[29340>>2]&127](o)|0;if(!i){oa=1382;break c}l=Wa[c[29352>>2]&127](i)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[o+272>>2]|0){if(a[o+81>>0]|0){oa=1382;break c}}else{do if(!(0<0|(0==0?(e[o+276>>1]|0)>>>0>>0:0))){l=o+300|0;i=c[l>>2]|0;if(i|0){c[l>>2]=c[i>>2];oa=o+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=1381;break C}l=o+296|0;i=c[l>>2]|0;if(!i){i=o+292|0;break}else{c[l>>2]=c[i>>2];oa=o+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=1381;break C}}else i=o+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(o,q,0)|0;oa=1381}while(0);if((oa|0)==1381){oa=0;if(!i){oa=1382;break c}}c[i+4>>2]=i+16;c[i>>2]=t;c[r>>2]=i;b[i+8>>1]=x;o=i}else o=i;if(!(a[s+56>>0]|0)){l=c[s+36>>2]|0;i=l+8|0}else{l=c[s+20>>2]|0;na=c[l+12>>2]|0;l=c[(c[l+8>>2]|0)+4>>2]|0;i=c[na+(l*56|0)+32>>2]|0;l=na+(l*56|0)+20|0}_g(t,c[l>>2]|0,i,o);if((x|0)>0){l=c[o+4>>2]|0;i=0;do{if(b[l+(i*40|0)+8>>1]&1){i=0;oa=28;break d}i=i+1|0}while((i|0)<(x|0))}if(!(Fh(c[pa+(w*40|0)+12>>2]|0,c[pa+(w*40|0)+16>>2]|0,o,0)|0)){l=m;q=pa;o=qa;i=0}else{i=0;oa=28}break}case 126:{s=c[p+8>>2]|0;i=c[(c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0)+40>>2]|0;if(!(a[i+56>>0]|0)){i=c[i+36>>2]|0;r=i+8|0}else{i=c[i+20>>2]|0;na=c[i+12>>2]|0;i=c[(c[i+8>>2]|0)+4>>2]|0;r=c[na+(i*56|0)+32>>2]|0;i=na+(i*56|0)+20|0}i=c[i>>2]|0;if((c[pa+(s*40|0)+24>>2]|0)<(i|0)){if(Eg(pa+(s*40|0)|0,i,0)|0){i=7;oa=3855;break c}o=pa+(s*40|0)+8|0;l=o;o=b[o>>1]|0;q=c[pa+(s*40|0)+16>>2]|0}else{q=c[pa+(s*40|0)+20>>2]|0;c[pa+(s*40|0)+16>>2]=q;l=pa+(s*40|0)+8|0;o=b[l>>1]&13;b[l>>1]=o}c[pa+(s*40|0)+12>>2]=i;b[l>>1]=o&15904|16;ew(q|0,r|0,i|0)|0;c[(c[(c[oc>>2]|0)+(c[p+12>>2]<<2)>>2]|0)+28>>2]=0;l=m;q=pa;o=qa;i=0;break}case 127:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216)){b[l>>1]=4;q=i}else{lh(i)|0;q=i}i=c[(c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0)+40>>2]|0;bg(i);l=c[i+44>>2]|0;if(l>>>0>(c[Da>>2]|0)>>>0){oa=3891;break c}na=e[i+48>>1]|0;o=c[i+40>>2]|0;ma=(c[(c[i+116>>2]|0)+60>>2]|0)-o|0;if(l>>>0>((ma|0)<(na|0)?((ma|0)>0?ma:0):na)>>>0){i=uh(i,0,l,q)|0;if(i|0){oa=3855;break c}}else{c[q+16>>2]=o;b[q+8>>1]=4112;c[q+12>>2]=l}if((c[p+12>>2]|0)==0?(he=q+8|0,ie=b[he>>1]|0,(ie&4096)!=0):0){i=ie&65535;do if(!(i&18))i=ie;else{do if(!(i&16384))i=ie;else{l=q+12|0;i=(c[q>>2]|0)+(c[l>>2]|0)|0;if((i|0)<1)if(!(ie&16)){i=ie;break}else i=1;if(Eg(q,i,1)|0){l=p;j=h;i=zf;oa=3892;break a}gw((c[q+16>>2]|0)+(c[l>>2]|0)|0,0,c[q>>2]|0)|0;c[l>>2]=(c[l>>2]|0)+(c[q>>2]|0);i=b[he>>1]&-16897;b[he>>1]=i}while(0);if(c[q+24>>2]|0?(c[q+16>>2]|0)==(c[q+20>>2]|0):0)break;if(Jg(q)|0){l=p;j=h;i=zf;oa=3892;break a}i=b[he>>1]|0}while(0);b[he>>1]=i&-4097;l=m;q=pa;o=qa;i=0}else{l=m;q=pa;o=qa;i=0}break}case -128:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216)){b[l>>1]=4;w=i}else{lh(i)|0;w=i}l=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;q=l+2|0;D:do if(!(a[q>>0]|0)){do if(!(a[l+3>>0]|0)){if((a[l>>0]|0)!=2){o=l+40|0;i=c[o>>2]|0;do if(a[i>>0]|0){i=sh(l)|0;if(i|0){oa=1481;break c}if(!(a[q>>0]|0)){i=c[o>>2]|0;break}else{b[w+8>>1]=1;i=0;break D}}while(0);bg(i);o=i+32|0;l=c[o>>2]|0;o=c[o+4>>2]|0;i=rf;c[i>>2]=l;c[i+4>>2]=o;i=0;break}i=c[l+40>>2]|0;t=c[i>>2]|0;i=Xa[c[(c[t>>2]|0)+48>>2]&255](i,rf)|0;t=t+8|0;if(c[t>>2]|0){q=c[f>>2]|0;l=c[mf>>2]|0;E:do if(l|0){do if(q|0){if(c[q+480>>2]|0){Xd(q,l);break E}o=l;if((c[q+304>>2]|0)>>>0>o>>>0)break;if((c[q+308>>2]|0)>>>0<=o>>>0)break;na=q+300|0;c[l>>2]=c[na>>2];c[na>>2]=l;break E}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);r=c[t>>2]|0;F:do if(!r)l=0;else{s=(Eu(r)|0)+1|0;G:do if(!q){na=Sv(s|0,0,-1,-1)|0;ma=L()|0;if(ma>>>0>0|(ma|0)==0&na>>>0>2147483390){l=0;break F}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](s)|0;oa=1464;break}l=Wa[c[29356>>2]&127](s)|0;if((c[14985]|0)>>>0>>0)c[14985]=s;q=59064;o=c[q>>2]|0;q=c[q+4>>2]|0;if((q|0)>0|(q|0)==0&o>>>0>0){na=c[14978]|0;ma=Tv(o|0,q|0,l|0,((l|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break F}o=Wa[c[29352>>2]&127](l)|0;o=(c[14978]|0)+o|0;c[14978]=o;if(o>>>0>(c[14982]|0)>>>0)c[14982]=o;o=(c[14981]|0)+1|0;c[14981]=o;if(o>>>0<=(c[14987]|0)>>>0)break;c[14987]=o}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0){l=0;break F}}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){o=q+300|0;l=c[o>>2]|0;if(l|0){c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=1464;break G}o=q+296|0;l=c[o>>2]|0;if(!l){l=q+292|0;break}else{c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=1464;break G}}else l=q+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(q,s,0)|0;oa=1464}while(0);if((oa|0)==1464){oa=0;if(!l){l=0;break}}ew(l|0,r|0,s|0)|0}while(0);c[mf>>2]=l;l=c[t>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);c[t>>2]=0}if(i|0){oa=1481;break c}o=rf;i=0;l=c[o>>2]|0;o=c[o+4>>2]|0}else{o=l+64|0;l=c[o>>2]|0;o=c[o+4>>2]|0;i=rf;c[i>>2]=l;c[i+4>>2]=o;i=K}while(0);na=w;c[na>>2]=l;c[na+4>>2]=o}else{b[w+8>>1]=1;i=K}while(0);l=m;q=pa;o=qa;break}case -127:{i=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;a[i+2>>0]=1;c[i+28>>2]=0;if(!(a[i>>0]|0)){i=c[i+40>>2]|0;l=i+16|0;o=c[l>>2]|0;do if(o|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{na=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}while(0);c[l>>2]=0;a[i>>0]=1;l=m;q=pa;o=qa;i=K}else{l=m;q=pa;o=qa;i=K}break}case 32:case -126:{l=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;i=c[l+40>>2]|0;c[rf>>2]=0;if(z<<24>>24==-126?(c[l+32>>2]=-1,(a[i>>0]|0)==0):0){l=m;q=pa;o=qa;i=K;break d}r=$g(i,rf)|0;i=c[rf>>2]|0;a[l+2>>0]=i;a[l+3>>0]=0;c[l+28>>2]=0;if(r|0){oa=1492;break c}if((i|0)!=0&(c[p+8>>2]|0)>0){i=0;oa=28}else{l=m;q=pa;o=qa;i=0}break}case 33:{s=c[(c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0)+40>>2]|0;i=ch(s,rf)|0;if(i|0){oa=1519;break c}do if(!(c[rf>>2]|0)){if((a[s>>0]|0)==0?(ke=c[s+116>>2]|0,a[ke+8>>0]|0):0){i=e[ke+24>>1]|0;l=a[s+68>>0]|0;if(l<<24>>24>0){q=l<<24>>24;o=0;r=0;l=0;do{i=Yv(i|0,l|0,e[(c[s+120+(r<<2)>>2]|0)+24>>1]|0,0)|0;l=L()|0;o=o+1<<24>>24;r=o&255}while((r|0)<(q|0))}else l=0;if(l>>>0<0|(l|0)==0&i>>>0<8)if(l>>>0<0|(l|0)==0&i>>>0<2)i=0;else{o=40;do{o=(o&65535)+65526|0;i=cw(i|0,l|0,1)|0;l=L()|0}while(l>>>0<0|(l|0)==0&i>>>0<8);o=o&65535;oa=1514}else{if(l>>>0>0|(l|0)==0&i>>>0>255){o=40;do{o=(o&65535)+40|0;oa=i;i=bw(i|0,l|0,4)|0;na=l;l=L()|0}while(na>>>0>0|(na|0)==0&oa>>>0>4095);o=o&65535}else o=40;if(l>>>0>0|(l|0)==0&i>>>0>15){do{o=(o&65535)+10&65535;oa=i;i=bw(i|0,l|0,1)|0;na=l;l=L()|0}while(na>>>0>0|(na|0)==0&oa>>>0>31);oa=1514}else oa=1514}if((oa|0)==1514){oa=0;i=(o&65535)+65526+(e[3648+((i&7)<<1)>>1]|0)|0}if((c[p+12>>2]|0)>(i<<16>>16|0)){c[rf>>2]=1;break}}l=m;q=pa;o=qa;i=0;break d}while(0);i=0;oa=28;break}case 35:case 34:{c[uc>>2]=(c[uc>>2]|0)+1;oa=1521;break}case 36:{oa=1521;break}case 3:{l=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;i=c[l+40>>2]|0;if(a[i+56>>0]|0){c[rf>>2]=0;i=fi(c[i+20>>2]|0,rf)|0;i=(i|0)==0&(c[rf>>2]|0)!=0?101:i;oa=2160;break d}q=i+36|0;o=c[q>>2]|0;oa=o+4|0;c[q>>2]=c[oa>>2];c[oa>>2]=0;do if(!((o|0)==0|(c[i+40>>2]|0)!=0)){if(c[Ze>>2]|0){Xd(Cf,o);break}oa=o;if((c[_e>>2]|0)>>>0<=oa>>>0?(c[$e>>2]|0)>>>0>oa>>>0:0){c[o>>2]=c[af>>2];c[af>>2]=o;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{oa=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}while(0);i=(c[q>>2]|0)==0?101:0;oa=2160;break}case 5:case 4:{i=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;l=i;i=Xa[c[p+16>>2]&255](c[i+40>>2]|0,c[p+12>>2]|0)|0;oa=2160;break}case -124:case -125:{t=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;w=c[p+8>>2]|0;o=pa+(w*40|0)|0;s=p+2|0;if(b[s>>1]&1)c[rc>>2]=(c[rc>>2]|0)+1;q=pa+(w*40|0)+8|0;l=b[q>>1]|0;do if(!(l&16384))i=z;else{r=pa+(w*40|0)+12|0;i=(c[o>>2]|0)+(c[r>>2]|0)|0;if((i|0)<1)if(!(l&16)){i=z;break}else i=1;if(Eg(o,i,1)|0){oa=2221;break c}gw((c[pa+(w*40|0)+16>>2]|0)+(c[r>>2]|0)|0,0,c[o>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+(c[o>>2]|0);b[q>>1]=b[q>>1]&-16897;i=a[p>>0]|0}while(0);if(i<<24>>24==-125){t=c[t+40>>2]|0;F=pa+(w*40|0)+16|0;l=c[F>>2]|0;o=l+1|0;na=a[o>>0]|0;i=na&255;do if(na<<24>>24<=-1){q=d[l+2>>0]|0;if(!(q&128)){i=i<<7&16256|q;break}l=d[l+3>>0]|0;if(!(l&128)){i=(i<<14|l)&2080895|q<<7&16256;break}else{Of(o,rf)|0;na=rf;i=c[na>>2]|0;i=((i|0)==(i|0)?0==(c[na+4>>2]|0):0)?i:-1;break}}while(0);do if(!((i|0)!=7&(i+-1|0)>>>0<9)){l=t+60|0;if((i|0)<11|(i&1|0)==0){a[l>>0]=0;break}else{a[l>>0]=a[l>>0]&2;break}}else{na=t+60|0;a[na>>0]=a[na>>0]&1}while(0);E=pa+(w*40|0)+12|0;D=c[E>>2]|0;o=1;i=D;l=((D|0)<0)<<31>>31;while(1){i=bw(i|0,l|0,7)|0;l=L()|0;if((i|0)==0&(l|0)==0)break;else o=o+1|0}s=D+8|0;q=o+D|0;B=t+4|0;l=c[B>>2]|0;do if(!l)i=0;else{if(!(c[t+40>>2]|0)){i=t+44|0;na=c[i>>2]|0;if((na|0)<=(l|0)?!(c[14768]|0?(na|0)>(c[t>>2]|0):0):0){i=0;break}}else{na=c[t+48>>2]|0;if((na|0)==0|(na+s|0)<=(l|0)){i=0;break}i=t+44|0}na=Vh(t)|0;c[i>>2]=0;c[t+48>>2]=0;i=na}while(0);o=t+36|0;l=t+44|0;c[l>>2]=(c[l>>2]|0)+q;l=t+8|0;if((q|0)>(c[l>>2]|0))c[l>>2]=q;A=t+40|0;l=c[A>>2]|0;r=l;if(l){C=t+48|0;q=c[C>>2]|0;y=q+s|0;z=t+52|0;s=c[z>>2]|0;if((y|0)>(s|0)){q=c[o>>2]|0;x=((y|0)<0)<<31>>31;w=s;t=((s|0)<0)<<31>>31;do{w=cw(w|0,t|0,1)|0;t=L()|0}while((t|0)<(x|0)|(t|0)==(x|0)&w>>>0>>0);s=(q|0)==0?-1:q-r|0;q=c[B>>2]|0;r=((q|0)<0)<<31>>31;na=(t|0)>(r|0)|(t|0)==(r|0)&w>>>0>q>>>0;q=na?q:w;r=na?r:t;na=(r|0)<(x|0)|(r|0)==(x|0)&q>>>0>>0;q=na?y:q;r=sb(l,q,na?x:r)|0;if(!r){oa=2221;break c}if((s|0)>-1)c[o>>2]=r+s;c[A>>2]=r;c[z>>2]=q;l=r;q=c[C>>2]|0}l=l+q|0;c[C>>2]=q+(D+15&-8);q=c[o>>2]|0;if(q)c[l+4>>2]=q-r}else{na=Sv(s|0,((s|0)<0)<<31>>31|0,-1,-1)|0;ma=L()|0;if(ma>>>0>0|(ma|0)==0&na>>>0>2147483390){oa=2221;break c}do if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](s)|0;if(!l){oa=2221;break c}}else{r=Wa[c[29356>>2]&127](s)|0;if((c[14985]|0)>>>0>>0)c[14985]=s;q=59064;l=c[q>>2]|0;q=c[q+4>>2]|0;if((q|0)>0|(q|0)==0&l>>>0>0){na=c[14978]|0;ma=Tv(l|0,q|0,r|0,((r|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}l=Wa[c[29340>>2]&127](r)|0;if(!l){oa=2221;break c}q=Wa[c[29352>>2]&127](l)|0;q=(c[14978]|0)+q|0;c[14978]=q;if(q>>>0>(c[14982]|0)>>>0)c[14982]=q;q=(c[14981]|0)+1|0;c[14981]=q;if(q>>>0<=(c[14987]|0)>>>0)break;c[14987]=q}while(0);c[l+4>>2]=c[o>>2]}ew(l+8|0,c[F>>2]|0,c[E>>2]|0)|0;c[l>>2]=c[E>>2];c[o>>2]=l}else{na=c[pa+(w*40|0)+12>>2]|0;i=Ab;c[i>>2]=na;c[i+4>>2]=((na|0)<0)<<31>>31;c[Hd>>2]=c[pa+(w*40|0)+16>>2];c[Bb>>2]=pa+((c[p+12>>2]|0)*40|0);b[Cb>>1]=c[p+16>>2];i=e[s>>1]|0;if(!(i&16))l=0;else l=c[t+32>>2]|0;i=ah(c[t+40>>2]|0,Hd,i&10,l)|0;c[t+28>>2]=0}if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case -123:{l=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;o=c[l+40>>2]|0;c[Hd>>2]=c[l+44>>2];b[vc>>1]=c[p+12>>2];a[wc>>0]=0;c[xc>>2]=pa+((c[p+8>>2]|0)*40|0);i=Xg(o,Hd,0,0,0,rf)|0;if(i|0){oa=2226;break c}if((c[rf>>2]|0)==0?(me=bh(o,4)|0,me|0):0){i=me;oa=2226;break c}c[l+28>>2]=0;c[l+32>>2]=0;l=m;q=pa;o=qa;i=0;break}case -121:case -122:{s=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;i=s+40|0;if(a[c[i>>2]>>0]|0?(ne=sh(s)|0,ne|0):0){i=ne;oa=3855;break c}if(a[s+2>>0]|0){i=c[p+8>>2]|0;l=pa+(i*40|0)+8|0;if(!(b[l>>1]&9216)){b[l>>1]=1;l=m;q=pa;o=qa;i=0;break d}else{Dg(pa+(i*40|0)|0);l=m;q=pa;o=qa;i=0;break d}}i=c[i>>2]|0;bg(i);l=c[i+44>>2]|0;b[jb>>1]=0;c[kb>>2]=Cf;c[lb>>2]=0;na=e[i+48>>1]|0;o=c[i+40>>2]|0;ma=(c[(c[i+116>>2]|0)+60>>2]|0)-o|0;if(l>>>0>((ma|0)<(na|0)?((ma|0)>0?ma:0):na)>>>0){i=uh(i,0,l,Hd)|0;if(i|0){oa=2256;break c}o=c[Eb>>2]|0}else{c[Eb>>2]=o;b[jb>>1]=4112;c[Gb>>2]=l}na=a[o>>0]|0;i=na&255;do if(na<<24>>24<=-1){l=d[o+1>>0]|0;if(!(l&128)){i=i<<7&16256|l;oa=2241;break}q=d[o+2>>0]|0;if(q&128){Of(o,rf)|0;na=rf;i=c[na>>2]|0;if((i|0)==(i|0)?0==(c[na+4>>2]|0):0){oa=2241;break}else{i=-1;break}}else{i=(i<<14|q)&2080895|l<<7&16256;oa=2241;break}}else oa=2241;while(0);if((oa|0)==2241){oa=0;if(i>>>0<3){oa=2253;break c}}if(i>>>0>(c[Gb>>2]|0)>>>0){oa=2253;break c}o=c[Eb>>2]|0;r=o+(i+-1)|0;na=a[r>>0]|0;l=na&255;do if(na<<24>>24<=-1){o=d[o+i>>0]|0;if(!(o&128)){l=l<<7&16256|o;break}q=d[r+2>>0]|0;if(!(q&128)){l=(l<<14|q)&2080895|o<<7&16256;break}else{Of(r,rf)|0;na=rf;l=c[na>>2]|0;l=((l|0)==(l|0)?0==(c[na+4>>2]|0):0)?l:-1;break}}while(0);if((l|0)==7|(l+-1|0)>>>0>8){oa=2253;break c}o=d[3520+l>>0]|0;q=c[Gb>>2]|0;if(q>>>0<(i+o|0)>>>0){oa=2253;break c}Ug((c[Eb>>2]|0)+(q-o)|0,l,Td)|0;q=Td;o=c[q>>2]|0;q=c[q+4>>2]|0;if(!((b[jb>>1]&9216)==0&(c[lb>>2]|0)==0))Cg(Hd);if((a[p>>0]|0)==-122){l=c[(c[oc>>2]|0)+(c[p+12>>2]<<2)>>2]|0;a[l+2>>0]=0;i=l+64|0;c[i>>2]=o;c[i+4>>2]=q;a[l+3>>0]=1;c[l+24>>2]=c[p+16>>2];c[l+36>>2]=s;l=m;q=pa;o=qa;i=0;break d}na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;l=i;c[l>>2]=o;c[l+4>>2]=q;l=m;q=pa;o=qa;i=0;break}case 40:case 39:case 38:case 37:{o=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;c[Hd>>2]=c[o+44>>2];b[zc>>1]=c[p+16>>2];a[Ac>>0]=((z&255)<39)<<31>>31;c[Bc>>2]=pa+((c[p+12>>2]|0)*40|0);o=c[o+40>>2]|0;bg(o);i=c[o+44>>2]|0;if((i|0)<1){oa=2267;break c}b[Ea>>1]=0;c[Fa>>2]=Cf;c[Ga>>2]=0;na=e[o+48>>1]|0;l=c[o+40>>2]|0;ma=(c[(c[o+116>>2]|0)+60>>2]|0)-l|0;if(i>>>0>((ma|0)<(na|0)?((ma|0)>0?ma:0):na)>>>0){i=uh(o,0,i,rf)|0;if(i|0){oa=2274;break c}i=c[nb>>2]|0;l=c[mb>>2]|0}else{c[mb>>2]=l;b[Ea>>1]=4112;c[nb>>2]=i}i=Fh(i,l,Hd,0)|0;if(!((b[Ea>>1]&9216)==0&(c[Ga>>2]|0)==0))Cg(rf);if((((a[p>>0]&1)==0?i+1|0:0-i|0)|0)>0){i=0;oa=28}else{l=m;q=pa;o=qa;i=0}break}case -120:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216)){b[l>>1]=4;A=i}else{lh(i)|0;A=i}B=A+8|0;b[B>>1]=1;if((c[Ha>>2]|0)>((c[ad>>2]|0)+1|0)){oa=2280;break c}C=c[p+12>>2]|0;x=c[(c[uf>>2]|0)+(C<<4)+4>>2]|0;z=p+4|0;s=c[z>>2]|0;y=x+4|0;w=c[y>>2]|0;c[w+4>>2]=c[x>>2];if((c[w+44>>2]|0)>>>0>>0){oa=2282;break c}l=c[w>>2]|0;l=Za[c[l+204>>2]&127](l,s,rf,0)|0;if(l|0){oa=2286;break c}i=c[rf>>2]|0;r=c[i+8>>2]|0;q=r+4|0;if((c[q>>2]|0)!=(s|0)){c[r+56>>2]=c[i+4>>2];c[r+72>>2]=i;c[r+52>>2]=w;c[q>>2]=s;a[r+9>>0]=(s|0)==1?100:0}o=c[y>>2]|0;c[o+4>>2]=c[x>>2];i=c[o+8>>2]|0;H:do if(i|0){I:do if(s)while(1){if((c[i+64>>2]|0)==(s|0))break I;i=c[i+24>>2]|0;if(!i)break H}while(0);i=$f(i,s,0)|0;if(i|0){j=i;oa=2301;break c}}while(0);l=x+11|0;if(a[l>>0]|0?(a[l>>0]=0,kd=c[(c[y>>2]|0)+8>>2]|0,kd|0):0){i=kd;do{do if(a[i+1>>0]&16){a[l>>0]=1;if((c[i+64>>2]|0)!=(s|0))break;a[i>>0]=1}while(0);i=c[i+24>>2]|0}while((i|0)!=0)}i=zh(o,s,0,0)|0;if(i|0){j=i;oa=2301;break c}if(!(a[w+17>>0]|0)){i=Bh(c[r+52>>2]|0,r,c[q>>2]|0)|0;do if(r|0){l=c[r+72>>2]|0;if(!(b[l+28>>1]&32)){Df(l);break}else{na=c[l+20>>2]|0;ma=na+120|0;c[ma>>2]=(c[ma>>2]|0)+-1;na=na+136|0;c[l+16>>2]=c[na>>2];c[na>>2]=l;break}}while(0);b[B>>1]=4;na=A;c[na>>2]=0;c[na+4>>2]=0;if(!i){l=m;q=pa;o=qa;i=0;break d}else{oa=3855;break c}}t=c[y>>2]|0;c[t+4>>2]=c[x>>2];t=c[(c[t+12>>2]|0)+56>>2]|0;t=d[t+53>>0]<<16|d[t+52>>0]<<24|d[t+54>>0]<<8|d[t+55>>0];if((t|0)==(s|0)){l=Bh(c[r+52>>2]|0,r,c[q>>2]|0)|0;do if(r|0){i=c[r+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{na=c[i+20>>2]|0;ma=na+120|0;c[ma>>2]=(c[ma>>2]|0)+-1;na=na+136|0;c[i+16>>2]=c[na>>2];c[na>>2]=i;break}}while(0);if(!l)i=0;else{i=0;j=l;oa=2353;break c}}else{do if(r|0){i=c[r+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{na=c[i+20>>2]|0;ma=na+120|0;c[ma>>2]=(c[ma>>2]|0)+-1;na=na+136|0;c[i+16>>2]=c[na>>2];c[na>>2]=i;break}}while(0);l=c[w>>2]|0;l=Za[c[l+204>>2]&127](l,t,rf,0)|0;if(l|0){oa=2319;break c}i=c[rf>>2]|0;o=c[i+8>>2]|0;l=o+4|0;if((c[l>>2]|0)!=(t|0)){c[o+56>>2]=c[i+4>>2];c[o+72>>2]=i;c[o+52>>2]=w;c[l>>2]=t;a[o+9>>0]=(t|0)==1?100:0}l=gg(w,o,1,0,s,0)|0;do if(o|0){i=c[o+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{na=c[i+20>>2]|0;ma=na+120|0;c[ma>>2]=(c[ma>>2]|0)+-1;na=na+136|0;c[i+16>>2]=c[na>>2];c[na>>2]=i;break}}while(0);if(l|0){i=0;j=l;oa=2353;break c}l=c[w>>2]|0;l=Za[c[l+204>>2]&127](l,t,rf,0)|0;if(l|0){oa=2329;break c}i=c[rf>>2]|0;o=c[i+8>>2]|0;l=o+4|0;if((c[l>>2]|0)==(t|0)){l=o+72|0;i=c[o+52>>2]|0}else{c[o+56>>2]=c[i+4>>2];na=o+72|0;c[na>>2]=i;c[o+52>>2]=w;c[l>>2]=t;a[o+9>>0]=(t|0)==1?100:0;l=na;i=w}o=Bh(i,o,t)|0;i=c[l>>2]|0;if(!(b[i+28>>1]&32))Df(i);else{na=c[i+20>>2]|0;ma=na+120|0;c[ma>>2]=(c[ma>>2]|0)+-1;na=na+136|0;c[i+16>>2]=c[na>>2];c[na>>2]=i}if(!o)i=t;else{i=0;j=o;oa=2353;break c}}q=1073741824/((c[w+32>>2]|0)>>>0)|0;r=q+1|0;o=w+36|0;l=t;while(1){s=l+-1|0;if((s|0)!=(r|0)){if(s>>>0<2)l=0;else{l=l+-3|0;l=l-((l>>>0)%(((((c[o>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;l=((l+1|0)==(q|0)?3:2)+l|0}if((l|0)!=(s|0))break}l=s}o=c[y>>2]|0;c[o+4>>2]=c[x>>2];o=c[o+12>>2]|0;l=c[o+56>>2]|0;o=c[o+72>>2]|0;q=c[o+20>>2]|0;do if(!(b[o+28>>1]&4))oa=2344;else{if((c[q+24>>2]|0)>>>0<(c[o+24>>2]|0)>>>0){oa=2344;break}if(!(c[q+96>>2]|0))break;j=Ve(o)|0;oa=2348}while(0);do if((oa|0)==2344){j=c[q+40>>2]|0;if(j|0){oa=2353;break c}if((c[q+148>>2]|0)>>>0>(c[q+152>>2]|0)>>>0){j=Wf(o)|0;oa=2348;break}else{j=Xf(o)|0;oa=2348;break}}while(0);if((oa|0)==2348?(oa=0,j|0):0){oa=2353;break c}a[l+52>>0]=s>>>24;a[l+53>>0]=s>>>16;a[l+54>>0]=s>>>8;a[l+55>>0]=s;b[B>>1]=4;na=A;c[na>>2]=i;c[na+4>>2]=((i|0)<0)<<31>>31;if(!i){l=m;q=pa;o=qa;i=0}else{q=c[z>>2]|0;o=c[(c[uf>>2]|0)+(C<<4)+12>>2]|0;k=c[o+16>>2]|0;if(k|0)do{l=(c[k+8>>2]|0)+28|0;if((c[l>>2]|0)==(i|0))c[l>>2]=q;k=c[k>>2]|0}while((k|0)!=0);k=c[o+32>>2]|0;if(k|0)do{l=(c[k+8>>2]|0)+44|0;if((c[l>>2]|0)==(i|0))c[l>>2]=q;k=c[k>>2]|0}while((k|0)!=0);k=C+1&255;l=m;q=pa;o=qa;i=0}break}case -119:{c[rf>>2]=0;l=c[(c[uf>>2]|0)+(c[p+8>>2]<<4)+4>>2]|0;r=c[p+4>>2]|0;t=p+12|0;q=(c[t>>2]|0)==0?0:rf;o=l+4|0;s=c[o>>2]|0;c[s+4>>2]=c[l>>2];i=c[s+8>>2]|0;J:do if(i){K:do if(r)while(1){if((c[i+64>>2]|0)==(r|0))break K;i=c[i+24>>2]|0;if(!i){oa=2373;break J}}while(0);i=$f(i,r,0)|0;if(!i)oa=2373}else oa=2373;while(0);if((oa|0)==2373){oa=0;l=l+11|0;if(a[l>>0]|0?(a[l>>0]=0,ld=c[(c[o>>2]|0)+8>>2]|0,ld|0):0){i=ld;do{if(a[i+1>>0]&16?(a[l>>0]=1,(c[i+64>>2]|0)==(r|0)):0)a[i>>0]=1;i=c[i+24>>2]|0}while((i|0)!=0)}i=zh(s,r,0,q)|0}l=c[t>>2]|0;if(l|0?(oe=c[rf>>2]|0,c[rc>>2]=(c[rc>>2]|0)+oe,pe=pa+(l*40|0)|0,(l|0)>0):0){la=pe;la=Sv(c[la>>2]|0,c[la+4>>2]|0,oe|0,((oe|0)<0)<<31>>31|0)|0;ma=L()|0;na=pe;c[na>>2]=la;c[na+4>>2]=ma}if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case -118:{i=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;if((a[i>>0]|0)==1){wg(Cf,c[i+40>>2]|0);l=m;q=pa;o=qa;i=K;break d}q=c[i+40>>2]|0;l=c[q+8>>2]|0;q=c[q+64>>2]|0;o=l+4|0;r=c[o>>2]|0;c[r+4>>2]=c[l>>2];i=c[r+8>>2]|0;L:do if(i|0){M:do if(q)while(1){if((c[i+64>>2]|0)==(q|0))break M;i=c[i+24>>2]|0;if(!i)break L}while(0);i=$f(i,q,0)|0;if(i|0){oa=3855;break c}}while(0);l=l+11|0;if(a[l>>0]|0?(a[l>>0]=0,jd=c[(c[o>>2]|0)+8>>2]|0,jd|0):0){i=jd;do{if(a[i+1>>0]&16?(a[l>>0]=1,(c[i+64>>2]|0)==(q|0)):0)a[i>>0]=1;i=c[i+24>>2]|0}while((i|0)!=0)}i=zh(r,q,0,0)|0;if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case -117:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;c[rf>>2]=0;l=Wg(c[(c[uf>>2]|0)+(c[p+4>>2]<<4)+4>>2]|0,rf,c[p+12>>2]|0)|0;if(l|0){oa=2406;break c}q=c[rf>>2]|0;l=i;c[l>>2]=q;c[l+4>>2]=((q|0)<0)<<31>>31;l=m;q=pa;o=qa;i=0;break}case -116:{a[Cc>>0]=(a[Cc>>0]|0)+1<<24>>24;i=nd(Cf,c[p+16>>2]|0,0,0,0)|0;a[Cc>>0]=(a[Cc>>0]|0)+-1<<24>>24;if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case -115:{i=c[p+4>>2]|0;l=p+16|0;if(!(c[l>>2]|0)){dh(c[(c[uf>>2]|0)+(i<<4)+12>>2]|0);c[hf>>2]=c[hf>>2]&-17;i=eh(Cf,i,mf,1)|0;c[hf>>2]=c[hf>>2]|1;na=(d[vf>>0]|d[vf+1>>0]<<8)&-4;a[vf>>0]=na;a[vf+1>>0]=na>>8}else{c[rf>>2]=Cf;c[Ia>>2]=i;c[Ja>>2]=mf;c[Ka>>2]=0;l=c[l>>2]|0;c[Ne>>2]=c[(c[uf>>2]|0)+(i<<4)>>2];c[Ne+4>>2]=34585;c[Ne+8>>2]=l;l=dd(Cf,34599,Ne)|0;if(!l){oa=2424;break c}a[ob>>0]=1;c[pb>>2]=0;c[qb>>2]=0;i=nd(Cf,l,77,rf,0)|0;i=(i|0)==0?c[pb>>2]|0:i;if(!(i|c[qb>>2])){c[Oe>>2]=32306;c[Oe+4>>2]=89378;c[Oe+8>>2]=31517;Db(11,32001,Oe);i=11}do if(!(c[Ze>>2]|0)){na=l;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[l>>2]=c[af>>2];c[af>>2]=l;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}else Xd(Cf,l);while(0);a[ob>>0]=0}switch(i|0){case 7:{oa=2424;break c}case 0:break;default:{oa=2425;break c}}l=m;q=pa;o=qa;i=0;break}case -114:{i=gh(Cf,c[p+4>>2]|0)|0;if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case -113:{i=mi((c[(c[uf>>2]|0)+(c[p+4>>2]<<4)+12>>2]|0)+8|0,c[p+16>>2]|0,0)|0;do if(i|0){if(c[Ze>>2]|0){Vi(Cf,i);break}ma=i+32|0;na=(c[ma>>2]|0)+-1|0;c[ma>>2]=na;if(!na)Vi(Cf,i)}while(0);c[hf>>2]=c[hf>>2]|1;l=m;q=pa;o=qa;i=K;break}case -112:{o=mi((c[(c[uf>>2]|0)+(c[p+4>>2]<<4)+12>>2]|0)+24|0,c[p+16>>2]|0,0)|0;do if(o|0){l=(c[o+12>>2]|0)+8|0;i=c[l>>2]|0;if((i|0)==(o|0)){c[l>>2]=c[o+20>>2];i=c[o+36>>2]|0;if(i|0)ni(Cf,i);i=c[o+40>>2]|0;if(i|0)ri(Cf,i);i=c[o+16>>2]|0;do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}na=i;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[i>>2]=c[af>>2];c[af>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);na=o+55|0;N:do if((d[na>>0]|d[na+1>>0]<<8)&16?(qe=c[o+32>>2]|0,qe|0):0){if(c[Ze>>2]|0){Xd(Cf,qe);break}i=qe;do if((c[_e>>2]|0)>>>0<=i>>>0){if((c[$e>>2]|0)>>>0<=i>>>0)break;c[qe>>2]=c[af>>2];c[af>>2]=qe;break N}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](qe);break}else{na=Wa[c[29352>>2]&127](qe)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](qe);break}}while(0);if(c[Ze>>2]|0){Xd(Cf,o);break}na=o;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[o>>2]=c[af>>2];c[af>>2]=o;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{na=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}O:do if(i|0){while(1){l=c[i+20>>2]|0;if((l|0)==(o|0))break;if(!l)break O;else i=l}c[i+20>>2]=c[o+20>>2]}while(0);i=c[o+36>>2]|0;if(i|0)ni(Cf,i);i=c[o+40>>2]|0;if(i|0)ri(Cf,i);i=c[o+16>>2]|0;do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}na=i;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[i>>2]=c[af>>2];c[af>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);na=o+55|0;P:do if((d[na>>0]|d[na+1>>0]<<8)&16?(re=c[o+32>>2]|0,re|0):0){if(c[Ze>>2]|0){Xd(Cf,re);break}i=re;do if((c[_e>>2]|0)>>>0<=i>>>0){if((c[$e>>2]|0)>>>0<=i>>>0)break;c[re>>2]=c[af>>2];c[af>>2]=re;break P}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](re);break}else{na=Wa[c[29352>>2]&127](re)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](re);break}}while(0);if(c[Ze>>2]|0){Xd(Cf,o);break}na=o;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[o>>2]=c[af>>2];c[af>>2]=o;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{na=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}while(0);c[hf>>2]=c[hf>>2]|1;l=m;q=pa;o=qa;i=K;break}case -110:{x=mi((c[(c[uf>>2]|0)+(c[p+4>>2]<<4)+12>>2]|0)+40|0,c[p+16>>2]|0,0)|0;if(!x){l=m;q=pa;o=qa;i=K}else{q=c[x+20>>2]|0;Q:do if((q|0)==(c[x+24>>2]|0)){w=x+4|0;t=c[w>>2]|0;r=c[q+20>>2]|0;if(!r){l=q+12|0;i=q+16|0}else{l=a[t>>0]|0;if(!(l<<24>>24))i=0;else{i=0;o=t;do{o=o+1|0;i=G(i+(d[208+(l&255)>>0]|0)|0,-1640531535)|0;l=a[o>>0]|0}while(l<<24>>24!=0)}i=(i>>>0)%((c[q+8>>2]|0)>>>0)|0;l=r+(i<<3)|0;i=r+(i<<3)+4|0}l=c[l>>2]|0;R:do if(!l)i=59292;else{s=d[208+(d[t>>0]|0)>>0]|0;while(1){i=c[i>>2]|0;l=l+-1|0;q=c[i+12>>2]|0;na=a[q>>0]|0;o=(d[208+(na&255)>>0]|0)-s|0;if(!(na<<24>>24==0|(o|0)!=0)){r=t;do{q=q+1|0;r=r+1|0;na=a[q>>0]|0;o=(d[208+(na&255)>>0]|0)-(d[208+(d[r>>0]|0)>>0]|0)|0}while(!(na<<24>>24==0|(o|0)!=0))}if(!o)break R;if(!l){i=59292;break}}}while(0);i=(c[i+8>>2]|0)+68|0;while(1){na=c[i>>2]|0;l=na+32|0;if((na|0)==(x|0))break;else i=l}c[i>>2]=c[l>>2];Xi(Cf,c[x+28>>2]|0);i=c[x>>2]|0;do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}na=i;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[i>>2]=c[af>>2];c[af>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);i=c[w>>2]|0;do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}na=i;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[i>>2]=c[af>>2];c[af>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);i=c[x+12>>2]|0;if(i|0)ni(Cf,i);r=c[x+16>>2]|0;S:do if(r|0){q=r+4|0;i=c[r>>2]|0;if((c[q>>2]|0)>0){o=0;do{i=c[i+(o<<3)>>2]|0;T:do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}l=i;do if((c[_e>>2]|0)>>>0<=l>>>0){if((c[$e>>2]|0)>>>0<=l>>>0)break;c[i>>2]=c[af>>2];c[af>>2]=i;break T}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);o=o+1|0;i=c[r>>2]|0}while((o|0)<(c[q>>2]|0))}U:do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}l=i;do if((c[_e>>2]|0)>>>0<=l>>>0){if((c[$e>>2]|0)>>>0<=l>>>0)break;c[i>>2]=c[af>>2];c[af>>2]=i;break U}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);if(c[Ze>>2]|0){Xd(Cf,r);break}i=r;do if((c[_e>>2]|0)>>>0<=i>>>0){if((c[$e>>2]|0)>>>0<=i>>>0)break;c[r>>2]=c[af>>2];c[af>>2]=r;break S}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{na=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);if(c[Ze>>2]|0){Xd(Cf,x);break}i=x;do if((c[_e>>2]|0)>>>0<=i>>>0){if((c[$e>>2]|0)>>>0<=i>>>0)break;c[x>>2]=c[af>>2];c[af>>2]=x;break Q}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](x);break}else{na=Wa[c[29352>>2]&127](x)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](x);break}}else{Xi(Cf,c[x+28>>2]|0);i=c[x>>2]|0;do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}na=i;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[i>>2]=c[af>>2];c[af>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);i=c[x+4>>2]|0;do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}na=i;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[i>>2]=c[af>>2];c[af>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);i=c[x+12>>2]|0;if(i|0)ni(Cf,i);r=c[x+16>>2]|0;V:do if(r|0){q=r+4|0;i=c[r>>2]|0;if((c[q>>2]|0)>0){o=0;do{i=c[i+(o<<3)>>2]|0;W:do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}l=i;do if((c[_e>>2]|0)>>>0<=l>>>0){if((c[$e>>2]|0)>>>0<=l>>>0)break;c[i>>2]=c[af>>2];c[af>>2]=i;break W}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);o=o+1|0;i=c[r>>2]|0}while((o|0)<(c[q>>2]|0))}X:do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}l=i;do if((c[_e>>2]|0)>>>0<=l>>>0){if((c[$e>>2]|0)>>>0<=l>>>0)break;c[i>>2]=c[af>>2];c[af>>2]=i;break X}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);if(c[Ze>>2]|0){Xd(Cf,r);break}i=r;do if((c[_e>>2]|0)>>>0<=i>>>0){if((c[$e>>2]|0)>>>0<=i>>>0)break;c[r>>2]=c[af>>2];c[af>>2]=r;break V}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{na=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);if(c[Ze>>2]|0){Xd(Cf,x);break}na=x;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[x>>2]=c[af>>2];c[af>>2]=x;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](x);break}else{na=Wa[c[29352>>2]&127](x)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](x);break}}while(0);c[hf>>2]=c[hf>>2]|1;l=m;q=pa;o=qa;i=K}break}case -109:{w=c[p+8>>2]|0;C=c[p+4>>2]|0;D=pa+(C*40|0)|0;i=c[(c[uf>>2]|0)+(e[p+2>>1]<<4)+4>>2]|0;x=(c[p+16>>2]|0)+4|0;E=pa+((c[p+12>>2]|0)*40|0)|0;na=(c[E>>2]|0)+1|0;z=c[i+4>>2]|0;y=z+4|0;B=(c[y>>2]|0)+32|0;A=c[B>>2]|0;B=c[B+4>>2]|0;c[y>>2]=c[i>>2];c[Td>>2]=z;c[Dc>>2]=c[z>>2];i=c[z+44>>2]|0;c[Ec>>2]=i;c[Fc>>2]=na;c[Jc>>2]=0;c[Kc>>2]=0;c[Gc>>2]=0;c[Gc+4>>2]=0;c[Gc+8>>2]=0;c[Gc+12>>2]=0;c[Gc+16>>2]=0;c[Mc>>2]=Yd;c[Lc>>2]=0;c[Nc>>2]=100;c[Oc>>2]=1e9;c[Pc>>2]=0;a[Qc>>0]=0;a[Rc>>0]=1;Y:do if(i){i=i>>>3;q=i+1|0;if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](q)|0;if(!i)oa=2649}else{o=Wa[c[29356>>2]&127](q)|0;if((c[14985]|0)>>>0<=i>>>0)c[14985]=q;l=59064;i=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&i>>>0>0){na=c[14978]|0;ma=Tv(i|0,l|0,o|0,((o|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}i=Wa[c[29340>>2]&127](o)|0;if(i){l=Wa[c[29352>>2]&127](i)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else oa=2649}if((oa|0)==2649){c[Jc>>2]=0;c[Hc>>2]=1;oa=2710;break}gw(i|0,0,q|0)|0;c[Jc>>2]=i;t=z+32|0;q=c[t>>2]|0;if((c[14813]|0)>=(q|0)?(se=c[14819]|0,(se|0)!=0):0){c[14819]=c[se>>2];na=c[14820]|0;c[14820]=na+-1;c[14821]=(na|0)<=(c[14815]|0)&1;if((c[14986]|0)>>>0>>0)c[14986]=q;i=(c[14979]|0)+1|0;c[14979]=i;if(i>>>0>(c[14983]|0)>>>0){c[14983]=i;i=se}else i=se}else oa=2656;Z:do if((oa|0)==2656){oa=0;na=Sv(q|0,((q|0)<0)<<31>>31|0,-1,-1)|0;ma=L()|0;_:do if(!(ma>>>0>0|(ma|0)==0&na>>>0>2147483390)){do if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](q)|0;if(!i)break _}else{l=Wa[c[29356>>2]&127](q)|0;if((c[14985]|0)>>>0>>0)c[14985]=q;i=59064;o=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&o>>>0>0){na=c[14978]|0;ma=Tv(o|0,i|0,l|0,((l|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}i=Wa[c[29340>>2]&127](l)|0;if(!i)break _;l=Wa[c[29352>>2]&127](i)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0<=(c[14987]|0)>>>0)break;c[14987]=l}while(0);l=Wa[c[29352>>2]&127](i)|0;if((c[14986]|0)>>>0>>0)c[14986]=q;l=(c[14980]|0)+l|0;c[14980]=l;if(l>>>0<=(c[14984]|0)>>>0)break Z;c[14984]=l;break Z}while(0);c[Kc>>2]=0;c[Hc>>2]=1;break Y}while(0);c[Kc>>2]=i;i=(1073741824/((c[t>>2]|0)>>>0)|0)+1|0;if(i>>>0<=(c[Ec>>2]|0)>>>0){na=(c[Jc>>2]|0)+(i>>>3)|0;a[na>>0]=1<<(i&7)|d[na>>0]}c[Ic>>2]=35261;o=z+12|0;s=c[(c[o>>2]|0)+56>>2]|0;si(Td,1,d[s+33>>0]<<16|d[s+32>>0]<<24|d[s+34>>0]<<8|d[s+35>>0],d[s+37>>0]<<16|d[s+36>>0]<<24|d[s+38>>0]<<8|d[s+39>>0]);c[Ic>>2]=0;s=z+17|0;if(!(a[s>>0]|0)){na=c[(c[o>>2]|0)+56>>2]|0;if(d[na+65>>0]<<16|d[na+64>>0]<<24|d[na+66>>0]<<8|d[na+67>>0]|0)ti(Td,35322,Re)}else{if((w|0)>0){i=0;l=0;do{na=c[x+(i<<2)>>2]|0;l=(l|0)<(na|0)?na:l;i=i+1|0}while((i|0)!=(w|0))}else l=0;i=c[(c[o>>2]|0)+56>>2]|0;i=d[i+53>>0]<<16|d[i+52>>0]<<24|d[i+54>>0]<<8|d[i+55>>0];if((l|0)!=(i|0)){c[Qe>>2]=l;c[Qe+4>>2]=i;ti(Td,35277,Qe)}}l=(c[y>>2]|0)+32|0;ma=l;na=c[ma+4>>2]|0;i=l;c[i>>2]=c[ma>>2]&-2097153;c[i+4>>2]=na;i=c[Fc>>2]|0;if((w|0)>0&(i|0)!=0){r=0;do{o=x+(r<<2)|0;q=c[o>>2]|0;if(q){if((q|0)>1&(a[s>>0]|0)!=0){i=eg(c[Td>>2]|0,q,rf,Hd)|0;$:do if((i|0)<7){switch(i|0){case 0:break;default:{oa=2689;break $}}i=a[rf>>0]|0;l=c[Hd>>2]|0;if(i<<24>>24==1&(l|0)==0)break;c[Te>>2]=q;c[Te+4>>2]=1;c[Te+8>>2]=0;c[Te+12>>2]=i&255;c[Te+16>>2]=l;ti(Td,35625,Te)}else{if((i|0)<3082)switch(i|0){case 7:break;default:{oa=2689;break $}}else switch(i|0){case 3082:break;default:{oa=2689;break $}}c[Hc>>2]=1;oa=2689}while(0);if((oa|0)==2689){oa=0;c[Se>>2]=q;ti(Td,35596,Se)}i=c[o>>2]|0}else i=q;ui(Td,i,ee,-1,2147483647)|0;i=c[Fc>>2]|0}r=r+1|0}while((r|0)<(w|0)&(i|0)!=0);l=(c[y>>2]|0)+32|0}na=l;c[na>>2]=A;c[na+4>>2]=B;if((i|0)!=0&(c[Ec>>2]|0)!=0){r=z+36|0;q=1;do{l=q>>>3;o=1<<(q&7);do if(!(o&d[(c[Jc>>2]|0)+l>>0])){if(q>>>0<2)i=0;else{i=q+-2|0;i=i-((i>>>0)%(((((c[r>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;i=((i+1|0)==(1073741824/((c[t>>2]|0)>>>0)|0|0)?3:2)+i|0}if((i|0)==(q|0)?a[s>>0]|0:0)break;c[Ue>>2]=q;ti(Td,35377,Ue);if(o&d[(c[Jc>>2]|0)+l>>0]|0)oa=2704}else oa=2704;while(0);do if((oa|0)==2704){oa=0;if(q>>>0<2)i=0;else{i=q+-2|0;i=i-((i>>>0)%(((((c[r>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;i=((i+1|0)==(1073741824/((c[t>>2]|0)>>>0)|0|0)?3:2)+i|0}if((i|0)!=(q|0))break;if(!(a[s>>0]|0))break;c[We>>2]=q;ti(Td,35399,We)}while(0);q=q+1|0}while(c[Fc>>2]|0?q>>>0<=(c[Ec>>2]|0)>>>0:0);oa=2710}else oa=2710}else oa=2710;while(0);aa:do if((oa|0)==2710?(oa=0,pd=c[Kc>>2]|0,pd|0):0){i=pd;do if((c[14816]|0)>>>0<=i>>>0)if((c[14817]|0)>>>0>i>>>0){c[14979]=(c[14979]|0)+-1;c[pd>>2]=c[14819];c[14819]=pd;na=(c[14820]|0)+1|0;c[14820]=na;c[14821]=(na|0)<(c[14815]|0)&1;break aa}else{i=Wa[c[29352>>2]&127](pd)|0;break}else i=Wa[c[29352>>2]&127](pd)|0;while(0);c[14980]=(c[14980]|0)-i;if(!(c[7324]|0)){ab[c[29344>>2]&127](pd);break}else{na=Wa[c[29352>>2]&127](pd)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](pd);break}}while(0);i=c[Jc>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);if(!(c[Hc>>2]|0))r=c[Gc>>2]|0;else{if(a[Rc>>0]&4){i=c[Lc>>2]|0;l=c[Mc>>2]|0;ba:do if(l|0){do if(i|0){if(c[i+480>>2]|0){Xd(i,l);break ba}o=l;if((c[i+304>>2]|0)>>>0<=o>>>0){if((c[i+308>>2]|0)>>>0<=o>>>0)break;na=i+300|0;c[l>>2]=c[na>>2];c[na>>2]=l;break ba}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);a[Rc>>0]=a[Rc>>0]&-5}c[Nc>>2]=0;c[Pc>>2]=0;c[Mc>>2]=0;r=(c[Gc>>2]|0)+1|0;c[Gc>>2]=r}q=(r|0)==0;if(!q){i=c[Mc>>2]|0;if(((i|0)!=0?(a[i+(c[Pc>>2]|0)>>0]=0,(c[Oc>>2]|0)!=0):0)?(a[Rc>>0]&4)==0:0)i=$d(Lc)|0;else oa=2756}else{if(a[Rc>>0]&4){i=c[Lc>>2]|0;l=c[Mc>>2]|0;ca:do if(l|0){do if(i|0){if(c[i+480>>2]|0){Xd(i,l);break ca}o=l;if((c[i+304>>2]|0)>>>0>o>>>0)break;if((c[i+308>>2]|0)>>>0<=o>>>0)break;oa=i+300|0;c[l>>2]=c[oa>>2];c[oa>>2]=l;break ca}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);a[Rc>>0]=a[Rc>>0]&-5}c[Nc>>2]=0;c[Pc>>2]=0;c[Mc>>2]=0;oa=2756}if((oa|0)==2756){oa=0;i=c[Mc>>2]|0}l=pa+(C*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=1;else Dg(D);if(!q){if(!i){l=p;j=h;i=zf;oa=3892;break a}la=r+-1|0;ma=E;la=Tv(c[ma>>2]|0,c[ma+4>>2]|0,la|0,((la|0)<0)<<31>>31|0)|0;ma=L()|0;na=E;c[na>>2]=la;c[na+4>>2]=ma;yc(D,i,-1,1,90)|0}if((b[l>>1]&2)!=0?(a[pa+(C*40|0)+10>>0]|0)!=sd<<24>>24:0){Ig(D,sd)|0;l=m;q=pa;o=qa;i=K}else{l=m;q=pa;o=qa;i=K}break}case -108:{i=c[p+4>>2]|0;l=c[p+8>>2]|0;if((b[pa+(i*40|0)+8>>1]&16)==0?hh(pa+(i*40|0)|0)|0:0){l=p;j=h;i=zf;oa=3892;break a}t=c[pa+(i*40|0)+16>>2]|0;s=pa+(l*40|0)|0;r=c[s>>2]|0;s=c[s+4>>2]|0;q=t+24|0;l=b[q>>1]|0;if(l<<16>>16){na=t+16|0;i=c[na>>2]|0;b[q>>1]=l+-1<<16>>16;c[na>>2]=i+16;if(!i){l=m;q=pa;o=qa;i=K;break d}}else{o=c[t+4>>2]|0;da:do if(c[o+272>>2]|0)if(!(a[o+81>>0]|0))oa=2779;else{l=m;q=pa;o=qa;i=K;break d}else{do if((e[o+276>>1]|0)>=1016){l=o+300|0;i=c[l>>2]|0;if(i|0){c[l>>2]=c[i>>2];na=o+284|0;c[na>>2]=(c[na>>2]|0)+1;break da}l=o+296|0;i=c[l>>2]|0;if(!i){i=o+292|0;break}else{c[l>>2]=c[i>>2];na=o+284|0;c[na>>2]=(c[na>>2]|0)+1;break da}}else i=o+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;oa=2779}while(0);if((oa|0)==2779){oa=0;i=_d(o,1016,0)|0}if(!i){l=m;q=pa;o=qa;i=K;break d}c[i>>2]=c[t>>2];c[t>>2]=i;b[q>>1]=62;c[t+16>>2]=i+24;i=i+8|0}l=i;c[l>>2]=r;c[l+4>>2]=s;c[i+8>>2]=0;l=t+12|0;o=c[l>>2]|0;if(!o)c[t+8>>2]=i;else{na=o;ma=c[na+4>>2]|0;if(!((ma|0)<(s|0)|((ma|0)==(s|0)?(c[na>>2]|0)>>>0>>0:0))){na=t+26|0;b[na>>1]=b[na>>1]&-2}c[o+8>>2]=i}c[l>>2]=i;l=m;q=pa;o=qa;i=K;break}case 41:{l=c[p+4>>2]|0;B=pa+(l*40|0)|0;C=pa+(l*40|0)+8|0;i=b[C>>1]|0;do if(i&16){D=c[pa+(l*40|0)+16>>2]|0;E=D+26|0;A=b[E>>1]|0;i=A&65535;if(!(i&2)){if(!(i&1)){z=D+8|0;i=c[z>>2]|0;gw(Hd|0,0,160)|0;if(!i)i=0;else{l=0;while(1){na=i+8|0;o=i;i=c[na>>2]|0;c[na>>2]=0;if(!l)l=Hd;else{y=0;x=Hd;while(1){q=rf;ea:while(1){w=l;t=c[w>>2]|0;w=c[w+4>>2]|0;while(1){s=o;r=c[s>>2]|0;s=c[s+4>>2]|0;if(!((w|0)>(s|0)|(w|0)==(s|0)&t>>>0>r>>>0))break;c[q+8>>2]=o;q=c[o+8>>2]|0;if(!q){q=o;break ea}else{na=o;o=q;q=na}}if((w|0)<(s|0)|(w|0)==(s|0)&t>>>0>>0){c[q+8>>2]=l;q=l}l=c[l+8>>2]|0;if(!l){l=o;break}}c[q+8>>2]=l;o=c[Nb>>2]|0;c[x>>2]=0;y=y+1|0;q=Hd+(y<<2)|0;l=c[q>>2]|0;if(!l){l=q;break}else x=q}}c[l>>2]=o;l=c[Hd>>2]|0;if(!i){i=l;break}}}w=1;do{o=c[Hd+(w<<2)>>2]|0;if(o)if(!i)i=o;else{l=rf;fa:while(1){t=i;s=c[t>>2]|0;t=c[t+4>>2]|0;while(1){r=o;q=c[r>>2]|0;r=c[r+4>>2]|0;if(!((t|0)>(r|0)|(t|0)==(r|0)&s>>>0>q>>>0))break;c[l+8>>2]=o;l=c[o+8>>2]|0;if(!l){l=o;break fa}else{na=o;o=l;l=na}}if((t|0)<(r|0)|(t|0)==(r|0)&s>>>0>>0){c[l+8>>2]=i;l=i}i=c[i+8>>2]|0;if(!i){i=o;break}}c[l+8>>2]=i;i=c[Mb>>2]|0}w=w+1|0}while((w|0)!=40);c[z>>2]=i}b[E>>1]=A|3}s=D+8|0;i=c[s>>2]|0;if(!i){i=b[C>>1]|0;break}w=i;t=c[w>>2]|0;w=c[w+4>>2]|0;na=c[i+8>>2]|0;c[s>>2]=na;if(!na){i=c[D>>2]|0;if(i|0){r=D+4|0;do{l=i;i=c[i>>2]|0;o=c[r>>2]|0;do if(!o)oa=2830;else{if(c[o+480>>2]|0){Xd(o,l);break}q=l;if((c[o+304>>2]|0)>>>0>q>>>0){oa=2830;break}if((c[o+308>>2]|0)>>>0<=q>>>0){oa=2830;break}na=o+300|0;c[l>>2]=c[na>>2];c[na>>2]=l}while(0);do if((oa|0)==2830){oa=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0)}while((i|0)!=0)}c[D>>2]=0;b[D+24>>1]=0;c[s>>2]=0;c[D+12>>2]=0;c[D+20>>2]=0;b[E>>1]=1}l=c[p+12>>2]|0;i=pa+(l*40|0)|0;l=pa+(l*40|0)+8|0;if(!(b[l>>1]&9216)){o=i;c[o>>2]=t;c[o+4>>2]=w;b[l>>1]=4;l=m;o=pa;i=K;oa=21;break d}else{Pg(i,t,w);l=m;o=pa;i=K;oa=21;break d}}while(0);if(!(i&9216)){b[C>>1]=1;i=K;oa=20;break d}else{Dg(B);i=K;oa=20;break d}}case 42:{l=c[p+4>>2]|0;i=pa+((c[p+12>>2]|0)*40|0)|0;J=c[p+16>>2]|0;if((b[pa+(l*40|0)+8>>1]&16)==0?hh(pa+(l*40|0)|0)|0:0){l=p;j=h;i=zf;oa=3892;break a}I=pa+(l*40|0)+16|0;if(J){B=c[I>>2]|0;H=i;F=c[H>>2]|0;H=c[H+4>>2]|0;C=B+28|0;if((c[C>>2]|0)!=(J|0)){D=B+8|0;l=c[D>>2]|0;if(l|0){A=B+20|0;E=B+26|0;if(!(b[E>>1]&1)){gw(Hd|0,0,160)|0;z=l;l=0;do{na=z+8|0;o=z;z=c[na>>2]|0;c[na>>2]=0;if(!l)l=Hd;else{y=0;x=Hd;while(1){q=rf;ga:while(1){w=l;t=c[w>>2]|0;w=c[w+4>>2]|0;while(1){s=o;r=c[s>>2]|0;s=c[s+4>>2]|0;if(!((w|0)>(s|0)|(w|0)==(s|0)&t>>>0>r>>>0))break;c[q+8>>2]=o;q=c[o+8>>2]|0;if(!q){q=o;break ga}else{na=o;o=q;q=na}}if((w|0)<(s|0)|(w|0)==(s|0)&t>>>0>>0){c[q+8>>2]=l;q=l}l=c[l+8>>2]|0;if(!l){l=o;break}}c[q+8>>2]=l;o=c[Ub>>2]|0;c[x>>2]=0;y=y+1|0;q=Hd+(y<<2)|0;l=c[q>>2]|0;if(!l){l=q;break}else x=q}}c[l>>2]=o;l=c[Hd>>2]|0}while((z|0)!=0);x=1;do{q=c[Hd+(x<<2)>>2]|0;do if(q){if(!l){l=q;break}o=rf;ha:while(1){w=l;t=c[w>>2]|0;w=c[w+4>>2]|0;while(1){s=q;r=c[s>>2]|0;s=c[s+4>>2]|0;if(!((w|0)>(s|0)|(w|0)==(s|0)&t>>>0>r>>>0))break;c[o+8>>2]=q;o=c[q+8>>2]|0;if(!o){o=q;break ha}else{na=q;q=o;o=na}}if((w|0)<(s|0)|(w|0)==(s|0)&t>>>0>>0){c[o+8>>2]=l;o=l}l=c[l+8>>2]|0;if(!l){l=q;break}}c[o+8>>2]=l;l=c[ic>>2]|0}while(0);x=x+1|0}while((x|0)!=40)}o=c[A>>2]|0;ia:do if(!o){s=A;oa=2889}else{while(1){x=o+8|0;r=o+12|0;o=c[r>>2]|0;if(!o)break;wi(o,Hd,Td);c[r>>2]=0;o=rf;w=c[Hd>>2]|0;ja:do{t=w;s=c[t>>2]|0;t=c[t+4>>2]|0;while(1){r=l;q=c[r>>2]|0;r=c[r+4>>2]|0;if(!((t|0)>(r|0)|(t|0)==(r|0)&s>>>0>q>>>0))break;c[o+8>>2]=l;o=c[l+8>>2]|0;if(!o){o=l;l=w;break ja}else{na=l;l=o;o=na}}if((t|0)<(r|0)|(t|0)==(r|0)&s>>>0>>0){c[o+8>>2]=w;o=w}w=c[w+8>>2]|0}while((w|0)!=0);c[o+8>>2]=l;l=c[cc>>2]|0;o=c[x>>2]|0;if(!o){s=x;oa=2889;break ia}}na=l+8|0;o=c[na>>2]|0;c[rf>>2]=o;c[na>>2]=0;c[l+12>>2]=0;if(!o){c[r>>2]=l;break}q=1;while(1){na=o+8|0;c[rf>>2]=c[na>>2];c[o+12>>2]=l;l=xi(rf,q)|0;c[na>>2]=l;l=c[rf>>2]|0;if(!l)break;else{na=o;q=q+1|0;o=l;l=na}}c[r>>2]=o}while(0);ka:do if((oa|0)==2889){oa=0;t=B+24|0;q=b[t>>1]|0;la:do if(q<<16>>16){na=B+16|0;o=c[na>>2]|0;b[t>>1]=q+-1<<16>>16;c[na>>2]=o+16;c[s>>2]=o;if(!o)break ka}else{r=c[B+4>>2]|0;ma:do if(c[r+272>>2]|0){if(!(a[r+81>>0]|0))oa=2900}else{do if((e[r+276>>1]|0)>=1016){q=r+300|0;o=c[q>>2]|0;if(o|0){c[q>>2]=c[o>>2];oa=r+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=2901;break ma}q=r+296|0;o=c[q>>2]|0;if(!o){o=r+292|0;break}else{c[q>>2]=c[o>>2];oa=r+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=2901;break ma}}else o=r+288|0;while(0);c[o>>2]=(c[o>>2]|0)+1;oa=2900}while(0);if((oa|0)==2900){o=_d(r,1016,0)|0;oa=2901}do if((oa|0)==2901){oa=0;if(!o)break;c[o>>2]=c[B>>2];c[B>>2]=o;na=o+8|0;b[t>>1]=62;c[B+16>>2]=o+24;c[s>>2]=na;o=na;break la}while(0);c[s>>2]=0;break ka}while(0);na=o;c[na>>2]=0;c[na+4>>2]=0;c[o+8>>2]=0;na=l+8|0;q=c[na>>2]|0;c[rf>>2]=q;c[na>>2]=0;c[l+12>>2]=0;if(q){r=1;while(1){na=q+8|0;c[rf>>2]=c[na>>2];c[q+12>>2]=l;l=xi(rf,r)|0;c[na>>2]=l;l=c[rf>>2]|0;if(!l){l=q;break}else{na=q;r=r+1|0;q=l;l=na}}}c[o+12>>2]=l}while(0);c[D>>2]=0;c[B+12>>2]=0;b[E>>1]=b[E>>1]|1}c[C>>2]=J}l=c[B+20>>2]|0;if(l|0)do{o=c[l+12>>2]|0;if(o|0)do{r=o;q=c[r>>2]|0;r=c[r+4>>2]|0;if((r|0)<(H|0)|(r|0)==(H|0)&q>>>0>>0)o=o+8|0;else{if(!((r|0)>(H|0)|(r|0)==(H|0)&q>>>0>F>>>0)){i=K;oa=28;break d}o=o+12|0}o=c[o>>2]|0}while((o|0)!=0);l=c[l+8>>2]|0}while((l|0)!=0);if((J|0)<=-1){l=m;q=pa;o=qa;i=K;break d}}t=c[I>>2]|0;s=i;r=c[s>>2]|0;s=c[s+4>>2]|0;q=t+24|0;l=b[q>>1]|0;if(l<<16>>16){na=t+16|0;i=c[na>>2]|0;b[q>>1]=l+-1<<16>>16;c[na>>2]=i+16;if(!i){l=m;q=pa;o=qa;i=K;break d}}else{o=c[t+4>>2]|0;na:do if(c[o+272>>2]|0)if(!(a[o+81>>0]|0))oa=2933;else{l=m;q=pa;o=qa;i=K;break d}else{do if((e[o+276>>1]|0)>=1016){l=o+300|0;i=c[l>>2]|0;if(i|0){c[l>>2]=c[i>>2];na=o+284|0;c[na>>2]=(c[na>>2]|0)+1;break na}l=o+296|0;i=c[l>>2]|0;if(!i){i=o+292|0;break}else{c[l>>2]=c[i>>2];na=o+284|0;c[na>>2]=(c[na>>2]|0)+1;break na}}else i=o+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;oa=2933}while(0);if((oa|0)==2933){oa=0;i=_d(o,1016,0)|0}if(!i){l=m;q=pa;o=qa;i=K;break d}c[i>>2]=c[t>>2];c[t>>2]=i;b[q>>1]=62;c[t+16>>2]=i+24;i=i+8|0}l=i;c[l>>2]=r;c[l+4>>2]=s;c[i+8>>2]=0;l=t+12|0;o=c[l>>2]|0;if(!o)c[t+8>>2]=i;else{na=o;ma=c[na+4>>2]|0;if(!((ma|0)<(s|0)|((ma|0)==(s|0)?(c[na>>2]|0)>>>0>>0:0))){na=t+26|0;b[na>>1]=b[na>>1]&-2}c[o+8>>2]=i}c[l>>2]=i;l=m;q=pa;o=qa;i=K;break}case 45:{z=c[p+16>>2]|0;s=c[p+12>>2]|0;t=pa+(s*40|0)|0;if(b[p+2>>1]|0?(rd=c[z+20>>2]|0,od=c[nc>>2]|0,od|0):0){i=od;do{if((c[i+28>>2]|0)==(rd|0)){l=m;q=pa;o=qa;i=K;break d}i=c[i+4>>2]|0}while((i|0)!=0)}if((c[La>>2]|0)>=(c[Ma>>2]|0)){oa=2968;break c}o=pa+(s*40|0)+8|0;if(!(b[o>>1]&16)){q=z+12|0;r=c[q>>2]|0;w=r+(c[z+8>>2]|0)+((r|0)==0&1)|0;y=z+4|0;r=(r<<2)+80+(((c[y>>2]|0)+7|0)/8|0)+(w*40|0)|0;l=((r|0)<0)<<31>>31;do if(c[$c>>2]|0)if(!(a[zf>>0]|0))oa=2958;else{l=p;j=m;i=zf;oa=3898;break a}else{if(!(0>>0|(0==(l|0)?(e[Xc>>1]|0)>>>0>>0:0))){i=c[af>>2]|0;if(i|0){c[af>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;x=i;break}i=c[cd>>2]|0;if(!i)i=fd;else{c[cd>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;x=i;break}}else i=Yc;c[i>>2]=(c[i>>2]|0)+1;oa=2958}while(0);if((oa|0)==2958)x=_d(Cf,r,l)|0;if(!x){l=p;j=h;i=zf;oa=3892;break a}gw(x|0,0,r|0)|0;if(!((b[o>>1]&9216)==0?!(c[pa+(s*40|0)+24>>2]|0):0))Cg(t);b[o>>1]=1040;c[pa+(s*40|0)+16>>2]=x;c[pa+(s*40|0)+12>>2]=r;c[pa+(s*40|0)+36>>2]=93;c[x>>2]=f;c[x+60>>2]=w;r=c[q>>2]|0;c[x+64>>2]=r;c[x+48>>2]=(p-m|0)/20|0;c[x+16>>2]=c[xd>>2];c[x+56>>2]=c[va>>2];c[x+20>>2]=c[oc>>2];c[x+44>>2]=c[Ib>>2];c[x+8>>2]=c[le>>2];c[x+52>>2]=c[wb>>2];c[x+28>>2]=c[z+20>>2];m=x+80|0;l=m+(w*40|0)|0;if((l|0)==(m|0)){o=x;p=m;q=m;m=y;l=x;i=r}else{i=m;do{b[i+8>>1]=128;c[i+32>>2]=Cf;i=i+40|0}while((i|0)!=(l|0));o=x;p=m;q=m;m=y;l=x;i=r}}else{l=c[pa+(s*40|0)+16>>2]|0;q=l+80|0;o=l;p=q;m=z+4|0;i=c[z+12>>2]|0}c[La>>2]=(c[La>>2]|0)+1;c[o+4>>2]=c[nc>>2];na=zb;pa=c[na+4>>2]|0;oa=o+32|0;c[oa>>2]=c[na>>2];c[oa+4>>2]=pa;c[o+68>>2]=c[rc>>2];c[o+72>>2]=c[(c[f>>2]|0)+100>>2];c[o+40>>2]=c[Hb>>2];c[Hb>>2]=0;c[rc>>2]=0;c[nc>>2]=l;c[xd>>2]=p;p=c[o+60>>2]|0;c[va>>2]=p;c[Ib>>2]=c[o+64>>2]&65535;p=q+(p*40|0)|0;c[oc>>2]=p;p=p+(i<<2)|0;c[o+24>>2]=p;gw(p|0,0,((c[m>>2]|0)+7|0)/8|0|0)|0;p=c[z>>2]|0;c[le>>2]=p;c[wb>>2]=c[m>>2];l=p;p=p+-20|0;o=q;i=K;oa=21;break}case -107:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;o=c[nc>>2]|0;l=c[o+16>>2]|0;o=(c[(c[o+8>>2]|0)+((c[o+48>>2]|0)*20|0)+4>>2]|0)+(c[p+4>>2]|0)|0;q=l+(o*40|0)|0;r=i+8|0;if(b[r>>1]&9216){mh(i,q,4096);l=m;q=pa;o=qa;i=K;break d};c[i>>2]=c[q>>2];c[i+4>>2]=c[q+4>>2];c[i+8>>2]=c[q+8>>2];c[i+12>>2]=c[q+12>>2];c[i+16>>2]=c[q+16>>2];if(!(b[l+(o*40|0)+8>>1]&2048)){b[r>>1]=b[r>>1]&-7169|4096;l=m;q=pa;o=qa;i=K}else{l=m;q=pa;o=qa;i=K}break}case -106:{if(!((c[Sc>>2]&524288|0)==0&0==0)){o=c[p+8>>2]|0;q=Na;o=Sv(c[q>>2]|0,c[q+4>>2]|0,o|0,((o|0)<0)<<31>>31|0)|0;q=L()|0;l=Na;c[l>>2]=o;c[l+4>>2]=q;l=m;q=pa;o=qa;i=K;break d}i=c[p+8>>2]|0;l=((i|0)<0)<<31>>31;if(!(c[p+4>>2]|0)){o=Oa;o=Sv(c[o>>2]|0,c[o+4>>2]|0,i|0,l|0)|0;q=L()|0;l=Oa;c[l>>2]=o;c[l+4>>2]=q;l=m;q=pa;o=qa;i=K;break d}else{o=Pa;o=Sv(c[o>>2]|0,c[o+4>>2]|0,i|0,l|0)|0;q=L()|0;l=Pa;c[l>>2]=o;c[l+4>>2]=q;l=m;q=pa;o=qa;i=K;break d}}case 46:if(!(c[p+4>>2]|0)){na=Oa;if(!((c[na>>2]|0)==0&(c[na+4>>2]|0)==0)){l=m;q=pa;o=qa;i=K;break d}na=Na;if((c[na>>2]|0)==0&(c[na+4>>2]|0)==0){i=K;oa=28;break d}else{l=m;q=pa;o=qa;i=K;break d}}else{na=Pa;if(!((c[na>>2]|0)==0&(c[na+4>>2]|0)==0)){l=m;q=pa;o=qa;i=K;break d}na=Na;if((c[na>>2]|0)==0&(c[na+4>>2]|0)==0){i=K;oa=28;break d}else{l=m;q=pa;o=qa;i=K;break d}}case -105:{i=c[nc>>2]|0;if(!i)l=pa;else{while(1){l=c[i+4>>2]|0;if(!l)break;else i=l}l=c[i+16>>2]|0}o=c[p+4>>2]|0;t=l+(o*40|0)|0;r=l+(o*40|0)+8|0;i=b[r>>1]|0;q=i&65535;do if(!(q&4)){if(q&8|0){l=Mg(+g[t>>3])|0;o=L()|0;break}if(!(q&18)){l=0;o=0}else{l=Ng(a[l+(o*40|0)+10>>0]|0,c[l+(o*40|0)+12>>2]|0,c[l+(o*40|0)+16>>2]|0)|0;o=L()|0;i=b[r>>1]|0}}else{o=t;l=c[o>>2]|0;o=c[o+4>>2]|0}while(0);s=t;c[s>>2]=l;c[s+4>>2]=o;b[r>>1]=i&15904|4;i=c[p+8>>2]|0;r=pa+(i*40|0)|0;s=pa+(i*40|0)+8|0;q=b[s>>1]|0;l=q&65535;do if(!(l&4)){if(l&8|0){l=Mg(+g[r>>3])|0;o=L()|0;i=q;break}if(!(l&18)){l=0;o=0;i=q}else{l=Ng(a[pa+(i*40|0)+10>>0]|0,c[pa+(i*40|0)+12>>2]|0,c[pa+(i*40|0)+16>>2]|0)|0;o=L()|0;i=b[s>>1]|0}}else{o=r;l=c[o>>2]|0;o=c[o+4>>2]|0;i=q}while(0);na=r;c[na>>2]=l;c[na+4>>2]=o;b[s>>1]=i&15904|4;na=t;ma=c[na+4>>2]|0;if((ma|0)<(o|0)|((ma|0)==(o|0)?(c[na>>2]|0)>>>0>>0:0)){q=t;c[q>>2]=l;c[q+4>>2]=o;l=m;q=pa;o=qa;i=K}else{l=m;q=pa;o=qa;i=K}break}case 47:{i=pa+((c[p+4>>2]|0)*40|0)|0;o=i;l=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)>0|(o|0)==0&l>>>0>0){na=c[p+12>>2]|0;na=Tv(l|0,o|0,na|0,((na|0)<0)<<31>>31|0)|0;oa=L()|0;c[i>>2]=na;c[i+4>>2]=oa;i=K;oa=28}else{l=m;q=pa;o=qa;i=K}break}case -104:{o=c[p+4>>2]|0;q=c[p+12>>2]|0;na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;o=pa+(o*40|0)|0;l=c[o>>2]|0;o=c[o+4>>2]|0;if(!((o|0)<0|(o|0)==0&l>>>0<1)?(ud=pa+(q*40|0)|0,td=c[ud>>2]|0,ud=c[ud+4>>2]|0,na=(ud|0)>0|(ud|0)==0&td>>>0>0,td=na?td:0,ud=na?ud:0,na=Tv(-1,2147483647,l|0,o|0)|0,ma=L()|0,!(((ud|0)>-1|(ud|0)==-1&td>>>0>4294967295)&((ma|0)<(ud|0)|(ma|0)==(ud|0)&na>>>0>>0))):0){o=Sv(td|0,ud|0,l|0,o|0)|0;q=L()|0;l=i;c[l>>2]=o;c[l+4>>2]=q;l=m;q=pa;o=qa;i=K;break d}l=i;c[l>>2]=-1;c[l+4>>2]=-1;l=m;q=pa;o=qa;i=K;break}case 48:{i=pa+((c[p+4>>2]|0)*40|0)|0;o=i;l=c[o>>2]|0;o=c[o+4>>2]|0;if(!((l|0)==0&(o|0)==0))if((o|0)>0|(o|0)==0&l>>>0>0){na=Sv(l|0,o|0,-1,-1)|0;oa=L()|0;c[i>>2]=na;c[i+4>>2]=oa;i=K;oa=28}else{i=K;oa=28}else{l=m;q=pa;o=qa;i=K}break}case 49:{i=pa+((c[p+4>>2]|0)*40|0)|0;na=i;ma=c[na>>2]|0;na=c[na+4>>2]|0;l=Sv(ma|0,na|0,-1,-1)|0;o=L()|0;if(!((ma|0)==0&(na|0)==-2147483648)?(na=i,c[na>>2]=l,c[na+4>>2]=o,(l|0)==0&(o|0)==0):0){i=K;oa=28}else{l=m;q=pa;o=qa;i=K}break}case -102:case -103:{o=b[p+2>>1]|0;q=o&65535;l=(q<<2)+68|0;do if(c[$c>>2]|0)if(!(a[zf>>0]|0))oa=3026;else{l=p;j=m;i=zf;oa=3898;break a}else{if(!(0<0|(0==0?(e[Xc>>1]|0)>>>0>>0:0))){i=c[af>>2]|0;if(i|0){c[af>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;break}i=c[cd>>2]|0;if(!i)i=fd;else{c[cd>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;break}}else i=Yc;c[i>>2]=(c[i>>2]|0)+1;oa=3026}while(0);if((oa|0)==3026)i=_d(Cf,l,0)|0;if(!i){l=p;j=h;i=zf;oa=3892;break a}c[i+8>>2]=0;s=i+28+(q<<2)|0;c[i>>2]=s;b[s+8>>1]=1;c[s+32>>2]=Cf;c[s+24>>2]=0;s=p+16|0;c[i+4>>2]=c[s>>2];c[i+16>>2]=(p-m|0)/20|0;c[i+12>>2]=f;a[i+24>>0]=0;c[i+20>>2]=0;a[i+25>>0]=o;a[p+1>>0]=-16;c[s>>2]=i;a[p>>0]=-101;s=i;oa=3029;break}case -101:{s=c[p+16>>2]|0;oa=3029;break}case -99:case -100:{o=c[p+4>>2]|0;r=pa+(o*40|0)|0;q=p+12|0;i=c[q>>2]|0;if(!i){l=c[p+16>>2]|0;c[Qa>>2]=0;c[Qa+4>>2]=0;c[Qa+8>>2]=0;c[Qa+12>>2]=0;c[Qa+16>>2]=0;ea=Hd;fa=ea+40|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));b[Sa>>1]=1;i=pa+(o*40|0)+32|0;c[Ta>>2]=c[i>>2];c[rf>>2]=Hd;c[Ua>>2]=r;c[Va>>2]=l;ab[c[l+20>>2]&127](rf);do if((c[pa+(o*40|0)+24>>2]|0)>0){l=c[i>>2]|0;i=c[pa+(o*40|0)+20>>2]|0;if(l|0){if(c[l+480>>2]|0){Xd(l,i);break}na=i;if((c[l+304>>2]|0)>>>0<=na>>>0?(c[l+308>>2]|0)>>>0>na>>>0:0){na=l+300|0;c[i>>2]=c[na>>2];c[na>>2]=i;break}}if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);ea=r;l=Hd;fa=ea+40|0;do{c[ea>>2]=c[l>>2];ea=ea+4|0;l=l+4|0}while((ea|0)<(fa|0));o=r;l=c[rb>>2]|0}else{l=pa+(i*40|0)|0;o=c[p+16>>2]|0;c[rf>>2]=0;c[rf+4>>2]=0;c[rf+8>>2]=0;c[rf+12>>2]=0;c[rf+16>>2]=0;c[rf+20>>2]=0;c[rf+24>>2]=0;c[rf+28>>2]=0;i=pa+(i*40|0)+8|0;if(!(b[i>>1]&9216))b[i>>1]=1;else Dg(l);c[rf>>2]=l;c[tb>>2]=r;c[ub>>2]=o;ab[c[o+24>>2]&127](rf);o=pa+((c[q>>2]|0)*40|0)|0;l=c[vb>>2]|0}if(l|0){oa=3073;break c}l=o+8|0;i=b[l>>1]|0;if((i&2)!=0?(a[o+10>>0]|0)!=sd<<24>>24:0){Ig(o,sd)|0;i=b[l>>1]|0}l=i&65535;if(l&18){i=c[o+12>>2]|0;if(l&16384)i=(c[o>>2]|0)+i|0;if((i|0)>(c[(c[o+32>>2]|0)+108>>2]|0)){oa=3891;break c}else{l=m;q=pa;o=qa;i=0}}else{l=m;q=pa;o=qa;i=0}break}case 6:{c[rf>>2]=0;c[Tc>>2]=-1;c[Uc>>2]=-1;i=Nd(Cf,c[p+4>>2]|0,c[p+8>>2]|0,Uc,Tc)|0;switch(i|0){case 0:{l=c[rf>>2]|0;break}case 5:{c[rf>>2]=1;l=1;break}default:{oa=3094;break c}}q=c[p+12>>2]|0;i=pa+(q*40|0)|0;o=((l|0)<0)<<31>>31;q=pa+(q*40|0)+8|0;if(!(b[q>>1]&9216)){na=i;c[na>>2]=l;c[na+4>>2]=o;b[q>>1]=4}else Pg(i,l,o);i=i+40|0;l=c[Uc>>2]|0;o=((l|0)<0)<<31>>31;q=i+8|0;if(!(b[q>>1]&9216)){na=i;c[na>>2]=l;c[na+4>>2]=o;b[q>>1]=4}else Pg(i,l,o);i=i+40|0;l=c[Tc>>2]|0;o=((l|0)<0)<<31>>31;q=i+8|0;if(!(b[q>>1]&9216)){na=i;c[na>>2]=l;c[na+4>>2]=o;b[q>>1]=4}else Pg(i,l,o);l=m;q=pa;o=qa;i=0;break}case 7:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216)){b[l>>1]=4;B=i}else{lh(i)|0;B=i}i=c[p+12>>2]|0;x=c[(c[uf>>2]|0)+(c[p+4>>2]<<4)+4>>2]|0;s=x+4|0;z=c[c[s>>2]>>2]|0;o=a[z+5>>0]|0;A=o&255;i=(i|0)==-1?A:i;if((d[z+16>>0]|0)<=2){if((c[c[z+64>>2]>>2]|0)!=0?(na=z+72|0,ma=c[na+4>>2]|0,(ma|0)>0|(ma|0)==0&(c[na>>2]|0)>>>0>0):0)oa=3101}else oa=3101;if((oa|0)==3101){oa=0;i=A}if(!(a[z+15>>0]|0))l=c[z+168>>2]|0;else l=59952;if((i|0)==5)if(((l|0)!=0?((Eu(l)|0)&1073741823|0)!=0:0)?(wd=c[c[z+60>>2]>>2]|0,(a[z+13>>0]|0)==0):0)if(!(a[z+4>>0]|0))if((c[wd>>2]|0)>1?(c[wd+52>>2]|0)!=0:0){y=5;oa=3111}else{l=A;i=K}else{y=5;oa=3111}else{l=A;i=K}else{y=i;oa=3111}oa:do if((oa|0)==3111){oa=0;if((y|0)!=(A|0)){i=o<<24>>24==5;w=(y|0)==5;if(i|w){if(!(a[gd>>0]|0)){oa=3115;break c}if((c[Ha>>2]|0)>1){oa=3115;break c}if(!i){if(o<<24>>24==4)jh(z,2)|0;if(K|0){l=y;i=K;break}}else{o=z+216|0;i=c[o>>2]|0;if(!i){c[rf>>2]=0;l=z+17|0;i=a[l>>0]|0;pa:do switch(i<<24>>24){case 0:case 5:{do if(!(a[z+13>>0]|0)){i=c[z+60>>2]|0;i=Xa[c[(c[i>>2]|0)+28>>2]&255](i,1)|0;if(!i){i=a[l>>0]|0;break}else{l=y;break oa}}while(0);if(i<<24>>24==5)break pa;a[l>>0]=1;break}default:{}}while(0);i=c[z>>2]|0;i=Za[c[i+32>>2]&127](i,c[z+220>>2]|0,0,rf)|0;if((i|0)==0&(c[rf>>2]|0)!=0)i=Uf(z)|0;if(i|0){l=y;break}i=c[o>>2]|0;if(i|0){r=l;oa=3130}}else{r=z+17|0;oa=3130}do if((oa|0)==3130){oa=0;switch(a[r>>0]|0){case 0:case 1:case 2:case 3:case 5:{q=z+13|0;do if(!(a[q>>0]|0)){l=z+60|0;i=c[l>>2]|0;i=Xa[c[(c[i>>2]|0)+28>>2]&255](i,4)|0;if(!i){i=c[o>>2]|0;break}l=c[l>>2]|0;o=c[l>>2]|0;if(!o){l=y;break oa}if(!(a[q>>0]|0))Xa[c[o+32>>2]&255](l,1)|0;if((a[r>>0]|0)==5){l=y;break oa}a[r>>0]=1;l=y;break oa}while(0);a[r>>0]=4;break}default:{}}i=Pf(i,Cf,d[z+11>>0]|0,c[z+152>>2]|0,c[z+208>>2]|0)|0;c[o>>2]=0;if(!i)break;if(a[z+4>>0]|0){l=y;break oa}l=c[z+60>>2]|0;o=c[l>>2]|0;if(!o){l=y;break oa}if(!(a[z+13>>0]|0))Xa[c[o+32>>2]&255](l,1)|0;if((a[r>>0]|0)==5){l=y;break oa}a[r>>0]=1;l=y;break oa}while(0);jh(z,y)|0}l=c[s>>2]|0;t=l+22|0;i=b[t>>1]|0;b[t>>1]=w?i&-33:i|32;i=Zb(x,0,0)|0;qa:do if(!i){l=l+12|0;r=c[(c[l>>2]|0)+56>>2]|0;s=r+18|0;na=a[s>>0]|0;q=w?2:1;if(na<<24>>24==q<<24>>24?(a[r+19>>0]|0)==na<<24>>24:0){i=0;break}i=Zb(x,2,0)|0;if(i|0)break;l=c[(c[l>>2]|0)+72>>2]|0;o=c[l+20>>2]|0;do if(!(b[l+28>>1]&4))oa=3159;else{if((c[o+24>>2]|0)>>>0<(c[l+24>>2]|0)>>>0){oa=3159;break}if(!(c[o+96>>2]|0))break;id=Ve(l)|0;oa=3163}while(0);do if((oa|0)==3159){oa=0;i=c[o+40>>2]|0;if(i|0)break qa;if((c[o+148>>2]|0)>>>0>(c[o+152>>2]|0)>>>0){id=Wf(l)|0;oa=3163;break}else{id=Xf(l)|0;oa=3163;break}}while(0);if((oa|0)==3163?(oa=0,id|0):0){i=id;break}a[s>>0]=q;a[r+19>>0]=q;i=0}while(0);b[t>>1]=b[t>>1]&-33;l=y}else{l=y;i=K}}else{l=A;i=K}}while(0);o=(i|0)!=0;l=jh(z,o?A:l)|0;b[B+8>>1]=2562;if((l|0)==6){c[B+16>>2]=0;l=0}else{l=c[3664+(l<<2)>>2]|0;c[B+16>>2]=l;l=(Eu(l)|0)&1073741823}c[B+12>>2]=l;a[B+10>>0]=1;if(!hb)Ig(B,sd)|0;if(o){oa=3855;break c}else{l=m;q=pa;o=qa;i=0}break}case 8:{i=c[p+8>>2]|0;i=kh(mf,Cf,c[p+4>>2]|0,(i|0)==0?0:pa+(i*40|0)|0)|0;if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case 59:{na=c[(c[uf>>2]|0)+(c[p+4>>2]<<4)+4>>2]|0;w=c[na+4>>2]|0;c[w+4>>2]=c[na>>2];if(a[w+17>>0]|0){x=w+44|0;t=c[x>>2]|0;y=w+12|0;r=c[(c[y>>2]|0)+56>>2]|0;r=d[r+37>>0]<<16|d[r+36>>0]<<24|d[r+38>>0]<<8|d[r+39>>0];l=((c[w+36>>2]|0)>>>0)/5|0;if(t>>>0<2){i=0;o=1073741824/((c[w+32>>2]|0)>>>0)|0;q=l+1|0}else{q=l+1|0;i=t+-2|0;i=i-((i>>>0)%(q>>>0)|0)|0;o=1073741824/((c[w+32>>2]|0)>>>0)|0;i=((i+1|0)==(o|0)?3:2)+i|0}s=t-r-(((l-t+r+i|0)>>>0)/(l>>>0)|0)|0;l=o+1|0;s=s+((l>>>0>>0&s>>>0>>0)<<31>>31)|0;while(1){if(s>>>0<2)i=0;else{i=s+-2|0;i=i-((i>>>0)%(q>>>0)|0)|0;i=((i+1|0)==(o|0)?3:2)+i|0}if((s|0)==(l|0)|(i|0)==(s|0))s=s+-1|0;else break}if(t>>>0>>0){oa=3182;break c}if(r){l=w+8|0;i=c[l>>2]|0;if(i){i=$f(i,0,0)|0;if(!i){i=c[l>>2]|0;if(!i)oa=3189;else{do{oa=i+1|0;a[oa>>0]=a[oa>>0]&-5;i=c[i+24>>2]|0}while((i|0)!=0);oa=3189}}}else oa=3189;if((oa|0)==3189){oa=0;i=_f(w,s,t,0)|0;if(!i){l=c[(c[y>>2]|0)+72>>2]|0;o=c[l+20>>2]|0;if((b[l+28>>1]&4)!=0?(c[o+24>>2]|0)>>>0>=(c[l+24>>2]|0)>>>0:0)if(!(c[o+96>>2]|0))i=0;else i=Ve(l)|0;else oa=3194;do if((oa|0)==3194){oa=0;i=c[o+40>>2]|0;if(!i)if((c[o+148>>2]|0)>>>0>(c[o+152>>2]|0)>>>0){i=Wf(l)|0;break}else{i=Xf(l)|0;break}}while(0);na=c[(c[y>>2]|0)+56>>2]|0;ma=c[x>>2]|0;a[na+28>>0]=ma>>>24;a[na+29>>0]=ma>>>16;a[na+30>>0]=ma>>>8;a[na+31>>0]=ma}}switch(i|0){case 101:{i=0;oa=28;break}case 0:{l=m;q=pa;o=qa;break}default:{oa=3855;break c}}}else{i=0;oa=28}}else{i=0;oa=28}break}case -98:{l=c[p+8>>2]|0;if(c[p+4>>2]|0){l=(d[vf>>0]|d[vf+1>>0]<<8)&-4|l+1&3;a[vf>>0]=l;a[vf+1>>0]=l>>8;l=m;q=pa;o=qa;i=K;break d}i=c[$a>>2]|0;if(!i){l=m;q=pa;o=qa;i=K}else{l=l+1&3;do{na=i+149|0;ma=(d[na>>0]|d[na+1>>0]<<8)&-4|l;a[na>>0]=ma;a[na+1>>0]=ma>>8;i=c[i+8>>2]|0}while((i|0)!=0);l=m;q=pa;o=qa;i=K}break}case -97:{i=c[p+12>>2]|0;if((i&255|0)==0?!((c[Sc>>2]&1024|0)==0&0==0):0){l=m;q=pa;o=qa;i=K;break d}r=c[(c[uf>>2]|0)+(c[p+4>>2]<<4)+4>>2]|0;s=c[p+8>>2]|0;if(a[r+9>>0]|0){t=i+1&255;o=c[r+4>>2]|0;c[o+4>>2]=c[r>>2];if((c[o+76>>2]|0)!=(r|0)?b[o+22>>1]&64:0){oa=3236;break c}q=o+72|0;i=c[q>>2]|0;ra:do if(!i)oa=3222;else{l=i;do{if(((c[l>>2]|0)!=(r|0)?(c[l+4>>2]|0)==(s|0):0)?(a[l+8>>0]|0)!=t<<24>>24:0){oa=3215;break c}l=c[l+12>>2]|0}while((l|0)!=0);while(1){if((c[i+4>>2]|0)==(s|0)?(c[i>>2]|0)==(r|0):0)break ra;i=c[i+12>>2]|0;if(!i){oa=3222;break}}}while(0);if((oa|0)==3222){oa=0;if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](16)|0;if(!i){i=7;oa=3855;break c}}else{i=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;o=59064;l=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)>0|(o|0)==0&l>>>0>0){na=c[14978]|0;ma=Tv(l|0,o|0,i|0,((i|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){i=7;oa=3855;break c}l=Wa[c[29352>>2]&127](i)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}na=i+8|0;a[na>>0]=0;a[na+1>>0]=0;a[na+2>>0]=0;a[na+3>>0]=0;c[i+4>>2]=s;c[i>>2]=r;c[i+12>>2]=c[q>>2];c[q>>2]=i}i=i+8|0;if((d[i>>0]|0)<(t&255)){a[i>>0]=t;l=m;q=pa;o=qa;i=0}else{l=m;q=pa;o=qa;i=0}}else{l=m;q=pa;o=qa;i=0}break}case -96:{x=c[p+16>>2]|0;s=c[Vc>>2]|0;q=(s|0)>0;if(q?(c[db>>2]|0)==0:0){i=6;oa=3268}else oa=3239;sa:do if((oa|0)==3239){oa=0;if(!x){l=m;q=pa;o=qa;i=0;break d}l=x+8|0;i=c[l>>2]|0;w=c[i>>2]|0;t=w+56|0;o=c[t>>2]|0;if(o){if(q){r=c[db>>2]|0;q=0;do{if((c[r+(q<<2)>>2]|0)==(x|0)){i=0;oa=3268;break sa}q=q+1|0}while((q|0)<(s|0))}if(!((s|0)%5|0)){o=cw(s|0,((s|0)<0)<<31>>31|0,2)|0;o=Sv(o|0,L()|0,20,0)|0;q=L()|0;i=c[db>>2]|0;ta:do if(!i){if(c[$c>>2]|0){if(a[zf>>0]|0){i=7;oa=3268;break sa}}else{do if(q>>>0>0|((q|0)==0?o>>>0>(e[Xc>>1]|0)>>>0:0))i=Yc;else{i=c[af>>2]|0;if(i|0){c[af>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;oa=3261;break ta}i=c[cd>>2]|0;if(!i){i=fd;break}c[cd>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;oa=3261;break ta}while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(Cf,o,q)|0;oa=3261}else{na=i;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){if(!(q>>>0>0|((q|0)==0?o>>>0>(e[Xc>>1]|0)>>>0:0))){o=s;break}i=Zd(Cf,i,o,q)|0;oa=3261;break}i=Zd(Cf,i,o,q)|0;oa=3261}while(0);if((oa|0)==3261){if(!i){i=7;oa=3268;break}o=c[Vc>>2]|0}o=i+(o<<2)|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[db>>2]=i;o=c[t>>2]|0;i=c[l>>2]|0}i=Wa[o&127](i)|0;if(!i){i=(c[Gd>>2]|0)+(c[Fd>>2]|0)|0;na=c[db>>2]|0;oa=c[Vc>>2]|0;c[Vc>>2]=oa+1;c[na+(oa<<2)>>2]=x;oa=x+12|0;c[oa>>2]=(c[oa>>2]|0)+1;if((i|0)!=0?(yd=c[w+80>>2]|0,(yd|0)!=0):0){c[x+20>>2]=i;i=Xa[yd&255](c[l>>2]|0,i+-1|0)|0;oa=3270}else{i=0;oa=3270}}else oa=3268}else{i=0;oa=3270}}while(0);if((oa|0)==3268){oa=0;if(x){l=x+8|0;oa=3270}}if((oa|0)==3270){oa=0;t=(c[l>>2]|0)+8|0;if(c[t>>2]|0){q=c[f>>2]|0;l=c[mf>>2]|0;do if(l|0){if(q|0){if(c[q+480>>2]|0){Xd(q,l);break}na=l;if((c[q+304>>2]|0)>>>0<=na>>>0?(c[q+308>>2]|0)>>>0>na>>>0:0){na=q+300|0;c[l>>2]=c[na>>2];c[na>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);r=c[t>>2]|0;ua:do if(!r)l=0;else{s=(Eu(r)|0)+1|0;va:do if(!q){na=Sv(s|0,0,-1,-1)|0;ma=L()|0;if(ma>>>0>0|(ma|0)==0&na>>>0>2147483390){l=0;break ua}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](s)|0;oa=3306;break}l=Wa[c[29356>>2]&127](s)|0;if((c[14985]|0)>>>0>>0)c[14985]=s;q=59064;o=c[q>>2]|0;q=c[q+4>>2]|0;if((q|0)>0|(q|0)==0&o>>>0>0){na=c[14978]|0;ma=Tv(o|0,q|0,l|0,((l|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break ua}o=Wa[c[29352>>2]&127](l)|0;o=(c[14978]|0)+o|0;c[14978]=o;if(o>>>0>(c[14982]|0)>>>0)c[14982]=o;o=(c[14981]|0)+1|0;c[14981]=o;if(o>>>0<=(c[14987]|0)>>>0)break;c[14987]=o}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0){l=0;break ua}}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){o=q+300|0;l=c[o>>2]|0;if(l|0){c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3306;break va}o=q+296|0;l=c[o>>2]|0;if(!l){l=q+292|0;break}else{c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3306;break va}}else l=q+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(q,s,0)|0;oa=3306}while(0);if((oa|0)==3306){oa=0;if(!l){l=0;break}}ew(l|0,r|0,s|0)|0}while(0);c[mf>>2]=l;l=c[t>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);c[t>>2]=0}}if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case -95:{ea=rf;fa=ea+40|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));c[Wc>>2]=Cf;na=c[p+8>>2]|0;i=pa+(na*40|0)|0;c[rf>>2]=c[i>>2];c[rf+4>>2]=c[i+4>>2];c[rf+8>>2]=c[i+8>>2];c[rf+12>>2]=c[i+12>>2];c[rf+16>>2]=c[i+16>>2];i=b[sa>>1]&-1025;b[sa>>1]=i;i=i&65535;wa:do if((i&18|0)!=0?(b[pa+(na*40|0)+8>>1]&2048)==0:0){l=(i|4096)&65535;b[sa>>1]=l;do if(i&16384){i=(c[rf>>2]|0)+(c[Xb>>2]|0)|0;if((i|0)<1)if(!(l&16)){oa=3322;break}else i=1;if(Eg(rf,i,1)|0){i=7;break wa}gw((c[Ob>>2]|0)+(c[Xb>>2]|0)|0,0,c[rf>>2]|0)|0;c[Xb>>2]=(c[Xb>>2]|0)+(c[rf>>2]|0);i=b[sa>>1]&-16897;b[sa>>1]=i;if(!((c[Qb>>2]|0)!=0?(c[Ob>>2]|0)==(c[ec>>2]|0):0))oa=3322}else oa=3322;while(0);if((oa|0)==3322){oa=0;i=Jg(rf)|0;if(i|0)break;i=b[sa>>1]|0}b[sa>>1]=i&-4097;i=0}else i=0;while(0);l=b[sa>>1]|0;if(!((l&514)==514&(a[Jb>>0]|0)==1)){if(!(l&1)){l=Gg(rf,1)|0;oa=3329}}else{l=c[Ob>>2]|0;oa=3329}xa:do if((oa|0)==3329){oa=0;if(l){w=Sd(Cf,l,c[(c[uf>>2]|0)+(c[p+4>>2]<<4)>>2]|0)|0;t=c[c[w+60>>2]>>2]|0;q=c[Pb>>2]|0;if(!q){l=Wb;i=Vb}else{l=a[t>>0]|0;if(!(l<<24>>24))i=0;else{i=0;o=t;do{o=o+1|0;i=G(i+(d[208+(l&255)>>0]|0)|0,-1640531535)|0;l=a[o>>0]|0}while(l<<24>>24!=0)}i=(i>>>0)%((c[dc>>2]|0)>>>0)|0;l=q+(i<<3)|0;i=q+(i<<3)+4|0}l=c[l>>2]|0;ya:do if(!l)i=59292;else{s=d[208+(d[t>>0]|0)>>0]|0;while(1){i=c[i>>2]|0;l=l+-1|0;q=c[i+12>>2]|0;na=a[q>>0]|0;o=(d[208+(na&255)>>0]|0)-s|0;if(!(na<<24>>24==0|(o|0)!=0)){r=t;do{q=q+1|0;r=r+1|0;na=a[q>>0]|0;o=(d[208+(na&255)>>0]|0)-(d[208+(d[r>>0]|0)>>0]|0)|0}while(!(na<<24>>24==0|(o|0)!=0))}if(!o)break ya;if(!l){i=59292;break}}}while(0);i=c[i+8>>2]|0;if((i|0?(zd=c[i>>2]|0,Ad=c[zd+4>>2]|0,Ad|0):0)?c[zd+20>>2]|0:0){i=Ai(Cf,w,i,Ad,mf)|0;if(i|0)break;s=w+64|0;i=c[s>>2]|0;if(!i){i=0;break}l=i;while(1){if((c[l>>2]|0)==(Cf|0))break;l=c[l+24>>2]|0;if(!l){i=0;break xa}}l=c[Vc>>2]|0;if(!((l|0)%5|0)){q=cw(l|0,((l|0)<0)<<31>>31|0,2)|0;q=Sv(q|0,L()|0,20,0)|0;r=L()|0;i=c[db>>2]|0;za:do if(!i){if(c[$c>>2]|0){if(a[zf>>0]|0){i=7;break xa}}else{do if(r>>>0>0|((r|0)==0?q>>>0>(e[Xc>>1]|0)>>>0:0))i=Yc;else{i=c[af>>2]|0;if(i|0){c[af>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;oa=3367;break za}i=c[cd>>2]|0;if(!i){i=fd;break}c[cd>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;oa=3367;break za}while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(Cf,q,r)|0;oa=3367}else{o=i;do if((c[_e>>2]|0)>>>0<=o>>>0){if((c[$e>>2]|0)>>>0<=o>>>0)break;if(!(r>>>0>0|((r|0)==0?q>>>0>(e[Xc>>1]|0)>>>0:0)))break za;i=Zd(Cf,i,q,r)|0;oa=3367;break za}while(0);i=Zd(Cf,i,q,r)|0;oa=3367}while(0);if((oa|0)==3367){oa=0;if(!i){i=7;break}l=c[Vc>>2]|0}na=i+(l<<2)|0;c[na>>2]=0;c[na+4>>2]=0;c[na+8>>2]=0;c[na+12>>2]=0;c[na+16>>2]=0;c[db>>2]=i;i=c[s>>2]|0}Aa:do if(!i)i=0;else while(1){if((c[i>>2]|0)==(Cf|0))break Aa;i=c[i+24>>2]|0;if(!i){i=0;break}}while(0);ma=c[db>>2]|0;na=c[Vc>>2]|0;c[Vc>>2]=na+1;c[ma+(na<<2)>>2]=i;i=i+12|0;c[i>>2]=(c[i>>2]|0)+1;i=0;break}c[we>>2]=t;i=dd(Cf,36690,we)|0;c[mf>>2]=i;i=1}}while(0);if(!((b[sa>>1]&9216)==0&(c[Qb>>2]|0)==0))Cg(rf);if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case -94:{i=(c[ad>>2]|0)+1|0;c[ad>>2]=i;l=Sd(Cf,c[p+16>>2]|0,c[(c[uf>>2]|0)+(c[p+4>>2]<<4)>>2]|0)|0;do if(l|0?(Bd=l+64|0,Cd=c[Bd>>2]|0,Cd|0):0){l=Cd;do{if((c[(c[l+8>>2]|0)+4>>2]|0)>0){j=6;oa=3401;break c}l=c[l+24>>2]|0}while((l|0)!=0);c[Bd>>2]=0;r=Cd;l=0;while(1){o=c[r>>2]|0;q=r+24|0;i=r;r=c[q>>2]|0;if((o|0)==(Cf|0)){c[Bd>>2]=i;c[q>>2]=0;o=i}else{o=o+360|0;c[q>>2]=c[o>>2];c[o>>2]=i;o=l}if(!r)break;else l=o}i=o+8|0;l=Wa[c[(c[c[o+4>>2]>>2]|0)+20>>2]&127](c[i>>2]|0)|0;if(l|0){oa=3400;break c}c[i>>2]=0;c[Bd>>2]=0;i=c[o>>2]|0;ma=o+12|0;na=(c[ma>>2]|0)+-1|0;c[ma>>2]=na;if(!na){if(i|0){if(c[i+480>>2]|0){Xd(i,o);break}na=o;if((c[i+304>>2]|0)>>>0<=na>>>0?(c[i+308>>2]|0)>>>0>na>>>0:0){na=i+300|0;c[o>>2]=c[na>>2];c[na>>2]=o;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{na=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}}while(0);c[ad>>2]=(c[ad>>2]|0)+-1;l=m;q=pa;o=qa;i=0;break}case -93:{c[rf>>2]=0;w=c[(c[p+16>>2]|0)+8>>2]|0;if(!w){i=6;oa=3458;break c}x=c[w>>2]|0;if(!x){i=6;oa=3458;break c}i=Xa[c[x+24>>2]&255](w,rf)|0;t=w+8|0;if(c[t>>2]|0){q=c[f>>2]|0;l=c[mf>>2]|0;do if(l|0){if(q|0){if(c[q+480>>2]|0){Xd(q,l);break}na=l;if((c[q+304>>2]|0)>>>0<=na>>>0?(c[q+308>>2]|0)>>>0>na>>>0:0){na=q+300|0;c[l>>2]=c[na>>2];c[na>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);r=c[t>>2]|0;Ba:do if(!r)l=0;else{s=(Eu(r)|0)+1|0;Ca:do if(!q){na=Sv(s|0,0,-1,-1)|0;ma=L()|0;if(ma>>>0>0|(ma|0)==0&na>>>0>2147483390){l=0;break Ba}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](s)|0;oa=3440;break}l=Wa[c[29356>>2]&127](s)|0;if((c[14985]|0)>>>0>>0)c[14985]=s;q=59064;o=c[q>>2]|0;q=c[q+4>>2]|0;if((q|0)>0|(q|0)==0&o>>>0>0){na=c[14978]|0;ma=Tv(o|0,q|0,l|0,((l|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break Ba}o=Wa[c[29352>>2]&127](l)|0;o=(c[14978]|0)+o|0;c[14978]=o;if(o>>>0>(c[14982]|0)>>>0)c[14982]=o;o=(c[14981]|0)+1|0;c[14981]=o;if(o>>>0<=(c[14987]|0)>>>0)break;c[14987]=o}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0){l=0;break Ba}}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){o=q+300|0;l=c[o>>2]|0;if(l|0){c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3440;break Ca}o=q+296|0;l=c[o>>2]|0;if(!l){l=q+292|0;break}else{c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3440;break Ca}}else l=q+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(q,s,0)|0;oa=3440}while(0);if((oa|0)==3440){oa=0;if(!l){l=0;break}}ew(l|0,r|0,s|0)|0}while(0);c[mf>>2]=l;l=c[t>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);c[t>>2]=0}if(i|0){oa=3458;break c}c[c[rf>>2]>>2]=w;o=c[p+4>>2]|0;i=c[xd>>2]|0;if((o|0)>0)i=i+(((c[va>>2]|0)-o|0)*40|0)|0;l=c[(c[oc>>2]|0)+(o<<2)>>2]|0;if(l|0){na=l+5|0;a[na>>0]=a[na>>0]&-2;tg(f,c[(c[oc>>2]|0)+(o<<2)>>2]|0);c[(c[oc>>2]|0)+(o<<2)>>2]=0}if((c[i+24>>2]|0)<96){if(Eg(i,96,0)|0){oa=3459;break c}i=c[i+16>>2]|0}else{na=c[i+20>>2]|0;c[i+16>>2]=na;i=i+8|0;b[i>>1]=b[i>>1]&13;i=na}c[(c[oc>>2]|0)+(o<<2)>>2]=i;ea=i;fa=ea+36|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));a[i>>0]=2;a[i+1>>0]=-1;b[i+56>>1]=0;c[i+72>>2]=i+88;if(!i){oa=3459;break c}c[i+40>>2]=c[rf>>2];l=w+4|0;c[l>>2]=(c[l>>2]|0)+1;l=m;q=pa;o=qa;i=0;break}case 9:{q=pa+((c[p+12>>2]|0)*40|0)|0;l=q+40|0;w=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;x=c[w+40>>2]|0;s=c[x>>2]|0;y=c[s>>2]|0;o=c[l>>2]|0;q=c[q>>2]|0;r=c[ta>>2]|0;if((o|0)>0){i=0;do{na=i;i=i+1|0;c[r+(na<<2)>>2]=l+(i*40|0)}while((i|0)!=(o|0))}i=_a[c[y+32>>2]&127](x,q,c[p+16>>2]|0,o,r)|0;t=s+8|0;if(c[t>>2]|0){q=c[f>>2]|0;l=c[mf>>2]|0;do if(l|0){if(q|0){if(c[q+480>>2]|0){Xd(q,l);break}na=l;if((c[q+304>>2]|0)>>>0<=na>>>0?(c[q+308>>2]|0)>>>0>na>>>0:0){na=q+300|0;c[l>>2]=c[na>>2];c[na>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);r=c[t>>2]|0;Da:do if(!r)l=0;else{s=(Eu(r)|0)+1|0;Ea:do if(!q){na=Sv(s|0,0,-1,-1)|0;ma=L()|0;if(ma>>>0>0|(ma|0)==0&na>>>0>2147483390){l=0;break Da}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](s)|0;oa=3499;break}l=Wa[c[29356>>2]&127](s)|0;if((c[14985]|0)>>>0>>0)c[14985]=s;q=59064;o=c[q>>2]|0;q=c[q+4>>2]|0;if((q|0)>0|(q|0)==0&o>>>0>0){na=c[14978]|0;ma=Tv(o|0,q|0,l|0,((l|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break Da}o=Wa[c[29352>>2]&127](l)|0;o=(c[14978]|0)+o|0;c[14978]=o;if(o>>>0>(c[14982]|0)>>>0)c[14982]=o;o=(c[14981]|0)+1|0;c[14981]=o;if(o>>>0<=(c[14987]|0)>>>0)break;c[14987]=o}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0){l=0;break Da}}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){o=q+300|0;l=c[o>>2]|0;if(l|0){c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3499;break Ea}o=q+296|0;l=c[o>>2]|0;if(!l){l=q+292|0;break}else{c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3499;break Ea}}else l=q+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(q,s,0)|0;oa=3499}while(0);if((oa|0)==3499){oa=0;if(!l){l=0;break}}ew(l|0,r|0,s|0)|0}while(0);c[mf>>2]=l;l=c[t>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);c[t>>2]=0}if(i|0){oa=3855;break c}na=Wa[c[y+40>>2]&127](x)|0;a[w+2>>0]=0;if(!na){l=m;q=pa;o=qa;i=0}else{i=0;oa=28}break}case -92:{i=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;x=c[p+12>>2]|0;y=pa+(x*40|0)|0;if(a[i+2>>0]|0){i=pa+(x*40|0)+8|0;if(!(b[i>>1]&9216))b[i>>1]=1;else Dg(y);l=m;q=pa;o=qa;i=K;break d}i=i+40|0;q=c[c[i>>2]>>2]|0;l=c[q>>2]|0;c[kc>>2]=0;c[kc+4>>2]=0;c[kc+8>>2]=0;c[kc+12>>2]=0;c[kc+16>>2]=0;c[kc+20>>2]=0;c[kc+24>>2]=0;c[rf>>2]=y;w=pa+(x*40|0)+8|0;o=b[w>>1]|0;if(!(b[p+2>>1]&1))b[w>>1]=o&15904|1;else{if(!(o&9216))b[w>>1]=1;else Dg(y);b[w>>1]=16385;c[y>>2]=0}i=Ya[c[l+44>>2]&127](c[i>>2]|0,rf,c[p+8>>2]|0)|0;t=q+8|0;if(c[t>>2]|0){q=c[f>>2]|0;l=c[mf>>2]|0;do if(l|0){if(q|0){if(c[q+480>>2]|0){Xd(q,l);break}na=l;if((c[q+304>>2]|0)>>>0<=na>>>0?(c[q+308>>2]|0)>>>0>na>>>0:0){na=q+300|0;c[l>>2]=c[na>>2];c[na>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);r=c[t>>2]|0;Fa:do if(!r)l=0;else{s=(Eu(r)|0)+1|0;Ga:do if(!q){na=Sv(s|0,0,-1,-1)|0;ma=L()|0;if(ma>>>0>0|(ma|0)==0&na>>>0>2147483390){l=0;break Fa}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](s)|0;oa=3554;break}l=Wa[c[29356>>2]&127](s)|0;if((c[14985]|0)>>>0>>0)c[14985]=s;q=59064;o=c[q>>2]|0;q=c[q+4>>2]|0;if((q|0)>0|(q|0)==0&o>>>0>0){na=c[14978]|0;ma=Tv(o|0,q|0,l|0,((l|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break Fa}o=Wa[c[29352>>2]&127](l)|0;o=(c[14978]|0)+o|0;c[14978]=o;if(o>>>0>(c[14982]|0)>>>0)c[14982]=o;o=(c[14981]|0)+1|0;c[14981]=o;if(o>>>0<=(c[14987]|0)>>>0)break;c[14987]=o}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0){l=0;break Fa}}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){o=q+300|0;l=c[o>>2]|0;if(l|0){c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3554;break Ga}o=q+296|0;l=c[o>>2]|0;if(!l){l=q+292|0;break}else{c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3554;break Ga}}else l=q+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(q,s,0)|0;oa=3554}while(0);if((oa|0)==3554){oa=0;if(!l){l=0;break}}ew(l|0,r|0,s|0)|0}while(0);c[mf>>2]=l;l=c[t>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);c[t>>2]=0}if((c[Kb>>2]|0)>0){i=b[w>>1]|0;if((i&514)==514?(a[pa+(x*40|0)+10>>0]|0)==1:0)i=c[pa+(x*40|0)+16>>2]|0;else if(!(i&1))i=Gg(y,1)|0;else i=0;c[xe>>2]=i;Ag(f,31408,xe);i=c[Kb>>2]|0}l=b[w>>1]|0;if((l&2)!=0?(a[pa+(x*40|0)+10>>0]|0)!=sd<<24>>24:0){Ig(y,sd)|0;l=b[w>>1]|0}o=l&65535;if(o&18){l=c[pa+(x*40|0)+12>>2]|0;if(o&16384)l=(c[y>>2]|0)+l|0;if((l|0)>(c[(c[pa+(x*40|0)+32>>2]|0)+108>>2]|0)){oa=3576;break c}else l=(i|0)==0?7:12}else l=(i|0)==0?7:12;switch(l&15){case 12:{oa=3855;break c}case 15:{oa=3891;break c}case 7:{l=m;q=pa;o=qa;break}default:{h=0;oa=3900;break c}}break}case 60:{i=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;if(!(a[i+2>>0]|0)){t=i+40|0;i=c[t>>2]|0;x=c[i>>2]|0;w=c[x>>2]|0;i=Wa[c[w+36>>2]&127](i)|0;x=x+8|0;if(c[x>>2]|0){q=c[f>>2]|0;l=c[mf>>2]|0;do if(l|0){if(q|0){if(c[q+480>>2]|0){Xd(q,l);break}na=l;if((c[q+304>>2]|0)>>>0<=na>>>0?(c[q+308>>2]|0)>>>0>na>>>0:0){na=q+300|0;c[l>>2]=c[na>>2];c[na>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);r=c[x>>2]|0;Ha:do if(!r)l=0;else{s=(Eu(r)|0)+1|0;Ia:do if(!q){na=Sv(s|0,0,-1,-1)|0;ma=L()|0;if(ma>>>0>0|(ma|0)==0&na>>>0>2147483390){l=0;break Ha}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](s)|0;oa=3616;break}l=Wa[c[29356>>2]&127](s)|0;if((c[14985]|0)>>>0>>0)c[14985]=s;q=59064;o=c[q>>2]|0;q=c[q+4>>2]|0;if((q|0)>0|(q|0)==0&o>>>0>0){na=c[14978]|0;ma=Tv(o|0,q|0,l|0,((l|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break Ha}o=Wa[c[29352>>2]&127](l)|0;o=(c[14978]|0)+o|0;c[14978]=o;if(o>>>0>(c[14982]|0)>>>0)c[14982]=o;o=(c[14981]|0)+1|0;c[14981]=o;if(o>>>0<=(c[14987]|0)>>>0)break;c[14987]=o}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0){l=0;break Ha}}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){o=q+300|0;l=c[o>>2]|0;if(l|0){c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3616;break Ia}o=q+296|0;l=c[o>>2]|0;if(!l){l=q+292|0;break}else{c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3616;break Ia}}else l=q+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(q,s,0)|0;oa=3616}while(0);if((oa|0)==3616)if(!l){l=0;break}ew(l|0,r|0,s|0)|0}while(0);c[mf>>2]=l;l=c[x>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);c[x>>2]=0}if(i|0){oa=3855;break c}if(!(Wa[c[w+40>>2]&127](c[t>>2]|0)|0)){i=0;oa=20}else{l=m;o=pa;i=0;oa=21}}else{l=m;q=pa;o=qa;i=K}break}case -91:{i=Sc;o=c[i>>2]|0;i=c[i+4>>2]|0;q=Sc;c[q>>2]=o|67108864;c[q+4>>2]=i;q=c[(c[p+16>>2]|0)+8>>2]|0;i=c[p+4>>2]|0;l=pa+(i*40|0)|0;if((b[pa+(i*40|0)+8>>1]&2?(a[pa+(i*40|0)+10>>0]|0)!=1:0)?(Dd=Ig(l,1)|0,Dd|0):0){i=Dd;oa=3855;break c}i=Xa[c[(c[q>>2]|0)+76>>2]&255](q,c[pa+(i*40|0)+16>>2]|0)|0;if((o&67108864|0)==0&0==0){la=Sc;ma=c[la+4>>2]|0;na=Sc;c[na>>2]=c[la>>2]&-67108865;c[na+4>>2]=ma}t=q+8|0;if(c[t>>2]|0){q=c[f>>2]|0;l=c[mf>>2]|0;do if(l|0){if(q|0){if(c[q+480>>2]|0){Xd(q,l);break}na=l;if((c[q+304>>2]|0)>>>0<=na>>>0?(c[q+308>>2]|0)>>>0>na>>>0:0){na=q+300|0;c[l>>2]=c[na>>2];c[na>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);r=c[t>>2]|0;Ja:do if(!r)l=0;else{s=(Eu(r)|0)+1|0;Ka:do if(!q){na=Sv(s|0,0,-1,-1)|0;ma=L()|0;if(ma>>>0>0|(ma|0)==0&na>>>0>2147483390){l=0;break Ja}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](s)|0;oa=3666;break}l=Wa[c[29356>>2]&127](s)|0;if((c[14985]|0)>>>0>>0)c[14985]=s;q=59064;o=c[q>>2]|0;q=c[q+4>>2]|0;if((q|0)>0|(q|0)==0&o>>>0>0){na=c[14978]|0;ma=Tv(o|0,q|0,l|0,((l|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break Ja}o=Wa[c[29352>>2]&127](l)|0;o=(c[14978]|0)+o|0;c[14978]=o;if(o>>>0>(c[14982]|0)>>>0)c[14982]=o;o=(c[14981]|0)+1|0;c[14981]=o;if(o>>>0<=(c[14987]|0)>>>0)break;c[14987]=o}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0){l=0;break Ja}}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){o=q+300|0;l=c[o>>2]|0;if(l|0){c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3666;break Ka}o=q+296|0;l=c[o>>2]|0;if(!l){l=q+292|0;break}else{c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3666;break Ka}}else l=q+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(q,s,0)|0;oa=3666}while(0);if((oa|0)==3666){oa=0;if(!l){l=0;break}}ew(l|0,r|0,s|0)|0}while(0);c[mf>>2]=l;l=c[t>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);c[t>>2]=0}na=(d[vf>>0]|d[vf+1>>0]<<8)&-4;a[vf>>0]=na;a[vf+1>>0]=na>>8;if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case 10:{if(a[zf>>0]|0){i=2;j=K;break c}y=p+16|0;t=c[(c[y>>2]|0)+8>>2]|0;if(!t){i=12;j=6;break c}i=c[t>>2]|0;if(!i){i=12;j=6;break c}s=c[p+8>>2]|0;o=i+52|0;i=c[o>>2]|0;La:do if(i){r=a[Rb>>0]|0;q=c[ta>>2]|0;if((s|0)>0){i=pa+((c[p+12>>2]|0)*40|0)|0;l=0;while(1){c[q+(l<<2)>>2]=i;l=l+1|0;if((l|0)==(s|0))break;else i=i+40|0}i=c[o>>2]|0}w=p+2|0;a[Rb>>0]=b[w>>1];x=Za[i&127](t,s,q,rf)|0;a[Rb>>0]=r;s=t+8|0;if(c[s>>2]|0){o=c[f>>2]|0;i=c[mf>>2]|0;Ma:do if(i|0){do if(o|0){if(c[o+480>>2]|0){Xd(o,i);break Ma}l=i;if((c[o+304>>2]|0)>>>0>l>>>0)break;if((c[o+308>>2]|0)>>>0<=l>>>0)break;na=o+300|0;c[i>>2]=c[na>>2];c[na>>2]=i;break Ma}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);q=c[s>>2]|0;Na:do if(!q)i=0;else{r=(Eu(q)|0)+1|0;Oa:do if(!o){na=Sv(r|0,0,-1,-1)|0;ma=L()|0;if(ma>>>0>0|(ma|0)==0&na>>>0>2147483390){i=0;break Na}if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](r)|0;oa=3718;break}i=Wa[c[29356>>2]&127](r)|0;if((c[14985]|0)>>>0>>0)c[14985]=r;o=59064;l=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)>0|(o|0)==0&l>>>0>0){na=c[14978]|0;ma=Tv(l|0,o|0,i|0,((i|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){i=0;break Na}l=Wa[c[29352>>2]&127](i)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0<=(c[14987]|0)>>>0)break;c[14987]=l}else{if(c[o+272>>2]|0){if(a[o+81>>0]|0){i=0;break Na}}else{do if(!(0<0|(0==0?(e[o+276>>1]|0)>>>0>>0:0))){l=o+300|0;i=c[l>>2]|0;if(i|0){c[l>>2]=c[i>>2];oa=o+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3718;break Oa}l=o+296|0;i=c[l>>2]|0;if(!i){i=o+292|0;break}else{c[l>>2]=c[i>>2];oa=o+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3718;break Oa}}else i=o+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(o,r,0)|0;oa=3718}while(0);if((oa|0)==3718){oa=0;if(!i){i=0;break}}ew(i|0,q|0,r|0)|0}while(0);c[mf>>2]=i;i=c[s>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);c[s>>2]=0}if(!x){if(c[p+4>>2]|0){la=rf;ma=c[la+4>>2]|0;na=zb;c[na>>2]=c[la>>2];c[na+4>>2]=ma}c[rc>>2]=(c[rc>>2]|0)+1;i=0;break}else{if((x&255|0)!=19){oa=3733;break c}if(!(a[(c[y>>2]|0)+16>>0]|0)){oa=3733;break c}i=b[w>>1]|0;switch(i<<16>>16){case 5:{i=2;oa=3732;break c}case 4:{i=0;break La}default:{oa=3731;break c}}}}else i=K;while(0);l=m;q=pa;o=qa;break}case -90:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;l=i;c[l>>2]=c[(c[(c[(c[uf>>2]|0)+(c[p+4>>2]<<4)+4>>2]|0)+4>>2]|0)+44>>2];c[l+4>>2]=0;l=m;q=pa;o=qa;i=K;break}case -89:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;q=c[(c[uf>>2]|0)+(c[p+4>>2]<<4)+4>>2]|0;l=c[p+12>>2]|0;o=c[q+4>>2]|0;if(!l)l=0;else{na=c[o+44>>2]|0;l=na>>>0>>0?l:na}c[o+4>>2]=c[q>>2];o=(c[o>>2]|0)+156|0;if((l|0)>0)c[o>>2]=l;else l=c[o>>2]|0;q=i;c[q>>2]=l;c[q+4>>2]=((l|0)<0)<<31>>31;l=m;q=pa;o=qa;i=K;break}case 63:case 62:{o=b[p+2>>1]|0;l=((o&65535)<<2)+28|0;do if(c[$c>>2]|0)if(!(a[zf>>0]|0))oa=3758;else{l=p;j=m;i=zf;oa=3898;break a}else{if(!(0<0|(0==0?(e[Xc>>1]|0)>>>0>>0:0))){i=c[af>>2]|0;if(i|0){c[af>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;break}i=c[cd>>2]|0;if(!i)i=fd;else{c[cd>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;break}}else i=Yc;c[i>>2]=(c[i>>2]|0)+1;oa=3758}while(0);if((oa|0)==3758)i=_d(Cf,l,0)|0;if(!i){l=p;j=h;i=zf;oa=3892;break a}c[i>>2]=0;oa=p+16|0;c[i+4>>2]=c[oa>>2];c[i+16>>2]=(p-m|0)/20|0;c[i+12>>2]=f;c[i+20>>2]=0;a[i+25>>0]=o;a[p+1>>0]=-16;c[oa>>2]=i;a[p>>0]=(d[p>>0]|0)+2;oa=3761;break}case 65:case 64:{oa=3761;break}default:{l=m;q=pa;o=qa;i=K}}while(0);Pa:do if((oa|0)==34){oa=0;i=c[p+4>>2]|0;if(i|0){oa=39;break c}i=c[nc>>2]|0;if(!i){oa=38;break c}c[nc>>2]=c[i+4>>2];c[La>>2]=(c[La>>2]|0)+-1;m=c[rc>>2]|0;c[sc>>2]=m;c[tc>>2]=(c[tc>>2]|0)+m;i=sg(i)|0;m=c[le>>2]|0;if((c[p+8>>2]|0)==4)i=(c[m+(i*20|0)+8>>2]|0)+-1|0;l=m;q=c[xd>>2]|0;o=qa;p=m+(i*20|0)|0;i=K}else if((oa|0)==83){oa=0;na=c[xd>>2]|0;o=c[l>>2]|0;l=na+(o*40|0)|0;o=na+(o*40|0)+8|0;if(!(b[o>>1]&9216))b[o>>1]=4;else lh(l)|0;o=l+8|0;b[o>>1]=2562;c[l+16>>2]=c[p+16>>2];c[l+12>>2]=c[p+4>>2];a[l+10>>0]=sd;l=c[p+12>>2]|0;if((l|0)>0?(na=pa+(l*40|0)|0,(c[na+4>>2]|0)==0?(c[na>>2]|0)==(e[p+2>>1]|0):0):0){b[o>>1]=2576;l=m;q=pa;o=qa}else{l=m;q=pa;o=qa}}else if((oa|0)==1049){if(((d[vf>>0]|d[vf+1>>0]<<8)&3)==1){i=516;oa=3855;break c}w=c[p+8>>2]|0;A=c[p+12>>2]|0;i=c[uf>>2]|0;C=c[i+(A<<4)+4>>2]|0;l=p+2|0;q=b[l>>1]|0;if(z<<24>>24==109){o=(q&8|4)&65535;i=a[(c[i+(A<<4)+12>>2]|0)+76>>0]|0;if((i&255)<(d[pc>>0]|0)){a[pc>>0]=i;B=o}else B=o}else B=0;if(q&16){s=pa+(w*40|0)|0;t=pa+(w*40|0)+8|0;r=b[t>>1]|0;i=r&65535;do if(!(i&4)){if(i&8|0){o=Mg(+g[s>>3])|0;q=L()|0;i=r;break}if(!(i&18)){o=0;q=0;i=r}else{o=Ng(a[pa+(w*40|0)+10>>0]|0,c[pa+(w*40|0)+12>>2]|0,c[pa+(w*40|0)+16>>2]|0)|0;q=L()|0;i=b[t>>1]|0}}else{q=s;o=c[q>>2]|0;q=c[q+4>>2]|0;i=r}while(0);w=s;c[w>>2]=o;c[w+4>>2]=q;b[t>>1]=i&15904|4;w=o}z=p+1|0;switch(a[z>>0]|0){case -9:{y=c[p+16>>2]|0;x=e[y+8>>1]|0;break}case -3:{x=c[p+16>>2]|0;y=0;break}default:{x=0;y=0}}s=c[p+4>>2]|0;i=c[xd>>2]|0;if((s|0)>0)i=i+(((c[va>>2]|0)-s|0)*40|0)|0;o=x<<3;t=o+96|0;o=o+296|0;q=c[(c[oc>>2]|0)+(s<<2)>>2]|0;if(q|0){oa=q+5|0;a[oa>>0]=a[oa>>0]&-2;tg(f,c[(c[oc>>2]|0)+(s<<2)>>2]|0);c[(c[oc>>2]|0)+(s<<2)>>2]=0}if((c[i+24>>2]|0)<(o|0)){if(Eg(i,o,0)|0){l=p;j=h;i=zf;oa=3892;break a}o=i+16|0;r=o;o=c[o>>2]|0}else{o=c[i+20>>2]|0;r=i+16|0;c[r>>2]=o;oa=i+8|0;b[oa>>1]=b[oa>>1]&13}c[(c[oc>>2]|0)+(s<<2)>>2]=o;i=A&255;q=o+1|0;ea=o;fa=ea+36|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));a[q>>0]=i;b[o+56>>1]=x;c[o+72>>2]=o+88+(x<<2);oa=(c[r>>2]|0)+t|0;i=o+40|0;c[i>>2]=oa;c[oa>>2]=0;c[oa+4>>2]=0;c[oa+8>>2]=0;c[oa+12>>2]=0;c[oa+16>>2]=0;if(!o){l=p;j=h;i=zf;oa=3892;break a}a[o+2>>0]=1;oa=o+5|0;a[oa>>0]=a[oa>>0]|4;c[o+52>>2]=w;i=Vg(C,w,B,y,c[i>>2]|0)|0;c[o+44>>2]=y;a[o+4>>0]=(a[z>>0]|0)!=-9&1;oa=1074}else if((oa|0)==1216){oa=0;x=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;w=c[p+12>>2]|0;r=pa+(w*40|0)|0;i=c[p+16>>2]|0;if((i|0)>0){c[Hd>>2]=c[x+44>>2];b[Aa>>1]=i;c[Ba>>2]=r;s=0;r=Hd;i=z;q=0}else{o=pa+(w*40|0)+8|0;l=b[o>>1]|0;do if(l&16384){q=pa+(w*40|0)+12|0;i=(c[r>>2]|0)+(c[q>>2]|0)|0;if((i|0)<1)if(!(l&16))break;else i=1;if(Eg(r,i,1)|0){oa=1268;break c}gw((c[pa+(w*40|0)+16>>2]|0)+(c[q>>2]|0)|0,0,c[r>>2]|0)|0;c[q>>2]=(c[q>>2]|0)+(c[r>>2]|0);b[o>>1]=b[o>>1]&-16897}while(0);r=x+44|0;s=c[r>>2]|0;t=s+6|0;q=((e[t>>1]|0)*40|0)+56|0;o=c[s+12>>2]|0;Qa:do if(!o){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](q)|0;oa=1246;break}o=Wa[c[29356>>2]&127](q)|0;if((c[14985]|0)>>>0>>0)c[14985]=q;l=59064;i=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&i>>>0>0){na=c[14978]|0;ma=Tv(i|0,l|0,o|0,((o|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}l=Wa[c[29340>>2]&127](o)|0;if(!l){oa=1268;break c}i=Wa[c[29352>>2]&127](l)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}else{if(c[o+272>>2]|0){if(a[o+81>>0]|0){oa=1268;break c}}else{do if(!(0<0|(0==0?(e[o+276>>1]|0)>>>0>>0:0))){l=o+300|0;i=c[l>>2]|0;if(i|0){c[l>>2]=c[i>>2];oa=o+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=1246;break Qa}l=o+296|0;i=c[l>>2]|0;if(!i){i=o+292|0;break}else{c[l>>2]=c[i>>2];oa=o+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=1246;break Qa}}else i=o+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(o,q,0)|0;oa=1246}while(0);if((oa|0)==1246)if(!i){oa=1268;break c}else l=i;c[l+4>>2]=l+16;c[l>>2]=s;b[l+8>>1]=(e[t>>1]|0)+1;_g(c[r>>2]|0,c[pa+(w*40|0)+12>>2]|0,c[pa+(w*40|0)+16>>2]|0,l);s=l;r=l;i=a[p>>0]|0;q=l}a[r+10>>0]=0;Ra:do if(i<<24>>24==27?(fe=b[r+8>>1]|0,fe<<16>>16!=0):0){l=c[r+4>>2]|0;o=fe&65535;i=0;while(1){if(b[l+(i*40|0)+8>>1]&1){o=1;break Ra}i=i+1|0;if(i>>>0>=o>>>0){o=0;break}}}else o=0;while(0);i=Xg(c[x+40>>2]|0,r,0,0,0,rf)|0;do if(s|0){if(c[Ze>>2]|0){Xd(Cf,q);break}oa=q;if((c[_e>>2]|0)>>>0<=oa>>>0?(c[$e>>2]|0)>>>0>oa>>>0:0){c[q>>2]=c[af>>2];c[af>>2]=q;break}if(q|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{oa=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}while(0);if(i|0){oa=1270;break c}i=c[rf>>2]|0;c[x+32>>2]=i;l=(i|0)==0;a[x+2>>0]=(l^1)&1;a[x+3>>0]=0;c[x+28>>2]=0;if((a[p>>0]|0)==29)if(l)oa=1269;else oa=1267;else if(!(i|o))oa=1267;else oa=1269;if((oa|0)==1267){oa=0;l=m;q=pa;o=qa;i=0;break}else if((oa|0)==1269){i=0;oa=28;break}}else if((oa|0)==1287){oa=0;la=c[i>>2]|0;ma=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;i=c[ma+40>>2]|0;c[je>>2]=0;la=pa+(la*40|0)|0;ka=c[la>>2]|0;la=c[la+4>>2]|0;i=Xg(i,0,ka,la,0,je)|0;na=ma+64|0;c[na>>2]=ka;c[na+4>>2]=la;a[ma+2>>0]=0;c[ma+28>>2]=0;a[ma+3>>0]=0;na=c[je>>2]|0;c[ma+32>>2]=na;if(!na)if(!i){l=m;q=pa;o=qa;i=0;break}else{oa=3855;break c}else if(!(c[p+8>>2]|0)){oa=1289;break c}else{oa=28;break}}else if((oa|0)==1521){oa=0;na=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;c[Yd>>2]=1;do if((a[na>>0]|0)==1){ma=c[na+40>>2]|0;if(!(a[ma+56>>0]|0)){i=ma+36|0;if(!(c[i>>2]|0)){c[Yd>>2]=1;a[na+2>>0]=1;break}else{c[Yd>>2]=0;i=Uh(ma+64|0,i)|0;oa=2142;break}}i=Vh(ma)|0;if(i|0){oa=2145;break c}la=ma+59|0;R=0;ka=0;while(1){if(ka>>>0>=(d[la>>0]|0)>>>0){oa=2138;break}ha=ma+64+(ka*72|0)|0;c[rf>>2]=0;ia=ma+64+(ka*72|0)+28|0;i=c[ia>>2]|0;l=((i|0)<0)<<31>>31;if((i|0)>16){ga=0;o=16;q=0;while(1){o=cw(o|0,q|0,4)|0;q=L()|0;ja=ga+1|0;if(!((q|0)<(l|0)|(q|0)==(l|0)&o>>>0>>0))break;else ga=ja}fa=Hd;c[fa>>2]=0;c[fa+4>>2]=0;if((i|0)>=17){i=c[7389]|0;if((i|0)!=0?(Wa[i&127](100)|0)!=0:0){S=0;U=0}else oa=1537;Sa:do if((oa|0)==1537){oa=0;do if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](976)|0;if(!i){S=0;U=0;break Sa}}else{i=Wa[c[29356>>2]&127](976)|0;if((c[14985]|0)>>>0<976)c[14985]=976;o=59064;l=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)>0|(o|0)==0&l>>>0>0){fa=c[14978]|0;ea=Tv(l|0,o|0,i|0,((i|0)<0)<<31>>31|0)|0;da=L()|0;c[14768]=((da|0)<0|(da|0)==0&ea>>>0<=fa>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){S=0;U=0;break Sa}l=Wa[c[29352>>2]&127](i)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0<=(c[14987]|0)>>>0)break;c[14987]=l}while(0);S=i+16|0;gw(S|0,0,960)|0;c[i>>2]=16;c[i+4>>2]=0;c[i+12>>2]=S;c[i+8>>2]=i+912;S=i;U=i}while(0);c[rf>>2]=U;fa=(U|0)==0;i=fa?7:0;l=c[ia>>2]|0;if((l|0)>0&(fa^1)){ba=(ga|0)==0;ca=ma+64+(ka*72|0)+8|0;da=ma+64+(ka*72|0)+64|0;o=0;aa=0;do{c[Td>>2]=0;i=l-aa|0;i=$h(ha,(i|0)<16?i:16,Hd,Td)|0;do if(!i){$=o+1|0;Z=c[Td>>2]|0;i=c[7389]|0;if((i|0)!=0?(Wa[i&127](100)|0)!=0:0)oa=1566;else oa=1554;Ta:do if((oa|0)==1554){oa=0;do if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](64)|0;if(!i){oa=1566;break Ta}else l=i}else{i=Wa[c[29356>>2]&127](64)|0;if((c[14985]|0)>>>0<64)c[14985]=64;q=59064;l=c[q>>2]|0;q=c[q+4>>2]|0;if((q|0)>0|(q|0)==0&l>>>0>0){fa=c[14978]|0;ea=Tv(l|0,q|0,i|0,((i|0)<0)<<31>>31|0)|0;_=L()|0;c[14768]=((_|0)<0|(_|0)==0&ea>>>0<=fa>>>0)&1}l=Wa[c[29340>>2]&127](i)|0;if(!l){oa=1566;break Ta}i=Wa[c[29352>>2]&127](l)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0<=(c[14987]|0)>>>0)break;c[14987]=i}while(0);ea=l+8|0;fa=ea+56|0;do{a[ea>>0]=0;ea=ea+1|0}while((ea|0)<(fa|0));c[l+4>>2]=Z;c[l>>2]=ha;_=c[ca>>2]|0;Z=(c[_+8>>2]|0)+9|0;_=(c[_+4>>2]|0)/2|0;_=(Z|0)>(_|0)?Z:_;c[l+16>>2]=_;Z=da;_=Sv(c[Z>>2]|0,c[Z+4>>2]|0,_|0,((_|0)<0)<<31>>31|0)|0;Z=L()|0;i=da;c[i>>2]=_;c[i+4>>2]=Z;i=0;Z=l;_=l}while(0);do if((oa|0)==1566){oa=0;if(!Z){i=7;Z=0;_=0;break}if((c[Z>>2]|0)>0){X=Z+12|0;W=0;do{l=c[X>>2]|0;Y=l+(W*56|0)|0;i=c[l+(W*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[l+(W*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);P=c[l+(W*56|0)+48>>2]|0;do if(P|0){Q=c[P+4>>2]|0;do if(Q|0){if((c[Q>>2]|0)>0){T=Q+12|0;O=0;do{l=c[T>>2]|0;V=l+(O*56|0)|0;i=c[l+(O*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[l+(O*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);J=c[l+(O*56|0)+48>>2]|0;do if(J|0){K=c[J+4>>2]|0;do if(K|0){if((c[K>>2]|0)>0){M=K+12|0;I=0;do{l=c[M>>2]|0;N=l+(I*56|0)|0;i=c[l+(I*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[l+(I*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);D=c[l+(I*56|0)+48>>2]|0;do if(D|0){E=c[D+4>>2]|0;do if(E|0){if((c[E>>2]|0)>0){F=E+12|0;C=0;do{l=c[F>>2]|0;H=l+(C*56|0)|0;i=c[l+(C*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[l+(C*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);y=c[l+(C*56|0)+48>>2]|0;do if(y|0){z=c[y+4>>2]|0;do if(z|0){if((c[z>>2]|0)>0){A=z+12|0;x=0;do{l=c[A>>2]|0;B=l+(x*56|0)|0;i=c[l+(x*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[l+(x*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);s=c[l+(x*56|0)+48>>2]|0;do if(s|0){t=c[s+4>>2]|0;do if(t|0){if((c[t>>2]|0)>0){w=t+12|0;r=0;do{l=c[w>>2]|0;q=l+(r*56|0)|0;i=c[l+(r*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[l+(r*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[l+(r*56|0)+48>>2]|0;do if(i|0){xg(c[i+4>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);ea=q;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));r=r+1|0}while((r|0)<(c[t>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{fa=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{fa=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}}while(0);ea=B;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));x=x+1|0}while((x|0)<(c[z>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](z);break}else{fa=Wa[c[29352>>2]&127](z)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](z);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](y);break}else{fa=Wa[c[29352>>2]&127](y)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](y);break}}while(0);ea=H;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));C=C+1|0}while((C|0)<(c[E>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](E);break}else{fa=Wa[c[29352>>2]&127](E)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](E);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](D);break}else{fa=Wa[c[29352>>2]&127](D)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](D);break}}while(0);ea=N;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));I=I+1|0}while((I|0)<(c[K>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](K);break}else{fa=Wa[c[29352>>2]&127](K)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](K);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](J);break}else{fa=Wa[c[29352>>2]&127](J)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](J);break}}while(0);ea=V;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));O=O+1|0}while((O|0)<(c[Q>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](Q);break}else{fa=Wa[c[29352>>2]&127](Q)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Q);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](P);break}else{fa=Wa[c[29352>>2]&127](P)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](P);break}}while(0);ea=Y;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));W=W+1|0}while((W|0)<(c[Z>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](Z);i=7;Z=0;_=0;break}else{i=Wa[c[29352>>2]&127](Z)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Z);i=7;Z=0;_=0;break}}while(0);Ua:do if(ba){if(!i){i=U;oa=1830}}else{q=1;l=1;do{q=q<<4;l=l+1|0}while((l|0)!=(ja|0));if(i|0)break;i=U;w=1;Va:while(1){t=(c[i+12>>2]|0)+((((o|0)/(q|0)|0|0)%16|0)*56|0)+48|0;i=c[t>>2]|0;if(!i){i=c[7389]|0;if(i|0?Wa[i&127](100)|0:0){i=7;break Ua}do if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](976)|0;if(!i){i=7;break Ua}else l=i}else{i=Wa[c[29356>>2]&127](976)|0;if((c[14985]|0)>>>0<976)c[14985]=976;r=59064;l=c[r>>2]|0;r=c[r+4>>2]|0;if((r|0)>0|(r|0)==0&l>>>0>0){fa=c[14978]|0;ea=Tv(l|0,r|0,i|0,((i|0)<0)<<31>>31|0)|0;Y=L()|0;c[14768]=((Y|0)<0|(Y|0)==0&ea>>>0<=fa>>>0)&1}l=Wa[c[29340>>2]&127](i)|0;if(!l){i=7;break Ua}i=Wa[c[29352>>2]&127](l)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0<=(c[14987]|0)>>>0)break;c[14987]=i}while(0);i=l+16|0;gw(i|0,0,960)|0;Y=l+12|0;c[l>>2]=16;c[l+4>>2]=0;c[Y>>2]=i;c[l+8>>2]=l+912;i=c[7389]|0;if(i|0?Wa[i&127](100)|0:0){oa=1702;break}do if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](64)|0;if(!i){oa=1714;break Va}}else{i=Wa[c[29356>>2]&127](64)|0;if((c[14985]|0)>>>0<64)c[14985]=64;s=59064;r=c[s>>2]|0;s=c[s+4>>2]|0;if((s|0)>0|(s|0)==0&r>>>0>0){fa=c[14978]|0;ea=Tv(r|0,s|0,i|0,((i|0)<0)<<31>>31|0)|0;X=L()|0;c[14768]=((X|0)<0|(X|0)==0&ea>>>0<=fa>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){oa=1714;break Va}r=Wa[c[29352>>2]&127](i)|0;r=(c[14978]|0)+r|0;c[14978]=r;if(r>>>0>(c[14982]|0)>>>0)c[14982]=r;r=(c[14981]|0)+1|0;c[14981]=r;if(r>>>0<=(c[14987]|0)>>>0)break;c[14987]=r}while(0);ea=i+8|0;fa=ea+56|0;do{a[ea>>0]=0;ea=ea+1|0}while((ea|0)<(fa|0));c[t>>2]=i;c[i+4>>2]=l;c[i>>2]=ha;Y=c[ca>>2]|0;ea=(c[Y+8>>2]|0)+9|0;Y=(c[Y+4>>2]|0)/2|0;Y=(ea|0)>(Y|0)?ea:Y;c[i+16>>2]=Y;ea=da;Y=Sv(c[ea>>2]|0,c[ea+4>>2]|0,Y|0,((Y|0)<0)<<31>>31|0)|0;ea=L()|0;fa=da;c[fa>>2]=Y;c[fa+4>>2]=ea}i=c[i+4>>2]|0;if(w>>>0>>0){q=(q|0)/16|0;w=w+1|0}else{oa=1830;break Ua}}if((oa|0)==1702){oa=0;c[t>>2]=0}else if((oa|0)==1714){oa=0;c[t>>2]=0}if((c[l>>2]|0)>0){W=0;do{o=c[Y>>2]|0;X=o+(W*56|0)|0;i=c[o+(W*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[o+(W*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);P=c[o+(W*56|0)+48>>2]|0;do if(P|0){Q=c[P+4>>2]|0;do if(Q|0){if((c[Q>>2]|0)>0){T=Q+12|0;O=0;do{o=c[T>>2]|0;V=o+(O*56|0)|0;i=c[o+(O*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[o+(O*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);J=c[o+(O*56|0)+48>>2]|0;do if(J|0){K=c[J+4>>2]|0;do if(K|0){if((c[K>>2]|0)>0){M=K+12|0;I=0;do{o=c[M>>2]|0;N=o+(I*56|0)|0;i=c[o+(I*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[o+(I*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);D=c[o+(I*56|0)+48>>2]|0;do if(D|0){E=c[D+4>>2]|0;do if(E|0){if((c[E>>2]|0)>0){F=E+12|0;C=0;do{o=c[F>>2]|0;H=o+(C*56|0)|0;i=c[o+(C*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[o+(C*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);y=c[o+(C*56|0)+48>>2]|0;do if(y|0){z=c[y+4>>2]|0;do if(z|0){if((c[z>>2]|0)>0){A=z+12|0;x=0;do{o=c[A>>2]|0;B=o+(x*56|0)|0;i=c[o+(x*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[o+(x*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);s=c[o+(x*56|0)+48>>2]|0;do if(s|0){t=c[s+4>>2]|0;do if(t|0){if((c[t>>2]|0)>0){w=t+12|0;r=0;do{o=c[w>>2]|0;q=o+(r*56|0)|0;i=c[o+(r*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[o+(r*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[o+(r*56|0)+48>>2]|0;do if(i|0){xg(c[i+4>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);ea=q;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));r=r+1|0}while((r|0)<(c[t>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{fa=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{fa=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}}while(0);ea=B;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));x=x+1|0}while((x|0)<(c[z>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](z);break}else{fa=Wa[c[29352>>2]&127](z)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](z);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](y);break}else{fa=Wa[c[29352>>2]&127](y)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](y);break}}while(0);ea=H;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));C=C+1|0}while((C|0)<(c[E>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](E);break}else{fa=Wa[c[29352>>2]&127](E)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](E);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](D);break}else{fa=Wa[c[29352>>2]&127](D)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](D);break}}while(0);ea=N;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));I=I+1|0}while((I|0)<(c[K>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](K);break}else{fa=Wa[c[29352>>2]&127](K)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](K);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](J);break}else{fa=Wa[c[29352>>2]&127](J)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](J);break}}while(0);ea=V;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));O=O+1|0}while((O|0)<(c[Q>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](Q);break}else{fa=Wa[c[29352>>2]&127](Q)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Q);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](P);break}else{fa=Wa[c[29352>>2]&127](P)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](P);break}}while(0);ea=X;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));W=W+1|0}while((W|0)<(c[l>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);i=7;break}else{i=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);i=7;break}}while(0);if((oa|0)==1830){oa=0;c[(c[i+12>>2]|0)+(((o|0)%16|0)*56|0)+48>>2]=_;o=$;i=0;break}if(!Z){o=$;break}X=c[Z+4>>2]|0;do if(X|0){if((c[X>>2]|0)>0){Y=X+12|0;W=0;do{o=c[Y>>2]|0;Z=o+(W*56|0)|0;l=c[o+(W*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(W*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);P=c[o+(W*56|0)+48>>2]|0;do if(P|0){Q=c[P+4>>2]|0;do if(Q|0){if((c[Q>>2]|0)>0){T=Q+12|0;O=0;do{o=c[T>>2]|0;V=o+(O*56|0)|0;l=c[o+(O*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(O*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);J=c[o+(O*56|0)+48>>2]|0;do if(J|0){K=c[J+4>>2]|0;do if(K|0){if((c[K>>2]|0)>0){M=K+12|0;I=0;do{o=c[M>>2]|0;N=o+(I*56|0)|0;l=c[o+(I*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(I*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);D=c[o+(I*56|0)+48>>2]|0;do if(D|0){E=c[D+4>>2]|0;do if(E|0){if((c[E>>2]|0)>0){F=E+12|0;C=0;do{o=c[F>>2]|0;H=o+(C*56|0)|0;l=c[o+(C*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(C*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);y=c[o+(C*56|0)+48>>2]|0;do if(y|0){z=c[y+4>>2]|0;do if(z|0){if((c[z>>2]|0)>0){A=z+12|0;x=0;do{o=c[A>>2]|0;B=o+(x*56|0)|0;l=c[o+(x*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(x*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);s=c[o+(x*56|0)+48>>2]|0;do if(s|0){t=c[s+4>>2]|0;do if(t|0){if((c[t>>2]|0)>0){w=t+12|0;r=0;do{o=c[w>>2]|0;q=o+(r*56|0)|0;l=c[o+(r*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(r*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);zg(c[o+(r*56|0)+48>>2]|0);ea=q;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));r=r+1|0}while((r|0)<(c[t>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{fa=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{fa=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}}while(0);ea=B;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));x=x+1|0}while((x|0)<(c[z>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](z);break}else{fa=Wa[c[29352>>2]&127](z)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](z);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](y);break}else{fa=Wa[c[29352>>2]&127](y)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](y);break}}while(0);ea=H;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));C=C+1|0}while((C|0)<(c[E>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](E);break}else{fa=Wa[c[29352>>2]&127](E)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](E);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](D);break}else{fa=Wa[c[29352>>2]&127](D)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](D);break}}while(0);ea=N;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));I=I+1|0}while((I|0)<(c[K>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](K);break}else{fa=Wa[c[29352>>2]&127](K)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](K);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](J);break}else{fa=Wa[c[29352>>2]&127](J)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](J);break}}while(0);ea=V;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));O=O+1|0}while((O|0)<(c[Q>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](Q);break}else{fa=Wa[c[29352>>2]&127](Q)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Q);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](P);break}else{fa=Wa[c[29352>>2]&127](P)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](P);break}}while(0);ea=Z;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));W=W+1|0}while((W|0)<(c[X>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](X);break}else{fa=Wa[c[29352>>2]&127](X)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](X);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](_);o=$;break}else{o=Wa[c[29352>>2]&127](_)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](_);o=$;break}}while(0);aa=aa+16|0;l=c[ia>>2]|0}while((i|0)==0&(l|0)>(aa|0))}}else oa=1534}else{oa=Hd;c[oa>>2]=0;c[oa+4>>2]=0;oa=1534}if((oa|0)==1534){oa=0;i=$h(ha,i,Hd,rf)|0;S=c[rf>>2]|0;U=S}T=(i|0)==0;do if(!T){if(U){if((c[U>>2]|0)>0){P=U+12|0;O=0;do{o=c[P>>2]|0;Q=o+(O*56|0)|0;l=c[o+(O*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(O*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);J=c[o+(O*56|0)+48>>2]|0;do if(J|0){K=c[J+4>>2]|0;do if(K|0){if((c[K>>2]|0)>0){M=K+12|0;I=0;do{o=c[M>>2]|0;N=o+(I*56|0)|0;l=c[o+(I*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(I*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);D=c[o+(I*56|0)+48>>2]|0;do if(D|0){E=c[D+4>>2]|0;do if(E|0){if((c[E>>2]|0)>0){F=E+12|0;C=0;do{o=c[F>>2]|0;H=o+(C*56|0)|0;l=c[o+(C*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(C*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);y=c[o+(C*56|0)+48>>2]|0;do if(y|0){z=c[y+4>>2]|0;do if(z|0){if((c[z>>2]|0)>0){A=z+12|0;x=0;do{o=c[A>>2]|0;B=o+(x*56|0)|0;l=c[o+(x*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(x*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);s=c[o+(x*56|0)+48>>2]|0;do if(s|0){t=c[s+4>>2]|0;do if(t|0){if((c[t>>2]|0)>0){w=t+12|0;r=0;do{o=c[w>>2]|0;q=o+(r*56|0)|0;l=c[o+(r*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(r*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(r*56|0)+48>>2]|0;do if(l|0){xg(c[l+4>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);ea=q;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));r=r+1|0}while((r|0)<(c[t>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{ja=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{ja=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}}while(0);ea=B;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));x=x+1|0}while((x|0)<(c[z>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](z);break}else{ja=Wa[c[29352>>2]&127](z)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](z);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](y);break}else{ja=Wa[c[29352>>2]&127](y)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](y);break}}while(0);ea=H;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));C=C+1|0}while((C|0)<(c[E>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](E);break}else{ja=Wa[c[29352>>2]&127](E)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](E);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](D);break}else{ja=Wa[c[29352>>2]&127](D)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](D);break}}while(0);ea=N;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));I=I+1|0}while((I|0)<(c[K>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](K);break}else{ja=Wa[c[29352>>2]&127](K)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](K);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](J);break}else{ja=Wa[c[29352>>2]&127](J)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](J);break}}while(0);ea=Q;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));O=O+1|0}while((O|0)<(c[U>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](S);break}else{ja=Wa[c[29352>>2]&127](S)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](S);break}}}else R=U;while(0);if(T)ka=ka+1|0;else{oa=2043;break}}do if((oa|0)==2043)if(R){if((c[R>>2]|0)>0){P=R+12|0;O=0;do{o=c[P>>2]|0;Q=o+(O*56|0)|0;l=c[o+(O*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(O*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);J=c[o+(O*56|0)+48>>2]|0;do if(J|0){K=c[J+4>>2]|0;do if(K|0){if((c[K>>2]|0)>0){M=K+12|0;I=0;do{o=c[M>>2]|0;N=o+(I*56|0)|0;l=c[o+(I*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(I*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);D=c[o+(I*56|0)+48>>2]|0;do if(D|0){E=c[D+4>>2]|0;do if(E|0){if((c[E>>2]|0)>0){F=E+12|0;C=0;do{o=c[F>>2]|0;H=o+(C*56|0)|0;l=c[o+(C*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(C*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);y=c[o+(C*56|0)+48>>2]|0;do if(y|0){z=c[y+4>>2]|0;do if(z|0){if((c[z>>2]|0)>0){A=z+12|0;x=0;do{o=c[A>>2]|0;B=o+(x*56|0)|0;l=c[o+(x*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(x*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);s=c[o+(x*56|0)+48>>2]|0;do if(s|0){t=c[s+4>>2]|0;do if(t|0){if((c[t>>2]|0)>0){w=t+12|0;r=0;do{o=c[w>>2]|0;q=o+(r*56|0)|0;l=c[o+(r*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(r*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(r*56|0)+48>>2]|0;do if(l|0){xg(c[l+4>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);ea=q;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));r=r+1|0}while((r|0)<(c[t>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{oa=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{oa=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}}while(0);ea=B;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));x=x+1|0}while((x|0)<(c[z>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](z);break}else{oa=Wa[c[29352>>2]&127](z)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](z);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](y);break}else{oa=Wa[c[29352>>2]&127](y)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](y);break}}while(0);ea=H;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));C=C+1|0}while((C|0)<(c[E>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](E);break}else{oa=Wa[c[29352>>2]&127](E)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](E);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](D);break}else{oa=Wa[c[29352>>2]&127](D)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](D);break}}while(0);ea=N;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));I=I+1|0}while((I|0)<(c[K>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](K);break}else{oa=Wa[c[29352>>2]&127](K)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](K);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](J);break}else{oa=Wa[c[29352>>2]&127](J)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](J);break}}while(0);ea=Q;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));O=O+1|0}while((O|0)<(c[R>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](R);oa=2139;break}else{oa=Wa[c[29352>>2]&127](R)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](R);oa=2139;break}}else oa=2139;else if((oa|0)==2138){oa=0;i=_h(ma+64|0,R)|0;c[ma+20>>2]=R;if(!i)i=0;else oa=2139}while(0);c[Yd>>2]=0;oa=2142}else{i=ch(c[na+40>>2]|0,Yd)|0;a[na+3>>0]=0;c[na+28>>2]=0;oa=2142}while(0);if((oa|0)==2142){oa=0;if(i|0){oa=2145;break c}ma=c[Yd>>2]|0;a[na+2>>0]=ma;if(!ma){l=m;q=pa;o=qa;i=0;break}}i=0;oa=28}else if((oa|0)==2160){c[l+28>>2]=0;switch(i|0){case 0:{a[l+2>>0]=0;i=f+160+(e[p+2>>1]<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=0;oa=20;break Pa}case 101:{a[l+2>>0]=1;l=m;o=pa;i=0;oa=21;break Pa}default:{oa=3855;break c}}}else if((oa|0)==3029){oa=0;o=c[p+12>>2]|0;i=pa+(o*40|0)|0;l=s+8|0;if((c[l>>2]|0)!=(i|0)?(c[l>>2]=i,vd=a[s+25>>0]|0,vd<<24>>24):0){l=c[p+8>>2]|0;i=vd&255;do{na=i;i=i+-1|0;c[s+28+(i<<2)>>2]=pa+((i+l|0)*40|0)}while((na|0)>1)}i=pa+(o*40|0)+12|0;c[i>>2]=(c[i>>2]|0)+1;i=c[s+4>>2]|0;if(!(c[p+4>>2]|0))cb[c[i+16>>2]&255](s,d[s+25>>0]|0,s+28|0);else cb[c[i+28>>2]&255](s,d[s+25>>0]|0,s+28|0);r=s+20|0;i=c[r>>2]|0;if(i){if((i|0)>0){i=c[s>>2]|0;do if(i){l=b[i+8>>1]|0;if((l&514)==514?(a[i+10>>0]|0)==1:0){i=c[i+16>>2]|0;break}if(!(l&1))i=Gg(i,1)|0;else i=0}else i=0;while(0);c[Ye>>2]=i;Ag(f,31408,Ye);i=c[r>>2]|0}else i=K;o=s+24|0;if(a[o>>0]|0){l=c[p+-16>>2]|0;do if(l|0){q=pa+(l*40|0)|0;l=pa+(l*40|0)+8|0;if(!(b[l>>1]&9216)){na=q;c[na>>2]=1;c[na+4>>2]=0;b[l>>1]=4;break}else{Pg(q,1,0);break}}while(0);a[o>>0]=0}o=c[s>>2]|0;l=o+8|0;if(!((b[l>>1]&9216)==0?(c[o+24>>2]|0)==0:0)){Cg(o);l=(c[s>>2]|0)+8|0}b[l>>1]=1;c[r>>2]=0;if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}}else{l=m;q=pa;o=qa;i=K}}else if((oa|0)==3761){oa=0;q=c[p+16>>2]|0;y=c[p+12>>2]|0;x=pa+(y*40|0)|0;if((c[q>>2]|0)!=(x|0)){c[q>>2]=x;i=a[q+25>>0]|0;if(!(i<<24>>24))i=0;else{o=c[p+8>>2]|0;l=i&255;do{na=l;l=l+-1|0;c[q+28+(l<<2)>>2]=pa+((l+o|0)*40|0)}while((na|0)>1)}}else i=a[q+25>>0]|0;w=pa+(y*40|0)+8|0;b[w>>1]=b[w>>1]&15904|1;cb[c[(c[q+4>>2]|0)+16>>2]&255](q,i&255,q+28|0);t=q+20|0;i=c[t>>2]|0;if(i){if((i|0)>0){i=b[w>>1]|0;if((i&514)==514?(a[pa+(y*40|0)+10>>0]|0)==1:0)i=c[pa+(y*40|0)+16>>2]|0;else if(!(i&1))i=Gg(x,1)|0;else i=0;c[ye>>2]=i;Ag(f,31408,ye);i=c[t>>2]|0}else i=K;r=c[q+16>>2]|0;s=c[p+4>>2]|0;o=c[Hb>>2]|0;Wa:do if(o|0){if((r|0)<0)while(1){l=c[o+12>>2]|0;if(l|0)ab[l&127](c[o+8>>2]|0);c[Hb>>2]=c[o+16>>2];Xa:do if(!(c[Ze>>2]|0)){l=o;do if((c[_e>>2]|0)>>>0<=l>>>0){if((c[$e>>2]|0)>>>0<=l>>>0)break;c[o>>2]=c[af>>2];c[af>>2]=o;break Xa}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{na=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}else Xd(Cf,o);while(0);o=c[Hb>>2]|0;if(!o)break Wa}l=Hb;do{Ya:do if((c[o>>2]|0)==(r|0)?(Ed=c[o+4>>2]|0,(Ed|0)>-1):0){if((Ed|0)<=31?1<>2]|0;if(q|0)ab[q&127](c[o+8>>2]|0);c[l>>2]=c[o+16>>2];if(c[Ze>>2]|0){Xd(Cf,o);break}q=o;do if((c[_e>>2]|0)>>>0<=q>>>0){if((c[$e>>2]|0)>>>0<=q>>>0)break;c[o>>2]=c[af>>2];c[af>>2]=o;break Ya}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{na=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}else oa=3803;while(0);if((oa|0)==3803){oa=0;l=o+16|0}o=c[l>>2]|0}while((o|0)!=0)}while(0);c[t>>2]=0;if(!i)i=0;else{oa=3855;break c}}else i=K;l=b[w>>1]|0;if(l&18){if((l&2)!=0?(a[pa+(y*40|0)+10>>0]|0)!=sd<<24>>24:0){Ig(x,sd)|0;l=b[w>>1]|0}o=l&65535;if(o&18){l=c[pa+(y*40|0)+12>>2]|0;if(o&16384)l=(c[x>>2]|0)+l|0;if((l|0)>(c[(c[pa+(y*40|0)+32>>2]|0)+108>>2]|0)){oa=3891;break c}else{l=m;q=pa;o=qa}}else{l=m;q=pa;o=qa}}else{l=m;q=pa;o=qa}}while(0);if((oa|0)==20){l=m;p=m+(((c[p+8>>2]|0)+-1|0)*20|0)|0;o=pa;oa=21}else if((oa|0)==28){oa=0;l=m;q=pa;o=qa;p=m+(((c[p+8>>2]|0)+-1|0)*20|0)|0}else if((oa|0)==1074){oa=0;a[(c[o+40>>2]|0)+3>>0]=b[l>>1]&3;if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break}}Za:do if((oa|0)==21){oa=0;if(c[lc>>2]|0){j=n;i=zf;break b}if(n>>>0>>0){q=o;o=qa}else while(1){m=c[Af>>2]|0;if(!m){q=o;o=qa;break Za}pa=c[fb>>2]|0;h=pa+h|0;if(Wa[m&127](c[gb>>2]|0)|0){oa=3844;break c}if(n>>>0>>0){q=o;o=qa;break}}}while(0);m=l;p=p+20|0;K=i;qa=o;pa=q}switch(oa|0){case 38:{c[Bf>>2]=0;a[Jd>>0]=c[p+8>>2];c[xf>>2]=(p-m|0)/20|0;oa=44;break}case 39:{j=p+4|0;l=(p-m|0)/20|0;c[Bf>>2]=i;a[Jd>>0]=c[p+8>>2];c[xf>>2]=l;i=b[p+2>>1]|0;if(i<<16>>16){c[ff>>2]=c[3504+((i&65535)+-1<<2)>>2];Ag(f,34155,ff);i=c[p+16>>2]|0;if(i|0){c[kf>>2]=c[mf>>2];c[kf+4>>2]=i;zf=dd(Cf,34176,kf)|0;c[mf>>2]=zf}}else{c[gf>>2]=c[p+16>>2];Ag(f,31408,gf)}oa=c[j>>2]|0;yf=c[hd>>2]|0;zf=c[mf>>2]|0;c[lf>>2]=l;c[lf+4>>2]=yf;c[lf+8>>2]=zf;Db(oa,34183,lf);oa=44;break}case 153:{vf=Oa;uf=c[vf+4>>2]|0;if((uf|0)>0|(uf|0)==0&(c[vf>>2]|0)>>>0>0){c[Bf>>2]=787;a[Jd>>0]=2;Ag(f,32436,Ae);o=k;q=h;h=1;i=zf;break a}if(c[(c[f>>2]|0)+456>>2]|0?c[bc>>2]|0:0)Bg(f,1)|0;c[ua>>2]=(c[ua>>2]|0)+2|1;t=pa+((c[p+4>>2]|0)*40|0)|0;c[Zc>>2]=t;r=p+8|0;if((c[r>>2]|0)>0){q=0;do{s=t+(q*40|0)|0;o=s+8|0;i=b[o>>1]|0;if(i&4096){j=i&65535;do if(j&18){do if(j&16384){l=s+12|0;j=(c[s>>2]|0)+(c[l>>2]|0)|0;if((j|0)<1)if(!(i&16))break;else i=1;else i=j;if(Eg(s,i,1)|0){l=p;j=h;i=zf;oa=3892;break a}gw((c[s+16>>2]|0)+(c[l>>2]|0)|0,0,c[s>>2]|0)|0;c[l>>2]=(c[l>>2]|0)+(c[s>>2]|0);i=b[o>>1]&-16897;b[o>>1]=i}while(0);if(c[s+24>>2]|0?(c[s+16>>2]|0)==(c[s+20>>2]|0):0)break;if(Jg(s)|0){l=p;j=h;i=zf;oa=3892;break a}i=b[o>>1]|0}while(0);i=i&-4097;b[o>>1]=i}if((i&514)==2)Jg(s)|0;q=q+1|0}while((q|0)<(c[r>>2]|0))}if(a[zf>>0]|0){l=p;j=m;i=zf;oa=3898;break a}if(a[qf>>0]&4)Za[c[of>>2]&127](4,c[pf>>2]|0,f,0)|0;c[xf>>2]=((p-m|0)/20|0)+1;o=k;l=100;oa=3884;break a}case 518:{oa=3891;break}case 599:{c[Ce>>2]=32306;c[Ce+4>>2]=86318;c[Ce+8>>2]=31517;Db(11,32001,Ce);i=11;oa=601;break}case 602:{l=p;j=h;i=zf;oa=3892;break a}case 717:{c[De>>2]=32306;c[De+4>>2]=68229;c[De+8>>2]=31517;Db(11,32001,De);o=k;q=h;h=11;i=zf;break a}case 720:{c[Ee>>2]=32306;c[Ee+4>>2]=68229;c[Ee+8>>2]=31517;Db(11,32001,Ee);o=k;q=h;h=11;i=zf;break a}case 730:{Ag(f,34243,Fe);o=k;q=h;h=5;i=zf;break a}case 774:{c[Ge>>2]=A;Ag(f,34294,Ge);o=k;q=h;h=1;i=zf;break a}case 776:{Ag(f,34316,He);o=k;q=h;h=5;i=zf;break a}case 780:{c[Bf>>2]=787;a[Jd>>0]=2;Ag(f,32436,Ie);o=k;l=1;oa=3884;break a}case 782:{c[xf>>2]=(p-m|0)/20|0;a[gd>>0]=0;c[Bf>>2]=5;o=k;l=5;oa=3884;break a}case 922:{j=c[p+4>>2]|0;i=c[p+8>>2]|0;if((j|0)==(d[gd>>0]|0)){Ag(f,(j|0)==0?34425:(i|0)==0?34516:34473,ef);o=k;q=h;h=1;i=zf;break a}do if(!i){if(j|0?(c[bd>>2]|0)>0:0){Ag(f,34370,cf);o=k;q=h;h=5;i=zf;break a}yf=c[f>>2]|0;zf=yf+464|0;yf=yf+472|0;zf=Sv(c[yf>>2]|0,c[yf+4>>2]|0,c[zf>>2]|0,c[zf+4>>2]|0)|0;yf=L()|0;if((yf|0)>0|(yf|0)==0&zf>>>0>0){c[Bf>>2]=787;a[Jd>>0]=2;Ag(f,32436,df);o=k;l=1;oa=3884;break a}else{i=j&255;break}}else{rg(Cf,516);i=1}while(0);a[gd>>0]=i;if((pg(f)|0)==5){c[xf>>2]=(p-m|0)/20|0;a[gd>>0]=1-j;c[Bf>>2]=5;o=k;l=5;oa=3884;break a}i=c[qd>>2]|0;if(i|0)do{c[qd>>2]=c[i+24>>2];do if(!(c[Ze>>2]|0)){zf=i;if((c[_e>>2]|0)>>>0<=zf>>>0?(c[$e>>2]|0)>>>0>zf>>>0:0){c[i>>2]=c[af>>2];c[af>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{zf=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-zf;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}else Xd(Cf,i);while(0);i=c[qd>>2]|0}while((i|0)!=0);c[Gd>>2]=0;c[Fd>>2]=0;a[Id>>0]=0;o=k;l=(c[Bf>>2]|0)==0?101:1;oa=3884;break a}case 950:{if((l&255|0)==5){c[xf>>2]=(p-m|0)/20|0;c[Bf>>2]=l;o=k;oa=3884;break a}else oa=1017;break}case 986:{i=c[mf>>2]|0;do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}yf=i;if((c[_e>>2]|0)>>>0<=yf>>>0?(c[$e>>2]|0)>>>0>yf>>>0:0){c[i>>2]=c[af>>2];c[af>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{yf=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-yf;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);do if(c[$c>>2]|0)if(!(a[zf>>0]|0))oa=1003;else i=0;else{if((e[Xc>>1]|0)>=28){i=c[af>>2]|0;if(i|0){c[af>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;oa=1004;break}i=c[cd>>2]|0;if(!i)i=fd;else{c[cd>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;oa=1004;break}}else i=Yc;c[i>>2]=(c[i>>2]|0)+1;oa=1003}while(0);if((oa|0)==1003){i=_d(Cf,28,0)|0;oa=1004}if((oa|0)==1004)if(!i)i=0;else{ea=i;l=34557;fa=ea+28|0;do{a[ea>>0]=a[l>>0]|0;ea=ea+1|0;l=l+1|0}while((ea|0)<(fa|0))}c[mf>>2]=i;j=c[uf>>2]|0;i=c[z>>2]|0;l=c[j+(i<<4)+12>>2]|0;_a:do if((c[l>>2]|0)!=(c[rf>>2]|0)){if((i|0)>-1){yf=l+78|0;b[yf>>1]=b[yf>>1]|8;yf=(c[j+28>>2]|0)+78|0;b[yf>>1]=b[yf>>1]|8;c[hf>>2]=c[hf>>2]&-17}if((c[jf>>2]|0)==0?(tf=c[sf>>2]|0,(tf|0)>0):0){i=0;l=tf;while(1){j=c[j+(i<<4)+12>>2]|0;if(!(b[j+78>>1]&8))j=l;else{dh(j);j=c[sf>>2]|0}i=i+1|0;if((i|0)>=(j|0))break _a;l=j;j=c[uf>>2]|0}}}while(0);l=(d[vf>>0]|d[vf+1>>0]<<8)&-4|1;a[vf>>0]=l;a[vf+1>>0]=l>>8;l=17;oa=1017;break}case 1135:{c[s+40>>2]=0;o=k;q=h;h=7;i=zf;break a}case 1213:{o=k;q=h;h=i;i=zf;break a}case 1268:{l=p;j=h;i=zf;oa=3892;break a}case 1270:{o=k;q=h;h=i;i=zf;break a}case 1289:{c[Je>>2]=32306;c[Je+4>>2]=87969;c[Je+8>>2]=31517;Db(11,32001,Je);o=k;q=h;h=11;i=zf;break a}case 1328:{o=k;q=h;h=i;i=zf;break a}case 1345:{o=k;q=h;h=i;i=zf;break a}case 1382:{c[r>>2]=0;o=k;q=h;h=7;i=zf;break a}case 1481:{o=k;q=h;h=i;i=zf;break a}case 1492:{o=k;q=h;h=r;i=zf;break a}case 1519:{o=k;q=h;h=i;i=zf;break a}case 2145:{o=k;q=h;h=i;i=zf;break a}case 2221:{o=k;q=h;h=7;i=zf;break a}case 2226:{o=k;q=h;h=i;i=zf;break a}case 2253:{if(!((b[jb>>1]&9216)==0&(c[lb>>2]|0)==0))Cg(Hd);c[Ke>>2]=32306;c[Ke+4>>2]=81024;c[Ke+8>>2]=31517;Db(11,32001,Ke);i=11;oa=2256;break}case 2267:{c[Le>>2]=32306;c[Le+4>>2]=81057;c[Le+8>>2]=31517;Db(11,32001,Le);i=11;oa=2274;break}case 2280:{a[Jd>>0]=2;o=k;q=h;h=6;i=zf;break a}case 2282:{c[Me>>2]=32306;c[Me+4>>2]=72453;c[Me+8>>2]=31517;Db(11,32001,Me);i=0;j=11;oa=2353;break}case 2286:{i=0;j=l;oa=2353;break}case 2301:{if(r){i=c[r+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);i=0;oa=2353;break}else{oa=c[i+20>>2]|0;yf=oa+120|0;c[yf>>2]=(c[yf>>2]|0)+-1;oa=oa+136|0;c[i+16>>2]=c[oa>>2];c[oa>>2]=i;i=0;oa=2353;break}}else{i=0;oa=2353}break}case 2319:{i=0;j=l;oa=2353;break}case 2329:{i=0;j=l;oa=2353;break}case 2406:{o=k;q=h;h=l;i=zf;break a}case 2424:{$b(Cf);l=p;j=h;i=zf;oa=3892;break a}case 2425:{$b(Cf);o=k;q=h;h=i;i=zf;break a}case 2968:{Ag(f,34663,Xe);o=k;q=h;h=1;i=zf;break a}case 3073:{do if(o){i=b[o+8>>1]|0;if((i&514)==514?(a[o+10>>0]|0)==1:0){i=c[o+16>>2]|0;break}if(!(i&1))i=Gg(o,1)|0;else i=0}else i=0;while(0);c[bf>>2]=i;Ag(f,31408,bf);o=k;q=h;h=l;i=zf;break a}case 3094:{o=k;q=h;h=i;i=zf;break a}case 3115:{c[te>>2]=w?34752:34757;Ag(f,34700,te);o=k;q=h;h=1;i=zf;break a}case 3182:{c[ue>>2]=32306;c[ue+4>>2]=67051;c[ue+8>>2]=31517;Db(11,32001,ue);o=k;q=h;h=11;i=zf;break a}case 3215:{if(t<<24>>24==2){oa=o+22|0;b[oa>>1]=b[oa>>1]|128;oa=3236}else oa=3236;break}case 3400:{j=l;i=c[ad>>2]|0;oa=3401;break}case 3458:{o=k;q=h;h=i;i=zf;break a}case 3459:{Wa[c[x+28>>2]&127](c[rf>>2]|0)|0;l=p;j=h;i=zf;oa=3892;break a}case 3576:{oa=3891;break}case 3731:{i=i&65535;oa=3732;break}case 3733:{c[rc>>2]=(c[rc>>2]|0)+1;i=12;j=x;break}case 3844:{o=k;q=-1;m=l;h=9;i=zf;break a}case 3845:{o=k;q=h;h=i;i=zf;break a}case 3846:{o=k;q=h;h=i;i=zf;break a}case 3847:{o=k;q=h;h=i;i=zf;break a}case 3848:{o=k;q=h;h=i;i=zf;break a}case 3849:{o=k;q=h;h=i;i=zf;break a}case 3850:{o=k;q=h;h=i;i=zf;break a}case 3851:{o=k;q=h;h=i;i=zf;break a}case 3852:{o=k;q=h;h=i;i=zf;break a}case 3853:{o=k;q=h;h=i;i=zf;break a}case 3854:{o=k;q=h;h=r;i=zf;break a}case 3855:{o=k;q=h;h=i;i=zf;break a}case 3900:{Ra=Hf;return h|0}}switch(oa|0){case 44:if((pg(f)|0)==5){c[Bf>>2]=5;o=k;l=5;oa=3884;break a}else{o=k;l=(c[Bf>>2]|0)==0?101:1;oa=3884;break a}case 601:{o=k;q=h;h=i;i=zf;break a}case 1017:{o=k;q=h;h=l;i=zf;break a}case 2256:{o=k;q=h;h=i;i=zf;break a}case 2274:{o=k;q=h;h=i;i=zf;break a}case 2353:{b[B>>1]=4;o=A;c[o>>2]=i;c[o+4>>2]=((i|0)<0)<<31>>31;o=k;q=h;h=j;i=zf;break a}case 3236:{c[ve>>2]=c[p+16>>2];Ag(f,34764,ve);o=k;q=h;h=262;i=zf;break a}case 3401:{c[ad>>2]=i+-1;o=k;q=h;h=j;i=zf;break a}case 3732:{a[Jd>>0]=i;i=12;j=x;break}case 3891:{Ag(f,31223,Be);o=k;q=h;h=18;i=zf;break a}}switch(i&15){case 12:{o=k;q=h;h=j;i=zf;break a}case 2:{l=p;j=h;i=zf;oa=3892;break a}default:h=0}Ra=Hf;return h|0}else{p=q;j=0;k=0;l=q;i=Cf+81|0}while(0);zf=(a[i>>0]|0)==0?9:7;c[Bf>>2]=zf;c[nf>>2]=c[22960+(zf<<2)>>2];Ag(f,31408,nf);n=j;o=k;q=h;m=l;h=zf}while(0);if((oa|0)==3892)if((a[i>>0]|0)==0?(a[Cf+82>>0]|0)==0:0){a[i>>0]=1;if((c[Cf+180>>2]|0)>0)c[Cf+264>>2]=1;h=Cf+272|0;c[h>>2]=(c[h>>2]|0)+1;h=c[Cf+236>>2]|0;if(h){c[h+12>>2]=7;h=j;j=m;oa=3898}else{h=j;j=m;oa=3898}}else{h=j;j=m;oa=3898}if((oa|0)==3898){Ag(f,34831,yf);o=k;q=h;m=j;p=l;h=7}$a:while(1){if((oa|0)==3884){if(n>>>0>>0)break;j=Cf+328|0;k=Cf+324|0;while(1){i=c[Af>>2]|0;if(!i)break $a;zf=c[j>>2]|0;h=zf+h|0;if(Wa[i&127](c[k>>2]|0)|0)break;if(n>>>0>>0)break $a}q=-1;h=9;i=Cf+81|0}k=(a[i>>0]|0)==0?h:7;j=f+124|0;if((c[j>>2]|0)==0&(k|0)!=3082){switch(k|0){case 516:{h=50738;break}case 100:{h=50760;break}case 101:{h=50782;break}default:{h=k&255;if(h>>>0<29?(520028155>>>h&1|0)!=0:0)h=c[22960+(h<<2)>>2]|0;else h=50724}}c[Ef>>2]=h;Ag(f,31408,Ef)}c[Bf>>2]=k;if((k|0)==3082){yf=c[f+188>>2]|0;zf=c[j>>2]|0;c[Gf>>2]=(p-m|0)/20|0;c[Gf+4>>2]=yf;c[Gf+8>>2]=zf;Db(3082,34799,Gf);pg(f)|0;if((a[i>>0]|0)==0?(a[Cf+82>>0]|0)==0:0){a[i>>0]=1;if((c[Cf+180>>2]|0)>0)c[Cf+264>>2]=1;h=Cf+272|0;c[h>>2]=(c[h>>2]|0)+1;h=c[Cf+236>>2]|0;if(h|0)c[h+12>>2]=7}}else{if((k&251|4|0)==14){h=c[Cf>>2]|0;i=c[h+68>>2]|0;if(!i)h=0;else h=Ya[i&127](h,0,0)|0;c[Cf+72>>2]=h}yf=c[f+188>>2]|0;zf=c[j>>2]|0;c[Ff>>2]=(p-m|0)/20|0;c[Ff+4>>2]=yf;c[Ff+8>>2]=zf;Db(k,34799,Ff);pg(f)|0}if(!(o<<24>>24)){o=0;h=q;l=1;oa=3884;continue}k=Cf+16|0;i=c[k>>2]|0;zf=(c[i+((o&255)+-1<<4)+12>>2]|0)+78|0;b[zf>>1]=b[zf>>1]|8;zf=(c[i+28>>2]|0)+78|0;b[zf>>1]=b[zf>>1]|8;zf=Cf+24|0;c[zf>>2]=c[zf>>2]&-17;if(c[Cf+56>>2]|0){h=q;l=1;oa=3884;continue}l=Cf+20|0;j=c[l>>2]|0;if((j|0)<=0){h=q;l=1;oa=3884;continue}h=0;while(1){i=c[i+(h<<4)+12>>2]|0;if(b[i+78>>1]&8){dh(i);j=c[l>>2]|0}h=h+1|0;if((h|0)>=(j|0)){h=q;l=1;oa=3884;continue $a}i=c[k>>2]|0}}Gf=f+176|0;c[Gf>>2]=(c[Gf>>2]|0)+n;Gf=l;Ra=Hf;return Gf|0} -function $i(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var 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,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,_=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,Sa=0,Ta=0,Ua=0,Va=0,Xa=0,Ya=0,Za=0,_a=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,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,fd=0,gd=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;ud=Ra;Ra=Ra+1392|0;Qc=ud+1352|0;Nc=ud+1344|0;Mc=ud+1328|0;Lc=ud+1320|0;Kc=ud+1304|0;mb=ud+1296|0;Cc=ud+1288|0;Bc=ud+1280|0;ic=ud+1272|0;Eb=ud+1264|0;na=ud+1256|0;bc=ud+1248|0;_b=ud+1232|0;ac=ud+1216|0;$b=ud+1200|0;Xb=ud+1176|0;Wb=ud+1136|0;Ub=ud+1128|0;Db=ud+1120|0;Bb=ud+1112|0;Ma=ud+1104|0;kc=ud+1096|0;Ja=ud+1088|0;Ia=ud+1080|0;Zb=ud+1056|0;Ab=ud+1048|0;xb=ud+1040|0;lb=ud+1032|0;kb=ud+1024|0;jb=ud+1016|0;fb=ud+1008|0;eb=ud+1e3|0;Vc=ud+992|0;Jc=ud+976|0;Uc=ud+960|0;Tc=ud+944|0;wc=ud+920|0;vc=ud+904|0;uc=ud+872|0;tc=ud+840|0;Ib=ud+832|0;Hb=ud+824|0;wb=ud+816|0;ib=ud+808|0;hb=ud+800|0;dc=ud+792|0;jc=ud+784|0;Pc=ud+776|0;Va=ud+768|0;Qa=ud+760|0;Yb=ud+752|0;Vb=ud+744|0;cc=ud+736|0;qc=ud+728|0;o=ud+720|0;n=ud+712|0;i=ud+704|0;od=ud+696|0;nd=ud+688|0;md=ud+680|0;ld=ud+672|0;jd=ud+664|0;id=ud+648|0;gd=ud+640|0;$c=ud+632|0;Yc=ud+624|0;Fc=ud+616|0;Ec=ud+608|0;hc=ud+600|0;bb=ud+592|0;_a=ud+584|0;Za=ud+576|0;Xc=ud+568|0;Wc=ud+544|0;mc=ud+536|0;Ic=ud+528|0;Hc=ud+512|0;Gc=ud+504|0;Oc=ud;pc=ud+496|0;Tb=ud+488|0;Sb=ud+480|0;Mb=ud+472|0;Lb=ud+464|0;Ua=ud+456|0;Ta=ud+448|0;t=ud+440|0;H=ud+432|0;ka=ud+424|0;s=ud+416|0;_=ud+408|0;M=ud+400|0;w=ud+392|0;$=ud+384|0;va=ud+376|0;ua=ud+368|0;ta=ud+360|0;sa=ud+352|0;v=ud+344|0;X=ud+336|0;K=ud+328|0;Fa=ud+320|0;ra=ud+312|0;ja=ud+304|0;u=ud+296|0;qa=ud+288|0;ia=ud+280|0;J=ud+272|0;yc=ud+264|0;Xa=ud+256|0;ha=ud+248|0;Na=ud+240|0;pa=ud+232|0;oa=ud+224|0;ma=ud+216|0;Ka=ud+208|0;Ha=ud+200|0;la=ud+192|0;nc=ud+184|0;U=ud+176|0;gb=ud+168|0;vb=ud+160|0;ub=ud+152|0;tb=ud+144|0;sb=ud+136|0;rb=ud+128|0;yb=ud+120|0;W=ud+112|0;V=ud+104|0;I=ud+96|0;F=ud+88|0;T=ud+80|0;qd=ud+48|0;_c=ud+24|0;Qb=ud+1368|0;td=c[f>>2]|0;sd=a[16752+g>>0]|0;if(sd<<24>>24==0?td>>>0>=(c[f+1208>>2]|0)>>>0:0){l=f+4|0;m=c[l>>2]|0;i=f+8|0;if(td>>>0>i>>>0?(c[f>>2]=td+-12,aj(m,b[td+2>>1]|0,td+4|0),O=c[f>>2]|0,O>>>0>i>>>0):0){k=O;do{td=c[l>>2]|0;c[f>>2]=k+-12;aj(td,b[k+2>>1]|0,k+4|0);k=c[f>>2]|0}while(k>>>0>i>>>0)}cd(m,38790,T);c[l>>2]=m;f=0;Ra=ud;return f|0}a:do switch(g|0){case 0:{a[j+199>>0]=1;break}case 1:{a[j+199>>0]=2;break}case 2:{w=c[j>>2]|0;if(!(a[j+18>>0]|0)){A=w+81|0;if((a[A>>0]|0)==0?(kd=j+36|0,(c[kd>>2]|0)==0):0){z=j+8|0;k=c[z>>2]|0;if(!k){if((c[j+116>>2]|0)==0?(b[w+76>>1]&8)==0:0)a[j+23>>0]=1;b:do if(!(c[w+272>>2]|0)){do if((e[w+276>>1]|0)>=224){k=w+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];qd=w+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break b}k=w+296|0;l=c[k>>2]|0;if(!l){k=w+292|0;break}else{c[k>>2]=c[l>>2];qd=w+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break b}}else k=w+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=29}else rd=29;while(0);if((rd|0)==29)l=_d(w,224,0)|0;if(l|0){I=l+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[l>>2]=w;k=w+4|0;m=c[k>>2]|0;if(m|0)c[m+4>>2]=l;c[l+8>>2]=m;c[l+4>>2]=0;c[k>>2]=l;c[l+20>>2]=381479589;c[l+12>>2]=j;c[z>>2]=l;Di(l,61,0,1,0)|0;rd=34}}else{l=k;rd=34}if((rd|0)==34){x=l+108|0;k=c[x>>2]|0;y=l+112|0;if((c[y>>2]|0)>(k|0)){c[x>>2]=k+1;I=c[l+104>>2]|0;a[I+(k*20|0)>>0]=69;I=I+(k*20|0)+1|0;J=I+19|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0))}else Di(l,69,0,0,0)|0;do if(!(a[A>>0]|0)){v=j+84|0;i=c[v>>2]|0;if(!i){if(!(c[j+68>>2]|0))break;k=c[x>>2]|0;if(!(a[(c[l>>2]|0)+81>>0]|0))m=c[l+104>>2]|0;else m=59308}else{k=c[x>>2]|0;if(!(a[(c[l>>2]|0)+81>>0]|0))m=c[l+104>>2]|0;else m=59308}c[m+8>>2]=k;o=w+20|0;c:do if((c[o>>2]|0)>0){p=l+152|0;q=w+16|0;r=j+80|0;s=l+104|0;t=l+156|0;u=w+165|0;k=0;while(1){m=1<>2]=c[p>>2]|m;if((k|0)!=1?a[(c[(c[(c[l>>2]|0)+16>>2]|0)+(k<<4)+4>>2]|0)+9>>0]|0:0)c[t>>2]=c[t>>2]|m;n=c[(c[q>>2]|0)+(k<<4)+12>>2]|0;i=(c[r>>2]&m|0)!=0&1;h=c[n>>2]|0;n=c[n+4>>2]|0;m=c[x>>2]|0;if((c[y>>2]|0)>(m|0)){c[x>>2]=m+1;qd=c[s>>2]|0;a[qd+(m*20|0)>>0]=2;b[qd+(m*20|0)+2>>1]=0;c[qd+(m*20|0)+4>>2]=k;c[qd+(m*20|0)+8>>2]=i;c[qd+(m*20|0)+12>>2]=h;c[qd+(m*20|0)+16>>2]=0;a[qd+(m*20|0)+1>>0]=0}else m=Di(l,2,k,i,h)|0;if(!(a[(c[l>>2]|0)+81>>0]|0)){qd=c[s>>2]|0;a[qd+(m*20|0)+1>>0]=-3;c[qd+(m*20|0)+16>>2]=n}if(a[u>>0]|0)break;m=c[x>>2]|0;if((m|0)<=0)break;b[(c[s>>2]|0)+((m+-1|0)*20|0)+2>>1]=1}while(0);k=k+1|0;if((k|0)>=(c[o>>2]|0))break c;i=c[v>>2]|0}}while(0);o=j+204|0;if((c[o>>2]|0)>0){p=j+252|0;q=l+104|0;n=0;do{k=c[(c[(c[p>>2]|0)+(n<<2)>>2]|0)+64>>2]|0;d:do if(!k)k=0;else while(1){if((c[k>>2]|0)==(w|0))break d;k=c[k+24>>2]|0;if(!k){k=0;break}}while(0);m=c[x>>2]|0;if((c[y>>2]|0)>(m|0)){c[x>>2]=m+1;I=c[q>>2]|0;a[I+(m*20|0)>>0]=-96;I=I+(m*20|0)+1|0;J=I+19|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0))}else m=Di(l,160,0,0,0)|0;do if(!(a[(c[l>>2]|0)+81>>0]|0)){if((m|0)<0)m=(c[x>>2]|0)+-1|0;i=c[q>>2]|0;h=i+(m*20|0)+1|0;if(a[h>>0]|0){Ei(l,i+(m*20|0)|0,k,-12);break}if(!k)break;c[i+(m*20|0)+16>>2]=k;a[h>>0]=-12;qd=k+12|0;c[qd>>2]=(c[qd>>2]|0)+1}while(0);n=n+1|0}while((n|0)<(c[o>>2]|0))}c[o>>2]=0;k=c[z>>2]|0;e:do if(!k){i=c[j>>2]|0;if((c[j+116>>2]|0)==0?(b[i+76>>1]&8)==0:0)a[j+23>>0]=1;f:do if(c[i+272>>2]|0)if(!(a[i+81>>0]|0))rd=91;else{k=0;break e}else{do if((e[i+276>>1]|0)>=224){m=i+300|0;k=c[m>>2]|0;if(k|0){c[m>>2]=c[k>>2];qd=i+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break f}m=i+296|0;k=c[m>>2]|0;if(!k){k=i+292|0;break}else{c[m>>2]=c[k>>2];qd=i+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break f}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=91}while(0);if((rd|0)==91)k=_d(i,224,0)|0;if(!k)k=0;else{I=k+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[k>>2]=i;m=i+4|0;i=c[m>>2]|0;if(i|0)c[i+4>>2]=k;c[k+8>>2]=i;c[k+4>>2]=0;c[m>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=j;c[z>>2]=k;Di(k,61,0,1,0)|0}}while(0);p=j+104|0;if((c[p>>2]|0)>0){q=j+108|0;r=k+108|0;s=k+112|0;t=k+104|0;o=0;do{u=c[q>>2]|0;i=c[u+(o<<4)>>2]|0;h=c[u+(o<<4)+4>>2]|0;n=d[u+(o<<4)+8>>0]|0;u=c[u+(o<<4)+12>>2]|0;m=c[r>>2]|0;if((c[s>>2]|0)>(m|0)){c[r>>2]=m+1;qd=c[t>>2]|0;a[qd+(m*20|0)>>0]=-97;b[qd+(m*20|0)+2>>1]=0;c[qd+(m*20|0)+4>>2]=i;c[qd+(m*20|0)+8>>2]=h;c[qd+(m*20|0)+12>>2]=n;c[qd+(m*20|0)+16>>2]=0;a[qd+(m*20|0)+1>>0]=0}else m=Di(k,159,i,h,n)|0;do if(!(a[(c[k>>2]|0)+81>>0]|0)){if((m|0)<0)m=(c[r>>2]|0)+-1|0;i=c[t>>2]|0;h=i+(m*20|0)+1|0;if(a[h>>0]|0){Ei(k,i+(m*20|0)|0,u,-1);break}if(!u)break;c[i+(m*20|0)+16>>2]=u;a[h>>0]=-1}while(0);o=o+1|0}while((o|0)<(c[p>>2]|0))}o=c[z>>2]|0;k=c[j+112>>2]|0;g:do if(k|0){p=(c[j>>2]|0)+16|0;q=o+108|0;r=o+112|0;s=o+104|0;t=j+40|0;do{n=c[k+8>>2]|0;h=c[k+12>>2]|0;Gj(j,0,n,c[(c[(c[p>>2]|0)+(n<<4)+12>>2]|0)+72>>2]|0,108);n=h+-1|0;i=c[c[k+4>>2]>>2]|0;m=c[q>>2]|0;if((c[r>>2]|0)>(m|0)){c[q>>2]=m+1;qd=c[s>>2]|0;a[qd+(m*20|0)>>0]=110;b[qd+(m*20|0)+2>>1]=0;c[qd+(m*20|0)+4>>2]=0;c[qd+(m*20|0)+8>>2]=n;c[qd+(m*20|0)+12>>2]=0;c[qd+(m*20|0)+16>>2]=0;a[qd+(m*20|0)+1>>0]=0}else m=Di(o,110,0,n,0)|0;if(!(a[(c[o>>2]|0)+81>>0]|0)){if((m|0)<0)m=(c[q>>2]|0)+-1|0;Ei(o,(c[s>>2]|0)+(m*20|0)|0,i,0)}m=ed(o,12,17904)|0;if(!m)break g;c[m+8>>2]=h;qd=h+2|0;c[m+12>>2]=qd;c[m+52>>2]=h;c[m+64>>2]=n;c[m+72>>2]=h;b[m+62>>1]=16;c[m+88>>2]=h+1;c[m+112>>2]=h;c[m+124>>2]=h;c[m+148>>2]=qd;c[m+144>>2]=h;c[m+208>>2]=h;if(!(c[t>>2]|0))c[t>>2]=1;k=c[k>>2]|0}while((k|0)!=0)}while(0);o=c[j+68>>2]|0;if(o|0?(a[j+23>>0]=0,(c[o>>2]|0)>0):0){n=0;do{k=c[o+4+(n*20|0)>>2]|0;p=c[o+4+(n*20|0)+16>>2]|0;do if(k){if((a[k>>0]|0)!=-88){h=Jj(j,k,p)|0;rd=132;break}h=c[z>>2]|0;k=c[k+28>>2]|0;m=h+108|0;i=c[m>>2]|0;if((c[h+112>>2]|0)>(i|0)){c[m>>2]=i+1;qd=c[h+104>>2]|0;a[qd+(i*20|0)>>0]=78;b[qd+(i*20|0)+2>>1]=0;c[qd+(i*20|0)+4>>2]=k;c[qd+(i*20|0)+8>>2]=p;c[qd+(i*20|0)+12>>2]=0;c[qd+(i*20|0)+16>>2]=0;a[qd+(i*20|0)+1>>0]=0;break}else{Di(h,78,k,p,0)|0;break}}else{h=Jj(j,0,p)|0;rd=132}while(0);do if((rd|0)==132){rd=0;if((h|0)==(p|0))break;k=c[z>>2]|0;if(!k)break;m=k+108|0;i=c[m>>2]|0;if((c[k+112>>2]|0)>(i|0)){c[m>>2]=i+1;qd=c[k+104>>2]|0;a[qd+(i*20|0)>>0]=79;b[qd+(i*20|0)+2>>1]=0;c[qd+(i*20|0)+4>>2]=h;c[qd+(i*20|0)+8>>2]=p;c[qd+(i*20|0)+12>>2]=0;c[qd+(i*20|0)+16>>2]=0;a[qd+(i*20|0)+1>>0]=0;break}else{Di(k,79,h,p,0)|0;break}}while(0);n=n+1|0}while((n|0)<(c[o>>2]|0))}k=c[x>>2]|0;if((c[y>>2]|0)>(k|0)){c[x>>2]=k+1;rd=c[l+104>>2]|0;a[rd+(k*20|0)>>0]=11;b[rd+(k*20|0)+2>>1]=0;c[rd+(k*20|0)+4>>2]=0;c[rd+(k*20|0)+8>>2]=1;c[rd+(k*20|0)+12>>2]=0;c[rd+(k*20|0)+16>>2]=0;a[rd+(k*20|0)+1>>0]=0;break}else{Di(l,11,0,1,0)|0;break}}while(0);if((c[kd>>2]|0)==0?(a[A>>0]|0)==0:0){hd(l,j);c[j+12>>2]=101;break a}}c[j+12>>2]=1;break a}k=j+12|0;if(!(c[k>>2]|0))c[k>>2]=1}break}case 3:{o=c[td+-8>>2]|0;n=c[j>>2]|0;do if(((a[n+165>>0]|0)==0?(a[j+200>>0]|0)==0:0)?(z=c[n+312>>2]|0,z|0):0){k=$a[z&127](c[n+316>>2]|0,22,36223,0,0,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,F);c[j+12>>2]=23;break a}if((k|2|0)==2)if(!k)break;else break a;else{cd(j,39231,I);c[j+12>>2]=1;break a}}while(0);h=j+8|0;k=c[h>>2]|0;if(!k){i=c[j>>2]|0;if((c[j+116>>2]|0)==0?(b[i+76>>1]&8)==0:0)a[j+23>>0]=1;h:do if(c[i+272>>2]|0)if(!(a[i+81>>0]|0))rd=167;else break a;else{do if((e[i+276>>1]|0)>=224){k=i+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];m=i+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break h}k=i+296|0;l=c[k>>2]|0;if(!l){k=i+292|0;break}else{c[k>>2]=c[l>>2];m=i+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break h}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=167}while(0);if((rd|0)==167)m=_d(i,224,0)|0;if(!m)break a;I=m+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[m>>2]=i;k=i+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=m;c[m+8>>2]=l;c[m+4>>2]=0;c[k>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=j;c[h>>2]=m;Di(m,61,0,1,0)|0;r=m}else r=k;if((o|0)==7){k=r+108|0;l=c[k>>2]|0;if((c[r+112>>2]|0)>(l|0)){c[k>>2]=l+1;I=c[r+104>>2]|0;a[I+(l*20|0)>>0]=1;I=I+(l*20|0)+1|0;J=I+19|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));break a}else{Di(r,1,0,0,0)|0;break a}}q=n+20|0;if((c[q>>2]|0)>0){h=(o|0)==9?2:1;m=r+108|0;k=r+112|0;n=r+104|0;o=r+152|0;p=r+156|0;i=0;do{l=c[m>>2]|0;if((c[k>>2]|0)>(l|0)){c[m>>2]=l+1;j=c[n>>2]|0;a[j+(l*20|0)>>0]=2;b[j+(l*20|0)+2>>1]=0;c[j+(l*20|0)+4>>2]=i;c[j+(l*20|0)+8>>2]=h;c[j+(l*20|0)+12>>2]=0;c[j+(l*20|0)+16>>2]=0;a[j+(l*20|0)+1>>0]=0}else Di(r,2,i,h,0)|0;l=1<>2]=c[o>>2]|l;if((i|0)!=1?a[(c[(c[(c[r>>2]|0)+16>>2]|0)+(i<<4)+4>>2]|0)+9>>0]|0:0)c[p>>2]=c[p>>2]|l;i=i+1|0}while((i|0)<(c[q>>2]|0))}else{m=r+108|0;k=r+112|0}l=c[m>>2]|0;if((c[k>>2]|0)>(l|0)){c[m>>2]=l+1;I=c[r+104>>2]|0;a[I+(l*20|0)>>0]=1;I=I+(l*20|0)+1|0;J=I+19|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));break a}else{Di(r,1,0,0,0)|0;break a}}case 4:{c[td+16>>2]=7;break}case 300:case 7:case 6:case 5:{c[td+4>>2]=e[td+2>>1];break}case 9:case 8:{k=(b[td+-10>>1]|0)==12;h=k&1;k=k?39254:39263;l=c[j>>2]|0;do if(((a[l+165>>0]|0)==0?(a[j+200>>0]|0)==0:0)?(S=c[l+312>>2]|0,S|0):0){k=$a[S&127](c[l+316>>2]|0,22,k,0,0,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,V);c[j+12>>2]=23;break a}if((k|2|0)==2)if(!k)break;else break a;else{cd(j,39231,W);c[j+12>>2]=1;break a}}while(0);i=j+8|0;k=c[i>>2]|0;if(!k){m=c[j>>2]|0;if((c[j+116>>2]|0)==0?(b[m+76>>1]&8)==0:0)a[j+23>>0]=1;i:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=213;else break a;else{do if((e[m+276>>1]|0)>=224){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];qd=m+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break i}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];qd=m+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break i}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=213}while(0);if((rd|0)==213)k=_d(m,224,0)|0;if(!k)break a;I=k+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[k>>2]=m;l=m+4|0;m=c[l>>2]|0;if(m|0)c[m+4>>2]=k;c[k+8>>2]=m;c[k+4>>2]=0;c[l>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=j;c[i>>2]=k;Di(k,61,0,1,0)|0}l=k+108|0;m=c[l>>2]|0;if((c[k+112>>2]|0)>(m|0)){c[l>>2]=m+1;j=c[k+104>>2]|0;a[j+(m*20|0)>>0]=1;b[j+(m*20|0)+2>>1]=0;c[j+(m*20|0)+4>>2]=1;c[j+(m*20|0)+8>>2]=h;c[j+(m*20|0)+12>>2]=0;c[j+(m*20|0)+16>>2]=0;a[j+(m*20|0)+1>>0]=0;break a}else{Di(k,1,1,h,0)|0;break a}}case 10:{n=qj(c[j>>2]|0,td+4|0)|0;if(n|0){h=j+8|0;k=c[h>>2]|0;j:do if(!k){i=c[j>>2]|0;if((c[j+116>>2]|0)==0?(b[i+76>>1]&8)==0:0)a[j+23>>0]=1;k:do if(c[i+272>>2]|0)if(!(a[i+81>>0]|0))rd=236;else break j;else{do if((e[i+276>>1]|0)>=224){k=i+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];m=i+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break k}k=i+296|0;l=c[k>>2]|0;if(!l){k=i+292|0;break}else{c[k>>2]=c[l>>2];m=i+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break k}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=236}while(0);if((rd|0)==236)m=_d(i,224,0)|0;if(m|0){I=m+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[m>>2]=i;k=i+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=m;c[m+8>>2]=l;c[m+4>>2]=0;c[k>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=j;c[h>>2]=m;Di(m,61,0,1,0)|0;i=m;rd=241}}else{i=k;rd=241}while(0);l:do if((rd|0)==241){k=c[j>>2]|0;do if(((a[k+165>>0]|0)==0?(a[j+200>>0]|0)==0:0)?(pb=c[k+312>>2]|0,pb|0):0){k=$a[pb&127](c[k+316>>2]|0,32,36223,n,0,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,yb);c[j+12>>2]=23;break l}if((k|2|0)==2)if(!k)break;else break l;else{cd(j,39231,rb);c[j+12>>2]=1;break l}}while(0);m=i+108|0;k=c[m>>2]|0;if((c[i+112>>2]|0)>(k|0)){c[m>>2]=k+1;j=(c[i+104>>2]|0)+(k*20|0)|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}else k=Di(i,0,0,0,0)|0;l=c[i>>2]|0;if(!(a[l+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;l=c[i+104>>2]|0;m=l+(k*20|0)+1|0;if(!(a[m>>0]|0)){c[l+(k*20|0)+16>>2]=n;a[m>>0]=-7;break a}else{Ei(i,l+(k*20|0)|0,n,-7);break a}}if(l|0){if(c[l+480>>2]|0){Xd(l,n);break a}j=n;if((c[l+304>>2]|0)>>>0<=j>>>0?(c[l+308>>2]|0)>>>0>j>>>0:0){j=l+300|0;c[n>>2]=c[j>>2];c[j>>2]=n;break a}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break a}else{j=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break a}}while(0);k=c[j>>2]|0;if(k|0){if(c[k+480>>2]|0){Xd(k,n);break a}j=n;if((c[k+304>>2]|0)>>>0<=j>>>0?(c[k+308>>2]|0)>>>0>j>>>0:0){j=k+300|0;c[n>>2]=c[j>>2];c[j>>2]=n;break a}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break a}else{j=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break a}}break}case 11:{n=qj(c[j>>2]|0,td+4|0)|0;if(n|0){h=j+8|0;k=c[h>>2]|0;m:do if(!k){i=c[j>>2]|0;if((c[j+116>>2]|0)==0?(b[i+76>>1]&8)==0:0)a[j+23>>0]=1;n:do if(c[i+272>>2]|0)if(!(a[i+81>>0]|0))rd=291;else break m;else{do if((e[i+276>>1]|0)>=224){k=i+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];m=i+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break n}k=i+296|0;l=c[k>>2]|0;if(!l){k=i+292|0;break}else{c[k>>2]=c[l>>2];m=i+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break n}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=291}while(0);if((rd|0)==291)m=_d(i,224,0)|0;if(m|0){I=m+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[m>>2]=i;k=i+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=m;c[m+8>>2]=l;c[m+4>>2]=0;c[k>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=j;c[h>>2]=m;Di(m,61,0,1,0)|0;i=m;rd=296}}else{i=k;rd=296}while(0);o:do if((rd|0)==296){k=c[j>>2]|0;do if(((a[k+165>>0]|0)==0?(a[j+200>>0]|0)==0:0)?(qb=c[k+312>>2]|0,qb|0):0){k=$a[qb&127](c[k+316>>2]|0,32,39270,n,0,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,sb);c[j+12>>2]=23;break o}if((k|2|0)==2)if(!k)break;else break o;else{cd(j,39231,tb);c[j+12>>2]=1;break o}}while(0);m=i+108|0;k=c[m>>2]|0;if((c[i+112>>2]|0)>(k|0)){c[m>>2]=k+1;j=c[i+104>>2]|0;a[j+(k*20|0)>>0]=0;b[j+(k*20|0)+2>>1]=0;c[j+(k*20|0)+4>>2]=1;c[j+(k*20|0)+8>>2]=0;c[j+(k*20|0)+12>>2]=0;c[j+(k*20|0)+16>>2]=0;a[j+(k*20|0)+1>>0]=0}else k=Di(i,0,1,0,0)|0;l=c[i>>2]|0;if(!(a[l+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;l=c[i+104>>2]|0;m=l+(k*20|0)+1|0;if(!(a[m>>0]|0)){c[l+(k*20|0)+16>>2]=n;a[m>>0]=-7;break a}else{Ei(i,l+(k*20|0)|0,n,-7);break a}}if(l|0){if(c[l+480>>2]|0){Xd(l,n);break a}j=n;if((c[l+304>>2]|0)>>>0<=j>>>0?(c[l+308>>2]|0)>>>0>j>>>0:0){j=l+300|0;c[n>>2]=c[j>>2];c[j>>2]=n;break a}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break a}else{j=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break a}}while(0);k=c[j>>2]|0;if(k|0){if(c[k+480>>2]|0){Xd(k,n);break a}j=n;if((c[k+304>>2]|0)>>>0<=j>>>0?(c[k+308>>2]|0)>>>0>j>>>0:0){j=k+300|0;c[n>>2]=c[j>>2];c[j>>2]=n;break a}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break a}else{j=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break a}}break}case 12:{n=qj(c[j>>2]|0,td+4|0)|0;if(n|0){h=j+8|0;k=c[h>>2]|0;p:do if(!k){i=c[j>>2]|0;if((c[j+116>>2]|0)==0?(b[i+76>>1]&8)==0:0)a[j+23>>0]=1;q:do if(c[i+272>>2]|0)if(!(a[i+81>>0]|0))rd=346;else break p;else{do if((e[i+276>>1]|0)>=224){k=i+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];m=i+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break q}k=i+296|0;l=c[k>>2]|0;if(!l){k=i+292|0;break}else{c[k>>2]=c[l>>2];m=i+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break q}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=346}while(0);if((rd|0)==346)m=_d(i,224,0)|0;if(m|0){I=m+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[m>>2]=i;k=i+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=m;c[m+8>>2]=l;c[m+4>>2]=0;c[k>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=j;c[h>>2]=m;Di(m,61,0,1,0)|0;i=m;rd=351}}else{i=k;rd=351}while(0);r:do if((rd|0)==351){k=c[j>>2]|0;do if(((a[k+165>>0]|0)==0?(a[j+200>>0]|0)==0:0)?(nb=c[k+312>>2]|0,nb|0):0){k=$a[nb&127](c[k+316>>2]|0,32,39254,n,0,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,ub);c[j+12>>2]=23;break r}if((k|2|0)==2)if(!k)break;else break r;else{cd(j,39231,vb);c[j+12>>2]=1;break r}}while(0);m=i+108|0;k=c[m>>2]|0;if((c[i+112>>2]|0)>(k|0)){c[m>>2]=k+1;j=c[i+104>>2]|0;a[j+(k*20|0)>>0]=0;b[j+(k*20|0)+2>>1]=0;c[j+(k*20|0)+4>>2]=2;c[j+(k*20|0)+8>>2]=0;c[j+(k*20|0)+12>>2]=0;c[j+(k*20|0)+16>>2]=0;a[j+(k*20|0)+1>>0]=0}else k=Di(i,0,2,0,0)|0;l=c[i>>2]|0;if(!(a[l+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;l=c[i+104>>2]|0;m=l+(k*20|0)+1|0;if(!(a[m>>0]|0)){c[l+(k*20|0)+16>>2]=n;a[m>>0]=-7;break a}else{Ei(i,l+(k*20|0)|0,n,-7);break a}}if(l|0){if(c[l+480>>2]|0){Xd(l,n);break a}j=n;if((c[l+304>>2]|0)>>>0<=j>>>0?(c[l+308>>2]|0)>>>0>j>>>0:0){j=l+300|0;c[n>>2]=c[j>>2];c[j>>2]=n;break a}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break a}else{j=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break a}}while(0);k=c[j>>2]|0;if(k|0){if(c[k+480>>2]|0){Xd(k,n);break a}j=n;if((c[k+304>>2]|0)>>>0<=j>>>0?(c[k+308>>2]|0)>>>0>j>>>0:0){j=k+300|0;c[n>>2]=c[j>>2];c[j>>2]=n;break a}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break a}else{j=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break a}}break}case 13:{bj(j,td+-8|0,td+4|0,c[td+-44>>2]|0,0,0,c[td+-20>>2]|0);break}case 14:{rd=j+24|0;a[rd>>0]=(a[rd>>0]|0)+1<<24>>24;j=(c[j>>2]|0)+272|0;c[j>>2]=(c[j>>2]|0)+1;break}case 226:case 93:case 76:case 67:case 57:case 42:case 21:case 18:case 15:{c[td+16>>2]=0;break}case 16:{c[td+-20>>2]=1;break}case 43:case 17:{c[td+4>>2]=1;break}case 19:{cj(j,td+-20|0,td+-8|0,c[td+4>>2]&255,0);break}case 20:{k=td+4|0;cj(j,0,0,0,c[k>>2]|0);k=c[k>>2]|0;if(k|0)pi(c[j>>2]|0,k,1);break}case 22:{i=c[td+8>>2]|0;k=c[td+4>>2]|0;do if((i|0)==5)if(!k)k=0;else{l=a[k>>0]|0;do if(!(l<<24>>24)){l=38132;rd=397}else{qd=l&255;l=208+qd|0;if((qd|32|0)==114){l=a[k+1>>0]|0;if(!(l<<24>>24)){l=38133;rd=397;break}qd=l&255;l=208+qd|0;if((qd|32|0)==111){l=a[k+2>>0]|0;if(!(l<<24>>24)){l=38134;rd=397;break}qd=l&255;l=208+qd|0;if((qd|32|0)==119){l=a[k+3>>0]|0;if(!(l<<24>>24)){l=38135;rd=397;break}qd=l&255;l=208+qd|0;if((qd|32|0)==105){l=a[k+4>>0]|0;if(!(l<<24>>24)){l=38136;rd=397;break}l=l&255;if((l|32|0)==100)break;else{m=100;l=208+l|0}}else m=105}else m=119}else m=111}else m=114;cb=d[l>>0]|0;rd=401}while(0);if((rd|0)==397){cb=0;m=a[208+(d[l>>0]|0)>>0]|0;rd=401}if((rd|0)==401?(cb|0)!=(m&255|0):0)break;c[td+-8>>2]=96;break a}while(0);c[td+-8>>2]=0;c[gb>>2]=i;c[gb+4>>2]=k;cd(j,38466,gb);break}case 23:{h=td+-8|0;q=c[j>>2]|0;n=c[j+228>>2]|0;if(n|0){t=n+42|0;if((c[q+116>>2]|0)<=(b[t>>1]|0)){c[U>>2]=c[n>>2];cd(j,38221,U);break a}i=td+-4|0;s=td+8|0;m=(c[i>>2]|0)+2+(c[s>>2]|0)|0;p=q+272|0;s:do if(c[p>>2]|0)if(!(a[q+81>>0]|0))rd=417;else break a;else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){k=q+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];r=q+284|0;c[r>>2]=(c[r>>2]|0)+1;r=l;break s}k=q+296|0;l=c[k>>2]|0;if(!l){k=q+292|0;break}else{c[k>>2]=c[l>>2];r=q+284|0;c[r>>2]=(c[r>>2]|0)+1;r=l;break s}}else k=q+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=417}while(0);if((rd|0)==417)r=_d(q,m,0)|0;if(r|0){t:do if((d[j+200>>0]|0)>1){m=c[j>>2]|0;u:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=443;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){pd=c[14978]|0;od=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;nd=L()|0;c[14768]=((nd|0)<0|(nd|0)==0&od>>>0<=pd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break t;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break t}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=443;break u}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=443;break u}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=443}while(0);if((rd|0)==443)if(!k)break;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=r;nd=h;od=c[nd+4>>2]|0;pd=l;c[pd>>2]=c[nd>>2];c[pd+4>>2]=od;pd=j+272|0;c[k+12>>2]=c[pd>>2];c[pd>>2]=k}while(0);ew(r|0,c[h>>2]|0,c[i>>2]|0)|0;a[r+(c[i>>2]|0)>>0]=0;k=a[r>>0]|0;if((a[880+(k&255)>>0]|0)<0){i=k<<24>>24==91?93:k;m=0;k=1;while(1){l=a[r+k>>0]|0;if(l<<24>>24==i<<24>>24){k=k+1|0;l=r+m|0;if((a[r+k>>0]|0)!=i<<24>>24)break;a[l>>0]=i}else a[r+m>>0]=l;m=m+1|0;k=k+1|0}a[l>>0]=0}pd=b[t>>1]|0;k=pd<<16>>16;o=n+4|0;v:do if(pd<<16>>16>0){n=c[o>>2]|0;h=0;while(1){m=c[n+(h<<4)>>2]|0;if(m|0){pd=a[r>>0]|0;l=(d[208+(pd&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0;if(!(pd<<24>>24==0|(l|0)!=0)){i=r;do{i=i+1|0;m=m+1|0;pd=a[i>>0]|0;l=(d[208+(pd&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(pd<<24>>24==0|(l|0)!=0))}if(!l)break}h=h+1|0;if((h|0)>=(k|0))break v}c[nc>>2]=r;cd(j,41735,nc);if(c[q+480>>2]|0){Xd(q,r);break a}j=r;if((c[q+304>>2]|0)>>>0<=j>>>0?(c[q+308>>2]|0)>>>0>j>>>0:0){j=q+300|0;c[r>>2]=c[j>>2];c[j>>2]=r;break a}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break a}else{j=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break a}}while(0);do if(!(k&7)){l=c[o>>2]|0;m=(k<<4)+128|0;w:do if(!l){if(c[p>>2]|0){if(a[q+81>>0]|0)break}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){k=q+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];sc=q+284|0;c[sc>>2]=(c[sc>>2]|0)+1;sc=l;rd=488;break w}k=q+296|0;l=c[k>>2]|0;if(!l){k=q+292|0;break}else{c[k>>2]=c[l>>2];sc=q+284|0;c[sc>>2]=(c[sc>>2]|0)+1;sc=l;rd=488;break w}}else k=q+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}sc=_d(q,m,0)|0;rd=488}else{rd=l;if((c[q+304>>2]|0)>>>0<=rd>>>0?(c[q+308>>2]|0)>>>0>rd>>>0:0){if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){rd=498;break}sc=Zd(q,l,m,0)|0;rd=488;break}sc=Zd(q,l,m,0)|0;rd=488}while(0);if((rd|0)==488?sc|0:0){l=sc;k=b[t>>1]|0;rd=498}if((rd|0)==498){c[o>>2]=l;q=k;p=l;break}if(c[q+480>>2]|0){Xd(q,r);break a}j=r;if((c[q+304>>2]|0)>>>0<=j>>>0?(c[q+308>>2]|0)>>>0>j>>>0:0){j=q+300|0;c[r>>2]=c[j>>2];c[j>>2]=r;break a}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break a}else{j=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break a}}else{q=k;p=c[o>>2]|0}while(0);o=p+(q<<4)|0;k=p+(q<<4)+4|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[o>>2]=r;k=c[s>>2]|0;if(!k){a[p+(q<<4)+13>>0]=65;a[p+(q<<4)+14>>0]=1}else{n=r+((Eu(r)|0)&1073741823)+1|0;ew(n|0,c[td+4>>2]|0,k|0)|0;a[n+(c[s>>2]|0)>>0]=0;k=a[n>>0]|0;if((a[880+(k&255)>>0]|0)<0){i=k<<24>>24==91?93:k;m=0;k=1;while(1){l=a[n+k>>0]|0;if(l<<24>>24==i<<24>>24){k=k+1|0;l=n+m|0;if((a[n+k>>0]|0)!=i<<24>>24)break;a[l>>0]=i}else a[n+m>>0]=l;m=m+1|0;k=k+1|0}a[l>>0]=0;k=a[n>>0]|0}x:do if(!(k<<24>>24)){k=0;m=67}else{l=67;h=0;i=n;m=0;while(1){h=h<<8|d[208+(k&255)>>0];i=i+1|0;y:do if((h|0)<1685026146){if((h|0)<1667785074){switch(h|0){case 1651273570:break;default:{rd=521;break y}}switch(l<<24>>24){case 69:case 67:break;default:{rd=520;break y}}k=a[i>>0]|0;m=k<<24>>24==40?i:m;l=65;break}if((h|0)<1668050786)switch(h|0){case 1667785074:{k=i;l=66;rd=522;break y}default:{rd=521;break y}}switch(h|0){case 1668050786:break;default:{rd=521;break y}}k=m;l=66;rd=522}else{if((h|0)>=1919246700)if((h|0)<1952807028){switch(h|0){case 1919246700:break;default:{rd=521;break y}}if(l<<24>>24==67){k=m;l=69;rd=522;break}else{rd=520;break}}else{switch(h|0){case 1952807028:break;default:{rd=521;break y}}k=m;l=66;rd=522;break}if((h|0)<1718382433){switch(h|0){case 1685026146:break;default:{rd=521;break y}}if(l<<24>>24==67){k=m;l=69;rd=522;break}}else{switch(h|0){case 1718382433:break;default:{rd=521;break y}}if(l<<24>>24==67){k=m;l=69;rd=522;break}}k=m;rd=522}while(0);if((rd|0)==520){k=m;rd=522}else if((rd|0)==521){rd=0;if((h&16777215|0)==6909556){k=m;m=68;break x}else{k=m;rd=522}}if((rd|0)==522){rd=0;m=k;k=a[i>>0]|0}if(!(k<<24>>24)){k=m;m=l;break}}}while(0);if(o|0){c[qd>>2]=0;z:do if(m<<24>>24<67){if(!k){c[qd>>2]=16;k=5;rd=533;break}l=a[k>>0]|0;if(l<<24>>24){while(1){if(((l&255)+-48|0)>>>0<10)break;k=k+1|0;l=a[k>>0]|0;if(!(l<<24>>24)){k=1;rd=533;break z}}ii(k,qd)|0;k=c[qd>>2]|0;if((k|0)<1016){k=((k|0)/4|0)+1|0;rd=533}else k=255}else{k=1;rd=533}}else{k=1;rd=533}while(0);a[p+(q<<4)+14>>0]=k}a[p+(q<<4)+13>>0]=m;rd=p+(q<<4)+15|0;a[rd>>0]=a[rd>>0]|4}b[t>>1]=(b[t>>1]|0)+1<<16>>16;c[j+76>>2]=0}}break}case 99:case 60:case 24:{c[td+20>>2]=0;c[td+16>>2]=0;break}case 25:{c[td+-28>>2]=(c[td+4>>2]|0)+(c[td+8>>2]|0)-(c[td+-32>>2]|0);break}case 26:{c[td+-52>>2]=(c[td+4>>2]|0)+(c[td+8>>2]|0)-(c[td+-56>>2]|0);break}case 27:{c[td+-4>>2]=(c[td+4>>2]|0)+(c[td+8>>2]|0)-(c[td+-8>>2]|0);break}case 28:{c[td+16>>2]=h;break}case 62:case 29:{qd=td+4|0;rd=c[qd+4>>2]|0;j=j+72|0;c[j>>2]=c[qd>>2];c[j+4>>2]=rd;break}case 30:{dj(j,c[td+-8>>2]|0,c[td+-20>>2]|0,c[td+4>>2]|0);break}case 31:{dj(j,c[td+-8>>2]|0,(c[td+-20>>2]|0)+1|0,c[td+4>>2]|0);break}case 32:{dj(j,c[td+-8>>2]|0,c[td+-20>>2]|0,c[td+4>>2]|0);break}case 33:{rd=ej(j,165,c[td+-8>>2]|0,0)|0;dj(j,rd,c[td+-20>>2]|0,c[td+4>>2]|0);break}case 34:{o=td+4|0;p=td+8|0;q=fj(j,110,c[o>>2]|0,c[p>>2]|0)|0;do if(q|0?(c[q+4>>2]&67108864|0)==0:0){l=c[q+8>>2]|0;n=a[l>>0]|0;h=d[208+(n&255)>>0]|0;k=h+-116|0;n=n<<24>>24==0;if(!(n|(k|0)!=0)){m=41806;i=l;do{i=i+1|0;m=m+1|0;rd=a[i>>0]|0;k=(d[208+(rd&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(rd<<24>>24==0|(k|0)!=0))}if(k|0){k=h+-102|0;if(!(n|(k|0)!=0)){m=41811;do{l=l+1|0;m=m+1|0;rd=a[l>>0]|0;k=(d[208+(rd&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(rd<<24>>24==0|(k|0)!=0))}if(k|0)break}a[q>>0]=-97}while(0);rd=c[o>>2]|0;dj(j,q,rd,rd+(c[p>>2]|0)|0);break}case 35:{i=c[td+4>>2]|0;m=c[j+228>>2]|0;if(((m|0?(aa=m+42|0,l=b[aa>>1]|0,l<<16>>16>=1):0)?(rd=c[m+4>>2]|0,j=(l<<16>>16)+-1|0,a[rd+(j<<4)+12>>0]=i,qd=m+36|0,c[qd>>2]=c[qd>>2]|512,a[rd+(j<<4)+15>>0]&8):0)?(k=c[m+8>>2]|0,k|0):0)while(1){if(((l<<16>>16)+-1|0)==(b[c[k+4>>2]>>1]|0)){j=k+55|0;rd=d[j>>0]|d[j+1>>0]<<8|8;a[j>>0]=rd;a[j+1>>0]=rd>>8}k=c[k+20>>2]|0;if(!k)break a;l=b[aa>>1]|0}break}case 36:{gj(j,0,c[td+-8>>2]|0,c[td+4>>2]|0,c[td+-20>>2]|0);break}case 37:{hj(j,0,0,0,0,c[td+4>>2]|0,0,0,0,0,1);break}case 38:{k=c[td+-8>>2]|0;l=c[j+228>>2]|0;m=c[j>>2]|0;if((l|0?(Ob=j+200|0,(a[Ob>>0]|0)!=1):0)?(b[(c[(c[(c[m+16>>2]|0)+(d[m+164>>0]<<4)+4>>2]|0)+4>>2]|0)+22>>1]&1)==0:0){o=l+24|0;n=nj(m,c[o>>2]|0,k)|0;c[o>>2]=n;o=c[j+76>>2]|0;if(!o)break a;s=j+72|0;if(!n)break a;p=(c[n>>2]|0)+-1|0;m=c[j>>2]|0;q=c[s>>2]|0;A:do if(q){i=Sv(o|0,0,1,0)|0;h=L()|0;B:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=586;else{rd=588;break A}else{do if(0<0|(0==0?o>>>0<(e[m+276>>1]|0)>>>0:0)){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];r=m+284|0;c[r>>2]=(c[r>>2]|0)+1;r=l;break B}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];r=m+284|0;c[r>>2]=(c[r>>2]|0)+1;r=l;break B}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=586}while(0);if((rd|0)==586)r=_d(m,i,h)|0;if(r){ew(r|0,q|0,o|0)|0;a[r+o>>0]=0;k=n+4+(p*20|0)+4|0;c[k>>2]=r;l=a[r>>0]|0;if((a[880+(l&255)>>0]|0)<0){h=l<<24>>24==91?93:l;i=0;l=1;while(1){m=a[r+l>>0]|0;if(m<<24>>24==h<<24>>24){l=l+1|0;m=r+i|0;if((a[r+l>>0]|0)!=h<<24>>24)break;a[m>>0]=h}else a[r+i>>0]=m;i=i+1|0;l=l+1|0}a[m>>0]=0}}else rd=588}else rd=588;while(0);if((rd|0)==588){k=n+4+(p*20|0)+4|0;c[k>>2]=0}if((d[Ob>>0]|0)<=1)break a;i=c[k>>2]|0;m=c[j>>2]|0;C:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=621;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break a;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break a}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=621;break C}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=621;break C}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=621}while(0);if((rd|0)==621)if(!k)break a;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=i;pd=s;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;j=j+272|0;c[k+12>>2]=c[j>>2];c[j>>2]=k;break a}if(k|0)ni(m,k);break}case 39:{ij(j,0,td+-20|0,c[td+-8>>2]|0,c[td+4>>2]|0);break}case 40:{l=c[td+4>>2]|0;k=c[j+228>>2]|0;if(k|0?(x=c[k+16>>2]|0,x|0):0)a[x+24>>0]=l;break}case 41:{m=c[j+228>>2]|0;if(m|0?(wa=(b[m+42>>1]|0)+-1|0,ba=c[j>>2]|0,ca=qj(ba,td+4|0)|0,ca|0):0){l=c[j>>2]|0;k=a[l+78>>0]|0;qd=a[l+165>>0]|0;l=Zi(l,k,ca,qd&255)|0;do if(!(qd<<24>>24)){if(!l){N=_i(j,k,0,ca)|0;rd=636;break}if(!(c[l+12>>2]|0)){N=_i(j,k,l,ca)|0;rd=636}}else{N=l;rd=636}while(0);if((rd|0)==636?(N|0)==0:0){if(ba|0){if(c[ba+480>>2]|0){Xd(ba,ca);break a}j=ca;if((c[ba+304>>2]|0)>>>0<=j>>>0?(c[ba+308>>2]|0)>>>0>j>>>0:0){j=ba+300|0;c[ca>>2]=c[j>>2];c[j>>2]=ca;break a}}if(!(c[7324]|0)){ab[c[29344>>2]&127](ca);break a}else{j=Wa[c[29352>>2]&127](ca)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](ca);break a}}l=m+4|0;k=c[(c[l>>2]|0)+(wa<<4)+8>>2]|0;do if(k|0){if(ba|0){if(c[ba+480>>2]|0){Xd(ba,k);break}j=k;if((c[ba+304>>2]|0)>>>0<=j>>>0?(c[ba+308>>2]|0)>>>0>j>>>0:0){j=ba+300|0;c[k>>2]=c[j>>2];c[j>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[(c[l>>2]|0)+(wa<<4)+8>>2]=ca;k=c[m+8>>2]|0;if(k|0)do{if((wa|0)==(b[c[k+4>>2]>>1]|0))c[c[k+32>>2]>>2]=c[(c[l>>2]|0)+(wa<<4)+8>>2];k=c[k+20>>2]|0}while((k|0)!=0)}break}case 44:{c[td+16>>2]=0;break}case 45:{j=td+-8|0;c[j>>2]=c[j>>2]&~c[td+8>>2]|c[td+4>>2];break}case 46:{c[td+-8>>2]=0;c[td+-4>>2]=0;break}case 47:{c[td+-20>>2]=0;c[td+-16>>2]=0;break}case 48:{c[td+-20>>2]=c[td+4>>2];c[td+-16>>2]=255;break}case 49:{c[td+-20>>2]=c[td+4>>2]<<8;c[td+-16>>2]=65280;break}case 50:{c[td+-8>>2]=8;break}case 51:{c[td+-8>>2]=9;break}case 52:{c[td+4>>2]=10;break}case 53:{c[td+4>>2]=7;break}case 54:{c[td+-8>>2]=0;break}case 55:{c[td+-20>>2]=0;break}case 156:case 71:case 56:{c[td+-8>>2]=c[td+4>>2];break}case 227:case 201:case 198:case 75:case 58:{c[td+-8>>2]=1;break}case 59:{c[td+-8>>2]=0;break}case 61:{c[j+76>>2]=0;break}case 63:{gj(j,c[td+-32>>2]|0,c[td+4>>2]|0,c[td+-20>>2]|0,0);break}case 64:{hj(j,0,0,0,c[td+-20>>2]|0,c[td+4>>2]|0,0,0,0,0,1);break}case 65:{k=c[td+-20>>2]|0;l=c[j+228>>2]|0;m=c[j>>2]|0;if((l|0?(Pb=j+200|0,(a[Pb>>0]|0)!=1):0)?(b[(c[(c[(c[m+16>>2]|0)+(d[m+164>>0]<<4)+4>>2]|0)+4>>2]|0)+22>>1]&1)==0:0){o=l+24|0;n=nj(m,c[o>>2]|0,k)|0;c[o>>2]=n;o=c[j+76>>2]|0;if(!o)break a;s=j+72|0;if(!n)break a;p=(c[n>>2]|0)+-1|0;m=c[j>>2]|0;q=c[s>>2]|0;D:do if(q){i=Sv(o|0,0,1,0)|0;h=L()|0;E:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=695;else{rd=697;break D}else{do if(0<0|(0==0?o>>>0<(e[m+276>>1]|0)>>>0:0)){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];r=m+284|0;c[r>>2]=(c[r>>2]|0)+1;r=l;break E}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];r=m+284|0;c[r>>2]=(c[r>>2]|0)+1;r=l;break E}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=695}while(0);if((rd|0)==695)r=_d(m,i,h)|0;if(r){ew(r|0,q|0,o|0)|0;a[r+o>>0]=0;k=n+4+(p*20|0)+4|0;c[k>>2]=r;l=a[r>>0]|0;if((a[880+(l&255)>>0]|0)<0){h=l<<24>>24==91?93:l;i=0;l=1;while(1){m=a[r+l>>0]|0;if(m<<24>>24==h<<24>>24){l=l+1|0;m=r+i|0;if((a[r+l>>0]|0)!=h<<24>>24)break;a[m>>0]=h}else a[r+i>>0]=m;i=i+1|0;l=l+1|0}a[m>>0]=0}}else rd=697}else rd=697;while(0);if((rd|0)==697){k=n+4+(p*20|0)+4|0;c[k>>2]=0}if((d[Pb>>0]|0)<=1)break a;i=c[k>>2]|0;m=c[j>>2]|0;F:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=730;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break a;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break a}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=730;break F}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=730;break F}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=730}while(0);if((rd|0)==730)if(!k)break a;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=i;pd=s;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;j=j+272|0;c[k+12>>2]=c[j>>2];c[j>>2]=k;break a}if(k|0)ni(m,k);break}case 66:{ij(j,c[td+-68>>2]|0,td+-32|0,c[td+-20>>2]|0,c[td+-8>>2]|0);l=c[td+4>>2]|0;k=c[j+228>>2]|0;if(k|0?(y=c[k+16>>2]|0,y|0):0)a[y+24>>0]=l;break}case 70:case 68:{c[td+16>>2]=11;break}case 69:{c[td+-20>>2]=c[td+4>>2];break}case 72:{c[td+4>>2]=4;break}case 157:case 73:{c[td+4>>2]=5;break}case 74:{jj(j,c[td+4>>2]|0,0,c[td+-8>>2]|0);break}case 77:{h=td+-44|0;i=td+-32|0;o=c[td+-20>>2]|0;l=c[td+4>>2]|0;k=c[td+-80>>2]|0;m=c[td+-56>>2]|0;p=c[j>>2]|0;if((b[j+196>>1]|0)<=0){bj(j,h,i,k,1,0,m);n=c[j+228>>2]|0;if((n|0)!=0?(c[j+36>>2]|0)==0:0){k=c[j>>2]|0;do if(c[td+-28>>2]|0){if(a[k+165>>0]|0){cd(j,39404,Ha);h=0;break}if((wk(k,h)|0)<0){c[Ka>>2]=h;cd(j,39421,Ka);h=i}else h=i}while(0);m=c[n+72>>2]|0;if(!m)k=-1e6;else{i=c[p+16>>2]|0;k=0;while(1)if((c[i+(k<<4)+12>>2]|0)==(m|0))break;else k=k+1|0}pd=c[j>>2]|0;c[Qb>>2]=j;pd=c[pd+16>>2]|0;c[Qb+12>>2]=c[pd+(k<<4)>>2];c[Qb+4>>2]=c[pd+(k<<4)+12>>2];c[Qb+16>>2]=39579;c[Qb+20>>2]=h;c[Qb+8>>2]=(k|0)==1&1;if(!(cl(Qb,l)|0)){if((d[j+200>>0]|0)>1)k=0;else{k=l;l=fk(p,l,1)|0}c[n+12>>2]=l;pd=gk(p,o,1)|0;c[n+24>>2]=pd;if(!(a[p+81>>0]|0)){m=j+188|0;l=c[m>>2]|0;m=c[m+4>>2]|0;i=_c;c[i>>2]=l;c[i+4>>2]=m;i=l;if((a[i>>0]|0)!=59){l=i+m|0;c[_c>>2]=l}m=_c+4|0;c[m>>2]=0;i=c[td+-92>>2]|0;l=l-i|0;do l=l+-1|0;while((a[880+(d[i+l>>0]|0)>>0]&1)!=0);c[_c>>2]=i+l;c[m>>2]=1;cj(j,0,_c,0,0)}}else k=l}else k=l}else{cd(j,43004,la);k=l}if(k|0)pi(p,k,1);if((d[j+200>>0]|0)>1){if(o|0){k=qd+8|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[qd>>2]=j;c[qd+4>>2]=124;k=c[o>>2]|0;if((k|0)>0){l=o+4|0;while(1){m=c[l>>2]|0;if(m|0?_j(qd,m)|0:0)break;if((k|0)>1){k=k+-1|0;l=l+20|0}else break}h=c[o>>2]|0;if((h|0)>0){m=j+272|0;l=0;do{i=c[o+4+(l*20|0)+4>>2]|0;k=c[m>>2]|0;G:do if(k|0){while(1){if((c[k>>2]|0)==(i|0))break;k=c[k+12>>2]|0;if(!k)break G}c[k>>2]=0}while(0);l=l+1|0}while((l|0)!=(h|0))}}rd=781}}else rd=781;if((rd|0)==781?o|0:0)ri(p,o);break}case 78:{jj(j,c[td+4>>2]|0,1,c[td+-8>>2]|0);break}case 79:{c[qd>>2]=c[7517];c[qd+4>>2]=c[7518];c[qd+8>>2]=c[7519];c[qd+12>>2]=c[7520];c[qd+16>>2]=c[7521];c[qd+20>>2]=c[7522];k=td+4|0;kj(j,c[k>>2]|0,qd)|0;k=c[k>>2]|0;if(k|0)pi(c[j>>2]|0,k,1);break}case 80:{q=c[td+4>>2]|0;do if(!q){o=c[j>>2]|0;p=c[td+-8>>2]|0;if(p|0){H:do if((c[p>>2]|0)>0){m=o+480|0;i=o+304|0;h=o+308|0;n=o+300|0;if(!o){l=0;while(1){k=c[p+8+(l<<4)+4>>2]|0;if(k|0)ri(0,k);k=c[p+8+(l<<4)+8>>2]|0;if(k|0)pi(0,k,1);k=c[p+8+(l<<4)>>2]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);l=l+1|0;if((l|0)>=(c[p>>2]|0))break H}}l=0;do{k=c[p+8+(l<<4)+4>>2]|0;if(k|0)ri(o,k);k=c[p+8+(l<<4)+8>>2]|0;if(k|0)pi(o,k,1);k=c[p+8+(l<<4)>>2]|0;do if(k|0){if(c[m>>2]|0){Xd(o,k);break}j=k;if((c[i>>2]|0)>>>0<=j>>>0?(c[h>>2]|0)>>>0>j>>>0:0){c[k>>2]=c[n>>2];c[n>>2]=k;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);l=l+1|0}while((l|0)<(c[p>>2]|0))}while(0);if(o|0){if(c[o+480>>2]|0){Xd(o,p);break}j=p;if((c[o+304>>2]|0)>>>0<=j>>>0?(c[o+308>>2]|0)>>>0>j>>>0:0){j=o+300|0;c[p>>2]=c[j>>2];c[j>>2]=p;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{j=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}}else{c[q+64>>2]=c[td+-8>>2];k=c[q+52>>2]|0;if(k|0){c[q+56>>2]=0;h=q+8|0;c[h>>2]=c[h>>2]|256;m=q;i=0;while(1){i=i+1|0;l=c[k+52>>2]|0;c[k+56>>2]=m;rd=k+8|0;c[rd>>2]=c[rd>>2]|256;if(!l)break;else{m=k;k=l}}if((c[h>>2]&1024|0)==0?(rd=c[(c[j>>2]|0)+124>>2]|0,(rd|0)>0&(i|0)>=(rd|0)):0)cd(j,44434,ma)}}while(0);c[td+-20>>2]=q;break}case 81:{q=c[td+4>>2]|0;do if(!q){o=c[j>>2]|0;p=c[td+-8>>2]|0;if(p|0){I:do if((c[p>>2]|0)>0){m=o+480|0;i=o+304|0;h=o+308|0;n=o+300|0;if(!o){l=0;while(1){k=c[p+8+(l<<4)+4>>2]|0;if(k|0)ri(0,k);k=c[p+8+(l<<4)+8>>2]|0;if(k|0)pi(0,k,1);k=c[p+8+(l<<4)>>2]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);l=l+1|0;if((l|0)>=(c[p>>2]|0))break I}}l=0;do{k=c[p+8+(l<<4)+4>>2]|0;if(k|0)ri(o,k);k=c[p+8+(l<<4)+8>>2]|0;if(k|0)pi(o,k,1);k=c[p+8+(l<<4)>>2]|0;do if(k|0){if(c[m>>2]|0){Xd(o,k);break}j=k;if((c[i>>2]|0)>>>0<=j>>>0?(c[h>>2]|0)>>>0>j>>>0:0){c[k>>2]=c[n>>2];c[n>>2]=k;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);l=l+1|0}while((l|0)<(c[p>>2]|0))}while(0);if(o|0){if(c[o+480>>2]|0){Xd(o,p);break}j=p;if((c[o+304>>2]|0)>>>0<=j>>>0?(c[o+308>>2]|0)>>>0>j>>>0:0){j=o+300|0;c[p>>2]=c[j>>2];c[j>>2]=p;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{j=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}}else{c[q+64>>2]=c[td+-8>>2];k=c[q+52>>2]|0;if(k|0){c[q+56>>2]=0;h=q+8|0;c[h>>2]=c[h>>2]|256;m=q;i=0;while(1){i=i+1|0;l=c[k+52>>2]|0;c[k+56>>2]=m;rd=k+8|0;c[rd>>2]=c[rd>>2]|256;if(!l)break;else{m=k;k=l}}if((c[h>>2]&1024|0)==0?(rd=c[(c[j>>2]|0)+124>>2]|0,(rd|0)>0&(i|0)>=(rd|0)):0)cd(j,44434,oa)}}while(0);c[td+-32>>2]=q;break}case 82:{h=td+4|0;n=c[h>>2]|0;if(n|0?(da=c[n+52>>2]|0,da|0):0){c[n+56>>2]=0;o=n+8|0;c[o>>2]=c[o>>2]|256;m=n;i=0;l=da;while(1){i=i+1|0;k=c[l+52>>2]|0;c[l+56>>2]=m;rd=l+8|0;c[rd>>2]=c[rd>>2]|256;if(!k)break;else{m=l;l=k}}if((c[o>>2]&1024|0)==0?(rd=c[(c[j>>2]|0)+124>>2]|0,(rd|0)>0&(i|0)>=(rd|0)):0)cd(j,44434,pa)}c[h>>2]=n;break}case 83:{k=c[td+4>>2]|0;p=td+-20|0;o=c[p>>2]|0;do if(k){l=k+52|0;m=c[l>>2]|0;if(m){c[qd+4>>2]=0;c[k+56>>2]=0;n=k+8|0;c[n>>2]=c[n>>2]|256;i=k;h=0;while(1){h=h+1|0;l=c[m+52>>2]|0;c[m+56>>2]=i;pd=m+8|0;c[pd>>2]=c[pd>>2]|256;if(!l)break;else{i=m;m=l}}if((c[n>>2]&1024|0)==0?(pd=c[(c[j>>2]|0)+124>>2]|0,(pd|0)>0&(h|0)>=(pd|0)):0)cd(j,44434,Na);l=mj(j,0,lj(j,0,0,0,qd,k,0,0)|0,0,0,0,0,0,0)|0;if(!l){rd=899;break}k=l;l=l+52|0}m=td+-8|0;a[k+4>>0]=c[m>>2];c[l>>2]=o;if(o|0){qd=o+8|0;c[qd>>2]=c[qd>>2]&-1025}qd=k+8|0;c[qd>>2]=c[qd>>2]&-1025;if((c[m>>2]|0)!=128)a[j+22>>0]=1}else rd=899;while(0);if((rd|0)==899)if(!o)k=0;else{pi(c[j>>2]|0,o,1);k=0}c[p>>2]=k;break}case 86:case 84:{c[td+4>>2]=e[td+2>>1];break}case 85:{c[td+-8>>2]=128;break}case 87:{j=mj(j,c[td+-68>>2]|0,c[td+-56>>2]|0,c[td+-44>>2]|0,c[td+-32>>2]|0,c[td+-20>>2]|0,c[td+-8>>2]|0,c[td+-80>>2]|0,c[td+4>>2]|0)|0;c[td+-92>>2]=j;break}case 88:{k=mj(j,c[td+-80>>2]|0,c[td+-68>>2]|0,c[td+-56>>2]|0,c[td+-44>>2]|0,c[td+-32>>2]|0,c[td+-8>>2]|0,c[td+-92>>2]|0,c[td+4>>2]|0)|0;c[td+-104>>2]=k;if(k|0){c[k+72>>2]=c[td+-20>>2];break a}l=c[j>>2]|0;k=c[td+-20>>2]|0;if(k|0)do{j=k;k=c[k+32>>2]|0;oi(l,j)}while((k|0)!=0);break}case 89:{j=mj(j,c[td+-8>>2]|0,0,0,0,0,0,512,0)|0;c[td+-32>>2]=j;break}case 90:{m=td+-44|0;k=c[m>>2]|0;l=mj(j,c[td+-8>>2]|0,0,0,0,0,0,1536,0)|0;if(k|0){j=k+8|0;c[j>>2]=c[j>>2]&-1025}if(l){a[l+4>>0]=-128;c[l+52>>2]=k;k=l}c[m>>2]=k;break}case 91:{c[td+4>>2]=1;break}case 92:{c[td+4>>2]=2;break}case 222:case 217:case 214:case 134:case 127:case 94:{c[td+16>>2]=0;break}case 95:{r=td+-44|0;k=nj(c[j>>2]|0,c[r>>2]|0,c[td+-20>>2]|0)|0;c[r>>2]=k;o=c[td+8>>2]|0;if(o){s=td+4|0;J:do if(k|0){p=(c[k>>2]|0)+-1|0;i=c[j>>2]|0;q=c[s>>2]|0;K:do if(q){h=Sv(o|0,0,1,0)|0;n=L()|0;L:do if(c[i+272>>2]|0)if(!(a[i+81>>0]|0))rd=932;else{rd=934;break K}else{do if(0<0|(0==0?o>>>0<(e[i+276>>1]|0)>>>0:0)){l=i+300|0;m=c[l>>2]|0;if(m|0){c[l>>2]=c[m>>2];n=i+284|0;c[n>>2]=(c[n>>2]|0)+1;n=m;break L}l=i+296|0;m=c[l>>2]|0;if(!m){l=i+292|0;break}else{c[l>>2]=c[m>>2];n=i+284|0;c[n>>2]=(c[n>>2]|0)+1;n=m;break L}}else l=i+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;rd=932}while(0);if((rd|0)==932)n=_d(i,h,n)|0;if(n){ew(n|0,q|0,o|0)|0;a[n+o>>0]=0;k=k+4+(p*20|0)+4|0;c[k>>2]=n;l=a[n>>0]|0;if((a[880+(l&255)>>0]|0)<0){h=l<<24>>24==91?93:l;i=0;l=1;while(1){m=a[n+l>>0]|0;if(m<<24>>24==h<<24>>24){l=l+1|0;m=n+i|0;if((a[n+l>>0]|0)!=h<<24>>24)break;a[m>>0]=h}else a[n+i>>0]=m;i=i+1|0;l=l+1|0}a[m>>0]=0}}else rd=934}else rd=934;while(0);if((rd|0)==934){k=k+4+(p*20|0)+4|0;c[k>>2]=0}if((d[j+200>>0]|0)>1){i=c[k>>2]|0;m=c[j>>2]|0;M:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=967;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break J;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break J}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=967;break M}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=967;break M}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=967}while(0);if((rd|0)==967)if(!k)break;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=i;od=s;pd=c[od+4>>2]|0;qd=l;c[qd>>2]=c[od>>2];c[qd+4>>2]=pd;qd=j+272|0;c[k+12>>2]=c[qd>>2];c[qd>>2]=k}}while(0);k=c[r>>2]|0}l=c[td+-32>>2]|0;m=c[td+-8>>2]|0;o=c[j>>2]|0;if(k|0){p=k+4+(((c[k>>2]|0)+-1|0)*20|0)+8|0;k=c[p>>2]|0;do if(k|0){if(o|0){if(c[o+480>>2]|0){Xd(o,k);break}j=k;if((c[o+304>>2]|0)>>>0<=j>>>0?(c[o+308>>2]|0)>>>0>j>>>0:0){j=o+300|0;c[k>>2]=c[j>>2];c[j>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);n=l;while(1)if(!(a[880+(d[n>>0]|0)>>0]&1))break;else n=n+1|0;k=m-n|0;N:do if((k|0)<=0)if(!n)k=0;else{l=k;rd=988}else while(1){l=k+-1|0;if(!(a[880+(d[n+l>>0]|0)>>0]&1)){l=k;rd=988;break N}if((k|0)>1)k=l;else{rd=988;break}}while(0);O:do if((rd|0)==988){i=Sv(l|0,((l|0)<0)<<31>>31|0,1,0)|0;h=L()|0;P:do if(c[o+272>>2]|0)if(!(a[o+81>>0]|0))rd=998;else{k=0;break O}else{do if(!(h>>>0>0|((h|0)==0?i>>>0>(e[o+276>>1]|0)>>>0:0))){m=o+300|0;k=c[m>>2]|0;if(k|0){c[m>>2]=c[k>>2];j=o+284|0;c[j>>2]=(c[j>>2]|0)+1;break P}m=o+296|0;k=c[m>>2]|0;if(!k){k=o+292|0;break}else{c[m>>2]=c[k>>2];j=o+284|0;c[j>>2]=(c[j>>2]|0)+1;break P}}else k=o+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=998}while(0);if((rd|0)==998)k=_d(o,i,h)|0;if(!k)k=0;else{ew(k|0,n|0,l|0)|0;a[k+l>>0]=0}}while(0);c[p>>2]=k}break}case 96:{rd=c[j>>2]|0;c[qd>>2]=0;c[qd+4>>2]=0;qd=oj(rd,172,qd,0)|0;rd=td+-20|0;j=nj(c[j>>2]|0,c[rd>>2]|0,qd)|0;c[rd>>2]=j;break}case 97:{qd=ej(j,172,0,0)|0;qd=ej(j,134,oj(c[j>>2]|0,59,td+-20|0,1)|0,qd)|0;rd=td+-44|0;j=nj(c[j>>2]|0,c[rd>>2]|0,qd)|0;c[rd>>2]=j;break}case 239:case 238:case 109:case 98:{qd=td+4|0;rd=c[qd+4>>2]|0;j=td+-8|0;c[j>>2]=c[qd>>2];c[j+4>>2]=rd;break}case 100:{m=c[j>>2]|0;Q:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](80)|0;rd=1028;break}k=Wa[c[29356>>2]&127](80)|0;if((c[14985]|0)>>>0<80)c[14985]=80;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){j=c[14978]|0;qd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;pd=L()|0;c[14768]=((pd|0)<0|(pd|0)==0&qd>>>0<=j>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(k){l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0){c[14987]=l;rd=1029}else rd=1029}else k=0}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0){k=0;break}}else{do if((e[m+276>>1]|0)>=80){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1028;break Q}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1028;break Q}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,80,0)|0;rd=1028}while(0);if((rd|0)==1028)if(!k)k=0;else rd=1029;if((rd|0)==1029){I=k;J=I+80|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0))}c[td+16>>2]=k;break}case 101:{l=c[td+4>>2]|0;c[td+-8>>2]=l;if(l|0){k=c[l>>2]|0;if((k|0)>1)do{j=k;k=k+-1|0;a[l+8+(k*72|0)+36>>0]=a[l+8+((j+-2|0)*72|0)+36>>0]|0}while((j|0)>2);a[l+44>>0]=0}break}case 102:{k=c[td+-8>>2]|0;if(k|0?(p=c[k>>2]|0,(p|0)>0):0)a[k+8+((p+-1|0)*72|0)+36>>0]=c[td+4>>2];break}case 103:{c[td+16>>2]=0;break}case 104:{l=td+-68|0;k=lj(j,c[l>>2]|0,td+-56|0,td+-44|0,td+-32|0,0,c[td+-8>>2]|0,c[td+4>>2]|0)|0;c[l>>2]=k;l=td+-20|0;if(k|0?(P=c[td+-16>>2]|0,P|0):0){m=(c[k>>2]|0)+-1|0;if((P|0)==1?(c[l>>2]|0)==0:0){j=k+8+(m*72|0)+37|0;a[j>>0]=a[j>>0]|1;break a}j=qj(c[j>>2]|0,l)|0;c[k+8+(m*72|0)+64>>2]=j;j=k+8+(m*72|0)+37|0;a[j>>0]=a[j>>0]|2}break}case 105:{l=td+-92|0;k=lj(j,c[l>>2]|0,td+-80|0,td+-68|0,td+-20|0,0,c[td+-8>>2]|0,c[td+4>>2]|0)|0;c[l>>2]=k;l=c[td+-44>>2]|0;if(k|0){j=(c[k>>2]|0)+-1|0;c[k+8+(j*72|0)+64>>2]=l;j=k+8+(j*72|0)+37|0;a[j>>0]=a[j>>0]|4;break a}if(l|0)ri(c[j>>2]|0,l);break}case 106:{rd=td+-68|0;j=lj(j,c[rd>>2]|0,0,0,td+-20|0,c[td+-44>>2]|0,c[td+-8>>2]|0,c[td+4>>2]|0)|0;c[rd>>2]=j;break}case 107:{i=td+-68|0;l=c[i>>2]|0;if((((l|0)==0?(c[td+-16>>2]|0)==0:0)?(c[td+-8>>2]|0)==0:0)?(c[td+4>>2]|0)==0:0){c[i>>2]=c[td+-44>>2];break a}p=td+-44|0;m=c[p>>2]|0;k=c[m>>2]|0;if((k|0)==1){o=lj(j,l,0,0,td+-20|0,0,c[td+-8>>2]|0,c[td+4>>2]|0)|0;c[i>>2]=o;if(o|0){k=(c[o>>2]|0)+-1|0;l=c[p>>2]|0;m=l+16|0;c[o+8+(k*72|0)+8>>2]=c[m>>2];i=l+12|0;c[o+8+(k*72|0)+4>>2]=c[i>>2];h=l+28|0;c[o+8+(k*72|0)+20>>2]=c[h>>2];n=l+45|0;if(a[n>>0]&4){rd=l+72|0;c[o+8+(k*72|0)+64>>2]=c[rd>>2];c[rd>>2]=0;a[n>>0]=a[n>>0]&-5;rd=o+8+(k*72|0)+37|0;a[rd>>0]=a[rd>>0]|4}c[i>>2]=0;c[m>>2]=0;c[h>>2]=0}qi(c[j>>2]|0,c[p>>2]|0);break a}if(!m)k=0;else{if((k|0)>1)do{rd=k;k=k+-1|0;a[m+8+(k*72|0)+36>>0]=a[m+8+((rd+-2|0)*72|0)+36>>0]|0}while((rd|0)>2);a[m+44>>0]=0;k=c[p>>2]|0}rd=mj(j,0,k,0,0,0,0,2048,0)|0;j=lj(j,c[i>>2]|0,0,0,td+-20|0,rd,c[td+-8>>2]|0,c[td+4>>2]|0)|0;c[i>>2]=j;break}case 122:case 108:{c[td+16>>2]=0;c[td+20>>2]=0;break}case 110:{i=td+4|0;h=pj(j,0,i,0)|0;R:do if(!((h|0)==0|(d[j+200>>0]|0)<2)){n=c[h+16>>2]|0;m=c[j>>2]|0;S:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=1093;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break R;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break R}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1093;break S}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1093;break S}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=1093}while(0);if((rd|0)==1093)if(!k)break;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=n;pd=i;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;j=j+272|0;c[k+12>>2]=c[j>>2];c[j>>2]=k}while(0);c[i>>2]=h;break}case 111:{i=td+-20|0;h=td+4|0;n=pj(j,0,i,h)|0;T:do if(!((n|0)==0|(d[j+200>>0]|0)<2)){o=c[n+16>>2]|0;m=c[j>>2]|0;U:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=1120;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break T;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break T}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1120;break U}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1120;break U}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=1120}while(0);if((rd|0)==1120)if(!k)break;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=o;pd=h;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;j=j+272|0;c[k+12>>2]=c[j>>2];c[j>>2]=k}while(0);c[i>>2]=n;break}case 112:{rd=td+4|0;j=pj(j,0,rd,0)|0;c[rd>>2]=j;break}case 113:{rd=td+-20|0;j=pj(j,0,rd,td+4|0)|0;c[rd>>2]=j;break}case 114:{k=td+-44|0;rd=pj(j,0,k,td+-20|0)|0;c[k>>2]=rd;if(rd|0){j=qj(c[j>>2]|0,td+4|0)|0;c[(c[k>>2]|0)+20>>2]=j}break}case 115:{k=td+-20|0;rd=pj(j,0,k,0)|0;c[k>>2]=rd;if(rd|0){j=qj(c[j>>2]|0,td+4|0)|0;c[(c[k>>2]|0)+20>>2]=j}break}case 116:{c[td+4>>2]=1;break}case 117:{rd=td+-8|0;j=rj(j,rd,0,0)|0;c[rd>>2]=j;break}case 118:{rd=td+-20|0;j=rj(j,rd,td+-8|0,0)|0;c[rd>>2]=j;break}case 119:{rd=td+-32|0;j=rj(j,rd,td+-20|0,td+-8|0)|0;c[rd>>2]=j;break}case 231:case 210:case 144:case 137:case 120:{c[td+-8>>2]=c[td+4>>2];break}case 232:case 213:case 211:case 143:case 138:case 136:case 121:{c[td+16>>2]=0;break}case 123:{qd=td+4|0;rd=c[qd+4>>2]|0;j=td+-20|0;c[j>>2]=c[qd>>2];c[j+4>>2]=rd;break}case 124:{c[td+-8>>2]=0;c[td+-4>>2]=1;break}case 125:{c[td+-32>>2]=c[td+-8>>2];break}case 158:case 126:{c[td+16>>2]=0;break}case 135:case 128:{c[td+-20>>2]=c[td+4>>2];break}case 129:{l=td+-32|0;k=nj(c[j>>2]|0,c[l>>2]|0,c[td+-8>>2]|0)|0;c[l>>2]=k;l=c[td+4>>2]|0;if(!((k|0)==0|(l|0)<0))a[k+4+(((c[k>>2]|0)+-1|0)*20|0)+12>>0]=l;break}case 130:{l=td+-8|0;k=nj(c[j>>2]|0,0,c[l>>2]|0)|0;c[l>>2]=k;l=c[td+4>>2]|0;if(!((k|0)==0|(l|0)<0))a[k+4+(((c[k>>2]|0)+-1|0)*20|0)+12>>0]=l;break}case 131:{c[td+4>>2]=0;break}case 132:{c[td+4>>2]=1;break}case 133:{c[td+16>>2]=-1;break}case 139:{j=ej(j,141,c[td+4>>2]|0,0)|0;c[td+-8>>2]=j;break}case 140:{j=ej(j,141,c[td+-20>>2]|0,c[td+4>>2]|0)|0;c[td+-32>>2]=j;break}case 141:{j=ej(j,141,c[td+4>>2]|0,c[td+-20>>2]|0)|0;c[td+-32>>2]=j;break}case 142:{k=td+-20|0;l=c[k>>2]|0;m=td+-8|0;do if(l|0?(Y=c[td+-4>>2]|0,Y|0):0){i=(c[l>>2]|0)+-1|0;if((Y|0)==1?(c[m>>2]|0)==0:0){rd=l+8+(i*72|0)+37|0;a[rd>>0]=a[rd>>0]|1;break}rd=qj(c[j>>2]|0,m)|0;c[l+8+(i*72|0)+64>>2]=rd;rd=l+8+(i*72|0)+37|0;a[rd>>0]=a[rd>>0]|2}while(0);sj(j,c[k>>2]|0,c[td+4>>2]|0);break}case 145:{i=td+-44|0;k=c[i>>2]|0;l=td+-32|0;do if(k|0?(Z=c[td+-28>>2]|0,Z|0):0){m=(c[k>>2]|0)+-1|0;if((Z|0)==1?(c[l>>2]|0)==0:0){rd=k+8+(m*72|0)+37|0;a[rd>>0]=a[rd>>0]|1;break}rd=qj(c[j>>2]|0,l)|0;c[k+8+(m*72|0)+64>>2]=rd;rd=k+8+(m*72|0)+37|0;a[rd>>0]=a[rd>>0]|2}while(0);l=td+-8|0;k=c[l>>2]|0;if(k){if((c[k>>2]|0)>(c[(c[j>>2]|0)+116>>2]|0)){c[ha>>2]=38493;cd(j,44753,ha);k=c[l>>2]|0}}else k=0;tj(j,c[i>>2]|0,k,c[td+4>>2]|0,c[td+-56>>2]|0,0);break}case 146:{s=td+-44|0;n=nj(c[j>>2]|0,c[s>>2]|0,c[td+4>>2]|0)|0;c[s>>2]=n;s=td+-20|0;if(n|0){o=(c[n>>2]|0)+-1|0;m=c[j>>2]|0;p=c[s>>2]|0;q=c[td+-16>>2]|0;V:do if(p){i=Sv(q|0,0,1,0)|0;h=L()|0;W:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=1179;else{rd=1181;break V}else{do if(0<0|(0==0?q>>>0<(e[m+276>>1]|0)>>>0:0)){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];r=m+284|0;c[r>>2]=(c[r>>2]|0)+1;r=l;break W}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];r=m+284|0;c[r>>2]=(c[r>>2]|0)+1;r=l;break W}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=1179}while(0);if((rd|0)==1179)r=_d(m,i,h)|0;if(r){ew(r|0,p|0,q|0)|0;a[r+q>>0]=0;k=n+4+(o*20|0)+4|0;c[k>>2]=r;l=a[r>>0]|0;if((a[880+(l&255)>>0]|0)<0){h=l<<24>>24==91?93:l;i=0;l=1;while(1){m=a[r+l>>0]|0;if(m<<24>>24==h<<24>>24){l=l+1|0;m=r+i|0;if((a[r+l>>0]|0)!=h<<24>>24)break;a[m>>0]=h}else a[r+i>>0]=m;i=i+1|0;l=l+1|0}a[m>>0]=0}}else rd=1181}else rd=1181;while(0);if((rd|0)==1181){k=n+4+(o*20|0)+4|0;c[k>>2]=0}if((d[j+200>>0]|0)>1){i=c[k>>2]|0;m=c[j>>2]|0;X:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=1214;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break a;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break a}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1214;break X}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1214;break X}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=1214}while(0);if((rd|0)==1214)if(!k)break a;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=i;pd=s;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;j=j+272|0;c[k+12>>2]=c[j>>2];c[j>>2]=k}}break}case 147:{rd=td+-68|0;j=uj(j,c[rd>>2]|0,c[td+-32>>2]|0,c[td+4>>2]|0)|0;c[rd>>2]=j;break}case 148:{r=nj(c[j>>2]|0,0,c[td+4>>2]|0)|0;s=td+-20|0;Y:do if(r|0){n=(c[r>>2]|0)+-1|0;m=c[j>>2]|0;o=c[s>>2]|0;p=c[td+-16>>2]|0;Z:do if(o){i=Sv(p|0,0,1,0)|0;h=L()|0;_:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=1229;else{rd=1231;break Z}else{do if(0<0|(0==0?p>>>0<(e[m+276>>1]|0)>>>0:0)){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];q=m+284|0;c[q>>2]=(c[q>>2]|0)+1;q=l;break _}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];q=m+284|0;c[q>>2]=(c[q>>2]|0)+1;q=l;break _}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=1229}while(0);if((rd|0)==1229)q=_d(m,i,h)|0;if(q){ew(q|0,o|0,p|0)|0;a[q+p>>0]=0;k=r+4+(n*20|0)+4|0;c[k>>2]=q;l=a[q>>0]|0;if((a[880+(l&255)>>0]|0)<0){h=l<<24>>24==91?93:l;i=0;l=1;while(1){m=a[q+l>>0]|0;if(m<<24>>24==h<<24>>24){l=l+1|0;m=q+i|0;if((a[q+l>>0]|0)!=h<<24>>24)break;a[m>>0]=h}else a[q+i>>0]=m;i=i+1|0;l=l+1|0}a[m>>0]=0}}else rd=1231}else rd=1231;while(0);if((rd|0)==1231){k=r+4+(n*20|0)+4|0;c[k>>2]=0}if((d[j+200>>0]|0)>1){i=c[k>>2]|0;m=c[j>>2]|0;$:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=1264;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break Y;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break Y}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1264;break $}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1264;break $}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=1264}while(0);if((rd|0)==1264)if(!k)break;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=i;pd=s;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;j=j+272|0;c[k+12>>2]=c[j>>2];c[j>>2]=k}}while(0);c[s>>2]=r;break}case 149:{j=uj(j,0,c[td+-32>>2]|0,c[td+4>>2]|0)|0;c[td+-44>>2]=j;break}case 150:{vj(j,c[td+-32>>2]|0,c[td+-8>>2]|0,c[td+-20>>2]|0,c[td+-56>>2]|0,c[td+4>>2]|0);break}case 151:{vj(j,c[td+-32>>2]|0,0,c[td+-20>>2]|0,c[td+-56>>2]|0,0);break}case 152:{c[td+16>>2]=0;break}case 153:{i=c[j>>2]|0;h=c[td+-80>>2]|0;n=c[td+-56>>2]|0;o=c[td+-8>>2]|0;p=c[td+4>>2]|0;aa:do if(!i){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](36)|0;rd=1294;break}k=Wa[c[29356>>2]&127](36)|0;if((c[14985]|0)>>>0<36)c[14985]=36;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){j=c[14978]|0;rd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;qd=L()|0;c[14768]=((qd|0)<0|(qd|0)==0&rd>>>0<=j>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(k){l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0){c[14987]=l;rd=1303}else rd=1303}else rd=1295}else{if(c[i+272>>2]|0){if(a[i+81>>0]|0){rd=1295;break}}else{do if((e[i+276>>1]|0)>=36){l=i+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=i+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1294;break aa}l=i+296|0;k=c[l>>2]|0;if(!k){k=i+292|0;break}else{c[l>>2]=c[k>>2];rd=i+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1294;break aa}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(i,36,0)|0;rd=1294}while(0);if((rd|0)==1294)if(!k)rd=1295;else rd=1303;if((rd|0)==1295){if(h|0)ri(i,h);if(n|0)ni(i,n);if(o|0)ri(i,o);if(!p)k=0;else{ni(i,p);k=0}}else if((rd|0)==1303){c[k>>2]=h;c[k+4>>2]=n;c[k+8>>2]=o;c[k+12>>2]=p;c[k+16>>2]=0}c[td+-116>>2]=k;break}case 154:{i=c[j>>2]|0;h=c[td+-44>>2]|0;n=c[td+-20>>2]|0;ba:do if(!i){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](36)|0;rd=1328;break}k=Wa[c[29356>>2]&127](36)|0;if((c[14985]|0)>>>0<36)c[14985]=36;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){j=c[14978]|0;rd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;qd=L()|0;c[14768]=((qd|0)<0|(qd|0)==0&rd>>>0<=j>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(k){l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0){c[14987]=l;rd=1333}else rd=1333}else rd=1329}else{if(c[i+272>>2]|0){if(a[i+81>>0]|0){rd=1329;break}}else{do if((e[i+276>>1]|0)>=36){l=i+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=i+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1328;break ba}l=i+296|0;k=c[l>>2]|0;if(!k){k=i+292|0;break}else{c[l>>2]=c[k>>2];rd=i+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1328;break ba}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(i,36,0)|0;rd=1328}while(0);if((rd|0)==1328)if(!k)rd=1329;else rd=1333;if((rd|0)==1329){if(h|0)ri(i,h);if(!n)k=0;else{ni(i,n);k=0}}else if((rd|0)==1333){c[k>>2]=h;c[k+4>>2]=n;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0}c[td+-80>>2]=k;break}case 155:{m=c[j>>2]|0;ca:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](36)|0;rd=1358;break}k=Wa[c[29356>>2]&127](36)|0;if((c[14985]|0)>>>0<36)c[14985]=36;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){j=c[14978]|0;qd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;pd=L()|0;c[14768]=((pd|0)<0|(pd|0)==0&qd>>>0<=j>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(k){l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0){c[14987]=l;rd=1359}else rd=1359}else k=0}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0){k=0;break}}else{do if((e[m+276>>1]|0)>=36){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1358;break ca}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1358;break ca}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,36,0)|0;rd=1358}while(0);if((rd|0)==1358)if(!k)k=0;else rd=1359;if((rd|0)==1359){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[td+-32>>2]=k;break}case 159:{c[td+-20>>2]=c[td+-8>>2];break}case 160:{rd=td+-20|0;j=wj(j,c[rd>>2]|0,td+4|0)|0;c[rd>>2]=j;break}case 161:{rd=td+4|0;j=wj(j,0,rd)|0;c[rd>>2]=j;break}case 162:{c[td+-20>>2]=c[td+-8>>2];break}case 164:case 163:{rd=td+4|0;j=fj(j,59,c[rd>>2]|0,c[td+8>>2]|0)|0;c[rd>>2]=j;break}case 165:{h=td+-20|0;n=oj(c[j>>2]|0,59,h,1)|0;i=td+4|0;o=oj(c[j>>2]|0,59,i,1)|0;da:do if((d[j+200>>0]|0)>1){m=c[j>>2]|0;ea:do if(!m){if(!(c[7324]|0)){La=Wa[c[29340>>2]&127](16)|0;rd=1390;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}l=Wa[c[29340>>2]&127](k)|0;if(l|0){k=Wa[c[29352>>2]&127](l)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;k=l;rd=1391}else{k=l;rd=1391}}}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break}else{do if((e[m+276>>1]|0)>=16){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];La=m+284|0;c[La>>2]=(c[La>>2]|0)+1;La=l;rd=1390;break ea}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];La=m+284|0;c[La>>2]=(c[La>>2]|0)+1;La=l;rd=1390;break ea}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}La=_d(m,16,0)|0;rd=1390}while(0);if((rd|0)==1390?La|0:0){k=La;rd=1391}if((rd|0)==1391){l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=o;od=i;pd=c[od+4>>2]|0;qd=l;c[qd>>2]=c[od>>2];c[qd+4>>2]=pd;qd=j+272|0;c[k+12>>2]=c[qd>>2];c[qd>>2]=k}m=c[j>>2]|0;fa:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=1415;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break da;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break da}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1415;break fa}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1415;break fa}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=1415}while(0);if((rd|0)==1415)if(!k)break;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=n;pd=h;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;rd=j+272|0;c[k+12>>2]=c[rd>>2];c[rd>>2]=k}while(0);j=ej(j,134,n,o)|0;c[h>>2]=j;break}case 166:{n=td+-44|0;o=oj(c[j>>2]|0,59,n,1)|0;p=td+-20|0;q=oj(c[j>>2]|0,59,p,1)|0;i=td+4|0;h=oj(c[j>>2]|0,59,i,1)|0;r=ej(j,134,q,h)|0;ga:do if((d[j+200>>0]|0)>1){m=c[j>>2]|0;ha:do if(!m){if(!(c[7324]|0)){Ya=Wa[c[29340>>2]&127](16)|0;rd=1442;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}l=Wa[c[29340>>2]&127](k)|0;if(l|0){k=Wa[c[29352>>2]&127](l)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;k=l;rd=1443}else{k=l;rd=1443}}}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break}else{do if((e[m+276>>1]|0)>=16){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];Ya=m+284|0;c[Ya>>2]=(c[Ya>>2]|0)+1;Ya=l;rd=1442;break ha}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];Ya=m+284|0;c[Ya>>2]=(c[Ya>>2]|0)+1;Ya=l;rd=1442;break ha}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}Ya=_d(m,16,0)|0;rd=1442}while(0);if((rd|0)==1442?Ya|0:0){k=Ya;rd=1443}if((rd|0)==1443){l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=h;od=i;pd=c[od+4>>2]|0;qd=l;c[qd>>2]=c[od>>2];c[qd+4>>2]=pd;qd=j+272|0;c[k+12>>2]=c[qd>>2];c[qd>>2]=k}m=c[j>>2]|0;ia:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=1467;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break ga;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break ga}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1467;break ia}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1467;break ia}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=1467}while(0);if((rd|0)==1467)if(!k)break;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=q;pd=p;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;rd=j+272|0;c[k+12>>2]=c[rd>>2];c[rd>>2]=k}while(0);j=ej(j,134,o,r)|0;c[n>>2]=j;break}case 168:case 167:{rd=td+4|0;j=fj(j,e[td+2>>1]|0,c[rd>>2]|0,c[td+8>>2]|0)|0;c[rd>>2]=j;break}case 169:{rd=td+4|0;j=oj(c[j>>2]|0,147,rd,1)|0;c[rd>>2]=j;break}case 170:{m=td+4|0;k=c[m>>2]|0;if((a[k>>0]|0)==35?((d[k+1>>0]|0)+-48|0)>>>0<10:0){pd=m;l=c[pd>>2]|0;pd=c[pd+4>>2]|0;rd=qd;c[rd>>2]=l;c[rd+4>>2]=pd;if(a[j+18>>0]|0){k=ej(j,168,0,0)|0;c[m>>2]=k;if(k|0)ii(l+1|0,k+28|0)|0}else{c[J>>2]=qd;cd(j,38502,J);c[m>>2]=0}break a}u=c[td+8>>2]|0;w=fj(j,148,k,u)|0;c[m>>2]=w;v=c[j>>2]|0;if(w|0){t=c[w+8>>2]|0;k=t+1|0;l=a[k>>0]|0;ja:do if(!(l<<24>>24)){rd=j+196|0;k=(b[rd>>1]|0)+1<<16>>16;b[rd>>1]=k}else{if((a[t>>0]|0)==63){if((u|0)==2){i=(l<<24>>24)+-48|0;m=((i|0)<0)<<31>>31;k=qd;c[k>>2]=i;c[k+4>>2]=m;k=0}else{k=(Og(k,qd,u+-1|0,1)|0)!=0;i=qd;m=c[i+4>>2]|0;i=c[i>>2]|0}l=c[v+144>>2]|0;qd=((l|0)<0)<<31>>31;if(k|((m|0)<0|(m|0)==0&i>>>0<1)|((m|0)>(qd|0)|(m|0)==(qd|0)&i>>>0>l>>>0)){c[Xa>>2]=l;cd(j,45057,Xa);break a}k=i&65535;l=j+196|0;ka:do if((b[l>>1]|0)>=k<<16>>16){h=k<<16>>16;m=j+216|0;l=c[m>>2]|0;if(!l)l=0;else{n=c[l+4>>2]|0;i=2;while(1){if((c[l+(i<<2)>>2]|0)==(h|0))break;i=(c[l+(i+1<<2)>>2]|0)+i|0;if((i|0)>=(n|0))break ka}break ja}}else{b[l>>1]=k;l=j+216|0;m=l;l=c[l>>2]|0}while(0)}else{m=j+216|0;l=c[m>>2]|0;la:do if(l|0){h=c[l+4>>2]|0;k=2;while(1){i=l+(k+2<<2)|0;if((av(i,t,u)|0)==0?(a[i+u>>0]|0)==0:0)break;k=(c[l+(k+1<<2)>>2]|0)+k|0;if((k|0)>=(h|0))break la}k=c[l+(k<<2)>>2]|0;if(k&65535|0){k=k&65535;break ja}}while(0);qd=j+196|0;k=(b[qd>>1]|0)+1<<16>>16;b[qd>>1]=k}r=k<<16>>16;i=(u|0)/4|0;s=i+3|0;q=(l|0)==0;ma:do if(!q){o=l+4|0;i=c[o>>2]|0;h=i+s|0;n=c[l>>2]|0;if((h|0)>(n|0)){i=cw(n|0,((n|0)<0)<<31>>31|0,1)|0;i=Sv(i|0,L()|0,s|0,((s|0)<0)<<31>>31|0)|0;h=cw(i|0,L()|0,2)|0;n=L()|0;rd=l;if((c[v+304>>2]|0)>>>0<=rd>>>0?(c[v+308>>2]|0)>>>0>rd>>>0:0){if(!(n>>>0>0|((n|0)==0?h>>>0>(e[v+276>>1]|0)>>>0:0))){rd=1518;break}n=Zd(v,l,h,n)|0;rd=1515;break}n=Zd(v,l,h,n)|0;rd=1515}else{n=o;rd=1519}}else{i=i+13|0;o=cw(i|0,((i|0)<0)<<31>>31|0,2)|0;p=L()|0;if(c[v+272>>2]|0){if(a[v+81>>0]|0){l=0;break}}else{do if(!(p>>>0>0|((p|0)==0?o>>>0>(e[v+276>>1]|0)>>>0:0))){h=v+300|0;n=c[h>>2]|0;if(n|0){c[h>>2]=c[n>>2];rd=v+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1515;break ma}h=v+296|0;n=c[h>>2]|0;if(!n){h=v+292|0;break}else{c[h>>2]=c[n>>2];rd=v+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1515;break ma}}else h=v+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}n=_d(v,o,p)|0;rd=1515}while(0);if((rd|0)==1515)if(n)if(q){c[n+4>>2]=2;l=n;rd=1518}else{l=n;rd=1518}if((rd|0)==1518){c[l>>2]=i;n=l+4|0;i=c[n>>2]|0;h=i+s|0;rd=1519}if((rd|0)==1519){c[l+(i<<2)>>2]=r;c[l+(i+1<<2)>>2]=s;rd=l+(i+2<<2)|0;c[n>>2]=h;ew(rd|0,t|0,u|0)|0;a[rd+u>>0]=0}c[m>>2]=l}while(0);b[w+32>>1]=k;if((c[v+144>>2]|0)<(k<<16>>16|0))cd(j,45100,yc)}break}case 171:{l=td+-20|0;k=c[l>>2]|0;if((c[td+8>>2]|0)!=0?(A=oj(c[j>>2]|0,106,td+4|0,1)|0,(A|0)!=0):0){c[A+12>>2]=k;k=A+4|0;c[k>>2]=c[k>>2]|4352;k=A}c[l>>2]=k;break}case 172:{i=oj(c[j>>2]|0,36,td+-8|0,1)|0;c[td+-56>>2]=i;k=c[j>>2]|0;l=c[td+-32>>2]|0;m=(l|0)==0;if(!i){if(m)break a;ni(k,l);break a}if(!m){c[i+12>>2]=l;j=i+4|0;c[j>>2]=c[j>>2]|c[l+4>>2]&2097412}Ym(i);break}case 173:{l=c[td+-8>>2]|0;n=td+-44|0;h=c[td+-20>>2]|0;m=c[j>>2]|0;k=oj(m,161,n,1)|0;i=(l|0)==0;if(!k)if(i)k=0;else{ri(m,l);k=0}else{if(!i?(c[l>>2]|0)>(c[(c[j>>2]|0)+132>>2]|0):0){c[ia>>2]=n;cd(j,45123,ia)}c[k+20>>2]=l;l=k+4|0;c[l>>2]=c[l>>2]|4;if((c[j+36>>2]|0)==0?(Ym(k),xa=c[(c[j>>2]|0)+120>>2]|0,(xa|0)<(c[k+24>>2]|0)):0){c[qa>>2]=xa;cd(j,41637,qa)}if((h|0)==1)c[l>>2]=c[l>>2]|2}c[n>>2]=k;break}case 174:{l=td+-32|0;k=oj(c[j>>2]|0,161,l,1)|0;if(k){c[k+20>>2]=0;rd=k+4|0;c[rd>>2]=c[rd>>2]|4;if((c[j+36>>2]|0)==0?(Ym(k),B=c[(c[j>>2]|0)+120>>2]|0,(B|0)<(c[k+24>>2]|0)):0){c[u>>2]=B;cd(j,41637,u)}}else k=0;c[l>>2]=k;break}case 175:{l=c[td+-20>>2]|0;n=td+-56|0;h=c[td+-32>>2]|0;m=c[j>>2]|0;k=oj(m,161,n,1)|0;i=(l|0)==0;if(k){if(!i?(c[l>>2]|0)>(c[(c[j>>2]|0)+132>>2]|0):0){c[ja>>2]=n;cd(j,45123,ja)}c[k+20>>2]=l;m=k+4|0;c[m>>2]=c[m>>2]|4;if((c[j+36>>2]|0)==0?(Ym(k),ya=c[(c[j>>2]|0)+120>>2]|0,(ya|0)<(c[k+24>>2]|0)):0){c[ra>>2]=ya;cd(j,41637,ra)}if((h|0)==1)c[m>>2]=c[m>>2]|2;l=c[td+4>>2]|0;if((l|0)!=0?(c[k+44>>2]=l,rd=c[m>>2]|0,c[m>>2]=rd|16777216,c[l+68>>2]=k,(rd&2|0)!=0):0)cd(j,45157,Fa)}else{if(!i)ri(m,l);oi(c[j>>2]|0,c[td+4>>2]|0);k=0}c[n>>2]=k;break}case 176:{i=td+-44|0;k=oj(c[j>>2]|0,161,i,1)|0;if(k){c[k+20>>2]=0;m=k+4|0;c[m>>2]=c[m>>2]|4;if((c[j+36>>2]|0)==0?(Ym(k),Q=c[(c[j>>2]|0)+120>>2]|0,(Q|0)<(c[k+24>>2]|0)):0){c[K>>2]=Q;cd(j,41637,K)}l=c[td+4>>2]|0;if((l|0)!=0?(c[k+44>>2]=l,rd=c[m>>2]|0,c[m>>2]=rd|16777216,c[l+68>>2]=k,(rd&2|0)!=0):0)cd(j,45157,X)}else{oi(c[j>>2]|0,c[td+4>>2]|0);k=0}c[i>>2]=k;break}case 177:{l=td+4|0;k=oj(c[j>>2]|0,161,l,1)|0;if(k){c[k+20>>2]=0;rd=k+4|0;c[rd>>2]=c[rd>>2]|4;if((c[j+36>>2]|0)==0?(Ym(k),C=c[(c[j>>2]|0)+120>>2]|0,(C|0)<(c[k+24>>2]|0)):0){c[v>>2]=C;cd(j,41637,v)}}else k=0;c[l>>2]=k;break}case 178:{k=nj(c[j>>2]|0,c[td+-32>>2]|0,c[td+-8>>2]|0)|0;l=ej(j,169,0,0)|0;c[td+-44>>2]=l;if(l|0){c[l+20>>2]=k;break a}if(k|0)ri(c[j>>2]|0,k);break}case 186:case 185:case 184:case 183:case 182:case 181:case 180:case 179:{rd=td+-20|0;j=ej(j,e[td+-10>>1]|0,c[rd>>2]|0,c[td+4>>2]|0)|0;c[rd>>2]=j;break}case 187:{qd=td+4|0;j=c[qd+4>>2]|0;rd=td+-8|0;c[rd>>2]=c[qd>>2];c[rd+4>>2]=j;c[td+-4>>2]=j|-2147483648;break}case 188:{l=td+-8|0;m=td+-4|0;n=c[m>>2]|0;c[m>>2]=n&2147483647;m=nj(c[j>>2]|0,0,c[td+4>>2]|0)|0;o=td+-20|0;m=nj(c[j>>2]|0,m,c[o>>2]|0)|0;i=c[j>>2]|0;k=oj(i,161,l,1)|0;h=(m|0)==0;if(!k)if(h)k=0;else{ri(i,m);k=0}else{if(!h?(c[m>>2]|0)>(c[(c[j>>2]|0)+132>>2]|0):0){c[sa>>2]=l;cd(j,45123,sa)}c[k+20>>2]=m;rd=k+4|0;c[rd>>2]=c[rd>>2]|4;if((c[j+36>>2]|0)==0?(Ym(k),za=c[(c[j>>2]|0)+120>>2]|0,(za|0)<(c[k+24>>2]|0)):0){c[ta>>2]=za;cd(j,41637,ta)}}c[o>>2]=k;if((n|0)<0){k=ej(j,19,k,0)|0;c[o>>2]=k}if(k|0){j=k+4|0;c[j>>2]=c[j>>2]|128}break}case 189:{l=td+-32|0;m=td+-28|0;n=c[m>>2]|0;c[m>>2]=n&2147483647;m=nj(c[j>>2]|0,0,c[td+-20>>2]|0)|0;o=td+-44|0;m=nj(c[j>>2]|0,m,c[o>>2]|0)|0;m=nj(c[j>>2]|0,m,c[td+4>>2]|0)|0;i=c[j>>2]|0;k=oj(i,161,l,1)|0;h=(m|0)==0;if(!k)if(h)k=0;else{ri(i,m);k=0}else{if(!h?(c[m>>2]|0)>(c[(c[j>>2]|0)+132>>2]|0):0){c[ua>>2]=l;cd(j,45123,ua)}c[k+20>>2]=m;rd=k+4|0;c[rd>>2]=c[rd>>2]|4;if((c[j+36>>2]|0)==0?(Ym(k),Aa=c[(c[j>>2]|0)+120>>2]|0,(Aa|0)<(c[k+24>>2]|0)):0){c[va>>2]=Aa;cd(j,41637,va)}}c[o>>2]=k;if((n|0)<0){k=ej(j,19,k,0)|0;c[o>>2]=k}if(k|0){j=k+4|0;c[j>>2]=c[j>>2]|128}break}case 190:{rd=td+-8|0;j=ej(j,e[td+2>>1]|0,c[rd>>2]|0,0)|0;c[rd>>2]=j;break}case 191:{rd=td+-20|0;j=ej(j,51,c[rd>>2]|0,0)|0;c[rd>>2]=j;break}case 192:{m=td+-20|0;rd=td+4|0;k=ej(j,45,c[m>>2]|0,c[rd>>2]|0)|0;c[m>>2]=k;rd=c[rd>>2]|0;m=c[j>>2]|0;if(((k|0)!=0&(rd|0)!=0?(a[rd>>0]|0)==114:0)?(d[j+200>>0]|0)<=1:0){a[k>>0]=50;k=k+16|0;l=c[k>>2]|0;if(l|0)ni(m,l);c[k>>2]=0}break}case 193:{m=td+-32|0;rd=td+4|0;k=ej(j,160,c[m>>2]|0,c[rd>>2]|0)|0;c[m>>2]=k;rd=c[rd>>2]|0;m=c[j>>2]|0;if(((k|0)!=0&(rd|0)!=0?(a[rd>>0]|0)==114:0)?(d[j+200>>0]|0)<=1:0){a[k>>0]=51;k=k+16|0;l=c[k>>2]|0;if(l|0)ni(m,l);c[k>>2]=0}break}case 195:case 194:{j=ej(j,e[td+-10>>1]|0,c[td+4>>2]|0,0)|0;c[td+-8>>2]=j;break}case 196:{j=ej(j,(b[td+-10>>1]|0)==100?166:165,c[td+4>>2]|0,0)|0;c[td+-8>>2]=j;break}case 200:case 197:{c[td+4>>2]=0;break}case 199:{k=nj(c[j>>2]|0,0,c[td+-20>>2]|0)|0;k=nj(c[j>>2]|0,k,c[td+4>>2]|0)|0;l=td+-44|0;m=ej(j,48,c[l>>2]|0,0)|0;c[l>>2]=m;if(!m){if(k|0)ri(c[j>>2]|0,k)}else c[m+20>>2]=k;if(c[td+-32>>2]|0){j=ej(j,19,c[l>>2]|0,0)|0;c[l>>2]=j}break}case 202:{m=td+-8|0;k=c[m>>2]|0;if(!k){if((d[j+200>>0]|0)>=2)break a;k=td+-44|0;l=c[k>>2]|0;if(l|0)ni(c[j>>2]|0,l);j=oj(c[j>>2]|0,147,17136+(c[td+-32>>2]<<3)|0,1)|0;c[k>>2]=j;break a}if((c[k>>2]|0)==1){k=k+4|0;l=c[k>>2]|0;c[k>>2]=0;k=c[m>>2]|0;if(k|0)ri(c[j>>2]|0,k);if(l|0){rd=l+4|0;c[rd>>2]=c[rd>>2]&-769|512}rd=td+-44|0;j=ej(j,(c[td+-32>>2]|0)==0?53:52,c[rd>>2]|0,l)|0;c[rd>>2]=j;break a}l=td+-44|0;k=ej(j,49,c[l>>2]|0,0)|0;c[l>>2]=k;if(!k){k=c[m>>2]|0;if(k|0)ri(c[j>>2]|0,k)}else{c[k+20>>2]=c[m>>2];k=c[l>>2]|0;if((c[j+36>>2]|0)==0?(Ym(k),ea=c[(c[j>>2]|0)+120>>2]|0,(ea|0)<(c[k+24>>2]|0)):0){c[$>>2]=ea;cd(j,41637,$)}}if(c[td+-32>>2]|0){j=ej(j,19,c[l>>2]|0,0)|0;c[l>>2]=j}break}case 203:{k=ej(j,131,0,0)|0;c[td+-20>>2]=k;l=c[td+-8>>2]|0;if(!k){if(!l)break a;pi(c[j>>2]|0,l,1);break a}c[k+20>>2]=l;rd=k+4|0;c[rd>>2]=c[rd>>2]|2099200;if((c[j+36>>2]|0)==0?(Ym(k),D=c[(c[j>>2]|0)+120>>2]|0,(D|0)<(c[k+24>>2]|0)):0){c[w>>2]=D;cd(j,41637,w)}break}case 204:{k=td+-44|0;l=ej(j,49,c[k>>2]|0,0)|0;c[k>>2]=l;m=c[td+-8>>2]|0;if(!l){if(m|0)pi(c[j>>2]|0,m,1)}else{c[l+20>>2]=m;rd=l+4|0;c[rd>>2]=c[rd>>2]|2099200;if((c[j+36>>2]|0)==0?(Ym(l),R=c[(c[j>>2]|0)+120>>2]|0,(R|0)<(c[l+24>>2]|0)):0){c[M>>2]=R;cd(j,41637,M)}}if(c[td+-32>>2]|0){j=ej(j,19,c[k>>2]|0,0)|0;c[k>>2]=j}break}case 205:{k=pj(j,0,td+-20|0,td+-8|0)|0;m=mj(j,0,k,0,0,0,0,0,0)|0;l=c[td+4>>2]|0;do if(l|0)if((k|0)==0|(m|0)==0){ri(c[j>>2]|0,l);break}else{rd=(c[k>>2]|0)+-1|0;c[k+8+(rd*72|0)+64>>2]=l;rd=k+8+(rd*72|0)+37|0;a[rd>>0]=a[rd>>0]|4;break}while(0);k=td+-44|0;l=ej(j,49,c[k>>2]|0,0)|0;c[k>>2]=l;if(!l){if(m|0)pi(c[j>>2]|0,m,1)}else{c[l+20>>2]=m;rd=l+4|0;c[rd>>2]=c[rd>>2]|2099200;if((c[j+36>>2]|0)==0?(Ym(l),fa=c[(c[j>>2]|0)+120>>2]|0,(fa|0)<(c[l+24>>2]|0)):0){c[_>>2]=fa;cd(j,41637,_)}}if(c[td+-32>>2]|0){j=ej(j,19,c[k>>2]|0,0)|0;c[k>>2]=j}break}case 206:{k=ej(j,20,0,0)|0;c[td+-32>>2]=k;l=c[td+-8>>2]|0;if(!k){if(!l)break a;pi(c[j>>2]|0,l,1);break a}c[k+20>>2]=l;rd=k+4|0;c[rd>>2]=c[rd>>2]|2099200;if((c[j+36>>2]|0)==0?(Ym(k),E=c[(c[j>>2]|0)+120>>2]|0,(E|0)<(c[k+24>>2]|0)):0){c[s>>2]=E;cd(j,41637,s)}break}case 207:{l=ej(j,149,c[td+-32>>2]|0,0)|0;i=td+-44|0;c[i>>2]=l;if(!l){k=c[td+-20>>2]|0;if(k|0)ri(c[j>>2]|0,k);k=c[td+-8>>2]|0;if(!k)break a;ni(c[j>>2]|0,k);break a}m=c[td+-8>>2]|0;k=c[td+-20>>2]|0;if(m){k=nj(c[j>>2]|0,k,m)|0;l=c[i>>2]|0}c[l+20>>2]=k;k=c[i>>2]|0;if((c[j+36>>2]|0)==0?(Ym(k),Ba=c[(c[j>>2]|0)+120>>2]|0,(Ba|0)<(c[k+24>>2]|0)):0){c[ka>>2]=Ba;cd(j,41637,ka)}break}case 208:{rd=td+-44|0;qd=nj(c[j>>2]|0,c[rd>>2]|0,c[td+-20>>2]|0)|0;c[rd>>2]=qd;j=nj(c[j>>2]|0,qd,c[td+4>>2]|0)|0;c[rd>>2]=j;break}case 209:{qd=nj(c[j>>2]|0,0,c[td+-20>>2]|0)|0;rd=td+-32|0;c[rd>>2]=qd;j=nj(c[j>>2]|0,qd,c[td+4>>2]|0)|0;c[rd>>2]=j;break}case 316:{c[td+-44>>2]=c[td+-8>>2];break}case 215:{rd=td+-20|0;j=nj(c[j>>2]|0,c[rd>>2]|0,c[td+4>>2]|0)|0;c[rd>>2]=j;break}case 216:{rd=td+4|0;j=nj(c[j>>2]|0,0,c[rd>>2]|0)|0;c[rd>>2]=j;break}case 223:case 218:{c[td+-20>>2]=c[td+-8>>2];break}case 219:{h=td+-44|0;qd=pj(j,0,h,0)|0;hj(j,td+-80|0,td+-68|0,qd,c[td+-20>>2]|0,c[td+-116>>2]|0,td+-128|0,c[td+4>>2]|0,0,c[td+-92>>2]|0,0);if((d[j+200>>0]|0)>1?(q=c[j+232>>2]|0,q|0):0){i=c[q>>2]|0;m=c[j>>2]|0;na:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=1732;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break a;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break a}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1732;break na}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1732;break na}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=1732}while(0);if((rd|0)==1732)if(!k)break a;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=i;pd=h;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;j=j+272|0;c[k+12>>2]=c[j>>2];c[j>>2]=k}break}case 262:case 220:{c[td+4>>2]=2;break}case 221:{c[td+16>>2]=0;break}case 224:{r=td+-44|0;s=td+-20|0;pd=c[td+-8>>2]|0;qd=c[td+4>>2]|0;t=nj(c[j>>2]|0,c[r>>2]|0,0)|0;if((pd|0)!=0|(qd|0)!=-1?(a[(c[j>>2]|0)+165>>0]|0)==0:0){qd=c[s>>2]|0;c[H>>2]=c[td+-16>>2];c[H+4>>2]=qd;cd(j,45206,H)}oa:do if(t|0){n=(c[t>>2]|0)+-1|0;m=c[j>>2]|0;o=c[s>>2]|0;p=c[td+-16>>2]|0;pa:do if(o){i=Sv(p|0,0,1,0)|0;h=L()|0;qa:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=1751;else{rd=1753;break pa}else{do if(0<0|(0==0?p>>>0<(e[m+276>>1]|0)>>>0:0)){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];q=m+284|0;c[q>>2]=(c[q>>2]|0)+1;q=l;break qa}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];q=m+284|0;c[q>>2]=(c[q>>2]|0)+1;q=l;break qa}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=1751}while(0);if((rd|0)==1751)q=_d(m,i,h)|0;if(q){ew(q|0,o|0,p|0)|0;a[q+p>>0]=0;k=t+4+(n*20|0)+4|0;c[k>>2]=q;l=a[q>>0]|0;if((a[880+(l&255)>>0]|0)<0){h=l<<24>>24==91?93:l;i=0;l=1;while(1){m=a[q+l>>0]|0;if(m<<24>>24==h<<24>>24){l=l+1|0;m=q+i|0;if((a[q+l>>0]|0)!=h<<24>>24)break;a[m>>0]=h}else a[q+i>>0]=m;i=i+1|0;l=l+1|0}a[m>>0]=0}}else rd=1753}else rd=1753;while(0);if((rd|0)==1753){k=t+4+(n*20|0)+4|0;c[k>>2]=0}if((d[j+200>>0]|0)>1){i=c[k>>2]|0;m=c[j>>2]|0;ra:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=1786;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break oa;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break oa}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1786;break ra}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1786;break ra}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=1786}while(0);if((rd|0)==1786)if(!k)break;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=i;pd=s;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;j=j+272|0;c[k+12>>2]=c[j>>2];c[j>>2]=k}}while(0);c[r>>2]=t;break}case 225:{r=td+-20|0;pd=c[td+-8>>2]|0;qd=c[td+4>>2]|0;s=nj(c[j>>2]|0,0,0)|0;if((pd|0)!=0|(qd|0)!=-1?(a[(c[j>>2]|0)+165>>0]|0)==0:0){qd=c[r>>2]|0;c[t>>2]=c[td+-16>>2];c[t+4>>2]=qd;cd(j,45206,t)}sa:do if(s|0){n=(c[s>>2]|0)+-1|0;m=c[j>>2]|0;o=c[r>>2]|0;p=c[td+-16>>2]|0;ta:do if(o){i=Sv(p|0,0,1,0)|0;h=L()|0;ua:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=1804;else{rd=1806;break ta}else{do if(0<0|(0==0?p>>>0<(e[m+276>>1]|0)>>>0:0)){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];q=m+284|0;c[q>>2]=(c[q>>2]|0)+1;q=l;break ua}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];q=m+284|0;c[q>>2]=(c[q>>2]|0)+1;q=l;break ua}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=1804}while(0);if((rd|0)==1804)q=_d(m,i,h)|0;if(q){ew(q|0,o|0,p|0)|0;a[q+p>>0]=0;k=s+4+(n*20|0)+4|0;c[k>>2]=q;l=a[q>>0]|0;if((a[880+(l&255)>>0]|0)<0){h=l<<24>>24==91?93:l;i=0;l=1;while(1){m=a[q+l>>0]|0;if(m<<24>>24==h<<24>>24){l=l+1|0;m=q+i|0;if((a[q+l>>0]|0)!=h<<24>>24)break;a[m>>0]=h}else a[q+i>>0]=m;i=i+1|0;l=l+1|0}a[m>>0]=0}}else rd=1806}else rd=1806;while(0);if((rd|0)==1806){k=s+4+(n*20|0)+4|0;c[k>>2]=0}if((d[j+200>>0]|0)>1){i=c[k>>2]|0;m=c[j>>2]|0;va:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=1839;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break sa;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break sa}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1839;break va}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1839;break va}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=1839}while(0);if((rd|0)==1839)if(!k)break;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=i;pd=r;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;j=j+272|0;c[k+12>>2]=c[j>>2];c[j>>2]=k}}while(0);c[r>>2]=s;break}case 228:{x=c[td+4>>2]|0;o=c[td+-8>>2]|0;y=c[j>>2]|0;wa:do if(!(a[y+81>>0]|0)){xa:do if(!(a[y+165>>0]|0)){m=j+4|0;i=y+24|0;h=(c[i>>2]&1|0)==0;n=y+16|0;pd=c[(c[n>>2]|0)+12>>2]|0;a[y+78>>0]=a[pd+77>>0]|0;if((b[pd+78>>1]&1)==0?(Ca=eh(y,0,m,0)|0,(Ca|0)!=0):0)k=Ca;else rd=1846;ya:do if((rd|0)==1846){k=c[y+20>>2]|0;if((k|0)>1)do{l=k;k=k+-1|0;if((b[(c[(c[n>>2]|0)+(k<<4)+12>>2]|0)+78>>1]&1)==0?(Oa=eh(y,k,m,0)|0,Oa|0):0){k=Oa;break ya}}while((l|0)>2);if(h)c[i>>2]=c[i>>2]&-2;if(!(a[y+89>>0]|0))break xa;c[i>>2]=c[i>>2]|16;break xa}while(0);c[j+12>>2]=k;j=j+36|0;c[j>>2]=(c[j>>2]|0)+1;break wa}while(0);k=c[x+12>>2]|0;w=hi(y,c[x+16>>2]|0,k)|0;if(!w){if(!o){c[Ta>>2]=x;c[Ta+4>>2]=0;cd(j,45244,Ta)}else hl(j,k);a[j+17>>0]=1;break}pd=w+55|0;if((d[pd>>0]|d[pd+1>>0]<<8)&3){c[Ua>>2]=0;cd(j,45262,Ua);break}l=c[w+24>>2]|0;u=y+16|0;m=c[u>>2]|0;if(!l)v=-1e6;else{k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0)){v=k;break}else k=k+1|0}n=c[w+12>>2]|0;o=c[m+(v<<4)>>2]|0;t=(v|0)==1;k=t?34855:34585;m=c[j>>2]|0;l=a[m+165>>0]|0;if(!(l<<24>>24))if((a[j+200>>0]|0)==0?(Kb=c[m+312>>2]|0,(Kb|0)!=0):0){k=$a[Kb&127](c[m+316>>2]|0,9,k,0,o,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,Lb);c[j+12>>2]=23;break}if((k|2|0)!=2){cd(j,39231,Mb);c[j+12>>2]=1;break}if(k|0)break;m=c[j>>2]|0;h=a[m+165>>0]|0}else h=0;else h=l;i=(v|0)==0?10:12;l=c[w>>2]|0;k=c[n>>2]|0;do if((h<<24>>24==0?(a[j+200>>0]|0)==0:0)?(Rb=c[m+312>>2]|0,Rb|0):0){k=$a[Rb&127](c[m+316>>2]|0,i,l,k,o,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,Sb);c[j+12>>2]=23;break wa}if((k|2|0)==2)if(!k)break;else break wa;else{cd(j,39231,Tb);c[j+12>>2]=1;break wa}}while(0);s=j+8|0;k=c[s>>2]|0;i=j+116|0;if(!k){m=c[j>>2]|0;if((c[i>>2]|0)==0?(b[m+76>>1]&8)==0:0)a[j+23>>0]=1;za:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=1897;else break wa;else{do if((e[m+276>>1]|0)>=224){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];pd=m+284|0;c[pd>>2]=(c[pd>>2]|0)+1;break za}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];pd=m+284|0;c[pd>>2]=(c[pd>>2]|0)+1;break za}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=1897}while(0);if((rd|0)==1897)l=_d(m,224,0)|0;if(!l)break;I=l+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[l>>2]=m;k=m+4|0;m=c[k>>2]|0;if(m|0)c[m+4>>2]=l;c[l+8>>2]=m;c[l+4>>2]=0;c[k>>2]=l;c[l+20>>2]=381479589;c[l+12>>2]=j;c[s>>2]=l;Di(l,61,0,1,0)|0;r=l}else r=k;q=c[i>>2]|0;q=(q|0)==0?j:q;k=q+84|0;l=c[k>>2]|0;p=1<>2]=l|p,t):0)?(Dc=c[q>>2]|0,rc=Dc+16|0,(c[(c[rc>>2]|0)+20>>2]|0)==0):0)?(a[q+199>>0]|0)==0:0){k=Pe(c[Dc>>2]|0,0,Dc,qd,0,542)|0;if(k|0){cd(q,32157,pc);c[q+12>>2]=k;break}qd=c[qd>>2]|0;c[(c[rc>>2]|0)+20>>2]=qd;k=c[Dc+92>>2]|0;i=c[qd+4>>2]|0;c[i+4>>2]=c[qd>>2];do if(!(b[i+22>>1]&2)){h=i+32|0;n=i+36|0;o=(c[h>>2]|0)-(c[n>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[h>>2]=k;m=i+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;qd=(c[14820]|0)+1|0;c[14820]=qd;c[14821]=(qd|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;rd=1917;break}else{k=Wa[c[29352>>2]&127](l)|0;rd=1917}while(0);do if((rd|0)==1917){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{rd=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);rd=Se(c[i>>2]|0,h,o)|0;c[n>>2]=(c[h>>2]|0)-(o&65535);if((rd|0)!=7)break;k=Dc+81|0;do if(!(a[k>>0]|0)){if(a[Dc+82>>0]|0)break;a[k>>0]=1;if((c[Dc+180>>2]|0)>0)c[Dc+264>>2]=1;k=Dc+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[Dc+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break Aa}while(0)}while(0);l=q+80|0;c[l>>2]=c[l>>2]|p;l=q+20|0;a[l>>0]=a[l>>0]|1;l=c[w>>2]|0;c[Oc>>2]=c[(c[u>>2]|0)+(v<<4)>>2];c[Oc+4>>2]=34585;c[Oc+8>>2]=l;Ak(j,45335,Oc);l=c[w>>2]|0;m=c[(c[(c[j>>2]|0)+16>>2]|0)+(v<<4)>>2]|0;c[Gc>>2]=1;Cb(24,Oc,42737,Gc)|0;if(Sd(c[j>>2]|0,Oc,m)|0){c[Hc>>2]=m;c[Hc+4>>2]=Oc;c[Hc+8>>2]=38091;c[Hc+12>>2]=l;Ak(j,42751,Hc)}c[Ic>>2]=2;Cb(24,Oc,42737,Ic)|0;if(Sd(c[j>>2]|0,Oc,m)|0){c[Kc>>2]=m;c[Kc+4>>2]=Oc;c[Kc+8>>2]=38091;c[Kc+12>>2]=l;Ak(j,42751,Kc)}c[Lc>>2]=3;Cb(24,Oc,42737,Lc)|0;if(Sd(c[j>>2]|0,Oc,m)|0){c[Mc>>2]=m;c[Mc+4>>2]=Oc;c[Mc+8>>2]=38091;c[Mc+12>>2]=l;Ak(j,42751,Mc)}c[Nc>>2]=4;Cb(24,Oc,42737,Nc)|0;k=c[j>>2]|0;if(Sd(k,Oc,m)|0){c[Qc>>2]=m;c[Qc+4>>2]=Oc;c[Qc+8>>2]=38091;c[Qc+12>>2]=l;Ak(j,42751,Qc);k=c[j>>2]|0}i=c[s>>2]|0;k=(c[c[(c[k+16>>2]|0)+(v<<4)+12>>2]>>2]|0)+1|0;m=i+108|0;l=c[m>>2]|0;if((c[i+112>>2]|0)>(l|0)){c[m>>2]=l+1;rd=c[i+104>>2]|0;a[rd+(l*20|0)>>0]=95;b[rd+(l*20|0)+2>>1]=0;c[rd+(l*20|0)+4>>2]=v;c[rd+(l*20|0)+8>>2]=1;c[rd+(l*20|0)+12>>2]=k;c[rd+(l*20|0)+16>>2]=0;a[rd+(l*20|0)+1>>0]=0}else Di(i,95,v,1,k)|0;kl(j,c[w+44>>2]|0,v);m=c[w>>2]|0;l=r+108|0;k=c[l>>2]|0;if((c[r+112>>2]|0)>(k|0)){c[l>>2]=k+1;j=c[r+104>>2]|0;a[j+(k*20|0)>>0]=-112;b[j+(k*20|0)+2>>1]=0;c[j+(k*20|0)+4>>2]=v;c[j+(k*20|0)+8>>2]=0;c[j+(k*20|0)+12>>2]=0;c[j+(k*20|0)+16>>2]=0;a[j+(k*20|0)+1>>0]=0}else k=Di(r,144,v,0,0)|0;if(!(a[(c[r>>2]|0)+81>>0]|0)){if((k|0)<0)k=(c[l>>2]|0)+-1|0;Ei(r,(c[r+104>>2]|0)+(k*20|0)|0,m,0)}}while(0);qi(y,x);break}case 229:{xj(j,0,c[td+4>>2]|0);break}case 230:{xj(j,td+-8|0,c[td+4>>2]|0);break}case 233:{yj(j,td+-8|0,td+4|0,0,0);break}case 234:{yj(j,td+-32|0,td+-20|0,td+4|0,0);break}case 235:{yj(j,td+-44|0,td+-32|0,td+-8|0,0);break}case 236:{yj(j,td+-32|0,td+-20|0,td+4|0,1);break}case 237:{yj(j,td+-44|0,td+-32|0,td+-8|0,1);break}case 240:{v=c[td+-32>>2]|0;w=(c[td+4>>2]|0)-v+(c[td+8>>2]|0)|0;k=c[td+-8>>2]|0;p=j+236|0;l=c[p>>2]|0;A=c[j>>2]|0;c[p>>2]=0;Ba:do if((l|0)!=0&(c[j+36>>2]|0)==0){z=c[l>>2]|0;i=c[l+20>>2]|0;if(!i)y=-1e6;else{h=c[A+16>>2]|0;m=0;while(1)if((c[h+(m<<4)+12>>2]|0)==(i|0)){y=m;break}else m=m+1|0}m=l+28|0;c[m>>2]=k;h=(k|0)==0;if(!h){i=k;do{c[i+4>>2]=l;i=c[i+36>>2]|0}while((i|0)!=0)}c[Qb>>2]=z;if(!z)i=0;else i=(Eu(z)|0)&1073741823;c[Qb+4>>2]=i;c[_c>>2]=j;x=A+16|0;q=c[x>>2]|0;c[_c+12>>2]=c[q+(y<<4)>>2];c[_c+4>>2]=c[q+(y<<4)+12>>2];c[_c+16>>2]=31419;c[_c+20>>2]=Qb;q=(y|0)==1;c[_c+8>>2]=q&1;if(!h)do{if(cl(_c,c[k+8>>2]|0)|0){k=0;rd=2083;break Ba}if(dl(_c,c[k+16>>2]|0)|0){k=0;rd=2083;break Ba}n=c[k+20>>2]|0;if(n|0?(c[n>>2]|0)>0:0){i=0;h=n+4|0;while(1){if(dl(_c,c[h>>2]|0)|0){k=0;rd=2083;break Ba}i=i+1|0;if((i|0)>=(c[n>>2]|0))break;else h=h+20|0}}o=c[k+28>>2]|0;if(o|0){n=c[o>>2]|0;if(n|0?(c[n>>2]|0)>0:0){i=0;h=n+4|0;while(1){if(dl(_c,c[h>>2]|0)|0){k=0;rd=2083;break Ba}i=i+1|0;if((i|0)>=(c[n>>2]|0))break;else h=h+20|0}}if(dl(_c,c[o+4>>2]|0)|0){k=0;rd=2083;break Ba}n=c[o+8>>2]|0;if(n|0?(c[n>>2]|0)>0:0){i=0;h=n+4|0;while(1){if(dl(_c,c[h>>2]|0)|0){k=0;rd=2083;break Ba}i=i+1|0;if((i|0)>=(c[n>>2]|0))break;else h=h+20|0}}if(dl(_c,c[o+12>>2]|0)|0){k=0;rd=2083;break Ba}}k=c[k+36>>2]|0}while((k|0)!=0);if(!(dl(_c,c[l+12>>2]|0)|0)){if((d[j+200>>0]|0)<=1){k=A+165|0;if(!(a[k>>0]|0)){u=j+8|0;i=c[u>>2]|0;o=j+116|0;if(!i){n=c[j>>2]|0;if((c[o>>2]|0)==0?(b[n+76>>1]&8)==0:0)a[j+23>>0]=1;Ca:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))rd=2e3;else{k=0;r=l;rd=2085;break Ba}else{do if((e[n+276>>1]|0)>=224){i=n+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];od=n+284|0;c[od>>2]=(c[od>>2]|0)+1;break Ca}i=n+296|0;h=c[i>>2]|0;if(!h){i=n+292|0;break}else{c[i>>2]=c[h>>2];od=n+284|0;c[od>>2]=(c[od>>2]|0)+1;break Ca}}else i=n+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;rd=2e3}while(0);if((rd|0)==2e3)h=_d(n,224,0)|0;if(!h){k=0;r=l;rd=2085;break}I=h+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[h>>2]=n;m=n+4|0;i=c[m>>2]|0;if(i|0)c[i+4>>2]=h;c[h+8>>2]=i;c[h+4>>2]=0;c[m>>2]=h;c[h+20>>2]=381479589;c[h+12>>2]=j;c[u>>2]=h;Di(h,61,0,1,0)|0;t=h}else t=i;s=c[o>>2]|0;s=(s|0)==0?j:s;m=s+84|0;i=c[m>>2]|0;r=1<>2]=i|r,q):0)?(Ac=c[s>>2]|0,oc=Ac+16|0,(c[(c[oc>>2]|0)+20>>2]|0)==0):0)?(a[s+199>>0]|0)==0:0){m=Pe(c[Ac>>2]|0,0,Ac,qd,0,542)|0;if(m|0){cd(s,32157,mc);c[s+12>>2]=m;break}qd=c[qd>>2]|0;c[(c[oc>>2]|0)+20>>2]=qd;m=c[Ac+92>>2]|0;n=c[qd+4>>2]|0;c[n+4>>2]=c[qd>>2];do if(!(b[n+22>>1]&2)){o=n+32|0;p=n+36|0;q=(c[o>>2]|0)-(c[p>>2]|0)|0;do if((m+-512|0)>>>0<65025){if(m+-1&m|0)break;c[o>>2]=m;h=n+80|0;m=c[h>>2]|0;if(!m)break;i=m+-4|0;c[h>>2]=i;m=i;do if((c[14816]|0)>>>0<=m>>>0)if((c[14817]|0)>>>0>m>>>0){c[14979]=(c[14979]|0)+-1;c[i>>2]=c[14819];c[14819]=i;qd=(c[14820]|0)+1|0;c[14820]=qd;c[14821]=(qd|0)<(c[14815]|0)&1;break}else{m=Wa[c[29352>>2]&127](i)|0;rd=2020;break}else{m=Wa[c[29352>>2]&127](i)|0;rd=2020}while(0);do if((rd|0)==2020){c[14980]=(c[14980]|0)-m;if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{qd=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-qd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);c[h>>2]=0}while(0);qd=Se(c[n>>2]|0,o,q)|0;c[p>>2]=(c[o>>2]|0)-(q&65535);if((qd|0)!=7)break;m=Ac+81|0;do if(!(a[m>>0]|0)){if(a[Ac+82>>0]|0)break;a[m>>0]=1;if((c[Ac+180>>2]|0)>0)c[Ac+264>>2]=1;m=Ac+272|0;c[m>>2]=(c[m>>2]|0)+1;m=c[Ac+236>>2]|0;if(!m)break;c[m+12>>2]=7}while(0);break Da}while(0)}while(0);o=s+80|0;c[o>>2]=c[o>>2]|r;o=v;Ea:do if(v){h=Sv(w|0,0,1,0)|0;n=L()|0;Fa:do if(c[A+272>>2]|0)if(!(a[A+81>>0]|0))rd=2044;else{i=0;break Ea}else{do if(0<0|(0==0?w>>>0<(e[A+276>>1]|0)>>>0:0)){m=A+300|0;i=c[m>>2]|0;if(i|0){c[m>>2]=c[i>>2];qd=A+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break Fa}m=A+296|0;i=c[m>>2]|0;if(!i){m=A+292|0;break}else{c[m>>2]=c[i>>2];qd=A+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break Fa}}else m=A+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1;rd=2044}while(0);if((rd|0)==2044)i=_d(A,h,n)|0;if(i){ew(i|0,o|0,w|0)|0;a[i+w>>0]=0}else i=0}else i=0;while(0);rd=c[l+4>>2]|0;c[Wc>>2]=c[(c[x>>2]|0)+(y<<4)>>2];c[Wc+4>>2]=34585;c[Wc+8>>2]=z;c[Wc+12>>2]=rd;c[Wc+16>>2]=i;Ak(j,46058,Wc);Ga:do if(i|0){if(c[A+480>>2]|0){Xd(A,i);break}m=i;do if((c[A+304>>2]|0)>>>0<=m>>>0){if((c[A+308>>2]|0)>>>0<=m>>>0)break;rd=A+300|0;c[i>>2]=c[rd>>2];c[rd>>2]=i;break Ga}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{rd=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);n=c[u>>2]|0;m=(c[c[(c[(c[j>>2]|0)+16>>2]|0)+(y<<4)+12>>2]>>2]|0)+1|0;i=n+108|0;h=c[i>>2]|0;if((c[n+112>>2]|0)>(h|0)){c[i>>2]=h+1;j=c[n+104>>2]|0;a[j+(h*20|0)>>0]=95;b[j+(h*20|0)+2>>1]=0;c[j+(h*20|0)+4>>2]=y;c[j+(h*20|0)+8>>2]=1;c[j+(h*20|0)+12>>2]=m;c[j+(h*20|0)+16>>2]=0;a[j+(h*20|0)+1>>0]=0}else Di(n,95,y,1,m)|0;c[Xc>>2]=z;Bk(t,y,dd(A,46122,Xc)|0);rd=2060}}else{c[p>>2]=l;l=0;k=A+165|0;rd=2060}if((rd|0)==2060)if(!(a[k>>0]|0)){k=0;rd=2083;break}q=mi((c[(c[x>>2]|0)+(y<<4)+12>>2]|0)+40|0,z,l)|0;if(q|0){k=A+81|0;if(a[k>>0]|0){k=0;l=q;rd=2083;break}if(a[A+82>>0]|0){k=0;l=q;rd=2083;break}a[k>>0]=1;if((c[A+180>>2]|0)>0)c[A+264>>2]=1;k=A+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[A+236>>2]|0;if(!k){k=0;l=q;rd=2083;break}c[k+12>>2]=7;k=0;l=q;rd=2083;break}h=c[l+20>>2]|0;if((h|0)==(c[l+24>>2]|0)){p=c[l+4>>2]|0;n=c[h+20>>2]|0;if(!n){m=h+12|0;k=h+16|0}else{m=a[p>>0]|0;if(!(m<<24>>24))k=0;else{k=0;i=p;do{i=i+1|0;k=G(k+(d[208+(m&255)>>0]|0)|0,-1640531535)|0;m=a[i>>0]|0}while(m<<24>>24!=0)}k=(k>>>0)%((c[h+8>>2]|0)>>>0)|0;m=n+(k<<3)|0;k=n+(k<<3)+4|0}m=c[m>>2]|0;Ha:do if(!m)k=59292;else{o=d[208+(d[p>>0]|0)>>0]|0;while(1){k=c[k>>2]|0;m=m+-1|0;h=c[k+12>>2]|0;j=a[h>>0]|0;i=(d[208+(j&255)>>0]|0)-o|0;if(!(j<<24>>24==0|(i|0)!=0)){n=p;do{h=h+1|0;n=n+1|0;j=a[h>>0]|0;i=(d[208+(j&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(j<<24>>24==0|(i|0)!=0))}if(!i)break Ha;if(!m){k=59292;break}}}while(0);k=(c[k+8>>2]|0)+68|0;c[l+32>>2]=c[k>>2];c[k>>2]=l;k=0;l=q;rd=2083}else{k=0;l=q;rd=2083}}else{k=0;r=l;rd=2085}}else rd=2083;while(0);if((rd|0)==2083)if(l){r=l;m=l+28|0;rd=2085}do if((rd|0)==2085){Xi(A,c[m>>2]|0);l=c[l>>2]|0;do if(l|0){if(A|0){if(c[A+480>>2]|0){Xd(A,l);break}j=l;if((c[A+304>>2]|0)>>>0<=j>>>0?(c[A+308>>2]|0)>>>0>j>>>0:0){j=A+300|0;c[l>>2]=c[j>>2];c[j>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{j=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);l=c[r+4>>2]|0;do if(l|0){if(A|0){if(c[A+480>>2]|0){Xd(A,l);break}j=l;if((c[A+304>>2]|0)>>>0<=j>>>0?(c[A+308>>2]|0)>>>0>j>>>0:0){j=A+300|0;c[l>>2]=c[j>>2];c[j>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{j=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);l=c[r+12>>2]|0;if(l|0)ni(A,l);l=c[r+16>>2]|0;if(l|0){q=l+4|0;m=c[l>>2]|0;Ia:do if((c[q>>2]|0)>0){h=A+480|0;n=A+304|0;o=A+308|0;p=A+300|0;if(!A){i=0;while(1){m=c[m+(i<<3)>>2]|0;do if(m|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{j=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}while(0);i=i+1|0;m=c[l>>2]|0;if((i|0)>=(c[q>>2]|0))break Ia}}i=0;do{m=c[m+(i<<3)>>2]|0;do if(m|0){if(c[h>>2]|0){Xd(A,m);break}j=m;if((c[n>>2]|0)>>>0<=j>>>0?(c[o>>2]|0)>>>0>j>>>0:0){c[m>>2]=c[p>>2];c[p>>2]=m;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{j=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);i=i+1|0;m=c[l>>2]|0}while((i|0)<(c[q>>2]|0))}while(0);Ja:do if(m){do if(A|0){i=A+480|0;if(!(c[i>>2]|0)){h=m;if((c[A+304>>2]|0)>>>0>h>>>0)break;if((c[A+308>>2]|0)>>>0<=h>>>0)break;j=A+300|0;c[m>>2]=c[j>>2];c[j>>2]=m}else Xd(A,m);m=i;rd=2140;break Ja}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);rd=2138;break}else{rd=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);rd=2138;break}}else rd=2138;while(0);if((rd|0)==2138)if(!A){pd=l;rd=2145}else{m=A+480|0;rd=2140}do if((rd|0)==2140){if(c[m>>2]|0){Xd(A,l);break}j=l;if((c[A+304>>2]|0)>>>0<=j>>>0?(c[A+308>>2]|0)>>>0>j>>>0:0){j=A+300|0;c[l>>2]=c[j>>2];c[j>>2]=l}else{pd=l;rd=2145}}while(0);do if((rd|0)==2145?pd|0:0)if(!(c[7324]|0)){ab[c[29344>>2]&127](pd);break}else{j=Wa[c[29352>>2]&127](pd)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](pd);break}while(0);if(!r)break}if(A|0){if(c[A+480>>2]|0){Xd(A,r);break}j=r;if((c[A+304>>2]|0)>>>0<=j>>>0?(c[A+308>>2]|0)>>>0>j>>>0:0){j=A+300|0;c[r>>2]=c[j>>2];c[j>>2]=r;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{j=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);Xi(A,k);break}case 241:{H=td+-80|0;K=td+-68|0;y=c[td+-56>>2]|0;D=c[td+-44>>2]|0;k=c[td+-40>>2]|0;E=c[td+-20>>2]|0;F=c[td+4>>2]|0;M=td+-116|0;v=c[td+-92>>2]|0;N=c[j>>2]|0;x=(c[M>>2]|0)!=0;O=td+-64|0;l=(c[O>>2]|0)==0;do if(x)if(l)if(!E){rd=2387;break}else{l=1;m=H;rd=2171;break}else{cd(j,46151,Za);rd=2387;break}else{if(!l){if(a[N+165>>0]|0){cd(j,39404,_a);rd=2387;break}l=wk(N,H)|0;if((l|0)<0){c[bb>>2]=H;cd(j,39421,bb);rd=2387;break}else m=K}else{l=d[N+164>>0]|0;m=H}if((E|0)!=0&(l|0)>-1)rd=2171;else rd=2387}while(0);Ka:do if((rd|0)==2171){B=N+81|0;if(!(a[B>>0]|0)){t=N+165|0;if((l|0)!=1&(a[t>>0]|0)!=0){i=E+12|0;h=c[i>>2]|0;do if(h|0){if(c[N+480>>2]|0){Xd(N,h);break}pd=h;if((c[N+304>>2]|0)>>>0<=pd>>>0?(c[N+308>>2]|0)>>>0>pd>>>0:0){pd=N+300|0;c[h>>2]=c[pd>>2];c[pd>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{pd=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-pd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);c[i>>2]=0}s=E+8|0;h=c[s>>2]|0;if(!h)i=E+12|0;else{n=c[(c[j>>2]|0)+16>>2]|0;i=0;while(1)if((c[n+(i<<4)+12>>2]|0)==(h|0))break;else i=i+1|0;i=n+(i<<4)|0}C=E+16|0;i=bd(j,0,c[C>>2]|0,c[i>>2]|0)|0;h=c[j>>2]|0;u=E+24|0;n=c[u>>2]|0;do if(n|0){if(h|0?c[h+480>>2]|0:0){Vi(h,n);break}kd=n+32|0;pd=(c[kd>>2]|0)+-1|0;c[kd>>2]=pd;if(!pd)Vi(h,n)}while(0);c[u>>2]=i;La:do if(i){pd=i+32|0;c[pd>>2]=(c[pd>>2]|0)+1;if(a[E+45>>0]&2){q=c[E+72>>2]|0;h=c[i+8>>2]|0;Ma:do if(h|0){r=d[208+(d[q>>0]|0)>>0]|0;while(1){o=c[h>>2]|0;pd=a[o>>0]|0;n=(d[208+(pd&255)>>0]|0)-r|0;if(!(pd<<24>>24==0|(n|0)!=0)){p=q;do{o=o+1|0;p=p+1|0;pd=a[o>>0]|0;n=(d[208+(pd&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0}while(!(pd<<24>>24==0|(n|0)!=0))}if(!n)break;h=c[h+20>>2]|0;if(!h)break Ma}c[E+76>>2]=h;break La}while(0);c[hc>>2]=q;c[hc+4>>2]=0;cd(j,41107,hc);a[j+17>>0]=1;i=0}}else i=0;while(0);if((a[t>>0]|0)==0?(i|0)!=0&(c[O>>2]|0)==0:0)A=(c[i+72>>2]|0)==(c[(c[N+16>>2]|0)+28>>2]|0)?1:l;else A=l;if((a[B>>0]|0)==0?(Zc=c[j>>2]|0,c[_c>>2]=j,Zc=c[Zc+16>>2]|0,c[_c+12>>2]=c[Zc+(A<<4)>>2],c[_c+4>>2]=c[Zc+(A<<4)+12>>2],c[_c+16>>2]=31419,c[_c+20>>2]=m,Zc=(A|0)==1,c[_c+8>>2]=Zc&1,(al(_c,E)|0)==0):0){i=c[s>>2]|0;if(!i)l=E+12|0;else{h=c[(c[j>>2]|0)+16>>2]|0;l=0;while(1)if((c[h+(l<<4)+12>>2]|0)==(i|0))break;else l=l+1|0;l=h+(l<<4)|0}z=bd(j,0,c[C>>2]|0,c[l>>2]|0)|0;l=c[j>>2]|0;i=c[u>>2]|0;do if(i|0){if(l|0?c[l+480>>2]|0:0){Vi(l,i);break}kd=i+32|0;pd=(c[kd>>2]|0)+-1|0;c[kd>>2]=pd;if(!pd)Vi(l,i)}while(0);c[u>>2]=z;Na:do if(z|0){pd=z+32|0;c[pd>>2]=(c[pd>>2]|0)+1;Oa:do if(a[E+45>>0]&2){o=c[E+72>>2]|0;l=c[z+8>>2]|0;Pa:do if(l|0){p=d[208+(d[o>>0]|0)>>0]|0;while(1){h=c[l>>2]|0;pd=a[h>>0]|0;i=(d[208+(pd&255)>>0]|0)-p|0;if(!(pd<<24>>24==0|(i|0)!=0)){n=o;do{h=h+1|0;n=n+1|0;pd=a[h>>0]|0;i=(d[208+(pd&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(pd<<24>>24==0|(i|0)!=0))}if(!i)break;l=c[l+20>>2]|0;if(!l)break Pa}c[E+76>>2]=l;break Oa}while(0);c[Ec>>2]=o;c[Ec+4>>2]=0;cd(j,41107,Ec);a[j+17>>0]=1;break Na}while(0);if(c[z+56>>2]|0){cd(j,46197,Fc);rd=2387;break Ka}w=qj(N,m)|0;if(!w){rd=2387;break Ka}Qa:do if(!(vk(j,w)|0)){u=j+200|0;t=a[u>>0]|0;s=(t&255)>1;do if(!s){n=c[(c[N+16>>2]|0)+(A<<4)+12>>2]|0;o=c[n+52>>2]|0;if(!o){i=n+44|0;l=n+48|0}else{i=a[w>>0]|0;if(!(i<<24>>24))l=0;else{l=0;h=w;do{h=h+1|0;l=G(l+(d[208+(i&255)>>0]|0)|0,-1640531535)|0;i=a[h>>0]|0}while(i<<24>>24!=0)}l=(l>>>0)%((c[n+40>>2]|0)>>>0)|0;i=o+(l<<3)|0;l=o+(l<<3)+4|0}i=c[i>>2]|0;Ra:do if(!i)l=59292;else{p=d[208+(d[w>>0]|0)>>0]|0;while(1){l=c[l>>2]|0;i=i+-1|0;n=c[l+12>>2]|0;pd=a[n>>0]|0;h=(d[208+(pd&255)>>0]|0)-p|0;if(!(pd<<24>>24==0|(h|0)!=0)){o=w;do{n=n+1|0;o=o+1|0;pd=a[n>>0]|0;h=(d[208+(pd&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(pd<<24>>24==0|(h|0)!=0))}if(!h)break Ra;if(!i){l=59292;break}}}while(0);if(!(c[l+8>>2]|0))break;if(!v){c[Yc>>2]=m;cd(j,46238,Yc);rd=2378;break Qa}h=c[j+116>>2]|0;h=(h|0)==0?j:h;m=h+84|0;i=c[m>>2]|0;l=1<>2]=i|l;if(!Zc){rd=2378;break Qa}q=c[h>>2]|0;l=q+16|0;if(c[(c[l>>2]|0)+20>>2]|0){rd=2378;break Qa}if(a[h+199>>0]|0){rd=2378;break Qa}m=Pe(c[q>>2]|0,0,q,qd,0,542)|0;if(m|0){cd(h,32157,$c);c[h+12>>2]=m;rd=2378;break Qa}qd=c[qd>>2]|0;c[(c[l>>2]|0)+20>>2]=qd;l=c[q+92>>2]|0;h=c[qd+4>>2]|0;c[h+4>>2]=c[qd>>2];do if(!(b[h+22>>1]&2)){n=h+32|0;o=h+36|0;p=(c[n>>2]|0)-(c[o>>2]|0)|0;do if((l+-512|0)>>>0<65025){if(l+-1&l|0)break;c[n>>2]=l;i=h+80|0;l=c[i>>2]|0;if(!l)break;m=l+-4|0;c[i>>2]=m;l=m;do if((c[14816]|0)>>>0<=l>>>0)if((c[14817]|0)>>>0>l>>>0){c[14979]=(c[14979]|0)+-1;c[m>>2]=c[14819];c[14819]=m;qd=(c[14820]|0)+1|0;c[14820]=qd;c[14821]=(qd|0)<(c[14815]|0)&1;break}else{l=Wa[c[29352>>2]&127](m)|0;rd=2270;break}else{l=Wa[c[29352>>2]&127](m)|0;rd=2270}while(0);do if((rd|0)==2270){c[14980]=(c[14980]|0)-l;if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{rd=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[i>>2]=0}while(0);rd=Se(c[h>>2]|0,n,p)|0;c[o>>2]=(c[n>>2]|0)-(p&65535);if((rd|0)!=7)break;l=q+81|0;do if(!(a[l>>0]|0)){if(a[q+82>>0]|0)break;a[l>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;l=q+272|0;c[l>>2]=(c[l>>2]|0)+1;l=c[q+236>>2]|0;if(!l)break;c[l+12>>2]=7}while(0);rd=2378;break Qa}while(0);rd=2378;break Qa}while(0);r=c[z>>2]|0;do if(r|0){l=a[r>>0]|0;Sa:do if(!(l<<24>>24)){l=39441;rd=2285}else{qd=l&255;l=208+qd|0;do if((qd|32|0)==115){l=a[r+1>>0]|0;if(!(l<<24>>24)){l=39442;rd=2285;break Sa}l=l&255;if((l|32|0)!=113){m=113;l=208+l|0;break}l=a[r+2>>0]|0;if(!(l<<24>>24)){l=39443;rd=2285;break Sa}l=l&255;if((l|32|0)!=108){m=108;l=208+l|0;break}l=a[r+3>>0]|0;if(!(l<<24>>24)){l=39444;rd=2285;break Sa}l=l&255;if((l|32|0)!=105){m=105;l=208+l|0;break}l=a[r+4>>0]|0;if(!(l<<24>>24)){l=39445;rd=2285;break Sa}l=l&255;if((l|32|0)!=116){m=116;l=208+l|0;break}l=a[r+5>>0]|0;if(!(l<<24>>24)){l=39446;rd=2285;break Sa}l=l&255;if((l|32|0)!=101){m=101;l=208+l|0;break}l=a[r+6>>0]|0;if(!(l<<24>>24)){l=39447;rd=2285;break Sa}if(l<<24>>24==95)break Sa;else{m=95;l=208+(l&255)|0}}else m=115;while(0);fd=d[l>>0]|0;ad=m;rd=2289}while(0);if((rd|0)==2285){fd=0;ad=a[208+(d[l>>0]|0)>>0]|0;rd=2289}if((rd|0)==2289?(fd|0)!=(ad&255|0):0)break;cd(j,46264,gd);rd=2378;break Qa}while(0);l=c[z+12>>2]|0;if((y|0)!=65&(l|0)!=0){c[id>>2]=(y|0)==33?46339:46346;c[id+4>>2]=E;c[id+8>>2]=0;cd(j,46302,id);rd=2378;break}q=(y|0)==65;if(q&(l|0)==0){c[jd>>2]=E;c[jd+4>>2]=0;cd(j,46352,jd);rd=2378;break}do if(s){h=q?33:y;if(N|0){rd=2319;break}if(!(c[7324]|0)){m=Wa[c[29340>>2]&127](36)|0;i=1;l=h;rd=2341;break}l=Wa[c[29356>>2]&127](36)|0;if((c[14985]|0)>>>0<36)c[14985]=36;i=59064;m=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&m>>>0>0){qd=c[14978]|0;pd=Tv(m|0,i|0,l|0,((l|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}m=Wa[c[29340>>2]&127](l)|0;if(!m)break Qa;l=Wa[c[29352>>2]&127](m)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0<=(c[14987]|0)>>>0){q=m;i=1;break}c[14987]=l;q=m;i=1}else{m=c[z+72>>2]|0;i=c[N+16>>2]|0;if(!m)l=-1e6;else{l=0;while(1)if((c[i+(l<<4)+12>>2]|0)==(m|0))break;else l=l+1|0}p=c[i+(l<<4)>>2]|0;if(x)n=c[i+16>>2]|0;else n=p;o=(l|0)==1;h=x|o?5:7;i=c[j>>2]|0;l=a[i+165>>0]|0;do if(!((l|t)<<24>>24)){m=c[i+312>>2]|0;if(!m)break;l=$a[m&127](c[i+316>>2]|0,h,w,r,n,c[j+240>>2]|0)|0;if((l|0)==1){cd(j,39216,ld);c[j+12>>2]=23;rd=2378;break Qa}if((l|2|0)!=2){cd(j,39231,md);c[j+12>>2]=1;rd=2378;break Qa}if(l|0){rd=2378;break Qa}i=c[j>>2]|0;l=a[i+165>>0]|0}while(0);m=o?34855:34585;do if(!(l<<24>>24)){if(a[u>>0]|0)break;l=c[i+312>>2]|0;if(!l)break;l=$a[l&127](c[i+316>>2]|0,18,m,0,p,c[j+240>>2]|0)|0;if((l|0)==1){cd(j,39216,nd);c[j+12>>2]=23;rd=2378;break Qa}if((l|2|0)==2)if(!l)break;else{rd=2378;break Qa}else{cd(j,39231,od);c[j+12>>2]=1;rd=2378;break Qa}}while(0);h=q?33:y;rd=2319}while(0);Ta:do if((rd|0)==2319){if(c[N+272>>2]|0){if(a[B>>0]|0){rd=2379;break Qa}}else{do if((e[N+276>>1]|0)>=36){l=N+300|0;m=c[l>>2]|0;if(m|0){c[l>>2]=c[m>>2];i=N+284|0;c[i>>2]=(c[i>>2]|0)+1;i=0;l=h;rd=2341;break Ta}l=N+296|0;m=c[l>>2]|0;if(!m){l=N+292|0;break}else{c[l>>2]=c[m>>2];i=N+284|0;c[i>>2]=(c[i>>2]|0)+1;i=0;l=h;rd=2341;break Ta}}else l=N+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}m=_d(N,36,0)|0;i=0;l=h;rd=2341}while(0);if((rd|0)==2341)if(!m){rd=2378;break}else{q=m;h=l}p=q+4|0;I=p;J=I+32|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[q>>2]=w;n=c[C>>2]|0;Ua:do if(!n)i=0;else{o=(Eu(n)|0)+1|0;Va:do if(i){qd=Sv(o|0,0,-1,-1)|0;pd=L()|0;if(pd>>>0>0|(pd|0)==0&qd>>>0>2147483390){i=0;break Ua}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](o)|0;rd=2367;break}l=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;i=59064;m=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&m>>>0>0){qd=c[14978]|0;pd=Tv(m|0,i|0,l|0,((l|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){i=0;break Ua}m=Wa[c[29352>>2]&127](l)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0<=(c[14987]|0)>>>0)break;c[14987]=m}else{if(c[N+272>>2]|0){if(a[B>>0]|0){i=0;break Ua}}else{do if(!(0<0|(0==0?(e[N+276>>1]|0)>>>0>>0:0))){m=N+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];rd=N+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=2367;break Va}m=N+296|0;l=c[m>>2]|0;if(!l){l=N+292|0;break}else{c[m>>2]=c[l>>2];rd=N+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=2367;break Va}}else l=N+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(N,o,0)|0;rd=2367}while(0);if((rd|0)==2367)if(!l){i=0;break}ew(l|0,n|0,o|0)|0;i=l}while(0);c[p>>2]=i;c[q+20>>2]=c[(c[N+16>>2]|0)+(A<<4)+12>>2];c[q+24>>2]=c[z+72>>2];a[q+8>>0]=D;a[q+9>>0]=(h|0)==33?1:2;Wa:do if((d[u>>0]|0)>1){m=c[C>>2]|0;l=c[j+272>>2]|0;if(!l){m=0;l=F;break}while(1){if((c[l>>2]|0)==(m|0))break;l=c[l+12>>2]|0;if(!l){m=0;l=F;break Wa}}c[l>>2]=i;m=0;l=F}else{if(!F){m=F;l=0;break}m=F;l=dk(N,F,1,0)|0}while(0);c[q+12>>2]=l;c[q+16>>2]=k;c[j+236>>2]=q;qi(N,E);l=q;k=m;r=q;break Ka}else rd=2378;while(0);if((rd|0)==2378?N|0:0)rd=2379;do if((rd|0)==2379){if(c[N+480>>2]|0){Xd(N,w);rd=2387;break Ka}l=w;if((c[N+304>>2]|0)>>>0>l>>>0)break;if((c[N+308>>2]|0)>>>0<=l>>>0)break;rd=N+300|0;c[w>>2]=c[rd>>2];c[rd>>2]=w;rd=2387;break Ka}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](w);rd=2387;break Ka}else{rd=Wa[c[29352>>2]&127](w)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](w);rd=2387;break Ka}}while(0);if((a[N+164>>0]|0)==1){rd=N+166|0;a[rd>>0]=a[rd>>0]|1;rd=2387}else rd=2387}else rd=2387}else rd=2387}while(0);do if((rd|0)==2387){qi(N,E);if(k){p=k+4|0;l=c[k>>2]|0;Xa:do if((c[p>>2]|0)>0){i=N+480|0;h=N+304|0;n=N+308|0;o=N+300|0;if(!N){m=0;while(1){l=c[l+(m<<3)>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{rd=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);m=m+1|0;l=c[k>>2]|0;if((m|0)>=(c[p>>2]|0))break Xa}}m=0;do{l=c[l+(m<<3)>>2]|0;do if(l|0){if(c[i>>2]|0){Xd(N,l);break}rd=l;if((c[h>>2]|0)>>>0<=rd>>>0?(c[n>>2]|0)>>>0>rd>>>0:0){c[l>>2]=c[o>>2];c[o>>2]=l;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{rd=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);m=m+1|0;l=c[k>>2]|0}while((m|0)<(c[p>>2]|0))}while(0);Ya:do if(l){do if(N|0){m=N+480|0;if(!(c[m>>2]|0)){i=l;if((c[N+304>>2]|0)>>>0>i>>>0)break;if((c[N+308>>2]|0)>>>0<=i>>>0)break;rd=N+300|0;c[l>>2]=c[rd>>2];c[rd>>2]=l}else Xd(N,l);l=m;rd=2420;break Ya}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);rd=2418;break}else{rd=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);rd=2418;break}}else rd=2418;while(0);if((rd|0)==2418)if(N){l=N+480|0;rd=2420}if((rd|0)==2420){if(c[l>>2]|0){Xd(N,k);l=0;k=F;r=0;break}rd=k;if((c[N+304>>2]|0)>>>0<=rd>>>0?(c[N+308>>2]|0)>>>0>rd>>>0:0){l=N+300|0;c[k>>2]=c[l>>2];c[l>>2]=k;l=0;k=F;r=0;break}}if(k)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);l=0;k=F;r=0;break}else{l=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);l=0;k=F;r=0;break}else{l=0;k=F;r=0}}else{l=0;k=F;r=0}}while(0);if(k|0)ni(N,k);do if(!((l|0)==0|(c[j+236>>2]|0)!=0)){Xi(N,c[l+28>>2]|0);k=c[l>>2]|0;do if(k|0){if(N|0){if(c[N+480>>2]|0){Xd(N,k);break}j=k;if((c[N+304>>2]|0)>>>0<=j>>>0?(c[N+308>>2]|0)>>>0>j>>>0:0){j=N+300|0;c[k>>2]=c[j>>2];c[j>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);k=c[l+4>>2]|0;do if(k|0){if(N|0){if(c[N+480>>2]|0){Xd(N,k);break}j=k;if((c[N+304>>2]|0)>>>0<=j>>>0?(c[N+308>>2]|0)>>>0>j>>>0:0){j=N+300|0;c[k>>2]=c[j>>2];c[j>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);k=c[l+12>>2]|0;if(k|0)ni(N,k);k=c[l+16>>2]|0;do if(k|0){q=k+4|0;l=c[k>>2]|0;Za:do if((c[q>>2]|0)>0){h=N+480|0;n=N+304|0;o=N+308|0;p=N+300|0;if(!N){m=0;while(1){l=c[l+(m<<3)>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{j=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);m=m+1|0;l=c[k>>2]|0;if((m|0)>=(c[q>>2]|0))break Za}}i=0;do{l=c[l+(i<<3)>>2]|0;_a:do if(l|0){if(c[h>>2]|0){Xd(N,l);break}m=l;do if((c[n>>2]|0)>>>0<=m>>>0){if((c[o>>2]|0)>>>0<=m>>>0)break;c[l>>2]=c[p>>2];c[p>>2]=l;break _a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{j=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);i=i+1|0;l=c[k>>2]|0}while((i|0)<(c[q>>2]|0))}while(0);$a:do if(l){do if(N|0){m=N+480|0;if(!(c[m>>2]|0)){i=l;if((c[N+304>>2]|0)>>>0>i>>>0)break;if((c[N+308>>2]|0)>>>0<=i>>>0)break;j=N+300|0;c[l>>2]=c[j>>2];c[j>>2]=l}else Xd(N,l);l=m;rd=2487;break $a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);rd=2485;break}else{rd=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);rd=2485;break}}else rd=2485;while(0);if((rd|0)==2485)if(N){l=N+480|0;rd=2487}if((rd|0)==2487){if(c[l>>2]|0){Xd(N,k);break}j=k;if((c[N+304>>2]|0)>>>0<=j>>>0?(c[N+308>>2]|0)>>>0>j>>>0:0){j=N+300|0;c[k>>2]=c[j>>2];c[j>>2]=k;break}}if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);if(r|0){if(N|0){if(c[N+480>>2]|0){Xd(N,r);break}j=r;if((c[N+304>>2]|0)>>>0<=j>>>0?(c[N+308>>2]|0)>>>0>j>>>0:0){j=N+300|0;c[r>>2]=c[j>>2];c[j>>2]=r;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{j=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}}while(0);if(!(c[O>>2]|0)){qd=H;rd=c[qd+4>>2]|0;j=M;c[j>>2]=c[qd>>2];c[j+4>>2]=rd;break a}else{qd=K;rd=c[qd+4>>2]|0;j=M;c[j>>2]=c[qd>>2];c[j+4>>2]=rd;break a}}case 242:{c[td+4>>2]=e[td+2>>1];break}case 243:{c[td+-8>>2]=65;break}case 244:{c[td+16>>2]=33;break}case 246:case 245:{c[td+4>>2]=e[td+2>>1];c[td+8>>2]=0;break}case 247:{c[td+-20>>2]=122;c[td+-16>>2]=c[td+4>>2];break}case 315:case 267:case 248:{c[td+16>>2]=0;break}case 268:case 249:{c[td+-8>>2]=c[td+4>>2];break}case 250:{rd=td+-8|0;j=td+-20|0;c[(c[(c[j>>2]|0)+40>>2]|0)+36>>2]=c[rd>>2];c[(c[j>>2]|0)+40>>2]=c[rd>>2];break}case 251:{j=c[td+-8>>2]|0;c[j+40>>2]=j;break}case 252:{pd=td+4|0;qd=c[pd+4>>2]|0;rd=td+-20|0;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;cd(j,38526,i);break}case 253:{cd(j,38621,n);break}case 254:{cd(j,38705,o);break}case 255:{l=c[td+-20>>2]|0;m=c[td+-8>>2]|0;i=c[td+-68>>2]&255;h=td+-80|0;n=c[j>>2]|0;o=an(j,122,td+-56|0,c[h>>2]|0,c[td+4>>2]|0)|0;if(!o)k=m;else{if((d[j+200>>0]|0)<=1){j=gk(n,l,1)|0;c[o+20>>2]=j;if(!m){k=m;m=0}else{k=m;m=dk(n,m,1,0)|0}}else{c[o+20>>2]=l;l=0;k=0}c[o+16>>2]=m;a[o+1>>0]=i}if(l|0)ri(n,l);if(k|0)ni(n,k);c[h>>2]=o;break}case 256:{q=c[td+-32>>2]|0;l=c[td+-20>>2]|0;m=c[td+-68>>2]&255;r=c[td+-8>>2]|0;s=td+-80|0;t=c[j>>2]|0;u=an(j,120,td+-44|0,c[s>>2]|0,c[td+4>>2]|0)|0;do if(!u){do if(q|0){p=q+4|0;k=c[q>>2]|0;ab:do if((c[p>>2]|0)>0){i=t+480|0;h=t+304|0;n=t+308|0;o=t+300|0;if(!t){m=0;while(1){k=c[k+(m<<3)>>2]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);m=m+1|0;k=c[q>>2]|0;if((m|0)>=(c[p>>2]|0))break ab}}m=0;do{k=c[k+(m<<3)>>2]|0;do if(k|0){if(c[i>>2]|0){Xd(t,k);break}j=k;if((c[h>>2]|0)>>>0<=j>>>0?(c[n>>2]|0)>>>0>j>>>0:0){c[k>>2]=c[o>>2];c[o>>2]=k;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);m=m+1|0;k=c[q>>2]|0}while((m|0)<(c[p>>2]|0))}while(0);bb:do if(k){do if(t|0){m=t+480|0;if(!(c[m>>2]|0)){i=k;if((c[t+304>>2]|0)>>>0>i>>>0)break;if((c[t+308>>2]|0)>>>0<=i>>>0)break;j=t+300|0;c[k>>2]=c[j>>2];c[j>>2]=k}else Xd(t,k);k=q;rd=2569;break bb}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](k);rd=2567;break}else{rd=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);rd=2567;break}}else rd=2567;while(0);if((rd|0)==2567)if(!t)k=q;else{m=t+480|0;k=q;rd=2569}if((rd|0)==2569){if(c[m>>2]|0){Xd(t,k);break}j=k;if((c[t+304>>2]|0)>>>0<=j>>>0?(c[t+308>>2]|0)>>>0>j>>>0:0){j=t+300|0;c[k>>2]=c[j>>2];c[j>>2]=k;break}}if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);if(r){k=c[r>>2]|0;if(k|0)ri(t,k);k=c[r+4>>2]|0;if(k|0)ni(t,k);k=c[r+8>>2]|0;if(k|0)ri(t,k);k=c[r+12>>2]|0;if(k|0)ni(t,k);if(t|0){if(c[t+480>>2]|0){Xd(t,r);k=l;break}j=r;if((c[t+304>>2]|0)>>>0<=j>>>0?(c[t+308>>2]|0)>>>0>j>>>0:0){k=t+300|0;c[r>>2]=c[k>>2];c[k>>2]=r;k=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);k=l;break}else{k=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);k=l;break}}else k=l}else{if((d[j+200>>0]|0)>1)k=0;else{k=l;l=fk(t,l,1)|0}c[u+8>>2]=l;c[u+24>>2]=q;c[u+28>>2]=r;a[u+1>>0]=m}while(0);if(k|0)pi(t,k,1);c[s>>2]=u;break}case 257:{l=c[td+-8>>2]|0;m=td+-56|0;i=c[j>>2]|0;h=an(j,121,td+-32|0,c[m>>2]|0,c[td+4>>2]|0)|0;if(!h)k=l;else{if((d[j+200>>0]|0)<=1)if(!l){k=l;l=0}else{k=l;l=dk(i,l,1,0)|0}else k=0;c[h+16>>2]=l;a[h+1>>0]=11}if(k|0)ni(i,k);c[m>>2]=h;break}case 258:{p=c[j>>2]|0;i=c[td+-8>>2]|0;q=td+-20|0;o=c[q>>2]|0;h=c[td+4>>2]|0;cb:do if(!p){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](44)|0;rd=2630;break}k=Wa[c[29356>>2]&127](44)|0;if((c[14985]|0)>>>0<44)c[14985]=44;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){j=c[14978]|0;rd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;qd=L()|0;c[14768]=((qd|0)<0|(qd|0)==0&rd>>>0<=j>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(k){l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0){c[14987]=l;rd=2633}else rd=2633}else rd=2631}else{if(c[p+272>>2]|0){if(a[p+81>>0]|0){rd=2631;break}}else{do if((e[p+276>>1]|0)>=44){l=p+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=p+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=2630;break cb}l=p+296|0;k=c[l>>2]|0;if(!k){k=p+292|0;break}else{c[l>>2]=c[k>>2];rd=p+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=2630;break cb}}else k=p+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(p,44,0)|0;rd=2630}while(0);if((rd|0)==2630)if(!k)rd=2631;else rd=2633;if((rd|0)==2631)if(!i)k=0;else{pi(p,i,1);k=0}else if((rd|0)==2633){I=k+2|0;J=I+42|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));a[k>>0]=-125;c[k+8>>2]=i;a[k+1>>0]=11;while(1)if(!(a[880+(d[o>>0]|0)>>0]&1))break;else o=o+1|0;l=h-o|0;db:do if((l|0)<=0)if(!o)l=0;else{m=l;rd=2640}else while(1){m=l+-1|0;if(!(a[880+(d[o+m>>0]|0)>>0]&1)){m=l;rd=2640;break db}if((l|0)>1)l=m;else{rd=2640;break}}while(0);eb:do if((rd|0)==2640){h=Sv(m|0,((m|0)<0)<<31>>31|0,1,0)|0;n=L()|0;fb:do if(c[p+272>>2]|0)if(!(a[p+81>>0]|0))rd=2650;else{l=0;break eb}else{do if(!(n>>>0>0|((n|0)==0?h>>>0>(e[p+276>>1]|0)>>>0:0))){i=p+300|0;l=c[i>>2]|0;if(l|0){c[i>>2]=c[l>>2];j=p+284|0;c[j>>2]=(c[j>>2]|0)+1;break fb}i=p+296|0;l=c[i>>2]|0;if(!l){l=p+292|0;break}else{c[i>>2]=c[l>>2];j=p+284|0;c[j>>2]=(c[j>>2]|0)+1;break fb}}else l=p+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;rd=2650}while(0);if((rd|0)==2650)l=_d(p,h,n)|0;if(l){ew(l|0,o|0,m|0)|0;a[l+m>>0]=0;m=a[l>>0]|0;if(m<<24>>24){h=0;i=l;do{if(a[880+(m&255)>>0]&1)a[i>>0]=32;h=h+1|0;i=l+h|0;m=a[i>>0]|0}while(m<<24>>24!=0)}}else l=0}while(0);c[k+32>>2]=l}c[q>>2]=k;break}case 259:{k=ej(j,71,0,0)|0;c[td+-32>>2]=k;if(k|0)a[k+1>>0]=4;break}case 260:{k=oj(c[j>>2]|0,71,td+-8|0,1)|0;c[td+-56>>2]=k;if(k|0)a[k+1>>0]=c[td+-32>>2];break}case 261:{c[td+4>>2]=1;break}case 263:{c[td+4>>2]=3;break}case 264:{v=c[td+4>>2]|0;u=c[td+-8>>2]|0;w=c[j>>2]|0;gb:do if(!(a[w+81>>0]|0)){hb:do if(!(a[w+165>>0]|0)){i=j+4|0;h=w+24|0;n=(c[h>>2]&1|0)==0;o=w+16|0;qd=c[(c[o>>2]|0)+12>>2]|0;a[w+78>>0]=a[qd+77>>0]|0;if((b[qd+78>>1]&1)==0?(Da=eh(w,0,i,0)|0,(Da|0)!=0):0)k=Da;else rd=2670;ib:do if((rd|0)==2670){k=w+20|0;l=c[k>>2]|0;if((l|0)>1)do{m=l;l=l+-1|0;if((b[(c[(c[o>>2]|0)+(l<<4)+12>>2]|0)+78>>1]&1)==0?(Sa=eh(w,l,i,0)|0,Sa|0):0){k=Sa;break ib}}while((m|0)>2);if(n)c[h>>2]=c[h>>2]&-2;if(!(a[w+89>>0]|0))break hb;c[h>>2]=c[h>>2]|16;break hb}while(0);c[j+12>>2]=k;j=j+36|0;c[j>>2]=(c[j>>2]|0)+1;break gb}else k=w+20|0;while(0);t=c[v+12>>2]|0;s=c[v+16>>2]|0;q=c[k>>2]|0;if((q|0)>0){r=(t|0)==0;p=c[w+16>>2]|0;k=0;o=0;do{h=o^o>>>0<2;if(!r){m=c[p+(h<<4)>>2]|0;qd=a[m>>0]|0;l=(d[208+(qd&255)>>0]|0)-(d[208+(d[t>>0]|0)>>0]|0)|0;if(!(qd<<24>>24==0|(l|0)!=0)){i=t;do{m=m+1|0;i=i+1|0;qd=a[m>>0]|0;l=(d[208+(qd&255)>>0]|0)-(d[208+(d[i>>0]|0)>>0]|0)|0}while(!(qd<<24>>24==0|(l|0)!=0))}if(!l)rd=2687}else rd=2687;if((rd|0)==2687){rd=0;i=c[p+(h<<4)+12>>2]|0;h=c[i+52>>2]|0;if(!h){l=i+44|0;k=i+48|0}else{l=a[s>>0]|0;if(!(l<<24>>24))k=0;else{k=0;m=s;do{m=m+1|0;k=G(k+(d[208+(l&255)>>0]|0)|0,-1640531535)|0;l=a[m>>0]|0}while(l<<24>>24!=0)}k=(k>>>0)%((c[i+40>>2]|0)>>>0)|0;l=h+(k<<3)|0;k=h+(k<<3)+4|0}l=c[l>>2]|0;jb:do if(!l)k=59292;else{n=d[208+(d[s>>0]|0)>>0]|0;while(1){k=c[k>>2]|0;l=l+-1|0;i=c[k+12>>2]|0;qd=a[i>>0]|0;m=(d[208+(qd&255)>>0]|0)-n|0;if(!(qd<<24>>24==0|(m|0)!=0)){h=s;do{i=i+1|0;h=h+1|0;qd=a[i>>0]|0;m=(d[208+(qd&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(qd<<24>>24==0|(m|0)!=0))}if(!m)break jb;if(!l){k=59292;break}}}while(0);k=c[k+8>>2]|0;if(k){rd=2702;break}}o=o+1|0}while((o|0)<(q|0));if(k|0){jl(j,k);break}}if(!u){c[qc>>2]=v;c[qc+4>>2]=0;cd(j,46398,qc)}else hl(j,t);a[j+17>>0]=1}while(0);qi(w,v);break}case 265:{rd=c[td+-32>>2]|0;cn(j,24,30104,rd,rd,c[td+-8>>2]|0,c[td+4>>2]|0);break}case 266:{rd=c[td+4>>2]|0;cn(j,25,30144,rd,0,0,rd);break}case 269:{m=c[j>>2]|0;kb:do if(!(a[m+165>>0]|0)){i=j+4|0;h=m+24|0;n=(c[h>>2]&1|0)==0;o=m+16|0;pd=c[(c[o>>2]|0)+12>>2]|0;a[m+78>>0]=a[pd+77>>0]|0;if((b[pd+78>>1]&1)==0?(ga=eh(m,0,i,0)|0,(ga|0)!=0):0)k=ga;else rd=2715;lb:do if((rd|0)==2715){k=c[m+20>>2]|0;if((k|0)>1)do{l=k;k=k+-1|0;if((b[(c[(c[o>>2]|0)+(k<<4)+12>>2]|0)+78>>1]&1)==0?(Ga=eh(m,k,i,0)|0,Ga|0):0){k=Ga;break lb}}while((l|0)>2);if(n)c[h>>2]=c[h>>2]&-2;if(!(a[m+89>>0]|0))break kb;c[h>>2]=c[h>>2]|16;break kb}while(0);c[j+12>>2]=k;j=j+36|0;c[j>>2]=(c[j>>2]|0)+1;break a}while(0);k=c[j>>2]|0;w=k+20|0;l=c[w>>2]|0;if((l|0)>0){x=j+116|0;v=0;u=c[k+16>>2]|0;k=l;while(1){l=c[(c[u+12>>2]|0)+16>>2]|0;if(l){do{k=c[l+8>>2]|0;if((c[k+56>>2]|0)==0?(ec=c[k+8>>2]|0,ec|0):0){t=k+72|0;s=ec;do{m=c[t>>2]|0;if(!m)k=-1e6;else{i=c[(c[j>>2]|0)+16>>2]|0;k=0;while(1)if((c[i+(k<<4)+12>>2]|0)==(m|0))break;else k=k+1|0}r=c[x>>2]|0;r=(r|0)==0?j:r;m=r+84|0;i=c[m>>2]|0;q=1<>2]=i|q,(k|0)==1):0)?(fc=c[r>>2]|0,gc=fc+16|0,(c[(c[gc>>2]|0)+20>>2]|0)==0):0)?(a[r+199>>0]|0)==0:0){k=Pe(c[fc>>2]|0,0,fc,qd,0,542)|0;if(k|0){cd(r,32157,cc);c[r+12>>2]=k;break}pd=c[qd>>2]|0;c[(c[gc>>2]|0)+20>>2]=pd;k=c[fc+92>>2]|0;h=c[pd+4>>2]|0;c[h+4>>2]=c[pd>>2];do if(!(b[h+22>>1]&2)){n=h+32|0;o=h+36|0;p=(c[n>>2]|0)-(c[o>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[n>>2]=k;i=h+80|0;k=c[i>>2]|0;if(!k)break;m=k+-4|0;c[i>>2]=m;k=m;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[m>>2]=c[14819];c[14819]=m;pd=(c[14820]|0)+1|0;c[14820]=pd;c[14821]=(pd|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](m)|0;rd=2750;break}else{k=Wa[c[29352>>2]&127](m)|0;rd=2750}while(0);do if((rd|0)==2750){rd=0;c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{pd=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-pd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[i>>2]=0}while(0);pd=Se(c[h>>2]|0,n,p)|0;c[o>>2]=(c[n>>2]|0)-(p&65535);if((pd|0)!=7)break;k=fc+81|0;do if(!(a[k>>0]|0)){if(a[fc+82>>0]|0)break;a[k>>0]=1;if((c[fc+180>>2]|0)>0)c[fc+264>>2]=1;k=fc+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[fc+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break mb}while(0)}while(0);pd=r+80|0;c[pd>>2]=c[pd>>2]|q;bl(j,s,-1);s=c[s+20>>2]|0}while((s|0)!=0)}l=c[l>>2]|0}while((l|0)!=0);k=c[w>>2]|0}v=v+1|0;if((v|0)>=(k|0))break;else u=u+16|0}}break}case 270:{l=td+-8|0;s=td+4|0;v=c[j>>2]|0;nb:do if(!(a[v+165>>0]|0)){i=j+4|0;h=v+24|0;n=(c[h>>2]&1|0)==0;o=v+16|0;pd=c[(c[o>>2]|0)+12>>2]|0;a[v+78>>0]=a[pd+77>>0]|0;if((b[pd+78>>1]&1)==0?(Ea=eh(v,0,i,0)|0,(Ea|0)!=0):0)k=Ea;else rd=2770;ob:do if((rd|0)==2770){k=c[v+20>>2]|0;if((k|0)>1)do{m=k;k=k+-1|0;if((b[(c[(c[o>>2]|0)+(k<<4)+12>>2]|0)+78>>1]&1)==0?(Pa=eh(v,k,i,0)|0,Pa|0):0){k=Pa;break ob}}while((m|0)>2);if(n)c[h>>2]=c[h>>2]&-2;if(!(a[v+89>>0]|0))break nb;c[h>>2]=c[h>>2]|16;break nb}while(0);c[j+12>>2]=k;j=j+36|0;c[j>>2]=(c[j>>2]|0)+1;break a}while(0);k=c[j>>2]|0;do if(!(c[s>>2]|0)){q=qj(k,l)|0;if(!q)break a;p=a[v+78>>0]|0;h=c[v+392>>2]|0;if(!h){m=v+384|0;k=v+388|0}else{m=a[q>>0]|0;if(!(m<<24>>24))k=0;else{k=0;i=q;do{i=i+1|0;k=G(k+(d[208+(m&255)>>0]|0)|0,-1640531535)|0;m=a[i>>0]|0}while(m<<24>>24!=0)}k=(k>>>0)%((c[v+380>>2]|0)>>>0)|0;m=h+(k<<3)|0;k=h+(k<<3)+4|0}m=c[m>>2]|0;pb:do if(!m)k=59292;else{o=d[208+(d[q>>0]|0)>>0]|0;while(1){k=c[k>>2]|0;m=m+-1|0;h=c[k+12>>2]|0;pd=a[h>>0]|0;i=(d[208+(pd&255)>>0]|0)-o|0;if(!(pd<<24>>24==0|(i|0)!=0)){n=q;do{h=h+1|0;n=n+1|0;pd=a[h>>0]|0;i=(d[208+(pd&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(pd<<24>>24==0|(i|0)!=0))}if(!i)break pb;if(!m){k=59292;break}}}while(0);pd=c[k+8>>2]|0;if((pd|0)==0|(pd+(((p&255)+-1|0)*20|0)|0)==0){do if(v){if(c[v+480>>2]|0){Xd(v,q);break}pd=q;if((c[v+304>>2]|0)>>>0<=pd>>>0?(c[v+308>>2]|0)>>>0>pd>>>0:0){pd=v+300|0;c[q>>2]=c[pd>>2];c[pd>>2]=q}else rd=2818}else rd=2818;while(0);do if((rd|0)==2818)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{pd=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-pd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}while(0);k=c[j>>2]|0;if(!(c[td+8>>2]|0)){m=d[k+164>>0]|0;break}if(a[k+165>>0]|0){cd(j,39404,Vb);break a}k=wk(k,l)|0;if((k|0)>=0){l=s;m=k;break}c[Yb>>2]=l;cd(j,39421,Yb);break a}k=c[j>>2]|0;h=k+20|0;l=c[h>>2]|0;if((l|0)>0){i=0;m=c[k+16>>2]|0;while(1){k=c[(c[m+12>>2]|0)+16>>2]|0;if(!k)k=l;else{do{gn(j,c[k+8>>2]|0,q);k=c[k>>2]|0}while((k|0)!=0);k=c[h>>2]|0}i=i+1|0;if((i|0)>=(k|0))break;else{m=m+16|0;l=k}}}if(v|0){if(c[v+480>>2]|0){Xd(v,q);break a}j=q;if((c[v+304>>2]|0)>>>0<=j>>>0?(c[v+308>>2]|0)>>>0>j>>>0:0){j=v+300|0;c[q>>2]=c[j>>2];c[j>>2]=q;break a}}if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break a}else{j=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break a}}else{if(!(c[td+8>>2]|0)){m=d[k+164>>0]|0;break}if(a[k+165>>0]|0){cd(j,39404,Qa);break a}k=wk(k,l)|0;if((k|0)<0){c[Va>>2]=l;cd(j,39421,Va);break a}else{l=s;m=k}}while(0);u=qj(v,l)|0;if(u|0){k=c[(c[v+16>>2]|0)+(m<<4)>>2]|0;l=Sd(v,u,k)|0;if(!l){r=hi(v,u,k)|0;do if(!(c[v+480>>2]|0)){pd=u;if((c[v+304>>2]|0)>>>0<=pd>>>0?(c[v+308>>2]|0)>>>0>pd>>>0:0){pd=v+300|0;c[u>>2]=c[pd>>2];c[pd>>2]=u;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](u);break}else{pd=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-pd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);break}}else Xd(v,u);while(0);if(!r){cd(j,46778,dc);break a}q=c[j+116>>2]|0;q=(q|0)==0?j:q;k=q+84|0;l=c[k>>2]|0;p=1<>2]=l|p,(m|0)==1):0)?(xc=c[q>>2]|0,lc=xc+16|0,(c[(c[lc>>2]|0)+20>>2]|0)==0):0)?(a[q+199>>0]|0)==0:0){k=Pe(c[xc>>2]|0,0,xc,qd,0,542)|0;if(k|0){cd(q,32157,jc);c[q+12>>2]=k;break}qd=c[qd>>2]|0;c[(c[lc>>2]|0)+20>>2]=qd;k=c[xc+92>>2]|0;i=c[qd+4>>2]|0;c[i+4>>2]=c[qd>>2];if(!(b[i+22>>1]&2)){h=i+32|0;n=i+36|0;o=(c[h>>2]|0)-(c[n>>2]|0)|0;do if((k+-512|0)>>>0<65025?(k+-1&k|0)==0:0){c[h>>2]=k;m=i+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;qd=(c[14820]|0)+1|0;c[14820]=qd;c[14821]=(qd|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;rd=2903;break}else{k=Wa[c[29352>>2]&127](l)|0;rd=2903}while(0);do if((rd|0)==2903){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{rd=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);rd=Se(c[i>>2]|0,h,o)|0;c[n>>2]=(c[h>>2]|0)-(o&65535);if((rd|0)==7){k=xc+81|0;do if(!(a[k>>0]|0)){if(a[xc+82>>0]|0)break;a[k>>0]=1;if((c[xc+180>>2]|0)>0)c[xc+264>>2]=1;k=xc+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[xc+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break}}}while(0);rd=q+80|0;c[rd>>2]=c[rd>>2]|p;bl(j,r,-1);break a}if((c[l+56>>2]|0)==0?(r=c[l+8>>2]|0,(r|0)!=0):0){s=l+72|0;t=j+116|0;do{l=c[s>>2]|0;if(!l)k=-1e6;else{m=c[(c[j>>2]|0)+16>>2]|0;k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0))break;else k=k+1|0}q=c[t>>2]|0;q=(q|0)==0?j:q;l=q+84|0;m=c[l>>2]|0;p=1<>2]=m|p,(k|0)==1):0)?(Rc=c[q>>2]|0,Sc=Rc+16|0,(c[(c[Sc>>2]|0)+20>>2]|0)==0):0)?(a[q+199>>0]|0)==0:0){k=Pe(c[Rc>>2]|0,0,Rc,qd,0,542)|0;if(k|0){cd(q,32157,Pc);c[q+12>>2]=k;break}pd=c[qd>>2]|0;c[(c[Sc>>2]|0)+20>>2]=pd;k=c[Rc+92>>2]|0;i=c[pd+4>>2]|0;c[i+4>>2]=c[pd>>2];do if(!(b[i+22>>1]&2)){h=i+32|0;n=i+36|0;o=(c[h>>2]|0)-(c[n>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[h>>2]=k;m=i+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;pd=(c[14820]|0)+1|0;c[14820]=pd;c[14821]=(pd|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;rd=2856;break}else{k=Wa[c[29352>>2]&127](l)|0;rd=2856}while(0);do if((rd|0)==2856){rd=0;c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{pd=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-pd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);pd=Se(c[i>>2]|0,h,o)|0;c[n>>2]=(c[h>>2]|0)-(o&65535);if((pd|0)!=7)break;k=Rc+81|0;do if(!(a[k>>0]|0)){if(a[Rc+82>>0]|0)break;a[k>>0]=1;if((c[Rc+180>>2]|0)>0)c[Rc+264>>2]=1;k=Rc+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[Rc+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break qb}while(0)}while(0);pd=q+80|0;c[pd>>2]=c[pd>>2]|p;bl(j,r,-1);r=c[r+20>>2]|0}while((r|0)!=0);if(v|0)rd=2871}else rd=2871;if((rd|0)==2871){if(c[v+480>>2]|0){Xd(v,u);break a}j=u;if((c[v+304>>2]|0)>>>0<=j>>>0?(c[v+308>>2]|0)>>>0>j>>>0:0){j=v+300|0;c[u>>2]=c[j>>2];c[j>>2]=u;break a}}if(!(c[7324]|0)){ab[c[29344>>2]&127](u);break a}else{j=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);break a}}break}case 271:{zj(j,0,0);break}case 272:{zj(j,td+-8|0,td+4|0);break}case 273:{w=c[td+-32>>2]|0;i=td+4|0;x=c[j>>2]|0;y=x+24|0;z=c[y>>2]|0;do if(!(a[x+81>>0]|0)){l=c[w+8>>2]|0;if(!l)k=w+12|0;else{m=c[x+16>>2]|0;k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0))break;else k=k+1|0;k=m+(k<<4)|0}s=bd(j,0,c[w+16>>2]|0,c[k>>2]|0)|0;if(s){l=c[s+72>>2]|0;if(!l)u=-1e6;else{m=c[(c[j>>2]|0)+16>>2]|0;k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0)){u=k;break}else k=k+1|0}v=c[(c[x+16>>2]|0)+(u<<4)>>2]|0;c[y>>2]=c[y>>2]|2;t=qj(x,i)|0;if(t){rb:do if(!(Sd(x,t,v)|0)){if(hi(x,t,v)|0){c[ib>>2]=t;cd(j,46940,ib);rd=3010;break}if((on(j,s)|0)==0?(vk(j,t)|0)==0:0){l=c[s>>2]|0;if(c[s+12>>2]|0){c[wb>>2]=l;cd(j,46999,wb);rd=3010;break}k=c[j>>2]|0;do if(((a[k+165>>0]|0)==0?(a[j+200>>0]|0)==0:0)?(Gb=c[k+312>>2]|0,Gb|0):0){k=$a[Gb&127](c[k+316>>2]|0,26,v,l,0,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,Hb);c[j+12>>2]=23;rd=3010;break rb}if((k|2|0)==2)if(!k)break;else{rd=3010;break rb}else{cd(j,39231,Ib);c[j+12>>2]=1;rd=3010;break rb}}while(0);if(!(Sk(j,s)|0)){if(!(c[s+56>>2]|0))q=0;else{k=c[s+64>>2]|0;sb:do if(!k)k=0;else while(1){if((c[k>>2]|0)==(x|0))break sb;k=c[k+24>>2]|0;if(!k){k=0;break}}while(0);q=(c[(c[c[k+8>>2]>>2]|0)+76>>2]|0)==0?0:k}r=j+8|0;k=c[r>>2]|0;h=j+116|0;tb:do if(!k){i=c[j>>2]|0;do if(!(c[h>>2]|0)){if(b[i+76>>1]&8)break;a[j+23>>0]=1}while(0);ub:do if(c[i+272>>2]|0)if(!(a[i+81>>0]|0))rd=2968;else break tb;else{do if((e[i+276>>1]|0)>=224){k=i+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];m=i+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break ub}k=i+296|0;l=c[k>>2]|0;if(!l){k=i+292|0;break}else{c[k>>2]=c[l>>2];m=i+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break ub}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=2968}while(0);if((rd|0)==2968)m=_d(i,224,0)|0;if(!m)break;I=m+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[m>>2]=i;k=i+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=m;c[m+8>>2]=l;c[m+4>>2]=0;c[k>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=j;c[r>>2]=m;Di(m,61,0,1,0)|0;p=m;rd=2973}else{p=k;rd=2973}while(0);vb:do if((rd|0)==2973){h=c[h>>2]|0;a[((h|0)==0?j:h)+21>>0]=1;h=c[s>>2]|0;m=a[h>>0]|0;if((h|0)!=(-1|0)&m<<24>>24!=0){l=h;k=0;do{i=l+1|0;if((m&255)>191){l=i;while(1){m=a[l>>0]|0;if((m&-64)<<24>>24==-128)l=l+1|0;else break}}else{l=i;m=a[i>>0]|0}k=k+1|0}while(m<<24>>24!=0&(l|0)!=(-1|0))}else k=0;n=(u|0)==1;o=n&1;c[tc>>2]=v;c[tc+4>>2]=34585;c[tc+8>>2]=v;c[tc+12>>2]=h;c[tc+16>>2]=t;c[tc+20>>2]=o;c[tc+24>>2]=h;Ak(j,47026,tc);c[uc>>2]=v;c[uc+4>>2]=34585;c[uc+8>>2]=t;c[uc+12>>2]=t;c[uc+16>>2]=t;c[uc+20>>2]=k;c[uc+24>>2]=h;Ak(j,47187,uc);if(Sd(x,39382,v)|0){qd=c[s>>2]|0;c[vc>>2]=v;c[vc+4>>2]=t;c[vc+8>>2]=qd;Ak(j,47464,vc)}if(!n){c[wc>>2]=v;c[wc+4>>2]=h;c[wc+8>>2]=t;c[wc+12>>2]=h;c[wc+16>>2]=v;c[wc+20>>2]=t;Ak(j,47522,wc)}do if(q|0){i=j+44|0;l=(c[i>>2]|0)+1|0;c[i>>2]=l;i=p+108|0;k=c[i>>2]|0;m=p+112|0;if((c[m>>2]|0)>(k|0)){c[i>>2]=k+1;qd=c[p+104>>2]|0;a[qd+(k*20|0)>>0]=110;b[qd+(k*20|0)+2>>1]=0;c[qd+(k*20|0)+4>>2]=0;c[qd+(k*20|0)+8>>2]=l;c[qd+(k*20|0)+12>>2]=0;c[qd+(k*20|0)+16>>2]=0;a[qd+(k*20|0)+1>>0]=0}else k=Di(p,110,0,l,0)|0;if(!(a[(c[p>>2]|0)+81>>0]|0)){if((k|0)<0)k=(c[i>>2]|0)+-1|0;Ei(p,(c[p+104>>2]|0)+(k*20|0)|0,t,0)}k=c[i>>2]|0;if((c[m>>2]|0)>(k|0)){c[i>>2]=k+1;qd=c[p+104>>2]|0;a[qd+(k*20|0)>>0]=-91;b[qd+(k*20|0)+2>>1]=0;c[qd+(k*20|0)+4>>2]=l;c[qd+(k*20|0)+8>>2]=0;c[qd+(k*20|0)+12>>2]=0;c[qd+(k*20|0)+16>>2]=0;a[qd+(k*20|0)+1>>0]=0}else k=Di(p,165,l,0,0)|0;if(a[(c[p>>2]|0)+81>>0]|0)break;if((k|0)<0)k=(c[i>>2]|0)+-1|0;l=c[p+104>>2]|0;m=l+(k*20|0)+1|0;if(!(a[m>>0]|0)){c[l+(k*20|0)+16>>2]=q;a[m>>0]=-12;qd=q+12|0;c[qd>>2]=(c[qd>>2]|0)+1;break}else{Ei(p,l+(k*20|0)|0,q,-12);break}}while(0);i=c[r>>2]|0;do if(!i){c[Jc>>2]=v;c[Jc+4>>2]=34585;c[Jc+8>>2]=v;c[Jc+12>>2]=o;Ak(j,47804,Jc);if(n)break vb}else{k=(c[c[(c[(c[j>>2]|0)+16>>2]|0)+(u<<4)+12>>2]>>2]|0)+1|0;l=i+108|0;m=c[l>>2]|0;if((c[i+112>>2]|0)>(m|0)){c[l>>2]=m+1;qd=c[i+104>>2]|0;a[qd+(m*20|0)>>0]=95;b[qd+(m*20|0)+2>>1]=0;c[qd+(m*20|0)+4>>2]=u;c[qd+(m*20|0)+8>>2]=1;c[qd+(m*20|0)+12>>2]=k;c[qd+(m*20|0)+16>>2]=0;a[qd+(m*20|0)+1>>0]=0}else Di(i,95,u,1,k)|0;Bk(c[r>>2]|0,u,0);if(n){c[Tc>>2]=v;c[Tc+4>>2]=34585;c[Tc+8>>2]=v;c[Tc+12>>2]=o;Ak(j,47804,Tc);break vb}else{Bk(c[r>>2]|0,1,0);c[Uc>>2]=v;c[Uc+4>>2]=34585;c[Uc+8>>2]=v;c[Uc+12>>2]=o;Ak(j,47804,Uc);break}}while(0);c[Vc>>2]=34585;c[Vc+4>>2]=v;Ak(j,47948,Vc)}while(0);qi(x,w);if(x|0)rd=3013}else rd=3010}else rd=3010}else{c[hb>>2]=t;cd(j,46940,hb);rd=3010}while(0);if((rd|0)==3010){qi(x,w);rd=3013}if((rd|0)==3013){if(c[x+480>>2]|0){Xd(x,t);break}j=t;if((c[x+304>>2]|0)>>>0<=j>>>0?(c[x+308>>2]|0)>>>0>j>>>0:0){j=x+300|0;c[t>>2]=c[j>>2];c[j>>2]=t;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{j=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}else rd=3011}else rd=3011}else rd=3011;while(0);if((rd|0)==3011)qi(x,w);c[y>>2]=z;break}case 274:{h=td+-8|0;o=td+-4|0;c[o>>2]=(c[j+188>>2]|0)-(c[h>>2]|0)+(c[j+192>>2]|0);s=c[j>>2]|0;if((c[j+36>>2]|0)==0?(Nb=s+81|0,(a[Nb>>0]|0)==0):0){r=c[j+228>>2]|0;l=c[r+72>>2]|0;m=c[s+16>>2]|0;if(!l)t=-1e6;else{k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0)){t=k;break}else k=k+1|0}p=c[m+(t<<4)>>2]|0;q=(c[r>>2]|0)+16|0;m=c[r+4>>2]|0;i=(b[r+42>>1]|0)+-1|0;l=c[m+(i<<4)+4>>2]|0;k=Sd(s,q,p)|0;k=c[k>>2]|0;do if(((a[s+165>>0]|0)==0?(a[j+200>>0]|0)==0:0)?(db=c[s+312>>2]|0,db|0):0){k=$a[db&127](c[s+316>>2]|0,26,p,k,0,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,eb);c[j+12>>2]=23;break a}if((k|2|0)==2)if(!k)break;else break a;else{cd(j,39231,fb);c[j+12>>2]=1;break a}}while(0);if(!l)l=0;else l=(a[c[l+12>>2]>>0]|0)==114?0:l;if(a[m+(i<<4)+15>>0]&1){cd(j,48091,jb);break a}if(c[r+8>>2]|0){cd(j,48123,kb);break a}if(!(0==0?(c[s+32>>2]&16384|0)==0:0)?(l|0)!=0&(c[r+16>>2]|0)!=0:0){cd(j,48150,lb);break a}k=(l|0)!=0;if(!(k|(a[m+(i<<4)+12>>0]|0)==0)){cd(j,48209,xb);break a}wb:do if(k){c[qd>>2]=0;do if(!(Wj(s,l,1,65,qd)|0)){m=c[qd>>2]|0;if(!m){cd(j,48262,Ab);break}if(!((b[m+8>>1]&9216)==0?!(c[m+24>>2]|0):0))Cg(m);k=c[m+32>>2]|0;do if(!k)rd=3059;else{if(c[k+480>>2]|0){Xd(k,m);break}l=m;if((c[k+304>>2]|0)>>>0>l>>>0){rd=3059;break}if((c[k+308>>2]|0)>>>0<=l>>>0){rd=3059;break}qd=k+300|0;c[m>>2]=c[qd>>2];c[qd>>2]=m}while(0);do if((rd|0)==3059)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{qd=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-qd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}while(0);break wb}while(0);break a}while(0);h=c[h>>2]|0;n=c[o>>2]|0;xb:do if(h|0){m=Sv(n|0,0,1,0)|0;i=L()|0;yb:do if(c[s+272>>2]|0)if(!(a[Nb>>0]|0))rd=3075;else break xb;else{do if(0<0|(0==0?n>>>0<(e[s+276>>1]|0)>>>0:0)){k=s+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];qd=s+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break yb}k=s+296|0;l=c[k>>2]|0;if(!l){k=s+292|0;break}else{c[k>>2]=c[l>>2];qd=s+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break yb}}else k=s+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=3075}while(0);if((rd|0)==3075)l=_d(s,m,i)|0;if(l|0){ew(l|0,h|0,n|0)|0;a[l+n>>0]=0;k=(c[o>>2]|0)+-1|0;m=s+24|0;i=c[m>>2]|0;if((k|0)>0){k=l+k|0;do{qd=a[k>>0]|0;if(qd<<24>>24!=59?(a[880+(qd&255)>>0]&1)==0:0)break;a[k>>0]=0;k=k+-1|0}while(k>>>0>l>>>0);k=c[m>>2]|0}else k=i;c[m>>2]=k|2;qd=c[r+52>>2]|0;c[Zb>>2]=p;c[Zb+4>>2]=34585;c[Zb+8>>2]=qd;c[Zb+12>>2]=l;c[Zb+16>>2]=qd+1;c[Zb+20>>2]=q;Ak(j,48308,Zb);zb:do if(!(c[s+480>>2]|0)){k=l;do if((c[s+304>>2]|0)>>>0<=k>>>0){if((c[s+308>>2]|0)>>>0<=k>>>0)break;qd=s+300|0;c[l>>2]=c[qd>>2];c[qd>>2]=l;break zb}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{qd=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-qd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}else Xd(s,l);while(0);c[m>>2]=i}}while(0);p=j+8|0;k=c[p>>2]|0;Ab:do if(!k){m=c[j>>2]|0;if((c[j+116>>2]|0)==0?(b[m+76>>1]&8)==0:0)a[j+23>>0]=1;Bb:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=3106;else break Ab;else{do if((e[m+276>>1]|0)>=224){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];qd=m+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break Bb}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];qd=m+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break Bb}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=3106}while(0);if((rd|0)==3106)k=_d(m,224,0)|0;if(k|0){I=k+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[k>>2]=m;l=m+4|0;m=c[l>>2]|0;if(m|0)c[m+4>>2]=k;c[k+8>>2]=m;c[k+4>>2]=0;c[l>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=j;c[p>>2]=k;Di(k,61,0,1,0)|0;rd=3111}}else rd=3111;while(0);do if((rd|0)==3111){o=j+19|0;l=a[o>>0]|0;if(!(l<<24>>24)){rd=j+44|0;n=(c[rd>>2]|0)+1|0;c[rd>>2]=n}else{n=l+-1<<24>>24;a[o>>0]=n;n=c[j+148+((n&255)<<2)>>2]|0}i=k+108|0;l=c[i>>2]|0;h=k+112|0;if((c[h>>2]|0)>(l|0)){c[i>>2]=l+1;rd=c[k+104>>2]|0;a[rd+(l*20|0)>>0]=94;b[rd+(l*20|0)+2>>1]=0;c[rd+(l*20|0)+4>>2]=t;c[rd+(l*20|0)+8>>2]=n;c[rd+(l*20|0)+12>>2]=2;c[rd+(l*20|0)+16>>2]=0;a[rd+(l*20|0)+1>>0]=0}else Di(k,94,t,n,2)|0;l=1<>2]=c[rd>>2]|l;if((t|0)!=1?a[(c[(c[(c[k>>2]|0)+16>>2]|0)+(t<<4)+4>>2]|0)+9>>0]|0:0){rd=k+156|0;c[rd>>2]=c[rd>>2]|l}l=c[i>>2]|0;if((c[h>>2]|0)>(l|0)){c[i>>2]=l+1;rd=c[k+104>>2]|0;a[rd+(l*20|0)>>0]=83;b[rd+(l*20|0)+2>>1]=0;c[rd+(l*20|0)+4>>2]=n;c[rd+(l*20|0)+8>>2]=-2;c[rd+(l*20|0)+12>>2]=0;c[rd+(l*20|0)+16>>2]=0;a[rd+(l*20|0)+1>>0]=0}else Di(k,83,n,-2,0)|0;l=c[i>>2]|0;m=l+2|0;if((c[h>>2]|0)>(l|0)){c[i>>2]=l+1;rd=c[k+104>>2]|0;a[rd+(l*20|0)>>0]=47;b[rd+(l*20|0)+2>>1]=0;c[rd+(l*20|0)+4>>2]=n;c[rd+(l*20|0)+8>>2]=m;c[rd+(l*20|0)+12>>2]=0;c[rd+(l*20|0)+16>>2]=0;a[rd+(l*20|0)+1>>0]=0}else Di(k,47,n,m,0)|0;l=c[i>>2]|0;if((c[h>>2]|0)>(l|0)){c[i>>2]=l+1;rd=c[k+104>>2]|0;a[rd+(l*20|0)>>0]=95;b[rd+(l*20|0)+2>>1]=0;c[rd+(l*20|0)+4>>2]=t;c[rd+(l*20|0)+8>>2]=2;c[rd+(l*20|0)+12>>2]=3;c[rd+(l*20|0)+16>>2]=0;a[rd+(l*20|0)+1>>0]=0}else Di(k,95,t,2,3)|0;if(!n)break;k=a[o>>0]|0;if((k&255)>=8)break;a[o>>0]=k+1<<24>>24;c[j+148+((k&255)<<2)>>2]=n}while(0);i=c[p>>2]|0;if(i|0){k=(c[c[(c[(c[j>>2]|0)+16>>2]|0)+(t<<4)+12>>2]>>2]|0)+1|0;l=i+108|0;m=c[l>>2]|0;if((c[i+112>>2]|0)>(m|0)){c[l>>2]=m+1;j=c[i+104>>2]|0;a[j+(m*20|0)>>0]=95;b[j+(m*20|0)+2>>1]=0;c[j+(m*20|0)+4>>2]=t;c[j+(m*20|0)+8>>2]=1;c[j+(m*20|0)+12>>2]=k;c[j+(m*20|0)+16>>2]=0;a[j+(m*20|0)+1>>0]=0}else Di(i,95,t,1,k)|0;Bk(c[p>>2]|0,t,0);if((t|0)!=1)Bk(c[p>>2]|0,1,0)}}break}case 275:{D=j+24|0;a[D>>0]=(a[D>>0]|0)+1<<24>>24;D=c[j>>2]|0;E=D+272|0;c[E>>2]=(c[E>>2]|0)+1;F=c[td+4>>2]|0;H=D+81|0;Cb:do if(!(a[H>>0]|0)){l=c[F+8>>2]|0;if(!l)k=F+12|0;else{m=c[D+16>>2]|0;k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0))break;else k=k+1|0;k=m+(k<<4)|0}C=bd(j,0,c[F+16>>2]|0,c[k>>2]|0)|0;if(C|0){if(c[C+56>>2]|0){cd(j,48417,Ia);break}if(c[C+12>>2]|0){cd(j,48451,Ja);break}if(!(on(j,C)|0)){l=c[C+72>>2]|0;if(!l)A=-1e6;else{m=c[D+16>>2]|0;k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0)){A=k;break}else k=k+1|0}B=(D|0)==0;Db:do if(B){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](80)|0;rd=3176;break}k=Wa[c[29356>>2]&127](80)|0;if((c[14985]|0)>>>0<80)c[14985]=80;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break Cb;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[E>>2]|0){if(a[H>>0]|0)break Cb}else{do if((e[D+276>>1]|0)>=80){l=D+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=D+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3176;break Db}l=D+296|0;k=c[l>>2]|0;if(!k){k=D+292|0;break}else{c[l>>2]=c[k>>2];rd=D+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3176;break Db}}else k=D+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(D,80,0)|0;rd=3176}while(0);if((rd|0)==3176)if(!k)break;I=k;J=I+80|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[j+228>>2]=k;y=k+32|0;c[y>>2]=1;h=b[C+42>>1]|0;z=k+42|0;b[z>>1]=h;h=((((h<<16>>16)+-1|0)/8|0)<<7)+128|0;Eb:do if(B){j=Sv(h|0,0,-1,-1)|0;qd=L()|0;if(!(qd>>>0>0|(qd|0)==0&j>>>0>2147483390)){if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](h)|0;rd=3201;break}l=Wa[c[29356>>2]&127](h)|0;if((c[14985]|0)>>>0>>0)c[14985]=h;i=59064;m=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&m>>>0>0){j=c[14978]|0;qd=Tv(m|0,i|0,l|0,((l|0)<0)<<31>>31|0)|0;pd=L()|0;c[14768]=((pd|0)<0|(pd|0)==0&qd>>>0<=j>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(l){m=Wa[c[29352>>2]&127](l)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0>(c[14987]|0)>>>0){c[14987]=m;rd=3202}else rd=3202}else l=0}else l=0}else{if(c[E>>2]|0){if(a[H>>0]|0){l=0;break}}else{do if(!(0<0|(0==0?(e[D+276>>1]|0)>>>0>>0:0))){m=D+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];rd=D+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3201;break Eb}m=D+296|0;l=c[m>>2]|0;if(!l){l=D+292|0;break}else{c[m>>2]=c[l>>2];rd=D+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3201;break Eb}}else l=D+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(D,h,0)|0;rd=3201}while(0);if((rd|0)==3201)if(!l)l=0;else rd=3202;if((rd|0)==3202)gw(l|0,0,h|0)|0;x=k+4|0;c[x>>2]=l;c[kc>>2]=c[C>>2];j=dd(D,48481,kc)|0;c[k>>2]=j;l=c[x>>2]|0;if(!((j|0)==0|(l|0)==0)){ew(l|0,c[C+4>>2]|0,b[z>>1]<<4|0)|0;if((b[z>>1]|0)>0){p=D+276|0;q=D+288|0;r=D+300|0;s=D+296|0;t=D+284|0;u=D+292|0;o=0;do{v=c[x>>2]|0;w=v+(o<<4)|0;h=c[w>>2]|0;Fb:do if(!h)l=0;else{n=(Eu(h)|0)+1|0;Gb:do if(B){j=Sv(n|0,0,-1,-1)|0;qd=L()|0;if(qd>>>0>0|(qd|0)==0&j>>>0>2147483390){l=0;break Fb}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](n)|0;rd=3229;break}l=Wa[c[29356>>2]&127](n)|0;if((c[14985]|0)>>>0>>0)c[14985]=n;i=59064;m=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&m>>>0>0){j=c[14978]|0;qd=Tv(m|0,i|0,l|0,((l|0)<0)<<31>>31|0)|0;pd=L()|0;c[14768]=((pd|0)<0|(pd|0)==0&qd>>>0<=j>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break Fb}m=Wa[c[29352>>2]&127](l)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0<=(c[14987]|0)>>>0)break;c[14987]=m}else{if(c[E>>2]|0){if(a[H>>0]|0){l=0;break Fb}}else{do if(0<0|(0==0?(e[p>>1]|0)>>>0>>0:0))l=q;else{l=c[r>>2]|0;if(l|0){c[r>>2]=c[l>>2];c[t>>2]=(c[t>>2]|0)+1;rd=3229;break Gb}l=c[s>>2]|0;if(!l){l=u;break}c[s>>2]=c[l>>2];c[t>>2]=(c[t>>2]|0)+1;rd=3229;break Gb}while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(D,n,0)|0;rd=3229}while(0);if((rd|0)==3229){rd=0;if(!l){l=0;break}}ew(l|0,h|0,n|0)|0}while(0);c[w>>2]=l;c[v+(o<<4)+8>>2]=0;c[v+(o<<4)+4>>2]=0;o=o+1|0}while((o|0)<(b[z>>1]|0))}c[k+72>>2]=c[(c[D+16>>2]|0)+(A<<4)+12>>2];c[k+52>>2]=c[C+52>>2];c[y>>2]=1}}}}while(0);qi(D,F);break}case 276:{u=c[td+-56>>2]|0;i=td+-20|0;p=td+4|0;v=c[j>>2]|0;l=c[u+8>>2]|0;if(!l)k=u+12|0;else{m=c[v+16>>2]|0;k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0))break;else k=k+1|0;k=m+(k<<4)|0}r=bd(j,0,c[u+16>>2]|0,c[k>>2]|0)|0;Hb:do if(r|0?(on(j,r)|0)==0:0){k=(c[r+56>>2]|0)==0?((c[r+12>>2]|0)==0?0:39579):48814;if(k|0){rd=c[r>>2]|0;c[Ma>>2]=k;c[Ma+4>>2]=rd;cd(j,48828,Ma);break}l=c[r+72>>2]|0;m=c[v+16>>2]|0;if(!l)t=-1e6;else{k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0)){t=k;break}else k=k+1|0}s=c[m+(t<<4)>>2]|0;k=c[r>>2]|0;l=c[j>>2]|0;do if(((a[l+165>>0]|0)==0?(a[j+200>>0]|0)==0:0)?(zb=c[l+312>>2]|0,zb|0):0){k=$a[zb&127](c[l+316>>2]|0,26,s,k,0,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,Bb);c[j+12>>2]=23;break Hb}if((k|2|0)==2)if(!k)break;else break Hb;else{cd(j,39231,Db);c[j+12>>2]=1;break Hb}}while(0);q=qj(v,i)|0;if(q|0){qd=b[r+42>>1]|0;o=qd<<16>>16;Ib:do if(qd<<16>>16>0){h=c[r+4>>2]|0;n=d[208+(d[q>>0]|0)>>0]|0;k=0;do{m=c[h+(k<<4)>>2]|0;qd=a[m>>0]|0;l=(d[208+(qd&255)>>0]|0)-n|0;if(!(qd<<24>>24==0|(l|0)!=0)){i=q;do{m=m+1|0;i=i+1|0;qd=a[m>>0]|0;l=(d[208+(qd&255)>>0]|0)-(d[208+(d[i>>0]|0)>>0]|0)|0}while(!(qd<<24>>24==0|(l|0)!=0))}if(!l)break Ib;k=k+1|0}while((k|0)<(o|0))}else k=0;while(0);Jb:do if((k|0)!=(o|0)){l=c[j+116>>2]|0;a[((l|0)==0?j:l)+21>>0]=1;l=qj(v,p)|0;if(!l)l=0;else{h=a[880+(d[c[p>>2]>>0]|0)>>0]&-128&255;n=c[r>>2]|0;o=(t|0)==1;p=o&1;c[Wb>>2]=s;c[Wb+4>>2]=34585;c[Wb+8>>2]=s;c[Wb+12>>2]=n;c[Wb+16>>2]=k;c[Wb+20>>2]=l;c[Wb+24>>2]=h;c[Wb+28>>2]=p;c[Wb+32>>2]=n;Ak(j,48500,Wb);n=c[r>>2]|0;c[Xb>>2]=34585;c[Xb+4>>2]=s;c[Xb+8>>2]=n;c[Xb+12>>2]=k;c[Xb+16>>2]=l;c[Xb+20>>2]=h;Ak(j,48694,Xb);h=j+8|0;n=c[h>>2]|0;do if(!n){c[_b>>2]=s;c[_b+4>>2]=34585;c[_b+8>>2]=s;c[_b+12>>2]=p;Ak(j,47804,_b);if(o)break Jb}else{k=(c[c[(c[(c[j>>2]|0)+16>>2]|0)+(t<<4)+12>>2]>>2]|0)+1|0;m=n+108|0;i=c[m>>2]|0;if((c[n+112>>2]|0)>(i|0)){c[m>>2]=i+1;qd=c[n+104>>2]|0;a[qd+(i*20|0)>>0]=95;b[qd+(i*20|0)+2>>1]=0;c[qd+(i*20|0)+4>>2]=t;c[qd+(i*20|0)+8>>2]=1;c[qd+(i*20|0)+12>>2]=k;c[qd+(i*20|0)+16>>2]=0;a[qd+(i*20|0)+1>>0]=0}else Di(n,95,t,1,k)|0;Bk(c[h>>2]|0,t,0);if(o){c[$b>>2]=s;c[$b+4>>2]=34585;c[$b+8>>2]=s;c[$b+12>>2]=p;Ak(j,47804,$b);break Jb}else{Bk(c[h>>2]|0,1,0);c[ac>>2]=s;c[ac+4>>2]=34585;c[ac+8>>2]=s;c[ac+12>>2]=p;Ak(j,47804,ac);break}}while(0);c[bc>>2]=34585;c[bc+4>>2]=s;Ak(j,47948,bc)}}else{c[Ub>>2]=q;cd(j,31333,Ub);l=0}while(0);qi(v,u);k=(v|0)==0;do if(!k){if(c[v+480>>2]|0){Xd(v,q);break}j=q;if((c[v+304>>2]|0)>>>0<=j>>>0?(c[v+308>>2]|0)>>>0>j>>>0:0){j=v+300|0;c[q>>2]=c[j>>2];c[j>>2]=q}else rd=3281}else rd=3281;while(0);do if((rd|0)==3281)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{j=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}while(0);if(!l)break a;if(!k){if(c[v+480>>2]|0){Xd(v,l);break a}j=l;if((c[v+304>>2]|0)>>>0<=j>>>0?(c[v+308>>2]|0)>>>0>j>>>0:0){j=v+300|0;c[l>>2]=c[j>>2];c[j>>2]=l;break a}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break a}else{j=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break a}}}while(0);qi(v,u);break}case 277:{Aj(j,0);break}case 278:{Aj(j,td+4|0);break}case 279:{o=td+4|0;bj(j,td+-32|0,td+-20|0,0,0,1,c[td+-44>>2]|0);r=c[j+228>>2]|0;if(r|0){q=c[j>>2]|0;h=qj(q,o)|0;p=r+56|0;rd=c[p>>2]|0;m=(rd<<2)+8|0;i=c[j>>2]|0;if((rd+3|0)>=(c[i+116>>2]|0)){c[na>>2]=c[r>>2];cd(j,38221,na)}n=r+60|0;k=c[n>>2]|0;Kb:do if(!k){if(c[i+272>>2]|0){if(a[i+81>>0]|0){rd=3317;break}}else{do if(!(0<0|(0==0?(e[i+276>>1]|0)>>>0>>0:0))){l=i+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=i+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3316;break Kb}l=i+296|0;k=c[l>>2]|0;if(!k){k=i+292|0;break}else{c[l>>2]=c[k>>2];rd=i+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3316;break Kb}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(i,m,0)|0;rd=3316}else{rd=k;if((c[i+304>>2]|0)>>>0<=rd>>>0?(c[i+308>>2]|0)>>>0>rd>>>0:0){if(!(0<0|(0==0?(e[i+276>>1]|0)>>>0>>0:0))){rd=3326;break}k=Zd(i,k,m,0)|0;rd=3316;break}k=Zd(i,k,m,0)|0;rd=3316}while(0);if((rd|0)==3316)if(!k)rd=3317;else rd=3326;do if((rd|0)==3317){if(h|0){if(c[i+480>>2]|0){Xd(i,h);break}qd=h;if((c[i+304>>2]|0)>>>0<=qd>>>0?(c[i+308>>2]|0)>>>0>qd>>>0:0){qd=i+300|0;c[h>>2]=c[qd>>2];c[qd>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{qd=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-qd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}}else if((rd|0)==3326){pd=c[p>>2]|0;qd=pd+1|0;c[p>>2]=qd;c[k+(pd<<2)>>2]=h;c[k+(qd<<2)>>2]=0;c[n>>2]=k}while(0);qd=c[p>>2]|0;m=(qd<<2)+8|0;i=c[j>>2]|0;if((qd+3|0)>=(c[i+116>>2]|0)){c[Eb>>2]=c[r>>2];cd(j,38221,Eb)}k=c[n>>2]|0;Lb:do if(!k){if(c[i+272>>2]|0){if(a[i+81>>0]|0)break}else{do if(!(0<0|(0==0?(e[i+276>>1]|0)>>>0>>0:0))){k=i+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];Jb=i+284|0;c[Jb>>2]=(c[Jb>>2]|0)+1;Jb=l;rd=3346;break Lb}k=i+296|0;l=c[k>>2]|0;if(!l){k=i+292|0;break}else{c[k>>2]=c[l>>2];Jb=i+284|0;c[Jb>>2]=(c[Jb>>2]|0)+1;Jb=l;rd=3346;break Lb}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}Jb=_d(i,m,0)|0;rd=3346}else{rd=k;if((c[i+304>>2]|0)>>>0<=rd>>>0?(c[i+308>>2]|0)>>>0>rd>>>0:0){if(!(0<0|(0==0?(e[i+276>>1]|0)>>>0>>0:0))){rd=3347;break}Jb=Zd(i,k,m,0)|0;rd=3346;break}Jb=Zd(i,k,m,0)|0;rd=3346}while(0);if((rd|0)==3346?Jb|0:0){k=Jb;rd=3347}if((rd|0)==3347){pd=c[p>>2]|0;qd=pd+1|0;c[p>>2]=qd;c[k+(pd<<2)>>2]=0;c[k+(qd<<2)>>2]=0;c[n>>2]=k}i=c[r>>2]|0;Mb:do if(!i)h=0;else{h=(Eu(i)|0)+1|0;Nb:do if(!q){qd=Sv(h|0,0,-1,-1)|0;pd=L()|0;if(pd>>>0>0|(pd|0)==0&qd>>>0>2147483390){h=0;break Mb}if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](h)|0;rd=3373;break}k=Wa[c[29356>>2]&127](h)|0;if((c[14985]|0)>>>0>>0)c[14985]=h;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k){h=0;break Mb}l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0){h=0;break Mb}}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){l=q+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=q+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3373;break Nb}l=q+296|0;k=c[l>>2]|0;if(!k){k=q+292|0;break}else{c[l>>2]=c[k>>2];rd=q+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3373;break Nb}}else k=q+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(q,h,0)|0;rd=3373}while(0);if((rd|0)==3373)if(!k){h=0;break}ew(k|0,i|0,h|0)|0;h=k}while(0);rd=c[p>>2]|0;m=(rd<<2)+8|0;i=c[j>>2]|0;if((rd+3|0)>=(c[i+116>>2]|0)){c[ic>>2]=c[r>>2];cd(j,38221,ic)}k=c[n>>2]|0;Ob:do if(!k){if(c[i+272>>2]|0){if(a[i+81>>0]|0){rd=3395;break}}else{do if(!(0<0|(0==0?(e[i+276>>1]|0)>>>0>>0:0))){l=i+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=i+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3394;break Ob}l=i+296|0;k=c[l>>2]|0;if(!k){k=i+292|0;break}else{c[l>>2]=c[k>>2];rd=i+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3394;break Ob}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(i,m,0)|0;rd=3394}else{rd=k;if((c[i+304>>2]|0)>>>0<=rd>>>0?(c[i+308>>2]|0)>>>0>rd>>>0:0){if(!(0<0|(0==0?(e[i+276>>1]|0)>>>0>>0:0))){rd=3404;break}k=Zd(i,k,m,0)|0;rd=3394;break}k=Zd(i,k,m,0)|0;rd=3394}while(0);if((rd|0)==3394)if(!k)rd=3395;else rd=3404;do if((rd|0)==3395){if(h|0){if(c[i+480>>2]|0){Xd(i,h);break}rd=h;if((c[i+304>>2]|0)>>>0<=rd>>>0?(c[i+308>>2]|0)>>>0>rd>>>0:0){rd=i+300|0;c[h>>2]=c[rd>>2];c[rd>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{rd=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}}else if((rd|0)==3404){qd=c[p>>2]|0;rd=qd+1|0;c[p>>2]=rd;c[k+(qd<<2)>>2]=h;c[k+(rd<<2)>>2]=0;c[n>>2]=k}while(0);c[j+184>>2]=(c[o>>2]|0)+(c[td+8>>2]|0)-(c[j+180>>2]|0);h=c[n>>2]|0;if(h|0){m=c[r+72>>2]|0;if(!m)k=-1e6;else{l=c[q+16>>2]|0;k=0;while(1)if((c[l+(k<<4)+12>>2]|0)==(m|0))break;else k=k+1|0}i=c[r>>2]|0;l=c[h>>2]|0;m=c[j>>2]|0;k=c[(c[m+16>>2]|0)+(k<<4)>>2]|0;if(((a[m+165>>0]|0)==0?(a[j+200>>0]|0)==0:0)?(zc=c[m+312>>2]|0,zc|0):0){k=$a[zc&127](c[m+316>>2]|0,29,i,l,k,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,Bc);c[j+12>>2]=23;break a}if((k|2|0)!=2){cd(j,39231,Cc);c[j+12>>2]=1}}}}break}case 280:{p=j+244|0;n=c[p>>2]|0;do if(n|0?(ob=c[j+228>>2]|0,ob|0):0){o=c[j+248>>2]|0;m=c[j>>2]|0;i=Sv(o|0,((o|0)<0)<<31>>31|0,1,0)|0;h=L()|0;Pb:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=3428;else n=0;else{do if(!(h>>>0>0|((h|0)==0?i>>>0>(e[m+276>>1]|0)>>>0:0))){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3429;break Pb}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3429;break Pb}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=3428}while(0);if((rd|0)==3428){k=_d(m,i,h)|0;rd=3429}if((rd|0)==3429)if(!k)n=0;else{ew(k|0,n|0,o|0)|0;a[k+o>>0]=0;n=k}o=ob+56|0;qd=c[o>>2]|0;i=(qd<<2)+8|0;h=c[j>>2]|0;if((qd+3|0)>=(c[h+116>>2]|0)){c[mb>>2]=c[ob>>2];cd(j,38221,mb)}m=ob+60|0;k=c[m>>2]|0;Qb:do if(!k){if(c[h+272>>2]|0){if(a[h+81>>0]|0)break}else{do if(!(0<0|(0==0?(e[h+276>>1]|0)>>>0>>0:0))){k=h+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];Fb=h+284|0;c[Fb>>2]=(c[Fb>>2]|0)+1;Fb=l;rd=3450;break Qb}k=h+296|0;l=c[k>>2]|0;if(!l){k=h+292|0;break}else{c[k>>2]=c[l>>2];Fb=h+284|0;c[Fb>>2]=(c[Fb>>2]|0)+1;Fb=l;rd=3450;break Qb}}else k=h+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}Fb=_d(h,i,0)|0;rd=3450}else{rd=k;if((c[h+304>>2]|0)>>>0<=rd>>>0?(c[h+308>>2]|0)>>>0>rd>>>0:0){if(!(0<0|(0==0?(e[h+276>>1]|0)>>>0>>0:0))){rd=3460;break}Fb=Zd(h,k,i,0)|0;rd=3450;break}Fb=Zd(h,k,i,0)|0;rd=3450}while(0);if((rd|0)==3450?Fb|0:0){k=Fb;rd=3460}if((rd|0)==3460){qd=c[o>>2]|0;rd=qd+1|0;c[o>>2]=rd;c[k+(qd<<2)>>2]=n;c[k+(rd<<2)>>2]=0;c[m>>2]=k;break}if(n|0){if(c[h+480>>2]|0){Xd(h,n);break}rd=n;if((c[h+304>>2]|0)>>>0<=rd>>>0?(c[h+308>>2]|0)>>>0>rd>>>0:0){rd=h+300|0;c[n>>2]=c[rd>>2];c[rd>>2]=n;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{rd=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}}while(0);c[p>>2]=0;c[j+248>>2]=0;break}case 283:case 282:case 281:{k=j+244|0;l=c[k>>2]|0;m=c[td+4>>2]|0;if(!l){c[k>>2]=m;k=c[td+8>>2]|0}else k=m+(c[td+8>>2]|0)-l|0;c[j+248>>2]=k;break}case 285:case 284:{k=c[td+4>>2]|0;if(k|0){rd=j+264|0;c[k+4>>2]=c[rd>>2];c[rd>>2]=k;c[j+268>>2]=k}break}case 286:{rd=td+-56|0;j=Bj(j,0,rd,c[td+-44>>2]|0,c[td+-8>>2]|0)|0;c[rd>>2]=j;break}case 287:{rd=td+-80|0;j=Bj(j,c[rd>>2]|0,td+-56|0,c[td+-44>>2]|0,c[td+-8>>2]|0)|0;c[rd>>2]=j;break}case 314:{m=c[j>>2]|0;Rb:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](92)|0;rd=3591;break}k=Wa[c[29356>>2]&127](92)|0;if((c[14985]|0)>>>0<92)c[14985]=92;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){rd=c[14978]|0;qd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;pd=L()|0;c[14768]=((pd|0)<0|(pd|0)==0&qd>>>0<=rd>>>0)&1}l=Wa[c[29340>>2]&127](k)|0;if(l){k=Wa[c[29352>>2]&127](l)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;rd=3592}else rd=3592}else rd=3607}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0){rd=3607;break}}else{do if((e[m+276>>1]|0)>=92){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3591;break Rb}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3591;break Rb}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,92,0)|0;rd=3591}while(0);if((rd|0)==3591)if(!k)rd=3607;else{l=k;rd=3592}if((rd|0)==3592){I=l;J=I+92|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));i=c[j>>2]|0;o=c[td+4>>2]|0;p=c[td+8>>2]|0;Sb:do if(o){h=Sv(p|0,0,1,0)|0;n=L()|0;Tb:do if(c[i+272>>2]|0)if(!(a[i+81>>0]|0))rd=3603;else{k=0;break Sb}else{do if(0<0|(0==0?p>>>0<(e[i+276>>1]|0)>>>0:0)){m=i+300|0;k=c[m>>2]|0;if(k|0){c[m>>2]=c[k>>2];j=i+284|0;c[j>>2]=(c[j>>2]|0)+1;break Tb}m=i+296|0;k=c[m>>2]|0;if(!k){k=i+292|0;break}else{c[m>>2]=c[k>>2];j=i+284|0;c[j>>2]=(c[j>>2]|0)+1;break Tb}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=3603}while(0);if((rd|0)==3603)k=_d(i,h,n)|0;if(k){ew(k|0,o|0,p|0)|0;a[k+p>>0]=0}else k=0}else k=0;while(0);c[l>>2]=k;c[l+36>>2]=c[td+-20>>2];k=l}else if((rd|0)==3607){k=c[td+-20>>2]|0;if(!k)k=0;else{ni(c[j>>2]|0,k);k=0}}c[td+-20>>2]=k;break}case 289:{qd=td+4|0;rd=td+-20|0;Cj(j,c[qd>>2]|0,c[rd>>2]|0);c[(c[qd>>2]|0)+32>>2]=c[rd>>2];c[rd>>2]=c[qd>>2];break}case 290:{p=td+-8|0;if(!(c[p>>2]|0))k=0;else{m=c[j>>2]|0;n=c[td+-44>>2]|0;o=c[td+-40>>2]|0;Ub:do if(n){i=Sv(o|0,0,1,0)|0;h=L()|0;Vb:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=3483;else{k=0;break Ub}else{do if(0<0|(0==0?o>>>0<(e[m+276>>1]|0)>>>0:0)){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];j=m+284|0;c[j>>2]=(c[j>>2]|0)+1;break Vb}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];j=m+284|0;c[j>>2]=(c[j>>2]|0)+1;break Vb}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=3483}while(0);if((rd|0)==3483)k=_d(m,i,h)|0;if(k){ew(k|0,n|0,o|0)|0;a[k+o>>0]=0}else k=0}else k=0;while(0);c[c[p>>2]>>2]=k;k=c[p>>2]|0}c[td+-44>>2]=k;break}case 291:{k=c[td+4>>2]|0;l=c[td+-20>>2]|0;m=c[td+-8>>2]|0;if(!k){if(l|0)ri(c[j>>2]|0,l);if(m|0)ri(c[j>>2]|0,m)}else{c[k+8>>2]=l;c[k+12>>2]=m}c[td+-44>>2]=k;break}case 292:{p=c[td+4>>2]|0;k=c[td+-20>>2]|0;l=c[td+-8>>2]|0;q=td+-56|0;if(!p){if(k|0)ri(c[j>>2]|0,k);if(l|0)ri(c[j>>2]|0,l)}else{c[p+8>>2]=k;c[p+12>>2]=l;m=c[j>>2]|0;n=c[q>>2]|0;o=c[td+-52>>2]|0;Wb:do if(n){i=Sv(o|0,0,1,0)|0;h=L()|0;Xb:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=3507;else{k=0;break Wb}else{do if(0<0|(0==0?o>>>0<(e[m+276>>1]|0)>>>0:0)){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];j=m+284|0;c[j>>2]=(c[j>>2]|0)+1;break Xb}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];j=m+284|0;c[j>>2]=(c[j>>2]|0)+1;break Xb}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=3507}while(0);if((rd|0)==3507)k=_d(m,i,h)|0;if(k){ew(k|0,n|0,o|0)|0;a[k+o>>0]=0}else k=0}else k=0;while(0);c[p+4>>2]=k}c[q>>2]=p;break}case 293:{k=c[td+4>>2]|0;l=c[td+-8>>2]|0;if(!k){if(l|0)ri(c[j>>2]|0,l)}else{c[k+8>>2]=0;c[k+12>>2]=l}c[td+-32>>2]=k;break}case 294:{p=c[td+4>>2]|0;k=c[td+-8>>2]|0;q=td+-44|0;if(!p){if(k|0)ri(c[j>>2]|0,k)}else{c[p+8>>2]=0;c[p+12>>2]=k;m=c[j>>2]|0;n=c[q>>2]|0;o=c[td+-40>>2]|0;Yb:do if(n){i=Sv(o|0,0,1,0)|0;h=L()|0;Zb:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=3533;else{k=0;break Yb}else{do if(0<0|(0==0?o>>>0<(e[m+276>>1]|0)>>>0:0)){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];j=m+284|0;c[j>>2]=(c[j>>2]|0)+1;break Zb}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];j=m+284|0;c[j>>2]=(c[j>>2]|0)+1;break Zb}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=3533}while(0);if((rd|0)==3533)k=_d(m,i,h)|0;if(k){ew(k|0,n|0,o|0)|0;a[k+o>>0]=0}else k=0}else k=0;while(0);c[p+4>>2]=k}c[q>>2]=p;break}case 313:{rd=c[td+-8>>2]|0;j=td+-44|0;c[rd+36>>2]=c[j>>2];c[j>>2]=rd;break}case 296:{p=c[td+4>>2]|0;q=td+-8|0;if(p|0){c[p+8>>2]=0;c[p+12>>2]=0;m=c[j>>2]|0;n=c[q>>2]|0;o=c[td+-4>>2]|0;_b:do if(n){i=Sv(o|0,0,1,0)|0;h=L()|0;$b:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=3552;else{k=0;break _b}else{do if(0<0|(0==0?o>>>0<(e[m+276>>1]|0)>>>0:0)){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];j=m+284|0;c[j>>2]=(c[j>>2]|0)+1;break $b}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];j=m+284|0;c[j>>2]=(c[j>>2]|0)+1;break $b}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=3552}while(0);if((rd|0)==3552)k=_d(m,i,h)|0;if(k){ew(k|0,n|0,o|0)|0;a[k+o>>0]=0}else k=0}else k=0;while(0);c[p+4>>2]=k}c[q>>2]=p;break}case 297:{j=Dj(j,0,87,0,82,0,0)|0;c[td+16>>2]=j;break}case 298:{rd=td+-20|0;j=Dj(j,c[rd>>2]|0,c[td+-8>>2]|0,c[td+-4>>2]|0,82,0,a[td+4>>0]|0)|0;c[rd>>2]=j;break}case 299:{rd=td+-56|0;j=Dj(j,c[rd>>2]|0,c[td+-32>>2]|0,c[td+-28>>2]|0,c[td+-8>>2]|0,c[td+-4>>2]|0,a[td+4>>0]|0)|0;c[rd>>2]=j;break}case 312:{c[td+-8>>2]=c[td+4>>2];break}case 311:{a[td+4>>0]=b[td+2>>1];break}case 306:case 304:case 302:{c[td+-8>>2]=e[td+-10>>1];c[td+-4>>2]=0;break}case 305:{rd=td+-8|0;j=c[rd>>2]|0;c[rd>>2]=e[td+2>>1];c[td+-4>>2]=j;break}case 307:{a[td+16>>0]=0;break}case 308:{a[td+-8>>0]=a[td+4>>0]|0;break}case 310:case 309:{a[td+-8>>0]=b[td+-10>>1];break}default:{}}while(0);j=b[17152+(g<<1)>>1]|0;sd=sd<<24>>24;g=b[11376+((b[18656+(e[td+(sd*12|0)>>1]<<1)>>1]|0)+(j&65535)<<1)>>1]|0;sd=sd+1|0;rd=td+(sd*12|0)|0;c[f>>2]=rd;b[rd>>1]=g;b[td+(sd*12|0)+2>>1]=j;f=g;Ra=ud;return f|0} -function zj(f,g,h){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,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;I=Ra;Ra=Ra+64|0;B=I+48|0;A=I+40|0;s=I+32|0;r=I+24|0;q=I+16|0;p=I+8|0;u=I;F=I+52|0;G=c[f>>2]|0;a:do if(!(a[G+165>>0]|0)){n=f+4|0;o=G+24|0;k=(c[o>>2]&1|0)==0;l=G+16|0;C=c[(c[l>>2]|0)+12>>2]|0;a[G+78>>0]=a[C+77>>0]|0;if(!((b[C+78>>1]&1)==0?(i=eh(G,0,n,0)|0,(i|0)!=0):0))H=4;b:do if((H|0)==4){i=c[G+20>>2]|0;if((i|0)>1)do{j=i;i=i+-1|0;if((b[(c[(c[l>>2]|0)+(i<<4)+12>>2]|0)+78>>1]&1)==0?(m=eh(G,i,n,0)|0,m|0):0){i=m;break b}}while((j|0)>2);if(k)c[o>>2]=c[o>>2]&-2;if(!(a[G+89>>0]|0))break a;c[o>>2]=c[o>>2]|16;break a}while(0);c[f+12>>2]=i;f=f+36|0;c[f>>2]=(c[f>>2]|0)+1;Ra=I;return}while(0);c:do if(!g){n=G+20|0;if((c[n>>2]|0)>0){o=f+116|0;p=f+40|0;q=f+44|0;r=f+8|0;s=f+23|0;m=0;do{d:do if((m|0)!=1){l=c[(c[(c[f>>2]|0)+16>>2]|0)+(m<<4)+12>>2]|0;k=c[o>>2]|0;k=(k|0)==0?f:k;i=k+84|0;g=c[i>>2]|0;j=1<>2]=g|j;g=k+80|0;c[g>>2]=c[g>>2]|j;g=c[p>>2]|0;c[p>>2]=g+3;hn(f,m,g,0,0);j=(c[q>>2]|0)+1|0;k=c[p>>2]|0;i=c[l+16>>2]|0;if(i|0)do{jn(f,c[i+8>>2]|0,0,g,j,k);i=c[i>>2]|0}while((i|0)!=0);i=c[r>>2]|0;if(!i){j=c[f>>2]|0;if((c[o>>2]|0)==0?(b[j+76>>1]&8)==0:0)a[s>>0]=1;e:do if(c[j+272>>2]|0)if(!(a[j+81>>0]|0))H=37;else break d;else{do if((e[j+276>>1]|0)>=224){g=j+300|0;i=c[g>>2]|0;if(i|0){c[g>>2]=c[i>>2];F=j+284|0;c[F>>2]=(c[F>>2]|0)+1;break e}g=j+296|0;i=c[g>>2]|0;if(!i){i=j+292|0;break}else{c[g>>2]=c[i>>2];F=j+284|0;c[F>>2]=(c[F>>2]|0)+1;break e}}else i=j+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;H=37}while(0);if((H|0)==37){H=0;i=_d(j,224,0)|0}if(!i)break;g=i+104|0;l=g+120|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(l|0));c[i>>2]=j;g=j+4|0;j=c[g>>2]|0;if(j|0)c[j+4>>2]=i;c[i+8>>2]=j;c[i+4>>2]=0;c[g>>2]=i;c[i+20>>2]=381479589;c[i+12>>2]=f;c[r>>2]=i;Di(i,61,0,1,0)|0}g=i+108|0;j=c[g>>2]|0;if((c[i+112>>2]|0)>(j|0)){c[g>>2]=j+1;F=c[i+104>>2]|0;a[F+(j*20|0)>>0]=-114;b[F+(j*20|0)+2>>1]=0;c[F+(j*20|0)+4>>2]=m;c[F+(j*20|0)+8>>2]=0;c[F+(j*20|0)+12>>2]=0;c[F+(j*20|0)+16>>2]=0;a[F+(j*20|0)+1>>0]=0;break}else{Di(i,142,m,0,0)|0;break}}while(0);m=m+1|0}while((m|0)<(c[n>>2]|0))}}else{j=h+4|0;do if(!(c[j>>2]|0)){C=wk(G,g)|0;i=c[f>>2]|0;if((C|0)<=-1){if(!(c[j>>2]|0)){i=d[i+164>>0]|0;break}if(a[i+165>>0]|0){cd(f,39404,r);break c}i=wk(i,g)|0;if((i|0)>=0){g=h;break}c[s>>2]=g;cd(f,39421,s);break c}p=c[(c[i+16>>2]|0)+(C<<4)+12>>2]|0;q=f+116|0;o=c[q>>2]|0;o=(o|0)==0?f:o;i=o+84|0;g=c[i>>2]|0;n=1<>2]=g|n,(C|0)==1):0)?(x=c[o>>2]|0,t=x+16|0,(c[(c[t>>2]|0)+20>>2]|0)==0):0)?(a[o+199>>0]|0)==0:0){i=Pe(c[x>>2]|0,0,x,F,0,542)|0;if(i|0){cd(o,32157,u);c[o+12>>2]=i;break}F=c[F>>2]|0;c[(c[t>>2]|0)+20>>2]=F;i=c[x+92>>2]|0;j=c[F+4>>2]|0;c[j+4>>2]=c[F>>2];if(!(b[j+22>>1]&2)){k=j+32|0;l=j+36|0;m=(c[k>>2]|0)-(c[l>>2]|0)|0;if(((i+-512|0)>>>0<65025?(i+-1&i|0)==0:0)?(c[k>>2]=i,w=j+80|0,v=c[w>>2]|0,v|0):0){g=v+-4|0;c[w>>2]=g;i=g;do if((c[14816]|0)>>>0<=i>>>0)if((c[14817]|0)>>>0>i>>>0){c[14979]=(c[14979]|0)+-1;c[g>>2]=c[14819];c[14819]=g;F=(c[14820]|0)+1|0;c[14820]=F;c[14821]=(F|0)<(c[14815]|0)&1;break}else{i=Wa[c[29352>>2]&127](g)|0;H=63;break}else{i=Wa[c[29352>>2]&127](g)|0;H=63}while(0);do if((H|0)==63){c[14980]=(c[14980]|0)-i;if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{F=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[w>>2]=0}F=Se(c[j>>2]|0,k,m)|0;c[l>>2]=(c[k>>2]|0)-(m&65535);if((F|0)==7){i=x+81|0;do if((a[i>>0]|0)==0?(a[x+82>>0]|0)==0:0){a[i>>0]=1;if((c[x+180>>2]|0)>0)c[x+264>>2]=1;i=x+272|0;c[i>>2]=(c[i>>2]|0)+1;i=c[x+236>>2]|0;if(!i)break;c[i+12>>2]=7}while(0);break}}}while(0);k=o+80|0;c[k>>2]=c[k>>2]|n;k=f+40|0;g=c[k>>2]|0;c[k>>2]=g+3;hn(f,C,g,0,0);j=(c[f+44>>2]|0)+1|0;k=c[k>>2]|0;i=c[p+16>>2]|0;if(i|0)do{jn(f,c[i+8>>2]|0,0,g,j,k);i=c[i>>2]|0}while((i|0)!=0);k=f+8|0;i=c[k>>2]|0;if(!i){j=c[f>>2]|0;if((c[q>>2]|0)==0?(b[j+76>>1]&8)==0:0)a[f+23>>0]=1;f:do if(c[j+272>>2]|0)if(!(a[j+81>>0]|0))H=93;else break c;else{do if((e[j+276>>1]|0)>=224){g=j+300|0;i=c[g>>2]|0;if(i|0){c[g>>2]=c[i>>2];F=j+284|0;c[F>>2]=(c[F>>2]|0)+1;break f}g=j+296|0;i=c[g>>2]|0;if(!i){i=j+292|0;break}else{c[g>>2]=c[i>>2];F=j+284|0;c[F>>2]=(c[F>>2]|0)+1;break f}}else i=j+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;H=93}while(0);if((H|0)==93)i=_d(j,224,0)|0;if(!i)break c;g=i+104|0;l=g+120|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(l|0));c[i>>2]=j;g=j+4|0;j=c[g>>2]|0;if(j|0)c[j+4>>2]=i;c[i+8>>2]=j;c[i+4>>2]=0;c[g>>2]=i;c[i+20>>2]=381479589;c[i+12>>2]=f;c[k>>2]=i;Di(i,61,0,1,0)|0}g=i+108|0;j=c[g>>2]|0;if((c[i+112>>2]|0)>(j|0)){c[g>>2]=j+1;F=c[i+104>>2]|0;a[F+(j*20|0)>>0]=-114;b[F+(j*20|0)+2>>1]=0;c[F+(j*20|0)+4>>2]=C;c[F+(j*20|0)+8>>2]=0;c[F+(j*20|0)+12>>2]=0;c[F+(j*20|0)+16>>2]=0;a[F+(j*20|0)+1>>0]=0;break c}else{Di(i,142,C,0,0)|0;break c}}else{i=c[f>>2]|0;if(a[i+165>>0]|0){cd(f,39404,p);break c}i=wk(i,g)|0;if((i|0)<0){c[q>>2]=g;cd(f,39421,q);break c}else g=h}while(0);if(!(c[j>>2]|0))i=0;else i=c[(c[G+16>>2]|0)+(i<<4)>>2]|0;t=qj(G,g)|0;if(t|0){s=hi(G,t,i)|0;g:do if(!s){q=bd(f,0,t,i)|0;if(q|0){g=c[q+72>>2]|0;if(!g)s=-1e6;else{j=c[(c[f>>2]|0)+16>>2]|0;i=0;while(1)if((c[j+(i<<4)+12>>2]|0)==(g|0)){s=i;break}else i=i+1|0}r=f+116|0;p=c[r>>2]|0;p=(p|0)==0?f:p;i=p+84|0;g=c[i>>2]|0;o=1<>2]=g|o,(s|0)==1):0)?(E=c[p>>2]|0,z=E+16|0,(c[(c[z>>2]|0)+20>>2]|0)==0):0)?(a[p+199>>0]|0)==0:0){i=Pe(c[E>>2]|0,0,E,F,0,542)|0;if(i|0){cd(p,32157,B);c[p+12>>2]=i;break}F=c[F>>2]|0;c[(c[z>>2]|0)+20>>2]=F;i=c[E+92>>2]|0;k=c[F+4>>2]|0;c[k+4>>2]=c[F>>2];if(!(b[k+22>>1]&2)){l=k+32|0;m=k+36|0;n=(c[l>>2]|0)-(c[m>>2]|0)|0;do if((i+-512|0)>>>0<65025){if(i+-1&i|0)break;c[l>>2]=i;j=k+80|0;i=c[j>>2]|0;if(!i)break;g=i+-4|0;c[j>>2]=g;i=g;do if((c[14816]|0)>>>0<=i>>>0)if((c[14817]|0)>>>0>i>>>0){c[14979]=(c[14979]|0)+-1;c[g>>2]=c[14819];c[14819]=g;F=(c[14820]|0)+1|0;c[14820]=F;c[14821]=(F|0)<(c[14815]|0)&1;break}else{i=Wa[c[29352>>2]&127](g)|0;H=187;break}else{i=Wa[c[29352>>2]&127](g)|0;H=187}while(0);do if((H|0)==187){c[14980]=(c[14980]|0)-i;if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{F=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[j>>2]=0}while(0);F=Se(c[k>>2]|0,l,n)|0;c[m>>2]=(c[l>>2]|0)-(n&65535);if((F|0)==7){i=E+81|0;do if(!(a[i>>0]|0)){if(a[E+82>>0]|0)break;a[i>>0]=1;if((c[E+180>>2]|0)>0)c[E+264>>2]=1;i=E+272|0;c[i>>2]=(c[i>>2]|0)+1;i=c[E+236>>2]|0;if(!i)break;c[i+12>>2]=7}while(0);break}}}while(0);k=p+80|0;c[k>>2]=c[k>>2]|o;k=f+40|0;i=c[k>>2]|0;c[k>>2]=i+3;hn(f,s,i,c[q>>2]|0,38087);jn(f,q,0,i,(c[f+44>>2]|0)+1|0,c[k>>2]|0);k=f+8|0;i=c[k>>2]|0;if(!i){j=c[f>>2]|0;if((c[r>>2]|0)==0?(b[j+76>>1]&8)==0:0)a[f+23>>0]=1;h:do if(c[j+272>>2]|0)if(!(a[j+81>>0]|0))H=214;else break g;else{do if((e[j+276>>1]|0)>=224){g=j+300|0;i=c[g>>2]|0;if(i|0){c[g>>2]=c[i>>2];F=j+284|0;c[F>>2]=(c[F>>2]|0)+1;break h}g=j+296|0;i=c[g>>2]|0;if(!i){i=j+292|0;break}else{c[g>>2]=c[i>>2];F=j+284|0;c[F>>2]=(c[F>>2]|0)+1;break h}}else i=j+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;H=214}while(0);if((H|0)==214)i=_d(j,224,0)|0;if(!i)break;g=i+104|0;l=g+120|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(l|0));c[i>>2]=j;g=j+4|0;j=c[g>>2]|0;if(j|0)c[j+4>>2]=i;c[i+8>>2]=j;c[i+4>>2]=0;c[g>>2]=i;c[i+20>>2]=381479589;c[i+12>>2]=f;c[k>>2]=i;Di(i,61,0,1,0)|0}g=i+108|0;j=c[g>>2]|0;if((c[i+112>>2]|0)>(j|0)){c[g>>2]=j+1;F=c[i+104>>2]|0;a[F+(j*20|0)>>0]=-114;b[F+(j*20|0)+2>>1]=0;c[F+(j*20|0)+4>>2]=s;c[F+(j*20|0)+8>>2]=0;c[F+(j*20|0)+12>>2]=0;c[F+(j*20|0)+16>>2]=0;a[F+(j*20|0)+1>>0]=0;break}else{Di(i,142,s,0,0)|0;break}}}else{q=c[s+12>>2]|0;g=c[q+72>>2]|0;if(!g)h=-1e6;else{j=c[(c[f>>2]|0)+16>>2]|0;i=0;while(1)if((c[j+(i<<4)+12>>2]|0)==(g|0)){h=i;break}else i=i+1|0}r=f+116|0;p=c[r>>2]|0;p=(p|0)==0?f:p;i=p+84|0;g=c[i>>2]|0;o=1<>2]=g|o,(h|0)==1):0)?(D=c[p>>2]|0,y=D+16|0,(c[(c[y>>2]|0)+20>>2]|0)==0):0)?(a[p+199>>0]|0)==0:0){i=Pe(c[D>>2]|0,0,D,F,0,542)|0;if(i|0){cd(p,32157,A);c[p+12>>2]=i;break}F=c[F>>2]|0;c[(c[y>>2]|0)+20>>2]=F;i=c[D+92>>2]|0;k=c[F+4>>2]|0;c[k+4>>2]=c[F>>2];if(!(b[k+22>>1]&2)){l=k+32|0;m=k+36|0;n=(c[l>>2]|0)-(c[m>>2]|0)|0;do if((i+-512|0)>>>0<65025?(i+-1&i|0)==0:0){c[l>>2]=i;j=k+80|0;i=c[j>>2]|0;if(!i)break;g=i+-4|0;c[j>>2]=g;i=g;do if((c[14816]|0)>>>0<=i>>>0)if((c[14817]|0)>>>0>i>>>0){c[14979]=(c[14979]|0)+-1;c[g>>2]=c[14819];c[14819]=g;F=(c[14820]|0)+1|0;c[14820]=F;c[14821]=(F|0)<(c[14815]|0)&1;break}else{i=Wa[c[29352>>2]&127](g)|0;H=133;break}else{i=Wa[c[29352>>2]&127](g)|0;H=133}while(0);do if((H|0)==133){c[14980]=(c[14980]|0)-i;if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{F=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[j>>2]=0}while(0);F=Se(c[k>>2]|0,l,n)|0;c[m>>2]=(c[l>>2]|0)-(n&65535);if((F|0)==7){i=D+81|0;do if(!(a[i>>0]|0)){if(a[D+82>>0]|0)break;a[i>>0]=1;if((c[D+180>>2]|0)>0)c[D+264>>2]=1;i=D+272|0;c[i>>2]=(c[i>>2]|0)+1;i=c[D+236>>2]|0;if(!i)break;c[i+12>>2]=7}while(0);break}}}while(0);k=p+80|0;c[k>>2]=c[k>>2]|o;k=f+40|0;i=c[k>>2]|0;c[k>>2]=i+3;hn(f,h,i,c[s>>2]|0,38091);jn(f,q,s,i,(c[f+44>>2]|0)+1|0,c[k>>2]|0);k=f+8|0;i=c[k>>2]|0;if(!i){j=c[f>>2]|0;if((c[r>>2]|0)==0?(b[j+76>>1]&8)==0:0)a[f+23>>0]=1;i:do if(c[j+272>>2]|0)if(!(a[j+81>>0]|0))H=160;else break g;else{do if((e[j+276>>1]|0)>=224){g=j+300|0;i=c[g>>2]|0;if(i|0){c[g>>2]=c[i>>2];F=j+284|0;c[F>>2]=(c[F>>2]|0)+1;break i}g=j+296|0;i=c[g>>2]|0;if(!i){i=j+292|0;break}else{c[g>>2]=c[i>>2];F=j+284|0;c[F>>2]=(c[F>>2]|0)+1;break i}}else i=j+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;H=160}while(0);if((H|0)==160)i=_d(j,224,0)|0;if(!i)break;g=i+104|0;l=g+120|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(l|0));c[i>>2]=j;g=j+4|0;j=c[g>>2]|0;if(j|0)c[j+4>>2]=i;c[i+8>>2]=j;c[i+4>>2]=0;c[g>>2]=i;c[i+20>>2]=381479589;c[i+12>>2]=f;c[k>>2]=i;Di(i,61,0,1,0)|0}g=i+108|0;j=c[g>>2]|0;if((c[i+112>>2]|0)>(j|0)){c[g>>2]=j+1;F=c[i+104>>2]|0;a[F+(j*20|0)>>0]=-114;b[F+(j*20|0)+2>>1]=0;c[F+(j*20|0)+4>>2]=h;c[F+(j*20|0)+8>>2]=0;c[F+(j*20|0)+12>>2]=0;c[F+(j*20|0)+16>>2]=0;a[F+(j*20|0)+1>>0]=0;break}else{Di(i,142,h,0,0)|0;break}}while(0);if(G|0){if(c[G+480>>2]|0){Xd(G,t);break}F=t;if((c[G+304>>2]|0)>>>0<=F>>>0?(c[G+308>>2]|0)>>>0>F>>>0:0){F=G+300|0;c[t>>2]=c[F>>2];c[F>>2]=t;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{F=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}}while(0);if(a[G+90>>0]|0){Ra=I;return}k=f+8|0;i=c[k>>2]|0;if(!i){j=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[j+76>>1]&8)==0:0)a[f+23>>0]=1;j:do if(c[j+272>>2]|0)if(!(a[j+81>>0]|0))H=246;else{Ra=I;return}else{do if((e[j+276>>1]|0)>=224){g=j+300|0;i=c[g>>2]|0;if(i|0){c[g>>2]=c[i>>2];G=j+284|0;c[G>>2]=(c[G>>2]|0)+1;break j}g=j+296|0;i=c[g>>2]|0;if(!i){i=j+292|0;break}else{c[g>>2]=c[i>>2];G=j+284|0;c[G>>2]=(c[G>>2]|0)+1;break j}}else i=j+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;H=246}while(0);if((H|0)==246)i=_d(j,224,0)|0;if(!i){Ra=I;return}g=i+104|0;l=g+120|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(l|0));c[i>>2]=j;g=j+4|0;j=c[g>>2]|0;if(j|0)c[j+4>>2]=i;c[i+8>>2]=j;c[i+4>>2]=0;c[g>>2]=i;c[i+20>>2]=381479589;c[i+12>>2]=f;c[k>>2]=i;Di(i,61,0,1,0)|0}g=i+108|0;j=c[g>>2]|0;if((c[i+112>>2]|0)>(j|0)){c[g>>2]=j+1;g=c[i+104>>2]|0;a[g+(j*20|0)>>0]=-98;g=g+(j*20|0)+1|0;l=g+19|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(l|0));Ra=I;return}else{Di(i,158,0,0,0)|0;Ra=I;return}}function Aj(d,f){d=d|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;w=Ra;Ra=Ra+48|0;t=w+40|0;s=w+16|0;q=w+8|0;n=w;o=d+228|0;u=c[o>>2]|0;v=c[d>>2]|0;if(!u){Ra=w;return}p=d+244|0;m=c[p>>2]|0;do if(m){l=c[d+248>>2]|0;j=Sv(l|0,((l|0)<0)<<31>>31|0,1,0)|0;k=L()|0;a:do if(c[v+272>>2]|0)if(!(a[v+81>>0]|0))r=14;else m=0;else{do if(!(k>>>0>0|((k|0)==0?j>>>0>(e[v+276>>1]|0)>>>0:0))){i=v+300|0;g=c[i>>2]|0;if(g|0){c[i>>2]=c[g>>2];r=v+284|0;c[r>>2]=(c[r>>2]|0)+1;r=15;break a}i=v+296|0;g=c[i>>2]|0;if(!g){g=v+292|0;break}else{c[i>>2]=c[g>>2];r=v+284|0;c[r>>2]=(c[r>>2]|0)+1;r=15;break a}}else g=v+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1;r=14}while(0);if((r|0)==14){g=_d(v,j,k)|0;r=15}if((r|0)==15)if(!g)m=0;else{ew(g|0,m|0,l|0)|0;a[g+l>>0]=0;m=g}g=u+56|0;l=c[g>>2]|0;j=(l<<2)+8|0;k=c[d>>2]|0;if((l+3|0)>=(c[k+116>>2]|0)){c[n>>2]=c[u>>2];cd(d,38221,n)}l=u+60|0;i=c[l>>2]|0;b:do if(!i){if(c[k+272>>2]|0){if(a[k+81>>0]|0)break}else{do if(!(0<0|(0==0?(e[k+276>>1]|0)>>>0>>0:0))){i=k+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];r=k+284|0;c[r>>2]=(c[r>>2]|0)+1;r=36;break b}i=k+296|0;h=c[i>>2]|0;if(!h){h=k+292|0;break}else{c[i>>2]=c[h>>2];r=k+284|0;c[r>>2]=(c[r>>2]|0)+1;r=36;break b}}else h=k+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(k,j,0)|0;r=36}else{r=i;if((c[k+304>>2]|0)>>>0<=r>>>0?(c[k+308>>2]|0)>>>0>r>>>0:0){if(!(0<0|(0==0?(e[k+276>>1]|0)>>>0>>0:0))){h=i;r=46;break}h=Zd(k,i,j,0)|0;r=36;break}h=Zd(k,i,j,0)|0;r=36}while(0);if((r|0)==36?h|0:0)r=46;if((r|0)==46){k=c[g>>2]|0;n=k+1|0;c[g>>2]=n;c[h+(k<<2)>>2]=m;c[h+(n<<2)>>2]=0;c[l>>2]=h;break}if(m){if(c[k+480>>2]|0){Xd(k,m);break}n=m;if((c[k+304>>2]|0)>>>0<=n>>>0?(c[k+308>>2]|0)>>>0>n>>>0:0){n=k+300|0;c[m>>2]=c[n>>2];c[n>>2]=m;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{n=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}}else g=u+56|0;while(0);c[p>>2]=0;if((c[g>>2]|0)<1){Ra=w;return}if(a[v+165>>0]|0){if(!(mi((c[u+72>>2]|0)+8|0,c[u>>2]|0,u)|0)){c[o>>2]=0;Ra=w;return}g=v+81|0;if(a[g>>0]|0){Ra=w;return}if(a[v+82>>0]|0){Ra=w;return}a[g>>0]=1;if((c[v+180>>2]|0)>0)c[v+264>>2]=1;g=v+272|0;c[g>>2]=(c[g>>2]|0)+1;g=c[v+236>>2]|0;if(!g){Ra=w;return}c[g+12>>2]=7;Ra=w;return}if(!f)g=d+180|0;else{g=d+180|0;c[d+184>>2]=(c[f>>2]|0)-(c[g>>2]|0)+(c[f+4>>2]|0)}c[q>>2]=g;j=dd(v,48861,q)|0;h=c[u+72>>2]|0;i=c[v+16>>2]|0;if(!h)m=-1e6;else{g=0;while(1)if((c[i+(g<<4)+12>>2]|0)==(h|0)){m=g;break}else g=g+1|0}p=c[u>>2]|0;q=c[d+88>>2]|0;c[s>>2]=c[i+(m<<4)>>2];c[s+4>>2]=34585;c[s+8>>2]=p;c[s+12>>2]=p;c[s+16>>2]=j;c[s+20>>2]=q;Ak(d,48885,s);do if(j|0){if(c[v+480>>2]|0){Xd(v,j);break}s=j;if((c[v+304>>2]|0)>>>0<=s>>>0?(c[v+308>>2]|0)>>>0>s>>>0:0){s=v+300|0;c[j>>2]=c[s>>2];c[s>>2]=j;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{s=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);k=d+8|0;g=c[k>>2]|0;c:do if(!g){j=c[d>>2]|0;if((c[d+116>>2]|0)==0?(b[j+76>>1]&8)==0:0)a[d+23>>0]=1;d:do if(c[j+272>>2]|0)if(!(a[j+81>>0]|0))r=78;else{l=0;break c}else{do if((e[j+276>>1]|0)>=224){g=j+300|0;h=c[g>>2]|0;if(h|0){c[g>>2]=c[h>>2];i=j+284|0;c[i>>2]=(c[i>>2]|0)+1;i=h;break d}g=j+296|0;h=c[g>>2]|0;if(!h){g=j+292|0;break}else{c[g>>2]=c[h>>2];i=j+284|0;c[i>>2]=(c[i>>2]|0)+1;i=h;break d}}else g=j+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1;r=78}while(0);if((r|0)==78)i=_d(j,224,0)|0;if(!i)l=0;else{g=i+104|0;h=g+120|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));c[i>>2]=j;g=j+4|0;h=c[g>>2]|0;if(h|0)c[h+4>>2]=i;c[i+8>>2]=h;c[i+4>>2]=0;c[g>>2]=i;c[i+20>>2]=381479589;c[i+12>>2]=d;c[k>>2]=i;Di(i,61,0,1,0)|0;l=i}}else l=g;while(0);g=c[k>>2]|0;h=(c[c[(c[(c[d>>2]|0)+16>>2]|0)+(m<<4)+12>>2]>>2]|0)+1|0;i=g+108|0;j=c[i>>2]|0;if((c[g+112>>2]|0)>(j|0)){c[i>>2]=j+1;s=c[g+104>>2]|0;a[s+(j*20|0)>>0]=95;b[s+(j*20|0)+2>>1]=0;c[s+(j*20|0)+4>>2]=m;c[s+(j*20|0)+8>>2]=1;c[s+(j*20|0)+12>>2]=h;c[s+(j*20|0)+16>>2]=0;a[s+(j*20|0)+1>>0]=0}else Di(g,95,m,1,h)|0;j=l+108|0;g=c[j>>2]|0;k=l+112|0;if((c[k>>2]|0)>(g|0)){c[j>>2]=g+1;h=c[l+104>>2]|0;a[h+(g*20|0)>>0]=-98;g=h+(g*20|0)+1|0;h=g+19|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0))}else Di(l,158,0,0,0)|0;c[t>>2]=c[u>>2];Bk(l,m,dd(v,48973,t)|0);h=d+44|0;i=(c[h>>2]|0)+1|0;c[h>>2]=i;h=c[u>>2]|0;g=c[j>>2]|0;if((c[k>>2]|0)>(g|0)){c[j>>2]=g+1;v=c[l+104>>2]|0;a[v+(g*20|0)>>0]=110;b[v+(g*20|0)+2>>1]=0;c[v+(g*20|0)+4>>2]=0;c[v+(g*20|0)+8>>2]=i;c[v+(g*20|0)+12>>2]=0;c[v+(g*20|0)+16>>2]=0;a[v+(g*20|0)+1>>0]=0}else g=Di(l,110,0,i,0)|0;if(!(a[(c[l>>2]|0)+81>>0]|0)){if((g|0)<0)g=(c[j>>2]|0)+-1|0;Ei(l,(c[l+104>>2]|0)+(g*20|0)|0,h,0)}g=c[j>>2]|0;if((c[k>>2]|0)>(g|0)){c[j>>2]=g+1;v=c[l+104>>2]|0;a[v+(g*20|0)>>0]=-95;b[v+(g*20|0)+2>>1]=0;c[v+(g*20|0)+4>>2]=m;c[v+(g*20|0)+8>>2]=i;c[v+(g*20|0)+12>>2]=0;c[v+(g*20|0)+16>>2]=0;a[v+(g*20|0)+1>>0]=0;Ra=w;return}else{Di(l,161,m,i,0)|0;Ra=w;return}}function Bj(b,f,g,h,i){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=Ra;Ra=Ra+16|0;o=s;r=c[b>>2]|0;q=qj(r,g)|0;n=(f|0)!=0;if(n&(q|0)!=0?(j=c[f>>2]|0,(j|0)>0):0){m=0;g=j;do{k=c[f+8+(m<<4)>>2]|0;l=a[q>>0]|0;j=(d[208+(l&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0;if(!(l<<24>>24==0|(j|0)!=0)){l=q;do{l=l+1|0;k=k+1|0;t=a[l>>0]|0;j=(d[208+(t&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(t<<24>>24==0|(j|0)!=0))}if(!j){c[o>>2]=q;cd(b,49e3,o);g=c[f>>2]|0}m=m+1|0}while((m|0)<(g|0))}a:do if(n){g=(c[f>>2]<<4)+24|0;t=f;if((c[r+304>>2]|0)>>>0<=t>>>0?(c[r+308>>2]|0)>>>0>t>>>0:0){if(!(0<0|(0==0?(e[r+276>>1]|0)>>>0>>0:0))){g=f;break}g=Zd(r,f,g,0)|0;break}g=Zd(r,f,g,0)|0}else{b:do if(!r){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](24)|0;p=39;break}k=Wa[c[29356>>2]&127](24)|0;if((c[14985]|0)>>>0<24)c[14985]=24;j=59064;g=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&g>>>0>0){t=c[14978]|0;o=Tv(g|0,j|0,k|0,((k|0)<0)<<31>>31|0)|0;b=L()|0;c[14768]=((b|0)<0|(b|0)==0&o>>>0<=t>>>0)&1}g=Wa[c[29340>>2]&127](k)|0;if(!g){g=0;break a}j=Wa[c[29352>>2]&127](g)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0)c[14987]=j}else{if(c[r+272>>2]|0){if(a[r+81>>0]|0){g=0;break a}}else{do if((e[r+276>>1]|0)>=24){j=r+300|0;g=c[j>>2]|0;if(g|0){c[j>>2]=c[g>>2];p=r+284|0;c[p>>2]=(c[p>>2]|0)+1;p=39;break b}j=r+296|0;g=c[j>>2]|0;if(!g){g=r+292|0;break}else{c[j>>2]=c[g>>2];p=r+284|0;c[p>>2]=(c[p>>2]|0)+1;p=39;break b}}else g=r+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1}g=_d(r,24,0)|0;p=39}while(0);if((p|0)==39)if(!g){g=0;break}j=g;k=j+24|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(k|0))}while(0);if(!(a[r+81>>0]|0)){r=g+8|0;t=c[g>>2]|0;c[r+(t<<4)+8>>2]=i;c[r+(t<<4)+4>>2]=h;c[r+(t<<4)>>2]=q;c[r+(t<<4)+12>>2]=0;c[g>>2]=t+1;t=g;Ra=s;return t|0}if(h|0)ri(r,h);if(i|0)pi(r,i,1);if(!q){t=f;Ra=s;return t|0}if(c[r+480>>2]|0){Xd(r,q);t=f;Ra=s;return t|0}t=q;if((c[r+304>>2]|0)>>>0<=t>>>0?(c[r+308>>2]|0)>>>0>t>>>0:0){t=r+300|0;c[q>>2]=c[t>>2];c[t>>2]=q;t=f;Ra=s;return t|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](q);t=f;Ra=s;return t|0}else{t=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);t=f;Ra=s;return t|0}return 0}function Cj(b,e,f){b=b|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;p=Ra;Ra=Ra+16|0;m=p+8|0;k=p;n=e+4|0;l=c[n>>2]|0;if(!l){Ra=p;return}o=c[b>>2]|0;a:do if(f|0){j=d[208+(d[l>>0]|0)>>0]|0;while(1){h=c[f>>2]|0;i=a[h>>0]|0;g=(d[208+(i&255)>>0]|0)-j|0;if(!(i<<24>>24==0|(g|0)!=0)){i=l;do{h=h+1|0;i=i+1|0;q=a[h>>0]|0;g=(d[208+(q&255)>>0]|0)-(d[208+(d[i>>0]|0)>>0]|0)|0}while(!(q<<24>>24==0|(g|0)!=0))}if(!g)break;f=c[f+32>>2]|0;if(!f)break a}if(!f){Ra=p;return}g=e+8|0;do if(!(c[g>>2]|0)){h=f+12|0;if(c[h>>2]|0?c[e+12>>2]|0:0){f=49047;break}if(!(a[f+19>>0]|0))f=49063;else{f=gk(o,c[f+8>>2]|0,0)|0;c[g>>2]=f;f=c[h>>2]|0;if(f|0){q=gk(o,f,0)|0;c[e+12>>2]=q}f=c[n>>2]|0;do if(f|0){if(o|0){if(c[o+480>>2]|0){Xd(o,f);break}q=f;if((c[o+304>>2]|0)>>>0<=q>>>0?(c[o+308>>2]|0)>>>0>q>>>0:0){q=o+300|0;c[f>>2]=c[q>>2];c[q>>2]=f;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{q=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);c[n>>2]=0;Ra=p;return}}else f=49030;while(0);c[m>>2]=f;c[m+4>>2]=l;cd(b,49083,m);Ra=p;return}while(0);c[k>>2]=l;cd(b,40596,k);Ra=p;return}function Dj(d,f,g,h,i,j,k){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=Ra;Ra=Ra+16|0;l=r;p=(f|0)==0;q=p&1;a:do if((g|0)==82&(i|0)==85)o=4;else{if((g|0)==83)switch(i|0){case 82:case 85:{o=4;break a}default:{}}n=c[d>>2]|0;b:do if(!n){if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](92)|0;o=28;break}l=Wa[c[29356>>2]&127](92)|0;if((c[14985]|0)>>>0<92)c[14985]=92;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){s=c[14978]|0;n=Tv(m|0,n|0,l|0,((l|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&n>>>0<=s>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l)break a;m=Wa[c[29352>>2]&127](l)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0>(c[14987]|0)>>>0)c[14987]=m}else{if(c[n+272>>2]|0){if(a[n+81>>0]|0)break a}else{do if((e[n+276>>1]|0)>=92){m=n+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];o=n+284|0;c[o>>2]=(c[o>>2]|0)+1;o=28;break b}m=n+296|0;l=c[m>>2]|0;if(!l){l=n+292|0;break}else{c[m>>2]=c[l>>2];o=n+284|0;c[o>>2]=(c[o>>2]|0)+1;o=28;break b}}else l=n+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(n,92,0)|0;o=28}while(0);if((o|0)==28)if(!l)break;m=l;n=m+92|0;do{a[m>>0]=0;m=m+1|0}while((m|0)<(n|0));a[l+16>>0]=p?86:f&255;a[l+17>>0]=g;a[l+18>>0]=i;if(!(k<<24>>24))k=(b[(c[d>>2]|0)+76>>1]&2)==0?0:66;a[l+20>>0]=k;a[l+19>>0]=q;s=pn(d,j)|0;c[l+28>>2]=s;s=pn(d,h)|0;c[l+24>>2]=s;s=l;Ra=r;return s|0}while(0);if((o|0)==4)cd(d,49116,l);if(j|0)ni(c[d>>2]|0,j);if(!h){s=0;Ra=r;return s|0}ni(c[d>>2]|0,h);s=0;Ra=r;return s|0}function Ej(d){d=d|0;var e=0,f=0,g=0,h=0,i=0;i=d+8|0;e=c[i>>2]|0;if(e|0){i=e;return i|0}e=c[d>>2]|0;if((c[d+116>>2]|0)==0?(b[e+76>>1]&8)==0:0)a[d+23>>0]=1;h=Yd(e,224,0)|0;if(!h){i=0;return i|0}f=h+104|0;g=f+120|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[h>>2]=e;e=e+4|0;f=c[e>>2]|0;if(f|0)c[f+4>>2]=h;c[h+8>>2]=f;c[h+4>>2]=0;c[e>>2]=h;c[h+20>>2]=381479589;c[h+12>>2]=d;c[i>>2]=h;Di(h,61,0,1,0)|0;i=h;return i|0}function Fj(d,e,f,g,h,i,j){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0;k=d+108|0;l=c[k>>2]|0;if((c[d+112>>2]|0)>(l|0)){c[k>>2]=l+1;k=c[d+104>>2]|0;a[k+(l*20|0)>>0]=e;b[k+(l*20|0)+2>>1]=0;c[k+(l*20|0)+4>>2]=f;c[k+(l*20|0)+8>>2]=g;c[k+(l*20|0)+12>>2]=h;c[k+(l*20|0)+16>>2]=0;a[k+(l*20|0)+1>>0]=0;gd(d,l,i,j);return l|0}else{l=Di(d,e,f,g,h)|0;gd(d,l,i,j);return l|0}return 0}function Gj(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;p=f+8|0;k=c[p>>2]|0;a:do if(!k){o=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[o+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[o+272>>2]|0)if(!(a[o+81>>0]|0))n=15;else{o=0;break a}else{do if((e[o+276>>1]|0)>=224){k=o+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];m=o+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break b}k=o+296|0;l=c[k>>2]|0;if(!l){k=o+292|0;break}else{c[k>>2]=c[l>>2];m=o+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break b}}else k=o+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;n=15}while(0);if((n|0)==15)m=_d(o,224,0)|0;if(!m)o=0;else{k=m+104|0;l=k+120|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(l|0));c[m>>2]=o;k=o+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=m;c[m+8>>2]=l;c[m+4>>2]=0;c[k>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=f;c[p>>2]=m;Di(m,61,0,1,0)|0;o=m}}else o=k;while(0);k=i+28|0;Hj(f,h,c[k>>2]|0,(j|0)==109&1,c[i>>2]|0);if(!(c[i+36>>2]&32)){m=c[k>>2]|0;n=b[i+42>>1]|0;l=o+108|0;k=c[l>>2]|0;if((c[o+112>>2]|0)>(k|0)){c[l>>2]=k+1;f=c[o+104>>2]|0;a[f+(k*20|0)>>0]=j;b[f+(k*20|0)+2>>1]=0;c[f+(k*20|0)+4>>2]=g;c[f+(k*20|0)+8>>2]=m;c[f+(k*20|0)+12>>2]=h;c[f+(k*20|0)+16>>2]=0;a[f+(k*20|0)+1>>0]=0}else k=Di(o,j,g,m,h)|0;if(a[(c[o>>2]|0)+81>>0]|0)return;j=c[o+104>>2]|0;a[j+(k*20|0)+1>>0]=-3;c[j+(k*20|0)+16>>2]=n;return}k=c[i+8>>2]|0;c:do if(!k)k=0;else while(1){i=k+55|0;if(((d[i>>0]|d[i+1>>0]<<8)&3)==2)break c;k=c[k+20>>2]|0;if(!k){k=0;break}}while(0);l=c[k+44>>2]|0;m=o+108|0;n=c[m>>2]|0;if((c[o+112>>2]|0)>(n|0)){c[m>>2]=n+1;i=c[o+104>>2]|0;a[i+(n*20|0)>>0]=j;b[i+(n*20|0)+2>>1]=0;c[i+(n*20|0)+4>>2]=g;c[i+(n*20|0)+8>>2]=l;c[i+(n*20|0)+12>>2]=h;c[i+(n*20|0)+16>>2]=0;a[i+(n*20|0)+1>>0]=0}else Di(o,j,g,l,h)|0;m=c[p>>2]|0;l=Ij(f,k)|0;if(!l)return;k=c[m>>2]|0;if(!(a[k+81>>0]|0)){h=c[m+104>>2]|0;j=(c[m+108>>2]|0)+-1|0;a[h+(j*20|0)+1>>0]=-9;c[h+(j*20|0)+16>>2]=l;return}if(c[k+480>>2]|0)return;j=(c[l>>2]|0)+-1|0;c[l>>2]=j;if(j|0)return;k=c[l+12>>2]|0;if(k|0){if(c[k+480>>2]|0){Xd(k,l);return}j=l;if((c[k+304>>2]|0)>>>0<=j>>>0?(c[k+308>>2]|0)>>>0>j>>>0:0){j=k+300|0;c[l>>2]=c[j>>2];c[j>>2]=l;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);return}else{j=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);return}}function Hj(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,l=0,m=0,n=0,o=0,p=0,q=0,r=0;l=c[b+116>>2]|0;l=(l|0)==0?b:l;if((d|0)==1)return;if(!(a[(c[(c[(c[b>>2]|0)+16>>2]|0)+(d<<4)+4>>2]|0)+9>>0]|0))return;r=l+104|0;p=c[r>>2]|0;i=l+108|0;a:do if((p|0)<=0){j=c[i>>2]|0;k=(p<<4)+16|0;n=c[l>>2]|0;m=((k|0)<0)<<31>>31;if(!j){b:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))q=21;else{b=l;q=39;break a}else{do if(!(0>>0|(0==(m|0)?(e[n+276>>1]|0)>>>0>>0:0))){j=n+300|0;b=c[j>>2]|0;if(b|0){c[j>>2]=c[b>>2];p=n+284|0;c[p>>2]=(c[p>>2]|0)+1;break b}j=n+296|0;b=c[j>>2]|0;if(!b){b=n+292|0;break}else{c[j>>2]=c[b>>2];p=n+284|0;c[p>>2]=(c[p>>2]|0)+1;break b}}else b=n+288|0;while(0);c[b>>2]=(c[b>>2]|0)+1;q=21}while(0);if((q|0)==21)b=_d(n,k,m)|0;c[i>>2]=b;if(!b)b=l;else q=37}else{b=l;o=j;j=k;q=22}}else{j=c[i>>2]|0;b=0;while(1){if((c[j+(b<<4)>>2]|0)==(d|0)?(c[j+(b<<4)+4>>2]|0)==(f|0):0)break;b=b+1|0;if((b|0)>=(p|0)){q=9;break}}if((q|0)==9){k=(p<<4)+16|0;b=l;o=j;n=c[l>>2]|0;m=((k|0)<0)<<31>>31;j=k;q=22;break}r=j+(b<<4)+8|0;a[r>>0]=(a[r>>0]|g)<<24>>24!=0&1;return}while(0);do if((q|0)==22){k=o;l=n+304|0;if(((c[l>>2]|0)>>>0<=k>>>0?(c[n+308>>2]|0)>>>0>k>>>0:0)?!(m>>>0>0|((m|0)==0?j>>>0>(e[n+276>>1]|0)>>>0:0)):0){c[i>>2]=o;b=o;i=p;q=38;break}j=Zd(n,o,j,m)|0;if(j|0){c[i>>2]=j;b=j;q=37;break}if(c[n+480>>2]|0){Xd(n,o);q=39;break}if((c[l>>2]|0)>>>0<=k>>>0?(c[n+308>>2]|0)>>>0>k>>>0:0){q=n+300|0;c[o>>2]=c[q>>2];c[q>>2]=o;q=39;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](o);q=39;break}else{q=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);q=39;break}}while(0);if((q|0)==37){i=c[r>>2]|0;q=38}else if((q|0)==39)c[i>>2]=0;if((q|0)==38){c[r>>2]=i+1;c[b+(i<<4)>>2]=d;c[b+(i<<4)+4>>2]=f;a[b+(i<<4)+8>>0]=g;c[b+(i<<4)+12>>2]=h;return}c[r>>2]=0;b=c[b>>2]|0;i=b+81|0;if(a[i>>0]|0)return;if(a[b+82>>0]|0)return;a[i>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;r=b+272|0;c[r>>2]=(c[r>>2]|0)+1;b=c[b+236>>2]|0;if(!b)return;c[b+12>>2]=7;return}function Ij(f,g){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;q=b[g+52>>1]|0;r=q&65535;j=b[g+50>>1]|0;s=f+36|0;if(c[s>>2]|0){t=0;return t|0}t=g+55|0;n=c[f>>2]|0;l=r*5|0;k=l+20|0;o=n+272|0;h=(c[o>>2]|0)==0;do if(!((d[t>>0]|d[t+1>>0]<<8)&8)){a:do if(!h)if(!(a[n+81>>0]|0))m=32;else{t=0;return t|0}else{do if(!(0<0|(0==0?(e[n+276>>1]|0)>>>0>>0:0))){i=n+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];p=n+284|0;c[p>>2]=(c[p>>2]|0)+1;break a}i=n+296|0;h=c[i>>2]|0;if(!h){h=n+292|0;break}else{c[i>>2]=c[h>>2];p=n+284|0;c[p>>2]=(c[p>>2]|0)+1;break a}}else h=n+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;m=32}while(0);if((m|0)==32)h=_d(n,k,0)|0;if(h|0){c[h+16>>2]=h+20+(r<<2);b[h+6>>1]=q;b[h+8>>1]=q;a[h+4>>0]=a[n+78>>0]|0;c[h+12>>2]=n;c[h>>2]=1;gw(h+24|0,0,l+-4|0)|0;p=h;o=h;break}i=n+81|0;if((a[i>>0]|0)==0?(a[n+82>>0]|0)==0:0){a[i>>0]=1;if((c[n+180>>2]|0)>0)c[n+264>>2]=1;c[o>>2]=(c[o>>2]|0)+1;i=c[n+236>>2]|0;if(i){c[i+12>>2]=7;m=41}else m=41}else m=41}else{b:do if(!h)if(!(a[n+81>>0]|0))m=13;else{t=0;return t|0}else{do if(!(0<0|(0==0?(e[n+276>>1]|0)>>>0>>0:0))){i=n+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];p=n+284|0;c[p>>2]=(c[p>>2]|0)+1;break b}i=n+296|0;h=c[i>>2]|0;if(!h){h=n+292|0;break}else{c[i>>2]=c[h>>2];p=n+284|0;c[p>>2]=(c[p>>2]|0)+1;break b}}else h=n+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;m=13}while(0);if((m|0)==13)h=_d(n,k,0)|0;if(h|0){c[h+16>>2]=h+20+(r<<2);b[h+6>>1]=j;b[h+8>>1]=q;a[h+4>>0]=a[n+78>>0]|0;c[h+12>>2]=n;c[h>>2]=1;gw(h+24|0,0,l+-4|0)|0;p=h;o=h;break}i=n+81|0;if((a[i>>0]|0)==0?(a[n+82>>0]|0)==0:0){a[i>>0]=1;if((c[n+180>>2]|0)>0)c[n+264>>2]=1;c[o>>2]=(c[o>>2]|0)+1;i=c[n+236>>2]|0;if(i){c[i+12>>2]=7;m=41}else m=41}else m=41}while(0);if((m|0)==41)if(!h){t=0;return t|0}else{p=h;o=0}if(q<<16>>16){n=g+32|0;l=g+28|0;m=p+16|0;k=0;do{i=c[(c[n>>2]|0)+(k<<2)>>2]|0;do if((i|0)!=34049){h=c[f>>2]|0;j=a[h+78>>0]|0;g=a[h+165>>0]|0;h=Zi(h,j,i,g&255)|0;if(!(g<<24>>24)){if(!h){h=_i(f,j,0,i)|0;break}if(!(c[h+12>>2]|0))h=_i(f,j,h,i)|0}}else h=0;while(0);c[p+20+(k<<2)>>2]=h;a[(c[m>>2]|0)+k>>0]=a[(c[l>>2]|0)+k>>0]|0;k=k+1|0}while((k|0)!=(r|0))}if(!(c[s>>2]|0)){t=p;return t|0}h=d[t>>0]|d[t+1>>0]<<8;if(!(h&256)){s=h|256;a[t>>0]=s;a[t+1>>0]=s>>8;c[f+12>>2]=513}t=(c[p>>2]|0)+-1|0;c[p>>2]=t;if(t|0){t=0;return t|0}h=c[p+12>>2]|0;if(h|0){if(c[h+480>>2]|0){Xd(h,o);t=0;return t|0}t=p;if((c[h+304>>2]|0)>>>0<=t>>>0?(c[h+308>>2]|0)>>>0>t>>>0:0){t=h+300|0;c[p>>2]=c[t>>2];c[t>>2]=o;t=0;return t|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](o);t=0;return t|0}else{t=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);t=0;return t|0}return 0}function Jj(f,i,j){f=f|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0.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,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;Z=Ra;Ra=Ra+208|0;m=Z+80|0;l=Z+72|0;s=Z+64|0;n=Z+56|0;t=Z+48|0;p=Z+40|0;w=Z+32|0;S=Z;R=Z+144|0;T=Z+140|0;W=Z+136|0;E=Z+84|0;M=f+8|0;Y=c[M>>2]|0;c[T>>2]=0;c[W>>2]=0;if(!Y){j=0;Ra=Z;return j|0}Q=i;a:while(1){if(!Q)v=114;else v=d[Q>>0]|0;u=v&255;switch(u<<24>>24){case -92:{X=6;break a}case -94:{X=12;break a}case -109:{X=36;break a}case -97:{X=37;break a}case -111:{X=40;break a}case 110:{X=80;break a}case 114:{X=87;break a}case -110:{X=90;break a}case -108:{X=127;break a}case -88:{X=138;break a}case 36:{X=139;break a}case -96:case 45:{X=157;break a}case 53:case 52:case 57:case 54:case 55:case 56:{l=0;k=v;X=158;break a}case 105:case 99:case 98:case 103:case 97:case 96:case 104:case 101:case 102:case 100:case 43:case 44:{X=228;break a}case -91:{X=231;break a}case 19:case 107:{X=276;break a}case -89:{X=279;break a}case 51:case 50:{X=284;break a}case -93:{X=296;break a}case -95:{X=299;break a}case -125:case 20:{X=420;break a}case -86:{X=424;break a}case 49:{X=436;break a}case 48:{X=451;break a}case 77:{X=453;break a}case -87:{X=461;break a}case -85:{X=462;break a}case 71:{X=542;break a}case -90:case 106:case -83:break;default:{X=469;break a}}Q=c[Q+12>>2]|0}b:switch(X|0){case 6:{i=c[Q+40>>2]|0;k=c[i+28>>2]|0;l=b[Q+34>>1]|0;if(!(a[i>>0]|0)){j=c[k+(l*24|0)+16>>2]|0;Ra=Z;return j|0}if(a[i+1>>0]|0){m=c[i+8>>2]|0;i=c[k+(l*24|0)+12>>2]|0;k=Y+108|0;l=c[k>>2]|0;if((c[Y+112>>2]|0)>(l|0)){c[k>>2]=l+1;Y=c[Y+104>>2]|0;a[Y+(l*20|0)>>0]=90;b[Y+(l*20|0)+2>>1]=0;c[Y+(l*20|0)+4>>2]=m;c[Y+(l*20|0)+8>>2]=i;c[Y+(l*20|0)+12>>2]=j;c[Y+(l*20|0)+16>>2]=0;a[Y+(l*20|0)+1>>0]=0;Ra=Z;return j|0}else{Di(Y,90,m,i,j)|0;Ra=Z;return j|0}}else X=12;break}case 36:{Kj(f,Q,0,j);Ra=Z;return j|0}case 37:{i=(a[(c[Q+8>>2]|0)+4>>0]|0)==0&1;k=Y+108|0;l=c[k>>2]|0;if((c[Y+112>>2]|0)>(l|0)){c[k>>2]=l+1;Y=c[Y+104>>2]|0;a[Y+(l*20|0)>>0]=70;b[Y+(l*20|0)+2>>1]=0;c[Y+(l*20|0)+4>>2]=i;c[Y+(l*20|0)+8>>2]=j;c[Y+(l*20|0)+12>>2]=0;c[Y+(l*20|0)+16>>2]=0;a[Y+(l*20|0)+1>>0]=0;Ra=Z;return j|0}else{Di(Y,70,i,j,0)|0;Ra=Z;return j|0}}case 40:{i=c[Q+8>>2]|0;if(!i){Ra=Z;return j|0}Lg(i,S,(Eu(i)|0)&1073741823,1)|0;l=c[Y>>2]|0;c:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))X=51;else X=71;else{do if((e[l+276>>1]|0)>=8){i=l+300|0;k=c[i>>2]|0;if(k|0){c[i>>2]=c[k>>2];X=l+284|0;c[X>>2]=(c[X>>2]|0)+1;X=52;break c}i=l+296|0;k=c[i>>2]|0;if(!k){i=l+292|0;break}else{c[i>>2]=c[k>>2];X=l+284|0;c[X>>2]=(c[X>>2]|0)+1;X=52;break c}}else i=l+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;X=51}while(0);if((X|0)==51){k=_d(l,8,0)|0;X=52}do if((X|0)==52)if(k){i=S;W=c[i>>2]|0;i=c[i+4>>2]|0;m=k;f=m;a[f>>0]=W;a[f+1>>0]=W>>8;a[f+2>>0]=W>>16;a[f+3>>0]=W>>24;m=m+4|0;a[m>>0]=i;a[m+1>>0]=i>>8;a[m+2>>0]=i>>16;a[m+3>>0]=i>>24;m=Y+108|0;i=c[m>>2]|0;if((c[Y+112>>2]|0)>(i|0)){c[m>>2]=i+1;f=c[Y+104>>2]|0;a[f+(i*20|0)>>0]=-111;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=0;c[f+(i*20|0)+8>>2]=j;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0}else i=Di(Y,145,0,j,0)|0;l=c[Y>>2]|0;if(!(a[l+81>>0]|0)){if((i|0)<0)i=(c[m>>2]|0)+-1|0;l=c[Y+104>>2]|0;m=l+(i*20|0)+1|0;if(!(a[m>>0]|0)){c[l+(i*20|0)+16>>2]=k;a[m>>0]=-13;break}else{Ei(Y,l+(i*20|0)|0,k,-13);break}}if(l|0){if(c[l+480>>2]|0){Xd(l,k);break}Y=k;if((c[l+304>>2]|0)>>>0<=Y>>>0?(c[l+308>>2]|0)>>>0>Y>>>0:0){Y=l+300|0;c[k>>2]=c[Y>>2];c[Y>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{Y=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-Y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}else X=71;while(0);if((X|0)==71){k=Y+108|0;i=c[k>>2]|0;if((c[Y+112>>2]|0)>(i|0)){c[k>>2]=i+1;f=c[Y+104>>2]|0;a[f+(i*20|0)>>0]=-111;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=0;c[f+(i*20|0)+8>>2]=j;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0}else i=Di(Y,145,0,j,0)|0;if(!(a[(c[Y>>2]|0)+81>>0]|0)){if((i|0)<0)i=(c[k>>2]|0)+-1|0;k=c[Y+104>>2]|0;if(a[k+(i*20|0)+1>>0]|0)Ei(Y,k+(i*20|0)|0,0,-13)}}Ra=Z;return j|0}case 80:{l=c[Q+8>>2]|0;k=Y+108|0;i=c[k>>2]|0;if((c[Y+112>>2]|0)>(i|0)){c[k>>2]=i+1;f=c[Y+104>>2]|0;a[f+(i*20|0)>>0]=110;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=0;c[f+(i*20|0)+8>>2]=j;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0}else i=Di(Y,110,0,j,0)|0;if(a[(c[Y>>2]|0)+81>>0]|0){Ra=Z;return j|0}if((i|0)<0)i=(c[k>>2]|0)+-1|0;Ei(Y,(c[Y+104>>2]|0)+(i*20|0)|0,l,0);Ra=Z;return j|0}case 87:{i=Y+108|0;k=c[i>>2]|0;if((c[Y+112>>2]|0)>(k|0)){c[i>>2]=k+1;Y=c[Y+104>>2]|0;a[Y+(k*20|0)>>0]=73;b[Y+(k*20|0)+2>>1]=0;c[Y+(k*20|0)+4>>2]=0;c[Y+(k*20|0)+8>>2]=j;c[Y+(k*20|0)+12>>2]=0;c[Y+(k*20|0)+16>>2]=0;a[Y+(k*20|0)+1>>0]=0;Ra=Z;return j|0}else{Di(Y,73,0,j,0)|0;Ra=Z;return j|0}}case 90:{q=(c[Q+8>>2]|0)+2|0;p=(Eu(q)|0)&1073741823;r=p+-1|0;k=c[Y>>2]|0;s=(r|0)/2|0;m=s+1|0;n=((m|0)<0)<<31>>31;d:do if(c[k+272>>2]|0)if(!(a[k+81>>0]|0))X=100;else{m=0;n=1}else{do if(!(0>>0|(0==(n|0)?(e[k+276>>1]|0)>>>0>>0:0))){i=k+300|0;l=c[i>>2]|0;if(l|0){c[i>>2]=c[l>>2];X=k+284|0;c[X>>2]=(c[X>>2]|0)+1;X=101;break d}i=k+296|0;l=c[i>>2]|0;if(!l){i=k+292|0;break}else{c[i>>2]=c[l>>2];X=k+284|0;c[X>>2]=(c[X>>2]|0)+1;X=101;break d}}else i=k+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;X=100}while(0);if((X|0)==100){l=_d(k,m,n)|0;X=101}if((X|0)==101){k=p+-2|0;if(!l){m=0;n=1}else{if(p>>>0>2){i=0;do{f=a[q+i>>0]|0;X=a[q+(i|1)>>0]|0;a[l+(i>>>1)>>0]=(0-(X>>>6&1)&9)+X&15|(0-(f>>>6&1)&9)+f<<4;i=i+2|0}while((i|0)<(k|0));i=r>>>1}else i=0;a[l+i>>0]=0;m=l;n=0}}l=Y+108|0;i=c[l>>2]|0;if((c[Y+112>>2]|0)>(i|0)){c[l>>2]=i+1;f=c[Y+104>>2]|0;a[f+(i*20|0)>>0]=75;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=s;c[f+(i*20|0)+8>>2]=j;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0}else i=Di(Y,75,s,j,0)|0;k=c[Y>>2]|0;if(!(a[k+81>>0]|0)){if((i|0)<0)i=(c[l>>2]|0)+-1|0;k=c[Y+104>>2]|0;l=k+(i*20|0)+1|0;if(a[l>>0]|0){Ei(Y,k+(i*20|0)|0,m,-7);Ra=Z;return j|0}if(n){Ra=Z;return j|0}c[k+(i*20|0)+16>>2]=m;a[l>>0]=-7;Ra=Z;return j|0}if(n){Ra=Z;return j|0}if(k|0){if(c[k+480>>2]|0){Xd(k,m);Ra=Z;return j|0}Y=m;if((c[k+304>>2]|0)>>>0<=Y>>>0?(c[k+308>>2]|0)>>>0>Y>>>0:0){Y=k+300|0;c[m>>2]=c[Y>>2];c[Y>>2]=m;Ra=Z;return j|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);Ra=Z;return j|0}else{Y=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-Y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);Ra=Z;return j|0}}case 127:{l=Q+32|0;i=b[l>>1]|0;n=Y+108|0;k=c[n>>2]|0;if((c[Y+112>>2]|0)>(k|0)){c[n>>2]=k+1;X=c[Y+104>>2]|0;a[X+(k*20|0)>>0]=76;b[X+(k*20|0)+2>>1]=0;c[X+(k*20|0)+4>>2]=i;c[X+(k*20|0)+8>>2]=j;c[X+(k*20|0)+12>>2]=0;c[X+(k*20|0)+16>>2]=0;a[X+(k*20|0)+1>>0]=0}else Di(Y,76,i,j,0)|0;if(!(a[(c[Q+8>>2]|0)+1>>0]|0)){Ra=Z;return j|0}m=c[f+216>>2]|0;k=b[l>>1]|0;e:do if(!m)i=0;else{l=c[m+4>>2]|0;i=2;while(1){if((c[m+(i<<2)>>2]|0)==(k|0))break;i=(c[m+(i+1<<2)>>2]|0)+i|0;if((i|0)>=(l|0)){i=0;break e}}i=m+(i+2<<2)|0}while(0);c[m>>2]=0;if(a[(c[Y>>2]|0)+81>>0]|0){Ra=Z;return j|0}f=c[Y+104>>2]|0;Y=(c[n>>2]|0)+-1|0;a[f+(Y*20|0)+1>>0]=-1;c[f+(Y*20|0)+16>>2]=i;Ra=Z;return j|0}case 138:{j=c[Q+28>>2]|0;Ra=Z;return j|0}case 139:{i=Jj(f,c[Q+12>>2]|0,j)|0;do if((i|0)!=(j|0)){k=Y+108|0;l=c[k>>2]|0;if((c[Y+112>>2]|0)>(l|0)){c[k>>2]=l+1;f=c[Y+104>>2]|0;a[f+(l*20|0)>>0]=79;b[f+(l*20|0)+2>>1]=0;c[f+(l*20|0)+4>>2]=i;c[f+(l*20|0)+8>>2]=j;c[f+(l*20|0)+12>>2]=0;c[f+(l*20|0)+16>>2]=0;a[f+(l*20|0)+1>>0]=0;break}else{Di(Y,79,i,j,0)|0;break}}while(0);k=c[Q+8>>2]|0;l=a[k>>0]|0;f:do if(!(l<<24>>24))i=67;else{i=67;m=0;do{m=m<<8|d[208+(l&255)>>0];k=k+1|0;g:do if((m|0)<1685026146){if((m|0)<1667785074){switch(m|0){case 1651273570:break;default:{X=152;break g}}switch(i<<24>>24){case 69:case 67:{i=65;break g}default:{X=151;break g}}}if((m|0)<1668050786)switch(m|0){case 1667785074:{i=66;break g}default:{X=152;break g}}else switch(m|0){case 1668050786:{i=66;break g}default:{X=152;break g}}}else{if((m|0)>=1919246700){if((m|0)>=1952807028)switch(m|0){case 1952807028:{i=66;break g}default:{X=152;break g}}switch(m|0){case 1919246700:break;default:{X=152;break g}}if(i<<24>>24==67){i=69;break}else{X=151;break}}if((m|0)<1718382433){switch(m|0){case 1685026146:break;default:{X=152;break g}}if(i<<24>>24==67){i=69;break}}else{switch(m|0){case 1718382433:break;default:{X=152;break g}}if(i<<24>>24==67){i=69;break}}}while(0);if((X|0)==151)X=0;else if((X|0)==152){X=0;if((m&16777215|0)==6909556){i=68;break f}}l=a[k>>0]|0}while(l<<24>>24!=0)}while(0);i=i<<24>>24;k=Y+108|0;l=c[k>>2]|0;if((c[Y+112>>2]|0)>(l|0)){c[k>>2]=l+1;Y=c[Y+104>>2]|0;a[Y+(l*20|0)>>0]=85;b[Y+(l*20|0)+2>>1]=0;c[Y+(l*20|0)+4>>2]=j;c[Y+(l*20|0)+8>>2]=i;c[Y+(l*20|0)+12>>2]=0;c[Y+(l*20|0)+16>>2]=0;a[Y+(l*20|0)+1>>0]=0;Ra=Z;return j|0}else{Di(Y,85,j,i,0)|0;Ra=Z;return j|0}}case 157:{l=128;k=(v|0)==45?53:52;X=158;break}case 228:{m=Lj(f,c[Q+12>>2]|0,T)|0;i=Lj(f,c[Q+16>>2]|0,W)|0;k=Y+108|0;l=c[k>>2]|0;if((c[Y+112>>2]|0)>(l|0)){c[k>>2]=l+1;Y=c[Y+104>>2]|0;a[Y+(l*20|0)>>0]=u;b[Y+(l*20|0)+2>>1]=0;c[Y+(l*20|0)+4>>2]=i;c[Y+(l*20|0)+8>>2]=m;c[Y+(l*20|0)+12>>2]=j;c[Y+(l*20|0)+16>>2]=0;a[Y+(l*20|0)+1>>0]=0;m=j;break}else{Di(Y,v,i,m,j)|0;m=j;break}}case 231:{k=Q+12|0;i=c[k>>2]|0;switch(a[i>>0]|0){case -109:{Kj(f,i,1,j);Ra=Z;return j|0}case -111:{i=c[i+8>>2]|0;if(!i){Ra=Z;return j|0}Lg(i,S,(Eu(i)|0)&1073741823,1)|0;o=-+g[S>>3];g[S>>3]=o;l=c[Y>>2]|0;h:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))X=244;else X=264;else{do if((e[l+276>>1]|0)>=8){i=l+300|0;k=c[i>>2]|0;if(k|0){c[i>>2]=c[k>>2];X=l+284|0;c[X>>2]=(c[X>>2]|0)+1;X=245;break h}i=l+296|0;k=c[i>>2]|0;if(!k){i=l+292|0;break}else{c[i>>2]=c[k>>2];X=l+284|0;c[X>>2]=(c[X>>2]|0)+1;X=245;break h}}else i=l+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;X=244}while(0);if((X|0)==244){k=_d(l,8,0)|0;X=245}do if((X|0)==245)if(k){g[h>>3]=o;a[k>>0]=a[h>>0];a[k+1>>0]=a[h+1>>0];a[k+2>>0]=a[h+2>>0];a[k+3>>0]=a[h+3>>0];a[k+4>>0]=a[h+4>>0];a[k+5>>0]=a[h+5>>0];a[k+6>>0]=a[h+6>>0];a[k+7>>0]=a[h+7>>0];m=Y+108|0;i=c[m>>2]|0;if((c[Y+112>>2]|0)>(i|0)){c[m>>2]=i+1;f=c[Y+104>>2]|0;a[f+(i*20|0)>>0]=-111;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=0;c[f+(i*20|0)+8>>2]=j;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0}else i=Di(Y,145,0,j,0)|0;l=c[Y>>2]|0;if(!(a[l+81>>0]|0)){if((i|0)<0)i=(c[m>>2]|0)+-1|0;l=c[Y+104>>2]|0;m=l+(i*20|0)+1|0;if(!(a[m>>0]|0)){c[l+(i*20|0)+16>>2]=k;a[m>>0]=-13;break}else{Ei(Y,l+(i*20|0)|0,k,-13);break}}if(l|0){if(c[l+480>>2]|0){Xd(l,k);break}Y=k;if((c[l+304>>2]|0)>>>0<=Y>>>0?(c[l+308>>2]|0)>>>0>Y>>>0:0){Y=l+300|0;c[k>>2]=c[Y>>2];c[Y>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{Y=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-Y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}else X=264;while(0);if((X|0)==264){k=Y+108|0;i=c[k>>2]|0;if((c[Y+112>>2]|0)>(i|0)){c[k>>2]=i+1;f=c[Y+104>>2]|0;a[f+(i*20|0)>>0]=-111;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=0;c[f+(i*20|0)+8>>2]=j;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0}else i=Di(Y,145,0,j,0)|0;if(!(a[(c[Y>>2]|0)+81>>0]|0)){if((i|0)<0)i=(c[k>>2]|0)+-1|0;k=c[Y+104>>2]|0;if(a[k+(i*20|0)+1>>0]|0)Ei(Y,k+(i*20|0)|0,0,-13)}}Ra=Z;return j|0}default:{a[E>>0]=-109;c[E+4>>2]=17408;c[E+8>>2]=0;m=Lj(f,E,T)|0;i=Lj(f,c[k>>2]|0,W)|0;k=Y+108|0;l=c[k>>2]|0;if((c[Y+112>>2]|0)>(l|0)){c[k>>2]=l+1;Y=c[Y+104>>2]|0;a[Y+(l*20|0)>>0]=101;b[Y+(l*20|0)+2>>1]=0;c[Y+(l*20|0)+4>>2]=i;c[Y+(l*20|0)+8>>2]=m;c[Y+(l*20|0)+12>>2]=j;c[Y+(l*20|0)+16>>2]=0;a[Y+(l*20|0)+1>>0]=0;m=j;break b}else{Di(Y,101,i,m,j)|0;m=j;break b}}}}case 276:{i=Lj(f,c[Q+12>>2]|0,T)|0;k=Y+108|0;l=c[k>>2]|0;if((c[Y+112>>2]|0)>(l|0)){c[k>>2]=l+1;m=c[Y+104>>2]|0;a[m+(l*20|0)>>0]=u;b[m+(l*20|0)+2>>1]=0;c[m+(l*20|0)+4>>2]=i;c[m+(l*20|0)+8>>2]=j;c[m+(l*20|0)+12>>2]=0;c[m+(l*20|0)+16>>2]=0;a[m+(l*20|0)+1>>0]=0;m=j;break}else{Di(Y,v,i,j,0)|0;m=j;break}}case 279:{l=Lj(f,c[Q+12>>2]|0,T)|0;n=(a[(c[(c[Q+16>>2]|0)+8>>2]|0)+4>>0]|0)==0;m=(n^1)&1;n=(n^(a[Q+38>>0]|0)==45)&1;k=Y+108|0;i=c[k>>2]|0;if((c[Y+112>>2]|0)>(i|0)){c[k>>2]=i+1;S=c[Y+104>>2]|0;a[S+(i*20|0)>>0]=88;b[S+(i*20|0)+2>>1]=0;c[S+(i*20|0)+4>>2]=l;c[S+(i*20|0)+8>>2]=j;c[S+(i*20|0)+12>>2]=m;c[S+(i*20|0)+16>>2]=0;a[S+(i*20|0)+1>>0]=0}else i=Di(Y,88,l,j,m)|0;if(!(a[(c[Y>>2]|0)+81>>0]|0)){m=c[Y+104>>2]|0;a[m+(i*20|0)+1>>0]=-3;c[m+(i*20|0)+16>>2]=n;m=j}else m=j;break}case 284:{k=Y+108|0;i=c[k>>2]|0;m=Y+112|0;if((c[m>>2]|0)>(i|0)){c[k>>2]=i+1;S=c[Y+104>>2]|0;a[S+(i*20|0)>>0]=70;b[S+(i*20|0)+2>>1]=0;c[S+(i*20|0)+4>>2]=1;c[S+(i*20|0)+8>>2]=j;c[S+(i*20|0)+12>>2]=0;c[S+(i*20|0)+16>>2]=0;a[S+(i*20|0)+1>>0]=0}else Di(Y,70,1,j,0)|0;i=Lj(f,c[Q+12>>2]|0,T)|0;l=c[k>>2]|0;if((c[m>>2]|0)>(l|0)){c[k>>2]=l+1;S=c[Y+104>>2]|0;a[S+(l*20|0)>>0]=u;b[S+(l*20|0)+2>>1]=0;c[S+(l*20|0)+4>>2]=i;c[S+(l*20|0)+8>>2]=0;c[S+(l*20|0)+12>>2]=0;c[S+(l*20|0)+16>>2]=0;a[S+(l*20|0)+1>>0]=0}else l=Di(Y,v,i,0,0)|0;i=c[k>>2]|0;if((c[m>>2]|0)>(i|0)){c[k>>2]=i+1;S=c[Y+104>>2]|0;a[S+(i*20|0)>>0]=70;b[S+(i*20|0)+2>>1]=0;c[S+(i*20|0)+4>>2]=0;c[S+(i*20|0)+8>>2]=j;c[S+(i*20|0)+12>>2]=0;c[S+(i*20|0)+16>>2]=0;a[S+(i*20|0)+1>>0]=0}else Di(Y,70,0,j,0)|0;k=c[k>>2]|0;if(!(a[(c[Y>>2]|0)+81>>0]|0))i=(c[Y+104>>2]|0)+(((l|0)<0?k+-1|0:l)*20|0)|0;else i=59308;c[i+8>>2]=k;m=j;break}case 296:{i=c[Q+40>>2]|0;if(!i){c[p>>2]=c[Q+8>>2];cd(f,38820,p);m=j;break}j=c[(c[i+40>>2]|0)+(b[Q+34>>1]<<4)+8>>2]|0;Ra=Z;return j|0}case 299:{x=c[f>>2]|0;k=a[x+78>>0]|0;w=Q+4|0;i=c[w>>2]|0;if(i&16777216|0){j=c[(c[Q+44>>2]|0)+52>>2]|0;Ra=Z;return j|0}do if(a[f+23>>0]|0){R=S+20|0;a[R>>0]=2;c[S+4>>2]=127;c[S+8>>2]=128;c[S+24>>2]=0;_j(S,Q)|0;if(!(a[R>>0]|0)){i=c[w>>2]|0;break}j=Nj(f,Q,-1)|0;Ra=Z;return j|0}while(0);if((i&16384|0)==0?(r=c[Q+20>>2]|0,(r|0)!=0):0){A=r;B=c[r>>2]|0;s=1}else{A=0;B=0;s=0}i=c[Q+8>>2]|0;v=Jd(x,i,B,k,0)|0;if(v|0?(c[v+20>>2]|0)==0:0){t=v+4|0;i=c[t>>2]|0;if(i&512|0){i=f+56|0;t=c[i>>2]|0;s=t+-1|0;c[i>>2]=s;i=c[A+4>>2]|0;do if(i){if((a[i>>0]|0)!=-88){z=Jj(f,i,j)|0;X=319;break}m=c[M>>2]|0;i=c[i+28>>2]|0;k=m+108|0;l=c[k>>2]|0;if((c[m+112>>2]|0)>(l|0)){c[k>>2]=l+1;S=c[m+104>>2]|0;a[S+(l*20|0)>>0]=78;b[S+(l*20|0)+2>>1]=0;c[S+(l*20|0)+4>>2]=i;c[S+(l*20|0)+8>>2]=j;c[S+(l*20|0)+12>>2]=0;c[S+(l*20|0)+16>>2]=0;a[S+(l*20|0)+1>>0]=0;break}else{Di(m,78,i,j,0)|0;break}}else{z=Jj(f,0,j)|0;X=319}while(0);do if(((X|0)==319?(z|0)!=(j|0):0)?(y=c[M>>2]|0,y|0):0){i=y+108|0;k=c[i>>2]|0;if((c[y+112>>2]|0)>(k|0)){c[i>>2]=k+1;S=c[y+104>>2]|0;a[S+(k*20|0)>>0]=79;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=z;c[S+(k*20|0)+8>>2]=j;c[S+(k*20|0)+12>>2]=0;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0;break}else{Di(y,79,z,j,0)|0;break}}while(0);if((B|0)>1){p=Y+108|0;q=Y+112|0;r=Y+104|0;n=1;do{i=c[p>>2]|0;if((c[q>>2]|0)>(i|0)){c[p>>2]=i+1;S=c[r>>2]|0;a[S+(i*20|0)>>0]=51;b[S+(i*20|0)+2>>1]=0;c[S+(i*20|0)+4>>2]=j;c[S+(i*20|0)+8>>2]=s;c[S+(i*20|0)+12>>2]=0;c[S+(i*20|0)+16>>2]=0;a[S+(i*20|0)+1>>0]=0}else Di(Y,51,j,s,0)|0;i=c[A+4+(n*20|0)>>2]|0;do if(i){if((a[i>>0]|0)!=-88){D=Jj(f,i,j)|0;X=336;break}m=c[M>>2]|0;i=c[i+28>>2]|0;k=m+108|0;l=c[k>>2]|0;if((c[m+112>>2]|0)>(l|0)){c[k>>2]=l+1;S=c[m+104>>2]|0;a[S+(l*20|0)>>0]=78;b[S+(l*20|0)+2>>1]=0;c[S+(l*20|0)+4>>2]=i;c[S+(l*20|0)+8>>2]=j;c[S+(l*20|0)+12>>2]=0;c[S+(l*20|0)+16>>2]=0;a[S+(l*20|0)+1>>0]=0;break}else{Di(m,78,i,j,0)|0;break}}else{D=Jj(f,0,j)|0;X=336}while(0);do if(((X|0)==336?(X=0,(D|0)!=(j|0)):0)?(C=c[M>>2]|0,C|0):0){i=C+108|0;k=c[i>>2]|0;if((c[C+112>>2]|0)>(k|0)){c[i>>2]=k+1;S=c[C+104>>2]|0;a[S+(k*20|0)>>0]=79;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=D;c[S+(k*20|0)+8>>2]=j;c[S+(k*20|0)+12>>2]=0;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0;break}else{Di(C,79,D,j,0)|0;break}}while(0);n=n+1|0}while((n|0)!=(B|0))}k=c[Y+12>>2]|0;i=0-t|0;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,Y,i);m=j;break}else{c[(c[k+64>>2]|0)+(i<<2)>>2]=c[Y+108>>2];m=j;break}}if(i&1024|0){j=Jj(f,c[A+4>>2]|0,j)|0;Ra=Z;return j|0}if((B|0)>0){m=S+20|0;p=S+4|0;q=S+8|0;r=S+24|0;i=0;n=0;l=0;do{if(l>>>0<32){k=c[A+4+(l*20|0)>>2]|0;a[m>>0]=1;c[p>>2]=127;c[q>>2]=128;c[r>>2]=0;if(!k)k=1<>0]|0)==0?0:1<>2]&32|0)==0))n=Yi(f,c[A+4+(l*20|0)>>2]|0)|0;l=l+1|0}while((l|0)!=(B|0));u=i}else{u=0;n=0}if(s){do if(!u)if((B|0)==1){i=f+19|0;k=a[i>>0]|0;if(!(k<<24>>24)){W=f+44|0;l=(c[W>>2]|0)+1|0;c[W>>2]=l;break}else{l=k+-1<<24>>24;a[i>>0]=l;l=c[f+148+((l&255)<<2)>>2]|0;break}}else{i=f+32|0;l=c[i>>2]|0;k=f+28|0;m=c[k>>2]|0;if((m|0)<(B|0)){W=f+44|0;l=c[W>>2]|0;c[W>>2]=l+B;l=l+1|0;break}else{c[i>>2]=l+B;c[k>>2]=m-B;break}}else{W=f+44|0;l=c[W>>2]|0;c[W>>2]=l+B;l=l+1|0}while(0);i=c[t>>2]&192;i:do if(i|0){k=c[A+4>>2]|0;switch(a[k>>0]|0){case -92:case -94:break;default:break i}a[k+38>>0]=i}while(0);Oj(f,A,l,0,3);r=l}else r=0;if((B|0)>1)if(!(c[w>>2]&128))X=375;else{i=A+24|0;X=376}else if((B|0)==1)X=375;else q=v;if((X|0)==375){i=A+4|0;X=376}if((X|0)==376)q=Pj(x,v,B,c[i>>2]|0)|0;do if(c[q+4>>2]&32){if(!n)n=c[x+8>>2]|0;p=Y+108|0;i=c[p>>2]|0;k=Y+112|0;if((c[k>>2]|0)>(i|0)){c[p>>2]=i+1;l=c[Y+104>>2]|0;a[l+(i*20|0)>>0]=82;l=l+(i*20|0)+1|0;m=l+19|0;do{a[l>>0]=0;l=l+1|0}while((l|0)<(m|0))}else i=Di(Y,82,0,0,0)|0;if(!(a[(c[Y>>2]|0)+81>>0]|0)){if((i|0)<0)i=(c[p>>2]|0)+-1|0;l=c[Y+104>>2]|0;m=l+(i*20|0)+1|0;if(a[m>>0]|0){Ei(Y,l+(i*20|0)|0,n,-2);break}if(!n)break;c[l+(i*20|0)+16>>2]=n;a[m>>0]=-2}}else{p=Y+108|0;k=Y+112|0}while(0);l=(c[f+52>>2]|0)==0?63:62;i=c[p>>2]|0;if((c[k>>2]|0)>(i|0)){c[p>>2]=i+1;X=c[Y+104>>2]|0;a[X+(i*20|0)>>0]=l;b[X+(i*20|0)+2>>1]=0;c[X+(i*20|0)+4>>2]=u;c[X+(i*20|0)+8>>2]=r;c[X+(i*20|0)+12>>2]=j;c[X+(i*20|0)+16>>2]=0;a[X+(i*20|0)+1>>0]=0}else i=Di(Y,l,u,r,j)|0;k=c[Y>>2]|0;j:do if(!(a[k+81>>0]|0)){if((i|0)<0)i=(c[p>>2]|0)+-1|0;k=c[Y+104>>2]|0;l=k+(i*20|0)+1|0;if(a[l>>0]|0){Ei(Y,k+(i*20|0)|0,q,-8);break}if(q|0){c[k+(i*20|0)+16>>2]=q;a[l>>0]=-8}}else if(c[q+4>>2]&16|0){do if(k|0){if(c[k+480>>2]|0){Xd(k,q);break j}i=q;if((c[k+304>>2]|0)>>>0>i>>>0)break;if((c[k+308>>2]|0)>>>0<=i>>>0)break;X=k+300|0;c[q>>2]=c[X>>2];c[X>>2]=q;break j}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{X=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-X;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}while(0);i=c[p>>2]|0;if((i|0)>0)b[(c[Y+104>>2]|0)+((i+-1|0)*20|0)+2>>1]=B&255;if(!((B|0)!=0&(u|0)==0)){Ra=Z;return j|0}if((B|0)!=1){i=f+28|0;if((c[i>>2]|0)>=(B|0)){Ra=Z;return j|0}c[i>>2]=B;c[f+32>>2]=r;Ra=Z;return j|0}if(!r){Ra=Z;return j|0}i=f+19|0;k=a[i>>0]|0;if((k&255)>=8){Ra=Z;return j|0}a[i>>0]=k+1<<24>>24;c[f+148+((k&255)<<2)>>2]=r;Ra=Z;return j|0}c[t>>2]=i;cd(f,38846,t);m=j;break}case 420:{if((v|0)==131?(k=c[c[c[Q+20>>2]>>2]>>2]|0,(k|0)!=1):0){c[n>>2]=k;c[n+4>>2]=1;cd(f,39001,n);m=j;break}j=Qj(f,Q)|0;Ra=Z;return j|0}case 424:{m=Q+12|0;i=c[m>>2]|0;if(!(c[i+28>>2]|0)){j=Qj(f,i)|0;i=c[m>>2]|0;c[i+28>>2]=j}l=c[Q+28>>2]|0;if(l){k=a[i>>0]|0;if(k<<24>>24==-88)k=a[i+38>>0]|0;switch(k<<24>>24){case -87:{k=i+20|0;X=432;break}case -125:{k=c[i+20>>2]|0;X=432;break}default:k=1}if((X|0)==432)k=c[c[k>>2]>>2]|0;if((l|0)!=(k|0)){c[s>>2]=l;c[s+4>>2]=k;cd(f,38869,s);i=c[m>>2]|0}}j=(c[i+28>>2]|0)+(b[Q+32>>1]|0)|0;Ra=Z;return j|0}case 436:{p=f+56|0;n=c[p>>2]|0;i=n+-2|0;c[p>>2]=i;p=Y+108|0;k=c[p>>2]|0;m=Y+112|0;if((c[m>>2]|0)>(k|0)){c[p>>2]=k+1;X=c[Y+104>>2]|0;a[X+(k*20|0)>>0]=73;b[X+(k*20|0)+2>>1]=0;c[X+(k*20|0)+4>>2]=0;c[X+(k*20|0)+8>>2]=j;c[X+(k*20|0)+12>>2]=0;c[X+(k*20|0)+16>>2]=0;a[X+(k*20|0)+1>>0]=0}else Di(Y,73,0,j,0)|0;Rj(f,Q,n+-1|0,i);i=c[p>>2]|0;if((c[m>>2]|0)>(i|0)){c[p>>2]=i+1;f=c[Y+104>>2]|0;a[f+(i*20|0)>>0]=70;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=1;c[f+(i*20|0)+8>>2]=j;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0}else Di(Y,70,1,j,0)|0;l=Y+12|0;i=c[l>>2]|0;k=0-n|0;if(((c[i+56>>2]|0)+(c[i+60>>2]|0)|0)<0)mk(i,Y,k);else c[(c[i+64>>2]|0)+(k<<2)>>2]=c[p>>2];i=c[p>>2]|0;if((c[m>>2]|0)>(i|0)){c[p>>2]=i+1;f=c[Y+104>>2]|0;a[f+(i*20|0)>>0]=83;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=j;c[f+(i*20|0)+8>>2]=0;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0}else Di(Y,83,j,0,0)|0;k=c[l>>2]|0;i=1-n|0;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,Y,i);Ra=Z;return j|0}else{c[(c[k+64>>2]|0)+(i<<2)>>2]=c[p>>2];Ra=Z;return j|0}}case 451:{Sj(f,c[Q+12>>2]|0,c[Q+20>>2]|0,j,0,0);Ra=Z;return j|0}case 453:{m=c[Q+44>>2]|0;k=G((b[m+42>>1]|0)+1|0,c[Q+28>>2]|0)|0;i=Q+32|0;k=(b[i>>1]|0)+1+k|0;n=Y+108|0;l=c[n>>2]|0;p=Y+112|0;if((c[p>>2]|0)>(l|0)){c[n>>2]=l+1;S=c[Y+104>>2]|0;a[S+(l*20|0)>>0]=-107;b[S+(l*20|0)+2>>1]=0;c[S+(l*20|0)+4>>2]=k;c[S+(l*20|0)+8>>2]=j;c[S+(l*20|0)+12>>2]=0;c[S+(l*20|0)+16>>2]=0;a[S+(l*20|0)+1>>0]=0}else Di(Y,149,k,j,0)|0;S=b[i>>1]|0;if(S<<16>>16>-1?(a[(c[m+4>>2]|0)+(S<<16>>16<<4)+13>>0]|0)==69:0){i=c[n>>2]|0;if((c[p>>2]|0)>(i|0)){c[n>>2]=i+1;m=c[Y+104>>2]|0;a[m+(i*20|0)>>0]=84;b[m+(i*20|0)+2>>1]=0;c[m+(i*20|0)+4>>2]=j;c[m+(i*20|0)+8>>2]=0;c[m+(i*20|0)+12>>2]=0;c[m+(i*20|0)+16>>2]=0;a[m+(i*20|0)+1>>0]=0;m=j;break}else{Di(Y,84,j,0,0)|0;m=j;break}}else m=j;break}case 461:{cd(f,38899,l);m=j;break}case 462:{i=c[Q+28>>2]|0;l=Y+108|0;k=c[l>>2]|0;if((c[Y+112>>2]|0)>(k|0)){c[l>>2]=k+1;S=c[Y+104>>2]|0;a[S+(k*20|0)>>0]=21;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=i;c[S+(k*20|0)+8>>2]=0;c[S+(k*20|0)+12>>2]=0;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0}else k=Di(Y,21,i,0,0)|0;m=Jj(f,c[Q+12>>2]|0,j)|0;i=c[l>>2]|0;if(!(a[(c[Y>>2]|0)+81>>0]|0)){j=(k|0)<0?i+-1|0:k;Y=c[Y+104>>2]|0;c[Y+(j*20|0)+8>>2]=i;i=Y+(j*20|0)|0}else{c[14829]=i;i=59308}c[i+12>>2]=m;break}case 469:{C=c[Q+20>>2]|0;D=c[C>>2]|0;F=f+56|0;I=c[F>>2]|0;H=I+-1|0;c[F>>2]=H;i=c[Q+12>>2]|0;z=(i|0)!=0;if(z){l=E;m=l+52|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));k=c[i+4>>2]|0;ew(E|0,i|0,((k&16384|0)==0?((k&8192|0)==0?52:28):12)|0)|0;k=a[E>>0]|0;y=E+38|0;switch((k<<24>>24==-88?a[y>>0]|0:k)<<24>>24){case -87:{l=c[E+20>>2]|0;i=l;X=473;break}case -125:{l=c[E+20>>2]|0;i=c[l>>2]|0;X=473;break}default:X=474}k:do if((X|0)==473){x=c[i>>2]|0;if((x|0)!=1){c[T>>2]=0;if(k<<24>>24==-125){i=Qj(f,E)|0;break}Q=f+44|0;P=c[Q>>2]|0;i=P+1|0;c[Q>>2]=P+x;if((x|0)>0){r=E+20|0;s=f+23|0;t=S+20|0;u=S+4|0;v=S+8|0;w=S+24|0;k=0;while(1){l=c[l+4+(k*20|0)>>2]|0;q=k+i|0;do if(!(a[s>>0]|0))if(!l){B=Jj(f,0,q)|0;X=491}else X=485;else{a[t>>0]=2;c[u>>2]=127;c[v>>2]=128;c[w>>2]=0;if(l){_j(S,l)|0;if(!(a[t>>0]|0)){X=485;break}}Nj(f,l,q)|0}while(0);do if((X|0)==485){X=0;if((a[l>>0]|0)!=-88){B=Jj(f,l,q)|0;X=491;break}p=c[M>>2]|0;l=c[l+28>>2]|0;m=p+108|0;n=c[m>>2]|0;if((c[p+112>>2]|0)>(n|0)){c[m>>2]=n+1;Q=c[p+104>>2]|0;a[Q+(n*20|0)>>0]=78;b[Q+(n*20|0)+2>>1]=0;c[Q+(n*20|0)+4>>2]=l;c[Q+(n*20|0)+8>>2]=q;c[Q+(n*20|0)+12>>2]=0;c[Q+(n*20|0)+16>>2]=0;a[Q+(n*20|0)+1>>0]=0;break}else{Di(p,78,l,q,0)|0;break}}while(0);do if(((X|0)==491?(X=0,(B|0)!=(q|0)):0)?(A=c[M>>2]|0,A|0):0){l=A+108|0;m=c[l>>2]|0;if((c[A+112>>2]|0)>(m|0)){c[l>>2]=m+1;Q=c[A+104>>2]|0;a[Q+(m*20|0)>>0]=79;b[Q+(m*20|0)+2>>1]=0;c[Q+(m*20|0)+4>>2]=B;c[Q+(m*20|0)+8>>2]=q;c[Q+(m*20|0)+12>>2]=0;c[Q+(m*20|0)+16>>2]=0;a[Q+(m*20|0)+1>>0]=0;break}else{Di(A,79,B,q,0)|0;break}}while(0);k=k+1|0;if((k|0)==(x|0))break k;l=c[r>>2]|0}}}else X=474}while(0);if((X|0)==474)i=Lj(f,E,T)|0;a[y>>0]=a[E>>0]|0;a[E>>0]=-88;c[E+28>>2]=i;l=E+4|0;c[l>>2]=c[l>>2]&-4097;l=R;m=l+52|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));a[R>>0]=53;c[R+12>>2]=E;c[T>>2]=0;i=R}else i=0;w=D+-1|0;if((D|0)>1){r=R+16|0;s=Y+108|0;t=Y+112|0;u=Y+104|0;v=Y+12|0;q=0;do{k=c[C+4+(q*20|0)>>2]|0;if(z)c[r>>2]=k;else i=k;p=c[F>>2]|0;k=p+-1|0;c[F>>2]=k;Tj(f,i,k,16);k=c[C+4+((q|1)*20|0)>>2]|0;do if(k){if((a[k>>0]|0)!=-88){K=Jj(f,k,j)|0;X=510;break}n=c[M>>2]|0;k=c[k+28>>2]|0;l=n+108|0;m=c[l>>2]|0;if((c[n+112>>2]|0)>(m|0)){c[l>>2]=m+1;S=c[n+104>>2]|0;a[S+(m*20|0)>>0]=78;b[S+(m*20|0)+2>>1]=0;c[S+(m*20|0)+4>>2]=k;c[S+(m*20|0)+8>>2]=j;c[S+(m*20|0)+12>>2]=0;c[S+(m*20|0)+16>>2]=0;a[S+(m*20|0)+1>>0]=0;break}else{Di(n,78,k,j,0)|0;break}}else{K=Jj(f,0,j)|0;X=510}while(0);do if(((X|0)==510?(X=0,(K|0)!=(j|0)):0)?(J=c[M>>2]|0,J|0):0){k=J+108|0;l=c[k>>2]|0;if((c[J+112>>2]|0)>(l|0)){c[k>>2]=l+1;S=c[J+104>>2]|0;a[S+(l*20|0)>>0]=79;b[S+(l*20|0)+2>>1]=0;c[S+(l*20|0)+4>>2]=K;c[S+(l*20|0)+8>>2]=j;c[S+(l*20|0)+12>>2]=0;c[S+(l*20|0)+16>>2]=0;a[S+(l*20|0)+1>>0]=0;break}else{Di(J,79,K,j,0)|0;break}}while(0);k=c[s>>2]|0;if((c[t>>2]|0)>(k|0)){c[s>>2]=k+1;S=c[u>>2]|0;a[S+(k*20|0)>>0]=11;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=0;c[S+(k*20|0)+8>>2]=H;c[S+(k*20|0)+12>>2]=0;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0}else Di(Y,11,0,H,0)|0;l=c[v>>2]|0;k=0-p|0;if(((c[l+56>>2]|0)+(c[l+60>>2]|0)|0)<0)mk(l,Y,k);else c[(c[l+64>>2]|0)+(k<<2)>>2]=c[s>>2];q=q+2|0}while((q|0)<(w|0))}l:do if(!(D&1)){i=Y+108|0;k=c[i>>2]|0;if((c[Y+112>>2]|0)>(k|0)){c[i>>2]=k+1;S=c[Y+104>>2]|0;a[S+(k*20|0)>>0]=73;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=0;c[S+(k*20|0)+8>>2]=j;c[S+(k*20|0)+12>>2]=0;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0;break}else{Di(Y,73,0,j,0)|0;break}}else{i=c[C+4+(w*20|0)>>2]|0;do if(i){if((a[i>>0]|0)!=-88){l=Jj(f,i,j)|0;break}m=c[M>>2]|0;i=c[i+28>>2]|0;k=m+108|0;l=c[k>>2]|0;if((c[m+112>>2]|0)>(l|0)){c[k>>2]=l+1;S=c[m+104>>2]|0;a[S+(l*20|0)>>0]=78;b[S+(l*20|0)+2>>1]=0;c[S+(l*20|0)+4>>2]=i;c[S+(l*20|0)+8>>2]=j;c[S+(l*20|0)+12>>2]=0;c[S+(l*20|0)+16>>2]=0;a[S+(l*20|0)+1>>0]=0;break l}else{Di(m,78,i,j,0)|0;break l}}else l=Jj(f,0,j)|0;while(0);if((l|0)!=(j|0)?(L=c[M>>2]|0,L|0):0){i=L+108|0;k=c[i>>2]|0;if((c[L+112>>2]|0)>(k|0)){c[i>>2]=k+1;S=c[L+104>>2]|0;a[S+(k*20|0)>>0]=79;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=l;c[S+(k*20|0)+8>>2]=j;c[S+(k*20|0)+12>>2]=0;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0;break}else{Di(L,79,l,j,0)|0;break}}}while(0);k=c[Y+12>>2]|0;i=0-I|0;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0)mk(k,Y,i);else c[(c[k+64>>2]|0)+(i<<2)>>2]=c[Y+108>>2];m=j;break}case 542:{if(!(c[f+120>>2]|0)){cd(f,38917,m);j=0;Ra=Z;return j|0}i=a[Q+1>>0]|0;switch(i<<24>>24){case 2:{Y=c[f+116>>2]|0;a[((Y|0)==0?f:Y)+21>>0]=1;break}case 4:{l=c[Q+8>>2]|0;k=Y+108|0;i=c[k>>2]|0;if((c[Y+112>>2]|0)>(i|0)){c[k>>2]=i+1;S=c[Y+104>>2]|0;a[S+(i*20|0)>>0]=69;b[S+(i*20|0)+2>>1]=0;c[S+(i*20|0)+4>>2]=0;c[S+(i*20|0)+8>>2]=4;c[S+(i*20|0)+12>>2]=0;c[S+(i*20|0)+16>>2]=0;a[S+(i*20|0)+1>>0]=0}else i=Di(Y,69,0,4,0)|0;if(a[(c[Y>>2]|0)+81>>0]|0){m=j;break b}if((i|0)<0)i=(c[k>>2]|0)+-1|0;Ei(Y,(c[Y+104>>2]|0)+(i*20|0)|0,l,0);m=j;break b}default:{}}Uj(f,1811,i<<24>>24,c[Q+8>>2]|0,0,0);m=j;break}}if((X|0)==12){i=c[Q+28>>2]|0;if(!(c[Q+4>>2]&8)){do if((i|0)<0){i=c[f+52>>2]|0;if((i|0)>=0){i=i+-1|0;break}j=(b[Q+32>>1]|0)-i|0;Ra=Z;return j|0}while(0);k=a[Q+38>>0]|0;Vj(Y,c[Q+44>>2]|0,i,b[Q+32>>1]|0,j);if(!(k<<24>>24)){Ra=Z;return j|0}i=c[Y+108>>2]|0;if((i|0)<=0){Ra=Z;return j|0}b[(c[Y+104>>2]|0)+((i+-1|0)*20|0)+2>>1]=k&255;Ra=Z;return j|0}m=Jj(f,c[Q+12>>2]|0,j)|0;i=b[Q+32>>1]|0;if(i<<16>>16>-1){i=a[(c[(c[Q+44>>2]|0)+4>>2]|0)+(i<<16>>16<<4)+13>>0]|0;if(i<<24>>24==65){j=m;Ra=Z;return j|0}else l=i<<24>>24}else l=68;n=Y+108|0;do if((m|0)!=(j|0)){i=c[n>>2]|0;k=Y+112|0;if((c[k>>2]|0)>(i|0)){c[n>>2]=i+1;f=c[Y+104>>2]|0;a[f+(i*20|0)>>0]=79;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=m;c[f+(i*20|0)+8>>2]=j;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0;break}else{Di(Y,79,m,j,0)|0;break}}else k=Y+112|0;while(0);m=38812+((l<<1)+-132)|0;i=c[n>>2]|0;if((c[k>>2]|0)>(i|0)){c[n>>2]=i+1;f=c[Y+104>>2]|0;a[f+(i*20|0)>>0]=91;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=j;c[f+(i*20|0)+8>>2]=1;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0}else i=Di(Y,91,j,1,0)|0;if(a[(c[Y>>2]|0)+81>>0]|0){Ra=Z;return j|0}if((i|0)<0)i=(c[n>>2]|0)+-1|0;k=c[Y+104>>2]|0;l=k+(i*20|0)+1|0;if(!(a[l>>0]|0)){c[k+(i*20|0)+16>>2]=m;a[l>>0]=-1;Ra=Z;return j|0}else{Ei(Y,k+(i*20|0)|0,m,-1);Ra=Z;return j|0}}do if((X|0)==158){N=c[Q+12>>2]|0;n=a[N>>0]|0;m=n<<24>>24==-88;if(m)i=a[N+38>>0]|0;else i=n;switch(i<<24>>24){case -87:{q=N+20|0;X=163;break}case -125:{q=c[N+20>>2]|0;X=163;break}default:{}}if((X|0)==163?(c[c[q>>2]>>2]|0)>=2:0){M=k&255;p=l&255;L=c[Q+16>>2]|0;if(m)i=a[N+38>>0]|0;else i=n;switch(i<<24>>24){case -87:{i=N+20|0;X=169;break}case -125:{i=c[N+20>>2]|0;X=169;break}default:l=1}if((X|0)==169)l=c[c[i>>2]>>2]|0;i=f+56|0;K=c[i>>2]|0;J=K+-1|0;c[i>>2]=J;i=a[L>>0]|0;if(i<<24>>24==-88)k=a[L+38>>0]|0;else k=i;switch(k<<24>>24){case -87:{k=L+20|0;X=175;break}case -125:{k=c[L+20>>2]|0;X=175;break}default:k=1}if((X|0)==175)k=c[c[k>>2]>>2]|0;if((l|0)!=(k|0)){cd(f,38899,w);m=j;break}k=M<<24>>24==55?56:M;if(n<<24>>24==-125){H=Qj(f,N)|0;i=a[L>>0]|0}else H=0;if(i<<24>>24==-125)t=Qj(f,L)|0;else t=0;u=N+38|0;v=N+20|0;w=N+28|0;x=N+20|0;y=L+38|0;z=L+20|0;A=L+28|0;B=L+20|0;C=f+19|0;D=l+-1|0;I=Y+108|0;E=Y+112|0;F=Y+104|0;s=l+-2|0;i=p|32;r=0;k=k<<24>>24==57?54:k;while(1){c[S>>2]=0;c[R>>2]=0;switch(a[N>>0]|0){case -88:{m=a[u>>0]|0;switch(m<<24>>24){case -87:{l=x;X=186;break}case -125:{l=c[v>>2]|0;X=186;break}default:l=N}do if((X|0)==186){X=0;if((c[c[l>>2]>>2]|0)>=2)if(m<<24>>24==-125){l=c[(c[c[v>>2]>>2]|0)+4+(r*20|0)>>2]|0;break}else{l=c[(c[x>>2]|0)+4+(r*20|0)>>2]|0;break}else l=N}while(0);p=(c[w>>2]|0)+r|0;break}case -125:{p=r+H|0;l=c[(c[c[v>>2]>>2]|0)+4+(r*20|0)>>2]|0;break}default:{l=c[(c[v>>2]|0)+4+(r*20|0)>>2]|0;p=Lj(f,l,S)|0}}switch(a[L>>0]|0){case -88:{n=a[y>>0]|0;switch(n<<24>>24){case -87:{m=B;X=196;break}case -125:{m=c[z>>2]|0;X=196;break}default:m=L}do if((X|0)==196){X=0;if((c[c[m>>2]>>2]|0)>=2)if(n<<24>>24==-125){m=c[(c[c[z>>2]>>2]|0)+4+(r*20|0)>>2]|0;break}else{m=c[(c[B>>2]|0)+4+(r*20|0)>>2]|0;break}else m=L}while(0);n=(c[A>>2]|0)+r|0;break}case -125:{n=r+t|0;m=c[(c[c[z>>2]>>2]|0)+4+(r*20|0)>>2]|0;break}default:{m=c[(c[z>>2]|0)+4+(r*20|0)>>2]|0;n=Lj(f,m,R)|0}}q=i&255;Mj(f,l,m,k&255,p,n,j,q);l=c[S>>2]|0;if(l|0?(O=a[C>>0]|0,(O&255)<8):0){a[C>>0]=O+1<<24>>24;c[f+148+((O&255)<<2)>>2]=l}l=c[R>>2]|0;if(l|0?(P=a[C>>0]|0,(P&255)<8):0){a[C>>0]=P+1<<24>>24;c[f+148+((P&255)<<2)>>2]=l}if((r|0)==(D|0))break;switch(k<<24>>24){case 53:{i=c[I>>2]|0;if((c[E>>2]|0)>(i|0)){c[I>>2]=i+1;Q=c[F>>2]|0;a[Q+(i*20|0)>>0]=20;b[Q+(i*20|0)+2>>1]=0;c[Q+(i*20|0)+4>>2]=j;c[Q+(i*20|0)+8>>2]=J;c[Q+(i*20|0)+12>>2]=0;c[Q+(i*20|0)+16>>2]=0;a[Q+(i*20|0)+1>>0]=0}else Di(Y,20,j,J,0)|0;i=(q|8)&255;k=53;break}case 52:{i=c[I>>2]|0;if((c[E>>2]|0)>(i|0)){c[I>>2]=i+1;Q=c[F>>2]|0;a[Q+(i*20|0)>>0]=18;b[Q+(i*20|0)+2>>1]=0;c[Q+(i*20|0)+4>>2]=j;c[Q+(i*20|0)+8>>2]=J;c[Q+(i*20|0)+12>>2]=0;c[Q+(i*20|0)+16>>2]=0;a[Q+(i*20|0)+1>>0]=0}else Di(Y,18,j,J,0)|0;i=(q|8)&255;k=52;break}default:{l=c[I>>2]|0;if((c[E>>2]|0)>(l|0)){c[I>>2]=l+1;Q=c[F>>2]|0;a[Q+(l*20|0)>>0]=58;b[Q+(l*20|0)+2>>1]=0;c[Q+(l*20|0)+4>>2]=0;c[Q+(l*20|0)+8>>2]=J;c[Q+(l*20|0)+12>>2]=0;c[Q+(l*20|0)+16>>2]=0;a[Q+(l*20|0)+1>>0]=0}else Di(Y,58,0,J,0)|0;k=(r|0)==(s|0)?M:k}}r=r+1|0}k=c[Y+12>>2]|0;i=0-K|0;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,Y,i);m=j;break}else{c[(c[k+64>>2]|0)+(i<<2)>>2]=c[I>>2];m=j;break}}Y=Lj(f,N,T)|0;X=Q+16|0;m=Lj(f,c[X>>2]|0,W)|0;Mj(f,N,c[X>>2]|0,k,Y,m,j,l|32);m=j}while(0);i=c[T>>2]|0;if(i|0?(U=f+19|0,V=a[U>>0]|0,(V&255)<8):0){a[U>>0]=V+1<<24>>24;c[f+148+((V&255)<<2)>>2]=i}i=c[W>>2]|0;if(!i){j=m;Ra=Z;return j|0}k=f+19|0;l=a[k>>0]|0;if((l&255)>=8){j=m;Ra=Z;return j|0}a[k>>0]=l+1<<24>>24;c[f+148+((l&255)<<2)>>2]=i;j=m;Ra=Z;return j|0}function Kj(f,h,i,j){f=f|0;h=h|0;i=i|0;j=j|0;var 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;w=Ra;Ra=Ra+32|0;s=w+16|0;u=w+8|0;n=w;v=c[f+8>>2]|0;if(c[h+4>>2]&1024|0){l=c[h+8>>2]|0;l=(i|0)==0?l:0-l|0;h=v+108|0;k=c[h>>2]|0;if((c[v+112>>2]|0)>(k|0)){c[h>>2]=k+1;v=c[v+104>>2]|0;a[v+(k*20|0)>>0]=70;b[v+(k*20|0)+2>>1]=0;c[v+(k*20|0)+4>>2]=l;c[v+(k*20|0)+8>>2]=j;c[v+(k*20|0)+12>>2]=0;c[v+(k*20|0)+16>>2]=0;a[v+(k*20|0)+1>>0]=0;Ra=w;return}else{Di(v,70,l,j,0)|0;Ra=w;return}}q=c[h+8>>2]|0;h=Vd(q,n)|0;r=(i|0)!=0;do if(!((h|0)==2|(r|(h|0)!=3)^1)?(o=n,m=c[o>>2]|0,o=c[o+4>>2]|0,!(r&((m|0)==0&(o|0)==-2147483648))):0){if(r){h=(h|0)==3;m=Tv(0,0,m|0,o|0)|0;o=L()|0;m=h?0:m;o=h?-2147483648:o;c[n>>2]=m;c[n+4>>2]=o}n=c[v>>2]|0;a:do if(c[n+272>>2]|0){if(!(a[n+81>>0]|0))t=68}else{do if((e[n+276>>1]|0)>=8){h=n+300|0;l=c[h>>2]|0;if(l|0){c[h>>2]=c[l>>2];t=n+284|0;c[t>>2]=(c[t>>2]|0)+1;t=69;break a}h=n+296|0;l=c[h>>2]|0;if(!l){h=n+292|0;break}else{c[h>>2]=c[l>>2];t=n+284|0;c[t>>2]=(c[t>>2]|0)+1;t=69;break a}}else h=n+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;t=68}while(0);if((t|0)==68){l=_d(n,8,0)|0;t=69}if((t|0)==69?l|0:0){n=l;h=n;a[h>>0]=m;a[h+1>>0]=m>>8;a[h+2>>0]=m>>16;a[h+3>>0]=m>>24;n=n+4|0;a[n>>0]=o;a[n+1>>0]=o>>8;a[n+2>>0]=o>>16;a[n+3>>0]=o>>24;n=v+108|0;h=c[n>>2]|0;if((c[v+112>>2]|0)>(h|0)){c[n>>2]=h+1;o=c[v+104>>2]|0;a[o+(h*20|0)>>0]=71;b[o+(h*20|0)+2>>1]=0;c[o+(h*20|0)+4>>2]=0;c[o+(h*20|0)+8>>2]=j;c[o+(h*20|0)+12>>2]=0;c[o+(h*20|0)+16>>2]=0;a[o+(h*20|0)+1>>0]=0}else h=Di(v,71,0,j,0)|0;m=c[v>>2]|0;if(!(a[m+81>>0]|0)){if((h|0)<0)h=(c[n>>2]|0)+-1|0;m=c[v+104>>2]|0;n=m+(h*20|0)+1|0;if(!(a[n>>0]|0)){c[m+(h*20|0)+16>>2]=l;a[n>>0]=-14;break}else{Ei(v,m+(h*20|0)|0,l,-14);break}}if(m|0){if(c[m+480>>2]|0){Xd(m,l);break}o=l;if((c[m+304>>2]|0)>>>0<=o>>>0?(c[m+308>>2]|0)>>>0>o>>>0:0){o=m+300|0;c[l>>2]=c[o>>2];c[o>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{o=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}l=v+108|0;h=c[l>>2]|0;if((c[v+112>>2]|0)>(h|0)){c[l>>2]=h+1;o=c[v+104>>2]|0;a[o+(h*20|0)>>0]=71;b[o+(h*20|0)+2>>1]=0;c[o+(h*20|0)+4>>2]=0;c[o+(h*20|0)+8>>2]=j;c[o+(h*20|0)+12>>2]=0;c[o+(h*20|0)+16>>2]=0;a[o+(h*20|0)+1>>0]=0}else h=Di(v,71,0,j,0)|0;if(!(a[(c[v>>2]|0)+81>>0]|0)){if((h|0)<0)h=(c[l>>2]|0)+-1|0;l=c[v+104>>2]|0;if(a[l+(h*20|0)+1>>0]|0)Ei(v,l+(h*20|0)|0,0,-14)}}else t=7;while(0);do if((t|0)==7?q|0:0){l=a[q>>0]|0;do if(!(l<<24>>24)){h=38972;t=9}else{h=l&255;if(l<<24>>24==48){h=a[q+1>>0]|0;if(!(h<<24>>24)){h=38973;t=9;break}h=h&255;if((h|32|0)==120)break;else k=120}else k=48;p=d[208+h>>0]|0;t=13}while(0);if((t|0)==9){p=0;k=a[208+(d[h>>0]|0)>>0]|0;t=13}if((t|0)==13?(p|0)!=(k&255|0):0){Lg(q,u,(Eu(q)|0)&1073741823,1)|0;if(i|0)g[u>>3]=-+g[u>>3];l=c[v>>2]|0;b:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))t=27;else t=47;else{do if((e[l+276>>1]|0)>=8){h=l+300|0;k=c[h>>2]|0;if(k|0){c[h>>2]=c[k>>2];m=l+284|0;c[m>>2]=(c[m>>2]|0)+1;m=k;t=28;break b}h=l+296|0;k=c[h>>2]|0;if(!k){h=l+292|0;break}else{c[h>>2]=c[k>>2];m=l+284|0;c[m>>2]=(c[m>>2]|0)+1;m=k;t=28;break b}}else h=l+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;t=27}while(0);if((t|0)==27){m=_d(l,8,0)|0;t=28}do if((t|0)==28)if(m){h=u;s=c[h>>2]|0;h=c[h+4>>2]|0;l=m;u=l;a[u>>0]=s;a[u+1>>0]=s>>8;a[u+2>>0]=s>>16;a[u+3>>0]=s>>24;l=l+4|0;a[l>>0]=h;a[l+1>>0]=h>>8;a[l+2>>0]=h>>16;a[l+3>>0]=h>>24;l=v+108|0;h=c[l>>2]|0;if((c[v+112>>2]|0)>(h|0)){c[l>>2]=h+1;u=c[v+104>>2]|0;a[u+(h*20|0)>>0]=-111;b[u+(h*20|0)+2>>1]=0;c[u+(h*20|0)+4>>2]=0;c[u+(h*20|0)+8>>2]=j;c[u+(h*20|0)+12>>2]=0;c[u+(h*20|0)+16>>2]=0;a[u+(h*20|0)+1>>0]=0}else h=Di(v,145,0,j,0)|0;k=c[v>>2]|0;if(!(a[k+81>>0]|0)){if((h|0)<0)h=(c[l>>2]|0)+-1|0;k=c[v+104>>2]|0;l=k+(h*20|0)+1|0;if(!(a[l>>0]|0)){c[k+(h*20|0)+16>>2]=m;a[l>>0]=-13;break}else{Ei(v,k+(h*20|0)|0,m,-13);break}}if(k|0){if(c[k+480>>2]|0){Xd(k,m);break}v=m;if((c[k+304>>2]|0)>>>0<=v>>>0?(c[k+308>>2]|0)>>>0>v>>>0:0){v=k+300|0;c[m>>2]=c[v>>2];c[v>>2]=m;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{v=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}else t=47;while(0);if((t|0)==47){k=v+108|0;h=c[k>>2]|0;if((c[v+112>>2]|0)>(h|0)){c[k>>2]=h+1;u=c[v+104>>2]|0;a[u+(h*20|0)>>0]=-111;b[u+(h*20|0)+2>>1]=0;c[u+(h*20|0)+4>>2]=0;c[u+(h*20|0)+8>>2]=j;c[u+(h*20|0)+12>>2]=0;c[u+(h*20|0)+16>>2]=0;a[u+(h*20|0)+1>>0]=0}else h=Di(v,145,0,j,0)|0;if(!(a[(c[v>>2]|0)+81>>0]|0)){if((h|0)<0)h=(c[k>>2]|0)+-1|0;k=c[v+104>>2]|0;if(a[k+(h*20|0)+1>>0]|0)Ei(v,k+(h*20|0)|0,0,-13)}}break}c[s>>2]=r?34064:59952;c[s+4>>2]=q;cd(f,38975,s)}while(0);Ra=w;return}function Lj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=Ra;Ra=Ra+32|0;g=i;a:do if(!d)f=0;else while(1){f=c[d+4>>2]|0;if(!(f&4096)){f=d;break a}if(!(f&262144))d=d+12|0;else d=(c[d+20>>2]|0)+4|0;d=c[d>>2]|0;if(!d){f=0;break}}while(0);if((a[b+23>>0]|0?(a[f>>0]|0)!=-88:0)?(d=g+20|0,a[d>>0]=2,c[g+4>>2]=127,c[g+8>>2]=128,c[g+24>>2]=0,_j(g,f)|0,a[d>>0]|0):0){c[e>>2]=0;e=Nj(b,f,-1)|0;Ra=i;return e|0}g=b+19|0;d=a[g>>0]|0;if(!(d<<24>>24)){j=b+44|0;d=(c[j>>2]|0)+1|0;c[j>>2]=d}else{d=d+-1<<24>>24;a[g>>0]=d;d=c[b+148+((d&255)<<2)>>2]|0}f=Jj(b,f,d)|0;if((f|0)!=(d|0))if((d|0)!=0?(h=a[g>>0]|0,(h&255)<8):0){a[g>>0]=h+1<<24>>24;c[b+148+((h&255)<<2)>>2]=d;d=0}else d=0;c[e>>2]=d;j=f;Ra=i;return j|0}function Mj(d,e,f,g,h,i,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0;do if(!(c[e+4>>2]&256)){if(f|0?c[f+4>>2]&256|0:0){n=Yi(d,f)|0;break}l=Yi(d,e)|0;if(!l)n=Yi(d,f)|0;else n=l}else n=Yi(d,e)|0;while(0);f=Xj(f)|0;l=Xj(e)|0;if(f<<24>>24==0|l<<24>>24==0)l=(l|f)<<24>>24==0?65:(l&255)+(f&255)|0;else l=f<<24>>24>66|l<<24>>24>66?67:65;m=l|k;k=d+8|0;d=c[k>>2]|0;f=d+108|0;l=c[f>>2]|0;if((c[d+112>>2]|0)>(l|0)){c[f>>2]=l+1;e=c[d+104>>2]|0;a[e+(l*20|0)>>0]=g;b[e+(l*20|0)+2>>1]=0;c[e+(l*20|0)+4>>2]=i;c[e+(l*20|0)+8>>2]=j;c[e+(l*20|0)+12>>2]=h;c[e+(l*20|0)+16>>2]=0;a[e+(l*20|0)+1>>0]=0}else l=Di(d,g,i,j,h)|0;do if(!(a[(c[d>>2]|0)+81>>0]|0)){if((l|0)<0)l=(c[f>>2]|0)+-1|0;f=c[d+104>>2]|0;e=f+(l*20|0)+1|0;if(a[e>>0]|0){Ei(d,f+(l*20|0)|0,n,-2);break}if(n|0){c[f+(l*20|0)+16>>2]=n;a[e>>0]=-2}}while(0);l=c[k>>2]|0;f=c[l+108>>2]|0;if((f|0)<=0)return;b[(c[l+104>>2]|0)+((f+-1|0)*20|0)+2>>1]=m&255;return}function Nj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=b+68|0;h=c[j>>2]|0;i=(e|0)<0;a:do if(i&(h|0)!=0?(f=c[h>>2]|0,(f|0)>0):0){g=h+4|0;while(1){if(a[g+13>>0]&4?(bk(0,c[g>>2]|0,d,-1)|0)==0:0)break;if((f|0)>1){f=f+-1|0;g=g+20|0}else break a}j=c[g+16>>2]|0;return j|0}while(0);if(!d)f=0;else f=dk(c[b>>2]|0,d,0,0)|0;g=nj(c[b>>2]|0,h,f)|0;if(g){f=(c[g>>2]|0)+-1|0;h=g+4+(f*20|0)+13|0;a[h>>0]=a[h>>0]&-5|e>>>29&4;if(i){i=b+44|0;e=(c[i>>2]|0)+1|0;c[i>>2]=e}c[g+4+(f*20|0)+16>>2]=e}c[j>>2]=g;j=e;return j|0}function Oj(d,e,f,g,h){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,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=Ra;Ra=Ra+32|0;A=F;i=h&255;D=79-(i&1)|0;y=c[d+8>>2]|0;j=c[e>>2]|0;if((j|0)<=0){Ra=F;return}w=((a[d+23>>0]|0)==0?i&253:h)&255;q=(w&4|0)==0;r=(w&2|0)==0;s=A+20|0;t=A+4|0;u=A+8|0;v=A+24|0;w=(w&8|0)==0;x=(D|0)==78;l=g+-1|0;m=y+108|0;n=y+112|0;o=y+104|0;p=D&255;k=e+4|0;h=0;i=j;while(1){g=c[k>>2]|0;do if(!q?(j=b[k+16>>1]|0,z=j&65535,j<<16>>16!=0):0){if(!w){h=h+-1|0;i=i+-1|0;break}g=l+z|0;e=h+f|0;j=c[m>>2]|0;if((c[n>>2]|0)>(j|0)){c[m>>2]=j+1;G=c[o>>2]|0;a[G+(j*20|0)>>0]=p;b[G+(j*20|0)+2>>1]=0;c[G+(j*20|0)+4>>2]=g;c[G+(j*20|0)+8>>2]=e;c[G+(j*20|0)+12>>2]=0;c[G+(j*20|0)+16>>2]=0;a[G+(j*20|0)+1>>0]=0;break}else{Di(y,D,g,e,0)|0;break}}else E=10;while(0);a:do if((E|0)==10){E=0;do if(!r){a[s>>0]=2;c[t>>2]=127;c[u>>2]=128;c[v>>2]=0;if(g){_j(A,g)|0;if(!(a[s>>0]|0))break}Nj(d,g,h+f|0)|0;break a}while(0);j=h+f|0;e=Jj(d,g,j)|0;if((e|0)!=(j|0)){if(x){if(!(a[(c[y>>2]|0)+81>>0]|0))g=(c[o>>2]|0)+(((c[m>>2]|0)+-1|0)*20|0)|0;else g=59308;if(((a[g>>0]|0)==78?(B=g+12|0,C=(c[B>>2]|0)+1|0,(C+(c[g+4>>2]|0)|0)==(e|0)):0)?(C+(c[g+8>>2]|0)|0)==(j|0):0){c[B>>2]=C;break}}g=c[m>>2]|0;if((c[n>>2]|0)>(g|0)){c[m>>2]=g+1;G=c[o>>2]|0;a[G+(g*20|0)>>0]=p;b[G+(g*20|0)+2>>1]=0;c[G+(g*20|0)+4>>2]=e;c[G+(g*20|0)+8>>2]=j;c[G+(g*20|0)+12>>2]=0;c[G+(g*20|0)+16>>2]=0;a[G+(g*20|0)+1>>0]=0;break}else{Di(y,D,e,j,0)|0;break}}}while(0);h=h+1|0;if((h|0)>=(i|0))break;else k=k+20|0}Ra=F;return}function Pj(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=Ra;Ra=Ra+16|0;l=n+4|0;m=n;c[l>>2]=0;c[m>>2]=0;if(!g){m=d;Ra=n;return m|0}if((a[g>>0]|0)!=-94){m=d;Ra=n;return m|0}g=c[g+44>>2]|0;if(!g){m=d;Ra=n;return m|0}if(!(c[g+56>>2]|0)){m=d;Ra=n;return m|0}g=g+64|0;while(1){g=c[g>>2]|0;if((c[g>>2]|0)==(b|0))break;else g=g+24|0}g=c[g+8>>2]|0;h=c[(c[g>>2]|0)+72>>2]|0;if(!h){m=d;Ra=n;return m|0}k=d+32|0;if(!(_a[h&127](g,f,c[k>>2]|0,l,m)|0)){m=d;Ra=n;return m|0}g=c[k>>2]|0;if(!g)i=41;else i=((Eu(g)|0)&1073741823)+41|0;a:do if(!b){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](i)|0;j=34;break}g=Wa[c[29356>>2]&127](i)|0;if((c[14985]|0)>>>0>>0)c[14985]=i;f=59064;h=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&h>>>0>0){b=c[14978]|0;f=Tv(h|0,f|0,g|0,((g|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&f>>>0<=b>>>0)&1}h=Wa[c[29340>>2]&127](g)|0;if(!h){m=d;Ra=n;return m|0}g=Wa[c[29352>>2]&127](h)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0){c[14987]=g;b=h}else b=h}else{if(c[b+272>>2]|0){if(a[b+81>>0]|0){m=d;Ra=n;return m|0}}else{do if(!(0<0|(0==0?(e[b+276>>1]|0)>>>0>>0:0))){h=b+300|0;g=c[h>>2]|0;if(g|0){c[h>>2]=c[g>>2];j=b+284|0;c[j>>2]=(c[j>>2]|0)+1;j=34;break a}h=b+296|0;g=c[h>>2]|0;if(!g){g=b+292|0;break}else{c[h>>2]=c[g>>2];j=b+284|0;c[j>>2]=(c[j>>2]|0)+1;j=34;break a}}else g=b+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1}g=_d(b,i,0)|0;j=34}while(0);if((j|0)==34)if(!g){m=d;Ra=n;return m|0}else b=g;gw(b+40|0,0,i+-40|0)|0;f=b;g=d;h=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));f=b+40|0;c[b+32>>2]=f;h=c[k>>2]|0;if(!h)g=1;else g=((Eu(h)|0)&1073741823)+1|0;ew(f|0,h|0,g|0)|0;c[b+16>>2]=c[l>>2];c[b+8>>2]=c[m>>2];m=b+4|0;c[m>>2]=c[m>>2]|16;m=b;Ra=n;return m|0}function Qj(d,e){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;r=Ra;Ra=Ra+48|0;k=r+8|0;h=r;o=r+16|0;q=c[d+8>>2]|0;p=c[e+20>>2]|0;f=e+4|0;g=c[f>>2]|0;do if(!(g&32)){if(g&33554432|0){c[h>>2]=c[p+20>>2];nk(d,0,39045,h);f=c[e+48>>2]|0;g=c[e+44>>2]|0;h=q+108|0;i=c[h>>2]|0;if((c[q+112>>2]|0)>(i|0)){c[h>>2]=i+1;q=c[q+104>>2]|0;a[q+(i*20|0)>>0]=12;b[q+(i*20|0)+2>>1]=0;c[q+(i*20|0)+4>>2]=f;c[q+(i*20|0)+8>>2]=g;c[q+(i*20|0)+12>>2]=0;c[q+(i*20|0)+16>>2]=0;a[q+(i*20|0)+1>>0]=0}else Di(q,12,f,g,0)|0;q=c[e+28>>2]|0;Ra=r;return q|0}c[f>>2]=g|33554432;i=d+44|0;f=(c[i>>2]|0)+1|0;c[i>>2]=f;c[e+48>>2]=f;i=q+108|0;g=c[i>>2]|0;j=q+112|0;if((c[j>>2]|0)>(g|0)){n=g+1|0;c[i>>2]=n;m=c[q+104>>2]|0;a[m+(g*20|0)>>0]=70;b[m+(g*20|0)+2>>1]=0;c[m+(g*20|0)+4>>2]=0;c[m+(g*20|0)+8>>2]=f;c[m+(g*20|0)+12>>2]=0;c[m+(g*20|0)+16>>2]=0;a[m+(g*20|0)+1>>0]=0;f=n}else f=(Di(q,70,0,f,0)|0)+1|0;c[e+44>>2]=f;h=c[i>>2]|0;if((c[j>>2]|0)>(h|0)){c[i>>2]=h+1;f=c[q+104>>2]|0;a[f+(h*20|0)>>0]=17;f=f+(h*20|0)+1|0;g=f+19|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(g|0));n=h;break}else{n=Di(q,17,0,0,0)|0;break}}else n=0;while(0);m=(n|0)!=0;f=c[p+20>>2]|0;c[k>>2]=m?59952:39084;c[k+4>>2]=f;nk(d,1,39063,k);f=(a[e>>0]|0)==-125;if(f)i=c[c[p>>2]>>2]|0;else i=1;s=d+44|0;j=c[s>>2]|0;k=j+1|0;a[o>>0]=0;l=o+4|0;c[l>>2]=k;c[o+16>>2]=0;g=o+8|0;c[g>>2]=0;h=o+12|0;c[h>>2]=0;j=j+i|0;c[s>>2]=j;do if(f){a[o>>0]=10;c[g>>2]=k;c[h>>2]=i;f=q+108|0;g=c[f>>2]|0;if((c[q+112>>2]|0)>(g|0)){c[f>>2]=g+1;s=c[q+104>>2]|0;a[s+(g*20|0)>>0]=73;b[s+(g*20|0)+2>>1]=0;c[s+(g*20|0)+4>>2]=0;c[s+(g*20|0)+8>>2]=k;c[s+(g*20|0)+12>>2]=j;c[s+(g*20|0)+16>>2]=0;a[s+(g*20|0)+1>>0]=0;break}else{Di(q,73,0,k,j)|0;break}}else{a[o>>0]=3;g=q+108|0;f=c[g>>2]|0;if((c[q+112>>2]|0)>(f|0)){c[g>>2]=f+1;s=c[q+104>>2]|0;a[s+(f*20|0)>>0]=70;b[s+(f*20|0)+2>>1]=0;c[s+(f*20|0)+4>>2]=0;c[s+(f*20|0)+8>>2]=k;c[s+(f*20|0)+12>>2]=0;c[s+(f*20|0)+16>>2]=0;a[s+(f*20|0)+1>>0]=0;break}else{Di(q,70,0,k,0)|0;break}}while(0);i=oj(c[d>>2]|0,147,17144,0)|0;h=p+60|0;f=c[h>>2]|0;if(!f){s=ej(d,141,i,0)|0;c[h>>2]=s}else{f=f+12|0;g=c[f>>2]|0;if(g){ni(c[d>>2]|0,g);f=(c[h>>2]|0)+12|0}c[f>>2]=i}c[p+12>>2]=0;if(kj(d,p,o)|0){s=0;Ra=r;return s|0}i=c[l>>2]|0;c[e+28>>2]=i;if(!m){s=i;Ra=r;return s|0}h=q+108|0;g=c[h>>2]|0;if(!(a[(c[q>>2]|0)+81>>0]|0))f=(c[q+104>>2]|0)+(((n|0)<0?g+-1|0:n)*20|0)|0;else f=59308;c[f+8>>2]=g;f=c[e+48>>2]|0;if((c[q+112>>2]|0)>(g|0)){c[h>>2]=g+1;s=c[q+104>>2]|0;a[s+(g*20|0)>>0]=66;b[s+(g*20|0)+2>>1]=0;c[s+(g*20|0)+4>>2]=f;c[s+(g*20|0)+8>>2]=0;c[s+(g*20|0)+12>>2]=0;c[s+(g*20|0)+16>>2]=0;a[s+(g*20|0)+1>>0]=0}else Di(q,66,f,0,0)|0;f=c[e+44>>2]|0;g=c[h>>2]|0;if(!(a[(c[q>>2]|0)+81>>0]|0))f=(c[q+104>>2]|0)+((((f|0)<1?g:f)+-1|0)*20|0)|0;else f=59308;c[f+4>>2]=g+-1;s=i;Ra=r;return s|0}function Rj(d,f,g,h){d=d|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,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,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;U=Ra;Ra=Ra+48|0;G=U+12|0;E=U+8|0;m=U+4|0;D=U;c[E>>2]=0;c[D>>2]=0;B=f+12|0;N=c[B>>2]|0;if(ok(d,f)|0){Ra=U;return}T=pk(d,f)|0;j=c[B>>2]|0;i=a[j>>0]|0;if(i<<24>>24==-88)i=a[j+38>>0]|0;switch(i<<24>>24){case -87:{i=j+20|0;J=7;break}case -125:{i=c[j+20>>2]|0;J=7;break}default:K=1}if((J|0)==7)K=c[c[i>>2]>>2]|0;k=c[d>>2]|0;l=(K*5|0)+1|0;a:do if(!k){Q=Sv(l|0,0,-1,-1)|0;P=L()|0;if(!(P>>>0>0|(P|0)==0&Q>>>0>2147483390)){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](l)|0;J=32;break}i=Wa[c[29356>>2]&127](l)|0;if((c[14985]|0)>>>0>>0)c[14985]=l;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){Q=c[14978]|0;P=Tv(j|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;O=L()|0;c[14768]=((O|0)<0|(O|0)==0&P>>>0<=Q>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(i){j=Wa[c[29352>>2]&127](i)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0){c[14987]=j;J=33}else J=33}else Q=0}else Q=0}else{if(c[k+272>>2]|0){if(a[k+81>>0]|0){Q=0;break}}else{do if(!(0<0|(0==0?(e[k+276>>1]|0)>>>0>>0:0))){j=k+300|0;i=c[j>>2]|0;if(i|0){c[j>>2]=c[i>>2];J=k+284|0;c[J>>2]=(c[J>>2]|0)+1;J=32;break a}j=k+296|0;i=c[j>>2]|0;if(!i){i=k+292|0;break}else{c[j>>2]=c[i>>2];J=k+284|0;c[J>>2]=(c[J>>2]|0)+1;J=32;break a}}else i=k+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(k,l,0)|0;J=32}while(0);if((J|0)==32)if(!i)Q=0;else J=33;if((J|0)==33){gw(i|0,0,l|0)|0;Q=i}i=c[d>>2]|0;if(!(a[i+81>>0]|0)){w=d+8|0;P=c[w>>2]|0;C=(g|0)==(h|0);z=qk(d,f,3,C?0:E,Q,D)|0;j=a[N>>0]|0;if(j<<24>>24==-88)i=a[N+38>>0]|0;else i=j;switch(i<<24>>24){case -87:{i=N+20|0;J=40;break}case -125:{i=c[N+20>>2]|0;J=40;break}default:J=41}do if((J|0)==40){v=c[c[i>>2]>>2]|0;if((v|0)!=1){c[m>>2]=0;if(j<<24>>24==-125){O=Qj(d,N)|0;break}O=d+44|0;M=c[O>>2]|0;n=M+1|0;c[O>>2]=M+v;if((v|0)>0){o=N+20|0;p=d+23|0;q=G+20|0;r=G+4|0;s=G+8|0;t=G+24|0;m=0;do{i=c[(c[o>>2]|0)+4+(m*20|0)>>2]|0;u=m+n|0;do if(!(a[p>>0]|0))if(!i){y=Jj(d,0,u)|0;J=58}else J=52;else{a[q>>0]=2;c[r>>2]=127;c[s>>2]=128;c[t>>2]=0;if(i){_j(G,i)|0;if(!(a[q>>0]|0)){J=52;break}}Nj(d,i,u)|0}while(0);do if((J|0)==52){J=0;if((a[i>>0]|0)!=-88){y=Jj(d,i,u)|0;J=58;break}l=c[w>>2]|0;i=c[i+28>>2]|0;j=l+108|0;k=c[j>>2]|0;if((c[l+112>>2]|0)>(k|0)){c[j>>2]=k+1;O=c[l+104>>2]|0;a[O+(k*20|0)>>0]=78;b[O+(k*20|0)+2>>1]=0;c[O+(k*20|0)+4>>2]=i;c[O+(k*20|0)+8>>2]=u;c[O+(k*20|0)+12>>2]=0;c[O+(k*20|0)+16>>2]=0;a[O+(k*20|0)+1>>0]=0;break}else{Di(l,78,i,u,0)|0;break}}while(0);do if(((J|0)==58?(J=0,(y|0)!=(u|0)):0)?(x=c[w>>2]|0,x|0):0){i=x+108|0;j=c[i>>2]|0;if((c[x+112>>2]|0)>(j|0)){c[i>>2]=j+1;O=c[x+104>>2]|0;a[O+(j*20|0)>>0]=79;b[O+(j*20|0)+2>>1]=0;c[O+(j*20|0)+4>>2]=y;c[O+(j*20|0)+8>>2]=u;c[O+(j*20|0)+12>>2]=0;c[O+(j*20|0)+16>>2]=0;a[O+(j*20|0)+1>>0]=0;break}else{Di(x,79,y,u,0)|0;break}}while(0);m=m+1|0}while((m|0)!=(v|0));O=n}else O=n}else J=41}while(0);if((J|0)==41)O=Lj(d,N,m)|0;r=(K|0)>0;b:do if(r){i=0;do{if((c[Q+(i<<2)>>2]|0)!=(i|0))break b;i=i+1|0}while((i|0)<(K|0))}else i=0;while(0);if((i|0)!=(K|0)){do if((K|0)==1){i=d+19|0;j=a[i>>0]|0;if(!(j<<24>>24)){M=d+44|0;j=(c[M>>2]|0)+1|0;c[M>>2]=j;break}else{j=j+-1<<24>>24;a[i>>0]=j;j=c[d+148+((j&255)<<2)>>2]|0;break}}else{i=d+32|0;j=c[i>>2]|0;k=d+28|0;l=c[k>>2]|0;if((l|0)<(K|0)){M=d+44|0;j=c[M>>2]|0;c[M>>2]=j+K;j=j+1|0;break}else{c[i>>2]=j+K;c[k>>2]=l-K;break}}while(0);if(r){k=P+108|0;l=P+112|0;m=P+104|0;i=0;do{n=i+O|0;o=(c[Q+(i<<2)>>2]|0)+j|0;p=c[k>>2]|0;if((c[l>>2]|0)>(p|0)){c[k>>2]=p+1;M=c[m>>2]|0;a[M+(p*20|0)>>0]=78;b[M+(p*20|0)+2>>1]=0;c[M+(p*20|0)+4>>2]=n;c[M+(p*20|0)+8>>2]=o;c[M+(p*20|0)+12>>2]=0;c[M+(p*20|0)+16>>2]=0;a[M+(p*20|0)+1>>0]=0}else Di(P,78,n,o,0)|0;i=i+1|0}while((i|0)!=(K|0));M=j}else M=j}else M=O;c:do if((z|0)==5){v=c[f+20>>2]|0;s=Yi(d,c[B>>2]|0)|0;u=d+56|0;x=c[u>>2]|0;t=x+-1|0;c[u>>2]=t;u=(h|0)!=(g|0);do if(u){i=d+19|0;j=a[i>>0]|0;if(!(j<<24>>24)){N=d+44|0;i=(c[N>>2]|0)+1|0;c[N>>2]=i}else{N=j+-1<<24>>24;a[i>>0]=N;i=c[d+148+((N&255)<<2)>>2]|0}j=P+108|0;k=c[j>>2]|0;if((c[P+112>>2]|0)>(k|0)){c[j>>2]=k+1;w=c[P+104>>2]|0;a[w+(k*20|0)>>0]=96;b[w+(k*20|0)+2>>1]=0;c[w+(k*20|0)+4>>2]=M;c[w+(k*20|0)+8>>2]=M;c[w+(k*20|0)+12>>2]=i;c[w+(k*20|0)+16>>2]=0;a[w+(k*20|0)+1>>0]=0;w=i;break}else{Di(P,96,M,M,i)|0;w=i;break}}else w=0;while(0);if((c[v>>2]|0)>0){m=(w|0)==0;n=P+108|0;o=P+112|0;p=P+104|0;q=d+19|0;r=(s|0)==0;l=0;do{i=v+4+(l*20|0)|0;k=Lj(d,c[i>>2]|0,G)|0;d:do if(!m){i=c[i>>2]|0;j=a[i>>0]|0;if((j+91&255)<2)do{i=c[i+12>>2]|0;j=a[i>>0]|0}while((j+91&255)<2);if(j<<24>>24==-88)j=a[i+38>>0]|0;e:do switch(j<<24>>24){case -110:case -111:case 110:case -109:break d;case -94:{if(!(c[i+4>>2]&1048576)){j=c[i+44>>2]|0;if(!j)break e;i=b[i+32>>1]|0;if(i<<16>>16<=-1)break d;if(a[(c[j+4>>2]|0)+(i<<16>>16<<4)+12>>0]|0)break d}break}default:{}}while(0);i=c[n>>2]|0;if((c[o>>2]|0)>(i|0)){c[n>>2]=i+1;N=c[p>>2]|0;a[N+(i*20|0)>>0]=96;b[N+(i*20|0)+2>>1]=0;c[N+(i*20|0)+4>>2]=w;c[N+(i*20|0)+8>>2]=k;c[N+(i*20|0)+12>>2]=w;c[N+(i*20|0)+16>>2]=0;a[N+(i*20|0)+1>>0]=0;break}else{Di(P,96,w,k,w)|0;break}}while(0);i=c[n>>2]|0;j=(c[o>>2]|0)>(i|0);if(u|(l|0)<((c[v>>2]|0)+-1|0)){if(j){c[n>>2]=i+1;N=c[p>>2]|0;a[N+(i*20|0)>>0]=53;b[N+(i*20|0)+2>>1]=0;c[N+(i*20|0)+4>>2]=M;c[N+(i*20|0)+8>>2]=t;c[N+(i*20|0)+12>>2]=k;c[N+(i*20|0)+16>>2]=0;a[N+(i*20|0)+1>>0]=0}else i=Di(P,53,M,t,k)|0;do if(!(a[(c[P>>2]|0)+81>>0]|0)){if((i|0)<0)i=(c[n>>2]|0)+-1|0;j=c[p>>2]|0;k=j+(i*20|0)+1|0;if(a[k>>0]|0){Ei(P,j+(i*20|0)|0,s,-2);break}if(r)break;c[j+(i*20|0)+16>>2]=s;a[k>>0]=-2}while(0);i=c[n>>2]|0;if((i|0)>0)b[(c[p>>2]|0)+((i+-1|0)*20|0)+2>>1]=a[T>>0]|0}else{if(j){c[n>>2]=i+1;N=c[p>>2]|0;a[N+(i*20|0)>>0]=52;b[N+(i*20|0)+2>>1]=0;c[N+(i*20|0)+4>>2]=M;c[N+(i*20|0)+8>>2]=g;c[N+(i*20|0)+12>>2]=k;c[N+(i*20|0)+16>>2]=0;a[N+(i*20|0)+1>>0]=0}else i=Di(P,52,M,g,k)|0;do if(!(a[(c[P>>2]|0)+81>>0]|0)){if((i|0)<0)i=(c[n>>2]|0)+-1|0;j=c[p>>2]|0;k=j+(i*20|0)+1|0;if(a[k>>0]|0){Ei(P,j+(i*20|0)|0,s,-2);break}if(r)break;c[j+(i*20|0)+16>>2]=s;a[k>>0]=-2}while(0);i=c[n>>2]|0;if((i|0)>0)b[(c[p>>2]|0)+((i+-1|0)*20|0)+2>>1]=(a[T>>0]|16)<<24>>24}i=c[G>>2]|0;if(i|0?(F=a[q>>0]|0,(F&255)<8):0){a[q>>0]=F+1<<24>>24;c[d+148+((F&255)<<2)>>2]=i}l=l+1|0}while((l|0)<(c[v>>2]|0))}l=(w|0)==0;do if(!l){j=P+108|0;i=c[j>>2]|0;k=P+112|0;if((c[k>>2]|0)>(i|0)){c[j>>2]=i+1;N=c[P+104>>2]|0;a[N+(i*20|0)>>0]=50;b[N+(i*20|0)+2>>1]=0;c[N+(i*20|0)+4>>2]=w;c[N+(i*20|0)+8>>2]=h;c[N+(i*20|0)+12>>2]=0;c[N+(i*20|0)+16>>2]=0;a[N+(i*20|0)+1>>0]=0}else Di(P,50,w,h,0)|0;i=c[j>>2]|0;if((c[k>>2]|0)>(i|0)){c[j>>2]=i+1;h=c[P+104>>2]|0;a[h+(i*20|0)>>0]=11;b[h+(i*20|0)+2>>1]=0;c[h+(i*20|0)+4>>2]=0;c[h+(i*20|0)+8>>2]=g;c[h+(i*20|0)+12>>2]=0;c[h+(i*20|0)+16>>2]=0;a[h+(i*20|0)+1>>0]=0;break}else{Di(P,11,0,g,0)|0;break}}while(0);j=c[P+12>>2]|0;i=0-x|0;if(((c[j+56>>2]|0)+(c[j+60>>2]|0)|0)<0)mk(j,P,i);else c[(c[j+64>>2]|0)+(i<<2)>>2]=c[P+108>>2];if(!l?(H=d+19|0,I=a[H>>0]|0,(I&255)<8):0){a[H>>0]=I+1<<24>>24;c[d+148+((I&255)<<2)>>2]=w}}else{if(C){l=g;q=0}else{l=d+56|0;q=(c[l>>2]|0)+-1|0;c[l>>2]=q;l=q}f:do if(r){n=P+108|0;o=P+112|0;p=P+104|0;m=0;while(1){i=c[B>>2]|0;k=a[i>>0]|0;if(k<<24>>24==-88)j=a[i+38>>0]|0;else j=k;switch(j<<24>>24){case -87:{j=i+20|0;J=158;break}case -125:{j=c[i+20>>2]|0;J=158;break}default:{}}do if((J|0)==158){J=0;if((c[c[j>>2]>>2]|0)>=2){if(k<<24>>24!=-125?(a[i+38>>0]|0)!=-125:0){i=c[(c[i+20>>2]|0)+4+(m*20|0)>>2]|0;break}i=c[(c[c[i+20>>2]>>2]|0)+4+(m*20|0)>>2]|0}}while(0);j=a[i>>0]|0;if((j+91&255)<2)do{i=c[i+12>>2]|0;j=a[i>>0]|0}while((j+91&255)<2);if(j<<24>>24==-88)j=a[i+38>>0]|0;g:do switch(j<<24>>24){case -110:case -111:case 110:case -109:break;case -94:{if((c[i+4>>2]&1048576|0)==0?(A=c[i+44>>2]|0,(A|0)!=0):0){i=b[i+32>>1]|0;if(i<<16>>16<=-1)break g;if(!(a[(c[A+4>>2]|0)+(i<<16>>16<<4)+12>>0]|0))J=173}else J=173;break}default:J=173}while(0);do if((J|0)==173){J=0;i=m+M|0;j=c[n>>2]|0;if((c[o>>2]|0)>(j|0)){c[n>>2]=j+1;I=c[p>>2]|0;a[I+(j*20|0)>>0]=50;b[I+(j*20|0)+2>>1]=0;c[I+(j*20|0)+4>>2]=i;c[I+(j*20|0)+8>>2]=l;c[I+(j*20|0)+12>>2]=0;c[I+(j*20|0)+16>>2]=0;a[I+(j*20|0)+1>>0]=0;break}else{Di(P,50,i,l,0)|0;break}}while(0);m=m+1|0;if((m|0)==(K|0))break f}}while(0);do if((z|0)==1){l=c[D>>2]|0;j=P+108|0;i=c[j>>2]|0;k=P+112|0;if((c[k>>2]|0)>(i|0)){c[j>>2]=i+1;I=c[P+104>>2]|0;a[I+(i*20|0)>>0]=30;b[I+(i*20|0)+2>>1]=0;c[I+(i*20|0)+4>>2]=l;c[I+(i*20|0)+8>>2]=g;c[I+(i*20|0)+12>>2]=M;c[I+(i*20|0)+16>>2]=0;a[I+(i*20|0)+1>>0]=0}else Di(P,30,l,g,M)|0;i=c[j>>2]|0;if((c[k>>2]|0)>(i|0)){c[j>>2]=i+1;j=c[P+104>>2]|0;a[j+(i*20|0)>>0]=11;j=j+(i*20|0)+1|0;k=j+19|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(k|0));z=l;break}else{i=Di(P,11,0,0,0)|0;z=l;break}}else{n=P+108|0;i=c[n>>2]|0;m=P+112|0;if((c[m>>2]|0)>(i|0)){c[n>>2]=i+1;I=c[P+104>>2]|0;a[I+(i*20|0)>>0]=91;b[I+(i*20|0)+2>>1]=0;c[I+(i*20|0)+4>>2]=M;c[I+(i*20|0)+8>>2]=K;c[I+(i*20|0)+12>>2]=0;c[I+(i*20|0)+16>>2]=0;a[I+(i*20|0)+1>>0]=0}else i=Di(P,91,M,K,0)|0;j=c[P>>2]|0;h:do if(a[j+81>>0]|0){if((K|0)!=-12)kg(j,K,T)}else{if((i|0)<0)i=(c[n>>2]|0)+-1|0;j=c[P+104>>2]|0;k=j+(i*20|0)|0;do if((K|0)<=-1){l=j+(i*20|0)+1|0;if(a[l>>0]|0)break;if((K|0)==-3){c[j+(i*20|0)+16>>2]=T;a[l>>0]=-3;break h}if(!T)break h;c[j+(i*20|0)+16>>2]=T;a[l>>0]=K;if((K|0)!=-12)break h;I=T+12|0;c[I>>2]=(c[I>>2]|0)+1;break h}while(0);Ei(P,k,T,K)}while(0);k=c[D>>2]|0;i=c[n>>2]|0;j=(c[m>>2]|0)>(i|0);if(C){if(j){c[n>>2]=i+1;h=c[P+104>>2]|0;a[h+(i*20|0)>>0]=28;b[h+(i*20|0)+2>>1]=0;c[h+(i*20|0)+4>>2]=k;c[h+(i*20|0)+8>>2]=g;c[h+(i*20|0)+12>>2]=M;c[h+(i*20|0)+16>>2]=0;a[h+(i*20|0)+1>>0]=0}else i=Di(P,28,k,g,M)|0;if(a[(c[P>>2]|0)+81>>0]|0)break c;g=c[P+104>>2]|0;a[g+(i*20|0)+1>>0]=-3;c[g+(i*20|0)+16>>2]=K;break c}else{if(j){c[n>>2]=i+1;I=c[P+104>>2]|0;a[I+(i*20|0)>>0]=29;b[I+(i*20|0)+2>>1]=0;c[I+(i*20|0)+4>>2]=k;c[I+(i*20|0)+8>>2]=0;c[I+(i*20|0)+12>>2]=M;c[I+(i*20|0)+16>>2]=0;a[I+(i*20|0)+1>>0]=0}else i=Di(P,29,k,0,M)|0;if(a[(c[P>>2]|0)+81>>0]|0){z=k;break}z=c[P+104>>2]|0;a[z+(i*20|0)+1>>0]=-3;c[z+(i*20|0)+16>>2]=K;z=k;break}}while(0);j=c[E>>2]|0;do if((K|0)==1&(j|0)!=0){k=P+108|0;l=c[k>>2]|0;if((c[P+112>>2]|0)>(l|0)){c[k>>2]=l+1;I=c[P+104>>2]|0;a[I+(l*20|0)>>0]=51;b[I+(l*20|0)+2>>1]=0;c[I+(l*20|0)+4>>2]=j;c[I+(l*20|0)+8>>2]=g;c[I+(l*20|0)+12>>2]=0;c[I+(l*20|0)+16>>2]=0;a[I+(l*20|0)+1>>0]=0;break}else{Di(P,51,j,g,0)|0;break}}while(0);do if(C){j=P+108|0;k=c[j>>2]|0;if((c[P+112>>2]|0)>(k|0)){c[j>>2]=k+1;I=c[P+104>>2]|0;a[I+(k*20|0)>>0]=11;b[I+(k*20|0)+2>>1]=0;c[I+(k*20|0)+4>>2]=0;c[I+(k*20|0)+8>>2]=g;c[I+(k*20|0)+12>>2]=0;c[I+(k*20|0)+16>>2]=0;a[I+(k*20|0)+1>>0]=0;break}else{Di(P,11,0,g,0)|0;break}}while(0);do if(q|0){k=c[P+12>>2]|0;j=~q;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,P,j);break}else{c[(c[k+64>>2]|0)+(j<<2)>>2]=c[P+108>>2];break}}while(0);y=P+108|0;j=c[y>>2]|0;f=P+112|0;if((c[f>>2]|0)>(j|0)){c[y>>2]=j+1;x=c[P+104>>2]|0;a[x+(j*20|0)>>0]=36;b[x+(j*20|0)+2>>1]=0;c[x+(j*20|0)+4>>2]=z;c[x+(j*20|0)+8>>2]=g;c[x+(j*20|0)+12>>2]=0;c[x+(j*20|0)+16>>2]=0;a[x+(j*20|0)+1>>0]=0;x=j}else x=Di(P,36,z,g,0)|0;v=(K|0)>1;if(v){I=d+56|0;w=(c[I>>2]|0)+-1|0;c[I>>2]=w}else w=g;i:do if(r){p=d+19|0;q=d+44|0;r=N+38|0;s=N+20|0;t=N+20|0;u=P+104|0;o=0;while(1){j=a[p>>0]|0;if(!(j<<24>>24)){n=(c[q>>2]|0)+1|0;c[q>>2]=n}else{n=j+-1<<24>>24;a[p>>0]=n;n=c[d+148+((n&255)<<2)>>2]|0}k=a[N>>0]|0;if(k<<24>>24==-88)j=a[r>>0]|0;else j=k;switch(j<<24>>24){case -87:{j=s;J=237;break}case -125:{j=c[t>>2]|0;J=237;break}default:j=N}j:do if((J|0)==237){J=0;if((c[c[j>>2]>>2]|0)<2){j=N;break}do if(k<<24>>24!=-125){if((a[r>>0]|0)==-125)break;j=c[(c[s>>2]|0)+4+(o*20|0)>>2]|0;break j}while(0);j=c[(c[c[t>>2]>>2]|0)+4+(o*20|0)>>2]|0}while(0);m=Yi(d,j)|0;j=c[y>>2]|0;if((c[f>>2]|0)>(j|0)){c[y>>2]=j+1;I=c[u>>2]|0;a[I+(j*20|0)>>0]=90;b[I+(j*20|0)+2>>1]=0;c[I+(j*20|0)+4>>2]=z;c[I+(j*20|0)+8>>2]=o;c[I+(j*20|0)+12>>2]=n;c[I+(j*20|0)+16>>2]=0;a[I+(j*20|0)+1>>0]=0}else Di(P,90,z,o,n)|0;k=o+M|0;j=c[y>>2]|0;if((c[f>>2]|0)>(j|0)){c[y>>2]=j+1;I=c[u>>2]|0;a[I+(j*20|0)>>0]=52;b[I+(j*20|0)+2>>1]=0;c[I+(j*20|0)+4>>2]=k;c[I+(j*20|0)+8>>2]=w;c[I+(j*20|0)+12>>2]=n;c[I+(j*20|0)+16>>2]=0;a[I+(j*20|0)+1>>0]=0}else j=Di(P,52,k,w,n)|0;do if(!(a[(c[P>>2]|0)+81>>0]|0)){if((j|0)<0)j=(c[y>>2]|0)+-1|0;k=c[u>>2]|0;l=k+(j*20|0)+1|0;if(a[l>>0]|0){Ei(P,k+(j*20|0)|0,m,-2);break}if(!m)break;c[k+(j*20|0)+16>>2]=m;a[l>>0]=-2}while(0);do if(n|0){j=a[p>>0]|0;if((j&255)>=8)break;a[p>>0]=j+1<<24>>24;c[d+148+((j&255)<<2)>>2]=n}while(0);o=o+1|0;if((o|0)==(K|0))break i}}while(0);j=c[y>>2]|0;if((c[f>>2]|0)>(j|0)){c[y>>2]=j+1;N=c[P+104>>2]|0;a[N+(j*20|0)>>0]=11;b[N+(j*20|0)+2>>1]=0;c[N+(j*20|0)+4>>2]=0;c[N+(j*20|0)+8>>2]=h;c[N+(j*20|0)+12>>2]=0;c[N+(j*20|0)+16>>2]=0;a[N+(j*20|0)+1>>0]=0}else Di(P,11,0,h,0)|0;do if(v){k=c[P+12>>2]|0;j=~w;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0)mk(k,P,j);else c[(c[k+64>>2]|0)+(j<<2)>>2]=c[y>>2];j=x+1|0;k=c[y>>2]|0;if((c[f>>2]|0)>(k|0)){c[y>>2]=k+1;h=c[P+104>>2]|0;a[h+(k*20|0)>>0]=5;b[h+(k*20|0)+2>>1]=0;c[h+(k*20|0)+4>>2]=z;c[h+(k*20|0)+8>>2]=j;c[h+(k*20|0)+12>>2]=0;c[h+(k*20|0)+16>>2]=0;a[h+(k*20|0)+1>>0]=0}else Di(P,5,z,j,0)|0;j=c[y>>2]|0;if((c[f>>2]|0)>(j|0)){c[y>>2]=j+1;h=c[P+104>>2]|0;a[h+(j*20|0)>>0]=11;b[h+(j*20|0)+2>>1]=0;c[h+(j*20|0)+4>>2]=0;c[h+(j*20|0)+8>>2]=g;c[h+(j*20|0)+12>>2]=0;c[h+(j*20|0)+16>>2]=0;a[h+(j*20|0)+1>>0]=0;break}else{Di(P,11,0,g,0)|0;break}}while(0);j=c[y>>2]|0;if(!(a[(c[P>>2]|0)+81>>0]|0))i=(c[P+104>>2]|0)+(((i|0)<0?j+-1|0:i)*20|0)|0;else i=59308;c[i+8>>2]=j}while(0);if(!((M|0)==(O|0)|(M|0)==0)?(R=d+19|0,S=a[R>>0]|0,(S&255)<8):0){a[R>>0]=S+1<<24>>24;c[d+148+((S&255)<<2)>>2]=M}i=c[d>>2]|0}do if(Q|0){if(i|0){if(c[i+480>>2]|0){Xd(i,Q);break}S=Q;if((c[i+304>>2]|0)>>>0<=S>>>0?(c[i+308>>2]|0)>>>0>S>>>0:0){S=i+300|0;c[Q>>2]=c[S>>2];c[S>>2]=Q;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](Q);break}else{S=Wa[c[29352>>2]&127](Q)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Q);break}}while(0);i=c[d>>2]|0;if(!T){Ra=U;return}if(i|0){if(c[i+480>>2]|0){Xd(i,T);Ra=U;return}d=T;if((c[i+304>>2]|0)>>>0<=d>>>0?(c[i+308>>2]|0)>>>0>d>>>0:0){d=i+300|0;c[T>>2]=c[d>>2];c[d>>2]=T;Ra=U;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](T);Ra=U;return}else{d=Wa[c[29352>>2]&127](T)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](T);Ra=U;return}}function Sj(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,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;E=Ra;Ra=Ra+240|0;y=E+212|0;C=E+160|0;j=E+108|0;k=E+56|0;B=E+4|0;D=E;c[D>>2]=0;l=j;m=l+52|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));l=k;m=l+52|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));l=C;m=l+52|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));l=B;m=l+52|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));w=c[e+4>>2]|0;ew(B|0,e|0,((w&16384|0)==0?((w&8192|0)==0?52:28):12)|0)|0;a[C>>0]=44;c[C+12>>2]=j;c[C+16>>2]=k;a[j>>0]=57;c[j+12>>2]=B;c[j+16>>2]=c[f+4>>2];a[k>>0]=55;c[k+12>>2]=B;c[k+16>>2]=c[f+24>>2];f=a[B>>0]|0;w=B+38|0;switch((f<<24>>24==-88?a[w>>0]|0:f)<<24>>24){case -87:{j=c[B+20>>2]|0;e=j;x=4;break}case -125:{j=c[B+20>>2]|0;e=c[j>>2]|0;x=4;break}default:x=5}a:do if((x|0)==4){v=c[e>>2]|0;if((v|0)!=1){c[D>>2]=0;if(f<<24>>24==-125){e=Qj(d,B)|0;break}u=d+44|0;t=c[u>>2]|0;e=t+1|0;c[u>>2]=t+v;if((v|0)>0){o=B+20|0;p=d+23|0;q=y+20|0;r=y+4|0;s=y+8|0;t=y+24|0;u=d+8|0;f=0;while(1){j=c[j+4+(f*20|0)>>2]|0;n=f+e|0;do if(!(a[p>>0]|0))if(!j){A=Jj(d,0,n)|0;x=22}else x=16;else{a[q>>0]=2;c[r>>2]=127;c[s>>2]=128;c[t>>2]=0;if(j){_j(y,j)|0;if(!(a[q>>0]|0)){x=16;break}}Nj(d,j,n)|0}while(0);do if((x|0)==16){x=0;if((a[j>>0]|0)!=-88){A=Jj(d,j,n)|0;x=22;break}m=c[u>>2]|0;j=c[j+28>>2]|0;k=m+108|0;l=c[k>>2]|0;if((c[m+112>>2]|0)>(l|0)){c[k>>2]=l+1;m=c[m+104>>2]|0;a[m+(l*20|0)>>0]=78;b[m+(l*20|0)+2>>1]=0;c[m+(l*20|0)+4>>2]=j;c[m+(l*20|0)+8>>2]=n;c[m+(l*20|0)+12>>2]=0;c[m+(l*20|0)+16>>2]=0;a[m+(l*20|0)+1>>0]=0;break}else{Di(m,78,j,n,0)|0;break}}while(0);do if(((x|0)==22?(x=0,(A|0)!=(n|0)):0)?(z=c[u>>2]|0,z|0):0){j=z+108|0;k=c[j>>2]|0;if((c[z+112>>2]|0)>(k|0)){c[j>>2]=k+1;m=c[z+104>>2]|0;a[m+(k*20|0)>>0]=79;b[m+(k*20|0)+2>>1]=0;c[m+(k*20|0)+4>>2]=A;c[m+(k*20|0)+8>>2]=n;c[m+(k*20|0)+12>>2]=0;c[m+(k*20|0)+16>>2]=0;a[m+(k*20|0)+1>>0]=0;break}else{Di(z,79,A,n,0)|0;break}}while(0);f=f+1|0;if((f|0)==(v|0))break a;j=c[o>>2]|0}}}else x=5}while(0);if((x|0)==5)e=Lj(d,B,D)|0;a[w>>0]=a[B>>0]|0;a[B>>0]=-88;c[B+28>>2]=e;e=B+4|0;f=c[e>>2]&-4097;c[e>>2]=f;if(!h){c[e>>2]=f|1;Jj(d,C,g)|0}else db[h&127](d,C,g,i);e=c[D>>2]|0;if(!e){Ra=E;return}f=d+19|0;j=a[f>>0]|0;if((j&255)>=8){Ra=E;return}a[f>>0]=j+1<<24>>24;c[d+148+((j&255)<<2)>>2]=e;Ra=E;return}function Tj(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,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+16|0;m=t+8|0;p=t+4|0;s=t;o=c[d+8>>2]|0;c[p>>2]=0;c[s>>2]=0;if((e|0)==0|(o|0)==0){Ra=t;return}h=a[e>>0]|0;j=h^1;k=j&255;a:do switch(h<<24>>24){case 44:{Tj(d,c[e+12>>2]|0,f,g);Tj(d,c[e+16>>2]|0,f,g);break}case 43:{l=d+56|0;m=c[l>>2]|0;h=m+-1|0;c[l>>2]=h;tk(d,c[e+12>>2]|0,h,g^16);Tj(d,c[e+16>>2]|0,f,g);h=c[o+12>>2]|0;g=0-m|0;if(((c[h+56>>2]|0)+(c[h+60>>2]|0)|0)<0){mk(h,o,g);break a}else{c[(c[h+64>>2]|0)+(g<<2)>>2]=c[o+108>>2];break a}}case 19:{tk(d,c[e+12>>2]|0,f,g);break}case -89:{o=(a[e+38>>0]|0)==-96;h=c[e+12>>2]|0;g=o?0:16;if(o^(a[(c[(c[e+16>>2]|0)+8>>2]|0)+4>>0]|0)==0){Tj(d,h,f,g);break a}else{tk(d,h,f,g);break a}}case -96:case 45:{g=128;i=h<<24>>24==45?52:53;n=12;break}case 53:case 52:case 57:case 54:case 55:case 56:{i=k;n=12;break}case 51:case 50:{h=Lj(d,c[e+12>>2]|0,p)|0;g=o+108|0;i=c[g>>2]|0;if((c[o+112>>2]|0)>(i|0)){c[g>>2]=i+1;o=c[o+104>>2]|0;a[o+(i*20|0)>>0]=j;b[o+(i*20|0)+2>>1]=0;c[o+(i*20|0)+4>>2]=h;c[o+(i*20|0)+8>>2]=f;c[o+(i*20|0)+12>>2]=0;c[o+(i*20|0)+16>>2]=0;a[o+(i*20|0)+1>>0]=0;break a}else{Di(o,k,h,f,0)|0;break a}}case 48:{Sj(d,c[e+12>>2]|0,c[e+20>>2]|0,f,66,g);break}case 49:{if(g|0){Rj(d,e,f,f);break a}m=d+56|0;g=c[m>>2]|0;h=g+-1|0;c[m>>2]=h;Rj(d,e,f,h);h=c[o+12>>2]|0;g=0-g|0;if(((c[h+56>>2]|0)+(c[h+60>>2]|0)|0)<0){mk(h,o,g);break a}else{c[(c[h+64>>2]|0)+(g<<2)>>2]=c[o+108>>2];break a}}default:{c[m>>2]=0;if((c[e+4>>2]&1|0)==0?(uk(e,m)|0)!=0:0)h=(c[m>>2]|0)==0&1;else h=0;n=36}}while(0);do if((n|0)==12){j=e+12|0;k=c[j>>2]|0;h=a[k>>0]|0;if(h<<24>>24==-88)h=a[k+38>>0]|0;switch(h<<24>>24){case -87:{l=k+20|0;n=17;break}case -125:{l=c[k+20>>2]|0;n=17;break}default:{}}if((n|0)==17?(c[c[l>>2]>>2]|0)>=2:0){c[m>>2]=0;if((c[e+4>>2]&1|0)==0?(uk(e,m)|0)!=0:0)h=(c[m>>2]|0)==0&1;else h=0;n=36;break}m=Lj(d,k,p)|0;e=e+16|0;o=Lj(d,c[e>>2]|0,s)|0;Mj(d,c[j>>2]|0,c[e>>2]|0,i,m,o,f,g)}while(0);do if((n|0)==36){if(h|0){h=o+108|0;g=c[h>>2]|0;if((c[o+112>>2]|0)>(g|0)){c[h>>2]=g+1;o=c[o+104>>2]|0;a[o+(g*20|0)>>0]=11;b[o+(g*20|0)+2>>1]=0;c[o+(g*20|0)+4>>2]=0;c[o+(g*20|0)+8>>2]=f;c[o+(g*20|0)+12>>2]=0;c[o+(g*20|0)+16>>2]=0;a[o+(g*20|0)+1>>0]=0;break}else{Di(o,11,0,f,0)|0;break}}c[m>>2]=0;if((c[e+4>>2]&1|0)==0?(uk(e,m)|0)!=0:0){if(c[m>>2]|0)break}else n=42;j=Lj(d,e,p)|0;h=(g|0)!=0&1;g=o+108|0;i=c[g>>2]|0;if((c[o+112>>2]|0)>(i|0)){c[g>>2]=i+1;o=c[o+104>>2]|0;a[o+(i*20|0)>>0]=20;b[o+(i*20|0)+2>>1]=0;c[o+(i*20|0)+4>>2]=j;c[o+(i*20|0)+8>>2]=f;c[o+(i*20|0)+12>>2]=h;c[o+(i*20|0)+16>>2]=0;a[o+(i*20|0)+1>>0]=0;break}else{Di(o,20,j,f,h)|0;break}}while(0);h=c[p>>2]|0;if(h|0?(q=d+19|0,r=a[q>>0]|0,(r&255)<8):0){a[q>>0]=r+1<<24>>24;c[d+148+((r&255)<<2)>>2]=h}h=c[s>>2]|0;if(!h){Ra=t;return}g=d+19|0;i=a[g>>0]|0;if((i&255)>=8){Ra=t;return}a[g>>0]=i+1<<24>>24;c[d+148+((i&255)<<2)>>2]=h;Ra=t;return}function Uj(d,f,g,h,i,j){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=d+8|0;k=c[p>>2]|0;a:do if(!k){o=c[d>>2]|0;if((c[d+116>>2]|0)==0?(b[o+76>>1]&8)==0:0)a[d+23>>0]=1;b:do if(c[o+272>>2]|0)if(!(a[o+81>>0]|0))n=15;else{p=0;break a}else{do if((e[o+276>>1]|0)>=224){k=o+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];m=o+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break b}k=o+296|0;l=c[k>>2]|0;if(!l){k=o+292|0;break}else{c[k>>2]=c[l>>2];m=o+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break b}}else k=o+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;n=15}while(0);if((n|0)==15)m=_d(o,224,0)|0;if(!m)p=0;else{k=m+104|0;l=k+120|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(l|0));c[m>>2]=o;k=o+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=m;c[m+8>>2]=l;c[m+4>>2]=0;c[k>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=d;c[p>>2]=m;Di(m,61,0,1,0)|0;p=m}}else p=k;while(0);if((g|0)==2){o=c[d+116>>2]|0;a[((o|0)==0?d:o)+21>>0]=1}n=i<<24>>24;o=p+108|0;k=c[o>>2]|0;if((c[p+112>>2]|0)>(k|0)){c[o>>2]=k+1;d=c[p+104>>2]|0;a[d+(k*20|0)>>0]=69;b[d+(k*20|0)+2>>1]=0;c[d+(k*20|0)+4>>2]=f;c[d+(k*20|0)+8>>2]=g;c[d+(k*20|0)+12>>2]=0;c[d+(k*20|0)+16>>2]=0;a[d+(k*20|0)+1>>0]=0}else k=Di(p,69,f,g,0)|0;l=c[p>>2]|0;do if(a[l+81>>0]|0){if(i<<24>>24!=-12)kg(l,n,h)}else{if((k|0)<0)k=(c[o>>2]|0)+-1|0;l=c[p+104>>2]|0;m=l+(k*20|0)|0;if(i<<24>>24<=-1?(q=l+(k*20|0)+1|0,(a[q>>0]|0)==0):0){if(i<<24>>24==-3){c[l+(k*20|0)+16>>2]=h;a[q>>0]=-3;break}if(!h)break;c[l+(k*20|0)+16>>2]=h;a[q>>0]=i;if(i<<24>>24!=-12)break;q=h+12|0;c[q>>2]=(c[q>>2]|0)+1;break}Ei(p,m,h,n)}while(0);k=c[o>>2]|0;if((k|0)<=0)return;b[(c[p+104>>2]|0)+((k+-1|0)*20|0)+2>>1]=j&255;return}function Vj(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=Ra;Ra=Ra+16|0;p=r;if(!f){j=e+108|0;k=c[j>>2]|0;if((c[e+112>>2]|0)>(k|0)){c[j>>2]=k+1;e=c[e+104>>2]|0;a[e+(k*20|0)>>0]=90;b[e+(k*20|0)+2>>1]=0;c[e+(k*20|0)+4>>2]=g;c[e+(k*20|0)+8>>2]=h;c[e+(k*20|0)+12>>2]=i;c[e+(k*20|0)+16>>2]=0;a[e+(k*20|0)+1>>0]=0;Ra=r;return}else{Di(e,90,g,h,i)|0;Ra=r;return}}do if((h|0)>=0?(b[f+40>>1]|0)!=(h|0):0){m=(c[f+56>>2]|0)!=0;n=m?164:90;if(m|(c[f+36>>2]&32|0)==0)j=h;else{j=c[f+8>>2]|0;a:do if(!j)j=0;else while(1){m=j+55|0;if(((d[m>>0]|d[m+1>>0]<<8)&3)==2)break a;j=c[j+20>>2]|0;if(!j){j=0;break}}while(0);m=h&65535;k=b[j+52>>1]|0;b:do if(!(k<<16>>16))j=-1;else{l=c[j+4>>2]|0;k=k&65535;j=0;while(1){if((b[l+(j<<1)>>1]|0)==m<<16>>16)break b;j=j+1|0;if(j>>>0>=k>>>0){j=-1;break}}}while(0);j=j<<16>>16}k=e+108|0;l=c[k>>2]|0;if((c[e+112>>2]|0)>(l|0)){c[k>>2]=l+1;m=c[e+104>>2]|0;a[m+(l*20|0)>>0]=n;b[m+(l*20|0)+2>>1]=0;c[m+(l*20|0)+4>>2]=g;c[m+(l*20|0)+8>>2]=j;c[m+(l*20|0)+12>>2]=i;c[m+(l*20|0)+16>>2]=0;a[m+(l*20|0)+1>>0]=0;break}else{Di(e,n,g,j,i)|0;break}}else o=7;while(0);do if((o|0)==7){j=e+108|0;k=c[j>>2]|0;if((c[e+112>>2]|0)>(k|0)){c[j>>2]=k+1;o=c[e+104>>2]|0;a[o+(k*20|0)>>0]=-128;b[o+(k*20|0)+2>>1]=0;c[o+(k*20|0)+4>>2]=g;c[o+(k*20|0)+8>>2]=i;c[o+(k*20|0)+12>>2]=0;c[o+(k*20|0)+16>>2]=0;a[o+(k*20|0)+1>>0]=0;break}else{Di(e,128,g,i,0)|0;break}}while(0);if((h|0)<=-1){Ra=r;return}if(!(c[f+12>>2]|0)){c[p>>2]=0;m=c[e>>2]|0;j=f+4|0;k=c[j>>2]|0;l=c[k+(h<<4)+4>>2]|0;do if(l|0?(Wj(m,l,a[m+78>>0]|0,a[k+(h<<4)+13>>0]|0,p)|0,q=c[p>>2]|0,q|0):0){k=c[e>>2]|0;if(!(a[k+81>>0]|0)){g=c[e+104>>2]|0;p=(c[e+108>>2]|0)+-1|0;a[g+(p*20|0)+1>>0]=-11;c[g+(p*20|0)+16>>2]=q;break}else{kg(k,-11,q);break}}while(0)}else j=f+4|0;if((a[(c[j>>2]|0)+(h<<4)+13>>0]|0)!=69){Ra=r;return}j=e+108|0;k=c[j>>2]|0;if((c[e+112>>2]|0)>(k|0)){c[j>>2]=k+1;e=c[e+104>>2]|0;a[e+(k*20|0)>>0]=84;b[e+(k*20|0)+2>>1]=0;c[e+(k*20|0)+4>>2]=i;c[e+(k*20|0)+8>>2]=0;c[e+(k*20|0)+12>>2]=0;c[e+(k*20|0)+16>>2]=0;a[e+(k*20|0)+1>>0]=0;Ra=r;return}else{Di(e,84,i,0,0)|0;Ra=r;return}}function Wj(f,i,j,k,l){f=f|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0.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;H=Ra;Ra=Ra+32|0;u=H+16|0;D=H+8|0;E=H;F=H+24|0;c[F>>2]=0;p=i;a:while(1){i=a[p>>0]|0;switch(i<<24>>24){case -90:case -83:break;default:break a}p=c[p+12>>2]|0}if(i<<24>>24==-88)i=d[p+38>>0]|0;else i=i&255;b:do switch((i&255)<<24>>24){case 36:{i=c[p+8>>2]|0;n=a[i>>0]|0;c:do if(!(n<<24>>24))m=67;else{m=67;o=0;do{o=o<<8|d[208+(n&255)>>0];i=i+1|0;d:do if((o|0)<1685026146){if((o|0)<1667785074){switch(o|0){case 1651273570:break;default:{G=16;break d}}switch(m<<24>>24){case 69:case 67:{m=65;break d}default:{G=15;break d}}}if((o|0)<1668050786)switch(o|0){case 1667785074:{m=66;break d}default:{G=16;break d}}else switch(o|0){case 1668050786:{m=66;break d}default:{G=16;break d}}}else{if((o|0)>=1919246700){if((o|0)>=1952807028)switch(o|0){case 1952807028:{m=66;break d}default:{G=16;break d}}switch(o|0){case 1919246700:break;default:{G=16;break d}}if(m<<24>>24==67){m=69;break}else{G=15;break}}if((o|0)<1718382433){switch(o|0){case 1685026146:break;default:{G=16;break d}}if(m<<24>>24==67){m=69;break}}else{switch(o|0){case 1718382433:break;default:{G=16;break d}}if(m<<24>>24==67){m=69;break}}}while(0);if((G|0)==15)G=0;else if((G|0)==16){G=0;if((o&16777215|0)==6909556){m=68;break c}}n=a[i>>0]|0}while(n<<24>>24!=0)}while(0);s=Wj(f,c[p+12>>2]|0,j,m,l)|0;i=c[l>>2]|0;if(!i){l=s;Ra=H;return l|0}Sg(i,m,1);r=c[l>>2]|0;if(k<<24>>24<=66){if(k<<24>>24!=66){l=s;Ra=H;return l|0}m=r+8|0;i=b[m>>1]|0;l=i&65535;if(!((l&2|0)!=0|(l&12|0)==0)){Hg(r,1,1)|0;i=b[m>>1]|0}b[m>>1]=i&-13;l=s;Ra=H;return l|0}p=r+8|0;n=b[p>>1]|0;i=n&65535;if(i&4|0){l=s;Ra=H;return l|0}if(i&8|0){q=+g[r>>3];i=Mg(q)|0;m=L()|0;l=Sv(i|0,m|0,1,-2147483648)|0;G=L()|0;if(!((G>>>0>0|(G|0)==0&l>>>0>1)&q==+(i>>>0)+4294967296.0*+(m|0))){l=s;Ra=H;return l|0}l=r;c[l>>2]=i;c[l+4>>2]=m;b[p>>1]=n&15904|4;l=s;Ra=H;return l|0}if(!(i&2)){l=s;Ra=H;return l|0}i=a[r+10>>0]|0;m=r+16|0;n=r+12|0;if(Lg(c[m>>2]|0,D,c[n>>2]|0,i)|0){if(Og(c[m>>2]|0,E,c[n>>2]|0,i)|0){q=+g[D>>3];g[r>>3]=q;m=b[p>>1]|0;i=m|8;b[p>>1]=i;n=Mg(q)|0;o=L()|0;l=Sv(n|0,o|0,1,-2147483648)|0;f=L()|0;if((f>>>0>0|(f|0)==0&l>>>0>1)&q==+(n>>>0)+4294967296.0*+(o|0)){i=r;c[i>>2]=n;c[i+4>>2]=o;i=m&15904;G=28}}else{l=E;G=c[l+4>>2]|0;i=r;c[i>>2]=c[l>>2];c[i+4>>2]=G;i=b[p>>1]|0;G=28}if((G|0)==28){i=i|4;b[p>>1]=i}b[p>>1]=i&-3}l=s;Ra=H;return l|0}case -91:{i=c[p+12>>2]|0;m=a[i>>0]|0;switch(m<<24>>24){case -111:case -109:break;default:{G=107;break b}}t=34064;p=i;s=m&255;o=-1;r=-1;G=39;break}default:{t=59952;s=i;o=1;r=0;G=39}}while(0);e:do if((G|0)==39){f:do switch(s|0){case 110:case 145:case 147:{g:do if(!f){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](40)|0;G=64;break}i=Wa[c[29356>>2]&127](40)|0;if((c[14985]|0)>>>0<40)c[14985]=40;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){C=c[14978]|0;B=Tv(m|0,n|0,i|0,((i|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&B>>>0<=C>>>0)&1}m=Wa[c[29340>>2]&127](i)|0;if(m){i=Wa[c[29352>>2]&127](m)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0){c[14987]=i;C=m}else C=m}else G=65}else{if(c[f+272>>2]|0){if(a[f+81>>0]|0){G=65;break}}else{do if((e[f+276>>1]|0)>=40){m=f+300|0;i=c[m>>2]|0;if(i|0){c[m>>2]=c[i>>2];G=f+284|0;c[G>>2]=(c[G>>2]|0)+1;G=64;break g}m=f+296|0;i=c[m>>2]|0;if(!i){i=f+292|0;break}else{c[m>>2]=c[i>>2];G=f+284|0;c[G>>2]=(c[G>>2]|0)+1;G=64;break g}}else i=f+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(f,40,0)|0;G=64}while(0);if((G|0)==64)if(!i)G=65;else C=i;if((G|0)==65){c[F>>2]=0;n=0;m=0;break f}m=C;n=m+40|0;do{a[m>>0]=0;m=m+1|0}while((m|0)<(n|0));B=C+8|0;b[B>>1]=1;c[C+32>>2]=f;c[F>>2]=C;i=C;if(!(c[p+4>>2]&1024)){m=c[p+8>>2]|0;c[u>>2]=t;c[u+4>>2]=m;m=dd(f,38967,u)|0;if(!m){n=C;m=C;break f}yc(C,m,-1,1,116)|0}else{u=c[p+8>>2]|0;u=Yv(o|0,r|0,u|0,((u|0)<0)<<31>>31|0)|0;F=L()|0;f=C;c[f>>2]=u;c[f+4>>2]=F;b[B>>1]=4}do if(k<<24>>24==65&(s|2|0)==147){o=b[B>>1]|0;m=o&65535;if(!(m&4)){if(m&8|0){q=+g[C>>3];m=Mg(q)|0;n=L()|0;f=Sv(m|0,n|0,1,-2147483648)|0;F=L()|0;if(!((F>>>0>0|(F|0)==0&f>>>0>1)&q==+(m>>>0)+4294967296.0*+(n|0)))break;f=C;c[f>>2]=m;c[f+4>>2]=n;b[B>>1]=o&15904|4;break}if(m&2|0?(v=a[C+10>>0]|0,w=C+16|0,x=C+12|0,Lg(c[w>>2]|0,D,c[x>>2]|0,v)|0):0){if(Og(c[w>>2]|0,E,c[x>>2]|0,v)|0){q=+g[D>>3];g[C>>3]=q;n=b[B>>1]|0;m=n|8;b[B>>1]=m;o=Mg(q)|0;p=L()|0;f=Sv(o|0,p|0,1,-2147483648)|0;F=L()|0;if((F>>>0>0|(F|0)==0&f>>>0>1)&q==+(o>>>0)+4294967296.0*+(p|0)){m=C;c[m>>2]=o;c[m+4>>2]=p;m=n&15904;G=79}}else{f=E;G=c[f+4>>2]|0;m=C;c[m>>2]=c[f>>2];c[m+4>>2]=G;m=b[B>>1]|0;G=79}if((G|0)==79){m=m|4;b[B>>1]=m}b[B>>1]=m&-3}}}else{if(k<<24>>24<=66){if(k<<24>>24!=66)break;m=b[B>>1]|0;f=m&65535;if(!((f&2|0)!=0|(f&12|0)==0)){Hg(C,1,1)|0;m=b[B>>1]|0}b[B>>1]=m&-13;break}o=b[B>>1]|0;m=o&65535;if(!(m&4)){if(m&8|0){q=+g[C>>3];m=Mg(q)|0;n=L()|0;f=Sv(m|0,n|0,1,-2147483648)|0;F=L()|0;if(!((F>>>0>0|(F|0)==0&f>>>0>1)&q==+(m>>>0)+4294967296.0*+(n|0)))break;f=C;c[f>>2]=m;c[f+4>>2]=n;b[B>>1]=o&15904|4;break}if(m&2|0?(y=a[C+10>>0]|0,z=C+16|0,A=C+12|0,Lg(c[z>>2]|0,D,c[A>>2]|0,y)|0):0){if(Og(c[z>>2]|0,E,c[A>>2]|0,y)|0){q=+g[D>>3];g[C>>3]=q;n=b[B>>1]|0;m=n|8;b[B>>1]=m;o=Mg(q)|0;p=L()|0;f=Sv(o|0,p|0,1,-2147483648)|0;F=L()|0;if((F>>>0>0|(F|0)==0&f>>>0>1)&q==+(o>>>0)+4294967296.0*+(p|0)){m=C;c[m>>2]=o;c[m+4>>2]=p;m=n&15904;G=93}}else{f=E;G=c[f+4>>2]|0;m=C;c[m>>2]=c[f>>2];c[m+4>>2]=G;m=b[B>>1]|0;G=93}if((G|0)==93){m=m|4;b[B>>1]=m}b[B>>1]=m&-3}}}while(0);m=b[B>>1]|0;n=m&65535;if(n&12){m=n&65533;b[B>>1]=m}if(j<<24>>24==1|(m&2)==0){m=0;break e}if((a[C+10>>0]|0)==j<<24>>24){m=0;break e}m=Ig(C,j)|0;break e}case 165:{i=c[p+12>>2]|0;G=107;break e}case 114:{h:do if(!f){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](40)|0;G=154;break}i=Wa[c[29356>>2]&127](40)|0;if((c[14985]|0)>>>0<40)c[14985]=40;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){G=c[14978]|0;j=Tv(m|0,n|0,i|0,((i|0)<0)<<31>>31|0)|0;E=L()|0;c[14768]=((E|0)<0|(E|0)==0&j>>>0<=G>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(i){m=Wa[c[29352>>2]&127](i)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0>(c[14987]|0)>>>0){c[14987]=m;G=156}else G=156}else G=155}else{if(c[f+272>>2]|0){if(a[f+81>>0]|0){G=155;break}}else{do if((e[f+276>>1]|0)>=40){m=f+300|0;i=c[m>>2]|0;if(i|0){c[m>>2]=c[i>>2];G=f+284|0;c[G>>2]=(c[G>>2]|0)+1;G=154;break h}m=f+296|0;i=c[m>>2]|0;if(!i){i=f+292|0;break}else{c[m>>2]=c[i>>2];G=f+284|0;c[G>>2]=(c[G>>2]|0)+1;G=154;break h}}else i=f+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(f,40,0)|0;G=154}while(0);if((G|0)==154)if(!i)G=155;else G=156;if((G|0)==155){c[F>>2]=0;n=0;m=0;break f}else if((G|0)==156){m=i;n=m+40|0;do{a[m>>0]=0;m=m+1|0}while((m|0)<(n|0));b[i+8>>1]=1;c[i+32>>2]=f;c[F>>2]=i;oh(i);m=0;break e}break}case 146:{i:do if(!f){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](40)|0;G=180;break}i=Wa[c[29356>>2]&127](40)|0;if((c[14985]|0)>>>0<40)c[14985]=40;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){j=c[14978]|0;E=Tv(m|0,n|0,i|0,((i|0)<0)<<31>>31|0)|0;D=L()|0;c[14768]=((D|0)<0|(D|0)==0&E>>>0<=j>>>0)&1}m=Wa[c[29340>>2]&127](i)|0;if(m){i=Wa[c[29352>>2]&127](m)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0){c[14987]=i;v=m}else v=m}else G=181}else{if(c[f+272>>2]|0){if(a[f+81>>0]|0){G=181;break}}else{do if((e[f+276>>1]|0)>=40){m=f+300|0;i=c[m>>2]|0;if(i|0){c[m>>2]=c[i>>2];G=f+284|0;c[G>>2]=(c[G>>2]|0)+1;G=180;break i}m=f+296|0;i=c[m>>2]|0;if(!i){i=f+292|0;break}else{c[m>>2]=c[i>>2];G=f+284|0;c[G>>2]=(c[G>>2]|0)+1;G=180;break i}}else i=f+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(f,40,0)|0;G=180}while(0);if((G|0)==180)if(!i)G=181;else v=i;if((G|0)==181){c[F>>2]=0;n=0;m=0;break f}m=v;n=m+40|0;do{a[m>>0]=0;m=m+1|0}while((m|0)<(n|0));b[v+8>>1]=1;c[v+32>>2]=f;c[F>>2]=v;i=v;s=(c[p+8>>2]|0)+2|0;r=(Eu(s)|0)&1073741823;t=r+-1|0;u=(t|0)/2|0;o=u+1|0;p=((o|0)<0)<<31>>31;j:do if(c[f+272>>2]|0)if(!(a[f+81>>0]|0))G=192;else m=0;else{do if(!(0

        >>0|(0==(p|0)?(e[f+276>>1]|0)>>>0>>0:0))){n=f+300|0;m=c[n>>2]|0;if(m|0){c[n>>2]=c[m>>2];G=f+284|0;c[G>>2]=(c[G>>2]|0)+1;G=193;break j}n=f+296|0;m=c[n>>2]|0;if(!m){m=f+292|0;break}else{c[n>>2]=c[m>>2];G=f+284|0;c[G>>2]=(c[G>>2]|0)+1;G=193;break j}}else m=f+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1;G=192}while(0);if((G|0)==192){m=_d(f,o,p)|0;G=193}if((G|0)==193){o=r+-2|0;if(!m)m=0;else{if(r>>>0>2){n=0;do{f=a[s+n>>0]|0;j=a[s+(n|1)>>0]|0;a[m+(n>>>1)>>0]=(0-(j>>>6&1)&9)+j&15|(0-(f>>>6&1)&9)+f<<4;n=n+2|0}while((n|0)<(o|0));n=t>>>1}else n=0;a[m+n>>0]=0}}yc(v,m,u,0,116)|0;m=0;break e}case 159:{k:do if(!f){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](40)|0;G=223;break}i=Wa[c[29356>>2]&127](40)|0;if((c[14985]|0)>>>0<40)c[14985]=40;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){G=c[14978]|0;j=Tv(m|0,n|0,i|0,((i|0)<0)<<31>>31|0)|0;E=L()|0;c[14768]=((E|0)<0|(E|0)==0&j>>>0<=G>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(i){m=Wa[c[29352>>2]&127](i)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0>(c[14987]|0)>>>0){c[14987]=m;G=225}else G=225}else G=224}else{if(c[f+272>>2]|0){if(a[f+81>>0]|0){G=224;break}}else{do if((e[f+276>>1]|0)>=40){m=f+300|0;i=c[m>>2]|0;if(i|0){c[m>>2]=c[i>>2];G=f+284|0;c[G>>2]=(c[G>>2]|0)+1;G=223;break k}m=f+296|0;i=c[m>>2]|0;if(!i){i=f+292|0;break}else{c[m>>2]=c[i>>2];G=f+284|0;c[G>>2]=(c[G>>2]|0)+1;G=223;break k}}else i=f+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(f,40,0)|0;G=223}while(0);if((G|0)==223)if(!i)G=224;else G=225;if((G|0)==224){c[F>>2]=0;m=0;i=0;break e}else if((G|0)==225){m=i;n=m+40|0;do{a[m>>0]=0;m=m+1|0}while((m|0)<(n|0));c[i+32>>2]=f;c[F>>2]=i;b[i+8>>1]=4;m=i;c[m>>2]=(a[(c[p+8>>2]|0)+4>>0]|0)==0&1;c[m+4>>2]=0;m=0;break e}break}default:{m=0;i=0;break e}}while(0);i=f+81|0;if((a[i>>0]|0)==0?(a[f+82>>0]|0)==0:0){a[i>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;i=f+272|0;c[i>>2]=(c[i>>2]|0)+1;i=c[f+236>>2]|0;if(i|0)c[i+12>>2]=7}if(!n){l=7;Ra=H;return l|0}if(!((b[n+8>>1]&9216)==0?!(c[n+24>>2]|0):0))Cg(n);i=c[n+32>>2]|0;if(i|0){if(c[i+480>>2]|0){Xd(i,m);l=7;Ra=H;return l|0}l=n;if((c[i+304>>2]|0)>>>0<=l>>>0?(c[i+308>>2]|0)>>>0>l>>>0:0){l=i+300|0;c[n>>2]=c[l>>2];c[l>>2]=m;l=7;Ra=H;return l|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);l=7;Ra=H;return l|0}else{l=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);l=7;Ra=H;return l|0}}while(0);do if((G|0)==107){f=(Wj(f,i,j,k,F)|0)==0;p=c[F>>2]|0;s=p;if(f&(p|0)!=0){oh(p);r=p+8|0;i=b[r>>1]|0;do if(!(i&8)){n=p;m=c[n>>2]|0;n=c[n+4>>2]|0;if((m|0)==0&(n|0)==-2147483648){g[p>>3]=9223372036854775808.0;i=i&15904|8;b[r>>1]=i;q=9223372036854775808.0;break}else{F=Tv(0,0,m|0,n|0)|0;f=L()|0;C=p;c[C>>2]=F;c[C+4>>2]=f;c[h>>2]=F;c[h+4>>2]=f;q=+g[h>>3];break}}else{q=-+g[p>>3];g[p>>3]=q}while(0);if(k<<24>>24<=66){if(k<<24>>24!=66){m=0;i=s;break}G=i&65535;if(!((G&2|0)!=0|(G&12|0)==0)){Hg(p,j,1)|0;i=b[r>>1]|0}b[r>>1]=i&-13;m=0;i=s;break}m=i&65535;if(!(m&4)){if(m&8|0){m=Mg(q)|0;n=L()|0;G=Sv(m|0,n|0,1,-2147483648)|0;f=L()|0;if(!((f>>>0>0|(f|0)==0&G>>>0>1)&q==+(m>>>0)+4294967296.0*+(n|0))){m=0;i=s;break}G=p;c[G>>2]=m;c[G+4>>2]=n;b[r>>1]=i&15904|4;m=0;i=s;break}if(m&2){i=a[p+10>>0]|0;m=p+16|0;n=p+12|0;if(Lg(c[m>>2]|0,D,c[n>>2]|0,i)|0){if(Og(c[m>>2]|0,E,c[n>>2]|0,i)|0){q=+g[D>>3];g[p>>3]=q;m=b[r>>1]|0;i=m|8;b[r>>1]=i;n=Mg(q)|0;o=L()|0;f=Sv(n|0,o|0,1,-2147483648)|0;j=L()|0;if((j>>>0>0|(j|0)==0&f>>>0>1)&q==+(n>>>0)+4294967296.0*+(o|0)){i=p;c[i>>2]=n;c[i+4>>2]=o;i=m&15904;G=122}}else{f=E;G=c[f+4>>2]|0;i=p;c[i>>2]=c[f>>2];c[i+4>>2]=G;i=b[r>>1]|0;G=122}if((G|0)==122){i=i|4;b[r>>1]=i}b[r>>1]=i&-3}m=0;i=s}else{m=0;i=s}}else{m=0;i=s}}else{m=0;i=s}}while(0);c[l>>2]=i;l=m;Ra=H;return l|0}function Xj(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;a:while(1){f=c[e+4>>2]|0;if(f&4096)do{if(!(f&262144))e=e+12|0;else e=(c[e+20>>2]|0)+4|0;e=c[e>>2]|0;f=c[e+4>>2]|0}while((f&4096|0)!=0);if(f&512|0){g=0;k=31;break}f=a[e>>0]|0;if(f<<24>>24==-125)e=(c[c[e+20>>2]>>2]|0)+4|0;else{if(f<<24>>24==-88)f=d[e+38>>0]|0;else f=f&255;switch((f&255)<<24>>24){case 36:{k=15;break a}case -94:case -92:{k=26;break a}case -86:break;default:break a}e=(c[c[(c[e+12>>2]|0)+20>>2]>>2]|0)+4+((b[e+32>>1]|0)*20|0)|0}e=c[e>>2]|0}if((k|0)==15){f=c[e+8>>2]|0;g=a[f>>0]|0;if(!(g<<24>>24)){k=67;return k|0}h=67;i=0;while(1){i=i<<8|d[208+(g&255)>>0];f=f+1|0;b:do if((i|0)<1685026146){if((i|0)<1667785074){switch(i|0){case 1651273570:break;default:{k=24;break b}}switch(h<<24>>24){case 69:case 67:{j=65;break b}default:{k=23;break b}}}if((i|0)<1668050786)switch(i|0){case 1667785074:{j=66;break b}default:{k=24;break b}}else switch(i|0){case 1668050786:{j=66;break b}default:{k=24;break b}}}else{if((i|0)>=1919246700){if((i|0)>=1952807028)switch(i|0){case 1952807028:{j=66;break b}default:{k=24;break b}}switch(i|0){case 1919246700:break;default:{k=24;break b}}if(h<<24>>24==67){j=69;break}else{k=23;break}}if((i|0)<1718382433){switch(i|0){case 1685026146:break;default:{k=24;break b}}if(h<<24>>24==67){j=69;break}}else{switch(i|0){case 1718382433:break;default:{k=24;break b}}if(h<<24>>24==67){j=69;break}}j=h}while(0);if((k|0)==23){k=0;j=h}else if((k|0)==24){k=0;if((i&16777215|0)==6909556){g=68;k=31;break}else j=h}g=a[f>>0]|0;if(!(g<<24>>24)){g=j;k=31;break}else h=j}if((k|0)==31)return g|0}else if((k|0)==26){f=c[e+44>>2]|0;if(f|0){e=b[e+32>>1]|0;if(e<<16>>16<=-1){k=68;return k|0}k=a[(c[f+4>>2]|0)+(e<<16>>16<<4)+13>>0]|0;return k|0}}else if((k|0)==31)return g|0;k=a[e+1>>0]|0;return k|0}function Yj(b,e){b=b|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;l=b+20|0;m=a[l>>0]|0;n=m<<24>>24==2;if(n?c[e+4>>2]&1|0:0){a[l>>0]=0;n=2;return n|0}a:do switch(a[e>>0]|0){case -95:{if((m&255)>3){n=0;return n|0}if(c[e+4>>2]&524288|0){n=0;return n|0}a[l>>0]=0;n=2;return n|0}case 59:{if(!(c[e+4>>2]&67108864)){g=c[e+8>>2]|0;k=a[g>>0]|0;j=d[208+(k&255)>>0]|0;f=j+-116|0;k=k<<24>>24==0;if(!(k|(f|0)!=0)){h=41806;i=g;do{i=i+1|0;h=h+1|0;o=a[i>>0]|0;f=(d[208+(o&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(o<<24>>24==0|(f|0)!=0))}if(f|0){f=j+-102|0;if(!(k|(f|0)!=0)){h=41811;do{g=g+1|0;h=h+1|0;o=a[g>>0]|0;f=(d[208+(o&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(o<<24>>24==0|(f|0)!=0))}if(f|0){f=18;break a}}a[e>>0]=-97;o=1;return o|0}else f=18;break}case -92:case -93:case -94:{f=18;break}case -88:case -85:break;case -108:switch(m<<24>>24){case 5:{a[e>>0]=114;o=0;return o|0}case 4:{a[l>>0]=0;o=2;return o|0}default:{o=0;return o|0}}default:{o=0;return o|0}}while(0);do if((f|0)==18){if(c[e+4>>2]&8|0){if(n)break;else f=0;return f|0}if(m<<24>>24==3?(c[e+28>>2]|0)==(c[b+24>>2]|0):0){o=0;return o|0}}while(0);a[l>>0]=0;o=2;return o|0}function Zj(b,c){b=b|0;c=c|0;a[b+20>>0]=0;return 2}function _j(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;f=b+4|0;e=Xa[c[f>>2]&255](b,d)|0;a:do if(!e){p=d;while(1){if(c[p+4>>2]&8404992|0){g=0;d=56;break}d=c[p+12>>2]|0;if(d|0?_j(b,d)|0:0){g=2;d=56;break}e=c[p+16>>2]|0;if(!e){d=9;break}d=Xa[c[f>>2]&255](b,e)|0;if(!d)p=e;else{q=d;break a}}if((d|0)==9){k=p+4|0;b:do if(!(c[k>>2]&2048)){d=c[p+20>>2]|0;if(d|0?(i=c[d>>2]|0,(i|0)>0):0){f=d+4|0;d=i;while(1){e=c[f>>2]|0;if(e|0?_j(b,e)|0:0){g=2;break}if((d|0)>1){f=f+20|0;d=d+-1|0}else break b}return g|0}}else{e=c[p+20>>2]|0;if(e|0?(m=b+8|0,h=c[m>>2]|0,h|0):0){j=b+12|0;d=Xa[h&255](b,e)|0;c:do if(!d){d:while(1){if(ak(b,e)|0){g=2;d=56;break}d=c[e+32>>2]|0;f=c[d>>2]|0;if((f|0)>0){i=d+8|0;while(1){d=c[i+20>>2]|0;if(d|0?$j(b,d)|0:0){g=2;d=56;break d}if((a[i+37>>0]&4?(n=c[i+64>>2]|0,n|0):0)?(o=c[n>>2]|0,(o|0)>0):0){d=n+4|0;g=o;while(1){h=c[d>>2]|0;if(h|0?_j(b,h)|0:0){g=2;d=56;break d}if((g|0)>1){d=d+20|0;g=g+-1|0}else break}}if((f|0)>1){i=i+72|0;f=f+-1|0}else break}}d=c[j>>2]|0;if(d|0)bb[d&127](b,e);e=c[e+52>>2]|0;if(!e)break b;d=Xa[c[m>>2]&255](b,e)|0;if(d|0){l=d;break c}}if((d|0)==56)return g|0}else l=d;while(0);if(l&2|0){s=2;return s|0}}}while(0);if(!(c[k>>2]&16777216)){s=0;return s|0}d=c[p+44>>2]|0;if(!d){s=0;return s|0}e:while(1){e=c[d+12>>2]|0;if(e|0?(s=c[e>>2]|0,(s|0)>0):0){e=e+4|0;f=s;while(1){g=c[e>>2]|0;if(g|0?_j(b,g)|0:0){g=2;d=56;break e}if((f|0)>1){e=e+20|0;f=f+-1|0}else break}}e=c[d+8>>2]|0;if(e|0?(r=c[e>>2]|0,(r|0)>0):0){e=e+4|0;f=r;while(1){g=c[e>>2]|0;if(g|0?_j(b,g)|0:0){g=2;d=56;break e}if((f|0)>1){e=e+20|0;f=f+-1|0}else break}}e=c[d+36>>2]|0;if(e|0?_j(b,e)|0:0){g=2;d=56;break}d=c[d+32>>2]|0;if(!d){g=0;d=56;break}}if((d|0)==56)return g|0}else if((d|0)==56)return g|0}else q=e;while(0);s=q&2;return s|0}function $j(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;if(!d){m=0;return m|0}l=b+8|0;e=c[l>>2]|0;if(!e){m=0;return m|0}m=b+12|0;e=Xa[e&255](b,d)|0;a:do if(!e){b:while(1){if(ak(b,d)|0){e=2;d=23;break}e=c[d+32>>2]|0;f=c[e>>2]|0;if((f|0)>0){i=e+8|0;while(1){e=c[i+20>>2]|0;if(e|0?$j(b,e)|0:0){e=2;d=23;break b}if((a[i+37>>0]&4?(j=c[i+64>>2]|0,j|0):0)?(k=c[j>>2]|0,(k|0)>0):0){e=j+4|0;g=k;while(1){h=c[e>>2]|0;if(h|0?_j(b,h)|0:0){e=2;d=23;break b}if((g|0)>1){e=e+20|0;g=g+-1|0}else break}}if((f|0)>1){i=i+72|0;f=f+-1|0}else break}}e=c[m>>2]|0;if(e|0)bb[e&127](b,d);d=c[d+52>>2]|0;if(!d){e=0;d=23;break}e=Xa[c[l>>2]&255](b,d)|0;if(e|0)break a}if((d|0)==23)return e|0}while(0);m=e&2;return m|0}function ak(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[b>>2]|0;a:do if(e|0?(f=c[e>>2]|0,(f|0)>0):0){g=e+4|0;e=f;while(1){f=c[g>>2]|0;if(f|0?_j(a,f)|0:0){e=2;break}if((e|0)>1){g=g+20|0;e=e+-1|0}else break a}return e|0}while(0);e=c[b+36>>2]|0;if(e|0?_j(a,e)|0:0){k=2;return k|0}e=c[b+40>>2]|0;b:do if(e|0?(h=c[e>>2]|0,(h|0)>0):0){g=e+4|0;e=h;while(1){f=c[g>>2]|0;if(f|0?_j(a,f)|0:0){e=2;break}if((e|0)>1){g=g+20|0;e=e+-1|0}else break b}return e|0}while(0);e=c[b+44>>2]|0;if(e|0?_j(a,e)|0:0){k=2;return k|0}e=c[b+48>>2]|0;c:do if(e|0?(i=c[e>>2]|0,(i|0)>0):0){g=e+4|0;e=i;while(1){f=c[g>>2]|0;if(f|0?_j(a,f)|0:0){e=2;break}if((e|0)>1){g=g+20|0;e=e+-1|0}else break c}return e|0}while(0);e=c[b+60>>2]|0;if(e|0?_j(a,e)|0:0){k=2;return k|0}e=c[a>>2]|0;if(!e){k=0;return k|0}if((d[e+200>>0]|0)<=1){k=0;return k|0}e=c[b+72>>2]|0;if(!e){k=0;return k|0}d:while(1){f=c[e+12>>2]|0;if(f|0?(j=c[f>>2]|0,(j|0)>0):0){f=f+4|0;g=j;while(1){h=c[f>>2]|0;if(h|0?_j(a,h)|0:0){e=2;f=44;break d}if((g|0)>1){f=f+20|0;g=g+-1|0}else break}}f=c[e+8>>2]|0;if(f|0?(k=c[f>>2]|0,(k|0)>0):0){f=f+4|0;g=k;while(1){h=c[f>>2]|0;if(h|0?_j(a,h)|0:0){e=2;f=44;break d}if((g|0)>1){f=f+20|0;g=g+-1|0}else break}}f=c[e+36>>2]|0;if(f|0?_j(a,f)|0:0){e=2;f=44;break}e=c[e+32>>2]|0;if(!e){e=0;f=44;break}}if((f|0)==44)return e|0;return 0}function bk(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+16|0;j=t;if((g|0)==0|(h|0)==0){i=(h|0)==(g|0)?0:2;Ra=t;return i|0}do if(f|0?(a[g>>0]|0)==-108:0){c[j>>2]=0;Wj(c[f>>2]|0,h,1,65,j)|0;s=c[j>>2]|0;if(!s)break;n=b[g+32>>1]|0;j=n<<16>>16;o=c[f+8>>2]|0;n=n<<16>>16>31;k=o+208|0;o=o+208|0;c[(n?o:k)>>2]=c[(n?o:k)>>2]|(n?-2147483648:1<>2]|0;a:do if((k|0)!=0?(o=c[k+100>>2]|0,q=j+-1|0,p=o+(q*40|0)|0,q=o+(q*40|0)+8|0,(b[q>>1]&1)==0):0){n=c[k>>2]|0;b:do if(!n){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](40)|0;r=32;break}j=Wa[c[29356>>2]&127](40)|0;if((c[14985]|0)>>>0<40)c[14985]=40;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){o=c[14978]|0;m=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;l=L()|0;c[14768]=((l|0)<0|(l|0)==0&m>>>0<=o>>>0)&1}k=Wa[c[29340>>2]&127](j)|0;if(!k){n=0;l=0;m=0;k=1;break a}j=Wa[c[29352>>2]&127](k)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0){c[14987]=j;o=k}else o=k}else{if(c[n+272>>2]|0){if(a[n+81>>0]|0){n=0;l=0;m=0;k=1;break a}}else{do if((e[n+276>>1]|0)>=40){k=n+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];r=n+284|0;c[r>>2]=(c[r>>2]|0)+1;r=32;break b}k=n+296|0;j=c[k>>2]|0;if(!j){j=n+292|0;break}else{c[k>>2]=c[j>>2];r=n+284|0;c[r>>2]=(c[r>>2]|0)+1;r=32;break b}}else j=n+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(n,40,0)|0;r=32}while(0);if((r|0)==32)if(!j){n=0;l=0;m=0;k=1;break}else o=j;j=o;k=j+40|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(k|0));m=o+8|0;b[m>>1]=1;c[o+32>>2]=n;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];c[o+16>>2]=c[p+16>>2];j=b[m>>1]&-1025;b[m>>1]=j;j=j&65535;c:do if(j&18|0?(b[q>>1]&2048)==0:0){k=(j|4096)&65535;b[m>>1]=k;do if(j&16384){l=o+12|0;j=(c[o>>2]|0)+(c[l>>2]|0)|0;if((j|0)<1)if(!(k&16)){r=41;break}else j=1;if(Eg(o,j,1)|0)break c;q=o+16|0;gw((c[q>>2]|0)+(c[l>>2]|0)|0,0,c[o>>2]|0)|0;c[l>>2]=(c[l>>2]|0)+(c[o>>2]|0);j=b[m>>1]&-16897;b[m>>1]=j;if(!((c[o+24>>2]|0)!=0?(c[q>>2]|0)==(c[o+20>>2]|0):0))r=41}else r=41;while(0);if((r|0)==41){if(Jg(o)|0)break;j=b[m>>1]|0}b[m>>1]=j&-4097}while(0);j=b[m>>1]|0;do if((j&15|16)<<16>>16==18){if((j&514)==514){if(!((j&1)==0&(a[o+10>>0]|0)!=1))break}else if(j&1)break;Gg(o,1)|0}while(0);n=(Tg(o,s,0)|0)==0&1;l=o;m=o;k=0}else{n=0;l=0;m=0;k=1}while(0);if(!((b[s+8>>1]&9216)==0?!(c[s+24>>2]|0):0))Cg(s);j=c[s+32>>2]|0;do if(j){if(c[j+480>>2]|0){Xd(j,s);break}q=s;if((c[j+304>>2]|0)>>>0<=q>>>0?(c[j+308>>2]|0)>>>0>q>>>0:0){q=j+300|0;c[s>>2]=c[q>>2];c[q>>2]=s}else r=59}else r=59;while(0);do if((r|0)==59)if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{r=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}while(0);do if(!k){if(!((b[l+8>>1]&9216)==0?!(c[l+24>>2]|0):0))Cg(l);j=c[l+32>>2]|0;if(j|0){if(c[j+480>>2]|0){Xd(j,m);break}s=m;if((c[j+304>>2]|0)>>>0<=s>>>0?(c[j+308>>2]|0)>>>0>s>>>0:0){s=j+300|0;c[m>>2]=c[s>>2];c[s>>2]=m;break}}if(m|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{s=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);if(n|0){i=0;Ra=t;return i|0}}while(0);o=g+4|0;p=c[o>>2]|0;n=h+4|0;k=c[n>>2]|0;q=k|p;if(q&1024|0){if(p&1024&k|0?(c[g+8>>2]|0)==(c[h+8>>2]|0):0){i=0;Ra=t;return i|0}i=2;Ra=t;return i|0}m=a[g>>0]|0;j=a[h>>0]|0;if(m<<24>>24==71?1:m<<24>>24!=j<<24>>24){do if(m<<24>>24==106)if((bk(f,c[g+12>>2]|0,h,i)|0)<2){i=1;Ra=t;return i|0}else{j=a[h>>0]|0;break}while(0);if(j<<24>>24==106?(bk(f,g,c[h+12>>2]|0,i)|0)<2:0){i=1;Ra=t;return i|0}i=2;Ra=t;return i|0}d:do switch(m<<24>>24){case -92:case -94:{j=p;break}default:{l=c[g+8>>2]|0;if(!l)j=p;else switch(m<<24>>24){case -95:{m=c[h+8>>2]|0;s=a[l>>0]|0;j=(d[208+(s&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0;if(!(s<<24>>24==0|(j|0)!=0))do{l=l+1|0;m=m+1|0;s=a[l>>0]|0;j=(d[208+(s&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(s<<24>>24==0|(j|0)!=0));if(j|0){i=2;Ra=t;return i|0}if(!(p&16777216)){j=p;break d}if(!(ck(f,c[g+44>>2]|0,c[h+44>>2]|0)|0)){k=c[n>>2]|0;j=c[o>>2]|0;break d}else{i=2;Ra=t;return i|0}}case 106:{m=c[h+8>>2]|0;if(!m){i=2;Ra=t;return i|0}s=a[l>>0]|0;j=(d[208+(s&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0;if(!(s<<24>>24==0|(j|0)!=0))do{l=l+1|0;m=m+1|0;s=a[l>>0]|0;j=(d[208+(s&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(s<<24>>24==0|(j|0)!=0));if(!j){j=p;break d}else j=2;Ra=t;return j|0}case 114:{i=0;Ra=t;return i|0}default:{j=c[h+8>>2]|0;if(!j){j=p;break d}if(!(Bu(l,j)|0)){j=p;break d}else j=2;Ra=t;return j|0}}}}while(0);if((k^j)&2|0){i=2;Ra=t;return i|0}e:do if(!(q&16384)){if(q&2048|0){i=2;Ra=t;return i|0}if((q&8|0)==0?bk(f,c[g+12>>2]|0,c[h+12>>2]|0,i)|0:0){i=2;Ra=t;return i|0}if(bk(f,c[g+16>>2]|0,c[h+16>>2]|0,i)|0){i=2;Ra=t;return i|0}l=c[g+20>>2]|0;m=c[h+20>>2]|0;j=(l|0)==0;k=(m|0)==0;f:do if(!(j&k)){if(j|k){i=2;Ra=t;return i|0}j=c[l>>2]|0;if((j|0)!=(c[m>>2]|0)){i=2;Ra=t;return i|0}if((j|0)>0){j=0;while(1){if((a[l+4+(j*20|0)+12>>0]|0)!=(a[m+4+(j*20|0)+12>>0]|0)){j=2;r=125;break}if(bk(0,c[l+4+(j*20|0)>>2]|0,c[m+4+(j*20|0)>>2]|0,i)|0){j=2;r=125;break}j=j+1|0;if((j|0)>=(c[l>>2]|0))break f}if((r|0)==125){Ra=t;return j|0}}}while(0);switch(a[g>>0]|0){case -97:case 110:break e;default:{}}if(!(q&8192)){if((b[g+32>>1]|0)!=(b[h+32>>1]|0)){i=2;Ra=t;return i|0}g=c[g+28>>2]|0;h=c[h+28>>2]|0;if((g|0)!=(h|0)?(g|0)!=(i|0)|(h|0)>-1:0){i=2;Ra=t;return i|0}}}while(0);i=0;Ra=t;return i|0}function ck(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((a[d+16>>0]|0)!=(a[e+16>>0]|0)){e=1;return e|0}if((a[d+17>>0]|0)!=(a[e+17>>0]|0)){e=1;return e|0}if((a[d+18>>0]|0)!=(a[e+18>>0]|0)){e=1;return e|0}if((a[d+20>>0]|0)!=(a[e+20>>0]|0)){e=1;return e|0}if(bk(b,c[d+24>>2]|0,c[e+24>>2]|0,-1)|0){e=1;return e|0}if(bk(b,c[d+28>>2]|0,c[e+28>>2]|0,-1)|0){e=1;return e|0}g=c[d+8>>2]|0;h=c[e+8>>2]|0;b=(g|0)==0;f=(h|0)==0;a:do if(!(b&f)){if(b|f){e=1;return e|0}b=c[g>>2]|0;if((b|0)!=(c[h>>2]|0)){e=1;return e|0}if((b|0)>0){b=0;while(1){if((a[g+4+(b*20|0)+12>>0]|0)!=(a[h+4+(b*20|0)+12>>0]|0)){b=1;f=23;break}if(bk(0,c[g+4+(b*20|0)>>2]|0,c[h+4+(b*20|0)>>2]|0,-1)|0){b=1;f=23;break}b=b+1|0;if((b|0)>=(c[g>>2]|0))break a}if((f|0)==23)return b|0}}while(0);h=c[d+12>>2]|0;g=c[e+12>>2]|0;b=(h|0)==0;f=(g|0)==0;if(b&f){e=0;return e|0}if(b|f){e=1;return e|0}b=c[h>>2]|0;if((b|0)!=(c[g>>2]|0)){e=1;return e|0}if((b|0)<=0){e=0;return e|0}b=0;while(1){if((a[h+4+(b*20|0)+12>>0]|0)!=(a[g+4+(b*20|0)+12>>0]|0)){b=1;f=23;break}if(bk(0,c[h+4+(b*20|0)>>2]|0,c[g+4+(b*20|0)>>2]|0,-1)|0){b=1;f=23;break}b=b+1|0;if((b|0)>=(c[h>>2]|0)){b=0;f=23;break}}if((f|0)==23)return b|0;return 0}function dk(b,d,f,g){b=b|0;d=d|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;t=Ra;Ra=Ra+16|0;r=t;s=(g|0)!=0;a:do if(s){m=134217728;q=c[g>>2]|0}else{j=ek(d,f)|0;k=((j|0)<0)<<31>>31;if(c[b+272>>2]|0){if(a[b+81>>0]|0){c[r>>2]=0;b=0;Ra=t;return b|0}}else{do if(!(0>>0|(0==(k|0)?(e[b+276>>1]|0)>>>0>>0:0))){h=b+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];m=b+284|0;c[m>>2]=(c[m>>2]|0)+1;m=0;q=i;break a}h=b+296|0;i=c[h>>2]|0;if(!i){h=b+292|0;break}else{c[h>>2]=c[i>>2];m=b+284|0;c[m>>2]=(c[m>>2]|0)+1;m=0;q=i;break a}}else h=b+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}m=0;q=_d(b,j,k)|0}while(0);c[r>>2]=q;if(!q){b=q;Ra=t;return b|0}n=(f|0)==0;if((!n?(a[d>>0]|0)!=-86:0)?(c[d+4>>2]&16777216|0)==0:0)if(!(c[d+12>>2]|0))j=(c[d+20>>2]|0)==0?16396:8220;else j=8220;else j=52;k=j&60;o=d+4|0;h=c[o>>2]|0;if((h&1024|0)==0?(l=c[d+8>>2]|0,(l|0)!=0):0)i=((Eu(l)|0)&1073741823)+1|0;else i=0;if(n){h=(h&16384|0)==0?((h&8192|0)==0?52:28):12;ew(q|0,d|0,h|0)|0;if(h>>>0<52)gw(q+h|0,0,52-h|0)|0}else ew(q|0,d|0,k|0)|0;l=q+4|0;h=j&24576|m|c[l>>2]&-134307841;c[l>>2]=h;if(i){h=q+k|0;c[q+8>>2]=h;ew(h|0,c[d+8>>2]|0,i|0)|0;h=c[l>>2]|0}i=c[o>>2]|0;do if(!((h|i)&8404992)){h=d+20|0;if(!(i&2048)){f=gk(b,c[h>>2]|0,f)|0;c[q+20>>2]=f;break}else{f=fk(b,c[h>>2]|0,f)|0;c[q+20>>2]=f;break}}while(0);j=c[l>>2]|0;if(!(j&16801792)){if(c[o>>2]&8404992|0){b=q;Ra=t;return b|0}h=d+12|0;if((a[q>>0]|0)==-86)c[q+12>>2]=c[h>>2];else{h=c[h>>2]|0;if(!h)h=0;else h=dk(b,h,0,0)|0;c[q+12>>2]=h}h=c[d+16>>2]|0;if(!h)h=0;else h=dk(b,h,0,0)|0;c[q+16>>2]=h;b=q;Ra=t;return b|0}if((!n?(a[d>>0]|0)!=-86:0)?(c[o>>2]&16777216|0)==0:0)if(!(c[d+12>>2]|0))i=(c[d+20>>2]|0)==0?12:28;else i=28;else i=52;h=c[o>>2]|0;if((h&1024|0)==0?(p=c[d+8>>2]|0,(p|0)!=0):0)i=((Eu(p)|0)&1073741823)+(i|1)|0;c[r>>2]=q+(i+7&-8);if(!(j&8404992)){h=c[d+12>>2]|0;if(!h)h=0;else h=dk(b,h,1,r)|0;c[q+12>>2]=h;h=c[d+16>>2]|0;if(!h)h=0;else h=dk(b,h,1,r)|0;c[q+16>>2]=h;h=c[o>>2]|0}if(h&16777216|0){b=hk(b,q,c[d+44>>2]|0)|0;c[q+44>>2]=b}if(!s){b=q;Ra=t;return b|0}c[g>>2]=c[r>>2];b=q;Ra=t;return b|0}function ek(b,d){b=b|0;d=d|0;var e=0,f=0;if(!b){d=0;return d|0}if(((d|0)!=0?(a[b>>0]|0)!=-86:0)?(c[b+4>>2]&16777216|0)==0:0)if(!(c[b+12>>2]|0))e=(c[b+20>>2]|0)==0?12:28;else e=28;else e=52;if((c[b+4>>2]&1024|0)==0?(f=c[b+8>>2]|0,(f|0)!=0):0)e=((Eu(f)|0)&1073741823)+(e|1)|0;e=e+7&-8;if(!(d&1)){d=e;return d|0}else{f=ek(c[b+12>>2]|0,d)|0;return f+e+(ek(c[b+16>>2]|0,d)|0)|0}return 0}function fk(d,f,g){d=d|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,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=Ra;Ra=Ra+32|0;A=G+4|0;B=G;c[B>>2]=0;C=d+81|0;if(!f){F=0;Ra=G;return F|0}D=d+272|0;E=d+276|0;F=d+288|0;s=d+300|0;t=d+296|0;u=d+284|0;v=d+292|0;w=A+4|0;x=A+8|0;y=A+12|0;z=A+24|0;j=0;r=B;a:while(1){do if(c[D>>2]|0)if(!(a[C>>0]|0))q=11;else break a;else{if((e[E>>1]|0)>=76){h=c[s>>2]|0;if(h|0){c[s>>2]=c[h>>2];c[u>>2]=(c[u>>2]|0)+1;break}h=c[t>>2]|0;if(!h)h=v;else{c[t>>2]=c[h>>2];c[u>>2]=(c[u>>2]|0)+1;break}}else h=F;c[h>>2]=(c[h>>2]|0)+1;q=11}while(0);if((q|0)==11){q=0;h=_d(d,76,0)|0}if(!h)break;i=gk(d,c[f>>2]|0,g)|0;c[h>>2]=i;i=ik(d,c[f+32>>2]|0,g)|0;c[h+32>>2]=i;i=c[f+36>>2]|0;if(!i)i=0;else i=dk(d,i,g,0)|0;c[h+36>>2]=i;i=gk(d,c[f+40>>2]|0,g)|0;c[h+40>>2]=i;i=c[f+44>>2]|0;if(!i)i=0;else i=dk(d,i,g,0)|0;c[h+44>>2]=i;p=gk(d,c[f+48>>2]|0,g)|0;c[h+48>>2]=p;a[h+4>>0]=a[f+4>>0]|0;c[h+56>>2]=j;p=r;r=h+52|0;c[r>>2]=0;i=c[f+60>>2]|0;if(!i)i=0;else i=dk(d,i,g,0)|0;c[h+60>>2]=i;c[h+12>>2]=0;c[h+16>>2]=0;c[h+8>>2]=c[f+8>>2]&-33;c[h+24>>2]=-1;c[h+28>>2]=-1;b[h+6>>1]=b[f+6>>1]|0;o=c[f+64>>2]|0;b:do if(o){j=c[o>>2]<<4|8;do if(c[D>>2]|0)if(!(a[C>>0]|0))q=28;else{i=0;break b}else{if(!(0<0|(0==0?(e[E>>1]|0)>>>0>>0:0))){i=c[s>>2]|0;if(i|0){c[s>>2]=c[i>>2];c[u>>2]=(c[u>>2]|0)+1;break}i=c[t>>2]|0;if(!i)i=v;else{c[t>>2]=c[i>>2];c[u>>2]=(c[u>>2]|0)+1;break}}else i=F;c[i>>2]=(c[i>>2]|0)+1;q=28}while(0);if((q|0)==28){q=0;i=_d(d,j,0)|0}if(i){gw(i|0,0,j|0)|0;c[i>>2]=c[o>>2];if((c[o>>2]|0)>0){n=i+8|0;m=0;do{k=fk(d,c[o+8+(m<<4)+8>>2]|0,0)|0;c[n+(m<<4)+8>>2]=k;k=gk(d,c[o+8+(m<<4)+4>>2]|0,0)|0;c[n+(m<<4)+4>>2]=k;k=c[o+8+(m<<4)>>2]|0;c:do if(k){l=(Eu(k)|0)+1|0;d:do if(c[D>>2]|0)if(!(a[C>>0]|0))q=41;else{j=0;break c}else{do if(0<0|(0==0?(e[E>>1]|0)>>>0>>0:0))j=F;else{j=c[s>>2]|0;if(j|0){c[s>>2]=c[j>>2];c[u>>2]=(c[u>>2]|0)+1;break d}j=c[t>>2]|0;if(!j){j=v;break}c[t>>2]=c[j>>2];c[u>>2]=(c[u>>2]|0)+1;break d}while(0);c[j>>2]=(c[j>>2]|0)+1;q=41}while(0);if((q|0)==41){q=0;j=_d(d,l,0)|0}if(j)ew(j|0,k|0,l|0)|0;else j=0}else j=0;while(0);c[n+(m<<4)>>2]=j;m=m+1|0}while((m|0)<(c[o>>2]|0))}}else i=0}else i=0;while(0);c[h+64>>2]=i;c[h+68>>2]=0;i=c[f+72>>2]|0;c[A>>2]=0;if(!i)i=0;else{k=A;while(1){j=hk(d,0,i)|0;c[k>>2]=j;if(!j)break;i=c[i+32>>2]|0;if(!i)break;else k=j+32|0}i=c[A>>2]|0}c[h+72>>2]=i;if(c[f+68>>2]|0){c[w>>2]=137;c[x>>2]=138;c[y>>2]=0;c[A>>2]=0;c[z>>2]=h;$j(A,h)|0}c[h+20>>2]=c[f+20>>2];c[p>>2]=h;f=c[f+52>>2]|0;if(!f)break;else j=h}F=c[B>>2]|0;Ra=G;return F|0}function gk(d,f,g){d=d|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,x=0,y=0,z=0,A=0,B=0;if(!f){A=0;return A|0}A=(d|0)==0;if((!A?(h=f,(c[d+304>>2]|0)>>>0<=h>>>0):0)?(c[d+308>>2]|0)>>>0>h>>>0:0)j=e[d+276>>1]|0;else j=Wa[c[29352>>2]&127](f)|0;k=((j|0)<0)<<31>>31;z=d+272|0;a:do if(c[z>>2]|0)if(!(a[d+81>>0]|0))y=17;else{A=0;return A|0}else{do if(!(0>>0|(0==(k|0)?(e[d+276>>1]|0)>>>0>>0:0))){i=d+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];x=d+284|0;c[x>>2]=(c[x>>2]|0)+1;break a}i=d+296|0;h=c[i>>2]|0;if(!h){h=d+292|0;break}else{c[i>>2]=c[h>>2];x=d+284|0;c[x>>2]=(c[x>>2]|0)+1;break a}}else h=d+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;y=17}while(0);if((y|0)==17)h=_d(d,j,k)|0;if(!h){A=0;return A|0}c[h>>2]=c[f>>2];if((c[f>>2]|0)<=0){A=h;return A|0}r=d+276|0;s=d+81|0;t=d+288|0;u=d+300|0;v=d+296|0;w=d+284|0;x=d+292|0;o=h+4|0;i=0;p=0;q=f+4|0;while(1){j=c[q>>2]|0;do if(j){k=dk(d,j,g,0)|0;c[o>>2]=k;if(!((k|0)==0|(a[j>>0]|0)!=-86))if(!(b[k+32>>1]|0)){n=c[k+16>>2]|0;c[k+12>>2]=n;break}else{c[k+12>>2]=i;n=i;break}else n=i}else{c[o>>2]=0;n=i}while(0);l=c[q+4>>2]|0;b:do if(!l)i=0;else{m=(Eu(l)|0)+1|0;do if(A){k=Sv(m|0,0,-1,-1)|0;j=L()|0;if(j>>>0>0|(j|0)==0&k>>>0>2147483390){i=0;break b}if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](m)|0;y=50;break}i=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){B=c[14978]|0;k=Tv(j|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;j=L()|0;c[14768]=((j|0)<0|(j|0)==0&k>>>0<=B>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){i=0;break b}j=Wa[c[29352>>2]&127](i)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0)c[14987]=j}else{if(c[z>>2]|0){if(a[s>>0]|0){i=0;break b}}else{if(!(0<0|(0==0?(e[r>>1]|0)>>>0>>0:0))){i=c[u>>2]|0;if(i|0){c[u>>2]=c[i>>2];c[w>>2]=(c[w>>2]|0)+1;y=50;break}i=c[v>>2]|0;if(!i)i=x;else{c[v>>2]=c[i>>2];c[w>>2]=(c[w>>2]|0)+1;y=50;break}}else i=t;c[i>>2]=(c[i>>2]|0)+1}i=_d(d,m,0)|0;y=50}while(0);if((y|0)==50){y=0;if(!i){i=0;break}}ew(i|0,l|0,m|0)|0}while(0);c[o+4>>2]=i;l=c[q+8>>2]|0;c:do if(!l)i=0;else{m=(Eu(l)|0)+1|0;do if(A){B=Sv(m|0,0,-1,-1)|0;k=L()|0;if(k>>>0>0|(k|0)==0&B>>>0>2147483390){i=0;break c}if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](m)|0;y=75;break}i=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){B=c[14978]|0;k=Tv(j|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;j=L()|0;c[14768]=((j|0)<0|(j|0)==0&k>>>0<=B>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){i=0;break c}j=Wa[c[29352>>2]&127](i)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0)c[14987]=j}else{if(c[z>>2]|0){if(a[s>>0]|0){i=0;break c}}else{if(!(0<0|(0==0?(e[r>>1]|0)>>>0>>0:0))){i=c[u>>2]|0;if(i|0){c[u>>2]=c[i>>2];c[w>>2]=(c[w>>2]|0)+1;y=75;break}i=c[v>>2]|0;if(!i)i=x;else{c[v>>2]=c[i>>2];c[w>>2]=(c[w>>2]|0)+1;y=75;break}}else i=t;c[i>>2]=(c[i>>2]|0)+1}i=_d(d,m,0)|0;y=75}while(0);if((y|0)==75){y=0;if(!i){i=0;break}}ew(i|0,l|0,m|0)|0}while(0);c[o+8>>2]=i;a[o+12>>0]=a[q+12>>0]|0;B=o+13|0;l=a[B>>0]|0;a[B>>0]=l&-2;m=q+13|0;l=a[m>>0]&2|l&-4;a[B>>0]=l;a[B>>0]=l&-10|a[m>>0]&8;c[o+16>>2]=c[q+16>>2];p=p+1|0;if((p|0)>=(c[f>>2]|0))break;else{o=o+20|0;i=n;q=q+20|0}}return h|0}function hk(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(!f){d=0;return d|0}j=(b|0)==0;a:do if(j){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](92)|0;m=25;break}g=Wa[c[29356>>2]&127](92)|0;if((c[14985]|0)>>>0<92)c[14985]=92;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){l=c[14978]|0;k=Tv(h|0,i|0,g|0,((g|0)<0)<<31>>31|0)|0;i=L()|0;c[14768]=((i|0)<0|(i|0)==0&k>>>0<=l>>>0)&1}h=Wa[c[29340>>2]&127](g)|0;if(!h){d=0;return d|0}g=Wa[c[29352>>2]&127](h)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0)c[14987]=g}else{if(c[b+272>>2]|0){if(a[b+81>>0]|0){d=0;return d|0}}else{do if((e[b+276>>1]|0)>=92){h=b+300|0;g=c[h>>2]|0;if(g|0){c[h>>2]=c[g>>2];m=b+284|0;c[m>>2]=(c[m>>2]|0)+1;m=25;break a}h=b+296|0;g=c[h>>2]|0;if(!g){g=b+292|0;break}else{c[h>>2]=c[g>>2];m=b+284|0;c[m>>2]=(c[m>>2]|0)+1;m=25;break a}}else g=b+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1}g=_d(b,92,0)|0;m=25}while(0);if((m|0)==25)if(!g){d=0;return d|0}else h=g;g=h;i=g+92|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(i|0));k=c[f>>2]|0;b:do if(!k)g=0;else{l=(Eu(k)|0)+1|0;c:do if(j){j=Sv(l|0,0,-1,-1)|0;i=L()|0;if(i>>>0>0|(i|0)==0&j>>>0>2147483390){g=0;break b}if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](l)|0;m=51;break}g=Wa[c[29356>>2]&127](l)|0;if((c[14985]|0)>>>0>>0)c[14985]=l;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){n=c[14978]|0;j=Tv(i|0,j|0,g|0,((g|0)<0)<<31>>31|0)|0;i=L()|0;c[14768]=((i|0)<0|(i|0)==0&j>>>0<=n>>>0)&1}g=Wa[c[29340>>2]&127](g)|0;if(!g){g=0;break b}i=Wa[c[29352>>2]&127](g)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}else{if(c[b+272>>2]|0){if(a[b+81>>0]|0){g=0;break b}}else{do if(!(0<0|(0==0?(e[b+276>>1]|0)>>>0>>0:0))){i=b+300|0;g=c[i>>2]|0;if(g|0){c[i>>2]=c[g>>2];m=b+284|0;c[m>>2]=(c[m>>2]|0)+1;m=51;break c}i=b+296|0;g=c[i>>2]|0;if(!g){g=b+292|0;break}else{c[i>>2]=c[g>>2];m=b+284|0;c[m>>2]=(c[m>>2]|0)+1;m=51;break c}}else g=b+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1}g=_d(b,l,0)|0;m=51}while(0);if((m|0)==51)if(!g){g=0;break}ew(g|0,k|0,l|0)|0}while(0);c[h>>2]=g;g=c[f+36>>2]|0;if(!g)g=0;else g=dk(b,g,0,0)|0;c[h+36>>2]=g;c[h+40>>2]=c[f+40>>2];g=gk(b,c[f+8>>2]|0,0)|0;c[h+8>>2]=g;g=gk(b,c[f+12>>2]|0,0)|0;c[h+12>>2]=g;a[h+16>>0]=a[f+16>>0]|0;a[h+18>>0]=a[f+18>>0]|0;a[h+17>>0]=a[f+17>>0]|0;a[h+20>>0]=a[f+20>>0]|0;g=c[f+24>>2]|0;if(!g)g=0;else g=dk(b,g,0,0)|0;c[h+24>>2]=g;g=c[f+28>>2]|0;if(!g)g=0;else g=dk(b,g,0,0)|0;c[h+28>>2]=g;c[h+68>>2]=d;n=h;return n|0}function ik(b,d,f){b=b|0;d=d|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;if(!d){f=0;return f|0}i=c[d>>2]|0;v=(i|0)>0;i=(i*72|0)+8|0;j=v?i:80;i=v?((i|0)<0)<<31>>31:0;v=b+272|0;a:do if(c[v>>2]|0)if(!(a[b+81>>0]|0))u=12;else{f=0;return f|0}else{do if(!(i>>>0>0|((i|0)==0?j>>>0>(e[b+276>>1]|0)>>>0:0))){h=b+300|0;g=c[h>>2]|0;if(g|0){c[h>>2]=c[g>>2];t=b+284|0;c[t>>2]=(c[t>>2]|0)+1;break a}h=b+296|0;g=c[h>>2]|0;if(!g){g=b+292|0;break}else{c[h>>2]=c[g>>2];t=b+284|0;c[t>>2]=(c[t>>2]|0)+1;break a}}else g=b+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1;u=12}while(0);if((u|0)==12)g=_d(b,j,i)|0;if(!g){f=0;return f|0}t=c[d>>2]|0;c[g+4>>2]=t;c[g>>2]=t;if((c[d>>2]|0)<=0){f=g;return f|0}m=g+8|0;n=b+276|0;o=b+81|0;p=b+288|0;q=b+300|0;r=b+296|0;s=b+284|0;t=b+292|0;l=0;do{c[m+(l*72|0)>>2]=c[d+8+(l*72|0)>>2];i=c[d+8+(l*72|0)+4>>2]|0;b:do if(i){j=(Eu(i)|0)+1|0;do if(c[v>>2]|0)if(!(a[o>>0]|0))u=25;else{h=0;break b}else{if(!(0<0|(0==0?(e[n>>1]|0)>>>0>>0:0))){h=c[q>>2]|0;if(h|0){c[q>>2]=c[h>>2];c[s>>2]=(c[s>>2]|0)+1;break}h=c[r>>2]|0;if(!h)h=t;else{c[r>>2]=c[h>>2];c[s>>2]=(c[s>>2]|0)+1;break}}else h=p;c[h>>2]=(c[h>>2]|0)+1;u=25}while(0);if((u|0)==25){u=0;h=_d(b,j,0)|0}if(h)ew(h|0,i|0,j|0)|0;else h=0}else h=0;while(0);c[m+(l*72|0)+4>>2]=h;i=c[d+8+(l*72|0)+8>>2]|0;c:do if(i){j=(Eu(i)|0)+1|0;do if(c[v>>2]|0)if(!(a[o>>0]|0))u=37;else{h=0;break c}else{if(!(0<0|(0==0?(e[n>>1]|0)>>>0>>0:0))){h=c[q>>2]|0;if(h|0){c[q>>2]=c[h>>2];c[s>>2]=(c[s>>2]|0)+1;break}h=c[r>>2]|0;if(!h)h=t;else{c[r>>2]=c[h>>2];c[s>>2]=(c[s>>2]|0)+1;break}}else h=p;c[h>>2]=(c[h>>2]|0)+1;u=37}while(0);if((u|0)==37){u=0;h=_d(b,j,0)|0}if(h)ew(h|0,i|0,j|0)|0;else h=0}else h=0;while(0);c[m+(l*72|0)+8>>2]=h;i=c[d+8+(l*72|0)+12>>2]|0;d:do if(i){j=(Eu(i)|0)+1|0;do if(c[v>>2]|0)if(!(a[o>>0]|0))u=49;else{h=0;break d}else{if(!(0<0|(0==0?(e[n>>1]|0)>>>0>>0:0))){h=c[q>>2]|0;if(h|0){c[q>>2]=c[h>>2];c[s>>2]=(c[s>>2]|0)+1;break}h=c[r>>2]|0;if(!h)h=t;else{c[r>>2]=c[h>>2];c[s>>2]=(c[s>>2]|0)+1;break}}else h=p;c[h>>2]=(c[h>>2]|0)+1;u=49}while(0);if((u|0)==49){u=0;h=_d(b,j,0)|0}if(h)ew(h|0,i|0,j|0)|0;else h=0}else h=0;while(0);c[m+(l*72|0)+12>>2]=h;c[m+(l*72|0)+36>>2]=c[d+8+(l*72|0)+36>>2];c[m+(l*72|0)+40>>2]=c[d+8+(l*72|0)+40>>2];c[m+(l*72|0)+24>>2]=c[d+8+(l*72|0)+24>>2];c[m+(l*72|0)+28>>2]=c[d+8+(l*72|0)+28>>2];k=m+(l*72|0)+37|0;h=a[k>>0]|0;if(h&2){i=c[d+8+(l*72|0)+64>>2]|0;e:do if(i){j=(Eu(i)|0)+1|0;do if(c[v>>2]|0)if(!(a[o>>0]|0))u=62;else{h=0;break e}else{if(!(0<0|(0==0?(e[n>>1]|0)>>>0>>0:0))){h=c[q>>2]|0;if(h|0){c[q>>2]=c[h>>2];c[s>>2]=(c[s>>2]|0)+1;break}h=c[r>>2]|0;if(!h)h=t;else{c[r>>2]=c[h>>2];c[s>>2]=(c[s>>2]|0)+1;break}}else h=p;c[h>>2]=(c[h>>2]|0)+1;u=62}while(0);if((u|0)==62){u=0;h=_d(b,j,0)|0}if(h)ew(h|0,i|0,j|0)|0;else h=0}else h=0;while(0);c[m+(l*72|0)+64>>2]=h;h=a[k>>0]|0}c[m+(l*72|0)+68>>2]=c[d+8+(l*72|0)+68>>2];if(h&4){k=gk(b,c[d+8+(l*72|0)+64>>2]|0,f)|0;c[m+(l*72|0)+64>>2]=k}h=c[d+8+(l*72|0)+16>>2]|0;c[m+(l*72|0)+16>>2]=h;if(h|0){k=h+32|0;c[k>>2]=(c[k>>2]|0)+1}h=fk(b,c[d+8+(l*72|0)+20>>2]|0,f)|0;c[m+(l*72|0)+20>>2]=h;h=c[d+8+(l*72|0)+44>>2]|0;if(!h)h=0;else h=dk(b,h,f,0)|0;c[m+(l*72|0)+44>>2]=h;i=jk(b,c[d+8+(l*72|0)+48>>2]|0)|0;c[m+(l*72|0)+48>>2]=i;i=d+8+(l*72|0)+56|0;j=c[i+4>>2]|0;k=m+(l*72|0)+56|0;c[k>>2]=c[i>>2];c[k+4>>2]=j;l=l+1|0}while((l|0)<(c[d>>2]|0));return g|0}function jk(b,d){b=b|0;d=d|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;if(!d){v=0;return v|0}v=b+272|0;a:do if(c[v>>2]|0)if(!(a[b+81>>0]|0))t=12;else{v=0;return v|0}else{do if((e[b+276>>1]|0)>=8){g=b+300|0;f=c[g>>2]|0;if(f|0){c[g>>2]=c[f>>2];u=b+284|0;c[u>>2]=(c[u>>2]|0)+1;break a}g=b+296|0;f=c[g>>2]|0;if(!f){f=b+292|0;break}else{c[g>>2]=c[f>>2];u=b+284|0;c[u>>2]=(c[u>>2]|0)+1;break a}}else f=b+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1;t=12}while(0);if((t|0)==12)f=_d(b,8,0)|0;if(!f){v=0;return v|0}u=d+4|0;c[f+4>>2]=c[u>>2];i=c[u>>2]<<3;b:do if(c[v>>2]|0)if(!(a[b+81>>0]|0))t=25;else c[f>>2]=0;else{do if(!(0<0|(0==0?(e[b+276>>1]|0)>>>0>>0:0))){g=b+300|0;h=c[g>>2]|0;if(h|0){c[g>>2]=c[h>>2];t=b+284|0;c[t>>2]=(c[t>>2]|0)+1;t=26;break b}g=b+296|0;h=c[g>>2]|0;if(!h){g=b+292|0;break}else{c[g>>2]=c[h>>2];t=b+284|0;c[t>>2]=(c[t>>2]|0)+1;t=26;break b}}else g=b+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1;t=25}while(0);if((t|0)==25){h=_d(b,i,0)|0;t=26}if((t|0)==26?(c[f>>2]=h,h|0):0){if((c[u>>2]|0)<=0){v=f;return v|0}n=b+276|0;o=b+81|0;p=b+288|0;q=b+300|0;r=b+296|0;s=b+284|0;m=b+292|0;g=0;while(1){l=c[d>>2]|0;j=c[l+(g<<3)>>2]|0;c:do if(j){k=(Eu(j)|0)+1|0;do if(c[v>>2]|0)if(!(a[o>>0]|0))t=46;else{i=0;break c}else{if(!(0<0|(0==0?(e[n>>1]|0)>>>0>>0:0))){i=c[q>>2]|0;if(i|0){c[q>>2]=c[i>>2];c[s>>2]=(c[s>>2]|0)+1;break}i=c[r>>2]|0;if(!i)i=m;else{c[r>>2]=c[i>>2];c[s>>2]=(c[s>>2]|0)+1;break}}else i=p;c[i>>2]=(c[i>>2]|0)+1;t=46}while(0);if((t|0)==46){t=0;i=_d(b,k,0)|0}if(i)ew(i|0,j|0,k|0)|0;else i=0}else i=0;while(0);c[h+(g<<3)>>2]=i;c[h+(g<<3)+4>>2]=c[l+(g<<3)+4>>2];g=g+1|0;if((g|0)>=(c[u>>2]|0))break;h=c[f>>2]|0}return f|0}if(c[b+480>>2]|0){Xd(b,f);v=0;return v|0}v=f;if((c[b+304>>2]|0)>>>0<=v>>>0?(c[b+308>>2]|0)>>>0>v>>>0:0){v=b+300|0;c[f>>2]=c[v>>2];c[v>>2]=f;v=0;return v|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);v=0;return v|0}else{v=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);v=0;return v|0}return 0}function kk(b,d){b=b|0;d=d|0;var e=0;if((a[d>>0]|0)!=-95)return 0;d=d+44|0;e=c[d>>2]|0;if(!e)return 0;b=b+24|0;c[e+32>>2]=c[(c[b>>2]|0)+68>>2];c[(c[b>>2]|0)+68>>2]=c[d>>2];return 0}function lk(a,b){a=a|0;b=b|0;return (c[a+24>>2]|0)!=(b|0)|0}function mk(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=10-(c[b+56>>2]|0)|0;l=c[b>>2]|0;m=b+64|0;j=c[m>>2]|0;k=n<<2;a:do if(!j){b:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))i=12;else{i=28;break a}else{do if(!(0<0|(0==0?(e[l+276>>1]|0)>>>0>>0:0))){g=l+300|0;h=c[g>>2]|0;if(h|0){c[g>>2]=c[h>>2];l=l+284|0;c[l>>2]=(c[l>>2]|0)+1;break b}g=l+296|0;h=c[g>>2]|0;if(!h){g=l+292|0;break}else{c[g>>2]=c[h>>2];l=l+284|0;c[l>>2]=(c[l>>2]|0)+1;break b}}else g=l+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1;i=12}while(0);if((i|0)==12)h=_d(l,k,0)|0;c[m>>2]=h;g=b+60|0;if(h)i=30}else{g=j;i=l+304|0;if(((c[i>>2]|0)>>>0<=g>>>0?(c[l+308>>2]|0)>>>0>g>>>0:0)?!(0<0|(0==0?(e[l+276>>1]|0)>>>0>>0:0)):0){h=j;g=b+60|0;i=30;break}h=Zd(l,j,k,0)|0;if(h|0){c[m>>2]=h;g=b+60|0;i=30;break}if(c[l+480>>2]|0){Xd(l,j);i=28;break}if((c[i>>2]|0)>>>0<=g>>>0?(c[l+308>>2]|0)>>>0>g>>>0:0){i=l+300|0;c[j>>2]=c[i>>2];c[i>>2]=j;i=28;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);i=28;break}else{i=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);i=28;break}}while(0);if((i|0)==28){c[m>>2]=0;g=b+60|0}else if((i|0)==30){c[g>>2]=n;c[h+(f<<2)>>2]=c[d+108>>2];return}c[g>>2]=0;return}function nk(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=Ra;Ra=Ra+16|0;g=h;if((a[b+199>>0]|0)!=2){Ra=h;return}c[g>>2]=f;f=Me(c[b>>2]|0,e,g)|0;i=c[b+8>>2]|0;g=c[i+108>>2]|0;e=b+212|0;Fj(i,171,g,c[e>>2]|0,0,f,-7)|0;if(d<<24>>24)c[e>>2]=g;Ra=h;return}function ok(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;l=Ra;Ra=Ra+32|0;i=l+16|0;h=l+8|0;k=l;g=c[d+12>>2]|0;e=a[g>>0]|0;if(e<<24>>24==-88)e=a[g+38>>0]|0;switch(e<<24>>24){case -87:{e=g+20|0;j=6;break}case -125:{e=c[g+20>>2]|0;j=6;break}default:f=1}if((j|0)==6)f=c[c[e>>2]>>2]|0;if(c[d+4>>2]&2048|0){e=c[c[c[d+20>>2]>>2]>>2]|0;if((f|0)==(e|0)){k=0;Ra=l;return k|0}c[k>>2]=e;c[k+4>>2]=f;cd(b,39001,k);k=1;Ra=l;return k|0}if((f|0)==1){k=0;Ra=l;return k|0}if(!(c[g+4>>2]&2048)){cd(b,38899,i);k=1;Ra=l;return k|0}else{c[h>>2]=c[c[c[g+20>>2]>>2]>>2];c[h+4>>2]=1;cd(b,39001,h);k=1;Ra=l;return k|0}return 0}function pk(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=c[d+12>>2]|0;f=a[n>>0]|0;if(f<<24>>24==-88)f=a[n+38>>0]|0;switch(f<<24>>24){case -87:{f=n+20|0;l=6;break}case -125:{f=c[n+20>>2]|0;l=6;break}default:m=1}if((l|0)==6)m=c[c[f>>2]>>2]|0;if(!(c[d+4>>2]&2048))k=0;else k=c[d+20>>2]|0;b=c[b>>2]|0;h=m+1|0;g=((h|0)<0)<<31>>31;a:do if(!b){j=Sv(h|0,g|0,-1,-1)|0;i=L()|0;if(i>>>0>0|(i|0)==0&j>>>0>2147483390){n=0;return n|0}if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](h)|0;l=33;break}b=Wa[c[29356>>2]&127](h)|0;if((c[14985]|0)>>>0>>0)c[14985]=h;d=59064;f=c[d>>2]|0;d=c[d+4>>2]|0;if((d|0)>0|(d|0)==0&f>>>0>0){j=c[14978]|0;i=Tv(f|0,d|0,b|0,((b|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&i>>>0<=j>>>0)&1}f=Wa[c[29340>>2]&127](b)|0;if(!f){n=0;return n|0}d=Wa[c[29352>>2]&127](f)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0)c[14987]=d}else{if(c[b+272>>2]|0){if(a[b+81>>0]|0){n=0;return n|0}}else{do if(!(0>>0|(0==(g|0)?(e[b+276>>1]|0)>>>0>>0:0))){d=b+300|0;f=c[d>>2]|0;if(f|0){c[d>>2]=c[f>>2];l=b+284|0;c[l>>2]=(c[l>>2]|0)+1;l=33;break a}d=b+296|0;f=c[d>>2]|0;if(!f){f=b+292|0;break}else{c[d>>2]=c[f>>2];l=b+284|0;c[l>>2]=(c[l>>2]|0)+1;l=33;break a}}else f=b+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1}f=_d(b,h,g)|0;l=33}while(0);if((l|0)==33)if(!f){n=0;return n|0}b:do if((m|0)>0){h=n+38|0;i=n+20|0;j=n+20|0;if(!k){g=0;while(1){b=a[n>>0]|0;if(b<<24>>24==-88)d=a[h>>0]|0;else d=b;switch(d<<24>>24){case -87:{d=i;l=42;break}case -125:{d=c[j>>2]|0;l=42;break}default:d=n}do if((l|0)==42){l=0;if((c[c[d>>2]>>2]|0)<2)d=n;else{if(b<<24>>24!=-125?(a[h>>0]|0)!=-125:0){d=c[(c[i>>2]|0)+4+(g*20|0)>>2]|0;break}d=c[(c[c[j>>2]>>2]|0)+4+(g*20|0)>>2]|0}}while(0);k=Xj(d)|0;a[f+g>>0]=k;g=g+1|0;if((g|0)==(m|0))break b}}g=0;while(1){b=a[n>>0]|0;if(b<<24>>24==-88)d=a[h>>0]|0;else d=b;switch(d<<24>>24){case -87:{d=i;l=52;break}case -125:{d=c[j>>2]|0;l=52;break}default:d=n}do if((l|0)==52){l=0;if((c[c[d>>2]>>2]|0)<2)d=n;else{if(b<<24>>24!=-125?(a[h>>0]|0)!=-125:0){d=c[(c[i>>2]|0)+4+(g*20|0)>>2]|0;break}d=c[(c[c[j>>2]>>2]|0)+4+(g*20|0)>>2]|0}}while(0);d=Xj(d)|0;b=Xj(c[(c[k>>2]|0)+4+(g*20|0)>>2]|0)|0;if(d<<24>>24==0|b<<24>>24==0)d=(b|d)<<24>>24==0?65:(b&255)+(d&255)&255;else d=d<<24>>24>66|b<<24>>24>66?67:65;a[f+g>>0]=d;g=g+1|0;if((g|0)==(m|0))break b}}while(0);a[f+m>>0]=0;n=f;return n|0} -function gm(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;m=c[j>>2]|0;l=c[m+12>>2]|0;k=a[l>>0]|0;if(k<<24>>24==-88)k=a[l+38>>0]|0;switch(k<<24>>24){case -87:{k=l+20|0;v=6;break}case -125:{k=c[l+20>>2]|0;v=6;break}default:k=1}if((v|0)==6)k=c[c[k>>2]>>2]|0;r=(e[h+52>>1]|0)-i|0;r=(k|0)<(r|0)?k:r;s=h+28|0;if((r|0)<=1){v=1;return v|0}t=h+4|0;u=h+12|0;q=h+32|0;k=1;while(1){o=c[(c[l+20>>2]|0)+4+(k*20|0)>>2]|0;p=c[m+16>>2]|0;l=p+20|0;if(c[p+4>>2]&2048)l=c[l>>2]|0;n=c[(c[l>>2]|0)+4+(k*20|0)>>2]|0;if((a[o>>0]|0)!=-94){v=36;break}if((c[o+28>>2]|0)!=(g|0)){v=36;break}h=b[o+32>>1]|0;p=k+i|0;if(h<<16>>16!=(b[(c[t>>2]|0)+(p<<1)>>1]|0)){v=36;break}m=c[s>>2]|0;if((a[m+p>>0]|0)!=(a[m+i>>0]|0)){v=36;break}l=Xj(o)|0;m=Xj(n)|0;if(l<<24>>24==0|m<<24>>24==0)m=(m|l)<<24>>24==0?65:(m&255)+(l&255)&255;else m=l<<24>>24>66|m<<24>>24>66?67:65;if(h<<16>>16>-1)l=a[(c[(c[u>>2]|0)+4>>2]|0)+(h<<16>>16<<4)+13>>0]|0;else l=68;if(m<<24>>24!=l<<24>>24){v=36;break}do if(!(c[o+4>>2]&256)){if(n|0?c[n+4>>2]&256|0:0){l=Yi(f,n)|0;v=29;break}l=Yi(f,o)|0;if(!l){l=Yi(f,n)|0;v=29}}else{l=Yi(f,o)|0;v=29}while(0);if((v|0)==29){v=0;if(!l){v=36;break}}m=c[l>>2]|0;h=c[(c[q>>2]|0)+(p<<2)>>2]|0;p=a[m>>0]|0;l=(d[208+(p&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0;if(!(p<<24>>24==0|(l|0)!=0))do{m=m+1|0;h=h+1|0;p=a[m>>0]|0;l=(d[208+(p&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(p<<24>>24==0|(l|0)!=0));if(l|0){v=36;break}k=k+1|0;if((k|0)>=(r|0)){v=36;break}m=c[j>>2]|0;l=c[m+12>>2]|0}if((v|0)==36)return k|0;return 0}function hm(f,g,h,i,j,k,l){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|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,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,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;eb=Ra;Ra=Ra+96|0;$a=eb;ab=j&65535;if(j<<16>>16?b[(c[c[f>>2]>>2]|0)+76>>1]&64:0){db=0;Ra=eb;return db|0}Ea=c[g>>2]|0;j=Ea&65535;if(j>>>0>63){db=0;Ra=eb;return db|0}Fa=cw(1,0,j|0)|0;Fa=Sv(Fa|0,L()|0,-1,-1)|0;Ga=L()|0;i=i&65535;Ca=i&2048;Ba=(Ca|0)==0;Ca=Ca>>>11&65535|386;a:do if(!((Fa|0)==0&(Ga|0)==0)){ba=h+24|0;ca=f+4|0;da=(j|0)==0;ea=f+80|0;fa=Ca&65535;ga=$a+4|0;ha=$a+12|0;ia=$a+16|0;ja=$a+8|0;ka=$a+20|0;la=$a+24|0;ma=$a+28|0;na=$a+17|0;oa=$a+18|0;pa=$a+72|0;qa=$a+20|0;ra=$a+4|0;sa=$a+8|0;ta=$a+24|0;ua=f+488|0;xa=(j|0)!=0;ya=(i&192|0)==0;X=(i&64|0)==0;C=1;m=0;W=0;S=0;T=0;i=0;h=0;A=0;B=0;b:while(1){if(!W){U=i;V=h}else{V=m+8|0;U=c[V>>2]|i;V=c[V+4>>2]|h}if(W>>>0>>0){i=c[(c[ba>>2]|0)+(W<<2)>>2]|0;if(Ba){Na=i;za=10}else{r=C;s=i;q=B;p=A;o=S;n=T}}else{Na=k;za=10}if((za|0)==10){za=0;z=Na+36|0;i=c[z>>2]|0;P=Na+24|0;if(i&1024|0){za=11;break}Q=Na+30|0;b[Q>>1]=0;R=c[(c[ca>>2]|0)+8+((d[Na+16>>0]|0)*72|0)+40>>2]|0;if(da){o=A;p=B}else{v=~U;w=~V;x=Na+40|0;y=Na+48|0;u=0;h=A;m=B;do{s=cw(1,0,u|0)|0;t=L()|0;c:do if((s&h|0)==0&(t&m|0)==0){r=g+4+(u*20|0)|0;i=c[r>>2]|0;n=c[i+4>>2]|0;if(n&4096)do{if(!(n&262144))i=i+12|0;else i=(c[i+20>>2]|0)+4|0;i=c[i>>2]|0;n=c[i+4>>2]|0}while((n&4096|0)!=0);if((a[i>>0]|0)==-94?(c[i+28>>2]|0)==(R|0):0){q=i+32|0;i=b[q>>1]|0;c[$a>>2]=ea;c[ga>>2]=ea;c[ha>>2]=0;a[ia>>0]=0;c[ja>>2]=0;c[ka>>2]=fa;c[la>>2]=0;c[ma>>2]=R;a[na>>0]=1;a[oa>>0]=1;if(i<<16>>16!=-2?(b[pa>>1]=i,Qa=Tl($a)|0,Qa|0):0){o=0;p=Qa;while(1){n=p+32|0;i=c[n>>2]|0;n=c[n+4>>2]|0;if((i&v|0)==0&(n&w|0)==0){if((i|0)==0&(n|0)==0?(Sa=b[p+12>>1]|0,Sa&130):0){za=29;break}Ka=(o|0)==0?p:o}else Ka=o;i=Tl($a)|0;if(!i){za=33;break}else{o=Ka;p=i}}if((za|0)==29){za=0;Ha=p;Ta=Sa}else if((za|0)==33){za=0;if(!Ka)break;Ha=Ka;Ta=b[Ka+12>>1]|0}d:do if(Ta<<16>>16==1){i=b[x>>1]|0;if(!(i<<16>>16))break c;o=c[y>>2]|0;n=i&65535;i=0;while(1){if((Ha|0)==(c[o+(i<<2)>>2]|0))break d;i=i+1|0;if(i>>>0>=n>>>0)break c}}while(0);do if(Ta&130){if((b[q>>1]|0)<=-1)break;p=c[f>>2]|0;o=c[Ha>>2]|0;i=Yi(p,c[r>>2]|0)|0;if(!i)n=c[(c[p>>2]|0)+8>>2]|0;else n=i;i=Yi(p,o)|0;if(!i)i=c[(c[p>>2]|0)+8>>2]|0;n=c[n>>2]|0;o=c[i>>2]|0;O=a[n>>0]|0;i=(d[208+(O&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0;if(!(O<<24>>24==0|(i|0)!=0))do{n=n+1|0;o=o+1|0;O=a[n>>0]|0;i=(d[208+(O&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(O<<24>>24==0|(i|0)!=0));if(i|0)break c}while(0);h=s|h;m=t|m;break}}}while(0);u=u+1|0}while((u|0)!=(j|0));i=c[z>>2]|0;o=h;p=m}do if(!(i&4096)){if(!(i&256)){m=c[Na+32>>2]|0;if(!m){bb=0;za=135;break b}O=m+55|0;if((d[O>>0]|d[O+1>>0]<<8)&4){bb=0;za=135;break b}h=b[m+52>>1]|0;i=(a[m+54>>0]|0)!=0&1;if(!(h<<16>>16)){La=i;Va=o;Wa=p;za=117;break}else{n=m;O=b[m+50>>1]|0;N=h&65535}}else{n=0;O=0;i=C;N=1}F=Na+42|0;G=(n|0)==0;H=Na+48|0;I=n+4|0;J=n+28|0;K=n+12|0;M=n+40|0;C=n+32|0;D=cw(1,0,W|0)|0;E=L()|0;h=0;y=0;A=0;B=0;z=o;x=p;e:while(1){o=e[P>>1]|0;q=B>>>0>>0;f:do if(q?B>>>0>=(e[F>>1]|0)>>>0:0){p=c[H>>2]|0;m=c[p+(B<<2)>>2]|0;w=b[m+12>>1]|0;n=w&65535;if((w&Ca)<<16>>16){Aa=h;Y=y;Z=A;$=(n&256|0)==0?i:0;aa=B+1|0;va=z;wa=x;break}if((n&1|0)!=0?(Ua=c[m>>2]|0,Oa=B+1|0,Oa>>>0>>0):0){m=Oa;while(1){if((c[c[p+(m<<2)>>2]>>2]|0)==(Ua|0)){Da=0;za=68;break f}m=m+1|0;if(m>>>0>=o>>>0){Da=1;za=68;break}}}else{Da=1;za=68}}else{Da=1;za=68}while(0);if((za|0)==68){za=0;if(!G){o=b[(c[I>>2]|0)+(B<<1)>>1]|0;m=a[(c[J>>2]|0)+B>>0]|0;n=c[K>>2]|0;o=o<<16>>16==(b[n+40>>1]|0)?-1:o<<16>>16;if(q|(i<<24>>24==0|(o|0)<0)){u=o;_=i}else{u=o;_=(a[(c[n+4>>2]|0)+(o<<4)+12>>0]|0)==0?0:i}}else{m=0;u=-1;_=i}if(!(xa&Da<<24>>24!=0)){za=114;break}s=(u|0)>-2;t=(u|0)==-1;i=0;n=1;g:while(1){v=cw(1,0,i|0)|0;w=L()|0;do if((v&z|0)==0&(w&x|0)==0){r=g+4+(i*20|0)|0;o=c[r>>2]|0;h:do if(!o)o=0;else while(1){p=c[o+4>>2]|0;if(!(p&4096))break h;if(!(p&262144))o=o+12|0;else o=(c[o+20>>2]|0)+4|0;o=c[o>>2]|0;if(!o){o=0;break}}while(0);n=ya?0:n;if(s){if((a[o>>0]|0)!=-94)break;if((c[o+28>>2]|0)!=(R|0))break;if((u|0)!=(b[o+32>>1]|0))break}else{p=c[(c[M>>2]|0)+4+(B*20|0)>>2]|0;i:do if(!o)o=0;else while(1){q=c[o+4>>2]|0;if(!(q&4096))break i;if(!(q&262144))o=o+12|0;else o=(c[o+20>>2]|0)+4|0;o=c[o>>2]|0;if(!o){o=0;break}}while(0);j:do if(!p)p=0;else while(1){q=c[p+4>>2]|0;if(!(q&4096))break j;if(!(q&262144))p=p+12|0;else p=(c[p+20>>2]|0)+4|0;p=c[p>>2]|0;if(!p){p=0;break}}while(0);if(bk(0,o,p,R)|0)break}if(t){n=-1;break g}p=c[f>>2]|0;o=Yi(p,c[r>>2]|0)|0;if(!o)o=c[(c[p>>2]|0)+8>>2]|0;p=c[o>>2]|0;q=c[(c[C>>2]|0)+(B<<2)>>2]|0;r=a[p>>0]|0;o=(d[208+(r&255)>>0]|0)-(d[208+(d[q>>0]|0)>>0]|0)|0;if(!(r<<24>>24==0|(o|0)!=0))do{p=p+1|0;q=q+1|0;r=a[p>>0]|0;o=(d[208+(r&255)>>0]|0)-(d[208+(d[q>>0]|0)>>0]|0)|0}while(!(r<<24>>24==0|(o|0)!=0));if(!o){n=u;break g}}while(0);i=i+1|0;if(!(i>>>0>>0&n<<24>>24!=0)){za=114;break e}}o=B+1|0;b[Q>>1]=o;do if(X){if(h<<24>>24)if((m^y)<<24>>24==(a[g+4+(i*20|0)+12>>0]|0)){i=y;break}else{za=114;break e}i=a[g+4+(i*20|0)+12>>0]^m;if(!(i<<24>>24)){h=1;i=0;break}wa=l;Aa=c[wa+4>>2]|E;h=l;c[h>>2]=c[wa>>2]|D;c[h+4>>2]=Aa;h=1}else i=y;while(0);Aa=h;Y=i;Z=(n|0)==-1?1:A;$=_;aa=o;va=v|z;wa=w|x}if(aa>>>0>>0){h=Aa;y=Y;A=Z;B=aa;i=$;z=va;x=wa}else{Ja=Z;Pa=$;Xa=va;Ya=wa;break}}if((za|0)==114){za=0;Ja=A;Pa=(B|0)==0|B>>>0<(O&65535)>>>0?0:_;Xa=z;Ya=x}if(!(Ja<<24>>24)){La=Pa;Va=Xa;Wa=Ya;za=117}else{Ma=1;Za=Xa;_a=Ya}}else{La=C;Va=o;Wa=p;za=117}while(0);if((za|0)==117){za=0;if(!(La<<24>>24)){Ia=0;cb=Va;db=Wa;break a}else{Ma=La;Za=Va;_a=Wa}}v=Na+8|0;u=c[v>>2]|S;v=c[v+4>>2]|T;if(da){r=Ma;s=Na;q=_a;p=Za;o=u;n=v}else{s=~u;t=~v;r=0;q=Za;i=_a;while(1){o=cw(1,0,r|0)|0;p=L()|0;do if((o&q|0)==0&(p&i|0)==0){m=c[g+4+(r*20|0)>>2]|0;if(m){n=Pl(ua,m)|0;h=L()|0;if((n|0)==0&(h|0)==0){a[qa>>0]=1;c[ra>>2]=127;c[sa>>2]=128;c[ta>>2]=0;_j($a,m)|0;if(!(a[qa>>0]|0)){h=q;break}else{n=0;h=0}}}else{n=0;h=0}T=(n&s|0)==0&(h&t|0)==0;h=(T?o:0)|q;i=(T?p:0)|i}else h=q;while(0);r=r+1|0;if((r|0)==(j|0)){r=Ma;s=Na;q=i;p=h;o=u;n=v;break}else q=h}}}if(W>>>0>=ab>>>0|(q>>>0>Ga>>>0|(q|0)==(Ga|0)&p>>>0>=Fa>>>0|r<<24>>24==0)){Ia=r;cb=p;db=q;break a}else{C=r;m=s;W=W+1|0;S=o;T=n;i=U;h=V;A=p;B=q}}if((za|0)==11){db=(a[P+5>>0]|0)==0;Ia=C;cb=db?A:Fa;db=db?B:Ga;break}else if((za|0)==135){Ra=eb;return bb|0}}else{Ia=1;cb=0;db=0}while(0);if((cb|0)==(Fa|0)&(db|0)==(Ga|0)){db=Ea&255;Ra=eb;return db|0}if(Ia<<24>>24){db=-1;Ra=eb;return db|0}if(j>>>0<=1){db=0;Ra=eb;return db|0}while(1){i=j;j=j+-1|0;$a=cw(1,0,j|0)|0;$a=Sv($a|0,L()|0,-1,-1)|0;ab=L()|0;if(($a&cb|0)==($a|0)&(ab&db|0)==(ab|0))break;if((i|0)<=2){bb=0;za=135;break}}if((za|0)==135){Ra=eb;return bb|0}db=j&255;Ra=eb;return db|0}function im(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,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;do if(h|0){h=d+16|0;j=c[h>>2]|0;k=j+5|0;if(k>>>0<(c[d+8>>2]|0)>>>0){c[h>>2]=k;s=(c[d+4>>2]|0)+j|0;a[s>>0]=a[43977]|0;a[s+1>>0]=a[43978]|0;a[s+2>>0]=a[43979]|0;a[s+3>>0]=a[43980]|0;a[s+4>>0]=a[43981]|0;break}else{wb(d,43977,5);break}}while(0);s=(f|0)>1;do if(s){h=d+16|0;j=c[h>>2]|0;k=j+1|0;if(k>>>0<(c[d+8>>2]|0)>>>0){c[h>>2]=k;a[(c[d+4>>2]|0)+j>>0]=40;break}else{wb(d,44003,1);break}}else if((f|0)!=1){h=d+16|0;j=c[h>>2]|0;k=j+1|0;if(k>>>0<(c[d+8>>2]|0)>>>0){c[h>>2]=k;a[(c[d+4>>2]|0)+j>>0]=a[i>>0]|0;return}else{wb(d,i,1);return}}while(0);o=e+4|0;q=d+16|0;r=d+8|0;m=e+12|0;n=d+4|0;l=0;do{do if(l|0){h=c[q>>2]|0;j=h+1|0;if(j>>>0<(c[r>>2]|0)>>>0){c[q>>2]=j;a[(c[n>>2]|0)+h>>0]=44;break}else{wb(d,41685,1);break}}while(0);h=b[(c[o>>2]|0)+(l+g<<1)>>1]|0;switch(h<<16>>16){case -2:{h=43996;p=21;break}case -1:{h=38132;p=21;break}default:{h=c[(c[(c[m>>2]|0)+4>>2]|0)+(h<<16>>16<<4)>>2]|0;if(!h){e=0;h=0}else p=21}}if((p|0)==21){p=0;e=(Eu(h)|0)&1073741823}j=c[q>>2]|0;k=j+e|0;if(k>>>0<(c[r>>2]|0)>>>0){if(e|0){c[q>>2]=k;ew((c[n>>2]|0)+j|0,h|0,e|0)|0}}else wb(d,h,e);l=l+1|0}while((l|0)!=(f|0));h=c[q>>2]|0;j=h+1|0;k=j>>>0<(c[r>>2]|0)>>>0;do if(s){if(k){c[q>>2]=j;a[(c[d+4>>2]|0)+h>>0]=41}else wb(d,34066,1);h=c[q>>2]|0;j=h+1|0;if(j>>>0<(c[r>>2]|0)>>>0){c[q>>2]=j;a[(c[d+4>>2]|0)+h>>0]=a[i>>0]|0}else wb(d,i,1);h=c[q>>2]|0;j=h+1|0;if(j>>>0<(c[r>>2]|0)>>>0){c[q>>2]=j;a[(c[d+4>>2]|0)+h>>0]=40;break}else{wb(d,44003,1);break}}else if(k){c[q>>2]=j;a[(c[d+4>>2]|0)+h>>0]=a[i>>0]|0;break}else{wb(d,i,1);break}while(0);e=d+4|0;k=0;do{do if(k|0){h=c[q>>2]|0;j=h+1|0;if(j>>>0<(c[r>>2]|0)>>>0){c[q>>2]=j;a[(c[e>>2]|0)+h>>0]=44;break}else{wb(d,41685,1);break}}while(0);h=c[q>>2]|0;j=h+1|0;if(j>>>0<(c[r>>2]|0)>>>0){c[q>>2]=j;a[(c[e>>2]|0)+h>>0]=63}else wb(d,35133,1);k=k+1|0}while((k|0)!=(f|0));if(!s)return;h=c[q>>2]|0;j=h+1|0;if(j>>>0<(c[r>>2]|0)>>>0){c[q>>2]=j;a[(c[d+4>>2]|0)+h>>0]=41;return}else{wb(d,34066,1);return}}function jm(d,f,g,h,i,j){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var 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,J=0,K=0,M=0;M=Ra;Ra=Ra+16|0;J=M;y=c[f>>2]|0;K=c[d+8>>2]|0;a:do switch(a[y>>0]|0){case 45:case 53:{j=Jj(d,c[y+16>>2]|0,j)|0;break}case 50:{k=K+108|0;i=c[k>>2]|0;if((c[K+112>>2]|0)>(i|0)){c[k>>2]=i+1;K=c[K+104>>2]|0;a[K+(i*20|0)>>0]=73;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=0;c[K+(i*20|0)+8>>2]=j;c[K+(i*20|0)+12>>2]=0;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0;break a}else{Di(K,73,0,j,0)|0;break a}}default:{D=c[g+64>>2]|0;H=D+36|0;if((c[H>>2]&1024|0)==0?(k=c[D+32>>2]|0,(k|0)!=0):0)i=(a[(c[k+28>>2]|0)+h>>0]|0)==0?i:(i|0)==0&1;G=(h|0)>0;b:do if(G){l=c[D+48>>2]|0;k=0;while(1){F=c[l+(k<<2)>>2]|0;if(F|0?(c[F>>2]|0)==(y|0):0)break;k=k+1|0;if((k|0)>=(h|0))break b}lm(g,f);g=j;Ra=M;return g|0}while(0);F=D+40|0;m=e[F>>1]|0;if((m|0)>(h|0)){n=c[D+48>>2]|0;k=0;l=h;do{k=k+((c[c[n+(l<<2)>>2]>>2]|0)==(y|0)&1)|0;l=l+1|0}while((l|0)<(m|0));C=k}else C=0;c[J>>2]=0;if((c[y+4>>2]&2048|0)!=0?(c[c[c[y+20>>2]>>2]>>2]|0)!=1:0){A=c[d>>2]|0;B=dk(A,y,0,0)|0;u=A+81|0;if(!(a[u>>0]|0)){s=B+20|0;q=c[c[s>>2]>>2]|0;t=B+12|0;r=c[(c[t>>2]|0)+20>>2]|0;m=b[F>>1]|0;if((m&65535|0)>(h|0)){p=D+48|0;k=0;o=h;l=0;do{n=c[(c[p>>2]|0)+(o<<2)>>2]|0;if((c[n>>2]|0)==(y|0)?(v=(c[n+24>>2]|0)+-1|0,w=q+4+(v*20|0)|0,x=c[w>>2]|0,(x|0)!=0):0){l=nj(c[d>>2]|0,l,x)|0;c[w>>2]=0;m=r+4+(v*20|0)|0;k=nj(c[d>>2]|0,k,c[m>>2]|0)|0;c[m>>2]=0;m=b[F>>1]|0}o=o+1|0}while((o|0)<(m&65535|0))}else{l=0;k=0}if(q|0)ri(A,q);if(r|0)ri(A,r);c[(c[t>>2]|0)+20>>2]=k;c[c[s>>2]>>2]=l;if(k|0?(c[k>>2]|0)==1:0){l=k+4|0;k=c[l>>2]|0;c[l>>2]=0;l=c[t>>2]|0;if(l|0)ni(A,l);c[t>>2]=k}l=c[(c[s>>2]|0)+48>>2]|0;if(l|0?(z=c[l>>2]|0,(z|0)>0):0){k=0;do{b[l+4+(k*20|0)+16>>1]=0;k=k+1|0}while((k|0)!=(z|0))}if(!(a[u>>0]|0)){m=c[d>>2]|0;n=C<<2;c:do if(!m){z=Sv(n|0,0,-1,-1)|0;y=L()|0;if(y>>>0>0|(y|0)==0&z>>>0>2147483390)k=0;else{if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](n)|0;E=66;break}k=Wa[c[29356>>2]&127](n)|0;if((c[14985]|0)>>>0>>0)c[14985]=n;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){z=c[14978]|0;y=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;x=L()|0;c[14768]=((x|0)<0|(x|0)==0&y>>>0<=z>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k){k=0;break}l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0<=(c[14987]|0)>>>0){E=67;break}c[14987]=l;E=67}}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0){k=0;break}}else{do if(!(0<0|(0==0?(e[m+276>>1]|0)>>>0>>0:0))){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];E=m+284|0;c[E>>2]=(c[E>>2]|0)+1;E=66;break c}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];E=m+284|0;c[E>>2]=(c[E>>2]|0)+1;E=66;break c}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,n,0)|0;E=66}while(0);if((E|0)==66)if(!k)k=0;else E=67;if((E|0)==67)gw(k|0,0,n|0)|0;m=qk(d,B,4,0,k,J)|0;n=c[J>>2]|0;c[(c[f>>2]|0)+28>>2]=n;l=k}else{l=0;m=5;n=0;k=0}}else{l=0;m=5;n=0;k=0}if(B|0)ni(A,B);y=c[f>>2]|0;B=k}else{m=qk(d,y,4,0,0,J)|0;l=0;n=c[J>>2]|0;B=0}x=(((m|0)==4?(i|0)==0&1:i)|0)!=0;k=x?32:36;z=K+108|0;i=c[z>>2]|0;A=K+112|0;if((c[A>>2]|0)>(i|0)){c[z>>2]=i+1;w=c[K+104>>2]|0;a[w+(i*20|0)>>0]=k;b[w+(i*20|0)+2>>1]=0;c[w+(i*20|0)+4>>2]=n;c[w+(i*20|0)+8>>2]=0;c[w+(i*20|0)+12>>2]=0;c[w+(i*20|0)+16>>2]=0;a[w+(i*20|0)+1>>0]=0}else Di(K,k,n,0,0)|0;c[H>>2]=c[H>>2]|2048;t=g+56|0;k=c[t>>2]|0;if(!k){w=d+56|0;k=(c[w>>2]|0)+-1|0;c[w>>2]=k;c[g+16>>2]=k;k=c[t>>2]|0}q=k+C|0;c[t>>2]=q;r=c[d>>2]|0;s=g+60|0;i=c[s>>2]|0;q=q*20|0;d:do if(!i){e:do if(c[r+272>>2]|0)if(!(a[r+81>>0]|0))E=88;else{E=126;break d}else{do if(!(0<0|(0==0?(e[r+276>>1]|0)>>>0>>0:0))){n=r+300|0;i=c[n>>2]|0;if(i|0){c[n>>2]=c[i>>2];C=r+284|0;c[C>>2]=(c[C>>2]|0)+1;break e}n=r+296|0;i=c[n>>2]|0;if(!i){i=r+292|0;break}else{c[n>>2]=c[i>>2];C=r+284|0;c[C>>2]=(c[C>>2]|0)+1;break e}}else i=r+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;E=88}while(0);if((E|0)==88)i=_d(r,q,0)|0;c[s>>2]=i;if(!i)E=127;else E=103}else{o=i;p=r+304|0;if(((c[p>>2]|0)>>>0<=o>>>0?(c[r+308>>2]|0)>>>0>o>>>0:0)?!(0<0|(0==0?(e[r+276>>1]|0)>>>0>>0:0)):0){E=103;break}n=Zd(r,i,q,0)|0;if(n|0){c[s>>2]=n;i=n;E=103;break}if(c[r+480>>2]|0){Xd(r,i);E=126;break}if((c[p>>2]|0)>>>0<=o>>>0?(c[r+308>>2]|0)>>>0>o>>>0:0){E=r+300|0;c[i>>2]=c[E>>2];c[E>>2]=i;E=126;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);E=126;break}else{E=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);E=126;break}}while(0);if((E|0)==103){n=b[F>>1]|0;if((n&65535|0)>(h|0)){v=D+48|0;w=j-h|0;s=(m|0)==1;t=(l|0)==0;u=K+104|0;r=x?4:5;o=0;m=i+(k*20|0)|0;q=h;i=n;while(1){if((c[c[(c[v>>2]|0)+(q<<2)>>2]>>2]|0)==(y|0)){p=w+q|0;do if(s){n=c[J>>2]|0;k=c[z>>2]|0;if((c[A>>2]|0)>(k|0)){c[z>>2]=k+1;i=c[u>>2]|0;a[i+(k*20|0)>>0]=-128;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=n;c[i+(k*20|0)+8>>2]=p;c[i+(k*20|0)+12>>2]=0;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0;i=k;k=o;break}else{i=Di(K,128,n,p,0)|0;k=o;break}}else{if(t){k=o;n=0}else{k=o+1|0;n=c[l+(o<<2)>>2]|0}o=c[J>>2]|0;i=c[z>>2]|0;if((c[A>>2]|0)>(i|0)){c[z>>2]=i+1;D=c[u>>2]|0;a[D+(i*20|0)>>0]=90;b[D+(i*20|0)+2>>1]=0;c[D+(i*20|0)+4>>2]=o;c[D+(i*20|0)+8>>2]=n;c[D+(i*20|0)+12>>2]=p;c[D+(i*20|0)+16>>2]=0;a[D+(i*20|0)+1>>0]=0;n=o;break}else{i=Di(K,90,o,n,p)|0;n=o;break}}while(0);c[m+4>>2]=i;i=c[z>>2]|0;if((c[A>>2]|0)>(i|0)){c[z>>2]=i+1;D=c[u>>2]|0;a[D+(i*20|0)>>0]=50;b[D+(i*20|0)+2>>1]=0;c[D+(i*20|0)+4>>2]=p;c[D+(i*20|0)+8>>2]=0;c[D+(i*20|0)+12>>2]=0;c[D+(i*20|0)+16>>2]=0;a[D+(i*20|0)+1>>0]=0}else Di(K,50,p,0,0)|0;do if((q|0)==(h|0)){c[m>>2]=n;a[m+16>>0]=r;if(G?(I=c[H>>2]|0,(I&1024|0)==0):0){c[m+8>>2]=w;c[m+12>>2]=h;c[H>>2]=I|262144;break}c[m+12>>2]=0}else a[m+16>>0]=-86;while(0);m=m+20|0;i=b[F>>1]|0}else k=o;q=q+1|0;if((q|0)>=(i&65535|0))break;else o=k}}}else if((E|0)==126){c[s>>2]=0;E=127}if((E|0)==127)c[t>>2]=0;k=c[d>>2]|0;do if(B|0){if(k|0){if(c[k+480>>2]|0){Xd(k,B);break}K=B;if((c[k+304>>2]|0)>>>0<=K>>>0?(c[k+308>>2]|0)>>>0>K>>>0:0){K=k+300|0;c[B>>2]=c[K>>2];c[K>>2]=B;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](B);break}else{K=Wa[c[29352>>2]&127](B)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](B);break}}while(0)}}while(0);lm(g,f);g=j;Ra=M;return g|0}function km(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,l=0,m=0,n=0,o=0,p=0,q=0;if(!e){k=Jj(d,0,f)|0;if((k|0)==(f|0))return;h=c[d+8>>2]|0;if(!h)return;i=h+108|0;j=c[i>>2]|0;if((c[h+112>>2]|0)>(j|0)){c[i>>2]=j+1;d=c[h+104>>2]|0;a[d+(j*20|0)>>0]=79;b[d+(j*20|0)+2>>1]=0;c[d+(j*20|0)+4>>2]=k;c[d+(j*20|0)+8>>2]=f;c[d+(j*20|0)+12>>2]=0;c[d+(j*20|0)+16>>2]=0;a[d+(j*20|0)+1>>0]=0;return}else{Di(h,79,k,f,0)|0;return}}h=a[e>>0]|0;j=h<<24>>24==-88;if(j)h=a[e+38>>0]|0;switch(h<<24>>24){case -87:{i=e+20|0;q=7;break}case -125:{i=c[e+20>>2]|0;q=7;break}default:{}}if((q|0)==7?(c[c[i>>2]>>2]|0)>=2:0){if(c[e+4>>2]&2048|0){l=c[d+8>>2]|0;k=Qj(d,e)|0;h=g+-1|0;i=l+108|0;j=c[i>>2]|0;if((c[l+112>>2]|0)>(j|0)){c[i>>2]=j+1;d=c[l+104>>2]|0;a[d+(j*20|0)>>0]=78;b[d+(j*20|0)+2>>1]=0;c[d+(j*20|0)+4>>2]=k;c[d+(j*20|0)+8>>2]=f;c[d+(j*20|0)+12>>2]=h;c[d+(j*20|0)+16>>2]=0;a[d+(j*20|0)+1>>0]=0;return}else{Di(l,78,k,f,h)|0;return}}e=c[e+20>>2]|0;if((g|0)<=0)return;m=d+8|0;l=0;do{h=c[e+4+(l*20|0)>>2]|0;n=l+f|0;do if(h){if((a[h>>0]|0)!=-88){p=Jj(d,h,n)|0;q=21;break}k=c[m>>2]|0;h=c[h+28>>2]|0;i=k+108|0;j=c[i>>2]|0;if((c[k+112>>2]|0)>(j|0)){c[i>>2]=j+1;k=c[k+104>>2]|0;a[k+(j*20|0)>>0]=78;b[k+(j*20|0)+2>>1]=0;c[k+(j*20|0)+4>>2]=h;c[k+(j*20|0)+8>>2]=n;c[k+(j*20|0)+12>>2]=0;c[k+(j*20|0)+16>>2]=0;a[k+(j*20|0)+1>>0]=0;break}else{Di(k,78,h,n,0)|0;break}}else{p=Jj(d,0,n)|0;q=21}while(0);do if(((q|0)==21?(q=0,(p|0)!=(n|0)):0)?(o=c[m>>2]|0,o|0):0){h=o+108|0;i=c[h>>2]|0;if((c[o+112>>2]|0)>(i|0)){c[h>>2]=i+1;k=c[o+104>>2]|0;a[k+(i*20|0)>>0]=79;b[k+(i*20|0)+2>>1]=0;c[k+(i*20|0)+4>>2]=p;c[k+(i*20|0)+8>>2]=n;c[k+(i*20|0)+12>>2]=0;c[k+(i*20|0)+16>>2]=0;a[k+(i*20|0)+1>>0]=0;break}else{Di(o,79,p,n,0)|0;break}}while(0);l=l+1|0}while((l|0)!=(g|0));return}if(j){k=c[d+8>>2]|0;h=c[e+28>>2]|0;i=k+108|0;j=c[i>>2]|0;if((c[k+112>>2]|0)>(j|0)){c[i>>2]=j+1;d=c[k+104>>2]|0;a[d+(j*20|0)>>0]=78;b[d+(j*20|0)+2>>1]=0;c[d+(j*20|0)+4>>2]=h;c[d+(j*20|0)+8>>2]=f;c[d+(j*20|0)+12>>2]=0;c[d+(j*20|0)+16>>2]=0;a[d+(j*20|0)+1>>0]=0;return}else{Di(k,78,h,f,0)|0;return}}k=Jj(d,e,f)|0;if((k|0)==(f|0))return;h=c[d+8>>2]|0;if(!h)return;i=h+108|0;j=c[i>>2]|0;if((c[h+112>>2]|0)>(j|0)){c[i>>2]=j+1;d=c[h+104>>2]|0;a[d+(j*20|0)>>0]=79;b[d+(j*20|0)+2>>1]=0;c[d+(j*20|0)+4>>2]=k;c[d+(j*20|0)+8>>2]=f;c[d+(j*20|0)+12>>2]=0;c[d+(j*20|0)+16>>2]=0;a[d+(j*20|0)+1>>0]=0;return}else{Di(h,79,k,f,0)|0;return}}function lm(d,e){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;h=e+10|0;g=b[h>>1]|0;if(g&4)return;q=d+72|0;if(!(c[d>>2]|0)){m=q;l=c[m>>2]|0;m=c[m+4>>2]|0;f=e;k=0;i=g;n=h;while(1){j=f+40|0;if(!((c[j>>2]&l|0)==0?(c[j+4>>2]&m|0)==0:0)){d=22;break}if((k|0)!=0?(o=i&65535,(o&1024|0)!=0):0)d=(o|512)&65535;else d=i|4;b[n>>1]=d;j=c[f+16>>2]|0;if((j|0)<0){d=22;break}d=c[(c[f+4>>2]|0)+20>>2]|0;i=d+(j*48|0)+14|0;n=(a[i>>0]|0)+-1<<24>>24;a[i>>0]=n;if(n<<24>>24){d=22;break}n=d+(j*48|0)+10|0;i=b[n>>1]|0;if(i&4){d=22;break}else{f=d+(j*48|0)|0;k=k+1|0}}if((d|0)==22)return}i=0;while(1){if(!(c[(c[e>>2]|0)+4>>2]&1)){d=22;break}o=q;n=e+40|0;if(!((c[n>>2]&c[o>>2]|0)==0?(c[n+4>>2]&c[o+4>>2]|0)==0:0)){d=22;break}if((i|0)!=0?(p=g&65535,(p&1024|0)!=0):0)d=(p|512)&65535;else d=g|4;b[h>>1]=d;f=c[e+16>>2]|0;if((f|0)<0){d=22;break}d=c[(c[e+4>>2]|0)+20>>2]|0;n=d+(f*48|0)+14|0;o=(a[n>>0]|0)+-1<<24>>24;a[n>>0]=o;if(o<<24>>24){d=22;break}h=d+(f*48|0)+10|0;g=b[h>>1]|0;if(g&4){d=22;break}else{e=d+(f*48|0)|0;i=i+1|0}}if((d|0)==22)return}function mm(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;if((a[d>>0]|0)==44)do{mm(c[d+12>>2]|0,e,f);d=c[d+16>>2]|0}while((a[d>>0]|0)==44);i=f+12|0;if((c[i>>2]|0)<=0)return;f=c[f+20>>2]|0;g=0;while(1){h=f+10|0;if((b[h>>1]&4)==0?(bk(0,c[f>>2]|0,d,e)|0)==0:0)b[h>>1]=b[h>>1]|4;g=g+1|0;if((g|0)>=(c[i>>2]|0))break;else f=f+48|0}return}function nm(d,e){d=d|0;e=e|0;d=c[d+24>>2]|0;if(bk(0,e,c[d>>2]|0,c[d+4>>2]|0)|0){e=0;return e|0}a[e>>0]=-94;c[e+28>>2]=c[d+8>>2];b[e+32>>1]=c[d+12>>2];c[e+44>>2]=0;e=1;return e|0}function om(a){a=a|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;q=c[c[c[a>>2]>>2]>>2]|0;d=c[a+12>>2]|0;o=a+20|0;if((d|0)>0){p=(q|0)==0;i=q+480|0;j=q+304|0;k=q+308|0;l=q+300|0;h=c[o>>2]|0;while(1){g=d;d=d+-1|0;f=h+10|0;e=b[f>>1]|0;if((e&1)!=0?(m=c[h>>2]|0,(m|0)!=0):0){ni(q,m);e=b[f>>1]|0}e=e&65535;do if(!(e&16)){if(e&32|0?(n=c[h+28>>2]|0,om(n),n|0):0){if(!p){if(c[i>>2]|0){Xd(q,n);break}f=n;if((c[j>>2]|0)>>>0<=f>>>0?(c[k>>2]|0)>>>0>f>>>0:0){c[n>>2]=c[l>>2];c[l>>2]=n;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{f=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}}else{e=c[h+28>>2]|0;om(e);if(e|0){if(!p){if(c[i>>2]|0){Xd(q,e);break}f=e;if((c[j>>2]|0)>>>0<=f>>>0?(c[k>>2]|0)>>>0>f>>>0:0){c[e>>2]=c[l>>2];c[l>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{f=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}}while(0);if((g|0)<=1)break;else h=h+48|0}}d=c[o>>2]|0;if((d|0)==(a+24|0))return;if(!d)return;if(q|0){if(c[q+480>>2]|0){Xd(q,d);return}a=d;if((c[q+304>>2]|0)>>>0<=a>>>0?(c[q+308>>2]|0)>>>0>a>>>0:0){q=q+300|0;c[d>>2]=c[q>>2];c[q>>2]=d;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);return}else{q=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);return}}function pm(d,f,g){d=d|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;l=d+8|0;h=c[l>>2]|0;a:do if(!h){k=c[d>>2]|0;if((c[d+116>>2]|0)==0?(b[k+76>>1]&8)==0:0)a[d+23>>0]=1;b:do if(c[k+272>>2]|0)if(!(a[k+81>>0]|0))j=15;else{h=0;break a}else{do if((e[k+276>>1]|0)>=224){i=k+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];p=k+284|0;c[p>>2]=(c[p>>2]|0)+1;break b}i=k+296|0;h=c[i>>2]|0;if(!h){h=k+292|0;break}else{c[i>>2]=c[h>>2];p=k+284|0;c[p>>2]=(c[p>>2]|0)+1;break b}}else h=k+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;j=15}while(0);if((j|0)==15)h=_d(k,224,0)|0;if(!h)h=0;else{i=h+104|0;j=i+120|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(j|0));c[h>>2]=k;i=k+4|0;j=c[i>>2]|0;if(j|0)c[j+4>>2]=h;c[h+8>>2]=j;c[h+4>>2]=0;c[i>>2]=h;c[h+20>>2]=381479589;c[h+12>>2]=d;c[l>>2]=h;Di(h,61,0,1,0)|0}}while(0);p=d+19|0;i=a[p>>0]|0;if(!(i<<24>>24)){n=d+44|0;o=(c[n>>2]|0)+1|0;c[n>>2]=o}else{o=i+-1<<24>>24;a[p>>0]=o;o=c[d+148+((o&255)<<2)>>2]|0}m=h+108|0;i=c[m>>2]|0;n=h+112|0;if((c[n>>2]|0)>(i|0)){c[m>>2]=i+1;l=c[h+104>>2]|0;a[l+(i*20|0)>>0]=70;b[l+(i*20|0)+2>>1]=0;c[l+(i*20|0)+4>>2]=0;c[l+(i*20|0)+8>>2]=o;c[l+(i*20|0)+12>>2]=0;c[l+(i*20|0)+16>>2]=0;a[l+(i*20|0)+1>>0]=0}else Di(h,70,0,o,0)|0;do if((g|0)>2){i=a[p>>0]|0;if(!(i<<24>>24)){k=d+44|0;l=(c[k>>2]|0)+1|0;c[k>>2]=l}else{l=i+-1<<24>>24;a[p>>0]=l;l=c[d+148+((l&255)<<2)>>2]|0}i=c[m>>2]|0;if((c[n>>2]|0)>(i|0)){c[m>>2]=i+1;k=c[h+104>>2]|0;a[k+(i*20|0)>>0]=110;b[k+(i*20|0)+2>>1]=0;c[k+(i*20|0)+4>>2]=0;c[k+(i*20|0)+8>>2]=l;c[k+(i*20|0)+12>>2]=0;c[k+(i*20|0)+16>>2]=0;a[k+(i*20|0)+1>>0]=0}else i=Di(h,110,0,l,0)|0;do if(!(a[(c[h>>2]|0)+81>>0]|0)){if((i|0)<0)i=(c[m>>2]|0)+-1|0;j=c[h+104>>2]|0;k=j+(i*20|0)+1|0;if(!(a[k>>0]|0)){c[j+(i*20|0)+16>>2]=59952;a[k>>0]=-1;break}else{Ei(h,j+(i*20|0)|0,59952,-1);break}}while(0);i=c[m>>2]|0;j=i+2|0;if((c[n>>2]|0)>(i|0)){c[m>>2]=i+1;k=c[h+104>>2]|0;a[k+(i*20|0)>>0]=57;b[k+(i*20|0)+2>>1]=0;c[k+(i*20|0)+4>>2]=l;c[k+(i*20|0)+8>>2]=j;c[k+(i*20|0)+12>>2]=f;c[k+(i*20|0)+16>>2]=0;a[k+(i*20|0)+1>>0]=0}else Di(h,57,l,j,f)|0;i=c[m>>2]|0;if((i|0)>0)b[(c[h+104>>2]|0)+((i+-1|0)*20|0)+2>>1]=83}else{i=c[m>>2]|0;j=i+2|0;if((c[n>>2]|0)>(i|0)){c[m>>2]=i+1;l=c[h+104>>2]|0;a[l+(i*20|0)>>0]=15;b[l+(i*20|0)+2>>1]=0;c[l+(i*20|0)+4>>2]=f;c[l+(i*20|0)+8>>2]=j;c[l+(i*20|0)+12>>2]=0;c[l+(i*20|0)+16>>2]=0;a[l+(i*20|0)+1>>0]=0;break}else{Di(h,15,f,j,0)|0;break}}while(0);j=c[18208+(g<<2)>>2]|0;i=c[m>>2]|0;k=i+2|0;if((c[n>>2]|0)>(i|0)){c[m>>2]=i+1;l=c[h+104>>2]|0;a[l+(i*20|0)>>0]=j;b[l+(i*20|0)+2>>1]=0;c[l+(i*20|0)+4>>2]=o;c[l+(i*20|0)+8>>2]=k;c[l+(i*20|0)+12>>2]=f;c[l+(i*20|0)+16>>2]=0;a[l+(i*20|0)+1>>0]=0}else Di(h,j,o,k,f)|0;i=c[d+116>>2]|0;a[((i|0)==0?d:i)+21>>0]=1;i=c[m>>2]|0;if((c[n>>2]|0)>(i|0)){c[m>>2]=i+1;f=c[h+104>>2]|0;a[f+(i*20|0)>>0]=69;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=1;c[f+(i*20|0)+8>>2]=2;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0}else Di(h,69,1,2,0)|0;if(!(a[(c[h>>2]|0)+81>>0]|0)){n=c[18176+(g<<2)>>2]|0;f=c[h+104>>2]|0;g=(c[m>>2]|0)+-1|0;a[f+(g*20|0)+1>>0]=-1;c[f+(g*20|0)+16>>2]=n}if(!o)return;h=a[p>>0]|0;if((h&255)>=8)return;a[p>>0]=h+1<<24>>24;c[d+148+((h&255)<<2)>>2]=o;return}function qm(d,f,g){d=d|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;l=d+8|0;h=c[l>>2]|0;a:do if(!h){k=c[d>>2]|0;if((c[d+116>>2]|0)==0?(b[k+76>>1]&8)==0:0)a[d+23>>0]=1;b:do if(c[k+272>>2]|0)if(!(a[k+81>>0]|0))q=15;else{h=0;break a}else{do if((e[k+276>>1]|0)>=224){i=k+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];p=k+284|0;c[p>>2]=(c[p>>2]|0)+1;break b}i=k+296|0;h=c[i>>2]|0;if(!h){h=k+292|0;break}else{c[i>>2]=c[h>>2];p=k+284|0;c[p>>2]=(c[p>>2]|0)+1;break b}}else h=k+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;q=15}while(0);if((q|0)==15)h=_d(k,224,0)|0;if(!h)h=0;else{i=h+104|0;j=i+120|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(j|0));c[h>>2]=k;i=k+4|0;j=c[i>>2]|0;if(j|0)c[j+4>>2]=h;c[h+8>>2]=j;c[h+4>>2]=0;c[i>>2]=h;c[h+20>>2]=381479589;c[h+12>>2]=d;c[l>>2]=h;Di(h,61,0,1,0)|0}}while(0);if(!f)return;n=f+84|0;o=h+108|0;p=h+112|0;g=(g|0)==0;m=h+104|0;do{if(((c[n>>2]|0)==0?(c[(c[f+40>>2]|0)+4>>2]&4096|0)!=0:0)?(a[f+17>>0]|0)!=87:0){d=f+52|0;i=c[d>>2]|0;j=c[o>>2]|0;if((c[p>>2]|0)>(j|0)){c[o>>2]=j+1;l=c[m>>2]|0;a[l+(j*20|0)>>0]=73;b[l+(j*20|0)+2>>1]=0;c[l+(j*20|0)+4>>2]=0;c[l+(j*20|0)+8>>2]=i;c[l+(j*20|0)+12>>2]=0;c[l+(j*20|0)+16>>2]=0;a[l+(j*20|0)+1>>0]=0}else Di(h,73,0,i,0)|0;i=f+56|0;j=c[i>>2]|0;k=c[o>>2]|0;if((c[p>>2]|0)>(k|0)){c[o>>2]=k+1;l=c[m>>2]|0;a[l+(k*20|0)>>0]=32;b[l+(k*20|0)+2>>1]=0;c[l+(k*20|0)+4>>2]=j;c[l+(k*20|0)+8>>2]=0;c[l+(k*20|0)+12>>2]=0;c[l+(k*20|0)+16>>2]=0;a[l+(k*20|0)+1>>0]=0}else Di(h,32,j,0,0)|0;k=c[i>>2]|0;i=c[d>>2]|0;j=c[o>>2]|0;if((c[p>>2]|0)>(j|0)){c[o>>2]=j+1;l=c[m>>2]|0;a[l+(j*20|0)>>0]=90;b[l+(j*20|0)+2>>1]=0;c[l+(j*20|0)+4>>2]=k;c[l+(j*20|0)+8>>2]=0;c[l+(j*20|0)+12>>2]=i;c[l+(j*20|0)+16>>2]=0;a[l+(j*20|0)+1>>0]=0}else Di(h,90,k,0,i)|0;j=c[o>>2]|0;if(!(a[(c[h>>2]|0)+81>>0]|0))i=(c[m>>2]|0)+((((j|0)<2?-1:-2)+j|0)*20|0)|0;else i=59308;c[i+8>>2]=j}else q=37;do if((q|0)==37?(q=0,(c[f+60>>2]|0)==0):0){i=c[(c[f+68>>2]|0)+20>>2]|0;if(!i)d=0;else d=c[i>>2]|0;l=f+48|0;k=c[l>>2]|0;if(g){i=c[f+52>>2]|0;j=c[o>>2]|0;if((c[p>>2]|0)>(j|0)){c[o>>2]=j+1;l=c[m>>2]|0;a[l+(j*20|0)>>0]=-100;b[l+(j*20|0)+2>>1]=0;c[l+(j*20|0)+4>>2]=k;c[l+(j*20|0)+8>>2]=d;c[l+(j*20|0)+12>>2]=i;c[l+(j*20|0)+16>>2]=0;a[l+(j*20|0)+1>>0]=0}else Di(h,156,k,d,i)|0;i=c[f+40>>2]|0;j=c[h>>2]|0;if(!(a[j+81>>0]|0)){d=c[m>>2]|0;l=(c[o>>2]|0)+-1|0;a[d+(l*20|0)+1>>0]=-8;c[d+(l*20|0)+16>>2]=i;break}if(!(c[i+4>>2]&16))break;if(j|0){if(c[j+480>>2]|0){Xd(j,i);break}l=i;if((c[j+304>>2]|0)>>>0<=l>>>0?(c[j+308>>2]|0)>>>0>l>>>0:0){l=j+300|0;c[i>>2]=c[l>>2];c[l>>2]=i;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{l=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}i=c[o>>2]|0;if((c[p>>2]|0)>(i|0)){c[o>>2]=i+1;j=c[m>>2]|0;a[j+(i*20|0)>>0]=-99;b[j+(i*20|0)+2>>1]=0;c[j+(i*20|0)+4>>2]=k;c[j+(i*20|0)+8>>2]=d;c[j+(i*20|0)+12>>2]=0;c[j+(i*20|0)+16>>2]=0;a[j+(i*20|0)+1>>0]=0}else Di(h,157,k,d,0)|0;i=c[f+40>>2]|0;j=c[h>>2]|0;do if(a[j+81>>0]|0){if(c[i+4>>2]&16|0){if(j|0){if(c[j+480>>2]|0){Xd(j,i);break}d=i;if((c[j+304>>2]|0)>>>0<=d>>>0?(c[j+308>>2]|0)>>>0>d>>>0:0){d=j+300|0;c[i>>2]=c[d>>2];c[d>>2]=i;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{d=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}}else{k=c[m>>2]|0;d=(c[o>>2]|0)+-1|0;a[k+(d*20|0)+1>>0]=-8;c[k+(d*20|0)+16>>2]=i}while(0);i=c[l>>2]|0;j=c[f+52>>2]|0;k=c[o>>2]|0;if((c[p>>2]|0)>(k|0)){c[o>>2]=k+1;d=c[m>>2]|0;a[d+(k*20|0)>>0]=78;b[d+(k*20|0)+2>>1]=0;c[d+(k*20|0)+4>>2]=i;c[d+(k*20|0)+8>>2]=j;c[d+(k*20|0)+12>>2]=0;c[d+(k*20|0)+16>>2]=0;a[d+(k*20|0)+1>>0]=0}else Di(h,78,i,j,0)|0;i=c[l>>2]|0;j=c[o>>2]|0;if((c[p>>2]|0)>(j|0)){c[o>>2]=j+1;l=c[m>>2]|0;a[l+(j*20|0)>>0]=73;b[l+(j*20|0)+2>>1]=0;c[l+(j*20|0)+4>>2]=0;c[l+(j*20|0)+8>>2]=i;c[l+(j*20|0)+12>>2]=0;c[l+(j*20|0)+16>>2]=0;a[l+(j*20|0)+1>>0]=0;break}else{Di(h,73,0,i,0)|0;break}}while(0);f=c[f+32>>2]|0}while((f|0)!=0);return}function rm(d){d=d|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,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;J=d+4|0;K=c[J>>2]|0;M=c[d+8>>2]|0;l=K+84|0;L=c[d>>2]|0;do if(!(c[l>>2]|0)){if(!K){j=M+108|0;h=M+112|0;break}s=L+56|0;t=L+19|0;u=L+44|0;j=M+108|0;h=M+112|0;v=M+104|0;w=K+44|0;x=M+12|0;r=K;do{o=(c[r+40>>2]|0)+32|0;f=c[o>>2]|0;if((f|0)==43457|(f|0)==43467){m=c[r+56>>2]|0;p=c[s>>2]|0;k=p+-1|0;c[s>>2]=k;f=a[t>>0]|0;if(!(f<<24>>24)){n=(c[u>>2]|0)+1|0;c[u>>2]=n}else{n=f+-1<<24>>24;a[t>>0]=n;n=c[L+148+((n&255)<<2)>>2]|0}l=r+52|0;f=c[l>>2]|0;g=c[j>>2]|0;if((c[h>>2]|0)>(g|0)){c[j>>2]=g+1;K=c[v>>2]|0;a[K+(g*20|0)>>0]=73;b[K+(g*20|0)+2>>1]=0;c[K+(g*20|0)+4>>2]=0;c[K+(g*20|0)+8>>2]=f;c[K+(g*20|0)+12>>2]=0;c[K+(g*20|0)+16>>2]=0;a[K+(g*20|0)+1>>0]=0}else Di(M,73,0,f,0)|0;do if((c[o>>2]|0)!=43457){f=c[j>>2]|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=f+1;K=c[v>>2]|0;a[K+(f*20|0)>>0]=70;b[K+(f*20|0)+2>>1]=0;c[K+(f*20|0)+4>>2]=1;c[K+(f*20|0)+8>>2]=n;c[K+(f*20|0)+12>>2]=0;c[K+(f*20|0)+16>>2]=0;a[K+(f*20|0)+1>>0]=0;break}else{Di(M,70,1,n,0)|0;break}}else{f=c[w>>2]|0;g=(c[r+76>>2]|0)+1|0;i=c[j>>2]|0;if((c[h>>2]|0)>(i|0)){c[j>>2]=i+1;K=c[v>>2]|0;a[K+(i*20|0)>>0]=90;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=f;c[K+(i*20|0)+8>>2]=g;c[K+(i*20|0)+12>>2]=n;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else Di(M,90,f,g,n)|0;pm(L,n,2)}while(0);f=r+60|0;g=c[f>>2]|0;i=c[j>>2]|0;if((c[h>>2]|0)>(i|0)){c[j>>2]=i+1;K=c[v>>2]|0;a[K+(i*20|0)>>0]=100;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=n;c[K+(i*20|0)+8>>2]=g;c[K+(i*20|0)+12>>2]=n;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else Di(M,100,n,g,n)|0;f=(c[f>>2]|0)+1|0;g=c[j>>2]|0;if((c[h>>2]|0)>(g|0)){c[j>>2]=g+1;K=c[v>>2]|0;a[K+(g*20|0)>>0]=54;b[K+(g*20|0)+2>>1]=0;c[K+(g*20|0)+4>>2]=f;c[K+(g*20|0)+8>>2]=k;c[K+(g*20|0)+12>>2]=n;c[K+(g*20|0)+16>>2]=0;a[K+(g*20|0)+1>>0]=0}else Di(M,54,f,k,n)|0;f=c[j>>2]|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=f+1;K=c[v>>2]|0;a[K+(f*20|0)>>0]=30;b[K+(f*20|0)+2>>1]=0;c[K+(f*20|0)+4>>2]=m;c[K+(f*20|0)+8>>2]=0;c[K+(f*20|0)+12>>2]=n;c[K+(f*20|0)+16>>2]=0;a[K+(f*20|0)+1>>0]=0}else Di(M,30,m,0,n)|0;i=c[r+76>>2]|0;f=c[l>>2]|0;g=c[j>>2]|0;if((c[h>>2]|0)>(g|0)){c[j>>2]=g+1;K=c[v>>2]|0;a[K+(g*20|0)>>0]=90;b[K+(g*20|0)+2>>1]=0;c[K+(g*20|0)+4>>2]=m;c[K+(g*20|0)+8>>2]=i;c[K+(g*20|0)+12>>2]=f;c[K+(g*20|0)+16>>2]=0;a[K+(g*20|0)+1>>0]=0}else Di(M,90,m,i,f)|0;g=c[x>>2]|0;f=0-p|0;if(((c[g+56>>2]|0)+(c[g+60>>2]|0)|0)<0)mk(g,M,f);else c[(c[g+64>>2]|0)+(f<<2)>>2]=c[j>>2];if(n|0?(y=a[t>>0]|0,(y&255)<8):0){a[t>>0]=y+1<<24>>24;c[L+148+((y&255)<<2)>>2]=n}}else if((f|0)==40587|(f|0)==40592){k=c[c[(c[r+68>>2]|0)+20>>2]>>2]|0;n=c[r+56>>2]|0;q=c[s>>2]|0;m=q+-1|0;c[s>>2]=m;f=a[t>>0]|0;if(!(f<<24>>24)){p=(c[u>>2]|0)+1|0;c[u>>2]=p}else{p=f+-1<<24>>24;a[t>>0]=p;p=c[L+148+((p&255)<<2)>>2]|0}l=c[w>>2]|0;do if((k|0)<3){f=c[r+52>>2]|0;g=c[j>>2]|0;if((c[h>>2]|0)>(g|0)){c[j>>2]=g+1;K=c[v>>2]|0;a[K+(g*20|0)>>0]=73;b[K+(g*20|0)+2>>1]=0;c[K+(g*20|0)+4>>2]=0;c[K+(g*20|0)+8>>2]=f;c[K+(g*20|0)+12>>2]=0;c[K+(g*20|0)+16>>2]=0;a[K+(g*20|0)+1>>0]=0;break}else{Di(M,73,0,f,0)|0;break}}else{f=(c[r+76>>2]|0)+2|0;g=c[r+52>>2]|0;i=c[j>>2]|0;if((c[h>>2]|0)>(i|0)){c[j>>2]=i+1;K=c[v>>2]|0;a[K+(i*20|0)>>0]=90;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=l;c[K+(i*20|0)+8>>2]=f;c[K+(i*20|0)+12>>2]=g;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0;break}else{Di(M,90,l,f,g)|0;break}}while(0);f=c[j>>2]|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=f+1;K=c[v>>2]|0;a[K+(f*20|0)>>0]=-128;b[K+(f*20|0)+2>>1]=0;c[K+(f*20|0)+4>>2]=l;c[K+(f*20|0)+8>>2]=p;c[K+(f*20|0)+12>>2]=0;c[K+(f*20|0)+16>>2]=0;a[K+(f*20|0)+1>>0]=0}else Di(M,128,l,p,0)|0;f=(c[o>>2]|0)==40587;do if((k|0)<2){f=f?1:-1;g=c[j>>2]|0;if((c[h>>2]|0)>(g|0)){c[j>>2]=g+1;K=c[v>>2]|0;a[K+(g*20|0)>>0]=83;b[K+(g*20|0)+2>>1]=0;c[K+(g*20|0)+4>>2]=p;c[K+(g*20|0)+8>>2]=f;c[K+(g*20|0)+12>>2]=0;c[K+(g*20|0)+16>>2]=0;a[K+(g*20|0)+1>>0]=0;break}else{Di(M,83,p,f,0)|0;break}}else{k=f?100:101;f=a[t>>0]|0;if(!(f<<24>>24)){i=(c[u>>2]|0)+1|0;c[u>>2]=i}else{i=f+-1<<24>>24;a[t>>0]=i;i=c[L+148+((i&255)<<2)>>2]|0}f=(c[r+76>>2]|0)+1|0;g=c[j>>2]|0;if((c[h>>2]|0)>(g|0)){c[j>>2]=g+1;K=c[v>>2]|0;a[K+(g*20|0)>>0]=90;b[K+(g*20|0)+2>>1]=0;c[K+(g*20|0)+4>>2]=l;c[K+(g*20|0)+8>>2]=f;c[K+(g*20|0)+12>>2]=i;c[K+(g*20|0)+16>>2]=0;a[K+(g*20|0)+1>>0]=0}else Di(M,90,l,f,i)|0;f=c[j>>2]|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=f+1;K=c[v>>2]|0;a[K+(f*20|0)>>0]=k;b[K+(f*20|0)+2>>1]=0;c[K+(f*20|0)+4>>2]=i;c[K+(f*20|0)+8>>2]=p;c[K+(f*20|0)+12>>2]=p;c[K+(f*20|0)+16>>2]=0;a[K+(f*20|0)+1>>0]=0}else Di(M,k,i,p,p)|0;if(i|0?(z=a[t>>0]|0,(z&255)<8):0){a[t>>0]=z+1<<24>>24;c[L+148+((z&255)<<2)>>2]=i}}while(0);f=c[j>>2]|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=f+1;K=c[v>>2]|0;a[K+(f*20|0)>>0]=30;b[K+(f*20|0)+2>>1]=0;c[K+(f*20|0)+4>>2]=n;c[K+(f*20|0)+8>>2]=m;c[K+(f*20|0)+12>>2]=p;c[K+(f*20|0)+16>>2]=0;a[K+(f*20|0)+1>>0]=0}else Di(M,30,n,m,p)|0;f=c[r+76>>2]|0;g=c[r+52>>2]|0;i=c[j>>2]|0;if((c[h>>2]|0)>(i|0)){c[j>>2]=i+1;K=c[v>>2]|0;a[K+(i*20|0)>>0]=90;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=n;c[K+(i*20|0)+8>>2]=f;c[K+(i*20|0)+12>>2]=g;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else Di(M,90,n,f,g)|0;g=c[x>>2]|0;f=0-q|0;if(((c[g+56>>2]|0)+(c[g+60>>2]|0)|0)<0)mk(g,M,f);else c[(c[g+64>>2]|0)+(f<<2)>>2]=c[j>>2];if(p|0?(A=a[t>>0]|0,(A&255)<8):0){a[t>>0]=A+1<<24>>24;c[L+148+((A&255)<<2)>>2]=p}}r=c[r+32>>2]|0}while((r|0)!=0)}else{C=c[K+56>>2]|0;n=K+12|0;f=c[n>>2]|0;if(!f)E=0;else E=c[f>>2]|0;D=L+56|0;A=c[D>>2]|0;y=A+-1|0;m=A+-2|0;c[D>>2]=m;D=L+19|0;f=a[D>>0]|0;do if(f<<24>>24){B=f+-1<<24>>24;a[D>>0]=B;g=c[L+148+((B&255)<<2)>>2]|0;if(!(B<<24>>24)){h=L+44|0;f=h;h=c[h>>2]|0;t=8;break}else{f=f+-2<<24>>24;a[D>>0]=f;B=c[L+148+((f&255)<<2)>>2]|0;break}}else{f=L+44|0;h=(c[f>>2]|0)+1|0;c[f>>2]=h;g=h;t=8}while(0);if((t|0)==8){B=h+1|0;c[f>>2]=B;f=0}z=(E|0)!=0;a:do if(z)if((E|0)!=1){j=L+32|0;h=c[j>>2]|0;k=L+28|0;f=c[k>>2]|0;if((f|0)<(E|0)){x=L+44|0;i=c[x>>2]|0;c[x>>2]=i+E;i=i+1|0}else{x=h+E|0;c[j>>2]=x;f=f-E|0;c[k>>2]=f;i=h;h=x}if((f|0)<(E|0)){w=L+44|0;x=c[w>>2]|0;c[w>>2]=x+E;w=i;x=x+1|0;break}else{c[j>>2]=h+E;c[k>>2]=f-E;w=i;x=h;break}}else{do if(f<<24>>24){x=f+-1<<24>>24;a[D>>0]=x;h=c[L+148+((x&255)<<2)>>2]|0;if(!(x<<24>>24)){i=L+44|0;f=i;i=c[i>>2]|0;break}else{x=f+-2<<24>>24;a[D>>0]=x;w=h;x=c[L+148+((x&255)<<2)>>2]|0;break a}}else{f=L+44|0;i=(c[f>>2]|0)+1|0;c[f>>2]=i;h=i}while(0);x=i+1|0;c[f>>2]=x;w=h;break}else{w=0;x=0}while(0);k=K+44|0;f=c[k>>2]|0;j=M+108|0;i=c[j>>2]|0;h=M+112|0;if((c[h>>2]|0)>(i|0)){c[j>>2]=i+1;v=M+104|0;u=c[v>>2]|0;a[u+(i*20|0)>>0]=-128;b[u+(i*20|0)+2>>1]=0;c[u+(i*20|0)+4>>2]=f;c[u+(i*20|0)+8>>2]=g;c[u+(i*20|0)+12>>2]=0;c[u+(i*20|0)+16>>2]=0;a[u+(i*20|0)+1>>0]=0}else{Di(M,128,f,g,0)|0;v=M+104|0}vm(d,c[k>>2]|0,w);f=K;do{i=c[f+48>>2]|0;k=c[j>>2]|0;if((c[h>>2]|0)>(k|0)){c[j>>2]=k+1;u=c[v>>2]|0;a[u+(k*20|0)>>0]=73;b[u+(k*20|0)+2>>1]=0;c[u+(k*20|0)+4>>2]=0;c[u+(k*20|0)+8>>2]=i;c[u+(k*20|0)+12>>2]=0;c[u+(k*20|0)+16>>2]=0;a[u+(k*20|0)+1>>0]=0}else Di(M,73,0,i,0)|0;f=c[f+32>>2]|0}while((f|0)!=0);f=c[l>>2]|0;i=c[j>>2]|0;if((c[h>>2]|0)>(i|0)){c[j>>2]=i+1;u=c[v>>2]|0;a[u+(i*20|0)>>0]=24;b[u+(i*20|0)+2>>1]=0;c[u+(i*20|0)+4>>2]=C;c[u+(i*20|0)+8>>2]=m;c[u+(i*20|0)+12>>2]=f;c[u+(i*20|0)+16>>2]=0;a[u+(i*20|0)+1>>0]=0}else Di(M,24,C,m,f)|0;u=c[j>>2]|0;if((c[h>>2]|0)>(u|0)){c[j>>2]=u+1;s=c[v>>2]|0;a[s+(u*20|0)>>0]=-128;b[s+(u*20|0)+2>>1]=0;c[s+(u*20|0)+4>>2]=C;c[s+(u*20|0)+8>>2]=B;c[s+(u*20|0)+12>>2]=0;c[s+(u*20|0)+16>>2]=0;a[s+(u*20|0)+1>>0]=0}else Di(M,128,C,B,0)|0;f=c[K+88>>2]|0;i=c[j>>2]|0;if((c[h>>2]|0)>(i|0)){c[j>>2]=i+1;s=c[v>>2]|0;a[s+(i*20|0)>>0]=54;b[s+(i*20|0)+2>>1]=0;c[s+(i*20|0)+4>>2]=f;c[s+(i*20|0)+8>>2]=m;c[s+(i*20|0)+12>>2]=B;c[s+(i*20|0)+16>>2]=0;a[s+(i*20|0)+1>>0]=0}else Di(M,54,f,m,B)|0;s=K+20|0;f=a[s>>0]|0;b:do switch(f<<24>>24){case 82:{f=c[j>>2]|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=f+1;t=c[v>>2]|0;a[t+(f*20|0)>>0]=53;b[t+(f*20|0)+2>>1]=0;c[t+(f*20|0)+4>>2]=g;c[t+(f*20|0)+8>>2]=y;c[t+(f*20|0)+12>>2]=B;c[t+(f*20|0)+16>>2]=0;a[t+(f*20|0)+1>>0]=0;break b}else{Di(M,53,g,y,B)|0;break b}}case 66:break;default:{p=c[n>>2]|0;if(!p){k=0;l=0}else{q=c[L>>2]|0;r=c[p>>2]|0;m=r+1|0;n=m*5|0;k=n+20|0;l=q+272|0;c:do if(c[l>>2]|0)if(!(a[q+81>>0]|0))t=56;else{f=0;i=0}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){f=q+300|0;i=c[f>>2]|0;if(i|0){c[f>>2]=c[i>>2];o=q+284|0;c[o>>2]=(c[o>>2]|0)+1;o=i;t=57;break c}f=q+296|0;i=c[f>>2]|0;if(!i){f=q+292|0;break}else{c[f>>2]=c[i>>2];o=q+284|0;c[o>>2]=(c[o>>2]|0)+1;o=i;t=57;break c}}else f=q+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1;t=56}while(0);if((t|0)==56){o=_d(q,k,0)|0;t=57}d:do if((t|0)==57){if(o|0){l=o+16|0;c[l>>2]=o+20+(m<<2);b[o+6>>1]=r;b[o+8>>1]=m;a[o+4>>0]=a[q+78>>0]|0;c[o+12>>2]=q;c[o>>2]=1;gw(o+24|0,0,n+-4|0)|0;if((r|0)<=0){f=o;i=o;break}i=p+4|0;k=0;while(1){f=Yi(L,c[i>>2]|0)|0;if(!f)f=c[(c[L>>2]|0)+8>>2]|0;c[o+20+(k<<2)>>2]=f;a[(c[l>>2]|0)+k>>0]=a[i+12>>0]|0;k=k+1|0;if((k|0)==(r|0)){f=o;i=o;break d}else i=i+20|0}}f=q+81|0;if((a[f>>0]|0)==0?(a[q+82>>0]|0)==0:0){a[f>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;c[l>>2]=(c[l>>2]|0)+1;f=c[q+236>>2]|0;if(f){c[f+12>>2]=7;f=o;i=0}else{f=o;i=0}}else{f=o;i=0}}while(0);k=f;f=a[s>>0]|0;l=i}do if(f<<24>>24==91){f=c[j>>2]|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=f+1;m=c[v>>2]|0;a[m+(f*20|0)>>0]=53;b[m+(f*20|0)+2>>1]=0;c[m+(f*20|0)+4>>2]=g;c[m+(f*20|0)+8>>2]=0;c[m+(f*20|0)+12>>2]=B;c[m+(f*20|0)+16>>2]=0;a[m+(f*20|0)+1>>0]=0;m=f;break}else{m=Di(M,53,g,0,B)|0;break}}else m=0;while(0);do if(!k){f=c[j>>2]|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=f+1;t=c[v>>2]|0;a[t+(f*20|0)>>0]=11;b[t+(f*20|0)+2>>1]=0;c[t+(f*20|0)+4>>2]=0;c[t+(f*20|0)+8>>2]=y;c[t+(f*20|0)+12>>2]=0;c[t+(f*20|0)+16>>2]=0;a[t+(f*20|0)+1>>0]=0;break}else{Di(M,11,0,y,0)|0;break}}else{vm(d,C,x);f=c[j>>2]|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=f+1;t=c[v>>2]|0;a[t+(f*20|0)>>0]=87;b[t+(f*20|0)+2>>1]=0;c[t+(f*20|0)+4>>2]=x;c[t+(f*20|0)+8>>2]=w;c[t+(f*20|0)+12>>2]=E;c[t+(f*20|0)+16>>2]=0;a[t+(f*20|0)+1>>0]=0}else Di(M,87,x,w,E)|0;f=c[M>>2]|0;e:do if(a[f+81>>0]|0){if(!((l|0)==0|(c[f+480>>2]|0)!=0)?(t=(c[l>>2]|0)+-1|0,c[l>>2]=t,(t|0)==0):0){f=c[l+12>>2]|0;do if(f|0){if(c[f+480>>2]|0){Xd(f,l);break e}i=l;if((c[f+304>>2]|0)>>>0>i>>>0)break;if((c[f+308>>2]|0)>>>0<=i>>>0)break;t=f+300|0;c[l>>2]=c[t>>2];c[t>>2]=l;break e}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{t=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}}else{s=c[v>>2]|0;t=(c[j>>2]|0)+-1|0;a[s+(t*20|0)+1>>0]=-9;c[s+(t*20|0)+16>>2]=l}while(0);f=c[j>>2]|0;i=f+1|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=i;t=c[v>>2]|0;a[t+(f*20|0)>>0]=16;b[t+(f*20|0)+2>>1]=0;c[t+(f*20|0)+4>>2]=i;c[t+(f*20|0)+8>>2]=y;c[t+(f*20|0)+12>>2]=i;c[t+(f*20|0)+16>>2]=0;a[t+(f*20|0)+1>>0]=0;break}else{Di(M,16,i,y,i)|0;break}}while(0);if(m|0){i=c[j>>2]|0;if(!(a[(c[M>>2]|0)+81>>0]|0))f=(c[v>>2]|0)+(((m|0)<0?i+-1|0:m)*20|0)|0;else f=59308;c[f+8>>2]=i}}}while(0);wm(L,K,C,0,c[d+20>>2]|0);i=c[M+12>>2]|0;f=0-A|0;if(((c[i+56>>2]|0)+(c[i+60>>2]|0)|0)<0)mk(i,M,f);else c[(c[i+64>>2]|0)+(f<<2)>>2]=c[j>>2];f=c[j>>2]|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=f+1;K=c[v>>2]|0;a[K+(f*20|0)>>0]=5;b[K+(f*20|0)+2>>1]=0;c[K+(f*20|0)+4>>2]=C;c[K+(f*20|0)+8>>2]=u;c[K+(f*20|0)+12>>2]=0;c[K+(f*20|0)+16>>2]=0;a[K+(f*20|0)+1>>0]=0}else Di(M,5,C,u,0)|0;i=c[j>>2]|0;if(!(a[(c[M>>2]|0)+81>>0]|0)){f=c[v>>2]|0;c[f+((((u|0)<1?i:u)+-1|0)*20|0)+8>>2]=i;f=f+(((u|0)<-1?i+-1|0:u+1|0)*20|0)|0}else{c[14829]=i;f=59308}c[f+8>>2]=i;if(B|0?(F=a[D>>0]|0,(F&255)<8):0){a[D>>0]=F+1<<24>>24;c[L+148+((F&255)<<2)>>2]=B}if(g|0?(G=a[D>>0]|0,(G&255)<8):0){a[D>>0]=G+1<<24>>24;c[L+148+((G&255)<<2)>>2]=g}do if(z){if((E|0)!=1){f=L+28|0;if((c[f>>2]|0)>=(E|0))break;c[f>>2]=E;c[L+32>>2]=x;break}if(x|0?(H=a[D>>0]|0,(H&255)<8):0){a[D>>0]=H+1<<24>>24;c[L+148+((H&255)<<2)>>2]=x}if(w|0?(I=a[D>>0]|0,(I&255)<8):0){a[D>>0]=I+1<<24>>24;c[L+148+((I&255)<<2)>>2]=w}}while(0);qm(c[d>>2]|0,c[J>>2]|0,1)}while(0);i=c[d+12>>2]|0;f=c[d+16>>2]|0;g=c[j>>2]|0;if((c[h>>2]|0)>(g|0)){c[j>>2]=g+1;M=c[M+104>>2]|0;a[M+(g*20|0)>>0]=12;b[M+(g*20|0)+2>>1]=0;c[M+(g*20|0)+4>>2]=i;c[M+(g*20|0)+8>>2]=f;c[M+(g*20|0)+12>>2]=0;c[M+(g*20|0)+16>>2]=0;a[M+(g*20|0)+1>>0]=0;return}else{Di(M,12,i,f,0)|0;return}}function sm(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,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;n=d+8|0;j=c[n>>2]|0;a:do if(!j){m=c[d>>2]|0;if((c[d+116>>2]|0)==0?(b[m+76>>1]&8)==0:0)a[d+23>>0]=1;b:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))r=15;else{t=0;break a}else{do if((e[m+276>>1]|0)>=224){j=m+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];t=m+284|0;c[t>>2]=(c[t>>2]|0)+1;break b}j=m+296|0;k=c[j>>2]|0;if(!k){j=m+292|0;break}else{c[j>>2]=c[k>>2];t=m+284|0;c[t>>2]=(c[t>>2]|0)+1;break b}}else j=m+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;r=15}while(0);if((r|0)==15)k=_d(m,224,0)|0;if(!k)t=0;else{j=k+104|0;l=j+120|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(l|0));c[k>>2]=m;j=m+4|0;l=c[j>>2]|0;if(l|0)c[l+4>>2]=k;c[k+8>>2]=l;c[k+4>>2]=0;c[j>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=d;c[n>>2]=k;Di(k,61,0,1,0)|0;t=k}}else t=j;while(0);if(!f){j=t+108|0;k=c[j>>2]|0;if((c[t+112>>2]|0)>(k|0)){c[j>>2]=k+1;h=c[t+104>>2]|0;a[h+(k*20|0)>>0]=11;b[h+(k*20|0)+2>>1]=0;c[h+(k*20|0)+4>>2]=0;c[h+(k*20|0)+8>>2]=i;c[h+(k*20|0)+12>>2]=0;c[h+(k*20|0)+16>>2]=0;a[h+(k*20|0)+1>>0]=0;return}else{Di(t,11,0,i,0)|0;return}}s=c[f>>2]|0;o=c[d>>2]|0;m=s+1|0;n=m*5|0;l=n+20|0;p=o+272|0;c:do if(c[p>>2]|0)if(!(a[o+81>>0]|0))r=31;else{l=0;k=1}else{do if(!(0<0|(0==0?(e[o+276>>1]|0)>>>0>>0:0))){j=o+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];q=o+284|0;c[q>>2]=(c[q>>2]|0)+1;q=k;r=32;break c}j=o+296|0;k=c[j>>2]|0;if(!k){j=o+292|0;break}else{c[j>>2]=c[k>>2];q=o+284|0;c[q>>2]=(c[q>>2]|0)+1;q=k;r=32;break c}}else j=o+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;r=31}while(0);if((r|0)==31){q=_d(o,l,0)|0;r=32}if((r|0)==32){if(!q){j=o+81|0;if((a[j>>0]|0)==0?(a[o+82>>0]|0)==0:0){a[j>>0]=1;if((c[o+180>>2]|0)>0)c[o+264>>2]=1;c[p>>2]=(c[p>>2]|0)+1;j=c[o+236>>2]|0;if(j){c[j+12>>2]=7;l=0;k=1}else{l=0;k=1}}else{l=0;k=1}}else{c[q+16>>2]=q+20+(m<<2);b[q+6>>1]=s;b[q+8>>1]=m;a[q+4>>0]=a[o+78>>0]|0;c[q+12>>2]=o;c[q>>2]=1;gw(q+24|0,0,n+-4|0)|0;l=q;k=0}if((s|0)>0&(q|0)!=0){o=q+16|0;m=f+4|0;n=0;while(1){j=Yi(d,c[m>>2]|0)|0;if(!j)j=c[(c[d>>2]|0)+8>>2]|0;c[q+20+(n<<2)>>2]=j;a[(c[o>>2]|0)+n>>0]=a[m+12>>0]|0;n=n+1|0;if((n|0)==(s|0))break;else m=m+20|0}}}m=t+108|0;j=c[m>>2]|0;n=t+112|0;if((c[n>>2]|0)>(j|0)){c[m>>2]=j+1;d=c[t+104>>2]|0;a[d+(j*20|0)>>0]=87;b[d+(j*20|0)+2>>1]=0;c[d+(j*20|0)+4>>2]=h;c[d+(j*20|0)+8>>2]=g;c[d+(j*20|0)+12>>2]=s;c[d+(j*20|0)+16>>2]=0;a[d+(j*20|0)+1>>0]=0}else Di(t,87,h,g,s)|0;j=c[t>>2]|0;do if(a[j+81>>0]|0){if(!(k|(c[j+480>>2]|0)!=0)?(d=(c[l>>2]|0)+-1|0,c[l>>2]=d,(d|0)==0):0){j=c[l+12>>2]|0;if(j|0){if(c[j+480>>2]|0){Xd(j,l);break}d=l;if((c[j+304>>2]|0)>>>0<=d>>>0?(c[j+308>>2]|0)>>>0>d>>>0:0){d=j+300|0;c[l>>2]=c[d>>2];c[d>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{d=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}}else{f=c[t+104>>2]|0;d=(c[m>>2]|0)+-1|0;a[f+(d*20|0)+1>>0]=-9;c[f+(d*20|0)+16>>2]=l}while(0);j=c[m>>2]|0;k=j+1|0;if((c[n>>2]|0)>(j|0)){c[m>>2]=k;d=c[t+104>>2]|0;a[d+(j*20|0)>>0]=16;b[d+(j*20|0)+2>>1]=0;c[d+(j*20|0)+4>>2]=k;c[d+(j*20|0)+8>>2]=i;c[d+(j*20|0)+12>>2]=k;c[d+(j*20|0)+16>>2]=0;a[d+(j*20|0)+1>>0]=0}else Di(t,16,k,i,k)|0;j=s+-1|0;k=c[m>>2]|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;i=c[t+104>>2]|0;a[i+(k*20|0)>>0]=78;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=g;c[i+(k*20|0)+8>>2]=h;c[i+(k*20|0)+12>>2]=j;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0;return}else{Di(t,78,g,h,j)|0;return}}function tm(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,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;y=c[d>>2]|0;l=d+4|0;u=c[l>>2]|0;A=c[d+8>>2]|0;h=a[u+16>>0]|0;s=h<<24>>24!=76;m=y+56|0;z=c[m>>2]|0;i=z+-1|0;c[m>>2]=i;m=(e|0)==2;if(m?(a[u+17>>0]|0)==87:0){A=0;return A|0}do if((f|0)>0){k=A+108|0;j=c[k>>2]|0;if(h<<24>>24!=86)if((c[A+112>>2]|0)>(j|0)){c[k>>2]=j+1;n=c[A+104>>2]|0;a[n+(j*20|0)>>0]=47;b[n+(j*20|0)+2>>1]=0;c[n+(j*20|0)+4>>2]=f;c[n+(j*20|0)+8>>2]=0;c[n+(j*20|0)+12>>2]=1;c[n+(j*20|0)+16>>2]=0;a[n+(j*20|0)+1>>0]=0;n=0;f=j;r=14;break}else{n=0;f=Di(A,47,f,0,1)|0;r=14;break}if(!m){um(d,54,c[d+44>>2]|0,f,c[d+36>>2]|0,i);n=j;f=0;r=14;break}if((a[u+17>>0]|0)==83)um(d,55,c[d+36>>2]|0,f,c[d+28>>2]|0,i);else um(d,57,c[d+28>>2]|0,f,c[d+36>>2]|0,i);l=0;m=k;k=c[k>>2]|0;r=19}else{n=0;f=0;r=14}while(0);do if((r|0)==14){if((e|0)==1){if(!(c[u+84>>2]|0))qm(c[d>>2]|0,c[l>>2]|0,0);j=A+108|0;p=c[j>>2]|0;t=c[d+36>>2]|0;q=c[d+40>>2]|0;rm(d);v=f;break}o=A+108|0;k=c[o>>2]|0;if(!m){h=c[d+44>>2]|0;j=c[d+48>>2]|0;if(!(c[u+84>>2]|0)){wm(y,u,h,0,c[d+20>>2]|0);t=h;q=j;v=f;p=k;j=o;break}i=c[u+88>>2]|0;if((c[A+112>>2]|0)>(k|0)){c[o>>2]=k+1;t=c[A+104>>2]|0;a[t+(k*20|0)>>0]=83;b[t+(k*20|0)+2>>1]=0;c[t+(k*20|0)+4>>2]=i;c[t+(k*20|0)+8>>2]=1;c[t+(k*20|0)+12>>2]=0;c[t+(k*20|0)+16>>2]=0;a[t+(k*20|0)+1>>0]=0;t=h;q=j;v=f;p=k;j=o;break}else{Di(A,83,i,1,0)|0;t=h;q=j;v=f;p=k;j=o;break}}else{j=n;l=f;m=o;r=19}}while(0);do if((r|0)==19){h=c[d+28>>2]|0;f=c[d+32>>2]|0;i=c[u+84>>2]|0;if(!i){wm(y,u,h,1,c[d+20>>2]|0);t=h;n=j;q=f;v=l;p=k;j=m;break}if((c[A+112>>2]|0)>(k|0)){c[A+108>>2]=k+1;t=c[A+104>>2]|0;a[t+(k*20|0)>>0]=83;b[t+(k*20|0)+2>>1]=0;c[t+(k*20|0)+4>>2]=i;c[t+(k*20|0)+8>>2]=1;c[t+(k*20|0)+12>>2]=0;c[t+(k*20|0)+16>>2]=0;a[t+(k*20|0)+1>>0]=0;t=h;n=j;q=f;v=l;p=k;j=m;break}else{Di(A,83,i,1,0)|0;t=h;n=j;q=f;v=l;p=k;j=m;break}}while(0);if((c[d+24>>2]|0)==(e|0)){h=A+108|0;i=c[h>>2]|0;if((c[A+112>>2]|0)>(i|0)){c[h>>2]=i+1;e=c[A+104>>2]|0;a[e+(i*20|0)>>0]=123;b[e+(i*20|0)+2>>1]=0;c[e+(i*20|0)+4>>2]=t;c[e+(i*20|0)+8>>2]=0;c[e+(i*20|0)+12>>2]=0;c[e+(i*20|0)+16>>2]=0;a[e+(i*20|0)+1>>0]=0}else Di(A,123,t,0,0)|0;h=c[h>>2]|0;if((h|0)>0)b[(c[A+104>>2]|0)+((h+-1|0)*20|0)+2>>1]=2}h=c[j>>2]|0;do if(!g){h=(s?2:1)+h|0;f=A+108|0;i=c[f>>2]|0;k=A+112|0;if((c[k>>2]|0)>(i|0)){c[f>>2]=i+1;g=c[A+104>>2]|0;a[g+(i*20|0)>>0]=5;b[g+(i*20|0)+2>>1]=0;c[g+(i*20|0)+4>>2]=t;c[g+(i*20|0)+8>>2]=h;c[g+(i*20|0)+12>>2]=0;c[g+(i*20|0)+16>>2]=0;a[g+(i*20|0)+1>>0]=0}else Di(A,5,t,h,0)|0;if(s){j=c[f>>2]|0;if((c[k>>2]|0)>(j|0)){c[f>>2]=j+1;i=c[A+104>>2]|0;a[i+(j*20|0)>>0]=11;i=i+(j*20|0)+1|0;f=i+19|0;do{a[i>>0]=0;i=i+1|0}while((i|0)<(f|0));f=0;r=50;break}else{f=0;j=Di(A,11,0,0,0)|0;r=50;break}}else{f=0;j=0}}else{h=h+2|0;j=A+108|0;i=c[j>>2]|0;f=A+112|0;if((c[f>>2]|0)>(i|0)){c[j>>2]=i+1;g=c[A+104>>2]|0;a[g+(i*20|0)>>0]=5;b[g+(i*20|0)+2>>1]=0;c[g+(i*20|0)+4>>2]=t;c[g+(i*20|0)+8>>2]=h;c[g+(i*20|0)+12>>2]=0;c[g+(i*20|0)+16>>2]=0;a[g+(i*20|0)+1>>0]=0}else Di(A,5,t,h,0)|0;h=c[j>>2]|0;if((c[f>>2]|0)>(h|0)){c[j>>2]=h+1;i=c[A+104>>2]|0;a[i+(h*20|0)>>0]=11;i=i+(h*20|0)+1|0;f=i+19|0;do{a[i>>0]=0;i=i+1|0}while((i|0)<(f|0))}else h=Di(A,11,0,0,0)|0;if(s){f=h;j=0;r=50}else{f=h;j=0}}while(0);do if((r|0)==50){o=u+12|0;h=c[o>>2]|0;a:do if(!h){k=0;i=0}else{i=c[h>>2]|0;switch(i|0){case 0:{k=i;break a}case 1:{h=y+19|0;i=a[h>>0]|0;if(!(i<<24>>24)){i=y+44|0;k=(c[i>>2]|0)+1|0;c[i>>2]=k;i=1;break a}else{k=i+-1<<24>>24;a[h>>0]=k;k=c[y+148+((k&255)<<2)>>2]|0;i=1;break a}}default:{h=y+32|0;k=c[h>>2]|0;l=y+28|0;m=c[l>>2]|0;if((m|0)<(i|0)){u=y+44|0;k=c[u>>2]|0;c[u>>2]=k+i;k=k+1|0;break a}else{c[h>>2]=k+i;c[l>>2]=m-i;break a}}}}while(0);vm(d,t,k);sm(y,c[o>>2]|0,k,q,p);if((i|0)!=1){h=y+28|0;if((c[h>>2]|0)>=(i|0))break;c[h>>2]=i;c[y+32>>2]=k;break}if((k|0)!=0?(w=y+19|0,x=a[w>>0]|0,(x&255)<8):0){a[w>>0]=x+1<<24>>24;c[y+148+((x&255)<<2)>>2]=k}}while(0);do if(n|0){h=A+108|0;i=c[h>>2]|0;if((c[A+112>>2]|0)>(i|0)){c[h>>2]=i+1;y=c[A+104>>2]|0;a[y+(i*20|0)>>0]=11;b[y+(i*20|0)+2>>1]=0;c[y+(i*20|0)+4>>2]=0;c[y+(i*20|0)+8>>2]=n;c[y+(i*20|0)+12>>2]=0;c[y+(i*20|0)+16>>2]=0;a[y+(i*20|0)+1>>0]=0;break}else{Di(A,11,0,n,0)|0;break}}while(0);i=c[A+12>>2]|0;h=0-z|0;if(((c[i+56>>2]|0)+(c[i+60>>2]|0)|0)<0)mk(i,A,h);else c[(c[i+64>>2]|0)+(h<<2)>>2]=c[A+108>>2];if(j|0){i=c[A+108>>2]|0;if(!(a[(c[A>>2]|0)+81>>0]|0))h=(c[A+104>>2]|0)+(((j|0)<0?i+-1|0:j)*20|0)|0;else h=59308;c[h+8>>2]=i}if(!v){A=f;return A|0}i=c[A+108>>2]|0;if(!(a[(c[A>>2]|0)+81>>0]|0))h=(c[A+104>>2]|0)+(((v|0)<0?i+-1|0:v)*20|0)|0;else h=59308;c[h+8>>2]=i;A=f;return A|0}function um(d,f,g,h,i,j){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var 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;w=c[d>>2]|0;o=w+8|0;k=c[o>>2]|0;a:do if(!k){n=c[w>>2]|0;if((c[w+116>>2]|0)==0?(b[n+76>>1]&8)==0:0)a[w+23>>0]=1;b:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))p=15;else{t=0;break a}else{do if((e[n+276>>1]|0)>=224){k=n+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];u=n+284|0;c[u>>2]=(c[u>>2]|0)+1;break b}k=n+296|0;l=c[k>>2]|0;if(!l){k=n+292|0;break}else{c[k>>2]=c[l>>2];u=n+284|0;c[u>>2]=(c[u>>2]|0)+1;break b}}else k=n+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;p=15}while(0);if((p|0)==15)l=_d(n,224,0)|0;if(!l)t=0;else{k=l+104|0;m=k+120|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(m|0));c[l>>2]=n;k=n+4|0;m=c[k>>2]|0;if(m|0)c[m+4>>2]=l;c[l+8>>2]=m;c[l+4>>2]=0;c[k>>2]=l;c[l+20>>2]=381479589;c[l+12>>2]=w;c[o>>2]=l;Di(l,61,0,1,0)|0;t=l}}else t=k;while(0);u=w+19|0;l=a[u>>0]|0;if(l<<24>>24){s=l+-1<<24>>24;a[u>>0]=s;k=c[w+148+((s&255)<<2)>>2]|0;if(!(s<<24>>24))p=23;else{s=l+-2<<24>>24;a[u>>0]=s;q=w+44|0;r=k;s=c[w+148+((s&255)<<2)>>2]|0;l=q;k=c[q>>2]|0}}else{p=w+44|0;k=(c[p>>2]|0)+1|0;c[p>>2]=k;p=23}if((p|0)==23){l=w+44|0;q=(c[l>>2]|0)+1|0;c[l>>2]=q;r=k;s=q;k=q}p=k+1|0;c[l>>2]=p;n=(a[(c[(c[d+4>>2]|0)+12>>2]|0)+16>>0]|0)==0;q=n?100:101;f=n?f:(f|0)==57?55:(f|0)==54?56:57;vm(d,g,r);vm(d,i,s);n=t+108|0;k=c[n>>2]|0;o=t+112|0;if((c[o>>2]|0)>(k|0)){c[n>>2]=k+1;i=c[t+104>>2]|0;a[i+(k*20|0)>>0]=110;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=0;c[i+(k*20|0)+8>>2]=p;c[i+(k*20|0)+12>>2]=0;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0}else k=Di(t,110,0,p,0)|0;do if(!(a[(c[t>>2]|0)+81>>0]|0)){if((k|0)<0)k=(c[n>>2]|0)+-1|0;l=c[t+104>>2]|0;m=l+(k*20|0)+1|0;if(!(a[m>>0]|0)){c[l+(k*20|0)+16>>2]=59952;a[m>>0]=-1;break}else{Ei(t,l+(k*20|0)|0,59952,-1);break}}while(0);k=c[n>>2]|0;if((c[o>>2]|0)>(k|0)){c[n>>2]=k+1;i=c[t+104>>2]|0;a[i+(k*20|0)>>0]=57;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=p;c[i+(k*20|0)+8>>2]=0;c[i+(k*20|0)+12>>2]=r;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0}else k=Di(t,57,p,0,r)|0;l=c[n>>2]|0;if((c[o>>2]|0)>(l|0)){c[n>>2]=l+1;i=c[t+104>>2]|0;a[i+(l*20|0)>>0]=q;b[i+(l*20|0)+2>>1]=0;c[i+(l*20|0)+4>>2]=h;c[i+(l*20|0)+8>>2]=r;c[i+(l*20|0)+12>>2]=r;c[i+(l*20|0)+16>>2]=0;a[i+(l*20|0)+1>>0]=0}else Di(t,q,h,r,r)|0;l=c[n>>2]|0;if(!(a[(c[t>>2]|0)+81>>0]|0))k=(c[t+104>>2]|0)+(((k|0)<0?l+-1|0:k)*20|0)|0;else k=59308;c[k+8>>2]=l;if((c[o>>2]|0)>(l|0)){c[n>>2]=l+1;h=c[t+104>>2]|0;a[h+(l*20|0)>>0]=f;b[h+(l*20|0)+2>>1]=0;c[h+(l*20|0)+4>>2]=s;c[h+(l*20|0)+8>>2]=j;c[h+(l*20|0)+12>>2]=r;c[h+(l*20|0)+16>>2]=0;a[h+(l*20|0)+1>>0]=0}else Di(t,f,s,j,r)|0;k=c[n>>2]|0;if((k|0)>0)b[(c[t+104>>2]|0)+((k+-1|0)*20|0)+2>>1]=128;if(r|0?(v=a[u>>0]|0,(v&255)<8):0){a[u>>0]=v+1<<24>>24;c[w+148+((v&255)<<2)>>2]=r}if(!s)return;k=a[u>>0]|0;if((k&255)>=8)return;a[u>>0]=k+1<<24>>24;c[w+148+((k&255)<<2)>>2]=s;return}function vm(d,e,f){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;g=c[d+4>>2]|0;o=c[g+12>>2]|0;if(!o)return;n=Ej(c[d>>2]|0)|0;d=c[g+8>>2]|0;if(!d)d=0;else d=c[d>>2]|0;g=d+(c[g+72>>2]|0)|0;if((c[o>>2]|0)<=0)return;h=n+108|0;i=n+112|0;j=n+104|0;d=0;do{k=g+d|0;l=d+f|0;m=c[h>>2]|0;if((c[i>>2]|0)>(m|0)){c[h>>2]=m+1;p=c[j>>2]|0;a[p+(m*20|0)>>0]=90;b[p+(m*20|0)+2>>1]=0;c[p+(m*20|0)+4>>2]=e;c[p+(m*20|0)+8>>2]=k;c[p+(m*20|0)+12>>2]=l;c[p+(m*20|0)+16>>2]=0;a[p+(m*20|0)+1>>0]=0}else Di(n,90,e,k,l)|0;d=d+1|0}while((d|0)<(c[o>>2]|0));return}function wm(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,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;m=d+8|0;j=c[m>>2]|0;a:do if(!j){l=c[d>>2]|0;if((c[d+116>>2]|0)==0?(b[l+76>>1]&8)==0:0)a[d+23>>0]=1;b:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))F=15;else{j=0;break a}else{do if((e[l+276>>1]|0)>=224){k=l+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];E=l+284|0;c[E>>2]=(c[E>>2]|0)+1;break b}k=l+296|0;j=c[k>>2]|0;if(!j){j=l+292|0;break}else{c[k>>2]=c[j>>2];E=l+284|0;c[E>>2]=(c[E>>2]|0)+1;break b}}else j=l+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;F=15}while(0);if((F|0)==15)j=_d(l,224,0)|0;if(!j)j=0;else{n=j+104|0;o=n+120|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(o|0));c[j>>2]=l;k=l+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=j;c[j+8>>2]=l;c[j+4>>2]=0;c[k>>2]=j;c[j+20>>2]=381479589;c[j+12>>2]=d;c[m>>2]=j;Di(j,61,0,1,0)|0}}while(0);if(!f)return;t=f+84|0;u=j+108|0;v=j+112|0;w=f+44|0;x=j+104|0;y=1-h|0;z=(h|0)==0;A=d+19|0;B=z?154:153;C=d+44|0;D=B&255;E=i+1|0;s=f;do{r=c[s+40>>2]|0;q=s+68|0;k=c[(c[q>>2]|0)+20>>2]|0;if(k){o=c[k>>2]|0;if((o|0)>0){f=r+32|0;p=s+76|0;n=0;do{do if((n|0)==1?(c[f>>2]|0)==43457:0){k=c[w>>2]|0;l=(c[p>>2]|0)+1|0;m=c[u>>2]|0;if((c[v>>2]|0)>(m|0)){c[u>>2]=m+1;H=c[x>>2]|0;a[H+(m*20|0)>>0]=90;b[H+(m*20|0)+2>>1]=0;c[H+(m*20|0)+4>>2]=k;c[H+(m*20|0)+8>>2]=l;c[H+(m*20|0)+12>>2]=E;c[H+(m*20|0)+16>>2]=0;a[H+(m*20|0)+1>>0]=0;break}else{Di(j,90,k,l,E)|0;break}}else F=27;while(0);do if((F|0)==27){F=0;k=(c[p>>2]|0)+n|0;l=n+i|0;m=c[u>>2]|0;if((c[v>>2]|0)>(m|0)){c[u>>2]=m+1;H=c[x>>2]|0;a[H+(m*20|0)>>0]=90;b[H+(m*20|0)+2>>1]=0;c[H+(m*20|0)+4>>2]=g;c[H+(m*20|0)+8>>2]=k;c[H+(m*20|0)+12>>2]=l;c[H+(m*20|0)+16>>2]=0;a[H+(m*20|0)+1>>0]=0;break}else{Di(j,90,g,k,l)|0;break}}while(0);n=n+1|0}while((n|0)!=(o|0));p=o}else p=o}else p=0;if(((c[t>>2]|0)==0?(c[r+4>>2]&4096|0)!=0:0)?(a[s+17>>0]|0)!=87:0){k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;H=c[x>>2]|0;a[H+(k*20|0)>>0]=50;b[H+(k*20|0)+2>>1]=0;c[H+(k*20|0)+4>>2]=i;c[H+(k*20|0)+8>>2]=0;c[H+(k*20|0)+12>>2]=0;c[H+(k*20|0)+16>>2]=0;a[H+(k*20|0)+1>>0]=0}else k=Di(j,50,i,0,0)|0;do if(z){o=s+60|0;l=(c[o>>2]|0)+1|0;m=c[u>>2]|0;if((c[v>>2]|0)>(m|0)){c[u>>2]=m+1;H=c[x>>2]|0;a[H+(m*20|0)>>0]=83;b[H+(m*20|0)+2>>1]=0;c[H+(m*20|0)+4>>2]=l;c[H+(m*20|0)+8>>2]=1;c[H+(m*20|0)+12>>2]=0;c[H+(m*20|0)+16>>2]=0;a[H+(m*20|0)+1>>0]=0}else Di(j,83,l,1,0)|0;l=c[o>>2]|0;m=c[u>>2]|0;if((c[v>>2]|0)>(m|0)){c[u>>2]=m+1;H=c[x>>2]|0;a[H+(m*20|0)>>0]=79;b[H+(m*20|0)+2>>1]=0;c[H+(m*20|0)+4>>2]=i;c[H+(m*20|0)+8>>2]=l;c[H+(m*20|0)+12>>2]=0;c[H+(m*20|0)+16>>2]=0;a[H+(m*20|0)+1>>0]=0}else Di(j,79,i,l,0)|0;l=c[o>>2]|0;m=l+2|0;n=c[u>>2]|0;if((c[v>>2]|0)>(n|0)){c[u>>2]=n+1;H=c[x>>2]|0;a[H+(n*20|0)>>0]=92;b[H+(n*20|0)+2>>1]=0;c[H+(n*20|0)+4>>2]=l;c[H+(n*20|0)+8>>2]=2;c[H+(n*20|0)+12>>2]=m;c[H+(n*20|0)+16>>2]=0;a[H+(n*20|0)+1>>0]=0}else Di(j,92,l,2,m)|0;n=c[s+56>>2]|0;l=(c[o>>2]|0)+2|0;m=c[u>>2]|0;if((c[v>>2]|0)>(m|0)){c[u>>2]=m+1;H=c[x>>2]|0;a[H+(m*20|0)>>0]=-124;b[H+(m*20|0)+2>>1]=0;c[H+(m*20|0)+4>>2]=n;c[H+(m*20|0)+8>>2]=l;c[H+(m*20|0)+12>>2]=0;c[H+(m*20|0)+16>>2]=0;a[H+(m*20|0)+1>>0]=0;break}else{Di(j,132,n,l,0)|0;break}}else{n=s+56|0;m=c[n>>2]|0;l=c[u>>2]|0;if((c[v>>2]|0)>(l|0)){c[u>>2]=l+1;H=c[x>>2]|0;a[H+(l*20|0)>>0]=24;b[H+(l*20|0)+2>>1]=0;c[H+(l*20|0)+4>>2]=m;c[H+(l*20|0)+8>>2]=0;c[H+(l*20|0)+12>>2]=i;c[H+(l*20|0)+16>>2]=0;a[H+(l*20|0)+1>>0]=0}else l=Di(j,24,m,0,i)|0;if(!(a[(c[j>>2]|0)+81>>0]|0)){H=c[x>>2]|0;a[H+(l*20|0)+1>>0]=-3;c[H+(l*20|0)+16>>2]=1}l=c[n>>2]|0;m=c[u>>2]|0;if((c[v>>2]|0)>(m|0)){c[u>>2]=m+1;H=c[x>>2]|0;a[H+(m*20|0)>>0]=123;b[H+(m*20|0)+2>>1]=0;c[H+(m*20|0)+4>>2]=l;c[H+(m*20|0)+8>>2]=0;c[H+(m*20|0)+12>>2]=0;c[H+(m*20|0)+16>>2]=0;a[H+(m*20|0)+1>>0]=0}else Di(j,123,l,0,0)|0;m=c[u>>2]|0;if(!(a[(c[j>>2]|0)+81>>0]|0))l=(c[x>>2]|0)+((((m|0)<2?-1:-2)+m|0)*20|0)|0;else l=59308;c[l+8>>2]=m}while(0);l=c[u>>2]|0;if(!(a[(c[j>>2]|0)+81>>0]|0))k=(c[x>>2]|0)+(((k|0)<0?l+-1|0:k)*20|0)|0;else k=59308;c[k+8>>2]=l}else F=67;do if((F|0)==67){F=0;k=c[s+60>>2]|0;if(k|0){k=y+k|0;l=c[u>>2]|0;if((c[v>>2]|0)>(l|0)){c[u>>2]=l+1;H=c[x>>2]|0;a[H+(l*20|0)>>0]=83;b[H+(l*20|0)+2>>1]=0;c[H+(l*20|0)+4>>2]=k;c[H+(l*20|0)+8>>2]=1;c[H+(l*20|0)+12>>2]=0;c[H+(l*20|0)+16>>2]=0;a[H+(l*20|0)+1>>0]=0;break}else{Di(j,83,k,1,0)|0;break}}if((c[r+16>>2]|0)!=110){if(c[s+36>>2]|0){k=a[A>>0]|0;if(!(k<<24>>24)){m=(c[C>>2]|0)+1|0;c[C>>2]=m}else{m=k+-1<<24>>24;a[A>>0]=m;m=c[d+148+((m&255)<<2)>>2]|0}k=(c[s+76>>2]|0)+p|0;l=c[u>>2]|0;if((c[v>>2]|0)>(l|0)){c[u>>2]=l+1;H=c[x>>2]|0;a[H+(l*20|0)>>0]=90;b[H+(l*20|0)+2>>1]=0;c[H+(l*20|0)+4>>2]=g;c[H+(l*20|0)+8>>2]=k;c[H+(l*20|0)+12>>2]=m;c[H+(l*20|0)+16>>2]=0;a[H+(l*20|0)+1>>0]=0}else Di(j,90,g,k,m)|0;k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;H=c[x>>2]|0;a[H+(k*20|0)>>0]=20;b[H+(k*20|0)+2>>1]=0;c[H+(k*20|0)+4>>2]=m;c[H+(k*20|0)+8>>2]=0;c[H+(k*20|0)+12>>2]=1;c[H+(k*20|0)+16>>2]=0;a[H+(k*20|0)+1>>0]=0}else k=Di(j,20,m,0,1)|0;if((m|0)!=0?(G=a[A>>0]|0,(G&255)<8):0){a[A>>0]=G+1<<24>>24;c[d+148+((G&255)<<2)>>2]=m;f=k}else f=k}else f=0;do if(c[r+4>>2]&32|0){k=Yi(d,c[(c[(c[q>>2]|0)+20>>2]|0)+4>>2]|0)|0;if(!k)k=c[(c[d>>2]|0)+8>>2]|0;l=c[u>>2]|0;if((c[v>>2]|0)>(l|0)){c[u>>2]=l+1;n=c[x>>2]|0;a[n+(l*20|0)>>0]=82;n=n+(l*20|0)+1|0;o=n+19|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0))}else l=Di(j,82,0,0,0)|0;if(!(a[(c[j>>2]|0)+81>>0]|0)){if((l|0)<0)l=(c[u>>2]|0)+-1|0;m=c[x>>2]|0;n=m+(l*20|0)+1|0;if(a[n>>0]|0){Ei(j,m+(l*20|0)|0,k,-2);break}if(k|0){c[m+(l*20|0)+16>>2]=k;a[n>>0]=-2}}}while(0);k=c[s+48>>2]|0;l=c[u>>2]|0;if((c[v>>2]|0)>(l|0)){c[u>>2]=l+1;H=c[x>>2]|0;a[H+(l*20|0)>>0]=D;b[H+(l*20|0)+2>>1]=0;c[H+(l*20|0)+4>>2]=h;c[H+(l*20|0)+8>>2]=i;c[H+(l*20|0)+12>>2]=k;c[H+(l*20|0)+16>>2]=0;a[H+(l*20|0)+1>>0]=0}else Di(j,B,h,i,k)|0;k=c[j>>2]|0;do if(a[k+81>>0]|0){if(c[r+4>>2]&16|0){if(k|0){if(c[k+480>>2]|0){Xd(k,r);break}H=r;if((c[k+304>>2]|0)>>>0<=H>>>0?(c[k+308>>2]|0)>>>0>H>>>0:0){H=k+300|0;c[r>>2]=c[H>>2];c[H>>2]=r;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{H=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}}else{q=c[x>>2]|0;H=(c[u>>2]|0)+-1|0;a[q+(H*20|0)+1>>0]=-8;c[q+(H*20|0)+16>>2]=r}while(0);l=c[u>>2]|0;if((l|0)>0)b[(c[x>>2]|0)+((l+-1|0)*20|0)+2>>1]=p&255;if(f|0){if(!(a[(c[j>>2]|0)+81>>0]|0))k=(c[x>>2]|0)+(((f|0)<0?l+-1|0:f)*20|0)|0;else k=59308;c[k+8>>2]=l}}}while(0);s=c[s+32>>2]|0}while((s|0)!=0);return}function xm(a,b,c){a=a|0;b=b|0;c=c|0;return}function ym(d,e,f,g,h){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;m=c[d+8>>2]|0;n=d+19|0;i=a[n>>0]|0;if(!(i<<24>>24)){k=d+44|0;l=(c[k>>2]|0)+1|0;c[k>>2]=l}else{l=i+-1<<24>>24;a[n>>0]=l;l=c[d+148+((l&255)<<2)>>2]|0}k=m+108|0;i=c[k>>2]|0;j=m+112|0;if((c[j>>2]|0)>(i|0)){c[k>>2]=i+1;o=c[m+104>>2]|0;a[o+(i*20|0)>>0]=29;b[o+(i*20|0)+2>>1]=0;c[o+(i*20|0)+4>>2]=e;c[o+(i*20|0)+8>>2]=f;c[o+(i*20|0)+12>>2]=h;c[o+(i*20|0)+16>>2]=0;a[o+(i*20|0)+1>>0]=0}else i=Di(m,29,e,f,h)|0;if(!(a[(c[m>>2]|0)+81>>0]|0)){o=c[m+104>>2]|0;a[o+(i*20|0)+1>>0]=-3;c[o+(i*20|0)+16>>2]=g}i=c[k>>2]|0;if((c[j>>2]|0)>(i|0)){c[k>>2]=i+1;o=c[m+104>>2]|0;a[o+(i*20|0)>>0]=92;b[o+(i*20|0)+2>>1]=0;c[o+(i*20|0)+4>>2]=h;c[o+(i*20|0)+8>>2]=g;c[o+(i*20|0)+12>>2]=l;c[o+(i*20|0)+16>>2]=0;a[o+(i*20|0)+1>>0]=0}else Di(m,92,h,g,l)|0;i=c[k>>2]|0;if((c[j>>2]|0)>(i|0)){c[k>>2]=i+1;o=c[m+104>>2]|0;a[o+(i*20|0)>>0]=-124;b[o+(i*20|0)+2>>1]=0;c[o+(i*20|0)+4>>2]=e;c[o+(i*20|0)+8>>2]=l;c[o+(i*20|0)+12>>2]=h;c[o+(i*20|0)+16>>2]=0;a[o+(i*20|0)+1>>0]=0}else i=Di(m,132,e,l,h)|0;if(!(a[(c[m>>2]|0)+81>>0]|0)){o=c[m+104>>2]|0;a[o+(i*20|0)+1>>0]=-3;c[o+(i*20|0)+16>>2]=g}i=c[k>>2]|0;if((i|0)>0)b[(c[m+104>>2]|0)+((i+-1|0)*20|0)+2>>1]=16;if(!l)return;i=a[n>>0]|0;if((i&255)>=8)return;a[n>>0]=i+1<<24>>24;c[d+148+((i&255)<<2)>>2]=l;return}function zm(d,f,g,h,i,j,k){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var 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,J=0;E=d+8|0;J=c[E>>2]|0;F=f+32|0;n=a[F>>0]&1;p=n<<24>>24==0;n=(n^1)&255;l=c[f>>2]|0;C=c[l>>2]|0;H=C+n+j|0;D=f+4|0;I=c[D>>2]|0;o=(k|0)==0;if(o){B=d+44|0;G=c[B>>2]|0;c[B>>2]=G+H;G=G+1|0}else G=h-k|0;k=c[g+16>>2]|0;if(!k)B=c[g+12>>2]|0;else B=k+1|0;z=d+56|0;y=(c[z>>2]|0)+-1|0;c[z>>2]=y;A=f+24|0;c[A>>2]=y;Oj(d,l,G,i,(i|0)==0?1:5);do if(p){k=c[f+8>>2]|0;l=G+C|0;i=J+108|0;m=c[i>>2]|0;if((c[J+112>>2]|0)>(m|0)){c[i>>2]=m+1;y=c[J+104>>2]|0;a[y+(m*20|0)>>0]=120;b[y+(m*20|0)+2>>1]=0;c[y+(m*20|0)+4>>2]=k;c[y+(m*20|0)+8>>2]=l;c[y+(m*20|0)+12>>2]=0;c[y+(m*20|0)+16>>2]=0;a[y+(m*20|0)+1>>0]=0;break}else{Di(J,120,k,l,0)|0;break}}while(0);do if((j|0)>0&o){l=G+C+n|0;k=c[E>>2]|0;i=k+108|0;m=c[i>>2]|0;if((c[k+112>>2]|0)>(m|0)){c[i>>2]=m+1;y=c[k+104>>2]|0;a[y+(m*20|0)>>0]=77;b[y+(m*20|0)+2>>1]=0;c[y+(m*20|0)+4>>2]=h;c[y+(m*20|0)+8>>2]=l;c[y+(m*20|0)+12>>2]=j;c[y+(m*20|0)+16>>2]=0;a[y+(m*20|0)+1>>0]=0;break}else{Di(k,77,h,l,j)|0;break}}while(0);if((I|0)>0){l=c[D>>2]|0;n=c[E>>2]|0;w=d+44|0;o=(c[w>>2]|0)+1|0;c[w>>2]=o;k=c[f+36>>2]|0;if(k|0)Oj(d,c[g>>2]|0,c[k>>2]|0,0,a[k+4>>0]|0);m=l+G|0;k=H-l|0;l=n+108|0;i=c[l>>2]|0;if((c[n+112>>2]|0)>(i|0)){c[l>>2]=i+1;y=c[n+104>>2]|0;a[y+(i*20|0)>>0]=92;b[y+(i*20|0)+2>>1]=0;c[y+(i*20|0)+4>>2]=m;c[y+(i*20|0)+8>>2]=k;c[y+(i*20|0)+12>>2]=o;c[y+(i*20|0)+16>>2]=0;a[y+(i*20|0)+1>>0]=0}else Di(n,92,m,k,o)|0;v=c[w>>2]|0;y=v+1|0;n=c[D>>2]|0;c[w>>2]=n+v;do if(p){k=G+C|0;m=J+108|0;l=c[m>>2]|0;i=J+112|0;if((c[i>>2]|0)>(l|0)){c[m>>2]=l+1;u=c[J+104>>2]|0;a[u+(l*20|0)>>0]=20;b[u+(l*20|0)+2>>1]=0;c[u+(l*20|0)+4>>2]=k;c[u+(l*20|0)+8>>2]=0;c[u+(l*20|0)+12>>2]=0;c[u+(l*20|0)+16>>2]=0;a[u+(l*20|0)+1>>0]=0;u=l;v=m;break}else{u=Di(J,20,k,0,0)|0;v=m;break}}else{k=c[f+8>>2]|0;m=J+108|0;l=c[m>>2]|0;i=J+112|0;if((c[i>>2]|0)>(l|0)){c[m>>2]=l+1;u=c[J+104>>2]|0;a[u+(l*20|0)>>0]=115;b[u+(l*20|0)+2>>1]=0;c[u+(l*20|0)+4>>2]=k;c[u+(l*20|0)+8>>2]=0;c[u+(l*20|0)+12>>2]=0;c[u+(l*20|0)+16>>2]=0;a[u+(l*20|0)+1>>0]=0;u=l;v=m;break}else{u=Di(J,115,k,0,0)|0;v=m;break}}while(0);k=c[D>>2]|0;l=c[v>>2]|0;if((c[i>>2]|0)>(l|0)){c[v>>2]=l+1;t=c[J+104>>2]|0;a[t+(l*20|0)>>0]=87;b[t+(l*20|0)+2>>1]=0;c[t+(l*20|0)+4>>2]=y;c[t+(l*20|0)+8>>2]=G;c[t+(l*20|0)+12>>2]=k;c[t+(l*20|0)+16>>2]=0;a[t+(l*20|0)+1>>0]=0}else Di(J,87,y,G,k)|0;k=c[f+20>>2]|0;if((k|0)<0)k=(c[v>>2]|0)+-1|0;if(!(a[(c[J>>2]|0)+81>>0]|0))k=(c[J+104>>2]|0)+(k*20|0)|0;else k=59308;if(a[(c[d>>2]|0)+81>>0]|0)return;c[k+8>>2]=H-n;t=k+16|0;n=c[t>>2]|0;h=n+6|0;gw(c[n+16>>2]|0,0,e[h>>1]|0)|0;k=c[J>>2]|0;a:do if(!(a[k+81>>0]|0)){k=(c[v>>2]|0)+-1|0;l=c[J+104>>2]|0;m=l+(k*20|0)+1|0;if(a[m>>0]|0){Ei(J,l+(k*20|0)|0,n,-9);break}if(n|0){c[l+(k*20|0)+16>>2]=n;a[m>>0]=-9}}else if(!((n|0)==0|(c[k+480>>2]|0)!=0)?(s=(c[n>>2]|0)+-1|0,c[n>>2]=s,(s|0)==0):0){k=c[n+12>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,n);break a}l=n;if((c[k+304>>2]|0)>>>0>l>>>0)break;if((c[k+308>>2]|0)>>>0<=l>>>0)break;s=k+300|0;c[n>>2]=c[s>>2];c[s>>2]=n;break a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{s=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);r=c[f>>2]|0;q=c[d>>2]|0;s=c[r>>2]|0;p=s-I|0;n=p+((e[n+8>>1]|0)-(e[h>>1]|0))|0;h=n*5|0;m=h+20|0;j=q+272|0;b:do if(c[j>>2]|0)if(!(a[q+81>>0]|0))x=62;else k=0;else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){l=q+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];x=q+284|0;c[x>>2]=(c[x>>2]|0)+1;x=63;break b}l=q+296|0;k=c[l>>2]|0;if(!k){k=q+292|0;break}else{c[l>>2]=c[k>>2];x=q+284|0;c[x>>2]=(c[x>>2]|0)+1;x=63;break b}}else k=q+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;x=62}while(0);if((x|0)==62){k=_d(q,m,0)|0;x=63}if((x|0)==63){do if(!k){l=q+81|0;if((a[l>>0]|0)==0?(a[q+82>>0]|0)==0:0){a[l>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;c[j>>2]=(c[j>>2]|0)+1;l=c[q+236>>2]|0;if(!l)break;c[l+12>>2]=7}}else{c[k+16>>2]=k+20+(n<<2);b[k+6>>1]=p;b[k+8>>1]=n;a[k+4>>0]=a[q+78>>0]|0;c[k+12>>2]=q;c[k>>2]=1;gw(k+24|0,0,h+-4|0)|0}while(0);if((s|0)>(I|0)&(k|0)!=0){h=k+16|0;m=r+4+(I*20|0)|0;n=I;while(1){l=Yi(d,c[m>>2]|0)|0;if(!l)l=c[(c[d>>2]|0)+8>>2]|0;x=n-I|0;c[k+20+(x<<2)>>2]=l;a[(c[h>>2]|0)+x>>0]=a[m+12>>0]|0;n=n+1|0;if((n|0)==(s|0))break;else m=m+20|0}}}c[t>>2]=k;n=c[v>>2]|0;k=n+1|0;if((c[i>>2]|0)>(n|0)){c[v>>2]=k;x=c[J+104>>2]|0;a[x+(n*20|0)>>0]=16;b[x+(n*20|0)+2>>1]=0;c[x+(n*20|0)+4>>2]=k;c[x+(n*20|0)+8>>2]=0;c[x+(n*20|0)+12>>2]=k;c[x+(n*20|0)+16>>2]=0;a[x+(n*20|0)+1>>0]=0}else Di(J,16,k,0,k)|0;m=(c[z>>2]|0)+-1|0;c[z>>2]=m;c[f+16>>2]=m;l=(c[w>>2]|0)+1|0;c[w>>2]=l;c[f+12>>2]=l;k=c[v>>2]|0;if((c[i>>2]|0)>(k|0)){c[v>>2]=k+1;z=c[J+104>>2]|0;a[z+(k*20|0)>>0]=12;b[z+(k*20|0)+2>>1]=0;c[z+(k*20|0)+4>>2]=l;c[z+(k*20|0)+8>>2]=m;c[z+(k*20|0)+12>>2]=0;c[z+(k*20|0)+16>>2]=0;a[z+(k*20|0)+1>>0]=0}else Di(J,12,l,m,0)|0;k=c[f+8>>2]|0;l=c[v>>2]|0;if((c[i>>2]|0)>(l|0)){c[v>>2]=l+1;z=c[J+104>>2]|0;a[z+(l*20|0)>>0]=-118;b[z+(l*20|0)+2>>1]=0;c[z+(l*20|0)+4>>2]=k;c[z+(l*20|0)+8>>2]=0;c[z+(l*20|0)+12>>2]=0;c[z+(l*20|0)+16>>2]=0;a[z+(l*20|0)+1>>0]=0}else Di(J,138,k,0,0)|0;do if(B|0){k=c[A>>2]|0;l=c[v>>2]|0;if((c[i>>2]|0)>(l|0)){c[v>>2]=l+1;A=c[J+104>>2]|0;a[A+(l*20|0)>>0]=20;b[A+(l*20|0)+2>>1]=0;c[A+(l*20|0)+4>>2]=B;c[A+(l*20|0)+8>>2]=k;c[A+(l*20|0)+12>>2]=0;c[A+(l*20|0)+16>>2]=0;a[A+(l*20|0)+1>>0]=0;break}else{Di(J,20,B,k,0)|0;break}}while(0);l=c[v>>2]|0;if(!(a[(c[J>>2]|0)+81>>0]|0))k=(c[J+104>>2]|0)+(((u|0)<0?l+-1|0:u)*20|0)|0;else k=59308;c[k+8>>2]=l;l=c[D>>2]|0;k=c[E>>2]|0;i=k+108|0;m=c[i>>2]|0;if((c[k+112>>2]|0)>(m|0)){c[i>>2]=m+1;A=c[k+104>>2]|0;a[A+(m*20|0)>>0]=77;b[A+(m*20|0)+2>>1]=0;c[A+(m*20|0)+4>>2]=G;c[A+(m*20|0)+8>>2]=y;c[A+(m*20|0)+12>>2]=l;c[A+(m*20|0)+16>>2]=0;a[A+(m*20|0)+1>>0]=0}else Di(k,77,G,y,l)|0;l=c[v>>2]|0;if(!(a[(c[J>>2]|0)+81>>0]|0))k=(c[J+104>>2]|0)+(((n|0)<0?l+-1|0:n)*20|0)|0;else k=59308;c[k+8>>2]=l}else o=0;do if(B){m=c[f+8>>2]|0;i=J+108|0;k=c[i>>2]|0;l=k+4|0;n=J+112|0;if((c[n>>2]|0)>(k|0)){c[i>>2]=k+1;A=c[J+104>>2]|0;a[A+(k*20|0)>>0]=48;b[A+(k*20|0)+2>>1]=0;c[A+(k*20|0)+4>>2]=B;c[A+(k*20|0)+8>>2]=l;c[A+(k*20|0)+12>>2]=0;c[A+(k*20|0)+16>>2]=0;a[A+(k*20|0)+1>>0]=0}else Di(J,48,B,l,0)|0;k=c[i>>2]|0;if((c[n>>2]|0)>(k|0)){c[i>>2]=k+1;B=c[J+104>>2]|0;a[B+(k*20|0)>>0]=32;b[B+(k*20|0)+2>>1]=0;c[B+(k*20|0)+4>>2]=m;c[B+(k*20|0)+8>>2]=0;c[B+(k*20|0)+12>>2]=0;c[B+(k*20|0)+16>>2]=0;a[B+(k*20|0)+1>>0]=0}else Di(J,32,m,0,0)|0;l=G+I|0;k=c[i>>2]|0;if((c[n>>2]|0)>(k|0)){c[i>>2]=k+1;B=c[J+104>>2]|0;a[B+(k*20|0)>>0]=37;b[B+(k*20|0)+2>>1]=0;c[B+(k*20|0)+4>>2]=m;c[B+(k*20|0)+8>>2]=0;c[B+(k*20|0)+12>>2]=l;c[B+(k*20|0)+16>>2]=0;a[B+(k*20|0)+1>>0]=0}else k=Di(J,37,m,0,l)|0;if(!(a[(c[J>>2]|0)+81>>0]|0)){B=c[J+104>>2]|0;a[B+(k*20|0)+1>>0]=-3;c[B+(k*20|0)+16>>2]=C-I}l=c[i>>2]|0;if((c[n>>2]|0)>(l|0)){c[i>>2]=l+1;C=c[J+104>>2]|0;a[C+(l*20|0)>>0]=123;b[C+(l*20|0)+2>>1]=0;c[C+(l*20|0)+4>>2]=m;c[C+(l*20|0)+8>>2]=0;c[C+(l*20|0)+12>>2]=0;c[C+(l*20|0)+16>>2]=0;a[C+(l*20|0)+1>>0]=0;break}else{Di(J,123,m,0,0)|0;break}}else k=0;while(0);do if(!o){i=c[D>>2]|0;h=c[E>>2]|0;l=d+44|0;o=(c[l>>2]|0)+1|0;c[l>>2]=o;l=c[f+36>>2]|0;if(l|0)Oj(d,c[g>>2]|0,c[l>>2]|0,0,a[l+4>>0]|0);n=i+G|0;l=H-i|0;i=h+108|0;m=c[i>>2]|0;if((c[h+112>>2]|0)>(m|0)){c[i>>2]=m+1;g=c[h+104>>2]|0;a[g+(m*20|0)>>0]=92;b[g+(m*20|0)+2>>1]=0;c[g+(m*20|0)+4>>2]=n;c[g+(m*20|0)+8>>2]=l;c[g+(m*20|0)+12>>2]=o;c[g+(m*20|0)+16>>2]=0;a[g+(m*20|0)+1>>0]=0;break}else{Di(h,92,n,l,o)|0;break}}while(0);m=132-(a[F>>0]&1)|0;n=c[f+8>>2]|0;i=G+I|0;h=J+108|0;l=c[h>>2]|0;if((c[J+112>>2]|0)>(l|0)){c[h>>2]=l+1;G=c[J+104>>2]|0;a[G+(l*20|0)>>0]=m;b[G+(l*20|0)+2>>1]=0;c[G+(l*20|0)+4>>2]=n;c[G+(l*20|0)+8>>2]=o;c[G+(l*20|0)+12>>2]=i;c[G+(l*20|0)+16>>2]=0;a[G+(l*20|0)+1>>0]=0}else l=Di(J,m,n,o,i)|0;if(!(a[(c[J>>2]|0)+81>>0]|0)){G=c[J+104>>2]|0;a[G+(l*20|0)+1>>0]=-3;c[G+(l*20|0)+16>>2]=H-I}if(!k)return;l=c[f+28>>2]|0;if(!l){l=c[h>>2]|0;if(!(a[(c[J>>2]|0)+81>>0]|0))k=(c[J+104>>2]|0)+(((k|0)<0?l+-1|0:k)*20|0)|0;else k=59308;c[k+8>>2]=l;return}if((k|0)<0)k=(c[h>>2]|0)+-1|0;if(!(a[(c[J>>2]|0)+81>>0]|0))k=(c[J+104>>2]|0)+(k*20|0)|0;else k=59308;c[k+8>>2]=l;return}function Am(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;m=Ra;Ra=Ra+64|0;l=m;if((a[d>>0]|0)==44){l=0;Ra=m;return l|0}e=c[b+24>>2]|0;j=c[b>>2]|0;i=c[e+40>>2]|0;k=l+20|0;a[k>>0]=1;c[l+4>>2]=149;c[l+8>>2]=0;c[l+24>>2]=i;c[l>>2]=j;_j(l,d)|0;if(!(a[k>>0]|0)){l=1;Ra=m;return l|0}j=c[c[b>>2]>>2]|0;k=oj(j,147,17144,0)|0;if(!k){l=1;Ra=m;return l|0}e=e+36|0;f=c[e>>2]|0;g=l;h=k;i=g+52|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=k;h=d;i=g+52|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=d;h=l;i=g+52|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));l=Xk(j,f,k)|0;c[e>>2]=l;a[b+20>>0]=1;l=1;Ra=m;return l|0}function Bm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=c[b+24>>2]|0;a:do if((c[h>>2]|0)>0){g=0;while(1){e=c[h+4+(g*20|0)>>2]|0;if((bk(0,d,e,-1)|0)<2){f=c[b>>2]|0;e=Yi(f,e)|0;if(!e){e=c[(c[f>>2]|0)+8>>2]|0;if(!e){e=1;f=12;break}}if((c[e+12>>2]|0)==78?(c[e+8>>2]|0)==0:0){e=1;f=12;break}}g=g+1|0;if((g|0)>=(c[h>>2]|0))break a}if((f|0)==12)return e|0}while(0);if(!(c[d+4>>2]&2048)){d=Yj(b,d)|0;return d|0}else{a[b+20>>0]=0;d=2;return d|0}return 0}function Cm(f,g){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;h=c[f+24>>2]|0;s=c[h>>2]|0;j=c[h+4>>2]|0;t=c[h+8>>2]|0;switch(a[g>>0]|0){case -94:case -92:{if(!j){t=1;return t|0}i=c[j>>2]|0;if((i|0)<=0){t=1;return t|0}o=g+28|0;l=c[o>>2]|0;h=0;f=j+8|0;while(1){if((l|0)==(c[f+40>>2]|0))break;h=h+1|0;if((h|0)>=(i|0)){f=1;r=80;break}else f=f+72|0}if((r|0)==80)return f|0;j=t+28|0;n=t+32|0;p=c[n>>2]|0;a:do if((p|0)>0){k=c[j>>2]|0;i=g+32|0;h=k;f=0;while(1){if((c[h+4>>2]|0)==(l|0)?(c[h+8>>2]|0)==(b[i>>1]|0):0)break a;f=f+1|0;if((f|0)>=(p|0))break;else h=h+24|0}m=j;f=k;r=13}else{m=j;f=c[j>>2]|0;r=13}while(0);b:do if((r|0)==13){l=c[s>>2]|0;h=((p|0)<0)<<31>>31;k=Sv(p|0,h|0,-1,-1)|0;c:do if((k&p|0)==0&((L()|0)&h|0)==0){i=(p|0)==0;j=Yv(p|0,h|0,48,0)|0;k=L()|0;j=i?24:j;k=i?0:k;d:do if(!f){if(c[l+272>>2]|0){if(a[l+81>>0]|0){f=0;break}}else{do if(!(k>>>0>0|((k|0)==0?j>>>0>(e[l+276>>1]|0)>>>0:0))){i=l+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];r=l+284|0;c[r>>2]=(c[r>>2]|0)+1;r=31;break d}i=l+296|0;h=c[i>>2]|0;if(!h){h=l+292|0;break}else{c[i>>2]=c[h>>2];r=l+284|0;c[r>>2]=(c[r>>2]|0)+1;r=31;break d}}else h=l+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(l,j,k)|0;r=31}else{r=f;if((c[l+304>>2]|0)>>>0<=r>>>0?(c[l+308>>2]|0)>>>0>r>>>0:0){if(!(k>>>0>0|((k|0)==0?j>>>0>(e[l+276>>1]|0)>>>0:0)))break c;h=Zd(l,f,j,k)|0;r=31;break}h=Zd(l,f,j,k)|0;r=31}while(0);if((r|0)==31)if(h){f=h;break}c[m>>2]=f;f=-1;break b}while(0);h=f+(p*24|0)|0;j=h+24|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(j|0));c[n>>2]=(c[n>>2]|0)+1;c[m>>2]=f;if((p|0)>-1){c[f+(p*24|0)>>2]=c[g+44>>2];j=c[o>>2]|0;c[f+(p*24|0)+4>>2]=j;k=b[g+32>>1]|0;c[f+(p*24|0)+8>>2]=k<<16>>16;s=s+44|0;i=(c[s>>2]|0)+1|0;c[s>>2]=i;c[f+(p*24|0)+16>>2]=i;i=f+(p*24|0)+12|0;c[i>>2]=-1;c[f+(p*24|0)+20>>2]=g;f=c[t+24>>2]|0;e:do if(f|0?(q=c[f>>2]|0,(q|0)>0):0){h=f+4|0;f=0;while(1){s=c[h>>2]|0;if(((a[s>>0]|0)==-94?(c[s+28>>2]|0)==(j|0):0)?(b[s+32>>1]|0)==k<<16>>16:0)break;f=f+1|0;if((f|0)<(q|0))h=h+20|0;else break e}c[i>>2]=f;f=p;break b}while(0);s=t+12|0;f=c[s>>2]|0;c[s>>2]=f+1;c[i>>2]=f;f=p}else f=p}while(0);c[g+40>>2]=t;a[g>>0]=-92;b[g+34>>1]=f;t=1;return t|0}case -93:{if(b[h+24>>1]&8){t=0;return t|0}if((c[f+16>>2]|0)!=(d[g+38>>0]|0)){t=0;return t|0}p=t+40|0;o=t+44|0;h=c[o>>2]|0;f:do if((h|0)>0){h=c[p>>2]|0;f=0;while(1){if(!(bk(0,c[h>>2]|0,g,-1)|0))break;f=f+1|0;i=c[o>>2]|0;if((f|0)<(i|0))h=h+16|0;else break f}i=c[o>>2]|0}else{f=0;i=h}while(0);g:do if((f|0)>=(i|0)){m=c[s>>2]|0;n=a[m+78>>0]|0;f=c[p>>2]|0;h=((i|0)<0)<<31>>31;q=Sv(i|0,h|0,-1,-1)|0;h:do if((q&i|0)==0&((L()|0)&h|0)==0){q=(i|0)==0;k=cw(i|0,h|0,5)|0;l=L()|0;k=q?16:k;l=q?0:l;i:do if(!f){if(c[m+272>>2]|0){if(a[m+81>>0]|0){f=0;break}}else{do if(!(l>>>0>0|((l|0)==0?k>>>0>(e[m+276>>1]|0)>>>0:0))){j=m+300|0;h=c[j>>2]|0;if(h|0){c[j>>2]=c[h>>2];r=m+284|0;c[r>>2]=(c[r>>2]|0)+1;r=71;break i}j=m+296|0;h=c[j>>2]|0;if(!h){h=m+292|0;break}else{c[j>>2]=c[h>>2];r=m+284|0;c[r>>2]=(c[r>>2]|0)+1;r=71;break i}}else h=m+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(m,k,l)|0;r=71}else{r=f;if((c[m+304>>2]|0)>>>0<=r>>>0?(c[m+308>>2]|0)>>>0>r>>>0:0){if(!(l>>>0>0|((l|0)==0?k>>>0>(e[m+276>>1]|0)>>>0:0)))break h;h=Zd(m,f,k,l)|0;r=71;break}h=Zd(m,f,k,l)|0;r=71}while(0);if((r|0)==71)if(h){f=h;break}c[p>>2]=f;f=-1;break g}while(0);h=f+(i<<4)|0;j=h+16|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(j|0));c[o>>2]=(c[o>>2]|0)+1;c[p>>2]=f;if((i|0)>-1){c[f+(i<<4)>>2]=g;r=s+44|0;h=(c[r>>2]|0)+1|0;c[r>>2]=h;c[f+(i<<4)+8>>2]=h;h=c[g+20>>2]|0;if(!h)h=0;else h=c[h>>2]|0;r=Jd(c[s>>2]|0,c[g+8>>2]|0,h,n,0)|0;c[f+(i<<4)+4>>2]=r;if(!(c[g+4>>2]&2)){c[f+(i<<4)+12>>2]=-1;f=i;break}else{r=s+40|0;s=c[r>>2]|0;c[r>>2]=s+1;c[f+(i<<4)+12>>2]=s;f=i;break}}else f=i}while(0);b[g+34>>1]=f;c[g+40>>2]=t;t=1;return t|0}default:{t=0;return t|0}}return 0}function Dm(a,b){a=a|0;b=b|0;b=a+16|0;c[b>>2]=(c[b>>2]|0)+1;return 0}function Em(a,b){a=a|0;b=b|0;b=a+16|0;c[b>>2]=(c[b>>2]|0)+-1;return}function Fm(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;l=Ra;Ra=Ra+16|0;j=l+8|0;i=l;do if(!(c[d+56>>2]|0)){f=c[d+36>>2]|0;if(f&1025|0){g=c[b>>2]|0;h=c[g+32>>2]|0;if(f&1|0){if((h&268435457|0)==1&0==0)break;if(!(a[b+18>>0]|0)){k=12;break}else break}if((!((h&268435456|0)==0&0==0)?(c[g+352>>2]|0)==0:0)?(c[g+180>>2]|0)==0:0)k=12}}else{g=c[b>>2]|0;f=d+64|0;while(1){f=c[f>>2]|0;if((c[f>>2]|0)==(g|0))break;else f=f+24|0}if(!(c[(c[c[f+4>>2]>>2]|0)+52>>2]|0))k=12}while(0);if((k|0)==12){c[i>>2]=c[d>>2];cd(b,44627,i);k=1;Ra=l;return k|0}if(e|0){k=0;Ra=l;return k|0}if(!(c[d+12>>2]|0)){k=0;Ra=l;return k|0}c[j>>2]=c[d>>2];cd(b,44656,j);k=1;Ra=l;return k|0}function Gm(b,d,f,g){b=b|0;d=d|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;q=Ra;Ra=Ra+32|0;o=q;p=c[b>>2]|0;j=c[d+72>>2]|0;if(!j)k=-1e6;else{i=c[p+16>>2]|0;h=0;while(1)if((c[i+(h<<4)+12>>2]|0)==(j|0)){k=h;break}else h=h+1|0}if(!f)m=0;else m=dk(p,f,0,0)|0;n=pj(b,0,0,0)|0;if(!n)h=mj(b,0,0,m,0,0,0,131072,0)|0;else{f=c[d>>2]|0;a:do if(!f)h=0;else{d=(Eu(f)|0)+1|0;b:do if(!p){j=Sv(d|0,0,-1,-1)|0;i=L()|0;if(i>>>0>0|(i|0)==0&j>>>0>2147483390){h=0;break a}if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](d)|0;l=32;break}h=Wa[c[29356>>2]&127](d)|0;if((c[14985]|0)>>>0>>0)c[14985]=d;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){r=c[14978]|0;j=Tv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0;i=L()|0;c[14768]=((i|0)<0|(i|0)==0&j>>>0<=r>>>0)&1}h=Wa[c[29340>>2]&127](h)|0;if(!h){h=0;break a}i=Wa[c[29352>>2]&127](h)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}else{if(c[p+272>>2]|0){if(a[p+81>>0]|0){h=0;break a}}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){i=p+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];l=p+284|0;c[l>>2]=(c[l>>2]|0)+1;l=32;break b}i=p+296|0;h=c[i>>2]|0;if(!h){h=p+292|0;break}else{c[i>>2]=c[h>>2];l=p+284|0;c[l>>2]=(c[l>>2]|0)+1;l=32;break b}}else h=p+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(p,d,0)|0;l=32}while(0);if((l|0)==32)if(!h){h=0;break}ew(h|0,f|0,d|0)|0}while(0);c[n+16>>2]=h;j=c[(c[p+16>>2]|0)+(k<<4)>>2]|0;c:do if(j){f=(Eu(j)|0)+1|0;d:do if(c[p+272>>2]|0)if(!(a[p+81>>0]|0))l=45;else{h=0;break c}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){i=p+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];r=p+284|0;c[r>>2]=(c[r>>2]|0)+1;break d}i=p+296|0;h=c[i>>2]|0;if(!h){h=p+292|0;break}else{c[i>>2]=c[h>>2];r=p+284|0;c[r>>2]=(c[r>>2]|0)+1;break d}}else h=p+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;l=45}while(0);if((l|0)==45)h=_d(p,f,0)|0;if(h)ew(h|0,j|0,f|0)|0;else h=0}else h=0;while(0);c[n+12>>2]=h;h=mj(b,0,n,m,0,0,0,131072,0)|0}a[o>>0]=12;c[o+4>>2]=g;c[o+16>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;kj(b,h,o)|0;if(!h){Ra=q;return}pi(p,h,1);Ra=q;return}function Hm(f,g,h,i,j,k,l,m){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|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;if(c[g+56>>2]|0){f=0;return f|0}q=c[f>>2]|0;o=c[g+72>>2]|0;if(!o)y=-1e6;else{p=c[q+16>>2]|0;n=0;while(1)if((c[p+(n<<4)+12>>2]|0)==(o|0)){y=n;break}else n=n+1|0}z=f+8|0;n=c[z>>2]|0;a:do if(!n){if((c[f+116>>2]|0)==0?(b[q+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[q+272>>2]|0)if(!(a[q+81>>0]|0))r=19;else{n=0;break a}else{do if((e[q+276>>1]|0)>=224){o=q+300|0;n=c[o>>2]|0;if(n|0){c[o>>2]=c[n>>2];x=q+284|0;c[x>>2]=(c[x>>2]|0)+1;break b}o=q+296|0;n=c[o>>2]|0;if(!n){n=q+292|0;break}else{c[o>>2]=c[n>>2];x=q+284|0;c[x>>2]=(c[x>>2]|0)+1;break b}}else n=q+288|0;while(0);c[n>>2]=(c[n>>2]|0)+1;r=19}while(0);if((r|0)==19)n=_d(q,224,0)|0;if(!n)n=0;else{o=n+104|0;p=o+120|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(p|0));c[n>>2]=q;o=q+4|0;p=c[o>>2]|0;if(p|0)c[p+4>>2]=n;c[n+8>>2]=p;c[n+4>>2]=0;c[o>>2]=n;c[n+20>>2]=381479589;c[n+12>>2]=f;c[z>>2]=n;Di(n,61,0,1,0)|0}}while(0);if((j|0)<0)p=c[f+40>>2]|0;else p=j;o=p+1|0;q=(l|0)!=0;if(q)c[l>>2]=p;x=g+36|0;do if(!(c[x>>2]&32)){if(k|0?(a[k>>0]|0)==0:0){r=32;break}Gj(f,p,y,g,h)}else r=32;while(0);if((r|0)==32)Hj(f,y,c[g+28>>2]|0,(h|0)==109&1,c[g>>2]|0);if(m|0)c[m>>2]=o;p=c[g+8>>2]|0;if(!p)p=0;else{m=q^1;s=(k|0)==0;t=n+108|0;u=n+112|0;v=n+104|0;w=h&255;r=p;p=0;while(1){g=o+1|0;j=r+55|0;if(((d[j>>0]|d[j+1>>0]<<8)&3)==2){q=(c[x>>2]&32|0)==0;if(q|m)j=q?i:0;else{c[l>>2]=o;j=0}}else j=i;if(!(!s?!(a[k+(p+1)>>0]|0):0)){q=c[r+44>>2]|0;i=c[t>>2]|0;if((c[u>>2]|0)>(i|0)){c[t>>2]=i+1;A=c[v>>2]|0;a[A+(i*20|0)>>0]=w;b[A+(i*20|0)+2>>1]=0;c[A+(i*20|0)+4>>2]=o;c[A+(i*20|0)+8>>2]=q;c[A+(i*20|0)+12>>2]=y;c[A+(i*20|0)+16>>2]=0;a[A+(i*20|0)+1>>0]=0}else Di(n,h,o,q,y)|0;o=c[z>>2]|0;i=Ij(f,r)|0;c:do if(i|0){q=c[o>>2]|0;if(!(a[q+81>>0]|0)){q=c[o+104>>2]|0;A=(c[o+108>>2]|0)+-1|0;a[q+(A*20|0)+1>>0]=-9;c[q+(A*20|0)+16>>2]=i;break}if((c[q+480>>2]|0)==0?(A=(c[i>>2]|0)+-1|0,c[i>>2]=A,(A|0)==0):0){o=c[i+12>>2]|0;do if(o|0){if(c[o+480>>2]|0){Xd(o,i);break c}q=i;if((c[o+304>>2]|0)>>>0>q>>>0)break;if((c[o+308>>2]|0)>>>0<=q>>>0)break;A=o+300|0;c[i>>2]=c[A>>2];c[A>>2]=i;break c}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{A=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-A;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}}while(0);o=c[t>>2]|0;if((o|0)>0)b[(c[v>>2]|0)+((o+-1|0)*20|0)+2>>1]=j&255}p=p+1|0;r=c[r+20>>2]|0;if(!r){o=g;break}else{i=j;o=g}}}n=f+40|0;if((o|0)<=(c[n>>2]|0)){A=p;return A|0}c[n>>2]=o;A=p;return A|0}function Im(f,g,h,i,j,k,l,m,n,o,p){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|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,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0;N=f+8|0;Q=c[N>>2]|0;I=f+56|0;P=c[I>>2]|0;O=P+-1|0;c[I>>2]=O;I=(c[g+36>>2]&32|0)==0?31:28;J=o<<24>>24==0;if(J){r=Q+108|0;q=c[r>>2]|0;if((c[Q+112>>2]|0)>(q|0)){c[r>>2]=q+1;M=c[Q+104>>2]|0;a[M+(q*20|0)>>0]=I;b[M+(q*20|0)+2>>1]=0;c[M+(q*20|0)+4>>2]=i;c[M+(q*20|0)+8>>2]=O;c[M+(q*20|0)+12>>2]=k;c[M+(q*20|0)+16>>2]=0;a[M+(q*20|0)+1>>0]=0}else q=Di(Q,I&255,i,O,k)|0;if(!(a[(c[Q>>2]|0)+81>>0]|0)){M=c[Q+104>>2]|0;a[M+(q*20|0)+1>>0]=-3;c[M+(q*20|0)+16>>2]=l<<16>>16}}if(!(0==0?(c[(c[f>>2]|0)+32>>2]&16384|0)==0:0)){w=c[g>>2]|0;t=c[g+72>>2]|0;u=c[t+68>>2]|0;if(!u){r=t+60|0;q=t+64|0}else{r=a[w>>0]|0;if(!(r<<24>>24))q=0;else{q=0;s=w;do{s=s+1|0;q=G(q+(d[208+(r&255)>>0]|0)|0,-1640531535)|0;r=a[s>>0]|0}while(r<<24>>24!=0)}q=(q>>>0)%((c[t+56>>2]|0)>>>0)|0;r=u+(q<<3)|0;q=u+(q<<3)+4|0}r=c[r>>2]|0;a:do if(!r)q=59292;else{v=d[208+(d[w>>0]|0)>>0]|0;while(1){q=c[q>>2]|0;r=r+-1|0;t=c[q+12>>2]|0;M=a[t>>0]|0;s=(d[208+(M&255)>>0]|0)-v|0;if(!(M<<24>>24==0|(s|0)!=0)){u=w;do{t=t+1|0;u=u+1|0;M=a[t>>0]|0;s=(d[208+(M&255)>>0]|0)-(d[208+(d[u>>0]|0)>>0]|0)|0}while(!(M<<24>>24==0|(s|0)!=0))}if(!s)break a;if(!r){q=59292;break}}}while(0);if(!(c[q+8>>2]|0)){q=(c[g+16>>2]|0)!=0&1;M=23}else M=24}else{q=0;M=23}if((M|0)==23)if((h|0)!=0|(q|0)!=0)M=24;else F=0;if((M|0)==24){H=n&255;u=(h|0)==0;if(u)q=0;else{t=f+116|0;q=0;s=h;do{do if((a[s+8>>0]|0)==121?(a[s+9>>0]&3)!=0:0){r=c[t>>2]|0;r=c[((r|0)==0?f:r)+260>>2]|0;b:do if(!r)M=33;else while(1){if((c[r>>2]|0)==(s|0)?(c[r+12>>2]|0)==(H|0):0)break b;r=c[r+4>>2]|0;if(!r){M=33;break}}while(0);if((M|0)==33){M=0;r=Nm(f,s,g,H)|0;if(!r)break}q=c[r+16>>2]|q}while(0);s=c[s+32>>2]|0}while((s|0)!=0)}s=Km(f,g)|0|q;C=f+44|0;F=(c[C>>2]|0)+1|0;t=g+42|0;c[C>>2]=F+(b[t>>1]|0);D=Q+108|0;q=c[D>>2]|0;E=Q+112|0;if((c[E>>2]|0)>(q|0)){c[D>>2]=q+1;B=c[Q+104>>2]|0;a[B+(q*20|0)>>0]=78;b[B+(q*20|0)+2>>1]=0;c[B+(q*20|0)+4>>2]=k;c[B+(q*20|0)+8>>2]=F;c[B+(q*20|0)+12>>2]=0;c[B+(q*20|0)+16>>2]=0;a[B+(q*20|0)+1>>0]=0}else Di(Q,78,k,F,0)|0;q=b[t>>1]|0;c:do if(q<<16>>16>0){if((s|0)==-1){q=0;while(1){B=q;q=q+1|0;Vj(Q,g,i,B,q+F|0);if((q|0)>=(b[t>>1]|0))break c}}r=0;do{if(r>>>0<32?(1<>1]|0}r=r+1|0}while((r|0)<(q<<16>>16|0))}while(0);A=c[D>>2]|0;if(u)q=A;else{y=f+116|0;z=f+23|0;x=h;do{do if((a[x+8>>0]|0)==121?(a[x+9>>0]|0)==1:0){q=c[N>>2]|0;d:do if(!q){s=c[f>>2]|0;if((c[y>>2]|0)==0?(b[s+76>>1]&8)==0:0)a[z>>0]=1;e:do if(c[s+272>>2]|0)if(!(a[s+81>>0]|0))M=66;else{q=0;break d}else{do if((e[s+276>>1]|0)>=224){r=s+300|0;q=c[r>>2]|0;if(q|0){c[r>>2]=c[q>>2];B=s+284|0;c[B>>2]=(c[B>>2]|0)+1;break e}r=s+296|0;q=c[r>>2]|0;if(!q){q=s+292|0;break}else{c[r>>2]=c[q>>2];B=s+284|0;c[B>>2]=(c[B>>2]|0)+1;break e}}else q=s+288|0;while(0);c[q>>2]=(c[q>>2]|0)+1;M=66}while(0);if((M|0)==66){M=0;q=_d(s,224,0)|0}if(!q)q=0;else{v=q+104|0;B=v+120|0;do{c[v>>2]=0;v=v+4|0}while((v|0)<(B|0));c[q>>2]=s;r=s+4|0;s=c[r>>2]|0;if(s|0)c[s+4>>2]=q;c[q+8>>2]=s;c[q+4>>2]=0;c[r>>2]=q;c[q+20>>2]=381479589;c[q+12>>2]=f;c[N>>2]=q;Di(q,61,0,1,0)|0}}while(0);r=c[y>>2]|0;r=c[((r|0)==0?f:r)+260>>2]|0;f:do if(!r)M=76;else while(1){if((c[r>>2]|0)==(x|0)?(c[r+12>>2]|0)==(H|0):0)break f;r=c[r+4>>2]|0;if(!r){M=76;break}}while(0);if((M|0)==76){M=0;r=Nm(f,x,g,H)|0;if(!r)break}if(!(c[x>>2]|0))w=0;else{w=(c[f>>2]|0)+32|0;w=bw(c[w>>2]|0,c[w+4>>2]|0,13)|0;L()|0;w=w&1^1}s=(c[C>>2]|0)+1|0;c[C>>2]=s;u=c[r+8>>2]|0;v=q+108|0;r=c[v>>2]|0;if((c[q+112>>2]|0)>(r|0)){c[v>>2]=r+1;B=c[q+104>>2]|0;a[B+(r*20|0)>>0]=45;b[B+(r*20|0)+2>>1]=0;c[B+(r*20|0)+4>>2]=F;c[B+(r*20|0)+8>>2]=O;c[B+(r*20|0)+12>>2]=s;c[B+(r*20|0)+16>>2]=0;a[B+(r*20|0)+1>>0]=0}else r=Di(q,45,F,O,s)|0;do if(!(a[(c[q>>2]|0)+81>>0]|0)){if((r|0)<0)r=(c[v>>2]|0)+-1|0;s=c[q+104>>2]|0;t=s+(r*20|0)+1|0;if(a[t>>0]|0){Ei(q,s+(r*20|0)|0,u,-4);break}if(!u)break;c[s+(r*20|0)+16>>2]=u;a[t>>0]=-4}while(0);r=c[v>>2]|0;if((r|0)>0)b[(c[q+104>>2]|0)+((r+-1|0)*20|0)+2>>1]=w}while(0);x=c[x+32>>2]|0}while((x|0)!=0);q=c[D>>2]|0}if((A|0)<(q|0)){if((c[E>>2]|0)>(q|0)){c[D>>2]=q+1;H=c[Q+104>>2]|0;a[H+(q*20|0)>>0]=I;b[H+(q*20|0)+2>>1]=0;c[H+(q*20|0)+4>>2]=i;c[H+(q*20|0)+8>>2]=O;c[H+(q*20|0)+12>>2]=k;c[H+(q*20|0)+16>>2]=0;a[H+(q*20|0)+1>>0]=0}else q=Di(Q,I&255,i,O,k)|0;if(!(a[(c[Q>>2]|0)+81>>0]|0)){k=c[Q+104>>2]|0;a[k+(q*20|0)+1>>0]=-3;c[k+(q*20|0)+16>>2]=l<<16>>16;q=-1}else q=-1}else q=p;Lm(f,g,F,0,0,0);p=q}if(!(c[g+12>>2]|0)){Mm(f,g,i,j,0,p);q=m<<24>>24!=0&1;t=Q+108|0;r=c[t>>2]|0;u=Q+112|0;if((c[u>>2]|0)>(r|0)){c[t>>2]=r+1;m=c[Q+104>>2]|0;a[m+(r*20|0)>>0]=123;b[m+(r*20|0)+2>>1]=0;c[m+(r*20|0)+4>>2]=i;c[m+(r*20|0)+8>>2]=q;c[m+(r*20|0)+12>>2]=0;c[m+(r*20|0)+16>>2]=0;a[m+(r*20|0)+1>>0]=0}else Di(Q,123,i,q,0)|0;if(a[f+18>>0]|0){r=c[g>>2]|0;if(r|0){m=a[r>>0]|0;q=(d[208+(m&255)>>0]|0)+-115|0;if(!(m<<24>>24==0|(q|0)!=0)){s=35174;do{r=r+1|0;s=s+1|0;m=a[r>>0]|0;q=(d[208+(m&255)>>0]|0)-(d[208+(d[s>>0]|0)>>0]|0)|0}while(!(m<<24>>24==0|(q|0)!=0))}if(!q)M=110}}else M=110;if((M|0)==110?(a[(c[Q>>2]|0)+81>>0]|0)==0:0){j=c[Q+104>>2]|0;m=(c[t>>2]|0)+-1|0;a[j+(m*20|0)+1>>0]=-6;c[j+(m*20|0)+16>>2]=g}if(!J?(K=c[t>>2]|0,(K|0)>0):0)b[(c[Q+104>>2]|0)+((K+-1|0)*20|0)+2>>1]=4;do if(!((p|0)<0|(p|0)==(i|0))){q=c[t>>2]|0;if((c[u>>2]|0)>(q|0)){c[t>>2]=q+1;K=c[Q+104>>2]|0;a[K+(q*20|0)>>0]=123;b[K+(q*20|0)+2>>1]=0;c[K+(q*20|0)+4>>2]=p;c[K+(q*20|0)+8>>2]=0;c[K+(q*20|0)+12>>2]=0;c[K+(q*20|0)+16>>2]=0;a[K+(q*20|0)+1>>0]=0;break}else{Di(Q,123,p,0,0)|0;break}}while(0);q=c[t>>2]|0;if((q|0)>0)b[(c[Q+104>>2]|0)+((q+-1|0)*20|0)+2>>1]=o<<24>>24==2?2:0}if(!(0==0?(c[(c[f>>2]|0)+32>>2]&16384|0)==0:0)){v=c[g>>2]|0;t=c[g+72>>2]|0;u=c[t+68>>2]|0;if(!u){r=t+60|0;q=t+64|0}else{r=a[v>>0]|0;if(!(r<<24>>24))q=0;else{q=0;s=v;do{s=s+1|0;q=G(q+(d[208+(r&255)>>0]|0)|0,-1640531535)|0;r=a[s>>0]|0}while(r<<24>>24!=0)}q=(q>>>0)%((c[t+56>>2]|0)>>>0)|0;r=u+(q<<3)|0;q=u+(q<<3)+4|0}r=c[r>>2]|0;g:do if(!r)q=59292;else{p=d[208+(d[v>>0]|0)>>0]|0;while(1){q=c[q>>2]|0;r=r+-1|0;t=c[q+12>>2]|0;o=a[t>>0]|0;s=(d[208+(o&255)>>0]|0)-p|0;if(!(o<<24>>24==0|(s|0)!=0)){u=v;do{t=t+1|0;u=u+1|0;o=a[t>>0]|0;s=(d[208+(o&255)>>0]|0)-(d[208+(d[u>>0]|0)>>0]|0)|0}while(!(o<<24>>24==0|(s|0)!=0))}if(!s)break g;if(!r){q=59292;break}}}while(0);q=c[q+8>>2]|0;if(q|0){x=f+116|0;y=f+23|0;z=f+44|0;do{u=Rm(f,g,q,0)|0;do if(u|0){r=c[N>>2]|0;h:do if(!r){t=c[f>>2]|0;if((c[x>>2]|0)==0?(b[t+76>>1]&8)==0:0)a[y>>0]=1;i:do if(c[t+272>>2]|0)if(!(a[t+81>>0]|0))M=152;else{r=0;break h}else{do if((e[t+276>>1]|0)>=224){s=t+300|0;r=c[s>>2]|0;if(r|0){c[s>>2]=c[r>>2];o=t+284|0;c[o>>2]=(c[o>>2]|0)+1;break i}s=t+296|0;r=c[s>>2]|0;if(!r){r=t+292|0;break}else{c[s>>2]=c[r>>2];o=t+284|0;c[o>>2]=(c[o>>2]|0)+1;break i}}else r=t+288|0;while(0);c[r>>2]=(c[r>>2]|0)+1;M=152}while(0);if((M|0)==152){M=0;r=_d(t,224,0)|0}if(!r)r=0;else{v=r+104|0;B=v+120|0;do{c[v>>2]=0;v=v+4|0}while((v|0)<(B|0));c[r>>2]=t;s=t+4|0;t=c[s>>2]|0;if(t|0)c[t+4>>2]=r;c[r+8>>2]=t;c[r+4>>2]=0;c[s>>2]=r;c[r+20>>2]=381479589;c[r+12>>2]=f;c[N>>2]=r;Di(r,61,0,1,0)|0}}while(0);s=c[x>>2]|0;s=c[((s|0)==0?f:s)+260>>2]|0;j:do if(!s)M=162;else while(1){if((c[s>>2]|0)==(u|0)?(c[s+12>>2]|0)==2:0)break j;s=c[s+4>>2]|0;if(!s){M=162;break}}while(0);if((M|0)==162){M=0;s=Nm(f,u,g,2)|0;if(!s)break}if(!(c[u>>2]|0))w=0;else{w=(c[f>>2]|0)+32|0;w=bw(c[w>>2]|0,c[w+4>>2]|0,13)|0;L()|0;w=w&1^1}t=(c[z>>2]|0)+1|0;c[z>>2]=t;p=c[s+8>>2]|0;v=r+108|0;s=c[v>>2]|0;if((c[r+112>>2]|0)>(s|0)){c[v>>2]=s+1;o=c[r+104>>2]|0;a[o+(s*20|0)>>0]=45;b[o+(s*20|0)+2>>1]=0;c[o+(s*20|0)+4>>2]=F;c[o+(s*20|0)+8>>2]=0;c[o+(s*20|0)+12>>2]=t;c[o+(s*20|0)+16>>2]=0;a[o+(s*20|0)+1>>0]=0}else s=Di(r,45,F,0,t)|0;do if(!(a[(c[r>>2]|0)+81>>0]|0)){if((s|0)<0)s=(c[v>>2]|0)+-1|0;t=c[r+104>>2]|0;u=t+(s*20|0)+1|0;if(a[u>>0]|0){Ei(r,t+(s*20|0)|0,p,-4);break}if(p|0){c[t+(s*20|0)+16>>2]=p;a[u>>0]=-4}}while(0);s=c[v>>2]|0;if((s|0)>0)b[(c[r+104>>2]|0)+((s+-1|0)*20|0)+2>>1]=w}while(0);q=c[q+12>>2]|0}while((q|0)!=0)}}x=n&255;if(h|0){y=f+116|0;z=f+23|0;A=f+44|0;w=h;do{do if((a[w+8>>0]|0)==121?(a[w+9>>0]|0)==2:0){q=c[N>>2]|0;k:do if(!q){s=c[f>>2]|0;if((c[y>>2]|0)==0?(b[s+76>>1]&8)==0:0)a[z>>0]=1;l:do if(c[s+272>>2]|0)if(!(a[s+81>>0]|0))M=196;else{q=0;break k}else{do if((e[s+276>>1]|0)>=224){r=s+300|0;q=c[r>>2]|0;if(q|0){c[r>>2]=c[q>>2];h=s+284|0;c[h>>2]=(c[h>>2]|0)+1;break l}r=s+296|0;q=c[r>>2]|0;if(!q){q=s+292|0;break}else{c[r>>2]=c[q>>2];h=s+284|0;c[h>>2]=(c[h>>2]|0)+1;break l}}else q=s+288|0;while(0);c[q>>2]=(c[q>>2]|0)+1;M=196}while(0);if((M|0)==196){M=0;q=_d(s,224,0)|0}if(!q)q=0;else{v=q+104|0;B=v+120|0;do{c[v>>2]=0;v=v+4|0}while((v|0)<(B|0));c[q>>2]=s;r=s+4|0;s=c[r>>2]|0;if(s|0)c[s+4>>2]=q;c[q+8>>2]=s;c[q+4>>2]=0;c[r>>2]=q;c[q+20>>2]=381479589;c[q+12>>2]=f;c[N>>2]=q;Di(q,61,0,1,0)|0}}while(0);r=c[y>>2]|0;r=c[((r|0)==0?f:r)+260>>2]|0;m:do if(!r)M=206;else while(1){if((c[r>>2]|0)==(w|0)?(c[r+12>>2]|0)==(x|0):0)break m;r=c[r+4>>2]|0;if(!r){M=206;break}}while(0);if((M|0)==206){M=0;r=Nm(f,w,g,x)|0;if(!r)break}if(!(c[w>>2]|0))v=0;else{v=(c[f>>2]|0)+32|0;v=bw(c[v>>2]|0,c[v+4>>2]|0,13)|0;L()|0;v=v&1^1}s=(c[A>>2]|0)+1|0;c[A>>2]=s;u=c[r+8>>2]|0;p=q+108|0;r=c[p>>2]|0;if((c[q+112>>2]|0)>(r|0)){c[p>>2]=r+1;h=c[q+104>>2]|0;a[h+(r*20|0)>>0]=45;b[h+(r*20|0)+2>>1]=0;c[h+(r*20|0)+4>>2]=F;c[h+(r*20|0)+8>>2]=O;c[h+(r*20|0)+12>>2]=s;c[h+(r*20|0)+16>>2]=0;a[h+(r*20|0)+1>>0]=0}else r=Di(q,45,F,O,s)|0;do if(!(a[(c[q>>2]|0)+81>>0]|0)){if((r|0)<0)r=(c[p>>2]|0)+-1|0;s=c[q+104>>2]|0;t=s+(r*20|0)+1|0;if(a[t>>0]|0){Ei(q,s+(r*20|0)|0,u,-4);break}if(u|0){c[s+(r*20|0)+16>>2]=u;a[t>>0]=-4}}while(0);r=c[p>>2]|0;if((r|0)>0)b[(c[q+104>>2]|0)+((r+-1|0)*20|0)+2>>1]=v}while(0);w=c[w+32>>2]|0}while((w|0)!=0)}r=c[Q+12>>2]|0;q=0-P|0;if(((c[r+56>>2]|0)+(c[r+60>>2]|0)|0)<0){mk(r,Q,q);return}else{c[(c[r+64>>2]|0)+(q<<2)>>2]=c[Q+108>>2];return}}function Jm(e,f,g,h){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,s=0,t=0,u=0,v=0,w=0;t=c[f+20>>2]|0;if((t|0)<=0){v=0;return v|0}q=b[e+42>>1]|0;u=q<<16>>16>0;s=e+4|0;r=e+40|0;n=(h|0)==0;o=q<<16>>16;p=q<<16>>16;q=q<<16>>16;m=0;a:while(1){l=c[f+36+(m<<3)+4>>2]|0;b:do if(u){k=(l|0)==0;if(!n){j=0;while(1){if(!((c[g+(j<<2)>>2]|0)<=-1?(j|0)!=(b[r>>1]|0):0))v=8;do if((v|0)==8){v=0;e=c[s>>2]|0;if(k)if(!(a[e+(j<<4)+15>>0]&1))break;else{e=1;v=28;break a}h=c[e+(j<<4)>>2]|0;i=a[h>>0]|0;e=(d[208+(i&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0;if(!(i<<24>>24==0|(e|0)!=0)){i=l;do{h=h+1|0;i=i+1|0;w=a[h>>0]|0;e=(d[208+(w&255)>>0]|0)-(d[208+(d[i>>0]|0)>>0]|0)|0}while(!(w<<24>>24==0|(e|0)!=0))}if(!e){e=1;v=28;break a}}while(0);j=j+1|0;if((j|0)>=(o|0))break b}}if(k){e=0;while(1){if((c[g+(e<<2)>>2]|0)>-1?a[(c[s>>2]|0)+(e<<4)+15>>0]&1:0){e=1;v=28;break a}e=e+1|0;if((e|0)>=(p|0))break b}}j=0;do{if((c[g+(j<<2)>>2]|0)>-1){h=c[(c[s>>2]|0)+(j<<4)>>2]|0;w=a[h>>0]|0;e=(d[208+(w&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0;if(!(w<<24>>24==0|(e|0)!=0)){i=l;do{h=h+1|0;i=i+1|0;w=a[h>>0]|0;e=(d[208+(w&255)>>0]|0)-(d[208+(d[i>>0]|0)>>0]|0)|0}while(!(w<<24>>24==0|(e|0)!=0))}if(!e){e=1;v=28;break a}}j=j+1|0}while((j|0)<(q|0))}while(0);m=m+1|0;if((m|0)>=(t|0)){e=0;v=28;break}}if((v|0)==28)return e|0;return 0}function Km(e,f){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;q=Ra;Ra=Ra+16|0;o=q;if(0==0?(c[(c[e>>2]|0)+32>>2]&16384|0)==0:0){p=0;Ra=q;return p|0}g=c[f+16>>2]|0;if(!g)g=0;else{j=g;g=0;do{i=c[j+20>>2]|0;if((i|0)>0){h=0;do{n=c[j+36+(h<<3)>>2]|0;g=((n|0)>31?-1:1<>2]|0}while((j|0)!=0)}n=c[f>>2]|0;k=c[f+72>>2]|0;l=c[k+68>>2]|0;if(!l){i=k+60|0;h=k+64|0}else{i=a[n>>0]|0;if(!(i<<24>>24))h=0;else{h=0;j=n;do{j=j+1|0;h=G(h+(d[208+(i&255)>>0]|0)|0,-1640531535)|0;i=a[j>>0]|0}while(i<<24>>24!=0)}h=(h>>>0)%((c[k+56>>2]|0)>>>0)|0;i=l+(h<<3)|0;h=l+(h<<3)+4|0}i=c[i>>2]|0;a:do if(!i)h=59292;else{m=d[208+(d[n>>0]|0)>>0]|0;while(1){h=c[h>>2]|0;i=i+-1|0;k=c[h+12>>2]|0;l=a[k>>0]|0;j=(d[208+(l&255)>>0]|0)-m|0;if(!(l<<24>>24==0|(j|0)!=0)){l=n;do{k=k+1|0;l=l+1|0;r=a[k>>0]|0;j=(d[208+(r&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(r<<24>>24==0|(j|0)!=0))}if(!j)break a;if(!i){h=59292;break}}}while(0);h=c[h+8>>2]|0;if(!h){r=g;Ra=q;return r|0}do{c[o>>2]=0;Om(e,f,h,o,0)|0;i=c[o>>2]|0;if((i|0)!=0?(p=b[i+50>>1]|0,p<<16>>16!=0):0){j=c[i+4>>2]|0;k=p&65535;i=0;do{r=b[j+(i<<1)>>1]|0;g=(r<<16>>16>31?-1:1<<(r<<16>>16))|g;i=i+1|0}while(i>>>0>>0)}h=c[h+12>>2]|0}while((h|0)!=0);Ra=q;return g|0}function Lm(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 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,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;_=Ra;Ra=Ra+16|0;X=_+8|0;Y=_+4|0;S=_;Z=c[f>>2]|0;R=f+146|0;V=a[R>>0]|0;W=Z+32|0;if((c[W>>2]&16384|0)==0&0==0){Ra=_;return}T=g+72|0;p=c[T>>2]|0;m=c[Z+16>>2]|0;if(!p)l=-1e6;else{l=0;while(1)if((c[m+(l<<4)+12>>2]|0)==(p|0))break;else l=l+1|0}Q=c[m+(l<<4)>>2]|0;m=c[g+16>>2]|0;do if(!m)l=g;else{x=(j|0)==0;y=V<<24>>24==0;z=g+40|0;A=(k|0)==0;B=Z+81|0;C=f+8|0;D=f+40|0;E=(h|0)==0;F=Z+312|0;H=f+116|0;I=(i|0)==0;J=h+1|0;K=f+23|0;L=(Z|0)==0;M=Z+480|0;N=Z+304|0;O=Z+308|0;P=Z+300|0;a:while(1){c[X>>2]=0;c[Y>>2]=0;b:do if(!x){p=c[g>>2]|0;n=c[m+8>>2]|0;if(p){if(n|0){U=a[p>>0]|0;o=(d[208+(U&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0;if(U<<24>>24==0|(o|0)!=0)U=16;else{q=n;do{p=p+1|0;q=q+1|0;U=a[p>>0]|0;o=(d[208+(U&255)>>0]|0)-(d[208+(d[q>>0]|0)>>0]|0)|0}while(!(U<<24>>24==0|(o|0)!=0));U=16}}}else{o=((n|0)!=0)<<31>>31;U=16}if((U|0)==16?(U=0,(o|0)==0):0){U=26;break}r=c[m+20>>2]|0;if((r|0)>0){if(A){p=0;while(1){if((c[j+(c[m+36+(p<<3)>>2]<<2)>>2]|0)>-1){U=26;break b}p=p+1|0;if((p|0)>=(r|0))break b}}p=0;do{q=c[m+36+(p<<3)>>2]|0;if((c[j+(q<<2)>>2]|0)>-1){U=26;break b}p=p+1|0;if((q|0)==(b[z>>1]|0)){U=26;break b}}while((p|0)<(r|0))}}else{n=c[m+8>>2]|0;U=26}while(0);c:do if((U|0)==26){U=0;if(!(a[R>>0]|0))w=bd(f,0,n,Q)|0;else w=Sd(Z,n,Q)|0;n=(w|0)==0;if(!n?(Om(f,w,m,X,Y)|0)==0:0){n=c[Y>>2]|0;if(!n){c[S>>2]=c[m+36>>2];n=S}u=m+20|0;if((c[u>>2]|0)>0){v=w+4|0;r=c[X>>2]|0;s=w+40|0;t=r+4|0;if(!r){q=0;r=0;do{p=n+(r<<2)|0;if((c[p>>2]|0)==(b[z>>1]|0))c[p>>2]=-1;if(c[F>>2]|0)q=(Ik(f,c[w>>2]|0,c[(c[v>>2]|0)+(b[s>>1]<<4)>>2]|0,l)|0)==2&1;r=r+1|0}while((r|0)<(c[u>>2]|0));p=w}else{q=0;r=0;do{p=n+(r<<2)|0;if((c[p>>2]|0)==(b[z>>1]|0))c[p>>2]=-1;if(c[F>>2]|0)q=(Ik(f,c[w>>2]|0,c[(c[v>>2]|0)+(b[(c[t>>2]|0)+(r<<1)>>1]<<4)>>2]|0,l)|0)==2&1;r=r+1|0}while((r|0)<(c[u>>2]|0));p=w}}else{q=0;p=w}Hj(f,l,c[w+28>>2]|0,0,c[p>>2]|0);c[D>>2]=(c[D>>2]|0)+1;if(!E)Pm(f,l,w,c[X>>2]|0,m,n,h,-1,q);do if(!I){p=c[H>>2]|0;p=c[((p|0)==0?f:p)+260>>2]|0;if(p|0){p=c[p>>2]|0;if((p|0)==(c[m+28>>2]|0)?(a[m+25>>0]|0)==8:0)break;if((p|0)==(c[m+32>>2]|0)?(a[m+26>>0]|0)==8:0)break}Pm(f,l,w,c[X>>2]|0,m,n,i,1,q)}while(0);n=c[Y>>2]|0;if(!n)break;do if(!L){if(c[M>>2]|0){Xd(Z,n);break c}p=n;if((c[N>>2]|0)>>>0<=p>>>0){if((c[O>>2]|0)>>>0<=p>>>0)break;c[n>>2]=c[P>>2];c[P>>2]=n;break c}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{w=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}if(y)break a;if(a[B>>0]|0)break a;if(n){n=c[C>>2]|0;d:do if(!n){r=c[f>>2]|0;if((c[H>>2]|0)==0?(b[r+76>>1]&8)==0:0)a[K>>0]=1;e:do if(c[r+272>>2]|0)if(!(a[r+81>>0]|0))U=48;else{n=0;break d}else{do if((e[r+276>>1]|0)>=224){p=r+300|0;n=c[p>>2]|0;if(n|0){c[p>>2]=c[n>>2];w=r+284|0;c[w>>2]=(c[w>>2]|0)+1;break e}p=r+296|0;n=c[p>>2]|0;if(!n){n=r+292|0;break}else{c[p>>2]=c[n>>2];w=r+284|0;c[w>>2]=(c[w>>2]|0)+1;break e}}else n=r+288|0;while(0);c[n>>2]=(c[n>>2]|0)+1;U=48}while(0);if((U|0)==48){U=0;n=_d(r,224,0)|0}if(!n)n=0;else{p=n+104|0;q=p+120|0;do{c[p>>2]=0;p=p+4|0}while((p|0)<(q|0));c[n>>2]=r;p=r+4|0;q=c[p>>2]|0;if(q|0)c[q+4>>2]=n;c[n+8>>2]=q;c[n+4>>2]=0;c[p>>2]=n;c[n+20>>2]=381479589;c[n+12>>2]=f;c[C>>2]=n;Di(n,61,0,1,0)|0}}while(0);v=n+108|0;q=c[v>>2]|0;s=m+20|0;u=c[s>>2]|0;t=q+1+u|0;w=n+112|0;if((u|0)>0){u=n+104|0;r=0;do{p=J+(c[m+36+(r<<3)>>2]|0)|0;if((c[w>>2]|0)>(q|0)){c[v>>2]=q+1;$=c[u>>2]|0;a[$+(q*20|0)>>0]=50;b[$+(q*20|0)+2>>1]=0;c[$+(q*20|0)+4>>2]=p;c[$+(q*20|0)+8>>2]=t;c[$+(q*20|0)+12>>2]=0;c[$+(q*20|0)+16>>2]=0;a[$+(q*20|0)+1>>0]=0}else Di(n,50,p,t,0)|0;r=r+1|0;q=c[v>>2]|0}while((r|0)<(c[s>>2]|0))}p=d[m+24>>0]|0;if((c[w>>2]|0)>(q|0)){c[v>>2]=q+1;$=c[n+104>>2]|0;a[$+(q*20|0)>>0]=-106;b[$+(q*20|0)+2>>1]=0;c[$+(q*20|0)+4>>2]=p;c[$+(q*20|0)+8>>2]=-1;c[$+(q*20|0)+12>>2]=0;c[$+(q*20|0)+16>>2]=0;a[$+(q*20|0)+1>>0]=0;break}else{Di(n,150,p,-1,0)|0;break}}}while(0);m=c[m+4>>2]|0;if(!m){U=100;break}}if((U|0)==100){l=g;p=c[T>>2]|0;break}Ra=_;return}while(0);r=c[l>>2]|0;o=c[p+68>>2]|0;if(!o){m=p+60|0;l=p+64|0}else{m=a[r>>0]|0;if(!(m<<24>>24))l=0;else{l=0;n=r;do{n=n+1|0;l=G(l+(d[208+(m&255)>>0]|0)|0,-1640531535)|0;m=a[n>>0]|0}while(m<<24>>24!=0)}l=(l>>>0)%((c[p+56>>2]|0)>>>0)|0;m=o+(l<<3)|0;l=o+(l<<3)+4|0}m=c[m>>2]|0;f:do if(!m)l=59292;else{q=d[208+(d[r>>0]|0)>>0]|0;while(1){l=c[l>>2]|0;m=m+-1|0;o=c[l+12>>2]|0;$=a[o>>0]|0;n=(d[208+($&255)>>0]|0)-q|0;if(!($<<24>>24==0|(n|0)!=0)){p=r;do{o=o+1|0;p=p+1|0;$=a[o>>0]|0;n=(d[208+($&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0}while(!($<<24>>24==0|(n|0)!=0))}if(!n)break f;if(!m){l=59292;break}}}while(0);l=c[l+8>>2]|0;if(!l){Ra=_;return}B=(j|0)!=0;C=f+116|0;p=V<<24>>24==0;q=f+20|0;r=f+40|0;s=(i|0)==0;t=Z+81|0;u=(Z|0)==0;v=(h|0)==0;w=Z+480|0;x=B&1;y=Z+304|0;z=Z+308|0;A=Z+300|0;g:while(1){c[X>>2]=0;c[Y>>2]=0;if(B?(Jm(g,l,j,k)|0)==0:0)U=142;else U=118;do if((U|0)==118){U=0;o=l+24|0;if((((a[o>>0]|0)==0?(c[W>>2]&524288|0)==0&0==0:0)?(c[C>>2]|0)==0:0)?(a[q>>0]|0)==0:0){U=142;break}if(Om(f,g,l,X,Y)|0){if(p){U=124;break g}if(!(a[t>>0]|0))break;else{U=145;break g}}m=pj(f,0,0,0)|0;if(m|0){$=c[l>>2]|0;c[m+24>>2]=$;n=m+16|0;c[n>>2]=c[$>>2];$=$+32|0;c[$>>2]=(c[$>>2]|0)+1;$=c[r>>2]|0;c[r>>2]=$+1;c[m+48>>2]=$;if(!s)Qm(f,m,g,c[X>>2]|0,l,c[Y>>2]|0,i,-1);if(!v?($=a[l+25+x>>0]|0,Qm(f,m,g,c[X>>2]|0,l,c[Y>>2]|0,h,1),($|2)<<24>>24!=10&(a[o>>0]|0)==0):0){$=c[C>>2]|0;a[(($|0)==0?f:$)+21>>0]=1}c[n>>2]=0;qi(Z,m)}m=c[Y>>2]|0;if(m){if(!u){if(c[w>>2]|0){Xd(Z,m);U=142;break}$=m;if((c[y>>2]|0)>>>0<=$>>>0?(c[z>>2]|0)>>>0>$>>>0:0){c[m>>2]=c[A>>2];c[A>>2]=m;U=142;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);U=142;break}else{U=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-U;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);U=142;break}}else U=142}while(0);l=c[l+12>>2]|0;if(!l){U=145;break}}if((U|0)==124){Ra=_;return}else if((U|0)==145){Ra=_;return}}function Mm(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 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;z=Ra;Ra=Ra+16|0;w=z;x=f+8|0;y=c[x>>2]|0;n=c[g+8>>2]|0;a:do if(!(c[g+36>>2]&32))g=0;else{if(!n){Ra=z;return}g=n;while(1){v=g+55|0;if(((d[v>>0]|d[v+1>>0]<<8)&3)==2)break a;g=c[g+20>>2]|0;if(!g){g=0;break}}}while(0);if(!n){Ra=z;return}t=y+108|0;u=y+112|0;v=y+104|0;if(!j){l=-1;m=0;p=n;q=0;while(1){do if((p|0)!=(g|0)?(r=q+i|0,(r|0)!=(k|0)):0){l=el(f,p,h,0,1,w,m,l)|0;m=p+55|0;m=e[(((d[m>>0]|d[m+1>>0]<<8)&8)==0?p+52|0:p+50|0)>>1]|0;n=c[t>>2]|0;if((c[u>>2]|0)>(n|0)){c[t>>2]=n+1;s=c[v>>2]|0;a[s+(n*20|0)>>0]=-123;b[s+(n*20|0)+2>>1]=0;c[s+(n*20|0)+4>>2]=r;c[s+(n*20|0)+8>>2]=l;c[s+(n*20|0)+12>>2]=m;c[s+(n*20|0)+16>>2]=0;a[s+(n*20|0)+1>>0]=0}else Di(y,133,r,l,m)|0;m=c[w>>2]|0;if(m){n=c[x>>2]|0;o=c[n+12>>2]|0;m=~m;if(((c[o+56>>2]|0)+(c[o+60>>2]|0)|0)<0){mk(o,n,m);m=p;break}else{c[(c[o+64>>2]|0)+(m<<2)>>2]=c[n+108>>2];m=p;break}}else m=p}while(0);p=c[p+20>>2]|0;if(!p)break;else q=q+1|0}Ra=z;return}else{l=-1;m=0;p=n;q=0;while(1){do if(!((p|0)==(g|0)?1:(c[j+(q<<2)>>2]|0)==0)?(s=q+i|0,(s|0)!=(k|0)):0){l=el(f,p,h,0,1,w,m,l)|0;m=p+55|0;m=e[(((d[m>>0]|d[m+1>>0]<<8)&8)==0?p+52|0:p+50|0)>>1]|0;n=c[t>>2]|0;if((c[u>>2]|0)>(n|0)){c[t>>2]=n+1;r=c[v>>2]|0;a[r+(n*20|0)>>0]=-123;b[r+(n*20|0)+2>>1]=0;c[r+(n*20|0)+4>>2]=s;c[r+(n*20|0)+8>>2]=l;c[r+(n*20|0)+12>>2]=m;c[r+(n*20|0)+16>>2]=0;a[r+(n*20|0)+1>>0]=0}else Di(y,133,s,l,m)|0;m=c[w>>2]|0;if(m){n=c[x>>2]|0;o=c[n+12>>2]|0;m=~m;if(((c[o+56>>2]|0)+(c[o+60>>2]|0)|0)<0){mk(o,n,m);m=p;break}else{c[(c[o+64>>2]|0)+(m<<2)>>2]=c[n+108>>2];m=p;break}}else m=p}while(0);p=c[p+20>>2]|0;if(!p)break;else q=q+1|0}Ra=z;return}}function Nm(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var 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,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,_=0,$=0,aa=0;$=Ra;Ra=Ra+96|0;X=$+16|0;q=$+8|0;p=$;W=$+56|0;r=$+24|0;Y=c[f+116>>2]|0;Y=(Y|0)==0?f:Y;_=c[f>>2]|0;m=(_|0)==0;a:do if(m){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](24)|0;P=24;break}j=Wa[c[29356>>2]&127](24)|0;if((c[14985]|0)>>>0<24)c[14985]=24;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){Z=c[14978]|0;U=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;T=L()|0;c[14768]=((T|0)<0|(T|0)==0&U>>>0<=Z>>>0)&1}k=Wa[c[29340>>2]&127](j)|0;if(!k){_=0;Ra=$;return _|0}j=Wa[c[29352>>2]&127](k)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0){c[14987]=j;Z=k}else Z=k}else{if(c[_+272>>2]|0){if(a[_+81>>0]|0){_=0;Ra=$;return _|0}}else{do if((e[_+276>>1]|0)>=24){k=_+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];P=_+284|0;c[P>>2]=(c[P>>2]|0)+1;P=24;break a}k=_+296|0;j=c[k>>2]|0;if(!j){j=_+292|0;break}else{c[k>>2]=c[j>>2];P=_+284|0;c[P>>2]=(c[P>>2]|0)+1;P=24;break a}}else j=_+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(_,24,0)|0;P=24}while(0);if((P|0)==24)if(!j){_=0;Ra=$;return _|0}else Z=j;l=Z;n=l+24|0;do{a[l>>0]=0;l=l+1|0}while((l|0)<(n|0));U=Y+260|0;c[Z+4>>2]=c[U>>2];c[U>>2]=Z;b:do if(m){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](28)|0;P=48;break}j=Wa[c[29356>>2]&127](28)|0;if((c[14985]|0)>>>0<28)c[14985]=28;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){U=c[14978]|0;T=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;S=L()|0;c[14768]=((S|0)<0|(S|0)==0&T>>>0<=U>>>0)&1}k=Wa[c[29340>>2]&127](j)|0;if(k){j=Wa[c[29352>>2]&127](k)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0){c[14987]=j;Q=k}else Q=k}else P=49}else{if(c[_+272>>2]|0){if(a[_+81>>0]|0){P=49;break}}else{do if((e[_+276>>1]|0)>=28){k=_+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];P=_+284|0;c[P>>2]=(c[P>>2]|0)+1;P=48;break b}k=_+296|0;j=c[k>>2]|0;if(!j){j=_+292|0;break}else{c[k>>2]=c[j>>2];P=_+284|0;c[P>>2]=(c[P>>2]|0)+1;P=48;break b}}else j=_+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(_,28,0)|0;P=48}while(0);if((P|0)==48)if(!j)P=49;else Q=j;if((P|0)==49){c[Z+8>>2]=0;_=0;Ra=$;return _|0}l=Q;n=l+24|0;do{a[l>>0]=0;l=l+1|0}while((l|0)<(n|0));c[Z+8>>2]=Q;R=(c[Y+8>>2]|0)+212|0;c[Q+24>>2]=c[R>>2];c[R>>2]=Q;c[Z>>2]=g;c[Z+12>>2]=i;R=Z+16|0;c[R>>2]=-1;S=Z+20|0;c[S>>2]=-1;c:do if(m){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](276)|0;P=73;break}j=Wa[c[29356>>2]&127](276)|0;if((c[14985]|0)>>>0<276)c[14985]=276;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){U=c[14978]|0;T=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;O=L()|0;c[14768]=((O|0)<0|(O|0)==0&T>>>0<=U>>>0)&1}k=Wa[c[29340>>2]&127](j)|0;if(!k){_=0;Ra=$;return _|0}j=Wa[c[29352>>2]&127](k)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0){c[14987]=j;U=k}else U=k}else{if(c[_+272>>2]|0){if(a[_+81>>0]|0){_=0;Ra=$;return _|0}}else{do if((e[_+276>>1]|0)>=276){k=_+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];P=_+284|0;c[P>>2]=(c[P>>2]|0)+1;P=73;break c}k=_+296|0;j=c[k>>2]|0;if(!j){j=_+292|0;break}else{c[k>>2]=c[j>>2];P=_+284|0;c[P>>2]=(c[P>>2]|0)+1;P=73;break c}}else j=_+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(_,276,0)|0;P=73}while(0);if((P|0)==73)if(!j){_=0;Ra=$;return _|0}else U=j;O=U+4|0;gw(O|0,0,272)|0;k=r+4|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[r>>2]=U;c[U>>2]=_;c[U+120>>2]=h;c[U+116>>2]=Y;k=c[g>>2]|0;c[U+240>>2]=k;a[U+144>>0]=a[g+8>>0]|0;c[U+132>>2]=c[f+132>>2];a[U+25>>0]=a[f+25>>0]|0;o=U+8|0;j=c[o>>2]|0;T=U;d:do if(!j){e:do if(c[_+272>>2]|0)if(!(a[_+81>>0]|0))P=86;else k=_;else{do if((e[_+276>>1]|0)>=224){j=_+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];P=_+284|0;c[P>>2]=(c[P>>2]|0)+1;P=87;break e}j=_+296|0;k=c[j>>2]|0;if(!k){j=_+292|0;break}else{c[j>>2]=c[k>>2];P=_+284|0;c[P>>2]=(c[P>>2]|0)+1;P=87;break e}}else j=_+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;P=86}while(0);if((P|0)==86){k=_d(_,224,0)|0;P=87}do if((P|0)==87){if(k|0){l=k+104|0;n=l+120|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(n|0));c[k>>2]=_;j=_+4|0;l=c[j>>2]|0;if(l|0)c[l+4>>2]=k;c[k+8>>2]=l;c[k+4>>2]=0;c[j>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=U;c[o>>2]=k;Di(k,61,0,1,0)|0;N=k;j=c[g>>2]|0;P=91;break d}j=c[U>>2]|0;k=c[U+64>>2]|0;if(k){if(j|0){if(c[j+480>>2]|0){Xd(j,k);k=j;break}Y=k;if((c[j+304>>2]|0)>>>0<=Y>>>0?(c[j+308>>2]|0)>>>0>Y>>>0:0){Y=j+300|0;c[k>>2]=c[Y>>2];c[Y>>2]=k;k=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);k=j;break}else{Y=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-Y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);k=j;break}}else k=j}while(0);j=c[U+68>>2]|0;if(j|0)ri(k,j);j=U+24|0;if(k){Y=k+272|0;c[Y>>2]=(c[Y>>2]|0)-(d[j>>0]|0)}}else{N=j;j=k;P=91}while(0);if((P|0)==91){do if(j|0){c[p>>2]=j;m=dd(_,44694,p)|0;j=c[N>>2]|0;if(!(a[j+81>>0]|0)){j=(c[N+108>>2]|0)+-1|0;k=c[N+104>>2]|0;l=k+(j*20|0)+1|0;if(a[l>>0]|0){Ei(N,k+(j*20|0)|0,m,-7);break}if(!m)break;c[k+(j*20|0)+16>>2]=m;a[l>>0]=-7;break}if(m|0){if(j|0){if(c[j+480>>2]|0){Xd(j,m);break}M=m;if((c[j+304>>2]|0)>>>0<=M>>>0?(c[j+308>>2]|0)>>>0>M>>>0:0){M=j+300|0;c[m>>2]=c[M>>2];c[M>>2]=m;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{M=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}}while(0);j=c[g+12>>2]|0;do if(!j)j=0;else{h=dk(_,j,0,0)|0;n=(h|0)==0;do if(n)P=115;else{k=r+24|0;l=e[k>>1]|0;b[k>>1]=l&28655;c[W>>2]=T;c[W+4>>2]=125;c[W+8>>2]=126;c[W+12>>2]=0;c[W+24>>2]=r;m=h+24|0;j=U+208|0;M=(c[j>>2]|0)+(c[m>>2]|0)|0;c[j>>2]=M;j=c[(c[U>>2]|0)+120>>2]|0;if((j|0)>=(M|0)){_j(W,h)|0;j=c[W>>2]|0;M=j+208|0;c[M>>2]=(c[M>>2]|0)-(c[m>>2]|0);M=b[k>>1]|0;K=h+4|0;c[K>>2]=c[K>>2]|M&-32752&65535;b[k>>1]=l&36880|M&65535;if((c[r+20>>2]|0)<=0)if((c[j+36>>2]|0)<1){P=115;break}else{j=0;break}}else{c[q>>2]=j;cd(U,41637,q)}j=0}while(0);if((P|0)==115){if(!(a[_+81>>0]|0)){M=U+56|0;j=(c[M>>2]|0)+-1|0;c[M>>2]=j;Tj(U,h,j,16)}else j=0;if(n)break}ni(_,h)}while(0);I=c[o>>2]|0;J=c[U>>2]|0;k=c[g+28>>2]|0;f:do if(k|0){K=(i|0)==11;M=U+145|0;u=i&255;v=I+108|0;w=I+112|0;x=W+4|0;y=I+104|0;z=(J|0)==0;A=J+272|0;B=J+276|0;C=J+81|0;D=J+288|0;E=J+300|0;F=J+296|0;G=J+284|0;H=J+292|0;while(1){if(K)l=d[k+1>>0]|0;else l=u;a[M>>0]=l;l=c[k+32>>2]|0;g:do if(l|0){c[X>>2]=l;h=dd(J,34793,X)|0;l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;t=c[y>>2]|0;a[t+(l*20|0)>>0]=-88;b[t+(l*20|0)+2>>1]=0;c[t+(l*20|0)+4>>2]=2147483647;c[t+(l*20|0)+8>>2]=1;c[t+(l*20|0)+12>>2]=0;c[t+(l*20|0)+16>>2]=0;a[t+(l*20|0)+1>>0]=0}else l=Di(I,168,2147483647,1,0)|0;m=c[I>>2]|0;if(!(a[m+81>>0]|0)){if((l|0)<0)l=(c[v>>2]|0)+-1|0;m=c[y>>2]|0;n=m+(l*20|0)+1|0;if(a[n>>0]|0){Ei(I,m+(l*20|0)|0,h,-7);break}if(!h)break;c[m+(l*20|0)+16>>2]=h;a[n>>0]=-7;break}if(h|0){do if(m|0){if(c[m+480>>2]|0){Xd(m,h);break g}l=h;if((c[m+304>>2]|0)>>>0<=l>>>0){if((c[m+308>>2]|0)>>>0<=l>>>0)break;t=m+300|0;c[h>>2]=c[t>>2];c[t>>2]=h;break g}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{t=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}}while(0);switch(a[k>>0]|0){case 122:{p=c[U>>2]|0;q=pj(U,0,0,0)|0;if(q|0){h=c[k+12>>2]|0;h:do if(!h)l=0;else{o=(Eu(h)|0)+1|0;i:do if(!p){t=Sv(o|0,0,-1,-1)|0;s=L()|0;if(s>>>0>0|(s|0)==0&t>>>0>2147483390){l=0;break h}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](o)|0;P=171;break}l=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){t=c[14978]|0;s=Tv(m|0,n|0,l|0,((l|0)<0)<<31>>31|0)|0;i=L()|0;c[14768]=((i|0)<0|(i|0)==0&s>>>0<=t>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break h}m=Wa[c[29352>>2]&127](l)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0<=(c[14987]|0)>>>0)break;c[14987]=m}else{if(c[p+272>>2]|0){if(a[p+81>>0]|0){l=0;break h}}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){m=p+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];P=p+284|0;c[P>>2]=(c[P>>2]|0)+1;P=171;break i}m=p+296|0;l=c[m>>2]|0;if(!l){l=p+292|0;break}else{c[m>>2]=c[l>>2];P=p+284|0;c[P>>2]=(c[P>>2]|0)+1;P=171;break i}}else l=p+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(p,o,0)|0;P=171}while(0);if((P|0)==171){P=0;if(!l){l=0;break}}ew(l|0,h|0,o|0)|0}while(0);c[q+8+(((c[q>>2]|0)+-1|0)*72|0)+8>>2]=l;m=c[(c[k+4>>2]|0)+20>>2]|0;if(!m)l=-1e6;else{n=c[p+16>>2]|0;l=0;while(1)if((c[n+(l<<4)+12>>2]|0)==(m|0))break;else l=l+1|0}if((l|0)==0|(l|0)>1){n=c[(c[p+16>>2]|0)+(l<<4)>>2]|0;j:do if(!n)l=0;else{h=(Eu(n)|0)+1|0;k:do if(c[p+272>>2]|0)if(!(a[p+81>>0]|0))P=188;else{l=0;break j}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){m=p+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];t=p+284|0;c[t>>2]=(c[t>>2]|0)+1;break k}m=p+296|0;l=c[m>>2]|0;if(!l){l=p+292|0;break}else{c[m>>2]=c[l>>2];t=p+284|0;c[t>>2]=(c[t>>2]|0)+1;break k}}else l=p+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;P=188}while(0);if((P|0)==188){P=0;l=_d(p,h,0)|0}if(!l){l=0;break}ew(l|0,n|0,h|0)|0}while(0);c[q+8+(((c[q>>2]|0)+-1|0)*72|0)+4>>2]=l}}m=gk(J,c[k+20>>2]|0,0)|0;l=c[k+16>>2]|0;if(!l)l=0;else l=dk(J,l,0,0)|0;tj(U,q,m,l,d[M>>0]|0,0);break}case 120:{p=c[U>>2]|0;t=pj(U,0,0,0)|0;if(t|0){h=c[k+12>>2]|0;l:do if(!h)l=0;else{o=(Eu(h)|0)+1|0;m:do if(!p){s=Sv(o|0,0,-1,-1)|0;i=L()|0;if(i>>>0>0|(i|0)==0&s>>>0>2147483390){l=0;break l}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](o)|0;P=221;break}l=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){s=c[14978]|0;i=Tv(m|0,n|0,l|0,((l|0)<0)<<31>>31|0)|0;r=L()|0;c[14768]=((r|0)<0|(r|0)==0&i>>>0<=s>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break l}m=Wa[c[29352>>2]&127](l)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0<=(c[14987]|0)>>>0)break;c[14987]=m}else{if(c[p+272>>2]|0){if(a[p+81>>0]|0){l=0;break l}}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){m=p+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];P=p+284|0;c[P>>2]=(c[P>>2]|0)+1;P=221;break m}m=p+296|0;l=c[m>>2]|0;if(!l){l=p+292|0;break}else{c[m>>2]=c[l>>2];P=p+284|0;c[P>>2]=(c[P>>2]|0)+1;P=221;break m}}else l=p+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(p,o,0)|0;P=221}while(0);if((P|0)==221){P=0;if(!l){l=0;break}}ew(l|0,h|0,o|0)|0}while(0);c[t+8+(((c[t>>2]|0)+-1|0)*72|0)+8>>2]=l;m=c[(c[k+4>>2]|0)+20>>2]|0;if(!m)l=-1e6;else{n=c[p+16>>2]|0;l=0;while(1)if((c[n+(l<<4)+12>>2]|0)==(m|0))break;else l=l+1|0}if((l|0)==0|(l|0)>1){n=c[(c[p+16>>2]|0)+(l<<4)>>2]|0;n:do if(!n)l=0;else{h=(Eu(n)|0)+1|0;o:do if(c[p+272>>2]|0)if(!(a[p+81>>0]|0))P=238;else{l=0;break n}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){m=p+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];s=p+284|0;c[s>>2]=(c[s>>2]|0)+1;break o}m=p+296|0;l=c[m>>2]|0;if(!l){l=p+292|0;break}else{c[m>>2]=c[l>>2];s=p+284|0;c[s>>2]=(c[s>>2]|0)+1;break o}}else l=p+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;P=238}while(0);if((P|0)==238){P=0;l=_d(p,h,0)|0}if(!l){l=0;break}ew(l|0,n|0,h|0)|0}while(0);c[t+8+(((c[t>>2]|0)+-1|0)*72|0)+4>>2]=l}}r=fk(J,c[k+8>>2]|0,0)|0;i=jk(J,c[k+24>>2]|0)|0;s=d[M>>0]|0;m=c[k+28>>2]|0;do if(!m)l=0;else{q=gk(J,c[m>>2]|0,0)|0;l=c[m+4>>2]|0;if(!l)p=0;else p=dk(J,l,0,0)|0;o=gk(J,c[m+8>>2]|0,0)|0;l=c[m+12>>2]|0;if(!l)h=0;else h=dk(J,l,0,0)|0;p:do if(z){if(!(c[7324]|0)){V=Wa[c[29340>>2]&127](36)|0;P=268;break}l=Wa[c[29356>>2]&127](36)|0;if((c[14985]|0)>>>0<36)c[14985]=36;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){aa=c[14978]|0;n=Tv(m|0,n|0,l|0,((l|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&n>>>0<=aa>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l)break;m=Wa[c[29352>>2]&127](l)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0<=(c[14987]|0)>>>0){P=277;break}c[14987]=m;P=277}else{if(c[A>>2]|0){if(a[C>>0]|0)break}else{do if((e[B>>1]|0)<36)l=D;else{l=c[E>>2]|0;if(l|0){c[E>>2]=c[l>>2];c[G>>2]=(c[G>>2]|0)+1;V=l;P=268;break p}l=c[F>>2]|0;if(!l){l=H;break}c[F>>2]=c[l>>2];c[G>>2]=(c[G>>2]|0)+1;V=l;P=268;break p}while(0);c[l>>2]=(c[l>>2]|0)+1}V=_d(J,36,0)|0;P=268}while(0);if((P|0)==268?(P=0,V|0):0){l=V;P=277}if((P|0)==277){P=0;c[l>>2]=q;c[l+4>>2]=p;c[l+8>>2]=o;c[l+12>>2]=h;c[l+16>>2]=0;break}if(q|0)ri(J,q);if(p|0)ni(J,p);if(o|0)ri(J,o);if(!h){l=0;break}ni(J,h);l=0}while(0);vj(U,t,r,i,s,l);break}case 121:{p=c[U>>2]|0;q=pj(U,0,0,0)|0;if(q|0){h=c[k+12>>2]|0;q:do if(!h)l=0;else{o=(Eu(h)|0)+1|0;r:do if(!p){aa=Sv(o|0,0,-1,-1)|0;t=L()|0;if(t>>>0>0|(t|0)==0&aa>>>0>2147483390){l=0;break q}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](o)|0;P=305;break}l=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){aa=c[14978]|0;t=Tv(m|0,n|0,l|0,((l|0)<0)<<31>>31|0)|0;s=L()|0;c[14768]=((s|0)<0|(s|0)==0&t>>>0<=aa>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break q}m=Wa[c[29352>>2]&127](l)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0<=(c[14987]|0)>>>0)break;c[14987]=m}else{if(c[p+272>>2]|0){if(a[p+81>>0]|0){l=0;break q}}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){m=p+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];P=p+284|0;c[P>>2]=(c[P>>2]|0)+1;P=305;break r}m=p+296|0;l=c[m>>2]|0;if(!l){l=p+292|0;break}else{c[m>>2]=c[l>>2];P=p+284|0;c[P>>2]=(c[P>>2]|0)+1;P=305;break r}}else l=p+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(p,o,0)|0;P=305}while(0);if((P|0)==305){P=0;if(!l){l=0;break}}ew(l|0,h|0,o|0)|0}while(0);c[q+8+(((c[q>>2]|0)+-1|0)*72|0)+8>>2]=l;m=c[(c[k+4>>2]|0)+20>>2]|0;if(!m)l=-1e6;else{n=c[p+16>>2]|0;l=0;while(1)if((c[n+(l<<4)+12>>2]|0)==(m|0))break;else l=l+1|0}if((l|0)==0|(l|0)>1){n=c[(c[p+16>>2]|0)+(l<<4)>>2]|0;s:do if(!n)l=0;else{h=(Eu(n)|0)+1|0;t:do if(c[p+272>>2]|0)if(!(a[p+81>>0]|0))P=322;else{l=0;break s}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){m=p+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];aa=p+284|0;c[aa>>2]=(c[aa>>2]|0)+1;break t}m=p+296|0;l=c[m>>2]|0;if(!l){l=p+292|0;break}else{c[m>>2]=c[l>>2];aa=p+284|0;c[aa>>2]=(c[aa>>2]|0)+1;break t}}else l=p+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;P=322}while(0);if((P|0)==322){P=0;l=_d(p,h,0)|0}if(!l){l=0;break}ew(l|0,n|0,h|0)|0}while(0);c[q+8+(((c[q>>2]|0)+-1|0)*72|0)+4>>2]=l}}l=c[k+16>>2]|0;if(!l)l=0;else l=dk(J,l,0,0)|0;sj(U,q,l);break}default:{l=fk(J,c[k+8>>2]|0,0)|0;a[W>>0]=4;c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;kj(U,l,W)|0;if(l|0)pi(J,l,1)}}do if((a[k>>0]|0)!=-125){l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;n=c[y>>2]|0;a[n+(l*20|0)>>0]=124;l=n+(l*20|0)+1|0;n=l+19|0;do{a[l>>0]=0;l=l+1|0}while((l|0)<(n|0));break}else{Di(I,124,0,0,0)|0;break}}while(0);k=c[k+36>>2]|0;if(!k)break f}}while(0);do if(j|0){k=c[N+12>>2]|0;j=~j;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,N,j);break}else{c[(c[k+64>>2]|0)+(j<<2)>>2]=c[N+108>>2];break}}while(0);m=N+108|0;j=c[m>>2]|0;if((c[N+112>>2]|0)>(j|0)){c[m>>2]=j+1;l=c[N+104>>2]|0;a[l+(j*20|0)>>0]=69;l=l+(j*20|0)+1|0;n=l+19|0;do{a[l>>0]=0;l=l+1|0}while((l|0)<(n|0))}else Di(N,69,0,0,0)|0;l=f+36|0;do if(c[l>>2]|0){k=c[U>>2]|0;j=c[O>>2]|0;if(j|0){if(k|0){if(c[k+480>>2]|0){Xd(k,j);break}aa=j;if((c[k+304>>2]|0)>>>0<=aa>>>0?(c[k+308>>2]|0)>>>0>aa>>>0:0){aa=k+300|0;c[j>>2]=c[aa>>2];c[aa>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{aa=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}}else{c[f+4>>2]=c[O>>2];c[l>>2]=c[U+36>>2];c[f+12>>2]=c[U+12>>2]}while(0);if((a[_+81>>0]|0)==0?(c[l>>2]|0)==0:0){f=N+104|0;aa=c[f>>2]|0;Fi(N,Y+96|0);c[Q+4>>2]=c[m>>2];c[f>>2]=0;c[Q>>2]=aa}c[Q+8>>2]=c[U+44>>2];c[Q+12>>2]=c[U+40>>2];c[Q+20>>2]=g;c[R>>2]=c[U+136>>2];c[S>>2]=c[U+140>>2];l=c[N>>2]|0;kb(l,N);m=c[N+4>>2]|0;k=N+8|0;j=c[k>>2]|0;if(!m)c[l+4>>2]=j;else{c[m+8>>2]=j;j=c[k>>2]|0}if(j|0)c[j+4>>2]=m;c[N+20>>2]=1443283912;c[N>>2]=0;do if(l){if(c[l+480>>2]|0){Xd(l,N);break}aa=N;if((c[l+304>>2]|0)>>>0<=aa>>>0?(c[l+308>>2]|0)>>>0>aa>>>0:0){aa=l+300|0;c[N>>2]=c[aa>>2];c[aa>>2]=N}else P=370}else P=370;while(0);do if((P|0)==370)if(!(c[7324]|0)){ab[c[29344>>2]&127](N);break}else{aa=Wa[c[29352>>2]&127](N)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](N);break}while(0);l=c[U>>2]|0;j=c[U+64>>2]|0;u:do if(j|0){do if(l|0){if(c[l+480>>2]|0){Xd(l,j);break u}k=j;if((c[l+304>>2]|0)>>>0>k>>>0)break;if((c[l+308>>2]|0)>>>0<=k>>>0)break;aa=l+300|0;c[j>>2]=c[aa>>2];c[aa>>2]=j;break u}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{aa=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);j=c[U+68>>2]|0;if(j|0)ri(l,j);j=U+24|0;if(l){aa=l+272|0;c[aa>>2]=(c[aa>>2]|0)-(d[j>>0]|0)}}a[j>>0]=0;if(c[_+480>>2]|0){Xd(_,U);aa=Z;Ra=$;return aa|0}if((c[_+304>>2]|0)>>>0<=T>>>0?(c[_+308>>2]|0)>>>0>T>>>0:0){aa=_+300|0;c[U>>2]=c[aa>>2];c[aa>>2]=U;aa=Z;Ra=$;return aa|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](U);aa=Z;Ra=$;return aa|0}else{aa=Wa[c[29352>>2]&127](U)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](U);aa=Z;Ra=$;return aa|0}return 0}function Om(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var 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;B=Ra;Ra=Ra+16|0;z=B;A=c[h+20>>2]|0;o=c[h+40>>2]|0;do if((A|0)==1){x=b[g+40>>1]|0;k=x<<16>>16;if(x<<16>>16>-1){if(!o){A=0;Ra=B;return A|0}l=c[(c[g+4>>2]|0)+(k<<4)>>2]|0;x=a[l>>0]|0;k=(d[208+(x&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0;if(!(x<<24>>24==0|(k|0)!=0)){m=o;do{l=l+1|0;m=m+1|0;x=a[l>>0]|0;k=(d[208+(x&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(x<<24>>24==0|(k|0)!=0))}if(!k){A=0;Ra=B;return A|0}else{x=0;w=0}}else{x=0;w=0}}else if(j){m=c[f>>2]|0;n=A<<2;a:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))y=19;else{A=1;Ra=B;return A|0}else{do if(!(0<0|(0==0?(e[m+276>>1]|0)>>>0>>0:0))){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];x=m+284|0;c[x>>2]=(c[x>>2]|0)+1;break a}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];x=m+284|0;c[x>>2]=(c[x>>2]|0)+1;break a}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;y=19}while(0);if((y|0)==19)k=_d(m,n,0)|0;if(!k){A=1;Ra=B;return A|0}else{c[j>>2]=k;x=k;w=k;break}}else{x=0;w=0}while(0);k=c[g+8>>2]|0;b:do if(k|0){u=(o|0)==0;v=(A|0)>0;s=g+4|0;t=(x|0)==0;r=k;c:while(1){do if(((A|0)==(e[r+50>>1]|0)?a[r+54>>0]|0:0)?(c[r+36>>2]|0)==0:0){if(u){q=r+55|0;if(((d[q>>0]|d[q+1>>0]<<8)&3)==2){y=29;break c}else break}d:do if(v){q=r+32|0;p=c[r+4>>2]|0;k=0;do{g=b[p+(k<<1)>>1]|0;j=g<<16>>16;if(g<<16>>16<0)break d;o=c[s>>2]|0;n=c[o+(j<<4)+8>>2]|0;n=(n|0)==0?34049:n;m=c[(c[q>>2]|0)+(k<<2)>>2]|0;g=a[m>>0]|0;l=(d[208+(g&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0;if(!(g<<24>>24==0|(l|0)!=0))do{m=m+1|0;n=n+1|0;g=a[m>>0]|0;l=(d[208+(g&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(g<<24>>24==0|(l|0)!=0));if(l|0)break d;o=c[o+(j<<4)>>2]|0;g=d[208+(d[o>>0]|0)>>0]|0;l=0;do{n=c[h+36+(l<<3)+4>>2]|0;j=a[n>>0]|0;m=(d[208+(j&255)>>0]|0)-g|0;if(!(j<<24>>24==0|(m|0)!=0)){j=o;do{n=n+1|0;j=j+1|0;C=a[n>>0]|0;m=(d[208+(C&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(C<<24>>24==0|(m|0)!=0))}if(!m){y=45;break}l=l+1|0}while((l|0)<(A|0));if((y|0)==45){y=0;if(!t)c[x+(k<<2)>>2]=c[h+36+(l<<3)>>2]}if((l|0)==(A|0))break d;k=k+1|0}while((k|0)<(A|0))}else k=0;while(0);if((k|0)==(A|0))break c}while(0);k=c[r+20>>2]|0;if(!k)break b;else r=k}if((y|0)==29?(x|0)!=0&v:0){k=0;do{c[x+(k<<2)>>2]=c[h+36+(k<<3)>>2];k=k+1|0}while((k|0)!=(A|0))}c[i>>2]=r;C=0;Ra=B;return C|0}while(0);if(!(a[f+146>>0]|0)){C=c[h+8>>2]|0;c[z>>2]=c[c[h>>2]>>2];c[z+4>>2]=C;cd(f,44708,z)}k=c[f>>2]|0;if(!w){C=1;Ra=B;return C|0}if(k|0){if(c[k+480>>2]|0){Xd(k,w);C=1;Ra=B;return C|0}C=w;if((c[k+304>>2]|0)>>>0<=C>>>0?(c[k+308>>2]|0)>>>0>C>>>0:0){C=k+300|0;c[w>>2]=c[C>>2];c[C>>2]=w;C=1;Ra=B;return C|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](w);C=1;Ra=B;return C|0}else{C=Wa[c[29352>>2]&127](w)|0;c[14978]=(c[14978]|0)-C;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](w);C=1;Ra=B;return C|0}return 0}function Pm(f,g,h,i,j,k,l,m,n){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|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,H=0,I=0,J=0,K=0,L=0;A=f+8|0;o=c[A>>2]|0;a:do if(!o){r=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[r+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[r+272>>2]|0)if(!(a[r+81>>0]|0))L=15;else{J=0;break a}else{do if((e[r+276>>1]|0)>=224){o=r+300|0;p=c[o>>2]|0;if(p|0){c[o>>2]=c[p>>2];K=r+284|0;c[K>>2]=(c[K>>2]|0)+1;break b}o=r+296|0;p=c[o>>2]|0;if(!p){o=r+292|0;break}else{c[o>>2]=c[p>>2];K=r+284|0;c[K>>2]=(c[K>>2]|0)+1;break b}}else o=r+288|0;while(0);c[o>>2]=(c[o>>2]|0)+1;L=15}while(0);if((L|0)==15)p=_d(r,224,0)|0;if(!p)J=0;else{o=p+104|0;q=o+120|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(q|0));c[p>>2]=r;o=r+4|0;q=c[o>>2]|0;if(q|0)c[q+4>>2]=p;c[p+8>>2]=q;c[p+4>>2]=0;c[o>>2]=p;c[p+20>>2]=381479589;c[p+12>>2]=f;c[A>>2]=p;Di(p,61,0,1,0)|0;J=p}}else J=o;while(0);K=(c[f+40>>2]|0)+-1|0;D=f+56|0;I=c[D>>2]|0;H=I+-1|0;c[D>>2]=H;do if((m|0)<0){o=d[j+24>>0]|0;p=J+108|0;q=c[p>>2]|0;if((c[J+112>>2]|0)>(q|0)){c[p>>2]=q+1;D=c[J+104>>2]|0;a[D+(q*20|0)>>0]=46;b[D+(q*20|0)+2>>1]=0;c[D+(q*20|0)+4>>2]=o;c[D+(q*20|0)+8>>2]=H;c[D+(q*20|0)+12>>2]=0;c[D+(q*20|0)+16>>2]=0;a[D+(q*20|0)+1>>0]=0;break}else{Di(J,46,o,H,0)|0;break}}while(0);v=j+20|0;o=c[v>>2]|0;if((o|0)>0){r=l+1|0;s=J+108|0;t=J+112|0;u=J+104|0;q=0;do{o=r+(c[k+(q<<2)>>2]|0)|0;p=c[s>>2]|0;if((c[t>>2]|0)>(p|0)){c[s>>2]=p+1;D=c[u>>2]|0;a[D+(p*20|0)>>0]=50;b[D+(p*20|0)+2>>1]=0;c[D+(p*20|0)+4>>2]=o;c[D+(p*20|0)+8>>2]=H;c[D+(p*20|0)+12>>2]=0;c[D+(p*20|0)+16>>2]=0;a[D+(p*20|0)+1>>0]=0}else Di(J,50,o,H,0)|0;q=q+1|0;o=c[v>>2]|0}while((q|0)<(o|0));D=o}else D=o;do if(!n){if(!i){u=f+19|0;o=a[u>>0]|0;if(!(o<<24>>24)){G=f+44|0;t=(c[G>>2]|0)+1|0;c[G>>2]=t}else{t=o+-1<<24>>24;a[u>>0]=t;t=c[f+148+((t&255)<<2)>>2]|0}o=l+1+(c[k>>2]|0)|0;r=J+108|0;p=c[r>>2]|0;s=J+112|0;if((c[s>>2]|0)>(p|0)){c[r>>2]=p+1;G=c[J+104>>2]|0;a[G+(p*20|0)>>0]=79;b[G+(p*20|0)+2>>1]=0;c[G+(p*20|0)+4>>2]=o;c[G+(p*20|0)+8>>2]=t;c[G+(p*20|0)+12>>2]=0;c[G+(p*20|0)+16>>2]=0;a[G+(p*20|0)+1>>0]=0}else Di(J,79,o,t,0)|0;o=c[r>>2]|0;if((c[s>>2]|0)>(o|0)){c[r>>2]=o+1;q=c[J+104>>2]|0;a[q+(o*20|0)>>0]=15;b[q+(o*20|0)+2>>1]=0;c[q+(o*20|0)+4>>2]=t;c[q+(o*20|0)+8>>2]=0;c[q+(o*20|0)+12>>2]=0;c[q+(o*20|0)+16>>2]=0;a[q+(o*20|0)+1>>0]=0;q=o}else q=Di(J,15,t,0,0)|0;if((m|0)==1?(c[j>>2]|0)==(h|0):0){o=c[r>>2]|0;if((c[s>>2]|0)>(o|0)){c[r>>2]=o+1;G=c[J+104>>2]|0;a[G+(o*20|0)>>0]=53;b[G+(o*20|0)+2>>1]=0;c[G+(o*20|0)+4>>2]=l;c[G+(o*20|0)+8>>2]=H;c[G+(o*20|0)+12>>2]=t;c[G+(o*20|0)+16>>2]=0;a[G+(o*20|0)+1>>0]=0}else Di(J,53,l,H,t)|0;o=c[r>>2]|0;if((o|0)>0)b[(c[J+104>>2]|0)+((o+-1|0)*20|0)+2>>1]=144}Gj(f,K,g,h,108);o=c[r>>2]|0;if((c[s>>2]|0)>(o|0)){c[r>>2]=o+1;l=c[J+104>>2]|0;a[l+(o*20|0)>>0]=31;b[l+(o*20|0)+2>>1]=0;c[l+(o*20|0)+4>>2]=K;c[l+(o*20|0)+8>>2]=0;c[l+(o*20|0)+12>>2]=t;c[l+(o*20|0)+16>>2]=0;a[l+(o*20|0)+1>>0]=0}else Di(J,31,K,0,t)|0;o=c[r>>2]|0;if((c[s>>2]|0)>(o|0)){c[r>>2]=o+1;l=c[J+104>>2]|0;a[l+(o*20|0)>>0]=11;b[l+(o*20|0)+2>>1]=0;c[l+(o*20|0)+4>>2]=0;c[l+(o*20|0)+8>>2]=H;c[l+(o*20|0)+12>>2]=0;c[l+(o*20|0)+16>>2]=0;a[l+(o*20|0)+1>>0]=0}else Di(J,11,0,H,0)|0;p=c[r>>2]|0;if(!(a[(c[J>>2]|0)+81>>0]|0)){o=c[J+104>>2]|0;c[o+((((p|0)<2?-1:-2)+p|0)*20|0)+8>>2]=p;o=o+(((q|0)<0?p+-1|0:q)*20|0)|0}else{c[14829]=p;o=59308}c[o+8>>2]=p;if(!t)break;o=a[u>>0]|0;if((o&255)>=8)break;a[u>>0]=o+1<<24>>24;c[f+148+((o&255)<<2)>>2]=t;break}C=(D|0)==1;do if(C){o=f+19|0;p=a[o>>0]|0;if(!(p<<24>>24)){z=f+44|0;B=(c[z>>2]|0)+1|0;c[z>>2]=B;break}else{B=p+-1<<24>>24;a[o>>0]=B;B=c[f+148+((B&255)<<2)>>2]|0;break}}else{o=f+32|0;p=c[o>>2]|0;q=f+28|0;r=c[q>>2]|0;if((r|0)<(D|0)){z=f+44|0;B=c[z>>2]|0;c[z>>2]=B+D;B=B+1|0;break}else{c[o>>2]=p+D;c[q>>2]=r-D;B=p;break}}while(0);z=f+19|0;o=a[z>>0]|0;if(!(o<<24>>24)){x=f+44|0;y=(c[x>>2]|0)+1|0;c[x>>2]=y}else{y=o+-1<<24>>24;a[z>>0]=y;y=c[f+148+((y&255)<<2)>>2]|0}o=c[i+44>>2]|0;w=J+108|0;p=c[w>>2]|0;x=J+112|0;if((c[x>>2]|0)>(p|0)){c[w>>2]=p+1;n=c[J+104>>2]|0;a[n+(p*20|0)>>0]=108;b[n+(p*20|0)+2>>1]=0;c[n+(p*20|0)+4>>2]=K;c[n+(p*20|0)+8>>2]=o;c[n+(p*20|0)+12>>2]=g;c[n+(p*20|0)+16>>2]=0;a[n+(p*20|0)+1>>0]=0}else Di(J,108,K,o,g)|0;o=c[A>>2]|0;q=Ij(f,i)|0;do if(q|0){p=c[o>>2]|0;if(!(a[p+81>>0]|0)){A=c[o+104>>2]|0;g=(c[o+108>>2]|0)+-1|0;a[A+(g*20|0)+1>>0]=-9;c[A+(g*20|0)+16>>2]=q;break}if((c[p+480>>2]|0)==0?(g=(c[q>>2]|0)+-1|0,c[q>>2]=g,(g|0)==0):0){o=c[q+12>>2]|0;if(o|0){if(c[o+480>>2]|0){Xd(o,q);break}g=q;if((c[o+304>>2]|0)>>>0<=g>>>0?(c[o+308>>2]|0)>>>0>g>>>0:0){g=o+300|0;c[q>>2]=c[g>>2];c[g>>2]=q;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{g=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}}while(0);u=(D|0)>0;if(u){p=l+1|0;q=J+104|0;o=0;do{r=p+(c[k+(o<<2)>>2]|0)|0;s=o+B|0;t=c[w>>2]|0;if((c[x>>2]|0)>(t|0)){c[w>>2]=t+1;g=c[q>>2]|0;a[g+(t*20|0)>>0]=78;b[g+(t*20|0)+2>>1]=0;c[g+(t*20|0)+4>>2]=r;c[g+(t*20|0)+8>>2]=s;c[g+(t*20|0)+12>>2]=0;c[g+(t*20|0)+16>>2]=0;a[g+(t*20|0)+1>>0]=0}else Di(J,78,r,s,0)|0;o=o+1|0}while((o|0)!=(D|0))}do if((m|0)==1?(c[j>>2]|0)==(h|0):0){o=c[w>>2]|0;n=D+1+o|0;if(u){u=l+1|0;v=i+4|0;s=h+40|0;t=J+104|0;r=0;do{p=u+(c[k+(r<<2)>>2]|0)|0;q=b[(c[v>>2]|0)+(r<<1)>>1]|0;q=(q<<16>>16==(b[s>>1]|0)?0:(q<<16>>16)+1|0)+l|0;if((c[x>>2]|0)>(o|0)){c[w>>2]=o+1;h=c[t>>2]|0;a[h+(o*20|0)>>0]=52;b[h+(o*20|0)+2>>1]=0;c[h+(o*20|0)+4>>2]=p;c[h+(o*20|0)+8>>2]=n;c[h+(o*20|0)+12>>2]=q;c[h+(o*20|0)+16>>2]=0;a[h+(o*20|0)+1>>0]=0}else Di(J,52,p,n,q)|0;o=c[w>>2]|0;if((o|0)>0)b[(c[t>>2]|0)+((o+-1|0)*20|0)+2>>1]=16;r=r+1|0}while((r|0)!=(D|0))}if((c[x>>2]|0)>(o|0)){c[w>>2]=o+1;l=c[J+104>>2]|0;a[l+(o*20|0)>>0]=11;b[l+(o*20|0)+2>>1]=0;c[l+(o*20|0)+4>>2]=0;c[l+(o*20|0)+8>>2]=H;c[l+(o*20|0)+12>>2]=0;c[l+(o*20|0)+16>>2]=0;a[l+(o*20|0)+1>>0]=0;break}else{Di(J,11,0,H,0)|0;break}}while(0);r=gl(c[f>>2]|0,i)|0;o=c[w>>2]|0;if((c[x>>2]|0)>(o|0)){c[w>>2]=o+1;l=c[J+104>>2]|0;a[l+(o*20|0)>>0]=92;b[l+(o*20|0)+2>>1]=0;c[l+(o*20|0)+4>>2]=B;c[l+(o*20|0)+8>>2]=D;c[l+(o*20|0)+12>>2]=y;c[l+(o*20|0)+16>>2]=0;a[l+(o*20|0)+1>>0]=0}else o=Di(J,92,B,D,y)|0;p=c[J>>2]|0;do if(a[p+81>>0]|0){if((D|0)!=-12)kg(p,D,r)}else{if((o|0)<0)o=(c[w>>2]|0)+-1|0;p=c[J+104>>2]|0;q=p+(o*20|0)|0;if((D|0)<=-1?(E=p+(o*20|0)+1|0,(a[E>>0]|0)==0):0){if((D|0)==-3){c[p+(o*20|0)+16>>2]=r;a[E>>0]=-3;break}if(!r)break;c[p+(o*20|0)+16>>2]=r;a[E>>0]=D;if((D|0)!=-12)break;l=r+12|0;c[l>>2]=(c[l>>2]|0)+1;break}Ei(J,q,r,D)}while(0);o=c[w>>2]|0;if((c[x>>2]|0)>(o|0)){c[w>>2]=o+1;l=c[J+104>>2]|0;a[l+(o*20|0)>>0]=29;b[l+(o*20|0)+2>>1]=0;c[l+(o*20|0)+4>>2]=K;c[l+(o*20|0)+8>>2]=H;c[l+(o*20|0)+12>>2]=y;c[l+(o*20|0)+16>>2]=0;a[l+(o*20|0)+1>>0]=0}else o=Di(J,29,K,H,y)|0;if(!(a[(c[J>>2]|0)+81>>0]|0)){H=c[J+104>>2]|0;a[H+(o*20|0)+1>>0]=-3;c[H+(o*20|0)+16>>2]=0}if(y|0?(F=a[z>>0]|0,(F&255)<8):0){a[z>>0]=F+1<<24>>24;c[f+148+((F&255)<<2)>>2]=y}if(!C){o=f+28|0;if((c[o>>2]|0)>=(D|0))break;c[o>>2]=D;c[f+32>>2]=B;break}if(B|0?(G=a[z>>0]|0,(G&255)<8):0){a[z>>0]=G+1<<24>>24;c[f+148+((G&255)<<2)>>2]=B}}while(0);o=a[j+24>>0]|0;p=o<<24>>24==0;do if(p){if(((0==0?(c[(c[f>>2]|0)+32>>2]&524288|0)==0:0)?(c[f+116>>2]|0)==0:0)?(a[f+20>>0]|0)==0:0){Uj(f,787,2,0,-1,4);break}if(!((m|0)<1|p^1)){L=c[f+116>>2]|0;a[((L|0)==0?f:L)+21>>0]=1;L=141}else L=141}else L=141;while(0);do if((L|0)==141){o=o&255;p=J+108|0;q=c[p>>2]|0;if((c[J+112>>2]|0)>(q|0)){c[p>>2]=q+1;f=c[J+104>>2]|0;a[f+(q*20|0)>>0]=-106;b[f+(q*20|0)+2>>1]=0;c[f+(q*20|0)+4>>2]=o;c[f+(q*20|0)+8>>2]=m;c[f+(q*20|0)+12>>2]=0;c[f+(q*20|0)+16>>2]=0;a[f+(q*20|0)+1>>0]=0;break}else{Di(J,150,o,m,0)|0;break}}while(0);p=c[J+12>>2]|0;o=0-I|0;if(((c[p+56>>2]|0)+(c[p+60>>2]|0)|0)<0){mk(p,J,o);o=J+108|0}else{m=J+108|0;c[(c[p+64>>2]|0)+(o<<2)>>2]=c[m>>2];o=m}p=c[o>>2]|0;if((c[J+112>>2]|0)>(p|0)){c[o>>2]=p+1;m=c[J+104>>2]|0;a[m+(p*20|0)>>0]=117;b[m+(p*20|0)+2>>1]=0;c[m+(p*20|0)+4>>2]=K;c[m+(p*20|0)+8>>2]=0;c[m+(p*20|0)+12>>2]=0;c[m+(p*20|0)+16>>2]=0;a[m+(p*20|0)+1>>0]=0;return}else{Di(J,117,K,0,0)|0;return}}function Qm(f,g,h,i,j,k,l,m){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|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,O=0,P=0;P=Ra;Ra=Ra+80|0;N=P;M=P+40|0;L=P+8|0;O=c[f>>2]|0;q=f+8|0;n=c[q>>2]|0;a:do if(!n){if((c[f+116>>2]|0)==0?(b[O+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[O+272>>2]|0)if(!(a[O+81>>0]|0))p=15;else{K=0;break a}else{do if((e[O+276>>1]|0)>=224){n=O+300|0;o=c[n>>2]|0;if(o|0){c[n>>2]=c[o>>2];K=O+284|0;c[K>>2]=(c[K>>2]|0)+1;break b}n=O+296|0;o=c[n>>2]|0;if(!o){n=O+292|0;break}else{c[n>>2]=c[o>>2];K=O+284|0;c[K>>2]=(c[K>>2]|0)+1;break b}}else n=O+288|0;while(0);c[n>>2]=(c[n>>2]|0)+1;p=15}while(0);if((p|0)==15)o=_d(O,224,0)|0;if(!o)K=0;else{n=o+104|0;p=n+120|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(p|0));c[o>>2]=O;n=O+4|0;p=c[n>>2]|0;if(p|0)c[p+4>>2]=o;c[o+8>>2]=p;c[o+4>>2]=0;c[n>>2]=o;c[o+20>>2]=381479589;c[o+12>>2]=f;c[q>>2]=o;Di(o,61,0,1,0)|0;K=o}}else K=n;while(0);do if((m|0)<0){n=d[j+24>>0]|0;o=K+108|0;p=c[o>>2]|0;if((c[K+112>>2]|0)>(p|0)){c[o>>2]=p+1;H=c[K+104>>2]|0;a[H+(p*20|0)>>0]=46;b[H+(p*20|0)+2>>1]=0;c[H+(p*20|0)+4>>2]=n;c[H+(p*20|0)+8>>2]=0;c[H+(p*20|0)+12>>2]=0;c[H+(p*20|0)+16>>2]=0;a[H+(p*20|0)+1>>0]=0;H=p;break}else{H=Di(K,46,n,0,0)|0;break}}else H=0;while(0);t=j+20|0;if((c[t>>2]|0)>0){u=(i|0)==0;v=M+4|0;w=i+4|0;x=(k|0)==0;y=j+36|0;z=M+4|0;A=h+40|0;B=h+4|0;C=l+1|0;D=M+4|0;E=M+4|0;r=0;s=0;do{if(u)o=-1;else o=b[(c[w>>2]|0)+(s<<1)>>1]|0;p=o&65535;q=c[f>>2]|0;c[M>>2]=0;c[v>>2]=0;n=oj(q,168,M,0)|0;do if(!n)n=0;else{if(p<<16>>16>-1?(b[A>>1]|0)!=p<<16>>16:0){p=c[B>>2]|0;c[n+28>>2]=C+o;a[n+1>>0]=a[p+(o<<4)+13>>0]|0;o=c[p+(o<<4)+8>>2]|0;if(o|0){c[M>>2]=o;q=(Eu(o)|0)&1073741823;c[D>>2]=q;if((q|0)!=0?(F=oj(c[f>>2]|0,106,M,0)|0,(F|0)!=0):0){c[F+12>>2]=n;n=F+4|0;c[n>>2]=c[n>>2]|4352;n=F}break}o=c[c[q+8>>2]>>2]|0;c[M>>2]=o;if(o){q=(Eu(o)|0)&1073741823;c[E>>2]=q;if((q|0)!=0?(G=oj(c[f>>2]|0,106,M,0)|0,(G|0)!=0):0){c[G+12>>2]=n;n=G+4|0;c[n>>2]=c[n>>2]|4352;n=G}}else c[E>>2]=0;break}c[n+28>>2]=l;a[n+1>>0]=68}while(0);o=c[(c[(c[j>>2]|0)+4>>2]|0)+(c[(x?y:k+(s<<2)|0)>>2]<<16>>16<<4)>>2]|0;c[M>>2]=o;if(!o)o=0;else o=(Eu(o)|0)&1073741823;c[z>>2]=o;r=Xk(O,r,ej(f,53,n,oj(O,59,M,0)|0)|0)|0;s=s+1|0}while((s|0)<(c[t>>2]|0));n=j}else{r=0;n=j}if((m|0)>0?(c[n>>2]|0)==(h|0):0){if(!(c[h+36>>2]&32)){n=c[f>>2]|0;c[M>>2]=0;c[M+4>>2]=0;n=oj(n,168,M,0)|0;if(!n)n=0;else{c[n+28>>2]=l;a[n+1>>0]=68}o=c[g+48>>2]|0;c[M>>2]=0;c[M+4>>2]=0;p=oj(O,162,M,0)|0;if(p|0){c[p+44>>2]=h;c[p+28>>2]=o;b[p+32>>1]=-1}n=ej(f,52,n,p)|0}else{C=i+50|0;if(!(b[C>>1]|0))n=0;else{y=i+4|0;z=M+4|0;A=h+4|0;B=M+4|0;u=h+40|0;v=l+1|0;w=M+4|0;x=M+4|0;n=0;t=0;do{p=b[(c[y>>2]|0)+(t<<1)>>1]|0;q=c[f>>2]|0;c[M>>2]=0;c[z>>2]=0;o=oj(q,168,M,0)|0;s=p<<16>>16;do if(!o)p=0;else{if(p<<16>>16>-1?(b[u>>1]|0)!=p<<16>>16:0){p=c[A>>2]|0;c[o+28>>2]=v+s;a[o+1>>0]=a[p+(s<<4)+13>>0]|0;p=c[p+(s<<4)+8>>2]|0;if(p|0){c[M>>2]=p;h=(Eu(p)|0)&1073741823;c[w>>2]=h;if((h|0)!=0?(I=oj(c[f>>2]|0,106,M,0)|0,(I|0)!=0):0){c[I+12>>2]=o;o=I+4|0;c[o>>2]=c[o>>2]|4352;o=I}p=o;break}p=c[c[q+8>>2]>>2]|0;c[M>>2]=p;if(p){h=(Eu(p)|0)&1073741823;c[x>>2]=h;if((h|0)!=0?(J=oj(c[f>>2]|0,106,M,0)|0,(J|0)!=0):0){c[J+12>>2]=o;o=J+4|0;c[o>>2]=c[o>>2]|4352;o=J}}else c[x>>2]=0;p=o;break}c[o+28>>2]=l;a[o+1>>0]=68;p=o}while(0);o=c[(c[A>>2]|0)+(s<<4)>>2]|0;c[M>>2]=o;if(!o)o=0;else o=(Eu(o)|0)&1073741823;c[B>>2]=o;n=Xk(O,n,ej(f,45,p,oj(O,59,M,0)|0)|0)|0;t=t+1|0}while(t>>>0<(e[C>>1]|0)>>>0)}n=ej(f,19,n,0)|0}r=Xk(O,r,n)|0}s=L+8|0;c[s>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;c[s+16>>2]=0;c[s+20>>2]=0;c[L+4>>2]=g;c[L>>2]=f;s=(r|0)==0;do if(!s){p=L+24|0;b[p>>1]=0;c[M>>2]=f;c[M+4>>2]=125;c[M+8>>2]=126;c[M+12>>2]=0;c[M+24>>2]=L;n=r+24|0;o=f+208|0;L=(c[o>>2]|0)+(c[n>>2]|0)|0;c[o>>2]=L;o=c[(c[f>>2]|0)+120>>2]|0;if((o|0)<(L|0)){c[N>>2]=o;cd(f,41637,N);break}else{_j(M,r)|0;N=(c[M>>2]|0)+208|0;c[N>>2]=(c[N>>2]|0)-(c[n>>2]|0);N=r+4|0;c[N>>2]=c[N>>2]|b[p>>1]&-32752&65535;break}}while(0);if(!(c[f+36>>2]|0)){q=ql(f,g,r,0,0,0,0)|0;n=d[j+24>>0]|0;o=K+108|0;p=c[o>>2]|0;if((c[K+112>>2]|0)>(p|0)){c[o>>2]=p+1;j=c[K+104>>2]|0;a[j+(p*20|0)>>0]=-106;b[j+(p*20|0)+2>>1]=0;c[j+(p*20|0)+4>>2]=n;c[j+(p*20|0)+8>>2]=m;c[j+(p*20|0)+12>>2]=0;c[j+(p*20|0)+16>>2]=0;a[j+(p*20|0)+1>>0]=0}else Di(K,150,n,m,0)|0;if(q|0)sl(q)}if(!s)ni(O,r);if(!H){Ra=P;return}o=c[K+108>>2]|0;if(!(a[(c[K>>2]|0)+81>>0]|0))n=(c[K+104>>2]|0)+(((H|0)<0?o+-1|0:H)*20|0)|0;else n=59308;c[n+8>>2]=o;Ra=P;return}function Rm(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var 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,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,_=0,$=0,aa=0;aa=Ra;Ra=Ra+48|0;V=aa+16|0;Q=aa+36|0;T=aa+32|0;W=aa+8|0;R=aa;S=aa+24|0;$=c[f>>2]|0;_=(i|0)!=0;i=_&1;Y=a[h+25+i>>0]|0;U=Y<<24>>24==7;if(U?!(0==0?(c[$+32>>2]&524288|0)==0:0):0){$=0;Ra=aa;return $|0}Z=h+28+(i<<2)|0;i=c[Z>>2]|0;if(Y<<24>>24==0|(i|0)!=0){$=i;Ra=aa;return $|0}c[Q>>2]=0;c[T>>2]=0;a:do if(!(Om(f,g,h,Q,T)|0)){u=h+20|0;if((c[u>>2]|0)>0){w=29616;v=c[w>>2]|0;w=c[w+4>>2]|0;y=29624;x=c[y>>2]|0;y=c[y+4>>2]|0;z=h+36|0;A=g+4|0;B=g+40|0;C=S+4|0;D=R+4|0;P=Y<<24>>24!=7&(_|Y<<24>>24!=10);E=$+272|0;F=$+276|0;G=$+81|0;H=$+288|0;I=$+300|0;J=f+200|0;K=$+296|0;M=$+284|0;N=$+292|0;O=f+272|0;s=0;t=0;m=0;j=0;while(1){k=V;c[k>>2]=v;c[k+4>>2]=w;k=W;c[k>>2]=x;c[k+4>>2]=y;k=c[T>>2]|0;k=c[((k|0)==0?z:k+(t<<2)|0)>>2]|0;i=c[Q>>2]|0;if(!i)i=B;else i=(c[i+4>>2]|0)+(t<<1)|0;i=c[(c[A>>2]|0)+(b[i>>1]<<4)>>2]|0;c[S>>2]=i;if(!i)i=0;else i=(Eu(i)|0)&1073741823;c[C>>2]=i;i=c[(c[(c[h>>2]|0)+4>>2]|0)+(k<<4)>>2]|0;c[R>>2]=i;if(!i)i=0;else i=(Eu(i)|0)&1073741823;c[D>>2]=i;r=oj($,59,V,0)|0;r=ej(f,134,r,oj($,59,S,0)|0)|0;j=Xk($,j,ej(f,53,r,oj($,59,R,0)|0)|0)|0;if(_){q=oj($,59,V,0)|0;q=ej(f,134,q,oj($,59,S,0)|0)|0;r=oj($,59,W,0)|0;s=Xk($,s,ej(f,45,q,ej(f,134,r,oj($,59,S,0)|0)|0)|0)|0}b:do if(P){c:do switch(Y<<24>>24){case 10:{i=ej(f,134,oj($,59,W,0)|0,oj($,59,S,0)|0)|0;break}case 9:{i=c[(c[(c[h>>2]|0)+4>>2]|0)+(k<<4)+4>>2]|0;if(i|0){i=dk($,i,0,0)|0;break c}d:do if(c[E>>2]|0)if(!(a[G>>0]|0))X=28;else{i=0;break c}else{do if((e[F>>1]|0)<52)i=H;else{i=c[I>>2]|0;if(i|0){c[I>>2]=c[i>>2];c[M>>2]=(c[M>>2]|0)+1;break d}i=c[K>>2]|0;if(!i){i=N;break}c[K>>2]=c[i>>2];c[M>>2]=(c[M>>2]|0)+1;break d}while(0);c[i>>2]=(c[i>>2]|0)+1;X=28}while(0);if((X|0)==28){X=0;i=_d($,52,0)|0}if(i){k=i;l=k+52|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(l|0));a[i>>0]=114;b[i+34>>1]=-1;c[i+24>>2]=1}break}default:{do if(c[E>>2]|0)if(!(a[G>>0]|0))X=39;else{i=0;break c}else{if((e[F>>1]|0)>=52){i=c[I>>2]|0;if(i|0){c[I>>2]=c[i>>2];c[M>>2]=(c[M>>2]|0)+1;break}i=c[K>>2]|0;if(!i)i=N;else{c[K>>2]=c[i>>2];c[M>>2]=(c[M>>2]|0)+1;break}}else i=H;c[i>>2]=(c[i>>2]|0)+1;X=39}while(0);if((X|0)==39){X=0;i=_d($,52,0)|0}if(i){k=i;l=k+52|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(l|0));a[i>>0]=114;b[i+34>>1]=-1;c[i+24>>2]=1}}}while(0);r=nj(c[f>>2]|0,m,i)|0;if(r){q=(c[r>>2]|0)+-1|0;l=c[f>>2]|0;o=c[R>>2]|0;p=c[D>>2]|0;e:do if(o){m=Sv(p|0,0,1,0)|0;n=L()|0;f:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))X=54;else{m=0;break e}else{do if(0<0|(0==0?p>>>0<(e[l+276>>1]|0)>>>0:0)){k=l+300|0;i=c[k>>2]|0;if(i|0){c[k>>2]=c[i>>2];n=l+284|0;c[n>>2]=(c[n>>2]|0)+1;break f}k=l+296|0;i=c[k>>2]|0;if(!i){i=l+292|0;break}else{c[k>>2]=c[i>>2];n=l+284|0;c[n>>2]=(c[n>>2]|0)+1;break f}}else i=l+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;X=54}while(0);if((X|0)==54){X=0;i=_d(l,m,n)|0}if(i){ew(i|0,o|0,p|0)|0;a[i+p>>0]=0;m=i}else m=0}else m=0;while(0);c[r+4+(q*20|0)+4>>2]=m;if((d[J>>0]|0)>1){l=c[f>>2]|0;g:do if(!l){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](16)|0;X=81;break}i=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){q=c[14978]|0;p=Tv(k|0,l|0,i|0,((i|0)<0)<<31>>31|0)|0;o=L()|0;c[14768]=((o|0)<0|(o|0)==0&p>>>0<=q>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){i=r;break b}k=Wa[c[29352>>2]&127](i)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0<=(c[14987]|0)>>>0)break;c[14987]=k}else{if(c[l+272>>2]|0){if(a[l+81>>0]|0){i=r;break b}}else{do if((e[l+276>>1]|0)>=16){k=l+300|0;i=c[k>>2]|0;if(i|0){c[k>>2]=c[i>>2];X=l+284|0;c[X>>2]=(c[X>>2]|0)+1;X=81;break g}k=l+296|0;i=c[k>>2]|0;if(!i){i=l+292|0;break}else{c[k>>2]=c[i>>2];X=l+284|0;c[X>>2]=(c[X>>2]|0)+1;X=81;break g}}else i=l+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(l,16,0)|0;X=81}while(0);if((X|0)==81){X=0;if(!i){i=r;break}}o=i+4|0;p=o;a[p>>0]=0;a[p+1>>0]=0;a[p+2>>0]=0;a[p+3>>0]=0;o=o+4|0;a[o>>0]=0;a[o+1>>0]=0;a[o+2>>0]=0;a[o+3>>0]=0;c[i>>2]=m;o=R;p=c[o+4>>2]|0;q=i+4|0;c[q>>2]=c[o>>2];c[q+4>>2]=p;c[i+12>>2]=c[O>>2];c[O>>2]=i;i=r}else i=r}else i=0}else i=m;while(0);t=t+1|0;if((t|0)>=(c[u>>2]|0)){t=i;break}else m=i}}else{s=0;t=0;j=0}i=c[T>>2]|0;do if(i|0){if($|0){if(c[$+480>>2]|0){Xd($,i);break}T=i;if((c[$+304>>2]|0)>>>0<=T>>>0?(c[$+308>>2]|0)>>>0>T>>>0:0){T=$+300|0;c[i>>2]=c[T>>2];c[T>>2]=i;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{T=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-T;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);o=c[c[h>>2]>>2]|0;if(!o)n=0;else n=(Eu(o)|0)&1073741823;if(U){c[W>>2]=o;c[W+4>>2]=n;c[V>>2]=32436;c[V+4>>2]=29;i=oj($,71,V,0)|0;if(!i)i=nj(c[f>>2]|0,0,0)|0;else{a[i+1>>0]=2;i=nj(c[f>>2]|0,0,i)|0}r=mj(f,i,pj(f,0,W,0)|0,j,0,0,0,0,0)|0;p=0}else{r=0;p=j}q=$+272|0;i=(c[q>>2]|0)+1|0;c[q>>2]=i;m=n+81|0;h:do if(!$){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](m)|0;X=124;break}i=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){W=c[14978]|0;V=Tv(j|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;U=L()|0;c[14768]=((U|0)<0|(U|0)==0&V>>>0<=W>>>0)&1}j=Wa[c[29340>>2]&127](i)|0;if(j){i=Wa[c[29352>>2]&127](j)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0){c[14987]=i;l=j;X=125}else{l=j;X=125}}else{m=0;k=0;i=s;l=0}}else{if(i){if(a[$+81>>0]|0){m=0;k=0;i=s;l=0;break}}else{do if(!(0<0|(0==0?(e[$+276>>1]|0)>>>0>>0:0))){j=$+300|0;i=c[j>>2]|0;if(i|0){c[j>>2]=c[i>>2];X=$+284|0;c[X>>2]=(c[X>>2]|0)+1;X=124;break h}j=$+296|0;i=c[j>>2]|0;if(!i){i=$+292|0;break}else{c[j>>2]=c[i>>2];X=$+284|0;c[X>>2]=(c[X>>2]|0)+1;X=124;break h}}else i=$+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d($,m,0)|0;X=124}while(0);if((X|0)==124)if(!i){m=0;k=0;i=s;l=0}else{l=i;X=125}if((X|0)==125){gw(l|0,0,m|0)|0;k=l+36|0;c[l+28>>2]=k;W=l+80|0;c[l+48>>2]=W;ew(W|0,o|0,n|0)|0;if(!p)i=0;else i=dk($,p,1,0)|0;c[l+52>>2]=i;W=gk($,t,1)|0;c[l+56>>2]=W;W=fk($,r,1)|0;c[l+44>>2]=W;if(!s){m=l;i=0}else{j=ej(f,19,s,0)|0;if(!j)i=0;else i=dk($,j,1,0)|0;c[l+12>>2]=i;m=l;i=j}}c[q>>2]=(c[q>>2]|0)+-1;if(p|0)ni($,p);if(i|0)ni($,i);if(t|0)ri($,t);if(r|0)pi($,r,1);if((a[$+81>>0]|0)!=1){switch(Y<<24>>24){case 7:{i=-125;break}case 10:{if(_)X=159;else i=121;break}default:X=159}if((X|0)==159)i=122;a[k>>0]=i;c[k+4>>2]=m;$=c[g+72>>2]|0;c[m+20>>2]=$;c[m+24>>2]=$;c[Z>>2]=m;a[m+8>>0]=_?122:121;$=l;Ra=aa;return $|0}if(l|0){j=c[l+28>>2]|0;i=c[j+16>>2]|0;if(i|0)ni($,i);i=c[j+20>>2]|0;if(i|0)ri($,i);i=c[j+8>>2]|0;if(i|0)pi($,i,1);i=c[l+12>>2]|0;if(i|0)ni($,i);if(c[$+480>>2]|0){Xd($,m);break}i=l;do if((c[$+304>>2]|0)>>>0<=i>>>0){if((c[$+308>>2]|0)>>>0<=i>>>0)break;$=$+300|0;c[l>>2]=c[$>>2];c[$>>2]=l;break a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{$=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-$;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}}while(0);$=0;Ra=aa;return $|0} -function Sm(d){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,v=0;p=c[d+8>>2]|0;e=c[d+112>>2]|0;if(!e)return;r=(c[d>>2]|0)+16|0;s=d+19|0;t=d+44|0;n=p+108|0;u=p+112|0;o=p+104|0;while(1){j=c[r>>2]|0;k=e+8|0;l=c[k>>2]|0;m=c[e+12>>2]|0;f=a[s>>0]|0;if(!(f<<24>>24)){i=(c[t>>2]|0)+1|0;c[t>>2]=i}else{i=f+-1<<24>>24;a[s>>0]=i;i=c[d+148+((i&255)<<2)>>2]|0}g=m+2|0;f=c[n>>2]|0;h=f+7|0;if((c[u>>2]|0)>(f|0)){c[n>>2]=f+1;v=c[o>>2]|0;a[v+(f*20|0)>>0]=55;b[v+(f*20|0)+2>>1]=0;c[v+(f*20|0)+4>>2]=g;c[v+(f*20|0)+8>>2]=h;c[v+(f*20|0)+12>>2]=m;c[v+(f*20|0)+16>>2]=0;a[v+(f*20|0)+1>>0]=0}else Di(p,55,g,h,m)|0;Gj(d,0,c[k>>2]|0,c[(c[j+(l<<4)+12>>2]|0)+72>>2]|0,109);f=ed(p,5,18320)|0;if(!f){e=14;break}v=m+1|0;c[f+4>>2]=v;c[f+28>>2]=v;c[f+44>>2]=m+-1;c[f+52>>2]=i;c[f+68>>2]=i;c[f+72>>2]=v;b[f+62>>1]=8;if(i|0?(q=a[s>>0]|0,(q&255)<8):0){a[s>>0]=q+1<<24>>24;c[d+148+((q&255)<<2)>>2]=i}e=c[e>>2]|0;if(!e){e=14;break}}if((e|0)==14)return}function Tm(f,g,h,i,j,k,l,m,n,o,p,q,r){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var 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,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;Ja=Ra;Ra=Ra+48|0;T=Ja+16|0;S=Ja+8|0;P=Ja;Q=Ja+20|0;Ha=(l|0)!=0;U=c[f>>2]|0;Ia=f+8|0;s=c[Ia>>2]|0;a:do if(!s){if((c[f+116>>2]|0)==0?(b[U+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[U+272>>2]|0)if(!(a[U+81>>0]|0))Ca=15;else{Ga=0;break a}else{do if((e[U+276>>1]|0)>=224){s=U+300|0;t=c[s>>2]|0;if(t|0){c[s>>2]=c[t>>2];Ga=U+284|0;c[Ga>>2]=(c[Ga>>2]|0)+1;break b}s=U+296|0;t=c[s>>2]|0;if(!t){s=U+292|0;break}else{c[s>>2]=c[t>>2];Ga=U+284|0;c[Ga>>2]=(c[Ga>>2]|0)+1;break b}}else s=U+288|0;while(0);c[s>>2]=(c[s>>2]|0)+1;Ca=15}while(0);if((Ca|0)==15)t=_d(U,224,0)|0;if(!t)Ga=0;else{y=t+104|0;z=y+120|0;do{c[y>>2]=0;y=y+4|0}while((y|0)<(z|0));c[t>>2]=U;s=U+4|0;u=c[s>>2]|0;if(u|0)c[u+4>>2]=t;c[t+8>>2]=u;c[t+4>>2]=0;c[s>>2]=t;c[t+20>>2]=381479589;c[t+12>>2]=f;c[Ia>>2]=t;Di(t,61,0,1,0)|0;Ga=t}}else Ga=s;while(0);t=b[g+42>>1]|0;M=t<<16>>16;Fa=g+36|0;if(!(c[Fa>>2]&32)){Ea=0;Da=1}else{s=g+8|0;while(1){s=c[s>>2]|0;Ea=s+55|0;if(((d[Ea>>0]|d[Ea+1>>0]<<8)&3)==2)break;else s=s+20|0}Ea=s;Da=e[s+50>>1]|0}if(t<<16>>16>0){A=g+40|0;B=(q|0)==0;C=g+4|0;D=n<<24>>24==11;E=k+1|0;F=Ga+108|0;H=Ga+112|0;I=f+56|0;J=f+116|0;K=Ga+104|0;L=Ga+12|0;z=0;do{c:do if((z|0)!=(b[A>>1]|0)){if(!B?(c[q+(z<<2)>>2]|0)<0:0)break;u=c[C>>2]|0;s=a[u+(z<<4)+12>>0]|0;if(s<<24>>24){Ba=D?(s<<24>>24==11?2:s):n;s=Ba&255;if(Ba<<24>>24==5)s=(c[u+(z<<4)+4>>2]|0)==0?2:s;switch((s&255)<<24>>24){case 5:{Ca=33;break}case 2:{t=0;Ca=51;break}case 3:case 1:{t=0;break}default:{s=z+E|0;t=c[F>>2]|0;if((c[H>>2]|0)>(t|0)){c[F>>2]=t+1;Ba=c[K>>2]|0;a[Ba+(t*20|0)>>0]=50;b[Ba+(t*20|0)+2>>1]=0;c[Ba+(t*20|0)+4>>2]=s;c[Ba+(t*20|0)+8>>2]=o;c[Ba+(t*20|0)+12>>2]=0;c[Ba+(t*20|0)+16>>2]=0;a[Ba+(t*20|0)+1>>0]=0;break c}else{Di(Ga,50,s,o,0)|0;break c}}}do if((Ca|0)==33){Ca=0;t=(c[I>>2]|0)+-1|0;c[I>>2]=t;y=z+E|0;s=c[F>>2]|0;if((c[H>>2]|0)>(s|0)){c[F>>2]=s+1;Ba=c[K>>2]|0;a[Ba+(s*20|0)>>0]=51;b[Ba+(s*20|0)+2>>1]=0;c[Ba+(s*20|0)+4>>2]=y;c[Ba+(s*20|0)+8>>2]=t;c[Ba+(s*20|0)+12>>2]=0;c[Ba+(s*20|0)+16>>2]=0;a[Ba+(s*20|0)+1>>0]=0}else Di(Ga,51,y,t,0)|0;s=c[(c[C>>2]|0)+(z<<4)+4>>2]|0;do if(s){if((a[s>>0]|0)!=-88){O=Jj(f,s,y)|0;Ca=43;break}w=c[Ia>>2]|0;s=c[s+28>>2]|0;u=w+108|0;v=c[u>>2]|0;if((c[w+112>>2]|0)>(v|0)){c[u>>2]=v+1;Ba=c[w+104>>2]|0;a[Ba+(v*20|0)>>0]=78;b[Ba+(v*20|0)+2>>1]=0;c[Ba+(v*20|0)+4>>2]=s;c[Ba+(v*20|0)+8>>2]=y;c[Ba+(v*20|0)+12>>2]=0;c[Ba+(v*20|0)+16>>2]=0;a[Ba+(v*20|0)+1>>0]=0;break}else{Di(w,78,s,y,0)|0;break}}else{O=Jj(f,0,y)|0;Ca=43}while(0);do if(((Ca|0)==43?(0,(O|0)!=(y|0)):0)?(N=c[Ia>>2]|0,N|0):0){s=N+108|0;u=c[s>>2]|0;if((c[N+112>>2]|0)>(u|0)){c[s>>2]=u+1;Ca=c[N+104>>2]|0;a[Ca+(u*20|0)>>0]=79;b[Ca+(u*20|0)+2>>1]=0;c[Ca+(u*20|0)+4>>2]=O;c[Ca+(u*20|0)+8>>2]=y;c[Ca+(u*20|0)+12>>2]=0;c[Ca+(u*20|0)+16>>2]=0;a[Ca+(u*20|0)+1>>0]=0;break}else{Di(N,79,O,y,0)|0;break}}while(0);s=c[F>>2]|0;if((c[H>>2]|0)>(s|0)){c[F>>2]=s+1;Ca=c[K>>2]|0;a[Ca+(s*20|0)>>0]=51;b[Ca+(s*20|0)+2>>1]=0;c[Ca+(s*20|0)+4>>2]=y;c[Ca+(s*20|0)+8>>2]=t;c[Ca+(s*20|0)+12>>2]=0;c[Ca+(s*20|0)+16>>2]=0;a[Ca+(s*20|0)+1>>0]=0;s=2;Ca=51;break}else{Di(Ga,51,y,t,0)|0;s=2;Ca=51;break}}while(0);if((Ca|0)==51){Ca=0;u=c[J>>2]|0;a[((u|0)==0?f:u)+21>>0]=1;u=c[C>>2]|0}w=c[u+(z<<4)>>2]|0;c[P>>2]=c[g>>2];c[P+4>>2]=w;w=dd(U,40358,P)|0;u=z+E|0;v=c[F>>2]|0;if((c[H>>2]|0)>(v|0)){c[F>>2]=v+1;Ba=c[K>>2]|0;a[Ba+(v*20|0)>>0]=68;b[Ba+(v*20|0)+2>>1]=0;c[Ba+(v*20|0)+4>>2]=1299;c[Ba+(v*20|0)+8>>2]=s;c[Ba+(v*20|0)+12>>2]=u;c[Ba+(v*20|0)+16>>2]=0;a[Ba+(v*20|0)+1>>0]=0}else Di(Ga,68,1299,s,u)|0;s=c[Ga>>2]|0;do if(a[s+81>>0]|0){if(w|0){if(s|0){if(c[s+480>>2]|0){Xd(s,w);break}Ba=w;if((c[s+304>>2]|0)>>>0<=Ba>>>0?(c[s+308>>2]|0)>>>0>Ba>>>0:0){Ba=s+300|0;c[w>>2]=c[Ba>>2];c[Ba>>2]=w;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](w);break}else{Ba=Wa[c[29352>>2]&127](w)|0;c[14978]=(c[14978]|0)-Ba;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](w);break}}}else{Aa=c[K>>2]|0;Ba=(c[F>>2]|0)+-1|0;a[Aa+(Ba*20|0)+1>>0]=-7;c[Aa+(Ba*20|0)+16>>2]=w}while(0);u=c[F>>2]|0;if((u|0)>0)b[(c[K>>2]|0)+((u+-1|0)*20|0)+2>>1]=1;if(t|0){v=c[L>>2]|0;s=~t;if(((c[v+56>>2]|0)+(c[v+60>>2]|0)|0)<0){mk(v,Ga,s);break}else{c[(c[v+64>>2]|0)+(s<<2)>>2]=u;break}}}}while(0);z=z+1|0}while((z|0)!=(M|0))}B=c[g+24>>2]|0;if(B|0?(0==0?(c[U+32>>2]&512|0)==0:0):0){C=f+52|0;c[C>>2]=~k;t=n<<24>>24==11?2:n&255;d:do if((c[B>>2]|0)>0){D=f+56|0;y=Q+20|0;z=Q+4|0;A=Q+24|0;E=Ga+108|0;F=Ga+112|0;H=Ga+12|0;I=Ga+104|0;if(!q){w=0;while(1){Aa=c[B+4+(w*20|0)>>2]|0;v=c[D>>2]|0;Ba=v+-1|0;c[D>>2]=Ba;tk(f,Aa,Ba,16);do if((t|0)==4){s=c[E>>2]|0;if((c[F>>2]|0)>(s|0)){c[E>>2]=s+1;t=c[I>>2]|0;a[t+(s*20|0)>>0]=11;b[t+(s*20|0)+2>>1]=0;c[t+(s*20|0)+4>>2]=0;c[t+(s*20|0)+8>>2]=o;c[t+(s*20|0)+12>>2]=0;c[t+(s*20|0)+16>>2]=0;a[t+(s*20|0)+1>>0]=0;t=4;break}else{Di(Ga,11,0,o,0)|0;t=4;break}}else{s=c[B+4+(w*20|0)+4>>2]|0;if(!s)s=c[g>>2]|0;t=(t|0)==5?2:t;Uj(f,275,t,s,0,3)}while(0);u=c[H>>2]|0;s=0-v|0;if(((c[u+56>>2]|0)+(c[u+60>>2]|0)|0)<0)mk(u,Ga,s);else c[(c[u+64>>2]|0)+(s<<2)>>2]=c[E>>2];w=w+1|0;if((w|0)>=(c[B>>2]|0))break d}}if(!(m<<24>>24)){w=0;do{s=c[B+4+(w*20|0)>>2]|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;c[z>>2]=136;c[A>>2]=q;do if((s|0)!=0?(_j(Q,s)|0,(a[y>>0]&-3)<<24>>24!=0):0){v=c[D>>2]|0;Ba=v+-1|0;c[D>>2]=Ba;tk(f,s,Ba,16);do if((t|0)==4){s=c[E>>2]|0;if((c[F>>2]|0)>(s|0)){c[E>>2]=s+1;t=c[I>>2]|0;a[t+(s*20|0)>>0]=11;b[t+(s*20|0)+2>>1]=0;c[t+(s*20|0)+4>>2]=0;c[t+(s*20|0)+8>>2]=o;c[t+(s*20|0)+12>>2]=0;c[t+(s*20|0)+16>>2]=0;a[t+(s*20|0)+1>>0]=0;t=4;break}else{Di(Ga,11,0,o,0)|0;t=4;break}}else{s=c[B+4+(w*20|0)+4>>2]|0;if(!s)s=c[g>>2]|0;t=(t|0)==5?2:t;Uj(f,275,t,s,0,3)}while(0);u=c[H>>2]|0;s=0-v|0;if(((c[u+56>>2]|0)+(c[u+60>>2]|0)|0)<0){mk(u,Ga,s);break}else{c[(c[u+64>>2]|0)+(s<<2)>>2]=c[E>>2];break}}while(0);w=w+1|0}while((w|0)<(c[B>>2]|0))}else{w=0;do{s=c[B+4+(w*20|0)>>2]|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;c[z>>2]=136;c[A>>2]=q;do if((s|0)!=0?(_j(Q,s)|0,(a[y>>0]|0)!=0):0){v=c[D>>2]|0;Ba=v+-1|0;c[D>>2]=Ba;tk(f,s,Ba,16);do if((t|0)==4){s=c[E>>2]|0;if((c[F>>2]|0)>(s|0)){c[E>>2]=s+1;t=c[I>>2]|0;a[t+(s*20|0)>>0]=11;b[t+(s*20|0)+2>>1]=0;c[t+(s*20|0)+4>>2]=0;c[t+(s*20|0)+8>>2]=o;c[t+(s*20|0)+12>>2]=0;c[t+(s*20|0)+16>>2]=0;a[t+(s*20|0)+1>>0]=0;t=4;break}else{Di(Ga,11,0,o,0)|0;t=4;break}}else{s=c[B+4+(w*20|0)+4>>2]|0;if(!s)s=c[g>>2]|0;t=(t|0)==5?2:t;Uj(f,275,t,s,0,3)}while(0);u=c[H>>2]|0;s=0-v|0;if(((c[u+56>>2]|0)+(c[u+60>>2]|0)|0)<0){mk(u,Ga,s);break}else{c[(c[u+64>>2]|0)+(s<<2)>>2]=c[E>>2];break}}while(0);w=w+1|0}while((w|0)<(c[B>>2]|0))}}while(0);c[C>>2]=0}do if(r)if(c[r>>2]|0){t=c[r+16>>2]|0;if(t){s=Ga+108|0;u=c[s>>2]|0;if((c[Ga+112>>2]|0)>(u|0)){c[s>>2]=u+1;y=c[Ga+104>>2]|0;a[y+(u*20|0)>>0]=11;y=y+(u*20|0)+1|0;z=y+19|0;do{a[y>>0]=0;y=y+1|0}while((y|0)<(z|0));Ba=t;Aa=u;break}else{Ba=t;Aa=Di(Ga,11,0,0,0)|0;break}}else{Ba=0;Aa=0}}else{n=4;r=0;Ba=0;Aa=0}else{r=0;Ba=0;Aa=0}while(0);if(m<<24>>24!=0&(Ea|0)==0){t=f+56|0;D=c[t>>2]|0;v=D+-1|0;c[t>>2]=v;t=a[g+48>>0]|0;s=n&255;t=n<<24>>24==11?(t<<24>>24==11?2:t&255):s;if((r|0)!=0?(c[r+16>>2]|0)==0:0){E=0;t=(c[r+8>>2]|0)==0?4:6}else Ca=135;do if((Ca|0)==135)if(!((t|0)!=5|(t|0)==(s|0)))if(c[g+8>>2]|0){s=Ga+108|0;t=c[s>>2]|0;if((c[Ga+112>>2]|0)>(t|0)){u=t+1|0;c[s>>2]=u;y=c[Ga+104>>2]|0;a[y+(t*20|0)>>0]=11;y=y+(t*20|0)+1|0;z=y+19|0;do{a[y>>0]=0;y=y+1|0}while((y|0)<(z|0));E=u;t=5;break}else{E=(Di(Ga,11,0,0,0)|0)+1|0;t=5;break}}else{E=0;t=5}else E=0;while(0);C=Ga+108|0;s=c[C>>2]|0;B=Ga+112|0;if(Ha){if((c[B>>2]|0)>(s|0)){c[C>>2]=s+1;za=c[Ga+104>>2]|0;a[za+(s*20|0)>>0]=53;b[za+(s*20|0)+2>>1]=0;c[za+(s*20|0)+4>>2]=k;c[za+(s*20|0)+8>>2]=v;c[za+(s*20|0)+12>>2]=l;c[za+(s*20|0)+16>>2]=0;a[za+(s*20|0)+1>>0]=0}else Di(Ga,53,k,v,l)|0;s=c[C>>2]|0;if((s|0)>0)b[(c[Ga+104>>2]|0)+((s+-1|0)*20|0)+2>>1]=144}if((c[B>>2]|0)>(s|0)){c[C>>2]=s+1;za=c[Ga+104>>2]|0;a[za+(s*20|0)>>0]=31;b[za+(s*20|0)+2>>1]=0;c[za+(s*20|0)+4>>2]=i;c[za+(s*20|0)+8>>2]=v;c[za+(s*20|0)+12>>2]=k;c[za+(s*20|0)+16>>2]=0;a[za+(s*20|0)+1>>0]=0}else Di(Ga,31,i,v,k)|0;e:do switch(t|0){case 3:case 2:case 1:{Ca=151;break}case 5:{s=c[f>>2]|0;A=c[s+32>>2]|0;do if(!((0==0?(c[U+32>>2]&8192|0)==0:0)|(A&262144|0)==0&0==0)?(R=c[(c[s+16>>2]|0)+28>>2]|0,(a[f+146>>0]|0)==0):0){z=c[g+72>>2]|0;if((z|0)!=(R|0)?(x=c[R+48>>2]|0,(x|0)!=0):0){y=g+68|0;s=0;do{w=c[x+8>>2]|0;do if((c[w+24>>2]|0)==(z|0)){u=c[w+4>>2]|0;v=c[g>>2]|0;za=a[u>>0]|0;t=(d[208+(za&255)>>0]|0)-(d[208+(d[v>>0]|0)>>0]|0)|0;if(!(za<<24>>24==0|(t|0)!=0))do{u=u+1|0;v=v+1|0;za=a[u>>0]|0;t=(d[208+(za&255)>>0]|0)-(d[208+(d[v>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(t|0)!=0));if(t|0)break;if(!s)s=c[y>>2]|0;c[w+32>>2]=s;s=w}while(0);x=c[x>>2]|0}while((x|0)!=0);if(!s)Ca=170}else Ca=170;if((Ca|0)==170){s=c[g+68>>2]|0;if(!s){Ca=176;break}}t=0;u=s;do{if((a[u+8>>0]|0)==121)t=t|d[u+9>>0];u=c[u+32>>2]|0}while((u|0)!=0);if((s|0)==0|(t|0)==0)Ca=176}else Ca=176;while(0);do if((Ca|0)==176){if(!((A&16384|0)==0&0==0)){y=c[g>>2]|0;v=c[g+72>>2]|0;w=c[v+68>>2]|0;if(!w){t=v+60|0;s=v+64|0}else{t=a[y>>0]|0;if(!(t<<24>>24))s=0;else{s=0;u=y;do{u=u+1|0;s=G(s+(d[208+(t&255)>>0]|0)|0,-1640531535)|0;t=a[u>>0]|0}while(t<<24>>24!=0)}s=(s>>>0)%((c[v+56>>2]|0)>>>0)|0;t=w+(s<<3)|0;s=w+(s<<3)+4|0}t=c[t>>2]|0;f:do if(!t)s=59292;else{x=d[208+(d[y>>0]|0)>>0]|0;while(1){s=c[s>>2]|0;t=t+-1|0;v=c[s+12>>2]|0;za=a[v>>0]|0;u=(d[208+(za&255)>>0]|0)-x|0;if(!(za<<24>>24==0|(u|0)!=0)){w=y;do{v=v+1|0;w=w+1|0;za=a[v>>0]|0;u=(d[208+(za&255)>>0]|0)-(d[208+(d[w>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(u|0)!=0))}if(!u)break f;if(!t){s=59292;break}}}while(0);if(c[s+8>>2]|0){s=0;break}if(c[g+16>>2]|0){s=0;break}}if(!(c[g+8>>2]|0)){u=1;break e}u=c[f+116>>2]|0;a[((u|0)==0?f:u)+20>>0]=1;Mm(f,g,i,j,0,-1);u=1;break e}while(0);u=c[f+116>>2]|0;a[((u|0)==0?f:u)+20>>0]=1;Im(f,g,s,i,j,k,1,0,5,1,-1);u=1;break}case 6:{za=r+8|0;Ca=r+12|0;tj(f,ik(c[f>>2]|0,c[r+20>>2]|0,0)|0,c[za>>2]|0,c[Ca>>2]|0,2,r);c[za>>2]=0;c[Ca>>2]=0;Ca=196;break}case 4:{Ca=196;break}default:{t=2;Ca=151}}while(0);do if((Ca|0)==151){s=b[g+40>>1]|0;v=c[f>>2]|0;u=c[g>>2]|0;if(s<<16>>16>-1){s=c[(c[g+4>>2]|0)+(s<<16>>16<<4)>>2]|0;c[S>>2]=u;c[S+4>>2]=s;u=1555;s=dd(v,40358,S)|0}else{c[T>>2]=u;u=2579;s=dd(v,44808,T)|0}Uj(f,u,t,s,-7,2);u=0}else if((Ca|0)==196){s=c[C>>2]|0;if((c[B>>2]|0)>(s|0)){c[C>>2]=s+1;u=c[Ga+104>>2]|0;a[u+(s*20|0)>>0]=11;b[u+(s*20|0)+2>>1]=0;c[u+(s*20|0)+4>>2]=0;c[u+(s*20|0)+8>>2]=o;c[u+(s*20|0)+12>>2]=0;c[u+(s*20|0)+16>>2]=0;a[u+(s*20|0)+1>>0]=0;u=0;break}else{Di(Ga,11,0,o,0)|0;u=0;break}}while(0);t=c[Ga+12>>2]|0;s=0-D|0;if(((c[t+56>>2]|0)+(c[t+60>>2]|0)|0)<0)mk(t,Ga,s);else c[(c[t+64>>2]|0)+(s<<2)>>2]=c[C>>2];if(!E){v=0;za=0}else{v=c[C>>2]|0;if((c[B>>2]|0)>(v|0)){c[C>>2]=v+1;y=c[Ga+104>>2]|0;a[y+(v*20|0)>>0]=11;y=y+(v*20|0)+1|0;z=y+19|0;do{a[y>>0]=0;y=y+1|0}while((y|0)<(z|0))}else v=Di(Ga,11,0,0,0)|0;t=c[C>>2]|0;if(!(a[(c[Ga>>2]|0)+81>>0]|0))s=(c[Ga+104>>2]|0)+((((E|0)<1?t:E)+-1|0)*20|0)|0;else s=59308;c[s+8>>2]=t;za=E}}else{u=0;v=0;za=0}na=g+8|0;s=c[na>>2]|0;if(s){oa=Aa+1|0;pa=Ga+108|0;qa=Ga+112|0;ra=(Ba|0)==0;sa=f+56|0;ta=Ga+104|0;ua=k+1|0;va=(Aa|0)<0;wa=g+40|0;xa=~k;ya=f+52|0;ja=m<<24>>24==0;ka=Ga+12|0;la=n<<24>>24==11;ma=r+8|0;U=U+32|0;V=g+16|0;T=f+146|0;W=(Da|0)==1;m=g+72|0;X=f+19|0;Y=f+32|0;Z=f+28|0;_=g+68|0;$=r+28|0;aa=f+44|0;ba=Ea+50|0;ca=Da&65535;da=f+116|0;ea=r+20|0;fa=r+12|0;ga=Ea+4|0;ha=Ea+32|0;ia=l+1|0;S=0;w=0;t=0;while(1){H=h+(S<<2)|0;g:do if(c[H>>2]|0){Q=(Ba|0)==(s|0);if(Q){w=c[pa>>2]|0;if((c[qa>>2]|0)>(w|0)){c[pa>>2]=w+1;y=c[ta>>2]|0;a[y+(w*20|0)>>0]=11;y=y+(w*20|0)+1|0;z=y+19|0;do{a[y>>0]=0;y=y+1|0}while((y|0)<(z|0));y=w}else y=Di(Ga,11,0,0,0)|0;x=c[pa>>2]|0;if(!(a[(c[Ga>>2]|0)+81>>0]|0))w=(c[ta>>2]|0)+((va?x+-1|0:Aa)*20|0)|0;else w=59308;c[w+8>>2]=x;q=oa}else{q=(c[sa>>2]|0)+-1|0;c[sa>>2]=q;y=w}if((ra|Q)&t<<24>>24==0){zk(Ga,g,ua);R=1}else R=t;O=S+j|0;t=s+36|0;if(c[t>>2]|0){w=c[H>>2]|0;x=c[pa>>2]|0;if((c[qa>>2]|0)>(x|0)){c[pa>>2]=x+1;P=c[ta>>2]|0;a[P+(x*20|0)>>0]=73;b[P+(x*20|0)+2>>1]=0;c[P+(x*20|0)+4>>2]=0;c[P+(x*20|0)+8>>2]=w;c[P+(x*20|0)+12>>2]=0;c[P+(x*20|0)+16>>2]=0;a[P+(x*20|0)+1>>0]=0}else Di(Ga,73,0,w,0)|0;c[ya>>2]=xa;t=c[t>>2]|0;w=c[f>>2]|0;if(!t)t=0;else t=dk(w,t,0,0)|0;if(!(a[w+81>>0]|0))Tj(f,t,q,16);if(t|0)ni(w,t);c[ya>>2]=0}t=c[H>>2]|0;P=t+1|0;N=s+52|0;if(!(b[N>>1]|0))x=0;else{E=s+4|0;F=s+40|0;D=0;do{t=b[(c[E>>2]|0)+(D<<1)>>1]|0;switch(t<<16>>16){case -2:{c[ya>>2]=xa;t=c[(c[F>>2]|0)+4+(D*20|0)>>2]|0;A=D+P|0;C=c[f>>2]|0;if(!t)B=0;else B=dk(C,t,0,0)|0;h:do if(!(a[C+81>>0]|0)){do if(B){if((a[B>>0]|0)!=-88){z=Jj(f,B,A)|0;break}t=c[Ia>>2]|0;w=c[B+28>>2]|0;x=t+108|0;z=c[x>>2]|0;if((c[t+112>>2]|0)>(z|0)){c[x>>2]=z+1;Ca=c[t+104>>2]|0;a[Ca+(z*20|0)>>0]=78;b[Ca+(z*20|0)+2>>1]=0;c[Ca+(z*20|0)+4>>2]=w;c[Ca+(z*20|0)+8>>2]=A;c[Ca+(z*20|0)+12>>2]=0;c[Ca+(z*20|0)+16>>2]=0;a[Ca+(z*20|0)+1>>0]=0;Ca=252;break h}else{Di(t,78,w,A,0)|0;Ca=252;break h}}else z=Jj(f,0,A)|0;while(0);if((z|0)==(A|0)){Ca=251;break}t=c[Ia>>2]|0;if(!t){Ca=251;break}w=t+108|0;x=c[w>>2]|0;if((c[t+112>>2]|0)>(x|0)){c[w>>2]=x+1;Ca=c[t+104>>2]|0;a[Ca+(x*20|0)>>0]=79;b[Ca+(x*20|0)+2>>1]=0;c[Ca+(x*20|0)+4>>2]=z;c[Ca+(x*20|0)+8>>2]=A;c[Ca+(x*20|0)+12>>2]=0;c[Ca+(x*20|0)+16>>2]=0;a[Ca+(x*20|0)+1>>0]=0;Ca=251;break}else{Di(t,79,z,A,0)|0;Ca=251;break}}else Ca=251;while(0);if((Ca|0)==251?(Ca=0,B|0):0)Ca=252;if((Ca|0)==252){Ca=0;ni(C,B)}c[ya>>2]=0;break}case -1:{z=k;Ca=255;break}default:{z=t<<16>>16==(b[wa>>1]|0)?k:ua+(t<<16>>16)|0;Ca=255}}do if((Ca|0)==255){Ca=0;x=((t&65535)>>>15)+79<<16>>16;t=D+P|0;w=c[pa>>2]|0;if((c[qa>>2]|0)>(w|0)){c[pa>>2]=w+1;M=c[ta>>2]|0;a[M+(w*20|0)>>0]=x;b[M+(w*20|0)+2>>1]=0;c[M+(w*20|0)+4>>2]=z;c[M+(w*20|0)+8>>2]=t;c[M+(w*20|0)+12>>2]=0;c[M+(w*20|0)+16>>2]=0;a[M+(w*20|0)+1>>0]=0;break}else{Di(Ga,x&65535,z,t,0)|0;break}}while(0);D=D+1|0;t=b[N>>1]|0}while(D>>>0<(t&65535)>>>0);x=t&65535;t=c[H>>2]|0}w=c[pa>>2]|0;if((c[qa>>2]|0)>(w|0)){c[pa>>2]=w+1;M=c[ta>>2]|0;a[M+(w*20|0)>>0]=92;b[M+(w*20|0)+2>>1]=0;c[M+(w*20|0)+4>>2]=P;c[M+(w*20|0)+8>>2]=x;c[M+(w*20|0)+12>>2]=t;c[M+(w*20|0)+16>>2]=0;a[M+(w*20|0)+1>>0]=0}else Di(Ga,92,P,x,t)|0;F=(Ea|0)==(s|0);if(ja&(Ha&F)){w=c[ka>>2]|0;t=~q;if(((c[w+56>>2]|0)+(c[w+60>>2]|0)|0)<0){mk(w,Ga,t);w=y;t=R;break}else{c[(c[w+64>>2]|0)+(t<<2)>>2]=c[pa>>2];w=y;t=R;break}}t=a[s+54>>0]|0;if(!(t<<24>>24)){w=c[ka>>2]|0;t=~q;if(((c[w+56>>2]|0)+(c[w+60>>2]|0)|0)<0){mk(w,Ga,t);w=y;t=R;break}else{c[(c[w+64>>2]|0)+(t<<2)>>2]=c[pa>>2];w=y;t=R;break}}if(Q)E=(c[ma>>2]|0)==0?4:6;else E=(la?(t<<24>>24==11?2:t):n)&255;i:do if(!S){if(!(F&(E|0)==5&(c[s+20>>2]|0)==0))break;D=c[U>>2]|0;do if(!((D&8192|0)==0&0==0)){t=c[f>>2]|0;if(0==0?(c[t+32>>2]&262144|0)==0:0)break;t=c[(c[t+16>>2]|0)+28>>2]|0;if(a[T>>0]|0)break;C=c[m>>2]|0;do if((C|0)!=(t|0)){t=c[t+48>>2]|0;if(!t){Ca=291;break}B=t;t=0;do{A=c[B+8>>2]|0;do if((c[A+24>>2]|0)==(C|0)){x=c[A+4>>2]|0;z=c[g>>2]|0;M=a[x>>0]|0;w=(d[208+(M&255)>>0]|0)-(d[208+(d[z>>0]|0)>>0]|0)|0;if(!(M<<24>>24==0|(w|0)!=0))do{x=x+1|0;z=z+1|0;M=a[x>>0]|0;w=(d[208+(M&255)>>0]|0)-(d[208+(d[z>>0]|0)>>0]|0)|0}while(!(M<<24>>24==0|(w|0)!=0));if(w|0)break;if(!t)t=c[_>>2]|0;c[A+32>>2]=t;t=A}while(0);B=c[B>>2]|0}while((B|0)!=0);if(!t)Ca=291}else Ca=291;while(0);if((Ca|0)==291){Ca=0;t=c[_>>2]|0;if(!t)break}w=0;x=t;do{if((a[x+8>>0]|0)==121)w=w|d[x+9>>0];x=c[x+32>>2]|0}while((x|0)!=0);if(!((t|0)==0|(w|0)==0))break i}while(0);if(!((D&16384|0)==0&0==0)){if(c[V>>2]|0)break;C=c[g>>2]|0;z=c[m>>2]|0;A=c[z+68>>2]|0;if(!A){w=z+60|0;t=z+64|0}else{w=a[C>>0]|0;if(!(w<<24>>24))t=0;else{t=0;x=C;do{x=x+1|0;t=G(t+(d[208+(w&255)>>0]|0)|0,-1640531535)|0;w=a[x>>0]|0}while(w<<24>>24!=0)}t=(t>>>0)%((c[z+56>>2]|0)>>>0)|0;w=A+(t<<3)|0;t=A+(t<<3)+4|0}w=c[w>>2]|0;j:do if(!w)t=59292;else{B=d[208+(d[C>>0]|0)>>0]|0;while(1){t=c[t>>2]|0;w=w+-1|0;z=c[t+12>>2]|0;M=a[z>>0]|0;x=(d[208+(M&255)>>0]|0)-B|0;if(!(M<<24>>24==0|(x|0)!=0)){A=C;do{z=z+1|0;A=A+1|0;M=a[z>>0]|0;x=(d[208+(M&255)>>0]|0)-(d[208+(d[A>>0]|0)>>0]|0)|0}while(!(M<<24>>24==0|(x|0)!=0))}if(!x)break j;if(!w){t=59292;break}}}while(0);if(c[t+8>>2]|0)break}w=c[ka>>2]|0;t=~q;if(((c[w+56>>2]|0)+(c[w+60>>2]|0)|0)<0){mk(w,Ga,t);w=y;t=R;break g}else{c[(c[w+64>>2]|0)+(t<<2)>>2]=c[pa>>2];w=y;t=R;break g}}while(0);w=e[s+50>>1]|0;t=c[pa>>2]|0;if((c[qa>>2]|0)>(t|0)){c[pa>>2]=t+1;M=c[ta>>2]|0;a[M+(t*20|0)>>0]=27;b[M+(t*20|0)+2>>1]=0;c[M+(t*20|0)+4>>2]=O;c[M+(t*20|0)+8>>2]=q;c[M+(t*20|0)+12>>2]=P;c[M+(t*20|0)+16>>2]=0;a[M+(t*20|0)+1>>0]=0}else t=Di(Ga,27,O,q,P)|0;if(!(a[(c[Ga>>2]|0)+81>>0]|0)){M=c[ta>>2]|0;a[M+(t*20|0)+1>>0]=-3;c[M+(t*20|0)+16>>2]=w}do if(!F)if(W){t=a[X>>0]|0;if(!(t<<24>>24)){M=(c[aa>>2]|0)+1|0;c[aa>>2]=M;break}else{M=t+-1<<24>>24;a[X>>0]=M;M=c[f+148+((M&255)<<2)>>2]|0;break}}else{t=c[Y>>2]|0;w=c[Z>>2]|0;if((w|0)<(Da|0)){M=c[aa>>2]|0;c[aa>>2]=M+Da;M=M+1|0;break}else{c[Y>>2]=t+Da;c[Z>>2]=w-Da;M=t;break}}else M=P;while(0);do if(Ha|(E|0)==5){if(!(c[Fa>>2]&32)){t=c[pa>>2]|0;if((c[qa>>2]|0)>(t|0)){c[pa>>2]=t+1;L=c[ta>>2]|0;a[L+(t*20|0)>>0]=-121;b[L+(t*20|0)+2>>1]=0;c[L+(t*20|0)+4>>2]=O;c[L+(t*20|0)+8>>2]=M;c[L+(t*20|0)+12>>2]=0;c[L+(t*20|0)+16>>2]=0;a[L+(t*20|0)+1>>0]=0}else Di(Ga,135,O,M,0)|0;if(!Ha)break;t=c[pa>>2]|0;if((c[qa>>2]|0)>(t|0)){c[pa>>2]=t+1;L=c[ta>>2]|0;a[L+(t*20|0)>>0]=53;b[L+(t*20|0)+2>>1]=0;c[L+(t*20|0)+4>>2]=M;c[L+(t*20|0)+8>>2]=q;c[L+(t*20|0)+12>>2]=l;c[L+(t*20|0)+16>>2]=0;a[L+(t*20|0)+1>>0]=0}else Di(Ga,53,M,q,l)|0;t=c[pa>>2]|0;if((t|0)<=0)break;b[(c[ta>>2]|0)+((t+-1|0)*20|0)+2>>1]=144;break}do if(!F){if(!(b[ba>>1]|0))break;B=s+4|0;A=0;do{x=b[(c[ga>>2]|0)+(A<<1)>>1]|0;t=b[N>>1]|0;k:do if(!(t<<16>>16))t=-1;else{z=c[B>>2]|0;w=t&65535;t=0;while(1){if((b[z+(t<<1)>>1]|0)==x<<16>>16)break k;t=t+1|0;if(t>>>0>=w>>>0){t=-1;break}}}while(0);t=t<<16>>16;w=A+M|0;x=c[pa>>2]|0;if((c[qa>>2]|0)>(x|0)){c[pa>>2]=x+1;L=c[ta>>2]|0;a[L+(x*20|0)>>0]=90;b[L+(x*20|0)+2>>1]=0;c[L+(x*20|0)+4>>2]=O;c[L+(x*20|0)+8>>2]=t;c[L+(x*20|0)+12>>2]=w;c[L+(x*20|0)+16>>2]=0;a[L+(x*20|0)+1>>0]=0}else Di(Ga,90,O,t,w)|0;A=A+1|0}while(A>>>0<(e[ba>>1]|0)>>>0)}while(0);if(!Ha)break;D=s+55|0;D=((d[D>>0]|d[D+1>>0]<<8)&3)==2?P:M;t=b[ba>>1]|0;if(!(t<<16>>16))break;C=52;A=(c[pa>>2]|0)+(t&65535)|0;B=0;do{t=c[(c[ha>>2]|0)+(B<<2)>>2]|0;x=c[f>>2]|0;w=a[x+78>>0]|0;L=a[x+165>>0]|0;x=Zi(x,w,t,L&255)|0;do if(!(L<<24>>24)){if(!x){x=_i(f,w,0,t)|0;break}if(c[x+12>>2]|0)break;x=_i(f,w,x,t)|0}while(0);w=(B|0)==((e[ba>>1]|0)+-1|0);A=w?q:A;C=w?53:C;w=ia+(b[(c[ga>>2]|0)+(B<<1)>>1]|0)|0;z=B+D|0;t=c[pa>>2]|0;if((c[qa>>2]|0)>(t|0)){c[pa>>2]=t+1;L=c[ta>>2]|0;a[L+(t*20|0)>>0]=C;b[L+(t*20|0)+2>>1]=0;c[L+(t*20|0)+4>>2]=w;c[L+(t*20|0)+8>>2]=A;c[L+(t*20|0)+12>>2]=z;c[L+(t*20|0)+16>>2]=0;a[L+(t*20|0)+1>>0]=0}else t=Di(Ga,C,w,A,z)|0;do if(!(a[(c[Ga>>2]|0)+81>>0]|0)){if((t|0)<0)t=(c[pa>>2]|0)+-1|0;w=c[ta>>2]|0;z=w+(t*20|0)+1|0;if(a[z>>0]|0){Ei(Ga,w+(t*20|0)|0,x,-2);break}if(!x)break;c[w+(t*20|0)+16>>2]=x;a[z>>0]=-2}while(0);t=c[pa>>2]|0;if((t|0)>0)b[(c[ta>>2]|0)+((t+-1|0)*20|0)+2>>1]=144;B=B+1|0}while(B>>>0<(e[ba>>1]|0)>>>0)}while(0);switch((E&255)<<24>>24){case 3:case 2:case 1:{fl(f,E,s);break}case 6:{K=c[Ia>>2]|0;L=c[f>>2]|0;J=c[$>>2]|0;do if((J|0)!=(O|0)){if(!(c[Fa>>2]&32)){t=a[X>>0]|0;if(!(t<<24>>24)){z=(c[aa>>2]|0)+1|0;c[aa>>2]=z}else{z=t+-1<<24>>24;a[X>>0]=z;z=c[f+148+((z&255)<<2)>>2]|0}w=K+108|0;t=c[w>>2]|0;x=K+112|0;if((c[x>>2]|0)>(t|0)){c[w>>2]=t+1;Ca=c[K+104>>2]|0;a[Ca+(t*20|0)>>0]=-121;b[Ca+(t*20|0)+2>>1]=0;c[Ca+(t*20|0)+4>>2]=O;c[Ca+(t*20|0)+8>>2]=z;c[Ca+(t*20|0)+12>>2]=0;c[Ca+(t*20|0)+16>>2]=0;a[Ca+(t*20|0)+1>>0]=0}else Di(K,135,O,z,0)|0;t=c[w>>2]|0;if((c[x>>2]|0)>(t|0)){c[w>>2]=t+1;Ca=c[K+104>>2]|0;a[Ca+(t*20|0)>>0]=30;b[Ca+(t*20|0)+2>>1]=0;c[Ca+(t*20|0)+4>>2]=J;c[Ca+(t*20|0)+8>>2]=0;c[Ca+(t*20|0)+12>>2]=z;c[Ca+(t*20|0)+16>>2]=0;a[Ca+(t*20|0)+1>>0]=0}else Di(K,30,J,0,z)|0;if(!z)break;t=a[X>>0]|0;if((t&255)>=8)break;a[X>>0]=t+1<<24>>24;c[f+148+((t&255)<<2)>>2]=z;break}t=c[na>>2]|0;l:do if(!t)t=0;else while(1){Ca=t+55|0;if(((d[Ca>>0]|d[Ca+1>>0]<<8)&3)==2)break l;t=c[t+20>>2]|0;if(!t){t=0;break}}while(0);Ca=b[t+50>>1]|0;I=Ca&65535;F=c[aa>>2]|0;H=F+1|0;c[aa>>2]=F+I;if(!(Ca<<16>>16)){A=K+108|0;w=K+112|0}else{D=t+4|0;A=K+108|0;w=K+112|0;E=s+4|0;F=K+104|0;C=0;do{z=b[(c[D>>2]|0)+(C<<1)>>1]|0;t=b[N>>1]|0;m:do if(!(t<<16>>16))t=-1;else{B=c[E>>2]|0;x=t&65535;t=0;while(1){if((b[B+(t<<1)>>1]|0)==z<<16>>16)break m;t=t+1|0;if(t>>>0>=x>>>0){t=-1;break}}}while(0);t=t<<16>>16;x=C+H|0;z=c[A>>2]|0;if((c[w>>2]|0)>(z|0)){c[A>>2]=z+1;Ca=c[F>>2]|0;a[Ca+(z*20|0)>>0]=90;b[Ca+(z*20|0)+2>>1]=0;c[Ca+(z*20|0)+4>>2]=O;c[Ca+(z*20|0)+8>>2]=t;c[Ca+(z*20|0)+12>>2]=x;c[Ca+(z*20|0)+16>>2]=0;a[Ca+(z*20|0)+1>>0]=0}else Di(K,90,O,t,x)|0;C=C+1|0}while((C|0)!=(I|0))}t=c[A>>2]|0;if((c[w>>2]|0)>(t|0)){c[A>>2]=t+1;z=c[K+104>>2]|0;a[z+(t*20|0)>>0]=29;b[z+(t*20|0)+2>>1]=0;c[z+(t*20|0)+4>>2]=J;c[z+(t*20|0)+8>>2]=0;c[z+(t*20|0)+12>>2]=H;c[z+(t*20|0)+16>>2]=0;a[z+(t*20|0)+1>>0]=0;z=t}else z=Di(K,29,J,0,H)|0;if(!(a[(c[K>>2]|0)+81>>0]|0)){Ca=c[K+104>>2]|0;a[Ca+(z*20|0)+1>>0]=-3;c[Ca+(z*20|0)+16>>2]=I}t=c[A>>2]|0;if((c[w>>2]|0)>(t|0)){c[A>>2]=t+1;Ca=c[K+104>>2]|0;a[Ca+(t*20|0)>>0]=69;b[Ca+(t*20|0)+2>>1]=0;c[Ca+(t*20|0)+4>>2]=11;c[Ca+(t*20|0)+8>>2]=2;c[Ca+(t*20|0)+12>>2]=0;c[Ca+(t*20|0)+16>>2]=0;a[Ca+(t*20|0)+1>>0]=0}else t=Di(K,69,11,2,0)|0;do if(!(a[(c[K>>2]|0)+81>>0]|0)){if((t|0)<0)t=(c[A>>2]|0)+-1|0;w=c[K+104>>2]|0;x=w+(t*20|0)+1|0;if(!(a[x>>0]|0)){c[w+(t*20|0)+16>>2]=39404;a[x>>0]=-1;break}else{Ei(K,w+(t*20|0)|0,39404,-1);break}}while(0);w=c[A>>2]|0;if(!(a[(c[K>>2]|0)+81>>0]|0))t=(c[K+104>>2]|0)+(((z|0)<0?w+-1|0:z)*20|0)|0;else t=59308;c[t+8>>2]=w}while(0);tj(f,ik(L,c[ea>>2]|0,0)|0,c[ma>>2]|0,c[fa>>2]|0,2,r);c[ma>>2]=0;c[fa>>2]=0;Ca=421;break}case 4:{Ca=421;break}default:{t=c[f>>2]|0;C=c[t+32>>2]|0;do if(!((c[U>>2]&8192|0)==0&0==0|(C&262144|0)==0&0==0)){t=c[(c[t+16>>2]|0)+28>>2]|0;if(a[T>>0]|0){Ca=445;break}B=c[m>>2]|0;do if((B|0)!=(t|0)){t=c[t+48>>2]|0;if(!t){Ca=439;break}A=t;t=0;do{z=c[A+8>>2]|0;do if((c[z+24>>2]|0)==(B|0)){w=c[z+4>>2]|0;x=c[g>>2]|0;N=a[w>>0]|0;u=(d[208+(N&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0;if(!(N<<24>>24==0|(u|0)!=0))do{w=w+1|0;x=x+1|0;N=a[w>>0]|0;u=(d[208+(N&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0}while(!(N<<24>>24==0|(u|0)!=0));if(u|0)break;if(!t)t=c[_>>2]|0;c[z+32>>2]=t;t=z}while(0);A=c[A>>2]|0}while((A|0)!=0);if(!t)Ca=439}else Ca=439;while(0);if((Ca|0)==439){t=c[_>>2]|0;if(!t){Ca=445;break}}u=0;w=t;do{if((a[w+8>>0]|0)==121)u=u|d[w+9>>0];w=c[w+32>>2]|0}while((w|0)!=0);if(!((t|0)==0|(u|0)==0))Ca=461;else Ca=445}else Ca=445;while(0);do if((Ca|0)==445){Ca=0;if((C&16384|0)==0&0==0){t=0;break}B=c[g>>2]|0;x=c[m>>2]|0;z=c[x+68>>2]|0;if(!z){u=x+60|0;t=x+64|0}else{u=a[B>>0]|0;if(!(u<<24>>24))t=0;else{t=0;w=B;do{w=w+1|0;t=G(t+(d[208+(u&255)>>0]|0)|0,-1640531535)|0;u=a[w>>0]|0}while(u<<24>>24!=0)}t=(t>>>0)%((c[x+56>>2]|0)>>>0)|0;u=z+(t<<3)|0;t=z+(t<<3)+4|0}u=c[u>>2]|0;n:do if(!u)t=59292;else{A=d[208+(d[B>>0]|0)>>0]|0;while(1){t=c[t>>2]|0;u=u+-1|0;x=c[t+12>>2]|0;N=a[x>>0]|0;w=(d[208+(N&255)>>0]|0)-A|0;if(!(N<<24>>24==0|(w|0)!=0)){z=B;do{x=x+1|0;z=z+1|0;N=a[x>>0]|0;w=(d[208+(N&255)>>0]|0)-(d[208+(d[z>>0]|0)>>0]|0)|0}while(!(N<<24>>24==0|(w|0)!=0))}if(!w)break n;if(!u){t=59292;break}}}while(0);if(c[t+8>>2]|0){t=0;Ca=461;break}if(!(c[V>>2]|0))t=0;else{t=0;Ca=461}}while(0);if((Ca|0)==461){Ca=0;N=c[da>>2]|0;a[((N|0)==0?f:N)+20>>0]=1}Im(f,g,t,i,j,M,ca,0,5,F&1,O);u=1}}do if((Ca|0)==421){Ca=0;t=c[pa>>2]|0;if((c[qa>>2]|0)>(t|0)){c[pa>>2]=t+1;O=c[ta>>2]|0;a[O+(t*20|0)>>0]=11;b[O+(t*20|0)+2>>1]=0;c[O+(t*20|0)+4>>2]=0;c[O+(t*20|0)+8>>2]=o;c[O+(t*20|0)+12>>2]=0;c[O+(t*20|0)+16>>2]=0;a[O+(t*20|0)+1>>0]=0;break}else{Di(Ga,11,0,o,0)|0;break}}while(0);do if(!Q){w=c[ka>>2]|0;t=~q;if(((c[w+56>>2]|0)+(c[w+60>>2]|0)|0)<0){mk(w,Ga,t);break}else{c[(c[w+64>>2]|0)+(t<<2)>>2]=c[pa>>2];break}}else{t=c[pa>>2]|0;if((c[qa>>2]|0)>(t|0)){c[pa>>2]=t+1;Q=c[ta>>2]|0;a[Q+(t*20|0)>>0]=11;b[Q+(t*20|0)+2>>1]=0;c[Q+(t*20|0)+4>>2]=0;c[Q+(t*20|0)+8>>2]=oa;c[Q+(t*20|0)+12>>2]=0;c[Q+(t*20|0)+16>>2]=0;a[Q+(t*20|0)+1>>0]=0}else Di(Ga,11,0,oa,0)|0;w=c[pa>>2]|0;if(!(a[(c[Ga>>2]|0)+81>>0]|0))t=(c[ta>>2]|0)+(((y|0)<0?w+-1|0:y)*20|0)|0;else t=59308;c[t+8>>2]=w}while(0);if((M|0)==(P|0)){w=y;t=R;break}if(!W){if((c[Z>>2]|0)>=(Da|0)){w=y;t=R;break}c[Z>>2]=Da;c[Y>>2]=M;w=y;t=R;break}if(!M){w=y;t=R;break}t=a[X>>0]|0;if((t&255)>=8){w=y;t=R;break}a[X>>0]=t+1<<24>>24;c[f+148+((t&255)<<2)>>2]=M;w=y;t=R}while(0);s=c[s+20>>2]|0;if(!s)break;else S=S+1|0}}if(!za){c[p>>2]=u;Ra=Ja;return}s=Ga+108|0;t=c[s>>2]|0;if((c[Ga+112>>2]|0)>(t|0)){c[s>>2]=t+1;o=c[Ga+104>>2]|0;a[o+(t*20|0)>>0]=11;b[o+(t*20|0)+2>>1]=0;c[o+(t*20|0)+4>>2]=0;c[o+(t*20|0)+8>>2]=za;c[o+(t*20|0)+12>>2]=0;c[o+(t*20|0)+16>>2]=0;a[o+(t*20|0)+1>>0]=0}else Di(Ga,11,0,za,0)|0;t=c[s>>2]|0;if(!(a[(c[Ga>>2]|0)+81>>0]|0))s=(c[Ga+104>>2]|0)+(((v|0)<0?t+-1|0:v)*20|0)|0;else s=59308;c[s+8>>2]=t;c[p>>2]=u;Ra=Ja;return}function Um(f,g,h,i,j,k,l,m,n){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|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;t=f+8|0;o=c[t>>2]|0;a:do if(!o){s=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[s+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[s+272>>2]|0)if(!(a[s+81>>0]|0))r=15;else{C=0;break a}else{do if((e[s+276>>1]|0)>=224){o=s+300|0;p=c[o>>2]|0;if(p|0){c[o>>2]=c[p>>2];q=s+284|0;c[q>>2]=(c[q>>2]|0)+1;q=p;break b}o=s+296|0;p=c[o>>2]|0;if(!p){o=s+292|0;break}else{c[o>>2]=c[p>>2];q=s+284|0;c[q>>2]=(c[q>>2]|0)+1;q=p;break b}}else o=s+288|0;while(0);c[o>>2]=(c[o>>2]|0)+1;r=15}while(0);if((r|0)==15)q=_d(s,224,0)|0;if(!q)C=0;else{o=q+104|0;p=o+120|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(p|0));c[q>>2]=s;o=s+4|0;p=c[o>>2]|0;if(p|0)c[p+4>>2]=q;c[q+8>>2]=p;c[q+4>>2]=0;c[o>>2]=q;c[q+20>>2]=381479589;c[q+12>>2]=f;c[t>>2]=q;Di(q,61,0,1,0)|0;C=q}}else C=o;while(0);p=c[g+8>>2]|0;if(!p){u=0;o=g+36|0}else{y=(n|0)==0?0:16;x=C+108|0;z=C+112|0;o=g+36|0;A=C+104|0;B=(l&2|(y|1)&255)&255;w=0;u=0;while(1){t=k+(w<<2)|0;s=c[t>>2]|0;if(s){do if(c[p+36>>2]|0){q=c[x>>2]|0;r=q+2|0;if((c[z>>2]|0)>(q|0)){c[x>>2]=q+1;v=c[A>>2]|0;a[v+(q*20|0)>>0]=50;b[v+(q*20|0)+2>>1]=0;c[v+(q*20|0)+4>>2]=s;c[v+(q*20|0)+8>>2]=r;c[v+(q*20|0)+12>>2]=0;c[v+(q*20|0)+16>>2]=0;a[v+(q*20|0)+1>>0]=0;break}else{Di(C,50,s,r,0)|0;break}}while(0);q=p+55|0;q=d[q>>0]|d[q+1>>0]<<8;if((q&3)==2)v=(c[o>>2]&32|0)==0?y:B;else v=y;u=w+i|0;s=c[t>>2]|0;t=s+1|0;r=e[((q&8)==0?p+52|0:p+50|0)>>1]|0;q=c[x>>2]|0;if((c[z>>2]|0)>(q|0)){c[x>>2]=q+1;D=c[A>>2]|0;a[D+(q*20|0)>>0]=-124;b[D+(q*20|0)+2>>1]=0;c[D+(q*20|0)+4>>2]=u;c[D+(q*20|0)+8>>2]=s;c[D+(q*20|0)+12>>2]=t;c[D+(q*20|0)+16>>2]=0;a[D+(q*20|0)+1>>0]=0}else q=Di(C,132,u,s,t)|0;if(!(a[(c[C>>2]|0)+81>>0]|0)){D=c[A>>2]|0;a[D+(q*20|0)+1>>0]=-3;c[D+(q*20|0)+16>>2]=r}q=c[x>>2]|0;if((q|0)>0){b[(c[A>>2]|0)+((q+-1|0)*20|0)+2>>1]=v&255;u=1}else u=1}p=c[p+20>>2]|0;if(!p)break;else w=w+1|0}}if(c[o>>2]&32|0)return;q=j+1|0;o=f+19|0;p=a[o>>0]|0;if(!(p<<24>>24)){D=f+44|0;r=(c[D>>2]|0)+1|0;c[D>>2]=r}else{r=p+-1<<24>>24;a[o>>0]=r;r=c[f+148+((r&255)<<2)>>2]|0}o=b[g+42>>1]|0;s=C+108|0;p=c[s>>2]|0;t=C+112|0;if((c[t>>2]|0)>(p|0)){c[s>>2]=p+1;D=c[C+104>>2]|0;a[D+(p*20|0)>>0]=92;b[D+(p*20|0)+2>>1]=0;c[D+(p*20|0)+4>>2]=q;c[D+(p*20|0)+8>>2]=o;c[D+(p*20|0)+12>>2]=r;c[D+(p*20|0)+16>>2]=0;a[D+(p*20|0)+1>>0]=0}else Di(C,92,q,o,r)|0;if(!(u<<24>>24))zk(C,g,0);q=f+18|0;p=(a[q>>0]|0)==0?((l|0)==0?33:(l|1)&255):0;p=(m|0)==0?p:p|8;p=(n|0)==0?p:p|16;o=c[s>>2]|0;if((c[t>>2]|0)>(o|0)){c[s>>2]=o+1;D=c[C+104>>2]|0;a[D+(o*20|0)>>0]=122;b[D+(o*20|0)+2>>1]=0;c[D+(o*20|0)+4>>2]=h;c[D+(o*20|0)+8>>2]=r;c[D+(o*20|0)+12>>2]=j;c[D+(o*20|0)+16>>2]=0;a[D+(o*20|0)+1>>0]=0}else Di(C,122,h,r,j)|0;if((a[q>>0]|0)==0?(a[(c[C>>2]|0)+81>>0]|0)==0:0){j=c[C+104>>2]|0;D=(c[s>>2]|0)+-1|0;a[j+(D*20|0)+1>>0]=-6;c[j+(D*20|0)+16>>2]=g}o=c[s>>2]|0;if((o|0)<=0)return;b[(c[C+104>>2]|0)+((o+-1|0)*20|0)+2>>1]=p&255;return}function Vm(d,e){d=d|0;e=e|0;if((a[e>>0]|0)!=-94)return 0;e=b[e+32>>1]|0;if(e<<16>>16<=-1){d=d+20|0;a[d>>0]=a[d>>0]|2;return 0}if((c[(c[d+24>>2]|0)+(e<<16>>16<<2)>>2]|0)<=-1)return 0;d=d+20|0;a[d>>0]=a[d>>0]|1;return 0}function Wm(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;if(!(c[g+36>>2]&8)){l=0;return l|0}j=c[d>>2]|0;if(c[j+24>>2]&4|0){l=0;return l|0}k=c[d+116>>2]|0;k=(k|0)==0?d:k;i=c[(c[(c[j+16>>2]|0)+(f<<4)+12>>2]|0)+72>>2]|0;if(((i|0?(c[i+36>>2]&32|0)==0:0)?(c[i+56>>2]|0)==0:0)?(b[i+42>>1]|0)==2:0){i=k+112|0;d=c[i>>2]|0;a:do if(!d)l=12;else while(1){if((c[d+4>>2]|0)==(g|0))break a;d=c[d>>2]|0;if(!d){l=12;break}}while(0);do if((l|0)==12){b:do if(c[j+272>>2]|0)if(!(a[j+81>>0]|0))l=22;else{l=0;return l|0}else{do if((e[j+276>>1]|0)>=16){h=j+300|0;d=c[h>>2]|0;if(d|0){c[h>>2]=c[d>>2];j=j+284|0;c[j>>2]=(c[j>>2]|0)+1;break b}h=j+296|0;d=c[h>>2]|0;if(!d){d=j+292|0;break}else{c[h>>2]=c[d>>2];j=j+284|0;c[j>>2]=(c[j>>2]|0)+1;break b}}else d=j+288|0;while(0);c[d>>2]=(c[d>>2]|0)+1;l=22}while(0);if((l|0)==22)d=_d(j,16,0)|0;if(!d){l=0;return l|0}else{c[d>>2]=c[i>>2];c[i>>2]=d;c[d+4>>2]=g;c[d+8>>2]=f;l=k+44|0;k=c[l>>2]|0;c[d+12>>2]=k+2;c[l>>2]=k+4;break}}while(0);l=c[d+12>>2]|0;return l|0}l=d+36|0;c[l>>2]=(c[l>>2]|0)+1;c[d+12>>2]=523;l=0;return l|0}function Xm(f,g){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;h=b[f+50>>1]|0;t=g+50|0;if(h<<16>>16!=(b[t>>1]|0)){g=0;return g|0}if((a[f+54>>0]|0)!=(a[g+54>>0]|0)){g=0;return g|0}a:do if(h<<16>>16){l=g+4|0;m=f+4|0;n=g+40|0;o=f+40|0;p=g+28|0;q=f+28|0;r=g+32|0;s=f+32|0;k=0;while(1){h=b[(c[l>>2]|0)+(k<<1)>>1]|0;if(h<<16>>16!=(b[(c[m>>2]|0)+(k<<1)>>1]|0)){h=0;i=18;break}if(h<<16>>16==-2?bk(0,c[(c[n>>2]|0)+4+(k*20|0)>>2]|0,c[(c[o>>2]|0)+4+(k*20|0)>>2]|0,-1)|0:0){h=0;i=18;break}if((a[(c[p>>2]|0)+k>>0]|0)!=(a[(c[q>>2]|0)+k>>0]|0)){h=0;i=18;break}i=c[(c[r>>2]|0)+(k<<2)>>2]|0;j=c[(c[s>>2]|0)+(k<<2)>>2]|0;if(i){if(!j){h=0;i=18;break}u=a[i>>0]|0;h=(d[208+(u&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0;if(!(u<<24>>24==0|(h|0)!=0))do{i=i+1|0;j=j+1|0;u=a[i>>0]|0;h=(d[208+(u&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(u<<24>>24==0|(h|0)!=0))}else h=((j|0)!=0)<<31>>31;k=k+1|0;if(h|0){h=0;i=18;break}if(k>>>0>=(e[t>>1]|0)>>>0)break a}if((i|0)==18)return h|0}while(0);u=(bk(0,c[g+36>>2]|0,c[f+36>>2]|0,-1)|0)==0&1;return u|0}function Ym(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;b=c[a+12>>2]|0;if(!b)b=0;else{b=c[b+24>>2]|0;b=(b|0)>0?b:0}d=c[a+16>>2]|0;if(d){k=c[d+24>>2]|0;b=(k|0)>(b|0)?k:b}j=a+4|0;k=c[j>>2]|0;d=a+20|0;if(!(k&2048)){h=c[d>>2]|0;if(!h){m=b;m=m+1|0;a=a+24|0;c[a>>2]=m;return}i=c[h>>2]|0;g=(i|0)>0;if(g){f=0;e=i;while(1){d=c[h+4+(f*20|0)>>2]|0;if(!d)d=e;else{m=c[d+24>>2]|0;d=(m|0)>(b|0);b=d?m:b;d=d?i:e}f=f+1|0;if((f|0)>=(d|0))break;else e=d}if(g){d=0;e=0;do{d=c[(c[h+4+(e*20|0)>>2]|0)+4>>2]|d;e=e+1|0}while((e|0)!=(i|0));d=d&2097412}else d=0}else d=0;c[j>>2]=d|k;m=b;m=m+1|0;a=a+24|0;c[a>>2]=m;return}d=c[d>>2]|0;if(!d){m=b;m=m+1|0;a=a+24|0;c[a>>2]=m;return}do{e=c[d+36>>2]|0;if(e){k=c[e+24>>2]|0;b=(k|0)>(b|0)?k:b}e=c[d+44>>2]|0;if(e){k=c[e+24>>2]|0;b=(k|0)>(b|0)?k:b}e=c[d+60>>2]|0;if(e){k=c[e+24>>2]|0;b=(k|0)>(b|0)?k:b}h=c[d>>2]|0;if((h|0)!=0?(i=c[h>>2]|0,(i|0)>0):0){g=0;f=i;while(1){e=c[h+4+(g*20|0)>>2]|0;if(!e)e=f;else{k=c[e+24>>2]|0;e=(k|0)>(b|0);b=e?k:b;e=e?i:f}g=g+1|0;if((g|0)>=(e|0))break;else f=e}}h=c[d+40>>2]|0;if((h|0)!=0?(l=c[h>>2]|0,(l|0)>0):0){g=0;f=l;while(1){e=c[h+4+(g*20|0)>>2]|0;if(!e)e=f;else{k=c[e+24>>2]|0;e=(k|0)>(b|0);b=e?k:b;e=e?l:f}g=g+1|0;if((g|0)>=(e|0))break;else f=e}}h=c[d+48>>2]|0;if((h|0)!=0?(m=c[h>>2]|0,(m|0)>0):0){g=0;f=m;while(1){e=c[h+4+(g*20|0)>>2]|0;if(!e)e=f;else{k=c[e+24>>2]|0;e=(k|0)>(b|0);b=e?k:b;e=e?m:f}g=g+1|0;if((g|0)>=(e|0))break;else f=e}}d=c[d+52>>2]|0}while((d|0)!=0);m=b+1|0;a=a+24|0;c[a>>2]=m;return}function Zm(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=Ra;Ra=Ra+16|0;g=i;a:do if(((d[b>>0]|0)+-48|0)>>>0<10){c[g>>2]=0;ii(b,g)|0;f=c[g>>2]&255}else{h=Eu(b)|0;g=(h&1073741823|0)==2;b:do if(!e){if(g){if(!(Ib(18544,b,2)|0)){f=0;break}if(!(Ib(18545,b,2)|0)){f=1;break}else break a}switch(h&1073741823|0){case 3:{if(!(Ib(18546,b,3)|0)){f=2;break b}if(!(Ib(18553,b,3)|0)){f=4;break b}else break a}case 5:{if(!(Ib(18548,b,5)|0)){f=3;break b}if(!(Ib(18559,b,5)|0)){f=6;break b}else break a}case 4:{if(!(Ib(18556,b,4)|0)){f=5;break b}if(!(Ib(18564,b,4)|0)){f=7;break b}else break a}default:break a}}else{if(g){if(!(Ib(18544,b,2)|0)){f=0;break}if(!(Ib(18545,b,2)|0)){f=1;break}else break a}switch(h&1073741823|0){case 3:{if(!(Ib(18546,b,3)|0)){f=2;break b}if(!(Ib(18553,b,3)|0)){f=4;break b}else break a}case 5:if(!(Ib(18548,b,5)|0)){f=3;break b}else break a;case 4:if(!(Ib(18556,b,4)|0)){f=5;break b}else break a;default:break a}}while(0);f=a[45920+f>>0]|0}while(0);Ra=i;return f|0}function _m(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;i=Ra;Ra=Ra+16|0;g=i;c[g>>2]=f;f=0;a:while(1){switch(a[e+f>>0]|0){case 0:break a;case 115:{k=(c[g>>2]|0)+(4-1)&~(4-1);j=c[k>>2]|0;c[g>>2]=k+4;Fj(b,(j|0)==0?73:110,0,f+d|0,0,j,0)|0;break}case 105:{j=(c[g>>2]|0)+(4-1)&~(4-1);k=c[j>>2]|0;c[g>>2]=j+4;Ci(b,70,k,f+d|0)|0;break}default:{h=7;break a}}f=f+1|0}if((h|0)==7){Ra=i;return}Ci(b,81,d,f)|0;Ra=i;return}function $m(e,f,g){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;k=c[(c[e>>2]|0)+32>>2]|0;o=c[(c[e+4>>2]|0)+8>>2]|0;h=c[g>>2]|0;do if(h){i=b[h+8>>1]|0;if((i&514)==514?(a[h+10>>0]|0)==1:0){n=c[h+16>>2]|0;break}if(!(i&1))n=Gg(h,1)|0;else n=0}else n=0;while(0);h=c[g+4>>2]|0;do if(h){i=b[h+8>>1]|0;if((i&514)==514?(a[h+10>>0]|0)==1:0){m=c[h+16>>2]|0;break}if(!(i&1))m=Gg(h,1)|0;else m=0}else m=0;while(0);j=c[g>>2]|0;h=b[j+8>>1]|0;if((h&2)!=0?(a[j+10>>0]|0)==1:0)h=c[j+12>>2]|0;else l=16;do if((l|0)==16){i=h&65535;if(!(i&16)){if(i&1|0){h=0;break}h=Fg(j,1)|0;break}else{h=c[j+12>>2]|0;if(!(i&16384))break;h=(c[j>>2]|0)+h|0;break}}while(0);if((h|0)>(c[k+140>>2]|0)){c[e+20>>2]=1;yc(c[e>>2]|0,45980,-1,1,-1)|0;return}do if((f|0)==3){h=c[g+8>>2]|0;if(!h)return;i=b[h+8>>1]|0;if((i&514)==514?(a[h+10>>0]|0)==1:0)g=c[h+16>>2]|0;else l=28;do if((l|0)==28)if(!(i&1)){g=Gg(h,1)|0;break}else return;while(0);if(!g)return;k=a[g>>0]|0;if((g|0)!=(-1|0)&k<<24>>24!=0){h=g;f=0;j=k;while(1){i=h+1|0;if((j&255)>191){h=i;while(1){j=a[h>>0]|0;if((j&-64)<<24>>24==-128)h=h+1|0;else break}}else{h=i;j=a[i>>0]|0}if(j<<24>>24!=0&(h|0)!=(-1|0))f=f+1|0;else break}if(!f){j=g+1|0;h=k&255;if((k&255)<=191)break;h=d[2736+(h+-192)>>0]|0;i=a[j>>0]|0;if((i&-64)<<24>>24==-128)do{j=j+1|0;h=h<<6|i&63;i=a[j>>0]|0}while((i&-64)<<24>>24==-128);h=(h&-2|0)==65534|(h>>>0<128|(h&-2048|0)==55296)?65533:h;break}}c[e+20>>2]=1;yc(c[e>>2]|0,46013,-1,1,-1)|0;return}else h=d[o+2>>0]|0;while(0);if(!((n|0)!=0&(m|0)!=0))return;i=(md(n,m,o,h)|0)==0;h=c[e>>2]|0;i=i&1;j=h+8|0;if(!(b[j>>1]&9216)){o=h;c[o>>2]=i;c[o+4>>2]=0;b[j>>1]=4;return}else{Pg(h,i,0);return}}function an(b,f,g,h,i){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=c[b>>2]|0;o=g+4|0;m=(c[o>>2]|0)+45|0;a:do if(!p){r=Sv(m|0,0,-1,-1)|0;n=L()|0;if(n>>>0>0|(n|0)==0&r>>>0>2147483390){g=0;return g|0}if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](m)|0;q=25;break}j=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){r=c[14978]|0;n=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;l=L()|0;c[14768]=((l|0)<0|(l|0)==0&n>>>0<=r>>>0)&1}k=Wa[c[29340>>2]&127](j)|0;if(!k){g=0;return g|0}j=Wa[c[29352>>2]&127](k)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0){c[14987]=j;r=k}else r=k}else{if(c[p+272>>2]|0){if(a[p+81>>0]|0){g=0;return g|0}}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){k=p+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];q=p+284|0;c[q>>2]=(c[q>>2]|0)+1;q=25;break a}k=p+296|0;j=c[k>>2]|0;if(!j){j=p+292|0;break}else{c[k>>2]=c[j>>2];q=p+284|0;c[q>>2]=(c[q>>2]|0)+1;q=25;break a}}else j=p+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(p,m,0)|0;q=25}while(0);if((q|0)==25)if(!j){g=0;return g|0}else r=j;gw(r|0,0,m|0)|0;n=r+44|0;ew(n|0,c[g>>2]|0,c[o>>2]|0)|0;j=a[n>>0]|0;if((a[880+(j&255)>>0]|0)<0){m=j<<24>>24==91?93:j;l=0;j=1;while(1){k=a[n+j>>0]|0;if(k<<24>>24==m<<24>>24){j=j+1|0;k=n+l|0;if((a[n+j>>0]|0)!=m<<24>>24)break;a[k>>0]=m}else a[n+l>>0]=k;l=l+1|0;j=j+1|0}a[k>>0]=0}o=r+12|0;c[o>>2]=n;a[r>>0]=f;while(1)if(!(a[880+(d[h>>0]|0)>>0]&1))break;else h=h+1|0;j=i-h|0;b:do if((j|0)<=0)if(!h)j=0;else{k=j;q=41}else while(1){k=j+-1|0;if(!(a[880+(d[h+k>>0]|0)>>0]&1)){k=j;q=41;break b}if((j|0)>1)j=k;else{q=41;break}}while(0);c:do if((q|0)==41){m=Sv(k|0,((k|0)<0)<<31>>31|0,1,0)|0;n=L()|0;d:do if(c[p+272>>2]|0)if(!(a[p+81>>0]|0))q=51;else{j=0;break c}else{do if(!(n>>>0>0|((n|0)==0?m>>>0>(e[p+276>>1]|0)>>>0:0))){l=p+300|0;j=c[l>>2]|0;if(j|0){c[l>>2]=c[j>>2];p=p+284|0;c[p>>2]=(c[p>>2]|0)+1;break d}l=p+296|0;j=c[l>>2]|0;if(!j){j=p+292|0;break}else{c[l>>2]=c[j>>2];p=p+284|0;c[p>>2]=(c[p>>2]|0)+1;break d}}else j=p+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;q=51}while(0);if((q|0)==51)j=_d(p,m,n)|0;if(j){ew(j|0,h|0,k|0)|0;a[j+k>>0]=0;k=a[j>>0]|0;if(k<<24>>24){m=0;l=j;do{if(a[880+(k&255)>>0]&1)a[l>>0]=32;m=m+1|0;l=j+m|0;k=a[l>>0]|0}while(k<<24>>24!=0)}}else j=0}while(0);c[r+32>>2]=j;if((d[b+200>>0]|0)<=1){g=r;return g|0}m=c[o>>2]|0;l=c[b>>2]|0;e:do if(!l){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](16)|0;q=82;break}j=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){p=c[14978]|0;i=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;f=L()|0;c[14768]=((f|0)<0|(f|0)==0&i>>>0<=p>>>0)&1}j=Wa[c[29340>>2]&127](j)|0;if(!j){g=r;return g|0}k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0)c[14987]=k}else{if(c[l+272>>2]|0){if(a[l+81>>0]|0){g=r;return g|0}}else{do if((e[l+276>>1]|0)>=16){k=l+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];q=l+284|0;c[q>>2]=(c[q>>2]|0)+1;q=82;break e}k=l+296|0;j=c[k>>2]|0;if(!j){j=l+292|0;break}else{c[k>>2]=c[j>>2];q=l+284|0;c[q>>2]=(c[q>>2]|0)+1;q=82;break e}}else j=l+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(l,16,0)|0;q=82}while(0);if((q|0)==82)if(!j){g=r;return g|0}k=j+4|0;l=k+12|0;do{a[k>>0]=0;k=k+1|0}while((k|0)<(l|0));c[j>>2]=m;p=g;q=c[p+4>>2]|0;g=j+4|0;c[g>>2]=c[p>>2];c[g+4>>2]=q;g=b+272|0;c[j+12>>2]=c[g>>2];c[g>>2]=j;g=r;return g|0}function bn(f,g,h){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,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;H=Ra;Ra=Ra+64|0;D=H+40|0;E=H+32|0;w=H+24|0;v=H+16|0;n=H+8|0;k=H;x=H+60|0;t=H+56|0;r=H+52|0;F=H+48|0;s=H+44|0;G=c[(c[f>>2]|0)+32>>2]|0;c[x>>2]=0;c[t>>2]=0;c[F>>2]=0;g=c[h>>2]|0;do if(g){i=b[g+8>>1]|0;if((i&514)==514?(a[g+10>>0]|0)==1:0){j=c[g+16>>2]|0;break}if(!(i&1))j=Gg(g,1)|0;else j=0}else j=0;while(0);g=c[h+4>>2]|0;do if(g){i=b[g+8>>1]|0;if((i&514)==514?(a[g+10>>0]|0)==1:0){g=c[g+16>>2]|0;break}if(!(i&1))g=Gg(g,1)|0;else g=0}else g=0;while(0);A=(j|0)==0?59952:j;u=(g|0)==0?59952:g;z=G+20|0;m=c[z>>2]|0;g=c[G+136>>2]|0;a:do if((m|0)<(g+2|0)){y=G+16|0;l=c[y>>2]|0;b:do if((m|0)>0){k=d[208+(d[u>>0]|0)>>0]|0;h=0;while(1){i=c[l+(h<<4)>>2]|0;q=a[i>>0]|0;g=(d[208+(q&255)>>0]|0)-k|0;if(!(q<<24>>24==0|(g|0)!=0)){j=u;do{i=i+1|0;j=j+1|0;q=a[i>>0]|0;g=(d[208+(q&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(q<<24>>24==0|(g|0)!=0))}h=h+1|0;if(!g)break;if((h|0)>=(m|0))break b}c[n>>2]=u;i=dd(G,46469,n)|0;c[F>>2]=i;g=0;C=142;break a}while(0);c:do if((l|0)==(G+412|0)){d:do if(c[G+272>>2]|0)if(!(a[G+81>>0]|0))C=34;else{Ra=H;return}else{do if((e[G+276>>1]|0)>=48){i=G+300|0;g=c[i>>2]|0;if(g|0){c[i>>2]=c[g>>2];q=G+284|0;c[q>>2]=(c[q>>2]|0)+1;break d}i=G+296|0;g=c[i>>2]|0;if(!g){g=G+292|0;break}else{c[i>>2]=c[g>>2];q=G+284|0;c[q>>2]=(c[q>>2]|0)+1;break d}}else g=G+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1;C=34}while(0);if((C|0)==34)g=_d(G,48,0)|0;if(!g){Ra=H;return}else{p=c[y>>2]|0;c[g>>2]=c[p>>2];c[g+4>>2]=c[p+4>>2];c[g+8>>2]=c[p+8>>2];c[g+12>>2]=c[p+12>>2];c[g+16>>2]=c[p+16>>2];c[g+20>>2]=c[p+20>>2];c[g+24>>2]=c[p+24>>2];c[g+28>>2]=c[p+28>>2];p=g;break}}else{j=(m<<4)+16|0;e:do if(!l){if(c[G+272>>2]|0){if(a[G+81>>0]|0){Ra=H;return}}else{do if(!(0<0|(0==0?(e[G+276>>1]|0)>>>0>>0:0))){i=G+300|0;g=c[i>>2]|0;if(g|0){c[i>>2]=c[g>>2];q=G+284|0;c[q>>2]=(c[q>>2]|0)+1;break e}i=G+296|0;g=c[i>>2]|0;if(!g){g=G+292|0;break}else{c[i>>2]=c[g>>2];q=G+284|0;c[q>>2]=(c[q>>2]|0)+1;break e}}else g=G+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1}g=_d(G,j,0)|0}else{q=l;if((c[G+304>>2]|0)>>>0<=q>>>0?(c[G+308>>2]|0)>>>0>q>>>0:0){if(!(0<0|(0==0?(e[G+276>>1]|0)>>>0>>0:0))){p=l;break c}g=Zd(G,l,j,0)|0;break}g=Zd(G,l,j,0)|0}while(0);if(!g){Ra=H;return}else p=g}while(0);c[y>>2]=p;q=c[z>>2]|0;o=p+(q<<4)|0;c[o>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;c[r>>2]=c[G+60>>2];switch(dn(c[(c[G>>2]|0)+16>>2]|0,A,r,s,x,t)|0){case 0:{g=c[r>>2]|256;c[r>>2]=g;k=p+(q<<4)+4|0;g=Pe(c[s>>2]|0,c[x>>2]|0,G,k,0,g)|0;c[z>>2]=(c[z>>2]|0)+1;h=(Eu(u)|0)+1|0;r=G+272|0;f:do if(c[r>>2]|0)if(!(a[G+81>>0]|0))C=76;else i=0;else{do if(!(0<0|(0==0?(e[G+276>>1]|0)>>>0>>0:0))){j=G+300|0;i=c[j>>2]|0;if(i|0){c[j>>2]=c[i>>2];C=G+284|0;c[C>>2]=(c[C>>2]|0)+1;C=77;break f}j=G+296|0;i=c[j>>2]|0;if(!i){i=G+292|0;break}else{c[j>>2]=c[i>>2];C=G+284|0;c[C>>2]=(c[C>>2]|0)+1;C=77;break f}}else i=G+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;C=76}while(0);if((C|0)==76){i=_d(G,h,0)|0;C=77}if((C|0)==77)if(!i)i=0;else ew(i|0,u|0,h|0)|0;c[o>>2]=i;a[G+89>>0]=0;switch(g|0){case 19:{g=dd(G,46499,v)|0;c[F>>2]=g;g=1;C=98;break}case 0:{g=en(G,c[k>>2]|0)|0;c[p+(q<<4)+12>>2]=g;if(g)if((a[g+76>>0]|0)!=0?(a[g+77>>0]|0)!=(a[G+78>>0]|0):0){g=dd(G,34948,w)|0;c[F>>2]=g;g=1}else g=0;else g=7;j=c[k>>2]|0;k=c[j>>2]|0;h=c[j+4>>2]|0;l=h+4|0;c[l>>2]=k;m=c[h>>2]|0;i=a[G+83>>0]|0;n=(a[m+12>>0]|0)==0;do if(n){w=c[m+216>>2]|0;if(w|0?(a[w+43>>0]|0)==2:0)break;a[m+4>>0]=i}while(0);i=c[(c[y>>2]|0)+4>>2]|0;if(!i)i=0;else{w=c[i+4>>2]|0;c[w+4>>2]=c[i>>2];i=(e[w+22>>1]|0)>>>2&3}if(j|0){c[l>>2]=k;w=h+22|0;b[w>>1]=i<<2|b[w>>1]&-13&65535}h=c[G+32>>2]|0;c[l>>2]=k;j=n^1;a[m+7>>0]=j&1;a[m+8>>0]=n&1;a[m+9>>0]=0;do if(n){i=m+10|0;if(!(h&8)){a[i>>0]=2;i=2;break}else{a[i>>0]=3;i=3;break}}else{a[m+10>>0]=0;i=0}while(0);w=(i<<2|(n?i:0))&255;a[m+11>>0]=(h&16|0)==0|j?w:w|12;w=m+20|0;v=d[w>>0]|0;a[w>>0]=(h&32|0)==0?v|1:v&254;a[p+(q<<4)+8>>0]=3;if(!g)g=(c[o>>2]|0)==0?7:0;break}default:C=98}if((C|0)==98)a[p+(q<<4)+8>>0]=3;i=c[x>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{x=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);g:do if(!g){g=c[z>>2]|0;h=c[y>>2]|0;if((g|0)>0){i=0;do{j=c[h+(i<<4)+4>>2]|0;if(j|0)c[(c[j+4>>2]|0)+4>>2]=c[j>>2];i=i+1|0}while((i|0)!=(g|0))}a[G+164>>0]=0;j=G+24|0;k=c[j>>2]|0;c[j>>2]=k&-17;k=(k&1|0)==0;x=c[h+12>>2]|0;a[G+78>>0]=a[x+77>>0]|0;if(!(b[x+78>>1]&1)){g=eh(G,0,F,0)|0;if(g|0)break;g=c[z>>2]|0}if((g|0)>1)do{i=g;g=g+-1|0;if((b[(c[(c[y>>2]|0)+(g<<4)+12>>2]|0)+78>>1]&1)==0?(B=eh(G,g,F,0)|0,B|0):0){g=B;break g}}while((i|0)>2);if(!k){Ra=H;return}c[j>>2]=c[j>>2]&-2;Ra=H;return}while(0);i=(c[z>>2]|0)+-1|0;j=c[(c[y>>2]|0)+(i<<4)+4>>2]|0;if(j|0){ug(j);B=c[y>>2]|0;c[B+(i<<4)+4>>2]=0;c[B+(i<<4)+12>>2]=0}$b(G);c[z>>2]=i;if((g|0)<3082)switch(g|0){case 7:break;default:C=140}else switch(g|0){case 3082:break;default:C=140}if((C|0)==140){i=c[F>>2]|0;if(i|0){C=143;break a}c[D>>2]=A;i=dd(G,46528,D)|0;c[F>>2]=i;C=142;break a}i=G+81|0;if((a[i>>0]|0)==0?(a[G+82>>0]|0)==0:0){a[i>>0]=1;if((c[G+180>>2]|0)>0)c[G+264>>2]=1;c[r>>2]=(c[r>>2]|0)+1;i=c[G+236>>2]|0;if(i|0)c[i+12>>2]=7}i=c[F>>2]|0;do if(i|0){if(c[G+480>>2]|0){Xd(G,i);break}D=i;if((c[G+304>>2]|0)>>>0<=D>>>0?(c[G+308>>2]|0)>>>0>D>>>0:0){D=G+300|0;c[i>>2]=c[D>>2];c[D>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{D=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-D;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);i=dd(G,34831,E)|0;c[F>>2]=i;C=142;break a}case 7:{g=G+81|0;if((a[g>>0]|0)==0?(a[G+82>>0]|0)==0:0){a[g>>0]=1;if((c[G+180>>2]|0)>0)c[G+264>>2]=1;g=G+272|0;c[g>>2]=(c[g>>2]|0)+1;g=c[G+236>>2]|0;if(g|0)c[g+12>>2]=7}break}default:{}}g=c[t>>2]|0;c[f+20>>2]=1;yc(c[f>>2]|0,g,-1,1,-1)|0;if(!g){Ra=H;return}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);Ra=H;return}else{f=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);Ra=H;return}}else{c[k>>2]=g;i=dd(G,46432,k)|0;c[F>>2]=i;g=0;C=142}while(0);if((C|0)==142)if(i)C=143;do if((C|0)==143){c[f+20>>2]=1;yc(c[f>>2]|0,i,-1,1,-1)|0;i=c[F>>2]|0;if(i){if(G|0){if(c[G+480>>2]|0){Xd(G,i);break}F=i;if((c[G+304>>2]|0)>>>0<=F>>>0?(c[G+308>>2]|0)>>>0>F>>>0:0){G=G+300|0;c[i>>2]=c[G>>2];c[G>>2]=i;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{G=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}}while(0);if(!g){Ra=H;return}c[f+20>>2]=g;i=c[f>>2]|0;if(!(b[i+8>>1]&1)){Ra=H;return}switch(g|0){case 516:{g=50738;break}case 100:{g=50760;break}case 101:{g=50782;break}default:{g=g&255;if(g>>>0<29?(520028155>>>g&1|0)!=0:0)g=c[22960+(g<<2)>>2]|0;else g=50724}}yc(i,g,-1,1,0)|0;Ra=H;return}function cn(f,g,h,i,j,k,l){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|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;J=Ra;Ra=Ra+112|0;x=J+32|0;w=J+24|0;t=J+16|0;r=J+8|0;n=J;s=J+72|0;u=J+40|0;I=c[f>>2]|0;a:do if(!(c[f+36>>2]|0)){z=u+4|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[z+20>>2]=0;c[z+24>>2]=0;c[u>>2]=f;z=(j|0)==0;m=f;do if(z)m=0;else{if((a[j>>0]|0)==59){a[j>>0]=110;m=0;break}p=u+24|0;b[p>>1]=0;c[s>>2]=m;c[s+4>>2]=125;c[s+8>>2]=126;c[s+12>>2]=0;c[s+24>>2]=u;o=j+24|0;m=f+208|0;A=(c[m>>2]|0)+(c[o>>2]|0)|0;c[m>>2]=A;m=c[I+120>>2]|0;if((m|0)>=(A|0)){_j(s,j)|0;n=c[s>>2]|0;m=n+208|0;c[m>>2]=(c[m>>2]|0)-(c[o>>2]|0);m=b[p>>1]|0;A=j+4|0;c[A>>2]=c[A>>2]|m&-32752&65535;if((c[u+20>>2]|0)<=0)if((c[n+36>>2]|0)<1)break;else{F=121;break a}}else{c[n>>2]=m;cd(f,41637,n)}F=121;break a}while(0);A=(k|0)==0;do if(!A){if((a[k>>0]|0)==59){a[k>>0]=110;break}q=u+24|0;o=m&65535;b[q>>1]=o&28655;m=c[u>>2]|0;c[s>>2]=m;c[s+4>>2]=125;c[s+8>>2]=126;c[s+12>>2]=0;c[s+24>>2]=u;p=k+24|0;n=m+208|0;y=(c[n>>2]|0)+(c[p>>2]|0)|0;c[n>>2]=y;n=c[(c[m>>2]|0)+120>>2]|0;if((n|0)>=(y|0)){_j(s,k)|0;n=c[s>>2]|0;m=n+208|0;c[m>>2]=(c[m>>2]|0)-(c[p>>2]|0);m=b[q>>1]|0;y=k+4|0;c[y>>2]=c[y>>2]|m&-32752&65535;m=(o&36880|m&65535)&65535;b[q>>1]=m;if((c[u+20>>2]|0)<=0)if((c[n+36>>2]|0)<1)break;else{F=120;break a}}else{c[r>>2]=n;cd(m,41637,r)}F=120;break a}while(0);y=(l|0)==0;do if(!y){if((a[l>>0]|0)==59){a[l>>0]=110;break}q=u+24|0;p=m&65535;b[q>>1]=p&28655;m=c[u>>2]|0;c[s>>2]=m;c[s+4>>2]=125;c[s+8>>2]=126;c[s+12>>2]=0;c[s+24>>2]=u;o=l+24|0;n=m+208|0;r=(c[n>>2]|0)+(c[o>>2]|0)|0;c[n>>2]=r;n=c[(c[m>>2]|0)+120>>2]|0;if((n|0)>=(r|0)){_j(s,l)|0;m=c[s>>2]|0;t=m+208|0;c[t>>2]=(c[t>>2]|0)-(c[o>>2]|0);t=b[q>>1]|0;s=l+4|0;c[s>>2]=c[s>>2]|t&-32752&65535;b[q>>1]=p&36880|t&65535;if((c[u+20>>2]|0)<=0)if((c[m+36>>2]|0)<1)break;else{F=120;break a}}else{c[t>>2]=n;cd(m,41637,t)}F=120;break a}while(0);do if(i|0){if((a[i>>0]|0)==110)m=c[i+8>>2]|0;else m=0;n=c[f>>2]|0;if(((a[n+165>>0]|0)==0?(a[f+200>>0]|0)==0:0)?(v=c[n+312>>2]|0,v|0):0){m=$a[v&127](c[n+316>>2]|0,g,m,0,0,c[f+240>>2]|0)|0;if((m|0)==1){cd(f,39216,w);c[f+12>>2]=23;F=120;break a}if((m|2|0)==2)if(!m)break;else{F=120;break a}else{cd(f,39231,x);c[f+12>>2]=1;F=120;break a}}}while(0);s=f+8|0;m=c[s>>2]|0;b:do if(!m){p=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[p+76>>1]&8)==0:0)a[f+23>>0]=1;c:do if(c[p+272>>2]|0)if(!(a[p+81>>0]|0))F=51;else{t=0;break b}else{do if((e[p+276>>1]|0)>=224){m=p+300|0;n=c[m>>2]|0;if(n|0){c[m>>2]=c[n>>2];x=p+284|0;c[x>>2]=(c[x>>2]|0)+1;break c}m=p+296|0;n=c[m>>2]|0;if(!n){m=p+292|0;break}else{c[m>>2]=c[n>>2];x=p+284|0;c[x>>2]=(c[x>>2]|0)+1;break c}}else m=p+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1;F=51}while(0);if((F|0)==51)n=_d(p,224,0)|0;if(!n)t=0;else{m=n+104|0;o=m+120|0;do{c[m>>2]=0;m=m+4|0}while((m|0)<(o|0));c[n>>2]=p;m=p+4|0;o=c[m>>2]|0;if(o|0)c[o+4>>2]=n;c[n+8>>2]=o;c[n+4>>2]=0;c[m>>2]=n;c[n+20>>2]=381479589;c[n+12>>2]=f;c[s>>2]=n;Di(n,61,0,1,0)|0;t=n}}else t=m;while(0);n=f+32|0;o=c[n>>2]|0;m=f+28|0;p=c[m>>2]|0;if((p|0)<4){m=f+44|0;n=c[m>>2]|0;r=n+1|0;n=n+4|0}else{c[n>>2]=o+4;r=o;n=p+-4|0}c[m>>2]=n;do if(!z){if((a[j>>0]|0)!=-88){C=Jj(f,j,r)|0;F=66;break}m=c[s>>2]|0;n=c[j+28>>2]|0;o=m+108|0;p=c[o>>2]|0;if((c[m+112>>2]|0)>(p|0)){c[o>>2]=p+1;z=c[m+104>>2]|0;a[z+(p*20|0)>>0]=78;b[z+(p*20|0)+2>>1]=0;c[z+(p*20|0)+4>>2]=n;c[z+(p*20|0)+8>>2]=r;c[z+(p*20|0)+12>>2]=0;c[z+(p*20|0)+16>>2]=0;a[z+(p*20|0)+1>>0]=0;break}else{Di(m,78,n,r,0)|0;break}}else{C=Jj(f,0,r)|0;F=66}while(0);do if(((F|0)==66?(C|0)!=(r|0):0)?(B=c[s>>2]|0,B|0):0){m=B+108|0;n=c[m>>2]|0;if((c[B+112>>2]|0)>(n|0)){c[m>>2]=n+1;B=c[B+104>>2]|0;a[B+(n*20|0)>>0]=79;b[B+(n*20|0)+2>>1]=0;c[B+(n*20|0)+4>>2]=C;c[B+(n*20|0)+8>>2]=r;c[B+(n*20|0)+12>>2]=0;c[B+(n*20|0)+16>>2]=0;a[B+(n*20|0)+1>>0]=0;break}else{Di(B,79,C,r,0)|0;break}}while(0);q=r+1|0;do if(!A){if((a[k>>0]|0)!=-88){E=Jj(f,k,q)|0;F=78;break}m=c[s>>2]|0;n=c[k+28>>2]|0;o=m+108|0;p=c[o>>2]|0;if((c[m+112>>2]|0)>(p|0)){c[o>>2]=p+1;C=c[m+104>>2]|0;a[C+(p*20|0)>>0]=78;b[C+(p*20|0)+2>>1]=0;c[C+(p*20|0)+4>>2]=n;c[C+(p*20|0)+8>>2]=q;c[C+(p*20|0)+12>>2]=0;c[C+(p*20|0)+16>>2]=0;a[C+(p*20|0)+1>>0]=0;break}else{Di(m,78,n,q,0)|0;break}}else{E=Jj(f,0,q)|0;F=78}while(0);do if(((F|0)==78?(E|0)!=(q|0):0)?(D=c[s>>2]|0,D|0):0){m=D+108|0;n=c[m>>2]|0;if((c[D+112>>2]|0)>(n|0)){c[m>>2]=n+1;D=c[D+104>>2]|0;a[D+(n*20|0)>>0]=79;b[D+(n*20|0)+2>>1]=0;c[D+(n*20|0)+4>>2]=E;c[D+(n*20|0)+8>>2]=q;c[D+(n*20|0)+12>>2]=0;c[D+(n*20|0)+16>>2]=0;a[D+(n*20|0)+1>>0]=0;break}else{Di(D,79,E,q,0)|0;break}}while(0);q=r+2|0;do if(!y){if((a[l>>0]|0)!=-88){H=Jj(f,l,q)|0;F=90;break}m=c[s>>2]|0;n=c[l+28>>2]|0;o=m+108|0;p=c[o>>2]|0;if((c[m+112>>2]|0)>(p|0)){c[o>>2]=p+1;f=c[m+104>>2]|0;a[f+(p*20|0)>>0]=78;b[f+(p*20|0)+2>>1]=0;c[f+(p*20|0)+4>>2]=n;c[f+(p*20|0)+8>>2]=q;c[f+(p*20|0)+12>>2]=0;c[f+(p*20|0)+16>>2]=0;a[f+(p*20|0)+1>>0]=0;break}else{Di(m,78,n,q,0)|0;break}}else{H=Jj(f,0,q)|0;F=90}while(0);do if(((F|0)==90?(H|0)!=(q|0):0)?(G=c[s>>2]|0,G|0):0){m=G+108|0;n=c[m>>2]|0;if((c[G+112>>2]|0)>(n|0)){c[m>>2]=n+1;G=c[G+104>>2]|0;a[G+(n*20|0)>>0]=79;b[G+(n*20|0)+2>>1]=0;c[G+(n*20|0)+4>>2]=H;c[G+(n*20|0)+8>>2]=q;c[G+(n*20|0)+12>>2]=0;c[G+(n*20|0)+16>>2]=0;a[G+(n*20|0)+1>>0]=0;break}else{Di(G,79,H,q,0)|0;break}}while(0);if(t){n=r+3|0;o=n-(a[h>>0]|0)|0;p=t+108|0;m=c[p>>2]|0;q=t+112|0;if((c[q>>2]|0)>(m|0)){c[p>>2]=m+1;H=c[t+104>>2]|0;a[H+(m*20|0)>>0]=63;b[H+(m*20|0)+2>>1]=0;c[H+(m*20|0)+4>>2]=0;c[H+(m*20|0)+8>>2]=o;c[H+(m*20|0)+12>>2]=n;c[H+(m*20|0)+16>>2]=0;a[H+(m*20|0)+1>>0]=0}else m=Di(t,63,0,o,n)|0;n=c[t>>2]|0;d:do if(!(a[n+81>>0]|0)){if((m|0)<0)m=(c[p>>2]|0)+-1|0;n=c[t+104>>2]|0;o=n+(m*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(m*20|0)+16>>2]=h;a[o>>0]=-8;break}else{Ei(t,n+(m*20|0)|0,h,-8);break}}else if(c[h+4>>2]&16|0){do if(n|0){if(c[n+480>>2]|0){Xd(n,h);break d}m=h;if((c[n+304>>2]|0)>>>0<=m>>>0){if((c[n+308>>2]|0)>>>0<=m>>>0)break;H=n+300|0;c[h>>2]=c[H>>2];c[H>>2]=h;break d}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{H=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);n=c[p>>2]|0;if((n|0)>0)b[(c[t+104>>2]|0)+((n+-1|0)*20|0)+2>>1]=d[h>>0]|0;m=(g|0)==24&1;if((c[q>>2]|0)>(n|0)){c[p>>2]=n+1;F=c[t+104>>2]|0;a[F+(n*20|0)>>0]=-98;b[F+(n*20|0)+2>>1]=0;c[F+(n*20|0)+4>>2]=m;c[F+(n*20|0)+8>>2]=0;c[F+(n*20|0)+12>>2]=0;c[F+(n*20|0)+16>>2]=0;a[F+(n*20|0)+1>>0]=0;F=120;break}else{Di(t,158,m,0,0)|0;F=120;break}}else F=120}else F=120;while(0);if((F|0)==120?j|0:0)F=121;if((F|0)==121)ni(I,j);if(k|0)ni(I,k);if(!l){Ra=J;return}ni(I,l);Ra=J;return}function dn(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,s=0,t=0,u=0,v=0,w=0;w=Ra;Ra=Ra+32|0;v=w+24|0;t=w+16|0;s=w+8|0;n=w;j=c[e>>2]|0;a:do if(d){i=(Eu(d)|0)&1073741823;if(i>>>0>4&(c[7327]|j&64|0)!=0?(Lu(d,46556,5)|0)==0:0){j=j|64;k=0;l=i+2|0;m=0;do{l=Sv(l|0,m|0,(a[d+k>>0]|0)==38|0,0)|0;m=L()|0;k=k+1|0}while((k|0)!=(i|0));k=pb(l,m)|0;if(!k){g=7;Ra=w;return g|0}b:do if((a[d+5>>0]|0)==47?(a[d+6>>0]|0)==47:0){l=7;c:while(1){switch(a[d+l>>0]|0){case 0:case 47:break c;default:{}}l=l+1|0}switch(l&2147483647|0){case 7:{l=7;break b}case 16:{i=d+7|0;if(!(Lu(46562,i,9)|0)){l=16;break b}break}default:i=d+7|0}c[n>>2]=l+-7;c[n+4>>2]=i;l=k;i=1;k=Bb(46572,n)|0;u=86;break a}else l=5;while(0);i=0;n=0;d:while(1){p=k+(i+-1)|0;e:while(1){m=a[d+l>>0]|0;switch(m<<24>>24){case 0:case 35:break d;default:{}}o=l+1|0;f:do if((m<<24>>24==37?(q=a[d+o>>0]|0,(a[880+(q&255)>>0]&8)!=0):0)?(r=a[d+(l+2)>>0]|0,(a[880+(r&255)>>0]&8)!=0):0){m=q<<24>>24;l=l+3|0;o=r<<24>>24;m=(0-(o>>>6&1)&9)+o&15|(0-(m>>>6&1)&9)+m<<4&240;if(m|0){u=37;break e}switch(n|0){case 0:while(1){switch(a[d+l>>0]|0){case 63:case 35:case 0:break f;default:{}}l=l+1|0}case 1:while(1){switch(a[d+l>>0]|0){case 38:case 61:case 35:case 0:break f;default:{}}l=l+1|0}case 2:while(1){switch(a[d+l>>0]|0){case 38:case 35:case 0:break f;default:{}}l=l+1|0}default:while(1){switch(a[d+l>>0]|0){case 35:case 0:break f;default:{}}l=l+1|0}}}else u=38;while(0);g:do if((u|0)==38){u=0;switch(n|0){case 0:{u=47;break e}case 2:{u=48;break e}case 1:break;default:{l=o;break e}}switch(m<<24>>24){case 38:case 61:break;default:{n=1;l=o;break e}}if(a[p>>0]|0){u=45;break e}l=o;while(1){switch(a[d+l>>0]|0){case 35:case 0:break g;default:{}}if((a[d+(l+-1)>>0]|0)==38)break g;l=l+1|0}}while(0)}if((u|0)==37){u=0;m=m&255}else if((u|0)==45){u=0;if(m<<24>>24==38){a[k+i>>0]=0;m=0;i=i+1|0;n=1;l=o}else{m=0;n=2;l=o}}else if((u|0)==47){u=0;if(m<<24>>24==63)u=49;else{n=0;l=o}}else if((u|0)==48){u=0;if(m<<24>>24==38)u=49;else{n=2;l=o}}if((u|0)==49){u=0;m=0;n=1;l=o}a[k+i>>0]=m;i=i+1|0}if((n|0)==1){a[k+i>>0]=0;i=i+1|0}a[k+i>>0]=0;a[k+(i+1)>>0]=0;i=k+(((Eu(k)|0)&1073741823)+1)|0;if(a[i>>0]|0){r=b;b=i;h:while(1){i:do if(!b){i=1;l=(Eu(1)|0)&1073741823;u=71}else{d=Eu(b)|0;i=b+((d&1073741823)+1)|0;l=(Eu(i)|0)&1073741823;switch(d&1073741823|0){case 3:if(!(Lu(46600,b,3)|0)){m=i;break i}else{u=71;break i}case 5:{if(!(Lu(46604,b,5)|0)){o=393216;p=-393217;q=46604;n=18576}else{u=71;break i}break}case 4:{if(!(Lu(58212,b,4)|0)){o=j&135;p=-136;q=31701;n=18608}else{u=71;break i}break}default:{u=71;break i}}b=c[n>>2]|0;if(!b){u=67;break h}m=0;while(1){if((l|0)==((Eu(b)|0)&1073741823|0)?(Lu(i,b,l)|0)==0:0)break;m=m+1|0;b=c[n+(m<<3)>>2]|0;if(!b){u=67;break h}}b=c[n+(m<<3)+4>>2]|0;if(!b){u=67;break h}if((b&-129|0)>(o|0)){u=69;break h}j=b|p&j;u=71}while(0);if((u|0)==71){u=0;m=r}b=i+(l+1)|0;if(!(a[b>>0]|0)){b=m;u=77;break a}else r=m}if((u|0)==67){c[s>>2]=q;c[s+4>>2]=i;l=k;i=1;k=Bb(46635,s)|0;u=86;break}else if((u|0)==69){c[t>>2]=q;c[t+4>>2]=i;l=k;i=3;k=Bb(46655,t)|0;u=86;break}}else u=77}else u=73}else{i=0;u=73}while(0);if((u|0)==73){k=pb(i+2|0,0)|0;if(!k){g=7;Ra=w;return g|0}if(i|0)ew(k|0,d|0,i|0)|0;a[k+i>>0]=0;a[k+(i+1)>>0]=0;j=j&-65;u=77}j:do if((u|0)==77){k:do if(!(mb()|0)){i=c[14770]|0;l=(i|0)==0;if((b|0)==0|l){c[f>>2]=i;if(l)break;else{i=0;break j}}while(1){if(!(Bu(b,c[i+16>>2]|0)|0))break;i=c[i+12>>2]|0;if(!i){u=83;break k}}c[f>>2]=i;i=0;break j}else u=83;while(0);if((u|0)==83)c[f>>2]=0;c[v>>2]=b;l=k;i=1;k=Bb(46679,v)|0;u=86}while(0);do if((u|0)==86){c[h>>2]=k;if(l)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);k=0;break}else{k=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);k=0;break}else k=0}while(0);c[e>>2]=j;c[g>>2]=k;g=i;Ra=w;return g|0}function en(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;do if(d){i=c[d+4>>2]|0;c[i+4>>2]=c[d>>2];h=i+48|0;d=c[h>>2]|0;if(!d){if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](84)|0;if(!d)g=26;else g=27}else{d=Wa[c[29356>>2]&127](84)|0;if((c[14985]|0)>>>0<84)c[14985]=84;f=59064;e=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&e>>>0>0){g=c[14978]|0;f=Tv(e|0,f|0,d|0,((d|0)<0)<<31>>31|0)|0;e=L()|0;c[14768]=((e|0)<0|(e|0)==0&f>>>0<=g>>>0)&1}d=Wa[c[29340>>2]&127](d)|0;if(d){e=Wa[c[29352>>2]&127](d)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0>(c[14987]|0)>>>0){c[14987]=e;g=27}else g=27}else g=26}if((g|0)==26){c[h>>2]=0;c[i+52>>2]=95;break}else if((g|0)==27){f=d;g=f+84|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(g|0));c[h>>2]=d;c[i+52>>2]=95;g=34;break}}else g=34}else{if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](84)|0;if(!d)break}else{d=Wa[c[29356>>2]&127](84)|0;if((c[14985]|0)>>>0<84)c[14985]=84;f=59064;e=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&e>>>0>0){i=c[14978]|0;h=Tv(e|0,f|0,d|0,((d|0)<0)<<31>>31|0)|0;f=L()|0;c[14768]=((f|0)<0|(f|0)==0&h>>>0<=i>>>0)&1}e=Wa[c[29340>>2]&127](d)|0;if(!e)break;d=Wa[c[29352>>2]&127](e)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0){c[14987]=d;d=e}else d=e}f=d;g=f+84|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(g|0));g=34}while(0);if((g|0)==34){if(a[d+76>>0]|0){b=d;return b|0}e=d+77|0;f=d+8|0;g=f+64|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));a[e>>0]=1;b=d;return b|0}d=b+81|0;if(a[d>>0]|0){b=0;return b|0}if(a[b+82>>0]|0){b=0;return b|0}a[d>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;d=b+272|0;c[d>>2]=(c[d>>2]|0)+1;d=c[b+236>>2]|0;if(!d){b=0;return b|0}c[d+12>>2]=7;b=0;return b|0}function fn(e,f,g){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,x=0;w=Ra;Ra=Ra+160|0;r=w+144|0;q=w+136|0;p=w+128|0;o=w;f=c[g>>2]|0;do if(f){g=b[f+8>>1]|0;if((g&514)==514?(a[f+10>>0]|0)==1:0){f=c[f+16>>2]|0;break}if(!(g&1))f=Gg(f,1)|0;else f=0}else f=0;while(0);v=c[(c[e>>2]|0)+32>>2]|0;n=(f|0)==0?59952:f;t=v+20|0;l=c[t>>2]|0;a:do if((l|0)>0){u=v+16|0;m=c[u>>2]|0;f=0;while(1){j=m+(f<<4)+4|0;k=c[j>>2]|0;if(k|0){h=c[m+(f<<4)>>2]|0;i=a[h>>0]|0;g=(d[208+(i&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0;if(!(i<<24>>24==0|(g|0)!=0)){i=n;do{h=h+1|0;i=i+1|0;x=a[h>>0]|0;g=(d[208+(x&255)>>0]|0)-(d[208+(d[i>>0]|0)>>0]|0)|0}while(!(x<<24>>24==0|(g|0)!=0))}if(!g)break}f=f+1|0;if((f|0)>=(l|0)){s=15;break a}}if(f>>>0<2){c[q>>2]=n;Cb(128,o,46730,q)|0;break}if((a[k+8>>0]|0)==0?(c[k+16>>2]|0)==0:0){ug(k);c[j>>2]=0;c[m+(f<<4)+12>>2]=0;if((c[t>>2]|0)>2){j=v+480|0;k=v+304|0;l=v+308|0;m=v+300|0;i=2;f=2;do{g=c[u>>2]|0;h=g+(i<<4)|0;if(!(c[g+(i<<4)+4>>2]|0)){g=c[h>>2]|0;do if(g|0){if(c[j>>2]|0){Xd(v,g);break}x=g;if((c[k>>2]|0)>>>0<=x>>>0?(c[l>>2]|0)>>>0>x>>>0:0){c[g>>2]=c[m>>2];c[m>>2]=g;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{x=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[h>>2]=0}else{if((f|0)<(i|0)){x=g+(f<<4)|0;c[x>>2]=c[h>>2];c[x+4>>2]=c[h+4>>2];c[x+8>>2]=c[h+8>>2];c[x+12>>2]=c[h+12>>2]}f=f+1|0}i=i+1|0}while((i|0)<(c[t>>2]|0));c[t>>2]=f;if((f|0)>=3){Ra=w;return}}else c[t>>2]=2;f=c[u>>2]|0;g=v+412|0;if((f|0)==(g|0)){Ra=w;return};c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];c[g+16>>2]=c[f+16>>2];c[g+20>>2]=c[f+20>>2];c[g+24>>2]=c[f+24>>2];c[g+28>>2]=c[f+28>>2];do if(f|0){if(c[v+480>>2]|0){Xd(v,f);break}x=f;if((c[v+304>>2]|0)>>>0<=x>>>0?(c[v+308>>2]|0)>>>0>x>>>0:0){x=v+300|0;c[f>>2]=c[x>>2];c[x>>2]=f;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{x=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);c[u>>2]=g;Ra=w;return}c[r>>2]=n;Cb(128,o,46756,r)|0}else s=15;while(0);if((s|0)==15){c[p>>2]=n;Cb(128,o,46709,p)|0}c[e+20>>2]=1;yc(c[e>>2]|0,o,-1,1,-1)|0;Ra=w;return}function gn(e,f,g){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;if(c[f+56>>2]|0)return;h=c[f+8>>2]|0;if(!h)return;p=f+72|0;o=e+116|0;if(!g){do{i=c[p>>2]|0;if(!i)f=-1e6;else{j=c[(c[e>>2]|0)+16>>2]|0;f=0;while(1)if((c[j+(f<<4)+12>>2]|0)==(i|0))break;else f=f+1|0}l=c[o>>2]|0;l=(l|0)==0?e:l;i=l+84|0;j=c[i>>2]|0;k=1<>2]=j|k,(f|0)==1):0)Oe(l)|0;g=l+80|0;c[g>>2]=c[g>>2]|k;bl(e,h,-1);h=c[h+20>>2]|0}while((h|0)!=0);return}do{f=b[h+52>>1]|0;a:do if(f<<16>>16){m=c[h+4>>2]|0;n=h+32|0;l=f&65535;k=0;while(1){if((b[m+(k<<1)>>1]|0)>-1){i=c[(c[n>>2]|0)+(k<<2)>>2]|0;j=a[i>>0]|0;f=(d[208+(j&255)>>0]|0)-(d[208+(d[g>>0]|0)>>0]|0)|0;if(!(j<<24>>24==0|(f|0)!=0)){j=g;do{i=i+1|0;j=j+1|0;q=a[i>>0]|0;f=(d[208+(q&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(q<<24>>24==0|(f|0)!=0))}if(!f)break}k=k+1|0;if(k>>>0>=l>>>0)break a}i=c[p>>2]|0;if(!i)f=-1e6;else{j=c[(c[e>>2]|0)+16>>2]|0;f=0;while(1)if((c[j+(f<<4)+12>>2]|0)==(i|0))break;else f=f+1|0}l=c[o>>2]|0;l=(l|0)==0?e:l;i=l+84|0;j=c[i>>2]|0;k=1<>2]=j|k,(f|0)==1):0)Oe(l)|0;q=l+80|0;c[q>>2]=c[q>>2]|k;bl(e,h,-1)}while(0);h=c[h+20>>2]|0}while((h|0)!=0);return}function hn(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,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;A=Ra;Ra=Ra+96|0;t=A+64|0;r=A+48|0;q=A+32|0;p=A+16|0;o=A;y=A+80|0;z=A+92|0;x=c[d>>2]|0;m=d+8|0;j=c[m>>2]|0;do if(!j){if((c[d+116>>2]|0)==0?(b[x+76>>1]&8)==0:0)a[d+23>>0]=1;a:do if(c[x+272>>2]|0){if(!(a[x+81>>0]|0))l=15}else{do if((e[x+276>>1]|0)>=224){j=x+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];l=x+284|0;c[l>>2]=(c[l>>2]|0)+1;l=16;break a}j=x+296|0;k=c[j>>2]|0;if(!k){j=x+292|0;break}else{c[j>>2]=c[k>>2];l=x+284|0;c[l>>2]=(c[l>>2]|0)+1;l=16;break a}}else j=x+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;l=15}while(0);if((l|0)==15){k=_d(x,224,0)|0;l=16}if((l|0)==16?k|0:0){j=k+104|0;l=j+120|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(l|0));c[k>>2]=x;j=x+4|0;l=c[j>>2]|0;if(l|0)c[l+4>>2]=k;c[k+8>>2]=l;c[k+4>>2]=0;c[j>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=d;c[m>>2]=k;Di(k,61,0,1,0)|0;u=k;break}Ra=A;return}else u=j;while(0);n=(c[x+16>>2]|0)+(f<<4)|0;j=d+92|0;v=u+108|0;s=u+112|0;w=u+104|0;k=c[n>>2]|0;l=Sd(x,35174,k)|0;m=(l|0)==0;do if(!h){do if(!m){k=c[l+28>>2]|0;c[y>>2]=k;a[z>>0]=0;Hj(d,f,k,1,35174);j=c[v>>2]|0;if((c[s>>2]|0)>(j|0)){c[v>>2]=j+1;l=c[w>>2]|0;a[l+(j*20|0)>>0]=-119;b[l+(j*20|0)+2>>1]=0;c[l+(j*20|0)+4>>2]=k;c[l+(j*20|0)+8>>2]=f;c[l+(j*20|0)+12>>2]=0;c[l+(j*20|0)+16>>2]=0;a[l+(j*20|0)+1>>0]=0;l=0;break}else{Di(u,137,k,f,0)|0;l=0;break}}else{c[o>>2]=k;c[o+4>>2]=35174;c[o+8>>2]=46824;Ak(d,46863,o);k=c[j>>2]|0;c[y>>2]=k;a[z>>0]=16;l=16}while(0);j=Sd(x,46837,c[n>>2]|0)|0;do if(j|0){j=c[j+28>>2]|0;c[y+4>>2]=j;a[z+1>>0]=0;Hj(d,f,j,1,46837);m=c[v>>2]|0;if((c[s>>2]|0)>(m|0)){c[v>>2]=m+1;t=c[w>>2]|0;a[t+(m*20|0)>>0]=-119;b[t+(m*20|0)+2>>1]=0;c[t+(m*20|0)+4>>2]=j;c[t+(m*20|0)+8>>2]=f;c[t+(m*20|0)+12>>2]=0;c[t+(m*20|0)+16>>2]=0;a[t+(m*20|0)+1>>0]=0;break}else{Di(u,137,j,f,0)|0;break}}while(0);j=Sd(x,46850,c[n>>2]|0)|0;if(j){m=c[j+28>>2]|0;c[y+8>>2]=m;a[z+2>>0]=0;Hj(d,f,m,1,46850);j=c[v>>2]|0;if((c[s>>2]|0)>(j|0)){c[v>>2]=j+1;z=c[w>>2]|0;a[z+(j*20|0)>>0]=-119;b[z+(j*20|0)+2>>1]=0;c[z+(j*20|0)+4>>2]=m;c[z+(j*20|0)+8>>2]=f;c[z+(j*20|0)+12>>2]=0;c[z+(j*20|0)+16>>2]=0;a[z+(j*20|0)+1>>0]=0;break}else{Di(u,137,m,f,0)|0;break}}}else{if(m){c[p>>2]=k;c[p+4>>2]=35174;c[p+8>>2]=46824;Ak(d,46863,p);k=c[j>>2]|0;c[y>>2]=k;a[z>>0]=16;l=16}else{k=c[l+28>>2]|0;c[y>>2]=k;a[z>>0]=0;Hj(d,f,k,1,35174);c[q>>2]=c[n>>2];c[q+4>>2]=35174;c[q+8>>2]=i;c[q+12>>2]=h;Ak(d,42751,q);l=0}j=c[n>>2]|0;m=Sd(x,46837,j)|0;if(m){j=c[m+28>>2]|0;c[y+4>>2]=j;a[z+1>>0]=0;Hj(d,f,j,1,46837);c[r>>2]=c[n>>2];c[r+4>>2]=46837;c[r+8>>2]=i;c[r+12>>2]=h;Ak(d,42751,r);j=c[n>>2]|0}j=Sd(x,46850,j)|0;if(j){x=c[j+28>>2]|0;c[y+8>>2]=x;a[z+2>>0]=0;Hj(d,f,x,1,46850);c[t>>2]=c[n>>2];c[t+4>>2]=46850;c[t+8>>2]=i;c[t+12>>2]=h;Ak(d,42751,t)}}while(0);j=c[v>>2]|0;if((c[s>>2]|0)>(j|0)){c[v>>2]=j+1;z=c[w>>2]|0;a[z+(j*20|0)>>0]=109;b[z+(j*20|0)+2>>1]=0;c[z+(j*20|0)+4>>2]=g;c[z+(j*20|0)+8>>2]=k;c[z+(j*20|0)+12>>2]=f;c[z+(j*20|0)+16>>2]=0;a[z+(j*20|0)+1>>0]=0}else j=Di(u,109,g,k,f)|0;if(!(a[(c[u>>2]|0)+81>>0]|0)){g=c[w>>2]|0;a[g+(j*20|0)+1>>0]=-3;c[g+(j*20|0)+16>>2]=3}j=c[v>>2]|0;if((j|0)<=0){Ra=A;return}b[(c[w>>2]|0)+((j+-1|0)*20|0)+2>>1]=l&255;Ra=A;return}function jn(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 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,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;fa=Ra;Ra=Ra+16|0;t=fa+8|0;s=fa;Z=c[f>>2]|0;_=j+1|0;$=j+2|0;ea=j+3|0;da=j+4|0;ca=j+5|0;ba=j+6|0;W=j+7|0;X=f+44|0;Y=c[X>>2]|0;c[X>>2]=(Y|0)>(W|0)?Y:W;Y=f+8|0;l=c[Y>>2]|0;if(!l){if((c[f+116>>2]|0)==0?(b[Z+76>>1]&8)==0:0)a[f+23>>0]=1;a:do if(c[Z+272>>2]|0)if(!(a[Z+81>>0]|0))V=15;else{Ra=fa;return}else{do if((e[Z+276>>1]|0)>=224){l=Z+300|0;m=c[l>>2]|0;if(m|0){c[l>>2]=c[m>>2];aa=Z+284|0;c[aa>>2]=(c[aa>>2]|0)+1;break a}l=Z+296|0;m=c[l>>2]|0;if(!m){l=Z+292|0;break}else{c[l>>2]=c[m>>2];aa=Z+284|0;c[aa>>2]=(c[aa>>2]|0)+1;break a}}else l=Z+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;V=15}while(0);if((V|0)==15)m=_d(Z,224,0)|0;if(!m){Ra=fa;return}o=m+104|0;p=o+120|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(p|0));c[m>>2]=Z;l=Z+4|0;n=c[l>>2]|0;if(n|0)c[n+4>>2]=m;c[m+8>>2]=n;c[m+4>>2]=0;c[l>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=f;c[Y>>2]=m;Di(m,61,0,1,0)|0;aa=m}else aa=l;if((g|0)==0|(aa|0)==0){Ra=fa;return}q=g+28|0;m=c[q>>2]|0;if(!m){Ra=fa;return}l=c[g>>2]|0;if(!(md(46886,l,31415,92)|0)){Ra=fa;return}o=c[g+72>>2]|0;p=c[Z+16>>2]|0;if(!o)n=-1e6;else{n=0;while(1)if((c[p+(n<<4)+12>>2]|0)==(o|0))break;else n=n+1|0}o=c[p+(n<<4)>>2]|0;p=c[f>>2]|0;do if(((a[p+165>>0]|0)==0?(a[f+200>>0]|0)==0:0)?(r=c[p+312>>2]|0,(r|0)!=0):0){l=$a[r&127](c[p+316>>2]|0,28,l,0,o,c[f+240>>2]|0)|0;if((l|0)==1){cd(f,39216,s);c[f+12>>2]=23;Ra=fa;return}if((l|2|0)!=2){cd(f,39231,t);c[f+12>>2]=1;Ra=fa;return}if(!l){m=c[q>>2]|0;l=c[g>>2]|0;break}else{Ra=fa;return}}while(0);Hj(f,n,m,0,l);S=k+1|0;T=k+2|0;m=f+40|0;l=c[m>>2]|0;c[m>>2]=(l|0)>(T|0)?l:T;Gj(f,k,n,g,108);m=c[g>>2]|0;T=aa+108|0;l=c[T>>2]|0;U=aa+112|0;if((c[U>>2]|0)>(l|0)){c[T>>2]=l+1;R=c[aa+104>>2]|0;a[R+(l*20|0)>>0]=110;b[R+(l*20|0)+2>>1]=0;c[R+(l*20|0)+4>>2]=0;c[R+(l*20|0)+8>>2]=da;c[R+(l*20|0)+12>>2]=0;c[R+(l*20|0)+16>>2]=0;a[R+(l*20|0)+1>>0]=0}else l=Di(aa,110,0,da,0)|0;if(!(a[(c[aa>>2]|0)+81>>0]|0)){if((l|0)<0)l=(c[T>>2]|0)+-1|0;Ei(aa,(c[aa+104>>2]|0)+(l*20|0)|0,m,0)}m=c[g+8>>2]|0;R=(h|0)==0;if(!m)l=1;else{B=g+36|0;C=aa+104|0;D=f+56|0;E=Z+272|0;F=Z+276|0;G=Z+81|0;H=Z+288|0;I=Z+300|0;J=Z+296|0;K=Z+284|0;L=Z+292|0;M=aa+12|0;N=(Z|0)==0;O=Z+480|0;P=Z+304|0;Q=Z+308|0;l=1;do{b:do if(R|(m|0)==(h|0)){l=(c[m+36>>2]|0)==0?0:l;o=m+55|0;o=d[o>>0]|d[o+1>>0]<<8;if(!((c[B>>2]&32|0)!=0&(o&3)==2)){q=e[m+52>>1]|0;p=c[m>>2]|0;if(!(o&8))t=q;else t=e[m+50>>1]|0}else{q=e[m+50>>1]|0;t=q;p=c[g>>2]|0}A=t+-1|0;o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;z=c[C>>2]|0;a[z+(o*20|0)>>0]=110;b[z+(o*20|0)+2>>1]=0;c[z+(o*20|0)+4>>2]=0;c[z+(o*20|0)+8>>2]=ca;c[z+(o*20|0)+12>>2]=0;c[z+(o*20|0)+16>>2]=0;a[z+(o*20|0)+1>>0]=0}else o=Di(aa,110,0,ca,0)|0;if(!(a[(c[aa>>2]|0)+81>>0]|0)){if((o|0)<0)o=(c[T>>2]|0)+-1|0;Ei(aa,(c[C>>2]|0)+(o*20|0)|0,p,0)}p=c[X>>2]|0;o=A+W|0;c[X>>2]=(p|0)>(o|0)?p:o;o=c[m+44>>2]|0;p=c[T>>2]|0;if((c[U>>2]|0)>(p|0)){c[T>>2]=p+1;z=c[C>>2]|0;a[z+(p*20|0)>>0]=108;b[z+(p*20|0)+2>>1]=0;c[z+(p*20|0)+4>>2]=S;c[z+(p*20|0)+8>>2]=o;c[z+(p*20|0)+12>>2]=n;c[z+(p*20|0)+16>>2]=0;a[z+(p*20|0)+1>>0]=0}else Di(aa,108,S,o,n)|0;o=c[Y>>2]|0;r=Ij(f,m)|0;c:do if(r|0){p=c[o>>2]|0;if(!(a[p+81>>0]|0)){y=c[o+104>>2]|0;z=(c[o+108>>2]|0)+-1|0;a[y+(z*20|0)+1>>0]=-9;c[y+(z*20|0)+16>>2]=r;break}if(c[p+480>>2]|0)break;z=(c[r>>2]|0)+-1|0;c[r>>2]=z;if(z|0)break;o=c[r+12>>2]|0;do if(o|0){if(c[o+480>>2]|0){Xd(o,r);break c}p=r;if((c[o+304>>2]|0)>>>0>p>>>0)break;if((c[o+308>>2]|0)>>>0<=p>>>0)break;z=o+300|0;c[r>>2]=c[z>>2];c[z>>2]=r;break c}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{z=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;z=c[C>>2]|0;a[z+(o*20|0)>>0]=70;b[z+(o*20|0)+2>>1]=0;c[z+(o*20|0)+4>>2]=q;c[z+(o*20|0)+8>>2]=$;c[z+(o*20|0)+12>>2]=0;c[z+(o*20|0)+16>>2]=0;a[z+(o*20|0)+1>>0]=0}else Di(aa,70,q,$,0)|0;s=m+50|0;o=e[s>>1]|0;p=c[T>>2]|0;if((c[U>>2]|0)>(p|0)){c[T>>2]=p+1;z=c[C>>2]|0;a[z+(p*20|0)>>0]=70;b[z+(p*20|0)+2>>1]=0;c[z+(p*20|0)+4>>2]=o;c[z+(p*20|0)+8>>2]=ea;c[z+(p*20|0)+12>>2]=0;c[z+(p*20|0)+16>>2]=0;a[z+(p*20|0)+1>>0]=0}else Di(aa,70,o,ea,0)|0;o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;z=c[C>>2]|0;a[z+(o*20|0)>>0]=63;b[z+(o*20|0)+2>>1]=0;c[z+(o*20|0)+4>>2]=0;c[z+(o*20|0)+8>>2]=$;c[z+(o*20|0)+12>>2]=_;c[z+(o*20|0)+16>>2]=0;a[z+(o*20|0)+1>>0]=0}else o=Di(aa,63,0,$,_)|0;do if(!(a[(c[aa>>2]|0)+81>>0]|0)){if((o|0)<0)o=(c[T>>2]|0)+-1|0;p=c[C>>2]|0;q=p+(o*20|0)+1|0;if(!(a[q>>0]|0)){c[p+(o*20|0)+16>>2]=30184;a[q>>0]=-8;break}else{Ei(aa,p+(o*20|0)|0,30184,-8);break}}while(0);o=c[T>>2]|0;if((o|0)>0)b[(c[C>>2]|0)+((o+-1|0)*20|0)+2>>1]=2;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;z=c[C>>2]|0;a[z+(o*20|0)>>0]=36;b[z+(o*20|0)+2>>1]=0;c[z+(o*20|0)+4>>2]=S;c[z+(o*20|0)+8>>2]=0;c[z+(o*20|0)+12>>2]=0;c[z+(o*20|0)+16>>2]=0;a[z+(o*20|0)+1>>0]=0;z=o}else z=Di(aa,36,S,0,0)|0;o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;y=c[C>>2]|0;a[y+(o*20|0)>>0]=70;b[y+(o*20|0)+2>>1]=0;c[y+(o*20|0)+4>>2]=0;c[y+(o*20|0)+8>>2]=$;c[y+(o*20|0)+12>>2]=0;c[y+(o*20|0)+16>>2]=0;a[y+(o*20|0)+1>>0]=0}else Di(aa,70,0,$,0)|0;o=c[T>>2]|0;d:do if(t>>>0>1){y=c[D>>2]|0;w=y+-1|0;c[D>>2]=w;p=A<<2;e:do if(c[E>>2]|0)if(!(a[G>>0]|0))V=105;else break b;else{do if(0<0|(0==0?(e[F>>1]|0)>>>0

        >>0:0))o=H;else{o=c[I>>2]|0;if(o|0){c[I>>2]=c[o>>2];c[K>>2]=(c[K>>2]|0)+1;x=o;break e}o=c[J>>2]|0;if(!o){o=L;break}c[J>>2]=c[o>>2];c[K>>2]=(c[K>>2]|0)+1;x=o;break e}while(0);c[o>>2]=(c[o>>2]|0)+1;V=105}while(0);if((V|0)==105){V=0;x=_d(Z,p,0)|0}if(!x)break b;o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;p=c[C>>2]|0;a[p+(o*20|0)>>0]=11;o=p+(o*20|0)+1|0;p=o+19|0;do{a[o>>0]=0;o=o+1|0}while((o|0)<(p|0))}else Di(aa,11,0,0,0)|0;r=c[T>>2]|0;do if((A|0)==1){if((b[s>>1]|0)!=1)break;if(!(a[m+54>>0]|0))break;if((c[U>>2]|0)>(r|0)){c[T>>2]=r+1;v=c[C>>2]|0;a[v+(r*20|0)>>0]=51;b[v+(r*20|0)+2>>1]=0;c[v+(r*20|0)+4>>2]=W;c[v+(r*20|0)+8>>2]=w;c[v+(r*20|0)+12>>2]=0;c[v+(r*20|0)+16>>2]=0;a[v+(r*20|0)+1>>0]=0;break}else{Di(aa,51,W,w,0)|0;break}}while(0);v=m+32|0;u=0;do{o=c[(c[v>>2]|0)+(u<<2)>>2]|0;q=c[f>>2]|0;p=a[q+78>>0]|0;t=a[q+165>>0]|0;q=Zi(q,p,o,t&255)|0;do if(!(t<<24>>24)){if(!q){q=_i(f,p,0,o)|0;break}if(c[q+12>>2]|0)break;q=_i(f,p,q,o)|0}while(0);o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;t=c[C>>2]|0;a[t+(o*20|0)>>0]=70;b[t+(o*20|0)+2>>1]=0;c[t+(o*20|0)+4>>2]=u;c[t+(o*20|0)+8>>2]=$;c[t+(o*20|0)+12>>2]=0;c[t+(o*20|0)+16>>2]=0;a[t+(o*20|0)+1>>0]=0}else Di(aa,70,u,$,0)|0;o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;t=c[C>>2]|0;a[t+(o*20|0)>>0]=90;b[t+(o*20|0)+2>>1]=0;c[t+(o*20|0)+4>>2]=S;c[t+(o*20|0)+8>>2]=u;c[t+(o*20|0)+12>>2]=ea;c[t+(o*20|0)+16>>2]=0;a[t+(o*20|0)+1>>0]=0}else Di(aa,90,S,u,ea)|0;o=u+W|0;p=c[T>>2]|0;if((c[U>>2]|0)>(p|0)){c[T>>2]=p+1;t=c[C>>2]|0;a[t+(p*20|0)>>0]=52;b[t+(p*20|0)+2>>1]=0;c[t+(p*20|0)+4>>2]=ea;c[t+(p*20|0)+8>>2]=0;c[t+(p*20|0)+12>>2]=o;c[t+(p*20|0)+16>>2]=0;a[t+(p*20|0)+1>>0]=0}else p=Di(aa,52,ea,0,o)|0;do if(!(a[(c[aa>>2]|0)+81>>0]|0)){if((p|0)<0)o=(c[T>>2]|0)+-1|0;else o=p;s=c[C>>2]|0;t=s+(o*20|0)+1|0;if(a[t>>0]|0){Ei(aa,s+(o*20|0)|0,q,-2);break}if(!q)break;c[s+(o*20|0)+16>>2]=q;a[t>>0]=-2}while(0);c[x+(u<<2)>>2]=p;o=c[T>>2]|0;if((o|0)>0)b[(c[C>>2]|0)+((o+-1|0)*20|0)+2>>1]=128;u=u+1|0}while((u|0)<(A|0));if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;v=c[C>>2]|0;a[v+(o*20|0)>>0]=70;b[v+(o*20|0)+2>>1]=0;c[v+(o*20|0)+4>>2]=A;c[v+(o*20|0)+8>>2]=$;c[v+(o*20|0)+12>>2]=0;c[v+(o*20|0)+16>>2]=0;a[v+(o*20|0)+1>>0]=0}else Di(aa,70,A,$,0)|0;o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;v=c[C>>2]|0;a[v+(o*20|0)>>0]=11;b[v+(o*20|0)+2>>1]=0;c[v+(o*20|0)+4>>2]=0;c[v+(o*20|0)+8>>2]=w;c[v+(o*20|0)+12>>2]=0;c[v+(o*20|0)+16>>2]=0;a[v+(o*20|0)+1>>0]=0}else Di(aa,11,0,w,0)|0;q=c[T>>2]|0;p=a[(c[aa>>2]|0)+81>>0]|0;if(!(p<<24>>24))o=(c[C>>2]|0)+((((r|0)<1?q:r)+-1|0)*20|0)|0;else o=59308;c[o+8>>2]=q;o=0;s=q;while(1){q=c[x+(o<<2)>>2]|0;if(!(p<<24>>24))p=(c[C>>2]|0)+(((q|0)<0?s+-1|0:q)*20|0)|0;else p=59308;c[p+8>>2]=s;p=o+W|0;if((c[U>>2]|0)>(s|0)){c[T>>2]=s+1;w=c[C>>2]|0;a[w+(s*20|0)>>0]=90;b[w+(s*20|0)+2>>1]=0;c[w+(s*20|0)+4>>2]=S;c[w+(s*20|0)+8>>2]=o;c[w+(s*20|0)+12>>2]=p;c[w+(s*20|0)+16>>2]=0;a[w+(s*20|0)+1>>0]=0}else Di(aa,90,S,o,p)|0;o=o+1|0;if((o|0)>=(A|0))break;p=a[(c[aa>>2]|0)+81>>0]|0;s=c[T>>2]|0}p=c[M>>2]|0;o=0-y|0;if(((c[p+56>>2]|0)+(c[p+60>>2]|0)|0)<0)mk(p,aa,o);else c[(c[p+64>>2]|0)+(o<<2)>>2]=c[T>>2];do if(!N){if(c[O>>2]|0){Xd(Z,x);break d}o=x;if((c[P>>2]|0)>>>0>o>>>0)break;if((c[Q>>2]|0)>>>0<=o>>>0)break;c[x>>2]=c[I>>2];c[I>>2]=x;break d}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](x);break}else{A=Wa[c[29352>>2]&127](x)|0;c[14978]=(c[14978]|0)-A;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](x);break}}else r=o;while(0);o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;A=c[C>>2]|0;a[A+(o*20|0)>>0]=63;b[A+(o*20|0)+2>>1]=0;c[A+(o*20|0)+4>>2]=1;c[A+(o*20|0)+8>>2]=_;c[A+(o*20|0)+12>>2]=ea;c[A+(o*20|0)+16>>2]=0;a[A+(o*20|0)+1>>0]=0}else o=Di(aa,63,1,_,ea)|0;do if(!(a[(c[aa>>2]|0)+81>>0]|0)){if((o|0)<0)o=(c[T>>2]|0)+-1|0;p=c[C>>2]|0;q=p+(o*20|0)+1|0;if(!(a[q>>0]|0)){c[p+(o*20|0)+16>>2]=30224;a[q>>0]=-8;break}else{Ei(aa,p+(o*20|0)|0,30224,-8);break}}while(0);o=c[T>>2]|0;if((o|0)>0)b[(c[C>>2]|0)+((o+-1|0)*20|0)+2>>1]=2;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;A=c[C>>2]|0;a[A+(o*20|0)>>0]=5;b[A+(o*20|0)+2>>1]=0;c[A+(o*20|0)+4>>2]=S;c[A+(o*20|0)+8>>2]=r;c[A+(o*20|0)+12>>2]=0;c[A+(o*20|0)+16>>2]=0;a[A+(o*20|0)+1>>0]=0}else Di(aa,5,S,r,0)|0;o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;A=c[C>>2]|0;a[A+(o*20|0)>>0]=63;b[A+(o*20|0)+2>>1]=0;c[A+(o*20|0)+4>>2]=0;c[A+(o*20|0)+8>>2]=_;c[A+(o*20|0)+12>>2]=ba;c[A+(o*20|0)+16>>2]=0;a[A+(o*20|0)+1>>0]=0}else o=Di(aa,63,0,_,ba)|0;do if(!(a[(c[aa>>2]|0)+81>>0]|0)){if((o|0)<0)o=(c[T>>2]|0)+-1|0;p=c[C>>2]|0;q=p+(o*20|0)+1|0;if(!(a[q>>0]|0)){c[p+(o*20|0)+16>>2]=30264;a[q>>0]=-8;break}else{Ei(aa,p+(o*20|0)|0,30264,-8);break}}while(0);o=c[T>>2]|0;if((o|0)>0)b[(c[C>>2]|0)+((o+-1|0)*20|0)+2>>1]=1;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;A=c[C>>2]|0;a[A+(o*20|0)>>0]=92;b[A+(o*20|0)+2>>1]=0;c[A+(o*20|0)+4>>2]=da;c[A+(o*20|0)+8>>2]=3;c[A+(o*20|0)+12>>2]=ea;c[A+(o*20|0)+16>>2]=0;a[A+(o*20|0)+1>>0]=0}else o=Di(aa,92,da,3,ea)|0;if(!(a[(c[aa>>2]|0)+81>>0]|0)){if((o|0)<0)o=(c[T>>2]|0)+-1|0;Ei(aa,(c[C>>2]|0)+(o*20|0)|0,46896,0)}o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;A=c[C>>2]|0;a[A+(o*20|0)>>0]=121;b[A+(o*20|0)+2>>1]=0;c[A+(o*20|0)+4>>2]=i;c[A+(o*20|0)+8>>2]=j;c[A+(o*20|0)+12>>2]=0;c[A+(o*20|0)+16>>2]=0;a[A+(o*20|0)+1>>0]=0}else Di(aa,121,i,j,0)|0;o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;A=c[C>>2]|0;a[A+(o*20|0)>>0]=122;b[A+(o*20|0)+2>>1]=0;c[A+(o*20|0)+4>>2]=i;c[A+(o*20|0)+8>>2]=ea;c[A+(o*20|0)+12>>2]=j;c[A+(o*20|0)+16>>2]=0;a[A+(o*20|0)+1>>0]=0}else Di(aa,122,i,ea,j)|0;p=c[T>>2]|0;if((p|0)>0)b[(c[C>>2]|0)+((p+-1|0)*20|0)+2>>1]=8;if(!(a[(c[aa>>2]|0)+81>>0]|0))o=(c[C>>2]|0)+(((z|0)<0?p+-1|0:z)*20|0)|0;else o=59308;c[o+8>>2]=p}while(0);m=c[m+20>>2]|0}while((m|0)!=0)}if(l<<24>>24==0|R^1){Ra=fa;return}l=c[T>>2]|0;if((c[U>>2]|0)>(l|0)){c[T>>2]=l+1;$=c[aa+104>>2]|0;a[$+(l*20|0)>>0]=93;b[$+(l*20|0)+2>>1]=0;c[$+(l*20|0)+4>>2]=k;c[$+(l*20|0)+8>>2]=ba;c[$+(l*20|0)+12>>2]=0;c[$+(l*20|0)+16>>2]=0;a[$+(l*20|0)+1>>0]=0}else Di(aa,93,k,ba,0)|0;l=c[T>>2]|0;if((c[U>>2]|0)>(l|0)){c[T>>2]=l+1;n=c[aa+104>>2]|0;a[n+(l*20|0)>>0]=20;b[n+(l*20|0)+2>>1]=0;c[n+(l*20|0)+4>>2]=ba;c[n+(l*20|0)+8>>2]=0;c[n+(l*20|0)+12>>2]=0;c[n+(l*20|0)+16>>2]=0;a[n+(l*20|0)+1>>0]=0;n=l}else n=Di(aa,20,ba,0,0)|0;l=c[T>>2]|0;if((c[U>>2]|0)>(l|0)){c[T>>2]=l+1;ba=c[aa+104>>2]|0;a[ba+(l*20|0)>>0]=73;b[ba+(l*20|0)+2>>1]=0;c[ba+(l*20|0)+4>>2]=0;c[ba+(l*20|0)+8>>2]=ca;c[ba+(l*20|0)+12>>2]=0;c[ba+(l*20|0)+16>>2]=0;a[ba+(l*20|0)+1>>0]=0}else Di(aa,73,0,ca,0)|0;l=c[T>>2]|0;if((c[U>>2]|0)>(l|0)){c[T>>2]=l+1;ca=c[aa+104>>2]|0;a[ca+(l*20|0)>>0]=92;b[ca+(l*20|0)+2>>1]=0;c[ca+(l*20|0)+4>>2]=da;c[ca+(l*20|0)+8>>2]=3;c[ca+(l*20|0)+12>>2]=ea;c[ca+(l*20|0)+16>>2]=0;a[ca+(l*20|0)+1>>0]=0}else l=Di(aa,92,da,3,ea)|0;if(!(a[(c[aa>>2]|0)+81>>0]|0)){if((l|0)<0)l=(c[T>>2]|0)+-1|0;Ei(aa,(c[aa+104>>2]|0)+(l*20|0)|0,46896,0)}l=c[T>>2]|0;if((c[U>>2]|0)>(l|0)){c[T>>2]=l+1;da=c[aa+104>>2]|0;a[da+(l*20|0)>>0]=121;b[da+(l*20|0)+2>>1]=0;c[da+(l*20|0)+4>>2]=i;c[da+(l*20|0)+8>>2]=j;c[da+(l*20|0)+12>>2]=0;c[da+(l*20|0)+16>>2]=0;a[da+(l*20|0)+1>>0]=0}else Di(aa,121,i,j,0)|0;l=c[T>>2]|0;if((c[U>>2]|0)>(l|0)){c[T>>2]=l+1;da=c[aa+104>>2]|0;a[da+(l*20|0)>>0]=122;b[da+(l*20|0)+2>>1]=0;c[da+(l*20|0)+4>>2]=i;c[da+(l*20|0)+8>>2]=ea;c[da+(l*20|0)+12>>2]=j;c[da+(l*20|0)+16>>2]=0;a[da+(l*20|0)+1>>0]=0}else Di(aa,122,i,ea,j)|0;m=c[T>>2]|0;if((m|0)>0)b[(c[aa+104>>2]|0)+((m+-1|0)*20|0)+2>>1]=8;if(!(a[(c[aa>>2]|0)+81>>0]|0))l=(c[aa+104>>2]|0)+(((n|0)<0?m+-1|0:n)*20|0)|0;else l=59308;c[l+8>>2]=m;Ra=fa;return}function kn(d,f,h){d=d|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=c[h>>2]|0;i=e[f+8>>1]|0;do if(!(i&4)){if(i&8|0){o=Mg(+g[f>>3])|0;L()|0;break}if(!(i&18))o=0;else{o=Ng(a[f+10>>0]|0,c[f+12>>2]|0,c[f+16>>2]|0)|0;L()|0}}else o=c[f>>2]|0;while(0);p=o+1&-2;f=c[h+4>>2]|0;i=e[f+8>>1]|0;do if(!(i&4)){if(i&8|0){l=Mg(+g[f>>3])|0;L()|0;break}if(!(i&18))l=0;else{l=Ng(a[f+10>>0]|0,c[f+12>>2]|0,c[f+16>>2]|0)|0;L()|0}}else l=c[f>>2]|0;while(0);m=(p<<3)+60|0;n=c[(c[d>>2]|0)+32>>2]|0;h=((m|0)<0)<<31>>31;a:do if(!n){h=Sv(m|0,h|0,-1,-1)|0;i=L()|0;if(!(i>>>0>0|(i|0)==0&h>>>0>2147483390)){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](m)|0;k=37;break}h=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;i=59064;f=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&f>>>0>0){q=c[14978]|0;i=Tv(f|0,i|0,h|0,((h|0)<0)<<31>>31|0)|0;f=L()|0;c[14768]=((f|0)<0|(f|0)==0&i>>>0<=q>>>0)&1}f=Wa[c[29340>>2]&127](h)|0;if(f|0){i=Wa[c[29352>>2]&127](f)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0){c[14987]=i;k=47}else k=47}}}else{if(c[n+272>>2]|0){if(a[n+81>>0]|0)break}else{do if(!(0>>0|(0==(h|0)?(e[n+276>>1]|0)>>>0>>0:0))){f=n+300|0;i=c[f>>2]|0;if(i|0){c[f>>2]=c[i>>2];j=n+284|0;c[j>>2]=(c[j>>2]|0)+1;j=i;k=37;break a}f=n+296|0;i=c[f>>2]|0;if(!i){f=n+292|0;break}else{c[f>>2]=c[i>>2];j=n+284|0;c[j>>2]=(c[j>>2]|0)+1;j=i;k=37;break a}}else f=n+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1}j=_d(n,m,h)|0;k=37}while(0);if((k|0)==37?j|0:0){f=j;k=47}if((k|0)==47){gw(f|0,0,m|0)|0;c[f+56>>2]=n;c[f>>2]=0;c[f+8>>2]=o;c[f+12>>2]=l;q=f+60|0;c[f+24>>2]=q;c[f+20>>2]=q+(p<<2);if((yc(c[d>>2]|0,f,60,0,96)|0)!=18)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}f=c[d>>2]|0;i=f+8|0;if(!(b[i>>1]&9216))b[i>>1]=1;else{Dg(f);f=c[d>>2]|0}c[d+20>>2]=7;f=c[f+32>>2]|0;i=f+81|0;if(a[i>>0]|0)return;if(a[f+82>>0]|0)return;a[i>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;q=f+272|0;c[q>>2]=(c[q>>2]|0)+1;f=c[f+236>>2]|0;if(!f)return;c[f+12>>2]=7;return}function ln(a){a=a|0;var b=0,d=0;b=c[a+56>>2]|0;if(!a)return;if(b|0){if(c[b+480>>2]|0){Xd(b,a);return}d=a;if((c[b+304>>2]|0)>>>0<=d>>>0?(c[b+308>>2]|0)>>>0>d>>>0:0){d=b+300|0;c[a>>2]=c[d>>2];c[d>>2]=a;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return}}function mn(b,d,f){b=b|0;d=d|0;f=f|0;var h=0,i=0,j=0;j=mc(c[f>>2]|0)|0;b=c[f+4>>2]|0;d=e[b+8>>1]|0;do if(!(d&4)){if(d&8|0){i=Mg(+g[b>>3])|0;L()|0;break}if(!(d&18))i=0;else{i=Ng(a[b+10>>0]|0,c[b+12>>2]|0,c[b+16>>2]|0)|0;L()|0}}else i=c[b>>2]|0;while(0);if(!(c[j>>2]|0)){d=j+8|0;if((c[d>>2]|0)<=0){i=c[j>>2]|0;i=i+1|0;c[j>>2]=i;return}f=c[j+20>>2]|0;b=0;do{c[f+(b<<2)>>2]=1;b=b+1|0}while((b|0)<(c[d>>2]|0));i=c[j>>2]|0;i=i+1|0;c[j>>2]=i;return}if((i|0)>0){d=c[j+20>>2]|0;b=0;do{h=d+(b<<2)|0;c[h>>2]=(c[h>>2]|0)+1;b=b+1|0}while((b|0)!=(i|0))}d=j+8|0;if((i|0)>=(c[d>>2]|0)){i=c[j>>2]|0;i=i+1|0;c[j>>2]=i;return}f=c[j+24>>2]|0;h=c[j+20>>2]|0;b=i;do{i=f+(b<<2)|0;c[i>>2]=(c[i>>2]|0)+1;c[h+(b<<2)>>2]=1;b=b+1|0}while((b|0)<(c[d>>2]|0));i=c[j>>2]|0;i=i+1|0;c[j>>2]=i;return}function nn(d,e,f){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;m=Ra;Ra=Ra+16|0;l=m+8|0;i=m;j=mc(c[f>>2]|0)|0;k=j+12|0;h=((c[k>>2]|0)*25|0)+25|0;g=Sv(h|0,((h|0)<0)<<31>>31|0,-1,-1)|0;f=L()|0;do if(!(f>>>0>0|(f|0)==0&g>>>0>2147483390)){if(!(c[7324]|0)){e=Wa[c[29340>>2]&127](h)|0;if(!e)break}else{e=Wa[c[29356>>2]&127](h)|0;if((c[14985]|0)>>>0>>0)c[14985]=h;g=59064;f=c[g>>2]|0;g=c[g+4>>2]|0;if((g|0)>0|(g|0)==0&f>>>0>0){n=c[14978]|0;g=Tv(f|0,g|0,e|0,((e|0)<0)<<31>>31|0)|0;f=L()|0;c[14768]=((f|0)<0|(f|0)==0&g>>>0<=n>>>0)&1}e=Wa[c[29340>>2]&127](e)|0;if(!e)break;f=Wa[c[29352>>2]&127](e)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0)c[14987]=f}gw(e|0,0,h|0)|0;n=i;c[n>>2]=c[j>>2];c[n+4>>2]=0;Cb(24,e,46929,i)|0;if((c[k>>2]|0)>0){i=j+24|0;g=0;h=e+((Eu(e)|0)&1073741823)|0;while(1){o=(c[(c[i>>2]|0)+(g<<2)>>2]|0)+1|0;f=c[j>>2]|0;n=Sv(o|0,0,-1,-1)|0;f=Sv(n|0,L()|0,f|0,0)|0;o=_v(f|0,L()|0,o|0,0)|0;f=L()|0;n=l;c[n>>2]=o;c[n+4>>2]=f;Cb(24,h,46934,l)|0;if(!h)f=0;else f=(Eu(h)|0)&1073741823;g=g+1|0;if((g|0)>=(c[k>>2]|0))break;else h=h+f|0}}if((yc(c[d>>2]|0,e,-1,1,90)|0)!=18){Ra=m;return}c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;Ra=m;return}while(0);e=c[d>>2]|0;f=e+8|0;if(!(b[f>>1]&9216))b[f>>1]=1;else{Dg(e);e=c[d>>2]|0}c[d+20>>2]=7;e=c[e+32>>2]|0;f=e+81|0;if(a[f>>0]|0){Ra=m;return}if(a[e+82>>0]|0){Ra=m;return}a[f>>0]=1;if((c[e+180>>2]|0)>0)c[e+264>>2]=1;o=e+272|0;c[o>>2]=(c[o>>2]|0)+1;e=c[e+236>>2]|0;if(!e){Ra=m;return}c[e+12>>2]=7;Ra=m;return}function on(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=Ra;Ra=Ra+16|0;k=l;j=c[e>>2]|0;a:do if(j){f=a[j>>0]|0;do if(!(f<<24>>24)){f=39441;i=3}else{h=f&255;f=208+h|0;if((h|32|0)==115){f=a[j+1>>0]|0;if(!(f<<24>>24)){f=39442;i=3;break}h=f&255;f=208+h|0;if((h|32|0)==113){f=a[j+2>>0]|0;if(!(f<<24>>24)){f=39443;i=3;break}h=f&255;f=208+h|0;if((h|32|0)==108){f=a[j+3>>0]|0;if(!(f<<24>>24)){f=39444;i=3;break}h=f&255;f=208+h|0;if((h|32|0)==105){f=a[j+4>>0]|0;if(!(f<<24>>24)){f=39445;i=3;break}h=f&255;f=208+h|0;if((h|32|0)==116){f=a[j+5>>0]|0;if(!(f<<24>>24)){f=39446;i=3;break}h=f&255;f=208+h|0;if((h|32|0)==101){f=a[j+6>>0]|0;if(!(f<<24>>24)){f=39447;i=3;break}if(f<<24>>24==95)break a;else{h=95;f=208+(f&255)|0}}else h=101}else h=116}else h=105}else h=108}else h=113}else h=115;g=d[f>>0]|0;f=h}while(0);if((i|0)==3){g=0;f=a[208+(d[f>>0]|0)>>0]|0}if((g|0)!=(f&255|0))i=8}else i=8;while(0);if((i|0)==8){if(!(c[e+36>>2]&1024)){k=0;Ra=l;return k|0}f=c[b>>2]|0;if(0==0?(c[f+32>>2]&268435456|0)==0:0){k=0;Ra=l;return k|0}if(c[f+180>>2]|0){k=0;Ra=l;return k|0}}c[k>>2]=j;cd(b,47776,k);k=1;Ra=l;return k|0}function pn(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=Ra;Ra=Ra+32|0;h=k;i=h+20|0;a[i>>0]=1;c[h+4>>2]=127;c[h+8>>2]=128;c[h+24>>2]=0;if(!g){j=0;Ra=k;return j|0}_j(h,g)|0;if(a[i>>0]|0){j=g;Ra=k;return j|0}if((d[f+200>>0]|0)>1){i=h+8|0;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;c[i+12>>2]=0;c[i+16>>2]=0;c[h>>2]=f;c[h+4>>2]=124;_j(h,g)|0}ni(c[f>>2]|0,g);g=c[f>>2]|0;a:do if(c[g+272>>2]|0)if(!(a[g+81>>0]|0))j=15;else{j=0;Ra=k;return j|0}else{do if((e[g+276>>1]|0)>=52){f=g+300|0;h=c[f>>2]|0;if(h|0){c[f>>2]=c[h>>2];i=g+284|0;c[i>>2]=(c[i>>2]|0)+1;break a}f=g+296|0;h=c[f>>2]|0;if(!h){f=g+292|0;break}else{c[f>>2]=c[h>>2];i=g+284|0;c[i>>2]=(c[i>>2]|0)+1;break a}}else f=g+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1;j=15}while(0);if((j|0)==15)h=_d(g,52,0)|0;if(!h){j=h;Ra=k;return j|0}f=h;g=f+52|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));a[h>>0]=114;b[h+34>>1]=-1;c[h+24>>2]=1;j=h;Ra=k;return j|0}function qn(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0;e=c[f>>2]|0;if(!e)return;f=b[e+8>>1]|0;if((f&514)==514?(a[e+10>>0]|0)==1:0)e=c[e+16>>2]|0;else g=5;do if((g|0)==5)if(!(f&1)){e=Gg(e,1)|0;break}else return;while(0);if(!e)return;h=Wd(e)|0;e=c[d>>2]|0;f=((h|0)<0)<<31>>31;g=e+8|0;if(!(b[g>>1]&9216)){d=e;c[d>>2]=h;c[d+4>>2]=f;b[g>>1]=4;return}else{Pg(e,h,f);return}}function rn(b,d,f){b=b|0;d=d|0;f=f|0;d=c[f>>2]|0;f=e[d+8>>1]|0;do if(!(f&4)){if(f&8|0){d=Mg(+g[d>>3])|0;L()|0;f=7;break}if(!(f&18)){d=26464;f=8}else{d=Ng(a[d+10>>0]|0,c[d+12>>2]|0,c[d+16>>2]|0)|0;L()|0;f=7}}else{d=c[d>>2]|0;f=7}while(0);if((f|0)==7)if(d>>>0<7){d=26464+(d<<2)|0;f=8}else d=0;if((f|0)==8)d=c[d>>2]|0;if((yc(c[b>>2]|0,d,-1,1,0)|0)!=18)return;c[b+20>>2]=18;yc(c[b>>2]|0,31223,-1,1,0)|0;return}function sn(a,b,d){a=a|0;b=b|0;d=d|0;if((yc(c[a>>2]|0,31142,-1,1,0)|0)!=18)return;c[a+20>>2]=18;yc(c[a>>2]|0,31223,-1,1,0)|0;return}function tn(e,f,g){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;h=c[g>>2]|0;i=b[h+8>>1]|0;if((h|0)==0|(-1431655766>>>(i&31)&1|0)!=0)return;if((i&514)==514?(a[h+10>>0]|0)==1:0)i=c[h+16>>2]|0;else q=5;do if((q|0)==5)if(!(i&1)){i=Gg(h,1)|0;break}else return;while(0);if(!i)return;k=c[g>>2]|0;h=b[k+8>>1]|0;if((h&2)!=0?(a[k+10>>0]|0)==1:0)h=c[k+12>>2]|0;else q=11;do if((q|0)==11){j=h&65535;if(!(j&16)){if(j&1|0){h=0;break}h=Fg(k,1)|0;break}else{h=c[k+12>>2]|0;if(!(j&16384))break;h=(c[k>>2]|0)+h|0;break}}while(0);a:do if((f|0)!=1){j=c[g+4>>2]|0;if(!j)return;k=b[j+8>>1]|0;if((k&514)==514?(a[j+10>>0]|0)==1:0)p=c[j+16>>2]|0;else q=21;do if((q|0)==21)if(!(k&1)){p=Gg(j,1)|0;break}else return;while(0);if(!p)return;k=a[p>>0]|0;if(k<<24>>24){j=p;l=0;do{f=j+1|0;if((k&255)>191){j=f;while(1){k=a[j>>0]|0;if((k&-64)<<24>>24==-128)j=j+1|0;else break}}else{j=f;k=a[f>>0]|0}l=l+1|0}while(k<<24>>24!=0);f=Yv(l|0,0,5,0)|0;j=L()|0;k=c[e>>2]|0;o=c[(c[k+32>>2]|0)+108>>2]|0;n=((o|0)<0)<<31>>31;if((j|0)>(n|0)|(j|0)==(n|0)&f>>>0>o>>>0){c[e+20>>2]=18;yc(k,31223,-1,1,0)|0;return}o=Sv(f|0,j|0,-1,-1)|0;n=L()|0;do if(!(n>>>0>0|(n|0)==0&o>>>0>2147483390)){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](f)|0;if(!j)break}else{g=Wa[c[29356>>2]&127](f)|0;if((c[14985]|0)>>>0>>0)c[14985]=f;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){o=c[14978]|0;n=Tv(j|0,k|0,g|0,((g|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&n>>>0<=o>>>0)&1}j=Wa[c[29340>>2]&127](g)|0;if(!j)break;k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0)c[14987]=k}m=j+(l<<2)|0;if(!(a[p>>0]|0))break a;g=0;k=p;while(1){c[j+(g<<2)>>2]=k;f=k+1|0;l=k;if((d[k>>0]|0)>191){k=f;while(1)if((a[k>>0]&-64)<<24>>24==-128)k=k+1|0;else break}else k=f;a[m+g>>0]=k-l;f=g+1|0;if(!(a[k>>0]|0)){o=j;n=j;q=60;break a}else g=f}}while(0);h=c[e>>2]|0;i=h+8|0;if(!(b[i>>1]&9216))b[i>>1]=1;else{Dg(h);h=c[e>>2]|0}c[e+20>>2]=7;h=c[h+32>>2]|0;i=h+81|0;if(a[i>>0]|0)return;if(a[h+82>>0]|0)return;a[i>>0]=1;if((c[h+180>>2]|0)>0)c[h+264>>2]=1;e=h+272|0;c[e>>2]=(c[e>>2]|0)+1;h=c[h+236>>2]|0;if(!h)return;c[h+12>>2]=7;return}}else{p=0;o=30304;m=49513;f=1;n=30304;q=60}while(0);do if((q|0)==60){l=c[(c[e+4>>2]|0)+8>>2]|0;b:do if((l&1|0)!=0&(h|0)>0)do{j=0;while(1){k=a[m+j>>0]|0;g=k&255;if((h|0)>=(g|0)?(Lu(i,c[o+(j<<2)>>2]|0,g)|0)==0:0)break;j=j+1|0;if(j>>>0>=f>>>0){q=67;break b}}g=k&255;i=i+g|0;h=h-g|0}while((h|0)>0);else q=67;while(0);c:do if((q|0)==67)if((l&2|0)!=0&(h|0)>0)while(1){j=0;while(1){k=d[m+j>>0]|0;if((h|0)>=(k|0)?(r=h-k|0,(Lu(i+r|0,c[o+(j<<2)>>2]|0,k)|0)==0):0)break;j=j+1|0;if(j>>>0>=f>>>0)break c}if((r|0)>0)h=r;else{h=r;break}}while(0);if(!((n|0)==0|(p|0)==0))if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{r=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);if((yc(c[e>>2]|0,i,h,1,-1)|0)!=18)return;c[e+20>>2]=18;yc(c[e>>2]|0,31223,-1,1,0)|0;return}function un(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=((c[(c[a+4>>2]|0)+8>>2]|0)!=0)<<31>>31;i=c[(c[(c[a+12>>2]|0)+104>>2]|0)+(((c[a+16>>2]|0)+-1|0)*20|0)+16>>2]|0;f=c[e>>2]|0;if(-1431655766>>>(b[f+8>>1]&31)&1|0)return;do if((d|0)>1){h=0;f=1;while(1){g=c[e+(f<<2)>>2]|0;if(-1431655766>>>(b[g+8>>1]&31)&1|0){g=8;break}g=((Tg(c[e+(h<<2)>>2]|0,g,i)|0)^j|0)>-1;h=g?f:h;f=f+1|0;if((f|0)>=(d|0)){g=6;break}}if((g|0)==6){f=c[e+(h<<2)>>2]|0;break}else if((g|0)==8)return}while(0);Dc(a,f);return}function vn(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;g=c[f>>2]|0;e=c[d+8>>2]|0;if(!(b[e+8>>1]&8192))i=Ic(d,40)|0;else i=c[e+16>>2]|0;if(!i)return;h=g+8|0;j=i+8|0;e=(b[j>>1]|0)!=0;if(-1431655766>>>(b[h>>1]&31)&1|0){if(!e)return;c[d+20>>2]=-1;a[d+24>>0]=1;return}if(!e){c[i+32>>2]=c[(c[d>>2]|0)+32>>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];f=b[j>>1]&-1025;b[j>>1]=f;f=f&65535;if(!(f&18))return;if(b[h>>1]&2048)return;e=(f|4096)&65535;b[j>>1]=e;do if(f&16384){g=i+12|0;f=(c[i>>2]|0)+(c[g>>2]|0)|0;if((f|0)<1)if(!(e&16))break;else e=1;else e=f;if(!(Eg(i,e,1)|0)){gw((c[i+16>>2]|0)+(c[g>>2]|0)|0,0,c[i>>2]|0)|0;c[g>>2]=(c[g>>2]|0)+(c[i>>2]|0);e=b[j>>1]&-16897;b[j>>1]=e;break}else return}while(0);if(!((c[i+24>>2]|0)!=0?(c[i+16>>2]|0)==(c[i+20>>2]|0):0))k=49;do if((k|0)==49)if(!(Jg(i)|0)){e=b[j>>1]|0;break}else return;while(0);b[j>>1]=e&-4097;return}e=(c[(c[d+4>>2]|0)+8>>2]|0)!=0;f=Tg(i,g,c[(c[(c[d+12>>2]|0)+104>>2]|0)+(((c[d+16>>2]|0)+-1|0)*20|0)+16>>2]|0)|0;if(e&(f|0)<0){if(b[j>>1]&9216)Dg(i);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];f=b[j>>1]&-1025;b[j>>1]=f;f=f&65535;if(!(f&18))return;if(b[h>>1]&2048)return;e=(f|4096)&65535;b[j>>1]=e;do if(f&16384){g=i+12|0;f=(c[i>>2]|0)+(c[g>>2]|0)|0;if((f|0)<1)if(!(e&16))break;else e=1;else e=f;if(!(Eg(i,e,1)|0)){gw((c[i+16>>2]|0)+(c[g>>2]|0)|0,0,c[i>>2]|0)|0;c[g>>2]=(c[g>>2]|0)+(c[i>>2]|0);e=b[j>>1]&-16897;b[j>>1]=e;break}else return}while(0);if(!((c[i+24>>2]|0)!=0?(c[i+16>>2]|0)==(c[i+20>>2]|0):0))k=22;do if((k|0)==22)if(!(Jg(i)|0)){e=b[j>>1]|0;break}else return;while(0);b[j>>1]=e&-4097;return}if(!((f|0)>0&(e^1))){c[d+20>>2]=-1;a[d+24>>0]=1;return}if(b[j>>1]&9216)Dg(i);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];f=b[j>>1]&-1025;b[j>>1]=f;f=f&65535;if(!(f&18))return;if(b[h>>1]&2048)return;e=(f|4096)&65535;b[j>>1]=e;do if(f&16384){g=i+12|0;f=(c[i>>2]|0)+(c[g>>2]|0)|0;if((f|0)<1)if(!(e&16))break;else e=1;else e=f;if(!(Eg(i,e,1)|0)){gw((c[i+16>>2]|0)+(c[g>>2]|0)|0,0,c[i>>2]|0)|0;c[g>>2]=(c[g>>2]|0)+(c[i>>2]|0);e=b[j>>1]&-16897;b[j>>1]=e;break}else return}while(0);if(!((c[i+24>>2]|0)!=0?(c[i+16>>2]|0)==(c[i+20>>2]|0):0))k=36;do if((k|0)==36)if(!(Jg(i)|0)){e=b[j>>1]|0;break}else return;while(0);b[j>>1]=e&-4097;return}function wn(a){a=a|0;var d=0,e=0,f=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,0)|0;else d=c[d+16>>2]|0;if(!d)return;e=d+8|0;if(!((b[e>>1]|0)!=0?(Dc(a,d),(b[e>>1]&9216)!=0):0))f=7;if((f|0)==7?(c[d+24>>2]|0)==0:0)return;Cg(d);return}function xn(a){a=a|0;var d=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,0)|0;else d=c[d+16>>2]|0;if(!d)return;if(!(b[d+8>>1]|0))return;Dc(a,d);return}function yn(a,e,f){a=a|0;e=e|0;f=f|0;if((yc(c[a>>2]|0,c[21712+((d[816+(b[(c[f>>2]|0)+8>>1]&31)>>0]|0)+-1<<2)>>2]|0,-1,1,0)|0)!=18)return;c[a+20>>2]=18;yc(c[a>>2]|0,31223,-1,1,0)|0;return}function zn(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=c[f>>2]|0;e=b[g+8>>1]|0;switch(a[816+(e&31)>>0]|0){case 2:case 1:case 4:{if((e&2)!=0?(a[g+10>>0]|0)==1:0)f=c[g+12>>2]|0;else i=5;do if((i|0)==5){e=e&65535;if(!(e&16)){if(e&1|0){f=0;break}f=Fg(g,1)|0;break}else{f=c[g+12>>2]|0;if(!(e&16384))break;f=(c[g>>2]|0)+f|0;break}}while(0);e=c[d>>2]|0;g=((f|0)<0)<<31>>31;h=e+8|0;if(!(b[h>>1]&9216)){d=e;c[d>>2]=f;c[d+4>>2]=g;b[h>>1]=4;return}else{Pg(e,f,g);return}}case 3:{if(!g)return;if((e&514)==514?(a[g+10>>0]|0)==1:0)h=c[g+16>>2]|0;else i=17;do if((i|0)==17)if(!(e&1)){h=Gg(g,1)|0;break}else return;while(0);if(!h)return;g=a[h>>0]|0;if(!(g<<24>>24)){f=h;e=h}else{e=h;f=h;do{f=f+1|0;h=a[f>>0]|0;if((g&255)>191&(h&-64)<<24>>24==-128)do{f=f+1|0;e=e+1|0;g=a[f>>0]|0}while((g&-64)<<24>>24==-128);else g=h}while(g<<24>>24!=0)}h=f-e|0;e=c[d>>2]|0;f=((h|0)<0)<<31>>31;g=e+8|0;if(!(b[g>>1]&9216)){d=e;c[d>>2]=h;c[d+4>>2]=f;b[g>>1]=4;return}else{Pg(e,h,f);return}}default:{e=c[d>>2]|0;f=e+8|0;if(!(b[f>>1]&9216)){b[f>>1]=1;return}else{Dg(e);return}}}}function An(d,e,f){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;g=c[f>>2]|0;e=b[g+8>>1]|0;m=e&31;n=f+4|0;i=c[n>>2]|0;j=b[i+8>>1]|0;l=j&31;if((-1431655766>>>l|-1431655766>>>m)&1|0)return;if((e&2)!=0?(a[g+10>>0]|0)==1:0){h=c[g+12>>2]|0;e=j}else k=5;do if((k|0)==5){e=e&65535;if(!(e&16)){if(e&1|0){h=0;e=j;break}h=Fg(g,1)|0;i=c[n>>2]|0;e=b[i+8>>1]|0;break}else{h=c[g+12>>2]|0;if(!(e&16384)){e=j;break}h=(c[g>>2]|0)+h|0;e=j;break}}while(0);if((e&2)!=0?(a[i+10>>0]|0)==1:0){o=c[i+12>>2]|0;k=18}else k=13;do if((k|0)==13){g=e&65535;if(!(g&16)){if(g&1|0){e=1;i=0;break}o=Fg(i,1)|0;k=18;break}else{e=c[i+12>>2]|0;if(!(g&16384)){o=e;k=18;break}o=(c[i>>2]|0)+e|0;k=18;break}}while(0);a:do if((k|0)==18)if((o|0)>0){g=c[f>>2]|0;do if(!((m|16|0)==16&(l|16|0)==16)){do if(g){e=b[g+8>>1]|0;if((e&514)==514?(a[g+10>>0]|0)==1:0){g=c[g+16>>2]|0;break}if(!(e&1))g=Gg(g,1)|0;else g=0}else g=0;while(0);i=c[n>>2]|0;if(!i)return;e=b[i+8>>1]|0;if((e&514)==514?(a[i+10>>0]|0)==1:0){e=1;k=c[i+16>>2]|0;break}if(!(e&1)){e=1;k=Gg(i,1)|0;break}else return}else{g=mc(g)|0;e=0;k=mc(c[n>>2]|0)|0}while(0);if(!k)return;if((h|0)!=0&(g|0)==0)return;l=a[k>>0]|0;if((o|0)>(h|0)){e=0;i=0}else{b:do if(!e){e=1;while(1){if((a[g>>0]|0)==l<<24>>24?(Lu(g,k,o)|0)==0:0)break b;if((o|0)<(h|0)){e=e+1|0;h=h+-1|0;g=g+1|0}else{e=0;i=0;break a}}}else{e=1;j=g;g=a[g>>0]|0;while(1){if(g<<24>>24==l<<24>>24?(Lu(j,k,o)|0)==0:0)break b;while(1){i=h+-1|0;j=j+1|0;g=a[j>>0]|0;if((g&-64)<<24>>24!=-128)break;else h=i}if((o|0)<(h|0)){e=e+1|0;h=i}else{e=0;i=0;break a}}}while(0);i=0}}else{e=1;i=0}while(0);g=c[d>>2]|0;h=g+8|0;if(!(b[h>>1]&9216)){d=g;c[d>>2]=e;c[d+4>>2]=i;b[h>>1]=4;return}else{Pg(g,e,i);return}}function Bn(d,e,f){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;n=Ra;Ra=Ra+48|0;l=n;k=n+32|0;m=n+8|0;j=c[(c[d>>2]|0)+32>>2]|0;if((e|0)<=0){Ra=n;return}h=c[f>>2]|0;if(!h){Ra=n;return}g=b[h+8>>1]|0;if((g&514)==514?(a[h+10>>0]|0)==1:0)g=c[h+16>>2]|0;else i=6;do if((i|0)==6)if(!(g&1)){g=Gg(h,1)|0;break}else{Ra=n;return}while(0);if(!g){Ra=n;return}c[k>>2]=e+-1;c[k+4>>2]=0;c[k+8>>2]=f+4;h=c[j+108>>2]|0;i=m+4|0;c[i>>2]=0;c[m>>2]=j;c[m+8>>2]=0;e=m+12|0;c[e>>2]=h;h=m+16|0;c[h>>2]=0;a[m+20>>0]=0;f=m+21|0;a[f>>0]=2;c[l>>2]=k;Eb(m,g,l);h=c[h>>2]|0;g=c[i>>2]|0;if(((g|0)!=0?(a[g+h>>0]=0,(c[e>>2]|0)!=0):0)?(a[f>>0]&4)==0:0)g=$d(m)|0;else g=c[i>>2]|0;if((yc(c[d>>2]|0,g,h,1,116)|0)!=18){Ra=n;return}c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;Ra=n;return}function Cn(e,f,g){e=e|0;f=f|0;g=g|0;var h=0;f=c[g>>2]|0;if(!f)return;g=b[f+8>>1]|0;if((g&514)==514?(a[f+10>>0]|0)==1:0)f=c[f+16>>2]|0;else h=5;do if((h|0)==5)if(!(g&1)){f=Gg(f,1)|0;break}else return;while(0);if(!f)return;g=a[f>>0]|0;if(!(g<<24>>24))return;h=f+1|0;f=g&255;if((g&255)>191){f=d[2736+(f+-192)>>0]|0;g=a[h>>0]|0;if((g&-64)<<24>>24==-128)do{h=h+1|0;f=f<<6|g&63;g=a[h>>0]|0}while((g&-64)<<24>>24==-128);f=(f&-2|0)==65534|(f>>>0<128|(f&-2048|0)==55296)?65533:f}g=c[e>>2]|0;h=((f|0)<0)<<31>>31;e=g+8|0;if(!(b[e>>1]&9216)){c[g>>2]=f;c[g+4>>2]=h;b[e>>1]=4;return}else{Pg(g,f,h);return}}function Dn(d,f,h){d=d|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=f<<2|1;q=pb(q,((q|0)<0)<<31>>31)|0;if(!q){i=c[d>>2]|0;j=i+8|0;if(!(b[j>>1]&9216))b[j>>1]=1;else{Dg(i);i=c[d>>2]|0}c[d+20>>2]=7;i=c[i+32>>2]|0;j=i+81|0;if(a[j>>0]|0)return;if(a[i+82>>0]|0)return;a[j>>0]=1;if((c[i+180>>2]|0)>0)c[i+264>>2]=1;d=i+272|0;c[d>>2]=(c[d>>2]|0)+1;i=c[i+236>>2]|0;if(!i)return;c[i+12>>2]=7;return}if((f|0)>0){o=0;i=q;do{j=c[h+(o<<2)>>2]|0;k=e[j+8>>1]|0;do if(!(k&4)){if(k&8|0){k=Mg(+g[j>>3])|0;j=L()|0;p=19;break}if(!(k&18)){n=i;m=1;j=0}else{k=Ng(a[j+10>>0]|0,c[j+12>>2]|0,c[j+16>>2]|0)|0;j=L()|0;p=19}}else{k=j;j=c[k+4>>2]|0;k=c[k>>2]|0;p=19}while(0);do if((p|0)==19){p=0;l=k&2097151;if(!(j>>>0>0|(j|0)==0&k>>>0>1114111)){if(l>>>0<128){n=i;m=1;j=l;break}if(l>>>0<2048){a[i>>0]=k>>>6&31|192;n=i+1|0;m=2;j=k&63|128;break}if(l>>>0<65536)j=l;else{a[i>>0]=l>>>18|240;a[i+1>>0]=k>>>12&63|128;a[i+2>>0]=k>>>6&63|128;n=i+3|0;m=4;j=k&63|128;break}}else j=65533;a[i>>0]=j>>>12&15|224;a[i+1>>0]=j>>>6&63|128;n=i+2|0;m=3;j=j&63|128}while(0);i=i+m|0;a[n>>0]=j;o=o+1|0}while((o|0)!=(f|0))}else i=q;i=i-q|0;if((i|0)>=0){if((yc(c[d>>2]|0,q,i,1,90)|0)!=18)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}do if(90!=-1)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{p=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}while(0);if(!d)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}function En(d,e,f){d=d|0;e=e|0;f=f|0;var h=0.0,i=0,j=0,k=0,l=0;l=Ra;Ra=Ra+16|0;i=l+8|0;j=l;f=c[f>>2]|0;e=b[f+8>>1]|0;switch(a[816+(e&31)>>0]|0){case 1:{e=e&65535;do if(!(e&4)){if(e&8|0){e=Mg(+g[f>>3])|0;f=L()|0;k=8;break}if(!(e&18)){e=0;j=0}else{e=Ng(a[f+10>>0]|0,c[f+12>>2]|0,c[f+16>>2]|0)|0;f=L()|0;k=8}}else{e=f;f=c[e+4>>2]|0;e=c[e>>2]|0;k=8}while(0);do if((k|0)==8)if((f|0)<0){if(!((e|0)==0&(f|0)==-2147483648)){e=Tv(0,0,e|0,f|0)|0;j=L()|0;break}c[d+20>>2]=1;yc(c[d>>2]|0,49524,-1,1,-1)|0;Ra=l;return}else j=f;while(0);f=c[d>>2]|0;i=f+8|0;if(!(b[i>>1]&9216)){d=f;c[d>>2]=e;c[d+4>>2]=j;b[i>>1]=4;Ra=l;return}else{Pg(f,e,j);Ra=l;return}}case 5:{e=c[d>>2]|0;f=e+8|0;if(!(b[f>>1]&9216)){b[f>>1]=1;Ra=l;return}else{Dg(e);Ra=l;return}}default:{e=e&65535;do if(!(e&8)){if(e&4|0){k=f;h=+((c[k>>2]|0)>>>0)+4294967296.0*+(c[k+4>>2]|0);break}if(!(e&18))h=0.0;else h=+Kg(a[f+10>>0]|0,c[f+12>>2]|0,c[f+16>>2]|0)}else h=+g[f>>3];while(0);h=h<0.0?-h:h;e=c[d>>2]|0;f=e+8|0;if(!(b[f>>1]&9216))b[f>>1]=1;else Dg(e);g[i>>3]=h;g[j>>3]=+g[i>>3];if(!(+g[i>>3]==+g[j>>3])){Ra=l;return}g[e>>3]=h;b[f>>1]=8;Ra=l;return}}}function Fn(d,e,f){d=d|0;e=e|0;f=f|0;var h=0,i=0.0,j=0,k=0,l=0,m=0,n=0;n=Ra;Ra=Ra+48|0;j=n+24|0;l=n+16|0;m=n+8|0;k=n;a:do if((e|0)==2){h=c[f+4>>2]|0;e=b[h+8>>1]|0;if(-1431655766>>>(e&31)&1|0){Ra=n;return}e=e&65535;do if(!(e&4)){if(e&8|0){e=Mg(+g[h>>3])|0;L()|0;break}if(!(e&18)){e=0;break a}e=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;L()|0}else e=c[h>>2]|0;while(0);if((e|0)<30){if((e|0)<=0){e=0;break}}else e=30}else e=0;while(0);f=c[f>>2]|0;h=b[f+8>>1]|0;if(-1431655766>>>(h&31)&1|0){Ra=n;return}h=h&65535;do if(!(h&8)){if(h&4|0){i=+((c[f>>2]|0)>>>0)+4294967296.0*+(c[f+4>>2]|0);break}if(!(h&18))i=0.0;else i=+Kg(a[f+10>>0]|0,c[f+12>>2]|0,c[f+16>>2]|0)}else i=+g[f>>3];while(0);g[k>>3]=i;h=(e|0)==0;do if(i<9223372036854775808.0&(h&i>=0.0)){i=i+.5;i=+(~~i>>>0>>>0)+4294967296.0*+((+t(i)>=1.0?(i>0.0?~~+H(+s(i/4294967296.0),4294967295.0)>>>0:~~+F((i-+(~~i>>>0))/4294967296.0)>>>0):0)|0);g[k>>3]=i}else{if(i>-9223372036854775808.0&(h&i<0.0)){i=.5-i;i=-(+(~~i>>>0>>>0)+4294967296.0*+((+t(i)>=1.0?(i>0.0?~~+H(+s(i/4294967296.0),4294967295.0)>>>0:~~+F((i-+(~~i>>>0))/4294967296.0)>>>0):0)|0));g[k>>3]=i;break}c[j>>2]=e;g[j+8>>3]=i;e=Bb(49541,j)|0;if(e|0){Lg(e,k,(Eu(e)|0)&1073741823,1)|0;if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{j=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}e=c[d>>2]|0;h=e+8|0;if(!(b[h>>1]&9216))b[h>>1]=1;else{Dg(e);e=c[d>>2]|0}c[d+20>>2]=7;e=c[e+32>>2]|0;h=e+81|0;if(a[h>>0]|0){Ra=n;return}if(a[e+82>>0]|0){Ra=n;return}a[h>>0]=1;if((c[e+180>>2]|0)>0)c[e+264>>2]=1;d=e+272|0;c[d>>2]=(c[d>>2]|0)+1;e=c[e+236>>2]|0;if(!e){Ra=n;return}c[e+12>>2]=7;Ra=n;return}while(0);i=+g[k>>3];e=c[d>>2]|0;h=e+8|0;if(!(b[h>>1]&9216))b[h>>1]=1;else Dg(e);g[l>>3]=i;g[m>>3]=+g[l>>3];if(!(+g[l>>3]==+g[m>>3])){Ra=n;return}g[e>>3]=i;b[h>>1]=8;Ra=n;return}function Gn(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=c[f>>2]|0;e=b[g+8>>1]|0;if((e&514)==514?(a[g+10>>0]|0)==1:0){j=c[g+16>>2]|0;f=g}else if(!(e&1)){j=Gg(g,1)|0;f=c[f>>2]|0}else{j=0;f=g}e=b[f+8>>1]|0;if((e&2)!=0?(a[f+10>>0]|0)==1:0)i=c[f+12>>2]|0;else h=9;do if((h|0)==9){e=e&65535;if(!(e&16)){if(e&1|0){i=0;break}i=Fg(f,1)|0;break}else{g=c[f+12>>2]|0;if(!(e&16384)){i=g;break}i=(c[f>>2]|0)+g|0;break}}while(0);if(!j)return;g=Sv(i|0,((i|0)<0)<<31>>31|0,1,0)|0;L()|0;e=c[d>>2]|0;if((i|0)>=(c[(c[e+32>>2]|0)+108>>2]|0)){c[d+20>>2]=18;yc(e,31223,-1,1,0)|0;return}do if(i>>>0<=2147483390){if(!(c[7324]|0)){e=Wa[c[29340>>2]&127](g)|0;if(!e)break}else{f=Wa[c[29356>>2]&127](g)|0;if((c[14985]|0)>>>0>>0)c[14985]=g;g=59064;e=c[g>>2]|0;g=c[g+4>>2]|0;if((g|0)>0|(g|0)==0&e>>>0>0){h=c[14978]|0;g=Tv(e|0,g|0,f|0,((f|0)<0)<<31>>31|0)|0;e=L()|0;c[14768]=((e|0)<0|(e|0)==0&g>>>0<=h>>>0)&1}e=Wa[c[29340>>2]&127](f)|0;if(!e)break;g=Wa[c[29352>>2]&127](e)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0)c[14987]=g}if((i|0)>0){g=0;do{h=a[j+g>>0]|0;a[e+g>>0]=h&~(a[880+(h&255)>>0]&32);g=g+1|0}while((g|0)!=(i|0))}if((yc(c[d>>2]|0,e,i,1,90)|0)!=18)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}while(0);e=c[d>>2]|0;g=e+8|0;if(!(b[g>>1]&9216))b[g>>1]=1;else{Dg(e);e=c[d>>2]|0}c[d+20>>2]=7;e=c[e+32>>2]|0;g=e+81|0;if(a[g>>0]|0)return;if(a[e+82>>0]|0)return;a[g>>0]=1;if((c[e+180>>2]|0)>0)c[e+264>>2]=1;d=e+272|0;c[d>>2]=(c[d>>2]|0)+1;e=c[e+236>>2]|0;if(!e)return;c[e+12>>2]=7;return}function Hn(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;h=c[g>>2]|0;f=b[h+8>>1]|0;if((f&514)==514?(a[h+10>>0]|0)==1:0){k=c[h+16>>2]|0;g=h}else if(!(f&1)){k=Gg(h,1)|0;g=c[g>>2]|0}else{k=0;g=h}f=b[g+8>>1]|0;if((f&2)!=0?(a[g+10>>0]|0)==1:0)j=c[g+12>>2]|0;else i=9;do if((i|0)==9){f=f&65535;if(!(f&16)){if(f&1|0){j=0;break}j=Fg(g,1)|0;break}else{h=c[g+12>>2]|0;if(!(f&16384)){j=h;break}j=(c[g>>2]|0)+h|0;break}}while(0);if(!k)return;h=Sv(j|0,((j|0)<0)<<31>>31|0,1,0)|0;L()|0;f=c[e>>2]|0;if((j|0)>=(c[(c[f+32>>2]|0)+108>>2]|0)){c[e+20>>2]=18;yc(f,31223,-1,1,0)|0;return}do if(j>>>0<=2147483390){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](h)|0;if(!f)break}else{g=Wa[c[29356>>2]&127](h)|0;if((c[14985]|0)>>>0>>0)c[14985]=h;h=59064;f=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&f>>>0>0){i=c[14978]|0;h=Tv(f|0,h|0,g|0,((g|0)<0)<<31>>31|0)|0;f=L()|0;c[14768]=((f|0)<0|(f|0)==0&h>>>0<=i>>>0)&1}f=Wa[c[29340>>2]&127](g)|0;if(!f)break;h=Wa[c[29352>>2]&127](f)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0)c[14987]=h}if((j|0)>0){h=0;do{a[f+h>>0]=a[208+(d[k+h>>0]|0)>>0]|0;h=h+1|0}while((h|0)!=(j|0))}if((yc(c[e>>2]|0,f,j,1,90)|0)!=18)return;c[e+20>>2]=18;yc(c[e>>2]|0,31223,-1,1,0)|0;return}while(0);f=c[e>>2]|0;h=f+8|0;if(!(b[h>>1]&9216))b[h>>1]=1;else{Dg(f);f=c[e>>2]|0}c[e+20>>2]=7;f=c[f+32>>2]|0;h=f+81|0;if(a[h>>0]|0)return;if(a[f+82>>0]|0)return;a[h>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;e=f+272|0;c[e>>2]=(c[e>>2]|0)+1;f=c[f+236>>2]|0;if(!f)return;c[f+12>>2]=7;return}function In(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=mc(c[g>>2]|0)|0;h=c[g>>2]|0;f=b[h+8>>1]|0;if((f&2)!=0?(a[h+10>>0]|0)==1:0)g=c[h+12>>2]|0;else i=4;do if((i|0)==4){f=f&65535;if(!(f&16)){if(f&1|0){g=0;break}g=Fg(h,1)|0;break}else{g=c[h+12>>2]|0;if(!(f&16384))break;g=(c[h>>2]|0)+g|0;break}}while(0);i=cw(g|0,((g|0)<0)<<31>>31|0,1)|0;f=L()|0;i=i|1;h=c[e>>2]|0;k=c[(c[h+32>>2]|0)+108>>2]|0;j=((k|0)<0)<<31>>31;if((f|0)>(j|0)|(f|0)==(j|0)&i>>>0>k>>>0){c[e+20>>2]=18;yc(h,31223,-1,1,0)|0;return}k=Sv(i|0,f|0,-1,-1)|0;j=L()|0;do if(!(j>>>0>0|(j|0)==0&k>>>0>2147483390)){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](i)|0;if(!f)break;else h=f}else{j=Wa[c[29356>>2]&127](i)|0;if((c[14985]|0)>>>0>>0)c[14985]=i;h=59064;f=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&f>>>0>0){k=c[14978]|0;i=Tv(f|0,h|0,j|0,((j|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&i>>>0<=k>>>0)&1}h=Wa[c[29340>>2]&127](j)|0;if(!h)break;f=Wa[c[29352>>2]&127](h)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0)c[14987]=f}k=g<<1;if((g|0)>0){j=h;f=l;i=0;while(1){l=d[f>>0]|0;a[j>>0]=a[21744+(l>>>4)>>0]|0;a[j+1>>0]=a[21744+(l&15)>>0]|0;i=i+1|0;if((i|0)==(g|0))break;else{j=j+2|0;f=f+1|0}}f=h+k|0}else f=h;a[f>>0]=0;if((yc(c[e>>2]|0,h,k,1,90)|0)!=18)return;c[e+20>>2]=18;yc(c[e>>2]|0,31223,-1,1,0)|0;return}while(0);f=c[e>>2]|0;g=f+8|0;if(!(b[g>>1]&9216))b[g>>1]=1;else{Dg(f);f=c[e>>2]|0}c[e+20>>2]=7;f=c[f+32>>2]|0;g=f+81|0;if(a[g>>0]|0)return;if(a[f+82>>0]|0)return;a[g>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;e=f+272|0;c[e>>2]=(c[e>>2]|0)+1;f=c[f+236>>2]|0;if(!f)return;c[f+12>>2]=7;return}function Jn(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=Ra;Ra=Ra+16|0;d=h;Fb(8,d);f=d;e=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)<0){g=Tv(0,0,e|0,f&2147483647|0)|0;f=L()|0;e=d;c[e>>2]=g;c[e+4>>2]=f}else g=e;d=c[a>>2]|0;e=d+8|0;if(!(b[e>>1]&9216)){a=d;c[a>>2]=g;c[a+4>>2]=f;b[e>>1]=4;Ra=h;return}else{Pg(d,g,f);Ra=h;return}}function Kn(d,f,h){d=d|0;f=f|0;h=h|0;var i=0,j=0,k=0;f=c[h>>2]|0;h=e[f+8>>1]|0;do if(!(h&4)){if(h&8|0){h=Mg(+g[f>>3])|0;f=L()|0;j=7;break}if(!(h&18)){i=0;f=1}else{h=Ng(a[f+10>>0]|0,c[f+12>>2]|0,c[f+16>>2]|0)|0;f=L()|0;j=7}}else{h=f;f=c[h+4>>2]|0;h=c[h>>2]|0;j=7}while(0);if((j|0)==7){j=(f|0)>0|(f|0)==0&h>>>0>1;i=j?f:0;f=j?h:1}h=c[d>>2]|0;j=c[(c[h+32>>2]|0)+108>>2]|0;k=((j|0)<0)<<31>>31;if((i|0)>(k|0)|(i|0)==(k|0)&f>>>0>j>>>0){c[d+20>>2]=18;yc(h,31223,-1,1,0)|0;return}k=Sv(f|0,i|0,-1,-1)|0;j=L()|0;do if(!(j>>>0>0|(j|0)==0&k>>>0>2147483390)){if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](f)|0;if(!h)break}else{h=Wa[c[29356>>2]&127](f)|0;if((c[14985]|0)>>>0>>0)c[14985]=f;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){k=c[14978]|0;j=Tv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0;i=L()|0;c[14768]=((i|0)<0|(i|0)==0&j>>>0<=k>>>0)&1}h=Wa[c[29340>>2]&127](h)|0;if(!h)break;i=Wa[c[29352>>2]&127](h)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}Fb(f,h);if((yc(c[d>>2]|0,h,f,0,90)|0)!=18)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}while(0);f=c[d>>2]|0;h=f+8|0;if(!(b[h>>1]&9216))b[h>>1]=1;else{Dg(f);f=c[d>>2]|0}c[d+20>>2]=7;f=c[f+32>>2]|0;h=f+81|0;if(a[h>>0]|0)return;if(a[f+82>>0]|0)return;a[h>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;k=f+272|0;c[k>>2]=(c[k>>2]|0)+1;f=c[f+236>>2]|0;if(!f)return;c[f+12>>2]=7;return}function Ln(a,b,d){a=a|0;b=b|0;d=d|0;if(!(Tg(c[d>>2]|0,c[d+4>>2]|0,c[(c[(c[a+12>>2]|0)+104>>2]|0)+(((c[a+16>>2]|0)+-1|0)*20|0)+16>>2]|0)|0))return;Dc(a,c[d>>2]|0);return}function Mn(a,b,d){a=a|0;b=b|0;d=d|0;if((yc(c[a>>2]|0,31497,-1,1,0)|0)!=18)return;c[a+20>>2]=18;yc(c[a>>2]|0,31223,-1,1,0)|0;return}function Nn(d,f,h){d=d|0;f=f|0;h=h|0;var i=0,j=0,k=0;k=Ra;Ra=Ra+16|0;j=k;d=c[h>>2]|0;f=e[d+8>>1]|0;do if(!(f&4)){if(f&8|0){i=Mg(+g[d>>3])|0;L()|0;break}if(!(f&18))i=0;else{i=Ng(a[d+10>>0]|0,c[d+12>>2]|0,c[d+16>>2]|0)|0;L()|0}}else i=c[d>>2]|0;while(0);d=c[h+4>>2]|0;do if(d){f=b[d+8>>1]|0;if((f&514)==514?(a[d+10>>0]|0)==1:0){d=c[d+16>>2]|0;break}if(!(f&1))d=Gg(d,1)|0;else d=0}else d=0;while(0);c[j>>2]=d;Db(i,31408,j);Ra=k;return}function On(e,f,h){e=e|0;f=f|0;h=h|0;var i=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=Ra;Ra=Ra+80|0;n=q+72|0;m=q+64|0;k=q+56|0;l=q;i=c[h>>2]|0;f=b[i+8>>1]|0;switch(a[816+(f&31)>>0]|0){case 2:{f=f&65535;do if(!(f&8)){if(f&4|0){p=i;j=+((c[p>>2]|0)>>>0)+4294967296.0*+(c[p+4>>2]|0);break}if(!(f&18))j=0.0;else j=+Kg(a[i+10>>0]|0,c[i+12>>2]|0,c[i+16>>2]|0)}else j=+g[i>>3];while(0);g[m>>3]=j;Cb(50,l,32529,m)|0;Lg(l,k,20,1)|0;if(j!=+g[k>>3]){g[n>>3]=j;Cb(50,l,49546,n)|0}if((yc(c[e>>2]|0,l,-1,1,-1)|0)==18){c[e+20>>2]=18;yc(c[e>>2]|0,31223,-1,1,0)|0}Ra=q;return}case 1:{Dc(e,i);Ra=q;return}case 4:{m=mc(i)|0;h=c[h>>2]|0;f=b[h+8>>1]|0;if((f&2)!=0?(a[h+10>>0]|0)==1:0)l=c[h+12>>2]|0;else o=17;do if((o|0)==17){f=f&65535;if(!(f&16)){if(f&1|0){l=0;break}l=Fg(h,1)|0;break}else{i=c[h+12>>2]|0;if(!(f&16384)){l=i;break}l=(c[h>>2]|0)+i|0;break}}while(0);f=cw(l|0,((l|0)<0)<<31>>31|0,1)|0;i=L()|0;k=Sv(f|0,i|0,4,0)|0;n=L()|0;h=c[e>>2]|0;p=c[(c[h+32>>2]|0)+108>>2]|0;o=((p|0)<0)<<31>>31;if((n|0)>(o|0)|(n|0)==(o|0)&k>>>0>p>>>0){c[e+20>>2]=18;yc(h,31223,-1,1,0)|0;Ra=q;return}p=Sv(f|0,i|0,3,0)|0;o=L()|0;do if(!(o>>>0>0|(o|0)==0&p>>>0>2147483390)){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](k)|0;if(!f)break}else{h=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;i=59064;f=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&f>>>0>0){p=c[14978]|0;o=Tv(f|0,i|0,h|0,((h|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&o>>>0<=p>>>0)&1}f=Wa[c[29340>>2]&127](h)|0;if(!f)break;i=Wa[c[29352>>2]&127](f)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}if((l|0)>0){i=0;do{o=m+i|0;p=i<<1;a[f+(p+2)>>0]=a[21744+((d[o>>0]|0)>>>4)>>0]|0;a[f+(p+3)>>0]=a[21744+(a[o>>0]&15)>>0]|0;i=i+1|0}while((i|0)!=(l|0))}p=l<<1;a[f+(p+2)>>0]=39;a[f+(p+3)>>0]=0;a[f>>0]=88;a[f+1>>0]=39;if((yc(c[e>>2]|0,f,-1,1,-1)|0)==18){c[e+20>>2]=18;yc(c[e>>2]|0,31223,-1,1,0)|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);Ra=q;return}else{e=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);Ra=q;return}}while(0);f=c[e>>2]|0;i=f+8|0;if(!(b[i>>1]&9216))b[i>>1]=1;else{Dg(f);f=c[e>>2]|0}c[e+20>>2]=7;f=c[f+32>>2]|0;i=f+81|0;if(a[i>>0]|0){Ra=q;return}if(a[f+82>>0]|0){Ra=q;return}a[i>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;e=f+272|0;c[e>>2]=(c[e>>2]|0)+1;f=c[f+236>>2]|0;if(!f){Ra=q;return}c[f+12>>2]=7;Ra=q;return}case 3:{if(!i){Ra=q;return}if((f&514)==514?(a[i+10>>0]|0)==1:0)p=c[i+16>>2]|0;else o=57;do if((o|0)==57)if(!(f&1)){p=Gg(i,1)|0;break}else{Ra=q;return}while(0);if(!p){Ra=q;return}h=0;f=0;i=0;a:while(1){switch(a[p+h>>0]|0){case 0:break a;case 39:{f=Sv(f|0,i|0,1,0)|0;i=L()|0;break}default:{}}h=h+1|0}f=Sv(f|0,i|0,h|0,0)|0;i=L()|0;k=Sv(f|0,i|0,3,0)|0;m=L()|0;h=c[e>>2]|0;o=c[(c[h+32>>2]|0)+108>>2]|0;n=((o|0)<0)<<31>>31;if((m|0)>(n|0)|(m|0)==(n|0)&k>>>0>o>>>0){c[e+20>>2]=18;yc(h,31223,-1,1,0)|0;Ra=q;return}o=Sv(f|0,i|0,2,0)|0;n=L()|0;do if(!(n>>>0>0|(n|0)==0&o>>>0>2147483390)){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](k)|0;if(!f)break}else{h=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;i=59064;f=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&f>>>0>0){o=c[14978]|0;n=Tv(f|0,i|0,h|0,((h|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&n>>>0<=o>>>0)&1}f=Wa[c[29340>>2]&127](h)|0;if(!f)break;i=Wa[c[29352>>2]&127](f)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}a[f>>0]=39;i=a[p>>0]|0;h=f+1|0;if(!(i<<24>>24))i=2;else{k=1;n=0;m=i;l=p;i=2;do{a[h>>0]=m;if((a[l>>0]|0)==39){a[f+i>>0]=39;k=k+2|0}else k=i;n=n+1|0;l=p+n|0;m=a[l>>0]|0;i=k+1|0;h=f+k|0}while(m<<24>>24!=0)}a[h>>0]=39;a[f+i>>0]=0;if((yc(c[e>>2]|0,f,i,1,90)|0)!=18){Ra=q;return}c[e+20>>2]=18;yc(c[e>>2]|0,31223,-1,1,0)|0;Ra=q;return}while(0);f=c[e>>2]|0;i=f+8|0;if(!(b[i>>1]&9216))b[i>>1]=1;else{Dg(f);f=c[e>>2]|0}c[e+20>>2]=7;f=c[f+32>>2]|0;i=f+81|0;if(a[i>>0]|0){Ra=q;return}if(a[f+82>>0]|0){Ra=q;return}a[i>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;e=f+272|0;c[e>>2]=(c[e>>2]|0)+1;f=c[f+236>>2]|0;if(!f){Ra=q;return}c[f+12>>2]=7;Ra=q;return}default:{if((yc(c[e>>2]|0,31171,4,1,0)|0)!=18){Ra=q;return}c[e+20>>2]=18;yc(c[e>>2]|0,31223,-1,1,0)|0;Ra=q;return}}}function Pn(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;e=c[a>>2]|0;a=(c[e+32>>2]|0)+40|0;f=c[a>>2]|0;a=c[a+4>>2]|0;d=e+8|0;if(!(b[d>>1]&9216)){c[e>>2]=f;c[e+4>>2]=a;b[d>>1]=4;return}else{Pg(e,f,a);return}}function Qn(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;d=c[a>>2]|0;e=c[(c[d+32>>2]|0)+100>>2]|0;f=((e|0)<0)<<31>>31;a=d+8|0;if(!(b[a>>1]&9216)){c[d>>2]=e;c[d+4>>2]=f;b[a>>1]=4;return}else{Pg(d,e,f);return}}function Rn(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;d=c[a>>2]|0;e=c[(c[d+32>>2]|0)+104>>2]|0;f=((e|0)<0)<<31>>31;a=d+8|0;if(!(b[a>>1]&9216)){c[d>>2]=e;c[d+4>>2]=f;b[a>>1]=4;return}else{Pg(d,e,f);return}}function Sn(d,e,f){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,y=0,z=0,A=0,B=0;i=c[(c[d>>2]|0)+32>>2]|0;e=c[f>>2]|0;if(!e)return;g=b[e+8>>1]|0;if((g&514)==514?(a[e+10>>0]|0)==1:0)A=c[e+16>>2]|0;else B=5;do if((B|0)==5)if(!(g&1)){A=Gg(e,1)|0;break}else return;while(0);if(!A)return;h=c[f>>2]|0;e=b[h+8>>1]|0;if((e&2)!=0?(a[h+10>>0]|0)==1:0)z=c[h+12>>2]|0;else B=11;do if((B|0)==11){e=e&65535;if(!(e&16)){if(e&1|0){z=0;break}z=Fg(h,1)|0;break}else{g=c[h+12>>2]|0;if(!(e&16384)){z=g;break}z=(c[h>>2]|0)+g|0;break}}while(0);h=f+4|0;e=c[h>>2]|0;if(!e)return;g=b[e+8>>1]|0;if((g&514)==514?(a[e+10>>0]|0)==1:0)y=c[e+16>>2]|0;else B=20;do if((B|0)==20)if(!(g&1)){y=Gg(e,1)|0;break}else return;while(0);if(!y)return;if(!(a[y>>0]|0)){Dc(d,c[f>>2]|0);return}h=c[h>>2]|0;e=b[h+8>>1]|0;if((e&2)!=0?(a[h+10>>0]|0)==1:0)x=c[h+12>>2]|0;else B=28;do if((B|0)==28){e=e&65535;if(!(e&16)){if(e&1|0){x=0;break}x=Fg(h,1)|0;break}else{g=c[h+12>>2]|0;if(!(e&16384)){x=g;break}x=(c[h>>2]|0)+g|0;break}}while(0);h=f+8|0;e=c[h>>2]|0;if(!e)return;g=b[e+8>>1]|0;if((g&514)==514?(a[e+10>>0]|0)==1:0)w=c[e+16>>2]|0;else B=37;do if((B|0)==37)if(!(g&1)){w=Gg(e,1)|0;break}else return;while(0);if(!w)return;h=c[h>>2]|0;e=b[h+8>>1]|0;if((e&2)!=0?(a[h+10>>0]|0)==1:0)v=c[h+12>>2]|0;else B=43;do if((B|0)==43){e=e&65535;if(!(e&16)){if(e&1|0){v=0;break}v=Fg(h,1)|0;break}else{g=c[h+12>>2]|0;if(!(e&16384)){v=g;break}v=(c[h>>2]|0)+g|0;break}}while(0);k=z+1|0;j=((k|0)<0)<<31>>31;e=c[d>>2]|0;if((c[(c[e+32>>2]|0)+108>>2]|0)<=(z|0)){c[d+20>>2]=18;yc(e,31223,-1,1,0)|0;return}u=Sv(k|0,j|0,-1,-1)|0;t=L()|0;a:do if(!(t>>>0>0|(t|0)==0&u>>>0>2147483390)){do if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](k)|0;if(!h)break a}else{e=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;h=59064;g=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&g>>>0>0){u=c[14978]|0;t=Tv(g|0,h|0,e|0,((e|0)<0)<<31>>31|0)|0;s=L()|0;c[14768]=((s|0)<0|(s|0)==0&t>>>0<=u>>>0)&1}h=Wa[c[29340>>2]&127](e)|0;if(!h)break a;e=Wa[c[29352>>2]&127](h)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0<=(c[14987]|0)>>>0)break;c[14987]=e}while(0);u=z-x|0;b:do if((u|0)>=0){r=v-x|0;s=((r|0)<0)<<31>>31;o=i+108|0;t=x+-1|0;p=~z;q=((p|0)<0)<<31>>31;if((v|0)<=(x|0)){g=0;e=0;while(1){f=A+e|0;i=a[f>>0]|0;do if(i<<24>>24==(a[y>>0]|0)){if(Lu(f,y,x)|0){B=86;break}ew(h+g|0,w|0,v|0)|0;g=g+v|0;f=t+e|0}else B=86;while(0);if((B|0)==86){B=0;a[h+g>>0]=i;g=g+1|0;f=e}e=f+1|0;if((f|0)>=(u|0))break b}}n=0;g=0;e=0;c:while(1){f=A+e|0;i=a[f>>0]|0;do if(i<<24>>24==(a[y>>0]|0)){if(Lu(f,y,x)|0){B=77;break}j=Sv(k|0,j|0,r|0,s|0)|0;l=L()|0;k=Sv(j|0,l|0,-1,-1)|0;f=L()|0;m=c[o>>2]|0;i=((m|0)<0)<<31>>31;if((f|0)>(i|0)|(f|0)==(i|0)&k>>>0>m>>>0){B=87;break c}i=n+1|0;if(!(i&n)){if(mb()|0)break c;n=aw(0,j|0,32)|0;f=L()|0;m=Sv(j|0,l|0,p|0,q|0)|0;f=Sv(m|0,L()|0,n|0,f|0)|0;f=sb(h,f,L()|0)|0;if(!f)break c;else h=f}ew(h+g|0,w|0,v|0)|0;g=g+v|0;m=t+e|0;f=i;k=j;i=l}else B=77;while(0);if((B|0)==77){B=0;a[h+g>>0]=i;g=g+1|0;m=e;f=n;i=j}e=m+1|0;if((m|0)<(u|0)){n=f;j=i}else break b}if((B|0)==87){c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;if(!h)return;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);return}else{d=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);return}}e=c[d>>2]|0;g=e+8|0;if(!(b[g>>1]&9216))b[g>>1]=1;else{Dg(e);e=c[d>>2]|0}c[d+20>>2]=7;e=c[e+32>>2]|0;g=e+81|0;do if(!(a[g>>0]|0)){if(a[e+82>>0]|0)break;a[g>>0]=1;if((c[e+180>>2]|0)>0)c[e+264>>2]=1;d=e+272|0;c[d>>2]=(c[d>>2]|0)+1;e=c[e+236>>2]|0;if(!e)break;c[e+12>>2]=7}while(0);if(!h)return;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);return}else{d=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);return}}else{g=0;e=0}while(0);B=z-e|0;ew(h+g|0,A+e|0,B|0)|0;B=g+B|0;a[h+B>>0]=0;if((yc(c[d>>2]|0,h,B,1,90)|0)!=18)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}while(0);e=c[d>>2]|0;g=e+8|0;if(!(b[g>>1]&9216))b[g>>1]=1;else{Dg(e);e=c[d>>2]|0}c[d+20>>2]=7;e=c[e+32>>2]|0;g=e+81|0;if(a[g>>0]|0)return;if(a[e+82>>0]|0)return;a[g>>0]=1;if((c[e+180>>2]|0)>0)c[e+264>>2]=1;d=e+272|0;c[d>>2]=(c[d>>2]|0)+1;e=c[e+236>>2]|0;if(!e)return;c[e+12>>2]=7;return}function Tn(d,f,h){d=d|0;f=f|0;h=h|0;var i=0,j=0,k=0;f=c[h>>2]|0;h=e[f+8>>1]|0;do if(!(h&4)){if(h&8|0){h=Mg(+g[f>>3])|0;f=L()|0;j=7;break}if(!(h&18)){f=0;i=0}else{h=Ng(a[f+10>>0]|0,c[f+12>>2]|0,c[f+16>>2]|0)|0;f=L()|0;j=7}}else{h=f;f=c[h+4>>2]|0;h=c[h>>2]|0;j=7}while(0);if((j|0)==7){i=(f|0)>0|(f|0)==0&h>>>0>0;f=i?f:0;i=i?h:0}h=c[d>>2]|0;j=c[(c[h+32>>2]|0)+108>>2]|0;k=((j|0)<0)<<31>>31;if(f>>>0>k>>>0|(f|0)==(k|0)&i>>>0>j>>>0){c[d+20>>2]=18;if(!(b[h+8>>1]&1))return;yc(h,31223,-1,1,0)|0;return}f=h+8|0;if(!((b[f>>1]&9216)==0?!(c[h+24>>2]|0):0))Cg(h);b[f>>1]=16400;c[h+12>>2]=0;c[h>>2]=(i|0)>0?i:0;a[h+10>>0]=1;c[h+16>>2]=0;return}function Un(d,f,h){d=d|0;f=f|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,s=0,t=0;k=c[h+4>>2]|0;i=b[k+8>>1]|0;if(-1431655766>>>(i&31)&1|0)return;n=(f|0)==3;if(n?-1431655766>>>(b[(c[h+8>>2]|0)+8>>1]&31)&1|0:0)return;j=c[h>>2]|0;l=b[j+8>>1]&15;f=i&65535;do if(!(f&4)){if(f&8|0){r=Mg(+g[k>>3])|0;L()|0;break}if(!(f&18))r=0;else{r=Ng(a[k+10>>0]|0,c[k+12>>2]|0,c[k+16>>2]|0)|0;L()|0;j=c[h>>2]|0}}else r=c[k>>2]|0;while(0);q=((r|0)<0)<<31>>31;t=(l|16)<<16>>16==16;if(t){f=b[j+8>>1]|0;if((f&2)!=0?(a[j+10>>0]|0)==1:0){i=c[j+12>>2]|0;f=j}else s=14;do if((s|0)==14){f=f&65535;if(!(f&16)){if(f&1|0){i=0;f=j;break}i=Fg(j,1)|0;f=c[h>>2]|0;break}else{i=c[j+12>>2]|0;if(!(f&16384)){f=j;break}i=(c[j>>2]|0)+i|0;f=j;break}}while(0);f=mc(f)|0;if(!f)return;else{p=f;o=i}}else{if(!j)return;f=b[j+8>>1]|0;if((f&514)==514?(a[j+10>>0]|0)==1:0)l=c[j+16>>2]|0;else s=24;do if((s|0)==24)if(!(f&1)){l=Gg(j,1)|0;break}else return;while(0);if(!l)return;if((r|0)<0?(m=a[l>>0]|0,m<<24>>24!=0):0){k=0;f=l;j=m;while(1){i=f+1|0;if((j&255)>191){f=i;while(1){j=a[f>>0]|0;if((j&-64)<<24>>24==-128)f=f+1|0;else break}}else{f=i;j=a[i>>0]|0}i=k+1|0;if(!(j<<24>>24)){p=l;o=i;break}else k=i}}else{p=l;o=0}}if(n){f=c[h+8>>2]|0;i=e[f+8>>1]|0;do if(!(i&4)){if(i&8|0){f=Mg(+g[f>>3])|0;L()|0;s=42;break}if(!(i&18)){i=0;f=0;j=0}else{f=Ng(a[f+10>>0]|0,c[f+12>>2]|0,c[f+16>>2]|0)|0;L()|0;s=42}}else{f=c[f>>2]|0;s=42}while(0);if((s|0)==42){j=((f|0)<0)<<31>>31;h=(f|0)<0;n=Tv(0,0,f|0,j|0)|0;s=L()|0;i=f;f=h?n:f;j=h?s:j}l=i>>>31;i=j}else{i=c[(c[(c[d>>2]|0)+32>>2]|0)+108>>2]|0;l=0;f=i;i=((i|0)<0)<<31>>31}do if((r|0)>=0)if(!r){j=((i|0)>0|(i|0)==0&f>>>0>0)<<31>>31;f=Sv(f|0,i|0,j|0,((j|0)<0)<<31>>31|0)|0;j=0;k=0;i=L()|0;break}else{j=Sv(r|0,q|0,-1,-1)|0;k=L()|0;break}else{j=Sv(o|0,((o|0)<0)<<31>>31|0,r|0,q|0)|0;k=L()|0;q=(k|0)<0;h=Sv(f|0,i|0,j|0,k|0)|0;s=L()|0;r=(s|0)>0|(s|0)==0&h>>>0>0;j=q?0:j;k=q?0:k;f=q?(r?h:0):f;i=q?(r?s:0):i}while(0);r=(l|0)==0;m=Tv(j|0,k|0,f|0,i|0)|0;l=L()|0;s=(l|0)<0;m=r?j:s?0:m;l=r?k:s?0:l;n=r?f:s?j:f;k=r?i:s?k:i;if(t){r=Sv(m|0,l|0,n|0,k|0)|0;t=L()|0;f=((o|0)<0)<<31>>31;r=(t|0)>(f|0)|(t|0)==(f|0)&r>>>0>o>>>0;f=Tv(o|0,f|0,m|0,l|0)|0;t=L()|0;s=(t|0)>0|(t|0)==0&f>>>0>0;f=r?(s?f:0):n;t=r?(s?t:0):k;if(t>>>0>0|(t|0)==0&f>>>0>2147483647){if(!d)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}else{if((yc(c[d>>2]|0,p+m|0,f,0,-1)|0)!=18)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}}i=a[p>>0]|0;if(((m|0)!=0|(l|0)!=0)&i<<24>>24!=0){f=p;do{j=f+1|0;if((i&255)>191){f=j;while(1){i=a[f>>0]|0;if((i&-64)<<24>>24==-128)f=f+1|0;else break}}else{f=j;i=a[j>>0]|0}m=Sv(m|0,l|0,-1,-1)|0;l=L()|0}while(((m|0)!=0|(l|0)!=0)&i<<24>>24!=0);m=f}else m=p;if(i<<24>>24!=0&((n|0)!=0|(k|0)!=0)){f=m;l=n;do{j=f+1|0;if((i&255)>191){f=j;while(1){i=a[f>>0]|0;if((i&-64)<<24>>24==-128)f=f+1|0;else break}}else{f=j;i=a[j>>0]|0}l=Sv(l|0,k|0,-1,-1)|0;k=L()|0}while(i<<24>>24!=0&((l|0)!=0|(k|0)!=0))}else f=m;f=f-m|0;if((f|0)<0){if(!d)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}else{if((yc(c[d>>2]|0,m,f,1,-1)|0)!=18)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}}function Vn(f,h,i){f=f|0;h=h|0;i=i|0;var j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=Ra;Ra=Ra+16|0;n=q+8|0;o=q;h=c[f+8>>2]|0;if(!(b[h+8>>1]&8192))p=Ic(f,32)|0;else p=c[h+16>>2]|0;l=c[i>>2]|0;m=l+8|0;f=b[m>>1]&31;k=d[816+f>>0]|0;if((f|16|0)==18){h=a[l+10>>0]|0;f=l+16|0;k=l+12|0;if(!(Lg(c[f>>2]|0,n,c[k>>2]|0,h)|0))h=b[m>>1]|0;else{if(!(Og(c[f>>2]|0,o,c[k>>2]|0,h)|0)){n=o;o=c[n+4>>2]|0;h=l;c[h>>2]=c[n>>2];c[h+4>>2]=o;h=4}else{g[l>>3]=+g[n>>3];h=8}h=b[m>>1]&-3|h;b[m>>1]=h}k=d[816+(h&31)>>0]|0}if(!((p|0)!=0&(k|0)!=5)){Ra=q;return}h=p+16|0;o=h;o=Sv(c[o>>2]|0,c[o+4>>2]|0,1,0)|0;f=L()|0;c[h>>2]=o;c[h+4>>2]=f;h=c[i>>2]|0;f=e[h+8>>1]|0;if((k|0)!=1){do if(!(f&8)){if(f&4|0){i=h;j=+((c[i>>2]|0)>>>0)+4294967296.0*+(c[i+4>>2]|0);break}if(!(f&18))j=0.0;else j=+Kg(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)}else j=+g[h>>3];while(0);g[p>>3]=j+ +g[p>>3];a[p+25>>0]=1;Ra=q;return}do if(!(f&4)){if(f&8|0){m=Mg(+g[h>>3])|0;n=L()|0;break}if(!(f&18)){m=0;n=0}else{m=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;n=L()|0}}else{n=h;m=c[n>>2]|0;n=c[n+4>>2]|0}while(0);g[p>>3]=+g[p>>3]+(+(m>>>0)+4294967296.0*+(n|0));o=p+25|0;i=p+24|0;if((a[i>>0]|a[o>>0])<<24>>24){Ra=q;return}h=p+8|0;k=h;f=c[k>>2]|0;k=c[k+4>>2]|0;if((n|0)>-1|(n|0)==-1&m>>>0>4294967295){p=Tv(-1,2147483647,f|0,k|0)|0;l=L()|0;if(((k|0)>0|(k|0)==0&f>>>0>0)&((l|0)<(n|0)|(l|0)==(n|0)&p>>>0>>0))l=26;else l=25}else if((k|0)<0?(l=Tv(1,-2147483648,f|0,k|0)|0,s=L()|0,p=Sv(m|0,n|0,1,0)|0,r=L()|0,(s|0)>(r|0)|(s|0)==(r|0)&l>>>0>p>>>0):0)l=26;else l=25;if((l|0)==25){p=Sv(f|0,k|0,m|0,n|0)|0;r=L()|0;s=h;c[s>>2]=p;c[s+4>>2]=r;Ra=q;return}else if((l|0)==26){a[i>>0]=1;a[o>>0]=1;Ra=q;return}}function Wn(d){d=d|0;var e=0,f=0,h=0,i=0.0,j=0,k=0,l=0;j=Ra;Ra=Ra+16|0;f=j+8|0;h=j;e=c[d+8>>2]|0;if(!(b[e+8>>1]&8192))e=Ic(d,0)|0;else e=c[e+16>>2]|0;if(!e){Ra=j;return}k=e+16|0;l=c[k+4>>2]|0;if(!((l|0)>0|(l|0)==0&(c[k>>2]|0)>>>0>0)){Ra=j;return}if(a[e+24>>0]|0){c[d+20>>2]=1;yc(c[d>>2]|0,49524,-1,1,-1)|0;Ra=j;return}if(!(a[e+25>>0]|0)){h=e+8|0;f=c[h>>2]|0;h=c[h+4>>2]|0;e=c[d>>2]|0;d=e+8|0;if(!(b[d>>1]&9216)){l=e;c[l>>2]=f;c[l+4>>2]=h;b[d>>1]=4;Ra=j;return}else{Pg(e,f,h);Ra=j;return}}i=+g[e>>3];e=c[d>>2]|0;d=e+8|0;if(!(b[d>>1]&9216))b[d>>1]=1;else Dg(e);g[f>>3]=i;g[h>>3]=+g[f>>3];if(!(+g[f>>3]==+g[h>>3])){Ra=j;return}g[e>>3]=i;b[d>>1]=8;Ra=j;return}function Xn(f,h,i){f=f|0;h=h|0;i=i|0;var j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=Ra;Ra=Ra+16|0;n=q+8|0;o=q;h=c[f+8>>2]|0;if(!(b[h+8>>1]&8192))p=Ic(f,32)|0;else p=c[h+16>>2]|0;l=c[i>>2]|0;m=l+8|0;k=b[m>>1]&31;h=d[816+k>>0]|0;if((k|16|0)==18){h=a[l+10>>0]|0;f=l+16|0;k=l+12|0;if(!(Lg(c[f>>2]|0,n,c[k>>2]|0,h)|0))h=b[m>>1]|0;else{if(!(Og(c[f>>2]|0,o,c[k>>2]|0,h)|0)){n=o;o=c[n+4>>2]|0;h=l;c[h>>2]=c[n>>2];c[h+4>>2]=o;h=4}else{g[l>>3]=+g[n>>3];h=8}h=b[m>>1]&-3|h;b[m>>1]=h}h=d[816+(h&31)>>0]|0}if(!((p|0)!=0&(h|0)!=5)){Ra=q;return}o=p+16|0;m=o;m=Sv(c[m>>2]|0,c[m+4>>2]|0,-1,-1)|0;n=L()|0;c[o>>2]=m;c[o+4>>2]=n;if((h|0)==1?(a[p+25>>0]|0)==0:0){h=c[i>>2]|0;f=e[h+8>>1]|0;do if(!(f&4)){if(f&8|0){h=Mg(+g[h>>3])|0;f=L()|0;break}if(!(f&18)){h=0;f=0}else{h=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;f=L()|0}}else{f=h;h=c[f>>2]|0;f=c[f+4>>2]|0}while(0);g[p>>3]=+g[p>>3]-(+(h>>>0)+4294967296.0*+(f|0));p=p+8|0;o=p;o=Tv(c[o>>2]|0,c[o+4>>2]|0,h|0,f|0)|0;i=L()|0;c[p>>2]=o;c[p+4>>2]=i;Ra=q;return}h=c[i>>2]|0;f=e[h+8>>1]|0;do if(!(f&8)){if(f&4|0){i=h;j=+((c[i>>2]|0)>>>0)+4294967296.0*+(c[i+4>>2]|0);break}if(!(f&18))j=0.0;else j=+Kg(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)}else j=+g[h>>3];while(0);g[p>>3]=+g[p>>3]-j;Ra=q;return}function Yn(a){a=a|0;var d=0,e=0.0,f=0,h=0,i=0;i=Ra;Ra=Ra+16|0;f=i+8|0;h=i;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,0)|0;else d=c[d+16>>2]|0;if(!d)e=0.0;else e=+g[d>>3];d=c[a>>2]|0;a=d+8|0;if(!(b[a>>1]&9216))b[a>>1]=1;else Dg(d);g[f>>3]=e;g[h>>3]=+g[f>>3];if(!(+g[f>>3]==+g[h>>3])){Ra=i;return}g[d>>3]=e;b[a>>1]=8;Ra=i;return}function Zn(a){a=a|0;var d=0,e=0,f=0,h=0.0,i=0,j=0,k=0;k=Ra;Ra=Ra+16|0;i=k+8|0;j=k;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,0)|0;else d=c[d+16>>2]|0;if(!d){Ra=k;return}f=d+16|0;e=c[f>>2]|0;f=c[f+4>>2]|0;if(!((f|0)>0|(f|0)==0&e>>>0>0)){Ra=k;return}h=+g[d>>3]/(+(e>>>0)+4294967296.0*+(f|0));d=c[a>>2]|0;e=d+8|0;if(!(b[e>>1]&9216))b[e>>1]=1;else Dg(d);g[i>>3]=h;g[j>>3]=+g[i>>3];if(!(+g[i>>3]==+g[j>>3])){Ra=k;return}g[d>>3]=h;b[e>>1]=8;Ra=k;return}function _n(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;f=c[a+8>>2]|0;if(!(b[f+8>>1]&8192))a=Ic(a,8)|0;else a=c[f+16>>2]|0;if(!d){if(!a)return}else if(!(a|0?(1431655765>>>(b[(c[e>>2]|0)+8>>1]&31)&1|0)!=0:0))return;f=a;f=Sv(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;d=L()|0;e=a;c[e>>2]=f;c[e+4>>2]=d;return}function $n(a){a=a|0;var d=0,e=0,f=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,0)|0;else d=c[d+16>>2]|0;if(!d){e=0;f=0}else{f=d;e=c[f>>2]|0;f=c[f+4>>2]|0}d=c[a>>2]|0;a=d+8|0;if(!(b[a>>1]&9216)){c[d>>2]=e;c[d+4>>2]=f;b[a>>1]=4;return}else{Pg(d,e,f);return}}function ao(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;f=c[a+8>>2]|0;if(!(b[f+8>>1]&8192))a=Ic(a,8)|0;else a=c[f+16>>2]|0;if(!d){if(!a)return}else if(!(a|0?(1431655765>>>(b[(c[e>>2]|0)+8>>1]&31)&1|0)!=0:0))return;f=a;f=Sv(c[f>>2]|0,c[f+4>>2]|0,-1,-1)|0;d=L()|0;e=a;c[e>>2]=f;c[e+4>>2]=d;return}function bo(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;if(-1431655766>>>(b[(c[f>>2]|0)+8>>1]&31)&1|0)return;g=c[d+8>>2]|0;if(!(b[g+8>>1]&8192))k=Ic(d,24)|0;else k=c[g+16>>2]|0;if(!k)return;h=k+12|0;i=(c[h>>2]|0)==0;c[h>>2]=c[(c[(c[d>>2]|0)+32>>2]|0)+108>>2];do if(!i){if((e|0)==2){d=f+4|0;e=c[d>>2]|0;g=b[e+8>>1]|0;if((g&514)==514?(a[e+10>>0]|0)==1:0)h=c[e+16>>2]|0;else if(!(g&1)){h=Gg(e,1)|0;e=c[d>>2]|0}else h=0;g=b[e+8>>1]|0;if((g&2)!=0?(a[e+10>>0]|0)==1:0)g=c[e+12>>2]|0;else j=16;do if((j|0)==16){d=g&65535;if(!(d&16)){if(d&1|0){g=0;break}g=Fg(e,1)|0;break}else{g=c[e+12>>2]|0;if(!(d&16384))break;g=(c[e>>2]|0)+g|0;break}}while(0);if(!h)break;else d=h}else{g=1;d=41685}e=k+16|0;h=c[e>>2]|0;i=h+g|0;if(i>>>0>=(c[k+8>>2]|0)>>>0){wb(k,d,g);break}if(g|0){c[e>>2]=i;ew((c[k+4>>2]|0)+h|0,d|0,g|0)|0}}while(0);d=c[f>>2]|0;g=b[d+8>>1]|0;if((g&514)==514?(a[d+10>>0]|0)==1:0){i=c[d+16>>2]|0;e=d}else if(!(g&1)){i=Gg(d,1)|0;e=c[f>>2]|0}else{i=0;e=d}g=b[e+8>>1]|0;if((g&2)!=0?(a[e+10>>0]|0)==1:0)d=c[e+12>>2]|0;else j=34;do if((j|0)==34){g=g&65535;if(!(g&16)){if(g&1|0){d=0;break}d=Fg(e,1)|0;break}else{d=c[e+12>>2]|0;if(!(g&16384))break;d=(c[e>>2]|0)+d|0;break}}while(0);if(!i)return;g=k+16|0;e=c[g>>2]|0;h=e+d|0;if(h>>>0>=(c[k+8>>2]|0)>>>0){wb(k,i,d);return}if(!d)return;c[g>>2]=h;ew((c[k+4>>2]|0)+e|0,i|0,d|0)|0;return}function co(d){d=d|0;var e=0,f=0,g=0;e=c[d+8>>2]|0;if(!(b[e+8>>1]&8192))e=Ic(d,0)|0;else e=c[e+16>>2]|0;if(!e)return;switch(a[e+20>>0]|0){case 18:{c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}case 7:{e=c[d>>2]|0;f=e+8|0;if(!(b[f>>1]&9216))b[f>>1]=1;else{Dg(e);e=c[d>>2]|0}c[d+20>>2]=7;e=c[e+32>>2]|0;f=e+81|0;if(a[f>>0]|0)return;if(a[e+82>>0]|0)return;a[f>>0]=1;if((c[e+180>>2]|0)>0)c[e+264>>2]=1;d=e+272|0;c[d>>2]=(c[d>>2]|0)+1;e=c[e+236>>2]|0;if(!e)return;c[e+12>>2]=7;return}default:{f=e+4|0;g=c[f>>2]|0;if(((g|0)!=0?(a[g+(c[e+16>>2]|0)>>0]=0,(c[e+12>>2]|0)!=0):0)?(a[e+21>>0]&4)==0:0)e=$d(e)|0;else e=c[f>>2]|0;if((yc(c[d>>2]|0,e,-1,1,90)|0)!=18)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}}}function eo(d){d=d|0;var e=0,f=0;e=c[d+8>>2]|0;if(!(b[e+8>>1]&8192))e=Ic(d,0)|0;else e=c[e+16>>2]|0;if(!e)return;switch(a[e+20>>0]|0){case 18:{c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}case 7:{e=c[d>>2]|0;f=e+8|0;if(!(b[f>>1]&9216))b[f>>1]=1;else{Dg(e);e=c[d>>2]|0}c[d+20>>2]=7;e=c[e+32>>2]|0;f=e+81|0;if(a[f>>0]|0)return;if(a[e+82>>0]|0)return;a[f>>0]=1;if((c[e+180>>2]|0)>0)c[e+264>>2]=1;d=e+272|0;c[d>>2]=(c[d>>2]|0)+1;e=c[e+236>>2]|0;if(!e)return;c[e+12>>2]=7;return}default:{f=c[e+16>>2]|0;if(!f)e=0;else{e=e+4|0;a[(c[e>>2]|0)+f>>0]=0;e=c[e>>2]|0}if((yc(c[d>>2]|0,e,-1,1,-1)|0)!=18)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}}}function fo(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;if(-1431655766>>>(b[(c[f>>2]|0)+8>>1]&31)&1|0)return;g=c[d+8>>2]|0;if(!(b[g+8>>1]&8192))k=Ic(d,24)|0;else k=c[g+16>>2]|0;if(!k)return;h=c[f>>2]|0;d=b[h+8>>1]|0;if((d&2)!=0?(a[h+10>>0]|0)==1:0)j=c[h+12>>2]|0;else i=9;do if((i|0)==9){d=d&65535;if(!(d&16)){if(d&1|0){j=0;break}j=Fg(h,1)|0;break}else{g=c[h+12>>2]|0;if(!(d&16384)){j=g;break}j=(c[h>>2]|0)+g|0;break}}while(0);do if((e|0)==2){h=c[f+4>>2]|0;d=b[h+8>>1]|0;if(d&2?(a[h+10>>0]|0)==1:0){d=c[h+12>>2]|0;break}g=d&65535;if(!(g&16)){if(g&1|0){d=0;break}d=Fg(h,1)|0;break}else{d=c[h+12>>2]|0;if(!(g&16384))break;d=(c[h>>2]|0)+d|0;break}}else d=1;while(0);d=d+j|0;g=k+16|0;h=c[g>>2]|0;if((h|0)>(d|0)){f=h-d|0;c[g>>2]=f;e=c[k+4>>2]|0;fw(e|0,e+d|0,f|0)|0;if(c[g>>2]|0)return}else c[g>>2]=0;c[k+12>>2]=0;return}function go(f,h,i){f=f|0;h=h|0;i=i|0;var 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,J=0,K=0;J=Ra;Ra=Ra+368|0;F=J+16|0;r=J;q=J+356|0;G=J+336|0;H=J+60|0;u=J+32|0;I=c[(c[f>>2]|0)+32>>2]|0;h=c[i>>2]|0;do if(h){j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0){B=c[h+16>>2]|0;break}if(!(j&1))B=Gg(h,1)|0;else B=0}else B=0;while(0);h=c[i+12>>2]|0;do if(h){j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0){t=c[h+16>>2]|0;break}if(!(j&1))t=Gg(h,1)|0;else t=0}else t=0;while(0);h=c[i+16>>2]|0;do if(h){j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0){y=c[h+16>>2]|0;break}if(!(j&1))y=Gg(h,1)|0;else y=0}else y=0;while(0);h=c[i+20>>2]|0;j=e[h+8>>1]|0;do if(!(j&4)){if(j&8|0){x=Mg(+g[h>>3])|0;L()|0;break}if(!(j&18))x=0;else{x=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;L()|0}}else x=c[h>>2]|0;while(0);h=c[i+24>>2]|0;do if(h){j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0){A=c[h+16>>2]|0;break}if(!(j&1))A=Gg(h,1)|0;else A=0}else A=0;while(0);h=c[i+28>>2]|0;j=e[h+8>>1]|0;do if(!(j&4)){if(j&8|0){z=Mg(+g[h>>3])|0;L()|0;break}if(!(j&18))z=0;else{z=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;L()|0}}else z=c[h>>2]|0;while(0);h=c[i+32>>2]|0;j=e[h+8>>1]|0;do if(!(j&4)){if(j&8|0){l=Mg(+g[h>>3])|0;L()|0;break}if(!(j&18))l=0;else{l=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;L()|0}}else l=c[h>>2]|0;while(0);C=I+312|0;D=c[C>>2]|0;if((x|0)<0|((B|0)==0|(y|0)==0|(A|0)==0)){Ra=J;return}m=c[I+20>>2]|0;n=(m|0)>0;if(n){j=c[I+16>>2]|0;h=0;do{k=c[j+(h<<4)+4>>2]|0;if(k|0)c[(c[k+4>>2]|0)+4>>2]=c[k>>2];h=h+1|0}while((h|0)!=(m|0))}p=Sd(I,y,t)|0;if(!p){Ra=J;return}if((x|0)>=(b[p+42>>1]|0)){Ra=J;return}w=c[(c[p+4>>2]|0)+(x<<4)>>2]|0;c[G>>2]=0;c[G+4>>2]=0;c[G+8>>2]=0;c[G+12>>2]=0;c[G+16>>2]=0;s=G+8|0;c[s>>2]=(x|0)==(b[p+40>>1]|0)?-1:x;c[C>>2]=0;c[q>>2]=0;o=(l|0)==0;if(o){a:do if(t){j=m+-1|0;if(n){h=j;m=(c[I+16>>2]|0)+(j<<4)|0;while(1){k=c[m>>2]|0;if(k|0){v=a[k>>0]|0;j=(d[208+(v&255)>>0]|0)-(d[208+(d[t>>0]|0)>>0]|0)|0;if(!(v<<24>>24==0|(j|0)!=0)){l=t;do{k=k+1|0;l=l+1|0;v=a[k>>0]|0;j=(d[208+(v&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(j|0)!=0))}if(!j)break a}if(!h)break;j=h+-1|0;if((h|0)>0){h=j;m=m+-16|0}else{h=j;break a}}h=109-(d[208+(d[t>>0]|0)>>0]|0)|0;if(!h){j=t;k=50919;do{k=k+1|0;j=j+1|0;v=a[k>>0]|0;h=(d[208+(v&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(h|0)!=0))}h=((h|0)!=0)<<31>>31}else h=j}else h=-1;while(0);h=h&255}else h=1;j=I+164|0;a[j>>0]=h;v=H+4|0;gw(v|0,0,272)|0;a[H+200>>0]=2;c[H>>2]=I;c[H+132>>2]=1;h=ud(H,B,q)|0;c[v>>2]=c[q>>2];k=I+81|0;h=(a[k>>0]|0)==0?h:7;if(!h)if(((c[H+228>>2]|0)==0?(c[H+232>>2]|0)==0:0)?(c[H+236>>2]|0)==0:0){c[r>>2]=32306;c[r+4>>2]=103316;c[r+8>>2]=31517;Db(11,32001,r);h=11}else h=0;a[j>>0]=0;n=u+12|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[u>>2]=H;c[u+4>>2]=150;c[u+8>>2]=151;c[u+24>>2]=G;n=G+12|0;c[n>>2]=p;b:do if(!h){q=H+228|0;l=c[q>>2]|0;m=l;do if(l){j=c[l+12>>2]|0;if(j|0){h=H+12|0;c[h>>2]=0;Kk(H,j,0);h=(a[k>>0]|0)==0?c[h>>2]|0:7;if(h|0){E=171;break b}$j(u,j)|0;break}j=c[l>>2]|0;do if(!j){c[n>>2]=m;u=0}else{t=a[y>>0]|0;h=(d[208+(t&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0;if(!(t<<24>>24==0|(h|0)!=0)){k=y;do{k=k+1|0;j=j+1|0;t=a[k>>0]|0;h=(d[208+(t&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(t<<24>>24==0|(h|0)!=0))}c[n>>2]=m;if(h|0){u=0;break}m=c[(c[l+4>>2]|0)+(x<<4)>>2]|0;k=H+272|0;h=c[k>>2]|0;c:do if(h|0){l=k;while(1){j=h+12|0;if((c[h>>2]|0)==(m|0))break;h=c[j>>2]|0;if(!h)break c;else l=j}c[l>>2]=c[j>>2];c[j>>2]=c[G>>2];c[G>>2]=h;t=G+4|0;c[t>>2]=(c[t>>2]|0)+1}while(0);d:do if((c[s>>2]|0)<0){l=(c[q>>2]|0)+40|0;h=c[k>>2]|0;if(!h)break;while(1){j=h+12|0;if((c[h>>2]|0)==(l|0))break;h=c[j>>2]|0;if(!h)break d;else k=j}c[k>>2]=c[j>>2];c[j>>2]=c[G>>2];c[G>>2]=h;t=G+4|0;c[t>>2]=(c[t>>2]|0)+1}while(0);h=c[q>>2]|0;k=c[h+24>>2]|0;do if(k){j=c[k>>2]|0;if((j|0)<=0)break;h=k+4|0;while(1){k=c[h>>2]|0;if(k|0?_j(u,k)|0:0)break;if((j|0)>1){j=j+-1|0;h=h+20|0}else break}h=c[q>>2]|0}while(0);h=c[h+8>>2]|0;if(h|0)do{k=c[h+40>>2]|0;e:do if(k|0){j=c[k>>2]|0;if((j|0)<=0)break;k=k+4|0;while(1){l=c[k>>2]|0;if(l|0?_j(u,l)|0:0)break e;if((j|0)>1){j=j+-1|0;k=k+20|0}else break}}while(0);h=c[h+20>>2]|0}while((h|0)!=0);h=c[H+232>>2]|0;if(!h){u=1;break}while(1){k=c[h+40>>2]|0;f:do if(k|0){j=c[k>>2]|0;if((j|0)<=0)break;k=k+4|0;while(1){l=c[k>>2]|0;if(l|0?_j(u,l)|0:0)break f;if((j|0)>1){j=j+-1|0;k=k+20|0}else break}}while(0);h=c[h+20>>2]|0;if(!h){u=1;break}}}while(0);h=c[(c[q>>2]|0)+16>>2]|0;if(h|0){q=H+272|0;r=((w|0)!=0)<<31>>31;s=(w|0)==0;t=G+4|0;do{o=c[h+20>>2]|0;if((o|0)>0){p=h+8|0;n=0;do{g:do if(u){m=h+36+(n<<3)|0;if((c[m>>2]|0)!=(x|0))break;j=c[q>>2]|0;if(!j)break;l=q;while(1){k=j+12|0;if((c[j>>2]|0)==(m|0))break;j=c[k>>2]|0;if(!j)break g;else l=k}c[l>>2]=c[k>>2];c[k>>2]=c[G>>2];c[G>>2]=j;c[t>>2]=(c[t>>2]|0)+1}while(0);k=c[p>>2]|0;h:do if(k|0){m=a[k>>0]|0;j=(d[208+(m&255)>>0]|0)-(d[208+(d[y>>0]|0)>>0]|0)|0;if(!(m<<24>>24==0|(j|0)!=0)){l=y;do{k=k+1|0;l=l+1|0;m=a[k>>0]|0;j=(d[208+(m&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(m<<24>>24==0|(j|0)!=0))}if(j|0)break;m=c[h+36+(n<<3)+4>>2]|0;do if(!m)j=r;else{if(s)break h;l=a[m>>0]|0;j=(d[208+(l&255)>>0]|0)-(d[208+(d[w>>0]|0)>>0]|0)|0;if(l<<24>>24==0|(j|0)!=0)break;k=w;l=m;do{l=l+1|0;k=k+1|0;K=a[l>>0]|0;j=(d[208+(K&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(K<<24>>24==0|(j|0)!=0))}while(0);if(j|0)break;j=c[q>>2]|0;if(!j)break;l=q;while(1){k=j+12|0;if((c[j>>2]|0)==(m|0))break;j=c[k>>2]|0;if(!j)break h;else l=k}c[l>>2]=c[k>>2];c[k>>2]=c[G>>2];c[G>>2]=j;c[t>>2]=(c[t>>2]|0)+1}while(0);n=n+1|0}while((n|0)<(o|0))}h=c[h+4>>2]|0}while((h|0)!=0)}}else{l=H+232|0;h=c[l>>2]|0;if(h|0){k=c[h+40>>2]|0;do if(k){j=c[k>>2]|0;if((j|0)<=0)break;h=k+4|0;while(1){k=c[h>>2]|0;if(k|0?_j(u,k)|0:0)break;if((j|0)>1){j=j+-1|0;h=h+20|0}else break}h=c[l>>2]|0}while(0);h=c[h+36>>2]|0;if(!h)break;_j(u,h)|0;break}h=lo(H,o?t:0)|0;if(h|0){E=171;break b}k=H+236|0;h=c[(c[k>>2]|0)+28>>2]|0;if(h|0)do{j=c[h+12>>2]|0;do if(j|0){if((bd(H,0,j,t)|0)!=(p|0))break;j=c[h+28>>2]|0;if(j|0)mo(H,G,c[j+8>>2]|0,w);no(H,G,c[h+24>>2]|0,w);mo(H,G,c[h+20>>2]|0,w)}while(0);h=c[h+36>>2]|0}while((h|0)!=0);if((c[H+120>>2]|0)==(p|0))no(H,G,c[(c[k>>2]|0)+16>>2]|0,w);oo(u,c[k>>2]|0)}while(0);h=po(f,G,B,A,z)|0;if(h|0)E=171}else E=171;while(0);do if((E|0)==171){if(!(c[v>>2]|0)){c[f+20>>2]=h;j=c[f>>2]|0;if(!(b[j+8>>1]&1))break;i:do switch(h|0){case 516:{h=50738;break}case 100:{h=50760;break}case 101:{h=50782;break}default:{h=h&255;if(h>>>0<29){if(!(520028155>>>h&1)){h=50724;break i}h=c[22960+(h<<2)>>2]|0}else h=50724}}while(0);yc(j,h,-1,1,0)|0;break}j=c[i+4>>2]|0;k=c[i+8>>2]|0;j:do if(j){h=b[j+8>>1]|0;do if((h&514)==514){if((a[j+10>>0]|0)!=1)break;j=c[j+16>>2]|0;break j}while(0);if(!(h&1))j=Gg(j,1)|0;else j=0}else j=0;while(0);k:do if(!k)h=0;else{h=b[k+8>>1]|0;do if((h&514)==514){if((a[k+10>>0]|0)!=1)break;h=c[k+16>>2]|0;break k}while(0);if(h&1){h=0;break}h=Gg(k,1)|0}while(0);K=c[v>>2]|0;c[F>>2]=j;c[F+4>>2]=h;c[F+8>>2]=59952;c[F+12>>2]=K;h=Bb(49618,F)|0;c[f+20>>2]=1;yc(c[f>>2]|0,h,-1,1,-1)|0;if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{K=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);qo(H);ro(I,c[G>>2]|0);c[C>>2]=D;Ra=J;return} -function oe(a,d,f,g){a=a|0;d=d|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;r=Ra;Ra=Ra+48|0;j=r+16|0;n=r+8|0;m=r;p=r+24|0;q=c[a+36>>2]|0;h=c[q>>2]|0;o=(1<>2]|0;if(!i)h=0;else{h=0;do{if((i|0)!=(q|0))h=b[i+10>>1]|h;i=c[i+4>>2]|0}while((i|0)!=0)}i=o&65535;if(((o&(h&65535)|0)==0?(l=c[(c[(c[a+8>>2]|0)+40>>2]|0)+12>>2]|0,(l|0)>-1):0)?(b[p>>1]=2,b[p+2>>1]=0,c[p+4>>2]=d+120,c[p+8>>2]=f,f=c[606]|0,c[m>>2]=p,(Ya[f&127](l,13,m)|0)==-1):0){q=5;Ra=r;return q|0}p=~i;f=q+12|0;b[f>>1]=(e[f>>1]|0)&p;q=q+10|0;b[q>>1]=(e[q>>1]|0)&p;q=0;Ra=r;return q|0}h=c[h+32>>2]|0;i=(h|0)==0;if(!(g&4)){a:do if(!i){while(1){if(o&(e[h+12>>1]|0)|0){h=5;i=33;break}if(o&(e[h+10>>1]|0)|0){h=5;i=33;break}h=c[h+4>>2]|0;if(!h)break a}if((i|0)==33){Ra=r;return h|0}}while(0);h=c[(c[(c[a+8>>2]|0)+40>>2]|0)+12>>2]|0;if((h|0)>-1?(b[p>>1]=1,b[p+2>>1]=0,c[p+4>>2]=d+120,c[p+8>>2]=f,f=c[606]|0,c[j>>2]=p,(Ya[f&127](h,13,j)|0)==-1):0){q=5;Ra=r;return q|0}q=q+12|0;b[q>>1]=o|(e[q>>1]|0);q=0;Ra=r;return q|0}else{b:do if(i)h=0;else{i=0;while(1){if(o&(e[h+12>>1]|0)|0){h=5;break}i=b[h+10>>1]|i;h=c[h+4>>2]|0;if(!h){h=i;break b}}Ra=r;return h|0}while(0);if(((o&(h&65535)|0)==0?(k=c[(c[(c[a+8>>2]|0)+40>>2]|0)+12>>2]|0,(k|0)>-1):0)?(b[p>>1]=0,b[p+2>>1]=0,c[p+4>>2]=d+120,c[p+8>>2]=f,f=c[606]|0,c[n>>2]=p,(Ya[f&127](k,13,n)|0)==-1):0){q=5;Ra=r;return q|0}q=q+10|0;b[q>>1]=o|(e[q>>1]|0);q=0;Ra=r;return q|0}return 0}function pe(a){a=a|0;return}function qe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=a+36|0;f=c[e>>2]|0;if(!f)return 0;g=c[f>>2]|0;d=g+32|0;while(1){h=c[d>>2]|0;if((h|0)==(f|0))break;else d=h+4|0}c[d>>2]=c[f+4>>2];if(!(c[7324]|0))ab[c[29344>>2]&127](f);else{h=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f)}c[e>>2]=0;f=g+28|0;h=(c[f>>2]|0)+-1|0;c[f>>2]=h;if(h|0)return 0;if(b|0?(c[g+12>>2]|0)>-1:0)Wa[c[2532>>2]&127](c[g+8>>2]|0)|0;Ae(a);return 0}function re(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=0;return 0}function se(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function te(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=Ra;Ra=Ra+192|0;i=j+24|0;g=j+16|0;f=j+8|0;e=j;h=j+104|0;d=j+28|0;if(b[a+18>>1]&128){Ra=j;return}if(Xa[c[2400>>2]&255](c[a+12>>2]|0,d)|0){c[e>>2]=c[a+32>>2];Db(28,31582,e);Ra=j;return}switch(c[d+16>>2]|0){case 0:{c[f>>2]=c[a+32>>2];Db(28,31606,f);Ra=j;return}case 1:{e=a+8|0;if(!(c[e>>2]|0)){Ra=j;return}d=a+32|0;if(!(Xa[c[2388>>2]&255](c[d>>2]|0,h)|0)){a=(c[e>>2]|0)+8|0;if((c[a+4>>2]|0)==0?(c[a>>2]|0)==(c[h+72>>2]|0):0){Ra=j;return}}c[i>>2]=c[d>>2];Db(28,31662,i);Ra=j;return}default:{c[g>>2]=c[a+32>>2];Db(28,31635,g);Ra=j;return}}}function ue(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=Ra;Ra=Ra+16|0;f=e;c[f>>2]=d;d=Mu(a,b,f)|0;Ra=e;return d|0}function ve(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=Ra;Ra=Ra+576|0;g=j+552|0;h=j+536|0;e=j+528|0;k=j+520|0;f=j;c[k>>2]=b;Cb(512,f,31408,k)|0;b=Eu(f)|0;a:do if((b|0)>0)while(1){if((a[f+b>>0]|0)==47)break a;if((b|0)>1)b=b+-1|0;else{i=5;break}}else i=5;while(0);if((i|0)==5)if((a[f>>0]|0)==47)b=1;else{a[f>>0]=46;b=1}a[f+b>>0]=0;while(1){b=Ya[c[2340>>2]&127](f,524288,420)|0;if((b|0)<0){k=uu()|0;if((c[k>>2]|0)!=4){i=14;break}}else{if((b|0)>2){i=13;break}Wa[c[2352>>2]&127](b)|0;c[e>>2]=f;c[e+4>>2]=b;Db(28,31900,e);if((Ya[c[2340>>2]&127](31943,0,0)|0)<0){b=-1;i=14;break}}}if((i|0)==13){c[d>>2]=b;k=0;Ra=j;return k|0}else if((i|0)==14){c[d>>2]=b;c[h>>2]=31984;c[h+4>>2]=36187;c[h+8>>2]=31517;Db(14,32001,h);i=uu()|0;i=c[i>>2]|0;k=dv(i)|0;c[g>>2]=36187;c[g+4>>2]=i;c[g+8>>2]=31807;c[g+12>>2]=f;c[g+16>>2]=k;Db(14,31953,g);k=14;Ra=j;return k|0}return 0}function we(){return Ka(30)|0}function xe(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,l=0;k=Ra;Ra=Ra+96|0;h=k;i=k+8|0;j=(d|0)!=0;f=j?d:420;g=b|524288;while(1){e=Ya[c[2340>>2]&127](a,g,f)|0;if((e|0)<0){l=uu()|0;if((c[l>>2]|0)!=4){a=13;break}}else{if((e|0)>2){a=7;break}Wa[c[2352>>2]&127](e)|0;c[h>>2]=a;c[h+4>>2]=e;Db(28,31900,h);if((Ya[c[2340>>2]&127](31943,b,d)|0)<0){e=-1;a=13;break}}}if((a|0)==7){if(!j){l=e;Ra=k;return l|0}if(((Xa[c[2400>>2]&255](e,i)|0)==0?(c[i+36>>2]|0)==0:0)?(c[i+12>>2]&511|0)!=(d|0):0)Xa[c[2508>>2]&255](e,d)|0;l=e;Ra=k;return l|0}else if((a|0)==13){Ra=k;return e|0}return 0}function ye(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;k=Ra;Ra=Ra+112|0;j=k+80|0;i=k;a[d>>0]=0;e=c[14771]|0;if(!(c[672]|0)){g=Ca(32077)|0;c[672]=g}if(!(c[673]|0)){g=Ca(32091)|0;c[673]=g}f=i+12|0;g=e;e=0;while(1){if(((g|0?(Xa[c[2388>>2]&255](g,i)|0)==0:0)?(c[f>>2]&61440|0)==16384:0)?(Xa[c[2364>>2]&255](g,3)|0)==0:0)break;if(e>>>0>5){h=11;break}g=c[2688+(e<<2)>>2]|0;e=e+1|0}if((h|0)==11){j=6410;Ra=k;return j|0}f=d+(b+-2)|0;e=0;while(1){Fb(8,i);a[f>>0]=0;l=i;m=c[l>>2]|0;l=c[l+4>>2]|0;c[j>>2]=g;h=j+8|0;c[h>>2]=m;c[h+4>>2]=l;c[j+16>>2]=0;Cb(b,d,32037,j)|0;if(e>>>0>10|(a[f>>0]|0)!=0){e=1;h=16;break}if(!(Xa[c[2364>>2]&255](d,0)|0))e=e+1|0;else{e=0;h=16;break}}if((h|0)==16){Ra=k;return e|0}return 0}function ze(d,e){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;m=Ra;Ra=Ra+80|0;l=m+48|0;i=m+24|0;h=m+16|0;k=m;f=m+56|0;b[f+2>>1]=0;c[f+4>>2]=128;c[f+8>>2]=1;b[f>>1]=1;o=c[606]|0;g=e+12|0;n=c[g>>2]|0;c[k>>2]=f;if(Ya[o&127](n,12,k)|0){o=3850;Ra=m;return o|0}a:do switch(b[f>>1]|0){case 2:{if(a[e+22>>0]|0){a[e+23>>0]=1;o=1288;Ra=m;return o|0}d=d+8|0;f=c[(c[(c[d>>2]|0)+40>>2]|0)+12>>2]|0;if((f|0)>-1?(b[k>>1]=1,b[k+2>>1]=0,c[k+4>>2]=128,c[k+8>>2]=1,o=c[606]|0,c[h>>2]=k,(Ya[o&127](f,13,h)|0)==-1):0){o=5;Ra=m;return o|0}f=c[g>>2]|0;do{g=Xa[c[2412>>2]&255](f,3)|0;if((g|0)>=0){j=12;break}o=uu()|0}while((c[o>>2]|0)==4);if((j|0)==12?(g|0)==0:0)break a;n=c[e+8>>2]|0;l=uu()|0;l=c[l>>2]|0;o=dv(l)|0;c[i>>2]=36954;c[i+4>>2]=l;c[i+8>>2]=31726;c[i+12>>2]=(n|0)==0?59952:n;c[i+16>>2]=o;Db(4618,31953,i);o=4618;Ra=m;return o|0}case 1:{o=5;Ra=m;return o|0}default:d=d+8|0}while(0);d=c[(c[(c[d>>2]|0)+40>>2]|0)+12>>2]|0;if((d|0)>-1){b[k>>1]=0;b[k+2>>1]=0;c[k+4>>2]=128;c[k+8>>2]=1;o=c[606]|0;c[l>>2]=k;d=(Ya[o&127](d,13,l)|0)==-1;d=d?5:0}else d=0;o=d;Ra=m;return o|0}function Ae(a){a=a|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=Ra;Ra=Ra+32|0;m=n;l=c[(c[a+8>>2]|0)+40>>2]|0;if(!l){Ra=n;return}if(c[l+28>>2]|0){Ra=n;return}f=Va[c[2640>>2]&127]()|0;f=(f|0)<32768?1:(f|0)/32768|0;h=l+20|0;if(!(b[h>>1]|0))d=l+24|0;else{i=l+12|0;d=l+24|0;j=l+16|0;g=0;do{do if((c[i>>2]|0)<=-1){k=c[(c[d>>2]|0)+(g<<2)>>2]|0;if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{o=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}else Xa[c[2616>>2]&255](c[(c[d>>2]|0)+(g<<2)>>2]|0,c[j>>2]|0)|0;while(0);g=g+f|0}while((g|0)<(e[h>>1]|0))}d=c[d>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{o=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);f=l+12|0;d=c[f>>2]|0;if((d|0)>-1){if(Wa[c[2352>>2]&127](d)|0){if(!a)d=0;else d=c[a+32>>2]|0;a=uu()|0;a=c[a>>2]|0;o=dv(a)|0;c[m>>2]=36897;c[m+4>>2]=a;c[m+8>>2]=31695;c[m+12>>2]=(d|0)==0?59952:d;c[m+16>>2]=o;Db(4106,31953,m)}c[f>>2]=-1}c[(c[l>>2]|0)+40>>2]=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);Ra=n;return}else{o=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);Ra=n;return}}function Be(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=Ra;Ra=Ra+32|0;e=f;b=a+12|0;d=c[b>>2]|0;if((d|0)>-1){if(Wa[c[2352>>2]&127](d)|0){g=c[a+32>>2]|0;h=uu()|0;h=c[h>>2]|0;d=dv(h)|0;c[e>>2]=34584;c[e+4>>2]=h;c[e+8>>2]=31695;c[e+12>>2]=(g|0)==0?59952:g;c[e+16>>2]=d;Db(4106,31953,e)}c[b>>2]=-1}b=c[a+28>>2]|0;if(!b){b=a;d=b+52|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Ra=f;return 0}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);b=a;d=b+52|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Ra=f;return 0}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);b=a;d=b+52|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Ra=f;return 0}return 0}function Ce(a,b){a=a|0;b=b|0;return 0}function De(a,b){a=a|0;b=b|0;return 0}function Ee(a,b){a=a|0;b=b|0;c[b>>2]=0;return 0}function Fe(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=Ra;Ra=Ra+32|0;f=g;e=b+24|0;d=b+16|0;do if(a[d>>0]|0){if((Wa[c[2568>>2]&127](c[e>>2]|0)|0)>=0){a[d>>0]=0;break}d=uu()|0;d=c[d>>2]|0;if((d|0)!=2)c[b+20>>2]=d}while(0);d=c[e>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);d=b+12|0;e=c[d>>2]|0;if((e|0)>-1){if(Wa[c[2352>>2]&127](e)|0){h=c[b+32>>2]|0;i=uu()|0;i=c[i>>2]|0;e=dv(i)|0;c[f>>2]=34584;c[f+4>>2]=i;c[f+8>>2]=31695;c[f+12>>2]=(h|0)==0?59952:h;c[f+16>>2]=e;Db(4106,31953,f)}c[d>>2]=-1}d=c[b+28>>2]|0;if(!d){d=b;e=d+52|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));Ra=g;return 0}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);d=b;e=d+52|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));Ra=g;return 0}else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);d=b;e=d+52|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));Ra=g;return 0}return 0}function Ge(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b+24>>2]|0;f=b+16|0;if(a[f>>0]|0){a[f>>0]=d;Oa(e|0,0)|0;b=0;return b|0}e=Xa[c[2556>>2]&255](e,511)|0;if((e|0)>=0){a[f>>0]=d;b=e;return b|0}d=uu()|0;d=c[d>>2]|0;switch(d|0){case 1:{e=3;break}case 37:case 4:case 16:case 110:case 11:case 13:case 17:{b=5;return b|0}default:e=3850}c[b+20>>2]=d;b=e;return b|0}function He(b,e){b=b|0;e=e|0;var f=0,g=0;f=c[b+24>>2]|0;g=b+16|0;if((d[g>>0]|0|0)==(e|0)){b=0;return b|0}if((e|0)==1){a[g>>0]=1;b=0;return b|0}if((Wa[c[2568>>2]&127](f)|0)>=0){a[g>>0]=0;b=0;return b|0}e=uu()|0;e=c[e>>2]|0;if((e|0)==2){b=0;return b|0}c[b+20>>2]=e;b=2058;return b|0}function Ie(a,b){a=a|0;b=b|0;a=(Xa[c[2364>>2]&255](c[a+24>>2]|0,0)|0)==0&1;c[b>>2]=a;return 0}function Je(a,b){a=a|0;b=b|0;return 29744}function Ke(a,b){a=a|0;b=b|0;return 29820}function Le(a,b){a=a|0;b=b|0;var d=0;if((b|0)==3082)return;if((b&251|4|0)!=14)return;b=c[a>>2]|0;d=c[b+68>>2]|0;if(!d)b=0;else b=Ya[d&127](b,0,0)|0;c[a+72>>2]=b;return}function Me(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=Ra;Ra=Ra+96|0;h=f+72|0;g=c[b+108>>2]|0;c[h+4>>2]=f;c[h>>2]=b;c[h+8>>2]=70;c[h+12>>2]=g;c[h+16>>2]=0;g=h+20|0;a[g>>0]=0;a[h+21>>0]=1;tb(h,d,e);e=yb(h)|0;if((a[g>>0]|0)!=7){Ra=f;return e|0}d=b+81|0;if(a[d>>0]|0){Ra=f;return e|0}if(a[b+82>>0]|0){Ra=f;return e|0}a[d>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;d=b+272|0;c[d>>2]=(c[d>>2]|0)+1;d=c[b+236>>2]|0;if(!d){Ra=f;return e|0}c[d+12>>2]=7;Ra=f;return e|0}function Ne(a,d){a=a|0;d=d|0;var e=0,f=0;e=c[a+260>>2]|0;do if(e|0){f=e+8|0;if(!(b[f>>1]&9216)){b[f>>1]=1;break}else{Dg(e);break}}while(0);if((d|0)==3082)return;if((d&251|4|0)!=14)return;d=c[a>>2]|0;e=c[d+68>>2]|0;if(!e)d=0;else d=Ya[e&127](d,0,0)|0;c[a+72>>2]=d;return}function Oe(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=Ra;Ra=Ra+16|0;d=h+4|0;f=c[b>>2]|0;g=f+16|0;if(c[(c[g>>2]|0)+20>>2]|0){g=0;Ra=h;return g|0}if(a[b+199>>0]|0){g=0;Ra=h;return g|0}e=Pe(c[f>>2]|0,0,f,d,0,542)|0;if(e|0){cd(b,32157,h);c[b+12>>2]=e;g=1;Ra=h;return g|0}e=c[d>>2]|0;c[(c[g>>2]|0)+20>>2]=e;if((Ud(e,c[f+92>>2]|0,-1,0)|0)==7){Fc(f);g=1;Ra=h;return g|0}else{g=0;Ra=h;return g|0}return 0}function Pe(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,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,J=0;J=Ra;Ra=Ra+128|0;p=J+104|0;D=J+120|0;A=J+116|0;H=J;G=(f|0)==0;if(!G){k=(a[f>>0]|0)==0;if(Bu(f,32227)|0)if(k)B=4;else{k=0;B=5}else B=6}else B=4;if((B|0)==4)if((a[g+80>>0]|0)==2){k=1;B=6}else{k=1;B=5}if((B|0)==5)if(!(j&128)){F=0;E=i}else B=6;if((B|0)==6){F=1;E=i|2}C=(j&256|0)!=0&(F|k)?j&-769|512:j;if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](48)|0;if(!i){h=7;Ra=J;return h|0}else I=i}else{i=Wa[c[29356>>2]&127](48)|0;if((c[14985]|0)>>>0<48)c[14985]=48;l=59064;j=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&j>>>0>0){I=c[14978]|0;z=Tv(j|0,l|0,i|0,((i|0)<0)<<31>>31|0)|0;y=L()|0;c[14768]=((y|0)<0|(y|0)==0&z>>>0<=I>>>0)&1}j=Wa[c[29340>>2]&127](i)|0;if(!j){h=7;Ra=J;return h|0}i=Wa[c[29352>>2]&127](j)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0){c[14987]=i;I=j}else I=j}l=I+4|0;s=l+44|0;do{a[l>>0]=0;l=l+1|0}while((l|0)<(s|0));c[I>>2]=g;c[I+32>>2]=I;c[I+36>>2]=1;a:do if(!k?!((C&131072|0)==0|F&(C&64|0)==0):0){if(G)k=0;else k=(Eu(f)|0)&1073741823;l=k+1|0;m=(c[e+8>>2]|0)+1|0;k=(m|0)>(l|0)?m:l;z=Sv(k|0,0,-1,-1)|0;y=L()|0;do if(!(y>>>0>0|(y|0)==0&z>>>0>2147483390)){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](k)|0;a[I+9>>0]=1;if(!k)break;else n=k}else{j=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;k=59064;i=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&i>>>0>0){z=c[14978]|0;y=Tv(i|0,k|0,j|0,((j|0)<0)<<31>>31|0)|0;x=L()|0;c[14768]=((x|0)<0|(x|0)==0&y>>>0<=z>>>0)&1}i=Wa[c[29340>>2]&127](j)|0;if(!i){B=33;break}k=Wa[c[29352>>2]&127](i)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0)c[14987]=k;a[I+9>>0]=1;n=i}if(!F){a[n>>0]=0;k=Za[c[e+36>>2]&127](e,f,m,n)|0;if(k|0){if(!(c[7324]|0))ab[c[29344>>2]&127](n);else{h=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n)}if(!(c[7324]|0)){ab[c[29344>>2]&127](I);h=k;Ra=J;return h|0}else{h=Wa[c[29352>>2]&127](I)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](I);h=k;Ra=J;return h|0}}}else ew(n|0,f|0,l|0)|0;j=c[14822]|0;b:do if(!j)j=0;else{while(1){k=c[j>>2]|0;if((Bu(n,c[k+168>>2]|0)|0)==0?(c[k>>2]|0)==(e|0):0)break;j=c[j+68>>2]|0;if(!j){j=0;break b}}k=c[g+20>>2]|0;c:do if((k|0)>0){l=c[g+16>>2]|0;while(1){i=k;k=k+-1|0;z=c[l+(k<<4)+4>>2]|0;if(z|0?(c[z+4>>2]|0)==(j|0):0)break;if((i|0)<=1)break c}if(!(c[7324]|0))ab[c[29344>>2]&127](n);else{h=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n)}if(!(c[7324]|0)){ab[c[29344>>2]&127](I);h=19;Ra=J;return h|0}else{h=Wa[c[29352>>2]&127](I)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](I);h=19;Ra=J;return h|0}}while(0);c[I+4>>2]=j;z=j+64|0;c[z>>2]=(c[z>>2]|0)+1}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](n);else{z=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n)}if(!j){B=69;break a}if(!(a[I+9>>0]|0))break a;else{B=213;break a}}else B=33;while(0);if((B|0)==33)a[I+9>>0]=1;if(!(c[7324]|0)){ab[c[29344>>2]&127](I);h=7;Ra=J;return h|0}else{h=Wa[c[29352>>2]&127](I)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](I);h=7;Ra=J;return h|0}}else B=69;while(0);d:do if((B|0)==69){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](84)|0;if(!j)k=7;else B=80}else{k=Wa[c[29356>>2]&127](84)|0;if((c[14985]|0)>>>0<84)c[14985]=84;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){z=c[14978]|0;y=Tv(i|0,j|0,k|0,((k|0)<0)<<31>>31|0)|0;x=L()|0;c[14768]=((x|0)<0|(x|0)==0&y>>>0<=z>>>0)&1}j=Wa[c[29340>>2]&127](k)|0;if(j){k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;B=80}else B=80}else k=7}do if((B|0)==80){l=j+4|0;s=l+80|0;do{a[l>>0]=0;l=l+1|0}while((l|0)<(s|0));y=E&1;z=(y|0)!=0;c[D>>2]=4096;s=e+4|0;u=c[s>>2]|0;u=((u|0)>72?u:72)+7&-8;c[j>>2]=0;do if(!(E&2))if(!G)if(a[f>>0]|0){o=e+8|0;m=(c[o>>2]|0)+1|0;k=m<<1;B=Sv(k|0,((k|0)<0)<<31>>31|0,-1,-1)|0;x=L()|0;if(!(x>>>0>0|(x|0)==0&B>>>0>2147483390)){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](k)|0;if(!k){k=7;B=229;break}else i=k}else{l=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;i=59064;k=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&k>>>0>0){B=c[14978]|0;x=Tv(k|0,i|0,l|0,((l|0)<0)<<31>>31|0)|0;w=L()|0;c[14768]=((w|0)<0|(w|0)==0&x>>>0<=B>>>0)&1}i=Wa[c[29340>>2]&127](l)|0;if(!i){k=7;B=229;break}k=Wa[c[29352>>2]&127](i)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0)c[14987]=k}a[i>>0]=0;k=Za[c[e+36>>2]&127](e,f,m,i)|0;n=(Eu(i)|0)&1073741823;m=f+(((Eu(f)|0)&1073741823)+1)|0;if(!(a[m>>0]|0))l=m;else{l=m;do{l=l+(((Eu(l)|0)&1073741823)+1)|0;l=l+(((Eu(l)|0)&1073741823)+1)|0}while((a[l>>0]|0)!=0)}if(!k){if((n+8|0)<=(c[o>>2]|0)){x=0;r=l+1-m|0;p=m;q=1;B=119;break}c[p>>2]=31984;c[p+4>>2]=55390;c[p+8>>2]=31517;Db(14,32001,p);k=14}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);B=229;break}else{B=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-B;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);B=229;break}}else{k=7;B=229}}else{x=0;r=0;p=0;i=0;n=0;q=1;B=119}else{f=0;x=0;r=0;p=0;i=0;n=0;q=0;B=119}else if(!G)if(a[f>>0]|0){m=(Eu(f)|0)+1|0;B=Sv(m|0,0,-1,-1)|0;x=L()|0;if(x>>>0>0|(x|0)==0&B>>>0>2147483390){k=7;B=229}else{if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](m)|0;if(!k){k=7;B=229;break}}else{k=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;l=59064;i=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&i>>>0>0){B=c[14978]|0;x=Tv(i|0,l|0,k|0,((k|0)<0)<<31>>31|0)|0;w=L()|0;c[14768]=((w|0)<0|(w|0)==0&x>>>0<=B>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k){k=7;B=229;break}i=Wa[c[29352>>2]&127](k)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}ew(k|0,f|0,m|0)|0;f=0;x=1;r=0;p=0;i=k;n=(Eu(k)|0)&1073741823;q=0;B=119}}else{x=1;r=0;p=0;i=0;n=0;q=1;B=119}else{f=0;x=1;r=0;p=0;i=0;n=0;q=0;B=119}while(0);e:do if((B|0)==119){o=(u<<1)+17+(n*3|0)+r+((c[s>>2]|0)+279&-8)|0;w=Sv(o|0,0,-1,-1)|0;v=L()|0;do if(!(v>>>0>0|(v|0)==0&w>>>0>2147483390)){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](o)|0;if(!k)break;else w=k}else{k=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){w=c[14978]|0;v=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;t=L()|0;c[14768]=((t|0)<0|(t|0)==0&v>>>0<=w>>>0)&1}l=Wa[c[29340>>2]&127](k)|0;if(!l)break;k=Wa[c[29352>>2]&127](l)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;w=l}else w=l}gw(w|0,0,o|0)|0;t=w+212|0;c[t>>2]=w+224;k=w+272|0;v=w+60|0;c[v>>2]=k;k=k+((c[s>>2]|0)+7&-8)|0;c[w+68>>2]=k;k=k+u|0;c[w+64>>2]=k;k=k+u|0;m=w+168|0;c[m>>2]=k;do if(i|0){l=n+1|0;o=w+172|0;c[o>>2]=k+(r+l);ew(k|0,i|0,n|0)|0;if(r|0)ew((c[m>>2]|0)+l|0,p|0,r|0)|0;ew(c[o>>2]|0,i|0,n|0)|0;l=(c[o>>2]|0)+n|0;k=32236;s=l+10|0;do{a[l>>0]=a[k>>0]|0;l=l+1|0;k=k+1|0}while((l|0)<(s|0));s=(c[o>>2]|0)+(n+9)|0;u=w+220|0;c[u>>2]=s;ew(s|0,i|0,n|0)|0;u=(c[u>>2]|0)+n|0;a[u>>0]=a[32246]|0;a[u+1>>0]=a[32247]|0;a[u+2>>0]=a[32248]|0;a[u+3>>0]=a[32249]|0;a[u+4>>0]=a[32250]|0;if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{u=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);c[w>>2]=e;c[w+144>>2]=C;f:do if(q?(a[f>>0]|0)!=0:0){c[A>>2]=0;k=_a[c[e+24>>2]&127](e,c[m>>2]|0,c[v>>2]|0,C&556927,A)|0;m=c[A>>2]&1;if(k|0)break;l=c[v>>2]|0;l=Wa[c[(c[l>>2]|0)+48>>2]&127](l)|0;g:do if(!m){do if(!(a[w+12>>0]|0)){B=c[v>>2]|0;if((Wa[c[(c[B>>2]|0)+48>>2]&127](B)|0)&4096|0)break;k=c[v>>2]|0;i=c[(c[k>>2]|0)+44>>2]|0;do if(i){B=Wa[i&127](k)|0;k=(B|0)<65536?B:65536;if((B|0)<32){k=512;break}c[w+148>>2]=k;if(k>>>0<=4096)break g;if(k>>>0>8192){c[D>>2]=8192;break g}else{c[D>>2]=k;break g}}else k=4096;while(0);c[w+148>>2]=k;break g}while(0);c[w+148>>2]=512}while(0);k=f+(((Eu(f)|0)&1073741823)+1)|0;h:do if(!(a[k>>0]|0))k=0;else{while(1){B=Bu(k,32252)|0;k=k+(((Eu(k)|0)&1073741823)+1)|0;if(!B)break;k=k+(((Eu(k)|0)&1073741823)+1)|0;if(!(a[k>>0]|0)){k=0;break h}}k=(Zm(k,1,0)|0)<<24>>24!=0}while(0);a[w+13>>0]=k&1;i:do if(!(l&8192)){k=f+(((Eu(f)|0)&1073741823)+1)|0;j:do if(a[k>>0]|0){while(1){B=Bu(k,32259)|0;k=k+(((Eu(k)|0)&1073741823)+1)|0;if(!B)break;k=k+(((Eu(k)|0)&1073741823)+1)|0;if(!(a[k>>0]|0))break j}if((Zm(k,1,0)|0)<<24>>24)break i}while(0);q=m;f=0;B=170;break f}while(0);k=C|1;B=168}else{k=C;B=168}while(0);if((B|0)==168){a[w+16>>0]=1;a[w+17>>0]=4;a[w+13>>0]=1;q=k&1;f=1;B=170}if((B|0)==170){k=Se(w,D,-1)|0;if(!k){p=c[D>>2]|0;r=(x|0)==0;i=x^1;k=r?119:0;n=c[t>>2]|0;l=n;s=l+48|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(s|0));o=n+24|0;c[o>>2]=1;l=n+28|0;c[l>>2]=88;a[n+32>>0]=i;a[n+33>>0]=2;c[n+36>>2]=k;c[n+40>>2]=w;k=n+16|0;c[k>>2]=100;c[n+20>>2]=1;m=Ya[c[29424>>2]&127](p,128,i)|0;if(!m)k=7;else{i=c[7357]|0;k=c[k>>2]|0;if((k|0)<=-1){C=Yv(k|0,((k|0)<0)<<31>>31|0,-1024,-1)|0;D=L()|0;k=(c[l>>2]|0)+(c[o>>2]|0)|0;k=Wv(C|0,D|0,k|0,((k|0)<0)<<31>>31|0)|0;L()|0}bb[i&127](m,k);k=n+44|0;i=c[k>>2]|0;if(i|0)ab[c[29452>>2]&127](i);c[k>>2]=m;c[o>>2]=p;a[w+6>>0]=y^1;c[w+156>>2]=1073741823;a[w+12>>0]=f;a[w+4>>0]=f;a[w+18>>0]=f;a[w+15>>0]=x;a[w+14>>0]=q;a[w+7>>0]=f;do if(!(f<<24>>24)){a[w+8>>0]=1;a[w+9>>0]=0;a[w+10>>0]=2;a[w+11>>0]=10;b[w+140>>1]=88;D=w+160|0;c[D>>2]=-1;c[D+4>>2]=-1;D=c[v>>2]|0;if((Wa[c[(c[D>>2]|0)+48>>2]&127](D)|0)&4096|0){k=512;break}k=c[v>>2]|0;i=c[(c[k>>2]|0)+44>>2]|0;if(!i){k=4096;break}k=Wa[i&127](k)|0;k=(k|0)<32?512:(k|0)<65536?k:65536}else{b[w+140>>1]=88;k=w+160|0;c[k>>2]=-1;c[k+4>>2]=-1;k=512}while(0);c[w+148>>2]=k;if(z|r^1)a[w+5>>0]=((y&255)<<1&255^2)+2<<24>>24;c[w+200>>2]=92;c[w+204>>2]=(c[w+40>>2]|0)==0?74:75;c[j>>2]=w;D=g+48|0;s=c[D+4>>2]|0;l=w+128|0;c[l>>2]=c[D>>2];c[l+4>>2]=s;l=H;s=l+100|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(s|0));k=c[v>>2]|0;i=c[k>>2]|0;if(i|0){k=_a[c[i+8>>2]&127](k,H,100,0,0)|0;switch(k|0){case 0:case 522:break;default:{B=230;break e}}}a[j+16>>0]=E;c[j+4>>2]=g;k=c[j>>2]|0;i=k+176|0;c[i>>2]=117;c[k+180>>2]=j;l=c[k+60>>2]|0;m=c[l>>2]|0;if(!m)l=k;else{Ya[c[m+40>>2]&127](l,15,i)|0;l=c[j>>2]|0}c[I+4>>2]=j;c[j+8>>2]=0;c[j+12>>2]=0;if(a[l+14>>0]|0){E=j+22|0;b[E>>1]=b[E>>1]|1}k=d[H+17>>0]<<16|d[H+16>>0]<<8;m=j+32|0;c[m>>2]=k;do if((k+-512|0)>>>0>65024)B=205;else{if(k+16777215&k|0){B=205;break}k=a[H+20>>0]|0;i=j+22|0;b[i>>1]=b[i>>1]|2;a[j+17>>0]=(d[H+53>>0]<<16|d[H+52>>0]<<24|d[H+54>>0]<<8|d[H+55>>0]|0)!=0&1;i=(d[H+65>>0]<<16|d[H+64>>0]<<24|d[H+66>>0]<<8|d[H+67>>0]|0)!=0&1;B=208}while(0);do if((B|0)==205){c[m>>2]=0;if(G|F){k=0;break}a[j+17>>0]=0;k=0;i=0;B=208}while(0);if((B|0)==208)a[j+18>>0]=i;i=k&255;k=Se(l,m,i)|0;if(k|0){B=230;break e}c[j+36>>2]=(c[m>>2]|0)-i;c[j+64>>2]=1;if(!(a[I+9>>0]|0))break d;c[j+68>>2]=c[14822];c[14822]=j;B=213;break d}}}i=c[v>>2]|0;l=c[i>>2]|0;if(l|0){Wa[c[l+4>>2]&127](i)|0;c[i>>2]=0}l=c[w+208>>2]|0;k:do if(l|0){i=l;do if((c[14816]|0)>>>0<=i>>>0)if((c[14817]|0)>>>0>i>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;g=(c[14820]|0)+1|0;c[14820]=g;c[14821]=(g|0)<(c[14815]|0)&1;break k}else{i=Wa[c[29352>>2]&127](l)|0;break}else i=Wa[c[29352>>2]&127](l)|0;while(0);c[14980]=(c[14980]|0)-i;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{g=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](w);B=229;break e}else{B=Wa[c[29352>>2]&127](w)|0;c[14978]=(c[14978]|0)-B;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](w);B=229;break e}}while(0);if(i)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);k=7;B=229;break}else{k=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);k=7;B=229;break}else{k=7;B=229}}while(0);if((B|0)==229)if(j)B=230;if((B|0)==230){i=c[j>>2]|0;if(i)Te(i,0)}if(j)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{g=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](I);else{g=Wa[c[29352>>2]&127](I)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](I)}c[h>>2]=0;h=k;Ra=J;return h|0}while(0);l:do if((B|0)==213){m=c[g+20>>2]|0;if((m|0)>0){l=c[g+16>>2]|0;k=0;while(1){i=c[l+(k<<4)+4>>2]|0;if(i|0?a[i+9>>0]|0:0)break;k=k+1|0;if((k|0)>=(m|0))break l}while(1){k=c[i+28>>2]|0;if(!k)break;else i=k}m=c[I+4>>2]|0;if(m>>>0<(c[i+4>>2]|0)>>>0){c[I+24>>2]=i;c[I+28>>2]=0;c[i+28>>2]=I;break}k=i+24|0;l=c[k>>2]|0;m:do if(!l)B=224;else{while(1){if((c[l+4>>2]|0)>>>0>=m>>>0)break;k=l+24|0;i=c[k>>2]|0;if(!i){i=l;B=224;break m}else{g=l;l=i;i=g}}c[I+24>>2]=l;c[I+28>>2]=i;c[l+28>>2]=I}while(0);if((B|0)==224){c[I+24>>2]=0;c[I+28>>2]=i}c[k>>2]=I}}while(0);c[h>>2]=I;k=c[I+4>>2]|0;c[k+4>>2]=c[I>>2];if(!(c[k+48>>2]|0)){h=c[(c[k>>2]|0)+212>>2]|0;c[h+16>>2]=-2e3;g=c[7357]|0;I=c[h+44>>2]|0;h=(c[h+28>>2]|0)+(c[h+24>>2]|0)|0;h=Wv(2048e3,0,h|0,((h|0)<0)<<31>>31|0)|0;L()|0;bb[g&127](I,h)}k=c[(c[j>>2]|0)+60>>2]|0;i=c[k>>2]|0;if(!i){h=0;Ra=J;return h|0}Ya[c[i+40>>2]&127](k,30,j+4|0)|0;h=0;Ra=J;return h|0}function Qe(d){d=d|0;var e=0;e=c[d+8>>2]|0;if(!(a[e>>0]|0))return;a[e>>0]=0;if((b[d+30>>1]|0)<=1)return;Gf(e)|0;return}function Re(b){b=b|0;var d=0,e=0,f=0,g=0;f=c[b+4>>2]|0;b=c[(c[b>>2]|0)+60>>2]|0;d=c[f+396>>2]|0;if(!d){g=0;return g|0}g=f+404|0;e=c[g>>2]|0;if((e|0)<0){g=0;return g|0}if(!(a[f+408>>0]|0))b=Xa[d&255](c[f+400>>2]|0,e)|0;else b=Ya[d&127](c[f+400>>2]|0,e,b)|0;if(!b)d=-1;else d=(c[g>>2]|0)+1|0;c[g>>2]=d;g=b;return g|0}function Se(e,f,g){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;r=Ra;Ra=Ra+16|0;o=r;p=c[f>>2]|0;if(!((a[e+15>>0]|0)!=0?(c[e+24>>2]|0)!=0:0))l=3;a:do if(((l|0)==3?(m=e+212|0,p|0?(c[(c[m>>2]|0)+12>>2]|0)==0:0):0)?(q=e+152|0,(p|0)!=(c[q>>2]|0)):0){n=o;c[n>>2]=0;c[n+4>>2]=0;if(((a[e+16>>0]|0)!=0?(i=c[e+60>>2]|0,j=c[i>>2]|0,(j|0)!=0):0)?(k=Xa[c[j+24>>2]&255](i,o)|0,(k|0)!=0):0)g=k;else l=8;b:do if((l|0)==8){k=p+8|0;if((c[14813]|0)>=(k|0)?(h=c[14819]|0,(h|0)!=0):0){c[14819]=c[h>>2];n=c[14820]|0;c[14820]=n+-1;c[14821]=(n|0)<=(c[14815]|0)&1;if((c[14986]|0)>>>0>>0)c[14986]=k;i=(c[14979]|0)+1|0;c[14979]=i;if(i>>>0>(c[14983]|0)>>>0)c[14983]=i}else{n=Sv(k|0,((k|0)<0)<<31>>31|0,-1,-1)|0;l=L()|0;if(l>>>0>0|(l|0)==0&n>>>0>2147483390){g=7;break}if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](k)|0;if(!h){g=7;break}}else{h=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){n=c[14978]|0;l=Tv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0;j=L()|0;c[14768]=((j|0)<0|(j|0)==0&l>>>0<=n>>>0)&1}h=Wa[c[29340>>2]&127](h)|0;if(!h){g=7;break}i=Wa[c[29352>>2]&127](h)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}i=Wa[c[29352>>2]&127](h)|0;if((c[14986]|0)>>>0>>0)c[14986]=k;i=(c[14980]|0)+i|0;c[14980]=i;if(i>>>0>(c[14984]|0)>>>0)c[14984]=i}k=h+p|0;n=k;a[n>>0]=0;a[n+1>>0]=0;a[n+2>>0]=0;a[n+3>>0]=0;k=k+4|0;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=0;Ff(e);k=c[m>>2]|0;m=k+24|0;do if(c[m>>2]|0){j=k+28|0;n=Ya[c[29424>>2]&127](p,(c[j>>2]|0)+40|0,d[k+32>>0]|0)|0;if(n|0){l=c[7357]|0;i=c[k+16>>2]|0;if((i|0)<=-1){t=Yv(i|0,((i|0)<0)<<31>>31|0,-1024,-1)|0;s=L()|0;i=(c[j>>2]|0)+(c[m>>2]|0)|0;i=Wv(t|0,s|0,i|0,((i|0)<0)<<31>>31|0)|0;L()|0}bb[l&127](n,i);i=k+44|0;j=c[i>>2]|0;if(j|0)ab[c[29452>>2]&127](j);c[i>>2]=n;c[m>>2]=p;break}g=h;do if((c[14816]|0)>>>0<=g>>>0)if((c[14817]|0)>>>0>g>>>0){c[14979]=(c[14979]|0)+-1;c[h>>2]=c[14819];c[14819]=h;g=(c[14820]|0)+1|0;c[14820]=g;c[14821]=(g|0)<(c[14815]|0)&1;g=7;break b}else{g=Wa[c[29352>>2]&127](h)|0;break}else g=Wa[c[29352>>2]&127](h)|0;while(0);c[14980]=(c[14980]|0)-g;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);g=7;break b}else{g=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);g=7;break b}}while(0);j=e+208|0;k=c[j>>2]|0;c:do if(k|0){i=k;do if((c[14816]|0)>>>0<=i>>>0)if((c[14817]|0)>>>0>i>>>0){c[14979]=(c[14979]|0)+-1;c[k>>2]=c[14819];c[14819]=k;t=(c[14820]|0)+1|0;c[14820]=t;c[14821]=(t|0)<(c[14815]|0)&1;break c}else{i=Wa[c[29352>>2]&127](k)|0;break}else i=Wa[c[29352>>2]&127](k)|0;while(0);c[14980]=(c[14980]|0)-i;if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{t=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[j>>2]=h;t=o;s=c[t>>2]|0;t=c[t+4>>2]|0;o=Sv(p|0,0,-1,-1)|0;t=Sv(o|0,L()|0,s|0,t|0)|0;t=Wv(t|0,L()|0,p|0,0)|0;L()|0;c[e+24>>2]=t;c[q>>2]=p;break a}while(0);c[f>>2]=c[q>>2];t=g;Ra=r;return t|0}while(0);c[f>>2]=c[e+152>>2];h=e+142|0;if((g|0)<0)g=b[h>>1]|0;b[h>>1]=g;t=0;Ra=r;return t|0}function Te(b,e){b=b|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;o=Ra;Ra=Ra+16|0;h=o;n=c[b+208>>2]|0;f=c[b+136>>2]|0;if(f|0)do{g=f;f=c[f+16>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{l=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}}while((f|0)!=0);l=b+4|0;a[l>>0]=0;do if((e|0)!=0?(0==0?(c[e+32>>2]&2048|0)==0:0):0){c[h>>2]=0;if((((a[b+12>>0]|0)==0?(c[b+24>>2]|0)!=0:0)?(i=c[b+60>>2]|0,j=c[i>>2]|0,(j|0)!=0):0)?(k=Ya[c[j+40>>2]&127](i,20,h)|0,(k|0)!=12):0){if(c[h>>2]|k|0){f=0;break}}else m=14;f=n}else f=0;while(0);k=b+216|0;Pf(c[k>>2]|0,e,d[b+11>>0]|0,c[b+152>>2]|0,f)|0;c[k>>2]=0;Ff(b);if(!(a[b+15>>0]|0)){h=b+64|0;f=c[h>>2]|0;g=c[f>>2]|0;a:do if(g|0){if(!(a[b+7>>0]|0)){f=Xa[c[g+20>>2]&255](f,2)|0;if(!f){f=c[h>>2]|0;g=c[f>>2]|0;m=22}}else m=22;if((m|0)==22)f=Xa[c[g+24>>2]&255](f,b+80|0)|0;switch((f&255)<<24>>24){case 10:case 13:break;default:break a}c[b+40>>2]=f;a[b+16>>0]=6;c[b+204>>2]=(f|0)==0?74:75}while(0);switch(a[b+16>>0]|0){case 0:case 6:break;case 1:{if(!(a[l>>0]|0))uf(b,0,0)|0;break}default:tf(b)|0}vf(b)}else vf(b);f=c[b+64>>2]|0;g=c[f>>2]|0;if(g|0){Wa[c[g+4>>2]&127](f)|0;c[f>>2]=0}f=c[b+60>>2]|0;g=c[f>>2]|0;if(g|0){Wa[c[g+4>>2]&127](f)|0;c[f>>2]=0}b:do if(n|0){f=n;do if((c[14816]|0)>>>0<=f>>>0)if((c[14817]|0)>>>0>f>>>0){c[14979]=(c[14979]|0)+-1;c[n>>2]=c[14819];c[14819]=n;n=(c[14820]|0)+1|0;c[14820]=n;c[14821]=(n|0)<(c[14815]|0)&1;break b}else{f=Wa[c[29352>>2]&127](n)|0;break}else f=Wa[c[29352>>2]&127](n)|0;while(0);c[14980]=(c[14980]|0)-f;if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{m=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);ab[c[29452>>2]&127](c[(c[b+212>>2]|0)+44>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](b);Ra=o;return}else{n=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);Ra=o;return}}function Ue(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=d+40|0;if(c[h>>2]|0){e=0;return e|0}g=a[d+20>>0]|0;if(g<<24>>24){if(g&3){e=0;return e|0}if(b[e+28>>1]&8){e=0;return e|0}}j=d+196|0;c[j>>2]=(c[j>>2]|0)+1;c[e+16>>2]=0;do if(c[d+216>>2]|0){f=Ve(e)|0;if(!f){f=We(d,e,0,0)|0;i=12}}else{if(!((b[e+28>>1]&8)==0?(a[d+16>>0]|0)!=3:0))i=10;if((i|0)==10?(f=Xe(d,1)|0,f|0):0)break;f=Ye(d,e)|0;i=12}while(0);if((i|0)==12)if(!f){j=c[e+12>>2]|0;f=j+8|0;g=e+36|0;d=c[g>>2]|0;if((c[f>>2]|0)==(e|0))c[f>>2]=d;h=c[e+32>>2]|0;i=(h|0)==0;if(i){c[j+4>>2]=d;f=d}else{c[h+36>>2]=d;f=c[g>>2]|0}if(!f){c[j>>2]=h;if(i)a[j+33>>0]=2}else c[f+32>>2]=h;i=e+28|0;b[i>>1]=b[i>>1]&-16|1;if(b[e+30>>1]|0){e=0;return e|0}if(!(a[j+32>>0]|0)){e=0;return e|0}cb[c[29440>>2]&255](c[j+44>>2]|0,c[e>>2]|0,0);e=0;return e|0}switch((f&255)<<24>>24){case 10:case 13:break;default:{e=f;return e|0}}c[h>>2]=f;a[d+16>>0]=6;c[d+204>>2]=75;e=f;return e|0}function Ve(b){b=b|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,v=0;v=Ra;Ra=Ra+16|0;r=v;q=c[b+20>>2]|0;s=b+24|0;i=c[s>>2]|0;t=q+96|0;g=c[t>>2]|0;if((g|0)<=0){u=0;Ra=v;return u|0}u=q+92|0;m=c[u>>2]|0;n=i+-1|0;l=0;a:while(1){b:do if((c[m+(l*48|0)+20>>2]|0)>>>0>=i>>>0){h=c[m+(l*48|0)+16>>2]|0;e=c[h>>2]|0;if(n>>>0>=e>>>0)break a;f=c[h+8>>2]|0;if(!f)j=n;else{j=n;k=h;do{e=(j>>>0)/(f>>>0)|0;k=c[k+12+(e<<2)>>2]|0;if(!k)break a;j=j-(G(e,f)|0)|0;f=c[k+8>>2]|0}while((f|0)!=0);h=k;e=c[k>>2]|0}if(e>>>0<4001)if(!(1<<(j&7)&d[h+12+(j>>>3)>>0]))break a;else break;k=j+1|0;e=(j>>>0)%125|0;f=c[h+12+(e<<2)>>2]|0;if(!f)break a;while(1){if((f|0)==(k|0))break b;e=((e+1|0)>>>0)%125|0;f=c[h+12+(e<<2)>>2]|0;if(!f)break a}}while(0);l=l+1|0;if((l|0)>=(g|0)){e=0;p=35;break}}if((p|0)==35){Ra=v;return e|0}e=a[q+5>>0]|0;do if(e<<24>>24!=2){k=q+68|0;h=c[k>>2]|0;c:do if(!(c[h>>2]|0)){do if(e<<24>>24!=4?(o=c[7334]|0,(a[q+21>>0]|0)==0):0){e=c[q>>2]|0;f=h;g=f+72|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));if(o|0){g=o;f=(o|0)>0?o:1020;break}e=_a[c[e+24>>2]&127](e,0,h,8222,0)|0;if(!e)break c;Ra=v;return e|0}else p=22;while(0);if((p|0)==22){e=c[q>>2]|0;f=h;g=f+72|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));g=-1;f=1020}c[h+4>>2]=f;c[h>>2]=29896;c[h+8>>2]=g;c[h+56>>2]=8222;c[h+64>>2]=0;c[h+60>>2]=e}while(0);i=c[b+4>>2]|0;j=q+52|0;f=q+152|0;g=(c[f>>2]|0)+4|0;g=Yv(g|0,((g|0)<0)<<31>>31|0,c[j>>2]|0,0)|0;h=L()|0;e=c[k>>2]|0;q=c[s>>2]|0;a[r>>0]=q>>>24;a[r+1>>0]=q>>>16;a[r+2>>0]=q>>>8;a[r+3>>0]=q;e=_a[c[(c[e>>2]|0)+12>>2]&127](e,r,4,g,h)|0;if(e|0){u=e;Ra=v;return u|0}b=c[k>>2]|0;q=c[f>>2]|0;r=Sv(g|0,h|0,4,0)|0;e=L()|0;e=_a[c[(c[b>>2]|0)+12>>2]&127](b,i,q,r,e)|0;if(!e){e=j;g=c[t>>2]|0;i=c[s>>2]|0;break}else{u=e;Ra=v;return u|0}}else e=q+52|0;while(0);c[e>>2]=(c[e>>2]|0)+1;if((g|0)<=0){u=0;Ra=v;return u|0}e=0;h=0;while(1){f=c[u>>2]|0;if((c[f+(h*48|0)+20>>2]|0)>>>0>>0)f=g;else{e=df(c[f+(h*48|0)+16>>2]|0,i)|0|e;f=c[t>>2]|0}h=h+1|0;if((h|0)>=(f|0))break;else g=f}Ra=v;return e|0}function We(e,f,g,h){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,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,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;za=Ra;Ra=Ra+48|0;sa=za+32|0;qa=za;k=za+36|0;c[k>>2]=f;R=(h|0)==0;if(!R){c[k>>2]=f;if(!f){ya=0;f=0}else{i=f;f=0;j=k;do{xa=(c[i+24>>2]|0)>>>0>g>>>0;ya=i+16|0;f=f+((xa^1)&1)|0;j=xa?j:ya;i=c[ya>>2]|0;c[j>>2]=i}while((i|0)!=0);ya=c[k>>2]|0}}else{ya=f;f=1}xa=e+192|0;c[xa>>2]=(c[xa>>2]|0)+f;if((c[ya+24>>2]|0)==1){va=c[ya+20>>2]|0;va=(d[va+105>>0]<<16|d[va+104>>0]<<24|d[va+106>>0]<<8|d[va+107>>0])+1|0;xa=ya+4|0;wa=c[xa>>2]|0;oa=va>>>24&255;a[wa+24>>0]=oa;ra=va>>>16&255;a[wa+25>>0]=ra;ua=va>>>8&255;a[wa+26>>0]=ua;va=va&255;a[wa+27>>0]=va;wa=c[xa>>2]|0;a[wa+92>>0]=oa;a[wa+93>>0]=ra;a[wa+94>>0]=ua;a[wa+95>>0]=va;xa=c[xa>>2]|0;a[xa+96>>0]=0;a[xa+97>>0]=46;a[xa+98>>0]=52;a[xa+99>>0]=32}wa=c[e+216>>2]|0;ua=c[e+152>>2]|0;U=d[e+11>>0]|0;va=wa+32|0;f=c[c[va>>2]>>2]|0;xa=wa+52|0;if(!(Lu(xa,f,48)|0))B=0;else B=(c[f+16>>2]|0)+1|0;o=wa+40|0;if(!(b[o>>1]|0)){a:do if(!(c[f+96>>2]|0)){l=wa+43|0;$=20}else{Fb(4,qa);k=wa+43|0;b:do if(!(a[k>>0]|0)){f=c[wa+4>>2]|0;f=Za[c[(c[f>>2]|0)+56>>2]&127](f,4,4,10)|0;switch(f|0){case 0:{$=15;break b}case 5:break b;default:{}}p=f;break a}else $=15;while(0);if(($|0)==15){m=c[qa>>2]|0;i=c[va>>2]|0;f=c[i>>2]|0;j=f+96|0;$=wa+84|0;oa=wa+112|0;c[oa>>2]=(c[oa>>2]|0)+1;c[wa+68>>2]=0;oa=$+1|0;ra=$+2|0;n=$+3|0;l=(d[oa>>0]<<16|d[$>>0]<<24|d[ra>>0]<<8|d[n>>0])+1|0;a[$>>0]=l>>>24;a[oa>>0]=l>>>16;a[ra>>0]=l>>>8;a[n>>0]=l;c[wa+88>>2]=m;i=c[i>>2]|0;a[wa+64>>0]=1;c[xa>>2]=3007e3;n=c[xa+4>>2]|0;l=n+6014e3+(c[xa+8>>2]|0)|0;n=n+3007e3+(c[xa+12>>2]|0)+l|0;l=n+l|0;n=n+(c[xa+20>>2]|0)+l|0;l=l+(c[xa+24>>2]|0)+n|0;n=n+(c[xa+28>>2]|0)+l|0;l=l+(c[xa+32>>2]|0)+n|0;c[wa+92>>2]=l;c[wa+96>>2]=n+m+l;l=i+48|0;m=xa;n=l+48|0;do{a[l>>0]=a[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));if((a[k>>0]|0)!=2){ra=c[wa+4>>2]|0;ab[c[(c[ra>>2]|0)+60>>2]&127](ra)}l=i;m=xa;n=l+48|0;do{a[l>>0]=a[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));c[j>>2]=0;c[f+128>>2]=0;c[f+104>>2]=0;c[f+108>>2]=-1;c[f+112>>2]=-1;c[f+116>>2]=-1;if(!(a[k>>0]|0)){ra=c[wa+4>>2]|0;Za[c[(c[ra>>2]|0)+56>>2]&127](ra,4,4,9)|0}}l=k;$=20}while(0);if(($|0)==20){if(!(a[l>>0]|0)){ra=c[wa+4>>2]|0;Za[c[(c[ra>>2]|0)+56>>2]&127](ra,3,1,5)|0}b[o>>1]=-1;f=0;do{f=f+1|0;i=gf(wa,qa,1,f)|0}while((i|0)==-1);p=i}if(p|0){g=p;Ra=za;return g|0}}ra=wa+68|0;l=c[ra>>2]|0;c:do if(!l){a[qa>>0]=55;a[qa+1>>0]=127;a[qa+2>>0]=6;a[qa+3>>0]=-126;f=qa+4|0;a[f>>0]=0;a[qa+5>>0]=45;a[qa+6>>0]=-30;a[qa+7>>0]=24;i=qa+8|0;a[i>>0]=ua>>>24;a[qa+9>>0]=ua>>>16;a[qa+10>>0]=ua>>>8;a[qa+11>>0]=ua;j=qa+12|0;oa=c[wa+112>>2]|0;a[j>>0]=oa>>>24;a[qa+13>>0]=oa>>>16;a[qa+14>>0]=oa>>>8;a[qa+15>>0]=oa;k=wa+84|0;if(!oa)Fb(8,k);oa=k;Y=c[oa>>2]|0;oa=c[oa+4>>2]|0;W=qa+16|0;c[W>>2]=Y;c[W+4>>2]=oa;W=c[qa>>2]|0;X=(c[f>>2]|0)+W|0;f=X+W+(c[i>>2]|0)|0;i=(c[j>>2]|0)+X+f|0;f=f+Y+i|0;i=i+oa+f|0;a[qa+24>>0]=f>>>24;a[qa+25>>0]=f>>>16;a[qa+26>>0]=f>>>8;a[qa+27>>0]=f;a[qa+28>>0]=i>>>24;a[qa+29>>0]=i>>>16;a[qa+30>>0]=i>>>8;a[qa+31>>0]=i;c[wa+36>>2]=ua;a[wa+65>>0]=0;c[wa+76>>2]=f;c[wa+80>>2]=i;a[wa+47>>0]=1;i=wa+8|0;f=c[i>>2]|0;f=_a[c[(c[f>>2]|0)+12>>2]&127](f,qa,32,0,0)|0;do if(!f){if((a[wa+48>>0]|0?(q=c[i>>2]|0,r=U>>>2&3,r|0):0)?(s=Xa[c[(c[q>>2]|0)+20>>2]&255](q,r)|0,s|0):0){f=s;break}Y=i;break c}while(0);g=f;Ra=za;return g|0}else Y=wa+8|0;while(0);V=c[Y>>2]|0;W=ua+24|0;X=((W|0)<0)<<31>>31;i=Yv(l|0,0,W|0,X|0)|0;i=Sv(i|0,L()|0,32,0)|0;f=L()|0;oa=(ya|0)==0;d:do if(!oa){q=(B|0)==0;r=V;s=U&3;t=(s|0)==0;u=wa+104|0;v=((ua|0)<0)<<31>>31;p=ya;m=0;o=f;n=i;e:while(1){do if(q)$=47;else{j=p+16|0;if(!(R|(c[j>>2]|0)!=0)){K=0;S=l+1|0;$=49;break}c[qa>>2]=0;ef(wa,c[p+24>>2]|0,qa)|0;k=c[qa>>2]|0;if(k>>>0>>0){$=47;break}f=Yv(k+-1|0,0,W|0,X|0)|0;f=Sv(f|0,L()|0,56,0)|0;i=L()|0;if(((c[u>>2]|0)+-1|0)>>>0>=k>>>0)c[u>>2]=k;C=c[Y>>2]|0;C=_a[c[(c[C>>2]|0)+12>>2]&127](C,c[p+4>>2]|0,ua,f,i)|0;if(C|0){$=45;break e}w=p+28|0;b[w>>1]=b[w>>1]&-65;w=l;x=m;y=j;z=n;A=o}while(0);if(($|0)==47){f=l+1|0;if(R){M=0;T=f;$=50}else{K=c[p+16>>2]|0;S=f;$=49}}if(($|0)==49){M=(K|0)==0?g:0;T=S;$=50}if(($|0)==50){$=0;m=c[p+4>>2]|0;mf(wa,c[p+24>>2]|0,M,m,qa);if(!(o>>>0<4294967295|(o|0)==-1&n>>>0<4294967272)){l=0-n|0;f=_a[c[(c[r>>2]|0)+12>>2]&127](r,qa,l,n,o)|0;if(f|0){E=f;$=63;break}f=Sv(n|0,o|0,l|0,((l|0)<0)<<31>>31|0)|0;i=L()|0;j=n+24|0;if(t)k=0;else k=Xa[c[(c[r>>2]|0)+20>>2]&255](r,s)|0;if((j|0)!=0&(k|0)==0){H=j;J=qa+l|0;N=f;O=i;$=55}else F=k}else{H=24;J=qa;N=n;O=o;$=55}if(($|0)==55){$=0;F=_a[c[(c[r>>2]|0)+12>>2]&127](r,J,H,N,O)|0}if(F|0){E=F;$=63;break}f=Sv(n|0,o|0,24,0)|0;i=L()|0;Sv(f|0,i|0,ua|0,v|0)|0;if(!((o|0)>-1|(o|0)==-1&n>>>0>4294967271|(L()|0)<0)){l=-24-n|0;j=_a[c[(c[r>>2]|0)+12>>2]&127](r,m,l,f,i)|0;if(j|0){E=j;$=63;break}f=Sv(f|0,i|0,l|0,((l|0)<0)<<31>>31|0)|0;i=L()|0;j=ua-l|0;if(t)k=0;else k=Xa[c[(c[r>>2]|0)+20>>2]&255](r,s)|0;if((j|0)!=0&(k|0)==0){G=j;I=m+l|0;P=f;Q=i;$=62}else D=k}else{G=ua;I=m;P=f;Q=i;$=62}if(($|0)==62){$=0;D=_a[c[(c[r>>2]|0)+12>>2]&127](r,I,G,P,Q)|0}f=p+28|0;if(D|0){da=D;$=127;break}z=Sv(n|0,o|0,W|0,X|0)|0;A=L()|0;b[f>>1]=b[f>>1]|64;w=T;x=p;y=p+16|0}p=c[y>>2]|0;if(!p){ma=w;ta=x;Z=z;_=A;break d}else{l=w;m=x;o=A;n=z}}if(($|0)==45){g=C;Ra=za;return g|0}else if(($|0)==63){g=E;Ra=za;return g|0}else if(($|0)==127){Ra=za;return da|0}}else{ma=l;ta=0;Z=i;_=f}while(0);A=(h|0)!=0;if(A){i=wa+104|0;if(c[i>>2]|0){m=(c[wa+36>>2]|0)+24|0;v=nb(m)|0;if(!v){g=7;Ra=za;return g|0}p=c[i>>2]|0;o=(p|0)==1;n=((m|0)<0)<<31>>31;p=Yv(p+-2|0,0,m|0,n|0)|0;p=Sv(p|0,L()|0,48,0)|0;f=L()|0;q=c[Y>>2]|0;f=_a[c[(c[q>>2]|0)+8>>2]&127](q,v,8,o?24:p,o?0:f)|0;o=v+1|0;p=v+2|0;q=v+3|0;c[wa+76>>2]=d[o>>0]<<16|d[v>>0]<<24|d[p>>0]<<8|d[q>>0];r=v+4|0;s=v+5|0;t=v+6|0;u=v+7|0;c[wa+80>>2]=d[s>>0]<<16|d[r>>0]<<24|d[t>>0]<<8|d[u>>0];j=c[i>>2]|0;c[i>>2]=0;f:do if(!((f|0)!=0|j>>>0>ma>>>0)){l=v+24|0;do{i=Yv(j+-1|0,0,m|0,n|0)|0;i=Sv(i|0,L()|0,32,0)|0;k=L()|0;f=c[Y>>2]|0;f=_a[c[(c[f>>2]|0)+8>>2]&127](f,v,m,i,k)|0;if(f|0)break f;mf(wa,d[o>>0]<<16|d[v>>0]<<24|d[p>>0]<<8|d[q>>0],d[s>>0]<<16|d[r>>0]<<24|d[t>>0]<<8|d[u>>0],l,qa);f=c[Y>>2]|0;f=_a[c[(c[f>>2]|0)+12>>2]&127](f,qa,24,i,k)|0;j=j+1|0}while(!(j>>>0>ma>>>0|(f|0)!=0))}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](v);else{T=Wa[c[29352>>2]&127](v)|0;c[14978]=(c[14978]|0)-T;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](v)}if(f|0){g=f;Ra=za;return g|0}}z=U&3;do if(!z){i=0;k=0}else{if(a[wa+49>>0]|0){f=c[Y>>2]|0;i=c[(c[f>>2]|0)+44>>2]|0;if(!i){f=4096;i=0}else{i=Wa[i&127](f)|0;U=(i|0)<32;i=(i|0)<65536?i:65536;f=U?512:i;i=U?0:((i|0)<0)<<31>>31}y=Sv(Z|0,_|0,-1,-1)|0;y=Sv(y|0,L()|0,f|0,i|0)|0;v=L()|0;u=Zv(y|0,v|0,f|0,i|0)|0;u=Tv(y|0,v|0,u|0,L()|0)|0;v=L()|0;y=(u|0)==(Z|0)&(v|0)==(_|0);g:do if((v|0)>(_|0)|(v|0)==(_|0)&u>>>0>Z>>>0){s=ta+4|0;t=ta+24|0;w=V;x=((ua|0)<0)<<31>>31;k=0;r=Z;q=_;while(1){p=c[s>>2]|0;mf(wa,c[t>>2]|0,g,p,qa);n=Sv(r|0,q|0,24,0)|0;o=L()|0;if(!((v|0)>(o|0)|(v|0)==(o|0)&u>>>0>n>>>0)){m=Tv(u|0,v|0,r|0,q|0)|0;L()|0;f=_a[c[(c[w>>2]|0)+12>>2]&127](w,qa,m,r,q)|0;if(f|0){ba=f;break}f=Sv(r|0,q|0,m|0,((m|0)<0)<<31>>31|0)|0;i=L()|0;j=24-m|0;l=Xa[c[(c[w>>2]|0)+20>>2]&255](w,z)|0;if((j|0)!=0&(l|0)==0){fa=j;ha=qa+m|0;ia=f;ja=i;$=89}else ca=l}else{fa=24;ha=qa;ia=r;ja=q;$=89}if(($|0)==89){$=0;ca=_a[c[(c[w>>2]|0)+12>>2]&127](w,ha,fa,ia,ja)|0}if(ca|0){ba=ca;break}_=Sv(n|0,o|0,ua|0,x|0)|0;Z=L()|0;if(!((v|0)<(o|0)|(v|0)==(o|0)&u>>>0<=n>>>0|((Z|0)<(v|0)|(Z|0)==(v|0)&_>>>0>>0))){m=Tv(u|0,v|0,n|0,o|0)|0;L()|0;f=_a[c[(c[w>>2]|0)+12>>2]&127](w,p,m,n,o)|0;if(f|0){ba=f;break}f=Sv(n|0,o|0,m|0,((m|0)<0)<<31>>31|0)|0;i=L()|0;j=ua-m|0;l=Xa[c[(c[w>>2]|0)+20>>2]&255](w,z)|0;if((j|0)!=0&(l|0)==0){ea=j;ga=p+m|0;ka=f;la=i;$=94}else aa=l}else{ea=ua;ga=p;ka=n;la=o;$=94}if(($|0)==94){$=0;aa=_a[c[(c[w>>2]|0)+12>>2]&127](w,ga,ea,ka,la)|0}if(aa|0){da=aa;$=127;break}r=Sv(r|0,q|0,W|0,X|0)|0;q=L()|0;k=k+1|0;if(!((v|0)>(q|0)|(v|0)==(q|0)&u>>>0>r>>>0))break g}if(($|0)==127){Ra=za;return da|0}g=ba;Ra=za;return g|0}else k=0;while(0);if(!y){i=0;break}}else k=0;i=V;i=Xa[c[(c[i>>2]|0)+20>>2]&255](i,z)|0}while(0);m=wa+47|0;if((a[m>>0]|0)!=0?(pa=wa+16|0,na=c[pa>>2]|0,pa=c[pa+4>>2]|0,(pa|0)>-1|(pa|0)==-1&na>>>0>4294967295):0){l=Yv(k+ma|0,0,W|0,X|0)|0;l=Sv(l|0,L()|0,32,0)|0;j=L()|0;f=(j|0)>(pa|0)|(j|0)==(pa|0)&l>>>0>na>>>0;l=f?l:na;j=f?j:pa;f=c[Y>>2]|0;f=Xa[c[(c[f>>2]|0)+24>>2]&255](f,qa)|0;pa=c[qa+4>>2]|0;if((f|0)==0&((pa|0)>(j|0)|((pa|0)==(j|0)?(c[qa>>2]|0)>>>0>l>>>0:0))){f=c[Y>>2]|0;f=Ya[c[(c[f>>2]|0)+16>>2]&127](f,l,j)|0}if(f|0){c[sa>>2]=c[wa+108>>2];Db(f,32326,sa)}a[m>>0]=0}}else{i=0;k=0}f=c[ra>>2]|0;if((ya|0)!=0&(i|0)==0){l=ya;do{j=f+1|0;if(!(b[l+28>>1]&64))i=0;else{i=ff(wa,j,c[l+24>>2]|0)|0;f=j}l=c[l+16>>2]|0}while((i|0)==0&(l|0)!=0)}j=(i|0)==0;if((k|0)>0&j){l=ta+24|0;while(1){f=f+1|0;i=ff(wa,f,c[l>>2]|0)|0;j=(i|0)==0;if((k|0)>1&j)k=k+-1|0;else{k=f;break}}}else k=f;if(j){b[wa+66>>1]=ua&65280|ua>>>16;c[ra>>2]=k;if(A){f=wa+60|0;m=c[f>>2]|0;c[f>>2]=m+1;c[wa+72>>2]=g;f=c[c[va>>2]>>2]|0;a[wa+64>>0]=1;c[xa>>2]=3007e3;l=c[xa+4>>2]|0;m=m+6014001+l|0;l=l+3007e3+(c[xa+12>>2]|0)+m|0;m=m+k+l|0;l=l+g+m|0;m=m+(c[xa+24>>2]|0)+l|0;l=l+(c[xa+28>>2]|0)+m|0;m=m+(c[xa+32>>2]|0)+l|0;l=l+(c[xa+36>>2]|0)+m|0;c[wa+92>>2]=m;c[wa+96>>2]=l;l=f+48|0;m=xa;n=l+48|0;do{a[l>>0]=a[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));if((a[wa+43>>0]|0)!=2){g=c[wa+4>>2]|0;ab[c[(c[g>>2]|0)+60>>2]&127](g)}l=f;m=xa;n=l+48|0;do{a[l>>0]=a[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));c[wa+12>>2]=k}}else if(i|0){g=i;Ra=za;return g|0}j=e+88|0;i=c[j>>2]|0;if((i|0)==0|oa){g=0;Ra=za;return g|0}f=ya;while(1){if(i|0)nf(i,c[f+24>>2]|0,c[f+4>>2]|0);f=c[f+16>>2]|0;if(!f){da=0;break}i=c[j>>2]|0}Ra=za;return da|0}function Xe(d,e){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;t=Ra;Ra=Ra+32|0;l=t+16|0;p=t;f=c[d+40>>2]|0;if(f|0){d=f;Ra=t;return d|0}a:do if(!(c[d+216>>2]|0)){k=d+17|0;g=d+13|0;h=d+60|0;i=d+176|0;j=d+180|0;b:while(1){switch(a[k>>0]|0){case 0:case 1:case 2:case 3:case 5:break;default:break a}if(a[g>>0]|0){g=7;break}f=c[h>>2]|0;f=Xa[c[(c[f>>2]|0)+28>>2]&255](f,4)|0;switch(f|0){case 0:{g=7;break b}case 5:break;default:{g=36;break b}}if(!(Wa[c[i>>2]&127](c[j>>2]|0)|0)){f=5;g=36;break}}if((g|0)==7){a[k>>0]=4;break}else if((g|0)==36){Ra=t;return f|0}}while(0);do if(!(a[d+7>>0]|0)){j=d+64|0;if(c[c[j>>2]>>2]|0?(a[d+5>>0]|0)!=4:0){i=c[d+60>>2]|0;i=Wa[c[(c[i>>2]|0)+48>>2]&127](i)|0;k=(i&512|0)==0;c:do if(k){g=p;c[g>>2]=-117058087;c[g+4>>2]=-681336544;g=c[d+44>>2]|0;a[p+8>>0]=g>>>24;a[p+9>>0]=g>>>16;a[p+10>>0]=g>>>8;a[p+11>>0]=g;g=d+72|0;f=c[g>>2]|0;g=c[g+4>>2]|0;if((f|0)==0&(g|0)==0){g=0;h=0}else{f=Sv(f|0,g|0,-1,-1)|0;h=L()|0;g=c[d+148>>2]|0;h=Wv(f|0,h|0,g|0,0)|0;h=Sv(h|0,L()|0,1,0)|0;g=Yv(h|0,L()|0,g|0,0)|0;h=L()|0}f=c[j>>2]|0;f=_a[c[(c[f>>2]|0)+8>>2]&127](f,l,8,g,h)|0;if(!f)if(!(Lu(l,32352,8)|0)){f=c[j>>2]|0;f=_a[c[(c[f>>2]|0)+12>>2]&127](f,59953,1,g,h)|0;g=19}else g=20;else g=19;if((g|0)==19)switch(f|0){case 0:case 522:{g=20;break}default:{}}do if((g|0)==20){g=i&1024;if(((g|0)==0&(a[d+8>>0]|0)!=0?(m=c[j>>2]|0,n=a[d+10>>0]|0,n<<24>>24):0)?(o=Xa[c[(c[m>>2]|0)+20>>2]&255](m,n&255)|0,o|0):0){f=o;break}o=c[j>>2]|0;f=d+80|0;f=_a[c[(c[o>>2]|0)+12>>2]&127](o,p,12,c[f>>2]|0,c[f+4>>2]|0)|0;if(!f){f=g;break c}}while(0);d=f;Ra=t;return d|0}else f=i&1024;while(0);if(((f|0)==0?(q=c[j>>2]|0,r=a[d+10>>0]|0,r=(r<<24>>24==3?16:0)|r&255,r|0):0)?(s=Xa[c[(c[q>>2]|0)+20>>2]&255](q,r)|0,s|0):0){d=s;Ra=t;return d|0}q=d+72|0;r=c[q+4>>2]|0;s=d+80|0;c[s>>2]=c[q>>2];c[s+4>>2]=r;if((e|0)==0|k^1)break;c[d+44>>2]=0;f=of(d)|0;if(!f)break;Ra=t;return f|0}q=d+72|0;r=c[q+4>>2]|0;s=d+80|0;c[s>>2]=c[q>>2];c[s+4>>2]=r}while(0);g=c[d+212>>2]|0;f=c[g>>2]|0;if(f|0)do{s=f+28|0;b[s>>1]=b[s>>1]&-9;f=c[f+32>>2]|0}while((f|0)!=0);c[g+8>>2]=c[g+4>>2];a[d+16>>0]=4;d=0;Ra=t;return d|0}function Ye(e,f){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;t=Ra;Ra=Ra+16|0;l=t;s=e+60|0;h=c[s>>2]|0;if((c[h>>2]|0)==0?(g=c[e>>2]|0,g=_a[c[g+24>>2]&127](g,0,h,c[e+144>>2]&556897|30,0)|0,g|0):0){s=g;Ra=t;return s|0}k=e+36|0;h=c[k>>2]|0;j=e+24|0;g=c[j>>2]|0;do if(h>>>0>>0){if((c[f+16>>2]|0)==0?(c[f+24>>2]|0)>>>0<=h>>>0:0)break;r=c[e+152>>2]|0;r=Yv(r|0,((r|0)<0)<<31>>31|0,g|0,0)|0;i=L()|0;h=l;c[h>>2]=r;c[h+4>>2]=i;h=c[s>>2]|0;i=c[h>>2]|0;if(i){Ya[c[i+40>>2]&127](h,5,l)|0;g=c[j>>2]|0}c[k>>2]=g}while(0);if(!f){s=0;Ra=t;return s|0}n=e+24|0;o=e+152|0;p=e+104|0;q=e+32|0;r=e+192|0;m=e+88|0;do{e=c[f+24>>2]|0;if(e>>>0<=(c[n>>2]|0)>>>0?(b[f+28>>1]&16)==0:0){g=c[o>>2]|0;h=Yv(g|0,((g|0)<0)<<31>>31|0,e+-1|0,0)|0;i=L()|0;j=(e|0)==1;if(j){k=c[f+20>>2]|0;k=((d[k+105>>0]|0)<<16|(d[k+104>>0]|0)<<24|(d[k+106>>0]|0)<<8|(d[k+107>>0]|0))+1|0;l=f+4|0;g=c[l>>2]|0;w=k>>>24&255;a[g+24>>0]=w;v=k>>>16&255;a[g+25>>0]=v;u=k>>>8&255;a[g+26>>0]=u;k=k&255;a[g+27>>0]=k;g=c[l>>2]|0;a[g+92>>0]=w;a[g+93>>0]=v;a[g+94>>0]=u;a[g+95>>0]=k;g=c[l>>2]|0;a[g+96>>0]=0;a[g+97>>0]=46;a[g+98>>0]=52;a[g+99>>0]=32;g=c[o>>2]|0}else l=f+4|0;k=c[l>>2]|0;w=c[s>>2]|0;g=_a[c[(c[w>>2]|0)+12>>2]&127](w,k,g,h,i)|0;if(j){j=p;h=k+24|0;i=j+16|0;do{a[j>>0]=a[h>>0]|0;j=j+1|0;h=h+1|0}while((j|0)<(i|0))}if(e>>>0>(c[q>>2]|0)>>>0)c[q>>2]=e;c[r>>2]=(c[r>>2]|0)+1;h=c[m>>2]|0;if(h)nf(h,e,c[l>>2]|0)}else g=0;f=c[f+16>>2]|0}while((g|0)==0&(f|0)!=0);Ra=t;return g|0}function Ze(a){a=a|0;var b=0,d=0,e=0;d=a+16|0;a=c[d>>2]|0;if(!a){c[d>>2]=0;return 0}do{b=a;a=c[a>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](b);else{e=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b)}}while((a|0)!=0);c[d>>2]=0;return 0}function _e(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;l=a+40|0;k=l;a:do if((e|0)==0&(f|0)==0|((c[k>>2]|0)!=(e|0)?1:(c[k+4>>2]|0)!=(f|0))){g=c[a+16>>2]|0;if(!g)g=0;else{j=c[a+4>>2]|0;k=((j|0)<0)<<31>>31;h=0;i=0;while(1){h=Sv(h|0,i|0,j|0,k|0)|0;i=L()|0;if((i|0)>(f|0)|(i|0)==(f|0)&h>>>0>e>>>0)break a;g=c[g>>2]|0;if(!g){g=0;break}}}}else g=c[a+48>>2]|0;while(0);k=a+4|0;i=c[k>>2]|0;j=Zv(e|0,f|0,i|0,((i|0)<0)<<31>>31|0)|0;L()|0;i=i-j|0;h=(i|0)>(d|0)?d:i;ew(b|0,g+4+j|0,h|0)|0;i=d-i|0;b:do if((i|0)>-1){j=b;do{g=c[g>>2]|0;if(!((i|0)!=0&(g|0)!=0))break b;j=j+h|0;b=c[k>>2]|0;h=(i|0)<(b|0)?i:b;ew(j|0,g+4|0,h|0)|0;i=i-b|0}while((i|0)>-1)}while(0);b=(g|0)==0;e=Sv(d|0,((d|0)<0)<<31>>31|0,e|0,f|0)|0;f=L()|0;c[l>>2]=b?0:e;c[l+4>>2]=b?0:f;c[a+48>>2]=g;return 0}function $e(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,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;I=Ra;Ra=Ra+32|0;G=I;H=a+8|0;g=c[H>>2]|0;if((g|0)>0?(F=Sv(d|0,((d|0)<0)<<31>>31|0,e|0,f|0)|0,D=L()|0,E=((g|0)<0)<<31>>31,(D|0)>(E|0)|(D|0)==(E|0)&F>>>0>g>>>0):0){m=c[a>>2]|0;t=a+4|0;u=c[t>>2]|0;D=H;C=c[D>>2]|0;D=c[D+4>>2]|0;v=a+16|0;g=c[v>>2]|0;w=a+20|0;x=c[w>>2]|0;y=a+24|0;F=y;E=c[F>>2]|0;F=c[F+4>>2]|0;z=a+32|0;c[G>>2]=c[z>>2];c[G+4>>2]=c[z+4>>2];c[G+8>>2]=c[z+8>>2];c[G+12>>2]=c[z+12>>2];c[G+16>>2]=c[z+16>>2];c[G+20>>2]=c[z+20>>2];A=a+56|0;B=c[A>>2]|0;n=a+60|0;o=c[n>>2]|0;p=a+64|0;q=c[p>>2]|0;r=a+68|0;s=c[r>>2]|0;h=a;i=h+72|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(i|0));h=_a[c[o+24>>2]&127](o,q,a,B&556927,0)|0;a:do if(!h){if(g|0){i=u;j=g;k=0;l=0;do{J=Sv(k|0,l|0,i|0,((i|0)<0)<<31>>31|0)|0;K=L()|0;h=Tv(E|0,F|0,k|0,l|0)|0;L()|0;i=(K|0)>(F|0)|(K|0)==(F|0)&J>>>0>E>>>0?h:i;h=_a[c[(c[a>>2]|0)+12>>2]&127](a,j+4|0,i,k,l)|0;if(h|0){i=a;break a}k=Sv(k|0,l|0,i|0,((i|0)<0)<<31>>31|0)|0;l=L()|0;j=c[j>>2]|0}while((j|0)!=0);do{h=g;g=c[g>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](h);else{K=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h)}}while((g|0)!=0)}K=_a[c[(c[a>>2]|0)+12>>2]&127](a,b,d,e,f)|0;Ra=I;return K|0}else i=a;while(0);j=c[i>>2]|0;if(j|0){Wa[c[j+4>>2]&127](a)|0;c[i>>2]=0}c[a>>2]=m;c[t>>2]=u;K=H;c[K>>2]=C;c[K+4>>2]=D;c[v>>2]=g;c[w>>2]=x;K=y;c[K>>2]=E;c[K+4>>2]=F;c[z>>2]=c[G>>2];c[z+4>>2]=c[G+4>>2];c[z+8>>2]=c[G+8>>2];c[z+12>>2]=c[G+12>>2];c[z+16>>2]=c[G+16>>2];c[z+20>>2]=c[G+20>>2];c[A>>2]=B;c[n>>2]=o;c[p>>2]=q;c[r>>2]=s;K=h;Ra=I;return K|0}b:do if((d|0)>0){m=a+24|0;n=a+32|0;o=a+4|0;p=a+16|0;i=m;l=d;h=c[i>>2]|0;i=c[i+4>>2]|0;while(1){g=c[n>>2]|0;j=c[o>>2]|0;i=Zv(h|0,i|0,j|0,((j|0)<0)<<31>>31|0)|0;L()|0;k=j-i|0;k=(l|0)<(k|0)?l:k;if(!i){h=nb(j+4|0)|0;if(!h){g=3082;break}c[h>>2]=0;if(!g)c[p>>2]=h;else c[g>>2]=h;c[n>>2]=h;g=h}ew(g+4+i|0,b|0,k|0)|0;l=l-k|0;h=m;h=Sv(c[h>>2]|0,c[h+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0;i=L()|0;K=m;c[K>>2]=h;c[K+4>>2]=i;if((l|0)<=0)break b;else b=b+k|0}Ra=I;return g|0}while(0);c[a+12>>2]=e+d;K=0;Ra=I;return K|0}function af(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if(!((b|0)==0&(d|0)==0))return 0;e=a+16|0;b=c[e>>2]|0;if(b|0)do{d=b;b=c[b>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](d);else{f=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d)}}while((b|0)!=0);c[e>>2]=0;c[a+12>>2]=0;c[a+32>>2]=0;f=a+24|0;c[f>>2]=0;c[f+4>>2]=0;c[a+48>>2]=0;f=a+40|0;c[f>>2]=0;c[f+4>>2]=0;return 0}function bf(a,b){a=a|0;b=b|0;return 0}function cf(a,b){a=a|0;b=b|0;var d=0;d=a+24|0;a=c[d+4>>2]|0;c[b>>2]=c[d>>2];c[b+4>>2]=a;return 0}function df(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(!b){m=0;return m|0}e=e+-1|0;a:do if((c[b>>2]|0)>>>0>4e3){l=b;j=b;while(1){i=c[l+8>>2]|0;if(!i)break;h=(e>>>0)/(i>>>0)|0;e=e-(G(h,i)|0)|0;h=l+12+(h<<2)|0;b=c[h>>2]|0;if(!b){if(!(c[7324]|0)){b=Wa[c[29340>>2]&127](512)|0;if(!b){m=17;break}}else{b=Wa[c[29356>>2]&127](512)|0;if((c[14985]|0)>>>0<512)c[14985]=512;g=59064;f=c[g>>2]|0;g=c[g+4>>2]|0;if((g|0)>0|(g|0)==0&f>>>0>0){l=c[14978]|0;k=Tv(f|0,g|0,b|0,((b|0)<0)<<31>>31|0)|0;j=L()|0;c[14768]=((j|0)<0|(j|0)==0&k>>>0<=l>>>0)&1}b=Wa[c[29340>>2]&127](b)|0;if(!b){m=17;break}f=Wa[c[29352>>2]&127](b)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0)c[14987]=f}gw(b+4|0,0,508)|0;c[b>>2]=i;c[h>>2]=b}if((c[b>>2]|0)>>>0>4e3){l=b;j=b}else break a}if((m|0)==17){c[h>>2]=0;m=7;return m|0}i=l+8|0;k=e+1|0;b=(e>>>0)%125|0;h=l+12|0;f=l+12+(b<<2)|0;e=c[f>>2]|0;if(!e){b=l+4|0;e=c[b>>2]|0;if(e>>>0<124)m=46}else{f=b;do{if((e|0)==(k|0)){e=0;m=47;break}e=f+1|0;f=e>>>0>124?0:e;e=c[l+12+(f<<2)>>2]|0}while((e|0)!=0);if((m|0)==47)return e|0;b=l+4|0;e=c[b>>2]|0;if(e>>>0<=61){f=l+12+(f<<2)|0;m=46}}if((m|0)==46){c[b>>2]=e+1;c[f>>2]=k;m=0;return m|0}if(!(c[7324]|0)){e=Wa[c[29340>>2]&127](500)|0;if(!e){m=7;return m|0}else g=e}else{b=Wa[c[29356>>2]&127](500)|0;if((c[14985]|0)>>>0<500)c[14985]=500;e=59064;f=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&f>>>0>0){m=c[14978]|0;g=Tv(f|0,e|0,b|0,((b|0)<0)<<31>>31|0)|0;f=L()|0;c[14768]=((f|0)<0|(f|0)==0&g>>>0<=m>>>0)&1}b=Wa[c[29340>>2]&127](b)|0;if(!b){m=7;return m|0}e=Wa[c[29352>>2]&127](b)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0>(c[14987]|0)>>>0){c[14987]=e;g=b}else g=b}ew(g|0,h|0,500)|0;gw(h|0,0,500)|0;c[i>>2]=(((c[j>>2]|0)+124|0)>>>0)/125|0;e=df(l,k)|0;f=0;do{b=c[g+(f<<2)>>2]|0;if(b)e=df(l,b)|0|e;f=f+1|0}while((f|0)!=125);if(!(c[7324]|0)){ab[c[29344>>2]&127](g);m=e;return m|0}else{m=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);m=e;return m|0}}while(0);m=b+12+(e>>>3)|0;a[m>>0]=1<<(e&7)|(d[m>>0]|0);m=0;return m|0}function ef(d,f,g){d=d|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,x=0,y=0,z=0,A=0,B=0,C=0;C=Ra;Ra=Ra+32|0;A=C;x=C+12|0;z=c[d+68>>2]|0;do if(z|0){if((b[d+40>>1]|0)==0?(a[d+50>>0]|0)==0:0)break;r=d+100|0;s=((c[r>>2]|0)+33|0)>>>12;h=(z+33|0)>>>12;a:do if(h>>>0>>0)h=0;else{t=x+4|0;u=d+24|0;v=d+32|0;w=x+8|0;q=f*383&8191;p=h;b:while(1){if((c[u>>2]|0)>(p|0)?(y=c[(c[v>>2]|0)+(p<<2)>>2]|0,c[t>>2]=y,(y|0)!=0):0)h=y;else{h=kf(d,p,t)|0;if(h|0)break;h=c[t>>2]|0}n=h+16384|0;c[x>>2]=n;if(!p){h=h+136|0;c[t>>2]=h;o=0}else o=(p<<12)+-34|0;c[w>>2]=o;m=h+-4|0;c[t>>2]=m;i=n+(q<<1)|0;if(b[i>>1]|0){k=8192;l=q;h=0;while(1){j=o+(e[i>>1]|0)|0;if(j>>>0<=z>>>0?j>>>0>=(c[r>>2]|0)>>>0:0)h=(c[m+(e[i>>1]<<2)>>2]|0)==(f|0)?j:h;if(!k){B=22;break b}l=l+1&8191;i=n+(l<<1)|0;if(!(b[i>>1]|0))break;else k=k+-1|0}if(h|0)break a}if((p|0)>(s|0))p=p+-1|0;else{h=0;break a}}if((B|0)==22){c[A>>2]=32306;c[A+4>>2]=61232;c[A+8>>2]=31517;Db(11,32001,A);h=11}B=h;Ra=C;return B|0}while(0);c[g>>2]=h;B=0;Ra=C;return B|0}while(0);c[g>>2]=0;B=0;Ra=C;return B|0}function ff(a,d,f){a=a|0;d=d|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;s=Ra;Ra=Ra+48|0;r=s;p=s+24|0;l=s+12|0;j=d+33|0;k=j>>>12;m=l+4|0;n=a+24|0;if(!((c[n>>2]|0)>(k|0)?(g=c[(c[a+32>>2]|0)+(k<<2)>>2]|0,c[m>>2]=g,(g|0)!=0):0))i=3;do if((i|0)==3){g=kf(a,k,m)|0;if(!g){g=c[m>>2]|0;break}else{f=g;Ra=s;return f|0}}while(0);q=g+16384|0;c[l>>2]=q;if(!k){k=g+136|0;c[m>>2]=k;i=0}else{i=(j&-4096)+-34|0;k=g}c[l+8>>2]=i;j=k+-4|0;c[m>>2]=j;o=d-i|0;if((o|0)==1)gw(k|0,0,g+32768-k|0)|0;m=j+(o<<2)|0;if(c[m>>2]|0){d=a+68|0;g=c[d>>2]|0;do if(g|0){g=g+33|0;i=g>>>12;k=p+4|0;if(!((c[n>>2]|0)>(i|0)?(h=c[(c[a+32>>2]|0)+(i<<2)>>2]|0,c[k>>2]=h,(h|0)!=0):0)){if(kf(a,i,k)|0)break;h=c[k>>2]|0}l=h+16384|0;c[p>>2]=l;if(!i){j=h+136|0;c[k>>2]=j;g=0}else{g=(g&-4096)+-34|0;j=h}c[p+8>>2]=g;c[k>>2]=j+-4;h=(c[d>>2]|0)-g|0;g=0;do{i=l+(g<<1)|0;if((h|0)<(e[i>>1]|0))b[i>>1]=0;g=g+1|0}while((g|0)!=8192);p=j+(h<<2)|0;gw(p|0,0,l-p|0)|0}while(0)}h=f*383&8191;g=q+(h<<1)|0;a:do if(b[g>>1]|0){i=o;while(1){if(!i)break;h=h+1&8191;g=q+(h<<1)|0;if(!(b[g>>1]|0))break a;else i=i+-1|0}c[r>>2]=32306;c[r+4>>2]=59401;c[r+8>>2]=31517;Db(11,32001,r);f=11;Ra=s;return f|0}while(0);c[m>>2]=f;b[g>>1]=o;f=0;Ra=s;return f|0}function gf(d,f,g,h){d=d|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,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=Ra;Ra=Ra+64|0;u=A+32|0;k=A;j=A+48|0;v=A+44|0;w=A+40|0;do if((h|0)>5)if((h|0)>100){d=15;Ra=A;return d|0}else{z=h+-9|0;z=G(z*39|0,z)|0;y=c[d>>2]|0;Xa[c[y+60>>2]&255](y,(h|0)>9?z:1)|0;break}while(0);a:do if(!g){z=d+50|0;if(!(a[z>>0]|0)){g=hf(d,f)|0;b:do if((g|0)==5){if(!(c[c[d+32>>2]>>2]|0)){d=-1;Ra=A;return d|0}h=d+43|0;if(a[h>>0]|0){d=-1;Ra=A;return d|0}i=d+4|0;g=c[i>>2]|0;g=Za[c[(c[g>>2]|0)+56>>2]&127](g,2,1,6)|0;switch(g|0){case 0:break;case 5:{d=261;Ra=A;return d|0}default:break b}if(a[h>>0]|0){d=-1;Ra=A;return d|0}d=c[i>>2]|0;Za[c[(c[d>>2]|0)+56>>2]&127](d,2,1,5)|0;d=-1;Ra=A;return d|0}while(0);if(g|0){d=g;Ra=A;return d|0}if(!(a[z>>0]|0)){j=d+32|0;m=(c[c[j>>2]>>2]|0)+96|0;l=d+52|0;h=d+68|0;if((c[m>>2]|0)!=(c[h>>2]|0)){g=0;break}k=d+43|0;i=a[k>>0]|0;if(!(i<<24>>24)){g=c[d+4>>2]|0;g=Za[c[(c[g>>2]|0)+56>>2]&127](g,3,1,6)|0;i=a[k>>0]|0}else g=0;if(i<<24>>24!=2){f=c[d+4>>2]|0;ab[c[(c[f>>2]|0)+60>>2]&127](f)}switch(g|0){case 5:break a;case 0:break;default:{d=g;Ra=A;return d|0}}if(!(Lu(c[c[j>>2]>>2]|0,l,48)|0)){b[d+40>>1]=0;d=0;Ra=A;return d|0}if(a[k>>0]|0){d=-1;Ra=A;return d|0}d=c[d+4>>2]|0;Za[c[(c[d>>2]|0)+56>>2]&127](d,3,1,5)|0;d=-1;Ra=A;return d|0}}x=d+43|0;y=d+4|0;if(!(a[x>>0]|0)){g=c[y>>2]|0;g=Za[c[(c[g>>2]|0)+56>>2]&127](g,3,1,6)|0;switch(g|0){case 0:{t=17;break}case 5:{g=-1;t=35;break}default:t=34}}else t=17;c:do if((t|0)==17){b[d+40>>1]=0;g=c[y>>2]|0;g=_a[c[(c[g>>2]|0)+52>>2]&127](g,0,32768,0,j)|0;switch(g|0){case 8:{g=-1;t=35;break c}case 1288:break;default:{t=34;break c}}g=d+52|0;h=c[c[d+32>>2]>>2]|0;i=g+48|0;do{a[g>>0]=a[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(i|0));t=d+8|0;g=c[t>>2]|0;g=Xa[c[(c[g>>2]|0)+24>>2]&255](g,u)|0;if(!g){s=u;r=c[s+4>>2]|0;if((r|0)<0|(r|0)==0&(c[s>>2]|0)>>>0<32){c[f>>2]=1;g=((c[d+68>>2]|0)!=0)<<31>>31;t=34;break}g=c[t>>2]|0;g=_a[c[(c[g>>2]|0)+8>>2]&127](g,k,32,0,0)|0;if(!g)if(!(Lu(d+84|0,k+16|0,8)|0)){g=d+66|0;n=(e[g>>1]|0)+24|0;o=pb(n,0)|0;if(o){m=o+24|0;p=d+76|0;q=c[p>>2]|0;r=d+80|0;s=c[r>>2]|0;i=Yv((e[g>>1]|0)+24|0,0,c[d+68>>2]|0,0)|0;i=Sv(i|0,L()|0,32,0)|0;j=L()|0;g=Sv(i|0,j|0,n|0,0)|0;h=L()|0;l=u;k=c[l+4>>2]|0;d:do if((h|0)>(k|0)|((h|0)==(k|0)?g>>>0>(c[l>>2]|0)>>>0:0))g=0;else{l=g;k=h;h=i;g=j;while(1){j=c[t>>2]|0;g=_a[c[(c[j>>2]|0)+8>>2]&127](j,o,n,h,g)|0;if(g|0)break;if(!(lf(d,v,w,m,o)|0)){g=0;break}if(c[w>>2]|0){g=-1;break d}g=Sv(l|0,k|0,n|0,0)|0;h=L()|0;j=u;i=c[j+4>>2]|0;if((h|0)>(i|0)|((h|0)==(i|0)?g>>>0>(c[j>>2]|0)>>>0:0)){g=0;break d}else{i=k;j=l;l=g;k=h;g=i;h=j}}}while(0);c[p>>2]=q;c[r>>2]=s;if(!(c[7324]|0)){ab[c[29344>>2]&127](o);t=34;break}else{t=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);t=34;break}}else{g=7;t=35}}else{g=-1;t=35}else t=35}else t=35}while(0);if((t|0)==34)if(!g)g=0;else t=35;if((t|0)==35){i=d+24|0;if((c[i>>2]|0)>0){j=d+32|0;h=0;do{k=c[(c[j>>2]|0)+(h<<2)>>2]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{w=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);c[(c[j>>2]|0)+(h<<2)>>2]=0;h=h+1|0}while((h|0)<(c[i>>2]|0))}a[z>>0]=0;h=d+44|0;if(a[h>>0]|0){if(!(a[x>>0]|0)){z=c[y>>2]|0;Za[c[(c[z>>2]|0)+56>>2]&127](z,0,1,9)|0}a[h>>0]=0;c[d+104>>2]=0;a[d+47>>0]=0}h=d+40|0;i=b[h>>1]|0;if(i<<16>>16>-1){if(!(a[x>>0]|0)){d=c[y>>2]|0;Za[c[(c[d>>2]|0)+56>>2]&127](d,(i<<16>>16)+3|0,1,5)|0}b[h>>1]=-1}c[f>>2]=1}d=g;Ra=A;return d|0}else{g=0;l=d+52|0;h=d+68|0;m=(c[c[d+32>>2]>>2]|0)+96|0}while(0);s=c[h>>2]|0;i=m+8|0;o=c[i>>2]|0;k=o>>>0>s>>>0;o=k?0:o;n=m+12|0;p=c[n>>2]|0;y=o>>>0>p>>>0|p>>>0>s>>>0;p=y?o:p;o=m+16|0;f=c[o>>2]|0;x=p>>>0>f>>>0|f>>>0>s>>>0;f=x?p:f;p=m+20|0;j=c[p>>2]|0;z=f>>>0>j>>>0|j>>>0>s>>>0;k=z?(x?(y?(k^1)&1:2):3):4;j=z?f:j;e:do if(!(a[d+46>>0]&2)){if((k|0)==0|j>>>0>>0){q=d+43|0;r=d+4|0;f:do if(!(a[q>>0]|0)){g=c[r>>2]|0;g=Za[c[(c[g>>2]|0)+56>>2]&127](g,4,1,10)|0;switch(g|0){case 0:{k=1;h=4;g=i;break f}case 5:break;default:{d=g;Ra=A;return d|0}}if(!(a[q>>0]|0)){g=c[r>>2]|0;g=Za[c[(c[g>>2]|0)+56>>2]&127](g,5,1,10)|0;switch(g|0){case 0:{k=2;h=5;g=n;break f}case 5:break;default:{d=g;Ra=A;return d|0}}if(!(a[q>>0]|0)){g=c[r>>2]|0;g=Za[c[(c[g>>2]|0)+56>>2]&127](g,6,1,10)|0;switch(g|0){case 0:{k=3;h=6;g=o;break f}case 5:break;default:{d=g;Ra=A;return d|0}}if(!(a[q>>0]|0)){g=c[r>>2]|0;g=Za[c[(c[g>>2]|0)+56>>2]&127](g,7,1,10)|0;switch(g|0){case 5:{t=69;break e}case 0:{k=4;h=7;g=p;break f}default:{}}Ra=A;return g|0}else{k=4;h=7;g=p}}else{k=3;h=6;g=o}}else{k=2;h=5;g=n}}else{k=1;h=4;g=i}while(0);c[g>>2]=s;if(!(a[q>>0]|0)){j=c[r>>2]|0;Za[c[(c[j>>2]|0)+56>>2]&127](j,h,1,9)|0;j=s}else j=s}}else t=69;while(0);if((t|0)==69)if(!k){d=(g|0)==5?-1:1288;Ra=A;return d|0}h=k+3|0;i=d+43|0;g=a[i>>0]|0;do if(!(g<<24>>24)){g=c[d+4>>2]|0;g=Za[c[(c[g>>2]|0)+56>>2]&127](g,h,1,6)|0;if(!g){g=a[i>>0]|0;break}d=(g|0)==5?-1:g;Ra=A;return d|0}while(0);c[d+100>>2]=(c[m>>2]|0)+1;if(g<<24>>24!=2){f=c[d+4>>2]|0;ab[c[(c[f>>2]|0)+60>>2]&127](f)}if((c[m+4+(k<<2)>>2]|0)==(j|0)?(Lu(c[c[d+32>>2]>>2]|0,l,48)|0)==0:0){b[d+40>>1]=k;d=0;Ra=A;return d|0}if(a[i>>0]|0){d=-1;Ra=A;return d|0}d=c[d+4>>2]|0;Za[c[(c[d>>2]|0)+56>>2]&127](d,h,1,5)|0;d=-1;Ra=A;return d|0}function hf(e,f){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,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,M=0,N=0,O=0,P=0;O=Ra;Ra=Ra+96|0;K=O+64|0;G=O+56|0;p=O+40|0;B=O+32|0;m=O;C=O+84|0;D=O+80|0;j=O+76|0;N=e+24|0;if((c[N>>2]|0)>0?(M=c[c[e+32>>2]>>2]|0,c[j>>2]=M,(M|0)!=0):0){g=0;M=6}else{g=kf(e,0,j)|0;switch(g|0){case 0:break;case 1288:{a[e+50>>0]=1;a[e+43>>0]=2;c[f>>2]=1;break}default:{N=g;Ra=O;return N|0}}if(!(c[j>>2]|0)){h=1;M=7}else M=6}if((M|0)==6){h=jf(e,f)|0;if(!h)M=67;else M=7}do if((M|0)==7){if((a[e+50>>0]|0)==0?a[e+46>>0]&2:0){h=e+43|0;if(a[h>>0]|0){g=264;break}i=e+4|0;g=c[i>>2]|0;g=Za[c[(c[g>>2]|0)+56>>2]&127](g,0,1,6)|0;if(g|0)break;if(a[h>>0]|0){g=264;break}g=c[i>>2]|0;Za[c[(c[g>>2]|0)+56>>2]&127](g,0,1,5)|0;g=264;break}I=e+43|0;if((a[I>>0]|0)==0?(i=c[e+4>>2]|0,i=Za[c[(c[i>>2]|0)+56>>2]&127](i,0,1,10)|0,i|0):0){g=i;break}H=e+44|0;a[H>>0]=1;if((c[N>>2]|0)>0?(F=c[c[e+32>>2]>>2]|0,c[j>>2]=F,(F|0)!=0):0)M=18;else{g=kf(e,0,j)|0;if(!g)M=18}if((M|0)==18){h=jf(e,f)|0;if(!h){h=0;g=0}else{F=d[e+45>>0]|0;E=F+1|0;F=2-F|0;if(!(a[I>>0]|0)){i=e+4|0;g=c[i>>2]|0;g=Za[c[(c[g>>2]|0)+56>>2]&127](g,E,F,10)|0;if(!g)if((a[I>>0]|0)==0?(k=c[i>>2]|0,k=Za[c[(c[k>>2]|0)+56>>2]&127](k,4,4,10)|0,(k|0)!=0):0)if(!(a[I>>0]|0)){g=c[i>>2]|0;Za[c[(c[g>>2]|0)+56>>2]&127](g,E,F,9)|0;g=k}else g=k;else M=25}else M=25;if((M|0)==25){A=e+52|0;i=A;l=i+48|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(l|0));z=e+8|0;g=c[z>>2]|0;g=Xa[c[(c[g>>2]|0)+24>>2]&255](g,B)|0;a:do if(!g){y=B;x=c[y+4>>2]|0;b:do if((x|0)>0|(x|0)==0&(c[y>>2]|0)>>>0>32){g=c[z>>2]|0;g=_a[c[(c[g>>2]|0)+8>>2]&127](g,m,32,0,0)|0;c:do if(!g){g=d[m+3>>0]|0;i=m+8|0;n=d[m+9>>0]<<16|d[i>>0]<<24;o=d[m+10>>0]<<8;l=n|o|d[m+11>>0];if((d[m+1>>0]<<16|d[m>>0]<<24|d[m+2>>0]<<8|g&254|0)==931071618?!((l+-512|0)>>>0>65024|(l+-1&l|0)!=0):0){x=g&1;a[e+65>>0]=x;c[e+36>>2]=l;g=m+12|0;c[e+112>>2]=d[m+13>>0]<<16|d[g>>0]<<24|d[m+14>>0]<<8|d[m+15>>0];w=m+16|0;j=c[w>>2]|0;w=c[w+4>>2]|0;y=e+84|0;c[y>>2]=j;c[y+4>>2]=w;y=e+76|0;if(!x){x=c[m>>2]|0;k=c[m+4>>2]|0;w=k+x|0;x=w+x+(c[i>>2]|0)|0;i=(c[g>>2]|0)+w+x|0;g=i+(c[m+20>>2]|0)|0;i=x+j+i|0}else{w=dw(c[m>>2]|0)|0;k=c[m+4>>2]|0;x=(dw(k|0)|0)+w|0;i=x+w+(dw(c[i>>2]|0)|0)|0;g=(dw(c[g>>2]|0)|0)+x+i|0;i=i+(dw(j|0)|0)+g|0;g=g+(dw(c[m+20>>2]|0)|0)|0}g=g+i|0;c[y>>2]=i;x=e+80|0;c[x>>2]=g;do if((i|0)==(d[m+25>>0]<<16|d[m+24>>0]<<24|d[m+26>>0]<<8|d[m+27>>0]|0)){if((g|0)!=(d[m+29>>0]<<16|d[m+28>>0]<<24|d[m+30>>0]<<8|d[m+31>>0]|0))break;if((d[m+5>>0]<<16|k<<24|d[m+6>>0]<<8|d[m+7>>0]|0)!=3007e3){c[p>>2]=31984;c[p+4>>2]=59539;c[p+8>>2]=31517;Db(14,32001,p);g=14;break a}r=l+24|0;s=((r|0)<0)<<31>>31;w=pb(r,s)|0;if(!w){g=7;break c}t=w+24|0;g=Sv(r|0,s|0,32,0)|0;m=L()|0;v=B;u=c[v+4>>2]|0;d:do if((m|0)>(u|0)|((m|0)==(u|0)?g>>>0>(c[v>>2]|0)>>>0:0)){g=0;i=0;j=0}else{u=e+68|0;v=e+72|0;p=(n>>>16|o)&65535;q=e+66|0;o=0;i=0;j=0;k=32;l=0;n=g;while(1){o=o+1|0;g=c[z>>2]|0;g=_a[c[(c[g>>2]|0)+8>>2]&127](g,w,r,k,l)|0;if(g|0)break;if(!(lf(e,C,D,t,w)|0)){g=0;break}g=ff(e,o,c[C>>2]|0)|0;if(g|0)break;g=c[D>>2]|0;if(g){c[u>>2]=o;c[v>>2]=g;b[q>>1]=p;i=c[y>>2]|0;j=c[x>>2]|0}g=Sv(n|0,m|0,r|0,s|0)|0;k=L()|0;l=B;P=c[l+4>>2]|0;if((k|0)>(P|0)|((k|0)==(P|0)?g>>>0>(c[l>>2]|0)>>>0:0)){g=0;break d}else{l=m;P=n;n=g;m=k;k=P}}}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](w);else{P=Wa[c[29352>>2]&127](w)|0;c[14978]=(c[14978]|0)-P;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](w)}if(!g){g=j;break b}else break a}while(0);i=0;g=0;break b}i=0;g=0;break b}while(0);break a}else{i=0;g=0}while(0);c[e+76>>2]=i;c[e+80>>2]=g;j=e+32|0;k=c[c[j>>2]>>2]|0;a[e+64>>0]=1;c[A>>2]=3007e3;P=c[A+4>>2]|0;l=P+6014e3+(c[A+8>>2]|0)|0;P=P+3007e3+(c[A+12>>2]|0)+l|0;l=(c[A+16>>2]|0)+l+P|0;P=(c[A+20>>2]|0)+P+l|0;l=l+i+P|0;i=P+g+l|0;g=l+(c[A+32>>2]|0)+i|0;i=i+(c[A+36>>2]|0)+g|0;c[e+92>>2]=g;c[e+96>>2]=i;i=k+48|0;g=A;l=i+48|0;do{a[i>>0]=a[g>>0]|0;i=i+1|0;g=g+1|0}while((i|0)<(l|0));if((a[I>>0]|0)!=2){P=c[e+4>>2]|0;ab[c[(c[P>>2]|0)+60>>2]&127](P)}i=k;g=A;l=i+48|0;do{a[i>>0]=a[g>>0]|0;i=i+1|0;g=g+1|0}while((i|0)<(l|0));j=c[c[j>>2]>>2]|0;c[j+96>>2]=0;g=e+68|0;c[j+128>>2]=c[g>>2];c[j+100>>2]=0;i=j+104|0;c[i>>2]=-1;c[j+108>>2]=-1;c[j+112>>2]=-1;c[j+116>>2]=-1;j=c[g>>2]|0;if(j|0)c[i>>2]=j;if(!(c[e+72>>2]|0))g=0;else{P=c[e+108>>2]|0;c[G>>2]=c[g>>2];c[G+4>>2]=P;Db(283,32269,G);g=0}}while(0);if((a[I>>0]|0)==0?(J=e+4|0,P=c[J>>2]|0,Za[c[(c[P>>2]|0)+56>>2]&127](P,E,F,9)|0,(a[I>>0]|0)==0):0){P=c[J>>2]|0;Za[c[(c[P>>2]|0)+56>>2]&127](P,4,4,9)|0}}c[f>>2]=1}}a[H>>0]=0;if(!(a[I>>0]|0)){P=c[e+4>>2]|0;Za[c[(c[P>>2]|0)+56>>2]&127](P,0,1,9)|0}if(!h)M=67}while(0);if((M|0)==67)if((c[e+52>>2]|0)!=3007e3){c[K>>2]=31984;c[K+4>>2]=60517;c[K+8>>2]=31517;Db(14,32001,K);g=14}i=e+50|0;if(!(a[i>>0]|0)){P=g;Ra=O;return P|0}l=e+43|0;if(!g)g=0;else{if((c[N>>2]|0)>0){j=e+32|0;h=0;do{k=c[(c[j>>2]|0)+(h<<2)>>2]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{P=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-P;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);c[(c[j>>2]|0)+(h<<2)>>2]=0;h=h+1|0}while((h|0)<(c[N>>2]|0))}if((a[l>>0]|0)!=2){P=c[e+4>>2]|0;Xa[c[(c[P>>2]|0)+64>>2]&255](P,0)|0}a[i>>0]=0;g=(g|0)==522?-1:g}a[l>>0]=0;P=g;Ra=O;return P|0}function jf(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=Ra;Ra=Ra+96|0;k=l+48|0;g=l;h=c[c[b+32>>2]>>2]|0;f=k;i=h;j=f+48|0;do{a[f>>0]=a[i>>0]|0;f=f+1|0;i=i+1|0}while((f|0)<(j|0));if((a[b+43>>0]|0)!=2){j=c[b+4>>2]|0;ab[c[(c[j>>2]|0)+60>>2]&127](j)}f=g;i=h+48|0;j=f+48|0;do{a[f>>0]=a[i>>0]|0;f=f+1|0;i=i+1|0}while((f|0)<(j|0));if(Lu(k,g,48)|0){k=1;Ra=l;return k|0}if(!(a[k+12>>0]|0)){k=1;Ra=l;return k|0}g=c[k>>2]|0;f=(c[k+4>>2]|0)+g|0;g=g+f+(c[k+8>>2]|0)|0;f=(c[k+12>>2]|0)+f+g|0;g=g+f+(c[k+16>>2]|0)|0;f=(c[k+20>>2]|0)+f+g|0;g=g+f+(c[k+24>>2]|0)|0;f=(c[k+28>>2]|0)+f+g|0;g=g+f+(c[k+32>>2]|0)|0;if((g|0)!=(c[k+40>>2]|0)){k=1;Ra=l;return k|0}if(((c[k+36>>2]|0)+f+g|0)!=(c[k+44>>2]|0)){k=1;Ra=l;return k|0}f=b+52|0;if(!(Lu(f,k,48)|0)){k=0;Ra=l;return k|0}c[d>>2]=1;i=k;j=f+48|0;do{c[f>>2]=c[i>>2];f=f+4|0;i=i+4|0}while((f|0)<(j|0));k=e[b+66>>1]|0;c[b+36>>2]=k<<16&65536|k&65024;k=0;Ra=l;return k|0}function kf(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;h=b+24|0;do if((c[h>>2]|0)<=(e|0)){i=e+1|0;j=b+32|0;k=c[j>>2]|0;if((mb()|0)==0?(g=sb(k,i<<2,0)|0,g|0):0){k=c[h>>2]|0;gw(g+(k<<2)|0,0,i-k<<2|0)|0;c[j>>2]=g;c[h>>2]=i;break}c[f>>2]=0;f=7;return f|0}while(0);if((a[b+43>>0]|0)!=2){h=c[b+4>>2]|0;g=b+32|0;h=_a[c[(c[h>>2]|0)+52>>2]&127](h,e,32768,d[b+44>>0]|0,(c[g>>2]|0)+(e<<2)|0)|0;i=b+46|0;if((h&255|0)==8){a[i>>0]=a[i>>0]|2;h=(h|0)==8?0:h}}else{if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](32768)|0;if(!g)g=0;else l=18}else{g=Wa[c[29356>>2]&127](32768)|0;if((c[14985]|0)>>>0<32768)c[14985]=32768;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){k=c[14978]|0;j=Tv(h|0,i|0,g|0,((g|0)<0)<<31>>31|0)|0;i=L()|0;c[14768]=((i|0)<0|(i|0)==0&j>>>0<=k>>>0)&1}g=Wa[c[29340>>2]&127](g)|0;if(g){h=Wa[c[29352>>2]&127](g)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0){c[14987]=h;l=18}else l=18}else g=0}if((l|0)==18)gw(g|0,0,32768)|0;b=b+32|0;c[(c[b>>2]|0)+(e<<2)>>2]=g;h=(c[(c[b>>2]|0)+(e<<2)>>2]|0)==0?7:0;g=b}c[f>>2]=c[(c[g>>2]|0)+(e<<2)>>2];f=h;return f|0}function lf(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,l=0,m=0,n=0,o=0;n=b+76|0;if(Lu(b+84|0,h+8|0,8)|0){n=0;return n|0}l=d[h+1>>0]<<16|d[h>>0]<<24|d[h+2>>0]<<8|d[h+3>>0];if(!l){n=0;return n|0}i=c[n>>2]|0;m=b+80|0;j=c[m>>2]|0;if(!(a[b+65>>0]|0)){i=i+j+(c[h>>2]|0)|0;o=(c[h+4>>2]|0)+j+i|0;c[n>>2]=i;c[m>>2]=o;k=g+(c[b+36>>2]|0)|0;j=g;b=o;do{i=i+b+(c[j>>2]|0)|0;b=(c[j+4>>2]|0)+b+i|0;j=j+8|0}while(j>>>0>>0)}else{i=i+j+(dw(c[h>>2]|0)|0)|0;o=(dw(c[h+4>>2]|0)|0)+j+i|0;c[n>>2]=i;c[m>>2]=o;k=g+(c[b+36>>2]|0)|0;j=g;b=o;do{i=i+b+(dw(c[j>>2]|0)|0)|0;b=(dw(c[j+4>>2]|0)|0)+b+i|0;j=j+8|0}while(j>>>0>>0)}c[n>>2]=i;c[m>>2]=b;if((i|0)!=(d[h+17>>0]<<16|d[h+16>>0]<<24|d[h+18>>0]<<8|d[h+19>>0]|0)){o=0;return o|0}if((b|0)!=(d[h+21>>0]<<16|d[h+20>>0]<<24|d[h+22>>0]<<8|d[h+23>>0]|0)){o=0;return o|0}c[e>>2]=l;c[f>>2]=d[h+5>>0]<<16|d[h+4>>0]<<24|d[h+6>>0]<<8|d[h+7>>0];o=1;return o|0}function mf(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;j=b+76|0;a[h>>0]=e>>>24;a[h+1>>0]=e>>>16;a[h+2>>0]=e>>>8;a[h+3>>0]=e;a[h+4>>0]=f>>>24;a[h+5>>0]=f>>>16;a[h+6>>0]=f>>>8;a[h+7>>0]=f;e=h+8|0;if(c[b+104>>2]|0){f=e+16|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(f|0));return}i=b+84|0;k=i;k=d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24;i=i+4|0;i=d[i>>0]|d[i+1>>0]<<8|d[i+2>>0]<<16|d[i+3>>0]<<24;f=e;a[f>>0]=k;a[f+1>>0]=k>>8;a[f+2>>0]=k>>16;a[f+3>>0]=k>>24;e=e+4|0;a[e>>0]=i;a[e+1>>0]=i>>8;a[e+2>>0]=i>>16;a[e+3>>0]=i>>24;e=c[j>>2]|0;i=b+80|0;f=c[i>>2]|0;if(!(a[b+65>>0]|0)){k=e+f+(c[h>>2]|0)|0;e=(c[h+4>>2]|0)+f+k|0;c[j>>2]=k;c[i>>2]=e;b=g+(c[b+36>>2]|0)|0;f=k;do{f=f+e+(c[g>>2]|0)|0;e=(c[g+4>>2]|0)+e+f|0;g=g+8|0}while(g>>>0>>0)}else{k=e+f+(dw(c[h>>2]|0)|0)|0;e=(dw(c[h+4>>2]|0)|0)+f+k|0;c[j>>2]=k;c[i>>2]=e;b=g+(c[b+36>>2]|0)|0;f=k;do{f=f+e+(dw(c[g>>2]|0)|0)|0;e=(dw(c[g+4>>2]|0)|0)+e+f|0;g=g+8|0}while(g>>>0>>0)}c[j>>2]=f;c[i>>2]=e;a[h+16>>0]=f>>>24;a[h+17>>0]=f>>>16;a[h+18>>0]=f>>>8;a[h+19>>0]=f;k=c[i>>2]|0;a[h+20>>0]=k>>>24;a[h+21>>0]=k>>>16;a[h+22>>0]=k>>>8;a[h+23>>0]=k;return}function nf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;do{e=a+28|0;switch(c[e>>2]|0){case 6:case 0:case 5:{if((c[a+16>>2]|0)>>>0>b>>>0?(f=_b(a,b,d,1)|0,f|0):0)c[e>>2]=f;break}default:{}}a=c[a+44>>2]|0}while((a|0)!=0);return}function of(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;k=c[b+208>>2]|0;j=b+152|0;m=c[j>>2]|0;l=b+148|0;i=c[l>>2]|0;m=m>>>0>i>>>0?i:m;h=c[b+96>>2]|0;if((h|0)>0){e=c[b+92>>2]|0;f=b+72|0;d=0;do{g=e+(d*48|0)+8|0;n=g;if((c[n>>2]|0)==0&(c[n+4>>2]|0)==0){p=f;o=c[p+4>>2]|0;n=g;c[n>>2]=c[p>>2];c[n+4>>2]=o}d=d+1|0}while((d|0)<(h|0));g=f}else g=b+72|0;e=g;d=c[e>>2]|0;e=c[e+4>>2]|0;if((d|0)==0&(e|0)==0){d=0;e=0}else{d=Sv(d|0,e|0,-1,-1)|0;d=Wv(d|0,L()|0,i|0,0)|0;d=Sv(d|0,L()|0,1,0)|0;d=Yv(d|0,L()|0,i|0,0)|0;e=L()|0}p=g;c[p>>2]=d;c[p+4>>2]=e;p=b+80|0;c[p>>2]=d;c[p+4>>2]=e;if(((a[b+7>>0]|0)==0?(a[b+5>>0]|0)!=4:0)?(p=c[b+60>>2]|0,((Wa[c[(c[p>>2]|0)+48>>2]&127](p)|0)&512|0)==0):0){d=k;e=d+12|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(e|0))}else{p=k;o=p;a[o>>0]=-117058087;a[o+1>>0]=-117058087>>8;a[o+2>>0]=-117058087>>16;a[o+3>>0]=-117058087>>24;p=p+4|0;a[p>>0]=-681336544;a[p+1>>0]=-681336544>>8;a[p+2>>0]=-681336544>>16;a[p+3>>0]=-681336544>>24;p=k+8|0;a[p>>0]=-1;a[p+1>>0]=-1>>8;a[p+2>>0]=-1>>16;a[p+3>>0]=-1>>24}f=b+48|0;Fb(4,f);f=c[f>>2]|0;a[k+12>>0]=f>>>24;a[k+13>>0]=f>>>16;a[k+14>>0]=f>>>8;a[k+15>>0]=f;f=c[b+28>>2]|0;a[k+16>>0]=f>>>24;a[k+17>>0]=f>>>16;a[k+18>>0]=f>>>8;a[k+19>>0]=f;f=c[l>>2]|0;a[k+20>>0]=f>>>24;a[k+21>>0]=f>>>16;a[k+22>>0]=f>>>8;a[k+23>>0]=f;f=c[j>>2]|0;a[k+24>>0]=f>>>24;a[k+25>>0]=f>>>16;a[k+26>>0]=f>>>8;a[k+27>>0]=f;gw(k+28|0,0,m+-28|0)|0;f=b+64|0;e=0;while(1){if(e>>>0>=(c[l>>2]|0)>>>0){d=0;e=17;break}n=c[f>>2]|0;d=g;d=_a[c[(c[n>>2]|0)+12>>2]&127](n,k,m,c[d>>2]|0,c[d+4>>2]|0)|0;n=g;n=Sv(c[n>>2]|0,c[n+4>>2]|0,m|0,0)|0;o=L()|0;p=g;c[p>>2]=n;c[p+4>>2]=o;if(!d)e=e+m|0;else{e=17;break}}if((e|0)==17)return d|0;return 0}function pf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[d>>2]=0;return c[a+40>>2]|0}function qf(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,l=0,m=0,n=0,o=0,p=0,q=0;q=Ra;Ra=Ra+32|0;l=q+16|0;h=q;if(!e){c[h>>2]=32306;c[h+4>>2]=56058;c[h+8>>2]=31517;Db(11,32001,h);d=11;Ra=q;return d|0}p=d+212|0;h=c[p>>2]|0;h=Ya[c[29436>>2]&127](c[h+44>>2]|0,e,a[h+33>>0]&3)|0;a:do if(!h){j=c[p>>2]|0;if((a[j+33>>0]|0)!=2){k=j+44|0;n=Wa[c[29432>>2]&127](c[k>>2]|0)|0;b:do if((n|0)>(c[j+20>>2]|0)){i=j+8|0;h=c[i>>2]|0;c:do if(!h)m=12;else{while(1){if((b[h+30>>1]|0)==0?(b[h+28>>1]&8)==0:0)break;h=c[h+36>>2]|0;if(!h){m=12;break c}}c[i>>2]=h}while(0);d:do if((m|0)==12){c[i>>2]=0;h=c[j+4>>2]|0;if(!h)break b;while(1){if(!(b[h+30>>1]|0))break d;h=c[h+36>>2]|0;if(!h)break b}}while(0);h=Xa[c[j+36>>2]&255](c[j+40>>2]|0,h)|0;switch(h|0){case 0:case 5:break;default:break a}}while(0);h=Ya[c[29436>>2]&127](c[k>>2]|0,e,2)|0;if(h)m=18;else h=7}else h=7}else m=18;while(0);do if((m|0)==18){i=c[p>>2]|0;j=c[h+4>>2]|0;if(!(c[j>>2]|0))n=sf(i,e,h)|0;else{n=i+12|0;c[n>>2]=(c[n>>2]|0)+1;n=j+30|0;b[n>>1]=(b[n>>1]|0)+1<<16>>16;n=j}c[f>>2]=n;h=g&1;i=n+20|0;j=(h|0)!=0;if(!(j|(c[i>>2]|0)==0)){d=d+184|0;c[d>>2]=(c[d>>2]|0)+1;d=0;Ra=q;return d|0}do if((e|0)>=0?(o=d+152|0,((1073741824/(c[o>>2]|0)|0)+1|0)!=(e|0)):0){c[i>>2]=d;if(c[c[d+60>>2]>>2]|0?((h|0)==0?(c[d+24>>2]|0)>>>0>=e>>>0:0):0){h=d+188|0;c[h>>2]=(c[h>>2]|0)+1;h=rf(n)|0;if(!h)h=0;else break;Ra=q;return h|0}if((c[d+156>>2]|0)>>>0>>0)h=13;else{if(j){if((c[d+28>>2]|0)>>>0>=e>>>0)df(c[d+56>>2]|0,e)|0;g=d+96|0;h=c[g>>2]|0;if((h|0)>0){k=d+92|0;j=0;do{i=c[k>>2]|0;if((c[i+(j*48|0)+20>>2]|0)>>>0>=e>>>0){df(c[i+(j*48|0)+16>>2]|0,e)|0;h=c[g>>2]|0}j=j+1|0}while((j|0)<(h|0))}}gw(c[n+4>>2]|0,0,c[o>>2]|0)|0;d=0;Ra=q;return d|0}}else m=38;while(0);if((m|0)==38){c[l>>2]=32306;c[l+4>>2]=56090;c[l+8>>2]=31517;Db(11,32001,l);if(!n){h=11;break}else h=11}m=c[n+12>>2]|0;do if(b[n+28>>1]&2){i=m+8|0;j=n+36|0;k=c[j>>2]|0;if((c[i>>2]|0)==(n|0))c[i>>2]=k;g=c[n+32>>2]|0;l=(g|0)==0;if(l){c[m+4>>2]=k;i=k}else{c[g+36>>2]=k;i=c[j>>2]|0}if(i|0){c[i+32>>2]=g;break}c[m>>2]=g;if(l)a[m+33>>0]=2}while(0);o=m+12|0;c[o>>2]=(c[o>>2]|0)+-1;cb[c[29440>>2]&255](c[m+44>>2]|0,c[n>>2]|0,1)}while(0);if(!(c[(c[p>>2]|0)+12>>2]|0)){switch(a[d+16>>0]|0){case 0:case 6:break;case 1:{if(!(a[d+4>>0]|0))uf(d,0,0)|0;break}default:tf(d)|0}vf(d)}c[f>>2]=0;d=h;Ra=q;return d|0}function rf(b){b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=Ra;Ra=Ra+16|0;f=k;i=c[b+20>>2]|0;c[f>>2]=0;g=i+216|0;d=c[g>>2]|0;h=b+24|0;if(d){d=ef(d,c[h>>2]|0,f)|0;if(d|0){b=d;Ra=k;return b|0}d=c[f>>2]|0;if(d){l=c[g>>2]|0;f=c[i+152>>2]|0;m=c[b+4>>2]|0;n=c[l+8>>2]|0;l=e[l+66>>1]|0;l=l<<16&65536|l&65024;g=Yv(l|24|0,0,d+-1|0,0)|0;g=Sv(g|0,L()|0,56,0)|0;d=L()|0;d=_a[c[(c[n>>2]|0)+8>>2]&127](n,m,(l|0)<(f|0)?l:f,g,d)|0}else j=5}else j=5;if((j|0)==5){m=c[i+152>>2]|0;n=Yv((c[h>>2]|0)+-1|0,0,m|0,((m|0)<0)<<31>>31|0)|0;d=L()|0;l=c[i+60>>2]|0;d=_a[c[(c[l>>2]|0)+8>>2]&127](l,c[b+4>>2]|0,m,n,d)|0;d=(d|0)==522?0:d}if((c[h>>2]|0)!=1){n=d;Ra=k;return n|0}if(!d){g=i+104|0;d=(c[b+4>>2]|0)+24|0;f=g+16|0;do{a[g>>0]=a[d>>0]|0;g=g+1|0;d=d+1|0}while((g|0)<(f|0));n=0;Ra=k;return n|0}else{n=i+104|0;c[n>>2]=-1;c[n+4>>2]=-1;c[n+8>>2]=-1;c[n+12>>2]=-1;n=d;Ra=k;return n|0}return 0}function sf(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=f+4|0;h=c[g>>2]|0;do{i=h+16|0;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;c[i+12>>2]=0;c[i+16>>2]=0;c[i+20>>2]=0;c[h>>2]=f;c[h+4>>2]=c[f>>2];i=h+40|0;c[h+8>>2]=i;j=i;a[j>>0]=0;a[j+1>>0]=0;a[j+2>>0]=0;a[j+3>>0]=0;i=i+4|0;a[i>>0]=0;a[i+1>>0]=0;a[i+2>>0]=0;a[i+3>>0]=0;c[h+12>>2]=d;c[h+24>>2]=e;b[h+28>>1]=1;h=c[g>>2]|0}while(!(c[h>>2]|0));j=d+12|0;c[j>>2]=(c[j>>2]|0)+1;j=h+30|0;b[j>>1]=(b[j>>1]|0)+1<<16>>16;return h|0}function tf(b){b=b|0;var e=0,f=0,g=0;g=b+16|0;f=a[g>>0]|0;if(f<<24>>24==6){g=c[b+40>>2]|0;return g|0}if((f&255)<2){g=0;return g|0}do if(!(c[b+216>>2]|0)){if(!(f<<24>>24==2?1:(c[c[b+64>>2]>>2]|0)==0)){e=xf(b,0)|0;break}e=uf(b,0,0)|0;if((f&255)>2&(a[b+15>>0]|0)==0){c[b+40>>2]=4;a[g>>0]=6;c[b+204>>2]=75;g=e;return g|0}}else{e=wf(b,2,-1)|0;f=uf(b,d[b+19>>0]|0,0)|0;e=(e|0)==0?f:e}while(0);switch((e&255)<<24>>24){case 10:case 13:break;default:{g=e;return g|0}}c[b+40>>2]=e;a[g>>0]=6;c[b+204>>2]=(e|0)==0?74:75;g=e;return g|0}function uf(e,f,g){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,x=0,y=0,z=0,A=0,B=0;B=Ra;Ra=Ra+16|0;w=B;A=e+16|0;if((d[A>>0]|0)<2?(d[e+17>>0]|0)<2:0){A=0;Ra=B;return A|0}l=e+96|0;if((c[l>>2]|0)>0){k=e+92|0;i=0;do{yf(c[(c[k>>2]|0)+(i*48|0)+16>>2]|0);i=i+1|0}while((i|0)<(c[l>>2]|0))}z=e+4|0;k=c[e+68>>2]|0;i=c[k>>2]|0;if(!(a[z>>0]|0)){if(i|0)y=9}else if((i|0)==29896){i=29896;y=9}if((y|0)==9){Wa[c[i+4>>2]&127](k)|0;c[k>>2]=0}i=e+92|0;k=c[i>>2]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{s=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);c[i>>2]=0;c[l>>2]=0;c[e+52>>2]=0;n=e+64|0;o=c[n>>2]|0;m=c[o>>2]|0;a:do if(!m)i=0;else{if((m|0)==29896){l=o+16|0;i=c[l>>2]|0;if(i|0)do{k=i;i=c[i>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{s=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}}while((i|0)!=0);c[l>>2]=0;c[o>>2]=0;i=0;break}i=a[e+5>>0]|0;switch(i<<24>>24){case 3:{k=e+72|0;s=k;if(!((c[s>>2]|0)==0&(c[s+4>>2]|0)==0)){i=Ya[c[m+16>>2]&127](o,0,0)|0;if(!i)if((a[e+8>>0]|0)!=0?(p=c[n>>2]|0,q=a[e+10>>0]|0,q<<24>>24!=0):0)i=Xa[c[(c[p>>2]|0)+20>>2]&255](p,q&255)|0;else i=0}else i=0;s=k;c[s>>2]=0;c[s+4>>2]=0;break a}case 1:break;default:if(i<<24>>24==5|(a[z>>0]|0)==0){s=(a[e+12>>0]|0)==0;Wa[c[m+4>>2]&127](o)|0;c[o>>2]=0;if(!s){i=0;break a}i=c[e>>2]|0;i=Ya[c[i+28>>2]&127](i,c[e+172>>2]|0,d[e+9>>0]|0)|0;break a}}if(!f)i=(a[e+12>>0]|0)!=0&1;else i=1;f=e+72|0;s=f;if(!((c[s>>2]|0)==0&(c[s+4>>2]|0)==0)){l=e+160|0;k=c[l>>2]|0;l=c[l+4>>2]|0;if((i|0)!=0|(k|0)==0&(l|0)==0)i=Ya[c[m+16>>2]&127](o,0,0)|0;else i=_a[c[m+12>>2]&127](o,59008,28,0,0)|0;if(!i){if(!(a[e+7>>0]|0)){i=c[n>>2]|0;i=Xa[c[(c[i>>2]|0)+20>>2]&255](i,(a[e+10>>0]|16)&255)|0}else i=0;if(((l|0)>0|(l|0)==0&k>>>0>0)&(i|0)==0){i=c[n>>2]|0;i=Xa[c[(c[i>>2]|0)+24>>2]&255](i,w)|0;s=w;r=c[s+4>>2]|0;if((i|0)==0&((r|0)>(l|0)|((r|0)==(l|0)?(c[s>>2]|0)>>>0>k>>>0:0))){i=c[n>>2]|0;i=Ya[c[(c[i>>2]|0)+16>>2]&127](i,k,l)|0}}}}else i=0;s=f;c[s>>2]=0;c[s+4>>2]=0}while(0);s=e+56|0;yf(c[s>>2]|0);c[s>>2]=0;c[e+44>>2]=0;s=(i|0)==0;if(s){do if((a[e+15>>0]|0)==0?(a[e+12>>0]|0)!=0:0){if(g|0?c[c[e+60>>2]>>2]|0:0){l=c[e+212>>2]|0;k=c[l+16>>2]|0;if((k|0)<=-1){q=Yv(k|0,((k|0)<0)<<31>>31|0,-1024,-1)|0;r=L()|0;k=(c[l+28>>2]|0)+(c[l+24>>2]|0)|0;k=Wv(q|0,r|0,k|0,((k|0)<0)<<31>>31|0)|0;L()|0}l=c[l>>2]|0;if(!l){l=0;f=0}else{f=0;do{f=f+1|0;l=c[l+32>>2]|0}while((l|0)!=0);l=Yv(f|0,0,100,0)|0;f=L()|0}if(k|0?(r=Wv(l|0,f|0,k|0,((k|0)<0)<<31>>31|0)|0,L()|0,(r|0)>=25):0){y=60;break}}l=c[e+212>>2]|0;k=c[l>>2]|0;if(k|0)do{r=k+28|0;b[r>>1]=b[r>>1]&-13;k=c[k+32>>2]|0}while((k|0)!=0);c[l+8>>2]=c[l+4>>2]}else y=60;while(0);if((y|0)==60){r=e+212|0;l=c[r>>2]|0;k=c[l>>2]|0;if(k){do{q=c[k+12>>2]|0;f=q+8|0;m=k+36|0;n=c[m>>2]|0;if((c[f>>2]|0)==(k|0))c[f>>2]=n;o=c[k+32>>2]|0;p=(o|0)==0;if(p){c[q+4>>2]=n;f=n}else{c[o+36>>2]=n;f=c[m>>2]|0}if(!f){c[q>>2]=o;if(p)a[q+33>>0]=2}else c[f+32>>2]=o;p=k+28|0;b[p>>1]=b[p>>1]&-16|1;if((b[k+30>>1]|0)==0?a[q+32>>0]|0:0)cb[c[29440>>2]&255](c[q+44>>2]|0,c[k>>2]|0,0);k=c[l>>2]|0}while((k|0)!=0);l=c[r>>2]|0}}k=c[e+24>>2]|0;r=l+44|0;if(c[r>>2]|0){f=c[l>>2]|0;if(f|0)do{p=f;f=c[f+32>>2]|0;if((c[p+24>>2]|0)>>>0>k>>>0){q=c[p+12>>2]|0;n=q+8|0;o=p+36|0;m=c[o>>2]|0;if((c[n>>2]|0)==(p|0))c[n>>2]=m;n=(f|0)==0;if(n)c[q+4>>2]=m;else{c[f+36>>2]=m;m=c[o>>2]|0}if(!m){c[q>>2]=f;if(n)a[q+33>>0]=2}else c[m+32>>2]=f;o=p+28|0;b[o>>1]=b[o>>1]&-16|1;if((b[p+30>>1]|0)==0?a[q+32>>0]|0:0)cb[c[29440>>2]&255](c[q+44>>2]|0,c[p>>2]|0,0)}}while((f|0)!=0);if(!k)if((c[l+12>>2]|0)!=0?(t=Ya[c[29436>>2]&127](c[r>>2]|0,1,0)|0,(t|0)!=0):0){gw(c[t>>2]|0,0,c[l+24>>2]|0)|0;k=1}else k=0;bb[c[29448>>2]&127](c[r>>2]|0,k+1|0)}}q=e+216|0;k=c[q>>2]|0;if(!k)if((g|0)!=0&s){n=e+32|0;o=c[e+24>>2]|0;if(((c[n>>2]|0)>>>0>o>>>0?(x=e+60|0,u=c[x>>2]|0,v=c[u>>2]|0,(v|0)!=0):0)?((a[A>>0]|0)+-1&255)>2:0){p=c[e+152>>2]|0;i=Xa[c[v+24>>2]&255](u,w)|0;l=((p|0)<0)<<31>>31;f=Yv(p|0,l|0,o|0,0)|0;m=L()|0;do if(!i){k=w;i=c[k>>2]|0;k=c[k+4>>2]|0;if((i|0)==(f|0)&(k|0)==(m|0))h=0;else{if(!((k|0)>(m|0)|(k|0)==(m|0)&i>>>0>f>>>0)){w=Sv(i|0,k|0,p|0,l|0)|0;v=L()|0;if(!((v|0)>(m|0)|(v|0)==(m|0)&w>>>0>f>>>0)){w=c[e+208>>2]|0;gw(w|0,0,p|0)|0;x=c[x>>2]|0;y=Tv(f|0,m|0,p|0,l|0)|0;h=L()|0;h=_a[c[(c[x>>2]|0)+12>>2]&127](x,w,p,y,h)|0;y=117}}else{h=c[x>>2]|0;h=Ya[c[(c[h>>2]|0)+16>>2]&127](h,f,m)|0;y=117}if((y|0)==117?h|0:0)break;c[n>>2]=o;h=0}}else h=i;while(0)}else h=0}else h=i;else{h=k+44|0;if(!(a[h>>0]|0))h=i;else{if(!(a[k+43>>0]|0)){y=c[k+4>>2]|0;Za[c[(c[y>>2]|0)+56>>2]&127](y,0,1,9)|0}a[h>>0]=0;c[k+104>>2]=0;a[k+47>>0]=0;h=i}}do if((g|0)!=0&(h|0)==0){h=c[e+60>>2]|0;i=c[h>>2]|0;if(i|0?(j=Ya[c[i+40>>2]&127](h,22,0)|0,(j|0)!=12):0)break;j=0}else j=h;while(0);b:do if(!(a[z>>0]|0)){h=c[q>>2]|0;do if(h|0){i=h+43|0;if(!(a[i>>0]|0)){h=0;break b}a[i>>0]=0;z=c[h+4>>2]|0;if(!(Za[c[(c[z>>2]|0)+56>>2]&127](z,(b[h+40>>1]|0)+3|0,1,6)|0))if(!(a[i>>0]|0))break;else{h=0;break b}else{a[i>>0]=1;h=0;break b}}while(0);h=c[e+60>>2]|0;i=c[h>>2]|0;if(i){if(!(a[e+13>>0]|0))h=Xa[c[i+32>>2]&255](h,1)|0;else h=0;i=e+17|0;if((a[i>>0]|0)!=5)a[i>>0]=1}else h=0;a[e+18>>0]=0}else h=0;while(0);a[A>>0]=1;a[e+19>>0]=0;A=(j|0)==0?h:j;Ra=B;return A|0}function vf(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;g=d+56|0;yf(c[g>>2]|0);c[g>>2]=0;g=d+96|0;if((c[g>>2]|0)>0){f=d+92|0;e=0;do{yf(c[(c[f>>2]|0)+(e*48|0)+16>>2]|0);e=e+1|0}while((e|0)<(c[g>>2]|0))}h=d+4|0;f=c[d+68>>2]|0;e=c[f>>2]|0;if(!(a[h>>0]|0)){if(e|0)k=7}else if((e|0)==29896){e=29896;k=7}if((k|0)==7){Wa[c[e+4>>2]&127](f)|0;c[f>>2]=0}e=d+92|0;f=c[e>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{l=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[e>>2]=0;c[g>>2]=0;c[d+52>>2]=0;g=c[d+216>>2]|0;if(!g){if(!(a[h>>0]|0)){e=d+60|0;f=c[e>>2]|0;g=c[f>>2]|0;if(!(((g|0)!=0?((Wa[c[g+48>>2]&127](f)|0)&2048|0)!=0:0)?(a[d+5>>0]&5)==1:0))k=25;if((k|0)==25?(i=c[d+64>>2]|0,j=c[i>>2]|0,j|0):0){Wa[c[j+4>>2]&127](i)|0;c[i>>2]=0}e=c[e>>2]|0;f=c[e>>2]|0;if(f|0){if(!(a[d+13>>0]|0))f=Xa[c[f+32>>2]&255](e,0)|0;else f=0;e=d+17|0;if((a[e>>0]|0)!=5)a[e>>0]=0;if(f|0?(a[d+16>>0]|0)==6:0)a[e>>0]=5}a[d+18>>0]=0;k=36}}else{e=g+44|0;if(a[e>>0]|0){if(!(a[g+43>>0]|0)){l=c[g+4>>2]|0;Za[c[(c[l>>2]|0)+56>>2]&127](l,0,1,9)|0}a[e>>0]=0;c[g+104>>2]=0;a[g+47>>0]=0}e=g+40|0;f=b[e>>1]|0;if(f<<16>>16>-1){if(!(a[g+43>>0]|0)){l=c[g+4>>2]|0;Za[c[(c[l>>2]|0)+56>>2]&127](l,(f<<16>>16)+3|0,1,5)|0}b[e>>1]=-1;k=36}else k=36}if((k|0)==36)a[d+16>>0]=0;f=d+40|0;if(!(c[f>>2]|0)){l=d+72|0;d=d+19|0;a[d>>0]=0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;return}if(!(a[d+12>>0]|0)){Ff(d);a[d+18>>0]=0;e=0}else e=(c[c[d+64>>2]>>2]|0)==0&1;a[d+16>>0]=e;c[f>>2]=0;c[d+204>>2]=74;l=d+72|0;d=d+19|0;a[d>>0]=0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;return}function wf(d,f,g){d=d|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,x=0,y=0;y=Ra;Ra=Ra+32|0;x=y+8|0;w=y;h=c[d+40>>2]|0;if(h|0){d=h;Ra=y;return d|0}k=d+96|0;h=c[k>>2]|0;if((h|0)<=(g|0)){d=0;Ra=y;return d|0}j=(f|0)==1;g=((j^1)&1)+g|0;if((g|0)<(h|0)){f=d+92|0;h=g;do{yf(c[(c[f>>2]|0)+(h*48|0)+16>>2]|0);h=h+1|0}while((h|0)<(c[k>>2]|0))}c[k>>2]=g;if(j){if(g|0){d=0;Ra=y;return d|0}g=c[d+68>>2]|0;h=c[g>>2]|0;if(!h){d=0;Ra=y;return d|0}if((h|0)==29896){i=g+16|0;h=c[i>>2]|0;if(h|0)do{f=h;h=c[h>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](f);else{x=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f)}}while((h|0)!=0);c[i>>2]=0;c[g+12>>2]=0;c[g+32>>2]=0;x=g+24|0;c[x>>2]=0;c[x+4>>2]=0;c[g+48>>2]=0;x=g+40|0;c[x>>2]=0;c[x+4>>2]=0}c[d+52>>2]=0;d=0;Ra=y;return d|0}s=d+216|0;if((c[s>>2]|0)==0?(c[c[d+64>>2]>>2]|0)==0:0){d=0;Ra=y;return d|0}if((g|0)!=0?(l=g+-1|0,u=c[d+92>>2]|0,m=u+(l*48|0)|0,l=u+(l*48|0)+20|0,(m|0)!=0):0){j=c[l>>2]|0;if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](512)|0;if(!h){d=7;Ra=y;return d|0}}else{h=Wa[c[29356>>2]&127](512)|0;if((c[14985]|0)>>>0<512)c[14985]=512;g=59064;f=c[g>>2]|0;g=c[g+4>>2]|0;if((g|0)>0|(g|0)==0&f>>>0>0){u=c[14978]|0;r=Tv(f|0,g|0,h|0,((h|0)<0)<<31>>31|0)|0;q=L()|0;c[14768]=((q|0)<0|(q|0)==0&r>>>0<=u>>>0)&1}h=Wa[c[29340>>2]&127](h)|0;if(!h){d=7;Ra=y;return d|0}f=Wa[c[29352>>2]&127](h)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0)c[14987]=f}gw(h+4|0,0,508)|0;c[h>>2]=j;u=h;h=l;g=d+28|0;r=m;q=1}else{g=d+28|0;u=0;h=g;r=0;q=0}f=d+24|0;c[f>>2]=c[h>>2];a[d+18>>0]=a[d+12>>0]|0;a:do if(q){l=d+72|0;f=l;i=c[f>>2]|0;f=c[f+4>>2]|0;if(!(c[s>>2]|0)){j=r+8|0;g=c[j>>2]|0;j=c[j+4>>2]|0;h=(g|0)==0&(j|0)==0;g=h?i:g;j=h?f:j;h=r;k=c[h>>2]|0;h=c[h+4>>2]|0;p=l;c[p>>2]=k;c[p+4>>2]=h;if((h|0)<(j|0)|(h|0)==(j|0)&k>>>0>>0)while(1){h=zf(d,l,u,1,1)|0;if(h|0){p=i;o=f;break a}h=l;k=c[h>>2]|0;h=c[h+4>>2]|0;if(!((h|0)<(j|0)|(h|0)==(j|0)&k>>>0>>0)){p=i;t=71;break}}else{p=i;t=71}}else{h=l;t=70}}else{o=c[s>>2]|0;if(!o){h=d+72|0;f=h;i=c[f>>2]|0;f=c[f+4>>2]|0;t=70;break}c[f>>2]=c[g>>2];if(a[o+44>>0]|0){n=o+68|0;l=c[n>>2]|0;m=o+32|0;j=c[m>>2]|0;h=o+52|0;f=c[j>>2]|0;g=h+48|0;do{a[h>>0]=a[f>>0]|0;h=h+1|0;f=f+1|0}while((h|0)<(g|0));f=c[n>>2]|0;h=f+1|0;if(h>>>0>l>>>0)h=0;else{k=h;g=j;while(1){h=f+34|0;f=h>>>12;if(!f)h=(c[g>>2]|0)+(h<<2)|0;else h=(c[g+(f<<2)>>2]|0)+((h&4095)<<2)|0;h=Bf(d,c[h>>2]|0)|0;f=k+1|0;if(f>>>0>l>>>0|(h|0)!=0)break;w=k;k=f;g=c[m>>2]|0;f=w}f=c[n>>2]|0}if((l|0)!=(f|0))do if(f|0){f=f+33|0;g=f>>>12;k=x+4|0;if(!((c[o+24>>2]|0)>(g|0)?(i=c[(c[m>>2]|0)+(g<<2)>>2]|0,c[k>>2]=i,(i|0)!=0):0)){if(kf(o,g,k)|0)break;i=c[k>>2]|0}l=i+16384|0;c[x>>2]=l;if(!g){j=i+136|0;c[k>>2]=j;f=0}else{f=(f&-4096)+-34|0;j=i}c[x+8>>2]=f;c[k>>2]=j+-4;i=(c[n>>2]|0)-f|0;f=0;do{g=l+(f<<1)|0;if((i|0)<(e[g>>1]|0))b[g>>1]=0;f=f+1|0}while((f|0)!=8192);x=j+(i<<2)|0;gw(x|0,0,l-x|0)|0}while(0)}else h=0;f=Cf(c[d+212>>2]|0)|0;if(!((h|0)==0&(f|0)!=0)){d=h;Ra=y;return d|0}do{h=f;f=c[f+16>>2]|0;h=Bf(d,c[h+24>>2]|0)|0}while((f|0)!=0&(h|0)==0);Ra=y;return h|0}while(0);if((t|0)==70){l=h;c[l>>2]=0;c[l+4>>2]=0;l=h;h=0;k=0;p=i;t=71}b:do if((t|0)==71){m=d+80|0;n=d+148|0;o=d+152|0;if((h|0)<(f|0)|(h|0)==(f|0)&k>>>0

        >>0)while(1){c[x>>2]=0;h=Af(d,0,p,f,x,w)|0;i=c[x>>2]|0;if(!i){i=m;i=Sv(c[i>>2]|0,c[i+4>>2]|0,c[n>>2]|0,0)|0;g=L()|0;t=l;if((i|0)==(c[t>>2]|0)?(g|0)==(c[t+4>>2]|0):0){k=Tv(p|0,f|0,i|0,g|0)|0;t=L()|0;i=(c[o>>2]|0)+8|0;i=Wv(k|0,t|0,i|0,((i|0)<0)<<31>>31|0)|0;L()|0;c[x>>2]=i;t=76}else t=81}else t=76;c:do if((t|0)==76){t=0;if((h|0)==0&(i|0)!=0){j=0;while(1){g=l;h=c[g>>2]|0;g=c[g+4>>2]|0;if(!((g|0)<(f|0)|(g|0)==(f|0)&h>>>0

        >>0))break;h=zf(d,l,u,1,1)|0;j=j+1|0;if(!(j>>>0>>0&(h|0)==0)){t=81;break c}}i=g}else t=81}while(0);if((t|0)==81){t=0;if(h|0){o=f;break b}h=l;i=c[h+4>>2]|0;h=c[h>>2]|0}if(!((i|0)<(f|0)|(i|0)==(f|0)&h>>>0

        >>0)){h=0;o=f;break}}else{h=0;o=f}}while(0);if(q){n=r+24|0;f=c[n>>2]|0;m=(c[d+152>>2]|0)+4|0;m=Yv(m|0,((m|0)<0)<<31>>31|0,f|0,0)|0;q=L()|0;k=w;c[k>>2]=m;c[k+4>>2]=q;k=c[s>>2]|0;if(!k){if(!h)t=105}else{h=r+28|0;i=r+40|0;g=k+112|0;if((c[i>>2]|0)==(c[g>>2]|0))h=c[h>>2]|0;else{c[h>>2]=0;c[i>>2]=c[g>>2];h=0}m=k+68|0;if(h>>>0<(c[m>>2]|0)>>>0){c[m>>2]=h;c[k+76>>2]=c[r+32>>2];c[k+80>>2]=c[r+36>>2];do if(h|0){h=h+33|0;i=h>>>12;j=x+4|0;if((c[k+24>>2]|0)>(i|0)?(v=c[(c[k+32>>2]|0)+(i<<2)>>2]|0,c[j>>2]=v,(v|0)!=0):0)f=v;else{if(kf(k,i,j)|0)break;f=c[j>>2]|0}k=f+16384|0;c[x>>2]=k;if(!i){g=f+136|0;c[j>>2]=g;h=0}else{h=(h&-4096)+-34|0;g=f}c[x+8>>2]=h;c[j>>2]=g+-4;f=(c[m>>2]|0)-h|0;h=0;do{i=k+(h<<1)|0;if((f|0)<(e[i>>1]|0))b[i>>1]=0;h=h+1|0}while((h|0)!=8192);x=g+(f<<2)|0;gw(x|0,0,k-x|0)|0}while(0);f=c[n>>2]|0;t=105}else t=105}d:do if((t|0)==105){i=d+52|0;while(1){if(f>>>0>=(c[i>>2]|0)>>>0){h=0;break d}h=zf(d,w,u,0,1)|0;if(!h)f=f+1|0;else break}}while(0)}yf(u);if(h|0){d=h;Ra=y;return d|0}d=l;c[d>>2]=p;c[d+4>>2]=o;d=0;Ra=y;return d|0}function xf(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,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,M=0;M=Ra;Ra=Ra+48|0;K=M+16|0;H=M+8|0;I=M+40|0;x=M;y=M+36|0;z=M+32|0;G=M+28|0;A=M+24|0;h=c[b>>2]|0;c[z>>2]=0;c[G>>2]=1;w=b+152|0;c[A>>2]=c[w>>2];C=b+64|0;g=c[C>>2]|0;g=Xa[c[(c[g>>2]|0)+24>>2]&255](g,x)|0;a:do if(!g){B=b+208|0;f=c[B>>2]|0;g=Ef(c[C>>2]|0,f,(c[(c[b>>2]|0)+8>>2]|0)+1|0)|0;if(!g){if(!(a[f>>0]|0))f=0;else f=Za[c[h+32>>2]&127](h,f,0,G)|0;b:do if((f|0)==0&(c[G>>2]|0)!=0){p=b+72|0;q=p;c[q>>2]=0;c[q+4>>2]=0;q=b+148|0;r=b+80|0;s=b+60|0;t=b+24|0;u=b+16|0;v=b+32|0;f=0;h=d;c:while(1){do{g=x;g=Af(b,d,c[g>>2]|0,c[g+4>>2]|0,y,z)|0;switch(g|0){case 101:{h=f;break b}case 0:break;default:{e=g;J=37;break b}}g=c[y>>2]|0;if((g|0)==-1){n=x;n=Tv(c[n>>2]|0,c[n+4>>2]|0,c[q>>2]|0,0)|0;o=L()|0;g=(c[w>>2]|0)+8|0;g=Wv(n|0,o|0,g|0,((g|0)<0)<<31>>31|0)|0;L()|0;c[y>>2]=g}if(!(g|d)){j=r;l=c[q>>2]|0;j=Sv(c[j>>2]|0,c[j+4>>2]|0,l|0,0)|0;i=L()|0;m=p;k=c[m>>2]|0;m=c[m+4>>2]|0;if((j|0)==(k|0)&(i|0)==(m|0)){o=x;o=Tv(c[o>>2]|0,c[o+4>>2]|0,j|0,i|0)|0;k=L()|0;g=(c[w>>2]|0)+8|0;g=Wv(o|0,k|0,g|0,((g|0)<0)<<31>>31|0)|0;L()|0;c[y>>2]=g;k=j;j=0}else{i=m;j=0}}else{i=p;k=c[i>>2]|0;l=c[q>>2]|0;i=c[i+4>>2]|0;j=0}if((k|0)==(l|0)&(i|0)==(j|0)){n=c[z>>2]|0;i=c[s>>2]|0;j=c[i>>2]|0;if(j|0?((a[u>>0]|0)+-1&255)>2:0){o=c[w>>2]|0;i=Xa[c[j+24>>2]&255](i,H)|0;k=((o|0)<0)<<31>>31;l=Yv(o|0,k|0,n|0,0)|0;m=L()|0;if(i|0){e=i;break c}j=H;i=c[j>>2]|0;j=c[j+4>>2]|0;if(!((i|0)==(l|0)&(j|0)==(m|0))){do if((j|0)>(m|0)|(j|0)==(m|0)&i>>>0>l>>>0){e=c[s>>2]|0;e=Ya[c[(c[e>>2]|0)+16>>2]&127](e,l,m)|0;J=24}else{j=Sv(i|0,j|0,o|0,k|0)|0;i=L()|0;if((i|0)>(m|0)|(i|0)==(m|0)&j>>>0>l>>>0)break;j=c[B>>2]|0;gw(j|0,0,o|0)|0;i=c[s>>2]|0;J=Tv(l|0,m|0,o|0,k|0)|0;e=L()|0;e=_a[c[(c[i>>2]|0)+12>>2]&127](i,j,o,J,e)|0;J=24}while(0);if((J|0)==24?(J=0,e|0):0)break c;c[v>>2]=n}}c[t>>2]=n}}while(!(g|0));i=0;d:while(1){if(h|0)Ff(b);h=zf(b,p,0,1,0)|0;switch(h|0){case 522:{h=f;break b}case 101:{J=35;break d}case 0:break;default:{e=h;J=37;break b}}f=f+1|0;i=i+1|0;if(i>>>0>=g>>>0)break;else h=0}if((J|0)==35){J=0;m=x;n=c[m+4>>2]|0;o=p;c[o>>2]=c[m>>2];c[o+4>>2]=n}h=0}J=38;break a}else{e=f;f=0;J=37}while(0);if((J|0)==37)if(!e)h=f;else{J=38;break}g=Se(b,A,-1)|0;e=b+12|0;a[b+18>>0]=a[e>>0]|0;if(!g){s=c[B>>2]|0;g=Ef(c[C>>2]|0,s,(c[(c[b>>2]|0)+8>>2]|0)+1|0)|0;if(!g){if(((a[b+16>>0]|0)+-1&255)>2){i=b+60|0;f=c[i>>2]|0;g=c[f>>2]|0;if(g|0){g=Ya[c[g+40>>2]&127](f,21,0)|0;switch(g|0){case 0:case 12:break;default:break a}}if(((a[b+7>>0]|0)==0?(D=c[i>>2]|0,E=a[b+10>>0]|0,E<<24>>24):0)?(F=Xa[c[(c[D>>2]|0)+20>>2]&255](D,E&255)|0,F|0):0){g=F;break}}g=uf(b,(a[s>>0]|0)!=0&1,0)|0;if(!g)if((a[s>>0]|0)!=0&(c[G>>2]|0)!=0){r=c[b>>2]|0;j=r+4|0;k=c[j>>2]<<1;G=Sv(k|0,((k|0)<0)<<31>>31|0,-1,-1)|0;F=L()|0;do if(!(F>>>0>0|(F|0)==0&G>>>0>2147483390)){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](k)|0;if(!f){f=7;break}else q=f}else{f=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;i=59064;g=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&g>>>0>0){G=c[14978]|0;F=Tv(g|0,i|0,f|0,((f|0)<0)<<31>>31|0)|0;E=L()|0;c[14768]=((E|0)<0|(E|0)==0&F>>>0<=G>>>0)&1}g=Wa[c[29340>>2]&127](f)|0;if(!g){f=7;break}f=Wa[c[29352>>2]&127](g)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0){c[14987]=f;q=g}else q=g}gw(q|0,0,k|0)|0;o=q+(c[j>>2]|0)|0;p=r+24|0;f=_a[c[p>>2]&127](r,s,q,16385,0)|0;e:do if(!f){f=Xa[c[(c[q>>2]|0)+24>>2]&255](q,H)|0;if(!f){n=(c[r+8>>2]|0)+1|0;G=H;G=Sv(c[G>>2]|0,c[G+4>>2]|0,n|0,((n|0)<0)<<31>>31|0)|0;F=L()|0;f=Sv(G|0,F|0,1,0)|0;L()|0;if(!(F>>>0>0|(F|0)==0&G>>>0>2147483390)){do if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](f)|0;if(!f){f=7;break e}else g=f}else{i=Wa[c[29356>>2]&127](f)|0;if((c[14985]|0)>>>0>>0)c[14985]=f;g=59064;f=c[g>>2]|0;g=c[g+4>>2]|0;if((g|0)>0|(g|0)==0&f>>>0>0){G=c[14978]|0;F=Tv(f|0,g|0,i|0,((i|0)<0)<<31>>31|0)|0;E=L()|0;c[14768]=((E|0)<0|(E|0)==0&F>>>0<=G>>>0)&1}g=Wa[c[29340>>2]&127](i)|0;if(!g){f=7;break e}f=Wa[c[29352>>2]&127](g)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0<=(c[14987]|0)>>>0)break;c[14987]=f}while(0);f=c[H>>2]|0;m=g+(f+1)|0;f=_a[c[(c[q>>2]|0)+8>>2]&127](q,g,f,0,0)|0;if(!f){a[g+(c[H>>2]|0)>>0]=0;k=g;G=H;F=c[G+4>>2]|0;f:do if((F|0)>0|(F|0)==0&(c[G>>2]|0)>>>0>0){l=r+32|0;j=g;g:while(1){f=Za[c[l>>2]&127](r,j,0,I)|0;if(f|0)break;do if(c[I>>2]|0){f=_a[c[p>>2]&127](r,j,o,2049,0)|0;if(f|0)break g;f=Ef(o,m,n)|0;i=c[o>>2]|0;if(i|0){Wa[c[i+4>>2]&127](o)|0;c[o>>2]=0}if(f|0)break g;if(!(a[m>>0]|0))break;if(!(Bu(m,s)|0)){f=0;break g}}while(0);j=j+(((Eu(j)|0)&1073741823)+1)|0;G=j-k|0;E=((G|0)<0)<<31>>31;F=H;D=c[F+4>>2]|0;if(!((D|0)>(E|0)|((D|0)==(E|0)?(c[F>>2]|0)>>>0>G>>>0:0))){J=88;break f}}}else J=88;while(0);if((J|0)==88){f=c[q>>2]|0;if(f|0){Wa[c[f+4>>2]&127](q)|0;c[q>>2]=0}f=Ya[c[r+28>>2]&127](r,s,0)|0}if(!g)break}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{I=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}else f=7}}while(0);g=c[q>>2]|0;if(g|0){Wa[c[g+4>>2]&127](q)|0;c[q>>2]=0}if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{I=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}else f=7;while(0);g=f}else g=0}}}else{f=0;e=g;J=38}}else{f=0;e=g;J=38}while(0);if((J|0)==38){J=b+12|0;a[b+18>>0]=a[J>>0]|0;h=f;g=e;e=J}if((d|0)!=0&(h|0)!=0){d=c[b+172>>2]|0;c[K>>2]=h;c[K+4>>2]=d;Db(539,32360,K)}if(a[e>>0]|0){K=512;b=b+148|0;c[b>>2]=K;Ra=M;return g|0}e=b+60|0;K=c[e>>2]|0;if((Wa[c[(c[K>>2]|0)+48>>2]&127](K)|0)&4096|0){K=512;b=b+148|0;c[b>>2]=K;Ra=M;return g|0}e=c[e>>2]|0;f=c[(c[e>>2]|0)+44>>2]|0;if(!f){K=4096;b=b+148|0;c[b>>2]=K;Ra=M;return g|0}K=Wa[f&127](e)|0;K=(K|0)<32?512:(K|0)<65536?K:65536;b=b+148|0;c[b>>2]=K;Ra=M;return g|0}function yf(a){a=a|0;var b=0,d=0;if(!a)return;if(c[a+8>>2]|0){d=a+12|0;b=0;do{yf(c[d+(b<<2)>>2]|0);b=b+1|0}while((b|0)!=125)}if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return}}function zf(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var 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,H=0,I=0,J=0,K=0;K=Ra;Ra=Ra+16|0;v=K+4|0;J=K;I=c[f+208>>2]|0;C=(i|0)!=0;r=c[(C?f+64|0:f+68|0)>>2]|0;k=g;k=_a[c[(c[r>>2]|0)+8>>2]&127](r,v,4,c[k>>2]|0,c[k+4>>2]|0)|0;if(k|0){J=k;Ra=K;return J|0}s=v+1|0;t=v+2|0;u=v+3|0;D=d[s>>0]<<16|d[v>>0]<<24|d[t>>0]<<8|d[u>>0];H=f+152|0;q=c[H>>2]|0;w=g;w=Sv(c[w>>2]|0,c[w+4>>2]|0,4,0)|0;k=L()|0;k=_a[c[(c[r>>2]|0)+8>>2]&127](r,I,q,w,k)|0;if(k|0){J=k;Ra=K;return J|0}k=c[H>>2]|0;p=(i<<2)+4+k|0;q=g;p=Sv(c[q>>2]|0,c[q+4>>2]|0,p|0,((p|0)<0)<<31>>31|0)|0;q=L()|0;w=g;c[w>>2]=p;c[w+4>>2]=q;if(!D){J=101;Ra=K;return J|0}if((D|0)==((1073741824/(k|0)|0)+1|0)){J=101;Ra=K;return J|0}if(D>>>0>(c[f+24>>2]|0)>>>0){J=0;Ra=K;return J|0}w=(h|0)==0;a:do if(!w?(m=D+-1|0,n=c[h>>2]|0,m>>>0>>0):0){l=c[h+8>>2]|0;if(!l){o=h;k=n}else{n=h;do{k=(m>>>0)/(l>>>0)|0;n=c[n+12+(k<<2)>>2]|0;if(!n)break a;m=m-(G(k,l)|0)|0;l=c[n+8>>2]|0}while((l|0)!=0);o=n;k=c[n>>2]|0}if(k>>>0<4001){if(!(1<<(m&7)&d[o+12+(m>>>3)>>0]))break;else k=0;Ra=K;return k|0}n=m+1|0;k=(m>>>0)%125|0;l=c[o+12+(k<<2)>>2]|0;if(l|0){while(1){if((l|0)==(n|0)){k=0;break}k=((k+1|0)>>>0)%125|0;l=c[o+12+(k<<2)>>2]|0;if(!l)break a}Ra=K;return k|0}}while(0);if(C){q=Sv(p|0,q|0,-4,-1)|0;k=L()|0;k=_a[c[(c[r>>2]|0)+8>>2]&127](r,v,4,q,k)|0;if(k|0){J=k;Ra=K;return J|0}m=d[s>>0]<<16|d[v>>0]<<24|d[t>>0]<<8|d[u>>0];if(!j){k=c[f+48>>2]|0;l=c[H>>2]|0;if((l|0)>200)do{j=l;l=l+-200|0;k=k+(d[I+l>>0]|0)|0}while((j|0)>400);if((k|0)!=(m|0)){J=101;Ra=K;return J|0}}}if(!w?(x=df(h,D)|0,x|0):0){J=x;Ra=K;return J|0}p=(D|0)==1;if(p?(y=f+142|0,z=a[I+20>>0]|0,(b[y>>1]|0)!=(z&255|0)):0)b[y>>1]=z&255;do if((c[f+216>>2]|0)==0?(A=f+212|0,B=Ya[c[29436>>2]&127](c[(c[A>>2]|0)+44>>2]|0,D,0)|0,(B|0)!=0):0){k=c[A>>2]|0;l=c[B+4>>2]|0;if(!(c[l>>2]|0)){l=sf(k,D,B)|0;break}else{B=k+12|0;c[B>>2]=(c[B>>2]|0)+1;B=l+30|0;b[B>>1]=(b[B>>1]|0)+1<<16>>16;break}}else l=0;while(0);c[J>>2]=l;if(C)if(!(a[f+7>>0]|0)){C=g;B=c[C+4>>2]|0;k=f+80|0;g=c[k+4>>2]|0;k=((B|0)<(g|0)|((B|0)==(g|0)?(c[C>>2]|0)>>>0<=(c[k>>2]|0)>>>0:0))&1}else k=1;else if(!l)k=1;else k=((e[l+28>>1]|0)>>>3&1^1)&65535;m=c[f+60>>2]|0;n=c[m>>2]|0;do if(n){o=a[f+16>>0]|0;if((o&255)>3){if(!k){F=51;break}}else if(!((k|0)!=0&o<<24>>24==0)){F=51;break}E=c[H>>2]|0;k=Yv(E|0,((E|0)<0)<<31>>31|0,D+-1|0,0)|0;l=L()|0;l=_a[c[n+12>>2]&127](m,I,E,k,l)|0;k=f+32|0;if(D>>>0>(c[k>>2]|0)>>>0)c[k>>2]=D;k=c[f+88>>2]|0;if(!k)n=l;else{nf(k,D,I);n=l}}else F=51;while(0);if((F|0)==51)if((i|0)==0&(l|0)==0){F=f+20|0;a[F>>0]=a[F>>0]|2;k=Za[c[f+204>>2]&127](f,D,J,1)|0;a[F>>0]=a[F>>0]&-3;if(k|0){J=k;Ra=K;return J|0}n=c[J>>2]|0;l=n+28|0;k=e[l>>1]|0;if((k&17|0)!=0?(E=k&65519,b[l>>1]=E,(k&1|0)!=0):0){m=(E^3)&65535;b[l>>1]=m;k=c[n+12>>2]|0;c[n+36>>2]=0;l=c[k>>2]|0;c[n+32>>2]=l;if(!l){c[k+4>>2]=n;if(a[k+32>>0]|0)a[k+33>>0]=1}else c[l+36>>2]=n;c[k>>2]=n;k=k+8|0;if((m&8)==0&(c[k>>2]|0)==0){c[k>>2]=n;n=0}else n=0}else n=0}else n=0;k=c[J>>2]|0;if(!k){J=n;Ra=K;return J|0}k=c[k+4>>2]|0;ew(k|0,I|0,c[H>>2]|0)|0;ab[c[f+200>>2]&127](c[J>>2]|0);if(p){m=f+104|0;k=k+24|0;l=m+16|0;do{a[m>>0]=a[k>>0]|0;m=m+1|0;k=k+1|0}while((m|0)<(l|0))}Df(c[J>>2]|0);J=n;Ra=K;return J|0}function Af(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,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+32|0;p=t+16|0;k=t+8|0;q=t;s=a+72|0;j=s;i=c[j>>2]|0;j=c[j+4>>2]|0;if((i|0)==0&(j|0)==0){i=a+148|0;r=i;n=0;o=0;i=c[i>>2]|0;j=0}else{o=Sv(i|0,j|0,-1,-1)|0;n=L()|0;r=a+148|0;i=c[r>>2]|0;n=Wv(o|0,n|0,i|0,0)|0;n=Sv(n|0,L()|0,1,0)|0;n=Yv(n|0,L()|0,i|0,0)|0;o=L()|0;j=0}m=s;c[m>>2]=n;c[m+4>>2]=o;m=Sv(n|0,o|0,i|0,j|0)|0;l=L()|0;if((l|0)>(f|0)|(l|0)==(f|0)&m>>>0>e>>>0){s=101;Ra=t;return s|0}if((b|0)==0?(m=a+80|0,(n|0)==(c[m>>2]|0)?(o|0)==(c[m+4>>2]|0):0):0)e=a+64|0;else{i=a+64|0;j=c[i>>2]|0;j=_a[c[(c[j>>2]|0)+8>>2]&127](j,k,8,n,o)|0;if(j|0){s=j;Ra=t;return s|0}if(!(Lu(k,32352,8)|0))e=i;else{s=101;Ra=t;return s|0}}l=c[e>>2]|0;m=Sv(n|0,o|0,8,0)|0;i=L()|0;i=_a[c[(c[l>>2]|0)+8>>2]&127](l,p,4,m,i)|0;if(i|0){s=i;Ra=t;return s|0}k=p+1|0;l=p+2|0;m=p+3|0;c[g>>2]=(d[k>>0]|0)<<16|(d[p>>0]|0)<<24|(d[l>>0]|0)<<8|(d[m>>0]|0);f=c[e>>2]|0;g=Sv(n|0,o|0,12,0)|0;i=L()|0;i=_a[c[(c[f>>2]|0)+8>>2]&127](f,p,4,g,i)|0;if(i|0){s=i;Ra=t;return s|0}c[a+48>>2]=(d[k>>0]|0)<<16|(d[p>>0]|0)<<24|(d[l>>0]|0)<<8|(d[m>>0]|0);f=c[e>>2]|0;g=Sv(n|0,o|0,16,0)|0;i=L()|0;i=_a[c[(c[f>>2]|0)+8>>2]&127](f,p,4,g,i)|0;if(i|0){s=i;Ra=t;return s|0}c[h>>2]=(d[k>>0]|0)<<16|(d[p>>0]|0)<<24|(d[l>>0]|0)<<8|(d[m>>0]|0);j=s;b=c[j>>2]|0;j=c[j+4>>2]|0;a:do if((b|0)==0&(j|0)==0){g=c[e>>2]|0;h=Sv(n|0,o|0,20,0)|0;i=L()|0;i=_a[c[(c[g>>2]|0)+8>>2]&127](g,p,4,h,i)|0;do if(!i){f=(d[k>>0]|0)<<16|(d[p>>0]|0)<<24|(d[l>>0]|0)<<8|(d[m>>0]|0);h=c[e>>2]|0;o=Sv(n|0,o|0,24,0)|0;i=L()|0;i=_a[c[(c[h>>2]|0)+8>>2]&127](h,p,4,o,i)|0;if(i|0)break;i=(d[k>>0]|0)<<16|(d[p>>0]|0)<<24|(d[l>>0]|0)<<8|(d[m>>0]|0);c[q>>2]=i;if(!i){i=c[a+152>>2]|0;c[q>>2]=i}if((!((f+-32|0)>>>0>65504|(i+-512|0)>>>0>65024)?(i+-1&i|0)==0:0)?(f+-1&f|0)==0:0){e=Se(a,q,-1)|0;c[r>>2]=f;j=s;b=c[j>>2]|0;j=c[j+4>>2]|0;i=f;break a}else i=101}while(0);s=i;Ra=t;return s|0}else{e=0;i=c[r>>2]|0}while(0);q=Sv(b|0,j|0,i|0,0)|0;r=L()|0;c[s>>2]=q;c[s+4>>2]=r;s=e;Ra=t;return s|0}function Bf(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=d+212|0;h=Ya[c[29436>>2]&127](c[(c[f>>2]|0)+44>>2]|0,e,0)|0;do if(!h)g=0;else{f=c[f>>2]|0;g=c[h+4>>2]|0;if(!(c[g>>2]|0)){f=sf(f,e,h)|0;if(!f){g=0;break}g=f;f=b[f+30>>1]|0}else{k=f+12|0;c[k>>2]=(c[k>>2]|0)+1;k=g+30|0;f=(b[k>>1]|0)+1<<16>>16;b[k>>1]=f}if(f<<16>>16!=1){f=rf(g)|0;if(!f){ab[c[d+200>>2]&127](g);if(!(b[g+28>>1]&32)){Df(g);g=0;break}else{k=c[g+20>>2]|0;j=k+120|0;c[j>>2]=(c[j>>2]|0)+-1;k=k+136|0;c[g+16>>2]=c[k>>2];c[k>>2]=g;g=0;break}}else if(!(b[g+28>>1]&32)){Df(g);g=f;break}else{k=c[g+20>>2]|0;j=k+120|0;c[j>>2]=(c[j>>2]|0)+-1;k=k+136|0;c[g+16>>2]=c[k>>2];c[k>>2]=g;g=f;break}}k=c[g+12>>2]|0;do if(b[g+28>>1]&2){f=k+8|0;e=g+36|0;h=c[e>>2]|0;if((c[f>>2]|0)==(g|0))c[f>>2]=h;i=c[g+32>>2]|0;j=(i|0)==0;if(j){c[k+4>>2]=h;f=h}else{c[i+36>>2]=h;f=c[e>>2]|0}if(f|0){c[f+32>>2]=i;break}c[k>>2]=i;if(j)a[k+33>>0]=2}while(0);j=k+12|0;c[j>>2]=(c[j>>2]|0)+-1;cb[c[29440>>2]&255](c[k+44>>2]|0,c[g>>2]|0,1);g=0}while(0);f=c[d+88>>2]|0;if(!f)return g|0;do{c[f+16>>2]=1;f=c[f+44>>2]|0}while((f|0)!=0);return g|0}function Cf(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;o=Ra;Ra=Ra+176|0;m=o+128|0;n=o;e=c[a>>2]|0;d=(e|0)==0;if(!d){a=e;do{l=a;a=c[a+32>>2]|0;c[l+16>>2]=a}while((a|0)!=0);a=n;b=a+128|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));if(d)a=0;else{l=m+16|0;j=m+16|0;k=n+124|0;do{h=e+16|0;a=e;e=c[h>>2]|0;c[h>>2]=0;h=0;while(1){i=n+(h<<2)|0;b=c[i>>2]|0;if(!b){b=9;break}d=m;g=b;a:while(1){f=c[g+24>>2]|0;b=d;while(1){b=b+16|0;if(f>>>0<(c[a+24>>2]|0)>>>0)break;c[b>>2]=a;b=c[a+16>>2]|0;if(!b){b=a;a=g;break a}else{d=a;a=b;b=d}}c[b>>2]=g;b=c[g+16>>2]|0;if(!b){b=g;break}else{d=g;g=b}}c[b+16>>2]=a;a=c[l>>2]|0;c[i>>2]=0;h=h+1|0;if(h>>>0>=31){b=16;break}}if((b|0)==9)c[i>>2]=a;else if((b|0)==16?(0,(h|0)==31):0){b=m;f=c[k>>2]|0;b:while(1){d=c[f+24>>2]|0;while(1){b=b+16|0;if(d>>>0<(c[a+24>>2]|0)>>>0)break;c[b>>2]=a;b=c[a+16>>2]|0;if(!b){b=a;a=f;break b}else{i=a;a=b;b=i}}c[b>>2]=f;b=c[f+16>>2]|0;if(!b){b=f;break}else{i=f;f=b;b=i}}c[b+16>>2]=a;c[k>>2]=c[j>>2]}}while((e|0)!=0);a=c[n>>2]|0}}else{a=n;b=a+128|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));a=0}g=m+16|0;f=1;do{b=c[n+(f<<2)>>2]|0;if(b)if(!a)a=b;else{d=m;c:while(1){e=c[a+24>>2]|0;while(1){d=d+16|0;if(e>>>0<(c[b+24>>2]|0)>>>0)break;c[d>>2]=b;d=c[b+16>>2]|0;if(!d){d=b;break c}else{l=b;b=d;d=l}}c[d>>2]=a;d=c[a+16>>2]|0;if(!d){d=a;a=b;break}else{l=a;a=d;d=l}}c[d+16>>2]=a;a=c[g>>2]|0}f=f+1|0}while((f|0)!=32);Ra=o;return a|0}function Df(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=c[d+12>>2]|0;m=k+12|0;c[m>>2]=(c[m>>2]|0)+-1;m=d+30|0;n=(b[m>>1]|0)+-1<<16>>16;b[m>>1]=n;if(n<<16>>16)return;m=b[d+28>>1]|0;if(m&1){if(!(a[k+32>>0]|0))return;cb[c[29440>>2]&255](c[k+44>>2]|0,c[d>>2]|0,0);return}n=k+8|0;e=c[n>>2]|0;j=d+36|0;g=c[j>>2]|0;if((e|0)==(d|0)){c[n>>2]=g;l=g}else l=e;i=d+32|0;f=c[i>>2]|0;h=(f|0)==0;if(h){c[k+4>>2]=g;e=g}else{c[f+36>>2]=g;e=c[j>>2]|0}do if(!e){c[k>>2]=f;if(h){a[k+33>>0]=2;c[j>>2]=0;c[i>>2]=0;e=k;g=16;break}else{c[j>>2]=0;e=k;g=15;break}}else{c[e+32>>2]=f;f=c[k>>2]|0;c[j>>2]=0;c[i>>2]=f;if(!f){e=k;g=16}else{e=k;g=15}}while(0);if((g|0)==15)c[f+36>>2]=d;else if((g|0)==16){c[k+4>>2]=d;if(a[k+32>>0]|0)a[k+33>>0]=1}c[e>>2]=d;if(!((m&8)==0&(l|0)==0))return;c[n>>2]=d;return}function Ef(b,e,f){b=b|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;p=Ra;Ra=Ra+32|0;l=p+16|0;n=p;o=p+8|0;a[e>>0]=0;i=Xa[c[(c[b>>2]|0)+24>>2]&255](b,n)|0;h=n;g=c[h>>2]|0;h=c[h+4>>2]|0;if((i|0)!=0|((h|0)<0|(h|0)==0&g>>>0<16)){e=i;Ra=p;return e|0}m=Sv(g|0,h|0,-16,-1)|0;g=L()|0;g=_a[c[(c[b>>2]|0)+8>>2]&127](b,l,4,m,g)|0;if(g|0){e=g;Ra=p;return e|0}i=l+1|0;j=l+2|0;k=l+3|0;m=d[i>>0]<<16|d[l>>0]<<24|d[j>>0]<<8|d[k>>0];if(m>>>0>=f>>>0){e=0;Ra=p;return e|0}h=n;g=c[h>>2]|0;h=c[h+4>>2]|0;f=Sv(g|0,h|0,-16,-1)|0;q=L()|0;if((m|0)==0|((q|0)<0|(q|0)==0&f>>>0>>0)){q=0;Ra=p;return q|0}q=Sv(g|0,h|0,-12,-1)|0;g=L()|0;g=_a[c[(c[b>>2]|0)+8>>2]&127](b,l,4,q,g)|0;if(g|0){q=g;Ra=p;return q|0}g=d[i>>0]<<16|d[l>>0]<<24|d[j>>0]<<8|d[k>>0];q=n;q=Sv(c[q>>2]|0,c[q+4>>2]|0,-8,-1)|0;h=L()|0;h=_a[c[(c[b>>2]|0)+8>>2]&127](b,o,8,q,h)|0;if(h|0){q=h;Ra=p;return q|0}if(Lu(o,32352,8)|0){q=0;Ra=p;return q|0}q=n;h=c[q>>2]|0;q=c[q+4>>2]|0;o=Tv(-16,-1,m|0,0)|0;q=Sv(o|0,L()|0,h|0,q|0)|0;h=L()|0;h=_a[c[(c[b>>2]|0)+8>>2]&127](b,e,m,q,h)|0;if(h|0){q=h;Ra=p;return q|0}h=0;do{g=g-(a[e+h>>0]|0)|0;h=h+1|0}while((h|0)!=(m|0));a[e+((g|0)==0?m:0)>>0]=0;q=0;Ra=p;return q|0}function Ff(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=d+100|0;c[e>>2]=(c[e>>2]|0)+1;e=c[d+88>>2]|0;if(e|0)do{c[e+16>>2]=1;e=c[e+44>>2]|0}while((e|0)!=0);j=c[d+212>>2]|0;k=j+44|0;if(!(c[k>>2]|0))return;e=c[j>>2]|0;if(e|0)do{h=e;e=c[e+32>>2]|0;if(c[h+24>>2]|0){i=c[h+12>>2]|0;f=i+8|0;g=h+36|0;d=c[g>>2]|0;if((c[f>>2]|0)==(h|0))c[f>>2]=d;f=(e|0)==0;if(f)c[i+4>>2]=d;else{c[e+36>>2]=d;d=c[g>>2]|0}if(!d){c[i>>2]=e;if(f)a[i+33>>0]=2}else c[d+32>>2]=e;g=h+28|0;b[g>>1]=b[g>>1]&-16|1;if((b[h+30>>1]|0)==0?a[i+32>>0]|0:0)cb[c[29440>>2]&255](c[i+44>>2]|0,c[h>>2]|0,0)}}while((e|0)!=0);if((c[j+12>>2]|0)!=0?(l=Ya[c[29436>>2]&127](c[k>>2]|0,1,0)|0,(l|0)!=0):0){gw(c[l>>2]|0,0,c[j+24>>2]|0)|0;e=2}else e=1;bb[c[29448>>2]&127](c[k>>2]|0,e);return}function Gf(e){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;p=Ra;Ra=Ra+48|0;o=p+32|0;g=p+16|0;f=p;k=c[e+52>>2]|0;l=c[e+56>>2]|0;m=d[e+9>>0]|0;n=l+m|0;q=d[n>>0]|0;j=q>>>3;h=j&255;a[e+8>>0]=h;j=4-(j<<2)|0;a[e+10>>0]=j;i=e+76|0;c[i>>2]=120;switch((q&247)<<24>>24){case 5:{a[e+2>>0]=1;f=e+3|0;if(!(h<<24>>24)){a[f>>0]=0;c[i>>2]=121;f=181}else{a[f>>0]=1;f=180}c[e+80>>2]=f;b[e+14>>1]=b[k+28>>1]|0;f=k+30|0;break}case 2:{a[e+2>>0]=0;a[e+3>>0]=0;c[e+80>>2]=179;b[e+14>>1]=b[k+24>>1]|0;f=k+26|0;break}default:{c[f>>2]=32306;c[f+4>>2]=65035;c[f+8>>2]=31517;Db(11,32001,f);c[g>>2]=32306;c[g+4>>2]=65185;c[g+8>>2]=31517;Db(11,32001,g);q=11;Ra=p;return q|0}}b[e+16>>1]=b[f>>1]|0;a[e+11>>0]=a[k+21>>0]|0;q=c[k+32>>2]|0;b[e+26>>1]=q+65535;a[e+12>>0]=0;j=j&252;b[e+18>>1]=m+8+j;c[e+64>>2]=n+j+8;c[e+60>>2]=l+(c[k+36>>2]|0);c[e+68>>2]=l+j;n=n+3|0;n=(d[n>>0]|0)<<8|(d[n+1>>0]|0);b[e+24>>1]=n;if(n>>>0>(((q+-8|0)>>>0)/6|0)>>>0){c[o>>2]=32306;c[o+4>>2]=65199;c[o+8>>2]=31517;Db(11,32001,o);q=11;Ra=p;return q|0}c[e+20>>2]=-1;a[e>>0]=1;if(0==0?(c[(c[k+4>>2]|0)+32>>2]&2097152|0)==0:0){q=0;Ra=p;return q|0}q=Hf(e)|0;Ra=p;return q|0}function Hf(f){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;r=Ra;Ra=Ra+32|0;q=r+16|0;p=r;k=e[f+18>>1]|0;m=f+24|0;l=b[m>>1]|0;n=((l&65535)<<1)+k|0;h=c[(c[f+52>>2]|0)+36>>2]|0;i=c[f+56>>2]|0;o=((a[f+8>>0]|0)==0?-5:-4)+h|0;if(!(l<<16>>16)){q=0;Ra=r;return q|0}j=f+76|0;g=0;while(1){l=i+((g<<1)+k)|0;l=d[l>>0]<<8|d[l+1>>0];if(l>>>0>>0|(l|0)>(o|0)){f=5;break}g=g+1|0;if((l+((Xa[c[j>>2]&255](f,i+l|0)|0)&65535)|0)>(h|0)){f=7;break}if(g>>>0>=(e[m>>1]|0)>>>0){g=0;f=8;break}}if((f|0)==5){c[p>>2]=32306;c[p+4>>2]=65148;c[p+8>>2]=31517;Db(11,32001,p);q=11;Ra=r;return q|0}else if((f|0)==7){c[q>>2]=32306;c[q+4>>2]=65153;c[q+8>>2]=31517;Db(11,32001,q);q=11;Ra=r;return q|0}else if((f|0)==8){Ra=r;return g|0}return 0}function If(b,f){b=b|0;f=f|0;var g=0,h=0,i=0,j=0;i=f+(d[b+10>>0]|0)|0;j=a[i>>0]|0;h=j&255;if(j<<24>>24<0){g=0;h=h&127;do{g=g+1|0;j=a[i+g>>0]|0;h=h<<7|j&127}while(j<<24>>24<0&g>>>0<8);i=i+g|0;j=h}else j=h;if(!(a[b+2>>0]|0))g=i+1|0;else{g=1;do{h=g;g=g+1|0}while((a[i+h>>0]|0)<0&g>>>0<10);g=i+g|0}h=e[b+14>>1]|0;if(j>>>0>h>>>0){i=e[b+16>>1]|0;b=(((j-i|0)>>>0)%(((c[(c[b+52>>2]|0)+36>>2]|0)+-4|0)>>>0)|0)+i|0;f=(g-f&65535)+4+(b>>>0>h>>>0?i:b)|0;f=f&65535;return f|0}else{f=g-f+j|0;f=f>>>0>4?f:4;f=f&65535;return f|0}return 0}function Jf(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=a[f>>0]|0;i=n&255;if(n<<24>>24<0){h=0;i=i&127;do{h=h+1|0;n=a[f+h>>0]|0;i=i<<7|n&127}while(n<<24>>24<0&h>>>0<8);n=f+h|0}else n=f;h=n+1|0;m=a[h>>0]|0;j=m&255;do if(m<<24>>24<0){j=cw(j|0,0,7)|0;L()|0;h=n+2|0;m=a[h>>0]|0;j=j&16256|m&127;if(m<<24>>24<=-1){k=2;h=1;l=0;while(1){if(h>>>0>6){m=10;break}j=cw(j|0,l|0,7)|0;l=L()|0;h=k+1|0;m=a[n+h>>0]|0;j=j|m&127;if(m<<24>>24>-1){m=11;break}else{m=k;k=h;h=m}}if((m|0)==10){m=cw(j|0,l|0,8)|0;l=L()|0;j=n+k+1|0;h=j;j=m|(d[j>>0]|0);break}else if((m|0)==11){h=n+h|0;break}}else l=0}else l=0;while(0);k=h+1|0;h=g;c[h>>2]=j;c[h+4>>2]=l;c[g+12>>2]=i;c[g+8>>2]=k;h=b[e+14>>1]|0;if(i>>>0>(h&65535)>>>0){Nf(h,b[e+16>>1]|0,c[(c[e+52>>2]|0)+36>>2]|0,f,g);return}else{f=k-f+i|0;b[g+18>>1]=(f&65532|0)==0?4:f&65535;b[g+16>>1]=i;return}}function Kf(b,c){b=b|0;c=c|0;var d=0;b=4;do{d=b;b=b+1|0}while((a[c+d>>0]|0)<0&b>>>0<13);return b&65535|0}function Lf(a,d,e){a=a|0;d=d|0;e=e|0;d=((Of(d+4|0,e)|0)&255)+4&65535;b[e+18>>1]=d;c[e+12>>2]=0;b[e+16>>1]=0;c[e+8>>2]=0;return}function Mf(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=f+(d[e+10>>0]|0)|0;i=a[k>>0]|0;j=i&255;if(i<<24>>24<0){h=0;i=j&127;do{h=h+1|0;j=a[k+h>>0]|0;i=i<<7|j&127}while(j<<24>>24<0&h>>>0<8);h=k+h|0;j=i}else h=k;h=h+1|0;i=g;c[i>>2]=j;c[i+4>>2]=0;c[g+12>>2]=j;c[g+8>>2]=h;i=b[e+14>>1]|0;if(j>>>0>(i&65535)>>>0){Nf(i,b[e+16>>1]|0,c[(c[e+52>>2]|0)+36>>2]|0,f,g);return}else{f=h-f+j|0;b[g+18>>1]=(f&65532|0)==0?4:f&65535;b[g+16>>1]=j;return}}function Nf(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=d&65535;e=((((c[g+12>>2]|0)-h|0)>>>0)%((e+-4|0)>>>0)|0)+h|0;a=(e|0)>(a&65535|0);b[g+16>>1]=a?d:e&65535;b[g+18>>1]=4-f+((c[g+8>>2]|0)+(a?h:e&65535));return}function Of(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=a[b>>0]|0;g=f&255;do if(g&128){f=d[b+1>>0]|0;if(!(f&128)){l=2;j=0;f=g<<7&16256|f;break}l=d[b+2>>0]|0;g=(g<<14|l)&2080895;if(!(l&128)){l=3;j=0;f=g|f<<7&16256;break}l=d[b+3>>0]|0;f=(f<<14|l)&2080895;if(!(l&128)){l=4;j=0;f=f|g<<7;break}k=a[b+4>>0]|0;l=k&255;h=g<<14|l;if(!(l&128)){l=5;j=g>>>18;f=h|f<<7;break}j=f|g<<7;l=d[b+5>>0]|0;i=f<<14|l;if(!(l&128)){l=6;j=j>>>18;f=i|h<<7&266354560;break}l=d[b+6>>0]|0;f=h<<14|l;if(!(l&128)){l=7;j=j>>>11;f=f&-266354561|i<<7&266354560;break}g=f&2080895;l=d[b+7>>0]|0;f=i<<14|l;if(!(l&128)){l=8;j=j>>>4;f=f&-266354561|g<<7;break}else{l=9;j=(k&120)>>>3|j<<4;f=f<<8&532709120|g<<15|(d[b+8>>0]|0);break}}else{l=1;j=0;f=f&255}while(0);c[e>>2]=f;c[e+4>>2]=j;return l|0}function Pf(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;n=Ra;Ra=Ra+16|0;l=n+8|0;k=n;j=n+12|0;if(!b){b=0;Ra=n;return b|0}if(g){i=b+4|0;h=c[i>>2]|0;h=Xa[c[(c[h>>2]|0)+28>>2]&255](h,4)|0;if(!h){h=b+43|0;if(!(a[h>>0]|0))a[h>>0]=1;h=Qf(b,d,0,0,0,e,f,g,0,0)|0;if(!h){c[j>>2]=-1;h=c[i>>2]|0;d=c[h>>2]|0;if((d|0)!=0?(Ya[c[d+40>>2]&127](h,10,j)|0,(c[j>>2]|0)==1):0){j=b+16|0;i=c[j+4>>2]|0;if((i|0)>-1|(i|0)==-1&(c[j>>2]|0)>>>0>4294967295){d=b+8|0;h=c[d>>2]|0;h=Xa[c[(c[h>>2]|0)+24>>2]&255](h,k)|0;j=c[k+4>>2]|0;if((h|0)==0&((j|0)>0|(j|0)==0&(c[k>>2]|0)>>>0>0)){h=c[d>>2]|0;h=Ya[c[(c[h>>2]|0)+16>>2]&127](h,0,0)|0}if(h|0){c[l>>2]=c[b+108>>2];Db(h,32326,l)}h=0}else h=0}else h=1;j=0}else{j=h;h=0}}else{j=h;h=0}}else{j=0;h=0}g=b+43|0;d=a[g>>0]|0;if(d<<24>>24!=2?(a[b+50>>0]|0)==0:0)m=27;else{i=b+24|0;if((c[i>>2]|0)>0){e=b+32|0;d=0;do{f=c[(c[e>>2]|0)+(d<<2)>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{l=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[(c[e>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)<(c[i>>2]|0));d=a[g>>0]|0}if(d<<24>>24!=2)m=27}if((m|0)==27){m=c[b+4>>2]|0;Xa[c[(c[m>>2]|0)+64>>2]&255](m,h)|0}d=c[b+8>>2]|0;e=c[d>>2]|0;if(e|0){Wa[c[e+4>>2]&127](d)|0;c[d>>2]=0}if(h|0){m=c[b>>2]|0;Ya[c[m+28>>2]&127](m,c[b+108>>2]|0,0)|0}h=c[b+32>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{m=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](b);b=j;Ra=n;return b|0}else{m=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);b=j;Ra=n;return b|0}return 0}function Qf(f,g,h,i,j,k,l,m,n,o){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|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,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;la=Ra;Ra=Ra+144|0;r=la+120|0;fa=la;Z=la+104|0;ia=la+132|0;c[ia>>2]=0;if(a[f+46>>0]|0){h=8;Ra=la;return h|0}ka=f+43|0;if((a[ka>>0]|0)==0?(p=c[f+4>>2]|0,p=Za[c[(c[p>>2]|0)+56>>2]&127](p,1,1,10)|0,p|0):0){h=p;Ra=la;return h|0}ja=f+45|0;a[ja>>0]=1;a:do if(!h){p=0;ea=14}else{p=f+4|0;b:do if(!i){if(!(a[ka>>0]|0)){q=c[p>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,0,1,10)|0;ea=12}}else while(1){if(a[ka>>0]|0)break b;q=c[p>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,0,1,10)|0;if((q|0)!=5){ea=12;break b}if(!(Wa[i&127](j)|0)){p=0;i=0;ea=14;break a}}while(0);if((ea|0)==12)switch(q|0){case 5:{p=0;i=0;ea=14;break a}case 0:break;default:{ha=h;break a}}a[f+44>>0]=1;p=h;ea=14}while(0);if((ea|0)==14){ha=p;q=hf(f,ia)|0}c:do if(!q){ga=f+68|0;s=c[ga>>2]|0;aa=e[f+66>>1]|0;aa=aa<<16&65536|aa&65024;if(!((s|0)==0|(aa|0)==(l|0))){c[r>>2]=32306;c[r+4>>2]=61939;c[r+8>>2]=31517;Db(11,32001,r);q=11;break}da=f+32|0;S=c[c[da>>2]>>2]|0;ca=S+96|0;d:do if((c[ca>>2]|0)>>>0>>0){_=f+72|0;$=c[_>>2]|0;ba=f+4|0;p=S+104|0;l=c[p>>2]|0;e:do if(s>>>0>l>>>0){f:do if(!i)if(!(a[ka>>0]|0)){q=c[ba>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,4,1,10)|0;i=0}else{i=0;ea=28}else while(1){if(a[ka>>0]|0){ea=28;break f}q=c[ba>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,4,1,10)|0;if((q|0)!=5)break f;if(!(Wa[i&127](j)|0)){i=0;q=5;break e}}while(0);if((ea|0)==28){c[p>>2]=s;q=0;l=s;break}switch(q|0){case 5:{i=0;break e}case 0:break;default:break d}W=a[ka>>0]|0;c[p>>2]=s;if(!(W<<24>>24)){q=c[ba>>2]|0;Za[c[(c[q>>2]|0)+56>>2]&127](q,4,1,9)|0;q=0;l=s}else{q=0;l=s}}else{q=0;l=s}while(0);p=S+108|0;r=c[p>>2]|0;g:do if(l>>>0>r>>>0){h:do if(!i)if(!(a[ka>>0]|0)){q=c[ba>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,5,1,10)|0}else ea=161;else while(1){if(a[ka>>0]|0){ea=161;break h}q=c[ba>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,5,1,10)|0;if((q|0)!=5)break h;if(!(Wa[i&127](j)|0)){i=0;q=5;l=r;break g}}while(0);if((ea|0)==161){c[p>>2]=-1;q=0;break}switch(q|0){case 5:{i=0;l=r;break g}case 0:break;default:break d}W=a[ka>>0]|0;c[p>>2]=-1;if(!(W<<24>>24)){q=c[ba>>2]|0;Za[c[(c[q>>2]|0)+56>>2]&127](q,5,1,9)|0;q=0}else q=0}while(0);p=S+112|0;r=c[p>>2]|0;i:do if(l>>>0>r>>>0){j:do if(!i)if(!(a[ka>>0]|0)){q=c[ba>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,6,1,10)|0}else ea=173;else while(1){if(a[ka>>0]|0){ea=173;break j}q=c[ba>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,6,1,10)|0;if((q|0)!=5)break j;if(!(Wa[i&127](j)|0)){i=0;q=5;l=r;break i}}while(0);if((ea|0)==173){c[p>>2]=-1;q=0;break}switch(q|0){case 5:{i=0;l=r;break i}case 0:break;default:break d}W=a[ka>>0]|0;c[p>>2]=-1;if(!(W<<24>>24)){q=c[ba>>2]|0;Za[c[(c[q>>2]|0)+56>>2]&127](q,6,1,9)|0;q=0}else q=0}while(0);p=S+116|0;r=c[p>>2]|0;k:do if(l>>>0>r>>>0){l:do if(!i)if(!(a[ka>>0]|0)){q=c[ba>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,7,1,10)|0}else ea=185;else while(1){if(a[ka>>0]|0){ea=185;break l}q=c[ba>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,7,1,10)|0;if((q|0)!=5)break l;if(!(Wa[i&127](j)|0)){i=0;q=5;l=r;break k}}while(0);if((ea|0)==185){c[p>>2]=-1;q=0;break}switch(q|0){case 5:{i=0;l=r;break k}case 0:break;default:break d}W=a[ka>>0]|0;c[p>>2]=-1;if(!(W<<24>>24)){q=c[ba>>2]|0;Za[c[(c[q>>2]|0)+56>>2]&127](q,7,1,9)|0;q=0}else q=0}while(0);m:do if((c[ca>>2]|0)>>>0>>0){q=c[ca>>2]|0;P=c[ga>>2]|0;Q=(P+33|0)>>>12;p=(P<<1)+28+(Q*20|0)|0;W=pb(p,0)|0;if(!W){q=7;break c}gw(W|0,0,p|0)|0;R=W+4|0;c[R>>2]=Q+1;N=pb((P>>>0<4096?P:4096)<<1,0)|0;O=(N|0)==0;p=(q+34|0)>>>12;n:do if(p>>>0>Q>>>0|O)q=O?7:0;else{H=Z+4|0;I=f+24|0;J=Z+8|0;K=W+8|0;M=fa+4|0;while(1){if((c[I>>2]|0)>(p|0)?(T=c[(c[da>>2]|0)+(p<<2)>>2]|0,c[H>>2]=T,(T|0)!=0):0)q=T;else{q=kf(f,p,H)|0;if(q|0)break;q=c[H>>2]|0}r=q+16384|0;c[Z>>2]=r;if(!p){q=q+136|0;c[H>>2]=q;s=0}else s=(p<<12)+-34|0;c[H>>2]=q;G=q;E=(p|0)==(Q|0)?P-s|0:r-G>>2;F=K+((c[R>>2]|0)*20|0)+(s<<1)|0;D=s+1|0;c[J>>2]=D;if((E|0)>0){r=0;do{b[F+(r<<1)>>1]=r;r=r+1|0}while((r|0)!=(E|0));v=fa;w=v+104|0;do{c[v>>2]=0;v=v+4|0}while((v|0)<(w|0));C=0;do{t=F+(C<<1)|0;if(!(C&1)){u=0;r=1;s=M}else{r=1;A=0;s=M;while(1){B=c[s>>2]|0;z=c[fa+(A<<3)>>2]|0;u=(r|0)>0;s=(z|0)>0;if(u|s){w=0;y=0;v=0;while(1){do if(s){s=B+(v<<1)|0;if(u?(U=t+(w<<1)|0,(c[q+(e[s>>1]<<2)>>2]|0)>>>0>=(c[q+(e[U>>1]<<2)>>2]|0)>>>0):0){s=U;ea=57;break}u=v+1|0}else{s=t+(w<<1)|0;ea=57}while(0);if((ea|0)==57){ea=0;u=v;w=w+1|0}v=b[s>>1]|0;s=c[q+((v&65535)<<2)>>2]|0;x=y+1|0;b[N+(y<<1)>>1]=v;if((u|0)<(z|0))v=u+((c[q+(e[B+(u<<1)>>1]<<2)>>2]|0)==(s|0)&1)|0;else v=u;u=(w|0)<(r|0);s=(v|0)<(z|0);if(!(u|s)){r=x;break}else y=x}}else r=0;ew(B|0,N|0,r<<1|0)|0;t=A+1|0;s=fa+(t<<3)+4|0;if(!(1<>2]=t;c[fa+(u<<3)>>2]=r;C=C+1|0}while((C|0)!=(E|0));s=u+1|0;if(s>>>0<13)ea=64;else q=r}else{v=fa;w=v+104|0;do{c[v>>2]=0;v=v+4|0}while((v|0)<(w|0));r=0;s=1;t=0;ea=64}if((ea|0)==64){ea=0;do{if(1<>2]|0;A=c[fa+(s<<3)>>2]|0;v=(r|0)>0;u=(A|0)>0;if(v|u){x=0;z=0;w=0;while(1){do if(u){u=B+(w<<1)|0;if(v?(V=t+(x<<1)|0,(c[q+(e[u>>1]<<2)>>2]|0)>>>0>=(c[q+(e[V>>1]<<2)>>2]|0)>>>0):0){u=V;ea=73;break}v=w+1|0}else{u=t+(x<<1)|0;ea=73}while(0);if((ea|0)==73){ea=0;v=w;x=x+1|0}C=b[u>>1]|0;u=c[q+((C&65535)<<2)>>2]|0;y=z+1|0;b[N+(z<<1)>>1]=C;if((v|0)<(A|0))w=v+((c[q+(e[B+(v<<1)>>1]<<2)>>2]|0)==(u|0)&1)|0;else w=v;v=(x|0)<(r|0);u=(w|0)<(A|0);if(!(v|u)){r=y;break}else z=y}}else r=0;ew(B|0,N|0,r<<1|0)|0;t=B}s=s+1|0}while((s|0)!=13);q=r}c[K+(p*20|0)+16>>2]=D;c[K+(p*20|0)+12>>2]=q;c[K+(p*20|0)+4>>2]=F;c[K+(p*20|0)+8>>2]=G;if(p>>>0>>0)p=p+1|0;else{q=0;break n}}}while(0);do if(!O)if(!(c[7324]|0)){ab[c[29344>>2]&127](N);break}else{V=Wa[c[29352>>2]&127](N)|0;c[14978]=(c[14978]|0)-V;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](N);break}while(0);if(q|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](W);p=0;l=0;ea=129;break}else{p=Wa[c[29352>>2]&127](W)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](W);p=0;l=0;ea=129;break}o:do if(!i){if(a[ka>>0]|0)break;X=c[ba>>2]|0;X=Za[c[(c[X>>2]|0)+56>>2]&127](X,3,1,10)|0;ea=95}else while(1){if(a[ka>>0]|0)break o;p=c[ba>>2]|0;p=Za[c[(c[p>>2]|0)+56>>2]&127](p,3,1,10)|0;if((p|0)!=5){X=p;ea=95;break o}if(!(Wa[i&127](j)|0)){p=W;l=W;break m}}while(0);if((ea|0)==95?X|0:0){q=X;p=W;l=W;ea=129;break}F=c[ca>>2]|0;c[S+128>>2]=l;E=f+8|0;p=c[E>>2]|0;G=k>>>2&3;H=(G|0)==0;if(!H?(Y=Xa[c[(c[p>>2]|0)+20>>2]&255](p,G)|0,(Y|0)!=0):0)q=Y;else ea=98;p:do if((ea|0)==98){k=Yv($|0,0,aa|0,0)|0;Y=L()|0;q=fa;c[q>>2]=k;c[q+4>>2]=Y;q=c[ba>>2]|0;q=Xa[c[(c[q>>2]|0)+24>>2]&255](q,Z)|0;if(q|0)break;Y=Z;X=c[Y+4>>2]|0;Z=fa;k=c[Z+4>>2]|0;do if((X|0)<(k|0)|((X|0)==(k|0)?(c[Y>>2]|0)>>>0<(c[Z>>2]|0)>>>0:0)){p=c[ba>>2]|0;q=c[p>>2]|0;if(!q)break;Ya[c[q+40>>2]&127](p,5,fa)|0}while(0);C=g+264|0;D=aa|24;p=c[R>>2]|0;q:do if((p|0)>0){q=0;while(1){B=c[W>>2]|0;r=-1;A=p;while(1){z=A;A=A+-1|0;u=W+8+(A*20|0)|0;s=c[u>>2]|0;v=c[W+8+(A*20|0)+12>>2]|0;r:do if((s|0)<(v|0)){w=c[W+8+(A*20|0)+8>>2]|0;x=c[W+8+(A*20|0)+4>>2]|0;while(1){t=b[x+(s<<1)>>1]|0;y=c[w+((t&65535)<<2)>>2]|0;if(y>>>0>B>>>0)break;s=s+1|0;c[u>>2]=s;if((s|0)>=(v|0)){s=q;break r}}if(y>>>0>=r>>>0){s=q;break}s=(c[W+8+(A*20|0)+16>>2]|0)+(t&65535)|0;r=y}else s=q;while(0);if((z|0)<=1)break;else q=s}c[W>>2]=r;if((r|0)==-1)break q;if(c[C>>2]|0)break;if(!(s>>>0<=F>>>0|s>>>0>l>>>0|r>>>0>$>>>0)){Z=Yv(s+-1|0,0,D|0,0)|0;Z=Sv(Z|0,L()|0,56,0)|0;q=L()|0;Y=c[E>>2]|0;q=_a[c[(c[Y>>2]|0)+8>>2]&127](Y,m,aa,Z,q)|0;if(q|0)break p;Z=Yv(r+-1|0,0,aa|0,0)|0;q=L()|0;Y=c[ba>>2]|0;q=_a[c[(c[Y>>2]|0)+12>>2]&127](Y,m,aa,Z,q)|0;if(q|0)break p;p=c[R>>2]|0}if((p|0)>0)q=s;else{ea=105;break q}}q=(a[g+81>>0]|0)==0?9:7;break p}else ea=105;while(0);if((ea|0)==105)c[W>>2]=-1;do if((l|0)==(c[(c[c[da>>2]>>2]|0)+16>>2]|0)){ea=Yv(c[_>>2]|0,0,aa|0,0)|0;q=L()|0;m=c[ba>>2]|0;q=Ya[c[(c[m>>2]|0)+16>>2]&127](m,ea,q)|0;if(q|0)break p;p=c[ba>>2]|0;if(H)break;q=Xa[c[(c[p>>2]|0)+20>>2]&255](p,G)|0;if(q|0)break p}while(0);c[ca>>2]=l;q=0}while(0);if(a[ka>>0]|0){p=W;l=W;ea=129;break}p=c[ba>>2]|0;Za[c[(c[p>>2]|0)+56>>2]&127](p,3,1,9)|0;p=W;l=W;ea=129}else{p=0;l=0;ea=129}while(0);if((ea|0)==129)if((q|0)!=5){u=l;ea=131;break}q=0;u=l;ea=131}else{q=0;p=0;u=0;ea=131}while(0);do if((ea|0)==131){if((ha|0)!=0&(q|0)==0)if((c[ca>>2]|0)>>>0>=(c[ga>>2]|0)>>>0)if((ha|0)>1){Fb(4,fa);t=f+4|0;s:do if(!i)if(!(a[ka>>0]|0)){q=c[t>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,4,4,10)|0;ea=141}else ea=142;else while(1){if(a[ka>>0]|0){ea=142;break s}q=c[t>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,4,4,10)|0;if((q|0)!=5){ea=141;break s}if(!(Wa[i&127](j)|0)){q=5;break}}while(0);if((ea|0)==141)if(!q)ea=142;if((ea|0)==142){if((ha|0)==3){s=c[fa>>2]|0;i=c[da>>2]|0;q=c[i>>2]|0;l=q+96|0;ea=f+84|0;fa=f+112|0;c[fa>>2]=(c[fa>>2]|0)+1;c[ga>>2]=0;fa=ea+1|0;v=ea+2|0;r=ea+3|0;w=(d[fa>>0]<<16|d[ea>>0]<<24|d[v>>0]<<8|d[r>>0])+1|0;a[ea>>0]=w>>>24;a[fa>>0]=w>>>16;a[v>>0]=w>>>8;a[r>>0]=w;c[f+88>>2]=s;i=c[i>>2]|0;r=f+52|0;a[f+64>>0]=1;c[r>>2]=3007e3;w=c[r+4>>2]|0;v=w+6014e3+(c[r+8>>2]|0)|0;w=w+3007e3+(c[r+12>>2]|0)+v|0;v=w+v|0;w=w+(c[r+20>>2]|0)+v|0;v=v+(c[r+24>>2]|0)+w|0;w=w+(c[r+28>>2]|0)+v|0;v=v+(c[r+32>>2]|0)+w|0;c[f+92>>2]=v;c[f+96>>2]=w+s+v;v=i+48|0;s=r;w=v+48|0;do{a[v>>0]=a[s>>0]|0;v=v+1|0;s=s+1|0}while((v|0)<(w|0));if((a[ka>>0]|0)!=2){fa=c[t>>2]|0;ab[c[(c[fa>>2]|0)+60>>2]&127](fa)}v=i;s=r;w=v+48|0;do{a[v>>0]=a[s>>0]|0;v=v+1|0;s=s+1|0}while((v|0)<(w|0));c[l>>2]=0;c[q+128>>2]=0;c[q+104>>2]=0;c[q+108>>2]=-1;c[q+112>>2]=-1;c[q+116>>2]=-1;q=c[f+8>>2]|0;q=Ya[c[(c[q>>2]|0)+16>>2]&127](q,0,0)|0}else q=0;if(!(a[ka>>0]|0)){fa=c[t>>2]|0;Za[c[(c[fa>>2]|0)+56>>2]&127](fa,4,4,9)|0}}}else q=0;else q=5;if(p)if(!(c[7324]|0)){ab[c[29344>>2]&127](u);break}else{fa=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);break}}while(0);switch(q|0){case 0:case 5:break;default:break c}if(n|0)c[n>>2]=c[ga>>2];if(o)c[o>>2]=c[(c[c[da>>2]>>2]|0)+96>>2]}while(0);if(c[ia>>2]|0){v=f+52|0;w=v+48|0;do{c[v>>2]=0;v=v+4|0}while((v|0)<(w|0))}p=f+44|0;if(a[p>>0]|0){if(!(a[ka>>0]|0)){ia=c[f+4>>2]|0;Za[c[(c[ia>>2]|0)+56>>2]&127](ia,0,1,9)|0}a[p>>0]=0;c[f+104>>2]=0;a[f+47>>0]=0}if(!(a[ka>>0]|0)){ka=c[f+4>>2]|0;Za[c[(c[ka>>2]|0)+56>>2]&127](ka,1,1,9)|0}a[ja>>0]=0;h=(ha|0)==(h|0)|(q|0)!=0?q:5;Ra=la;return h|0}function Rf(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=e+44|0;if(c[l>>2]|0){n=0;return n|0}m=c[e+12>>2]|0;j=m+56|0;n=c[j>>2]|0;i=c[m+72>>2]|0;h=c[i+20>>2]|0;if((b[i+28>>1]&4)!=0?(c[h+24>>2]|0)>>>0>=(c[i+24>>2]|0)>>>0:0){if(c[h+96>>2]|0){f=Ve(i)|0;g=10}}else g=6;do if((g|0)==6){f=c[h+40>>2]|0;if(f|0){n=f;return n|0}if((c[h+148>>2]|0)>>>0>(c[h+152>>2]|0)>>>0){f=Wf(i)|0;g=10;break}else{f=Xf(i)|0;g=10;break}}while(0);if((g|0)==10?f|0:0){n=f;return n|0}f=n;g=2720;h=f+16|0;do{a[f>>0]=a[g>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));f=e+32|0;a[n+16>>0]=(c[f>>2]|0)>>>8;a[n+17>>0]=(c[f>>2]|0)>>>16;a[n+18>>0]=1;a[n+19>>0]=1;a[n+20>>0]=(c[f>>2]|0)-(c[e+36>>2]|0);a[n+21>>0]=64;a[n+22>>0]=32;a[n+23>>0]=32;f=n+24|0;h=f+76|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(h|0));h=c[j>>2]|0;i=m+52|0;j=c[i>>2]|0;k=d[m+9>>0]|0;if(!(b[j+22>>1]&12)){f=h+k|0;g=j+36|0}else{g=j+36|0;f=h+k|0;gw(f|0,0,(c[g>>2]|0)-k|0)|0}a[f>>0]=13;f=k+8|0;o=h+(k+1)|0;a[o>>0]=0;a[o+1>>0]=0;a[o+2>>0]=0;a[o+3>>0]=0;a[h+(k+7)>>0]=0;k=h+(k+5)|0;a[k>>0]=(c[g>>2]|0)>>>8;a[k+1>>0]=c[g>>2];c[m+20>>2]=(c[g>>2]|0)-f&65535;a[m+8>>0]=1;a[m+10>>0]=0;c[m+76>>2]=120;k=c[i>>2]|0;a[m+2>>0]=1;a[m+3>>0]=1;c[m+80>>2]=180;b[m+14>>1]=b[k+28>>1]|0;b[m+16>>1]=b[k+30>>1]|0;a[m+11>>0]=a[k+21>>0]|0;b[m+18>>1]=f;c[m+60>>2]=h+(c[g>>2]|0);c[m+64>>2]=h+f;c[m+68>>2]=h;a[m+12>>0]=0;b[m+26>>1]=(c[j+32>>2]|0)+65535;b[m+24>>1]=0;a[m>>0]=1;m=e+22|0;b[m>>1]=b[m>>1]|2;m=a[e+17>>0]|0;a[n+52>>0]=0;a[n+53>>0]=0;a[n+54>>0]=0;a[n+55>>0]=m;m=a[e+18>>0]|0;a[n+64>>0]=0;a[n+65>>0]=0;a[n+66>>0]=0;a[n+67>>0]=m;c[l>>2]=1;a[n+31>>0]=1;n=0;return n|0}function Sf(d){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,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=Ra;Ra=Ra+48|0;p=F+16|0;D=F;u=F+32|0;h=F+28|0;B=d+216|0;f=c[B>>2]|0;a:do if(!f){A=d+16|0;b:do if(!(a[A>>0]|0)){q=d+17|0;z=d+13|0;y=d+60|0;f=d+176|0;g=d+180|0;c:while(1){e=a[q>>0]|0;switch(e<<24>>24){case 0:case 5:break;default:{t=11;break c}}if(a[z>>0]|0){t=8;break}e=c[y>>2]|0;e=Xa[c[(c[e>>2]|0)+28>>2]&255](e,1)|0;switch(e|0){case 0:{t=7;break c}case 5:break;default:{t=136;break a}}if(!(Wa[c[f>>2]&127](c[g>>2]|0)|0)){e=5;t=138;break a}}if((t|0)==7){e=a[q>>0]|0;t=8}else if((t|0)==11)if((e&255)<2)t=12;else t=48;if((t|0)==8)if(e<<24>>24==5)t=48;else{a[q>>0]=1;t=12}if((t|0)==12){g=c[d>>2]|0;c[u>>2]=1;j=d+64|0;k=(c[c[j>>2]>>2]|0)!=0;if(k){e=0;f=1}else{e=Za[c[g+32>>2]&127](g,c[d+172>>2]|0,0,u)|0;f=c[u>>2]|0}if((f|0)!=0&(e|0)==0){c[h>>2]=0;e=c[y>>2]|0;e=Xa[c[(c[e>>2]|0)+36>>2]&255](e,h)|0;d:do if(!(c[h>>2]|e)){e=c[B>>2]|0;if(((e|0)!=0?(b[e+40>>1]|0)>-1:0)?(i=c[e+72>>2]|0,(i|0)!=0):0){e=i;t=22}else t=19;do if((t|0)==19){e=c[y>>2]|0;f=c[e>>2]|0;if(f){i=D;c[i>>2]=0;c[i+4>>2]=0;e=Xa[c[f+24>>2]&255](e,D)|0;if(!e){i=D;t=c[d+152>>2]|0;e=((t|0)<0)<<31>>31;i=Sv(c[i>>2]|0,c[i+4>>2]|0,-1,-1)|0;i=Sv(i|0,L()|0,t|0,e|0)|0;e=Wv(i|0,L()|0,t|0,e|0)|0;L()|0;t=22;break}else{f=0;break d}}else{l=0;t=25}}while(0);if((t|0)==22){f=d+156|0;if(e>>>0>(c[f>>2]|0)>>>0)c[f>>2]=e;else{l=e;t=25}}if((t|0)==25?!(k|(l|0)!=0):0){e=a[q>>0]|0;switch(e<<24>>24){case 0:case 1:case 5:{if(!(a[z>>0]|0)){n=c[y>>2]|0;if(Xa[c[(c[n>>2]|0)+28>>2]&255](n,2)|0){f=0;e=0;break d}e=a[q>>0]|0}if(e<<24>>24!=5)a[q>>0]=2;break}default:{}}Ya[c[g+28>>2]&127](g,c[d+172>>2]|0,0)|0;if(a[d+4>>0]|0){f=0;e=0;break}e=c[y>>2]|0;f=c[e>>2]|0;if(!f){f=0;e=0;break}if(!(a[z>>0]|0))Xa[c[f+32>>2]&255](e,1)|0;if((a[q>>0]|0)==5){f=0;e=0;break}a[q>>0]=1;f=0;e=0;break}e:do if(!k){c[D>>2]=2049;e=_a[c[g+24>>2]&127](g,c[d+172>>2]|0,c[j>>2]|0,2049,D)|0;switch(e|0){case 0:break e;case 14:break;default:{f=0;break d}}f=1;e=0;break d}while(0);a[D>>0]=0;e=c[j>>2]|0;e=_a[c[(c[e>>2]|0)+8>>2]&127](e,D,1,0,0)|0;e=(e|0)==522?0:e;if(!k?(m=c[j>>2]|0,n=c[m>>2]|0,n|0):0){Wa[c[n+4>>2]&127](m)|0;c[m>>2]=0}f=(a[D>>0]|0)!=0&1}else f=0;while(0)}else f=0;if(e|0){t=138;break a}if(f|0)t=48}do if((t|0)==48){if(a[d+14>>0]|0){e=776;t=138;break a}switch(a[q>>0]|0){case 0:case 1:case 2:case 3:case 5:{if((a[z>>0]|0)==0?(o=c[y>>2]|0,o=Xa[c[(c[o>>2]|0)+28>>2]&255](o,4)|0,o|0):0){e=o;t=138;break a}a[q>>0]=4;break}default:{}}h=d+64|0;e=c[h>>2]|0;f=c[e>>2]|0;if(!f){f=c[d>>2]|0;g=d+172|0;e=Za[c[f+32>>2]&127](f,c[g>>2]|0,0,D)|0;if((e|0)==0&(c[D>>2]|0)!=0){c[u>>2]=0;e=_a[c[f+24>>2]&127](f,c[g>>2]|0,c[h>>2]|0,2050,u)|0;if(!e)if(c[u>>2]&1){c[p>>2]=31984;c[p+4>>2]=55845;c[p+8>>2]=31517;Db(14,32001,p);e=c[h>>2]|0;f=c[e>>2]|0;if(!f)e=14;else{Wa[c[f+4>>2]&127](e)|0;c[e>>2]=0;e=14}}else e=0}g=c[h>>2]|0;f=c[g>>2]|0;if(!f)if((a[d+4>>0]|0)==0?(r=c[y>>2]|0,s=c[r>>2]|0,(s|0)!=0):0){if(!(a[z>>0]|0))Xa[c[s+32>>2]&255](r,1)|0;if((a[q>>0]|0)!=5){a[q>>0]=1;t=72}else t=72}else t=72;else{e=g;t=61}}else t=61;do if((t|0)==61){if(!(a[d+7>>0]|0)){e=Xa[c[f+20>>2]&255](e,2)|0;if(e|0)break;e=c[h>>2]|0;f=c[e>>2]|0}e=Xa[c[f+24>>2]&255](e,d+80|0)|0;if(!e){e=xf(d,(a[d+12>>0]|0)==0&1)|0;a[A>>0]=0;t=72}}while(0);if((t|0)==72)if(!e)break;switch((e&255)<<24>>24){case 10:case 13:break;default:{t=138;break a}}c[d+40>>2]=e;a[A>>0]=6;c[d+204>>2]=75;t=138;break a}while(0);h=d+12|0;if(!(a[h>>0]|0)){if(a[d+23>>0]|0){e=c[y>>2]|0;e=_a[c[(c[e>>2]|0)+8>>2]&127](e,D,16,24,0)|0;switch(e|0){case 0:break;case 522:{c[D>>2]=0;c[D+4>>2]=0;c[D+8>>2]=0;c[D+12>>2]=0;break}default:{t=136;break a}}if(Lu(d+104|0,D,16)|0)Ff(d);if(a[h>>0]|0){e=0;break}}e=c[d>>2]|0;g=d+220|0;e=Za[c[e+32>>2]&127](e,c[g>>2]|0,0,u)|0;f:do if(!e){if(!(c[u>>2]|0)){e=d+5|0;if((a[e>>0]|0)!=5){e=0;break}a[e>>0]=0;e=0;break}e=c[B>>2]|0;if(((e|0)!=0?(b[e+40>>1]|0)>-1:0)?(v=c[e+72>>2]|0,(v|0)!=0):0){f=v;t=91}else t=88;do if((t|0)==88?(w=c[y>>2]|0,x=c[w>>2]|0,x|0):0){e=D;c[e>>2]=0;c[e+4>>2]=0;e=Xa[c[x+24>>2]&255](w,D)|0;if(!e){x=D;t=c[d+152>>2]|0;f=((t|0)<0)<<31>>31;x=Sv(c[x>>2]|0,c[x+4>>2]|0,-1,-1)|0;x=Sv(x|0,L()|0,t|0,f|0)|0;f=Wv(x|0,L()|0,t|0,f|0)|0;L()|0;t=91;break}else break b}while(0);do if((t|0)==91){e=d+156|0;if(f>>>0<=(c[e>>2]|0)>>>0){if(!f)break}else c[e>>2]=f;if(a[h>>0]|0)Ga();if(c[B>>2]|0)Ga();e=c[c[y>>2]>>2]|0;if(a[z>>0]|0){e=14;break f}if(!(a[d+4>>0]|0)){if((c[e>>2]|0)<=1){e=14;break f}if(!(c[e+52>>2]|0)){e=14;break f}}e=c[d+64>>2]|0;f=c[e>>2]|0;if(f|0){Wa[c[f+4>>2]&127](e)|0;c[e>>2]=0}e=Uf(d)|0;if(e|0)break f;a[d+5>>0]=5;a[A>>0]=0;e=0;break f}while(0);e=c[d>>2]|0;e=Ya[c[e+28>>2]&127](e,c[g>>2]|0,0)|0}while(0)}else e=0}else e=0;while(0);f=c[B>>2]|0;if(!f)t=124;else t=111}else t=111;while(0);if((t|0)==111){c[D>>2]=0;e=f+44|0;if(a[e>>0]|0){if(!(a[f+43>>0]|0)){A=c[f+4>>2]|0;Za[c[(c[A>>2]|0)+56>>2]&127](A,0,1,9)|0}a[e>>0]=0;c[f+104>>2]=0;a[f+47>>0]=0}e=f+40|0;g=b[e>>1]|0;if(g<<16>>16>-1){if(!(a[f+43>>0]|0)){A=c[f+4>>2]|0;Za[c[(c[A>>2]|0)+56>>2]&127](A,(g<<16>>16)+3|0,1,5)|0}b[e>>1]=-1}g=c[B>>2]|0;f=0;do{f=f+1|0;e=gf(g,D,0,f)|0}while((e|0)==-1);if(c[D>>2]|e|0)Ff(d);t=124}g:do if((t|0)==124)if((a[d+12>>0]|0)==0?(E=d+16|0,(e|0)==0&(a[E>>0]|0)==0):0){g=d+24|0;e=c[B>>2]|0;if(((e|0)!=0?(b[e+40>>1]|0)>-1:0)?(C=c[e+72>>2]|0,(C|0)!=0):0){e=C;t=133}else t=129;do if((t|0)==129){e=c[d+60>>2]|0;f=c[e>>2]|0;if(f){C=D;c[C>>2]=0;c[C+4>>2]=0;e=Xa[c[f+24>>2]&255](e,D)|0;if(!e){t=c[d+152>>2]|0;e=((t|0)<0)<<31>>31;D=Sv(c[D>>2]|0,c[D+4>>2]|0,-1,-1)|0;D=Sv(D|0,L()|0,t|0,e|0)|0;e=Wv(D|0,L()|0,t|0,e|0)|0;L()|0;t=133;break}else{t=138;break g}}else e=0}while(0);if((t|0)==133){f=d+156|0;if(e>>>0>(c[f>>2]|0)>>>0)c[f>>2]=e}c[g>>2]=e;e=E;t=139}else t=136;while(0);if((t|0)==136)if(!e){e=d+16|0;t=139}else t=138;if((t|0)==138){vf(d);d=e;Ra=F;return d|0}else if((t|0)==139){a[e>>0]=1;a[d+23>>0]=1;d=0;Ra=F;return d|0}return 0}function Tf(a){a=a|0;var b=0,d=0,e=0;d=a+80|0;a=c[d>>2]|0;if(!a)return;b=a+-4|0;c[d>>2]=b;a=b;do if((c[14816]|0)>>>0<=a>>>0)if((c[14817]|0)>>>0>a>>>0){c[14979]=(c[14979]|0)+-1;c[b>>2]=c[14819];c[14819]=b;b=(c[14820]|0)+1|0;c[14820]=b;c[14821]=(b|0)<(c[14815]|0)&1;break}else{a=Wa[c[29352>>2]&127](b)|0;e=7;break}else{a=Wa[c[29352>>2]&127](b)|0;e=7}while(0);do if((e|0)==7){c[14980]=(c[14980]|0)-a;if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{e=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}}while(0);c[d>>2]=0;return}function Uf(d){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;u=Ra;Ra=Ra+16|0;s=u;f=d+4|0;e=a[f>>0]|0;a:do if(!(e<<24>>24))e=0;else{i=d+17|0;switch(a[i>>0]|0){case 0:case 1:case 2:case 3:case 5:break;default:break a}h=d+13|0;do if(!(a[h>>0]|0)){e=d+60|0;g=c[e>>2]|0;g=Xa[c[(c[g>>2]|0)+28>>2]&255](g,4)|0;if(!g){e=a[f>>0]|0;break}e=c[e>>2]|0;f=c[e>>2]|0;if(!f){t=g;Ra=u;return t|0}if(!(a[h>>0]|0))Xa[c[f+32>>2]&255](e,1)|0;if((a[i>>0]|0)==5){t=g;Ra=u;return t|0}a[i>>0]=1;t=g;Ra=u;return t|0}while(0);a[i>>0]=4}while(0);n=c[d>>2]|0;p=c[d+60>>2]|0;o=c[d+220>>2]|0;k=d+160|0;j=c[k>>2]|0;k=c[k+4>>2]|0;q=d+216|0;c[q>>2]=0;i=(c[n+4>>2]|0)+120|0;r=Sv(i|0,0,-1,-1)|0;m=L()|0;do if(!(m>>>0>0|(m|0)==0&r>>>0>2147483390)){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](i)|0;if(!f){e=7;break}else r=f}else{f=Wa[c[29356>>2]&127](i)|0;if((c[14985]|0)>>>0>>0)c[14985]=i;h=59064;g=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&g>>>0>0){r=c[14978]|0;m=Tv(g|0,h|0,f|0,((f|0)<0)<<31>>31|0)|0;l=L()|0;c[14768]=((l|0)<0|(l|0)==0&m>>>0<=r>>>0)&1}g=Wa[c[29340>>2]&127](f)|0;if(!g){e=7;break}f=Wa[c[29352>>2]&127](g)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0){c[14987]=f;r=g}else r=g}gw(r|0,0,i|0)|0;c[r>>2]=n;i=r+120|0;l=r+8|0;c[l>>2]=i;m=r+4|0;c[m>>2]=p;b[r+40>>1]=-1;f=r+16|0;c[f>>2]=j;c[f+4>>2]=k;c[r+108>>2]=o;f=r+48|0;a[f>>0]=1;g=r+49|0;a[g>>0]=1;d=r+43|0;a[d>>0]=e<<24>>24==0?0:2;c[s>>2]=524294;e=_a[c[n+24>>2]&127](n,o,i,524294,s)|0;if(!e){if(c[s>>2]&1|0)a[r+46>>0]=1;e=Wa[c[(c[p>>2]|0)+48>>2]&127](p)|0;if(e&1024|0)a[f>>0]=0;if(e&4096|0)a[g>>0]=0;c[q>>2]=r;e=0;break}f=a[d>>0]|0;if(f<<24>>24!=2?(a[r+50>>0]|0)==0:0)t=38;else{i=r+24|0;if((c[i>>2]|0)>0){g=r+32|0;f=0;do{h=c[(c[g>>2]|0)+(f<<2)>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{s=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[(c[g>>2]|0)+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[i>>2]|0));f=a[d>>0]|0}if(f<<24>>24!=2)t=38}if((t|0)==38){t=c[m>>2]|0;Xa[c[(c[t>>2]|0)+64>>2]&255](t,0)|0}f=c[l>>2]|0;g=c[f>>2]|0;if(g|0){Wa[c[g+4>>2]&127](f)|0;c[f>>2]=0}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{t=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}else e=7;while(0);t=e;Ra=u;return t|0}function Vf(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;n=a+96|0;e=c[n>>2]|0;d=a+92|0;q=sb(c[d>>2]|0,b*48|0,0)|0;if(!q){r=7;return r|0}gw(q+(e*48|0)|0,0,(b-e|0)*48|0)|0;c[d>>2]=q;if((e|0)>=(b|0)){r=0;return r|0}i=a+24|0;j=a+64|0;k=a+148|0;l=a+52|0;m=a+72|0;h=a+216|0;d=e;while(1){g=c[i>>2]|0;c[q+(d*48|0)+20>>2]=g;if((c[c[j>>2]>>2]|0)!=0?(p=m,o=c[p>>2]|0,p=c[p+4>>2]|0,(p|0)>0|(p|0)==0&o>>>0>0):0){a=o;e=p}else{a=c[k>>2]|0;e=0}f=q+(d*48|0)|0;c[f>>2]=a;c[f+4>>2]=e;c[q+(d*48|0)+24>>2]=c[l>>2];if(!(c[7324]|0)){a=Wa[c[29340>>2]&127](512)|0;if(!a)break}else{a=Wa[c[29356>>2]&127](512)|0;if((c[14985]|0)>>>0<512)c[14985]=512;f=59064;e=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&e>>>0>0){s=c[14978]|0;f=Tv(e|0,f|0,a|0,((a|0)<0)<<31>>31|0)|0;e=L()|0;c[14768]=((e|0)<0|(e|0)==0&f>>>0<=s>>>0)&1}a=Wa[c[29340>>2]&127](a)|0;if(!a)break;e=Wa[c[29352>>2]&127](a)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0>(c[14987]|0)>>>0)c[14987]=e}gw(a+4|0,0,508)|0;c[a>>2]=g;c[q+(d*48|0)+16>>2]=a;a=c[h>>2]|0;if(a|0){c[q+(d*48|0)+28>>2]=c[a+68>>2];c[q+(d*48|0)+32>>2]=c[a+76>>2];c[q+(d*48|0)+36>>2]=c[a+80>>2];c[q+(d*48|0)+40>>2]=c[a+112>>2]}d=d+1|0;c[n>>2]=d;if((d|0)>=(b|0)){d=0;r=22;break}}if((r|0)==22)return d|0;c[q+(d*48|0)+16>>2]=0;s=7;return s|0}function Wf(e){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;C=Ra;Ra=Ra+16|0;s=C;x=c[e+20>>2]|0;w=x+152|0;g=((c[x+148>>2]|0)>>>0)/((c[w>>2]|0)>>>0)|0;B=x+20|0;a[B>>0]=a[B>>0]|4;p=e+24|0;i=c[p>>2]|0;f=i+-1|0;e=0-g|0;q=f&e;A=q+1|0;e=~(f&e);f=c[x+24>>2]|0;if(i>>>0>f>>>0)z=i+1+e|0;else z=(q+g|0)>>>0>f>>>0?f+1+e|0:g;r=(z|0)>0;if(!r){A=0;z=a[B>>0]|0;z=z&-5;a[B>>0]=z;Ra=C;return A|0}m=x+56|0;n=x+204|0;o=x+212|0;h=0;g=0;e=i;a:while(1){l=h+A|0;b:do if(((l|0)!=(e|0)?(t=c[m>>2]|0,(t|0)!=0):0)?(u=h+q|0,v=c[t>>2]|0,u>>>0>>0):0){e=c[t+8>>2]|0;if(!e){f=u;k=t;e=v}else{i=u;j=t;do{f=(i>>>0)/(e>>>0)|0;j=c[j+12+(f<<2)>>2]|0;if(!j){y=20;break b}i=i-(G(f,e)|0)|0;e=c[j+8>>2]|0}while((e|0)!=0);f=i;k=j;e=c[j>>2]|0}c:do if(e>>>0<4001){if(!(1<<(f&7)&(d[k+12+(f>>>3)>>0]|0))){y=20;break b}}else{i=f+1|0;e=(f>>>0)%125|0;f=c[k+12+(e<<2)>>2]|0;if(!f){y=20;break b}while(1){if((f|0)==(i|0))break c;e=((e+1|0)>>>0)%125|0;f=c[k+12+(e<<2)>>2]|0;if(!f){y=20;break b}}}while(0);f=Ya[c[29436>>2]&127](c[(c[o>>2]|0)+44>>2]|0,l,0)|0;if(!f){c[s>>2]=0;e=0;break}i=c[o>>2]|0;e=c[f+4>>2]|0;if(!(c[e>>2]|0)){e=sf(i,l,f)|0;c[s>>2]=e;if(!e){e=0;break}}else{l=i+12|0;c[l>>2]=(c[l>>2]|0)+1;l=e+30|0;b[l>>1]=(b[l>>1]|0)+1<<16>>16;c[s>>2]=e}l=b[e+28>>1]|0;g=(l&8)==0?g:1;if(!(l&32)){Df(e);e=0;break}else{l=c[e+20>>2]|0;k=l+120|0;c[k>>2]=(c[k>>2]|0)+-1;l=l+136|0;c[e+16>>2]=c[l>>2];c[l>>2]=e;e=0;break}}else y=20;while(0);do if((y|0)==20){y=0;if((l|0)!=((1073741824/(c[w>>2]|0)|0)+1|0)){e=Za[c[n>>2]&127](x,l,s,0)|0;if(e|0){y=22;break a}e=Xf(c[s>>2]|0)|0;f=c[s>>2]|0;l=b[f+28>>1]|0;g=(l&8)==0?g:1;if(!(l&32)){Df(f);break}else{l=c[f+20>>2]|0;k=l+120|0;c[k>>2]=(c[k>>2]|0)+-1;l=l+136|0;c[f+16>>2]=c[l>>2];c[l>>2]=f;break}}else e=0}while(0);h=h+1|0;f=(e|0)==0;if(!((h|0)<(z|0)&f))break;e=c[p>>2]|0}if((y|0)==22)f=0;if(!((g|0)!=0&f&r)){A=e;z=a[B>>0]|0;z=z&-5;a[B>>0]=z;Ra=C;return A|0}k=x+212|0;j=0;do{g=j+A|0;h=Ya[c[29436>>2]&127](c[(c[k>>2]|0)+44>>2]|0,g,0)|0;do if(h|0){i=c[k>>2]|0;f=c[h+4>>2]|0;if(!(c[f>>2]|0)){f=sf(i,g,h)|0;if(!f)break}else{y=i+12|0;c[y>>2]=(c[y>>2]|0)+1;y=f+30|0;b[y>>1]=(b[y>>1]|0)+1<<16>>16}x=f+28|0;y=b[x>>1]|0;b[x>>1]=y|8;if(!(y&32)){Df(f);break}else{y=c[f+20>>2]|0;x=y+120|0;c[x>>2]=(c[x>>2]|0)+-1;y=y+136|0;c[f+16>>2]=c[y>>2];c[y>>2]=f;break}}while(0);j=j+1|0}while((j|0)!=(z|0));A=a[B>>0]|0;A=A&-5;a[B>>0]=A;Ra=C;return e|0} -function Zc(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if(!d){i=0;return i|0}h=(Eu(d)|0)&1073741823;if(!b){i=0;return i|0}g=c[b+128>>2]|0;if(!g){i=0;return i|0}f=c[g+4>>2]|0;b=2;while(1){e=g+(b+2<<2)|0;if((av(e,d,h)|0)==0?(a[e+h>>0]|0)==0:0)break;b=(c[g+(b+1<<2)>>2]|0)+b|0;if((b|0)>=(f|0)){b=0;i=9;break}}if((i|0)==9)return b|0;i=c[g+(b<<2)>>2]|0;return i|0}function _c(f,h){f=f|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,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=Ra;Ra=Ra+224|0;D=N+184|0;C=N+176|0;F=N+168|0;E=N+160|0;B=N+152|0;A=N+144|0;w=N+220|0;x=N+216|0;I=N+192|0;y=N+104|0;i=N;c[x>>2]=0;z=c[f>>2]|0;L=c[z+108>>2]|0;K=I+4|0;c[K>>2]=i;c[I>>2]=0;J=I+8|0;c[J>>2]=100;H=I+12|0;c[H>>2]=L;L=I+16|0;c[L>>2]=0;G=I+20|0;a[G>>0]=0;M=I+21|0;a[M>>0]=0;a:do if((c[z+180>>2]|0)>1){f=a[h>>0]|0;if(f<<24>>24)while(1){i=h+1|0;b:do if(f<<24>>24!=10)do{f=a[i>>0]|0;if(!(f<<24>>24))break b;i=i+1|0}while(f<<24>>24!=10);while(0);f=c[L>>2]|0;j=f+3|0;if(j>>>0<(c[J>>2]|0)>>>0){c[L>>2]=j;F=(c[K>>2]|0)+f|0;a[F>>0]=a[36874]|0;a[F+1>>0]=a[36875]|0;a[F+2>>0]=a[36876]|0}else wb(I,36874,3);f=i-h|0;j=c[L>>2]|0;k=j+f|0;if(k>>>0<(c[J>>2]|0)>>>0){if(f|0){c[L>>2]=k;ew((c[K>>2]|0)+j|0,h|0,f|0)|0}}else wb(I,h,f);f=a[i>>0]|0;if(!(f<<24>>24))break;else h=i}}else{if(!(b[f+16>>1]|0)){if(!h)break;f=(Eu(h)|0)&1073741823;if(f>>>0>=100){wb(I,h,f);break}if(!f)break;c[L>>2]=f;ew(i|0,h|0,f|0)|0;break}if(a[h>>0]|0){v=f+100|0;n=f+128|0;o=z+78|0;p=y+32|0;q=y+8|0;r=y+12|0;s=y+16|0;t=y+10|0;u=y+24|0;m=1;do{f=0;i=h;while(1){j=Bi(i,w)|0;if((c[w>>2]|0)==148){l=j;break}f=j+f|0;i=i+j|0;if(!(a[i>>0]|0)){l=0;break}}i=c[L>>2]|0;j=i+f|0;if(j>>>0<(c[J>>2]|0)>>>0){if(f|0){c[L>>2]=j;ew((c[K>>2]|0)+i|0,h|0,f|0)|0}}else wb(I,h,f);h=h+f|0;if(!l)break a;do if((a[h>>0]|0)==63)if((l|0)>1){ii(h+1|0,x)|0;f=c[x>>2]|0;break}else{c[x>>2]=m;f=m;break}else{j=c[n>>2]|0;c:do if(!j)f=0;else{k=c[j+4>>2]|0;f=2;while(1){i=j+(f+2<<2)|0;if((av(i,h,l)|0)==0?(a[i+l>>0]|0)==0:0)break;f=(c[j+(f+1<<2)>>2]|0)+f|0;if((f|0)>=(k|0)){f=0;break c}}f=c[j+(f<<2)>>2]|0}while(0);c[x>>2]=f}while(0);h=h+l|0;m=f+1|0;l=c[v>>2]|0;k=f+-1|0;f=l+(k*40|0)|0;i=e[l+(k*40|0)+8>>1]|0;do if(!(i&1)){if(i&4|0){j=f;k=c[j+4>>2]|0;l=A;c[l>>2]=c[j>>2];c[l+4>>2]=k;Eb(I,32524,A);break}if(i&8|0){g[B>>3]=+g[f>>3];Eb(I,32529,B);break}if(i&2|0){f=a[o>>0]|0;if(f<<24>>24==1){j=c[l+(k*40|0)+16>>2]|0;c[F>>2]=c[l+(k*40|0)+12>>2];c[F+4>>2]=j;Eb(I,36878,F);break}i=y;j=i+40|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(j|0));c[p>>2]=z;yc(y,c[l+(k*40|0)+16>>2]|0,c[l+(k*40|0)+12>>2]|0,f,0)|0;if(!((b[q>>1]&2)==0|(a[t>>0]|0)==1)?(Ig(y,1)|0)==7:0){a[G>>0]=7;c[J>>2]=0}l=c[s>>2]|0;c[E>>2]=c[r>>2];c[E+4>>2]=l;Eb(I,36878,E);if((b[q>>1]&9216)==0&(c[u>>2]|0)==0)break;Cg(y);break}if(i&16384|0){c[C>>2]=c[f>>2];Eb(I,36885,C);break}f=c[L>>2]|0;i=f+2|0;if(i>>>0<(c[J>>2]|0)>>>0){c[L>>2]=i;j=(c[K>>2]|0)+f|0;a[j>>0]=120;a[j+1>>0]=39}else wb(I,36898,2);j=c[l+(k*40|0)+12>>2]|0;if((j|0)>0){i=l+(k*40|0)+16|0;f=0;do{c[D>>2]=d[(c[i>>2]|0)+f>>0];Eb(I,36901,D);f=f+1|0}while((f|0)!=(j|0))}f=c[L>>2]|0;i=f+1|0;if(i>>>0<(c[J>>2]|0)>>>0){c[L>>2]=i;a[(c[K>>2]|0)+f>>0]=39;break}else{wb(I,36906,1);break}}else{f=c[L>>2]|0;i=f+4|0;if(i>>>0<(c[J>>2]|0)>>>0){c[L>>2]=i;l=(c[K>>2]|0)+f|0;a[l>>0]=78;a[l+1>>0]=85;a[l+2>>0]=76;a[l+3>>0]=76;break}else{wb(I,31171,4);break}}while(0)}while((a[h>>0]|0)!=0)}}while(0);if(!(a[G>>0]|0)){f=c[K>>2]|0;if((f|0?(a[f+(c[L>>2]|0)>>0]=0,c[H>>2]|0):0)?(a[M>>0]&4)==0:0){M=$d(I)|0;Ra=N;return M|0}}else{if(a[M>>0]&4){f=c[I>>2]|0;i=c[K>>2]|0;do if(i|0){if(f|0){if(c[f+480>>2]|0){Xd(f,i);break}I=i;if((c[f+304>>2]|0)>>>0<=I>>>0?(c[f+308>>2]|0)>>>0>I>>>0:0){I=f+300|0;c[i>>2]=c[I>>2];c[I>>2]=i;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{I=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);a[M>>0]=a[M>>0]&-5}c[J>>2]=0;c[L>>2]=0;c[K>>2]=0}M=c[K>>2]|0;Ra=N;return M|0}function $c(e){e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0;m=Ra;Ra=Ra+16|0;j=m+8|0;k=m;l=e+8|0;f=b[l>>1]&31;if((f|16|0)!=18){l=d[816+f>>0]|0;Ra=m;return l|0}f=a[e+10>>0]|0;h=e+16|0;i=e+12|0;if(!(Lg(c[h>>2]|0,j,c[i>>2]|0,f)|0))f=b[l>>1]|0;else{if(!(Og(c[h>>2]|0,k,c[i>>2]|0,f)|0)){j=k;k=c[j+4>>2]|0;f=e;c[f>>2]=c[j>>2];c[f+4>>2]=k;f=4}else{g[e>>3]=+g[j>>3];f=8}f=b[l>>1]&-3|f;b[l>>1]=f}l=d[816+(f&31)>>0]|0;Ra=m;return l|0}function ad(f,g,h,i,j,k,l,m){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|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,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;ea=Ra;Ra=Ra+336|0;ca=ea+40|0;Y=ea+32|0;_=ea+24|0;Z=ea+16|0;X=ea+8|0;W=ea;ba=ea+320|0;da=ea+44|0;c[ba>>2]=0;c[m>>2]=0;P=(l|0)!=0;Q=P&1;aa=(f|0)==0;a:do if(aa){if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](32)|0;u=24;break}l=Wa[c[29356>>2]&127](32)|0;if((c[14985]|0)>>>0<32)c[14985]=32;o=59064;n=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)>0|(o|0)==0&n>>>0>0){$=c[14978]|0;V=Tv(n|0,o|0,l|0,((l|0)<0)<<31>>31|0)|0;U=L()|0;c[14768]=((U|0)<0|(U|0)==0&V>>>0<=$>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(l){n=Wa[c[29352>>2]&127](l)|0;n=(c[14978]|0)+n|0;c[14978]=n;if(n>>>0>(c[14982]|0)>>>0)c[14982]=n;n=(c[14981]|0)+1|0;c[14981]=n;if(n>>>0>(c[14987]|0)>>>0){c[14987]=n;u=25}else u=25}else O=0}else{if(c[f+272>>2]|0){if(a[f+81>>0]|0){O=0;break}}else{do if((e[f+276>>1]|0)>=32){n=f+300|0;l=c[n>>2]|0;if(l|0){c[n>>2]=c[l>>2];u=f+284|0;c[u>>2]=(c[u>>2]|0)+1;u=24;break a}n=f+296|0;l=c[n>>2]|0;if(!l){l=f+292|0;break}else{c[n>>2]=c[l>>2];u=f+284|0;c[u>>2]=(c[u>>2]|0)+1;u=24;break a}}else l=f+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(f,32,0)|0;u=24}while(0);if((u|0)==24)if(!l)O=0;else u=25;if((u|0)==25){n=l;p=n+32|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(p|0));O=l}M=(O|0)!=0;C=f+20|0;D=f+16|0;S=f+480|0;T=f+304|0;U=f+308|0;V=f+300|0;E=O+28|0;F=O+24|0;G=f+32|0;N=O+16|0;H=O+8|0;I=O+20|0;$=f+81|0;J=da+8|0;K=da+196|0;A=da+44|0;B=da+40|0;z=0;l=0;while(1){gw(da|0,0,276)|0;if(!M){u=117;break}c[da>>2]=f;n=c[ba>>2]|0;do if(n|0){if(!aa){if(c[S>>2]|0){Xd(f,n);break}y=n;if((c[T>>2]|0)>>>0<=y>>>0?(c[U>>2]|0)>>>0>y>>>0:0){c[n>>2]=c[V>>2];c[V>>2]=n;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{y=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);c[ba>>2]=0;o=c[C>>2]|0;if((o|0)>0){p=c[D>>2]|0;n=0;do{q=c[p+(n<<4)+4>>2]|0;if(q|0)c[(c[q+4>>2]|0)+4>>2]=c[q>>2];n=n+1|0}while((n|0)!=(o|0))}y=bd(da,0,h,g)|0;if(!y){u=50;break}if(c[y+56>>2]|0){u=45;break}if(c[y+36>>2]&32|0){u=47;break}if(c[y+12>>2]|0){u=49;break}c[E>>2]=y;p=c[D>>2]|0;w=y+72|0;o=c[w>>2]|0;if(!o)n=-1e6;else{n=0;while(1)if((c[p+(n<<4)+12>>2]|0)==(o|0))break;else n=n+1|0}c[F>>2]=c[p+(n<<4)>>2];x=y+42|0;v=b[x>>1]|0;t=v<<16>>16;b:do if(v<<16>>16>0){r=c[y+4>>2]|0;s=d[208+(d[i>>0]|0)>>0]|0;n=0;while(1){p=c[r+(n<<4)>>2]|0;v=a[p>>0]|0;o=(d[208+(v&255)>>0]|0)-s|0;if(!(v<<24>>24==0|(o|0)!=0)){q=i;do{p=p+1|0;q=q+1|0;v=a[p>>0]|0;o=(d[208+(v&255)>>0]|0)-(d[208+(d[q>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(o|0)!=0))}if(!o){v=n;break b}n=n+1|0;if((n|0)>=(t|0)){v=n;break}}}else v=0;while(0);if((v|0)==(t|0)){u=63;break}if(P){if(!((c[G>>2]&16384|0)==0&0==0)?(R=c[y+16>>2]|0,(R|0)!=0):0){q=R;n=0;do{p=c[q+20>>2]|0;if((p|0)>0){o=0;do{n=(c[q+36+(o<<3)>>2]|0)==(v|0)?31354:n;o=o+1|0}while((o|0)<(p|0))}q=c[q+4>>2]|0}while((q|0)!=0);o=n}else o=0;n=c[y+8>>2]|0;if(!n)n=o;else{do{p=b[n+50>>1]|0;if(p<<16>>16){r=c[n+4>>2]|0;q=p&65535;p=0;do{u=b[r+(p<<1)>>1]|0;o=u<<16>>16==-2|(v|0)==(u<<16>>16|0)?31366:o;p=p+1|0}while(p>>>0>>0)}n=c[n+20>>2]|0}while((n|0)!=0);n=o}if(n|0){u=79;break}}q=c[da>>2]|0;c:do if(c[q+272>>2]|0)if(!(a[q+81>>0]|0))u=90;else u=94;else{do if((e[q+276>>1]|0)>=224){n=q+300|0;o=c[n>>2]|0;if(o|0){c[n>>2]=c[o>>2];u=q+284|0;c[u>>2]=(c[u>>2]|0)+1;u=91;break c}n=q+296|0;o=c[n>>2]|0;if(!o){n=q+292|0;break}else{c[n>>2]=c[o>>2];u=q+284|0;c[u>>2]=(c[u>>2]|0)+1;u=91;break c}}else n=q+288|0;while(0);c[n>>2]=(c[n>>2]|0)+1;u=90}while(0);if((u|0)==90){o=_d(q,224,0)|0;u=91}do if((u|0)==91){u=0;if(!o)u=94;else{t=o+104|0;n=t;p=n+120|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(p|0));c[o>>2]=q;n=q+4|0;p=c[n>>2]|0;if(p|0)c[p+4>>2]=o;c[o+8>>2]=p;c[o+4>>2]=0;c[n>>2]=o;c[o+20>>2]=381479589;c[o+12>>2]=da;c[J>>2]=o;Di(o,61,0,1,0)|0;c[N>>2]=o;q=c[w>>2]|0;if(!q)s=-1e6;else{p=c[D>>2]|0;n=0;while(1)if((c[p+(n<<4)+12>>2]|0)==(q|0)){s=n;break}else n=n+1|0}p=c[q>>2]|0;q=c[q+4>>2]|0;r=o+108|0;n=c[r>>2]|0;if((c[o+112>>2]|0)>(n|0)){c[r>>2]=n+1;w=c[t>>2]|0;a[w+(n*20|0)>>0]=2;b[w+(n*20|0)+2>>1]=0;c[w+(n*20|0)+4>>2]=s;c[w+(n*20|0)+8>>2]=Q;c[w+(n*20|0)+12>>2]=p;c[w+(n*20|0)+16>>2]=0;a[w+(n*20|0)+1>>0]=0}else n=Di(o,2,s,Q,p)|0;if(!(a[(c[o>>2]|0)+81>>0]|0)){w=c[t>>2]|0;a[w+(n*20|0)+1>>0]=-3;c[w+(n*20|0)+16>>2]=q}n=c[r>>2]|0;if((n|0)>0)b[(c[t>>2]|0)+((n+-1|0)*20|0)+2>>1]=1;p=ed(o,6,848)|0;n=1<>2]=c[w>>2]|n;do if((s|0)!=1){if(!(a[(c[(c[(c[o>>2]|0)+16>>2]|0)+(s<<4)+4>>2]|0)+9>>0]|0))break;w=o+156|0;c[w>>2]=c[w>>2]|n}while(0);if(a[$>>0]|0)break;c[p+4>>2]=s;n=y+28|0;c[p+8>>2]=c[n>>2];c[p+12>>2]=Q;if((a[(c[o>>2]|0)+81>>0]|0)==0?(Ei(o,(c[t>>2]|0)+40|0,c[y>>2]|0,0),a[$>>0]|0):0)break;if(P)a[p+20>>0]=109;c[p+28>>2]=c[n>>2];c[p+32>>2]=s;a[p+21>>0]=-3;c[p+36>>2]=(b[x>>1]|0)+1;c[p+68>>2]=b[x>>1];b[K>>1]=0;c[A>>2]=1;c[B>>2]=1;hd(o,da)}}while(0);if((u|0)==94)c[N>>2]=0;b[H>>1]=v;c[I>>2]=f;if(a[$>>0]|0){u=116;break}l=id(O,j,k,ba)|0;z=z+1|0;if(!(z>>>0<50&(l|0)==17)){u=116;break}else l=17}if((u|0)==45){c[W>>2]=h;cd(da,31246,W);u=50}else if((u|0)==47){c[X>>2]=h;cd(da,31276,X);u=50}else if((u|0)==49){c[Z>>2]=h;cd(da,31312,Z);u=50}else if((u|0)==63){c[_>>2]=i;l=dd(f,31333,_)|0;c[ba>>2]=l;l=1;u=119}else if((u|0)==79){c[Y>>2]=n;l=dd(f,31374,Y)|0;c[ba>>2]=l;l=1;u=119}else if((u|0)==116)if(!l)u=117;else u=119;if((u|0)==50){l=da+4|0;n=c[l>>2]|0;if(!n){l=1;u=119}else{c[ba>>2]=n;c[l>>2]=0;l=1;u=119}}else if((u|0)==117)if(!(a[$>>0]|0)){c[m>>2]=O;o=0}else{l=0;u=119}do if((u|0)==119)if(M){r=c[N>>2]|0;do if(r|0){s=r+20|0;n=c[s>>2]|0;if((n|0)<832317811)switch(n|0){case 770837923:{u=122;break}default:{}}else switch(n|0){case 832317811:{u=122;break}default:{}}if((u|0)==122)kc(r)|0;p=c[r>>2]|0;kb(p,r);q=c[r+4>>2]|0;o=r+8|0;n=c[o>>2]|0;if(!q)c[p+4>>2]=n;else{c[q+8>>2]=n;n=c[o>>2]|0}if(n|0)c[n+4>>2]=q;c[s>>2]=1443283912;c[r>>2]=0;if(p|0){if(c[p+480>>2]|0){Xd(p,r);break}m=r;if((c[p+304>>2]|0)>>>0<=m>>>0?(c[p+308>>2]|0)>>>0>m>>>0:0){m=p+300|0;c[r>>2]=c[m>>2];c[m>>2]=r;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{m=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);if(!aa){if(c[S>>2]|0){Xd(f,O);o=l;break}m=O;if((c[T>>2]|0)>>>0<=m>>>0?(c[U>>2]|0)>>>0>m>>>0:0){c[O>>2]=c[V>>2];c[V>>2]=O;o=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](O);o=l;break}else{o=Wa[c[29352>>2]&127](O)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](O);o=l;break}}else o=l;while(0);l=c[ba>>2]|0;ba=(l|0)==0;c[ca>>2]=l;Vb(f,o,ba?0:31408,ca);do if(!ba){if(!aa){if(c[S>>2]|0){Xd(f,l);break}ca=l;if((c[T>>2]|0)>>>0<=ca>>>0?(c[U>>2]|0)>>>0>ca>>>0:0){c[l>>2]=c[V>>2];c[V>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ca=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ca;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);n=c[da>>2]|0;l=c[da+64>>2]|0;do if(l|0){if(n|0){if(c[n+480>>2]|0){Xd(n,l);break}ca=l;if((c[n+304>>2]|0)>>>0<=ca>>>0?(c[n+308>>2]|0)>>>0>ca>>>0:0){ca=n+300|0;c[l>>2]=c[ca>>2];c[ca>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ca=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ca;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);l=c[da+68>>2]|0;if(l|0)ri(n,l);l=da+24|0;if(n|0){da=n+272|0;c[da>>2]=(c[da>>2]|0)-(d[l>>0]|0)}a[l>>0]=0;if((o|0)==3082|(a[$>>0]|0)!=0){og(f);f=7;Ra=ea;return f|0}else{f=c[f+68>>2]&o;Ra=ea;return f|0}return 0}function bd(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var 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;F=Ra;Ra=Ra+64|0;E=F+48|0;D=F+32|0;C=F+24|0;A=F+16|0;y=F+8|0;w=F;B=F+56|0;s=c[f>>2]|0;p=s+24|0;k=c[p>>2]|0;a:do if((k&16|0)==0?(a[s+165>>0]|0)==0:0){n=f+4|0;l=(k&1|0)==0;m=s+16|0;v=c[(c[m>>2]|0)+12>>2]|0;a[s+78>>0]=a[v+77>>0]|0;if(!((b[v+78>>1]&1)==0?(j=eh(s,0,n,0)|0,(j|0)!=0):0))x=5;b:do if((x|0)==5){j=c[s+20>>2]|0;if((j|0)>1)do{k=j;j=j+-1|0;if((b[(c[(c[m>>2]|0)+(j<<4)+12>>2]|0)+78>>1]&1)==0?(o=eh(s,j,n,0)|0,o|0):0){j=o;break b}}while((k|0)>2);if(l)c[p>>2]=c[p>>2]&-2;if(!(a[s+89>>0]|0))break a;c[p>>2]=c[p>>2]|16;break a}while(0);c[f+12>>2]=j;f=f+36|0;c[f>>2]=(c[f>>2]|0)+1;f=0;Ra=F;return f|0}while(0);j=Sd(s,h,i)|0;do if(!j){c:do if(!(a[f+25>>0]|0)){m=c[s+348>>2]|0;if(!m){k=s+340|0;j=s+344|0}else{k=a[h>>0]|0;if(!(k<<24>>24))j=0;else{j=0;l=h;do{l=l+1|0;j=G(j+(d[208+(k&255)>>0]|0)|0,-1640531535)|0;k=a[l>>0]|0}while(k<<24>>24!=0)}j=(j>>>0)%((c[s+336>>2]|0)>>>0)|0;k=m+(j<<3)|0;j=m+(j<<3)+4|0}k=c[k>>2]|0;d:do if(!k)j=59292;else{o=d[208+(d[h>>0]|0)>>0]|0;while(1){j=c[j>>2]|0;k=k+-1|0;m=c[j+12>>2]|0;v=a[m>>0]|0;l=(d[208+(v&255)>>0]|0)-o|0;if(!(v<<24>>24==0|(l|0)!=0)){n=h;do{m=m+1|0;n=n+1|0;v=a[m>>0]|0;l=(d[208+(v&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(l|0)!=0))}if(!l)break d;if(!k){j=59292;break}}}while(0);l=c[j+8>>2]|0;do if((h|0)==0|(l|0)!=0)r=l;else{j=a[h>>0]|0;e:do if(!(j<<24>>24)){j=36975;x=32}else{v=j&255;j=208+v|0;do if((v|32|0)==112){j=a[h+1>>0]|0;if(!(j<<24>>24)){j=36976;x=32;break e}v=j&255;j=208+v|0;if((v|32|0)==114){j=a[h+2>>0]|0;if(!(j<<24>>24)){j=36977;x=32;break e}v=j&255;j=208+v|0;if((v|32|0)==97){j=a[h+3>>0]|0;if(!(j<<24>>24)){j=36978;x=32;break e}v=j&255;j=208+v|0;if((v|32|0)==103){j=a[h+4>>0]|0;if(!(j<<24>>24)){j=36979;x=32;break e}j=j&255;if((j|32|0)!=109){k=109;j=208+j|0;break}j=a[h+5>>0]|0;if(!(j<<24>>24)){j=36980;x=32;break e}j=j&255;if((j|32|0)!=97){k=97;j=208+j|0;break}j=a[h+6>>0]|0;if(!(j<<24>>24)){j=36981;x=32;break e}if(j<<24>>24==95)break e;else{k=95;j=208+(j&255)|0}}else k=103}else k=97}else k=114}else k=112;while(0);r=d[j>>0]|0;q=k;x=36}while(0);if((x|0)==32){r=0;q=a[208+(d[j>>0]|0)>>0]|0;x=36}if((x|0)==36?(r|0)!=(q&255|0):0){r=l;break}p=h+7|0;v=a[p>>0]|0;q=d[208+(v&255)>>0]|0;f:do if(!(v<<24>>24)){k=0;l=59;while(1){j=(k+l|0)/2|0;m=q-(d[208+(d[c[4544+(j<<4)>>2]>>0]|0)>>0]|0)|0;if(!m)break f;v=(m|0)<0;k=v?k:j+1|0;l=v?j+-1|0:l;if((k|0)>(l|0))break c}}else{n=0;o=59;while(1){j=(n+o|0)/2|0;l=c[4544+(j<<4)>>2]|0;k=q-(d[208+(d[l>>0]|0)>>0]|0)|0;if(!k){m=p;do{m=m+1|0;l=l+1|0;v=a[m>>0]|0;k=(d[208+(v&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(k|0)!=0));if(!k)break f}v=(k|0)<0;n=v?n:j+1|0;o=v?j+-1|0:o;if((n|0)>(o|0))break c}}while(0);if(!(a[4544+(j<<4)+5>>0]&48))break c;r=Hi(s,h,29972,4544+(j<<4)|0,0)|0}while(0);if(r|0){s=c[r>>2]|0;c[B>>2]=0;u=c[f>>2]|0;v=r+16|0;j=c[v>>2]|0;g:do if(!j){t=c[s+4>>2]|0;if(!((t|0)!=0?(t|0)!=(c[s+8>>2]|0):0))x=53;h:do if((x|0)==53){t=(u|0)==0;i:do if(t){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](80)|0;x=76;break}j=Wa[c[29356>>2]&127](80)|0;if((c[14985]|0)>>>0<80)c[14985]=80;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){q=c[14978]|0;p=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;o=L()|0;c[14768]=((o|0)<0|(o|0)==0&p>>>0<=q>>>0)&1}k=Wa[c[29340>>2]&127](j)|0;if(!k)break h;j=Wa[c[29352>>2]&127](k)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0<=(c[14987]|0)>>>0)break;c[14987]=j}else{if(c[u+272>>2]|0){if(a[u+81>>0]|0)break h}else{do if((e[u+276>>1]|0)>=80){k=u+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];x=u+284|0;c[x>>2]=(c[x>>2]|0)+1;x=76;break i}k=u+296|0;j=c[k>>2]|0;if(!j){j=u+292|0;break}else{c[k>>2]=c[j>>2];x=u+284|0;c[x>>2]=(c[x>>2]|0)+1;x=76;break i}}else j=u+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(u,80,0)|0;x=76}while(0);if((x|0)==76)if(!j)break;else k=j;j=k;l=j+80|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(l|0));n=c[r+4>>2]|0;j:do if(!n)x=105;else{o=(Eu(n)|0)+1|0;k:do if(t){q=Sv(o|0,0,-1,-1)|0;p=L()|0;do if(!(p>>>0>0|(p|0)==0&q>>>0>2147483390)){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](o)|0;x=103;break k}j=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){q=c[14978]|0;p=Tv(l|0,m|0,j|0,((j|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&p>>>0<=q>>>0)&1}l=Wa[c[29340>>2]&127](j)|0;if(!l)break;j=Wa[c[29352>>2]&127](l)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0<=(c[14987]|0)>>>0){p=l;break k}c[14987]=j;p=l;break k}while(0);c[k>>2]=0;break j}else{do if(!(c[u+272>>2]|0)){do if(!(0<0|(0==0?(e[u+276>>1]|0)>>>0>>0:0))){l=u+300|0;j=c[l>>2]|0;if(j|0){c[l>>2]=c[j>>2];x=u+284|0;c[x>>2]=(c[x>>2]|0)+1;x=103;break k}l=u+296|0;j=c[l>>2]|0;if(!j){j=u+292|0;break}else{c[l>>2]=c[j>>2];x=u+284|0;c[x>>2]=(c[x>>2]|0)+1;x=103;break k}}else j=u+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}else{if(!(a[u+81>>0]|0))break;c[k>>2]=0;x=106;break j}while(0);j=_d(u,o,0)|0;x=103}while(0);if((x|0)==103)if(!j){x=105;break}else p=j;ew(p|0,n|0,o|0)|0;c[k>>2]=p;c[v>>2]=k;c[k+32>>2]=1;c[k+72>>2]=c[(c[u+16>>2]|0)+12>>2];b[k+40>>1]=-1;n=(Eu(p)|0)+1|0;l:do if(t){q=Sv(n|0,0,-1,-1)|0;o=L()|0;if(o>>>0>0|(o|0)==0&q>>>0>2147483390)j=0;else{if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](n)|0;x=138;break}j=Wa[c[29356>>2]&127](n)|0;if((c[14985]|0)>>>0>>0)c[14985]=n;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){q=c[14978]|0;o=Tv(l|0,m|0,j|0,((j|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&o>>>0<=q>>>0)&1}j=Wa[c[29340>>2]&127](j)|0;if(!j){j=0;break}l=Wa[c[29352>>2]&127](j)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0<=(c[14987]|0)>>>0){x=139;break}c[14987]=l;x=139}}else{if(c[u+272>>2]|0){if(a[u+81>>0]|0){j=0;break}}else{do if(!(0<0|(0==0?(e[u+276>>1]|0)>>>0>>0:0))){l=u+300|0;j=c[l>>2]|0;if(j|0){c[l>>2]=c[j>>2];x=u+284|0;c[x>>2]=(c[x>>2]|0)+1;x=138;break l}l=u+296|0;j=c[l>>2]|0;if(!j){j=u+292|0;break}else{c[l>>2]=c[j>>2];x=u+284|0;c[x>>2]=(c[x>>2]|0)+1;x=138;break l}}else j=u+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(u,n,0)|0;x=138}while(0);if((x|0)==138)if(!j)j=0;else x=139;if((x|0)==139)ew(j|0,p|0,n|0)|0;q=k+56|0;x=c[q>>2]|0;n=(x<<2)+8|0;o=c[f>>2]|0;if((x+3|0)>=(c[o+116>>2]|0)){c[w>>2]=c[k>>2];cd(f,38221,w)}p=k+60|0;l=c[p>>2]|0;m:do if(!l){if(c[o+272>>2]|0){if(a[o+81>>0]|0){x=160;break}}else{do if(!(0<0|(0==0?(e[o+276>>1]|0)>>>0>>0:0))){m=o+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];x=o+284|0;c[x>>2]=(c[x>>2]|0)+1;x=159;break m}m=o+296|0;l=c[m>>2]|0;if(!l){l=o+292|0;break}else{c[m>>2]=c[l>>2];x=o+284|0;c[x>>2]=(c[x>>2]|0)+1;x=159;break m}}else l=o+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(o,n,0)|0;x=159}else{m=l;do if((c[o+304>>2]|0)>>>0<=m>>>0){if((c[o+308>>2]|0)>>>0<=m>>>0)break;if(!(0<0|(0==0?(e[o+276>>1]|0)>>>0>>0:0))){x=169;break m}l=Zd(o,l,n,0)|0;x=159;break m}while(0);l=Zd(o,l,n,0)|0;x=159}while(0);if((x|0)==159)if(!l)x=160;else x=169;n:do if((x|0)==160){if(!j)break;if(c[o+480>>2]|0){Xd(o,j);break}l=j;do if((c[o+304>>2]|0)>>>0<=l>>>0){if((c[o+308>>2]|0)>>>0<=l>>>0)break;w=o+300|0;c[j>>2]=c[w>>2];c[w>>2]=j;break n}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{w=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}else if((x|0)==169){o=c[q>>2]|0;w=o+1|0;c[q>>2]=w;c[l+(o<<2)>>2]=j;c[l+(w<<2)>>2]=0;c[p>>2]=l}while(0);w=c[q>>2]|0;m=(w<<2)+8|0;n=c[f>>2]|0;if((w+3|0)>=(c[n+116>>2]|0)){c[y>>2]=c[k>>2];cd(f,38221,y)}j=c[p>>2]|0;o:do if(!j){if(c[n+272>>2]|0){if(a[n+81>>0]|0)break}else{do if(!(0<0|(0==0?(e[n+276>>1]|0)>>>0>>0:0))){j=n+300|0;l=c[j>>2]|0;if(l|0){c[j>>2]=c[l>>2];z=n+284|0;c[z>>2]=(c[z>>2]|0)+1;z=l;x=189;break o}j=n+296|0;l=c[j>>2]|0;if(!l){j=n+292|0;break}else{c[j>>2]=c[l>>2];z=n+284|0;c[z>>2]=(c[z>>2]|0)+1;z=l;x=189;break o}}else j=n+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}z=_d(n,m,0)|0;x=189}else{l=j;do if((c[n+304>>2]|0)>>>0<=l>>>0){if((c[n+308>>2]|0)>>>0<=l>>>0)break;if(!(0<0|(0==0?(e[n+276>>1]|0)>>>0>>0:0))){x=190;break o}z=Zd(n,j,m,0)|0;x=189;break o}while(0);z=Zd(n,j,m,0)|0;x=189}while(0);if((x|0)==189?z|0:0){j=z;x=190}if((x|0)==190){y=c[q>>2]|0;z=y+1|0;c[q>>2]=z;c[j+(y<<2)>>2]=0;c[j+(z<<2)>>2]=0;c[p>>2]=j}n=c[k>>2]|0;p:do if(!n)o=0;else{o=(Eu(n)|0)+1|0;q:do if(t){z=Sv(o|0,0,-1,-1)|0;y=L()|0;if(y>>>0>0|(y|0)==0&z>>>0>2147483390){o=0;break p}if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](o)|0;x=216;break}j=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){z=c[14978]|0;y=Tv(l|0,m|0,j|0,((j|0)<0)<<31>>31|0)|0;w=L()|0;c[14768]=((w|0)<0|(w|0)==0&y>>>0<=z>>>0)&1}j=Wa[c[29340>>2]&127](j)|0;if(!j){o=0;break p}l=Wa[c[29352>>2]&127](j)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0<=(c[14987]|0)>>>0)break;c[14987]=l}else{if(c[u+272>>2]|0){if(a[u+81>>0]|0){o=0;break p}}else{do if(!(0<0|(0==0?(e[u+276>>1]|0)>>>0>>0:0))){l=u+300|0;j=c[l>>2]|0;if(j|0){c[l>>2]=c[j>>2];x=u+284|0;c[x>>2]=(c[x>>2]|0)+1;x=216;break q}l=u+296|0;j=c[l>>2]|0;if(!j){j=u+292|0;break}else{c[l>>2]=c[j>>2];x=u+284|0;c[x>>2]=(c[x>>2]|0)+1;x=216;break q}}else j=u+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(u,o,0)|0;x=216}while(0);if((x|0)==216)if(!j){o=0;break}ew(j|0,n|0,o|0)|0;o=j}while(0);z=c[q>>2]|0;m=(z<<2)+8|0;n=c[f>>2]|0;if((z+3|0)>=(c[n+116>>2]|0)){c[A>>2]=c[k>>2];cd(f,38221,A)}j=c[p>>2]|0;r:do if(!j){if(c[n+272>>2]|0){if(a[n+81>>0]|0){x=238;break}}else{do if(!(0<0|(0==0?(e[n+276>>1]|0)>>>0>>0:0))){l=n+300|0;j=c[l>>2]|0;if(j|0){c[l>>2]=c[j>>2];x=n+284|0;c[x>>2]=(c[x>>2]|0)+1;x=237;break r}l=n+296|0;j=c[l>>2]|0;if(!j){j=n+292|0;break}else{c[l>>2]=c[j>>2];x=n+284|0;c[x>>2]=(c[x>>2]|0)+1;x=237;break r}}else j=n+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(n,m,0)|0;x=237}else{l=j;do if((c[n+304>>2]|0)>>>0<=l>>>0){if((c[n+308>>2]|0)>>>0<=l>>>0)break;if(!(0<0|(0==0?(e[n+276>>1]|0)>>>0>>0:0))){x=247;break r}j=Zd(n,j,m,0)|0;x=237;break r}while(0);j=Zd(n,j,m,0)|0;x=237}while(0);if((x|0)==237)if(!j)x=238;else x=247;s:do if((x|0)==238){if(!o)break;if(c[n+480>>2]|0){Xd(n,o);break}j=o;do if((c[n+304>>2]|0)>>>0<=j>>>0){if((c[n+308>>2]|0)>>>0<=j>>>0)break;A=n+300|0;c[o>>2]=c[A>>2];c[A>>2]=o;break s}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{A=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-A;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}else if((x|0)==247){z=c[q>>2]|0;A=z+1|0;c[q>>2]=A;c[j+(z<<2)>>2]=o;c[j+(A<<2)>>2]=0;c[p>>2]=j}while(0);if(!(Ai(u,k,r,c[s+8>>2]|0,B)|0)){j=c[v>>2]|0;break g}k=c[B>>2]|0;c[C>>2]=k;cd(f,31408,C);t:do if(k|0){do if(!t){if(c[u+480>>2]|0){Xd(u,k);break t}j=k;if((c[u+304>>2]|0)>>>0>j>>>0)break;if((c[u+308>>2]|0)>>>0<=j>>>0)break;C=u+300|0;c[k>>2]=c[C>>2];c[C>>2]=k;break t}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{C=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-C;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);j=c[v>>2]|0;if(!j)break h;C=j+36|0;c[C>>2]=c[C>>2]|2;do if(t)x=263;else{if(!(c[u+480>>2]|0)){x=263;break}Vi(u,j)}while(0);do if((x|0)==263){B=j+32|0;C=(c[B>>2]|0)+-1|0;c[B>>2]=C;if(C|0)break;Vi(u,j)}while(0);c[v>>2]=0;break h}while(0);if((x|0)==105?(c[k>>2]=0,!t):0)x=106;if((x|0)==106){if(c[u+480>>2]|0){Xd(u,k);break}C=k;if((c[u+304>>2]|0)>>>0<=C>>>0?(c[u+308>>2]|0)>>>0>C>>>0:0){C=u+300|0;c[k>>2]=c[C>>2];c[C>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{C=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-C;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);break c}while(0);f=j;Ra=F;return f|0}}while(0);if(!(g&2)){a[f+17>>0]=1;break}else{f=0;Ra=F;return f|0}}else{if(!(c[j+56>>2]|0)){f=j;Ra=F;return f|0}if(!(a[f+25>>0]|0)){f=j;Ra=F;return f|0}}while(0);j=(g&1|0)==0?36996:36983;if(!i){c[E>>2]=j;c[E+4>>2]=h;cd(f,37020,E);f=0;Ra=F;return f|0}else{c[D>>2]=j;c[D+4>>2]=i;c[D+8>>2]=h;cd(f,37010,D);f=0;Ra=F;return f|0}return 0}function cd(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;n=Ra;Ra=Ra+112|0;k=n+88|0;o=n;m=c[b>>2]|0;c[o>>2]=e;g=c[m+108>>2]|0;i=k+4|0;c[i>>2]=n+16;c[k>>2]=m;c[k+8>>2]=70;f=k+12|0;c[f>>2]=g;g=k+16|0;c[g>>2]=0;j=k+20|0;a[j>>0]=0;h=k+21|0;a[h>>0]=1;tb(k,d,o);e=c[i>>2]|0;if(((e|0)!=0?(a[e+(c[g>>2]|0)>>0]=0,(c[f>>2]|0)!=0):0)?(a[h>>0]&4)==0:0)f=$d(k)|0;else f=c[i>>2]|0;if(((a[j>>0]|0)==7?(l=m+81|0,(a[l>>0]|0)==0):0)?(a[m+82>>0]|0)==0:0){a[l>>0]=1;if((c[m+180>>2]|0)>0)c[m+264>>2]=1;e=m+272|0;c[e>>2]=(c[e>>2]|0)+1;e=c[m+236>>2]|0;if(e|0)c[e+12>>2]=7}if(!(a[m+85>>0]|0)){e=b+36|0;c[e>>2]=(c[e>>2]|0)+1;e=b+4|0;d=c[e>>2]|0;do if(d|0){if(c[m+480>>2]|0){Xd(m,d);break}o=d;if((c[m+304>>2]|0)>>>0<=o>>>0?(c[m+308>>2]|0)>>>0>o>>>0:0){o=m+300|0;c[d>>2]=c[o>>2];c[o>>2]=d;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{o=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}while(0);c[e>>2]=f;c[b+12>>2]=1;Ra=n;return}if(!f){Ra=n;return}if(c[m+480>>2]|0){Xd(m,f);Ra=n;return}o=f;if((c[m+304>>2]|0)>>>0<=o>>>0?(c[m+308>>2]|0)>>>0>o>>>0:0){o=m+300|0;c[f>>2]=c[o>>2];c[o>>2]=f;Ra=n;return}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);Ra=n;return}else{o=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);Ra=n;return}}function dd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=Ra;Ra=Ra+112|0;h=f+88|0;i=f;c[i>>2]=e;g=c[b+108>>2]|0;c[h+4>>2]=f+16;c[h>>2]=b;c[h+8>>2]=70;c[h+12>>2]=g;c[h+16>>2]=0;g=h+20|0;a[g>>0]=0;a[h+21>>0]=1;tb(h,d,i);e=yb(h)|0;if((a[g>>0]|0)!=7){Ra=f;return e|0}d=b+81|0;if(a[d>>0]|0){Ra=f;return e|0}if(a[b+82>>0]|0){Ra=f;return e|0}a[d>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;d=b+272|0;c[d>>2]=(c[d>>2]|0)+1;d=c[b+236>>2]|0;if(!d){Ra=f;return e|0}c[d+12>>2]=7;Ra=f;return e|0}function ed(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=d+108|0;h=c[o>>2]|0;n=d+112|0;i=c[n>>2]|0;if((h+f|0)>(i|0)){m=c[d+12>>2]|0;k=(i|0)==0;h=cw(i|0,((i|0)<0)<<31>>31|0,1)|0;j=L()|0;h=k?51:h;j=k?0:j;k=c[m>>2]|0;l=c[k+128>>2]|0;i=((l|0)<0)<<31>>31;if((j|0)>(i|0)|(j|0)==(i|0)&h>>>0>l>>>0){h=k+81|0;if(a[h>>0]|0){o=0;return o|0}if(a[k+82>>0]|0){o=0;return o|0}a[h>>0]=1;if((c[k+180>>2]|0)>0)c[k+264>>2]=1;h=k+272|0;c[h>>2]=(c[h>>2]|0)+1;h=c[k+236>>2]|0;if(!h){o=0;return o|0}c[h+12>>2]=7;o=0;return o|0}l=d+104|0;i=c[l>>2]|0;d=Yv(h|0,j|0,20,0)|0;j=L()|0;a:do if(!i){if(c[k+272>>2]|0){if(a[k+81>>0]|0){o=0;return o|0}}else{do if(!(j>>>0>0|((j|0)==0?d>>>0>(e[k+276>>1]|0)>>>0:0))){h=k+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];d=k+284|0;c[d>>2]=(c[d>>2]|0)+1;d=27;break a}h=k+296|0;i=c[h>>2]|0;if(!i){h=k+292|0;break}else{c[h>>2]=c[i>>2];d=k+284|0;c[d>>2]=(c[d>>2]|0)+1;d=27;break a}}else h=k+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}i=_d(k,d,j)|0;d=27}else{h=i;if((c[k+304>>2]|0)>>>0<=h>>>0?(c[k+308>>2]|0)>>>0>h>>>0:0){if(!(j>>>0>0|((j|0)==0?d>>>0>(e[k+276>>1]|0)>>>0:0))){h=k;d=29;break}i=Zd(k,i,d,j)|0;d=27;break}i=Zd(k,i,d,j)|0;d=27}while(0);do if((d|0)==27)if(i){h=c[m>>2]|0;if(!h){h=i;d=31;break}else{d=29;break}}else{o=0;return o|0}while(0);if((d|0)==29){k=i;if((c[h+304>>2]|0)>>>0<=k>>>0?(c[h+308>>2]|0)>>>0>k>>>0:0)h=e[h+276>>1]|0;else{h=i;d=31}}if((d|0)==31){i=h;h=Wa[c[29352>>2]&127](h)|0}c[m+48>>2]=h;c[n>>2]=(h>>>0)/20|0;c[l>>2]=i;h=c[o>>2]|0}else i=c[d+104>>2]|0;l=i+(h*20|0)|0;if((f|0)>0){j=l;k=0;h=g;while(1){g=a[h>>0]|0;a[j>>0]=g;c[j+4>>2]=a[h+1>>0];n=a[h+2>>0]|0;i=n<<24>>24;d=j+8|0;c[d>>2]=i;if(n<<24>>24>0?(a[4368+(g&255)>>0]&1)!=0:0)c[d>>2]=(c[o>>2]|0)+i;c[j+12>>2]=a[h+3>>0];a[j+1>>0]=0;c[j+16>>2]=0;b[j+2>>1]=0;k=k+1|0;if((k|0)==(f|0))break;else{j=j+20|0;h=h+4|0}}h=c[o>>2]|0}c[o>>2]=h+f;o=l;return o|0}function fd(b,d){b=b|0;d=d|0;var e=0,f=0;e=1<>2]=c[f>>2]|e;if((d|0)==1)return;if(!(a[(c[(c[(c[b>>2]|0)+16>>2]|0)+(d<<4)+4>>2]|0)+9>>0]|0))return;f=b+156|0;c[f>>2]=c[f>>2]|e;return}function gd(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=c[b>>2]|0;if(a[g+81>>0]|0){if((f|0)==-12)return;kg(g,f,e);return}if((d|0)<0)d=(c[b+108>>2]|0)+-1|0;g=c[b+104>>2]|0;h=g+(d*20|0)|0;if((f|0)<=-1?(i=g+(d*20|0)+1|0,(a[i>>0]|0)==0):0){if((f|0)==-3){c[g+(d*20|0)+16>>2]=e;a[i>>0]=-3;return}if(!e)return;c[g+(d*20|0)+16>>2]=e;a[i>>0]=f;if((f|0)!=-12)return;f=e+12|0;c[f>>2]=(c[f>>2]|0)+1;return}Ei(b,h,e,f);return}function hd(f,g){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,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=Ra;Ra=Ra+16|0;m=F;E=c[f>>2]|0;D=b[g+196>>1]|0;j=D<<16>>16;i=c[g+44>>2]|0;B=c[g+40>>2]|0;c[m>>2]=c[g+96>>2];i=B+i|0;i=i+((B|0)==0&(i|0)>0&1)|0;k=((c[f+108>>2]|0)*20|0)+7&-8;n=(c[f+104>>2]|0)+k|0;k=(c[g+48>>2]|0)-k&-8;l=((k|0)<0)<<31>>31;Fi(f,m);if(!(a[g+20>>0]|0))h=0;else h=((a[g+21>>0]|0)!=0&1)<<7&65535;C=f+149|0;p=(d[C>>0]|d[C+1>>0]<<8)&-129|h;a[C>>0]=p;a[C+1>>0]=p>>8;y=g+199|0;i=(i|0)<10&(a[y>>0]|0)!=0?10:i;p=p&-4;a[C>>0]=p;a[C+1>>0]=p>>8;p=i*40|0;t=(l|0)<0|(l|0)==0&k>>>0

        >>0;q=Tv(k|0,l|0,p|0,0)|0;z=L()|0;x=t?k:q;l=t?l:z;z=f+88|0;c[z>>2]=t?0:n+q|0;q=j*40|0;s=(l|0)<0|(l|0)==0&x>>>0>>0;r=Tv(x|0,l|0,q|0,0)|0;v=L()|0;x=s?x:r;v=s?l:v;t=Sv((s?q:0)|0,(s?0:0)|0,(t?p:0)|0,(t?0:0)|0)|0;l=L()|0;w=f+100|0;c[w>>2]=s?0:n+r|0;r=Sv(c[m>>2]<<2|0,0,7,0)|0;r=r&-8;s=(L()|0)&1;u=(v|0)<(s|0)|(v|0)==(s|0)&x>>>0>>0;A=Tv(x|0,v|0,r|0,s|0)|0;k=L()|0;x=u?x:A;k=u?v:k;m=Sv(t|0,l|0,(u?r:0)|0,(u?s:0)|0)|0;l=L()|0;t=f+92|0;c[t>>2]=u?0:n+A|0;A=B<<2;u=Sv(A|0,0,7,0)|0;u=u&-8;v=(L()|0)&1;h=(k|0)<(v|0)|(k|0)==(v|0)&x>>>0>>0;k=Tv(x|0,k|0,u|0,v|0)|0;L()|0;l=Sv(m|0,l|0,(h?u:0)|0,(h?v:0)|0)|0;m=L()|0;x=f+96|0;c[x>>2]=h?0:n+k|0;if(!((l|0)==0&(m|0)==0)){a:do if(c[E+272>>2]|0)if(!(a[E+81>>0]|0))o=15;else n=0;else{do if(!(m>>>0>0|((m|0)==0?l>>>0>(e[E+276>>1]|0)>>>0:0))){h=E+300|0;k=c[h>>2]|0;if(k|0){c[h>>2]=c[k>>2];n=E+284|0;c[n>>2]=(c[n>>2]|0)+1;n=k;break a}h=E+296|0;k=c[h>>2]|0;if(!k){h=E+292|0;break}else{c[h>>2]=c[k>>2];n=E+284|0;c[n>>2]=(c[n>>2]|0)+1;n=k;break a}}else h=E+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;o=15}while(0);if((o|0)==15)n=_d(E,l,m)|0;c[f+192>>2]=n;h=E+81|0;if(!(a[h>>0]|0)){k=c[z>>2]|0;if(!k)if(m>>>0<0|(m|0)==0&l>>>0

        >>0)k=0;else{l=Tv(l|0,m|0,p|0,0)|0;k=n+l|0;m=L()|0}c[z>>2]=k;k=c[w>>2]|0;if(!k)if((m|0)<0|(m|0)==0&l>>>0>>0)k=0;else{l=Tv(l|0,m|0,q|0,0)|0;k=n+l|0;m=L()|0}c[w>>2]=k;k=c[t>>2]|0;if(!k)if((m|0)<(s|0)|(m|0)==(s|0)&l>>>0>>0)k=0;else{l=Tv(l|0,m|0,r|0,s|0)|0;k=n+l|0;m=L()|0}c[t>>2]=k;k=c[x>>2]|0;if(!k)if((m|0)<(v|0)|(m|0)==(v|0)&l>>>0>>0)k=0;else{k=Tv(l|0,m|0,u|0,v|0)|0;L()|0;k=n+k|0}c[x>>2]=k}}else h=E+81|0;g=g+216|0;c[f+128>>2]=c[g>>2];c[g>>2]=0;g=(d[C>>0]|d[C+1>>0]<<8)&-13|a[y>>0]<<2&12;a[C>>0]=g;a[C+1>>0]=g>>8;if(a[h>>0]|0){b[f+16>>1]=0;c[f+28>>2]=0;c[f+24>>2]=0;E=f+20|0;c[E>>2]=770837923;E=f+36|0;c[E>>2]=-1;E=f+40|0;c[E>>2]=0;E=f+146|0;a[E>>0]=2;E=f+44|0;c[E>>2]=0;E=f+32|0;c[E>>2]=1;E=f+147|0;a[E>>0]=-1;E=f+48|0;c[E>>2]=0;E=f+64|0;f=E;c[f>>2]=0;E=E+4|0;c[E>>2]=0;Ra=F;return}c[f+28>>2]=B;b[f+16>>1]=D;if(D<<16>>16>0){h=c[w>>2]|0;while(1){c[h+32>>2]=E;b[h+8>>1]=1;c[h+24>>2]=0;if((j|0)>1){j=j+-1|0;h=h+40|0}else break}}c[f+24>>2]=i;if((i|0)>0){h=c[z>>2]|0;while(1){c[h+32>>2]=E;b[h+8>>1]=128;c[h+24>>2]=0;if((i|0)>1){i=i+-1|0;h=h+40|0}else break}}gw(c[x>>2]|0,0,A|0)|0;E=f+20|0;c[E>>2]=770837923;E=f+36|0;c[E>>2]=-1;E=f+40|0;c[E>>2]=0;E=f+146|0;a[E>>0]=2;E=f+44|0;c[E>>2]=0;E=f+32|0;c[E>>2]=1;E=f+147|0;a[E>>0]=-1;E=f+48|0;c[E>>2]=0;E=f+64|0;f=E;c[f>>2]=0;E=E+4|0;c[E>>2]=0;Ra=F;return}function id(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=Ra;Ra=Ra+32|0;n=r+16|0;m=r+8|0;o=r;q=f+16|0;l=c[q>>2]|0;j=c[l+88>>2]|0;b[j+48>>1]=4;j=j+40|0;c[j>>2]=g;c[j+4>>2]=h;j=l+36|0;if((c[j>>2]|0)>4){c[j>>2]=4;k=Rg(l)|0}else k=Gc(c[q>>2]|0)|0;if((k|0)!=100){j=c[q>>2]|0;if(!j){p=0;q=k;c[i>>2]=p;Ra=r;return q|0}k=gc(j)|0;c[q>>2]=0;j=c[f+20>>2]|0;if(!k){p=m;c[p>>2]=g;c[p+4>>2]=h;p=dd(j,36955,m)|0;q=1;c[i>>2]=p;Ra=r;return q|0}else{p=pd(j)|0;c[n>>2]=p;p=dd(j,31408,n)|0;q=k;c[i>>2]=p;Ra=r;return q|0}}l=c[c[l+96>>2]>>2]|0;j=b[f+8>>1]|0;a:do if((e[l+58>>1]|0)>(j&65535)){j=j&65535;k=c[l+88+(j<<2)>>2]|0;if(k>>>0<12){j=c[f+20>>2]|0;switch(k|0){case 7:{k=36942;break a}case 0:{p=9;break a}default:{}}k=36947;break}c[f+4>>2]=c[l+88+((b[l+56>>1]|0)+j<<2)>>2];if(k>>>0>127)j=(k+-12|0)>>>1;else j=d[3520+k>>0]|0;c[f>>2]=j;p=c[l+40>>2]|0;c[f+12>>2]=p;q=p+1|0;a[q>>0]=a[q>>0]|16;a[(c[p+8>>2]|0)+11>>0]=1;p=0;q=0;c[i>>2]=p;Ra=r;return q|0}else{j=c[f+20>>2]|0;p=9}while(0);if((p|0)==9)k=36937;c[o>>2]=k;p=dd(j,36908,o)|0;gc(c[q>>2]|0)|0;c[q>>2]=0;q=1;c[i>>2]=p;Ra=r;return q|0}function jd(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;m=Ra;Ra=Ra+16|0;h=m;if(!b){c[h>>2]=58063;c[h+4>>2]=91595;c[h+8>>2]=31517;Db(21,32001,h);l=21;Ra=m;return l|0}k=c[b+20>>2]|0;i=b+16|0;j=c[i>>2]|0;do if((f|e|0)>=0?(n=Sv(f|0,((f|0)<0)<<31>>31|0,e|0,((e|0)<0)<<31>>31|0)|0,p=L()|0,h=c[b>>2]|0,o=((h|0)<0)<<31>>31,!((p|0)>(o|0)|(p|0)==(o|0)&n>>>0>h>>>0)):0)if(!j){h=4;l=24}else{h=c[b+12>>2]|0;p=c[h+8>>2]|0;c[(c[p+4>>2]|0)+4>>2]=c[p>>2];h=Za[g&127](h,(c[b+4>>2]|0)+f|0,e,d)|0;if((h|0)!=4){c[j+40>>2]=h;c[k+64>>2]=h;if(h|0){l=27;break}if(!(c[k+260>>2]|0)){h=0;break}Ne(k,0);h=0;break}f=j+20|0;h=c[f>>2]|0;if((h|0)<832317811)switch(h|0){case 770837923:{l=8;break}default:{}}else switch(h|0){case 832317811:{l=8;break}default:{}}if((l|0)==8)kc(j)|0;d=c[j>>2]|0;kb(d,j);e=c[j+4>>2]|0;b=j+8|0;h=c[b>>2]|0;if(!e)c[d+4>>2]=h;else{c[e+8>>2]=h;h=c[b>>2]|0}if(h|0)c[h+4>>2]=e;c[f>>2]=1443283912;c[j>>2]=0;do if(d){if(c[d+480>>2]|0){Xd(d,j);break}p=j;if((c[d+304>>2]|0)>>>0<=p>>>0?(c[d+308>>2]|0)>>>0>p>>>0:0){p=d+300|0;c[j>>2]=c[p>>2];c[p>>2]=j}else l=20}else l=20;while(0);do if((l|0)==20)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{p=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);c[i>>2]=0;h=4;l=24}else{h=1;l=24}while(0);if((l|0)==24){c[k+64>>2]=h;l=27}if((l|0)==27)Ne(k,h);if((h|0)==3082|(a[k+81>>0]|0)!=0){og(k);p=7;Ra=m;return p|0}else{p=c[k+68>>2]&h;Ra=m;return p|0}return 0}function kd(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;if(!(a[b>>0]|0)){e=cg(b,c,d,e,0)|0;return e|0}else{e=Gi(b,c,d,e)|0;return e|0}return 0}function ld(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;k=Ra;Ra=Ra+32|0;j=k+16|0;f=k;h=k+20|0;if(!b){c[f>>2]=58063;c[f+4>>2]=91693;c[f+8>>2]=31517;Db(21,32001,f);j=21;Ra=k;return j|0}i=c[b+20>>2]|0;if(!(c[b+16>>2]|0))f=4;else{f=id(b,d,e,h)|0;do if(f|0?(g=c[h>>2]|0,h=(g|0)==0,c[j>>2]=g,Vb(i,f,h?0:31408,j),!h):0){if(i|0){if(c[i+480>>2]|0){Xd(i,g);break}j=g;if((c[i+304>>2]|0)>>>0<=j>>>0?(c[i+308>>2]|0)>>>0>j>>>0:0){j=i+300|0;c[g>>2]=c[j>>2];c[j>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{j=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0)}if((f|0)==3082|(a[i+81>>0]|0)!=0){og(i);j=7;Ra=k;return j|0}else{j=c[i+68>>2]&f;Ra=k;return j|0}return 0}function md(b,c,e,f){b=b|0;c=c|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,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=Ra;Ra=Ra+16|0;I=M;C=d[e+1>>0]|0;D=d[e>>0]|0;B=e+2|0;G=(a[e+3>>0]|0)==0;r=0;a:while(1){x=c;c=b;while(1){j=a[c>>0]|0;c=c+1|0;b=j&255;if(j<<24>>24>-1)if(!(j<<24>>24)){E=124;break a}else{g=c;A=b;E=10}else if((j&255)>191){b=d[2736+(b+-192)>>0]|0;j=a[c>>0]|0;if((j&-64)<<24>>24==-128)do{c=c+1|0;b=b<<6|j&63;j=a[c>>0]|0}while((j&-64)<<24>>24==-128);if((b&-2|0)==65534|(b>>>0<128|(b&-2048|0)==55296)){y=c;z=65533}else{g=c;A=b;E=10}}else{g=c;A=b;E=10}if((E|0)==10){E=0;if((A|0)==(D|0)){E=11;break a}else{y=g;z=A}}if((z|0)!=(f|0)){i=z;w=r;u=y;break}if(!(a[B>>0]|0)){E=66;break}c=x+1|0;b=a[x>>0]|0;j=b&255;if((b&255)<=191)if(!(b<<24>>24)){h=1;E=125;break a}else q=c;else{b=d[2736+(j+-192)>>0]|0;j=a[c>>0]|0;if((j&-64)<<24>>24==-128)do{c=c+1|0;b=b<<6|j&63;j=a[c>>0]|0}while((j&-64)<<24>>24==-128);q=c;j=(b&-2|0)==65534|(b>>>0<128|(b&-2048|0)==55296)?65533:b}c=y+1|0;b=a[y>>0]|0;k=b&255;do if((b&255)<=191){if(b<<24>>24==94){l=y+2|0;p=a[c>>0]|0;c=p&255;if((p&255)>191){c=d[2736+(c+-192)>>0]|0;k=a[l>>0]|0;if((k&-64)<<24>>24==-128){b=c;c=l;do{c=c+1|0;b=b<<6|k&63;k=a[c>>0]|0}while((k&-64)<<24>>24==-128)}else{b=c;c=l}n=1;m=0;k=(b&-2|0)==65534|(b>>>0<128|(b&-2048|0)==55296)?65533:b;break}else{n=1;k=c;c=l}}else n=0;if((k|0)==93){m=(j|0)==93&1;l=c+1|0;p=a[c>>0]|0;k=p&255;if((p&255)>191){c=d[2736+(k+-192)>>0]|0;k=a[l>>0]|0;if((k&-64)<<24>>24==-128){b=c;c=l;do{c=c+1|0;b=b<<6|k&63;k=a[c>>0]|0}while((k&-64)<<24>>24==-128)}else{b=c;c=l}k=(b&-2|0)==65534|(b>>>0<128|(b&-2048|0)==55296)?65533:b}else c=l}else m=0}else{b=d[2736+(k+-192)>>0]|0;k=a[c>>0]|0;if((k&-64)<<24>>24==-128)do{c=c+1|0;b=b<<6|k&63;k=a[c>>0]|0}while((k&-64)<<24>>24==-128);n=0;m=0;k=(b&-2|0)==65534|(b>>>0<128|(b&-2048|0)==55296)?65533:b}while(0);p=0;o=m;b:while(1){switch(k|0){case 0:{h=1;E=125;break a}case 93:break b;case 45:{m=a[c>>0]|0;if(m<<24>>24!=93?(p|0)!=0&m<<24>>24!=0:0){b=c+1|0;l=m&255;if((m&255)>191){l=d[2736+(l+-192)>>0]|0;m=a[b>>0]|0;if((m&-64)<<24>>24==-128)do{b=b+1|0;l=l<<6|m&63;m=a[b>>0]|0}while((m&-64)<<24>>24==-128);l=(l&-2|0)==65534|(l>>>0<128|(l&-2048|0)==55296)?65533:l}v=0;t=b;s=j>>>0

        >>0|j>>>0>l>>>0?o:1}else E=105;break}default:E=105}if((E|0)==105){E=0;v=k;t=c;s=(j|0)==(k|0)?1:o}c=t+1|0;p=a[t>>0]|0;k=p&255;if((p&255)>191){b=d[2736+(k+-192)>>0]|0;k=a[c>>0]|0;if((k&-64)<<24>>24==-128)do{c=c+1|0;b=b<<6|k&63;k=a[c>>0]|0}while((k&-64)<<24>>24==-128);k=(b&-2|0)==65534|(b>>>0<128|(b&-2048|0)==55296)?65533:b}p=v;o=s}if((o|0)==(n|0)){h=1;E=125;break a}else x=q}do if((E|0)==66){E=0;b=y+1|0;c=a[y>>0]|0;i=c&255;if((c&255)<=191)if(!(c<<24>>24)){h=1;E=125;break a}else{w=b;u=b;break}c=d[2736+(i+-192)>>0]|0;i=a[b>>0]|0;if((i&-64)<<24>>24==-128)do{b=b+1|0;c=c<<6|i&63;i=a[b>>0]|0}while((i&-64)<<24>>24==-128);i=(c&-2|0)==65534|(c>>>0<128|(c&-2048|0)==55296)?65533:c;w=b;u=b}while(0);r=a[x>>0]|0;c=x+1|0;b=r&255;if((r&255)>191){b=d[2736+(b+-192)>>0]|0;j=a[c>>0]|0;if((j&-64)<<24>>24==-128)do{c=c+1|0;b=b<<6|j&63;j=a[c>>0]|0}while((j&-64)<<24>>24==-128);b=(b&-2|0)==65534|(b>>>0<128|(b&-2048|0)==55296)?65533:b}do if((i|0)!=(b|0)){if(!G?((b|i)>>>0<128?(a[208+(i&255)>>0]|0)==(a[208+(b&255)>>0]|0):0):0)break;if((i|0)!=(C|0)){h=1;E=125;break a}if(!((u|0)!=(w|0)&(b|0)!=0)){h=1;E=125;break a}}while(0);r=w;b=u}if((E|0)==11){j=x;c:while(1){while(1){A=a[g>>0]|0;g=g+1|0;c=A&255;if((A&255)>191){c=d[2736+(c+-192)>>0]|0;i=a[g>>0]|0;if((i&-64)<<24>>24==-128)do{g=g+1|0;c=c<<6|i&63;i=a[g>>0]|0}while((i&-64)<<24>>24==-128);b=g;c=(c&-2|0)==65534|(c>>>0<128|(c&-2048|0)==55296)?65533:c}else b=g;g=(c|0)==(C|0);if(!((c|0)==(D|0)|g))break c;if(g)break;else g=b}g=j+1|0;i=a[j>>0]|0;if((i&255)>191){if((a[g>>0]&-64)<<24>>24==-128)do g=g+1|0;while((a[g>>0]&-64)<<24>>24==-128)}else if(!(i<<24>>24)){h=2;E=125;break}j=g;g=b}if((E|0)==125){Ra=M;return h|0}if(!c){f=0;Ra=M;return f|0}do if((c|0)==(f|0)){if(!(a[B>>0]|0)){g=b+1|0;c=a[b>>0]|0;h=c&255;if((c&255)<=191){if(!(c<<24>>24))h=2;else{F=h;H=g;E=43;break}Ra=M;return h|0}c=d[2736+(h+-192)>>0]|0;h=a[g>>0]|0;if((h&-64)<<24>>24==-128)do{g=g+1|0;c=c<<6|h&63;h=a[g>>0]|0}while((h&-64)<<24>>24==-128);if((c&-2|0)==65534|(c>>>0<128|(c&-2048|0)==55296)){J=65533;K=g;break}else{F=c;H=g;E=43;break}}i=b+-1|0;c=a[j>>0]|0;if(!(c<<24>>24)){f=2;Ra=M;return f|0}g=j;while(1){h=md(i,g,e,f)|0;if((h|0)!=1){E=125;break}h=g+1|0;if((c&255)>191){g=h;while(1){c=a[g>>0]|0;if((c&-64)<<24>>24==-128)g=g+1|0;else break}}else{g=h;c=a[h>>0]|0}if(!(c<<24>>24)){h=2;E=125;break}}if((E|0)==125){Ra=M;return h|0}}else{F=c;H=b;E=43}while(0);if((E|0)==43)if(F>>>0<129){if(G){a[I>>0]=F;g=0}else{g=F&255;a[I>>0]=F&(~(a[880+g>>0]&32)&255);g=a[208+g>>0]|0;a[I+2>>0]=0}a[I+1>>0]=g;g=j+(Mv(j,I)|0)|0;d:do if(a[g>>0]|0){while(1){g=g+1|0;c=md(H,g,e,f)|0;if((c|0)!=1)break;g=g+(Mv(g,I)|0)|0;if(!(a[g>>0]|0))break d}f=c;Ra=M;return f|0}while(0);f=2;Ra=M;return f|0}else{J=F;K=H}g=j;while(1){h=a[g>>0]|0;g=g+1|0;c=h&255;if(h<<24>>24>-1){if(!(h<<24>>24)){h=2;E=125;break}}else if((h&255)>191){c=d[2736+(c+-192)>>0]|0;h=a[g>>0]|0;if((h&-64)<<24>>24==-128)do{g=g+1|0;c=c<<6|h&63;h=a[g>>0]|0}while((h&-64)<<24>>24==-128);c=(c&-2|0)==65534|(c>>>0<128|(c&-2048|0)==55296)?65533:c}if((c|0)==(J|0)?(L=md(K,g,e,f)|0,(L|0)!=1):0){h=L;E=125;break}}if((E|0)==125){Ra=M;return h|0}}else if((E|0)==124){f=(a[x>>0]|0)!=0&1;Ra=M;return f|0}else if((E|0)==125){Ra=M;return h|0}return 0}function nd(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var 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,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;T=Ra;Ra=Ra+48|0;n=T+24|0;m=T+16|0;l=T+8|0;k=T;J=T+40|0;K=T+36|0;c[K>>2]=0;a:do if(!f){c[k>>2]=31171;Db(21,38253,k)}else{k=c[f+96>>2]|0;b:do if((k|0)<-264537850){switch(k|0){case -1607883113:break;default:break b}R=f+64|0;c[R>>2]=0;if(c[f+260>>2]|0)Ne(f,0);x=(h|0)==0;y=f+32|0;z=f+272|0;A=f+276|0;M=f+81|0;B=f+288|0;N=f+300|0;C=f+296|0;D=f+284|0;E=f+292|0;F=f+82|0;G=f+180|0;H=f+264|0;I=f+236|0;O=f+480|0;P=f+304|0;Q=f+308|0;l=(g|0)==0?59952:g;c:while(1){if(!(a[l>>0]|0)){k=0;w=135;break}c[K>>2]=0;k=qd(f,l,-1,128,0,K,J)|0;do if(!k){p=c[K>>2]|0;if(!p){k=0;l=c[J>>2]|0;break}o=0;m=0;n=0;g=0;l=0;q=0;while(1){k=Gc(p)|0;if(!x){v=(k|0)==100;if(v)if(!n)w=20;else{u=m;t=n;v=g;w=48}else{if((n|0)!=0|(k|0)!=101){w=105;break}if((c[y>>2]&256|0)==0&0==0){w=105;break}else w=20}if((w|0)==20){w=0;n=(p|0)==0;if(n)u=0;else u=e[p+144>>1]|0;m=u<<3|4;d:do if(c[z>>2]|0)if(!(a[M>>0]|0))w=30;else{l=0;w=136;break c}else{do if(0<0|(0==0?(e[A>>1]|0)>>>0>>0:0))l=B;else{l=c[N>>2]|0;if(l|0){c[N>>2]=c[l>>2];c[D>>2]=(c[D>>2]|0)+1;break d}l=c[C>>2]|0;if(!l){l=E;break}c[C>>2]=c[l>>2];c[D>>2]=(c[D>>2]|0)+1;break d}while(0);c[l>>2]=(c[l>>2]|0)+1;w=30}while(0);if((w|0)==30){w=0;l=_d(f,m,0)|0}if(!l){l=0;w=136;break c}do if(u|0){s=p+144|0;t=p+116|0;if(n){gw(l|0,0,u<<2|0)|0;break}r=0;do{q=c[p>>2]|0;do if(r>>>0<(e[s>>1]|0)>>>0){m=c[t>>2]|0;n=m+(r*40|0)|0;e:do if(!n)m=0;else{g=b[m+(r*40|0)+8>>1]|0;do if((g&514)==514){if((a[m+(r*40|0)+10>>0]|0)!=1)break;m=c[m+(r*40|0)+16>>2]|0;break e}while(0);if(g&1){m=0;break}m=Gg(n,1)|0}while(0);n=q+81|0;if(!(a[n>>0]|0))break;if(c[q+180>>2]|0){m=0;break}a[n>>0]=0;c[q+264>>2]=0;m=q+272|0;c[m>>2]=(c[m>>2]|0)+-1;m=0}else m=0;while(0);c[l+(r<<2)>>2]=m;r=r+1|0}while((r|0)!=(u|0))}while(0);if(v){t=1;v=l;q=l;w=48}else{m=u;n=1;g=l;q=l}}if((w|0)==48){w=0;s=v+(u<<2)|0;f:do if((u|0)>0){m=0;while(1){o=(p|0)==0;g:do if(o)n=29576;else{n=c[p+120>>2]|0;do if(n|0){if(m>>>0>=(e[p+144>>1]|0)>>>0)break;n=n+(m*40|0)|0;break g}while(0);n=c[p>>2]|0;c[n+64>>2]=25;Ne(n,25);n=29576}while(0);g=b[n+8>>1]|0;do if((g&514)==514){if((a[n+10>>0]|0)!=1){w=58;break}r=c[n+16>>2]|0}else w=58;while(0);do if((w|0)==58){w=0;if(g&1){r=0;break}r=Gg(n,1)|0}while(0);if(!o){g=c[p>>2]|0;o=p+40|0;n=c[o>>2]|0;if((n|0)==3082|(a[g+81>>0]|0)!=0){og(g);n=7}else n=c[g+68>>2]&n;c[o>>2]=n}c[s+(m<<2)>>2]=r;if(!r){p=c[K>>2]|0;if(!p)n=1;else{n=c[p+120>>2]|0;do if(!n)w=70;else{if(m>>>0>=(e[p+144>>1]|0)>>>0){w=70;break}n=n+(m*40|0)|0;g=p}while(0);if((w|0)==70){w=0;n=c[p>>2]|0;c[n+64>>2]=25;Ne(n,25);n=29576;g=p}n=b[n+8>>1]&31;g=c[g>>2]|0;r=p+40|0;o=c[r>>2]|0;if((o|0)==3082|(a[g+81>>0]|0)!=0){og(g);g=7}else g=c[g+68>>2]&o;c[r>>2]=g}if(!(-1431655766>>>n&1)){w=76;break c}}m=m+1|0;if((m|0)>=(u|0))break f;p=c[K>>2]|0}}else m=0;while(0);c[s+(m<<2)>>2]=0;o=s;m=u;n=t;g=v}if(Za[h&127](i,m,o,g)|0){w=86;break c}}if((k|0)!=100){w=104;break}p=c[K>>2]|0}if((w|0)==104){w=0;p=c[K>>2]|0}else if((w|0)==105)w=0;o=p+20|0;k=c[o>>2]|0;if((k|0)<832317811)switch(k|0){case 770837923:{w=107;break}default:k=0}else switch(k|0){case 832317811:{w=107;break}default:k=0}if((w|0)==107){w=0;k=kc(p)|0}n=c[p>>2]|0;kb(n,p);g=c[p+4>>2]|0;m=p+8|0;l=c[m>>2]|0;if(!g)c[n+4>>2]=l;else{c[g+8>>2]=l;l=c[m>>2]|0}if(l|0)c[l+4>>2]=g;c[o>>2]=1443283912;c[p>>2]=0;do if(n){if(c[n+480>>2]|0){Xd(n,p);break}v=p;if((c[n+304>>2]|0)>>>0<=v>>>0?(c[n+308>>2]|0)>>>0>v>>>0:0){v=n+300|0;c[p>>2]=c[v>>2];c[v>>2]=p}else w=119}else w=119;while(0);do if((w|0)==119)if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{w=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}while(0);c[K>>2]=0;l=c[J>>2]|0;while(1)if(!(a[880+(d[l>>0]|0)>>0]&1))break;else l=l+1|0;if(q){if(c[O>>2]|0){Xd(f,q);break}w=q;if((c[P>>2]|0)>>>0<=w>>>0?(c[Q>>2]|0)>>>0>w>>>0:0){c[q>>2]=c[N>>2];c[N>>2]=q;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{w=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}}while(0);if(k){w=135;break}}if((w|0)==76)if((a[M>>0]|0)==0?(a[F>>0]|0)==0:0){a[M>>0]=1;if((c[G>>2]|0)>0)c[H>>2]=1;c[z>>2]=(c[z>>2]|0)+1;m=c[I>>2]|0;if(m){c[m+12>>2]=7;w=136}else w=136}else w=136;else if((w|0)==86){o=c[K>>2]|0;p=o+20|0;k=c[p>>2]|0;if((k|0)<832317811)switch(k|0){case 770837923:{w=87;break}default:{}}else switch(k|0){case 832317811:{w=87;break}default:{}}if((w|0)==87)kc(o)|0;n=c[o>>2]|0;kb(n,o);g=c[o+4>>2]|0;m=o+8|0;k=c[m>>2]|0;if(!g)c[n+4>>2]=k;else{c[g+8>>2]=k;k=c[m>>2]|0}if(k|0)c[k+4>>2]=g;c[p>>2]=1443283912;c[o>>2]=0;do if(n){if(c[n+480>>2]|0){Xd(n,o);break}J=o;if((c[n+304>>2]|0)>>>0<=J>>>0?(c[n+308>>2]|0)>>>0>J>>>0:0){J=n+300|0;c[o>>2]=c[J>>2];c[J>>2]=o}else w=99}else w=99;while(0);do if((w|0)==99)if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{J=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-J;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}while(0);c[K>>2]=0;c[R>>2]=4;Ne(f,4);k=4}else if((w|0)==135){l=0;p=c[K>>2]|0;w=136}do if((w|0)==136)if(p){q=p+20|0;m=c[q>>2]|0;if((m|0)<832317811)switch(m|0){case 770837923:{w=138;break}default:{}}else switch(m|0){case 832317811:{w=138;break}default:{}}if((w|0)==138)kc(p)|0;g=c[p>>2]|0;kb(g,p);o=c[p+4>>2]|0;n=p+8|0;m=c[n>>2]|0;if(!o)c[g+4>>2]=m;else{c[o+8>>2]=m;m=c[n>>2]|0}if(m|0)c[m+4>>2]=o;c[q>>2]=1443283912;c[p>>2]=0;if(g|0){if(c[g+480>>2]|0){Xd(g,p);break}K=p;if((c[g+304>>2]|0)>>>0<=K>>>0?(c[g+308>>2]|0)>>>0>K>>>0:0){K=g+300|0;c[p>>2]=c[K>>2];c[K>>2]=p;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{K=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);do if(l|0){if(c[O>>2]|0){Xd(f,l);break}O=l;if((c[P>>2]|0)>>>0<=O>>>0?(c[Q>>2]|0)>>>0>O>>>0:0){c[l>>2]=c[N>>2];c[N>>2]=l;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{Q=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);if((k|0)==3082|(a[M>>0]|0)!=0){og(f);g=7}else g=c[f+68>>2]&k;k=(j|0)!=0;if(!(k&(g|0)!=0)){if(!k){j=g;Ra=T;return j|0}c[j>>2]=0;j=g;Ra=T;return j|0}n=pd(f)|0;do if(n|0?(S=(Eu(n)|0)+1|0,Q=Sv(S|0,0,-1,-1)|0,P=L()|0,!(P>>>0>0|(P|0)==0&Q>>>0>2147483390)):0){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](S)|0;if(!k)break}else{k=Wa[c[29356>>2]&127](S)|0;if((c[14985]|0)>>>0>>0)c[14985]=S;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){Q=c[14978]|0;P=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;O=L()|0;c[14768]=((O|0)<0|(O|0)==0&P>>>0<=Q>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}ew(k|0,n|0,S|0)|0;c[j>>2]=k;j=g;Ra=T;return j|0}while(0);c[j>>2]=0;c[R>>2]=7;Ne(f,7);j=7;Ra=T;return j|0}else{if((k|0)<1266094736)switch(k|0){case -264537850:break;default:break b}else switch(k|0){case 1266094736:break;default:break b}c[m>>2]=38244;Db(21,38253,m);break a}while(0);c[l>>2]=50924;Db(21,38253,l)}while(0);c[n>>2]=58063;c[n+4>>2]=118947;c[n+8>>2]=31517;Db(21,32001,n);j=21;Ra=T;return j|0}function od(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return qd(a,b,c,128,0,d,e)|0}function pd(d){d=d|0;var e=0,f=0,g=0,h=0,i=0;i=Ra;Ra=Ra+32|0;g=i+8|0;f=i;a:do if(d){e=c[d+96>>2]|0;b:do if((e|0)>=-264537850)if((e|0)<1266094736)switch(e|0){case -264537850:break b;default:{h=3;break b}}else switch(e|0){case 1266094736:break b;default:{h=3;break b}}else switch(e|0){case -1607883113:break;default:h=3}while(0);if((h|0)==3){c[f>>2]=50924;Db(21,38253,f);c[g>>2]=58063;c[g+4>>2]=157025;c[g+8>>2]=31517;Db(21,32001,g);e=50552;break}if(!(a[d+81>>0]|0)){h=d+64|0;e=c[h>>2]|0;c:do if(!e)e=0;else{g=c[d+260>>2]|0;do if(g){f=b[g+8>>1]|0;if((f&514)==514?(a[g+10>>0]|0)==1:0)e=c[g+16>>2]|0;else{if(f&1)break;e=Gg(g,1)|0}if(e|0)break a;e=c[h>>2]|0}while(0);switch(e|0){case 516:{e=50738;break a}case 100:{e=50760;break a}case 101:{e=50782;break a}default:{e=e&255;if(e>>>0<29)break c;else{e=50724;break a}}}}while(0);if(!(520028155>>>e&1))e=50724;else e=c[22960+(e<<2)>>2]|0}else e=34831}else e=34831;while(0);Ra=i;return e|0}function qd(f,g,h,i,j,k,l){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|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,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;za=Ra;Ra=Ra+352|0;ya=za+56|0;xa=za+48|0;wa=za+40|0;p=za+24|0;o=za+16|0;n=za+8|0;m=za;ta=za+336|0;ua=za+60|0;c[k>>2]=0;a:do if(!f){c[m>>2]=31171;Db(21,38253,m)}else{m=c[f+96>>2]|0;b:do if((m|0)<-264537850){switch(m|0){case -1607883113:break;default:break b}if(!g)break a;ma=f+20|0;n=c[ma>>2]|0;na=f+16|0;if((n|0)>0){o=c[na>>2]|0;m=0;do{p=c[o+(m<<4)+4>>2]|0;if(p|0)c[(c[p+4>>2]|0)+4>>2]=c[p>>2];m=m+1|0}while((m|0)!=(n|0))}D=ua+188|0;E=ua+220|0;F=(i&1|0)==0;G=i>>>2&1;H=ua+25|0;I=ua+24|0;J=f+272|0;K=f+360|0;M=ua+64|0;N=(h|0)>-1;O=f+4|0;P=ua+68|0;Q=(h|0)==0;R=ua+12|0;S=f+112|0;T=g+(h+-1)|0;U=ua+17|0;V=f+81|0;W=f+68|0;X=g+h|0;Y=ua+224|0;Z=Sv(h|0,((h|0)<0)<<31>>31|0,1,0)|0;_=L()|0;$=(l|0)==0;aa=f+276|0;ba=f+288|0;ca=f+300|0;da=f+480|0;ea=ua+8|0;fa=f+165|0;ga=f+296|0;ha=f+284|0;ia=f+304|0;ja=ua+199|0;ka=g;v=i&255;w=f+292|0;x=f+308|0;y=v<<24>>24>-1;z=f+64|0;A=ua+260|0;B=f+260|0;C=f+56|0;u=0;c:while(1){d:while(1){c[ta>>2]=0;gw(ua|0,0,148)|0;m=D;n=m+88|0;do{c[m>>2]=0;m=m+4|0}while((m|0)<(n|0));c[E>>2]=j;if(!F){a[I>>0]=1;c[J>>2]=(c[J>>2]|0)+1}a[H>>0]=G;i=c[ma>>2]|0;e:do if((i|0)>0){p=c[na>>2]|0;m=0;f:while(1){o=c[p+(m<<4)+4>>2]|0;if(o|0?(va=c[o+4>>2]|0,c[va+4>>2]=c[o>>2],a[o+9>>0]|0):0){if((c[va+76>>2]|0)!=(o|0)?b[va+22>>1]&64:0)break;n=c[va+72>>2]|0;if(n|0)do{do if((c[n>>2]|0)!=(o|0)){if((c[n+4>>2]|0)!=1)break;if((a[n+8>>0]|0)!=1)break f}while(0);n=c[n+12>>2]|0}while((n|0)!=0)}m=m+1|0;if((m|0)>=(i|0)){la=31;break e}}c[wa>>2]=c[p+(m<<4)>>2];Vb(f,262,38298,wa);n=262}else la=31;while(0);g:do if((la|0)==31){la=0;n=c[K>>2]|0;c[K>>2]=0;if(n|0){m=c[O>>2]|0;if(m|0)do{t=m+149|0;s=(d[t>>0]|d[t+1>>0]<<8)&-4|1;a[t>>0]=s;a[t+1>>0]=s>>8;m=c[m+8>>2]|0}while((m|0)!=0);do{o=n;n=c[n+24>>2]|0;p=c[o>>2]|0;s=o+12|0;t=(c[s>>2]|0)+-1|0;c[s>>2]=t;h:do if(!t){m=c[o+8>>2]|0;if(m|0)Wa[c[(c[m>>2]|0)+16>>2]&127](m)|0;do if(p|0){if(c[p+480>>2]|0){Xd(p,o);break h}m=o;if((c[p+304>>2]|0)>>>0>m>>>0)break;if((c[p+308>>2]|0)>>>0<=m>>>0)break;t=p+300|0;c[o>>2]=c[t>>2];c[t>>2]=o;break h}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{t=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}while(0)}while((n|0)!=0)}c[ua>>2]=f;i:do if(N){if(!Q?(a[T>>0]|0)==0:0){la=75;break}if((c[S>>2]|0)<(h|0)){Vb(f,18,38328,xa);if(!(a[V>>0]|0)){n=c[W>>2]&18;break g}else{og(f);n=7;break g}}j:do if(c[J>>2]|0){if(!(a[V>>0]|0))la=64}else{do if(_>>>0>0|((_|0)==0?Z>>>0>(e[aa>>1]|0)>>>0:0))m=ba;else{m=c[ca>>2]|0;if(m|0){c[ca>>2]=c[m>>2];c[ha>>2]=(c[ha>>2]|0)+1;oa=m;la=65;break j}m=c[ga>>2]|0;if(!m){m=w;break}c[ga>>2]=c[m>>2];c[ha>>2]=(c[ha>>2]|0)+1;oa=m;la=65;break j}while(0);c[m>>2]=(c[m>>2]|0)+1;la=64}while(0);if((la|0)==64){oa=_d(f,Z,_)|0;la=65}if((la|0)==65?(la=0,oa|0):0){ew(oa|0,g|0,h|0)|0;a[oa+h>>0]=0;ud(ua,oa,ta)|0;m=oa;c[Y>>2]=g+((c[Y>>2]|0)-m);if(c[da>>2]|0){Xd(f,oa);break}do if((c[ia>>2]|0)>>>0<=m>>>0){if((c[x>>2]|0)>>>0<=m>>>0)break;c[oa>>2]=c[ca>>2];c[ca>>2]=oa;break i}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](oa);break}else{t=Wa[c[29352>>2]&127](oa)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](oa);break}}c[Y>>2]=X}else la=75;while(0);if((la|0)==75){la=0;ud(ua,g,ta)|0}if((c[R>>2]|0)==101)c[R>>2]=0;k:do if(a[U>>0]|0?(pa=c[ua>>2]|0,qa=pa+20|0,(c[qa>>2]|0)>0):0){q=pa+16|0;r=pa+24|0;s=pa+56|0;i=0;l:while(1){m=c[q>>2]|0;t=c[m+(i<<4)+4>>2]|0;do if(t|0){if(!(a[t+8>>0]|0)){m=Zb(t,0,0)|0;if((m|0)>=7)break l;switch(m|0){case 0:break;default:break k}o=c[t+4>>2]|0;c[o+4>>2]=c[t>>2];o=c[(c[o+12>>2]|0)+56>>2]|0;p=1;o=d[o+41>>0]<<16|d[o+40>>0]<<24|d[o+42>>0]<<8|d[o+43>>0];m=c[q>>2]|0}else{o=c[t+4>>2]|0;c[o+4>>2]=c[t>>2];o=c[(c[o+12>>2]|0)+56>>2]|0;p=0;o=d[o+41>>0]<<16|d[o+40>>0]<<24|d[o+42>>0]<<8|d[o+43>>0]}n=c[m+(i<<4)+12>>2]|0;if((o|0)!=(c[n>>2]|0)){o=n+78|0;b[o>>1]=b[o>>1]|8;o=(c[m+28>>2]|0)+78|0;b[o>>1]=b[o>>1]|8;c[r>>2]=c[r>>2]&-17;m:do if(!(c[s>>2]|0)){n=c[qa>>2]|0;if((n|0)<=0)break;o=0;while(1){m=c[m+(o<<4)+12>>2]|0;if(b[m+78>>1]&8){dh(m);n=c[qa>>2]|0}m=o+1|0;if((m|0)>=(n|0))break m;o=m;m=c[q>>2]|0}}while(0);c[R>>2]=17}if(!p)break;c[(c[t+4>>2]|0)+4>>2]=c[t>>2];if(cc(t,0)|0)break;bc(t,0)|0}while(0);i=i+1|0;if((i|0)>=(c[qa>>2]|0))break k}if((m|0)<3082)switch(m|0){case 7:break;default:break k}else switch(m|0){case 3082:break;default:break k}m=pa+81|0;if((a[m>>0]|0)==0?(a[pa+82>>0]|0)==0:0){a[m>>0]=1;if((c[pa+180>>2]|0)>0)c[pa+264>>2]=1;m=pa+272|0;c[m>>2]=(c[m>>2]|0)+1;m=c[pa+236>>2]|0;if(!m)break;c[m+12>>2]=7}}while(0);if(a[V>>0]|0)c[R>>2]=7;if(!$)c[l>>2]=c[Y>>2];t=c[R>>2]|0;s=(t|0)==0;n:do if(s?(ra=c[ea>>2]|0,ra|0):0){switch(a[ja>>0]|0){case 0:break n;case 2:{Wi(ra,4);m=12;n=8;break}default:{Wi(ra,8);m=8;n=0}}o=n;do{p=c[ea>>2]|0;if(!(a[(c[p>>2]|0)+81>>0]|0))yc((c[p+116>>2]|0)+((o-n|0)*40|0)|0,c[5696+(o<<2)>>2]|0,-1,1,0)|0;o=o+1|0}while(o>>>0>>0)}while(0);do if(!(a[fa>>0]|0)){r=c[ea>>2]|0;q=(c[Y>>2]|0)-ka|0;if(!r){m=0;la=155;break}a[r+148>>0]=v;if(y)c[r+208>>2]=0;o=c[r>>2]|0;p=Sv(q|0,((q|0)<0)<<31>>31|0,1,0)|0;i=L()|0;o:do if(c[o+272>>2]|0)if(!(a[o+81>>0]|0))la=132;else m=0;else{do if(!(i>>>0>0|((i|0)==0?p>>>0>(e[o+276>>1]|0)>>>0:0))){n=o+300|0;m=c[n>>2]|0;if(m|0){c[n>>2]=c[m>>2];la=o+284|0;c[la>>2]=(c[la>>2]|0)+1;la=133;break o}n=o+296|0;m=c[n>>2]|0;if(!m){m=o+292|0;break}else{c[n>>2]=c[m>>2];la=o+284|0;c[la>>2]=(c[la>>2]|0)+1;la=133;break o}}else m=o+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1;la=132}while(0);if((la|0)==132){m=_d(o,p,i)|0;la=133}do if((la|0)==133){if(!m){m=0;break}ew(m|0,g|0,q|0)|0;a[m+q>>0]=0}while(0);c[r+188>>2]=m;la=136}else la=136;while(0);p:do if((la|0)==136){la=0;q=c[ea>>2]|0;m=q;if(!q){la=155;break}if(s?(a[V>>0]|0)==0:0){la=155;break}r=q+20|0;n=c[r>>2]|0;if((n|0)<832317811)switch(n|0){case 770837923:{la=140;break}default:{}}else switch(n|0){case 832317811:{la=140;break}default:{}}if((la|0)==140){la=0;kc(q)|0}p=c[q>>2]|0;kb(p,q);i=c[q+4>>2]|0;o=q+8|0;n=c[o>>2]|0;if(!i)c[p+4>>2]=n;else{c[i+8>>2]=n;n=c[o>>2]|0}if(n|0)c[n+4>>2]=i;c[r>>2]=1443283912;c[q>>2]=0;do if(p|0){if(c[p+480>>2]|0){Xd(p,q);break p}if((c[p+304>>2]|0)>>>0>m>>>0)break;if((c[p+308>>2]|0)>>>0<=m>>>0)break;r=p+300|0;c[q>>2]=c[r>>2];c[r>>2]=q;break p}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{r=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}while(0);if((la|0)==155){la=0;c[k>>2]=m}n=c[ta>>2]|0;q:do if(n){c[ya>>2]=n;Vb(f,t,31408,ya);if(c[da>>2]|0){Xd(f,n);break}m=n;do if((c[ia>>2]|0)>>>0<=m>>>0){if((c[x>>2]|0)>>>0<=m>>>0)break;c[n>>2]=c[ca>>2];c[ca>>2]=n;break q}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{s=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}else{c[z>>2]=t;if(!s){Ne(f,t);break}if(!(c[B>>2]|0))break;Ne(f,0)}while(0);m=c[A>>2]|0;if(!m){n=t;break}while(1){c[A>>2]=c[m+4>>2];r:do if(!(c[da>>2]|0)){n=m;do if((c[ia>>2]|0)>>>0<=n>>>0){if((c[x>>2]|0)>>>0<=n>>>0)break;c[m>>2]=c[ca>>2];c[ca>>2]=m;break r}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{s=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}else Xd(f,m);while(0);m=c[A>>2]|0;if(!m){n=t;break}}}while(0);o=c[ua>>2]|0;m=c[M>>2]|0;do if(m|0){if(o|0){if(c[o+480>>2]|0){Xd(o,m);break}t=m;if((c[o+304>>2]|0)>>>0<=t>>>0?(c[o+308>>2]|0)>>>0>t>>>0:0){t=o+300|0;c[m>>2]=c[t>>2];c[t>>2]=m;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{t=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);m=c[P>>2]|0;if(m|0)ri(o,m);if(o|0){t=o+272|0;c[t>>2]=(c[t>>2]|0)-(d[I>>0]|0)}switch(n|0){case 513:break;case 17:break d;default:{la=205;break c}}}if((c[C>>2]|0)==0?(sa=c[ma>>2]|0,(sa|0)>0):0){o=0;m=sa;do{n=c[(c[na>>2]|0)+(o<<4)+12>>2]|0;if(b[n+78>>1]&8){dh(n);m=c[ma>>2]|0}o=o+1|0}while((o|0)<(m|0))}if(!u)u=1;else{la=202;break}}if((la|0)==202)if(!(a[V>>0]|0)){ya=c[W>>2]&17;Ra=za;return ya|0}else{og(f);ya=7;Ra=za;return ya|0}else if((la|0)==205)if((n|0)==3082|(a[V>>0]|0)!=0){og(f);ya=7;Ra=za;return ya|0}else{ya=c[W>>2]&n;Ra=za;return ya|0}}else{if((m|0)<1266094736)switch(m|0){case -264537850:break;default:break b}else switch(m|0){case 1266094736:break;default:break b}c[o>>2]=38244;Db(21,38253,o);break a}while(0);c[n>>2]=50924;Db(21,38253,n)}while(0);c[p>>2]=58063;c[p+4>>2]=124395;c[p+8>>2]=31517;Db(21,32001,p);ya=21;Ra=za;return ya|0}function rd(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,l=0,m=0,n=0,o=0,p=0;o=Ra;Ra=Ra+16|0;n=o;k=c[b+348>>2]|0;if(!k){i=b+340|0;h=b+344|0}else{i=a[e>>0]|0;if(!(i<<24>>24))h=0;else{h=0;j=e;do{j=j+1|0;h=G(h+(d[208+(i&255)>>0]|0)|0,-1640531535)|0;i=a[j>>0]|0}while(i<<24>>24!=0)}h=(h>>>0)%((c[b+336>>2]|0)>>>0)|0;i=k+(h<<3)|0;h=k+(h<<3)+4|0}i=c[i>>2]|0;a:do if(!i)h=59292;else{m=d[208+(d[e>>0]|0)>>0]|0;while(1){h=c[h>>2]|0;i=i+-1|0;k=c[h+12>>2]|0;l=a[k>>0]|0;j=(d[208+(l&255)>>0]|0)-m|0;if(!(l<<24>>24==0|(j|0)!=0)){l=e;do{k=k+1|0;l=l+1|0;p=a[k>>0]|0;j=(d[208+(p&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(p<<24>>24==0|(j|0)!=0))}if(!j)break a;if(!i){h=59292;break}}}while(0);if(!(c[h+8>>2]|0)){Hi(b,e,f,g,0)|0;h=0}else{c[n>>2]=58063;c[n+4>>2]=134381;c[n+8>>2]=31517;Db(21,32001,n);h=21}if(!(a[b+81>>0]|0)){p=c[b+68>>2]&h;Ra=o;return p|0}else{og(b);p=7;Ra=o;return p|0}return 0}function sd(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,l=0,m=0,n=0,o=0,p=0,q=0;p=Ra;Ra=Ra+16|0;o=p;l=c[b+348>>2]|0;if(!l){j=b+340|0;i=b+344|0}else{j=a[e>>0]|0;if(!(j<<24>>24))i=0;else{i=0;k=e;do{k=k+1|0;i=G(i+(d[208+(j&255)>>0]|0)|0,-1640531535)|0;j=a[k>>0]|0}while(j<<24>>24!=0)}i=(i>>>0)%((c[b+336>>2]|0)>>>0)|0;j=l+(i<<3)|0;i=l+(i<<3)+4|0}j=c[j>>2]|0;a:do if(!j)i=59292;else{n=d[208+(d[e>>0]|0)>>0]|0;while(1){i=c[i>>2]|0;j=j+-1|0;l=c[i+12>>2]|0;m=a[l>>0]|0;k=(d[208+(m&255)>>0]|0)-n|0;if(!(m<<24>>24==0|(k|0)!=0)){m=e;do{l=l+1|0;m=m+1|0;q=a[l>>0]|0;k=(d[208+(q&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(q<<24>>24==0|(k|0)!=0))}if(!k)break a;if(!j){i=59292;break}}}while(0);if(!(c[i+8>>2]|0)){Hi(b,e,f,g,h)|0;i=0}else{c[o>>2]=58063;c[o+4>>2]=134381;c[o+8>>2]=31517;Db(21,32001,o);i=21}if(!(a[b+81>>0]|0))i=c[b+68>>2]&i;else{og(b);i=7}if(!((h|0)!=0&(i|0)!=0)){Ra=p;return i|0}ab[h&127](g);Ra=p;return i|0}function td(e,f){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;q=Ra;Ra=Ra+304|0;j=q+16|0;g=q;h=q+296|0;p=q+20|0;c[h>>2]=0;i=c[e+352>>2]|0;if(i|0?(m=i+12|0,(c[m>>2]|0)==0):0){l=c[i+4>>2]|0;gw(p+4|0,0,272)|0;n=p+200|0;a[n>>0]=1;c[p>>2]=e;c[p+132>>2]=1;if(((((ud(p,f,h)|0)==0?(k=c[p+228>>2]|0,(k|0)!=0):0)?(a[e+81>>0]|0)==0:0)?(c[k+12>>2]|0)==0:0)?(c[k+56>>2]|0)==0:0){g=l+4|0;if(!(c[g>>2]|0)){h=k+4|0;c[g>>2]=c[h>>2];f=k+42|0;b[l+42>>1]=b[f>>1]|0;j=k+36|0;g=l+36|0;c[g>>2]=c[g>>2]|c[j>>2]&96;b[f>>1]=0;c[h>>2]=0;if((c[j>>2]&32|0)!=0?(c[(c[c[(c[i>>2]|0)+4>>2]>>2]|0)+52>>2]|0)!=0:0){g=k+8|0;while(1){g=c[g>>2]|0;j=g+55|0;if(((d[j>>0]|d[j+1>>0]<<8)&3)==2)break;else g=g+20|0}g=(b[g+50>>1]|0)!=1&1}else g=0;f=k+8|0;h=c[f>>2]|0;if(h){c[l+8>>2]=h;c[f>>2]=0;c[h+12>>2]=l}}else g=0;c[m>>2]=1;l=g}else o=18;do if((o|0)==18){g=c[h>>2]|0;m=(g|0)==0;c[j>>2]=g;Vb(e,1,m?0:31408,j);if(!m){if(c[e+480>>2]|0){Xd(e,g);l=1;break}m=g;if((c[e+304>>2]|0)>>>0<=m>>>0?(c[e+308>>2]|0)>>>0>m>>>0:0){l=e+300|0;c[g>>2]=c[l>>2];c[l>>2]=g;l=1;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);l=1;break}else{l=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);l=1;break}}else l=1}while(0);a[n>>0]=0;j=c[p+8>>2]|0;do if(j|0){k=j+20|0;g=c[k>>2]|0;if((g|0)<832317811)switch(g|0){case 770837923:{o=29;break}default:{}}else switch(g|0){case 832317811:{o=29;break}default:{}}if((o|0)==29)kc(j)|0;i=c[j>>2]|0;kb(i,j);h=c[j+4>>2]|0;f=j+8|0;g=c[f>>2]|0;if(!h)c[i+4>>2]=g;else{c[h+8>>2]=g;g=c[f>>2]|0}if(g|0)c[g+4>>2]=h;c[k>>2]=1443283912;c[j>>2]=0;if(i|0){if(c[i+480>>2]|0){Xd(i,j);break}o=j;if((c[i+304>>2]|0)>>>0<=o>>>0?(c[i+308>>2]|0)>>>0>o>>>0:0){o=i+300|0;c[j>>2]=c[o>>2];c[o>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{o=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);g=c[p+228>>2]|0;do if(g|0){if(e|0?c[e+480>>2]|0:0){Vi(e,g);break}n=g+32|0;o=(c[n>>2]|0)+-1|0;c[n>>2]=o;if(!o)Vi(e,g)}while(0);f=c[p>>2]|0;g=c[p+64>>2]|0;do if(g|0){if(f|0){if(c[f+480>>2]|0){Xd(f,g);break}o=g;if((c[f+304>>2]|0)>>>0<=o>>>0?(c[f+308>>2]|0)>>>0>o>>>0:0){o=f+300|0;c[g>>2]=c[o>>2];c[o>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{o=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);g=c[p+68>>2]|0;if(g|0)ri(f,g);g=p+24|0;if(f|0){p=f+272|0;c[p>>2]=(c[p>>2]|0)-(d[g>>0]|0)}a[g>>0]=0;if(!(a[e+81>>0]|0)){e=c[e+68>>2]&l;Ra=q;return e|0}else{og(e);e=7;Ra=q;return e|0}}c[e+64>>2]=21;Ne(e,21);c[g>>2]=58063;c[g+4>>2]=135056;c[g+8>>2]=31517;Db(21,32001,g);e=21;Ra=q;return e|0}function ud(d,f,g){d=d|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,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;V=Ra;Ra=Ra+1280|0;O=V+48|0;M=V+40|0;I=V+32|0;H=V+24|0;G=V+16|0;F=V+8|0;C=V+1272|0;D=V;E=V+1268|0;i=V+56|0;S=c[d>>2]|0;j=c[S+112>>2]|0;if(!(c[S+168>>2]|0))c[S+264>>2]=0;N=d+12|0;c[N>>2]=0;P=d+224|0;c[P>>2]=f;J=i+4|0;c[J>>2]=d;h=i+8|0;c[i>>2]=h;b[h>>1]=0;b[i+10>>1]=0;B=i+1208|0;c[B>>2]=i+1196;T=S+236|0;U=d+124|0;c[U>>2]=c[T>>2];c[T>>2]=d;k=Bi(f,E)|0;j=j-k|0;a:do if((j|0)>=0){w=S+264|0;x=d+188|0;y=d+192|0;z=i+8|0;v=D+4|0;u=C+4|0;l=-1;b:while(1){m=k;t=j;while(1){j=c[E>>2]|0;if((j|0)<=155){s=m;break}if(c[w>>2]|0){Q=10;break b}if((j|0)!=174){Q=13;break}f=f+m|0;j=Bi(f,E)|0;k=t-j|0;if((k|0)<0){Q=7;break a}else{m=j;t=k}}c:do if((Q|0)==13){Q=0;if(!(a[f>>0]|0)){switch(l|0){case 0:{j=f;break a}case 1:{j=0;break}default:j=1}c[E>>2]=j;s=0;break}switch(j|0){case 156:{j=f+6|0;d:while(1){j=j+(Bi(j,C)|0)|0;k=c[C>>2]|0;switch(k|0){case 174:break;case 59:case 110:case 111:case 156:case 157:{Q=23;break d}default:{Q=20;break d}}}do if((Q|0)==20){Q=0;if((k|0)>=95){j=59;break}if((b[5744+(k<<1)>>1]|0)!=59)if((k|0)==59)Q=25;else j=59;else Q=23}while(0);if((Q|0)==23)Q=25;do if((Q|0)==25){e:while(1){j=j+(Bi(j,C)|0)|0;k=c[C>>2]|0;switch(k|0){case 174:break;case 59:case 110:case 111:case 156:case 157:{Q=29;break e}default:{Q=27;break e}}}if((Q|0)==27?(Q=0,(k|0)<95):0)if((b[5744+(k<<1)>>1]|0)==59)Q=29;else{j=(k|0)==24?156:59;break}if((Q|0)==29){Q=0;c[C>>2]=59}j=59}while(0);c[E>>2]=j;s=m;break c}case 157:{f:do if((l|0)==23){j=f+4|0;g:while(1){j=j+(Bi(j,C)|0)|0;k=c[C>>2]|0;switch(k|0){case 174:break;case 59:case 110:case 111:case 156:case 157:break g;default:{Q=36;break g}}}do if((Q|0)==36){Q=0;if((k|0)<95?(b[5744+(k<<1)>>1]|0)==59:0)break;switch(k|0){case 22:case 59:{j=157;break f}default:{}}j=59;break f}while(0);j=157}else j=59;while(0);c[E>>2]=j;s=m;break c}case 158:{do if((l|0)==23){j=f+6|0;h:while(1){j=j+(Bi(j,C)|0)|0;k=c[C>>2]|0;switch(k|0){case 174:break;case 59:case 110:case 111:case 156:case 157:{Q=47;break h}default:{Q=45;break h}}}if((Q|0)==45?(Q=0,(k|0)<95):0)if((b[5744+(k<<1)>>1]|0)!=59)if((k|0)==22){j=158;break}else{Q=50;break}else Q=47;if((Q|0)==47)c[C>>2]=59;Q=50}else Q=50;while(0);if((Q|0)==50){Q=0;j=59}c[E>>2]=j;s=m;break c}default:{Q=52;break b}}}while(0);c[x>>2]=f;c[y>>2]=s;q=f;p=c[J>>2]|0;o=c[i>>2]|0;r=j&65535;k=b[o>>1]|0;while(1){n=k&65535;if((k&65535)<=540){l=e[5936+(n<<1)>>1]|0;m=r;while(1){j=m&65535;k=j+l|0;if(k>>>0<=2168?(b[7024+(k<<1)>>1]|0)==m<<16>>16:0){Q=64;break}if((m&65535)>=95){Q=60;break}j=b[5744+(j<<1)>>1]|0;if(!(j<<16>>16)){Q=60;break}else m=j}do if((Q|0)==60){Q=0;j=l+95|0;if(j>>>0<2169?!(m<<16>>16==0?1:(b[7024+(j<<1)>>1]|0)!=95):0){j=11376+(j<<1)|0;break}j=15664+(n<<1)|0}else if((Q|0)==64){Q=0;j=11376+(k<<1)|0}while(0);k=b[j>>1]|0}if((k&65535)<=1161){Q=68;break}k=$i(i,(k&65535)+-1162|0,f,s,p)|0;j=c[i>>2]|0;if(j>>>0<=h>>>0)break;else o=j}do if((Q|0)==68){Q=0;if((k&65535)>=1159){if(k<<16>>16==1160){c[i>>2]=o+-12;break}c[D>>2]=q;c[v>>2]=s;c[C>>2]=f;c[u>>2]=s;j=c[J>>2]|0;if(!(a[f>>0]|0))cd(j,49148,I);else{c[H>>2]=C;cd(j,38502,H)}c[J>>2]=j;aj(j,r,D);break}j=o+12|0;c[i>>2]=j;if(j>>>0<=(c[B>>2]|0)>>>0){b[j>>1]=(k&65535)>540?(k&65535)+378&65535:k;b[o+14>>1]=r;c[o+16>>2]=q;c[o+20>>2]=s;break}c[i>>2]=o;k=c[J>>2]|0;if(o>>>0>z>>>0?(c[i>>2]=o+-12,aj(k,b[o+2>>1]|0,o+4|0),A=c[i>>2]|0,A>>>0>z>>>0):0){j=A;do{r=c[J>>2]|0;c[i>>2]=j+-12;aj(r,b[j+2>>1]|0,j+4|0);j=c[i>>2]|0}while(j>>>0>z>>>0)}cd(k,38790,G);c[J>>2]=k}while(0);f=f+s|0;if(c[N>>2]|0){j=f;break a}l=c[E>>2]|0;k=Bi(f,E)|0;j=t-k|0;if((j|0)<0){Q=7;break a}}if((Q|0)==10){c[N>>2]=9;j=f;break}else if((Q|0)==52){c[F>>2]=m;c[F+4>>2]=f;cd(d,38428,F);j=f;break}}else Q=7;while(0);if((Q|0)==7){c[N>>2]=18;j=f}f=c[i>>2]|0;if(f>>>0>h>>>0)do{c[i>>2]=f+-12;aj(c[J>>2]|0,b[f+2>>1]|0,f+4|0);f=c[i>>2]|0}while(f>>>0>h>>>0);if(!(a[S+81>>0]|0)){h=c[N>>2]|0;switch(h|0){case 101:case 0:break;default:{K=h;Q=90}}}else{c[N>>2]=7;K=7;Q=90}if((Q|0)==90?(L=d+4|0,(c[L>>2]|0)==0):0){switch(K|0){case 516:{h=50738;break}case 100:{h=50760;break}default:{h=K&255;if(h>>>0<29?(520028155>>>h&1|0)!=0:0)h=c[22960+(h<<2)>>2]|0;else h=50724}}c[M>>2]=h;M=dd(S,31408,M)|0;c[L>>2]=M}h=d+4|0;f=c[h>>2]|0;if(!f)p=0;else{c[g>>2]=f;p=c[N>>2]|0;g=c[P>>2]|0;c[O>>2]=f;c[O+4>>2]=g;Db(p,38455,O);c[h>>2]=0;p=1}c[P>>2]=j;i=d+8|0;j=c[i>>2]|0;if((j|0?(c[d+36>>2]|0)>0:0)?(a[d+18>>0]|0)==0:0){k=c[j>>2]|0;kb(k,j);l=c[j+4>>2]|0;f=j+8|0;h=c[f>>2]|0;if(!l)c[k+4>>2]=h;else{c[l+8>>2]=h;h=c[f>>2]|0}if(h|0)c[h+4>>2]=l;c[j+20>>2]=1443283912;c[j>>2]=0;do if(k){if(c[k+480>>2]|0){Xd(k,j);break}P=j;if((c[k+304>>2]|0)>>>0<=P>>>0?(c[k+308>>2]|0)>>>0>P>>>0:0){P=k+300|0;c[j>>2]=c[P>>2];c[P>>2]=j}else Q=113}else Q=113;while(0);do if((Q|0)==113)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{Q=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);c[i>>2]=0}if(!(a[d+18>>0]|0)){h=d+108|0;f=c[h>>2]|0;do if(f|0){if(c[S+480>>2]|0){Xd(S,f);break}Q=f;if((c[S+304>>2]|0)>>>0<=Q>>>0?(c[S+308>>2]|0)>>>0>Q>>>0:0){Q=S+300|0;c[f>>2]=c[Q>>2];c[Q>>2]=f;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{Q=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);c[h>>2]=0;c[d+104>>2]=0}h=c[d+252>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{Q=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);f=d+200|0;h=a[f>>0]|0;if(!(h<<24>>24)){h=c[d+228>>2]|0;do if(h|0){if(c[S+480>>2]|0){Vi(S,h);break}P=h+32|0;Q=(c[P>>2]|0)+-1|0;c[P>>2]=Q;if(!Q)Vi(S,h)}while(0);h=a[f>>0]|0}do if((h&255)<=1?(R=c[d+236>>2]|0,R|0):0){Xi(S,c[R+28>>2]|0);h=c[R>>2]|0;do if(h|0){if(c[S+480>>2]|0){Xd(S,h);break}Q=h;if((c[S+304>>2]|0)>>>0<=Q>>>0?(c[S+308>>2]|0)>>>0>Q>>>0:0){Q=S+300|0;c[h>>2]=c[Q>>2];c[Q>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{Q=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);h=c[R+4>>2]|0;do if(h|0){if(c[S+480>>2]|0){Xd(S,h);break}Q=h;if((c[S+304>>2]|0)>>>0<=Q>>>0?(c[S+308>>2]|0)>>>0>Q>>>0:0){Q=S+300|0;c[h>>2]=c[Q>>2];c[Q>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{Q=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);h=c[R+12>>2]|0;if(h|0)ni(S,h);h=c[R+16>>2]|0;i:do if(h){k=h+4|0;f=c[h>>2]|0;if((c[k>>2]|0)>0){l=S+480|0;m=S+304|0;n=S+308|0;o=S+300|0;j=0;do{f=c[f+(j<<3)>>2]|0;j:do if(f|0){if(c[l>>2]|0){Xd(S,f);break}i=f;do if((c[m>>2]|0)>>>0<=i>>>0){if((c[n>>2]|0)>>>0<=i>>>0)break;c[f>>2]=c[o>>2];c[o>>2]=f;break j}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{Q=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);j=j+1|0;f=c[h>>2]|0}while((j|0)<(c[k>>2]|0))}k:do if(f){do if(S|0){i=S+480|0;if(!(c[i>>2]|0)){j=f;if((c[S+304>>2]|0)>>>0>j>>>0)break;if((c[S+308>>2]|0)>>>0<=j>>>0)break;Q=S+300|0;c[f>>2]=c[Q>>2];c[Q>>2]=f}else Xd(S,f);f=i;Q=187;break k}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);Q=185;break}else{Q=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);Q=185;break}}else Q=185;while(0);do if((Q|0)==185){if(!S)break;f=S+480|0;Q=187}while(0);do if((Q|0)==187){if(c[f>>2]|0){Xd(S,h);Q=196;break i}f=h;if((c[S+304>>2]|0)>>>0>f>>>0)break;if((c[S+308>>2]|0)>>>0<=f>>>0)break;Q=S+300|0;c[h>>2]=c[Q>>2];c[Q>>2]=h;Q=196;break i}while(0);do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{P=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-P;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);if(!S)h=R;else{h=R;Q=198}}else Q=196;while(0);if((Q|0)==196){h=R;Q=198}if((Q|0)==198){if(c[S+480>>2]|0){Xd(S,h);break}Q=R;if((c[S+304>>2]|0)>>>0<=Q>>>0?(c[S+308>>2]|0)>>>0>Q>>>0:0){Q=S+300|0;c[R>>2]=c[Q>>2];c[Q>>2]=R;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{R=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);n=c[d+268>>2]|0;do if(n|0){l:do if((c[n>>2]|0)>0){j=S+480|0;k=S+304|0;l=S+308|0;m=S+300|0;if(!S){f=0;while(1){h=c[n+8+(f<<4)+4>>2]|0;if(h|0)ri(0,h);h=c[n+8+(f<<4)+8>>2]|0;if(h|0)pi(0,h,1);h=c[n+8+(f<<4)>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{R=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);f=f+1|0;if((f|0)>=(c[n>>2]|0))break l}}i=0;do{h=c[n+8+(i<<4)+4>>2]|0;if(h|0)ri(S,h);h=c[n+8+(i<<4)+8>>2]|0;if(h|0)pi(S,h,1);h=c[n+8+(i<<4)>>2]|0;m:do if(h|0){if(c[j>>2]|0){Xd(S,h);break}f=h;do if((c[k>>2]|0)>>>0<=f>>>0){if((c[l>>2]|0)>>>0<=f>>>0)break;c[h>>2]=c[m>>2];c[m>>2]=h;break m}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{R=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);i=i+1|0}while((i|0)<(c[n>>2]|0))}while(0);if(S|0){if(c[S+480>>2]|0){Xd(S,n);break}R=n;if((c[S+304>>2]|0)>>>0<=R>>>0?(c[S+308>>2]|0)>>>0>R>>>0:0){R=S+300|0;c[n>>2]=c[R>>2];c[R>>2]=n;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{R=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);h=c[d+216>>2]|0;do if(h|0){if(S|0){if(c[S+480>>2]|0){Xd(S,h);break}R=h;if((c[S+304>>2]|0)>>>0<=R>>>0?(c[S+308>>2]|0)>>>0>R>>>0:0){R=S+300|0;c[h>>2]=c[R>>2];c[R>>2]=h;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{R=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);m=d+112|0;h=c[m>>2]|0;n:do if(h|0){i=S+480|0;j=S+304|0;k=S+308|0;l=S+300|0;if(!S)while(1){c[m>>2]=c[h>>2];if(!(c[7324]|0))ab[c[29344>>2]&127](h);else{R=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h)}h=c[m>>2]|0;if(!h)break n}do{c[m>>2]=c[h>>2];o:do if(!(c[i>>2]|0)){f=h;do if((c[j>>2]|0)>>>0<=f>>>0){if((c[k>>2]|0)>>>0<=f>>>0)break;c[h>>2]=c[l>>2];c[l>>2]=h;break o}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{R=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}else Xd(S,h);while(0);h=c[m>>2]|0}while((h|0)!=0)}while(0);i=d+256|0;h=c[i>>2]|0;if(!h){S=c[U>>2]|0;c[T>>2]=S;c[U>>2]=0;Ra=V;return p|0}f=S+480|0;if(!S){do{f=c[h+76>>2]|0;c[i>>2]=f;d=h+32|0;S=(c[d>>2]|0)+-1|0;c[d>>2]=S;if(!S){Vi(0,h);h=c[i>>2]|0}else h=f}while((h|0)!=0);S=c[U>>2]|0;c[T>>2]=S;c[U>>2]=0;Ra=V;return p|0}do{c[i>>2]=c[h+76>>2];if(!((c[f>>2]|0)==0?(R=h+32|0,d=(c[R>>2]|0)+-1|0,c[R>>2]=d,(d|0)!=0):0))Vi(S,h);h=c[i>>2]|0}while((h|0)!=0);S=c[U>>2]|0;c[T>>2]=S;c[U>>2]=0;Ra=V;return p|0}function vd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=Ra;Ra=Ra+48|0;f=i+32|0;h=i+16|0;g=i;c[g>>2]=e;do if((d|0)==1){d=c[b+352>>2]|0;if(!d){c[h>>2]=58063;c[h+4>>2]=135531;c[h+8>>2]=31517;Db(21,32001,h);break}b=(c[g>>2]|0)+(4-1)&~(4-1);h=c[b>>2]|0;c[g>>2]=b+4;a[(c[d>>2]|0)+16>>0]=h;h=0;Ra=i;return h|0}else{c[f>>2]=58063;c[f+4>>2]=135539;c[f+8>>2]=31517;Db(21,32001,f)}while(0);c[b+64>>2]=21;Ne(b,21);h=21;Ra=i;return h|0}function wd(d){d=d|0;var f=0,g=0,h=0;a:do if(!d)f=ob(40,0)|0;else{if(c[d+272>>2]|0){if(a[d+81>>0]|0){d=0;return d|0}}else{do if((e[d+276>>1]|0)>=40){g=d+300|0;f=c[g>>2]|0;if(f|0){c[g>>2]=c[f>>2];h=d+284|0;c[h>>2]=(c[h>>2]|0)+1;break a}g=d+296|0;f=c[g>>2]|0;if(!f){f=d+292|0;break}else{c[g>>2]=c[f>>2];h=d+284|0;c[h>>2]=(c[h>>2]|0)+1;break a}}else f=d+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1}f=_d(d,40,0)|0}while(0);if(!f){d=0;return d|0}g=f;h=g+40|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0));b[f+8>>1]=1;c[f+32>>2]=d;d=f;return d|0}function xd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=Ra;Ra=Ra+48|0;g=h+40|0;f=h+32|0;e=h+16|0;d=h;if(c[7380]|0){c[e>>2]=58063;c[e+4>>2]=154986;c[e+8>>2]=31517;Db(21,32001,e);b=21;Ra=h;return b|0}c[d>>2]=b;do switch(a|0){case 4:{b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7335]=c[a>>2];c[7336]=c[a+4>>2];c[7337]=c[a+8>>2];c[7338]=c[a+12>>2];c[7339]=c[a+16>>2];c[7340]=c[a+20>>2];c[7341]=c[a+24>>2];c[7342]=c[a+28>>2];a=0;break}case 5:{if(!(c[7335]|0)){c[f>>2]=30308;xd(4,f)|0}b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[a>>2]=c[7335];c[a+4>>2]=c[7336];c[a+8>>2]=c[7337];c[a+12>>2]=c[7338];c[a+16>>2]=c[7339];c[a+20>>2]=c[7340];c[a+24>>2]=c[7341];c[a+28>>2]=c[7342];a=0;break}case 9:{b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7324]=a;a=0;break}case 27:{b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7329]=a;a=0;break}case 7:{b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7374]=a;a=(c[d>>2]|0)+(4-1)&~(4-1);b=c[a>>2]|0;c[d>>2]=a+4;c[7375]=b;b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7376]=a;a=0;break}case 24:{b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[a>>2]=160;a=0;break}case 14:{a=0;break}case 15:{a=1;break}case 18:{a=(c[d>>2]|0)+(4-1)&~(4-1);e=c[a>>2]|0;c[d>>2]=a+4;a=29408;d=e;e=a+52|0;do{c[a>>2]=c[d>>2];a=a+4|0;d=d+4|0}while((a|0)<(e|0));a=0;break}case 19:{if(!(c[7354]|0)){c[g>>2]=30340;xd(18,g)|0}e=(c[d>>2]|0)+(4-1)&~(4-1);a=c[e>>2]|0;c[d>>2]=e+4;d=29408;e=a+52|0;do{c[a>>2]=c[d>>2];a=a+4|0;d=d+4|0}while((a|0)<(e|0));a=0;break}case 13:{a=(c[d>>2]|0)+(4-1)&~(4-1);b=c[a>>2]|0;c[d>>2]=a+4;c[7332]=b;b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7333]=a;a=0;break}case 16:{a=(c[d>>2]|0)+(4-1)&~(4-1);b=c[a>>2]|0;c[d>>2]=a+4;c[7387]=b;b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7388]=a;a=0;break}case 17:{b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7327]=a;a=0;break}case 20:{b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7328]=a;a=0;break}case 22:{c[d>>2]=((c[d>>2]|0)+(8-1)&~(8-1))+8;c[d>>2]=((c[d>>2]|0)+(8-1)&~(8-1))+8;c[7370]=0;c[7371]=0;c[7372]=0;c[7373]=0;a=0;break}case 25:{b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7379]=a;a=0;break}case 26:{b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7334]=a;a=0;break}default:a=1}while(0);b=a;Ra=h;return b|0}function yd(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=Ra;Ra=Ra+16|0;h=n;c[h>>2]=f;do switch(e|0){case 1e3:{l=(c[h>>2]|0)+(4-1)&~(4-1);m=c[l>>2]|0;c[h>>2]=l+4;c[c[b+16>>2]>>2]=m;m=0;Ra=n;return m|0}case 1001:{j=(c[h>>2]|0)+(4-1)&~(4-1);k=c[j>>2]|0;c[h>>2]=j+4;j=(c[h>>2]|0)+(4-1)&~(4-1);l=c[j>>2]|0;c[h>>2]=j+4;j=(c[h>>2]|0)+(4-1)&~(4-1);m=c[j>>2]|0;c[h>>2]=j+4;m=zd(b,k,l,m)|0;Ra=n;return m|0}case 1002:{k=0;break}case 1003:{k=1;break}case 1004:{k=2;break}case 1005:{k=3;break}case 1006:{k=4;break}case 1007:{k=5;break}case 1008:{k=6;break}case 1009:{k=7;break}case 1010:{k=8;break}case 1011:{k=9;break}default:{m=1;Ra=n;return m|0}}while(0);j=(c[h>>2]|0)+(4-1)&~(4-1);e=c[j>>2]|0;c[h>>2]=j+4;j=(c[h>>2]|0)+(4-1)&~(4-1);l=c[j>>2]|0;c[h>>2]=j+4;j=b+32|0;i=j;h=c[i>>2]|0;i=c[i+4>>2]|0;if((e|0)<=0)if(!e){e=h&~c[2208+(k<<3)+4>>2];f=i;m=17}else{e=h;f=i}else{e=h|c[2208+(k<<3)+4>>2];f=i;m=17}if((m|0)==17){m=j;c[m>>2]=e;c[m+4>>2]=f}if(!((h|0)==(e|0)&(i|0)==(f|0))?(g=c[b+4>>2]|0,g|0):0)do{m=g+149|0;b=(d[m>>0]|d[m+1>>0]<<8)&-4|1;a[m>>0]=b;a[m+1>>0]=b>>8;g=c[g+8>>2]|0}while((g|0)!=0);if(!l){m=0;Ra=n;return m|0}c[l>>2]=(0?1:(c[j>>2]&c[2208+(k<<3)+4>>2]|0)!=0)&1;m=0;Ra=n;return m|0}function zd(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,l=0,m=0,n=0,o=0,p=0,q=0;q=d+296|0;h=c[q>>2]|0;if(!h)i=0;else{i=0;do{h=c[h>>2]|0;i=i+1|0}while((h|0)!=0)}p=d+300|0;h=c[p>>2]|0;if(!h)h=0;else{j=0;do{h=c[h>>2]|0;j=j+1|0}while((h|0)!=0);h=j}m=d+280|0;if(((c[m>>2]|0)-(h+i)|0)>0){e=5;return e|0}n=d+272|0;o=d+278|0;do if(a[o>>0]|0?(k=c[d+304>>2]|0,k|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{l=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);l=f&-8;k=(l|0)<5?0:l;i=(g|0)>0?g:0;if(!((g|0)<1|(k|0)==0))if(!e){h=Yv(k|0,((k|0)<0)<<31>>31|0,i|0,0)|0;g=Sv(h|0,L()|0,-1,-1)|0;f=L()|0;do if(!(f>>>0>0|(f|0)==0&g>>>0>2147483390)){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](h)|0;break}f=Wa[c[29356>>2]&127](h)|0;if((c[14985]|0)>>>0>>0)c[14985]=h;j=59064;h=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&h>>>0>0){g=c[14978]|0;j=Tv(h|0,j|0,f|0,((f|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&j>>>0<=g>>>0)&1}j=Wa[c[29340>>2]&127](f)|0;if(j){h=Wa[c[29352>>2]&127](j)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0)c[14987]=h}else j=0}else j=0;while(0);if(!j)h=0;else{h=j;i=(Wa[c[29352>>2]&127](j)|0)/(l|0)|0}}else h=e;else{h=0;k=0}j=d+304|0;c[j>>2]=h;c[q>>2]=0;c[p>>2]=0;b[d+276>>1]=k;if(!h){c[j>>2]=d;c[d+308>>2]=d;c[n>>2]=1;a[o>>0]=0;c[m>>2]=0;e=0;return e|0}c[m>>2]=i;if((i|0)>0){j=0;while(1){c[h>>2]=j;f=h+k|0;j=h;if((i|0)<=1)break;else{h=f;i=i+-1|0}}c[q>>2]=h;h=f}c[d+308>>2]=h;c[n>>2]=0;a[o>>0]=(e|0)==0&1;e=0;return e|0}function Ad(a){a=a|0;return c[a+100>>2]|0}function Bd(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;p=Ra;Ra=Ra+32|0;o=p+24|0;g=p+8|0;f=p;if(!b){o=0;Ra=p;return o|0}n=b+96|0;e=c[n>>2]|0;a:do if((e|0)>=-264537850)if((e|0)<1266094736)switch(e|0){case -264537850:break a;default:{h=3;break a}}else switch(e|0){case 1266094736:break a;default:{h=3;break a}}else switch(e|0){case -1607883113:break;default:h=3}while(0);if((h|0)==3){c[f>>2]=50924;Db(21,38253,f);c[g>>2]=58063;c[g+4>>2]=155713;c[g+8>>2]=31517;Db(21,32001,g);o=21;Ra=p;return o|0}if(!(a[b+88>>0]&8)){Bp(b);e=b+356|0;k=c[e>>2]|0;if(k|0){c[e>>2]=0;i=b+332|0;if((c[i>>2]|0)>0){h=0;do{j=c[k+(h<<2)>>2]|0;g=j+8|0;e=c[g>>2]|0;if(e|0?(m=c[(c[e>>2]|0)+68>>2]|0,m|0):0)Wa[m&127](e)|0;c[j+20>>2]=0;f=c[j>>2]|0;e=j+12|0;l=(c[e>>2]|0)+-1|0;c[e>>2]=l;do if(!l){e=c[g>>2]|0;if(e|0)Wa[c[(c[e>>2]|0)+16>>2]&127](e)|0;if(f|0){if(c[f+480>>2]|0){Xd(f,j);break}l=j;if((c[f+304>>2]|0)>>>0<=l>>>0?(c[f+308>>2]|0)>>>0>l>>>0:0){l=f+300|0;c[j>>2]=c[l>>2];c[l>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{l=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);h=h+1|0}while((h|0)<(c[i>>2]|0))}do if(!(c[b+480>>2]|0)){m=k;if((c[b+304>>2]|0)>>>0<=m>>>0?(c[b+308>>2]|0)>>>0>m>>>0:0){m=b+300|0;c[k>>2]=c[m>>2];c[m>>2]=k;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{m=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}else Xd(b,k);while(0);c[i>>2]=0}}else{Za[c[b+196>>2]&127](8,c[b+200>>2]|0,b,0)|0;Bp(b);e=b+356|0;k=c[e>>2]|0;if(k|0){c[e>>2]=0;i=b+332|0;if((c[i>>2]|0)>0){h=0;do{j=c[k+(h<<2)>>2]|0;f=j+8|0;e=c[f>>2]|0;if(e|0?(l=c[(c[e>>2]|0)+68>>2]|0,l|0):0)Wa[l&127](e)|0;c[j+20>>2]=0;g=c[j>>2]|0;e=j+12|0;m=(c[e>>2]|0)+-1|0;c[e>>2]=m;do if(!m){e=c[f>>2]|0;if(e|0)Wa[c[(c[e>>2]|0)+16>>2]&127](e)|0;if(g|0){if(c[g+480>>2]|0){Xd(g,j);break}m=j;if((c[g+304>>2]|0)>>>0<=m>>>0?(c[g+308>>2]|0)>>>0>m>>>0:0){m=g+300|0;c[j>>2]=c[m>>2];c[m>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{m=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);h=h+1|0}while((h|0)<(c[i>>2]|0))}do if(!(c[b+480>>2]|0)){m=k;if((c[b+304>>2]|0)>>>0<=m>>>0?(c[b+308>>2]|0)>>>0>m>>>0:0){m=b+300|0;c[k>>2]=c[m>>2];c[m>>2]=k;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{m=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}else Xd(b,k);while(0);c[i>>2]=0}}b:do if(!d){c:do if(!(c[b+4>>2]|0)){f=c[b+20>>2]|0;if((f|0)<=0)break b;g=c[b+16>>2]|0;e=0;while(1){d=c[g+(e<<4)+4>>2]|0;if(d|0?c[d+16>>2]|0:0)break c;e=e+1|0;if((e|0)>=(f|0))break b}}while(0);Vb(b,5,50150,o);o=5;Ra=p;return o|0}while(0);c[n>>2]=1691352191;fc(b);o=0;Ra=p;return o|0}function Cd(a){a=a|0;return Bd(a,1)|0}function Dd(a,b,d){a=a|0;b=b|0;d=d|0;if(((b*1e3|0)+1e3|0)>(c[a+448>>2]|0)){d=0;return d|0}d=c[a>>2]|0;Xa[c[d+60>>2]&255](d,1e6)|0;d=1;return d|0}function Ed(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;d=Hd(b,d,e,f,g,h,i,j,0,0,0)|0;if((d|0)==3082|(a[b+81>>0]|0)!=0){og(b);b=7;return b|0}else{b=c[b+68>>2]&d;return b|0}return 0}function Fd(a,b,d,e,f,g,h,i,j,k,l){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;l=l|0;var m=0;do if(l){m=ob(12,0)|0;if(!m){Fc(a);ab[l&127](f);b=1;break}c[m>>2]=0;c[m+4>>2]=l;c[m+8>>2]=f;b=Hd(a,b,d,e,f,g,h,i,j,k,m)|0;if(!(c[m>>2]|0)){ab[l&127](f);qb(m)}}else b=Hd(a,b,d,e,f,g,h,i,j,k,0)|0;while(0);return ic(a,b)|0}function Gd(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return Fd(a,b,c,d,e,f,g,h,0,0,i)|0}function Hd(b,e,f,g,h,i,j,k,l,m,n){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0;s=Ra;Ra=Ra+32|0;p=s+16|0;o=s;if((((e|0?(r=(i|0)!=0,!(r&(k|0)!=0)):0)?!((j|0)==0^(k|0)==0):0)?!((f+1|0)>>>0>128|(l|0)==0^(m|0)==0):0)?((Eu(e)|0)&1073741568|0)==0:0){q=g&2048;switch(g&7){case 4:{o=2;break}case 5:{o=Hd(b,e,f,q|1,h,i,j,k,l,m,n)|0;if(o|0){m=o;Ra=s;return m|0}o=Hd(b,e,f,q|2,h,i,j,k,l,m,n)|0;if(!o)o=3;else{m=o;Ra=s;return m|0}break}default:o=g&7}g=o&255;t=Jd(b,e,f,g,0)|0;if((t|0?(c[t+4>>2]&3|0)==(o|0):0)?(a[t>>0]|0)==(f|0):0){if(c[b+168>>2]|0){Vb(b,5,50805,p);t=5;Ra=s;return t|0}o=c[b+4>>2]|0;if(o|0)do{t=o+149|0;p=(d[t>>0]|d[t+1>>0]<<8)&-4|1;a[t>>0]=p;a[t+1>>0]=p>>8;o=c[o+8>>2]|0}while((o|0)!=0)}o=Jd(b,e,f,g,1)|0;if(!o){t=7;Ra=s;return t|0}g=o+36|0;p=c[g>>2]|0;do if(p|0?(t=(c[p>>2]|0)+-1|0,c[p>>2]=t,(t|0)==0):0){ab[c[p+4>>2]&127](c[p+8>>2]|0);if(b|0){if(c[b+480>>2]|0){Xd(b,p);break}t=p;if((c[b+304>>2]|0)>>>0<=t>>>0?(c[b+308>>2]|0)>>>0>t>>>0:0){t=b+300|0;c[p>>2]=c[t>>2];c[t>>2]=p;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{t=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);if(n|0)c[n>>2]=(c[n>>2]|0)+1;c[g>>2]=n;t=o+4|0;c[t>>2]=c[t>>2]&3|q;c[o+16>>2]=r?i:j;c[o+20>>2]=k;c[o+24>>2]=l;c[o+28>>2]=m;c[o+8>>2]=h;a[o>>0]=f;t=0;Ra=s;return t|0}c[o>>2]=58063;c[o+4>>2]=156338;c[o+8>>2]=31517;Db(21,32001,o);t=21;Ra=s;return t|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;j=Ra;Ra=Ra+16|0;if(Jd(b,d,e,1,0)|0){b=0;Ra=j;return b|0}i=Bb(d,j)|0;if(!i){b=7;Ra=j;return b|0}if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](12)|0;if(!f)h=14;else{g=f;h=23}}else{f=Wa[c[29356>>2]&127](12)|0;if((c[14985]|0)>>>0<12)c[14985]=12;h=59064;g=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&g>>>0>0){k=c[14978]|0;h=Tv(g|0,h|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;c[14768]=((g|0)<0|(g|0)==0&h>>>0<=k>>>0)&1}g=Wa[c[29340>>2]&127](f)|0;if(g){f=Wa[c[29352>>2]&127](g)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0){c[14987]=f;h=23}else h=23}else h=14}do if((h|0)==14){f=b+81|0;if((a[f>>0]|0)==0?(a[b+82>>0]|0)==0:0){a[f>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;f=b+272|0;c[f>>2]=(c[f>>2]|0)+1;f=c[b+236>>2]|0;if(f|0)c[f+12>>2]=7}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);f=1;break}else{f=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);f=1;break}}else if((h|0)==23){c[g>>2]=0;c[g+4>>2]=90;c[g+8>>2]=i;f=Hd(b,d,e,1,i,174,0,0,0,0,g)|0;if(!(c[g>>2]|0)){if(!(c[7324]|0))ab[c[29344>>2]&127](i);else{k=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i)}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{k=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}}while(0);if((f|0)==3082|(a[b+81>>0]|0)!=0){og(b);k=7;Ra=j;return k|0}else{k=c[b+68>>2]&f;Ra=j;return k|0}return 0}function Jd(b,f,g,h,i){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;var 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;if(!f)t=0;else t=(Eu(f)|0)&1073741823;u=b+364|0;m=c[b+376>>2]|0;if(!m){k=b+368|0;j=b+372|0}else{k=a[f>>0]|0;if(!(k<<24>>24))j=0;else{j=0;l=f;do{l=l+1|0;j=G(j+(d[208+(k&255)>>0]|0)|0,-1640531535)|0;k=a[l>>0]|0}while(k<<24>>24!=0)}j=(j>>>0)%((c[u>>2]|0)>>>0)|0;k=m+(j<<3)|0;j=m+(j<<3)+4|0}k=c[k>>2]|0;a:do if(!k)j=59292;else{o=d[208+(d[f>>0]|0)>>0]|0;while(1){j=c[j>>2]|0;k=k+-1|0;m=c[j+12>>2]|0;n=a[m>>0]|0;l=(d[208+(n&255)>>0]|0)-o|0;if(!(n<<24>>24==0|(l|0)!=0)){n=f;do{m=m+1|0;n=n+1|0;v=a[m>>0]|0;l=(d[208+(v&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(l|0)!=0))}if(!l)break a;if(!k){j=59292;break}}}while(0);j=c[j+8>>2]|0;b:do if(!j){l=0;j=0}else{o=h&255;if((g|0)==-2){l=0;k=0;while(1){o=(c[j+16>>2]|0)==0?0:6;v=(o|0)>(k|0);k=v?o:k;l=v?j:l;j=c[j+12>>2]|0;if(!j){j=k;break b}}}l=0;n=0;while(1){v=a[j>>0]|0;k=v<<24>>24;do if(!(v<<24>>24>-1&(k|0)!=(g|0))){k=(k|0)==(g|0)?4:1;m=c[j+4>>2]|0;if((m&3|0)==(o|0)){k=k|2;break}else{k=((m&o)>>>1&1)+k|0;break}}else k=0;while(0);v=(k|0)>(n|0);k=v?k:n;l=v?j:l;j=c[j+12>>2]|0;if(!j){j=k;break}else n=k}}while(0);c:do if(!(i<<24>>24)){if(l|0?(c[b+24>>2]&2|0)==0:0){q=l;r=0;o=94;break}o=d[208+(d[f>>0]|0)>>0]|0;j=c[59088+((((t+o|0)>>>0)%23|0)<<2)>>2]|0;if(j){while(1){m=c[j+32>>2]|0;v=a[m>>0]|0;k=(d[208+(v&255)>>0]|0)-o|0;if(!(v<<24>>24==0|(k|0)!=0)){n=f;do{m=m+1|0;n=n+1|0;v=a[m>>0]|0;k=(d[208+(v&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(k|0)!=0))}if(!k)break;j=c[j+36>>2]|0;if(!j){j=0;o=46;break c}}if(!j){j=0;o=46}else{o=h&255;if((g|0)==-2){k=0;while(1){o=(c[j+16>>2]|0)==0?0:6;v=(o|0)>(k|0);k=v?o:k;l=v?j:l;j=c[j+12>>2]|0;if(!j){j=k;o=46;break c}}}n=0;while(1){v=a[j>>0]|0;k=v<<24>>24;do if(!(v<<24>>24>-1&(k|0)!=(g|0))){k=(k|0)==(g|0)?4:1;m=c[j+4>>2]|0;if((m&3|0)==(o|0)){k=k|2;break}else{k=((m&o)>>>1&1)+k|0;break}}else k=0;while(0);v=(k|0)>(n|0);k=v?k:n;l=v?j:l;j=c[j+12>>2]|0;if(!j){j=k;o=46;break}else n=k}}}else{p=l;s=0;o=93}}else o=46;while(0);d:do if((o|0)==46){k=i<<24>>24!=0;if(k&(j|0)<6){n=t+41|0;i=(b|0)==0;e:do if(i){v=Sv(n|0,0,-1,-1)|0;m=L()|0;if(m>>>0>0|(m|0)==0&v>>>0>2147483390)break d;if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](n)|0;o=71;break}j=Wa[c[29356>>2]&127](n)|0;if((c[14985]|0)>>>0>>0)c[14985]=n;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){v=c[14978]|0;m=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;l=L()|0;c[14768]=((l|0)<0|(l|0)==0&m>>>0<=v>>>0)&1}k=Wa[c[29340>>2]&127](j)|0;if(!k)break d;j=Wa[c[29352>>2]&127](k)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0){c[14987]=j;m=k}else m=k}else{if(c[b+272>>2]|0){if(a[b+81>>0]|0)break d}else{do if(!(0<0|(0==0?(e[b+276>>1]|0)>>>0>>0:0))){k=b+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];o=b+284|0;c[o>>2]=(c[o>>2]|0)+1;o=71;break e}k=b+296|0;j=c[k>>2]|0;if(!j){j=b+292|0;break}else{c[k>>2]=c[j>>2];o=b+284|0;c[o>>2]=(c[o>>2]|0)+1;o=71;break e}}else j=b+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(b,n,0)|0;o=71}while(0);if((o|0)==71)if(!j)break;else m=j;gw(m|0,0,n|0)|0;j=m+40|0;l=m+32|0;c[l>>2]=j;a[m>>0]=g;c[m+4>>2]=h&255;ew(j|0,f|0,t+1|0)|0;k=a[j>>0]|0;if(k<<24>>24){do{a[j>>0]=a[208+(k&255)>>0]|0;j=j+1|0;k=a[j>>0]|0}while(k<<24>>24!=0);j=c[l>>2]|0}j=mi(u,j,m)|0;if((j|0)!=(m|0)){c[m+12>>2]=j;v=m;return v|0}do if(!i){if(c[b+480>>2]|0){Xd(b,m);break}v=m;if((c[b+304>>2]|0)>>>0<=v>>>0?(c[b+308>>2]|0)>>>0>v>>>0:0){v=b+300|0;c[m>>2]=c[v>>2];c[v>>2]=m}else o=83}else o=83;while(0);do if((o|0)==83)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{v=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}while(0);j=b+81|0;if(a[j>>0]|0){v=0;return v|0}if(a[b+82>>0]|0){v=0;return v|0}a[j>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;j=b+272|0;c[j>>2]=(c[j>>2]|0)+1;j=c[b+236>>2]|0;if(!j){v=0;return v|0}c[j+12>>2]=7;v=0;return v|0}else{p=l;s=k;o=93}}while(0);if((o|0)==93?p|0:0){q=p;r=s;o=94}if((o|0)==94?r|(c[q+16>>2]|0)!=0:0){v=q;return v|0}v=0;return v|0}function Kd(a,b,d){a=a|0;b=b|0;d=d|0;d=Ra;Ra=Ra+16|0;b=d;c[b>>2]=c[(c[a+4>>2]|0)+8>>2];b=Bb(50868,b)|0;c[a+20>>2]=1;yc(c[a>>2]|0,b,-1,1,-1)|0;if(!b){Ra=d;return}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);Ra=d;return}else{a=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-a;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);Ra=d;return}}function Ld(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)>(d|0))return 0;Md(b,c,0,0,0)|0;return 0}function Md(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,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=Ra;Ra=Ra+16|0;o=q;if(g|0)c[g>>2]=-1;if(h|0)c[h>>2]=-1;if(f>>>0>3){b=21;Ra=q;return b|0}if((e|0)!=0?(i=a[e>>0]|0,i<<24>>24!=0):0){n=c[b+20>>2]|0;j=n+-1|0;a:do if((n|0)>0){n=208+(i&255)|0;i=j;m=(c[b+16>>2]|0)+(j<<4)|0;while(1){k=c[m>>2]|0;if(k|0){l=a[k>>0]|0;j=(d[208+(l&255)>>0]|0)-(d[n>>0]|0)|0;if(!(l<<24>>24==0|(j|0)!=0)){l=e;do{k=k+1|0;l=l+1|0;r=a[k>>0]|0;j=(d[208+(r&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(r<<24>>24==0|(j|0)!=0))}if(!j)break a}if(!i)break;j=i+-1|0;if((i|0)>0){i=j;m=m+-16|0}else{i=j;break a}}i=109-(d[n>>0]|0)|0;if(!i){j=e;k=50919;do{k=k+1|0;j=j+1|0;r=a[k>>0]|0;i=(d[208+(r&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(r<<24>>24==0|(i|0)!=0))}i=((i|0)!=0)<<31>>31}else i=j;while(0);if((i|0)<0){c[o>>2]=e;Vb(b,1,31432,o);i=1}else p=23}else{i=10;p=23}do if((p|0)==23){c[b+404>>2]=0;i=Nd(b,i,f,g,h)|0;c[b+64>>2]=i;if(i|0){Ne(b,i);break}if(!(c[b+260>>2]|0))i=0;else{Ne(b,0);i=0}}while(0);if((i|0)==3082|(a[b+81>>0]|0)!=0){og(b);i=7}else i=c[b+68>>2]&i;if(c[b+168>>2]|0){r=i;Ra=q;return r|0}c[b+264>>2]=0;r=i;Ra=q;return r|0}function Nd(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,l=0,m=0,n=0,o=0;o=b+20|0;k=c[o>>2]|0;if((k|0)<=0){n=0;o=0;f=1;n=(n|0)!=0;n=f&n;o=n?5:o;return o|0}n=b+16|0;m=(f|0)==0;if((e|0)==10){b=c[(c[n>>2]|0)+4>>2]|0;if(b){i=c[b+4>>2]|0;l=c[b>>2]|0;c[i+4>>2]=l;if(!(a[i+20>>0]|0)){i=c[i>>2]|0;j=c[i+216>>2]|0;if(!j)b=0;else{if(m)b=0;else b=c[i+176>>2]|0;b=Qf(j,l,f,b,c[i+180>>2]|0,d[i+11>>0]|0,c[i+152>>2]|0,c[i+208>>2]|0,g,h)|0;k=c[o>>2]|0}}else b=6}else b=0;j=(b|0)==5;i=j?0:b;j=j&1;b=(i|0)==0;if(!(b&(k|0)>1)){n=j;o=i;f=b;n=(n|0)!=0;n=f&n;o=n?5:o;return o|0}h=1;do{b=c[(c[n>>2]|0)+(h<<4)+4>>2]|0;if(b){i=c[b+4>>2]|0;g=c[b>>2]|0;c[i+4>>2]=g;if(!(a[i+20>>0]|0)){i=c[i>>2]|0;l=c[i+216>>2]|0;if(!l)b=0;else{if(m)b=0;else b=c[i+176>>2]|0;b=Qf(l,g,f,b,c[i+180>>2]|0,d[i+11>>0]|0,c[i+152>>2]|0,c[i+208>>2]|0,0,0)|0;k=c[o>>2]|0}}else b=6}else b=0;e=(b|0)==5;i=e?0:b;j=e?1:j;h=h+1|0;b=(i|0)==0}while(b&(h|0)<(k|0));o=(j|0)!=0;o=b&o;o=o?5:i;return o|0}if(m){m=0;j=0;while(1){if((m|0)==(e|0)){b=c[(c[n>>2]|0)+(e<<4)+4>>2]|0;if(b){i=c[b+4>>2]|0;l=c[b>>2]|0;c[i+4>>2]=l;if(!(a[i+20>>0]|0)){b=c[i>>2]|0;i=c[b+216>>2]|0;if(!i)b=0;else{b=Qf(i,l,0,0,c[b+180>>2]|0,d[b+11>>0]|0,c[b+152>>2]|0,c[b+208>>2]|0,g,h)|0;k=c[o>>2]|0}}else b=6}else b=0;i=(b|0)==5;j=i?1:j;i=i?0:b;l=0;g=0}else{i=0;l=h}m=m+1|0;b=(i|0)==0;if(!(b&(m|0)<(k|0)))break;else h=l}o=(j|0)!=0;o=b&o;o=o?5:i;return o|0}else{m=0;j=0;while(1){if((m|0)==(e|0)){b=c[(c[n>>2]|0)+(e<<4)+4>>2]|0;if(b){i=c[b+4>>2]|0;l=c[b>>2]|0;c[i+4>>2]=l;if(!(a[i+20>>0]|0)){b=c[i>>2]|0;i=c[b+216>>2]|0;if(!i)b=0;else{b=Qf(i,l,f,c[b+176>>2]|0,c[b+180>>2]|0,d[b+11>>0]|0,c[b+152>>2]|0,c[b+208>>2]|0,g,h)|0;k=c[o>>2]|0}}else b=6}else b=0;i=(b|0)==5;j=i?1:j;i=i?0:b;l=0;g=0}else{i=0;l=h}m=m+1|0;b=(i|0)==0;if(!(b&(m|0)<(k|0)))break;else h=l}o=(j|0)!=0;o=b&o;o=o?5:i;return o|0}return 0}function Od(a,b){a=a|0;b=b|0;return Pd(a,b,6,0)|0}function Pd(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,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;H=Ra;Ra=Ra+128|0;F=H+88|0;E=H+80|0;z=H+64|0;y=H+56|0;x=H+48|0;v=H+32|0;u=H+24|0;t=H+16|0;q=H;w=H+112|0;r=H+104|0;G=H+108|0;s=H+100|0;c[r>>2]=f;c[G>>2]=0;c[s>>2]=0;c[e>>2]=0;h=mb()|0;if(h|0){G=h;Ra=H;return G|0}if((f&32768|0)==0&(c[7325]|0)!=0)k=(f&65536|0)==0?c[7326]|0:1;else k=0;if(!(f&262144)){if(c[7378]|0){f=f|131072;c[r>>2]=f}}else{f=f&-131073;c[r>>2]=f}p=f&-655129;c[r>>2]=p;if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](488)|0;if(!h){h=0;B=148}else B=19}else{h=Wa[c[29356>>2]&127](488)|0;if((c[14985]|0)>>>0<488)c[14985]=488;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){D=c[14978]|0;C=Tv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0;B=L()|0;c[14768]=((B|0)<0|(B|0)==0&C>>>0<=D>>>0)&1}h=Wa[c[29340>>2]&127](h)|0;if(h){i=Wa[c[29352>>2]&127](h)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0){c[14987]=i;B=19}else B=19}else{h=0;B=148}}a:do if((B|0)==19){gw(h|0,0,488)|0;if(k|0)c[h+12>>2]=8;C=h+68|0;c[C>>2]=255;c[h+20>>2]=2;D=h+96|0;c[D>>2]=-264537850;n=h+16|0;c[n>>2]=h+412;o=h+272|0;c[o>>2]=1;i=h+108|0;j=2288;k=i+44|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));c[h+152>>2]=0;a[h+79>>0]=1;a[h+84>>0]=-1;m=29480;A=c[m+4>>2]|0;i=h+48|0;c[i>>2]=c[m>>2];c[i+4>>2]=A;c[h+92>>2]=0;c[h+156>>2]=2147483647;i=h+32|0;c[i>>2]=295008;c[i+4>>2]=0;i=h+380|0;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;c[i+12>>2]=0;A=h+336|0;c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;c[A+12>>2]=0;Qd(h,34049,1,0,78,0)|0;Qd(h,34049,3,0,78,0)|0;Qd(h,34049,2,0,78,0)|0;Qd(h,43602,1,0,79,0)|0;Qd(h,50932,1,1,78,0)|0;A=h+81|0;b:do if(!(a[A>>0]|0)){k=c[h+392>>2]|0;if(!k){j=h+384|0;i=h+388|0}else{i=783505461%((c[i>>2]|0)>>>0)|0;j=k+(i<<3)|0;i=k+(i<<3)+4|0}j=c[j>>2]|0;c:do if(!j)i=59292;else while(1){i=c[i>>2]|0;j=j+-1|0;l=c[i+12>>2]|0;m=a[l>>0]|0;k=(d[208+(m&255)>>0]|0)+-98|0;if(!(m<<24>>24==0|(k|0)!=0)){m=34049;do{l=l+1|0;m=m+1|0;I=a[l>>0]|0;k=(d[208+(I&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(I<<24>>24==0|(k|0)!=0))}if(!k)break c;if(!j){i=59292;break}}while(0);c[h+8>>2]=c[i+8>>2];c[h+60>>2]=p;d:do if(!(1<<(f&7)&70)){c[q>>2]=58063;c[q+4>>2]=157776;c[q+8>>2]=31517;Db(21,32001,q);i=21}else{i=dn(g,b,r,h,G,s)|0;switch(i|0){case 0:break;case 7:{if(a[A>>0]|0){i=7;break d}if(a[h+82>>0]|0){i=7;break d}a[A>>0]=1;if((c[h+180>>2]|0)>0)c[h+264>>2]=1;c[o>>2]=(c[o>>2]|0)+1;f=c[h+236>>2]|0;if(!f){i=7;break d}c[f+12>>2]=7;i=7;break d}default:break d}f=Pe(c[h>>2]|0,c[G>>2]|0,h,(c[n>>2]|0)+4|0,0,c[r>>2]|256)|0;e:do if((f|0)<3082){switch(f|0){case 0:break;default:{B=46;break e}}f=c[(c[n>>2]|0)+4>>2]|0;c[(c[f+4>>2]|0)+4>>2]=c[f>>2];f=en(h,f)|0;c[(c[n>>2]|0)+12>>2]=f;if(!(a[A>>0]|0))a[h+78>>0]=a[f+77>>0]|0;B=en(h,0)|0;I=c[n>>2]|0;c[I+28>>2]=B;c[I>>2]=50919;a[I+8>>0]=3;c[I+16>>2]=31427;a[I+24>>0]=1;c[D>>2]=-1607883113;if(a[A>>0]|0){B=148;break a}p=h+64|0;c[p>>2]=0;if(c[h+260>>2]|0)Ne(h,0);do if((Id(h,50938,2)|0)==7?(a[A>>0]|0)==0:0){if(a[h+82>>0]|0)break;a[A>>0]=1;if((c[h+180>>2]|0)>0)c[h+264>>2]=1;c[o>>2]=(c[o>>2]|0)+1;f=c[h+236>>2]|0;if(!f)break;c[f+12>>2]=7}while(0);f=c[D>>2]|0;f:do if((f|0)>=-264537850)if((f|0)<1266094736)switch(f|0){case -264537850:{B=62;break f}default:{B=61;break f}}else switch(f|0){case 1266094736:{B=62;break f}default:{B=61;break f}}else switch(f|0){case -1607883113:{B=62;break}default:B=61}while(0);g:do if((B|0)==61){c[u>>2]=50924;Db(21,38253,u);c[v>>2]=58063;c[v+4>>2]=157091;c[v+8>>2]=31517;Db(21,32001,v);f=21;B=142}else if((B|0)==62){if(a[A>>0]|0){f=7;B=142;break}f=c[C>>2]&c[p>>2];if(f|0){B=142;break}h:do if(0){f=1;k=0;i=0;do{j=c[0+(k<<2)>>2]|0;c[w>>2]=0;if(j){i=Ya[j&127](h,w,0)|0;if(i){c[x>>2]=c[w>>2];Vb(h,i,50944,x);f=0}i=c[w>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{I=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);if(!f)break h;else i=0}k=k+1|0}while(k>>>0>>0)}while(0);f=c[D>>2]|0;i:do if((f|0)>=-264537850)if((f|0)<1266094736)switch(f|0){case -264537850:break i;default:{B=78;break i}}else switch(f|0){case 1266094736:break i;default:{B=78;break i}}else switch(f|0){case -1607883113:break;default:B=78}while(0);if((B|0)==78){c[y>>2]=50924;Db(21,38253,y);c[z>>2]=58063;c[z+4>>2]=157091;c[z+8>>2]=31517;Db(21,32001,z);break b}if(a[A>>0]|0)break b;if(c[C>>2]&c[p>>2]|0)break b;f=rd(h,51142,30516,0)|0;if(f|0){B=142;break}if(mb()|0){f=7;B=142;break}do if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](20)|0;if(!f){f=7;B=142;break g}else i=f}else{f=Wa[c[29356>>2]&127](20)|0;if((c[14985]|0)>>>0<20)c[14985]=20;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){I=c[14978]|0;z=Tv(i|0,j|0,f|0,((f|0)<0)<<31>>31|0)|0;y=L()|0;c[14768]=((y|0)<0|(y|0)==0&z>>>0<=I>>>0)&1}i=Wa[c[29340>>2]&127](f)|0;if(!i){f=7;B=142;break g}f=Wa[c[29352>>2]&127](i)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0<=(c[14987]|0)>>>0)break;c[14987]=f}while(0);a[i>>0]=1;m=i+1|0;a[m>>0]=1;n=i+4|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;do if(!(Ep(i,50983,7,30612)|0)){if(Ep(i,50990,7,30640)|0){f=7;B=111;break}if(Ep(i,50997,10,30488)|0){f=7;B=111;break}f=Hd(h,51007,1,5,i,175,0,0,0,0,0)|0;if((f|0)==3082|(a[A>>0]|0)!=0){og(h);f=7;B=111;break}f=c[C>>2]&f;if(f|0){B=111;break}f=Hd(h,51007,2,5,i,175,0,0,0,0,0)|0;if((f|0)==3082|(a[A>>0]|0)!=0){og(h);f=7;B=111;break}f=c[C>>2]&f;if(f|0){B=111;break}f=Id(h,51022,-1)|0;if(f|0){B=111;break}f=Id(h,51030,1)|0;if(f|0){B=111;break}f=Id(h,51038,1)|0;if(f|0){B=111;break}f=Id(h,51038,2)|0;if(f|0){B=111;break}f=Id(h,37598,1)|0;if(f|0){B=111;break}f=sd(h,51048,30392,i,91)|0;if(f|0){B=142;break g}f=sd(h,51053,30392,i,0)|0;if(f|0){B=142;break g}f=rd(h,55534,30668,i)|0}else{f=7;B=111}while(0);do if((B|0)==111){k=i+8|0;j=c[k>>2]|0;c[k>>2]=0;k=i+16|0;l=c[k>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{I=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);c[k>>2]=0;c[i+12>>2]=0;if(j|0)do{k=j;j=c[j>>2]|0;do if(a[m>>0]|0){l=c[k+12>>2]|0;if(!l)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{I=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{I=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}}while((j|0)!=0);c[n>>2]=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{I=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);if((f|0)==0&(a[A>>0]|0)==0){f=Hd(h,55598,2,1,0,176,0,0,0,0,0)|0;if((f|0)==3082|(a[A>>0]|0)!=0){og(h);f=7;B=142;break}f=c[C>>2]&f;if(f|0){B=142;break}f=Hd(h,55608,1,1,0,177,0,0,0,0,0)|0;if((f|0)==3082|(a[A>>0]|0)!=0){og(h);f=7;B=142;break}f=c[C>>2]&f;if(f|0){B=142;break}f=Hd(h,55619,-1,1,0,178,0,0,0,0,0)|0;if((f|0)==3082|(a[A>>0]|0)!=0){og(h);f=7;B=142;break}f=c[C>>2]&f;if(f|0){B=142;break}f=sd(h,55630,30764,0,0)|0;if(f|0){B=142;break}f=sd(h,55636,30764,1,0)|0}if(f|0)B=142}while(0);if((B|0)==142){c[p>>2]=f;Ne(h,f)}zd(h,0,c[7332]|0,c[7333]|0)|0;c[h+240>>2]=76;c[h+244>>2]=1e3;break b}else switch(f|0){case 3082:{f=7;break}default:B=46}while(0);c[h+64>>2]=f;Ne(h,f);break b}while(0);f=c[s>>2]|0;I=(f|0)==0;c[t>>2]=f;Vb(h,i,I?0:31408,t);if(!I)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{I=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);f=c[D>>2]|0;j:do if((f|0)>=-264537850)if((f|0)<1266094736)switch(f|0){case -264537850:{B=146;break j}default:{B=145;break j}}else switch(f|0){case 1266094736:{B=146;break j}default:{B=145;break j}}else switch(f|0){case -1607883113:{B=146;break}default:B=145}while(0);if((B|0)==145){c[E>>2]=50924;Db(21,38253,E);c[F>>2]=58063;c[F+4>>2]=157091;c[F+8>>2]=31517;Db(21,32001,F);f=21}else if((B|0)==146){if(a[A>>0]|0){B=148;break}f=c[C>>2]&c[h+64>>2];switch(f|0){case 7:{B=148;break a}case 0:break a;default:{}}}c[D>>2]=1266094736}while(0);if((B|0)==148){Bd(h,0)|0;f=7;h=0}c[e>>2]=h;h=c[G>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{I=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);I=f&255;Ra=H;return I|0}function Qd(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,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=Ra;Ra=Ra+32|0;k=t+16|0;j=t;s=f&255;switch(f<<24>>24){case 4:case 8:{r=2;break}default:if((s+-1|0)>>>0>2){c[j>>2]=58063;c[j+4>>2]=157148;c[j+8>>2]=31517;Db(21,32001,j);s=21;Ra=t;return s|0}else r=s}q=r&255;j=Zi(b,q,e,0)|0;if(j|0?c[j+12>>2]|0:0){if(c[b+168>>2]|0){Vb(b,5,57995,k);s=5;Ra=t;return s|0}f=c[b+4>>2]|0;if(f|0)do{p=f+149|0;o=(d[p>>0]|d[p+1>>0]<<8)&-4|1;a[p>>0]=o;a[p+1>>0]=o>>8;f=c[f+8>>2]|0}while((f|0)!=0);p=j+4|0;f=a[p>>0]|0;if((r|0)==(f&-9&255|0)){m=c[b+392>>2]|0;if(!m){k=b+384|0;j=b+388|0}else{k=a[e>>0]|0;if(!(k<<24>>24))j=0;else{j=0;l=e;do{l=l+1|0;j=G(j+(d[208+(k&255)>>0]|0)|0,-1640531535)|0;k=a[l>>0]|0}while(k<<24>>24!=0)}j=(j>>>0)%((c[b+380>>2]|0)>>>0)|0;k=m+(j<<3)|0;j=m+(j<<3)+4|0}k=c[k>>2]|0;a:do if(!k)j=59292;else{o=d[208+(d[e>>0]|0)>>0]|0;while(1){j=c[j>>2]|0;k=k+-1|0;m=c[j+12>>2]|0;n=a[m>>0]|0;l=(d[208+(n&255)>>0]|0)-o|0;if(!(n<<24>>24==0|(l|0)!=0)){n=e;do{m=m+1|0;n=n+1|0;u=a[m>>0]|0;l=(d[208+(u&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(u<<24>>24==0|(l|0)!=0))}if(!l)break a;if(!k){j=59292;break}}}while(0);k=c[j+8>>2]|0;if((a[k+4>>0]|0)==f<<24>>24){j=c[k+16>>2]|0;if(j){ab[j&127](c[k+8>>2]|0);f=a[p>>0]|0}c[k+12>>2]=0}if((a[k+24>>0]|0)==f<<24>>24){j=c[k+36>>2]|0;if(j){ab[j&127](c[k+28>>2]|0);f=a[p>>0]|0}c[k+32>>2]=0}if((a[k+44>>0]|0)==f<<24>>24){f=c[k+56>>2]|0;if(f|0)ab[f&127](c[k+48>>2]|0);c[k+52>>2]=0}}}f=Zi(b,q,e,1)|0;if(!f){u=7;Ra=t;return u|0}c[f+12>>2]=h;c[f+8>>2]=g;c[f+16>>2]=i;a[f+4>>0]=r|s&8;c[b+64>>2]=0;if(!(c[b+260>>2]|0)){u=0;Ra=t;return u|0}Ne(b,0);u=0;Ra=t;return u|0}function Rd(e,f,g,h,i,j,k,l,m){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|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;z=Ra;Ra=Ra+16|0;y=z+8|0;w=z;x=z+12|0;c[x>>2]=0;r=e+20|0;n=c[r>>2]|0;t=e+16|0;q=c[t>>2]|0;if((n|0)>0){o=0;do{p=c[q+(o<<4)+4>>2]|0;if(p|0)c[(c[p+4>>2]|0)+4>>2]=c[p>>2];o=o+1|0}while((o|0)!=(n|0))}p=e+24|0;s=(c[p>>2]&1|0)==0;v=c[q+12>>2]|0;a[e+78>>0]=a[v+77>>0]|0;if(!(b[v+78>>1]&1)){n=eh(e,0,x,0)|0;if(!n){n=c[r>>2]|0;v=9}else v=16}else v=9;a:do if((v|0)==9){if((n|0)>1)do{o=n;n=n+-1|0;if((b[(c[(c[t>>2]|0)+(n<<4)+12>>2]|0)+78>>1]&1)==0?(u=eh(e,n,x,0)|0,u|0):0){n=u;v=16;break a}}while((o|0)>2);if(s)c[p>>2]=c[p>>2]&-2;u=Sd(e,g,f)|0;if((u|0)!=0?(c[u+12>>2]|0)==0:0){do if(h){f=b[u+42>>1]|0;t=f<<16>>16;b:do if(f<<16>>16>0){s=c[u+4>>2]|0;f=d[208+(d[h>>0]|0)>>0]|0;n=0;do{o=s+(n<<4)|0;q=c[o>>2]|0;r=a[q>>0]|0;p=(d[208+(r&255)>>0]|0)-f|0;if(!(r<<24>>24==0|(p|0)!=0)){r=h;do{q=q+1|0;r=r+1|0;A=a[q>>0]|0;p=(d[208+(A&255)>>0]|0)-(d[208+(d[r>>0]|0)>>0]|0)|0}while(!(A<<24>>24==0|(p|0)!=0))}if(!p)break b;n=n+1|0}while((n|0)<(t|0))}else{n=0;o=0}while(0);if((n|0)==(t|0)){if(c[u+36>>2]&32|0){o=0;u=0;t=0;f=0;s=0;r=0;p=0;q=0;break a}r=a[h>>0]|0;q=d[208+(r&255)>>0]|0;n=q+-95|0;r=r<<24>>24==0;if(!(r|(n|0)!=0)){o=58070;p=h;do{p=p+1|0;o=o+1|0;A=a[p>>0]|0;n=(d[208+(A&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(A<<24>>24==0|(n|0)!=0))}if(n|0){n=q+-114|0;if(!(r|(n|0)!=0)){o=40352;p=h;do{p=p+1|0;o=o+1|0;A=a[p>>0]|0;n=(d[208+(A&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(A<<24>>24==0|(n|0)!=0))}if(n|0){n=q+-111|0;if(!(r|(n|0)!=0)){o=58078;p=h;do{p=p+1|0;o=o+1|0;A=a[p>>0]|0;n=(d[208+(A&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(A<<24>>24==0|(n|0)!=0))}if(n|0){o=0;u=0;t=0;f=0;s=0;r=0;p=0;q=0;break a}}}A=b[u+40>>1]|0;n=A<<16>>16;if(A<<16>>16<=-1){q=0;n=1;s=0;r=0;p=31453;break}q=n;o=(c[u+4>>2]|0)+(n<<4)|0}else q=n;if(o){n=a[o+15>>0]|0;if(!(n&4))p=0;else{p=c[o>>2]|0;p=p+(Eu(p)|0)+1|0}r=c[o+8>>2]|0;o=(a[o+12>>0]|0)!=0&1;n=n&1;if((q|0)==(b[u+40>>1]|0)){q=(c[u+36>>2]|0)>>>3&1;s=o}else{q=0;s=o}}else{q=0;n=1;s=0;r=0;p=31453}}else{q=0;n=1;s=0;r=0;p=31453}while(0);o=0;t=q;f=n;r=(r|0)==0?34049:r;q=0}else{o=0;u=0;t=0;f=0;s=0;r=0;p=0;q=0}}while(0);if((v|0)==16){o=n;u=0;t=0;f=0;s=0;r=0;p=0;q=(n|0)!=0}if(i|0)c[i>>2]=p;if(j|0)c[j>>2]=r;if(k|0)c[k>>2]=s;if(l|0)c[l>>2]=f;if(m|0)c[m>>2]=t;n=c[x>>2]|0;if(!(q|(u|0)!=0)){do if(n|0){if(e|0){if(c[e+480>>2]|0){Xd(e,n);break}A=n;if((c[e+304>>2]|0)>>>0<=A>>>0?(c[e+308>>2]|0)>>>0>A>>>0:0){A=e+300|0;c[n>>2]=c[A>>2];c[A>>2]=n;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{A=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-A;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);c[w>>2]=g;c[w+4>>2]=h;n=dd(e,31461,w)|0;c[x>>2]=n;o=1}c[y>>2]=n;Vb(e,o,(n|0)==0?0:31408,y);n=c[x>>2]|0;do if(n|0){if(e|0){if(c[e+480>>2]|0){Xd(e,n);break}A=n;if((c[e+304>>2]|0)>>>0<=A>>>0?(c[e+308>>2]|0)>>>0>A>>>0:0){A=e+300|0;c[n>>2]=c[A>>2];c[A>>2]=n;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{A=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-A;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);if((o|0)==3082|(a[e+81>>0]|0)!=0){og(e);A=7;Ra=z;return A|0}else{A=c[e+68>>2]&o;Ra=z;return A|0}return 0}function Sd(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,l=0;k=c[a+20>>2]|0;l=(d|0)==0;e=a+16|0;if((k|0)<=0){a=b;while(1){if(Hb(a,34585)|0){h=0;a=18;break}if(!(Gb(d,c[(c[e>>2]|0)+16>>2]|0)|0))a=34855;else{h=0;a=18;break}}if((a|0)==18)return h|0}f=c[e>>2]|0;g=f+16|0;a:while(1){if(l){a=0;do{j=ji((c[f+((a^a>>>0<2)<<4)+12>>2]|0)+8|0,b)|0;if(j|0){a=16;break a}a=a+1|0}while((a|0)<(k|0))}else{a=0;do{e=a^a>>>0<2;if((Hb(d,c[f+(e<<4)>>2]|0)|0)==0?(i=ji((c[f+(e<<4)+12>>2]|0)+8|0,b)|0,i|0):0){a=17;break a}a=a+1|0}while((a|0)<(k|0))}if(Hb(b,34585)|0){h=0;a=18;break}if(!(Gb(d,c[g>>2]|0)|0))b=34855;else{h=0;a=18;break}}if((a|0)==16){l=j;return l|0}else if((a|0)==17){l=i;return l|0}else if((a|0)==18)return h|0;return 0}function Td(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;if(e){j=c[b+20>>2]|0;g=j+-1|0;a:do if((j|0)>0){f=g;j=(c[b+16>>2]|0)+(g<<4)|0;while(1){h=c[j>>2]|0;if(h|0){i=a[h>>0]|0;g=(d[208+(i&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0;if(!(i<<24>>24==0|(g|0)!=0)){i=e;do{h=h+1|0;i=i+1|0;k=a[h>>0]|0;g=(d[208+(k&255)>>0]|0)-(d[208+(d[i>>0]|0)>>0]|0)|0}while(!(k<<24>>24==0|(g|0)!=0))}if(!g)break a}if(!f)break;g=f+-1|0;if((f|0)>0){f=g;j=j+-16|0}else{f=g;break a}}f=109-(d[208+(d[e>>0]|0)>>0]|0)|0;if(!f){g=50919;do{g=g+1|0;e=e+1|0;k=a[g>>0]|0;f=(d[208+(k&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(k<<24>>24==0|(f|0)!=0))}f=((f|0)!=0)<<31>>31}else f=g;while(0);if((f|0)<0){k=0;return k|0}}else f=0;k=c[(c[b+16>>2]|0)+(f<<4)+4>>2]|0;return k|0}function Ud(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=c[a+4>>2]|0;c[h+4>>2]=c[a>>2];g=h+22|0;if(b[g>>1]&2){h=8;return h|0}if((e|0)<0)e=(c[h+32>>2]|0)-(c[h+36>>2]|0)|0;if((d+-512|0)>>>0<65025?(d+-1&d|0)==0:0){c[h+32>>2]=d;Tf(h)}d=h+32|0;a=Se(c[h>>2]|0,d,e)|0;c[h+36>>2]=(c[d>>2]|0)-(e&65535);if(!f){h=a;return h|0}b[g>>1]=b[g>>1]|2;h=a;return h|0}function Vd(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;if((a[b>>0]|0)!=48){i=xb(b)|0;d=Og(b,d,i,1)|0;return d|0}switch(a[b+1>>0]|0){case 88:case 120:break;default:{i=xb(b)|0;d=Og(b,d,i,1)|0;return d|0}}i=2;while(1){h=a[b+i>>0]|0;if(h<<24>>24==48)i=i+1|0;else break}if(!(a[880+(h&255)>>0]&8)){f=i;g=0;e=0}else{f=i;g=0;e=0;do{j=cw(g|0,e|0,4)|0;e=L()|0;g=h<<24>>24;g=j|(0-(g>>>6&1)&9)+g&15;f=f+1|0;h=a[b+f>>0]|0}while((a[880+(h&255)>>0]&8)!=0)}j=d;c[j>>2]=g;c[j+4>>2]=e;return ((a[b+f>>0]|0)==0?((f-i|0)>16?2:0):2)|0}function Wd(b){b=b|0;var c=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;if(!b){w=0;return w|0}c=a[b>>0]|0;do if(!(c<<24>>24)){c=31489;f=3}else{o=c&255;c=208+o|0;if((o|32|0)==115){c=a[b+1>>0]|0;if(!(c<<24>>24)){c=31490;f=3;break}o=c&255;c=208+o|0;if((o|32|0)==113){c=a[b+2>>0]|0;if(!(c<<24>>24)){c=31491;f=3;break}o=c&255;c=208+o|0;if((o|32|0)==108){c=a[b+3>>0]|0;if(!(c<<24>>24)){c=31492;f=3;break}o=c&255;c=208+o|0;if((o|32|0)==105){c=a[b+4>>0]|0;if(!(c<<24>>24)){c=31493;f=3;break}o=c&255;c=208+o|0;if((o|32|0)==116){c=a[b+5>>0]|0;if(!(c<<24>>24)){c=31494;f=3;break}o=c&255;c=208+o|0;if((o|32|0)==101){c=a[b+6>>0]|0;if(!(c<<24>>24)){c=31495;f=3;break}if(c<<24>>24==95){e=b+7|0;break}else{f=95;c=208+(c&255)|0}}else f=101}else f=116}else f=105}else f=108}else f=113}else f=115;e=d[c>>0]|0;c=f;f=7}while(0);if((f|0)==3){e=0;c=a[208+(d[c>>0]|0)>>0]|0;f=7}if((f|0)==7)e=(e|0)==(c&255|0)?b+7|0:b;o=(Eu(e)|0)&1073741823;if(!o){w=0;return w|0}f=e;h=58082;b=o;while(1){c=a[f>>0]|0;if(!(c<<24>>24)){f=11;break}c=a[208+(c&255)>>0]|0;g=a[208+(d[h>>0]|0)>>0]|0;if(c<<24>>24!=g<<24>>24){f=13;break}if((b|0)>1){f=f+1|0;h=h+1|0;b=b+-1|0}else{f=16;break}}if((f|0)==11){i=0;j=a[208+(d[h>>0]|0)>>0]|0;f=15}else if((f|0)==13){i=c&255;j=g;f=15}if((f|0)==15?(i|0)==(j&255|0):0)f=16;if((f|0)==16?(a[880+(d[58082+o>>0]|0)>>0]&70)==0:0){w=1;return w|0}f=e;h=58103;b=o;while(1){c=a[f>>0]|0;if(!(c<<24>>24)){f=23;break}c=a[208+(c&255)>>0]|0;g=a[208+(d[h>>0]|0)>>0]|0;if(c<<24>>24!=g<<24>>24){f=21;break}if((b|0)>1){f=f+1|0;h=h+1|0;b=b+-1|0}else{f=25;break}}if((f|0)==21){k=c&255;l=g;f=24}else if((f|0)==23){k=0;l=a[208+(d[h>>0]|0)>>0]|0;f=24}if((f|0)==24?(k|0)==(l&255|0):0)f=25;if((f|0)==25?(a[880+(d[58103+o>>0]|0)>>0]&70)==0:0){w=1;return w|0}f=e;h=58115;b=o;while(1){c=a[f>>0]|0;if(!(c<<24>>24)){f=31;break}c=a[208+(c&255)>>0]|0;g=a[208+(d[h>>0]|0)>>0]|0;if(c<<24>>24!=g<<24>>24){f=29;break}if((b|0)>1){f=f+1|0;h=h+1|0;b=b+-1|0}else{f=33;break}}if((f|0)==29){m=c&255;n=g;f=32}else if((f|0)==31){m=0;n=a[208+(d[h>>0]|0)>>0]|0;f=32}if((f|0)==32?(m|0)==(n&255|0):0)f=33;if((f|0)==33?(a[880+(d[58115+o>>0]|0)>>0]&70)==0:0){w=1;return w|0}f=e;h=58127;b=o;while(1){c=a[f>>0]|0;if(!(c<<24>>24)){f=39;break}g=a[208+(c&255)>>0]|0;c=a[208+(d[h>>0]|0)>>0]|0;if(g<<24>>24!=c<<24>>24){f=37;break}if((b|0)>1){f=f+1|0;h=h+1|0;b=b+-1|0}else{f=41;break}}if((f|0)==37){p=g&255;q=c;f=40}else if((f|0)==39){p=0;q=a[208+(d[h>>0]|0)>>0]|0;f=40}if((f|0)==40?(p|0)==(q&255|0):0)f=41;if((f|0)==41?(a[880+(d[58127+o>>0]|0)>>0]&70)==0:0){w=1;return w|0}f=e;h=58151;b=o;while(1){c=a[f>>0]|0;if(!(c<<24>>24)){f=47;break}c=a[208+(c&255)>>0]|0;g=a[208+(d[h>>0]|0)>>0]|0;if(c<<24>>24!=g<<24>>24){f=45;break}if((b|0)>1){f=f+1|0;h=h+1|0;b=b+-1|0}else{f=49;break}}if((f|0)==45){r=c&255;s=g;f=48}else if((f|0)==47){r=0;s=a[208+(d[h>>0]|0)>>0]|0;f=48}if((f|0)==48?(r|0)==(s&255|0):0)f=49;if((f|0)==49?(a[880+(d[58151+o>>0]|0)>>0]&70)==0:0){w=1;return w|0}f=e;h=58164;b=o;while(1){c=a[f>>0]|0;if(!(c<<24>>24)){f=55;break}c=a[208+(c&255)>>0]|0;g=a[208+(d[h>>0]|0)>>0]|0;if(c<<24>>24!=g<<24>>24){f=53;break}if((b|0)>1){f=f+1|0;h=h+1|0;b=b+-1|0}else{f=57;break}}if((f|0)==53){t=c&255;u=g;f=56}else if((f|0)==55){t=0;u=a[208+(d[h>>0]|0)>>0]|0;f=56}if((f|0)==56?(t|0)==(u&255|0):0)f=57;if((f|0)==57?(a[880+(d[58164+o>>0]|0)>>0]&70)==0:0){w=1;return w|0}g=58184;f=o;while(1){c=a[e>>0]|0;if(!(c<<24>>24)){f=63;break}c=a[208+(c&255)>>0]|0;b=a[208+(d[g>>0]|0)>>0]|0;if(c<<24>>24!=b<<24>>24){f=61;break}if((f|0)>1){e=e+1|0;g=g+1|0;f=f+-1|0}else{f=65;break}}if((f|0)==61){v=c&255;w=b;f=64}else if((f|0)==63){v=0;w=a[208+(d[g>>0]|0)>>0]|0;f=64}if((f|0)==64?(v|0)==(w&255|0):0)f=65;if((f|0)==65?(a[880+(d[58184+o>>0]|0)>>0]&70)==0:0){w=1;return w|0}w=0;return w|0}function Xd(a,b){a=a|0;b=b|0;var d=0;if(((a|0)!=0?(d=b,(c[a+304>>2]|0)>>>0<=d>>>0):0)?(c[a+308>>2]|0)>>>0>d>>>0:0)b=e[a+276>>1]|0;else b=Wa[c[29352>>2]&127](b)|0;a=c[a+480>>2]|0;c[a>>2]=(c[a>>2]|0)+b;return}function Yd(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0;if(c[b+272>>2]|0){if(a[b+81>>0]|0){f=0;return f|0}}else{do if(0>>0|(0==(f|0)?(e[b+276>>1]|0)>>>0>>0:0))g=b+288|0;else{g=b+300|0;h=c[g>>2]|0;if(h|0){c[g>>2]=c[h>>2];f=b+284|0;c[f>>2]=(c[f>>2]|0)+1;f=h;return f|0}g=b+296|0;h=c[g>>2]|0;if(!h){g=b+292|0;break}c[g>>2]=c[h>>2];f=b+284|0;c[f>>2]=(c[f>>2]|0)+1;f=h;return f|0}while(0);c[g>>2]=(c[g>>2]|0)+1}f=_d(b,d,f)|0;return f|0}function Zd(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;h=b+81|0;if(a[h>>0]|0){m=0;return m|0}l=d;m=b+304|0;if((c[m>>2]|0)>>>0<=l>>>0?(k=b+308|0,(c[k>>2]|0)>>>0>l>>>0):0){a:do if(!(c[b+272>>2]|0)){do if(!(0>>0|(0==(g|0)?(e[b+276>>1]|0)>>>0>>0:0))){i=b+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];g=b+284|0;c[g>>2]=(c[g>>2]|0)+1;break a}i=b+296|0;h=c[i>>2]|0;if(!h){h=b+292|0;break}else{c[i>>2]=c[h>>2];g=b+284|0;c[g>>2]=(c[g>>2]|0)+1;break a}}else h=b+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;j=13}else j=13;while(0);if((j|0)==13)h=_d(b,f,g)|0;if(!h){m=0;return m|0}ew(h|0,d|0,e[b+276>>1]|0)|0;if(!d){m=h;return m|0}if(c[b+480>>2]|0){Xd(b,d);m=h;return m|0}if((c[m>>2]|0)>>>0<=l>>>0?(c[k>>2]|0)>>>0>l>>>0:0){m=b+300|0;c[d>>2]=c[m>>2];c[m>>2]=d;m=h;return m|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);m=h;return m|0}else{m=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);m=h;return m|0}}if((mb()|0)==0?(i=sb(d,f,g)|0,i|0):0){m=i;return m|0}if(a[h>>0]|0){m=0;return m|0}if(a[b+82>>0]|0){m=0;return m|0}a[h>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;h=b+272|0;c[h>>2]=(c[h>>2]|0)+1;h=c[b+236>>2]|0;if(!h){m=0;return m|0}c[h+12>>2]=7;m=0;return m|0}function _d(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=Sv(d|0,e|0,-1,-1)|0;e=L()|0;do if(!(e>>>0>0|(e|0)==0&f>>>0>2147483390)){if(!(c[7324]|0)){e=Wa[c[29340>>2]&127](d)|0;if(!e)break;return e|0}f=Wa[c[29356>>2]&127](d)|0;if((c[14985]|0)>>>0>>0)c[14985]=d;d=59064;e=c[d>>2]|0;d=c[d+4>>2]|0;if((d|0)>0|(d|0)==0&e>>>0>0){g=c[14978]|0;d=Tv(e|0,d|0,f|0,((f|0)<0)<<31>>31|0)|0;e=L()|0;c[14768]=((e|0)<0|(e|0)==0&d>>>0<=g>>>0)&1}d=Wa[c[29340>>2]&127](f)|0;if(d|0){e=Wa[c[29352>>2]&127](d)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0<=(c[14987]|0)>>>0){g=d;return g|0}c[14987]=e;g=d;return g|0}}while(0);e=b+81|0;if(a[e>>0]|0){g=0;return g|0}if(a[b+82>>0]|0){g=0;return g|0}a[e>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;e=b+272|0;c[e>>2]=(c[e>>2]|0)+1;e=c[b+236>>2]|0;if(!e){g=0;return g|0}c[e+12>>2]=7;g=0;return g|0}function $d(b){b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0;g=c[b>>2]|0;k=b+16|0;j=(c[k>>2]|0)+1|0;a:do if(!g){h=Sv(j|0,0,-1,-1)|0;g=L()|0;if(!(g>>>0>0|(g|0)==0&h>>>0>2147483390)){if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](j)|0;i=25;break}h=Wa[c[29356>>2]&127](j)|0;if((c[14985]|0)>>>0>>0)c[14985]=j;g=59064;f=c[g>>2]|0;g=c[g+4>>2]|0;if((g|0)>0|(g|0)==0&f>>>0>0){j=c[14978]|0;g=Tv(f|0,g|0,h|0,((h|0)<0)<<31>>31|0)|0;f=L()|0;c[14768]=((f|0)<0|(f|0)==0&g>>>0<=j>>>0)&1}f=Wa[c[29340>>2]&127](h)|0;if(f|0){d=Wa[c[29352>>2]&127](f)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0){c[14987]=d;d=f;i=26}else{d=f;i=26}}}}else{if(c[g+272>>2]|0){if(a[g+81>>0]|0)break}else{do if(!(0<0|(0==0?(e[g+276>>1]|0)>>>0>>0:0))){f=g+300|0;d=c[f>>2]|0;if(d|0){c[f>>2]=c[d>>2];i=g+284|0;c[i>>2]=(c[i>>2]|0)+1;i=25;break a}f=g+296|0;d=c[f>>2]|0;if(!d){d=g+292|0;break}else{c[f>>2]=c[d>>2];i=g+284|0;c[i>>2]=(c[i>>2]|0)+1;i=25;break a}}else d=g+288|0;while(0);c[d>>2]=(c[d>>2]|0)+1}d=_d(g,j,0)|0;i=25}while(0);if((i|0)==25?d|0:0)i=26;if((i|0)==26){ew(d|0,c[b+4>>2]|0,(c[k>>2]|0)+1|0)|0;k=b+21|0;a[k>>0]=a[k>>0]|4;k=d;b=b+4|0;c[b>>2]=k;return k|0}a[b+20>>0]=7;if(!(c[b+12>>2]|0)){k=0;b=b+4|0;c[b>>2]=k;return k|0}f=b+21|0;if(!(a[f>>0]&4))d=b+4|0;else{g=c[b>>2]|0;d=b+4|0;h=c[d>>2]|0;do if(h|0){if(g|0){if(c[g+480>>2]|0){Xd(g,h);break}j=h;if((c[g+304>>2]|0)>>>0<=j>>>0?(c[g+308>>2]|0)>>>0>j>>>0:0){j=g+300|0;c[h>>2]=c[j>>2];c[j>>2]=h;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{j=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);a[f>>0]=a[f>>0]&-5}c[b+8>>2]=0;c[k>>2]=0;c[d>>2]=0;k=0;b=b+4|0;c[b>>2]=k;return k|0}function ae(a,b){a=a|0;b=b|0;return 29668}function be(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;j=Ra;Ra=Ra+48|0;i=j+24|0;g=j;h=a+8|0;f=c[h>>2]|0;te(a);ie(a,0)|0;h=c[h>>2]|0;if(c[f+24>>2]|0){f=a+28|0;d=c[f>>2]|0;e=h+32|0;c[d+8>>2]=c[e>>2];c[e>>2]=d;c[a+12>>2]=-1;c[f>>2]=0}do if(h|0?(e=h+36|0,f=(c[e>>2]|0)+-1|0,c[e>>2]=f,(f|0)==0):0){e=h+32|0;b=c[e>>2]|0;if(b|0){f=a+32|0;do{d=b;b=c[b+8>>2]|0;if(Wa[c[2352>>2]&127](c[d>>2]|0)|0){l=c[f>>2]|0;m=uu()|0;m=c[m>>2]|0;k=dv(m)|0;c[g>>2]=33804;c[g+4>>2]=m;c[g+8>>2]=31695;c[g+12>>2]=(l|0)==0?59952:l;c[g+16>>2]=k;Db(4106,31953,g)}if(!(c[7324]|0))ab[c[29344>>2]&127](d);else{m=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d)}}while((b|0)!=0)}c[e>>2]=0;e=c[h+48>>2]|0;d=h+44|0;b=c[d>>2]|0;if(!e)c[14795]=b;else{c[e+44>>2]=b;b=c[d>>2]|0}if(b|0)c[b+48>>2]=e;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{m=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);b=a+12|0;d=c[b>>2]|0;if((d|0)>-1){if(Wa[c[2352>>2]&127](d)|0){l=c[a+32>>2]|0;k=uu()|0;k=c[k>>2]|0;m=dv(k)|0;c[i>>2]=34584;c[i+4>>2]=k;c[i+8>>2]=31695;c[i+12>>2]=(l|0)==0?59952:l;c[i+16>>2]=m;Db(4106,31953,i)}c[b>>2]=-1}b=c[a+28>>2]|0;if(!b){b=a;d=b+52|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Ra=j;return 0}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);b=a;d=b+52|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Ra=j;return 0}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);b=a;d=b+52|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Ra=j;return 0}return 0}function ce(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;l=a+12|0;g=0;h=d;i=b;while(1){if((xv(c[l>>2]|0,e,0)|0)<0){f=3;break}j=Ya[c[2436>>2]&127](c[l>>2]|0,i,h)|0;if((h|0)==(j|0)){f=10;break}if((j|0)<0){k=uu()|0;if((c[k>>2]|0)==4)k=1;else{f=7;break}}else{e=Sv(e|0,f|0,j|0,((j|0)<0)<<31>>31|0)|0;f=L()|0;k=j;g=j+g|0;h=h-j|0;i=(j|0)==0?i:i+j|0}if((k|0)<=0){h=0;f=10;break}}if((f|0)==3){g=uu()|0;c[a+20>>2]=c[g>>2];g=-1}else if((f|0)==7){h=uu()|0;c[a+20>>2]=c[h>>2];h=j;g=0;f=10}if((f|0)==10)g=g+h|0;if((g|0)==(d|0)){d=0;return d|0}if((g|0)<0){d=266;return d|0}c[a+20>>2]=0;gw(b+g|0,0,d-g|0)|0;d=522;return d|0}function de(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;i=a+12|0;j=d;h=f;a:while(1){d=c[i>>2]|0;g=j&131071;while(1){if((xv(d,e,0)|0)<0){f=-1;b=6;break a}f=Ya[c[2472>>2]&127](d,b,g)|0;if((f|0)>=0)break;k=uu()|0;if((c[k>>2]|0)!=4){b=6;break a}}d=(j|0)>(f|0);if(!(d&(f|0)!=0)){b=9;break}k=Sv(e|0,h|0,f|0,((f|0)<0)<<31>>31|0)|0;j=j-f|0;b=b+f|0;h=L()|0;e=k}if((b|0)==6){d=a+20|0;b=uu()|0;b=c[b>>2]|0;c[d>>2]=b;if((j|0)<=(f|0)){k=0;return k|0}if((b|0)!=28){k=778;return k|0}}else if((b|0)==9)if(d)d=a+20|0;else{k=0;return k|0}c[d>>2]=0;k=13;return k|0}function ee(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;j=Ra;Ra=Ra+32|0;h=j;f=c[a+40>>2]|0;g=((f|0)<0)<<31>>31;d=Sv(b|0,d|0,-1,-1)|0;d=Sv(d|0,L()|0,f|0,g|0)|0;e=L()|0;if((f|0)>0){b=Zv(d|0,e|0,f|0,g|0)|0;b=Tv(d|0,e|0,b|0,L()|0)|0;L()|0}d=c[a+12>>2]|0;do{e=Xa[c[2412>>2]&255](d,b)|0;if((e|0)>=0){i=6;break}g=uu()|0}while((c[g>>2]|0)==4);if((i|0)==6?(e|0)==0:0){i=0;Ra=j;return i|0}g=uu()|0;c[a+20>>2]=c[g>>2];a=c[a+32>>2]|0;g=uu()|0;g=c[g>>2]|0;i=dv(g)|0;c[h>>2]=36273;c[h+4>>2]=g;c[h+8>>2]=31726;c[h+12>>2]=(a|0)==0?59952:a;c[h+16>>2]=i;Db(1546,31953,h);i=1546;Ra=j;return i|0}function fe(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;h=Ra;Ra=Ra+48|0;g=h+24|0;d=h;f=h+44|0;if(zv(c[a+12>>2]|0)|0){f=uu()|0;c[a+20>>2]=c[f>>2];f=c[a+32>>2]|0;a=uu()|0;a=c[a>>2]|0;g=dv(a)|0;c[d>>2]=36228;c[d+4>>2]=a;c[d+8>>2]=32026;c[d+12>>2]=(f|0)==0?59952:f;c[d+16>>2]=g;Db(1034,31953,d);g=1034;Ra=h;return g|0}e=a+18|0;if(!(b[e>>1]&8)){g=0;Ra=h;return g|0}d=a+32|0;if((Xa[c[2544>>2]&255](c[d>>2]|0,f)|0)==0?(zv(c[f>>2]|0)|0,Wa[c[2352>>2]&127](c[f>>2]|0)|0):0){a=c[d>>2]|0;d=uu()|0;d=c[d>>2]|0;f=dv(d)|0;c[g>>2]=36242;c[g+4>>2]=d;c[g+8>>2]=31695;c[g+12>>2]=(a|0)==0?59952:a;c[g+16>>2]=f;Db(4106,31953,g)}b[e>>1]=b[e>>1]&-9;g=0;Ra=h;return g|0}function ge(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=Ra;Ra=Ra+80|0;d=e;if(!(Xa[c[2400>>2]&255](c[a+12>>2]|0,d)|0)){a=c[d+36>>2]|0;f=(a|0)==1;d=b;c[d>>2]=f?0:a;c[d+4>>2]=f?0:((a|0)<0)<<31>>31;d=0;Ra=e;return d|0}else{f=uu()|0;c[a+20>>2]=c[f>>2];f=1802;Ra=e;return f|0}return 0}function he(d,e){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;C=Ra;Ra=Ra+96|0;r=C+56|0;t=C+48|0;q=C+40|0;s=C+32|0;l=C+24|0;m=C+16|0;h=C+8|0;j=C;y=C+80|0;x=C+64|0;B=d+16|0;g=a[B>>0]|0;if((g&255|0)>=(e|0)){d=0;Ra=C;return d|0}w=d+8|0;v=c[w>>2]|0;A=v+28|0;f=a[A>>0]|0;if(g<<24>>24!=f<<24>>24?(e|0)>1|(f&255)>2:0){d=5;Ra=C;return d|0}k=(e|0)==1;do if(!k){f=x+8|0;c[f>>2]=1;b[x+2>>1]=0;if((e|0)==4)if((g&255)<3){o=f;z=10}else z=43;else z=42}else{if((f+-1&255)>=2){o=x+8|0;c[o>>2]=1;b[x+2>>1]=0;z=10;break}a[B>>0]=1;d=v+20|0;c[d>>2]=(c[d>>2]|0)+1;d=v+24|0;c[d>>2]=(c[d>>2]|0)+1;d=0;Ra=C;return d|0}while(0);a:do if((z|0)==10){b[x>>1]=(k^1)&1;n=x+4|0;c[n>>2]=1073741824;p=d+18|0;do if((b[p>>1]&3)==1){g=v+29|0;if(!(a[g>>0]|0)){b[y+2>>1]=0;c[y+4>>2]=1073741826;c[y+8>>2]=510;b[y>>1]=1;z=c[606]|0;f=c[d+12>>2]|0;c[j>>2]=y;f=Ya[z&127](f,13,j)|0;if((f|0)<0){z=17;break}else{a[g>>0]=1;i=v+24|0;c[i>>2]=(c[i>>2]|0)+1;i=f;z=16;break}}}else{z=c[606]|0;i=c[d+12>>2]|0;c[h>>2]=x;i=Ya[z&127](i,13,h)|0;z=16}while(0);if((z|0)==16?i|0:0)z=17;if((z|0)==17){g=uu()|0;g=c[g>>2]|0;switch(g|0){case 1:{f=3;break}case 37:case 4:case 16:case 110:case 11:case 13:{d=5;Ra=C;return d|0}default:f=3850}c[d+20>>2]=g;d=f;Ra=C;return d|0}if(k){f=1073741826;c[n>>2]=f;c[o>>2]=510;h=c[w>>2]|0;do if((b[p>>1]&3)==1){g=h+29|0;if(!(a[g>>0]|0)){b[y+2>>1]=0;c[y+4>>2]=f;c[y+8>>2]=510;b[y>>1]=1;z=c[606]|0;f=c[d+12>>2]|0;c[m>>2]=y;f=Ya[z&127](f,13,m)|0;if((f|0)<0){z=28;break}else{a[g>>0]=1;z=h+24|0;c[z>>2]=(c[z>>2]|0)+1;z=27;break}}else{f=0;g=0}}else{z=c[606]|0;f=c[d+12>>2]|0;c[l>>2]=x;f=Ya[z&127](f,13,l)|0;z=27}while(0);if((z|0)==27)if(!f){f=0;g=0}else z=28;b:do if((z|0)==28){f=uu()|0;f=c[f>>2]|0;switch(f|0){case 37:case 4:case 16:case 110:case 11:case 13:{g=5;break b}case 1:{f=1;g=3;break b}default:{g=3850;break b}}}while(0);c[n>>2]=1073741824;c[o>>2]=1;b[x>>1]=2;j=c[w>>2]|0;do if((b[p>>1]&3)==1){i=j+29|0;if(!(a[i>>0]|0)){b[y+2>>1]=0;c[y+4>>2]=1073741826;c[y+8>>2]=510;b[y>>1]=1;z=c[606]|0;h=c[d+12>>2]|0;c[s>>2]=y;h=Ya[z&127](h,13,s)|0;if((h|0)<0){z=37;break}else{a[i>>0]=1;z=j+24|0;c[z>>2]=(c[z>>2]|0)+1;z=37;break}}else z=39}else{z=c[606]|0;h=c[d+12>>2]|0;c[q>>2]=x;h=Ya[z&127](h,13,q)|0;z=37}while(0);if((z|0)==37)if((g|0)==0&(h|0)!=0){f=uu()|0;g=2058;f=c[f>>2]|0}else z=39;c:do if((z|0)==39)switch(g&4095){case 0:{a[B>>0]=1;z=v+24|0;c[z>>2]=(c[z>>2]|0)+1;c[v+20>>2]=1;z=58;break a}case 5:{d=5;Ra=C;return d|0}default:break c}while(0);c[d+20>>2]=f;d=g;Ra=C;return d|0}else{f=o;z=42}}while(0);if((z|0)==42)if((e|0)!=4){b[x>>1]=1;if((e|0)==2){h=1073741825;i=1073741824;g=1;z=48}else{g=1073741824;z=47}}else z=43;if((z|0)==43)if((c[v+20>>2]|0)>1){f=5;z=60}else{b[x>>1]=1;g=1073741824;z=47}if((z|0)==47){h=g+2|0;i=g;g=510;z=48}d:do if((z|0)==48){c[x+4>>2]=h;c[f>>2]=g;h=c[w>>2]|0;do if((b[d+18>>1]&3)==1){g=h+29|0;if(a[g>>0]|0){z=58;break d}b[y+2>>1]=0;c[y+4>>2]=i+2;c[y+8>>2]=510;b[y>>1]=1;x=c[606]|0;f=c[d+12>>2]|0;c[t>>2]=y;f=Ya[x&127](f,13,t)|0;if((f|0)<0)break;else{a[g>>0]=1;u=h+24|0;c[u>>2]=(c[u>>2]|0)+1;u=f;z=54;break}}else{z=c[606]|0;u=c[d+12>>2]|0;c[r>>2]=x;u=Ya[z&127](u,13,r)|0;z=54}while(0);if((z|0)==54?(u|0)==0:0){z=58;break}g=uu()|0;g=c[g>>2]|0;switch(g|0){case 37:case 4:case 16:case 110:case 11:case 13:{f=5;break}case 1:{f=3;z=57;break}default:{f=3850;z=57}}if((z|0)==57)c[d+20>>2]=g;if((e|0)==4)z=60;else{d=f;Ra=C;return d|0}}while(0);if((z|0)==58){d=e&255;a[B>>0]=d;a[A>>0]=d;d=0;Ra=C;return d|0}else if((z|0)==60){a[B>>0]=3;a[A>>0]=3;d=f;Ra=C;return d|0}return 0}function ie(d,e){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;z=Ra;Ra=Ra+112|0;y=z+48|0;r=z+40|0;t=z+32|0;n=z+24|0;o=z+16|0;k=z+8|0;l=z;s=z+88|0;q=z+72|0;x=d+16|0;f=a[x>>0]|0;if((f&255|0)<=(e|0)){y=0;Ra=z;return y|0}v=d+8|0;w=c[v>>2]|0;do if((f&255)>1){a:do if((e|0)==1){b[q>>1]=0;j=q+2|0;b[j>>1]=0;i=1073741826;h=q+4|0;c[h>>2]=i;g=q+8|0;c[g>>2]=510;f=d+18|0;do if((b[f>>1]&3)==1){k=w+29|0;if(a[k>>0]|0){i=w;break a}b[s+2>>1]=0;c[s+4>>2]=i;c[s+8>>2]=510;b[s>>1]=1;A=c[606]|0;i=c[d+12>>2]|0;c[l>>2]=s;i=Ya[A&127](i,13,l)|0;if((i|0)<0)break;else{a[k>>0]=1;m=w+24|0;c[m>>2]=(c[m>>2]|0)+1;m=i;u=11;break}}else{u=c[606]|0;m=c[d+12>>2]|0;c[k>>2]=q;m=Ya[u&127](m,13,k)|0;u=11}while(0);if((u|0)==11?(m|0)==0:0){i=c[v>>2]|0;break}A=uu()|0;c[d+20>>2]=c[A>>2];A=2314;Ra=z;return A|0}else{j=q+2|0;h=q+4|0;g=q+8|0;f=d+18|0;i=w}while(0);b[q>>1]=2;b[j>>1]=0;c[h>>2]=1073741824;c[g>>2]=2;do if((b[f>>1]&3)==1){g=i+29|0;if(!(a[g>>0]|0)){b[s+2>>1]=0;c[s+4>>2]=1073741826;c[s+8>>2]=510;b[s>>1]=1;A=c[606]|0;f=c[d+12>>2]|0;c[o>>2]=s;f=Ya[A&127](f,13,o)|0;if((f|0)<0)break;else{a[g>>0]=1;p=i+24|0;c[p>>2]=(c[p>>2]|0)+1;p=f;u=20;break}}else u=21}else{u=c[606]|0;p=c[d+12>>2]|0;c[n>>2]=q;p=Ya[u&127](p,13,n)|0;u=20}while(0);if((u|0)==20?(p|0)==0:0)u=21;if((u|0)==21){a[w+28>>0]=1;break}A=uu()|0;c[d+20>>2]=c[A>>2];A=2058;Ra=z;return A|0}while(0);if(!e){u=w+20|0;A=(c[u>>2]|0)+-1|0;c[u>>2]=A;if(!A){b[q>>1]=2;b[q+2>>1]=0;c[q+8>>2]=0;c[q+4>>2]=0;h=c[v>>2]|0;do if((b[d+18>>1]&3)==1){g=h+29|0;if(!(a[g>>0]|0)){b[s+2>>1]=0;c[s+4>>2]=1073741826;c[s+8>>2]=510;b[s>>1]=1;A=c[606]|0;f=c[d+12>>2]|0;c[t>>2]=s;f=Ya[A&127](f,13,t)|0;if((f|0)<0){u=33;break}else{a[g>>0]=1;u=h+24|0;c[u>>2]=(c[u>>2]|0)+1;u=31;break}}else u=32}else{u=c[606]|0;f=c[d+12>>2]|0;c[r>>2]=q;f=Ya[u&127](f,13,r)|0;u=31}while(0);if((u|0)==31)if(!f)u=32;else u=33;if((u|0)==32){f=0;g=w+28|0}else if((u|0)==33){f=uu()|0;c[d+20>>2]=c[f>>2];a[w+28>>0]=0;f=2058;g=x}a[g>>0]=0;j=f}else j=0;w=w+24|0;A=(c[w>>2]|0)+-1|0;c[w>>2]=A;if(!A){i=(c[v>>2]|0)+32|0;f=c[i>>2]|0;if(f|0){h=d+32|0;do{g=f;f=c[f+8>>2]|0;if(Wa[c[2352>>2]&127](c[g>>2]|0)|0){d=c[h>>2]|0;w=uu()|0;w=c[w>>2]|0;A=dv(w)|0;c[y>>2]=33804;c[y+4>>2]=w;c[y+8>>2]=31695;c[y+12>>2]=(d|0)==0?59952:d;c[y+16>>2]=A;Db(4106,31953,y)}if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{A=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-A;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}}while((f|0)!=0)}c[i>>2]=0}if(j|0){A=j;Ra=z;return A|0}}a[x>>0]=e;A=0;Ra=z;return A|0}function je(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;j=Ra;Ra=Ra+32|0;h=j;i=j+8|0;g=c[e+8>>2]|0;if((d[g+28>>0]|0)>1){i=0;h=1;c[f>>2]=h;Ra=j;return i|0}if(a[g+29>>0]|0){i=0;h=0;c[f>>2]=h;Ra=j;return i|0}b[i+2>>1]=0;c[i+4>>2]=1073741825;c[i+8>>2]=1;b[i>>1]=1;k=c[606]|0;g=c[e+12>>2]|0;c[h>>2]=i;if(!(Ya[k&127](g,12,h)|0)){g=0;e=(b[i>>1]|0)!=2&1}else{g=uu()|0;c[e+20>>2]=c[g>>2];g=3594;e=0}k=g;i=e;c[f>>2]=i;Ra=j;return k|0}function ke(a,f,g){a=a|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;v=Ra;Ra=Ra+80|0;h=v;m=v+4|0;do switch(f|0){case 1:{c[g>>2]=d[a+16>>0];a=0;Ra=v;return a|0}case 4:{c[g>>2]=c[a+20>>2];a=0;Ra=v;return a|0}case 6:{c[a+40>>2]=c[g>>2];a=0;Ra=v;return a|0}case 5:{h=g;f=c[h>>2]|0;h=c[h+4>>2]|0;i=a+40|0;if((c[i>>2]|0)<=0){a=0;Ra=v;return a|0}o=a+12|0;a:do if(!(Xa[c[2400>>2]&255](c[o>>2]|0,m)|0)){g=c[i>>2]|0;j=((g|0)<0)<<31>>31;f=Sv(f|0,h|0,-1,-1)|0;f=Sv(f|0,L()|0,g|0,j|0)|0;k=L()|0;j=Zv(f|0,k|0,g|0,j|0)|0;j=Tv(f|0,k|0,j|0,L()|0)|0;k=L()|0;f=c[m+36>>2]|0;g=((f|0)<0)<<31>>31;b:do if((k|0)>(g|0)|(k|0)==(g|0)&j>>>0>f>>>0?(p=c[m+40>>2]|0,n=f+-1+p-((f|0)%(p|0)|0)|0,l=((n|0)<0)<<31>>31,q=((p|0)<0)<<31>>31,r=Sv(j|0,k|0,-1,-1)|0,s=L()|0,t=Sv(r|0,s|0,p|0,q|0)|0,u=L()|0,(u|0)>(l|0)|(u|0)==(l|0)&t>>>0>n>>>0):0){h=l;f=n;c:while(1){n=(h|0)<(k|0)|(h|0)==(k|0)&f>>>0>>0;i=n?f:r;f=n?h:s;h=c[o>>2]|0;while(1){if((xv(h,i,0)|0)<0)break c;g=Ya[c[2472>>2]&127](h,59952,1)|0;if((g|0)>=0)break;n=uu()|0;if((c[n>>2]|0)!=4)break c}f=Sv(i|0,f|0,p|0,q|0)|0;h=L()|0;if((g|0)!=1){f=778;break a}if(!((h|0)<(u|0)|(h|0)==(u|0)&f>>>0>>0))break b}f=uu()|0;c[a+20>>2]=c[f>>2];f=778;break a}while(0);a=0;Ra=v;return a|0}else f=1802;while(0);a=f;Ra=v;return a|0}case 10:{i=c[g>>2]|0;if((i|0)<0){c[g>>2]=(e[a+18>>1]|0)>>>2&1;a=0;Ra=v;return a|0}f=a+18|0;h=e[f>>1]|0;if(!i){b[f>>1]=h&65531;a=0;Ra=v;return a|0}else{b[f>>1]=h|4;a=0;Ra=v;return a|0}}case 13:{i=c[g>>2]|0;if((i|0)<0){c[g>>2]=(e[a+18>>1]|0)>>>4&1;a=0;Ra=v;return a|0}f=a+18|0;h=e[f>>1]|0;if(!i){b[f>>1]=h&65519;a=0;Ra=v;return a|0}else{b[f>>1]=h|16;a=0;Ra=v;return a|0}}case 12:{c[h>>2]=c[(c[a+4>>2]|0)+16>>2];a=Bb(31408,h)|0;c[g>>2]=a;a=0;Ra=v;return a|0}case 16:{f=a+4|0;h=c[(c[f>>2]|0)+8>>2]|0;h=pb(h,((h|0)<0)<<31>>31)|0;if(!h){a=0;Ra=v;return a|0}ye(c[(c[f>>2]|0)+8>>2]|0,h)|0;c[g>>2]=h;a=0;Ra=v;return a|0}case 20:{f=a+8|0;if(c[f>>2]|0)if(!(Xa[c[2388>>2]&255](c[a+32>>2]|0,m)|0)){f=(c[f>>2]|0)+8|0;f=(c[f+4>>2]|0?1:(c[f>>2]|0)!=(c[m+72>>2]|0))&1}else f=1;else f=0;c[g>>2]=f;a=0;Ra=v;return a|0}default:{a=12;Ra=v;return a|0}}while(0);return 0}function le(a){a=a|0;var d=0,e=0;d=a+44|0;e=c[d>>2]|0;if(e|0)return e|0;if(b[a+18>>1]&16){e=a+48|0;c[e>>2]=c[e>>2]|4096}c[d>>2]=4096;e=4096;return e|0}function me(a){a=a|0;var d=0,e=0;d=a+44|0;if(!(c[d>>2]|0)){if(b[a+18>>1]&16){e=a+48|0;c[e>>2]=c[e>>2]|4096}c[d>>2]=4096}return c[a+48>>2]|0}function ne(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,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;D=Ra;Ra=Ra+176|0;C=D+72|0;y=D+48|0;v=D+24|0;u=D+8|0;r=D;x=D+92|0;B=Va[c[2640>>2]&127]()|0;B=(B|0)<32768?1:(B|0)/32768|0;w=d+36|0;j=c[w>>2]|0;if(!j){if(mb()|0){i=7;Ra=D;return i|0}if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](16)|0;if(!j){i=7;Ra=D;return i|0}else t=j}else{j=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){t=c[14978]|0;q=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;p=L()|0;c[14768]=((p|0)<0|(p|0)==0&q>>>0<=t>>>0)&1}k=Wa[c[29340>>2]&127](j)|0;if(!k){i=7;Ra=D;return i|0}j=Wa[c[29352>>2]&127](k)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0){c[14987]=j;t=k}else t=k};c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;o=d+8|0;p=c[o>>2]|0;k=c[p+40>>2]|0;a:do if(!k){n=d+32|0;l=c[n>>2]|0;b:do if(!(Xa[c[2400>>2]&255](c[d+12>>2]|0,x)|0)){m=Eu(l)|0;j=m+42|0;k=pb(j,0)|0;if(!k)j=7;else{gw(k|0,0,j|0)|0;q=k+36|0;c[k+8>>2]=q;c[r>>2]=l;Cb(m+6|0,q,32098,r)|0;l=k+12|0;c[l>>2]=-1;r=c[o>>2]|0;c[r+40>>2]=k;c[k>>2]=r;if(c[7325]|0)c[k+4>>2]=8;if(!(a[p+29>>0]|0)){j=c[n>>2]|0;c:do if((j|0)!=0?(s=j+(((Eu(j)|0)&1073741823)+1)|0,(a[s>>0]|0)!=0):0){j=s;while(1){s=Bu(j,32105)|0;j=j+(((Eu(j)|0)&1073741823)+1)|0;if(!s)break;j=j+(((Eu(j)|0)&1073741823)+1)|0;if(!(a[j>>0]|0)){A=26;break c}}if((Zm(j,1,0)|0)<<24>>24)m=c[l>>2]|0;else A=26}else A=26;while(0);if((A|0)==26){m=xe(q,66,c[x+12>>2]&511)|0;c[l>>2]=m}do if((m|0)<0){m=xe(q,0,c[x+12>>2]&511)|0;c[l>>2]=m;if((m|0)<0){c[u>>2]=31984;c[u+4>>2]=37077;c[u+8>>2]=31517;Db(14,32001,u);i=uu()|0;i=c[i>>2]|0;j=dv(i)|0;c[v>>2]=37077;c[v+4>>2]=i;c[v+8>>2]=31690;c[v+12>>2]=q;c[v+16>>2]=j;Db(14,31953,v);j=14;break b}else{a[k+22>>0]=1;break}}while(0);j=c[x+20>>2]|0;l=c[x+24>>2]|0;if(!(Va[c[2592>>2]&127]()|0))Ya[c[2580>>2]&127](m,j,l)|0;j=ze(d,k)|0;switch(j|0){case 0:case 1288:break;default:break b}}else j=0;break a}}else j=1802;while(0);Ae(d);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);i=j;Ra=D;return i|0}else{i=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);i=j;Ra=D;return i|0}}else j=0;while(0);c[t>>2]=k;v=k+28|0;c[v>>2]=(c[v>>2]|0)+1;c[w>>2]=t;w=k+32|0;c[t+4>>2]=c[w>>2];c[w>>2]=t;if(!j)j=t;else{i=j;Ra=D;return i|0}}t=c[j>>2]|0;j=t+23|0;do if(a[j>>0]|0){k=ze(d,t)|0;if(!k){a[j>>0]=0;A=44;break}else{j=t+20|0;break}}else A=44;while(0);if((A|0)==44){q=B+f|0;q=q-((q|0)%(B|0)|0)|0;s=t+20|0;if((q|0)>(e[s>>1]|0)){k=G(q,g)|0;c[t+16>>2]=g;r=t+12|0;j=c[r>>2]|0;d:do if((j|0)>-1)if(!(Xa[c[2400>>2]&255](j,x)|0)){j=c[x+36>>2]|0;if((j|0)<(k|0))if(h){j=(j|0)/4096|0;n=(k|0)/4096|0;if((j|0)<(n|0)){e:while(1){k=c[r>>2]|0;l=j<<12|4095;while(1){if((xv(k,l,0)|0)<0){A=56;break e}m=Ya[c[2472>>2]&127](k,59952,1)|0;if((m|0)>=0)break;h=uu()|0;if((c[h>>2]|0)!=4){A=56;break e}}j=j+1|0;if((m|0)!=1)break;if((j|0)>=(n|0)){A=59;break d}}C=c[t+8>>2]|0;g=uu()|0;g=c[g>>2]|0;j=dv(g)|0;c[y>>2]=37221;c[y+4>>2]=g;c[y+8>>2]=31761;c[y+12>>2]=(C|0)==0?59952:C;c[y+16>>2]=j;Db(4874,31953,y);j=4874}else A=59}else j=0;else A=59}else j=4874;else A=59;while(0);f:do if((A|0)==59){m=t+24|0;j=c[m>>2]|0;k=q<<2;if((mb()|0)==0?(z=sb(j,(k|0)>0?k:0,0)|0,(z|0)!=0):0){c[m>>2]=z;j=e[s>>1]|0;if((q|0)>(j|0)){n=G(B,g)|0;o=t+22|0;p=((n|0)<0)<<31>>31;g:do if((B|0)>0)while(1){k=c[r>>2]|0;if((k|0)>-1){j=G(j,g)|0;j=$a[c[2604>>2]&127](0,n,(a[o>>0]|0)==0?3:1,1,k,j)|0;if((j|0)==(-1|0))break g}else{j=pb(n,p)|0;if(!j){j=7;break f}gw(j|0,0,n|0)|0}l=e[s>>1]|0;k=0;do{A=j+(G(k,g)|0)|0;c[(c[m>>2]|0)+(k+l<<2)>>2]=A;k=k+1|0}while((k|0)!=(B|0));j=B+l|0;b[s>>1]=j;j=j&65535;if((q|0)<=(j|0)){j=0;break f}}else while(1){k=c[r>>2]|0;if((k|0)>-1){A=G(j,g)|0;if(($a[c[2604>>2]&127](0,n,(a[o>>0]|0)==0?3:1,1,k,A)|0)==(-1|0))break g}else{j=pb(n,p)|0;if(!j){j=7;break f}gw(j|0,0,n|0)|0}j=B+(e[s>>1]|0)|0;b[s>>1]=j;j=j&65535;if((q|0)<=(j|0)){j=0;break f}}while(0);g=c[t+8>>2]|0;B=uu()|0;B=c[B>>2]|0;j=dv(B)|0;c[C>>2]=37248;c[C+4>>2]=B;c[C+8>>2]=31848;c[C+12>>2]=(g|0)==0?59952:g;c[C+16>>2]=j;Db(5386,31953,C);j=5386}else j=0}else j=3082}while(0);k=j;j=s}else{k=0;j=s}}if((e[j>>1]|0)>(f|0))j=c[(c[t+24>>2]|0)+(f<<2)>>2]|0;else j=0;c[i>>2]=j;i=(k|0)==0&(a[t+22>>0]|0)!=0?8:k;Ra=D;return i|0} -function fb(a){a=a|0;var b=0;b=Ra;Ra=Ra+a|0;Ra=Ra+15&-16;return b|0}function gb(){return Ra|0}function hb(a){a=a|0;Ra=a}function ib(a,b){a=a|0;b=b|0;Ra=a;Sa=b}function jb(a){a=a|0;var b=0,d=0,e=0;e=c[a+20>>2]|0;if((e|0)<=0)return;b=c[a+16>>2]|0;a=0;do{d=c[b+(a<<4)+4>>2]|0;if(d|0)c[(c[d+4>>2]|0)+4>>2]=c[d>>2];a=a+1|0}while((a|0)<(e|0));return}function kb(d,e){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;s=e+116|0;f=c[s>>2]|0;g=b[e+144>>1]|0;a:do if((f|0)!=0&g<<16>>16!=0){o=f+(((g&65535)<<1)*40|0)|0;j=c[f+32>>2]|0;k=j+480|0;g=(j|0)==0;l=j+304|0;m=j+308|0;n=j+300|0;if(c[k>>2]|0){if(g)while(1){do if(c[f+24>>2]|0?(h=c[f+20>>2]|0,h|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{n=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);f=f+40|0;if(f>>>0>=o>>>0)break a}while(1){do if(c[f+24>>2]|0?(i=c[f+20>>2]|0,i|0):0){if(c[k>>2]|0){Xd(j,i);break}h=i;if((c[l>>2]|0)>>>0<=h>>>0?(c[m>>2]|0)>>>0>h>>>0:0){c[i>>2]=c[n>>2];c[n>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{h=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);f=f+40|0;if(f>>>0>=o>>>0)break a}}if(g)while(1){g=f+8|0;if(!(b[g>>1]&9216)){h=f+24|0;if(c[h>>2]|0){i=c[f+20>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{n=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);c[h>>2]=0}}else Cg(f);b[g>>1]=128;f=f+40|0;if(f>>>0>=o>>>0)break a}do{g=f+8|0;if(!(b[g>>1]&9216)){h=f+24|0;if(c[h>>2]|0){i=c[f+20>>2]|0;do if(!(c[k>>2]|0)){t=i;if((c[l>>2]|0)>>>0<=t>>>0?(c[m>>2]|0)>>>0>t>>>0:0){c[i>>2]=c[n>>2];c[n>>2]=i;break}if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{t=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}else Xd(j,i);while(0);c[h>>2]=0}}else Cg(f);b[g>>1]=128;f=f+40|0}while(f>>>0>>0)}while(0);f=c[e+212>>2]|0;if(f|0){k=(d|0)==0;l=d+480|0;m=d+304|0;n=d+308|0;o=d+300|0;do{i=f;f=c[f+24>>2]|0;j=c[i>>2]|0;g=c[i+4>>2]|0;if(j){if((g|0)>=1){g=j+((g+-1|0)*20|0)|0;do{h=a[g+1>>0]|0;if(h<<24>>24<-6)kg(d,h<<24>>24,c[g+16>>2]|0);g=g+-20|0}while(g>>>0>=j>>>0)}do if(!k){if(c[l>>2]|0){Xd(d,j);break}t=j;if((c[m>>2]|0)>>>0<=t>>>0?(c[n>>2]|0)>>>0>t>>>0:0){c[j>>2]=c[o>>2];c[o>>2]=j}else p=63}else p=63;while(0);do if((p|0)==63){p=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{t=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);if(i|0)p=67}else p=67;do if((p|0)==67){p=0;if(!k){if(c[l>>2]|0){Xd(d,i);break}t=i;if((c[m>>2]|0)>>>0<=t>>>0?(c[n>>2]|0)>>>0>t>>>0:0){c[i>>2]=c[o>>2];c[o>>2]=i;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{t=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0)}while((f|0)!=0)}do if((c[e+20>>2]|0)!=381479589){f=c[e+100>>2]|0;g=b[e+16>>1]|0;b:do if((f|0)!=0&g<<16>>16!=0){o=f+((g<<16>>16)*40|0)|0;j=c[f+32>>2]|0;k=j+480|0;g=(j|0)==0;l=j+304|0;m=j+308|0;n=j+300|0;if(c[k>>2]|0){if(g)while(1){do if(c[f+24>>2]|0?(q=c[f+20>>2]|0,q|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{t=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}while(0);f=f+40|0;if(f>>>0>=o>>>0)break b}while(1){do if(c[f+24>>2]|0?(r=c[f+20>>2]|0,r|0):0){if(c[k>>2]|0){Xd(j,r);break}t=r;if((c[l>>2]|0)>>>0<=t>>>0?(c[m>>2]|0)>>>0>t>>>0:0){c[r>>2]=c[n>>2];c[n>>2]=r;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{t=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);f=f+40|0;if(f>>>0>=o>>>0)break b}}if(g)while(1){g=f+8|0;if(!(b[g>>1]&9216)){h=f+24|0;if(c[h>>2]|0){i=c[f+20>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{t=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);c[h>>2]=0}}else Cg(f);b[g>>1]=128;f=f+40|0;if(f>>>0>=o>>>0)break b}do{g=f+8|0;if(!(b[g>>1]&9216)){h=f+24|0;if(c[h>>2]|0){i=c[f+20>>2]|0;do if(!(c[k>>2]|0)){t=i;if((c[l>>2]|0)>>>0<=t>>>0?(c[m>>2]|0)>>>0>t>>>0:0){c[i>>2]=c[n>>2];c[n>>2]=i;break}if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{t=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}else Xd(j,i);while(0);c[h>>2]=0}}else Cg(f);b[g>>1]=128;f=f+40|0}while(f>>>0>>0)}while(0);f=c[e+128>>2]|0;do if(f|0){if(d|0){if(c[d+480>>2]|0){Xd(d,f);break}t=f;if((c[d+304>>2]|0)>>>0<=t>>>0?(c[d+308>>2]|0)>>>0>t>>>0:0){t=d+300|0;c[f>>2]=c[t>>2];c[t>>2]=f;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{t=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);f=c[e+192>>2]|0;if(f|0){if(d|0){if(c[d+480>>2]|0){Xd(d,f);break}t=f;if((c[d+304>>2]|0)>>>0<=t>>>0?(c[d+308>>2]|0)>>>0>t>>>0:0){t=d+300|0;c[f>>2]=c[t>>2];c[t>>2]=f;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{t=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}}while(0);h=c[e+104>>2]|0;f=c[e+108>>2]|0;do if(h|0){if((f|0)>=1){f=h+((f+-1|0)*20|0)|0;do{g=a[f+1>>0]|0;if(g<<24>>24<-6)kg(d,g<<24>>24,c[f+16>>2]|0);f=f+-20|0}while(f>>>0>=h>>>0)}if(d|0){if(c[d+480>>2]|0){Xd(d,h);break}t=h;if((c[d+304>>2]|0)>>>0<=t>>>0?(c[d+308>>2]|0)>>>0>t>>>0:0){t=d+300|0;c[h>>2]=c[t>>2];c[t>>2]=h;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{t=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);f=c[s>>2]|0;do if(f|0){if(d|0){if(c[d+480>>2]|0){Xd(d,f);break}t=f;if((c[d+304>>2]|0)>>>0<=t>>>0?(c[d+308>>2]|0)>>>0>t>>>0:0){t=d+300|0;c[f>>2]=c[t>>2];c[t>>2]=f;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{t=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);f=c[e+188>>2]|0;if(!f)return;if(d|0){if(c[d+480>>2]|0){Xd(d,f);return}t=f;if((c[d+304>>2]|0)>>>0<=t>>>0?(c[d+308>>2]|0)>>>0>t>>>0:0){t=d+300|0;c[f>>2]=c[t>>2];c[t>>2]=f;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);return}else{t=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);return}}function lb(a,b){a=a|0;b=b|0;var d=0;if(!b)return;if(a|0){if(c[a+480>>2]|0){Xd(a,b);return}d=b;if((c[a+304>>2]|0)>>>0<=d>>>0?(c[a+308>>2]|0)>>>0>d>>>0:0){d=a+300|0;c[b>>2]=c[d>>2];c[d>>2]=b;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}}function mb(){var b=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;p=Ra;Ra=Ra+16|0;n=p+8|0;b=p;if(c[7380]|0){o=0;Ra=p;return o|0}c[7382]=1;if(!(c[7383]|0)){if(!(c[7335]|0)){c[b>>2]=30308;xd(4,b)|0};c[14764]=0;c[14765]=0;c[14766]=0;c[14767]=0;c[14768]=0;c[14769]=0;c[14764]=8;if((c[7374]|0)==0|(c[7375]|0)<512|(c[7376]|0)<1){c[7374]=0;c[7375]=0}b=Wa[c[29360>>2]&127](c[7342]|0)|0;if(b|0){c[14764]=0;c[14765]=0;c[14766]=0;c[14767]=0;c[14768]=0;c[14769]=0;o=b;Ra=p;return o|0}}c[7383]=1;if(!(c[7386]|0))c[7386]=8;e=(c[7385]|0)+1|0;c[7385]=e;if(!(c[7381]|c[7380])){c[7381]=1;b=59088;e=b+92|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(e|0));k=c[5448]|0;if(!k)b=0;else b=(Eu(k)|0)&1073741823;f=a[k>>0]|0;b=59088+(((b+(f<<24>>24)|0)%23|0)<<2)|0;e=c[b>>2]|0;j=e;a:do if(e){i=d[208+(f&255)>>0]|0;while(1){g=c[e+32>>2]|0;m=a[g>>0]|0;f=(d[208+(m&255)>>0]|0)-i|0;if(!(m<<24>>24==0|(f|0)!=0)){h=k;do{g=g+1|0;h=h+1|0;m=a[g>>0]|0;f=(d[208+(m&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(m<<24>>24==0|(f|0)!=0))}if(!f)break;e=c[e+36>>2]|0;if(!e){o=23;break a}}if(e){b=e+12|0;c[5443]=c[b>>2]}else o=23}else o=23;while(0);if((o|0)==23){c[5443]=0;c[5449]=j}c[b>>2]=21760;k=c[5458]|0;if(!k)b=0;else b=(Eu(k)|0)&1073741823;f=a[k>>0]|0;b=59088+(((b+(f<<24>>24)|0)%23|0)<<2)|0;e=c[b>>2]|0;j=e;b:do if(e){i=d[208+(f&255)>>0]|0;while(1){g=c[e+32>>2]|0;m=a[g>>0]|0;f=(d[208+(m&255)>>0]|0)-i|0;if(!(m<<24>>24==0|(f|0)!=0)){h=k;do{g=g+1|0;h=h+1|0;m=a[g>>0]|0;f=(d[208+(m&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(m<<24>>24==0|(f|0)!=0))}if(!f)break;e=c[e+36>>2]|0;if(!e){o=35;break b}}if(e){b=e+12|0;c[5453]=c[b>>2]}else o=35}else o=35;while(0);if((o|0)==35){c[5453]=0;c[5459]=j}c[b>>2]=21800;k=c[5468]|0;if(!k)b=0;else b=(Eu(k)|0)&1073741823;f=a[k>>0]|0;b=59088+(((b+(f<<24>>24)|0)%23|0)<<2)|0;e=c[b>>2]|0;j=e;c:do if(e){i=d[208+(f&255)>>0]|0;while(1){g=c[e+32>>2]|0;m=a[g>>0]|0;f=(d[208+(m&255)>>0]|0)-i|0;if(!(m<<24>>24==0|(f|0)!=0)){h=k;do{g=g+1|0;h=h+1|0;m=a[g>>0]|0;f=(d[208+(m&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(m<<24>>24==0|(f|0)!=0))}if(!f)break;e=c[e+36>>2]|0;if(!e){o=47;break c}}if(e){b=e+12|0;c[5463]=c[b>>2]}else o=47}else o=47;while(0);if((o|0)==47){c[5463]=0;c[5469]=j}c[b>>2]=21840;l=0;do{m=21888+(l*40|0)|0;k=c[21888+(l*40|0)+32>>2]|0;if(!k)b=0;else b=(Eu(k)|0)&1073741823;f=a[k>>0]|0;b=59088+(((b+(f<<24>>24)|0)%23|0)<<2)|0;e=c[b>>2]|0;j=e;d:do if(e){i=d[208+(f&255)>>0]|0;while(1){g=c[e+32>>2]|0;h=a[g>>0]|0;f=(d[208+(h&255)>>0]|0)-i|0;if(!(h<<24>>24==0|(f|0)!=0)){h=k;do{g=g+1|0;h=h+1|0;q=a[g>>0]|0;f=(d[208+(q&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(q<<24>>24==0|(f|0)!=0))}if(!f)break;e=c[e+36>>2]|0;if(!e){o=60;break d}}if(e){b=e+12|0;c[21888+(l*40|0)+12>>2]=c[b>>2]}else o=60}else o=60;while(0);if((o|0)==60){o=0;c[21888+(l*40|0)+12>>2]=0;c[21888+(l*40|0)+36>>2]=j}c[b>>2]=m;l=l+1|0}while((l|0)!=15);l=0;do{m=22496+(l*40|0)|0;k=c[22496+(l*40|0)+32>>2]|0;if(!k)b=0;else b=(Eu(k)|0)&1073741823;f=a[k>>0]|0;b=59088+(((b+(f<<24>>24)|0)%23|0)<<2)|0;e=c[b>>2]|0;j=e;e:do if(e){i=d[208+(f&255)>>0]|0;while(1){g=c[e+32>>2]|0;q=a[g>>0]|0;f=(d[208+(q&255)>>0]|0)-i|0;if(!(q<<24>>24==0|(f|0)!=0)){h=k;do{g=g+1|0;h=h+1|0;q=a[g>>0]|0;f=(d[208+(q&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(q<<24>>24==0|(f|0)!=0))}if(!f)break;e=c[e+36>>2]|0;if(!e){o=74;break e}}if(e){b=e+12|0;c[22496+(l*40|0)+12>>2]=c[b>>2]}else o=74}else o=74;while(0);if((o|0)==74){o=0;c[22496+(l*40|0)+12>>2]=0;c[22496+(l*40|0)+36>>2]=j}c[b>>2]=m;l=l+1|0}while((l|0)!=8);l=0;do{m=19424+(l*40|0)|0;k=c[19424+(l*40|0)+32>>2]|0;if(!k)b=0;else b=(Eu(k)|0)&1073741823;f=a[k>>0]|0;b=59088+(((b+(f<<24>>24)|0)%23|0)<<2)|0;e=c[b>>2]|0;j=e;f:do if(e){i=d[208+(f&255)>>0]|0;while(1){g=c[e+32>>2]|0;q=a[g>>0]|0;f=(d[208+(q&255)>>0]|0)-i|0;if(!(q<<24>>24==0|(f|0)!=0)){h=k;do{g=g+1|0;h=h+1|0;q=a[g>>0]|0;f=(d[208+(q&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(q<<24>>24==0|(f|0)!=0))}if(!f)break;e=c[e+36>>2]|0;if(!e){o=88;break f}}if(e){b=e+12|0;c[19424+(l*40|0)+12>>2]=c[b>>2]}else o=88}else o=88;while(0);if((o|0)==88){o=0;c[19424+(l*40|0)+12>>2]=0;c[19424+(l*40|0)+36>>2]=j}c[b>>2]=m;l=l+1|0}while((l|0)!=57);if(!(c[7384]|0)){b=c[7354]|0;if(!b){c[n>>2]=30340;xd(18,n)|0;b=c[7354]|0}b=Wa[b&127](c[7353]|0)|0;if(!b)o=94}else o=94;g:do if((o|0)==94){c[7384]=1;if(!(mb()|0)){do if(!(c[7324]|0)){b=Wa[c[29340>>2]&127](10)|0;if(!b){b=7;break g}}else{b=Wa[c[29356>>2]&127](10)|0;if((c[14985]|0)>>>0<10)c[14985]=10;f=59064;e=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&e>>>0>0){q=c[14978]|0;o=Tv(e|0,f|0,b|0,((b|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&o>>>0<=q>>>0)&1}b=Wa[c[29340>>2]&127](b)|0;if(!b){b=7;break g}e=Wa[c[29352>>2]&127](b)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0<=(c[14987]|0)>>>0)break;c[14987]=e}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](b);else{q=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b)}if(!(mb()|0)){b=c[14770]|0;do if((b|0)==464){b=c[119]|0;c[14770]=b}else{if(!b){b=0;break}e=b;while(1){f=c[e+12>>2]|0;if((f|0)!=464&(f|0)!=0)e=f;else break}if((f|0)!=464)break;c[e+12>>2]=c[119]}while(0);c[119]=b;c[14770]=464}if(!(mb()|0)){b=c[14770]|0;do if((b|0)==552){b=c[141]|0;c[14770]=b;o=138}else{if(!b){o=140;break}e=b;while(1){f=c[e+12>>2]|0;if((f|0)!=552&(f|0)!=0)e=f;else break}if((f|0)!=552){o=138;break}c[e+12>>2]=c[141];o=138}while(0);do if((o|0)==138){if(!b){o=140;break}b=b+12|0;c[141]=c[b>>2]}while(0);if((o|0)==140){c[141]=0;b=59080}c[b>>2]=552}if(!(mb()|0)){b=c[14770]|0;do if((b|0)==640){b=c[163]|0;c[14770]=b;o=150}else{if(!b){o=152;break}e=b;while(1){f=c[e+12>>2]|0;if((f|0)!=640&(f|0)!=0)e=f;else break}if((f|0)!=640){o=150;break}c[e+12>>2]=c[163];o=150}while(0);do if((o|0)==150){if(!b){o=152;break}b=b+12|0;c[163]=c[b>>2]}while(0);if((o|0)==152){c[163]=0;b=59080}c[b>>2]=640}if(!(mb()|0)){b=c[14770]|0;do if((b|0)==728){b=c[185]|0;c[14770]=b;o=162}else{if(!b){o=164;break}e=b;while(1){f=c[e+12>>2]|0;if((f|0)!=728&(f|0)!=0)e=f;else break}if((f|0)!=728){o=162;break}c[e+12>>2]=c[185];o=162}while(0);do if((o|0)==162){if(!b){o=164;break}b=b+12|0;c[185]=c[b>>2]}while(0);if((o|0)==164){c[185]=0;b=59080}c[b>>2]=728}b=c[7374]|0;if(c[14810]|0){i=(b|0)==0;j=i?0:c[7376]|0;e=(j|0)==0;i=i|e?0:c[7375]&-8;c[14813]=i;c[14820]=j;c[14814]=j;if((j|0)>90)f=10;else f=((j|0)/10|0)+1|0;c[14815]=f;c[14816]=b;c[14819]=0;c[14821]=0;if(!e){g=G(i,j+-1|0)|0;e=b;f=j;h=0;while(1){f=f+-1|0;c[e>>2]=h;h=e;if(!f)break;else e=e+i|0}q=G(i,j)|0;c[14819]=b+g;b=b+q|0}c[14817]=b}c[7380]=1;b=0}else b=7}while(0);c[7381]=0;e=c[7385]|0}else b=0;c[7385]=e+-1;if((e|0)>=2){q=b;Ra=p;return q|0}c[7386]=0;q=b;Ra=p;return q|0}function nb(a){a=a|0;var b=0,d=0,e=0;if((a|0)<1|(mb()|0)!=0){d=0;return d|0}d=Sv(a|0,((a|0)<0)<<31>>31|0,-1,-1)|0;b=L()|0;if(b>>>0>0|(b|0)==0&d>>>0>2147483390){d=0;return d|0}if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](a)|0;return d|0}d=Wa[c[29356>>2]&127](a)|0;if((c[14985]|0)>>>0>>0)c[14985]=a;b=59064;a=c[b>>2]|0;b=c[b+4>>2]|0;if((b|0)>0|(b|0)==0&a>>>0>0){e=c[14978]|0;b=Tv(a|0,b|0,d|0,((d|0)<0)<<31>>31|0)|0;a=L()|0;c[14768]=((a|0)<0|(a|0)==0&b>>>0<=e>>>0)&1}b=Wa[c[29340>>2]&127](d)|0;if(!b){e=0;return e|0}a=Wa[c[29352>>2]&127](b)|0;a=(c[14978]|0)+a|0;c[14978]=a;if(a>>>0>(c[14982]|0)>>>0)c[14982]=a;a=(c[14981]|0)+1|0;c[14981]=a;if(a>>>0<=(c[14987]|0)>>>0){e=b;return e|0}c[14987]=a;e=b;return e|0}function ob(a,b){a=a|0;b=b|0;var d=0,e=0;d=Sv(a|0,b|0,-1,-1)|0;b=L()|0;if(b>>>0>0|(b|0)==0&d>>>0>2147483390){d=0;return d|0}if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](a)|0;return d|0}d=Wa[c[29356>>2]&127](a)|0;if((c[14985]|0)>>>0>>0)c[14985]=a;a=59064;b=c[a>>2]|0;a=c[a+4>>2]|0;if((a|0)>0|(a|0)==0&b>>>0>0){e=c[14978]|0;a=Tv(b|0,a|0,d|0,((d|0)<0)<<31>>31|0)|0;b=L()|0;c[14768]=((b|0)<0|(b|0)==0&a>>>0<=e>>>0)&1}a=Wa[c[29340>>2]&127](d)|0;if(!a){e=0;return e|0}b=Wa[c[29352>>2]&127](a)|0;b=(c[14978]|0)+b|0;c[14978]=b;if(b>>>0>(c[14982]|0)>>>0)c[14982]=b;b=(c[14981]|0)+1|0;c[14981]=b;if(b>>>0<=(c[14987]|0)>>>0){e=a;return e|0}c[14987]=b;e=a;return e|0}function pb(a,b){a=a|0;b=b|0;var d=0,e=0;d=(mb()|0)!=0;b=Sv(a|0,b|0,-1,-1)|0;e=L()|0;if(e>>>0>0|(e|0)==0&b>>>0>2147483390|d){e=0;return e|0}if(!(c[7324]|0)){e=Wa[c[29340>>2]&127](a)|0;return e|0}d=Wa[c[29356>>2]&127](a)|0;if((c[14985]|0)>>>0>>0)c[14985]=a;a=59064;b=c[a>>2]|0;a=c[a+4>>2]|0;if((a|0)>0|(a|0)==0&b>>>0>0){e=c[14978]|0;a=Tv(b|0,a|0,d|0,((d|0)<0)<<31>>31|0)|0;b=L()|0;c[14768]=((b|0)<0|(b|0)==0&a>>>0<=e>>>0)&1}a=Wa[c[29340>>2]&127](d)|0;if(!a){e=0;return e|0}b=Wa[c[29352>>2]&127](a)|0;b=(c[14978]|0)+b|0;c[14978]=b;if(b>>>0>(c[14982]|0)>>>0)c[14982]=b;b=(c[14981]|0)+1|0;c[14981]=b;if(b>>>0<=(c[14987]|0)>>>0){e=a;return e|0}c[14987]=b;e=a;return e|0}function qb(a){a=a|0;var b=0;if(!a)return;if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return}else{b=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return}}function rb(a){a=a|0;return Wa[c[29352>>2]&127](a)|0}function sb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if(!a){e=Sv(b|0,d|0,-1,-1)|0;a=L()|0;if(a>>>0>0|(a|0)==0&e>>>0>2147483390){e=0;return e|0}if(!(c[7324]|0)){e=Wa[c[29340>>2]&127](b)|0;return e|0}a=Wa[c[29356>>2]&127](b)|0;if((c[14985]|0)>>>0>>0)c[14985]=b;b=59064;d=c[b>>2]|0;b=c[b+4>>2]|0;if((b|0)>0|(b|0)==0&d>>>0>0){e=c[14978]|0;b=Tv(d|0,b|0,a|0,((a|0)<0)<<31>>31|0)|0;d=L()|0;c[14768]=((d|0)<0|(d|0)==0&b>>>0<=e>>>0)&1}b=Wa[c[29340>>2]&127](a)|0;if(!b){e=0;return e|0}d=Wa[c[29352>>2]&127](b)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0<=(c[14987]|0)>>>0){e=b;return e|0}c[14987]=d;e=b;return e|0}if((b|0)==0&(d|0)==0)if(!(c[7324]|0)){ab[c[29344>>2]&127](a);e=0;return e|0}else{e=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);e=0;return e|0}if(d>>>0>0|(d|0)==0&b>>>0>2147483391){e=0;return e|0}e=Wa[c[29352>>2]&127](a)|0;d=Wa[c[29356>>2]&127](b)|0;if((d|0)==(e|0)){e=a;return e|0}if(!(c[7324]|0)){e=Xa[c[29348>>2]&255](a,d)|0;return e|0}if((c[14985]|0)>>>0>>0)c[14985]=b;b=Xa[c[29348>>2]&255](a,d)|0;f=59064;g=c[f+4>>2]|0;if((b|0)==0&((g|0)>0|(g|0)==0&(c[f>>2]|0)>>>0>0))b=Xa[c[29348>>2]&255](a,d)|0;if(!b){g=0;return g|0}d=(Wa[c[29352>>2]&127](b)|0)-e|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0<=(c[14982]|0)>>>0){g=b;return g|0}c[14982]=d;g=b;return g|0}function tb(f,h,i){f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0.0,s=0.0,t=0.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,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;fa=Ra;Ra=Ra+96|0;X=fa+80|0;Z=fa+72|0;_=fa;ba=f+21|0;if(!(a[ba>>0]&2)){I=1;J=0}else{I=(c[i>>2]|0)+(4-1)&~(4-1);J=c[I>>2]|0;c[i>>2]=I+4;I=0}Q=J+4|0;R=J+8|0;ca=f+16|0;da=f+8|0;ea=f+4|0;S=f+20|0;T=_+1|0;U=_+2|0;V=_+3|0;W=f+12|0;j=0;H=0;a:while(1){switch(a[h>>0]|0){case 0:{F=543;break a}case 37:{z=j;break}default:{j=h;b:while(1){j=j+1|0;switch(a[j>>0]|0){case 37:case 0:break b;default:{}}}k=j-h|0;l=c[ca>>2]|0;m=l+k|0;if(m>>>0<(c[da>>2]|0)>>>0){if(k|0){c[ca>>2]=m;ew((c[ea>>2]|0)+l|0,h|0,k|0)|0}}else wb(f,h,k);if(!(a[j>>0]|0)){F=543;break a}else{z=h;h=j}}}l=h+1|0;h=a[l>>0]|0;if(!(h<<24>>24)){F=13;break}k=h<<24>>24;m=-1;h=0;y=0;j=0;x=0;E=0;D=0;v=0;w=l;c:while(1){switch(k|0){case 108:{F=24;break c}case 45:{p=x;q=E;u=D;n=1;k=w;break}case 43:{j=43;p=x;q=E;u=D;n=y;k=w;break}case 32:{j=32;p=x;q=E;u=D;n=y;k=w;break}case 35:{p=1;q=E;u=D;n=y;k=w;break}case 33:{p=x;q=1;u=D;n=y;k=w;break}case 48:{p=x;q=E;u=1;n=y;k=w;break}case 44:{p=x;q=E;u=D;v=44;n=y;k=w;break}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:{h=k+-48|0;n=w+1|0;p=a[n>>0]|0;l=p<<24>>24;if((p+-48&255)<10){k=n;while(1){h=l+(h*10|0)+-48|0;n=k+1|0;p=a[n>>0]|0;l=p<<24>>24;if((p+-48&255)<10)k=n;else break}}else k=w;h=h&2147483647;switch(p<<24>>24){case 46:case 108:{p=x;q=E;u=D;n=y;break}default:{G=n;n=0;k=l;break c}}break}case 42:{do if(!I){h=c[Q>>2]|0;if((c[J>>2]|0)>(h|0)){k=c[R>>2]|0;c[Q>>2]=h+1;h=c[k+(h<<2)>>2]|0;k=e[h+8>>1]|0;if(k&4|0){h=c[h>>2]|0;F=39;break}if(k&8|0){h=Mg(+g[h>>3])|0;L()|0;F=39;break}if(k&18){h=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;L()|0;F=39}else{h=0;F=40}}else{h=0;F=40}}else{F=(c[i>>2]|0)+(4-1)&~(4-1);h=c[F>>2]|0;c[i>>2]=F+4;F=39}while(0);if((F|0)==39){F=0;if((h|0)<0){l=1;h=(h|0)==-2147483648?0:0-h|0}else F=40}if((F|0)==40){F=0;l=y}k=a[w+1>>0]|0;switch(k<<24>>24){case 46:case 108:{p=x;q=E;u=D;n=l;k=w;break}default:{F=61;break c}}break}case 46:{l=w+1|0;k=a[l>>0]|0;if(k<<24>>24==42){do if(!I){k=c[Q>>2]|0;if((c[J>>2]|0)>(k|0)){l=c[R>>2]|0;c[Q>>2]=k+1;k=c[l+(k<<2)>>2]|0;l=e[k+8>>1]|0;if(l&4|0){k=c[k>>2]|0;F=52;break}if(l&8|0){k=Mg(+g[k>>3])|0;L()|0;F=52;break}if(l&18){k=Ng(a[k+10>>0]|0,c[k+12>>2]|0,c[k+16>>2]|0)|0;L()|0;F=52}else k=0}else k=0}else{F=(c[i>>2]|0)+(4-1)&~(4-1);k=c[F>>2]|0;c[i>>2]=F+4;F=52}while(0);if((F|0)==52){F=0;k=(k|0)<0?((k|0)==-2147483648?-1:0-k|0):k}l=w+2|0;p=a[l>>0]|0}else{k=k<<24>>24;if((k+-48|0)>>>0<10){n=0;do{n=k+-48+(n*10|0)|0;l=l+1|0;m=a[l>>0]|0;k=m<<24>>24}while((k+-48|0)>>>0<10);k=m<<24>>24}else n=0;p=k;k=n&2147483647}if((p|0)==108){p=x;q=E;u=D;n=y;m=k;k=l+-1|0}else{G=l;n=0;m=k;k=p;break c}break}default:{G=w;n=0;break c}}l=k+1|0;k=a[l>>0]|0;if(!(k<<24>>24)){F=543;break a}else{k=k<<24>>24;y=n;x=p;E=q;D=u;w=l}}if((F|0)==24){F=0;k=w+1|0;l=a[k>>0]|0;if(l<<24>>24==108){k=w+2|0;G=k;n=2;k=a[k>>0]|0}else{G=k;n=1;k=l<<24>>24}}else if((F|0)==61){F=0;G=w+1|0;y=l;n=0;k=k<<24>>24}d:do switch(k|0){case 100:{C=0;break}case 115:{C=1;break}case 103:{C=2;break}case 122:{C=3;break}case 113:{C=4;break}case 81:{C=5;break}case 119:{C=6;break}case 99:{C=7;break}case 111:{C=8;break}case 117:{C=9;break}case 120:{C=10;break}case 88:{C=11;break}case 102:{C=12;break}case 101:{C=13;break}case 69:{C=14;break}case 71:{C=15;break}case 105:{C=16;break}case 110:{C=17;break}case 37:{C=18;break}case 112:{C=19;break}case 84:{C=20;break}default:{switch(k|0){case 83:{C=21;break d}case 114:break;default:{F=543;break a}}C=22}}while(0);k=a[16+(C*6|0)+3>>0]|0;e:do switch(k<<24>>24){case 13:{k=1;F=86;break}case 0:case 15:{k=n;F=86;break}case 16:{k=n;F=87;break}case 3:case 2:case 1:{do if(I){F=(c[i>>2]|0)+(8-1)&~(8-1);o=+g[F>>3];c[i>>2]=F+8;F=208}else{l=c[Q>>2]|0;if((c[J>>2]|0)>(l|0)){n=c[R>>2]|0;c[Q>>2]=l+1;l=c[n+(l<<2)>>2]|0;n=e[l+8>>1]|0;if(n&8|0){o=+g[l>>3];F=208;break}if(n&4|0){F=l;o=+((c[F>>2]|0)>>>0)+4294967296.0*+(c[F+4>>2]|0);F=208;break}if(n&18|0){o=+Kg(a[l+10>>0]|0,c[l+12>>2]|0,c[l+16>>2]|0);F=208;break}}o=0.0;B=j;l=(m|0)<0?6:m}while(0);if((F|0)==208){F=0;l=(m|0)<0?6:m;if(o<0.0){o=-o;B=45}else B=j}q=(C|0)==2|(C|0)==15;p=l+((q&(l|0)>0)<<31>>31)|0;j=p&4095;if(!j)r=.5;else{r=.5;while(1){r=r*.1;if((j|0)>1)j=j+-1|0;else break}}n=(C|0)==12;o=n?o+r:o;g[X>>3]=o;g[Z>>3]=+g[X>>3];if(+g[X>>3]==+g[Z>>3]){if(o>0.0){s=1.0;m=0;while(1){t=s*1.e+100;if(m>>>0<351&o>=t){s=t;m=m+100|0}else break}while(1){t=s*1.0e10;if(m>>>0<351&o>=t){s=t;m=m+10|0}else break}while(1){t=s*10.0;if(m>>>0<351&o>=t){s=t;m=m+1|0}else break}o=o/s;if(o<1.0e-08)do{o=o*1.0e8;m=m+-8|0}while(o<1.0e-08);if(o<1.0)do{o=o*10.0;m=m+-1|0}while(o<1.0);j=B<<24>>24!=0;if((m|0)>350){n=_+(j&1)|0;a[_>>0]=B;a[n>>0]=73;a[n+1>>0]=110;a[n+2>>0]=102;a[n+3>>0]=0;n=j?4:3;j=_;m=H;q=0;break e}}else m=0;if(!n){o=r+o;if(o>=10.0){o=o*.1;m=m+1|0}}z=(m|0)<-4|(p|0)<(m|0);A=q?x<<24>>24==0&1:E;l=q?p-(z?0:m)|0:l;z=(q?(z?2:1):k)<<24>>24==2;p=z?0:m;j=Sv(l|0,((l|0)<0)<<31>>31|0,h|0,((h|0)<0)<<31>>31|0)|0;j=Sv(j|0,L()|0,((p|0)>0?p:0)|0,0)|0;k=L()|0;f:do if((k|0)>0|(k|0)==0&j>>>0>55){u=Sv(j|0,k|0,15,0)|0;n=L()|0;if(a[S>>0]|0){F=543;break a}if((n|0)>0|((n|0)==0?u>>>0>(c[da>>2]|0)>>>0:0)?($=c[W>>2]|0,(n|0)>0|(n|0)==0&u>>>0>$>>>0):0){F=236;break a}q=c[f>>2]|0;g:do if(!q){w=Sv(j|0,k|0,14,0)|0;v=L()|0;if(v>>>0>0|(v|0)==0&w>>>0>2147483390){F=278;break a}if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](u)|0;break}n=Wa[c[29356>>2]&127](u)|0;if((c[14985]|0)>>>0>>0)c[14985]=u;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){w=c[14978]|0;v=Tv(j|0,k|0,n|0,((n|0)<0)<<31>>31|0)|0;u=L()|0;c[14768]=((u|0)<0|(u|0)==0&v>>>0<=w>>>0)&1}k=Wa[c[29340>>2]&127](n)|0;if(!k){F=278;break a}j=Wa[c[29352>>2]&127](k)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0<=(c[14987]|0)>>>0){j=k;q=k;break f}c[14987]=j;j=k;q=k;break f}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0){F=278;break a}}else{do if(!(n>>>0>0|((n|0)==0?u>>>0>(e[q+276>>1]|0)>>>0:0))){j=q+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];w=q+284|0;c[w>>2]=(c[w>>2]|0)+1;break g}j=q+296|0;k=c[j>>2]|0;if(!k){j=q+292|0;break}else{c[j>>2]=c[k>>2];w=q+284|0;c[w>>2]=(c[w>>2]|0)+1;break g}}else j=q+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}k=_d(q,u,n)|0}while(0);if(!k){F=278;break a}else{j=k;q=k}}else{j=_;q=0}while(0);n=((E&255)*10|0)+16|0;v=(E|x)&255|(l|0)>0;if(!(B<<24>>24))k=j;else{a[j>>0]=B;k=j+1|0}if((p|0)<0){a[k>>0]=48;k=k+1|0}else{u=k;while(1){w=(n|0)<1;x=~~o;o=w?o:(o-+(x|0))*10.0;n=n+((w^1)<<31>>31)|0;k=u+1|0;a[u>>0]=w?48:x+48&255;if((p|0)>0){u=k;p=p+-1|0}else{p=-1;break}}}w=(v|0)==0;if(!w){a[k>>0]=46;k=k+1|0}if((p|0)<-1){gw(k|0,48,~p|0)|0;while(1){k=k+1|0;l=l+-1|0;if((p|0)<-2)p=p+1|0;else break}}if((l|0)>0){v=n;while(1){n=(v|0)<1;p=~~o;u=k+1|0;a[k>>0]=n?48:p+48&255;if((l|0)>1){l=l+-1|0;k=u;v=v+((n^1)<<31>>31)|0;o=n?o:(o-+(p|0))*10.0}else{k=u;break}}}h:do if(!(A<<24>>24==0|w)){i:while(1){l=k+-1|0;switch(a[l>>0]|0){case 46:break i;case 48:break;default:break h}a[l>>0]=0;k=l}if(!(E<<24>>24)){a[l>>0]=0;k=l;break}else{a[k>>0]=48;k=k+1|0;break}}while(0);if(z){n=k+1|0;a[k>>0]=a[160+(d[16+(C*6|0)+4>>0]|0)>>0]|0;l=k+2|0;if((m|0)<0){a[n>>0]=45;m=0-m|0}else a[n>>0]=43;if((m|0)>99){E=(m>>>0)/100|0;a[l>>0]=E+48;l=k+3|0;k=m-(E*100|0)|0}else k=m;E=(k|0)/10|0;a[l>>0]=E+48;a[l+1>>0]=k-(E*10|0)+48;k=l+2|0}a[k>>0]=0;k=k-j|0;if(y<<24>>24==0&D<<24>>24!=0&(h|0)>(k|0)){l=h-k|0;if((k|0)>=0){k=h;while(1){a[j+k>>0]=a[j+(k-l)>>0]|0;if((k|0)>(l|0))k=k+-1|0;else break}}if(!l){n=h;m=H}else{gw(j+(B<<24>>24!=0&1)|0,48,l|0)|0;n=h;m=H}}else{n=k;m=H}}else{n=3;j=31167;m=H;q=0}break}case 4:{if(I){h=c[ca>>2]|0;j=(c[i>>2]|0)+(4-1)&~(4-1);n=c[j>>2]|0;c[i>>2]=j+4;c[n>>2]=h;n=0;h=0;j=z;m=H;q=0}else{n=0;h=0;j=z;m=H;q=0}break}case 7:{a[_>>0]=37;n=1;j=_;m=H;q=0;break}case 8:{j:do if(I){F=(c[i>>2]|0)+(4-1)&~(4-1);j=c[F>>2]|0;c[i>>2]=F+4;if(j>>>0<128){a[_>>0]=j;n=1;break}if(j>>>0<2048){a[_>>0]=j>>>6&31|192;a[T>>0]=j&63|128;n=2;break}if(j>>>0<65536){a[_>>0]=j>>>12&15|224;a[T>>0]=j>>>6&63|128;a[U>>0]=j&63|128;n=3;break}else{a[_>>0]=j>>>18&7|240;a[T>>0]=j>>>12&63|128;a[U>>0]=j>>>6&63|128;a[V>>0]=j&63|128;n=4;break}}else{j=c[Q>>2]|0;do if((c[J>>2]|0)>(j|0)?(aa=c[R>>2]|0,c[Q>>2]=j+1,aa=c[aa+(j<<2)>>2]|0,aa|0):0){j=b[aa+8>>1]|0;if((j&514)==514?(a[aa+10>>0]|0)==1:0)k=c[aa+16>>2]|0;else{if(j&1)break;k=Gg(aa,1)|0}if(k|0){F=a[k>>0]|0;a[_>>0]=F;if((F&255)<=191){n=1;break j}j=a[k+1>>0]|0;if((j&-64)<<24>>24!=-128){n=1;break j}a[T>>0]=j;j=a[k+2>>0]|0;if((j&-64)<<24>>24!=-128){n=2;break j}a[U>>0]=j;j=a[k+3>>0]|0;if((j&-64)<<24>>24!=-128){n=3;break j}a[V>>0]=j;n=4;break j}}while(0);a[_>>0]=0;n=1}while(0);if((m|0)>1){h=1-m+h|0;do if(!((h|0)<2|y<<24>>24!=0)){h=h+-1|0;F=Sv(c[ca>>2]|0,0,h|0,((h|0)<0)<<31>>31|0)|0;E=L()|0;if(!((E|0)<0|((E|0)==0?F>>>0<(c[da>>2]|0)>>>0:0))){h=vb(f,h)|0;if((h|0)<1){h=0;break}}while(1){E=c[ea>>2]|0;F=c[ca>>2]|0;c[ca>>2]=F+1;a[E+F>>0]=32;if((h|0)>1)h=h+-1|0;else{h=0;break}}}while(0);j=m;while(1){k=c[ca>>2]|0;l=k+n|0;if(l>>>0<(c[da>>2]|0)>>>0){c[ca>>2]=l;ew((c[ea>>2]|0)+k|0,_|0,n|0)|0}else wb(f,_,n);if((j|0)>2)j=j+-1|0;else{j=_;m=1;q=0;k=n;F=395;break}}}else{j=_;m=1;q=0;k=n;F=395}break}case 6:case 5:{do if(!I){j=c[Q>>2]|0;if((c[J>>2]|0)>(j|0)?(K=c[R>>2]|0,c[Q>>2]=j+1,K=c[K+(j<<2)>>2]|0,(K|0)!=0):0){j=b[K+8>>1]|0;if((j&514)==514?(a[K+10>>0]|0)==1:0){j=c[K+16>>2]|0;k=5;F=369;break}if(!(j&1)){j=Gg(K,1)|0;k=5;F=369}else{p=59952;k=0;F=380}}else{p=59952;k=0;F=380}}else{F=(c[i>>2]|0)+(4-1)&~(4-1);j=c[F>>2]|0;c[i>>2]=F+4;F=369}while(0);if((F|0)==369){F=0;if(j)if(k<<24>>24==6)if((c[ca>>2]|0)==0?(m|0)<0&((h|0)==0&(c[W>>2]|0)!=0):0)if(!(a[S>>0]|0)){c[ea>>2]=j;h=c[f>>2]|0;if(((h|0)!=0?(M=j,(c[h+304>>2]|0)>>>0<=M>>>0):0)?(c[h+308>>2]|0)>>>0>M>>>0:0)h=e[h+276>>1]|0;else h=Wa[c[29352>>2]&127](j)|0;c[da>>2]=h;n=(Eu(j)|0)&2147483647;c[ca>>2]=n;a[ba>>0]=a[ba>>0]|4;n=0;h=0;m=H;q=0;break e}else{l=j;h=0;k=j}else{p=j;k=j;F=380}else{p=j;k=0;F=380}else{p=59952;k=0;F=380}}if((F|0)==380){F=0;if((m|0)>-1){j=(m|0)!=0;if(!(E<<24>>24)){if(!j){n=0;j=p;m=H;q=k;break e}j=0;while(1){if(!(a[p+j>>0]|0)){n=j;j=p;m=H;q=k;break e}j=j+1|0;if((j|0)>=(m|0)){n=j;j=p;m=H;q=k;break e}}}k:do if(j){j=p;while(1){n=m;m=m+-1|0;l=a[j>>0]|0;if(!(l<<24>>24)){l=j;break k}j=j+1|0;if((l&255)>191)while(1)if((a[j>>0]&-64)<<24>>24==-128)j=j+1|0;else break;if((n|0)<=1){l=j;break}}}else l=p;while(0);j=p;m=E;q=k;k=l-p|0;F=395;break e}else l=p}j=l;m=E;q=k;k=(Eu(l)|0)&2147483647;F=395;break}case 14:case 10:case 9:{x=(C|0)==6?34:39;do if(!I){j=c[Q>>2]|0;if((c[J>>2]|0)>(j|0)?(N=c[R>>2]|0,c[Q>>2]=j+1,N=c[N+(j<<2)>>2]|0,(N|0)!=0):0){j=b[N+8>>1]|0;if((j&514)==514?(a[N+10>>0]|0)==1:0){j=c[N+16>>2]|0;break}if(!(j&1))j=Gg(N,1)|0;else j=0}else j=0}else{F=(c[i>>2]|0)+(4-1)&~(4-1);j=c[F>>2]|0;c[i>>2]=F+4}while(0);q=(j|0)==0;p=(C|0)==5;w=q?(p?31171:31176):j;l:do if(!m){l=0;v=0}else{n=x&255;if(!(E<<24>>24)){l=0;k=0;while(1){j=a[w+k>>0]|0;if(!(j<<24>>24)){v=k;break l}j=l+((j<<24>>24|0)==(n|0)&1)|0;k=k+1|0;m=m+-1|0;if(!m){l=j;v=k;break l}else l=j}}l=0;j=0;while(1){F=a[w+j>>0]|0;k=F<<24>>24;if(!(F<<24>>24)){v=j;break l}l=l+((k|0)==(n|0)&1)|0;if((k&192|0)==192)do j=j+1|0;while((a[w+j>>0]&-64)<<24>>24==-128);else j=j+1|0;m=m+-1|0;if(!m){v=j;break}}}while(0);u=p&(q^1);n=v+3+l|0;m:do if((n|0)>70){l=((n|0)<0)<<31>>31;if(a[S>>0]|0){F=543;break a}if(0<(l|0)|(0==(l|0)?(c[da>>2]|0)>>>0>>0:0)?(O=c[W>>2]|0,0<(l|0)|0==(l|0)&O>>>0>>0):0){F=423;break a}m=c[f>>2]|0;n:do if(!m){F=Sv(n|0,l|0,-1,-1)|0;D=L()|0;if(D>>>0>0|(D|0)==0&F>>>0>2147483390){F=465;break a}if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](n)|0;break}l=Wa[c[29356>>2]&127](n)|0;if((c[14985]|0)>>>0>>0)c[14985]=n;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){F=c[14978]|0;D=Tv(j|0,k|0,l|0,((l|0)<0)<<31>>31|0)|0;C=L()|0;c[14768]=((C|0)<0|(C|0)==0&D>>>0<=F>>>0)&1}k=Wa[c[29340>>2]&127](l)|0;if(!k){F=465;break a}j=Wa[c[29352>>2]&127](k)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0<=(c[14987]|0)>>>0){j=k;q=k;break m}c[14987]=j;j=k;q=k;break m}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0){F=465;break a}}else{do if(!(0>>0|(0==(l|0)?(e[m+276>>1]|0)>>>0>>0:0))){j=m+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];F=m+284|0;c[F>>2]=(c[F>>2]|0)+1;break n}j=m+296|0;k=c[j>>2]|0;if(!k){j=m+292|0;break}else{c[j>>2]=c[k>>2];F=m+284|0;c[F>>2]=(c[F>>2]|0)+1;break n}}else j=m+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}k=_d(m,n,l)|0}while(0);if(!k){F=465;break a}else{j=k;q=k}}else{j=_;q=0}while(0);if(u){a[j>>0]=x;k=1}else k=0;if((v|0)>0){p=x&255;n=0;do{l=a[w+n>>0]|0;m=k+1|0;a[j+k>>0]=l;if((l<<24>>24|0)==(p|0)){a[j+m>>0]=l;k=k+2|0}else k=m;n=n+1|0}while((n|0)!=(v|0))}if(u){a[j+k>>0]=x;k=k+1|0}a[j+k>>0]=0;m=E;F=395;break}case 11:{if(!(a[ba>>0]&1)){F=543;break a}E=(c[i>>2]|0)+(4-1)&~(4-1);h=c[E>>2]|0;c[i>>2]=E+4;if((h|0)!=0?(P=c[h+4>>2]|0,(P|0)!=0):0){h=c[h>>2]|0;j=c[ca>>2]|0;k=j+P|0;if(k>>>0<(c[da>>2]|0)>>>0){c[ca>>2]=k;ew((c[ea>>2]|0)+j|0,h|0,P|0)|0;n=0;h=0;j=z;m=H;q=0;break e}else{wb(f,h,P);n=0;h=0;j=z;m=H;q=0;break e}}else{n=0;h=0;j=z;m=H;q=0}break}case 12:{if(!(a[ba>>0]&1)){F=543;break a}h=(c[i>>2]|0)+(4-1)&~(4-1);m=c[h>>2]|0;c[i>>2]=h+4;h=(c[i>>2]|0)+(4-1)&~(4-1);n=c[h>>2]|0;c[i>>2]=h+4;h=c[m+8+(n*72|0)+4>>2]|0;do if(h|0){j=(Eu(h)|0)&1073741823;k=c[ca>>2]|0;l=k+j|0;if(l>>>0<(c[da>>2]|0)>>>0){if(j|0){c[ca>>2]=l;ew((c[ea>>2]|0)+k|0,h|0,j|0)|0}}else wb(f,h,j);h=c[ca>>2]|0;j=h+1|0;if(j>>>0<(c[da>>2]|0)>>>0){c[ca>>2]=j;a[(c[ea>>2]|0)+h>>0]=46;break}else{wb(f,31183,1);break}}while(0);j=c[m+8+(n*72|0)+8>>2]|0;if(!j)h=0;else h=(Eu(j)|0)&1073741823;k=c[ca>>2]|0;l=k+h|0;if(l>>>0>=(c[da>>2]|0)>>>0){wb(f,j,h);n=0;h=0;j=z;m=H;q=0;break e}if(!h){n=0;h=0;j=z;m=H;q=0}else{c[ca>>2]=l;ew((c[ea>>2]|0)+k|0,j|0,h|0)|0;n=0;h=0;j=z;m=H;q=0}break}default:{F=543;break a}}while(0);if((F|0)==86){v=0;F=87}else if((F|0)==395){F=0;if(m<<24>>24!=0&(h|0)>0&(k|0)>0){l=k;do{E=l;l=l+-1|0;h=h+((a[j+l>>0]&-64)<<24>>24==-128&1)|0}while((E|0)>1);n=k;m=H}else{n=k;m=H}}if((F|0)==87){F=0;o:do if(4067322>>>C&1){if(I)switch(k<<24>>24){case 0:{j=(c[i>>2]|0)+(4-1)&~(4-1);l=c[j>>2]|0;c[i>>2]=j+4;j=0;k=0;F=113;break o}case 2:{j=(c[i>>2]|0)+(8-1)&~(8-1);k=j;l=c[k>>2]|0;k=c[k+4>>2]|0;c[i>>2]=j+8;j=0;F=113;break o}default:{j=(c[i>>2]|0)+(4-1)&~(4-1);l=c[j>>2]|0;c[i>>2]=j+4;j=0;k=0;F=113;break o}}j=c[Q>>2]|0;if((c[J>>2]|0)>(j|0)){k=c[R>>2]|0;c[Q>>2]=j+1;j=c[k+(j<<2)>>2]|0;k=e[j+8>>1]|0;if(k&4|0){k=j;j=0;l=c[k>>2]|0;k=c[k+4>>2]|0;F=113;break}if(k&8|0){l=Mg(+g[j>>3])|0;j=0;k=L()|0;F=113;break}if(k&18){l=Ng(a[j+10>>0]|0,c[j+12>>2]|0,c[j+16>>2]|0)|0;j=0;k=L()|0;F=113}else{j=0;F=114}}else{j=0;F=114}}else{do if(I)if(k<<24>>24!=2){p=(c[i>>2]|0)+(4-1)&~(4-1);n=c[p>>2]|0;c[i>>2]=p+4;p=((n|0)<0)<<31>>31;l=Tv(0,0,n|0,p|0)|0;k=L()|0;if((n|0)<0)break;else{l=n;k=p;F=113;break o}}else{F=(c[i>>2]|0)+(8-1)&~(8-1);k=F;l=c[k>>2]|0;k=c[k+4>>2]|0;c[i>>2]=F+8;F=99;break}else{k=c[Q>>2]|0;if((c[J>>2]|0)<=(k|0)){F=114;break o}l=c[R>>2]|0;c[Q>>2]=k+1;k=c[l+(k<<2)>>2]|0;l=e[k+8>>1]|0;if(l&4|0){l=k;k=c[l+4>>2]|0;l=c[l>>2]|0;F=99;break}if(l&8|0){l=Mg(+g[k>>3])|0;k=L()|0;F=99;break}if(!(l&18)){F=114;break o}l=Ng(a[k+10>>0]|0,c[k+12>>2]|0,c[k+16>>2]|0)|0;k=L()|0;F=99}while(0);if((F|0)==99){p=(l|0)==0&(k|0)==-2147483648;n=Tv(0,0,l|0,k|0)|0;q=L()|0;if((k|0)<0){l=p?0:n;k=p?-2147483648:q}else{F=113;break}}j=45;F=113}while(0);if((F|0)==113){F=0;if((l|0)==0&(k|0)==0)F=114;else z=j}if((F|0)==114){F=0;z=j;l=0;k=0;x=0}u=h-(z<<24>>24!=0&1)|0;u=D<<24>>24==0?m:(m|0)<(u|0)?u:m;if((u|0)<37){n=_;q=0;w=70}else{m=Sv(u|0,((u|0)<0)<<31>>31|0,10,0)|0;j=L()|0;if(!(v<<24>>24))q=j;else{m=Sv(m|0,j|0,(u>>>0)/3|0|0,0)|0;q=L()|0}if(a[S>>0]|0){F=543;break}if((q|0)>0|((q|0)==0?m>>>0>(c[da>>2]|0)>>>0:0)?(Y=c[W>>2]|0,(q|0)>0|(q|0)==0&m>>>0>Y>>>0):0){F=121;break}p=c[f>>2]|0;p:do if(!p){E=Sv(m|0,q|0,-1,-1)|0;D=L()|0;if(D>>>0>0|(D|0)==0&E>>>0>2147483390){F=164;break a}if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](m)|0;F=162;break}j=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;p=59064;n=c[p>>2]|0;p=c[p+4>>2]|0;if((p|0)>0|(p|0)==0&n>>>0>0){E=c[14978]|0;D=Tv(n|0,p|0,j|0,((j|0)<0)<<31>>31|0)|0;B=L()|0;c[14768]=((B|0)<0|(B|0)==0&D>>>0<=E>>>0)&1}j=Wa[c[29340>>2]&127](j)|0;if(!j){F=164;break a}n=Wa[c[29352>>2]&127](j)|0;n=(c[14978]|0)+n|0;c[14978]=n;if(n>>>0>(c[14982]|0)>>>0)c[14982]=n;n=(c[14981]|0)+1|0;c[14981]=n;if(n>>>0>(c[14987]|0)>>>0)c[14987]=n}else{if(c[p+272>>2]|0){if(a[p+81>>0]|0){F=164;break a}}else{do if(!(q>>>0>0|((q|0)==0?m>>>0>(e[p+276>>1]|0)>>>0:0))){n=p+300|0;j=c[n>>2]|0;if(j|0){c[n>>2]=c[j>>2];F=p+284|0;c[F>>2]=(c[F>>2]|0)+1;F=162;break p}n=p+296|0;j=c[n>>2]|0;if(!j){j=p+292|0;break}else{c[n>>2]=c[j>>2];F=p+284|0;c[F>>2]=(c[F>>2]|0)+1;F=162;break p}}else j=p+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(p,m,q)|0;F=162}while(0);if((F|0)==162){F=0;if(!j){F=164;break}}n=j;q=j;w=(j|0)==0?H:m}m=n+(w+-1)|0;if((C|0)==22){E=_v(l|0,k|0,10,0)|0;j=L()|0;H=Yv(E|0,j|0,10,0)|0;H=Tv(l|0,k|0,H|0,L()|0)|0;L()|0;j=$v(E|0,j|0,10,0)|0;j=(H|0)>3|(j|0)==1&(L()|0)==0;H=(j?0:H)<<1;j=m+-1|0;a[j>>0]=a[31151+(H|1)>>0]|0;j=j+-1|0;a[j>>0]=a[31151+H>>0]|0}else j=m;n=160+(d[16+(C*6|0)+4>>0]|0)|0;p=d[16+(C*6|0)+1>>0]|0;do{H=l;l=_v(l|0,k|0,p|0,0)|0;E=k;k=L()|0;D=Yv(l|0,k|0,p|0,0)|0;D=Tv(H|0,E|0,D|0,L()|0)|0;L()|0;j=j+-1|0;a[j>>0]=a[n+D>>0]|0}while(!(E>>>0<0|(E|0)==0&H>>>0

        >>0));p=m;k=j;l=p-k|0;if((u|0)>(l|0)){j=j+(p-u-k)|0;gw(j|0,48,u+k-p|0)|0;l=u}if(v<<24>>24){k=l+-1|0;m=(k|0)/3|0;j=j+(0-m)|0;if((l|0)>3){k=k-(m*3|0)+1|0;l=0;do{a[j+l>>0]=a[j+(l+m)>>0]|0;k=k+-1|0;n=l+1|0;if(!k){a[j+n>>0]=v;k=3;m=m+-1|0;l=l+2|0}else l=n}while((m|0)>0)}}if(z<<24>>24){j=j+-1|0;a[j>>0]=z}if(x<<24>>24!=0?(7860991>>>C&1|0)==0:0){k=31160+(d[16+(C*6|0)+5>>0]|0)|0;l=k;k=a[k>>0]|0;do{j=j+-1|0;a[j>>0]=k;l=l+1|0;k=a[l>>0]|0}while(k<<24>>24!=0)}n=p-j|0;m=w}h=h-n|0;do if((h|0)>0){l=c[ca>>2]|0;if(!(y<<24>>24)){H=Sv(l|0,0,h|0,((h|0)<0)<<31>>31|0)|0;E=L()|0;if(!((E|0)<0|((E|0)==0?H>>>0<(c[da>>2]|0)>>>0:0))){h=vb(f,h)|0;if((h|0)>=1)F=514}else F=514;if((F|0)==514){F=0;while(1){E=c[ea>>2]|0;H=c[ca>>2]|0;c[ca>>2]=H+1;a[E+H>>0]=32;if((h|0)>1)h=h+-1|0;else break}}h=c[ca>>2]|0;k=h+n|0;if(k>>>0>=(c[da>>2]|0)>>>0){wb(f,j,n);break}if(!n)break;c[ca>>2]=k;ew((c[ea>>2]|0)+h|0,j|0,n|0)|0;break}else{k=l+n|0;if(k>>>0<(c[da>>2]|0)>>>0){if(n|0){c[ca>>2]=k;ew((c[ea>>2]|0)+l|0,j|0,n|0)|0}}else wb(f,j,n);H=Sv(c[ca>>2]|0,0,h|0,((h|0)<0)<<31>>31|0)|0;E=L()|0;if(!((E|0)<0|((E|0)==0?H>>>0<(c[da>>2]|0)>>>0:0))){h=vb(f,h)|0;if((h|0)<1)break}while(1){E=c[ea>>2]|0;H=c[ca>>2]|0;c[ca>>2]=H+1;a[E+H>>0]=32;if((h|0)>1)h=h+-1|0;else break}}}else{h=c[ca>>2]|0;k=h+n|0;if(k>>>0>=(c[da>>2]|0)>>>0){wb(f,j,n);break}if(n|0){c[ca>>2]=k;ew((c[ea>>2]|0)+h|0,j|0,n|0)|0}}while(0);do if(q|0){h=c[f>>2]|0;if(h|0){if(c[h+480>>2]|0){Xd(h,q);break}H=q;if((c[h+304>>2]|0)>>>0<=H>>>0?(c[h+308>>2]|0)>>>0>H>>>0:0){H=h+300|0;c[q>>2]=c[H>>2];c[H>>2]=q;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{H=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}while(0);h=G+1|0;H=m}if((F|0)==13){h=c[ca>>2]|0;j=h+1|0;if(j>>>0<(c[da>>2]|0)>>>0){c[ca>>2]=j;a[(c[ea>>2]|0)+h>>0]=37;Ra=fa;return}else{wb(f,31149,1);Ra=fa;return}}else if((F|0)==121){a[S>>0]=18;if(Y|0){if(a[ba>>0]&4){h=c[f>>2]|0;j=c[ea>>2]|0;do if(j|0){if(h|0){if(c[h+480>>2]|0){Xd(h,j);break}aa=j;if((c[h+304>>2]|0)>>>0<=aa>>>0?(c[h+308>>2]|0)>>>0>aa>>>0:0){aa=h+300|0;c[j>>2]=c[aa>>2];c[aa>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{aa=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);a[ba>>0]=a[ba>>0]&-5}c[da>>2]=0;c[ca>>2]=0;c[ea>>2]=0}h=c[f>>2]|0;if(!h){Ra=fa;return}h=c[h+236>>2]|0;if(!h){Ra=fa;return}c[h+12>>2]=18;ea=h+36|0;c[ea>>2]=(c[ea>>2]|0)+1;Ra=fa;return}else if((F|0)==164){a[S>>0]=7;if(!(c[W>>2]|0)){Ra=fa;return}if(a[ba>>0]&4){h=c[f>>2]|0;j=c[ea>>2]|0;do if(j|0){if(h|0){if(c[h+480>>2]|0){Xd(h,j);break}f=j;if((c[h+304>>2]|0)>>>0<=f>>>0?(c[h+308>>2]|0)>>>0>f>>>0:0){f=h+300|0;c[j>>2]=c[f>>2];c[f>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{f=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);a[ba>>0]=a[ba>>0]&-5}c[da>>2]=0;c[ca>>2]=0;c[ea>>2]=0;Ra=fa;return}else if((F|0)==236){a[S>>0]=18;if($|0){if(a[ba>>0]&4){h=c[f>>2]|0;j=c[ea>>2]|0;do if(j|0){if(h|0){if(c[h+480>>2]|0){Xd(h,j);break}aa=j;if((c[h+304>>2]|0)>>>0<=aa>>>0?(c[h+308>>2]|0)>>>0>aa>>>0:0){aa=h+300|0;c[j>>2]=c[aa>>2];c[aa>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{aa=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);a[ba>>0]=a[ba>>0]&-5}c[da>>2]=0;c[ca>>2]=0;c[ea>>2]=0}h=c[f>>2]|0;if(!h){Ra=fa;return}h=c[h+236>>2]|0;if(!h){Ra=fa;return}c[h+12>>2]=18;ea=h+36|0;c[ea>>2]=(c[ea>>2]|0)+1;Ra=fa;return}else if((F|0)==278){a[S>>0]=7;if(!(c[W>>2]|0)){Ra=fa;return}if(a[ba>>0]&4){h=c[f>>2]|0;j=c[ea>>2]|0;do if(j|0){if(h|0){if(c[h+480>>2]|0){Xd(h,j);break}f=j;if((c[h+304>>2]|0)>>>0<=f>>>0?(c[h+308>>2]|0)>>>0>f>>>0:0){f=h+300|0;c[j>>2]=c[f>>2];c[f>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{f=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);a[ba>>0]=a[ba>>0]&-5}c[da>>2]=0;c[ca>>2]=0;c[ea>>2]=0;Ra=fa;return}else if((F|0)==423){a[S>>0]=18;if(O|0){if(a[ba>>0]&4){h=c[f>>2]|0;j=c[ea>>2]|0;do if(j|0){if(h|0){if(c[h+480>>2]|0){Xd(h,j);break}aa=j;if((c[h+304>>2]|0)>>>0<=aa>>>0?(c[h+308>>2]|0)>>>0>aa>>>0:0){aa=h+300|0;c[j>>2]=c[aa>>2];c[aa>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{aa=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);a[ba>>0]=a[ba>>0]&-5}c[da>>2]=0;c[ca>>2]=0;c[ea>>2]=0}h=c[f>>2]|0;if(!h){Ra=fa;return}h=c[h+236>>2]|0;if(!h){Ra=fa;return}c[h+12>>2]=18;ea=h+36|0;c[ea>>2]=(c[ea>>2]|0)+1;Ra=fa;return}else if((F|0)==465){a[S>>0]=7;if(!(c[W>>2]|0)){Ra=fa;return}if(a[ba>>0]&4){h=c[f>>2]|0;j=c[ea>>2]|0;do if(j|0){if(h|0){if(c[h+480>>2]|0){Xd(h,j);break}f=j;if((c[h+304>>2]|0)>>>0<=f>>>0?(c[h+308>>2]|0)>>>0>f>>>0:0){f=h+300|0;c[j>>2]=c[f>>2];c[f>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{f=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);a[ba>>0]=a[ba>>0]&-5}c[da>>2]=0;c[ca>>2]=0;c[ea>>2]=0;Ra=fa;return}else if((F|0)==543){Ra=fa;return}}function ub(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a+16|0;f=c[e>>2]|0;g=f+d|0;if(g>>>0>=(c[a+8>>2]|0)>>>0){wb(a,b,d);return}if(!d)return;c[e>>2]=g;ew((c[a+4>>2]|0)+f|0,b|0,d|0)|0;return}function vb(b,d){b=b|0;d=d|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;q=b+20|0;if(a[q>>0]|0){s=0;return s|0}p=b+12|0;i=c[p>>2]|0;if(!i){a[q>>0]=18;f=c[b>>2]|0;if(f|0?(g=c[f+236>>2]|0,g|0):0){c[g+12>>2]=18;s=g+36|0;c[s>>2]=(c[s>>2]|0)+1}s=(c[b+8>>2]|0)+-1-(c[b+16>>2]|0)|0;return s|0}s=b+21|0;g=a[s>>0]|0;f=(g&4)==0;if(f)j=0;else j=c[b+4>>2]|0;r=b+16|0;k=c[r>>2]|0;v=d+1|0;v=Sv(k|0,0,v|0,((v|0)<0)<<31>>31|0)|0;t=L()|0;k=Sv(v|0,t|0,k|0,0)|0;o=L()|0;u=(o|0)>0|(o|0)==0&k>>>0>i>>>0;k=u?v:k;o=u?t:o;if((o|0)>0|(o|0)==0&k>>>0>i>>>0){if(!f){f=c[b>>2]|0;h=b+4|0;g=c[h>>2]|0;do if(g|0){if(f|0){if(c[f+480>>2]|0){Xd(f,g);break}v=g;if((c[f+304>>2]|0)>>>0<=v>>>0?(c[f+308>>2]|0)>>>0>v>>>0:0){v=f+300|0;c[g>>2]=c[v>>2];c[v>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{v=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);g=a[s>>0]&-5;a[s>>0]=g;v=c[p>>2]|0;f=b+8|0;c[f>>2]=0;c[r>>2]=0;c[h>>2]=0;a[q>>0]=18;if(v|0)n=23}else{f=b+8|0;c[f>>2]=0;c[r>>2]=0;c[b+4>>2]=0;a[q>>0]=18;n=23}if((n|0)==23){if(g&4)a[s>>0]=g&-5;c[f>>2]=0;c[r>>2]=0;c[b+4>>2]=0}f=c[b>>2]|0;if(!f){v=0;return v|0}f=c[f+236>>2]|0;if(!f){v=0;return v|0}c[f+12>>2]=18;v=f+36|0;c[v>>2]=(c[v>>2]|0)+1;v=0;return v|0}o=b+8|0;c[o>>2]=k;i=c[b>>2]|0;a:do if(!i){if(!(mb()|0)){h=sb(j,k,0)|0;n=49}}else{if(j|0){v=j;if((c[i+304>>2]|0)>>>0<=v>>>0?(c[i+308>>2]|0)>>>0>v>>>0:0){if(!(0>0|(0==0?k>>>0>(e[i+276>>1]|0)>>>0:0))){h=j;n=51;break}h=Zd(i,j,k,0)|0;n=49;break}h=Zd(i,j,k,0)|0;n=49;break}if(c[i+272>>2]|0){if(a[i+81>>0]|0)break}else{do if(!(0>0|(0==0?k>>>0>(e[i+276>>1]|0)>>>0:0))){f=i+300|0;h=c[f>>2]|0;if(h|0){c[f>>2]=c[h>>2];n=i+284|0;c[n>>2]=(c[n>>2]|0)+1;n=49;break a}f=i+296|0;h=c[f>>2]|0;if(!h){f=i+292|0;break}else{c[f>>2]=c[h>>2];n=i+284|0;c[n>>2]=(c[n>>2]|0)+1;n=49;break a}}else f=i+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1}h=_d(i,k,0)|0;n=49}while(0);if((n|0)==49?h|0:0){g=a[s>>0]|0;n=51}if((n|0)==51){if((g&4)==0?(l=c[r>>2]|0,l|0):0)ew(h|0,c[b+4>>2]|0,l|0)|0;c[b+4>>2]=h;f=c[b>>2]|0;if(((f|0)!=0?(m=h,(c[f+304>>2]|0)>>>0<=m>>>0):0)?(c[f+308>>2]|0)>>>0>m>>>0:0)f=e[f+276>>1]|0;else f=Wa[c[29352>>2]&127](h)|0;c[o>>2]=f;a[s>>0]=a[s>>0]|4;v=d;return v|0}f=a[s>>0]|0;if(!(f&4))g=b+4|0;else{f=c[b>>2]|0;g=b+4|0;h=c[g>>2]|0;do if(h|0){if(f|0){if(c[f+480>>2]|0){Xd(f,h);break}v=h;if((c[f+304>>2]|0)>>>0<=v>>>0?(c[f+308>>2]|0)>>>0>v>>>0:0){v=f+300|0;c[h>>2]=c[v>>2];c[v>>2]=h;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{v=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);f=a[s>>0]&-5;a[s>>0]=f}c[o>>2]=0;c[r>>2]=0;c[g>>2]=0;a[q>>0]=7;if(!(c[p>>2]|0)){v=0;return v|0}if(f&4)a[s>>0]=f&-5;c[o>>2]=0;c[r>>2]=0;c[b+4>>2]=0;v=0;return v|0}function wb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;d=vb(a,d)|0;if((d|0)<=0)return;e=a+16|0;ew((c[a+4>>2]|0)+(c[e>>2]|0)|0,b|0,d|0)|0;c[e>>2]=(c[e>>2]|0)+d;return}function xb(a){a=a|0;if(!a){a=0;return a|0}a=(Eu(a)|0)&1073741823;return a|0}function yb(b){b=b|0;var d=0,e=0;d=b+4|0;e=c[d>>2]|0;if((e|0?(a[e+(c[b+16>>2]|0)>>0]=0,c[b+12>>2]|0):0)?(a[b+21>>0]&4)==0:0){e=$d(b)|0;return e|0}e=c[d>>2]|0;return e|0}function zb(b){b=b|0;var d=0,e=0,f=0,g=0;if(mb()|0){b=29632;return b|0}if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](24)|0;if(!d){b=29632;return b|0}}else{f=Wa[c[29356>>2]&127](24)|0;if((c[14985]|0)>>>0<24)c[14985]=24;e=59064;d=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&d>>>0>0){g=c[14978]|0;e=Tv(d|0,e|0,f|0,((f|0)<0)<<31>>31|0)|0;d=L()|0;c[14768]=((d|0)<0|(d|0)==0&e>>>0<=g>>>0)&1}d=Wa[c[29340>>2]&127](f)|0;if(!d){g=29632;return g|0}e=Wa[c[29352>>2]&127](d)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0>(c[14987]|0)>>>0)c[14987]=e}if(!b){c[d+4>>2]=0;c[d>>2]=0;c[d+8>>2]=0;c[d+12>>2]=1e9;c[d+16>>2]=0;a[d+20>>0]=0;a[d+21>>0]=0;g=d;return g|0}else{g=c[b+108>>2]|0;c[d+4>>2]=0;c[d>>2]=0;c[d+8>>2]=0;c[d+12>>2]=g;c[d+16>>2]=0;a[d+20>>0]=0;a[d+21>>0]=0;g=d;return g|0}return 0}function Ab(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=Ra;Ra=Ra+96|0;f=j+72|0;if(mb()|0){i=0;Ra=j;return i|0}g=f+4|0;c[g>>2]=j;c[f>>2]=0;c[f+8>>2]=70;h=f+12|0;c[h>>2]=1e9;i=f+16|0;c[i>>2]=0;a[f+20>>0]=0;e=f+21|0;a[e>>0]=0;tb(f,b,d);b=c[g>>2]|0;if((b|0?(a[b+(c[i>>2]|0)>>0]=0,c[h>>2]|0):0)?(a[e>>0]&4)==0:0){i=$d(f)|0;Ra=j;return i|0}i=c[g>>2]|0;Ra=j;return i|0}function Bb(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=Ra;Ra=Ra+112|0;j=k+88|0;h=k;if(mb()|0){j=0;Ra=k;return j|0}c[h>>2]=d;do if(!(mb()|0)){i=j+4|0;c[i>>2]=k+16;c[j>>2]=0;c[j+8>>2]=70;e=j+12|0;c[e>>2]=1e9;f=j+16|0;c[f>>2]=0;a[j+20>>0]=0;g=j+21|0;a[g>>0]=0;tb(j,b,h);d=c[i>>2]|0;if((d|0?(a[d+(c[f>>2]|0)>>0]=0,c[e>>2]|0):0)?(a[g>>0]&4)==0:0){d=$d(j)|0;break}d=c[i>>2]|0}else d=0;while(0);j=d;Ra=k;return j|0}function Cb(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=Ra;Ra=Ra+48|0;h=j+16|0;i=j;c[i>>2]=g;if((d|0)<1){Ra=j;return e|0}c[h+4>>2]=e;c[h>>2]=0;c[h+8>>2]=d;g=h+12|0;c[g>>2]=0;c[g+4>>2]=0;b[g+8>>1]=0;tb(h,f,i);a[e+(c[h+16>>2]|0)>>0]=0;Ra=j;return e|0}function Db(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=Ra;Ra=Ra+256|0;k=l+232|0;g=l;if(!(c[7387]|0)){Ra=l;return}c[g>>2]=f;i=k+4|0;c[i>>2]=l+16;c[k>>2]=0;c[k+8>>2]=210;j=k+12|0;h=k+21|0;c[j>>2]=0;c[j+4>>2]=0;b[j+8>>1]=0;tb(k,e,g);e=c[7387]|0;g=c[7388]|0;f=c[i>>2]|0;if(((f|0)!=0?(a[f+(c[k+16>>2]|0)>>0]=0,(c[j>>2]|0)!=0):0)?(a[h>>0]&4)==0:0)f=$d(k)|0;else f=c[i>>2]|0;cb[e&255](g,d,f);Ra=l;return}function Eb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=Ra;Ra=Ra+16|0;f=e;c[f>>2]=d;tb(a,b,f);Ra=e;return}function Fb(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;i=Ra;Ra=Ra+256|0;h=i;if(mb()|0){Ra=i;return}if((b|0)<1|(e|0)==0){a[59955]=0;Ra=i;return}if(!(a[59955]|0)){a[59957]=0;a[59956]=0;f=(mb()|0)==0;f=f?c[14770]|0:0;Ya[c[f+56>>2]&127](f,256,h)|0;f=0;do{a[59958+f>>0]=f;f=f+1|0}while((f|0)!=256);f=0;g=a[59957]|0;do{j=59958+f|0;m=a[j>>0]|0;l=(d[h+f>>0]|0)+(m&255)+(g&255)|0;g=l&255;l=59958+(l&255)|0;k=a[l>>0]|0;a[l>>0]=m;a[j>>0]=k;f=f+1|0}while((f|0)!=256);a[59957]=g;a[59955]=1}while(1){l=(a[59956]|0)+1<<24>>24;a[59956]=l;l=59958+(l&255)|0;j=a[l>>0]|0;m=j&255;k=(d[59957]|0)+m|0;a[59957]=k;k=59958+(k&255)|0;a[l>>0]=a[k>>0]|0;a[k>>0]=j;a[e>>0]=a[59958+((d[l>>0]|0)+m&255)>>0]|0;b=b+-1|0;if(!b)break;else e=e+1|0}Ra=i;return}function Gb(b,c){b=b|0;c=c|0;var e=0,f=0;if(!b){e=((c|0)!=0)<<31>>31;return e|0}if(!c){e=1;return e|0}f=a[b>>0]|0;e=(d[208+(f&255)>>0]|0)-(d[208+(d[c>>0]|0)>>0]|0)|0;if(f<<24>>24==0|(e|0)!=0){f=e;return f|0}e=c;do{b=b+1|0;e=e+1|0;f=a[b>>0]|0;c=(d[208+(f&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(f<<24>>24==0|(c|0)!=0));return c|0}function Hb(b,c){b=b|0;c=c|0;var e=0,f=0;f=a[b>>0]|0;e=(d[208+(f&255)>>0]|0)-(d[208+(d[c>>0]|0)>>0]|0)|0;if(f<<24>>24==0|(e|0)!=0){f=e;return f|0}e=c;do{b=b+1|0;e=e+1|0;f=a[b>>0]|0;c=(d[208+(f&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(f<<24>>24==0|(c|0)!=0));return c|0}function Ib(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0;if(!b){g=((c|0)!=0)<<31>>31;return g|0}if(!c){g=1;return g|0}if((e|0)<=0){g=0;return g|0}f=e;while(1){e=a[b>>0]|0;if(!(e<<24>>24)){f=7;break}e=a[208+(e&255)>>0]|0;g=a[208+(d[c>>0]|0)>>0]|0;if(e<<24>>24!=g<<24>>24){f=9;break}if((f|0)>1){b=b+1|0;c=c+1|0;f=f+-1|0}else{b=0;f=12;break}}if((f|0)==7){e=0;b=a[208+(d[c>>0]|0)>>0]|0}else if((f|0)==9){e=e&255;b=g}else if((f|0)==12)return b|0;g=e-(b&255)|0;return g|0}function Jb(d,e,f,g,h){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,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;H=Ra;Ra=Ra+1232|0;E=H+1200|0;D=H+1192|0;F=H+1168|0;w=H+1144|0;v=H+1128|0;G=H+1048|0;C=H+528|0;n=H;m=g&-256;s=g&16;z=g&8;q=g&4;k=g&1;r=g&2;a:do if(!q)A=0;else{b:do if((m|0)>=16384)if((m|0)<524288)switch(m|0){case 16384:{A=1;break a}default:break b}else switch(m|0){case 524288:{A=1;break a}default:break b}else switch(m|0){case 2048:{A=1;break a}default:{}}while(0);A=0}while(0);y=c[14796]|0;if((y|0)!=(Ju()|0)?(y=Ju()|0,c[14796]=y,(mb()|0)==0):0)a[59955]=0;o=f;p=o+52|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(p|0));y=(m|0)==256;if(!y)if(!e){i=ye(c[d+8>>2]|0,n)|0;if(!i){u=n;i=-1}else{f=i;Ra=H;return f|0}}else{u=e;i=-1}else{c:do if(((c[14795]|0)!=0?(Xa[c[2388>>2]&255](e,G)|0)==0:0)?(i=c[14795]|0,(i|0)!=0):0){m=c[G>>2]|0;n=c[G+72>>2]|0;while(1){if((c[i>>2]|0)==(m|0)?(u=i+8|0,(c[u+4>>2]|0)==0?(c[u>>2]|0)==(n|0):0):0)break;i=c[i+44>>2]|0;if(!i){B=20;break c}}i=i+32|0;m=c[i>>2]|0;if(m){while(1){n=m+8|0;if((c[m+4>>2]|0)==(g|0))break;m=c[n>>2]|0;if(!m){B=20;break c}else i=n}c[i>>2]=c[n>>2];i=m;m=c[m>>2]|0}else B=20}else B=20;while(0);do if((B|0)==20){if(mb()|0){f=7;Ra=H;return f|0}if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](12)|0;if(!i)i=7;else{m=-1;break}Ra=H;return i|0}i=Wa[c[29356>>2]&127](12)|0;if((c[14985]|0)>>>0<12)c[14985]=12;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){u=c[14978]|0;t=Tv(m|0,n|0,i|0,((i|0)<0)<<31>>31|0)|0;p=L()|0;c[14768]=((p|0)<0|(p|0)==0&t>>>0<=u>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){f=7;Ra=H;return f|0}m=Wa[c[29352>>2]&127](i)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0>(c[14987]|0)>>>0)c[14987]=m;m=-1}while(0);c[f+28>>2]=i;u=e;i=m}t=(r|0)!=0;q=q<<4|r;q=(s|0)==0?q:q|131200;d:do if((i|0)<0){i=g&526336;e:do if(!i)if(!z)if(!((g&64|0)==0|(u|0)==0)?(l=u+(((Eu(u)|0)&1073741823)+1)|0,(a[l>>0]|0)!=0):0){while(1){s=Bu(l,32118)|0;l=l+(((Eu(l)|0)&1073741823)+1)|0;if(!s)break;l=l+(((Eu(l)|0)&1073741823)+1)|0;if(!(a[l>>0]|0)){p=0;n=0;m=0;break e}}if(!(Xa[c[2388>>2]&255](l,G)|0)){l=0;m=c[G+24>>2]|0;n=c[G+20>>2]|0;o=c[G+12>>2]&511}else{l=1802;m=0;n=0;o=0}B=57}else{p=0;n=0;m=0}else{p=0;n=0;m=384}else{if(!u)l=-1;else l=((Eu(u)|0)&1073741823)+-1|0;m=a[u+l>>0]|0;f:do if(m<<24>>24!=45){while(1){if(m<<24>>24==46|(l|0)==0)break;l=l+-1|0;m=a[u+l>>0]|0;if(m<<24>>24==45)break f}p=0;n=0;m=0;break e}while(0);ew(C|0,u|0,l|0)|0;a[C+l>>0]=0;if(!(Xa[c[2388>>2]&255](C,G)|0)){m=c[G+24>>2]|0;l=0;n=c[G+20>>2]|0;o=c[G+12>>2]&511}else{m=0;l=1802;n=0;o=0}B=57}while(0);if((B|0)==57)if(!l){p=m;m=o}else{f=l;Ra=H;return f|0}l=xe(u,q,m)|0;do if((l|0)<0){if((A?(s=uu()|0,(c[s>>2]|0)==13):0)?(Xa[c[2364>>2]&255](u,0)|0)!=0:0)i=1544;else{s=uu()|0;if(t&(c[s>>2]|0)!=21?(x=xe(u,q&131200,m)|0,(x|0)>=0):0){m=g&-8|1;k=1;l=x;i=g&526336;break}else i=0}c[v>>2]=31984;c[v+4>>2]=38565;c[v+8>>2]=31517;Db(14,32001,v);G=uu()|0;G=c[G>>2]|0;j=dv(G)|0;c[w>>2]=38565;c[w+4>>2]=G;c[w+8>>2]=31690;c[w+12>>2]=(u|0)==0?59952:u;c[w+16>>2]=j;Db(14,31953,w);j=(i|0)==0?14:i;i=f+28|0;break d}else m=g;while(0);if((i|0)!=0?(Va[c[2592>>2]&127]()|0)==0:0){Ya[c[2580>>2]&127](l,n,p)|0;o=l;B=69}else{o=l;B=69}}else{m=g;o=i;B=69}while(0);g:do if((B|0)==69){if(h|0)c[h>>2]=m;p=f+28|0;i=c[p>>2]|0;if(i|0){c[i>>2]=o;c[i+4>>2]=m}if(z|0)Wa[c[2532>>2]&127](u)|0;l=z<<2;l=(k|0)==0?l:l|2;l=y?l:l|128;l=A?l|8:l;A=l|m&64;m=f+12|0;c[m>>2]=o;c[f+4>>2]=d;n=f+32|0;c[n>>2]=e;i=A&255;k=f+18|0;b[k>>1]=i;h:do if(!((e|0)==0|(A&64|0)==0)?(j=e+(((Eu(e)|0)&1073741823)+1)|0,(a[j>>0]|0)!=0):0){while(1){A=Bu(j,32125)|0;j=j+(((Eu(j)|0)&1073741823)+1)|0;if(!A)break;j=j+(((Eu(j)|0)&1073741823)+1)|0;if(!(a[j>>0]|0)){B=82;break h}}if((Zm(j,1,1)|0)<<24>>24){i=b[k>>1]|0;B=82}}else B=82;while(0);if((B|0)==82)b[k>>1]=i|16;if(!(Bu(c[d+16>>2]|0,31213)|0))b[k>>1]=b[k>>1]|1;i:do if(!(l&128)){i=Xa[c[c[d+20>>2]>>2]&255](e,f)|0;if((i|0)!=29668){if((i|0)!=29820)break;i=(Eu(e)|0)+6|0;j=pb(i,((i|0)<0)<<31>>31)|0;if(j|0){c[D>>2]=e;Cb(i,j,32130,D)|0;c[f+24>>2]=j;i=29820;break}c[f+24>>2]=0;c[f+20>>2]=0;if((o|0)<=-1){j=7;i=p;break g}if(!(Wa[c[2352>>2]&127](o)|0)){j=7;i=p;break g}i=c[n>>2]|0;f=uu()|0;f=c[f>>2]|0;j=dv(f)|0;c[E>>2]=38152;c[E+4>>2]=f;c[E+8>>2]=31695;c[E+12>>2]=(i|0)==0?59952:i;c[E+16>>2]=j;Db(4106,31953,E);j=7;i=p;break g}l=f+8|0;j:do if(!(Xa[c[2400>>2]&255](c[m>>2]|0,C)|0)){i=G;c[i>>2]=0;c[i+4>>2]=0;c[G>>2]=c[C>>2];i=G+8|0;c[i>>2]=c[C+72>>2];c[i+4>>2]=0;i=c[14795]|0;k:do if(!i)B=93;else{while(1){if(!(Lu(G,i,16)|0))break;i=c[i+44>>2]|0;if(!i){B=93;break k}}G=i+36|0;c[G>>2]=(c[G>>2]|0)+1}while(0);if((B|0)==93){if(mb()|0){j=7;break}do if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](56)|0;if(!i){j=7;break j}}else{i=Wa[c[29356>>2]&127](56)|0;if((c[14985]|0)>>>0<56)c[14985]=56;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){E=c[14978]|0;D=Tv(j|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;e=L()|0;c[14768]=((e|0)<0|(e|0)==0&D>>>0<=E>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){j=7;break j}j=Wa[c[29352>>2]&127](i)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0<=(c[14987]|0)>>>0)break;c[14987]=j}while(0);j=i+16|0;o=j;p=o+40|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(p|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];if(c[7325]|0)c[j>>2]=8;c[i+36>>2]=1;j=c[14795]|0;c[i+44>>2]=j;c[i+48>>2]=0;if(j|0)c[j+48>>2]=i;c[14795]=i}c[l>>2]=i;i=29668;break i}else{j=uu()|0;j=c[j>>2]|0;c[f+20>>2]=j;j=(j|0)==75?22:10}while(0);if(Wa[c[2352>>2]&127](o)|0){if(!f)i=0;else i=c[n>>2]|0;E=uu()|0;E=c[E>>2]|0;G=dv(E)|0;c[F>>2]=38067;c[F+4>>2]=E;c[F+8>>2]=31695;c[F+12>>2]=(i|0)==0?59952:i;c[F+16>>2]=G;Db(4106,31953,F)}c[f+20>>2]=0;i=p;break g}else i=29744;while(0);c[f+20>>2]=0;c[f>>2]=i;te(f);f=0;Ra=H;return f|0}while(0);i=c[i>>2]|0;if(!i){f=j;Ra=H;return f|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);f=j;Ra=H;return f|0}else{f=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);f=j;Ra=H;return f|0}return 0}function Kb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=Ra;Ra=Ra+80|0;g=h+48|0;e=h+24|0;a=h;f=h+68|0;if((Wa[c[2532>>2]&127](b)|0)==-1){g=uu()|0;if((c[g>>2]|0)==2){g=5898;Ra=h;return g|0}f=uu()|0;f=c[f>>2]|0;g=dv(f)|0;c[a>>2]=38695;c[a+4>>2]=f;c[a+8>>2]=31800;c[a+12>>2]=(b|0)==0?59952:b;c[a+16>>2]=g;Db(2570,31953,a);g=2570;Ra=h;return g|0}if(!(d&1)){g=0;Ra=h;return g|0}if(!(Xa[c[2544>>2]&255](b,f)|0)){if(!(zv(c[f>>2]|0)|0))a=0;else{d=uu()|0;d=c[d>>2]|0;a=dv(d)|0;c[e>>2]=38705;c[e+4>>2]=d;c[e+8>>2]=32138;c[e+12>>2]=(b|0)==0?59952:b;c[e+16>>2]=a;Db(1290,31953,e);a=1290}if(Wa[c[2352>>2]&127](c[f>>2]|0)|0){d=uu()|0;d=c[d>>2]|0;f=dv(d)|0;c[g>>2]=38707;c[g+4>>2]=d;c[g+8>>2]=31695;c[g+12>>2]=59952;c[g+16>>2]=f;Db(4106,31953,g)}}else a=0;g=a;Ra=h;return g|0}function Lb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=Ra;Ra=Ra+80|0;a=f;if(!d){d=(Xa[c[2388>>2]&255](b,a)|0)==0;c[e>>2]=d&(c[a+36>>2]|0)>0&1;Ra=f;return 0}else{d=(Xa[c[2364>>2]&255](b,6)|0)==0&1;c[e>>2]=d;Ra=f;return 0}return 0}function Mb(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,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;B=Ra;Ra=Ra+256|0;z=B+168|0;y=B+152|0;x=B+128|0;w=B+112|0;u=B+96|0;t=B+72|0;s=B+56|0;r=B+40|0;v=B+16|0;q=B;l=B+172|0;m=l+12|0;n=e+-1|0;o=e+-2|0;p=(f|0)==0;b=0;g=1;while(1){if(!(Xa[c[2664>>2]&255](d,l)|0))if((c[m>>2]&61440|0)==40960){if(!b){b=nb(e)|0;if(!b){b=0;d=7;C=34;break}else j=g}else if((g|0)>99){C=9;break}else j=g+1|0;g=Ya[c[2652>>2]&127](d,b,n)|0;if((g|0)<0){C=11;break}do if((a[b>>0]|0)!=47){a:do if((d|0)!=0?(A=(Eu(d)|0)&1073741823,(A|0)!=0):0){h=A;while(1){i=h+-1|0;if((a[d+i>>0]|0)==47)break a;if((h|0)>1)h=i;else{h=i;break}}}else h=0;while(0);i=h+g|0;if((i|0)<(e|0)){fw(b+h|0,b|0,g+1|0)|0;ew(b|0,d|0,h|0)|0;g=i;d=0;break}else{c[u>>2]=31984;c[u+4>>2]=38842;c[u+8>>2]=31517;Db(14,32001,u);d=14;break}}else d=0;while(0);a[b+g>>0]=0;k=b;g=j;i=0}else{k=d;d=0;i=1}else{k=uu()|0;if((c[k>>2]|0)==2){k=d;d=0;i=1}else{C=4;break}}if((d|0)!=0|(k|0)==(f|0)){if(i){C=36;break}}else{d=(k|0)==0;if(d)h=0;else h=(Eu(k)|0)&1073741823;if((a[k>>0]|0)==47)d=0;else{if(!(Xa[c[2376>>2]&255](f,o)|0)){C=27;break}if(p)d=0;else d=(Eu(f)|0)&1073741823;a[f+d>>0]=47;d=d+1|0}if((d+h|0)>=(e|0)){C=32;break}c[z>>2]=k;Cb(e-d|0,f+d|0,31408,z)|0;if(i){d=0;C=36;break}else d=0}if(!d)d=f;else break}if((C|0)==4){c[q>>2]=31984;c[q+4>>2]=38819;c[q+8>>2]=31517;Db(14,32001,q);f=uu()|0;f=c[f>>2]|0;A=dv(f)|0;c[v>>2]=38819;c[v+4>>2]=f;c[v+8>>2]=31888;c[v+12>>2]=(d|0)==0?59952:d;c[v+16>>2]=A;Db(14,31953,v);d=14;C=36}else if((C|0)==9){c[r>>2]=31984;c[r+4>>2]=38830;c[r+8>>2]=31517;Db(14,32001,r);d=14;C=34}else if((C|0)==11){c[s>>2]=31984;c[s+4>>2]=38836;c[s+8>>2]=31517;Db(14,32001,s);f=uu()|0;f=c[f>>2]|0;A=dv(f)|0;c[t>>2]=38836;c[t+4>>2]=f;c[t+8>>2]=31879;c[t+12>>2]=(d|0)==0?59952:d;c[t+16>>2]=A;Db(14,31953,t);d=14;C=34}else if((C|0)==27){c[w>>2]=31984;c[w+4>>2]=38762;c[w+8>>2]=31517;Db(14,32001,w);f=uu()|0;f=c[f>>2]|0;A=dv(f)|0;c[x>>2]=38762;c[x+4>>2]=f;c[x+8>>2]=31708;c[x+12>>2]=d?59952:k;c[x+16>>2]=A;Db(14,31953,x);d=14;C=34}else if((C|0)==32){a[f+d>>0]=0;c[y>>2]=31984;c[y+4>>2]=38771;c[y+8>>2]=31517;Db(14,32001,y);d=14;C=34}if(!b){Ra=B;return d|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);Ra=B;return d|0}else{C=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-C;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);Ra=B;return d|0}return 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;i=Ra;Ra=Ra+32|0;h=i+8|0;g=i;b=i+28|0;gw(e|0,0,d|0)|0;f=Ju()|0;c[14796]=f;while(1){f=Ya[c[2340>>2]&127](32144,524288,420)|0;if((f|0)<0){f=uu()|0;if((c[f>>2]|0)!=4){j=8;break}}else{if((f|0)>2)break;Wa[c[2352>>2]&127](f)|0;c[g>>2]=32144;c[g+4>>2]=f;Db(28,31900,g);if((Ya[c[2340>>2]&127](31943,0,0)|0)<0){j=8;break}}}if((j|0)==8){La(b|0)|0;j=c[b>>2]|0;a[e>>0]=j;a[e+1>>0]=j>>8;a[e+2>>0]=j>>16;a[e+3>>0]=j>>24;j=e+4|0;e=c[14796]|0;a[j>>0]=e;a[j+1>>0]=e>>8;a[j+2>>0]=e>>16;a[j+3>>0]=e>>24;j=8;Ra=i;return j|0}do{if((Ya[c[2436>>2]&127](f,e,d)|0)>=0)break;j=uu()|0}while((c[j>>2]|0)==4);if(!(Wa[c[2352>>2]&127](f)|0)){j=d;Ra=i;return j|0}e=uu()|0;e=c[e>>2]|0;j=dv(e)|0;c[h>>2]=38966;c[h+4>>2]=e;c[h+8>>2]=31695;c[h+12>>2]=59952;c[h+16>>2]=j;Db(4106,31953,h);j=d;Ra=i;return j|0}function Ob(a,b){a=a|0;b=b|0;b=(b+999999|0)/1e6|0;Av(b)|0;return b*1e6|0}function Pb(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,h=0;a=Ra;Ra=Ra+16|0;e=a;Da(e|0,0)|0;h=c[e>>2]|0;h=Yv(h|0,((h|0)<0)<<31>>31|0,1e3,0)|0;h=Sv(h|0,L()|0,1045635584,49096)|0;f=L()|0;e=(c[e+4>>2]|0)/1e3|0;e=Sv(h|0,f|0,e|0,((e|0)<0)<<31>>31|0)|0;d=(+(e>>>0)+4294967296.0*+(L()|0))/864.0e5;g[b>>3]=d;Ra=a;return 0}function Qb(a,b,d){a=a|0;b=b|0;d=d|0;d=uu()|0;return c[d>>2]|0}function Rb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;a=Ra;Ra=Ra+16|0;e=a;Da(e|0,0)|0;f=c[e>>2]|0;f=Yv(f|0,((f|0)<0)<<31>>31|0,1e3,0)|0;f=Sv(f|0,L()|0,1045635584,49096)|0;d=L()|0;e=(c[e+4>>2]|0)/1e3|0;e=Sv(f|0,d|0,e|0,((e|0)<0)<<31>>31|0)|0;d=L()|0;c[b>>2]=e;c[b+4>>2]=d;Ra=a;return 0}function Sb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(b|0){do if(Bu(b,c[584]|0)|0)if(Bu(b,c[587]|0)|0)if(Bu(b,c[590]|0)|0)if(Bu(b,c[593]|0)|0)if(Bu(b,c[596]|0)|0)if(Bu(b,c[599]|0)|0)if(Bu(b,c[602]|0)|0)if(Bu(b,c[605]|0)|0)if(Bu(b,c[608]|0)|0)if(Bu(b,c[611]|0)|0)if(Bu(b,c[614]|0)|0)if(Bu(b,c[617]|0)|0)if(Bu(b,c[620]|0)|0)if(Bu(b,c[623]|0)|0)if(Bu(b,c[626]|0)|0)if(Bu(b,c[629]|0)|0)if(!(Bu(b,c[632]|0)|0))e=16;else{if(!(Bu(b,c[635]|0)|0)){e=17;break}if(!(Bu(b,c[638]|0)|0)){e=18;break}if(!(Bu(b,c[641]|0)|0)){e=19;break}if(!(Bu(b,c[644]|0)|0)){e=20;break}if(!(Bu(b,c[647]|0)|0)){e=21;break}if(!(Bu(b,c[650]|0)|0)){e=22;break}if(!(Bu(b,c[653]|0)|0)){e=23;break}if(!(Bu(b,c[656]|0)|0)){e=24;break}if(!(Bu(b,c[659]|0)|0)){e=25;break}if(!(Bu(b,c[662]|0)|0)){e=26;break}if(!(Bu(b,c[665]|0)|0)){e=27;break}if(!(Bu(b,c[668]|0)|0)){e=28;break}else a=12;return a|0}else e=15;else e=14;else e=13;else e=12;else e=11;else e=10;else e=9;else e=8;else e=7;else e=6;else e=5;else e=4;else e=3;else e=2;else e=1;else e=0;while(0);b=2336+(e*12|0)+8|0;a=c[b>>2]|0;if(!a){a=c[2336+(e*12|0)+4>>2]|0;c[b>>2]=a}c[2336+(e*12|0)+4>>2]=(d|0)==0?a:d;d=0;return d|0}a=c[586]|0;if(a|0)c[585]=a;a=c[589]|0;if(a|0)c[588]=a;a=c[592]|0;if(a|0)c[591]=a;a=c[595]|0;if(a|0)c[594]=a;a=c[598]|0;if(a|0)c[597]=a;a=c[601]|0;if(a|0)c[600]=a;a=c[604]|0;if(a|0)c[603]=a;a=c[607]|0;if(a|0)c[606]=a;a=c[610]|0;if(a|0)c[609]=a;a=c[613]|0;if(a|0)c[612]=a;a=c[616]|0;if(a|0)c[615]=a;a=c[619]|0;if(a|0)c[618]=a;a=c[622]|0;if(a|0)c[621]=a;a=c[625]|0;if(a|0)c[624]=a;a=c[628]|0;if(a|0)c[627]=a;a=c[631]|0;if(a|0)c[630]=a;a=c[634]|0;if(a|0)c[633]=a;a=c[637]|0;if(a|0)c[636]=a;a=c[640]|0;if(a|0)c[639]=a;a=c[643]|0;if(a|0)c[642]=a;a=c[646]|0;if(a|0)c[645]=a;a=c[649]|0;if(a|0)c[648]=a;a=c[652]|0;if(a|0)c[651]=a;a=c[655]|0;if(a|0)c[654]=a;a=c[658]|0;if(a|0)c[657]=a;a=c[661]|0;if(a|0)c[660]=a;a=c[664]|0;if(a|0)c[663]=a;a=c[667]|0;if(a|0)c[666]=a;a=c[670]|0;if(!a){d=0;return d|0}c[669]=a;d=0;return d|0}function Tb(a,b){a=a|0;b=b|0;do if(Bu(b,c[584]|0)|0)if(Bu(b,c[587]|0)|0)if(Bu(b,c[590]|0)|0)if(Bu(b,c[593]|0)|0)if(Bu(b,c[596]|0)|0)if(Bu(b,c[599]|0)|0)if(Bu(b,c[602]|0)|0)if(Bu(b,c[605]|0)|0)if(Bu(b,c[608]|0)|0)if(Bu(b,c[611]|0)|0)if(Bu(b,c[614]|0)|0)if(Bu(b,c[617]|0)|0)if(Bu(b,c[620]|0)|0)if(Bu(b,c[623]|0)|0)if(Bu(b,c[626]|0)|0)if(Bu(b,c[629]|0)|0)if(Bu(b,c[632]|0)|0)if(Bu(b,c[635]|0)|0)if(!(Bu(b,c[638]|0)|0))a=18;else{if(!(Bu(b,c[641]|0)|0)){a=19;break}if(!(Bu(b,c[644]|0)|0)){a=20;break}if(!(Bu(b,c[647]|0)|0)){a=21;break}if(!(Bu(b,c[650]|0)|0)){a=22;break}if(!(Bu(b,c[653]|0)|0)){a=23;break}if(!(Bu(b,c[656]|0)|0)){a=24;break}if(!(Bu(b,c[659]|0)|0)){a=25;break}if(!(Bu(b,c[662]|0)|0)){a=26;break}if(!(Bu(b,c[665]|0)|0)){a=27;break}if(!(Bu(b,c[668]|0)|0)){a=28;break}else a=0;return a|0}else a=17;else a=16;else a=15;else a=14;else a=13;else a=12;else a=11;else a=10;else a=9;else a=8;else a=7;else a=6;else a=5;else a=4;else a=3;else a=2;else a=1;else a=0;while(0);b=c[2336+(a*12|0)+4>>2]|0;return b|0}function Ub(a,b){a=a|0;b=b|0;var d=0;do if(b)if(Bu(b,c[584]|0)|0)if(Bu(b,c[587]|0)|0)if(Bu(b,c[590]|0)|0)if(Bu(b,c[593]|0)|0)if(Bu(b,c[596]|0)|0)if(Bu(b,c[599]|0)|0)if(Bu(b,c[602]|0)|0)if(Bu(b,c[605]|0)|0)if(Bu(b,c[608]|0)|0)if(Bu(b,c[611]|0)|0)if(Bu(b,c[614]|0)|0)if(Bu(b,c[617]|0)|0)if(Bu(b,c[620]|0)|0)if(Bu(b,c[623]|0)|0)if(Bu(b,c[626]|0)|0)if(Bu(b,c[629]|0)|0)if(Bu(b,c[632]|0)|0)if(!(Bu(b,c[635]|0)|0))a=17;else{if(!(Bu(b,c[638]|0)|0)){a=18;break}if(!(Bu(b,c[641]|0)|0)){a=19;break}if(!(Bu(b,c[644]|0)|0)){a=20;break}if(!(Bu(b,c[647]|0)|0)){a=21;break}if(!(Bu(b,c[650]|0)|0)){a=22;break}if(!(Bu(b,c[653]|0)|0)){a=23;break}if(!(Bu(b,c[656]|0)|0)){a=24;break}if(!(Bu(b,c[659]|0)|0)){a=25;break}if(!(Bu(b,c[662]|0)|0)){a=26;break}if(!(Bu(b,c[665]|0)|0)){a=27;break}else a=0;return a|0}else a=16;else a=15;else a=14;else a=13;else a=12;else a=11;else a=10;else a=9;else a=8;else a=7;else a=6;else a=5;else a=4;else a=3;else a=2;else a=1;else a=0;else a=-1;while(0);while(1){b=a;a=a+1|0;if(c[2336+(a*12|0)+4>>2]|0)break;if((b|0)>=27){a=0;d=8;break}}if((d|0)==8)return a|0;d=c[2336+(a*12|0)>>2]|0;return d|0}function Vb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=Ra;Ra=Ra+16|0;f=g;c[a+64>>2]=b;Le(a,b);if(!d){Xb(a,b);Ra=g;return}b=a+260|0;if((c[b>>2]|0)==0?(h=wd(a)|0,c[b>>2]=h,(h|0)==0):0){Ra=g;return}c[f>>2]=e;a=Me(a,d,f)|0;b=c[b>>2]|0;if(b|0)yc(b,a,-1,1,116)|0;Ra=g;return}function Wb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=Sv(a|0,b|0,-1,-1)|0;d=L()|0;if(d>>>0>0|(d|0)==0&e>>>0>2147483390){e=0;return e|0}if(!(c[7324]|0)){b=Wa[c[29340>>2]&127](a)|0;if(!b){e=0;return e|0}}else{b=Wa[c[29356>>2]&127](a)|0;if((c[14985]|0)>>>0>>0)c[14985]=a;e=59064;d=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&d>>>0>0){f=c[14978]|0;e=Tv(d|0,e|0,b|0,((b|0)<0)<<31>>31|0)|0;d=L()|0;c[14768]=((d|0)<0|(d|0)==0&e>>>0<=f>>>0)&1}b=Wa[c[29340>>2]&127](b)|0;if(!b){f=0;return f|0}d=Wa[c[29352>>2]&127](b)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0)c[14987]=d}gw(b|0,0,a|0)|0;f=b;return f|0}function Xb(a,b){a=a|0;b=b|0;c[a+64>>2]=b;if(b|0){Ne(a,b);return}if(!(c[a+260>>2]|0))return;Ne(a,0);return}function Yb(d,e){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,D=0,E=0,F=0;F=Ra;Ra=Ra+16|0;v=F;D=d+24|0;i=c[D>>2]|0;h=c[i+4>>2]|0;c[h+4>>2]=c[i>>2];E=d+28|0;g=c[E>>2]|0;switch(g|0){case 6:case 0:case 5:break;default:{E=g;Ra=F;return E|0}}u=c[h>>2]|0;x=d+4|0;w=c[c[(c[x>>2]|0)+4>>2]>>2]|0;if((c[d>>2]|0)!=0?(a[h+20>>0]|0)==2:0){C=0;g=5}else if(!(a[i+8>>0]|0)){C=1;g=Zb(i,0,0)|0}else{C=0;g=0}o=d+12|0;if((c[o>>2]|g|0)==0?(t=c[x>>2]|0,j=c[(c[(c[D>>2]|0)+4>>2]|0)+32>>2]|0,p=c[t+4>>2]|0,c[p+4>>2]=c[t>>2],(b[p+22>>1]&2)==0):0){k=p+32|0;l=p+36|0;m=(c[k>>2]|0)-(c[l>>2]|0)|0;if(((j+-512|0)>>>0<65025?(j+-1&j|0)==0:0)?(c[k>>2]=j,q=p+80|0,n=c[q>>2]|0,n|0):0){i=n+-4|0;c[q>>2]=i;h=i;do if((c[14816]|0)>>>0<=h>>>0)if((c[14817]|0)>>>0>h>>>0){c[14979]=(c[14979]|0)+-1;c[i>>2]=c[14819];c[14819]=i;t=(c[14820]|0)+1|0;c[14820]=t;c[14821]=(t|0)<(c[14815]|0)&1;break}else{h=Wa[c[29352>>2]&127](i)|0;B=16;break}else{h=Wa[c[29352>>2]&127](i)|0;B=16}while(0);do if((B|0)==16){c[14980]=(c[14980]|0)-h;if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{t=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);c[q>>2]=0}t=Se(c[p>>2]|0,k,m)|0;c[l>>2]=(c[k>>2]|0)-(m&65535);if((t|0)==7)g=7;else B=21}else B=21;if((B|0)==21)if(!g)if(!(c[o>>2]|0)){g=Zb(c[x>>2]|0,2,d+8|0)|0;if(!g){c[o>>2]=1;g=0}}else g=0;l=c[(c[D>>2]|0)+4>>2]|0;t=c[l+32>>2]|0;n=c[(c[x>>2]|0)+4>>2]|0;s=c[n+32>>2]|0;n=(a[(c[n>>2]|0)+5>>0]|0)==5;g=(t|0)==(s|0)|(g|0)==0&n^1?g:8;l=c[l+44>>2]|0;a:do if(e){j=d+16|0;k=u+204|0;i=0;h=c[j>>2]|0;do{if(!((g|0)==0&h>>>0<=l>>>0))break a;if((h|0)==((1073741824/((c[(c[(c[D>>2]|0)+4>>2]|0)+32>>2]|0)>>>0)|0)+1|0))g=0;else{g=Za[c[k>>2]&127](u,h,v,2)|0;do if(!g){g=_b(d,h,c[(c[v>>2]|0)+4>>2]|0,0)|0;h=c[v>>2]|0;if(h)if(!(b[h+28>>1]&32)){Df(h);break}else{q=c[h+20>>2]|0;p=q+120|0;c[p>>2]=(c[p>>2]|0)+-1;q=q+136|0;c[h+16>>2]=c[q>>2];c[q>>2]=h;break}}while(0);h=c[j>>2]|0}h=h+1|0;c[j>>2]=h;i=i+1|0}while(i>>>0>>0)}while(0);switch(g|0){case 0:{c[d+36>>2]=l;e=c[d+16>>2]|0;c[d+32>>2]=l+1-e;if(e>>>0<=l>>>0){f=d+40|0;if(!(c[f>>2]|0)){A=(c[c[(c[D>>2]|0)+4>>2]>>2]|0)+88|0;c[d+44>>2]=c[A>>2];c[A>>2]=d;c[f>>2]=1;f=0}else f=0}else B=40;break}case 101:{B=40;break}default:f=g}b:do if((B|0)==40){if(!l){e=c[x>>2]|0;g=c[e+4>>2]|0;c[g+4>>2]=c[e>>2];c[g+44>>2]=0;g=Rf(g)|0;switch(g|0){case 0:case 101:{m=1;break}default:{f=g;break b}}}else m=l;i=c[x>>2]|0;h=(c[d+8>>2]|0)+1|0;j=c[i+4>>2]|0;c[j+4>>2]=c[i>>2];j=c[j+12>>2]|0;i=c[j+56>>2]|0;j=c[j+72>>2]|0;k=c[j+20>>2]|0;if((b[j+28>>1]&4)!=0?(c[k+24>>2]|0)>>>0>=(c[j+24>>2]|0)>>>0:0){if(c[k+96>>2]|0){r=Ve(j)|0;B=50}}else B=46;do if((B|0)==46){g=c[k+40>>2]|0;if(g|0){f=g;break b}if((c[k+148>>2]|0)>>>0>(c[k+152>>2]|0)>>>0){r=Wf(j)|0;B=50;break}else{r=Xf(j)|0;B=50;break}}while(0);if((B|0)==50?r|0:0){f=r;break}a[i+40>>0]=h>>>24;a[i+41>>0]=h>>>16;a[i+42>>0]=h>>>8;a[i+43>>0]=h;g=c[d>>2]|0;if(g|0)$b(g);c:do if(n){i=c[x>>2]|0;g=c[i+4>>2]|0;l=g+22|0;b[l>>1]=b[l>>1]&-33;h=Zb(i,0,0)|0;d:do if(!h){h=g+12|0;j=c[(c[h>>2]|0)+56>>2]|0;k=j+18|0;if(!((a[k>>0]|0)==2?(a[j+19>>0]|0)==2:0)){g=Zb(i,2,0)|0;if(g|0){f=g;break}g=c[(c[h>>2]|0)+72>>2]|0;h=c[g+20>>2]|0;if((b[g+28>>1]&4)!=0?(c[h+24>>2]|0)>>>0>=(c[g+24>>2]|0)>>>0:0){if(c[h+96>>2]|0){f=Ve(g)|0;B=66}}else B=62;do if((B|0)==62){f=c[h+40>>2]|0;if(f|0)break d;if((c[h+148>>2]|0)>>>0>(c[h+152>>2]|0)>>>0){f=Wf(g)|0;B=66;break}else{f=Xf(g)|0;B=66;break}}while(0);if((B|0)==66?f|0:0)break;a[k>>0]=2;a[j+19>>0]=2}b[l>>1]=b[l>>1]&-33;break c}else f=h;while(0);b[l>>1]=b[l>>1]&-33;break b}while(0);if((t|0)<(s|0)){f=(s|0)/(t|0)|0;f=(m+-1+f|0)/(f|0)|0;g=c[(c[(c[x>>2]|0)+4>>2]|0)+32>>2]|0;f=f+(((f|0)==((1073741824/(g>>>0)|0)+1|0))<<31>>31)|0;n=((t|0)<0)<<31>>31;o=Yv(m|0,((m|0)<0)<<31>>31|0,t|0,n|0)|0;p=L()|0;q=w+60|0;m=c[q>>2]|0;j=c[w+24>>2]|0;if(f>>>0<=j>>>0){k=w+204|0;i=f;f=0;h=1073741824;while(1){if((i|0)!=(((h>>>0)/(g>>>0)|0)+1|0)){f=Za[c[k>>2]&127](w,i,v,0)|0;do if(!f){g=c[v>>2]|0;h=c[g+20>>2]|0;do if((b[g+28>>1]&4)!=0?(c[h+24>>2]|0)>>>0>=(c[g+24>>2]|0)>>>0:0){if(!(c[h+96>>2]|0)){f=0;break}f=Ve(g)|0}else B=79;while(0);do if((B|0)==79){B=0;f=c[h+40>>2]|0;if(!f)if((c[h+148>>2]|0)>>>0>(c[h+152>>2]|0)>>>0){f=Wf(g)|0;break}else{f=Xf(g)|0;break}}while(0);g=c[v>>2]|0;if(g)if(!(b[g+28>>1]&32)){Df(g);break}else{d=c[g+20>>2]|0;r=d+120|0;c[r>>2]=(c[r>>2]|0)+-1;d=d+136|0;c[g+16>>2]=c[d>>2];c[d>>2]=g;break}}while(0)}g=i+1|0;h=(f|0)==0;if(g>>>0>j>>>0|h^1)break;i=g;h=1073741824;g=c[(c[(c[x>>2]|0)+4>>2]|0)+32>>2]|0}if(h)B=91}else B=91;if((B|0)==91)f=ac(w,0,1)|0;k=1073741824+s|0;l=((k|0)<0)<<31>>31;h=(p|0)>(l|0)|(p|0)==(l|0)&o>>>0>k>>>0;k=h?k:o;l=h?l:p;h=1073741824+t|0;i=((h|0)<0)<<31>>31;g=(f|0)==0;if(((l|0)>(i|0)|(l|0)==(i|0)&k>>>0>h>>>0)&g){j=u+204|0;do{c[v>>2]=0;f=Wv(h|0,i|0,t|0,n|0)|0;L()|0;f=Za[c[j>>2]&127](u,f+1|0,v,0)|0;if(!f)f=_a[c[(c[m>>2]|0)+12>>2]&127](m,c[(c[v>>2]|0)+4>>2]|0,t,h,i)|0;g=c[v>>2]|0;do if(g|0)if(!(b[g+28>>1]&32)){Df(g);break}else{s=c[g+20>>2]|0;d=s+120|0;c[d>>2]=(c[d>>2]|0)+-1;s=s+136|0;c[g+16>>2]=c[s>>2];c[s>>2]=g;break}while(0);h=Sv(h|0,i|0,t|0,n|0)|0;i=L()|0;g=(f|0)==0}while(((i|0)<(l|0)|(i|0)==(l|0)&h>>>0>>0)&g)}if(!g)break;f=Xa[c[(c[m>>2]|0)+24>>2]&255](m,v)|0;u=c[v+4>>2]|0;if((f|0)==0&((u|0)>(p|0)|((u|0)==(p|0)?(c[v>>2]|0)>>>0>o>>>0:0)))f=Ya[c[(c[m>>2]|0)+16>>2]&127](m,o,p)|0;if(f|0)break;f=c[q>>2]|0;g=c[f>>2]|0;if(g|0){f=Ya[c[g+40>>2]&127](f,21,0)|0;switch(f|0){case 0:case 12:break;default:break b}}if((a[w+7>>0]|0)==0?(z=c[q>>2]|0,A=a[w+10>>0]|0,A<<24>>24):0){y=Xa[c[(c[z>>2]|0)+20>>2]&255](z,A&255)|0;B=111}}else{y=G((t|0)/(s|0)|0,m)|0;c[w+24>>2]=y;y=ac(w,0,0)|0;B=111}if((B|0)==111?y|0:0){f=y;break}f=bc(c[x>>2]|0,0)|0;f=(f|0)==0?101:f}while(0);if(C|0){cc(c[D>>2]|0,0)|0;bc(c[D>>2]|0,0)|0}D=(f|0)==3082?7:f;c[E>>2]=D;E=D;Ra=F;return E|0}function Zb(e,f,g){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,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;X=Ra;Ra=Ra+16|0;Q=X;K=X+12|0;W=c[e+4>>2]|0;m=c[e>>2]|0;P=W+4|0;c[P>>2]=m;U=e+8|0;n=a[U>>0]|0;do if(n<<24>>24!=2?(R=(f|0)!=0,R|n<<24>>24!=1):0){if(!(0==0?(c[m+32>>2]&33554432|0)==0:0)?(a[(c[W>>2]|0)+14>>0]|0)==0:0){T=W+22|0;b[T>>1]=b[T>>1]&-2}L=W+22|0;q=b[L>>1]|0;if(R&(q&1)!=0){e=8;Ra=X;return e|0}a:do if(R)if((q&128)==0&(a[W+20>>0]|0)!=2){if((f|0)>1?(o=c[W+72>>2]|0,o|0):0){m=o;do{n=c[m>>2]|0;if((n|0)!=(e|0)){p=n;J=16;break a}m=c[m+12>>2]|0}while((m|0)!=0)}}else J=10;else if(q&128)J=10;while(0);if((J|0)==10){p=c[W+76>>2]|0;J=16}if((J|0)==16?c[p>>2]|0:0){e=262;Ra=X;return e|0}I=e+9|0;b:do if(a[I>>0]|0){if(!((q&64)==0?1:(c[W+76>>2]|0)==(e|0))){e=262;Ra=X;return e|0}m=c[W+72>>2]|0;if(m|0){while(1){if(((c[m>>2]|0)!=(e|0)?(c[m+4>>2]|0)==1:0)?(a[m+8>>0]|0)!=1:0){h=262;break}m=c[m+12>>2]|0;if(!m)break b}Ra=X;return h|0}}while(0);b[L>>1]=q&-17;T=W+44|0;if(!(c[T>>2]|0))b[L>>1]=q|16;G=W+12|0;H=W+20|0;v=W+36|0;w=W+24|0;x=W+26|0;y=W+28|0;z=W+30|0;A=W+21|0;B=W+32|0;C=W+80|0;D=W+17|0;E=W+18|0;F=(f|0)<2;n=0;c:while(1){d:do if(!(c[G>>2]|0)){e:while(1){m=Sf(c[W>>2]|0)|0;if(m|0){J=135;break d}m=c[W>>2]|0;m=Za[c[m+204>>2]&127](m,1,K,0)|0;if(m|0){J=35;break}n=c[K>>2]|0;m=c[n+8>>2]|0;o=m+4|0;if((c[o>>2]|0)==1)s=c[m+56>>2]|0;else{s=c[n+4>>2]|0;c[m+56>>2]=s;c[m+72>>2]=n;c[m+52>>2]=W;c[o>>2]=1;a[m+9>>0]=100}t=m;n=d[s+29>>0]<<16|d[s+28>>0]<<24|d[s+30>>0]<<8|d[s+31>>0];u=c[W>>2]|0;r=c[u+24>>2]|0;if(!((n|0)!=0?(Lu(s+24|0,s+92|0,4)|0)==0:0))n=r;p=c[(c[P>>2]|0)+32>>2]|0;q=(p&33554432|0)==0&0==0?n:0;do if(!q){n=c[v>>2]|0;J=85}else{if(Lu(s,2720,16)|0){n=26;break e}if((d[s+18>>0]|0)>2)b[L>>1]=b[L>>1]|1;n=a[s+19>>0]|0;if((n&255)>2){n=26;break e}do if(n<<24>>24==2){if(b[L>>1]&32){J=62;break}if(a[u+12>>0]|0){J=62;break}if(c[u+216>>2]|0){J=62;break}n=c[c[u+60>>2]>>2]|0;if(a[u+13>>0]|0){n=14;break e}if(!(a[u+4>>0]|0)){if((c[n>>2]|0)<=1){n=14;break e}if(!(c[n+52>>2]|0)){n=14;break e}}n=c[u+64>>2]|0;o=c[n>>2]|0;if(o|0){Wa[c[o+4>>2]&127](n)|0;c[n>>2]=0}n=Uf(u)|0;if(n|0)break e;a[u+5>>0]=5;a[u+16>>0]=0;u=c[m+72>>2]|0;m=c[u+20>>2]|0;Df(u);if(c[(c[m+212>>2]|0)+12>>2]|0)break;f:do switch(a[m+16>>0]|0){case 0:case 6:break;case 1:{if(a[m+4>>0]|0)break f;uf(m,0,0)|0;break}default:tf(m)|0}while(0);vf(m)}else J=62;while(0);if((J|0)==62){J=0;if(Lu(s+21|0,32387,3)|0){n=26;break e}o=d[s+17>>0]<<16|d[s+16>>0]<<8;if((o+-257|0)>>>0>65279|(o+16777215&o|0)!=0){n=26;break e}b[L>>1]=b[L>>1]|2;u=d[s+20>>0]|0;n=o-u|0;if((o|0)==(c[B>>2]|0)){if(((p&268435457|0)!=1|0!=0)&q>>>0>r>>>0){J=82;break e}if(n>>>0<480){n=26;break e}c[B>>2]=o;c[v>>2]=n;a[D>>0]=(d[s+53>>0]<<16|d[s+52>>0]<<24|d[s+54>>0]<<8|d[s+55>>0]|0)!=0&1;a[E>>0]=(d[s+65>>0]<<16|d[s+64>>0]<<24|d[s+66>>0]<<8|d[s+67>>0]|0)!=0&1;J=85;break}t=c[m+72>>2]|0;m=c[t+20>>2]|0;Df(t);if(!(c[(c[m+212>>2]|0)+12>>2]|0)){g:do switch(a[m+16>>0]|0){case 0:case 6:break;case 1:{if(a[m+4>>0]|0)break g;uf(m,0,0)|0;break}default:tf(m)|0}while(0);vf(m)}c[v>>2]=n;c[B>>2]=o;m=c[C>>2]|0;if(m|0){n=m+-4|0;c[C>>2]=n;m=n;do if((c[14816]|0)>>>0<=m>>>0)if((c[14817]|0)>>>0>m>>>0){c[14979]=(c[14979]|0)+-1;c[n>>2]=c[14819];c[14819]=n;t=(c[14820]|0)+1|0;c[14820]=t;c[14821]=(t|0)<(c[14815]|0)&1;break}else{m=Wa[c[29352>>2]&127](n)|0;J=77;break}else{m=Wa[c[29352>>2]&127](n)|0;J=77}while(0);do if((J|0)==77){J=0;c[14980]=(c[14980]|0)-m;if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{t=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);c[C>>2]=0}m=Se(c[W>>2]|0,B,u)|0;if(m|0){J=135;break d}}m=c[G>>2]|0}while(0);if((J|0)==85){J=0;u=((((n<<6)+-768|0)>>>0)/255|0)+65513|0;s=u&65535;b[w>>1]=s;r=((((n<<5)+-384|0)>>>0)/255|0)+65513&65535;b[x>>1]=r;b[y>>1]=n+65501;b[z>>1]=r;a[A>>0]=(s&65535)>127?127:u&255;c[G>>2]=t;c[T>>2]=q}if(m|0){n=0;J=96;break d}}if((J|0)==35){J=135;break}else if((J|0)==82){c[Q>>2]=32306;c[Q+4>>2]=66365;c[Q+8>>2]=31517;Db(11,32001,Q);n=11}J=c[m+72>>2]|0;m=c[J+20>>2]|0;Df(J);if(!(c[(c[m+212>>2]|0)+12>>2]|0)){switch(a[m+16>>0]|0){case 0:case 6:break;case 1:{if(!(a[m+4>>0]|0))uf(m,0,0)|0;break}default:tf(m)|0}vf(m)}c[G>>2]=0;m=n;J=135}else J=96;while(0);h:do if((J|0)==96){J=0;i:do if(R&(n|0)==0){if(b[L>>1]&1){m=8;J=135;break h}u=c[W>>2]|0;n=c[u+40>>2]|0;j:do if(!n){a[u+21>>0]=(a[(c[e>>2]|0)+80>>0]|0)==2&1;t=u+16|0;if((a[t>>0]|0)==1){p=u+216|0;m=c[p>>2]|0;k:do if(!m){s=u+17|0;m=a[s>>0]|0;l:do switch(m<<24>>24){case 0:case 1:case 5:{if(!(a[u+13>>0]|0)){n=c[u+60>>2]|0;n=Xa[c[(c[n>>2]|0)+28>>2]&255](n,2)|0;if(n|0){J=132;break j}m=a[s>>0]|0}if(m<<24>>24==5){m=5;break l}a[s>>0]=2;m=2;break}default:{}}while(0);if(!F){o=u+13|0;p=u+60|0;q=u+176|0;r=u+180|0;m:while(1){switch(m<<24>>24){case 0:case 1:case 2:case 3:case 5:break;default:break k}if(a[o>>0]|0)break;n=c[p>>2]|0;n=Xa[c[(c[n>>2]|0)+28>>2]&255](n,4)|0;switch(n|0){case 0:break m;case 5:break;default:{J=132;break j}}if(!(Wa[c[q>>2]&127](c[r>>2]|0)|0)){m=5;J=135;break h}m=a[s>>0]|0}a[s>>0]=4}}else{do if(a[u+4>>0]|0){n=m+43|0;if(a[n>>0]|0)break;o=u+17|0;n:do switch(a[o>>0]|0){case 0:case 1:case 2:case 3:case 5:{if(a[u+13>>0]|0){a[o>>0]=4;J=108;break n}n=c[u+60>>2]|0;n=Xa[c[(c[n>>2]|0)+28>>2]&255](n,4)|0;if(n|0){J=132;break j}m=c[p>>2]|0;n=m+43|0;s=a[n>>0]|0;a[o>>0]=4;if(!(s<<24>>24))J=108;break}default:J=108}while(0);if((J|0)==108){J=c[m+4>>2]|0;Za[c[(c[J>>2]|0)+56>>2]&127](J,(b[m+40>>1]|0)+3|0,1,5)|0;m=c[p>>2]|0}a[n>>0]=1}while(0);if(a[m+46>>0]|0){m=8;J=135;break h}n=m+43|0;if((a[n>>0]|0)==0?(M=c[m+4>>2]|0,M=Za[c[(c[M>>2]|0)+56>>2]&127](M,0,1,10)|0,M|0):0){n=M;J=132;break j}o=m+44|0;a[o>>0]=1;if(!(Lu(m+52|0,c[c[m+32>>2]>>2]|0,48)|0))break;if(!(a[n>>0]|0)){J=c[m+4>>2]|0;Za[c[(c[J>>2]|0)+56>>2]&127](J,0,1,9)|0}a[o>>0]=0;J=134;break j}while(0);a[t>>0]=2;J=c[u+24>>2]|0;c[u+36>>2]=J;c[u+32>>2]=J;c[u+28>>2]=J;J=u+72|0;c[J>>2]=0;c[J+4>>2]=0;J=133}else J=133}else J=132;while(0);if((J|0)==132){J=0;switch(n|0){case 0:{J=133;break}case 517:{J=134;break}default:break i}}if((J|0)==133){J=0;n=Rf(W)|0;break}else if((J|0)==134){m=(a[H>>0]|0)==0?5:517;J=135;break h}}while(0);if(!n){n=0;break c}else s=0}while(0);if((J|0)==135){J=0;n=m;s=(m|0)==0}if(((a[H>>0]|0)==0?(N=c[G>>2]|0,N|0):0)?(c[G>>2]=0,u=c[N+72>>2]|0,O=c[u+20>>2]|0,Df(u),(c[(c[O+212>>2]|0)+12>>2]|0)==0):0){switch(a[O+16>>0]|0){case 0:case 6:break;case 1:{if(!(a[O+4>>0]|0))uf(O,0,0)|0;break}default:tf(O)|0}vf(O)}if((n&255|0)!=5){J=156;break}if(a[H>>0]|0){J=156;break}o=c[P>>2]|0;m=c[(c[W>>2]|0)+60>>2]|0;p=c[o+396>>2]|0;if(!p){J=154;break}r=o+404|0;q=c[r>>2]|0;if((q|0)<0){J=154;break}if(!(a[o+408>>0]|0))m=Xa[p&255](c[o+400>>2]|0,q)|0;else m=Ya[p&127](c[o+400>>2]|0,q,m)|0;if(!m){J=153;break}c[r>>2]=(c[r>>2]|0)+1}if((J|0)==153){c[r>>2]=-1;if(!s){e=n;Ra=X;return e|0}}else if((J|0)==154){if(!s){e=n;Ra=X;return e|0}}else if((J|0)==156)if(!s){e=n;Ra=X;return e|0}if((a[U>>0]|0)==0?(Q=W+40|0,c[Q>>2]=(c[Q>>2]|0)+1,a[I>>0]|0):0){a[e+40>>0]=1;Q=W+72|0;c[e+44>>2]=c[Q>>2];c[Q>>2]=e+32}m=R?2:1;a[U>>0]=m;if((m&255)>(d[H>>0]|0))a[H>>0]=m;if(R?(S=c[G>>2]|0,c[W+76>>2]=e,h=b[L>>1]|0,b[L>>1]=(f|0)>1?h|64:h&-65,h=c[T>>2]|0,V=S+56|0,j=c[V>>2]|0,i=j+28|0,l=j+29|0,k=j+30|0,j=j+31|0,(h|0)!=(d[l>>0]<<16|d[i>>0]<<24|d[k>>0]<<8|d[j>>0]|0)):0){m=c[S+72>>2]|0;n=c[m+20>>2]|0;if((b[m+28>>1]&4)!=0?(c[n+24>>2]|0)>>>0>=(c[m+24>>2]|0)>>>0:0){if(c[n+96>>2]|0){h=Ve(m)|0;J=172}}else J=168;do if((J|0)==168){h=c[n+40>>2]|0;if(h|0){e=h;Ra=X;return e|0}if((c[n+148>>2]|0)>>>0>(c[n+152>>2]|0)>>>0){h=Wf(m)|0;J=172;break}else{h=Xf(m)|0;J=172;break}}while(0);do if((J|0)==172)if(!h){i=c[V>>2]|0;l=i+29|0;k=i+30|0;j=i+31|0;i=i+28|0;h=c[T>>2]|0;break}else{e=h;Ra=X;return e|0}while(0);a[i>>0]=h>>>24;a[l>>0]=h>>>16;a[k>>0]=h>>>8;a[j>>0]=h;break}if(n|0){e=n;Ra=X;return e|0}}while(0);if(g|0){V=c[(c[W+12>>2]|0)+56>>2]|0;c[g>>2]=d[V+41>>0]<<16|d[V+40>>0]<<24|d[V+42>>0]<<8|d[V+43>>0]}if(!f){e=0;Ra=X;return e|0}i=c[W>>2]|0;h=c[(c[e>>2]|0)+452>>2]|0;if((c[i+96>>2]|0)>=(h|0)){e=0;Ra=X;return e|0}if(!(a[i+6>>0]|0)){e=0;Ra=X;return e|0}e=Vf(i,h)|0;Ra=X;return e|0}function _b(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,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;z=Ra;Ra=Ra+16|0;w=z;x=d+4|0;q=c[(c[x>>2]|0)+4>>2]|0;v=c[q>>2]|0;u=d+24|0;r=c[(c[(c[u>>2]|0)+4>>2]|0)+32>>2]|0;q=c[q+32>>2]|0;s=(r|0)<(q|0)?r:q;t=((r|0)<0)<<31>>31;o=Yv(r|0,t|0,e|0,0)|0;p=L()|0;if((r|0)==(q|0))d=0;else d=(a[v+12>>0]|0)==0?0:8;if(!((r|0)>0&(d|0)==0)){y=d;Ra=z;return y|0}e=Tv(o|0,p|0,r|0,t|0)|0;m=((q|0)<0)<<31>>31;n=v+204|0;l=(g|0)==0;g=L()|0;d=q;while(1){c[w>>2]=0;j=Wv(e|0,g|0,q|0,m|0)|0;k=L()|0;do if((1073741824/(d>>>0)|0|0)!=(j|0)){d=Za[c[n>>2]&127](v,j+1|0,w,0)|0;a:do if(!d){h=c[w>>2]|0;i=c[h+20>>2]|0;if((b[h+28>>1]&4)!=0?(c[i+24>>2]|0)>>>0>=(c[h+24>>2]|0)>>>0:0)if(!(c[i+96>>2]|0))d=h;else{d=Ve(h)|0;y=15}else y=11;do if((y|0)==11){y=0;d=c[i+40>>2]|0;if(d|0)break a;if((c[i+148>>2]|0)>>>0>(c[i+152>>2]|0)>>>0){d=Wf(h)|0;y=15;break}else{d=Xf(h)|0;y=15;break}}while(0);if((y|0)==15){y=0;if(d|0)break;d=c[w>>2]|0}i=Zv(e|0,g|0,r|0,t|0)|0;L()|0;h=c[d+4>>2]|0;d=Yv(j|0,k|0,q|0,m|0)|0;d=Tv(e|0,g|0,d|0,L()|0)|0;L()|0;d=h+d|0;ew(d|0,f+i|0,s|0)|0;a[c[(c[w>>2]|0)+8>>2]>>0]=0;if(l&((e|0)==0&(g|0)==0)){d=d+28|0;k=c[(c[(c[u>>2]|0)+4>>2]|0)+44>>2]|0;a[d>>0]=k>>>24;a[d+1>>0]=k>>>16;a[d+2>>0]=k>>>8;a[d+3>>0]=k;d=0}else d=0}while(0);h=c[w>>2]|0;if(h)if(!(b[h+28>>1]&32)){Df(h);break}else{k=c[h+20>>2]|0;j=k+120|0;c[j>>2]=(c[j>>2]|0)+-1;k=k+136|0;c[h+16>>2]=c[k>>2];c[k>>2]=h;break}}else d=0;while(0);e=Sv(e|0,g|0,q|0,m|0)|0;g=L()|0;if(!(((g|0)<(p|0)|(g|0)==(p|0)&e>>>0>>0)&(d|0)==0))break;d=c[(c[(c[x>>2]|0)+4>>2]|0)+32>>2]|0}Ra=z;return d|0}function $b(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=a+20|0;e=c[i>>2]|0;f=(e|0)>0;if(f){g=c[a+16>>2]|0;d=0;do{h=c[g+(d<<4)+4>>2]|0;if(h|0)c[(c[h+4>>2]|0)+4>>2]=c[h>>2];d=d+1|0}while((d|0)!=(e|0));if(f){h=a+16|0;d=a+56|0;g=0;do{f=c[(c[h>>2]|0)+(g<<4)+12>>2]|0;do if(f)if(!(c[d>>2]|0)){dh(f);e=c[i>>2]|0;break}else{f=f+78|0;b[f>>1]=b[f>>1]|8;break}while(0);g=g+1|0}while((g|0)<(e|0))}else j=7}else j=7;if((j|0)==7)d=a+56|0;j=a+24|0;c[j>>2]=c[j>>2]&-18;Ti(a);if(c[d>>2]|0)return;Ui(a);return}function ac(e,f,g){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,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=Ra;Ra=Ra+16|0;z=C+8|0;r=C;h=c[e+40>>2]|0;if(h|0){e=h;Ra=C;return e|0}h=c[7389]|0;if(h|0?Wa[h&127](400)|0:0){e=10;Ra=C;return e|0}B=e+16|0;if((d[B>>0]|0)<3){e=0;Ra=C;return e|0}do if(a[e+12>>0]|0){if(c[c[e+60>>2]>>2]|0){i=c[e+212>>2]|0;h=c[i+16>>2]|0;if((h|0)<=-1){n=Yv(h|0,((h|0)<0)<<31>>31|0,-1024,-1)|0;p=L()|0;h=(c[i+28>>2]|0)+(c[i+24>>2]|0)|0;h=Wv(n|0,p|0,h|0,((h|0)<0)<<31>>31|0)|0;L()|0}i=c[i>>2]|0;if(!i){i=0;j=0}else{j=0;do{j=j+1|0;i=c[i+32>>2]|0}while((i|0)!=0);i=Yv(j|0,0,100,0)|0;j=L()|0}if(h|0?(p=Wv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0,L()|0,(p|0)>=25):0){A=18;break}}h=c[e+88>>2]|0;if(h|0)do{c[h+16>>2]=1;h=c[h+44>>2]|0}while((h|0)!=0)}else A=18;while(0);do if((A|0)==18){if(!(c[e+216>>2]|0)){k=e+18|0;if((a[k>>0]|0)==0?c[e+24>>2]|0:0){h=Za[c[e+204>>2]&127](e,1,z,0)|0;a:do if(!h){j=c[z>>2]|0;i=c[j+20>>2]|0;if((b[j+28>>1]&4)!=0?(c[i+24>>2]|0)>>>0>=(c[j+24>>2]|0)>>>0:0)if(!(c[i+96>>2]|0))h=j;else{h=Ve(j)|0;A=53}else A=49;do if((A|0)==49){h=c[i+40>>2]|0;if(h|0)break a;if((c[i+148>>2]|0)>>>0>(c[i+152>>2]|0)>>>0){h=Wf(j)|0;A=53;break}else{h=Xf(j)|0;A=53;break}}while(0);if((A|0)==53){if(h|0)break;h=c[z>>2]|0;i=c[h+20>>2]|0}o=(d[i+105>>0]<<16|d[i+104>>0]<<24|d[i+106>>0]<<8|d[i+107>>0])+1|0;h=h+4|0;p=c[h>>2]|0;l=o>>>24&255;a[p+24>>0]=l;m=o>>>16&255;a[p+25>>0]=m;n=o>>>8&255;a[p+26>>0]=n;o=o&255;a[p+27>>0]=o;p=c[h>>2]|0;a[p+92>>0]=l;a[p+93>>0]=m;a[p+94>>0]=n;a[p+95>>0]=o;h=c[h>>2]|0;a[h+96>>0]=0;a[h+97>>0]=46;a[h+98>>0]=52;a[h+99>>0]=32;a[k>>0]=1;h=0}while(0);i=c[z>>2]|0;do if(i|0)if(!(b[i+28>>1]&32)){Df(i);break}else{p=c[i+20>>2]|0;o=p+120|0;c[o>>2]=(c[o>>2]|0)+-1;p=p+136|0;c[i+16>>2]=c[p>>2];c[p>>2]=i;break}while(0);if(h|0){e=h;Ra=C;return e|0}}b:do if(((f|0)!=0?(a[e+5>>0]|0)!=4:0)?(s=e+64|0,q=c[s>>2]|0,(c[q>>2]|0)!=0):0){a[e+19>>0]=1;h=a[f>>0]|0;if(!(h<<24>>24)){i=0;j=0}else{j=0;i=0;do{i=i+(h<<24>>24)|0;j=j+1|0;h=a[f+j>>0]|0}while(h<<24>>24!=0)}p=e+72|0;k=p;h=c[k>>2]|0;k=c[k+4>>2]|0;if(!(a[e+8>>0]|0))l=h;else{if((h|0)==0&(k|0)==0){h=0;k=0}else{o=Sv(h|0,k|0,-1,-1)|0;k=L()|0;h=c[e+148>>2]|0;k=Wv(o|0,k|0,h|0,0)|0;k=Sv(k|0,L()|0,1,0)|0;h=Yv(k|0,L()|0,h|0,0)|0;k=L()|0}l=p;c[l>>2]=h;c[l+4>>2]=k;l=h}h=(1073741824/(c[e+152>>2]|0)|0)+1|0;a[z>>0]=h>>>24;m=z+1|0;a[m>>0]=h>>>16;n=z+2|0;a[n>>0]=h>>>8;o=z+3|0;a[o>>0]=h;h=_a[c[(c[q>>2]|0)+12>>2]&127](q,z,4,l,k)|0;do if(!h){h=c[s>>2]|0;k=Sv(l|0,k|0,4,0)|0;l=L()|0;h=_a[c[(c[h>>2]|0)+12>>2]&127](h,f,j,k,l)|0;if(!h){h=c[s>>2]|0;k=Sv(k|0,l|0,j|0,0)|0;l=L()|0;a[z>>0]=j>>>24;a[m>>0]=j>>>16;a[n>>0]=j>>>8;a[o>>0]=j;h=_a[c[(c[h>>2]|0)+12>>2]&127](h,z,4,k,l)|0;if(!h){D=c[s>>2]|0;q=Sv(k|0,l|0,4,0)|0;h=L()|0;a[z>>0]=i>>>24;a[m>>0]=i>>>16;a[n>>0]=i>>>8;a[o>>0]=i;h=_a[c[(c[D>>2]|0)+12>>2]&127](D,z,4,q,h)|0;if(!h){q=c[s>>2]|0;D=Sv(k|0,l|0,8,0)|0;h=L()|0;h=_a[c[(c[q>>2]|0)+12>>2]&127](q,32352,8,D,h)|0;if(!h){q=p;q=Sv(c[q>>2]|0,c[q+4>>2]|0,j+20|0,0)|0;D=L()|0;h=p;c[h>>2]=q;c[h+4>>2]=D;h=c[s>>2]|0;h=Xa[c[(c[h>>2]|0)+24>>2]&255](h,r)|0;if(h|0)break;D=r;r=c[D+4>>2]|0;i=p;h=c[i>>2]|0;i=c[i+4>>2]|0;if(!((r|0)>(i|0)|((r|0)==(i|0)?(c[D>>2]|0)>>>0>h>>>0:0))){A=79;break b}D=c[s>>2]|0;h=Ya[c[(c[D>>2]|0)+16>>2]&127](D,h,i)|0;if(!h)break b;Ra=C;return h|0}}}}}while(0);D=h;Ra=C;return D|0}else A=79;while(0);h=Xe(e,0)|0;if(h|0){D=h;Ra=C;return D|0}h=e+212|0;i=Ye(e,Cf(c[h>>2]|0)|0)|0;if(i|0){D=i;Ra=C;return D|0}o=c[h>>2]|0;h=c[o>>2]|0;if(h|0)do{n=c[h+12>>2]|0;i=n+8|0;j=h+36|0;k=c[j>>2]|0;if((c[i>>2]|0)==(h|0))c[i>>2]=k;l=c[h+32>>2]|0;m=(l|0)==0;if(m){c[n+4>>2]=k;i=k}else{c[l+36>>2]=k;i=c[j>>2]|0}if(!i){c[n>>2]=l;if(m)a[n+33>>0]=2}else c[i+32>>2]=l;D=h+28|0;b[D>>1]=b[D>>1]&-16|1;if((b[h+30>>1]|0)==0?a[n+32>>0]|0:0)cb[c[29440>>2]&255](c[n+44>>2]|0,c[h>>2]|0,0);h=c[o>>2]|0}while((h|0)!=0);h=c[e+24>>2]|0;m=e+32|0;c:do if((h>>>0>(c[m>>2]|0)>>>0?(w=c[e+152>>2]|0,x=h-((h|0)==((1073741824/(w|0)|0)+1|0)&1)|0,y=e+60|0,t=c[y>>2]|0,u=c[t>>2]|0,u|0):0)?((a[B>>0]|0)+-1&255)>2:0){h=Xa[c[u+24>>2]&255](t,z)|0;j=((w|0)<0)<<31>>31;k=Yv(x|0,0,w|0,j|0)|0;l=L()|0;do if(!h){i=z;h=c[i>>2]|0;i=c[i+4>>2]|0;if(!((h|0)==(k|0)&(i|0)==(l|0))){do if((i|0)>(l|0)|(i|0)==(l|0)&h>>>0>k>>>0){v=c[y>>2]|0;v=Ya[c[(c[v>>2]|0)+16>>2]&127](v,k,l)|0;A=107}else{D=Sv(h|0,i|0,w|0,j|0)|0;z=L()|0;if((z|0)>(l|0)|(z|0)==(l|0)&D>>>0>k>>>0)break;D=c[e+208>>2]|0;gw(D|0,0,w|0)|0;z=c[y>>2]|0;A=Tv(k|0,l|0,w|0,j|0)|0;v=L()|0;v=_a[c[(c[z>>2]|0)+12>>2]&127](z,D,w,A,v)|0;A=107}while(0);if((A|0)==107?v|0:0){h=v;break}c[m>>2]=x}break c}while(0);D=h;Ra=C;return D|0}while(0);if(g|0)break;j=e+60|0;h=c[j>>2]|0;i=c[h>>2]|0;d:do if(i|0){h=Ya[c[i+40>>2]&127](h,21,f)|0;switch(h|0){case 0:case 12:break d;default:{}}Ra=C;return h|0}while(0);if(a[e+7>>0]|0)break;h=c[j>>2]|0;i=a[e+10>>0]|0;if(!(i<<24>>24))break;h=Xa[c[(c[h>>2]|0)+20>>2]&255](h,i&255)|0}else{c[z>>2]=0;j=e+212|0;h=Cf(c[j>>2]|0)|0;if(!h){h=Za[c[e+204>>2]&127](e,1,z,0)|0;i=c[z>>2]|0;c[i+16>>2]=0;if(i){h=i;A=21}}else A=21;do if((A|0)==21){h=We(e,h,c[e+24>>2]|0,1)|0;i=c[z>>2]|0;if(i)if(!(b[i+28>>1]&32)){Df(i);break}else{D=c[i+20>>2]|0;A=D+120|0;c[A>>2]=(c[A>>2]|0)+-1;D=D+136|0;c[i+16>>2]=c[D>>2];c[D>>2]=i;break}}while(0);if((h|0)==0?(o=c[j>>2]|0,m=c[o>>2]|0,m|0):0)do{n=c[m+12>>2]|0;j=n+8|0;l=m+36|0;i=c[l>>2]|0;if((c[j>>2]|0)==(m|0))c[j>>2]=i;j=c[m+32>>2]|0;k=(j|0)==0;if(k)c[n+4>>2]=i;else{c[j+36>>2]=i;i=c[l>>2]|0}if(!i){c[n>>2]=j;if(k)a[n+33>>0]=2}else c[i+32>>2]=j;D=m+28|0;b[D>>1]=b[D>>1]&-16|1;if((b[m+30>>1]|0)==0?a[n+32>>0]|0:0)cb[c[29440>>2]&255](c[n+44>>2]|0,c[m>>2]|0,0);m=c[o>>2]|0}while((m|0)!=0)}if(h|0){D=h;Ra=C;return D|0}}while(0);if(c[e+216>>2]|0){D=0;Ra=C;return D|0}a[B>>0]=5;D=0;Ra=C;return D|0}function bc(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=a[b+8>>0]|0;if(!(f<<24>>24)){l=0;return l|0}l=c[b+4>>2]|0;c[l+4>>2]=c[b>>2];if(f<<24>>24==2){i=c[l>>2]|0;j=i+40|0;f=c[j>>2]|0;a:do if(!f){g=i+16|0;if(((a[g>>0]|0)==2?a[i+4>>0]|0:0)?(a[i+5>>0]|0)==1:0){a[g>>0]=1;break}f=i+100|0;c[f>>2]=(c[f>>2]|0)+1;f=uf(i,d[i+19>>0]|0,1)|0;switch((f&255)<<24>>24){case 10:case 13:break;default:{h=f;k=10;break a}}c[j>>2]=f;a[g>>0]=6;c[i+204>>2]=(f|0)==0?74:75;h=f;k=10}else{h=f;k=10}while(0);if((k|0)==10?(e|0)==0&(h|0)!=0:0){l=h;return l|0}e=b+20|0;c[e>>2]=(c[e>>2]|0)+-1;a[l+20>>0]=1;l=l+60|0;yf(c[l>>2]|0);c[l>>2]=0}Zf(b);l=0;return l|0}function cc(e,f){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;v=Ra;Ra=Ra+32|0;o=v+16|0;g=v;if((a[e+8>>0]|0)!=2){u=0;Ra=v;return u|0}u=c[e+4>>2]|0;c[u+4>>2]=c[e>>2];do if(a[u+17>>0]|0){t=c[u>>2]|0;k=c[u+8>>2]|0;l=(k|0)==0;if(!l){e=k;do{r=e+1|0;a[r>>0]=a[r>>0]&-5;e=c[e+24>>2]|0}while((e|0)!=0)}if(!(a[u+18>>0]|0)){r=u+44|0;h=c[r>>2]|0;i=h>>>0<2;if(i)e=0;else{e=h+-2|0;e=e-((e>>>0)%(((((c[u+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;e=((e+1|0)==(1073741824/((c[u+32>>2]|0)>>>0)|0|0)?3:2)+e|0}if((e|0)!=(h|0)?(m=1073741824/((c[u+32>>2]|0)>>>0)|0,n=m+1|0,(h|0)!=(n|0)):0){q=u+12|0;p=c[(c[q>>2]|0)+56>>2]|0;p=d[p+37>>0]<<16|d[p+36>>0]<<24|d[p+38>>0]<<8|d[p+39>>0];g=((c[u+36>>2]|0)>>>0)/5|0;j=g+1|0;if(i)e=0;else{e=h+-2|0;e=e-((e>>>0)%(j>>>0)|0)|0;e=((e+1|0)==(m|0)?3:2)+e|0}i=h-p-(((g-h+p+e|0)>>>0)/(g>>>0)|0)|0;i=i+((n>>>0>>0&i>>>0>>0)<<31>>31)|0;while(1){if(i>>>0<2)e=0;else{e=i+-2|0;e=e-((e>>>0)%(j>>>0)|0)|0;e=((e+1|0)==(m|0)?3:2)+e|0}if((i|0)==(n|0)|(e|0)==(i|0))i=i+-1|0;else break}if(i>>>0>h>>>0){c[o>>2]=32306;c[o+4>>2]=67104;c[o+8>>2]=31517;Db(11,32001,o);u=11;Ra=v;return u|0}if(l|i>>>0>=h>>>0)e=0;else e=$f(k,0,0)|0;g=(e|0)==0;if(h>>>0>i>>>0&g)do{e=_f(u,i,h,1)|0;h=h+-1|0;g=(e|0)==0}while(g&h>>>0>i>>>0);if((p|0)!=0&((e|0)==101|g)){g=c[(c[q>>2]|0)+72>>2]|0;h=c[g+20>>2]|0;if((b[g+28>>1]&4)!=0?(c[h+24>>2]|0)>>>0>=(c[g+24>>2]|0)>>>0:0)if(!(c[h+96>>2]|0))e=0;else e=Ve(g)|0;else s=30;do if((s|0)==30){e=c[h+40>>2]|0;if(!e)if((c[h+148>>2]|0)>>>0>(c[h+152>>2]|0)>>>0){e=Wf(g)|0;break}else{e=Xf(g)|0;break}}while(0);s=(c[(c[q>>2]|0)+56>>2]|0)+32|0;a[s>>0]=0;a[s+1>>0]=0;a[s+2>>0]=0;a[s+3>>0]=0;s=(c[(c[q>>2]|0)+56>>2]|0)+36|0;a[s>>0]=0;a[s+1>>0]=0;a[s+2>>0]=0;a[s+3>>0]=0;s=c[(c[q>>2]|0)+56>>2]|0;a[s+28>>0]=i>>>24;a[s+29>>0]=i>>>16;a[s+30>>0]=i>>>8;a[s+31>>0]=i;a[u+19>>0]=1;c[r>>2]=i}if(!e)break;tf(t)|0;u=e;Ra=v;return u|0}c[g>>2]=32306;c[g+4>>2]=67099;c[g+8>>2]=31517;Db(11,32001,g);u=11;Ra=v;return u|0}}while(0);e=c[u>>2]|0;if(a[u+19>>0]|0)c[e+24>>2]=c[u+44>>2];u=ac(e,f,0)|0;Ra=v;return u|0}function dc(a){a=a|0;var b=0,d=0,e=0;if(!a){e=0;return e|0}e=c[a+20>>2]|0;b=c[a+24>>2]|0;d=c[b+4>>2]|0;c[d+4>>2]=c[b>>2];if(c[a>>2]|0){b=b+16|0;c[b>>2]=(c[b>>2]|0)+-1}if(c[a+40>>2]|0){b=(c[d>>2]|0)+88|0;while(1){d=c[b>>2]|0;if((d|0)==(a|0))break;else b=d+44|0}c[b>>2]=c[a+44>>2]}ec(c[a+4>>2]|0,0,0);d=c[a+28>>2]|0;d=(d|0)==101?0:d;b=c[a>>2]|0;do if(b|0){c[b+64>>2]=d;if(!d){if(c[b+260>>2]|0)Ne(b,0)}else Ne(b,d);fc(c[a>>2]|0);if(c[a>>2]|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](a);break}else{b=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);break}}while(0);fc(e);e=d;return e|0}function ec(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=Ra;Ra=Ra+16|0;h=k;j=c[b+4>>2]|0;c[j+4>>2]=c[b>>2];if(!e){f=c[j+8>>2]|0;if(f|0?(g=$f(f,0,0)|0,g|0):0){e=g;f=0;i=4}}else i=4;if((i|0)==4)jg(b,e,f)|0;if((a[b+8>>0]|0)!=2){Zf(b);Ra=k;return}tf(c[j>>2]|0)|0;i=c[j>>2]|0;if(!(Za[c[i+204>>2]&127](i,1,h,0)|0)){f=c[h>>2]|0;g=c[f+8>>2]|0;e=g+4|0;if((c[e>>2]|0)==1)f=c[g+56>>2]|0;else{i=c[f+4>>2]|0;c[g+56>>2]=i;c[g+72>>2]=f;c[g+52>>2]=j;c[e>>2]=1;a[g+9>>0]=100;f=i}f=d[f+29>>0]<<16|d[f+28>>0]<<24|d[f+30>>0]<<8|d[f+31>>0];if(!f)f=c[(c[j>>2]|0)+24>>2]|0;c[j+44>>2]=f;i=c[g+72>>2]|0;f=c[i+20>>2]|0;Df(i);if(!(c[(c[f+212>>2]|0)+12>>2]|0)){switch(a[f+16>>0]|0){case 0:case 6:break;case 1:{if(!(a[f+4>>0]|0))uf(f,0,0)|0;break}default:tf(f)|0}vf(f)}}a[j+20>>0]=1;j=j+60|0;yf(c[j>>2]|0);c[j>>2]=0;Zf(b);Ra=k;return}function fc(e){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;t=e+96|0;if((c[t>>2]|0)!=1691352191)return;l=e+4|0;if(c[l>>2]|0)return;p=e+20|0;h=c[p>>2]|0;a:do if((h|0)>0){g=c[e+16>>2]|0;f=0;while(1){r=c[g+(f<<4)+4>>2]|0;if(r|0?c[r+16>>2]|0:0)break;f=f+1|0;if((f|0)>=(h|0))break a}return}while(0);rg(e,0);g=e+444|0;f=c[g>>2]|0;if(f|0){h=e+480|0;i=e+304|0;j=e+308|0;k=e+300|0;do{c[g>>2]=c[f+24>>2];do if(!(c[h>>2]|0)){r=f;if((c[i>>2]|0)>>>0<=r>>>0?(c[j>>2]|0)>>>0>r>>>0:0){c[f>>2]=c[k>>2];c[k>>2]=f;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{r=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}else Xd(e,f);while(0);f=c[g>>2]|0}while((f|0)!=0)}c[e+452>>2]=0;c[e+456>>2]=0;a[e+87>>0]=0;r=e+16|0;f=c[r>>2]|0;if((c[p>>2]|0)>0){i=0;do{g=f+(i<<4)+4|0;h=c[g>>2]|0;if(h|0?(ug(h),c[g>>2]=0,(i|0)!=1):0)c[f+(i<<4)+12>>2]=0;i=i+1|0;f=c[r>>2]|0}while((i|0)<(c[p>>2]|0))}f=c[f+28>>2]|0;if(f|0)dh(f);m=e+360|0;g=c[m>>2]|0;c[m>>2]=0;if(g|0){f=c[l>>2]|0;if(f|0)do{m=f+149|0;l=(d[m>>0]|d[m+1>>0]<<8)&-4|1;a[m>>0]=l;a[m+1>>0]=l>>8;f=c[f+8>>2]|0}while((f|0)!=0);f=g;do{g=f;f=c[f+24>>2]|0;h=c[g>>2]|0;l=g+12|0;m=(c[l>>2]|0)+-1|0;c[l>>2]=m;do if(!m){i=c[g+8>>2]|0;if(i|0)Wa[c[(c[i>>2]|0)+16>>2]&127](i)|0;if(h|0){if(c[h+480>>2]|0){Xd(h,g);break}m=g;if((c[h+304>>2]|0)>>>0<=m>>>0?(c[h+308>>2]|0)>>>0>m>>>0:0){m=h+300|0;c[g>>2]=c[m>>2];c[m>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{m=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0)}while((f|0)!=0)}if((c[p>>2]|0)>2){j=e+480|0;k=e+304|0;l=e+308|0;m=e+300|0;i=2;f=2;do{g=c[r>>2]|0;h=g+(i<<4)|0;if(!(c[g+(i<<4)+4>>2]|0)){g=c[h>>2]|0;do if(g|0){if(c[j>>2]|0){Xd(e,g);break}u=g;if((c[k>>2]|0)>>>0<=u>>>0?(c[l>>2]|0)>>>0>u>>>0:0){c[g>>2]=c[m>>2];c[m>>2]=g;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{u=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[h>>2]=0}else{if((f|0)<(i|0)){u=g+(f<<4)|0;c[u>>2]=c[h>>2];c[u+4>>2]=c[h+4>>2];c[u+8>>2]=c[h+8>>2];c[u+12>>2]=c[h+12>>2]}f=f+1|0}i=i+1|0}while((i|0)<(c[p>>2]|0));c[p>>2]=f;if((f|0)<3)q=64}else{c[p>>2]=2;q=64}if((q|0)==64?(n=c[r>>2]|0,o=e+412|0,(n|0)!=(o|0)):0){c[o>>2]=c[n>>2];c[o+4>>2]=c[n+4>>2];c[o+8>>2]=c[n+8>>2];c[o+12>>2]=c[n+12>>2];c[o+16>>2]=c[n+16>>2];c[o+20>>2]=c[n+20>>2];c[o+24>>2]=c[n+24>>2];c[o+28>>2]=c[n+28>>2];do if(n|0){if(c[e+480>>2]|0){Xd(e,n);break}u=n;if((c[e+304>>2]|0)>>>0<=u>>>0?(c[e+308>>2]|0)>>>0>u>>>0:0){u=e+300|0;c[n>>2]=c[u>>2];c[u>>2]=n;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{u=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);c[r>>2]=o}m=e+372|0;f=c[m>>2]|0;if(!f)f=0;else{i=e+480|0;j=e+304|0;k=e+308|0;l=e+300|0;do{h=c[f+8>>2]|0;do{g=c[h+36>>2]|0;do if(g|0?(u=(c[g>>2]|0)+-1|0,c[g>>2]=u,(u|0)==0):0){ab[c[g+4>>2]&127](c[g+8>>2]|0);if(c[i>>2]|0){Xd(e,g);break}u=g;if((c[j>>2]|0)>>>0<=u>>>0?(c[k>>2]|0)>>>0>u>>>0:0){c[g>>2]=c[l>>2];c[l>>2]=g;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{u=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);g=h;h=c[h+12>>2]|0;do if(g|0){if(c[i>>2]|0){Xd(e,g);break}u=g;if((c[j>>2]|0)>>>0<=u>>>0?(c[k>>2]|0)>>>0>u>>>0:0){c[g>>2]=c[l>>2];c[l>>2]=g;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{u=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0)}while((h|0)!=0);f=c[f>>2]|0}while((f|0)!=0);f=c[m>>2]|0}c[m>>2]=0;g=e+376|0;h=c[g>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{u=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[g>>2]=0;c[e+364>>2]=0;if(f|0)do{g=f;f=c[f>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{u=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}}while((f|0)!=0);c[e+368>>2]=0;m=e+388|0;f=c[m>>2]|0;if(!f)f=0;else{i=e+480|0;j=e+304|0;k=e+308|0;l=e+300|0;do{h=c[f+8>>2]|0;g=c[h+16>>2]|0;if(g|0)ab[g&127](c[h+8>>2]|0);g=c[h+36>>2]|0;if(g|0)ab[g&127](c[h+28>>2]|0);g=c[h+56>>2]|0;if(g|0)ab[g&127](c[h+48>>2]|0);b:do if(!(c[i>>2]|0)){g=h;do if((c[j>>2]|0)>>>0<=g>>>0){if((c[k>>2]|0)>>>0<=g>>>0)break;c[h>>2]=c[l>>2];c[l>>2]=h;break b}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{u=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}else Xd(e,h);while(0);f=c[f>>2]|0}while((f|0)!=0);f=c[m>>2]|0}c[m>>2]=0;g=e+392|0;h=c[g>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{u=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[g>>2]=0;c[e+380>>2]=0;if(f|0)do{g=f;f=c[f>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{u=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}}while((f|0)!=0);c[e+384>>2]=0;n=e+344|0;f=c[n>>2]|0;if(!f)f=0;else{j=e+480|0;k=e+304|0;l=e+308|0;m=e+300|0;do{i=c[f+8>>2]|0;g=c[i+12>>2]|0;if(g|0)ab[g&127](c[i+8>>2]|0);g=i+16|0;h=c[g>>2]|0;if(h|0){u=h+36|0;c[u>>2]=c[u>>2]|2;do if(!(c[j>>2]|0)){q=h+32|0;u=(c[q>>2]|0)+-1|0;c[q>>2]=u;if(u|0)break;Vi(e,h)}else Vi(e,h);while(0);c[g>>2]=0}c:do if(!(c[j>>2]|0)){g=i;do if((c[k>>2]|0)>>>0<=g>>>0){if((c[l>>2]|0)>>>0<=g>>>0)break;c[i>>2]=c[m>>2];c[m>>2]=i;break c}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{u=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}else Xd(e,i);while(0);f=c[f>>2]|0}while((f|0)!=0);f=c[n>>2]|0}c[n>>2]=0;g=e+348|0;h=c[g>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{u=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[g>>2]=0;c[e+336>>2]=0;if(f|0)do{g=f;f=c[f>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{u=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}}while((f|0)!=0);c[e+340>>2]=0;c[e+64>>2]=0;f=e+260|0;d:do if(c[f>>2]|0?(Ne(e,0),s=c[f>>2]|0,s|0):0){if(!((b[s+8>>1]&9216)==0?!(c[s+24>>2]|0):0))Cg(s);f=c[s+32>>2]|0;do if(f|0){if(c[f+480>>2]|0){Xd(f,s);break d}g=s;if((c[f+304>>2]|0)>>>0>g>>>0)break;if((c[f+308>>2]|0)>>>0<=g>>>0)break;u=f+300|0;c[s>>2]=c[u>>2];c[u>>2]=s;break d}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{u=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}}while(0);c[t>>2]=-1254786768;f=c[(c[r>>2]|0)+28>>2]|0;e:do if(f|0){if(c[e+480>>2]|0){Xd(e,f);break}g=f;do if((c[e+304>>2]|0)>>>0<=g>>>0){if((c[e+308>>2]|0)>>>0<=g>>>0)break;u=e+300|0;c[f>>2]=c[u>>2];c[u>>2]=f;break e}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{u=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);c[t>>2]=-1623446221;do if(a[e+278>>0]|0){f=c[e+304>>2]|0;if(!f)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{u=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](e);return}else{u=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);return}}function gc(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=Ra;Ra=Ra+32|0;d=l+8|0;if(!b){k=0;Ra=l;return k|0}k=c[b>>2]|0;if(!k){Db(21,32391,l);c[d>>2]=58063;c[d+4>>2]=81403;c[d+8>>2]=31517;Db(21,32001,d);k=21;Ra=l;return k|0}i=b+136|0;h=c[i+4>>2]|0;if((h|0)>0|(h|0)==0&(c[i>>2]|0)>>>0>0)hc(k,b);i=b+20|0;d=c[i>>2]|0;if((d|0)<832317811)switch(d|0){case 770837923:{j=6;break}default:f=0}else switch(d|0){case 832317811:{j=6;break}default:f=0}if((j|0)==6)f=kc(b)|0;g=c[b>>2]|0;kb(g,b);h=c[b+4>>2]|0;e=b+8|0;d=c[e>>2]|0;if(!h)c[g+4>>2]=d;else{c[h+8>>2]=d;d=c[e>>2]|0}if(d|0)c[d+4>>2]=h;c[i>>2]=1443283912;c[b>>2]=0;do if(g){if(c[g+480>>2]|0){Xd(g,b);break}i=b;if((c[g+304>>2]|0)>>>0<=i>>>0?(c[g+308>>2]|0)>>>0>i>>>0:0){i=g+300|0;c[b>>2]=c[i>>2];c[i>>2]=b}else j=18}else j=18;while(0);do if((j|0)==18)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{j=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);if((f|0)==3082|(a[k+81>>0]|0)!=0){og(k);d=7}else d=c[k+68>>2]&f;fc(k);k=d;Ra=l;return k|0}function hc(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0.0;k=Ra;Ra=Ra+32|0;e=k+16|0;f=k+8|0;j=k;h=c[b>>2]|0;if((c[h>>2]|0)>1?(i=c[h+72>>2]|0,(i|0)!=0):0){Xa[i&255](h,f)|0;e=c[f>>2]|0;f=c[f+4>>2]|0}else{Xa[c[h+64>>2]&255](h,e)|0;l=+g[e>>3]*864.0e5;e=~~l>>>0;i=+t(l)>=1.0?(l>0.0?~~+H(+s(l/4294967296.0),4294967295.0)>>>0:~~+F((l-+(~~l>>>0))/4294967296.0)>>>0):0;c[f>>2]=e;c[f+4>>2]=i;f=i}i=d+136|0;h=i;e=Tv(e|0,f|0,c[h>>2]|0,c[h+4>>2]|0)|0;e=Yv(e|0,L()|0,1e6,0)|0;f=L()|0;h=j;c[h>>2]=e;c[h+4>>2]=f;h=c[b+204>>2]|0;if(h|0)db[h&127](c[b+208>>2]|0,c[d+188>>2]|0,e,f);if(!(a[b+88>>0]&2)){j=i;d=j;c[d>>2]=0;j=j+4|0;c[j>>2]=0;Ra=k;return}Za[c[b+196>>2]&127](2,c[b+200>>2]|0,d,j)|0;j=i;d=j;c[d>>2]=0;j=j+4|0;c[j>>2]=0;Ra=k;return}function ic(b,d){b=b|0;d=d|0;if((d|0)==3082|(a[b+81>>0]|0)!=0){og(b);d=7;return d|0}else{d=c[b+68>>2]&d;return d|0}return 0}function jc(b){b=b|0;var d=0,e=0,f=0;if(!b){e=0;return e|0}e=c[b>>2]|0;d=b+136|0;f=c[d+4>>2]|0;if((f|0)>0|(f|0)==0&(c[d>>2]|0)>>>0>0)hc(e,b);d=kc(b)|0;c[b+20>>2]=770837923;c[b+36>>2]=-1;c[b+40>>2]=0;a[b+146>>0]=2;c[b+44>>2]=0;c[b+32>>2]=1;a[b+147>>0]=-1;c[b+48>>2]=0;f=b+64|0;c[f>>2]=0;c[f+4>>2]=0;if((d|0)==3082|(a[e+81>>0]|0)!=0){og(e);f=7;return f|0}else{f=c[e+68>>2]&d;return f|0}return 0}function kc(b){b=b|0;var e=0,f=0,g=0,h=0,i=0;h=Ra;Ra=Ra+16|0;f=h;g=c[b>>2]|0;pg(b)|0;if((c[b+36>>2]|0)>-1){qg(b)|0;e=b+149|0;f=d[e>>0]|d[e+1>>0]<<8;if(f&64){f=f&-4|1;a[e>>0]=f;a[e+1>>0]=f>>8}}else{e=c[b+40>>2]|0;if(e|0?(i=b+149|0,(d[i>>0]|d[i+1>>0]<<8)&3):0){i=c[b+124>>2]|0;c[f>>2]=i;Vb(g,e,(i|0)==0?0:31408,f)}}e=b+124|0;f=c[e>>2]|0;do if(f|0){if(g|0){if(c[g+480>>2]|0){Xd(g,f);break}i=f;if((c[g+304>>2]|0)>>>0<=i>>>0?(c[g+308>>2]|0)>>>0>i>>>0:0){i=g+300|0;c[f>>2]=c[i>>2];c[i>>2]=f;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{i=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);c[e>>2]=0;c[b+120>>2]=0;c[b+20>>2]=1224384374;Ra=h;return c[g+68>>2]&c[b+40>>2]|0}function lc(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=e+16|0;f=b[k>>1]|0;if(f<<16>>16>0){l=e+100|0;j=0;g=c[l>>2]|0;do{h=g+(j*40|0)|0;i=g+(j*40|0)+8|0;if(!((b[i>>1]&9216)==0?(c[g+(j*40|0)+24>>2]|0)==0:0)){Cg(h);g=c[l>>2]|0;i=g+(j*40|0)+8|0;f=b[k>>1]|0}b[i>>1]=1;j=j+1|0}while((j|0)<(f<<16>>16|0))}if(!(c[e+208>>2]|0))return 0;l=e+149|0;k=(d[l>>0]|d[l+1>>0]<<8)&-4|1;a[l>>0]=k;a[l+1>>0]=k>>8;return 0}function mc(d){d=d|0;var e=0,f=0,g=0,h=0,i=0;i=d+8|0;f=b[i>>1]|0;e=f&65535;if(!(e&18)){if((f&514)==514?(a[d+10>>0]|0)==1:0){i=c[d+16>>2]|0;return i|0}if(f&1){i=0;return i|0}i=Gg(d,1)|0;return i|0}g=d+12|0;h=c[g>>2]|0;do if(e&16384){e=(c[d>>2]|0)+h|0;if((e|0)<1)if(!(f&16)){e=h;break}else e=1;if(!(Eg(d,e,1)|0)){gw((c[d+16>>2]|0)+(c[g>>2]|0)|0,0,c[d>>2]|0)|0;e=(c[g>>2]|0)+(c[d>>2]|0)|0;c[g>>2]=e;f=b[i>>1]&-16897;b[i>>1]=f;break}else{i=0;return i|0}}else e=h;while(0);b[i>>1]=f|16;if(!e){i=0;return i|0}i=c[d+16>>2]|0;return i|0}function nc(d){d=d|0;var e=0;if(!d){e=0;return e|0}e=b[d+8>>1]|0;if((e&514)==514?(a[d+10>>0]|0)==1:0){e=c[d+16>>2]|0;return e|0}if(e&1){e=0;return e|0}e=Gg(d,1)|0;return e|0}function oc(d){d=d|0;var e=0,f=0;e=b[d+8>>1]|0;if(e&2?(a[d+10>>0]|0)==1:0){d=c[d+12>>2]|0;return d|0}e=e&65535;if(!(e&16)){if(e&1|0){d=0;return d|0}d=Fg(d,1)|0;return d|0}else{f=c[d+12>>2]|0;if(!(e&16384)){d=f;return d|0}d=(c[d>>2]|0)+f|0;return d|0}return 0}function pc(b){b=b|0;var d=0,f=0.0;d=e[b+8>>1]|0;if(d&8|0){f=+g[b>>3];return +f}if(d&4|0){d=b;f=+((c[d>>2]|0)>>>0)+4294967296.0*+(c[d+4>>2]|0);return +f}if(!(d&18)){f=0.0;return +f}f=+Kg(a[b+10>>0]|0,c[b+12>>2]|0,c[b+16>>2]|0);return +f}function qc(b){b=b|0;var d=0;d=e[b+8>>1]|0;if(d&4|0){d=c[b>>2]|0;return d|0}if(d&8|0){d=Mg(+g[b>>3])|0;L()|0;return d|0}if(!(d&18)){d=0;return d|0}d=Ng(a[b+10>>0]|0,c[b+12>>2]|0,c[b+16>>2]|0)|0;L()|0;return d|0}function rc(b){b=b|0;var d=0;d=e[b+8>>1]|0;if(d&4|0){d=b;b=c[d+4>>2]|0;d=c[d>>2]|0;K(b|0);return d|0}if(d&8|0){d=Mg(+g[b>>3])|0;b=L()|0;K(b|0);return d|0}if(!(d&18)){b=0;d=0;K(b|0);return d|0}d=Ng(a[b+10>>0]|0,c[b+12>>2]|0,c[b+16>>2]|0)|0;b=L()|0;K(b|0);return d|0}function sc(a){a=a|0;return d[816+(b[a+8>>1]&31)>>0]|0|0}function tc(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;if(!a){i=0;return i|0}if(mb()|0){i=0;return i|0}if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](40)|0;if(!d){i=0;return i|0}else e=d}else{f=Wa[c[29356>>2]&127](40)|0;if((c[14985]|0)>>>0<40)c[14985]=40;e=59064;d=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&d>>>0>0){h=c[14978]|0;g=Tv(d|0,e|0,f|0,((f|0)<0)<<31>>31|0)|0;e=L()|0;c[14768]=((e|0)<0|(e|0)==0&g>>>0<=h>>>0)&1}e=Wa[c[29340>>2]&127](f)|0;if(!e){i=0;return i|0}d=Wa[c[29352>>2]&127](e)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0)c[14987]=d}h=e+20|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];c[e+16>>2]=c[a+16>>2];h=e+8|0;d=b[h>>1]&-1025;b[h>>1]=d;g=e+32|0;c[g>>2]=0;d=d&65535;if(!(d&18)){i=e;return i|0}f=(d&58367|4096)&65535;b[h>>1]=f;do if(d&16384){a=e+12|0;d=(c[e>>2]|0)+(c[a>>2]|0)|0;if((d|0)<1)if(!(f&16)){i=21;break}else d=1;if(!(Eg(e,d,1)|0)){gw((c[e+16>>2]|0)+(c[a>>2]|0)|0,0,c[e>>2]|0)|0;c[a>>2]=(c[a>>2]|0)+(c[e>>2]|0);d=b[h>>1]&-16897;b[h>>1]=d;if((c[e+24>>2]|0)!=0?(c[e+16>>2]|0)==(c[e+20>>2]|0):0)i=23;else i=21}}else i=21;while(0);if((i|0)==21?(Jg(e)|0)==0:0){d=b[h>>1]|0;i=23}if((i|0)==23){b[h>>1]=d&-4097;i=e;return i|0}if(!((b[h>>1]&9216)==0?!(c[e+24>>2]|0):0))Cg(e);d=c[g>>2]|0;if(d|0){if(c[d+480>>2]|0){Xd(d,e);i=0;return i|0}i=e;if((c[d+304>>2]|0)>>>0<=i>>>0?(c[d+308>>2]|0)>>>0>i>>>0:0){i=d+300|0;c[e>>2]=c[i>>2];c[i>>2]=e;i=0;return i|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);i=0;return i|0}else{i=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);i=0;return i|0}return 0}function uc(a){a=a|0;var d=0,e=0;if(!a)return;if(!((b[a+8>>1]&9216)==0?!(c[a+24>>2]|0):0))Cg(a);d=c[a+32>>2]|0;if(d|0){if(c[d+480>>2]|0){Xd(d,a);return}e=a;if((c[d+304>>2]|0)>>>0<=e>>>0?(c[d+308>>2]|0)>>>0>e>>>0:0){e=d+300|0;c[a>>2]=c[e>>2];c[e>>2]=a;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return}else{e=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return}}function vc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((yc(c[a>>2]|0,b,d,0,e)|0)!=18)return;c[a+20>>2]=18;yc(c[a>>2]|0,31223,-1,1,0)|0;return}function wc(a,d){a=a|0;d=+d;var e=0,f=0,h=0,i=0;i=Ra;Ra=Ra+16|0;f=i+8|0;h=i;a=c[a>>2]|0;e=a+8|0;if(!(b[e>>1]&9216))b[e>>1]=1;else Dg(a);g[f>>3]=d;g[h>>3]=+g[f>>3];if(!(+g[f>>3]==+g[h>>3])){Ra=i;return}g[a>>3]=d;b[e>>1]=8;Ra=i;return}function xc(a,b,d){a=a|0;b=b|0;d=d|0;c[a+20>>2]=1;yc(c[a>>2]|0,b,d,1,-1)|0;return}function yc(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,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;if(!f){g=d+8|0;if(!(b[g>>1]&9216)){b[g>>1]=1;s=0;return s|0}else{Dg(d);s=0;return s|0}}k=d+32|0;l=c[k>>2]|0;m=(l|0)==0;if(m)s=1e9;else s=c[l+108>>2]|0;p=h<<24>>24==0;j=p?16:2;if((g|0)<0){a:do if(h<<24>>24!=1)if((s|0)<0)g=0;else{g=0;do{if(!((a[f+(g|1)>>0]|a[f+g>>0])<<24>>24))break a;g=g+2|0}while((g|0)<=(s|0))}else g=(Eu(f)|0)&2147483647;while(0);o=j|512;q=g}else{o=j;q=g}do if((i|0)==(-1|0)){k=((o&512)==0?0:h<<24>>24==1?1:2)+q|0;if((q|0)>(s|0)){if(m){s=18;return s|0}g=c[l+236>>2]|0;if(!g){s=18;return s|0}c[g+12>>2]=18;s=g+36|0;c[s>>2]=(c[s>>2]|0)+1;s=18;return s|0}else{g=k>>>0>32?k:32;do if((c[d+24>>2]|0)<(g|0))if(!(Eg(d,g,0)|0)){j=d+8|0;g=c[d+16>>2]|0;break}else{s=7;return s|0}else{g=c[d+20>>2]|0;c[d+16>>2]=g;j=d+8|0;b[j>>1]=b[j>>1]&13}while(0);ew(g|0,f|0,k|0)|0;i=o;break}}else{j=d+8|0;if(!((b[j>>1]&9216)==0?!(c[d+24>>2]|0):0))Cg(d);c[d+16>>2]=f;if((i|0)!=116){c[d+36>>2]=i;i=(((i|0)==0?2048:1024)|o&65535)&65535;break}c[d+20>>2]=f;g=c[k>>2]|0;if(((g|0)!=0?(n=f,(c[g+304>>2]|0)>>>0<=n>>>0):0)?(c[g+308>>2]|0)>>>0>n>>>0:0)g=e[g+276>>1]|0;else g=Wa[c[29352>>2]&127](f)|0;c[d+24>>2]=g;i=o}while(0);f=d+12|0;c[f>>2]=q;b[j>>1]=i;h=p?1:h;n=d+10|0;a[n>>0]=h;do if(h<<24>>24!=1&(q|0)>1){o=d+16|0;g=c[o>>2]|0;l=a[g>>0]|0;k=a[g+1>>0]|0;if(!(l<<24>>24==-1&k<<24>>24==-2))if(l<<24>>24==-2&k<<24>>24==-1)m=3;else break;else m=2;k=i&65535;do if(k&18){do if(k&16384){g=(c[d>>2]|0)+q|0;if((g|0)<1)if(!(i&16)){k=q;g=i;break}else g=1;if(!(Eg(d,g,1)|0)){gw((c[o>>2]|0)+(c[f>>2]|0)|0,0,c[d>>2]|0)|0;k=(c[f>>2]|0)+(c[d>>2]|0)|0;c[f>>2]=k;g=b[j>>1]&-16897;b[j>>1]=g;break}else{s=7;return s|0}}else{k=q;g=i}while(0);if(c[d+24>>2]|0?(r=c[o>>2]|0,(r|0)==(c[d+20>>2]|0)):0){l=g;g=r;break}if(!(Jg(d)|0)){l=b[j>>1]|0;k=c[f>>2]|0;g=c[o>>2]|0;break}else{s=7;return s|0}}else{l=i;k=q}while(0);b[j>>1]=l&-4097;r=k+-2|0;c[f>>2]=r;fw(g|0,g+2|0,r|0)|0;a[(c[o>>2]|0)+(c[f>>2]|0)>>0]=0;a[(c[o>>2]|0)+((c[f>>2]|0)+1)>>0]=0;b[j>>1]=b[j>>1]|512;a[n>>0]=m}while(0);s=(q|0)>(s|0)?18:0;return s|0}function zc(a,d){a=a|0;d=d|0;var e=0,f=0;a=c[a>>2]|0;e=((d|0)<0)<<31>>31;f=a+8|0;if(!(b[f>>1]&9216)){c[a>>2]=d;c[a+4>>2]=e;b[f>>1]=4;return}else{Pg(a,d,e);return}}function Ac(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;a=c[a>>2]|0;f=a+8|0;if(!(b[f>>1]&9216)){c[a>>2]=d;c[a+4>>2]=e;b[f>>1]=4;return}else{Pg(a,d,e);return}}function Bc(a){a=a|0;var d=0;a=c[a>>2]|0;d=a+8|0;if(!(b[d>>1]&9216)){b[d>>1]=1;return}else{Dg(a);return}}function Cc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((yc(c[a>>2]|0,b,d,1,e)|0)!=18)return;c[a+20>>2]=18;yc(c[a>>2]|0,31223,-1,1,0)|0;return}function Dc(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;f=c[a>>2]|0;g=f+8|0;if(b[g>>1]&9216)Dg(f);c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[f+16>>2]=c[d+16>>2];e=b[g>>1]&-1025;b[g>>1]=e;e=e&65535;if(!(e&18))return;if(b[d+8>>1]&2048)return;a=(e|4096)&65535;b[g>>1]=a;do if(e&16384){e=f+12|0;d=(c[f>>2]|0)+(c[e>>2]|0)|0;if((d|0)<1)if(!(a&16))break;else a=1;else a=d;if(!(Eg(f,a,1)|0)){gw((c[f+16>>2]|0)+(c[e>>2]|0)|0,0,c[f>>2]|0)|0;c[e>>2]=(c[e>>2]|0)+(c[f>>2]|0);a=b[g>>1]&-16897;b[g>>1]=a;break}else return}while(0);if(!((c[f+24>>2]|0)!=0?(c[f+16>>2]|0)==(c[f+20>>2]|0):0))h=12;do if((h|0)==12)if(!(Jg(f)|0)){a=b[g>>1]|0;break}else return;while(0);b[g>>1]=a&-4097;return}function Ec(d){d=d|0;var e=0,f=0;e=c[d>>2]|0;f=e+8|0;if(!(b[f>>1]&9216))b[f>>1]=1;else{Dg(e);e=c[d>>2]|0}c[d+20>>2]=7;f=c[e+32>>2]|0;e=f+81|0;if(a[e>>0]|0)return;if(a[f+82>>0]|0)return;a[e>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;e=f+272|0;c[e>>2]=(c[e>>2]|0)+1;e=c[f+236>>2]|0;if(!e)return;c[e+12>>2]=7;return}function Fc(b){b=b|0;var d=0;d=b+81|0;if(a[d>>0]|0)return;if(a[b+82>>0]|0)return;a[d>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;d=b+272|0;c[d>>2]=(c[d>>2]|0)+1;b=c[b+236>>2]|0;if(!b)return;c[b+12>>2]=7;return}function Gc(f){f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=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.0;Ga=Ra;Ra=Ra+384|0;Aa=Ga+368|0;za=Ga+360|0;ya=Ga+352|0;xa=Ga+344|0;wa=Ga+336|0;va=Ga+328|0;ua=Ga+320|0;ta=Ga+312|0;sa=Ga+304|0;ra=Ga+296|0;qa=Ga+288|0;pa=Ga+280|0;oa=Ga+272|0;Ca=Ga+264|0;Ba=Ga+256|0;i=Ga+240|0;h=Ga+232|0;fa=Ga;ia=Ga+372|0;do if(!f)Db(21,32555,Ga+224|0);else{Fa=c[f>>2]|0;if(!Fa){Db(21,32391,h);break}ba=f+149|0;ca=(d[ba>>0]|d[ba+1>>0]<<8)&-17;a[ba>>0]=ca;a[ba+1>>0]=ca>>8;ca=f+20|0;da=f+136|0;C=f+36|0;Ea=f+40|0;D=f+146|0;E=f+44|0;G=f+32|0;I=f+147|0;J=f+48|0;K=f+64|0;L=f+148|0;M=f+88|0;N=f+188|0;O=f+120|0;P=f+8|0;Q=f+4|0;R=f+208|0;S=f+160|0;T=f+180|0;U=f+108|0;V=f+100|0;W=f+104|0;X=fa+4|0;Y=fa+8|0;Z=fa+12|0;_=fa+16|0;$=fa+21|0;aa=f+144|0;B=0;a:while(1){if((c[ca>>2]|0)!=770837923){h=c[f>>2]|0;Da=da;A=c[Da+4>>2]|0;if((A|0)>0|(A|0)==0&(c[Da>>2]|0)>>>0>0)hc(h,f);Da=kc(f)|0;c[ca>>2]=770837923;c[C>>2]=-1;c[Ea>>2]=0;a[D>>0]=2;c[E>>2]=0;c[G>>2]=1;a[I>>0]=-1;c[J>>2]=0;A=K;c[A>>2]=0;c[A+4>>2]=0;if((Da|0)==3082|(a[h+81>>0]|0)!=0)og(h)}A=c[f>>2]|0;if(a[A+81>>0]|0){Da=13;break}do if((c[C>>2]|0)<0){if((d[ba>>0]|d[ba+1>>0]<<8)&3){c[Ea>>2]=17;h=1;Da=246;break}h=A+168|0;if(!(c[h>>2]|0))c[A+264>>2]=0;do if(((a[A+88>>0]&-126)<<24>>24?(a[A+165>>0]|0)==0:0)?c[N>>2]|0:0){i=c[A>>2]|0;if((c[i>>2]|0)>1?(na=c[i+72>>2]|0,na|0):0){Xa[na&255](i,da)|0;break}Xa[c[i+64>>2]&255](i,fa)|0;Ha=+g[fa>>3]*864.0e5;z=+t(Ha)>=1.0?(Ha>0.0?~~+H(+s(Ha/4294967296.0),4294967295.0)>>>0:~~+F((Ha-+(~~Ha>>>0))/4294967296.0)>>>0):0;Da=da;c[Da>>2]=~~Ha>>>0;c[Da+4>>2]=z}while(0);c[h>>2]=(c[h>>2]|0)+1;h=d[ba>>0]|d[ba+1>>0]<<8;if(!(h&256)){h=A+176|0;c[h>>2]=(c[h>>2]|0)+1;h=d[ba>>0]|d[ba+1>>0]<<8}if(h&512){Da=A+172|0;c[Da>>2]=(c[Da>>2]|0)+1}c[C>>2]=0;Da=31}else Da=31;while(0);if((Da|0)==31){Da=0;h=(d[ba>>0]|d[ba+1>>0]<<8)&12;b:do if(!(h<<16>>16)){z=A+180|0;c[z>>2]=(c[z>>2]|0)+1;h=Rg(f)|0;c[z>>2]=(c[z>>2]|0)+-1;if((h|0)==100)h=100;else Da=226}else{z=c[f>>2]|0;y=c[M>>2]|0;x=y+40|0;if(h<<16>>16==4)r=1;else r=0?1:(c[z+32>>2]&16777216|0)!=0;m=c[y+72>>2]|0;n=m+480|0;h=(m|0)==0;o=m+304|0;p=m+308|0;q=m+300|0;c:do if(c[n>>2]|0){if(!h){h=1;while(1){d:do if(c[y+(h*40|0)+24>>2]|0?(ha=c[y+(h*40|0)+20>>2]|0,ha|0):0){if(c[n>>2]|0){Xd(m,ha);break}i=ha;do if((c[o>>2]|0)>>>0<=i>>>0){if((c[p>>2]|0)>>>0<=i>>>0)break;c[ha>>2]=c[q>>2];c[q>>2]=ha;break d}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](ha);break}else{w=Wa[c[29352>>2]&127](ha)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](ha);break}}while(0);h=h+1|0;if((h|0)==9)break c}}do if(c[y+64>>2]|0?(ga=c[y+60>>2]|0,ga|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](ga);break}else{w=Wa[c[29352>>2]&127](ga)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](ga);break}while(0);do if(c[y+104>>2]|0?(ja=c[y+100>>2]|0,ja|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](ja);break}else{w=Wa[c[29352>>2]&127](ja)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](ja);break}while(0);do if(c[y+144>>2]|0?(ka=c[y+140>>2]|0,ka|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](ka);break}else{w=Wa[c[29352>>2]&127](ka)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](ka);break}while(0);do if(c[y+184>>2]|0?(la=c[y+180>>2]|0,la|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](la);break}else{w=Wa[c[29352>>2]&127](la)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](la);break}while(0);do if(c[y+224>>2]|0){h=c[y+220>>2]|0;if(!h)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{w=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);do if(c[y+264>>2]|0){h=c[y+260>>2]|0;if(!h)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{w=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);do if(c[y+304>>2]|0){h=c[y+300>>2]|0;if(!h)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{w=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);if(!(c[y+344>>2]|0))break;h=c[y+340>>2]|0;if(!h)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{w=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}else{if(h){h=1;while(1){i=y+(h*40|0)+8|0;if(!(b[i>>1]&9216)){j=y+(h*40|0)+24|0;if(c[j>>2]|0){k=c[y+(h*40|0)+20>>2]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{w=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);c[j>>2]=0}}else Cg(y+(h*40|0)|0);b[i>>1]=128;h=h+1|0;if((h|0)==9)break c}}h=1;do{i=y+(h*40|0)+8|0;if(!(b[i>>1]&9216)){j=y+(h*40|0)+24|0;if(c[j>>2]|0){k=c[y+(h*40|0)+20>>2]|0;e:do if(!(c[n>>2]|0)){l=k;do if((c[o>>2]|0)>>>0<=l>>>0){if((c[p>>2]|0)>>>0<=l>>>0)break;c[k>>2]=c[q>>2];c[q>>2]=k;break e}while(0);if(!k)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{w=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}else Xd(m,k);while(0);c[j>>2]=0}}else Cg(y+(h*40|0)|0);b[i>>1]=128;h=h+1|0}while((h|0)!=9)}while(0);c[O>>2]=0;if((c[Ea>>2]|0)==7){h=z+81|0;if(a[h>>0]|0){h=1;Da=226;break}if(a[z+82>>0]|0){h=1;Da=226;break}a[h>>0]=1;if((c[z+180>>2]|0)>0)c[z+264>>2]=1;h=z+272|0;c[h>>2]=(c[h>>2]|0)+1;h=c[z+236>>2]|0;if(!h){h=1;Da=226;break}c[h+12>>2]=7;h=1;Da=226;break}o=c[U>>2]|0;if(r){h=c[M>>2]|0;j=h+360|0;if(b[h+368>>1]&16){k=(c[h+372>>2]|0)>>>2;l=c[h+376>>2]|0;if(!k){q=o;k=0}else{h=o;i=0;do{h=(c[(c[l+(i<<2)>>2]|0)+4>>2]|0)+h|0;i=i+1|0}while((i|0)!=(k|0));q=h}}else{q=o;k=0;l=0}}else{j=0;q=o;k=0;l=0}i=c[C>>2]|0;h=i+1|0;c[C>>2]=h;f:do if((i|0)<(q|0)){u=j+16|0;v=j+8|0;w=j+12|0;g:do if(r){h=o;while(1){if((i|0)<(h|0))p=(c[W>>2]|0)+(i*20|0)|0;else{i=i-h|0;h=c[l>>2]|0;m=c[h+4>>2]|0;if((i|0)>=(m|0)){n=0;do{i=i-m|0;n=n+1|0;h=c[l+(n<<2)>>2]|0;m=c[h+4>>2]|0}while((i|0)>=(m|0))}p=(c[h>>2]|0)+(i*20|0)|0}do if((a[p+1>>0]|0)==-4){o=k+1|0;n=o<<2;h:do if((k|0)>0){m=c[p+16>>2]|0;h=0;do{if((c[l+(h<<2)>>2]|0)==(m|0))break h;h=h+1|0}while((h|0)<(k|0))}else h=0;while(0);if((h|0)!=(k|0)){n=q;break}r=Eg(j,n,(k|0)!=0&1)|0;c[Ea>>2]=r;if(r|0){h=1;Da=226;break b}l=c[u>>2]|0;r=p+16|0;c[l+(k<<2)>>2]=c[r>>2];b[v>>1]=b[v>>1]|16;c[w>>2]=n;n=(c[(c[r>>2]|0)+4>>2]|0)+q|0;k=o}else n=q;while(0);h=d[ba>>0]|d[ba+1>>0]<<8;if(!(h&8))break g;switch(a[p>>0]|0){case -85:break g;case 61:{m=c[C>>2]|0;if((m|0)>1)break g;else i=m;break}default:i=c[C>>2]|0}c[C>>2]=i+1;if((i|0)>=(n|0))break f;q=n;h=c[U>>2]|0}}else{n=d[ba>>0]|d[ba+1>>0]<<8;if(!(n&8)){if((i|0)<(o|0)){p=(c[W>>2]|0)+(i*20|0)|0;h=n;break}i=i-o|0;h=c[l>>2]|0;j=c[h+4>>2]|0;if((i|0)>=(j|0)){k=0;do{i=i-j|0;k=k+1|0;h=c[l+(k<<2)>>2]|0;j=c[h+4>>2]|0}while((i|0)>=(j|0))}p=(c[h>>2]|0)+(i*20|0)|0;h=n;break}m=h;while(1){if((i|0)<(o|0))h=(c[W>>2]|0)+(i*20|0)|0;else{i=i-o|0;h=c[l>>2]|0;j=c[h+4>>2]|0;if((i|0)>=(j|0)){k=0;do{i=i-j|0;k=k+1|0;h=c[l+(k<<2)>>2]|0;j=c[h+4>>2]|0}while((i|0)>=(j|0))}h=(c[h>>2]|0)+(i*20|0)|0}switch(a[h>>0]|0){case -85:{p=h;h=n;break g}case 61:{if((m|0)>1){p=h;h=n;break g}break}default:{}}h=m+1|0;c[C>>2]=h;if((m|0)<(q|0)){i=m;m=h}else break f}}while(0);if(c[z+264>>2]|0){c[Ea>>2]=9;Ag(f,50367,Ba);h=1;Da=226;break b}if((h&12)==4){b[y+48>>1]=4;q=x;c[q>>2]=i;c[q+4>>2]=((i|0)<0)<<31>>31;b[y+88>>1]=2562;q=c[2800+(d[p>>0]<<2)>>2]|0;c[y+96>>2]=q;q=(Eu(q)|0)&1073741823;c[y+92>>2]=q;a[y+90>>0]=1;q=y+120|0}else q=x;b[q+8>>1]=4;i=c[p+4>>2]|0;o=q;c[o>>2]=i;c[o+4>>2]=((i|0)<0)<<31>>31;b[q+48>>1]=4;o=c[p+8>>2]|0;i=q+40|0;c[i>>2]=o;c[i+4>>2]=((o|0)<0)<<31>>31;b[q+88>>1]=4;i=c[p+12>>2]|0;o=q+80|0;c[o>>2]=i;c[o+4>>2]=((i|0)<0)<<31>>31;o=q+120|0;i=q+144|0;j=c[i>>2]|0;if((j|0)<100){if(Eg(o,100,0)|0){h=1;Da=226;break b}h=q+136|0;k=q+128|0;n=h;h=c[h>>2]|0;j=c[i>>2]|0}else{h=c[q+140>>2]|0;n=q+136|0;c[n>>2]=h;k=q+128|0;b[k>>1]=b[k>>1]&13}b[k>>1]=514;c[X>>2]=h;c[fa>>2]=0;c[Y>>2]=j;c[Z>>2]=0;c[Z+4>>2]=0;b[Z+8>>1]=0;i:do switch(a[p+1>>0]|0){case -9:{k=c[p+16>>2]|0;l=k+6|0;c[Ca>>2]=e[l>>1];Eb(fa,34044,Ca);if(b[l>>1]|0){m=k+16|0;j=0;do{i=c[k+20+(j<<2)>>2]|0;if(!i)i=59952;else i=c[i>>2]|0;z=(Bu(i,34049)|0)==0;c[oa>>2]=(a[(c[m>>2]|0)+j>>0]|0)==0?59952:34064;c[oa+4>>2]=z?34056:i;Eb(fa,34058,oa);j=j+1|0}while(j>>>0<(e[l>>1]|0)>>>0)}i=c[_>>2]|0;j=i+1|0;if(j>>>0<(c[Y>>2]|0)>>>0){c[_>>2]=j;a[(c[X>>2]|0)+i>>0]=41;break i}else{wb(fa,34066,1);break i}}case -2:{c[pa>>2]=c[c[p+16>>2]>>2];Eb(fa,34068,pa);break}case -8:{y=c[p+16>>2]|0;z=a[y>>0]|0;c[qa>>2]=c[y+32>>2];c[qa+4>>2]=z;Eb(fa,34076,qa);break}case -14:{x=c[p+16>>2]|0;y=c[x+4>>2]|0;z=ra;c[z>>2]=c[x>>2];c[z+4>>2]=y;Eb(fa,32524,ra);break}case -3:{c[sa>>2]=c[p+16>>2];Eb(fa,34083,sa);break}case -13:{g[ta>>3]=+g[c[p+16>>2]>>3];Eb(fa,34086,ta);break}case -11:{i=c[p+16>>2]|0;j=e[i+8>>1]|0;if(j&2|0){h=c[i+16>>2]|0;break i}if(j&4|0){x=i;y=c[x+4>>2]|0;z=ua;c[z>>2]=c[x>>2];c[z+4>>2]=y;Eb(fa,32524,ua);break i}if(!(j&8)){h=(j&1|0)==0?34092:31171;break i}else{g[va>>3]=+g[i>>3];Eb(fa,34086,va);break i}}case -12:{c[wa>>2]=c[(c[p+16>>2]|0)+8>>2];Eb(fa,34099,wa);break}case -15:{k=c[p+16>>2]|0;l=c[k>>2]|0;if((l|0)<1)k=0;else{i=1;while(1){c[xa>>2]=c[k+(i<<2)>>2];Eb(fa,34107,xa);if((i|0)==(l|0))break;else i=i+1|0}k=c[_>>2]|0;j=c[Y>>2]|0}a[h>>0]=91;i=k+1|0;if(i>>>0>>0){c[_>>2]=i;a[(c[X>>2]|0)+k>>0]=93;break i}else{wb(fa,34111,1);break i}}case -4:{Eb(fa,34113,ya);break}case -5:case -17:{a[h>>0]=0;break}case -6:{c[za>>2]=c[c[p+16>>2]>>2];Eb(fa,31408,za);break}default:{i=c[p+16>>2]|0;if(i|0){h=i;break i}a[h>>0]=0}}while(0);i=c[X>>2]|0;do if(i|0){a[i+(c[_>>2]|0)>>0]=0;if(!(c[Z>>2]|0))break;if(a[$>>0]&4)break;$d(fa)|0}while(0);if((h|0)==(c[n>>2]|0)){if(!h)h=0;else h=(Eu(h)|0)&1073741823;c[q+132>>2]=h;a[q+130>>0]=1}else{c[q+132>>2]=0;yc(o,h,-1,1,0)|0}h=(d[ba>>0]|d[ba+1>>0]<<8)&12;if(h<<16>>16==4){if((c[q+184>>2]|0)<4){if(Eg(q+160|0,4,0)|0){h=1;Da=226;break b}h=q+168|0;i=c[q+176>>2]|0}else{i=c[q+180>>2]|0;c[q+176>>2]=i;h=q+168|0;b[h>>1]=b[h>>1]&13}b[h>>1]=514;c[q+172>>2]=2;c[Aa>>2]=e[p+2>>1];Cb(3,i,32595,Aa)|0;a[q+170>>0]=1;b[q+208>>1]=1;h=(d[ba>>0]|d[ba+1>>0]<<8)&12}b[aa>>1]=12-(h&65535);c[O>>2]=(c[M>>2]|0)+40;c[Ea>>2]=0;h=100;break b}while(0);c[Ea>>2]=0;h=101;Da=226}while(0);do if((Da|0)==226){Da=0;z=da;y=c[z+4>>2]|0;if((y|0)>0|(y|0)==0&(c[z>>2]|0)>>>0>0)hc(A,f);if((h|0)==101)if(!(a[A+79>>0]|0))h=101;else{m=A+20|0;h=c[m>>2]|0;if((h|0)>0){n=A+16|0;o=A+240|0;p=A+244|0;l=0;i=0;do{k=c[n>>2]|0;j=c[k+(l<<4)+4>>2]|0;do if(((j|0)!=0?(ea=c[j+4>>2]|0,c[ea+4>>2]=c[j>>2],ea=c[(c[ea>>2]|0)+216>>2]|0,(ea|0)!=0):0)?(z=ea+12|0,ma=c[z>>2]|0,c[z>>2]=0,(ma|0)>0):0){j=c[o>>2]|0;if(!((i|0)==0&(j|0)!=0))break;i=Za[j&127](c[p>>2]|0,A,c[k+(l<<4)>>2]|0,ma)|0;h=c[m>>2]|0}while(0);l=l+1|0}while((l|0)<(h|0));c[Ea>>2]=i;if(i|0){h=1;break}}else c[Ea>>2]=0;h=101}}while(0);c[A+64>>2]=h;i=c[f>>2]|0;j=c[Ea>>2]|0;if(!((j|0)==3082|(a[i+81>>0]|0)!=0)){if((c[i+68>>2]&j|0)==7)Da=244}else{og(i);Da=244}if((Da|0)==244){Da=0;c[Ea>>2]=7}if((h|1|0)!=101)Da=246}if((Da|0)==246){Da=0;if((a[L>>0]|0)<0)h=qg(f)|0}h=c[A+68>>2]&h;if((h|0)!=17){Da=322;break}u=B+1|0;if(B>>>0>=50){h=17;Da=322;break}r=c[C>>2]|0;i=c[f>>2]|0;n=qd(i,c[N>>2]|0,-1,d[L>>0]|0,f,ia,0)|0;switch(n|0){case 7:{Da=251;break a}case 0:break;default:{Da=281;break a}}q=c[ia>>2]|0;ew(fa|0,q|0,224)|0;ew(q|0,f|0,224)|0;ew(f|0,fa|0,224)|0;p=q+8|0;o=c[p>>2]|0;c[p>>2]=c[P>>2];c[P>>2]=o;o=q+4|0;B=c[o>>2]|0;c[o>>2]=c[Q>>2];c[Q>>2]=B;B=q+188|0;l=c[B>>2]|0;c[B>>2]=c[N>>2];c[N>>2]=l;c[R>>2]=c[q+208>>2];a[L>>0]=a[q+148>>0]|0;l=q+160|0;c[S>>2]=c[l>>2];c[S+4>>2]=c[l+4>>2];c[S+8>>2]=c[l+8>>2];c[S+12>>2]=c[l+12>>2];c[S+16>>2]=c[l+16>>2];c[S+20>>2]=c[l+20>>2];c[S+24>>2]=c[l+24>>2];c[T>>2]=(c[T>>2]|0)+1;l=q+16|0;if((b[l>>1]|0)>0){m=q+100|0;k=0;do{B=c[V>>2]|0;h=B+(k*40|0)|0;n=c[m>>2]|0;i=n+(k*40|0)|0;if(!((b[B+(k*40|0)+8>>1]&9216)==0?!(c[B+(k*40|0)+24>>2]|0):0))Cg(h);j=h+40|0;do{c[h>>2]=c[i>>2];h=h+4|0;i=i+4|0}while((h|0)<(j|0));b[n+(k*40|0)+8>>1]=1;c[n+(k*40|0)+24>>2]=0;k=k+1|0}while((k|0)<(b[l>>1]|0))}c[q+40>>2]=0;k=q+20|0;h=c[k>>2]|0;if((h|0)<832317811)switch(h|0){case 770837923:{Da=264;break}default:{}}else switch(h|0){case 832317811:{Da=264;break}default:{}}if((Da|0)==264){Da=0;kc(q)|0}j=c[q>>2]|0;kb(j,q);i=c[o>>2]|0;h=c[p>>2]|0;if(!i)c[j+4>>2]=h;else{c[i+8>>2]=h;h=c[p>>2]|0}if(h|0)c[h+4>>2]=i;c[k>>2]=1443283912;c[q>>2]=0;do if(j){if(c[j+480>>2]|0){Xd(j,q);break}B=q;if((c[j+304>>2]|0)>>>0<=B>>>0?(c[j+308>>2]|0)>>>0>B>>>0:0){B=j+300|0;c[q>>2]=c[B>>2];c[B>>2]=q}else Da=276}else Da=276;while(0);do if((Da|0)==276)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{Da=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-Da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}while(0);h=c[f>>2]|0;Da=da;B=c[Da+4>>2]|0;if((B|0)>0|(B|0)==0&(c[Da>>2]|0)>>>0>0)hc(h,f);Da=kc(f)|0;c[ca>>2]=770837923;c[C>>2]=-1;c[Ea>>2]=0;a[D>>0]=2;c[E>>2]=0;c[G>>2]=1;a[I>>0]=-1;c[J>>2]=0;B=K;c[B>>2]=0;c[B+4>>2]=0;if((Da|0)==3082|(a[h+81>>0]|0)!=0)og(h);if((r|0)>-1){Da=d[ba>>0]|d[ba+1>>0]<<8|16;a[ba>>0]=Da;a[ba+1>>0]=Da>>8}B=u}if((Da|0)==13){c[Ea>>2]=7;Fa=7;Ra=Ga;return Fa|0}else if((Da|0)==251){h=i+81|0;if((a[h>>0]|0)==0?(a[i+82>>0]|0)==0:0){a[h>>0]=1;if((c[i+180>>2]|0)>0)c[i+264>>2]=1;h=i+272|0;c[h>>2]=(c[h>>2]|0)+1;h=c[i+236>>2]|0;if(h|0)c[h+12>>2]=7}n=7}else if((Da|0)!=281)if((Da|0)==322){Ra=Ga;return h|0}h=c[Fa+260>>2]|0;do if(h){i=b[h+8>>1]|0;if((i&514)==514?(a[h+10>>0]|0)==1:0){l=c[h+16>>2]|0;break}if(!(i&1))l=Gg(h,1)|0;else l=0}else l=0;while(0);m=f+124|0;h=c[m>>2]|0;do if(h|0){if(c[Fa+480>>2]|0){Xd(Fa,h);break}f=h;if((c[Fa+304>>2]|0)>>>0<=f>>>0?(c[Fa+308>>2]|0)>>>0>f>>>0:0){f=Fa+300|0;c[h>>2]=c[f>>2];c[f>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{f=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);k=Fa+81|0;if(a[k>>0]|0){c[m>>2]=0;c[Ea>>2]=7;Fa=7;Ra=Ga;return Fa|0}if(l){j=(Eu(l)|0)+1|0;j:do if(!(c[Fa+272>>2]|0)){do if(!(0<0|(0==0?(e[Fa+276>>1]|0)>>>0>>0:0))){i=Fa+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];f=Fa+284|0;c[f>>2]=(c[f>>2]|0)+1;break j}i=Fa+296|0;h=c[i>>2]|0;if(!h){h=Fa+292|0;break}else{c[i>>2]=c[h>>2];f=Fa+284|0;c[f>>2]=(c[f>>2]|0)+1;break j}}else h=Fa+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;Da=308}else Da=308;while(0);if((Da|0)==308)h=_d(Fa,j,0)|0;if(h)ew(h|0,l|0,j|0)|0;else h=0}else h=0;c[m>>2]=h;if((n|0)==3082|(a[k>>0]|0)!=0){og(Fa);h=7}else h=c[Fa+68>>2]&n;c[Ea>>2]=h;Fa=h;Ra=Ga;return Fa|0}while(0);c[i>>2]=58063;c[i+4>>2]=81990;c[i+8>>2]=31517;Db(21,32001,i);Fa=21;Ra=Ga;return Fa|0}function Hc(a,d){a=a|0;d=d|0;var e=0;e=c[a+8>>2]|0;if(!(b[e+8>>1]&8192)){e=Ic(a,d)|0;return e|0}else{e=c[e+16>>2]|0;return e|0}return 0}function Ic(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;h=c[a+8>>2]|0;if((d|0)<1){e=h+8|0;if(!(b[e>>1]&9216))b[e>>1]=1;else Dg(h);c[h+16>>2]=0;h=0;return h|0}if((c[h+24>>2]|0)<(d|0)){Eg(h,d,0)|0;g=h+16|0;e=h+8|0;f=g;g=c[g>>2]|0}else{g=c[h+20>>2]|0;f=h+16|0;c[f>>2]=g;e=h+8|0;b[e>>1]=b[e>>1]&13}b[e>>1]=8192;c[h>>2]=c[a+4>>2];if(!g){h=g;return h|0}gw(g|0,0,d|0)|0;h=c[f>>2]|0;return h|0}function Jc(a){a=a|0;if(!a){a=0;return a|0}if(!(c[a+120>>2]|0)){a=0;return a|0}a=e[a+144>>1]|0;return a|0}function Kc(b,d){b=b|0;d=d|0;var f=0,g=0;if(!b){g=mc(29576)|0;return g|0}f=c[b+120>>2]|0;if((f|0)!=0?(e[b+144>>1]|0)>>>0>d>>>0:0){d=f+(d*40|0)|0;f=b}else{d=c[b>>2]|0;c[d+64>>2]=25;Ne(d,25);d=29576;f=b}g=mc(d)|0;f=c[f>>2]|0;b=b+40|0;d=c[b>>2]|0;if((d|0)==3082|(a[f+81>>0]|0)!=0){og(f);d=7}else d=c[f+68>>2]&d;c[b>>2]=d;return g|0}function Lc(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0;j=(d|0)==0;do if(j)h=29576;else{g=c[d+120>>2]|0;if(g|0?(e[d+144>>1]|0)>>>0>f>>>0:0){h=g+(f*40|0)|0;break}h=c[d>>2]|0;c[h+64>>2]=25;Ne(h,25);h=29576}while(0);f=b[h+8>>1]|0;if((f&2)!=0?(a[h+10>>0]|0)==1:0)g=c[h+12>>2]|0;else i=9;do if((i|0)==9){f=f&65535;if(!(f&16)){if(f&1|0){g=0;break}g=Fg(h,1)|0;break}else{g=c[h+12>>2]|0;if(!(f&16384))break;g=(c[h>>2]|0)+g|0;break}}while(0);if(j)return g|0;h=c[d>>2]|0;i=d+40|0;f=c[i>>2]|0;if((f|0)==3082|(a[h+81>>0]|0)!=0){og(h);f=7}else f=c[h+68>>2]&f;c[i>>2]=f;return g|0}function Mc(b,d){b=b|0;d=d|0;var f=0,h=0,i=0.0;h=(b|0)==0;do if(h)d=29576;else{f=c[b+120>>2]|0;if(f|0?(e[b+144>>1]|0)>>>0>d>>>0:0){d=f+(d*40|0)|0;break}d=c[b>>2]|0;c[d+64>>2]=25;Ne(d,25);d=29576}while(0);f=e[d+8>>1]|0;do if(!(f&8)){if(f&4|0){f=d;i=+((c[f>>2]|0)>>>0)+4294967296.0*+(c[f+4>>2]|0);break}if(!(f&18))i=0.0;else i=+Kg(a[d+10>>0]|0,c[d+12>>2]|0,c[d+16>>2]|0)}else i=+g[d>>3];while(0);if(h)return +i;f=c[b>>2]|0;h=b+40|0;d=c[h>>2]|0;if((d|0)==3082|(a[f+81>>0]|0)!=0){og(f);d=7}else d=c[f+68>>2]&d;c[h>>2]=d;return +i}function Nc(b,d){b=b|0;d=d|0;var f=0,h=0,i=0;h=(b|0)==0;do if(h)d=29576;else{f=c[b+120>>2]|0;if(f|0?(e[b+144>>1]|0)>>>0>d>>>0:0){d=f+(d*40|0)|0;break}d=c[b>>2]|0;c[d+64>>2]=25;Ne(d,25);d=29576}while(0);f=e[d+8>>1]|0;do if(!(f&4)){if(f&8|0){i=Mg(+g[d>>3])|0;L()|0;break}if(!(f&18))i=0;else{i=Ng(a[d+10>>0]|0,c[d+12>>2]|0,c[d+16>>2]|0)|0;L()|0}}else i=c[d>>2]|0;while(0);if(h)return i|0;f=c[b>>2]|0;h=b+40|0;d=c[h>>2]|0;if((d|0)==3082|(a[f+81>>0]|0)!=0){og(f);d=7}else d=c[f+68>>2]&d;c[h>>2]=d;return i|0}function Oc(b,d){b=b|0;d=d|0;var f=0,h=0,i=0,j=0;h=(b|0)==0;do if(h)d=29576;else{f=c[b+120>>2]|0;if(f|0?(e[b+144>>1]|0)>>>0>d>>>0:0){d=f+(d*40|0)|0;break}d=c[b>>2]|0;c[d+64>>2]=25;Ne(d,25);d=29576}while(0);f=e[d+8>>1]|0;do if(!(f&4)){if(f&8|0){j=Mg(+g[d>>3])|0;i=L()|0;break}if(!(f&18)){i=0;j=0}else{j=Ng(a[d+10>>0]|0,c[d+12>>2]|0,c[d+16>>2]|0)|0;i=L()|0}}else{j=d;i=c[j+4>>2]|0;j=c[j>>2]|0}while(0);if(h){K(i|0);return j|0}f=c[b>>2]|0;h=b+40|0;d=c[h>>2]|0;if((d|0)==3082|(a[f+81>>0]|0)!=0){og(f);d=7}else d=c[f+68>>2]&d;c[h>>2]=d;K(i|0);return j|0}function Pc(d,f){d=d|0;f=f|0;var g=0,h=0,i=0;h=(d|0)==0;do if(h)f=29576;else{g=c[d+120>>2]|0;if(g|0?(e[d+144>>1]|0)>>>0>f>>>0:0){f=g+(f*40|0)|0;break}f=c[d>>2]|0;c[f+64>>2]=25;Ne(f,25);f=29576}while(0);g=b[f+8>>1]|0;if((g&514)==514?(a[f+10>>0]|0)==1:0)i=c[f+16>>2]|0;else if(!(g&1))i=Gg(f,1)|0;else i=0;if(h)return i|0;g=c[d>>2]|0;h=d+40|0;f=c[h>>2]|0;if((f|0)==3082|(a[g+81>>0]|0)!=0){og(g);f=7}else f=c[g+68>>2]&f;c[h>>2]=f;return i|0}function Qc(f,g){f=f|0;g=g|0;var h=0,i=0,j=0;i=(f|0)==0;do if(i)g=29576;else{h=c[f+120>>2]|0;if(h|0?(e[f+144>>1]|0)>>>0>g>>>0:0){g=h+(g*40|0)|0;break}g=c[f>>2]|0;c[g+64>>2]=25;Ne(g,25);g=29576}while(0);j=d[816+(b[g+8>>1]&31)>>0]|0;if(i)return j|0;h=c[f>>2]|0;i=f+40|0;g=c[i>>2]|0;if((g|0)==3082|(a[h+81>>0]|0)!=0){og(h);g=7}else g=c[h+68>>2]&g;c[i>>2]=g;return j|0}function Rc(d,f){d=d|0;f=f|0;var g=0,h=0,i=0;i=c[d>>2]|0;if(!d){i=0;return i|0}if((e[d+144>>1]|0)>>>0<=f>>>0){i=0;return i|0}h=c[d+116>>2]|0;d=h+(f*40|0)|0;do if(d){g=b[h+(f*40|0)+8>>1]|0;if((g&514)==514?(a[h+(f*40|0)+10>>0]|0)==1:0){d=c[h+(f*40|0)+16>>2]|0;break}if(!(g&1))d=Gg(d,1)|0;else d=0}else d=0;while(0);g=i+81|0;if(!(a[g>>0]|0)){i=d;return i|0}if(c[i+180>>2]|0){i=0;return i|0}a[g>>0]=0;c[i+264>>2]=0;i=i+272|0;c[i>>2]=(c[i>>2]|0)+-1;i=0;return i|0}function Sc(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=Vc(b,d)|0;if(h|0){switch(g|0){case 0:case -1:{b=h;return b|0}default:{}}ab[g&127](e);b=h;return b|0}if(!e){b=0;return b|0}e=yc((c[b+100>>2]|0)+((d+-1|0)*40|0)|0,e,f,0,g)|0;if(!e){b=0;return b|0}d=c[b>>2]|0;c[d+64>>2]=e;Ne(d,e);d=c[b>>2]|0;if((e|0)==3082|(a[d+81>>0]|0)!=0){og(d);b=7;return b|0}else{b=c[d+68>>2]&e;return b|0}return 0}function Tc(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,l=0,m=0;j=Vc(d,e)|0;if(j|0){switch(h|0){case 0:case -1:{d=j;return d|0}default:{}}ab[h&127](f);d=j;return d|0}if(!f){d=0;return d|0}m=c[d+100>>2]|0;k=e+-1|0;l=m+(k*40|0)|0;e=yc(l,f,g,i,h)|0;do if(!(i<<24>>24==0|(e|0)!=0)){j=a[(c[d>>2]|0)+78>>0]|0;if(!(b[m+(k*40|0)+8>>1]&2)){d=0;return d|0}if((a[m+(k*40|0)+10>>0]|0)==j<<24>>24){d=0;return d|0}else{e=Ig(l,j)|0;break}}while(0);if(!e){d=0;return d|0}j=c[d>>2]|0;c[j+64>>2]=e;Ne(j,e);j=c[d>>2]|0;if((e|0)==3082|(a[j+81>>0]|0)!=0){og(j);d=7;return d|0}else{d=c[j+68>>2]&e;return d|0}return 0}function Uc(a,d,e){a=a|0;d=d|0;e=+e;var f=0,h=0,i=0,j=0,k=0;j=Ra;Ra=Ra+16|0;f=j+8|0;h=j;i=Vc(a,d)|0;if(i|0){Ra=j;return i|0}k=c[a+100>>2]|0;d=d+-1|0;a=k+(d*40|0)|0;d=k+(d*40|0)+8|0;if(!(b[d>>1]&9216))b[d>>1]=1;else Dg(a);g[f>>3]=e;g[h>>3]=+g[f>>3];if(!(+g[f>>3]==+g[h>>3])){Ra=j;return i|0}g[a>>3]=e;b[d>>1]=8;Ra=j;return i|0}function Vc(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=Ra;Ra=Ra+64|0;i=l+40|0;k=l+32|0;j=l+16|0;h=l+8|0;do if(!e)Db(21,32555,l);else{g=c[e>>2]|0;if(!g){Db(21,32391,h);break}if((c[e+20>>2]|0)==770837923?(c[e+36>>2]|0)<=-1:0){if((f|0)>=1?(b[e+16>>1]|0)>=(f|0):0){j=f+-1|0;k=c[e+100>>2]|0;h=k+(j*40|0)|0;i=k+(j*40|0)+8|0;if(!((b[i>>1]&9216)==0?(c[k+(j*40|0)+24>>2]|0)==0:0)){Cg(h);g=c[e>>2]|0}b[i>>1]=1;c[g+64>>2]=0;g=c[e+208>>2]|0;if(!g){f=0;Ra=l;return f|0}if(!(g&((f|0)>31?-2147483648:1<>0]|d[f+1>>0]<<8)&-4|1;a[f>>0]=e;a[f+1>>0]=e>>8;f=0;Ra=l;return f|0}c[g+64>>2]=25;Ne(g,25);f=25;Ra=l;return f|0}c[g+64>>2]=21;Ne(g,21);c[k>>2]=c[e+188>>2];Db(21,36834,k);c[i>>2]=58063;c[i+4>>2]=82575;c[i+8>>2]=31517;Db(21,32001,i);f=21;Ra=l;return f|0}while(0);c[j>>2]=58063;c[j+4>>2]=82567;c[j+8>>2]=31517;Db(21,32001,j);f=21;Ra=l;return f|0}function Wc(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=((e|0)<0)<<31>>31;g=Vc(a,d)|0;if(g|0)return g|0;h=c[a+100>>2]|0;d=d+-1|0;a=h+(d*40|0)|0;d=h+(d*40|0)+8|0;if(!(b[d>>1]&9216)){h=a;c[h>>2]=e;c[h+4>>2]=f;b[d>>1]=4;return g|0}else{Pg(a,e,f);return g|0}return 0}function Xc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Tc(a,b,c,d,e,1)|0}function Yc(d,e,f){d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+16|0;i=t+8|0;j=t;h=b[f+8>>1]|0;switch(a[816+(h&31)>>0]|0){case 1:{j=f;i=c[j>>2]|0;j=c[j+4>>2]|0;h=Vc(d,e)|0;if(h|0){d=h;Ra=t;return d|0}d=c[d+100>>2]|0;f=e+-1|0;h=d+(f*40|0)|0;f=d+(f*40|0)+8|0;if(!(b[f>>1]&9216)){d=h;c[d>>2]=i;c[d+4>>2]=j;b[f>>1]=4;d=0;Ra=t;return d|0}else{Pg(h,i,j);d=0;Ra=t;return d|0}}case 2:{k=+g[f>>3];h=Vc(d,e)|0;if(h|0){d=h;Ra=t;return d|0}d=c[d+100>>2]|0;f=e+-1|0;h=d+(f*40|0)|0;f=d+(f*40|0)+8|0;if(!(b[f>>1]&9216))b[f>>1]=1;else Dg(h);g[i>>3]=k;g[j>>3]=+g[i>>3];if(!(+g[i>>3]==+g[j>>3])){d=0;Ra=t;return d|0}g[h>>3]=k;b[f>>1]=8;d=0;Ra=t;return d|0}case 4:{if(h&16384){l=c[f>>2]|0;h=Vc(d,e)|0;if(h|0){d=h;Ra=t;return d|0}j=c[d+100>>2]|0;h=e+-1|0;f=j+(h*40|0)|0;i=j+(h*40|0)+8|0;if(!((b[i>>1]&9216)==0?!(c[j+(h*40|0)+24>>2]|0):0))Cg(f);b[i>>1]=16400;c[j+(h*40|0)+12>>2]=0;c[f>>2]=(l|0)>0?l:0;a[j+(h*40|0)+10>>0]=1;c[j+(h*40|0)+16>>2]=0;d=0;Ra=t;return d|0}r=c[f+16>>2]|0;f=c[f+12>>2]|0;h=Vc(d,e)|0;if(h|0){d=h;Ra=t;return d|0}if(!r){d=0;Ra=t;return d|0}q=c[d+100>>2]|0;p=e+-1|0;n=q+(p*40|0)|0;l=c[q+(p*40|0)+32>>2]|0;e=(l|0)==0;if(e)i=1e9;else i=c[l+108>>2]|0;a:do if((f|0)<0)if((i|0)<0){o=528;j=0}else{h=0;while(1){if(!((a[r+(h|1)>>0]|a[r+h>>0])<<24>>24)){o=528;j=h;break a}h=h+2|0;if((h|0)>(i|0)){o=528;j=h;break}}}else{o=16;j=f}while(0);m=j+((o&65535)>>>8&65535)|0;do if((j|0)>(i|0))if(!e?(s=c[l+236>>2]|0,(s|0)!=0):0){c[s+12>>2]=18;f=s+36|0;c[f>>2]=(c[f>>2]|0)+1;f=18}else f=18;else{h=m>>>0>32?m:32;if((c[q+(p*40|0)+24>>2]|0)<(h|0)){if(Eg(n,h,0)|0){f=7;break}h=q+(p*40|0)+8|0;f=c[q+(p*40|0)+16>>2]|0}else{f=c[q+(p*40|0)+20>>2]|0;c[q+(p*40|0)+16>>2]=f;h=q+(p*40|0)+8|0;b[h>>1]=b[h>>1]&13}ew(f|0,r|0,m|0)|0;c[q+(p*40|0)+12>>2]=j;b[h>>1]=o;a[q+(p*40|0)+10>>0]=1;d=0;Ra=t;return d|0}while(0);h=c[d>>2]|0;c[h+64>>2]=f;Ne(h,f);h=c[d>>2]|0;if(!(a[h+81>>0]|0)){d=c[h+68>>2]&f;Ra=t;return d|0}else{og(h);d=7;Ra=t;return d|0}}case 3:{d=Tc(d,e,c[f+16>>2]|0,c[f+12>>2]|0,-1,a[f+10>>0]|0)|0;Ra=t;return d|0}default:{d=Vc(d,e)|0;Ra=t;return d|0}}return 0} -function ho(f,h,i){f=f|0;h=h|0;i=i|0;var 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,J=0;J=Ra;Ra=Ra+400|0;F=J+16|0;p=J;r=J+360|0;G=J+80|0;H=J+60|0;z=J+32|0;I=c[(c[f>>2]|0)+32>>2]|0;h=c[i>>2]|0;do if(h){j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0){u=c[h+16>>2]|0;break}if(!(j&1))u=Gg(h,1)|0;else u=0}else u=0;while(0);h=c[i+12>>2]|0;do if(h){j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0){B=c[h+16>>2]|0;break}if(!(j&1))B=Gg(h,1)|0;else B=0}else B=0;while(0);h=c[i+16>>2]|0;do if(h){j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0){x=c[h+16>>2]|0;break}if(!(j&1))x=Gg(h,1)|0;else x=0}else x=0;while(0);h=c[i+20>>2]|0;do if(h){j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0){A=c[h+16>>2]|0;break}if(!(j&1))A=Gg(h,1)|0;else A=0}else A=0;while(0);h=c[i+24>>2]|0;j=e[h+8>>1]|0;do if(!(j&4)){if(j&8|0){m=Mg(+g[h>>3])|0;L()|0;break}if(!(j&18))m=0;else{m=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;L()|0}}else m=c[h>>2]|0;while(0);if(!((B|0)!=0&(x|0)!=0&(A|0)!=0)){Ra=J;return}C=I+312|0;D=c[C>>2]|0;c[C>>2]=0;n=I+20|0;l=c[n>>2]|0;if((l|0)>0){j=c[I+16>>2]|0;h=0;do{k=c[j+(h<<4)+4>>2]|0;if(k|0)c[(c[k+4>>2]|0)+4>>2]=c[k>>2];h=h+1|0}while((h|0)!=(l|0))};c[H>>2]=0;c[H+4>>2]=0;c[H+8>>2]=0;c[H+12>>2]=0;c[H+16>>2]=0;o=Sd(I,x,u)|0;w=H+12|0;c[w>>2]=o;o=z+12|0;c[o>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[z>>2]=G;c[z+4>>2]=152;c[z+8>>2]=153;c[z+24>>2]=H;c[r>>2]=0;o=(m|0)==0;if(o){a:do if(u){y=c[n>>2]|0;j=y+-1|0;if((y|0)>0){h=j;m=(c[I+16>>2]|0)+(j<<4)|0;while(1){k=c[m>>2]|0;if(k|0){y=a[k>>0]|0;j=(d[208+(y&255)>>0]|0)-(d[208+(d[u>>0]|0)>>0]|0)|0;if(!(y<<24>>24==0|(j|0)!=0)){l=u;do{k=k+1|0;l=l+1|0;y=a[k>>0]|0;j=(d[208+(y&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(y<<24>>24==0|(j|0)!=0))}if(!j)break a}if(!h)break;j=h+-1|0;if((h|0)>0){h=j;m=m+-16|0}else{h=j;break a}}h=109-(d[208+(d[u>>0]|0)>>0]|0)|0;if(!h){j=u;k=50919;do{k=k+1|0;j=j+1|0;y=a[k>>0]|0;h=(d[208+(y&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(y<<24>>24==0|(h|0)!=0))}h=((h|0)!=0)<<31>>31}else h=j}else h=-1;while(0);h=h&255}else h=1;j=I+164|0;a[j>>0]=h;y=G+4|0;gw(y|0,0,272)|0;a[G+200>>0]=3;c[G>>2]=I;c[G+132>>2]=1;h=ud(G,B,r)|0;c[y>>2]=c[r>>2];h=(a[I+81>>0]|0)==0?h:7;b:do if(!h){q=c[G+228>>2]|0;h=(q|0)==0;if((h?(c[G+232>>2]|0)==0:0)?(c[G+236>>2]|0)==0:0){c[p>>2]=32306;c[p+4>>2]=103316;c[p+8>>2]=31517;Db(11,32001,p);h=11;E=58;break}a[j>>0]=0;k=c[I+32>>2]|0;n=k&67108864;c:do if(h){m=G+232|0;h=c[m>>2]|0;if(h|0){l=c[h>>2]|0;h=G+272|0;j=c[h>>2]|0;d:do if(j|0){while(1){k=j+12|0;if((c[j>>2]|0)==(l|0))break;j=c[k>>2]|0;if(!j)break d;else h=k}c[h>>2]=c[k>>2];c[k>>2]=c[H>>2];c[H>>2]=j;x=H+4|0;c[x>>2]=(c[x>>2]|0)+1}while(0);if(n|0)break;h=c[(c[m>>2]|0)+36>>2]|0;if(!h)break;_j(z,h)|0;break}m=c[G+236>>2]|0;l=c[m+4>>2]|0;e:do if(l|0){s=a[l>>0]|0;h=(d[208+(s&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0;if(!(s<<24>>24==0|(h|0)!=0)){j=x;k=l;do{k=k+1|0;j=j+1|0;s=a[k>>0]|0;h=(d[208+(s&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(s<<24>>24==0|(h|0)!=0))}if(((h|0)==0?(c[(c[w>>2]|0)+72>>2]|0)==(c[m+24>>2]|0):0)?(t=G+272|0,v=c[t>>2]|0,v|0):0){k=t;h=v;while(1){j=h+12|0;if((c[h>>2]|0)==(l|0))break;h=c[j>>2]|0;if(!h)break e;else k=j}c[k>>2]=c[j>>2];c[j>>2]=c[H>>2];c[H>>2]=h;w=H+4|0;c[w>>2]=(c[w>>2]|0)+1}}while(0);if(!n){h=lo(G,o?u:0)|0;if(h|0){E=131;break b}oo(z,m);h=c[m+28>>2]|0;if(h|0){n=G+272|0;o=H+4|0;do{m=c[h+12>>2]|0;f:do if(m|0){z=a[m>>0]|0;j=(d[208+(z&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0;if(!(z<<24>>24==0|(j|0)!=0)){k=x;l=m;do{l=l+1|0;k=k+1|0;z=a[l>>0]|0;j=(d[208+(z&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(z<<24>>24==0|(j|0)!=0))}if(j|0)break;j=c[n>>2]|0;if(!j)break;l=n;while(1){k=j+12|0;if((c[j>>2]|0)==(m|0))break;j=c[k>>2]|0;if(!j)break f;else l=k}c[l>>2]=c[k>>2];c[k>>2]=c[H>>2];c[H>>2]=j;c[o>>2]=(c[o>>2]|0)+1}while(0);h=c[h+36>>2]|0}while((h|0)!=0)}}}else{j=q+12|0;p=(n|0)==0;if(c[j>>2]|0){if(!p)break;x=r+4|0;c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;c[x+16>>2]=0;c[x+20>>2]=0;c[x+24>>2]=0;c[r>>2]=G;Kk(G,c[j>>2]|0,r);x=(c[G+36>>2]|0)==0;h=c[G+12>>2]|0;$j(z,c[j>>2]|0)|0;if(x|(h|0)==0)break;else{E=131;break b}}if(!((k&16384|0)==0&0==0&(p^1))?(s=c[q+16>>2]|0,s|0):0){n=G+272|0;o=H+4|0;l=s;do{m=c[l+8>>2]|0;g:do if(m|0){v=a[m>>0]|0;h=(d[208+(v&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0;if(!(v<<24>>24==0|(h|0)!=0)){j=x;k=m;do{k=k+1|0;j=j+1|0;v=a[k>>0]|0;h=(d[208+(v&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(h|0)!=0))}if(h|0)break;h=c[n>>2]|0;if(!h)break;k=n;while(1){j=h+12|0;if((c[h>>2]|0)==(m|0))break;h=c[j>>2]|0;if(!h)break g;else k=j}c[k>>2]=c[j>>2];c[j>>2]=c[H>>2];c[H>>2]=h;c[o>>2]=(c[o>>2]|0)+1}while(0);l=c[l+4>>2]|0}while((l|0)!=0)}l=c[q>>2]|0;if(l|0){v=a[x>>0]|0;h=(d[208+(v&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0;if(!(v<<24>>24==0|(h|0)!=0)){k=l;j=x;do{j=j+1|0;k=k+1|0;x=a[j>>0]|0;h=(d[208+(x&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(x<<24>>24==0|(h|0)!=0))}if(!h){c[w>>2]=q;do if(p){j=c[q+24>>2]|0;if(!j)break;h=c[j>>2]|0;if((h|0)<=0)break;k=h;h=j+4|0;while(1){j=c[h>>2]|0;if(j|0?_j(z,j)|0:0)break;if((k|0)>1){k=k+-1|0;h=h+20|0}else break}l=c[q>>2]|0}while(0);h=G+272|0;j=c[h>>2]|0;if(j|0){while(1){k=j+12|0;if((c[j>>2]|0)==(l|0))break;j=c[k>>2]|0;if(!j)break c;else h=k}c[h>>2]=c[k>>2];c[k>>2]=c[H>>2];c[H>>2]=j;z=H+4|0;c[z>>2]=(c[z>>2]|0)+1}}}}while(0);h=po(f,H,B,A,1)|0;if(h|0)E=131}else E=58;while(0);if((E|0)==58){a[j>>0]=0;E=131}do if((E|0)==131){if(!(c[y>>2]|0)){c[f+20>>2]=h;j=c[f>>2]|0;if(!(b[j+8>>1]&1))break;switch(h|0){case 516:{h=50738;break}case 100:{h=50760;break}case 101:{h=50782;break}default:{h=h&255;if(h>>>0<29?(520028155>>>h&1|0)!=0:0)h=c[22960+(h<<2)>>2]|0;else h=50724}}yc(j,h,-1,1,0)|0;break}j=c[i+4>>2]|0;k=c[i+8>>2]|0;do if(j){h=b[j+8>>1]|0;if((h&514)==514?(a[j+10>>0]|0)==1:0){j=c[j+16>>2]|0;break}if(!(h&1))j=Gg(j,1)|0;else j=0}else j=0;while(0);do if(k){h=b[k+8>>1]|0;if((h&514)==514?(a[k+10>>0]|0)==1:0){h=c[k+16>>2]|0;break}if(!(h&1))h=Gg(k,1)|0;else h=0}else h=0;while(0);i=c[y>>2]|0;c[F>>2]=j;c[F+4>>2]=h;c[F+8>>2]=59952;c[F+12>>2]=i;h=Bb(49618,F)|0;c[f+20>>2]=1;yc(c[f>>2]|0,h,-1,1,-1)|0;if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{f=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);qo(G);ro(I,c[H>>2]|0);c[C>>2]=D;Ra=J;return}function io(f,h,i){f=f|0;h=h|0;i=i|0;var 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;A=Ra;Ra=Ra+352|0;u=A+16|0;r=A;s=A+312|0;z=A+32|0;v=c[(c[f>>2]|0)+32>>2]|0;j=c[i>>2]|0;do if(j){h=b[j+8>>1]|0;if((h&514)==514?(a[j+10>>0]|0)==1:0){j=c[j+16>>2]|0;break}if(!(h&1))j=Gg(j,1)|0;else j=0}else j=0;while(0);h=c[i+4>>2]|0;do if(h){k=b[h+8>>1]|0;if((k&514)==514?(a[h+10>>0]|0)==1:0){o=c[h+16>>2]|0;break}if(!(k&1))o=Gg(h,1)|0;else o=0}else o=0;while(0);h=c[i+16>>2]|0;k=e[h+8>>1]|0;do if(!(k&4)){if(k&8|0){h=Mg(+g[h>>3])|0;L()|0;break}if(!(k&18))h=0;else{h=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;L()|0}}else h=c[h>>2]|0;while(0);p=c[v+32>>2]|0;w=v+312|0;x=c[w>>2]|0;c[w>>2]=0;if(!((j|0)!=0&(o|0)!=0)){c[w>>2]=x;Ra=A;return}c[s>>2]=0;q=(h|0)==0;if(q){n=c[v+20>>2]|0;k=n+-1|0;a:do if((n|0)>0){h=k;n=(c[v+16>>2]|0)+(k<<4)|0;while(1){l=c[n>>2]|0;if(l|0){m=a[l>>0]|0;k=(d[208+(m&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0;if(!(m<<24>>24==0|(k|0)!=0)){m=j;do{l=l+1|0;m=m+1|0;B=a[l>>0]|0;k=(d[208+(B&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(B<<24>>24==0|(k|0)!=0))}if(!k)break a}if(!h)break;k=h+-1|0;if((h|0)>0){h=k;n=n+-16|0}else{h=k;break a}}h=109-(d[208+(d[j>>0]|0)>>0]|0)|0;if(!h){k=j;l=50919;do{l=l+1|0;k=k+1|0;B=a[l>>0]|0;h=(d[208+(B&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(B<<24>>24==0|(h|0)!=0))}h=((h|0)!=0)<<31>>31}else h=k;while(0);h=h&255}else h=1;l=v+164|0;a[l>>0]=h;m=z+4|0;gw(m|0,0,272)|0;a[z+200>>0]=3;c[z>>2]=v;c[z+132>>2]=1;B=ud(z,o,s)|0;c[m>>2]=c[s>>2];do if((B|0)==0&(a[v+81>>0]|0)==0){h=c[z+228>>2]|0;k=(h|0)==0;if((k?(c[z+232>>2]|0)==0:0)?(c[z+236>>2]|0)==0:0){c[r>>2]=32306;c[r+4>>2]=103316;c[r+8>>2]=31517;Db(11,32001,r);y=40;break}a[l>>0]=0;l=(p&67108864|0)==0&0==0;if(!(k|l^1)?(t=h+12|0,c[t>>2]|0):0){B=s+4|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[s>>2]=z;Kk(z,c[t>>2]|0,s);if((c[z+36>>2]|0)==0|(c[z+12>>2]|0)==0)break;else{y=68;break}}k=z+236|0;h=c[k>>2]|0;if(h|0){if(l){if(lo(z,q?j:0)|0){y=68;break}h=c[k>>2]|0}k=c[h+24>>2]|0;if(!k)o=-1e6;else{l=c[v+16>>2]|0;h=0;while(1)if((c[l+(h<<4)+12>>2]|0)==(k|0)){o=h;break}else h=h+1|0}B=c[v+20>>2]|0;k=B+-1|0;b:do if((B|0)>0){h=k;n=(c[v+16>>2]|0)+(k<<4)|0;while(1){l=c[n>>2]|0;if(l|0){B=a[l>>0]|0;k=(d[208+(B&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0;if(!(B<<24>>24==0|(k|0)!=0)){m=j;do{l=l+1|0;m=m+1|0;B=a[l>>0]|0;k=(d[208+(B&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(B<<24>>24==0|(k|0)!=0))}if(!k)break b}if(!h)break;k=h+-1|0;if((h|0)>0){h=k;n=n+-16|0}else{h=k;break b}}h=109-(d[208+(d[j>>0]|0)>>0]|0)|0;if(!h){k=50919;do{k=k+1|0;j=j+1|0;B=a[k>>0]|0;h=(d[208+(B&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(B<<24>>24==0|(h|0)!=0))}h=((h|0)!=0)<<31>>31}else h=k;while(0);if((o|0)==(h|0)){h=c[f>>2]|0;j=h+8|0;if(!(b[j>>1]&9216)){B=h;c[B>>2]=1;c[B+4>>2]=0;b[j>>1]=4;break}else{Pg(h,1,0);break}}}}else y=40;while(0);if((y|0)==40){a[l>>0]=0;y=68}do if((y|0)==68){j=c[i+8>>2]|0;k=c[i+12>>2]|0;do if(j){h=b[j+8>>1]|0;if((h&514)==514?(a[j+10>>0]|0)==1:0){j=c[j+16>>2]|0;break}if(!(h&1))j=Gg(j,1)|0;else j=0}else j=0;while(0);do if(k){h=b[k+8>>1]|0;if((h&514)==514?(a[k+10>>0]|0)==1:0){h=c[k+16>>2]|0;break}if(!(h&1))h=Gg(k,1)|0;else h=0}else h=0;while(0);B=c[m>>2]|0;c[u>>2]=j;c[u+4>>2]=h;c[u+8>>2]=49639;c[u+12>>2]=B;h=Bb(49618,u)|0;c[f+20>>2]=1;yc(c[f>>2]|0,h,-1,1,-1)|0;if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{B=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-B;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);qo(z);c[w>>2]=x;Ra=A;return}function jo(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=c[d+24>>2]|0;switch(a[e>>0]|0){case 77:{if((c[i+8>>2]|0)!=(b[e+32>>1]|0))return 0;d=c[d>>2]|0;if((c[d+120>>2]|0)!=(c[i+12>>2]|0))return 0;d=d+272|0;f=c[d>>2]|0;if(!f)return 0;while(1){h=f+12|0;if((c[f>>2]|0)==(e|0))break;g=c[h>>2]|0;if(!g){j=16;break}else{d=h;f=g}}if((j|0)==16)return 0;c[d>>2]=c[h>>2];c[h>>2]=c[i>>2];c[i>>2]=f;j=i+4|0;c[j>>2]=(c[j>>2]|0)+1;return 0}case -94:{if((c[i+8>>2]|0)!=(b[e+32>>1]|0))return 0;if((c[i+12>>2]|0)!=(c[e+44>>2]|0))return 0;d=(c[d>>2]|0)+272|0;f=c[d>>2]|0;if(!f)return 0;while(1){h=f+12|0;if((c[f>>2]|0)==(e|0))break;g=c[h>>2]|0;if(!g){j=16;break}else{d=h;f=g}}if((j|0)==16)return 0;c[d>>2]=c[h>>2];c[h>>2]=c[i>>2];c[i>>2]=f;j=i+4|0;c[j>>2]=(c[j>>2]|0)+1;return 0}default:return 0}return 0}function ko(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=Ra;Ra=Ra+32|0;g=h;e=b+64|0;b=c[e>>2]|0;if(!b){Ra=h;return 0}if((c[b>>2]|0)<=0){Ra=h;return 0}f=g+4|0;d=0;do{i=c[b+8+(d<<4)+8>>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;c[f+24>>2]=0;j=c[a>>2]|0;c[g>>2]=j;Kk(j,i,g);$j(a,i)|0;d=d+1|0;b=c[e>>2]|0}while((d|0)<(c[b>>2]|0));Ra=h;return 0}function lo(d,f){d=d|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,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;ea=Ra;Ra=Ra+208|0;aa=ea+128|0;$=ea+120|0;_=ea+112|0;ca=ea+104|0;ba=ea+96|0;Z=ea+88|0;n=ea+80|0;W=ea+168|0;X=ea+136|0;Y=ea;k=c[d>>2]|0;o=c[d+236>>2]|0;i=X+4|0;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;c[i+12>>2]=0;c[i+16>>2]=0;c[i+20>>2]=0;c[i+24>>2]=0;c[X>>2]=d;i=c[o+4>>2]|0;j=c[k+16>>2]|0;h=c[o+24>>2]|0;m=d;if(!h)g=-1e6;else{g=0;while(1)if((c[j+(g<<4)+12>>2]|0)==(h|0))break;else g=g+1|0}g=Sd(k,i,c[j+(g<<4)>>2]|0)|0;c[d+120>>2]=g;a[d+144>>0]=a[o+8>>0]|0;if(g|0?(l=Sk(d,g)|0,l|0):0){da=l;Ra=ea;return da|0}i=c[o+12>>2]|0;if(!i)g=0;else{j=X+24|0;b[j>>1]=0;c[W>>2]=m;c[W+4>>2]=125;c[W+8>>2]=126;c[W+12>>2]=0;c[W+24>>2]=X;h=i+24|0;g=d+208|0;U=(c[g>>2]|0)+(c[h>>2]|0)|0;c[g>>2]=U;g=c[(c[d>>2]|0)+120>>2]|0;if((g|0)>=(U|0)){_j(W,i)|0;g=c[W>>2]|0;U=g+208|0;c[U>>2]=(c[U>>2]|0)-(c[h>>2]|0);U=i+4|0;c[U>>2]=c[U>>2]|b[j>>1]&-32752&65535;if((c[X+20>>2]|0)>0)g=1;else g=(c[g+36>>2]|0)>0&1}else{c[n>>2]=g;cd(d,41637,n);g=1}}h=c[o+28>>2]|0;if(!((g|0)==0&(h|0)!=0)){da=g;Ra=ea;return da|0}q=d+36|0;r=d+12|0;s=Y+16|0;t=Y+24|0;u=X+4|0;v=X+24|0;w=W+4|0;x=W+8|0;y=W+12|0;z=W+24|0;A=X+8|0;B=X+20|0;C=W+4|0;D=W+8|0;E=W+12|0;F=W+24|0;G=W+4|0;H=W+8|0;I=W+12|0;J=W+24|0;K=W+4|0;L=W+8|0;M=W+12|0;N=W+24|0;O=W+4|0;P=W+8|0;Q=W+12|0;R=W+24|0;S=W+4|0;T=W+8|0;U=W+12|0;p=W+24|0;while(1){g=c[h+8>>2]|0;if((g|0?(Kk(d,g,X),c[q>>2]|0):0)?(V=c[r>>2]|0,V|0):0){g=V;da=76;break}k=h+12|0;g=c[k>>2]|0;if(!g)g=0;else{j=bd(d,0,g,f)|0;if(!j){g=1;da=76;break}g=Sk(d,j)|0;if(g|0){da=76;break}g=Y;i=g+80|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(i|0));c[Y>>2]=1;c[s>>2]=c[k>>2];c[t>>2]=j;c[u>>2]=Y;j=c[h+16>>2]|0;do if(!j)da=26;else{k=e[v>>1]|0;b[v>>1]=k&28655;g=c[X>>2]|0;c[W>>2]=g;c[w>>2]=125;c[x>>2]=126;c[y>>2]=0;c[z>>2]=X;l=j+24|0;i=g+208|0;o=(c[i>>2]|0)+(c[l>>2]|0)|0;c[i>>2]=o;i=c[(c[g>>2]|0)+120>>2]|0;if((i|0)>=(o|0)){_j(W,j)|0;g=c[W>>2]|0;o=g+208|0;c[o>>2]=(c[o>>2]|0)-(c[l>>2]|0);o=b[v>>1]|0;n=j+4|0;c[n>>2]=c[n>>2]|o&-32752&65535;b[v>>1]=k&36880|o&65535;if((c[B>>2]|0)<=0)if((c[g+36>>2]|0)<1){da=26;break}else{g=1;break}}else{c[Z>>2]=i;cd(g,41637,Z)}g=1}while(0);a:do if((da|0)==26){da=0;k=c[h+20>>2]|0;if((k|0)!=0?(c[k>>2]|0)>0:0){j=0;while(1){l=c[k+4+(j*20|0)>>2]|0;if(l){m=e[v>>1]|0;b[v>>1]=m&28655;g=c[X>>2]|0;c[W>>2]=g;c[C>>2]=125;c[D>>2]=126;c[E>>2]=0;c[F>>2]=X;n=l+24|0;i=g;fa=i+208|0;o=(c[fa>>2]|0)+(c[n>>2]|0)|0;c[fa>>2]=o;i=c[(c[i>>2]|0)+120>>2]|0;if((i|0)<(o|0)){da=33;break}_j(W,l)|0;g=c[W>>2]|0;fa=g+208|0;c[fa>>2]=(c[fa>>2]|0)-(c[n>>2]|0);fa=b[v>>1]|0;o=l+4|0;c[o>>2]=c[o>>2]|fa&-32752&65535;b[v>>1]=m&36880|fa&65535;if((c[B>>2]|0)>0)break;if((c[g+36>>2]|0)>=1){g=2;break a}}j=j+1|0;if((j|0)>=(c[k>>2]|0)){g=0;break a}}if((da|0)==33){da=0;c[ba>>2]=i;cd(g,41637,ba)}g=2}else g=0}while(0);o=c[h+28>>2]|0;if(o){c[o+20>>2]=Y;c[A>>2]=o;b[v>>1]=512;n=c[o>>2]|0;b:do if((n|0)!=0?(c[n>>2]|0)>0:0){m=0;g=512;while(1){l=c[n+4+(m*20|0)>>2]|0;if(l){j=g&65535;b[v>>1]=j&28655;g=c[X>>2]|0;c[W>>2]=g;c[G>>2]=125;c[H>>2]=126;c[I>>2]=0;c[J>>2]=X;k=l+24|0;i=g;ga=i+208|0;fa=(c[ga>>2]|0)+(c[k>>2]|0)|0;c[ga>>2]=fa;i=c[(c[i>>2]|0)+120>>2]|0;if((i|0)<(fa|0)){da=45;break}_j(W,l)|0;i=c[W>>2]|0;g=i+208|0;c[g>>2]=(c[g>>2]|0)-(c[k>>2]|0);g=b[v>>1]|0;ga=l+4|0;c[ga>>2]=c[ga>>2]|g&-32752&65535;g=(j&36880|g&65535)&65535;b[v>>1]=g;if((c[B>>2]|0)>0)break;if((c[i+36>>2]|0)>=1){g=2;break b}}m=m+1|0;if((m|0)>=(c[n>>2]|0)){da=49;break b}}if((da|0)==45){da=0;c[ca>>2]=i;cd(g,41637,ca)}g=2}else{g=512;da=49}while(0);c:do if((da|0)==49){da=0;n=c[o+8>>2]|0;d:do if((n|0)!=0?(c[n>>2]|0)>0:0){m=0;while(1){l=c[n+4+(m*20|0)>>2]|0;if(l){j=g&65535;b[v>>1]=j&28655;g=c[X>>2]|0;c[W>>2]=g;c[O>>2]=125;c[P>>2]=126;c[Q>>2]=0;c[R>>2]=X;k=l+24|0;i=g;fa=i+208|0;ga=(c[fa>>2]|0)+(c[k>>2]|0)|0;c[fa>>2]=ga;i=c[(c[i>>2]|0)+120>>2]|0;if((i|0)<(ga|0)){da=56;break}_j(W,l)|0;i=c[W>>2]|0;g=i+208|0;c[g>>2]=(c[g>>2]|0)-(c[k>>2]|0);g=b[v>>1]|0;ga=l+4|0;c[ga>>2]=c[ga>>2]|g&-32752&65535;g=(j&36880|g&65535)&65535;b[v>>1]=g;if((c[B>>2]|0)>0)break;if((c[i+36>>2]|0)>=1){g=2;break c}}m=m+1|0;if((m|0)>=(c[n>>2]|0))break d}if((da|0)==56){da=0;c[_>>2]=i;cd(g,41637,_)}g=2;break c}while(0);l=c[o+12>>2]|0;e:do if(l){j=g&65535;b[v>>1]=j&28655;g=c[X>>2]|0;c[W>>2]=g;c[K>>2]=125;c[L>>2]=126;c[M>>2]=0;c[N>>2]=X;k=l+24|0;i=g+208|0;ga=(c[i>>2]|0)+(c[k>>2]|0)|0;c[i>>2]=ga;i=c[(c[g>>2]|0)+120>>2]|0;do if((i|0)>=(ga|0)){_j(W,l)|0;i=c[W>>2]|0;g=i+208|0;c[g>>2]=(c[g>>2]|0)-(c[k>>2]|0);g=b[v>>1]|0;ga=l+4|0;c[ga>>2]=c[ga>>2]|g&-32752&65535;g=(j&36880|g&65535)&65535;b[v>>1]=g;if((c[B>>2]|0)>0)break;if((c[i+36>>2]|0)<1)break e;else{g=1;break c}}else{c[$>>2]=i;cd(g,41637,$)}while(0);g=1;break c}while(0);l=c[o+4>>2]|0;do if(!l)g=0;else{j=g&65535;b[v>>1]=j&28655;g=c[X>>2]|0;c[W>>2]=g;c[S>>2]=125;c[T>>2]=126;c[U>>2]=0;c[p>>2]=X;k=l+24|0;i=g+208|0;ga=(c[i>>2]|0)+(c[k>>2]|0)|0;c[i>>2]=ga;i=c[(c[g>>2]|0)+120>>2]|0;if((i|0)<(ga|0)){c[aa>>2]=i;cd(g,41637,aa);g=1;break}_j(W,l)|0;g=c[W>>2]|0;ga=g+208|0;c[ga>>2]=(c[ga>>2]|0)-(c[k>>2]|0);ga=b[v>>1]|0;fa=l+4|0;c[fa>>2]=c[fa>>2]|ga&-32752&65535;b[v>>1]=j&36880|ga&65535;if((c[B>>2]|0)>0){g=1;break}g=(c[g+36>>2]|0)>0&1}while(0)}while(0);b[v>>1]=0}c[u>>2]=0}h=c[h+36>>2]|0;if(!((g|0)==0&(h|0)!=0)){da=76;break}}if((da|0)==76){Ra=ea;return g|0}return 0}function mo(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,l=0,m=0,n=0,o=0,p=0,q=0;if(!f)return;p=c[f>>2]|0;if((p|0)<=0)return;m=((g|0)!=0)<<31>>31;n=b+272|0;o=e+4|0;if(!g){h=0;do{a:do if((c[f+4+(h*20|0)+4>>2]|0)==0?(k=c[n>>2]|0,k|0):0){i=n;b=k;while(1){j=b+12|0;if(!(c[b>>2]|0))break;b=c[j>>2]|0;if(!b)break a;else i=j}c[i>>2]=c[j>>2];c[j>>2]=c[e>>2];c[e>>2]=b;c[o>>2]=(c[o>>2]|0)+1}while(0);h=h+1|0}while((h|0)<(p|0));return}j=0;do{k=c[f+4+(j*20|0)+4>>2]|0;if(k){i=a[k>>0]|0;b=(d[208+(i&255)>>0]|0)-(d[208+(d[g>>0]|0)>>0]|0)|0;if(!(i<<24>>24==0|(b|0)!=0)){h=g;i=k;do{i=i+1|0;h=h+1|0;q=a[i>>0]|0;b=(d[208+(q&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(q<<24>>24==0|(b|0)!=0))}}else b=m;b:do if((b|0)==0?(l=c[n>>2]|0,l|0):0){h=n;b=l;while(1){i=b+12|0;if((c[b>>2]|0)==(k|0))break;b=c[i>>2]|0;if(!b)break b;else h=i}c[h>>2]=c[i>>2];c[i>>2]=c[e>>2];c[e>>2]=b;c[o>>2]=(c[o>>2]|0)+1}while(0);j=j+1|0}while((j|0)<(p|0));return}function no(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,l=0,m=0,n=0,o=0,p=0,q=0;if(!f)return;p=c[f+4>>2]|0;if((p|0)<=0)return;m=((g|0)!=0)<<31>>31;n=b+272|0;o=e+4|0;if(!g){h=0;do{a:do if((c[(c[f>>2]|0)+(h<<3)>>2]|0)==0?(k=c[n>>2]|0,k|0):0){i=n;b=k;while(1){j=b+12|0;if(!(c[b>>2]|0))break;b=c[j>>2]|0;if(!b)break a;else i=j}c[i>>2]=c[j>>2];c[j>>2]=c[e>>2];c[e>>2]=b;c[o>>2]=(c[o>>2]|0)+1}while(0);h=h+1|0}while((h|0)<(p|0));return}j=0;do{k=c[(c[f>>2]|0)+(j<<3)>>2]|0;if(k){i=a[k>>0]|0;b=(d[208+(i&255)>>0]|0)-(d[208+(d[g>>0]|0)>>0]|0)|0;if(!(i<<24>>24==0|(b|0)!=0)){h=g;i=k;do{i=i+1|0;h=h+1|0;q=a[i>>0]|0;b=(d[208+(q&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(q<<24>>24==0|(b|0)!=0))}}else b=m;b:do if((b|0)==0?(l=c[n>>2]|0,l|0):0){h=n;b=l;while(1){i=b+12|0;if((c[b>>2]|0)==(k|0))break;b=c[i>>2]|0;if(!b)break b;else h=i}c[h>>2]=c[i>>2];c[i>>2]=c[e>>2];c[e>>2]=b;c[o>>2]=(c[o>>2]|0)+1}while(0);j=j+1|0}while((j|0)<(p|0));return}function oo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=c[b+12>>2]|0;if(d|0)_j(a,d)|0;b=c[b+28>>2]|0;if(!b)return;do{$j(a,c[b+8>>2]|0)|0;d=c[b+16>>2]|0;if(d|0)_j(a,d)|0;d=c[b+20>>2]|0;a:do if(d|0?(h=c[d>>2]|0,(h|0)>0):0){f=h;d=d+4|0;while(1){e=c[d>>2]|0;if(e|0?_j(a,e)|0:0)break a;if((f|0)>1){f=f+-1|0;d=d+20|0}else break}}while(0);g=c[b+28>>2]|0;if(g|0){d=c[g>>2]|0;b:do if(d|0?(i=c[d>>2]|0,(i|0)>0):0){f=i;d=d+4|0;while(1){e=c[d>>2]|0;if(e|0?_j(a,e)|0:0)break b;if((f|0)>1){f=f+-1|0;d=d+20|0}else break}}while(0);d=c[g+8>>2]|0;c:do if(d|0?(j=c[d>>2]|0,(j|0)>0):0){f=j;d=d+4|0;while(1){e=c[d>>2]|0;if(e|0?_j(a,e)|0:0)break c;if((f|0)>1){f=f+-1|0;d=d+20|0}else break}}while(0);d=c[g+12>>2]|0;if(d|0)_j(a,d)|0;d=c[g+4>>2]|0;if(d|0)_j(a,d)|0}b=c[b+36>>2]|0}while((b|0)!=0);return}function po(b,f,g,h,i){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;var 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;z=Ra;Ra=Ra+16|0;j=z;if(!h)k=0;else k=(Eu(h)|0)&1073741823;if(!g)n=0;else n=(Eu(g)|0)&1073741823;x=c[(c[b>>2]|0)+32>>2]|0;c[j>>2]=h;y=dd(x,49613,j)|0;if(!y){y=7;Ra=z;return y|0}w=(Eu(y)|0)&1073741823;u=(i|0)==0;v=u?k:w;u=u?h:y;h=n+1+(G(c[f+4>>2]|0,w)|0)|0;i=((h|0)<0)<<31>>31;t=(x|0)==0;a:do if(t){s=Sv(h|0,i|0,-1,-1)|0;r=L()|0;if(!(r>>>0>0|(r|0)==0&s>>>0>2147483390)){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](h)|0;l=30;break}j=Wa[c[29356>>2]&127](h)|0;if((c[14985]|0)>>>0>>0)c[14985]=h;i=59064;k=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&k>>>0>0){s=c[14978]|0;r=Tv(k|0,i|0,j|0,((j|0)<0)<<31>>31|0)|0;q=L()|0;c[14768]=((q|0)<0|(q|0)==0&r>>>0<=s>>>0)&1}j=Wa[c[29340>>2]&127](j)|0;if(j){k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;l=31}else l=31}else j=7}else j=7}else{if(c[x+272>>2]|0){if(a[x+81>>0]|0){j=7;break}}else{do if(!(0>>0|(0==(i|0)?(e[x+276>>1]|0)>>>0>>0:0))){k=x+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];l=x+284|0;c[l>>2]=(c[l>>2]|0)+1;l=30;break a}k=x+296|0;j=c[k>>2]|0;if(!j){j=x+292|0;break}else{c[k>>2]=c[j>>2];l=x+284|0;c[l>>2]=(c[l>>2]|0)+1;l=30;break a}}else j=x+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(x,h,i)|0;l=30}while(0);if((l|0)==30)if(!j)j=7;else l=31;do if((l|0)==31){gw(j+n|0,0,(h>>>0>n>>>0?h-n|0:0)|0)|0;ew(j|0,g|0,n|0)|0;l=c[f>>2]|0;b:do if(l|0){s=g;o=x+480|0;p=x+304|0;q=x+308|0;r=x+300|0;if(t)while(1){k=c[l+12>>2]|0;if(!k)m=l;else{h=k;i=l;do{i=(c[h+4>>2]|0)>>>0>(c[i+4>>2]|0)>>>0?h:i;h=c[h+12>>2]|0}while((h|0)!=0);m=i}if((l|0)==(m|0))k=f;else{if((k|0)==(m|0))k=l;else while(1){i=c[k+12>>2]|0;if((i|0)==(m|0))break;else k=i}k=k+12|0}c[k>>2]=c[m+12>>2];g=c[m+4>>2]|0;l=(a[880+(d[g>>0]|0)>>0]&70)==0;h=l?w:v;g=g-s|0;k=m+8|0;i=c[k>>2]|0;if((i|0)==(h|0))k=n;else{r=g+i|0;fw(j+(h+g)|0,j+r|0,n-r|0)|0;k=h-(c[k>>2]|0)+n|0;a[j+k>>0]=0}ew(j+g|0,(l?y:u)|0,h|0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](m);else{r=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m)}l=c[f>>2]|0;if(!l)break b;else n=k}while(1){k=c[l+12>>2]|0;if(!k)m=l;else{h=k;i=l;do{i=(c[h+4>>2]|0)>>>0>(c[i+4>>2]|0)>>>0?h:i;h=c[h+12>>2]|0}while((h|0)!=0);m=i}if((l|0)==(m|0))k=f;else{if((k|0)==(m|0))k=l;else while(1){i=c[k+12>>2]|0;if((i|0)==(m|0))break;else k=i}k=k+12|0}c[k>>2]=c[m+12>>2];g=c[m+4>>2]|0;l=(a[880+(d[g>>0]|0)>>0]&70)==0;h=l?w:v;g=g-s|0;k=m+8|0;i=c[k>>2]|0;if((i|0)==(h|0))k=n;else{i=g+i|0;fw(j+(h+g)|0,j+i|0,n-i|0)|0;k=h-(c[k>>2]|0)+n|0;a[j+k>>0]=0}ew(j+g|0,(l?y:u)|0,h|0)|0;do if(!(c[o>>2]|0)){n=m;if((c[p>>2]|0)>>>0<=n>>>0?(c[q>>2]|0)>>>0>n>>>0:0){c[m>>2]=c[r>>2];c[r>>2]=m;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{n=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}else Xd(x,m);while(0);l=c[f>>2]|0;if(!l)break;else n=k}}while(0);if((yc(c[b>>2]|0,j,-1,1,-1)|0)==18){c[b+20>>2]=18;yc(c[b>>2]|0,31223,-1,1,0)|0}if(!t){if(c[x+480>>2]|0){Xd(x,j);j=0;break}f=j;if((c[x+304>>2]|0)>>>0<=f>>>0?(c[x+308>>2]|0)>>>0>f>>>0:0){x=x+300|0;c[j>>2]=c[x>>2];c[x>>2]=j;j=0;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);j=0;break}else{x=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);j=0;break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](y);y=j;Ra=z;return y|0}else{x=Wa[c[29352>>2]&127](y)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](y);y=j;Ra=z;return y|0}return 0}function qo(b){b=b|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;o=c[b>>2]|0;i=c[b+8>>2]|0;do if(i|0){j=i+20|0;e=c[j>>2]|0;if((e|0)<832317811)switch(e|0){case 770837923:{m=3;break}default:{}}else switch(e|0){case 832317811:{m=3;break}default:{}}if((m|0)==3)kc(i)|0;g=c[i>>2]|0;kb(g,i);h=c[i+4>>2]|0;f=i+8|0;e=c[f>>2]|0;if(!h)c[g+4>>2]=e;else{c[h+8>>2]=e;e=c[f>>2]|0}if(e|0)c[e+4>>2]=h;c[j>>2]=1443283912;c[i>>2]=0;if(g|0){if(c[g+480>>2]|0){Xd(g,i);break}m=i;if((c[g+304>>2]|0)>>>0<=m>>>0?(c[g+308>>2]|0)>>>0>m>>>0:0){m=g+300|0;c[i>>2]=c[m>>2];c[m>>2]=i;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{m=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);e=c[b+228>>2]|0;do if(e|0){if(o|0?c[o+480>>2]|0:0){Vi(o,e);break}l=e+32|0;m=(c[l>>2]|0)+-1|0;c[l>>2]=m;if(!m)Vi(o,e)}while(0);g=b+232|0;e=c[g>>2]|0;if(e|0){h=(o|0)==0;i=o+480|0;j=o+304|0;k=o+308|0;l=o+300|0;do{c[g>>2]=c[e+20>>2];f=c[e+36>>2]|0;if(f|0)ni(o,f);f=c[e+40>>2]|0;if(f|0)ri(o,f);f=c[e+16>>2]|0;do if(f|0){if(!h){if(c[i>>2]|0){Xd(o,f);break}m=f;if((c[j>>2]|0)>>>0<=m>>>0?(c[k>>2]|0)>>>0>m>>>0:0){c[f>>2]=c[l>>2];c[l>>2]=f;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{m=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);m=e+55|0;a:do if(((d[m>>0]|d[m+1>>0]<<8)&16)!=0?(n=c[e+32>>2]|0,(n|0)!=0):0){do if(!h){if(!(c[i>>2]|0)){f=n;if((c[j>>2]|0)>>>0>f>>>0)break;if((c[k>>2]|0)>>>0<=f>>>0)break;c[n>>2]=c[l>>2];c[l>>2]=n}else Xd(o,n);f=e;m=53;break a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);m=52;break}else{m=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);m=52;break}}else m=52;while(0);if((m|0)==52)if(h)m=58;else{f=e;m=53}do if((m|0)==53){m=0;if(c[i>>2]|0){Xd(o,f);break}p=e;if((c[j>>2]|0)>>>0<=p>>>0?(c[k>>2]|0)>>>0>p>>>0:0){c[e>>2]=c[l>>2];c[l>>2]=e}else{e=f;m=58}}while(0);do if((m|0)==58)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{p=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);e=c[g>>2]|0}while((e|0)!=0)}n=c[b+236>>2]|0;do if(n|0){Xi(o,c[n+28>>2]|0);e=c[n>>2]|0;do if(e|0){if(o|0){if(c[o+480>>2]|0){Xd(o,e);break}p=e;if((c[o+304>>2]|0)>>>0<=p>>>0?(c[o+308>>2]|0)>>>0>p>>>0:0){p=o+300|0;c[e>>2]=c[p>>2];c[p>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{p=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);e=c[n+4>>2]|0;do if(e|0){if(o|0){if(c[o+480>>2]|0){Xd(o,e);break}p=e;if((c[o+304>>2]|0)>>>0<=p>>>0?(c[o+308>>2]|0)>>>0>p>>>0:0){p=o+300|0;c[e>>2]=c[p>>2];c[p>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{p=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);e=c[n+12>>2]|0;if(e|0)ni(o,e);e=c[n+16>>2]|0;b:do if(e){l=e+4|0;f=c[e>>2]|0;c:do if((c[l>>2]|0)>0){h=o+480|0;i=o+304|0;j=o+308|0;k=o+300|0;if(!o){g=0;while(1){f=c[f+(g<<3)>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{p=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);g=g+1|0;f=c[e>>2]|0;if((g|0)>=(c[l>>2]|0))break c}}g=0;do{f=c[f+(g<<3)>>2]|0;do if(f|0){if(c[h>>2]|0){Xd(o,f);break}p=f;if((c[i>>2]|0)>>>0<=p>>>0?(c[j>>2]|0)>>>0>p>>>0:0){c[f>>2]=c[k>>2];c[k>>2]=f;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{p=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);g=g+1|0;f=c[e>>2]|0}while((g|0)<(c[l>>2]|0))}while(0);d:do if(f){do if(o|0){g=o+480|0;if(!(c[g>>2]|0)){h=f;if((c[o+304>>2]|0)>>>0>h>>>0)break;if((c[o+308>>2]|0)>>>0<=h>>>0)break;p=o+300|0;c[f>>2]=c[p>>2];c[p>>2]=f}else Xd(o,f);f=g;g=e;m=118;break d}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);m=116;break}else{m=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);m=116;break}}else m=116;while(0);if((m|0)==116)if(o){f=o+480|0;g=e;m=118}do if((m|0)==118){if(!(c[f>>2]|0)){e=g;if((c[o+304>>2]|0)>>>0>e>>>0){e=g;break}if((c[o+308>>2]|0)>>>0<=e>>>0){e=g;break}p=o+300|0;c[g>>2]=c[p>>2];c[p>>2]=g}else Xd(o,g);e=n;m=129;break b}while(0);if(e)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);m=128;break}else{m=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);m=128;break}else m=128}else m=128;while(0);if((m|0)==128)if(!o)e=n;else{e=n;m=129}if((m|0)==129){if(c[o+480>>2]|0){Xd(o,e);break}p=n;if((c[o+304>>2]|0)>>>0<=p>>>0?(c[o+308>>2]|0)>>>0>p>>>0:0){p=o+300|0;c[n>>2]=c[p>>2];c[p>>2]=n;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{p=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);e=c[b+4>>2]|0;do if(e|0){if(o|0){if(c[o+480>>2]|0){Xd(o,e);break}p=e;if((c[o+304>>2]|0)>>>0<=p>>>0?(c[o+308>>2]|0)>>>0>p>>>0:0){p=o+300|0;c[e>>2]=c[p>>2];c[p>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{p=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);ro(o,c[b+272>>2]|0);f=c[b>>2]|0;e=c[b+64>>2]|0;do if(e|0){if(f|0){if(c[f+480>>2]|0){Xd(f,e);break}p=e;if((c[f+304>>2]|0)>>>0<=p>>>0?(c[f+308>>2]|0)>>>0>p>>>0:0){p=f+300|0;c[e>>2]=c[p>>2];c[p>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{p=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);e=c[b+68>>2]|0;if(e|0)ri(f,e);e=b+24|0;if(!f){a[e>>0]=0;return}p=f+272|0;c[p>>2]=(c[p>>2]|0)-(d[e>>0]|0);a[e>>0]=0;return}function ro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;if(!b)return;e=a+480|0;f=a+304|0;g=a+308|0;h=a+300|0;if(!a){do{d=b;b=c[b+12>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](d);else{h=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d)}}while((b|0)!=0);return}do{d=b;b=c[b+12>>2]|0;do if(!(c[e>>2]|0)){i=d;if((c[f>>2]|0)>>>0<=i>>>0?(c[g>>2]|0)>>>0>i>>>0:0){c[d>>2]=c[h>>2];c[h>>2]=d;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{i=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}else Xd(a,d);while(0)}while((b|0)!=0);return}function so(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=c[b+24>>2]|0;if((a[d>>0]|0)!=-94)return 0;f=d+44|0;if((c[g+12>>2]|0)!=(c[f>>2]|0))return 0;d=(c[b>>2]|0)+272|0;b=c[d>>2]|0;if(!b)return 0;while(1){e=b+12|0;if((c[b>>2]|0)==(f|0))break;b=c[e>>2]|0;if(!b){h=8;break}else d=e}if((h|0)==8)return 0;c[d>>2]=c[e>>2];c[e>>2]=c[g>>2];c[g>>2]=b;h=g+4|0;c[h>>2]=(c[h>>2]|0)+1;return 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,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=Ra;Ra=Ra+32|0;p=q;m=c[a+24>>2]|0;n=c[b+32>>2]|0;if(!n){p=2;Ra=q;return p|0}o=c[n>>2]|0;if((o|0)>0){g=m+12|0;h=m+4|0;f=0;do{a:do if((c[n+8+(f*72|0)+16>>2]|0)==(c[g>>2]|0)?(i=c[n+8+(f*72|0)+8>>2]|0,j=(c[a>>2]|0)+272|0,k=c[j>>2]|0,k|0):0){e=j;d=k;while(1){l=d+12|0;if((c[d>>2]|0)==(i|0))break;d=c[l>>2]|0;if(!d)break a;else e=l}c[e>>2]=c[l>>2];c[l>>2]=c[m>>2];c[m>>2]=d;c[h>>2]=(c[h>>2]|0)+1}while(0);f=f+1|0}while((f|0)<(o|0))}f=b+64|0;d=c[f>>2]|0;if(!d){p=0;Ra=q;return p|0}if((c[d>>2]|0)<=0){p=0;Ra=q;return p|0}b=p+4|0;e=0;do{o=c[d+8+(e<<4)+8>>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;n=c[a>>2]|0;c[p>>2]=n;Kk(n,o,p);$j(a,o)|0;e=e+1|0;d=c[f>>2]|0}while((e|0)<(c[d>>2]|0));d=0;Ra=q;return d|0}function uo(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,8)|0;else d=c[d+16>>2]|0;if(!d)return;f=d;f=Sv(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;e=L()|0;a=d;c[a>>2]=f;c[a+4>>2]=e;return}function vo(a){a=a|0;var d=0,e=0,f=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,8)|0;else d=c[d+16>>2]|0;if(!d){e=0;f=0}else{f=d;e=c[f>>2]|0;f=c[f+4>>2]|0}d=c[a>>2]|0;a=d+8|0;if(!(b[a>>1]&9216)){c[d>>2]=e;c[d+4>>2]=f;b[a>>1]=4;return}else{Pg(d,e,f);return}}function wo(a,d,e){a=a|0;d=d|0;e=e|0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,24)|0;else d=c[d+16>>2]|0;if(!d)return;a=d+8|0;c[a>>2]=1;c[a+4>>2]=0;return}function xo(a){a=a|0;var d=0,e=0,f=0,g=0,h=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,24)|0;else d=c[d+16>>2]|0;if(!d)return;e=d+8|0;h=e;g=d;f=c[g>>2]|0;g=c[g+4>>2]|0;if(!((c[h>>2]|0)==0&(c[h+4>>2]|0)==0)){f=Sv(f|0,g|0,1,0)|0;g=L()|0;h=d;c[h>>2]=f;c[h+4>>2]=g;h=e;c[h>>2]=0;c[h+4>>2]=0}d=c[a>>2]|0;e=d+8|0;if(!(b[e>>1]&9216)){h=d;c[h>>2]=f;c[h+4>>2]=g;b[e>>1]=4;return}else{Pg(d,f,g);return}}function yo(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,24)|0;else d=c[d+16>>2]|0;if(!d)return;f=d+8|0;e=f;e=Sv(c[e>>2]|0,c[e+4>>2]|0,1,0)|0;a=L()|0;c[f>>2]=e;c[f+4>>2]=a;f=d;if(!((c[f>>2]|0)==0&(c[f+4>>2]|0)==0))return;f=d;c[f>>2]=e;c[f+4>>2]=a;return}function zo(a){a=a|0;var d=0,e=0,f=0,g=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))e=Ic(a,24)|0;else e=c[d+16>>2]|0;if(!e)return;g=e;f=c[g>>2]|0;g=c[g+4>>2]|0;d=c[a>>2]|0;a=d+8|0;if(!(b[a>>1]&9216)){c[d>>2]=f;c[d+4>>2]=g;b[a>>1]=4}else Pg(d,f,g);g=e;c[g>>2]=0;c[g+4>>2]=0;return}function Ao(a,d,e){a=a|0;d=d|0;e=e|0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,24)|0;else d=c[d+16>>2]|0;if(!d)return;a=d+16|0;d=a;d=Sv(c[d>>2]|0,c[d+4>>2]|0,1,0)|0;e=L()|0;c[a>>2]=d;c[a+4>>2]=e;return}function Bo(a){a=a|0;var d=0,e=0,f=0.0,h=0,i=0,j=0,k=0,l=0;l=Ra;Ra=Ra+16|0;j=l+8|0;k=l;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,24)|0;else d=c[d+16>>2]|0;if(!d){Ra=l;return}i=d+8|0;h=c[i>>2]|0;i=c[i+4>>2]|0;e=d;c[e>>2]=h;c[e+4>>2]=i;e=d+16|0;d=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&d>>>0>1){d=Sv(d|0,e|0,-1,-1)|0;f=(+(h>>>0)+4294967296.0*+(i|0))/(+(d>>>0)+4294967296.0*+(L()|0));d=c[a>>2]|0;e=d+8|0;if(!(b[e>>1]&9216))b[e>>1]=1;else Dg(d);g[j>>3]=f;g[k>>3]=+g[j>>3];if(!(+g[j>>3]==+g[k>>3])){Ra=l;return}g[d>>3]=f;b[e>>1]=8;Ra=l;return}else{d=c[a>>2]|0;e=d+8|0;if(!(b[e>>1]&9216))b[e>>1]=1;else Dg(d);g[j>>3]=0.0;g[k>>3]=+g[j>>3];if(!(+g[j>>3]==+g[k>>3])){Ra=l;return}g[d>>3]=0.0;b[e>>1]=8;Ra=l;return}}function Co(a,d,e){a=a|0;d=d|0;e=e|0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,24)|0;else d=c[d+16>>2]|0;a=d+8|0;d=a;d=Sv(c[d>>2]|0,c[d+4>>2]|0,1,0)|0;e=L()|0;c[a>>2]=d;c[a+4>>2]=e;return}function Do(a,d,e){a=a|0;d=d|0;e=e|0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,24)|0;else d=c[d+16>>2]|0;if(!d)return;a=d+16|0;d=a;d=Sv(c[d>>2]|0,c[d+4>>2]|0,1,0)|0;e=L()|0;c[a>>2]=d;c[a+4>>2]=e;return}function Eo(a){a=a|0;var d=0,e=0.0,f=0,h=0,i=0,j=0;i=Ra;Ra=Ra+16|0;f=i+8|0;h=i;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,0)|0;else d=c[d+16>>2]|0;if(!d){Ra=i;return}j=d+8|0;d=d+16|0;e=(+((c[j>>2]|0)>>>0)+4294967296.0*+(c[j+4>>2]|0))/(+((c[d>>2]|0)>>>0)+4294967296.0*+(c[d+4>>2]|0));d=c[a>>2]|0;a=d+8|0;if(!(b[a>>1]&9216))b[a>>1]=1;else Dg(d);g[f>>3]=e;g[h>>3]=+g[f>>3];if(!(+g[f>>3]==+g[h>>3])){Ra=i;return}g[d>>3]=e;b[a>>1]=8;Ra=i;return}function Fo(a,d,e){a=a|0;d=d|0;e=e|0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,24)|0;else d=c[d+16>>2]|0;a=d+8|0;d=a;d=Sv(c[d>>2]|0,c[d+4>>2]|0,1,0)|0;e=L()|0;c[a>>2]=d;c[a+4>>2]=e;return}function Go(d,f,h){d=d|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0;f=c[d+8>>2]|0;if(!(b[f+8>>1]&8192))i=Ic(d,24)|0;else i=c[f+16>>2]|0;if(!i)return;f=i;do if((c[f>>2]|0)==0&(c[f+4>>2]|0)==0){f=c[h>>2]|0;h=e[f+8>>1]|0;do if(!(h&4)){if(h&8|0){j=Mg(+g[f>>3])|0;k=L()|0;l=13;break}if(!(h&18)){h=i+8|0;c[h>>2]=0;c[h+4>>2]=0;break}else{j=Ng(a[f+10>>0]|0,c[f+12>>2]|0,c[f+16>>2]|0)|0;k=L()|0;l=13;break}}else{k=f;j=c[k>>2]|0;k=c[k+4>>2]|0;l=13}while(0);if((l|0)==13?(l=i+8|0,c[l>>2]=j,c[l+4>>2]=k,!((k|0)<0|(k|0)==0&j>>>0<1)):0)break;c[d+20>>2]=1;yc(c[d>>2]|0,49664,-1,1,-1)|0}while(0);j=i;j=Sv(c[j>>2]|0,c[j+4>>2]|0,1,0)|0;k=L()|0;l=i;c[l>>2]=j;c[l+4>>2]=k;return}function Ho(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))l=Ic(a,24)|0;else l=c[d+16>>2]|0;if(!l)return;e=l+8|0;d=c[e>>2]|0;e=c[e+4>>2]|0;if(!((e|0)>0|(e|0)==0&d>>>0>0))return;g=l;f=c[g>>2]|0;g=c[g+4>>2]|0;m=Wv(f|0,g|0,d|0,e|0)|0;L()|0;if(!m){f=l+16|0;f=Sv(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;g=L()|0;d=c[a>>2]|0;e=d+8|0;if(!(b[e>>1]&9216)){a=d;c[a>>2]=f;c[a+4>>2]=g;b[e>>1]=4;return}else{Pg(d,f,g);return}}n=((m|0)<0)<<31>>31;h=Yv(d|0,e|0,m|0,n|0)|0;f=Tv(f|0,g|0,h|0,L()|0)|0;g=L()|0;h=m+1|0;i=((h|0)<0)<<31>>31;j=Yv(f|0,g|0,h|0,i|0)|0;k=L()|0;e=l+16|0;d=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)<(k|0)|(e|0)==(k|0)&d>>>0>>0){f=Wv(d|0,e|0,h|0,i|0)|0;f=Sv(f|0,L()|0,1,0)|0;g=L()|0;d=c[a>>2]|0;e=d+8|0;if(!(b[e>>1]&9216)){a=d;c[a>>2]=f;c[a+4>>2]=g;b[e>>1]=4;return}else{Pg(d,f,g);return}}else{l=Sv(f|0,g|0,1,0)|0;g=L()|0;f=Tv(d|0,e|0,j|0,k|0)|0;f=Wv(f|0,L()|0,m|0,n|0)|0;f=Sv(l|0,g|0,f|0,L()|0)|0;g=L()|0;d=c[a>>2]|0;e=d+8|0;if(!(b[e>>1]&9216)){a=d;c[a>>2]=f;c[a+4>>2]=g;b[e>>1]=4;return}else{Pg(d,f,g);return}}}function Io(a,d,e){a=a|0;d=d|0;e=e|0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,24)|0;else d=c[d+16>>2]|0;a=d+16|0;d=a;d=Sv(c[d>>2]|0,c[d+4>>2]|0,1,0)|0;e=L()|0;c[a>>2]=d;c[a+4>>2]=e;return}function Jo(d,e,f){d=d|0;e=e|0;f=f|0;e=c[d+8>>2]|0;if(!(b[e+8>>1]&8192))e=Ic(d,8)|0;else e=c[e+16>>2]|0;if(!e)return;uc(c[e>>2]|0);f=tc(c[f>>2]|0)|0;c[e>>2]=f;if(f|0){d=e+4|0;c[d>>2]=(c[d>>2]|0)+1;return}e=c[d>>2]|0;f=e+8|0;if(!(b[f>>1]&9216))b[f>>1]=1;else{Dg(e);e=c[d>>2]|0}c[d+20>>2]=7;e=c[e+32>>2]|0;f=e+81|0;if(a[f>>0]|0)return;if(a[e+82>>0]|0)return;a[f>>0]=1;if((c[e+180>>2]|0)>0)c[e+264>>2]=1;d=e+272|0;c[d>>2]=(c[d>>2]|0)+1;e=c[e+236>>2]|0;if(!e)return;c[e+12>>2]=7;return}function Ko(a){a=a|0;var d=0,e=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,8)|0;else d=c[d+16>>2]|0;if(!d)return;e=c[d>>2]|0;if(!e)return;Dc(a,e);uc(c[d>>2]|0);c[d>>2]=0;return}function Lo(a){a=a|0;var d=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,0)|0;else d=c[d+16>>2]|0;if(!d)return;d=c[d>>2]|0;if(!d)return;Dc(a,d);return}function Mo(a,d,e){a=a|0;d=d|0;e=e|0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,8)|0;else d=c[d+16>>2]|0;if(!d)return;e=d+4|0;a=(c[e>>2]|0)+-1|0;c[e>>2]=a;if(a|0)return;uc(c[d>>2]|0);c[d>>2]=0;return}function No(f,h,i){f=f|0;h=h|0;i=i|0;var j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,u=0,v=0,w=0,x=0;x=Ra;Ra=Ra+16|0;o=x+8|0;p=x;h=c[f+8>>2]|0;if(!(b[h+8>>1]&8192))r=Ic(f,16)|0;else r=c[h+16>>2]|0;if(!r){Ra=x;return}q=i+4|0;m=c[q>>2]|0;n=m+8|0;l=b[n>>1]&31;h=d[816+l>>0]|0;if((l|16|0)==18){h=a[m+10>>0]|0;j=m+16|0;l=m+12|0;if(!(Lg(c[j>>2]|0,o,c[l>>2]|0,h)|0))h=b[n>>1]|0;else{if(!(Og(c[j>>2]|0,p,c[l>>2]|0,h)|0)){o=p;p=c[o+4>>2]|0;h=m;c[h>>2]=c[o>>2];c[h+4>>2]=p;h=4}else{g[m>>3]=+g[o>>3];h=8}h=b[n>>1]&-3|h;b[n>>1]=h}h=d[816+(h&31)>>0]|0}a:do switch((h&255)<<24>>24){case 1:{h=c[q>>2]|0;j=e[h+8>>1]|0;if(j&4|0){v=h;u=c[v+4>>2]|0;v=c[v>>2]|0;w=27;break a}if(j&8|0){v=Mg(+g[h>>3])|0;u=L()|0;w=27;break a}if(j&18|0){v=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;u=L()|0;w=27}break}case 2:{h=c[q>>2]|0;j=e[h+8>>1]|0;do if(!(j&8)){if(j&4|0){q=h;k=+((c[q>>2]|0)>>>0)+4294967296.0*+(c[q+4>>2]|0);break}if(!(j&18))k=0.0;else k=+Kg(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)}else k=+g[h>>3];while(0);h=~~k>>>0;j=+t(k)>=1.0?(k>0.0?~~+H(+s(k/4294967296.0),4294967295.0)>>>0:~~+F((k-+(~~k>>>0))/4294967296.0)>>>0):0;if(k==+(h>>>0)+4294967296.0*+(j|0)){u=j;v=h;w=27}break}default:{}}while(0);if((w|0)==27?!((u|0)<0|(u|0)==0&v>>>0<1):0){q=r;q=Sv(c[q>>2]|0,c[q+4>>2]|0,1,0)|0;w=L()|0;p=r;c[p>>2]=q;c[p+4>>2]=w;if(!((v|0)==(q|0)&(u|0)==(w|0))){Ra=x;return}w=tc(c[i>>2]|0)|0;c[r+8>>2]=w;if(w|0){Ra=x;return}h=c[f>>2]|0;j=h+8|0;if(!(b[j>>1]&9216))b[j>>1]=1;else{Dg(h);h=c[f>>2]|0}c[f+20>>2]=7;h=c[h+32>>2]|0;j=h+81|0;if(a[j>>0]|0){Ra=x;return}if(a[h+82>>0]|0){Ra=x;return}a[j>>0]=1;if((c[h+180>>2]|0)>0)c[h+264>>2]=1;f=h+272|0;c[f>>2]=(c[f>>2]|0)+1;h=c[h+236>>2]|0;if(!h){Ra=x;return}c[h+12>>2]=7;Ra=x;return}c[f+20>>2]=1;yc(c[f>>2]|0,44153,-1,1,-1)|0;Ra=x;return}function Oo(a){a=a|0;var d=0,e=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,0)|0;else d=c[d+16>>2]|0;if(!d)return;d=d+8|0;e=c[d>>2]|0;if(!e)return;Dc(a,e);uc(c[d>>2]|0);c[d>>2]=0;return}function Po(a){a=a|0;return}function Qo(d,e,f){d=d|0;e=e|0;f=f|0;e=c[d+8>>2]|0;if(!(b[e+8>>1]&8192))e=Ic(d,16)|0;else e=c[e+16>>2]|0;if(!e)return;e=e+8|0;if(c[e>>2]|0)return;f=tc(c[f>>2]|0)|0;c[e>>2]=f;if(f|0)return;e=c[d>>2]|0;f=e+8|0;if(!(b[f>>1]&9216))b[f>>1]=1;else{Dg(e);e=c[d>>2]|0}c[d+20>>2]=7;e=c[e+32>>2]|0;f=e+81|0;if(a[f>>0]|0)return;if(a[e+82>>0]|0)return;a[f>>0]=1;if((c[e+180>>2]|0)>0)c[e+264>>2]=1;d=e+272|0;c[d>>2]=(c[d>>2]|0)+1;e=c[e+236>>2]|0;if(!e)return;c[e+12>>2]=7;return}function Ro(a){a=a|0;var d=0,e=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,16)|0;else d=c[d+16>>2]|0;if(!d)return;d=d+8|0;e=c[d>>2]|0;if(!e)return;Dc(a,e);uc(c[d>>2]|0);c[d>>2]=0;return}function So(d,e,f){d=d|0;e=e|0;f=f|0;var h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=Ra;Ra=Ra+64|0;p=r+56|0;q=r+48|0;o=r;if(_o(d,e,f,o)|0){Ra=r;return}l=o+40|0;do if(!(a[l>>0]|0)){n=o+42|0;if(a[n>>0]|0){e=c[o+8>>2]|0;if((e+4713|0)>>>0<=14712){i=c[o+12>>2]|0;j=c[o+16>>2]|0;k=e;m=6}}else{i=1;j=1;k=2e3;m=6}if((m|0)==6?(a[o+41>>0]|0)==0:0){e=(i|0)<3;f=k+(e<<31>>31)|0;h=(+(j+2+((f|0)/-100|0)+((f|0)/400|0)+((((e?i+12|0:i)*306001|0)+306001|0)/1e4|0)+(((f*36525|0)+172251900|0)/100|0)|0)+-1524.5)*864.0e5;f=~~h>>>0;e=+t(h)>=1.0?(h>0.0?~~+H(+s(h/4294967296.0),4294967295.0)>>>0:~~+F((h-+(~~h>>>0))/4294967296.0)>>>0):0;j=o;c[j>>2]=f;c[j+4>>2]=e;a[l>>0]=1;j=o+43|0;if(!(a[j>>0]|0))break;i=G(c[o+20>>2]|0,36e5)|0;i=((c[o+24>>2]|0)*6e4|0)+i|0;h=+g[o+32>>3]*1.0e3;f=Sv(~~h>>>0|0,(+t(h)>=1.0?(h>0.0?~~+H(+s(h/4294967296.0),4294967295.0)>>>0:~~+F((h-+(~~h>>>0))/4294967296.0)>>>0):0)|0,f|0,e|0)|0;f=Sv(f|0,L()|0,i|0,((i|0)<0)<<31>>31|0)|0;e=L()|0;i=o;c[i>>2]=f;c[i+4>>2]=e;i=o+44|0;if(!(a[i>>0]|0))break;m=(c[o+28>>2]|0)*6e4|0;f=Tv(f|0,e|0,m|0,((m|0)<0)<<31>>31|0)|0;e=L()|0;c[o>>2]=f;c[o+4>>2]=e;a[n>>0]=0;a[j>>0]=0;a[i>>0]=0;break}e=o;f=e+48|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));a[o+46>>0]=1;f=0;e=0}else{e=o;f=c[e>>2]|0;e=c[e+4>>2]|0}while(0);h=(+(f>>>0)+4294967296.0*+(e|0))/864.0e5;e=c[d>>2]|0;f=e+8|0;if(!(b[f>>1]&9216))b[f>>1]=1;else Dg(e);g[p>>3]=h;g[q>>3]=+g[p>>3];if(!(+g[p>>3]==+g[q>>3])){Ra=r;return}g[e>>3]=h;b[f>>1]=8;Ra=r;return}function To(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;k=Ra;Ra=Ra+176|0;j=k+152|0;h=k+104|0;i=k;if(_o(b,d,e,h)|0){Ra=k;return}g=h+42|0;a:do if(!(a[g>>0]|0)){do if(a[h+40>>0]|0){e=h;d=c[e>>2]|0;e=c[e+4>>2]|0;if(e>>>0>108096|(e|0)==108096&d>>>0>275971583){d=h;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a[h+46>>0]=1;e=0;f=0;d=0;break a}else{e=Sv(d|0,e|0,432e5,0)|0;e=Wv(e|0,L()|0,864e5,0)|0;L()|0;d=~~((+(e|0)+-1867216.25)/36524.25);d=e+1525+d+((d|0)/-4|0)|0;e=~~((+(d|0)+-122.1)/365.25);d=d-((((e&32767)*36525|0)>>>0)/100|0)|0;f=~~(+(d|0)/30.6001);d=d-~~(+(f|0)*30.6001)|0;c[h+16>>2]=d;f=((f|0)<14?-1:-13)+f|0;c[h+12>>2]=f;e=((f|0)>2?-4716:-4715)+e|0;c[h+8>>2]=e;break}}else{c[h+8>>2]=2e3;c[h+12>>2]=1;c[h+16>>2]=1;d=1;f=1;e=2e3}while(0);a[g>>0]=1}else{e=c[h+8>>2]|0;f=c[h+12>>2]|0;d=c[h+16>>2]|0}while(0);c[j>>2]=e;c[j+4>>2]=f;c[j+8>>2]=d;Cb(100,i,49994,j)|0;if((yc(c[b>>2]|0,i,-1,1,-1)|0)==18){c[b+20>>2]=18;yc(c[b>>2]|0,31223,-1,1,0)|0}Ra=k;return}function Uo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=Ra;Ra=Ra+176|0;o=p+152|0;m=p+104|0;n=p;if(_o(b,d,e,m)|0){Ra=p;return}l=m+43|0;if(!(a[l>>0]|0)){d=m+40|0;do if(!(a[d>>0]|0)){if(a[m+42>>0]|0){e=c[m+8>>2]|0;if((e+4713|0)>>>0<=14712){h=c[m+12>>2]|0;i=c[m+16>>2]|0;j=e;k=8}}else{h=1;i=1;j=2e3;k=8}if((k|0)==8?(a[m+41>>0]|0)==0:0){e=(h|0)<3;k=j+(e<<31>>31)|0;f=(+(i+2+((k|0)/-100|0)+((k|0)/400|0)+((((e?h+12|0:h)*306001|0)+306001|0)/1e4|0)+(((k*36525|0)+172251900|0)/100|0)|0)+-1524.5)*864.0e5;k=~~f>>>0;e=+t(f)>=1.0?(f>0.0?~~+H(+s(f/4294967296.0),4294967295.0)>>>0:~~+F((f-+(~~f>>>0))/4294967296.0)>>>0):0;j=m;c[j>>2]=k;c[j+4>>2]=e;a[d>>0]=1;d=k;break}d=m;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a[m+46>>0]=1;d=0;e=0}else{e=m;d=c[e>>2]|0;e=c[e+4>>2]|0}while(0);j=Sv(d|0,e|0,432e5,0)|0;j=Zv(j|0,L()|0,864e5,0)|0;L()|0;f=+(j|0)/1.0e3;j=~~f;e=(j|0)/3600|0;c[m+20>>2]=e;k=(G(e,-3600)|0)+j|0;d=(k|0)/60|0;c[m+24>>2]=d;f=f-+(j|0)+ +((G(d,-60)|0)+k|0);g[m+32>>3]=f;a[m+41>>0]=0;a[l>>0]=1}else{f=+g[m+32>>3];e=c[m+20>>2]|0;d=c[m+24>>2]|0}c[o>>2]=e;c[o+4>>2]=d;c[o+8>>2]=~~f;Cb(100,n,50009,o)|0;if((yc(c[b>>2]|0,n,-1,1,-1)|0)==18){c[b+20>>2]=18;yc(c[b>>2]|0,31223,-1,1,0)|0}Ra=p;return}function Vo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0;i=Ra;Ra=Ra+176|0;h=i+152|0;e=i+104|0;f=i;if(_o(a,b,d,e)|0){Ra=i;return}dp(e);l=c[e+12>>2]|0;k=c[e+16>>2]|0;j=c[e+20>>2]|0;b=c[e+24>>2]|0;d=~~+g[e+32>>3];c[h>>2]=c[e+8>>2];c[h+4>>2]=l;c[h+8>>2]=k;c[h+12>>2]=j;c[h+16>>2]=b;c[h+20>>2]=d;Cb(100,f,50024,h)|0;if((yc(c[a>>2]|0,f,-1,1,-1)|0)==18){c[a+20>>2]=18;yc(c[a>>2]|0,31223,-1,1,0)|0}Ra=i;return}function Wo(d,f,h){d=d|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=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,_=0,$=0,aa=0.0;$=Ra;Ra=Ra+240|0;Y=$+232|0;X=$+224|0;W=$+216|0;V=$+208|0;U=$+200|0;T=$+192|0;S=$+184|0;_=$+176|0;Z=$+168|0;R=$+160|0;Q=$+152|0;O=$+104|0;P=$;if(!f){Ra=$;return}i=c[h>>2]|0;if(!i){Ra=$;return}j=b[i+8>>1]|0;if((j&514)==514?(a[i+10>>0]|0)==1:0)N=c[i+16>>2]|0;else M=6;do if((M|0)==6)if(!(j&1)){N=Gg(i,1)|0;break}else{Ra=$;return}while(0);if(!N){Ra=$;return}if(_o(d,f+-1|0,h+4|0,O)|0){Ra=$;return}i=c[d>>2]|0;k=c[i+32>>2]|0;j=0;h=1;f=0;a:while(1){b:do switch(a[N+j>>0]|0){case 0:break a;case 37:{j=j+1|0;switch(a[N+j>>0]|0){case 37:case 119:break b;case 87:case 83:case 77:case 109:case 72:case 100:{h=Sv(h|0,f|0,1,0)|0;f=L()|0;break b}case 102:{h=Sv(h|0,f|0,8,0)|0;f=L()|0;break b}case 106:{h=Sv(h|0,f|0,3,0)|0;f=L()|0;break b}case 89:{h=Sv(h|0,f|0,8,0)|0;f=L()|0;break b}case 74:case 115:{h=Sv(h|0,f|0,50,0)|0;f=L()|0;break b}default:{M=86;break a}}}default:{}}while(0);h=Sv(h|0,f|0,1,0)|0;j=j+1|0;f=L()|0}if((M|0)==86){Ra=$;return}do if(f>>>0<0|(f|0)==0&h>>>0<100)i=P;else{K=c[k+108>>2]|0;J=((K|0)<0)<<31>>31;if(f>>>0>J>>>0|(f|0)==(J|0)&h>>>0>K>>>0){c[d+20>>2]=18;yc(i,31223,-1,1,0)|0;Ra=$;return}f=aw(0,h|0,32)|0;h=L()|0;c:do if(c[k+272>>2]|0){if(!(a[k+81>>0]|0))M=32}else{do if(!(h>>>0>0|((h|0)==0?f>>>0>(e[k+276>>1]|0)>>>0:0))){j=k+300|0;i=c[j>>2]|0;if(i|0){c[j>>2]=c[i>>2];M=k+284|0;c[M>>2]=(c[M>>2]|0)+1;M=33;break c}j=k+296|0;i=c[j>>2]|0;if(!i){i=k+292|0;break}else{c[j>>2]=c[i>>2];M=k+284|0;c[M>>2]=(c[M>>2]|0)+1;M=33;break c}}else i=k+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;M=32}while(0);if((M|0)==32){i=_d(k,f,h)|0;M=33}if((M|0)==33){if(i|0)break;i=c[d>>2]|0}j=i+8|0;if(!(b[j>>1]&9216))b[j>>1]=1;else{Dg(i);i=c[d>>2]|0}c[d+20>>2]=7;i=c[i+32>>2]|0;j=i+81|0;if(a[j>>0]|0){Ra=$;return}if(a[i+82>>0]|0){Ra=$;return}a[j>>0]=1;if((c[i+180>>2]|0)>0)c[i+264>>2]=1;d=i+272|0;c[d>>2]=(c[d>>2]|0)+1;i=c[i+236>>2]|0;if(!i){Ra=$;return}c[i+12>>2]=7;Ra=$;return}while(0);h=O+40|0;K=O+42|0;do if(!(a[h>>0]|0)){if(a[K>>0]|0){j=c[O+8>>2]|0;if((j+4713|0)>>>0<=14712){l=c[O+12>>2]|0;m=c[O+16>>2]|0;n=j;M=47}}else{l=1;m=1;n=2e3;M=47}if((M|0)==47?(a[O+41>>0]|0)==0:0){f=(l|0)<3;j=n+(f<<31>>31)|0;o=(+(m+2+((j|0)/-100|0)+((j|0)/400|0)+((((f?l+12|0:l)*306001|0)+306001|0)/1e4|0)+(((j*36525|0)+172251900|0)/100|0)|0)+-1524.5)*864.0e5;j=~~o>>>0;f=+t(o)>=1.0?(o>0.0?~~+H(+s(o/4294967296.0),4294967295.0)>>>0:~~+F((o-+(~~o>>>0))/4294967296.0)>>>0):0;k=O;c[k>>2]=j;c[k+4>>2]=f;a[h>>0]=1;k=O+43|0;if(!(a[k>>0]|0))break;h=G(c[O+20>>2]|0,36e5)|0;h=((c[O+24>>2]|0)*6e4|0)+h|0;o=+g[O+32>>3]*1.0e3;j=Sv(~~o>>>0|0,(+t(o)>=1.0?(o>0.0?~~+H(+s(o/4294967296.0),4294967295.0)>>>0:~~+F((o-+(~~o>>>0))/4294967296.0)>>>0):0)|0,j|0,f|0)|0;j=Sv(j|0,L()|0,h|0,((h|0)<0)<<31>>31|0)|0;f=L()|0;h=O;c[h>>2]=j;c[h+4>>2]=f;h=O+44|0;if(!(a[h>>0]|0))break;E=(c[O+28>>2]|0)*6e4|0;E=Tv(j|0,f|0,E|0,((E|0)<0)<<31>>31|0)|0;I=L()|0;J=O;c[J>>2]=E;c[J+4>>2]=I;a[K>>0]=0;a[k>>0]=0;a[h>>0]=0;break}j=O;f=j+48|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(f|0));a[O+46>>0]=1}while(0);dp(O);D=O+16|0;E=O+32|0;I=O+20|0;C=O+8|0;x=O+24|0;y=O+28|0;z=O+41|0;A=O+43|0;B=O+44|0;J=O+12|0;w=0;j=0;d:while(1){f=a[N+j>>0]|0;e:do switch(f<<24>>24){case 0:break d;case 37:{v=j+1|0;u=a[N+v>>0]|0;do switch(u<<24>>24|0){case 100:{c[Q>>2]=c[D>>2];Cb(3,i+w|0,50054,Q)|0;f=w+2|0;j=v;break e}case 102:{o=+g[E>>3];j=i+w|0;g[R>>3]=o>59.999?59.999:o;Cb(7,j,50059,R)|0;if(!j)j=0;else j=(Eu(j)|0)&1073741823;f=j+w|0;j=v;break e}case 72:{c[Z>>2]=c[I>>2];Cb(3,i+w|0,50054,Z)|0;f=w+2|0;j=v;break e}case 106:case 87:{r=O;q=c[r>>2]|0;r=c[r+4>>2]|0;j=c[C>>2]|0;h=c[I>>2]|0;l=c[x>>2]|0;m=c[y>>2]|0;o=+g[E>>3];f=a[z>>0]|0;n=a[A>>0]|0;p=a[B>>0]|0;if(a[K>>0]|0)if((j+4713|0)>>>0>14712){k=0;j=0}else M=63;else{j=2e3;M=63}if((M|0)==63){M=0;if(!(f<<24>>24)){k=j+-1|0;aa=(+(((k|0)/-100|0)+431+((k|0)/400|0)+(((k*36525|0)+172251900|0)/100|0)|0)+-1524.5)*864.0e5;k=~~aa>>>0;j=+t(aa)>=1.0?(aa>0.0?~~+H(+s(aa/4294967296.0),4294967295.0)>>>0:~~+F((aa-+(~~aa>>>0))/4294967296.0)>>>0):0;if(n<<24>>24){l=(l*6e4|0)+(G(h,36e5)|0)|0;aa=o*1.0e3;h=+t(aa)>=1.0?(aa>0.0?~~+H(+s(aa/4294967296.0),4294967295.0)>>>0:~~+F((aa-+(~~aa>>>0))/4294967296.0)>>>0):0;n=p<<24>>24==0;m=m*6e4|0;m=Tv(0,0,m|0,((m|0)<0)<<31>>31|0)|0;p=L()|0;l=Sv(~~aa>>>0|0,h|0,l|0,((l|0)<0)<<31>>31|0)|0;p=Sv(l|0,L()|0,(n?0:m)|0,(n?0:p)|0)|0;k=Sv(p|0,L()|0,k|0,j|0)|0;j=L()|0}}else{k=0;j=0}}f=Sv(q|0,r|0,432e5,0)|0;h=L()|0;j=Wv(Tv(f|0,h|0,k|0,j|0)|0,L()|0,864e5,0)|0;L()|0;if(u<<24>>24==87){f=Wv(f|0,h|0,864e5,0)|0;f=Zv(f|0,L()|0,7,0)|0;L()|0;c[_>>2]=(7-f+j|0)/7|0;Cb(3,i+w|0,50054,_)|0;f=w+2|0;j=v;break e}else{c[S>>2]=j+1;Cb(4,i+w|0,50066,S)|0;f=w+3|0;j=v;break e}}case 74:{j=i+w|0;u=O;g[T>>3]=(+((c[u>>2]|0)>>>0)+4294967296.0*+(c[u+4>>2]|0))/864.0e5;Cb(20,j,34086,T)|0;if(!j)j=0;else j=(Eu(j)|0)&1073741823;f=j+w|0;j=v;break e}case 109:{c[U>>2]=c[J>>2];Cb(3,i+w|0,50054,U)|0;f=w+2|0;j=v;break e}case 77:{c[V>>2]=c[x>>2];Cb(3,i+w|0,50054,V)|0;f=w+2|0;j=v;break e}case 115:{j=i+w|0;q=O;q=Sv(Wv(c[q>>2]|0,c[q+4>>2]|0,1e3,0)|0,L()|0,-413362496,-50)|0;r=L()|0;u=W;c[u>>2]=q;c[u+4>>2]=r;Cb(30,j,32524,W)|0;if(!j)j=0;else j=(Eu(j)|0)&1073741823;f=j+w|0;j=v;break e}case 83:{c[X>>2]=~~+g[E>>3];Cb(3,i+w|0,50054,X)|0;f=w+2|0;j=v;break e}case 119:{f=O;f=Zv(Wv(Sv(c[f>>2]|0,c[f+4>>2]|0,1296e5,0)|0,L()|0,864e5,0)|0,L()|0,7,0)|0;L()|0;a[i+w>>0]=f+48;f=w+1|0;j=v;break e}case 89:{j=i+w|0;c[Y>>2]=c[C>>2];Cb(5,j,50071,Y)|0;if(!j)j=0;else j=(Eu(j)|0)&1073741823;f=j+w|0;j=v;break e}default:{a[i+w>>0]=37;f=w+1|0;j=v;break e}}while(0)}default:{a[i+w>>0]=f;f=w+1|0}}while(0);w=f;j=j+1|0}a[i+w>>0]=0;if((yc(c[d>>2]|0,i,-1,1,(i|0)==(P|0)?-1:116)|0)!=18){Ra=$;return}c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;Ra=$;return}function Xo(a,b,c){a=a|0;b=b|0;c=c|0;Uo(a,0,0);return}function Yo(a,b,c){a=a|0;b=b|0;c=c|0;Vo(a,0,0);return}function Zo(a,b,c){a=a|0;b=b|0;c=c|0;To(a,0,0);return}function _o(e,f,h,i){e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=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,_=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;ya=Ra;Ra=Ra+96|0;p=ya+72|0;xa=ya+64|0;va=ya+56|0;wa=ya+8|0;q=ya;l=i;r=l+48|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(r|0));if(!f){l=(c[e+12>>2]|0)+56|0;j=l;k=c[j>>2]|0;j=c[j+4>>2]|0;do if((k|0)==0&(j|0)==0){j=c[c[(c[e>>2]|0)+32>>2]>>2]|0;if((c[j>>2]|0)>1?(n=c[j+72>>2]|0,(n|0)!=0):0)j=Xa[n&255](j,l)|0;else{j=Xa[c[j+64>>2]&255](j,xa)|0;u=+g[xa>>3]*864.0e5;e=+t(u)>=1.0?(u>0.0?~~+H(+s(u/4294967296.0),4294967295.0)>>>0:~~+F((u-+(~~u>>>0))/4294967296.0)>>>0):0;xa=l;c[xa>>2]=~~u>>>0;c[xa+4>>2]=e}if(!j){j=l;k=c[j>>2]|0;j=c[j+4>>2]|0;break}xa=l;c[xa>>2]=0;c[xa+4>>2]=0;c[i>>2]=0;c[i+4>>2]=0;i=1;Ra=ya;return i|0}while(0);xa=i;c[xa>>2]=k;c[xa+4>>2]=j;if(!((j|0)>0|(j|0)==0&k>>>0>0)){i=1;Ra=ya;return i|0}a[i+40>>0]=1;i=0;Ra=ya;return i|0}k=c[h>>2]|0;j=b[k+8>>1]|0;if(((d[816+(j&31)>>0]|0)+-1|0)>>>0<2){j=j&65535;do if(!(j&8)){if(j&4|0){aa=k;m=+((c[aa>>2]|0)>>>0)+4294967296.0*+(c[aa+4>>2]|0);break}if(!(j&18))m=0.0;else m=+Kg(a[k+10>>0]|0,c[k+12>>2]|0,c[k+16>>2]|0)}else m=+g[k>>3];while(0);g[i+32>>3]=m;a[i+41>>0]=1;if(m>=0.0&m<5373484.5){u=m*864.0e5+.5;$=+t(u)>=1.0?(u>0.0?~~+H(+s(u/4294967296.0),4294967295.0)>>>0:~~+F((u-+(~~u>>>0))/4294967296.0)>>>0):0;aa=i;c[aa>>2]=~~u>>>0;c[aa+4>>2]=$;a[i+40>>0]=1}}else{if(!k){i=1;Ra=ya;return i|0}if((j&514)==514?(a[k+10>>0]|0)==1:0)n=c[k+16>>2]|0;else v=25;do if((v|0)==25)if(!(j&1)){n=Gg(k,1)|0;break}else{i=1;Ra=ya;return i|0}while(0);if(!n){i=1;Ra=ya;return i|0}k=(a[n>>0]|0)==45;j=k?n+1|0:n;c[p>>2]=xa;c[p+4>>2]=va;c[p+8>>2]=wa;a:do if((bp(j,49795,p)|0)==3){j=j+10|0;while(1){aa=a[j>>0]|0;if(aa<<24>>24==84?1:(a[880+(aa&255)>>0]&1)!=0)j=j+1|0;else break}do if(ap(j,i)|0)if(!(a[j>>0]|0)){a[i+43>>0]=0;break}else{v=39;break a}while(0);a[i+40>>0]=0;a[i+42>>0]=1;aa=c[xa>>2]|0;c[i+8>>2]=k?0-aa|0:aa;c[i+12>>2]=c[va>>2];c[i+16>>2]=c[wa>>2];if(a[i+44>>0]|0)$o(i)}else v=39;while(0);b:do if((v|0)==39?ap(n,i)|0:0){aa=a[n>>0]|0;j=(d[208+(aa&255)>>0]|0)+-110|0;if(!(aa<<24>>24==0|(j|0)!=0)){k=49791;l=n;do{l=l+1|0;k=k+1|0;aa=a[l>>0]|0;j=(d[208+(aa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(aa<<24>>24==0|(j|0)!=0))}c:do if(!j){j=c[e+12>>2]|0;if((a[(c[j+104>>2]|0)+((c[e+16>>2]|0)*20|0)>>0]|0)==64){c[e+20>>2]=1;yc(c[e>>2]|0,49827,-1,1,-1)|0;v=56;break}l=j+56|0;j=l;k=c[j>>2]|0;j=c[j+4>>2]|0;do if((k|0)==0&(j|0)==0){j=c[c[(c[e>>2]|0)+32>>2]>>2]|0;if((c[j>>2]|0)>1?(o=c[j+72>>2]|0,(o|0)!=0):0)j=Xa[o&255](j,l)|0;else{j=Xa[c[j+64>>2]&255](j,p)|0;u=+g[p>>3]*864.0e5;$=+t(u)>=1.0?(u>0.0?~~+H(+s(u/4294967296.0),4294967295.0)>>>0:~~+F((u-+(~~u>>>0))/4294967296.0)>>>0):0;aa=l;c[aa>>2]=~~u>>>0;c[aa+4>>2]=$}if(!j){j=l;k=c[j>>2]|0;j=c[j+4>>2]|0;break}else{aa=l;c[aa>>2]=0;c[aa+4>>2]=0;aa=i;c[aa>>2]=0;c[aa+4>>2]=0;break c}}while(0);aa=i;c[aa>>2]=k;c[aa+4>>2]=j;if((j|0)>0|(j|0)==0&k>>>0>0){a[i+40>>0]=1;break b}}else v=56;while(0);if((v|0)==56?Lg(n,q,(Eu(n)|0)&1073741823,1)|0:0){m=+g[q>>3];g[i+32>>3]=m;a[i+41>>0]=1;if(!(m>=0.0&m<5373484.5))break;u=m*864.0e5+.5;$=+t(u)>=1.0?(u>0.0?~~+H(+s(u/4294967296.0),4294967295.0)>>>0:~~+F((u-+(~~u>>>0))/4294967296.0)>>>0):0;aa=i;c[aa>>2]=~~u>>>0;c[aa+4>>2]=$;a[i+40>>0]=1;break}i=1;Ra=ya;return i|0}while(0)}d:do if((f|0)>1){x=e+12|0;y=e+16|0;z=i+41|0;A=i+40|0;B=i+42|0;C=e+20|0;D=i+43|0;E=i+44|0;I=i+32|0;J=i+24|0;K=i+20|0;M=i+45|0;N=i+8|0;O=i+12|0;P=i+16|0;j=i+46|0;Q=wa+40|0;R=wa+42|0;S=wa+41|0;T=wa+46|0;U=wa+8|0;V=wa+12|0;W=wa+16|0;X=wa+43|0;Y=wa+20|0;Z=wa+24|0;_=wa+32|0;$=wa+44|0;aa=wa+28|0;w=1;e:while(1){l=h+(w<<2)|0;n=c[l>>2]|0;k=b[n+8>>1]|0;if((k&514)==514?(a[n+10>>0]|0)==1:0){q=c[n+16>>2]|0;k=n}else if(!(k&1)){q=Gg(n,1)|0;k=c[l>>2]|0}else{q=0;k=n}l=b[k+8>>1]|0;if(!(l&2)){if(!(l&17))v=72}else if((a[k+10>>0]|0)!=1&(l&17)==0)v=72;if((v|0)==72){v=0;Fg(k,1)|0}if(!q){j=1;v=197;break}c[xa>>2]=1;k=a[q>>0]|0;l=k&255;f:do switch(a[208+l>>0]|0){case 108:{if(!(k<<24>>24==0|(l|32|0)!=108)){n=49894;k=q;do{k=k+1|0;n=n+1|0;v=a[k>>0]|0;l=(d[208+(v&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(l|0)!=0));if(l|0){v=193;break f}}if((a[(c[(c[x>>2]|0)+104>>2]|0)+((c[y>>2]|0)*20|0)>>0]|0)==64){c[C>>2]=1;yc(c[e>>2]|0,49827,-1,1,-1)|0;v=193;break f}else{$o(i);r=cp(i,e,xa)|0;q=L()|0;v=i;q=Sv(c[v>>2]|0,c[v+4>>2]|0,r|0,q|0)|0;r=L()|0;v=i;c[v>>2]=q;c[v+4>>2]=r;a[B>>0]=0;a[D>>0]=0;a[E>>0]=0;v=193;break f}}case 117:{o=k<<24>>24==0;if(!(o|(l|32|0)!=117)){k=49904;l=q;do{l=l+1|0;k=k+1|0;r=a[l>>0]|0;n=(d[208+(r&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(r<<24>>24==0|(n|0)!=0));if(!n)v=87}else v=87;if((v|0)==87?(0,a[z>>0]|0):0){m=+g[I>>3]*1.0e3+21086676.0e7;g[va>>3]=m;if(!(m>=0.0&m<4642690608.0e5)){v=193;break f}a[B>>0]=0;a[D>>0]=0;a[E>>0]=0;r=+t(m)>=1.0?(m>0.0?~~+H(+s(m/4294967296.0),4294967295.0)>>>0:~~+F((m-+(~~m>>>0))/4294967296.0)>>>0):0;v=i;c[v>>2]=~~m>>>0;c[v+4>>2]=r;a[A>>0]=1;a[z>>0]=0;c[xa>>2]=0;v=192;break f}if(!o){n=49914;k=q;do{k=k+1|0;n=n+1|0;v=a[k>>0]|0;l=(d[208+(v&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(l|0)!=0));if(l|0){v=193;break f}}if((a[(c[(c[x>>2]|0)+104>>2]|0)+((c[y>>2]|0)*20|0)>>0]|0)==64){c[C>>2]=1;yc(c[e>>2]|0,49827,-1,1,-1)|0;v=193;break f}if(a[M>>0]|0){c[xa>>2]=0;v=192;break f}$o(i);k=cp(i,e,xa)|0;l=L()|0;if(!(c[xa>>2]|0)){q=i;q=Tv(c[q>>2]|0,c[q+4>>2]|0,k|0,l|0)|0;r=L()|0;v=i;c[v>>2]=q;c[v+4>>2]=r;a[B>>0]=0;a[D>>0]=0;a[E>>0]=0;v=cp(i,e,xa)|0;v=Tv(k|0,l|0,v|0,L()|0)|0;r=L()|0;q=i;q=Sv(v|0,r|0,c[q>>2]|0,c[q+4>>2]|0)|0;r=L()|0;v=i;c[v>>2]=q;c[v+4>>2]=r}a[M>>0]=1;v=193;break}case 119:{g:do if(!(k<<24>>24)){k=49918;v=105}else{o=q;k=49918;l=8;p=7;while(1){o=o+1|0;if(l>>>0<=1)break g;k=k+1|0;l=a[o>>0]|0;if(!(l<<24>>24)){v=105;break g}l=a[208+(l&255)>>0]|0;n=a[208+(d[k>>0]|0)>>0]|0;if(l<<24>>24!=n<<24>>24)break;else{l=p;p=p+-1|0}}sa=l&255;ba=n;v=108}while(0);if((v|0)==105){sa=0;ba=a[208+(d[k>>0]|0)>>0]|0;v=108}if((v|0)==108?(0,(sa|0)!=(ba&255|0)):0){v=193;break f}v=q+8|0;if((Lg(v,va,(Eu(v)|0)&1073741823,1)|0)!=0?(u=+g[va>>3],ua=~~u,u<7.0&((ua|0)>-1&u==+(ua|0))):0){dp(i);a[E>>0]=0;a[A>>0]=0;$o(i);q=i;r=c[q>>2]|0;q=c[q+4>>2]|0;n=Sv(r|0,q|0,1296e5,0)|0;n=Wv(n|0,L()|0,864e5,0)|0;n=Zv(n|0,L()|0,7,0)|0;v=L()|0;k=((ua|0)<0)<<31>>31;o=(v|0)>(k|0)|(v|0)==(k|0)&n>>>0>ua>>>0;l=Sv(n|0,v|0,-7,-1)|0;p=L()|0;v=Tv(ua|0,k|0,(o?l:n)|0,(o?p:v)|0)|0;v=Yv(v|0,L()|0,864e5,0)|0;q=Sv(v|0,L()|0,r|0,q|0)|0;r=L()|0;v=i;c[v>>2]=q;c[v+4>>2]=r;a[B>>0]=0;a[D>>0]=0;a[E>>0]=0;c[xa>>2]=0;v=192}else v=193;break}case 115:{h:do if(!(k<<24>>24)){k=49927;v=116}else{o=q;k=49927;l=9;p=8;while(1){o=o+1|0;if(l>>>0<=1)break h;k=k+1|0;l=a[o>>0]|0;if(!(l<<24>>24)){v=116;break h}l=a[208+(l&255)>>0]|0;n=a[208+(d[k>>0]|0)>>0]|0;if(l<<24>>24!=n<<24>>24)break;else{l=p;p=p+-1|0}}ta=l&255;ca=n;v=119}while(0);if((v|0)==116){ta=0;ca=a[208+(d[k>>0]|0)>>0]|0;v=119}if((v|0)==119?(v=0,(ta|0)!=(ca&255|0)):0){v=193;break f}l=a[B>>0]|0;do if(a[A>>0]|0){k=q+9|0;if(!(l<<24>>24)){n=i;l=c[n>>2]|0;n=c[n+4>>2]|0;if(n>>>0>108096|(n|0)==108096&l>>>0>275971583){l=i;r=l+48|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(r|0));a[j>>0]=1;l=k;break}else{v=Sv(l|0,n|0,432e5,0)|0;v=Wv(v|0,L()|0,864e5,0)|0;L()|0;q=~~((+(v|0)+-1867216.25)/36524.25);q=v+1525+q+((q|0)/-4|0)|0;v=~~((+(q|0)+-122.1)/365.25);q=q-((((v&32767)*36525|0)>>>0)/100|0)|0;r=~~(+(q|0)/30.6001);c[P>>2]=q-~~(+(r|0)*30.6001);r=((r|0)<14?-1:-13)+r|0;c[O>>2]=r;c[N>>2]=((r|0)>2?-4716:-4715)+v;v=129;break}}else l=k}else{if(l<<24>>24){l=q+9|0;break}if(!(a[D>>0]|0)){v=193;break f}c[N>>2]=2e3;c[O>>2]=1;c[P>>2]=1;k=q+9|0;v=129}while(0);if((v|0)==129){a[B>>0]=1;l=k}a[D>>0]=1;c[J>>2]=0;c[K>>2]=0;g[I>>3]=0.0;a[z>>0]=0;a[E>>0]=0;a[A>>0]=0;q=a[l>>0]|0;p=d[208+(q&255)>>0]|0;k=p+-109|0;q=q<<24>>24==0;if(!(q|(k|0)!=0)){n=49937;o=l;do{o=o+1|0;n=n+1|0;v=a[o>>0]|0;k=(d[208+(v&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(k|0)!=0))}if(!k){c[P>>2]=1;c[xa>>2]=0;v=192;break f}k=p+-121|0;if(!(q|(k|0)!=0)){n=49943;o=l;do{o=o+1|0;n=n+1|0;v=a[o>>0]|0;k=(d[208+(v&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(k|0)!=0))}if(!k){c[O>>2]=1;c[P>>2]=1;c[xa>>2]=0;v=192;break f}k=p+-100|0;if(!(q|(k|0)!=0)){n=49948;do{l=l+1|0;n=n+1|0;v=a[l>>0]|0;k=(d[208+(v&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(k|0)!=0))}if(!k){c[xa>>2]=0;v=192}else v=193;break}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:case 45:case 43:{l=1;i:while(1){k=a[q+l>>0]|0;switch(k<<24>>24){case 58:case 0:break i;default:{}}if(a[880+(k&255)>>0]&1)break;l=l+1|0}k=q+l|0;if(!(Lg(q,va,l,1)|0)){v=149;break e}l=a[k>>0]|0;if(l<<24>>24==58){k=((d[q>>0]|0)+-48|0)>>>0<10?q:q+1|0;l=wa;r=l+48|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(r|0));if(!(ap(k,wa)|0)){do if(!(a[Q>>0]|0)){if(a[R>>0]|0){k=c[U>>2]|0;if((k+4713|0)>>>0<=14712){da=c[V>>2]|0;ea=c[W>>2]|0;fa=k;v=156}}else{da=1;ea=1;fa=2e3;v=156}if((v|0)==156?(0,(a[S>>0]|0)==0):0){l=(da|0)<3;k=fa+(l<<31>>31)|0;u=(+(ea+2+((k|0)/-100|0)+((k|0)/400|0)+((((l?da+12|0:da)*306001|0)+306001|0)/1e4|0)+(((k*36525|0)+172251900|0)/100|0)|0)+-1524.5)*864.0e5;k=~~u>>>0;l=+t(u)>=1.0?(u>0.0?~~+H(+s(u/4294967296.0),4294967295.0)>>>0:~~+F((u-+(~~u>>>0))/4294967296.0)>>>0):0;v=wa;c[v>>2]=k;c[v+4>>2]=l;a[Q>>0]=1;if(!(a[X>>0]|0))break;v=G(c[Y>>2]|0,36e5)|0;v=((c[Z>>2]|0)*6e4|0)+v|0;u=+g[_>>3]*1.0e3;k=Sv(~~u>>>0|0,(+t(u)>=1.0?(u>0.0?~~+H(+s(u/4294967296.0),4294967295.0)>>>0:~~+F((u-+(~~u>>>0))/4294967296.0)>>>0):0)|0,k|0,l|0)|0;k=Sv(k|0,L()|0,v|0,((v|0)<0)<<31>>31|0)|0;l=L()|0;v=wa;c[v>>2]=k;c[v+4>>2]=l;if(!(a[$>>0]|0))break;v=(c[aa>>2]|0)*6e4|0;k=Tv(k|0,l|0,v|0,((v|0)<0)<<31>>31|0)|0;l=L()|0;v=wa;c[v>>2]=k;c[v+4>>2]=l;a[R>>0]=0;a[X>>0]=0;a[$>>0]=0;break}l=wa;r=l+48|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(r|0));a[T>>0]=1;k=0;l=0}else{l=wa;k=c[l>>2]|0;l=c[l+4>>2]|0}while(0);r=Sv(k|0,l|0,-432e5,-1)|0;r=Zv(r|0,L()|0,864e5,0)|0;v=L()|0;p=(a[q>>0]|0)==45;o=Tv(0,0,r|0,v|0)|0;q=L()|0;r=p?o:r;q=p?q:v;v=wa;c[v>>2]=r;c[v+4>>2]=q;$o(i);a[B>>0]=0;a[D>>0]=0;a[E>>0]=0;v=i;q=Sv(c[v>>2]|0,c[v+4>>2]|0,r|0,q|0)|0;r=L()|0;v=i;c[v>>2]=q;c[v+4>>2]=r;c[xa>>2]=0}v=193;break f}if(a[880+(l&255)>>0]&1)do k=k+1|0;while((a[880+(d[k>>0]|0)>>0]&1)!=0);l=(Eu(k)|0)&1073741823;if((l+-3|0)>>>0>7)v=193;else{r=l+-1|0;l=(a[k+r>>0]|32)<<24>>24==115?r:l;$o(i);c[xa>>2]=1;m=+g[va>>3];u=m<0.0?-.5:.5;j:do if((l|0)>0){k:do switch(l|0){case 6:{v=d[k>>0]|0;l=208+v|0;do if((v|32|0)==115){v=d[k+1>>0]|0;l=208+v|0;if((v|32|0)==101){v=d[k+2>>0]|0;l=208+v|0;if((v|32|0)==99){l=d[k+3>>0]|0;if((l|32|0)!=111){ga=208+l|0;ha=111;v=170;break}l=d[k+4>>0]|0;if((l|32|0)!=110){ga=208+l|0;ha=110;v=170;break}l=d[k+5>>0]|0;if((l|32|0)==100)v=171;else{ga=208+l|0;ha=100;v=170}}else{ga=l;ha=99;v=170}}else{ga=l;ha=101;v=170}}else{ga=l;ha=115;v=170}while(0);if((v|0)==170?(v=0,(ha|0)==(d[ga>>0]|0)):0)v=171;if((v|0)==171?(v=0,m>-464269060800.0&m<464269060800.0):0){k=0;break k}r=d[k>>0]|0;l=208+r|0;do if((r|32|0)==109){r=d[k+1>>0]|0;l=208+r|0;if((r|32|0)==105){l=d[k+2>>0]|0;if((l|32|0)!=110){ia=208+l|0;ja=110;v=178;break}l=d[k+3>>0]|0;if((l|32|0)!=117){ia=208+l|0;ja=117;v=178;break}l=d[k+4>>0]|0;if((l|32|0)!=116){ia=208+l|0;ja=116;v=178;break}k=d[k+5>>0]|0;if((k|32|0)!=101){ia=208+k|0;ja=101;v=178}}else{ia=l;ja=105;v=178}}else{ia=l;ja=109;v=178}while(0);if((v|0)==178?(0,(ja|0)!=(d[ia>>0]|0)):0)break j;if(m>-7737817680.0&m<7737817680.0)k=1;else break j;break}case 4:{v=d[k>>0]|0;l=208+v|0;if((v|32|0)==104){v=d[k+1>>0]|0;l=208+v|0;if((v|32|0)==111){v=d[k+2>>0]|0;l=208+v|0;if((v|32|0)==117){l=d[k+3>>0]|0;if((l|32|0)==114)v=182;else{ka=208+l|0;la=114;v=181}}else{ka=l;la=117;v=181}}else{ka=l;la=111;v=181}}else{ka=l;la=104;v=181}if((v|0)==181?(v=0,(la|0)==(d[ka>>0]|0)):0)v=182;if((v|0)==182?(v=0,m>-128963628.0&m<128963628.0):0){k=2;break k}r=d[k>>0]|0;l=208+r|0;do if((r|32|0)==121){r=d[k+1>>0]|0;l=208+r|0;if((r|32|0)==101){l=d[k+2>>0]|0;if((l|32|0)!=97){qa=208+l|0;ra=97;v=190;break}k=d[k+3>>0]|0;if((k|32|0)!=114){qa=208+k|0;ra=114;v=190}}else{qa=l;ra=101;v=190}}else{qa=l;ra=121;v=190}while(0);if((v|0)==190?(0,(ra|0)!=(d[qa>>0]|0)):0)break j;if(m>-14713.0&m<14713.0)k=5;else break j;break}case 3:{r=d[k>>0]|0;l=208+r|0;if((r|32|0)==100){r=d[k+1>>0]|0;l=208+r|0;if((r|32|0)==97){k=d[k+2>>0]|0;if((k|32|0)!=121){ma=208+k|0;na=121;v=184}}else{ma=l;na=97;v=184}}else{ma=l;na=100;v=184}if((v|0)==184?(0,(na|0)!=(d[ma>>0]|0)):0)break j;if(m>-5373485.0&m<5373485.0)k=3;else break j;break}case 5:{r=d[k>>0]|0;l=208+r|0;do if((r|32|0)==109){r=d[k+1>>0]|0;l=208+r|0;if((r|32|0)==111){r=d[k+2>>0]|0;l=208+r|0;if((r|32|0)==110){l=d[k+3>>0]|0;if((l|32|0)!=116){oa=208+l|0;pa=116;v=187;break}k=d[k+4>>0]|0;if((k|32|0)!=104){oa=208+k|0;pa=104;v=187}}else{oa=l;pa=110;v=187}}else{oa=l;pa=111;v=187}}else{oa=l;pa=109;v=187}while(0);if((v|0)==187?(0,(pa|0)!=(d[oa>>0]|0)):0)break j;if(m>-176546.0&m<176546.0)k=4;else break j;break}default:break j}while(0);switch(a[22816+(k*24|0)>>0]|0){case 1:{dp(i);v=~~m;r=(c[O>>2]|0)+v|0;q=(((r|0)>0?-1:-12)+r|0)/12|0;c[N>>2]=q+(c[N>>2]|0);r=(G(q,-12)|0)+r|0;c[O>>2]=r;a[A>>0]=0;m=m-+(v|0);g[va>>3]=m;break}case 2:{v=~~m;dp(i);c[N>>2]=(c[N>>2]|0)+v;a[A>>0]=0;m=m-+(v|0);g[va>>3]=m;break}default:{}}$o(i);u=u+m*+g[22816+(k*24|0)+16>>3];q=+t(u)>=1.0?(u>0.0?~~+H(+s(u/4294967296.0),4294967295.0)>>>0:~~+F((u-+(~~u>>>0))/4294967296.0)>>>0):0;r=i;q=Sv(c[r>>2]|0,c[r+4>>2]|0,~~u>>>0|0,q|0)|0;r=L()|0;v=i;c[v>>2]=q;c[v+4>>2]=r;c[xa>>2]=0}while(0);a[B>>0]=0;a[D>>0]=0;a[E>>0]=0;v=193}break}default:v=193}while(0);if((v|0)==192)v=0;else if((v|0)==193?(v=0,c[xa>>2]|0):0){j=1;v=197;break}w=w+1|0;if((w|0)>=(f|0))break d}if((v|0)==149){i=1;Ra=ya;return i|0}else if((v|0)==197){Ra=ya;return j|0}}else j=i+46|0;while(0);$o(i);if(!(a[j>>0]|0)){xa=c[i+4>>2]|0;Ra=ya;return (xa>>>0>108096|(xa|0)==108096&(c[i>>2]|0)>>>0>275971583)&1|0}else{i=1;Ra=ya;return i|0}return 0}function $o(b){b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.0;j=b+40|0;if(a[j>>0]|0)return;k=b+42|0;if(a[k>>0]|0){h=c[b+8>>2]|0;if((h+4713|0)>>>0<=14712){d=c[b+12>>2]|0;e=c[b+16>>2]|0;f=h;i=4}}else{d=1;e=1;f=2e3;i=4}if((i|0)==4?(a[b+41>>0]|0)==0:0){i=(d|0)<3;h=f+(i<<31>>31)|0;l=(+(e+2+((h|0)/-100|0)+((h|0)/400|0)+((((i?d+12|0:d)*306001|0)+306001|0)/1e4|0)+(((h*36525|0)+172251900|0)/100|0)|0)+-1524.5)*864.0e5;d=~~l>>>0;e=+t(l)>=1.0?(l>0.0?~~+H(+s(l/4294967296.0),4294967295.0)>>>0:~~+F((l-+(~~l>>>0))/4294967296.0)>>>0):0;h=b;c[h>>2]=d;c[h+4>>2]=e;a[j>>0]=1;h=b+43|0;if(!(a[h>>0]|0))return;f=G(c[b+20>>2]|0,36e5)|0;f=((c[b+24>>2]|0)*6e4|0)+f|0;l=+g[b+32>>3]*1.0e3;d=Sv(~~l>>>0|0,(+t(l)>=1.0?(l>0.0?~~+H(+s(l/4294967296.0),4294967295.0)>>>0:~~+F((l-+(~~l>>>0))/4294967296.0)>>>0):0)|0,d|0,e|0)|0;d=Sv(d|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;e=L()|0;f=b;c[f>>2]=d;c[f+4>>2]=e;f=b+44|0;if(!(a[f>>0]|0))return;i=(c[b+28>>2]|0)*6e4|0;i=Tv(d|0,e|0,i|0,((i|0)<0)<<31>>31|0)|0;j=L()|0;c[b>>2]=i;c[b+4>>2]=j;a[k>>0]=0;a[h>>0]=0;a[f>>0]=0;return}d=b;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a[b+46>>0]=1;return}function ap(b,e){b=b|0;e=e|0;var f=0,h=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+48|0;r=t+16|0;h=t+8|0;q=t;p=t+36|0;m=t+32|0;n=t+28|0;o=t+24|0;c[q>>2]=m;c[q+4>>2]=n;if((bp(b,49807,q)|0)!=2){e=1;Ra=t;return e|0}l=b+5|0;if((a[l>>0]|0)==58){c[h>>2]=o;if((bp(b+6|0,49815,h)|0)!=1){e=1;Ra=t;return e|0}h=b+8|0;if((a[h>>0]|0)==46?(i=b+9|0,f=a[i>>0]|0,((f&255)+-48|0)>>>0<10):0){k=0.0;j=1.0;do{k=k*10.0+ +(f<<24>>24)+-48.0;j=j*10.0;i=i+1|0;f=a[i>>0]|0}while(((f&255)+-48|0)>>>0<10);j=k/j}else{j=0.0;i=h}}else{c[o>>2]=0;j=0.0;i=l}a[e+40>>0]=0;a[e+41>>0]=0;a[e+43>>0]=1;c[e+20>>2]=c[m>>2];c[e+24>>2]=c[n>>2];g[e+32>>3]=j+ +(c[o>>2]|0);while(1){f=i+1|0;if(!(a[880+(d[i>>0]|0)>>0]&1))break;else i=f}b=e+28|0;c[b>>2]=0;h=a[i>>0]|0;switch(h<<24>>24){case 45:{h=-1;s=15;break}case 43:{h=1;s=15;break}default:if((h|32)<<24>>24==122){i=0;s=18}else f=0}do if((s|0)==15){c[r>>2]=q;c[r+4>>2]=p;if((bp(f,49819,r)|0)==2){s=G(((c[q>>2]|0)*60|0)+(c[p>>2]|0)|0,h)|0;c[b>>2]=s;f=i+6|0;i=s;s=18;break}e=1;Ra=t;return e|0}while(0);if((s|0)==18){while(1)if(!(a[880+(d[f>>0]|0)>>0]&1))break;else f=f+1|0;a[e+45>>0]=1;h=a[f>>0]|0;f=i}if(h<<24>>24){e=1;Ra=t;return e|0}a[e+44>>0]=(f|0)!=0&1;e=0;Ra=t;return e|0}function bp(e,f,g){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;o=Ra;Ra=Ra+16|0;n=o;c[n>>2]=g;g=e;e=0;a:while(1){h=(d[f>>0]|0)+208&255;m=d[f+1>>0]|0;k=b[31130+((a[f+2>>0]|0)+-97<<1)>>1]|0;l=a[f+3>>0]|0;if(!(h<<24>>24))h=0;else{j=0;i=h;while(1){i=i+-1<<24>>24;h=a[g>>0]|0;if(((h&255)+-48|0)>>>0>=10){g=11;break a}h=(j*10|0)+-48+(h<<24>>24)|0;g=g+1|0;if(!(i<<24>>24))break;else j=h}}if((h|0)<((m<<24)+-805306368>>24|0)|(h|0)>(k&65535|0)){g=11;break}if(!(l<<24>>24)){g=8;break}if(l<<24>>24!=(a[g>>0]|0)){g=11;break}l=(c[n>>2]|0)+(4-1)&~(4-1);m=c[l>>2]|0;c[n>>2]=l+4;c[m>>2]=h;g=g+1|0;f=f+4|0;e=e+1|0}if((g|0)==8){l=(c[n>>2]|0)+(4-1)&~(4-1);m=c[l>>2]|0;c[n>>2]=l+4;c[m>>2]=h;n=e+1|0;Ra=o;return n|0}else if((g|0)==11){Ra=o;return e|0}return 0}function cp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0;o=Ra;Ra=Ra+64|0;m=o;n=o+48|0;h=m;f=h+48|0;do{c[h>>2]=c[b>>2];h=h+4|0;b=b+4|0}while((h|0)<(f|0));dp(m);b=m+8|0;f=c[b>>2]|0;if((f+-1971|0)>>>0>66){c[b>>2]=2e3;c[m+12>>2]=1;c[m+16>>2]=1;c[m+20>>2]=0;c[m+24>>2]=0;g[m+32>>3]=0.0;f=2e3;j=0;k=0}else{j=m+32|0;p=+(~~(+g[j>>3]+.5)|0);g[j>>3]=p;p=p*1.0e3;j=~~p>>>0;k=+t(p)>=1.0?(p>0.0?~~+H(+s(p/4294967296.0),4294967295.0)>>>0:~~+F((p-+(~~p>>>0))/4294967296.0)>>>0):0}c[m+28>>2]=0;i=m+40|0;a[i>>0]=0;l=m+42|0;h=(a[l>>0]|0)==0;b=h?1:c[m+12>>2]|0;if(!(a[m+41>>0]|0)){q=(b|0)<3;f=(h?2e3:f)+(q<<31>>31)|0;p=(+((h?3:(c[m+16>>2]|0)+2|0)+((f|0)/-100|0)+((f|0)/400|0)+((((q?b+12|0:b)*306001|0)+306001|0)/1e4|0)+(((f*36525|0)+172251900|0)/100|0)|0)+-1524.5)*864.0e5;f=~~p>>>0;b=+t(p)>=1.0?(p>0.0?~~+H(+s(p/4294967296.0),4294967295.0)>>>0:~~+F((p-+(~~p>>>0))/4294967296.0)>>>0):0;h=m;c[h>>2]=f;c[h+4>>2]=b;a[i>>0]=1;i=m+43|0;if(a[i>>0]|0){h=G(c[m+20>>2]|0,36e5)|0;h=((c[m+24>>2]|0)*6e4|0)+h|0;f=Sv(j|0,k|0,f|0,b|0)|0;f=Sv(f|0,L()|0,h|0,((h|0)<0)<<31>>31|0)|0;b=L()|0;h=m;c[h>>2]=f;c[h+4>>2]=b;h=m+44|0;if(!(a[h>>0]|0))j=m;else{j=m;c[j>>2]=f;c[j+4>>2]=b;a[l>>0]=0;a[i>>0]=0;a[h>>0]=0;j=m}}else j=m}else{h=m;f=h+48|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(f|0));a[m+46>>0]=1;j=m;f=0;b=0}i=Wv(f|0,b|0,1e3,0)|0;L()|0;c[n>>2]=i+-413362496;i=Ha(n|0)|0;if((i|0)==0|(c[7390]|0)!=0){c[d+20>>2]=1;yc(c[d>>2]|0,49952,-1,1,-1)|0;c[e>>2]=1;e=0;q=0;K(e|0);Ra=o;return q|0}b=c[i+16>>2]|0;f=c[i+20>>2]|0;h=b+1|0;if((f+6613|0)>>>0>14712){b=0;f=0}else{d=c[i>>2]|0;d=Yv(d|0,((d|0)<0)<<31>>31|0,1e3,0)|0;q=L()|0;n=G(c[i+8>>2]|0,36e5)|0;m=(h|0)<3;f=f+1900+(m<<31>>31)|0;p=(+(((f|0)/-100|0)+((c[i+12>>2]|0)+2)+((f|0)/400|0)+((((m?b+13|0:h)*306001|0)+306001|0)/1e4|0)+(((f*36525|0)+172251900|0)/100|0)|0)+-1524.5)*864.0e5;b=+t(p)>=1.0?(p>0.0?~~+H(+s(p/4294967296.0),4294967295.0)>>>0:~~+F((p-+(~~p>>>0))/4294967296.0)>>>0):0;f=((c[i+4>>2]|0)*6e4|0)+n|0;f=Sv(d|0,q|0,f|0,((f|0)<0)<<31>>31|0)|0;b=Sv(f|0,L()|0,~~p>>>0|0,b|0)|0;f=L()|0}c[e>>2]=0;q=j;q=Tv(b|0,f|0,c[q>>2]|0,c[q+4>>2]|0)|0;e=L()|0;K(e|0);Ra=o;return q|0}function dp(b){b=b|0;var d=0,e=0,f=0,h=0,i=0.0;d=b+42|0;if(!(a[d>>0]|0)){do if(a[b+40>>0]|0){f=b;e=c[f>>2]|0;f=c[f+4>>2]|0;if(f>>>0>108096|(f|0)==108096&e>>>0>275971583){d=b;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));d=b+46|0;break}else{f=Sv(e|0,f|0,432e5,0)|0;f=Wv(f|0,L()|0,864e5,0)|0;L()|0;h=~~((+(f|0)+-1867216.25)/36524.25);h=f+1525+h+((h|0)/-4|0)|0;f=~~((+(h|0)+-122.1)/365.25);h=h-((((f&32767)*36525|0)>>>0)/100|0)|0;e=~~(+(h|0)/30.6001);c[b+16>>2]=h-~~(+(e|0)*30.6001);e=((e|0)<14?-1:-13)+e|0;c[b+12>>2]=e;c[b+8>>2]=((e|0)>2?-4716:-4715)+f;break}}else{c[b+8>>2]=2e3;c[b+12>>2]=1;c[b+16>>2]=1}while(0);a[d>>0]=1}d=b+43|0;if(a[d>>0]|0)return;$o(b);e=b;e=Sv(c[e>>2]|0,c[e+4>>2]|0,432e5,0)|0;e=Zv(e|0,L()|0,864e5,0)|0;L()|0;i=+(e|0)/1.0e3;e=~~i;h=(e|0)/3600|0;c[b+20>>2]=h;h=(G(h,-3600)|0)+e|0;f=(h|0)/60|0;c[b+24>>2]=f;i=i-+(e|0)+ +((G(f,-60)|0)+h|0);g[b+32>>3]=i;a[b+41>>0]=0;a[d>>0]=1;return}function ep(a){a=a|0;var b=0,d=0,e=0;e=Ra;Ra=Ra+16|0;d=e;b=lu(a+8|0)|0;if(!b){c[d>>2]=a;Db(7,50076,d);d=0;Ra=e;return d|0}else{d=b;c[d>>2]=a;c[d+4>>2]=((a|0)<0)<<31>>31;d=b+8|0;Ra=e;return d|0}return 0}function fp(a){a=a|0;mu(a+-8|0);return}function gp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=Ra;Ra=Ra+16|0;e=f;a=a+-8|0;d=ou(a,b+8|0)|0;if(!d){c[e>>2]=c[a>>2];c[e+4>>2]=b;Db(7,50114,e);e=0;Ra=f;return e|0}else{e=d;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;e=d+8|0;Ra=f;return e|0}return 0}function hp(a){a=a|0;return c[a+-8>>2]|0}function ip(a){a=a|0;return a+7&-8|0}function jp(a){a=a|0;return 0}function kp(a){a=a|0;return}function lp(a){a=a|0;var b=0;a=59188;b=a+100|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));a=(c[7374]|0)==0;c[14811]=a&1;b=c[7376]|0;c[14812]=a&(b|0)!=0?b:0;c[14800]=10;c[14810]=1;return 0}function mp(a){a=a|0;var b=0;a=59188;b=a+100|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function np(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=((c[14811]|0)*52|0)+68|0;h=Sv(i|0,((i|0)<0)<<31>>31|0,-1,-1)|0;g=L()|0;if(g>>>0>0|(g|0)==0&h>>>0>2147483390){e=0;return e|0}if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](i)|0;if(!f){e=0;return e|0}}else{f=Wa[c[29356>>2]&127](i)|0;if((c[14985]|0)>>>0>>0)c[14985]=i;h=59064;g=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&g>>>0>0){j=c[14978]|0;h=Tv(g|0,h|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;c[14768]=((g|0)<0|(g|0)==0&h>>>0<=j>>>0)&1}f=Wa[c[29340>>2]&127](f)|0;if(!f){j=0;return j|0}g=Wa[c[29352>>2]&127](f)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0)c[14987]=g}gw(f|0,0,i|0)|0;if(!(c[14811]|0))g=59188;else{c[f+80>>2]=10;g=f+68|0}h=g+20|0;i=g+34|0;if(!(b[i>>1]|0)){b[i>>1]=1;c[g+44>>2]=h;c[g+48>>2]=h}c[f>>2]=g;c[f+8>>2]=a;c[f+12>>2]=d;c[f+16>>2]=a+32+d;j=(e|0)!=0;c[f+20>>2]=j&1;wp(f);if(j){c[f+24>>2]=10;e=g+8|0;j=c[e>>2]|0;c[e>>2]=j+10;c[g+12>>2]=-10-j+10+(c[g+4>>2]|0);c[f+4>>2]=g+16}else c[f+4>>2]=f+40;if(c[f+52>>2]|0){j=f;return j|0}up(f);j=0;return j|0}function op(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!(c[a+20>>2]|0))return;e=c[a>>2]|0;d=a+28|0;g=e+4|0;f=(c[g>>2]|0)+(b-(c[d>>2]|0))|0;c[g>>2]=f;c[e+12>>2]=f+10-(c[e+8>>2]|0);c[d>>2]=b;c[a+32>>2]=((b*9|0)>>>0)/10|0;xp(a);return}function pp(a){a=a|0;return c[a+48>>2]|0}function qp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[(c[a+56>>2]|0)+(((b>>>0)%((c[a+52>>2]|0)>>>0)|0)<<2)>>2]|0;a:do if(e|0){f=e;while(1){if((c[f+8>>2]|0)==(b|0))break;e=c[f+16>>2]|0;if(!e)break a;else f=e}e=f+24|0;a=c[e>>2]|0;if(!a){d=f;return d|0}d=c[f+28>>2]|0;c[d+24>>2]=a;c[(c[e>>2]|0)+28>>2]=d;c[e>>2]=0;d=(c[f+20>>2]|0)+44|0;c[d>>2]=(c[d>>2]|0)+-1;d=f;return d|0}while(0);if(!d){d=0;return d|0}d=Ap(a,b,d)|0;return d|0}function rp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[a>>2]|0;if((d|0)==0?(c[e+16>>2]|0)>>>0<=(c[e+4>>2]|0)>>>0:0){d=e+44|0;c[b+28>>2]=e+20;e=c[d>>2]|0;c[b+24>>2]=e;c[e+28>>2]=b;c[d>>2]=b;b=a+44|0;c[b>>2]=(c[b>>2]|0)+1;return}d=c[b+20>>2]|0;a=(c[d+56>>2]|0)+((((c[b+8>>2]|0)>>>0)%((c[d+52>>2]|0)>>>0)|0)<<2)|0;while(1){f=c[a>>2]|0;e=f+16|0;if((f|0)==(b|0))break;else a=e}c[a>>2]=c[e>>2];f=d+48|0;c[f>>2]=(c[f>>2]|0)+-1;zp(b);return}function sp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=c[a+52>>2]|0;h=a+56|0;d=(c[h>>2]|0)+(((d>>>0)%(g>>>0)|0)<<2)|0;while(1){f=c[d>>2]|0;if((f|0)==(b|0))break;else d=f+16|0}f=b+16|0;c[d>>2]=c[f>>2];c[b+8>>2]=e;d=(c[h>>2]|0)+(((e>>>0)%(g>>>0)|0)<<2)|0;c[f>>2]=c[d>>2];c[d>>2]=b;d=a+36|0;if((c[d>>2]|0)>>>0>=e>>>0)return;c[d>>2]=e;return}function tp(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;k=a+36|0;d=c[k>>2]|0;if(d>>>0>>0)return;l=a+52|0;e=c[l>>2]|0;if((d-b|0)>>>0>>0){f=(b>>>0)%(e>>>0)|0;i=(d>>>0)%(e>>>0)|0}else{i=e>>>1;f=i;i=i+-1|0}j=a+56|0;h=a+48|0;while(1){d=(c[j>>2]|0)+(f<<2)|0;e=c[d>>2]|0;if(e|0)do{do if((c[e+8>>2]|0)>>>0>=b>>>0){c[h>>2]=(c[h>>2]|0)+-1;c[d>>2]=c[e+16>>2];a=e+24|0;g=c[a>>2]|0;if(!g){zp(e);break}else{m=c[e+28>>2]|0;c[m+24>>2]=g;c[(c[a>>2]|0)+28>>2]=m;c[a>>2]=0;g=(c[e+20>>2]|0)+44|0;c[g>>2]=(c[g>>2]|0)+-1;zp(e);break}}else d=e+16|0;while(0);e=c[d>>2]|0}while((e|0)!=0);if((f|0)==(i|0))break;f=((f+1|0)>>>0)%((c[l>>2]|0)>>>0)|0}c[k>>2]=b+-1;return}function up(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;j=c[a>>2]|0;k=a+48|0;a:do if(c[k>>2]|0){b=c[a+36>>2]|0;l=a+52|0;d=c[l>>2]|0;if(b>>>0>>0){e=0;h=(b>>>0)%(d>>>0)|0}else{h=d>>>1;e=h;h=h+-1|0}i=a+56|0;while(1){g=(c[i>>2]|0)+(e<<2)|0;b=c[g>>2]|0;if(b|0)do{c[k>>2]=(c[k>>2]|0)+-1;c[g>>2]=c[b+16>>2];d=b+24|0;f=c[d>>2]|0;if(!f)zp(b);else{m=c[b+28>>2]|0;c[m+24>>2]=f;c[(c[d>>2]|0)+28>>2]=m;c[d>>2]=0;f=(c[b+20>>2]|0)+44|0;c[f>>2]=(c[f>>2]|0)+-1;zp(b)}b=c[g>>2]|0}while((b|0)!=0);if((e|0)==(h|0))break a;e=((e+1|0)>>>0)%((c[l>>2]|0)>>>0)|0}}while(0);l=j+4|0;m=(c[l>>2]|0)-(c[a+28>>2]|0)|0;c[l>>2]=m;l=j+8|0;b=(c[l>>2]|0)-(c[a+24>>2]|0)|0;c[l>>2]=b;c[j+12>>2]=m+10-b;xp(a);b=c[a+64>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{m=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);b=c[a+56>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{m=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return}else{m=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return}}function vp(a){a=a|0;var b=0,d=0;if(!(c[a+20>>2]|0))return;b=(c[a>>2]|0)+4|0;d=c[b>>2]|0;c[b>>2]=0;xp(a);c[b>>2]=d;return}function wp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=a+52|0;h=c[e>>2]<<1;h=h>>>0>256?h:256;f=Wb(h<<2,0)|0;if(!f)return;g=c[e>>2]|0;d=a+56|0;if(g|0){b=0;do{a=c[(c[d>>2]|0)+(b<<2)>>2]|0;if(a|0)do{k=a+16|0;j=a;a=c[k>>2]|0;i=f+((((c[j+8>>2]|0)>>>0)%(h>>>0)|0)<<2)|0;c[k>>2]=c[i>>2];c[i>>2]=j}while((a|0)!=0);b=b+1|0}while(b>>>0>>0)}qb(c[d>>2]|0);c[d>>2]=f;c[e>>2]=h;return}function xp(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=c[a>>2]|0;d=f+48|0;e=f+16|0;f=f+4|0;a:do if((c[e>>2]|0)>>>0>(c[f>>2]|0)>>>0)do{g=c[d>>2]|0;if(b[g+14>>1]|0)break a;h=g+24|0;i=c[g+28>>2]|0;c[i+24>>2]=c[h>>2];c[(c[h>>2]|0)+28>>2]=i;c[h>>2]=0;h=(c[g+20>>2]|0)+44|0;c[h>>2]=(c[h>>2]|0)+-1;yp(g,1)}while((c[e>>2]|0)>>>0>(c[f>>2]|0)>>>0);while(0);if(c[a+48>>2]|0)return;d=a+64|0;e=c[d>>2]|0;if(!e)return;if(!(c[7324]|0))ab[c[29344>>2]&127](e);else{i=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e)}c[a+60>>2]=0;c[d>>2]=0;return}function yp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=c[a+20>>2]|0;d=(c[f+56>>2]|0)+((((c[a+8>>2]|0)>>>0)%((c[f+52>>2]|0)>>>0)|0)<<2)|0;while(1){g=c[d>>2]|0;e=g+16|0;if((g|0)==(a|0))break;else d=e}c[d>>2]=c[e>>2];g=f+48|0;c[g>>2]=(c[g>>2]|0)+-1;if(!b)return;zp(a);return}function zp(a){a=a|0;var d=0,e=0;e=c[a+20>>2]|0;a:do if(!(b[a+12>>1]|0)){d=c[a>>2]|0;if(d|0){a=d;do if((c[14816]|0)>>>0<=a>>>0)if((c[14817]|0)>>>0>a>>>0){c[14979]=(c[14979]|0)+-1;c[d>>2]=c[14819];c[14819]=d;d=(c[14820]|0)+1|0;c[14820]=d;c[14821]=(d|0)<(c[14815]|0)&1;break a}else{a=Wa[c[29352>>2]&127](d)|0;break}else a=Wa[c[29352>>2]&127](d)|0;while(0);c[14980]=(c[14980]|0)-a;if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{a=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-a;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}}else{d=e+60|0;c[a+16>>2]=c[d>>2];c[d>>2]=a}while(0);e=c[e+4>>2]|0;c[e>>2]=(c[e>>2]|0)+-1;return}function Ap(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,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;m=c[a>>2]|0;q=a+48|0;j=c[q>>2]|0;g=c[a+44>>2]|0;i=j-g|0;if((e|0)==1){if(i>>>0>=(c[m+12>>2]|0)>>>0){d=0;return d|0}if(i>>>0>=(c[a+32>>2]|0)>>>0){d=0;return d|0}if((c[14814]|0)!=0?((c[a+12>>2]|0)+(c[a+8>>2]|0)|0)<=(c[14813]|0):0)e=59284;else e=59072;if(g>>>0>>0&(c[e>>2]|0)!=0){d=0;return d|0}}p=a+52|0;if(j>>>0>=(c[p>>2]|0)>>>0)wp(a);k=c[a+20>>2]|0;do if((k|0)!=0?(h=c[m+48>>2]|0,(b[h+14>>1]|0)==0):0){if(((c[q>>2]|0)+1|0)>>>0<(c[a+28>>2]|0)>>>0){if((c[14814]|0)!=0?((c[a+12>>2]|0)+(c[a+8>>2]|0)|0)<=(c[14813]|0):0)e=59284;else e=59072;if(!(c[e>>2]|0)){r=22;break}}g=h+20|0;i=c[g>>2]|0;l=h+8|0;e=(c[i+56>>2]|0)+((((c[l>>2]|0)>>>0)%((c[i+52>>2]|0)>>>0)|0)<<2)|0;while(1){s=c[e>>2]|0;j=s+16|0;if((s|0)==(h|0))break;else e=j}c[e>>2]=c[j>>2];e=i+48|0;c[e>>2]=(c[e>>2]|0)+-1;e=h+24|0;i=c[h+28>>2]|0;c[i+24>>2]=c[e>>2];c[(c[e>>2]|0)+28>>2]=i;c[e>>2]=0;i=c[g>>2]|0;s=i+44|0;c[s>>2]=(c[s>>2]|0)+-1;if((c[i+16>>2]|0)==(c[a+16>>2]|0)){f=m+16|0;c[f>>2]=k-(c[i+20>>2]|0)+(c[f>>2]|0);f=l;break}else{zp(h);r=22;break}}else r=22;while(0);if((r|0)==22){m=a+60|0;e=c[m>>2]|0;do if(!e){if(((c[q>>2]|0)==0?(n=c[14812]|0,n|0):0)?(o=a+28|0,(c[o>>2]|0)>>>0>=3):0){if((n|0)>0){j=a+16|0;e=c[j>>2]|0;g=((e|0)<0)<<31>>31;h=Yv(e|0,g|0,n|0,((n|0)<0)<<31>>31|0)|0;i=L()|0}else{h=Yv(n|0,((n|0)<0)<<31>>31|0,-1024,-1)|0;i=L()|0;j=a+16|0;g=c[j>>2]|0;e=g;g=((g|0)<0)<<31>>31}e=Yv(e|0,g|0,c[o>>2]|0,0)|0;s=L()|0;o=(i|0)>(s|0)|(i|0)==(s|0)&h>>>0>e>>>0;e=o?e:h;s=Sv(e|0,(o?s:i)|0,-1,-1)|0;o=L()|0;do if(!(o>>>0>0|(o|0)==0&s>>>0>2147483390)){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](e)|0;break}h=Wa[c[29356>>2]&127](e)|0;if((c[14985]|0)>>>0>>0)c[14985]=e;g=59064;e=c[g>>2]|0;g=c[g+4>>2]|0;if((g|0)>0|(g|0)==0&e>>>0>0){s=c[14978]|0;o=Tv(e|0,g|0,h|0,((h|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&o>>>0<=s>>>0)&1}g=Wa[c[29340>>2]&127](h)|0;if(g){e=Wa[c[29352>>2]&127](g)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0>(c[14987]|0)>>>0)c[14987]=e}else g=0}else g=0;while(0);c[a+64>>2]=g;if(!g)e=c[m>>2]|0;else{e=Wa[c[29352>>2]&127](g)|0;i=c[j>>2]|0;e=(e|0)/(i|0)|0;j=c[a+8>>2]|0;k=G(e+-1|0,i)|0;h=g;l=c[m>>2]|0;while(1){s=l;l=h+j|0;c[l>>2]=h;c[l+4>>2]=l+32;b[l+12>>1]=1;b[l+14>>1]=0;c[l+16>>2]=s;c[l+28>>2]=0;e=e+-1|0;if(!e)break;else h=h+i|0}e=g+(k+j)|0;c[m>>2]=e}if(e|0){f=e;r=47;break}}h=c[a+16>>2]|0;if((c[14813]|0)>=(h|0)?(f=c[14819]|0,(f|0)!=0):0){c[14819]=c[f>>2];s=c[14820]|0;c[14820]=s+-1;c[14821]=(s|0)<=(c[14815]|0)&1;if((c[14986]|0)>>>0>>0)c[14986]=h;e=(c[14979]|0)+1|0;c[14979]=e;if(e>>>0>(c[14983]|0)>>>0)c[14983]=e}else r=54;do if((r|0)==54){s=Sv(h|0,((h|0)<0)<<31>>31|0,-1,-1)|0;o=L()|0;if(!(o>>>0>0|(o|0)==0&s>>>0>2147483390)){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](h)|0;if(!f){f=0;break}}else{f=Wa[c[29356>>2]&127](h)|0;if((c[14985]|0)>>>0>>0)c[14985]=h;g=59064;e=c[g>>2]|0;g=c[g+4>>2]|0;if((g|0)>0|(g|0)==0&e>>>0>0){s=c[14978]|0;o=Tv(e|0,g|0,f|0,((f|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&o>>>0<=s>>>0)&1}f=Wa[c[29340>>2]&127](f)|0;if(!f){f=0;break}e=Wa[c[29352>>2]&127](f)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0>(c[14987]|0)>>>0)c[14987]=e}e=Wa[c[29352>>2]&127](f)|0;if((c[14986]|0)>>>0>>0)c[14986]=h;e=(c[14980]|0)+e|0;c[14980]=e;if(e>>>0>(c[14984]|0)>>>0)c[14984]=e}else f=0}while(0);e=f+(c[a+8>>2]|0)|0;if(!f){s=0;return s|0}else{c[e>>2]=f;c[e+4>>2]=e+32;b[e+12>>1]=0;b[e+14>>1]=0;f=e;break}}else{f=e;r=47}while(0);if((r|0)==47){s=f+16|0;c[m>>2]=c[s>>2];c[s>>2]=0}h=c[a+4>>2]|0;c[h>>2]=(c[h>>2]|0)+1;h=f;g=f+20|0;e=f+24|0;f=f+8|0}s=(d>>>0)%((c[p>>2]|0)>>>0)|0;c[q>>2]=(c[q>>2]|0)+1;c[f>>2]=d;f=a+56|0;c[h+16>>2]=c[(c[f>>2]|0)+(s<<2)>>2];c[g>>2]=a;c[e>>2]=0;c[c[h+4>>2]>>2]=0;c[(c[f>>2]|0)+(s<<2)>>2]=h;f=a+36|0;if((c[f>>2]|0)>>>0>=d>>>0){s=h;return s|0}c[f>>2]=d;s=h;return s|0}function Bp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;jb(a);g=a+20|0;if((c[g>>2]|0)>0){h=a+16|0;f=0;do{b=c[(c[h>>2]|0)+(f<<4)+12>>2]|0;if(b|0?(e=c[b+16>>2]|0,e|0):0){b=e;do{d=c[b+8>>2]|0;if(c[d+56>>2]|0)Cp(a,d);b=c[b>>2]|0}while((b|0)!=0)}f=f+1|0}while((f|0)<(c[g>>2]|0))}b=c[a+344>>2]|0;if(!b){Ti(a);return}do{d=c[(c[b+8>>2]|0)+16>>2]|0;if(d|0)Cp(a,d);b=c[b>>2]|0}while((b|0)!=0);Ti(a);return}function Cp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;b=b+64|0;d=c[b>>2]|0;if(!d)return;while(1){e=d+24|0;if((c[d>>2]|0)==(a|0))break;d=c[e>>2]|0;if(!d){f=6;break}else b=e}if((f|0)==6)return;c[b>>2]=c[e>>2];ng(d);return}function Dp(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;b=(c|0)<(f|0)?c:f;a:do if(e){if(!g){k=1;return k|0}if((b|0)>0){i=g;h=b;while(1){b=a[e>>0]|0;if(!(b<<24>>24)){k=7;break}g=a[208+(b&255)>>0]|0;b=a[208+(d[i>>0]|0)>>0]|0;if(g<<24>>24!=b<<24>>24){k=9;break}if((h|0)>1){e=e+1|0;i=i+1|0;h=h+-1|0}else break a}if((k|0)==7){e=0;b=a[208+(d[i>>0]|0)>>0]|0}else if((k|0)==9)e=g&255;j=e-(b&255)|0;k=12}}else{j=((g|0)!=0)<<31>>31;k=12}while(0);if((k|0)==12?j|0:0){k=j;return k|0}k=c-f|0;return k|0}function Ep(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,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=Xa[(a[b>>0]<<24>>24==1?154:155)&255](d,e)|0;r=b+12|0;m=(c[r>>2]|0)+-1&q;s=b+16|0;i=c[s>>2]|0;a:do if(i|0?(h=c[i+(m<<3)>>2]|0,j=(a[b>>0]|0)==1?79:80,g=c[i+(m<<3)+4>>2]|0,(h|0)!=0&(g|0)!=0):0){l=g;while(1){h=h+-1|0;if(!(Za[j&127](c[l+12>>2]|0,c[l+16>>2]|0,d,e)|0))break;g=c[l>>2]|0;if(!((h|0)!=0&(g|0)!=0))break a;else l=g}g=l+8|0;k=c[g>>2]|0;if(f|0){c[g>>2]=f;b=k;return b|0}h=c[l+4>>2]|0;g=c[l>>2]|0;if(!h){c[b+8>>2]=g;i=g;j=g}else{c[h>>2]=g;j=c[l>>2]|0;i=j}if(i|0)c[i+4>>2]=h;g=c[s>>2]|0;h=g+(m<<3)+4|0;if((c[h>>2]|0)==(l|0))c[h>>2]=j;q=g+(m<<3)|0;f=c[q>>2]|0;c[q>>2]=f+-1;if((f|0)<2)c[h>>2]=0;j=b+1|0;do if(a[j>>0]|0?(n=c[l+12>>2]|0,n|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{f=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{f=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}i=b+4|0;f=c[i>>2]|0;c[i>>2]=f+-1;if((f|0)>=2){b=k;return b|0}h=b+8|0;g=c[h>>2]|0;c[h>>2]=0;h=c[s>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{b=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[s>>2]=0;c[r>>2]=0;if(g|0)do{h=g;g=c[g>>2]|0;do if(a[j>>0]|0?(o=c[h+12>>2]|0,o|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{b=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](h);else{b=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h)}}while((g|0)!=0);c[i>>2]=0;b=k;return b|0}while(0);if(!f){b=0;return b|0}g=c[r>>2]|0;do if(!g){if(!(mb()|0)){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](64)|0;if(!g)break}else{g=Wa[c[29356>>2]&127](64)|0;if((c[14985]|0)>>>0<64)c[14985]=64;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){p=c[14978]|0;o=Tv(h|0,i|0,g|0,((g|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&o>>>0<=p>>>0)&1}h=Wa[c[29340>>2]&127](g)|0;if(!h)break;g=Wa[c[29352>>2]&127](h)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0){c[14987]=g;g=h}else g=h}i=g;j=i+64|0;do{a[i>>0]=0;i=i+1|0}while((i|0)<(j|0));h=c[s>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{p=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[s>>2]=g;c[r>>2]=8;n=(a[b>>0]|0)==1?154:155;m=b+8|0;h=c[m>>2]|0;c[m>>2]=0;if(!h){g=8;k=69}else{do{k=(Xa[n&255](c[h+12>>2]|0,c[h+16>>2]|0)|0)&7;j=h;h=c[h>>2]|0;l=g+(k<<3)+4|0;i=c[l>>2]|0;if(!i){i=c[m>>2]|0;c[j>>2]=i;if(i|0)c[i+4>>2]=j;c[j+4>>2]=0;i=m}else{c[j>>2]=i;i=i+4|0;c[j+4>>2]=c[i>>2];p=c[i>>2]|0;c[((p|0)==0?m:p)>>2]=j}c[i>>2]=j;p=g+(k<<3)|0;c[p>>2]=(c[p>>2]|0)+1;c[l>>2]=j}while((h|0)!=0);g=c[r>>2]|0;k=69}}}else k=69;while(0);do if((k|0)==69){p=b+4|0;if((c[p>>2]|0)>=(g|0)){h=g<<1;g=g<<4;o=pb(g,0)|0;if(!o)break;gw(o|0,0,g|0)|0;g=c[s>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{n=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);c[s>>2]=o;c[r>>2]=h;n=(a[b>>0]|0)==1?154:155;m=b+8|0;g=c[m>>2]|0;c[m>>2]=0;if(g|0){l=h+-1|0;do{j=(Xa[n&255](c[g+12>>2]|0,c[g+16>>2]|0)|0)&l;i=g;g=c[g>>2]|0;k=o+(j<<3)+4|0;h=c[k>>2]|0;if(!h){h=c[m>>2]|0;c[i>>2]=h;if(h|0)c[h+4>>2]=i;c[i+4>>2]=0;h=m}else{c[i>>2]=h;h=h+4|0;c[i+4>>2]=c[h>>2];t=c[h>>2]|0;c[((t|0)==0?m:t)>>2]=i}c[h>>2]=i;t=o+(j<<3)|0;c[t>>2]=(c[t>>2]|0)+1;c[k>>2]=i}while((g|0)!=0)}}if(mb()|0){t=f;return t|0}do if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](20)|0;if(!g){t=f;return t|0}else{i=g;j=i+20|0;do{a[i>>0]=0;i=i+1|0}while((i|0)<(j|0));l=g;break}}else{g=Wa[c[29356>>2]&127](20)|0;if((c[14985]|0)>>>0<20)c[14985]=20;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){t=c[14978]|0;o=Tv(h|0,i|0,g|0,((g|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&o>>>0<=t>>>0)&1}h=Wa[c[29340>>2]&127](g)|0;if(!h){t=f;return t|0}g=Wa[c[29352>>2]&127](h)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0)c[14987]=g;i=h;j=i+20|0;do{a[i>>0]=0;i=i+1|0}while((i|0)<(j|0));l=h}while(0);do if((d|0)!=0&(a[b+1>>0]|0)!=0){g=pb(e,((e|0)<0)<<31>>31)|0;if(g|0){gw(g|0,0,e|0)|0;c[l+12>>2]=g;ew(g|0,d|0,e|0)|0;break}c[l+12>>2]=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);t=f;return t|0}else{t=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);t=f;return t|0}}else c[l+12>>2]=d;while(0);c[l+16>>2]=e;c[p>>2]=(c[p>>2]|0)+1;k=(c[r>>2]|0)+-1&q;i=c[s>>2]|0;j=i+(k<<3)+4|0;g=c[j>>2]|0;if(!g){g=b+8|0;h=c[g>>2]|0;c[l>>2]=h;if(h|0)c[h+4>>2]=l;c[l+4>>2]=0}else{c[l>>2]=g;g=g+4|0;c[l+4>>2]=c[g>>2];t=c[g>>2]|0;c[((t|0)==0?b+8|0:t)>>2]=l}c[g>>2]=l;t=i+(k<<3)|0;c[t>>2]=(c[t>>2]|0)+1;c[j>>2]=l;c[l+8>>2]=f;t=0;return t|0}while(0);c[b+4>>2]=0;t=f;return t|0}function Fp(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;e=b+8|0;d=c[e>>2]|0;c[e>>2]=0;e=b+16|0;f=c[e>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{h=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[e>>2]=0;c[b+12>>2]=0;if(d|0){f=b+1|0;do{e=d;d=c[d>>2]|0;do if(a[f>>0]|0?(g=c[e+12>>2]|0,g|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{h=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](e);else{h=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e)}}while((d|0)!=0)}c[b+4>>2]=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{h=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}}function Gp(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;if(mb()|0){d=7;return d|0}if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](16)|0;if(!f){d=7;return d|0}}else{g=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;f=59064;e=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&e>>>0>0){i=c[14978]|0;h=Tv(e|0,f|0,g|0,((g|0)<0)<<31>>31|0)|0;f=L()|0;c[14768]=((f|0)<0|(f|0)==0&h>>>0<=i>>>0)&1}f=Wa[c[29340>>2]&127](g)|0;if(!f){d=7;return d|0}e=Wa[c[29352>>2]&127](f)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0>(c[14987]|0)>>>0)c[14987]=e};c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;i=f+4|0;c[i>>2]=1;do if((a|0)>0){h=0;a:while(1){e=c[b+(h<<2)>>2]|0;g=Eu(e)|0;do if((g|0)==19){if(!(Lu(51058,e,19)|0)){c[i>>2]=1;e=0;break}if(!(Lu(51078,e,19)|0)){c[i>>2]=0;e=0;break}if(!(Lu(51098,e,19)|0)){c[i>>2]=2;e=0}else j=23}else if((g|0)>10)j=23;else{e=1;break a}while(0);do if((j|0)==23){j=0;if(!(Lu(51118,e,11)|0)){e=Lp(f,1,e+11|0,g+-11|0)|0;break}if(Lu(51130,e,11)|0){e=1;break a}e=Lp(f,0,e+11|0,g+-11|0)|0}while(0);h=h+1|0;g=(e|0)==0;if(!((h|0)<(a|0)&g)){j=28;break}}if((j|0)==28)if(g){e=0;break}if(f){g=c[f+12>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{j=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);f=0;break}else{j=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);f=0;break}}else f=0}else e=0;while(0);c[d>>2]=f;d=e;return d|0}function Hp(a){a=a|0;var b=0,d=0;if(!a)return 0;b=c[a+12>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function Ip(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(mb()|0){e=7;return e|0}if(!(c[7324]|0)){a=Wa[c[29340>>2]&127](28)|0;if(!a){e=7;return e|0}}else{g=Wa[c[29356>>2]&127](28)|0;if((c[14985]|0)>>>0<28)c[14985]=28;f=59064;a=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&a>>>0>0){h=c[14978]|0;f=Tv(a|0,f|0,g|0,((g|0)<0)<<31>>31|0)|0;a=L()|0;c[14768]=((a|0)<0|(a|0)==0&f>>>0<=h>>>0)&1}a=Wa[c[29340>>2]&127](g)|0;if(!a){h=7;return h|0}f=Wa[c[29352>>2]&127](a)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0)c[14987]=f};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[a+4>>2]=b;if(b){if((d|0)<0)d=Eu(b)|0}else d=0;c[a+8>>2]=d;c[e>>2]=a;h=0;return h|0}function Jp(a){a=a|0;var b=0,d=0;b=c[a+20>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function Kp(b,f,g,h,i,j){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var 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;u=c[b>>2]|0;D=b+4|0;z=c[D>>2]|0;E=b+12|0;A=c[E>>2]|0;k=z+A|0;C=c[b+8>>2]|0;z=z+C|0;if((A|0)>=(C|0)){E=101;return E|0}A=u+8|0;x=c[A>>2]|0;C=u+12|0;s=x+-1|0;a:do if((x|0)>0){t=c[C>>2]|0;while(1){m=k+1|0;n=a[k>>0]|0;l=n&255;if((n&255)>191){l=d[2736+(l+-192)>>0]|0;b:do if((m|0)==(z|0))m=z;else while(1){n=a[m>>0]|0;if((n&-64)<<24>>24!=-128)break b;m=m+1|0;l=l<<6|n&63;if((m|0)==(z|0)){m=z;break}}while(0);if(!((l&-2|0)==65534|(l>>>0<128|(l&-2048|0)==55296)))if(l>>>0<4194304)y=15;else n=1;else{l=65533;y=15}}else if(n<<24>>24>-1)n=(c[24720+(l>>>5<<2)>>2]&1<<(l&31)|0)==0;else y=15;if((y|0)==15){y=0;q=l<<10|1023;n=0;o=405;p=0;do{x=(o+n|0)/2|0;w=q>>>0<(c[23088+(x<<2)>>2]|0)>>>0;p=w?p:x;o=w?x+-1|0:o;n=w?n:x+1|0}while((o|0)>=(n|0));n=c[23088+(p<<2)>>2]|0;n=((n>>>10)+(n&1023)|0)>>>0<=l>>>0}r=n&1;n=s;o=0;while(1){p=(o+n|0)/2|0;x=c[t+(p<<2)>>2]|0;q=(x|0)<(l|0);if((x|0)==(l|0)){n=1;break}n=q?n:p+-1|0;o=q?p+1|0:o;if((n|0)<(o|0)){n=0;break}}if((n|0)!=(r|0)){x=k;break a}if(m>>>0>>0)k=m;else{k=101;break}}return k|0}else{while(1){n=k+1|0;m=a[k>>0]|0;l=m&255;if((m&255)>191){l=d[2736+(l+-192)>>0]|0;c:do if((n|0)==(z|0))m=z;else while(1){m=a[n>>0]|0;if((m&-64)<<24>>24!=-128){m=n;break c}n=n+1|0;l=l<<6|m&63;if((n|0)==(z|0)){m=z;break}}while(0);if(!((l&-2|0)==65534|(l>>>0<128|(l&-2048|0)==55296)))if(l>>>0<4194304)y=32;else{x=k;break a}else{l=65533;y=32}}else if(m<<24>>24>-1)if(!(c[24720+(l>>>5<<2)>>2]&1<<(l&31))){x=k;m=n;break a}else k=n;else{m=n;y=32}if((y|0)==32){y=0;q=l<<10|1023;n=0;o=405;p=0;do{x=(o+n|0)/2|0;w=q>>>0<(c[23088+(x<<2)>>2]|0)>>>0;p=w?p:x;o=w?x+-1|0:o;n=w?n:x+1|0}while((o|0)>=(n|0));x=c[23088+(p<<2)>>2]|0;if(((x>>>10)+(x&1023)|0)>>>0>l>>>0)k=m;else{x=k;break a}}if(k>>>0>=z>>>0){k=101;break}}return k|0}while(0);w=b+20|0;k=c[w>>2]|0;v=b+24|0;u=u+4|0;p=k;while(1){o=p;n=c[v>>2]|0;if((o-k|0)<(n+-4|0))t=p;else{if(mb()|0){k=7;y=86;break}y=n+64|0;k=sb(k,y,((y|0)<0)<<31>>31)|0;if(!k){k=7;y=86;break}t=k+(o-(c[w>>2]|0))|0;c[w>>2]=k;c[v>>2]=(c[v>>2]|0)+64}q=c[u>>2]|0;do if((l|0)>=128){if((l|0)>=65536)if((l+-66560|0)>>>0<40){l=l+40|0;y=58;break}else{y=61;break}k=162;o=-1;n=0;do{y=(n+k|0)/2|0;s=(l|0)<(e[24736+(y<<2)>>1]|0);n=s?n:y+1|0;o=s?o:y;k=s?y+-1|0:k}while((k|0)>=(n|0));k=e[24736+(o<<2)>>1]|0;if(((d[24736+(o<<2)+3>>0]|0)+k|0)>(l|0)?(B=d[24736+(o<<2)+2>>0]|0,((l^k)&1&B|0)==0):0)l=l+(e[25392+(B>>>1<<1)>>1]|0)&65535;if(q){p=l<<3|7;k=0;n=125;o=0;do{y=(n+k|0)/2|0;s=p>>>0<(e[25552+(y<<1)>>1]|0)>>>0;o=s?o:y;n=s?y+-1|0:n;k=s?k:y+1|0}while((n|0)>=(k|0));if((q|0)!=2?(a[25808+o>>0]|0)<0:0){y=57;break}y=e[25552+(o<<1)>>1]|0;if(((y>>>3)+(y&7)|0)>=(l|0)){l=a[25808+o>>0]&127;y=57}else y=57}else y=57}else{l=(l+-65|0)>>>0<26?l+32|0:l;y=57}while(0);if((y|0)==57){y=0;if(l)y=58}if((y|0)==58)if((l|0)>=128)if((l|0)>=2048)if((l|0)<65536){o=t;k=3;n=2;p=1;q=224;r=15;y=62}else y=61;else{q=t;k=2;n=1;o=192;p=31;y=63}else{n=t;k=1;y=64}if((y|0)==61){a[t>>0]=l>>>18&7|240;o=t+1|0;k=4;n=3;p=2;q=128;r=63;y=62}if((y|0)==62){a[o>>0]=l>>>12&r|q;q=t+p|0;o=128;p=63;y=63}if((y|0)==63){a[q>>0]=l>>>6&p|o;n=t+n|0;l=l&63|128;y=64}if((y|0)==64){y=0;a[n>>0]=l;t=t+k|0}if(m>>>0>=z>>>0){k=m;y=85;break}k=m+1|0;n=a[m>>0]|0;l=n&255;if((n&255)>191){l=d[2736+(l+-192)>>0]|0;d:do if((k|0)==(z|0))k=z;else while(1){n=a[k>>0]|0;if((n&-64)<<24>>24!=-128)break d;k=k+1|0;l=l<<6|n&63;if((k|0)==(z|0)){k=z;break}}while(0);if(!((l&-2|0)==65534|(l>>>0<128|(l&-2048|0)==55296)))if(l>>>0<4194304)y=75;else n=1;else{l=65533;y=75}}else if(n<<24>>24>-1)n=(c[24720+(l>>>5<<2)>>2]&1<<(l&31)|0)==0;else y=75;if((y|0)==75){q=l<<10|1023;n=0;o=405;p=0;do{y=(o+n|0)/2|0;s=q>>>0<(c[23088+(y<<2)>>2]|0)>>>0;p=s?p:y;o=s?y+-1|0:o;n=s?n:y+1|0}while((o|0)>=(n|0));n=c[23088+(p<<2)>>2]|0;n=((n>>>10)+(n&1023)|0)>>>0<=l>>>0}s=n&1;n=c[A>>2]|0;e:do if((n|0)>0){r=c[C>>2]|0;n=n+-1|0;o=0;while(1){p=(o+n|0)/2|0;y=c[r+(p<<2)>>2]|0;q=(y|0)<(l|0);if((y|0)==(l|0)){n=1;break e}n=q?n:p+-1|0;o=q?p+1|0:o;if((n|0)<(o|0)){n=0;break}}}else n=0;while(0);if((n|0)==(s|0)){n=l+-768|0;if(n>>>0>49){y=85;break}y=(l|0)<800;if(!(1<<(y?n:l+-800|0)&(y?134389727:221688))){y=85;break}}p=t;m=k;k=c[w>>2]|0}if((y|0)==85){c[E>>2]=k-(c[D>>2]|0);c[f>>2]=c[w>>2];c[g>>2]=t-(c[w>>2]|0);D=c[D>>2]|0;c[h>>2]=x-D;c[i>>2]=m-D;D=b+16|0;E=c[D>>2]|0;c[D>>2]=E+1;c[j>>2]=E;E=0;return E|0}else if((y|0)==86)return k|0;return 0}function Lp(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,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=f+g|0;n=(g|0)>0;if(!n){q=0;return q|0}m=0;g=f;while(1){j=g+1|0;g=a[g>>0]|0;h=g&255;if((g&255)>191){g=d[2736+(h+-192)>>0]|0;a:do if((j|0)==(p|0)){h=g;g=p}else{h=g;g=j;while(1){i=a[g>>0]|0;if((i&-64)<<24>>24!=-128)break a;g=g+1|0;h=h<<6|i&63;if((g|0)==(p|0)){g=p;break}}}while(0);if(!((h&-2|0)==65534|(h>>>0<128|(h&-2048|0)==55296)))if(h>>>0<4194304)q=12;else i=1;else{h=65533;q=12}}else if(g<<24>>24>-1){i=(c[24720+(h>>>5<<2)>>2]&1<<(h&31)|0)==0;g=j}else{g=j;q=12}if((q|0)==12){q=0;l=h<<10|1023;i=0;j=405;k=0;do{o=(j+i|0)/2|0;r=l>>>0<(c[23088+(o<<2)>>2]|0)>>>0;k=r?k:o;j=r?o+-1|0:j;i=r?i:o+1|0}while((j|0)>=(i|0));i=c[23088+(k<<2)>>2]|0;i=((i>>>10)+(i&1023)|0)>>>0<=h>>>0}do if((i&1|0)==(e|0))i=m;else{i=h+-768|0;if(i>>>0<=49?(r=(h|0)<800,1<<(r?i:h+-800|0)&(r?134389727:221688)|0):0){i=m;break}i=m+1|0}while(0);if(g>>>0

        >>0)m=i;else break}if(!i){r=0;return r|0}o=b+12|0;h=c[o>>2]|0;b=b+8|0;g=c[b>>2]|0;if(mb()|0){r=7;return r|0}m=sb(h,g+i<<2,0)|0;if(!m){r=7;return r|0}g=c[b>>2]|0;if(n)do{j=f+1|0;f=a[f>>0]|0;h=f&255;if((f&255)>191){f=d[2736+(h+-192)>>0]|0;b:do if((j|0)==(p|0)){h=f;f=p}else{h=f;f=j;while(1){i=a[f>>0]|0;if((i&-64)<<24>>24!=-128)break b;f=f+1|0;h=h<<6|i&63;if((f|0)==(p|0)){f=p;break}}}while(0);if(!((h&-2|0)==65534|(h>>>0<128|(h&-2048|0)==55296)))if(h>>>0<4194304)q=34;else i=1;else{h=65533;q=34}}else if(f<<24>>24>-1){i=(c[24720+(h>>>5<<2)>>2]&1<<(h&31)|0)==0;f=j}else{f=j;q=34}if((q|0)==34){q=0;l=h<<10|1023;i=0;j=405;k=0;do{r=(j+i|0)/2|0;n=l>>>0<(c[23088+(r<<2)>>2]|0)>>>0;k=n?k:r;j=n?r+-1|0:j;i=n?i:r+1|0}while((j|0)>=(i|0));i=c[23088+(k<<2)>>2]|0;i=((i>>>10)+(i&1023)|0)>>>0<=h>>>0}do if((i&1|0)!=(e|0)){i=h+-768|0;if(i>>>0<=49?(r=(h|0)<800,1<<(r?i:h+-800|0)&(r?134389727:221688)|0):0)break;c:do if((g|0)>0){i=0;do{if((c[m+(i<<2)>>2]|0)>=(h|0))break c;i=i+1|0}while((i|0)<(g|0))}else i=0;while(0);if((g|0)>(i|0)){j=g;do{r=j;j=j+-1|0;c[m+(r<<2)>>2]=c[m+(j<<2)>>2]}while((j|0)>(i|0))}c[m+(i<<2)>>2]=h;g=g+1|0}while(0)}while(f>>>0

        >>0);c[o>>2]=m;c[b>>2]=g;r=0;return r|0}function Mp(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,l=0,m=0,n=0,o=0,p=0;p=Ra;Ra=Ra+16|0;j=p;do if((f|1|0)==5){l=c[g+4>>2]|0;k=Eu(l)|0;if((f|0)==5){if((l|0)==0|(k|0)!=4)break;k=d[l>>0]|0;e=208+k|0;if((k|32|0)==116){k=d[l+1>>0]|0;e=208+k|0;if((k|32|0)==101){k=d[l+2>>0]|0;e=208+k|0;if((k|32|0)==109){e=d[l+3>>0]|0;if((e|32|0)!=112){m=208+e|0;n=112;o=5}}else{m=e;n=109;o=5}}else{m=e;n=101;o=5}}else{m=e;n=116;o=5}if((o|0)==5?(n|0)!=(d[m>>0]|0):0)break;k=c[g+12>>2]|0;l=k;k=Eu(k)|0;e=4}else e=3;f=c[g+(e<<2)>>2]|0;j=Eu(f)|0;e=td(b,51150)|0;if(e|0){h=e;Ra=p;return h|0}e=k+306+j|0;n=pb(e,0)|0;if(!n){h=7;Ra=p;return h|0}gw(n|0,0,e|0)|0;m=n+12|0;c[m>>2]=n+16;g=n+304|0;c[n+32>>2]=g;e=g+(k+1)|0;c[n+36>>2]=e;c[n+28>>2]=b;c[n+268>>2]=1;ew(g|0,l|0,k|0)|0;ew(e|0,f|0,j|0)|0;m=c[(c[m>>2]|0)+20>>2]|0;e=a[m>>0]|0;switch(e<<24>>24){case 34:case 39:case 91:case 96:{l=e<<24>>24==91?93:e;f=a[m+1>>0]|0;a:do if(!(f<<24>>24))e=0;else{j=1;e=0;do{k=j+1|0;if(f<<24>>24==l<<24>>24){if((a[m+k>>0]|0)!=l<<24>>24)break a;a[m+e>>0]=l;j=j+2|0}else{a[m+e>>0]=f;j=k}e=e+1|0;f=a[m+j>>0]|0}while(f<<24>>24!=0)}while(0);a[m+e>>0]=0;break}default:{}}c[h>>2]=n;h=0;Ra=p;return h|0}while(0);Wp(i,51219,j);h=1;Ra=p;return h|0}function Np(b,d){b=b|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(((c[d+8>>2]|0)==1?(e=c[d+12>>2]|0,(c[e>>2]|0)==0):0)?(a[e+4>>0]|0)==0:0)c[d+32>>2]=1;m=c[d>>2]|0;if((m|0)<=0){c[d+20>>2]=0;g[d+40>>3]=2.0e4;return 0}n=c[d+4>>2]|0;b=-1;k=-1;h=-1;e=-1;l=0;while(1){if(!(a[n+(l*12|0)+5>>0]|0))j=h;else{i=a[n+(l*12|0)+4>>0]|0;j=c[n+(l*12|0)>>2]|0;if(!j){b=i<<24>>24==2?l:b;e=i<<24>>24==32|i<<24>>24==4?l:e;h=i<<24>>24==8|i<<24>>24==16?l:h}k=i<<24>>24==2&(j|0)==4?l:k;j=h}l=l+1|0;if((l|0)>=(m|0))break;else h=j}i=d+20|0;if((b|0)<=-1){c[i>>2]=0;h=d+40|0;g[h>>3]=2.0e4;if((e|0)>-1){c[i>>2]=2;c[(c[d+16>>2]|0)+(e<<3)>>2]=1;g[h>>3]=1.0e4;b=2;e=6;f=1.0e4}else{b=1;e=4;f=2.0e4}if((j|0)>-1){c[i>>2]=e;c[(c[d+16>>2]|0)+(j<<3)>>2]=b;f=f*.5;g[h>>3]=f;b=b+1|0}}else{c[i>>2]=1;c[(c[d+16>>2]|0)+(b<<3)>>2]=1;g[d+40>>3]=5.0;b=2;f=5.0}if((k|0)<=-1)return 0;c[(c[d+16>>2]|0)+(k<<3)>>2]=b;g[d+40>>3]=f+-1.0;return 0}function Op(a){a=a|0;var b=0,d=0;b=c[a+12>>2]|0;gc(c[b+56>>2]|0)|0;gc(c[b+60>>2]|0)|0;gc(c[b+64>>2]|0)|0;gc(c[b+68>>2]|0)|0;gc(c[b+72>>2]|0)|0;gc(c[b+76>>2]|0)|0;gc(c[b+80>>2]|0)|0;gc(c[b+84>>2]|0)|0;gc(c[b+88>>2]|0)|0;gc(c[b+92>>2]|0)|0;gc(c[b+96>>2]|0)|0;gc(c[b+100>>2]|0)|0;gc(c[b+104>>2]|0)|0;gc(c[b+108>>2]|0)|0;gc(c[b+112>>2]|0)|0;gc(c[b+116>>2]|0)|0;gc(c[b+120>>2]|0)|0;gc(c[b+124>>2]|0)|0;gc(c[b+128>>2]|0)|0;gc(c[b+132>>2]|0)|0;gc(c[b+136>>2]|0)|0;gc(c[b+140>>2]|0)|0;gc(c[b+144>>2]|0)|0;gc(c[b+148>>2]|0)|0;gc(c[b+152>>2]|0)|0;gc(c[b+156>>2]|0)|0;gc(c[b+160>>2]|0)|0;gc(c[b+164>>2]|0)|0;gc(c[b+168>>2]|0)|0;gc(c[b+172>>2]|0)|0;gc(c[b+176>>2]|0)|0;gc(c[b+180>>2]|0)|0;gc(c[b+184>>2]|0)|0;gc(c[b+188>>2]|0)|0;gc(c[b+192>>2]|0)|0;gc(c[b+196>>2]|0)|0;gc(c[b+200>>2]|0)|0;gc(c[b+204>>2]|0)|0;gc(c[b+208>>2]|0)|0;gc(c[b+212>>2]|0)|0;b=c[b+244>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function Pp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if(mb()|0){b=7;return b|0}if(!(c[7324]|0)){a=Wa[c[29340>>2]&127](120)|0;if(!a){b=7;return b|0}}else{e=Wa[c[29356>>2]&127](120)|0;if((c[14985]|0)>>>0<120)c[14985]=120;d=59064;a=c[d>>2]|0;d=c[d+4>>2]|0;if((d|0)>0|(d|0)==0&a>>>0>0){f=c[14978]|0;d=Tv(a|0,d|0,e|0,((e|0)<0)<<31>>31|0)|0;a=L()|0;c[14768]=((a|0)<0|(a|0)==0&d>>>0<=f>>>0)&1}a=Wa[c[29340>>2]&127](e)|0;if(!a){f=7;return f|0}d=Wa[c[29352>>2]&127](a)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0)c[14987]=d}d=a;e=d+120|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));c[b>>2]=a;f=0;return f|0}function Qp(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=(c[(c[b>>2]|0)+12>>2]|0)+248|0;e=c[d>>2]|0;do if(e|0){f=c[e+20>>2]|0;gc(c[e+16>>2]|0)|0;if(f|0){if(c[f+480>>2]|0){Xd(f,e);break}i=e;if((c[f+304>>2]|0)>>>0<=i>>>0?(c[f+308>>2]|0)>>>0>i>>>0:0){i=f+300|0;c[e>>2]=c[i>>2];c[i>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{i=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);c[d>>2]=0;h=b+4|0;i=b+8|0;d=c[h>>2]|0;if((c[i>>2]|0)>0){g=0;do{d=c[d+(g<<2)>>2]|0;do if(d|0){do if((c[d+56>>2]|0)==0?(j=c[d+64>>2]|0,j|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{f=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);do if((a[d+5>>0]|0)==0?(k=c[d+40>>2]|0,k|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{f=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);e=c[d+52>>2]|0;do if(e|0){f=c[e+20>>2]|0;gc(c[e+16>>2]|0)|0;if(f|0){if(c[f+480>>2]|0){Xd(f,e);break}l=e;if((c[f+304>>2]|0)>>>0<=l>>>0?(c[f+308>>2]|0)>>>0>l>>>0:0){l=f+300|0;c[e>>2]=c[l>>2];c[l>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{l=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{l=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}while(0);g=g+1|0;d=c[h>>2]|0}while((g|0)<(c[i>>2]|0))}do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{l=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);d=b+20|0;e=c[d>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{l=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);c[i>>2]=0;c[h>>2]=0;c[d>>2]=0;d=c[b+60>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{l=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);d=c[b+76>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{l=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);d=c[b+112>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{l=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return 0}else{l=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return 0}return 0}function Rp(d,f,h,i,j){d=d|0;f=f|0;h=h|0;i=i|0;j=j|0;var 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;y=Ra;Ra=Ra+16|0;u=y+8|0;s=y;x=c[(c[d>>2]|0)+12>>2]|0;if((f|0)==1){q=-1;o=0;w=0;h=1;p=-1}else{h=f&2;p=(h|0)==0;v=(p^1)&1;t=(f&4|0)==0;q=t?-1:v;o=-1;w=1;h=t?v:(h>>>1)+1|0;p=p<<31>>31}t=(h|0)<(i|0)?h:-1;v=d+4|0;l=d+8|0;h=c[v>>2]|0;if((c[l>>2]|0)>0){k=0;do{h=c[h+(k<<2)>>2]|0;do if(h|0){do if((c[h+56>>2]|0)==0?(m=c[h+64>>2]|0,m|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{i=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}while(0);do if((a[h+5>>0]|0)==0?(n=c[h+40>>2]|0,n|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{i=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}while(0);f=c[h+52>>2]|0;do if(f|0){i=c[f+20>>2]|0;gc(c[f+16>>2]|0)|0;if(i|0){if(c[i+480>>2]|0){Xd(i,f);break}z=f;if((c[i+304>>2]|0)>>>0<=z>>>0?(c[i+308>>2]|0)>>>0>z>>>0:0){z=i+300|0;c[f>>2]=c[z>>2];c[z>>2]=f;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{z=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{z=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);k=k+1|0;h=c[v>>2]|0}while((k|0)<(c[l>>2]|0))}do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{z=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);h=d+20|0;f=c[h>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{z=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[l>>2]=0;c[v>>2]=0;c[h>>2]=0;n=d+60|0;h=c[n>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{z=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);h=c[d+112>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{z=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);l=v;m=l+116|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));c[d+72>>2]=(w|0)==0?3:19;do if((p&o|0)>-1?(r=c[j>>2]|0,r|0):0){h=b[r+8>>1]|0;if((h&514)==514?(a[r+10>>0]|0)==1:0)h=c[r+16>>2]|0;else{if(h&1)break;h=Gg(r,1)|0}if(h|0){c[s>>2]=h;h=Bb(31408,s)|0;c[n>>2]=h;if(!h){z=7;Ra=y;return z|0}else{z=Eu(h)|0;c[d+64>>2]=z;break}}}while(0);do if((q|0)>-1){h=c[j+(q<<2)>>2]|0;do if(h){f=b[h+8>>1]|0;if((f&514)==514?(a[h+10>>0]|0)==1:0){h=c[h+16>>2]|0;break}if(!(f&1))h=Gg(h,1)|0;else h=0}else h=0;while(0);c[u>>2]=h;h=Bb(31408,u)|0;c[d+76>>2]=h;if(!h){z=7;Ra=y;return z|0}else{z=Eu(h)|0;c[d+80>>2]=z;break}}while(0);a:do if((t|0)>-1){h=c[j+(t<<2)>>2]|0;f=e[h+8>>1]|0;do if(!(f&4)){if(f&8|0){h=Mg(+g[h>>3])|0;L()|0;break}if(!(f&18)){h=0;break a}h=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;L()|0}else h=c[h>>2]|0;while(0);h=(h|0)>0?h:0}else h=0;while(0);c[d+84>>2]=h;f=c[n>>2]|0;k=d+64|0;i=c[k>>2]|0;l=v;m=l+56|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));h=Xp(x,h,0,-2,f,i,0,w,v)|0;if(h|0){z=h;Ra=y;return z|0}c[d+16>>2]=n;h=eq(x,v,c[n>>2]|0,c[k>>2]|0)|0;if(h|0){z=h;Ra=y;return z|0}z=Sp(d)|0;Ra=y;return z|0}function Sp(b){b=b|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;h=c[(c[b>>2]|0)+12>>2]|0;o=b+96|0;p=o;p=Sv(c[p>>2]|0,c[p+4>>2]|0,1,0)|0;e=L()|0;c[o>>2]=p;c[o+4>>2]=e;o=b+104|0;e=(c[o>>2]|0)+1|0;c[o>>2]=e;p=b+108|0;f=c[p>>2]|0;a:do if((e|0)<(f|0)){g=c[b+112>>2]|0;while(1){n=g+(e<<4)|0;m=c[n+4>>2]|0;if((m|0)>0|(m|0)==0&(c[n>>2]|0)>>>0>0){e=0;break}e=e+1|0;c[o>>2]=e;if((e|0)>=(f|0))break a}return e|0}while(0);e=gq(h,b+4|0)|0;if((e|0)!=100){c[b+88>>2]=1;q=e;return q|0}m=c[b+56>>2]|0;n=c[b+52>>2]|0;e=c[b+76>>2]|0;do if(e|0){j=c[b+80>>2]|0;k=c[b+48>>2]|0;l=(j|0)<(k|0);k=Lu(e,c[b+44>>2]|0,l?j:k)|0;if((k|0)>=0?(k|0)!=0|l^1:0)break;c[b+88>>2]=1;q=0;return q|0}while(0);f=c[p>>2]|0;l=b+112|0;e=c[l>>2]|0;do if((f|0)<2){if(mb()|0){q=7;return q|0}e=sb(e,32,0)|0;if(!e){q=7;return q|0}else{f=c[p>>2]|0;gw(e+(f<<4)|0,0,32-(f<<4)|0)|0;c[l>>2]=e;c[p>>2]=2;f=32;break}}else f=f<<4;while(0);gw(e|0,0,f|0)|0;b:do if((m|0)>0){e=0;f=0;k=0;c:while(1){j=n+k|0;h=a[j>>0]|0;g=h&255;do if(!(g&128)){b=1;i=0;g=h&255}else{i=d[j+1>>0]|0;g=i<<7|g&127;if(!(i&128)){b=2;i=0;break}i=d[j+2>>0]|0;g=i<<14|g&16383;if(!(i&128)){b=3;i=0;break}i=d[j+3>>0]|0;g=i<<21|g&2097151;if(!(i&128)){b=4;i=0;break}h=28;b=j+4|0;g=g&268435455;i=0;do{r=b;b=b+1|0;r=d[r>>0]|0;s=cw(r&127|0,0,h|0)|0;g=Sv(s|0,L()|0,g|0,i|0)|0;i=L()|0;h=h+7|0}while(h>>>0<64&((r&128|0)!=0|0!=0));b=b-j|0}while(0);k=b+k|0;switch(e|0){case 0:{f=c[l>>2]|0;s=f;s=Sv(c[s>>2]|0,c[s+4>>2]|0,1,0)|0;e=L()|0;c[f>>2]=s;c[f+4>>2]=e;f=0;e=1;break}case 1:{if((i|0)>0|(i|0)==0&g>>>0>1){q=(c[l>>2]|0)+16|0;r=q;r=Sv(c[r>>2]|0,c[r+4>>2]|0,1,0)|0;s=L()|0;c[q>>2]=r;c[q+4>>2]=s;q=32}else q=32;break}case 2:{q=32;break}default:{f=g+2|0;if((c[p>>2]|0)<(f|0)){e=c[l>>2]|0;if(mb()|0){e=7;q=46;break c}e=sb(e,f<<4,0)|0;if(!e){e=7;q=46;break c}s=c[p>>2]|0;gw(e+(s<<4)|0,0,f-s<<4|0)|0;c[l>>2]=e;c[p>>2]=f}else e=c[l>>2]|0;f=e+(g+1<<4)|0;s=f;s=Sv(c[s>>2]|0,c[s+4>>2]|0,1,0)|0;e=L()|0;c[f>>2]=s;c[f+4>>2]=e;f=g;e=2}}d:do if((q|0)==32){q=0;switch(g|0){case 0:{if(!i){e=0;break d}break}case 1:{if(!i){e=3;break d}break}default:{}}e=c[l>>2]|0;r=e+(f+1<<4)+8|0;j=r;j=Sv(c[j>>2]|0,c[j+4>>2]|0,1,0)|0;s=L()|0;c[r>>2]=j;c[r+4>>2]=s;e=e+8|0;r=e;r=Sv(c[r>>2]|0,c[r+4>>2]|0,1,0)|0;s=L()|0;c[e>>2]=r;c[e+4>>2]=s;e=2}while(0);if((k|0)>=(m|0))break b}if((q|0)==46)return e|0}while(0);c[o>>2]=0;s=0;return s|0}function Tp(a){a=a|0;return c[a+88>>2]|0}function Up(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0;switch(e|0){case 0:{if((yc(c[d>>2]|0,c[a+44>>2]|0,c[a+48>>2]|0,1,-1)|0)!=18)return 0;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return 0}case 1:{a=c[a+104>>2]|0;if(!a){if((yc(c[d>>2]|0,40769,-1,1,0)|0)!=18)return 0;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return 0}g=a+-1|0;a=c[d>>2]|0;e=((g|0)<0)<<31>>31;f=a+8|0;if(!(b[f>>1]&9216)){d=a;c[d>>2]=g;c[d+4>>2]=e;b[f>>1]=4;return 0}else{Pg(a,g,e);return 0}}case 2:{g=(c[a+112>>2]|0)+(c[a+104>>2]<<4)|0;f=c[g>>2]|0;g=c[g+4>>2]|0;a=c[d>>2]|0;e=a+8|0;if(!(b[e>>1]&9216)){d=a;c[d>>2]=f;c[d+4>>2]=g;b[e>>1]=4;return 0}else{Pg(a,f,g);return 0}}case 3:{g=(c[a+112>>2]|0)+(c[a+104>>2]<<4)+8|0;f=c[g>>2]|0;g=c[g+4>>2]|0;a=c[d>>2]|0;e=a+8|0;if(!(b[e>>1]&9216)){d=a;c[d>>2]=f;c[d+4>>2]=g;b[e>>1]=4;return 0}else{Pg(a,f,g);return 0}}default:{g=c[a+84>>2]|0;a=c[d>>2]|0;e=((g|0)<0)<<31>>31;f=a+8|0;if(!(b[f>>1]&9216)){d=a;c[d>>2]=g;c[d+4>>2]=e;b[f>>1]=4;return 0}else{Pg(a,g,e);return 0}}}return 0}function Vp(a,b){a=a|0;b=b|0;var d=0;d=a+96|0;a=c[d+4>>2]|0;c[b>>2]=c[d>>2];c[b+4>>2]=a;return 0}function Wp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=Ra;Ra=Ra+16|0;e=g;f=c[a>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{h=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[e>>2]=d;h=Ab(b,e)|0;c[a>>2]=h;Ra=g;return}function Xp(d,f,g,h,i,j,k,l,m){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|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,M=0;M=Ra;Ra=Ra+32|0;p=M+24|0;z=M+16|0;K=M+8|0;H=M;do if((h|0)<0){p=c[d+256>>2]|0;a:do if(p){v=(l|k|0)!=0;b:do if(v){o=c[p+(g*24|0)+12>>2]|0;c[K>>2]=o;if(!o){n=0;break a}if(!j){p=0;t=0;n=0;q=0;s=o;o=0;while(1){if((t|0)==(n|0)){o=t+16|0;n=o<<2;if(mb()|0){r=0;o=p;n=7;q=0;break b}n=sb(q,(n|0)>0?n:0,0)|0;if(!n){r=0;o=p;n=7;q=0;break b}else{r=o;p=n;o=n;q=n}}else r=n;n=t+1|0;c[p+(t<<2)>>2]=s;s=c[c[K>>2]>>2]|0;c[K>>2]=s;if(!s)break;else{t=n;n=r}}}else{p=0;n=0;s=0;u=o;t=0;o=0;while(1){q=u;r=u;if((c[r+16>>2]|0)>=(j|0)?(Lu(c[r+12>>2]|0,i,j)|0)==0:0){if((n|0)==(s|0)){q=n+16|0;o=q<<2;if(mb()|0){r=0;o=p;n=7;q=0;break b}r=sb(t,(o|0)>0?o:0,0)|0;if(!r){r=0;o=p;n=7;q=0;break b}else{p=r;o=r}}else{q=s;r=t}c[p+(n<<2)>>2]=u;s=q;n=n+1|0;q=c[K>>2]|0}else r=t;u=c[q>>2]|0;c[K>>2]=u;if(!u)break;else t=r}}if((n|0)<=1)if((n|0)==1){n=1;G=31;break}else{r=0;o=p;n=0;q=0;break}else{pv(o,n,4,156);G=31;break}}else{q=p+(g*24|0)+20|0;c:do if((c[q>>2]|0?(r=p+(g*24|0)+4|0,s=Xa[(a[r>>0]<<24>>24==1?154:155)&255](i,j)|0,s=(c[p+(g*24|0)+16>>2]|0)+-1&s,t=c[q>>2]|0,t|0):0)?(o=c[t+(s<<3)>>2]|0,u=(a[r>>0]|0)==1?79:80,n=c[t+(s<<3)+4>>2]|0,(o|0)!=0&(n|0)!=0):0){while(1){o=o+-1|0;if(!(Za[u&127](c[n+12>>2]|0,c[n+16>>2]|0,i,j)|0))break;n=c[n>>2]|0;if(!((o|0)!=0&(n|0)!=0))break c}c[K>>2]=n;n=1;p=K;G=31;break b}while(0);c[K>>2]=0;r=0;o=0;n=0;q=0}while(0);if((G|0)==31){n=n<<2;o=n+100|0;q=pb(o,0)|0;if(!q){r=q;o=p;n=7;q=0}else{gw(q|0,0,o|0)|0;c[q>>2]=2147483647;r=q+96|0;c[q+56>>2]=r;ew(r|0,p|0,n|0)|0;r=q;o=p;n=0}}do if(v?o|0:0)if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{F=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}while(0);if((n|0)==0&(r|0)!=0){p=m+4|0;o=c[p>>2]|0;do if(!(o&15)){n=c[m>>2]|0;if((mb()|0)==0?(y=sb(n,(o<<2)+64|0,0)|0,y|0):0){c[m>>2]=y;o=c[p>>2]|0;n=y;break}do if((c[r+56>>2]|0)==0?(w=c[r+64>>2]|0,w|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](w);break}else{F=Wa[c[29352>>2]&127](w)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](w);break}while(0);do if((a[r+5>>0]|0)==0?(x=c[r+40>>2]|0,x|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](x);break}else{F=Wa[c[29352>>2]&127](x)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](x);break}while(0);n=c[r+52>>2]|0;do if(n|0){o=c[n+20>>2]|0;gc(c[n+16>>2]|0)|0;if(o|0){if(c[o+480>>2]|0){Xd(o,n);break}F=n;if((c[o+304>>2]|0)>>>0<=F>>>0?(c[o+308>>2]|0)>>>0>F>>>0:0){F=o+300|0;c[n>>2]=c[F>>2];c[F>>2]=n;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{F=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);if(!q){n=7;break a}if(!(c[7324]|0)){ab[c[29344>>2]&127](q);n=7;break a}else{n=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);n=7;break a}}else n=c[m>>2]|0;while(0);c[p>>2]=o+1;c[n+(o<<2)>>2]=q;n=0}}else n=0;while(0);if(!((h|0)!=-1&(n|0)==0)){m=0;K=n;j=(K|0)==101;K=j?m:K;Ra=M;return K|0}q=d+108|0;F=c[q>>2]|0;c[K>>2]=F;o=F;if(!F){p=c[d+20>>2]|0;c[z>>2]=c[d+16>>2];c[z+4>>2]=p;p=Bb(51885,z)|0;if(!p){n=7;break}n=qd(c[d+12>>2]|0,p,-1,133,0,K,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](p);else{F=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p)}o=c[K>>2]|0;c[q>>2]=o;if(n)break}v=o;n=d+252|0;r=c[n>>2]|0;p=((f|0)<0)<<31>>31;r=Yv(r|0,((r|0)<0)<<31>>31|0,f|0,p|0)|0;q=((g|0)<0)<<31>>31;r=Sv(r|0,L()|0,g|0,q|0)|0;r=cw(r|0,L()|0,10)|0;s=L()|0;do if(!(Vc(v,1)|0)){t=c[v+100>>2]|0;u=t+8|0;if(!(b[u>>1]&9216)){G=t;c[G>>2]=r;c[G+4>>2]=s;b[u>>1]=4;break}else{Pg(t,r,s);break}}while(0);r=c[n>>2]|0;r=Yv(r|0,((r|0)<0)<<31>>31|0,f|0,p|0)|0;r=Sv(r|0,L()|0,g|0,q|0)|0;r=cw(r|0,L()|0,10)|0;q=L()|0;r=r|1023;if(!(Vc(v,2)|0)){p=c[v+100>>2]|0;n=p+40|0;p=p+48|0;if(!(b[p>>1]&9216)){G=n;c[G>>2]=r;c[G+4>>2]=q;b[p>>1]=4;G=98;break}else{Pg(n,r,q);G=98;break}}else G=98}else{q=d+104|0;F=c[q>>2]|0;c[K>>2]=F;o=F;if(!F){F=c[d+20>>2]|0;c[p>>2]=c[d+16>>2];c[p+4>>2]=F;p=Bb(51773,p)|0;if(!p){n=7;break}n=qd(c[d+12>>2]|0,p,-1,133,0,K,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](p);else{F=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p)}o=c[K>>2]|0;c[q>>2]=o;if(n)break}n=o;q=c[d+252>>2]|0;q=Yv(q|0,((q|0)<0)<<31>>31|0,f|0,((f|0)<0)<<31>>31|0)|0;q=Sv(q|0,L()|0,g|0,((g|0)<0)<<31>>31|0)|0;q=cw(q|0,L()|0,10)|0;q=Sv(q|0,L()|0,h|0,((h|0)<0)<<31>>31|0)|0;r=L()|0;if(!(Vc(n,1)|0)){n=c[n+100>>2]|0;p=n+8|0;if(!(b[p>>1]&9216)){G=n;c[G>>2]=q;c[G+4>>2]=r;b[p>>1]=4;G=98;break}else{Pg(n,q,r);G=98;break}}else G=98}while(0);d:do if((G|0)==98){B=o;C=(o|0)==0;D=(i|0)!=0;E=B+120|0;A=(k|0)==0?0:H;F=m+4|0;f=(l|k|0)==0;g=B+40|0;k=B+144|0;l=f&1;n=Gc(B)|0;if((n|0)==100){while(1){y=Oc(B,1)|0;z=L()|0;h=K;c[h>>2]=y;c[h+4>>2]=z;h=Oc(B,2)|0;z=L()|0;y=H;c[y>>2]=h;c[y+4>>2]=z;y=Oc(B,3)|0;z=L()|0;h=Lc(B,4)|0;if(C)q=mc(29576)|0;else{n=c[E>>2]|0;if((n|0)!=0?(e[k>>1]|0)>4:0)n=n+160|0;else{n=c[B>>2]|0;c[n+64>>2]=25;Ne(n,25);n=29576}q=mc(n)|0;n=c[B>>2]|0;p=c[g>>2]|0;if((p|0)==3082|(a[n+81>>0]|0)!=0){og(n);n=7}else n=c[n+68>>2]&p;c[g>>2]=n}p=K;n=c[p>>2]|0;p=c[p+4>>2]|0;if((q|0)!=0&(D&((n|0)!=0|(p|0)!=0))){n=Yp(d,i,j,q,h,K,A)|0;if(n|0){G=152;break}p=K;n=c[p>>2]|0;p=c[p+4>>2]|0;if(f){w=H;c[w>>2]=n;c[w+4>>2]=p;w=n;v=p;u=n;r=p}else G=114}else G=114;if((G|0)==114){G=0;r=H;w=n;v=p;u=c[r>>2]|0;r=c[r+4>>2]|0}p=(c[F>>2]|0)+1|0;if((w|0)==0&(v|0)==0){if(!((u|0)==0&(r|0)==0)){n=267;G=152;break}n=h+20|0}else n=0;x=nb(n+96|0)|0;if(!x){n=7;G=152;break}s=x;t=s+96|0;do{c[s>>2]=0;s=s+4|0}while((s|0)<(t|0));c[x>>2]=p;a[x+4>>0]=l;t=x+8|0;c[t>>2]=w;c[t+4>>2]=v;t=x+16|0;c[t>>2]=u;c[t+4>>2]=r;u=x+24|0;c[u>>2]=y;c[u+4>>2]=z;if(!n){y=Sv(w|0,v|0,-1,-1)|0;z=L()|0;h=x+32|0;c[h>>2]=y;c[h+4>>2]=z}else{n=x+96|0;c[x+40>>2]=n;a[x+5>>0]=1;c[x+44>>2]=h;if(h|0)ew(n|0,q|0,h|0)|0;s=n+h|0;t=s+20|0;do{a[s>>0]=0;s=s+1|0}while((s|0)<(t|0))}n=c[F>>2]|0;if(!(n&15)){p=c[m>>2]|0;if(mb()|0)break;p=sb(p,(n<<2)+64|0,0)|0;if(!p)break;c[m>>2]=p;n=c[F>>2]|0}else p=c[m>>2]|0;c[F>>2]=n+1;c[p+(n<<2)>>2]=x;n=Gc(B)|0;if((n|0)!=100)break d}if((G|0)==152)break;do if((c[x+56>>2]|0)==0?(I=c[x+64>>2]|0,I|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](I);break}else{K=Wa[c[29352>>2]&127](I)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](I);break}while(0);do if((a[x+5>>0]|0)==0?(J=c[x+40>>2]|0,J|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](J);break}else{K=Wa[c[29352>>2]&127](J)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](J);break}while(0);n=c[x+52>>2]|0;do if(n|0){p=c[n+20>>2]|0;gc(c[n+16>>2]|0)|0;if(p|0){if(c[p+480>>2]|0){Xd(p,n);break}K=n;if((c[p+304>>2]|0)>>>0<=K>>>0?(c[p+308>>2]|0)>>>0>K>>>0:0){K=p+300|0;c[n>>2]=c[K>>2];c[K>>2]=n;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{K=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](x);else{K=Wa[c[29352>>2]&127](x)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](x)}n=7}}while(0);q=o;if(!o){m=0;K=n;j=(K|0)==101;K=j?m:K;Ra=M;return K|0}o=c[q>>2]|0;K=q+136|0;m=c[K+4>>2]|0;if((m|0)>0|(m|0)==0&(c[K>>2]|0)>>>0>0)hc(o,q);p=kc(q)|0;c[q+20>>2]=770837923;c[q+36>>2]=-1;c[q+40>>2]=0;a[q+146>>0]=2;c[q+44>>2]=0;c[q+32>>2]=1;a[q+147>>0]=-1;c[q+48>>2]=0;K=q+64|0;c[K>>2]=0;c[K+4>>2]=0;if((p|0)==3082|(a[o+81>>0]|0)!=0){og(o);m=7;K=n;j=(K|0)==101;K=j?m:K;Ra=M;return K|0}else{m=c[o+68>>2]&p;K=n;j=(K|0)==101;K=j?m:K;Ra=M;return K|0}return 0}function Yp(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,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;F=Ra;Ra=Ra+16|0;E=F+4|0;C=F;l=a[g>>0]|0;k=l&255;if(k&128){z=d[g+1>>0]|0;k=z<<7|l&127;if(z&128){z=d[g+2>>0]|0;k=z<<14|k&16383;if(z&128){z=d[g+3>>0]|0;k=z<<21|k&2097151;if(!(z&128))z=k;else z=(a[g+4>>0]&7)<<28|k&268435455}else z=k}else z=k}else z=k;y=g+h|0;if(l<<24>>24<=-1)if((a[g+1>>0]|0)<=-1)if((a[g+2>>0]|0)<=-1)if((a[g+3>>0]|0)>-1)k=4;else{k=28;h=g+4|0;do{x=h;h=h+1|0;k=k+7|0}while(k>>>0<64&(a[x>>0]|0)<0);k=h-g|0}else k=3;else k=2;else k=1;n=g+k|0;h=a[n>>0]|0;k=h&255;do if(!(k&128)){m=1;l=h&255;h=0}else{x=d[n+1>>0]|0;k=x<<7|k&127;if(!(x&128)){m=2;l=k;h=0;break}x=d[n+2>>0]|0;k=x<<14|k&16383;if(!(x&128)){m=3;l=k;h=0;break}x=d[n+3>>0]|0;l=x<<21|k&2097151;if(!(x&128)){m=4;h=0;break}k=28;m=n+4|0;l=l&268435455;h=0;do{x=m;m=m+1|0;x=d[x>>0]|0;w=cw(x&127|0,0,k|0)|0;l=Sv(w|0,L()|0,l|0,h|0)|0;h=L()|0;k=k+7|0}while(k>>>0<64&((x&128|0)!=0|0!=0));m=m-n|0}while(0);o=n+m|0;if(o>>>0>y>>>0){E=267;Ra=F;return E|0}a:do if(o>>>0>>0){w=g;x=y;n=i;m=j;g=1;k=0;r=0;t=0;while(1){u=(n|0)!=0;v=(m|0)!=0;if(!(u|v)){h=0;break a}if(!g){p=a[o>>0]|0;g=p&255;if(g&128){s=d[o+1>>0]|0;g=s<<7|p&127;if(s&128){s=d[o+2>>0]|0;g=s<<14|g&16383;if(s&128){s=d[o+3>>0]|0;g=s<<21|g&2097151;if(!(s&128))p=4;else{g=(a[o+4>>0]&7)<<28|g&268435455;p=5}}else p=3}else p=2}else p=1;o=o+p|0}else g=0;q=a[o>>0]|0;p=q&255;if(p&128){s=d[o+1>>0]|0;p=s<<7|q&127;if(s&128){s=d[o+2>>0]|0;p=s<<14|p&16383;if(s&128){s=d[o+3>>0]|0;p=s<<21|p&2097151;if(!(s&128))q=4;else{p=(a[o+4>>0]&7)<<28|p&268435455;q=5}}else q=3}else q=2}else q=1;s=o+q|0;o=s;if((g|0)>(o-w|0)){h=267;break a}if((p|0)==0|(p|0)>(x-o|0)){h=267;break a}o=Sv(p|0,((p|0)<0)<<31>>31|0,g|0,((g|0)<0)<<31>>31|0)|0;q=L()|0;if((q|0)>(r|0)|(q|0)==(r|0)&o>>>0>t>>>0){q=cw(o|0,q|0,1)|0;r=L()|0;if(mb()|0){h=7;break a}o=sb(k,q,r)|0;if(!o){h=7;break a}else k=o}else q=t;ew(k+g|0,s|0,p|0)|0;t=p+g|0;o=s+p|0;g=(t|0)>(f|0);p=Lu(e,k,g?f:t)|0;do if(u){if((p|0)>=0?(p|0)!=0|g^1:0)break;D=n;c[D>>2]=l;c[D+4>>2]=h;D=49}else D=49;while(0);if((D|0)==49){D=0;if(v&(p|0)<0){n=m;c[n>>2]=l;c[n+4>>2]=h;n=0;m=0}else n=0}l=Sv(l|0,h|0,1,0)|0;h=L()|0;if(o>>>0>=y>>>0){D=52;break}else{g=0;t=q}}}else{n=i;m=j;k=0;D=52}while(0);if((D|0)==52){if(n|0){y=n;c[y>>2]=l;c[y+4>>2]=h}if(!m)h=0;else{y=m;c[y>>2]=l;c[y+4>>2]=h;h=0}}do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{y=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);if(!((z|0)>1&(h|0)==0)){E=h;Ra=F;return E|0}c[E>>2]=0;c[C>>2]=0;if((i|0)!=0&(j|0)!=0?(B=i,A=c[B>>2]|0,B=c[B+4>>2]|0,z=j,!((A|0)==(c[z>>2]|0)?(B|0)==(c[z+4>>2]|0):0)):0){k=dq(b,A,B,E,C)|0;if(!k)k=Yp(b,e,f,c[E>>2]|0,c[C>>2]|0,i,0)|0;i=c[E>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{B=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-B;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);c[E>>2]=0;if(!k){k=j;i=0;D=71}}else{k=(i|0)==0?j:i;D=71}do if((D|0)==71){k=dq(b,c[k>>2]|0,c[k+4>>2]|0,E,C)|0;if(!k)k=Yp(b,e,f,c[E>>2]|0,c[C>>2]|0,i,j)|0;i=c[E>>2]|0;if(i)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{E=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);E=k;Ra=F;return E|0}function Zp(a,b){a=a|0;b=b|0;var d=0,e=0;e=c[a>>2]|0;b=c[b>>2]|0;d=c[e+16>>2]|0;a=c[b+16>>2]|0;b=Lu(c[e+12>>2]|0,c[b+12>>2]|0,(d|0)<(a|0)?d:a)|0;return ((b|0)==0?d-a|0:b)|0}function _p(b,c){b=b|0;c=c|0;var d=0;if((c|0)<1){c=Eu(b)|0;if((c|0)<=0){d=0;return d|0}}d=0;while(1){d=d<<3^d^a[b>>0];if((c|0)<=1)break;else{b=b+1|0;c=c+-1|0}}d=d&2147483647;return d|0}function $p(b,c){b=b|0;c=c|0;var d=0;if((c|0)<=0){d=0;return d|0}d=0;while(1){d=d<<3^d^a[b>>0];if((c|0)<=1)break;else{b=b+1|0;c=c+-1|0}}d=d&2147483647;return d|0}function aq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((b|0)==(d|0))a=av(a,c,b)|0;else a=1;return a|0}function bq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((b|0)==(d|0))a=Lu(a,c,b)|0;else a=1;return a|0}function cq(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,l=0,m=0,n=0;n=Ra;Ra=Ra+48|0;k=n+24|0;h=n+16|0;g=n;l=n+32|0;m=a+56+(d<<2)|0;i=c[m>>2]|0;c[l>>2]=i;j=i;if(!i){switch(d|0){case 18:{k=c[a+20>>2]|0;d=c[a+224>>2]|0;c[g>>2]=c[a+16>>2];c[g+4>>2]=k;c[g+8>>2]=d;g=Bb(52240,g)|0;d=133;break}case 7:{c[h>>2]=c[a+220>>2];g=Bb(51509,h)|0;d=129;break}default:{g=c[25936+(d<<2)>>2]|0;d=c[a+20>>2]|0;c[k>>2]=c[a+16>>2];c[k+4>>2]=d;g=Bb(g,k)|0;d=133}}if(!g){d=7;i=0}else{d=qd(c[a+12>>2]|0,g,-1,d,0,l,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{a=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-a;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}j=c[l>>2]|0;c[m>>2]=j;i=j}}else d=0;if((f|0)==0|(i|0)==0){f=d;c[e>>2]=j;Ra=n;return f|0}m=b[i+16>>1]|0;h=m<<16>>16;if(!(m<<16>>16>0&(d|0)==0)){f=d;c[e>>2]=j;Ra=n;return f|0}g=0;do{d=g;g=g+1|0;d=Yc(i,g,c[f+(d<<2)>>2]|0)|0}while((g|0)<(h|0)&(d|0)==0);c[e>>2]=j;Ra=n;return d|0}function dq(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;l=Ra;Ra=Ra+16|0;j=l;k=b+248|0;h=c[k>>2]|0;if(!h){i=b+244|0;h=c[i>>2]|0;if(!h){c[j>>2]=c[b+20>>2];h=Bb(53537,j)|0;c[i>>2]=h;if(!h){f=7;Ra=l;return f|0}}h=ad(c[b+12>>2]|0,c[b+16>>2]|0,h,53549,d,e,0,k)|0}else h=ld(h,d,e)|0;if(h|0){f=h;Ra=l;return f|0}h=c[k>>2]|0;if((h|0)!=0?(c[h+16>>2]|0)!=0:0)j=c[h>>2]|0;else j=0;c[g>>2]=j;if(!f){f=0;Ra=l;return f|0}i=nb(j+20|0)|0;do if(i){h=jd(c[k>>2]|0,i,j,0,81)|0;j=i+j|0;b=j+20|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(b|0));if(h)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);i=0;break}else{k=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);i=0;break}else h=0}else{i=0;h=7}while(0);c[f>>2]=i;f=h;Ra=l;return f|0}function eq(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,l=0,m=0,n=0,o=0,p=0,q=0,r=0;m=d+4|0;p=c[m>>2]|0;n=d+28|0;a:do if((c[n>>2]|0)==0?(o=(e|0)==0,(p|0)>0):0){l=0;b:while(1){j=c[(c[d>>2]|0)+(l<<2)>>2]|0;k=j+40|0;h=j+60|0;i=j+64|0;c:do if(o){g=fq(b,j)|0;if(g|0){q=43;break b}}else{do{g=fq(b,j)|0;if(g|0){q=43;break b}if(!(c[k>>2]|0))break c;r=c[h>>2]|0;g=Lu(c[i>>2]|0,e,(r|0)>(f|0)?f:r)|0;g=(g|0)==0?r-f|0:g}while((g|0)<0);if((g|0)!=0&(a[j+4>>0]|0)!=0){if(!(a[j+5>>0]|0)){g=c[k>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{r=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);g=j+52|0;h=c[g>>2]|0;do if(h|0){i=c[h+20>>2]|0;gc(c[h+16>>2]|0)|0;if(i|0){if(c[i+480>>2]|0){Xd(i,h);break}r=h;if((c[i+304>>2]|0)>>>0<=r>>>0?(c[i+308>>2]|0)>>>0>r>>>0:0){r=i+300|0;c[h>>2]=c[r>>2];c[r>>2]=h;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{r=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);c[g>>2]=0}c[k>>2]=0}}while(0);if(c[n>>2]|0)break a;l=l+1|0;if((l|0)>=(c[m>>2]|0))break a}if((q|0)==43)return g|0}while(0);e=c[d>>2]|0;n=p+-1|0;if((p|0)<=1){r=0;return r|0}b=n;while(1){d=b;b=b+-1|0;d:do if((d|0)<(p|0)){k=b;j=c[e+(b<<2)>>2]|0;do{l=k;k=k+1|0;f=e+(k<<2)|0;i=c[f>>2]|0;h=(c[j+40>>2]|0)==0;m=i;g=c[i+40>>2]|0;if(!h)if(!g){g=0;q=37}else{o=c[j+60>>2]|0;g=c[i+60>>2]|0;r=o-g|0;g=Lu(c[j+64>>2]|0,c[i+64>>2]|0,(r|0)<0?o:g)|0;g=(g|0)==0?r:g}else q=37;if((q|0)==37){q=0;g=(h&1)-((g|0)==0&1)|0}if(!g)g=(c[i>>2]|0)-(c[j>>2]|0)|0;if((g|0)<0)break d;r=e+(l<<2)|0;j=c[r>>2]|0;c[f>>2]=j;c[r>>2]=m}while((k|0)<(n|0))}while(0);if((d|0)<=1){g=0;break}}return g|0}function fq(b,e){b=b|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;s=e+72|0;f=c[s>>2]|0;if(!f)f=c[e+40>>2]|0;else f=f+(c[e+76>>2]|0)|0;if((f|0)!=0?(g=e+40|0,h=c[g>>2]|0,f>>>0<(h+(c[e+44>>2]|0)|0)>>>0):0){l=f;i=h;q=g}else r=6;do if((r|0)==6){k=e+56|0;f=c[k>>2]|0;if(f|0){g=c[f>>2]|0;j=e+40|0;f=c[j>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{r=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[j>>2]=0;if(!g){s=0;return s|0}h=c[g+8>>2]|0;i=(c[h>>2]|0)+1|0;c[e+64>>2]=c[g+12>>2];c[e+60>>2]=c[g+16>>2];f=nb(i)|0;if(!f){s=7;return s|0}ew(f|0,c[h+4>>2]|0,i|0)|0;c[e+76>>2]=i;c[e+44>>2]=i;c[s>>2]=f;c[j>>2]=f;c[k>>2]=(c[k>>2]|0)+4;s=0;return s|0}j=e+40|0;if(!(a[e+5>>0]|0)){f=c[j>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{q=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);f=e+52|0;g=c[f>>2]|0;do if(g|0){h=c[g+20>>2]|0;gc(c[g+16>>2]|0)|0;if(h|0){if(c[h+480>>2]|0){Xd(h,g);break}q=g;if((c[h+304>>2]|0)>>>0<=q>>>0?(c[h+308>>2]|0)>>>0>q>>>0:0){q=h+300|0;c[g>>2]=c[q>>2];c[q>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{q=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[f>>2]=0}c[j>>2]=0;h=e+32|0;g=h;f=c[g>>2]|0;g=c[g+4>>2]|0;q=e+16|0;o=c[q+4>>2]|0;if(!((g|0)<(o|0)|((g|0)==(o|0)?f>>>0<(c[q>>2]|0)>>>0:0))){s=0;return s|0}q=Sv(f|0,g|0,1,0)|0;f=L()|0;o=h;c[o>>2]=q;c[o+4>>2]=f;f=dq(b,q,f,j,e+44|0)|0;if(!f){i=c[j>>2]|0;l=i;q=j;break}else{s=f;return s|0}}while(0);o=e+52|0;h=c[o>>2]|0;a:do if(h){f=i;j=l+20|0;b=e+48|0;k=e+44|0;g=c[b>>2]|0;if((j-f|0)>(g|0)){while(1){i=(c[k>>2]|0)-g|0;i=(i|0)<4096?i:4096;f=jd(h,f+g|0,i,g,81)|0;if(f|0){p=f;r=94;break}h=(c[b>>2]|0)+i|0;c[b>>2]=h;h=(c[q>>2]|0)+h|0;i=h+20|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(i|0));g=c[b>>2]|0;m=c[o>>2]|0;if((g|0)==(c[k>>2]|0))break;if(!m){k=0;break a}f=c[q>>2]|0;if((j-f|0)<=(g|0)){k=m;break a}else h=m}if((r|0)==94)return p|0;do if(m|0){f=c[m+20>>2]|0;gc(c[m+16>>2]|0)|0;if(f|0){if(c[f+480>>2]|0){Xd(f,m);break}n=m;if((c[f+304>>2]|0)>>>0<=n>>>0?(c[f+308>>2]|0)>>>0>n>>>0:0){n=f+300|0;c[m>>2]=c[n>>2];c[n>>2]=m;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{n=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[o>>2]=0;c[b>>2]=0;k=0}else k=h}else k=0;while(0);g=a[l>>0]|0;f=g&255;if(f&128){n=d[l+1>>0]|0;f=n<<7|g&127;if(n&128){n=d[l+2>>0]|0;f=n<<14|f&16383;if(n&128){n=d[l+3>>0]|0;f=n<<21|f&2097151;if(!(n&128))g=4;else{f=(a[l+4>>0]&7)<<28|f&268435455;g=5}}else g=3}else g=2}else g=1;i=l+g|0;h=a[i>>0]|0;g=h&255;if(g&128){n=d[i+1>>0]|0;g=n<<7|h&127;if(n&128){n=d[i+2>>0]|0;g=n<<14|g&16383;if(n&128){n=d[i+3>>0]|0;g=n<<21|g&2097151;if(!(n&128))h=4;else{g=(a[i+4>>0]&7)<<28|g&268435455;h=5}}else h=3}else h=2}else h=1;m=i+h|0;if((g|0)<1){s=267;return s|0}n=e+44|0;l=m;if(((c[q>>2]|0)+(c[n>>2]|0)-l|0)<(g|0)){s=267;return s|0}b=e+68|0;h=c[b>>2]|0;if((f|0)>(h|0)){s=267;return s|0}i=Sv(g|0,((g|0)<0)<<31>>31|0,f|0,((f|0)<0)<<31>>31|0)|0;j=L()|0;t=((h|0)<0)<<31>>31;do if((j|0)>(t|0)|(j|0)==(t|0)&i>>>0>h>>>0){j=cw(i|0,j|0,1)|0;h=L()|0;k=e+64|0;i=c[k>>2]|0;if(mb()|0){t=7;return t|0}h=sb(i,j,h)|0;if(!h){t=7;return t|0}else{c[k>>2]=h;c[b>>2]=j;h=c[o>>2]|0;break}}else h=k;while(0);b:do if(h|0){b=g+10+l|0;l=e+48|0;i=c[l>>2]|0;k=h;while(1){h=c[q>>2]|0;if((b-h|0)<=(i|0))break b;j=(c[n>>2]|0)-i|0;j=(j|0)<4096?j:4096;h=jd(k,h+i|0,j,i,81)|0;if(h|0){p=h;r=94;break}h=(c[l>>2]|0)+j|0;c[l>>2]=h;h=(c[q>>2]|0)+h|0;i=h+20|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(i|0));i=c[l>>2]|0;k=c[o>>2]|0;if((i|0)==(c[n>>2]|0))break;if(!k)break b}if((r|0)==94)return p|0;do if(k|0){h=c[k+20>>2]|0;gc(c[k+16>>2]|0)|0;if(h|0){if(c[h+480>>2]|0){Xd(h,k);break}t=k;if((c[h+304>>2]|0)>>>0<=t>>>0?(c[h+308>>2]|0)>>>0>t>>>0:0){t=h+300|0;c[k>>2]=c[t>>2];c[t>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{t=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[o>>2]=0;c[l>>2]=0}while(0);ew((c[e+64>>2]|0)+f|0,m|0,g|0)|0;c[e+60>>2]=g+f;h=m+g|0;f=a[h>>0]|0;g=f&255;i=e+76|0;if(g&128){t=d[h+1>>0]|0;f=t<<7|f&127;if(t&128){t=d[h+2>>0]|0;f=t<<14|f&16383;if(t&128){t=d[h+3>>0]|0;f=t<<21|f&2097151;if(!(t&128)){g=f;f=4}else{g=(a[h+4>>0]&7)<<28|f&268435455;f=5}}else{g=f;f=3}}else{g=f;f=2}}else f=1;c[i>>2]=g;f=h+f|0;c[s>>2]=f;c[e+80>>2]=0;if((g|0)>((c[n>>2]|0)-f+(c[q>>2]|0)|0)){t=267;return t|0}if((c[e+48>>2]|0)==0?a[f+(g+-1)>>0]|0:0){t=267;return t|0}t=0;return t|0} -function qk(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 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,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;Y=Ra;Ra=Ra+96|0;R=Y+32|0;Q=Y+24|0;O=Y+16|0;w=Y+8|0;u=Y;S=Y+56|0;T=Y+84|0;P=f+40|0;X=c[P>>2]|0;c[P>>2]=X+1;P=f+8|0;l=c[P>>2]|0;a:do if(!l){n=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[n+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))W=15;else{V=0;break a}else{do if((e[n+276>>1]|0)>=224){l=n+300|0;m=c[l>>2]|0;if(m|0){c[l>>2]=c[m>>2];V=n+284|0;c[V>>2]=(c[V>>2]|0)+1;break b}l=n+296|0;m=c[l>>2]|0;if(!m){l=n+292|0;break}else{c[l>>2]=c[m>>2];V=n+284|0;c[V>>2]=(c[V>>2]|0)+1;break b}}else l=n+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;W=15}while(0);if((W|0)==15)m=_d(n,224,0)|0;if(!m)V=0;else{o=m+104|0;q=o+120|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(q|0));c[m>>2]=n;l=n+4|0;n=c[l>>2]|0;if(n|0)c[n+4>>2]=m;c[m+8>>2]=n;c[m+4>>2]=0;c[l>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=f;c[P>>2]=m;Di(m,61,0,1,0)|0;V=m}}else V=l;while(0);N=(h&4|0)!=0;if(i)if(!(c[g+4>>2]&2048))M=i;else{o=c[c[g+20>>2]>>2]|0;p=c[o>>2]|0;c:do if((p|0)>0){l=0;while(1){m=c[o+4+(l*20|0)>>2]|0;n=a[m>>0]|0;if((n+91&255)<2)do{m=c[m+12>>2]|0;n=a[m>>0]|0}while((n+91&255)<2);if(n<<24>>24==-88)n=a[m+38>>0]|0;switch(n<<24>>24){case -110:case -111:case 110:case -109:break;case -94:{if(c[m+4>>2]&1048576|0)break c;n=c[m+44>>2]|0;if(!n)break c;M=b[m+32>>1]|0;if(M<<16>>16>-1?(a[(c[n+4>>2]|0)+(M<<16>>16<<4)+12>>0]|0)==0:0)break c;break}default:break c}l=l+1|0;if((l|0)>=(p|0))break c}}else l=0;while(0);M=(l|0)==(p|0)?0:i}else M=0;d:do if(((((((((c[f+36>>2]|0)==0?(c[g+4>>2]&2080|0)==2048:0)?(s=c[g+20>>2]|0,(c[s+52>>2]|0)==0):0)?(c[s+8>>2]&9|0)==0:0)?(c[s+60>>2]|0)==0:0)?(c[s+36>>2]|0)==0:0)?(r=c[s+32>>2]|0,(c[r>>2]|0)==1):0)?(c[r+28>>2]|0)==0:0)?(x=c[r+24>>2]|0,(c[x+56>>2]|0)==0):0){H=c[s>>2]|0;I=c[H>>2]|0;J=(I|0)>0;if(J){l=0;do{if((a[c[H+4+(l*20|0)>>2]>>0]|0)!=-94){W=191;break d}l=l+1|0}while((l|0)<(I|0));if(!s){W=191;break}}m=c[x+72>>2]|0;if(!m)l=-1e6;else{n=c[(c[f>>2]|0)+16>>2]|0;l=0;while(1)if((c[n+(l<<4)+12>>2]|0)==(m|0))break;else l=l+1|0}o=l<<16;K=o>>16;p=c[f+116>>2]|0;p=(p|0)==0?f:p;l=p+84|0;m=c[l>>2]|0;n=1<>2]=n|m,(o|0)==65536):0)?(v=c[p>>2]|0,t=v+16|0,(c[(c[t>>2]|0)+20>>2]|0)==0):0)?(a[p+199>>0]|0)==0:0){l=Pe(c[v>>2]|0,0,v,S,0,542)|0;if(l|0){cd(p,32157,u);c[p+12>>2]=l;break}G=c[S>>2]|0;c[(c[t>>2]|0)+20>>2]=G;l=c[v+92>>2]|0;o=c[G+4>>2]|0;c[o+4>>2]=c[G>>2];do if(!(b[o+22>>1]&2)){p=o+32|0;i=o+36|0;q=(c[p>>2]|0)-(c[i>>2]|0)|0;do if((l+-512|0)>>>0<65025){if(l+-1&l|0)break;c[p>>2]=l;n=o+80|0;l=c[n>>2]|0;if(!l)break;m=l+-4|0;c[n>>2]=m;l=m;do if((c[14816]|0)>>>0<=l>>>0)if((c[14817]|0)>>>0>l>>>0){c[14979]=(c[14979]|0)+-1;c[m>>2]=c[14819];c[14819]=m;G=(c[14820]|0)+1|0;c[14820]=G;c[14821]=(G|0)<(c[14815]|0)&1;break}else{l=Wa[c[29352>>2]&127](m)|0;W=68;break}else{l=Wa[c[29352>>2]&127](m)|0;W=68}while(0);do if((W|0)==68){c[14980]=(c[14980]|0)-l;if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{G=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[n>>2]=0}while(0);G=Se(c[o>>2]|0,p,q)|0;c[i>>2]=(c[p>>2]|0)-(q&65535);if((G|0)!=7)break;l=v+81|0;do if(!(a[l>>0]|0)){if(a[v+82>>0]|0)break;a[l>>0]=1;if((c[v+180>>2]|0)>0)c[v+264>>2]=1;l=v+272|0;c[l>>2]=(c[l>>2]|0)+1;l=c[v+236>>2]|0;if(!l)break;c[l+12>>2]=7}while(0);break e}while(0)}while(0);Hj(f,K,c[x+28>>2]|0,0,c[x>>2]|0);G=(I|0)==1;if(G?(b[(c[H+4>>2]|0)+32>>1]|0)<0:0){m=V+108|0;l=c[m>>2]|0;if((c[V+112>>2]|0)>(l|0)){c[m>>2]=l+1;o=c[V+104>>2]|0;a[o+(l*20|0)>>0]=17;o=o+(l*20|0)+1|0;q=o+19|0;do{a[o>>0]=0;o=o+1|0}while((o|0)<(q|0))}else l=Di(V,17,0,0,0)|0;Gj(f,X,K,x,108);c[w>>2]=c[x>>2];nk(f,0,39096,w);m=c[m>>2]|0;if(!(a[(c[V>>2]|0)+81>>0]|0))l=(c[V+104>>2]|0)+(((l|0)<0?m+-1|0:l)*20|0)|0;else l=59308;c[l+8>>2]=m;n=1;break}if(J){r=c[g+12>>2]|0;i=a[r>>0]|0;q=r+38|0;s=r+20|0;t=r+20|0;u=x+4|0;v=i<<24>>24==-125;f:do if(i<<24>>24==-88){p=1;i=0;m=a[q>>0]|0;while(1){switch(m<<24>>24){case -87:{l=s;W=95;break}case -125:{l=c[t>>2]|0;W=95;break}default:o=r}g:do if((W|0)==95){W=0;if((c[c[l>>2]>>2]|0)<2){o=r;break}do if(v)l=m;else{if(m<<24>>24==-125){l=-125;break}o=c[(c[s>>2]|0)+4+(i*20|0)>>2]|0;break g}while(0);o=c[(c[c[t>>2]>>2]|0)+4+(i*20|0)>>2]|0;m=l}while(0);l=b[(c[H+4+(i*20|0)>>2]|0)+32>>1]|0;if(l<<16>>16>-1)n=a[(c[u>>2]|0)+(l<<16>>16<<4)+13>>0]|0;else n=68;l=Xj(o)|0;if(n<<24>>24==0|l<<24>>24==0)l=(l|n)<<24>>24==0?65:(l&255)+(n&255)|0;else l=n<<24>>24>66|l<<24>>24>66?67:65;p=((l<<24>>24)+-65|0)>>>0<2?p:n<<24>>24>66&1;i=i+1|0;l=(p|0)!=0;if(!((i|0)<(I|0)&l))break f}}else{o=1;p=0;while(1){switch(i<<24>>24){case -87:{l=s;W=108;break}case -125:{l=c[t>>2]|0;W=108;break}default:m=r}h:do if((W|0)==108){W=0;if((c[c[l>>2]>>2]|0)<2){m=r;break}do if(!v){if((a[q>>0]|0)==-125)break;m=c[(c[s>>2]|0)+4+(p*20|0)>>2]|0;break h}while(0);m=c[(c[c[t>>2]>>2]|0)+4+(p*20|0)>>2]|0}while(0);l=b[(c[H+4+(p*20|0)>>2]|0)+32>>1]|0;if(l<<16>>16>-1)n=a[(c[u>>2]|0)+(l<<16>>16<<4)+13>>0]|0;else n=68;l=Xj(m)|0;if(n<<24>>24==0|l<<24>>24==0)l=(l|n)<<24>>24==0?65:(l&255)+(n&255)|0;else l=n<<24>>24>66|l<<24>>24>66?67:65;o=((l<<24>>24)+-65|0)>>>0<2?o:n<<24>>24>66&1;p=p+1|0;l=(o|0)!=0;if(!((p|0)<(I|0)&l))break f}}while(0);if(!l){W=191;break}}l=c[x+8>>2]|0;if(l){w=cw(1,0,I|0)|0;w=Sv(w|0,L()|0,-1,-1)|0;x=L()|0;y=g+12|0;z=(j|0)==0;D=V+108|0;A=V+112|0;F=V+104|0;C=(M|0)==0;E=f+44|0;B=l;i:while(1){l=b[B+52>>1]|0;m=l&65535;j:do if((I|0)<=(m|0)){if((l&65535)>62|(c[B+36>>2]|0)!=0)break;do if(N){if((I|0)<(e[B+50>>1]|0))break j;if((I|0)>=(m|0))break;if(!(a[B+54>>0]|0))break j}while(0);k:do if(J){u=B+4|0;v=B+32|0;t=0;m=0;l=0;while(1){n=c[y>>2]|0;p=a[n>>0]|0;if(p<<24>>24==-88)o=a[n+38>>0]|0;else o=p;switch(o<<24>>24){case -87:{o=n+20|0;W=135;break}case -125:{o=c[n+20>>2]|0;W=135;break}default:{}}l:do if((W|0)==135){if((c[c[o>>2]>>2]|0)<2)break;do if(p<<24>>24!=-125){if((a[n+38>>0]|0)==-125)break;n=c[(c[n+20>>2]|0)+4+(t*20|0)>>2]|0;break l}while(0);n=c[(c[c[n+20>>2]>>2]|0)+4+(t*20|0)>>2]|0}while(0);o=c[H+4+(t*20|0)>>2]|0;m:do if(!(c[n+4>>2]&256)){do if(o|0){if(!(c[o+4>>2]&256))break;n=Yi(f,o)|0;W=148;break m}while(0);n=Yi(f,n)|0;if(!n){n=Yi(f,o)|0;W=148;break}else{s=c[u>>2]|0;r=b[o+32>>1]|0;W=152;break}}else{n=Yi(f,n)|0;W=148}while(0);n:do if((W|0)==148){W=0;p=c[u>>2]|0;o=b[o+32>>1]|0;if(n|0){s=p;r=o;W=152;break}n=0;do{if((b[p+(n<<1)>>1]|0)==o<<16>>16)break n;n=n+1|0}while((n|0)<(I|0))}while(0);o:do if((W|0)==152){W=0;o=0;while(1){if((b[s+(o<<1)>>1]|0)==r<<16>>16){i=c[n>>2]|0;q=c[(c[v>>2]|0)+(o<<2)>>2]|0;Z=a[i>>0]|0;p=(d[208+(Z&255)>>0]|0)-(d[208+(d[q>>0]|0)>>0]|0)|0;if(!(Z<<24>>24==0|(p|0)!=0))do{i=i+1|0;q=q+1|0;Z=a[i>>0]|0;p=(d[208+(Z&255)>>0]|0)-(d[208+(d[q>>0]|0)>>0]|0)|0}while(!(Z<<24>>24==0|(p|0)!=0));if(!p){n=o;break o}}o=o+1|0;if((o|0)>=(I|0)){n=o;break}}}while(0);if((n|0)==(I|0))break k;o=cw(1,0,n|0)|0;p=L()|0;if(!((o&m|0)==0&(p&l|0)==0))break k;m=o|m;l=p|l;if(!z)c[j+(t<<2)>>2]=n;t=t+1|0;if((t|0)>=(I|0))break k}}else{m=0;l=0}while(0);if((m|0)==(w|0)&(l|0)==(x|0))break i}while(0);l=c[B+20>>2]|0;if(!l){W=191;break d}else B=l}l=c[D>>2]|0;if((c[A>>2]|0)>(l|0)){c[D>>2]=l+1;o=c[F>>2]|0;a[o+(l*20|0)>>0]=17;o=o+(l*20|0)+1|0;q=o+19|0;do{a[o>>0]=0;o=o+1|0}while((o|0)<(q|0));o=l}else o=Di(V,17,0,0,0)|0;c[O>>2]=c[B>>2];nk(f,0,39143,O);l=c[B+44>>2]|0;m=c[D>>2]|0;if((c[A>>2]|0)>(m|0)){c[D>>2]=m+1;Z=c[F>>2]|0;a[Z+(m*20|0)>>0]=108;b[Z+(m*20|0)+2>>1]=0;c[Z+(m*20|0)+4>>2]=X;c[Z+(m*20|0)+8>>2]=l;c[Z+(m*20|0)+12>>2]=K;c[Z+(m*20|0)+16>>2]=0;a[Z+(m*20|0)+1>>0]=0}else Di(V,108,X,l,K)|0;m=c[P>>2]|0;n=Ij(f,B)|0;p:do if(n|0){l=c[m>>2]|0;if(!(a[l+81>>0]|0)){f=c[m+104>>2]|0;Z=(c[m+108>>2]|0)+-1|0;a[f+(Z*20|0)+1>>0]=-9;c[f+(Z*20|0)+16>>2]=n;break}if(c[l+480>>2]|0)break;Z=(c[n>>2]|0)+-1|0;c[n>>2]=Z;if(Z|0)break;l=c[n+12>>2]|0;do if(l|0){if(c[l+480>>2]|0){Xd(l,n);break p}m=n;if((c[l+304>>2]|0)>>>0>m>>>0)break;if((c[l+308>>2]|0)>>>0<=m>>>0)break;Z=l+300|0;c[n>>2]=c[Z>>2];c[Z>>2]=n;break p}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{Z=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-Z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);n=(d[c[B+28>>2]>>0]|0)+3|0;do if(!C){l=(c[E>>2]|0)+1|0;c[E>>2]=l;c[M>>2]=l;if(!G)break;sk(V,X,l)}while(0);m=c[D>>2]|0;if(!(a[(c[V>>2]|0)+81>>0]|0))l=(c[F>>2]|0)+(((o|0)<0?m+-1|0:o)*20|0)|0;else l=59308;c[l+8>>2]=m}else W=191}else W=191;while(0);do if((W|0)==191){if(h&1|0?(c[g+4>>2]&2048|0)==0:0){O=g+12|0;h=c[O>>2]|0;c[O>>2]=0;Z=S+20|0;a[Z>>0]=1;c[S+4>>2]=127;c[S+8>>2]=128;c[S+24>>2]=0;_j(S,g)|0;Z=a[Z>>0]|0;c[O>>2]=h;if(!(Z<<24>>24)){n=5;break}if((c[c[g+20>>2]>>2]|0)<3){n=5;break}}F=f+132|0;G=c[F>>2]|0;if(!N)if(!M)E=0;else{Z=f+44|0;E=(c[Z>>2]|0)+1|0;c[Z>>2]=E;c[M>>2]=E}else{c[F>>2]=0;E=0}D=c[P>>2]|0;u=g+4|0;l=c[u>>2]|0;do if((l&32|0)==0?(c[f+52>>2]|0)==0:0){if(!(l&33554432)){c[u>>2]=l|33554432;n=f+44|0;l=(c[n>>2]|0)+1|0;c[n>>2]=l;c[g+48>>2]=l;n=D+108|0;m=c[n>>2]|0;o=D+112|0;if((c[o>>2]|0)>(m|0)){Z=m+1|0;c[n>>2]=Z;W=c[D+104>>2]|0;a[W+(m*20|0)>>0]=70;b[W+(m*20|0)+2>>1]=0;c[W+(m*20|0)+4>>2]=0;c[W+(m*20|0)+8>>2]=l;c[W+(m*20|0)+12>>2]=0;c[W+(m*20|0)+16>>2]=0;a[W+(m*20|0)+1>>0]=0;l=Z}else l=(Di(D,70,0,l,0)|0)+1|0;c[g+44>>2]=l;l=c[n>>2]|0;if((c[o>>2]|0)>(l|0)){c[n>>2]=l+1;o=c[D+104>>2]|0;a[o+(l*20|0)>>0]=17;o=o+(l*20|0)+1|0;q=o+19|0;do{a[o>>0]=0;o=o+1|0}while((o|0)<(q|0));m=l;W=223;break}else{m=Di(D,17,0,0,0)|0;W=223;break}}p=D+108|0;l=c[p>>2]|0;i=D+112|0;if((c[i>>2]|0)>(l|0)){c[p>>2]=l+1;o=c[D+104>>2]|0;a[o+(l*20|0)>>0]=17;o=o+(l*20|0)+1|0;q=o+19|0;do{a[o>>0]=0;o=o+1|0}while((o|0)<(q|0));o=l}else o=Di(D,17,0,0,0)|0;if(c[u>>2]&2048|0){c[Q>>2]=c[(c[g+20>>2]|0)+20>>2];nk(f,0,39174,Q)}l=c[g+48>>2]|0;m=c[g+44>>2]|0;n=c[p>>2]|0;if((c[i>>2]|0)>(n|0)){c[p>>2]=n+1;Z=c[D+104>>2]|0;a[Z+(n*20|0)>>0]=12;b[Z+(n*20|0)+2>>1]=0;c[Z+(n*20|0)+4>>2]=l;c[Z+(n*20|0)+8>>2]=m;c[Z+(n*20|0)+12>>2]=0;c[Z+(n*20|0)+16>>2]=0;a[Z+(n*20|0)+1>>0]=0}else Di(D,12,l,m,0)|0;l=c[g+28>>2]|0;m=c[p>>2]|0;if((c[i>>2]|0)>(m|0)){c[p>>2]=m+1;Z=c[D+104>>2]|0;a[Z+(m*20|0)>>0]=111;b[Z+(m*20|0)+2>>1]=0;c[Z+(m*20|0)+4>>2]=X;c[Z+(m*20|0)+8>>2]=l;c[Z+(m*20|0)+12>>2]=0;c[Z+(m*20|0)+16>>2]=0;a[Z+(m*20|0)+1>>0]=0}else Di(D,111,X,l,0)|0;m=c[p>>2]|0;if(!(a[(c[D>>2]|0)+81>>0]|0))l=(c[D+104>>2]|0)+(((o|0)<0?m+-1|0:o)*20|0)|0;else l=59308;c[l+8>>2]=m}else{m=0;W=223}while(0);do if((W|0)==223){s=g+12|0;v=c[s>>2]|0;l=a[v>>0]|0;if(l<<24>>24==-88)l=a[v+38>>0]|0;switch(l<<24>>24){case -87:{l=v+20|0;W=228;break}case -125:{l=c[v+20>>2]|0;W=228;break}default:t=1}if((W|0)==228)t=c[c[l>>2]>>2]|0;c[g+28>>2]=X;C=D+108|0;l=c[C>>2]|0;B=D+112|0;if((c[B>>2]|0)>(l|0)){c[C>>2]=l+1;A=c[D+104>>2]|0;a[A+(l*20|0)>>0]=113;b[A+(l*20|0)+2>>1]=0;c[A+(l*20|0)+4>>2]=X;c[A+(l*20|0)+8>>2]=t;c[A+(l*20|0)+12>>2]=0;c[A+(l*20|0)+16>>2]=0;a[A+(l*20|0)+1>>0]=0;A=l}else A=Di(D,113,X,t,0)|0;q=c[f>>2]|0;p=t+1|0;i=p*5|0;o=i+20|0;r=q+272|0;q:do if(c[r>>2]|0)if(!(a[q+81>>0]|0))W=242;else{z=0;y=1;x=0}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){l=q+300|0;n=c[l>>2]|0;if(n|0){c[l>>2]=c[n>>2];W=q+284|0;c[W>>2]=(c[W>>2]|0)+1;W=243;break q}l=q+296|0;n=c[l>>2]|0;if(!n){l=q+292|0;break}else{c[l>>2]=c[n>>2];W=q+284|0;c[W>>2]=(c[W>>2]|0)+1;W=243;break q}}else l=q+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;W=242}while(0);if((W|0)==242){n=_d(q,o,0)|0;W=243}do if((W|0)==243){if(n|0){c[n+16>>2]=n+20+(p<<2);b[n+6>>1]=t;b[n+8>>1]=p;a[n+4>>0]=a[q+78>>0]|0;c[n+12>>2]=q;c[n>>2]=1;gw(n+24|0,0,i+-4|0)|0;z=n;y=0;x=n;break}l=q+81|0;if((a[l>>0]|0)==0?(a[q+82>>0]|0)==0:0){a[l>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;c[r>>2]=(c[r>>2]|0)+1;l=c[q+236>>2]|0;if(l){c[l+12>>2]=7;z=0;y=1;x=n}else{z=0;y=1;x=n}}else{z=0;y=1;x=n}}while(0);if(!(c[u>>2]&2048)){o=c[g+20>>2]|0;if(!o)o=m;else{Z=Xj(v)|0;a[T>>0]=Z<<24>>24==0?65:Z;if(x|0){Z=Yi(f,c[s>>2]|0)|0;c[x+20>>2]=Z}w=f+19|0;n=a[w>>0]|0;if(n<<24>>24){Z=n+-1<<24>>24;a[w>>0]=Z;l=c[f+148+((Z&255)<<2)>>2]|0;if(!(Z<<24>>24))W=302;else{v=n+-2<<24>>24;a[w>>0]=v;v=c[f+148+((v&255)<<2)>>2]|0}}else{W=f+44|0;l=(c[W>>2]|0)+1|0;c[W>>2]=l;W=302}if((W|0)==302){Z=f+44|0;v=(c[Z>>2]|0)+1|0;c[Z>>2]=v}n=c[o>>2]|0;if((n|0)>0){q=S+20|0;r=S+4|0;s=S+8|0;t=S+24|0;u=D+104|0;i=o+4|0;p=n;while(1){o=c[i>>2]|0;do if(!m)m=0;else{a[q>>0]=1;c[r>>2]=127;c[s>>2]=128;c[t>>2]=0;if(!o)break;_j(S,o)|0;if(a[q>>0]|0)break;n=c[D>>2]|0;if(a[n+81>>0]|0){m=0;break}Z=c[u>>2]|0;Q=Z+(m*20|0)+1|0;R=Z+(m*20|0)+16|0;kg(n,a[Q>>0]|0,c[R>>2]|0);a[Q>>0]=0;c[R>>2]=0;a[Z+(m*20|0)>>0]=-86;m=0}while(0);o=Jj(f,o,l)|0;n=c[C>>2]|0;if((c[B>>2]|0)>(n|0)){c[C>>2]=n+1;Z=c[u>>2]|0;a[Z+(n*20|0)>>0]=92;b[Z+(n*20|0)+2>>1]=0;c[Z+(n*20|0)+4>>2]=o;c[Z+(n*20|0)+8>>2]=1;c[Z+(n*20|0)+12>>2]=v;c[Z+(n*20|0)+16>>2]=0;a[Z+(n*20|0)+1>>0]=0}else n=Di(D,92,o,1,v)|0;if(!(a[(c[D>>2]|0)+81>>0]|0)){if((n|0)<0)n=(c[C>>2]|0)+-1|0;Ei(D,(c[u>>2]|0)+(n*20|0)|0,T,1)}n=c[C>>2]|0;if((c[B>>2]|0)>(n|0)){c[C>>2]=n+1;Z=c[u>>2]|0;a[Z+(n*20|0)>>0]=-124;b[Z+(n*20|0)+2>>1]=0;c[Z+(n*20|0)+4>>2]=X;c[Z+(n*20|0)+8>>2]=v;c[Z+(n*20|0)+12>>2]=o;c[Z+(n*20|0)+16>>2]=0;a[Z+(n*20|0)+1>>0]=0}else n=Di(D,132,X,v,o)|0;if(!(a[(c[D>>2]|0)+81>>0]|0)){Z=c[u>>2]|0;a[Z+(n*20|0)+1>>0]=-3;c[Z+(n*20|0)+16>>2]=1}if((p|0)>1){i=i+20|0;p=p+-1|0}else break}}if(l|0?(U=a[w>>0]|0,(U&255)<8):0){a[w>>0]=U+1<<24>>24;c[f+148+((U&255)<<2)>>2]=l}do if(v|0){l=a[w>>0]|0;if((l&255)>=8)break;a[w>>0]=l+1<<24>>24;c[f+148+((l&255)<<2)>>2]=v}while(0);o=m}}else{l=c[g+20>>2]|0;r=c[l>>2]|0;Z=c[l+20>>2]|0;c[R>>2]=(m|0)==0?39084:59952;c[R+4>>2]=Z;nk(f,1,39197,R);if((c[r>>2]|0)==(t|0)){a[R>>0]=11;c[R+4>>2]=X;o=R+16|0;c[R+8>>2]=0;c[R+12>>2]=0;n=pk(f,g)|0;c[o>>2]=n;c[l+12>>2]=0;l=(kj(f,l,R)|0)==0;n=c[f>>2]|0;o=c[o>>2]|0;r:do if(o|0){do if(n|0){if(c[n+480>>2]|0){Xd(n,o);break r}p=o;if((c[n+304>>2]|0)>>>0<=p>>>0){if((c[n+308>>2]|0)>>>0<=p>>>0)break;Z=n+300|0;c[o>>2]=c[Z>>2];c[Z>>2]=o;break r}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{Z=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-Z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}while(0);if(!l){s:do if(x|0?(Z=(c[x>>2]|0)+-1|0,c[x>>2]=Z,(Z|0)==0):0){l=c[x+12>>2]|0;do if(l|0){if(c[l+480>>2]|0){Xd(l,z);break s}m=x;if((c[l+304>>2]|0)>>>0>m>>>0)break;if((c[l+308>>2]|0)>>>0<=m>>>0)break;Z=l+300|0;c[x>>2]=c[Z>>2];c[Z>>2]=x;break s}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](z);break}else{Z=Wa[c[29352>>2]&127](z)|0;c[14978]=(c[14978]|0)-Z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](z);break}}while(0);break}t:do if((t|0)>0){p=v+38|0;i=v+20|0;q=v+20|0;o=0;while(1){n=a[v>>0]|0;if(n<<24>>24==-88)l=a[p>>0]|0;else l=n;switch(l<<24>>24){case -87:{l=i;W=281;break}case -125:{l=c[q>>2]|0;W=281;break}default:l=v}u:do if((W|0)==281){W=0;if((c[c[l>>2]>>2]|0)<2){l=v;break}do if(n<<24>>24!=-125){if((a[p>>0]|0)==-125)break;l=c[(c[i>>2]|0)+4+(o*20|0)>>2]|0;break u}while(0);l=c[(c[c[q>>2]>>2]|0)+4+(o*20|0)>>2]|0}while(0);n=c[r+4+(o*20|0)>>2]|0;v:do if(!(c[l+4>>2]&256)){do if(n|0){if(!(c[n+4>>2]&256))break;l=Yi(f,n)|0;break v}while(0);l=Yi(f,l)|0;if(l|0)break;l=Yi(f,n)|0}else l=Yi(f,l)|0;while(0);c[x+20+(o<<2)>>2]=l;o=o+1|0;if((o|0)==(t|0))break t}}while(0);o=m}else o=m}w:do if(x|0){l=c[D>>2]|0;if(!(a[l+81>>0]|0)){if((A|0)<0)l=(c[C>>2]|0)+-1|0;else l=A;m=c[D+104>>2]|0;n=m+(l*20|0)+1|0;if(a[n>>0]|0){Ei(D,m+(l*20|0)|0,z,-9);break}if(y)break;c[m+(l*20|0)+16>>2]=z;a[n>>0]=-9;break}if(!(y|(c[l+480>>2]|0)!=0)?(Z=(c[z>>2]|0)+-1|0,c[z>>2]=Z,(Z|0)==0):0){l=c[z+12>>2]|0;do if(l|0){if(c[l+480>>2]|0){Xd(l,z);break w}m=z;if((c[l+304>>2]|0)>>>0>m>>>0)break;if((c[l+308>>2]|0)>>>0<=m>>>0)break;Z=l+300|0;c[z>>2]=c[Z>>2];c[Z>>2]=z;break w}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](z);break}else{Z=Wa[c[29352>>2]&127](z)|0;c[14978]=(c[14978]|0)-Z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](z);break}}}while(0);if(o|0){m=c[C>>2]|0;if(!(a[(c[D>>2]|0)+81>>0]|0))l=(c[D+104>>2]|0)+(((o|0)<0?m+-1|0:o)*20|0)|0;else l=59308;c[l+8>>2]=m;l=c[g+48>>2]|0;if((c[B>>2]|0)>(m|0)){c[C>>2]=m+1;Z=c[D+104>>2]|0;a[Z+(m*20|0)>>0]=66;b[Z+(m*20|0)+2>>1]=0;c[Z+(m*20|0)+4>>2]=l;c[Z+(m*20|0)+8>>2]=0;c[Z+(m*20|0)+12>>2]=0;c[Z+(m*20|0)+16>>2]=0;a[Z+(m*20|0)+1>>0]=0}else Di(D,66,l,0,0)|0;l=c[g+44>>2]|0;m=c[C>>2]|0;if(!(a[(c[D>>2]|0)+81>>0]|0))l=(c[D+104>>2]|0)+((((l|0)<1?m:l)+-1|0)*20|0)|0;else l=59308;c[l+4>>2]=m+-1}}while(0);if(E|0)sk(V,X,E);c[F>>2]=G;n=2}while(0);if(!((j|0)!=0&(n+-3|0)>>>0>1)){c[k>>2]=X;Ra=Y;return n|0}m=c[g+12>>2]|0;l=a[m>>0]|0;if(l<<24>>24==-88)l=a[m+38>>0]|0;switch(l<<24>>24){case -87:{l=m+20|0;W=369;break}case -125:{l=c[m+20>>2]|0;W=369;break}default:l=1}if((W|0)==369){l=c[c[l>>2]>>2]|0;if((l|0)<=0){c[k>>2]=X;Ra=Y;return n|0}}m=0;do{c[j+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0));c[k>>2]=X;Ra=Y;return n|0}function rk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[a+116>>2]|0;f=(f|0)==0?a:f;a=f+84|0;d=c[a>>2]|0;e=1<>2]=d|e;if((b|0)!=1)return;Oe(f)|0;return}function sk(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=d+108|0;g=c[i>>2]|0;j=d+112|0;if((c[j>>2]|0)>(g|0)){c[i>>2]=g+1;h=c[d+104>>2]|0;a[h+(g*20|0)>>0]=70;b[h+(g*20|0)+2>>1]=0;c[h+(g*20|0)+4>>2]=0;c[h+(g*20|0)+8>>2]=f;c[h+(g*20|0)+12>>2]=0;c[h+(g*20|0)+16>>2]=0;a[h+(g*20|0)+1>>0]=0}else Di(d,70,0,f,0)|0;g=c[i>>2]|0;if((c[j>>2]|0)>(g|0)){c[i>>2]=g+1;h=c[d+104>>2]|0;a[h+(g*20|0)>>0]=36;b[h+(g*20|0)+2>>1]=0;c[h+(g*20|0)+4>>2]=e;c[h+(g*20|0)+8>>2]=0;c[h+(g*20|0)+12>>2]=0;c[h+(g*20|0)+16>>2]=0;a[h+(g*20|0)+1>>0]=0;h=g}else h=Di(d,36,e,0,0)|0;g=c[i>>2]|0;if((c[j>>2]|0)>(g|0)){c[i>>2]=g+1;j=c[d+104>>2]|0;a[j+(g*20|0)>>0]=90;b[j+(g*20|0)+2>>1]=0;c[j+(g*20|0)+4>>2]=e;c[j+(g*20|0)+8>>2]=0;c[j+(g*20|0)+12>>2]=f;c[j+(g*20|0)+16>>2]=0;a[j+(g*20|0)+1>>0]=0}else Di(d,90,e,0,f)|0;g=c[i>>2]|0;if((g|0)>0)b[(c[d+104>>2]|0)+((g+-1|0)*20|0)+2>>1]=128;if(a[(c[d>>2]|0)+81>>0]|0){d=59308;d=d+8|0;c[d>>2]=g;return}d=(c[d+104>>2]|0)+(((h|0)<0?g+-1|0:h)*20|0)|0;d=d+8|0;c[d>>2]=g;return}function tk(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,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+16|0;m=t+8|0;p=t+4|0;s=t;o=c[d+8>>2]|0;c[p>>2]=0;c[s>>2]=0;if((e|0)==0|(o|0)==0){Ra=t;return}j=a[e>>0]|0;k=j&255;a:do switch(j<<24>>24){case 44:{l=d+56|0;m=c[l>>2]|0;h=m+-1|0;c[l>>2]=h;Tj(d,c[e+12>>2]|0,h,g^16);tk(d,c[e+16>>2]|0,f,g);h=c[o+12>>2]|0;g=0-m|0;if(((c[h+56>>2]|0)+(c[h+60>>2]|0)|0)<0){mk(h,o,g);break a}else{c[(c[h+64>>2]|0)+(g<<2)>>2]=c[o+108>>2];break a}}case 43:{tk(d,c[e+12>>2]|0,f,g);tk(d,c[e+16>>2]|0,f,g);break}case 19:{Tj(d,c[e+12>>2]|0,f,g);break}case -89:{o=(a[e+38>>0]|0)==-96;h=c[e+12>>2]|0;g=o?16:0;if(o^(a[(c[(c[e+16>>2]|0)+8>>2]|0)+4>>0]|0)==0){tk(d,h,f,g);break a}else{Tj(d,h,f,g);break a}}case -96:case 45:{g=128;i=j<<24>>24==45?53:52;n=12;break}case 53:case 52:case 57:case 54:case 55:case 56:{i=k;n=12;break}case 51:case 50:{h=Lj(d,c[e+12>>2]|0,p)|0;g=o+108|0;i=c[g>>2]|0;if((c[o+112>>2]|0)>(i|0)){c[g>>2]=i+1;o=c[o+104>>2]|0;a[o+(i*20|0)>>0]=j;b[o+(i*20|0)+2>>1]=0;c[o+(i*20|0)+4>>2]=h;c[o+(i*20|0)+8>>2]=f;c[o+(i*20|0)+12>>2]=0;c[o+(i*20|0)+16>>2]=0;a[o+(i*20|0)+1>>0]=0;break a}else{Di(o,k,h,f,0)|0;break a}}case 48:{Sj(d,c[e+12>>2]|0,c[e+20>>2]|0,f,67,g);break}case 49:{h=d+56|0;j=c[h>>2]|0;i=j+-1|0;c[h>>2]=i;Rj(d,e,i,(g|0)==0?i:f);i=o+108|0;h=c[i>>2]|0;if((c[o+112>>2]|0)>(h|0)){c[i>>2]=h+1;e=c[o+104>>2]|0;a[e+(h*20|0)>>0]=11;b[e+(h*20|0)+2>>1]=0;c[e+(h*20|0)+4>>2]=0;c[e+(h*20|0)+8>>2]=f;c[e+(h*20|0)+12>>2]=0;c[e+(h*20|0)+16>>2]=0;a[e+(h*20|0)+1>>0]=0}else Di(o,11,0,f,0)|0;g=c[o+12>>2]|0;h=0-j|0;if(((c[g+56>>2]|0)+(c[g+60>>2]|0)|0)<0){mk(g,o,h);break a}else{c[(c[g+64>>2]|0)+(h<<2)>>2]=c[i>>2];break a}}default:{c[m>>2]=0;if((c[e+4>>2]&1|0)==0?(uk(e,m)|0)!=0:0)h=(c[m>>2]|0)!=0&1;else h=0;n=37}}while(0);do if((n|0)==12){j=e+12|0;k=c[j>>2]|0;h=a[k>>0]|0;if(h<<24>>24==-88)h=a[k+38>>0]|0;switch(h<<24>>24){case -87:{l=k+20|0;n=17;break}case -125:{l=c[k+20>>2]|0;n=17;break}default:{}}if((n|0)==17?(c[c[l>>2]>>2]|0)>=2:0){c[m>>2]=0;if((c[e+4>>2]&1|0)==0?(uk(e,m)|0)!=0:0)h=(c[m>>2]|0)!=0&1;else h=0;n=37;break}m=Lj(d,k,p)|0;e=e+16|0;o=Lj(d,c[e>>2]|0,s)|0;Mj(d,c[j>>2]|0,c[e>>2]|0,i,m,o,f,g)}while(0);do if((n|0)==37){if(h|0){h=o+108|0;g=c[h>>2]|0;if((c[o+112>>2]|0)>(g|0)){c[h>>2]=g+1;o=c[o+104>>2]|0;a[o+(g*20|0)>>0]=11;b[o+(g*20|0)+2>>1]=0;c[o+(g*20|0)+4>>2]=0;c[o+(g*20|0)+8>>2]=f;c[o+(g*20|0)+12>>2]=0;c[o+(g*20|0)+16>>2]=0;a[o+(g*20|0)+1>>0]=0;break}else{Di(o,11,0,f,0)|0;break}}c[m>>2]=0;if((c[e+4>>2]&1|0)==0?(uk(e,m)|0)!=0:0){if(!(c[m>>2]|0))break}else n=43;j=Lj(d,e,p)|0;h=(g|0)!=0&1;g=o+108|0;i=c[g>>2]|0;if((c[o+112>>2]|0)>(i|0)){c[g>>2]=i+1;o=c[o+104>>2]|0;a[o+(i*20|0)>>0]=18;b[o+(i*20|0)+2>>1]=0;c[o+(i*20|0)+4>>2]=j;c[o+(i*20|0)+8>>2]=f;c[o+(i*20|0)+12>>2]=h;c[o+(i*20|0)+16>>2]=0;a[o+(i*20|0)+1>>0]=0;break}else{Di(o,18,j,f,h)|0;break}}while(0);h=c[p>>2]|0;if(h|0?(q=d+19|0,r=a[q>>0]|0,(r&255)<8):0){a[q>>0]=r+1<<24>>24;c[d+148+((r&255)<<2)>>2]=h}h=c[s>>2]|0;if(!h){Ra=t;return}g=d+19|0;i=a[g>>0]|0;if((i&255)>=8){Ra=t;return}a[g>>0]=i+1<<24>>24;c[d+148+((i&255)<<2)>>2]=h;Ra=t;return}function uk(b,d){b=b|0;d=d|0;var e=0,f=0;f=Ra;Ra=Ra+16|0;e=f;a:do if(!b)b=0;else{if(c[b+4>>2]&1024|0){c[d>>2]=c[b+8>>2];b=1;break}switch(a[b>>0]|0){case -90:{b=uk(c[b+12>>2]|0,d)|0;break a}case -91:break;default:{b=0;break a}}if(!(uk(c[b+12>>2]|0,e)|0))b=0;else{c[d>>2]=0-(c[e>>2]|0);b=1}}while(0);Ra=f;return b|0}function vk(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=Ra;Ra=Ra+16|0;j=k;f=c[b>>2]|0;if(a[f+165>>0]|0){j=0;Ra=k;return j|0}if(a[b+18>>0]|0){j=0;Ra=k;return j|0}if((e|0)==0|(0==0?(c[f+32>>2]&268435457|0)==1:0)){j=0;Ra=k;return j|0}f=a[e>>0]|0;do if(!(f<<24>>24)){f=39441;h=5}else{l=f&255;f=208+l|0;if((l|32|0)==115){f=a[e+1>>0]|0;if(!(f<<24>>24)){f=39442;h=5;break}l=f&255;f=208+l|0;if((l|32|0)==113){f=a[e+2>>0]|0;if(!(f<<24>>24)){f=39443;h=5;break}l=f&255;f=208+l|0;if((l|32|0)==108){f=a[e+3>>0]|0;if(!(f<<24>>24)){f=39444;h=5;break}l=f&255;f=208+l|0;if((l|32|0)==105){f=a[e+4>>0]|0;if(!(f<<24>>24)){f=39445;h=5;break}l=f&255;f=208+l|0;if((l|32|0)==116){f=a[e+5>>0]|0;if(!(f<<24>>24)){f=39446;h=5;break}l=f&255;f=208+l|0;if((l|32|0)==101){f=a[e+6>>0]|0;if(!(f<<24>>24)){f=39447;h=5;break}if(f<<24>>24==95)break;else{g=95;f=208+(f&255)|0}}else g=101}else g=116}else g=105}else g=108}else g=113}else g=115;i=d[f>>0]|0;h=9}while(0);if((h|0)==5){i=0;g=a[208+(d[f>>0]|0)>>0]|0;h=9}if((h|0)==9?(i|0)!=(g&255|0):0){l=0;Ra=k;return l|0}c[j>>2]=e;cd(b,39449,j);l=1;Ra=k;return l|0}function wk(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=qj(b,e)|0;if(!j){k=-1;return k|0}i=c[b+20>>2]|0;e=i+-1|0;if((i|0)>0){i=e;h=(c[b+16>>2]|0)+(e<<4)|0;while(1){f=c[h>>2]|0;if(f|0){g=a[f>>0]|0;e=(d[208+(g&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0;if(!(g<<24>>24==0|(e|0)!=0)){g=j;do{f=f+1|0;g=g+1|0;l=a[f>>0]|0;e=(d[208+(l&255)>>0]|0)-(d[208+(d[g>>0]|0)>>0]|0)|0}while(!(l<<24>>24==0|(e|0)!=0))}if(!e){e=i;break}}if(!i){k=10;break}e=i+-1|0;if((i|0)>0){i=e;h=h+-16|0}else break}if((k|0)==10){e=109-(d[208+(d[j>>0]|0)>>0]|0)|0;if(!e){f=j;g=50919;do{g=g+1|0;f=f+1|0;l=a[g>>0]|0;e=(d[208+(l&255)>>0]|0)-(d[208+(d[f>>0]|0)>>0]|0)|0}while(!(l<<24>>24==0|(e|0)!=0))}e=((e|0)!=0)<<31>>31}if(b)k=16}else k=16;if((k|0)==16){if(c[b+480>>2]|0){Xd(b,j);l=e;return l|0}l=j;if((c[b+304>>2]|0)>>>0<=l>>>0?(c[b+308>>2]|0)>>>0>l>>>0:0){l=b+300|0;c[j>>2]=c[l>>2];c[l>>2]=j;l=e;return l|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);l=e;return l|0}else{l=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);l=e;return l|0}return 0}function xk(a){a=a|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=c[(c[a+12>>2]|0)+4>>2]|0;f=b[a+52>>1]|0;if(!(f<<16>>16)){k=0;a=a+48|0;b[a>>1]=k;return}k=c[a+4>>2]|0;i=f&65535;g=0;h=0;do{f=b[k+(g<<1)>>1]|0;if(f<<16>>16<0)f=1;else f=d[j+(f<<16>>16<<4)+14>>0]|0;h=f+h|0;g=g+1|0}while(g>>>0>>0);f=h<<2;if(f>>>0>=8){if(f>>>0>255){h=40;g=0;do{h=(h&65535)+40|0;k=f;f=bw(f|0,g|0,4)|0;j=g;g=L()|0}while(j>>>0>0|(j|0)==0&k>>>0>4095);h=h&65535}else{h=40;g=0}if(g>>>0>0|(g|0)==0&f>>>0>15)do{h=(h&65535)+10&65535;k=f;f=bw(f|0,g|0,1)|0;j=g;g=L()|0}while(j>>>0>0|(j|0)==0&k>>>0>31)}else{if(!f){k=0;a=a+48|0;b[a>>1]=k;return}h=40;g=0;do{h=(h&65535)+65526|0;f=cw(f|0,g|0,1)|0;g=L()|0}while(g>>>0<0|(g|0)==0&f>>>0<8);h=h&65535}k=(h&65535)+65526+(e[3648+((f&7)<<1)>>1]|0)&65535;a=a+48|0;b[a>>1]=k;return}function yk(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=c[d>>2]|0;j=k+32|0;h=j;g=c[h>>2]|0;h=c[h+4>>2]|0;l=j;c[l>>2]=g&-69|64;c[l+4>>2]=h;Kk(d,f,0);c[j>>2]=g;c[j+4>>2]=h;if(c[d+36>>2]|0){l=0;return l|0}j=f;while(1){f=c[j+52>>2]|0;if(!f)break;else j=f}a:do if(!k){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](80)|0;i=27;break}f=Wa[c[29356>>2]&127](80)|0;if((c[14985]|0)>>>0<80)c[14985]=80;h=59064;g=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&g>>>0>0){l=c[14978]|0;h=Tv(g|0,h|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;c[14768]=((g|0)<0|(g|0)==0&h>>>0<=l>>>0)&1}f=Wa[c[29340>>2]&127](f)|0;if(!f){l=0;return l|0}g=Wa[c[29352>>2]&127](f)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0)c[14987]=g}else{if(c[k+272>>2]|0){if(a[k+81>>0]|0){l=0;return l|0}}else{do if((e[k+276>>1]|0)>=80){g=k+300|0;f=c[g>>2]|0;if(f|0){c[g>>2]=c[f>>2];i=k+284|0;c[i>>2]=(c[i>>2]|0)+1;i=27;break a}g=k+296|0;f=c[g>>2]|0;if(!f){f=k+292|0;break}else{c[g>>2]=c[f>>2];i=k+284|0;c[i>>2]=(c[i>>2]|0)+1;i=27;break a}}else f=k+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1}f=_d(k,80,0)|0;i=27}while(0);if((i|0)==27)if(!f){l=0;return l|0}g=f+4|0;h=g+76|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0));g=f+32|0;c[g>>2]=1;c[f>>2]=0;b[f+44>>1]=200;Tk(c[d>>2]|0,c[j>>2]|0,f+42|0,f+4|0);Uk(d,f,j);b[f+40>>1]=-1;if(!(a[k+81>>0]|0)){l=f;return l|0}if(c[k+480>>2]|0){Vi(k,f);l=0;return l|0}l=(c[g>>2]|0)+-1|0;c[g>>2]=l;if(l|0){l=0;return l|0}Vi(k,f);l=0;return l|0}function zk(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=e+20|0;g=c[l>>2]|0;a:do if(!g){j=c[d>>2]|0;k=e+42|0;i=b[k>>1]|0;g=(i<<16>>16)+1|0;do if(i<<16>>16>=0){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](g)|0;if(!g)break;else j=g}else{i=Wa[c[29356>>2]&127](g)|0;if((c[14985]|0)>>>0>>0)c[14985]=g;h=59064;g=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&g>>>0>0){m=c[14978]|0;h=Tv(g|0,h|0,i|0,((i|0)<0)<<31>>31|0)|0;g=L()|0;c[14768]=((g|0)<0|(g|0)==0&h>>>0<=m>>>0)&1}h=Wa[c[29340>>2]&127](i)|0;if(!h)break;g=Wa[c[29352>>2]&127](h)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0){c[14987]=g;j=h}else j=h}if((b[k>>1]|0)>0){h=e+4|0;g=0;do{a[j+g>>0]=a[(c[h>>2]|0)+(g<<4)+13>>0]|0;g=g+1|0}while((g|0)<(b[k>>1]|0))}else g=0;do{a[j+g>>0]=0;if((g|0)<=0)break;g=g+-1|0}while((a[j+g>>0]|0)==65);c[l>>2]=j;break a}while(0);g=j+81|0;if(a[g>>0]|0)return;if(a[j+82>>0]|0)return;a[g>>0]=1;if((c[j+180>>2]|0)>0)c[j+264>>2]=1;g=j+272|0;c[g>>2]=(c[g>>2]|0)+1;g=c[j+236>>2]|0;if(!g)return;c[g+12>>2]=7;return}else j=g;while(0);e=(Eu(j)|0)&1073741823;if(!e)return;if(!f){g=c[d>>2]|0;if(!(a[g+81>>0]|0)){Ei(d,(c[d+104>>2]|0)+(((c[d+108>>2]|0)+-1|0)*20|0)|0,j,e);return}else{kg(g,e,j);return}}i=d+108|0;g=c[i>>2]|0;if((c[d+112>>2]|0)>(g|0)){c[i>>2]=g+1;m=c[d+104>>2]|0;a[m+(g*20|0)>>0]=91;b[m+(g*20|0)+2>>1]=0;c[m+(g*20|0)+4>>2]=f;c[m+(g*20|0)+8>>2]=e;c[m+(g*20|0)+12>>2]=0;c[m+(g*20|0)+16>>2]=0;a[m+(g*20|0)+1>>0]=0}else g=Di(d,91,f,e,0)|0;h=c[d>>2]|0;if(a[h+81>>0]|0){kg(h,e,j);return}if((g|0)<0)g=(c[i>>2]|0)+-1|0;Ei(d,(c[d+104>>2]|0)+(g*20|0)|0,j,e);return}function Ak(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;r=Ra;Ra=Ra+224|0;l=r+192|0;j=r+96|0;o=r+184|0;p=r;c[o>>2]=0;q=c[b>>2]|0;n=b+36|0;if(c[n>>2]|0){Ra=r;return}c[j>>2]=e;h=c[q+108>>2]|0;f=l+4|0;c[f>>2]=r+112;c[l>>2]=q;c[l+8>>2]=70;g=l+12|0;c[g>>2]=h;h=l+16|0;c[h>>2]=0;k=l+20|0;a[k>>0]=0;i=l+21|0;a[i>>0]=1;tb(l,d,j);e=c[f>>2]|0;if(((e|0)!=0?(a[e+(c[h>>2]|0)>>0]=0,(c[g>>2]|0)!=0):0)?(a[i>>0]&4)==0:0)i=$d(l)|0;else i=c[f>>2]|0;if(((a[k>>0]|0)==7?(m=q+81|0,(a[m>>0]|0)==0):0)?(a[q+82>>0]|0)==0:0){a[m>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;e=q+272|0;c[e>>2]=(c[e>>2]|0)+1;e=c[q+236>>2]|0;if(e|0)c[e+12>>2]=7}if(!i){if(!(a[q+81>>0]|0))c[b+12>>2]=18;c[n>>2]=(c[n>>2]|0)+1;Ra=r;return}g=b+18|0;a[g>>0]=(a[g>>0]|0)+1<<24>>24;h=b+188|0;e=p;d=h;f=e+88|0;do{a[e>>0]=a[d>>0]|0;e=e+1|0;d=d+1|0}while((e|0)<(f|0));e=h;f=e+88|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(f|0));ud(b,i,o)|0;d=c[o>>2]|0;e=q+480|0;do if(d|0){if(c[e>>2]|0){Xd(q,d);break}o=d;if((c[q+304>>2]|0)>>>0<=o>>>0?(c[q+308>>2]|0)>>>0>o>>>0:0){o=q+300|0;c[d>>2]=c[o>>2];c[o>>2]=d;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{o=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}while(0);do if(!(c[e>>2]|0)){o=i;if((c[q+304>>2]|0)>>>0<=o>>>0?(c[q+308>>2]|0)>>>0>o>>>0:0){q=q+300|0;c[i>>2]=c[q>>2];c[q>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{q=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}else Xd(q,i);while(0);e=h;d=p;f=e+88|0;do{a[e>>0]=a[d>>0]|0;e=e+1|0;d=d+1|0}while((e|0)<(f|0));a[g>>0]=(a[g>>0]|0)+-1<<24>>24;Ra=r;return}function Bk(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0;h=d+108|0;g=c[h>>2]|0;if((c[d+112>>2]|0)>(g|0)){c[h>>2]=g+1;h=c[d+104>>2]|0;a[h+(g*20|0)>>0]=-115;b[h+(g*20|0)+2>>1]=0;c[h+(g*20|0)+4>>2]=e;c[h+(g*20|0)+8>>2]=0;c[h+(g*20|0)+12>>2]=0;c[h+(g*20|0)+16>>2]=0;a[h+(g*20|0)+1>>0]=0}else g=Di(d,141,e,0,0)|0;gd(d,g,f,-7);if((c[(c[d>>2]|0)+20>>2]|0)<=0)return;g=0;do{fd(d,g);g=g+1|0}while((g|0)<(c[(c[d>>2]|0)+20>>2]|0));return}function Ck(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=Ra;Ra=Ra+32|0;i=m;g=m+4|0;if(!d){l=0;Ra=m;return l|0}k=a+24|0;l=e[k>>1]|0;b[k>>1]=l&28655;f=c[a>>2]|0;c[g>>2]=f;c[g+4>>2]=125;c[g+8>>2]=126;c[g+12>>2]=0;c[g+24>>2]=a;j=d+24|0;h=f+208|0;n=(c[h>>2]|0)+(c[j>>2]|0)|0;c[h>>2]=n;h=c[(c[f>>2]|0)+120>>2]|0;if((h|0)<(n|0)){c[i>>2]=h;cd(f,41637,i);n=1;Ra=m;return n|0}_j(g,d)|0;f=c[g>>2]|0;n=f+208|0;c[n>>2]=(c[n>>2]|0)-(c[j>>2]|0);n=b[k>>1]|0;j=d+4|0;c[j>>2]=c[j>>2]|n&-32752&65535;b[k>>1]=l&36880|n&65535;if((c[a+20>>2]|0)>0){n=1;Ra=m;return n|0}n=(c[f+36>>2]|0)>0&1;Ra=m;return n|0}function Dk(f,h){f=f|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,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,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.0,qa=0;oa=Ra;Ra=Ra+272|0;r=oa+248|0;m=oa+240|0;p=oa+232|0;O=oa+224|0;N=oa+216|0;M=oa+208|0;J=oa+200|0;I=oa+192|0;H=oa+176|0;G=oa+160|0;D=oa+152|0;C=oa+144|0;B=oa+136|0;z=oa+128|0;y=oa+120|0;w=oa+112|0;ja=oa+104|0;ia=oa+88|0;ha=oa+72|0;ba=oa+64|0;ga=oa+56|0;da=oa+48|0;ca=oa+40|0;o=oa+32|0;R=oa;K=oa+252|0;i=c[f+24>>2]|0;na=c[i>>2]|0;a:do switch(a[h>>0]|0){case 55:case 56:case 52:case 53:case 48:case 54:case 57:{ma=385;break}case -95:{F=h+20|0;v=c[F>>2]|0;u=(v|0)==0;if(u)p=0;else p=c[v>>2]|0;j=c[na>>2]|0;m=a[j+78>>0]|0;P=i+24|0;Q=b[P>>1]&16385;t=c[h+8>>2]|0;if(!t)s=0;else s=(Eu(t)|0)&1073741823;r=Jd(j,t,p,m,0)|0;if(r){o=(c[r+20>>2]|0)!=0&1;q=r+4|0;do if(c[q>>2]&1024|0){la=h+4|0;c[la>>2]=c[la>>2]|266240;if((p|0)!=2){c[h+28>>2]=(a[c[r+32>>2]>>0]|0)==117?8388608:125829120;break}j=c[v+24>>2]|0;g[R>>3]=-1.0;if((a[j>>0]|0)==-111){m=c[j+8>>2]|0;if(!m)j=0;else j=(Eu(m)|0)&1073741823;Lg(m,R,j,1)|0;pa=+g[R>>3];j=~~(pa*134217728.0);if(!(pa>1.0)){c[h+28>>2]=j;if((j|0)>=0)break}else ma=247}else ma=247;if((ma|0)==247)c[h+28>>2]=-1;cd(na,39784,w);la=i+20|0;c[la>>2]=(c[la>>2]|0)+1}while(0);p=r+32|0;j=c[p>>2]|0;m=c[na>>2]|0;b:do if(((a[m+165>>0]|0)==0?(a[na+200>>0]|0)==0:0)?(x=c[m+312>>2]|0,x|0):0){j=$a[x&127](c[m+316>>2]|0,31,0,j,0,c[na+240>>2]|0)|0;do if((j|0)!=1)if((j|2|0)==2)if(!j)break b;else break;else{cd(na,39231,z);j=1;ma=259;break}else{cd(na,39216,y);j=23;ma=259}while(0);if((ma|0)==259){c[na+12>>2]=j;c[B>>2]=c[p>>2];cd(na,39855,B);na=i+20|0;c[na>>2]=(c[na>>2]|0)+1}a[h>>0]=114;na=1;Ra=oa;return na|0}while(0);j=c[q>>2]|0;if(j&10240|0){la=h+4|0;c[la>>2]=c[la>>2]|524288}if((j&2048|0)==0?(A=e[P>>1]|0,(A&34|0)!=0):0){c[C>>2]=39890;c[C+4>>2]=(A&32|0)==0?((A&4|0)==0?40098:40144):40126;cd(na,40162,C);j=c[q>>2]|0}if(!(j&262144)){q=0;w=r;p=0}else{w=(a[na+18>>0]|0)==0&(c[7391]|0)==0;q=w;w=w?0:r;p=0}}else{w=Jd(c[na>>2]|0,t,-2,m,0)|0;p=(w|0)==0;q=p;p=(p^1)&1;o=0}c:do if((d[na+200>>0]|0)<2){if(((w|0)!=0?(c[w+24>>2]|0)==0:0)?(c[h+4>>2]&16777216|0)!=0:0){c[D>>2]=s;c[D+4>>2]=t;cd(na,39918,D);ma=287}else ma=273;do if((ma|0)==273){do if(o|0){m=b[P>>1]|0;j=c[w+4>>2]|0;if((m&1?(E=c[h+44>>2]|0,!((j&65536|0)!=0&(E|0)==0)):0)?!((m&16384)==0&(E|0)!=0):0)break;if((j&65536|0)==0?(c[h+44>>2]|0)==0:0){c[G>>2]=39969;c[G+4>>2]=s;c[G+8>>2]=t;cd(na,39979,G)}else{c[H>>2]=39962;c[H+4>>2]=s;c[H+8>>2]=t;cd(na,39979,H)}o=i+20|0;c[o>>2]=(c[o>>2]|0)+1;o=0;break c}while(0);if(q?(a[(c[na>>2]|0)+165>>0]|0)==0:0){c[I>>2]=s;c[I+4>>2]=t;cd(na,40008,I);ma=287;break}if(p|0){c[J>>2]=s;c[J+4>>2]=t;cd(na,40031,J);ma=287}}while(0);if((ma|0)==287){la=i+20|0;c[la>>2]=(c[la>>2]|0)+1}if(!o)o=0;else{b[P>>1]=((c[h+44>>2]|0)==0^49151)&e[P>>1];o=1}}while(0);d:do if(!u?(n=c[v>>2]|0,(n|0)>0):0){j=v+4|0;while(1){m=c[j>>2]|0;if(m|0?_j(f,m)|0:0)break d;if((n|0)>1){n=n+-1|0;j=j+20|0}else break}}while(0);if(!o){na=1;Ra=oa;return na|0}t=h+44|0;r=c[t>>2]|0;e:do if(!r){a[h>>0]=-93;m=h+38|0;a[m>>0]=0;if(i|0){n=R+4|0;o=R+8|0;p=R+24|0;q=K+4|0;r=K+8|0;while(1){na=c[i+4>>2]|0;k=c[F>>2]|0;c[n>>2]=139;c[o>>2]=0;c[p>>2]=K;c[K>>2]=na;c[q>>2]=0;c[r>>2]=0;if(!k){ma=369;break}j=c[k>>2]|0;if((j|0)<=0){ma=369;break}k=k+4|0;while(1){l=c[k>>2]|0;if(l|0?_j(R,l)|0:0)break;if((j|0)>1){j=j+-1|0;k=k+20|0}else break}if((c[r>>2]|0)==0|(c[q>>2]|0)>0)break;a[m>>0]=(a[m>>0]|0)+1<<24>>24;i=c[i+12>>2]|0;if(!i)break e}na=i+24|0;b[na>>1]=c[w+4>>2]&4096|e[na>>1]|16}}else{s=c[i+28>>2]|0;i=c[s+72>>2]|0;o=c[r>>2]|0;q=r+16|0;f:do if((o|0)!=0?(a[q>>0]|0)==0:0){g:do if(i|0){n=d[208+(d[o>>0]|0)>>0]|0;p=i;while(1){j=c[p>>2]|0;h=a[j>>0]|0;i=(d[208+(h&255)>>0]|0)-n|0;if(!(h<<24>>24==0|(i|0)!=0)){m=o;do{j=j+1|0;m=m+1|0;h=a[j>>0]|0;i=(d[208+(h&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(h<<24>>24==0|(i|0)!=0))}if(!i)break;i=c[p+32>>2]|0;if(!i)break g;else p=i}if(!p)break f;i=gk(c[na>>2]|0,c[p+8>>2]|0,0)|0;c[r+8>>2]=i;i=gk(c[na>>2]|0,c[p+12>>2]|0,0)|0;c[r+12>>2]=i;i=c[p+24>>2]|0;if(!i)i=0;else i=dk(c[na>>2]|0,i,0,0)|0;c[r+24>>2]=i;i=c[p+28>>2]|0;if(!i)i=0;else i=dk(c[na>>2]|0,i,0,0)|0;c[r+28>>2]=i;a[r+17>>0]=a[p+17>>0]|0;a[r+18>>0]=a[p+18>>0]|0;i=a[p+16>>0]|0;a[q>>0]=i;a[r+20>>0]=a[p+20>>0]|0;ma=315;break f}while(0);c[M>>2]=o;cd(na,40596,M)}else ma=314;while(0);if((ma|0)==314){Cj(na,r,i);i=a[q>>0]|0;ma=315}if((ma|0)==315){do if(i<<24>>24==86){if((c[r+24>>2]|0)==0?(c[r+28>>2]|0)==0:0){ma=321;break}h=c[r+12>>2]|0;if(h|0?(c[h>>2]|0)==1:0){ma=321;break}cd(na,40397,N)}else ma=321;while(0);h:do if((ma|0)==321?c[w+4>>2]&65536|0:0){o=c[na>>2]|0;if(c[r+36>>2]|0){cd(na,40468,O);break}i=c[w+32>>2]|0;do if((i|0)!=40531)if((i|0)!=40542)if((i|0)!=40553)if((i|0)!=40558){if((i|0)==40571){m=4;break}if((i|0)==40581){m=5;break}if((i|0)==40587){m=6;break}if((i|0)==40592)m=7;else break h}else m=3;else m=2;else m=1;else m=0;while(0);n=r+24|0;i=c[n>>2]|0;if(i|0)ni(o,i);i=r+28|0;j=c[i>>2]|0;if(j|0)ni(o,j);c[n>>2]=0;c[i>>2]=0;a[q>>0]=c[17952+(m<<4)+4>>2];h=c[17952+(m<<4)+8>>2]&255;a[r+17>>0]=h;a[r+18>>0]=c[17952+(m<<4)+12>>2];a[r+20>>0]=0;if(h<<24>>24==83){c[R>>2]=34874;c[R+4>>2]=1;h=oj(o,147,R,0)|0;c[n>>2]=h}}while(0);c[r+40>>2]=w}i=c[t>>2]|0;j=c[i+8>>2]|0;if((j|0)!=0?(l=c[j>>2]|0,(l|0)>0):0){i=j+4|0;while(1){j=c[i>>2]|0;if(j|0?_j(f,j)|0:0)break;if((l|0)>1){l=l+-1|0;i=i+20|0}else break}i=c[t>>2]|0}j=c[i+12>>2]|0;if((j|0)!=0?(k=c[j>>2]|0,(k|0)>0):0){i=j+4|0;while(1){j=c[i>>2]|0;if(j|0?_j(f,j)|0:0)break;if((k|0)>1){k=k+-1|0;i=i+20|0}else break}i=c[t>>2]|0}i=c[i+36>>2]|0;if(i|0)_j(f,i)|0;k=s+68|0;i=c[k>>2]|0;if(i){if(!(ck(na,i,c[t>>2]|0)|0)){j=k;i=c[k>>2]|0;ma=359}}else{j=k;ma=359}if((ma|0)==359){c[(c[t>>2]|0)+32>>2]=i;c[j>>2]=c[t>>2]}b[P>>1]=b[P>>1]|-32768}while(0);b[P>>1]=b[P>>1]|Q;na=1;Ra=oa;return na|0}case 49:case 20:case -125:{k=h+4|0;if(c[k>>2]&2048|0){l=i+16|0;m=c[l>>2]|0;i=i+24|0;j=e[i>>1]|0;if(j&38|0){c[p>>2]=40076;c[p+4>>2]=(j&32|0)==0?((j&4|0)==0?40098:40144):40126;cd(na,40162,p)}$j(f,c[h+20>>2]|0)|0;if((m|0)!=(c[l>>2]|0)){c[k>>2]=c[k>>2]|32;b[i>>1]=b[i>>1]|64}}break}case -108:{i=e[i+24>>1]|0;if(i&38|0){c[m>>2]=40087;c[m+4>>2]=(i&32|0)==0?((i&4|0)==0?40098:40144):40126;cd(na,40162,m)}break}case -96:case 45:{i=c[h+16>>2]|0;if((a[i>>0]|0)==59){if((Dk(f,i)|0)==2){na=2;Ra=oa;return na|0}if((a[i>>0]|0)==-97){a[h+38>>0]=a[h>>0]|0;a[h>>0]=-89;na=0;Ra=oa;return na|0}else ma=385}else ma=385;break}case 59:{s=c[h+8>>2]|0;W=c[na>>2]|0;Z=h+28|0;c[Z>>2]=-1;t=0;u=0;l=0;v=na+200|0;X=na;ma=28;break}case -122:{l=c[h+12>>2]|0;n=i+24|0;if(b[n>>1]&32){c[o>>2]=39767;c[o+4>>2]=40126;cd(na,40162,o)}k=c[h+16>>2]|0;if((a[k>>0]|0)==59){u=0;m=k}else{u=c[l+8>>2]|0;m=c[k+16>>2]|0;l=c[k+12>>2]|0}t=c[l+8>>2]|0;s=c[m+8>>2]|0;v=na+200|0;i:do if((d[v>>0]|0)>1?(q=na+272|0,j=c[q>>2]|0,j|0):0){k=j;do{if((c[k>>2]|0)==(m|0)){ma=12;break}k=c[k+12>>2]|0}while((k|0)!=0);if((ma|0)==12){c[k>>2]=h;j=c[q>>2]|0}k=h+44|0;if(j|0){while(1){if((c[j>>2]|0)==(l|0))break;j=c[j+12>>2]|0;if(!j)break i}c[j>>2]=k}}while(0);r=c[na>>2]|0;q=h+28|0;c[q>>2]=-1;if((u|0)!=0?(b[n>>1]&6)==0:0){n=c[r+20>>2]|0;if((n|0)>0){p=c[r+16>>2]|0;o=d[208+(d[u>>0]|0)>>0]|0;j=0;while(1){l=c[p+(j<<4)>>2]|0;ma=a[l>>0]|0;k=(d[208+(ma&255)>>0]|0)-o|0;if(!(ma<<24>>24==0|(k|0)!=0)){m=u;do{l=l+1|0;m=m+1|0;ma=a[l>>0]|0;k=(d[208+(ma&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(ma<<24>>24==0|(k|0)!=0))}if(!k)break;j=j+1|0;if((j|0)>=(n|0)){l=0;Z=q;W=r;X=na;ma=28;break a}}l=c[p+(j<<4)+12>>2]|0;Z=q;W=r;X=na;ma=28}else{l=0;Z=q;W=r;X=na;ma=28}}else{u=0;l=0;Z=q;W=r;X=na;ma=28}break}default:{}}while(0);if((ma|0)==28){U=(u|0)==0;V=(t|0)!=0;R=V&U;j=na+120|0;P=(t|0)==0;_=h+32|0;f=h+44|0;T=na+272|0;Q=na+144|0;Y=h+4|0;M=h+1|0;N=na+136|0;O=na+140|0;m=i;q=0;S=0;o=162;p=0;r=-1;j:while(1){k=c[m+4>>2]|0;if(k){K=c[k>>2]|0;if((K|0)>0){I=k+8|0;J=0;w=0;while(1){H=c[I+16>>2]|0;k=c[I+20>>2]|0;if((k|0)!=0?(c[k+8>>2]&2048|0)!=0:0){x=c[k>>2]|0;y=c[x>>2]|0;if((y|0)>0){n=0;k=0;do{if(Fk(c[x+4+(n*20|0)+8>>2]|0,s,t,u)|0){b[_>>1]=n;k=1;w=w+1|0;q=2;p=I}n=n+1|0}while((n|0)!=(y|0))}else k=0;if(V&(k|0)==0)ma=40}else ma=40;k:do if((ma|0)==40){ma=0;if(!U?(c[H+72>>2]|0)!=(l|0):0)break;l:do if(!P){n=c[I+12>>2]|0;y=(n|0)==0;if(y){n=c[H>>2]|0;G=a[n>>0]|0;k=(d[208+(G&255)>>0]|0)-(d[208+(d[t>>0]|0)>>0]|0)|0;if(!(G<<24>>24==0|(k|0)!=0)){x=t;do{n=n+1|0;x=x+1|0;G=a[n>>0]|0;k=(d[208+(G&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0}while(!(G<<24>>24==0|(k|0)!=0))}}else{G=a[n>>0]|0;k=(d[208+(G&255)>>0]|0)-(d[208+(d[t>>0]|0)>>0]|0)|0;if(!(G<<24>>24==0|(k|0)!=0)){x=t;do{n=n+1|0;x=x+1|0;G=a[n>>0]|0;k=(d[208+(G&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0}while(!(G<<24>>24==0|(k|0)!=0))}}if(k|0)break k;if(!(y|(d[v>>0]|0)<2)?($=c[T>>2]|0,$|0):0){k=$;while(1){if((c[k>>2]|0)==(f|0))break;k=c[k+12>>2]|0;if(!k)break l}c[k>>2]=0}}while(0);G=q+1|0;p=(q|0)==0?I:p;n=c[H+4>>2]|0;k=b[H+42>>1]|0;if(k<<16>>16>0){F=d[208+(d[s>>0]|0)>>0]|0;C=I+36|0;D=I+48|0;E=k<<16>>16;m:do if((w|0)==1){k=0;while(1){x=c[n>>2]|0;B=a[x>>0]|0;q=(d[208+(B&255)>>0]|0)-F|0;if(!(B<<24>>24==0|(q|0)!=0)){y=s;do{x=x+1|0;y=y+1|0;B=a[x>>0]|0;q=(d[208+(B&255)>>0]|0)-(d[208+(d[y>>0]|0)>>0]|0)|0}while(!(B<<24>>24==0|(q|0)!=0))}n:do if((q|0)==0?(a[C>>0]&4)==0:0){q=c[D>>2]|0;if(!q)break m;B=c[q+4>>2]|0;if((B|0)<=0)break m;A=c[q>>2]|0;z=0;while(1){x=c[A+(z<<3)>>2]|0;y=a[x>>0]|0;q=(d[208+(y&255)>>0]|0)-F|0;if(!(y<<24>>24==0|(q|0)!=0)){y=s;do{x=x+1|0;y=y+1|0;qa=a[x>>0]|0;q=(d[208+(qa&255)>>0]|0)-(d[208+(d[y>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(q|0)!=0))}z=z+1|0;if(!q)break n;if((z|0)>=(B|0))break m}}while(0);k=k+1|0;if((k|0)>=(E|0)){w=1;q=G;break k}else n=n+16|0}}else{y=n;k=0;while(1){q=c[y>>2]|0;qa=a[q>>0]|0;n=(d[208+(qa&255)>>0]|0)-F|0;if(!(qa<<24>>24==0|(n|0)!=0)){x=s;do{q=q+1|0;x=x+1|0;qa=a[q>>0]|0;n=(d[208+(qa&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(n|0)!=0))}if(!n)break m;k=k+1|0;if((k|0)>=(E|0)){q=G;break k}else y=y+16|0}}while(0);b[_>>1]=(k|0)==(b[H+40>>1]|0)?-1:k&65535;w=w+1|0;q=G;p=I}else q=G}while(0);J=J+1|0;if((J|0)==(K|0))break;else I=I+72|0}}else w=0;if(!p){A=w;C=0}else{n=c[p+40>>2]|0;c[Z>>2]=n;k=c[p+16>>2]|0;c[f>>2]=k;if(a[p+36>>0]&8)c[Y>>2]=c[Y>>2]|1048576;l=c[k+72>>2]|0;A=w;C=p;r=n}}else{A=0;C=p}do if(R&(q|0)==0){q=c[j>>2]|0;do if(q){x=a[Q>>0]|0;w=a[t>>0]|0;k=w|32;if(x<<24>>24==121){if(k<<24>>24!=111){q=0;break}}else{if(k<<24>>24==110){k=t;n=40182;do{n=n+1|0;k=k+1|0;qa=a[n>>0]|0;p=(d[208+(qa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(p|0)!=0));if(!p){c[Z>>2]=1;r=1;break}}if(!(x<<24>>24!=120&(w|32)<<24>>24==111)){q=0;break}}k=t;n=40186;do{n=n+1|0;k=k+1|0;qa=a[n>>0]|0;p=(d[208+(qa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(p|0)!=0));if(!p){c[Z>>2]=0;r=0}else q=0}else q=0;while(0);w=b[m+24>>1]|0;if(((w&512)!=0?(aa=c[m+8>>2]|0,(aa|0)!=0):0)?(a[t>>0]|32)<<24>>24==101:0){k=t;n=40190;do{n=n+1|0;k=k+1|0;qa=a[n>>0]|0;p=(d[208+(qa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(p|0)!=0));if(!p){z=c[(c[aa+20>>2]|0)+24>>2]|0;c[Z>>2]=2;r=2}else z=q}else z=q;if(!z){B=o;q=0;o=A;n=(C|0)!=0;z=w;break}l=c[z+72>>2]|0;qa=b[z+42>>1]|0;y=qa<<16>>16;o:do if(qa<<16>>16>0){x=d[208+(d[s>>0]|0)>>0]|0;n=0;w=c[z+4>>2]|0;while(1){p=c[w>>2]|0;qa=a[p>>0]|0;k=(d[208+(qa&255)>>0]|0)-x|0;if(!(qa<<24>>24==0|(k|0)!=0)){q=s;do{p=p+1|0;q=q+1|0;qa=a[p>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[q>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(k|0)!=0))}if(!k)break;n=n+1|0;if((n|0)<(y|0))w=w+16|0;else break o}n=(n|0)==(b[z+40>>1]|0)?-1:n}else n=0;while(0);do if((n|0)>=(y|0)){x=a[s>>0]|0;w=d[208+(x&255)>>0]|0;k=w+-95|0;x=x<<24>>24==0;if(!(x|(k|0)!=0)){p=58070;q=s;do{q=q+1|0;p=p+1|0;qa=a[q>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(k|0)!=0))}if(k|0){k=w+-114|0;if(!(x|(k|0)!=0)){p=40352;q=s;do{q=q+1|0;p=p+1|0;qa=a[q>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(k|0)!=0))}if(k|0){k=w+-111|0;if(!(x|(k|0)!=0)){p=58078;q=s;do{q=q+1|0;p=p+1|0;qa=a[q>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(k|0)!=0))}if(k|0)break}}n=(c[z+36>>2]&64|0)==0?-1:n}while(0);if((n|0)<(y|0)){p=A+1|0;if((r|0)==2)if((d[v>>0]|0)>1){b[_>>1]=n;c[f>>2]=z;o=162;q=1;r=2;ma=142;break}else{r=(c[(c[m+8>>2]|0)+24>>2]|0)+n|0;c[Z>>2]=r;c[Y>>2]=c[Y>>2]|4194304;o=168;q=1;ma=142;break}do if((n|0)>=0){k=(n|0)>31?-1:1<>2]=c[N>>2]|k;break}else{c[O>>2]=c[O>>2]|k;break}}else a[M>>0]=68;while(0);c[f>>2]=z;b[_>>1]=n;o=77;q=1;ma=142}else{q=1;p=A;ma=142}}else{p=A;ma=142}while(0);do if((ma|0)==142){ma=0;n=(C|0)!=0;z=b[m+24>>1]|0;if(n&((q|0)==1&(p|0)==0))if(!(z&32)){w=a[s>>0]|0;q=d[208+(w&255)>>0]|0;k=q+-95|0;w=w<<24>>24==0;if(!(w|(k|0)!=0)){n=58070;p=s;do{p=p+1|0;n=n+1|0;qa=a[p>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(k|0)!=0))}if(k|0){k=q+-114|0;if(!(w|(k|0)!=0)){n=40352;p=s;do{p=p+1|0;n=n+1|0;qa=a[p>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(k|0)!=0))}if(k|0){k=q+-111|0;if(!(w|(k|0)!=0)){n=58078;p=s;do{p=p+1|0;n=n+1|0;qa=a[p>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(k|0)!=0))}if(k|0){B=o;q=1;o=0;n=1;break}}}if(!(c[(c[C+16>>2]|0)+36>>2]&64)){ma=157;break j}else{B=o;q=1;o=0;n=1}}else{B=o;q=1;o=0;n=1}else{B=o;o=p}}while(0);k=(o|0)==0;if(P&(k&(z&128)!=0)){A=c[m+8>>2]|0;w=c[A>>2]|0;if((w|0)>0){y=0;while(1){x=c[A+4+(y*20|0)+4>>2]|0;if(x|0){qa=a[x>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[s>>0]|0)>>0]|0)|0;if(!(qa<<24>>24==0|(k|0)!=0)){o=s;p=x;do{p=p+1|0;o=o+1|0;qa=a[p>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(k|0)!=0))}if(!k){ma=166;break j}}k=y+1|0;if((k|0)<(w|0))y=k;else break}}}else if(!k){ma=201;break}m=c[m+12>>2]|0;if(!m){ma=188;break}else{S=S+1|0;o=B;p=C}}p:do if((ma|0)==157){b[_>>1]=-1;a[M>>0]=68;q=m;p=1;n=1;ma=208}else if((ma|0)==166){n=c[A+4+(y*20|0)>>2]|0;if((z&1)==0?c[n+4>>2]&16|0:0){c[ca>>2]=x;cd(na,40199,ca);qa=2;Ra=oa;return qa|0}if((z&16384)==0?c[n+4>>2]&32768|0:0){c[da>>2]=x;cd(na,40230,da);qa=2;Ra=oa;return qa|0}k=a[n>>0]|0;if(k<<24>>24==-88)k=a[n+38>>0]|0;switch(k<<24>>24){case -87:{fa=n+20|0;ma=177;break}case -125:{fa=c[n+20>>2]|0;ma=177;break}default:{}}if((ma|0)==177?(c[c[fa>>2]>>2]|0)!=1:0){cd(na,38899,ga);qa=2;Ra=oa;return qa|0}Gk(na,A,y,h,59952,S);if((d[v>>0]|0)>1?(ea=c[T>>2]|0,(ea|0)!=0):0){k=ea;while(1){if((c[k>>2]|0)==(h|0))break;k=c[k+12>>2]|0;if(!k){n=m;break p}}c[k>>2]=0;n=m}else n=m}else if((ma|0)==188)if(P){k=c[Y>>2]|0;if(k&64|0){c[ba>>2]=s;Db(28,40267,ba);a[h>>0]=110;c[f>>2]=0;qa=1;Ra=oa;return qa|0}if(!(k&67108864)){m=c[h+8>>2]|0;r=a[m>>0]|0;q=d[208+(r&255)>>0]|0;k=q+-116|0;r=r<<24>>24==0;if(!(r|(k|0)!=0)){o=41806;p=m;do{p=p+1|0;o=o+1|0;qa=a[p>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(k|0)!=0))}if(k|0){k=q+-102|0;if(!(r|(k|0)!=0)){o=41811;do{m=m+1|0;o=o+1|0;qa=a[m>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(k|0)!=0))}if(k|0){m=0;o=0;k=40302;ma=202;break}}a[h>>0]=-97;qa=1;Ra=oa;return qa|0}else{m=0;o=0;k=40302;ma=202}}else{m=0;o=0;k=40302;ma=202}else if((ma|0)==201)if((o|0)==1){q=m;p=1;o=B;ma=208}else{k=40317;ma=202}while(0);if((ma|0)==202){do if(U)if(V){c[ia>>2]=k;c[ia+4>>2]=t;c[ia+8>>2]=s;cd(na,37010,ia);break}else{c[ja>>2]=k;c[ja+4>>2]=s;cd(na,37020,ja);break}else{c[ha>>2]=k;c[ha+4>>2]=u;c[ha+8>>2]=t;c[ha+12>>2]=s;cd(na,40339,ha)}while(0);a[na+17>>0]=1;q=i+20|0;c[q>>2]=(c[q>>2]|0)+1;q=m;p=o;o=B;ma=208}if((ma|0)==208){qa=b[_>>1]|0;m=qa<<16>>16;k=C+56|0;if(n&qa<<16>>16>-1){ia=cw(1,0,((m|0)<63?m:63)|0)|0;ja=L()|0;ha=k;ja=c[ha+4>>2]|ja;qa=k;c[qa>>2]=c[ha>>2]|ia;c[qa+4>>2]=ja}k=h+12|0;m=c[k>>2]|0;if(m|0)ni(W,m);c[k>>2]=0;k=h+16|0;m=c[k>>2]|0;if(m|0)ni(W,m);c[k>>2]=0;a[h>>0]=o;c[Y>>2]=c[Y>>2]|8388608;if((p|0)==1)n=q;else{qa=2;Ra=oa;return qa|0}}q:do if((c[Y>>2]&4194304|0)==0?(la=c[n+4>>2]|0,ka=c[X>>2]|0,!((l|0)==0|(c[ka+312>>2]|0)==0)):0){k=c[ka+16>>2]|0;m=0;while(1)if((c[k+(m<<4)+12>>2]|0)==(l|0))break;else m=m+1|0;if((a[h>>0]|0)!=77){l=c[la>>2]|0;if((l|0)<=0)break;k=c[Z>>2]|0;j=0;while(1){if((k|0)==(c[la+8+(j*72|0)+40>>2]|0))break;j=j+1|0;if((j|0)>=(l|0))break q}j=la+8+(j*72|0)+16|0}l=c[j>>2]|0;k=b[_>>1]|0;j=k<<16>>16;if(l|0){if(k<<16>>16<=-1){j=b[l+40>>1]|0;if(j<<16>>16>-1){j=j<<16>>16;ma=229}else j=40352}else ma=229;if((ma|0)==229)j=c[(c[l+4>>2]|0)+(j<<4)>>2]|0;if((Ik(na,c[l>>2]|0,j,m)|0)==2)a[h>>0]=114}}while(0);qa=i+16|0;c[qa>>2]=(c[qa>>2]|0)+1;if((n|0)==(i|0)){qa=1;Ra=oa;return qa|0}do{i=c[i+12>>2]|0;qa=i+16|0;c[qa>>2]=(c[qa>>2]|0)+1}while((i|0)!=(n|0));i=1;Ra=oa;return i|0}else if((ma|0)==385?(a[(c[na>>2]|0)+81>>0]|0)==0:0){j=c[h+12>>2]|0;i=a[j>>0]|0;if(i<<24>>24==-88)i=a[j+38>>0]|0;switch(i<<24>>24){case -87:{i=j+20|0;ma=391;break}case -125:{i=c[j+20>>2]|0;ma=391;break}default:l=1}if((ma|0)==391)l=c[c[i>>2]>>2]|0;r:do if((a[h>>0]|0)==48){k=c[h+20>>2]|0;j=c[k+4>>2]|0;i=a[j>>0]|0;if(i<<24>>24==-88)i=a[j+38>>0]|0;switch(i<<24>>24){case -87:{i=j+20|0;ma=398;break}case -125:{i=c[j+20>>2]|0;ma=398;break}default:i=1}if((ma|0)==398)i=c[c[i>>2]>>2]|0;if((i|0)==(l|0)){j=c[k+24>>2]|0;i=a[j>>0]|0;if(i<<24>>24==-88)i=a[j+38>>0]|0;switch(i<<24>>24){case -87:{i=c[c[j+20>>2]>>2]|0;break r}case -125:{i=c[c[c[j+20>>2]>>2]>>2]|0;break r}default:{i=1;break r}}}}else{j=c[h+16>>2]|0;i=a[j>>0]|0;if(i<<24>>24==-88)i=a[j+38>>0]|0;switch(i<<24>>24){case -87:{i=c[c[j+20>>2]>>2]|0;break r}case -125:{i=c[c[c[j+20>>2]>>2]>>2]|0;break r}default:{i=1;break r}}}while(0);if((l|0)!=(i|0))cd(na,38899,r)}if(c[na+36>>2]|0){qa=2;Ra=oa;return qa|0}qa=(a[(c[na>>2]|0)+81>>0]|0)==0?0:2;Ra=oa;return qa|0}function Ek(f,g){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,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,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;fb=Ra;Ra=Ra+240|0;eb=fb+120|0;bb=fb+112|0;ab=fb+96|0;Sa=fb+88|0;Pa=fb+80|0;La=fb+72|0;Ka=fb+64|0;Ja=fb+56|0;Ia=fb+48|0;Ha=fb+40|0;Oa=fb+32|0;Na=fb+24|0;Ma=fb+16|0;Ga=fb+8|0;Fa=fb;Xa=fb+200|0;Ya=fb+168|0;Za=fb+160|0;qa=fb+128|0;h=c[g+8>>2]|0;if(h&4|0){eb=1;Ra=fb;return eb|0}ma=c[f+24>>2]|0;db=c[f>>2]|0;f=c[db>>2]|0;if(!(h&64)){Kk(db,g,ma);if(c[db+36>>2]|0){eb=2;Ra=fb;return eb|0}eb=(a[f+81>>0]|0)==0?1:2;Ra=fb;return eb|0}Qa=g+52|0;oa=(c[Qa>>2]|0)!=0;W=oa&1;X=qa+28|0;Y=qa+24|0;Z=Xa+4|0;_=Xa+8|0;$=Xa+12|0;aa=Xa+24|0;ba=qa+20|0;ca=qa+4|0;da=qa+12|0;ea=db+240|0;fa=(ma|0)==0;ga=Xa+4|0;ha=Xa+8|0;ia=Xa+12|0;ja=Xa+24|0;ka=db+36|0;s=f+81|0;t=Xa+4|0;u=Xa+8|0;v=Xa+12|0;w=Xa+24|0;x=qa+8|0;y=Xa+4|0;z=Xa+8|0;A=Xa+12|0;B=Xa+24|0;C=Xa+4|0;D=Xa+8|0;E=Xa+12|0;F=Xa+24|0;G=Xa+4|0;H=Xa+8|0;I=Xa+12|0;J=Xa+24|0;K=db+200|0;L=Xa+4|0;M=Xa+8|0;N=Xa+12|0;O=Xa+24|0;P=Xa+4|0;Q=Xa+8|0;R=Xa+12|0;S=Xa+24|0;T=qa+4|0;U=db;V=db+208|0;q=g;r=0;f=h;a:while(1){p=q+8|0;c[p>>2]=f|4;c[T>>2]=0;c[T+4>>2]=0;c[T+8>>2]=0;c[T+12>>2]=0;c[T+16>>2]=0;c[T+20>>2]=0;c[qa>>2]=db;c[X>>2]=q;f=c[q+60>>2]|0;if(f){b[Y>>1]=0;c[Xa>>2]=U;c[Z>>2]=125;c[_>>2]=126;c[$>>2]=0;c[aa>>2]=qa;h=f+24|0;o=(c[V>>2]|0)+(c[h>>2]|0)|0;c[V>>2]=o;Ea=c[(c[db>>2]|0)+120>>2]|0;if((Ea|0)<(o|0)){K=9;break}_j(Xa,f)|0;i=c[Xa>>2]|0;o=i+208|0;c[o>>2]=(c[o>>2]|0)-(c[h>>2]|0);o=f+4|0;c[o>>2]=c[o>>2]|b[Y>>1]&-32752&65535;if((c[ba>>2]|0)>0){K=11;break}if((c[i+36>>2]|0)>=1){cb=2;K=206;break}}o=q+32|0;h=c[o>>2]|0;if(c[p>>2]&65536|0){n=q+48|0;c[(c[h+28>>2]|0)+48>>2]=c[n>>2];c[n>>2]=0}f=h;b:do if((c[h>>2]|0)>0){if(fa){k=0;while(1){j=c[h+8+(k*72|0)+20>>2]|0;if((j|0)!=0?(c[j+8>>2]&4|0)==0:0){f=c[ea>>2]|0;i=c[h+8+(k*72|0)+8>>2]|0;if(i|0)c[ea>>2]=i;c[ga>>2]=125;c[ha>>2]=126;c[ia>>2]=0;c[Xa>>2]=db;c[ja>>2]=0;$j(Xa,j)|0;c[ea>>2]=f;if(c[ka>>2]|0){cb=2;K=206;break a}if(a[s>>0]|0){cb=2;K=206;break a}f=h+8+(k*72|0)+37|0;a[f>>0]=a[f>>0]&-9;f=c[o>>2]|0;h=f}k=k+1|0;if((k|0)>=(c[h>>2]|0))break b}}l=0;k=h;while(1){j=c[k+8+(l*72|0)+20>>2]|0;if((j|0)!=0?(c[j+8>>2]&4|0)==0:0){i=c[ea>>2]|0;f=0;h=ma;do{f=(c[h+16>>2]|0)+f|0;h=c[h+12>>2]|0}while((h|0)!=0);h=c[k+8+(l*72|0)+8>>2]|0;if(h|0)c[ea>>2]=h;c[ga>>2]=125;c[ha>>2]=126;c[ia>>2]=0;c[Xa>>2]=db;c[ja>>2]=ma;$j(Xa,j)|0;c[ea>>2]=i;if(c[ka>>2]|0){cb=2;K=206;break a}if(a[s>>0]|0){cb=2;K=206;break a}h=ma;do{f=f-(c[h+16>>2]|0)|0;h=c[h+12>>2]|0}while((h|0)!=0);h=k+8+(l*72|0)+37|0;a[h>>0]=a[h>>0]&-9|((f|0)!=0&1)<<3&255;f=c[o>>2]|0;h=f}else h=k;l=l+1|0;if((l|0)>=(c[h>>2]|0))break;else k=h}}while(0);b[Y>>1]=16385;c[ca>>2]=f;c[da>>2]=ma;l=c[q>>2]|0;if((l|0)!=0?(c[l>>2]|0)>0:0){k=0;f=16385;do{i=c[l+4+(k*20|0)>>2]|0;if(i){f=f&65535;b[Y>>1]=f&28655;ra=c[qa>>2]|0;c[Xa>>2]=ra;c[t>>2]=125;c[u>>2]=126;c[v>>2]=0;c[w>>2]=qa;h=i+24|0;sa=ra;m=sa+208|0;n=(c[m>>2]|0)+(c[h>>2]|0)|0;c[m>>2]=n;sa=c[(c[sa>>2]|0)+120>>2]|0;if((sa|0)<(n|0)){K=46;break a}_j(Xa,i)|0;j=c[Xa>>2]|0;n=j+208|0;c[n>>2]=(c[n>>2]|0)-(c[h>>2]|0);n=b[Y>>1]|0;m=i+4|0;c[m>>2]=c[m>>2]|n&-32752&65535;f=(f&36880|n&65535)&65535;b[Y>>1]=f;if((c[ba>>2]|0)>0){K=48;break a}if((c[j+36>>2]|0)>=1){cb=2;K=206;break a}}k=k+1|0}while((k|0)<(c[l>>2]|0))}else f=16385;h=f&-16385;b[Y>>1]=h;n=c[q+40>>2]|0;m=(n|0)!=0;if(!m?(na=h&65535,(na&16|0)==0):0){h=na&49150;b[Y>>1]=h}else c[p>>2]=c[p>>2]|(f&4096|8)&65535;j=c[q+44>>2]|0;i=(j|0)==0;if(!(m|i)){K=55;break}c[x>>2]=c[q>>2];f=h|128;b[Y>>1]=f;if(!i){f=f&65535;b[Y>>1]=f&28655;ta=c[qa>>2]|0;c[Xa>>2]=ta;c[y>>2]=125;c[z>>2]=126;c[A>>2]=0;c[B>>2]=qa;h=j+24|0;ua=ta;k=ua+208|0;l=(c[k>>2]|0)+(c[h>>2]|0)|0;c[k>>2]=l;ua=c[(c[ua>>2]|0)+120>>2]|0;if((ua|0)<(l|0)){K=59;break}_j(Xa,j)|0;i=c[Xa>>2]|0;l=i+208|0;c[l>>2]=(c[l>>2]|0)-(c[h>>2]|0);l=b[Y>>1]|0;k=j+4|0;c[k>>2]=c[k>>2]|l&-32752&65535;f=(f&36880|l&65535)&65535;b[Y>>1]=f;if((c[ba>>2]|0)>0){K=61;break}if((c[i+36>>2]|0)>=1){cb=2;K=206;break}}i=c[q+36>>2]|0;if(i){f=f&65535;b[Y>>1]=f&28655;va=c[qa>>2]|0;c[Xa>>2]=va;c[C>>2]=125;c[D>>2]=126;c[E>>2]=0;c[F>>2]=qa;h=i+24|0;wa=va;k=wa+208|0;l=(c[k>>2]|0)+(c[h>>2]|0)|0;c[k>>2]=l;wa=c[(c[wa>>2]|0)+120>>2]|0;if((wa|0)<(l|0)){K=66;break}_j(Xa,i)|0;j=c[Xa>>2]|0;l=j+208|0;c[l>>2]=(c[l>>2]|0)-(c[h>>2]|0);l=b[Y>>1]|0;k=i+4|0;c[k>>2]=c[k>>2]|l&-32752&65535;f=(f&36880|l&65535)&65535;b[Y>>1]=f;if((c[ba>>2]|0)>0){K=68;break}if((c[j+36>>2]|0)>=1){cb=2;K=206;break}}h=c[o>>2]|0;if((c[h>>2]|0)>0){l=0;do{if(((a[h+8+(l*72|0)+37>>0]&4)!=0?(pa=c[h+8+(l*72|0)+64>>2]|0,(pa|0)!=0):0)?(c[pa>>2]|0)>0:0){k=0;do{i=c[pa+4+(k*20|0)>>2]|0;if(i){f=f&65535;b[Y>>1]=f&28655;xa=c[qa>>2]|0;c[Xa>>2]=xa;c[G>>2]=125;c[H>>2]=126;c[I>>2]=0;c[J>>2]=qa;h=i+24|0;ya=xa;gb=ya+208|0;j=(c[gb>>2]|0)+(c[h>>2]|0)|0;c[gb>>2]=j;ya=c[(c[ya>>2]|0)+120>>2]|0;if((ya|0)<(j|0)){K=80;break a}_j(Xa,i)|0;j=c[Xa>>2]|0;gb=j+208|0;c[gb>>2]=(c[gb>>2]|0)-(c[h>>2]|0);gb=b[Y>>1]|0;i=i+4|0;c[i>>2]=c[i>>2]|gb&-32752&65535;f=(f&36880|gb&65535)&65535;b[Y>>1]=f;if((c[ba>>2]|0)>0){K=82;break a}if((c[j+36>>2]|0)>=1){cb=2;K=206;break a}}k=k+1|0}while((k|0)<(c[pa>>2]|0))}l=l+1|0;h=c[o>>2]|0}while((l|0)<(c[h>>2]|0))}c[da>>2]=0;b[Y>>1]=f|16385;if(c[p>>2]&65536|0){gb=(c[h+28>>2]|0)+48|0;c[q+48>>2]=c[gb>>2];c[gb>>2]=0}if(r>>>0>=W>>>0?Lk(qa,q,c[q+48>>2]|0,40659)|0:0){cb=2;K=206;break}if(a[s>>0]|0){cb=2;K=206;break}b[Y>>1]=b[Y>>1]&-16385;if(m){if(Lk(qa,q,n,40665)|0){cb=2;K=206;break}if(a[s>>0]|0){cb=2;K=206;break}i=c[n>>2]|0;if((i|0)>0){f=n+4|0;h=0;while(1){if(c[(c[f>>2]|0)+4>>2]&16|0){K=96;break a}h=h+1|0;if((h|0)>=(i|0))break;else f=f+20|0}}}if((d[K>>0]|0)>1?(la=c[q+72>>2]|0,la|0):0){m=la;do{h=c[m+12>>2]|0;do if(h|0){if((c[h>>2]|0)<=0)break;f=0;do{i=c[h+4+(f*20|0)>>2]|0;if(i){j=e[Y>>1]|0;b[Y>>1]=j&28655;za=c[qa>>2]|0;c[Xa>>2]=za;c[L>>2]=125;c[M>>2]=126;c[N>>2]=0;c[O>>2]=qa;k=i+24|0;Aa=za;p=Aa+208|0;gb=(c[p>>2]|0)+(c[k>>2]|0)|0;c[p>>2]=gb;Aa=c[(c[Aa>>2]|0)+120>>2]|0;if((Aa|0)<(gb|0)){K=108;break a}_j(Xa,i)|0;l=c[Xa>>2]|0;gb=l+208|0;c[gb>>2]=(c[gb>>2]|0)-(c[k>>2]|0);gb=b[Y>>1]|0;p=i+4|0;c[p>>2]=c[p>>2]|gb&-32752&65535;b[Y>>1]=j&36880|gb&65535;if((c[ba>>2]|0)>0){K=110;break a}if((c[l+36>>2]|0)>=1){cb=2;K=206;break a}}f=f+1|0}while((f|0)<(c[h>>2]|0))}while(0);h=c[m+8>>2]|0;do if(h|0){if((c[h>>2]|0)<=0)break;f=0;do{i=c[h+4+(f*20|0)>>2]|0;if(i){j=e[Y>>1]|0;b[Y>>1]=j&28655;Ba=c[qa>>2]|0;c[Xa>>2]=Ba;c[P>>2]=125;c[Q>>2]=126;c[R>>2]=0;c[S>>2]=qa;k=i+24|0;Ca=Ba;p=Ca+208|0;gb=(c[p>>2]|0)+(c[k>>2]|0)|0;c[p>>2]=gb;Ca=c[(c[Ca>>2]|0)+120>>2]|0;if((Ca|0)<(gb|0)){K=119;break a}_j(Xa,i)|0;l=c[Xa>>2]|0;gb=l+208|0;c[gb>>2]=(c[gb>>2]|0)-(c[k>>2]|0);gb=b[Y>>1]|0;p=i+4|0;c[p>>2]=c[p>>2]|gb&-32752&65535;b[Y>>1]=j&36880|gb&65535;if((c[ba>>2]|0)>0){K=121;break a}if((c[l+36>>2]|0)>=1){cb=2;K=206;break a}}f=f+1|0}while((f|0)<(c[h>>2]|0))}while(0);m=c[m+32>>2]|0}while((m|0)!=0)}Da=c[q+56>>2]|0;if(Da|0?(c[c[q>>2]>>2]|0)!=(c[c[Da>>2]>>2]|0):0){K=126;break}f=c[q+52>>2]|0;if(!f){K=135;break}q=f;r=r+1|0;f=c[f+8>>2]|0}switch(K|0){case 9:{c[Fa>>2]=Ea;cd(db,41637,Fa);K=11;break}case 46:{c[Ga>>2]=sa;cd(ra,41637,Ga);K=48;break}case 55:{cd(db,40615,Ma);gb=2;Ra=fb;return gb|0}case 59:{c[Na>>2]=ua;cd(ta,41637,Na);K=61;break}case 66:{c[Oa>>2]=wa;cd(va,41637,Oa);K=68;break}case 80:{c[Ha>>2]=ya;cd(xa,41637,Ha);K=82;break}case 96:{cd(db,40671,Ia);gb=2;Ra=fb;return gb|0}case 108:{c[Ja>>2]=Aa;cd(za,41637,Ja);K=110;break}case 119:{c[Ka>>2]=Ca;cd(Ba,41637,Ka);K=121;break}case 126:{if(c[Da+8>>2]&512|0){cd(db,41381,La);gb=2;Ra=fb;return gb|0}switch(a[Da+4>>0]|0){case -128:{f=41509;break}case -126:{f=41519;break}case -127:{f=41529;break}default:f=41536}c[Pa>>2]=f;cd(db,41427,Pa);gb=2;Ra=fb;return gb|0}case 135:{if(!oa){gb=1;Ra=fb;return gb|0}J=c[g+48>>2]|0;if(!J){gb=1;Ra=fb;return gb|0}I=c[db>>2]|0;i=c[J>>2]|0;if((i|0)>(c[I+116>>2]|0)){cd(db,41542,Sa);gb=2;Ra=fb;return gb|0}if((i|0)>0){f=0;do{gb=J+4+(f*20|0)+13|0;a[gb>>0]=a[gb>>0]&-2;f=f+1|0}while((f|0)!=(i|0))}c[g+56>>2]=0;h=c[Qa>>2]|0;if(!h)h=g;else{f=g;while(1){c[h+56>>2]=f;f=c[h+52>>2]|0;if(!f)break;else{gb=h;h=f;f=gb}}}t=J+4|0;u=db+200|0;v=Xa+4|0;w=I+81|0;x=Ya+12|0;y=Ya+4|0;z=Ya+8|0;A=Ya+24|0;B=Ya+20|0;C=db;D=Xa+4|0;E=Xa+8|0;F=Xa+12|0;G=Xa+24|0;H=db+208|0;f=i;c:while(1){s=c[h>>2]|0;if((f|0)<=0){cb=1;K=206;break}r=h+32|0;q=t;p=0;Va=0;while(1){c[Za>>2]=-1;o=q+13|0;d:do if(!(a[o>>0]&1)){f=c[q>>2]|0;e:do if(!f)f=0;else while(1){i=c[f+4>>2]|0;if(!(i&4096))break e;if(!(i&262144))f=f+12|0;else f=(c[f+20>>2]|0)+4|0;f=c[f>>2]|0;if(!f){f=0;break}}while(0);f:do if(!(uk(f,Za)|0)){g:do if((a[f>>0]|0)==59?(_a=c[f+8>>2]|0,$a=c[s>>2]|0,($a|0)>0):0){i=0;while(1){k=c[s+4+(i*20|0)+4>>2]|0;if(k|0){gb=a[k>>0]|0;j=(d[208+(gb&255)>>0]|0)-(d[208+(d[_a>>0]|0)>>0]|0)|0;if(!(gb<<24>>24==0|(j|0)!=0)){l=_a;do{k=k+1|0;l=l+1|0;gb=a[k>>0]|0;j=(d[208+(gb&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(gb<<24>>24==0|(j|0)!=0))}if(!j)break}i=i+1|0;if((i|0)>=($a|0))break g}i=i+1|0;c[Za>>2]=i;break f}while(0);c[Za>>2]=0;if((d[u>>0]|0)<=1)if(!f)n=0;else n=dk(I,f,0,0)|0;else n=f;if(!(a[w>>0]|0)){m=c[h>>2]|0;c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;c[x+16>>2]=0;c[Ya>>2]=db;c[y>>2]=c[r>>2];c[z>>2]=m;b[A>>1]=129;c[B>>2]=0;i=c[db>>2]|0;j=i+85|0;k=a[j>>0]|0;a[j>>0]=1;h:do if(!n){a[j>>0]=k;K=180}else{b[A>>1]=129;c[Xa>>2]=C;c[D>>2]=125;c[E>>2]=126;c[F>>2]=0;c[G>>2]=Ya;l=n+24|0;gb=(c[H>>2]|0)+(c[l>>2]|0)|0;c[H>>2]=gb;i=c[i+120>>2]|0;do if((i|0)>=(gb|0)){_j(Xa,n)|0;i=c[Xa>>2]|0;gb=i+208|0;c[gb>>2]=(c[gb>>2]|0)-(c[l>>2]|0);gb=n+4|0;c[gb>>2]=c[gb>>2]|b[A>>1]&-32752&65535;if((c[B>>2]|0)>0)break;gb=(c[i+36>>2]|0)<1;a[j>>0]=k;if(gb){K=180;break h}else{Ua=0;break h}}else{c[bb>>2]=i;cd(db,41637,bb)}while(0);a[j>>0]=k;Ua=0}while(0);i:do if((K|0)==180){K=0;if((c[m>>2]|0)<=0){Ua=0;break}i=0;while(1){gb=i;i=i+1|0;if((bk(0,c[m+4+(gb*20|0)>>2]|0,n,-1)|0)<2){Ua=i;break i}if((i|0)>=(c[m>>2]|0)){Ua=0;break}}}while(0);c[Za>>2]=Ua;i=Ua}else i=0;if(!((n|0)==0|(d[u>>0]|0)>1))ni(I,n);if((i|0)<=0){f=1;break d}}else{i=c[Za>>2]|0;Wa=c[s>>2]|0;if((i|0)<1|(i|0)>(Wa|0)){K=158;break c}}while(0);if((d[u>>0]|0)<=1){c[Xa>>2]=0;c[v>>2]=0;l=oj(I,147,Xa,0)|0;if(!l)break c;j=l+4|0;c[j>>2]=c[j>>2]|1024;c[l+8>>2]=i;j=c[q>>2]|0;if((j|0)==(f|0))j=q;else{while(1){k=c[j+12>>2]|0;if((a[k>>0]|0)==106)j=k;else break}j=j+12|0}c[j>>2]=l;if(f|0)ni(I,f);b[q+16>>1]=i}a[o>>0]=a[o>>0]|1;f=p}else f=p;while(0);i=Va+1|0;Ta=c[J>>2]|0;if((i|0)<(Ta|0)){q=q+20|0;p=f;Va=i}else break}h=c[h+56>>2]|0;if((f|0)!=0&(h|0)!=0)f=Ta;else{K=201;break}}if((K|0)==158){c[ab>>2]=Va+1;c[ab+4>>2]=40659;c[ab+8>>2]=Wa;cd(db,41294,ab)}else if((K|0)==201){if((Ta|0)<=0){gb=1;Ra=fb;return gb|0}f=0;while(1){gb=f;f=f+1|0;if(!(a[J+4+(gb*20|0)+13>>0]&1))break;if((f|0)>=(Ta|0)){cb=1;K=206;break}}if((K|0)==206){Ra=fb;return cb|0}c[eb>>2]=f;cd(db,41576,eb);gb=2;Ra=fb;return gb|0}else if((K|0)==206){Ra=fb;return cb|0}gb=2;Ra=fb;return gb|0}case 206:{Ra=fb;return cb|0}}if((K|0)==11){gb=2;Ra=fb;return gb|0}else if((K|0)==48){gb=2;Ra=fb;return gb|0}else if((K|0)==61){gb=2;Ra=fb;return gb|0}else if((K|0)==68){gb=2;Ra=fb;return gb|0}else if((K|0)==82){gb=2;Ra=fb;return gb|0}else if((K|0)==110){gb=2;Ra=fb;return gb|0}else if((K|0)==121){gb=2;Ra=fb;return gb|0}return 0}function Fk(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=0;a:while(1){switch(a[b+l>>0]|0){case 46:case 0:break a;default:{}}l=l+1|0}if(f|0){b:do if(l|0){h=b;k=f;i=l;while(1){g=a[h>>0]|0;if(!(g<<24>>24)){i=8;break}j=a[208+(g&255)>>0]|0;g=a[208+(d[k>>0]|0)>>0]|0;if(j<<24>>24!=g<<24>>24){i=10;break}if((i|0)>1){h=h+1|0;k=k+1|0;i=i+-1|0}else break b}if((i|0)==8){h=0;g=a[208+(d[k>>0]|0)>>0]|0}else if((i|0)==10)h=j&255;if((h|0)!=(g&255|0)){e=0;return e|0}}while(0);if(a[f+l>>0]|0){e=0;return e|0}}b=b+(l+1)|0;l=0;c:while(1){switch(a[b+l>>0]|0){case 46:case 0:break c;default:{}}l=l+1|0}if(e|0){d:do if(l|0){h=b;k=e;i=l;while(1){g=a[h>>0]|0;if(!(g<<24>>24)){i=21;break}j=a[208+(g&255)>>0]|0;g=a[208+(d[k>>0]|0)>>0]|0;if(j<<24>>24!=g<<24>>24){i=23;break}if((i|0)>1){h=h+1|0;k=k+1|0;i=i+-1|0}else break d}if((i|0)==21){h=0;g=a[208+(d[k>>0]|0)>>0]|0}else if((i|0)==23)h=j&255;if((h|0)!=(g&255|0)){e=0;return e|0}}while(0);if(a[e+l>>0]|0){e=0;return e|0}}if(c|0){h=b+(l+1)|0;e=a[h>>0]|0;g=(d[208+(e&255)>>0]|0)-(d[208+(d[c>>0]|0)>>0]|0)|0;if(!(e<<24>>24==0|(g|0)!=0))do{h=h+1|0;c=c+1|0;e=a[h>>0]|0;g=(d[208+(e&255)>>0]|0)-(d[208+(d[c>>0]|0)>>0]|0)|0}while(!(e<<24>>24==0|(g|0)!=0));if(g|0){e=0;return e|0}}e=1;return e|0}function Gk(b,d,f,g,h,i){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=Ra;Ra=Ra+32|0;k=p;d=c[d+4+(f*20|0)>>2]|0;m=c[b>>2]|0;if(!d){o=g+4|0;g=c[o>>2]|0;g=g|4194304;c[o>>2]=g;Ra=p;return}d=dk(m,d,0,0)|0;if(!d){o=g+4|0;g=c[o>>2]|0;g=g|4194304;c[o>>2]=g;Ra=p;return}if((i|0)>0&(a[h>>0]|0)!=71){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+4>>2]=140;c[k+24>>2]=i;_j(k,d)|0}if((a[g>>0]|0)==106){f=c[g+8>>2]|0;c[k>>2]=f;if(f){i=(Eu(f)|0)&1073741823;c[k+4>>2]=i;if((i|0)!=0?(j=oj(c[b>>2]|0,106,k,0)|0,(j|0)!=0):0){c[j+12>>2]=d;d=j+4|0;c[d>>2]=c[d>>2]|4352;d=j}}else c[k+4>>2]=0}j=g+4|0;c[j>>2]=c[j>>2]|134217728;ni(m,g);f=g;h=d;i=f+52|0;do{c[f>>2]=c[h>>2];f=f+4|0;h=h+4|0}while((f|0)<(i|0));if((c[j>>2]&1024|0)==0?(o=g+8|0,n=c[o>>2]|0,n|0):0){b=(Eu(n)|0)+1|0;a:do if(!m){k=Sv(b|0,0,-1,-1)|0;i=L()|0;if(!(i>>>0>0|(i|0)==0&k>>>0>2147483390)){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](b)|0;l=38;break}f=Wa[c[29356>>2]&127](b)|0;if((c[14985]|0)>>>0>>0)c[14985]=b;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){k=c[14978]|0;i=Tv(h|0,i|0,f|0,((f|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&i>>>0<=k>>>0)&1}f=Wa[c[29340>>2]&127](f)|0;if(f){h=Wa[c[29352>>2]&127](f)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0){c[14987]=h;l=39}else l=39}else f=0}else f=0}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0){f=0;break}}else{do if(!(0<0|(0==0?(e[m+276>>1]|0)>>>0>>0:0))){h=m+300|0;f=c[h>>2]|0;if(f|0){c[h>>2]=c[f>>2];l=m+284|0;c[l>>2]=(c[l>>2]|0)+1;l=38;break a}h=m+296|0;f=c[h>>2]|0;if(!f){f=m+292|0;break}else{c[h>>2]=c[f>>2];l=m+284|0;c[l>>2]=(c[l>>2]|0)+1;l=38;break a}}else f=m+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1}f=_d(m,b,0)|0;l=38}while(0);if((l|0)==38)if(!f)f=0;else l=39;if((l|0)==39)ew(f|0,n|0,b|0)|0;c[o>>2]=f;c[j>>2]=c[j>>2]|65536}if(m|0){if(c[m+480>>2]|0){Xd(m,d);o=g+4|0;g=c[o>>2]|0;g=g|4194304;c[o>>2]=g;Ra=p;return}o=d;if((c[m+304>>2]|0)>>>0<=o>>>0?(c[m+308>>2]|0)>>>0>o>>>0:0){o=m+300|0;c[d>>2]=c[o>>2];c[o>>2]=d;o=g+4|0;g=c[o>>2]|0;g=g|4194304;c[o>>2]=g;Ra=p;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);o=g+4|0;g=c[o>>2]|0;g=g|4194304;c[o>>2]=g;Ra=p;return}else{o=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);o=g+4|0;g=c[o>>2]|0;g=g|4194304;c[o>>2]=g;Ra=p;return}}function Hk(b,e){b=b|0;e=e|0;if((a[e>>0]|0)!=-93)return 0;e=e+38|0;a[e>>0]=(c[b+24>>2]|0)+(d[e>>0]|0);return 0}function Ik(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,l=0,m=0,n=0;n=Ra;Ra=Ra+32|0;i=n+24|0;m=n+16|0;l=n+8|0;h=n;j=c[b>>2]|0;k=c[(c[j+16>>2]|0)+(f<<4)>>2]|0;if(a[j+165>>0]|0){m=0;Ra=n;return m|0}g=$a[c[j+312>>2]&127](c[j+316>>2]|0,20,d,e,k,c[b+240>>2]|0)|0;if((g|0)==1){c[h>>2]=d;c[h+4>>2]=e;d=Bb(40358,h)|0;if(f|0?1:(c[j+20>>2]|0)>2){c[l>>2]=k;c[l+4>>2]=d;d=Bb(40364,l)|0}c[m>>2]=d;cd(b,40370,m);c[b+12>>2]=23;m=1;Ra=n;return m|0}else{if((g|2|0)==2){m=g;Ra=n;return m|0}cd(b,39231,i);c[b+12>>2]=1;m=g;Ra=n;return m|0}return 0}function Jk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;switch(a[d>>0]|0){case -92:case -94:break;default:return 0}e=c[b+24>>2]|0;f=c[e>>2]|0;a:do if((f|0)!=0?(g=c[f>>2]|0,(g|0)>0):0){d=c[d+28>>2]|0;b=0;while(1){if((d|0)==(c[f+8+(b*72|0)+40>>2]|0))break;b=b+1|0;if((b|0)>=(g|0)){h=8;break a}}b=e+4|0}else h=8;while(0);if((h|0)==8)b=e+8|0;c[b>>2]=(c[b>>2]|0)+1;return 0}function Kk(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=Ra;Ra=Ra+32|0;h=i;if(a[(c[b>>2]|0)+81>>0]|0){Ra=i;return}if(c[d+8>>2]&128|0){Ra=i;return}c[h+4>>2]=141;c[h>>2]=b;f=h+8|0;if(!(a[b+22>>0]|0))g=h+12|0;else{c[f>>2]=142;g=h+12|0;c[g>>2]=0;$j(h,d)|0}c[f>>2]=143;c[g>>2]=68;$j(h,d)|0;f=b+36|0;if(c[f>>2]|0){Ra=i;return}if(a[(c[b>>2]|0)+81>>0]|0){Ra=i;return}c[h+4>>2]=125;c[h+8>>2]=126;c[h+12>>2]=0;c[h>>2]=b;c[h+24>>2]=e;$j(h,d)|0;if(c[f>>2]|0){Ra=i;return}if(a[(c[b>>2]|0)+81>>0]|0){Ra=i;return}c[h+8>>2]=132;c[h+12>>2]=69;c[h+4>>2]=141;c[h>>2]=b;$j(h,d)|0;Ra=i;return}function Lk(e,f,g,h){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,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;H=Ra;Ra=Ra+80|0;F=H+24|0;B=H+16|0;A=H;x=H+40|0;y=H+36|0;if(!g){G=0;Ra=H;return G|0}z=c[c[f>>2]>>2]|0;E=c[e>>2]|0;k=g+4|0;j=c[g>>2]|0;a:do if((j|0)>0){t=x+4|0;u=x+24|0;i=0;s=k;b:while(1){r=c[s>>2]|0;q=(r|0)==0;c:do if(q)j=0;else{j=r;while(1){l=c[j+4>>2]|0;if(!(l&4096))break c;if(!(l&262144))j=j+12|0;else j=(c[j+20>>2]|0)+4|0;j=c[j>>2]|0;if(!j){j=0;break}}}while(0);d:do if((a[h>>0]|0)==71)G=23;else{p=c[f>>2]|0;e:do if((a[j>>0]|0)==59?(v=c[j+8>>2]|0,w=c[p>>2]|0,(w|0)>0):0){l=0;while(1){n=c[p+4+(l*20|0)+4>>2]|0;if(n|0){o=a[n>>0]|0;m=(d[208+(o&255)>>0]|0)-(d[208+(d[v>>0]|0)>>0]|0)|0;if(!(o<<24>>24==0|(m|0)!=0)){o=v;do{n=n+1|0;o=o+1|0;I=a[n>>0]|0;m=(d[208+(I&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(I<<24>>24==0|(m|0)!=0))}if(!m)break}l=l+1|0;if((l|0)>=(w|0))break e}I=l+1|0;c[y>>2]=I;b[s+16>>1]=I;break d}while(0);c[y>>2]=0;G=23}while(0);f:do if((G|0)==23){G=0;if(uk(j,y)|0){j=c[y>>2]|0;if((j+-1|0)>>>0>65534)break b;b[s+16>>1]=j;break}m=s+16|0;b[m>>1]=0;if(Ck(e,r)|0){C=1;G=50;break b}j=c[f>>2]|0;if((c[j>>2]|0)>0){if(q){l=0;while(1){I=l;l=l+1|0;if(!(bk(0,0,c[j+4+(I*20|0)>>2]|0,-1)|0))b[m>>1]=l;j=c[f>>2]|0;if((l|0)>=(c[j>>2]|0))break f}}l=0;do{if(!(bk(0,r,c[j+4+(l*20|0)>>2]|0,-1)|0)){c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;c[x+16>>2]=0;c[x+20>>2]=0;c[t>>2]=144;c[u>>2]=f;_j(x,r)|0;l=l+1|0;b[m>>1]=l}else l=l+1|0;j=c[f>>2]|0}while((l|0)<(c[j>>2]|0))}}while(0);i=i+1|0;j=c[g>>2]|0;if((i|0)<(j|0))s=s+20|0;else break a}if((G|0)==50){Ra=H;return C|0}c[A>>2]=i+1;c[A+4>>2]=h;c[A+8>>2]=z;cd(E,41294,A);I=1;Ra=H;return I|0}while(0);i=c[E>>2]|0;if(a[i+81>>0]|0){I=0;Ra=H;return I|0}if((j|0)>(c[i+116>>2]|0)){c[B>>2]=h;cd(E,41350,B);I=1;Ra=H;return I|0}m=c[f>>2]|0;if((j|0)<=0){I=0;Ra=H;return I|0}l=0;while(1){i=b[k+16>>1]|0;if(i<<16>>16){i=i&65535;D=c[m>>2]|0;if((D|0)<(i|0))break;Gk(E,m,i+-1|0,c[k>>2]|0,h,0);j=c[g>>2]|0}i=l+1|0;if((i|0)<(j|0)){l=i;k=k+20|0}else{C=0;G=50;break}}if((G|0)==50){Ra=H;return C|0}c[F>>2]=l+1;c[F+4>>2]=h;c[F+8>>2]=D;cd(E,41294,F);I=1;Ra=H;return I|0}function Mk(a,b){a=a|0;b=b|0;return 0}function Nk(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=Ra;Ra=Ra+16|0;n=p+8|0;m=p;o=d+52|0;if(!(c[o>>2]|0)){o=0;Ra=p;return o|0}k=c[d+48>>2]|0;if(!k){o=0;Ra=p;return o|0}f=d;a:while(1){switch(a[f+4>>0]|0){case -125:case -128:break;default:break a}f=c[f+52>>2]|0;if(!f){j=0;l=36;break}}if((l|0)==36){Ra=p;return j|0}f=c[k>>2]|0;if((f|0)<=0){o=0;Ra=p;return o|0}while(1){i=f;f=f+-1|0;if(c[(c[k+4+(f*20|0)>>2]|0)+4>>2]&256|0)break;if((i|0)<=1){j=0;l=36;break}}if((l|0)==36){Ra=p;return j|0}b=c[b>>2]|0;k=c[b>>2]|0;b:do if(!k){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](76)|0;l=33;break}f=Wa[c[29356>>2]&127](76)|0;if((c[14985]|0)>>>0<76)c[14985]=76;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){j=c[14978]|0;i=Tv(h|0,i|0,f|0,((f|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&i>>>0<=j>>>0)&1}h=Wa[c[29340>>2]&127](f)|0;if(!h){o=2;Ra=p;return o|0}f=Wa[c[29352>>2]&127](h)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0)c[14987]=f}else{if(c[k+272>>2]|0){if(a[k+81>>0]|0){o=2;Ra=p;return o|0}}else{do if((e[k+276>>1]|0)>=76){f=k+300|0;g=c[f>>2]|0;if(g|0){c[f>>2]=c[g>>2];l=k+284|0;c[l>>2]=(c[l>>2]|0)+1;l=33;break b}f=k+296|0;g=c[f>>2]|0;if(!g){f=k+292|0;break}else{c[f>>2]=c[g>>2];l=k+284|0;c[l>>2]=(c[l>>2]|0)+1;l=33;break b}}else f=k+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1}g=_d(k,76,0)|0;l=33}while(0);if((l|0)==33)if(!g){o=2;Ra=p;return o|0}else h=g;i=h;j=i+76|0;do{a[i>>0]=0;i=i+1|0}while((i|0)<(j|0));f=m;c[f>>2]=0;c[f+4>>2]=0;f=lj(b,0,0,0,m,h,0,0)|0;if(!f){o=2;Ra=p;return o|0}i=h;g=d;j=i+76|0;do{c[i>>2]=c[g>>2];i=i+4|0;g=g+4|0}while((i|0)<(j|0));c[d+32>>2]=f;c[n>>2]=0;c[n+4>>2]=0;n=oj(k,172,n,0)|0;n=nj(c[b>>2]|0,0,n)|0;c[d>>2]=n;a[d+4>>0]=-125;c[d+36>>2]=0;c[h+40>>2]=0;c[h+44>>2]=0;c[h+48>>2]=0;c[o>>2]=0;c[d+56>>2]=0;c[d+64>>2]=0;o=d+8|0;c[o>>2]=c[o>>2]&-65793|65536;c[(c[h+52>>2]|0)+56>>2]=h;c[h+60>>2]=0;o=0;Ra=p;return o|0}function Ok(f,g){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,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,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;qa=Ra;Ra=Ra+144|0;pa=qa+128|0;la=qa+120|0;ka=qa+112|0;ja=qa+96|0;ia=qa+88|0;P=qa+80|0;O=qa+72|0;N=qa+64|0;I=qa+56|0;H=qa+48|0;G=qa+40|0;K=qa+24|0;J=qa+16|0;F=qa+8|0;E=qa;ga=qa+136|0;ma=c[f>>2]|0;na=c[ma>>2]|0;oa=g+8|0;h=c[oa>>2]|0;c[oa>>2]=h|64;ha=na+81|0;if(a[ha>>0]|0){pa=2;Ra=qa;return pa|0}if(h&64|0){pa=1;Ra=qa;return pa|0}A=g+32|0;ea=c[A>>2]|0;fa=c[g>>2]|0;h=c[g+64>>2]|0;if(h|0){da=ma+264|0;c[h+4>>2]=c[da>>2];c[da>>2]=h}Qk(ma,ea);da=ea+8|0;a:do if((c[ea>>2]|0)>0){y=0;z=da;b:while(1){x=z+37|0;q=a[x>>0]|0;do if(!(q&32)){u=c[f>>2]|0;s=c[u>>2]|0;v=u+264|0;h=c[v>>2]|0;w=z+4|0;c:do if((c[w>>2]|0)==0?(D=c[z+8>>2]|0,!((h|0)==0|(D|0)==0)):0){d:while(1){o=c[h>>2]|0;e:do if((o|0)>0){ba=a[D>>0]|0;p=a[208+(ba&255)>>0]|0;if(!(ba<<24>>24)){i=0;while(1){j=h+8+(i<<4)|0;k=c[j>>2]|0;i=i+1|0;if(p<<24>>24==(a[208+(d[k>>0]|0)>>0]|0)){m=j;j=k;break d}if((i|0)>=(o|0))break e}}l=0;do{m=h+8+(l<<4)|0;j=c[m>>2]|0;if(p<<24>>24==(a[208+(d[j>>0]|0)>>0]|0)){i=j;k=D;do{k=k+1|0;i=i+1|0;ba=a[k>>0]|0;n=(d[208+(ba&255)>>0]|0)-(d[208+(d[i>>0]|0)>>0]|0)|0}while(!(ba<<24>>24==0|(n|0)!=0));if(!n)break d}l=l+1|0}while((l|0)<(o|0))}while(0);h=c[h+4>>2]|0;if(!h)break c}t=m+12|0;i=c[t>>2]|0;if(i|0){ca=24;break b}if(q&4){ca=26;break b}l=(s|0)==0;f:do if(l){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](80)|0;ca=50;break}i=Wa[c[29356>>2]&127](80)|0;if((c[14985]|0)>>>0<80)c[14985]=80;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){ba=c[14978]|0;aa=Tv(j|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;$=L()|0;c[14768]=(($|0)<0|($|0)==0&aa>>>0<=ba>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){ca=51;break b}j=Wa[c[29352>>2]&127](i)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0<=(c[14987]|0)>>>0)break;c[14987]=j}else{if(c[s+272>>2]|0){if(a[s+81>>0]|0){ca=51;break b}}else{do if((e[s+276>>1]|0)>=80){j=s+300|0;i=c[j>>2]|0;if(i|0){c[j>>2]=c[i>>2];ca=s+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=50;break f}j=s+296|0;i=c[j>>2]|0;if(!i){i=s+292|0;break}else{c[j>>2]=c[i>>2];ca=s+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=50;break f}}else i=s+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(s,80,0)|0;ca=50}while(0);if((ca|0)==50){ca=0;if(!i){ca=51;break b}}o=i;p=o+80|0;do{a[o>>0]=0;o=o+1|0}while((o|0)<(p|0));c[z+16>>2]=i;r=i+32|0;c[r>>2]=1;n=c[m>>2]|0;g:do if(!n)j=0;else{o=(Eu(n)|0)+1|0;h:do if(l){ba=Sv(o|0,0,-1,-1)|0;aa=L()|0;if(aa>>>0>0|(aa|0)==0&ba>>>0>2147483390){j=0;break g}if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](o)|0;ca=77;break}j=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){ba=c[14978]|0;aa=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;$=L()|0;c[14768]=(($|0)<0|($|0)==0&aa>>>0<=ba>>>0)&1}j=Wa[c[29340>>2]&127](j)|0;if(!j){j=0;break g}k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0<=(c[14987]|0)>>>0)break;c[14987]=k}else{if(c[s+272>>2]|0){if(a[s+81>>0]|0){j=0;break g}}else{do if(!(0<0|(0==0?(e[s+276>>1]|0)>>>0>>0:0))){k=s+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];ca=s+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=77;break h}k=s+296|0;j=c[k>>2]|0;if(!j){j=s+292|0;break}else{c[k>>2]=c[j>>2];ca=s+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=77;break h}}else j=s+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(s,o,0)|0;ca=77}while(0);if((ca|0)==77){ca=0;if(!j){j=0;break}}ew(j|0,n|0,o|0)|0}while(0);c[i>>2]=j;b[i+40>>1]=-1;b[i+44>>1]=200;q=i+36|0;c[q>>2]=c[q>>2]|66;q=fk(s,c[m+8>>2]|0,0)|0;c[z+20>>2]=q;if(a[s+81>>0]|0){h=2;ca=421;break b}p=((a[q+4>>0]|0)+-127&255)<2;if(p?(B=c[q+32>>2]|0,C=c[B>>2]|0,(C|0)>0):0){o=q+8|0;n=0;do{do if(!(c[B+8+(n*72|0)+4>>2]|0)){k=c[B+8+(n*72|0)+8>>2]|0;if(!k)break;l=c[m>>2]|0;ba=a[k>>0]|0;j=(d[208+(ba&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0;if(!(ba<<24>>24==0|(j|0)!=0))do{k=k+1|0;l=l+1|0;ba=a[k>>0]|0;j=(d[208+(ba&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(ba<<24>>24==0|(j|0)!=0));if(j|0)break;c[B+8+(n*72|0)+16>>2]=i;ba=B+8+(n*72|0)+37|0;a[ba>>0]=a[ba>>0]|32;c[r>>2]=(c[r>>2]|0)+1;c[o>>2]=c[o>>2]|8192}while(0);n=n+1|0}while((n|0)!=(C|0))}if((c[r>>2]|0)>>>0>2){ca=92;break b}c[t>>2]=40892;l=c[v>>2]|0;c[v>>2]=h;if(p){aa=c[q+52>>2]|0;ba=aa+64|0;c[ba>>2]=c[q+64>>2];$j(f,aa)|0;c[ba>>2]=0}else $j(f,q)|0;c[v>>2]=h;h=q;while(1){j=c[h+52>>2]|0;if(!j)break;else h=j}h=c[h>>2]|0;k=c[m+4>>2]|0;do if(k){if(!h){h=k;break}h=c[h>>2]|0;j=c[k>>2]|0;if((h|0)==(j|0))h=k;else{ca=101;break b}}while(0);Tk(c[u>>2]|0,h,i+42|0,i+4|0);if(p){c[t>>2]=(c[q+8>>2]&8192|0)==0?40987:40953;$j(f,q)|0}c[t>>2]=0;c[v>>2]=l}while(0);l=z+16|0;h=c[l>>2]|0;if(!h){k=c[z+8>>2]|0;do if(!k){if($j(f,c[z+20>>2]|0)|0){h=2;ca=421;break b}if(Rk(ma,z)|0){h=2;ca=421;break b}}else{j=c[z>>2]|0;if(!j)h=w;else{i=c[(c[ma>>2]|0)+16>>2]|0;h=0;while(1)if((c[i+(h<<4)+12>>2]|0)==(j|0))break;else h=h+1|0;h=i+(h<<4)|0}h=bd(ma,0,k,c[h>>2]|0)|0;c[l>>2]=h;if(!h){h=2;ca=421;break b}i=h+32|0;j=c[i>>2]|0;if(j>>>0>65534){ca=115;break b}c[i>>2]=j+1;if(!(c[h+56>>2]|0)){if(a[x>>0]&4){ca=118;break b}if(!(c[h+12>>2]|0))break}if(Sk(ma,h)|0){h=2;ca=421;break b}$=fk(na,c[h+12>>2]|0,0)|0;c[z+20>>2]=$;ba=h+42|0;aa=b[ba>>1]|0;b[ba>>1]=-1;$j(f,$)|0;b[ba>>1]=aa}while(0);h=c[l>>2]|0;if(!h)break}if(a[x>>0]&2){m=c[z+64>>2]|0;h=c[h+8>>2]|0;if(!h){ca=132;break b}l=d[208+(d[m>>0]|0)>>0]|0;while(1){j=c[h>>2]|0;ba=a[j>>0]|0;i=(d[208+(ba&255)>>0]|0)-l|0;if(!(ba<<24>>24==0|(i|0)!=0)){k=m;do{j=j+1|0;k=k+1|0;ba=a[j>>0]|0;i=(d[208+(ba&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(ba<<24>>24==0|(i|0)!=0))}if(!i)break;h=c[h+20>>2]|0;if(!h){ca=132;break b}}c[z+68>>2]=h}}while(0);y=y+1|0;if((y|0)>=(c[ea>>2]|0))break a;else z=z+72|0}if((ca|0)==24){c[E>>2]=j;cd(u,i,E);pa=2;Ra=qa;return pa|0}else if((ca|0)==26){c[F>>2]=D;cd(u,41054,F);pa=2;Ra=qa;return pa|0}else if((ca|0)==51){c[z+16>>2]=0;pa=2;Ra=qa;return pa|0}else if((ca|0)==92){c[J>>2]=c[m>>2];cd(u,40849,J);pa=2;Ra=qa;return pa|0}else if((ca|0)==101){c[K>>2]=c[m>>2];c[K+4>>2]=h;c[K+8>>2]=j;cd(u,40915,K);c[v>>2]=l;pa=2;Ra=qa;return pa|0}else if((ca|0)==115){c[G>>2]=c[h>>2];cd(ma,40730,G);c[l>>2]=0;pa=2;Ra=qa;return pa|0}else if((ca|0)==118){c[H>>2]=c[z+8>>2];cd(ma,41054,H);pa=2;Ra=qa;return pa|0}else if((ca|0)==132){c[I>>2]=m;c[I+4>>2]=0;cd(ma,41107,I);a[ma+17>>0]=1;pa=2;Ra=qa;return pa|0}else if((ca|0)==421){Ra=qa;return h|0}}while(0);if(a[ha>>0]|0){pa=2;Ra=qa;return pa|0}G=c[A>>2]|0;i:do if((c[G>>2]|0)>1){H=g+36|0;D=0;E=G+8|0;F=G+80|0;j:while(1){B=c[F+16>>2]|0;if(!((B|0)==0|(c[E+16>>2]|0)==0)){ba=d[F+36>>0]|0;C=ba&32;A=(C|0)==0;f=F+44|0;if(ba&4){if(c[f>>2]|0){ca=142;break}i=F+48|0;if(c[i>>2]|0){ca=142;break}u=B+42|0;h=b[u>>1]|0;if(h<<16>>16>0){v=B+4|0;z=D+1|0;w=(C|0)!=0;x=G+8+(z*72|0)+16|0;y=G+8+(z*72|0)+40|0;z=G+8+(z*72|0)+56|0;t=0;do{p=c[(c[v>>2]|0)+(t<<4)>>2]|0;r=0;k:while(1){s=G+8+(r*72|0)+16|0;j=c[s>>2]|0;k=b[j+42>>1]|0;if(k<<16>>16>0){n=c[j+4>>2]|0;o=d[208+(d[p>>0]|0)>>0]|0;m=k<<16>>16;q=0;while(1){k=c[n+(q<<4)>>2]|0;ba=a[k>>0]|0;j=(d[208+(ba&255)>>0]|0)-o|0;if(!(ba<<24>>24==0|(j|0)!=0)){l=p;do{k=k+1|0;l=l+1|0;ba=a[k>>0]|0;j=(d[208+(ba&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(ba<<24>>24==0|(j|0)!=0))}if(!j){ca=154;break k}j=q+1|0;if((j|0)<(m|0))q=j;else break}}if(r>>>0>>0)r=r+1|0;else break}if((ca|0)==154){ca=0;m=c[ma>>2]|0;l=m+272|0;l:do if(c[l>>2]|0)if(!(a[m+81>>0]|0))ca=164;else k=0;else{do if((e[m+276>>1]|0)>=52){h=m+300|0;j=c[h>>2]|0;if(j|0){c[h>>2]=c[j>>2];ca=m+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=165;break l}h=m+296|0;j=c[h>>2]|0;if(!j){h=m+292|0;break}else{c[h>>2]=c[j>>2];ca=m+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=165;break l}}else h=m+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;ca=164}while(0);if((ca|0)==164){j=_d(m,52,0)|0;ca=165}do if((ca|0)==165){ca=0;if(j){o=j;p=o+52|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(p|0));a[j>>0]=-94;b[j+34>>1]=-1;c[j+24>>2]=1;ba=c[s>>2]|0;c[j+44>>2]=ba;c[j+28>>2]=c[G+8+(r*72|0)+40>>2];if((q|0)==(b[ba+40>>1]|0)){b[j+32>>1]=-1;k=j;break}else{b[j+32>>1]=q;aa=cw(1,0,(q>>>0<63?q:63)|0)|0;ba=L()|0;k=G+8+(r*72|0)+56|0;$=k;ba=c[$+4>>2]|ba;c[k>>2]=c[$>>2]|aa;c[k+4>>2]=ba;k=j;break}}else k=0}while(0);m:do if(c[l>>2]|0)if(!(a[m+81>>0]|0))ca=179;else j=0;else{do if((e[m+276>>1]|0)>=52){h=m+300|0;j=c[h>>2]|0;if(j|0){c[h>>2]=c[j>>2];ca=m+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=180;break m}h=m+296|0;j=c[h>>2]|0;if(!j){h=m+292|0;break}else{c[h>>2]=c[j>>2];ca=m+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=180;break m}}else h=m+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;ca=179}while(0);if((ca|0)==179){j=_d(m,52,0)|0;ca=180}do if((ca|0)==180){ca=0;if(!j){j=0;break}o=j;p=o+52|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(p|0));a[j>>0]=-94;b[j+34>>1]=-1;c[j+24>>2]=1;ba=c[x>>2]|0;c[j+44>>2]=ba;c[j+28>>2]=c[y>>2];if((t|0)==(b[ba+40>>1]|0)){b[j+32>>1]=-1;break}else{b[j+32>>1]=t;$=cw(1,0,(t>>>0<63?t:63)|0)|0;aa=L()|0;_=z;aa=c[_+4>>2]|aa;ba=z;c[ba>>2]=c[_>>2]|$;c[ba+4>>2]=aa;break}}while(0);h=ej(ma,53,k,j)|0;if(w&(h|0)!=0){ba=h+4|0;c[ba>>2]=c[ba>>2]|1;b[h+36>>1]=c[j+28>>2]}h=Xk(m,c[H>>2]|0,h)|0;c[H>>2]=h;h=b[u>>1]|0}t=t+1|0}while((t|0)<(h<<16>>16|0))}}else i=F+48|0;h=c[f>>2]|0;if(h|0){if(c[i>>2]|0){ca=190;break}if(!A){Wk(h,c[F+40>>2]|0);h=c[f>>2]|0}ba=Xk(c[ma>>2]|0,c[H>>2]|0,h)|0;c[H>>2]=ba;c[f>>2]=0}y=c[i>>2]|0;if(y|0?(M=y+4|0,(c[M>>2]|0)>0):0){z=B+42|0;x=B+4|0;w=D+1|0;t=(C|0)!=0;u=G+8+(w*72|0)+16|0;v=G+8+(w*72|0)+40|0;w=G+8+(w*72|0)+56|0;s=0;do{o=c[(c[y>>2]|0)+(s<<3)>>2]|0;h=b[z>>1]|0;if(h<<16>>16<=0){ca=246;break j}l=c[x>>2]|0;p=d[208+(d[o>>0]|0)>>0]|0;k=h<<16>>16;r=0;while(1){i=c[l+(r<<4)>>2]|0;ba=a[i>>0]|0;h=(d[208+(ba&255)>>0]|0)-p|0;if(!(ba<<24>>24==0|(h|0)!=0)){j=o;do{i=i+1|0;j=j+1|0;ba=a[i>>0]|0;h=(d[208+(ba&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(ba<<24>>24==0|(h|0)!=0))}if(!h)break;h=r+1|0;if((h|0)<(k|0))r=h;else{ca=246;break j}}n=0;n:while(1){q=G+8+(n*72|0)+16|0;h=c[q>>2]|0;i=b[h+42>>1]|0;if(i<<16>>16>0){l=c[h+4>>2]|0;k=i<<16>>16;m=0;while(1){i=c[l+(m<<4)>>2]|0;ba=a[i>>0]|0;h=(d[208+(ba&255)>>0]|0)-p|0;if(!(ba<<24>>24==0|(h|0)!=0)){j=o;do{i=i+1|0;j=j+1|0;ba=a[i>>0]|0;h=(d[208+(ba&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(ba<<24>>24==0|(h|0)!=0))}if(!h)break n;h=m+1|0;if((h|0)<(k|0))m=h;else break}}if(n>>>0>>0)n=n+1|0;else{ca=246;break j}}l=c[ma>>2]|0;k=l+272|0;o:do if(c[k>>2]|0)if(!(a[l+81>>0]|0))ca=223;else j=0;else{do if((e[l+276>>1]|0)>=52){h=l+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];ca=l+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=224;break o}h=l+296|0;i=c[h>>2]|0;if(!i){h=l+292|0;break}else{c[h>>2]=c[i>>2];ca=l+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=224;break o}}else h=l+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;ca=223}while(0);if((ca|0)==223){i=_d(l,52,0)|0;ca=224}do if((ca|0)==224){ca=0;if(i){o=i;p=o+52|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(p|0));a[i>>0]=-94;b[i+34>>1]=-1;c[i+24>>2]=1;ba=c[q>>2]|0;c[i+44>>2]=ba;c[i+28>>2]=c[G+8+(n*72|0)+40>>2];if((m|0)==(b[ba+40>>1]|0)){b[i+32>>1]=-1;j=i;break}else{b[i+32>>1]=m;aa=cw(1,0,(m>>>0<63?m:63)|0)|0;ba=L()|0;j=G+8+(n*72|0)+56|0;$=j;ba=c[$+4>>2]|ba;c[j>>2]=c[$>>2]|aa;c[j+4>>2]=ba;j=i;break}}else j=0}while(0);p:do if(c[k>>2]|0)if(!(a[l+81>>0]|0))ca=238;else i=0;else{do if((e[l+276>>1]|0)>=52){h=l+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];ca=l+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=239;break p}h=l+296|0;i=c[h>>2]|0;if(!i){h=l+292|0;break}else{c[h>>2]=c[i>>2];ca=l+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=239;break p}}else h=l+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;ca=238}while(0);if((ca|0)==238){i=_d(l,52,0)|0;ca=239}do if((ca|0)==239){ca=0;if(i){o=i;p=o+52|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(p|0));a[i>>0]=-94;b[i+34>>1]=-1;c[i+24>>2]=1;ba=c[u>>2]|0;c[i+44>>2]=ba;c[i+28>>2]=c[v>>2];if((r|0)==(b[ba+40>>1]|0)){b[i+32>>1]=-1;break}else{b[i+32>>1]=r;$=cw(1,0,(r>>>0<63?r:63)|0)|0;aa=L()|0;_=w;aa=c[_+4>>2]|aa;ba=w;c[ba>>2]=c[_>>2]|$;c[ba+4>>2]=aa;break}}else i=0}while(0);h=ej(ma,53,j,i)|0;if(t&(h|0)!=0){ba=h+4|0;c[ba>>2]=c[ba>>2]|1;b[h+36>>1]=c[i+28>>2]}ba=Xk(l,c[H>>2]|0,h)|0;c[H>>2]=ba;s=s+1|0}while((s|0)<(c[M>>2]|0))}}D=D+1|0;if((D|0)>=((c[G>>2]|0)+-1|0))break i;else{E=E+72|0;F=F+72|0}}if((ca|0)==142){c[N>>2]=0;cd(ma,41125,N);pa=2;Ra=qa;return pa|0}else if((ca|0)==190){cd(ma,41175,O);pa=2;Ra=qa;return pa|0}else if((ca|0)==246){c[P>>2]=o;cd(ma,41230,P);pa=2;Ra=qa;return pa|0}}while(0);k=c[fa>>2]|0;q:do if((k|0)>0){j=0;h=0;r:while(1){i=c[fa+4+(j*20|0)>>2]|0;switch(a[i>>0]|0){case -84:break r;case -122:{if((a[c[i+16>>2]>>0]|0)==-84)break r;break}default:{}}h=c[i+4>>2]|h;j=j+1|0;if((j|0)>=(k|0)){ca=415;break q}}M=0==0?(c[(c[ma>>2]|0)+32>>2]&68|0)==4:0;N=ga+4|0;O=ga+4|0;P=ga+4|0;Q=(na|0)==0;R=ma+200|0;S=na+480|0;T=na+304|0;U=ma+272|0;V=na+308|0;W=na+300|0;X=na+272|0;Y=na+276|0;Z=na+288|0;_=na+296|0;$=na+284|0;aa=na+292|0;ba=na+16|0;i=0;K=0;do{k=fa+4+(K*20|0)|0;j=c[k>>2]|0;h=c[j+4>>2]|h;switch(a[j>>0]|0){case -84:{J=0;ca=260;break}case -122:{if((a[c[j+16>>2]>>0]|0)==-84){J=c[(c[j+12>>2]|0)+8>>2]|0;ca=260}else ca=256;break}default:ca=256}do if((ca|0)==256){ca=0;i=nj(c[ma>>2]|0,i,j)|0;if(i|0){I=fa+4+(K*20|0)+4|0;H=(c[i>>2]|0)+-1|0;c[i+4+(H*20|0)+4>>2]=c[I>>2];J=fa+4+(K*20|0)+8|0;c[i+4+(H*20|0)+8>>2]=c[J>>2];c[I>>2]=0;c[J>>2]=0}c[k>>2]=0}else if((ca|0)==260){ca=0;if((c[ea>>2]|0)>0){H=(J|0)==0;I=(J|0)!=0;j=0;F=0;G=da;while(1){n=c[G+16>>2]|0;l=c[G+20>>2]|0;k=c[G+12>>2]|0;if(!k)E=c[n>>2]|0;else E=k;if(a[ha>>0]|0)break;if((l|0)!=0?(c[l+8>>2]&2048|0)!=0:0){D=0;ca=276}else ca=267;do if((ca|0)==267){ca=0;if(!H){D=a[J>>0]|0;k=(d[208+(D&255)>>0]|0)-(d[208+(d[E>>0]|0)>>0]|0)|0;if(!(D<<24>>24==0|(k|0)!=0)){l=E;m=J;do{m=m+1|0;l=l+1|0;D=a[m>>0]|0;k=(d[208+(D&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(D<<24>>24==0|(k|0)!=0))}if(k|0)break}l=c[n+72>>2]|0;if(!l){D=40769;l=0;ca=276}else{m=c[ba>>2]|0;k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0))break;else k=k+1|0;D=c[m+(k<<4)>>2]|0;l=0;ca=276}}while(0);if((ca|0)==276){ca=0;C=n+42|0;if((b[C>>1]|0)>0){v=n+4|0;w=(l|0)!=0;f=I&w;B=H&(F|0)!=0;x=G+36|0;y=G+48|0;z=(E|0)==0;A=(D|0)==0;u=0;do{r=c[v>>2]|0;s=c[r+(u<<4)>>2]|0;s:do if(f){m=c[(c[l>>2]|0)+4+(u*20|0)+8>>2]|0;k=0;t:while(1){switch(a[m+k>>0]|0){case 46:case 0:break t;default:{}}k=k+1|0}k=m+(k+1)|0;q=0;u:while(1){switch(a[k+q>>0]|0){case 46:case 0:break u;default:{}}q=q+1|0}v:do if(q|0){p=J;n=q;while(1){m=a[k>>0]|0;if(!(m<<24>>24)){ca=288;break}m=a[208+(m&255)>>0]|0;o=a[208+(d[p>>0]|0)>>0]|0;if(m<<24>>24!=o<<24>>24){ca=290;break}if((n|0)>1){k=k+1|0;p=p+1|0;n=n+-1|0}else break v}if((ca|0)==288){ca=0;m=0;k=a[208+(d[p>>0]|0)>>0]|0}else if((ca|0)==290){ca=0;m=m&255;k=o}if((m|0)!=(k&255|0))break s}while(0);if(!(a[J+q>>0]|0))ca=294}else ca=294;while(0);w:do if((ca|0)==294){ca=0;if((c[oa>>2]&131072|0)==0?a[r+(u<<4)+15>>0]&2:0)break;do if(B){if(a[x>>0]&4){r=0;do{j=c[ea+8+(r*72|0)+16>>2]|0;k=b[j+42>>1]|0;if(k<<16>>16>0){p=c[j+4>>2]|0;q=d[208+(d[s>>0]|0)>>0]|0;o=k<<16>>16;n=0;do{k=c[p+(n<<4)>>2]|0;t=a[k>>0]|0;j=(d[208+(t&255)>>0]|0)-q|0;if(!(t<<24>>24==0|(j|0)!=0)){m=s;do{k=k+1|0;m=m+1|0;t=a[k>>0]|0;j=(d[208+(t&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(t<<24>>24==0|(j|0)!=0))}if(!j){j=1;break w}n=n+1|0}while((n|0)<(o|0))}r=r+1|0}while(r>>>0>>0)}j=c[y>>2]|0;if(!j)break;q=c[j+4>>2]|0;if((q|0)<=0)break;o=c[j>>2]|0;p=d[208+(d[s>>0]|0)>>0]|0;n=0;do{k=c[o+(n<<3)>>2]|0;t=a[k>>0]|0;j=(d[208+(t&255)>>0]|0)-p|0;if(!(t<<24>>24==0|(j|0)!=0)){m=s;do{k=k+1|0;m=m+1|0;t=a[k>>0]|0;j=(d[208+(t&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(t<<24>>24==0|(j|0)!=0))}if(!j){j=1;break w}n=n+1|0}while((n|0)<(q|0))}while(0);c[ga>>2]=s;if(!s)j=0;else j=(Eu(s)|0)&1073741823;c[N>>2]=j;j=oj(na,59,ga,0)|0;if(!M?(c[ea>>2]|0)<=1:0){t=0;r=s}else ca=319;do if((ca|0)==319){ca=0;c[ga>>2]=E;if(z)k=0;else k=(Eu(E)|0)&1073741823;c[O>>2]=k;j=ej(ma,134,oj(na,59,ga,0)|0,j)|0;if(!A){c[ga>>2]=D;t=(Eu(D)|0)&1073741823;c[P>>2]=t;j=ej(ma,134,oj(na,59,ga,0)|0,j)|0}if(!M){t=0;r=s;break}c[ia>>2]=E;c[ia+4>>2]=s;r=dd(na,40358,ia)|0;t=r}while(0);i=nj(c[ma>>2]|0,i,j)|0;q=r;j=(r|0)==0;if(j)p=0;else p=(Eu(r)|0)&1073741823;do if(i|0){o=(c[i>>2]|0)+-1|0;n=c[ma>>2]|0;x:do if(j)n=0;else{m=p+1|0;y:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))ca=339;else{n=0;break x}else{do if(!(0>0|(0==0?m>>>0>(e[n+276>>1]|0)>>>0:0))){k=n+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];s=n+284|0;c[s>>2]=(c[s>>2]|0)+1;break y}k=n+296|0;j=c[k>>2]|0;if(!j){j=n+292|0;break}else{c[k>>2]=c[j>>2];s=n+284|0;c[s>>2]=(c[s>>2]|0)+1;break y}}else j=n+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;ca=339}while(0);if((ca|0)==339){ca=0;j=_d(n,m,0)|0}if(!j){n=0;break}ew(j|0,r|0,p|0)|0;a[j+p>>0]=0;n=j}while(0);c[i+4+(o*20|0)+4>>2]=n;z:do if((d[R>>0]|0)>1){m=c[ma>>2]|0;A:do if(!m){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](16)|0;ca=366;break}j=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;k=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&k>>>0>0){s=c[14978]|0;o=Tv(k|0,m|0,j|0,((j|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&o>>>0<=s>>>0)&1}j=Wa[c[29340>>2]&127](j)|0;if(!j)break z;k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0<=(c[14987]|0)>>>0)break;c[14987]=k}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break z}else{do if((e[m+276>>1]|0)>=16){k=m+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];ca=m+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=366;break A}k=m+296|0;j=c[k>>2]|0;if(!j){j=m+292|0;break}else{c[k>>2]=c[j>>2];ca=m+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=366;break A}}else j=m+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(m,16,0)|0;ca=366}while(0);if((ca|0)==366){ca=0;if(!j)break}c[j>>2]=n;c[j+4>>2]=q;c[j+8>>2]=p;c[j+12>>2]=c[U>>2];c[U>>2]=j}while(0);if(!(c[oa>>2]&2048))break;p=(c[i>>2]|0)+-1|0;B:do if(w){n=c[(c[l>>2]|0)+4+(u*20|0)+8>>2]|0;if(!n){j=0;break}o=(Eu(n)|0)+1|0;C:do if(Q){s=Sv(o|0,0,-1,-1)|0;r=L()|0;if(r>>>0>0|(r|0)==0&s>>>0>2147483390){j=0;break B}if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](o)|0;ca=393;break}j=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;m=59064;k=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&k>>>0>0){s=c[14978]|0;r=Tv(k|0,m|0,j|0,((j|0)<0)<<31>>31|0)|0;q=L()|0;c[14768]=((q|0)<0|(q|0)==0&r>>>0<=s>>>0)&1}j=Wa[c[29340>>2]&127](j)|0;if(!j){j=0;break B}k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0<=(c[14987]|0)>>>0)break;c[14987]=k}else{if(c[X>>2]|0){if(a[ha>>0]|0){j=0;break B}}else{do if(0<0|(0==0?(e[Y>>1]|0)>>>0>>0:0))j=Z;else{j=c[W>>2]|0;if(j|0){c[W>>2]=c[j>>2];c[$>>2]=(c[$>>2]|0)+1;ca=393;break C}j=c[_>>2]|0;if(!j){j=aa;break}c[_>>2]=c[j>>2];c[$>>2]=(c[$>>2]|0)+1;ca=393;break C}while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(na,o,0)|0;ca=393}while(0);if((ca|0)==393){ca=0;if(!j){j=0;break}}ew(j|0,n|0,o|0)|0}else{c[ja>>2]=D;c[ja+4>>2]=E;c[ja+8>>2]=r;j=dd(na,40771,ja)|0}while(0);c[i+4+(p*20|0)+8>>2]=j;s=i+4+(p*20|0)+13|0;a[s>>0]=a[s>>0]|2}while(0);if(!t){j=1;break}do if(!Q){if(c[S>>2]|0){Xd(na,t);j=1;break w}j=t;if((c[T>>2]|0)>>>0>j>>>0)break;if((c[V>>2]|0)>>>0<=j>>>0)break;c[t>>2]=c[W>>2];c[W>>2]=t;j=1;break w}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);j=1;break}else{j=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);j=1;break}}while(0);u=u+1|0}while((u|0)<(b[C>>1]|0))}}F=F+1|0;if((F|0)>=(c[ea>>2]|0))break;else G=G+72|0}if(j)break}if(!J){cd(ma,40798,la);break}else{c[ka>>2]=J;cd(ma,40780,ka);break}}while(0);K=K+1|0}while((K|0)<(c[fa>>2]|0));ri(na,fa);c[g>>2]=i}else{h=0;ca=415}while(0);if((ca|0)==415)i=c[g>>2]|0;if(!i){pa=0;Ra=qa;return pa|0}if((c[i>>2]|0)>(c[na+116>>2]|0)){cd(ma,40818,pa);pa=2;Ra=qa;return pa|0}if(!(h&2097156)){pa=0;Ra=qa;return pa|0}c[oa>>2]=c[oa>>2]|262144;pa=0;Ra=qa;return pa|0}function Pk(a,b){a=a|0;b=b|0;var d=0;d=(c[a>>2]|0)+264|0;if(!(c[d>>2]|0))return;if(c[b+52>>2]|0)return;a=b;while(1){b=c[a+56>>2]|0;if(!b)break;else a=b}a=c[a+64>>2]|0;if(!a)return;c[d>>2]=c[a+4>>2];return}function Qk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;if(!b)return;d=c[b>>2]|0;if((d|0)<=0)return;h=a+40|0;f=0;g=b+8|0;while(1){e=g+40|0;if((c[e>>2]|0)>-1){d=8;break}i=c[h>>2]|0;c[h>>2]=i+1;c[e>>2]=i;e=c[g+20>>2]|0;if(e){Qk(a,c[e+32>>2]|0);d=c[b>>2]|0}f=f+1|0;if((f|0)>=(d|0)){d=8;break}else g=g+72|0}if((d|0)==8)return}function Rk(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+16|0;l=o;g=c[f+20>>2]|0;j=c[d>>2]|0;a:do if(!j){if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](80)|0;n=24;break}h=Wa[c[29356>>2]&127](80)|0;if((c[14985]|0)>>>0<80)c[14985]=80;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){m=c[14978]|0;k=Tv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0;j=L()|0;c[14768]=((j|0)<0|(j|0)==0&k>>>0<=m>>>0)&1}i=Wa[c[29340>>2]&127](h)|0;if(i){h=Wa[c[29352>>2]&127](i)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0){c[14987]=h;m=i}else m=i}else n=25}else{if(c[j+272>>2]|0){if(a[j+81>>0]|0){n=25;break}}else{do if((e[j+276>>1]|0)>=80){i=j+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];n=j+284|0;c[n>>2]=(c[n>>2]|0)+1;n=24;break a}i=j+296|0;h=c[i>>2]|0;if(!h){h=j+292|0;break}else{c[i>>2]=c[h>>2];n=j+284|0;c[n>>2]=(c[n>>2]|0)+1;n=24;break a}}else h=j+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(j,80,0)|0;n=24}while(0);if((n|0)==24)if(!h)n=25;else m=h;if((n|0)==25){c[f+16>>2]=0;d=7;Ra=o;return d|0}h=m;i=h+80|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(i|0));c[f+16>>2]=m;c[m+32>>2]=1;k=c[f+12>>2]|0;j=c[d>>2]|0;b:do if(!k){c[l>>2]=c[g+20>>2];h=dd(j,41042,l)|0}else{f=(Eu(k)|0)+1|0;c:do if(!j){l=Sv(f|0,0,-1,-1)|0;j=L()|0;if(j>>>0>0|(j|0)==0&l>>>0>2147483390){h=0;break b}if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](f)|0;n=51;break}h=Wa[c[29356>>2]&127](f)|0;if((c[14985]|0)>>>0>>0)c[14985]=f;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){l=c[14978]|0;j=Tv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0;i=L()|0;c[14768]=((i|0)<0|(i|0)==0&j>>>0<=l>>>0)&1}h=Wa[c[29340>>2]&127](h)|0;if(!h){h=0;break b}i=Wa[c[29352>>2]&127](h)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}else{if(c[j+272>>2]|0){if(a[j+81>>0]|0){h=0;break b}}else{do if(!(0<0|(0==0?(e[j+276>>1]|0)>>>0>>0:0))){i=j+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];n=j+284|0;c[n>>2]=(c[n>>2]|0)+1;n=51;break c}i=j+296|0;h=c[i>>2]|0;if(!h){h=j+292|0;break}else{c[i>>2]=c[h>>2];n=j+284|0;c[n>>2]=(c[n>>2]|0)+1;n=51;break c}}else h=j+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(j,f,0)|0;n=51}while(0);if((n|0)==51)if(!h){h=0;break}ew(h|0,k|0,f|0)|0}while(0);c[m>>2]=h;while(1){h=c[g+52>>2]|0;if(!h)break;else g=h}Tk(c[d>>2]|0,c[g>>2]|0,m+42|0,m+4|0);b[m+40>>1]=-1;b[m+44>>1]=200;d=m+36|0;c[d>>2]=c[d>>2]|2;d=0;Ra=o;return d|0}function Sk(e,f){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;v=Ra;Ra=Ra+32|0;s=v+16|0;r=v+8|0;n=v;o=v+20|0;u=c[e>>2]|0;p=u+56|0;i=c[p>>2]|0;c[p>>2]=i+1;q=f+56|0;g=c[q>>2]|0;a:do if(g){h=c[f+64>>2]|0;if(h|0)do{if((c[h>>2]|0)==(u|0)){t=33;break a}h=c[h+24>>2]|0}while((h|0)!=0);m=c[c[f+60>>2]>>2]|0;j=c[u+348>>2]|0;if(!j){h=u+340|0;g=u+344|0}else{h=a[m>>0]|0;if(!(h<<24>>24))g=0;else{g=0;i=m;do{i=i+1|0;g=G(g+(d[208+(h&255)>>0]|0)|0,-1640531535)|0;h=a[i>>0]|0}while(h<<24>>24!=0)}g=(g>>>0)%((c[u+336>>2]|0)>>>0)|0;h=j+(g<<3)|0;g=j+(g<<3)+4|0}h=c[h>>2]|0;b:do if(!h)g=59292;else{l=d[208+(d[m>>0]|0)>>0]|0;while(1){g=c[g>>2]|0;h=h+-1|0;j=c[g+12>>2]|0;k=a[j>>0]|0;i=(d[208+(k&255)>>0]|0)-l|0;if(!(k<<24>>24==0|(i|0)!=0)){k=m;do{j=j+1|0;k=k+1|0;w=a[j>>0]|0;i=(d[208+(w&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(w<<24>>24==0|(i|0)!=0))}if(!i)break b;if(!h){g=59292;break}}}while(0);g=c[g+8>>2]|0;if(!g){c[n>>2]=m;cd(e,36690,n);c[p>>2]=(c[p>>2]|0)+-1;w=1;Ra=v;return w|0}c[o>>2]=0;h=Ai(u,f,g,c[(c[g>>2]|0)+8>>2]|0,o)|0;i=(h|0)==0;g=c[o>>2]|0;if(!i){c[r>>2]=g;cd(e,31408,r);c[e+12>>2]=h}do if(g|0){if(u|0){if(c[u+480>>2]|0){Xd(u,g);break}w=g;if((c[u+304>>2]|0)>>>0<=w>>>0?(c[u+308>>2]|0)>>>0>w>>>0:0){w=u+300|0;c[g>>2]=c[w>>2];c[w>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{w=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[p>>2]=(c[p>>2]|0)+-1;if(i){g=c[q>>2]|0;break}else{w=1;Ra=v;return w|0}}else t=33;while(0);if((t|0)==33)c[p>>2]=i;if(g|0){w=0;Ra=v;return w|0}p=f+42|0;g=b[p>>1]|0;if(g<<16>>16>0){w=0;Ra=v;return w|0}if(g<<16>>16<0){c[s>>2]=c[f>>2];cd(e,41077,s);w=1;Ra=v;return w|0}i=fk(u,c[f+12>>2]|0,0)|0;if(!i)o=1;else{j=e+200|0;k=a[j>>0]|0;a[j>>0]=0;h=e+40|0;w=c[h>>2]|0;Qk(e,c[i+32>>2]|0);b[p>>1]=-1;l=u+272|0;c[l>>2]=(c[l>>2]|0)+1;s=u+312|0;r=c[s>>2]|0;c[s>>2]=0;g=yk(e,i)|0;c[s>>2]=r;c[h>>2]=w;h=c[f+24>>2]|0;do if(!h)if(!g){b[p>>1]=0;g=1;break}else{w=g+42|0;b[p>>1]=b[w>>1]|0;t=g+4|0;c[f+4>>2]=c[t>>2];b[w>>1]=0;c[t>>2]=0;t=50;break}else{Tk(c[e>>2]|0,h,p,f+4|0);if(((a[u+81>>0]|0)==0?(c[e+36>>2]|0)==0:0)?(c[c[i>>2]>>2]|0)==(b[p>>1]|0):0)Uk(e,f,i);if(!g)g=0;else t=50}while(0);do if((t|0)==50){if(c[u+480>>2]|0){Vi(u,g);g=0;break}t=g+32|0;w=(c[t>>2]|0)+-1|0;c[t>>2]=w;if(!w){Vi(u,g);g=0}else g=0}while(0);pi(u,i,1);c[l>>2]=(c[l>>2]|0)+-1;a[j>>0]=k;o=g}w=(c[f+72>>2]|0)+78|0;b[w>>1]=b[w>>1]|2;if(!(a[u+81>>0]|0)){w=o;Ra=v;return w|0}n=f+4|0;g=c[n>>2]|0;do if(g|0){if((b[p>>1]|0)>0){j=u+480|0;k=u+304|0;l=u+308|0;m=u+300|0;i=0;while(1){h=c[g>>2]|0;do if(h|0){if(c[j>>2]|0){Xd(u,h);break}w=h;if((c[k>>2]|0)>>>0<=w>>>0?(c[l>>2]|0)>>>0>w>>>0:0){c[h>>2]=c[m>>2];c[m>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{w=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);h=c[g+4>>2]|0;if(h|0)ni(u,h);h=c[g+8>>2]|0;do if(h|0){if(c[j>>2]|0){Xd(u,h);break}w=h;if((c[k>>2]|0)>>>0<=w>>>0?(c[l>>2]|0)>>>0>w>>>0:0){c[h>>2]=c[m>>2];c[m>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{w=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);i=i+1|0;if((i|0)>=(b[p>>1]|0))break;else g=g+16|0}g=c[n>>2]|0}if(g|0){if(u|0){if(c[u+480>>2]|0){Xd(u,g);break}w=g;if((c[u+304>>2]|0)>>>0<=w>>>0?(c[u+308>>2]|0)>>>0>w>>>0:0){w=u+300|0;c[g>>2]=c[w>>2];c[w>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{w=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}}while(0);c[n>>2]=0;b[p>>1]=0;w=o;Ra=v;return w|0}function Tk(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var 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,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;R=Ra;Ra=Ra+48|0;P=R+8|0;O=R;N=R+40|0;Q=R+24|0;c[Q>>2]=0;c[Q+4>>2]=0;c[Q+8>>2]=0;c[Q+12>>2]=0;do if(g){n=c[g>>2]|0;m=n<<4;a:do if(!f){M=Sv(m|0,0,-1,-1)|0;K=L()|0;if(!(K>>>0>0|(K|0)==0&M>>>0>2147483390)){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](m)|0;s=27;break}j=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){M=c[14978]|0;K=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;J=L()|0;c[14768]=((J|0)<0|(J|0)==0&K>>>0<=M>>>0)&1}j=Wa[c[29340>>2]&127](j)|0;if(j){k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;s=28}else s=28}else M=0}else M=0}else{if(c[f+272>>2]|0){if(a[f+81>>0]|0){M=0;break}}else{do if(!(0<0|(0==0?(e[f+276>>1]|0)>>>0>>0:0))){k=f+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];s=f+284|0;c[s>>2]=(c[s>>2]|0)+1;s=27;break a}k=f+296|0;j=c[k>>2]|0;if(!j){j=f+292|0;break}else{c[k>>2]=c[j>>2];s=f+284|0;c[s>>2]=(c[s>>2]|0)+1;s=27;break a}}else j=f+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(f,m,0)|0;s=27}while(0);if((s|0)==27)if(!j)M=0;else s=28;if((s|0)==28){gw(j|0,0,m|0)|0;M=j}if((n|0)<32767){b[h>>1]=n;c[i>>2]=M;k=f+81|0;if((n|0)>0)K=k;else{j=M;l=M;s=32;break}}else{b[h>>1]=32767;c[i>>2]=M;n=32767;K=f+81|0}H=(f|0)==0;J=Q+12|0;I=Q+8|0;u=Q+4|0;v=f+272|0;w=f+276|0;x=f+288|0;y=f+300|0;z=f+296|0;A=f+284|0;B=f+292|0;C=f+82|0;D=f+180|0;E=f+264|0;F=f+236|0;t=M;l=0;while(1){if(a[K>>0]|0)break;j=c[g+4+(l*20|0)+4>>2]|0;do if(!j){j=c[g+4+(l*20|0)>>2]|0;b:do if(!j)j=0;else while(1){k=c[j+4>>2]|0;if(!(k&4096))break b;if(!(k&262144))j=j+12|0;else j=(c[j+20>>2]|0)+4|0;j=c[j>>2]|0;if(!j){j=0;break}}while(0);c:while(1){switch(a[j>>0]|0){case -94:{s=46;break c}case 59:{s=50;break c}case -122:break;default:{s=51;break c}}j=c[j+16>>2]|0}if((s|0)==46){k=b[j+32>>1]|0;m=c[j+44>>2]|0;if(k<<16>>16<0)j=b[m+40>>1]|0;else j=k<<16>>16;if((j|0)<=-1){j=38132;s=53;break}j=(c[m+4>>2]|0)+(j<<4)|0}else if((s|0)==50)j=j+8|0;else if((s|0)==51)j=g+4+(l*20|0)+8|0;j=c[j>>2]|0;if(!j){c[O>>2]=l+1;j=dd(f,41025,O)|0;c[N>>2]=0;if(!j)s=107;else s=78}else s=53}else s=53;while(0);do if((s|0)==53){p=(Eu(j)|0)+1|0;do if(H){s=Sv(p|0,0,-1,-1)|0;r=L()|0;if(!(r>>>0>0|(r|0)==0&s>>>0>2147483390)){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](p)|0;s=74;break}k=Wa[c[29356>>2]&127](p)|0;if((c[14985]|0)>>>0

        >>0)c[14985]=p;o=59064;m=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)>0|(o|0)==0&m>>>0>0){s=c[14978]|0;r=Tv(m|0,o|0,k|0,((k|0)<0)<<31>>31|0)|0;q=L()|0;c[14768]=((q|0)<0|(q|0)==0&r>>>0<=s>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(k){m=Wa[c[29352>>2]&127](k)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0>(c[14987]|0)>>>0){c[14987]=m;s=75}else s=75}else s=76}else s=76}else{if(!(c[v>>2]|0)){if(!(0<0|(0==0?(e[w>>1]|0)>>>0

        >>0:0))){k=c[y>>2]|0;if(k|0){c[y>>2]=c[k>>2];c[A>>2]=(c[A>>2]|0)+1;s=74;break}k=c[z>>2]|0;if(!k)k=B;else{c[z>>2]=c[k>>2];c[A>>2]=(c[A>>2]|0)+1;s=74;break}}else k=x;c[k>>2]=(c[k>>2]|0)+1}k=_d(f,p,0)|0;s=74}while(0);if((s|0)==74)if(!k)s=76;else s=75;if((s|0)==75){ew(k|0,j|0,p|0)|0;c[N>>2]=0;j=k;s=78;break}else if((s|0)==76){c[N>>2]=0;s=107;break}}while(0);d:do if((s|0)==78){s=0;while(1){p=c[J>>2]|0;if(!p){m=u;k=I}else{m=a[j>>0]|0;if(!(m<<24>>24))k=0;else{k=0;o=j;do{o=o+1|0;k=G(k+(d[208+(m&255)>>0]|0)|0,-1640531535)|0;m=a[o>>0]|0}while(m<<24>>24!=0)}k=(k>>>0)%((c[Q>>2]|0)>>>0)|0;m=p+(k<<3)|0;k=p+(k<<3)+4|0}m=c[m>>2]|0;e:do if(!m)k=59292;else{r=d[208+(d[j>>0]|0)>>0]|0;while(1){k=c[k>>2]|0;m=m+-1|0;p=c[k+12>>2]|0;q=a[p>>0]|0;o=(d[208+(q&255)>>0]|0)-r|0;if(!(q<<24>>24==0|(o|0)!=0)){q=j;do{p=p+1|0;q=q+1|0;S=a[p>>0]|0;o=(d[208+(S&255)>>0]|0)-(d[208+(d[q>>0]|0)>>0]|0)|0}while(!(S<<24>>24==0|(o|0)!=0))}if(!o)break e;if(!m){k=59292;break}}}while(0);if(!(c[k+8>>2]|0))break;S=Eu(j)|0;k=S&1073741823;f:do switch(S&1073741823|0){case 0:break;case 1:{m=0;s=96;break}default:{o=k+-1|0;while(1){if(((d[j+o>>0]|0)+-48|0)>>>0>=10){m=o;s=96;break f}m=o+-1|0;if((o|0)>1)o=m;else{s=96;break}}}}while(0);if((s|0)==96){s=0;k=(a[j+m>>0]|0)==58?m:k}S=(c[N>>2]|0)+1|0;c[N>>2]=S;c[P>>2]=k;c[P+4>>2]=j;c[P+8>>2]=S;j=dd(f,41034,P)|0;if((c[N>>2]|0)>>>0>3)Fb(4,N);if(!j){s=107;break d}}c[t>>2]=j;if(((mi(Q,j,t)|0)==(t|0)?(a[K>>0]|0)==0:0)?(a[C>>0]|0)==0:0){a[K>>0]=1;if((c[D>>2]|0)>0)c[E>>2]=1;c[v>>2]=(c[v>>2]|0)+1;j=c[F>>2]|0;if(j|0)c[j+12>>2]=7}}while(0);if((s|0)==107){s=0;c[t>>2]=0}l=l+1|0;if((l|0)<(n|0))t=t+16|0;else break}j=c[I>>2]|0;k=c[J>>2]|0;c[I>>2]=0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{S=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);c[J>>2]=0;c[Q>>2]=0;if(!j){r=M;q=l;j=K;l=M}else{do{k=j;j=c[j>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{S=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}}while((j|0)!=0);r=M;q=l;j=K;l=M}}else{b[h>>1]=0;c[i>>2]=0;j=0;k=f+81|0;l=0;s=32}while(0);if((s|0)==32){c[Q+8>>2]=0;c[Q+12>>2]=0;c[Q>>2]=0;r=j;q=0;j=k}c[Q+4>>2]=0;if(!(a[j>>0]|0)){Ra=R;return}g:do if(q|0){k=f+480|0;m=f+304|0;n=f+308|0;o=f+300|0;if(!f){j=0;while(1){k=c[r+(j<<4)>>2]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{S=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);j=j+1|0;if((j|0)==(q|0))break g}}j=0;do{p=c[r+(j<<4)>>2]|0;do if(p|0){if(c[k>>2]|0){Xd(f,p);break}S=p;if((c[m>>2]|0)>>>0<=S>>>0?(c[n>>2]|0)>>>0>S>>>0:0){c[p>>2]=c[o>>2];c[o>>2]=p;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{S=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);j=j+1|0}while((j|0)!=(q|0))}while(0);do if(l|0){if(f|0){if(c[f+480>>2]|0){Xd(f,l);break}S=l;if((c[f+304>>2]|0)>>>0<=S>>>0?(c[f+308>>2]|0)>>>0>S>>>0:0){S=f+300|0;c[l>>2]=c[S>>2];c[S>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{S=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[i>>2]=0;b[h>>1]=0;Ra=R;return}function Uk(d,f,g){d=d|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,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=Ra;Ra=Ra+32|0;F=I;G=c[d>>2]|0;H=G+81|0;if(a[H>>0]|0){Ra=I;return};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;c[F+24>>2]=0;c[F+28>>2]=0;c[F+4>>2]=c[g+32>>2];r=c[g>>2]|0;s=f+42|0;if((b[s>>1]|0)>0){t=G+272|0;u=G+304|0;v=G+276|0;w=G+308|0;x=G+288|0;y=G+300|0;z=G+480|0;A=(G|0)==0;B=G+296|0;C=G+284|0;D=G+292|0;p=0;q=c[f+4>>2]|0;while(1){m=c[r+4+(p*20|0)>>2]|0;l=Vk(F,m)|0;g=Xj(m)|0;n=q+13|0;a[n>>0]=g;if(l){k=(Eu(l)|0)&1073741823;h=c[q>>2]|0;a:do if(!h){h=k+2|0;do if(c[t>>2]|0)if(!(a[H>>0]|0))o=15;else{c[q>>2]=0;break a}else{if(!(0<0|(0==0?(e[v>>1]|0)>>>0>>0:0))){g=c[y>>2]|0;if(g|0){c[y>>2]=c[g>>2];c[C>>2]=(c[C>>2]|0)+1;break}g=c[B>>2]|0;if(!g)g=D;else{c[B>>2]=c[g>>2];c[C>>2]=(c[C>>2]|0)+1;break}}else g=x;c[g>>2]=(c[g>>2]|0)+1;o=15}while(0);if((o|0)==15){o=0;g=_d(G,h,0)|0}c[q>>2]=g;if(g|0){g=g+1|0;o=32}}else{i=(Eu(h)|0)&1073741823;g=k+2+i|0;j=h;if(((c[u>>2]|0)>>>0<=j>>>0?(c[w>>2]|0)>>>0>j>>>0:0)?!(0<0|(0==0?(e[v>>1]|0)>>>0>>0:0)):0){g=h+(i+1)|0;o=32;break}g=Zd(G,h,g,0)|0;if(g|0){c[q>>2]=g;g=g+(i+1)|0;o=32;break}do if(!(c[z>>2]|0)){if((c[u>>2]|0)>>>0<=j>>>0?(c[w>>2]|0)>>>0>j>>>0:0){c[h>>2]=c[y>>2];c[y>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{l=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}else Xd(G,h);while(0);c[q>>2]=0}while(0);if((o|0)==32){o=0;j=q+15|0;ew(g|0,l|0,k+1|0)|0;a[j>>0]=a[j>>0]|4}g=a[n>>0]|0}if(!(g<<24>>24))a[n>>0]=65;g=Yi(d,m)|0;if(g|0?(E=q+8|0,(c[E>>2]|0)==0):0){j=c[g>>2]|0;b:do if(!j)g=0;else{k=(Eu(j)|0)+1|0;do if(A){n=Sv(k|0,0,-1,-1)|0;m=L()|0;if(m>>>0>0|(m|0)==0&n>>>0>2147483390){g=0;break b}if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](k)|0;o=61;break}g=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){n=c[14978]|0;m=Tv(h|0,i|0,g|0,((g|0)<0)<<31>>31|0)|0;l=L()|0;c[14768]=((l|0)<0|(l|0)==0&m>>>0<=n>>>0)&1}g=Wa[c[29340>>2]&127](g)|0;if(!g){g=0;break b}h=Wa[c[29352>>2]&127](g)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0)c[14987]=h}else{if(c[t>>2]|0){if(a[H>>0]|0){g=0;break b}}else{if(!(0<0|(0==0?(e[v>>1]|0)>>>0>>0:0))){g=c[y>>2]|0;if(g|0){c[y>>2]=c[g>>2];c[C>>2]=(c[C>>2]|0)+1;o=61;break}g=c[B>>2]|0;if(!g)g=D;else{c[B>>2]=c[g>>2];c[C>>2]=(c[C>>2]|0)+1;o=61;break}}else g=x;c[g>>2]=(c[g>>2]|0)+1}g=_d(G,k,0)|0;o=61}while(0);if((o|0)==61){o=0;if(!g){g=0;break}}ew(g|0,j|0,k|0)|0}while(0);c[E>>2]=g}p=p+1|0;if((p|0)>=(b[s>>1]|0))break;else q=q+16|0}}b[f+46>>1]=1;Ra=I;return}function Vk(d,e){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;o=Ra;Ra=Ra+32|0;m=o;switch(a[e>>0]|0){case -94:{k=b[e+32>>1]|0;n=k<<16>>16;if(!d){n=0;Ra=o;return n|0}j=e+28|0;f=0;do{i=c[d+4>>2]|0;g=c[i>>2]|0;a:do if((g|0)>0){h=c[j>>2]|0;e=0;while(1){if((c[i+8+(e*72|0)+40>>2]|0)==(h|0))break;e=e+1|0;if((e|0)>=(g|0)){l=9;break a}}g=c[i+8+(e*72|0)+16>>2]|0;f=c[i+8+(e*72|0)+20>>2]|0}else l=9;while(0);if((l|0)==9){l=0;d=c[d+12>>2]|0;g=0}e=(g|0)==0}while(e&(d|0)!=0);if(e){n=0;Ra=o;return n|0}if(!f){if(k<<16>>16<0){n=31453;Ra=o;return n|0}e=c[g+4>>2]|0;if(!(a[e+(n<<4)+15>>0]&4)){n=0;Ra=o;return n|0}n=c[e+(n<<4)>>2]|0;n=n+(Eu(n)|0)+1|0;Ra=o;return n|0}else{if(k<<16>>16<=-1){n=0;Ra=o;return n|0}e=c[f>>2]|0;if((c[e>>2]|0)<=(n|0)){n=0;Ra=o;return n|0}n=c[e+4+(n*20|0)>>2]|0;c[m+4>>2]=c[f+32>>2];c[m+12>>2]=d;c[m>>2]=c[d>>2];n=Vk(m,n)|0;Ra=o;return n|0}}case -125:{l=c[e+20>>2]|0;n=c[(c[l>>2]|0)+4>>2]|0;c[m+4>>2]=c[l+32>>2];c[m+12>>2]=d;c[m>>2]=c[d>>2];n=Vk(m,n)|0;Ra=o;return n|0}default:{n=0;Ra=o;return n|0}}return 0}function Wk(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;if(!d)return;j=e&65535;do{g=d+4|0;c[g>>2]=c[g>>2]|1;b[d+36>>1]=j;if(((a[d>>0]|0)==-95?(h=d+20|0,i=c[h>>2]|0,i|0):0)?(c[i>>2]|0)>0:0){f=0;g=i;do{Wk(c[g+4+(f*20|0)>>2]|0,e);f=f+1|0;g=c[h>>2]|0}while((f|0)<(c[g>>2]|0))}Wk(c[d+12>>2]|0,e);d=c[d+16>>2]|0}while((d|0)!=0);return}function Xk(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;m=Ra;Ra=Ra+16|0;h=m;if(!f){l=g;Ra=m;return l|0}if(!g){l=f;Ra=m;return l|0}c[h>>2]=0;l=f+4|0;if((c[l>>2]&1|0)==0?(uk(f,h)|0)!=0:0)if(!(c[h>>2]|0)){ni(d,f);ni(d,g)}else j=7;else j=7;do if((j|0)==7){c[h>>2]=0;k=g+4|0;if((c[k>>2]&1|0)==0?(uk(g,h)|0)!=0:0){if(!(c[h>>2]|0)){ni(d,f);ni(d,g);break}}else j=9;a:do if(c[d+272>>2]|0){if(!(a[d+81>>0]|0))j=24}else{do if((e[d+276>>1]|0)>=52){h=d+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];j=d+284|0;c[j>>2]=(c[j>>2]|0)+1;j=25;break a}h=d+296|0;i=c[h>>2]|0;if(!i){h=d+292|0;break}else{c[h>>2]=c[i>>2];j=d+284|0;c[j>>2]=(c[j>>2]|0)+1;j=25;break a}}else h=d+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;j=24}while(0);if((j|0)==24){i=_d(d,52,0)|0;j=25}if((j|0)==25?i|0:0){h=i;j=h+52|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));a[i>>0]=44;b[i+34>>1]=-1;c[i+24>>2]=1;c[i+16>>2]=g;k=c[k>>2]&2097412;g=i+4|0;c[g>>2]=k;c[i+12>>2]=f;c[g>>2]=k|c[l>>2]&2097412;Ym(i);l=i;Ra=m;return l|0}ni(d,f);ni(d,g);l=0;Ra=m;return l|0}while(0);l=oj(d,147,17136,0)|0;Ra=m;return l|0}function Yk(a,b){a=a|0;b=b|0;return 0}function Zk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=b+8|0;e=c[d>>2]|0;if(e&128|0)return;c[d>>2]=e|128;h=c[a>>2]|0;g=c[b+32>>2]|0;a=c[g>>2]|0;if((a|0)<=0)return;b=0;f=g+8|0;while(1){e=c[f+16>>2]|0;if((c[e+36>>2]&2|0)!=0?(i=c[f+20>>2]|0,(i|0)!=0):0){a=i;while(1){d=c[a+52>>2]|0;if(!d)break;else a=d}Uk(h,e,a);a=c[g>>2]|0}b=b+1|0;if((b|0)>=(a|0))break;else f=f+72|0}return}function _k(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!(c[b+4>>2]&16777216))return 0;a=(c[a+24>>2]|0)+68|0;e=c[a>>2]|0;if(!e)return 0;f=c[b+44>>2]|0;d=a;b=e;while(1){a=b+32|0;if((b|0)==(f|0))break;b=c[a>>2]|0;if(!b){g=7;break}else d=a}if((g|0)==7)return 0;c[d>>2]=c[a>>2];return 0}function $k(a,b){a=a|0;b=b|0;var d=0;a=c[(c[a>>2]|0)+272>>2]|0;if(!a)return 0;while(1){if((c[a>>2]|0)==(b|0))break;a=c[a+12>>2]|0;if(!a){d=6;break}}if((d|0)==6)return 0;c[a>>2]=0;return 0}function al(b,e){b=b|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;r=Ra;Ra=Ra+16|0;q=r;if(!e){q=0;Ra=r;return q|0}m=c[b+12>>2]|0;if((c[e>>2]|0)<=0){q=0;Ra=r;return q|0}n=b+8|0;p=b+4|0;k=0;l=e+8|0;a:while(1){if(!(c[n>>2]|0)){i=l+4|0;j=c[i>>2]|0;do if(j|0){h=a[j>>0]|0;f=(d[208+(h&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0;if(!(h<<24>>24==0|(f|0)!=0)){g=m;h=j;do{h=h+1|0;g=g+1|0;s=a[h>>0]|0;f=(d[208+(s&255)>>0]|0)-(d[208+(d[g>>0]|0)>>0]|0)|0}while(!(s<<24>>24==0|(f|0)!=0))}h=c[b>>2]|0;if(f|0){g=10;break a}f=c[h>>2]|0;if(f|0){if(c[f+480>>2]|0){Xd(f,j);break}s=j;if((c[f+304>>2]|0)>>>0<=s>>>0?(c[f+308>>2]|0)>>>0>s>>>0:0){s=f+300|0;c[j>>2]=c[s>>2];c[s>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{s=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);c[i>>2]=0;c[l>>2]=c[p>>2]}if(cl(b,c[l+20>>2]|0)|0){f=1;g=30;break}if(dl(b,c[l+44>>2]|0)|0){f=1;g=30;break}if((a[l+37>>0]&4?(o=c[l+64>>2]|0,o|0):0)?(c[o>>2]|0)>0:0){f=o+4|0;g=0;while(1){if(dl(b,c[f>>2]|0)|0){f=1;g=30;break a}g=g+1|0;if((g|0)>=(c[o>>2]|0))break;else f=f+20|0}}k=k+1|0;if((k|0)>=(c[e>>2]|0)){f=0;g=30;break}else l=l+72|0}if((g|0)==10){s=c[b+20>>2]|0;c[q>>2]=c[b+16>>2];c[q+4>>2]=s;c[q+8>>2]=j;cd(h,42344,q);s=1;Ra=r;return s|0}else if((g|0)==30){Ra=r;return f|0}return 0}function bl(d,f,g){d=d|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,x=0,y=0,z=0,A=0;A=Ra;Ra=Ra+16|0;n=A+8|0;m=A;s=A+12|0;q=c[f+12>>2]|0;p=d+40|0;y=c[p>>2]|0;z=y+1|0;c[p>>2]=y+2;k=c[d>>2]|0;i=c[f+24>>2]|0;j=c[k+16>>2]|0;if(!i)t=-1e6;else{h=0;while(1)if((c[j+(h<<4)+12>>2]|0)==(i|0)){t=h;break}else h=h+1|0}i=c[f>>2]|0;h=c[j+(t<<4)>>2]|0;do if(((a[k+165>>0]|0)==0?(a[d+200>>0]|0)==0:0)?(l=c[k+312>>2]|0,l|0):0){h=$a[l&127](c[k+316>>2]|0,27,i,0,h,c[d+240>>2]|0)|0;if((h|0)==1){cd(d,39216,m);c[d+12>>2]=23;Ra=A;return}if((h|2|0)==2){if(!h)break;Ra=A;return}else{cd(d,39231,n);c[d+12>>2]=1;Ra=A;return}}while(0);Hj(d,t,c[q+28>>2]|0,1,c[q>>2]|0);n=d+8|0;h=c[n>>2]|0;if(!h){k=c[d>>2]|0;if((c[d+116>>2]|0)==0?(b[k+76>>1]&8)==0:0)a[d+23>>0]=1;a:do if(c[k+272>>2]|0)if(!(a[k+81>>0]|0))o=26;else{Ra=A;return}else{do if((e[k+276>>1]|0)>=224){h=k+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];j=k+284|0;c[j>>2]=(c[j>>2]|0)+1;j=i;break a}h=k+296|0;i=c[h>>2]|0;if(!i){h=k+292|0;break}else{c[h>>2]=c[i>>2];j=k+284|0;c[j>>2]=(c[j>>2]|0)+1;j=i;break a}}else h=k+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;o=26}while(0);if((o|0)==26)j=_d(k,224,0)|0;if(!j){Ra=A;return}h=j+104|0;i=h+120|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(i|0));c[j>>2]=k;h=k+4|0;i=c[h>>2]|0;if(i|0)c[i+4>>2]=j;c[j+8>>2]=i;c[j+4>>2]=0;c[h>>2]=j;c[j+20>>2]=381479589;c[j+12>>2]=d;c[n>>2]=j;Di(j,61,0,1,0)|0;w=j}else w=h;if((g|0)>-1)l=g;else l=c[f+44>>2]|0;o=Ij(d,f)|0;x=c[p>>2]|0;c[p>>2]=x+1;r=f+50|0;i=e[r>>1]|0;m=(o|0)==0;if(!m)c[o>>2]=(c[o>>2]|0)+1;u=w+108|0;h=c[u>>2]|0;v=w+112|0;if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;p=c[w+104>>2]|0;a[p+(h*20|0)>>0]=114;b[p+(h*20|0)+2>>1]=0;c[p+(h*20|0)+4>>2]=x;c[p+(h*20|0)+8>>2]=0;c[p+(h*20|0)+12>>2]=i;c[p+(h*20|0)+16>>2]=0;a[p+(h*20|0)+1>>0]=0}else h=Di(w,114,x,0,i)|0;i=c[w>>2]|0;do if(!(a[i+81>>0]|0)){if((h|0)<0)h=(c[u>>2]|0)+-1|0;i=c[w+104>>2]|0;j=i+(h*20|0)+1|0;if(a[j>>0]|0){Ei(w,i+(h*20|0)|0,o,-9);break}if(!m){c[i+(h*20|0)+16>>2]=o;a[j>>0]=-9}}else if(!(m|(c[i+480>>2]|0)!=0)?(p=(c[o>>2]|0)+-1|0,c[o>>2]=p,(p|0)==0):0){h=c[o+12>>2]|0;if(h|0){if(c[h+480>>2]|0){Xd(h,o);break}p=o;if((c[h+304>>2]|0)>>>0<=p>>>0?(c[h+308>>2]|0)>>>0>p>>>0:0){p=h+300|0;c[o>>2]=c[p>>2];c[p>>2]=o;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{p=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}while(0);Gj(d,y,t,q,108);h=c[u>>2]|0;if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;q=c[w+104>>2]|0;a[q+(h*20|0)>>0]=36;b[q+(h*20|0)+2>>1]=0;c[q+(h*20|0)+4>>2]=y;c[q+(h*20|0)+8>>2]=0;c[q+(h*20|0)+12>>2]=0;c[q+(h*20|0)+16>>2]=0;a[q+(h*20|0)+1>>0]=0}else h=Di(w,36,y,0,0)|0;q=d+19|0;i=a[q>>0]|0;if(!(i<<24>>24)){k=d+44|0;p=(c[k>>2]|0)+1|0;c[k>>2]=p}else{p=i+-1<<24>>24;a[q>>0]=p;p=c[d+148+((p&255)<<2)>>2]|0}i=c[d+116>>2]|0;a[((i|0)==0?d:i)+20>>0]=1;el(d,f,y,p,0,s,0,0)|0;i=c[u>>2]|0;if((c[v>>2]|0)>(i|0)){c[u>>2]=i+1;k=c[w+104>>2]|0;a[k+(i*20|0)>>0]=-125;b[k+(i*20|0)+2>>1]=0;c[k+(i*20|0)+4>>2]=x;c[k+(i*20|0)+8>>2]=p;c[k+(i*20|0)+12>>2]=0;c[k+(i*20|0)+16>>2]=0;a[k+(i*20|0)+1>>0]=0}else Di(w,131,x,p,0)|0;i=c[s>>2]|0;do if(i|0){j=c[n>>2]|0;k=c[j+12>>2]|0;i=~i;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,j,i);break}else{c[(c[k+64>>2]|0)+(i<<2)>>2]=c[j+108>>2];break}}while(0);i=h+1|0;j=c[u>>2]|0;if((c[v>>2]|0)>(j|0)){c[u>>2]=j+1;s=c[w+104>>2]|0;a[s+(j*20|0)>>0]=5;b[s+(j*20|0)+2>>1]=0;c[s+(j*20|0)+4>>2]=y;c[s+(j*20|0)+8>>2]=i;c[s+(j*20|0)+12>>2]=0;c[s+(j*20|0)+16>>2]=0;a[s+(j*20|0)+1>>0]=0}else Di(w,5,y,i,0)|0;i=c[u>>2]|0;if(!(a[(c[w>>2]|0)+81>>0]|0))h=(c[w+104>>2]|0)+(((h|0)<0?i+-1|0:h)*20|0)|0;else h=59308;c[h+8>>2]=i;do if((g|0)<0)if((c[v>>2]|0)>(i|0)){c[u>>2]=i+1;s=c[w+104>>2]|0;a[s+(i*20|0)>>0]=-119;b[s+(i*20|0)+2>>1]=0;c[s+(i*20|0)+4>>2]=l;c[s+(i*20|0)+8>>2]=t;c[s+(i*20|0)+12>>2]=0;c[s+(i*20|0)+16>>2]=0;a[s+(i*20|0)+1>>0]=0;break}else{Di(w,137,l,t,0)|0;break}while(0);h=c[u>>2]|0;if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;s=c[w+104>>2]|0;a[s+(h*20|0)>>0]=109;b[s+(h*20|0)+2>>1]=0;c[s+(h*20|0)+4>>2]=z;c[s+(h*20|0)+8>>2]=l;c[s+(h*20|0)+12>>2]=t;c[s+(h*20|0)+16>>2]=0;a[s+(h*20|0)+1>>0]=0}else h=Di(w,109,z,l,t)|0;i=c[w>>2]|0;b:do if(!(a[i+81>>0]|0)){if((h|0)<0)h=(c[u>>2]|0)+-1|0;i=c[w+104>>2]|0;j=i+(h*20|0)+1|0;if(a[j>>0]|0){Ei(w,i+(h*20|0)|0,o,-9);break}if(!m){c[i+(h*20|0)+16>>2]=o;a[j>>0]=-9}}else if(!(m|(c[i+480>>2]|0)!=0)?(t=(c[o>>2]|0)+-1|0,c[o>>2]=t,(t|0)==0):0){h=c[o+12>>2]|0;do if(h|0){if(c[h+480>>2]|0){Xd(h,o);break b}i=o;if((c[h+304>>2]|0)>>>0>i>>>0)break;if((c[h+308>>2]|0)>>>0<=i>>>0)break;t=h+300|0;c[o>>2]=c[t>>2];c[t>>2]=o;break b}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{t=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}while(0);h=c[u>>2]|0;if((h|0)>0)b[(c[w+104>>2]|0)+((h+-1|0)*20|0)+2>>1]=(g>>31)+16&65520|1;if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;l=c[w+104>>2]|0;a[l+(h*20|0)>>0]=34;b[l+(h*20|0)+2>>1]=0;c[l+(h*20|0)+4>>2]=x;c[l+(h*20|0)+8>>2]=0;c[l+(h*20|0)+12>>2]=0;c[l+(h*20|0)+16>>2]=0;a[l+(h*20|0)+1>>0]=0;l=h}else l=Di(w,34,x,0,0)|0;h=c[u>>2]|0;if(!(a[f+54>>0]|0))k=h;else{if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;j=c[w+104>>2]|0;a[j+(h*20|0)>>0]=11;b[j+(h*20|0)+2>>1]=0;c[j+(h*20|0)+4>>2]=0;c[j+(h*20|0)+8>>2]=1;c[j+(h*20|0)+12>>2]=0;c[j+(h*20|0)+16>>2]=0;a[j+(h*20|0)+1>>0]=0;j=h}else j=Di(w,11,0,1,0)|0;k=c[u>>2]|0;i=e[r>>1]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;h=c[w+104>>2]|0;a[h+(k*20|0)>>0]=125;b[h+(k*20|0)+2>>1]=0;c[h+(k*20|0)+4>>2]=x;c[h+(k*20|0)+8>>2]=j;c[h+(k*20|0)+12>>2]=p;c[h+(k*20|0)+16>>2]=0;a[h+(k*20|0)+1>>0]=0;h=k}else h=Di(w,125,x,j,p)|0;if(!(a[(c[w>>2]|0)+81>>0]|0)){g=c[w+104>>2]|0;a[g+(h*20|0)+1>>0]=-3;c[g+(h*20|0)+16>>2]=i}fl(d,2,f);h=c[u>>2]|0;if(!(a[(c[w>>2]|0)+81>>0]|0))i=(c[w+104>>2]|0)+(((j|0)<0?h+-1|0:j)*20|0)|0;else i=59308;c[i+8>>2]=h}if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;f=c[w+104>>2]|0;a[f+(h*20|0)>>0]=126;b[f+(h*20|0)+2>>1]=0;c[f+(h*20|0)+4>>2]=x;c[f+(h*20|0)+8>>2]=p;c[f+(h*20|0)+12>>2]=z;c[f+(h*20|0)+16>>2]=0;a[f+(h*20|0)+1>>0]=0}else Di(w,126,x,p,z)|0;h=c[u>>2]|0;if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;f=c[w+104>>2]|0;a[f+(h*20|0)>>0]=-126;b[f+(h*20|0)+2>>1]=0;c[f+(h*20|0)+4>>2]=z;c[f+(h*20|0)+8>>2]=0;c[f+(h*20|0)+12>>2]=0;c[f+(h*20|0)+16>>2]=0;a[f+(h*20|0)+1>>0]=0}else Di(w,130,z,0,0)|0;h=c[u>>2]|0;if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;f=c[w+104>>2]|0;a[f+(h*20|0)>>0]=-124;b[f+(h*20|0)+2>>1]=0;c[f+(h*20|0)+4>>2]=z;c[f+(h*20|0)+8>>2]=p;c[f+(h*20|0)+12>>2]=0;c[f+(h*20|0)+16>>2]=0;a[f+(h*20|0)+1>>0]=0}else Di(w,132,z,p,0)|0;h=c[u>>2]|0;if((h|0)>0)b[(c[w+104>>2]|0)+((h+-1|0)*20|0)+2>>1]=16;do if(p){i=a[q>>0]|0;if((i&255)>=8)break;a[q>>0]=i+1<<24>>24;c[d+148+((i&255)<<2)>>2]=p;h=c[u>>2]|0}while(0);if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;d=c[w+104>>2]|0;a[d+(h*20|0)>>0]=3;b[d+(h*20|0)+2>>1]=0;c[d+(h*20|0)+4>>2]=x;c[d+(h*20|0)+8>>2]=k;c[d+(h*20|0)+12>>2]=0;c[d+(h*20|0)+16>>2]=0;a[d+(h*20|0)+1>>0]=0}else Di(w,3,x,k,0)|0;i=c[u>>2]|0;if(!(a[(c[w>>2]|0)+81>>0]|0))h=(c[w+104>>2]|0)+(((l|0)<0?i+-1|0:l)*20|0)|0;else h=59308;c[h+8>>2]=i;if((c[v>>2]|0)>(i|0)){c[u>>2]=i+1;d=c[w+104>>2]|0;a[d+(i*20|0)>>0]=117;b[d+(i*20|0)+2>>1]=0;c[d+(i*20|0)+4>>2]=y;c[d+(i*20|0)+8>>2]=0;c[d+(i*20|0)+12>>2]=0;c[d+(i*20|0)+16>>2]=0;a[d+(i*20|0)+1>>0]=0}else Di(w,117,y,0,0)|0;h=c[u>>2]|0;if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;y=c[w+104>>2]|0;a[y+(h*20|0)>>0]=117;b[y+(h*20|0)+2>>1]=0;c[y+(h*20|0)+4>>2]=z;c[y+(h*20|0)+8>>2]=0;c[y+(h*20|0)+12>>2]=0;c[y+(h*20|0)+16>>2]=0;a[y+(h*20|0)+1>>0]=0}else Di(w,117,z,0,0)|0;h=c[u>>2]|0;if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;z=c[w+104>>2]|0;a[z+(h*20|0)>>0]=117;b[z+(h*20|0)+2>>1]=0;c[z+(h*20|0)+4>>2]=x;c[z+(h*20|0)+8>>2]=0;c[z+(h*20|0)+12>>2]=0;c[z+(h*20|0)+16>>2]=0;a[z+(h*20|0)+1>>0]=0;Ra=A;return}else{Di(w,117,x,0,0)|0;Ra=A;return}}function cl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if(!b){a=0;return a|0}a:while(1){f=c[b>>2]|0;if(f|0?(c[f>>2]|0)>0:0){d=f+4|0;e=0;while(1){if(dl(a,c[d>>2]|0)|0){b=1;d=28;break a}e=e+1|0;if((e|0)>=(c[f>>2]|0))break;else d=d+20|0}}if(al(a,c[b+32>>2]|0)|0){b=1;d=28;break}if(dl(a,c[b+36>>2]|0)|0){b=1;d=28;break}f=c[b+40>>2]|0;if(f|0?(c[f>>2]|0)>0:0){d=f+4|0;e=0;while(1){if(dl(a,c[d>>2]|0)|0){b=1;d=28;break a}e=e+1|0;if((e|0)>=(c[f>>2]|0))break;else d=d+20|0}}if(dl(a,c[b+44>>2]|0)|0){b=1;d=28;break}f=c[b+48>>2]|0;if(f|0?(c[f>>2]|0)>0:0){d=f+4|0;e=0;while(1){if(dl(a,c[d>>2]|0)|0){b=1;d=28;break a}e=e+1|0;if((e|0)>=(c[f>>2]|0))break;else d=d+20|0}}if(dl(a,c[b+60>>2]|0)|0){b=1;d=28;break}f=b+64|0;d=c[f>>2]|0;if(d|0?(c[d>>2]|0)>0:0){e=0;do{if(cl(a,c[d+8+(e<<4)+8>>2]|0)|0){b=1;d=28;break a}e=e+1|0;d=c[f>>2]|0}while((e|0)<(c[d>>2]|0))}b=c[b+52>>2]|0;if(!b){b=0;d=28;break}}if((d|0)==28)return b|0;return 0}function dl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=Ra;Ra=Ra+16|0;h=i;if(!d){h=0;Ra=i;return h|0}a:while(1){if((a[d>>0]|0)==-108){e=c[b>>2]|0;if(!(a[(c[e>>2]|0)+165>>0]|0)){f=6;break}a[d>>0]=114}e=c[d+4>>2]|0;if(e&8404992|0){d=0;f=17;break}f=d+20|0;if(!(e&2048)){g=c[f>>2]|0;if(g|0?(c[g>>2]|0)>0:0){e=g+4|0;f=0;while(1){if(dl(b,c[e>>2]|0)|0){d=1;f=17;break a}f=f+1|0;if((f|0)>=(c[g>>2]|0))break;else e=e+20|0}}}else if(cl(b,c[f>>2]|0)|0){d=1;f=17;break}if(dl(b,c[d+16>>2]|0)|0){d=1;f=17;break}d=c[d+12>>2]|0;if(!d){d=0;f=17;break}}if((f|0)==6){c[h>>2]=c[b+16>>2];cd(e,42390,h);h=1;Ra=i;return h|0}else if((f|0)==17){Ra=i;return d|0}return 0}function el(e,f,g,h,i,j,k,l){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|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;I=e+8|0;K=c[I>>2]|0;if(j|0){n=c[f+36>>2]|0;if(n){o=e+56|0;m=(c[o>>2]|0)+-1|0;c[o>>2]=m;c[j>>2]=m;m=e+52|0;c[m>>2]=g+1;o=c[j>>2]|0;p=c[e>>2]|0;j=dk(p,n,0,0)|0;if(!(a[p+81>>0]|0))Tj(e,j,o,16);if(j)ni(p,j)}else m=j;c[m>>2]=0}if((i|0)!=0?(C=f+55|0,((d[C>>0]|d[C+1>>0]<<8)&8)!=0):0)m=f+50|0;else m=f+52|0;p=b[m>>1]|0;C=p&65535;B=p<<16>>16==1;do if(B){m=e+19|0;j=a[m>>0]|0;if(!(j<<24>>24)){y=e+44|0;z=(c[y>>2]|0)+1|0;c[y>>2]=z;break}else{z=j+-1<<24>>24;a[m>>0]=z;z=c[e+148+((z&255)<<2)>>2]|0;break}}else{m=e+32|0;j=c[m>>2]|0;n=e+28|0;o=c[n>>2]|0;if((o|0)<(C|0)){y=e+44|0;z=c[y>>2]|0;c[y>>2]=z+C;z=z+1|0;break}else{c[m>>2]=j+C;c[n>>2]=o-C;z=j;break}}while(0);do if(!k)m=0;else{if((z|0)==(l|0)?(c[k+36>>2]|0)==0:0){m=k;break}m=0}while(0);if(p<<16>>16){x=(m|0)==0;y=f+4|0;q=m+4|0;r=g+1|0;s=e+52|0;t=f+40|0;u=K+108|0;v=f+12|0;w=K+104|0;l=0;do{if(!x){k=b[(c[q>>2]|0)+(l<<1)>>1]|0;m=b[(c[y>>2]|0)+(l<<1)>>1]|0;if(k<<16>>16==-2?1:k<<16>>16!=m<<16>>16)A=28}else{m=b[(c[y>>2]|0)+(l<<1)>>1]|0;A=28}if((A|0)==28){A=0;k=l+z|0;if(m<<16>>16==-2){c[s>>2]=r;m=c[(c[t>>2]|0)+4+(l*20|0)>>2]|0;i=c[e>>2]|0;if(!m)p=0;else p=dk(i,m,0,0)|0;a:do if(!(a[i+81>>0]|0)){do if(p){if((a[p>>0]|0)!=-88){n=Jj(e,p,k)|0;break}m=c[I>>2]|0;j=c[p+28>>2]|0;n=m+108|0;o=c[n>>2]|0;if((c[m+112>>2]|0)>(o|0)){c[n>>2]=o+1;A=c[m+104>>2]|0;a[A+(o*20|0)>>0]=78;b[A+(o*20|0)+2>>1]=0;c[A+(o*20|0)+4>>2]=j;c[A+(o*20|0)+8>>2]=k;c[A+(o*20|0)+12>>2]=0;c[A+(o*20|0)+16>>2]=0;a[A+(o*20|0)+1>>0]=0;A=45;break a}else{Di(m,78,j,k,0)|0;A=45;break a}}else n=Jj(e,0,k)|0;while(0);if((n|0)!=(k|0)?(D=c[I>>2]|0,(D|0)!=0):0){m=D+108|0;j=c[m>>2]|0;if((c[D+112>>2]|0)>(j|0)){c[m>>2]=j+1;A=c[D+104>>2]|0;a[A+(j*20|0)>>0]=79;b[A+(j*20|0)+2>>1]=0;c[A+(j*20|0)+4>>2]=n;c[A+(j*20|0)+8>>2]=k;c[A+(j*20|0)+12>>2]=0;c[A+(j*20|0)+16>>2]=0;a[A+(j*20|0)+1>>0]=0;A=44;break}else{Di(D,79,n,k,0)|0;A=44;break}}else A=44}else A=44;while(0);if((A|0)==44?(A=0,p|0):0)A=45;if((A|0)==45){A=0;ni(i,p)}c[s>>2]=0}else Vj(c[I>>2]|0,c[v>>2]|0,g,m<<16>>16,k);m=c[u>>2]|0;if(((m|0)>0?(E=c[w>>2]|0,F=m+-1|0,G=E+(F*20|0)|0,(a[G>>0]|0)==84):0)?(H=c[K>>2]|0,(a[H+81>>0]|0)==0):0){i=E+(F*20|0)+1|0;k=E+(F*20|0)+16|0;kg(H,a[i>>0]|0,c[k>>2]|0);a[i>>0]=0;c[k>>2]=0;a[G>>0]=-86}}l=l+1|0}while((l|0)!=(C|0))}if(h|0){m=K+108|0;j=c[m>>2]|0;if((c[K+112>>2]|0)>(j|0)){c[m>>2]=j+1;I=c[K+104>>2]|0;a[I+(j*20|0)>>0]=92;b[I+(j*20|0)+2>>1]=0;c[I+(j*20|0)+4>>2]=z;c[I+(j*20|0)+8>>2]=C;c[I+(j*20|0)+12>>2]=h;c[I+(j*20|0)+16>>2]=0;a[I+(j*20|0)+1>>0]=0}else Di(K,92,z,C,h)|0;if(c[(c[f+12>>2]|0)+12>>2]|0?(J=gl(c[e>>2]|0,f)|0,(a[(c[K>>2]|0)+81>>0]|0)==0):0)Ei(K,(c[K+104>>2]|0)+(((c[m>>2]|0)+-1|0)*20|0)|0,J,0)}if(!B){m=e+28|0;if((c[m>>2]|0)>=(C|0))return z|0;c[m>>2]=C;c[e+32>>2]=z;return z|0}if(!z)return z|0;m=e+19|0;j=a[m>>0]|0;if((j&255)>=8)return z|0;a[m>>0]=j+1<<24>>24;c[e+148+((j&255)<<2)>>2]=z;return z|0}function fl(f,g,h){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,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=Ra;Ra=Ra+32|0;i=y;w=y+8|0;s=c[h+12>>2]|0;r=c[f>>2]|0;u=c[r+108>>2]|0;x=w+4|0;c[x>>2]=0;c[w>>2]=r;r=w+8|0;c[r>>2]=0;t=w+12|0;c[t>>2]=u;u=w+16|0;c[u>>2]=0;a[w+20>>0]=0;v=w+21|0;a[v>>0]=0;if(!(c[h+40>>2]|0)){n=h+50|0;if(b[n>>1]|0){o=s+4|0;p=h+4|0;m=0;do{q=c[(c[o>>2]|0)+(b[(c[p>>2]|0)+(m<<1)>>1]<<4)>>2]|0;do if(m|0){i=c[u>>2]|0;j=i+2|0;if(j>>>0<(c[r>>2]|0)>>>0){c[u>>2]=j;l=(c[x>>2]|0)+i|0;a[l>>0]=44;a[l+1>>0]=32;break}else{wb(w,42425,2);break}}while(0);j=c[s>>2]|0;if(!j)i=0;else i=(Eu(j)|0)&1073741823;k=c[u>>2]|0;l=k+i|0;if(l>>>0<(c[r>>2]|0)>>>0){if(i|0){c[u>>2]=l;ew((c[x>>2]|0)+k|0,j|0,i|0)|0}}else wb(w,j,i);i=c[u>>2]|0;j=i+1|0;if(j>>>0<(c[r>>2]|0)>>>0){c[u>>2]=j;a[(c[x>>2]|0)+i>>0]=46}else wb(w,31183,1);if(!q)i=0;else i=(Eu(q)|0)&1073741823;j=c[u>>2]|0;k=j+i|0;if(k>>>0<(c[r>>2]|0)>>>0){if(i|0){c[u>>2]=k;ew((c[x>>2]|0)+j|0,q|0,i|0)|0}}else wb(w,q,i);m=m+1|0}while(m>>>0<(e[n>>1]|0)>>>0)}}else{c[i>>2]=c[h>>2];Eb(w,42414,i)}i=c[x>>2]|0;if((i|0?(a[i+(c[u>>2]|0)>>0]=0,c[t>>2]|0):0)?(a[v>>0]&4)==0:0){x=$d(w)|0;w=h+55|0;w=d[w>>0]|d[w+1>>0]<<8;w=w&3;w=w<<16>>16==2;w=w?1555:2067;Uj(f,w,g,x,-7,2);Ra=y;return}x=c[x>>2]|0;w=h+55|0;w=d[w>>0]|d[w+1>>0]<<8;w=w&3;w=w<<16>>16==2;w=w?1555:2067;Uj(f,w,g,x,-7,2);Ra=y;return}function gl(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=f+16|0;g=c[m>>2]|0;if(g|0){m=g;return m|0}k=c[f+12>>2]|0;l=f+52|0;h=e[l>>1]|0;g=h+1|0;do if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](g)|0;c[m>>2]=g;if(!g)h=15;else h=21}else{i=Wa[c[29356>>2]&127](g)|0;if((c[14985]|0)>>>0<=h>>>0)c[14985]=g;h=59064;g=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&g>>>0>0){j=c[14978]|0;h=Tv(g|0,h|0,i|0,((i|0)<0)<<31>>31|0)|0;g=L()|0;c[14768]=((g|0)<0|(g|0)==0&h>>>0<=j>>>0)&1}g=Wa[c[29340>>2]&127](i)|0;if(!g){c[m>>2]=0;h=15;break}h=Wa[c[29352>>2]&127](g)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0)c[14987]=h;c[m>>2]=g;h=21}while(0);if((h|0)==15){g=d+81|0;if(a[g>>0]|0){m=0;return m|0}if(a[d+82>>0]|0){m=0;return m|0}a[g>>0]=1;if((c[d+180>>2]|0)>0)c[d+264>>2]=1;g=d+272|0;c[g>>2]=(c[g>>2]|0)+1;g=c[d+236>>2]|0;if(!g){m=0;return m|0}c[g+12>>2]=7;m=0;return m|0}else if((h|0)==21){if(!(b[l>>1]|0))h=0;else{j=f+4|0;d=k+4|0;i=f+40|0;h=0;do{g=b[(c[j>>2]|0)+(h<<1)>>1]|0;if(g<<16>>16<=-1)if(g<<16>>16==-1)g=68;else{g=Xj(c[(c[i>>2]|0)+4+(h*20|0)>>2]|0)|0;g=g<<24>>24==0?65:g}else g=a[(c[d>>2]|0)+(g<<16>>16<<4)+13>>0]|0;a[(c[m>>2]|0)+h>>0]=g;h=h+1|0}while(h>>>0<(e[l>>1]|0)>>>0);g=c[m>>2]|0}a[g+h>>0]=0;m=c[m>>2]|0;return m|0}return 0}function hl(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=c[b>>2]|0;l=g+20|0;f=c[l>>2]|0;if((f|0)<=0)return;k=g+16|0;if(!e){g=0;do{if(c[(c[k>>2]|0)+(g<<4)+4>>2]|0){rk(b,g);f=c[l>>2]|0}g=g+1|0}while((g|0)<(f|0));return}j=0;do{g=c[k>>2]|0;if(c[g+(j<<4)+4>>2]|0){h=c[g+(j<<4)>>2]|0;i=a[e>>0]|0;g=(d[208+(i&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0;if(!(i<<24>>24==0|(g|0)!=0)){i=e;do{i=i+1|0;h=h+1|0;m=a[i>>0]|0;g=(d[208+(m&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(m<<24>>24==0|(g|0)!=0))}if(!g){rk(b,j);f=c[l>>2]|0}}j=j+1|0}while((j|0)<(f|0));return}function il(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var 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;E=Ra;Ra=Ra+32|0;y=E+16|0;x=E+8|0;o=E;m=E+28|0;C=c[f>>2]|0;D=C+16|0;v=c[D>>2]|0;B=f+8|0;j=c[B>>2]|0;A=f+116|0;a:do if(!j){if((c[A>>2]|0)==0?(b[C+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[C+272>>2]|0)if(!(a[C+81>>0]|0))w=15;else{z=0;break a}else{do if((e[C+276>>1]|0)>=224){j=C+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];z=C+284|0;c[z>>2]=(c[z>>2]|0)+1;break b}j=C+296|0;k=c[j>>2]|0;if(!k){j=C+292|0;break}else{c[j>>2]=c[k>>2];z=C+284|0;c[z>>2]=(c[z>>2]|0)+1;break b}}else j=C+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;w=15}while(0);if((w|0)==15)k=_d(C,224,0)|0;if(!k)z=0;else{j=k+104|0;l=j+120|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(l|0));c[k>>2]=C;j=C+4|0;l=c[j>>2]|0;if(l|0)c[l+4>>2]=k;c[k+8>>2]=l;c[k+4>>2]=0;c[j>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=f;c[B>>2]=k;Di(k,61,0,1,0)|0;z=k}}else z=j;while(0);q=c[A>>2]|0;q=(q|0)==0?f:q;j=q+84|0;k=c[j>>2]|0;p=1<>2]=k|p,(h|0)==1):0)?(t=c[q>>2]|0,n=t+16|0,(c[(c[n>>2]|0)+20>>2]|0)==0):0)?(a[q+199>>0]|0)==0:0){j=Pe(c[t>>2]|0,0,t,m,0,542)|0;if(j|0){cd(q,32157,o);c[q+12>>2]=j;break}o=c[m>>2]|0;c[(c[n>>2]|0)+20>>2]=o;j=c[t+92>>2]|0;l=c[o+4>>2]|0;c[l+4>>2]=c[o>>2];if(!(b[l+22>>1]&2)){m=l+32|0;n=l+36|0;o=(c[m>>2]|0)-(c[n>>2]|0)|0;if(((j+-512|0)>>>0<65025?(j+-1&j|0)==0:0)?(c[m>>2]=j,s=l+80|0,r=c[s>>2]|0,r|0):0){k=r+-4|0;c[s>>2]=k;j=k;do if((c[14816]|0)>>>0<=j>>>0)if((c[14817]|0)>>>0>j>>>0){c[14979]=(c[14979]|0)+-1;c[k>>2]=c[14819];c[14819]=k;r=(c[14820]|0)+1|0;c[14820]=r;c[14821]=(r|0)<(c[14815]|0)&1;break}else{j=Wa[c[29352>>2]&127](k)|0;w=35;break}else{j=Wa[c[29352>>2]&127](k)|0;w=35}while(0);do if((w|0)==35){c[14980]=(c[14980]|0)-j;if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{r=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[s>>2]=0}s=Se(c[l>>2]|0,m,o)|0;c[n>>2]=(c[m>>2]|0)-(o&65535);if((s|0)==7){j=t+81|0;if((a[j>>0]|0)==0?(a[t+82>>0]|0)==0:0){a[j>>0]=1;if((c[t+180>>2]|0)>0)c[t+264>>2]=1;j=t+272|0;c[j>>2]=(c[j>>2]|0)+1;j=c[t+236>>2]|0;if(j|0)c[j+12>>2]=7}break}}}while(0);r=q+80|0;c[r>>2]=c[r>>2]|p;r=q+20|0;a[r>>0]=a[r>>0]|1;r=g+56|0;do if(c[r>>2]|0){j=z+108|0;k=c[j>>2]|0;if((c[z+112>>2]|0)>(k|0)){c[j>>2]=k+1;j=c[z+104>>2]|0;a[j+(k*20|0)>>0]=-96;j=j+(k*20|0)+1|0;l=j+19|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(l|0));break}else{Di(z,160,0,0,0)|0;break}}while(0);j=c[(c[(c[f>>2]|0)+16>>2]|0)+28>>2]|0;do if(!(a[f+146>>0]|0)){q=c[g+72>>2]|0;if((q|0)!=(j|0)?(u=c[j+48>>2]|0,(u|0)!=0):0){p=g+68|0;o=u;j=0;do{n=c[o+8>>2]|0;if((c[n+24>>2]|0)==(q|0)){l=c[n+4>>2]|0;m=c[g>>2]|0;u=a[l>>0]|0;k=(d[208+(u&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0;if(!(u<<24>>24==0|(k|0)!=0))do{l=l+1|0;m=m+1|0;u=a[l>>0]|0;k=(d[208+(u&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(u<<24>>24==0|(k|0)!=0));if(!k){if(!j)j=c[p>>2]|0;c[n+32>>2]=j;j=n}}o=c[o>>2]|0}while((o|0)!=0);if(!j)w=66}else w=66;if((w|0)==66){j=c[g+68>>2]|0;if(!j)break}do{jl(f,j);j=c[j+32>>2]|0}while((j|0)!=0)}while(0);j=v+(h<<4)|0;if(!(c[g+36>>2]&8))q=g;else{q=c[g>>2]|0;c[x>>2]=c[j>>2];c[x+4>>2]=q;Ak(f,42781,x);q=g}x=c[q>>2]|0;c[y>>2]=c[j>>2];c[y+4>>2]=34585;c[y+8>>2]=x;Ak(f,42826,y);c:do if(!i)if(!(c[r>>2]|0)){o=c[g+28>>2]|0;p=g+8|0;n=g+72|0;l=0;while(1){m=(l|0)==0;k=m|(o|0)<(l|0)?o:0;j=c[p>>2]|0;if(j)do{g=c[j+44>>2]|0;k=(g|0)>(k|0)&(m|(g|0)<(l|0))?g:k;j=c[j+20>>2]|0}while((j|0)!=0);if(!k){w=83;break c}l=c[n>>2]|0;if(!l)j=-1e6;else{m=c[(c[f>>2]|0)+16>>2]|0;j=0;while(1)if((c[m+(j<<4)+12>>2]|0)==(l|0))break;else j=j+1|0}kl(f,k,j);l=k}}else w=85;else w=83;while(0);if((w|0)==83)if(!(c[r>>2]|0)){m=z+108|0;k=z+112|0}else w=85;if((w|0)==85){l=c[q>>2]|0;m=z+108|0;j=c[m>>2]|0;k=z+112|0;if((c[k>>2]|0)>(j|0)){c[m>>2]=j+1;g=c[z+104>>2]|0;a[g+(j*20|0)>>0]=-94;b[g+(j*20|0)+2>>1]=0;c[g+(j*20|0)+4>>2]=h;c[g+(j*20|0)+8>>2]=0;c[g+(j*20|0)+12>>2]=0;c[g+(j*20|0)+16>>2]=0;a[g+(j*20|0)+1>>0]=0}else j=Di(z,162,h,0,0)|0;if(!(a[(c[z>>2]|0)+81>>0]|0)){if((j|0)<0)j=(c[m>>2]|0)+-1|0;Ei(z,(c[z+104>>2]|0)+(j*20|0)|0,l,0)}A=c[A>>2]|0;a[((A|0)==0?f:A)+21>>0]=1}l=c[q>>2]|0;j=c[m>>2]|0;if((c[k>>2]|0)>(j|0)){c[m>>2]=j+1;A=c[z+104>>2]|0;a[A+(j*20|0)>>0]=-113;b[A+(j*20|0)+2>>1]=0;c[A+(j*20|0)+4>>2]=h;c[A+(j*20|0)+8>>2]=0;c[A+(j*20|0)+12>>2]=0;c[A+(j*20|0)+16>>2]=0;a[A+(j*20|0)+1>>0]=0}else j=Di(z,143,h,0,0)|0;if(!(a[(c[z>>2]|0)+81>>0]|0)){if((j|0)<0)j=(c[m>>2]|0)+-1|0;Ei(z,(c[z+104>>2]|0)+(j*20|0)|0,l,0)}m=c[B>>2]|0;j=(c[c[(c[(c[f>>2]|0)+16>>2]|0)+(h<<4)+12>>2]>>2]|0)+1|0;k=m+108|0;l=c[k>>2]|0;if((c[m+112>>2]|0)>(l|0)){c[k>>2]=l+1;f=c[m+104>>2]|0;a[f+(l*20|0)>>0]=95;b[f+(l*20|0)+2>>1]=0;c[f+(l*20|0)+4>>2]=h;c[f+(l*20|0)+8>>2]=1;c[f+(l*20|0)+12>>2]=j;c[f+(l*20|0)+16>>2]=0;a[f+(l*20|0)+1>>0]=0}else Di(m,95,h,1,j)|0;l=c[(c[D>>2]|0)+(h<<4)+12>>2]|0;k=l+78|0;j=b[k>>1]|0;if(!(j&2)){Ra=E;return}l=c[l+16>>2]|0;if(l){q=C+480|0;r=C+304|0;s=C+308|0;t=C+300|0;do{j=c[l+8>>2]|0;if(c[j+12>>2]|0){p=j+4|0;k=c[p>>2]|0;d:do if(k){j=j+42|0;if((b[j>>1]|0)>0){o=0;while(1){m=c[k>>2]|0;e:do if(m|0){if(c[q>>2]|0){Xd(C,m);break}n=m;do if((c[r>>2]|0)>>>0<=n>>>0){if((c[s>>2]|0)>>>0<=n>>>0)break;c[m>>2]=c[t>>2];c[t>>2]=m;break e}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{f=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);m=c[k+4>>2]|0;if(m|0)ni(C,m);m=c[k+8>>2]|0;f:do if(m|0){if(c[q>>2]|0){Xd(C,m);break}n=m;do if((c[r>>2]|0)>>>0<=n>>>0){if((c[s>>2]|0)>>>0<=n>>>0)break;c[m>>2]=c[t>>2];c[t>>2]=m;break f}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{f=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);o=o+1|0;if((o|0)>=(b[j>>1]|0))break;else k=k+16|0}k=c[p>>2]|0}if(k){if(c[q>>2]|0){Xd(C,k);break}m=k;do if((c[r>>2]|0)>>>0<=m>>>0){if((c[s>>2]|0)>>>0<=m>>>0)break;c[k>>2]=c[t>>2];c[t>>2]=k;break d}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{f=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}}else j=j+42|0;while(0);c[p>>2]=0;b[j>>1]=0}l=c[l>>2]|0}while((l|0)!=0);j=(c[(c[D>>2]|0)+(h<<4)+12>>2]|0)+78|0;k=j;j=b[j>>1]|0}b[k>>1]=j&-3;Ra=E;return} -function ls(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if(mb()|0){b=7;return b|0}if(!(c[7324]|0)){a=Wa[c[29340>>2]&127](36)|0;if(!a){b=7;return b|0}}else{e=Wa[c[29356>>2]&127](36)|0;if((c[14985]|0)>>>0<36)c[14985]=36;d=59064;a=c[d>>2]|0;d=c[d+4>>2]|0;if((d|0)>0|(d|0)==0&a>>>0>0){f=c[14978]|0;d=Tv(a|0,d|0,e|0,((e|0)<0)<<31>>31|0)|0;a=L()|0;c[14768]=((a|0)<0|(a|0)==0&d>>>0<=f>>>0)&1}a=Wa[c[29340>>2]&127](e)|0;if(!a){f=7;return f|0}d=Wa[c[29352>>2]&127](a)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0)c[14987]=d}d=a;e=d+36|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));c[b>>2]=a;f=0;return f|0}function ms(a){a=a|0;var b=0,d=0,e=0;b=a+8|0;d=c[b>>2]|0;if(d|0){Wa[c[(c[(c[a>>2]|0)+12>>2]|0)+16>>2]&127](d)|0;c[b>>2]=0}d=a+4|0;b=c[d>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{e=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);c[d>>2]=0;e=a+12|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;if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{e=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function ns(d,e,f,g,h){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;k=c[d>>2]|0;n=d+8|0;f=c[n>>2]|0;if(f|0){Wa[c[(c[k+12>>2]|0)+16>>2]&127](f)|0;c[n>>2]=0}m=d+4|0;f=c[m>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{l=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[m>>2]=0;l=d+12|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;c[l+16>>2]=0;c[l+20>>2]=0;if((e|0)!=1){d=1;return d|0}g=c[h>>2]|0;f=b[g+8>>1]|0;if((f&514)==514?(a[g+10>>0]|0)==1:0){i=c[g+16>>2]|0;e=g}else if(!(f&1)){i=Gg(g,1)|0;e=c[h>>2]|0}else{i=0;e=g}f=b[e+8>>1]|0;if((f&2)!=0?(a[e+10>>0]|0)==1:0)e=c[e+12>>2]|0;else j=16;do if((j|0)==16){f=f&65535;if(!(f&16)){if(f&1|0){e=0;break}e=Fg(e,1)|0;break}else{g=c[e+12>>2]|0;if(!(f&16384)){e=g;break}e=(c[e>>2]|0)+g|0;break}}while(0);f=e+1|0;f=pb(f,((f|0)<0)<<31>>31)|0;c[m>>2]=f;if(!f){d=7;return d|0}ew(f|0,i|0,e|0)|0;a[(c[m>>2]|0)+e>>0]=0;g=k+16|0;f=Za[c[(c[k+12>>2]|0)+12>>2]&127](c[g>>2]|0,c[m>>2]|0,e,n)|0;if(f|0){d=f;return d|0}k=c[n>>2]|0;c[k>>2]=c[g>>2];g=c[d>>2]|0;c[l>>2]=(c[l>>2]|0)+1;g=$a[c[(c[g+12>>2]|0)+20>>2]&127](k,d+16|0,d+20|0,d+24|0,d+28|0,d+32|0)|0;if(!g){d=0;return d|0}f=c[n>>2]|0;if(f|0){Wa[c[(c[(c[d>>2]|0)+12>>2]|0)+16>>2]&127](f)|0;c[n>>2]=0}f=c[m>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{d=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[m>>2]=0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;c[l+16>>2]=0;c[l+20>>2]=0;d=(g|0)==101?0:g;return d|0}function os(a){a=a|0;var b=0,d=0,e=0,f=0;e=c[a>>2]|0;f=a+12|0;c[f>>2]=(c[f>>2]|0)+1;d=a+8|0;e=$a[c[(c[e+12>>2]|0)+20>>2]&127](c[d>>2]|0,a+16|0,a+20|0,a+24|0,a+28|0,a+32|0)|0;if(!e)return 0;b=c[d>>2]|0;if(b|0){Wa[c[(c[(c[a>>2]|0)+12>>2]|0)+16>>2]&127](b)|0;c[d>>2]=0}a=a+4|0;b=c[a>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);c[a>>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;return ((e|0)==101?0:e)|0}function ps(a){a=a|0;return (c[a+16>>2]|0)==0|0}function qs(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;switch(e|0){case 0:{if((yc(c[d>>2]|0,c[a+4>>2]|0,-1,1,-1)|0)!=18)return 0;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return 0}case 1:{if((yc(c[d>>2]|0,c[a+16>>2]|0,c[a+20>>2]|0,1,-1)|0)!=18)return 0;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return 0}case 2:{f=c[a+24>>2]|0;a=c[d>>2]|0;e=((f|0)<0)<<31>>31;d=a+8|0;if(!(b[d>>1]&9216)){c[a>>2]=f;c[a+4>>2]=e;b[d>>1]=4;return 0}else{Pg(a,f,e);return 0}}case 3:{f=c[a+28>>2]|0;a=c[d>>2]|0;e=((f|0)<0)<<31>>31;d=a+8|0;if(!(b[d>>1]&9216)){c[a>>2]=f;c[a+4>>2]=e;b[d>>1]=4;return 0}else{Pg(a,f,e);return 0}}default:{f=c[a+32>>2]|0;a=c[d>>2]|0;e=((f|0)<0)<<31>>31;d=a+8|0;if(!(b[d>>1]&9216)){c[a>>2]=f;c[a+4>>2]=e;b[d>>1]=4;return 0}else{Pg(a,f,e);return 0}}}return 0}function rs(a,b){a=a|0;b=b|0;a=c[a+12>>2]|0;c[b>>2]=a;c[b+4>>2]=((a|0)<0)<<31>>31;return 0}function ss(h,i,j){h=h|0;i=i|0;j=j|0;var 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;A=Ra;Ra=Ra+64|0;z=A+56|0;y=A+48|0;x=A;i=c[j>>2]|0;k=e[i+8>>1]|0;do if(!(k&4)){if(k&8|0){k=Mg(+g[i>>3])|0;L()|0;break}if(!(k&18)){Ra=A;return}else{k=Ng(a[i+10>>0]|0,c[i+12>>2]|0,c[i+16>>2]|0)|0;L()|0;break}}else k=c[i>>2]|0;while(0);i=k&255;if((i+-1|0)>>>0>4){Ra=A;return}m=i<<1;l=(k<<3)+8|0;j=j+4|0;w=mc(c[j>>2]|0)|0;j=c[j>>2]|0;i=b[j+8>>1]|0;if((i&2)!=0?(a[j+10>>0]|0)==1:0)k=c[j+12>>2]|0;else n=11;do if((n|0)==11){i=i&65535;if(i&16|0){k=c[j+12>>2]|0;if(!(i&16384))break;k=(c[j>>2]|0)+k|0;break}if(!(i&1)){k=Fg(j,1)|0;break}else{Ra=A;return}}while(0);if((k|0)<4){Ra=A;return}u=w+2|0;t=w+3|0;s=l&248;if((k|0)<(G(d[u>>0]<<8|d[t>>0],s)|0)){Ra=A;return}v=zb(0)|0;if(!(d[u>>0]<<8|d[t>>0]))if(!v){i=0;j=7}else n=34;else{n=m&254;o=v+16|0;p=v+8|0;q=v+4|0;r=(n|0)==0;m=0;do{k=G(m,s)|0;j=w+(k|4)|0;E=cw(d[j>>0]|0,0,56)|0;l=L()|0;F=cw(d[j+1>>0]|0,0,48)|0;l=L()|0|l;D=cw(d[j+2>>0]|0,0,40)|0;l=l|(L()|0);l=l|d[j+3>>0];C=cw(d[j+4>>0]|0,0,24)|0;l=l|(L()|0);B=cw(d[j+5>>0]|0,0,16)|0;l=l|(L()|0);i=cw(d[j+6>>0]|0,0,8)|0;l=l|(L()|0);j=Sv(F|E|D|C|B|i|0,l|0,d[j+7>>0]|0,0)|0;l=L()|0;i=x;c[i>>2]=j;c[i+4>>2]=l;i=0;k=w+(k+12)|0;while(1){c[x+8+(i<<2)>>2]=d[k+1>>0]<<16|d[k>>0]<<24|d[k+2>>0]<<8|d[k+3>>0];c[x+8+((i|1)<<2)>>2]=d[k+5>>0]<<16|d[k+4>>0]<<24|d[k+6>>0]<<8|d[k+7>>0];i=i+2|0;if(i>>>0>=n>>>0)break;else k=k+8|0}do if(m|0){i=c[o>>2]|0;k=i+1|0;if(k>>>0<(c[p>>2]|0)>>>0){c[o>>2]=k;a[(c[q>>2]|0)+i>>0]=32;break}else{wb(v,44513,1);break}}while(0);F=y;c[F>>2]=j;c[F+4>>2]=l;Eb(v,55646,y);if(!r){i=0;do{g[z>>3]=+f[x+8+(i<<2)>>2];Eb(v,55652,z);i=i+1|0}while((i|0)!=(n|0))}i=c[o>>2]|0;k=i+1|0;if(k>>>0<(c[p>>2]|0)>>>0){c[o>>2]=k;a[(c[q>>2]|0)+i>>0]=125}else wb(v,55656,1);m=m+1|0}while(m>>>0<(d[u>>0]<<8|d[t>>0])>>>0);n=34}do if((n|0)==34){j=d[v+20>>0]|0;if((v|0)!=29632){i=v+4|0;k=c[i>>2]|0;if(((k|0)!=0?(a[k+(c[v+16>>2]|0)>>0]=0,(c[v+12>>2]|0)!=0):0)?(a[v+21>>0]&4)==0:0)i=$d(v)|0;else i=c[i>>2]|0;if(!(c[7324]|0)){ab[c[29344>>2]&127](v);break}else{F=Wa[c[29352>>2]&127](v)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](v);break}}else i=0}while(0);k=h+20|0;if((yc(c[h>>2]|0,i,-1,1,90)|0)==18){c[k>>2]=18;yc(c[h>>2]|0,31223,-1,1,0)|0}c[k>>2]=(j|0)==0?-1:j;k=c[h>>2]|0;if(!(b[k+8>>1]&1)){Ra=A;return}switch((j&255)<<24>>24){case 101:{i=50782;break}case 100:{i=50760;break}default:if(j>>>0<29?(520028155>>>j&1|0)!=0:0)i=c[22960+(j<<2)>>2]|0;else i=50724}yc(k,i,-1,1,0)|0;Ra=A;return}function ts(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0;i=c[g>>2]|0;f=b[i+8>>1]|0;a:do if((f&15|16)<<16>>16==16){if((f&2)!=0?(a[i+10>>0]|0)==1:0)f=c[i+12>>2]|0;else h=5;do if((h|0)==5){h=f&65535;if(!(h&16)){if(h&1|0)break a;f=Fg(i,1)|0;break}else{f=c[i+12>>2]|0;if(!(h&16384))break;f=(c[i>>2]|0)+f|0;break}}while(0);if((f|0)>=2){i=mc(c[g>>2]|0)|0;i=d[i>>0]<<8|d[i+1>>0];f=c[e>>2]|0;h=f+8|0;if(!(b[h>>1]&9216)){e=f;c[e>>2]=i;c[e+4>>2]=0;b[h>>1]=4;return}else{Pg(f,i,0);return}}}while(0);c[e+20>>2]=1;yc(c[e>>2]|0,55658,-1,1,-1)|0;return}function us(d,f,g){d=d|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;t=Ra;Ra=Ra+80|0;o=t+16|0;m=t+8|0;k=t;s=t+20|0;if((f+-1|0)>>>0>1){c[d+20>>2]=1;yc(c[d>>2]|0,55691,-1,1,-1)|0;Ra=t;return}i=c[g>>2]|0;do if(i){h=b[i+8>>1]|0;if((h&514)==514?(a[i+10>>0]|0)==1:0){j=c[i+16>>2]|0;break}if(!(h&1))j=Gg(i,1)|0;else j=0}else j=0;while(0);do if((f|0)!=1){h=c[g+4>>2]|0;if(h){i=b[h+8>>1]|0;if((i&514)==514?(a[h+10>>0]|0)==1:0){g=c[h+16>>2]|0;break}if(!(i&1))g=Gg(h,1)|0;else g=0}else g=0}else{g=j;j=50919}while(0);r=c[(c[d>>2]|0)+32>>2]|0;q=s+12|0;h=q;i=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(i|0));c[s>>2]=r;c[s+4>>2]=j;c[s+8>>2]=g;if(a[r+79>>0]|0){n=nd(r,36223,0,0,0)|0;i=s+40|0;c[i>>2]=n;if(!n){f=1;p=19}else{n=1;h=0;l=i}}else{f=0;i=s+40|0;p=19}if((p|0)==19){c[k>>2]=j;c[k+4>>2]=g;h=vs(s,55742,k)|0;if(!h)h=0;else{p=(e[h+144>>1]|0)+-2|0;gc(h)|0;h=p}c[i>>2]=0;n=f;l=i}c[m>>2]=j;c[m+4>>2]=g;k=vs(s,53869,m)|0;if(k){f=k+144|0;p=(e[f>>1]|0)+~h|0;h=s+16|0;c[h>>2]=(p|0)/2|0;if((p|0)>=2){if((Gc(k)|0)==100){i=c[k+120>>2]|0;if((i|0)!=0?(e[f>>1]|0)>1:0){i=i+40|0;f=k}else{i=c[k>>2]|0;c[i+64>>2]=25;Ne(i,25);i=29576;f=k}j=b[i+8>>1]&31;i=c[f>>2]|0;g=k+40|0;f=c[g>>2]|0;if((f|0)==3082|(a[i+81>>0]|0)!=0){og(i);i=7}else i=c[i+68>>2]&f;c[g>>2]=i;c[q>>2]=1347440720>>>j&1}}else ws(s,55770,o);i=gc(k)|0;if((i|0)!=11)c[l>>2]=i}else h=s+16|0;if((c[h>>2]|0)>0){if(!(c[l>>2]|0))xs(s,0,0,1,0);q=c[s+32>>2]|0;ys(s,55801,q,((q|0)<0)<<31>>31);q=c[s+36>>2]|0;ys(s,55808,q,((q|0)<0)<<31>>31)}gc(c[s+20>>2]|0)|0;gc(c[s+24>>2]|0)|0;gc(c[s+28>>2]|0)|0;do if(n){h=nd(r,55816,0,0,0)|0;i=c[l>>2]|0;if(!i){c[l>>2]=h;p=46;break}else{h=i;i=c[s+44>>2]|0;p=49;break}}else{h=c[l>>2]|0;p=46}while(0);if((p|0)==46){i=c[s+44>>2]|0;if(!h){if((yc(c[d>>2]|0,(i|0)==0?45704:i,-1,1,-1)|0)==18){c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0}}else p=49}if((p|0)==49){c[d+20>>2]=h;f=c[d>>2]|0;if(b[f+8>>1]&1){switch(h|0){case 516:{h=50738;break}case 100:{h=50760;break}case 101:{h=50782;break}default:{h=h&255;if(h>>>0<29?(520028155>>>h&1|0)!=0:0)h=c[22960+(h<<2)>>2]|0;else h=50724}}yc(f,h,-1,1,0)|0}}h=i;if(!i){Ra=t;return}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);Ra=t;return}else{d=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);Ra=t;return}}function vs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=Ra;Ra=Ra+32|0;e=h;f=h+16|0;c[f>>2]=0;c[e>>2]=d;b=Ab(b,e)|0;d=a+40|0;e=(b|0)==0;do if(!(c[d>>2]|0))if(e){c[d>>2]=7;break}else{g=qd(c[a>>2]|0,b,-1,128,0,f,0)|0;c[d>>2]=g;g=6;break}else if(!e)g=6;while(0);do if((g|0)==6)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{g=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);Ra=h;return c[f>>2]|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;i=Ra;Ra=Ra+32|0;h=i+16|0;e=i;c[e>>2]=d;f=a+40|0;if(c[f>>2]|0){Ra=i;return}g=a+48|0;if((c[g>>2]|0)>=100){Ra=i;return}d=Ab(b,e)|0;if(!((d|0)!=0?(a=a+44|0,e=c[a>>2]|0,c[h>>2]=e,c[h+4>>2]=(e|0)==0?59952:35594,c[h+8>>2]=d,h=Bb(55820,h)|0,c[a>>2]=h,(h|0)!=0):0))c[f>>2]=7;c[g>>2]=(c[g>>2]|0)+1;Ra=i;return}function xs(e,g,i,j,k){e=e|0;g=g|0;i=i|0;j=j|0;k=k|0;var 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,H=0,I=0,J=0,K=0.0;J=Ra;Ra=Ra+112|0;H=J+88|0;F=J+72|0;E=J+56|0;v=J+40|0;u=J+32|0;t=J+16|0;s=J+8|0;m=J;r=e+40|0;if(c[r>>2]|0){Ra=J;return}q=e+20|0;l=c[q>>2]|0;if(!l){l=c[e+8>>2]|0;c[m>>2]=c[e+4>>2];c[m+4>>2]=l;l=vs(e,55946,m)|0;c[q>>2]=l;if(c[r>>2]|0){Ra=J;return}}do if(!(Vc(l,1)|0)){l=c[l+100>>2]|0;m=l+8|0;if(!(b[m>>1]&9216)){D=l;c[D>>2]=j;c[D+4>>2]=k;b[m>>1]=4;break}else{Pg(l,j,k);break}}while(0);do if((Gc(c[q>>2]|0)|0)==100){p=Lc(c[q>>2]|0,0)|0;o=c[q>>2]|0;if(!o)m=mc(29576)|0;else{l=c[o+120>>2]|0;if((l|0)!=0?(b[o+144>>1]|0)!=0:0)n=o;else{l=c[o>>2]|0;c[l+64>>2]=25;Ne(l,25);l=29576;n=o}m=mc(l)|0;n=c[n>>2]|0;o=o+40|0;l=c[o>>2]|0;if((l|0)==3082|(a[n+81>>0]|0)!=0){og(n);l=7}else l=c[n+68>>2]&l;c[o>>2]=l}l=pb(p,((p|0)<0)<<31>>31)|0;if(!l){c[r>>2]=7;D=0;o=0;break}else{ew(l|0,m|0,p|0)|0;D=l;o=p;break}}else{D=0;o=0}while(0);l=c[q>>2]|0;do if(l){m=c[l>>2]|0;C=l+136|0;B=c[C+4>>2]|0;if((B|0)>0|(B|0)==0&(c[C>>2]|0)>>>0>0)hc(m,l);n=kc(l)|0;c[l+20>>2]=770837923;c[l+36>>2]=-1;c[l+40>>2]=0;a[l+146>>0]=2;c[l+44>>2]=0;c[l+32>>2]=1;a[l+147>>0]=-1;c[l+48>>2]=0;C=l+64|0;c[C>>2]=0;c[C+4>>2]=0;if((n|0)==3082|(a[m+81>>0]|0)!=0){og(m);l=7;break}else{l=c[m+68>>2]&n;break}}else l=0;while(0);if((c[r>>2]|0)==0?(c[r>>2]=l,(D|0)==0&(l|0)==0):0){I=s;c[I>>2]=j;c[I+4>>2]=k;ws(e,55991,s);Ra=J;return}if(!D){Ra=J;return}if((o|0)<4){I=t;c[I>>2]=j;c[I+4>>2]=k;c[t+8>>2]=o;ws(e,55827,t);if(!(c[7324]|0)){ab[c[29344>>2]&127](D);Ra=J;return}else{I=Wa[c[29352>>2]&127](D)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](D);Ra=J;return}}C=(i|0)==0;if(C){g=d[D>>0]<<8|d[D+1>>0];if(g>>>0>40){c[u>>2]=g;ws(e,55861,u);if(!(c[7324]|0)){ab[c[29344>>2]&127](D);Ra=J;return}else{I=Wa[c[29352>>2]&127](D)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](D);Ra=J;return}}}A=d[D+2>>0]<<8|d[D+3>>0];B=e+16|0;l=c[B>>2]|0;a:do if((G((l<<3)+8|0,A)|0|4|0)<=(o|0)){if(A|0){y=e+12|0;z=(g|0)>0;v=g+-1|0;w=e+36|0;x=e+32|0;g=0;while(1){u=D+(G((l<<3)+8|0,g)|0|4)|0;o=cw(d[u>>0]|0,0,56)|0;s=L()|0;n=cw(d[u+1>>0]|0,0,48)|0;s=L()|0|s;p=cw(d[u+2>>0]|0,0,40)|0;s=s|(L()|0);s=s|d[u+3>>0];q=cw(d[u+4>>0]|0,0,24)|0;s=s|(L()|0);r=cw(d[u+5>>0]|0,0,16)|0;s=s|(L()|0);t=cw(d[u+6>>0]|0,0,8)|0;s=s|(L()|0);s=Sv(n|o|p|q|r|t|0,s|0,d[u+7>>0]|0,0)|0;t=L()|0;u=u+8|0;b:do if((l|0)>0){if(C){o=0;while(1){n=o<<3;m=u+n|0;m=d[m+1>>0]<<16|d[m>>0]<<24|d[m+2>>0]<<8|d[m+3>>0];n=u+(n|4)|0;n=d[n+1>>0]<<16|d[n>>0]<<24|d[n+2>>0]<<8|d[n+3>>0];if(!(c[y>>2]|0)){K=(c[h>>2]=m,+f[h>>2]);if(K>(c[h>>2]=n,+f[h>>2]))I=52}else if((m|0)>(n|0))I=52;if((I|0)==52){I=0;c[E>>2]=o;c[E+4>>2]=g;l=E+8|0;c[l>>2]=j;c[l+4>>2]=k;ws(e,56023,E);l=c[B>>2]|0}o=o+1|0;if((o|0)>=(l|0))break b}}p=0;do{m=p<<3;q=u+m|0;q=d[q+1>>0]<<16|d[q>>0]<<24|d[q+2>>0]<<8|d[q+3>>0];o=m|4;r=u+o|0;r=d[r+1>>0]<<16|d[r>>0]<<24|d[r+2>>0]<<8|d[r+3>>0];l=c[y>>2]|0;if(!l){K=(c[h>>2]=q,+f[h>>2]);if(K>(c[h>>2]=r,+f[h>>2]))I=57;else l=0}else if((q|0)>(r|0))I=57;if((I|0)==57){I=0;c[F>>2]=p;c[F+4>>2]=g;l=F+8|0;c[l>>2]=j;c[l+4>>2]=k;ws(e,56023,F);l=c[y>>2]|0}n=i+m|0;n=d[n+1>>0]<<16|d[n>>0]<<24|d[n+2>>0]<<8|d[n+3>>0];m=i+o|0;m=d[m+1>>0]<<16|d[m>>0]<<24|d[m+2>>0]<<8|d[m+3>>0];do if(!l){K=(c[h>>2]=q,+f[h>>2]);if(K<(c[h>>2]=n,+f[h>>2])){I=62;break}K=(c[h>>2]=r,+f[h>>2]);if(K>(c[h>>2]=m,+f[h>>2]))I=62}else if((q|0)<(n|0)|(r|0)>(m|0))I=62;while(0);if((I|0)==62){I=0;c[H>>2]=p;c[H+4>>2]=g;r=H+8|0;c[r>>2]=j;c[r+4>>2]=k;ws(e,56071,H)}p=p+1|0}while((p|0)<(c[B>>2]|0))}while(0);if(z){zs(e,0,s,t,j,k);xs(e,v,u,s,t);l=w}else{zs(e,1,s,t,j,k);l=x}c[l>>2]=(c[l>>2]|0)+1;g=g+1|0;if((g|0)==(A|0))break a;l=c[B>>2]|0}}}else{I=v;c[I>>2]=j;c[I+4>>2]=k;c[v+8>>2]=A;c[v+12>>2]=o;ws(e,55891,v)}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](D);Ra=J;return}else{I=Wa[c[29352>>2]&127](D)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](D);Ra=J;return}}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,l=0;k=Ra;Ra=Ra+48|0;j=k+16|0;f=k;i=a+40|0;if(c[i>>2]|0){Ra=k;return}l=c[a+8>>2]|0;c[f>>2]=c[a+4>>2];c[f+4>>2]=l;c[f+8>>2]=b;f=vs(a,56360,f)|0;if(!f){Ra=k;return}if((Gc(f)|0)==100?(g=Oc(f,0)|0,h=L()|0,!((g|0)==(d|0)&(h|0)==(e|0))):0){c[j>>2]=b;l=j+8|0;c[l>>2]=d;c[l+4>>2]=e;l=j+16|0;c[l>>2]=g;c[l+4>>2]=h;ws(a,56391,j)}l=gc(f)|0;c[i>>2]=l;Ra=k;return}function zs(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,l=0,m=0,n=0,o=0,p=0;p=Ra;Ra=Ra+80|0;o=p+32|0;m=p+8|0;l=p;j=d+24+(e<<2)|0;k=c[j>>2]|0;if(!k){n=c[30860+(e<<2)>>2]|0;k=c[d+8>>2]|0;c[l>>2]=c[d+4>>2];c[l+4>>2]=k;l=vs(d,n,l)|0;c[j>>2]=l}else l=k;n=d+40|0;if(c[n>>2]|0){Ra=p;return}do if(!(Vc(l,1)|0)){j=c[l+100>>2]|0;k=j+8|0;if(!(b[k>>1]&9216)){c[j>>2]=f;c[j+4>>2]=g;b[k>>1]=4;break}else{Pg(j,f,g);break}}while(0);switch(Gc(l)|0){case 101:{o=m;c[o>>2]=f;c[o+4>>2]=g;o=m+8|0;c[o>>2]=h;c[o+4>>2]=i;c[m+16>>2]=(e|0)==0?56293:56285;ws(d,56240,m);break}case 100:{j=Oc(l,0)|0;k=L()|0;if(!((j|0)==(h|0)&(k|0)==(i|0))){m=o;c[m>>2]=f;c[m+4>>2]=g;m=o+8|0;c[m>>2]=j;c[m+4>>2]=k;c[o+16>>2]=(e|0)==0?56293:56285;e=o+24|0;c[e>>2]=f;c[e+4>>2]=g;g=o+32|0;c[g>>2]=h;c[g+4>>2]=i;ws(d,56302,o)}break}default:{}}do if(l){j=c[l>>2]|0;o=l+136|0;i=c[o+4>>2]|0;if((i|0)>0|(i|0)==0&(c[o>>2]|0)>>>0>0)hc(j,l);k=kc(l)|0;c[l+20>>2]=770837923;c[l+36>>2]=-1;c[l+40>>2]=0;a[l+146>>0]=2;c[l+44>>2]=0;c[l+32>>2]=1;a[l+147>>0]=-1;c[l+48>>2]=0;o=l+64|0;c[o>>2]=0;c[o+4>>2]=0;if((k|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break}else{j=c[j+68>>2]&k;break}}else j=0;while(0);if(c[n>>2]|0){Ra=p;return}c[n>>2]=j;Ra=p;return}function As(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 Ss(a,b,c,d,e,f,1)|0}function Bs(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 Ss(a,b,c,d,e,f,0)|0}function Cs(b,e){b=b|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=Ra;Ra=Ra+64|0;p=r+48|0;o=r;f=o;h=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0));a[o+40>>0]=0;n=c[e>>2]|0;h=(n|0)>0;if(h){i=c[e+4>>2]|0;f=0;j=0;do{j=(a[i+(f*12|0)+4>>0]|0)==64?1:j;f=f+1|0}while((f|0)<(n|0));if(h){k=c[e+4>>2]|0;l=b+21|0;m=e+16|0;a:do if(!j){h=0;f=0;b:while(1){j=k+(f*12|0)|0;c:do if(a[k+(f*12|0)+5>>0]|0){if((c[j>>2]|0)==0?(a[k+(f*12|0)+4>>0]|0)==2:0)break b;i=c[j>>2]|0;d:do if((i|0)>0?(i|0)<=(d[l>>0]|0):0)switch(a[k+(f*12|0)+4>>0]|0){case 2:{i=65;break d}case 64:{q=15;break d}case 4:{i=69;break d}case 8:{i=66;break d}case 16:{i=67;break d}case 32:{i=68;break d}default:break c}else q=13;while(0);if((q|0)==13){q=0;if((a[k+(f*12|0)+4>>0]|0)==64)q=15;else break}if((q|0)==15){q=0;i=70}a[o+h>>0]=i;i=h+2|0;a[o+(h+1)>>0]=(c[j>>2]|0)+47;h=c[m>>2]|0;c[h+(f<<3)>>2]=(i|0)/2|0;a[h+(f<<3)+4>>0]=1;h=i}while(0);f=f+1|0;if(!((f|0)<(n|0)&(h|0)<40)){f=h;break a}}i=c[m>>2]|0;if(!f)f=0;else{h=0;do{c[i+(h<<3)>>2]=0;a[i+(h<<3)+4>>0]=0;h=h+1|0}while((h|0)!=(f|0))}c[e+20>>2]=1;c[i+(f<<3)>>2]=1;a[i+(f<<3)+4>>0]=1;g[e+40>>3]=30.0;q=e+48|0;c[q>>2]=1;c[q+4>>2]=0;c[e+56>>2]=1;e=0;Ra=r;return e|0}else{f=0;j=0;do{e:do if(a[k+(j*12|0)+5>>0]|0){i=k+(j*12|0)|0;h=c[i>>2]|0;f:do if((h|0)>0?(h|0)<=(d[l>>0]|0):0)switch(a[k+(j*12|0)+4>>0]|0){case 2:{h=65;break f}case 64:{q=34;break f}case 4:{h=69;break f}case 8:{h=66;break f}case 16:{h=67;break f}case 32:{h=68;break f}default:break e}else q=28;while(0);if((q|0)==28){q=0;if((a[k+(j*12|0)+4>>0]|0)==64)q=34;else break}if((q|0)==34){q=0;h=70}a[o+f>>0]=h;h=f+2|0;a[o+(f+1)>>0]=(c[i>>2]|0)+47;f=c[m>>2]|0;c[f+(j<<3)>>2]=(h|0)/2|0;a[f+(j<<3)+4>>0]=1;f=h}while(0);j=j+1|0}while((j|0)<(n|0)&(f|0)<40)}while(0);c[e+20>>2]=2;c[e+28>>2]=1;if((f|0)>0?(c[p>>2]=o,p=Bb(31408,p)|0,c[e+24>>2]=p,(p|0)==0):0){e=7;Ra=r;return e|0}}else q=38}else q=38;if((q|0)==38){c[e+20>>2]=2;c[e+28>>2]=1;f=0}b=b+48|0;b=aw(c[b>>2]|0,c[b+4>>2]|0,(f|0)/2|0|0)|0;q=L()|0;g[e+40>>3]=(+(b>>>0)+4294967296.0*+(q|0))*6.0;e=e+48|0;c[e>>2]=b;c[e+4>>2]=q;e=0;Ra=r;return e|0}function Ds(a){a=a|0;Ts(a);return 0}function Es(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=Ra;Ra=Ra+32|0;f=g;d=c[b+32>>2]|0;e=c[b+36>>2]|0;c[f>>2]=d;c[f+4>>2]=e;c[f+8>>2]=d;c[f+12>>2]=e;c[f+16>>2]=d;c[f+20>>2]=e;f=Bb(57667,f)|0;if(!f){f=7;Ra=g;return f|0}d=b+76|0;e=c[d>>2]|0;do if((e|0?(a[b+24>>0]|0)==0:0)?(c[b+56>>2]|0)==0:0){c[d>>2]=0;d=c[e+20>>2]|0;gc(c[e+16>>2]|0)|0;if(d|0){if(c[d+480>>2]|0){Xd(d,e);break}h=e;if((c[d+304>>2]|0)>>>0<=h>>>0?(c[d+308>>2]|0)>>>0>h>>>0:0){h=d+300|0;c[e>>2]=c[h>>2];c[h>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{h=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);d=nd(c[b+12>>2]|0,f,0,0,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](f);else{h=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f)}if(d|0){h=d;Ra=g;return h|0}Ts(b);h=0;Ra=g;return h|0}function Fs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(mb()|0){a=7;f=0;c[b>>2]=f;return a|0}if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](248)|0;if(!d){a=7;f=0;c[b>>2]=f;return a|0}}else{f=Wa[c[29356>>2]&127](248)|0;if((c[14985]|0)>>>0<248)c[14985]=248;e=59064;d=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&d>>>0>0){g=c[14978]|0;e=Tv(d|0,e|0,f|0,((f|0)<0)<<31>>31|0)|0;d=L()|0;c[14768]=((d|0)<0|(d|0)==0&e>>>0<=g>>>0)&1}d=Wa[c[29340>>2]&127](f)|0;if(!d){g=7;a=0;c[b>>2]=a;return g|0}e=Wa[c[29352>>2]&127](d)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0>(c[14987]|0)>>>0)c[14987]=e}gw(d|0,0,248)|0;c[d>>2]=a;g=a+56|0;c[g>>2]=(c[g>>2]|0)+1;g=0;a=d;c[b>>2]=a;return g|0}function Gs(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=c[b>>2]|0;h=b+16|0;d=c[h>>2]|0;if(d|0){g=b+12|0;if((c[g>>2]|0)>0){f=0;while(1){d=c[d+(f*24|0)+16>>2]|0;do if(d|0){e=c[d+16>>2]|0;if(e|0)ab[e&127](c[d+12>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}while(0);d=f+1|0;if((d|0)>=(c[g>>2]|0))break;f=d;d=c[h>>2]|0}d=c[h>>2]|0}do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{g=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);c[h>>2]=0}gc(c[b+36>>2]|0)|0;d=c[b+32>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{h=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);Us(i,c[b+64>>2]|0)|0;Us(i,c[b+68>>2]|0)|0;Us(i,c[b+72>>2]|0)|0;Us(i,c[b+76>>2]|0)|0;Us(i,c[b+80>>2]|0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](b);else{h=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b)}e=i+56|0;d=(c[e>>2]|0)+-1|0;c[e>>2]=d;e=i+76|0;f=c[e>>2]|0;if(!f)return 0;if(!((d|0)==0&(a[i+24>>0]|0)==0))return 0;c[e>>2]=0;d=c[f+20>>2]|0;gc(c[f+16>>2]|0)|0;if(d|0){if(c[d+480>>2]|0){Xd(d,f);return 0}i=f;if((c[d+304>>2]|0)>>>0<=i>>>0?(c[d+308>>2]|0)>>>0>i>>>0:0){i=d+300|0;c[f>>2]=c[i>>2];c[i>>2]=f;return 0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);return 0}else{i=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);return 0}return 0}function Hs(f,h,i,j,k){f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=Ra;Ra=Ra+16|0;w=y+4|0;t=y;x=c[f>>2]|0;c[w>>2]=0;v=x+40|0;c[v>>2]=(c[v>>2]|0)+1;v=f+16|0;l=c[v>>2]|0;if(l|0){o=f+12|0;if((c[o>>2]|0)>0){n=0;while(1){l=c[l+(n*24|0)+16>>2]|0;do if(l|0){m=c[l+16>>2]|0;if(m|0)ab[m&127](c[l+12>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{u=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);l=n+1|0;if((l|0)>=(c[o>>2]|0))break;n=l;l=c[v>>2]|0}l=c[v>>2]|0}do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{u=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);c[v>>2]=0}l=c[f+32>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{u=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);u=f+36|0;s=c[u>>2]|0;gw(f|0,0,248)|0;c[f>>2]=x;c[u>>2]=s;c[f+8>>2]=h;a:do if((h|0)!=1){l=Xs(x,1,0,0,w)|0;if(!((j|0)>0&(l|0)==0)){if(l|0)break}else{l=j*24|0;m=pb(l,0)|0;c[v>>2]=m;c[f+12>>2]=j;if(!m){l=7;break}gw(m|0,0,l|0)|0;r=f+84|0;s=x+28|0;gw(r|0,0,(c[s>>2]<<2)+4|0)|0;t=x+21|0;q=0;do{u=c[v>>2]|0;m=q<<1;o=a[i+m>>0]|0;h=u+(q*24|0)+4|0;c[h>>2]=o<<24>>24;c[u+(q*24|0)>>2]=(a[i+(m|1)>>0]|0)+-48;m=c[k+(q<<2)>>2]|0;l=b[m+8>>1]|0;if(o<<24>>24>69){if((l&-15393)<<16>>16!=-32255){l=1;break a}if((a[m+11>>0]|0)!=112){l=1;break a}if(Bu(c[m>>2]|0,57762)|0){l=1;break a}l=c[m+16>>2]|0;if(!l){l=1;break a}o=pb((c[l>>2]|0)+80|0,0)|0;if(!o){l=7;break a}m=o;n=m+80|0;do{c[m>>2]=0;m=m+4|0}while((m|0)<(n|0));ew(o+80|0,l|0,c[l>>2]|0)|0;c[o>>2]=c[o+96>>2];c[o+4>>2]=c[o+100>>2];c[o+8>>2]=o+112;c[o+72>>2]=c[o+104>>2];l=c[o+84>>2]|0;if(!l){c[h>>2]=71;c[u+(q*24|0)+8>>2]=c[o+88>>2]}else c[u+(q*24|0)+8>>2]=l;c[u+(q*24|0)+16>>2]=o;c[o+28>>2]=d[t>>0];c[o+24>>2]=r;c[o+36>>2]=(c[s>>2]|0)+1}else{l=l&65535;do if(!(l&8)){if(l&4|0){h=m;p=+((c[h>>2]|0)>>>0)+4294967296.0*+(c[h+4>>2]|0);break}if(!(l&18))p=0.0;else p=+Kg(a[m+10>>0]|0,c[m+12>>2]|0,c[m+16>>2]|0)}else p=+g[m>>3];while(0);g[u+(q*24|0)+8>>3]=p}q=q+1|0}while((q|0)<(j|0))}l=Ws(f,0.0,(c[x+28>>2]|0)+1&255)|0;if(!l){x=7;Ra=y;return x|0}else{k=l+8|0;c[k>>2]=1;c[k+4>>2]=0;a[l+18>>0]=0;a[l+17>>0]=1;c[f+64>>2]=c[w>>2];c[w>>2]=0;l=Ys(f)|0;break}}else{l=c[k>>2]|0;m=e[l+8>>1]|0;do if(!(m&4)){if(m&8|0){s=Mg(+g[l>>3])|0;r=L()|0;break}if(!(m&18)){r=0;s=0}else{s=Ng(a[l+10>>0]|0,c[l+12>>2]|0,c[l+16>>2]|0)|0;r=L()|0}}else{s=l;r=c[s+4>>2]|0;s=c[s>>2]|0}while(0);c[t>>2]=0;q=x+88|0;l=c[q>>2]|0;do if(!(Vc(l,1)|0)){l=c[l+100>>2]|0;m=l+8|0;if(!(b[m>>1]&9216)){k=l;c[k>>2]=s;c[k+4>>2]=r;b[m>>1]=4;break}else{Pg(l,s,r);break}}while(0);k=(Gc(c[q>>2]|0)|0)==100;n=c[q>>2]|0;do if(k){o=Oc(n,0)|0;h=L()|0;l=Xs(x,o,h,0,t)|0;m=c[q>>2]|0;if(m){n=c[m>>2]|0;k=m+136|0;j=c[k+4>>2]|0;if((j|0)>0|(j|0)==0&(c[k>>2]|0)>>>0>0)hc(n,m);k=kc(m)|0;c[m+20>>2]=770837923;c[m+36>>2]=-1;c[m+40>>2]=0;a[m+146>>0]=2;c[m+44>>2]=0;c[m+32>>2]=1;a[m+147>>0]=-1;c[m+48>>2]=0;j=m+64|0;c[j>>2]=0;c[j+4>>2]=0;if((k|0)==3082|(a[n+81>>0]|0)!=0){og(n);n=h;q=45}else{n=h;q=45}}else{n=h;q=45}}else if(n){l=c[n>>2]|0;k=n+136|0;j=c[k+4>>2]|0;if((j|0)>0|(j|0)==0&(c[k>>2]|0)>>>0>0)hc(l,n);m=kc(n)|0;c[n+20>>2]=770837923;c[n+36>>2]=-1;c[n+40>>2]=0;a[n+146>>0]=2;c[n+44>>2]=0;c[n+32>>2]=1;a[n+147>>0]=-1;c[n+48>>2]=0;k=n+64|0;c[k>>2]=0;c[k+4>>2]=0;if((m|0)==3082|(a[l+81>>0]|0)!=0){og(l);l=7;q=51;break}else{l=c[l+68>>2]&m;o=0;n=0;q=45;break}}else{l=0;o=0;n=0;q=45}while(0);if((q|0)==45){m=c[t>>2]|0;if((l|0)==0&(m|0)!=0){h=Ws(f,0.0,0)|0;c[f+64>>2]=m;l=h+8|0;c[l>>2]=o;c[l+4>>2]=n;a[h+17>>0]=1;l=c[m+24>>2]|0;n=d[l+2>>0]<<8|d[l+3>>0];b:do if(!n){l=267;m=0}else{o=d[x+23>>0]|0;m=0;while(1){f=l+((G(m,o)|0)+4)|0;t=cw(d[f>>0]|0,0,56)|0;k=L()|0;z=cw(d[f+1>>0]|0,0,48)|0;k=L()|0|k;u=cw(d[f+2>>0]|0,0,40)|0;k=k|(L()|0);k=k|d[f+3>>0];v=cw(d[f+4>>0]|0,0,24)|0;k=k|(L()|0);i=cw(d[f+5>>0]|0,0,16)|0;k=k|(L()|0);j=cw(d[f+6>>0]|0,0,8)|0;k=k|(L()|0);f=Sv(z|t|u|v|i|j|0,k|0,d[f+7>>0]|0,0)|0;if((f|0)==(s|0)&(L()|0)==(r|0)){l=0;break b}m=m+1|0;if(m>>>0>=n>>>0){l=267;m=0;break}}}while(0);a[h+18>>0]=m}else q=51}if((q|0)==51)a[f+4>>0]=1}while(0);Us(x,c[w>>2]|0)|0;Ts(x);z=l;Ra=y;return z|0}function Is(b){b=b|0;var d=0,e=0,f=0,g=0;d=b+6|0;if(!(a[d>>0]|0)){Zs(b);b=Ys(b)|0;return b|0}a[d>>0]=0;d=c[b+36>>2]|0;if(!d){Zs(b);b=Ys(b)|0;return b|0}e=c[d>>2]|0;f=d+136|0;g=c[f+4>>2]|0;if((g|0)>0|(g|0)==0&(c[f>>2]|0)>>>0>0)hc(e,d);g=kc(d)|0;c[d+20>>2]=770837923;c[d+36>>2]=-1;c[d+40>>2]=0;a[d+146>>0]=2;c[d+44>>2]=0;c[d+32>>2]=1;a[d+147>>0]=-1;c[d+48>>2]=0;f=d+64|0;c[f>>2]=0;c[f+4>>2]=0;if(!((g|0)==3082|(a[e+81>>0]|0)!=0)){Zs(b);g=Ys(b)|0;return g|0}og(e);Zs(b);g=Ys(b)|0;return g|0}function Js(a){a=a|0;return d[a+4>>0]|0|0}function Ks(i,j,k){i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;u=Ra;Ra=Ra+16|0;p=u+8|0;q=u;t=c[i>>2]|0;l=a[i+5>>0]|0;if(!(l<<24>>24))if(!(c[i+24>>2]|0))s=0;else s=c[i+32>>2]|0;else s=i+40|0;l=1-(l&255)|0;n=i+64+(l<<2)|0;m=c[n>>2]|0;if(!m){if(!l)l=i+48|0;else l=(c[i+32>>2]|0)+8|0;l=Xs(t,c[l>>2]|0,c[l+4>>2]|0,0,n)|0;if(!l)m=c[n>>2]|0;else{j=l;Ra=u;return j|0}}if(!s){j=0;Ra=u;return j|0}if(!k){n=(c[m+24>>2]|0)+((G(d[t+23>>0]|0,d[s+18>>0]|0)|0)+4)|0;s=cw(d[n>>0]|0,0,56)|0;i=L()|0;r=cw(d[n+1>>0]|0,0,48)|0;i=L()|0|i;t=cw(d[n+2>>0]|0,0,40)|0;i=i|(L()|0);i=i|d[n+3>>0];k=cw(d[n+4>>0]|0,0,24)|0;i=i|(L()|0);m=cw(d[n+5>>0]|0,0,16)|0;i=i|(L()|0);l=cw(d[n+6>>0]|0,0,8)|0;i=i|(L()|0);n=Sv(r|s|t|k|m|l|0,i|0,d[n+7>>0]|0,0)|0;i=L()|0;l=c[j>>2]|0;m=l+8|0;if(!(b[m>>1]&9216)){j=l;c[j>>2]=n;c[j+4>>2]=i;b[m>>1]=4;j=0;Ra=u;return j|0}else{Pg(l,n,i);j=0;Ra=u;return j|0}}r=t+21|0;l=d[r>>0]|0;if((l|0)>=(k|0)){i=(c[m+24>>2]|0)+((k<<2)+8+(G(d[t+23>>0]|0,d[s+18>>0]|0)|0))|0;i=d[i+1>>0]<<16|d[i>>0]<<24|d[i+2>>0]<<8|d[i+3>>0];if(a[t+22>>0]|0){l=c[j>>2]|0;m=((i|0)<0)<<31>>31;n=l+8|0;if(!(b[n>>1]&9216)){j=l;c[j>>2]=i;c[j+4>>2]=m;b[n>>1]=4;j=0;Ra=u;return j|0}else{Pg(l,i,m);j=0;Ra=u;return j|0}}o=(c[h>>2]=i,+f[h>>2]);l=c[j>>2]|0;m=l+8|0;if(!(b[m>>1]&9216))b[m>>1]=1;else Dg(l);g[p>>3]=o;g[q>>3]=+g[p>>3];if(!(+g[p>>3]==+g[q>>3])){j=0;Ra=u;return j|0}g[l>>3]=o;b[m>>1]=8;j=0;Ra=u;return j|0}p=i+6|0;q=i+36|0;do if(!(a[p>>0]|0)){l=c[q>>2]|0;do if(!l){l=qd(c[t+12>>2]|0,c[t+64>>2]|0,-1,128,0,q,0)|0;if(!l){l=c[q>>2]|0;break}else{j=l;Ra=u;return j|0}}while(0);n=(c[m+24>>2]|0)+((G(d[t+23>>0]|0,d[s+18>>0]|0)|0)+4)|0;w=cw(d[n>>0]|0,0,56)|0;i=L()|0;x=cw(d[n+1>>0]|0,0,48)|0;i=L()|0|i;v=cw(d[n+2>>0]|0,0,40)|0;i=i|(L()|0);i=i|d[n+3>>0];m=cw(d[n+4>>0]|0,0,24)|0;i=i|(L()|0);s=cw(d[n+5>>0]|0,0,16)|0;i=i|(L()|0);t=cw(d[n+6>>0]|0,0,8)|0;i=i|(L()|0);n=Sv(x|w|v|m|s|t|0,i|0,d[n+7>>0]|0,0)|0;i=L()|0;do if(!(Vc(l,1)|0)){l=c[l+100>>2]|0;m=l+8|0;if(!(b[m>>1]&9216)){x=l;c[x>>2]=n;c[x+4>>2]=i;b[m>>1]=4;break}else{Pg(l,n,i);break}}while(0);n=Gc(c[q>>2]|0)|0;if((n|0)==100){a[p>>0]=1;l=d[r>>0]|0;break}l=c[q>>2]|0;if(!l){x=(n|0)==101;x=x?0:n;Ra=u;return x|0}m=c[l>>2]|0;x=l+136|0;w=c[x+4>>2]|0;if((w|0)>0|(w|0)==0&(c[x>>2]|0)>>>0>0)hc(m,l);x=kc(l)|0;c[l+20>>2]=770837923;c[l+36>>2]=-1;c[l+40>>2]=0;a[l+146>>0]=2;c[l+44>>2]=0;c[l+32>>2]=1;a[l+147>>0]=-1;c[l+48>>2]=0;w=l+64|0;c[w>>2]=0;c[w+4>>2]=0;if(!((x|0)==3082|(a[m+81>>0]|0)!=0)){x=(n|0)==101;x=x?0:n;Ra=u;return x|0}og(m);x=(n|0)==101;x=x?0:n;Ra=u;return x|0}while(0);p=c[q>>2]|0;l=k-l+1|0;n=(p|0)==0;do if(n)i=29576;else{m=c[p+120>>2]|0;if(m|0?l>>>0<(e[p+144>>1]|0)>>>0:0){i=m+(l*40|0)|0;break}i=c[p>>2]|0;c[i+64>>2]=25;Ne(i,25);i=29576}while(0);l=i+8|0;m=e[l>>1]|0;if(m&2048|0)b[l>>1]=m&59391|4096;if(!n){m=c[p>>2]|0;n=p+40|0;l=c[n>>2]|0;if((l|0)==3082|(a[m+81>>0]|0)!=0){og(m);l=7}else l=c[m+68>>2]&l;c[n>>2]=l}Dc(j,i);x=0;Ra=u;return x|0}function Ls(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;f=a[b+5>>0]|0;if(!(f<<24>>24))if(!(c[b+24>>2]|0))i=0;else i=c[b+32>>2]|0;else i=b+40|0;g=1-(f&255)|0;h=b+64+(g<<2)|0;f=c[h>>2]|0;if(!f){if(!g)f=b+48|0;else f=(c[b+32>>2]|0)+8|0;g=f;g=Xs(c[b>>2]|0,c[g>>2]|0,c[g+4>>2]|0,0,h)|0;f=c[h>>2]|0}else g=0;if(!((i|0)!=0&(g|0)==0))return g|0;h=(c[f+24>>2]|0)+((G(d[(c[b>>2]|0)+23>>0]|0,d[i+18>>0]|0)|0)+4)|0;l=cw(d[h>>0]|0|0,0,56)|0;b=L()|0;m=cw(d[h+1>>0]|0|0,0,48)|0;b=L()|0|b;k=cw(d[h+2>>0]|0|0,0,40)|0;b=b|(L()|0);b=b|(d[h+3>>0]|0);j=cw(d[h+4>>0]|0|0,0,24)|0;b=b|(L()|0);f=cw(d[h+5>>0]|0|0,0,16)|0;b=b|(L()|0);i=cw(d[h+6>>0]|0|0,0,8)|0;b=b|(L()|0);h=Sv(m|l|k|j|f|i|0,b|0,d[h+7>>0]|0|0,0)|0;b=L()|0;i=e;c[i>>2]=h;c[i+4>>2]=b;return g|0}function Ms(h,i,j,k){h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0.0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=Ra;Ra=Ra+64|0;u=x;v=x+48|0;if(c[h+60>>2]|0){h=518;Ra=x;return h|0}t=h+40|0;c[t>>2]=(c[t>>2]|0)+1;t=u;c[t>>2]=0;c[t+4>>2]=0;t=(i|0)>1;a:do if(t){p=i+-4|0;i=d[h+21>>0]|0;p=(p|0)>(i|0)?i:p;i=(p|0)>0;b:do if(!(a[h+22>>0]|0)){if(i){m=0;while(1){i=c[j+(m+3<<2)>>2]|0;l=e[i+8>>1]|0;do if(!(l&8)){if(l&4|0){s=i;o=+((c[s>>2]|0)>>>0)+4294967296.0*+(c[s+4>>2]|0);break}if(!(l&18))o=0.0;else o=+Kg(a[i+10>>0]|0,c[i+12>>2]|0,c[i+16>>2]|0)}else o=+g[i>>3];while(0);r=o;r=o>2]=r;i=c[j+(m+4<<2)>>2]|0;l=e[i+8>>1]|0;do if(!(l&8)){if(l&4|0){s=i;o=+((c[s>>2]|0)>>>0)+4294967296.0*+(c[s+4>>2]|0);break}if(!(l&18))o=0.0;else o=+Kg(a[i+10>>0]|0,c[i+12>>2]|0,c[i+16>>2]|0)}else o=+g[i>>3];while(0);y=o;o=o>y?o*(o<0.0?.9999998807907104:1.0000001192092896):y;i=m|1;f[u+8+(i<<2)>>2]=o;m=m+2|0;if(r>o)break;if((m|0)>=(p|0))break b}i=_s(h,i)|0;break a}}else if(i){n=0;while(1){i=c[j+(n+3<<2)>>2]|0;l=e[i+8>>1]|0;do if(!(l&4)){if(l&8|0){m=Mg(+g[i>>3])|0;L()|0;break}if(!(l&18))m=0;else{m=Ng(a[i+10>>0]|0,c[i+12>>2]|0,c[i+16>>2]|0)|0;L()|0}}else m=c[i>>2]|0;while(0);c[u+8+(n<<2)>>2]=m;i=c[j+(n+4<<2)>>2]|0;l=e[i+8>>1]|0;do if(!(l&4)){if(l&8|0){i=Mg(+g[i>>3])|0;L()|0;break}if(!(l&18))i=0;else{i=Ng(a[i+10>>0]|0,c[i+12>>2]|0,c[i+16>>2]|0)|0;L()|0}}else i=c[i>>2]|0;while(0);l=n|1;c[u+8+(l<<2)>>2]=i;n=n+2|0;if((m|0)>(i|0))break;if((n|0)>=(p|0))break b}i=_s(h,l)|0;break a}while(0);l=c[j+8>>2]|0;i=b[l+8>>1]|0;if(!(-1431655766>>>(i&31)&1)){i=i&65535;do if(!(i&4)){if(i&8|0){p=Mg(+g[l>>3])|0;s=L()|0;break}if(!(i&18)){p=0;s=0}else{p=Ng(a[l+10>>0]|0,c[l+12>>2]|0,c[l+16>>2]|0)|0;s=L()|0}}else{s=l;p=c[s>>2]|0;s=c[s+4>>2]|0}while(0);l=u;c[l>>2]=p;c[l+4>>2]=s;l=c[j>>2]|0;i=b[l+8>>1]|0;if(!(-1431655766>>>(i&31)&1)){i=i&65535;do if(!(i&4)){if(i&8|0){i=Mg(+g[l>>3])|0;l=L()|0;break}if(!(i&18)){i=0;l=0}else{i=Ng(a[l+10>>0]|0,c[l+12>>2]|0,c[l+16>>2]|0)|0;l=L()|0}}else{i=c[l>>2]|0;l=c[l+4>>2]|0}while(0);if((i|0)==(p|0)&(l|0)==(s|0)){q=1;i=0;n=s;w=67;break}}m=h+88|0;i=c[m>>2]|0;do if(!(Vc(i,1)|0)){i=c[i+100>>2]|0;l=i+8|0;if(!(b[l>>1]&9216)){q=i;c[q>>2]=p;c[q+4>>2]=s;b[l>>1]=4;break}else{Pg(i,p,s);break}}while(0);n=Gc(c[m>>2]|0)|0;i=c[m>>2]|0;do if(i){l=c[i>>2]|0;q=i+136|0;m=c[q+4>>2]|0;if((m|0)>0|(m|0)==0&(c[q>>2]|0)>>>0>0)hc(l,i);m=kc(i)|0;c[i+20>>2]=770837923;c[i+36>>2]=-1;c[i+40>>2]=0;a[i+146>>0]=2;c[i+44>>2]=0;c[i+32>>2]=1;a[i+147>>0]=-1;c[i+48>>2]=0;q=i+64|0;c[q>>2]=0;c[q+4>>2]=0;if((m|0)==3082|(a[l+81>>0]|0)!=0){og(l);i=7;break}else{i=c[l+68>>2]&m;break}}else i=0;while(0);if((n|0)==100)if((a[(c[h+12>>2]|0)+86>>0]|0)==5){q=1;i=$s(h,p,s)|0;n=s;w=67;break}else{i=_s(h,0)|0;break}else{q=1;n=s;w=67}}else{q=0;i=0;p=0;n=0;w=67}}else{q=0;i=0;p=0;n=0;w=67}while(0);if((w|0)==67){m=c[j>>2]|0;l=b[m+8>>1]|0;if(!(-1431655766>>>(l&31)&1)){i=l&65535;do if(!(i&4)){if(i&8|0){i=Mg(+g[m>>3])|0;l=L()|0;break}if(!(i&18)){i=0;l=0}else{i=Ng(a[m+10>>0]|0,c[m+12>>2]|0,c[m+16>>2]|0)|0;l=L()|0}}else{l=m;i=c[l>>2]|0;l=c[l+4>>2]|0}while(0);i=$s(h,i,l)|0}if(t&(i|0)==0){c[v>>2]=0;if(!q){i=h+92|0;Vc(c[i>>2]|0,1)|0;Vc(c[i>>2]|0,2)|0;Gc(c[i>>2]|0)|0;i=c[i>>2]|0;do if(i){l=c[i>>2]|0;t=i+136|0;s=c[t+4>>2]|0;if((s|0)>0|(s|0)==0&(c[t>>2]|0)>>>0>0)hc(l,i);m=kc(i)|0;c[i+20>>2]=770837923;c[i+36>>2]=-1;c[i+40>>2]=0;a[i+146>>0]=2;c[i+44>>2]=0;c[i+32>>2]=1;a[i+147>>0]=-1;c[i+48>>2]=0;t=i+64|0;c[t>>2]=0;c[t+4>>2]=0;if((m|0)==3082|(a[l+81>>0]|0)!=0){og(l);i=7;break}else{i=c[l+68>>2]&m;break}}else i=0;while(0);s=(c[h+12>>2]|0)+40|0;q=c[s>>2]|0;s=c[s+4>>2]|0;t=u;c[t>>2]=q;c[t+4>>2]=s;t=k;c[t>>2]=q;c[t+4>>2]=s;if(!i)w=85}else{w=k;c[w>>2]=p;c[w+4>>2]=n;w=85}do if((w|0)==85){i=at(h,u,0,v)|0;if(!i){c[h+72>>2]=-1;w=c[v>>2]|0;i=bt(h,w,u,0)|0;w=Us(h,w)|0;i=(i|0)==0?w:i;if(!i){p=h+25|0;if(a[p>>0]|0){q=c[h+112>>2]|0;l=k;i=c[l>>2]|0;l=c[l+4>>2]|0;do if(!(Vc(q,1)|0)){m=c[q+100>>2]|0;n=m+8|0;if(!(b[n>>1]&9216)){k=m;c[k>>2]=i;c[k+4>>2]=l;b[n>>1]=4;break}else{Pg(m,i,l);break}}while(0);if(a[p>>0]|0){l=h+21|0;i=0;do{Yc(q,i+2|0,c[j+(i+3+(d[l>>0]|0)<<2)>>2]|0)|0;i=i+1|0}while(i>>>0<(d[p>>0]|0)>>>0)}Gc(q)|0;if(q){i=c[q>>2]|0;j=q+136|0;k=c[j+4>>2]|0;if((k|0)>0|(k|0)==0&(c[j>>2]|0)>>>0>0)hc(i,q);l=kc(q)|0;c[q+20>>2]=770837923;c[q+36>>2]=-1;c[q+40>>2]=0;a[q+146>>0]=2;c[q+44>>2]=0;c[q+32>>2]=1;a[q+147>>0]=-1;c[q+48>>2]=0;j=q+64|0;c[j>>2]=0;c[j+4>>2]=0;if((l|0)==3082|(a[i+81>>0]|0)!=0){og(i);i=7;break}else{i=c[i+68>>2]&l;break}}else i=0}else i=0}}}while(0)}}Ts(h);h=i;Ra=x;return h|0}function Ns(b){b=b|0;b=b+24|0;a[b>>0]=(a[b>>0]|0)+1<<24>>24;return 0}function Os(b){b=b|0;var d=0,e=0;a[b+24>>0]=0;d=b+76|0;e=c[d>>2]|0;if(!e)return 0;if(c[b+56>>2]|0)return 0;c[d>>2]=0;b=c[e+20>>2]|0;gc(c[e+16>>2]|0)|0;if(b|0){if(c[b+480>>2]|0){Xd(b,e);return 0}d=e;if((c[b+304>>2]|0)>>>0<=d>>>0?(c[b+308>>2]|0)>>>0>d>>>0:0){d=b+300|0;c[e>>2]=c[d>>2];c[d>>2]=e;return 0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);return 0}else{d=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);return 0}return 0}function Ps(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=Ra;Ra=Ra+48|0;f=g;h=c[b+32>>2]|0;e=c[b+36>>2]|0;c[f>>2]=h;c[f+4>>2]=e;c[f+8>>2]=d;c[f+12>>2]=h;c[f+16>>2]=e;c[f+20>>2]=d;c[f+24>>2]=h;c[f+28>>2]=e;c[f+32>>2]=d;f=Bb(57845,f)|0;if(!f){h=7;Ra=g;return h|0}d=b+76|0;e=c[d>>2]|0;do if((e|0?(a[b+24>>0]|0)==0:0)?(c[b+56>>2]|0)==0:0){c[d>>2]=0;d=c[e+20>>2]|0;gc(c[e+16>>2]|0)|0;if(d|0){if(c[d+480>>2]|0){Xd(d,e);break}h=e;if((c[d+304>>2]|0)>>>0<=h>>>0?(c[d+308>>2]|0)>>>0>h>>>0:0){h=d+300|0;c[e>>2]=c[h>>2];c[h>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{h=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);d=nd(c[b+12>>2]|0,f,0,0,0)|0;if(!(c[7324]|0)){ab[c[29344>>2]&127](f);h=d;Ra=g;return h|0}else{h=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);h=d;Ra=g;return h|0}return 0}function Qs(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=b+24|0;f=a[e>>0]|0;a[e>>0]=0;d=b+76|0;g=c[d>>2]|0;if(!g){a[e>>0]=f;return 0}if(c[b+56>>2]|0){a[e>>0]=f;return 0}c[d>>2]=0;d=c[g+20>>2]|0;gc(c[g+16>>2]|0)|0;if(d|0){if(c[d+480>>2]|0){Xd(d,g);a[e>>0]=f;return 0}b=g;if((c[d+304>>2]|0)>>>0<=b>>>0?(c[d+308>>2]|0)>>>0>b>>>0:0){b=d+300|0;c[g>>2]=c[b>>2];c[b>>2]=g;a[e>>0]=f;return 0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);a[e>>0]=f;return 0}else{b=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);a[e>>0]=f;return 0}return 0}function Rs(b){b=b|0;var c=0,e=0,f=0,g=0,h=0,i=0;if(!b){h=0;return h|0}h=a[b>>0]|0;g=d[208+(h&255)>>0]|0;c=g+-110|0;h=h<<24>>24==0;if(!(h|(c|0)!=0)){e=57990;f=b;do{f=f+1|0;e=e+1|0;i=a[f>>0]|0;c=(d[208+(i&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(i<<24>>24==0|(c|0)!=0))}if(!c){i=1;return i|0}c=g+-112|0;if(!(h|(c|0)!=0)){e=38138;f=b;do{f=f+1|0;e=e+1|0;i=a[f>>0]|0;c=(d[208+(i&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(i<<24>>24==0|(c|0)!=0))}if(!c){i=1;return i|0}c=g+-114|0;if(h|(c|0)!=0){i=c;i=(i|0)==0;i=i&1;return i|0}e=38132;do{b=b+1|0;e=e+1|0;i=a[b>>0]|0;c=(d[208+(i&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(i<<24>>24==0|(c|0)!=0));i=(c|0)==0;i=i&1;return i|0}function Ss(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,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,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;T=Ra;Ra=Ra+240|0;s=T+232|0;S=T+224|0;P=T+216|0;O=T+208|0;N=T+192|0;M=T+184|0;K=T+176|0;J=T+168|0;G=T+160|0;D=T+144|0;C=T+136|0;B=T+128|0;A=T+120|0;z=T+112|0;x=T+104|0;v=T+96|0;u=T+88|0;t=T+80|0;r=T+72|0;H=T+64|0;p=T+56|0;q=T+48|0;I=T;l=T+40|0;k=T+32|0;if((f|0)>103){c[k>>2]=56536;S=Bb(31408,k)|0;c[i>>2]=S;i=1;Ra=T;return i|0}c[l>>2]=1;vd(b,1,l)|0;w=g+4|0;l=Eu(c[w>>2]|0)|0;y=g+8|0;m=Eu(c[y>>2]|0)|0;k=l+506+m|0;R=pb(k,0)|0;if(!R){i=7;Ra=T;return i|0}gw(R|0,0,k|0)|0;c[R+40>>2]=1;c[R>>2]=30764;n=R+504|0;E=R+32|0;c[E>>2]=n;o=n+(l+1)|0;F=R+36|0;c[F>>2]=o;a[R+22>>0]=(e|0)!=0&1;ew(n|0,c[w>>2]|0,l|0)|0;ew(o|0,c[y>>2]|0,m|0)|0;o=zb(b)|0;c[I>>2]=c[g+12>>2];Eb(o,56609,I);a:do if((f|0)>4){l=R+25|0;m=R+21|0;k=4;while(1){e=c[g+(k<<2)>>2]|0;n=a[l>>0]|0;if((a[e>>0]|0)==43){a[l>>0]=n+1<<24>>24;c[q>>2]=e+1;Eb(o,56627,q)}else{if(n<<24>>24){m=1;break a}a[m>>0]=(a[m>>0]|0)+1<<24>>24;c[p>>2]=e;Eb(o,56627,p)}k=k+1|0;if((k|0)>=(f|0)){m=0;break}}}else m=0;while(0);Eb(o,56631,H);do if((o|0)!=0&(o|0)!=29632){k=o+4|0;l=c[k>>2]|0;if(((l|0)!=0?(a[l+(c[o+16>>2]|0)>>0]=0,(c[o+12>>2]|0)!=0):0)?(a[o+21>>0]&4)==0:0)e=$d(o)|0;else e=c[k>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](o);else{q=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o)}if(e){if(!m){k=td(b,e)|0;if(!k)k=0;else{l=pd(b)|0;Q=24}}else{k=1;l=56572;Q=24}if((Q|0)==24){c[r>>2]=l;r=Bb(31408,r)|0;c[i>>2]=r}if(!(c[7324]|0))ab[c[29344>>2]&127](e);else{r=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e)}if(!k){k=a[R+21>>0]|0;r=(k&255)>>>1;a[R+20>>0]=r;if(r<<24>>24)if((k&255)<=10)if(!(k&1)){e=R+23|0;a[e>>0]=((k&255)<<2)+8;n=(j|0)==0;k=c[E>>2]|0;do if(n){l=c[F>>2]|0;c[u>>2]=k;c[u+4>>2]=l;l=Bb(56634,u)|0;m=R+16|0;if(!l){k=7;Q=48}else{c[u>>2]=0;k=qd(b,l,-1,128,0,u,0)|0;if(k|0){Q=48;break}k=c[u>>2]|0;if((Gc(k)|0)==100){u=Nc(k,0)|0;c[m>>2]=u}k=gc(k)|0;if(k|0){Q=48;break}if((c[m>>2]|0)>=448){k=0;break}c[v>>2]=c[F>>2];k=Bb(56691,v)|0;c[i>>2]=k;k=267}}else{c[t>>2]=k;l=Bb(54428,t)|0;if(!l){k=7;Q=48}else{c[t>>2]=0;k=qd(b,l,-1,128,0,t,0)|0;if(k|0){Q=48;break}k=c[t>>2]|0;if((Gc(k)|0)==100)m=(Nc(k,0)|0)+-64|0;else m=-64;k=gc(k)|0;if(k|0){Q=48;break}k=((d[e>>0]|0)*51|0)+4|0;c[R+16>>2]=(k|0)<(m|0)?k:m;k=0}}while(0);if((Q|0)==48){v=pd(b)|0;c[x>>2]=v;x=Bb(31408,x)|0;c[i>>2]=x;if(!l)break}if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{x=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}if(k|0)break;f=c[w>>2]|0;o=c[y>>2]|0;c[R+12>>2]=b;do if(!n){m=zb(b)|0;c[z>>2]=f;c[z+4>>2]=o;Eb(m,57135,z);l=R+25|0;if(a[l>>0]|0){k=0;do{c[A>>2]=k;Eb(m,57197,A);k=k+1|0}while(k>>>0<(d[l>>0]|0)>>>0)}c[B>>2]=f;c[B+4>>2]=o;Eb(m,57202,B);c[C>>2]=f;c[C+4>>2]=o;Eb(m,57266,C);C=c[R+16>>2]|0;c[D>>2]=f;c[D+4>>2]=o;c[D+8>>2]=C;Eb(m,57336,D);if(!((m|0)!=0&(m|0)!=29632)){k=7;Q=122;break}k=m+4|0;l=c[k>>2]|0;do if(!l)Q=62;else{a[l+(c[m+16>>2]|0)>>0]=0;if(!(c[m+12>>2]|0)){Q=62;break}if(a[m+21>>0]&4){Q=62;break}l=$d(m)|0}while(0);if((Q|0)==62)l=c[k>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](m);else{Q=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m)}if(!l){k=7;Q=122;break}k=nd(b,l,0,0,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{Q=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}if(k)Q=122;else Q=71}else Q=71;while(0);b:do if((Q|0)==71){c[I>>2]=R+80;c[I+4>>2]=R+84;c[I+8>>2]=R+88;c[I+12>>2]=R+92;c[I+16>>2]=R+96;c[I+20>>2]=R+100;c[I+24>>2]=R+104;c[I+28>>2]=R+108;k=Rd(b,c[E>>2]|0,35174,0,0,0,0,0,0)|0;do if(!k){e=c[F>>2]|0;c[G>>2]=c[E>>2];c[G+4>>2]=e;e=Bb(57611,G)|0;if(!e){k=7;Q=85;break}k=qd(b,e,-1,128,0,H,0)|0;c:do switch(k|0){case 0:{k=c[H>>2]|0;if((Gc(k)|0)==100){l=Oc(k,0)|0;m=L()|0}else{l=0;m=0}k=gc(k)|0;if(k|0)break c;if((l|0)==0&(m|0)==0){Q=79;break c}H=(m|0)>0|(m|0)==0&l>>>0>100;k=R+48|0;c[k>>2]=H?l:100;c[k+4>>2]=H?m:0;k=0;break}case 7:break;default:Q=79}while(0);if((Q|0)==79){k=R+48|0;c[k>>2]=1048576;c[k+4>>2]=0;k=0}if(!(c[7324]|0))ab[c[29344>>2]&127](e);else{Q=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e)}if(!k)Q=88;else Q=87}else{Q=R+48|0;c[Q>>2]=1048576;c[Q+4>>2]=0;if((k|0)!=1){Q=85;break}Q=88}while(0);d:do if((Q|0)==85)Q=87;else if((Q|0)==88){e=R+25|0;m=0;while(1){if((m|0)==3?(a[e>>0]|0)!=0:0)k=57385;else k=c[26432+(m<<2)>>2]|0;c[J>>2]=f;c[J+4>>2]=o;l=Bb(k,J)|0;if(!l){k=7;g=e;break d}k=qd(b,l,-1,133,0,c[I+(m<<2)>>2]|0,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{H=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}m=m+1|0;if(!(m>>>0<8&(k|0)==0)){g=e;break}}}while(0);if((Q|0)==87)g=R+25|0;do if(a[g>>0]|0){c[K>>2]=f;c[K+4>>2]=o;K=Bb(57493,K)|0;c[R+64>>2]=K;if(!K){k=7;Q=122;break b}p=zb(b)|0;c[M>>2]=f;c[M+4>>2]=o;Eb(p,57538,M);if(a[g>>0]|0){e=R+26|0;n=p+16|0;o=p+8|0;f=p+4|0;m=0;do{do if(m|0){k=c[n>>2]|0;l=k+1|0;if(l>>>0<(c[o>>2]|0)>>>0){c[n>>2]=l;a[(c[f>>2]|0)+k>>0]=44;break}else{wb(p,41685,1);break}}while(0);k=m+2|0;if(m>>>0<(d[e>>0]|0)>>>0){c[N>>2]=m;c[N+4>>2]=k;c[N+8>>2]=m;Eb(p,57565,N)}else{c[O>>2]=m;c[O+4>>2]=k;Eb(p,57587,O)}m=m+1|0}while(m>>>0<(d[g>>0]|0)>>>0)}Eb(p,57595,P);if(!((p|0)!=0&(p|0)!=29632)){k=7;Q=122;break b}k=p+4|0;l=c[k>>2]|0;do if(!l)Q=114;else{a[l+(c[p+16>>2]|0)>>0]=0;if(!(c[p+12>>2]|0)){Q=114;break}if(a[p+21>>0]&4){Q=114;break}l=$d(p)|0}while(0);if((Q|0)==114)l=c[k>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](p);else{P=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-P;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p)}if(!l){k=7;Q=122;break b}k=qd(b,l,-1,133,0,R+112|0,0)|0;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{P=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-P;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);if(k|0)break;c[h>>2]=R;i=0;Ra=T;return i|0}while(0);b=pd(b)|0;c[S>>2]=b;S=Bb(31408,S)|0;c[i>>2]=S;break}else k=1;else k=3;else k=2;c[s>>2]=c[26400+(k<<2)>>2];k=Bb(31408,s)|0;c[i>>2]=k;k=1}}else k=7}else k=7;while(0);Ts(R);i=k;Ra=T;return i|0}function Ts(b){b=b|0;var d=0,e=0,f=0;d=b+40|0;e=(c[d>>2]|0)+-1|0;c[d>>2]=e;if(e|0)return;a[b+24>>0]=0;d=b+76|0;e=c[d>>2]|0;do if(e|0?(c[b+56>>2]|0)==0:0){c[d>>2]=0;d=c[e+20>>2]|0;gc(c[e+16>>2]|0)|0;if(d|0){if(c[d+480>>2]|0){Xd(d,e);break}f=e;if((c[d+304>>2]|0)>>>0<=f>>>0?(c[d+308>>2]|0)>>>0>f>>>0:0){f=d+300|0;c[e>>2]=c[f>>2];c[f>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{f=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);gc(c[b+80>>2]|0)|0;gc(c[b+84>>2]|0)|0;gc(c[b+88>>2]|0)|0;gc(c[b+92>>2]|0)|0;gc(c[b+96>>2]|0)|0;gc(c[b+100>>2]|0)|0;gc(c[b+104>>2]|0)|0;gc(c[b+108>>2]|0)|0;gc(c[b+112>>2]|0)|0;d=c[b+64>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{f=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{f=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}}function Us(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!b){b=0;return b|0}f=b+16|0;g=(c[f>>2]|0)+-1|0;c[f>>2]=g;if(g|0){b=0;return b|0}f=a+60|0;c[f>>2]=(c[f>>2]|0)+-1;f=b+8|0;g=f;if((c[g>>2]|0)==1&(c[g+4>>2]|0)==0)c[a+28>>2]=-1;d=c[b>>2]|0;if((d|0)!=0?(e=Us(a,d)|0,(e|0)!=0):0)g=e;else g=Vs(a,b)|0;d=c[f>>2]|0;if(!((d|0)==0&(c[f+4>>2]|0)==0)){d=a+116+(((d>>>0)%97|0)<<2)|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;else d=e+28|0}a=b+28|0;c[d>>2]=c[a>>2];c[a>>2]=0}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);b=g;return b|0}else{a=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-a;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);b=g;return b|0}return 0}function Vs(d,e){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;j=e+20|0;if(!(c[j>>2]|0)){n=0;return n|0}m=c[d+80>>2]|0;n=e+8|0;g=n;f=c[g>>2]|0;g=c[g+4>>2]|0;do if(((f|0)!=0|(g|0)!=0)&(Vc(m,1)|0)==0){h=c[m+100>>2]|0;i=h+8|0;if(!(b[i>>1]&9216)){c[h>>2]=f;c[h+4>>2]=g;b[i>>1]=4;break}else{Pg(h,f,g);break}}while(0);f=c[e+24>>2]|0;g=c[d+16>>2]|0;if((f|0)==0|(Vc(m,2)|0)!=0){Gc(m)|0;c[j>>2]=0;if(!m)f=0;else l=12}else{f=yc((c[m+100>>2]|0)+40|0,f,g,0,0)|0;if(f|0?(k=c[m>>2]|0,c[k+64>>2]=f,Ne(k,f),k=c[m>>2]|0,(f|0)==3082|(a[k+81>>0]|0)!=0):0)og(k);Gc(m)|0;c[j>>2]=0;l=12}do if((l|0)==12){f=c[m>>2]|0;l=m+136|0;k=c[l+4>>2]|0;if((k|0)>0|(k|0)==0&(c[l>>2]|0)>>>0>0)hc(f,m);g=kc(m)|0;c[m+20>>2]=770837923;c[m+36>>2]=-1;c[m+40>>2]=0;a[m+146>>0]=2;c[m+44>>2]=0;c[m+32>>2]=1;a[m+147>>0]=-1;c[m+48>>2]=0;l=m+64|0;c[l>>2]=0;c[l+4>>2]=0;if((g|0)==3082|(a[f+81>>0]|0)!=0){og(f);f=7;break}else{f=c[f+68>>2]&g;break}}while(0);Vc(m,2)|0;m=n;if(!((f|0)==0&((c[m>>2]|0)==0&(c[m+4>>2]|0)==0))){n=f;return n|0}l=(c[d+12>>2]|0)+40|0;m=c[l>>2]|0;l=c[l+4>>2]|0;c[n>>2]=m;c[n+4>>2]=l;n=d+116+(((m>>>0)%97|0)<<2)|0;c[e+28>>2]=c[n>>2];c[n>>2]=e;n=0;return n|0}function Ws(b,e,f){b=b|0;e=+e;f=f|0;var h=0,i=0,j=0,k=0.0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=Ra;Ra=Ra+32|0;t=u;s=b+5|0;i=(a[s>>0]|0)==0;do if(i)if(c[b+24>>2]|0){h=c[b+32>>2]|0;q=b+84+((f&255)<<2)|0;c[q>>2]=(c[q>>2]|0)+1;if(!h)break;else{r=6;break}}else{t=b+84+((f&255)<<2)|0;c[t>>2]=(c[t>>2]|0)+1;break}else{h=b+84+((f&255)<<2)|0;c[h>>2]=(c[h>>2]|0)+1;h=b+40|0;r=6}while(0);if((r|0)==6){k=+g[h>>3];do if(!(k>e)){if(k==e?(d[h+16>>0]|0)>(f&255):0)break;m=b+24|0;i=c[m>>2]|0;l=b+20|0;h=c[l>>2]|0;do if((i|0)>=(h|0)){i=(h<<1)+8|0;j=b+32|0;h=c[j>>2]|0;if(mb()|0){b=0;Ra=u;return b|0}h=sb(h,i*24|0,0)|0;if(!h){b=0;Ra=u;return b|0}else{c[j>>2]=h;c[l>>2]=i;p=j;i=c[m>>2]|0;j=h;break}}else{j=b+32|0;p=j;j=c[j>>2]|0}while(0);c[m>>2]=i+1;h=j+(i*24|0)|0;g[h>>3]=e;a[j+(i*24|0)+16>>0]=f;if((i|0)<=0){b=h;Ra=u;return b|0}o=b+32|0;a:while(1){l=(i+-1|0)/2|0;m=j+(l*24|0)|0;k=+g[m>>3];if(!(ek){r=49;break}if((d[h+16>>0]|0)>=(d[j+(l*24|0)+16>>0]|0)){r=49;break}}h=j+(l*24|0)|0;c[t>>2]=c[h>>2];c[t+4>>2]=c[h+4>>2];c[t+8>>2]=c[h+8>>2];c[t+12>>2]=c[h+12>>2];c[t+16>>2]=c[h+16>>2];c[t+20>>2]=c[h+20>>2];j=j+(i*24|0)|0;c[h>>2]=c[j>>2];c[h+4>>2]=c[j+4>>2];c[h+8>>2]=c[j+8>>2];c[h+12>>2]=c[j+12>>2];c[h+16>>2]=c[j+16>>2];c[h+20>>2]=c[j+20>>2];h=(c[o>>2]|0)+(i*24|0)|0;c[h>>2]=c[t>>2];c[h+4>>2]=c[t+4>>2];c[h+8>>2]=c[t+8>>2];c[h+12>>2]=c[t+12>>2];c[h+16>>2]=c[t+16>>2];c[h+20>>2]=c[t+20>>2];h=l+1|0;j=i+1|0;do if((i|0)<9)if((i|0)<=3){r=b+64+(h<<2)|0;s=c[r>>2]|0;f=b+64+(j<<2)|0;c[r>>2]=c[f>>2];c[f>>2]=s;if((i|0)==3)break;else{h=m;r=49;break a}}else{f=b+64+(h<<2)|0;Us(c[b>>2]|0,c[f>>2]|0)|0;c[f>>2]=0;break}while(0);i=l;h=m;j=c[p>>2]|0;e=+g[m>>3]}if((r|0)==49){Ra=u;return h|0}}while(0);if(!i){m=b+24|0;j=c[m>>2]|0;l=b+20|0;h=c[l>>2]|0;do if((j|0)>=(h|0)){i=(h<<1)+8|0;j=b+32|0;h=c[j>>2]|0;if(mb()|0){b=0;Ra=u;return b|0}h=sb(h,i*24|0,0)|0;if(!h){b=0;Ra=u;return b|0}else{c[j>>2]=h;c[l>>2]=i;q=j;i=h;j=c[m>>2]|0;l=h;break}}else{q=b+32|0;l=c[q>>2]|0;i=l}while(0);c[m>>2]=j+1;h=l+(j*24|0)|0;g[h>>3]=e;a[l+(j*24|0)+16>>0]=f;b:do if((j|0)>0){p=b+32|0;n=e;while(1){m=(j+-1|0)/2|0;o=l+(m*24|0)|0;k=+g[o>>3];if(!(nk){r=26;break b}if((d[h+16>>0]|0)>=(d[l+(m*24|0)+16>>0]|0))break b}h=l+(m*24|0)|0;c[t>>2]=c[h>>2];c[t+4>>2]=c[h+4>>2];c[t+8>>2]=c[h+8>>2];c[t+12>>2]=c[h+12>>2];c[t+16>>2]=c[h+16>>2];c[t+20>>2]=c[h+20>>2];i=l+(j*24|0)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2];c[h+16>>2]=c[i+16>>2];c[h+20>>2]=c[i+20>>2];h=(c[p>>2]|0)+(j*24|0)|0;c[h>>2]=c[t>>2];c[h+4>>2]=c[t+4>>2];c[h+8>>2]=c[t+8>>2];c[h+12>>2]=c[t+12>>2];c[h+16>>2]=c[t+16>>2];c[h+20>>2]=c[t+20>>2];h=m+1|0;i=j+1|0;do if((j|0)<9)if((j|0)<=3){v=b+64+(h<<2)|0;h=c[v>>2]|0;l=b+64+(i<<2)|0;c[v>>2]=c[l>>2];c[l>>2]=h;if((j|0)==3)break;else{h=o;r=26;break b}}else{v=b+64+(h<<2)|0;Us(c[b>>2]|0,c[v>>2]|0)|0;c[v>>2]=0;break}while(0);l=c[q>>2]|0;j=m;h=o;i=l;n=+g[o>>3]}}else r=26;while(0);do if((r|0)==26)if(!h){v=0;Ra=u;return v|0}else{i=c[b+32>>2]|0;break}while(0);i=h-i|0;if((i|0)<96){c[b+64+(((i|0)/24|0)+1<<2)>>2]=c[b+64>>2];i=b+64|0}else{i=b+64|0;Us(c[b>>2]|0,c[i>>2]|0)|0}c[i>>2]=0;v=b+40|0;c[h>>2]=c[v>>2];c[h+4>>2]=c[v+4>>2];c[h+8>>2]=c[v+8>>2];c[h+12>>2]=c[v+12>>2];c[h+16>>2]=c[v+16>>2];c[h+20>>2]=c[v+20>>2]}}v=b+40|0;g[v>>3]=e;a[b+56>>0]=f;a[s>>0]=1;Ra=u;return v|0}function Xs(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,l=0,m=0,n=0,o=0,p=0;p=Ra;Ra=Ra+16|0;m=p;i=c[b+116+(((e>>>0)%97|0)<<2)>>2]|0;a:do if(i|0){j=i;while(1){o=j+8|0;if((c[o>>2]|0)==(e|0)?(c[o+4>>2]|0)==(f|0):0)break;i=c[j+28>>2]|0;if(!i)break a;else j=i}do if(g|0?(c[j>>2]|0)==0:0){i=g;while(1){if((i|0)==(j|0)){i=267;n=63;break}i=c[i>>2]|0;if(!i){n=10;break}}if((n|0)==10){b=g+16|0;c[b>>2]=(c[b>>2]|0)+1;c[j>>2]=g;break}else if((n|0)==63){Ra=p;return i|0}}while(0);b=j+16|0;c[b>>2]=(c[b>>2]|0)+1;c[h>>2]=j;h=0;Ra=p;return h|0}while(0);o=b+76|0;k=c[o>>2]|0;do if(k){c[o>>2]=0;i=ld(k,e,f)|0;c[o>>2]=k;if(!i){l=b+16|0;i=c[l>>2]|0;n=48;break}j=b+24|0;do if((a[j>>0]|0)==0?(c[b+56>>2]|0)==0:0){c[o>>2]=0;l=c[k+20>>2]|0;gc(c[k+16>>2]|0)|0;if(l|0){if(c[l+480>>2]|0){Xd(l,k);break}n=k;if((c[l+304>>2]|0)>>>0<=n>>>0?(c[l+308>>2]|0)>>>0>n>>>0:0){n=l+300|0;c[k>>2]=c[n>>2];c[n>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{n=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);if((i|0)!=7){k=c[o>>2]|0;if(!k){n=28;break}else{n=35;break}}else{h=7;Ra=p;return h|0}}else n=28;while(0);do if((n|0)==28){c[m>>2]=c[b+36>>2];j=Bb(57749,m)|0;if(!j){h=7;Ra=p;return h|0}i=ad(c[b+12>>2]|0,c[b+32>>2]|0,j,57757,e,f,0,o)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](j);else{n=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j)}k=c[o>>2]|0;if(!i){l=b+16|0;i=c[l>>2]|0;if(!k){j=0;k=l;n=50;break}else{n=48;break}}if(!k)n=46;else{j=b+24|0;n=35}}while(0);do if((n|0)==35)if((a[j>>0]|0)==0?(c[b+56>>2]|0)==0:0){c[o>>2]=0;j=c[k+20>>2]|0;gc(c[k+16>>2]|0)|0;if(j|0){if(c[j+480>>2]|0){Xd(j,k);n=46;break}b=k;if((c[j+304>>2]|0)>>>0<=b>>>0?(c[j+308>>2]|0)>>>0>b>>>0:0){n=j+300|0;c[k>>2]=c[n>>2];c[n>>2]=k;n=46;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);n=46;break}else{n=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);n=46;break}}else n=46;else if((n|0)==48)if(!(c[k+16>>2]|0)){j=0;k=l;n=50}else{j=c[k>>2]|0;k=l;n=50}while(0);do if((n|0)==46){c[h>>2]=0;i=(i|0)==1?267:i;j=0}else if((n|0)==50)if((i|0)==(j|0)){j=pb(i+32|0,0)|0;if(j){c[j>>2]=g;i=j+32|0;c[j+24>>2]=i;c[j+16>>2]=1;n=b+60|0;c[n>>2]=(c[n>>2]|0)+1;n=j+8|0;c[n>>2]=e;c[n+4>>2]=f;c[j+20>>2]=0;c[j+28>>2]=0;i=jd(c[o>>2]|0,i,c[k>>2]|0,0,81)|0;if((e|0)==1&(f|0)==0){f=c[j+24>>2]|0;f=d[f>>0]<<8|d[f+1>>0];c[b+28>>2]=f;i=f>>>0>40?267:i}if(!i){f=c[j+24>>2]|0;if((d[f+2>>0]<<8|d[f+3>>0]|0)>(((c[b+16>>2]|0)+-4|0)/(d[b+23>>0]|0)|0|0))i=267;else{if(g|0){g=g+16|0;c[g>>2]=(c[g>>2]|0)+1}i=b+116+((((c[j+8>>2]|0)>>>0)%97|0)<<2)|0;c[j+28>>2]=c[i>>2];c[i>>2]=j;i=0;break}}b=b+60|0;c[b>>2]=(c[b>>2]|0)+-1;if(!(c[7324]|0)){ab[c[29344>>2]&127](j);j=0;break}else{b=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);j=0;break}}else{i=7;j=0}}else{i=267;j=0}while(0);c[h>>2]=j;h=i;Ra=p;return h|0}function Ys(b){b=b|0;var e=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.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,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,_=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,Sa=0,Ta=0,Ua=0,Va=0,Xa=0;Pa=Ra;Ra=Ra+96|0;ua=Pa;Fa=Pa+80|0;za=c[b>>2]|0;Ma=c[b+12>>2]|0;Na=(a[za+22>>0]|0)==1;Oa=b+5|0;va=b+24|0;wa=b+40|0;xa=b+32|0;ya=b+48|0;za=za+23|0;Aa=(Ma|0)>0;Ba=b+16|0;Ca=ua+8|0;Da=ua+72|0;Ea=ua+64|0;Ga=ua+56|0;Ha=ua+48|0;Ia=ua+40|0;Ja=ua+32|0;Ka=ua+24|0;La=ua+16|0;m=0;e=0;a:while(1){j=a[Oa>>0]|0;if(!(j<<24>>24)){if(!(c[va>>2]|0)){e=1;ta=66;break}i=c[xa>>2]|0;if(!i){e=1;ta=66;break}}else i=wa;if(!(a[i+16>>0]|0)){e=0;ta=66;break}k=1-(j&255)|0;l=b+64+(k<<2)|0;j=c[l>>2]|0;if(!j){if(!k)e=ya;else e=(c[xa>>2]|0)+8|0;e=Xs(c[b>>2]|0,c[e>>2]|0,c[e+4>>2]|0,0,l)|0;j=c[l>>2]|0}if(e|0){ta=67;break}ra=j+24|0;sa=c[ra>>2]|0;sa=d[sa+2>>0]<<8|d[sa+3>>0];qa=i;j=m;e=0;b:while(1){oa=qa+18|0;k=a[oa>>0]|0;i=k&255;if(sa>>>0<=i>>>0)break;pa=(c[ra>>2]|0)+((G(d[za>>0]|0,i)|0)+4)|0;c:do if(Aa){O=qa+16|0;P=pa+8|0;Q=pa+1|0;R=pa+2|0;S=pa+3|0;T=pa+4|0;U=pa+5|0;V=pa+6|0;W=pa+7|0;X=pa+12|0;Y=pa+13|0;Z=pa+14|0;_=pa+15|0;$=pa+9|0;aa=pa+10|0;ba=pa+11|0;ca=pa+44|0;da=pa+45|0;ea=pa+46|0;fa=pa+47|0;ga=pa+40|0;ha=pa+41|0;ia=pa+42|0;ja=pa+43|0;ka=pa+36|0;la=pa+37|0;ma=pa+38|0;na=pa+39|0;r=pa+32|0;s=pa+33|0;t=pa+34|0;u=pa+35|0;v=pa+28|0;w=pa+29|0;x=pa+30|0;y=pa+31|0;z=pa+24|0;A=pa+25|0;B=pa+26|0;C=pa+27|0;D=pa+20|0;E=pa+21|0;F=pa+22|0;H=pa+23|0;I=pa+16|0;J=pa+17|0;K=pa+18|0;M=pa+19|0;N=qa+17|0;o=2;n=0;p=-1.0;d:do{l=c[Ba>>2]|0;m=c[l+(n*24|0)+4>>2]|0;e:do if((m|0)>69){e=c[l+(n*24|0)+16>>2]|0;i=c[e+28>>2]|0;if((m|0)==71?(a[O>>0]|0)==1:0){Va=cw(d[pa>>0]|0,0,56)|0;Sa=L()|0;Xa=cw(d[Q>>0]|0,0,48)|0;Sa=L()|0|Sa;Ua=cw(d[R>>0]|0,0,40)|0;Sa=Sa|(L()|0);Sa=Sa|d[S>>0];Ta=cw(d[T>>0]|0,0,24)|0;Sa=Sa|(L()|0);k=cw(d[U>>0]|0,0,16)|0;Sa=Sa|(L()|0);Qa=cw(d[V>>0]|0,0,8)|0;Sa=Sa|(L()|0);Sa=Sv(Xa|Va|Ua|Ta|k|Qa|0,Sa|0,d[W>>0]|0,0)|0;Qa=L()|0;k=e+40|0;c[k>>2]=Sa;c[k+4>>2]=Qa}if(Na){switch(i|0){case 10:{g[Da>>3]=+(d[da>>0]<<16|d[ca>>0]<<24|d[ea>>0]<<8|d[fa>>0]|0);g[Ea>>3]=+(d[ha>>0]<<16|d[ga>>0]<<24|d[ia>>0]<<8|d[ja>>0]|0);ta=29;break}case 8:{ta=29;break}case 6:{ta=30;break}case 4:{ta=31;break}default:{}}if((ta|0)==29){g[Ga>>3]=+(d[la>>0]<<16|d[ka>>0]<<24|d[ma>>0]<<8|d[na>>0]|0);g[Ha>>3]=+(d[s>>0]<<16|d[r>>0]<<24|d[t>>0]<<8|d[u>>0]|0);ta=30}if((ta|0)==30){g[Ia>>3]=+(d[w>>0]<<16|d[v>>0]<<24|d[x>>0]<<8|d[y>>0]|0);g[Ja>>3]=+(d[A>>0]<<16|d[z>>0]<<24|d[B>>0]<<8|d[C>>0]|0);ta=31}if((ta|0)==31){ta=0;g[Ka>>3]=+(d[E>>0]<<16|d[D>>0]<<24|d[F>>0]<<8|d[H>>0]|0);g[La>>3]=+(d[J>>0]<<16|d[I>>0]<<24|d[K>>0]<<8|d[M>>0]|0)}g[Ca>>3]=+(d[Y>>0]<<16|d[X>>0]<<24|d[Z>>0]<<8|d[_>>0]|0);q=+(d[$>>0]<<16|d[P>>0]<<24|d[aa>>0]<<8|d[ba>>0]|0)}else{switch(i|0){case 10:{g[Da>>3]=(c[h>>2]=d[da>>0]<<16|d[ca>>0]<<24|d[ea>>0]<<8|d[fa>>0],+f[h>>2]);g[Ea>>3]=(c[h>>2]=d[ha>>0]<<16|d[ga>>0]<<24|d[ia>>0]<<8|d[ja>>0],+f[h>>2]);ta=23;break}case 8:{ta=23;break}case 6:{ta=24;break}case 4:{ta=25;break}default:{}}if((ta|0)==23){g[Ga>>3]=(c[h>>2]=d[la>>0]<<16|d[ka>>0]<<24|d[ma>>0]<<8|d[na>>0],+f[h>>2]);g[Ha>>3]=(c[h>>2]=d[s>>0]<<16|d[r>>0]<<24|d[t>>0]<<8|d[u>>0],+f[h>>2]);ta=24}if((ta|0)==24){g[Ia>>3]=(c[h>>2]=d[w>>0]<<16|d[v>>0]<<24|d[x>>0]<<8|d[y>>0],+f[h>>2]);g[Ja>>3]=(c[h>>2]=d[A>>0]<<16|d[z>>0]<<24|d[B>>0]<<8|d[C>>0],+f[h>>2]);ta=25}if((ta|0)==25){ta=0;g[Ka>>3]=(c[h>>2]=d[E>>0]<<16|d[D>>0]<<24|d[F>>0]<<8|d[H>>0],+f[h>>2]);g[La>>3]=(c[h>>2]=d[J>>0]<<16|d[I>>0]<<24|d[K>>0]<<8|d[M>>0],+f[h>>2])}g[Ca>>3]=(c[h>>2]=d[Y>>0]<<16|d[X>>0]<<24|d[Z>>0]<<8|d[_>>0],+f[h>>2]);q=(c[h>>2]=d[$>>0]<<16|d[P>>0]<<24|d[aa>>0]<<8|d[ba>>0],+f[h>>2])}g[ua>>3]=q;if((m|0)==70){c[Fa>>2]=0;e=Za[c[l+(n*24|0)+8>>2]&127](e,i,ua,Fa)|0;p=0.0;o=(c[Fa>>2]|0)==0?0:o}else{c[e+20>>2]=ua;c[e+32>>2]=(d[O>>0]|0)+-1;q=+g[qa>>3];g[e+48>>3]=q;Va=e+64|0;g[Va>>3]=q;Ua=d[N>>0]|0;c[e+56>>2]=Ua;Xa=e+60|0;c[Xa>>2]=Ua;e=Wa[c[l+(n*24|0)+8>>2]&127](e)|0;Xa=c[Xa>>2]|0;q=+g[Va>>3];p=p<0.0|q>2]<<2;if((a[O>>0]|0)!=1){k=pa+((i&1016)+8)|0;if((m+-65|0)>>>0<3){i=d[k+1>>0]<<16|d[k>>0]<<24|d[k+2>>0]<<8|d[k+3>>0];q=+g[l+(n*24|0)+8>>3];if(q>=(Na?+(i|0):(c[h>>2]=i,+f[h>>2]))){ta=49;break}if((m|0)!=65){ta=50;break}}else q=+g[l+(n*24|0)+8>>3];i=k+4|0;i=d[i+1>>0]<<16|d[i>>0]<<24|d[i+2>>0]<<8|d[i+3>>0];if(!(q<=(Na?+(i|0):(c[h>>2]=i,+f[h>>2])))){ta=50;break}else{ta=49;break}}i=pa+(i+8)|0;i=d[i+1>>0]<<16|d[i>>0]<<24|d[i+2>>0]<<8|d[i+3>>0];q=Na?+(i|0):(c[h>>2]=i,+f[h>>2]);switch(m|0){case 66:if(!(q<=+g[l+(n*24|0)+8>>3])){ta=50;break e}else{ta=49;break e}case 67:if(q<+g[l+(n*24|0)+8>>3]){ta=49;break e}else{ta=50;break e}case 68:if(!(q>=+g[l+(n*24|0)+8>>3])){ta=50;break e}else{ta=49;break e}case 69:if(q>+g[l+(n*24|0)+8>>3]){ta=49;break e}else{ta=50;break e}default:if(q==+g[l+(n*24|0)+8>>3]){ta=49;break e}else{ta=50;break e}}}while(0);if((ta|0)==49){ta=0;if(!o)ta=50;else k=0}if((ta|0)==50){ta=0;k=6;o=0}switch(k&7){case 6:break d;case 0:break;default:{i=qa;break c}}n=n+1|0}while((n|0)<(Ma|0));i=(a[oa>>0]|0)+1<<24>>24;a[oa>>0]=i;if(!o){i=qa;k=4}else ta=54}else{i=k+1<<24>>24;a[oa>>0]=i;p=-1.0;o=2;ta=54}while(0);if((ta|0)==54){ta=0;n=(d[qa+16>>0]|0)+255&255;if(!(n<<24>>24)){m=qa+8|0;k=i&255;i=k;k=k+255&255;l=c[m>>2]|0;m=c[m+4>>2]|0}else{Ua=cw(d[pa>>0]|0,0,56)|0;l=L()|0;Ta=cw(d[pa+1>>0]|0,0,48)|0;l=L()|0|l;Va=cw(d[pa+2>>0]|0,0,40)|0;l=l|(L()|0);l=l|d[pa+3>>0];Xa=cw(d[pa+4>>0]|0,0,24)|0;l=l|(L()|0);m=cw(d[pa+5>>0]|0,0,16)|0;l=l|(L()|0);k=cw(d[pa+6>>0]|0,0,8)|0;l=l|(L()|0);l=Sv(Ta|Ua|Va|Xa|m|k|0,l|0,d[pa+7>>0]|0,0)|0;i=i&255;k=0;m=L()|0}if(sa>>>0<=i>>>0)Zs(b);i=Ws(b,p<0.0?0.0:p,n)|0;if(!i){e=7;ta=67;break a}a[i+17>>0]=o;Xa=i+8|0;c[Xa>>2]=l;c[Xa+4>>2]=m;a[i+18>>0]=k;k=5}switch(k|0){case 4:{qa=i;break}case 5:{ta=62;break b}default:{e=j;ta=67;break a}}}if((ta|0)==62){ta=0;i=d[i+18>>0]|0}if(sa>>>0<=i>>>0)Zs(b);m=j}if((ta|0)==66){a[b+4>>0]=e;Xa=0;Ra=Pa;return Xa|0}else if((ta|0)==67){Ra=Pa;return e|0}return 0}function Zs(b){b=b|0;var e=0,f=0,h=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=Ra;Ra=Ra+32|0;p=r;i=b+5|0;e=a[i>>0]|0;f=b+64+(1-(e&255)<<2)|0;h=c[f>>2]|0;if(h){Us(c[b>>2]|0,h)|0;c[f>>2]=0;e=a[i>>0]|0}if(e<<24>>24){q=b+84+((d[b+56>>0]|0)<<2)|0;c[q>>2]=(c[q>>2]|0)+-1;a[i>>0]=0;Ra=r;return}e=b+24|0;f=c[e>>2]|0;if(!f){Ra=r;return}n=b+32|0;m=c[n>>2]|0;o=b+84+((d[m+16>>0]|0)<<2)|0;c[o>>2]=(c[o>>2]|0)+-1;o=f+-1|0;c[e>>2]=o;e=m+(o*24|0)|0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];c[m+16>>2]=c[e+16>>2];c[m+20>>2]=c[e+20>>2];e=b+64+(f<<2)|0;if((f|0)<5?(c[b+68>>2]=c[e>>2],c[e>>2]=0,(f|0)<=2):0){Ra=r;return}e=0;m=1;a:while(1){l=m+1|0;i=c[n>>2]|0;do if((l|0)<(o|0)){h=i+(l*24|0)|0;k=+g[h>>3];j=+g[i+(m*24|0)>>3];if(!(kj){q=21;break}if((d[i+(l*24|0)+16>>0]|0)>=(d[i+(m*24|0)+16>>0]|0)){q=21;break}}f=i+(e*24|0)|0;j=+g[f>>3];if(!(kj){q=30;break a}if((d[i+(l*24|0)+16>>0]|0)>=(d[i+(e*24|0)+16>>0]|0)){q=30;break a}};c[p>>2]=c[f>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];c[p+16>>2]=c[f+16>>2];c[p+20>>2]=c[f+20>>2];c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];c[f+16>>2]=c[h+16>>2];c[f+20>>2]=c[h+20>>2];f=(c[n>>2]|0)+(l*24|0)|0;c[f>>2]=c[p>>2];c[f+4>>2]=c[p+4>>2];c[f+8>>2]=c[p+8>>2];c[f+12>>2]=c[p+12>>2];c[f+16>>2]=c[p+16>>2];c[f+20>>2]=c[p+20>>2];f=e+1|0;h=m+2|0;do if((e|0)<4)if((m|0)>2){m=b+64+(f<<2)|0;Us(c[b>>2]|0,c[m>>2]|0)|0;c[m>>2]=0;break}else{f=b+64+(f<<2)|0;i=c[f>>2]|0;m=b+64+(h<<2)|0;c[f>>2]=c[m>>2];c[m>>2]=i;break}while(0);e=l}else q=21;while(0);if((q|0)==21){q=0;f=i+(m*24|0)|0;h=i+(e*24|0)|0;j=+g[f>>3];k=+g[h>>3];if(!(jk){q=30;break}if((d[i+(m*24|0)+16>>0]|0)>=(d[i+(e*24|0)+16>>0]|0)){q=30;break}};c[p>>2]=c[h>>2];c[p+4>>2]=c[h+4>>2];c[p+8>>2]=c[h+8>>2];c[p+12>>2]=c[h+12>>2];c[p+16>>2]=c[h+16>>2];c[p+20>>2]=c[h+20>>2];c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];c[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];f=(c[n>>2]|0)+(m*24|0)|0;c[f>>2]=c[p>>2];c[f+4>>2]=c[p+4>>2];c[f+8>>2]=c[p+8>>2];c[f+12>>2]=c[p+12>>2];c[f+16>>2]=c[p+16>>2];c[f+20>>2]=c[p+20>>2];f=e+1|0;do if((e|0)<4)if((m|0)>3){l=b+64+(f<<2)|0;Us(c[b>>2]|0,c[l>>2]|0)|0;c[l>>2]=0;break}else{h=b+64+(f<<2)|0;i=c[h>>2]|0;l=b+64+(l<<2)|0;c[h>>2]=c[l>>2];c[l>>2]=i;break}while(0);e=m}m=e<<1|1;if((m|0)>=(o|0)){q=30;break}}if((q|0)==30){Ra=r;return}}function _s(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+32|0;l=o+16|0;j=o+8|0;g=o;i=o+28|0;c[i>>2]=0;n=d+36|0;m=c[n>>2]|0;c[g>>2]=c[d+32>>2];c[g+4>>2]=m;g=Bb(53869,g)|0;do if(!g){h=7;g=0}else{h=qd(c[d+12>>2]|0,g,-1,128,0,i,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{m=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}if(h|0){g=c[i>>2]|0;break}m=c[i>>2]|0;k=c[m>>2]|0;g=(m|0)==0;if(!f){if(!g?(b[m+144>>1]|0)!=0:0){g=c[m+116>>2]|0;do if(g){h=b[g+8>>1]|0;if((h&514)==514?(a[g+10>>0]|0)==1:0){g=c[g+16>>2]|0;break}if(!(h&1))g=Gg(g,1)|0;else g=0}else g=0;while(0);h=k+81|0;if(a[h>>0]|0)if(!(c[k+180>>2]|0)){a[h>>0]=0;c[k+264>>2]=0;g=k+272|0;c[g>>2]=(c[g>>2]|0)+-1;g=0}else g=0}else g=0;c[j>>2]=c[n>>2];c[j+4>>2]=g;g=Bb(57776,j)|0}else{if(!g){j=m+144|0;if((e[j>>1]|0)>>>0>f>>>0){g=c[m+116>>2]|0;h=g+(f*40|0)|0;do if(h){i=b[g+(f*40|0)+8>>1]|0;if((i&514)==514?(a[g+(f*40|0)+10>>0]|0)==1:0){h=c[g+(f*40|0)+16>>2]|0;break}if(!(i&1))h=Gg(h,1)|0;else h=0}else h=0;while(0);g=k+81|0;if(a[g>>0]|0)if(!(c[k+180>>2]|0)){a[g>>0]=0;c[k+264>>2]=0;h=k+272|0;c[h>>2]=(c[h>>2]|0)+-1;h=0}else h=0}else h=0;f=f+1|0;k=c[m>>2]|0;if(f>>>0<(e[j>>1]|0)>>>0){g=c[m+116>>2]|0;i=g+(f*40|0)|0;do if(i){j=b[g+(f*40|0)+8>>1]|0;if((j&514)==514?(a[g+(f*40|0)+10>>0]|0)==1:0){g=c[g+(f*40|0)+16>>2]|0;break}if(!(j&1))g=Gg(i,1)|0;else g=0}else g=0;while(0);i=k+81|0;if(a[i>>0]|0)if(!(c[k+180>>2]|0)){a[i>>0]=0;c[k+264>>2]=0;g=k+272|0;c[g>>2]=(c[g>>2]|0)+-1;g=0}else g=0}else g=0}else{h=0;g=0}c[l>>2]=c[n>>2];c[l+4>>2]=h;c[l+8>>2]=g;g=Bb(57808,l)|0}c[d+8>>2]=g;gc(m)|0;d=19;Ra=o;return d|0}while(0);gc(g)|0;d=h;Ra=o;return d|0}function $s(e,f,g){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,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;x=Ra;Ra=Ra+64|0;t=x+56|0;u=x;v=x+52|0;w=x+48|0;c[v>>2]=0;c[w>>2]=0;i=Xs(e,1,0,0,w)|0;a:do if(!i){c[v>>2]=0;k=e+88|0;h=c[k>>2]|0;do if(!(Vc(h,1)|0)){h=c[h+100>>2]|0;i=h+8|0;if(!(b[i>>1]&9216)){s=h;c[s>>2]=f;c[s+4>>2]=g;b[i>>1]=4;break}else{Pg(h,f,g);break}}while(0);s=(Gc(c[k>>2]|0)|0)==100;j=c[k>>2]|0;do if(s){i=Oc(j,0)|0;i=Xs(e,i,L()|0,0,v)|0;h=c[k>>2]|0;if(h){j=c[h>>2]|0;s=h+136|0;r=c[s+4>>2]|0;if((r|0)>0|(r|0)==0&(c[s>>2]|0)>>>0>0)hc(j,h);s=kc(h)|0;c[h+20>>2]=770837923;c[h+36>>2]=-1;c[h+40>>2]=0;a[h+146>>0]=2;c[h+44>>2]=0;c[h+32>>2]=1;a[h+147>>0]=-1;c[h+48>>2]=0;r=h+64|0;c[r>>2]=0;c[r+4>>2]=0;if((s|0)==3082|(a[j+81>>0]|0)!=0)og(j)}}else if(j){h=c[j>>2]|0;s=j+136|0;r=c[s+4>>2]|0;if((r|0)>0|(r|0)==0&(c[s>>2]|0)>>>0>0)hc(h,j);i=kc(j)|0;c[j+20>>2]=770837923;c[j+36>>2]=-1;c[j+40>>2]=0;a[j+146>>0]=2;c[j+44>>2]=0;c[j+32>>2]=1;a[j+147>>0]=-1;c[j+48>>2]=0;s=j+64|0;c[s>>2]=0;c[s+4>>2]=0;if((i|0)==3082|(a[h+81>>0]|0)!=0){og(h);i=7;break a}else{i=c[h+68>>2]&i;break}}else i=0;while(0);l=c[v>>2]|0;b:do if((i|0)==0&(l|0)!=0){i=c[l+24>>2]|0;j=d[i+2>>0]<<8|d[i+3>>0];c:do if(j|0){k=d[e+23>>0]|0;h=0;while(1){s=i+((G(h,k)|0)+4)|0;A=cw(d[s>>0]|0,0,56)|0;r=L()|0;B=cw(d[s+1>>0]|0,0,48)|0;r=L()|0|r;z=cw(d[s+2>>0]|0,0,40)|0;r=r|(L()|0);r=r|d[s+3>>0];y=cw(d[s+4>>0]|0,0,24)|0;r=r|(L()|0);p=cw(d[s+5>>0]|0,0,16)|0;r=r|(L()|0);q=cw(d[s+6>>0]|0,0,8)|0;r=r|(L()|0);s=Sv(B|A|z|y|p|q|0,r|0,d[s+7>>0]|0,0)|0;if((s|0)==(f|0)&(L()|0)==(g|0))break;h=h+1|0;if(h>>>0>=j>>>0)break c}h=ct(e,l,h,0)|0;i=Us(e,l)|0;if(!h)break b;else{i=h;break a}}while(0);Us(e,l)|0;i=267;break a}while(0);if(!i){j=e+96|0;h=c[j>>2]|0;do if(!(Vc(h,1)|0)){h=c[h+100>>2]|0;i=h+8|0;if(!(b[i>>1]&9216)){B=h;c[B>>2]=f;c[B+4>>2]=g;b[i>>1]=4;break}else{Pg(h,f,g);break}}while(0);Gc(c[j>>2]|0)|0;h=c[j>>2]|0;do if(h|0){i=c[h>>2]|0;B=h+136|0;A=c[B+4>>2]|0;if((A|0)>0|(A|0)==0&(c[B>>2]|0)>>>0>0)hc(i,h);j=kc(h)|0;c[h+20>>2]=770837923;c[h+36>>2]=-1;c[h+40>>2]=0;a[h+146>>0]=2;c[h+44>>2]=0;c[h+32>>2]=1;a[h+147>>0]=-1;c[h+48>>2]=0;B=h+64|0;c[B>>2]=0;c[B+4>>2]=0;if(!((j|0)==3082|(a[i+81>>0]|0)!=0)){i=c[i+68>>2]&j;if(!i)break;else break a}else{og(i);i=7;break a}}while(0);j=e+28|0;if((c[j>>2]|0)>0?(n=c[w>>2]|0,o=n+24|0,m=c[o>>2]|0,(d[m+2>>0]<<8|d[m+3>>0]|0)==1):0){c[t>>2]=0;y=cw(d[m+4>>0]|0,0,56)|0;h=L()|0;s=cw(d[m+5>>0]|0,0,48)|0;h=L()|0|h;z=cw(d[m+6>>0]|0,0,40)|0;h=h|(L()|0);h=h|d[m+7>>0];A=cw(d[m+8>>0]|0,0,24)|0;h=h|(L()|0);B=cw(d[m+9>>0]|0,0,16)|0;h=h|(L()|0);i=cw(d[m+10>>0]|0,0,8)|0;h=h|(L()|0);h=Sv(s|y|z|A|B|i|0,h|0,d[m+11>>0]|0,0)|0;h=Xs(e,h,L()|0,n,t)|0;i=c[t>>2]|0;if(!h)h=dt(e,i,(c[j>>2]|0)+-1|0)|0;i=Us(e,i)|0;i=(h|0)==0?i:h;if(!i){A=(c[j>>2]|0)+-1|0;c[j>>2]=A;B=c[o>>2]|0;a[B>>0]=A>>>8;a[B+1>>0]=A;c[n+20>>2]=1}}else i=0}}while(0);q=e+68|0;j=c[q>>2]|0;c[v>>2]=j;h=(i|0)==0;if(!j){B=i;z=h;A=c[w>>2]|0;A=Us(e,A)|0;B=z?A:B;Ra=x;return B|0}r=e+60|0;p=e+23|0;s=e+21|0;do{o=j;n=j;d:do if(h){f=n+24|0;h=c[f>>2]|0;g=d[h+2>>0]<<8|d[h+3>>0];if(!g)i=0;else{m=n+8|0;l=0;while(1){B=G(l,d[p>>0]|0)|0;A=h+(B+4)|0;D=cw(d[A>>0]|0,0,56)|0;i=L()|0;E=cw(d[A+1>>0]|0,0,48)|0;i=L()|0|i;C=cw(d[A+2>>0]|0,0,40)|0;i=i|(L()|0);i=i|d[A+3>>0];y=cw(d[A+4>>0]|0,0,24)|0;i=i|(L()|0);z=cw(d[A+5>>0]|0,0,16)|0;i=i|(L()|0);k=cw(d[A+6>>0]|0,0,8)|0;i=i|(L()|0);A=Sv(E|D|C|y|z|k|0,i|0,d[A+7>>0]|0,0)|0;i=L()|0;k=u;c[k>>2]=A;c[k+4>>2]=i;k=d[s>>0]|0;i=0;h=h+(B+12)|0;while(1){c[u+8+(i<<2)>>2]=d[h+1>>0]<<16|d[h>>0]<<24|d[h+2>>0]<<8|d[h+3>>0];c[u+8+((i|1)<<2)>>2]=d[h+5>>0]<<16|d[h+4>>0]<<24|d[h+6>>0]<<8|d[h+7>>0];i=i+2|0;if(i>>>0>=k>>>0)break;else h=h+8|0}i=at(e,u,c[m>>2]|0,t)|0;if(!i){E=c[t>>2]|0;i=bt(e,E,u,c[m>>2]|0)|0;E=Us(e,E)|0;i=(i|0)==0?E:i}h=l+1|0;if(!(h>>>0>>0&(i|0)==0))break d;l=h;h=c[f>>2]|0}}}while(0);h=c[n+28>>2]|0;c[q>>2]=h;c[r>>2]=(c[r>>2]|0)+-1;if(!j)j=h;else{if(!(c[7324]|0))ab[c[29344>>2]&127](o);else{E=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o)}j=c[q>>2]|0}c[v>>2]=j;h=(i|0)==0}while((j|0)!=0);E=c[w>>2]|0;E=Us(e,E)|0;E=h?E:i;Ra=x;return E|0}function at(b,e,g,h){b=b|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=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,_=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;Ba=Ra;Ra=Ra+112|0;wa=Ba+48|0;za=Ba+96|0;xa=Ba;c[za>>2]=0;i=Xs(b,1,0,0,za)|0;ya=b+28|0;if(i|0){Aa=i;za=c[za>>2]|0;c[h>>2]=za;Ra=Ba;return Aa|0}D=b+23|0;H=b+21|0;E=b+20|0;F=b+22|0;I=wa+12|0;J=wa+8|0;K=wa+44|0;M=wa+40|0;N=wa+36|0;O=wa+32|0;P=wa+28|0;Q=wa+24|0;R=wa+20|0;S=wa+16|0;T=wa+12|0;U=wa+8|0;V=wa+44|0;W=wa+40|0;X=wa+36|0;Y=wa+32|0;Z=wa+28|0;_=wa+24|0;$=wa+20|0;aa=wa+16|0;ba=xa+12|0;ca=xa+8|0;da=xa+44|0;ea=xa+40|0;fa=xa+36|0;ga=xa+32|0;ha=xa+28|0;ia=xa+24|0;ja=xa+20|0;ka=xa+16|0;la=xa+12|0;ma=xa+8|0;na=xa+44|0;oa=xa+40|0;pa=xa+36|0;qa=xa+32|0;ra=xa+28|0;sa=xa+24|0;ta=xa+20|0;ua=xa+16|0;C=0;while(1){if((C|0)>=((c[ya>>2]|0)-g|0)){i=0;Aa=56;break}va=c[za>>2]|0;x=va+24|0;i=c[x>>2]|0;y=d[i+2>>0]<<8|d[i+3>>0];a:do if(!y){j=0;i=0}else{B=a[H>>0]|0;z=d[D>>0]|0;A=B&255;B=B&255;k=0;p=0.0;w=0.0;l=i;u=0;v=0;while(1){t=G(k,z)|0;j=l+(t+4)|0;Ea=cw(d[j>>0]|0,0,56)|0;i=L()|0;Fa=cw(d[j+1>>0]|0,0,48)|0;i=L()|0|i;Da=cw(d[j+2>>0]|0,0,40)|0;i=i|(L()|0);i=i|d[j+3>>0];Ca=cw(d[j+4>>0]|0,0,24)|0;i=i|(L()|0);o=cw(d[j+5>>0]|0,0,16)|0;i=i|(L()|0);m=cw(d[j+6>>0]|0,0,8)|0;i=i|(L()|0);j=Sv(Fa|Ea|Da|Ca|o|m|0,i|0,d[j+7>>0]|0,0)|0;i=L()|0;m=xa;c[m>>2]=j;c[m+4>>2]=i;m=0;l=l+(t+12)|0;while(1){c[xa+8+(m<<2)>>2]=d[l+1>>0]<<16|d[l>>0]<<24|d[l+2>>0]<<8|d[l+3>>0];c[xa+8+((m|1)<<2)>>2]=d[l+5>>0]<<16|d[l+4>>0]<<24|d[l+6>>0]<<8|d[l+7>>0];m=m+2|0;if(m>>>0>=A>>>0)break;else l=l+8|0}l=wa;m=xa;o=l+48|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(o|0));t=a[E>>0]|0;o=(a[F>>0]|0)==0;if(o){switch(t<<24>>24){case 5:{n=+f[K>>2]-+f[M>>2];Aa=11;break}case 4:{n=1.0;Aa=11;break}case 3:{n=1.0;Aa=12;break}case 2:{n=1.0;Aa=13;break}default:q=1.0}if((Aa|0)==11){n=n*(+f[N>>2]-+f[O>>2]);Aa=12}if((Aa|0)==12){n=n*(+f[P>>2]-+f[Q>>2]);Aa=13}if((Aa|0)==13){Aa=0;q=n*(+f[R>>2]-+f[S>>2])}n=+f[J>>2];r=+f[I>>2]-n;m=0;while(1){s=+f[e+8+(m<<2)>>2];f[wa+8+(m<<2)>>2]=n>2];s=+f[e+8+(Fa<<2)>>2];f[l>>2]=n>s?n:s;l=m+2|0;if(l>>>0>=B>>>0)break;m=l;n=+f[wa+8+(l<<2)>>2]}s=q*r}else{switch(t<<24>>24){case 5:{Fa=c[V>>2]|0;Aa=c[W>>2]|0;n=+((Tv(Fa|0,((Fa|0)<0)<<31>>31|0,Aa|0,((Aa|0)<0)<<31>>31|0)|0)>>>0)+4294967296.0*+(L()|0);Aa=16;break}case 4:{n=1.0;Aa=16;break}case 3:{n=1.0;Aa=17;break}case 2:{n=1.0;Aa=18;break}default:n=1.0}if((Aa|0)==16){Ea=c[X>>2]|0;Fa=c[Y>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;n=n*(+(Fa>>>0)+4294967296.0*+(L()|0));Aa=17}if((Aa|0)==17){Ea=c[Z>>2]|0;Fa=c[_>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;n=n*(+(Fa>>>0)+4294967296.0*+(L()|0));Aa=18}if((Aa|0)==18){Aa=0;Ea=c[$>>2]|0;Fa=c[aa>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;n=n*(+(Fa>>>0)+4294967296.0*+(L()|0))}m=c[T>>2]|0;l=c[U>>2]|0;m=Tv(m|0,((m|0)<0)<<31>>31|0,l|0,((l|0)<0)<<31>>31|0)|0;q=+(m>>>0)+4294967296.0*+(L()|0);m=0;while(1){Fa=c[e+8+(m<<2)>>2]|0;c[wa+8+(m<<2)>>2]=(l|0)<(Fa|0)?l:Fa;Fa=m|1;l=wa+8+(Fa<<2)|0;Ea=c[l>>2]|0;Fa=c[e+8+(Fa<<2)>>2]|0;c[l>>2]=(Ea|0)>(Fa|0)?Ea:Fa;l=m+2|0;if(l>>>0>=B>>>0)break;m=l;l=c[wa+8+(l<<2)>>2]|0}s=n*q}if(o){switch(t<<24>>24){case 5:{n=+f[K>>2]-+f[M>>2];Aa=30;break}case 4:{n=1.0;Aa=30;break}case 3:{n=1.0;Aa=31;break}case 2:{n=1.0;Aa=32;break}default:n=1.0}if((Aa|0)==30){n=n*(+f[N>>2]-+f[O>>2]);Aa=31}if((Aa|0)==31){n=n*(+f[P>>2]-+f[Q>>2]);Aa=32}if((Aa|0)==32){Aa=0;n=n*(+f[R>>2]-+f[S>>2])}r=n*(+f[I>>2]-+f[J>>2]);switch(t<<24>>24){case 5:{n=+f[da>>2]-+f[ea>>2];Aa=40;break}case 4:{n=1.0;Aa=40;break}case 3:{n=1.0;Aa=41;break}case 2:{n=1.0;Aa=42;break}default:n=1.0}if((Aa|0)==40){n=n*(+f[fa>>2]-+f[ga>>2]);Aa=41}if((Aa|0)==41){n=n*(+f[ha>>2]-+f[ia>>2]);Aa=42}if((Aa|0)==42){Aa=0;n=n*(+f[ja>>2]-+f[ka>>2])}q=n*(+f[ba>>2]-+f[ca>>2]);n=r}else{switch(t<<24>>24){case 5:{Fa=c[V>>2]|0;Aa=c[W>>2]|0;n=+((Tv(Fa|0,((Fa|0)<0)<<31>>31|0,Aa|0,((Aa|0)<0)<<31>>31|0)|0)>>>0)+4294967296.0*+(L()|0);Aa=35;break}case 4:{n=1.0;Aa=35;break}case 3:{n=1.0;Aa=36;break}case 2:{n=1.0;Aa=37;break}default:n=1.0}if((Aa|0)==35){Ea=c[X>>2]|0;Fa=c[Y>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;n=n*(+(Fa>>>0)+4294967296.0*+(L()|0));Aa=36}if((Aa|0)==36){Ea=c[Z>>2]|0;Fa=c[_>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;n=n*(+(Fa>>>0)+4294967296.0*+(L()|0));Aa=37}if((Aa|0)==37){Aa=0;Ea=c[$>>2]|0;Fa=c[aa>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;n=n*(+(Fa>>>0)+4294967296.0*+(L()|0))}Ea=c[T>>2]|0;Fa=c[U>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;r=n*(+(Fa>>>0)+4294967296.0*+(L()|0));switch(t<<24>>24){case 5:{Fa=c[na>>2]|0;Aa=c[oa>>2]|0;n=+((Tv(Fa|0,((Fa|0)<0)<<31>>31|0,Aa|0,((Aa|0)<0)<<31>>31|0)|0)>>>0)+4294967296.0*+(L()|0);Aa=46;break}case 4:{n=1.0;Aa=46;break}case 3:{n=1.0;Aa=47;break}case 2:{n=1.0;Aa=48;break}default:n=1.0}if((Aa|0)==46){Ea=c[pa>>2]|0;Fa=c[qa>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;n=n*(+(Fa>>>0)+4294967296.0*+(L()|0));Aa=47}if((Aa|0)==47){Ea=c[ra>>2]|0;Fa=c[sa>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;n=n*(+(Fa>>>0)+4294967296.0*+(L()|0));Aa=48}if((Aa|0)==48){Aa=0;Ea=c[ta>>2]|0;Fa=c[ua>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;n=n*(+(Fa>>>0)+4294967296.0*+(L()|0))}Ea=c[la>>2]|0;Fa=c[ma>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;q=n*(+(Fa>>>0)+4294967296.0*+(L()|0));n=r}n=n-s;if(!((k|0)==0|n>2]|0;u=j;v=i}}while(0);i=Xs(b,j,i,va,za)|0;Us(b,va)|0;if(!i)C=C+1|0;else{Aa=56;break}}if((Aa|0)==56){Fa=c[za>>2]|0;c[h>>2]=Fa;Ra=Ba;return i|0}return 0}function bt(b,e,h,i){b=b|0;e=e|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0,E=0,F=0.0,H=0,I=0,J=0.0,K=0.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,Sa=0,Ta=0.0;Sa=Ra;Ra=Ra+192|0;Ea=Sa;Ia=Sa+144|0;Fa=Sa+96|0;Ga=Sa+48|0;Ma=(i|0)>0;a:do if(Ma?(l=h,k=c[l>>2]|0,l=c[l+4>>2]|0,j=c[b+116+(((k>>>0)%97|0)<<2)>>2]|0,j|0):0){while(1){Qa=j+8|0;if((c[Qa>>2]|0)==(k|0)?(c[Qa+4>>2]|0)==(l|0):0)break;j=c[j+28>>2]|0;if(!j)break a}Us(b,c[j>>2]|0)|0;if(e|0){Qa=e+16|0;c[Qa>>2]=(c[Qa>>2]|0)+1}c[j>>2]=e}while(0);La=b+16|0;Qa=b+23|0;j=d[Qa>>0]|0;m=((c[La>>2]|0)+-4|0)/(j|0)|0;E=e+24|0;k=c[E>>2]|0;n=d[k+2>>0]<<8|d[k+3>>0];if((n|0)<(m|0)){j=k+((G(n,j)|0)+4)|0;Oa=h;l=c[Oa>>2]|0;Oa=c[Oa+4>>2]|0;Na=bw(l|0,Oa|0,56)|0;L()|0;a[j>>0]=Na;Na=bw(l|0,Oa|0,48)|0;L()|0;a[j+1>>0]=Na;Na=bw(l|0,Oa|0,40)|0;L()|0;a[j+2>>0]=Na;a[j+3>>0]=Oa;Na=bw(l|0,Oa|0,24)|0;L()|0;a[j+4>>0]=Na;Na=bw(l|0,Oa|0,16)|0;L()|0;a[j+5>>0]=Na;Oa=bw(l|0,Oa|0,8)|0;L()|0;a[j+6>>0]=Oa;a[j+7>>0]=l;l=b+21|0;if(a[l>>0]|0){k=0;j=j+8|0;while(1){Oa=c[h+8+(k<<2)>>2]|0;a[j>>0]=Oa>>>24;a[j+1>>0]=Oa>>>16;a[j+2>>0]=Oa>>>8;a[j+3>>0]=Oa;k=k+1|0;if(k>>>0>=(d[l>>0]|0)>>>0)break;else j=j+4|0}}Oa=c[E>>2]|0;Na=n+1|0;a[Oa+2>>0]=Na>>>8;a[Oa+3>>0]=Na;c[e+20>>2]=1}if((n|0)!=(m|0)){j=ft(b,e,h)|0;if(j|0){b=j;Ra=Sa;return b|0}m=h;l=c[m>>2]|0;m=c[m+4>>2]|0;k=e+8|0;j=c[k>>2]|0;k=c[k+4>>2]|0;if(!i){b=gt(b,l,m,j,k)|0;Ra=Sa;return b|0}else{b=ht(b,l,m,j,k)|0;Ra=Sa;return b|0}}j=b+72|0;if((c[j>>2]|0)<(i|0)?(D=e+8|0,Oa=D,!((c[Oa>>2]|0)==1&(c[Oa+4>>2]|0)==0)):0){c[j>>2]=i;m=Ea;I=m+40|0;do{c[m>>2]=0;m=m+4|0}while((m|0)<(I|0));z=c[E>>2]|0;z=d[z+2>>0]<<8|d[z+3>>0];w=z+1|0;u=z+2|0;j=u&131070;B=pb(j<<6,0)|0;do if(B){A=B+(j*48|0)|0;x=A+(j<<2)|0;v=x+(j<<2)|0;o=b+20|0;y=b+21|0;t=b+22|0;n=0;do{j=B+(n*48|0)|0;if((n|0)==(z|0)){m=j;H=h;I=m+48|0;do{c[m>>2]=c[H>>2];m=m+4|0;H=H+4|0}while((m|0)<(I|0))}else{Pa=c[E>>2]|0;k=G(n,d[Qa>>0]|0)|0;Na=Pa+(k+4)|0;Ga=cw(d[Na>>0]|0,0,56)|0;Oa=L()|0;Fa=cw(d[Na+1>>0]|0,0,48)|0;Oa=L()|0|Oa;Ha=cw(d[Na+2>>0]|0,0,40)|0;Oa=Oa|(L()|0);Oa=Oa|d[Na+3>>0];Ja=cw(d[Na+4>>0]|0,0,24)|0;Oa=Oa|(L()|0);Ka=cw(d[Na+5>>0]|0,0,16)|0;Oa=Oa|(L()|0);Ma=cw(d[Na+6>>0]|0,0,8)|0;Oa=Oa|(L()|0);Na=Sv(Fa|Ga|Ha|Ja|Ka|Ma|0,Oa|0,d[Na+7>>0]|0,0)|0;Oa=L()|0;c[j>>2]=Na;c[j+4>>2]=Oa;j=0;k=Pa+(k+12)|0;while(1){c[B+(n*48|0)+8+(j<<2)>>2]=d[k+1>>0]<<16|d[k>>0]<<24|d[k+2>>0]<<8|d[k+3>>0];c[B+(n*48|0)+8+((j|1)<<2)>>2]=d[k+5>>0]<<16|d[k+4>>0]<<24|d[k+6>>0]<<8|d[k+7>>0];j=j+2|0;if(j>>>0>=(d[y>>0]|0)>>>0)break;else k=k+8|0}}c[A+(n<<2)>>2]=n;m=a[o>>0]|0;l=m<<24>>24==0;if(!l){k=m&255;if(!(a[t>>0]|0)){j=0;do{Oa=j<<1;Pa=Ea+(j<<3)|0;g[Pa>>3]=+g[Pa>>3]+ +f[B+(n*48|0)+8+(Oa<<2)>>2]+ +f[B+(n*48|0)+8+((Oa|1)<<2)>>2];j=j+1|0}while(j>>>0>>0)}else{j=0;do{Oa=j<<1;Pa=Ea+(j<<3)|0;g[Pa>>3]=+g[Pa>>3]+ +(c[B+(n*48|0)+8+(Oa<<2)>>2]|0)+ +(c[B+(n*48|0)+8+((Oa|1)<<2)>>2]|0);j=j+1|0}while(j>>>0>>0)}}n=n+1|0}while((n|0)!=(w|0));q=m&255;if(!l){p=+(w|0)*2.0;j=0;do{Pa=Ea+(j<<3)|0;g[Pa>>3]=+g[Pa>>3]/p;j=j+1|0}while(j>>>0>>0);if(m<<24>>24){n=(a[t>>0]|0)==0;l=0;do{o=v+(l<<3)|0;g[o>>3]=0.0;m=0;s=0.0;do{k=m<<1;j=B+(l*48|0)+8+((k|1)<<2)|0;if(n){r=+f[j>>2];p=+f[B+(l*48|0)+8+(k<<2)>>2]}else{r=+(c[j>>2]|0);p=+(c[B+(l*48|0)+8+(k<<2)>>2]|0)}K=r-p-+g[Ea+(m<<3)>>3];s=s+K*K;g[o>>3]=s;m=m+1|0}while((m|0)!=(q|0));l=l+1|0}while((l|0)!=(w|0))}else Ba=210}else Ba=210;if((Ba|0)==210)gw(B+((u>>>1)*112|0)|0,0,(z<<3)+8|0)|0;jt(A,w,v,x);gw((c[E>>2]|0)+2|0,0,(c[La>>2]|0)+-2|0)|0;t=e+20|0;c[t>>2]=1;u=(i|0)==0;l=0;while(1){k=d[Qa>>0]|0;m=((c[La>>2]|0)+-4|0)/(k|0)|0;if((l|0)>=(z+((m|0)/-3|0)|0)){Ba=224;break}o=c[A+(l<<2)>>2]|0;j=B+(o*48|0)|0;n=c[E>>2]|0;q=d[n+2>>0]<<8|d[n+3>>0];if((q|0)<(m|0)){k=n+((G(q,k)|0)+4)|0;Oa=j;Pa=c[Oa>>2]|0;Oa=c[Oa+4>>2]|0;Na=bw(Pa|0,Oa|0,56)|0;L()|0;a[k>>0]=Na;Na=bw(Pa|0,Oa|0,48)|0;L()|0;a[k+1>>0]=Na;Na=bw(Pa|0,Oa|0,40)|0;L()|0;a[k+2>>0]=Na;a[k+3>>0]=Oa;Na=bw(Pa|0,Oa|0,24)|0;L()|0;a[k+4>>0]=Na;Na=bw(Pa|0,Oa|0,16)|0;L()|0;a[k+5>>0]=Na;Oa=bw(Pa|0,Oa|0,8)|0;L()|0;a[k+6>>0]=Oa;a[k+7>>0]=Pa;if(a[y>>0]|0){m=0;k=k+8|0;while(1){Pa=c[B+(o*48|0)+8+(m<<2)>>2]|0;a[k>>0]=Pa>>>24;a[k+1>>0]=Pa>>>16;a[k+2>>0]=Pa>>>8;a[k+3>>0]=Pa;m=m+1|0;if(m>>>0>=(d[y>>0]|0)>>>0)break;else k=k+4|0}}Pa=c[E>>2]|0;Oa=q+1|0;a[Pa+2>>0]=Oa>>>8;a[Pa+3>>0]=Oa;c[t>>2]=1}k=j;j=c[k>>2]|0;k=c[k+4>>2]|0;Pa=h;do if((j|0)==(c[Pa>>2]|0)?(k|0)==(c[Pa+4>>2]|0):0){n=D;m=c[n>>2]|0;n=c[n+4>>2]|0;if(u){j=gt(b,j,k,m,n)|0;break}else{j=ht(b,j,k,m,n)|0;break}}else j=0;while(0);if(!j)l=l+1|0;else break}b:do if((Ba|0)==224){j=et(b,e)|0;if(!((j|0)!=0|l>>>0>z>>>0))while(1){k=B+((c[A+(l<<2)>>2]|0)*48|0)|0;j=at(b,k,i,Ia)|0;if(j|0)break;Qa=c[Ia>>2]|0;j=bt(b,Qa,k,i)|0;Qa=Us(b,Qa)|0;j=(j|0)==0?Qa:j;if((j|0)!=0|l>>>0>=z>>>0)break b;else l=l+1|0}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](B);break}else{b=Wa[c[29352>>2]&127](B)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](B);break}}else j=7;while(0);b=j;Ra=Sa;return b|0}Aa=c[E>>2]|0;Aa=d[Aa+2>>0]<<8|d[Aa+3>>0];Ca=Aa+1|0;Na=pb(Ca*52|0,0)|0;Oa=(Na|0)==0;c:do if(!Oa){n=Ca<<2;gw(Na+(Ca*48|0)|0,0,n|0)|0;o=(Aa|0)==0;if(!o){m=b+21|0;k=0;do{Ja=c[E>>2]|0;l=G(k,d[Qa>>0]|0)|0;Ba=Ja+(l+4)|0;wa=cw(d[Ba>>0]|0,0,56)|0;Ha=L()|0;va=cw(d[Ba+1>>0]|0,0,48)|0;Ha=L()|0|Ha;xa=cw(d[Ba+2>>0]|0,0,40)|0;Ha=Ha|(L()|0);Ha=Ha|d[Ba+3>>0];ya=cw(d[Ba+4>>0]|0,0,24)|0;Ha=Ha|(L()|0);za=cw(d[Ba+5>>0]|0,0,16)|0;Ha=Ha|(L()|0);j=cw(d[Ba+6>>0]|0,0,8)|0;Ha=Ha|(L()|0);Ba=Sv(va|wa|xa|ya|za|j|0,Ha|0,d[Ba+7>>0]|0,0)|0;Ha=L()|0;j=Na+(k*48|0)|0;c[j>>2]=Ba;c[j+4>>2]=Ha;j=0;l=Ja+(l+12)|0;while(1){c[Na+(k*48|0)+8+(j<<2)>>2]=d[l+1>>0]<<16|d[l>>0]<<24|d[l+2>>0]<<8|d[l+3>>0];c[Na+(k*48|0)+8+((j|1)<<2)>>2]=d[l+5>>0]<<16|d[l+4>>0]<<24|d[l+6>>0]<<8|d[l+7>>0];j=j+2|0;if(j>>>0>=(d[m>>0]|0)>>>0)break;else l=l+8|0}k=k+1|0}while((k|0)!=(Aa|0))}gw((c[E>>2]|0)+2|0,0,(c[La>>2]|0)+-2|0)|0;l=e+20|0;c[l>>2]=1;m=Na+(Aa*48|0)|0;H=h;I=m+48|0;do{c[m>>2]=c[H>>2];m=m+4|0;H=H+4|0}while((m|0)<(I|0));Ha=e+8|0;Ja=Ha;if((c[Ja>>2]|0)==1&(c[Ja+4>>2]|0)==0){j=pb((c[La>>2]|0)+32|0,0)|0;if(j|0){gw(j|0,0,(c[La>>2]|0)+32|0)|0;c[j+24>>2]=j+32;c[j+16>>2]=1;Ja=b+60|0;c[Ja>>2]=(c[Ja>>2]|0)+1;c[j>>2]=e;c[j+20>>2]=1;Ja=e+16|0;c[Ja>>2]=(c[Ja>>2]|0)+1}k=pb((c[La>>2]|0)+32|0,0)|0;if(k|0){gw(k|0,0,(c[La>>2]|0)+32|0)|0;c[k+24>>2]=k+32;c[k+16>>2]=1;Ja=b+60|0;c[Ja>>2]=(c[Ja>>2]|0)+1;c[k>>2]=e;c[k+20>>2]=1;Ja=e+16|0;c[Ja>>2]=(c[Ja>>2]|0)+1}Ja=b+28|0;e=(c[Ja>>2]|0)+1|0;c[Ja>>2]=e;c[l>>2]=1;Ja=c[E>>2]|0;a[Ja>>0]=e>>>8;a[Ja+1>>0]=e;Ja=j;e=k}else{j=c[e>>2]|0;k=pb((c[La>>2]|0)+32|0,0)|0;if(k|0?(gw(k|0,0,(c[La>>2]|0)+32|0)|0,c[k+24>>2]=k+32,c[k+16>>2]=1,Ja=b+60|0,c[Ja>>2]=(c[Ja>>2]|0)+1,c[k>>2]=j,c[k+20>>2]=1,j|0):0){Ja=j+16|0;c[Ja>>2]=(c[Ja>>2]|0)+1}Ja=e+16|0;c[Ja>>2]=(c[Ja>>2]|0)+1;Ja=k}if((e|0)!=0&(Ja|0)!=0?(Pa=e+24|0,gw(c[Pa>>2]|0,0,c[La>>2]|0)|0,Ka=Ja+24|0,gw(c[Ka>>2]|0,0,c[La>>2]|0)|0,t=b+20|0,q=G((d[t>>0]|0)+1|0,n+4|0)|0,Da=pb(q,0)|0,(Da|0)!=0):0){m=d[t>>0]|0;m=Da+(m<<2)+((G(Ca,m)|0)<<2)|0;gw(Da|0,0,q|0)|0;j=a[t>>0]|0;if(j<<24>>24){j=j&255;if(o){l=0;do{k=Da+(j<<2)+((G(l,Ca)|0)<<2)|0;c[Da+(l<<2)>>2]=k;c[k>>2]=0;it(b,k,Ca,l,Na,m);l=l+1|0;k=a[t>>0]|0;j=k&255}while(l>>>0>>0);za=j}else{l=0;do{k=Da+(j<<2)+((G(l,Ca)|0)<<2)|0;c[Da+(l<<2)>>2]=k;c[k>>2]=0;j=1;do{c[k+(j<<2)>>2]=j;j=j+1|0}while((j|0)!=(Ca|0));it(b,k,Ca,l,Na,m);l=l+1|0;k=a[t>>0]|0;j=k&255}while(l>>>0>>0);za=j}if(k<<24>>24){z=Aa>>>0>1;A=b+21|0;B=b+22|0;D=Ea+12|0;E=Ea+8|0;M=Ea+44|0;N=Ea+40|0;O=Ea+36|0;P=Ea+32|0;Q=Ea+28|0;R=Ea+24|0;S=Ea+20|0;T=Ea+16|0;U=Ea+12|0;V=Ea+8|0;W=Ea+44|0;X=Ea+40|0;Y=Ea+36|0;Z=Ea+32|0;_=Ea+28|0;$=Ea+24|0;aa=Ea+20|0;ba=Ea+16|0;ca=Ia+12|0;da=Ia+8|0;ea=Ia+44|0;fa=Ia+40|0;ga=Ia+36|0;ha=Ia+32|0;ia=Ia+28|0;ja=Ia+24|0;ka=Ia+20|0;la=Ia+16|0;ma=Ia+12|0;na=Ia+8|0;oa=Ia+44|0;pa=Ia+40|0;qa=Ia+36|0;ra=Ia+32|0;sa=Ia+28|0;ta=Ia+24|0;ua=Ia+20|0;va=Ia+16|0;wa=(((c[La>>2]|0)+-4|0)/(d[Qa>>0]|0)|0|0)/3|0;xa=Ca-wa|0;ya=(wa|0)>(xa|0);j=0;w=0;K=0.0;y=0;while(1){if(ya){l=0;p=0.0}else{x=Da+(y<<2)|0;v=wa;l=0;J=0.0;r=0.0;p=0.0;while(1){m=Ea;H=Na+((c[c[x>>2]>>2]|0)*48|0)|0;I=m+48|0;do{c[m>>2]=c[H>>2];m=m+4|0;H=H+4|0}while((m|0)<(I|0));m=Ia;H=Na+((c[(c[x>>2]|0)+(Aa<<2)>>2]|0)*48|0)|0;I=m+48|0;do{c[m>>2]=c[H>>2];m=m+4|0;H=H+4|0}while((m|0)<(I|0));if(z){o=a[B>>0]|0;u=a[A>>0]|0;t=u&255;if(!(o<<24>>24)){n=1;do{o=c[(c[x>>2]|0)+(n<<2)>>2]|0;if((n|0)<(v|0)){m=0;do{I=Ea+8+(m<<2)|0;F=+f[I>>2];C=+f[Na+(o*48|0)+8+(m<<2)>>2];f[I>>2]=F>2];F=+f[Na+(o*48|0)+8+(I<<2)>>2];f[Ba>>2]=C>F?C:F;m=m+2|0}while(m>>>0>>0)}else{m=0;do{I=Ia+8+(m<<2)|0;F=+f[I>>2];C=+f[Na+(o*48|0)+8+(m<<2)>>2];f[I>>2]=F>2];F=+f[Na+(o*48|0)+8+(I<<2)>>2];f[Ba>>2]=C>F?C:F;m=m+2|0}while(m>>>0>>0)}n=n+1|0}while((n|0)!=(Aa|0));n=t;o=u;Ba=66}else{n=1;do{q=c[(c[x>>2]|0)+(n<<2)>>2]|0;if((n|0)<(v|0)){m=0;do{I=Ea+8+(m<<2)|0;H=c[I>>2]|0;Ba=c[Na+(q*48|0)+8+(m<<2)>>2]|0;c[I>>2]=(H|0)<(Ba|0)?H:Ba;I=m|1;Ba=Ea+8+(I<<2)|0;H=c[Ba>>2]|0;I=c[Na+(q*48|0)+8+(I<<2)>>2]|0;c[Ba>>2]=(H|0)>(I|0)?H:I;m=m+2|0}while(m>>>0>>0)}else{m=0;do{I=Ia+8+(m<<2)|0;H=c[I>>2]|0;Ba=c[Na+(q*48|0)+8+(m<<2)>>2]|0;c[I>>2]=(H|0)<(Ba|0)?H:Ba;I=m|1;Ba=Ia+8+(I<<2)|0;H=c[Ba>>2]|0;I=c[Na+(q*48|0)+8+(I<<2)>>2]|0;c[Ba>>2]=(H|0)>(I|0)?H:I;m=m+2|0}while(m>>>0>>0)}n=n+1|0}while((n|0)!=(Aa|0));m=o;n=t;o=u;Ba=64}}else{o=a[A>>0]|0;m=a[B>>0]|0;n=o&255;Ba=64}do if((Ba|0)==64){Ba=0;q=m<<24>>24==0;if(q){Ba=66;break}m=n;s=0.0;do{I=m;m=m+-2|0;s=s+(+(c[Ea+8+(I+-1<<2)>>2]|0)-+(c[Ea+8+(m<<2)>>2]|0))}while((I|0)>3)}while(0);if((Ba|0)==66){Ba=0;m=n;s=0.0;do{I=m;m=m+-2|0;s=s+(+f[Ea+8+(I+-1<<2)>>2]-+f[Ea+8+(m<<2)>>2])}while((I|0)>3);q=1}s=p+s;if(q){m=n;p=0.0;do{I=m;m=m+-2|0;p=p+(+f[Ia+8+(I+-1<<2)>>2]-+f[Ia+8+(m<<2)>>2])}while((I|0)>3)}else{m=n;p=0.0;do{I=m;m=m+-2|0;p=p+(+(c[Ia+8+(I+-1<<2)>>2]|0)-+(c[Ia+8+(m<<2)>>2]|0))}while((I|0)>3)}p=s+p;d:do if(o<<24>>24)if(q){s=1.0;m=0;do{Ta=+f[Ea+8+(m<<2)>>2];F=+f[Ia+8+(m<<2)>>2];F=Ta>F?Ta:F;I=m|1;Ta=+f[Ea+8+(I<<2)>>2];C=+f[Ia+8+(I<<2)>>2];C=Ta>>0>>0)}else{s=1.0;m=0;do{H=Ea+8+(m<<2)|0;I=Ia+8+(m<<2)|0;Ta=+(c[((c[H>>2]|0)>(c[I>>2]|0)?H:I)>>2]|0);I=m|1;C=+(c[Ea+8+(I<<2)>>2]|0);F=+(c[Ia+8+(I<<2)>>2]|0);F=C>>0>>0)}else s=1.0;while(0);F=s+0.0;if(q){switch(k<<24>>24){case 5:{s=+f[M>>2]-+f[N>>2];Ba=85;break}case 4:{s=1.0;Ba=85;break}case 3:{s=1.0;Ba=86;break}case 2:{s=1.0;Ba=87;break}default:s=1.0}if((Ba|0)==85){s=s*(+f[O>>2]-+f[P>>2]);Ba=86}if((Ba|0)==86){s=s*(+f[Q>>2]-+f[R>>2]);Ba=87}if((Ba|0)==87){Ba=0;s=s*(+f[S>>2]-+f[T>>2])}s=s*(+f[D>>2]-+f[E>>2]);switch(k<<24>>24){case 5:{C=+f[ea>>2]-+f[fa>>2];Ba=95;break}case 4:{C=1.0;Ba=95;break}case 3:{C=1.0;Ba=96;break}case 2:{C=1.0;Ba=97;break}default:C=1.0}if((Ba|0)==95){C=C*(+f[ga>>2]-+f[ha>>2]);Ba=96}if((Ba|0)==96){C=C*(+f[ia>>2]-+f[ja>>2]);Ba=97}if((Ba|0)==97)C=C*(+f[ka>>2]-+f[la>>2]);C=C*(+f[ca>>2]-+f[da>>2])}else{switch(k<<24>>24){case 5:{I=c[W>>2]|0;Ba=c[X>>2]|0;s=+((Tv(I|0,((I|0)<0)<<31>>31|0,Ba|0,((Ba|0)<0)<<31>>31|0)|0)>>>0)+4294967296.0*+(L()|0);Ba=90;break}case 4:{s=1.0;Ba=90;break}case 3:{s=1.0;Ba=91;break}case 2:{s=1.0;Ba=92;break}default:s=1.0}if((Ba|0)==90){H=c[Y>>2]|0;I=c[Z>>2]|0;I=Tv(H|0,((H|0)<0)<<31>>31|0,I|0,((I|0)<0)<<31>>31|0)|0;s=s*(+(I>>>0)+4294967296.0*+(L()|0));Ba=91}if((Ba|0)==91){H=c[_>>2]|0;I=c[$>>2]|0;I=Tv(H|0,((H|0)<0)<<31>>31|0,I|0,((I|0)<0)<<31>>31|0)|0;s=s*(+(I>>>0)+4294967296.0*+(L()|0));Ba=92}if((Ba|0)==92){Ba=0;H=c[aa>>2]|0;I=c[ba>>2]|0;I=Tv(H|0,((H|0)<0)<<31>>31|0,I|0,((I|0)<0)<<31>>31|0)|0;s=s*(+(I>>>0)+4294967296.0*+(L()|0))}H=c[U>>2]|0;I=c[V>>2]|0;I=Tv(H|0,((H|0)<0)<<31>>31|0,I|0,((I|0)<0)<<31>>31|0)|0;s=s*(+(I>>>0)+4294967296.0*+(L()|0));switch(k<<24>>24){case 5:{I=c[oa>>2]|0;Ba=c[pa>>2]|0;C=+((Tv(I|0,((I|0)<0)<<31>>31|0,Ba|0,((Ba|0)<0)<<31>>31|0)|0)>>>0)+4294967296.0*+(L()|0);Ba=101;break}case 4:{C=1.0;Ba=101;break}case 3:{C=1.0;Ba=102;break}case 2:{C=1.0;Ba=103;break}default:C=1.0}if((Ba|0)==101){H=c[qa>>2]|0;I=c[ra>>2]|0;I=Tv(H|0,((H|0)<0)<<31>>31|0,I|0,((I|0)<0)<<31>>31|0)|0;C=C*(+(I>>>0)+4294967296.0*+(L()|0));Ba=102}if((Ba|0)==102){H=c[sa>>2]|0;I=c[ta>>2]|0;I=Tv(H|0,((H|0)<0)<<31>>31|0,I|0,((I|0)<0)<<31>>31|0)|0;C=C*(+(I>>>0)+4294967296.0*+(L()|0));Ba=103}if((Ba|0)==103){I=c[ua>>2]|0;Ba=c[va>>2]|0;Ba=Tv(I|0,((I|0)<0)<<31>>31|0,Ba|0,((Ba|0)<0)<<31>>31|0)|0;C=C*(+(Ba>>>0)+4294967296.0*+(L()|0))}I=c[ma>>2]|0;Ba=c[na>>2]|0;Ba=Tv(I|0,((I|0)<0)<<31>>31|0,Ba|0,((Ba|0)<0)<<31>>31|0)|0;C=C*(+(Ba>>>0)+4294967296.0*+(L()|0))}s=s+C;if(!((v|0)==(wa|0)|F>2]|0;k=c[j>>2]|0;m=Fa;H=Na+(k*48|0)|0;I=m+48|0;do{c[m>>2]=c[H>>2];m=m+4|0;H=H+4|0}while((m|0)<(I|0));m=Ga;H=Na+((c[j+(w<<2)>>2]|0)*48|0)|0;I=m+48|0;do{c[m>>2]=c[H>>2];m=m+4|0;H=H+4|0}while((m|0)<(I|0));x=b+21|0;u=b+22|0;t=0;while(1){q=(t|0)<(w|0);m=q?e:Ja;q=q?Fa:Ga;j=d[Qa>>0]|0;n=m+24|0;l=c[n>>2]|0;o=d[l+2>>0]<<8|d[l+3>>0];if((o|0)<(((c[La>>2]|0)+-4|0)/(j|0)|0|0)){j=l+((G(o,j)|0)+4)|0;Ea=Na+(k*48|0)|0;Ia=c[Ea>>2]|0;Ea=c[Ea+4>>2]|0;Ba=bw(Ia|0,Ea|0,56)|0;L()|0;a[j>>0]=Ba;Ba=bw(Ia|0,Ea|0,48)|0;L()|0;a[j+1>>0]=Ba;Ba=bw(Ia|0,Ea|0,40)|0;L()|0;a[j+2>>0]=Ba;a[j+3>>0]=Ea;Ba=bw(Ia|0,Ea|0,24)|0;L()|0;a[j+4>>0]=Ba;Ba=bw(Ia|0,Ea|0,16)|0;L()|0;a[j+5>>0]=Ba;Ea=bw(Ia|0,Ea|0,8)|0;L()|0;a[j+6>>0]=Ea;a[j+7>>0]=Ia;if(a[x>>0]|0){l=0;j=j+8|0;while(1){Ia=c[Na+(k*48|0)+8+(l<<2)>>2]|0;a[j>>0]=Ia>>>24;a[j+1>>0]=Ia>>>16;a[j+2>>0]=Ia>>>8;a[j+3>>0]=Ia;l=l+1|0;if(l>>>0>=(d[x>>0]|0)>>>0)break;else j=j+4|0}}Ia=c[n>>2]|0;Ea=o+1|0;a[Ia+2>>0]=Ea>>>8;a[Ia+3>>0]=Ea;c[m+20>>2]=1}l=d[x>>0]|0;if(!(a[u>>0]|0)){j=0;do{Ea=q+8+(j<<2)|0;Ta=+f[Ea>>2];K=+f[Na+(k*48|0)+8+(j<<2)>>2];f[Ea>>2]=Ta>2];Ta=+f[Na+(k*48|0)+8+(Ea<<2)>>2];f[Ia>>2]=K>Ta?K:Ta;j=j+2|0}while(j>>>0>>0)}else{j=0;do{Ea=q+8+(j<<2)|0;Ba=c[Ea>>2]|0;Ia=c[Na+(k*48|0)+8+(j<<2)>>2]|0;c[Ea>>2]=(Ba|0)<(Ia|0)?Ba:Ia;Ea=j|1;Ia=q+8+(Ea<<2)|0;Ba=c[Ia>>2]|0;Ea=c[Na+(k*48|0)+8+(Ea<<2)>>2]|0;c[Ia>>2]=(Ba|0)>(Ea|0)?Ba:Ea;j=j+2|0}while(j>>>0>>0)}j=t+1|0;if((j|0)==(Ca|0))break;t=j;k=c[(c[v>>2]|0)+(j<<2)>>2]|0}if(!(c[7324]|0))ab[c[29344>>2]&127](Da);else{La=Wa[c[29352>>2]&127](Da)|0;c[14978]=(c[14978]|0)-La;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Da)}j=Vs(b,Ja)|0;if(!j){u=e+8|0;k=u;j=c[k>>2]|0;k=c[k+4>>2]|0;if((j|0)==0&(k|0)==0){j=Vs(b,e)|0;if(j|0){l=e;k=Ja;break}k=u;j=c[k>>2]|0;k=c[k+4>>2]|0}t=Ja+8|0;Ia=t;q=c[Ia+4>>2]|0;La=Ga;c[La>>2]=c[Ia>>2];c[La+4>>2]=q;La=Fa;c[La>>2]=j;c[La+4>>2]=k;La=Ha;q=c[e>>2]|0;if((c[La>>2]|0)==1&(c[La+4>>2]|0)==0){k=i+1|0;j=bt(b,q,Fa,k)|0;if(!j)j=k;else{l=e;k=Ja;break}}else{e:do if(!q){m=-1;n=d[Qa>>0]|0;l=c[6]|0}else{l=c[q+24>>2]|0;o=d[l+2>>0]<<8|d[l+3>>0];if(!o){l=e;k=Ja;j=267;break c}n=d[Qa>>0]|0;m=0;while(1){La=l+((G(m,n)|0)+4)|0;Aa=cw(d[La>>0]|0,0,56)|0;Ia=L()|0;za=cw(d[La+1>>0]|0,0,48)|0;Ia=L()|0|Ia;Ba=cw(d[La+2>>0]|0,0,40)|0;Ia=Ia|(L()|0);Ia=Ia|d[La+3>>0];Ca=cw(d[La+4>>0]|0,0,24)|0;Ia=Ia|(L()|0);Da=cw(d[La+5>>0]|0,0,16)|0;Ia=Ia|(L()|0);Ea=cw(d[La+6>>0]|0,0,8)|0;Ia=Ia|(L()|0);La=Sv(za|Aa|Ba|Ca|Da|Ea|0,Ia|0,d[La+7>>0]|0,0)|0;if((La|0)==(j|0)&(L()|0)==(k|0))break e;m=m+1|0;if(m>>>0>=o>>>0){l=e;k=Ja;j=267;break c}}}while(0);l=l+((G(m,n)|0)+4)|0;La=bw(j|0,k|0,56)|0;L()|0;a[l>>0]=La;La=bw(j|0,k|0,48)|0;L()|0;a[l+1>>0]=La;La=bw(j|0,k|0,40)|0;L()|0;a[l+2>>0]=La;a[l+3>>0]=k;La=bw(j|0,k|0,24)|0;L()|0;a[l+4>>0]=La;La=bw(j|0,k|0,16)|0;L()|0;a[l+5>>0]=La;La=bw(j|0,k|0,8)|0;L()|0;a[l+6>>0]=La;a[l+7>>0]=j;if(a[x>>0]|0){k=0;j=l+8|0;while(1){La=c[Fa+8+(k<<2)>>2]|0;a[j>>0]=La>>>24;a[j+1>>0]=La>>>16;a[j+2>>0]=La>>>8;a[j+3>>0]=La;k=k+1|0;if(k>>>0>=(d[x>>0]|0)>>>0)break;else j=j+4|0}}c[q+20>>2]=1;j=ft(b,q,Fa)|0;if(j|0){l=e;k=Ja;break}j=i+1|0}j=bt(b,c[Ja>>2]|0,Ga,j)|0;if(!j){k=c[Ka>>2]|0;f:do if(!(d[k+2>>0]<<8|d[k+3>>0]))j=0;else{q=(i|0)==0?80:81;o=Ja+16|0;if(!Ma){m=0;n=0;while(1){k=k+((G(n,d[Qa>>0]|0)|0)+4)|0;Fa=cw(d[k>>0]|0,0,56)|0;l=L()|0;Ea=cw(d[k+1>>0]|0,0,48)|0;l=L()|0|l;Ga=cw(d[k+2>>0]|0,0,40)|0;l=l|(L()|0);l=l|d[k+3>>0];Ia=cw(d[k+4>>0]|0,0,24)|0;l=l|(L()|0);La=cw(d[k+5>>0]|0,0,16)|0;l=l|(L()|0);j=cw(d[k+6>>0]|0,0,8)|0;l=l|(L()|0);k=Sv(Ea|Fa|Ga|Ia|La|j|0,l|0,d[k+7>>0]|0,0)|0;l=L()|0;j=t;j=_a[q&127](b,k,l,c[j>>2]|0,c[j+4>>2]|0)|0;if(j|0){l=e;k=Ja;break c}j=h;j=((k|0)==(c[j>>2]|0)?(l|0)==(c[j+4>>2]|0):0)?1:m;n=n+1|0;k=c[Ka>>2]|0;if(n>>>0>=(d[k+2>>0]<<8|d[k+3>>0])>>>0)break f;else m=j}}m=0;n=0;while(1){k=k+((G(n,d[Qa>>0]|0)|0)+4)|0;Fa=cw(d[k>>0]|0,0,56)|0;l=L()|0;Ea=cw(d[k+1>>0]|0,0,48)|0;l=L()|0|l;Ga=cw(d[k+2>>0]|0,0,40)|0;l=l|(L()|0);l=l|d[k+3>>0];Ia=cw(d[k+4>>0]|0,0,24)|0;l=l|(L()|0);La=cw(d[k+5>>0]|0,0,16)|0;l=l|(L()|0);j=cw(d[k+6>>0]|0,0,8)|0;l=l|(L()|0);k=Sv(Ea|Fa|Ga|Ia|La|j|0,l|0,d[k+7>>0]|0,0)|0;l=L()|0;j=c[b+116+(((k>>>0)%97|0)<<2)>>2]|0;g:do if(j|0){while(1){La=j+8|0;if((c[La>>2]|0)==(k|0)?(c[La+4>>2]|0)==(l|0):0)break;j=c[j+28>>2]|0;if(!j)break g}Us(b,c[j>>2]|0)|0;c[o>>2]=(c[o>>2]|0)+1;c[j>>2]=Ja}while(0);j=t;j=_a[q&127](b,k,l,c[j>>2]|0,c[j+4>>2]|0)|0;if(j|0){l=e;k=Ja;break c}j=h;j=((k|0)==(c[j>>2]|0)?(l|0)==(c[j+4>>2]|0):0)?1:m;n=n+1|0;k=c[Ka>>2]|0;if(n>>>0>=(d[k+2>>0]<<8|d[k+3>>0])>>>0)break;else m=j}}while(0);La=Ha;h:do if((c[La>>2]|0)==1&(c[La+4>>2]|0)==0){j=c[Pa>>2]|0;if(d[j+2>>0]<<8|d[j+3>>0]|0){o=(i|0)==0?80:81;n=e+16|0;if(!Ma){k=0;while(1){h=j+((G(k,d[Qa>>0]|0)|0)+4)|0;Ia=cw(d[h>>0]|0,0,56)|0;i=L()|0;Ha=cw(d[h+1>>0]|0,0,48)|0;i=L()|0|i;Ka=cw(d[h+2>>0]|0,0,40)|0;i=i|(L()|0);i=i|d[h+3>>0];La=cw(d[h+4>>0]|0,0,24)|0;i=i|(L()|0);Ma=cw(d[h+5>>0]|0,0,16)|0;i=i|(L()|0);j=cw(d[h+6>>0]|0,0,8)|0;i=i|(L()|0);h=Sv(Ha|Ia|Ka|La|Ma|j|0,i|0,d[h+7>>0]|0,0)|0;i=L()|0;j=u;j=_a[o&127](b,h,i,c[j>>2]|0,c[j+4>>2]|0)|0;k=k+1|0;if(j|0){l=e;k=Ja;break c}j=c[Pa>>2]|0;if(k>>>0>=(d[j+2>>0]<<8|d[j+3>>0])>>>0)break h}}m=0;do{k=j+((G(m,d[Qa>>0]|0)|0)+4)|0;La=cw(d[k>>0]|0,0,56)|0;l=L()|0;Ka=cw(d[k+1>>0]|0,0,48)|0;l=L()|0|l;Ma=cw(d[k+2>>0]|0,0,40)|0;l=l|(L()|0);l=l|d[k+3>>0];h=cw(d[k+4>>0]|0,0,24)|0;l=l|(L()|0);i=cw(d[k+5>>0]|0,0,16)|0;l=l|(L()|0);j=cw(d[k+6>>0]|0,0,8)|0;l=l|(L()|0);k=Sv(Ka|La|Ma|h|i|j|0,l|0,d[k+7>>0]|0,0)|0;l=L()|0;j=c[b+116+(((k>>>0)%97|0)<<2)>>2]|0;i:do if(j|0){while(1){i=j+8|0;if((c[i>>2]|0)==(k|0)?(c[i+4>>2]|0)==(l|0):0)break;j=c[j+28>>2]|0;if(!j)break i}Us(b,c[j>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+1;c[j>>2]=e}while(0);j=u;j=_a[o&127](b,k,l,c[j>>2]|0,c[j+4>>2]|0)|0;m=m+1|0;if(j|0){l=e;k=Ja;break c}j=c[Pa>>2]|0}while(m>>>0<(d[j+2>>0]<<8|d[j+3>>0])>>>0)}}else if(!j){m=h;l=c[m>>2]|0;m=c[m+4>>2]|0;k=(i|0)==0?80:81;j:do if(Ma){j=c[b+116+(((l>>>0)%97|0)<<2)>>2]|0;if(!j)break;while(1){i=j+8|0;if((c[i>>2]|0)==(l|0)?(c[i+4>>2]|0)==(m|0):0)break;j=c[j+28>>2]|0;if(!j)break j}Us(b,c[j>>2]|0)|0;i=e+16|0;c[i>>2]=(c[i>>2]|0)+1;c[j>>2]=e}while(0);j=u;j=_a[k&127](b,l,m,c[j>>2]|0,c[j+4>>2]|0)|0;if(j|0){l=e;k=Ja;break c}}while(0);j=Us(b,Ja)|0;if(!j){l=0;k=0;j=Us(b,e)|0}else{l=e;k=0}}else{l=e;k=Ja}}else{l=e;k=Ja}}else{l=e;k=Ja;j=7}}else{l=0;k=0;j=7}while(0);Us(b,k)|0;Us(b,l)|0;do if(!Oa)if(!(c[7324]|0)){ab[c[29344>>2]&127](Na);break}else{b=Wa[c[29352>>2]&127](Na)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Na);break}while(0);b=j;Ra=Sa;return b|0}function ct(e,f,g,h){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;n=e+100|0;a:do if(f|0?(j=f+8|0,i=c[j>>2]|0,j=c[j+4>>2]|0,!((i|0)==1&(j|0)==0)):0){m=f;while(1){if(c[m>>2]|0)break a;k=c[n>>2]|0;do if(!(Vc(k,1)|0)){k=c[k+100>>2]|0;l=k+8|0;if(!(b[l>>1]&9216)){c[k>>2]=i;c[k+4>>2]=j;b[l>>1]=4;break}else{Pg(k,i,j);break}}while(0);b:do if((Gc(c[n>>2]|0)|0)==100){j=Oc(c[n>>2]|0,0)|0;k=L()|0;i=f;do{l=i+8|0;if((c[l>>2]|0)==(j|0)?(c[l+4>>2]|0)==(k|0):0){i=0;break b}i=c[i>>2]|0}while((i|0)!=0);i=Xs(e,j,k,0,m)|0}else i=0;while(0);j=c[n>>2]|0;if(j|0){l=c[j>>2]|0;k=j+136|0;o=c[k+4>>2]|0;if((o|0)>0|(o|0)==0&(c[k>>2]|0)>>>0>0)hc(l,j);k=kc(j)|0;c[j+20>>2]=770837923;c[j+36>>2]=-1;c[j+40>>2]=0;a[j+146>>0]=2;c[j+44>>2]=0;c[j+32>>2]=1;a[j+147>>0]=-1;c[j+48>>2]=0;o=j+64|0;c[o>>2]=0;c[o+4>>2]=0;if((k|0)==3082|(a[l+81>>0]|0)!=0){j=19;break}j=c[l+68>>2]&k;if(j|0){i=j;j=27;break}}if(i|0){j=27;break}m=c[m>>2]|0;if(!m){i=267;j=27;break}j=m+8|0;i=c[j>>2]|0;j=c[j+4>>2]|0;if((i|0)==1&(j|0)==0)break a}if((j|0)==19){og(l);o=7;return o|0}else if((j|0)==27)return i|0}while(0);i=e+23|0;j=f+24|0;n=c[j>>2]|0;o=d[i>>0]|0;m=n+((G(o,g)|0)+4)|0;fw(m|0,m+o|0,G((d[n+2>>0]<<8|d[n+3>>0])+~g|0,o)|0)|0;o=c[j>>2]|0;n=o+2|0;o=o+3|0;g=(d[n>>0]<<8|d[o>>0])+-1|0;a[n>>0]=g>>>8;a[o>>0]=g;c[f+20>>2]=1;if(!(c[f>>2]|0)){o=0;return o|0}o=c[j>>2]|0;if((d[o+2>>0]<<8|d[o+3>>0]|0)<((((c[e+16>>2]|0)+-4|0)/(d[i>>0]|0)|0|0)/3|0|0)){o=dt(e,f,h)|0;return o|0}else{o=et(e,f)|0;return o|0}return 0}function dt(e,f,g){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;n=c[f>>2]|0;a:do if(!n)h=-1;else{j=f+8|0;m=c[j>>2]|0;j=c[j+4>>2]|0;i=c[n+24>>2]|0;k=d[i+2>>0]<<8|d[i+3>>0];if(k|0){l=d[e+23>>0]|0;h=0;do{o=i+((G(h,l)|0)+4)|0;u=cw(d[o>>0]|0,0,56)|0;p=L()|0;v=cw(d[o+1>>0]|0,0,48)|0;p=L()|0|p;t=cw(d[o+2>>0]|0,0,40)|0;p=p|(L()|0);p=p|d[o+3>>0];s=cw(d[o+4>>0]|0,0,24)|0;p=p|(L()|0);r=cw(d[o+5>>0]|0,0,16)|0;p=p|(L()|0);q=cw(d[o+6>>0]|0,0,8)|0;p=p|(L()|0);o=Sv(v|u|t|s|r|q|0,p|0,d[o+7>>0]|0,0)|0;if((o|0)==(m|0)&(L()|0)==(j|0))break a;h=h+1|0}while(h>>>0>>0)}Us(e,0)|0;v=267;return v|0}while(0);c[f>>2]=0;i=ct(e,n,h,g+1|0)|0;h=Us(e,n)|0;if(i|0){v=i;return v|0}if(h|0){v=h;return v|0}j=e+84|0;h=c[j>>2]|0;m=f+8|0;l=m;k=c[l>>2]|0;l=c[l+4>>2]|0;do if(!(Vc(h,1)|0)){h=c[h+100>>2]|0;i=h+8|0;if(!(b[i>>1]&9216)){v=h;c[v>>2]=k;c[v+4>>2]=l;b[i>>1]=4;break}else{Pg(h,k,l);break}}while(0);Gc(c[j>>2]|0)|0;h=c[j>>2]|0;do if(h|0){i=c[h>>2]|0;v=h+136|0;u=c[v+4>>2]|0;if((u|0)>0|(u|0)==0&(c[v>>2]|0)>>>0>0)hc(i,h);j=kc(h)|0;c[h+20>>2]=770837923;c[h+36>>2]=-1;c[h+40>>2]=0;a[h+146>>0]=2;c[h+44>>2]=0;c[h+32>>2]=1;a[h+147>>0]=-1;c[h+48>>2]=0;v=h+64|0;c[v>>2]=0;c[v+4>>2]=0;if((j|0)==3082|(a[i+81>>0]|0)!=0){og(i);v=7;return v|0}else{h=c[i+68>>2]&j;if(!h)break;return h|0}}while(0);j=e+108|0;h=c[j>>2]|0;l=m;k=c[l>>2]|0;l=c[l+4>>2]|0;do if(!(Vc(h,1)|0)){h=c[h+100>>2]|0;i=h+8|0;if(!(b[i>>1]&9216)){v=h;c[v>>2]=k;c[v+4>>2]=l;b[i>>1]=4;break}else{Pg(h,k,l);break}}while(0);Gc(c[j>>2]|0)|0;h=c[j>>2]|0;do if(h|0){i=c[h>>2]|0;v=h+136|0;u=c[v+4>>2]|0;if((u|0)>0|(u|0)==0&(c[v>>2]|0)>>>0>0)hc(i,h);j=kc(h)|0;c[h+20>>2]=770837923;c[h+36>>2]=-1;c[h+40>>2]=0;a[h+146>>0]=2;c[h+44>>2]=0;c[h+32>>2]=1;a[h+147>>0]=-1;c[h+48>>2]=0;v=h+64|0;c[v>>2]=0;c[v+4>>2]=0;if((j|0)==3082|(a[i+81>>0]|0)!=0){og(i);v=7;return v|0}else{h=c[i+68>>2]&j;if(!h)break;return h|0}}while(0);v=m;h=c[v>>2]|0;if((h|0)==0&(c[v+4>>2]|0)==0)h=f+28|0;else{h=e+116+(((h>>>0)%97|0)<<2)|0;while(1){i=c[h>>2]|0;if((i|0)==(f|0))break;else h=i+28|0}v=f+28|0;c[h>>2]=c[v>>2];c[v>>2]=0;h=v}v=m;c[v>>2]=g;c[v+4>>2]=((g|0)<0)<<31>>31;v=e+68|0;c[h>>2]=c[v>>2];u=f+16|0;c[u>>2]=(c[u>>2]|0)+1;c[v>>2]=f;v=0;return v|0}function et(b,e){b=b|0;e=e|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,y=0,z=0,A=0,B=0.0,C=0.0;t=Ra;Ra=Ra+96|0;q=t+48|0;n=t;r=c[e>>2]|0;if(!r){s=0;Ra=t;return s|0}o=c[e+24>>2]|0;l=d[o+2>>0]|0;k=d[o+3>>0]|0;p=a[b+23>>0]|0;m=cw(d[o+4>>0]|0,0,56)|0;j=L()|0;u=cw(d[o+5>>0]|0,0,48)|0;j=L()|0|j;h=cw(d[o+6>>0]|0,0,40)|0;j=j|(L()|0);j=j|d[o+7>>0];g=cw(d[o+8>>0]|0,0,24)|0;j=j|(L()|0);s=cw(d[o+9>>0]|0,0,16)|0;j=j|(L()|0);i=cw(d[o+10>>0]|0,0,8)|0;j=j|(L()|0);j=Sv(u|m|h|g|s|i|0,j|0,d[o+11>>0]|0,0)|0;i=L()|0;s=q;c[s>>2]=j;c[s+4>>2]=i;s=b+21|0;i=a[s>>0]|0;j=i&255;g=0;h=o+12|0;while(1){c[q+8+(g<<2)>>2]=d[h+1>>0]<<16|d[h>>0]<<24|d[h+2>>0]<<8|d[h+3>>0];c[q+8+((g|1)<<2)>>2]=d[h+5>>0]<<16|d[h+4>>0]<<24|d[h+6>>0]<<8|d[h+7>>0];g=g+2|0;if(g>>>0>=j>>>0)break;else h=h+8|0}m=i&255;i=l<<8|k;if(i>>>0>1){j=p&255;k=b+22|0;l=1;do{h=G(l,j)|0;v=o+(h+4)|0;z=cw(d[v>>0]|0,0,56)|0;u=L()|0;A=cw(d[v+1>>0]|0,0,48)|0;u=L()|0|u;y=cw(d[v+2>>0]|0,0,40)|0;u=u|(L()|0);u=u|d[v+3>>0];x=cw(d[v+4>>0]|0,0,24)|0;u=u|(L()|0);w=cw(d[v+5>>0]|0,0,16)|0;u=u|(L()|0);g=cw(d[v+6>>0]|0,0,8)|0;u=u|(L()|0);v=Sv(A|z|y|x|w|g|0,u|0,d[v+7>>0]|0,0)|0;u=L()|0;g=n;c[g>>2]=v;c[g+4>>2]=u;g=0;h=o+(h+12)|0;while(1){c[n+8+(g<<2)>>2]=d[h+1>>0]<<16|d[h>>0]<<24|d[h+2>>0]<<8|d[h+3>>0];c[n+8+((g|1)<<2)>>2]=d[h+5>>0]<<16|d[h+4>>0]<<24|d[h+6>>0]<<8|d[h+7>>0];g=g+2|0;if(g>>>0>=m>>>0)break;else h=h+8|0}if(!(a[k>>0]|0)){g=0;do{z=q+8+(g<<2)|0;B=+f[z>>2];C=+f[n+8+(g<<2)>>2];f[z>>2]=B>2];B=+f[n+8+(z<<2)>>2];f[A>>2]=C>B?C:B;g=g+2|0}while(g>>>0>>0)}else{g=0;do{z=q+8+(g<<2)|0;y=c[z>>2]|0;A=c[n+8+(g<<2)>>2]|0;c[z>>2]=(y|0)<(A|0)?y:A;z=g|1;A=q+8+(z<<2)|0;y=c[A>>2]|0;z=c[n+8+(z<<2)>>2]|0;c[A>>2]=(y|0)>(z|0)?y:z;g=g+2|0}while(g>>>0>>0)}l=l+1|0}while((l|0)!=(i|0))}k=e+8|0;j=c[k>>2]|0;k=c[k+4>>2]|0;i=q;c[i>>2]=j;c[i+4>>2]=k;i=c[r+24>>2]|0;l=d[i+2>>0]<<8|d[i+3>>0];a:do if(!l)g=267;else{h=p&255;g=0;while(1){m=i+((G(g,h)|0)+4)|0;v=cw(d[m>>0]|0,0,56)|0;A=L()|0;u=cw(d[m+1>>0]|0,0,48)|0;A=L()|0|A;w=cw(d[m+2>>0]|0,0,40)|0;A=A|(L()|0);A=A|d[m+3>>0];x=cw(d[m+4>>0]|0,0,24)|0;A=A|(L()|0);y=cw(d[m+5>>0]|0,0,16)|0;A=A|(L()|0);z=cw(d[m+6>>0]|0,0,8)|0;A=A|(L()|0);A=Sv(u|v|w|x|y|z|0,A|0,d[m+7>>0]|0,0)|0;if((A|0)==(j|0)&(L()|0)==(k|0))break;g=g+1|0;if(g>>>0>=l>>>0){g=267;break a}}A=bw(j|0,k|0,56)|0;L()|0;a[m>>0]=A;A=bw(j|0,k|0,48)|0;L()|0;a[m+1>>0]=A;A=bw(j|0,k|0,40)|0;L()|0;a[m+2>>0]=A;a[m+3>>0]=k;A=bw(j|0,k|0,24)|0;L()|0;a[m+4>>0]=A;A=bw(j|0,k|0,16)|0;L()|0;a[m+5>>0]=A;A=bw(j|0,k|0,8)|0;L()|0;a[m+6>>0]=A;a[m+7>>0]=j;if(a[s>>0]|0){h=0;g=m+8|0;while(1){A=c[q+8+(h<<2)>>2]|0;a[g>>0]=A>>>24;a[g+1>>0]=A>>>16;a[g+2>>0]=A>>>8;a[g+3>>0]=A;h=h+1|0;if(h>>>0>=(d[s>>0]|0)>>>0)break;else g=g+4|0}}c[r+20>>2]=1;g=et(b,r)|0}while(0);A=g;Ra=t;return A|0}function ft(b,e,g){b=b|0;e=e|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,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0;C=Ra;Ra=Ra+48|0;z=C;h=c[e>>2]|0;if(!h){B=0;Ra=C;return B|0}y=b+23|0;A=b+21|0;x=b+22|0;w=0;b=e;a:while(1){if(w>>>0>999)break;w=w+1|0;u=b+8|0;t=c[u>>2]|0;u=c[u+4>>2]|0;j=c[h+24>>2]|0;e=d[j+2>>0]<<8|d[j+3>>0];if(!e)break;i=d[y>>0]|0;b=0;while(1){k=G(b,i)|0;v=j+(k+4)|0;n=cw(d[v>>0]|0,0,56)|0;s=L()|0;m=cw(d[v+1>>0]|0,0,48)|0;s=L()|0|s;o=cw(d[v+2>>0]|0,0,40)|0;s=s|(L()|0);s=s|d[v+3>>0];p=cw(d[v+4>>0]|0,0,24)|0;s=s|(L()|0);q=cw(d[v+5>>0]|0,0,16)|0;s=s|(L()|0);r=cw(d[v+6>>0]|0,0,8)|0;s=s|(L()|0);s=Sv(m|n|o|p|q|r|0,s|0,d[v+7>>0]|0,0)|0;if((s|0)==(t|0)&(L()|0)==(u|0))break;b=b+1|0;if(b>>>0>=e>>>0)break a}l=v+1|0;m=v+2|0;n=v+3|0;o=v+4|0;p=v+5|0;q=v+6|0;r=v+7|0;i=z;c[i>>2]=t;c[i+4>>2]=u;i=a[A>>0]|0;s=i&255;e=0;b=j+(k+12)|0;while(1){c[z+8+(e<<2)>>2]=d[b+1>>0]<<16|d[b>>0]<<24|d[b+2>>0]<<8|d[b+3>>0];c[z+8+((e|1)<<2)>>2]=d[b+5>>0]<<16|d[b+4>>0]<<24|d[b+6>>0]<<8|d[b+7>>0];e=e+2|0;if(e>>>0>=s>>>0)break;else b=b+8|0}b:do if(i<<24>>24){j=a[x>>0]|0;c:do if(j<<24>>24==1){b=0;while(1){e=z+8+(b<<2)|0;i=g+8+(b<<2)|0;if((c[i>>2]|0)<(c[e>>2]|0))break c;if((c[i+4>>2]|0)>(c[e+4>>2]|0))break c;b=b+2|0;if(b>>>0>=s>>>0)break b}}else{b=0;while(1){e=z+8+(b<<2)|0;i=g+8+(b<<2)|0;if(+f[i>>2]<+f[e>>2])break c;if(+f[i+4>>2]>+f[e+4>>2])break c;b=b+2|0;if(b>>>0>=s>>>0)break b}}while(0);if(!(j<<24>>24)){b=0;do{j=z+8+(b<<2)|0;D=+f[j>>2];E=+f[g+8+(b<<2)>>2];f[j>>2]=D>2];D=+f[g+8+(j<<2)>>2];f[k>>2]=E>D?E:D;b=b+2|0}while(b>>>0>>0)}else{b=0;do{j=z+8+(b<<2)|0;i=c[j>>2]|0;k=c[g+8+(b<<2)>>2]|0;c[j>>2]=(i|0)<(k|0)?i:k;j=b|1;k=z+8+(j<<2)|0;i=c[k>>2]|0;j=c[g+8+(j<<2)>>2]|0;c[k>>2]=(i|0)>(j|0)?i:j;b=b+2|0}while(b>>>0>>0)}s=bw(t|0,u|0,56)|0;L()|0;a[v>>0]=s;s=bw(t|0,u|0,48)|0;L()|0;a[l>>0]=s;s=bw(t|0,u|0,40)|0;L()|0;a[m>>0]=s;a[n>>0]=u;s=bw(t|0,u|0,24)|0;L()|0;a[o>>0]=s;s=bw(t|0,u|0,16)|0;L()|0;a[p>>0]=s;u=bw(t|0,u|0,8)|0;L()|0;a[q>>0]=u;a[r>>0]=t;if(a[A>>0]|0){e=0;b=v+8|0;while(1){v=c[z+8+(e<<2)>>2]|0;a[b>>0]=v>>>24;a[b+1>>0]=v>>>16;a[b+2>>0]=v>>>8;a[b+3>>0]=v;e=e+1|0;if(e>>>0>=(d[A>>0]|0)>>>0)break;else b=b+4|0}}c[h+20>>2]=1}while(0);b=c[h>>2]|0;if(!b){b=0;B=31;break}else{v=h;h=b;b=v}}if((B|0)==31){Ra=C;return b|0}B=267;Ra=C;return B|0}function gt(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;j=d+92|0;d=c[j>>2]|0;do if(!(Vc(d,1)|0)){d=c[d+100>>2]|0;i=d+8|0;if(!(b[i>>1]&9216)){c[d>>2]=e;c[d+4>>2]=f;b[i>>1]=4;break}else{Pg(d,e,f);break}}while(0);d=c[j>>2]|0;do if(!(Vc(d,2)|0)){i=c[d+100>>2]|0;d=i+40|0;i=i+48|0;if(!(b[i>>1]&9216)){f=d;c[f>>2]=g;c[f+4>>2]=h;b[i>>1]=4;break}else{Pg(d,g,h);break}}while(0);Gc(c[j>>2]|0)|0;d=c[j>>2]|0;if(!d){h=0;return h|0}i=c[d>>2]|0;h=d+136|0;g=c[h+4>>2]|0;if((g|0)>0|(g|0)==0&(c[h>>2]|0)>>>0>0)hc(i,d);e=kc(d)|0;c[d+20>>2]=770837923;c[d+36>>2]=-1;c[d+40>>2]=0;a[d+146>>0]=2;c[d+44>>2]=0;c[d+32>>2]=1;a[d+147>>0]=-1;c[d+48>>2]=0;h=d+64|0;c[h>>2]=0;c[h+4>>2]=0;if((e|0)==3082|(a[i+81>>0]|0)!=0){og(i);h=7;return h|0}else{h=c[i+68>>2]&e;return h|0}return 0}function ht(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;j=d+104|0;d=c[j>>2]|0;do if(!(Vc(d,1)|0)){d=c[d+100>>2]|0;i=d+8|0;if(!(b[i>>1]&9216)){c[d>>2]=e;c[d+4>>2]=f;b[i>>1]=4;break}else{Pg(d,e,f);break}}while(0);d=c[j>>2]|0;do if(!(Vc(d,2)|0)){i=c[d+100>>2]|0;d=i+40|0;i=i+48|0;if(!(b[i>>1]&9216)){f=d;c[f>>2]=g;c[f+4>>2]=h;b[i>>1]=4;break}else{Pg(d,g,h);break}}while(0);Gc(c[j>>2]|0)|0;d=c[j>>2]|0;if(!d){h=0;return h|0}i=c[d>>2]|0;h=d+136|0;g=c[h+4>>2]|0;if((g|0)>0|(g|0)==0&(c[h>>2]|0)>>>0>0)hc(i,d);e=kc(d)|0;c[d+20>>2]=770837923;c[d+36>>2]=-1;c[d+40>>2]=0;a[d+146>>0]=2;c[d+44>>2]=0;c[d+32>>2]=1;a[d+147>>0]=-1;c[d+48>>2]=0;h=d+64|0;c[h>>2]=0;c[h+4>>2]=0;if((e|0)==3082|(a[i+81>>0]|0)!=0){og(i);h=7;return h|0}else{h=c[i+68>>2]&e;return h|0}return 0}function it(b,d,e,g,h,i){b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;if((e|0)<=1)return;t=e>>>1;r=e-t|0;s=d+(t<<2)|0;it(b,d,t,g,h,i);it(b,s,r,g,h,i);ew(i|0,d|0,t<<2|0)|0;if(!((r|0)>0|(t|0)!=0))return;p=g<<1;q=p|1;o=(a[b+22>>0]|0)==0;e=0;g=0;do{n=c[i+(g<<2)>>2]|0;b=h+(n*48|0)+8+(p<<2)|0;if(o){v=c[s+(e<<2)>>2]|0;j=+f[b>>2];k=+f[h+(v*48|0)+8+(p<<2)>>2];l=+f[h+(n*48|0)+8+(q<<2)>>2];m=+f[h+(v*48|0)+8+(q<<2)>>2];b=v}else{v=c[s+(e<<2)>>2]|0;j=+(c[b>>2]|0);k=+(c[h+(v*48|0)+8+(p<<2)>>2]|0);l=+(c[h+(n*48|0)+8+(q<<2)>>2]|0);m=+(c[h+(v*48|0)+8+(q<<2)>>2]|0);b=v}do if((g|0)==(t|0))u=11;else{if(!((e|0)==(r|0)|j>2]=n;g=g+1|0}while(0);if((u|0)==11){u=0;c[d+(g+e<<2)>>2]=b;e=e+1|0}}while((e|0)<(r|0)|(g|0)<(t|0));return}function jt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0;if((b|0)<=1)return;m=b>>>1;k=b-m|0;l=a+(m<<2)|0;jt(a,m,d,e);jt(l,k,d,e);ew(e|0,a|0,m<<2|0)|0;if(!((k|0)>0|(m|0)!=0))return;b=0;f=0;do do if((f|0)!=(m|0)){h=c[e+(f<<2)>>2]|0;if((b|0)==(k|0)){c[a+(f+k<<2)>>2]=h;f=f+1|0;b=k;break}i=c[l+(b<<2)>>2]|0;j=a+(f+b<<2)|0;if(+g[d+(h<<3)>>3]<+g[d+(i<<3)>>3]){c[j>>2]=h;f=f+1|0;break}else{c[j>>2]=i;b=b+1|0;break}}else{c[a+(m+b<<2)>>2]=c[l+(b<<2)>>2];f=m;b=b+1|0}while(0);while((b|0)<(k|0)|(f|0)<(m|0));return}function kt(b){b=b|0;var e=0,f=0;f=0;do{switch(a[26496+(f*12|0)+5>>0]|0){case 1:{e=b;break}case 2:{e=-1;break}default:e=0}Ed(b,c[26496+(f*12|0)>>2]|0,a[26496+(f*12|0)+4>>0]|0,d[26496+(f*12|0)+6>>0]|0,e,c[26496+(f*12|0)+8>>2]|0,0,0)|0;f=f+1|0}while((f|0)!=40);Ed(b,58197,1,1,0,0,182,99)|0;Ed(b,58203,1,1,0,0,182,100)|0;Ed(b,58212,1,1,0,0,183,101)|0;Ed(b,58217,1,1,0,0,183,102)|0;Ed(b,58224,1,1,0,0,183,103)|0;Ed(b,58239,1,1,0,0,183,104)|0;return 0}function lt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0,j=0,k=0;if((b|0)!=1)Y(58254,58262,1395,58332);a=Hc(a,24)|0;if(($c(c[d>>2]|0)|0)==5)return;b=a+16|0;k=b;k=Sv(c[k>>2]|0,c[k+4>>2]|0,1,0)|0;j=L()|0;i=b;c[i>>2]=k;c[i+4>>2]=j;f=+pc(c[d>>2]|0);e=+g[a>>3];h=f-e;d=b;e=e+h/(+((c[d>>2]|0)>>>0)+4294967296.0*+(c[d+4>>2]|0));g[a>>3]=e;d=a+8|0;g[d>>3]=+g[d>>3]+h*(f-e);return}function mt(a){a=a|0;var b=0,d=0,e=0,f=0.0;b=Hc(a,0)|0;if(b|0?(e=b+16|0,d=c[e>>2]|0,e=c[e+4>>2]|0,(e|0)>0|(e|0)==0&d>>>0>1):0){f=+g[b+8>>3];e=Sv(d|0,e|0,-1,-1)|0;wc(a,+u(+(f/(+(e>>>0)+4294967296.0*+(L()|0)))));return}wc(a,0.0);return}function nt(a){a=a|0;var b=0,d=0,e=0,f=0.0;b=Hc(a,0)|0;if(b|0?(e=b+16|0,d=c[e>>2]|0,e=c[e+4>>2]|0,(e|0)>0|(e|0)==0&d>>>0>1):0){f=+g[b+8>>3];e=Sv(d|0,e|0,-1,-1)|0;wc(a,f/(+(e>>>0)+4294967296.0*+(L()|0)));return}wc(a,0.0);return}function ot(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0.0;if((b|0)!=1)Y(58254,58262,1418,58323);e=$c(c[d>>2]|0)|0;if((e|0)==5)return;a=Hc(a,64)|0;h=a+56|0;do if(!(c[h>>2]|0)){b=nu(1,12)|0;c[h>>2]=b;if((e|0)==1){c[b>>2]=0;c[b+4>>2]=159;b=a+48|0;c[b>>2]=0;c[b+4>>2]=0;b=a+16|0;a=b;a=Sv(c[a>>2]|0,c[a+4>>2]|0,1,0)|0;e=L()|0;c[b>>2]=a;c[b+4>>2]=e;b=c[d>>2]|0;break}else{f=a+48|0;e=f;c[e>>2]=1;c[e+4>>2]=0;c[b>>2]=0;c[b+4>>2]=160;b=f;f=9;break}}else{b=a+48|0;f=9}while(0);if((f|0)==9){f=b;e=c[f>>2]|0;f=c[f+4>>2]|0;b=a+16|0;i=b;i=Sv(c[i>>2]|0,c[i+4>>2]|0,1,0)|0;a=L()|0;c[b>>2]=i;c[b+4>>2]=a;b=c[d>>2]|0;if(!((e|0)==0&(f|0)==0)){j=+pc(b);d=nu(1,8)|0;g[d>>3]=j;b=c[h>>2]|0;e=c[b+4>>2]|0;a=c[b>>2]|0;a:do if(a){while(1){a=Xa[e&255](c[a+8>>2]|0,d)|0;if(!a)break;b=c[b>>2]|0;b=(a|0)>0?b:b+4|0;a=c[b>>2]|0;if(!a)break a}i=(c[b>>2]|0)+16|0;f=i;f=Sv(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;h=L()|0;c[i>>2]=f;c[i+4>>2]=h;mu(d);return}while(0);i=nu(1,24)|0;c[i+8>>2]=d;h=i+16|0;c[h>>2]=1;c[h+4>>2]=0;c[b>>2]=i;return}}a=rc(b)|0;e=L()|0;d=nu(1,8)|0;b=d;c[b>>2]=a;c[b+4>>2]=e;b=c[h>>2]|0;e=c[b+4>>2]|0;a=c[b>>2]|0;b:do if(a){while(1){a=Xa[e&255](c[a+8>>2]|0,d)|0;if(!a)break;b=c[b>>2]|0;b=(a|0)>0?b:b+4|0;a=c[b>>2]|0;if(!a)break b}i=(c[b>>2]|0)+16|0;f=i;f=Sv(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;h=L()|0;c[i>>2]=f;c[i+4>>2]=h;mu(d);return}while(0);i=nu(1,24)|0;c[i+8>>2]=d;h=i+16|0;c[h>>2]=1;c[h+4>>2]=0;c[b>>2]=i;return}function pt(a){a=a|0;var b=0,d=0,e=0;b=Hc(a,0)|0;if(!b)return;d=b+56|0;e=c[d>>2]|0;if(!e)return;vt(c[e>>2]|0,68,b);wt(c[c[d>>2]>>2]|0);mu(c[d>>2]|0);e=b+40|0;if(!((c[e>>2]|0)==1&(c[e+4>>2]|0)==0))return;e=b+48|0;if((c[e>>2]|0)==0&(c[e+4>>2]|0)==0){e=b;Ac(a,c[e>>2]|0,c[e+4>>2]|0);return}else{wc(a,+g[b+8>>3]);return}}function qt(a){a=a|0;var b=0,d=0;b=Hc(a,0)|0;if(!b)return;d=b+16|0;g[b+24>>3]=(+((c[d>>2]|0)>>>0)+4294967296.0*+(c[d+4>>2]|0))*.5;tt(a);return}function rt(a){a=a|0;var b=0,d=0;b=Hc(a,0)|0;if(!b)return;d=b+16|0;g[b+24>>3]=(+((c[d>>2]|0)>>>0)+4294967296.0*+(c[d+4>>2]|0))*.25;tt(a);return}function st(a){a=a|0;var b=0,d=0.0,e=0;b=Hc(a,0)|0;if(!b)return;e=b+16|0;e=Yv(c[e>>2]|0,c[e+4>>2]|0,3,0)|0;d=(+(e>>>0)+4294967296.0*+(L()|0))*.25;g[b+24>>3]=d;tt(a);return}function tt(a){a=a|0;var b=0,d=0,e=0,f=0,h=0;e=Hc(a,0)|0;if(!e)return;b=e+56|0;d=c[b>>2]|0;if(!d)return;c[e+60>>2]=0;vt(c[d>>2]|0,69,e);wt(c[c[b>>2]>>2]|0);mu(c[b>>2]|0);h=e+48|0;if(!((c[h>>2]|0)==0&(c[h+4>>2]|0)==0)){h=e+40|0;wc(a,+g[e+8>>3]/(+((c[h>>2]|0)>>>0)+4294967296.0*+(c[h+4>>2]|0)));return}h=e+40|0;f=c[h>>2]|0;h=c[h+4>>2]|0;d=e;b=c[d>>2]|0;d=c[d+4>>2]|0;if((f|0)==1&(h|0)==0){Ac(a,b,d);return}else{wc(a,(+(b>>>0)+4294967296.0*+(d|0))/(+(f>>>0)+4294967296.0*+(h|0)));return}}function ut(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0.0;l=e+60|0;if((c[l>>2]|0)>0)return;m=+g[e+24>>3];h=e+16|0;f=c[h>>2]|0;h=c[h+4>>2]|0;i=e+32|0;k=i;j=c[k>>2]|0;k=c[k+4>>2]|0;b=Sv(j|0,k|0,b|0,d|0)|0;d=L()|0;do if(m<=+(b|0)){k=Tv(f|0,h|0,j|0,k|0)|0;L()|0;if(!(+(f>>>0)+4294967296.0*+(h|0)-m<=+(k|0))){c[l>>2]=1;break}l=e+40|0;j=l;j=Sv(c[j>>2]|0,c[j+4>>2]|0,1,0)|0;k=L()|0;c[l>>2]=j;c[l+4>>2]=k;l=e+48|0;if((c[l>>2]|0)==0&(c[l+4>>2]|0)==0){j=c[a>>2]|0;k=e;j=Sv(c[k>>2]|0,c[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0;k=L()|0;l=e;c[l>>2]=j;c[l+4>>2]=k;break}else{l=e+8|0;g[l>>3]=+g[a>>3]+ +g[l>>3];break}}while(0);l=i;c[l>>2]=b;c[l+4>>2]=d;return}function vt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(!a)return;do{e=c[a>>2]|0;if(e|0)vt(e,b,d);e=a+16|0;db[b&127](c[a+8>>2]|0,c[e>>2]|0,c[e+4>>2]|0,d);a=c[a+4>>2]|0}while((a|0)!=0);return}function wt(a){a=a|0;var b=0;if(!a)return;mu(c[a+8>>2]|0);b=c[a>>2]|0;if(b|0)wt(b);b=c[a+4>>2]|0;if(b|0)wt(b);mu(a);return}function xt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0.0;i=e+48|0;if((c[i>>2]|0)==0&(c[i+4>>2]|0)==0){a=c[a>>2]|0;f=e+32|0;i=f;h=c[i>>2]|0;i=c[i+4>>2]|0;if((h|0)==(b|0)&(i|0)==(d|0)){e=e+40|0;b=e;b=Sv(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;d=L()|0;c[e>>2]=b;c[e+4>>2]=d;return}if(!((i|0)<(d|0)|(i|0)==(d|0)&h>>>0>>0))return;i=e;c[i>>2]=a;c[i+4>>2]=((a|0)<0)<<31>>31;i=f;c[i>>2]=b;c[i+4>>2]=d;e=e+40|0;c[e>>2]=1;c[e+4>>2]=0;return}else{j=+g[a>>3];a=e+32|0;h=a;f=c[h>>2]|0;h=c[h+4>>2]|0;if((f|0)==(b|0)&(h|0)==(d|0)){e=e+40|0;b=e;b=Sv(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;d=L()|0;c[e>>2]=b;c[e+4>>2]=d;return}if(!((h|0)<(d|0)|(h|0)==(d|0)&f>>>0>>0))return;g[e+8>>3]=j;i=a;c[i>>2]=b;c[i+4>>2]=d;e=e+40|0;c[e>>2]=1;c[e+4>>2]=0;return}}function yt(a,b){a=a|0;b=b|0;var d=0,e=0;e=a;a=c[e>>2]|0;e=c[e+4>>2]|0;d=b;b=c[d>>2]|0;d=c[d+4>>2]|0;return ((a|0)==(b|0)&(e|0)==(d|0)?0:(e|0)<(d|0)|(e|0)==(d|0)&a>>>0>>0?-1:1)|0}function zt(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+g[a>>3];c=+g[b>>3];return (d==c?0:d>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+z(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Bt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,379,58968);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+A(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Ct(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,380,58959);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+B(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Dt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0;if((b|0)!=2)Y(58580,58262,570,58950);if((sc(c[d>>2]|0)|0)!=5?(e=d+4|0,(sc(c[e>>2]|0)|0)!=5):0){f=+pc(c[d>>2]|0);wc(a,+C(+f,+(+pc(c[e>>2]|0))));return}Bc(a);return}function Et(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,394,58940);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+Hv(e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Ft(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,402,58930);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+Jv(e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Gt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,410,58920);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+Fv(e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Ht(b,e,f){b=b|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;o=Ra;Ra=Ra+16|0;k=o+8|0;j=o;if((e|0)!=2)Y(58580,58262,1680,58900);if((sc(c[f>>2]|0)|0)!=5?(g=f+4|0,(sc(c[g>>2]|0)|0)!=5):0){h=nc(c[f>>2]|0)|0;i=nc(c[g>>2]|0)|0;e=a[h>>0]|0;a:do if(!(e<<24>>24))n=17;else{f=0;while(1){e=e&255;if(yu(e)|0)break;f=f+1|0;e=a[h+f>>0]|0;if(!(e<<24>>24)){n=17;break a}}e=(zu(e)|0)&255;a[k>>0]=e;e=1;while(1){g=a[h+f>>0]|0;if(!(g<<24>>24)){n=15;break}g=a[27264+(g&127)>>0]|0;if(g<<24>>24){a[k+e>>0]=(g&255)+48;e=e+1|0}if((e|0)<4)f=f+1|0;else break}if((n|0)==15)gw(k+e|0,48,4-e|0)|0;a[k+4>>0]=0}while(0);if((n|0)==17){a[k>>0]=a[58915]|0;a[k+1>>0]=a[58916]|0;a[k+2>>0]=a[58917]|0;a[k+3>>0]=a[58918]|0;a[k+4>>0]=a[58919]|0}e=a[i>>0]|0;b:do if(!(e<<24>>24))n=29;else{f=0;while(1){e=e&255;if(yu(e)|0)break;f=f+1|0;e=a[i+f>>0]|0;if(!(e<<24>>24)){n=29;break b}}e=(zu(e)|0)&255;a[j>>0]=e;e=1;while(1){g=a[i+f>>0]|0;if(!(g<<24>>24)){n=27;break}g=a[27264+(g&127)>>0]|0;if(g<<24>>24){a[j+e>>0]=(g&255)+48;e=e+1|0}if((e|0)<4)f=f+1|0;else break}if((n|0)==27)gw(j+e|0,48,4-e|0)|0;a[j+4>>0]=0}while(0);if((n|0)==29){a[j>>0]=a[58915]|0;a[j+1>>0]=a[58916]|0;a[j+2>>0]=a[58917]|0;a[j+3>>0]=a[58918]|0;a[j+4>>0]=a[58919]|0}g=j;m=0;f=0;h=k;e=a[k>>0]|0;while(1){i=h+1|0;e=e&255;l=a[26976+e>>0]|0;k=l&255;switch(l<<24>>24){case 4:{l=65533;break}case 3:{j=h+2|0;e=(e<<6)+(d[i>>0]|0)|0;n=34;break}case 2:{j=i;n=34;break}case 1:{n=35;break}default:l=e}if((n|0)==34){i=j+1|0;e=(e<<6)+(d[j>>0]|0)|0;n=35}if((n|0)==35){n=0;l=(e<<6)+(d[i>>0]|0)-(c[27232+(k<<2)>>2]|0)|0;l=(l&-2|0)==65534|((l&-2048|0)==55296?1:(l&c[27248+(k<<2)>>2]|0)==0)?65533:l}i=g+1|0;e=d[g>>0]|0;j=a[26976+e>>0]|0;k=j&255;switch(j<<24>>24){case 4:{e=65533;break}case 3:{j=g+2|0;e=(e<<6)+(d[i>>0]|0)|0;n=39;break}case 2:{j=i;n=39;break}case 1:{n=40;break}default:{}}if((n|0)==39){i=j+1|0;e=(e<<6)+(d[j>>0]|0)|0;n=40}if((n|0)==40){n=0;e=(e<<6)+(d[i>>0]|0)-(c[27232+(k<<2)>>2]|0)|0;e=(e&-2|0)==65534|((e&-2048|0)==55296?1:(e&c[27248+(k<<2)>>2]|0)==0)?65533:e}e=(l|0)==(e|0)&1;do{h=h+1|0;i=a[h>>0]|0}while((i&-64)<<24>>24==-128);do g=g+1|0;while((a[g>>0]&-64)<<24>>24==-128);f=f+e|0;e=m+1|0;if((e|0)==4)break;else{m=e;e=i}}zc(b,f);Ra=o;return}Bc(b);Ra=o;return}function It(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,498,58888);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,e*180.0/3.141592653589793);return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Jt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,499,58876);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,e*3.141592653589793/180.0);return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Kt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,420,58868);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+w(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Lt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,419,58860);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+x(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Mt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,421,58852);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+y(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Nt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,422,58844);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,1.0/+y(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Ot(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,446,58835);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+iv(e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Pt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,438,58826);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+jv(e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Qt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,454,58817);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+Iv(e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Rt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,456,58808);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,1.0/+Iv(e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function St(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,474,58800);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+D(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Tt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,472,58792);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+E(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Ut(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,473,58782);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+Fa(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Vt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0;if((b|0)!=2)Y(58580,58262,546,58772);if((sc(c[d>>2]|0)|0)!=5?(g=d+4|0,(sc(c[g>>2]|0)|0)!=5):0){f=+pc(c[d>>2]|0);e=+pc(c[g>>2]|0);g=uu()|0;c[g>>2]=0;g=uu()|0;if(!(c[g>>2]|0)){wc(a,+v(+f,+e));return}else{d=uu()|0;d=dv(c[d>>2]|0)|0;g=uu()|0;xc(a,d,c[g>>2]|0);return}}Bc(a);return}function Wt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0;if((b|0)!=1)Y(58254,58262,590,58763);switch(sc(c[d>>2]|0)|0){case 1:{e=rc(c[d>>2]|0)|0;d=L()|0;b=(d|0)>0|(d|0)==0&e>>>0>0;d=((e|0)!=0|(d|0)!=0)<<31>>31;Ac(a,b?1:d,b?0:((d|0)<0)<<31>>31);return}case 5:{Bc(a);return}default:{f=+pc(c[d>>2]|0);wc(a,f>0.0?1.0:+((f<0.0)<<31>>31));return}}}function Xt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,375,58754);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+u(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Yt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,514,58743);switch(sc(c[d>>2]|0)|0){case 1:{b=rc(c[d>>2]|0)|0;d=L()|0;Ac(a,Yv(b|0,d|0,b|0,d|0)|0,L()|0);return}case 5:{Bc(a);return}default:{e=+pc(c[d>>2]|0);wc(a,e*e);return}}}function Zt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,620,58734);switch(sc(c[d>>2]|0)|0){case 1:{Ac(a,rc(c[d>>2]|0)|0,L()|0);return}case 5:{Bc(a);return}default:{e=+F(+(+pc(c[d>>2]|0)));Ac(a,~~e>>>0,+t(e)>=1.0?(e>0.0?~~+H(+s(e/4294967296.0),4294967295.0)>>>0:~~+F((e-+(~~e>>>0))/4294967296.0)>>>0):0);return}}}function _t(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,645,58724);switch(sc(c[d>>2]|0)|0){case 1:{Ac(a,rc(c[d>>2]|0)|0,L()|0);return}case 5:{Bc(a);return}default:{e=+s(+(+pc(c[d>>2]|0)));Ac(a,~~e>>>0,+t(e)>=1.0?(e>0.0?~~+H(+s(e/4294967296.0),4294967295.0)>>>0:~~+F((e-+(~~e>>>0))/4294967296.0)>>>0):0);return}}}function $t(a,b,c){a=a|0;b=b|0;c=c|0;wc(a,3.141592653589793);return}function au(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;if((b|0)!=2)return;if((sc(c[d>>2]|0)|0)==5)return;j=rc(c[d+4>>2]|0)|0;f=L()|0;if((f|0)<0){xc(a,58611,-1);return}g=oc(c[d>>2]|0)|0;h=nb((G(g,j)|0)+1|0)|0;i=nb(g+1|0)|0;b=(h|0)!=0;e=(i|0)!=0;if(b&e){Su(i,nc(c[d>>2]|0)|0)|0;if((f|0)>0|(f|0)==0&j>>>0>0){b=0;e=0;do{Su(h+(G(g,b)|0)|0,i)|0;b=Sv(b|0,e|0,1,0)|0;e=L()|0}while((e|0)<(f|0)|(e|0)==(f|0)&b>>>0>>0)}Cc(a,h,-1,-1);qb(h);qb(i);return}Ec(a);if(b)qb(h);if(!e)return;qb(i);return}function bu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=(b|0)==3;if((b|1|0)!=3)Y(58692,58262,1038,58710);if((sc(c[d>>2]|0)|0)!=5?(e=d+4|0,(sc(c[e>>2]|0)|0)!=5):0){f=nc(c[d>>2]|0)|0;if(!f)return;e=nc(c[e>>2]|0)|0;if(g){b=(qc(c[d+8>>2]|0)|0)+-1|0;b=(b|0)>0?b:0}else b=0;zc(a,(ku(f,e,b)|0)+1|0);return}Bc(a);return}function cu(b,e,f){b=b|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;if((e|0)!=2)Y(58580,58262,1073,58683);if((sc(c[f>>2]|0)|0)!=5?(g=f+4|0,(sc(c[g>>2]|0)|0)!=5):0){n=nc(c[f>>2]|0)|0;k=qc(c[g>>2]|0)|0;j=0;i=n;e=a[n>>0]|0;while(1){g=i+1|0;e=e&255;f=a[26976+e>>0]|0;h=f&255;switch(f<<24>>24){case 4:break;case 3:{f=i+2|0;e=(e<<6)+(d[g>>0]|0)|0;q=10;break}case 2:{f=g;q=10;break}case 1:{m=g;l=e;q=11;break}default:{p=e;q=12}}if((q|0)==10){m=f+1|0;l=(e<<6)+(d[f>>0]|0)|0;q=11}if((q|0)==11?(q=0,o=(l<<6)+(d[m>>0]|0)-(c[27232+(h<<2)>>2]|0)|0,!((o&-2|0)==65534|((o&-2048|0)==55296?1:(o&c[27248+(h<<2)>>2]|0)==0))):0){p=o;q=12}if((q|0)==12?(q=0,(p|0)==0):0)break;f=j+1|0;if((j|0)>=(k|0))break;e=i;do{e=e+1|0;g=a[e>>0]|0}while((g&-64)<<24>>24==-128);j=f;i=e;e=g}e=i-n|0;f=nb(e+1|0)|0;if(!f){Ec(b);return}else{nv(f,n,e)|0;a[f+e>>0]=0;Cc(b,f,-1,-1);qb(f);return}}Bc(b);return}function du(b,e,f){b=b|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;if((e|0)!=2)Y(58580,58262,1113,58673);if((sc(c[f>>2]|0)|0)!=5?(g=f+4|0,(sc(c[g>>2]|0)|0)!=5):0){f=nc(c[f>>2]|0)|0;k=qc(c[g>>2]|0)|0;j=0;q=f;e=a[f>>0]|0;while(1){h=q+1|0;e=e&255;g=a[26976+e>>0]|0;i=g&255;switch(g<<24>>24){case 4:break;case 3:{g=q+2|0;e=(e<<6)+(d[h>>0]|0)|0;p=9;break}case 2:{g=h;p=9;break}case 1:{m=h;l=e;p=10;break}default:{o=e;p=11}}if((p|0)==9){m=g+1|0;l=(e<<6)+(d[g>>0]|0)|0;p=10}if((p|0)==10?(p=0,n=(l<<6)+(d[m>>0]|0)-(c[27232+(i<<2)>>2]|0)|0,!((n&-2|0)==65534|((n&-2048|0)==55296?1:(n&c[27248+(i<<2)>>2]|0)==0))):0){o=n;p=11}if((p|0)==11?(p=0,(o|0)==0):0)break;e=q;do{e=e+1|0;g=a[e>>0]|0}while((g&-64)<<24>>24==-128);j=j+1|0;q=e;e=g}e=j-k|0;if((e|0)>0)while(1){do f=f+1|0;while((a[f>>0]&-64)<<24>>24==-128);if((e|0)>1)e=e+-1|0;else break}e=nb(q+1-f|0)|0;if(!e){Ec(b);return}else{Su(e,f)|0;Cc(b,e,-1,-1);qb(e);return}}Bc(b);return}function eu(b,e,f){b=b|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;if((e|0)!=1)Y(58653,58262,1323,58661);if((sc(c[f>>2]|0)|0)==5){Bc(b);return}e=nc(c[f>>2]|0)|0;f=Eu(e)|0;l=nb(f+1|0)|0;if(!l){Ec(b);return}j=l+f|0;a[j>>0]=0;j=j+-1|0;a:while(1){while(1){h=e+1|0;f=d[e>>0]|0;g=a[26976+f>>0]|0;i=g&255;switch(g<<24>>24){case 4:break;case 3:{g=e+2|0;f=(f<<6)+(d[h>>0]|0)|0;p=12;break}case 2:{g=h;p=12;break}case 1:{m=h;k=f;p=13;break}default:{o=f;p=14}}if((p|0)==12){m=g+1|0;k=(f<<6)+(d[g>>0]|0)|0;p=13}if((p|0)==13?(p=0,n=(k<<6)+(d[m>>0]|0)-(c[27232+(i<<2)>>2]|0)|0,!((n&-2|0)==65534|((n&-2048|0)==55296?1:(n&c[27248+(i<<2)>>2]|0)==0))):0){o=n;p=14}if((p|0)==14?(p=0,(o|0)==0):0)break a;f=e;while(1){i=f+1|0;if((a[i>>0]&-64)<<24>>24==-128)f=i;else break}if(f>>>0>>0)e=i;else break}h=1;g=j;while(1){j=g;g=g+-1|0;a[j>>0]=a[f>>0]|0;f=i+~h|0;if(f>>>0>>0)break;else h=h+1|0}j=g;e=i}Cc(b,l,-1,-1);qb(l);return}function fu(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if((d|0)!=1)Y(58254,58262,724,58642);if((sc(c[e>>2]|0)|0)==5){Bc(b);return}f=nc(c[e>>2]|0)|0;d=nb((Eu(f)|0)+1|0)|0;i=Su(d,f)|0;if(!i){Ec(b);return}e=a[f>>0]|0;if(e<<24>>24){h=1;g=e<<24>>24;while(1){f=f+1|0;if(!(wu(g)|0)){if((h|0)==1)e=zu(g)|0;else e=Du(g)|0;h=0;e=e&255}else h=1;g=d+1|0;a[d>>0]=e;e=a[f>>0]|0;if(!(e<<24>>24)){d=g;break}else{d=g;g=e<<24>>24}}}a[d>>0]=0;Cc(b,i,-1,-1);qb(i);return}function gu(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if((e|0)!=2)Y(58580,58262,771,58633);if((sc(c[f>>2]|0)|0)==5){Bc(b);return}l=nc(c[f>>2]|0)|0;j=rc(c[f+4>>2]|0)|0;k=L()|0;if((k|0)<0){xc(b,58611,-1);return}e=a[l>>0]|0;if((l|0)==(-1|0)|e<<24>>24==0)f=0;else{f=0;g=l;do{g=g+((d[26976+(e&255)>>0]|0)+1)|0;f=f+1|0;e=a[g>>0]|0}while(!(e<<24>>24==0|(g|0)==(-1|0)))}i=((f|0)<0)<<31>>31;do if((k|0)>(i|0)|(k|0)==(i|0)&j>>>0>f>>>0){e=nb(j+1-f+(Eu(l)|0)|0)|0;if(!e){Ec(b);return}g=1;h=e;do{m=h;h=h+1|0;a[m>>0]=32;g=g+1|0;m=Sv(g|0,0,f|0,i|0)|0;n=L()|0}while(!((n|0)>(k|0)|(n|0)==(k|0)&m>>>0>j>>>0));Su(h,l)|0}else{e=nb((Eu(l)|0)+1|0)|0;f=Su(e,l)|0;if(f|0){Cc(b,f,-1,-1);break}Ec(b);return}while(0);Cc(b,e,-1,-1);qb(e);return}function hu(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;if((e|0)!=2)Y(58580,58262,825,58624);if((sc(c[f>>2]|0)|0)==5){Bc(b);return}h=nc(c[f>>2]|0)|0;j=rc(c[f+4>>2]|0)|0;k=L()|0;if((k|0)<0){xc(b,58611,-1);return}e=a[h>>0]|0;if((h|0)==(-1|0)|e<<24>>24==0)f=0;else{f=0;g=h;do{g=g+((d[26976+(e&255)>>0]|0)+1)|0;f=f+1|0;e=a[g>>0]|0}while(!(e<<24>>24==0|(g|0)==(-1|0)))}i=((f|0)<0)<<31>>31;do if((k|0)>(i|0)|(k|0)==(i|0)&j>>>0>f>>>0){g=Eu(h)|0;e=nb(j+1-f+g|0)|0;if(!e){Ec(b);return}Su(e,h)|0;h=1;g=e+g|0;do{l=g;g=g+1|0;a[l>>0]=32;h=h+1|0;l=Sv(h|0,0,f|0,i|0)|0;m=L()|0}while(!((m|0)>(k|0)|(m|0)==(k|0)&l>>>0>j>>>0));a[g>>0]=0}else{e=nb((Eu(h)|0)+1|0)|0;f=Su(e,h)|0;if(f|0){Cc(b,f,-1,-1);break}Ec(b);return}while(0);Cc(b,e,-1,-1);qb(e);return}function iu(b,e,f){b=b|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;if((e|0)!=2)Y(58580,58262,880,58602);if((sc(c[f>>2]|0)|0)==5){Bc(b);return}l=nc(c[f>>2]|0)|0;m=rc(c[f+4>>2]|0)|0;n=L()|0;if((n|0)<0){xc(b,58611,-1);return}e=a[l>>0]|0;if((l|0)==(-1|0)|e<<24>>24==0)j=0;else{f=0;g=l;do{g=g+((d[26976+(e&255)>>0]|0)+1)|0;f=f+1|0;e=a[g>>0]|0}while(!(e<<24>>24==0|(g|0)==(-1|0)));j=f}k=((j|0)<0)<<31>>31;do if((n|0)>(k|0)|(n|0)==(k|0)&m>>>0>j>>>0){i=Eu(l)|0;e=nb(m+1-j+i|0)|0;if(!e){Ec(b);return}h=Sv(j|0,k|0,2,0)|0;g=L()|0;if((g|0)>(n|0)|(g|0)==(n|0)&h>>>0>m>>>0){f=e;h=1}else{h=1;g=e;while(1){f=g+1|0;a[g>>0]=32;h=h+1|0;g=Sv(h<<1|0,0,j|0,k|0)|0;o=L()|0;if((o|0)>(n|0)|(o|0)==(n|0)&g>>>0>m>>>0)break;else g=f}}Su(f,l)|0;f=f+i|0;o=Sv(h|0,0,j|0,k|0)|0;l=L()|0;if(!((l|0)>(n|0)|(l|0)==(n|0)&o>>>0>m>>>0))while(1){g=f+1|0;a[f>>0]=32;h=h+1|0;o=Sv(h|0,0,j|0,k|0)|0;l=L()|0;if((l|0)>(n|0)|(l|0)==(n|0)&o>>>0>m>>>0){f=g;break}else f=g}a[f>>0]=0}else{e=nb((Eu(l)|0)+1|0)|0;f=Su(e,l)|0;if(f|0){Cc(b,f,-1,-1);break}Ec(b);return}while(0);Cc(b,e,-1,-1);qb(e);return}function ju(b,e,f){b=b|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;if((e|0)!=2)Y(58580,58262,939,58588);if((sc(c[f>>2]|0)|0)!=5?(g=f+4|0,(sc(c[g>>2]|0)|0)!=5):0){e=nc(c[f>>2]|0)|0;m=nc(c[g>>2]|0)|0;n=nb((Eu(e)|0)+1|0)|0;if(!n){Ec(b);return}l=n;f=e;e=a[e>>0]|0;while(1){g=f+1|0;e=e&255;k=a[26976+e>>0]|0;i=k&255;switch(k<<24>>24){case 4:{e=65533;break}case 3:{h=f+2|0;e=(e<<6)+(d[g>>0]|0)|0;o=12;break}case 2:{h=g;o=12;break}case 1:{o=13;break}default:o=14}if((o|0)==12){g=h+1|0;e=(e<<6)+(d[h>>0]|0)|0;o=13}if((o|0)==13){o=0;e=(e<<6)+(d[g>>0]|0)-(c[27232+(i<<2)>>2]|0)|0;if((e&-2|0)==65534|((e&-2048|0)==55296?1:(e&c[27248+(i<<2)>>2]|0)==0))e=65533;else o=14}if((o|0)==14){o=0;if(!e)break}g=m;h=a[m>>0]|0;while(1){j=g+1|0;i=h&255;h=a[26976+i>>0]|0;k=h&255;switch(h<<24>>24){case 4:{i=65533;break}case 3:{h=g+2|0;i=(i<<6)+(d[j>>0]|0)|0;o=20;break}case 2:{h=j;o=20;break}case 1:{o=21;break}default:{}}if((o|0)==20){j=h+1|0;i=(i<<6)+(d[h>>0]|0)|0;o=21}if((o|0)==21){o=0;i=(i<<6)+(d[j>>0]|0)-(c[27232+(k<<2)>>2]|0)|0;i=(i&-2|0)==65534|((i&-2048|0)==55296?1:(i&c[27248+(k<<2)>>2]|0)==0)?65533:i}h=(i|0)!=0;if((i|0)==(e|0)|h^1)break;do{g=g+1|0;h=a[g>>0]|0}while((h&-64)<<24>>24==-128)}if(h){e=g;do e=e+1|0;while((a[e>>0]&-64)<<24>>24==-128);e=e-g|0;nv(l,g,e)|0;e=l+e|0}else e=l;do{f=f+1|0;g=a[f>>0]|0}while((g&-64)<<24>>24==-128);l=e;e=g}a[l>>0]=0;Cc(b,n,-1,-1);qb(n);return}Bc(b);return}function ku(b,e,f){b=b|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;t=a[b>>0]|0;if(!(t<<24>>24)){w=-1;return w|0}g=e;n=0;l=a[e>>0]|0;while(1){j=g+1|0;e=l&255;i=a[26976+e>>0]|0;k=i&255;switch(i<<24>>24){case 4:break;case 3:{h=g+2|0;e=(e<<6)+(d[j>>0]|0)|0;w=6;break}case 2:{h=j;w=6;break}case 1:{o=j;m=e;w=7;break}default:{q=e;w=8}}if((w|0)==6){o=h+1|0;m=(e<<6)+(d[h>>0]|0)|0;w=7}if((w|0)==7?(w=0,p=(m<<6)+(d[o>>0]|0)-(c[27232+(k<<2)>>2]|0)|0,!((p&-2|0)==65534|((p&-2048|0)==55296?1:(p&c[27248+(k<<2)>>2]|0)==0))):0){q=p;w=8}if((w|0)==8?(w=0,(q|0)==0):0)break;h=n+1|0;if((n|0)>=(f|0))break;do{g=g+1|0;e=a[g>>0]|0}while((e&-64)<<24>>24==-128);n=h;l=e}e=0;while(1){j=g+1|0;h=l&255;k=i&255;switch(i<<24>>24){case 4:break;case 3:{i=g+2|0;h=(h<<6)+(d[j>>0]|0)|0;w=15;break}case 2:{i=j;w=15;break}case 1:{s=j;r=h;w=16;break}default:{v=h;w=17}}if((w|0)==15){s=i+1|0;r=(h<<6)+(d[i>>0]|0)|0;w=16}if((w|0)==16?(w=0,u=(r<<6)+(d[s>>0]|0)-(c[27232+(k<<2)>>2]|0)|0,!((u&-2|0)==65534|((u&-2048|0)==55296?1:(u&c[27248+(k<<2)>>2]|0)==0))):0){v=u;w=17}if((w|0)==17?(w=0,(v|0)==0):0){e=-1;f=0;break}i=g;j=b;n=l;h=t;while(1){k=j+1|0;h=h&255;q=a[26976+h>>0]|0;m=q&255;switch(q<<24>>24){case 4:{o=65533;break}case 3:{l=j+2|0;h=(h<<6)+(d[k>>0]|0)|0;w=22;break}case 2:{l=k;w=22;break}case 1:{w=23;break}default:o=h}if((w|0)==22){k=l+1|0;h=(h<<6)+(d[l>>0]|0)|0;w=23}if((w|0)==23){w=0;o=(h<<6)+(d[k>>0]|0)-(c[27232+(m<<2)>>2]|0)|0;o=(o&-2|0)==65534|((o&-2048|0)==55296?1:(o&c[27248+(m<<2)>>2]|0)==0)?65533:o}k=i+1|0;h=n&255;q=a[26976+h>>0]|0;m=q&255;switch(q<<24>>24){case 4:{l=65533;break}case 3:{l=i+2|0;h=(h<<6)+(d[k>>0]|0)|0;w=27;break}case 2:{l=k;w=27;break}case 1:{w=28;break}default:l=h}if((w|0)==27){k=l+1|0;h=(h<<6)+(d[l>>0]|0)|0;w=28}if((w|0)==28){w=0;l=(h<<6)+(d[k>>0]|0)-(c[27232+(m<<2)>>2]|0)|0;l=(l&-2|0)==65534|((l&-2048|0)==55296?1:(l&c[27248+(m<<2)>>2]|0)==0)?65533:l}do{j=j+1|0;h=a[j>>0]|0}while((h&-64)<<24>>24==-128);do{i=i+1|0;k=a[i>>0]|0}while((k&-64)<<24>>24==-128);if((l|0)!=0&((o|0)!=0&(o|0)==(l|0)))n=k;else break}if(!o)break;do{g=g+1|0;h=a[g>>0]|0}while((h&-64)<<24>>24==-128);e=e+1|0;l=h;i=a[26976+(h&255)>>0]|0}w=f+e|0;return w|0} -function Mh(f){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,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=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,_=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,Sa=0,Ta=0,Ua=0,Va=0,Ya=0,Za=0,_a=0,$a=0,bb=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0;nb=Ra;Ra=Ra+560|0;lb=nb+416|0;kb=nb+400|0;jb=nb+384|0;ib=nb+368|0;hb=nb+352|0;fb=nb+336|0;eb=nb+320|0;bb=nb+304|0;$a=nb+288|0;mb=nb+272|0;gb=nb+256|0;_a=nb+240|0;da=nb+216|0;la=nb+524|0;va=nb+512|0;La=nb+192|0;Sa=nb+504|0;Ua=nb+160|0;Va=nb+96|0;Ya=nb+64|0;Za=nb+496|0;ea=nb+551|0;fa=nb+32|0;ga=nb;ha=nb+528|0;ia=nb+432|0;ja=nb+538|0;ka=f+20|0;ma=(c[(c[ka>>2]|0)+36>>2]<<1>>>0)/3|0;na=f+68|0;oa=f+116|0;pa=f+124|0;qa=f+70|0;ra=f+72|0;sa=f+120|0;ta=f+3|0;ua=ia+8|0;wa=ja+4|0;ya=Va+4|0;Ca=Va+8|0;Ea=Va+12|0;Fa=Va+16|0;Ga=Va+40|0;Ha=ia+12|0;Ia=ia+4|0;Ja=da+16|0;Ka=da+12|0;Ma=da+18|0;Na=ja;Oa=da+16|0;Pa=da+12|0;Qa=da+18|0;i=0;j=a[na>>0]|0;ca=c[oa>>2]|0;do{g=j<<24>>24;u=ca+20|0;if((c[u>>2]|0)<0?Jh(ca)|0:0){h=0;break}ba=ca+12|0;h=(a[ba>>0]|0)==0;if(!(j<<24>>24)){if(h){h=0;break}c[la>>2]=0;c[va>>2]=0;v=ca+52|0;l=c[v>>2]|0;g=c[ca+72>>2]|0;j=c[g+20>>2]|0;do if((b[g+28>>1]&4)!=0?(c[j+24>>2]|0)>>>0>=(c[g+24>>2]|0)>>>0:0)if(!(c[j+96>>2]|0)){c[da>>2]=0;aa=17;break}else{h=Ve(g)|0;aa=16;break}else aa=11;while(0);do if((aa|0)==11){h=c[j+40>>2]|0;if(h|0){c[da>>2]=h;aa=26;break}if((c[j+148>>2]|0)>>>0>(c[j+152>>2]|0)>>>0){h=Wf(g)|0;aa=16;break}else{h=Xf(g)|0;aa=16;break}}while(0);if((aa|0)==16){c[da>>2]=h;if(!h)aa=17;else aa=26}do if((aa|0)==17){aa=0;j=ca+4|0;h=fg(l,la,va,c[j>>2]|0,0)|0;c[da>>2]=h;k=c[la>>2]|0;w=k;do if(!h){g=c[v>>2]|0;$=c[ca+56>>2]|0;Z=c[k+56>>2]|0;h=d[ca+9>>0]|0;_=(c[k+4>>2]|0)==1?100:0;Y=$+(h+5)|0;Y=d[Y>>0]<<8|d[Y+1>>0];ew(Z+Y|0,$+Y|0,(c[g+36>>2]|0)-Y|0)|0;ew(Z+_|0,$+h|0,(e[ca+24>>1]<<1)+(e[ca+18>>1]|0)|0)|0;a[k>>0]=0;h=Gf(k)|0;if(!h){h=Jh(k)|0;if(!h){if(!(a[g+17>>0]|0)){h=0;break}h=hg(k)|0;c[da>>2]=h;break}}c[da>>2]=h}while(0);if(a[l+17>>0]|0){ig(l,c[va>>2]|0,5,c[j>>2]|0,da);h=c[da>>2]|0}if(h|0){c[pa>>2]=0;if(!k)break;g=c[k+72>>2]|0;if(!(b[g+28>>1]&32)){Df(g);break}else{ba=c[g+20>>2]|0;aa=ba+120|0;c[aa>>2]=(c[aa>>2]|0)+-1;ba=ba+136|0;c[g+16>>2]=c[ba>>2];c[ba>>2]=g;break}}ew(k+28|0,ca+28|0,d[ba>>0]<<1|0)|0;ew(k+36|0,ca+36|0,d[ba>>0]<<2|0)|0;a[k+12>>0]=a[ba>>0]|0;m=a[c[k+56>>2]>>0]&-9;q=ca+56|0;r=c[q>>2]|0;s=c[v>>2]|0;t=ca+9|0;h=d[t>>0]|0;if(!(b[s+22>>1]&12)){g=r+h|0;p=s+36|0}else{p=s+36|0;g=r+h|0;gw(g|0,0,(c[p>>2]|0)-h|0)|0}a[g>>0]=m;n=h+12|0;o=n&65535;g=r+(h+1)|0;a[g>>0]=0;a[g+1>>0]=0;a[g+2>>0]=0;a[g+3>>0]=0;a[r+(h+7)>>0]=0;g=r+(h+5)|0;a[g>>0]=(c[p>>2]|0)>>>8;a[g+1>>0]=c[p>>2];c[u>>2]=(c[p>>2]|0)-n&65535;g=(m&255)>>>3;j=g&255;a[ca+8>>0]=j;g=4-(g<<2)&255;h=ca+10|0;a[h>>0]=g;k=ca+76|0;c[k>>2]=120;l=c[v>>2]|0;switch(m<<24>>24){case 5:{a[ca+2>>0]=1;h=ca+3|0;if(!(j<<24>>24)){a[h>>0]=0;c[k>>2]=121;h=181}else{a[h>>0]=1;h=180}c[ca+80>>2]=h;b[ca+14>>1]=b[l+28>>1]|0;h=l+30|0;aa=41;break}case 2:{a[ca+2>>0]=0;a[ca+3>>0]=0;c[ca+80>>2]=179;b[ca+14>>1]=b[l+24>>1]|0;h=l+26|0;aa=41;break}default:{c[_a>>2]=32306;c[_a+4>>2]=65035;c[_a+8>>2]=31517;Db(11,32001,_a);g=a[h>>0]|0}}if((aa|0)==41){b[ca+16>>1]=b[h>>1]|0;a[ca+11>>0]=a[l+21>>0]|0}b[ca+18>>1]=o;c[ca+60>>2]=r+(c[p>>2]|0);c[ca+64>>2]=r+n;c[ca+68>>2]=r+(g&255);a[ba>>0]=0;b[ca+26>>1]=(c[s+32>>2]|0)+65535;b[ca+24>>1]=0;a[ca>>0]=1;h=(c[q>>2]|0)+((d[t>>0]|0)+8)|0;ba=c[va>>2]|0;a[h>>0]=ba>>>24;a[h+1>>0]=ba>>>16;a[h+2>>0]=ba>>>8;a[h+3>>0]=ba;c[pa>>2]=w;h=0}else if((aa|0)==26)c[pa>>2]=0;while(0);if(h|0)break;a[na>>0]=1;b[qa>>1]=0;b[ra>>1]=0;c[sa>>2]=ca;h=0;j=1;g=pa}else{if(h?(c[u>>2]|0)<=(ma|0):0){h=0;break}m=g+-1|0;$=c[f+120+(m<<2)>>2]|0;m=b[f+72+(m<<1)>>1]|0;n=m&65535;g=c[$+72>>2]|0;k=c[g+20>>2]|0;if((b[g+28>>1]&4)!=0?(c[k+24>>2]|0)>>>0>=(c[g+24>>2]|0)>>>0:0)if(!(c[k+96>>2]|0))aa=56;else{h=Ve(g)|0;aa=55}else aa=51;do if((aa|0)==51){h=c[k+40>>2]|0;if(!h)if((c[k+148>>2]|0)>>>0>(c[k+152>>2]|0)>>>0){h=Wf(g)|0;aa=55;break}else{h=Xf(g)|0;aa=55;break}else aa=523}while(0);if((aa|0)==55)if(!h)aa=56;else aa=523;do if((aa|0)==56){aa=0;if((c[$+20>>2]|0)<0?(xa=Jh($)|0,xa|0):0){h=xa;aa=523;break}if(((((a[ca+3>>0]|0)!=0?(a[ba>>0]|0)==1:0)?(za=b[ca+28>>1]|0,Aa=ca+24|0,za<<16>>16==(b[Aa>>1]|0)):0)?(Ba=$+4|0,(c[Ba>>2]|0)!=1):0)?(Da=$+24|0,(b[Da>>1]|0)==m<<16>>16):0){q=c[ca+52>>2]|0;do if(za<<16>>16){h=fg(q,la,La,0,0)|0;c[va>>2]=h;if(!h){r=c[ca+36>>2]|0;c[Sa>>2]=r;r=Xa[c[ca+76>>2]&255](ca,r)|0;b[Ua>>1]=r;r=c[la>>2]|0;m=c[r+56>>2]|0;s=r+52|0;n=c[s>>2]|0;h=d[r+9>>0]|0;if(!(b[n+22>>1]&12)){g=m+h|0;l=n+36|0}else{l=n+36|0;g=m+h|0;gw(g|0,0,(c[l>>2]|0)-h|0)|0}a[g>>0]=13;_=h+8|0;g=m+(h+1)|0;a[g>>0]=0;a[g+1>>0]=0;a[g+2>>0]=0;a[g+3>>0]=0;a[m+(h+7)>>0]=0;g=m+(h+5)|0;a[g>>0]=(c[l>>2]|0)>>>8;a[g+1>>0]=c[l>>2];g=r+20|0;c[g>>2]=(c[l>>2]|0)-_&65535;a[r+8>>0]=1;a[r+10>>0]=0;c[r+76>>2]=120;k=c[s>>2]|0;a[r+2>>0]=1;a[r+3>>0]=1;o=r+80|0;c[o>>2]=180;b[r+14>>1]=b[k+28>>1]|0;j=r+16|0;b[j>>1]=b[k+30>>1]|0;a[r+11>>0]=a[k+21>>0]|0;k=r+18|0;b[k>>1]=_;p=r+60|0;c[p>>2]=m+(c[l>>2]|0);c[r+64>>2]=m+_;c[r+68>>2]=m;a[r+12>>0]=0;b[r+26>>1]=(c[n+32>>2]|0)+65535;b[r+24>>1]=0;a[r>>0]=1;c[Va>>2]=1;c[ya>>2]=ca;c[Ca>>2]=Sa;c[Ea>>2]=Ua;c[Fa>>2]=c[ca+60>>2];c[Ga>>2]=2;h=Rh(Va,0,1,r)|0;c[va>>2]=h;if(h|0){g=c[r+72>>2]|0;if(!(b[g+28>>1]&32))Df(g);else{$=c[g+20>>2]|0;_=$+120|0;c[_>>2]=(c[_>>2]|0)+-1;$=$+136|0;c[g+16>>2]=c[$>>2];c[$>>2]=g}break}c[g>>2]=(c[q+36>>2]|0)+-2-(e[k>>1]|0)-(e[Ua>>1]|0);do if(a[q+17>>0]|0){ig(q,c[La>>2]|0,5,c[Ba>>2]|0,va);if((e[Ua>>1]|0)<=(e[j>>1]|0))break;j=c[Sa>>2]|0;a:do if(!(c[va>>2]|0)){cb[c[o>>2]&255](r,j,da);h=e[Ja>>1]|0;if((c[Ka>>2]|0)>>>0<=h>>>0)break;g=c[p>>2]|0;do if(g>>>0>=j>>>0){if(g>>>0>=(j+h|0)>>>0)break;c[mb>>2]=32306;c[mb+4>>2]=64569;c[mb+8>>2]=31517;Db(11,32001,mb);c[va>>2]=11;break a}while(0);_=j+((e[Ma>>1]|0)+-4)|0;ig(c[s>>2]|0,d[_+1>>0]<<16|d[_>>0]<<24|d[_+2>>0]<<8|d[_+3>>0],3,c[r+4>>2]|0,va)}while(0)}while(0);k=(c[ca+64>>2]|0)+((e[Aa>>1]<<1)+-2)|0;k=(c[ca+56>>2]|0)+((d[k>>0]<<8|d[k+1>>0])&e[ca+26>>1])|0;c[Sa>>2]=k;g=0;while(1){j=g+1|0;c[Sa>>2]=k+j;if(j>>>0<9&(a[k+g>>0]|0)<0)g=j;else break}l=k+g+10|0;h=wa;g=k+j|0;do{c[Sa>>2]=g+1;_=a[g>>0]|0;Z=h;h=h+1|0;a[Z>>0]=_;g=c[Sa>>2]|0}while(_<<24>>24<0&g>>>0>>0);if(!(c[va>>2]|0))Lh($,e[Da>>1]|0,ja,h-Na|0,0,c[ca+4>>2]|0,va);g=(c[$+56>>2]|0)+((d[$+9>>0]|0)+8)|0;$=c[La>>2]|0;a[g>>0]=$>>>24;a[g+1>>0]=$>>>16;a[g+2>>0]=$>>>8;a[g+3>>0]=$;g=c[la>>2]|0;do if(g|0){g=c[g+72>>2]|0;if(!(b[g+28>>1]&32)){Df(g);break}else{$=c[g+20>>2]|0;_=$+120|0;c[_>>2]=(c[_>>2]|0)+-1;$=$+136|0;c[g+16>>2]=c[$>>2];c[$>>2]=g;break}}while(0);h=c[va>>2]|0}}else{c[gb>>2]=32306;c[gb+4>>2]=70410;c[gb+8>>2]=31517;Db(11,32001,gb);h=11}while(0)}else aa=95;b:do if((aa|0)==95){aa=0;l=c[(c[ka>>2]|0)+32>>2]|0;if((c[14813]|0)>=(l|0)?(Ta=c[14819]|0,(Ta|0)!=0):0){c[14819]=c[Ta>>2];_=c[14820]|0;c[14820]=_+-1;c[14821]=(_|0)<=(c[14815]|0)&1;if((c[14986]|0)>>>0>>0)c[14986]=l;g=(c[14979]|0)+1|0;c[14979]=g;if(g>>>0>(c[14983]|0)>>>0){c[14983]=g;_=Ta}else _=Ta}else aa=101;do if((aa|0)==101){aa=0;_=Sv(l|0,((l|0)<0)<<31>>31|0,-1,-1)|0;Z=L()|0;if(!(Z>>>0>0|(Z|0)==0&_>>>0>2147483390)){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](l)|0;if(!g){_=0;break}}else{g=Wa[c[29356>>2]&127](l)|0;if((c[14985]|0)>>>0>>0)c[14985]=l;k=59064;h=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&h>>>0>0){_=c[14978]|0;Z=Tv(h|0,k|0,g|0,((g|0)<0)<<31>>31|0)|0;Y=L()|0;c[14768]=((Y|0)<0|(Y|0)==0&Z>>>0<=_>>>0)&1}g=Wa[c[29340>>2]&127](g)|0;if(!g){_=0;break}h=Wa[c[29352>>2]&127](g)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0)c[14987]=h}h=Wa[c[29352>>2]&127](g)|0;if((c[14986]|0)>>>0>>0)c[14986]=l;h=(c[14980]|0)+h|0;c[14980]=h;if(h>>>0>(c[14984]|0)>>>0){c[14984]=h;_=g}else _=g}else _=0}while(0);W=j<<24>>24==1;I=a[ta>>0]&1;j=I&255;c[la>>2]=0;a[ea>>0]=0;a[ea+1>>0]=0;a[ea+2>>0]=0;a[ea+3>>0]=0;a[ea+4>>0]=0;c[ia>>2]=0;c[ua>>2]=0;Y=c[$+52>>2]|0;if(!_)h=7;else{x=$+12|0;k=d[x>>0]|0;X=$+24|0;l=e[X>>1]|0;g=l+k|0;if(g>>>0<2)h=0;else{do if(m<<16>>16)if((g|0)==(n|0)){h=(j|-2)+n|0;break}else{h=n+-1|0;break}else h=0;while(0);g=2-j|0}Z=g+1|0;j=h-k+g|0;V=$+56|0;if((j|0)==(l|0))j=(d[$+9>>0]|0)+8|0;else{j=(c[$+64>>2]|0)+(j<<1)|0;j=(d[j>>0]<<8|d[j+1>>0])&e[$+26>>1]}K=(c[V>>2]|0)+j|0;M=K+1|0;N=K+2|0;O=K+3|0;k=d[M>>0]<<16|d[K>>0]<<24|d[N>>0]<<8|d[O>>0];c[Za>>2]=k;j=va+(g<<2)|0;U=yh(Y,k,j,0,0)|0;c[la>>2]=U;c:do if(!U){s=$+26|0;t=$+64|0;S=$+76|0;u=Y+22|0;v=$+28|0;D=Y+36|0;w=$+36|0;r=g;while(1){j=c[j>>2]|0;if((c[j+20>>2]|0)<0?(U=Jh(j)|0,c[la>>2]=U,U|0):0){aa=133;break}q=r+-1|0;if(!r){aa=144;break}j=a[x>>0]|0;p=q+h|0;do if(!(j<<24>>24))aa=138;else{if((p|0)!=(e[v>>1]|0)){aa=138;break}U=c[w>>2]|0;c[Sa+(q<<2)>>2]=U;k=d[U+1>>0]<<16|d[U>>0]<<24|d[U+2>>0]<<8|d[U+3>>0];U=(Xa[c[S>>2]&255]($,U)|0)&65535;c[Ya+(q<<2)>>2]=U;a[x>>0]=0}while(0);if((aa|0)==138){aa=0;j=(c[t>>2]|0)+(p-(j&255)<<1)|0;j=(c[V>>2]|0)+((d[j>>0]<<8|d[j+1>>0])&e[s>>1])|0;l=Sa+(q<<2)|0;c[l>>2]=j;k=d[j+1>>0]<<16|d[j>>0]<<24|d[j+2>>0]<<8|d[j+3>>0];m=(Xa[c[S>>2]&255]($,j)|0)&65535;c[Ya+(q<<2)>>2]=m;n=j;if(b[u>>1]&12){o=n-(c[V>>2]|0)|0;if((o+m|0)>(c[D>>2]|0)){aa=141;break}ew(_+o|0,j|0,m|0)|0;c[l>>2]=_+(n-(c[V>>2]|0))}Kh($,p-(d[x>>0]|0)|0,m,la)}j=va+(q<<2)|0;U=yh(Y,k,j,0,0)|0;c[la>>2]=U;if(U|0){aa=129;break}else r=q}if((aa|0)==129){c[Za>>2]=k;g=q;aa=130;break}else if((aa|0)==133){aa=0;c[Za>>2]=k;gw(va|0,0,r<<2|0)|0;g=0;break}else if((aa|0)==141){aa=0;c[Za>>2]=k;c[$a>>2]=32306;c[$a+4>>2]=70767;c[$a+8>>2]=31517;Db(11,32001,$a);c[la>>2]=11;gw(va|0,0,r<<2|0)|0;g=0;break}else if((aa|0)==144){aa=0;c[Za>>2]=k;j=c[Y+32>>2]|0;m=(G((((j+-8|0)>>>0)/6|0)+4|0,Z)|0)+3&-4;j=(m*6|0)+j|0;U=Sv(j|0,((j|0)<0)<<31>>31|0,-1,-1)|0;T=L()|0;do if(T>>>0>0|(T|0)==0&U>>>0>2147483390)aa=155;else{if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](j)|0;c[ua>>2]=j;if(!j)break}else{l=Wa[c[29356>>2]&127](j)|0;if((c[14985]|0)>>>0>>0)c[14985]=j;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){U=c[14978]|0;T=Tv(j|0,k|0,l|0,((l|0)<0)<<31>>31|0)|0;R=L()|0;c[14768]=((R|0)<0|(R|0)==0&T>>>0<=U>>>0)&1}j=Wa[c[29340>>2]&127](l)|0;if(!j){aa=155;break}k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0)c[14987]=k;c[ua>>2]=j}r=j+(m<<2)|0;c[Ha>>2]=r;A=r+(m<<1)|0;p=c[va>>2]|0;c[Ia>>2]=p;R=d[p+8>>0]<<2;U=R&65535;C=a[p+3>>0]|0;E=C&255;F=p+56|0;B=C<<24>>24!=0;w=c[F>>2]|0;u=p+18|0;m=e[u>>1]|0;j=0;z=0;y=p;l=w+m|0;x=F;while(1){t=y+24|0;v=b[y+26>>1]|0;k=c[ia>>2]|0;s=y+12|0;gw(r+(k<<1)|0,0,(d[s>>0]|0)+(e[t>>1]|0)<<1|0)|0;s=a[s>>0]|0;if(s<<24>>24){T=b[y+28>>1]|0;r=T&65535;if(T<<16>>16){q=v&65535;o=(r<<1)+m|0;n=0;m=k;while(1){c[(c[ua>>2]|0)+(m<<2)>>2]=w+((d[l>>0]<<8|d[l+1>>0])&q);m=m+1|0;c[ia>>2]=m;n=n+1|0;if((n|0)==(r|0))break;else l=l+2|0}l=w+o|0;k=k+r|0}n=s&255;m=0;o=k;while(1){c[(c[ua>>2]|0)+(o<<2)>>2]=c[y+36+(m<<2)>>2];m=m+1|0;if((m|0)==(n|0))break;else o=o+1|0}k=k+n|0;c[ia>>2]=k}n=e[u>>1]|0;m=e[t>>1]<<1;q=w+n+m|0;if(l>>>0>>0){o=v&65535;n=(w+-1+(m+n-l)|0)>>>1;m=k;do{c[(c[ua>>2]|0)+(m<<2)>>2]=w+((d[l>>0]<<8|d[l+1>>0])&o);l=l+2|0;m=m+1|0;c[ia>>2]=m}while(l>>>0>>0);k=k+1+n|0}c[Va+(z<<2)>>2]=k;if(!(B|(z|0)>=(g|0))){l=c[Ya+(z<<2)>>2]|0;b[(c[Ha>>2]|0)+(k<<1)>>1]=l;T=A+j|0;l=l&65535;j=l+j|0;ew(T|0,c[Sa+(z<<2)>>2]|0,l|0)|0;c[(c[ua>>2]|0)+(k<<2)>>2]=T+R;T=(c[Ha>>2]|0)+(k<<1)|0;l=(e[T>>1]|0)-R&65535;b[T>>1]=l;do if(!(a[y+8>>0]|0)){k=c[(c[ua>>2]|0)+(k<<2)>>2]|0;T=(c[x>>2]|0)+8|0;T=d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24;a[k>>0]=T;a[k+1>>0]=T>>8;a[k+2>>0]=T>>16;a[k+3>>0]=T>>24;k=c[ia>>2]|0}else{if((l&65535)>=4)break;while(1){l=j+1|0;a[A+j>>0]=0;k=c[ia>>2]|0;Q=(c[Ha>>2]|0)+(k<<1)|0;T=(b[Q>>1]|0)+1<<16>>16;b[Q>>1]=T;if((T&65535)<4)j=l;else{j=l;break}}}while(0);c[ia>>2]=k+1}l=z+1|0;if((z|0)>=(g|0))break;k=c[va+(l<<2)>>2]|0;q=k+56|0;n=c[q>>2]|0;o=k+18|0;m=e[o>>1]|0;if((a[n>>0]|0)!=(a[c[F>>2]>>0]|0)){aa=179;break}z=l;y=k;l=n+m|0;r=c[Ha>>2]|0;w=n;u=o;x=q}if((aa|0)==179){aa=0;c[bb>>2]=32306;c[bb+4>>2]=70833;c[bb+8>>2]=31517;Db(11,32001,bb);c[la>>2]=11;g=0;break c}T=R+-12+(c[D>>2]|0)|0;J=C<<24>>24==0;s=$+60|0;d:do if(J){k=0;r=0;while(1){c[ia+16+(k<<2)>>2]=c[p+60>>2];q=c[Va+(r<<2)>>2]|0;c[ia+40+(k<<2)>>2]=q;j=k+-1|0;if(!k)o=0;else o=(q|0)==(c[ia+40+(j<<2)>>2]|0)?j:k;j=o+1|0;c[ia+16+(j<<2)>>2]=c[s>>2];c[ia+40+(j<<2)>>2]=q+1;j=T-(c[p+20>>2]|0)|0;l=Ya+(r<<2)|0;c[l>>2]=j;m=p+12|0;if(a[m>>0]|0){n=p+76|0;k=0;do{j=j+2+((Xa[c[n>>2]&255](p,c[p+36+(k<<2)>>2]|0)|0)&65535)|0;c[l>>2]=j;k=k+1|0}while(k>>>0<(d[m>>0]|0)>>>0)}c[Ua+(r<<2)>>2]=q;j=r+1|0;if((j|0)==(Z|0))break d;k=o+2|0;r=j;p=c[va+(j<<2)>>2]|0}}else{k=0;r=0;while(1){c[ia+16+(k<<2)>>2]=c[p+60>>2];q=c[Va+(r<<2)>>2]|0;c[ia+40+(k<<2)>>2]=q;j=k+-1|0;if(!k)o=0;else o=(q|0)==(c[ia+40+(j<<2)>>2]|0)?j:k;j=T-(c[p+20>>2]|0)|0;l=Ya+(r<<2)|0;c[l>>2]=j;m=p+12|0;if(a[m>>0]|0){n=p+76|0;k=0;do{j=j+2+((Xa[c[n>>2]&255](p,c[p+36+(k<<2)>>2]|0)|0)&65535)|0;c[l>>2]=j;k=k+1|0}while(k>>>0<(d[m>>0]|0)>>>0)}c[Ua+(r<<2)>>2]=q;j=r+1|0;if((j|0)==(Z|0))break d;k=o+1|0;r=j;p=c[va+(j<<2)>>2]|0}}while(0);e:do if((g|0)>-1){o=Z;j=0;f:while(1){u=Ya+(j<<2)|0;l=c[u>>2]|0;g:do if((l|0)>(T|0)){p=j+1|0;t=Ua+(j<<2)|0;q=j+2|0;s=Ya+(p<<2)|0;r=Ua+(p<<2)|0;if(q>>>0>5){if((p|0)>=(o|0)){aa=232;break f}k=c[t>>2]|0;if(!J){m=l;while(1){k=k+-1|0;l=b[(c[Ha>>2]|0)+(k<<1)>>1]|0;if(!(l<<16>>16))l=Sh(ia,k)|0;Q=(l&65535)+2|0;l=m-Q|0;c[u>>2]=l;c[s>>2]=(c[s>>2]|0)+Q;c[t>>2]=k;if((l|0)>(T|0))m=l;else{r=o;q=t;break g}}}n=k;m=l;while(1){k=n+-1|0;l=b[(c[Ha>>2]|0)+(k<<1)>>1]|0;if(!(l<<16>>16))l=Sh(ia,k)|0;m=m-((l&65535)+2)|0;c[u>>2]=m;if((n|0)<(c[ia>>2]|0)){l=b[(c[Ha>>2]|0)+(n<<1)>>1]|0;if(!(l<<16>>16))l=Sh(ia,n)|0;l=(l&65535)+2|0}else l=0;c[s>>2]=(c[s>>2]|0)+l;c[t>>2]=k;if((m|0)>(T|0))n=k;else{r=o;q=t;l=m;break g}}}if(!J){k=o;while(1){if((p|0)<(k|0))n=k;else{c[s>>2]=0;c[r>>2]=c[ia>>2];n=q}k=(c[t>>2]|0)+-1|0;m=b[(c[Ha>>2]|0)+(k<<1)>>1]|0;if(!(m<<16>>16))m=Sh(ia,k)|0;Q=(m&65535)+2|0;l=l-Q|0;c[u>>2]=l;c[s>>2]=(c[s>>2]|0)+Q;c[t>>2]=k;if((l|0)>(T|0))k=n;else{r=n;q=t;break g}}}k=o;while(1){if((p|0)<(k|0))o=k;else{c[s>>2]=0;c[r>>2]=c[ia>>2];o=q}n=c[t>>2]|0;k=n+-1|0;m=b[(c[Ha>>2]|0)+(k<<1)>>1]|0;if(!(m<<16>>16))m=Sh(ia,k)|0;l=l+-2-(m&65535)|0;c[u>>2]=l;if((n|0)<(c[ia>>2]|0)){m=b[(c[Ha>>2]|0)+(n<<1)>>1]|0;if(!(m<<16>>16))m=Sh(ia,n)|0;m=(m&65535)+2|0}else m=0;c[s>>2]=(c[s>>2]|0)+m;c[t>>2]=k;if((l|0)>(T|0))k=o;else{r=o;q=t;break}}}else{k=Ua+(j<<2)|0;r=o;q=k;k=c[k>>2]|0}while(0);h:do if((k|0)<(c[ia>>2]|0)){p=Ya+(j+1<<2)|0;if(!J){m=l;while(1){l=b[(c[Ha>>2]|0)+(k<<1)>>1]|0;if(!(l<<16>>16))l=Sh(ia,k)|0;l=(l&65535)+2|0;m=l+m|0;if((m|0)>(T|0))break h;c[u>>2]=m;k=k+1|0;c[q>>2]=k;c[p>>2]=(c[p>>2]|0)-l;if((k|0)>=(c[ia>>2]|0))break h}}o=l;do{l=b[(c[Ha>>2]|0)+(k<<1)>>1]|0;if(!(l<<16>>16))l=Sh(ia,k)|0;o=o+2+(l&65535)|0;if((o|0)>(T|0))break h;c[u>>2]=o;k=k+1|0;c[q>>2]=k;m=c[ia>>2]|0;if((k|0)<(m|0)){l=b[(c[Ha>>2]|0)+(k<<1)>>1]|0;if(!(l<<16>>16)){l=Sh(ia,k)|0;m=c[ia>>2]|0}n=(l&65535)+2|0;l=m}else{n=0;l=m}c[p>>2]=(c[p>>2]|0)-n}while((k|0)<(l|0))}while(0);if((k|0)>=(c[ia>>2]|0)){aa=254;break}if(!j)l=0;else l=c[Ua+(j+-1<<2)>>2]|0;if((k|0)<=(l|0)){aa=258;break}j=j+1|0;if((j|0)<(r|0))o=r;else{H=r;break e}}if((aa|0)==232){aa=0;c[eb>>2]=32306;c[eb+4>>2]=70953;c[eb+8>>2]=31517;Db(11,32001,eb);c[la>>2]=11;g=0;break c}else if((aa|0)==254){aa=0;H=j+1|0;break}else if((aa|0)==258){aa=0;c[fb>>2]=32306;c[fb+4>>2]=70986;c[fb+8>>2]=31517;Db(11,32001,fb);c[la>>2]=11;g=0;break c}}else H=Z;while(0);t=H+-1|0;i:do if((H|0)>1){j=c[Ya+(t<<2)>>2]|0;j:do if(!(I<<24>>24)){x=t;m=c[Ha>>2]|0;while(1){u=Ya+(x<<2)|0;w=x;x=x+-1|0;v=Ya+(x<<2)|0;n=c[v>>2]|0;s=Ua+(x<<2)|0;l=c[s>>2]|0;k=l-E|0;if(!(b[m+(k<<1)>>1]|0)){Sh(ia,k)|0;m=c[Ha>>2]|0}r=(w|0)==(t|0)?0:-2;while(1){q=l+-1|0;if(!(b[m+(q<<1)>>1]|0)){Sh(ia,q)|0;m=c[Ha>>2]|0}o=b[m+(k<<1)>>1]|0;if(j){p=j+2+(o&65535)|0;o=e[m+(q<<1)>>1]|0;if((p|0)>(n+r-o|0))break;else j=p}else{j=(o&65535)+2|0;o=e[m+(q<<1)>>1]|0}n=n+-2-o|0;c[s>>2]=q;if((l|0)>1){k=k+-1|0;l=q}else{l=q;break}}c[u>>2]=j;c[v>>2]=n;k=(w|0)>1;if(k)j=c[Ua+(w+-2<<2)>>2]|0;else j=0;if((l|0)<=(j|0))break j;if(!k)break i;else j=n}}else while(1){q=Ya+(t<<2)|0;s=t;t=t+-1|0;r=Ya+(t<<2)|0;m=c[r>>2]|0;p=Ua+(t<<2)|0;n=c[p>>2]|0;l=n-E|0;k=c[Ha>>2]|0;if(!(b[k+(l<<1)>>1]|0)){Sh(ia,l)|0;k=c[Ha>>2]|0}o=l;while(1){l=n+-1|0;if(!(b[k+(l<<1)>>1]|0))Sh(ia,l)|0;if(j|0){l=n;break}k=c[Ha>>2]|0;j=(e[k+(o<<1)>>1]|0)+2|0;m=m+-2-(e[k+(l<<1)>>1]|0)|0;c[p>>2]=l;if((n|0)<=1)break;else{o=o+-1|0;n=l}}c[q>>2]=j;c[r>>2]=m;k=(s|0)>1;if(k)j=c[Ua+(s+-2<<2)>>2]|0;else j=0;if((l|0)<=(j|0))break j;if(!k)break i;else j=m}while(0);c[hb>>2]=32306;c[hb+4>>2]=71028;c[hb+8>>2]=31517;Db(11,32001,hb);c[la>>2]=11;g=0;break c}while(0);D=a[c[F>>2]>>0]|0;F=D&255;do if((H|0)>0){v=I<<24>>24==0;w=F>>>1&4^12;y=F>>>3;x=y&255;y=4-(y<<2)&255;C=F&247;z=Y+17|0;A=x<<24>>24==0;B=$+4|0;t=0;u=0;k:while(1){l:do if((u|0)>(g|0)){Q=fg(Y,da,Za,v?c[Za>>2]|0:1,0)|0;c[la>>2]=Q;if(Q|0){g=t;break k}s=c[da>>2]|0;p=c[s+56>>2]|0;l=s+52|0;q=c[l>>2]|0;k=d[s+9>>0]|0;r=s;if(!(b[q+22>>1]&12)){j=p+k|0;o=q+36|0}else{o=q+36|0;j=p+k|0;gw(j|0,0,(c[o>>2]|0)-k|0)|0}a[j>>0]=D;m=w+k|0;n=m&65535;j=p+(k+1)|0;a[j>>0]=0;a[j+1>>0]=0;a[j+2>>0]=0;a[j+3>>0]=0;a[p+(k+7)>>0]=0;j=p+(k+5)|0;a[j>>0]=(c[o>>2]|0)>>>8;a[j+1>>0]=c[o>>2];c[s+20>>2]=(c[o>>2]|0)-m&65535;a[s+8>>0]=x;j=s+10|0;a[j>>0]=y;k=s+76|0;c[k>>2]=120;l=c[l>>2]|0;switch(C<<24>>24){case 5:{a[s+2>>0]=1;j=s+3|0;if(A){a[j>>0]=0;c[k>>2]=121;j=181}else{a[j>>0]=1;j=180}c[s+80>>2]=j;b[s+14>>1]=b[l+28>>1]|0;j=l+30|0;aa=314;break}case 2:{a[s+2>>0]=0;a[s+3>>0]=0;c[s+80>>2]=179;b[s+14>>1]=b[l+24>>1]|0;j=l+26|0;aa=314;break}default:{c[ib>>2]=32306;c[ib+4>>2]=65035;c[ib+8>>2]=31517;Db(11,32001,ib);j=a[j>>0]|0}}if((aa|0)==314){aa=0;b[s+16>>1]=b[j>>1]|0;a[s+11>>0]=a[l+21>>0]|0;j=y}b[s+18>>1]=n;c[s+60>>2]=p+(c[o>>2]|0);c[s+64>>2]=p+m;c[s+68>>2]=p+(j&255);a[s+12>>0]=0;b[s+26>>1]=(c[q+32>>2]|0)+65535;b[s+24>>1]=0;a[s>>0]=1;c[La+(u<<2)>>2]=r;j=t+1|0;c[Va+(u<<2)>>2]=c[ia>>2];if(!(a[z>>0]|0)){E=j;break}ig(Y,c[s+4>>2]|0,5,c[B>>2]|0,la);if(!(c[la>>2]|0))E=j;else{g=j;break k}}else{k=va+(u<<2)|0;j=c[k>>2]|0;c[La+(u<<2)>>2]=j;c[da>>2]=j;c[k>>2]=0;j=c[j+72>>2]|0;k=c[j+20>>2]|0;do if(b[j+28>>1]&4){if((c[k+24>>2]|0)>>>0<(c[j+24>>2]|0)>>>0){aa=297;break}if(!(c[k+96>>2]|0)){c[la>>2]=0;E=t+1|0;break l}else{k=Ve(j)|0;break}}else aa=297;while(0);do if((aa|0)==297){aa=0;l=c[k+40>>2]|0;if(l|0){aa=298;break k}if((c[k+148>>2]|0)>>>0>(c[k+152>>2]|0)>>>0){k=Wf(j)|0;break}else{k=Xf(j)|0;break}}while(0);c[la>>2]=k;j=t+1|0;if(!k)E=j;else{g=j;break k}}while(0);u=u+1|0;if((u|0)>=(H|0)){aa=319;break}else t=E}if((aa|0)==298){aa=0;c[la>>2]=l;g=t+1|0}else if((aa|0)==319){aa=0;if((E|0)<=0){Q=0;break}k=0;m:do{Q=c[La+(k<<2)>>2]|0;l=c[Q+4>>2]|0;c[fa+(k<<2)>>2]=l;c[ga+(k<<2)>>2]=l;b[ha+(k<<1)>>1]=b[(c[Q+72>>2]|0)+28>>1]|0;if(k|0){j=0;do{if((c[fa+(j<<2)>>2]|0)==(l|0)){aa=325;break m}j=j+1|0}while(j>>>0>>0)}k=k+1|0}while((k|0)<(E|0));if((aa|0)==325){aa=0;c[jb>>2]=32306;c[jb+4>>2]=71102;c[jb+8>>2]=31517;Db(11,32001,jb);c[la>>2]=11;g=E;break c}x=(E|0)==1;y=Y+44|0;w=0;do{if(x)j=0;else{j=0;k=1;do{j=(c[ga+(k<<2)>>2]|0)>>>0<(c[ga+(j<<2)>>2]|0)>>>0?k:j;k=k+1|0}while((k|0)<(E|0))}Q=ga+(j<<2)|0;v=c[Q>>2]|0;c[Q>>2]=-1;if((j|0)!=(w|0)){do if((j|0)>(w|0)){t=c[(c[La+(j<<2)>>2]|0)+72>>2]|0;P=j+1+(c[y>>2]|0)|0;u=t+28|0;b[u>>1]=0;k=t+12|0;Q=t+24|0;db[c[29444>>2]&127](c[(c[k>>2]|0)+44>>2]|0,c[t>>2]|0,c[Q>>2]|0,P);c[Q>>2]=P;u=b[u>>1]|0;if((u&10)!=10)break;q=c[k>>2]|0;s=q+8|0;k=c[s>>2]|0;p=t+36|0;m=c[p>>2]|0;if((k|0)==(t|0)){c[s>>2]=m;r=m}else r=k;o=t+32|0;l=c[o>>2]|0;n=(l|0)==0;if(n){c[q+4>>2]=m;k=m}else{c[l+36>>2]=m;k=c[p>>2]|0}do if(!k){c[q>>2]=l;if(n){a[q+33>>0]=2;c[p>>2]=0;c[o>>2]=0;k=q;aa=345;break}else{c[p>>2]=0;k=q;aa=344;break}}else{c[k+32>>2]=l;l=c[q>>2]|0;c[p>>2]=0;c[o>>2]=l;if(!l){k=q;aa=345}else{k=q;aa=344}}while(0);do if((aa|0)==344){aa=0;c[l+36>>2]=t}else if((aa|0)==345){aa=0;c[q+4>>2]=t;if(!(a[q+32>>0]|0))break;a[q+33>>0]=1}while(0);c[k>>2]=t;if(!((u&8)==0&(r|0)==0))break;c[s>>2]=t}while(0);t=La+(w<<2)|0;u=c[(c[t>>2]|0)+72>>2]|0;s=u+28|0;b[s>>1]=b[ha+(j<<1)>>1]|0;j=u+12|0;Q=u+24|0;db[c[29444>>2]&127](c[(c[j>>2]|0)+44>>2]|0,c[u>>2]|0,c[Q>>2]|0,v);c[Q>>2]=v;s=b[s>>1]|0;do if((s&10)==10){p=c[j>>2]|0;r=p+8|0;j=c[r>>2]|0;o=u+36|0;l=c[o>>2]|0;if((j|0)==(u|0)){c[r>>2]=l;q=l}else q=j;n=u+32|0;k=c[n>>2]|0;m=(k|0)==0;if(m){c[p+4>>2]=l;j=l}else{c[k+36>>2]=l;j=c[o>>2]|0}do if(!j){c[p>>2]=k;if(m){a[p+33>>0]=2;c[o>>2]=0;c[n>>2]=0;j=p;aa=361;break}else{c[o>>2]=0;j=p;aa=360;break}}else{c[j+32>>2]=k;k=c[p>>2]|0;c[o>>2]=0;c[n>>2]=k;if(!k){j=p;aa=361}else{j=p;aa=360}}while(0);do if((aa|0)==360){aa=0;c[k+36>>2]=u}else if((aa|0)==361){aa=0;c[p+4>>2]=u;if(!(a[p+32>>0]|0))break;a[p+33>>0]=1}while(0);c[j>>2]=u;if(!((s&8)==0&(q|0)==0))break;c[r>>2]=u}while(0);c[(c[t>>2]|0)+4>>2]=v}w=w+1|0}while((w|0)!=(E|0));c[Za>>2]=v;Q=1;break}break c}else{E=0;Q=0}while(0);v=E+-1|0;j=c[La+(v<<2)>>2]|0;P=c[j+4>>2]|0;a[K>>0]=P>>>24;a[M>>0]=P>>>16;a[N>>0]=P>>>8;a[O>>0]=P;if(!((F&8|0)!=0|(Z|0)==(E|0))){P=(c[j+56>>2]|0)+8|0;O=(c[(c[((E|0)>(Z|0)?La:va)+(g<<2)>>2]|0)+56>>2]|0)+8|0;O=d[O>>0]|d[O+1>>0]<<8|d[O+2>>0]<<16|d[O+3>>0]<<24;a[P>>0]=O;a[P+1>>0]=O>>8;a[P+2>>0]=O>>16;a[P+3>>0]=O>>24}P=Y+17|0;do if(a[P>>0]|0){j=c[La>>2]|0;k=c[ia>>2]|0;if((k|0)<=0)break;t=J&1;u=U<<16>>16==0;q=0;l=0;n=(e[j+24>>1]|0)+(d[j+12>>0]|0)|0;p=j;o=j;s=0;while(1){r=c[(c[ua>>2]|0)+(s<<2)>>2]|0;if((s|0)==(n|0)){n=s+t|0;j=q;do{j=j+1|0;o=c[((j|0)<(E|0)?La+(j<<2)|0:va+(j<<2)|0)>>2]|0;m=n+(e[o+24>>1]|0)+(d[o+12>>0]|0)|0}while((s|0)==(m|0));n=m}else j=q;if((s|0)==(c[Ua+(l<<2)>>2]|0)){l=l+1|0;m=c[La+(l<<2)>>2]|0;if(!J){p=m;aa=378}}else aa=378;n:do if((aa|0)==378){aa=0;do if((j|0)<(E|0)){if((c[p+4>>2]|0)!=(c[fa+(j<<2)>>2]|0))break;m=r;if((c[o+56>>2]|0)>>>0>m>>>0)break;if((c[o+60>>2]|0)>>>0>m>>>0){m=p;break n}}while(0);if(u)ig(Y,d[r+1>>0]<<16|d[r>>0]<<24|d[r+2>>0]<<8|d[r+3>>0],5,c[p+4>>2]|0,la);k=b[(c[Ha>>2]|0)+(s<<1)>>1]|0;if(!(k<<16>>16))k=Sh(ia,s)|0;if((k&65535)>(e[p+16>>1]|0))o:do if(!(c[la>>2]|0)){cb[c[p+80>>2]&255](p,r,da);k=e[Oa>>1]|0;if((c[Pa>>2]|0)>>>0<=k>>>0)break;m=c[o+60>>2]|0;do if(m>>>0>=r>>>0){if(m>>>0>=(r+k|0)>>>0)break;c[kb>>2]=32306;c[kb+4>>2]=64569;c[kb+8>>2]=31517;Db(11,32001,kb);c[la>>2]=11;break o}while(0);O=r+((e[Qa>>1]|0)+-4)|0;ig(c[p+52>>2]|0,d[O+1>>0]<<16|d[O>>0]<<24|d[O+2>>0]<<8|d[O+3>>0],3,c[p+4>>2]|0,la)}while(0);if(c[la>>2]|0){g=E;break c}m=p;k=c[ia>>2]|0}while(0);s=s+1|0;if((s|0)>=(k|0))break;else{q=j;p=m}}}while(0);p:do if((E|0)>1){if(J){m=0;n=0;while(1){o=c[La+(n<<2)>>2]|0;l=c[Ua+(n<<2)>>2]|0;j=c[(c[ua>>2]|0)+(l<<2)>>2]|0;l=b[(c[Ha>>2]|0)+(l<<1)>>1]|0;k=R+(l&65535)|0;p=_+m|0;do if(!(a[o+8>>0]|0)){O=(c[o+56>>2]|0)+8|0;N=d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24;a[O>>0]=N;a[O+1>>0]=N>>8;a[O+2>>0]=N>>16;a[O+3>>0]=N>>24}else{j=j+-4|0;if(l<<16>>16!=4)break;k=(Xa[c[S>>2]&255]($,j)|0)&65535}while(0);Lh($,n+h|0,j,k,p,c[o+4>>2]|0,la);if(c[la>>2]|0){g=E;break c}n=n+1|0;if((n|0)>=(v|0))break p;else m=k+m|0}}n=0;o=0;while(1){p=c[La+(o<<2)>>2]|0;k=c[Ua+(o<<2)>>2]|0;l=c[ua>>2]|0;j=c[l+(k<<2)>>2]|0;m=_+n|0;if(!(a[p+8>>0]|0)){k=R+(e[(c[Ha>>2]|0)+(k<<1)>>1]|0)|0;l=(c[p+56>>2]|0)+8|0;S=d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24;a[l>>0]=S;a[l+1>>0]=S>>8;a[l+2>>0]=S>>16;a[l+3>>0]=S>>24;l=m}else{cb[c[p+80>>2]&255](p,c[l+(k+-1<<2)>>2]|0,da);j=m+4|0;l=da;k=c[l>>2]|0;l=c[l+4>>2]|0;do if(!(l>>>0<0|(l|0)==0&k>>>0<128))if(l>>>0<0|(l|0)==0&k>>>0<16384){S=bw(k|0,l|0,7)|0;L()|0;a[j>>0]=S&255|-128;a[j+1>>0]=k&127;j=2;break}else{j=wh(j,k,l)|0;break}else{a[j>>0]=k&127;j=1}while(0);k=j+4|0;l=0;j=m}Lh($,o+h|0,j,k,l,c[p+4>>2]|0,la);if(c[la>>2]|0){g=E;break c}o=o+1|0;if((o|0)>=(v|0))break;else n=k+n|0}}while(0);h=1-E|0;q:do if((h|0)<(E|0)){O=c[Ua>>2]|0;N=J&1;r:while(1){K=(h|0)<0?0-h|0:h;M=ea+K|0;do if(!(a[M>>0]|0)){if((h|0)<=-1?(S=K+-1|0,(c[Va+(S<<2)>>2]|0)<(c[Ua+(S<<2)>>2]|0)):0)break;if(!K){J=O;k=0;H=0}else{if((K|0)>(g|0)){j=K+-1|0;k=c[ia>>2]|0}else{k=K+-1|0;j=k;k=(c[Va+(k<<2)>>2]|0)+N|0}H=(c[Ua+(j<<2)>>2]|0)+N|0;J=(c[Ua+(K<<2)>>2]|0)-H|0}I=c[La+(K<<2)>>2]|0;w=I+56|0;z=c[w>>2]|0;x=I+9|0;A=d[x>>0]|0;B=I+64|0;C=(c[B>>2]|0)+(J<<1)|0;D=I+24|0;v=e[D>>1]|0;F=I+12|0;y=k+v+(d[F>>0]|0)|0;q=J+H|0;if((k|0)<(H|0)){s=z+(c[(c[I+52>>2]|0)+36>>2]|0)|0;t=z+(A+8+(d[I+10>>0]|0))|0;u=z;j=0;l=0;m=0;r=k;while(1){p=c[(c[ua>>2]|0)+(r<<2)>>2]|0;if(p>>>0>=t>>>0&p>>>0>>0){n=e[(c[Ha>>2]|0)+(r<<1)>>1]|0;o=p+n|0;if((m|0)!=(o|0)){if(m|0)Oh(I,m-u&65535,l&65535)|0;if(o>>>0>s>>>0){j=0;break}else l=n}else l=l+n|0;j=j+1|0;m=p}r=r+1|0;if((r|0)>=(H|0)){aa=437;break}}if((aa|0)==437){aa=0;if(m|0)Oh(I,m-u&65535,l&65535)|0;if((j|0)>(v|0))break r}u=c[B>>2]|0;fw(u|0,u+(j<<1)|0,v<<1|0)|0;u=v-j|0}else u=v;if((y|0)>(q|0)){s=c[w>>2]|0;t=s+(c[(c[I+52>>2]|0)+36>>2]|0)|0;r=s+((d[x>>0]|0)+8+(d[I+10>>0]|0))|0;j=0;l=0;m=0;while(1){p=c[(c[ua>>2]|0)+(q<<2)>>2]|0;if(p>>>0>=r>>>0&p>>>0>>0){n=e[(c[Ha>>2]|0)+(q<<1)>>1]|0;o=p+n|0;if((m|0)!=(o|0)){if(m|0)Oh(I,m-s&65535,l&65535)|0;if(o>>>0>t>>>0){j=0;break}else l=n}else l=l+n|0;j=j+1|0;m=p}q=q+1|0;if((q|0)>=(y|0)){aa=452;break}}do if((aa|0)==452){aa=0;if(!m)break;Oh(I,m-s&65535,l&65535)|0}while(0);j=u-j|0}else j=u;p=z+(A+5)|0;q=p+1|0;S=z+(((d[p>>0]<<8|d[q>>0])+65535&65535)+1)|0;c[da>>2]=S;s:do if(S>>>0>>0)aa=468;else{if((k|0)>(H|0)){l=k-H|0;l=(l|0)>(J|0)?J:l;S=c[B>>2]|0;fw(S+(l<<1)|0,S|0,j<<1|0)|0;if(!(Th(I,C,da,S,H,l,ia)|0))j=j+l|0;else{aa=468;break}}l=a[F>>0]|0;if(l<<24>>24){o=0;do{m=k+(e[I+28+(o<<1)>>1]|0)|0;n=m-H|0;if((n|0)>-1&(n|0)<(J|0)){l=(c[B>>2]|0)+(n<<1)|0;if((j|0)>(n|0))fw(l+2|0,l|0,j-n<<1|0)|0;if(Th(I,C,da,l,m,1,ia)|0){aa=468;break s}j=j+1|0;l=a[F>>0]|0}o=o+1|0}while(o>>>0<(l&255)>>>0)}if(Th(I,C,da,(c[B>>2]|0)+(j<<1)|0,j+H|0,J-j|0,ia)|0){aa=468;break}b[D>>1]=J;a[F>>0]=0;S=z+(A+3)|0;a[S>>0]=J>>>8;a[S+1>>0]=b[D>>1];S=(c[da>>2]|0)-z|0;a[p>>0]=S>>>8;a[q>>0]=S;c[la>>2]=0}while(0);if((aa|0)==468){aa=0;if((J|0)>0){k=H;l=J;j=c[Ha>>2]|0;while(1){if(!(b[j+(k<<1)>>1]|0)){S=c[Ia>>2]|0;S=Xa[c[S+76>>2]&255](S,c[(c[ua>>2]|0)+(k<<2)>>2]|0)|0;j=c[Ha>>2]|0;b[j+(k<<1)>>1]=S}if((l|0)>1){k=k+1|0;l=l+-1|0}else break}}S=Rh(ia,H,J,I)|0;c[la>>2]=S;if(S|0){g=E;break c}}a[M>>0]=1;c[I+20>>2]=T-(c[Ya+(K<<2)>>2]|0)}while(0);h=h+1|0;if((h|0)>=(E|0))break q}c[lb>>2]=32306;c[lb+4>>2]=70299;c[lb+8>>2]=31517;Db(11,32001,lb);c[la>>2]=11;g=E;break c}while(0);t:do if(W){if(b[X>>1]|0){aa=488;break}l=c[La>>2]|0;if((c[l+20>>2]|0)<(d[$+9>>0]|0)){aa=488;break}Y=Qh(l,-1)|0;c[la>>2]=Y;if(Y|0)break;k=l+52|0;j=c[k>>2]|0;Y=c[l+56>>2]|0;W=c[V>>2]|0;h=d[l+9>>0]|0;X=(c[$+4>>2]|0)==1?100:0;V=Y+(h+5)|0;V=d[V>>0]<<8|d[V+1>>0];ew(W+V|0,Y+V|0,(c[j+36>>2]|0)-V|0)|0;ew(W+X|0,Y+h|0,(e[l+24>>1]<<1)+(e[l+18>>1]|0)|0)|0;a[$>>0]=0;h=Gf($)|0;do if(!h){h=Jh($)|0;if(h|0)break;if(!(a[j+17>>0]|0))h=c[la>>2]|0;else{h=hg($)|0;c[la>>2]=h}if(h|0)break t;$=Bh(c[k>>2]|0,l,c[l+4>>2]|0)|0;c[la>>2]=$;break t}while(0);c[la>>2]=h}else aa=488;while(0);do if((aa|0)==488){aa=0;if(!(Q&(U<<16>>16==0&(a[P>>0]|0)!=0)))break;h=0;do{$=c[La+(h<<2)>>2]|0;X=c[$+56>>2]|0;ig(Y,d[X+9>>0]<<16|d[X+8>>0]<<24|d[X+10>>0]<<8|d[X+11>>0],5,c[$+4>>2]|0,la);h=h+1|0}while((h|0)!=(E|0))}while(0);if((E|0)>(g|0)){g=E;break c}k=E;h=c[la>>2]|0;while(1){j=c[va+(k<<2)>>2]|0;if(!h){h=Bh(c[j+52>>2]|0,j,c[j+4>>2]|0)|0;c[la>>2]=h}if((k|0)<(g|0))k=k+1|0;else{g=E;break c}}}while(0);if((aa|0)==155){aa=0;c[ua>>2]=0}c[la>>2]=7;g=0;break}}else aa=130;while(0);if((aa|0)==130){aa=0;gw(va|0,0,(g<<2)+4|0)|0;g=0}h=c[ua>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{$=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-$;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);j=0;do{h=c[va+(j<<2)>>2]|0;do if(h|0){h=c[h+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);break}else{$=c[h+20>>2]|0;Y=$+120|0;c[Y>>2]=(c[Y>>2]|0)+-1;$=$+136|0;c[h+16>>2]=c[$>>2];c[$>>2]=h;break}}while(0);j=j+1|0}while((j|0)!=(Z|0));if((g|0)>0){j=0;do{h=c[La+(j<<2)>>2]|0;do if(h|0){h=c[h+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);break}else{$=c[h+20>>2]|0;Z=$+120|0;c[Z>>2]=(c[Z>>2]|0)+-1;$=$+136|0;c[h+16>>2]=c[$>>2];c[$>>2]=h;break}}while(0);j=j+1|0}while((j|0)!=(g|0))}h=c[la>>2]|0}if(i){g=i;do if((c[14816]|0)>>>0<=g>>>0)if((c[14817]|0)>>>0>g>>>0){c[14979]=(c[14979]|0)+-1;c[i>>2]=c[14819];c[14819]=i;i=(c[14820]|0)+1|0;c[14820]=i;c[14821]=(i|0)<(c[14815]|0)&1;i=_;break b}else{g=Wa[c[29352>>2]&127](i)|0;break}else g=Wa[c[29352>>2]&127](i)|0;while(0);c[14980]=(c[14980]|0)-g;if(!(c[7324]|0)){ab[c[29344>>2]&127](i);i=_;break}else{$=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-$;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);i=_;break}}else i=_}while(0);a[ba>>0]=0;if(ca)aa=525}while(0);if((aa|0)==523){a[ba>>0]=0;aa=525}do if((aa|0)==525){g=c[ca+72>>2]|0;if(!(b[g+28>>1]&32)){Df(g);break}else{ca=c[g+20>>2]|0;ba=ca+120|0;c[ba>>2]=(c[ba>>2]|0)+-1;ca=ca+136|0;c[g+16>>2]=c[ca>>2];c[ca>>2]=g;break}}while(0);g=(a[na>>0]|0)+-1<<24>>24;a[na>>0]=g;j=g;g=f+120+(g<<24>>24<<2)|0}ca=c[g>>2]|0;c[oa>>2]=ca}while(!(h|0));if(!i){Ra=nb;return h|0}g=i;do if((c[14816]|0)>>>0>g>>>0)g=Wa[c[29352>>2]&127](i)|0;else{if((c[14817]|0)>>>0<=g>>>0){g=Wa[c[29352>>2]&127](i)|0;break}c[14979]=(c[14979]|0)+-1;c[i>>2]=c[14819];c[14819]=i;mb=(c[14820]|0)+1|0;c[14820]=mb;c[14821]=(mb|0)<(c[14815]|0)&1;Ra=nb;return h|0}while(0);c[14980]=(c[14980]|0)-g;if(!(c[7324]|0)){ab[c[29344>>2]&127](i);Ra=nb;return h|0}else{mb=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-mb;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);Ra=nb;return h|0}return 0}function Nh(d,e,f,g,h){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;i=c[f+28>>2]|0;j=i-g|0;if((j|0)<1){if((h|0)<=0){n=0;return n|0}i=0;while(1){if(a[e+i>>0]|0)break;i=i+1|0;if((i|0)>=(h|0)){i=0;n=30;break}}if((n|0)==30)return i|0;l=e+i|0;f=c[d+72>>2]|0;k=c[f+20>>2]|0;if((b[f+28>>1]&4)!=0?(c[k+24>>2]|0)>>>0>=(c[f+24>>2]|0)>>>0:0){if(c[k+96>>2]|0){m=Ve(f)|0;n=14}}else n=10;do if((n|0)==10){j=c[k+40>>2]|0;if(j|0){n=j;return n|0}if((c[k+148>>2]|0)>>>0>(c[k+152>>2]|0)>>>0){m=Wf(f)|0;n=14;break}else{m=Xf(f)|0;n=14;break}}while(0);if((n|0)==14?m|0:0){n=m;return n|0}gw(l|0,0,h-i|0)|0;n=0;return n|0}else{if((j|0)<(h|0)){i=Nh(d,e+j|0,f,i,h-j|0)|0;if(!i)l=j;else{n=i;return n|0}}else l=h;k=f+16|0;i=(c[k>>2]|0)+g|0;if(!(Lu(e,i,l)|0)){n=0;return n|0}j=c[d+72>>2]|0;f=c[j+20>>2]|0;if((b[j+28>>1]&4)!=0?(c[f+24>>2]|0)>>>0>=(c[j+24>>2]|0)>>>0:0){if(c[f+96>>2]|0){i=Ve(j)|0;n=27}}else n=23;do if((n|0)==23){i=c[f+40>>2]|0;if(i|0){n=i;return n|0}if((c[f+148>>2]|0)>>>0>(c[f+152>>2]|0)>>>0){i=Wf(j)|0;n=27;break}else{i=Xf(j)|0;n=27;break}}while(0);do if((n|0)==27)if(!i){i=(c[k>>2]|0)+g|0;break}else{n=i;return n|0}while(0);fw(e|0,i|0,l|0)|0;n=0;return n|0}return 0}function Oh(e,f,g){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,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=Ra;Ra=Ra+112|0;B=E+96|0;y=E+80|0;v=E+64|0;t=E+48|0;s=E+32|0;r=E+16|0;q=E;k=f&65535;C=g&65535;u=C+k|0;D=c[e+56>>2]|0;z=d[e+9>>0]|0;A=z+1|0;o=A&65535;p=a[D+(z+2)>>0]|0;h=a[D+A>>0]|0;if(p<<24>>24==0?h<<24>>24==0:0){q=u;p=0;n=0;m=f&255;l=(f&65535)>>>8&255}else w=3;do if((w|0)==3){m=p&255;h=(h&255)<<8|m;i=h&65535;n=(i&65535)>>>8&255;do if(h>>>0>>0){l=A;while(1){if(h>>>0<(l+4|0)>>>0)break;l=i&65535;h=D+l|0;p=a[h+1>>0]|0;m=p&255;h=(d[h>>0]|0)<<8|m;j=h&65535;if(h>>>0>>0){o=i;i=j}else{w=10;break}}if((w|0)==10){o=i;n=(j&65535)>>>8&255;w=11;break}if(!h){n=(i&65535)>>>8&255;j=0;i=c[(c[e+52>>2]|0)+36>>2]|0;break}c[q>>2]=32306;c[q+4>>2]=64915;c[q+8>>2]=31517;Db(11,32001,q);D=11;Ra=E;return D|0}else{l=A;w=11}while(0);if((w|0)==11){i=c[(c[e+52>>2]|0)+36>>2]|0;if(h>>>0>(i+-4|0)>>>0){c[r>>2]=32306;c[r+4>>2]=64920;c[r+8>>2]=31517;Db(11,32001,r);D=11;Ra=E;return D|0}else j=h}do if((j+-1|0)>>>0<(u+3|0)>>>0){if(u>>>0>j>>>0){c[s>>2]=32306;c[s+4>>2]=64932;c[s+8>>2]=31517;Db(11,32001,s);D=11;Ra=E;return D|0}h=D+(j+2)|0;h=((d[h>>0]|0)<<8|(d[h+1>>0]|0))+j|0;if(h>>>0<=i>>>0){n=D+j|0;q=h;g=h-k&65535;h=m-u&255;p=a[n+1>>0]|0;n=a[n>>0]|0;break}c[t>>2]=32306;c[t+4>>2]=64935;c[t+8>>2]=31517;Db(11,32001,t);D=11;Ra=E;return D|0}else{q=u;h=0}while(0);do if(A>>>0>>0?(x=D+(l+2)|0,x=((d[x>>0]|0)<<8|(d[x+1>>0]|0))+l|0,(x+3|0)>>>0>=k>>>0):0){if(x>>>0<=k>>>0){f=o;g=q-l&65535;h=(h&255)+k-x&255;break}c[v>>2]=32306;c[v+4>>2]=64948;c[v+8>>2]=31517;Db(11,32001,v);D=11;Ra=E;return D|0}while(0);i=D+(z+7)|0;j=a[i>>0]|0;if((j&255)>=(h&255)){a[i>>0]=(j&255)-(h&255);m=f&255;l=(f&65535)>>>8&255;k=f&65535;break}c[y>>2]=32306;c[y+4>>2]=64954;c[y+8>>2]=31517;Db(11,32001,y);D=11;Ra=E;return D|0}while(0);h=D+(z+5)|0;i=h+1|0;j=(d[h>>0]|0)<<8|(d[i>>0]|0);do if(j>>>0>>0){B=D+(o&65535)|0;a[B>>0]=l;a[B+1>>0]=m}else{if((A|0)==(o&65535|0)&j>>>0<=k>>>0){B=D+A|0;a[B>>0]=n;a[B+1>>0]=p;a[h>>0]=q>>>8;a[i>>0]=q;break}c[B>>2]=32306;c[B+4>>2]=64962;c[B+8>>2]=31517;Db(11,32001,B);D=11;Ra=E;return D|0}while(0);if(!(b[(c[e+52>>2]|0)+22>>1]&12))h=D+k|0;else{h=D+k|0;gw(h|0,0,g&65535|0)|0}a[h>>0]=n;a[D+k+1>>0]=p;D=D+(k+2)|0;a[D>>0]=(g&65535)>>>8;a[D+1>>0]=g;D=e+20|0;c[D>>2]=(c[D>>2]|0)+C;D=0;Ra=E;return D|0}function Ph(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,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+48|0;r=t+32|0;o=t+16|0;s=t;n=b&255;i=n+1|0;b=f+i|0;b=(d[b>>0]|0)<<8|(d[b+1>>0]|0);q=e-g|0;a:do if((b|0)<=(q|0)){l=i;while(1){k=f+(b+2)|0;j=(d[k>>0]|0)<<8|(d[k+1>>0]|0);m=j-g|0;if((m|0)>-1)break;i=f+b|0;i=(d[i>>0]|0)<<8|(d[i+1>>0]|0);if((i|0)<=(j+b|0)){p=13;break}if((i|0)>(q|0)){b=i;break a}else{l=b;b=i}}if((p|0)==13){if(!i){f=0;Ra=t;return f|0}c[o>>2]=32306;c[o+4>>2]=64770;c[o+8>>2]=31517;Db(11,32001,o);c[h>>2]=11;f=0;Ra=t;return f|0}i=k+1|0;do if((m|0)<4){i=f+(n+7)|0;if((d[i>>0]|0)>57){f=0;Ra=t;return f|0}else{h=f+l|0;s=f+b|0;s=d[s>>0]|d[s+1>>0]<<8;a[h>>0]=s;a[h+1>>0]=s>>8;a[i>>0]=m+(d[i>>0]|0);b=m+b|0;break}}else{b=m+b|0;if((b|0)<=(q|0)){a[k>>0]=m>>>8;a[i>>0]=m;break}c[s>>2]=32306;c[s+4>>2]=64756;c[s+8>>2]=31517;Db(11,32001,s);c[h>>2]=11;f=0;Ra=t;return f|0}while(0);f=f+b|0;Ra=t;return f|0}while(0);if((b|0)<=(e+-4|0)){f=0;Ra=t;return f|0}c[r>>2]=32306;c[r+4>>2]=64777;c[r+8>>2]=31517;Db(11,32001,r);c[h>>2]=11;f=0;Ra=t;return f|0}function Qh(f,g){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,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=Ra;Ra=Ra+144|0;F=G+128|0;x=G+112|0;w=G+96|0;o=G+80|0;p=G+64|0;l=G+48|0;k=G+32|0;i=G+16|0;h=G;D=c[f+56>>2]|0;E=d[f+9>>0]|0;z=e[f+18>>1]|0;q=b[f+24>>1]|0;u=q&65535;B=(u<<1)+z|0;v=f+52|0;y=c[(c[v>>2]|0)+36>>2]|0;C=D+(E+7)|0;do if((d[C>>0]|0)<=(g|0)){s=D+(E+1)|0;s=d[s>>0]<<8|d[s+1>>0];g=y+-4|0;if((s|0)>(g|0)){c[h>>2]=32306;c[h+4>>2]=64627;c[h+8>>2]=31517;Db(11,32001,h);F=11;Ra=G;return F|0}if(s){r=D+s|0;r=d[r>>0]<<8|d[r+1>>0];if((r|0)>(g|0)){c[i>>2]=32306;c[i+4>>2]=64630;c[i+8>>2]=31517;Db(11,32001,i);F=11;Ra=G;return F|0}j=(r|0)==0;if(!j){if(a[D+r>>0]|0){t=g;A=27;break}if(a[D+(r+1)>>0]|0){t=g;A=27;break}}n=D+B|0;m=D+(s+2)|0;m=d[m>>0]<<8|d[m+1>>0];i=D+(E+5)|0;i=d[i>>0]<<8|d[i+1>>0];if(s>>>0<=i>>>0){c[k>>2]=32306;c[k+4>>2]=64638;c[k+8>>2]=31517;Db(11,32001,k);F=11;Ra=G;return F|0}h=m+s|0;do if(j)if((h|0)>(y|0)){c[o>>2]=32306;c[o+4>>2]=64647;c[o+8>>2]=31517;Db(11,32001,o);F=11;Ra=G;return F|0}else l=0;else{if(r>>>0>>0){c[l>>2]=32306;c[l+4>>2]=64641;c[l+8>>2]=31517;Db(11,32001,l);F=11;Ra=G;return F|0}g=D+(r+2)|0;g=d[g>>0]<<8|d[g+1>>0];if((g+r|0)<=(y|0)){fw(D+(g+h)|0,D+h|0,r-h|0)|0;m=g+m|0;l=g;break}c[p>>2]=32306;c[p+4>>2]=64643;c[p+8>>2]=31517;Db(11,32001,p);F=11;Ra=G;return F|0}while(0);g=m+i|0;fw(D+g|0,D+i|0,s-i|0)|0;if(q<<16>>16){i=D+z|0;do{j=i+1|0;k=d[i>>0]<<8|d[j>>0];if(k>>>0>=s>>>0){if(k>>>0>>0){h=l;A=25}}else{h=m;A=25}if((A|0)==25){A=0;z=k+h|0;a[i>>0]=z>>>8;a[j>>0]=z}i=i+2|0}while(i>>>0>>0)}}else{t=g;A=27}}else{t=y+-4|0;A=27}while(0);if((A|0)==27){a:do if(q<<16>>16){q=f+76|0;r=D+(E+5)|0;s=r+1|0;p=0;i=0;h=D;k=y;while(1){l=D+((p<<1)+z)|0;m=l+1|0;n=d[l>>0]<<8|d[m>>0];if(n>>>0>>0|(n|0)>(t|0)){A=30;break}j=h+n|0;o=(Xa[c[q>>2]&255](f,j)|0)&65535;g=k-o|0;if((g|0)<(B|0)|(n+o|0)>(y|0)){A=32;break}a[l>>0]=g>>>8;a[m>>0]=g;if(!i)if((g|0)==(n|0))i=0;else{j=c[(c[c[v>>2]>>2]|0)+208>>2]|0;i=d[r>>0]<<8|d[s>>0];ew(j+i|0,D+i|0,k-i|0)|0;i=j;h=j;j=j+n|0;A=36}else A=36;if((A|0)==36){A=0;ew(D+g|0,j|0,o|0)|0}p=p+1|0;if(p>>>0>=u>>>0)break a;else k=g}if((A|0)==30){c[w>>2]=32306;c[w+4>>2]=64675;c[w+8>>2]=31517;Db(11,32001,w);F=11;Ra=G;return F|0}else if((A|0)==32){c[x>>2]=32306;c[x+4>>2]=64681;c[x+8>>2]=31517;Db(11,32001,x);F=11;Ra=G;return F|0}}else g=y;while(0);a[C>>0]=0}h=g-B|0;if((h+(d[C>>0]|0)|0)==(c[f+20>>2]|0)){F=D+(E+5)|0;a[F>>0]=g>>>8;a[F+1>>0]=g;a[D+(E+1)>>0]=0;a[D+(E+2)>>0]=0;gw(D+B|0,0,h|0)|0;F=0;Ra=G;return F|0}else{c[F>>2]=32306;c[F+4>>2]=64702;c[F+8>>2]=31517;Db(11,32001,F);F=11;Ra=G;return F|0}return 0}function Rh(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var 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;F=Ra;Ra=Ra+48|0;E=F+32|0;D=F+16|0;C=F;A=d[i+9>>0]|0;B=c[i+56>>2]|0;s=c[i+52>>2]|0;x=c[s+36>>2]|0;t=B+x|0;j=c[i+64>>2]|0;s=c[(c[s>>2]|0)+208>>2]|0;y=B+(A+5)|0;z=y+1|0;k=(d[y>>0]|0)<<8|(d[z>>0]|0);k=k>>>0>x>>>0?0:k;ew(s+k|0,B+k|0,x-k|0)|0;k=0;while(1)if(k>>>0<6?(c[f+40+(k<<2)>>2]|0)<=(g|0):0)k=k+1|0;else break;u=h+g|0;v=f+8|0;w=f+12|0;x=B;l=t;a:while(1){q=c[f+16+(k<<2)>>2]|0;r=f+40+(k<<2)|0;p=l;do{l=c[(c[v>>2]|0)+(g<<2)>>2]|0;m=l;o=e[(c[w>>2]|0)+(g<<1)>>1]|0;n=l+o|0;if(!(l>>>0>=B>>>0&l>>>0>>0)){if(l>>>0>>0&n>>>0>q>>>0){g=10;break a}}else{if(n>>>0>t>>>0){g=7;break a}l=s+(m-x)|0}p=p+(0-o)|0;n=p-x|0;m=n>>>8&255;a[j>>0]=m;n=n&255;a[j+1>>0]=n;j=j+2|0;if(p>>>0>>0){g=12;break a}ew(p|0,l|0,o|0)|0;g=g+1|0;if((g|0)>=(u|0)){g=16;break a}}while((c[r>>2]|0)>(g|0));l=p;k=k+1|0}if((g|0)==7){c[C>>2]=32306;c[C+4>>2]=70094;c[C+8>>2]=31517;Db(11,32001,C);E=11;Ra=F;return E|0}else if((g|0)==10){c[D>>2]=32306;c[D+4>>2]=70099;c[D+8>>2]=31517;Db(11,32001,D);E=11;Ra=F;return E|0}else if((g|0)==12){c[E>>2]=32306;c[E+4>>2]=70105;c[E+8>>2]=31517;Db(11,32001,E);E=11;Ra=F;return E|0}else if((g|0)==16){D=i+24|0;b[D>>1]=h;a[i+12>>0]=0;E=B+(A+1)|0;a[E>>0]=0;a[E+1>>0]=0;E=B+(A+3)|0;a[E>>0]=(e[D>>1]|0)>>>8;a[E+1>>0]=b[D>>1];a[y>>0]=m;a[z>>0]=n;a[B+(A+7)>>0]=0;E=0;Ra=F;return E|0}return 0}function Sh(a,d){a=a|0;d=d|0;var e=0;e=c[a+4>>2]|0;e=Xa[c[e+76>>2]&255](e,c[(c[a+8>>2]|0)+(d<<2)>>2]|0)|0;b[(c[a+12>>2]|0)+(d<<1)>>1]=e;return e|0}function Th(d,e,f,g,h,i,j){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var 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;A=Ra;Ra=Ra+16|0;y=A;w=A+12|0;x=d+56|0;k=c[x>>2]|0;l=c[f>>2]|0;v=i+h|0;if((i|0)<1){z=0;Ra=A;return z|0}i=0;while(1)if(i>>>0<6?(c[j+40+(i<<2)>>2]|0)<=(h|0):0)i=i+1|0;else break;s=j+12|0;t=k+1|0;u=k+2|0;r=j+8|0;q=d+9|0;p=d+52|0;o=c[j+16+(i<<2)>>2]|0;n=i;while(1){i=b[(c[s>>2]|0)+(h<<1)>>1]|0;if(!(i<<16>>16))i=Sh(j,h)|0;m=i&65535;if((a[t>>0]|0)==0?(a[u>>0]|0)==0:0)z=10;else{i=Ph(a[q>>0]|0,c[(c[p>>2]|0)+36>>2]|0,c[x>>2]|0,m,w)|0;if(!i)z=10}if((z|0)==10){z=0;if((l-e|0)<(m|0))break;l=l+(0-m)|0;i=l}d=c[(c[r>>2]|0)+(h<<2)>>2]|0;if(d>>>0>>0&(d+m|0)>>>0>o>>>0){z=13;break}fw(i|0,d|0,m|0)|0;m=i-k|0;a[g>>0]=m>>>8;a[g+1>>0]=m;h=h+1|0;if((h|0)>=(v|0)){z=19;break}d=n+1|0;if((c[j+40+(n<<2)>>2]|0)>(h|0)){i=o;d=n}else i=c[j+16+(d<<2)>>2]|0;o=i;g=g+2|0;n=d}if((z|0)==13){c[y>>2]=32306;c[y+4>>2]=70190;c[y+8>>2]=31517;Db(11,32001,y)}else if((z|0)==19){c[f>>2]=l;z=0;Ra=A;return z|0}z=1;Ra=A;return z|0}function Uh(f,g){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;w=Ra;Ra=Ra+16|0;t=w+4|0;u=w;v=f+12|0;n=f+8|0;h=c[n>>2]|0;do if(!(c[v>>2]|0)){m=c[h+28>>2]|0;l=((e[m+6>>1]|0)*40|0)+56|0;j=c[m+12>>2]|0;a:do if(!j){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](l)|0;r=25;break}k=Wa[c[29356>>2]&127](l)|0;if((c[14985]|0)>>>0>>0)c[14985]=l;j=59064;h=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&h>>>0>0){s=c[14978]|0;q=Tv(h|0,j|0,k|0,((k|0)<0)<<31>>31|0)|0;p=L()|0;c[14768]=((p|0)<0|(p|0)==0&q>>>0<=s>>>0)&1}h=Wa[c[29340>>2]&127](k)|0;if(h|0){i=Wa[c[29352>>2]&127](h)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0){c[14987]=i;r=26}else r=26}}else{if(c[j+272>>2]|0){if(a[j+81>>0]|0)break}else{do if(!(0<0|(0==0?(e[j+276>>1]|0)>>>0>>0:0))){h=j+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];r=j+284|0;c[r>>2]=(c[r>>2]|0)+1;r=25;break a}h=j+296|0;i=c[h>>2]|0;if(!i){h=j+292|0;break}else{c[h>>2]=c[i>>2];r=j+284|0;c[r>>2]=(c[r>>2]|0)+1;r=25;break a}}else h=j+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}i=_d(j,l,0)|0;r=25}while(0);if((r|0)==25?i|0:0){h=i;r=26}if((r|0)==26){c[h+4>>2]=h+16;c[h>>2]=m;c[v>>2]=h;s=c[n>>2]|0;b[h+8>>1]=b[(c[s+28>>2]|0)+6>>1]|0;a[h+11>>0]=0;h=s;break}c[v>>2]=0;v=7;Ra=w;return v|0}while(0);l=c[g>>2]|0;r=a[h+60>>0]|0;s=f+32|0;c[s>>2]=r<<24>>24==1?78:r<<24>>24==2?76:77;if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](256)|0;if(!h){v=7;Ra=w;return v|0}}else{h=Wa[c[29356>>2]&127](256)|0;if((c[14985]|0)>>>0<256)c[14985]=256;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){r=c[14978]|0;q=Tv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0;p=L()|0;c[14768]=((p|0)<0|(p|0)==0&q>>>0<=r>>>0)&1}h=Wa[c[29340>>2]&127](h)|0;if(!h){v=7;Ra=w;return v|0}i=Wa[c[29352>>2]&127](h)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}gw(h|0,0,256)|0;if(l|0){q=g+4|0;k=l;j=l;while(1){i=c[q>>2]|0;if(i)if((j|0)==(i|0)){p=0;j=0}else{j=i+(c[k+4>>2]|0)|0;p=j}else{j=c[k+4>>2]|0;p=j}c[k+4>>2]=0;l=c[h>>2]|0;if(!l)i=h;else{o=0;i=h;do{c[t>>2]=0;c[u>>2]=0;m=t;b:while(1){n=l+8|0;while(1){if(($a[c[s>>2]&127](f,u,k+8|0,c[k>>2]|0,n,c[l>>2]|0)|0)>=1)break;c[m>>2]=k;m=k+4|0;k=c[m>>2]|0;if(!k){r=51;break b}}c[m>>2]=l;m=l+4|0;l=c[m>>2]|0;c[u>>2]=0;if(!l){r=53;break}}if((r|0)==51)c[m>>2]=l;else if((r|0)==53)c[m>>2]=k;k=c[t>>2]|0;c[i>>2]=0;o=o+1|0;i=h+(o<<2)|0;l=c[i>>2]|0}while((l|0)!=0)}c[i>>2]=k;if(!p)break;else k=p}}m=0;i=0;do{k=c[h+(m<<2)>>2]|0;if(k)if(!i)i=k;else{c[t>>2]=0;c[u>>2]=0;j=t;c:while(1){l=k+8|0;while(1){if(($a[c[s>>2]&127](f,u,i+8|0,c[i>>2]|0,l,c[k>>2]|0)|0)>=1)break;c[j>>2]=i;j=i+4|0;i=c[j>>2]|0;if(!i){r=63;break c}}c[j>>2]=k;j=k+4|0;k=c[j>>2]|0;c[u>>2]=0;if(!k){r=65;break}}if((r|0)==63)c[j>>2]=k;else if((r|0)==65)c[j>>2]=i;i=c[t>>2]|0}m=m+1|0}while((m|0)!=64);c[g>>2]=i;if(!(c[7324]|0))ab[c[29344>>2]&127](h);else{u=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h)}v=d[(c[v>>2]|0)+11>>0]|0;Ra=w;return v|0}function Vh(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,u=0,v=0,w=0,x=0;x=Ra;Ra=Ra+16|0;t=x;a[b+56>>0]=1;e=b+64|0;w=b+36|0;g=b+72|0;f=b+104|0;if((c[f>>2]|0)==0?(d=Zh(c[(c[g>>2]|0)+24>>2]|0,f)|0,d|0):0){w=d;Ra=x;return w|0}d=Uh(e,w)|0;if(d|0){w=d;Ra=x;return w|0}k=c[f>>2]|0;j=c[(c[g>>2]|0)+12>>2]|0;v=b+112|0;h=v;g=c[h>>2]|0;h=c[h+4>>2]|0;i=((j|0)<0)<<31>>31;s=Sv(j|0,i|0,-1,-1)|0;r=L()|0;do if(r>>>0>0|(r|0)==0&s>>>0>2147483390){d=7;s=0;q=0;i=0;r=0;f=0;e=0}else{if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](j)|0;if(!d){d=7;s=0;q=0;i=0;r=0;f=0;e=0;break}else e=d}else{d=Wa[c[29356>>2]&127](j)|0;if((c[14985]|0)>>>0>>0)c[14985]=j;f=59064;e=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&e>>>0>0){s=c[14978]|0;r=Tv(e|0,f|0,d|0,((d|0)<0)<<31>>31|0)|0;q=L()|0;c[14768]=((q|0)<0|(q|0)==0&r>>>0<=s>>>0)&1}e=Wa[c[29340>>2]&127](d)|0;if(!e){d=7;s=0;q=0;i=0;r=0;f=0;e=0;break}d=Wa[c[29352>>2]&127](e)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0)c[14987]=d}i=Zv(g|0,h|0,j|0,i|0)|0;L()|0;f=Tv(g|0,h|0,i|0,((i|0)<0)<<31>>31|0)|0;d=0;s=e;q=j;r=k;e=L()|0}while(0);g=b+92|0;c[g>>2]=(c[g>>2]|0)+1;g=c[b+44>>2]|0;h=((g|0)<0)<<31>>31;do if(g>>>0>=128)if(g>>>0>=16384){g=wh(t,g,h)|0;if((g|0)>0){u=22;break}else{h=i;g=i;break}}else{u=bw(g|0,h|0,7)|0;L()|0;a[t>>0]=u&255|-128;a[t+1>>0]=g&127;g=2;u=22;break}else{a[t>>0]=g&127;g=1;u=22}while(0);a:do if((u|0)==22){l=((q|0)<0)<<31>>31;k=g;h=i;while(1){if(d|0){g=i;break a}j=q-i|0;j=(k|0)>(j|0)?j:k;ew(s+i|0,t+(g-k)|0,j|0)|0;i=j+i|0;if((i|0)==(q|0)){i=Sv(f|0,e|0,h|0,((h|0)<0)<<31>>31|0)|0;d=L()|0;f=Sv(f|0,e|0,q|0,l|0)|0;e=L()|0;d=_a[c[(c[r>>2]|0)+12>>2]&127](r,s+h|0,q-h|0,i,d)|0;h=0;i=0}else d=0;k=k-j|0;if((k|0)<=0){g=i;break}}}while(0);i=c[w>>2]|0;if(i){p=((q|0)<0)<<31>>31;n=b+40|0;o=t+1|0;do{m=i;i=c[i+4>>2]|0;l=c[m>>2]|0;j=((l|0)<0)<<31>>31;do if(l>>>0>=128)if(l>>>0>=16384){j=wh(t,l,j)|0;if((j|0)>0){u=34;break}else break}else{j=bw(l|0,j|0,7)|0;L()|0;a[t>>0]=j&255|-128;j=2;k=o;u=33;break}else{j=1;k=t;u=33}while(0);if((u|0)==33){a[k>>0]=l&127;u=34}b:do if((u|0)==34){u=0;l=j;do{if(d|0)break b;k=q-g|0;k=(l|0)>(k|0)?k:l;ew(s+g|0,t+(j-l)|0,k|0)|0;g=k+g|0;if((g|0)==(q|0)){g=Sv(f|0,e|0,h|0,((h|0)<0)<<31>>31|0)|0;d=L()|0;f=Sv(f|0,e|0,q|0,p|0)|0;e=L()|0;d=_a[c[(c[r>>2]|0)+12>>2]&127](r,s+h|0,q-h|0,g,d)|0;h=0;g=0}else d=0;l=l-k|0}while((l|0)>0)}while(0);l=m+8|0;b=c[m>>2]|0;c:do if((b|0)>0){k=b;do{if(d|0)break c;j=q-g|0;j=(k|0)>(j|0)?j:k;ew(s+g|0,l+(b-k)|0,j|0)|0;g=j+g|0;if((g|0)==(q|0)){g=Sv(f|0,e|0,h|0,((h|0)<0)<<31>>31|0)|0;d=L()|0;f=Sv(f|0,e|0,q|0,p|0)|0;e=L()|0;d=_a[c[(c[r>>2]|0)+12>>2]&127](r,s+h|0,q-h|0,g,d)|0;h=0;g=0}else d=0;k=k-j|0}while((k|0)>0)}while(0);do if(!((m|0)==0|(c[n>>2]|0)!=0))if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{b=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}while(0)}while((i|0)!=0)}c[w>>2]=0;if(d){t=Sv(f|0,e|0,g|0,((g|0)<0)<<31>>31|0)|0;u=L()|0;w=v;c[w>>2]=t;c[w+4>>2]=u;if(!s){w=d;Ra=x;return w|0}}else{if(!s){t=Sv(f|0,e|0,g|0,((g|0)<0)<<31>>31|0)|0;u=L()|0;w=v;c[w>>2]=t;c[w+4>>2]=u;w=0;Ra=x;return w|0}if((g|0)>(h|0)){w=Sv(f|0,e|0,h|0,((h|0)<0)<<31>>31|0)|0;d=L()|0;d=_a[c[(c[r>>2]|0)+12>>2]&127](r,s+h|0,g-h|0,w,d)|0}else d=0;t=Sv(f|0,e|0,g|0,((g|0)<0)<<31>>31|0)|0;u=L()|0;w=v;c[w>>2]=t;c[w+4>>2]=u}if(!(c[7324]|0)){ab[c[29344>>2]&127](s);w=d;Ra=x;return w|0}else{w=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);w=d;Ra=x;return w|0}return 0}function Wh(b,f,g,h,i,j){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=a[g+1>>0]|0;o=k&255;l=a[i+1>>0]|0;p=g+(d[g>>0]|0)|0;q=i+(d[i>>0]|0)|0;a:do if(k<<24>>24!=l<<24>>24){m=(k&255)>7;n=(l&255)>7;k=o-(l&255)|0;do if(!(m&n)){k=n?1:m?-1:k;if((k|0)<=0)if((a[q>>0]|0)<0){k=1;r=12;break a}else break;else{k=(a[p>>0]|0)<0?-1:k;break}}while(0);l=c[(c[b+8>>2]|0)+28>>2]|0;if(k){j=k;i=l;i=i+16|0;i=c[i>>2]|0;i=a[i>>0]|0;i=i<<24>>24==0;r=0-j|0;r=i?j:r;return r|0}}else{m=d[34845+o>>0]|0;b:do if((o+-1|0)>>>0<6){k=0;while(1){l=(d[p+k>>0]|0)-(d[q+k>>0]|0)|0;k=k+1|0;if(l|0)break;if(k>>>0>=m>>>0)break b}k=a[p>>0]|0;k=(a[q>>0]^k)<<24>>24<0?(((k&255)>>>6&2^2)&255)+-1|0:l;r=12;break a}while(0);l=c[(c[b+8>>2]|0)+28>>2]|0}while(0);if((r|0)==12){j=k;i=c[(c[b+8>>2]|0)+28>>2]|0;i=i+16|0;i=c[i>>2]|0;i=a[i>>0]|0;i=i<<24>>24==0;r=0-j|0;r=i?j:r;return r|0}if((e[l+6>>1]|0)<=1){r=0;return r|0}k=c[b+12>>2]|0;if(!(c[f>>2]|0)){_g(l,j,i,k);c[f>>2]=1}r=Fh(h,g,k,1)|0;return r|0}function Xh(b,f,g,h,i,j){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=Ra;Ra=Ra+16|0;p=s;r=g+(d[g>>0]|0)|0;q=i+(d[i>>0]|0)|0;k=g+1|0;o=a[k>>0]|0;l=o&255;do if(o<<24>>24<=-1){m=d[g+2>>0]|0;if(!(m&128)){o=l<<7&16256|m;break}n=d[g+3>>0]|0;if(!(n&128)){o=(l<<14|n)&2080895|m<<7&16256;break}else{Of(k,p)|0;n=p;o=c[n>>2]|0;o=((o|0)==(o|0)?0==(c[n+4>>2]|0):0)?o:-1;break}}else o=l;while(0);l=i+1|0;n=a[l>>0]|0;k=n&255;do if(n<<24>>24<=-1){m=d[i+2>>0]|0;if(!(m&128)){k=k<<7&16256|m;break}n=d[i+3>>0]|0;if(!(n&128)){k=(k<<14|n)&2080895|m<<7&16256;break}else{Of(l,p)|0;k=c[p>>2]|0;k=((k|0)==(k|0)?0==(c[p+4>>2]|0):0)?k:-1;break}}while(0);l=Lu(r,q,(((o|0)<(k|0)?o:k)+-13|0)/2|0)|0;m=o-k|0;if(!l){k=c[(c[b+8>>2]|0)+28>>2]|0;if(!m){if((e[k+6>>1]|0)<=1){j=0;Ra=s;return j|0}l=c[b+12>>2]|0;if(!(c[f>>2]|0)){_g(k,j,i,l);c[f>>2]=1}j=Fh(h,g,l,1)|0;Ra=s;return j|0}else l=m}else k=c[(c[b+8>>2]|0)+28>>2]|0;j=(a[c[k+16>>2]>>0]|0)==0?l:0-l|0;Ra=s;return j|0}function Yh(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;h=c[a+12>>2]|0;if(!(c[b>>2]|0)){_g(c[(c[a+8>>2]|0)+28>>2]|0,g,f,h);c[b>>2]=1}return Fh(e,d,h,0)|0}function Zh(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;j=Ra;Ra=Ra+16|0;i=j+8|0;h=j;d=c[7389]|0;if(d|0?Wa[d&127](202)|0:0){i=3338;Ra=j;return i|0}g=c[a>>2]|0;f=c[g+4>>2]|0;e=Sv(f|0,((f|0)<0)<<31>>31|0,-1,-1)|0;d=L()|0;do if(d>>>0>0|(d|0)==0&e>>>0>2147483390)a=7;else{if(!(c[7324]|0)){a=Wa[c[29340>>2]&127](f)|0;if(!a){a=7;break}else d=a}else{a=Wa[c[29356>>2]&127](f)|0;if((c[14985]|0)>>>0>>0)c[14985]=f;e=59064;d=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&d>>>0>0){k=c[14978]|0;e=Tv(d|0,e|0,a|0,((a|0)<0)<<31>>31|0)|0;d=L()|0;c[14768]=((d|0)<0|(d|0)==0&e>>>0<=k>>>0)&1}d=Wa[c[29340>>2]&127](a)|0;if(!d){a=7;break}a=Wa[c[29352>>2]&127](d)|0;a=(c[14978]|0)+a|0;c[14978]=a;if(a>>>0>(c[14982]|0)>>>0)c[14982]=a;a=(c[14981]|0)+1|0;c[14981]=a;if(a>>>0>(c[14987]|0)>>>0)c[14987]=a}gw(d|0,0,f|0)|0;a=_a[c[g+24>>2]&127](g,0,d,4126,i)|0;if(a|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{k=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}c[b>>2]=d;c[i>>2]=0;a=h;c[a>>2]=0;c[a+4>>2]=0;a=c[d>>2]|0;if(!a)a=0;else{Ya[c[a+40>>2]&127](d,18,h)|0;a=c[i>>2]|0}k=a;Ra=j;return k|0}while(0);c[i>>2]=a;k=a;Ra=j;return k|0}function _h(a,b){a=a|0;b=b|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;q=Ra;Ra=Ra+16|0;o=q;p=b+4|0;c[p>>2]=a;m=c[b>>2]|0;a:do if((m|0)>0){n=b+12|0;l=0;while(1){j=c[n>>2]|0;k=j+(l*56|0)|0;j=c[j+(l*56|0)+48>>2]|0;if(j|0){f=c[j>>2]|0;g=c[(c[f+8>>2]|0)+24>>2]|0;e=_h(f,c[j+4>>2]|0)|0;if(e|0){f=22;break}i=c[j+16>>2]|0;h=f+56|0;e=c[h>>2]|0;if(!e){f=f+64|0;e=Zh(g,h)|0;g=f;c[g>>2]=0;c[g+4>>2]=0;if(e|0){f=22;break}e=c[h>>2]|0;g=0;h=0}else{f=f+64|0;h=f;g=c[h>>2]|0;h=c[h+4>>2]|0}c[j+48>>2]=e;j=j+8|0;c[j>>2]=g;c[j+4>>2]=h;i=Sv(g|0,h|0,i|0,((i|0)<0)<<31>>31|0)|0;j=L()|0;e=f;c[e>>2]=i;c[e+4>>2]=j;e=ci(k)|0;if(e|0){f=22;break}}l=l+1|0;if((l|0)>=(m|0)){f=11;break}}if((f|0)==11){e=c[b>>2]|0;if((e|0)<=1)break;j=b+12|0;k=b+8|0;i=e;while(1){h=i+-1|0;e=(e|0)/2|0;if((i|0)>(e|0)){f=h-e<<1;e=f;f=f|1}else{n=c[k>>2]|0;f=h<<1;e=c[n+(f<<2)>>2]|0;f=c[n+((f|1)<<2)>>2]|0}g=c[j>>2]|0;if(c[g+(e*56|0)+24>>2]|0){if(c[g+(f*56|0)+24>>2]|0){n=c[p>>2]|0;c[o>>2]=0;n=($a[c[n+32>>2]&127](n,o,c[g+(e*56|0)+32>>2]|0,c[g+(e*56|0)+20>>2]|0,c[g+(f*56|0)+32>>2]|0,c[g+(f*56|0)+20>>2]|0)|0)<1;e=n?e:f}}else e=f;c[(c[k>>2]|0)+(h<<2)>>2]=e;if((i|0)<=2)break a;i=h;e=c[b>>2]|0}}else if((f|0)==22){Ra=q;return e|0}}while(0);p=d[(c[a+12>>2]|0)+11>>0]|0;Ra=q;return p|0}function $h(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,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=Ra;Ra=Ra+16|0;o=r;f=d;h=c[f>>2]|0;f=c[f+4>>2]|0;l=2;while(1)if((l|0)<(b|0))l=l<<1;else break;g=c[7389]|0;if((g|0)!=0?(Wa[g&127](100)|0)!=0:0)q=17;else q=5;a:do if((q|0)==5){k=(l*60|0)+16|0;p=Sv(k|0,((k|0)<0)<<31>>31|0,-1,-1)|0;n=L()|0;if(!(n>>>0>0|(n|0)==0&p>>>0>2147483390)){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](k)|0;if(!g){q=17;break}else p=g}else{g=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){p=c[14978]|0;n=Tv(i|0,j|0,g|0,((g|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&n>>>0<=p>>>0)&1}i=Wa[c[29340>>2]&127](g)|0;if(!i){q=17;break}g=Wa[c[29352>>2]&127](i)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0){c[14987]=g;p=i}else p=i}gw(p|0,0,k|0)|0;n=p+16|0;c[p>>2]=l;c[p+4>>2]=0;c[p+12>>2]=n;c[p+8>>2]=n+(l*56|0);c[e>>2]=p;n=(p|0)==0;g=n?7:0;i=n^1;b:do if((b|0)>0&i){l=p+12|0;m=a+40|0;j=0;while(1){i=c[l>>2]|0;k=i+(j*56|0)|0;g=ai(a,k,m,h,f)|0;if(g|0){q=21;break}g=o;c[g>>2]=0;c[g+4>>2]=0;g=bi(k,o)|0;s=k;h=o;s=Sv(c[h>>2]|0,c[h+4>>2]|0,c[s>>2]|0,c[s+4>>2]|0)|0;h=L()|0;f=i+(j*56|0)+8|0;i=f;c[i>>2]=s;c[i+4>>2]=h;if(g|0)break;g=ci(k)|0;h=c[f>>2]|0;f=c[f+4>>2]|0;j=j+1|0;i=(g|0)==0;if(!((j|0)<(b|0)&i)){q=25;break b}}if((q|0)==21)f=i+(j*56|0)+8|0;h=c[f>>2]|0;f=c[f+4>>2]|0}else q=25;while(0);do if((q|0)==25)if(!i)if(n)break a;else break;else{s=g;p=h;q=f;e=d;d=e;c[d>>2]=p;e=e+4|0;c[e>>2]=q;Ra=r;return s|0}while(0);if((c[p>>2]|0)>0){m=p+12|0;l=0;do{j=c[m>>2]|0;k=j+(l*56|0)|0;i=c[j+(l*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{s=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[j+(l*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{s=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[j+(l*56|0)+48>>2]|0;do if(i|0){xg(c[i+4>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{s=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);i=k;j=i+56|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(j|0));l=l+1|0}while((l|0)<(c[p>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{s=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}else q=17}while(0);if((q|0)==17){c[e>>2]=0;g=7}c[e>>2]=0;s=g;p=h;q=f;e=d;d=e;c[d>>2]=p;e=e+4|0;c[e>>2]=q;Ra=r;return s|0}function ai(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;g=c[7389]|0;if(g|0?Wa[g&127](201)|0:0){b=266;return b|0}h=b+44|0;if(c[h>>2]|0)c[h>>2]=0;n=b;c[n>>2]=e;c[n+4>>2]=f;n=d+8|0;l=c[n>>2]|0;n=c[n+4>>2]|0;k=b+8|0;i=k;c[i>>2]=l;c[i+4>>2]=n;i=c[d>>2]|0;j=b+24|0;c[j>>2]=i;d=a+8|0;g=c[d>>2]|0;a=c[(c[g+24>>2]|0)+156>>2]|0;m=((a|0)<0)<<31>>31;if(!((n|0)>(m|0)|(n|0)==(m|0)&l>>>0>a>>>0)?(c[c[i>>2]>>2]|0)>2:0){c[h>>2]=0;g=c[d>>2]|0}i=c[g+12>>2]|0;d=((i|0)<0)<<31>>31;e=Zv(e|0,f|0,i|0,d|0)|0;L()|0;h=b+36|0;g=c[h>>2]|0;if(!g){n=Sv(i|0,d|0,-1,-1)|0;m=L()|0;do if(!(m>>>0>0|(m|0)==0&n>>>0>2147483390)){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](i)|0;break}g=Wa[c[29356>>2]&127](i)|0;if((c[14985]|0)>>>0>>0)c[14985]=i;a=59064;d=c[a>>2]|0;a=c[a+4>>2]|0;if((a|0)>0|(a|0)==0&d>>>0>0){n=c[14978]|0;m=Tv(d|0,a|0,g|0,((g|0)<0)<<31>>31|0)|0;l=L()|0;c[14768]=((l|0)<0|(l|0)==0&m>>>0<=n>>>0)&1}g=Wa[c[29340>>2]&127](g)|0;if(g){d=Wa[c[29352>>2]&127](g)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0)c[14987]=d}else g=0}else g=0;while(0);c[h>>2]=g;c[b+40>>2]=i;d=(g|0)==0?7:0}else d=0;if(!((e|0)!=0&(d|0)==0)){n=d;return n|0}l=i-e|0;n=b;m=c[n>>2]|0;n=c[n+4>>2]|0;i=Sv(m|0,n|0,l|0,((l|0)<0)<<31>>31|0)|0;h=L()|0;f=k;k=c[f>>2]|0;f=c[f+4>>2]|0;b=Tv(k|0,f|0,m|0,n|0)|0;L()|0;j=c[j>>2]|0;n=_a[c[(c[j>>2]|0)+8>>2]&127](j,g+e|0,(h|0)>(f|0)|(h|0)==(f|0)&i>>>0>k>>>0?b:l,m,n)|0;return n|0}function bi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=Ra;Ra=Ra+32|0;i=j;h=j+16|0;f=c[b+44>>2]|0;e=b;g=c[e>>2]|0;e=c[e+4>>2]|0;if(f|0){h=(Of(f+g|0,d)|0)&255;d=b;h=Sv(c[d>>2]|0,c[d+4>>2]|0,h|0,0)|0;d=L()|0;i=b;c[i>>2]=h;c[i+4>>2]=d;i=0;Ra=j;return i|0}f=c[b+40>>2]|0;e=Zv(g|0,e|0,f|0,((f|0)<0)<<31>>31|0)|0;L()|0;if((e|0)!=0&(f-e|0)>8){h=(Of((c[b+36>>2]|0)+e|0,d)|0)&255;d=b;h=Sv(c[d>>2]|0,c[d+4>>2]|0,h|0,0)|0;d=L()|0;i=b;c[i>>2]=h;c[i+4>>2]=d;i=0;Ra=j;return i|0}e=0;while(1){f=di(b,1,h)|0;if(f|0){e=9;break}g=a[c[h>>2]>>0]|0;a[i+(e&15)>>0]=g;if(g<<24>>24<0)e=e+1|0;else{e=8;break}}if((e|0)==8){Of(i,d)|0;i=0;Ra=j;return i|0}else if((e|0)==9){i=f;Ra=j;return i|0}return 0}function ci(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=Ra;Ra=Ra+16|0;g=i;f=g;c[f>>2]=0;c[f+4>>2]=0;f=a;d=c[f+4>>2]|0;h=a+8|0;e=c[h+4>>2]|0;do if(!((d|0)<(e|0)|((d|0)==(e|0)?(c[f>>2]|0)>>>0<(c[h>>2]|0)>>>0:0))){h=a+48|0;b=c[h>>2]|0;if(b){d=ei(b)|0;j=b+32|0;f=b+48|0;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];j=b+40|0;f=b+8|0;e=c[f>>2]|0;f=c[f+4>>2]|0;if((c[j>>2]|0)==(e|0)?(c[j+4>>2]|0)==(f|0):0)c[b+20>>2]=1;if(!d)if(!(c[b+20>>2]|0)){b=ai(c[b>>2]|0,a,b+32|0,e,f)|0;if(!b)break;Ra=i;return b|0}else g=0;else g=d}else g=0;b=c[a+28>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{j=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);b=c[a+36>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{j=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);d=c[h>>2]|0;do if(d|0){e=c[d+4>>2]|0;do if(e|0){if((c[e>>2]|0)>0){f=e+12|0;b=0;do{yg((c[f>>2]|0)+(b*56|0)|0);b=b+1|0}while((b|0)<(c[e>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{j=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{j=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}while(0);b=a;d=b+56|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));j=g;Ra=i;return j|0}while(0);b=bi(a,g)|0;if(b|0){j=b;Ra=i;return j|0}j=c[g>>2]|0;c[a+20>>2]=j;j=di(a,j,a+32|0)|0;Ra=i;return j|0}function di(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,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+16|0;n=o;e=c[a+44>>2]|0;g=a;h=c[g>>2]|0;g=c[g+4>>2]|0;if(e|0){c[d>>2]=e+h;b=Sv(h|0,g|0,b|0,((b|0)<0)<<31>>31|0)|0;d=L()|0;n=a;c[n>>2]=b;c[n+4>>2]=d;n=0;Ra=o;return n|0}m=a+40|0;e=c[m>>2]|0;f=((e|0)<0)<<31>>31;l=Zv(h|0,g|0,e|0,f|0)|0;L()|0;do if(!l){k=a+8|0;k=Tv(c[k>>2]|0,c[k+4>>2]|0,h|0,g|0)|0;j=L()|0;i=c[a+24>>2]|0;e=_a[c[(c[i>>2]|0)+8>>2]&127](i,c[a+36>>2]|0,(j|0)>(f|0)|(j|0)==(f|0)&k>>>0>e>>>0?e:k,h,g)|0;if(!e){e=c[m>>2]|0;break}else{n=e;Ra=o;return n|0}}while(0);k=e-l|0;if((k|0)>=(b|0)){c[d>>2]=(c[a+36>>2]|0)+l;d=a;b=Sv(c[d>>2]|0,c[d+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;d=L()|0;n=a;c[n>>2]=b;c[n+4>>2]=d;n=0;Ra=o;return n|0}j=a+16|0;e=c[j>>2]|0;do if((e|0)<(b|0)){g=(e|0)<64;i=cw(e|0,((e|0)<0)<<31>>31|0,1)|0;h=L()|0;e=((b|0)<0)<<31>>31;h=g?0:h;i=g?128:i;while(1){f=cw(i|0,h|0,1)|0;g=L()|0;if((h|0)<(e|0)|(h|0)==(e|0)&i>>>0>>0){h=g;i=f}else break}f=a+28|0;e=sb(c[f>>2]|0,i,h)|0;if(!e){n=7;Ra=o;return n|0}else{c[j>>2]=i;c[f>>2]=e;h=f;break}}else{e=a+28|0;h=e;e=c[e>>2]|0}while(0);ew(e|0,(c[a+36>>2]|0)+l|0,k|0)|0;j=a;j=Sv(c[j>>2]|0,c[j+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0;l=L()|0;e=a;c[e>>2]=j;c[e+4>>2]=l;e=b-k|0;a:do if((e|0)>0){while(1){g=c[m>>2]|0;g=(e|0)>(g|0)?g:e;f=di(a,g,n)|0;if(f|0)break;ew((c[h>>2]|0)+(b-e)|0,c[n>>2]|0,g|0)|0;e=e-g|0;if((e|0)<=0)break a}n=f;Ra=o;return n|0}while(0);c[d>>2]=c[h>>2];n=0;Ra=o;return n|0}function ei(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,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=Ra;Ra=Ra+16|0;y=E+4|0;A=E;C=b+8|0;B=c[C>>2]|0;C=c[C+4>>2]|0;z=b+4|0;j=c[z>>2]|0;i=c[b+48>>2]|0;h=c[(c[(c[b>>2]|0)+8>>2]|0)+12>>2]|0;g=((h|0)<0)<<31>>31;x=Sv(h|0,g|0,-1,-1)|0;w=L()|0;do if(w>>>0>0|(w|0)==0&x>>>0>2147483390){d=7;x=0;v=0;e=0;w=0;g=0;f=0}else{if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](h)|0;if(!d){d=7;x=0;v=0;e=0;w=0;g=0;f=0;break}else e=d}else{d=Wa[c[29356>>2]&127](h)|0;if((c[14985]|0)>>>0>>0)c[14985]=h;f=59064;e=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&e>>>0>0){x=c[14978]|0;w=Tv(e|0,f|0,d|0,((d|0)<0)<<31>>31|0)|0;v=L()|0;c[14768]=((v|0)<0|(v|0)==0&w>>>0<=x>>>0)&1}e=Wa[c[29340>>2]&127](d)|0;if(!e){d=7;x=0;v=0;e=0;w=0;g=0;f=0;break}d=Wa[c[29352>>2]&127](e)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0)c[14987]=d}w=Zv(B|0,C|0,h|0,g|0)|0;L()|0;g=Tv(B|0,C|0,w|0,((w|0)<0)<<31>>31|0)|0;d=0;x=e;v=h;e=w;w=i;f=L()|0}while(0);u=j+12|0;q=j+8|0;r=b+16|0;s=((v|0)<0)<<31>>31;t=y+1|0;i=e;h=e;while(1){n=c[u>>2]|0;o=c[(c[q>>2]|0)+4>>2]|0;p=c[n+(o*56|0)+20>>2]|0;if(!(c[n+(o*56|0)+24>>2]|0)){D=35;break}j=((h|0)<0)<<31>>31;k=((p|0)<0)<<31>>31;e=1;l=p;m=k;while(1){l=bw(l|0,m|0,7)|0;m=L()|0;if((l|0)==0&(m|0)==0)break;else e=e+1|0}l=Sv(g|0,f|0,h|0,j|0)|0;l=Sv(l|0,L()|0,p|0,k|0)|0;l=Sv(l|0,L()|0,e|0,0)|0;e=L()|0;m=c[r>>2]|0;m=Sv(B|0,C|0,m|0,((m|0)<0)<<31>>31|0)|0;j=L()|0;if((e|0)>(j|0)|(e|0)==(j|0)&l>>>0>m>>>0){D=35;break}do if(p>>>0>=128)if(p>>>0>=16384){e=wh(y,p,k)|0;if((e|0)>0){D=24;break}else break}else{e=bw(p|0,k|0,7)|0;L()|0;a[y>>0]=e&255|-128;e=2;j=t;D=23;break}else{e=1;j=y;D=23}while(0);if((D|0)==23){a[j>>0]=p&127;D=24}a:do if((D|0)==24){D=0;k=e;do{if(d|0)break a;j=v-h|0;j=(k|0)>(j|0)?j:k;ew(x+h|0,y+(e-k)|0,j|0)|0;h=j+h|0;if((h|0)==(v|0)){l=Sv(g|0,f|0,v|0,s|0)|0;m=L()|0;h=Sv(g|0,f|0,i|0,((i|0)<0)<<31>>31|0)|0;d=L()|0;d=_a[c[(c[w>>2]|0)+12>>2]&127](w,x+i|0,v-i|0,h,d)|0;i=0;h=0;g=l;f=m}else d=0;k=k-j|0}while((k|0)>0)}while(0);k=c[n+(o*56|0)+32>>2]|0;b:do if((p|0)>0){j=p;do{if(d|0)break b;e=v-h|0;e=(j|0)>(e|0)?e:j;ew(x+h|0,k+(p-j)|0,e|0)|0;h=e+h|0;if((h|0)==(v|0)){n=Sv(g|0,f|0,v|0,s|0)|0;o=L()|0;h=Sv(g|0,f|0,i|0,((i|0)<0)<<31>>31|0)|0;d=L()|0;d=_a[c[(c[w>>2]|0)+12>>2]&127](w,x+i|0,v-i|0,h,d)|0;i=0;h=0;g=n;f=o}else d=0;j=j-e|0}while((j|0)>0)}while(0);e=fi(c[z>>2]|0,A)|0;if(e){j=e;break}}if((D|0)==35)j=0;e=b+56|0;if(d){C=Sv(g|0,f|0,h|0,((h|0)<0)<<31>>31|0)|0;b=L()|0;D=e;c[D>>2]=C;c[D+4>>2]=b;if(!x){D=d;b=(j|0)==0;D=b?D:j;Ra=E;return D|0}}else{if(!x){C=Sv(g|0,f|0,h|0,((h|0)<0)<<31>>31|0)|0;b=L()|0;D=e;c[D>>2]=C;c[D+4>>2]=b;D=0;b=(j|0)==0;D=b?D:j;Ra=E;return D|0}if((h|0)>(i|0)){D=Sv(g|0,f|0,i|0,((i|0)<0)<<31>>31|0)|0;d=L()|0;d=_a[c[(c[w>>2]|0)+12>>2]&127](w,x+i|0,h-i|0,D,d)|0}else d=0;C=Sv(g|0,f|0,h|0,((h|0)<0)<<31>>31|0)|0;b=L()|0;D=e;c[D>>2]=C;c[D+4>>2]=b}if(!(c[7324]|0)){ab[c[29344>>2]&127](x);D=d;b=(j|0)==0;D=b?D:j;Ra=E;return D|0}else{D=Wa[c[29352>>2]&127](x)|0;c[14978]=(c[14978]|0)-D;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](x);D=d;b=(j|0)==0;D=b?D:j;Ra=E;return D|0}return 0}function fi(a,b){a=a|0;b=b|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;q=Ra;Ra=Ra+16|0;k=q;l=a+8|0;f=c[(c[l>>2]|0)+4>>2]|0;p=c[a+4>>2]|0;n=a+12|0;e=ci((c[n>>2]|0)+(f*56|0)|0)|0;if(e|0){p=e;Ra=q;return p|0}c[k>>2]=0;e=c[n>>2]|0;a=(c[a>>2]|0)+f|0;if((a|0)>1){j=p+32|0;g=e+((f|1)*56|0)|0;f=e+((f&65534)*56|0)|0;h=a;do{i=h;h=(h|0)/2|0;e=f+24|0;do if(!(c[e>>2]|0))o=12;else{if((c[g+24>>2]|0?(m=$a[c[j>>2]&127](p,k,c[f+32>>2]|0,c[f+20>>2]|0,c[g+32>>2]|0,c[g+20>>2]|0)|0,(m|0)>=0):0)?!(f>>>0>>0&(m|0)==0):0){if(!(c[e>>2]|0)){o=12;break}c[k>>2]=0;o=12;break}e=c[n>>2]|0;a=c[l>>2]|0;c[a+(h<<2)>>2]=(f-e|0)/56|0;g=e+((c[a+((h^1)<<2)>>2]|0)*56|0)|0;c[k>>2]=0}while(0);if((o|0)==12){o=0;e=c[n>>2]|0;a=c[l>>2]|0;c[a+(h<<2)>>2]=(g-e|0)/56|0;f=e+((c[a+((h^1)<<2)>>2]|0)*56|0)|0}}while((i|0)>3)}else a=c[l>>2]|0;c[b>>2]=(c[e+((c[a+4>>2]|0)*56|0)+24>>2]|0)==0&1;p=d[(c[p+12>>2]|0)+11>>0]|0;Ra=q;return p|0}function gi(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=Ra;Ra=Ra+48|0;j=n+32|0;i=n+24|0;h=n+16|0;g=n;k=c[b>>2]|0;do if(!(a[k+81>>0]|0)){m=b+4|0;if(c[c[m>>2]>>2]|0){Ra=n;return}if(!(c[b+16>>2]&1)){if(!(0==0?(c[k+32>>2]&1|0)==0:0)){c[g>>2]=32306;c[g+4>>2]=123725;c[g+8>>2]=31517;Db(11,32001,g);d=11;break}c[h>>2]=(d|0)==0?35133:d;d=dd(k,35135,h)|0;if((f|0)!=0?(a[f>>0]|0)!=0:0){c[i>>2]=d;c[i+4>>2]=f;d=dd(k,35166,i)|0}c[c[m>>2]>>2]=d;c[j>>2]=32306;c[j+4>>2]=123732;c[j+8>>2]=31517;Db(11,32001,j);d=11;break}a:do if(!f)d=0;else{i=(Eu(f)|0)+1|0;b:do if(!k){k=Sv(i|0,0,-1,-1)|0;j=L()|0;if(j>>>0>0|(j|0)==0&k>>>0>2147483390){d=0;break a}if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](i)|0;l=28;break}d=Wa[c[29356>>2]&127](i)|0;if((c[14985]|0)>>>0>>0)c[14985]=i;h=59064;g=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&g>>>0>0){k=c[14978]|0;j=Tv(g|0,h|0,d|0,((d|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&j>>>0<=k>>>0)&1}d=Wa[c[29340>>2]&127](d)|0;if(!d){d=0;break a}g=Wa[c[29352>>2]&127](d)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0)c[14987]=g}else{if(!(c[k+272>>2]|0)){do if(!(0<0|(0==0?(e[k+276>>1]|0)>>>0>>0:0))){g=k+300|0;d=c[g>>2]|0;if(d|0){c[g>>2]=c[d>>2];l=k+284|0;c[l>>2]=(c[l>>2]|0)+1;l=28;break b}g=k+296|0;d=c[g>>2]|0;if(!d){d=k+292|0;break}else{c[g>>2]=c[d>>2];l=k+284|0;c[l>>2]=(c[l>>2]|0)+1;l=28;break b}}else d=k+288|0;while(0);c[d>>2]=(c[d>>2]|0)+1}d=_d(k,i,0)|0;l=28}while(0);if((l|0)==28)if(!d){d=0;break}ew(d|0,f|0,i|0)|0}while(0);c[c[m>>2]>>2]=d;d=1}else d=7;while(0);c[b+12>>2]=d;Ra=n;return}function hi(b,e,f){b=b|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;q=c[b+20>>2]|0;if((q|0)<=0){r=0;return r|0}o=c[b+16>>2]|0;if(!f){b=0;while(1){g=ji((c[o+((b^b>>>0<2)<<4)+12>>2]|0)+24|0,e)|0;if(g|0)break;b=b+1|0;if((b|0)>=(q|0)){p=0;r=15;break}}if((r|0)==15)return p|0;r=g;return r|0}m=a[f>>0]|0;l=d[208+(m&255)>>0]|0;m=m<<24>>24==0;b=0;k=0;while(1){h=k^k>>>0<2;j=c[o+(h<<4)+12>>2]|0;h=c[o+(h<<4)>>2]|0;g=l-(d[208+(d[h>>0]|0)>>0]|0)|0;if(!(m|(g|0)!=0)){i=f;do{i=i+1|0;h=h+1|0;s=a[i>>0]|0;g=(d[208+(s&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(s<<24>>24==0|(g|0)!=0))}if(!g){n=ji(j+24|0,e)|0;if(!n)b=n;else break}k=k+1|0;if((k|0)>=(q|0)){p=b;r=15;break}}if((r|0)==15)return p|0;s=n;return s|0}function ii(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a[b>>0]|0;a:do switch(e<<24>>24){case 45:{e=1;f=b+1|0;g=15;break}case 43:{e=0;f=b+1|0;g=15;break}case 48:{switch(a[b+1>>0]|0){case 88:case 120:break;default:{h=0;e=48;break a}}e=b+2|0;f=a[e>>0]|0;if(!(a[880+(f&255)>>0]&8)){e=0;f=b;g=15}else{if(f<<24>>24==48){b=b+3|0;while(1){e=a[b>>0]|0;if(e<<24>>24==48)b=b+1|0;else{f=e;break}}}else b=e;if(!(a[880+(f&255)>>0]&8)){e=0;b=1}else{g=0;e=0;do{h=f<<24>>24;e=(0-(h>>>6&1)&9)+h&15|e<<4;g=g+1|0;f=a[b+g>>0]|0;h=a[880+(f&255)>>0]&8}while(g>>>0<8&h<<24>>24!=0);b=h<<24>>24==0}if(!((e|0)>-1&b)){d=0;return d|0}c[d>>2]=e;d=1;return d|0}break}default:h=0}while(0);if((g|0)==15){h=e;b=f;e=a[f>>0]|0}if(((e&255)+-48|0)>>>0>=10){d=0;return d|0}if(e<<24>>24==48)do{b=b+1|0;e=a[b>>0]|0}while(e<<24>>24==48);if((e+-48&255)<10){e=(e<<24>>24)+-48|0;g=((e|0)<0)<<31>>31;f=a[b+1>>0]|0;if((f+-48&255)<10){f=(f<<24>>24)+-48|0;e=Yv(e|0,g|0,10,0)|0;e=Sv(e|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;f=a[b+2>>0]|0;if((f+-48&255)<10){f=(f<<24>>24)+-48|0;e=Yv(e|0,g|0,10,0)|0;e=Sv(e|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;f=a[b+3>>0]|0;if((f+-48&255)<10){f=(f<<24>>24)+-48|0;e=Yv(e|0,g|0,10,0)|0;e=Sv(e|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;f=a[b+4>>0]|0;if((f+-48&255)<10){f=(f<<24>>24)+-48|0;e=Yv(e|0,g|0,10,0)|0;e=Sv(e|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;f=a[b+5>>0]|0;if((f+-48&255)<10){f=(f<<24>>24)+-48|0;e=Yv(e|0,g|0,10,0)|0;e=Sv(e|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;f=a[b+6>>0]|0;if((f+-48&255)<10){f=(f<<24>>24)+-48|0;e=Yv(e|0,g|0,10,0)|0;e=Sv(e|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;f=a[b+7>>0]|0;if((f+-48&255)<10){f=(f<<24>>24)+-48|0;e=Yv(e|0,g|0,10,0)|0;e=Sv(e|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;f=a[b+8>>0]|0;if((f+-48&255)<10){f=(f<<24>>24)+-48|0;e=Yv(e|0,g|0,10,0)|0;e=Sv(e|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;f=a[b+9>>0]|0;if((f+-48&255)<10){f=(f<<24>>24)+-48|0;e=Yv(e|0,g|0,10,0)|0;e=Sv(e|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;f=L()|0;if(((a[b+10>>0]|0)+-48&255)<10){d=0;return d|0}else b=f}else b=g}else b=g}else b=g}else b=g}else b=g}else b=g}else b=g}else b=g}else b=g}else{e=0;b=0}g=Tv(e|0,b|0,h|0,0)|0;f=L()|0;if((f|0)>0|(f|0)==0&g>>>0>2147483647){d=0;return d|0}c[d>>2]=(h|0)==0?e:0-e|0;d=1;return d|0}function ji(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;i=c[b+12>>2]|0;if(!i){g=b+4|0;f=b+8|0}else{g=a[e>>0]|0;if(!(g<<24>>24))f=0;else{f=0;h=e;do{h=h+1|0;f=G(f+(d[208+(g&255)>>0]|0)|0,-1640531535)|0;g=a[h>>0]|0}while(g<<24>>24!=0)}f=(f>>>0)%((c[b>>2]|0)>>>0)|0;g=i+(f<<3)|0;f=i+(f<<3)+4|0}g=c[g>>2]|0;if(!g){e=59292;e=e+8|0;e=c[e>>2]|0;return e|0}j=d[208+(d[e>>0]|0)>>0]|0;while(1){f=c[f>>2]|0;g=g+-1|0;b=c[f+12>>2]|0;i=a[b>>0]|0;h=(d[208+(i&255)>>0]|0)-j|0;if(!(i<<24>>24==0|(h|0)!=0)){i=e;do{b=b+1|0;i=i+1|0;k=a[b>>0]|0;h=(d[208+(k&255)>>0]|0)-(d[208+(d[i>>0]|0)>>0]|0)|0}while(!(k<<24>>24==0|(h|0)!=0))}if(!h){g=14;break}if(!g){f=59292;g=14;break}}if((g|0)==14){k=f+8|0;k=c[k>>2]|0;return k|0}return 0}function ki(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=Ra;Ra=Ra+80|0;l=o;if(!h){Ra=o;return 0}i=c[h>>2]|0;if(!i){Ra=o;return 0}n=c[h+8>>2]|0;if(!n){Ra=o;return 0}k=c[f>>2]|0;j=c[f+4>>2]|0;m=Sd(k,i,j)|0;if(!m){Ra=o;return 0}h=c[h+4>>2]|0;a:do if(h|0){f=a[i>>0]|0;g=(d[208+(f&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0;if(!(f<<24>>24==0|(g|0)!=0)){f=h;do{i=i+1|0;f=f+1|0;p=a[i>>0]|0;g=(d[208+(p&255)>>0]|0)-(d[208+(d[f>>0]|0)>>0]|0)|0}while(!(p<<24>>24==0|(g|0)!=0))}if(!g){g=c[m+8>>2]|0;if(!g)break;while(1){f=g+55|0;f=d[f>>0]|d[f+1>>0]<<8;if((f&3)==2)break;g=c[g+20>>2]|0;if(!g)break a}h=g;i=g+55|0;g=f}else{g=hi(k,h,j)|0;if(!g)break;p=g+55|0;h=g;i=p;g=d[p>>0]|d[p+1>>0]<<8}p=(e[h+50>>1]|0)+1|0;g=g&-5;a[i>>0]=g;a[i+1>>0]=g>>8;g=h+8|0;li(n,p,c[g>>2]|0,h);p=d[i>>0]|d[i+1>>0]<<8|128;a[i>>0]=p;a[i+1>>0]=p>>8;if(c[h+36>>2]|0){Ra=o;return 0}b[m+44>>1]=b[c[g>>2]>>1]|0;p=m+36|0;c[p>>2]=c[p>>2]|16;Ra=o;return 0}while(0);p=m+46|0;k=l+48|0;b[k>>1]=b[p>>1]|0;li(n,1,m+44|0,l);b[p>>1]=b[k>>1]|0;p=m+36|0;c[p>>2]=c[p>>2]|16;Ra=o;return 0}function li(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=Ra;Ra=Ra+16|0;o=p;k=a[f>>0]|0;if((g|0)>0&k<<24>>24!=0){m=0;do{do if((k+-48&255)<10){j=0;do{j=(j*10|0)+-48+(k<<24>>24)|0;f=f+1|0;k=a[f>>0]|0}while((k+-48&255)<10);if(j>>>0>=8){if(j>>>0>255){l=40;k=0;do{l=(l&65535)+40|0;q=j;j=bw(j|0,k|0,4)|0;r=k;k=L()|0}while(r>>>0>0|(r|0)==0&q>>>0>4095);l=l&65535}else{l=40;k=0}if(k>>>0>0|(k|0)==0&j>>>0>15)do{l=(l&65535)+10&65535;r=j;j=bw(j|0,k|0,1)|0;q=k;k=L()|0}while(q>>>0>0|(q|0)==0&r>>>0>31)}else{if(j>>>0<2){j=0;break}l=40;k=0;do{l=(l&65535)+65526|0;j=cw(j|0,k|0,1)|0;k=L()|0}while(k>>>0<0|(k|0)==0&j>>>0<8);l=l&65535}j=(l&65535)+65526+(e[3648+((j&7)<<1)>>1]|0)&65535}else j=0;while(0);b[h+(m<<1)>>1]=j;f=(a[f>>0]|0)==32?f+1|0:f;m=m+1|0;k=a[f>>0]|0}while((m|0)<(g|0)&k<<24>>24!=0)}g=i+55|0;r=(d[g>>0]|d[g+1>>0]<<8)&-69;a[g>>0]=r;a[g+1>>0]=r>>8;if(!(a[f>>0]|0)){Ra=p;return}m=i+48|0;do{do if(!(md(35228,f,31411,91)|0)){r=d[g>>0]|d[g+1>>0]<<8|4;a[g>>0]=r;a[g+1>>0]=r>>8}else{if(md(35239,f,31411,91)|0){if(md(35249,f,31411,91)|0)break;r=d[g>>0]|d[g+1>>0]<<8|64;a[g>>0]=r;a[g+1>>0]=r>>8;break}c[o>>2]=0;ii(f+3|0,o)|0;j=c[o>>2]|0;k=((j|0)<0)<<31>>31;if(j>>>0<8)if(j>>>0<2)j=0;else{l=40;do{l=(l&65535)+65526|0;j=cw(j|0,k|0,1)|0;k=L()|0}while(k>>>0<0|(k|0)==0&j>>>0<8);l=l&65535;n=39}else{if(j>>>0>255){l=40;do{l=(l&65535)+40|0;r=j;j=bw(j|0,k|0,4)|0;q=k;k=L()|0}while(q>>>0>0|(q|0)==0&r>>>0>4095);l=l&65535}else l=40;if(k>>>0>0|(k|0)==0&j>>>0>15){do{l=(l&65535)+10&65535;r=j;j=bw(j|0,k|0,1)|0;q=k;k=L()|0}while(q>>>0>0|(q|0)==0&r>>>0>31);n=39}else n=39}if((n|0)==39){n=0;j=(l&65535)+65526+(e[3648+((j&7)<<1)>>1]|0)&65535}b[m>>1]=j}while(0);a:while(1){j=a[f>>0]|0;switch(j<<24>>24){case 32:{n=45;break a}case 0:break a;default:{}}f=f+1|0}if((n|0)==45){n=0;do{f=f+1|0;j=a[f>>0]|0}while(j<<24>>24==32)}}while(j<<24>>24!=0);Ra=p;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,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=b+12|0;o=c[t>>2]|0;n=(o|0)==0;if(n){h=0;g=b+4|0;i=b+8|0}else{h=a[e>>0]|0;if(!(h<<24>>24))g=0;else{g=0;i=e;do{i=i+1|0;g=G(g+(d[208+(h&255)>>0]|0)|0,-1640531535)|0;h=a[i>>0]|0}while(h<<24>>24!=0)}i=(g>>>0)%((c[b>>2]|0)>>>0)|0;h=i;g=o+(i<<3)|0;i=o+(i<<3)+4|0}g=c[g>>2]|0;a:do if(!g)k=59292;else{m=d[208+(d[e>>0]|0)>>0]|0;while(1){i=c[i>>2]|0;g=g+-1|0;k=c[i+12>>2]|0;r=a[k>>0]|0;j=(d[208+(r&255)>>0]|0)-m|0;if(!(r<<24>>24==0|(j|0)!=0)){l=e;do{k=k+1|0;l=l+1|0;r=a[k>>0]|0;j=(d[208+(r&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(r<<24>>24==0|(j|0)!=0))}if(!j){k=i;break a}if(!g){k=59292;break}}}while(0);g=k+8|0;l=c[g>>2]|0;i=(f|0)==0;if(l|0){if(!i){c[g>>2]=f;c[k+12>>2]=e;b=l;return b|0}e=c[k+4>>2]|0;g=c[k>>2]|0;if(!e){c[b+8>>2]=g;i=g;j=g}else{c[e>>2]=g;j=c[k>>2]|0;i=j}if(i|0)c[i+4>>2]=e;if(!n){g=o+(h<<3)+4|0;if((c[g>>2]|0)==(k|0))c[g>>2]=j;s=o+(h<<3)|0;c[s>>2]=(c[s>>2]|0)+-1}if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{s=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}e=b+4|0;s=(c[e>>2]|0)+-1|0;c[e>>2]=s;if(s|0){b=l;return b|0}h=b+8|0;g=c[h>>2]|0;c[h>>2]=0;h=c[t>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{s=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[t>>2]=0;c[b>>2]=0;if(g|0)do{h=g;g=c[g>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](h);else{b=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h)}}while((g|0)!=0);c[e>>2]=0;b=l;return b|0}if(i){b=0;return b|0}if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](16)|0;if(!g){b=f;return b|0}else r=g}else{g=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){r=c[14978]|0;o=Tv(i|0,j|0,g|0,((g|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&o>>>0<=r>>>0)&1}i=Wa[c[29340>>2]&127](g)|0;if(!i){b=f;return b|0}g=Wa[c[29352>>2]&127](i)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0){c[14987]=g;r=i}else r=i}c[r+12>>2]=e;c[r+8>>2]=f;f=b+4|0;g=(c[f>>2]|0)+1|0;c[f>>2]=g;if((g>>>0>9?(p=c[b>>2]|0,g>>>0>p<<1>>>0):0)?(q=g<<4>>>0>1024?128:g<<1,(q|0)!=(p|0)):0){g=q<<3;q=Sv(g|0,0,-1,-1)|0;p=L()|0;do if(!(p>>>0>0|(p|0)==0&q>>>0>2147483390)){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](g)|0;break}j=Wa[c[29356>>2]&127](g)|0;if((c[14985]|0)>>>0>>0)c[14985]=g;i=59064;g=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&g>>>0>0){q=c[14978]|0;p=Tv(g|0,i|0,j|0,((j|0)<0)<<31>>31|0)|0;f=L()|0;c[14768]=((f|0)<0|(f|0)==0&p>>>0<=q>>>0)&1}i=Wa[c[29340>>2]&127](j)|0;if(i){g=Wa[c[29352>>2]&127](i)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0)c[14987]=g}else i=0}else i=0;while(0);if(i){g=c[t>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{q=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);c[t>>2]=i;o=Wa[c[29352>>2]&127](i)|0;n=o>>>3;c[b>>2]=n;gw(i|0,0,o&-8|0)|0;o=b+8|0;g=c[o>>2]|0;c[o>>2]=0;if(g|0){j=0;while(1){k=c[g+12>>2]|0;l=a[k>>0]|0;if(!(l<<24>>24))h=0;else{h=0;do{k=k+1|0;h=G(h+(d[208+(l&255)>>0]|0)|0,-1640531535)|0;l=a[k>>0]|0}while(l<<24>>24!=0)}k=(h>>>0)%(n>>>0)|0;h=g;g=c[g>>2]|0;l=i+(k<<3)|0;do if(l){m=c[l>>2]|0;if(!m){c[l>>2]=1;c[i+(k<<3)+4>>2]=h;s=86;break}q=i+(k<<3)+4|0;k=c[q>>2]|0;c[l>>2]=m+1;c[q>>2]=h;if(k){c[h>>2]=k;l=k+4|0;c[h+4>>2]=c[l>>2];k=c[l>>2]|0;if(!k){c[o>>2]=h;j=h}else c[k>>2]=h;c[l>>2]=h;h=j}else s=86}else s=86;while(0);if((s|0)==86){s=0;c[h>>2]=j;if(j|0)c[j+4>>2]=h;c[h+4>>2]=0;c[o>>2]=h}if(!g)break;else j=h}}h=a[e>>0]|0;if(!(h<<24>>24))g=0;else{g=0;do{e=e+1|0;g=G(g+(d[208+(h&255)>>0]|0)|0,-1640531535)|0;h=a[e>>0]|0}while(h<<24>>24!=0)}h=(g>>>0)%((c[b>>2]|0)>>>0)|0}}g=c[t>>2]|0;e=g+(h<<3)|0;do if(!((g|0)==0|(e|0)==0)){i=c[e>>2]|0;if(!i){c[e>>2]=1;c[g+(h<<3)+4>>2]=r;break}t=g+(h<<3)+4|0;g=c[t>>2]|0;c[e>>2]=i+1;c[t>>2]=r;if(g|0){c[r>>2]=g;t=g+4|0;c[r+4>>2]=c[t>>2];s=c[t>>2]|0;c[((s|0)==0?b+8|0:s)>>2]=r;c[t>>2]=r;b=0;return b|0}}while(0);g=b+8|0;h=c[g>>2]|0;c[r>>2]=h;if(h|0)c[h+4>>2]=r;c[r+4>>2]=0;c[g>>2]=r;b=0;return b|0}function ni(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d+4|0;e=c[f>>2]|0;if(!(e&8404992)){e=c[d+12>>2]|0;if(e|0?(a[d>>0]|0)!=-86:0)ni(b,e);e=c[d+16>>2]|0;do if(!e){e=d+20|0;if(!(c[f>>2]&2048)){e=c[e>>2]|0;if(!e)break;ri(b,e);break}else{e=c[e>>2]|0;if(!e)break;pi(b,e,1);break}}else ni(b,e);while(0);e=c[f>>2]|0;if(e&16777216){oi(b,c[d+44>>2]|0);e=c[f>>2]|0}}do if(e&65536|0?(g=c[d+8>>2]|0,g|0):0){if(b|0){if(c[b+480>>2]|0){Xd(b,g);break}e=g;if((c[b+304>>2]|0)>>>0<=e>>>0?(c[b+308>>2]|0)>>>0>e>>>0:0){e=b+300|0;c[g>>2]=c[e>>2];c[e>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{e=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);if(c[f>>2]&134217728|0)return;if(b|0){if(c[b+480>>2]|0){Xd(b,d);return}g=d;if((c[b+304>>2]|0)>>>0<=g>>>0?(c[b+308>>2]|0)>>>0>g>>>0:0){g=b+300|0;c[d>>2]=c[g>>2];c[g>>2]=d;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);return}else{g=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);return}}function oi(a,b){a=a|0;b=b|0;var d=0,e=0;if(!b)return;d=c[b+36>>2]|0;if(d|0)ni(a,d);d=c[b+8>>2]|0;if(d|0)ri(a,d);d=c[b+12>>2]|0;if(d|0)ri(a,d);d=c[b+28>>2]|0;if(d|0)ni(a,d);d=c[b+24>>2]|0;if(d|0)ni(a,d);d=c[b>>2]|0;do if(d|0){if(a|0){if(c[a+480>>2]|0){Xd(a,d);break}e=d;if((c[a+304>>2]|0)>>>0<=e>>>0?(c[a+308>>2]|0)>>>0>e>>>0:0){e=a+300|0;c[d>>2]=c[e>>2];c[e>>2]=d;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}while(0);d=c[b+4>>2]|0;a:do if(d){do if(a|0){if(!(c[a+480>>2]|0)){e=d;if((c[a+304>>2]|0)>>>0>e>>>0)break;if((c[a+308>>2]|0)>>>0<=e>>>0)break;e=a+300|0;c[d>>2]=c[e>>2];c[e>>2]=d}else Xd(a,d);d=b;e=34;break a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](d);e=33;break}else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);e=33;break}}else e=33;while(0);if((e|0)==33)if(a){d=b;e=34}if((e|0)==34){if(c[a+480>>2]|0){Xd(a,d);return}e=b;if((c[a+304>>2]|0)>>>0<=e>>>0?(c[a+308>>2]|0)>>>0>e>>>0:0){a=a+300|0;c[b>>2]=c[a>>2];c[a>>2]=b;return}else b=d}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{a=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-a;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}}function pi(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,l=0,m=0,n=0;if(!b)return;j=(a|0)==0;k=a+480|0;l=a+304|0;m=a+308|0;n=a+300|0;while(1){i=b;b=c[b+52>>2]|0;e=c[i>>2]|0;if(e|0)ri(a,e);qi(a,c[i+32>>2]|0);e=c[i+36>>2]|0;if(e|0)ni(a,e);e=c[i+40>>2]|0;if(e|0)ri(a,e);e=c[i+44>>2]|0;if(e|0)ni(a,e);e=c[i+48>>2]|0;if(e|0)ri(a,e);e=c[i+60>>2]|0;if(e|0)ni(a,e);e=c[i+72>>2]|0;if(e|0)do{h=e;e=c[e+32>>2]|0;oi(a,h)}while((e|0)!=0);h=c[i+64>>2]|0;do if(h|0){a:do if((c[h>>2]|0)>0){if(j){f=0;while(1){e=c[h+8+(f<<4)+4>>2]|0;if(e|0)ri(0,e);e=c[h+8+(f<<4)+8>>2]|0;if(e|0)pi(0,e,1);e=c[h+8+(f<<4)>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{g=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);f=f+1|0;if((f|0)>=(c[h>>2]|0))break a}}g=0;do{e=c[h+8+(g<<4)+4>>2]|0;if(e|0)ri(a,e);e=c[h+8+(g<<4)+8>>2]|0;if(e|0)pi(a,e,1);e=c[h+8+(g<<4)>>2]|0;b:do if(e|0){if(c[k>>2]|0){Xd(a,e);break}f=e;do if((c[l>>2]|0)>>>0<=f>>>0){if((c[m>>2]|0)>>>0<=f>>>0)break;c[e>>2]=c[n>>2];c[n>>2]=e;break b}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{f=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);g=g+1|0}while((g|0)<(c[h>>2]|0))}while(0);if(!j){if(c[k>>2]|0){Xd(a,h);break}g=h;if((c[l>>2]|0)>>>0<=g>>>0?(c[m>>2]|0)>>>0>g>>>0:0){c[h>>2]=c[n>>2];c[n>>2]=h;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{g=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);do if(d|0){if(!j){if(c[k>>2]|0){Xd(a,i);break}h=i;if((c[l>>2]|0)>>>0<=h>>>0?(c[m>>2]|0)>>>0>h>>>0:0){c[i>>2]=c[n>>2];c[n>>2]=i;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{h=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);if(!b)break;else d=1}return}function qi(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;if(!d)return;if((c[d>>2]|0)>0){n=(b|0)==0;o=b+480|0;q=b+304|0;r=b+308|0;l=b+300|0;j=0;k=d+8|0;while(1){e=c[k+4>>2]|0;do if(e|0){if(!n){if(c[o>>2]|0){Xd(b,e);break}i=e;if((c[q>>2]|0)>>>0<=i>>>0?(c[r>>2]|0)>>>0>i>>>0:0){c[e>>2]=c[l>>2];c[l>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{i=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);e=c[k+8>>2]|0;do if(e|0){if(!n){if(c[o>>2]|0){Xd(b,e);break}i=e;if((c[q>>2]|0)>>>0<=i>>>0?(c[r>>2]|0)>>>0>i>>>0:0){c[e>>2]=c[l>>2];c[l>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{i=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);e=c[k+12>>2]|0;do if(e|0){if(!n){if(c[o>>2]|0){Xd(b,e);break}i=e;if((c[q>>2]|0)>>>0<=i>>>0?(c[r>>2]|0)>>>0>i>>>0:0){c[e>>2]=c[l>>2];c[l>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{i=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);e=k+37|0;do if(a[e>>0]&2?(p=c[k+64>>2]|0,p|0):0){if(!n){if(c[o>>2]|0){Xd(b,p);break}i=p;if((c[q>>2]|0)>>>0<=i>>>0?(c[r>>2]|0)>>>0>i>>>0:0){c[p>>2]=c[l>>2];c[l>>2]=p;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{i=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);if(a[e>>0]&4?(m=c[k+64>>2]|0,m|0):0)ri(b,m);e=c[k+16>>2]|0;do if(e|0){if(!n?c[o>>2]|0:0){Vi(b,e);break}h=e+32|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if(!i)Vi(b,e)}while(0);e=c[k+20>>2]|0;if(e|0)pi(b,e,1);e=c[k+44>>2]|0;if(e|0)ni(b,e);e=c[k+48>>2]|0;do if(e|0){i=e+4|0;f=c[e>>2]|0;a:do if((c[i>>2]|0)>0){if(n){g=0;while(1){f=c[f+(g<<3)>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{h=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);g=g+1|0;f=c[e>>2]|0;if((g|0)>=(c[i>>2]|0))break a}}h=0;do{f=c[f+(h<<3)>>2]|0;b:do if(f|0){if(c[o>>2]|0){Xd(b,f);break}g=f;do if((c[q>>2]|0)>>>0<=g>>>0){if((c[r>>2]|0)>>>0<=g>>>0)break;c[f>>2]=c[l>>2];c[l>>2]=f;break b}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{g=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);h=h+1|0;f=c[e>>2]|0}while((h|0)<(c[i>>2]|0))}while(0);c:do if(f){do if(!n){if(!(c[o>>2]|0)){g=f;if((c[q>>2]|0)>>>0>g>>>0)break;if((c[r>>2]|0)>>>0<=g>>>0)break;c[f>>2]=c[l>>2];c[l>>2]=f}else Xd(b,f);f=90;break c}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);f=89;break}else{i=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);f=89;break}}else f=89;while(0);if((f|0)==89){f=0;if(!n)f=90}if((f|0)==90){if(c[o>>2]|0){Xd(b,e);break}i=e;if((c[q>>2]|0)>>>0<=i>>>0?(c[r>>2]|0)>>>0>i>>>0:0){c[e>>2]=c[l>>2];c[l>>2]=e;break}}if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{i=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);j=j+1|0;if((j|0)>=(c[d>>2]|0))break;else k=k+72|0}}if(b|0){if(c[b+480>>2]|0){Xd(b,d);return}r=d;if((c[b+304>>2]|0)>>>0<=r>>>0?(c[b+308>>2]|0)>>>0>r>>>0:0){r=b+300|0;c[d>>2]=c[r>>2];c[r>>2]=d;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);return}else{r=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);return}}function ri(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;e=c[b>>2]|0;d=b+4|0;g=(a|0)==0;h=a+480|0;i=a+304|0;j=a+308|0;k=a+300|0;if(g){f=e;while(1){e=c[d>>2]|0;if(e|0)ni(0,e);e=c[d+4>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{l=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);e=c[d+8>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{l=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);if((f|0)>1){d=d+20|0;f=f+-1|0}else break}}else{f=e;while(1){e=c[d>>2]|0;if(e|0)ni(a,e);e=c[d+4>>2]|0;do if(e|0){if(c[h>>2]|0){Xd(a,e);break}l=e;if((c[i>>2]|0)>>>0<=l>>>0?(c[j>>2]|0)>>>0>l>>>0:0){c[e>>2]=c[k>>2];c[k>>2]=e;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{l=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);e=c[d+8>>2]|0;do if(e|0){if(c[h>>2]|0){Xd(a,e);break}l=e;if((c[i>>2]|0)>>>0<=l>>>0?(c[j>>2]|0)>>>0>l>>>0:0){c[e>>2]=c[k>>2];c[k>>2]=e;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{l=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);if((f|0)>1){d=d+20|0;f=f+-1|0}else break}}if(!g){if(c[h>>2]|0){Xd(a,b);return}l=b;if((c[i>>2]|0)>>>0<=l>>>0?(c[j>>2]|0)>>>0>l>>>0:0){c[b>>2]=c[k>>2];c[k>>2]=b;return}}if(!b)return;if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{l=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}}function si(e,f,g,h){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,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;P=Ra;Ra=Ra+176|0;O=P+144|0;I=P+120|0;H=P+112|0;G=P+104|0;F=P+96|0;E=P+72|0;D=P+64|0;C=P+56|0;B=P+32|0;K=P+24|0;J=P+16|0;A=P+8|0;z=P;w=P+164|0;x=P+160|0;y=P+156|0;M=e+20|0;N=c[M>>2]|0;a:do if(!g)i=h;else{r=e+16|0;s=e+12|0;q=e+8|0;t=e+4|0;u=(f|0)==0;v=e+24|0;i=h;while(1){if(!(c[r>>2]|0))break a;if((g+-1|0)>>>0>=(c[s>>2]|0)>>>0){L=5;break}j=(c[q>>2]|0)+(g>>>3)|0;k=d[j>>0]|0;l=1<<(g&7);if(l&k|0){L=7;break}a[j>>0]=l|k;o=i+-1|0;p=c[t>>2]|0;if(Za[c[p+204>>2]&127](p,g,y,0)|0){L=9;break}p=c[(c[y>>2]|0)+4>>2]|0;do if(u){i=c[e>>2]|0;if((o|0)!=0&(a[i+17>>0]|0)!=0){k=d[p+1>>0]<<16|d[p>>0]<<24|d[p+2>>0]<<8|d[p+3>>0];i=eg(i,k,w,x)|0;b:do if((i|0)<7){switch(i|0){case 0:break;default:{L=40;break b}}i=a[w>>0]|0;j=c[x>>2]|0;if(!(i<<24>>24==4&(j|0)==(g|0))){c[I>>2]=k;c[I+4>>2]=4;c[I+8>>2]=g;c[I+12>>2]=i&255;c[I+16>>2]=j;ti(e,35625,I)}}else{if((i|0)<3082)switch(i|0){case 7:break;default:{L=40;break b}}else switch(i|0){case 3082:break;default:{L=40;break b}}c[v>>2]=1;L=40}while(0);if((L|0)==40){L=0;c[H>>2]=k;ti(e,35596,H)}i=o}else i=o}else{n=d[p+5>>0]<<16|d[p+4>>0]<<24|d[p+6>>0]<<8|d[p+7>>0];j=c[e>>2]|0;if(a[j+17>>0]|0){j=eg(j,g,w,x)|0;c:do if((j|0)<7){switch(j|0){case 0:break;default:{L=14;break c}}j=a[w>>0]|0;k=c[x>>2]|0;if(!(j<<24>>24==2&(k|0)==0)){c[B>>2]=g;c[B+4>>2]=2;c[B+8>>2]=0;c[B+12>>2]=j&255;c[B+16>>2]=k;ti(e,35625,B)}}else{if((j|0)<3082)switch(j|0){case 7:break;default:{L=14;break c}}else switch(j|0){case 3082:break;default:{L=14;break c}}c[v>>2]=1;L=14}while(0);if((L|0)==14){L=0;c[K>>2]=g;ti(e,35596,K)}j=c[e>>2]|0}if(n>>>0>(((c[j+36>>2]|0)>>>2)+-2|0)>>>0){c[C>>2]=g;ti(e,35455,C);i=i+-2|0;break}d:do if((n|0)>0){i=0;while(1){m=p+((i<<2)+8)|0;l=d[m+3>>0]|0;m=d[m+1>>0]<<16|d[m>>0]<<24|d[m+2>>0]<<8|l;if(a[j+17>>0]|0){g=eg(j,m,w,x)|0;e:do if((g|0)<7){switch(g|0){case 0:break;default:{L=25;break e}}j=a[w>>0]|0;g=c[x>>2]|0;if(!(j<<24>>24==2&(g|0)==0)){c[E>>2]=m;c[E+4>>2]=2;c[E+8>>2]=0;c[E+12>>2]=j&255;c[E+16>>2]=g;ti(e,35625,E)}}else{if((g|0)<3082)switch(g|0){case 7:break;default:{L=25;break e}}else switch(g|0){case 3082:break;default:{L=25;break e}}c[v>>2]=1;L=25}while(0);if((L|0)==25){L=0;c[D>>2]=m;ti(e,35596,D)}}do if((m+-1|0)>>>0<(c[s>>2]|0)>>>0){j=(c[q>>2]|0)+(m>>>3)|0;k=d[j>>0]|0;g=1<<(l&7);if(!(g&k)){a[j>>0]=g|k;break}else{c[G>>2]=m;ti(e,35569,G);break}}else{c[F>>2]=m;ti(e,35546,F)}while(0);i=i+1|0;if((i|0)==(n|0))break d;j=c[e>>2]|0}}while(0);i=o-n|0}while(0);g=d[p+1>>0]<<16|d[p>>0]<<24|d[p+2>>0]<<8|d[p+3>>0];j=c[y>>2]|0;do if(j|0)if(!(b[j+28>>1]&32)){Df(j);break}else{p=c[j+20>>2]|0;o=p+120|0;c[o>>2]=(c[o>>2]|0)+-1;p=p+136|0;c[j+16>>2]=c[p>>2];c[p>>2]=j;break}while(0);if(!g)break a}if((L|0)==5){c[z>>2]=g;ti(e,35546,z)}else if((L|0)==7){c[A>>2]=g;ti(e,35569,A)}else if((L|0)==9){c[J>>2]=g;ti(e,35433,J);i=o}}while(0);if(!i){Ra=P;return}if((N|0)!=(c[M>>2]|0)){Ra=P;return}c[O>>2]=(f|0)==0?35525:35520;c[O+4>>2]=h-i;c[O+8>>2]=h;ti(e,35494,O);Ra=P;return}function ti(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=Ra;Ra=Ra+32|0;i=j+16|0;h=j;f=b+16|0;g=c[f>>2]|0;if(!g){Ra=j;return}c[f>>2]=g+-1;f=b+20|0;c[f>>2]=(c[f>>2]|0)+1;c[h>>2]=e;f=b+40|0;if(c[b+56>>2]|0)ub(f,35594,1);g=c[b+28>>2]|0;if(g|0){e=c[b+36>>2]|0;c[i>>2]=c[b+32>>2];c[i+4>>2]=e;Eb(f,g,i)}tb(f,d,h);if((a[b+60>>0]|0)!=7){Ra=j;return}c[b+24>>2]=1;Ra=j;return}function ui(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var 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,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;ma=Ra;Ra=Ra+240|0;fa=ma+216|0;da=ma+208|0;U=ma+200|0;T=ma+176|0;S=ma+168|0;R=ma+144|0;Q=ma+136|0;P=ma+128|0;O=ma+120|0;N=ma+104|0;t=ma+80|0;s=ma+72|0;q=ma+64|0;p=ma+56|0;o=ma+48|0;n=ma+40|0;k=ma+32|0;K=ma+232|0;L=ma+228|0;W=ma+24|0;M=ma;ga=W;c[ga>>2]=i;c[ga+4>>2]=j;ga=f+28|0;ha=c[ga>>2]|0;ia=f+32|0;ja=c[ia>>2]|0;ka=f+36|0;la=c[ka>>2]|0;u=c[f>>2]|0;ea=c[u+36>>2]|0;if(!g){la=0;Ra=ma;return la|0}if((g+-1|0)>>>0>=(c[f+12>>2]|0)>>>0){c[k>>2]=g;ti(f,35546,k);la=0;Ra=ma;return la|0}k=(c[f+8>>2]|0)+(g>>>3)|0;l=d[k>>0]|0;m=1<<(g&7);if(m&l|0){c[n>>2]=g;ti(f,35569,n);la=0;Ra=ma;return la|0}a[k>>0]=m|l;c[ga>>2]=35679;c[ia>>2]=g;k=c[u>>2]|0;k=Za[c[k+204>>2]&127](k,g,K,0)|0;a:do if(!k){k=c[K>>2]|0;ca=c[k+8>>2]|0;l=ca+4|0;if((c[l>>2]|0)!=(g|0)){c[ca+56>>2]=c[k+4>>2];c[ca+72>>2]=k;c[ca+52>>2]=u;c[l>>2]=g;a[ca+9>>0]=(g|0)==1?100:0}J=a[ca>>0]|0;a[ca>>0]=0;k=Gf(ca)|0;do if(!k){k=Jh(ca)|0;if(k|0){c[q>>2]=k;ti(f,35765,q);k=-1;break}aa=c[ca+56>>2]|0;ba=d[ca+9>>0]|0;c[ga>>2]=35787;l=aa+(ba+5)|0;l=(d[l>>0]<<8|d[l+1>>0])+65535&65535;H=l+1|0;o=aa+(ba+3)|0;o=d[o>>0]<<8|d[o+1>>0];I=ca+8|0;G=a[I>>0]|0;X=ba+12-((G&255)<<2)|0;r=o+-1|0;p=aa+(X+(r<<1))|0;if(!(G<<24>>24)){n=aa+(ba+8)|0;n=d[n+1>>0]<<16|d[n>>0]<<24|d[n+2>>0]<<8|d[n+3>>0];if(a[u+17>>0]|0){c[ga>>2]=35813;k=eg(c[f>>2]|0,n,K,L)|0;b:do if((k|0)<7){switch(k|0){case 0:break;default:{V=18;break b}}k=a[K>>0]|0;m=c[L>>2]|0;if(!(k<<24>>24==5&(m|0)==(g|0))){c[t>>2]=n;c[t+4>>2]=5;c[t+8>>2]=g;c[t+12>>2]=k&255;c[t+16>>2]=m;ti(f,35625,t)}}else{if((k|0)<3082)switch(k|0){case 7:break;default:{V=18;break b}}else switch(k|0){case 3082:break;default:{V=18;break b}}c[f+24>>2]=1;V=18}while(0);if((V|0)==18){c[s>>2]=n;ti(f,35596,s)}}k=ui(f,n,W,i,j)|0;n=0;i=0}else{i=c[f+64>>2]|0;c[i>>2]=0;k=-1;n=1}F=f+16|0;G=(o|0)==0;if(!G){y=ea+-4|0;z=ca+80|0;A=M+18|0;B=ca+2|0;C=M+12|0;D=M+16|0;E=ea+-5|0;w=u+17|0;x=f+24|0;v=r;m=1;u=p;while(1){if(!(c[F>>2]|0))break;c[ka>>2]=v;j=d[u>>0]<<8|d[u+1>>0];u=u+-2|0;c:do if(j>>>0<=l>>>0|j>>>0>y>>>0){c[N>>2]=j;c[N+4>>2]=H;c[N+8>>2]=y;ti(f,35841,N);m=0}else{t=aa+j|0;cb[c[z>>2]&255](ca,t,M);if((j+(e[A>>1]|0)|0)>>>0>ea>>>0){ti(f,35871,O);m=0;break}if(a[B>>0]|0){s=M;o=c[s>>2]|0;s=c[s+4>>2]|0;q=W;p=c[q>>2]|0;q=c[q+4>>2]|0;if(!n)if((s|0)<(q|0)|(s|0)==(q|0)&o>>>0

        >>0)n=s;else V=36;else if((s|0)>(q|0)|(s|0)==(q|0)&o>>>0>p>>>0)V=36;else n=s;if((V|0)==36){V=0;n=P;c[n>>2]=o;c[n+4>>2]=s;ti(f,35895,P);n=M;o=c[n>>2]|0;n=c[n+4>>2]|0}s=W;c[s>>2]=o;c[s+4>>2]=n;n=0}o=c[C>>2]|0;p=e[D>>1]|0;if(o>>>0>p>>>0){q=((E+o-p|0)>>>0)/(y>>>0)|0;s=t+((e[A>>1]|0)+-4)|0;s=d[s+1>>0]<<16|d[s>>0]<<24|d[s+2>>0]<<8|d[s+3>>0];if(a[w>>0]|0){o=eg(c[f>>2]|0,s,K,L)|0;d:do if((o|0)<7){switch(o|0){case 0:break;default:{V=42;break d}}o=a[K>>0]|0;p=c[L>>2]|0;if(o<<24>>24==3&(p|0)==(g|0))break;c[R>>2]=s;c[R+4>>2]=3;c[R+8>>2]=g;c[R+12>>2]=o&255;c[R+16>>2]=p;ti(f,35625,R)}else{if((o|0)<3082)switch(o|0){case 7:break;default:{V=42;break d}}else switch(o|0){case 3082:break;default:{V=42;break d}}c[x>>2]=1;V=42}while(0);if((V|0)==42){V=0;c[Q>>2]=s;ti(f,35596,Q)}}si(f,0,s,q)}if(a[I>>0]|0){p=j+-1+(e[A>>1]|0)|j<<16;o=(c[i>>2]|0)+1|0;c[i>>2]=o;c[i+(o<<2)>>2]=p;q=o>>>1;if(!q)break;s=i+(q<<2)|0;j=c[s>>2]|0;if(j>>>0<=p>>>0)break;while(1){c[s>>2]=p;c[i+(o<<2)>>2]=j;o=q>>>1;if(!o)break c;p=c[s>>2]|0;s=i+(o<<2)|0;j=c[s>>2]|0;if(j>>>0<=p>>>0)break c;else{t=q;q=o;o=t}}}p=d[t+1>>0]<<16|d[t>>0]<<24|d[t+2>>0]<<8|d[t+3>>0];if(a[w>>0]|0){n=eg(c[f>>2]|0,p,K,L)|0;e:do if((n|0)<7){switch(n|0){case 0:break;default:{V=51;break e}}n=a[K>>0]|0;o=c[L>>2]|0;if(n<<24>>24==5&(o|0)==(g|0))break;c[T>>2]=p;c[T+4>>2]=5;c[T+8>>2]=g;c[T+12>>2]=n&255;c[T+16>>2]=o;ti(f,35625,T)}else{if((n|0)<3082)switch(n|0){case 7:break;default:{V=51;break e}}else switch(n|0){case 3082:break;default:{V=51;break e}}c[x>>2]=1;V=51}while(0);if((V|0)==51){V=0;c[S>>2]=p;ti(f,35596,S)}}n=W;n=ui(f,p,W,c[n>>2]|0,c[n+4>>2]|0)|0;if((n|0)==(k|0)){n=0;break}ti(f,35919,U);k=n;n=0}while(0);if((v|0)<=0)break;else v=v+-1|0}U=W;V=c[U+4>>2]|0;W=h;c[W>>2]=c[U>>2];c[W+4>>2]=V;c[ga>>2]=0;if(!m){a[ca>>0]=J;break}}else{U=W;V=c[U+4>>2]|0;W=h;c[W>>2]=c[U>>2];c[W+4>>2]=V;c[ga>>2]=0}f:do if((c[F>>2]|0)>0){if(!(a[I>>0]|0)){i=c[f+64>>2]|0;c[i>>2]=0;if(!G){s=ca+76|0;while(1){n=aa+((r<<1)+X)|0;n=d[n>>0]<<8|d[n+1>>0];n=n+-1+((Xa[c[s>>2]&255](ca,aa+n|0)|0)&65535)|n<<16;m=(c[i>>2]|0)+1|0;c[i>>2]=m;c[i+(m<<2)>>2]=n;o=m>>>1;g:do if(o|0?(Y=i+(o<<2)|0,Z=c[Y>>2]|0,Z>>>0>n>>>0):0){p=Y;q=Z;while(1){c[p>>2]=n;c[i+(m<<2)>>2]=q;m=o>>>1;if(!m)break g;n=c[p>>2]|0;p=i+(m<<2)|0;q=c[p>>2]|0;if(q>>>0<=n>>>0)break;else{W=o;o=m;m=W}}}while(0);if((r|0)>0)r=r+-1|0;else break}}}m=aa+(ba+1)|0;m=d[m>>0]<<8|d[m+1>>0];if(m|0)do{o=aa+(m+2)|0;o=m+-1+(d[o>>0]<<8|d[o+1>>0])|m<<16;n=(c[i>>2]|0)+1|0;c[i>>2]=n;c[i+(n<<2)>>2]=o;p=n>>>1;h:do if(p|0?(_=i+(p<<2)|0,$=c[_>>2]|0,$>>>0>o>>>0):0){q=_;r=$;while(1){c[q>>2]=o;c[i+(n<<2)>>2]=r;n=p>>>1;if(!n)break h;o=c[q>>2]|0;q=i+(n<<2)|0;r=c[q>>2]|0;if(r>>>0<=o>>>0)break;else{Z=p;p=n;n=Z}}}while(0);Z=aa+m|0;m=d[Z>>0]<<8|d[Z+1>>0]}while((m|0)!=0);n=c[i>>2]|0;i:do if(n){t=i+4|0;m=0;while(1){j=c[t>>2]|0;n=i+(n<<2)|0;c[t>>2]=c[n>>2];c[n>>2]=-1;n=(c[i>>2]|0)+-1|0;c[i>>2]=n;j:do if(n>>>0>=2){s=c[t>>2]|0;r=1;o=2;do{p=o|1;q=r;r=(c[i+(o<<2)>>2]|0)>>>0>(c[i+(p<<2)>>2]|0)>>>0?p:o;o=i+(r<<2)|0;p=c[o>>2]|0;if(s>>>0

        >>0)break j;c[i+(q<<2)>>2]=p;c[o>>2]=s;o=r<<1;n=c[i>>2]|0}while(o>>>0<=n>>>0)}while(0);o=l&65535;p=j>>>16;if(p>>>0<=o>>>0)break;m=m+-1-o+p|0;if(!n){l=j;break i}else l=j}c[da>>2]=p;c[da+4>>2]=g;ti(f,35944,da);if(c[i>>2]|0)break f}else m=0;while(0);m=m+-1+ea-(l&65535)|0;l=d[aa+(ba+7)>>0]|0;if((m|0)!=(l|0)){c[fa>>2]=m;c[fa+4>>2]=l;c[fa+8>>2]=g;ti(f,35981,fa)}}while(0);if(!ca)break a}else{c[p>>2]=k;ti(f,35727,p);k=-1}while(0);l=c[ca+72>>2]|0;if(!(b[l+28>>1]&32)){Df(l);break}else{fa=c[l+20>>2]|0;g=fa+120|0;c[g>>2]=(c[g>>2]|0)+-1;fa=fa+136|0;c[l+16>>2]=c[fa>>2];c[fa>>2]=l;break}}else{c[o>>2]=k;ti(f,35689,o);k=-1}while(0);c[ga>>2]=ha;c[ia>>2]=ja;c[ka>>2]=la;la=k+1|0;Ra=ma;return la|0}function vi(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[a>>2]|0;g=a+4|0;if(d|0)do{e=d;d=c[d>>2]|0;f=c[g>>2]|0;do if(f){if(c[f+480>>2]|0){Xd(f,e);break}i=e;if((c[f+304>>2]|0)>>>0<=i>>>0?(c[f+308>>2]|0)>>>0>i>>>0:0){i=f+300|0;c[e>>2]=c[i>>2];c[i>>2]=e}else h=9}else h=9;while(0);do if((h|0)==9){h=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{i=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0)}while((d|0)!=0);c[a>>2]=0;b[a+24>>1]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+20>>2]=0;b[a+26>>1]=1;d=c[g>>2]|0;if(d|0){if(c[d+480>>2]|0){Xd(d,a);return}i=a;if((c[d+304>>2]|0)>>>0<=i>>>0?(c[d+308>>2]|0)>>>0>i>>>0:0){i=d+300|0;c[a>>2]=c[i>>2];c[i>>2]=a;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return}else{i=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return}}function wi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=Ra;Ra=Ra+16|0;e=g;f=c[a+12>>2]|0;if(!f)c[b>>2]=a;else{wi(f,b,e);c[(c[e>>2]|0)+8>>2]=a}e=a+8|0;b=c[e>>2]|0;if(!b){c[d>>2]=a;Ra=g;return}else{wi(b,e,d);Ra=g;return}}function xi(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a>>2]|0;if(!d){a=0;return a|0}if((b|0)<=1){e=d+8|0;c[a>>2]=c[e>>2];c[e>>2]=0;c[d+12>>2]=0;a=d;return a|0}b=b+-1|0;d=xi(a,b)|0;e=c[a>>2]|0;if(!e){a=d;return a|0}else{c[e+12>>2]=d;d=e+8|0;c[a>>2]=c[d>>2];a=xi(a,b)|0;c[d>>2]=a;return e|0}return 0}function yi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=Ra;Ra=Ra+16|0;g=f;c[g>>2]=e;d=Me(a,d,g)|0;if(!d){g=7;Ra=f;return g|0}g=zi(a,b,d)|0;lb(a,d);Ra=f;return g|0}function zi(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+16|0;h=o;g=qd(d,g,-1,128,0,h,0)|0;if(g|0){f=g;Ra=o;return f|0}n=c[h>>2]|0;g=Gc(n)|0;a:do if((g|0)==100){j=n+120|0;k=n+144|0;l=n+40|0;if(!n)while(1){g=Gc(0)|0;if((g|0)!=100)break a}do{g=c[j>>2]|0;if(!((g|0)!=0?(b[k>>1]|0)!=0:0)){g=c[n>>2]|0;c[g+64>>2]=25;Ne(g,25);g=29576}h=b[g+8>>1]|0;if((h&514)==514?(a[g+10>>0]|0)==1:0)i=c[g+16>>2]|0;else if(!(h&1))i=Gg(g,1)|0;else i=0;g=c[n>>2]|0;h=c[l>>2]|0;if((h|0)==3082|(a[g+81>>0]|0)!=0){og(g);g=7}else g=c[g+68>>2]&h;c[l>>2]=g;do if(i|0){if(av(i,36682,3)|0?av(i,36686,3)|0:0)break;g=zi(d,f,i)|0;if(g|0)break a}while(0);g=Gc(n)|0}while((g|0)==100)}while(0);l=(g|0)==101?0:g;if(l|0){k=pd(d)|0;g=c[f>>2]|0;do if(g|0){if(d|0){if(c[d+480>>2]|0){Xd(d,g);break}j=g;if((c[d+304>>2]|0)>>>0<=j>>>0?(c[d+308>>2]|0)>>>0>j>>>0:0){j=d+300|0;c[g>>2]=c[j>>2];c[j>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{j=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);b:do if(!k)g=0;else{j=(Eu(k)|0)+1|0;c:do if(!d){d=Sv(j|0,0,-1,-1)|0;i=L()|0;if(i>>>0>0|(i|0)==0&d>>>0>2147483390){g=0;break b}if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](j)|0;m=59;break}g=Wa[c[29356>>2]&127](j)|0;if((c[14985]|0)>>>0>>0)c[14985]=j;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){d=c[14978]|0;i=Tv(h|0,i|0,g|0,((g|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&i>>>0<=d>>>0)&1}g=Wa[c[29340>>2]&127](g)|0;if(!g){g=0;break b}h=Wa[c[29352>>2]&127](g)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0)c[14987]=h}else{if(c[d+272>>2]|0){if(a[d+81>>0]|0){g=0;break b}}else{do if(!(0<0|(0==0?(e[d+276>>1]|0)>>>0>>0:0))){h=d+300|0;g=c[h>>2]|0;if(g|0){c[h>>2]=c[g>>2];m=d+284|0;c[m>>2]=(c[m>>2]|0)+1;m=59;break c}h=d+296|0;g=c[h>>2]|0;if(!g){g=d+292|0;break}else{c[h>>2]=c[g>>2];m=d+284|0;c[m>>2]=(c[m>>2]|0)+1;m=59;break c}}else g=d+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1}g=_d(d,j,0)|0;m=59}while(0);if((m|0)==59)if(!g){g=0;break}ew(g|0,k|0,j|0)|0}while(0);c[f>>2]=g}gc(n)|0;f=l;Ra=o;return f|0}function Ai(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var 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;D=Ra;Ra=Ra+48|0;u=D+24|0;x=D+16|0;w=D+8|0;l=D;q=D+32|0;v=D+28|0;p=g+60|0;s=c[p>>2]|0;r=c[g+56>>2]|0;c[v>>2]=0;t=f+352|0;k=c[t>>2]|0;a:do if(k|0){while(1){if((c[k+4>>2]|0)==(g|0))break;k=c[k+8>>2]|0;if(!k)break a}c[l>>2]=c[g>>2];f=dd(f,36709,l)|0;c[j>>2]=f;f=6;Ra=D;return f|0}while(0);n=c[g>>2]|0;if(!n){f=7;Ra=D;return f|0}o=(Eu(n)|0)+1|0;z=(f|0)==0;b:do if(z){y=Sv(o|0,0,-1,-1)|0;m=L()|0;if(m>>>0>0|(m|0)==0&y>>>0>2147483390){f=7;Ra=D;return f|0}if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](o)|0;A=31;break}k=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){y=c[14978]|0;m=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;l=L()|0;c[14768]=((l|0)<0|(l|0)==0&m>>>0<=y>>>0)&1}l=Wa[c[29340>>2]&127](k)|0;if(!l){f=7;Ra=D;return f|0}k=Wa[c[29352>>2]&127](l)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;y=l}else y=l}else{if(c[f+272>>2]|0){if(a[f+81>>0]|0){f=7;Ra=D;return f|0}}else{do if(!(0<0|(0==0?(e[f+276>>1]|0)>>>0>>0:0))){l=f+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];A=f+284|0;c[A>>2]=(c[A>>2]|0)+1;A=31;break b}l=f+296|0;k=c[l>>2]|0;if(!k){k=f+292|0;break}else{c[l>>2]=c[k>>2];A=f+284|0;c[A>>2]=(c[A>>2]|0)+1;A=31;break b}}else k=f+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(f,o,0)|0;A=31}while(0);if((A|0)==31)if(!k){f=7;Ra=D;return f|0}else y=k;ew(y|0,n|0,o|0)|0;if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](28)|0;if(!k)A=43;else n=k}else{k=Wa[c[29356>>2]&127](28)|0;if((c[14985]|0)>>>0<28)c[14985]=28;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){o=c[14978]|0;n=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&n>>>0<=o>>>0)&1}l=Wa[c[29340>>2]&127](k)|0;if(l){k=Wa[c[29352>>2]&127](l)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;n=l}else n=l}else A=43}if((A|0)==43){k=f+81|0;if((a[k>>0]|0)==0?(a[f+82>>0]|0)==0:0){a[k>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;k=f+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[f+236>>2]|0;if(k|0)c[k+12>>2]=7}if(c[f+480>>2]|0){Xd(f,y);f=7;Ra=D;return f|0}C=y;if((c[f+304>>2]|0)>>>0<=C>>>0?(c[f+308>>2]|0)>>>0>C>>>0:0){f=f+300|0;c[y>>2]=c[f>>2];c[f>>2]=y;f=7;Ra=D;return f|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](y);f=7;Ra=D;return f|0}else{f=Wa[c[29352>>2]&127](y)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](y);f=7;Ra=D;return f|0}}k=n+8|0;l=k+20|0;do{a[k>>0]=0;k=k+1|0}while((k|0)<(l|0));c[n>>2]=f;c[n+4>>2]=h;l=c[g+72>>2]|0;m=c[f+16>>2]|0;if(!l)k=-1e6;else{k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0))break;else k=k+1|0}c[(c[p>>2]|0)+4>>2]=c[m+(k<<4)>>2];c[q+4>>2]=g;c[q>>2]=n;p=q+8|0;c[p>>2]=c[t>>2];l=q+12|0;c[l>>2]=0;c[t>>2]=q;m=n+8|0;k=$a[i&127](f,c[h+8>>2]|0,r,s,m,v)|0;c[t>>2]=c[p>>2];c:do switch(k|0){case 7:{l=f+81|0;if((a[l>>0]|0)==0?(a[f+82>>0]|0)==0:0){a[l>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;l=f+272|0;c[l>>2]=(c[l>>2]|0)+1;l=c[f+236>>2]|0;if(l){c[l+12>>2]=7;A=67}else A=67}else A=67;break}case 0:{k=c[m>>2]|0;if(k){c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[c[m>>2]>>2]=c[h>>2];k=n+12|0;c[k>>2]=1;if(!(c[l>>2]|0)){c[u>>2]=c[g>>2];l=dd(f,36781,u)|0;c[j>>2]=l;l=c[n>>2]|0;C=(c[k>>2]|0)+-1|0;c[k>>2]=C;if(C|0){k=1;A=117;break c}k=c[m>>2]|0;if(k|0)Wa[c[(c[k>>2]|0)+16>>2]&127](k)|0;if(l|0){if(c[l+480>>2]|0){Xd(l,n);k=1;A=117;break c}C=n;if((c[l+304>>2]|0)>>>0<=C>>>0?(c[l+308>>2]|0)>>>0>C>>>0:0){k=l+300|0;c[n>>2]=c[k>>2];c[k>>2]=n;k=1;A=117;break c}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);k=1;A=117;break c}else{k=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);k=1;A=117;break c}}h=g+64|0;c[n+24>>2]=c[h>>2];c[h>>2]=n;h=g+42|0;k=b[h>>1]|0;if(k<<16>>16>0){u=g+4|0;t=g+36|0;m=0;s=0;l=c[u>>2]|0;do{if(!(a[l+(s<<4)+15>>0]&4))i=59952;else{i=c[l+(s<<4)>>2]|0;i=i+(Eu(i)|0)+1|0}q=(Eu(i)|0)&1073741823;d:do if(!q)A=114;else{n=0;e:while(1){r=i+n|0;do if(r|0){j=d[r>>0]|0;o=208+j|0;do if((j|32|0)==104){o=r+1|0;j=d[o>>0]|0;p=208+j|0;if((j|32|0)==105){o=o+1|0;p=d[o>>0]|0;if((p|32|0)!=100){B=208+p|0;C=100;A=103;break}o=o+1|0;p=d[o>>0]|0;if((p|32|0)!=100){B=208+p|0;C=100;A=103;break}o=o+1|0;p=d[o>>0]|0;if((p|32|0)!=101){B=208+p|0;C=101;A=103;break}o=d[o+1>>0]|0;if((o|32|0)!=110){B=208+o|0;C=110;A=103}}else{B=p;C=105;A=103}}else{B=o;C=104;A=103}while(0);if((A|0)==103?(A=0,(C|0)!=(d[B>>0]|0)):0)break;if(n|0?(a[i+(n+-1)>>0]|0)!=32:0)break;o=a[i+(n+6)>>0]|0;switch(o<<24>>24){case 32:case 0:break e;default:{}}}while(0);n=n+1|0;if(n>>>0>=q>>>0){A=114;break d}}o=o<<24>>24==0?6:7;k=n+o|0;if(k>>>0<=q>>>0){m=q+1-o|0;l=n;while(1){a[i+l>>0]=a[i+k>>0]|0;k=l+1|0;if((k|0)==(m|0))break;else{l=k;k=k+o|0}}}if((n|0)!=0&(a[r>>0]|0)==0)a[i+(n+-1)>>0]=0;l=c[u>>2]|0;m=l+(s<<4)+15|0;a[m>>0]=a[m>>0]|2;m=-128;k=b[h>>1]|0}while(0);if((A|0)==114){A=0;c[t>>2]=c[t>>2]|m&255}s=s+1|0}while((s|0)<(k<<16>>16|0))}if(z)k=0;else{k=0;A=117}}else{k=0;A=117}break}default:A=67}while(0);do if((A|0)==67){l=c[v>>2]|0;do if(l){c[x>>2]=l;l=dd(f,31408,x)|0;c[j>>2]=l;l=c[v>>2]|0;if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{C=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-C;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}else{c[w>>2]=y;C=dd(f,36751,w)|0;c[j>>2]=C}while(0);if(c[f+480>>2]|0){Xd(f,n);A=117;break}C=n;if((c[f+304>>2]|0)>>>0<=C>>>0?(c[f+308>>2]|0)>>>0>C>>>0:0){A=f+300|0;c[n>>2]=c[A>>2];c[A>>2]=n;A=117;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);A=117;break}else{A=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-A;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);A=117;break}}while(0);if((A|0)==117){if(c[f+480>>2]|0){Xd(f,y);f=k;Ra=D;return f|0}C=y;if((c[f+304>>2]|0)>>>0<=C>>>0?(c[f+308>>2]|0)>>>0>C>>>0:0){f=f+300|0;c[y>>2]=c[f>>2];c[f>>2]=y;f=k;Ra=D;return f|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](y);f=k;Ra=D;return f|0}else{f=Wa[c[29352>>2]&127](y)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](y);f=k;Ra=D;return f|0}return 0}function Bi(b,f){b=b|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;i=a[b>>0]|0;do switch(a[3696+(i&255)>>0]|0){case 7:{g=1;while(1)if(!(a[880+(d[b+g>>0]|0)>>0]&1))break;else g=g+1|0;c[f>>2]=174;f=g;return f|0}case 11:{if((a[b+1>>0]|0)!=45){c[f>>2]=101;f=1;return f|0}g=2;a:while(1){switch(a[b+g>>0]|0){case 0:case 10:break a;default:{}}g=g+1|0}c[f>>2]=174;f=g;return f|0}case 17:{c[f>>2]=22;f=1;return f|0}case 18:{c[f>>2]=23;f=1;return f|0}case 19:{c[f>>2]=1;f=1;return f|0}case 20:{c[f>>2]=100;f=1;return f|0}case 21:{c[f>>2]=102;f=1;return f|0}case 16:{if((a[b+1>>0]|0)==42?(g=a[b+2>>0]|0,g<<24>>24):0){h=a[b+3>>0]|0;b:do if(g<<24>>24==42&h<<24>>24==47){h=1;g=3}else{g=3;while(1){if(!(h<<24>>24)){h=0;break b}g=g+1|0;k=h;h=a[b+g>>0]|0;if(k<<24>>24==42&h<<24>>24==47){h=1;break}}}while(0);c[f>>2]=174;f=h+g|0;return f|0}c[f>>2]=103;f=1;return f|0}case 22:{c[f>>2]=104;f=1;return f|0}case 14:{c[f>>2]=53;f=(a[b+1>>0]|0)==61?2:1;return f|0}case 12:switch(a[b+1>>0]|0){case 61:{c[f>>2]=55;f=2;return f|0}case 62:{c[f>>2]=52;f=2;return f|0}case 60:{c[f>>2]=98;f=2;return f|0}default:{c[f>>2]=56;f=1;return f|0}}case 13:switch(a[b+1>>0]|0){case 61:{c[f>>2]=57;f=2;return f|0}case 62:{c[f>>2]=99;f=2;return f|0}default:{c[f>>2]=54;f=1;return f|0}}case 15:if((a[b+1>>0]|0)==61){c[f>>2]=52;f=2;return f|0}else{c[f>>2]=175;f=1;return f|0}case 10:if((a[b+1>>0]|0)==124){c[f>>2]=105;f=2;return f|0}else{c[f>>2]=97;f=1;return f|0}case 23:{c[f>>2]=26;f=1;return f|0}case 24:{c[f>>2]=96;f=1;return f|0}case 25:{c[f>>2]=107;f=1;return f|0}case 8:{h=a[b+1>>0]|0;c:do if(h<<24>>24){g=1;while(1){if(h<<24>>24==i<<24>>24){g=g+1|0;if((a[b+g>>0]|0)!=i<<24>>24)break}g=g+1|0;h=a[b+g>>0]|0;if(!(h<<24>>24))break c}if(i<<24>>24==39){c[f>>2]=110;f=g;return f|0}else{c[f>>2]=59;f=g;return f|0}}else g=1;while(0);c[f>>2]=175;f=g;return f|0}case 26:{if(((d[b+1>>0]|0)+-48|0)>>>0>=10){c[f>>2]=134;f=1;return f|0}break}case 3:break;case 9:{d:do if(i<<24>>24==93){g=1;h=59}else{g=1;while(1){h=a[b+g>>0]|0;if(!(h<<24>>24)){h=175;break d}g=g+1|0;if(h<<24>>24==93){h=59;break}}}while(0);c[f>>2]=h;f=g;return f|0}case 6:{c[f>>2]=148;g=1;while(1)if(((d[b+g>>0]|0)+-48|0)>>>0<10)g=g+1|0;else break;return g|0}case 5:case 4:{c[f>>2]=148;h=a[b+1>>0]|0;if(h<<24>>24){j=0;g=1;while(1){if(!(a[880+(h&255)>>0]&70)){if((j|0)>0&h<<24>>24==40){k=91;break}if(h<<24>>24!=58){h=j;break}h=g+1|0;if((a[b+h>>0]|0)==58){i=j;g=h}else{h=j;break}}else i=j+1|0;g=g+1|0;h=a[b+g>>0]|0;if(!(h<<24>>24)){h=i;break}else j=i}do if((k|0)==91){while(1){i=g+1|0;h=a[b+i>>0]|0;if(!(h<<24>>24))break;if(h<<24>>24!=41?(a[880+(h&255)>>0]&1)==0:0)g=i;else{k=94;break}}if((k|0)==94?h<<24>>24==41:0){h=j;g=g+2|0;break}c[f>>2]=175;h=j;g=i}while(0);if(h){f=g;return f|0}}else g=1;c[f>>2]=175;f=g;return f|0}case 1:{g=1;while(1){h=a[b+g>>0]|0;i=g+1|0;if((d[3696+(h&255)>>0]|0)<2)g=i;else break}if(!(a[880+(h&255)>>0]&70)){c[f>>2]=59;if(g>>>0<=1){f=g;return f|0}h=a[3952+(((d[208+(d[b>>0]|0)>>0]<<2^g^(d[208+(d[b+(g+-1)>>0]|0)>>0]|0)*3)>>>0)%127|0)>>0]|0;if(!(h<<24>>24)){f=g;return f|0}h=h&255;e:while(1){i=h+-1|0;f:do if((g|0)==(d[2064+i>>0]|0)){j=1136+(e[1776+(i<<1)>>1]|0)|0;h=0;while(1){if((a[b+h>>0]&-33)<<24>>24!=(a[j+h>>0]|0))break f;h=h+1|0;if(h>>>0>=g>>>0)break e}}while(0);h=a[4224+i>>0]|0;if(!(h<<24>>24)){k=127;break}else h=h&255}if((k|0)==127)return g|0;c[f>>2]=d[4080+i>>0];f=g;return f|0}else{g=i;k=114}break}case 0:{if((a[b+1>>0]|0)==39){c[f>>2]=146;g=2;while(1){h=a[b+g>>0]|0;if(!(a[880+(h&255)>>0]&8))break;else g=g+1|0}if(h<<24>>24==39&(g&1|0)==0){h=g;g=1}else{c[f>>2]=175;g:while(1){i=a[b+g>>0]|0;switch(i<<24>>24){case 39:case 0:break g;default:{}}g=g+1|0}h=g;g=i<<24>>24!=0&1}f=h+g|0;return f|0}else{g=1;k=114}break}case 2:{g=1;k=114;break}case 28:{c[f>>2]=175;f=0;return f|0}default:{c[f>>2]=175;f=1;return f|0}}while(0);if((k|0)==114){while(1)if(!(a[880+(d[b+g>>0]|0)>>0]&70))break;else g=g+1|0;c[f>>2]=59;f=g;return f|0}c[f>>2]=147;h=a[b>>0]|0;h:do if(h<<24>>24==48){switch(a[b+1>>0]|0){case 88:case 120:break;default:break h}if(a[880+(d[b+2>>0]|0)>>0]&8){g=3;while(1)if(!(a[880+(d[b+g>>0]|0)>>0]&8))break;else g=g+1|0;return g|0}}while(0);if(((h&255)+-48|0)>>>0<10){g=1;while(1){h=a[b+g>>0]|0;if(((h&255)+-48|0)>>>0<10)g=g+1|0;else break}}else g=0;if(h<<24>>24==46){h=g;do h=h+1|0;while(((d[b+h>>0]|0)+-48|0)>>>0<10);c[f>>2]=145;g=h;h=a[b+h>>0]|0}i:do switch(h<<24>>24){case 69:case 101:{i=a[b+(g+1)>>0]|0;if(((i&255)+-48|0)>>>0>=10){switch(i<<24>>24){case 45:case 43:break;default:break i}i=g+2|0;if(((d[b+i>>0]|0)+-48|0)>>>0<10)g=i;else break i}else g=g+2|0;h=g;while(1)if(((d[b+h>>0]|0)+-48|0)>>>0<10)h=h+1|0;else break;c[f>>2]=145;g=h;h=a[b+h>>0]|0;break}default:{}}while(0);if(!(a[880+(h&255)>>0]&70)){f=g;return f|0}do{c[f>>2]=175;g=g+1|0}while((a[880+(d[b+g>>0]|0)>>0]&70)!=0);return g|0}function Ci(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=d+108|0;i=c[h>>2]|0;if((c[d+112>>2]|0)>(i|0)){c[h>>2]=i+1;h=c[d+104>>2]|0;a[h+(i*20|0)>>0]=e;b[h+(i*20|0)+2>>1]=0;c[h+(i*20|0)+4>>2]=f;c[h+(i*20|0)+8>>2]=g;c[h+(i*20|0)+12>>2]=0;c[h+(i*20|0)+16>>2]=0;a[h+(i*20|0)+1>>0]=0;return i|0}else{i=Di(d,e,f,g,0)|0;return i|0}return 0}function Di(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,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=d+12|0;k=c[r>>2]|0;s=d+112|0;l=c[s>>2]|0;j=(l|0)==0;l=cw(l|0,((l|0)<0)<<31>>31|0,1)|0;m=L()|0;l=j?51:l;m=j?0:m;j=c[k>>2]|0;q=c[j+128>>2]|0;p=((q|0)<0)<<31>>31;a:do if(!((m|0)>(p|0)|(m|0)==(p|0)&l>>>0>q>>>0)){q=d+104|0;p=d+108|0;o=k;n=k;d=c[q>>2]|0;b:while(1){l=Yv(l|0,m|0,20,0)|0;m=L()|0;c:do if(!d){if(c[j+272>>2]|0){if(a[j+81>>0]|0){d=1;k=35;break b}}else{do if(!(m>>>0>0|((m|0)==0?l>>>0>(e[j+276>>1]|0)>>>0:0))){k=j+300|0;d=c[k>>2]|0;if(d|0){c[k>>2]=c[d>>2];k=j+284|0;c[k>>2]=(c[k>>2]|0)+1;k=27;break c}k=j+296|0;d=c[k>>2]|0;if(!d){d=j+292|0;break}else{c[k>>2]=c[d>>2];k=j+284|0;c[k>>2]=(c[k>>2]|0)+1;k=27;break c}}else d=j+288|0;while(0);c[d>>2]=(c[d>>2]|0)+1}d=_d(j,l,m)|0;k=27}else{k=d;if((c[j+304>>2]|0)>>>0<=k>>>0?(c[j+308>>2]|0)>>>0>k>>>0:0){if(!(m>>>0>0|((m|0)==0?l>>>0>(e[j+276>>1]|0)>>>0:0))){k=29;break}d=Zd(j,d,l,m)|0;k=27;break}d=Zd(j,d,l,m)|0;k=27}while(0);if((k|0)==27){if(!d){d=1;k=35;break}j=c[o>>2]|0;if(!j)k=31;else k=29}if((k|0)==29){k=0;o=d;if((c[j+304>>2]|0)>>>0<=o>>>0?(c[j+308>>2]|0)>>>0>o>>>0:0)l=e[j+276>>1]|0;else k=31}if((k|0)==31)l=Wa[c[29352>>2]&127](d)|0;c[n+48>>2]=l;k=(l>>>0)/20|0;c[s>>2]=k;c[q>>2]=d;j=c[p>>2]|0;if((k|0)>(j|0)){k=34;break}n=c[r>>2]|0;m=l>>>0<20;l=m?51:k<<1;m=m?0:0;j=c[n>>2]|0;o=c[j+128>>2]|0;k=((o|0)<0)<<31>>31;if((m|0)>(k|0)|(m|0)==(k|0)&l>>>0>o>>>0)break a;else o=n}if((k|0)==34){c[p>>2]=j+1;a[d+(j*20|0)>>0]=f;b[d+(j*20|0)+2>>1]=0;c[d+(j*20|0)+4>>2]=g;c[d+(j*20|0)+8>>2]=h;c[d+(j*20|0)+12>>2]=i;c[d+(j*20|0)+16>>2]=0;a[d+(j*20|0)+1>>0]=0;s=j;return s|0}else if((k|0)==35)return d|0}while(0);d=j+81|0;if(a[d>>0]|0){s=1;return s|0}if(a[j+82>>0]|0){s=1;return s|0}a[d>>0]=1;if((c[j+180>>2]|0)>0)c[j+264>>2]=1;d=j+272|0;c[d>>2]=(c[d>>2]|0)+1;d=c[j+236>>2]|0;if(!d){s=1;return s|0}c[d+12>>2]=7;s=1;return s|0}function Ei(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=b+104|0;l=b+108|0;if((g|0)<0){while(1){h=d+1|0;i=a[h>>0]|0;if(i<<24>>24){m=d+16|0;kg(c[b>>2]|0,i<<24>>24,c[m>>2]|0);a[h>>0]=0;c[m>>2]=0}h=c[k>>2]|0;i=d-h|0;d=c[b>>2]|0;j=h;if(a[d+81>>0]|0){n=12;break}if((i|0)<0)i=(c[l>>2]|0)+-1|0;else i=(i|0)/20|0;d=j+(i*20|0)+1|0;if(!(a[d>>0]|0))break;d=j+(i*20|0)|0}if((n|0)==12){if((g|0)==-12)return;kg(d,g,f);return}if((g|0)==-3){c[h+(i*20|0)+16>>2]=f;a[d>>0]=-3;return}if(!f)return;c[h+(i*20|0)+16>>2]=f;a[d>>0]=g;if((g|0)!=-12)return;f=f+12|0;c[f>>2]=(c[f>>2]|0)+1;return}else{m=d+1|0;h=a[m>>0]|0;if(h<<24>>24){l=d+16|0;kg(c[b>>2]|0,h<<24>>24,c[l>>2]|0);a[m>>0]=0;c[l>>2]=0}h=(f|0)==0;if(!g)if(h)h=0;else{g=(Eu(f)|0)&1073741823;n=23}else if(h)h=0;else n=23;a:do if((n|0)==23){j=c[b>>2]|0;k=Sv(g|0,((g|0)<0)<<31>>31|0,1,0)|0;l=L()|0;b:do if(c[j+272>>2]|0)if(!(a[j+81>>0]|0))n=33;else{h=0;break a}else{do if(!(l>>>0>0|((l|0)==0?k>>>0>(e[j+276>>1]|0)>>>0:0))){i=j+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];b=j+284|0;c[b>>2]=(c[b>>2]|0)+1;break b}i=j+296|0;h=c[i>>2]|0;if(!h){h=j+292|0;break}else{c[i>>2]=c[h>>2];b=j+284|0;c[b>>2]=(c[b>>2]|0)+1;break b}}else h=j+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;n=33}while(0);if((n|0)==33)h=_d(j,k,l)|0;if(!h)h=0;else{ew(h|0,f|0,g|0)|0;a[h+g>>0]=0}}while(0);c[d+16>>2]=h;a[m>>0]=-7;return}}function Fi(b,e){b=b|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=c[e>>2]|0;n=c[b+12>>2]|0;o=n+64|0;k=c[o>>2]|0;l=b+149|0;j=(d[l>>0]|d[l+1>>0]<<8)&-769|256;a[l>>0]=j;a[l+1>>0]=j>>8;j=b+104|0;i=(c[j>>2]|0)+(((c[b+108>>2]|0)+-1|0)*20|0)|0;while(1){g=a[i>>0]|0;a:do if((g&255)<62){switch(g<<24>>24){case 2:{if(!(c[i+8>>2]|0))m=6;else{m=(d[l>>0]|d[l+1>>0]<<8)&-257;a[l>>0]=m;a[l+1>>0]=m>>8;m=6}break}case 0:case 1:{m=6;break}case 7:case 8:case 6:{h=(d[l>>0]|d[l+1>>0]<<8)&-769|512;a[l>>0]=h;a[l+1>>0]=h>>8;h=f;break a}case 3:case 5:{c[i+16>>2]=122;a[i+1>>0]=-5;h=f;break a}case 4:{c[i+16>>2]=123;a[i+1>>0]=-5;h=f;break a}case 10:{h=c[i+8>>2]|0;h=(h|0)>(f|0)?h:f;break a}case 9:{h=c[i+-16>>2]|0;f=(h|0)>(f|0)?h:f;break}default:{}}if((m|0)==6){m=0;h=d[l>>0]|d[l+1>>0]<<8|512;a[l>>0]=h;a[l+1>>0]=h>>8;h=f;break}g=i+8|0;h=c[g>>2]|0;if((h|0)<0){c[g>>2]=c[k+(~h<<2)>>2];h=f}else h=f}else h=f;while(0);if((i|0)==(c[j>>2]|0))break;else{f=h;i=i+-20|0}}f=c[b>>2]|0;g=c[o>>2]|0;if(!g){c[o>>2]=0;o=n+56|0;c[o>>2]=0;c[e>>2]=h;return}if(f|0){if(c[f+480>>2]|0){Xd(f,g);c[o>>2]=0;o=n+56|0;c[o>>2]=0;c[e>>2]=h;return}m=g;if((c[f+304>>2]|0)>>>0<=m>>>0?(c[f+308>>2]|0)>>>0>m>>>0:0){m=f+300|0;c[g>>2]=c[m>>2];c[m>>2]=g;c[o>>2]=0;o=n+56|0;c[o>>2]=0;c[e>>2]=h;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);c[o>>2]=0;o=n+56|0;c[o>>2]=0;c[e>>2]=h;return}else{m=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);c[o>>2]=0;o=n+56|0;c[o>>2]=0;c[e>>2]=h;return}}function Gi(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,l=0;k=Ra;Ra=Ra+16|0;i=k;g=a[b>>0]|0;if(g<<24>>24==1){f=4;Ra=k;return f|0}c[i>>2]=0;do if(g<<24>>24==4){g=c[b+4>>2]|0;if(g|0){f=g;Ra=k;return f|0}}else{a[b>>0]=1;g=c[7389]|0;if((g|0)!=0?(Wa[g&127](410)|0)!=0:0)g=10;else{h=b+16|0;g=b+56|0;g=th(b,c[h>>2]|0,c[g>>2]|0,c[g+4>>2]|0,0,i)|0;if(!g){g=c[h>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{l=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);c[h>>2]=0;h=c[i>>2]|0;g=b+4|0;if(!h){if(c[g>>2]|0)j=13}else{c[g>>2]=h;j=13}if((j|0)==13?(a[b>>0]|0)==0:0)a[b>>0]=2;break}}l=g;Ra=k;return l|0}while(0);l=cg(b,d,e,f,0)|0;Ra=k;return l|0}function Hi(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;if(d){h=(Eu(d)|0)&1073741823;if((h+20|0)>>>0>2147483390)i=0;else{k=h;h=h+21|0;j=3}}else{k=0;h=21;j=3}do if((j|0)==3){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](h)|0;if(!i)break;else{j=i;h=i}}else{j=Wa[c[29356>>2]&127](h)|0;if((c[14985]|0)>>>0>>0)c[14985]=h;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){l=c[14978]|0;i=Tv(h|0,i|0,j|0,((j|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&i>>>0<=l>>>0)&1}i=Wa[c[29340>>2]&127](j)|0;if(!i){i=0;break}h=Wa[c[29352>>2]&127](i)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0)c[14987]=h;j=i;h=i}i=j+20|0;ew(i|0,d|0,k+1|0)|0;c[j+4>>2]=i;c[j>>2]=e;c[j+8>>2]=f;c[j+12>>2]=g;c[j+16>>2]=0;i=mi(b+336|0,i,j)|0;if(!i){l=h;return l|0}h=b+81|0;if((a[h>>0]|0)==0?(a[b+82>>0]|0)==0:0){a[h>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;h=b+272|0;c[h>>2]=(c[h>>2]|0)+1;h=c[b+236>>2]|0;if(h|0)c[h+12>>2]=7}if(c[b+480>>2]|0){Xd(b,i);l=0;return l|0}l=i;if((c[b+304>>2]|0)>>>0<=l>>>0?(c[b+308>>2]|0)>>>0>l>>>0:0){l=b+300|0;c[i>>2]=c[l>>2];c[l>>2]=i;l=0;return l|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);l=0;return l|0}else{l=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);l=0;return l|0}}while(0);h=b+81|0;if(a[h>>0]|0){l=i;return l|0}if(a[b+82>>0]|0){l=i;return l|0}a[h>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;h=b+272|0;c[h>>2]=(c[h>>2]|0)+1;h=c[b+236>>2]|0;if(!h){l=i;return l|0}c[h+12>>2]=7;l=i;return l|0}function Ii(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,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;y=Ra;Ra=Ra+256|0;w=y+224|0;g=y+216|0;o=y+208|0;h=y+200|0;u=y+232|0;v=y;p=u+4|0;c[p>>2]=v;c[u>>2]=0;q=u+8|0;c[q>>2]=200;r=u+12|0;s=u+16|0;t=u+21|0;c[r>>2]=0;c[r+4>>2]=0;b[r+8>>1]=0;c[s>>2]=14;l=v;m=37929;n=l+14|0;do{a[l>>0]=a[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));k=f+7|0;if(a[k>>0]|0){g=d[f+6>>0]|0;x=c[5504+(g<<2)>>2]|0;c[h>>2]=40;c[h+4>>2]=x;Eb(u,37944,h);if((d[k>>0]|0)>1){h=1;do{g=g+1|0;x=c[5504+(g<<2)>>2]|0;c[o>>2]=44;c[o+4>>2]=x;Eb(u,37944,o);h=h+1|0}while(h>>>0<(d[k>>0]|0)>>>0);x=h&255}else x=1}else{c[g>>2]=c[f>>2];Eb(u,37951,g);x=1}k=f+5|0;g=a[k>>0]|0;if(!(g&32))o=0;else{g=c[s>>2]|0;h=g+11|0;if(h>>>0<(c[q>>2]|0)>>>0){c[s>>2]=h;l=(c[p>>2]|0)+g|0;m=37957;n=l+11|0;do{a[l>>0]=a[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0))}else wb(u,37957,11);o=1;g=a[k>>0]|0}if((g&255)>63){g=c[s>>2]|0;h=g+14|0;if(h>>>0<(c[q>>2]|0)>>>0){c[s>>2]=h;l=(c[p>>2]|0)+g|0;m=37969;n=l+14|0;do{a[l>>0]=a[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0))}else wb(u,37969,14);o=o+1|0}g=c[s>>2]|0;h=g+1|0;if(h>>>0<(c[q>>2]|0)>>>0){c[s>>2]=h;a[(c[p>>2]|0)+g>>0]=41}else wb(u,34066,1);g=c[p>>2]|0;if((g|0?(a[g+(c[s>>2]|0)>>0]=0,c[r>>2]|0):0)?(a[t>>0]&4)==0:0)$d(u)|0;g=td(e,v)|0;if(g|0){f=pd(e)|0;c[w>>2]=f;f=Bb(31408,w)|0;c[j>>2]=f;f=g;e=0;c[i>>2]=e;Ra=y;return f|0}if(mb()|0){f=7;e=0;c[i>>2]=e;Ra=y;return f|0}if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](24)|0;if(!g){f=7;e=g;c[i>>2]=e;Ra=y;return f|0}else h=g}else{g=Wa[c[29356>>2]&127](24)|0;if((c[14985]|0)>>>0<24)c[14985]=24;k=59064;h=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&h>>>0>0){j=c[14978]|0;w=Tv(h|0,k|0,g|0,((g|0)<0)<<31>>31|0)|0;v=L()|0;c[14768]=((v|0)<0|(v|0)==0&w>>>0<=j>>>0)&1}k=Wa[c[29340>>2]&127](g)|0;if(!k){f=7;e=0;c[i>>2]=e;Ra=y;return f|0}g=Wa[c[29352>>2]&127](k)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0)c[14987]=g;h=k;g=k};c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;c[h+16>>2]=f;c[h+12>>2]=e;a[h+21>>0]=x;a[h+20>>0]=o;f=0;e=g;c[i>>2]=e;Ra=y;return f|0}function Ji(b,e){b=b|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+16|0;k=o;n=e+40|0;g[n>>3]=1.0;if(!(a[b+20>>0]|0)){Ra=o;return 0}f=c[e+4>>2]|0;c[k>>2]=0;m=k+4|0;c[m>>2]=0;i=c[e>>2]|0;if((i|0)>0){h=b+21|0;b=f;f=0;while(1){if((a[b+5>>0]|0?(a[b+4>>0]|0)==2:0)?(j=c[b>>2]|0,l=d[h>>0]|0,(j|0)>=(l|0)):0)c[k+(j-l<<2)>>2]=f+1;f=f+1|0;if((f|0)>=(i|0))break;else b=b+12|0}b=c[k>>2]|0;if(b|0){b=b+-1|0;f=c[e+16>>2]|0;c[f+(b<<3)>>2]=1;a[f+(b<<3)+4>>0]=1;m=c[m>>2]|0;b=m+-1|0;if(!m){Ra=o;return 0}g[n>>3]=20.0;n=e+48|0;c[n>>2]=20;c[n+4>>2]=0;c[f+(b<<3)>>2]=2;a[f+(b<<3)+4>>0]=1;Ra=o;return 0}}g[n>>3]=2147483647.0;n=e+48|0;c[n>>2]=2147483647;c[n+4>>2]=0;Ra=o;return 0}function Ki(a){a=a|0;var b=0;if(!a)return 0;if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{b=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function Li(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(mb()|0){b=7;return b|0}if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](24)|0;if(!d){b=7;return b|0}}else{f=Wa[c[29356>>2]&127](24)|0;if((c[14985]|0)>>>0<24)c[14985]=24;e=59064;d=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&d>>>0>0){g=c[14978]|0;e=Tv(d|0,e|0,f|0,((f|0)<0)<<31>>31|0)|0;d=L()|0;c[14768]=((d|0)<0|(d|0)==0&e>>>0<=g>>>0)&1}d=Wa[c[29340>>2]&127](f)|0;if(!d){g=7;return g|0}e=Wa[c[29352>>2]&127](d)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0>(c[14987]|0)>>>0)c[14987]=e};c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d>>2]=a;c[b>>2]=d;g=0;return g|0}function Mi(a){a=a|0;var b=0,d=0,e=0;b=a+4|0;gc(c[b>>2]|0)|0;c[b>>2]=0;b=a+16|0;d=c[b>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);c[b>>2]=0;b=a+20|0;d=c[b>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);c[b>>2]=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{e=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function Ni(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var 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;y=Ra;Ra=Ra+64|0;u=y+24|0;r=y+16|0;q=y+8|0;l=y;s=y+32|0;t=c[e>>2]|0;v=e+4|0;gc(c[v>>2]|0)|0;c[v>>2]=0;x=e+16|0;f=c[x>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{w=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[x>>2]=0;w=e+20|0;f=c[w>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{p=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[w>>2]=0;o=t+16|0;a:do if((h|0)>0){j=0;k=((d[(c[o>>2]|0)+5>>0]|0)>>>5&1^1)&255;b:while(1){f=c[i+(j<<2)>>2]|0;do if(f|0){g=b[f+8>>1]|0;if((g&514)==514?(a[f+10>>0]|0)==1:0)f=c[f+16>>2]|0;else{if(g&1)break;f=Gg(f,1)|0}if(f|0?(c[l>>2]=f,p=Bb(31408,l)|0,c[x+(k<<2)>>2]=p,(p|0)==0):0){f=7;break b}}while(0);j=j+1|0;if((j|0)>=(h|0))break a;else k=k+1|0}Ra=y;return f|0}while(0);p=t+12|0;m=c[(c[p>>2]|0)+112>>2]|0;h=s+4|0;c[h>>2]=0;c[s>>2]=0;l=s+8|0;c[l>>2]=0;i=s+12|0;c[i>>2]=m;m=s+16|0;c[m>>2]=0;a[s+20>>0]=0;n=s+21|0;a[n>>0]=0;wb(s,38205,7);f=c[w>>2]|0;if(f|0){c[q>>2]=f;Eb(s,38213,q)}g=c[c[o>>2]>>2]|0;if(!g)f=0;else f=(Eu(g)|0)&1073741823;j=c[m>>2]|0;k=j+f|0;if(k>>>0<(c[l>>2]|0)>>>0){if(f|0){c[m>>2]=k;ew((c[h>>2]|0)+j|0,g|0,f|0)|0}}else wb(s,g,f);f=c[x>>2]|0;if(f|0){c[r>>2]=f;Eb(s,38217,r)}f=c[h>>2]|0;if(((f|0)!=0?(a[f+(c[m>>2]|0)>>0]=0,(c[i>>2]|0)!=0):0)?(a[n>>0]&4)==0:0)f=$d(s)|0;else f=c[h>>2]|0;if(!f){x=7;Ra=y;return x|0}g=qd(c[p>>2]|0,f,-1,128,0,v,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](f);else{s=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f)}if(g|0){x=pd(c[p>>2]|0)|0;c[u>>2]=x;x=Bb(31408,u)|0;c[t+8>>2]=x;x=g;Ra=y;return x|0}e=e+8|0;t=e;t=Sv(c[t>>2]|0,c[t+4>>2]|0,1,0)|0;u=L()|0;c[e>>2]=t;c[e+4>>2]=u;if((Gc(c[v>>2]|0)|0)==100){x=0;Ra=y;return x|0}g=gc(c[v>>2]|0)|0;c[v>>2]=0;gc(0)|0;c[v>>2]=0;f=c[x>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{e=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[x>>2]=0;f=c[w>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{x=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[w>>2]=0;x=g;Ra=y;return x|0}function Oi(a){a=a|0;var b=0,d=0,e=0;b=a+8|0;e=b;e=Sv(c[e>>2]|0,c[e+4>>2]|0,1,0)|0;d=L()|0;c[b>>2]=e;c[b+4>>2]=d;b=a+4|0;if((Gc(c[b>>2]|0)|0)==100){e=0;return e|0}e=gc(c[b>>2]|0)|0;c[b>>2]=0;Si(a);return e|0}function Pi(a){a=a|0;return (c[a+4>>2]|0)==0|0}function Qi(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;i=d[(c[f>>2]|0)+21>>0]|0;if((i|0)<=(h|0)){if((yc(c[g>>2]|0,c[f+16+(h-i<<2)>>2]|0,-1,1,-1)|0)!=18)return 0;c[g+20>>2]=18;yc(c[g>>2]|0,31223,-1,1,0)|0;return 0}k=c[f+4>>2]|0;j=(k|0)==0;do if(j)l=29576;else{f=c[k+120>>2]|0;if(f|0?(e[k+144>>1]|0)>>>0>h>>>0:0){l=f+(h*40|0)|0;break}l=c[k>>2]|0;c[l+64>>2]=25;Ne(l,25);l=29576}while(0);f=l+8|0;i=e[f>>1]|0;if(i&2048|0)b[f>>1]=i&59391|4096;if(!j){i=c[k>>2]|0;h=k+40|0;f=c[h>>2]|0;if((f|0)==3082|(a[i+81>>0]|0)!=0){og(i);f=7}else f=c[i+68>>2]&f;c[h>>2]=f}Dc(g,l);return 0}function Ri(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=c[d+4>>2]|0;c[b>>2]=c[d>>2];c[b+4>>2]=a;return 0}function Si(a){a=a|0;var b=0,d=0,e=0;b=a+4|0;gc(c[b>>2]|0)|0;c[b>>2]=0;b=a+16|0;d=c[b>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);c[b>>2]=0;a=a+20|0;b=c[a>>2]|0;if(!b){c[a>>2]=0;return}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);c[a>>2]=0;return}else{e=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);c[a>>2]=0;return}}function Ti(b){b=b|0;var e=0,f=0,g=0;f=b+360|0;e=c[f>>2]|0;c[f>>2]=0;if(!e)return;b=c[b+4>>2]|0;if(b|0)do{f=b+149|0;g=(d[f>>0]|d[f+1>>0]<<8)&-4|1;a[f>>0]=g;a[f+1>>0]=g>>8;b=c[b+8>>2]|0}while((b|0)!=0);do{g=e;e=c[e+24>>2]|0;ng(g)}while((e|0)!=0);return}function Ui(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=a+20|0;if((c[g>>2]|0)>2){h=a+16|0;f=2;b=2;do{d=c[h>>2]|0;e=d+(f<<4)|0;if(!(c[d+(f<<4)+4>>2]|0)){lb(a,c[e>>2]|0);c[e>>2]=0}else{if((b|0)<(f|0)){d=d+(b<<4)|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2]}b=b+1|0}f=f+1|0}while((f|0)<(c[g>>2]|0));c[g>>2]=b;if((b|0)>=3)return}else c[g>>2]=2;b=a+16|0;d=c[b>>2]|0;e=a+412|0;if((d|0)==(e|0))return;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];c[e+16>>2]=c[d+16>>2];c[e+20>>2]=c[d+20>>2];c[e+24>>2]=c[d+24>>2];c[e+28>>2]=c[d+28>>2];lb(a,d);c[b>>2]=e;return} -function jl(f,g){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,x=0,y=0;x=Ra;Ra=Ra+48|0;v=x+32|0;t=x+24|0;s=x+16|0;q=x+8|0;p=x;h=c[f>>2]|0;j=c[g+20>>2]|0;if(!j)w=-1e6;else{k=c[h+16>>2]|0;i=0;while(1)if((c[k+(i<<4)+12>>2]|0)==(j|0)){w=i;break}else i=i+1|0}o=c[g+4>>2]|0;l=c[g+24>>2]|0;m=c[l+20>>2]|0;if(!m){i=l+12|0;j=l+16|0}else{j=a[o>>0]|0;if(!(j<<24>>24))i=0;else{i=0;k=o;do{k=k+1|0;i=G(i+(d[208+(j&255)>>0]|0)|0,-1640531535)|0;j=a[k>>0]|0}while(j<<24>>24!=0)}j=(i>>>0)%((c[l+8>>2]|0)>>>0)|0;i=m+(j<<3)|0;j=m+(j<<3)+4|0}i=c[i>>2]|0;a:do if(!i)j=59292;else{n=d[208+(d[o>>0]|0)>>0]|0;while(1){j=c[j>>2]|0;i=i+-1|0;l=c[j+12>>2]|0;m=a[l>>0]|0;k=(d[208+(m&255)>>0]|0)-n|0;if(!(m<<24>>24==0|(k|0)!=0)){m=o;do{l=l+1|0;m=m+1|0;y=a[l>>0]|0;k=(d[208+(y&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(y<<24>>24==0|(k|0)!=0))}if(!k)break a;if(!i){j=59292;break}}}while(0);o=h+16|0;m=c[(c[o>>2]|0)+(w<<4)>>2]|0;l=(w|0)==1;n=l?34855:34585;l=l?14:16;k=c[g>>2]|0;i=c[c[j+8>>2]>>2]|0;do if((a[h+165>>0]|0)==0?(r=f+200|0,(a[r>>0]|0)==0):0){j=c[h+312>>2]|0;if(j){h=$a[j&127](c[h+316>>2]|0,l,k,i,m,c[f+240>>2]|0)|0;if((h|0)==1){cd(f,39216,p);c[f+12>>2]=23;Ra=x;return}if((h|2|0)!=2){cd(f,39231,q);c[f+12>>2]=1;Ra=x;return}if(h|0){Ra=x;return}h=c[f>>2]|0;if(a[h+165>>0]|0)break;if(a[r>>0]|0)break}i=c[h+312>>2]|0;if(i|0){h=$a[i&127](c[h+316>>2]|0,9,n,0,m,c[f+240>>2]|0)|0;if((h|0)==1){cd(f,39216,s);c[f+12>>2]=23;Ra=x;return}if((h|2|0)==2){if(!h)break;Ra=x;return}else{cd(f,39231,t);c[f+12>>2]=1;Ra=x;return}}}while(0);m=f+8|0;h=c[m>>2]|0;if(!h){k=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[k+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[k+272>>2]|0)if(!(a[k+81>>0]|0))u=47;else{Ra=x;return}else{do if((e[k+276>>1]|0)>=224){h=k+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];j=k+284|0;c[j>>2]=(c[j>>2]|0)+1;j=i;break b}h=k+296|0;i=c[h>>2]|0;if(!i){h=k+292|0;break}else{c[h>>2]=c[i>>2];j=k+284|0;c[j>>2]=(c[j>>2]|0)+1;j=i;break b}}else h=k+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;u=47}while(0);if((u|0)==47)j=_d(k,224,0)|0;if(!j){Ra=x;return}h=j+104|0;i=h+120|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(i|0));c[j>>2]=k;h=k+4|0;i=c[h>>2]|0;if(i|0)c[i+4>>2]=j;c[j+8>>2]=i;c[j+4>>2]=0;c[h>>2]=j;c[j+20>>2]=381479589;c[j+12>>2]=f;c[m>>2]=j;Di(j,61,0,1,0)|0;l=j}else l=h;k=c[g>>2]|0;c[v>>2]=c[(c[o>>2]|0)+(w<<4)>>2];c[v+4>>2]=34585;c[v+8>>2]=k;Ak(f,42882,v);k=c[m>>2]|0;h=(c[c[(c[(c[f>>2]|0)+16>>2]|0)+(w<<4)+12>>2]>>2]|0)+1|0;i=k+108|0;j=c[i>>2]|0;if((c[k+112>>2]|0)>(j|0)){c[i>>2]=j+1;y=c[k+104>>2]|0;a[y+(j*20|0)>>0]=95;b[y+(j*20|0)+2>>1]=0;c[y+(j*20|0)+4>>2]=w;c[y+(j*20|0)+8>>2]=1;c[y+(j*20|0)+12>>2]=h;c[y+(j*20|0)+16>>2]=0;a[y+(j*20|0)+1>>0]=0}else Di(k,95,w,1,h)|0;j=c[g>>2]|0;i=l+108|0;h=c[i>>2]|0;if((c[l+112>>2]|0)>(h|0)){c[i>>2]=h+1;y=c[l+104>>2]|0;a[y+(h*20|0)>>0]=-110;b[y+(h*20|0)+2>>1]=0;c[y+(h*20|0)+4>>2]=w;c[y+(h*20|0)+8>>2]=0;c[y+(h*20|0)+12>>2]=0;c[y+(h*20|0)+16>>2]=0;a[y+(h*20|0)+1>>0]=0}else h=Di(l,146,w,0,0)|0;if(a[(c[l>>2]|0)+81>>0]|0){Ra=x;return}if((h|0)<0)h=(c[i>>2]|0)+-1|0;Ei(l,(c[l+104>>2]|0)+(h*20|0)|0,j,0);Ra=x;return}function kl(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+32|0;n=o+8|0;m=o;l=d+8|0;h=c[l>>2]|0;a:do if(!h){k=c[d>>2]|0;if((c[d+116>>2]|0)==0?(b[k+76>>1]&8)==0:0)a[d+23>>0]=1;b:do if(c[k+272>>2]|0)if(!(a[k+81>>0]|0))j=15;else{h=0;break a}else{do if((e[k+276>>1]|0)>=224){i=k+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];i=k+284|0;c[i>>2]=(c[i>>2]|0)+1;break b}i=k+296|0;h=c[i>>2]|0;if(!h){h=k+292|0;break}else{c[i>>2]=c[h>>2];i=k+284|0;c[i>>2]=(c[i>>2]|0)+1;break b}}else h=k+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;j=15}while(0);if((j|0)==15)h=_d(k,224,0)|0;if(!h)h=0;else{i=h+104|0;j=i+120|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(j|0));c[h>>2]=k;i=k+4|0;j=c[i>>2]|0;if(j|0)c[j+4>>2]=h;c[h+8>>2]=j;c[h+4>>2]=0;c[i>>2]=h;c[h+20>>2]=381479589;c[h+12>>2]=d;c[l>>2]=h;Di(h,61,0,1,0)|0}}while(0);l=d+19|0;i=a[l>>0]|0;if(!(i<<24>>24)){j=d+44|0;k=(c[j>>2]|0)+1|0;c[j>>2]=k}else{k=i+-1<<24>>24;a[l>>0]=k;k=c[d+148+((k&255)<<2)>>2]|0}if((f|0)<2)cd(d,42933,m);i=h+108|0;j=c[i>>2]|0;if((c[h+112>>2]|0)>(j|0)){c[i>>2]=j+1;m=c[h+104>>2]|0;a[m+(j*20|0)>>0]=-120;b[m+(j*20|0)+2>>1]=0;c[m+(j*20|0)+4>>2]=f;c[m+(j*20|0)+8>>2]=k;c[m+(j*20|0)+12>>2]=g;c[m+(j*20|0)+16>>2]=0;a[m+(j*20|0)+1>>0]=0}else Di(h,136,f,k,g)|0;m=c[d+116>>2]|0;a[((m|0)==0?d:m)+21>>0]=1;c[n>>2]=c[(c[(c[d>>2]|0)+16>>2]|0)+(g<<4)>>2];c[n+4>>2]=34585;c[n+8>>2]=f;c[n+12>>2]=k;c[n+16>>2]=k;Ak(d,42948,n);if(!k){Ra=o;return}h=a[l>>0]|0;if((h&255)>=8){Ra=o;return}a[l>>0]=h+1<<24>>24;c[d+148+((h&255)<<2)>>2]=k;Ra=o;return}function ll(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=Ra;Ra=Ra+32|0;g=h;a:do if(!b){b=0;e=1}else{while(1){e=c[b+4>>2]|0;if(!(e&4096))break;if(!(e&262144))b=b+12|0;else b=(c[b+20>>2]|0)+4|0;b=c[b>>2]|0;if(!b){b=0;e=1;break a}}b:while(1){switch(a[b>>0]|0){case 51:{b=b+12|0;break}case 44:{if(ll(c[b+12>>2]|0,d)|0){b=1;break b}b=b+16|0;break}default:{e=0;break a}}b=c[b>>2]|0;if(!b){b=0;e=1;break a}}Ra=h;return b|0}while(0);c[g+4>>2]=145;c[g+8>>2]=0;c[g+12>>2]=0;f=g+20|0;a[f>>0]=0;c[g+24>>2]=d;if(e)b=0;else{_j(g,b)|0;b=a[f>>0]|0}g=b&255;Ra=h;return g|0}function ml(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;if(!d)return;if((e|0)<0){g=d;do{d=g+4|0;f=c[d>>2]|0;if(f&1|0)c[d>>2]=f&-2;if(((a[g>>0]|0)==-95?(h=g+20|0,i=c[h>>2]|0,i|0):0)?(c[i>>2]|0)>0:0){d=0;f=i;do{ml(c[f+4+(d*20|0)>>2]|0,e);d=d+1|0;f=c[h>>2]|0}while((d|0)<(c[f>>2]|0))}ml(c[g+12>>2]|0,e);g=c[g+16>>2]|0}while((g|0)!=0);return}g=d;do{d=g+4|0;f=c[d>>2]|0;if(f&1|0?(b[g+36>>1]|0)==(e|0):0)c[d>>2]=f&-2;if(((a[g>>0]|0)==-95?(j=g+20|0,k=c[j>>2]|0,k|0):0)?(c[k>>2]|0)>0:0){d=0;f=k;do{ml(c[f+4+(d*20|0)>>2]|0,e);d=d+1|0;f=c[j>>2]|0}while((d|0)<(c[f>>2]|0))}ml(c[g+12>>2]|0,e);g=c[g+16>>2]|0}while((g|0)!=0);return}function nl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!a){j=0;return j|0}b=0;do{d=c[a+36>>2]|0;if(d){g=c[d+24>>2]|0;b=(g|0)>(b|0)?g:b}d=c[a+44>>2]|0;if(d){g=c[d+24>>2]|0;b=(g|0)>(b|0)?g:b}d=c[a+60>>2]|0;if(d){g=c[d+24>>2]|0;b=(g|0)>(b|0)?g:b}g=c[a>>2]|0;if((g|0)!=0?(h=c[g>>2]|0,(h|0)>0):0){f=0;e=h;while(1){d=c[g+4+(f*20|0)>>2]|0;if(!d)d=e;else{k=c[d+24>>2]|0;d=(k|0)>(b|0);b=d?k:b;d=d?h:e}f=f+1|0;if((f|0)>=(d|0))break;else e=d}}g=c[a+40>>2]|0;if((g|0)!=0?(i=c[g>>2]|0,(i|0)>0):0){f=0;e=i;while(1){d=c[g+4+(f*20|0)>>2]|0;if(!d)d=e;else{k=c[d+24>>2]|0;d=(k|0)>(b|0);b=d?k:b;d=d?i:e}f=f+1|0;if((f|0)>=(d|0))break;else e=d}}g=c[a+48>>2]|0;if((g|0)!=0?(j=c[g>>2]|0,(j|0)>0):0){f=0;e=j;while(1){d=c[g+4+(f*20|0)>>2]|0;if(!d)d=e;else{k=c[d+24>>2]|0;d=(k|0)>(b|0);b=d?k:b;d=d?j:e}f=f+1|0;if((f|0)>=(d|0))break;else e=d}}a=c[a+52>>2]|0}while((a|0)!=0);return b|0}function ol(d,e,f,g,h){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;o=Ra;Ra=Ra+32|0;n=o;if(!f){n=0;Ra=o;return n|0}if(c[e+8>>2]&8192|0){n=0;Ra=o;return n|0}if(c[e+68>>2]|0){n=0;Ra=o;return n|0}if(c[e+60>>2]|0){n=0;Ra=o;return n|0}if((a[f>>0]|0)==44){i=0;do{i=(ol(d,e,c[f+16>>2]|0,g,h)|0)+i|0;f=c[f+12>>2]|0}while((a[f>>0]|0)==44)}else i=0;j=(c[f+4>>2]&1|0)==0;if(!h){if(!j)k=12}else{if(j){n=0;Ra=o;return n|0}if((b[f+36>>1]|0)==(g|0))k=12;else{n=0;Ra=o;return n|0}}if((k|0)==12?(b[f+36>>1]|0)!=(g|0):0){n=0;Ra=o;return n|0}m=n+20|0;a[m>>0]=3;c[n+4>>2]=127;c[n+8>>2]=128;c[n+24>>2]=g;_j(n,f)|0;if(!(a[m>>0]|0)){n=i;Ra=o;return n|0}i=i+1|0;if(!e){n=i;Ra=o;return n|0}h=n+4|0;k=n+8|0;l=n+12|0;m=n+16|0;j=e;do{r=dk(c[d>>2]|0,f,0,0)|0;ml(r,-1);c[n>>2]=d;c[h>>2]=g;c[k>>2]=g;c[l>>2]=0;c[m>>2]=c[j>>2];r=zl(n,r)|0;q=(c[j+8>>2]&8|0)==0;p=j+36|0;e=j+44|0;r=Xk(c[d>>2]|0,c[(q?p:e)>>2]|0,r)|0;c[(q?p:e)>>2]=r;j=c[j+52>>2]|0}while((j|0)!=0);Ra=o;return i|0}function pl(d,f,g){d=d|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;w=Ra;Ra=Ra+16|0;l=w;q=c[f+60>>2]|0;h=f+12|0;if((q|0)==0|(c[h>>2]|0)!=0){Ra=w;return}s=d+44|0;v=(c[s>>2]|0)+1|0;c[s>>2]=v;c[h>>2]=v;t=d+8|0;h=c[t>>2]|0;a:do if(!h){k=c[d>>2]|0;if((c[d+116>>2]|0)==0?(b[k+76>>1]&8)==0:0)a[d+23>>0]=1;b:do if(c[k+272>>2]|0)if(!(a[k+81>>0]|0))p=16;else{r=0;break a}else{do if((e[k+276>>1]|0)>=224){h=k+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];r=k+284|0;c[r>>2]=(c[r>>2]|0)+1;break b}h=k+296|0;i=c[h>>2]|0;if(!i){h=k+292|0;break}else{c[h>>2]=c[i>>2];r=k+284|0;c[r>>2]=(c[r>>2]|0)+1;break b}}else h=k+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;p=16}while(0);if((p|0)==16)i=_d(k,224,0)|0;if(!i)r=0;else{h=i+104|0;j=h+120|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));c[i>>2]=k;h=k+4|0;j=c[h>>2]|0;if(j|0)c[j+4>>2]=i;c[i+8>>2]=j;c[i+4>>2]=0;c[h>>2]=i;c[i+20>>2]=381479589;c[i+12>>2]=d;c[t>>2]=i;Di(i,61,0,1,0)|0;r=i}}else r=h;while(0);h=q+12|0;do if(!(uk(c[h>>2]|0,l)|0)){h=c[h>>2]|0;do if(h){if((a[h>>0]|0)!=-88){n=Jj(d,h,v)|0;p=67;break}k=c[t>>2]|0;h=c[h+28>>2]|0;i=k+108|0;j=c[i>>2]|0;if((c[k+112>>2]|0)>(j|0)){c[i>>2]=j+1;o=c[k+104>>2]|0;a[o+(j*20|0)>>0]=78;b[o+(j*20|0)+2>>1]=0;c[o+(j*20|0)+4>>2]=h;c[o+(j*20|0)+8>>2]=v;c[o+(j*20|0)+12>>2]=0;c[o+(j*20|0)+16>>2]=0;a[o+(j*20|0)+1>>0]=0;break}else{Di(k,78,h,v,0)|0;break}}else{n=Jj(d,0,v)|0;p=67}while(0);do if(((p|0)==67?(n|0)!=(v|0):0)?(m=c[t>>2]|0,m|0):0){h=m+108|0;i=c[h>>2]|0;if((c[m+112>>2]|0)>(i|0)){c[h>>2]=i+1;p=c[m+104>>2]|0;a[p+(i*20|0)>>0]=79;b[p+(i*20|0)+2>>1]=0;c[p+(i*20|0)+4>>2]=n;c[p+(i*20|0)+8>>2]=v;c[p+(i*20|0)+12>>2]=0;c[p+(i*20|0)+16>>2]=0;a[p+(i*20|0)+1>>0]=0;break}else{Di(m,79,n,v,0)|0;break}}while(0);i=r+108|0;h=c[i>>2]|0;j=r+112|0;if((c[j>>2]|0)>(h|0)){c[i>>2]=h+1;p=c[r+104>>2]|0;a[p+(h*20|0)>>0]=15;b[p+(h*20|0)+2>>1]=0;c[p+(h*20|0)+4>>2]=v;c[p+(h*20|0)+8>>2]=0;c[p+(h*20|0)+12>>2]=0;c[p+(h*20|0)+16>>2]=0;a[p+(h*20|0)+1>>0]=0}else Di(r,15,v,0,0)|0;h=c[i>>2]|0;if((c[j>>2]|0)>(h|0)){c[i>>2]=h+1;p=c[r+104>>2]|0;a[p+(h*20|0)>>0]=20;b[p+(h*20|0)+2>>1]=0;c[p+(h*20|0)+4>>2]=v;c[p+(h*20|0)+8>>2]=g;c[p+(h*20|0)+12>>2]=0;c[p+(h*20|0)+16>>2]=0;a[p+(h*20|0)+1>>0]=0;break}else{Di(r,20,v,g,0)|0;break}}else{h=c[l>>2]|0;j=r+108|0;i=c[j>>2]|0;k=r+112|0;if((c[k>>2]|0)>(i|0)){c[j>>2]=i+1;o=c[r+104>>2]|0;a[o+(i*20|0)>>0]=70;b[o+(i*20|0)+2>>1]=0;c[o+(i*20|0)+4>>2]=h;c[o+(i*20|0)+8>>2]=v;c[o+(i*20|0)+12>>2]=0;c[o+(i*20|0)+16>>2]=0;a[o+(i*20|0)+1>>0]=0}else Di(r,70,h,v,0)|0;if(!h){h=c[j>>2]|0;if((c[k>>2]|0)>(h|0)){c[j>>2]=h+1;p=c[r+104>>2]|0;a[p+(h*20|0)>>0]=11;b[p+(h*20|0)+2>>1]=0;c[p+(h*20|0)+4>>2]=0;c[p+(h*20|0)+8>>2]=g;c[p+(h*20|0)+12>>2]=0;c[p+(h*20|0)+16>>2]=0;a[p+(h*20|0)+1>>0]=0;break}else{Di(r,11,0,g,0)|0;break}}if((h|0)>-1){o=f+6|0;n=b[o>>1]|0;i=((h|0)<0)<<31>>31;g=h>>>0<8;if(g)if(h>>>0<2)j=0;else{j=40;l=h;k=i;do{j=(j&65535)+65526|0;l=cw(l|0,k|0,1)|0;k=L()|0}while(k>>>0<0|(k|0)==0&l>>>0<8);k=j&65535;j=l;p=43}else{if(h>>>0>255){j=40;m=h;k=i;do{j=(j&65535)+40|0;p=m;m=bw(m|0,k|0,4)|0;l=k;k=L()|0}while(l>>>0>0|(l|0)==0&p>>>0>4095);l=j&65535;j=m}else{l=40;k=i;j=h}if(k>>>0>0|(k|0)==0&j>>>0>15){do{l=(l&65535)+10&65535;p=j;j=bw(j|0,k|0,1)|0;m=k;k=L()|0}while(m>>>0>0|(m|0)==0&p>>>0>31);k=l;p=43}else{k=l;p=43}}if((p|0)==43)j=(k&65535)+65526+(e[3648+((j&7)<<1)>>1]|0)&65535;if(n<<16>>16>j<<16>>16){if(g)if(h>>>0<2)h=0;else{j=40;do{j=(j&65535)+65526|0;h=cw(h|0,i|0,1)|0;i=L()|0}while(i>>>0<0|(i|0)==0&h>>>0<8);j=j&65535;p=58}else{if(h>>>0>255){j=40;do{j=(j&65535)+40|0;p=h;h=bw(h|0,i|0,4)|0;g=i;i=L()|0}while(g>>>0>0|(g|0)==0&p>>>0>4095);j=j&65535}else j=40;if(i>>>0>0|(i|0)==0&h>>>0>15){do{j=(j&65535)+10&65535;p=h;h=bw(h|0,i|0,1)|0;g=i;i=L()|0}while(g>>>0>0|(g|0)==0&p>>>0>31);p=58}else p=58}if((p|0)==58)h=(j&65535)+65526+(e[3648+((h&7)<<1)>>1]|0)&65535;b[o>>1]=h;p=f+8|0;c[p>>2]=c[p>>2]|16384}}}while(0);h=c[q+16>>2]|0;if(!h){Ra=w;return}l=c[s>>2]|0;m=l+1|0;c[f+16>>2]=m;l=l+2|0;c[s>>2]=l;do if((a[h>>0]|0)==-88){k=c[t>>2]|0;h=c[h+28>>2]|0;i=k+108|0;j=c[i>>2]|0;if((c[k+112>>2]|0)>(j|0)){c[i>>2]=j+1;u=c[k+104>>2]|0;a[u+(j*20|0)>>0]=78;b[u+(j*20|0)+2>>1]=0;c[u+(j*20|0)+4>>2]=h;c[u+(j*20|0)+8>>2]=m;c[u+(j*20|0)+12>>2]=0;c[u+(j*20|0)+16>>2]=0;a[u+(j*20|0)+1>>0]=0;break}else{Di(k,78,h,m,0)|0;break}}else{j=Jj(d,h,m)|0;if((j|0)!=(m|0)?(u=c[t>>2]|0,u|0):0){h=u+108|0;i=c[h>>2]|0;if((c[u+112>>2]|0)>(i|0)){c[h>>2]=i+1;u=c[u+104>>2]|0;a[u+(i*20|0)>>0]=79;b[u+(i*20|0)+2>>1]=0;c[u+(i*20|0)+4>>2]=j;c[u+(i*20|0)+8>>2]=m;c[u+(i*20|0)+12>>2]=0;c[u+(i*20|0)+16>>2]=0;a[u+(i*20|0)+1>>0]=0;break}else{Di(u,79,j,m,0)|0;break}}}while(0);i=r+108|0;h=c[i>>2]|0;j=r+112|0;if((c[j>>2]|0)>(h|0)){c[i>>2]=h+1;u=c[r+104>>2]|0;a[u+(h*20|0)>>0]=15;b[u+(h*20|0)+2>>1]=0;c[u+(h*20|0)+4>>2]=m;c[u+(h*20|0)+8>>2]=0;c[u+(h*20|0)+12>>2]=0;c[u+(h*20|0)+16>>2]=0;a[u+(h*20|0)+1>>0]=0}else Di(r,15,m,0,0)|0;h=c[i>>2]|0;if((c[j>>2]|0)>(h|0)){c[i>>2]=h+1;u=c[r+104>>2]|0;a[u+(h*20|0)>>0]=-104;b[u+(h*20|0)+2>>1]=0;c[u+(h*20|0)+4>>2]=v;c[u+(h*20|0)+8>>2]=l;c[u+(h*20|0)+12>>2]=m;c[u+(h*20|0)+16>>2]=0;a[u+(h*20|0)+1>>0]=0;Ra=w;return}else{Di(r,152,v,l,m)|0;Ra=w;return}}function ql(f,g,h,i,j,k,l){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|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,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;Ba=Ra;Ra=Ra+176|0;xa=Ba+40|0;ja=Ba+32|0;V=Ba+24|0;y=Ba+16|0;q=Ba+8|0;m=Ba;va=Ba+80|0;U=Ba+48|0;wa=f+8|0;ua=c[wa>>2]|0;Aa=c[f>>2]|0;c[U>>2]=0;c[U+4>>2]=0;c[U+8>>2]=0;c[U+12>>2]=0;c[U+16>>2]=0;c[U+20>>2]=0;c[U+24>>2]=0;if(!i)I=0;else I=(c[i>>2]|0)>63?0:i;$=U+8|0;c[$>>2]=I;_=Aa+76|0;ta=(b[_>>1]&16)==0?k:k&-257;i=c[g>>2]|0;if((i|0)>64){c[m>>2]=64;cd(f,43479,m);Aa=0;Ra=Ba;return Aa|0}da=ta&65535;ia=da&32;ea=(ia|0)!=0;o=ea?1:i;n=o*80|0;p=n+759&-16;m=p+72|0;a:do if(c[Aa+272>>2]|0)if(!(a[Aa+81>>0]|0))ka=15;else i=0;else{do if(!(0<0|(0==0?(e[Aa+276>>1]|0)>>>0>>0:0))){k=Aa+300|0;i=c[k>>2]|0;if(i|0){c[k>>2]=c[i>>2];za=Aa+284|0;c[za>>2]=(c[za>>2]|0)+1;break a}k=Aa+296|0;i=c[k>>2]|0;if(!i){i=Aa+292|0;break}else{c[k>>2]=c[i>>2];za=Aa+284|0;c[za>>2]=(c[za>>2]|0)+1;break a}}else i=Aa+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;ka=15}while(0);if((ka|0)==15)i=_d(Aa,m,0)|0;ra=Aa+81|0;if(a[ra>>0]|0){if(!i){Aa=0;Ra=Ba;return Aa|0}if(c[Aa+480>>2]|0){Xd(Aa,i);Aa=0;Ra=Ba;return Aa|0}za=i;if((c[Aa+304>>2]|0)>>>0<=za>>>0?(c[Aa+308>>2]|0)>>>0>za>>>0:0){Aa=Aa+300|0;c[i>>2]=c[Aa>>2];c[Aa>>2]=i;Aa=0;Ra=Ba;return Aa|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);Aa=0;Ra=Ba;return Aa|0}else{Aa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-Aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);Aa=0;Ra=Ba;return Aa|0}}c[i>>2]=f;ca=i+4|0;c[ca>>2]=g;X=i+8|0;c[X>>2]=I;c[i+16>>2]=h;c[i+12>>2]=j;ga=i+24|0;ha=i+28|0;c[ha>>2]=-1;c[ga>>2]=-1;za=i+46|0;a[za>>0]=o;sa=f+56|0;fa=(c[sa>>2]|0)+-1|0;c[sa>>2]=fa;na=i+32|0;c[na>>2]=fa;z=i+36|0;c[z>>2]=fa;fa=i+44|0;b[fa>>1]=ta;b[i+20>>1]=l;oa=f+132|0;pa=i+40|0;c[pa>>2]=c[oa>>2];k=i+47|0;A=k;B=A+33|0;do{a[A>>0]=0;A=A+1|0}while((A|0)<(B|0));qa=i+752|0;gw(qa|0,0,n+72|0)|0;aa=i+488|0;c[U>>2]=i;ya=i+80|0;ba=U+4|0;c[ba>>2]=ya;u=i+p|0;O=U+12|0;c[O>>2]=u;c[u+48>>2]=u+56;b[u+40>>1]=0;b[u+44>>1]=3;c[u+36>>2]=0;u=i+492|0;c[u>>2]=0;c[ya>>2]=i;a[i+89>>0]=0;c[i+84>>2]=0;la=i+92|0;c[la>>2]=0;c[i+96>>2]=8;ma=i+100|0;c[ma>>2]=i+104;Il(ya,h,44);v=(o|0)==0;if(v){if(I|0)a[k>>0]=c[I>>2];if(da&256|0)a[i+51>>0]=1;nk(f,0,43507,q)}else{q=0;do{r=g+8+(q*72|0)+40|0;K=c[r>>2]|0;T=c[u>>2]|0;c[u>>2]=T+1;c[aa+8+(T<<2)>>2]=K;b:do if((a[g+8+(q*72|0)+37>>0]&4?(w=c[g+8+(q*72|0)+16>>2]|0,x=c[g+8+(q*72|0)+64>>2]|0,x|0):0)?(c[x>>2]|0)>0:0){s=w+42|0;t=w+4|0;m=0;h=0;c:while(1){n=b[s>>1]|0;if((m|0)>=(n|0))break;p=c[t>>2]|0;while(1){if(a[p+(m<<4)+15>>0]&2)break;k=m+1|0;if((k|0)<(n|0))m=k;else break c}p=c[f>>2]|0;d:do if(c[p+272>>2]|0)if(!(a[p+81>>0]|0))ka=52;else break b;else{do if((e[p+276>>1]|0)>=52){k=p+300|0;n=c[k>>2]|0;if(n|0){c[k>>2]=c[n>>2];T=p+284|0;c[T>>2]=(c[T>>2]|0)+1;break d}k=p+296|0;n=c[k>>2]|0;if(!n){k=p+292|0;break}else{c[k>>2]=c[n>>2];T=p+284|0;c[T>>2]=(c[T>>2]|0)+1;break d}}else k=p+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;ka=52}while(0);if((ka|0)==52){ka=0;n=_d(p,52,0)|0}if(!n)break b;A=n;B=A+52|0;do{c[A>>2]=0;A=A+4|0}while((A|0)<(B|0));a[n>>0]=-94;b[n+34>>1]=-1;c[n+24>>2]=1;c[n+28>>2]=c[r>>2];b[n+32>>1]=m;c[n+44>>2]=w;k=c[x+4+(h*20|0)>>2]|0;if(!k)k=0;else k=dk(c[f>>2]|0,k,0,0)|0;Ml(ya,ej(f,53,n,ej(f,166,k,0)|0)|0,1)|0;k=h+1|0;if((k|0)<(c[x>>2]|0)){m=m+1|0;h=k}else break b}c[y>>2]=c[w>>2];c[y+4>>2]=h;cd(f,43525,y)}while(0);q=q+1|0}while((q|0)<(c[g>>2]|0))}k=c[la>>2]|0;if((k|0)>0)do{T=k;k=k+-1|0;Nl(g,ya,k)}while((T|0)>1);e:do if(!(a[ra>>0]|0)){f:do if((c[i+92>>2]|0)>0){h=va+20|0;q=va+4|0;r=va+8|0;if(v){p=0;k=ya;while(1){m=c[k+20>>2]|0;n=m+(p*48|0)+10|0;if((b[n>>1]&2)==0?(T=m+(p*48|0)+40|0,(c[T>>2]|0)==0&(c[T+4>>2]|0)==0):0){Tj(f,c[m+(p*48|0)>>2]|0,c[z>>2]|0,16);b[n>>1]=b[n>>1]|4;k=c[ba>>2]|0}p=p+1|0;if((p|0)>=(c[k+12>>2]|0))break f}}p=0;k=ya;do{k=c[k+20>>2]|0;n=k+(p*48|0)+10|0;do if((b[n>>1]&2)==0?(T=k+(p*48|0)+40|0,(c[T>>2]|0)==0&(c[T+4>>2]|0)==0):0){k=k+(p*48|0)|0;m=c[k>>2]|0;c[va>>2]=0;c[va+4>>2]=0;c[va+8>>2]=0;c[va+12>>2]=0;c[va+16>>2]=0;c[va+20>>2]=0;c[va+24>>2]=0;a[h>>0]=1;c[q>>2]=146;c[r>>2]=128;if(m){_j(va,m)|0;if(!(a[h>>0]|0))break}Tj(f,c[k>>2]|0,c[z>>2]|0,16);b[n>>1]=b[n>>1]|4}while(0);p=p+1|0;k=c[ba>>2]|0}while((p|0)<(c[k+12>>2]|0))}while(0);T=(da&256|0)==0;g:do if(!T){h:do if((c[g>>2]|0)==1){H=c[g+48>>2]|0;p=c[g+24>>2]|0;h=c[j>>2]|0;i:do if((h|0)>0){n=0;while(1){k=c[j+4+(n*20|0)>>2]|0;j:do if(!k)k=0;else while(1){m=c[k+4>>2]|0;if(!(m&4096))break j;if(!(m&262144))k=k+12|0;else k=(c[k+20>>2]|0)+4|0;k=c[k>>2]|0;if(!k){k=0;break}}while(0);if(((a[k>>0]|0)==-94?(c[k+28>>2]|0)==(H|0):0)?(b[k+32>>1]|0)<0:0)break i;n=n+1|0;if((n|0)>=(h|0)){ka=92;break}}}else ka=92;while(0);k:do if((ka|0)==92){k=c[p+8>>2]|0;if(!k)break h;x=va+4|0;y=va+12|0;z=va+16|0;A=va+8|0;B=va+20|0;C=va+24|0;D=va+28|0;E=va+17|0;F=va+18|0;G=va+72|0;while(1){if(a[k+54>>0]|0){w=k+50|0;l:do if(!(b[w>>1]|0))m=0;else{s=k+4|0;t=k+40|0;u=k+32|0;v=k+12|0;m=0;do{c[va>>2]=ya;c[x>>2]=ya;c[y>>2]=0;a[z>>0]=0;c[A>>2]=0;c[B>>2]=2;c[C>>2]=0;c[D>>2]=H;a[E>>0]=1;a[F>>0]=1;p=b[(c[s>>2]|0)+(m<<1)>>1]|0;n=p<<16>>16;if(p<<16>>16==-2){c[y>>2]=c[(c[t>>2]|0)+4+(m*20|0)>>2];c[A>>2]=c[(c[u>>2]|0)+(m<<2)>>2];b[G>>1]=-2;n=Ul(va)|0}else{h=c[v>>2]|0;do if(p<<16>>16==(b[h+40>>1]|0))n=-1;else{if(p<<16>>16<=-1)break;a[z>>0]=a[(c[h+4>>2]|0)+(n<<4)+13>>0]|0;c[A>>2]=c[(c[u>>2]|0)+(m<<2)>>2]}while(0);b[G>>1]=n;n=Tl(va)|0}do if(n){p=0;while(1){ka=n+32|0;if((c[ka>>2]|0)==0&(c[ka+4>>2]|0)==0){if(b[n+12>>1]&2){ka=108;break}p=(p|0)==0?n:p}n=Tl(va)|0;if(!n){ka=111;break}}if((ka|0)==108){ka=0;break}else if((ka|0)==111){ka=0;if(!p){ka=112;break}else break}}else ka=112;while(0);if((ka|0)==112){r=c[(c[u>>2]|0)+(m<<2)>>2]|0;if((c[j>>2]|0)<=0)break l;q=0;m:while(1){h=c[j+4+(q*20|0)>>2]|0;n:do if(!h)n=0;else{n=h;while(1){p=c[n+4>>2]|0;if(!(p&4096))break n;if(!(p&262144))n=n+12|0;else n=(c[n+20>>2]|0)+4|0;n=c[n>>2]|0;if(!n){n=0;break}}}while(0);do if((a[n>>0]|0)==-94){if((b[n+32>>1]|0)!=(b[(c[s>>2]|0)+(m<<1)>>1]|0))break;if((c[n+28>>2]|0)!=(H|0))break;n=Yi(f,h)|0;if(!n)n=c[(c[f>>2]|0)+8>>2]|0;p=c[n>>2]|0;ka=a[p>>0]|0;n=(d[208+(ka&255)>>0]|0)-(d[208+(d[r>>0]|0)>>0]|0)|0;if(!(ka<<24>>24==0|(n|0)!=0)){h=r;do{p=p+1|0;h=h+1|0;ka=a[p>>0]|0;n=(d[208+(ka&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(ka<<24>>24==0|(n|0)!=0))}if(!n)break m}while(0);q=q+1|0;if((q|0)>=(c[j>>2]|0))break l}n=b[(c[s>>2]|0)+(m<<1)>>1]|0;if(n<<16>>16>-1)n=d[(c[(c[v>>2]|0)+4>>2]|0)+(n<<16>>16<<4)+12>>0]|0;else n=n<<16>>16==-1&1;if(!n)break l}m=m+1|0}while(m>>>0<(e[w>>1]|0)>>>0)}while(0);if((m|0)==(e[w>>1]|0))break k}k=c[k+20>>2]|0;if(!k)break h}}while(0);a[i+51>>0]=1;break g}while(0);if(!I){b[fa>>1]=b[fa>>1]|128;c[X>>2]=j}}while(0);if((((o|0)==1?(R=c[U>>2]|0,P=c[O>>2]|0,S=R+44|0,(b[S>>1]&32)==0):0)?(Q=c[R+4>>2]|0,M=c[Q+24>>2]|0,(c[M+56>>2]|0)==0):0)?(a[Q+45>>0]&2)==0:0){I=c[Q+48>>2]|0;J=R+80|0;K=P+36|0;c[K>>2]=0;b[P+42>>1]=0;c[va>>2]=J;c[va+4>>2]=J;c[va+12>>2]=0;a[va+16>>0]=0;c[va+8>>2]=0;c[va+20>>2]=130;c[va+24>>2]=0;c[va+28>>2]=I;a[va+17>>0]=1;a[va+18>>0]=1;b[va+72>>1]=-1;m=Tl(va)|0;do if(!m)ka=154;else{k=0;while(1){ka=m+32|0;if((c[ka>>2]|0)==0&(c[ka+4>>2]|0)==0?b[m+12>>1]&130:0){ka=150;break}k=(k|0)==0?m:k;m=Tl(va)|0;if(!m){ka=152;break}}if((ka|0)==150)k=m;else if((ka|0)==152)if(!k){ka=154;break}c[K>>2]=4353;c[c[P+48>>2]>>2]=k;b[P+40>>1]=1;b[P+24>>1]=1;b[P+20>>1]=33}while(0);o:do if((ka|0)==154?(N=c[M+8>>2]|0,N|0):0){x=va+4|0;y=va+12|0;z=va+16|0;A=va+8|0;B=va+20|0;C=va+24|0;D=va+28|0;E=va+17|0;F=va+18|0;G=va+72|0;H=P+48|0;k=N;p:while(1){do if(a[k+54>>0]|0){if(c[k+36>>2]|0)break;w=k+50|0;m=b[w>>1]|0;if((m&65535)>3)break;u=k+55|0;u=(d[u>>0]|d[u+1>>0]<<8)<<4&128|2;v=u&65535;q:do if(!(m<<16>>16))m=0;else{q=k+4|0;r=k+40|0;s=k+32|0;t=k+12|0;m=0;while(1){c[va>>2]=J;c[x>>2]=J;c[y>>2]=0;a[z>>0]=0;c[A>>2]=0;c[B>>2]=v;c[C>>2]=0;c[D>>2]=I;a[E>>0]=1;a[F>>0]=1;p=b[(c[q>>2]|0)+(m<<1)>>1]|0;n=p<<16>>16;if(p<<16>>16==-2){c[y>>2]=c[(c[r>>2]|0)+4+(m*20|0)>>2];c[A>>2]=c[(c[s>>2]|0)+(m<<2)>>2];b[G>>1]=-2;p=Ul(va)|0}else{h=c[t>>2]|0;do if(p<<16>>16==(b[h+40>>1]|0))n=-1;else{if(p<<16>>16<=-1)break;a[z>>0]=a[(c[h+4>>2]|0)+(n<<4)+13>>0]|0;c[A>>2]=c[(c[s>>2]|0)+(m<<2)>>2]}while(0);b[G>>1]=n;p=Tl(va)|0}if(!p)break;n=0;while(1){ka=p+32|0;if((c[ka>>2]|0)==0&(c[ka+4>>2]|0)==0?(b[p+12>>1]&u)<<16>>16:0){ka=172;break}n=(n|0)==0?p:n;p=Tl(va)|0;if(!p){ka=174;break}}if((ka|0)==172)n=p;else if((ka|0)==174)if(!n)break q;c[(c[H>>2]|0)+(m<<2)>>2]=n;m=m+1|0;if(m>>>0>=(e[w>>1]|0)>>>0)break q}}while(0);if((m|0)==(e[w>>1]|0))break p}while(0);k=c[k+20>>2]|0;if(!k)break o}ka=k+55|0;c[K>>2]=4609;if(!(((d[ka>>0]|d[ka+1>>0]<<8)&32)==0?(ka=Q+64|0,Q=k+64|0,!((c[Q>>2]&c[ka>>2]|0)==0?(c[Q+4>>2]&c[ka+4>>2]|0)==0:0)):0))c[K>>2]=4673;ka=m&65535;b[P+40>>1]=ka;b[P+24>>1]=ka;c[P+32>>2]=k;b[P+20>>1]=39}while(0);if(c[K>>2]|0){b[P+22>>1]=1;c[R+816>>2]=P;k=P+8|0;c[k>>2]=1;c[k+4>>2]=0;c[R+756>>2]=I;b[R+72>>1]=1;k=c[R+8>>2]|0;if(k|0)a[R+47>>0]=c[k>>2];if(!(b[S>>1]&256))ka=264;else{a[R+51>>0]=1;ka=264}}else ka=187}else ka=187;if((ka|0)==187){E=c[U>>2]|0;k=c[E+4>>2]|0;S=a[E+46>>0]|0;F=k+8+((S&255)*72|0)|0;H=c[c[E>>2]>>2]|0;G=c[O>>2]|0;I=G+56|0;J=G+48|0;c[J>>2]=I;K=G+40|0;b[K>>1]=0;M=G+44|0;b[M>>1]=3;N=G+36|0;c[N>>2]=0;z=U+24|0;c[z>>2]=2e4;do if(S<<24>>24){A=G+16|0;B=E+492|0;C=G+8|0;D=H+81|0;s=0;y=0;m=k+8|0;p=2e4;r=0;n=0;q=0;x=0;r:while(1){a[A>>0]=y;c[z>>2]=p+1e3;p=c[m+40>>2]|0;t=c[B>>2]|0;h=(t|0)>0;s:do if(h){k=0;while(1){if((c[E+496+(k<<2)>>2]|0)==(p|0))break;k=k+1|0;if((k|0)>=(t|0)){k=0;p=0;break s}}k=cw(1,0,k|0)|0;p=L()|0}else{k=0;p=0}while(0);u=C;c[u>>2]=k;c[u+4>>2]=p;u=a[m+36>>0]|0;w=((u|s)&10)==0;v=w?r:n;w=w?q:x;if(!(c[(c[m+16>>2]|0)+56>>2]|0)){k=Xl(U,v,w)|0;h=0;p=0}else{k=m+72|0;if(k>>>0>=F>>>0|h^1){h=0;p=0}else{q=m;h=0;p=0;while(1){if((h|0)==0&(p|0)==0?(a[q+108>>0]&10)==0:0){h=0;p=0}else{r=c[q+112>>2]|0;q=0;while(1){if((c[E+496+(q<<2)>>2]|0)==(r|0)){ka=202;break}q=q+1|0;if((q|0)>=(t|0)){q=0;r=0;break}}if((ka|0)==202){ka=0;q=cw(1,0,q|0)|0;r=L()|0}h=q|h;p=r|p}q=k+72|0;if(q>>>0>>0){S=k;k=q;q=S}else break}}k=Wl(U,v,w,h,p)|0}do if(!k)if(!(a[(c[ba>>2]|0)+9>>0]|0)){k=C;n=c[k>>2]|n;k=c[k+4>>2]|x;ka=212;break}else{k=Yl(U,v,w,h,p)|0;ka=211;break}else ka=211;while(0);t:do if((ka|0)==211){ka=0;p=C;n=c[p>>2]|n;p=c[p+4>>2]|x;switch(k|0){case 0:{k=p;ka=212;break t}case 101:break;default:break r}Db(28,43626,V);k=p}while(0);if((ka|0)==212){ka=0;if(a[D>>0]|0){k=0;break}}m=m+72|0;if(m>>>0>=F>>>0){k=0;break}s=u;y=y+1|0;p=c[z>>2]|0;r=v;q=w;x=k}m=c[J>>2]|0;if((m|0)!=(I|0)){if(H|0){if(c[H+480>>2]|0){Xd(H,m);p=k;break}V=m;if((c[H+304>>2]|0)>>>0<=V>>>0?(c[H+308>>2]|0)>>>0>V>>>0:0){p=H+300|0;c[m>>2]=c[p>>2];c[p>>2]=m;p=k;break}}if(m)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);p=k;break}else{p=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);p=k;break}else p=k}else p=k}else p=0;while(0);k=c[N>>2]|0;do if(k&17408|0){if(k&1024|0?(Y=G+28|0,a[Y>>0]|0):0){k=G+32|0;m=c[k>>2]|0;do if(m|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{Z=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-Z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}while(0);a[Y>>0]=0;c[k>>2]=0;break}if(k&16384|0?(Z=G+32|0,W=c[Z>>2]|0,W|0):0){k=c[W+16>>2]|0;u:do if(k){do if(H|0){m=H+480|0;if(!(c[m>>2]|0)){n=k;if((c[H+304>>2]|0)>>>0>n>>>0)break;if((c[H+308>>2]|0)>>>0<=n>>>0)break;ka=H+300|0;c[k>>2]=c[ka>>2];c[ka>>2]=k}else Xd(H,k);k=c[Z>>2]|0;ka=250;break u}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](k);ka=248;break}else{ka=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-ka;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);ka=248;break}}else ka=248;while(0);do if((ka|0)==248){k=c[Z>>2]|0;if(!H){ka=255;break}m=H+480|0;ka=250}while(0);do if((ka|0)==250){if(c[m>>2]|0){Xd(H,k);break}m=k;if((c[H+304>>2]|0)>>>0>m>>>0){ka=255;break}if((c[H+308>>2]|0)>>>0<=m>>>0){ka=255;break}Y=H+300|0;c[k>>2]=c[Y>>2];c[Y>>2]=k}while(0);do if((ka|0)==255){if(!k)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{Y=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-Y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[Z>>2]=0}}while(0);c[J>>2]=I;b[K>>1]=0;b[M>>1]=3;c[N>>2]=0;if(p|0){ka=625;break}Jl(i,0);if(a[ra>>0]|0){ka=625;break}if(c[X>>2]|0){Jl(i,(e[i+72>>1]|0)+1&65535);if(!(a[ra>>0]|0))ka=264;else break}else ka=265}if((ka|0)==264?(c[X>>2]|0)==0:0)ka=265;if((ka|0)==265?!(0==0?(c[Aa+32>>2]&4096|0)==0:0):0){Z=i+64|0;c[Z>>2]=-1;c[Z+4>>2]=-1}if((c[f+36>>2]|0)==0?(a[ra>>0]|0)==0:0){v:do if((j|0)!=0&(d[za>>0]|0)>1?(b[_>>1]&256)==0:0){k=c[j>>2]|0;if((k|0)>0){q=0;h=0;n=0;while(1){m=c[j+4+(q*20|0)>>2]|0;if(!m){m=0;p=0}else{m=Pl(aa,m)|0;p=L()|0;k=c[j>>2]|0}m=m|h;n=p|n;q=q+1|0;if((q|0)>=(k|0)){t=m;s=n;break}else h=m}}else{t=0;s=0}r=c[$>>2]|0;if(!r)A=t;else{k=c[r>>2]|0;if((k|0)>0){q=0;h=k;m=0;k=0;do{n=c[r+4+(q*20|0)>>2]|0;if(!n){n=0;p=0}else{n=Pl(aa,n)|0;p=L()|0;h=c[r>>2]|0}m=n|m;k=p|k;q=q+1|0}while((q|0)<(h|0))}else{m=0;k=0}s=k|s;A=m|t}k=a[za>>0]|0;m=k&255;n=m+-1|0;if((k&255)>1){if(!T){z=n;x=-1;n=-1;while(1){y=qa+(z*80|0)|0;p=c[qa+(z*80|0)+64>>2]|0;h=c[ca>>2]|0;q=d[p+16>>0]|0;w:do if(!(a[h+8+(q*72|0)+36>>0]&8))m=x;else{w=p+8|0;u=c[w>>2]|0;w=c[w+4>>2]|0;if(!((u&A|0)==0&(w&s|0)==0)){m=x;break}t=c[ba>>2]|0;r=c[t+20>>2]|0;t=c[t+12>>2]|0;v=r+(t*48|0)|0;t=(t|0)>0;do if(t){h=h+8+(q*72|0)+40|0;p=r;do{aa=p+40|0;if(!((c[aa>>2]&u|0)==0?(c[aa+4>>2]&w|0)==0:0)){q=c[p>>2]|0;if(!(c[q+4>>2]&1)){m=x;break w}if((c[h>>2]|0)!=(b[q+36>>1]|0)){m=x;break w}}p=p+48|0}while(p>>>0>>0);h=x&~u;p=n&~w;if(!t)break;n=r;do{aa=n+40|0;if(!((c[aa>>2]&u|0)==0?(c[aa+4>>2]&w|0)==0:0)){aa=n+10|0;b[aa>>1]=b[aa>>1]|4}n=n+48|0}while(n>>>0>>0)}else{h=x&~u;p=n&~w}while(0);n=(k&255)+-1|0;if((n|0)!=(z|0)){fw(y|0,qa+(m*80|0)|0,(n-z|0)*80|0)|0;k=a[za>>0]|0}k=k+-1<<24>>24;a[za>>0]=k;o=o+-1|0;m=h;n=p}while(0);if((z|0)>1){aa=z;z=z+-1|0;x=m;m=aa}else{ba=o;J=m;I=n;break v}}}z=n;x=-1;n=-1;while(1){y=qa+(z*80|0)|0;p=c[qa+(z*80|0)+64>>2]|0;h=c[ca>>2]|0;q=d[p+16>>0]|0;x:do if(!(a[h+8+(q*72|0)+36>>0]&8))m=x;else{if(!(c[p+36>>2]&4096)){m=x;break}w=p+8|0;v=c[w>>2]|0;w=c[w+4>>2]|0;if(!((v&A|0)==0&(w&s|0)==0)){m=x;break}t=c[ba>>2]|0;r=c[t+20>>2]|0;t=c[t+12>>2]|0;u=r+(t*48|0)|0;t=(t|0)>0;do if(t){q=h+8+(q*72|0)+40|0;p=r;do{aa=p+40|0;if(!((c[aa>>2]&v|0)==0?(c[aa+4>>2]&w|0)==0:0)){h=c[p>>2]|0;if(!(c[h+4>>2]&1)){m=x;break x}if((c[q>>2]|0)!=(b[h+36>>1]|0)){m=x;break x}}p=p+48|0}while(p>>>0>>0);h=x&~v;p=n&~w;if(!t)break;n=r;do{aa=n+40|0;if(!((c[aa>>2]&v|0)==0?(c[aa+4>>2]&w|0)==0:0)){aa=n+10|0;b[aa>>1]=b[aa>>1]|4}n=n+48|0}while(n>>>0>>0)}else{h=x&~v;p=n&~w}while(0);n=(k&255)+-1|0;if((n|0)!=(z|0)){fw(y|0,qa+(m*80|0)|0,(n-z|0)*80|0)|0;k=a[za>>0]|0}k=k+-1<<24>>24;a[za>>0]=k;o=o+-1|0;m=h;n=p}while(0);if((z|0)>1){aa=z;z=z+-1|0;x=m;m=aa}else{ba=o;J=m;I=n;break}}}else{ba=o;J=-1;I=-1}}else{ba=o;J=-1;I=-1}while(0);ca=(c[i>>2]|0)+132|0;c[ca>>2]=(c[ca>>2]|0)+(b[i+72>>1]|0);do if(da&4){m=(c[i+816>>2]|0)+36|0;n=c[m>>2]|0;o=n&4096;if(!o){if(!(da&8)){D=0;break}k=c[g+24>>2]|0;if(c[k+56>>2]|0){D=0;break}if((da&16|0)==0&(n&8192|0)!=0){D=0;break}}else k=c[g+24>>2]|0;a[i+49>>0]=2-(o>>>12);if(!((n&64|0)==0?1:(c[k+36>>2]&32|0)!=0)){c[m>>2]=n&-65;D=ta&8}else D=0}else D=0;while(0);H=(ba|0)>0;if(H){E=Aa+16|0;F=f+116|0;G=i+49|0;w=ea^1;x=ua+108|0;y=ua+112|0;C=(l|0)==0|w;z=ua+104|0;A=f+40|0;B=i+51|0;u=qa;v=0;while(1){p=d[u+44>>0]|0;s=g+8+(p*72|0)+16|0;o=c[s>>2]|0;m=c[o+72>>2]|0;if(!m)t=-1e6;else{n=c[E>>2]|0;k=0;while(1)if((c[n+(k<<4)+12>>2]|0)==(m|0)){t=k;break}else k=k+1|0}q=c[u+64>>2]|0;r=o+36|0;do if(!(c[r>>2]&2)){if(c[o+12>>2]|0)break;k=c[q+36>>2]|0;if(k&1024|0){k=c[o+64>>2]|0;y:do if(!k)o=0;else while(1){if((c[k>>2]|0)==(Aa|0)){o=k;break y}k=c[k+24>>2]|0;if(!k){o=0;break}}while(0);m=c[g+8+(p*72|0)+40>>2]|0;k=c[x>>2]|0;if((c[y>>2]|0)>(k|0)){c[x>>2]=k+1;ea=c[z>>2]|0;a[ea+(k*20|0)>>0]=-93;b[ea+(k*20|0)+2>>1]=0;c[ea+(k*20|0)+4>>2]=m;c[ea+(k*20|0)+8>>2]=0;c[ea+(k*20|0)+12>>2]=0;c[ea+(k*20|0)+16>>2]=0;a[ea+(k*20|0)+1>>0]=0}else k=Di(ua,163,m,0,0)|0;if(a[(c[ua>>2]|0)+81>>0]|0)break;if((k|0)<0)k=(c[x>>2]|0)+-1|0;m=c[z>>2]|0;n=m+(k*20|0)+1|0;if(a[n>>0]|0){Ei(ua,m+(k*20|0)|0,o,-12);break}if(!o)break;c[m+(k*20|0)+16>>2]=o;a[n>>0]=-12;ea=o+12|0;c[ea>>2]=(c[ea>>2]|0)+1;break}if(c[o+56>>2]|0)break;if(k&64|ia|0){Hj(f,t,c[o+28>>2]|0,0,c[o>>2]|0);break}m=g+8+(p*72|0)+40|0;if(!(a[G>>0]|0))k=108;else{c[ga>>2]=c[m>>2];k=109}Gj(f,c[m>>2]|0,t,o,k);do if(!(a[G>>0]|0)){if((b[o+42>>1]|0)>=64)break;if(c[r>>2]&32|0)break;n=g+8+(p*72|0)+56|0;k=c[n>>2]|0;n=c[n+4>>2]|0;if((k|0)==0&(n|0)==0)m=0;else{m=0;do{k=bw(k|0,n|0,1)|0;n=L()|0;m=m+1|0}while(!((k|0)==0&(n|0)==0))}if(a[(c[ua>>2]|0)+81>>0]|0)break;k=(c[x>>2]|0)+-1|0;n=c[z>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=m;a[o>>0]=-3;break}else{Ei(ua,n+(k*20|0)|0,m,-3);break}}while(0);k=c[x>>2]|0;if((k|0)<=0)break;b[(c[z>>2]|0)+((k+-1|0)*20|0)+2>>1]=D}while(0);h=q+36|0;z:do if(c[h>>2]&512|0){p=c[q+32>>2]|0;do if(c[r>>2]&32|0){ea=p+55|0;if(((d[ea>>0]|d[ea+1>>0]<<8)&3)!=2|w)break;c[u+8>>2]=c[u+4>>2];break z}while(0);do if(!(a[G>>0]|0)){if(!C){o=106;k=l;break}k=c[A>>2]|0;c[A>>2]=k+1;o=108}else{k=c[(c[s>>2]|0)+8>>2]|0;if((k|0)==0|(k|0)==(p|0))k=l;else{m=l;do{m=m+1|0;k=c[k+20>>2]|0}while(!((k|0)==0|(k|0)==(p|0)));k=m}c[ha>>2]=k;o=109}while(0);c[u+8>>2]=k;m=c[p+44>>2]|0;n=c[x>>2]|0;if((c[y>>2]|0)>(n|0)){c[x>>2]=n+1;ea=c[z>>2]|0;a[ea+(n*20|0)>>0]=o;b[ea+(n*20|0)+2>>1]=0;c[ea+(n*20|0)+4>>2]=k;c[ea+(n*20|0)+8>>2]=m;c[ea+(n*20|0)+12>>2]=t;c[ea+(n*20|0)+16>>2]=0;a[ea+(n*20|0)+1>>0]=0}else Di(ua,o,k,m,t)|0;m=c[wa>>2]|0;n=Ij(f,p)|0;A:do if(n|0){k=c[m>>2]|0;if(!(a[k+81>>0]|0)){da=c[m+104>>2]|0;ea=(c[m+108>>2]|0)+-1|0;a[da+(ea*20|0)+1>>0]=-9;c[da+(ea*20|0)+16>>2]=n;break}if(c[k+480>>2]|0)break;ea=(c[n>>2]|0)+-1|0;c[n>>2]=ea;if(ea|0)break;k=c[n+12>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,n);break A}m=n;if((c[k+304>>2]|0)>>>0>m>>>0)break;if((c[k+308>>2]|0)>>>0<=m>>>0)break;ea=k+300|0;c[n>>2]=c[ea>>2];c[ea>>2]=n;break A}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{ea=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-ea;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);ea=c[h>>2]|0;if(!((ea&15|0)!=0&(ea&32770|0)==0))break;if(b[fa>>1]&1)break;if((a[B>>0]|0)==2)break;k=c[x>>2]|0;if((k|0)<=0)break;b[(c[z>>2]|0)+((k+-1|0)*20|0)+2>>1]=2}while(0);B:do if((t|0)>-1){o=c[F>>2]|0;o=(o|0)==0?f:o;k=o+84|0;m=c[k>>2]|0;n=1<>2]=m|n;if((t|0)!=1)break;r=c[o>>2]|0;k=r+16|0;if(c[(c[k>>2]|0)+20>>2]|0)break;if(a[o+199>>0]|0)break;m=Pe(c[r>>2]|0,0,r,va,0,542)|0;if(m|0){cd(o,32157,ja);c[o+12>>2]=m;break}ea=c[va>>2]|0;c[(c[k>>2]|0)+20>>2]=ea;k=c[r+92>>2]|0;o=c[ea+4>>2]|0;c[o+4>>2]=c[ea>>2];do if(!(b[o+22>>1]&2)){p=o+32|0;h=o+36|0;q=(c[p>>2]|0)-(c[h>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[p>>2]=k;n=o+80|0;k=c[n>>2]|0;if(!k)break;m=k+-4|0;c[n>>2]=m;k=m;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[m>>2]=c[14819];c[14819]=m;ea=(c[14820]|0)+1|0;c[14820]=ea;c[14821]=(ea|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](m)|0;ka=421;break}else{k=Wa[c[29352>>2]&127](m)|0;ka=421}while(0);do if((ka|0)==421){ka=0;c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{ea=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-ea;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[n>>2]=0}while(0);ea=Se(c[o>>2]|0,p,q)|0;c[h>>2]=(c[p>>2]|0)-(q&65535);if((ea|0)!=7)break;k=r+81|0;do if(!(a[k>>0]|0)){if(a[r+82>>0]|0)break;a[k>>0]=1;if((c[r+180>>2]|0)>0)c[r+264>>2]=1;k=r+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[r+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break B}while(0)}while(0);v=v+1|0;if((v|0)==(ba|0)){aa=x;break}else u=u+80|0}}else aa=ua+108|0;c[i+56>>2]=c[aa>>2];if(!(a[ra>>0]|0)){if(!H){Aa=i;Ra=Ba;return Aa|0}W=va+20|0;X=va+4|0;Y=va+8|0;Z=va+24|0;_=f+40|0;j=f+19|0;$=f+44|0;V=0;U=I;do{T=qa+(V*80|0)|0;m=qa+(V*80|0)+64|0;if(c[(c[m>>2]|0)+36>>2]&16384|0){O=qa+(V*80|0)+44|0;I=d[O>>0]|0;S=c[wa>>2]|0;R=S+108|0;k=c[R>>2]|0;P=S+112|0;if((c[P>>2]|0)>(k|0)){c[R>>2]=k+1;A=c[S+104>>2]|0;a[A+(k*20|0)>>0]=17;A=A+(k*20|0)+1|0;B=A+19|0;do{a[A>>0]=0;A=A+1|0}while((A|0)<(B|0));Q=k}else Q=Di(S,17,0,0,0)|0;M=g+8+(I*72|0)+16|0;H=c[M>>2]|0;k=c[ma>>2]|0;ja=c[la>>2]|0;N=k+(ja*48|0)|0;G=c[m>>2]|0;C:do if((ja|0)>0){y=g+8+(I*72|0)+40|0;z=g+8+(I*72|0)+36|0;A=H+4|0;B=G+44|0;C=G+48|0;D=G+56|0;w=0;x=k;p=0;k=0;m=0;n=0;while(1){o=c[x>>2]|0;ja=G;do if((c[ja>>2]|0)==0&(c[ja+4>>2]|0)==0){if(b[x+10>>1]&2)break;if(c[o+4>>2]&1|0)break;ja=c[y>>2]|0;a[W>>0]=3;c[X>>2]=127;c[Y>>2]=128;c[Z>>2]=ja;_j(va,o)|0;if(!(a[W>>0]|0))break;ja=c[f>>2]|0;k=Xk(ja,k,dk(ja,o,0,0)|0)|0}while(0);do if((c[x+20>>2]|0)==(c[y>>2]|0)){o=e[x+12>>1]|0;if(!(o&130)){o=w;break}if(a[z>>0]&8?!((o&128|0)==0?1:(c[(c[x>>2]|0)+4>>2]&1|0)!=0):0){o=w;break}ja=x+32|0;if(!((c[ja>>2]&J|0)==0?(c[ja+4>>2]&U|0)==0:0)){o=w;break}o=c[x+28>>2]|0;if((o|0)<0){o=w;break}if(!(Vl(c[x>>2]|0,a[(c[(c[M>>2]|0)+4>>2]|0)+(o<<4)+13>>0]|0)|0)){o=w;break}ja=(o|0)>63;u=cw(1,0,o|0)|0;v=L()|0;u=ja?0:u;v=ja?-2147483648:v;if(!(p<<24>>24)){t=c[(c[A>>2]|0)+(o<<4)>>2]|0;c[xa>>2]=c[H>>2];c[xa+4>>2]=t;Db(284,43705,xa);t=1}else t=p;if(!((u&m|0)==0&(v&n|0)==0)){p=t;o=w;break}r=c[f>>2]|0;o=w+1|0;if((w|0)<(e[B>>1]|0))p=c[C>>2]|0;else{s=w+8&-8;q=s<<2;D:do if(c[r+272>>2]|0)if(!(a[r+81>>0]|0))ka=471;else break C;else{do if(!(0<0|(0==0?(e[r+276>>1]|0)>>>0>>0:0))){h=r+300|0;p=c[h>>2]|0;if(p|0){c[h>>2]=c[p>>2];ja=r+284|0;c[ja>>2]=(c[ja>>2]|0)+1;break D}h=r+296|0;p=c[h>>2]|0;if(!p){p=r+292|0;break}else{c[h>>2]=c[p>>2];ja=r+284|0;c[ja>>2]=(c[ja>>2]|0)+1;break D}}else p=r+288|0;while(0);c[p>>2]=(c[p>>2]|0)+1;ka=471}while(0);if((ka|0)==471){ka=0;p=_d(r,q,0)|0}if(!p)break C;ew(p|0,c[C>>2]|0,e[B>>1]<<2|0)|0;h=c[C>>2]|0;E:do if((h|0)!=(D|0)){if(c[r+480>>2]|0){Xd(r,h);break}q=h;do if((c[r+304>>2]|0)>>>0<=q>>>0){if((c[r+308>>2]|0)>>>0<=q>>>0)break;ja=r+300|0;c[h>>2]=c[ja>>2];c[ja>>2]=h;break E}while(0);if(!h)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{ja=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);c[C>>2]=p;b[B>>1]=s}c[p+(w<<2)>>2]=x;p=t;m=u|m;n=v|n}else o=w;while(0);x=x+48|0;if(x>>>0>=N>>>0){ka=486;break}else w=o}}else{o=0;k=0;n=0;m=0;ka=486}while(0);F:do if((ka|0)==486){ka=0;K=o&65535;b[G+40>>1]=K;b[G+24>>1]=K;K=G+36|0;c[K>>2]=16961;D=g+8+(I*72|0)+56|0;B=D;h=c[B+4>>2]|0;B=c[B>>2]&~m;z=h&((n|-2147483648)^2147483647);E=H+42|0;y=b[E>>1]|0;p=y<<16>>16;A=(y<<16>>16<63?y:63)<<16>>16;y=y<<16>>16>0;if(y){n=0;m=o;do{ja=cw(1,0,n|0)|0;m=m+(((ja&B|0)!=0|((L()|0)&z|0)!=0)&1)|0;n=n+1|0}while((n|0)<(A|0))}else m=o;q=c[f>>2]|0;C=((h|0)<0?p+-62|0:1)+m|0;s=C&65535;u=C<<16;t=u>>16;h=(u>>14)+7&-8;u=u>>15;r=u+2|0;p=h+72+(t+7+u+r&-8)|0;o=((p|0)<0)<<31>>31;G:do if(!q){ja=Sv(p|0,o|0,-1,-1)|0;l=L()|0;if(l>>>0>0|(l|0)==0&ja>>>0>2147483390)break F;if(!(c[7324]|0)){m=Wa[c[29340>>2]&127](p)|0;ka=513;break}m=Wa[c[29356>>2]&127](p)|0;if((c[14985]|0)>>>0

        >>0)c[14985]=p;o=59064;n=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)>0|(o|0)==0&n>>>0>0){ja=c[14978]|0;l=Tv(n|0,o|0,m|0,((m|0)<0)<<31>>31|0)|0;ia=L()|0;c[14768]=((ia|0)<0|(ia|0)==0&l>>>0<=ja>>>0)&1}n=Wa[c[29340>>2]&127](m)|0;if(!n)break F;m=Wa[c[29352>>2]&127](n)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0<=(c[14987]|0)>>>0){F=n;break}c[14987]=m;F=n}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0)break F}else{do if(!(0>>0|(0==(o|0)?(e[q+276>>1]|0)>>>0

        >>0:0))){n=q+300|0;m=c[n>>2]|0;if(m|0){c[n>>2]=c[m>>2];ka=q+284|0;c[ka>>2]=(c[ka>>2]|0)+1;ka=513;break G}n=q+296|0;m=c[n>>2]|0;if(!m){m=q+292|0;break}else{c[n>>2]=c[m>>2];ka=q+284|0;c[ka>>2]=(c[ka>>2]|0)+1;ka=513;break G}}else m=q+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1}m=_d(q,p,o)|0;ka=513}while(0);if((ka|0)==513){ka=0;if(!m)break;else F=m}gw(F|0,0,p|0)|0;n=F+72|0;x=F+32|0;c[x>>2]=n;n=n+h|0;c[F+8>>2]=n;n=n+r|0;w=F+4|0;c[w>>2]=n;c[F+28>>2]=n+u;b[F+52>>1]=s;b[F+50>>1]=t+65535;c[G+32>>2]=F;c[F>>2]=43731;c[F+12>>2]=H;n=c[ma>>2]|0;if(n>>>0>>0){v=g+8+(I*72|0)+40|0;u=g+8+(I*72|0)+36|0;m=0;p=0;s=0;while(1){do if((c[n+20>>2]|0)==(c[v>>2]|0)){o=e[n+12>>1]|0;if(!(o&130)){o=s;break}if(a[u>>0]&8?!((o&128|0)==0?1:(c[(c[n>>2]|0)+4>>2]&1|0)!=0):0){o=s;break}ja=n+32|0;if(!((c[ja>>2]&J|0)==0?(c[ja+4>>2]&U|0)==0:0)){o=s;break}q=c[n+28>>2]|0;if((q|0)<0){o=s;break}r=c[n>>2]|0;if(!(Vl(r,a[(c[(c[M>>2]|0)+4>>2]|0)+(q<<4)+13>>0]|0)|0)){o=s;break}ja=(q|0)>63;o=cw(1,0,q|0)|0;h=L()|0;o=ja?0:o;h=ja?-2147483648:h;if(!((o&p|0)==0&(h&s|0)==0)){o=s;break}t=o|p;h=h|s;b[(c[w>>2]|0)+(m<<1)>>1]=q;o=c[r+12>>2]|0;p=c[r+16>>2]|0;H:do if(!(c[o+4>>2]&256)){do if(p|0){if(!(c[p+4>>2]&256))break;o=Yi(f,p)|0;ka=531;break H}while(0);o=Yi(f,o)|0;if(o|0){ka=532;break}o=Yi(f,p)|0;ka=531}else{o=Yi(f,o)|0;ka=531}while(0);if((ka|0)==531){ka=0;if(!o)o=34049;else ka=532}if((ka|0)==532){ka=0;o=c[o>>2]|0}c[(c[x>>2]|0)+(m<<2)>>2]=o;m=m+1|0;p=t;o=h}else o=s;while(0);n=n+48|0;if(n>>>0>=N>>>0)break;else s=o}}else m=0;if(y){n=0;do{ja=cw(1,0,n|0)|0;if(!((ja&B|0)==0&((L()|0)&z|0)==0)){b[(c[w>>2]|0)+(m<<1)>>1]=n;c[(c[x>>2]|0)+(m<<2)>>2]=34049;m=m+1|0}n=n+1|0}while((n|0)<(A|0))}do if((c[D+4>>2]|0)<0){if((b[E>>1]|0)<=63){z=m;break}n=63;do{b[(c[w>>2]|0)+(m<<1)>>1]=n;c[(c[x>>2]|0)+(m<<2)>>2]=34049;m=m+1|0;n=n+1|0}while((n|0)<(b[E>>1]|0));z=m}else z=m;while(0);b[(c[w>>2]|0)+(z<<1)>>1]=-1;c[(c[x>>2]|0)+(z<<2)>>2]=34049;m=c[_>>2]|0;c[_>>2]=m+1;u=qa+(V*80|0)+8|0;c[u>>2]=m;n=c[R>>2]|0;if((c[P>>2]|0)>(n|0)){c[R>>2]=n+1;ja=c[S+104>>2]|0;a[ja+(n*20|0)>>0]=112;b[ja+(n*20|0)+2>>1]=0;c[ja+(n*20|0)+4>>2]=m;c[ja+(n*20|0)+8>>2]=C;c[ja+(n*20|0)+12>>2]=0;c[ja+(n*20|0)+16>>2]=0;a[ja+(n*20|0)+1>>0]=0}else Di(S,112,m,C,0)|0;m=c[wa>>2]|0;o=Ij(f,F)|0;I:do if(o|0){n=c[m>>2]|0;if(!(a[n+81>>0]|0)){l=c[m+104>>2]|0;ja=(c[m+108>>2]|0)+-1|0;a[l+(ja*20|0)+1>>0]=-9;c[l+(ja*20|0)+16>>2]=o;break}if(c[n+480>>2]|0)break;ja=(c[o>>2]|0)+-1|0;c[o>>2]=ja;if(ja|0)break;m=c[o+12>>2]|0;do if(m|0){if(c[m+480>>2]|0){Xd(m,o);break I}n=o;if((c[m+304>>2]|0)>>>0>n>>>0)break;if((c[m+308>>2]|0)>>>0<=n>>>0)break;ja=m+300|0;c[o>>2]=c[ja>>2];c[ja>>2]=o;break I}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{ja=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}while(0);v=c[(c[ya>>2]|0)+4>>2]|0;t=d[O>>0]|0;y=v+8+(t*72|0)+37|0;do if(!(a[y>>0]&16)){m=c[qa+(V*80|0)+4>>2]|0;n=c[R>>2]|0;if((c[P>>2]|0)>(n|0)){c[R>>2]=n+1;x=c[S+104>>2]|0;a[x+(n*20|0)>>0]=36;b[x+(n*20|0)+2>>1]=0;c[x+(n*20|0)+4>>2]=m;c[x+(n*20|0)+8>>2]=0;c[x+(n*20|0)+12>>2]=0;c[x+(n*20|0)+16>>2]=0;a[x+(n*20|0)+1>>0]=0;x=n;m=0;break}else{x=Di(S,36,m,0,0)|0;m=0;break}}else{p=c[v+8+(t*72|0)+28>>2]|0;m=c[R>>2]|0;if((c[P>>2]|0)>(m|0)){c[R>>2]=m+1;A=c[S+104>>2]|0;a[A+(m*20|0)>>0]=70;A=A+(m*20|0)+1|0;B=A+19|0;do{a[A>>0]=0;A=A+1|0}while((A|0)<(B|0))}else m=Di(S,70,0,0,0)|0;n=c[v+8+(t*72|0)+24>>2]|0;o=c[R>>2]|0;if((c[P>>2]|0)>(o|0)){c[R>>2]=o+1;ja=c[S+104>>2]|0;a[ja+(o*20|0)>>0]=13;b[ja+(o*20|0)+2>>1]=0;c[ja+(o*20|0)+4>>2]=p;c[ja+(o*20|0)+8>>2]=0;c[ja+(o*20|0)+12>>2]=n;c[ja+(o*20|0)+16>>2]=0;a[ja+(o*20|0)+1>>0]=0}else Di(S,13,p,0,n)|0;n=c[R>>2]|0;if((c[P>>2]|0)>(n|0)){c[R>>2]=n+1;x=c[S+104>>2]|0;a[x+(n*20|0)>>0]=14;b[x+(n*20|0)+2>>1]=0;c[x+(n*20|0)+4>>2]=p;c[x+(n*20|0)+8>>2]=0;c[x+(n*20|0)+12>>2]=0;c[x+(n*20|0)+16>>2]=0;a[x+(n*20|0)+1>>0]=0;x=n;break}else{x=Di(S,14,p,0,0)|0;break}}while(0);q=(k|0)!=0;if(q){h=(c[sa>>2]|0)+-1|0;c[sa>>2]=h;Tj(f,k,h,16);c[K>>2]=c[K>>2]|131072}else h=0;n=a[j>>0]|0;if(!(n<<24>>24)){w=(c[$>>2]|0)+1|0;c[$>>2]=w}else{w=n+-1<<24>>24;a[j>>0]=w;w=c[f+148+((w&255)<<2)>>2]|0}s=qa+(V*80|0)+4|0;r=el(f,F,c[s>>2]|0,w,0,0,0,0)|0;n=c[u>>2]|0;o=c[R>>2]|0;if((c[P>>2]|0)>(o|0)){c[R>>2]=o+1;ja=c[S+104>>2]|0;a[ja+(o*20|0)>>0]=-124;b[ja+(o*20|0)+2>>1]=0;c[ja+(o*20|0)+4>>2]=n;c[ja+(o*20|0)+8>>2]=w;c[ja+(o*20|0)+12>>2]=0;c[ja+(o*20|0)+16>>2]=0;a[ja+(o*20|0)+1>>0]=0}else Di(S,132,n,w,0)|0;p=c[R>>2]|0;if((p|0)>0)b[(c[S+104>>2]|0)+((p+-1|0)*20|0)+2>>1]=16;do if(q){o=c[S+12>>2]|0;n=~h;if(((c[o+56>>2]|0)+(c[o+60>>2]|0)|0)<0){mk(o,S,n);break}else{c[(c[o+64>>2]|0)+(n<<2)>>2]=p;break}}while(0);do if(!(a[y>>0]&16)){m=c[s>>2]|0;n=x+1|0;o=c[R>>2]|0;if((c[P>>2]|0)>(o|0)){c[R>>2]=o+1;ja=c[S+104>>2]|0;a[ja+(o*20|0)>>0]=5;b[ja+(o*20|0)+2>>1]=0;c[ja+(o*20|0)+4>>2]=m;c[ja+(o*20|0)+8>>2]=n;c[ja+(o*20|0)+12>>2]=0;c[ja+(o*20|0)+16>>2]=0;a[ja+(o*20|0)+1>>0]=0;break}else{Di(S,5,m,n,0)|0;break}}else{if((m|0)<0)m=(c[R>>2]|0)+-1|0;if(!(a[(c[S>>2]|0)+81>>0]|0))m=(c[S+104>>2]|0)+(m*20|0)|0;else m=59308;c[m+8>>2]=r+z;q=c[s>>2]|0;h=c[v+8+(t*72|0)+32>>2]|0;n=c[wa>>2]|0;if((x|0)<0)m=(c[n+108>>2]|0)+-1|0;else m=x;if(!(a[(c[n>>2]|0)+81>>0]|0))m=(c[n+104>>2]|0)+(m*20|0)|0;else m=59308;p=c[n+108>>2]|0;if((p|0)>(x|0)?(a[(c[f>>2]|0)+81>>0]|0)==0:0){n=x;while(1){o=m+4|0;J:do if((c[o>>2]|0)==(q|0))switch(a[m>>0]|0){case 90:{a[m>>0]=78;l=m+8|0;c[o>>2]=(c[l>>2]|0)+h;ja=m+12|0;c[l>>2]=c[ja>>2];c[ja>>2]=0;break J}case -128:{a[m>>0]=83;ja=m+8|0;c[o>>2]=c[ja>>2];c[ja>>2]=1;break J}default:break J}while(0);n=n+1|0;if((n|0)==(p|0))break;else m=m+20|0}}m=c[R>>2]|0;if((c[P>>2]|0)>(m|0)){c[R>>2]=m+1;ja=c[S+104>>2]|0;a[ja+(m*20|0)>>0]=11;b[ja+(m*20|0)+2>>1]=0;c[ja+(m*20|0)+4>>2]=0;c[ja+(m*20|0)+8>>2]=x;c[ja+(m*20|0)+12>>2]=0;c[ja+(m*20|0)+16>>2]=0;a[ja+(m*20|0)+1>>0]=0}else Di(S,11,0,x,0)|0;a[y>>0]=a[y>>0]&-17}while(0);n=c[R>>2]|0;if((n|0)>0)b[(c[S+104>>2]|0)+((n+-1|0)*20|0)+2>>1]=3;o=(a[(c[S>>2]|0)+81>>0]|0)==0;if(o)m=(c[S+104>>2]|0)+(((x|0)<0?n+-1|0:x)*20|0)|0;else m=59308;c[m+8>>2]=n;do if(w){m=a[j>>0]|0;if((m&255)>=8)break;a[j>>0]=m+1<<24>>24;c[f+148+((m&255)<<2)>>2]=w;n=c[R>>2]|0}while(0);if(o)m=(c[S+104>>2]|0)+(((Q|0)<0?n+-1|0:Q)*20|0)|0;else m=59308;c[m+8>>2]=n}while(0);if(k|0)ni(c[f>>2]|0,k);if(a[ra>>0]|0){ka=625;break e}}Kl(f,g,T,ta);c[qa+(V*80|0)+32>>2]=c[aa>>2];J=Ll(f,ua,i,V,T,J,U)|0;U=L()|0;c[na>>2]=c[qa+(V*80|0)+24>>2];V=V+1|0}while((V|0)<(ba|0));Ra=Ba;return i|0}}}else ka=625;while(0);if((ka|0)==625?(i|0)==0:0){Aa=0;Ra=Ba;return Aa|0}c[oa>>2]=c[pa>>2];k=a[za>>0]|0;K:do if(k<<24>>24){n=Aa+480|0;o=Aa+304|0;p=Aa+308|0;h=Aa+300|0;if(!Aa){m=0;while(1){xa=c[i+752+(m*80|0)+64>>2]|0;if((xa|0)!=0?(c[xa+36>>2]&2048|0)!=0:0){k=c[i+752+(m*80|0)+60>>2]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{xa=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-xa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);k=a[za>>0]|0}m=m+1|0;if(m>>>0>=(k&255)>>>0)break K}}m=0;do{xa=c[i+752+(m*80|0)+64>>2]|0;if((xa|0)!=0?(c[xa+36>>2]&2048|0)!=0:0){k=c[i+752+(m*80|0)+60>>2]|0;do if(k|0){if(c[n>>2]|0){Xd(Aa,k);break}xa=k;if((c[o>>2]|0)>>>0<=xa>>>0?(c[p>>2]|0)>>>0>xa>>>0:0){c[k>>2]=c[h>>2];c[h>>2]=k;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{xa=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-xa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);k=a[za>>0]|0}m=m+1|0}while(m>>>0<(k&255)>>>0)}while(0);om(ya);m=i+60|0;k=c[m>>2]|0;if(k|0)do{c[m>>2]=c[k+52>>2];$l(Aa,k);k=c[m>>2]|0}while((k|0)!=0);if(Aa|0){if(c[Aa+480>>2]|0){Xd(Aa,i);Aa=0;Ra=Ba;return Aa|0}za=i;if((c[Aa+304>>2]|0)>>>0<=za>>>0?(c[Aa+308>>2]|0)>>>0>za>>>0:0){Aa=Aa+300|0;c[i>>2]=c[Aa>>2];c[Aa>>2]=i;Aa=0;Ra=Ba;return Aa|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);Aa=0;Ra=Ba;return Aa|0}else{Aa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-Aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);Aa=0;Ra=Ba;return Aa|0}return 0}function rl(f,g,h,i,j,k,l,m){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|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,O=0,P=0;P=Ra;Ra=Ra+16|0;u=P;O=c[f+8>>2]|0;K=a[k>>0]|0;y=k+4|0;M=c[y>>2]|0;if(!j)s=0;else s=d[j+1>>0]|0;if(!i)N=0;else N=(c[i>>2]|0)==0?0:i;F=(N|0)!=0;v=(s|0)!=0;do if(!(v|F)?(o=c[g+16>>2]|0,(o|0)>0):0){i=O+108|0;n=c[i>>2]|0;if((c[O+112>>2]|0)>(n|0)){c[i>>2]=n+1;L=c[O+104>>2]|0;a[L+(n*20|0)>>0]=47;b[L+(n*20|0)+2>>1]=0;c[L+(n*20|0)+4>>2]=o;c[L+(n*20|0)+8>>2]=l;c[L+(n*20|0)+12>>2]=1;c[L+(n*20|0)+16>>2]=0;a[L+(n*20|0)+1>>0]=0;break}else{Di(O,47,o,l,1)|0;break}}while(0);n=c[g>>2]|0;t=c[n>>2]|0;q=k+8|0;r=c[q>>2]|0;if(r){p=f+44|0;o=c[p>>2]|0;if((r+t|0)>(o|0)){i=0;E=16}else{C=0;L=r}}else{if(F){i=(c[c[N>>2]>>2]|0)+((a[N+32>>0]&1^1)&255)|0;p=f+44|0;o=i+(c[p>>2]|0)|0;c[p>>2]=o}else{o=f+44|0;i=0;p=o;o=c[o>>2]|0}r=o+1|0;c[q>>2]=r;E=16}if((E|0)==16){c[p>>2]=o+t;C=i;L=r}c[k+12>>2]=t;a:do if((h|0)>-1)if((t|0)>0){n=O+108|0;o=O+112|0;p=O+104|0;i=0;do{q=i+L|0;r=c[n>>2]|0;if((c[o>>2]|0)>(r|0)){c[n>>2]=r+1;G=c[p>>2]|0;a[G+(r*20|0)>>0]=90;b[G+(r*20|0)+2>>1]=0;c[G+(r*20|0)+4>>2]=h;c[G+(r*20|0)+8>>2]=i;c[G+(r*20|0)+12>>2]=q;c[G+(r*20|0)+16>>2]=0;a[G+(r*20|0)+1>>0]=0}else Di(O,90,h,i,q)|0;i=i+1|0}while((i|0)!=(t|0));G=t;x=L}else{G=t;x=L}else{switch(K<<24>>24){case 3:{G=t;x=L;break a}case 9:case 10:case 13:{i=1;break}default:i=0}if((K|2)<<24>>24!=14&((s|0)==0&F)){i=i|12;q=N+4|0;p=c[q>>2]|0;o=c[N>>2]|0;if((p|0)<(c[o>>2]|0)){n=p;do{p=b[o+4+(n*20|0)+16>>1]|0;if(!(p<<16>>16))n=n+1|0;else{n=n+1|0;b[(c[g>>2]|0)+4+(((p&65535)+-1|0)*20|0)+16>>1]=n-(c[q>>2]|0);o=c[N>>2]|0}}while((n|0)<(c[o>>2]|0));n=c[g>>2]|0;r=c[n>>2]|0}else r=t;if((r|0)>0){p=t;o=L;q=0;do{G=(b[n+4+(q*20|0)+16>>1]|0)==0;o=G?o:0;p=p+((G^1)<<31>>31)|0;q=q+1|0}while((q|0)<(r|0))}else{p=t;o=L}}else{p=t;o=L}c[u>>2]=L;a[u+4>>0]=i;if(c[g+12>>2]|0?(C|0)>0&(i&8)!=0:0){c[N+36>>2]=u;G=p;x=0;break}Oj(f,n,L,0,i);G=p;x=o}while(0);do if(v){b:do switch(a[j+1>>0]|0){case 2:{n=f+44|0;i=c[n>>2]|0;w=i+1|0;c[n>>2]=i+G;n=j+8|0;i=c[n>>2]|0;o=c[O>>2]|0;if(!(a[o+81>>0]|0)){j=c[O+104>>2]|0;u=j+(i*20|0)+1|0;v=j+(i*20|0)+16|0;kg(o,a[u>>0]|0,c[v>>2]|0);a[u>>0]=0;c[v>>2]=0;a[j+(i*20|0)>>0]=-86;i=c[n>>2]|0}if((i|0)<0)i=(c[O+108>>2]|0)+-1|0;if(!(a[(c[O>>2]|0)+81>>0]|0))i=(c[O+104>>2]|0)+(i*20|0)|0;else i=59308;a[i>>0]=73;c[i+4>>2]=1;c[i+8>>2]=w;t=O+108|0;i=c[t>>2]|0;h=i+G|0;u=G+-1|0;v=O+112|0;if((G|0)>0){s=O+104|0;r=0;do{q=Yi(f,c[(c[g>>2]|0)+4+(r*20|0)>>2]|0)|0;i=r+L|0;n=r+w|0;o=c[t>>2]|0;p=(c[v>>2]|0)>(o|0);do if((r|0)<(u|0))if(p){c[t>>2]=o+1;j=c[s>>2]|0;a[j+(o*20|0)>>0]=52;b[j+(o*20|0)+2>>1]=0;c[j+(o*20|0)+4>>2]=i;c[j+(o*20|0)+8>>2]=h;c[j+(o*20|0)+12>>2]=n;c[j+(o*20|0)+16>>2]=0;a[j+(o*20|0)+1>>0]=0;break}else{Di(O,52,i,h,n)|0;break}else if(p){c[t>>2]=o+1;j=c[s>>2]|0;a[j+(o*20|0)>>0]=53;b[j+(o*20|0)+2>>1]=0;c[j+(o*20|0)+4>>2]=i;c[j+(o*20|0)+8>>2]=l;c[j+(o*20|0)+12>>2]=n;c[j+(o*20|0)+16>>2]=0;a[j+(o*20|0)+1>>0]=0;break}else{Di(O,53,i,l,n)|0;break}while(0);do if(!(a[(c[O>>2]|0)+81>>0]|0)){i=(c[t>>2]|0)+-1|0;n=c[s>>2]|0;o=n+(i*20|0)+1|0;if(a[o>>0]|0){Ei(O,n+(i*20|0)|0,q,-2);break}if(q|0){c[n+(i*20|0)+16>>2]=q;a[o>>0]=-2}}while(0);i=c[t>>2]|0;if((i|0)>0)b[(c[s>>2]|0)+((i+-1|0)*20|0)+2>>1]=128;r=r+1|0}while((r|0)!=(G|0))}if((c[v>>2]|0)>(i|0)){c[t>>2]=i+1;j=c[O+104>>2]|0;a[j+(i*20|0)>>0]=78;b[j+(i*20|0)+2>>1]=0;c[j+(i*20|0)+4>>2]=L;c[j+(i*20|0)+8>>2]=w;c[j+(i*20|0)+12>>2]=u;c[j+(i*20|0)+16>>2]=0;a[j+(i*20|0)+1>>0]=0;break b}else{Di(O,78,L,w,u)|0;break b}}case 1:{i=c[j+8>>2]|0;n=c[O>>2]|0;if(!(a[n+81>>0]|0)){j=c[O+104>>2]|0;v=j+(i*20|0)+1|0;w=j+(i*20|0)+16|0;kg(n,a[v>>0]|0,c[w>>2]|0);a[v>>0]=0;c[w>>2]=0;a[j+(i*20|0)>>0]=-86}break}default:ym(f,c[j+4>>2]|0,l,G,L)}while(0);if((N|0)==0?(z=c[g+16>>2]|0,(z|0)>0):0){i=O+108|0;n=c[i>>2]|0;if((c[O+112>>2]|0)>(n|0)){c[i>>2]=n+1;j=c[O+104>>2]|0;a[j+(n*20|0)>>0]=47;b[j+(n*20|0)+2>>1]=0;c[j+(n*20|0)+4>>2]=z;c[j+(n*20|0)+8>>2]=l;c[j+(n*20|0)+12>>2]=1;c[j+(n*20|0)+16>>2]=0;a[j+(n*20|0)+1>>0]=0;break}else{Di(O,47,z,l,1)|0;break}}}while(0);c:do switch(K<<24>>24){case 1:{q=f+19|0;i=a[q>>0]|0;if(!(i<<24>>24)){K=f+44|0;p=(c[K>>2]|0)+1|0;c[K>>2]=p}else{p=i+-1<<24>>24;a[q>>0]=p;p=c[f+148+((p&255)<<2)>>2]|0}n=O+108|0;i=c[n>>2]|0;o=O+112|0;if((c[o>>2]|0)>(i|0)){c[n>>2]=i+1;K=c[O+104>>2]|0;a[K+(i*20|0)>>0]=92;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=L;c[K+(i*20|0)+8>>2]=G;c[K+(i*20|0)+12>>2]=p;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else Di(O,92,L,G,p)|0;i=c[n>>2]|0;if((c[o>>2]|0)>(i|0)){c[n>>2]=i+1;K=c[O+104>>2]|0;a[K+(i*20|0)>>0]=-124;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=M;c[K+(i*20|0)+8>>2]=p;c[K+(i*20|0)+12>>2]=L;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else i=Di(O,132,M,p,L)|0;if(!(a[(c[O>>2]|0)+81>>0]|0)){M=c[O+104>>2]|0;a[M+(i*20|0)+1>>0]=-3;c[M+(i*20|0)+16>>2]=G}if((p|0)!=0?(A=a[q>>0]|0,(A&255)<8):0){a[q>>0]=A+1<<24>>24;c[f+148+((A&255)<<2)>>2]=p;E=237}else E=237;break}case 2:{i=O+108|0;n=c[i>>2]|0;if((c[O+112>>2]|0)>(n|0)){c[i>>2]=n+1;E=c[O+104>>2]|0;a[E+(n*20|0)>>0]=-123;b[E+(n*20|0)+2>>1]=0;c[E+(n*20|0)+4>>2]=M;c[E+(n*20|0)+8>>2]=L;c[E+(n*20|0)+12>>2]=G;c[E+(n*20|0)+16>>2]=0;a[E+(n*20|0)+1>>0]=0;E=237;break c}else{Di(O,133,M,L,G)|0;E=237;break c}}case 12:case 14:case 6:case 5:{t=C+1|0;h=(C|0)==0;do if(h){i=f+19|0;n=a[i>>0]|0;if(!(n<<24>>24)){E=f+44|0;s=(c[E>>2]|0)+1|0;c[E>>2]=s;break}else{s=n+-1<<24>>24;a[i>>0]=s;s=c[f+148+((s&255)<<2)>>2]|0;break}}else{i=f+32|0;n=c[i>>2]|0;o=f+28|0;p=c[o>>2]|0;if((p|0)>(C|0)){c[i>>2]=n+t;c[o>>2]=p-t;s=n;break}else{E=f+44|0;s=c[E>>2]|0;c[E>>2]=s+t;s=s+1|0;break}}while(0);p=s+C|0;q=O+108|0;i=c[q>>2]|0;r=O+112|0;if((c[r>>2]|0)>(i|0)){c[q>>2]=i+1;E=c[O+104>>2]|0;a[E+(i*20|0)>>0]=92;b[E+(i*20|0)+2>>1]=0;c[E+(i*20|0)+4>>2]=L;c[E+(i*20|0)+8>>2]=G;c[E+(i*20|0)+12>>2]=p;c[E+(i*20|0)+16>>2]=0;a[E+(i*20|0)+1>>0]=0}else Di(O,92,L,G,p)|0;if(K<<24>>24==6){i=c[q>>2]|0;n=i+4|0;o=M+1|0;if((c[r>>2]|0)>(i|0)){c[q>>2]=i+1;K=c[O+104>>2]|0;a[K+(i*20|0)>>0]=29;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=o;c[K+(i*20|0)+8>>2]=n;c[K+(i*20|0)+12>>2]=s;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else i=Di(O,29,o,n,s)|0;if(!(a[(c[O>>2]|0)+81>>0]|0)){K=c[O+104>>2]|0;a[K+(i*20|0)+1>>0]=-3;c[K+(i*20|0)+16>>2]=0}i=c[q>>2]|0;if((c[r>>2]|0)>(i|0)){c[q>>2]=i+1;K=c[O+104>>2]|0;a[K+(i*20|0)>>0]=-124;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=o;c[K+(i*20|0)+8>>2]=s;c[K+(i*20|0)+12>>2]=L;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else i=Di(O,132,o,s,L)|0;if(!(a[(c[O>>2]|0)+81>>0]|0)){L=c[O+104>>2]|0;a[L+(i*20|0)+1>>0]=-3;c[L+(i*20|0)+16>>2]=G}}if(!F){o=f+19|0;i=a[o>>0]|0;if(!(i<<24>>24)){L=f+44|0;n=(c[L>>2]|0)+1|0;c[L>>2]=n}else{n=i+-1<<24>>24;a[o>>0]=n;n=c[f+148+((n&255)<<2)>>2]|0}i=c[q>>2]|0;if((c[r>>2]|0)>(i|0)){c[q>>2]=i+1;L=c[O+104>>2]|0;a[L+(i*20|0)>>0]=121;b[L+(i*20|0)+2>>1]=0;c[L+(i*20|0)+4>>2]=M;c[L+(i*20|0)+8>>2]=n;c[L+(i*20|0)+12>>2]=0;c[L+(i*20|0)+16>>2]=0;a[L+(i*20|0)+1>>0]=0}else Di(O,121,M,n,0)|0;i=c[q>>2]|0;if((c[r>>2]|0)>(i|0)){c[q>>2]=i+1;L=c[O+104>>2]|0;a[L+(i*20|0)>>0]=122;b[L+(i*20|0)+2>>1]=0;c[L+(i*20|0)+4>>2]=M;c[L+(i*20|0)+8>>2]=s;c[L+(i*20|0)+12>>2]=n;c[L+(i*20|0)+16>>2]=0;a[L+(i*20|0)+1>>0]=0}else Di(O,122,M,s,n)|0;i=c[q>>2]|0;if((i|0)>0)b[(c[O+104>>2]|0)+((i+-1|0)*20|0)+2>>1]=8;if(n|0?(H=a[o>>0]|0,(H&255)<8):0){a[o>>0]=H+1<<24>>24;c[f+148+((H&255)<<2)>>2]=n}}else zm(f,N,g,p,x,1,C);if(!h){i=f+28|0;if((c[i>>2]|0)>(C|0)){E=237;break c}c[i>>2]=t;c[f+32>>2]=s;E=237;break c}if((s|0)!=0?(I=f+19|0,J=a[I>>0]|0,(J&255)<8):0){a[I>>0]=J+1<<24>>24;c[f+148+((J&255)<<2)>>2]=s;E=237}else E=237;break}case 11:{if(F){zm(f,N,g,L,x,G,C);Ra=P;return}h=f+19|0;i=a[h>>0]|0;if(!(i<<24>>24)){K=f+44|0;s=(c[K>>2]|0)+1|0;c[K>>2]=s}else{s=i+-1<<24>>24;a[h>>0]=s;s=c[f+148+((s&255)<<2)>>2]|0}p=c[k+16>>2]|0;q=O+108|0;i=c[q>>2]|0;r=O+112|0;if((c[r>>2]|0)>(i|0)){c[q>>2]=i+1;K=c[O+104>>2]|0;a[K+(i*20|0)>>0]=92;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=L;c[K+(i*20|0)+8>>2]=G;c[K+(i*20|0)+12>>2]=s;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else i=Di(O,92,L,G,s)|0;n=c[O>>2]|0;do if(a[n+81>>0]|0){if((G|0)!=-12)kg(n,G,p)}else{if((i|0)<0)i=(c[q>>2]|0)+-1|0;n=c[O+104>>2]|0;o=n+(i*20|0)|0;if((G|0)<=-1?(B=n+(i*20|0)+1|0,(a[B>>0]|0)==0):0){if((G|0)==-3){c[n+(i*20|0)+16>>2]=p;a[B>>0]=-3;break}if(!p)break;c[n+(i*20|0)+16>>2]=p;a[B>>0]=G;if((G|0)!=-12)break;K=p+12|0;c[K>>2]=(c[K>>2]|0)+1;break}Ei(O,o,p,G)}while(0);i=c[q>>2]|0;if((c[r>>2]|0)>(i|0)){c[q>>2]=i+1;K=c[O+104>>2]|0;a[K+(i*20|0)>>0]=-124;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=M;c[K+(i*20|0)+8>>2]=s;c[K+(i*20|0)+12>>2]=L;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else i=Di(O,132,M,s,L)|0;if(!(a[(c[O>>2]|0)+81>>0]|0)){M=c[O+104>>2]|0;a[M+(i*20|0)+1>>0]=-3;c[M+(i*20|0)+16>>2]=G}if(s|0?(D=a[h>>0]|0,(D&255)<8):0){a[h>>0]=D+1<<24>>24;c[f+148+((D&255)<<2)>>2]=s}break}case 3:{i=O+108|0;n=c[i>>2]|0;if((c[O+112>>2]|0)>(n|0)){c[i>>2]=n+1;E=c[O+104>>2]|0;a[E+(n*20|0)>>0]=70;b[E+(n*20|0)+2>>1]=0;c[E+(n*20|0)+4>>2]=1;c[E+(n*20|0)+8>>2]=M;c[E+(n*20|0)+12>>2]=0;c[E+(n*20|0)+16>>2]=0;a[E+(n*20|0)+1>>0]=0;E=237;break c}else{Di(O,70,1,M,0)|0;E=237;break c}}case 10:{if(F){zm(f,N,g,L,x,G,C);Ra=P;return}break}case 9:case 13:{if(F){zm(f,N,g,L,x,G,C);Ra=P;return}if(K<<24>>24==13){i=c[y>>2]|0;n=O+108|0;o=c[n>>2]|0;if((c[O+112>>2]|0)>(o|0)){c[n>>2]=o+1;f=c[O+104>>2]|0;a[f+(o*20|0)>>0]=14;b[f+(o*20|0)+2>>1]=0;c[f+(o*20|0)+4>>2]=i;c[f+(o*20|0)+8>>2]=0;c[f+(o*20|0)+12>>2]=0;c[f+(o*20|0)+16>>2]=0;a[f+(o*20|0)+1>>0]=0;break c}else{Di(O,14,i,0,0)|0;break c}}else{i=O+108|0;n=c[i>>2]|0;if((c[O+112>>2]|0)>(n|0)){c[i>>2]=n+1;f=c[O+104>>2]|0;a[f+(n*20|0)>>0]=81;b[f+(n*20|0)+2>>1]=0;c[f+(n*20|0)+4>>2]=L;c[f+(n*20|0)+8>>2]=G;c[f+(n*20|0)+12>>2]=0;c[f+(n*20|0)+16>>2]=0;a[f+(n*20|0)+1>>0]=0;break c}else{Di(O,81,L,G,0)|0;break c}}}case 7:case 8:{v=c[k+20>>2]|0;w=c[v>>2]|0;l=f+19|0;i=a[l>>0]|0;if(!(i<<24>>24)){i=f+44|0;j=(c[i>>2]|0)+1|0;c[i>>2]=j;i=0}else{i=i+-1<<24>>24;a[l>>0]=i;j=c[f+148+((i&255)<<2)>>2]|0}z=w+2|0;y=(z|0)==1;do if(y)if(!(i<<24>>24)){J=f+44|0;x=(c[J>>2]|0)+1|0;c[J>>2]=x;break}else{x=i+-1<<24>>24;a[l>>0]=x;x=c[f+148+((x&255)<<2)>>2]|0;break}else{i=f+32|0;n=c[i>>2]|0;o=f+28|0;p=c[o>>2]|0;if((p|0)<(z|0)){J=f+44|0;x=c[J>>2]|0;c[J>>2]=x+z;x=x+1|0;break}else{c[i>>2]=n+z;c[o>>2]=p-z;x=n;break}}while(0);u=x+w|0;r=u+1|0;q=K<<24>>24==8;if(q){n=M+1|0;o=O+108|0;i=c[o>>2]|0;p=O+112|0;if((c[p>>2]|0)>(i|0)){c[o>>2]=i+1;K=c[O+104>>2]|0;a[K+(i*20|0)>>0]=29;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=n;c[K+(i*20|0)+8>>2]=0;c[K+(i*20|0)+12>>2]=L;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else i=Di(O,29,n,0,L)|0;if(!(a[(c[O>>2]|0)+81>>0]|0)){t=c[O+104>>2]|0;a[t+(i*20|0)+1>>0]=-3;c[t+(i*20|0)+16>>2]=G;t=i;h=o;s=p}else{t=i;h=o;s=p}}else{t=0;h=O+108|0;s=O+112|0}i=c[h>>2]|0;if((c[s>>2]|0)>(i|0)){c[h>>2]=i+1;K=c[O+104>>2]|0;a[K+(i*20|0)>>0]=92;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=L;c[K+(i*20|0)+8>>2]=G;c[K+(i*20|0)+12>>2]=r;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else Di(O,92,L,G,r)|0;if(q){i=M+1|0;n=c[h>>2]|0;if((c[s>>2]|0)>(n|0)){c[h>>2]=n+1;K=c[O+104>>2]|0;a[K+(n*20|0)>>0]=-124;b[K+(n*20|0)+2>>1]=0;c[K+(n*20|0)+4>>2]=i;c[K+(n*20|0)+8>>2]=r;c[K+(n*20|0)+12>>2]=0;c[K+(n*20|0)+16>>2]=0;a[K+(n*20|0)+1>>0]=0}else Di(O,132,i,r,0)|0;i=c[h>>2]|0;if((i|0)>0)b[(c[O+104>>2]|0)+((i+-1|0)*20|0)+2>>1]=16}if((w|0)>0){n=L+-1|0;o=O+104|0;i=0;do{p=n+(e[v+4+(i*20|0)+16>>1]|0)|0;q=i+x|0;r=c[h>>2]|0;if((c[s>>2]|0)>(r|0)){c[h>>2]=r+1;L=c[o>>2]|0;a[L+(r*20|0)>>0]=79;b[L+(r*20|0)+2>>1]=0;c[L+(r*20|0)+4>>2]=p;c[L+(r*20|0)+8>>2]=q;c[L+(r*20|0)+12>>2]=0;c[L+(r*20|0)+16>>2]=0;a[L+(r*20|0)+1>>0]=0}else Di(O,79,p,q,0)|0;i=i+1|0}while((i|0)!=(w|0))}i=c[h>>2]|0;if((c[s>>2]|0)>(i|0)){c[h>>2]=i+1;L=c[O+104>>2]|0;a[L+(i*20|0)>>0]=120;b[L+(i*20|0)+2>>1]=0;c[L+(i*20|0)+4>>2]=M;c[L+(i*20|0)+8>>2]=u;c[L+(i*20|0)+12>>2]=0;c[L+(i*20|0)+16>>2]=0;a[L+(i*20|0)+1>>0]=0}else Di(O,120,M,u,0)|0;i=c[h>>2]|0;if((c[s>>2]|0)>(i|0)){c[h>>2]=i+1;L=c[O+104>>2]|0;a[L+(i*20|0)>>0]=92;b[L+(i*20|0)+2>>1]=0;c[L+(i*20|0)+4>>2]=x;c[L+(i*20|0)+8>>2]=z;c[L+(i*20|0)+12>>2]=j;c[L+(i*20|0)+16>>2]=0;a[L+(i*20|0)+1>>0]=0}else Di(O,92,x,z,j)|0;i=c[h>>2]|0;if((c[s>>2]|0)>(i|0)){c[h>>2]=i+1;L=c[O+104>>2]|0;a[L+(i*20|0)>>0]=-124;b[L+(i*20|0)+2>>1]=0;c[L+(i*20|0)+4>>2]=M;c[L+(i*20|0)+8>>2]=j;c[L+(i*20|0)+12>>2]=x;c[L+(i*20|0)+16>>2]=0;a[L+(i*20|0)+1>>0]=0}else i=Di(O,132,M,j,x)|0;if(!(a[(c[O>>2]|0)+81>>0]|0)){M=c[O+104>>2]|0;a[M+(i*20|0)+1>>0]=-3;c[M+(i*20|0)+16>>2]=z}if(t|0){n=c[h>>2]|0;if(!(a[(c[O>>2]|0)+81>>0]|0))i=(c[O+104>>2]|0)+(((t|0)<0?n+-1|0:t)*20|0)|0;else i=59308;c[i+8>>2]=n}do if(j|0){i=a[l>>0]|0;if((i&255)>=8)break;a[l>>0]=i+1<<24>>24;c[f+148+((i&255)<<2)>>2]=j}while(0);if(!y){i=f+28|0;if((c[i>>2]|0)>=(z|0)){E=237;break c}c[i>>2]=z;c[f+32>>2]=x;E=237;break c}if(!x){E=237;break c}i=a[l>>0]|0;if((i&255)>=8){E=237;break c}a[l>>0]=i+1<<24>>24;c[f+148+((i&255)<<2)>>2]=x;E=237;break}default:E=237}while(0);if((E|0)==237?N|0:0){Ra=P;return}i=c[g+12>>2]|0;if(!i){Ra=P;return}n=O+108|0;o=c[n>>2]|0;if((c[O+112>>2]|0)>(o|0)){c[n>>2]=o+1;O=c[O+104>>2]|0;a[O+(o*20|0)>>0]=49;b[O+(o*20|0)+2>>1]=0;c[O+(o*20|0)+4>>2]=i;c[O+(o*20|0)+8>>2]=m;c[O+(o*20|0)+12>>2]=0;c[O+(o*20|0)+16>>2]=0;a[O+(o*20|0)+1>>0]=0;Ra=P;return}else{Di(O,49,i,m,0)|0;Ra=P;return}}function sl(e){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,D=0,E=0,F=0,G=0,H=0,I=0,J=0;D=c[e>>2]|0;E=D+8|0;F=c[E>>2]|0;G=c[e+4>>2]|0;I=c[D>>2]|0;H=e+46|0;g=a[H>>0]|0;if(!(g<<24>>24))f=F+12|0;else{f=F+12|0;u=e+51|0;v=F+108|0;w=F+112|0;x=F+104|0;y=D+44|0;s=g&255;do{t=s;s=s+-1|0;m=c[e+752+(s*80|0)+64>>2]|0;r=e+752+(s*80|0)+45|0;do if((a[r>>0]|0)==-86){g=c[f>>2]|0;h=~c[e+752+(s*80|0)+24>>2];if(((c[g+56>>2]|0)+(c[g+60>>2]|0)|0)<0){mk(g,F,h);break}else{c[(c[g+64>>2]|0)+(h<<2)>>2]=c[v>>2];break}}else{do if((((((a[u>>0]|0)==2?(t|0)==(d[H>>0]|0):0)?(c[m+36>>2]&512|0)!=0:0)?(A=c[m+32>>2]|0,q=A+55|0,((d[q>>0]|d[q+1>>0]<<8)&128)!=0):0)?(q=b[m+30>>1]|0,B=q&65535,q<<16>>16!=0):0)?(b[(c[A+8>>2]|0)+(B<<1)>>1]|0)>35:0){l=(c[y>>2]|0)+1|0;k=e+752+(s*80|0)+8|0;g=0;do{h=c[k>>2]|0;i=g+l|0;j=c[v>>2]|0;if((c[w>>2]|0)>(j|0)){c[v>>2]=j+1;q=c[x>>2]|0;a[q+(j*20|0)>>0]=90;b[q+(j*20|0)+2>>1]=0;c[q+(j*20|0)+4>>2]=h;c[q+(j*20|0)+8>>2]=g;c[q+(j*20|0)+12>>2]=i;c[q+(j*20|0)+16>>2]=0;a[q+(j*20|0)+1>>0]=0}else Di(F,90,h,g,i)|0;g=g+1|0}while((g|0)!=(B|0));i=a[r>>0]|0;c[y>>2]=B+1+(c[y>>2]|0);i=i<<24>>24==4?22:25;h=c[k>>2]|0;g=c[v>>2]|0;if((c[w>>2]|0)>(g|0)){c[v>>2]=g+1;q=c[x>>2]|0;a[q+(g*20|0)>>0]=i;b[q+(g*20|0)+2>>1]=0;c[q+(g*20|0)+4>>2]=h;c[q+(g*20|0)+8>>2]=0;c[q+(g*20|0)+12>>2]=l;c[q+(g*20|0)+16>>2]=0;a[q+(g*20|0)+1>>0]=0}else g=Di(F,i,h,0,l)|0;if(!(a[(c[F>>2]|0)+81>>0]|0)){q=c[x>>2]|0;a[q+(g*20|0)+1>>0]=-3;c[q+(g*20|0)+16>>2]=B}h=c[e+752+(s*80|0)+52>>2]|0;i=c[v>>2]|0;if((c[w>>2]|0)>(i|0)){c[v>>2]=i+1;q=c[x>>2]|0;a[q+(i*20|0)>>0]=11;b[q+(i*20|0)+2>>1]=0;c[q+(i*20|0)+4>>2]=1;c[q+(i*20|0)+8>>2]=h;c[q+(i*20|0)+12>>2]=0;c[q+(i*20|0)+16>>2]=0;a[q+(i*20|0)+1>>0]=0;break}else{Di(F,11,1,h,0)|0;break}}else g=0;while(0);h=c[f>>2]|0;i=~c[e+752+(s*80|0)+24>>2];if(((c[h+56>>2]|0)+(c[h+60>>2]|0)|0)<0)mk(h,F,i);else c[(c[h+64>>2]|0)+(i<<2)>>2]=c[v>>2];h=a[r>>0]|0;i=c[e+752+(s*80|0)+48>>2]|0;j=c[e+752+(s*80|0)+52>>2]|0;k=d[e+752+(s*80|0)+46>>0]|0;l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;q=c[x>>2]|0;a[q+(l*20|0)>>0]=h;b[q+(l*20|0)+2>>1]=0;c[q+(l*20|0)+4>>2]=i;c[q+(l*20|0)+8>>2]=j;c[q+(l*20|0)+12>>2]=k;c[q+(l*20|0)+16>>2]=0;a[q+(l*20|0)+1>>0]=0}else Di(F,h&255,i,j,k)|0;h=c[v>>2]|0;if((h|0)>0)b[(c[x>>2]|0)+((h+-1|0)*20|0)+2>>1]=d[e+752+(s*80|0)+47>>0]|0;if(g|0){if(!(a[(c[F>>2]|0)+81>>0]|0))g=(c[x>>2]|0)+(((g|0)<0?h+-1|0:g)*20|0)|0;else g=59308;c[g+8>>2]=h}}while(0);q=m+36|0;if(c[q>>2]&2048|0?(z=e+752+(s*80|0)+56|0,(c[z>>2]|0)>0):0){g=c[f>>2]|0;h=~c[e+752+(s*80|0)+16>>2];if(((c[g+56>>2]|0)+(c[g+60>>2]|0)|0)<0)mk(g,F,h);else c[(c[g+64>>2]|0)+(h<<2)>>2]=c[v>>2];g=c[z>>2]|0;if((g|0)>0){p=e+752+(s*80|0)+8|0;o=g;n=(c[e+752+(s*80|0)+60>>2]|0)+((g+-1|0)*20|0)|0;l=c[v>>2]|0;h=a[(c[F>>2]|0)+81>>0]|0;while(1){m=n+4|0;g=c[m>>2]|0;if(!(h<<24>>24))g=(c[x>>2]|0)+(((g|0)<-1?l+-1|0:g+1|0)*20|0)|0;else g=59308;c[g+8>>2]=l;j=n+16|0;do if((a[j>>0]|0)!=-86){k=c[n+12>>2]|0;if(k|0){g=c[p>>2]|0;h=l+2|0;i=c[n+8>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;J=c[x>>2]|0;a[J+(l*20|0)>>0]=26;b[J+(l*20|0)+2>>1]=0;c[J+(l*20|0)+4>>2]=g;c[J+(l*20|0)+8>>2]=h;c[J+(l*20|0)+12>>2]=i;c[J+(l*20|0)+16>>2]=0;a[J+(l*20|0)+1>>0]=0;g=l}else g=Di(F,26,g,h,i)|0;if(!(a[(c[F>>2]|0)+81>>0]|0)){J=c[x>>2]|0;a[J+(g*20|0)+1>>0]=-3;c[J+(g*20|0)+16>>2]=k}}g=a[j>>0]|0;h=c[n>>2]|0;i=c[m>>2]|0;j=c[v>>2]|0;if((c[w>>2]|0)>(j|0)){c[v>>2]=j+1;J=c[x>>2]|0;a[J+(j*20|0)>>0]=g;b[J+(j*20|0)+2>>1]=0;c[J+(j*20|0)+4>>2]=h;c[J+(j*20|0)+8>>2]=i;c[J+(j*20|0)+12>>2]=0;c[J+(j*20|0)+16>>2]=0;a[J+(j*20|0)+1>>0]=0;break}else{Di(F,g&255,h,i,0)|0;break}}while(0);g=c[m>>2]|0;l=c[v>>2]|0;h=a[(c[F>>2]|0)+81>>0]|0;if(!(h<<24>>24))g=(c[x>>2]|0)+((((g|0)<1?l:g)+-1|0)*20|0)|0;else g=59308;c[g+8>>2]=l;if((o|0)<=1)break;else{o=o+-1|0;n=n+-20|0}}}}g=c[f>>2]|0;h=~c[e+752+(s*80|0)+12>>2];if(((c[g+56>>2]|0)+(c[g+60>>2]|0)|0)<0)mk(g,F,h);else c[(c[g+64>>2]|0)+(h<<2)>>2]=c[v>>2];g=e+752+(s*80|0)+20|0;h=c[g>>2]|0;if(h|0){i=c[v>>2]|0;if((c[w>>2]|0)>(i|0)){c[v>>2]=i+1;J=c[x>>2]|0;a[J+(i*20|0)>>0]=11;b[J+(i*20|0)+2>>1]=0;c[J+(i*20|0)+4>>2]=0;c[J+(i*20|0)+8>>2]=h;c[J+(i*20|0)+12>>2]=0;c[J+(i*20|0)+16>>2]=0;a[J+(i*20|0)+1>>0]=0}else Di(F,11,0,h,0)|0;g=c[g>>2]|0;h=c[v>>2]|0;if(!(a[(c[F>>2]|0)+81>>0]|0)){J=h+-1|0;p=c[x>>2]|0;c[p+(((g|0)<0?J:g)*20|0)+8>>2]=h;g=p+(((g|0)<2?J:g+-2|0)*20|0)|0}else{c[14829]=h;g=59308}c[g+8>>2]=h}g=c[e+752+(s*80|0)+40>>2]|0;do if(g|0){h=(c[e+752+(s*80|0)+36>>2]|0)>>>1;i=c[v>>2]|0;if((c[w>>2]|0)>(i|0)){c[v>>2]=i+1;J=c[x>>2]|0;a[J+(i*20|0)>>0]=49;b[J+(i*20|0)+2>>1]=0;c[J+(i*20|0)+4>>2]=h;c[J+(i*20|0)+8>>2]=g;c[J+(i*20|0)+12>>2]=0;c[J+(i*20|0)+16>>2]=0;a[J+(i*20|0)+1>>0]=0;break}else{Di(F,49,h,g,0)|0;break}}while(0);h=c[e+752+(s*80|0)>>2]|0;if(h|0){i=c[q>>2]|0;g=c[v>>2]|0;if((c[w>>2]|0)>(g|0)){c[v>>2]=g+1;j=c[x>>2]|0;a[j+(g*20|0)>>0]=47;b[j+(g*20|0)+2>>1]=0;c[j+(g*20|0)+4>>2]=h;c[j+(g*20|0)+8>>2]=0;c[j+(g*20|0)+12>>2]=0;c[j+(g*20|0)+16>>2]=0;a[j+(g*20|0)+1>>0]=0;j=g}else j=Di(F,47,h,0,0)|0;do if(!(i&64)){g=c[e+752+(s*80|0)+4>>2]|0;h=c[v>>2]|0;if((c[w>>2]|0)>(h|0)){c[v>>2]=h+1;J=c[x>>2]|0;a[J+(h*20|0)>>0]=-127;b[J+(h*20|0)+2>>1]=0;c[J+(h*20|0)+4>>2]=g;c[J+(h*20|0)+8>>2]=0;c[J+(h*20|0)+12>>2]=0;c[J+(h*20|0)+16>>2]=0;a[J+(h*20|0)+1>>0]=0;break}else{Di(F,129,g,0,0)|0;break}}while(0);if(!(i&512)){if(i&8192|0?c[e+752+(s*80|0)+56>>2]|0:0)C=87}else C=87;do if((C|0)==87){C=0;g=c[e+752+(s*80|0)+8>>2]|0;h=c[v>>2]|0;if((c[w>>2]|0)>(h|0)){c[v>>2]=h+1;J=c[x>>2]|0;a[J+(h*20|0)>>0]=-127;b[J+(h*20|0)+2>>1]=0;c[J+(h*20|0)+4>>2]=g;c[J+(h*20|0)+8>>2]=0;c[J+(h*20|0)+12>>2]=0;c[J+(h*20|0)+16>>2]=0;a[J+(h*20|0)+1>>0]=0;break}else{Di(F,129,g,0,0)|0;break}}while(0);do if((a[r>>0]|0)==66){g=c[e+752+(s*80|0)+48>>2]|0;h=c[e+752+(s*80|0)+28>>2]|0;i=c[v>>2]|0;if((c[w>>2]|0)>(i|0)){c[v>>2]=i+1;J=c[x>>2]|0;a[J+(i*20|0)>>0]=12;b[J+(i*20|0)+2>>1]=0;c[J+(i*20|0)+4>>2]=g;c[J+(i*20|0)+8>>2]=h;c[J+(i*20|0)+12>>2]=0;c[J+(i*20|0)+16>>2]=0;a[J+(i*20|0)+1>>0]=0;break}else{Di(F,12,g,h,0)|0;break}}else{g=c[e+752+(s*80|0)+28>>2]|0;h=c[v>>2]|0;if((c[w>>2]|0)>(h|0)){c[v>>2]=h+1;J=c[x>>2]|0;a[J+(h*20|0)>>0]=11;b[J+(h*20|0)+2>>1]=0;c[J+(h*20|0)+4>>2]=0;c[J+(h*20|0)+8>>2]=g;c[J+(h*20|0)+12>>2]=0;c[J+(h*20|0)+16>>2]=0;a[J+(h*20|0)+1>>0]=0;break}else{Di(F,11,0,g,0)|0;break}}while(0);h=c[v>>2]|0;if(!(a[(c[F>>2]|0)+81>>0]|0))g=(c[x>>2]|0)+(((j|0)<0?h+-1|0:j)*20|0)|0;else g=59308;c[g+8>>2]=h}}while((t|0)>1)}f=c[f>>2]|0;g=~c[e+36>>2];if(((c[f+56>>2]|0)+(c[f+60>>2]|0)|0)<0)mk(f,F,g);else c[(c[f+64>>2]|0)+(g<<2)>>2]=c[F+108>>2];f=a[H>>0]|0;a:do if(f<<24>>24){y=e+49|0;z=I+81|0;x=F+108|0;A=F+104|0;B=f&255;v=e+752|0;w=0;while(1){g=d[v+44>>0]|0;i=c[G+8+(g*72|0)+16>>2]|0;h=c[v+64>>2]|0;do if(!(a[G+8+(g*72|0)+37>>0]&16)){g=c[h+36>>2]|0;if(!(g&576)){if(!(g&8192))break;g=v+56|0}else g=h+32|0;g=c[g>>2]|0;if(g|0){if(a[y>>0]|0?(c[(c[g+12>>2]|0)+36>>2]&32|0)==0:0)break;if(!(a[z>>0]|0)){r=c[x>>2]|0;j=c[v+32>>2]|0;if(!(a[(c[F>>2]|0)+81>>0]|0))h=(c[A>>2]|0)+(((j|0)<0?r+-1|0:j)*20|0)|0;else h=59308;if((j|0)<(r|0)){s=i+36|0;t=v+8|0;u=g+52|0;q=i+8|0;p=g+4|0;o=c[v+4>>2]|0;while(1){m=h+4|0;b:do if((c[m>>2]|0)==(o|0))switch(a[h>>0]|0){case 90:{n=h+8|0;g=c[n>>2]|0;if(c[s>>2]&32){i=q;while(1){i=c[i>>2]|0;J=i+55|0;if(((d[J>>0]|d[J+1>>0]<<8)&3)==2)break;else i=i+20|0}g=b[(c[i+4>>2]|0)+(g<<1)>>1]|0}k=g&65535;g=b[u>>1]|0;if(!(g<<16>>16))break b;l=c[p>>2]|0;i=g&65535;g=0;while(1){if((b[l+(g<<1)>>1]|0)==k<<16>>16)break;g=g+1|0;if(g>>>0>=i>>>0)break b}if((g&65535)<<16>>16<=-1)break b;c[n>>2]=g<<16>>16;c[m>>2]=c[t>>2];break b}case -128:{c[m>>2]=c[t>>2];a[h>>0]=-121;break b}case 21:{c[m>>2]=c[t>>2];break b}default:break b}while(0);j=j+1|0;if((j|0)==(r|0))break;else h=h+20|0}}}}}else{k=c[v+32>>2]|0;m=c[v+4>>2]|0;l=c[G+8+(g*72|0)+32>>2]|0;h=c[E>>2]|0;if((k|0)<0)g=(c[h+108>>2]|0)+-1|0;else g=k;if(!(a[(c[h>>2]|0)+81>>0]|0))g=(c[h+104>>2]|0)+(g*20|0)|0;else g=59308;j=c[h+108>>2]|0;if((j|0)>(k|0)?(a[(c[D>>2]|0)+81>>0]|0)==0:0){i=g;g=k;while(1){h=i+4|0;c:do if((c[h>>2]|0)==(m|0))switch(a[i>>0]|0){case 90:{a[i>>0]=78;C=i+8|0;c[h>>2]=(c[C>>2]|0)+l;J=i+12|0;c[C>>2]=c[J>>2];c[J>>2]=0;break c}case -128:{a[i>>0]=73;c[h>>2]=0;c[i+12>>2]=0;break c}default:break c}while(0);g=g+1|0;if((g|0)==(j|0))break;else i=i+20|0}}}while(0);w=w+1|0;if(w>>>0>=B>>>0)break;else v=v+80|0}c[D+132>>2]=c[e+40>>2];if(f<<24>>24){h=I+480|0;i=I+304|0;j=I+308|0;k=I+300|0;if(!I){g=0;while(1){J=c[e+752+(g*80|0)+64>>2]|0;if((J|0)!=0?(c[J+36>>2]&2048|0)!=0:0){f=c[e+752+(g*80|0)+60>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{J=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-J;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);f=a[H>>0]|0}g=g+1|0;if(g>>>0>=(f&255)>>>0)break a}}g=0;do{J=c[e+752+(g*80|0)+64>>2]|0;if((J|0)!=0?(c[J+36>>2]&2048|0)!=0:0){f=c[e+752+(g*80|0)+60>>2]|0;do if(f|0){if(c[h>>2]|0){Xd(I,f);break}J=f;if((c[i>>2]|0)>>>0<=J>>>0?(c[j>>2]|0)>>>0>J>>>0:0){c[f>>2]=c[k>>2];c[k>>2]=f;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{J=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-J;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);f=a[H>>0]|0}g=g+1|0}while(g>>>0<(f&255)>>>0)}}else c[D+132>>2]=c[e+40>>2];while(0);om(e+80|0);g=e+60|0;f=c[g>>2]|0;if(f|0)do{c[g>>2]=c[f+52>>2];$l(I,f);f=c[g>>2]|0}while((f|0)!=0);if(I|0){if(c[I+480>>2]|0){Xd(I,e);return}J=e;if((c[I+304>>2]|0)>>>0<=J>>>0?(c[I+308>>2]|0)>>>0>J>>>0:0){J=I+300|0;c[e>>2]=c[J>>2];c[J>>2]=e;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);return}else{J=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-J;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);return}}function tl(d,e,f){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,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;E=d+8|0;H=c[E>>2]|0;a[f>>0]=1;C=f+44|0;if((c[C>>2]|0)>0){r=d+56|0;s=d+19|0;t=d+32|0;u=d+28|0;v=H+108|0;w=H+112|0;y=d+44|0;z=H+104|0;A=f+36|0;B=H+12|0;p=c[f+40>>2]|0;g=0;q=0;while(1){k=c[(c[p>>2]|0)+20>>2]|0;if(!k){h=0;o=0}else{j=c[k>>2]|0;do if((j|0)==1){h=a[s>>0]|0;if(!(h<<24>>24)){h=(c[y>>2]|0)+1|0;c[y>>2]=h;break}else{h=h+-1<<24>>24;a[s>>0]=h;h=c[d+148+((h&255)<<2)>>2]|0;break}}else{h=c[t>>2]|0;i=c[u>>2]|0;if((i|0)<(j|0)){h=c[y>>2]|0;c[y>>2]=h+j;h=h+1|0;break}else{c[t>>2]=h+j;c[u>>2]=i-j;break}}while(0);Oj(d,k,h,0,1);o=j}i=c[p+12>>2]|0;if((i|0)>-1){n=(c[r>>2]|0)+-1|0;c[r>>2]=n;ym(d,i,n,1,h)}else n=0;m=p+4|0;do if(c[(c[m>>2]|0)+4>>2]&32){if((o|0)>0){l=0;i=k+4|0;while(1){j=Yi(d,c[i>>2]|0)|0;l=l+1|0;k=(j|0)!=0;if(!((l|0)<(o|0)&(k^1)))break;else i=i+20|0}if(!k)G=19}else G=19;if((G|0)==19){G=0;j=c[(c[d>>2]|0)+8>>2]|0}if(!g)if(!(c[A>>2]|0))g=0;else{g=(c[y>>2]|0)+1|0;c[y>>2]=g}i=c[v>>2]|0;if((c[w>>2]|0)>(i|0)){c[v>>2]=i+1;l=c[z>>2]|0;a[l+(i*20|0)>>0]=82;b[l+(i*20|0)+2>>1]=0;c[l+(i*20|0)+4>>2]=g;c[l+(i*20|0)+8>>2]=0;c[l+(i*20|0)+12>>2]=0;c[l+(i*20|0)+16>>2]=0;a[l+(i*20|0)+1>>0]=0}else i=Di(H,82,g,0,0)|0;if(!(a[(c[H>>2]|0)+81>>0]|0)){if((i|0)<0)i=(c[v>>2]|0)+-1|0;k=c[z>>2]|0;l=k+(i*20|0)+1|0;if(a[l>>0]|0){Ei(H,k+(i*20|0)|0,j,-2);break}if(j){c[k+(i*20|0)+16>>2]=j;a[l>>0]=-2}}}while(0);i=c[p+8>>2]|0;j=c[v>>2]|0;if((c[w>>2]|0)>(j|0)){c[v>>2]=j+1;l=c[z>>2]|0;a[l+(j*20|0)>>0]=-102;b[l+(j*20|0)+2>>1]=0;c[l+(j*20|0)+4>>2]=0;c[l+(j*20|0)+8>>2]=h;c[l+(j*20|0)+12>>2]=i;c[l+(j*20|0)+16>>2]=0;a[l+(j*20|0)+1>>0]=0}else Di(H,154,0,h,i)|0;i=c[m>>2]|0;j=c[H>>2]|0;do if(a[j+81>>0]|0){if(c[i+4>>2]&16|0){if(j|0){if(c[j+480>>2]|0){Xd(j,i);break}m=i;if((c[j+304>>2]|0)>>>0<=m>>>0?(c[j+308>>2]|0)>>>0>m>>>0:0){m=j+300|0;c[i>>2]=c[m>>2];c[m>>2]=i;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{m=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}}else{l=c[z>>2]|0;m=(c[v>>2]|0)+-1|0;a[l+(m*20|0)+1>>0]=-8;c[l+(m*20|0)+16>>2]=i}while(0);i=c[v>>2]|0;if((i|0)>0)b[(c[z>>2]|0)+((i+-1|0)*20|0)+2>>1]=o&255;if((o|0)==1){if(h|0?(x=a[s>>0]|0,(x&255)<8):0){a[s>>0]=x+1<<24>>24;c[d+148+((x&255)<<2)>>2]=h}}else if((c[u>>2]|0)<(o|0)){c[u>>2]=o;c[t>>2]=h}do if(n|0){i=c[B>>2]|0;h=~n;if(((c[i+56>>2]|0)+(c[i+60>>2]|0)|0)<0){mk(i,H,h);break}else{c[(c[i+64>>2]|0)+(h<<2)>>2]=c[v>>2];break}}while(0);q=q+1|0;if((q|0)>=(c[C>>2]|0))break;else p=p+16|0}if(g)G=63;else G=62}else G=62;if((G|0)==62)if((e|0)==0|(c[f+36>>2]|0)==0)i=0;else{g=e;G=63}do if((G|0)==63){h=H+108|0;i=c[h>>2]|0;if((c[H+112>>2]|0)>(i|0)){c[h>>2]=i+1;C=c[H+104>>2]|0;a[C+(i*20|0)>>0]=18;b[C+(i*20|0)+2>>1]=0;c[C+(i*20|0)+4>>2]=g;c[C+(i*20|0)+8>>2]=0;c[C+(i*20|0)+12>>2]=0;c[C+(i*20|0)+16>>2]=0;a[C+(i*20|0)+1>>0]=0;break}else{i=Di(H,18,g,0,0)|0;break}}while(0);n=f+36|0;if((c[n>>2]|0)>0){l=c[f+28>>2]|0;m=0;while(1){g=c[l+20>>2]|0;o=c[l+16>>2]|0;do if(g){if((a[g>>0]|0)!=-88){F=Jj(d,g,o)|0;G=75;break}k=c[E>>2]|0;g=c[g+28>>2]|0;h=k+108|0;j=c[h>>2]|0;if((c[k+112>>2]|0)>(j|0)){c[h>>2]=j+1;C=c[k+104>>2]|0;a[C+(j*20|0)>>0]=78;b[C+(j*20|0)+2>>1]=0;c[C+(j*20|0)+4>>2]=g;c[C+(j*20|0)+8>>2]=o;c[C+(j*20|0)+12>>2]=0;c[C+(j*20|0)+16>>2]=0;a[C+(j*20|0)+1>>0]=0;break}else{Di(k,78,g,o,0)|0;break}}else{F=Jj(d,0,o)|0;G=75}while(0);do if(((G|0)==75?(G=0,(F|0)!=(o|0)):0)?(D=c[E>>2]|0,D|0):0){g=D+108|0;h=c[g>>2]|0;if((c[D+112>>2]|0)>(h|0)){c[g>>2]=h+1;C=c[D+104>>2]|0;a[C+(h*20|0)>>0]=79;b[C+(h*20|0)+2>>1]=0;c[C+(h*20|0)+4>>2]=F;c[C+(h*20|0)+8>>2]=o;c[C+(h*20|0)+12>>2]=0;c[C+(h*20|0)+16>>2]=0;a[C+(h*20|0)+1>>0]=0;break}else{Di(D,79,F,o,0)|0;break}}while(0);m=m+1|0;if((m|0)>=(c[n>>2]|0))break;else l=l+24|0}}a[f>>0]=0;if(!i)return;h=c[H+108>>2]|0;if(!(a[(c[H>>2]|0)+81>>0]|0))g=(c[H+104>>2]|0)+(((i|0)<0?h+-1|0:i)*20|0)|0;else g=59308;c[g+8>>2]=h;return}function ul(d,f){d=d|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;u=Ra;Ra=Ra+16|0;t=u;r=c[d+8>>2]|0;s=f+44|0;if((c[s>>2]|0)==(0-(c[f+32>>2]|0)|0)){Ra=u;return}g=c[f+16>>2]|0;h=c[f+20>>2]|0;p=r+108|0;i=c[p>>2]|0;q=r+112|0;if((c[q>>2]|0)>(i|0)){c[p>>2]=i+1;o=c[r+104>>2]|0;a[o+(i*20|0)>>0]=73;b[o+(i*20|0)+2>>1]=0;c[o+(i*20|0)+4>>2]=0;c[o+(i*20|0)+8>>2]=g;c[o+(i*20|0)+12>>2]=h;c[o+(i*20|0)+16>>2]=0;a[o+(i*20|0)+1>>0]=0}else Di(r,73,0,g,h)|0;if((c[s>>2]|0)<=0){Ra=u;return}o=r+104|0;m=c[f+40>>2]|0;n=0;while(1){k=m+12|0;do if((c[k>>2]|0)>-1){j=c[(c[m>>2]|0)+20>>2]|0;if(j|0?(c[j>>2]|0)==1:0){i=c[d>>2]|0;f=i+272|0;a:do if(c[f>>2]|0)if(!(a[i+81>>0]|0))l=21;else{j=0;f=1}else{do if((e[i+276>>1]|0)>=30){g=i+300|0;h=c[g>>2]|0;if(h|0){c[g>>2]=c[h>>2];l=i+284|0;c[l>>2]=(c[l>>2]|0)+1;l=22;break a}g=i+296|0;h=c[g>>2]|0;if(!h){g=i+292|0;break}else{c[g>>2]=c[h>>2];l=i+284|0;c[l>>2]=(c[l>>2]|0)+1;l=22;break a}}else g=i+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1;l=21}while(0);if((l|0)==21){h=_d(i,30,0)|0;l=22}do if((l|0)==22){l=0;if(!h){g=i+81|0;if((a[g>>0]|0)==0?(a[i+82>>0]|0)==0:0){a[g>>0]=1;if((c[i+180>>2]|0)>0)c[i+264>>2]=1;c[f>>2]=(c[f>>2]|0)+1;g=c[i+236>>2]|0;if(g|0)c[g+12>>2]=7}if(!h){j=0;f=1;break}else{i=0;f=1}}else{c[h+16>>2]=h+28;b[h+6>>1]=1;b[h+8>>1]=2;a[h+4>>0]=a[i+78>>0]|0;c[h+12>>2]=i;c[h>>2]=1;i=h+24|0;c[i>>2]=0;b[i+4>>1]=0;i=h;f=0}g=Yi(d,c[j+4>>2]|0)|0;if(!g)g=c[(c[d>>2]|0)+8>>2]|0;c[h+20>>2]=g;a[c[h+16>>2]>>0]=a[j+16>>0]|0;j=i}while(0);h=c[k>>2]|0;g=c[p>>2]|0;if((c[q>>2]|0)>(g|0)){c[p>>2]=g+1;k=c[o>>2]|0;a[k+(g*20|0)>>0]=113;b[k+(g*20|0)+2>>1]=0;c[k+(g*20|0)+4>>2]=h;c[k+(g*20|0)+8>>2]=0;c[k+(g*20|0)+12>>2]=0;c[k+(g*20|0)+16>>2]=0;a[k+(g*20|0)+1>>0]=0}else g=Di(r,113,h,0,0)|0;h=c[r>>2]|0;if(!(a[h+81>>0]|0)){if((g|0)<0)g=(c[p>>2]|0)+-1|0;h=c[o>>2]|0;i=h+(g*20|0)+1|0;if(a[i>>0]|0){Ei(r,h+(g*20|0)|0,j,-9);break}if(f)break;c[h+(g*20|0)+16>>2]=j;a[i>>0]=-9;break}if(f|(c[h+480>>2]|0)!=0)break;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if(k|0)break;g=c[j+12>>2]|0;if(g|0){if(c[g+480>>2]|0){Xd(g,j);break}k=j;if((c[g+304>>2]|0)>>>0<=k>>>0?(c[g+308>>2]|0)>>>0>k>>>0:0){k=g+300|0;c[j>>2]=c[k>>2];c[k>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{k=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}cd(d,44342,t);c[k>>2]=-1}while(0);n=n+1|0;if((n|0)>=(c[s>>2]|0))break;else m=m+16|0}Ra=u;return}function vl(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=c[d+24>>2]|0;i=c[d>>2]|0;d=a[e>>0]|0;a:do if(!(c[j+12>>2]|0)){switch(d<<24>>24){case -94:case -93:break a;case -95:break;default:{j=0;return j|0}}if(!(c[e+4>>2]&16777216)){j=0;return j|0}d=c[j>>2]|0;if(d|0){f=c[e+44>>2]|0;while(1){if((f|0)==(d|0)){d=1;break}d=c[d+32>>2]|0;if(!d)break a}return d|0}}else{if(d<<24>>24!=-94){j=0;return j|0}f=c[j+4>>2]|0;h=c[f>>2]|0;b:do if((h|0)>0){g=c[e+28>>2]|0;d=0;do{if((g|0)==(c[f+8+(d*72|0)+40>>2]|0))break b;d=d+1|0}while((d|0)<(h|0))}else d=0;while(0);if((d|0)==(h|0)){j=0;return j|0}}while(0);h=dk(c[i>>2]|0,e,0,0)|0;g=j+8|0;h=nj(c[i>>2]|0,c[g>>2]|0,h)|0;c[g>>2]=h;if(!h){j=0;return j|0}d=e+4|0;c[d>>2]=c[d>>2]|134217728;ni(c[i>>2]|0,e);c[d>>2]=c[d>>2]&-134217729;d=e;f=d+52|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(f|0));a[e>>0]=-94;b[e+32>>1]=(c[c[g>>2]>>2]|0)+65535;c[e+28>>2]=c[(c[j>>2]|0)+44>>2];j=0;return j|0}function wl(a,b){a=a|0;b=b|0;var d=0,e=0;d=(c[a+24>>2]|0)+12|0;e=c[d>>2]|0;if((e|0)==(b|0)){e=0;return e|0}c[d>>2]=b;$j(a,b)|0;c[d>>2]=e;e=1;return e|0}function xl(b,d){b=b|0;d=d|0;if(c[d+4>>2]&1|0){d=1;return d|0}switch(a[d>>0]|0){case -94:{if((c[b+24>>2]|0)!=(c[d+28>>2]|0)){d=1;return d|0}a[b+20>>0]=1;d=2;return d|0}case 57:case 54:case 55:case 56:case 52:case 53:{b=c[d+12>>2]|0;if((a[b>>0]|0)==-94?c[(c[b+44>>2]|0)+56>>2]|0:0){d=1;return d|0}d=c[d+16>>2]|0;if((a[d>>0]|0)==-94?c[(c[d+44>>2]|0)+56>>2]|0:0){d=1;return d|0}break}case -95:case 49:case -107:case 43:case 45:case 51:case 50:case 19:case -96:{d=1;return d|0}default:{}}d=0;return d|0}function yl(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;if(!d)return;h=(e|0)==0;while(1){f=c[d>>2]|0;if(f|0?(c[f>>2]|0)>0:0){e=0;do{g=f+4+(e*20|0)|0;j=zl(b,c[g>>2]|0)|0;c[g>>2]=j;e=e+1|0}while((e|0)<(c[f>>2]|0))}f=c[d+40>>2]|0;if(f|0?(c[f>>2]|0)>0:0){e=0;do{j=f+4+(e*20|0)|0;g=zl(b,c[j>>2]|0)|0;c[j>>2]=g;e=e+1|0}while((e|0)<(c[f>>2]|0))}f=c[d+48>>2]|0;if(f|0?(c[f>>2]|0)>0:0){e=0;do{j=f+4+(e*20|0)|0;g=zl(b,c[j>>2]|0)|0;c[j>>2]=g;e=e+1|0}while((e|0)<(c[f>>2]|0))}e=d+44|0;f=zl(b,c[e>>2]|0)|0;c[e>>2]=f;e=d+36|0;f=zl(b,c[e>>2]|0)|0;c[e>>2]=f;e=c[d+32>>2]|0;f=c[e>>2]|0;if((f|0)>0){g=e+8|0;while(1){yl(b,c[g+20>>2]|0,1);if((a[g+37>>0]&4?(i=c[g+64>>2]|0,i|0):0)?(c[i>>2]|0)>0:0){e=0;do{j=i+4+(e*20|0)|0;k=zl(b,c[j>>2]|0)|0;c[j>>2]=k;e=e+1|0}while((e|0)<(c[i>>2]|0))}if((f|0)>1){g=g+72|0;f=f+-1|0}else break}}if(h){e=25;break}d=c[d+52>>2]|0;if(!d){e=25;break}}if((e|0)==25)return}function zl(d,e){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;o=Ra;Ra=Ra+64|0;j=o+8|0;i=o;f=o+12|0;if(!e){n=0;Ra=o;return n|0}n=e+4|0;if(c[n>>2]&1|0?(g=e+36|0,(c[d+4>>2]|0)==(b[g>>1]|0)):0)b[g>>1]=c[d+8>>2];switch(a[e>>0]|0){case -94:{if((c[e+28>>2]|0)==(c[d+4>>2]|0)){g=b[e+32>>1]|0;if(g<<16>>16<0){a[e>>0]=114;n=e;Ra=o;return n|0}l=c[(c[d+16>>2]|0)+4+((g<<16>>16)*20|0)>>2]|0;k=a[l>>0]|0;if(k<<24>>24==-88)g=a[l+38>>0]|0;else g=k;switch(g<<24>>24){case -87:{h=l+20|0;m=15;break}case -125:{h=c[l+20>>2]|0;m=15;break}default:{g=c[d>>2]|0;m=19}}do if((m|0)==15){g=c[d>>2]|0;if((c[c[h>>2]>>2]|0)>=2)if(!(c[l+4>>2]&2048)){cd(g,38899,j);break}else{c[i>>2]=c[c[c[l+20>>2]>>2]>>2];c[i+4>>2]=1;cd(g,39001,i);break}else m=19}while(0);if((m|0)==19){j=c[g>>2]|0;i=d+12|0;if(k<<24>>24==-94|(c[i>>2]|0)==0)if(!l)f=0;else{f=l;m=22}else{g=f;h=g+52|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));a[f>>0]=-85;c[f+12>>2]=l;c[f+28>>2]=c[d+8>>2];m=22}if((m|0)==22){f=dk(j,f,0,0)|0;if(f){if(c[i>>2]|0){d=f+4|0;c[d>>2]=c[d>>2]|1048576}if(c[n>>2]&1){b[f+36>>1]=b[e+36>>1]|0;n=f+4|0;c[n>>2]=c[n>>2]|1}}else f=0}ni(j,e);e=f}n=e;Ra=o;return n|0}break}case -85:{f=e+28|0;if((c[f>>2]|0)==(c[d+4>>2]|0))c[f>>2]=c[d+8>>2];break}default:{}}f=e+12|0;m=zl(d,c[f>>2]|0)|0;c[f>>2]=m;f=e+16|0;m=zl(d,c[f>>2]|0)|0;c[f>>2]=m;f=e+20|0;if(c[n>>2]&2048|0){yl(d,c[f>>2]|0,1);n=e;Ra=o;return n|0}g=c[f>>2]|0;if(!g){n=e;Ra=o;return n|0}if((c[g>>2]|0)<=0){n=e;Ra=o;return n|0}f=0;do{n=g+4+(f*20|0)|0;m=zl(d,c[n>>2]|0)|0;c[n>>2]=m;f=f+1|0}while((f|0)<(c[g>>2]|0));Ra=o;return e|0}function Al(d,e,f){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,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=Ra;Ra=Ra+80|0;G=I+40|0;F=I+32|0;p=I+24|0;j=I+16|0;i=I+8|0;E=I+48|0;k=c[e+32>>2]|0;l=c[c[e>>2]>>2]|0;H=c[d+8>>2]|0;C=e+52|0;D=c[C>>2]|0;if(c[e+68>>2]|0){cd(d,43323,I);Ra=I;return}g=c[d>>2]|0;do if(((a[g+165>>0]|0)==0?(a[d+200>>0]|0)==0:0)?(h=c[g+312>>2]|0,h|0):0){g=$a[h&127](c[g+316>>2]|0,33,0,0,0,c[d+240>>2]|0)|0;if((g|0)==1){cd(d,39216,i);c[d+12>>2]=23;Ra=I;return}if((g|2|0)==2){if(!g)break;Ra=I;return}else{cd(d,39231,j);c[d+12>>2]=1;Ra=I;return}}while(0);s=d+56|0;x=c[s>>2]|0;v=x+-1|0;c[s>>2]=v;b[e+6>>1]=320;pl(d,e,v);y=e+60|0;z=c[y>>2]|0;A=e+12|0;w=c[A>>2]|0;B=e+16|0;t=c[B>>2]|0;c[y>>2]=0;c[B>>2]=0;c[A>>2]=0;A=e+48|0;B=c[A>>2]|0;h=c[k>>2]|0;a:do if((h|0)>0){g=0;while(1){if(a[k+8+(g*72|0)+37>>0]&32)break;g=g+1|0;if((g|0)>=(h|0)){q=0;break a}}q=c[k+8+(g*72|0)+40>>2]|0}else q=0;while(0);g=d+40|0;o=c[g>>2]|0;h=o+1|0;c[g>>2]=h;m=(B|0)!=0;if((a[e+4>>0]|0)==127){c[g>>2]=o+2;g=m?8:6}else{h=0;g=m?7:5}a[E>>0]=g;c[E+4>>2]=o;c[E+16>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;u=d+44|0;n=(c[u>>2]|0)+1|0;c[u>>2]=n;u=H+108|0;g=c[u>>2]|0;r=H+112|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;k=c[H+104>>2]|0;a[k+(g*20|0)>>0]=116;b[k+(g*20|0)+2>>1]=0;c[k+(g*20|0)+4>>2]=q;c[k+(g*20|0)+8>>2]=n;c[k+(g*20|0)+12>>2]=l;c[k+(g*20|0)+16>>2]=0;a[k+(g*20|0)+1>>0]=0}else Di(H,116,q,n,l)|0;do if(!m){g=c[u>>2]|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;k=c[H+104>>2]|0;a[k+(g*20|0)>>0]=113;b[k+(g*20|0)+2>>1]=0;c[k+(g*20|0)+4>>2]=o;c[k+(g*20|0)+8>>2]=l;c[k+(g*20|0)+12>>2]=0;c[k+(g*20|0)+16>>2]=0;a[k+(g*20|0)+1>>0]=0;break}else{Di(H,113,o,l,0)|0;break}}else{k=Dl(d,e)|0;i=(c[B>>2]|0)+2|0;g=c[u>>2]|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;l=c[H+104>>2]|0;a[l+(g*20|0)>>0]=113;b[l+(g*20|0)+2>>1]=0;c[l+(g*20|0)+4>>2]=o;c[l+(g*20|0)+8>>2]=i;c[l+(g*20|0)+12>>2]=0;c[l+(g*20|0)+16>>2]=0;a[l+(g*20|0)+1>>0]=0}else g=Di(H,113,o,i,0)|0;i=c[H>>2]|0;do if(!(a[i+81>>0]|0)){if((g|0)<0)g=(c[u>>2]|0)+-1|0;i=c[H+104>>2]|0;j=i+(g*20|0)+1|0;if(a[j>>0]|0){Ei(H,i+(g*20|0)|0,k,-9);break}if(k|0){c[i+(g*20|0)+16>>2]=k;a[j>>0]=-9}}else if(!((k|0)==0|(c[i+480>>2]|0)!=0)?(l=(c[k>>2]|0)+-1|0,c[k>>2]=l,(l|0)==0):0){g=c[k+12>>2]|0;if(g|0){if(c[g+480>>2]|0){Xd(g,k);break}l=k;if((c[g+304>>2]|0)>>>0<=l>>>0?(c[g+308>>2]|0)>>>0>l>>>0:0){l=g+300|0;c[k>>2]=c[l>>2];c[l>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{l=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[E+20>>2]=B}while(0);if(h|0){g=c[u>>2]|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;l=c[H+104>>2]|0;a[l+(g*20|0)>>0]=113;b[l+(g*20|0)+2>>1]=0;c[l+(g*20|0)+4>>2]=h;c[l+(g*20|0)+8>>2]=0;c[l+(g*20|0)+12>>2]=0;c[l+(g*20|0)+16>>2]=0;a[l+(g*20|0)+1>>0]=0}else g=Di(H,113,h,0,0)|0;c[e+24>>2]=g;l=e+8|0;c[l>>2]=c[l>>2]|32}c[A>>2]=0;l=D+56|0;c[l>>2]=0;nk(d,1,43372,p);p=kj(d,D,E)|0;c[l>>2]=e;do if(!p){g=c[u>>2]|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;k=c[H+104>>2]|0;a[k+(g*20|0)>>0]=36;b[k+(g*20|0)+2>>1]=0;c[k+(g*20|0)+4>>2]=o;c[k+(g*20|0)+8>>2]=v;c[k+(g*20|0)+12>>2]=0;c[k+(g*20|0)+16>>2]=0;a[k+(g*20|0)+1>>0]=0;k=g}else k=Di(H,36,o,v,0)|0;g=c[u>>2]|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;p=c[H+104>>2]|0;a[p+(g*20|0)>>0]=-127;b[p+(g*20|0)+2>>1]=0;c[p+(g*20|0)+4>>2]=q;c[p+(g*20|0)+8>>2]=0;c[p+(g*20|0)+12>>2]=0;c[p+(g*20|0)+16>>2]=0;a[p+(g*20|0)+1>>0]=0}else Di(H,129,q,0,0)|0;do if(m){g=(c[B>>2]|0)+1|0;h=c[u>>2]|0;if((c[r>>2]|0)>(h|0)){c[u>>2]=h+1;p=c[H+104>>2]|0;a[p+(h*20|0)>>0]=90;b[p+(h*20|0)+2>>1]=0;c[p+(h*20|0)+4>>2]=o;c[p+(h*20|0)+8>>2]=g;c[p+(h*20|0)+12>>2]=n;c[p+(h*20|0)+16>>2]=0;a[p+(h*20|0)+1>>0]=0;break}else{Di(H,90,o,g,n)|0;break}}else{g=c[u>>2]|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;p=c[H+104>>2]|0;a[p+(g*20|0)>>0]=127;b[p+(g*20|0)+2>>1]=0;c[p+(g*20|0)+4>>2]=o;c[p+(g*20|0)+8>>2]=n;c[p+(g*20|0)+12>>2]=0;c[p+(g*20|0)+16>>2]=0;a[p+(g*20|0)+1>>0]=0;break}else{Di(H,127,o,n,0)|0;break}}while(0);g=c[u>>2]|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;p=c[H+104>>2]|0;a[p+(g*20|0)>>0]=123;b[p+(g*20|0)+2>>1]=0;c[p+(g*20|0)+4>>2]=o;c[p+(g*20|0)+8>>2]=0;c[p+(g*20|0)+12>>2]=0;c[p+(g*20|0)+16>>2]=0;a[p+(g*20|0)+1>>0]=0}else Di(H,123,o,0,0)|0;j=c[s>>2]|0;h=j+-1|0;c[s>>2]=h;do if((t|0)>0){g=c[u>>2]|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;s=c[H+104>>2]|0;a[s+(g*20|0)>>0]=47;b[s+(g*20|0)+2>>1]=0;c[s+(g*20|0)+4>>2]=t;c[s+(g*20|0)+8>>2]=h;c[s+(g*20|0)+12>>2]=1;c[s+(g*20|0)+16>>2]=0;a[s+(g*20|0)+1>>0]=0;break}else{Di(H,47,t,h,1)|0;break}}while(0);rl(d,e,q,0,0,f,h,v);do if(w|0){g=c[u>>2]|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;f=c[H+104>>2]|0;a[f+(g*20|0)>>0]=49;b[f+(g*20|0)+2>>1]=0;c[f+(g*20|0)+4>>2]=w;c[f+(g*20|0)+8>>2]=v;c[f+(g*20|0)+12>>2]=0;c[f+(g*20|0)+16>>2]=0;a[f+(g*20|0)+1>>0]=0;break}else{Di(H,49,w,v,0)|0;break}}while(0);i=H+12|0;h=c[i>>2]|0;g=0-j|0;if(((c[h+56>>2]|0)+(c[h+60>>2]|0)|0)<0)mk(h,H,g);else c[(c[h+64>>2]|0)+(g<<2)>>2]=c[u>>2];if(!(c[e+8>>2]&8)){c[C>>2]=0;nk(d,1,43420,G);kj(d,e,E)|0;c[C>>2]=D}else cd(d,43378,F);g=c[u>>2]|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;G=c[H+104>>2]|0;a[G+(g*20|0)>>0]=11;b[G+(g*20|0)+2>>1]=0;c[G+(g*20|0)+4>>2]=0;c[G+(g*20|0)+8>>2]=k;c[G+(g*20|0)+12>>2]=0;c[G+(g*20|0)+16>>2]=0;a[G+(g*20|0)+1>>0]=0}else Di(H,11,0,k,0)|0;h=c[i>>2]|0;g=0-x|0;if(((c[h+56>>2]|0)+(c[h+60>>2]|0)|0)<0){mk(h,H,g);break}else{c[(c[h+64>>2]|0)+(g<<2)>>2]=c[u>>2];break}}while(0);g=c[A>>2]|0;if(g|0)ri(c[d>>2]|0,g);c[A>>2]=B;c[y>>2]=z;Ra=I;return}function Bl(f,g,h){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,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;Z=Ra;Ra=Ra+128|0;G=Z+64|0;F=Z+56|0;D=Z+48|0;B=Z+32|0;x=Z+24|0;v=Z+8|0;u=Z;p=Z+120|0;H=Z+96|0;I=Z+72|0;X=c[f>>2]|0;Y=f+8|0;U=c[Y>>2]|0;C=f+56|0;T=c[C>>2]|0;L=T+-1|0;R=T+-2|0;c[C>>2]=R;C=g+4|0;J=a[C>>0]|0;V=g+52|0;W=c[V>>2]|0;t=g+48|0;i=c[t>>2]|0;j=c[i>>2]|0;P=J<<24>>24==-128;a:do if(!P?(n=X+81|0,(a[n>>0]|0)==0):0){o=p+4|0;m=1;l=j;while(1){if((m|0)>(c[c[g>>2]>>2]|0)){m=i;S=l;break a}b:do if((l|0)>0){k=i+4|0;j=0;while(1){if((m|0)==(e[k+16>>1]|0))break b;j=j+1|0;if((j|0)<(l|0))k=k+20|0;else break}}else j=0;while(0);if((j|0)==(l|0)){c[p>>2]=0;c[o>>2]=0;j=oj(X,147,p,0)|0;if(!j){i=7;break}S=j+4|0;c[S>>2]=c[S>>2]|1024;c[j+8>>2]=m;i=nj(c[f>>2]|0,i,j)|0;c[t>>2]=i;if(!i){i=0;j=l}else{b[i+4+(l*20|0)+16>>1]=m;j=l+1|0}}else j=l;if(!(a[n>>0]|0)){m=m+1|0;l=j}else{m=i;S=j;break a}}Ra=Z;return i|0}else{m=i;S=j}while(0);k=(S<<2)+4|0;q=X+272|0;c:do if(c[q>>2]|0)if(!(a[X+81>>0]|0))r=24;else{O=0;Q=0;M=0;N=1}else{do if(!(0<0|(0==0?(e[X+276>>1]|0)>>>0>>0:0))){i=X+300|0;j=c[i>>2]|0;if(j|0){c[i>>2]=c[j>>2];r=X+284|0;c[r>>2]=(c[r>>2]|0)+1;r=25;break c}i=X+296|0;j=c[i>>2]|0;if(!j){i=X+292|0;break}else{c[i>>2]=c[j>>2];r=X+284|0;c[r>>2]=(c[r>>2]|0)+1;r=25;break c}}else i=X+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;r=24}while(0);if((r|0)==24){j=_d(X,k,0)|0;r=25}if((r|0)==25)if(!j){O=0;Q=0;M=j;N=1}else{c[j>>2]=S;if((S|0)>=1){i=m+4|0;k=1;while(1){c[j+(k<<2)>>2]=(e[i+16>>1]|0)+-1;if((k|0)==(S|0))break;else{i=i+20|0;k=k+1|0}}}O=j;Q=Dl(f,g)|0;M=j;N=0}c[t>>2]=m;K=gk(c[f>>2]|0,m,0)|0;s=W+48|0;c[s>>2]=K;d:do if(!P){o=c[c[g>>2]>>2]|0;i=f+44|0;j=c[i>>2]|0;p=j+1|0;n=o+1|0;c[i>>2]=j+n;i=U+108|0;j=c[i>>2]|0;if((c[U+112>>2]|0)>(j|0)){c[i>>2]=j+1;K=c[U+104>>2]|0;a[K+(j*20|0)>>0]=70;b[K+(j*20|0)+2>>1]=0;c[K+(j*20|0)+4>>2]=0;c[K+(j*20|0)+8>>2]=p;c[K+(j*20|0)+12>>2]=0;c[K+(j*20|0)+16>>2]=0;a[K+(j*20|0)+1>>0]=0}else Di(U,70,0,p,0)|0;m=n*5|0;k=m+20|0;e:do if(c[q>>2]|0)if(!(a[X+81>>0]|0))r=44;else{z=0;y=0;break d}else{do if(!(0<0|(0==0?(e[X+276>>1]|0)>>>0>>0:0))){i=X+300|0;j=c[i>>2]|0;if(j|0){c[i>>2]=c[j>>2];l=X+284|0;c[l>>2]=(c[l>>2]|0)+1;l=j;break e}i=X+296|0;j=c[i>>2]|0;if(!j){i=X+292|0;break}else{c[i>>2]=c[j>>2];l=X+284|0;c[l>>2]=(c[l>>2]|0)+1;l=j;break e}}else i=X+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;r=44}while(0);if((r|0)==44)l=_d(X,k,0)|0;if(!l){i=X+81|0;if((a[i>>0]|0)==0?(a[X+82>>0]|0)==0:0){a[i>>0]=1;if((c[X+180>>2]|0)>0)c[X+264>>2]=1;c[q>>2]=(c[q>>2]|0)+1;i=c[X+236>>2]|0;if(i|0)c[i+12>>2]=7}if(!l){z=0;y=0;break}else k=0}else{c[l+16>>2]=l+20+(n<<2);b[l+6>>1]=o;b[l+8>>1]=n;a[l+4>>0]=a[X+78>>0]|0;c[l+12>>2]=X;c[l>>2]=1;gw(l+24|0,0,m+-4|0)|0;k=l}if((o|0)>0){j=l+16|0;i=0;do{K=Cl(f,g,i)|0;c[l+20+(i<<2)>>2]=K;a[(c[j>>2]|0)+i>>0]=0;i=i+1|0}while((i|0)!=(o|0));z=l;y=k}else{z=l;y=k}}else{z=0;p=0;y=0}while(0);c[V>>2]=0;K=W+56|0;c[K>>2]=0;n=c[t>>2]|0;i=c[f>>2]|0;f:do if(n|0?(a[i+81>>0]|0)==0:0){k=c[n>>2]|0;if((k|0)>(c[i+116>>2]|0)){c[u>>2]=40659;cd(f,41350,u);break}m=c[g>>2]|0;if((k|0)>0){i=0;l=n+4|0;while(1){j=b[l+16>>1]|0;if(!(j<<16>>16))j=k;else{j=j&65535;k=c[m>>2]|0;if((k|0)<(j|0))break;Gk(f,m,j+-1|0,c[l>>2]|0,40659,0);j=c[n>>2]|0}i=i+1|0;if((i|0)<(j|0)){l=l+20|0;k=j}else break f}c[v>>2]=i+1;c[v+4>>2]=40659;c[v+8>>2]=k;cd(f,41294,v)}}while(0);g:do if(((c[W+52>>2]|0)==0?(A=c[s>>2]|0,w=c[f>>2]|0,A|0):0)?(a[w+81>>0]|0)==0:0){k=c[A>>2]|0;if((k|0)>(c[w+116>>2]|0)){c[x>>2]=40659;cd(f,41350,x);break}m=c[W>>2]|0;if((k|0)>0){i=0;l=A+4|0;while(1){j=b[l+16>>1]|0;if(!(j<<16>>16))j=k;else{j=j&65535;k=c[m>>2]|0;if((k|0)<(j|0))break;Gk(f,m,j+-1|0,c[l>>2]|0,40659,0);j=c[A>>2]|0}i=i+1|0;if((i|0)<(j|0)){l=l+20|0;k=j}else break g}c[B>>2]=i+1;c[B+4>>2]=40659;c[B+8>>2]=k;cd(f,41294,B)}}while(0);pl(f,g,L);o=g+12|0;i=c[o>>2]|0;do if(P&(i|0)!=0){j=f+44|0;m=c[j>>2]|0;n=m+1|0;m=m+2|0;c[j>>2]=m;j=c[g+16>>2]|0;j=(j|0)==0?i:j+1|0;k=U+108|0;i=c[k>>2]|0;l=U+112|0;if((c[l>>2]|0)>(i|0)){c[k>>2]=i+1;E=c[U+104>>2]|0;a[E+(i*20|0)>>0]=78;b[E+(i*20|0)+2>>1]=0;c[E+(i*20|0)+4>>2]=j;c[E+(i*20|0)+8>>2]=n;c[E+(i*20|0)+12>>2]=0;c[E+(i*20|0)+16>>2]=0;a[E+(i*20|0)+1>>0]=0}else Di(U,78,j,n,0)|0;i=c[k>>2]|0;if((c[l>>2]|0)>(i|0)){c[k>>2]=i+1;E=c[U+104>>2]|0;a[E+(i*20|0)>>0]=78;b[E+(i*20|0)+2>>1]=0;c[E+(i*20|0)+4>>2]=n;c[E+(i*20|0)+8>>2]=m;c[E+(i*20|0)+12>>2]=0;c[E+(i*20|0)+16>>2]=0;a[E+(i*20|0)+1>>0]=0;break}else{Di(U,78,n,m,0)|0;break}}else{m=0;n=0}while(0);i=g+60|0;j=c[i>>2]|0;if(j|0)ni(X,j);c[i>>2]=0;A=f+44|0;v=c[A>>2]|0;w=v+1|0;x=v+2|0;u=v+3|0;v=v+4|0;c[A>>2]=v;a[H>>0]=13;c[H+4>>2]=w;c[H+16>>2]=0;A=H+8|0;c[A>>2]=0;c[H+12>>2]=0;a[I>>0]=13;c[I+4>>2]=x;c[I+16>>2]=0;B=I+8|0;c[B>>2]=0;c[I+12>>2]=0;switch(a[C>>0]|0){case -128:{i=41509;break}case -126:{i=41519;break}case -127:{i=41529;break}default:i=41536}c[D>>2]=i;nk(f,1,43435,D);E=U+108|0;i=c[E>>2]|0;j=i+1|0;D=U+112|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=j;k=c[U+104>>2]|0;a[k+(i*20|0)>>0]=13;b[k+(i*20|0)+2>>1]=0;c[k+(i*20|0)+4>>2]=w;c[k+(i*20|0)+8>>2]=0;c[k+(i*20|0)+12>>2]=j;c[k+(i*20|0)+16>>2]=0;a[k+(i*20|0)+1>>0]=0;k=i}else k=Di(U,13,w,0,j)|0;c[W+12>>2]=n;nk(f,1,43446,F);kj(f,W,H)|0;i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;F=c[U+104>>2]|0;a[F+(i*20|0)>>0]=67;b[F+(i*20|0)+2>>1]=0;c[F+(i*20|0)+4>>2]=w;c[F+(i*20|0)+8>>2]=0;c[F+(i*20|0)+12>>2]=0;c[F+(i*20|0)+16>>2]=0;a[F+(i*20|0)+1>>0]=0}else Di(U,67,w,0,0)|0;C=U+12|0;j=c[C>>2]|0;a[j+19>>0]=0;c[j+28>>2]=0;j=c[E>>2]|0;if(!(a[(c[U>>2]|0)+81>>0]|0))i=(c[U+104>>2]|0)+(((k|0)<0?j+-1|0:k)*20|0)|0;else i=59308;c[i+8>>2]=j;i=j+1|0;if((c[D>>2]|0)>(j|0)){c[E>>2]=i;t=c[U+104>>2]|0;a[t+(j*20|0)>>0]=13;b[t+(j*20|0)+2>>1]=0;c[t+(j*20|0)+4>>2]=x;c[t+(j*20|0)+8>>2]=0;c[t+(j*20|0)+12>>2]=i;c[t+(j*20|0)+16>>2]=0;a[t+(j*20|0)+1>>0]=0;t=j}else t=Di(U,13,x,0,i)|0;s=c[o>>2]|0;i=g+16|0;F=c[i>>2]|0;c[o>>2]=m;c[i>>2]=0;nk(f,1,43451,G);kj(f,g,I)|0;c[o>>2]=s;c[i>>2]=F;i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;G=c[U+104>>2]|0;a[G+(i*20|0)>>0]=67;b[G+(i*20|0)+2>>1]=0;c[G+(i*20|0)+4>>2]=x;c[G+(i*20|0)+8>>2]=0;c[G+(i*20|0)+12>>2]=0;c[G+(i*20|0)+16>>2]=0;a[G+(i*20|0)+1>>0]=0}else Di(U,67,x,0,0)|0;q=c[C>>2]|0;a[q+19>>0]=0;c[q+28>>2]=0;q=El(f,g,H,h,u,p,z,L)|0;s=(J+-127&255)<2;if(s)r=El(f,g,I,h,v,p,z,L)|0;else r=0;h:do if(z|0?(I=(c[z>>2]|0)+-1|0,c[z>>2]=I,(I|0)==0):0){i=c[z+12>>2]|0;do if(i|0){if(c[i+480>>2]|0){Xd(i,y);break h}j=z;if((c[i+304>>2]|0)>>>0<=j>>>0){if((c[i+308>>2]|0)>>>0<=j>>>0)break;I=i+300|0;c[z>>2]=c[I>>2];c[I>>2]=y;break h}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](y);break}else{I=Wa[c[29352>>2]&127](y)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](y);break}}while(0);p=J<<24>>24==-126;if((J+127&255)<2){l=L;n=L}else{i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;J=c[U+104>>2]|0;a[J+(i*20|0)>>0]=12;b[J+(i*20|0)+2>>1]=0;c[J+(i*20|0)+4>>2]=v;c[J+(i*20|0)+8>>2]=r;c[J+(i*20|0)+12>>2]=0;c[J+(i*20|0)+16>>2]=0;a[J+(i*20|0)+1>>0]=0}else i=Di(U,12,v,r,0)|0;j=c[E>>2]|0;if((c[D>>2]|0)>(j|0)){c[E>>2]=j+1;J=c[U+104>>2]|0;a[J+(j*20|0)>>0]=14;b[J+(j*20|0)+2>>1]=0;c[J+(j*20|0)+4>>2]=x;c[J+(j*20|0)+8>>2]=L;c[J+(j*20|0)+12>>2]=0;c[J+(j*20|0)+16>>2]=0;a[J+(j*20|0)+1>>0]=0}else j=Di(U,14,x,L,0)|0;k=c[E>>2]|0;if((c[D>>2]|0)>(k|0)){c[E>>2]=k+1;J=c[U+104>>2]|0;a[J+(k*20|0)>>0]=11;b[J+(k*20|0)+2>>1]=0;c[J+(k*20|0)+4>>2]=0;c[J+(k*20|0)+8>>2]=i;c[J+(k*20|0)+12>>2]=0;c[J+(k*20|0)+16>>2]=0;a[J+(k*20|0)+1>>0]=0}else Di(U,11,0,i,0)|0;o=g+6|0;k=b[o>>1]|0;l=b[W+6>>1]|0;m=k<<16>>16;n=l<<16>>16;do if(k<<16>>16>16){if((m+49|0)<(n|0)){k=l;break}if((m+31|0)<(n|0)){k=n+1&65535;break}else{k=(d[18112+(n-m)>>0]|0)+n&65535;break}}else{if((n+49|0)<(m|0))break;if((n+31|0)<(m|0)){k=m+1&65535;break}else{k=(d[18112+(m-n)>>0]|0)+m&65535;break}}while(0);b[o>>1]=k;l=i;n=j}do if(p){i=g+6|0;j=b[W+6>>1]|0;if((b[i>>1]|0)>j<<16>>16){b[i>>1]=j;m=l}else m=l}else{i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;J=c[U+104>>2]|0;a[J+(i*20|0)>>0]=12;b[J+(i*20|0)+2>>1]=0;c[J+(i*20|0)+4>>2]=u;c[J+(i*20|0)+8>>2]=q;c[J+(i*20|0)+12>>2]=0;c[J+(i*20|0)+16>>2]=0;a[J+(i*20|0)+1>>0]=0}else i=Di(U,12,u,q,0)|0;j=c[E>>2]|0;if((c[D>>2]|0)>(j|0)){c[E>>2]=j+1;J=c[U+104>>2]|0;a[J+(j*20|0)>>0]=14;b[J+(j*20|0)+2>>1]=0;c[J+(j*20|0)+4>>2]=w;c[J+(j*20|0)+8>>2]=L;c[J+(j*20|0)+12>>2]=0;c[J+(j*20|0)+16>>2]=0;a[J+(j*20|0)+1>>0]=0}else Di(U,14,w,L,0)|0;j=c[E>>2]|0;if((c[D>>2]|0)>(j|0)){c[E>>2]=j+1;m=c[U+104>>2]|0;a[m+(j*20|0)>>0]=11;b[m+(j*20|0)+2>>1]=0;c[m+(j*20|0)+4>>2]=0;c[m+(j*20|0)+8>>2]=i;c[m+(j*20|0)+12>>2]=0;c[m+(j*20|0)+16>>2]=0;a[m+(j*20|0)+1>>0]=0;m=i;break}else{Di(U,11,0,i,0)|0;m=i;break}}while(0);i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;k=c[U+104>>2]|0;a[k+(i*20|0)>>0]=12;b[k+(i*20|0)+2>>1]=0;c[k+(i*20|0)+4>>2]=u;c[k+(i*20|0)+8>>2]=q;c[k+(i*20|0)+12>>2]=0;c[k+(i*20|0)+16>>2]=0;a[k+(i*20|0)+1>>0]=0;k=i}else k=Di(U,12,u,q,0)|0;i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;L=c[U+104>>2]|0;a[L+(i*20|0)>>0]=14;b[L+(i*20|0)+2>>1]=0;c[L+(i*20|0)+4>>2]=w;c[L+(i*20|0)+8>>2]=l;c[L+(i*20|0)+12>>2]=0;c[L+(i*20|0)+16>>2]=0;a[L+(i*20|0)+1>>0]=0}else Di(U,14,w,l,0)|0;i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;L=c[U+104>>2]|0;a[L+(i*20|0)>>0]=11;b[L+(i*20|0)+2>>1]=0;c[L+(i*20|0)+4>>2]=0;c[L+(i*20|0)+8>>2]=R;c[L+(i*20|0)+12>>2]=0;c[L+(i*20|0)+16>>2]=0;a[L+(i*20|0)+1>>0]=0}else Di(U,11,0,R,0)|0;do if(!P){if(p){p=k+1|0;l=k;break}i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;P=c[U+104>>2]|0;a[P+(i*20|0)>>0]=14;b[P+(i*20|0)+2>>1]=0;c[P+(i*20|0)+4>>2]=w;c[P+(i*20|0)+8>>2]=l;c[P+(i*20|0)+12>>2]=0;c[P+(i*20|0)+16>>2]=0;a[P+(i*20|0)+1>>0]=0}else i=Di(U,14,w,l,0)|0;j=c[E>>2]|0;if((c[D>>2]|0)>(j|0)){c[E>>2]=j+1;p=c[U+104>>2]|0;a[p+(j*20|0)>>0]=11;b[p+(j*20|0)+2>>1]=0;c[p+(j*20|0)+4>>2]=0;c[p+(j*20|0)+8>>2]=R;c[p+(j*20|0)+12>>2]=0;c[p+(j*20|0)+16>>2]=0;a[p+(j*20|0)+1>>0]=0;p=k;l=i;break}else{Di(U,11,0,R,0)|0;p=k;l=i;break}}else{p=k;l=k}while(0);o=c[E>>2]|0;do if(s)if((c[D>>2]|0)>(o|0)){c[E>>2]=o+1;P=c[U+104>>2]|0;a[P+(o*20|0)>>0]=12;b[P+(o*20|0)+2>>1]=0;c[P+(o*20|0)+4>>2]=v;c[P+(o*20|0)+8>>2]=r;c[P+(o*20|0)+12>>2]=0;c[P+(o*20|0)+16>>2]=0;a[P+(o*20|0)+1>>0]=0;break}else{Di(U,12,v,r,0)|0;break}while(0);i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;P=c[U+104>>2]|0;a[P+(i*20|0)>>0]=14;b[P+(i*20|0)+2>>1]=0;c[P+(i*20|0)+4>>2]=x;c[P+(i*20|0)+8>>2]=m;c[P+(i*20|0)+12>>2]=0;c[P+(i*20|0)+16>>2]=0;a[P+(i*20|0)+1>>0]=0}else Di(U,14,x,m,0)|0;i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;P=c[U+104>>2]|0;a[P+(i*20|0)>>0]=11;b[P+(i*20|0)+2>>1]=0;c[P+(i*20|0)+4>>2]=0;c[P+(i*20|0)+8>>2]=R;c[P+(i*20|0)+12>>2]=0;c[P+(i*20|0)+16>>2]=0;a[P+(i*20|0)+1>>0]=0}else Di(U,11,0,R,0)|0;j=c[E>>2]|0;if(!(a[(c[U>>2]|0)+81>>0]|0))i=(c[U+104>>2]|0)+(((t|0)<0?j+-1|0:t)*20|0)|0;else i=59308;c[i+8>>2]=j;if((c[D>>2]|0)>(j|0)){c[E>>2]=j+1;R=c[U+104>>2]|0;a[R+(j*20|0)>>0]=14;b[R+(j*20|0)+2>>1]=0;c[R+(j*20|0)+4>>2]=w;c[R+(j*20|0)+8>>2]=n;c[R+(j*20|0)+12>>2]=0;c[R+(j*20|0)+16>>2]=0;a[R+(j*20|0)+1>>0]=0}else Di(U,14,w,n,0)|0;i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;R=c[U+104>>2]|0;a[R+(i*20|0)>>0]=14;b[R+(i*20|0)+2>>1]=0;c[R+(i*20|0)+4>>2]=x;c[R+(i*20|0)+8>>2]=m;c[R+(i*20|0)+12>>2]=0;c[R+(i*20|0)+16>>2]=0;a[R+(i*20|0)+1>>0]=0}else Di(U,14,x,m,0)|0;i=c[C>>2]|0;j=1-T|0;if(((c[i+56>>2]|0)+(c[i+60>>2]|0)|0)<0)mk(i,U,j);else c[(c[i+64>>2]|0)+(j<<2)>>2]=c[E>>2];i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;j=c[U+104>>2]|0;a[j+(i*20|0)>>0]=86;j=j+(i*20|0)+1|0;k=j+19|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(k|0))}else i=Di(U,86,0,0,0)|0;j=c[U>>2]|0;i:do if(a[j+81>>0]|0){if(N)break;do if(j|0){if(c[j+480>>2]|0){Xd(j,O);break i}i=O;if((c[j+304>>2]|0)>>>0>i>>>0)break;if((c[j+308>>2]|0)>>>0<=i>>>0)break;R=j+300|0;c[M>>2]=c[R>>2];c[R>>2]=O;break i}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](O);break}else{R=Wa[c[29352>>2]&127](O)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](O);break}}else{if((i|0)<0)i=(c[E>>2]|0)+-1|0;j=c[U+104>>2]|0;k=j+(i*20|0)+1|0;if(a[k>>0]|0){Ei(U,j+(i*20|0)|0,O,-15);break}if(N)break;c[j+(i*20|0)+16>>2]=O;a[k>>0]=-15}while(0);k=c[A>>2]|0;j=c[B>>2]|0;i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;R=c[U+104>>2]|0;a[R+(i*20|0)>>0]=87;b[R+(i*20|0)+2>>1]=0;c[R+(i*20|0)+4>>2]=k;c[R+(i*20|0)+8>>2]=j;c[R+(i*20|0)+12>>2]=S;c[R+(i*20|0)+16>>2]=0;a[R+(i*20|0)+1>>0]=0}else i=Di(U,87,k,j,S)|0;j=c[U>>2]|0;j:do if(a[j+81>>0]|0){if((Q|0)==0|(c[j+480>>2]|0)!=0)break;S=(c[Q>>2]|0)+-1|0;c[Q>>2]=S;if(S|0)break;i=c[Q+12>>2]|0;do if(i|0){if(c[i+480>>2]|0){Xd(i,Q);break j}j=Q;if((c[i+304>>2]|0)>>>0>j>>>0)break;if((c[i+308>>2]|0)>>>0<=j>>>0)break;S=i+300|0;c[Q>>2]=c[S>>2];c[S>>2]=Q;break j}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](Q);break}else{S=Wa[c[29352>>2]&127](Q)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Q);break}}else{if((i|0)<0)i=(c[E>>2]|0)+-1|0;j=c[U+104>>2]|0;k=j+(i*20|0)+1|0;if(a[k>>0]|0){Ei(U,j+(i*20|0)|0,Q,-9);break}if(!Q)break;c[j+(i*20|0)+16>>2]=Q;a[k>>0]=-9}while(0);i=c[E>>2]|0;if((i|0)>0)b[(c[U+104>>2]|0)+((i+-1|0)*20|0)+2>>1]=1;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;S=c[U+104>>2]|0;a[S+(i*20|0)>>0]=16;b[S+(i*20|0)+2>>1]=0;c[S+(i*20|0)+4>>2]=p;c[S+(i*20|0)+8>>2]=l;c[S+(i*20|0)+12>>2]=o;c[S+(i*20|0)+16>>2]=0;a[S+(i*20|0)+1>>0]=0}else Di(U,16,p,l,o)|0;j=c[C>>2]|0;i=0-T|0;if(((c[j+56>>2]|0)+(c[j+60>>2]|0)|0)<0)mk(j,U,i);else c[(c[j+64>>2]|0)+(i<<2)>>2]=c[E>>2];i=c[V>>2]|0;if(i|0)pi(X,i,1);c[V>>2]=W;c[K>>2]=g;k=f+212|0;i=c[k>>2]|0;if(!i)i=0;else{j=c[Y>>2]|0;if((i|0)<0)i=(c[j+108>>2]|0)+-1|0;if(!(a[(c[j>>2]|0)+81>>0]|0))i=(c[j+104>>2]|0)+(i*20|0)|0;else i=59308;i=c[i+8>>2]|0}c[k>>2]=i;f=(c[f+36>>2]|0)!=0&1;Ra=Z;return f|0}function Cl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[b+52>>2]|0;if(e|0?(f=Cl(a,e,d)|0,f|0):0){d=f;return d|0}b=c[b>>2]|0;if((c[b>>2]|0)<=(d|0)){d=0;return d|0}d=Yi(a,c[b+4+(d*20|0)>>2]|0)|0;return d|0}function Dl(d,f){d=d|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;u=Ra;Ra=Ra+16|0;q=u;r=c[f+48>>2]|0;s=c[r>>2]|0;p=c[d>>2]|0;k=s+1|0;l=s+2|0;m=l*5|0;i=m+20|0;n=p+272|0;a:do if(c[n>>2]|0)if(!(a[p+81>>0]|0))j=11;else{t=0;Ra=u;return t|0}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){h=p+300|0;g=c[h>>2]|0;if(g|0){c[h>>2]=c[g>>2];o=p+284|0;c[o>>2]=(c[o>>2]|0)+1;break a}h=p+296|0;g=c[h>>2]|0;if(!g){g=p+292|0;break}else{c[h>>2]=c[g>>2];o=p+284|0;c[o>>2]=(c[o>>2]|0)+1;break a}}else g=p+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1;j=11}while(0);if((j|0)==11)g=_d(p,i,0)|0;if(!g){h=p+81|0;if((a[h>>0]|0)==0?(a[p+82>>0]|0)==0:0){a[h>>0]=1;if((c[p+180>>2]|0)>0)c[p+264>>2]=1;c[n>>2]=(c[n>>2]|0)+1;h=c[p+236>>2]|0;if(h|0)c[h+12>>2]=7}if(!g){t=0;Ra=u;return t|0}}else{c[g+16>>2]=g+20+(l<<2);b[g+6>>1]=k;b[g+8>>1]=l;a[g+4>>0]=a[p+78>>0]|0;c[g+12>>2]=p;c[g>>2]=1;gw(g+24|0,0,m+-4|0)|0}if((s|0)<=0){t=g;Ra=u;return t|0}o=g+16|0;m=p+8|0;n=q+4|0;l=0;do{k=r+4+(l*20|0)|0;i=c[k>>2]|0;if(!(c[i+4>>2]&256)){h=Cl(d,f,(e[r+4+(l*20|0)+16>>1]|0)+-1|0)|0;if(!h)h=c[m>>2]|0;j=c[h>>2]|0;c[q>>2]=j;if(j){p=(Eu(j)|0)&1073741823;c[n>>2]=p;if((p|0)!=0?(t=oj(c[d>>2]|0,106,q,0)|0,(t|0)!=0):0){c[t+12>>2]=i;i=t+4|0;c[i>>2]=c[i>>2]|4352;i=t}}else c[n>>2]=0;c[k>>2]=i}else h=Yi(d,i)|0;c[g+20+(l<<2)>>2]=h;a[(c[o>>2]|0)+l>>0]=a[r+4+(l*20|0)+12>>0]|0;l=l+1|0}while((l|0)!=(s|0));Ra=u;return g|0}function El(d,e,f,g,h,i,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var 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;A=d+8|0;F=c[A>>2]|0;D=F+108|0;E=c[D>>2]|0;u=d+56|0;C=c[u>>2]|0;v=C+-1|0;c[u>>2]=v;do if(i|0){u=F+112|0;if((c[u>>2]|0)>(E|0)){c[D>>2]=E+1;q=c[F+104>>2]|0;a[q+(E*20|0)>>0]=20;b[q+(E*20|0)+2>>1]=0;c[q+(E*20|0)+4>>2]=i;c[q+(E*20|0)+8>>2]=0;c[q+(E*20|0)+12>>2]=0;c[q+(E*20|0)+16>>2]=0;a[q+(E*20|0)+1>>0]=0;q=E}else q=Di(F,20,i,0,0)|0;r=f+8|0;l=c[r>>2]|0;t=i+1|0;s=f+12|0;m=c[s>>2]|0;p=(j|0)==0;if(!p)c[j>>2]=(c[j>>2]|0)+1;n=c[D>>2]|0;if((c[u>>2]|0)>(n|0)){c[D>>2]=n+1;o=c[F+104>>2]|0;a[o+(n*20|0)>>0]=87;b[o+(n*20|0)+2>>1]=0;c[o+(n*20|0)+4>>2]=l;c[o+(n*20|0)+8>>2]=t;c[o+(n*20|0)+12>>2]=m;c[o+(n*20|0)+16>>2]=0;a[o+(n*20|0)+1>>0]=0}else n=Di(F,87,l,t,m)|0;l=c[F>>2]|0;do if(!(a[l+81>>0]|0)){if((n|0)<0)l=(c[D>>2]|0)+-1|0;else l=n;m=c[F+104>>2]|0;o=m+(l*20|0)+1|0;if(a[o>>0]|0){Ei(F,m+(l*20|0)|0,j,-9);break}if(!p){c[m+(l*20|0)+16>>2]=j;a[o>>0]=-9}}else if(!(p|(c[l+480>>2]|0)!=0)?(p=(c[j>>2]|0)+-1|0,c[j>>2]=p,(p|0)==0):0){l=c[j+12>>2]|0;if(l|0){if(c[l+480>>2]|0){Xd(l,j);break}p=j;if((c[l+304>>2]|0)>>>0<=p>>>0?(c[l+308>>2]|0)>>>0>p>>>0:0){p=l+300|0;c[j>>2]=c[p>>2];c[p>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{p=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);l=n+2|0;m=c[D>>2]|0;if((c[u>>2]|0)>(m|0)){c[D>>2]=m+1;j=c[F+104>>2]|0;a[j+(m*20|0)>>0]=16;b[j+(m*20|0)+2>>1]=0;c[j+(m*20|0)+4>>2]=l;c[j+(m*20|0)+8>>2]=v;c[j+(m*20|0)+12>>2]=l;c[j+(m*20|0)+16>>2]=0;a[j+(m*20|0)+1>>0]=0}else Di(F,16,l,v,l)|0;n=c[D>>2]|0;if(!(a[(c[F>>2]|0)+81>>0]|0))l=(c[F+104>>2]|0)+(((q|0)<0?n+-1|0:q)*20|0)|0;else l=59308;c[l+8>>2]=n;m=c[r>>2]|0;l=(c[s>>2]|0)+-1|0;if((c[u>>2]|0)>(n|0)){c[D>>2]=n+1;s=c[F+104>>2]|0;a[s+(n*20|0)>>0]=78;b[s+(n*20|0)+2>>1]=0;c[s+(n*20|0)+4>>2]=m;c[s+(n*20|0)+8>>2]=t;c[s+(n*20|0)+12>>2]=l;c[s+(n*20|0)+16>>2]=0;a[s+(n*20|0)+1>>0]=0}else Di(F,78,m,t,l)|0;l=c[D>>2]|0;if((c[u>>2]|0)>(l|0)){c[D>>2]=l+1;u=c[F+104>>2]|0;a[u+(l*20|0)>>0]=70;b[u+(l*20|0)+2>>1]=0;c[u+(l*20|0)+4>>2]=1;c[u+(l*20|0)+8>>2]=i;c[u+(l*20|0)+12>>2]=0;c[u+(l*20|0)+16>>2]=0;a[u+(l*20|0)+1>>0]=0;break}else{Di(F,70,1,i,0)|0;break}}while(0);if(a[(c[d>>2]|0)+81>>0]|0){F=0;return F|0}l=c[e+16>>2]|0;do if((l|0)>0){m=c[D>>2]|0;if((c[F+112>>2]|0)>(m|0)){c[D>>2]=m+1;i=c[F+104>>2]|0;a[i+(m*20|0)>>0]=47;b[i+(m*20|0)+2>>1]=0;c[i+(m*20|0)+4>>2]=l;c[i+(m*20|0)+8>>2]=v;c[i+(m*20|0)+12>>2]=1;c[i+(m*20|0)+16>>2]=0;a[i+(m*20|0)+1>>0]=0;break}else{Di(F,47,l,v,1)|0;break}}while(0);a:do switch(a[g>>0]|0){case 12:{q=d+19|0;m=a[q>>0]|0;if(m<<24>>24){B=m+-1<<24>>24;a[q>>0]=B;l=c[d+148+((B&255)<<2)>>2]|0;if(!(B<<24>>24))w=48;else{j=m+-2<<24>>24;a[q>>0]=j;p=l;j=c[d+148+((j&255)<<2)>>2]|0}}else{w=d+44|0;l=(c[w>>2]|0)+1|0;c[w>>2]=l;w=48}if((w|0)==48){p=d+44|0;j=(c[p>>2]|0)+1|0;c[p>>2]=j;p=l}n=c[f+8>>2]|0;l=c[f+12>>2]|0;m=c[D>>2]|0;o=F+112|0;if((c[o>>2]|0)>(m|0)){c[D>>2]=m+1;f=c[F+104>>2]|0;a[f+(m*20|0)>>0]=92;b[f+(m*20|0)+2>>1]=0;c[f+(m*20|0)+4>>2]=n;c[f+(m*20|0)+8>>2]=l;c[f+(m*20|0)+12>>2]=p;c[f+(m*20|0)+16>>2]=0;a[f+(m*20|0)+1>>0]=0}else Di(F,92,n,l,p)|0;l=g+4|0;m=c[l>>2]|0;n=c[D>>2]|0;if((c[o>>2]|0)>(n|0)){c[D>>2]=n+1;g=c[F+104>>2]|0;a[g+(n*20|0)>>0]=121;b[g+(n*20|0)+2>>1]=0;c[g+(n*20|0)+4>>2]=m;c[g+(n*20|0)+8>>2]=j;c[g+(n*20|0)+12>>2]=0;c[g+(n*20|0)+16>>2]=0;a[g+(n*20|0)+1>>0]=0}else Di(F,121,m,j,0)|0;l=c[l>>2]|0;m=c[D>>2]|0;if((c[o>>2]|0)>(m|0)){c[D>>2]=m+1;g=c[F+104>>2]|0;a[g+(m*20|0)>>0]=122;b[g+(m*20|0)+2>>1]=0;c[g+(m*20|0)+4>>2]=l;c[g+(m*20|0)+8>>2]=p;c[g+(m*20|0)+12>>2]=j;c[g+(m*20|0)+16>>2]=0;a[g+(m*20|0)+1>>0]=0}else Di(F,122,l,p,j)|0;l=c[D>>2]|0;if((l|0)>0)b[(c[F+104>>2]|0)+((l+-1|0)*20|0)+2>>1]=8;if(j|0?(y=a[q>>0]|0,(y&255)<8):0){a[q>>0]=y+1<<24>>24;c[d+148+((y&255)<<2)>>2]=j}if(p|0?(z=a[q>>0]|0,(z&255)<8):0){a[q>>0]=z+1<<24>>24;c[d+148+((z&255)<<2)>>2]=p}break}case 11:{t=d+19|0;l=a[t>>0]|0;if(!(l<<24>>24)){A=d+44|0;s=(c[A>>2]|0)+1|0;c[A>>2]=s}else{s=l+-1<<24>>24;a[t>>0]=s;s=c[d+148+((s&255)<<2)>>2]|0}j=f+8|0;m=c[j>>2]|0;q=f+12|0;o=c[q>>2]|0;p=c[g+16>>2]|0;l=c[D>>2]|0;r=F+112|0;if((c[r>>2]|0)>(l|0)){c[D>>2]=l+1;f=c[F+104>>2]|0;a[f+(l*20|0)>>0]=92;b[f+(l*20|0)+2>>1]=0;c[f+(l*20|0)+4>>2]=m;c[f+(l*20|0)+8>>2]=o;c[f+(l*20|0)+12>>2]=s;c[f+(l*20|0)+16>>2]=0;a[f+(l*20|0)+1>>0]=0}else l=Di(F,92,m,o,s)|0;m=c[F>>2]|0;do if(a[m+81>>0]|0){if((o|0)!=-12)kg(m,o,p)}else{if((l|0)<0)l=(c[D>>2]|0)+-1|0;m=c[F+104>>2]|0;n=m+(l*20|0)|0;if((o|0)<=-1?(x=m+(l*20|0)+1|0,(a[x>>0]|0)==0):0){if((o|0)==-3){c[m+(l*20|0)+16>>2]=p;a[x>>0]=-3;break}if(!p)break;c[m+(l*20|0)+16>>2]=p;a[x>>0]=o;if((o|0)!=-12)break;f=p+12|0;c[f>>2]=(c[f>>2]|0)+1;break}Ei(F,n,p,o)}while(0);o=c[g+4>>2]|0;m=c[j>>2]|0;n=c[q>>2]|0;l=c[D>>2]|0;if((c[r>>2]|0)>(l|0)){c[D>>2]=l+1;g=c[F+104>>2]|0;a[g+(l*20|0)>>0]=-124;b[g+(l*20|0)+2>>1]=0;c[g+(l*20|0)+4>>2]=o;c[g+(l*20|0)+8>>2]=s;c[g+(l*20|0)+12>>2]=m;c[g+(l*20|0)+16>>2]=0;a[g+(l*20|0)+1>>0]=0}else l=Di(F,132,o,s,m)|0;if(!(a[(c[F>>2]|0)+81>>0]|0)){g=c[F+104>>2]|0;a[g+(l*20|0)+1>>0]=-3;c[g+(l*20|0)+16>>2]=n}if(s|0?(B=a[t>>0]|0,(B&255)<8):0){a[t>>0]=B+1<<24>>24;c[d+148+((B&255)<<2)>>2]=s}break}case 10:{p=c[f+8>>2]|0;o=c[g+4>>2]|0;l=c[A>>2]|0;m=l+108|0;n=c[m>>2]|0;if((c[l+112>>2]|0)>(n|0)){c[m>>2]=n+1;d=c[l+104>>2]|0;a[d+(n*20|0)>>0]=77;b[d+(n*20|0)+2>>1]=0;c[d+(n*20|0)+4>>2]=p;c[d+(n*20|0)+8>>2]=o;c[d+(n*20|0)+12>>2]=1;c[d+(n*20|0)+16>>2]=0;a[d+(n*20|0)+1>>0]=0;break a}else{Di(l,77,p,o,1)|0;break a}}case 13:{j=g+8|0;l=c[j>>2]|0;q=f+12|0;if(!l){p=c[q>>2]|0;do if((p|0)==1){l=d+19|0;m=a[l>>0]|0;if(!(m<<24>>24)){d=d+44|0;l=(c[d>>2]|0)+1|0;c[d>>2]=l;break}else{B=m+-1<<24>>24;a[l>>0]=B;l=c[d+148+((B&255)<<2)>>2]|0;break}}else{m=d+32|0;l=c[m>>2]|0;n=d+28|0;o=c[n>>2]|0;if((o|0)<(p|0)){d=d+44|0;l=c[d>>2]|0;c[d>>2]=l+p;l=l+1|0;break}else{c[m>>2]=l+p;c[n>>2]=o-p;break}}while(0);c[j>>2]=l;c[g+12>>2]=p}j=c[f+8>>2]|0;p=c[q>>2]|0;m=c[A>>2]|0;n=m+108|0;o=c[n>>2]|0;if((c[m+112>>2]|0)>(o|0)){c[n>>2]=o+1;d=c[m+104>>2]|0;a[d+(o*20|0)>>0]=77;b[d+(o*20|0)+2>>1]=0;c[d+(o*20|0)+4>>2]=j;c[d+(o*20|0)+8>>2]=l;c[d+(o*20|0)+12>>2]=p;c[d+(o*20|0)+16>>2]=0;a[d+(o*20|0)+1>>0]=0}else Di(m,77,j,l,p)|0;l=c[g+4>>2]|0;m=c[D>>2]|0;if((c[F+112>>2]|0)>(m|0)){c[D>>2]=m+1;d=c[F+104>>2]|0;a[d+(m*20|0)>>0]=14;b[d+(m*20|0)+2>>1]=0;c[d+(m*20|0)+4>>2]=l;c[d+(m*20|0)+8>>2]=0;c[d+(m*20|0)+12>>2]=0;c[d+(m*20|0)+16>>2]=0;a[d+(m*20|0)+1>>0]=0;break a}else{Di(F,14,l,0,0)|0;break a}}default:{n=c[f+8>>2]|0;l=c[f+12>>2]|0;m=c[D>>2]|0;if((c[F+112>>2]|0)>(m|0)){c[D>>2]=m+1;d=c[F+104>>2]|0;a[d+(m*20|0)>>0]=81;b[d+(m*20|0)+2>>1]=0;c[d+(m*20|0)+4>>2]=n;c[d+(m*20|0)+8>>2]=l;c[d+(m*20|0)+12>>2]=0;c[d+(m*20|0)+16>>2]=0;a[d+(m*20|0)+1>>0]=0;break a}else{Di(F,81,n,l,0)|0;break a}}}while(0);l=c[e+12>>2]|0;do if(l|0){m=c[D>>2]|0;if((c[F+112>>2]|0)>(m|0)){c[D>>2]=m+1;e=c[F+104>>2]|0;a[e+(m*20|0)>>0]=49;b[e+(m*20|0)+2>>1]=0;c[e+(m*20|0)+4>>2]=l;c[e+(m*20|0)+8>>2]=k;c[e+(m*20|0)+12>>2]=0;c[e+(m*20|0)+16>>2]=0;a[e+(m*20|0)+1>>0]=0;break}else{Di(F,49,l,k,0)|0;break}}while(0);m=c[F+12>>2]|0;l=0-C|0;if(((c[m+56>>2]|0)+(c[m+60>>2]|0)|0)<0)mk(m,F,l);else c[(c[m+64>>2]|0)+(l<<2)>>2]=c[D>>2];l=c[D>>2]|0;if((c[F+112>>2]|0)>(l|0)){c[D>>2]=l+1;F=c[F+104>>2]|0;a[F+(l*20|0)>>0]=66;b[F+(l*20|0)+2>>1]=0;c[F+(l*20|0)+4>>2]=h;c[F+(l*20|0)+8>>2]=0;c[F+(l*20|0)+12>>2]=0;c[F+(l*20|0)+16>>2]=0;a[F+(l*20|0)+1>>0]=0;F=E;return F|0}else{Di(F,66,h,0,0)|0;F=E;return F|0}return 0}function Fl(d,f){d=d|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,y=0,z=0,A=0;A=Ra;Ra=Ra+32|0;o=A;if(!f){Ra=A;return}if(c[f+4>>2]&1|0){Ra=A;return}switch(a[f>>0]|0){case 44:{Fl(d,c[f+16>>2]|0);Fl(d,c[f+12>>2]|0);Ra=A;return}case 53:{g=c[f+16>>2]|0;f=c[f+12>>2]|0;do if((a[g>>0]|0)==-94?(j=g+4|0,(c[j>>2]&8|0)==0):0){i=o+20|0;a[i>>0]=1;c[o+4>>2]=127;c[o+8>>2]=128;c[o+24>>2]=0;if(f){_j(o,f)|0;if(!(a[i>>0]|0))break}i=c[d>>2]|0;t=f+4|0;if(!(c[t>>2]&256))if((c[j>>2]&256|0)==0?(k=Yi(i,f)|0,(k|0)!=0):0){l=k;u=14}else{m=g;u=13}else{m=f;u=13}if((u|0)==13?(n=Yi(i,m)|0,n|0):0){l=n;u=14}if((u|0)==14){if((c[l+12>>2]|0)!=78)break;if(c[l+8>>2]|0)break}m=d+4|0;k=c[m>>2]|0;n=d+12|0;do if((k|0)>0){l=c[n>>2]|0;i=c[g+28>>2]|0;j=g+32|0;h=0;while(1){z=c[l+(h<<1<<2)>>2]|0;if((c[z+28>>2]|0)==(i|0)?(b[z+32>>1]|0)==(b[j>>1]|0):0){u=107;break}h=h+1|0;if((h|0)>=(k|0)){u=22;break}}if((u|0)==22){x=n;r=l;break}else if((u|0)==107){Ra=A;return}}else{x=n;r=c[n>>2]|0}while(0);k=k+1|0;c[m>>2]=k;l=c[c[d>>2]>>2]|0;k=k<<3;a:do if(!r){b:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))u=34;else{u=48;break a}else{do if(!(0<0|(0==0?(e[l+276>>1]|0)>>>0>>0:0))){h=l+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];s=l+284|0;c[s>>2]=(c[s>>2]|0)+1;s=i;break b}h=l+296|0;i=c[h>>2]|0;if(!i){h=l+292|0;break}else{c[h>>2]=c[i>>2];s=l+284|0;c[s>>2]=(c[s>>2]|0)+1;s=i;break b}}else h=l+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;u=34}while(0);if((u|0)==34)s=_d(l,k,0)|0;c[x>>2]=s;if(s|0){w=s;u=51}}else{i=r;j=l+304|0;if(((c[j>>2]|0)>>>0<=i>>>0?(c[l+308>>2]|0)>>>0>i>>>0:0)?!(0<0|(0==0?(e[l+276>>1]|0)>>>0>>0:0)):0)h=r;else{h=Zd(l,r,k,0)|0;if(!h){if(c[l+480>>2]|0){Xd(l,r);u=48;break}if((c[j>>2]|0)>>>0<=i>>>0?(c[l+308>>2]|0)>>>0>i>>>0:0){u=l+300|0;c[r>>2]=c[u>>2];c[u>>2]=r;u=48;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);u=48;break}else{u=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);u=48;break}}}c[x>>2]=h;w=h;u=51}while(0);if((u|0)==48)c[x>>2]=0;else if((u|0)==51){if(c[t>>2]&8)f=c[f+12>>2]|0;z=c[m>>2]<<1;c[w+(z+-2<<2)>>2]=g;c[(c[n>>2]|0)+(z+-1<<2)>>2]=f;Ra=A;return}c[m>>2]=0;Ra=A;return}while(0);if((a[f>>0]|0)!=-94){Ra=A;return}k=f+4|0;if(c[k>>2]&8|0){Ra=A;return}i=o+20|0;a[i>>0]=1;c[o+4>>2]=127;c[o+8>>2]=128;c[o+24>>2]=0;l=(g|0)==0;if(!l){_j(o,g)|0;if(!(a[i>>0]|0)){Ra=A;return}}j=c[d>>2]|0;do if(!(c[k>>2]&256)){if(!l?c[g+4>>2]&256|0:0){p=Yi(j,g)|0;u=66;break}i=Yi(j,f)|0;if(!i){p=Yi(j,g)|0;u=66}else{q=i;u=67}}else{p=Yi(j,f)|0;u=66}while(0);if((u|0)==66?p|0:0){q=p;u=67}if((u|0)==67){if((c[q+12>>2]|0)!=78){Ra=A;return}if(c[q+8>>2]|0){Ra=A;return}}n=d+4|0;l=c[n>>2]|0;o=d+12|0;do if((l|0)>0){m=c[o>>2]|0;j=c[f+28>>2]|0;k=f+32|0;i=0;while(1){x=c[m+(i<<1<<2)>>2]|0;if((c[x+28>>2]|0)==(j|0)?(b[x+32>>1]|0)==(b[k>>1]|0):0){u=107;break}i=i+1|0;if((i|0)>=(l|0)){u=75;break}}if((u|0)==75){z=o;v=m;break}else if((u|0)==107){Ra=A;return}}else{z=o;v=c[o>>2]|0}while(0);l=l+1|0;c[n>>2]=l;m=c[c[d>>2]>>2]|0;l=l<<3;c:do if(!v){d:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))u=87;else{u=101;break c}else{do if(!(0<0|(0==0?(e[m+276>>1]|0)>>>0>>0:0))){i=m+300|0;j=c[i>>2]|0;if(j|0){c[i>>2]=c[j>>2];y=m+284|0;c[y>>2]=(c[y>>2]|0)+1;y=j;break d}i=m+296|0;j=c[i>>2]|0;if(!j){i=m+292|0;break}else{c[i>>2]=c[j>>2];y=m+284|0;c[y>>2]=(c[y>>2]|0)+1;y=j;break d}}else i=m+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;u=87}while(0);if((u|0)==87)y=_d(m,l,0)|0;c[z>>2]=y;if(y|0){h=y;u=104}}else{j=v;k=m+304|0;if(((c[k>>2]|0)>>>0<=j>>>0?(c[m+308>>2]|0)>>>0>j>>>0:0)?!(0<0|(0==0?(e[m+276>>1]|0)>>>0>>0:0)):0)h=v;else{i=Zd(m,v,l,0)|0;if(!i){if(c[m+480>>2]|0){Xd(m,v);u=101;break}if((c[k>>2]|0)>>>0<=j>>>0?(c[m+308>>2]|0)>>>0>j>>>0:0){u=m+300|0;c[v>>2]=c[u>>2];c[u>>2]=v;u=101;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](v);u=101;break}else{u=Wa[c[29352>>2]&127](v)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](v);u=101;break}}else h=i}c[z>>2]=h;u=104}while(0);if((u|0)==101)c[z>>2]=0;else if((u|0)==104){if(c[g+4>>2]&8)g=c[g+12>>2]|0;z=c[n>>2]<<1;c[h+(z+-2<<2)>>2]=f;c[(c[o>>2]|0)+(z+-1<<2)>>2]=g;Ra=A;return}c[n>>2]=0;Ra=A;return}default:{Ra=A;return}}}function Gl(d,e){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;if((a[e>>0]|0)!=-94){e=0;return e|0}k=e+4|0;l=c[k>>2]|0;if(l&8|0){e=0;return e|0}m=c[d+24>>2]|0;f=c[m+4>>2]|0;if((f|0)<=0){e=1;return e|0}g=c[m+12>>2]|0;h=e+28|0;i=e+32|0;d=0;while(1){j=d<<1;o=c[g+(j<<2)>>2]|0;if(((o|0)!=(e|0)?(c[o+28>>2]|0)==(c[h>>2]|0):0)?(b[o+32>>1]|0)==(b[i>>1]|0):0)break;d=d+1|0;if((d|0)>=(f|0)){d=1;n=12;break}}if((n|0)==12)return d|0;d=m+8|0;c[d>>2]=(c[d>>2]|0)+1;c[k>>2]=l&-8388617|8;d=c[g+((j|1)<<2)>>2]|0;if(!d)d=0;else d=dk(c[c[m>>2]>>2]|0,d,0,0)|0;c[e+12>>2]=d;o=1;return o|0}function Hl(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=(c|0)<(e|0)?c:e;g=Lu(d,f,h)|0;if(g|0){e=g;return e|0}if(b|0){g=d+h|0;b=c-h|0;a:do if((b|0)>0)while(1){d=b+-1|0;if((a[g+d>>0]|0)!=32)break a;if((b|0)>1)b=d;else{b=d;break}}while(0);if(!b){g=f+h|0;b=e-h|0;b:do if((b|0)>0)while(1){d=b+-1|0;if((a[g+d>>0]|0)!=32)break b;if((b|0)>1)b=d;else{b=d;break}}while(0);if(!b){e=0;return e|0}}}e=c-e|0;return e|0}function Il(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=b+8|0;a:do if(d|0){while(1){f=d;while(1){g=c[f+4>>2]|0;if(!(g&4096))break;if(!(g&262144))f=f+12|0;else f=(c[f+20>>2]|0)+4|0;f=c[f>>2]|0;if(!f)break a}a[h>>0]=e;if((a[f>>0]|0)!=e<<24>>24)break;Il(b,c[f+12>>2]|0,e);d=c[f+16>>2]|0;if(!d)break a}Ml(b,d,0)|0;return}while(0);a[h>>0]=e;return}function Jl(f,g){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,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=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,_=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;na=Ra;Ra=Ra+16|0;ba=na+8|0;ja=na;aa=c[f>>2]|0;ka=c[aa>>2]|0;la=a[f+46>>0]|0;ma=la&255;Y=(la&255)<2?1:la<<24>>24==2?5:10;ia=f+8|0;h=c[ia>>2]|0;da=g<<16>>16==0;if(da|(h|0)==0)W=0;else W=c[h>>2]|0;l=Y<<1;m=W<<1;j=m+(G(l,(ma<<2)+32|0)|0)|0;k=((j|0)<0)<<31>>31;a:do if(c[ka+272>>2]|0)if(!(a[ka+81>>0]|0))V=13;else{Ra=na;return}else{do if(!(0>>0|(0==(k|0)?(e[ka+276>>1]|0)>>>0>>0:0))){h=ka+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];fa=ka+284|0;c[fa>>2]=(c[fa>>2]|0)+1;fa=i;break a}h=ka+296|0;i=c[h>>2]|0;if(!i){h=ka+292|0;break}else{c[h>>2]=c[i>>2];fa=ka+284|0;c[fa>>2]=(c[fa>>2]|0)+1;fa=i;break a}}else h=ka+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;V=13}while(0);if((V|0)==13)fa=_d(ka,j,k)|0;if(!fa){Ra=na;return}o=fa+(Y<<5)|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;c[o+24>>2]=0;c[o+28>>2]=0;h=l;j=o+(Y<<5)|0;i=fa;while(1){c[i+24>>2]=j;j=j+(ma<<2)|0;if((h|0)<=1)break;else{h=h+-1|0;i=i+32|0}}h=(W|0)!=0;if(h)gw(j|0,0,m|0)|0;else j=0;ca=c[aa+132>>2]|0;b[fa+(Y<<5)+16>>1]=ca>>>0<48?ca:48;if(h)a[fa+(Y<<5)+22>>0]=la<<24>>24==0?W&255:-1;ca=la<<24>>24==0;b:do if(!ca){Q=f+60|0;R=f+44|0;S=Y>>>0>1;T=f+20|0;U=((g&65535)<<16)+1048576|0;P=0;l=0;k=0;h=0;i=fa;m=1;while(1){if((m|0)>0){K=P&65535;M=P<<2;N=i+18|0;O=i+16|0;p=0;J=0;I=o;while(1){n=c[Q>>2]|0;if(!n)n=p;else{C=I+22|0;D=I+16|0;E=I+20|0;F=I+8|0;H=I+24|0;x=p;while(1){w=a[C>>0]|0;B=ja;c[B>>2]=0;c[B+4>>2]=0;B=n;v=I;u=c[v>>2]|0;v=c[v+4>>2]|0;c:do if((((c[B>>2]&~u|0)==0?(c[B+4>>2]&~v|0)==0:0)?(Z=n+8|0,$=Z,_=c[$>>2]|0,$=c[$+4>>2]|0,(_&u|0)==0&($&v|0)==0):0)?(X=b[D>>1]|0,!(X<<16>>16<3?(c[n+36>>2]&16384|0)!=0:0)):0){p=b[n+18>>1]|0;t=X&65535;s=t+(e[n+20>>1]|0)|0;q=s&65535;r=p<<16>>16;s=s<<16>>16;do if(p<<16>>16>16){if((r+49|0)<(s|0)){p=q;break}if((r+31|0)<(s|0)){p=s+1&65535;break}else{p=s+(d[18112+(s-r)>>0]|0)&65535;break}}else{if((s+49|0)<(r|0))break;if((s+31|0)<(r|0)){p=r+1&65535;break}else{p=(d[18112+(r-s)>>0]|0)+r&65535;break}}while(0);q=b[E>>1]|0;r=p<<16>>16;s=q<<16>>16;do if(p<<16>>16>16){if((r+49|0)<(s|0)){p=q;break}if((r+31|0)<(s|0)){p=s+1&65535;break}else{p=(d[18112+(s-r)>>0]|0)+s&65535;break}}else{if((s+49|0)<(r|0))break;if((s+31|0)<(r|0)){p=r+1&65535;break}else{p=(d[18112+(r-s)>>0]|0)+r&65535;break}}while(0);A=(e[n+22>>1]|0)+t|0;B=A&65535;z=_|u;y=$|v;if(w<<24>>24<0)w=hm(f,c[ia>>2]|0,I,b[R>>1]|0,K,n,ja)|0;else{t=F;u=c[t+4>>2]|0;v=ja;c[v>>2]=c[t>>2];c[v+4>>2]=u}r=w<<24>>24;if(w<<24>>24>-1&(W|0)>(r|0)){v=j+(r<<1)|0;q=b[v>>1]|0;if(!(q<<16>>16)){q=((W-r|0)*100|0)/(W|0)|0;r=((q|0)<0)<<31>>31;do if(q>>>0<8){if(q>>>0<2){u=-4325376;break}s=40;do{s=(s&65535)+65526|0;q=cw(q|0,r|0,1)|0;r=L()|0}while(r>>>0<0|(r|0)==0&q>>>0<8);s=s&65535;V=66}else{if(q>>>0>255){s=40;do{s=(s&65535)+40|0;V=q;q=bw(q|0,r|0,4)|0;u=r;r=L()|0}while(u>>>0>0|(u|0)==0&V>>>0>4095);s=s&65535}else s=40;if(!(r>>>0>0|(r|0)==0&q>>>0>15)){V=66;break}do{s=(s&65535)+10&65535;V=q;q=bw(q|0,r|0,1)|0;u=r;r=L()|0}while(u>>>0>0|(u|0)==0&V>>>0>31);V=66}while(0);if((V|0)==66){V=0;u=((s&65535)+65526+(e[3648+((q&7)<<1)>>1]|0)<<16)+-4325376|0}if(!(b[R>>1]&16384))r=g;else{r=b[T>>1]|0;r=r<<16>>16>16?r:g}if(r<<16>>16<11)q=0;else{q=r<<16>>16;t=((q|0)<0)<<31>>31;if((r&65535)>255){s=40;r=t;do{s=(s&65535)+40|0;t=q;q=bw(q|0,r|0,4)|0;oa=r;r=L()|0}while(oa>>>0>0|(oa|0)==0&t>>>0>4095);s=s&65535}else{s=40;r=t}if(r>>>0>0|(r|0)==0&q>>>0>15){do{s=(s&65535)+10&65535;oa=q;q=bw(q|0,r|0,1)|0;t=r;r=L()|0}while(t>>>0>0|(t|0)==0&oa>>>0>31);r=s}else r=s;q=(r&65535)+65493+(e[3648+((q&7)<<1)>>1]|0)&65535}q=q+((U+u|0)>>>16)&65535;b[v>>1]=q}r=p<<16>>16;s=q<<16>>16;do if(p<<16>>16>16){if((r+49|0)<(s|0))break;if((r+31|0)<(s|0)){q=s+1&65535;break}else{q=(d[18112+(s-r)>>0]|0)+s&65535;break}}else{if((s+49|0)<(r|0)){q=p;break}if((s+31|0)<(r|0)){q=r+1&65535;break}else{q=(d[18112+(r-s)>>0]|0)+r&65535;break}}while(0);v=p;u=(q&65535)+5&65535}else{v=(p&65535)+65534&65535;u=p}d:do if((x|0)>0){p=0;t=i;while(1){oa=t;if(((c[oa>>2]|0)==(z|0)?(c[oa+4>>2]|0)==(y|0):0)?(a[t+22>>0]^w)<<24>>24>-1:0)break;p=p+1|0;if((p|0)>=(x|0)){V=96;break d}else t=t+32|0}q=t+22|0;r=t+18|0;p=b[r>>1]|0;if(p<<16>>16>16){p=x;break c}if(p<<16>>16!=u<<16>>16){s=t;p=t;break}s=b[t+16>>1]|0;p=A<<16>>16;if((p|0)>(s|0)){p=x;break c}if((p|0)!=(s|0)){s=t;p=t;break}if((b[t+20>>1]|0)>v<<16>>16){s=t;p=t}else{p=x;break c}}else V=96;while(0);if((V|0)==96){V=0;p=(x|0)<(Y|0);if(!p){if(u<<16>>16>k<<16>>16){p=x;break}if(!(u<<16>>16!=k<<16>>16?1:v<<16>>16>16)){p=x;break}}q=p?x:l;oa=i+(q<<5)|0;s=oa;x=x+(p&1)|0;r=i+(q<<5)+18|0;q=i+(q<<5)+22|0;p=oa}oa=I;y=Z;A=c[y+4>>2]|c[oa+4>>2];z=p;c[z>>2]=c[y>>2]|c[oa>>2];c[z+4>>2]=A;z=ja;A=c[z+4>>2]|0;oa=s+8|0;c[oa>>2]=c[z>>2];c[oa+4>>2]=A;b[s+16>>1]=B;b[r>>1]=u;b[s+20>>1]=v;a[q>>0]=w;oa=s+24|0;ew(c[oa>>2]|0,c[H>>2]|0,M|0)|0;c[(c[oa>>2]|0)+(P<<2)>>2]=n;if((x|0)<(Y|0)){p=x;break}k=b[N>>1]|0;h=b[O>>1]|0;if(!S){p=x;l=0;break}r=i;s=1;l=0;do{q=b[r+50>>1]|0;do if(q<<16>>16<=k<<16>>16){if(q<<16>>16!=k<<16>>16)break;p=b[r+52>>1]|0;if(p<<16>>16>h<<16>>16){h=p;V=112}}else{h=b[r+52>>1]|0;V=112}while(0);r=r+32|0;if((V|0)==112){V=0;l=s;k=q}s=s+1|0}while((s|0)!=(Y|0));p=x}else p=x;while(0);n=c[n+52>>2]|0;if(!n){n=p;break}else x=p}}J=J+1|0;if((J|0)==(m|0)){m=n;break}else{p=n;I=I+32|0}}}else m=0;P=P+1|0;if((P|0)==(ma|0))break;else{oa=o;o=i;i=oa}}if(m|0){if((m|0)>1){j=1;h=i;do{h=(b[h+18>>1]|0)>(b[i+(j<<5)+18>>1]|0)?i+(j<<5)|0:h;j=j+1|0}while((j|0)!=(m|0));i=h}if(ca){o=i;break}j=c[i+24>>2]|0;k=c[f+4>>2]|0;h=0;while(1){oa=c[j+(h<<2)>>2]|0;c[f+752+(h*80|0)+64>>2]=oa;oa=a[oa+16>>0]|0;a[f+752+(h*80|0)+44>>0]=oa;c[f+752+(h*80|0)+4>>2]=c[k+8+((oa&255)*72|0)+40>>2];h=h+1|0;if((h|0)==(ma|0)){o=i;break b}}}cd(aa,43687,ba);if(ka|0){if(c[ka+480>>2]|0){Xd(ka,fa);Ra=na;return}oa=fa;if((c[ka+304>>2]|0)>>>0<=oa>>>0?(c[ka+308>>2]|0)>>>0>oa>>>0:0){oa=ka+300|0;c[fa>>2]=c[oa>>2];c[oa>>2]=fa;Ra=na;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](fa);Ra=na;return}else{oa=Wa[c[29352>>2]&127](fa)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](fa);Ra=na;return}}while(0);n=f+44|0;if(((b[n>>1]&384)==256?(ea=f+51|0,!(da|(a[ea>>0]|0)!=0)):0)?(da=f+12|0,oa=ma+-1|0,oa=(hm(f,c[da>>2]|0,o,128,oa&65535,c[(c[o+24>>2]|0)+(oa<<2)>>2]|0,ja)|0)<<24>>24,(c[c[da>>2]>>2]|0)==(oa|0)):0)a[ea>>0]=2;l=f+52|0;a[l>>0]=0;h=c[ia>>2]|0;if(h|0){i=b[n>>1]|0;j=a[o+22>>0]|0;if(!(i&128)){k=f+47|0;a[k>>0]=j;da=o+8|0;ea=c[da+4>>2]|0;m=f+64|0;oa=m;c[oa>>2]=c[da>>2];c[oa+4>>2]=ea;if((j<<24>>24<1?(a[k>>0]=0,!ca):0)?(ga=ma+-1|0,ha=c[(c[o+24>>2]|0)+(ga<<2)>>2]|0,oa=c[ha+36>>2]|0,!((oa&4096|0)!=0|(oa&260|0)==260)):0){oa=ja;c[oa>>2]=0;c[oa+4>>2]=0;oa=(hm(f,h,o,2048,ga&65535,ha,ja)|0)<<24>>24;h=c[ia>>2]|0;if((c[h>>2]|0)==(oa|0)){a[l>>0]=1;ga=ja;ha=c[ga+4>>2]|0;oa=m;c[oa>>2]=c[ga>>2];c[oa+4>>2]=ha}i=b[n>>1]|0}}else if((c[h>>2]|0)==(j<<24>>24|0))a[f+51>>0]=2;if((i&512?(la<<24>>24?(c[h>>2]|0)==(a[f+47>>0]|0):0):0)?(oa=ja,c[oa>>2]=0,c[oa+4>>2]=0,oa=ma+-1|0,oa=(hm(f,h,o,0,oa&65535,c[(c[o+24>>2]|0)+(oa<<2)>>2]|0,ja)|0)<<24>>24,(c[c[ia>>2]>>2]|0)==(oa|0)):0){a[f+48>>0]=1;la=ja;ma=c[la+4>>2]|0;oa=f+64|0;c[oa>>2]=c[la>>2];c[oa+4>>2]=ma}}b[f+72>>1]=b[o+16>>1]|0;if(ka|0){if(c[ka+480>>2]|0){Xd(ka,fa);Ra=na;return}oa=fa;if((c[ka+304>>2]|0)>>>0<=oa>>>0?(c[ka+308>>2]|0)>>>0>oa>>>0:0){oa=ka+300|0;c[fa>>2]=c[oa>>2];c[oa>>2]=fa;Ra=na;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](fa);Ra=na;return}else{oa=Wa[c[29352>>2]&127](fa)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](fa);Ra=na;return}}function Kl(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var 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;E=Ra;Ra=Ra+192|0;o=E+152|0;r=E+144|0;u=E+136|0;t=E+128|0;p=E+120|0;n=E+112|0;m=E+104|0;C=E+160|0;l=E;D=c[f+116>>2]|0;if((a[((D|0)==0?f:D)+199>>0]|0)!=2){Ra=E;return}s=d[h+44>>0]|0;D=c[f+8>>2]|0;k=c[f>>2]|0;x=c[h+64>>2]|0;v=x+36|0;q=c[v>>2]|0;if((q&8192|0)==0?(j=i&65535,(j&32|0)==0):0){i=q&48;do if(!i){if((q&1024|0)==0?b[x+24>>1]|0:0){j=1;break}j=(j&3|0)!=0}else j=1;while(0);B=C+4|0;c[B>>2]=l;c[C>>2]=k;w=C+8|0;c[w>>2]=100;y=C+12|0;c[y>>2]=1e9;z=C+16|0;c[z>>2]=0;a[C+20>>0]=0;A=C+21|0;a[A>>0]=0;h=j?6:4;c[z>>2]=h;ew(l|0,(j?43742:43749)|0,h|0)|0;h=c[g+8+(s*72|0)+20>>2]|0;if(!h){c[n>>2]=c[g+8+(s*72|0)+8>>2];Eb(C,43767,n)}else{c[m>>2]=c[h+20>>2];Eb(C,43754,m)}h=c[g+8+(s*72|0)+12>>2]|0;if(h|0){c[p>>2]=h;Eb(C,43777,p)}do if(!(q&1280)){k=x+32|0;l=c[k>>2]|0;if((c[(c[g+8+(s*72|0)+16>>2]|0)+36>>2]&32|0)!=0?(s=l+55|0,((d[s>>0]|d[s+1>>0]<<8)&3)==2):0)if(j)h=43784;else break;else if(!(q&131072))h=(q&16384|0)==0?((q&64|0)==0?43872:43854):43829;else h=43796;i=c[z>>2]|0;j=i+7|0;if(j>>>0<(c[w>>2]|0)>>>0){c[z>>2]=j;s=(c[B>>2]|0)+i|0;a[s>>0]=a[43881]|0;a[s+1>>0]=a[43882]|0;a[s+2>>0]=a[43883]|0;a[s+3>>0]=a[43884]|0;a[s+4>>0]=a[43885]|0;a[s+5>>0]=a[43886]|0;a[s+6>>0]=a[43887]|0}else wb(C,43881,7);c[t>>2]=c[l>>2];Eb(C,h,t);p=c[k>>2]|0;h=b[x+24>>1]|0;l=b[x+42>>1]|0;i=h&65535;h=h<<16>>16==0;if(h?(c[v>>2]&48|0)==0:0)break;j=c[z>>2]|0;k=j+2|0;if(k>>>0<(c[w>>2]|0)>>>0){c[z>>2]=k;t=(c[B>>2]|0)+j|0;a[t>>0]=32;a[t+1>>0]=40}else wb(C,43974,2);a:do if(h)i=0;else{n=p+4|0;o=p+12|0;m=l&65535;l=0;while(1){h=b[(c[n>>2]|0)+(l<<1)>>1]|0;switch(h<<16>>16){case -2:{h=43996;break}case -1:{h=38132;break}default:h=c[(c[(c[o>>2]|0)+4>>2]|0)+(h<<16>>16<<4)>>2]|0}do if(l|0){j=c[z>>2]|0;k=j+5|0;if(k>>>0<(c[w>>2]|0)>>>0){c[z>>2]=k;t=(c[B>>2]|0)+j|0;a[t>>0]=a[43977]|0;a[t+1>>0]=a[43978]|0;a[t+2>>0]=a[43979]|0;a[t+3>>0]=a[43980]|0;a[t+4>>0]=a[43981]|0;break}else{wb(C,43977,5);break}}while(0);c[u>>2]=h;Eb(C,l>>>0>>0?43988:43983,u);l=l+1|0;if((l|0)==(i|0))break a}}while(0);h=c[v>>2]|0;if(!(h&32))j=i;else{im(C,p,e[x+26>>1]|0,i,i,43905);j=1;h=c[v>>2]|0}if(h&16|0)im(C,p,e[x+28>>1]|0,i,j,43907);h=c[z>>2]|0;i=h+1|0;if(i>>>0<(c[w>>2]|0)>>>0){c[z>>2]=i;a[(c[B>>2]|0)+h>>0]=41;break}else{wb(C,34066,1);break}}else{if((q&256|0)==0|(q&15|0)==0){if(!(q&1024))break;w=c[x+32>>2]|0;c[o>>2]=c[x+24>>2];c[o+4>>2]=w;Eb(C,43947,o);break}if(!(q&5))h=(i|0)==48?43891:(q&32|0)==0?43907:43905;else h=43889;c[r>>2]=h;Eb(C,43909,r)}while(0);h=c[B>>2]|0;if(((h|0)!=0?(a[h+(c[z>>2]|0)>>0]=0,(c[y>>2]|0)!=0):0)?(a[A>>0]&4)==0:0)k=$d(C)|0;else k=c[B>>2]|0;j=D+108|0;h=c[j>>2]|0;i=c[f+212>>2]|0;if((c[D+112>>2]|0)>(h|0)){c[j>>2]=h+1;f=c[D+104>>2]|0;a[f+(h*20|0)>>0]=-85;b[f+(h*20|0)+2>>1]=0;c[f+(h*20|0)+4>>2]=h;c[f+(h*20|0)+8>>2]=i;c[f+(h*20|0)+12>>2]=0;c[f+(h*20|0)+16>>2]=0;a[f+(h*20|0)+1>>0]=0}else h=Di(D,171,h,i,0)|0;i=c[D>>2]|0;do if(!(a[i+81>>0]|0)){if((h|0)<0)h=(c[j>>2]|0)+-1|0;i=c[D+104>>2]|0;j=i+(h*20|0)+1|0;if(a[j>>0]|0){Ei(D,i+(h*20|0)|0,k,-7);break}if(k|0){c[i+(h*20|0)+16>>2]=k;a[j>>0]=-7}}else if(k|0){if(i|0){if(c[i+480>>2]|0){Xd(i,k);break}D=k;if((c[i+304>>2]|0)>>>0<=D>>>0?(c[i+308>>2]|0)>>>0>D>>>0:0){D=i+300|0;c[k>>2]=c[D>>2];c[D>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{D=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-D;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);Ra=E;return}Ra=E;return} -function cr(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;r=Ra;Ra=Ra+16|0;p=r+4|0;j=r;d=c[a>>2]|0;n=c[d>>2]|0;do if(b){if((n+-3|0)>>>0<2){e=b<<2;q=pb(e,0)|0;if(!q){e=7;break}gw(q|0,0,e|0)|0;c[p>>2]=d;if((c[d>>2]|0)==(n|0)){e=d;do e=c[e+12>>2]|0;while((c[e>>2]|0)==(n|0));c[p>>2]=e}else e=d;m=b+-1|0;o=(b|0)>0;a:do if(o){f=0;b:while(1){k=e+8|0;l=c[k>>2]|0;c[k>>2]=0;k=(l|0)==0;if(k)d=0;else c[l+12>>2]=0;e=cr(p,m)|0;if(e|0){k=46;break a}g=c[p>>2]|0;if(g){j=0;e=f;h=c[p>>2]|0;while(1){i=q+(j<<2)|0;f=c[i>>2]|0;if(!f)break;c[e+12>>2]=f;c[e+16>>2]=g;c[f+8>>2]=e;c[g+8>>2]=e;h=e+8|0;f=c[h>>2]|0;c[h>>2]=0;c[i>>2]=0;j=j+1|0;if(!((j|0)<(b|0)&(e|0)!=0))break b;else{g=e;h=e;e=f}}c[p>>2]=h;c[i>>2]=g;c[p>>2]=0;f=e}if(k){k=37;break a}h=l+16|0;e=h;while(1){e=c[e>>2]|0;g=e;if((c[g>>2]|0)==(n|0))e=g+12|0;else break}c[p>>2]=e;i=l+8|0;g=c[h>>2]|0;c[g+8>>2]=c[i>>2];h=c[i>>2]|0;if(!h)d=g;else c[h+12>>2]=g;c[i>>2]=f;f=l}c[p>>2]=e;k=30}else{f=0;while(1){g=e+8|0;j=c[g>>2]|0;c[g>>2]=0;g=(j|0)==0;if(g)d=0;else c[j+12>>2]=0;e=cr(p,m)|0;if(e|0){k=46;break a}e=c[p>>2]|0;if(e|0){k=30;break a}if(g){k=37;break a}h=j+16|0;e=h;while(1){e=c[e>>2]|0;g=e;if((c[g>>2]|0)==(n|0))e=g+12|0;else break}c[p>>2]=e;i=j+8|0;g=c[h>>2]|0;c[g+8>>2]=c[i>>2];h=c[i>>2]|0;if(!h)d=g;else c[h+12>>2]=g;c[i>>2]=f;f=j}}while(0);if((k|0)==30){ar(e);e=18;k=46}else if((k|0)==37){c[p>>2]=0;if(o){h=0;d=0;do{e=q+(h<<2)|0;g=c[e>>2]|0;if(g){if(!d){d=g;e=g+8|0}else{c[f+16>>2]=d;e=c[e>>2]|0;c[f+12>>2]=e;c[e+8>>2]=f;c[d+8>>2]=f;e=f+8|0;d=f;f=c[e>>2]|0}c[e>>2]=0}h=h+1|0}while((h|0)!=(b|0));c[p>>2]=d;e=0}else{e=0;d=0}}if((k|0)==46){if(o){g=0;do{ar(c[q+(g<<2)>>2]|0);g=g+1|0}while((g|0)!=(b|0))}if(f)do{g=f;f=c[f+8>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{b=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}}while((f|0)!=0)}if(!(c[7324]|0))ab[c[29344>>2]&127](q);else{b=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q)}}else{if((n|0)!=2){q=0;b=d;c[a>>2]=b;Ra=r;return q|0}h=d+12|0;g=c[h>>2]|0;c[p>>2]=g;i=d+16|0;f=c[i>>2]|0;c[j>>2]=f;c[h>>2]=0;c[i>>2]=0;c[g+8>>2]=0;c[f+8>>2]=0;g=b+-1|0;e=cr(p,g)|0;do if(!e){e=cr(j,g)|0;if(!e){e=c[p>>2]|0;c[h>>2]=e;c[e+8>>2]=d;e=c[j>>2]|0;c[i>>2]=e;c[e+8>>2]=d;e=0;break}else{f=c[j>>2]|0;k=63;break}}else k=63;while(0);if((k|0)==63){ar(f);ar(c[p>>2]|0)}}if(!e){q=0;b=d;c[a>>2]=b;Ra=r;return q|0}}else e=1;while(0);ar(d);q=e;b=0;c[a>>2]=b;Ra=r;return q|0}function dr(a,b){a=a|0;b=b|0;var d=0;if(!a){d=0;return d|0}d=b;while(1){if((d|0)<0){b=18;a=6;break}d=d+-1|0;b=dr(c[a+12>>2]|0,d)|0;if(b|0){a=6;break}a=c[a+16>>2]|0;if(!a){b=0;a=6;break}}if((a|0)==6)return b|0;return 0}function er(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,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,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;W=Ra;Ra=Ra+32|0;R=W+20|0;S=W+16|0;T=W+12|0;U=W+8|0;V=W+4|0;E=W;F=b+24|0;H=b+20|0;I=b+16|0;J=b+32|0;K=b+8|0;M=b+4|0;N=b+12|0;m=0;j=f;l=1;D=e;e=0;a:while(1){c[E>>2]=0;c[F>>2]=0;b:do if((j|0)>0){n=j;k=D;while(1){switch(a[k>>0]|0){case 12:case 11:case 13:case 10:case 9:case 32:break;default:{C=k;break b}}i=n+-1|0;k=k+1|0;if((n|0)>1)n=i;else{w=6;break b}}}else{i=j;k=D;w=6}while(0);if((w|0)==6){w=0;if(!i){k=101;i=0;w=171;break}else{n=i;C=k}}i=C+4|0;k=C+5|0;c:do if((n|0)<2)w=187;else{if(!(Lu(C,54896,2)|0))switch(a[C+2>>0]|0){case 0:case 34:case 40:case 41:case 12:case 11:case 13:case 10:case 9:case 32:{i=0;q=2;o=10;break}default:w=25}else w=25;d:do if((w|0)==25){w=0;if((n|0)<3){w=187;break c}if(!(Lu(C,54899,3)|0))switch(a[C+3>>0]|0){case 0:case 34:case 40:case 41:case 12:case 11:case 13:case 10:case 9:case 32:{i=1;q=3;o=10;break d}default:{}}if(!(Lu(C,54903,3)|0))switch(a[C+3>>0]|0){case 0:case 34:case 40:case 41:case 12:case 11:case 13:case 10:case 9:case 32:{i=2;q=3;o=10;break d}default:{}}if((n|0)<4){w=187;break c}if(Lu(C,54907,4)|0){w=187;break c}i=a[i>>0]|0;if(i<<24>>24==47){i=a[k>>0]|0;if((i+-48&255)>=10){w=187;break c}k=5;o=0;do{o=(o*10|0)+-48+(i<<24>>24)|0;k=k+1|0;i=a[C+k>>0]|0}while((i+-48&255)<10)}else{k=4;o=10}switch(i<<24>>24){case 0:case 34:case 40:case 41:case 12:case 11:case 13:case 10:case 9:case 32:{i=3;q=k;break}default:{w=187;break c}}}while(0);p=26336+(i<<3)+6|0;if(mb()|0){k=7;i=0;w=171;break a}if(!(c[7324]|0)){n=Wa[c[29340>>2]&127](48)|0;if(!n){k=7;i=0;w=171;break a}t=n;u=t+48|0;do{a[t>>0]=0;t=t+1|0}while((t|0)<(u|0))}else{i=Wa[c[29356>>2]&127](48)|0;if((c[14985]|0)>>>0<48)c[14985]=48;n=59064;k=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&k>>>0>0){B=c[14978]|0;A=Tv(k|0,n|0,i|0,((i|0)<0)<<31>>31|0)|0;z=L()|0;c[14768]=((z|0)<0|(z|0)==0&A>>>0<=B>>>0)&1}n=Wa[c[29340>>2]&127](i)|0;if(!n){k=7;i=0;w=171;break a}i=Wa[c[29352>>2]&127](n)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i;t=n;u=t+48|0;do{a[t>>0]=0;t=t+1|0}while((t|0)<(u|0))}c[n>>2]=d[p>>0];c[n+4>>2]=o;c[E>>2]=n;k=0;i=C-D+q|0}while(0);e:do if((w|0)==187){w=0;switch(a[C>>0]|0){case 41:{w=87;break a}case 34:{f:do if((n|0)>1){i=1;while(1){if((a[C+i>>0]|0)==34){k=i;break f}i=i+1|0;if((i|0)>=(n|0)){k=i;break}}}else k=1;while(0);i=k+1-D+C|0;if((k|0)==(n|0)){k=1;w=171;break a}A=C+1|0;z=k+-1|0;o=c[b>>2]|0;B=c[o>>2]|0;n=c[M>>2]|0;c[R>>2]=0;k=Za[c[B+12>>2]&127](o,A,z,R)|0;g:do if(!k){c[c[R>>2]>>2]=o;if((c[B>>2]|0)>0?(G=Xa[c[B+24>>2]&255](c[R>>2]|0,n)|0,G|0):0){Wa[c[B+16>>2]&127](c[R>>2]|0)|0;c[R>>2]=0;k=G;o=0;w=36;break}o=c[R>>2]|0;w=B+20|0;y=o;t=0;r=0;s=0;q=0;n=0;u=0;p=0;while(1){c[S>>2]=0;c[T>>2]=0;c[U>>2]=0;c[V>>2]=0;k=$a[c[w>>2]&127](y,R,S,T,U,V)|0;x=(k|0)==0;if(x){if(mb()|0){w=42;break}v=sb(u,(t*24|0)+144|0,0)|0;if(!v){w=42;break}n=c[S>>2]|0;if(mb()|0){w=48;break}u=n+s|0;u=sb(q,u,((u|0)<0)<<31>>31)|0;if(!u){w=48;break}p=v+120|0;q=p+(t*24|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;ew(u+s|0,c[R>>2]|0,c[S>>2]|0)|0;q=c[S>>2]|0;c[p+(t*24|0)+4>>2]=q;n=c[U>>2]|0;if((n|0)<(z|0))n=(a[A+n>>0]|0)==42;else n=0;c[p+(t*24|0)+8>>2]=n&1;n=c[T>>2]|0;if((n|0)>0)n=(a[C+n>>0]|0)==94;else n=0;c[p+(t*24|0)+12>>2]=n&1;t=t+1|0;n=v;r=t;s=q+s|0;q=u;p=v;u=v}else t=t+1|0;if(!x){w=58;break}}do if((w|0)==42)if(u)if(!(c[7324]|0)){ab[c[29344>>2]&127](u);n=q;k=0;break}else{n=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);n=q;k=0;break}else{n=q;k=0}else if((w|0)==48)if(q)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);n=0;k=v;break}else{n=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);n=0;k=v;break}else{n=0;k=v}else if((w|0)==58){Wa[c[B+16>>2]&127](y)|0;o=0;w=59;break g}while(0);w=75}else{o=c[R>>2]|0;w=36}while(0);if((w|0)==36){n=0;r=0;s=0;q=0;p=0;w=59}h:do if((w|0)==59){w=0;if((k|0)==101){if((mb()|0)==0?(O=sb(p,s+144+(r*24|0)|0,0)|0,O|0):0){n=O+48|0;t=O;u=t+112|0;do{c[t>>2]=0;t=t+4|0}while((t|0)<(u|0));c[O>>2]=5;k=O+20|0;c[k>>2]=n;c[O+116>>2]=c[H>>2];c[O+112>>2]=r;n=n+72+(r*24|0)|0;do if(q|0){ew(n|0,q|0,s|0)|0;if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{C=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-C;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}while(0);p=c[k>>2]|0;q=c[p+64>>2]|0;if((q|0)<=0){k=0;n=O;break}c[p+72>>2]=n;if((q|0)==1){k=0;n=O;break}k=n+(c[p+76>>2]|0)|0;n=1;while(1){c[p+72+(n*24|0)>>2]=k;o=n+1|0;if((o|0)<(q|0)){k=k+(c[p+72+(n*24|0)+4>>2]|0)|0;n=o}else{k=0;n=O;break h}}}if(p)if(!(c[7324]|0)){ab[c[29344>>2]&127](p);n=q;k=0;w=75;break}else{n=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);n=q;k=0;w=75;break}else{n=q;k=0;w=75}}}while(0);do if((w|0)==75){w=0;if(o|0)Wa[c[B+16>>2]&127](o)|0;do if(n|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{C=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-C;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}while(0);if(k)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);k=7;n=0;break}else{n=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);k=7;n=0;break}else{k=7;n=0}}while(0);c[E>>2]=n;break e}case 40:{c[R>>2]=0;c[J>>2]=(c[J>>2]|0)+1;k=er(b,C+1|0,n+-1|0,E,R)|0;i=1-D+C+(c[R>>2]|0)|0;n=c[E>>2]|0;break e}default:{s=c[H>>2]|0;t=c[I>>2]|0;i:do if((t|0)>0){u=c[K>>2]|0;i=0;j:while(1){k=c[u+(i<<2)>>2]|0;v=Eu(k)|0;if((n|0)>(v|0)?!((k|0)==0?1:(a[C+v>>0]|0)!=58):0){if((v|0)<=0){w=99;break}r=C;p=v;while(1){o=a[k>>0]|0;if(!(o<<24>>24)){w=95;break}o=a[208+(o&255)>>0]|0;q=a[208+(d[r>>0]|0)>>0]|0;if(o<<24>>24!=q<<24>>24){w=97;break}if((p|0)>1){k=k+1|0;r=r+1|0;p=p+-1|0}else{w=99;break j}}if((w|0)==95){w=0;o=0;k=a[208+(d[r>>0]|0)>>0]|0}else if((w|0)==97){w=0;o=o&255;k=q}if((o|0)==(k&255|0)){w=102;break}}i=i+1|0;if((i|0)>=(t|0)){q=s;u=0;break i}}if((w|0)==99){w=0;q=i;u=v+1-D+C|0;break}else if((w|0)==102){w=0;q=i;u=v+1-D+C|0;break}}else{q=s;u=0}while(0);s=D+u|0;p=j-u|0;o=c[b>>2]|0;t=c[o>>2]|0;k:do if((p|0)>0){i=0;while(1){switch(a[s+i>>0]|0){case 34:case 41:case 40:break k;default:{}}i=i+1|0;if((i|0)>=(p|0))break k}}else i=0;while(0);n=c[M>>2]|0;c[R>>2]=0;k=Za[c[t+12>>2]&127](o,s,i,R)|0;do if(!k){c[c[R>>2]>>2]=o;if((c[t>>2]|0)>0?(P=Xa[c[t+24>>2]&255](c[R>>2]|0,n)|0,P|0):0){Wa[c[t+16>>2]&127](c[R>>2]|0)|0;c[R>>2]=0;k=P;w=111;break}r=c[R>>2]|0;c[S>>2]=0;c[T>>2]=0;c[U>>2]=0;c[V>>2]=0;k=$a[c[t+20>>2]&127](r,R,S,T,U,V)|0;l:do if(!k){i=(c[S>>2]|0)+144|0;n=pb(i,0)|0;if(!n){n=0;k=7;i=c[U>>2]|0;break}gw(n|0,0,i|0)|0;c[n>>2]=5;c[n+20>>2]=n+48;c[n+112>>2]=1;c[n+116>>2]=q;i=c[S>>2]|0;c[n+124>>2]=i;C=n+144|0;c[n+120>>2]=C;ew(C|0,c[R>>2]|0,i|0)|0;i=c[U>>2]|0;if((i|0)<(p|0)?(Q=i+1|0,(a[s+i>>0]|0)==42):0){c[n+128>>2]=1;c[U>>2]=Q;i=Q}k=c[T>>2]|0;if((c[N>>2]|0)!=0&(k|0)>0){p=n+132|0;while(1){o=k;k=k+-1|0;if((a[s+k>>0]|0)!=94){k=0;break l}c[p>>2]=1;c[T>>2]=k;if((o|0)<=1){k=0;break}}}else k=0}else{n=0;k=(i|0)!=0&(k|0)==101?0:k}while(0);Wa[c[t+16>>2]&127](r)|0}else w=111;while(0);if((w|0)==111){w=0;n=0}c[E>>2]=n;i=i+u|0;break e}}}while(0);if((k|0)==0&(n|0)!=0){r=c[n>>2]|0;if((r|0)!=5){p=(c[n+12>>2]|0)!=0;o=p^1;k=(l|0)!=0;if(k&o){w=129;break}else q=p}else{k=(l|0)!=0;o=0;q=1}if(k|o)if(!m)m=0;else w=154;else{if(mb()|0){w=152;break}if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](48)|0;if(!k){w=152;break}t=k;u=t+48|0;do{a[t>>0]=0;t=t+1|0}while((t|0)<(u|0));p=k}else{k=Wa[c[29356>>2]&127](48)|0;if((c[14985]|0)>>>0<48)c[14985]=48;p=59064;l=c[p>>2]|0;p=c[p+4>>2]|0;if((p|0)>0|(p|0)==0&l>>>0>0){C=c[14978]|0;B=Tv(l|0,p|0,k|0,((k|0)<0)<<31>>31|0)|0;A=L()|0;c[14768]=((A|0)<0|(A|0)==0&B>>>0<=C>>>0)&1}l=Wa[c[29340>>2]&127](k)|0;if(!l){w=152;break}k=Wa[c[29352>>2]&127](l)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0)c[14987]=k;t=l;u=t+48|0;do{a[t>>0]=0;t=t+1|0}while((t|0)<(u|0));p=l}c[p>>2]=3;k=m+8|0;l=c[k>>2]|0;m:do if(!l)w=150;else{n=l;while(1){if((c[n>>2]|0)>3)break;k=n+8|0;l=c[k>>2]|0;if(!l){m=n;w=150;break m}else{m=n;n=l}}c[n+16>>2]=p;c[p+8>>2]=c[k>>2]}while(0);if((w|0)==150)e=p;c[p+12>>2]=m;c[k>>2]=p;m=p;w=154}if((w|0)==154){w=0;if(!((r|0)!=1|q)?(c[m>>2]|0)!=5:0){w=158;break}if((r|0)!=5&q?(c[m>>2]|0)==1:0){w=158;break}}if(q){k=c[E>>2]|0;l=k;if(!e){e=k;m=l}else{c[m+16>>2]=k;c[l+8>>2]=m;m=l}}else{q=c[E>>2]|0;k=m+8|0;l=c[k>>2]|0;n:do if(!l)w=167;else{p=c[q>>2]|0;n=l;while(1){if((c[n>>2]|0)>(p|0))break;k=n+8|0;l=c[k>>2]|0;if(!l){m=n;w=167;break n}else{m=n;n=l}}c[n+16>>2]=q;c[q+8>>2]=c[k>>2]}while(0);if((w|0)==167){w=0;e=q}c[q+12>>2]=m;c[k>>2]=q;m=c[E>>2]|0}l=o&1;k=0}j=j-i|0;if(!k)D=D+i|0;else{w=173;break}}if((w|0)==87){c[J>>2]=(c[J>>2]|0)+-1;c[E>>2]=0;k=101;i=1-D+C|0;w=171}else if((w|0)==129){ar(n);i=1;w=170}else if((w|0)==152){ar(n);i=7;w=170}else if((w|0)==158){ar(c[E>>2]|0);i=1;w=170}if((w|0)!=170)if((w|0)==171){j=j-i|0;w=173}if((w|0)==173){i=(e|0)!=0&(k|0)==101&(l|0)!=0?1:k;c[h>>2]=f-j;if((i|0)==101){h=0;f=e;c[g>>2]=f;Ra=W;return h|0}}ar(e);h=i;f=0;c[g>>2]=f;Ra=W;return h|0}function fr(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;if(!b)return;while(1){if(c[f>>2]|0){v=38;break}g=c[b>>2]|0;if((g|0)==5){v=5;break}c[e>>2]=(c[e>>2]|0)+((g|0)==4&1);fr(a,c[b+12>>2]|0,d,e,f);b=c[b+16>>2]|0;if(!b){v=38;break}}if((v|0)==5){t=b+20|0;b=c[t>>2]|0;u=c[b+64>>2]|0;c[d>>2]=(c[d>>2]|0)+u;a:do if((u|0)>0){s=a+20|0;r=0;b:while(1){o=c[b+72+(r*24|0)>>2]|0;p=c[b+72+(r*24|0)+4>>2]|0;n=c[b+72+(r*24|0)+8>>2]|0;q=b+72+(r*24|0)+20|0;if(mb()|0){g=0;b=7;v=34;break}if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](56)|0;if(!g){g=0;b=7;v=34;break}}else{b=Wa[c[29356>>2]&127](56)|0;if((c[14985]|0)>>>0<56)c[14985]=56;e=59064;g=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&g>>>0>0){m=c[14978]|0;l=Tv(g|0,e|0,b|0,((b|0)<0)<<31>>31|0)|0;k=L()|0;c[14768]=((k|0)<0|(k|0)==0&l>>>0<=m>>>0)&1}g=Wa[c[29340>>2]&127](b)|0;if(!g){g=0;b=7;v=34;break}b=Wa[c[29352>>2]&127](g)|0;b=(c[14978]|0)+b|0;c[14978]=b;if(b>>>0>(c[14982]|0)>>>0)c[14982]=b;b=(c[14981]|0)+1|0;c[14981]=b;if(b>>>0>(c[14987]|0)>>>0)c[14987]=b}m=c[a>>2]|0;l=(n|0)!=0;c:do if(l){h=m+256|0;d=g+36|0;k=c[m+252>>2]|0;i=(k|0)>1;if(i){e=c[h>>2]|0;j=1;while(1){if((c[e+(j*24|0)>>2]|0)==(p|0)){v=25;break}b=j+1|0;if((b|0)<(k|0))j=b;else break}if((v|0)==25){v=0;b=c[s>>2]|0;i=g;k=i+56|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(k|0));b=Xp(m,b,j,-2,o,p,0,0,g)|0;c[d>>2]=1;break}j=p+1|0;if(i){e=c[h>>2]|0;h=1;while(1){if((c[e+(h*24|0)>>2]|0)==(j|0))break;b=h+1|0;if((b|0)<(k|0))h=b;else{v=33;break c}}b=c[s>>2]|0;i=g;k=i+56|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(k|0));b=Xp(m,b,h,-2,o,p,1,0,g)|0;if(b|0){v=34;break b}b=Xp(m,c[s>>2]|0,0,-2,o,p,0,0,g)|0}else v=33}else v=33}else{d=g+36|0;v=33}while(0);if((v|0)==33){v=0;b=(l^1)&1;e=c[s>>2]|0;i=g;k=i+56|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(k|0));p=Xp(m,e,0,-2,o,p,n,0,g)|0;c[d>>2]=b;b=p}c[q>>2]=g;r=r+1|0;if(b|0)break;b=c[t>>2]|0;if((r|0)>=(u|0))break a}if((v|0)==34)c[q>>2]=g;c[f>>2]=b;return}while(0);c[b+44>>2]=-1;return}else if((v|0)==38)return}function gr(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,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=Ra;Ra=Ra+16|0;C=D;if(c[h>>2]|0){Ra=D;return}j=e;a:while(1){switch(c[j>>2]|0){case 5:{e=5;break a}case 2:{e=31;break a}case 4:{i=j+12|0;e=c[i>>2]|0;c[c[g>>2]>>2]=e;c[g>>2]=(c[g>>2]|0)+4;break}default:{e=d;i=j+12|0}}gr(b,e,c[i>>2]|0,f,g,h);i=j+16|0;if((c[j>>2]|0)==4){e=c[i>>2]|0;c[c[g>>2]>>2]=e;c[g>>2]=(c[g>>2]|0)+4}if(!(c[h>>2]|0)){d=e;j=c[i>>2]|0}else{e=31;break}}if((e|0)==5){v=c[j+20>>2]|0;w=v+64|0;x=v+68|0;u=0;while(1){if((u|0)>=(c[w>>2]|0)){e=31;break}y=c[f>>2]|0;c[f>>2]=y+24;c[y>>2]=v;c[y+4>>2]=u;c[y+12>>2]=d;c[y+8>>2]=v+72+(u*24|0);c[y+20>>2]=c[x>>2];m=c[v+72+(u*24|0)+20>>2]|0;y=y+16|0;t=c[b>>2]|0;n=c[t+240>>2]|0;o=m+4|0;p=t+20|0;q=t+248|0;r=t+244|0;s=t+12|0;t=t+16|0;i=0;l=0;while(1){if((l|0)>=(c[o>>2]|0)){e=0;break}e=c[(c[m>>2]|0)+(l<<2)>>2]|0;b:do if(((c[e+56>>2]|0)==0?(a[e+5>>0]|0)==0:0)?(A=e+8|0,z=c[A>>2]|0,A=c[A+4>>2]|0,B=e+16|0,k=B,g=c[k+4>>2]|0,!((A|0)>(g|0)|((A|0)==(g|0)?z>>>0>(c[k>>2]|0)>>>0:0))):0){j=c[q>>2]|0;g=z;k=A;while(1){if(!j){e=c[r>>2]|0;if(!e){c[C>>2]=c[p>>2];e=Bb(53537,C)|0;c[r>>2]=e;if(!e){e=7;break b}}e=ad(c[s>>2]|0,c[t>>2]|0,e,53549,g,k,0,q)|0}else e=ld(j,g,k)|0;if(e|0)break b;j=c[q>>2]|0;if((j|0)!=0?(c[j+16>>2]|0)!=0:0)e=c[j>>2]|0;else e=0;if((e+35|0)>(n|0))i=((e+34|0)/(n|0)|0)+i|0;E=g;g=Sv(g|0,k|0,1,0)|0;G=k;k=L()|0;e=B;F=c[e+4>>2]|0;if(!((G|0)<(F|0)|((G|0)==(F|0)?E>>>0<(c[e>>2]|0)>>>0:0))){e=0;break}}}else e=0;while(0);if(!e)l=l+1|0;else break}c[y>>2]=i;c[h>>2]=e;if(!e)u=u+1|0;else{e=31;break}}if((e|0)==31){Ra=D;return}}else if((e|0)==31){Ra=D;return}}function hr(e,f,g,h){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,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=Ra;Ra=Ra+16|0;x=B+4|0;y=B;z=c[e>>2]|0;if(c[z+40>>2]|0){A=0;Ra=B;return A|0}v=(h|0)>0;if(!v){A=0;Ra=B;return A|0}i=0;j=0;k=0;while(1){if((c[g+(k*24|0)+12>>2]|0)==(f|0)){u=i+1|0;j=(c[g+(k*24|0)+16>>2]|0)+j|0}else u=i;k=k+1|0;if((k|0)==(h|0))break;else i=u}if((j|0)==0|(u|0)<2){A=0;Ra=B;return A|0}s=e+60|0;i=c[s>>2]|0;do if(!i){i=lr(z,x)|0;if(!i){r=c[x>>2]|0;q=(r|0)==0;if(q)l=mc(29576)|0;else{i=c[r+120>>2]|0;if((i|0)!=0?(b[r+144>>1]|0)!=0:0)j=r;else{i=c[r>>2]|0;c[i+64>>2]=25;Ne(i,25);i=29576;j=r}l=mc(i)|0;i=c[j>>2]|0;k=r+40|0;j=c[k>>2]|0;if((j|0)==3082|(a[i+81>>0]|0)!=0){og(i);i=7}else i=c[i+68>>2]&j;c[k>>2]=i}n=Lc(r,0)|0;p=l+n|0;j=a[l>>0]|0;i=j&255;do if(!(i&128)){k=1;i=j&255;o=0}else{t=d[l+1>>0]|0;i=t<<7|i&127;if(!(t&128)){k=2;o=0;break}t=d[l+2>>0]|0;i=t<<14|i&16383;if(!(t&128)){k=3;o=0;break}t=d[l+3>>0]|0;i=t<<21|i&2097151;if(!(t&128)){k=4;o=0;break}j=28;k=l+4|0;i=i&268435455;m=0;do{t=k;k=k+1|0;t=d[t>>0]|0;o=cw(t&127|0,0,j|0)|0;i=Sv(o|0,L()|0,i|0,m|0)|0;m=L()|0;j=j+7|0}while(j>>>0<64&((t&128|0)!=0|0!=0));k=k-l|0;o=m}while(0);if((k|0)<(n|0)){n=l+k|0;do{k=a[n>>0]|0;j=k&255;do if(!(j&128)){l=1;j=k&255;k=0}else{t=d[n+1>>0]|0;j=t<<7|j&127;if(!(t&128)){l=2;k=0;break}t=d[n+2>>0]|0;j=t<<14|j&16383;if(!(t&128)){l=3;k=0;break}t=d[n+3>>0]|0;j=t<<21|j&2097151;if(!(t&128)){l=4;k=0;break}l=28;m=n+4|0;j=j&268435455;k=0;do{t=m;m=m+1|0;t=d[t>>0]|0;C=cw(t&127|0,0,l|0)|0;j=Sv(C|0,L()|0,j|0,k|0)|0;k=L()|0;l=l+7|0}while(l>>>0<64&((t&128|0)!=0|0!=0));l=m-n|0}while(0);n=n+l|0}while(n>>>0

        >>0);if(!((i|0)==0&(o|0)==0|(j|0)==0&(k|0)==0)){p=e+64|0;c[p>>2]=i;c[p+4>>2]=o;o=Wv(j|0,k|0,i|0,o|0)|0;p=L()|0;t=c[z+240>>2]|0;C=((t|0)<0)<<31>>31;p=Sv(o|0,p|0,t|0,C|0)|0;C=Wv(p|0,L()|0,t|0,C|0)|0;L()|0;c[s>>2]=C;do if(!q){i=c[r>>2]|0;C=r+136|0;t=c[C+4>>2]|0;if((t|0)>0|(t|0)==0&(c[C>>2]|0)>>>0>0)hc(i,r);j=kc(r)|0;c[r+20>>2]=770837923;c[r+36>>2]=-1;c[r+40>>2]=0;a[r+146>>0]=2;c[r+44>>2]=0;c[r+32>>2]=1;a[r+147>>0]=-1;c[r+48>>2]=0;C=r+64|0;c[C>>2]=0;c[C+4>>2]=0;if((j|0)==3082|(a[i+81>>0]|0)!=0){og(i);i=7;break}else{i=c[i+68>>2]&j;break}}else i=0;while(0);t=c[s>>2]|0;break}}if(!q){i=c[r>>2]|0;C=r+136|0;A=c[C+4>>2]|0;if((A|0)>0|(A|0)==0&(c[C>>2]|0)>>>0>0)hc(i,r);C=kc(r)|0;c[r+20>>2]=770837923;c[r+36>>2]=-1;c[r+40>>2]=0;a[r+146>>0]=2;c[r+44>>2]=0;c[r+32>>2]=1;a[r+147>>0]=-1;c[r+48>>2]=0;A=r+64|0;c[A>>2]=0;c[A+4>>2]=0;if((C|0)==3082|(a[i+81>>0]|0)!=0){og(i);i=267}else i=267}else i=267}C=i;Ra=B;return C|0}else{t=i;i=0}while(0);if(!((u|0)>0&(i|0)==0)){C=i;Ra=B;return C|0}s=u+-1|0;r=e+28|0;p=0;o=1;q=0;while(1){if(v){i=0;k=0;do{j=g+(k*24|0)|0;do if((c[g+(k*24|0)+8>>2]|0)!=0?(c[g+(k*24|0)+12>>2]|0)==(f|0):0){if(i|0?(c[g+(k*24|0)+16>>2]|0)>=(c[i+16>>2]|0):0)break;i=j}while(0);k=k+1|0}while((k|0)!=(h|0));m=i}else m=0;n=(q|0)==0;do if(n){o=o<<2;A=88}else{C=(o|0)/4|0;if((c[m+16>>2]|0)<(G((p+-1+C|0)/(C|0)|0,t)|0)){j=q>>>0<12?o<<2:o;if(!((q|0)==(s|0)?1:(c[(c[m>>2]|0)+64>>2]|0)<2)){o=j;A=88;break}i=0;l=j;k=p;j=m+8|0;break}j=m+8|0;n=c[j>>2]|0;m=c[m+20>>2]|0;do if(!(mb()|0)){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](16)|0;if(!i){i=7;break}}else{i=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){C=c[14978]|0;e=Tv(k|0,l|0,i|0,((i|0)<0)<<31>>31|0)|0;l=L()|0;c[14768]=((l|0)<0|(l|0)==0&e>>>0<=C>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){i=7;break}k=Wa[c[29352>>2]&127](i)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0)c[14987]=k}c[i+12>>2]=0;c[i>>2]=n;c[i+8>>2]=c[r>>2];c[i+4>>2]=m;c[r>>2]=i;c[n+16>>2]=i;i=0}else i=7;while(0);l=n+20|0;br(c[l>>2]|0);c[l>>2]=0;l=o;k=p}while(0);if((A|0)==88){A=0;j=m+8|0;i=c[j>>2]|0;c[x>>2]=0;c[y>>2]=0;i=jr(z,i,c[m+20>>2]|0,x,y)|0;if(!i){i=kr(z,c[m>>2]|0,c[m+4>>2]|0,c[y>>2]|0,c[x>>2]|0)|0;if(!i){k=c[m>>2]|0;i=c[k>>2]|0;k=c[k+4>>2]|0;if((i|0)!=0?(w=i+k|0,(k|0)>0):0){k=0;do{do{C=i;i=i+1|0}while((a[C>>0]|0)<0);l=0;while(1){m=a[i>>0]|0;i=i+1|0;if(!(l<<24>>24|m))break;else l=m&128}k=k+1|0}while(i>>>0>>0)}else k=0;i=0;k=n|(k|0)<(p|0)?k:p}else k=p}else k=p;l=o}c[j>>2]=0;q=q+1|0;if(!((q|0)<(u|0)&(i|0)==0))break;else{p=k;o=l}}Ra=B;return i|0}function ir(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(!d)return;if(c[e>>2]|0)return;if((c[d>>2]|0)!=5){h=d+12|0;ir(b,c[h>>2]|0,e);f=d+16|0;ir(b,c[f>>2]|0,e);if(!(a[(c[h>>2]|0)+34>>0]|0))f=0;else f=(a[(c[f>>2]|0)+34>>0]|0)!=0&1;a[d+34>>0]=f;return}h=c[d+20>>2]|0;g=c[h+64>>2]|0;if(g|0){a:do if((g|0)>0){f=0;do{if(!(c[h+72+(f*24|0)+16>>2]|0))break a;f=f+1|0}while((f|0)<(g|0))}else f=0;while(0);a[d+34>>0]=(f|0)==(g|0)&1}d=pr(b,1,h)|0;c[e>>2]=d;return}function jr(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,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;x=Ra;Ra=Ra+160|0;r=x+148|0;s=x+144|0;u=x+16|0;i=x;w=e+20|0;v=c[w>>2]|0;j=u;k=j+128|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));c[i+12>>2]=((c[e+12>>2]|0)==0?0:32)|((c[e+8>>2]|0)==0?3:11)|((c[b+24>>2]|0)>(f|0)?4:0);c[i+8>>2]=f;q=c[e>>2]|0;c[i>>2]=q;e=c[e+4>>2]|0;c[i+4>>2]=e;c[v+12>>2]=i;e=eq(b,v,q,e)|0;a:do if(!e){n=v+48|0;o=v+52|0;p=u+64|0;q=b+235|0;b:while(1){e=gq(b,v)|0;switch(e|0){case 0:break b;case 100:break;default:break a}m=c[n>>2]|0;f=c[o>>2]|0;e=c[u>>2]|0;c:do if(!e){e=nb(f+11|0)|0;c[u>>2]=e;c[p>>2]=f;if(!e)e=7;else{ew(e|0,m|0,f|0)|0;j=e+f|0;k=j+10|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(k|0));e=0}}else{l=0;j=m;i=u;while(1){k=u+64+(l<<2)|0;e=mr(d[q>>0]|0,j,f,e,c[k>>2]|0,r,s)|0;f=(j|0)==(m|0)|(j|0)==0;if(e|0){t=10;break}do if(!f)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{f=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);e=c[i>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{j=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);c[i>>2]=0;j=c[r>>2]|0;f=c[s>>2]|0;if((l|0)==15){t=23;break}l=l+1|0;if(l>>>0>=16){e=0;break c}i=u+(l<<2)|0;e=c[i>>2]|0;if(!e){t=8;break}}if((t|0)==8){t=0;c[i>>2]=j;c[u+64+(l<<2)>>2]=f;e=0;break}else if((t|0)==10){t=0;do if(!f)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{m=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);break}else if((t|0)==23){t=0;c[i>>2]=j;c[k>>2]=f;e=0;break}}while(0);if(e|0)break a}l=0;f=0;j=0;d:while(1){i=u+(l<<2)|0;k=c[i>>2]|0;do if(!k)e=j;else{if(!j){f=c[u+64+(l<<2)>>2]|0;c[i>>2]=0;e=k;break}e=mr(d[q>>0]|0,k,c[u+64+(l<<2)>>2]|0,j,f,s,r)|0;f=(c[7324]|0)==0;if(e|0)break d;if(f)ab[c[29344>>2]&127](k);else{b=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}if(!(c[7324]|0))ab[c[29344>>2]&127](j);else{b=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j)}c[i>>2]=0;f=c[r>>2]|0;e=c[s>>2]|0}while(0);l=l+1|0;if(l>>>0>=16){t=45;break}else j=e}if((t|0)==45){c[u>>2]=e;c[p>>2]=f;c[h>>2]=e;c[g>>2]=f;u=0;br(v);c[w>>2]=0;Ra=x;return u|0}if(f)ab[c[29344>>2]&127](j);else{t=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j)}}while(0);f=0;do{i=c[u+(f<<2)>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{t=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);f=f+1|0}while((f|0)!=16);br(v);c[w>>2]=0;Ra=x;return e|0}function kr(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,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,J=0,K=0,M=0,N=0;M=Ra;Ra=Ra+16|0;F=M+8|0;G=M+4|0;H=M;do if(!g){i=c[e>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{K=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);c[e>>2]=0;c[e+4>>2]=0;j=0;i=e+44|0}else{i=e+44|0;j=c[i>>2]|0;if((j|0)<0){c[e>>2]=g;c[e+4>>2]=h;j=0;break}l=c[e>>2]|0;if(!l)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);j=0;break}else{j=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);j=0;break}K=e+4|0;k=c[K>>2]|0;if((j|0)<(f|0)){D=f-j|0;m=k;J=l;l=g}else{D=j-f|0;m=h;J=g;h=k}E=l;p=a[b+235>>0]|0;A=J+m|0;B=l+h|0;c[F>>2]=J;c[G>>2]=l;C=p<<24>>24!=0;if(C){j=Sv(h|0,((h|0)<0)<<31>>31|0,10,0)|0;j=pb(j,L()|0)|0;if(!j){j=7;k=E}else{g=j;k=j;I=19}}else{g=l;k=E;I=19}do if((I|0)==19){c[H>>2]=g;if((m|0)>0){g=a[J>>0]|0;j=g&255;do if(!(j&128)){b=1;j=g&255;g=0}else{z=d[J+1>>0]|0;j=z<<7|j&127;if(!(z&128)){b=2;g=0;break}z=d[J+2>>0]|0;j=z<<14|j&16383;if(!(z&128)){b=3;g=0;break}z=d[J+3>>0]|0;j=z<<21|j&2097151;if(!(z&128)){b=4;g=0;break}g=28;b=J+4|0;j=j&268435455;m=0;do{z=b;b=b+1|0;z=d[z>>0]|0;y=cw(z&127|0,0,g|0)|0;j=Sv(y|0,L()|0,j|0,m|0)|0;m=L()|0;g=g+7|0}while(g>>>0<64&((z&128|0)!=0|0!=0));b=b-J|0;g=m}while(0);o=J+b|0;n=g}else{o=0;j=0;n=0}c[F>>2]=o;if((h|0)>0){g=a[l>>0]|0;h=g&255;do if(!(h&128)){b=1;h=g&255;m=0}else{z=d[l+1>>0]|0;h=z<<7|h&127;if(!(z&128)){b=2;m=0;break}z=d[l+2>>0]|0;h=z<<14|h&16383;if(!(z&128)){b=3;m=0;break}z=d[l+3>>0]|0;h=z<<21|h&2097151;if(!(z&128)){b=4;m=0;break}g=28;b=l+4|0;h=h&268435455;m=0;do{z=b;b=b+1|0;z=d[z>>0]|0;y=cw(z&127|0,0,g|0)|0;h=Sv(y|0,L()|0,h|0,m|0)|0;m=L()|0;g=g+7|0}while(g>>>0<64&((z&128|0)!=0|0!=0));b=b-E|0}while(0);g=l+b|0;c[G>>2]=g;if((o|0)!=0&(g|0)!=0){y=C?-1:1;z=C?-1:0;x=p<<24>>24==0;w=0;s=n;v=0;u=0;t=g;r=o;a:while(1){q=Tv(j|0,s|0,h|0,m|0)|0;q=Yv(q|0,L()|0,y|0,z|0)|0;g=L()|0;do if(!((q|0)==0&(g|0)==0))if((g|0)<0){n=r;g=0;while(1){b=a[n>>0]|0;q=n+1|0;if(!(g<<24>>24|b))break;else{n=q;g=b&128}}p=q;c[F>>2]=q;if(q>>>0>=A>>>0){I=85;break a}b=a[q>>0]|0;g=b&255;do if(!(g&128)){n=1;b=b&255;g=0}else{r=d[n+2>>0]|0;g=r<<7|g&127;if(!(r&128)){n=2;b=g;g=0;break}r=d[n+3>>0]|0;g=r<<14|g&16383;if(!(r&128)){n=3;b=g;g=0;break}r=d[n+4>>0]|0;b=r<<21|g&2097151;if(!(r&128)){n=4;g=0;break}o=28;n=n+5|0;b=b&268435455;g=0;do{r=n;n=n+1|0;r=d[r>>0]|0;N=cw(r&127|0,0,o|0)|0;b=Sv(N|0,L()|0,b|0,g|0)|0;g=L()|0;o=o+7|0}while(o>>>0<64&((r&128|0)!=0|0!=0));n=n-p|0}while(0);p=q+n|0;c[F>>2]=p;o=Tv(0,0,b|0,g|0)|0;q=L()|0;j=Sv((x?b:o)|0,(x?g:q)|0,j|0,s|0)|0;q=w;o=t;n=L()|0;b=v;g=u;break}else{n=t;g=0;while(1){b=a[n>>0]|0;q=n+1|0;if(!(g<<24>>24|b))break;else{n=q;g=b&128}}p=q;c[G>>2]=q;if(q>>>0>=B>>>0){I=100;break a}b=a[q>>0]|0;g=b&255;do if(!(g&128)){n=1;b=b&255;g=0}else{N=d[n+2>>0]|0;g=N<<7|g&127;if(!(N&128)){n=2;b=g;g=0;break}N=d[n+3>>0]|0;g=N<<14|g&16383;if(!(N&128)){n=3;b=g;g=0;break}N=d[n+4>>0]|0;b=N<<21|g&2097151;if(!(N&128)){n=4;g=0;break}o=28;n=n+5|0;b=b&268435455;g=0;do{N=n;n=n+1|0;N=d[N>>0]|0;t=cw(N&127|0,0,o|0)|0;b=Sv(t|0,L()|0,b|0,g|0)|0;g=L()|0;o=o+7|0}while(o>>>0<64&((N&128|0)!=0|0!=0));n=n-p|0}while(0);o=q+n|0;c[G>>2]=o;p=Tv(0,0,b|0,g|0)|0;q=L()|0;h=Sv((x?b:p)|0,(x?g:q)|0,h|0,m|0)|0;q=w;p=r;n=s;m=L()|0;b=v;g=u;break}else{b=c[H>>2]|0;t=x|(w|0)==0;r=Tv(j|0,s|0,v|0,u|0)|0;N=L()|0;o=Tv(v|0,u|0,j|0,s|0)|0;q=L()|0;g=b;o=t?r:o;q=t?N:q;while(1){n=o&255;p=g+1|0;a[g>>0]=n|-128;o=bw(o|0,q|0,7)|0;q=L()|0;if((o|0)==0&(q|0)==0)break;else g=p}a[g>>0]=n&127;c[H>>2]=(c[H>>2]|0)+(p-b);if(!(or(H,D,0,1,F,G)|0)){c[H>>2]=b;q=w;t=v}else{q=1;t=j;u=s}p=c[F>>2]|0;if(p>>>0>>0){b=a[p>>0]|0;g=b&255;do if(!(g&128)){n=1;g=b&255;b=0}else{N=d[p+1>>0]|0;g=N<<7|g&127;if(!(N&128)){n=2;b=0;break}N=d[p+2>>0]|0;g=N<<14|g&16383;if(!(N&128)){n=3;b=0;break}N=d[p+3>>0]|0;g=N<<21|g&2097151;if(!(N&128)){n=4;b=0;break}n=28;o=p+4|0;g=g&268435455;b=0;do{N=o;o=o+1|0;N=d[N>>0]|0;w=cw(N&127|0,0,n|0)|0;g=Sv(w|0,L()|0,g|0,b|0)|0;b=L()|0;n=n+7|0}while(n>>>0<64&((N&128|0)!=0|0!=0));n=o-p|0}while(0);r=p+n|0;c[F>>2]=r;w=Tv(0,0,g|0,b|0)|0;N=L()|0;j=Sv((x?g:w)|0,(x?b:N)|0,j|0,s|0)|0;s=L()|0}else{c[F>>2]=0;r=0}p=c[G>>2]|0;if(p>>>0>=B>>>0){I=67;break a}b=a[p>>0]|0;g=b&255;do if(!(g&128)){n=1;g=b&255;b=0}else{N=d[p+1>>0]|0;g=N<<7|g&127;if(!(N&128)){n=2;b=0;break}N=d[p+2>>0]|0;g=N<<14|g&16383;if(!(N&128)){n=3;b=0;break}N=d[p+3>>0]|0;g=N<<21|g&2097151;if(!(N&128)){n=4;b=0;break}n=28;o=p+4|0;g=g&268435455;b=0;do{N=o;o=o+1|0;N=d[N>>0]|0;w=cw(N&127|0,0,n|0)|0;g=Sv(w|0,L()|0,g|0,b|0)|0;b=L()|0;n=n+7|0}while(n>>>0<64&((N&128|0)!=0|0!=0));n=o-p|0}while(0);o=p+n|0;c[G>>2]=o;n=Tv(0,0,g|0,b|0)|0;p=L()|0;h=Sv((x?g:n)|0,(x?b:p)|0,h|0,m|0)|0;p=r;n=s;m=L()|0;b=t;g=u}while(0);if((o|0)!=0&(p|0)!=0){w=q;s=n;v=b;u=g;t=o;r=p}else break}if((I|0)==67)c[G>>2]=0;else if((I|0)==85)c[F>>2]=0;else if((I|0)==100)c[G>>2]=0;j=c[H>>2]|0}else j=k}else{c[G>>2]=0;j=k}h=j-k|0;if(C)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);j=0;break}else{j=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);j=0;break}else{j=0;k=E}}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](J);else{N=Wa[c[29352>>2]&127](J)|0;c[14978]=(c[14978]|0)-N;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](J)}c[e>>2]=k;c[K>>2]=h}while(0);if((c[i>>2]|0)>=(f|0)){Ra=M;return j|0}c[i>>2]=f;Ra=M;return j|0}function lr(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=Ra;Ra=Ra+16|0;f=l;h=l+8|0;i=d+144|0;k=c[i>>2]|0;c[h>>2]=k;g=k;if(!k){k=c[d+20>>2]|0;c[f>>2]=c[d+16>>2];c[f+4>>2]=k;f=Bb(52411,f)|0;if(!f){k=7;j=g;c[e>>2]=j;Ra=l;return k|0}d=qd(c[d+12>>2]|0,f,-1,133,0,h,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](f);else{k=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f)}f=c[h>>2]|0;c[i>>2]=f;if(!d)i=f;else{k=d;j=f;c[e>>2]=j;Ra=l;return k|0}}else i=g;k=i;do if(!(Vc(k,1)|0)){f=c[k+100>>2]|0;d=f+8|0;if(!(b[d>>1]&9216)){h=f;c[h>>2]=0;c[h+4>>2]=0;b[d>>1]=4;break}else{Pg(f,0,0);break}}while(0);if((Gc(k)|0)==100){if(i|0){f=c[k+120>>2]|0;if(!((f|0)!=0?(b[k+144>>1]|0)!=0:0)){f=c[k>>2]|0;c[f+64>>2]=25;Ne(f,25);f=29576}g=b[f+8>>1]&15;f=c[k>>2]|0;h=k+40|0;d=c[h>>2]|0;if((d|0)==3082|(a[f+81>>0]|0)!=0){og(f);f=7}else f=c[f+68>>2]&d;c[h>>2]=f;if((g|16)<<16>>16==16){k=0;j=i;c[e>>2]=j;Ra=l;return k|0}else j=22}}else j=22;do if((j|0)==22?i|0:0){f=c[k>>2]|0;j=k+136|0;i=c[j+4>>2]|0;if((i|0)>0|(i|0)==0&(c[j>>2]|0)>>>0>0)hc(f,k);d=kc(k)|0;c[k+20>>2]=770837923;c[k+36>>2]=-1;c[k+40>>2]=0;a[k+146>>0]=2;c[k+44>>2]=0;c[k+32>>2]=1;a[k+147>>0]=-1;c[k+48>>2]=0;k=k+64|0;c[k>>2]=0;c[k+4>>2]=0;if((d|0)==3082|(a[f+81>>0]|0)!=0){og(f);k=7;j=0;c[e>>2]=j;Ra=l;return k|0}else{f=c[f+68>>2]&d;if(!f)break;else d=0;c[e>>2]=d;Ra=l;return f|0}}while(0);k=267;j=0;c[e>>2]=j;Ra=l;return k|0}function mr(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,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;C=Ra;Ra=Ra+16|0;y=C+8|0;z=C+4|0;A=C;w=e+f|0;x=g+h|0;c[y>>2]=e;c[z>>2]=g;c[i>>2]=0;c[j>>2]=0;l=Sv(f|0,((f|0)<0)<<31>>31|0,17,0)|0;l=Sv(l|0,L()|0,h|0,((h|0)<0)<<31>>31|0)|0;l=pb(l,L()|0)|0;if(!l){B=7;Ra=C;return B|0}c[A>>2]=l;if((f|0)>0){k=a[e>>0]|0;f=k&255;do if(!(f&128)){m=1;f=k&255;k=0}else{v=d[e+1>>0]|0;f=v<<7|f&127;if(!(v&128)){m=2;k=0;break}v=d[e+2>>0]|0;f=v<<14|f&16383;if(!(v&128)){m=3;k=0;break}v=d[e+3>>0]|0;f=v<<21|f&2097151;if(!(v&128)){m=4;k=0;break}m=28;n=e+4|0;f=f&268435455;k=0;do{v=n;n=n+1|0;v=d[v>>0]|0;u=cw(v&127|0,0,m|0)|0;f=Sv(u|0,L()|0,f|0,k|0)|0;k=L()|0;m=m+7|0}while(m>>>0<64&((v&128|0)!=0|0!=0));m=n-e|0}while(0);p=k;o=e+m|0}else{f=0;p=0;o=0}c[y>>2]=o;if((h|0)>0){m=a[g>>0]|0;k=m&255;do if(!(k&128)){n=1;k=m&255;m=0}else{v=d[g+1>>0]|0;k=v<<7|k&127;if(!(v&128)){n=2;m=0;break}v=d[g+2>>0]|0;k=v<<14|k&16383;if(!(v&128)){n=3;m=0;break}v=d[g+3>>0]|0;k=v<<21|k&2097151;if(!(v&128)){n=4;m=0;break}n=28;e=g+4|0;k=k&268435455;m=0;do{v=e;e=e+1|0;v=d[v>>0]|0;u=cw(v&127|0,0,n|0)|0;k=Sv(u|0,L()|0,k|0,m|0)|0;m=L()|0;n=n+7|0}while(n>>>0<64&((v&128|0)!=0|0!=0));n=e-g|0}while(0);e=m;m=g+n|0}else{k=0;e=0;m=0}c[z>>2]=m;n=(o|0)!=0;m=(m|0)!=0;a:do if(n|m){t=(b|0)==0;u=t?1:-1;v=t?0:-1;g=0;s=f;r=p;q=e;b=n;p=m;n=0;m=0;b:while(1){o=Tv(s|0,r|0,k|0,q|0)|0;o=Yv(o|0,L()|0,u|0,v|0)|0;f=L()|0;do if(!((o|0)==0&(f|0)==0&(b&p))){g=t|(g|0)==0;if((f|0)<0&b|p^1){p=Tv(s|0,r|0,n|0,m|0)|0;b=L()|0;o=Tv(n|0,m|0,s|0,r|0)|0;n=L()|0;h=c[A>>2]|0;e=h;o=g?p:o;n=g?b:n;while(1){f=o&255;m=e+1|0;a[e>>0]=f|-128;o=bw(o|0,n|0,7)|0;n=L()|0;if((o|0)==0&(n|0)==0)break;else e=m}a[e>>0]=f&127;n=(c[A>>2]|0)+(m-h)|0;c[A>>2]=n;e=c[y>>2]|0;h=e;f=0;while(1){m=a[h>>0]|0;g=h+1|0;if(!(f<<24>>24|m))break;else{h=g;f=m&128}}o=g;b=o-e|0;ew(n|0,e|0,b|0)|0;c[A>>2]=n+b;c[y>>2]=g;if(g>>>0>=w>>>0){c[y>>2]=0;o=s;f=r;e=k;h=q;n=s;m=r;break}m=a[g>>0]|0;f=m&255;do if(!(f&128)){n=1;m=m&255;f=0}else{b=d[h+2>>0]|0;f=b<<7|f&127;if(!(b&128)){n=2;m=f;f=0;break}b=d[h+3>>0]|0;f=b<<14|f&16383;if(!(b&128)){n=3;m=f;f=0;break}b=d[h+4>>0]|0;m=b<<21|f&2097151;if(!(b&128)){n=4;f=0;break}e=28;n=h+5|0;m=m&268435455;f=0;do{b=n;n=n+1|0;b=d[b>>0]|0;p=cw(b&127|0,0,e|0)|0;m=Sv(p|0,L()|0,m|0,f|0)|0;f=L()|0;e=e+7|0}while(e>>>0<64&((b&128|0)!=0|0!=0));n=n-o|0}while(0);c[y>>2]=g+n;e=Tv(0,0,m|0,f|0)|0;o=L()|0;o=Sv((t?m:e)|0,(t?f:o)|0,s|0,r|0)|0;f=L()|0;e=k;h=q;n=s;m=r;break}else{p=Tv(k|0,q|0,n|0,m|0)|0;b=L()|0;o=Tv(n|0,m|0,k|0,q|0)|0;n=L()|0;h=c[A>>2]|0;e=h;o=g?p:o;n=g?b:n;while(1){f=o&255;m=e+1|0;a[e>>0]=f|-128;o=bw(o|0,n|0,7)|0;n=L()|0;if((o|0)==0&(n|0)==0)break;else e=m}a[e>>0]=f&127;n=(c[A>>2]|0)+(m-h)|0;c[A>>2]=n;e=c[z>>2]|0;h=e;f=0;while(1){m=a[h>>0]|0;g=h+1|0;if(!(f<<24>>24|m))break;else{h=g;f=m&128}}o=g;b=o-e|0;ew(n|0,e|0,b|0)|0;c[A>>2]=n+b;c[z>>2]=g;if(g>>>0>=x>>>0){c[z>>2]=0;o=s;f=r;e=k;h=q;n=k;m=q;break}m=a[g>>0]|0;f=m&255;do if(!(f&128)){n=1;m=m&255;f=0}else{b=d[h+2>>0]|0;f=b<<7|f&127;if(!(b&128)){n=2;m=f;f=0;break}b=d[h+3>>0]|0;f=b<<14|f&16383;if(!(b&128)){n=3;m=f;f=0;break}b=d[h+4>>0]|0;m=b<<21|f&2097151;if(!(b&128)){n=4;f=0;break}e=28;n=h+5|0;m=m&268435455;f=0;do{b=n;n=n+1|0;b=d[b>>0]|0;p=cw(b&127|0,0,e|0)|0;m=Sv(p|0,L()|0,m|0,f|0)|0;f=L()|0;e=e+7|0}while(e>>>0<64&((b&128|0)!=0|0!=0));n=n-o|0}while(0);c[z>>2]=g+n;o=Tv(0,0,m|0,f|0)|0;e=L()|0;e=Sv((t?m:o)|0,(t?f:e)|0,k|0,q|0)|0;o=s;f=r;h=L()|0;n=k;m=q;break}}else{p=t|(g|0)==0;g=Tv(s|0,r|0,n|0,m|0)|0;b=L()|0;e=Tv(n|0,m|0,s|0,r|0)|0;o=L()|0;m=c[A>>2]|0;f=m;e=p?g:e;o=p?b:o;while(1){n=e&255;h=f+1|0;a[f>>0]=n|-128;e=bw(e|0,o|0,7)|0;o=L()|0;if((e|0)==0&(o|0)==0)break;else f=h}a[f>>0]=n&127;c[A>>2]=(c[A>>2]|0)+(h-m);f=nr(A,y,z)|0;if(f|0)break b;h=c[y>>2]|0;if(h>>>0>>0){m=a[h>>0]|0;f=m&255;do if(!(f&128)){n=1;f=m&255;m=0}else{b=d[h+1>>0]|0;f=b<<7|f&127;if(!(b&128)){n=2;m=0;break}b=d[h+2>>0]|0;f=b<<14|f&16383;if(!(b&128)){n=3;m=0;break}b=d[h+3>>0]|0;f=b<<21|f&2097151;if(!(b&128)){n=4;m=0;break}n=28;e=h+4|0;f=f&268435455;m=0;do{b=e;e=e+1|0;b=d[b>>0]|0;p=cw(b&127|0,0,n|0)|0;f=Sv(p|0,L()|0,f|0,m|0)|0;m=L()|0;n=n+7|0}while(n>>>0<64&((b&128|0)!=0|0!=0));n=e-h|0}while(0);c[y>>2]=h+n;g=Tv(0,0,f|0,m|0)|0;o=L()|0;o=Sv((t?f:g)|0,(t?m:o)|0,s|0,r|0)|0;g=L()|0}else{c[y>>2]=0;o=s;g=r}h=c[z>>2]|0;if(h>>>0>=x>>>0){c[z>>2]=0;f=g;e=k;h=q;n=s;m=r;break}m=a[h>>0]|0;f=m&255;do if(!(f&128)){n=1;f=m&255;m=0}else{b=d[h+1>>0]|0;f=b<<7|f&127;if(!(b&128)){n=2;m=0;break}b=d[h+2>>0]|0;f=b<<14|f&16383;if(!(b&128)){n=3;m=0;break}b=d[h+3>>0]|0;f=b<<21|f&2097151;if(!(b&128)){n=4;m=0;break}n=28;e=h+4|0;f=f&268435455;m=0;do{b=e;e=e+1|0;b=d[b>>0]|0;p=cw(b&127|0,0,n|0)|0;f=Sv(p|0,L()|0,f|0,m|0)|0;m=L()|0;n=n+7|0}while(n>>>0<64&((b&128|0)!=0|0!=0));n=e-h|0}while(0);c[z>>2]=h+n;h=Tv(0,0,f|0,m|0)|0;e=L()|0;e=Sv((t?f:h)|0,(t?m:e)|0,k|0,q|0)|0;f=g;h=L()|0;n=s;m=r}while(0);b=(c[y>>2]|0)!=0;p=(c[z>>2]|0)!=0;if(!(b|p)){B=104;break a}else{g=1;s=o;r=f;k=e;q=h}}if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{z=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}c[A>>2]=0;l=0;k=0}else B=104;while(0);if((B|0)==104){k=c[A>>2]|0;f=k;B=f;a[B>>0]=0;a[B+1>>0]=0;a[B+2>>0]=0;a[B+3>>0]=0;f=f+4|0;a[f>>0]=0;a[f+1>>0]=0;a[f+2>>0]=0;a[f+3>>0]=0;f=0}c[i>>2]=l;c[j>>2]=k-l;B=f;Ra=C;return B|0}function nr(b,e,f){b=b|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,y=0;g=c[f>>2]|0;p=c[e>>2]|0;h=c[b>>2]|0;a:while(1){r=h;q=p;n=a[q>>0]|0;switch(n<<24>>24){case 0:{if(!(a[g>>0]|0)){i=123;break a}else i=2147483647;break}case 1:{j=a[q+1>>0]|0;i=j&255;if(i&128){y=d[q+2>>0]|0;i=y<<7|j&127;if(y&128){y=d[q+3>>0]|0;i=y<<14|i&16383;if(y&128){y=d[q+4>>0]|0;i=y<<21|i&2097151;if(y&128)i=(a[q+5>>0]&7)<<28|i&268435455}}}if(!i){g=267;i=124;break a}break}default:i=0}o=g;l=a[o>>0]|0;switch(l<<24>>24){case 1:{k=a[o+1>>0]|0;j=k&255;if(j&128){y=d[o+2>>0]|0;j=y<<7|k&127;if(y&128){y=d[o+3>>0]|0;j=y<<14|j&16383;if(y&128){y=d[o+4>>0]|0;j=y<<21|j&2097151;if(y&128)j=(a[o+5>>0]&7)<<28|j&268435455}}}if(!j){g=267;i=124;break a}else m=j;break}case 0:{m=2147483647;break}default:m=0}do if((i|0)!=(m|0))if((i|0)<(m|0)){if(!i){h=0;l=r;i=n}else{l=r+1|0;k=l;m=i;j=((i|0)<0)<<31>>31;while(1){h=m&255;i=k+1|0;a[k>>0]=h|-128;m=bw(m|0,j|0,7)|0;j=L()|0;if((m|0)==0&(j|0)==0)break;else k=i}a[k>>0]=h&127;i=i-l+1|0;a[r>>0]=1;h=i;l=r+i|0;i=a[q+i>>0]|0}j=q+h|0;k=j;i=i<<24>>24;if(!(i&254))h=k;else{h=j;do{h=h+1|0;y=i;i=a[h>>0]|0}while((i&254|y&128|0)!=0)}y=h-k|0;ew(l|0,j|0,y|0)|0;i=h;h=l+y|0;break}else{if(!m){g=0;k=r;h=l}else{k=r+1|0;j=k;l=m;i=((m|0)<0)<<31>>31;while(1){g=l&255;h=j+1|0;a[j>>0]=g|-128;l=bw(l|0,i|0,7)|0;i=L()|0;if((l|0)==0&(i|0)==0)break;else j=h}a[j>>0]=g&127;h=h-k+1|0;a[r>>0]=1;g=h;k=r+h|0;h=a[o+h>>0]|0}i=o+g|0;j=i;h=h<<24>>24;if(!(h&254))g=j;else{g=i;do{g=g+1|0;y=h;h=a[g>>0]|0}while((h&254|y&128|0)!=0)}h=g-j|0;ew(k|0,i|0,h|0)|0;i=p;h=k+h|0;break}else{if(!i){g=0;i=n}else{k=r+1|0;j=k;l=i;i=((i|0)<0)<<31>>31;while(1){g=l&255;h=j+1|0;a[j>>0]=g|-128;l=bw(l|0,i|0,7)|0;i=L()|0;if((l|0)==0&(i|0)==0)break;else j=h}a[j>>0]=g&127;i=h-k+1|0;a[r>>0]=1;g=i;h=r+i|0;i=a[q+i>>0]|0}m=q+g|0;l=m;q=o+g|0;p=q;g=i&255;do if(!(g&128)){j=1;o=i&255;n=0}else{y=d[m+1>>0]|0;g=y<<7|g&127;if(!(y&128)){j=2;o=g;n=0;break}y=d[m+2>>0]|0;g=y<<14|g&16383;if(!(y&128)){j=3;o=g;n=0;break}y=d[m+3>>0]|0;g=y<<21|g&2097151;if(!(y&128)){j=4;o=g;n=0;break}i=28;j=m+4|0;g=g&268435455;k=0;do{y=j;j=j+1|0;y=d[y>>0]|0;x=cw(y&127|0,0,i|0)|0;g=Sv(x|0,L()|0,g|0,k|0)|0;k=L()|0;i=i+7|0}while(i>>>0<64&((y&128|0)!=0|0!=0));j=j-l|0;o=g;n=k}while(0);i=m+j|0;j=a[q>>0]|0;g=j&255;do if(!(g&128)){k=1;j=j&255;l=0}else{y=d[q+1>>0]|0;g=y<<7|g&127;if(!(y&128)){k=2;j=g;l=0;break}y=d[q+2>>0]|0;g=y<<14|g&16383;if(!(y&128)){k=3;j=g;l=0;break}y=d[q+3>>0]|0;g=y<<21|g&2097151;if(!(y&128)){k=4;j=g;l=0;break}j=28;k=q+4|0;g=g&268435455;l=0;do{y=k;k=k+1|0;y=d[y>>0]|0;x=cw(y&127|0,0,j|0)|0;g=Sv(x|0,L()|0,g|0,l|0)|0;l=L()|0;j=j+7|0}while(j>>>0<64&((y&128|0)!=0|0!=0));k=k-p|0;j=g}while(0);g=q+k|0;y=n;x=o;t=j;u=0;v=0;while(1){q=(y|0)<(l|0)|(y|0)==(l|0)&x>>>0>>0;r=q?x:t;s=q?y:l;p=h;m=Tv(r|0,s|0,u|0,v|0)|0;j=p;o=L()|0;while(1){k=m&255;n=j+1|0;a[j>>0]=k|-128;m=bw(m|0,o|0,7)|0;o=L()|0;if((m|0)==0&(o|0)==0)break;else j=n}a[j>>0]=k&127;w=p+(n-h)|0;h=w;u=Sv(r|0,s|0,-2,-1)|0;v=L()|0;do if((x|0)==(t|0)&(y|0)==(l|0)){n=i;k=a[n>>0]|0;if((k&255)>1){j=k&255;do if(!(j&128)){l=1;j=k&255;i=0}else{t=d[n+1>>0]|0;j=t<<7|j&127;if(!(t&128)){l=2;i=0;break}t=d[n+2>>0]|0;j=t<<14|j&16383;if(!(t&128)){l=3;i=0;break}t=d[n+3>>0]|0;j=t<<21|j&2097151;if(!(t&128)){l=4;i=0;break}k=28;l=n+4|0;j=j&268435455;m=0;do{t=l;l=l+1|0;t=d[t>>0]|0;s=cw(t&127|0,0,k|0)|0;j=Sv(s|0,L()|0,j|0,m|0)|0;m=L()|0;k=k+7|0}while(k>>>0<64&((t&128|0)!=0|0!=0));l=l-i|0;i=m}while(0);m=Sv(x|0,y|0,-2,-1)|0;m=Sv(m|0,L()|0,j|0,i|0)|0;i=n+l|0;p=L()|0}else{m=2147483647;p=0}o=g;k=a[o>>0]|0;if((k&255)>1){j=k&255;do if(!(j&128)){l=1;j=k&255;g=0}else{t=d[o+1>>0]|0;j=t<<7|j&127;if(!(t&128)){l=2;g=0;break}t=d[o+2>>0]|0;j=t<<14|j&16383;if(!(t&128)){l=3;g=0;break}t=d[o+3>>0]|0;j=t<<21|j&2097151;if(!(t&128)){l=4;g=0;break}k=28;l=o+4|0;j=j&268435455;n=0;do{t=l;l=l+1|0;t=d[t>>0]|0;s=cw(t&127|0,0,k|0)|0;j=Sv(s|0,L()|0,j|0,n|0)|0;n=L()|0;k=k+7|0}while(k>>>0<64&((t&128|0)!=0|0!=0));l=l-g|0;g=n}while(0);k=Sv(x|0,y|0,-2,-1)|0;k=Sv(k|0,L()|0,j|0,g|0)|0;g=o+l|0;j=p;l=L()|0}else{j=p;k=2147483647;l=0}}else if(q){o=i;k=a[o>>0]|0;if((k&255)<=1){m=2147483647;j=0;k=t;break}j=k&255;do if(!(j&128)){m=1;j=k&255;i=0}else{s=d[o+1>>0]|0;j=s<<7|j&127;if(!(s&128)){m=2;i=0;break}s=d[o+2>>0]|0;j=s<<14|j&16383;if(!(s&128)){m=3;i=0;break}s=d[o+3>>0]|0;j=s<<21|j&2097151;if(!(s&128)){m=4;i=0;break}k=28;m=o+4|0;j=j&268435455;n=0;do{s=m;m=m+1|0;s=d[s>>0]|0;r=cw(s&127|0,0,k|0)|0;j=Sv(r|0,L()|0,j|0,n|0)|0;n=L()|0;k=k+7|0}while(k>>>0<64&((s&128|0)!=0|0!=0));m=m-i|0;i=n}while(0);k=Sv(x|0,y|0,-2,-1)|0;j=Sv(k|0,L()|0,j|0,i|0)|0;i=o+m|0;m=j;j=L()|0;k=t;break}else{o=g;k=a[o>>0]|0;if((k&255)<=1){m=x;j=y;k=2147483647;l=0;break}j=k&255;do if(!(j&128)){m=1;j=k&255;g=0}else{s=d[o+1>>0]|0;j=s<<7|j&127;if(!(s&128)){m=2;g=0;break}s=d[o+2>>0]|0;j=s<<14|j&16383;if(!(s&128)){m=3;g=0;break}s=d[o+3>>0]|0;j=s<<21|j&2097151;if(!(s&128)){m=4;g=0;break}k=28;m=o+4|0;j=j&268435455;n=0;do{s=m;m=m+1|0;s=d[s>>0]|0;r=cw(s&127|0,0,k|0)|0;j=Sv(r|0,L()|0,j|0,n|0)|0;n=L()|0;k=k+7|0}while(k>>>0<64&((s&128|0)!=0|0!=0));m=m-g|0;g=n}while(0);k=Sv(t|0,l|0,-2,-1)|0;k=Sv(k|0,L()|0,j|0,g|0)|0;g=o+m|0;m=x;j=y;l=L()|0;break}while(0);if(!((m|0)!=2147483647|(j|0)!=0|((k|0)!=2147483647|(l|0)!=0))){h=w;break}else{y=j;x=m;t=k}}}while(0);p=i}if((i|0)==123){y=h;a[y>>0]=0;c[b>>2]=y+1;c[e>>2]=p+1;c[f>>2]=g+1;f=0;return f|0}else if((i|0)==124)return g|0;return 0}function or(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,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;j=c[b>>2]|0;k=c[h>>2]|0;n=c[i>>2]|0;m=k;if((a[m>>0]|0)==1){o=m+1|0;l=a[o>>0]|0;k=l&255;if(k&128){D=d[m+2>>0]|0;k=D<<7|l&127;if(D&128){D=d[m+3>>0]|0;k=D<<14|k&16383;if(D&128){D=d[m+4>>0]|0;k=D<<21|k&2097151;if(!(D&128))l=4;else{k=(a[m+5>>0]&7)<<28|k&268435455;l=5}}else l=3}else l=2}else l=1;p=k;k=o+l|0}else p=0;o=n;if((a[o>>0]|0)==1){n=o+1|0;m=a[n>>0]|0;l=m&255;if(l&128){D=d[o+2>>0]|0;l=D<<7|m&127;if(D&128){D=d[o+3>>0]|0;l=D<<14|l&16383;if(D&128){D=d[o+4>>0]|0;l=D<<21|l&2097151;if(!(D&128))m=4;else{l=(a[o+5>>0]&7)<<28|l&268435455;m=5}}else m=3}else m=2}else m=1;n=n+m|0}else l=0;C=((e|0)<0)<<31>>31;D=(f|0)==0;B=(f|0)!=0;A=(g|0)!=0;m=p;a:while(1){b:while(1){while(1){if((m|0)==(l|0))break b;if((m|0)<(l|0))break;l=a[n>>0]|0;o=l<<24>>24;if(o&254)do{n=n+1|0;l=a[n>>0]|0;z=o;o=l<<24>>24}while((o&254|z&128|0)!=0);if(!(l<<24>>24)){l=123;break a}p=n+1|0;o=a[p>>0]|0;l=o&255;if(l&128){z=d[n+2>>0]|0;l=z<<7|o&127;if(z&128){z=d[n+3>>0]|0;l=z<<14|l&16383;if(z&128){z=d[n+4>>0]|0;l=z<<21|l&2097151;if(!(z&128))n=4;else{l=(a[n+5>>0]&7)<<28|l&268435455;n=5}}else n=3}else n=2}else n=1;n=p+n|0}m=a[k>>0]|0;o=m<<24>>24;if(o&254)do{k=k+1|0;m=a[k>>0]|0;z=o;o=m<<24>>24}while((o&254|z&128|0)!=0);if(!(m<<24>>24)){l=124;break a}p=k+1|0;o=a[p>>0]|0;m=o&255;if(m&128){z=d[k+2>>0]|0;m=z<<7|o&127;if(z&128){z=d[k+3>>0]|0;m=z<<14|m&16383;if(z&128){z=d[k+4>>0]|0;m=z<<21|m&2097151;if(!(z&128))k=4;else{m=(a[k+5>>0]&7)<<28|m&268435455;k=5}}else k=3}else k=2}else k=1;k=p+k|0}t=j;if(m){a[t>>0]=1;o=t+1|0;p=m;m=((m|0)<0)<<31>>31;while(1){l=p&255;j=o+1|0;a[o>>0]=l|-128;p=bw(p|0,m|0,7)|0;m=L()|0;if((p|0)==0&(m|0)==0)break;else o=j}a[o>>0]=l&127}f=k;m=a[f>>0]|0;l=m&255;do if(!(l&128)){k=1;l=m&255;p=0}else{z=d[f+1>>0]|0;l=z<<7|l&127;if(!(z&128)){k=2;p=0;break}z=d[f+2>>0]|0;l=z<<14|l&16383;if(!(z&128)){k=3;p=0;break}z=d[f+3>>0]|0;l=z<<21|l&2097151;if(!(z&128)){k=4;p=0;break}m=28;o=f+4|0;l=l&268435455;p=0;do{z=o;o=o+1|0;z=d[z>>0]|0;y=cw(z&127|0,0,m|0)|0;l=Sv(y|0,L()|0,l|0,p|0)|0;p=L()|0;m=m+7|0}while(m>>>0<64&((z&128|0)!=0|0!=0));k=o-k|0}while(0);k=f+k|0;r=Sv(l|0,p|0,-2,-1)|0;s=L()|0;q=n;o=a[q>>0]|0;m=o&255;do if(!(m&128)){n=1;g=0;m=o&255}else{z=d[q+1>>0]|0;m=z<<7|m&127;if(!(z&128)){n=2;g=0;break}z=d[q+2>>0]|0;m=z<<14|m&16383;if(!(z&128)){n=3;g=0;break}z=d[q+3>>0]|0;m=z<<21|m&2097151;if(!(z&128)){n=4;g=0;break}o=28;f=q+4|0;m=m&268435455;g=0;do{z=f;f=f+1|0;z=d[z>>0]|0;y=cw(z&127|0,0,o|0)|0;m=Sv(y|0,L()|0,m|0,g|0)|0;g=L()|0;o=o+7|0}while(o>>>0<64&((z&128|0)!=0|0!=0));n=f-n|0}while(0);n=q+n|0;if((p|0)<0|(p|0)==0&l>>>0<2|((g|0)<0|(g|0)==0&m>>>0<2)){l=120;break}l=Sv(m|0,g|0,-2,-1)|0;f=t;z=r;o=0;p=0;m=L()|0;c:while(1){w=k;u=Sv(z|0,s|0,e|0,C|0)|0;v=L()|0;x=l;y=m;l=p;while(1){if(!((x|0)==(u|0)&(y|0)==(v|0))?(y|0)>(v|0)|(y|0)==(v|0)&x>>>0>u>>>0|(A|((y|0)<(s|0)|(y|0)==(s|0)&x>>>0<=z>>>0)):0){t=f;q=o;r=l}else{q=D?x:z;r=D?y:s;g=j;o=Tv(2,0,o|0,l|0)|0;o=Sv(o|0,L()|0,q|0,r|0)|0;l=g;p=L()|0;while(1){m=o&255;f=l+1|0;a[l>>0]=m|-128;o=bw(o|0,p|0,7)|0;p=L()|0;if((o|0)==0&(p|0)==0)break;else l=f}a[l>>0]=m&127;t=0;j=g+(f-j)|0}if(((y|0)>(s|0)|(y|0)==(s|0)&x>>>0>z>>>0)&(B|((y|0)>(v|0)|(y|0)==(v|0)&x>>>0>u>>>0)))break;g=n;m=a[g>>0]|0;if((m&255)<2)break c;l=m&255;do if(!(l&128)){n=1;l=m&255;m=0}else{f=d[g+1>>0]|0;l=f<<7|l&127;if(!(f&128)){n=2;m=0;break}f=d[g+2>>0]|0;l=f<<14|l&16383;if(!(f&128)){n=3;m=0;break}f=d[g+3>>0]|0;l=f<<21|l&2097151;if(!(f&128)){n=4;m=0;break}o=28;p=g+4|0;l=l&268435455;m=0;do{f=p;p=p+1|0;f=d[f>>0]|0;E=cw(f&127|0,0,o|0)|0;l=Sv(E|0,L()|0,l|0,m|0)|0;m=L()|0;o=o+7|0}while(o>>>0<64&((f&128|0)!=0|0!=0));n=p-n|0}while(0);o=Sv(x|0,y|0,-2,-1)|0;o=Sv(o|0,L()|0,l|0,m|0)|0;f=t;n=g+n|0;x=o;y=L()|0;o=q;l=r}m=a[k>>0]|0;if((m&255)<2)break;l=m&255;do if(!(l&128)){o=1;l=m&255;m=0}else{E=d[k+1>>0]|0;l=E<<7|l&127;if(!(E&128)){o=2;m=0;break}E=d[k+2>>0]|0;l=E<<14|l&16383;if(!(E&128)){o=3;m=0;break}E=d[k+3>>0]|0;l=E<<21|l&2097151;if(!(E&128)){o=4;m=0;break}o=28;p=k+4|0;l=l&268435455;m=0;do{E=p;p=p+1|0;E=d[E>>0]|0;v=cw(E&127|0,0,o|0)|0;l=Sv(v|0,L()|0,l|0,m|0)|0;m=L()|0;o=o+7|0}while(o>>>0<64&((E&128|0)!=0|0!=0));o=p-w|0}while(0);p=Sv(z|0,s|0,-2,-1)|0;p=Sv(p|0,L()|0,l|0,m|0)|0;f=t;k=k+o|0;z=p;s=L()|0;o=q;p=r;l=x;m=y}j=(t|0)==0?j:t;l=a[k>>0]|0;m=l<<24>>24;if(!(m&254))o=l;else{do{k=k+1|0;l=a[k>>0]|0;E=m;m=l<<24>>24}while((m&254|E&128|0)!=0);o=l}l=a[n>>0]|0;m=l<<24>>24;if(m&254)do{n=n+1|0;l=a[n>>0]|0;E=m;m=l<<24>>24}while((m&254|E&128|0)!=0);if(!(o<<24>>24)){l=122;break}if(!(l<<24>>24)){l=121;break}o=k+1|0;l=a[o>>0]|0;m=l&255;if(m&128){E=d[k+2>>0]|0;l=E<<7|l&127;if(E&128){E=d[k+3>>0]|0;l=E<<14|l&16383;if(E&128){E=d[k+4>>0]|0;l=E<<21|l&2097151;if(!(E&128)){m=l;k=4}else{m=(a[k+5>>0]&7)<<28|l&268435455;k=5}}else{m=l;k=3}}else{m=l;k=2}}else k=1;k=o+k|0;p=n+1|0;o=a[p>>0]|0;l=o&255;if(l&128){E=d[n+2>>0]|0;l=E<<7|o&127;if(E&128){E=d[n+3>>0]|0;l=E<<14|l&16383;if(E&128){E=d[n+4>>0]|0;l=E<<21|l&2097151;if(!(E&128))n=4;else{l=(a[n+5>>0]&7)<<28|l&268435455;n=5}}else n=3}else n=2}else n=1;n=p+n|0}l=0;while(1){m=a[n>>0]|0;n=n+1|0;if(!(l<<24>>24|m))break;else l=m&128}l=0;while(1){m=a[k>>0]|0;k=k+1|0;if(!(l<<24>>24|m))break;else l=m&128}c[h>>2]=k;c[i>>2]=n;if((c[b>>2]|0)==(j|0)){E=0;return E|0}a[j>>0]=0;c[b>>2]=j+1;E=1;return E|0}function pr(b,e,f){b=b|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,y=0,z=0,A=0,B=0,C=0;C=Ra;Ra=Ra+16|0;z=C+4|0;A=C;B=c[b>>2]|0;a:do if(((e|0)!=0?(a[b+52>>0]|0)==(a[B+235>>0]|0):0)?((c[f+64>>2]|0)+-1|0)>>>0<4:0){v=f+64|0;h=c[v>>2]|0;if((h|0)>0){e=0;g=0;do{if(c[f+72+(e*24|0)+12>>2]|0){y=v;break a}b=c[f+72+(e*24|0)+20>>2]|0;if(b){if(!(c[b+36>>2]|0)){y=v;break a}}else b=0;g=(b|0)==0?g:1;e=e+1|0}while((e|0)<(h|0));if(g){u=c[f+68>>2]|0;u=(u|0)<(c[B+24>>2]|0)?u:-1;t=B+235|0;if((h|0)<=0){B=0;z=1;A=f+40|0;c[A>>2]=z;Ra=C;return B|0}q=0;b:while(1){r=c[f+72+(q*24|0)+20>>2]|0;if(r|0){e=c[f+72+(q*24|0)>>2]|0;g=c[f+72+(q*24|0)+4>>2]|0;h=c[r+4>>2]|0;s=(a[t>>0]|0)==0?157:158;b=eq(B,r,e,g)|0;if(b|0){e=1;k=74;break}do if((h|0)>0){j=c[r>>2]|0;i=0;while(1){b=c[j+(i<<2)>>2]|0;if(!(c[b+40>>2]|0)){k=23;break}o=c[b+60>>2]|0;p=Lu(c[b+64>>2]|0,e,(o|0)>(g|0)?g:o)|0;if(((p|0)==0?o-g|0:p)|0){k=23;break}x=i+1|0;if((x|0)<(h|0))i=x;else{k=22;break}}if((k|0)==22){w=r+8|0;c[w>>2]=x}else if((k|0)==23){b=r+8|0;c[b>>2]=i;if(!i)break;else w=b}p=0;k=j;while(1){o=c[k+(p<<2)>>2]|0;if((a[t>>0]|0)!=0?(c[o+56>>2]|0)!=0:0){a[z>>0]=0;m=o+88|0;n=m;c[n>>2]=0;c[n+4>>2]=0;n=o+84|0;c[n>>2]=0;kq(0,c[o+72>>2]|0,c[o+76>>2]|0,o+80|0,m,n,z)}else{l=o+72|0;j=o+40|0;m=o+52|0;b=c[m>>2]|0;c:do if(b|0){k=(c[l>>2]|0)+10|0;n=o+48|0;i=o+44|0;e=c[n>>2]|0;h=b;while(1){b=c[j>>2]|0;if((k-b|0)<=(e|0))break c;g=(c[i>>2]|0)-e|0;g=(g|0)<4096?g:4096;b=jd(h,b+e|0,g,e,81)|0;if(b|0){e=1;k=74;break b}b=(c[n>>2]|0)+g|0;c[n>>2]=b;b=(c[j>>2]|0)+b|0;e=b+20|0;do{a[b>>0]=0;b=b+1|0}while((b|0)<(e|0));e=c[n>>2]|0;h=c[m>>2]|0;if((e|0)==(c[i>>2]|0))break;if(!h)break c}d:do if(h|0){b=c[h+20>>2]|0;gc(c[h+16>>2]|0)|0;do if(b|0){if(c[b+480>>2]|0){Xd(b,h);break d}e=h;if((c[b+304>>2]|0)>>>0>e>>>0)break;if((c[b+308>>2]|0)>>>0<=e>>>0)break;k=b+300|0;c[h>>2]=c[k>>2];c[k>>2]=h;break d}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{k=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);c[m>>2]=0;c[n>>2]=0}while(0);j=c[l>>2]|0;i=o+88|0;b=a[j>>0]|0;e=b&255;do if(!(e&128)){n=i;c[n>>2]=b&255;c[n+4>>2]=0;b=1}else{n=d[j+1>>0]|0;b=n<<7|e&127;if(!(n&128)){n=i;c[n>>2]=b;c[n+4>>2]=0;b=2;break}n=d[j+2>>0]|0;b=n<<14|b&16383;if(!(n&128)){n=i;c[n>>2]=b;c[n+4>>2]=0;b=3;break}n=d[j+3>>0]|0;b=n<<21|b&2097151;if(!(n&128)){n=i;c[n>>2]=b;c[n+4>>2]=0;b=4;break}g=28;h=j+4|0;b=b&268435455;e=0;do{n=h;h=h+1|0;n=d[n>>0]|0;m=cw(n&127|0,0,g|0)|0;b=Sv(m|0,L()|0,b|0,e|0)|0;e=L()|0;g=g+7|0}while(g>>>0<64&((n&128|0)!=0|0!=0));n=i;c[n>>2]=b;c[n+4>>2]=e;b=h-j|0}while(0);c[o+80>>2]=j+b}b=p+1|0;k=c[r>>2]|0;if((b|0)>=(c[w>>2]|0))break;else p=b}if(p|0){g=p;do{h=g;g=g+-1|0;e:do if((h|0)<=(p|0)){b=g;j=c[k+(g<<2)>>2]|0;do{e=b;b=b+1|0;i=k+(b<<2)|0;if((Xa[s&255](j,c[i>>2]|0)|0)<0)break e;o=k+(e<<2)|0;n=c[i>>2]|0;j=c[o>>2]|0;c[i>>2]=j;c[o>>2]=n}while((b|0)<(p|0))}while(0)}while((h|0)>1)}}else c[r+8>>2]=0;while(0);c[r+24>>2]=u}q=q+1|0;if((q|0)>=(c[v>>2]|0)){b=0;e=1;k=74;break}}if((k|0)==74){B=f+40|0;c[B>>2]=e;Ra=C;return b|0}}else y=v}else y=v}else k=4;while(0);if((k|0)==4)y=f+64|0;g=f+68|0;e=0;while(1){if((e|0)>=(c[y>>2]|0)){b=0;e=0;k=74;break}if(!(c[f+72+(e*24|0)+20>>2]|0))b=0;else{c[z>>2]=0;c[A>>2]=0;b=jr(B,f+72+(e*24|0)|0,c[g>>2]|0,z,A)|0;if(!b)b=kr(B,f,e,c[A>>2]|0,c[z>>2]|0)|0}if(!b)e=e+1|0;else{e=0;k=74;break}}if((k|0)==74){B=f+40|0;c[B>>2]=e;Ra=C;return b|0}return 0}function qr(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,D=0,E=0,F=0;F=Ra;Ra=Ra+112|0;B=F+108|0;x=F;y=F+104|0;z=F+100|0;A=F+96|0;if(c[e>>2]|0){Ra=F;return}h=b+52|0;q=a[h>>0]|0;a[d+33>>0]=1;switch(c[d>>2]|0){case 3:case 1:{n=c[d+12>>2]|0;m=c[d+16>>2]|0;if(a[n+34>>0]|0){qr(b,m,e);D=m+24|0;E=c[D+4>>2]|0;e=d+24|0;c[e>>2]=c[D>>2];c[e+4>>2]=E;a[d+32>>0]=a[m+32>>0]|0;Ra=F;return}D=(a[m+34>>0]|0)==0;qr(b,n,e);if(!D){D=n+24|0;E=c[D+4>>2]|0;e=d+24|0;c[e>>2]=c[D>>2];c[e+4>>2]=E;a[d+32>>0]=a[n+32>>0]|0;Ra=F;return}qr(b,m,e);o=n+32|0;a:do if(!(a[o>>0]|0)){l=m+32|0;h=q<<24>>24==0;g=h?1:-1;h=h?0:-1;f=n+24|0;i=m+24|0;while(1){j=a[l>>0]|0;if(j<<24>>24)break;if(c[e>>2]|0)break;k=f;D=i;D=Tv(c[k>>2]|0,c[k+4>>2]|0,c[D>>2]|0,c[D+4>>2]|0)|0;D=Yv(D|0,L()|0,g|0,h|0)|0;k=L()|0;if((D|0)==0&(k|0)==0)break;if((k|0)<0)qr(b,n,e);else qr(b,m,e);if(a[o>>0]|0){E=17;break a}}C=f;D=c[C+4>>2]|0;f=d+24|0;c[f>>2]=c[C>>2];c[f+4>>2]=D;f=j<<24>>24!=0&1}else{f=n+24|0;E=17}while(0);if((E|0)==17){D=f;E=c[D+4>>2]|0;f=d+24|0;c[f>>2]=c[D>>2];c[f+4>>2]=E;f=1}a[d+32>>0]=f;if(f<<24>>24==0|(c[d>>2]|0)!=1){Ra=F;return}f=c[m+20>>2]|0;b:do if(c[f>>2]|0?(r=m+32|0,(c[e>>2]|0)==0):0){g=f+28|0;f=f+32|0;do{if(a[r>>0]|0)break b;gw(c[g>>2]|0,0,c[f>>2]|0)|0;qr(b,m,e)}while(!(c[e>>2]|0))}while(0);f=c[n+20>>2]|0;if(!f){Ra=F;return}if(!(c[f>>2]|0)){Ra=F;return}if(c[e>>2]|0){Ra=F;return}g=f+28|0;f=f+32|0;while(1){if(a[o>>0]|0){E=120;break}gw(c[g>>2]|0,0,c[f>>2]|0)|0;qr(b,n,e);if(c[e>>2]|0){E=120;break}}if((E|0)==120){Ra=F;return}break}case 4:{h=c[d+12>>2]|0;i=c[d+16>>2]|0;m=q<<24>>24==0;l=m?1:-1;m=m?0:-1;k=h+24|0;g=k;j=i+24|0;f=j;f=Tv(c[g>>2]|0,c[g+4>>2]|0,c[f>>2]|0,c[f+4>>2]|0)|0;f=Yv(f|0,L()|0,l|0,m|0)|0;g=L()|0;n=i+32|0;o=h+32|0;do if((a[n>>0]|0)==0?(p=a[o>>0]|0,!((g|0)<0&p<<24>>24==0)):0)if((g|0)>0|(g|0)==0&f>>>0>0|p<<24>>24!=0){qr(b,i,e);break}else{qr(b,h,e);qr(b,i,e);break}else E=33;while(0);if((E|0)==33)qr(b,h,e);if(!(a[o>>0]|0))f=0;else f=(a[n>>0]|0)!=0&1;a[d+32>>0]=f;i=j;h=c[i>>2]|0;i=c[i+4>>2]|0;g=k;f=c[g>>2]|0;g=c[g+4>>2]|0;if((a[n>>0]|0)==0?(e=Tv(f|0,g|0,h|0,i|0)|0,Yv(e|0,L()|0,l|0,m|0)|0,e=L()|0,!((a[o>>0]|0)==0&(e|0)<0)):0){d=d+24|0;c[d>>2]=h;c[d+4>>2]=i;Ra=F;return}d=d+24|0;c[d>>2]=f;c[d+4>>2]=g;Ra=F;return}case 2:{g=c[d+12>>2]|0;k=c[d+16>>2]|0;if(!(a[k+33>>0]|0))qr(b,k,e);qr(b,g,e);l=g+32|0;f=a[l>>0]|0;if(!(f<<24>>24)){j=k+32|0;i=q<<24>>24==0;h=i?1:-1;i=i?0:-1;g=g+24|0;if(!(c[e>>2]|0)){f=k+24|0;do{if(a[j>>0]|0)break;D=g;E=f;E=Tv(c[D>>2]|0,c[D+4>>2]|0,c[E>>2]|0,c[E+4>>2]|0)|0;E=Yv(E|0,L()|0,h|0,i|0)|0;D=L()|0;if(!((D|0)>0|(D|0)==0&E>>>0>0))break;qr(b,k,e)}while(!(c[e>>2]|0));f=a[l>>0]|0}else f=0}else g=g+24|0;D=g;E=c[D+4>>2]|0;e=d+24|0;c[e>>2]=c[D>>2];c[e+4>>2]=E;a[d+32>>0]=f;Ra=F;return}default:{D=c[d+20>>2]|0;u=D+24|0;w=D+28|0;do if(c[u>>2]|0?(f=c[w>>2]|0,f|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{C=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-C;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[w>>2]=0;v=D+32|0;c[v>>2]=0;c[u>>2]=0;C=d+32|0;t=c[b>>2]|0;do if(!(c[D+40>>2]|0)){E=a[t+235>>0]|0;f=E&255;if((a[h>>0]|0)!=E<<24>>24?(g=c[D+4>>2]|0,g|0):0){E=D+8|0;kq(f,c[D>>2]|0,g,E,D+16|0,v,C);c[w>>2]=c[E>>2];f=0;break}sr(t,D,C);f=0}else{a[B>>0]=0;s=D+64|0;do if((c[s>>2]|0)==1){f=tr(t,c[D+92>>2]|0,D+16|0,w,v)|0;if(!(c[w>>2]|0)){a[B>>0]=1;g=1;E=113}else{g=0;E=113}}else{h=a[h>>0]|0;f=x;g=f+96|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));r=D+44|0;b=D+16|0;q=h<<24>>24==0;p=q?1:-1;q=q?0:-1;f=0;while(1){c:do if(!f){g=c[s>>2]|0;if((g|0)>0){k=0;l=0;i=0;j=0;while(1){g=x+(l*24|0)|0;do if((c[r>>2]|0)!=(l|0)){f=c[D+72+(l*24|0)+20>>2]|0;if(!f){c[g>>2]=1;f=0;break}E=x+(l*24|0)+16|0;f=tr(t,f,x+(l*24|0)+8|0,E,x+(l*24|0)+20|0)|0;if(!(c[E>>2]|0))a[B>>0]=1}else{sr(t,D,B);c[x+(l*24|0)+16>>2]=c[w>>2];c[x+(l*24|0)+20>>2]=c[v>>2];o=b;E=c[o+4>>2]|0;f=x+(l*24|0)+8|0;c[f>>2]=c[o>>2];c[f+4>>2]=E;f=0}while(0);do if(!(c[g>>2]|0)){h=x+(l*24|0)+8|0;g=c[h>>2]|0;h=c[h+4>>2]|0;if(k|0?(E=Tv(i|0,j|0,g|0,h|0)|0,Yv(E|0,L()|0,p|0,q|0)|0,(L()|0)>=0):0)break;k=1;i=g;j=h}while(0);if(f|0)break;l=l+1|0;g=a[B>>0]|0;h=c[s>>2]|0;if(!(g<<24>>24==0&(l|0)<(h|0))){f=0;E=81;break c}}g=a[B>>0]|0;E=80}else{f=0;i=0;j=0}}else{g=0;i=0;j=0;E=80}while(0);if((E|0)==80){h=c[s>>2]|0;E=81}if((E|0)==81){E=0;if((h|0)>0){m=0;k=g;o=g;l=g;while(1){if(k<<24>>24==0&(f|0)==0){g=o;while(1){f=x+(m*24|0)|0;if(c[f>>2]|0){h=m;f=0;m=l;k=0;break}k=x+(m*24|0)+8|0;o=k;o=Tv(c[o>>2]|0,c[o+4>>2]|0,i|0,j|0)|0;Yv(o|0,L()|0,p|0,q|0)|0;if((L()|0)>=0){h=m;f=0;m=l;k=0;break}do if((c[r>>2]|0)==(m|0)){sr(t,D,B);c[x+(m*24|0)+16>>2]=c[w>>2];c[x+(m*24|0)+20>>2]=c[v>>2];l=b;f=c[l+4>>2]|0;g=k;c[g>>2]=c[l>>2];c[g+4>>2]=f;g=a[B>>0]|0;f=0;l=g}else{h=c[D+72+(m*24|0)+20>>2]|0;if(!h){c[f>>2]=1;f=0;break}o=x+(m*24|0)+16|0;f=tr(t,h,k,o,x+(m*24|0)+20|0)|0;if(c[o>>2]|0)break;a[B>>0]=1;l=1;g=1}while(0);o=k;k=c[o>>2]|0;o=c[o+4>>2]|0;n=Tv(k|0,o|0,i|0,j|0)|0;n=Yv(n|0,L()|0,p|0,q|0)|0;h=L()|0;n=(h|0)>0|(h|0)==0&n>>>0>0;h=n?0:m;i=n?k:i;j=n?o:j;if(l<<24>>24==0&(f|0)==0){m=h;l=0}else{m=l;k=l;break}}n=h;h=c[s>>2]|0;l=m}else{n=m;g=o}m=n+1|0;if((m|0)>=(h|0))break;else o=g}}if(!(g<<24>>24))g=h;else break}g=c[x+((g+-1|0)*24|0)+20>>2]|0;n=nb(g+8|0)|0;if(!n){E=112;break}ew(n|0,c[x+(((c[s>>2]|0)+-1|0)*24|0)+16>>2]|0,g+1|0)|0;g=n+g|0;o=g;a[o>>0]=0;a[o+1>>0]=0;a[o+2>>0]=0;a[o+3>>0]=0;g=g+4|0;a[g>>0]=0;a[g+1>>0]=0;a[g+2>>0]=0;a[g+3>>0]=0;g=c[s>>2]|0;d:do if((g|0)>1){l=n;k=0;h=0;m=g+-1|0;while(1){if(!(c[x+(h*24|0)>>2]|0)){c[y>>2]=c[x+(h*24|0)+16>>2];c[z>>2]=n;c[A>>2]=n;o=(or(A,m-h|0,0,1,y,z)|0)==0;if(o)break;k=(c[A>>2]|0)-l|0;g=c[s>>2]|0}h=h+1|0;m=g+-1|0;if((m|0)<=(h|0))break d}g=c[s>>2]|0}else{k=0;h=0}while(0);if((h|0)==(g+-1|0)){E=110;break}if(!(c[7324]|0))ab[c[29344>>2]&127](n);else{o=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n)}}if((E|0)==110){g=b;c[g>>2]=i;c[g+4>>2]=j;c[w>>2]=n;c[v>>2]=k;c[u>>2]=1;g=0}else if((E|0)==112){f=7;break}E=113}while(0);if((E|0)==113)a[C>>0]=g}while(0);c[e>>2]=f;E=D+16|0;e=c[E+4>>2]|0;d=d+24|0;c[d>>2]=c[E>>2];c[d+4>>2]=e;Ra=F;return}}}function rr(d,f){d=d|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,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;I=Ra;Ra=Ra+32|0;y=I+24|0;F=I+20|0;z=I+16|0;A=I+12|0;B=I+8|0;C=I+4|0;H=I;g=c[f>>2]|0;c[H>>2]=g;if(g|0){f=0;H=g;H=(H|0)==0;H=f&H;H=H&1;Ra=I;return H|0}G=d+28|0;if(c[G>>2]|0?(x=ur(0,d)|0,c[H>>2]=x,(x|0)==0):0){c[F>>2]=0;a:do if(c[G>>2]|0){g=c[d>>2]|0;t=c[g+36>>2]|0;h=c[t>>2]|0;u=d+12|0;v=Oc(c[u>>2]|0,0)|0;w=L()|0;x=g+24|0;i=c[x>>2]|0;if((i|0)>0){q=g+32|0;r=d+20|0;s=h+20|0;p=h+16|0;n=0;h=i;while(1){if(!(a[(c[q>>2]|0)+n>>0]|0)){j=c[u>>2]|0;o=n+1|0;i=(j|0)==0;do if(i)g=29576;else{g=c[j+120>>2]|0;if(g|0?o>>>0<(e[j+144>>1]|0)>>>0:0){g=g+(o*40|0)|0;break}g=c[j>>2]|0;c[g+64>>2]=25;Ne(g,25);g=29576}while(0);h=b[g+8>>1]|0;if((h&514)==514?(a[g+10>>0]|0)==1:0)k=c[g+16>>2]|0;else if(!(h&1))k=Gg(g,1)|0;else k=0;if(!i){h=c[j>>2]|0;i=j+40|0;g=c[i>>2]|0;if((g|0)==3082|(a[h+81>>0]|0)!=0){og(h);g=7}else g=c[h+68>>2]&g;c[i>>2]=g}h=c[r>>2]|0;i=c[t>>2]|0;c[y>>2]=0;g=Za[c[i+12>>2]&127](t,k,-1,y)|0;do if(!g){c[c[y>>2]>>2]=t;if((c[i>>2]|0)>0?(D=Xa[c[i+24>>2]&255](c[y>>2]|0,h)|0,D|0):0){Wa[c[i+16>>2]&127](c[y>>2]|0)|0;c[y>>2]=0;g=D;h=0;E=29;break}h=c[y>>2]|0;c[F>>2]=0;m=h;do{c[z>>2]=0;c[A>>2]=0;c[B>>2]=0;c[C>>2]=0;g=$a[c[s>>2]&127](m,y,z,A,B,C)|0;c[F>>2]=g;i=c[G>>2]|0;if((g|0)==0&(i|0)!=0){g=0;do{l=c[i>>2]|0;k=c[i+4>>2]|0;do if((k|0)==(n|0)?1:(k|0)>=(c[x>>2]|0)){j=c[C>>2]|0;if(!((c[l+12>>2]|0)==0|(j|0)==0)){j=0;break}k=c[l+4>>2]|0;J=c[z>>2]|0;if((k|0)!=(J|0)?!((k|0)<(J|0)&(c[l+8>>2]|0)!=0):0){j=0;break}if(Lu(c[y>>2]|0,c[l>>2]|0,k)|0){j=0;break}wr(i+12|0,v,w,n,0,j,((j|0)<0)<<31>>31,F)|0;j=c[F>>2]|0;g=j}else j=0;while(0);i=c[i+8>>2]|0}while((j|0)==0&(i|0)!=0)}}while(!(g|0))}else{h=c[y>>2]|0;E=29}while(0);if((E|0)==29){E=0;c[F>>2]=g}if(h|0)Wa[c[p>>2]&127](h)|0;if((g|0)!=101)break a;c[F>>2]=0;g=o;h=c[x>>2]|0}else g=n+1|0;if((g|0)<(h|0))n=g;else break}}g=c[G>>2]|0;if(g){i=g;g=0;do{h=i+12|0;if(!(c[h>>2]|0))h=0;else{g=xr(h,0,0)|0;c[F>>2]=g;h=g}i=c[i+8>>2]|0}while((h|0)==0&(i|0)!=0)}else g=0}else g=0;while(0);c[H>>2]=g}j=(vr(d,c[d+16>>2]|0,H)|0)==0;g=c[G>>2]|0;if(g|0)do{h=g+12|0;i=c[h>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{J=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-J;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);c[h>>2]=0;g=c[g+8>>2]|0}while((g|0)!=0);J=c[H>>2]|0;c[f>>2]=J;H=j;J=(J|0)==0;J=H&J;J=J&1;Ra=I;return J|0}function sr(b,e,f){b=b|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;k=c[e>>2]|0;n=k+(c[e+4>>2]|0)|0;o=e+8|0;l=c[o>>2]|0;m=(l|0)==0;l=m?k:l;k=l;if(l>>>0>=n>>>0){o=1;a[f>>0]=o;return}h=a[l>>0]|0;g=h&255;do if(!(g&128)){i=1;g=h&255;h=0}else{j=d[l+1>>0]|0;g=j<<7|g&127;if(!(j&128)){i=2;h=0;break}j=d[l+2>>0]|0;g=j<<14|g&16383;if(!(j&128)){i=3;h=0;break}j=d[l+3>>0]|0;g=j<<21|g&2097151;if(!(j&128)){i=4;h=0;break}i=28;j=l+4|0;g=g&268435455;h=0;do{p=j;j=j+1|0;p=d[p>>0]|0;q=cw(p&127|0,0,i|0)|0;g=Sv(q|0,L()|0,g|0,h|0)|0;h=L()|0;i=i+7|0}while(i>>>0<64&((p&128|0)!=0|0!=0));i=j-k|0}while(0);q=l+i|0;j=q;b=m|(a[b+235>>0]|0)==0;m=e+16|0;k=m;i=c[k>>2]|0;k=c[k+4>>2]|0;l=Tv(0,0,g|0,h|0)|0;p=L()|0;p=Sv(i|0,k|0,(b?g:l)|0,(b?h:p)|0)|0;h=L()|0;g=m;c[g>>2]=p;c[g+4>>2]=h;c[e+28>>2]=j;g=q;h=0;while(1){i=a[g>>0]|0;g=g+1|0;if(!(h<<24>>24|i))break;else h=i&128}c[e+32>>2]=g-j;a:do if(g>>>0>>0)do{if(a[g>>0]|0)break a;g=g+1|0}while(g>>>0>>0);while(0);c[o>>2]=g;q=0;a[f>>0]=q;return}function tr(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,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;D=Ra;Ra=Ra+16|0;y=D+4|0;z=D;A=c[e+8>>2]|0;B=c[e>>2]|0;t=(a[b+235>>0]|0)==0?157:158;if(!A){c[g>>2]=0;C=0;Ra=D;return C|0}i=c[B>>2]|0;a:do if(c[i+80>>2]|0){u=(A|0)>1;v=A+-1|0;w=e+24|0;x=e+20|0;s=e+16|0;while(1){r=i+88|0;q=c[r>>2]|0;r=c[r+4>>2]|0;i=jq(b,i,y,z)|0;k=(i|0)==0;b:do if(k&u){j=1;while(1){i=c[B+(j<<2)>>2]|0;if(!(c[i+80>>2]|0)){i=j;break b}p=i+88|0;if(!((c[p>>2]|0)==(q|0)?(c[p+4>>2]|0)==(r|0):0)){i=j;break b}i=jq(b,i,0,0)|0;j=j+1|0;k=(i|0)==0;if(!(k&(j|0)<(A|0))){C=11;break}}}else{j=1;C=11}while(0);if((C|0)==11){C=0;if(k)i=j;else{C=45;break}}o=c[e>>2]|0;i=i+(((i|0)==(A|0))<<31>>31)|0;if((i|0)>0)do{l=i;i=i+-1|0;c:do if((l|0)<(A|0)){j=i;n=c[o+(i<<2)>>2]|0;do{k=j;j=j+1|0;m=o+(j<<2)|0;if((Xa[t&255](n,c[m>>2]|0)|0)<0)break c;p=o+(k<<2)|0;k=c[m>>2]|0;n=c[p>>2]|0;c[m>>2]=n;c[p>>2]=k}while((j|0)<(v|0))}while(0)}while((l|0)>1);i=c[z>>2]|0;if((i|0)>0?c[(c[B>>2]|0)+56>>2]|0:0){l=c[y>>2]|0;m=i+1|0;if((c[x>>2]|0)>(i|0))j=c[s>>2]|0;else{j=m<<1;c[x>>2]=j;k=c[s>>2]|0;if(mb()|0){i=7;C=45;break}j=sb(k,(j|0)>0?j:0,0)|0;if(!j){i=7;C=45;break}c[s>>2]=j}ew(j|0,l|0,m|0)|0;c[y>>2]=c[s>>2]}o=c[w>>2]|0;if((o|0)>-1){k=c[y>>2]|0;p=k+i|0;j=k;n=i;m=0;while(1){d:do if(j>>>0

        >>0){l=0;i=j;while(1){j=a[i>>0]|0;if(!(j&254|l)){l=i;break d}i=i+1|0;if(i>>>0

        >>0)l=j&128;else{l=i;break}}}else l=j;while(0);i=l-k|0;if((m|0)==(o|0))break;n=n-i|0;if(!n){k=l;i=0;break}k=l+1|0;j=a[k>>0]|0;i=j&255;if(i&128){m=d[l+2>>0]|0;i=m<<7|j&127;if(m&128){m=d[l+3>>0]|0;i=m<<14|i&16383;if(m&128){m=d[l+4>>0]|0;i=m<<21|i&2097151;if(!(m&128))j=4;else{i=(a[l+5>>0]&7)<<28|i&268435455;j=5}}else j=3}else j=2}else j=1;j=k+j|0;k=l;m=i}j=k+i|0;if((j|0)!=(p|0))gw(j|0,0,p-j|0)|0;c[y>>2]=k;c[z>>2]=i}if((i|0)>0){C=46;break}if(!(c[(c[c[e>>2]>>2]|0)+80>>2]|0))break a;i=c[B>>2]|0}if((C|0)==45){C=i;Ra=D;return C|0}else if((C|0)==46){c[g>>2]=c[y>>2];C=f;c[C>>2]=q;c[C+4>>2]=r;c[h>>2]=i;C=0;Ra=D;return C|0}}while(0);c[g>>2]=0;C=0;Ra=D;return C|0}function ur(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=Ra;Ra=Ra+16|0;i=m;k=e+7|0;if(!(a[k>>0]|0)){d=0;Ra=m;return d|0}l=e+12|0;f=c[l>>2]|0;do if(!f){h=c[e>>2]|0;g=h+216|0;f=c[g>>2]|0;if(!f){c[i>>2]=c[h+220>>2];f=Bb(54912,i)|0;if(!f){h=7;break}h=qd(c[h+12>>2]|0,f,-1,129,0,l,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](f);else{i=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f)}if(h|0)break;f=c[l>>2]|0}else{c[l>>2]=f;c[g>>2]=0}a[e+8>>0]=1;j=13}else j=13;while(0);a:do if((j|0)==13){i=e+32|0;h=c[i>>2]|0;i=c[i+4>>2]|0;do if(!(Vc(f,1)|0)){f=c[f+100>>2]|0;g=f+8|0;if(!(b[g>>1]&9216)){j=f;c[j>>2]=h;c[j+4>>2]=i;b[g>>1]=4;break}else{Pg(f,h,i);break}}while(0);a[k>>0]=0;if((Gc(c[l>>2]|0)|0)==100){d=0;Ra=m;return d|0}f=c[l>>2]|0;do if(f|0){g=c[f>>2]|0;l=f+136|0;k=c[l+4>>2]|0;if((k|0)>0|(k|0)==0&(c[l>>2]|0)>>>0>0)hc(g,f);h=kc(f)|0;c[f+20>>2]=770837923;c[f+36>>2]=-1;c[f+40>>2]=0;a[f+146>>0]=2;c[f+44>>2]=0;c[f+32>>2]=1;a[f+147>>0]=-1;c[f+48>>2]=0;l=f+64|0;c[l>>2]=0;c[l+4>>2]=0;if(!((h|0)==3082|(a[g+81>>0]|0)!=0)){f=c[g+68>>2]&h;if(!f)break;else{h=f;break a}}else{og(g);h=7;break a}}while(0);if(!(c[(c[e>>2]|0)+40>>2]|0)){a[e+6>>0]=1;h=267;break}else{d=0;Ra=m;return d|0}}while(0);if(!((d|0)!=0&(h|0)!=0)){d=h;Ra=m;return d|0}c[d+20>>2]=h;g=c[d>>2]|0;if(!(b[g+8>>1]&1)){d=h;Ra=m;return d|0}switch(h|0){case 516:{f=50738;break}case 100:{f=50760;break}case 101:{f=50782;break}default:{f=h&255;if(f>>>0<29?(520028155>>>f&1|0)!=0:0)f=c[22960+(f<<2)>>2]|0;else f=50724}}yc(g,f,-1,1,0)|0;d=h;Ra=m;return d|0}function vr(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;u=Ra;Ra=Ra+16|0;s=u+8|0;t=u+4|0;p=u;if(c[e>>2]|0){t=1;t=t&1;Ra=u;return t|0}switch(c[d>>2]|0){case 3:case 1:{k=d+12|0;do if(vr(b,c[k>>2]|0,e)|0?(l=d+16|0,vr(b,c[l>>2]|0,e)|0):0){if(c[e>>2]|0){t=1;t=t&1;Ra=u;return t|0}if((c[d>>2]|0)!=1){t=1;t=t&1;Ra=u;return t|0}r=c[d+8>>2]|0;if(r|0?(c[r>>2]|0)==1:0){t=1;t=t&1;Ra=u;return t|0}f=c[k>>2]|0;if(!f){f=d;h=0;g=0}else{h=d;j=0;g=0;while(1){h=c[(c[(c[h+16>>2]|0)+20>>2]|0)+32>>2]|0;h=Sv(j|0,g|0,h|0,((h|0)<0)<<31>>31|0)|0;g=L()|0;i=c[f+12>>2]|0;if(!i)break;else{r=f;j=h;f=i;h=r}}}i=f+20|0;r=c[(c[i>>2]|0)+32>>2]|0;h=Sv(h|0,g|0,r|0,((r|0)<0)<<31>>31|0)|0;h=cw(h|0,L()|0,1)|0;h=pb(h,L()|0)|0;if(!h){c[e>>2]=7;break}g=c[i>>2]|0;c[s>>2]=c[g+28>>2];c[t>>2]=c[g+64>>2];g=c[f+8>>2]|0;a:do if(!g)f=1;else{f=1;do{if((c[g>>2]|0)!=1)break a;f=yr(c[g+4>>2]|0,h,s,t,c[(c[g+16>>2]|0)+20>>2]|0)|0;g=c[g+8>>2]|0}while((f|0)!=0&(g|0)!=0)}while(0);g=c[(c[l>>2]|0)+20>>2]|0;c[s>>2]=c[g+28>>2];c[t>>2]=c[g+64>>2];g=c[k>>2]|0;if((f|0)!=0&(g|0)!=0)do{if((c[g>>2]|0)==1)f=c[g+16>>2]|0;else f=g;f=yr(c[(c[g+8>>2]|0)+4>>2]|0,h,s,t,c[f+20>>2]|0)|0;g=c[g+12>>2]|0}while((f|0)!=0&(g|0)!=0);if(!(c[7324]|0))ab[c[29344>>2]&127](h);else{t=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h)}if(f|0){t=1;t=t&1;Ra=u;return t|0}}while(0);if((c[d>>2]|0)!=1){t=0;t=t&1;Ra=u;return t|0}t=c[d+8>>2]|0;if(t|0?(c[t>>2]|0)==1:0){t=0;t=t&1;Ra=u;return t|0}g=c[d+20>>2]|0;i=b+32|0;if(!g){h=d;while(1){d=c[h+16>>2]|0;s=d+24|0;t=i;if((c[s>>2]|0)==(c[t>>2]|0)?(c[s+4>>2]|0)==(c[t+4>>2]|0):0){f=c[d+20>>2]|0;g=f+24|0;d=f+28|0;do if(c[g>>2]|0?(n=c[d>>2]|0,n|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{t=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}while(0);c[d>>2]=0;c[f+32>>2]=0;c[g>>2]=0}d=c[h+12>>2]|0;g=c[d+20>>2]|0;if(!g)h=d;else break}}s=d+24|0;t=i;if(!((c[s>>2]|0)==(c[t>>2]|0)?(c[s+4>>2]|0)==(c[t+4>>2]|0):0)){t=0;t=t&1;Ra=u;return t|0}f=g+24|0;d=g+28|0;do if(c[f>>2]|0?(o=c[d>>2]|0,o|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{t=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}while(0);c[d>>2]=0;c[g+32>>2]=0;c[f>>2]=0;t=0;t=t&1;Ra=u;return t|0}case 4:{t=vr(b,c[d+12>>2]|0,e)|0;t=(vr(b,c[d+16>>2]|0,e)|0|t|0)!=0;t=t&1;Ra=u;return t|0}case 2:{if(!(vr(b,c[d+12>>2]|0,e)|0)){t=0;t=t&1;Ra=u;return t|0}t=(vr(b,c[d+16>>2]|0,e)|0)==0;t=t&1;Ra=u;return t|0}default:{do if(c[b+28>>2]|0){q=d+24|0;n=q;r=b+32|0;o=r;f=a[d+34>>0]|0;if((c[n>>2]|0)==(c[o>>2]|0)?(c[n+4>>2]|0)==(c[o+4>>2]|0):0){d=c[d+20>>2]|0;if(!(f<<24>>24))g=d;else{g=d;m=55}}else{if(!(f<<24>>24))break;g=c[d+20>>2]|0;m=55}if((m|0)==55){f=g+24|0;d=g+28|0;do if(c[f>>2]|0?(h=c[d>>2]|0,h|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{o=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[d>>2]=0;c[g+32>>2]=0;c[f>>2]=0}n=g+64|0;b:do if((c[n>>2]|0)>0){d=g+28|0;o=g+32|0;m=0;b=0;h=0;j=-1;while(1){f=c[g+72+(m*24|0)+16>>2]|0;if(f){h=f+12|0;f=c[h>>2]|0;if(!f){m=66;break}l=nb(c[f>>2]|0)|0;if(!l){f=7;break b}i=c[h>>2]|0;k=c[i+4>>2]|0;if((a[k>>0]|0)<=-1)if((a[k+1>>0]|0)<=-1)if((a[k+2>>0]|0)<=-1)if((a[k+3>>0]|0)>-1)h=4;else{f=28;h=k+4|0;do{v=h;h=h+1|0;f=f+7|0}while(f>>>0<64&(a[v>>0]|0)<0);h=h-k|0}else h=3;else h=2;else h=1;i=(c[i>>2]|0)-h|0;f=l;ew(l|0,k+h|0,i|0)|0;if(!b){j=m;k=l}else{c[s>>2]=f;c[t>>2]=b;c[p>>2]=f;or(s,m-j|0,0,1,t,p)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](b);else{v=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b)}f=(c[s>>2]|0)-f|0;if(!f){m=85;break}j=m;k=l;i=f}}else{k=b;i=h}m=m+1|0;if((m|0)>=(c[n>>2]|0)){m=90;break}else{b=k;h=i}}if((m|0)==66){do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{v=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);c[d>>2]=0;c[o>>2]=0;f=0;break}else if((m|0)==85){if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{v=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}c[d>>2]=0;c[o>>2]=0;f=0;break}else if((m|0)==90){if((j|0)<=-1){f=0;break}f=c[g+44>>2]|0;if((f|0)<0){c[d>>2]=k;c[o>>2]=i;t=r;v=c[t+4>>2]|0;f=g+16|0;c[f>>2]=c[t>>2];c[f+4>>2]=v;c[g+24>>2]=1;f=0;break}if((f|0)>(j|0)){c[s>>2]=k;c[t>>2]=c[d>>2];h=f-j|0}else{c[s>>2]=c[d>>2];c[t>>2]=k;h=j-f|0}f=nb(i+8|0)|0;c[p>>2]=f;if(!f){do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{v=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);f=7;break}c[d>>2]=f;if(!(or(p,h,0,1,s,t)|0)){f=c[p>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{v=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[d>>2]=0;f=0}else{c[g+24>>2]=1;f=(c[p>>2]|0)-(c[d>>2]|0)|0}c[o>>2]=f;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{v=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);f=0;break}}else{f=0;d=g+28|0}while(0);c[e>>2]=f;v=(c[d>>2]|0)!=0;e=r;s=c[e+4>>2]|0;t=q;c[t>>2]=c[e>>2];c[t+4>>2]=s;v=v&1;Ra=u;return v|0}while(0);if(a[d+32>>0]|0){v=0;v=v&1;Ra=u;return v|0}t=d+24|0;v=b+32|0;v=(c[t>>2]|0)==(c[v>>2]|0)?(c[t+4>>2]|0)==(c[v+4>>2]|0):0;v=v&1;Ra=u;return v|0}}return 0}function wr(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,l=0,m=0,n=0;n=Ra;Ra=Ra+16|0;m=n;j=c[a>>2]|0;c[m>>2]=j;if(j){l=j+16|0;k=c[l>>2]|0;l=c[l+4>>2]|0;if((k|0)==(b|0)&(l|0)==(d|0))l=6;else{l=Tv(b|0,d|0,k|0,l|0)|0;k=L()|0;c[j>>2]=(c[j>>2]|0)+1;j=l;l=4}}else{j=b;k=d;l=4}if((l|0)==4){j=xr(m,j,k)|0;if(!j){j=c[m>>2]|0;l=j+24|0;c[l>>2]=-1;c[l+4>>2]=-1;l=j+32|0;c[l>>2]=0;c[l+4>>2]=0;l=j+16|0;c[l>>2]=b;c[l+4>>2]=d;l=6}}do if((l|0)==6){if((f|0)>0|(f|0)==0&e>>>0>0){d=j+24|0;if(!((c[d>>2]|0)==(e|0)?(c[d+4>>2]|0)==(f|0):0)){j=xr(m,1,0)|0;if(j|0)break;j=xr(m,e,f)|0;if(j|0)break;j=c[m>>2]|0;d=j+24|0;c[d>>2]=e;c[d+4>>2]=f;f=j+32|0;c[f>>2]=0;c[f+4>>2]=0}}else if(!((f|0)>-1|(f|0)==-1&e>>>0>4294967295)){j=0;break}e=Sv(g|0,h|0,2,0)|0;f=L()|0;j=j+32|0;j=Tv(e|0,f|0,c[j>>2]|0,c[j+4>>2]|0)|0;j=xr(m,j,L()|0)|0;if(!j){j=(c[m>>2]|0)+32|0;c[j>>2]=g;c[j+4>>2]=h;j=0}}while(0);c[i>>2]=j;j=c[m>>2]|0;if((j|0)==(c[a>>2]|0)){a=0;Ra=n;return a|0}c[a>>2]=j;a=1;Ra=n;return a|0}function xr(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;f=c[b>>2]|0;do if(f){g=c[f+8>>2]|0;if(((c[f>>2]|0)+11|0)>(g|0)){g=g<<1;h=g+40|0;if((mb()|0)==0?(i=sb(f,(h|0)>0?h:0,0)|0,i|0):0){c[i+8>>2]=g;c[i+4>>2]=i+40;f=i;break}f=c[b>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{e=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[b>>2]=0;b=7;return b|0}}else{if(mb()|0){b=7;return b|0}if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](140)|0;if(!f){b=7;return b|0}}else{f=Wa[c[29356>>2]&127](140)|0;if((c[14985]|0)>>>0<140)c[14985]=140;h=59064;g=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&g>>>0>0){l=c[14978]|0;k=Tv(g|0,h|0,f|0,((f|0)<0)<<31>>31|0)|0;j=L()|0;c[14768]=((j|0)<0|(j|0)==0&k>>>0<=l>>>0)&1}f=Wa[c[29340>>2]&127](f)|0;if(!f){b=7;return b|0}g=Wa[c[29352>>2]&127](f)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0)c[14987]=g}c[f+8>>2]=100;c[f+4>>2]=f+40;c[f>>2]=0}while(0);k=f+4|0;l=(c[k>>2]|0)+(c[f>>2]|0)|0;j=l;i=e;while(1){g=d&255;h=j+1|0;a[j>>0]=g|-128;d=bw(d|0,i|0,7)|0;i=L()|0;if((d|0)==0&(i|0)==0)break;else j=h}a[j>>0]=g&127;e=(c[f>>2]|0)+(h-l)|0;c[f>>2]=e;a[(c[k>>2]|0)+e>>0]=0;c[b>>2]=f;b=0;return b|0}function yr(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;r=Ra;Ra=Ra+32|0;l=r+20|0;k=r+16|0;h=r+12|0;m=r+8|0;i=r+4|0;p=r;q=g+64|0;t=(c[q>>2]|0)+b|0;b=(c[f>>2]|0)+b|0;o=g+28|0;n=c[o>>2]|0;c[p>>2]=n;c[i>>2]=n;c[l>>2]=d;s=c[e>>2]|0;j=d;c[k>>2]=j;or(k,t,0,0,e,i)|0;k=c[k>>2]|0;c[h>>2]=k;c[m>>2]=k;c[e>>2]=s;c[i>>2]=n;or(h,b,1,0,i,e)|0;i=k;b=(c[h>>2]|0)==(i|0);do if((i|0)==(d|0))if(b)b=0;else{b=d;h=0;while(1){i=a[b>>0]|0;b=b+1|0;if(!(h<<24>>24|i))break;else h=i&128}t=b-k|0;ew(n|0,d|0,t|0)|0;c[p>>2]=n+t;c[m>>2]=b;b=1}else{if(!b){nr(p,l,m)|0;b=1;break}b=d;h=0;while(1){i=a[b>>0]|0;b=b+1|0;if(!(h<<24>>24|i))break;else h=i&128}t=b-j|0;ew(n|0,d|0,t|0)|0;c[p>>2]=n+t;c[l>>2]=b;b=1}while(0);if(!b){Ra=r;return b|0}d=c[o>>2]|0;s=(c[p>>2]|0)-d+-1|0;t=g+32|0;gw(d+s|0,0,(c[t>>2]|0)-s|0)|0;c[t>>2]=s;c[e>>2]=c[o>>2];c[f>>2]=c[q>>2];Ra=r;return b|0}function zr(d,f,g,h){d=d|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,s=0,t=0,u=0,v=0,w=0,x=0;x=Ra;Ra=Ra+16|0;w=x+8|0;t=x;v=x+4|0;c[v>>2]=f;c[w>>2]=f;i=cq(d,7,t,w)|0;s=c[t>>2]|0;a:do if(!i){b:do if((Gc(s)|0)==100){if(!(c[d+44>>2]|0))r=0;else r=Nc(s,(c[d+24>>2]|0)+1|0)|0;j=Oc(s,0)|0;k=L()|0;l=d+272|0;i=l;f=c[i>>2]|0;i=c[i+4>>2]|0;do if(!((i|0)>(k|0)|(i|0)==(k|0)&f>>>0>j>>>0)){if((f|0)==(j|0)&(i|0)==(k|0)?(c[d+284>>2]|0)==0:0){u=10;break}f=d+280|0;if((c[f>>2]|0)==(r|0)?(c[d+264>>2]|0)<=(c[d+260>>2]|0):0)u=12;else u=10}else u=10;while(0);if((u|0)==10){f=Sr(d)|0;if(!f){f=d+280|0;u=12}}if((u|0)==12){q=l;c[q>>2]=j;c[q+4>>2]=k;c[f>>2]=r;c[d+284>>2]=1;q=d+24|0;p=d+32|0;m=s+120|0;n=s+144|0;o=s+40|0;if(!s){f=c[q>>2]|0;if((f|0)<1){i=0;f=1;break a}k=c[p>>2]|0;j=1;while(1){i=j+-1|0;if(!(a[k+i>>0]|0)){c[h+(i<<2)>>2]=0;f=c[q>>2]|0}if((j|0)<(f|0))j=j+1|0;else{f=1;break b}}}l=1;while(1){if((l|0)>(c[q>>2]|0)){f=1;break b}k=l+-1|0;if(!(a[(c[p>>2]|0)+k>>0]|0)){f=c[m>>2]|0;if((f|0)!=0?l>>>0<(e[n>>1]|0)>>>0:0)f=f+(l*40|0)|0;else{f=c[s>>2]|0;c[f+64>>2]=25;Ne(f,25);f=29576}i=b[f+8>>1]|0;if((i&514)==514?(a[f+10>>0]|0)==1:0)j=c[f+16>>2]|0;else if(!(i&1))j=Gg(f,1)|0;else j=0;f=c[s>>2]|0;i=c[o>>2]|0;if((i|0)==3082|(a[f+81>>0]|0)!=0){og(f);f=7}else f=c[f+68>>2]&i;c[o>>2]=f;f=Mr(d,r,j,-1,h+(k<<2)|0)|0;j=Lc(s,l)|0;k=h+(c[q>>2]<<2)|0;c[k>>2]=(c[k>>2]|0)+j}else f=0;if(!f)l=l+1|0;else break}}if(!s){i=f;f=0;break a}i=c[s>>2]|0;r=s+136|0;q=c[r+4>>2]|0;if((q|0)>0|(q|0)==0&(c[r>>2]|0)>>>0>0)hc(i,s);r=kc(s)|0;c[s+20>>2]=770837923;c[s+36>>2]=-1;c[s+40>>2]=0;a[s+146>>0]=2;c[s+44>>2]=0;c[s+32>>2]=1;a[s+147>>0]=-1;c[s+48>>2]=0;s=s+64|0;c[s>>2]=0;c[s+4>>2]=0;if(!((r|0)==3082|(a[i+81>>0]|0)!=0)){i=f;f=0;break a}og(i);i=f;f=0;break a}else f=0;while(0);if(s){i=c[s>>2]|0;r=s+136|0;q=c[r+4>>2]|0;if((q|0)>0|(q|0)==0&(c[r>>2]|0)>>>0>0)hc(i,s);j=kc(s)|0;c[s+20>>2]=770837923;c[s+36>>2]=-1;c[s+40>>2]=0;a[s+146>>0]=2;c[s+44>>2]=0;c[s+32>>2]=1;a[s+147>>0]=-1;c[s+48>>2]=0;s=s+64|0;c[s>>2]=0;c[s+4>>2]=0;if((j|0)==3082|(a[i+81>>0]|0)!=0){og(i);i=7;break}else{i=c[i+68>>2]&j;break}}else i=0}else if(s){f=c[s>>2]|0;r=s+136|0;q=c[r+4>>2]|0;if((q|0)>0|(q|0)==0&(c[r>>2]|0)>>>0>0)hc(f,s);r=kc(s)|0;c[s+20>>2]=770837923;c[s+36>>2]=-1;c[s+40>>2]=0;a[s+146>>0]=2;c[s+44>>2]=0;c[s+32>>2]=1;a[s+147>>0]=-1;c[s+48>>2]=0;s=s+64|0;c[s>>2]=0;c[s+4>>2]=0;if((r|0)==3082|(a[f+81>>0]|0)!=0){og(f);f=0}else f=0}else f=0;while(0);if(!((i|0)==0&(f|0)!=0)){w=i;Ra=x;return w|0}c[w>>2]=c[v>>2];l=d+40|0;c:do if(!(c[l>>2]|0)){f=cq(d,1,t,w)|0;do if(!f){f=c[t>>2]|0;if((Gc(f)|0)==100)k=Nc(f,0)|0;else k=0;if(!f){f=k;u=61;break c}i=c[f>>2]|0;t=f+136|0;s=c[t+4>>2]|0;if((s|0)>0|(s|0)==0&(c[t>>2]|0)>>>0>0)hc(i,f);j=kc(f)|0;c[f+20>>2]=770837923;c[f+36>>2]=-1;c[f+40>>2]=0;a[f+146>>0]=2;c[f+44>>2]=0;c[f+32>>2]=1;a[f+147>>0]=-1;c[f+48>>2]=0;t=f+64|0;c[t>>2]=0;c[t+4>>2]=0;if((j|0)==3082|(a[i+81>>0]|0)!=0){og(i);f=7;break}f=c[i+68>>2]&j;if(!f){f=k;break c}Ra=x;return f|0}while(0);w=f;Ra=x;return w|0}else{f=0;u=61}while(0);if(f|0){w=Lr(d,1)|0;c[g>>2]=0;gw(h|0,0,(c[d+24>>2]<<3)+8|0)|0;Ra=x;return w|0}c[g>>2]=(c[g>>2]|0)+-1;if(!(c[l>>2]|0)){f=cq(d,0,w,v)|0;do if(!f){f=c[w>>2]|0;Gc(f)|0;if(f){i=c[f>>2]|0;h=f+136|0;g=c[h+4>>2]|0;if((g|0)>0|(g|0)==0&(c[h>>2]|0)>>>0>0)hc(i,f);j=kc(f)|0;c[f+20>>2]=770837923;c[f+36>>2]=-1;c[f+40>>2]=0;a[f+146>>0]=2;c[f+44>>2]=0;c[f+32>>2]=1;a[f+147>>0]=-1;c[f+48>>2]=0;h=f+64|0;c[h>>2]=0;c[h+4>>2]=0;if((j|0)==3082|(a[i+81>>0]|0)!=0){og(i);f=7;break}else{f=c[i+68>>2]&j;break}}else f=0}while(0)}else f=0;if(!(a[d+234>>0]|0)){w=f;Ra=x;return w|0}do if(!f){f=cq(d,19,w,v)|0;if(!f){f=c[w>>2]|0;Gc(f)|0;if(f){i=c[f>>2]|0;w=f+136|0;v=c[w+4>>2]|0;if((v|0)>0|(v|0)==0&(c[w>>2]|0)>>>0>0)hc(i,f);j=kc(f)|0;c[f+20>>2]=770837923;c[f+36>>2]=-1;c[f+40>>2]=0;a[f+146>>0]=2;c[f+44>>2]=0;c[f+32>>2]=1;a[f+147>>0]=-1;c[f+48>>2]=0;w=f+64|0;c[w>>2]=0;c[w+4>>2]=0;if((j|0)==3082|(a[i+81>>0]|0)!=0){og(i);f=7;break}else{f=c[i+68>>2]&j;break}}else f=0}}while(0);w=f;Ra=x;return w|0}function Ar(d,f,h){d=d|0;f=f|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,s=0;s=Ra;Ra=Ra+16|0;q=s;if(c[d+40>>2]|0){k=c[f+((c[d+24>>2]|0)+3<<2)>>2]|0;i=b[k+8>>1]|0;j=i&31;if(-1431655766>>>j&1){k=c[f+4>>2]|0;i=b[k+8>>1]|0;j=i&31}if(!(1347440720>>>j&1)){h=19;Ra=s;return h|0}i=i&65535;do if(!(i&4)){if(i&8|0){i=Mg(+g[k>>3])|0;j=L()|0;break}if(!(i&18)){i=0;j=0}else{i=Ng(a[k+10>>0]|0,c[k+12>>2]|0,c[k+16>>2]|0)|0;j=L()|0}}else{j=k;i=c[j>>2]|0;j=c[j+4>>2]|0}while(0);c[h>>2]=i;c[h+4>>2]=j;h=0;Ra=s;return h|0}r=f+4|0;i=cq(d,18,q,r)|0;if(i|0){h=i;Ra=s;return h|0}do if(c[d+44>>2]|0){n=c[q>>2]|0;i=d+24|0;o=c[i>>2]|0;l=o+2|0;j=c[f+(o+4<<2)>>2]|0;k=e[j+8>>1]|0;do if(!(k&4)){if(k&8|0){m=Mg(+g[j>>3])|0;L()|0;break}if(!(k&18))m=0;else{m=Ng(a[j+10>>0]|0,c[j+12>>2]|0,c[j+16>>2]|0)|0;L()|0}}else m=c[j>>2]|0;while(0);p=((m|0)<0)<<31>>31;j=Vc(n,l)|0;if(j|0){h=j;Ra=s;return h|0}n=c[n+100>>2]|0;k=o+1|0;j=n+(k*40|0)|0;k=n+(k*40|0)+8|0;if(!(b[k>>1]&9216)){o=j;c[o>>2]=m;c[o+4>>2]=p;b[k>>1]=4;break}else{Pg(j,m,p);break}}else i=d+24|0;while(0);i=c[f+((c[i>>2]|0)+3<<2)>>2]|0;if(!(-1431655766>>>(b[i+8>>1]&31)&1)){if(-1431655766>>>(b[(c[f>>2]|0)+8>>1]&31)&1|0?(-1431655766>>>(b[(c[r>>2]|0)+8>>1]&31)&1|0)==0:0){h=1;Ra=s;return h|0}j=c[q>>2]|0;i=Yc(j,1,i)|0;if(i){h=i;Ra=s;return h|0}}else j=c[q>>2]|0;Gc(j)|0;do if(j){i=c[j>>2]|0;f=j+136|0;r=c[f+4>>2]|0;if((r|0)>0|(r|0)==0&(c[f>>2]|0)>>>0>0)hc(i,j);k=kc(j)|0;c[j+20>>2]=770837923;c[j+36>>2]=-1;c[j+40>>2]=0;a[j+146>>0]=2;c[j+44>>2]=0;c[j+32>>2]=1;a[j+147>>0]=-1;c[j+48>>2]=0;f=j+64|0;c[f>>2]=0;c[f+4>>2]=0;if((k|0)==3082|(a[i+81>>0]|0)!=0){og(i);i=7;break}else{i=c[i+68>>2]&k;break}}else i=0;while(0);f=(c[d+12>>2]|0)+40|0;d=c[f+4>>2]|0;c[h>>2]=c[f>>2];c[h+4>>2]=d;h=i;Ra=s;return h|0}function Br(d,e,f){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;t=Ra;Ra=Ra+16|0;p=t;q=t+8|0;if(c[d>>2]|0){Ra=t;return}g=e+24|0;s=c[g>>2]|0;s=Yv(s|0,((s|0)<0)<<31>>31|0,10,0)|0;s=pb(s,L()|0)|0;a:do if(s){o=c[g>>2]|0;if((o|0)>0){n=0;g=0;do{i=s+g|0;h=i;k=c[f+(n<<2)>>2]|0;m=0;while(1){j=k&255;l=h+1|0;a[h>>0]=j|-128;k=bw(k|0,m|0,7)|0;m=L()|0;if((k|0)==0&(m|0)==0)break;else h=l}a[h>>0]=j&127;g=g-i+l|0;n=n+1|0}while((n|0)!=(o|0));m=g}else m=0;i=e+136|0;h=c[i>>2]|0;c[q>>2]=h;do if(!h){h=c[e+20>>2]|0;c[p>>2]=c[e+16>>2];c[p+4>>2]=h;h=Bb(52323,p)|0;if(h){g=qd(c[e+12>>2]|0,h,-1,133,0,q,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](h);else{p=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h)}h=c[q>>2]|0;c[i>>2]=h;if(!g)break}else g=7;if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break a}else{r=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break a}}while(0);l=h;i=e+272|0;g=c[i>>2]|0;i=c[i+4>>2]|0;do if(!(Vc(l,1)|0)){j=c[l+100>>2]|0;k=j+8|0;if(!(b[k>>1]&9216)){e=j;c[e>>2]=g;c[e+4>>2]=i;b[k>>1]=4;break}else{Pg(j,g,i);break}}while(0);if(Vc(l,2)|0){do if(90!=-1)if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{r=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}while(0);Gc(l)|0;if(!h){g=0;break}}else{g=yc((c[l+100>>2]|0)+40|0,s,m,0,90)|0;if(g|0?(r=c[l>>2]|0,c[r+64>>2]=g,Ne(r,g),r=c[l>>2]|0,(g|0)==3082|(a[r+81>>0]|0)!=0):0)og(r);Gc(l)|0}g=c[l>>2]|0;s=l+136|0;r=c[s+4>>2]|0;if((r|0)>0|(r|0)==0&(c[s>>2]|0)>>>0>0)hc(g,l);h=kc(l)|0;c[l+20>>2]=770837923;c[l+36>>2]=-1;c[l+40>>2]=0;a[l+146>>0]=2;c[l+44>>2]=0;c[l+32>>2]=1;a[l+147>>0]=-1;c[l+48>>2]=0;s=l+64|0;c[s>>2]=0;c[s+4>>2]=0;if((h|0)==3082|(a[g+81>>0]|0)!=0){og(g);g=7;break}else{g=c[g+68>>2]&h;break}}else g=7;while(0);c[d>>2]=g;Ra=t;return}function Cr(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var 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;D=Ra;Ra=Ra+32|0;x=D+8|0;k=D;y=D+16|0;u=f+24|0;v=c[u>>2]|0;w=v+2|0;if(c[e>>2]|0){Ra=D;return}C=Yv(w|0,((w|0)<0)<<31>>31|0,14,0)|0;C=pb(C,L()|0)|0;if(!C){c[e>>2]=7;Ra=D;return}z=C+(w<<2)|0;l=f+144|0;j=c[l>>2]|0;c[y>>2]=j;do if(!j){t=c[f+20>>2]|0;c[k>>2]=c[f+16>>2];c[k+4>>2]=t;k=Bb(52411,k)|0;if(k){j=qd(c[f+12>>2]|0,k,-1,133,0,y,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{t=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}k=c[y>>2]|0;c[l>>2]=k;if(!j)break}else j=7;if(!(c[7324]|0))ab[c[29344>>2]&127](C);else{B=Wa[c[29352>>2]&127](C)|0;c[14978]=(c[14978]|0)-B;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](C)}c[e>>2]=j;Ra=D;return}else k=j;while(0);t=k;do if(!(Vc(t,1)|0)){j=c[t+100>>2]|0;l=j+8|0;if(!(b[l>>1]&9216)){s=j;c[s>>2]=0;c[s+4>>2]=0;b[l>>1]=4;break}else{Pg(j,0,0);break}}while(0);if((Gc(t)|0)==100){if(!k)n=mc(29576)|0;else{j=c[t+120>>2]|0;if((j|0)!=0?(b[t+144>>1]|0)!=0:0)l=t;else{j=c[t>>2]|0;c[j+64>>2]=25;Ne(j,25);j=29576;l=t}n=mc(j)|0;j=c[l>>2]|0;m=t+40|0;l=c[m>>2]|0;if((l|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7}else j=c[j+68>>2]&l;c[m>>2]=j}s=Lc(t,0)|0;if(((s|0)!=0?(a[n+(s+-1)>>0]|0)>-1:0)?(v|0)>-2&(s|0)>0:0){j=0;r=0;do{q=n+r|0;l=d[q>>0]|0;if(l&128){p=d[q+1>>0]|0;l=p<<7|l&127;if(p&128){p=d[q+2>>0]|0;l=p<<14|l&16383;if(p&128){p=d[q+3>>0]|0;l=p<<21|l&2097151;if(!(p&128))m=4;else{o=28;p=q+4|0;l=l&268435455;m=0;do{E=p;p=p+1|0;E=d[E>>0]|0;F=cw(E&127|0,0,o|0)|0;l=Sv(F|0,L()|0,l|0,m|0)|0;m=L()|0;o=o+7|0}while(o>>>0<64&((E&128|0)!=0|0!=0));m=p-q|0}}else m=3}else m=2}else m=1;r=m+r|0;c[C+(j<<2)>>2]=l;j=j+1|0}while((j|0)<(w|0)&(r|0)<(s|0))}else j=0;if((w|0)>(j|0))gw(C+(j<<2)|0,0,w-j<<2|0)|0}else gw(C|0,0,w<<2|0)|0;do if(k|0){j=c[t>>2]|0;F=t+136|0;E=c[F+4>>2]|0;if((E|0)>0|(E|0)==0&(c[F>>2]|0)>>>0>0)hc(j,t);k=kc(t)|0;c[t+20>>2]=770837923;c[t+36>>2]=-1;c[t+40>>2]=0;a[t+146>>0]=2;c[t+44>>2]=0;c[t+32>>2]=1;a[t+147>>0]=-1;c[t+48>>2]=0;F=t+64|0;c[F>>2]=0;c[F+4>>2]=0;if(!((k|0)==3082|(a[j+81>>0]|0)!=0)){j=c[j+68>>2]&k;if(!j)break}else{og(j);j=7}if(!(c[7324]|0))ab[c[29344>>2]&127](C);else{F=Wa[c[29352>>2]&127](C)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](C)}c[e>>2]=j;Ra=D;return}while(0);k=c[C>>2]|0;k=(i|0)<0&k>>>0<(0-i|0)>>>0?0:k+i|0;c[C>>2]=k;if((c[u>>2]|0)>=0){j=0;do{F=j;j=j+1|0;E=C+(j<<2)|0;t=(c[g+(F<<2)>>2]|0)+(c[E>>2]|0)|0;i=c[h+(F<<2)>>2]|0;c[E>>2]=t>>>0>>0?0:t-i|0}while((F|0)<(c[u>>2]|0))}a:do if((v|0)>-2){q=0;j=0;while(1){p=z+j|0;o=p;n=0;while(1){l=k&255;m=o+1|0;a[o>>0]=l|-128;k=bw(k|0,n|0,7)|0;n=L()|0;if((k|0)==0&(n|0)==0)break;else o=m}a[o>>0]=l&127;j=j-p+m|0;k=q+1|0;if((k|0)==(w|0)){n=j;break a}q=k;k=c[C+(k<<2)>>2]|0}}else n=0;while(0);l=f+148|0;k=c[l>>2]|0;c[y>>2]=k;do if(!k){k=c[f+20>>2]|0;c[x>>2]=c[f+16>>2];c[x+4>>2]=k;k=Bb(52453,x)|0;if(k){j=qd(c[f+12>>2]|0,k,-1,133,0,y,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{F=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}k=c[y>>2]|0;c[l>>2]=k;if(!j)break}else j=7;if(!(c[7324]|0))ab[c[29344>>2]&127](C);else{F=Wa[c[29352>>2]&127](C)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](C)}c[e>>2]=j;Ra=D;return}while(0);m=k;do if(!(Vc(m,1)|0)){j=c[m+100>>2]|0;l=j+8|0;if(!(b[l>>1]&9216)){F=j;c[F>>2]=0;c[F+4>>2]=0;b[l>>1]=4;break}else{Pg(j,0,0);break}}while(0);if((z|0)==0|(Vc(m,2)|0)!=0){Gc(m)|0;if(!k)j=0;else B=87}else{j=yc((c[m+100>>2]|0)+40|0,z,n,0,0)|0;if(j|0?(A=c[m>>2]|0,c[A+64>>2]=j,Ne(A,j),A=c[m>>2]|0,(j|0)==3082|(a[A+81>>0]|0)!=0):0)og(A);Gc(m)|0;B=87}do if((B|0)==87){j=c[m>>2]|0;F=m+136|0;E=c[F+4>>2]|0;if((E|0)>0|(E|0)==0&(c[F>>2]|0)>>>0>0)hc(j,m);k=kc(m)|0;c[m+20>>2]=770837923;c[m+36>>2]=-1;c[m+40>>2]=0;a[m+146>>0]=2;c[m+44>>2]=0;c[m+32>>2]=1;a[m+147>>0]=-1;c[m+48>>2]=0;F=m+64|0;c[F>>2]=0;c[F+4>>2]=0;if((k|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break}else{j=c[j+68>>2]&k;break}}while(0);c[e>>2]=j;Vc(m,2)|0;if(!(c[7324]|0)){ab[c[29344>>2]&127](C);Ra=D;return}else{F=Wa[c[29352>>2]&127](C)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](C);Ra=D;return}}function Dr(d,e){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;m=Ra;Ra=Ra+16|0;g=m;h=m+8|0;j=d+164|0;f=c[j>>2]|0;c[h>>2]=f;do if(!f){f=c[d+20>>2]|0;c[g>>2]=c[d+16>>2];c[g+4>>2]=f;f=Bb(52546,g)|0;if(!f){j=0;i=7;break}i=qd(c[d+12>>2]|0,f,-1,133,0,h,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](f);else{l=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f)}f=c[h>>2]|0;c[j>>2]=f;if(!i)k=9;else j=0}else k=9;while(0);if((k|0)==9){l=f;g=c[d+280>>2]|0;h=((g|0)<0)<<31>>31;do if(!(Vc(l,1)|0)){i=c[l+100>>2]|0;j=i+8|0;if(!(b[j>>1]&9216)){k=i;c[k>>2]=g;c[k+4>>2]=h;b[j>>1]=4;break}else{Pg(i,g,h);break}}while(0);k=d+252|0;g=c[k>>2]|0;h=((g|0)<0)<<31>>31;do if(!(Vc(l,2)|0)){j=c[l+100>>2]|0;i=j+40|0;j=j+48|0;if(!(b[j>>1]&9216)){c[i>>2]=g;c[i+4>>2]=h;b[j>>1]=4;break}else{Pg(i,g,h);break}}while(0);if((Gc(l)|0)==100){g=0;h=0;while(1){j=Nc(l,0)|0;a:do if(!g){i=0;while(1){if((i|0)>=(c[k>>2]|0)){g=0;break a}g=Er(d,j,i,-2)|0;n=(g|0)==101;g=n?0:g;h=n?1:h;if(!g)i=i+1|0;else break}}while(0);if((Gc(l)|0)!=100){i=g;break}}}else{h=0;i=0}do if(f){f=c[l>>2]|0;n=l+136|0;k=c[n+4>>2]|0;if((k|0)>0|(k|0)==0&(c[n>>2]|0)>>>0>0)hc(f,l);g=kc(l)|0;c[l+20>>2]=770837923;c[l+36>>2]=-1;c[l+40>>2]=0;a[l+146>>0]=2;c[l+44>>2]=0;c[l+32>>2]=1;a[l+147>>0]=-1;c[l+48>>2]=0;n=l+64|0;c[n>>2]=0;c[n+4>>2]=0;if((g|0)==3082|(a[f+81>>0]|0)!=0){og(f);f=7;break}else{f=c[f+68>>2]&g;break}}else f=0;while(0);j=h;i=(i|0)==0?f:i}f=d+248|0;g=c[f>>2]|0;if(!g){c[f>>2]=0;Fr(d);n=(i|0)==0;e=(e|0)!=0;e=e&n;n=(j|0)!=0;n=e&n;n=n?101:i;Ra=m;return n|0}h=c[g+20>>2]|0;gc(c[g+16>>2]|0)|0;if(h|0){if(c[h+480>>2]|0){Xd(h,g);c[f>>2]=0;Fr(d);n=(i|0)==0;e=(e|0)!=0;e=e&n;n=(j|0)!=0;n=e&n;n=n?101:i;Ra=m;return n|0}n=g;if((c[h+304>>2]|0)>>>0<=n>>>0?(c[h+308>>2]|0)>>>0>n>>>0:0){n=h+300|0;c[g>>2]=c[n>>2];c[n>>2]=g;c[f>>2]=0;Fr(d);n=(i|0)==0;e=(e|0)!=0;e=e&n;n=(j|0)!=0;n=e&n;n=n?101:i;Ra=m;return n|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);c[f>>2]=0;Fr(d);n=(i|0)==0;e=(e|0)!=0;e=e&n;n=(j|0)!=0;n=e&n;n=n?101:i;Ra=m;return n|0}else{n=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);c[f>>2]=0;Fr(d);n=(i|0)==0;e=(e|0)!=0;e=e&n;n=(j|0)!=0;n=e&n;n=n?101:i;Ra=m;return n|0}return 0}function Er(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,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,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,_=0,$=0,aa=0,ba=0,ca=0;ca=Ra;Ra=Ra+128|0;R=ca+40|0;Q=ca+32|0;P=ca+24|0;O=ca+16|0;w=ca+8|0;i=ca;S=ca+120|0;x=ca+104|0;aa=ca+48|0;h=aa;j=h+56|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));h=Xp(d,e,f,g,0,0,1,0,aa)|0;ba=aa+4|0;a:do if(!h){q=c[ba>>2]|0;if(!q){h=0;j=c[aa>>2]|0;i=aa;Z=264;break}N=(g|0)!=-1;if(N){j=d+116|0;h=c[j>>2]|0;c[S>>2]=h;if(!h){Y=c[d+20>>2]|0;c[i>>2]=c[d+16>>2];c[i+4>>2]=Y;i=Bb(52072,i)|0;if(!i){h=7;Z=237;break}h=qd(c[d+12>>2]|0,i,-1,133,0,S,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](i);else{Y=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-Y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i)}i=c[S>>2]|0;c[j>>2]=i;if(!h)h=i;else{Z=237;break}}n=h;o=d+252|0;i=c[o>>2]|0;p=((e|0)<0)<<31>>31;i=Yv(i|0,((i|0)<0)<<31>>31|0,e|0,p|0)|0;m=((f|0)<0)<<31>>31;i=Sv(i|0,L()|0,f|0,m|0)|0;i=cw(i|0,L()|0,10)|0;j=L()|0;do if(!(Vc(n,1)|0)){k=c[n+100>>2]|0;l=k+8|0;if(!(b[l>>1]&9216)){Y=k;c[Y>>2]=i;c[Y+4>>2]=j;b[l>>1]=4;break}else{Pg(k,i,j);break}}while(0);j=c[o>>2]|0;j=Yv(j|0,((j|0)<0)<<31>>31|0,e|0,p|0)|0;j=Sv(j|0,L()|0,f|0,m|0)|0;j=cw(j|0,L()|0,10)|0;i=L()|0;j=j|1023;do if(!(Vc(n,2)|0)){l=c[n+100>>2]|0;k=l+40|0;l=l+48|0;if(!(b[l>>1]&9216)){Y=k;c[Y>>2]=j;c[Y+4>>2]=i;b[l>>1]=4;break}else{Pg(k,j,i);break}}while(0);if((Gc(n)|0)==100){k=Oc(n,0)|0;j=L()|0}else{k=0;j=0}do if(h|0){i=c[n>>2]|0;Y=n+136|0;X=c[Y+4>>2]|0;if((X|0)>0|(X|0)==0&(c[Y>>2]|0)>>>0>0)hc(i,n);h=kc(n)|0;c[n+20>>2]=770837923;c[n+36>>2]=-1;c[n+40>>2]=0;a[n+146>>0]=2;c[n+44>>2]=0;c[n+32>>2]=1;a[n+147>>0]=-1;c[n+48>>2]=0;Y=n+64|0;c[Y>>2]=0;c[Y+4>>2]=0;if(!((h|0)==3082|(a[i+81>>0]|0)!=0)){h=c[i+68>>2]&h;if(!h)break;else{Z=237;break a}}else{og(i);h=7;Z=237;break a}}while(0);if((g|0)==-2){if((q|0)==1?(c[(c[c[aa>>2]>>2]|0)+56>>2]|0)==0:0){h=101;Z=237;break};c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;W=0;Y=k;X=j;V=j;U=k;K=1;i=3;h=x+12|0}else{q=e;n=p;p=f;u=j;v=k;Z=33}}else{o=d+252|0;q=e;n=((e|0)<0)<<31>>31;p=f;m=((f|0)<0)<<31>>31;u=0;v=0;Z=33}do if((Z|0)==33){r=g+1|0;s=c[o>>2]|0;s=Yv(q|0,n|0,s|0,((s|0)<0)<<31>>31|0)|0;s=Sv(s|0,L()|0,p|0,m|0)|0;s=cw(s|0,L()|0,10)|0;j=((r|0)<0)<<31>>31;s=Sv(s|0,L()|0,r|0,j|0)|0;t=L()|0;k=d+88|0;l=c[k>>2]|0;c[S>>2]=l;if(!l){i=c[d+20>>2]|0;c[w>>2]=c[d+16>>2];c[w+4>>2]=i;i=Bb(51533,w)|0;if(!i){h=7;Z=237;break a}h=qd(c[d+12>>2]|0,i,-1,133,0,S,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](i);else{Y=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-Y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i)}l=c[S>>2]|0;c[k>>2]=l;if(h|0){Z=237;break a}k=c[o>>2]|0;k=Yv(q|0,n|0,k|0,((k|0)<0)<<31>>31|0)|0;k=Sv(k|0,L()|0,p|0,m|0)|0;k=cw(k|0,L()|0,10)|0;j=Sv(k|0,L()|0,r|0,j|0)|0;k=L()|0}else{j=s;k=t}m=l;do if(!(Vc(m,1)|0)){h=c[m+100>>2]|0;i=h+8|0;if(!(b[i>>1]&9216)){Y=h;c[Y>>2]=j;c[Y+4>>2]=k;b[i>>1]=4;break}else{Pg(h,j,k);break}}while(0);if((Gc(m)|0)==100)j=Nc(m,0)|0;else j=0;do if(l|0){h=c[m>>2]|0;Y=m+136|0;X=c[Y+4>>2]|0;if((X|0)>0|(X|0)==0&(c[Y>>2]|0)>>>0>0)hc(h,m);i=kc(m)|0;c[m+20>>2]=770837923;c[m+36>>2]=-1;c[m+40>>2]=0;a[m+146>>0]=2;c[m+44>>2]=0;c[m+32>>2]=1;a[m+147>>0]=-1;c[m+48>>2]=0;Y=m+64|0;c[Y>>2]=0;c[Y+4>>2]=0;if(!((i|0)==3082|(a[h+81>>0]|0)!=0)){h=c[h+68>>2]&i;if(!h)break;else{Z=237;break a}}else{og(h);h=7;Z=237;break a}}while(0);if((j|0)>15){h=Er(d,e,f,r)|0;if(!h){i=N&((t|0)>(u|0)|(t|0)==(u|0)&s>>>0>v>>>0);h=0;Z=59}else{Z=237;break a}}else if(N){i=(t|0)>(u|0)|(t|0)==(u|0)&s>>>0>v>>>0;h=j;Z=59}else{c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;h=j;j=x+12|0}if((Z|0)==59){c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;j=x+12|0;if(i){W=h;Y=s;X=t;V=u;U=v;K=0;i=3;h=j;break}}W=h;Y=s;X=t;V=u;U=v;K=0;i=1;h=j}while(0);c[h>>2]=i;c[aa+12>>2]=x;h=eq(d,aa,0,0)|0;if(!h){C=aa+40|0;D=aa+44|0;E=aa+48|0;F=aa+52|0;G=d+228|0;H=d+96|0;I=d+16|0;J=d+20|0;M=d+12|0;T=d+52|0;i=0;j=0;b:while(1){h=gq(d,aa)|0;switch(h|0){case 0:{Z=130;break b}case 100:break;default:{Z=223;break b}}A=c[C>>2]|0;B=c[D>>2]|0;y=c[E>>2]|0;z=c[F>>2]|0;if(!i){if(mb()|0){h=7;Z=237;break a}if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](64)|0;if(!h){h=7;Z=237;break a}else l=h}else{h=Wa[c[29356>>2]&127](64)|0;if((c[14985]|0)>>>0<64)c[14985]=64;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){x=c[14978]|0;w=Tv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0;v=L()|0;c[14768]=((v|0)<0|(v|0)==0&w>>>0<=x>>>0)&1}i=Wa[c[29340>>2]&127](h)|0;if(!i){h=7;Z=237;break a}h=Wa[c[29352>>2]&127](i)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0){c[14987]=h;l=i}else l=i}h=l;j=h+64|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));x=nb(c[G>>2]|0)|0;c[l+48>>2]=x;if(!x){Z=222;break}c[l+40>>2]=c[G>>2];h=c[H>>2]|0;c[S>>2]=h;if(!h){i=c[J>>2]|0;c[O>>2]=c[I>>2];c[O+4>>2]=i;i=Bb(51657,O)|0;if(!i){Z=81;break}h=qd(c[M>>2]|0,i,-1,133,0,S,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](i);else{x=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i)}i=c[S>>2]|0;c[H>>2]=i;if(!h)h=i;else{Z=224;break}}j=h;if((Gc(j)|0)==100){v=Oc(j,0)|0;w=L()|0;x=l+16|0;c[x>>2]=v;c[x+4>>2]=w;x=l+8|0;c[x>>2]=v;c[x+4>>2]=w}if(h){h=c[j>>2]|0;x=j+136|0;w=c[x+4>>2]|0;if((w|0)>0|(w|0)==0&(c[x>>2]|0)>>>0>0)hc(h,j);i=kc(j)|0;c[j+20>>2]=770837923;c[j+36>>2]=-1;c[j+40>>2]=0;a[j+146>>0]=2;c[j+44>>2]=0;c[j+32>>2]=1;a[j+147>>0]=-1;c[j+48>>2]=0;x=j+64|0;c[x>>2]=0;c[x+4>>2]=0;if((i|0)==3082|(a[h+81>>0]|0)!=0){Z=92;break}h=c[h+68>>2]&i;if(h){Z=225;break}else{i=l;j=l}}else{i=l;j=l}}v=i+44|0;q=c[v>>2]|0;w=i+24|0;k=c[w>>2]|0;x=i+28|0;l=c[x>>2]|0;c:do if((l|0)>0){h=0;while(1){if((a[k+h>>0]|0)!=(a[A+h>>0]|0)){o=h;break c}h=h+1|0;if((h|0)>=(l|0)){o=h;break}}}else o=0;while(0);p=B-o|0;if((p|0)<1){h=267;Z=223;break}n=0;h=o;k=((o|0)<0)<<31>>31;do{n=n+1|0;h=bw(h|0,k|0,7)|0;k=L()|0}while(!((h|0)==0&(k|0)==0));m=0;h=p;k=((p|0)<0)<<31>>31;do{m=m+1|0;h=bw(h|0,k|0,7)|0;k=L()|0}while(!((h|0)==0&(k|0)==0));u=((z|0)<0)<<31>>31;h=0;k=z;l=u;do{h=h+1|0;k=bw(k|0,l|0,7)|0;l=L()|0}while(!((k|0)==0&(l|0)==0));h=p+z+n+m+h|0;if((q|0)>0?(h+q|0)>(c[G>>2]|0):0){s=i+16|0;h=s;t=c[h>>2]|0;h=c[h+4>>2]|0;p=Sv(t|0,h|0,1,0)|0;r=L()|0;c[s>>2]=p;c[s+4>>2]=r;h=Hr(d,t,h,c[i+48>>2]|0,q)|0;if(h|0){k=i;break}c[T>>2]=(c[T>>2]|0)+1;h=Ir(d,i,A,o+1|0)|0;if(h|0){k=i;break}c[x>>2]=0;m=0;h=B;k=((B|0)<0)<<31>>31;while(1){h=bw(h|0,k|0,7)|0;k=L()|0;if((h|0)==0&(k|0)==0)break;else m=m+1|0}l=0;h=z;k=u;do{l=l+1|0;h=bw(h|0,k|0,7)|0;k=L()|0}while(!((h|0)==0&(k|0)==0));s=0;q=0;l=B+2+z+m+l|0;r=B}else{s=o;l=h;r=p}k=i+56|0;h=k;h=Sv(c[h>>2]|0,c[h+4>>2]|0,l|0,((l|0)<0)<<31>>31|0)|0;t=L()|0;c[k>>2]=h;c[k+4>>2]=t;k=i+40|0;t=i+48|0;h=c[t>>2]|0;if((l|0)>(c[k>>2]|0)){if(mb()|0){k=i;h=7;break}h=sb(h,(l|0)>0?l:0,0)|0;if(!h){k=i;h=7;break}c[t>>2]=h;c[k>>2]=l}k=h+q|0;h=k;m=s;o=((s|0)<0)<<31>>31;while(1){l=m&255;n=h+1|0;a[h>>0]=l|-128;m=bw(m|0,o|0,7)|0;o=L()|0;if((m|0)==0&(o|0)==0)break;else h=n}a[h>>0]=l&127;k=n-k+q|0;l=(c[t>>2]|0)+k|0;h=l;n=r;p=((r|0)<0)<<31>>31;while(1){m=n&255;o=h+1|0;a[h>>0]=m|-128;n=bw(n|0,p|0,7)|0;p=L()|0;if((n|0)==0&(p|0)==0)break;else h=o}a[h>>0]=m&127;n=o-l+k|0;ew((c[t>>2]|0)+n|0,A+s|0,r|0)|0;n=n+r|0;o=(c[t>>2]|0)+n|0;m=o;p=z;l=u;while(1){h=p&255;k=m+1|0;a[m>>0]=h|-128;p=bw(p|0,l|0,7)|0;l=L()|0;if((p|0)==0&(l|0)==0)break;else m=k}a[m>>0]=h&127;k=k-o+n|0;ew((c[t>>2]|0)+k|0,y|0,z|0)|0;c[v>>2]=k+z;k=i+32|0;if((c[k>>2]|0)<(B|0)){l=i+36|0;h=c[l>>2]|0;m=B<<1;if(mb()|0){k=i;h=7;break}h=sb(h,(m|0)>0?m:0,0)|0;if(!h){k=i;h=7;break}c[k>>2]=m;c[l>>2]=h;c[w>>2]=h}else h=c[w>>2]|0;ew(h|0,A|0,B|0)|0;c[x>>2]=B}d:do if((Z|0)==81){k=l;h=7;j=l}else if((Z|0)==92){og(h);k=l;h=7;j=l}else if((Z|0)==130){if(N){s=c[aa>>2]|0;t=c[ba>>2]|0;do if((t|0)>0){r=d+124|0;q=0;e:while(1){p=c[s+(q<<2)>>2]|0;m=p+8|0;l=m;h=c[l>>2]|0;l=c[l+4>>2]|0;do if((h|0)==0&(l|0)==0)h=0;else{k=c[r>>2]|0;c[S>>2]=k;if(!k){k=c[J>>2]|0;c[P>>2]=c[I>>2];c[P+4>>2]=k;k=Bb(52181,P)|0;if(!k){Z=137;break e}h=qd(c[M>>2]|0,k,-1,133,0,S,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{Z=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-Z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}k=c[S>>2]|0;c[r>>2]=k;if(h|0){Z=223;break d}l=m;h=c[l>>2]|0;l=c[l+4>>2]|0}o=k;do if(!(Vc(o,1)|0)){m=c[o+100>>2]|0;n=m+8|0;if(!(b[n>>1]&9216)){Z=m;c[Z>>2]=h;c[Z+4>>2]=l;b[n>>1]=4;break}else{Pg(m,h,l);break}}while(0);m=p+24|0;l=c[m>>2]|0;m=c[m+4>>2]|0;if(Vc(o,2)|0){Gc(o)|0;if(!k){h=0;break}}else{k=c[o+100>>2]|0;h=k+40|0;k=k+48|0;if(!(b[k>>1]&9216)){Z=h;c[Z>>2]=l;c[Z+4>>2]=m;b[k>>1]=4}else Pg(h,l,m);Gc(o)|0}k=c[o>>2]|0;Z=o+136|0;O=c[Z+4>>2]|0;if((O|0)>0|(O|0)==0&(c[Z>>2]|0)>>>0>0)hc(k,o);h=kc(o)|0;c[o+20>>2]=770837923;c[o+36>>2]=-1;c[o+40>>2]=0;a[o+146>>0]=2;c[o+44>>2]=0;c[o+32>>2]=1;a[o+147>>0]=-1;c[o+48>>2]=0;Z=o+64|0;c[Z>>2]=0;c[Z+4>>2]=0;if((h|0)==3082|(a[k+81>>0]|0)!=0){Z=156;break e}h=c[k+68>>2]&h}while(0);q=q+1|0;k=(h|0)==0;if(!((q|0)<(t|0)&k)){Z=159;break}}if((Z|0)==137){h=7;Z=223;break d}else if((Z|0)==156){og(k);h=7;Z=223;break d}else if((Z|0)==159)if(k)break;else{Z=223;break d}}while(0);do if(K){l=d+160|0;h=c[l>>2]|0;c[S>>2]=h;if(!h){k=c[J>>2]|0;c[Q>>2]=c[I>>2];c[Q+4>>2]=k;k=Bb(52491,Q)|0;if(!k){h=7;Z=223;break d}h=qd(c[M>>2]|0,k,-1,133,0,S,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{R=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}k=c[S>>2]|0;c[l>>2]=k;if(!h)h=k;else{Z=223;break d}}l=h;k=d+252|0;o=c[k>>2]|0;m=((e|0)<0)<<31>>31;o=Yv(o|0,((o|0)<0)<<31>>31|0,e|0,m|0)|0;n=((f|0)<0)<<31>>31;o=Sv(o|0,L()|0,f|0,n|0)|0;o=cw(o|0,L()|0,10)|0;p=L()|0;do if(!(Vc(l,1)|0)){q=c[l+100>>2]|0;r=q+8|0;if(!(b[r>>1]&9216)){S=q;c[S>>2]=o;c[S+4>>2]=p;b[r>>1]=4;break}else{Pg(q,o,p);break}}while(0);k=c[k>>2]|0;m=Yv(k|0,((k|0)<0)<<31>>31|0,e|0,m|0)|0;m=Sv(m|0,L()|0,f|0,n|0)|0;m=cw(m|0,L()|0,10)|0;k=L()|0;m=m|1023;if(!(Vc(l,2)|0)){o=c[l+100>>2]|0;n=o+40|0;o=o+48|0;if(!(b[o>>1]&9216)){f=n;c[f>>2]=m;c[f+4>>2]=k;b[o>>1]=4;break}else{Pg(n,m,k);break}}}else{l=d+120|0;h=c[l>>2]|0;c[S>>2]=h;if(!h){k=c[J>>2]|0;c[R>>2]=c[I>>2];c[R+4>>2]=k;k=Bb(52138,R)|0;if(!k){h=7;Z=223;break d}h=qd(c[M>>2]|0,k,-1,133,0,S,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{R=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}k=c[S>>2]|0;c[l>>2]=k;if(!h)h=k;else{Z=223;break d}}l=h;k=c[d+252>>2]|0;k=Yv(k|0,((k|0)<0)<<31>>31|0,e|0,((e|0)<0)<<31>>31|0)|0;k=Sv(k|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;k=cw(k|0,L()|0,10)|0;k=Sv(k|0,L()|0,g|0,((g|0)<0)<<31>>31|0)|0;m=L()|0;if(!(Vc(l,1)|0)){n=c[l+100>>2]|0;o=n+8|0;if(!(b[o>>1]&9216)){f=n;c[f>>2]=k;c[f+4>>2]=m;b[o>>1]=4;break}else{Pg(n,k,m);break}}}while(0);Gc(l)|0;do if(h){h=c[l>>2]|0;f=l+136|0;e=c[f+4>>2]|0;if((e|0)>0|(e|0)==0&(c[f>>2]|0)>>>0>0)hc(h,l);k=kc(l)|0;c[l+20>>2]=770837923;c[l+36>>2]=-1;c[l+40>>2]=0;a[l+146>>0]=2;c[l+44>>2]=0;c[l+32>>2]=1;a[l+147>>0]=-1;c[l+48>>2]=0;f=l+64|0;c[f>>2]=0;c[f+4>>2]=0;if((k|0)==3082|(a[h+81>>0]|0)!=0){og(h);h=7;Z=223;break d}else{h=c[h+68>>2]&k;break}}else h=0;while(0);if(!((i|0)!=0&(h|0)==0)){Z=223;break}}else if(!i){h=0;Z=237;break a}f:do if(!(c[i>>2]|0)){h=i+56|0;h=Jr(d,Y,X,W,0,0,0,0,0,0,c[h>>2]|0,c[h+4>>2]|0,c[i+48>>2]|0,c[i+44>>2]|0)|0}else{k=i+16|0;B=k;A=c[B>>2]|0;B=c[B+4>>2]|0;e=Sv(A|0,B|0,1,0)|0;f=L()|0;h=k;c[h>>2]=e;c[h+4>>2]=f;h=Hr(d,A,B,c[i+48>>2]|0,c[i+44>>2]|0)|0;g:do if(!h){m=c[i>>2]|0;z=i+8|0;o=z;r=c[o>>2]|0;o=c[o+4>>2]|0;q=k;l=c[q>>2]|0;q=c[q+4>>2]|0;h=c[m>>2]|0;if(!h){k=m;s=1;u=l;t=q;q=o}else{p=m;y=1;x=m;while(1){k=c[p+8>>2]|0;if(!k){m=l;n=q;k=h}else{w=y&255;m=l;n=q;v=o;do{h=0;o=r;p=v;while(1){o=bw(o|0,p|0,7)|0;p=L()|0;if((o|0)==0&(p|0)==0)break;else h=h+1|0}o=9-h|0;p=k+36|0;a[(c[p>>2]|0)+o>>0]=w;h=(c[p>>2]|0)+(o+1)|0;t=r;u=v;while(1){s=t&255;a[h>>0]=s|-128;t=bw(t|0,u|0,7)|0;u=L()|0;if((t|0)==0&(u|0)==0)break;else h=h+1|0}a[h>>0]=s&127;h=Hr(d,m,n,(c[p>>2]|0)+o|0,(c[k+32>>2]|0)-o|0)|0;m=Sv(m|0,n|0,1,0)|0;n=L()|0;o=(c[k+12>>2]|0)+1|0;r=Sv(r|0,v|0,o|0,((o|0)<0)<<31>>31|0)|0;v=L()|0;k=c[k+4>>2]|0;o=(h|0)==0}while(o&(k|0)!=0);if(!o)break g;k=c[x>>2]|0}y=y+1|0;h=c[k>>2]|0;if(!h)break;else{o=q;r=l;p=k;l=m;q=n;x=k}}s=y&255;u=m;t=n;r=l}h=0;l=r;m=q;while(1){l=bw(l|0,m|0,7)|0;m=L()|0;if((l|0)==0&(m|0)==0)break;else h=h+1|0}o=9-h|0;p=k+36|0;a[(c[p>>2]|0)+o>>0]=s;n=(c[p>>2]|0)+(o+1)|0;m=r;l=q;while(1){h=m&255;a[n>>0]=h|-128;m=bw(m|0,l|0,7)|0;l=L()|0;if((m|0)==0&(l|0)==0)break;else n=n+1|0}a[n>>0]=h&127;e=Sv(u|0,t|0,-1,-1)|0;f=L()|0;S=z;h=i+56|0;h=Jr(d,Y,X,W,c[S>>2]|0,c[S+4>>2]|0,A,B,e,f,c[h>>2]|0,c[h+4>>2]|0,(c[p>>2]|0)+o|0,(c[k+32>>2]|0)-o|0)|0;break f}while(0);c[T>>2]=(c[T>>2]|0)+1;Z=223;break d}while(0);c[T>>2]=(c[T>>2]|0)+1;if(!h)if((g|0)==-1|((X|0)<(V|0)|(X|0)==(V|0)&Y>>>0>>0)){h=i+56|0;k=i;h=Gr(d,Y,X,c[h>>2]|0,c[h+4>>2]|0)|0}else{k=i;h=0}else k=i}else if((Z|0)==222){i=l;h=7;j=l;Z=223}else if((Z|0)==224){k=l;j=l}else if((Z|0)==225){k=l;j=l}while(0);if((Z|0)==223)if(!i){Z=237;break}else k=i;i=c[k+48>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{d=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[k+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{d=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);Kr(c[k>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](j);Z=237;break}else{Z=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-Z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);Z=237;break}}else Z=237}else Z=237;while(0);if((Z|0)==237){k=c[ba>>2]|0;j=c[aa>>2]|0;if((k|0)>0){i=0;do{l=c[j+(i<<2)>>2]|0;do if(l|0){do if((c[l+56>>2]|0)==0?(_=c[l+64>>2]|0,_|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](_);break}else{d=Wa[c[29352>>2]&127](_)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](_);break}while(0);do if((a[l+5>>0]|0)==0?($=c[l+40>>2]|0,$|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127]($);break}else{d=Wa[c[29352>>2]&127]($)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127]($);break}while(0);m=c[l+52>>2]|0;do if(m|0){n=c[m+20>>2]|0;gc(c[m+16>>2]|0)|0;if(n|0){if(c[n+480>>2]|0){Xd(n,m);break}d=m;if((c[n+304>>2]|0)>>>0<=d>>>0?(c[n+308>>2]|0)>>>0>d>>>0:0){d=n+300|0;c[m>>2]=c[d>>2];c[d>>2]=m;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{d=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{d=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);i=i+1|0}while((i|0)!=(k|0));i=aa;Z=265}else{i=aa;Z=264}}if((Z|0)==264)if(!j)j=h;else Z=265;do if((Z|0)==265)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);j=h;break}else{$=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-$;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);j=h;break}while(0);h=c[aa+16>>2]|0;if(!h){c[ba>>2]=0;c[i>>2]=0;Ra=ca;return j|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);c[ba>>2]=0;c[i>>2]=0;Ra=ca;return j|0}else{aa=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);c[ba>>2]=0;c[i>>2]=0;Ra=ca;return j|0}return 0}function Fr(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=b+252|0;if((c[h>>2]|0)<=0){k=b+264|0;c[k>>2]=0;return}i=b+256|0;g=0;do{k=c[i>>2]|0;f=k+(g*24|0)+12|0;d=c[f>>2]|0;if(!d)d=0;else{do{e=c[d+8>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{l=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);d=c[d>>2]|0}while((d|0)!=0);d=c[f>>2]|0}c[f>>2]=0;e=k+(g*24|0)+20|0;f=c[e>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{l=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[e>>2]=0;c[k+(g*24|0)+16>>2]=0;if(d|0){f=k+(g*24|0)+5|0;do{e=d;d=c[d>>2]|0;do if(a[f>>0]|0?(j=c[e+12>>2]|0,j|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{l=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](e);else{l=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e)}}while((d|0)!=0)}c[k+(g*24|0)+8>>2]=0;g=g+1|0}while((g|0)<(c[h>>2]|0));l=b+264|0;c[l>>2]=0;return}function Gr(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,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;A=Ra;Ra=Ra+32|0;w=A+16|0;v=A+8|0;k=A;x=A+24|0;l=d+204|0;j=c[l>>2]|0;c[x>>2]=j;if(!j){j=c[d+20>>2]|0;c[k>>2]=c[d+16>>2];c[k+4>>2]=j;j=Bb(53301,k)|0;if(!j){g=7;Ra=A;return g|0}k=qd(c[d+12>>2]|0,j,-1,133,0,x,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](j);else{z=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j)}j=c[x>>2]|0;c[l>>2]=j;if(k){g=k;Ra=A;return g|0}}n=Wv(f|0,g|0,1024,0)|0;n=cw(n|0,L()|0,10)|0;m=L()|0;n=n|1023;s=Yv(h|0,i|0,3,0)|0;s=Wv(s|0,L()|0,2,0)|0;t=L()|0;z=j;k=Sv(f|0,g|0,1,0)|0;l=L()|0;do if(!(Vc(z,1)|0)){h=c[z+100>>2]|0;i=h+8|0;if(!(b[i>>1]&9216)){y=h;c[y>>2]=k;c[y+4>>2]=l;b[i>>1]=4;break}else{Pg(h,k,l);break}}while(0);do if(!(Vc(z,2)|0)){l=c[z+100>>2]|0;k=l+40|0;l=l+48|0;if(!(b[l>>1]&9216)){y=k;c[y>>2]=n;c[y+4>>2]=m;b[l>>1]=4;break}else{Pg(k,n,m);break}}while(0);a:do if((Gc(z)|0)==100){p=z+120|0;q=z+144|0;r=z+40|0;if(!j){g=0;Ra=A;return g|0}while(1){k=c[p>>2]|0;if((k|0)!=0?(e[q>>1]|0)>2:0)k=k+80|0;else{k=c[z>>2]|0;c[k+64>>2]=25;Ne(k,25);k=29576}l=b[k+8>>1]|0;if((l&514)==514?(a[k+10>>0]|0)==1:0)o=c[k+16>>2]|0;else if(!(l&1))o=Gg(k,1)|0;else o=0;k=c[z>>2]|0;l=c[r>>2]|0;if((l|0)==3082|(a[k+81>>0]|0)!=0){og(k);k=7}else k=c[k+68>>2]&l;c[r>>2]=k;if(!o){l=0;break a}if(((a[o>>0]|0)+-48&255)<10){k=0;do k=k+1|0;while(((a[o+k>>0]|0)+-48&255)<10)}else k=0;b:while(1){l=a[o+k>>0]|0;switch(l<<24>>24){case 45:{u=40;break b}case 32:break;default:{m=1;n=0;break b}}k=k+1|0}if((u|0)==40){u=0;l=k+1|0;k=l;l=a[o+l>>0]|0;m=-1;n=-1}if((l+-48&255)<10){h=0;i=0;do{i=Yv(h|0,i|0,10,0)|0;h=(l&255)+-48|0;h=Sv(i|0,L()|0,h|0,((h|0)<0)<<31>>31|0)|0;i=L()|0;k=k+1|0;l=a[o+k>>0]|0}while((l+-48&255)<10);l=h;k=i}else{l=0;k=0}l=Yv(l|0,k|0,m|0,n|0)|0;y=L()|0;k=(y|0)<0|(y|0)==0&l>>>0<1;l=(y|0)>(t|0)|(y|0)==(t|0)&l>>>0>s>>>0;if(k|l){u=45;break}if((Gc(z)|0)!=100){u=46;break}}if((u|0)==45){l=(k|l)^1;break}else if((u|0)==46){l=(k|l)^1;break}}else l=0;while(0);do if(!j){j=0;y=1}else{j=c[z>>2]|0;y=z+136|0;u=c[y+4>>2]|0;if((u|0)>0|(u|0)==0&(c[y>>2]|0)>>>0>0)hc(j,z);k=kc(z)|0;c[z+20>>2]=770837923;c[z+36>>2]=-1;c[z+40>>2]=0;a[z+146>>0]=2;c[z+44>>2]=0;c[z+32>>2]=1;a[z+147>>0]=-1;c[z+48>>2]=0;y=z+64|0;c[y>>2]=0;c[y+4>>2]=0;if(!((k|0)==3082|(a[j+81>>0]|0)!=0)){j=c[j+68>>2]&k;y=0;break}og(j);g=7;Ra=A;return g|0}while(0);if(!(l&(j|0)==0)){g=j;Ra=A;return g|0}l=d+208|0;j=c[l>>2]|0;c[x>>2]=j;if(!j){j=c[d+20>>2]|0;c[v>>2]=c[d+16>>2];c[v+4>>2]=j;j=Bb(53407,v)|0;if(!j){g=7;Ra=A;return g|0}k=qd(c[d+12>>2]|0,j,-1,133,0,x,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](j);else{v=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j)}j=c[x>>2]|0;c[l>>2]=j;if(!k)h=j;else{g=k;Ra=A;return g|0}}else h=j;l=d+212|0;j=c[l>>2]|0;c[x>>2]=j;if(!j){j=c[d+20>>2]|0;c[w>>2]=c[d+16>>2];c[w+4>>2]=j;j=Bb(53480,w)|0;if(!j){g=7;Ra=A;return g|0}k=qd(c[d+12>>2]|0,j,-1,133,0,x,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](j);else{d=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j)}j=c[x>>2]|0;c[l>>2]=j;if(!k)x=j;else{g=k;Ra=A;return g|0}}else x=j;do if(!(Vc(z,1)|0)){j=c[z+100>>2]|0;k=j+8|0;if(!(b[k>>1]&9216)){d=j;c[d>>2]=f;c[d+4>>2]=g;b[k>>1]=4;break}else{Pg(j,f,g);break}}while(0);c:do if((Gc(z)|0)==100){m=h;n=m+100|0;o=m+136|0;p=m+20|0;q=m+36|0;r=m+40|0;s=m+146|0;t=m+44|0;u=m+32|0;v=m+147|0;w=m+48|0;d=m+64|0;d:do if(!h){i=0;while(1){do if(!(Vc(m,1)|0)){j=c[n>>2]|0;k=j+8|0;if(!(b[k>>1]&9216)){h=j;c[h>>2]=i;c[h+4>>2]=0;b[k>>1]=4;break}else{Pg(j,i,0);break}}while(0);j=Nc(z,0)|0;k=((j|0)<0)<<31>>31;do if(!(Vc(m,2)|0)){h=c[n>>2]|0;l=h+40|0;h=h+48|0;if(!(b[h>>1]&9216)){c[l>>2]=j;c[l+4>>2]=k;b[h>>1]=4;break}else{Pg(l,j,k);break}}while(0);j=Nc(z,1)|0;k=((j|0)<0)<<31>>31;if(!(Vc(m,3)|0)){h=c[n>>2]|0;l=h+80|0;h=h+88|0;if(!(b[h>>1]&9216)){c[l>>2]=j;c[l+4>>2]=k;b[h>>1]=4}else Pg(l,j,k);Gc(m)|0;j=c[m>>2]|0;h=o;l=c[h+4>>2]|0;if((l|0)>0|(l|0)==0&(c[h>>2]|0)>>>0>0)hc(j,m);k=kc(m)|0;c[p>>2]=770837923;c[q>>2]=-1;c[r>>2]=0;a[s>>0]=2;c[t>>2]=0;c[u>>2]=1;a[v>>0]=-1;c[w>>2]=0;h=d;c[h>>2]=0;c[h+4>>2]=0;if((k|0)==3082|(a[j+81>>0]|0)!=0){u=113;break d}j=c[j+68>>2]&k;if(j|0){u=115;break d}}else Gc(m)|0;if((Gc(z)|0)==100)i=i+1|0;else break c}}else{i=0;while(1){do if(!(Vc(m,1)|0)){j=c[n>>2]|0;k=j+8|0;if(!(b[k>>1]&9216)){h=j;c[h>>2]=i;c[h+4>>2]=0;b[k>>1]=4;break}else{Pg(j,i,0);break}}while(0);j=Nc(z,0)|0;k=((j|0)<0)<<31>>31;do if(!(Vc(m,2)|0)){h=c[n>>2]|0;l=h+40|0;h=h+48|0;if(!(b[h>>1]&9216)){c[l>>2]=j;c[l+4>>2]=k;b[h>>1]=4;break}else{Pg(l,j,k);break}}while(0);j=Nc(z,1)|0;k=((j|0)<0)<<31>>31;if(!(Vc(m,3)|0)){h=c[n>>2]|0;l=h+80|0;h=h+88|0;if(!(b[h>>1]&9216)){c[l>>2]=j;c[l+4>>2]=k;b[h>>1]=4}else Pg(l,j,k);Gc(m)|0}else Gc(m)|0;j=c[m>>2]|0;h=o;l=c[h+4>>2]|0;if((l|0)>0|(l|0)==0&(c[h>>2]|0)>>>0>0)hc(j,m);k=kc(m)|0;c[p>>2]=770837923;c[q>>2]=-1;c[r>>2]=0;a[s>>0]=2;c[t>>2]=0;c[u>>2]=1;a[v>>0]=-1;c[w>>2]=0;h=d;c[h>>2]=0;c[h+4>>2]=0;if((k|0)==3082|(a[j+81>>0]|0)!=0){u=113;break d}j=c[j+68>>2]&k;if(j|0){u=115;break d}if((Gc(z)|0)==100)i=i+1|0;else break c}}while(0);if((u|0)==113){og(j);if(y){g=7;Ra=A;return g|0}else k=7}else if((u|0)==115)if(y){g=j;Ra=A;return g|0}else k=j;j=c[z>>2]|0;g=z+136|0;f=c[g+4>>2]|0;if((f|0)>0|(f|0)==0&(c[g>>2]|0)>>>0>0)hc(j,z);g=kc(z)|0;c[z+20>>2]=770837923;c[z+36>>2]=-1;c[z+40>>2]=0;a[z+146>>0]=2;c[z+44>>2]=0;c[z+32>>2]=1;a[z+147>>0]=-1;c[z+48>>2]=0;f=z+64|0;c[f>>2]=0;c[f+4>>2]=0;if(!((g|0)==3082|(a[j+81>>0]|0)!=0)){g=k;Ra=A;return g|0}og(j);g=k;Ra=A;return g|0}while(0);do if(!y){j=c[z>>2]|0;y=z+136|0;d=c[y+4>>2]|0;if((d|0)>0|(d|0)==0&(c[y>>2]|0)>>>0>0)hc(j,z);k=kc(z)|0;c[z+20>>2]=770837923;c[z+36>>2]=-1;c[z+40>>2]=0;a[z+146>>0]=2;c[z+44>>2]=0;c[z+32>>2]=1;a[z+147>>0]=-1;c[z+48>>2]=0;z=z+64|0;c[z>>2]=0;c[z+4>>2]=0;if((k|0)==3082|(a[j+81>>0]|0)!=0){og(j);g=7;Ra=A;return g|0}else{j=c[j+68>>2]&k;if(!j)break;Ra=A;return j|0}}while(0);l=x;if(Vc(l,1)|0){Gc(l)|0;if(!x){g=0;Ra=A;return g|0}}else{j=c[l+100>>2]|0;k=j+8|0;if(!(b[k>>1]&9216)){z=j;c[z>>2]=f;c[z+4>>2]=g;b[k>>1]=4}else Pg(j,f,g);Gc(l)|0}j=c[l>>2]|0;g=l+136|0;f=c[g+4>>2]|0;if((f|0)>0|(f|0)==0&(c[g>>2]|0)>>>0>0)hc(j,l);k=kc(l)|0;c[l+20>>2]=770837923;c[l+36>>2]=-1;c[l+40>>2]=0;a[l+146>>0]=2;c[l+44>>2]=0;c[l+32>>2]=1;a[l+147>>0]=-1;c[l+48>>2]=0;g=l+64|0;c[g>>2]=0;c[g+4>>2]=0;if((k|0)==3082|(a[j+81>>0]|0)!=0){og(j);g=7;Ra=A;return g|0}else{g=c[j+68>>2]&k;Ra=A;return g|0}return 0}function Hr(d,e,f,g,h){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;o=Ra;Ra=Ra+16|0;j=o;k=o+8|0;l=d+92|0;i=c[l>>2]|0;c[k>>2]=i;if(!i){i=c[d+20>>2]|0;c[j>>2]=c[d+16>>2];c[j+4>>2]=i;i=Bb(51598,j)|0;if(!i){n=7;Ra=o;return n|0}j=qd(c[d+12>>2]|0,i,-1,133,0,k,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](i);else{d=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i)}i=c[k>>2]|0;c[l>>2]=i;if(j){n=j;Ra=o;return n|0}}k=i;do if(!(Vc(k,1)|0)){j=c[k+100>>2]|0;d=j+8|0;if(!(b[d>>1]&9216)){l=j;c[l>>2]=e;c[l+4>>2]=f;b[d>>1]=4;break}else{Pg(j,e,f);break}}while(0);if((g|0)==0|(Vc(k,2)|0)!=0){Gc(k)|0;if(!i)i=0;else n=19}else{i=yc((c[k+100>>2]|0)+40|0,g,h,0,0)|0;if(i|0?(m=c[k>>2]|0,c[m+64>>2]=i,Ne(m,i),m=c[k>>2]|0,(i|0)==3082|(a[m+81>>0]|0)!=0):0)og(m);Gc(k)|0;n=19}do if((n|0)==19){i=c[k>>2]|0;n=k+136|0;m=c[n+4>>2]|0;if((m|0)>0|(m|0)==0&(c[n>>2]|0)>>>0>0)hc(i,k);j=kc(k)|0;c[k+20>>2]=770837923;c[k+36>>2]=-1;c[k+40>>2]=0;a[k+146>>0]=2;c[k+44>>2]=0;c[k+32>>2]=1;a[k+147>>0]=-1;c[k+48>>2]=0;n=k+64|0;c[n>>2]=0;c[n+4>>2]=0;if((j|0)==3082|(a[i+81>>0]|0)!=0){og(i);i=7;break}else{i=c[i+68>>2]&j;break}}while(0);Vc(k,2)|0;n=i;Ra=o;return n|0}function Ir(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,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;x=Ra;Ra=Ra+16|0;p=x+4|0;q=x;w=c[d>>2]|0;o=(w|0)!=0;a:do if(o){t=w+32|0;j=c[t>>2]|0;u=w+16|0;n=c[u>>2]|0;v=w+20|0;h=c[v>>2]|0;b:do if((h|0)>0){g=0;while(1){if((a[n+g>>0]|0)!=(a[e+g>>0]|0)){s=g;break b}g=g+1|0;if((g|0)>=(h|0)){s=g;break}}}else s=0;while(0);k=((s|0)<0)<<31>>31;m=0;g=s;h=k;do{m=m+1|0;g=bw(g|0,h|0,7)|0;h=L()|0}while(!((g|0)==0&(h|0)==0));r=f-s|0;i=((r|0)<0)<<31>>31;g=0;h=r;l=i;do{g=g+1|0;h=bw(h|0,l|0,7)|0;l=L()|0}while(!((h|0)==0&(l|0)==0));h=r+j+m+g|0;g=c[b+228>>2]|0;do if((h|0)>(g|0)){if(n|0)break a;d=nb(h)|0;c[w+36>>2]=d;if(!d){f=7;Ra=x;return f|0}else{g=c[u>>2]|0;break}}else g=n;while(0);b=w+36|0;if(g){m=(c[b>>2]|0)+j|0;l=m;n=s;while(1){g=n&255;h=l+1|0;a[l>>0]=g|-128;n=bw(n|0,k|0,7)|0;k=L()|0;if((n|0)==0&(k|0)==0)break;else l=h}a[l>>0]=g&127;j=j-m+h|0}l=(c[b>>2]|0)+j|0;k=l;m=r;while(1){g=m&255;h=k+1|0;a[k>>0]=g|-128;m=bw(m|0,i|0,7)|0;i=L()|0;if((m|0)==0&(i|0)==0)break;else k=h}a[k>>0]=g&127;j=h-l+j|0;ew((c[b>>2]|0)+j|0,e+s|0,r|0)|0;c[t>>2]=j+r;j=w+12|0;c[j>>2]=(c[j>>2]|0)+1;j=w+24|0;i=w+28|0;g=c[i>>2]|0;do if((c[j>>2]|0)<(f|0)){h=f<<1;if(mb()|0){f=7;Ra=x;return f|0}g=sb(g,(h|0)>0?h:0,0)|0;if(!g){f=7;Ra=x;return f|0}else{c[j>>2]=h;c[i>>2]=g;break}}while(0);c[u>>2]=g;ew(g|0,e|0,f|0)|0;c[v>>2]=f;f=0;Ra=x;return f|0}else g=c[b+228>>2]|0;while(0);j=nb(g+40|0)|0;c[p>>2]=j;g=j;if(!j){f=7;Ra=x;return f|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;c[j+32>>2]=11;c[j+36>>2]=j+40;if(o){c[q>>2]=c[w>>2];h=Ir(b,q,e,f)|0;i=c[q>>2]|0;if(!(c[w>>2]|0))c[w>>2]=i;c[w+4>>2]=g;c[j+8>>2]=c[w+8>>2];c[j>>2]=i;f=w+28|0;c[j+28>>2]=c[f>>2];c[j+24>>2]=c[w+24>>2];c[f>>2]=0}else{c[j+8>>2]=j;h=Ir(b,p,e,f)|0;g=c[p>>2]|0}c[d>>2]=g;f=h;Ra=x;return f|0}function Jr(d,e,f,g,h,i,j,k,l,m,n,o,p,q){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=Ra;Ra=Ra+32|0;v=y+8|0;s=y;t=y+24|0;u=d+100|0;r=c[u>>2]|0;c[t>>2]=r;if(!r){r=c[d+20>>2]|0;c[s>>2]=c[d+16>>2];c[s+4>>2]=r;r=Bb(51725,s)|0;if(!r){x=7;Ra=y;return x|0}s=qd(c[d+12>>2]|0,r,-1,133,0,t,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](r);else{d=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r)}r=c[t>>2]|0;c[u>>2]=r;if(!s)t=r;else{x=s;Ra=y;return x|0}}else t=r;u=t;do if(!(Vc(u,1)|0)){r=c[u+100>>2]|0;s=r+8|0;if(!(b[s>>1]&9216)){d=r;c[d>>2]=e;c[d+4>>2]=f;b[s>>1]=4;break}else{Pg(r,e,f);break}}while(0);r=((g|0)<0)<<31>>31;do if(!(Vc(u,2)|0)){d=c[u+100>>2]|0;s=d+40|0;d=d+48|0;if(!(b[d>>1]&9216)){f=s;c[f>>2]=g;c[f+4>>2]=r;b[d>>1]=4;break}else{Pg(s,g,r);break}}while(0);do if(!(Vc(u,3)|0)){s=c[u+100>>2]|0;r=s+80|0;s=s+88|0;if(!(b[s>>1]&9216)){g=r;c[g>>2]=h;c[g+4>>2]=i;b[s>>1]=4;break}else{Pg(r,h,i);break}}while(0);do if(!(Vc(u,4)|0)){s=c[u+100>>2]|0;r=s+120|0;s=s+128|0;if(!(b[s>>1]&9216)){i=r;c[i>>2]=j;c[i+4>>2]=k;b[s>>1]=4;break}else{Pg(r,j,k);break}}while(0);do if((n|0)==0&(o|0)==0){if(!(Vc(u,5)|0)){s=c[u+100>>2]|0;r=s+160|0;s=s+168|0;if(!(b[s>>1]&9216)){v=r;c[v>>2]=l;c[v+4>>2]=m;b[s>>1]=4;break}else{Pg(r,l,m);break}}}else{r=v;c[r>>2]=l;c[r+4>>2]=m;r=v+8|0;c[r>>2]=n;c[r+4>>2]=o;r=Bb(54991,v)|0;if(!r){x=7;Ra=y;return x|0}else{Tc(u,5,r,-1,90,1)|0;break}}while(0);if((p|0)==0|(Vc(u,6)|0)!=0){Gc(u)|0;if(!t)r=0;else x=38}else{r=yc((c[u+100>>2]|0)+200|0,p,q,0,0)|0;if(r|0?(w=c[u>>2]|0,c[w+64>>2]=r,Ne(w,r),w=c[u>>2]|0,(r|0)==3082|(a[w+81>>0]|0)!=0):0)og(w);Gc(u)|0;x=38}do if((x|0)==38){r=c[u>>2]|0;x=u+136|0;w=c[x+4>>2]|0;if((w|0)>0|(w|0)==0&(c[x>>2]|0)>>>0>0)hc(r,u);s=kc(u)|0;c[u+20>>2]=770837923;c[u+36>>2]=-1;c[u+40>>2]=0;a[u+146>>0]=2;c[u+44>>2]=0;c[u+32>>2]=1;a[u+147>>0]=-1;c[u+48>>2]=0;x=u+64|0;c[x>>2]=0;c[x+4>>2]=0;if((s|0)==3082|(a[r+81>>0]|0)!=0){og(r);r=7;break}else{r=c[r+68>>2]&s;break}}while(0);Vc(u,6)|0;x=r;Ra=y;return x|0}function Kr(a){a=a|0;var b=0,d=0,e=0;if(!a)return;a=c[a+8>>2]|0;Kr(c[a>>2]|0);if(!a)return;do{d=a;a=c[a+4>>2]|0;b=c[d+36>>2]|0;do if(!((b|0)==(d+40|0)|(b|0)==0))if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{e=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);b=c[d+28>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{e=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](d);else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d)}}while((a|0)!=0);return}function Lr(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;l=Ra;Ra=Ra+48|0;j=l+32|0;i=l+24|0;h=l+16|0;g=l+8|0;e=l;k=l+40|0;Fr(b);do if(d|0){f=b+64|0;d=c[f>>2]|0;c[k>>2]=d;if(!d){d=c[b+20>>2]|0;c[e>>2]=c[b+16>>2];c[e+4>>2]=d;d=Bb(51372,e)|0;if(!d){k=7;Ra=l;return k|0}e=qd(c[b+12>>2]|0,d,-1,133,0,k,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](d);else{m=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d)}d=c[k>>2]|0;c[f>>2]=d;if(e){m=e;Ra=l;return m|0}}f=d;Gc(f)|0;if(d|0){d=c[f>>2]|0;m=f+136|0;e=c[m+4>>2]|0;if((e|0)>0|(e|0)==0&(c[m>>2]|0)>>>0>0)hc(d,f);e=kc(f)|0;c[f+20>>2]=770837923;c[f+36>>2]=-1;c[f+40>>2]=0;a[f+146>>0]=2;c[f+44>>2]=0;c[f+32>>2]=1;a[f+147>>0]=-1;c[f+48>>2]=0;m=f+64|0;c[m>>2]=0;c[m+4>>2]=0;if((e|0)==3082|(a[d+81>>0]|0)!=0){og(d);m=7;Ra=l;return m|0}else{d=c[d+68>>2]&e;if(!d)break;Ra=l;return d|0}}}while(0);f=b+68|0;d=c[f>>2]|0;c[k>>2]=d;if(!d){d=c[b+20>>2]|0;c[g>>2]=c[b+16>>2];c[g+4>>2]=d;d=Bb(51400,g)|0;if(!d){m=7;Ra=l;return m|0}e=qd(c[b+12>>2]|0,d,-1,133,0,k,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](d);else{m=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d)}d=c[k>>2]|0;c[f>>2]=d;if(e){m=e;Ra=l;return m|0}}f=d;Gc(f)|0;do if(d|0){e=c[f>>2]|0;m=f+136|0;g=c[m+4>>2]|0;if((g|0)>0|(g|0)==0&(c[m>>2]|0)>>>0>0)hc(e,f);d=kc(f)|0;c[f+20>>2]=770837923;c[f+36>>2]=-1;c[f+40>>2]=0;a[f+146>>0]=2;c[f+44>>2]=0;c[f+32>>2]=1;a[f+147>>0]=-1;c[f+48>>2]=0;m=f+64|0;c[m>>2]=0;c[m+4>>2]=0;if((d|0)==3082|(a[e+81>>0]|0)!=0){og(e);m=7;Ra=l;return m|0}else{d=c[e+68>>2]&d;if(!d)break;Ra=l;return d|0}}while(0);f=b+72|0;d=c[f>>2]|0;c[k>>2]=d;if(!d){d=c[b+20>>2]|0;c[h>>2]=c[b+16>>2];c[h+4>>2]=d;d=Bb(51429,h)|0;if(!d){m=7;Ra=l;return m|0}e=qd(c[b+12>>2]|0,d,-1,133,0,k,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](d);else{m=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d)}d=c[k>>2]|0;c[f>>2]=d;if(e){m=e;Ra=l;return m|0}}f=d;Gc(f)|0;do if(!d)d=0;else{d=c[f>>2]|0;m=f+136|0;h=c[m+4>>2]|0;if((h|0)>0|(h|0)==0&(c[m>>2]|0)>>>0>0)hc(d,f);e=kc(f)|0;c[f+20>>2]=770837923;c[f+36>>2]=-1;c[f+40>>2]=0;a[f+146>>0]=2;c[f+44>>2]=0;c[f+32>>2]=1;a[f+147>>0]=-1;c[f+48>>2]=0;m=f+64|0;c[m>>2]=0;c[m+4>>2]=0;if(!((e|0)==3082|(a[d+81>>0]|0)!=0)){d=c[d+68>>2]&e;break}og(d);m=7;Ra=l;return m|0}while(0);do if((d|0)==0&(a[b+234>>0]|0)!=0){f=b+76|0;d=c[f>>2]|0;c[k>>2]=d;if(!d){d=c[b+20>>2]|0;c[i>>2]=c[b+16>>2];c[i+4>>2]=d;d=Bb(51456,i)|0;if(!d){m=7;Ra=l;return m|0}e=qd(c[b+12>>2]|0,d,-1,133,0,k,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](d);else{m=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d)}d=c[k>>2]|0;c[f>>2]=d;if(e){m=e;Ra=l;return m|0}}f=d;Gc(f)|0;if(!d)d=0;else{d=c[f>>2]|0;m=f+136|0;i=c[m+4>>2]|0;if((i|0)>0|(i|0)==0&(c[m>>2]|0)>>>0>0)hc(d,f);e=kc(f)|0;c[f+20>>2]=770837923;c[f+36>>2]=-1;c[f+40>>2]=0;a[f+146>>0]=2;c[f+44>>2]=0;c[f+32>>2]=1;a[f+147>>0]=-1;c[f+48>>2]=0;m=f+64|0;c[m>>2]=0;c[m+4>>2]=0;if(!((e|0)==3082|(a[d+81>>0]|0)!=0)){d=c[d+68>>2]&e;break}og(d);m=7;Ra=l;return m|0}}while(0);if(!((d|0)==0&(a[b+233>>0]|0)!=0)){m=d;Ra=l;return m|0}f=b+80|0;d=c[f>>2]|0;c[k>>2]=d;if(!d){d=c[b+20>>2]|0;c[j>>2]=c[b+16>>2];c[j+4>>2]=d;d=Bb(51484,j)|0;if(!d){m=7;Ra=l;return m|0}e=qd(c[b+12>>2]|0,d,-1,133,0,k,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](d);else{m=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d)}d=c[k>>2]|0;c[f>>2]=d;if(e){m=e;Ra=l;return m|0}}f=d;Gc(f)|0;if(!d){m=0;Ra=l;return m|0}d=c[f>>2]|0;m=f+136|0;k=c[m+4>>2]|0;if((k|0)>0|(k|0)==0&(c[m>>2]|0)>>>0>0)hc(d,f);e=kc(f)|0;c[f+20>>2]=770837923;c[f+36>>2]=-1;c[f+40>>2]=0;a[f+146>>0]=2;c[f+44>>2]=0;c[f+32>>2]=1;a[f+147>>0]=-1;c[f+48>>2]=0;m=f+64|0;c[m>>2]=0;c[m+4>>2]=0;if((e|0)==3082|(a[d+81>>0]|0)!=0){og(d);m=7;Ra=l;return m|0}else{m=c[d+68>>2]&e;Ra=l;return m|0}return 0}function Mr(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;s=Ra;Ra=Ra+32|0;i=s+20|0;n=s+16|0;o=s+12|0;p=s+8|0;q=s+4|0;m=s;c[n>>2]=0;c[o>>2]=0;c[p>>2]=0;c[m>>2]=0;g=c[a+36>>2]|0;r=c[g>>2]|0;if(!d){c[f>>2]=0;f=0;Ra=s;return f|0}c[i>>2]=0;d=Za[c[r+12>>2]&127](g,d,-1,i)|0;do if(!d){c[c[i>>2]>>2]=g;if((c[r>>2]|0)>0?(h=Xa[c[r+24>>2]&255](c[i>>2]|0,b)|0,h|0):0){Wa[c[r+16>>2]&127](c[i>>2]|0)|0;c[i>>2]=0;d=h;break}l=c[i>>2]|0;i=c[r+20>>2]|0;j=a+256|0;k=a+252|0;d=$a[i&127](l,q,m,n,o,p)|0;a:do if(!d){b=0;do{h=c[p>>2]|0;b=(h|0)<(b|0)?b:h+1|0;d=c[q>>2]|0;g=c[m>>2]|0;if((h|0)<0|(d|0)==0|(g|0)<1){d=1;break a}d=Nr(a,e,h,(c[j>>2]|0)+4|0,d,g)|0;if(d|0)break a;h=1;while(1){if((h|0)>=(c[k>>2]|0))break;d=c[j>>2]|0;g=c[d+(h*24|0)>>2]|0;if((c[m>>2]|0)<(g|0))d=0;else d=Nr(a,e,c[p>>2]|0,d+(h*24|0)+4|0,c[q>>2]|0,g)|0;if(!d)h=h+1|0;else break a}d=$a[i&127](l,q,m,n,o,p)|0}while((d|0)==0)}else b=0;while(0);Wa[c[r+16>>2]&127](l)|0;c[f>>2]=(c[f>>2]|0)+b;f=(d|0)==101?0:d;Ra=s;return f|0}while(0);f=d;Ra=s;return f|0}function Nr(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;r=Ra;Ra=Ra+16|0;p=r+4|0;q=r;c[q>>2]=0;a:do if((((f|0)!=0?(m=f+16|0,(c[m>>2]|0)!=0):0)?(k=Xa[(a[f>>0]<<24>>24==1?154:155)&255](g,h)|0,k=(c[f+12>>2]|0)+-1&k,l=c[m>>2]|0,(l|0)!=0):0)?(j=c[l+(k<<3)>>2]|0,n=(a[f>>0]|0)==1?79:80,i=c[l+(k<<3)+4>>2]|0,(j|0)!=0&(i|0)!=0):0){while(1){j=j+-1|0;if(!(Za[n&127](c[i+12>>2]|0,c[i+16>>2]|0,g,h)|0))break;i=c[i>>2]|0;if(!((j|0)!=0&(i|0)!=0)){o=8;break a}}i=c[i+8>>2]|0;c[p>>2]=i;if(!i)i=p;else{n=b+264|0;c[n>>2]=-20-h-(c[i>>2]|0)+(c[n>>2]|0);i=p}}else o=8;while(0);if((o|0)==8){c[p>>2]=0;i=p}o=b+272|0;if(wr(p,c[o>>2]|0,c[o+4>>2]|0,d,((d|0)<0)<<31>>31,e,((e|0)<0)<<31>>31,q)|0?(o=c[p>>2]|0,(o|0)==(Ep(f,g,h,o)|0)):0){i=c[i>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{p=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);c[q>>2]=7;q=7;Ra=r;return q|0}i=c[q>>2]|0;if(i|0){q=i;Ra=r;return q|0}q=b+264|0;c[q>>2]=h+20+(c[c[p>>2]>>2]|0)+(c[q>>2]|0);q=0;Ra=r;return q|0} -function Ll(f,g,h,i,j,k,l){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|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,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;ra=Ra;Ra=Ra+160|0;ba=ra+8|0;A=ra;ma=ra+64|0;na=ra+12|0;oa=h+80|0;da=c[f>>2]|0;y=j+64|0;_=c[y>>2]|0;v=h+4|0;ea=c[v>>2]|0;p=a[j+44>>0]|0;fa=p&255;n=ea+8+(fa*72|0)|0;ia=c[ea+8+(fa*72|0)+40>>2]|0;o=c[h+492>>2]|0;a:do if((o|0)>0){m=0;while(1){if((c[h+496+(m<<2)>>2]|0)==(ia|0))break;m=m+1|0;if((m|0)>=(o|0)){m=0;o=0;break a}}m=cw(1,0,m|0)|0;o=L()|0}else{m=0;o=0}while(0);qa=j+72|0;w=qa;c[w>>2]=~m&k;c[w+4>>2]=~o&l;w=h+64|0;w=bw(c[w>>2]|0,c[w+4>>2]|0,i|0)|0;L()|0;aa=w&1;q=f+56|0;pa=c[q>>2]|0;z=pa+-1|0;Q=j+16|0;c[Q>>2]=z;ca=j+12|0;c[ca>>2]=z;pa=pa+-2|0;c[q>>2]=pa;D=j+24|0;c[D>>2]=pa;do if(p<<24>>24?a[ea+8+(fa*72|0)+36>>0]&8:0){o=f+44|0;m=(c[o>>2]|0)+1|0;c[o>>2]=m;c[j>>2]=m;o=g+108|0;p=c[o>>2]|0;if((c[g+112>>2]|0)>(p|0)){c[o>>2]=p+1;$=c[g+104>>2]|0;a[$+(p*20|0)>>0]=70;b[$+(p*20|0)+2>>1]=0;c[$+(p*20|0)+4>>2]=0;c[$+(p*20|0)+8>>2]=m;c[$+(p*20|0)+12>>2]=0;c[$+(p*20|0)+16>>2]=0;a[$+(p*20|0)+1>>0]=0;break}else{Di(g,70,0,m,0)|0;break}}while(0);b:do if((i|0)>0){m=i;while(1){if(c[h+752+(m*80|0)>>2]|0)break b;o=m+-1|0;if((m|0)>1)m=o;else{m=o;break}}}else m=i;while(0);p=c[h+752+(m*80|0)+12>>2]|0;m=a[ea+8+(fa*72|0)+37>>0]|0;c:do if(!(m&16)){$=_+36|0;o=c[$>>2]|0;if(o&1024|0){r=b[_+40>>1]|0;t=r&65535;m=t+2|0;n=f+32|0;o=c[n>>2]|0;p=f+28|0;q=c[p>>2]|0;if((q|0)<(m|0)){ba=f+44|0;u=c[ba>>2]|0;c[ba>>2]=u+m;u=u+1|0}else{c[n>>2]=m+o;c[p>>2]=q-m;u=o}m=c[ca>>2]|0;i=r<<16>>16==0;if(i)p=m;else{q=u+2|0;r=_+48|0;p=0;do{n=q+p|0;o=c[(c[r>>2]|0)+(p<<2)>>2]|0;do if(o)if(!(b[o+12>>1]&1)){km(f,c[(c[o>>2]|0)+16>>2]|0,n,1);break}else{jm(f,o,j,p,aa,n)|0;m=c[Q>>2]|0;break}while(0);p=p+1|0}while((p|0)!=(t|0));p=m}m=c[_+24>>2]|0;o=g+108|0;n=c[o>>2]|0;C=g+112|0;if((c[C>>2]|0)>(n|0)){c[o>>2]=n+1;ca=c[g+104>>2]|0;a[ca+(n*20|0)>>0]=70;b[ca+(n*20|0)+2>>1]=0;c[ca+(n*20|0)+4>>2]=m;c[ca+(n*20|0)+8>>2]=u;c[ca+(n*20|0)+12>>2]=0;c[ca+(n*20|0)+16>>2]=0;a[ca+(n*20|0)+1>>0]=0}else Di(g,70,m,u,0)|0;m=u+1|0;n=c[o>>2]|0;if((c[C>>2]|0)>(n|0)){c[o>>2]=n+1;ca=c[g+104>>2]|0;a[ca+(n*20|0)>>0]=70;b[ca+(n*20|0)+2>>1]=0;c[ca+(n*20|0)+4>>2]=t;c[ca+(n*20|0)+8>>2]=m;c[ca+(n*20|0)+12>>2]=0;c[ca+(n*20|0)+16>>2]=0;a[ca+(n*20|0)+1>>0]=0}else Di(g,70,t,m,0)|0;q=c[_+32>>2]|0;r=_+28|0;s=(a[r>>0]|0)==0?-1:-7;m=c[o>>2]|0;if((c[C>>2]|0)>(m|0)){c[o>>2]=m+1;ca=c[g+104>>2]|0;a[ca+(m*20|0)>>0]=9;b[ca+(m*20|0)+2>>1]=0;c[ca+(m*20|0)+4>>2]=ia;c[ca+(m*20|0)+8>>2]=p;c[ca+(m*20|0)+12>>2]=u;c[ca+(m*20|0)+16>>2]=0;a[ca+(m*20|0)+1>>0]=0}else m=Di(g,9,ia,p,u)|0;n=c[g>>2]|0;do if(!(a[n+81>>0]|0)){if((m|0)<0)m=(c[o>>2]|0)+-1|0;n=c[g+104>>2]|0;p=n+(m*20|0)+1|0;if(a[p>>0]|0){Ei(g,n+(m*20|0)|0,q,s);break}if(q|0){c[n+(m*20|0)+16>>2]=q;a[p>>0]=s}}else kg(n,s,q);while(0);a[r>>0]=0;c[j+48>>2]=ia;a[j+45>>0]=(a[h+49>>0]|0)==0?60:-86;c[j+52>>2]=c[o>>2];if(i){E=0;break}B=_+48|0;w=_+30|0;x=da+81|0;y=j+60|0;z=ma+4|0;A=g+104|0;v=u+2|0;m=c[j+56>>2]|0;while(1){u=t;t=t+-1|0;i=c[(c[B>>2]|0)+(t<<2)>>2]|0;if((u|0)<17?(1<>1]|0)!=0:0)lm(j,i);else if(b[i+12>>1]&1){do if(!(a[x>>0]|0)){m=m+-1|0;n=c[(c[y>>2]|0)+(m*20|0)+4>>2]|0;if((n|0)<0)n=(c[o>>2]|0)+-1|0;if(!(a[(c[g>>2]|0)+81>>0]|0))n=(c[A>>2]|0)+(n*20|0)|0;else n=59308;q=a[n>>0]|0;r=c[n+4>>2]|0;s=c[n+8>>2]|0;n=c[n+12>>2]|0;p=c[o>>2]|0;if((c[C>>2]|0)>(p|0)){c[o>>2]=p+1;ca=c[A>>2]|0;a[ca+(p*20|0)>>0]=q;b[ca+(p*20|0)+2>>1]=0;c[ca+(p*20|0)+4>>2]=r;c[ca+(p*20|0)+8>>2]=s;c[ca+(p*20|0)+12>>2]=n;c[ca+(p*20|0)+16>>2]=0;a[ca+(p*20|0)+1>>0]=0;break}else{Di(g,q&255,r,s,n)|0;break}}while(0);p=ej(f,53,0,0)|0;if(p){q=p+12|0;c[q>>2]=c[(c[i>>2]|0)+12>>2];c[ma>>2]=0;c[z>>2]=0;n=oj(da,168,ma,0)|0;c[p+16>>2]=n;if(n|0){c[n+28>>2]=v+t;Tj(f,p,c[D>>2]|0,0)}c[q>>2]=0;ni(da,p)}}if((u|0)<=1){E=0;break c}}}if(!((o&256|0)==0|(o&5|0)==0)){q=c[c[_+48>>2]>>2]|0;p=f+44|0;m=(c[p>>2]|0)+1|0;c[p>>2]=m;p=jm(f,q,j,0,aa,m)|0;if(!((m|0)==0|(p|0)==(m|0))?(r=f+19|0,s=a[r>>0]|0,(s&255)<8):0){a[r>>0]=s+1<<24>>24;c[f+148+((s&255)<<2)>>2]=m}m=c[Q>>2]|0;o=g+108|0;n=c[o>>2]|0;if((c[g+112>>2]|0)>(n|0)){c[o>>2]=n+1;da=c[g+104>>2]|0;a[da+(n*20|0)>>0]=30;b[da+(n*20|0)+2>>1]=0;c[da+(n*20|0)+4>>2]=ia;c[da+(n*20|0)+8>>2]=m;c[da+(n*20|0)+12>>2]=p;c[da+(n*20|0)+16>>2]=0;a[da+(n*20|0)+1>>0]=0}else Di(g,30,ia,m,p)|0;a[j+45>>0]=-86;da=q+40|0;ca=qa;if(!((c[ca>>2]&c[da>>2]|0)==0?(c[ca+4>>2]&c[da+4>>2]|0)==0:0)){E=0;break}E=q+10|0;b[E>>1]=b[E>>1]|4;E=0;break}if((o&258|0)==258){if(!(o&32)){n=0;m=0}else{n=c[c[_+48>>2]>>2]|0;m=1}if(!(o&16))m=0;else m=c[(c[_+48>>2]|0)+(m<<2)>>2]|0;da=(aa|0)==0;i=da?m:n;n=da?n:m;do if(!n){m=aa<<2^36;n=g+108|0;o=c[n>>2]|0;if((c[g+112>>2]|0)>(o|0)){c[n>>2]=o+1;da=c[g+104>>2]|0;a[da+(o*20|0)>>0]=m;b[da+(o*20|0)+2>>1]=0;c[da+(o*20|0)+4>>2]=ia;c[da+(o*20|0)+8>>2]=p;c[da+(o*20|0)+12>>2]=0;c[da+(o*20|0)+16>>2]=0;a[da+(o*20|0)+1>>0]=0;break}else{Di(g,m,ia,p,0)|0;break}}else{q=c[n>>2]|0;o=c[q+16>>2]|0;m=a[o>>0]|0;if(m<<24>>24==-88)m=a[o+38>>0]|0;switch(m<<24>>24){case -87:{m=o+20|0;ga=90;break}case -125:{m=c[o+20>>2]|0;ga=90;break}default:ga=95}if((ga|0)==90)if((c[c[m>>2]>>2]|0)<2)ga=95;else{m=f+19|0;n=a[m>>0]|0;if(!(n<<24>>24)){da=f+44|0;m=(c[da>>2]|0)+1|0;c[da>>2]=m}else{da=n+-1<<24>>24;a[m>>0]=da;m=c[f+148+((da&255)<<2)>>2]|0}c[ma>>2]=m;km(f,o,m,1);p=m;m=((a[q>>0]|0)+1&2|1)&255}if((ga|0)==95){p=Lj(f,o,ma)|0;lm(j,n);m=(d[q>>0]|0)+-54|0}m=a[44005+m>>0]|0;n=g+108|0;o=c[n>>2]|0;if((c[g+112>>2]|0)>(o|0)){c[n>>2]=o+1;da=c[g+104>>2]|0;a[da+(o*20|0)>>0]=m;b[da+(o*20|0)+2>>1]=0;c[da+(o*20|0)+4>>2]=ia;c[da+(o*20|0)+8>>2]=z;c[da+(o*20|0)+12>>2]=p;c[da+(o*20|0)+16>>2]=0;a[da+(o*20|0)+1>>0]=0}else Di(g,m&255,ia,z,p)|0;m=c[ma>>2]|0;if(m|0?(t=f+19|0,u=a[t>>0]|0,(u&255)<8):0){a[t>>0]=u+1<<24>>24;c[f+148+((u&255)<<2)>>2]=m}}while(0);do if(!i){r=0;q=170}else{o=c[i>>2]|0;s=f+44|0;r=(c[s>>2]|0)+1|0;c[s>>2]=r;s=o+16|0;km(f,c[s>>2]|0,r,1);s=c[s>>2]|0;m=a[s>>0]|0;p=m<<24>>24==-88;if(p)n=a[s+38>>0]|0;else n=m;switch(n<<24>>24){case -87:{n=s+20|0;ga=112;break}case -125:{n=c[s+20>>2]|0;ga=112;break}default:ga=113}if((ga|0)==112)if((c[c[n>>2]>>2]|0)<2)ga=113;else ga=115;d:do if((ga|0)==113){switch(a[o>>0]|0){case 54:case 56:break;default:{ga=115;break d}}q=(aa<<1^2)+55|0}while(0);if((ga|0)==115)q=(aa<<1)+54|0;if(p)m=a[s+38>>0]|0;switch(m<<24>>24){case -87:{x=s+20|0;ga=121;break}case -125:{x=c[s+20>>2]|0;ga=121;break}default:{}}if((ga|0)==121?(c[c[x>>2]>>2]|0)>=2:0)break;lm(j,i)}while(0);o=g+108|0;m=c[o>>2]|0;a[j+45>>0]=5-aa;c[j+48>>2]=ia;c[j+52>>2]=m;if((q|0)==170){E=0;break}p=f+44|0;n=(c[p>>2]|0)+1|0;c[p>>2]=n;p=g+112|0;if((c[p>>2]|0)>(m|0)){c[o>>2]=m+1;da=c[g+104>>2]|0;a[da+(m*20|0)>>0]=-128;b[da+(m*20|0)+2>>1]=0;c[da+(m*20|0)+4>>2]=ia;c[da+(m*20|0)+8>>2]=n;c[da+(m*20|0)+12>>2]=0;c[da+(m*20|0)+16>>2]=0;a[da+(m*20|0)+1>>0]=0}else Di(g,128,ia,n,0)|0;m=c[o>>2]|0;if((c[p>>2]|0)>(m|0)){c[o>>2]=m+1;da=c[g+104>>2]|0;a[da+(m*20|0)>>0]=q;b[da+(m*20|0)+2>>1]=0;c[da+(m*20|0)+4>>2]=r;c[da+(m*20|0)+8>>2]=z;c[da+(m*20|0)+12>>2]=n;c[da+(m*20|0)+16>>2]=0;a[da+(m*20|0)+1>>0]=0}else Di(g,q,r,z,n)|0;m=c[o>>2]|0;if((m|0)<=0){E=0;break}b[(c[g+104>>2]|0)+((m+-1|0)*20|0)+2>>1]=83;E=0;break}if(!(o&512)){if(!(o&8192)){if(m&32){a[j+45>>0]=-86;E=0;o=g+108|0;break}a[j+45>>0]=a[44045+aa>>0]|0;c[j+48>>2]=ia;m=a[44047+aa>>0]|0;o=g+108|0;n=c[o>>2]|0;if((c[g+112>>2]|0)>(n|0)){da=n+1|0;c[o>>2]=da;ca=c[g+104>>2]|0;a[ca+(n*20|0)>>0]=m;b[ca+(n*20|0)+2>>1]=0;c[ca+(n*20|0)+4>>2]=ia;c[ca+(n*20|0)+8>>2]=p;c[ca+(n*20|0)+12>>2]=0;c[ca+(n*20|0)+16>>2]=0;a[ca+(n*20|0)+1>>0]=0;m=da}else m=(Di(g,m&255,ia,p,0)|0)+1|0;c[j+52>>2]=m;a[j+47>>0]=1;E=0;break}s=f+40|0;Z=c[s>>2]|0;c[s>>2]=Z+1;W=f+44|0;X=(c[W>>2]|0)+1|0;c[W>>2]=X;$=c[q>>2]|0;Y=$+-1|0;c[q>>2]=Y;V=c[ea+8+(fa*72|0)+16>>2]|0;aa=c[c[_+48>>2]>>2]|0;u=c[aa+28>>2]|0;a[j+45>>0]=66;c[j+48>>2]=X;_=h+46|0;m=a[_>>0]|0;if((m&255)>1){r=(m&255)-i|0;q=(r*72|0)+8|0;e:do if(!da){U=Sv(q|0,0,-1,-1)|0;T=L()|0;if(T>>>0>0|(T|0)==0&U>>>0>2147483390){qa=l;f=k;K(qa|0);Ra=ra;return f|0}if(!(c[7324]|0)){m=Wa[c[29340>>2]&127](q)|0;ga=627;break}p=Wa[c[29356>>2]&127](q)|0;if((c[14985]|0)>>>0>>0)c[14985]=q;o=59064;m=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)>0|(o|0)==0&m>>>0>0){U=c[14978]|0;T=Tv(m|0,o|0,p|0,((p|0)<0)<<31>>31|0)|0;S=L()|0;c[14768]=((S|0)<0|(S|0)==0&T>>>0<=U>>>0)&1}m=Wa[c[29340>>2]&127](p)|0;if(!m){qa=l;f=k;K(qa|0);Ra=ra;return f|0}o=Wa[c[29352>>2]&127](m)|0;o=(c[14978]|0)+o|0;c[14978]=o;if(o>>>0>(c[14982]|0)>>>0)c[14982]=o;o=(c[14981]|0)+1|0;c[14981]=o;if(o>>>0<=(c[14987]|0)>>>0)break;c[14987]=o}else{if(c[da+272>>2]|0){if(a[da+81>>0]|0){qa=l;f=k;K(qa|0);Ra=ra;return f|0}}else{do if(!(0<0|(0==0?(e[da+276>>1]|0)>>>0>>0:0))){o=da+300|0;m=c[o>>2]|0;if(m|0){c[o>>2]=c[m>>2];ga=da+284|0;c[ga>>2]=(c[ga>>2]|0)+1;ga=627;break e}o=da+296|0;m=c[o>>2]|0;if(!m){m=da+292|0;break}else{c[o>>2]=c[m>>2];ga=da+284|0;c[ga>>2]=(c[ga>>2]|0)+1;ga=627;break e}}else m=da+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1}m=_d(da,q,0)|0;ga=627}while(0);if((ga|0)==627)if(!m){qa=l;f=k;K(qa|0);Ra=ra;return f|0}q=r&255;c[m+4>>2]=q;c[m>>2]=q;q=m+8|0;E=q;D=E+72|0;do{c[E>>2]=c[n>>2];E=E+4|0;n=n+4|0}while((E|0)<(D|0));p=c[v>>2]|0;if((r|0)>1){o=1;do{E=q+(o*72|0)|0;n=p+8+((d[j+(o*80|0)+44>>0]|0)*72|0)|0;D=E+72|0;do{c[E>>2]=c[n>>2];E=E+4|0;n=n+4|0}while((E|0)<(D|0));o=o+1|0}while((o|0)!=(r|0));T=m;U=m}else{T=m;U=m}}else{U=c[v>>2]|0;T=U}S=h+44|0;if(!(b[S>>1]&16)){f:do if(!(c[V+36>>2]&32)){m=(c[W>>2]|0)+1|0;c[W>>2]=m;n=g+108|0;o=c[n>>2]|0;if((c[g+112>>2]|0)>(o|0)){c[n>>2]=o+1;R=c[g+104>>2]|0;a[R+(o*20|0)>>0]=73;b[R+(o*20|0)+2>>1]=0;c[R+(o*20|0)+4>>2]=0;c[R+(o*20|0)+8>>2]=m;c[R+(o*20|0)+12>>2]=0;c[R+(o*20|0)+16>>2]=0;a[R+(o*20|0)+1>>0]=0;break}else{Di(g,73,0,m,0)|0;break}}else{m=c[V+8>>2]|0;g:do if(!m)m=0;else while(1){R=m+55|0;if(((d[R>>0]|d[R+1>>0]<<8)&3)==2)break g;m=c[m+20>>2]|0;if(!m){m=0;break}}while(0);q=c[s>>2]|0;c[s>>2]=q+1;n=e[m+50>>1]|0;o=g+108|0;p=c[o>>2]|0;if((c[g+112>>2]|0)>(p|0)){c[o>>2]=p+1;R=c[g+104>>2]|0;a[R+(p*20|0)>>0]=113;b[R+(p*20|0)+2>>1]=0;c[R+(p*20|0)+4>>2]=q;c[R+(p*20|0)+8>>2]=n;c[R+(p*20|0)+12>>2]=0;c[R+(p*20|0)+16>>2]=0;a[R+(p*20|0)+1>>0]=0}else Di(g,113,q,n,0)|0;n=c[f+8>>2]|0;o=Ij(f,m)|0;if(o){m=c[n>>2]|0;if(!(a[m+81>>0]|0)){R=c[n+104>>2]|0;m=(c[n+108>>2]|0)+-1|0;a[R+(m*20|0)+1>>0]=-9;c[R+(m*20|0)+16>>2]=o;m=q;break}if(c[m+480>>2]|0){m=q;break}R=(c[o>>2]|0)+-1|0;c[o>>2]=R;if(R|0){m=q;break}m=c[o+12>>2]|0;do if(m|0){if(c[m+480>>2]|0){Xd(m,o);m=q;break f}n=o;if((c[m+304>>2]|0)>>>0>n>>>0)break;if((c[m+308>>2]|0)>>>0<=n>>>0)break;m=m+300|0;c[o>>2]=c[m>>2];c[m>>2]=o;m=q;break f}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);m=q;break}else{m=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);m=q;break}}else m=q}while(0);P=(c[W>>2]|0)+1|0;c[W>>2]=P}else{P=0;m=0}o=g+108|0;n=c[o>>2]|0;R=g+112|0;if((c[R>>2]|0)>(n|0)){c[o>>2]=n+1;Q=c[g+104>>2]|0;a[Q+(n*20|0)>>0]=70;b[Q+(n*20|0)+2>>1]=0;c[Q+(n*20|0)+4>>2]=0;c[Q+(n*20|0)+8>>2]=X;c[Q+(n*20|0)+12>>2]=0;c[Q+(n*20|0)+16>>2]=0;a[Q+(n*20|0)+1>>0]=0;Q=n}else Q=Di(g,70,0,X,0)|0;i=h+92|0;n=c[i>>2]|0;if((n|0)>1){t=h+100|0;s=0;p=0;do{q=c[t>>2]|0;O=q+(s*48|0)|0;r=c[O>>2]|0;do if((O|0)!=(aa|0)?(b[q+(s*48|0)+10>>1]&6)==0:0){if(!(b[q+(s*48|0)+12>>1]&8191))break;if(!r)n=0;else n=dk(da,r,0,0)|0;p=Xk(da,p,n)|0;n=c[i>>2]|0}while(0);s=s+1|0}while((s|0)<(n|0));if(p)O=ej(f,65580,0,p)|0;else O=0}else O=0;N=b[S>>1]&1024|32;nk(f,1,44021,A);M=u+12|0;if((c[M>>2]|0)>0){A=u+20|0;B=(O|0)==0;C=O+12|0;D=V+36|0;E=V+8|0;F=g+104|0;G=f+19|0;H=f+32|0;I=f+28|0;p=f+212|0;J=f+8|0;n=0;r=0;q=0;do{s=c[A>>2]|0;do if((c[s+(n*48|0)+20>>2]|0)==(ia|0))ga=679;else{if(b[s+(n*48|0)+12>>1]&1024){ga=679;break}n=n+1|0}while(0);do if((ga|0)==679){ga=0;s=c[s+(n*48|0)>>2]|0;if(!B){c[C>>2]=s;s=O}z=n+1|0;c[ba>>2]=z;nk(f,1,44036,ba);y=ql(f,T,s,0,0,N,Z)|0;if(!y){n=z;break}Kl(f,T,y+752|0,0);do if(!(b[S>>1]&16)){v=(n|0)==((c[M>>2]|0)+-1|0)?-1:n;if(!(c[D>>2]&32)){Vj(g,V,ia,-1,P);s=c[o>>2]|0;if((c[R>>2]|0)>(s|0)){c[o>>2]=s+1;x=c[F>>2]|0;a[x+(s*20|0)>>0]=42;b[x+(s*20|0)+2>>1]=0;c[x+(s*20|0)+4>>2]=m;c[x+(s*20|0)+8>>2]=0;c[x+(s*20|0)+12>>2]=P;c[x+(s*20|0)+16>>2]=0;a[x+(s*20|0)+1>>0]=0}else s=Di(g,42,m,0,P)|0;if(a[(c[g>>2]|0)+81>>0]|0)break;x=c[F>>2]|0;a[x+(s*20|0)+1>>0]=-3;c[x+(s*20|0)+16>>2]=v;break}s=c[E>>2]|0;h:do if(!s)s=0;else while(1){x=s+55|0;if(((d[x>>0]|d[x+1>>0]<<8)&3)==2)break h;s=c[s+20>>2]|0;if(!s){s=0;break}}while(0);u=b[s+50>>1]|0;w=u&65535;x=u<<16>>16==1;do if(x){i=a[G>>0]|0;if(!(i<<24>>24)){i=(c[W>>2]|0)+1|0;c[W>>2]=i;ga=701;break}else{i=i+-1<<24>>24;a[G>>0]=i;i=c[f+148+((i&255)<<2)>>2]|0;ga=701;break}}else{i=c[H>>2]|0;t=c[I>>2]|0;if((t|0)<(w|0)){i=c[W>>2]|0;c[W>>2]=i+w;i=i+1|0}else{c[H>>2]=i+w;c[I>>2]=t-w}if(!(u<<16>>16))u=i;else ga=701}while(0);if((ga|0)==701){ga=0;t=s+4|0;s=0;do{Vj(g,V,ia,b[(c[t>>2]|0)+(s<<1)>>1]|0,s+i|0);s=s+1|0}while((s|0)!=(w|0));u=i}t=(v|0)!=0;if(t){s=c[o>>2]|0;if((c[R>>2]|0)>(s|0)){c[o>>2]=s+1;i=c[F>>2]|0;a[i+(s*20|0)>>0]=29;b[i+(s*20|0)+2>>1]=0;c[i+(s*20|0)+4>>2]=m;c[i+(s*20|0)+8>>2]=0;c[i+(s*20|0)+12>>2]=u;c[i+(s*20|0)+16>>2]=0;a[i+(s*20|0)+1>>0]=0}else s=Di(g,29,m,0,u)|0;if(!(a[(c[g>>2]|0)+81>>0]|0)){i=c[F>>2]|0;a[i+(s*20|0)+1>>0]=-3;c[i+(s*20|0)+16>>2]=w}if((v|0)>-1)ga=710}else{s=0;ga=710}do if((ga|0)==710){ga=0;i=c[o>>2]|0;if((c[R>>2]|0)>(i|0)){c[o>>2]=i+1;v=c[F>>2]|0;a[v+(i*20|0)>>0]=92;b[v+(i*20|0)+2>>1]=0;c[v+(i*20|0)+4>>2]=u;c[v+(i*20|0)+8>>2]=w;c[v+(i*20|0)+12>>2]=P;c[v+(i*20|0)+16>>2]=0;a[v+(i*20|0)+1>>0]=0}else Di(g,92,u,w,P)|0;i=c[o>>2]|0;if((c[R>>2]|0)>(i|0)){c[o>>2]=i+1;v=c[F>>2]|0;a[v+(i*20|0)>>0]=-124;b[v+(i*20|0)+2>>1]=0;c[v+(i*20|0)+4>>2]=m;c[v+(i*20|0)+8>>2]=P;c[v+(i*20|0)+12>>2]=u;c[v+(i*20|0)+16>>2]=0;a[v+(i*20|0)+1>>0]=0}else i=Di(g,132,m,P,u)|0;if(!(a[(c[g>>2]|0)+81>>0]|0)){v=c[F>>2]|0;a[v+(i*20|0)+1>>0]=-3;c[v+(i*20|0)+16>>2]=w}if(!t)break;i=c[o>>2]|0;if((i|0)<=0)break;b[(c[F>>2]|0)+((i+-1|0)*20|0)+2>>1]=16}while(0);if(!x){if((c[I>>2]|0)>=(w|0))break;c[I>>2]=w;c[H>>2]=u;break}if(!u)break;i=a[G>>0]|0;if((i&255)>=8)break;a[G>>0]=i+1<<24>>24;c[f+148+((i&255)<<2)>>2]=u}else s=0;while(0);i=c[o>>2]|0;if((c[R>>2]|0)>(i|0)){c[o>>2]=i+1;x=c[F>>2]|0;a[x+(i*20|0)>>0]=12;b[x+(i*20|0)+2>>1]=0;c[x+(i*20|0)+4>>2]=X;c[x+(i*20|0)+8>>2]=Y;c[x+(i*20|0)+12>>2]=0;c[x+(i*20|0)+16>>2]=0;a[x+(i*20|0)+1>>0]=0}else Di(g,12,X,Y,0)|0;if(s|0){i=c[o>>2]|0;if(!(a[(c[g>>2]|0)+81>>0]|0))s=(c[F>>2]|0)+(((s|0)<0?i+-1|0:s)*20|0)|0;else s=59308;c[s+8>>2]=i}r=(a[y+50>>0]|0)==0?r:1;s=c[y+816>>2]|0;do if(!(c[s+36>>2]&512))q=0;else{if(n|0?(c[s+32>>2]|0)!=(q|0):0){q=0;break}q=c[s+32>>2]|0;if(c[D>>2]&32|0?(x=q+55|0,((d[x>>0]|d[x+1>>0]<<8)&3)==2):0){q=0;break}}while(0);sl(y);n=c[p>>2]|0;if(!n)n=0;else{s=c[J>>2]|0;if((n|0)<0)n=(c[s+108>>2]|0)+-1|0;if(!(a[(c[s>>2]|0)+81>>0]|0))n=(c[s+104>>2]|0)+(n*20|0)|0;else n=59308;n=c[n+8>>2]|0}c[p>>2]=n;n=z}while(0)}while((n|0)<(c[M>>2]|0))}else{r=0;q=0;p=f+212|0}m=c[p>>2]|0;if(!m)m=0;else{n=c[f+8>>2]|0;if((m|0)<0)m=(c[n+108>>2]|0)+-1|0;if(!(a[(c[n>>2]|0)+81>>0]|0))m=(c[n+104>>2]|0)+(m*20|0)|0;else m=59308;m=c[m+8>>2]|0}c[p>>2]=m;c[j+56>>2]=q;if(q|0)c[j+8>>2]=Z;if(O|0){c[O+12>>2]=0;ni(da,O)}n=c[o>>2]|0;if(!(a[(c[g>>2]|0)+81>>0]|0))m=(c[g+104>>2]|0)+(((Q|0)<0?n+-1|0:Q)*20|0)|0;else m=59308;c[m+4>>2]=n;m=c[ca>>2]|0;if((c[R>>2]|0)>(n|0)){c[o>>2]=n+1;ca=c[g+104>>2]|0;a[ca+(n*20|0)>>0]=11;b[ca+(n*20|0)+2>>1]=0;c[ca+(n*20|0)+4>>2]=0;c[ca+(n*20|0)+8>>2]=m;c[ca+(n*20|0)+12>>2]=0;c[ca+(n*20|0)+16>>2]=0;a[ca+(n*20|0)+1>>0]=0}else Di(g,11,0,m,0)|0;n=c[g+12>>2]|0;m=0-$|0;if(((c[n+56>>2]|0)+(c[n+60>>2]|0)|0)<0)mk(n,g,m);else c[(c[n+64>>2]|0)+(m<<2)>>2]=c[o>>2];i:do if(!((U|0)==0|(d[_>>0]|0)<2)){do if(da|0){if(c[da+480>>2]|0){Xd(da,U);break i}m=U;if((c[da+304>>2]|0)>>>0>m>>>0)break;if((c[da+308>>2]|0)>>>0<=m>>>0)break;da=da+300|0;c[U>>2]=c[da>>2];c[da>>2]=U;break i}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](U);break}else{da=Wa[c[29352>>2]&127](U)|0;c[14978]=(c[14978]|0)-da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](U);break}}while(0);if(r|0){E=0;break}lm(j,aa);E=0;break}M=b[_+24>>1]|0;t=b[_+26>>1]|0;u=b[_+28>>1]|0;Y=c[_+32>>2]|0;x=j+8|0;Z=c[x>>2]|0;X=h+44|0;if((b[X>>1]&1)!=0?(a[h+47>>0]|0)>0:0){i=(e[Y+50>>1]|0)>(M&65535);m=i&1;i=i&1}else{m=0;i=0}p=M&65535;n=t&65535;if(!(o&32)){v=0;n=p}else{v=c[(c[_+48>>2]|0)+(p<<2)>>2]|0;m=m>>>0>n>>>0?m:n;n=p+1|0}do if(o&16){s=c[(c[_+48>>2]|0)+(n<<2)>>2]|0;ba=u&65535;m=(m|0)>(ba|0)?m:ba;if(b[s+10>>1]&256){o=f+44|0;n=(c[o>>2]|0)+1|0;c[o>>2]=n;o=j+36|0;c[o>>2]=n;q=g+108|0;r=c[q>>2]|0;if((c[g+112>>2]|0)>(r|0)){c[q>>2]=r+1;ba=c[g+104>>2]|0;a[ba+(r*20|0)>>0]=70;b[ba+(r*20|0)+2>>1]=0;c[ba+(r*20|0)+4>>2]=1;c[ba+(r*20|0)+8>>2]=n;c[ba+(r*20|0)+12>>2]=0;c[ba+(r*20|0)+16>>2]=0;a[ba+(r*20|0)+1>>0]=0}else Di(g,70,1,n,0)|0;c[j+40>>2]=c[q>>2];ba=c[o>>2]<<1;c[o>>2]=ba;c[o>>2]=aa^(a[(c[Y+28>>2]|0)+p>>0]|0)==1|ba}if(!v){n=b[(c[Y+4>>2]|0)+(p<<1)>>1]|0;if(n<<16>>16>-1){if(a[(c[(c[Y+12>>2]|0)+4>>2]|0)+(n<<16>>16<<4)+12>>0]|0){o=i;break}}else if(n<<16>>16!=-2){o=i;break}o=1}else o=i}else{s=0;o=i}while(0);n=b[Y+50>>1]|0;if((M&65535)<(n&65535)?!(((w&1|0)!=0|0!=0)^(a[(c[Y+28>>2]|0)+p>>0]|0)==0):0)ga=152;else if(aa|0?n<<16>>16==M<<16>>16:0)ga=152;else{N=t;R=0;P=v;v=s;J=o}if((ga|0)==152){N=u;u=t&255;R=o;P=s;J=0}T=f+8|0;I=c[T>>2]|0;w=c[y>>2]|0;y=b[w+24>>1]|0;G=b[w+42>>1]|0;q=c[w+32>>2]|0;V=f+44|0;o=c[V>>2]|0;F=o+1|0;H=y&65535;z=m+H|0;c[V>>2]=o+z;o=c[f>>2]|0;q=gl(o,q)|0;j:do if(!q)U=0;else{r=(Eu(q)|0)+1|0;k:do if(!o){ba=Sv(r|0,0,-1,-1)|0;U=L()|0;if(U>>>0>0|(U|0)==0&ba>>>0>2147483390){U=0;break j}if(!(c[7324]|0)){m=Wa[c[29340>>2]&127](r)|0;ga=178;break}m=Wa[c[29356>>2]&127](r)|0;if((c[14985]|0)>>>0>>0)c[14985]=r;o=59064;n=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)>0|(o|0)==0&n>>>0>0){ba=c[14978]|0;U=Tv(n|0,o|0,m|0,((m|0)<0)<<31>>31|0)|0;E=L()|0;c[14768]=((E|0)<0|(E|0)==0&U>>>0<=ba>>>0)&1}m=Wa[c[29340>>2]&127](m)|0;if(!m){U=0;break j}n=Wa[c[29352>>2]&127](m)|0;n=(c[14978]|0)+n|0;c[14978]=n;if(n>>>0>(c[14982]|0)>>>0)c[14982]=n;n=(c[14981]|0)+1|0;c[14981]=n;if(n>>>0<=(c[14987]|0)>>>0)break;c[14987]=n}else{if(c[o+272>>2]|0){if(a[o+81>>0]|0){U=0;break j}}else{do if(!(0<0|(0==0?(e[o+276>>1]|0)>>>0>>0:0))){n=o+300|0;m=c[n>>2]|0;if(m|0){c[n>>2]=c[m>>2];ga=o+284|0;c[ga>>2]=(c[ga>>2]|0)+1;ga=178;break k}n=o+296|0;m=c[n>>2]|0;if(!m){m=o+292|0;break}else{c[n>>2]=c[m>>2];ga=o+284|0;c[ga>>2]=(c[ga>>2]|0)+1;ga=178;break k}}else m=o+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1}m=_d(o,r,0)|0;ga=178}while(0);if((ga|0)==178)if(!m){U=0;break}ew(m|0,q|0,r|0)|0;U=m}while(0);l:do if(G<<16>>16){s=c[x>>2]|0;q=(aa|0)==0;m=aa<<2^36;i=I+108|0;n=c[i>>2]|0;t=I+112|0;if((c[t>>2]|0)>(n|0)){c[i>>2]=n+1;ba=c[I+104>>2]|0;a[ba+(n*20|0)>>0]=m;b[ba+(n*20|0)+2>>1]=0;c[ba+(n*20|0)+4>>2]=s;c[ba+(n*20|0)+8>>2]=0;c[ba+(n*20|0)+12>>2]=0;c[ba+(n*20|0)+16>>2]=0;a[ba+(n*20|0)+1>>0]=0}else Di(I,m,s,0,0)|0;m=c[i>>2]|0;if((c[t>>2]|0)>(m|0)){c[i>>2]=m+1;E=c[I+104>>2]|0;a[E+(m*20|0)>>0]=11;E=E+(m*20|0)+1|0;D=E+19|0;do{a[E>>0]=0;E=E+1|0}while((E|0)<(D|0));o=m}else o=Di(I,11,0,0,0)|0;n=q?25:22;r=G&65535;m=c[i>>2]|0;if((c[t>>2]|0)>(m|0)){c[i>>2]=m+1;ba=c[I+104>>2]|0;a[ba+(m*20|0)>>0]=n;b[ba+(m*20|0)+2>>1]=0;c[ba+(m*20|0)+4>>2]=s;c[ba+(m*20|0)+8>>2]=0;c[ba+(m*20|0)+12>>2]=F;c[ba+(m*20|0)+16>>2]=0;a[ba+(m*20|0)+1>>0]=0}else m=Di(I,n,s,0,F)|0;do if(!(a[(c[I>>2]|0)+81>>0]|0)){ba=c[I+104>>2]|0;a[ba+(m*20|0)+1>>0]=-3;c[ba+(m*20|0)+16>>2]=r;ba=a[(c[I>>2]|0)+81>>0]|0;c[j+20>>2]=m;n=c[i>>2]|0;if(ba<<24>>24){m=59308;break}m=(c[I+104>>2]|0)+(((o|0)<0?n+-1|0:o)*20|0)|0}else{c[j+20>>2]=m;m=59308;n=c[i>>2]|0}while(0);c[m+8>>2]=n;q=I+104|0;m=0;while(1){o=m+F|0;if((c[t>>2]|0)>(n|0)){c[i>>2]=n+1;ba=c[q>>2]|0;a[ba+(n*20|0)>>0]=90;b[ba+(n*20|0)+2>>1]=0;c[ba+(n*20|0)+4>>2]=s;c[ba+(n*20|0)+8>>2]=m;c[ba+(n*20|0)+12>>2]=o;c[ba+(n*20|0)+16>>2]=0;a[ba+(n*20|0)+1>>0]=0}else Di(I,90,s,m,o)|0;m=m+1|0;if((m|0)==(r|0))break l;n=c[i>>2]|0}}while(0);if((G&65535)<(y&65535)){C=w+48|0;t=(z|0)==1;w=(U|0)!=0;x=I+108|0;y=I+112|0;z=f+19|0;A=I+104|0;B=(U|0)==0;q=F;i=G&65535;while(1){r=c[(c[C>>2]|0)+(i<<2)>>2]|0;m=i+q|0;o=jm(f,r,j,i,aa,m)|0;do if((o|0)!=(m|0))if(!t){n=c[x>>2]|0;if((c[y>>2]|0)>(n|0)){c[x>>2]=n+1;ba=c[A>>2]|0;a[ba+(n*20|0)>>0]=79;b[ba+(n*20|0)+2>>1]=0;c[ba+(n*20|0)+4>>2]=o;c[ba+(n*20|0)+8>>2]=m;c[ba+(n*20|0)+12>>2]=0;c[ba+(n*20|0)+16>>2]=0;a[ba+(n*20|0)+1>>0]=0;break}else{Di(I,79,o,m,0)|0;break}}else{if(!q){q=o;break}m=a[z>>0]|0;if((m&255)>=8){q=o;break}a[z>>0]=m+1<<24>>24;c[f+148+((m&255)<<2)>>2]=q;q=o;break}while(0);m=e[r+12>>1]|0;m:do if(!(m&1)){if(m&256|0)break;s=c[(c[r>>2]|0)+16>>2]|0;n:do if(!(b[r+10>>1]&2048)){n=a[s>>0]|0;if((n+91&255)<2){m=s;do{m=c[m+12>>2]|0;n=a[m>>0]|0}while((n+91&255)<2)}else m=s;if(n<<24>>24==-88)n=a[m+38>>0]|0;o:do switch(n<<24>>24){case -110:case -111:case 110:case -109:break n;case -94:{if(c[m+4>>2]&1048576|0)break o;n=c[m+44>>2]|0;if(!n)break o;m=b[m+32>>1]|0;if(m<<16>>16<=-1)break n;if(a[(c[n+4>>2]|0)+(m<<16>>16<<4)+12>>0]|0)break n;break}default:{}}while(0);m=q+i|0;n=c[ca>>2]|0;o=c[x>>2]|0;if((c[y>>2]|0)>(o|0)){c[x>>2]=o+1;ba=c[A>>2]|0;a[ba+(o*20|0)>>0]=50;b[ba+(o*20|0)+2>>1]=0;c[ba+(o*20|0)+4>>2]=m;c[ba+(o*20|0)+8>>2]=n;c[ba+(o*20|0)+12>>2]=0;c[ba+(o*20|0)+16>>2]=0;a[ba+(o*20|0)+1>>0]=0;break}else{Di(I,50,m,n,0)|0;break}}while(0);if(B)break;o=U+i|0;r=a[o>>0]|0;m=Xj(s)|0;if(r<<24>>24==0|m<<24>>24==0)if((m|r)<<24>>24==0?1:((m&255)+(r&255)&255)<<24>>24==65)ga=232;else ga=233;else if(r<<24>>24>66|m<<24>>24>66)ga=233;else ga=232;p:do if((ga|0)==232){ga=0;a[o>>0]=65}else if((ga|0)==233){ga=0;if(r<<24>>24==65)break;n=a[s>>0]|0;if((n+91&255)<2){m=s;do{m=c[m+12>>2]|0;n=a[m>>0]|0}while((n+91&255)<2)}else m=s;if(n<<24>>24==-88)n=a[m+38>>0]|0;switch(n<<24>>24){case -110:break p;case -109:if((r+-67&255)<2)break p;else break m;case -111:switch(r<<24>>24){case 67:case 69:break p;default:break m}case 110:if(r<<24>>24==66)break p;else break m;case -94:if((r+-67&255)<2&(b[m+32>>1]|0)<0)break p;else break m;default:break m}}while(0);a[o>>0]=65}else{if(!(w&(c[(c[r>>2]|0)+4>>2]&2048|0)!=0))break;a[U+i>>0]=65}while(0);i=i+1|0;if((i|0)==(H|0)){F=q;break}}}G=(U|0)==0;q:do if(!(u<<16>>16==0|G)?(O=U+p|0,(O|0)!=0):0){q=(Eu(O)|0)+1|0;r:do if(!da){ca=Sv(q|0,0,-1,-1)|0;ba=L()|0;if(ba>>>0>0|(ba|0)==0&ca>>>0>2147483390){D=0;break q}if(!(c[7324]|0)){m=Wa[c[29340>>2]&127](q)|0;ga=272;break}o=Wa[c[29356>>2]&127](q)|0;if((c[14985]|0)>>>0>>0)c[14985]=q;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){ca=c[14978]|0;ba=Tv(m|0,n|0,o|0,((o|0)<0)<<31>>31|0)|0;I=L()|0;c[14768]=((I|0)<0|(I|0)==0&ba>>>0<=ca>>>0)&1}m=Wa[c[29340>>2]&127](o)|0;if(!m){D=0;break q}n=Wa[c[29352>>2]&127](m)|0;n=(c[14978]|0)+n|0;c[14978]=n;if(n>>>0>(c[14982]|0)>>>0)c[14982]=n;n=(c[14981]|0)+1|0;c[14981]=n;if(n>>>0<=(c[14987]|0)>>>0)break;c[14987]=n}else{if(c[da+272>>2]|0){if(a[da+81>>0]|0){D=0;break q}}else{do if(!(0<0|(0==0?(e[da+276>>1]|0)>>>0>>0:0))){n=da+300|0;m=c[n>>2]|0;if(m|0){c[n>>2]=c[m>>2];ga=da+284|0;c[ga>>2]=(c[ga>>2]|0)+1;ga=272;break r}n=da+296|0;m=c[n>>2]|0;if(!m){m=da+292|0;break}else{c[n>>2]=c[m>>2];ga=da+284|0;c[ga>>2]=(c[ga>>2]|0)+1;ga=272;break r}}else m=da+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1}m=_d(da,q,0)|0;ga=272}while(0);if((ga|0)==272)if(!m){D=0;break}ew(m|0,O|0,q|0)|0;D=m}else D=0;while(0);E=c[Q>>2]|0;o=(P|0)!=0;if(o)m=(b[P+12>>1]&40)!=0;else m=1;B=m&1;C=(v|0)!=0;if(C)m=(b[v+12>>1]&40)!=0;else m=1;n=m&1;A=(M<<16>>16!=0|o)&1;do if(o){z=c[(c[P>>2]|0)+16>>2]|0;q=F+p|0;y=N&65535;km(f,z,q,y);if(b[P+10>>1]&256){if(!(a[(c[g>>2]|0)+81>>0]|0))m=(c[g+104>>2]|0)+(((c[g+108>>2]|0)+-1|0)*20|0)|0;else m=59308;ca=c[j+36>>2]|0;c[m+12>>2]=ca>>>1;b[m+2>>1]=ca&1}o=a[z>>0]|0;if((o+91&255)<2){m=z;do{m=c[m+12>>2]|0;o=a[m>>0]|0}while((o+91&255)<2)}else m=z;if(o<<24>>24==-88)o=a[m+38>>0]|0;s:do switch(o<<24>>24){case -110:case -111:case 110:case -109:break;case -94:{if(c[m+4>>2]&1048576|0){ga=293;break s}o=c[m+44>>2]|0;if(!o){ga=293;break s}m=b[m+32>>1]|0;if(m<<16>>16<=-1)break s;if(!(a[(c[o+4>>2]|0)+(m<<16>>16<<4)+12>>0]|0))ga=293;break}default:ga=293}while(0);do if((ga|0)==293){m=g+108|0;o=c[m>>2]|0;if((c[g+112>>2]|0)>(o|0)){c[m>>2]=o+1;ca=c[g+104>>2]|0;a[ca+(o*20|0)>>0]=50;b[ca+(o*20|0)+2>>1]=0;c[ca+(o*20|0)+4>>2]=q;c[ca+(o*20|0)+8>>2]=E;c[ca+(o*20|0)+12>>2]=0;c[ca+(o*20|0)+16>>2]=0;a[ca+(o*20|0)+1>>0]=0;break}else{Di(g,50,q,E,0)|0;break}}while(0);t:do if(!G){x=U+p|0;if(!(N<<16>>16))break;i=z+38|0;t=z+20|0;w=z+20|0;s=0;while(1){o=a[z>>0]|0;if(o<<24>>24==-88)m=a[i>>0]|0;else m=o;switch(m<<24>>24){case -87:{m=t;ga=303;break}case -125:{m=c[w>>2]|0;ga=303;break}default:m=z}u:do if((ga|0)==303){if((c[c[m>>2]>>2]|0)<2){m=z;break}do if(o<<24>>24!=-125){if((a[i>>0]|0)==-125)break;m=c[(c[t>>2]|0)+4+(s*20|0)>>2]|0;break u}while(0);m=c[(c[c[w>>2]>>2]|0)+4+(s*20|0)>>2]|0}while(0);q=x+s|0;r=a[q>>0]|0;o=Xj(m)|0;if(r<<24>>24==0|o<<24>>24==0)if(r<<24>>24==65|((o|r)<<24>>24==0?1:((o&255)+(r&255)&255)<<24>>24==65))ga=321;else ga=311;else if(r<<24>>24==65|r<<24>>24<67&o<<24>>24<67)ga=321;else ga=311;v:do if((ga|0)==311){ga=0;o=a[m>>0]|0;if((o+91&255)<2)do{m=c[m+12>>2]|0;o=a[m>>0]|0}while((o+91&255)<2);if(o<<24>>24==-88)o=a[m+38>>0]|0;switch(o<<24>>24){case -110:{ga=321;break v}case -109:if((r+-67&255)<2){ga=321;break v}else break v;case -111:switch(r<<24>>24){case 67:case 69:{ga=321;break v}default:break v}case 110:if(r<<24>>24==66){ga=321;break v}else break v;case -94:if((r+-67&255)<2&(b[m+32>>1]|0)<0){ga=321;break v}else break v;default:break v}}while(0);if((ga|0)==321){ga=0;a[q>>0]=65}s=s+1|0;if((s|0)==(y|0))break t}}while(0);o=y+p|0;m=a[z>>0]|0;if(m<<24>>24==-88)m=a[z+38>>0]|0;switch(m<<24>>24){case -87:{S=z+20|0;ga=328;break}case -125:{S=c[z+20>>2]|0;ga=328;break}default:{}}if((ga|0)==328?(c[c[S>>2]>>2]|0)>=2:0){x=A;y=o;w=1;m=0;break}lm(j,P);x=A;y=o;w=B;m=0}else{if(!(J<<24>>24)){x=A;y=p;w=B;m=0;break}m=F+p|0;o=g+108|0;q=c[o>>2]|0;if((c[g+112>>2]|0)>(q|0)){c[o>>2]=q+1;ca=c[g+104>>2]|0;a[ca+(q*20|0)>>0]=73;b[ca+(q*20|0)+2>>1]=0;c[ca+(q*20|0)+4>>2]=0;c[ca+(q*20|0)+8>>2]=m;c[ca+(q*20|0)+12>>2]=0;c[ca+(q*20|0)+16>>2]=0;a[ca+(q*20|0)+1>>0]=0}else Di(g,73,0,m,0)|0;x=1;y=p+1|0;w=0;m=J}while(0);m=y-(m&255)|0;t=c[T>>2]|0;w:do if((U|0)!=0&(m|0)>0){q=U;o=F;while(1){if((a[q>>0]|0)!=65){i=q;break}r=m+-1|0;o=o+1|0;q=q+1|0;if((m|0)>1)m=r;else{i=q;m=r;break}}x:do if((m|0)>1){q=m;while(1){m=q+-1|0;if((a[i+m>>0]|0)!=65)break x;if((q|0)>2)q=m;else{ga=343;break}}}else ga=343;while(0);if((ga|0)==343)if((m|0)==1)q=1;else break;r=t+108|0;m=c[r>>2]|0;if((c[t+112>>2]|0)>(m|0)){c[r>>2]=m+1;ca=c[t+104>>2]|0;a[ca+(m*20|0)>>0]=91;b[ca+(m*20|0)+2>>1]=0;c[ca+(m*20|0)+4>>2]=o;c[ca+(m*20|0)+8>>2]=q;c[ca+(m*20|0)+12>>2]=0;c[ca+(m*20|0)+16>>2]=0;a[ca+(m*20|0)+1>>0]=0}else m=Di(t,91,o,q,0)|0;o=c[t>>2]|0;if(a[o+81>>0]|0){if((q|0)==-12)break;kg(o,q,i);break}if((m|0)<0)m=(c[r>>2]|0)+-1|0;o=c[t+104>>2]|0;r=o+(m*20|0)|0;do if((q|0)<=-1){s=o+(m*20|0)+1|0;if(a[s>>0]|0)break;if((q|0)==-3){c[o+(m*20|0)+16>>2]=i;a[s>>0]=-3;break w}c[o+(m*20|0)+16>>2]=i;a[s>>0]=q;if((q|0)!=-12)break w;ca=i+12|0;c[ca>>2]=(c[ca>>2]|0)+1;break w}while(0);Ei(t,r,i,q)}while(0);ca=b[_+42>>1]|0;do if(!(ca<<16>>16!=0&(y|0)==(ca&65535|0))){r=g+108|0;do if(c[$>>2]&262144){m=c[r>>2]|0;o=g+112|0;if((c[o>>2]|0)>(m|0)){c[r>>2]=m+1;q=c[g+104>>2]|0;a[q+(m*20|0)>>0]=119;b[q+(m*20|0)+2>>1]=0;c[q+(m*20|0)+4>>2]=Z;c[q+(m*20|0)+8>>2]=0;c[q+(m*20|0)+12>>2]=0;c[q+(m*20|0)+16>>2]=0;a[q+(m*20|0)+1>>0]=0;q=o;break}else{Di(g,119,Z,0,0)|0;q=o;break}}else q=g+112|0;while(0);o=a[44009+(x<<2|aa|w<<1)>>0]|0;m=c[r>>2]|0;if((c[q>>2]|0)>(m|0)){c[r>>2]=m+1;ca=c[g+104>>2]|0;a[ca+(m*20|0)>>0]=o;b[ca+(m*20|0)+2>>1]=0;c[ca+(m*20|0)+4>>2]=Z;c[ca+(m*20|0)+8>>2]=E;c[ca+(m*20|0)+12>>2]=F;c[ca+(m*20|0)+16>>2]=0;a[ca+(m*20|0)+1>>0]=0}else m=Di(g,o&255,Z,E,F)|0;if(a[(c[g>>2]|0)+81>>0]|0)break;ca=c[g+104>>2]|0;a[ca+(m*20|0)+1>>0]=-3;c[ca+(m*20|0)+16>>2]=y}while(0);do if(C){y=c[(c[v>>2]|0)+16>>2]|0;w=F+p|0;x=u&65535;km(f,y,w,x);if(b[v+10>>1]&256){if(!(a[(c[g>>2]|0)+81>>0]|0))m=(c[g+104>>2]|0)+(((c[g+108>>2]|0)+-1|0)*20|0)|0;else m=59308;ca=c[j+36>>2]|0;c[m+12>>2]=ca>>>1;b[m+2>>1]=ca&1}o=a[y>>0]|0;if((o+91&255)<2){m=y;do{m=c[m+12>>2]|0;o=a[m>>0]|0}while((o+91&255)<2)}else m=y;if(o<<24>>24==-88)o=a[m+38>>0]|0;y:do switch(o<<24>>24){case -110:case -111:case 110:case -109:break;case -94:{if(c[m+4>>2]&1048576|0){ga=385;break y}o=c[m+44>>2]|0;if(!o){ga=385;break y}m=b[m+32>>1]|0;if(m<<16>>16<=-1)break y;if(!(a[(c[o+4>>2]|0)+(m<<16>>16<<4)+12>>0]|0))ga=385;break}default:ga=385}while(0);do if((ga|0)==385){m=g+108|0;o=c[m>>2]|0;if((c[g+112>>2]|0)>(o|0)){c[m>>2]=o+1;ca=c[g+104>>2]|0;a[ca+(o*20|0)>>0]=50;b[ca+(o*20|0)+2>>1]=0;c[ca+(o*20|0)+4>>2]=w;c[ca+(o*20|0)+8>>2]=E;c[ca+(o*20|0)+12>>2]=0;c[ca+(o*20|0)+16>>2]=0;a[ca+(o*20|0)+1>>0]=0;break}else{Di(g,50,w,E,0)|0;break}}while(0);z:do if(!((D|0)==0|u<<16>>16==0)){i=y+38|0;t=y+20|0;u=y+20|0;s=0;do{o=a[y>>0]|0;if(o<<24>>24==-88)m=a[i>>0]|0;else m=o;switch(m<<24>>24){case -87:{m=t;ga=394;break}case -125:{m=c[u>>2]|0;ga=394;break}default:m=y}A:do if((ga|0)==394){if((c[c[m>>2]>>2]|0)<2){m=y;break}do if(o<<24>>24!=-125){if((a[i>>0]|0)==-125)break;m=c[(c[t>>2]|0)+4+(s*20|0)>>2]|0;break A}while(0);m=c[(c[c[u>>2]>>2]|0)+4+(s*20|0)>>2]|0}while(0);q=D+s|0;r=a[q>>0]|0;o=Xj(m)|0;if(r<<24>>24==0|o<<24>>24==0)if(r<<24>>24==65|((o|r)<<24>>24==0?1:((o&255)+(r&255)&255)<<24>>24==65))ga=412;else ga=402;else if(r<<24>>24==65|r<<24>>24<67&o<<24>>24<67)ga=412;else ga=402;B:do if((ga|0)==402){ga=0;o=a[m>>0]|0;if((o+91&255)<2)do{m=c[m+12>>2]|0;o=a[m>>0]|0}while((o+91&255)<2);if(o<<24>>24==-88)o=a[m+38>>0]|0;switch(o<<24>>24){case -110:{ga=412;break B}case -109:if((r+-67&255)<2){ga=412;break B}else break B;case -111:switch(r<<24>>24){case 67:case 69:{ga=412;break B}default:break B}case 110:if(r<<24>>24==66){ga=412;break B}else break B;case -94:if((r+-67&255)<2&(b[m+32>>1]|0)<0){ga=412;break B}else break B;default:break B}}while(0);if((ga|0)==412){ga=0;a[q>>0]=65}s=s+1|0}while((s|0)!=(x|0));t=c[T>>2]|0;q=D;m=x;o=w;while(1){if((a[q>>0]|0)!=65){i=q;break}r=m+-1|0;o=o+1|0;q=q+1|0;if((m|0)>1)m=r;else{i=q;m=r;break}}C:do if((m|0)>1){q=m;while(1){m=q+-1|0;if((a[i+m>>0]|0)!=65)break C;if((q|0)>2)q=m;else{ga=421;break}}}else ga=421;while(0);if((ga|0)==421)if((m|0)==1)q=1;else break;r=t+108|0;m=c[r>>2]|0;if((c[t+112>>2]|0)>(m|0)){c[r>>2]=m+1;ca=c[t+104>>2]|0;a[ca+(m*20|0)>>0]=91;b[ca+(m*20|0)+2>>1]=0;c[ca+(m*20|0)+4>>2]=o;c[ca+(m*20|0)+8>>2]=q;c[ca+(m*20|0)+12>>2]=0;c[ca+(m*20|0)+16>>2]=0;a[ca+(m*20|0)+1>>0]=0}else m=Di(t,91,o,q,0)|0;o=c[t>>2]|0;if(a[o+81>>0]|0){if((q|0)==-12)break;kg(o,q,i);break}if((m|0)<0)m=(c[r>>2]|0)+-1|0;o=c[t+104>>2]|0;r=o+(m*20|0)|0;do if((q|0)<=-1){s=o+(m*20|0)+1|0;if(a[s>>0]|0)break;if((q|0)==-3){c[o+(m*20|0)+16>>2]=i;a[s>>0]=-3;break z}c[o+(m*20|0)+16>>2]=i;a[s>>0]=q;if((q|0)!=-12)break z;ca=i+12|0;c[ca>>2]=(c[ca>>2]|0)+1;break z}while(0);Ei(t,r,i,q)}while(0);p=x+p|0;m=a[y>>0]|0;if(m<<24>>24==-88)m=a[y+38>>0]|0;switch(m<<24>>24){case -87:{W=y+20|0;ga=442;break}case -125:{W=c[y+20>>2]|0;ga=442;break}default:{}}if((ga|0)==442?(c[c[W>>2]>>2]|0)>=2:0){n=1;break}lm(j,v)}else{if(!(R<<24>>24))break;m=F+p|0;n=g+108|0;o=c[n>>2]|0;if((c[g+112>>2]|0)>(o|0)){c[n>>2]=o+1;ca=c[g+104>>2]|0;a[ca+(o*20|0)>>0]=73;b[ca+(o*20|0)+2>>1]=0;c[ca+(o*20|0)+4>>2]=0;c[ca+(o*20|0)+8>>2]=m;c[ca+(o*20|0)+12>>2]=0;c[ca+(o*20|0)+16>>2]=0;a[ca+(o*20|0)+1>>0]=0}else Di(g,73,0,m,0)|0;n=0;p=p+1|0}while(0);D:do if(!G){do if(da|0){if(c[da+480>>2]|0){Xd(da,U);break D}m=U;if((c[da+304>>2]|0)>>>0>m>>>0)break;if((c[da+308>>2]|0)>>>0<=m>>>0)break;ca=da+300|0;c[U>>2]=c[ca>>2];c[ca>>2]=U;break D}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](U);break}else{ca=Wa[c[29352>>2]&127](U)|0;c[14978]=(c[14978]|0)-ca;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](U);break}}while(0);E:do if(D|0){do if(da|0){if(c[da+480>>2]|0){Xd(da,D);break E}m=D;if((c[da+304>>2]|0)>>>0>m>>>0)break;if((c[da+308>>2]|0)>>>0<=m>>>0)break;da=da+300|0;c[D>>2]=c[da>>2];c[da>>2]=D;break E}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](D);break}else{da=Wa[c[29352>>2]&127](D)|0;c[14978]=(c[14978]|0)-da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](D);break}}while(0);o=g+108|0;m=c[o>>2]|0;c[j+52>>2]=m;do if(p|0){n=a[44017+(n|aa<<1)>>0]|0;if((c[g+112>>2]|0)>(m|0)){c[o>>2]=m+1;da=c[g+104>>2]|0;a[da+(m*20|0)>>0]=n;b[da+(m*20|0)+2>>1]=0;c[da+(m*20|0)+4>>2]=Z;c[da+(m*20|0)+8>>2]=E;c[da+(m*20|0)+12>>2]=F;c[da+(m*20|0)+16>>2]=0;a[da+(m*20|0)+1>>0]=0}else m=Di(g,n&255,Z,E,F)|0;if(a[(c[g>>2]|0)+81>>0]|0)break;da=c[g+104>>2]|0;a[da+(m*20|0)+1>>0]=-3;c[da+(m*20|0)+16>>2]=p}while(0);do if(c[$>>2]&262144|0){m=c[o>>2]|0;if((c[g+112>>2]|0)>(m|0)){c[o>>2]=m+1;da=c[g+104>>2]|0;a[da+(m*20|0)>>0]=119;b[da+(m*20|0)+2>>1]=0;c[da+(m*20|0)+4>>2]=Z;c[da+(m*20|0)+8>>2]=1;c[da+(m*20|0)+12>>2]=0;c[da+(m*20|0)+16>>2]=0;a[da+(m*20|0)+1>>0]=0;break}else{Di(g,119,Z,1,0)|0;break}}while(0);if((c[$>>2]&64|0)!=0?(b[X>>1]&32)==0:0)w=1;else ga=481;F:do if((ga|0)==481){p=Y+12|0;m=c[p>>2]|0;if(c[m+36>>2]&32|0){if((ia|0)==(Z|0)){w=0;break}m=c[m+8>>2]|0;G:do if(!m)m=0;else while(1){da=m+55|0;if(((d[da>>0]|d[da+1>>0]<<8)&3)==2)break G;m=c[m+20>>2]|0;if(!m){m=0;break}}while(0);x=m+50|0;i=b[x>>1]|0;p=i&65535;do if(i<<16>>16==1){n=f+19|0;p=a[n>>0]|0;if(!(p<<24>>24)){n=(c[V>>2]|0)+1|0;c[V>>2]=n;ga=554;break}else{ga=p+-1<<24>>24;a[n>>0]=ga;n=c[f+148+((ga&255)<<2)>>2]|0;ga=554;break}}else{q=f+32|0;n=c[q>>2]|0;r=f+28|0;s=c[r>>2]|0;if((s|0)<(p|0)){n=c[V>>2]|0;c[V>>2]=n+p;n=n+1|0}else{c[q>>2]=n+p;c[r>>2]=s-p}if(i<<16>>16){ga=554;break}q=0;p=g+112|0}while(0);if((ga|0)==554){t=m+4|0;u=Y+52|0;p=g+112|0;v=Y+4|0;w=g+104|0;i=0;do{r=b[(c[t>>2]|0)+(i<<1)>>1]|0;m=b[u>>1]|0;H:do if(!(m<<16>>16))m=-1;else{s=c[v>>2]|0;q=m&65535;m=0;while(1){if((b[s+(m<<1)>>1]|0)==r<<16>>16)break H;m=m+1|0;if(m>>>0>=q>>>0){m=-1;break}}}while(0);m=m<<16>>16;q=i+n|0;r=c[o>>2]|0;if((c[p>>2]|0)>(r|0)){c[o>>2]=r+1;da=c[w>>2]|0;a[da+(r*20|0)>>0]=90;b[da+(r*20|0)+2>>1]=0;c[da+(r*20|0)+4>>2]=Z;c[da+(r*20|0)+8>>2]=m;c[da+(r*20|0)+12>>2]=q;c[da+(r*20|0)+16>>2]=0;a[da+(r*20|0)+1>>0]=0}else Di(g,90,Z,m,q)|0;i=i+1|0;m=b[x>>1]|0}while(i>>>0<(m&65535)>>>0);q=m&65535}m=c[o>>2]|0;if((c[p>>2]|0)>(m|0)){c[o>>2]=m+1;da=c[g+104>>2]|0;a[da+(m*20|0)>>0]=28;b[da+(m*20|0)+2>>1]=0;c[da+(m*20|0)+4>>2]=ia;c[da+(m*20|0)+8>>2]=pa;c[da+(m*20|0)+12>>2]=n;c[da+(m*20|0)+16>>2]=0;a[da+(m*20|0)+1>>0]=0}else m=Di(g,28,ia,pa,n)|0;if(a[(c[g>>2]|0)+81>>0]|0){w=0;break}w=c[g+104>>2]|0;a[w+(m*20|0)+1>>0]=-3;c[w+(m*20|0)+16>>2]=q;w=0;break}m=e[X>>1]|0;do if(!(m&1024)){if(m&4096|0?(a[h+49>>0]|0)==1:0)break;m=c[h>>2]|0;u=c[m+8>>2]|0;t=u+108|0;n=c[t>>2]|0;if((c[u+112>>2]|0)>(n|0)){c[t>>2]=n+1;da=c[u+104>>2]|0;a[da+(n*20|0)>>0]=-122;b[da+(n*20|0)+2>>1]=0;c[da+(n*20|0)+4>>2]=Z;c[da+(n*20|0)+8>>2]=0;c[da+(n*20|0)+12>>2]=ia;c[da+(n*20|0)+16>>2]=0;a[da+(n*20|0)+1>>0]=0}else Di(u,134,Z,0,ia)|0;if(!(b[X>>1]&32)){w=0;break F}da=c[m+116>>2]|0;if(c[((da|0)==0?m:da)+80>>2]|0){w=0;break F}q=c[m>>2]|0;s=(c[p>>2]|0)+42|0;i=(b[s>>1]<<2)+4|0;I:do if(!q){da=Sv(i|0,0,-1,-1)|0;ca=L()|0;if(ca>>>0>0|(ca|0)==0&da>>>0>2147483390){w=0;break F}if(!(c[7324]|0)){m=Wa[c[29340>>2]&127](i)|0;ga=520;break}m=Wa[c[29356>>2]&127](i)|0;if((c[14985]|0)>>>0>>0)c[14985]=i;p=59064;n=c[p>>2]|0;p=c[p+4>>2]|0;if((p|0)>0|(p|0)==0&n>>>0>0){da=c[14978]|0;ca=Tv(n|0,p|0,m|0,((m|0)<0)<<31>>31|0)|0;ba=L()|0;c[14768]=((ba|0)<0|(ba|0)==0&ca>>>0<=da>>>0)&1}n=Wa[c[29340>>2]&127](m)|0;if(!n){w=0;break F}m=Wa[c[29352>>2]&127](n)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0<=(c[14987]|0)>>>0){r=n;break}c[14987]=m;r=n}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0){w=0;break F}}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){n=q+300|0;m=c[n>>2]|0;if(m|0){c[n>>2]=c[m>>2];ga=q+284|0;c[ga>>2]=(c[ga>>2]|0)+1;ga=520;break I}n=q+296|0;m=c[n>>2]|0;if(!m){m=q+292|0;break}else{c[n>>2]=c[m>>2];ga=q+284|0;c[ga>>2]=(c[ga>>2]|0)+1;ga=520;break I}}else m=q+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1}m=_d(q,i,0)|0;ga=520}while(0);if((ga|0)==520)if(!m){w=0;break F}else r=m;gw(r|0,0,i|0)|0;c[r>>2]=b[s>>1];m=b[Y+52>>1]|0;if((m&65535)>1){q=c[Y+4>>2]|0;p=(m&65535)+-1|0;m=0;do{n=b[q+(m<<1)>>1]|0;if(n<<16>>16>-1){m=m+1|0;c[r+((n<<16>>16)+1<<2)>>2]=m}else m=m+1|0}while((m|0)<(p|0))}n=c[u>>2]|0;if(!(a[n+81>>0]|0)){m=(c[t>>2]|0)+-1|0;n=c[u+104>>2]|0;p=n+(m*20|0)+1|0;if(!(a[p>>0]|0)){c[n+(m*20|0)+16>>2]=r;a[p>>0]=-15;w=0;break F}else{Ei(u,n+(m*20|0)|0,r,-15);w=0;break F}}do if(n|0){if(c[n+480>>2]|0){Xd(n,r);w=0;break F}m=r;if((c[n+304>>2]|0)>>>0>m>>>0)break;if((c[n+308>>2]|0)>>>0<=m>>>0)break;w=n+300|0;c[r>>2]=c[w>>2];c[w>>2]=r;w=0;break F}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](r);w=0;break F}else{w=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);w=0;break F}}while(0);p=(c[V>>2]|0)+1|0;c[V>>2]=p;m=c[o>>2]|0;n=g+112|0;if((c[n>>2]|0)>(m|0)){c[o>>2]=m+1;da=c[g+104>>2]|0;a[da+(m*20|0)>>0]=-121;b[da+(m*20|0)+2>>1]=0;c[da+(m*20|0)+4>>2]=Z;c[da+(m*20|0)+8>>2]=p;c[da+(m*20|0)+12>>2]=0;c[da+(m*20|0)+16>>2]=0;a[da+(m*20|0)+1>>0]=0}else Di(g,135,Z,p,0)|0;m=c[o>>2]|0;if((c[n>>2]|0)>(m|0)){c[o>>2]=m+1;w=c[g+104>>2]|0;a[w+(m*20|0)>>0]=31;b[w+(m*20|0)+2>>1]=0;c[w+(m*20|0)+4>>2]=ia;c[w+(m*20|0)+8>>2]=0;c[w+(m*20|0)+12>>2]=p;c[w+(m*20|0)+16>>2]=0;a[w+(m*20|0)+1>>0]=0;w=0;break}else{Di(g,31,ia,0,p)|0;w=0;break}}while(0);do if(!(c[j>>2]|0)){if(b[X>>1]&32)break;r=c[Y+40>>2]|0;do if(r|0){c[ma>>2]=0;c[ma+4>>2]=0;c[ma+8>>2]=0;c[ma+12>>2]=0;c[ma+16>>2]=0;c[ma+20>>2]=0;c[ma+4>>2]=147;c[ma+24>>2]=na;c[na+4>>2]=ia;c[na+8>>2]=Z;if((c[r>>2]|0)<=0)break;s=Y+4|0;i=na+12|0;t=h+16|0;u=h+8|0;v=h+12|0;q=0;do{J:do if((b[(c[s>>2]|0)+(q<<1)>>1]|0)==-2){c[i>>2]=q;c[na>>2]=c[r+4+(q*20|0)>>2];m=c[t>>2]|0;if(m|0)_j(ma,m)|0;n=c[u>>2]|0;K:do if(n|0){m=c[n>>2]|0;if((m|0)<=0)break;n=n+4|0;while(1){p=c[n>>2]|0;if(p|0?_j(ma,p)|0:0)break K;if((m|0)>1){m=m+-1|0;n=n+20|0}else break}}while(0);n=c[v>>2]|0;if(!n)break;m=c[n>>2]|0;if((m|0)<=0)break;n=n+4|0;while(1){p=c[n>>2]|0;if(p|0?_j(ma,p)|0:0)break J;if((m|0)>1){m=m+-1|0;n=n+20|0}else break}}while(0);q=q+1|0}while((q|0)<(c[r>>2]|0))}while(0)}while(0);m=c[Y+36>>2]|0;if(m|0)mm(m,ia,oa);m=c[$>>2]|0;do if(!(m&4096)){n=j+45|0;if(!aa){a[n>>0]=5;break}else{a[n>>0]=4;break}}else a[j+45>>0]=-86;while(0);c[j+48>>2]=Z;a[j+46>>0]=m>>>16&1;if(!(m&15))a[j+47>>0]=1;E=w?0:Y}else{q=c[ea+8+(fa*72|0)+28>>2]|0;m=c[ea+8+(fa*72|0)+24>>2]|0;o=g+108|0;n=c[o>>2]|0;p=g+112|0;if((c[p>>2]|0)>(n|0)){c[o>>2]=n+1;da=c[g+104>>2]|0;a[da+(n*20|0)>>0]=13;b[da+(n*20|0)+2>>1]=0;c[da+(n*20|0)+4>>2]=q;c[da+(n*20|0)+8>>2]=0;c[da+(n*20|0)+12>>2]=m;c[da+(n*20|0)+16>>2]=0;a[da+(n*20|0)+1>>0]=0}else Di(g,13,q,0,m)|0;m=c[o>>2]|0;if((c[p>>2]|0)>(m|0)){c[o>>2]=m+1;da=c[g+104>>2]|0;a[da+(m*20|0)>>0]=14;b[da+(m*20|0)+2>>1]=0;c[da+(m*20|0)+4>>2]=q;c[da+(m*20|0)+8>>2]=z;c[da+(m*20|0)+12>>2]=0;c[da+(m*20|0)+16>>2]=0;a[da+(m*20|0)+1>>0]=0}else m=Di(g,14,q,z,0)|0;c[j+52>>2]=m;a[j+45>>0]=11;E=0}while(0);H=h+100|0;I=h+92|0;D=ea+8+(fa*72|0)+36|0;w=h+50|0;x=j+4|0;y=na+4|0;z=ma+4|0;A=ma+24|0;v=ma+20|0;B=j+36|0;F=g+112|0;G=g+104|0;m=(E|0)==0?2:1;while(1){n=c[I>>2]|0;if((n|0)<=0){ga=813;break}C=(m|0)==1;u=(m|0)<3;m=0;t=c[H>>2]|0;while(1){i=t+10|0;p=b[i>>1]|0;L:do if(!(p&6)){h=t+40|0;fa=qa;if(!((c[fa>>2]&c[h>>2]|0)==0?(c[fa+4>>2]&c[h+4>>2]|0)==0:0)){a[w>>0]=1;break}s=c[t>>2]|0;if(a[D>>0]&8?(c[s+4>>2]&1|0)==0:0)break;do if(C){h=c[x>>2]|0;c[ma>>2]=0;c[ma+4>>2]=0;c[ma+8>>2]=0;c[ma+12>>2]=0;c[ma+16>>2]=0;c[ma+20>>2]=0;c[y>>2]=h;c[na>>2]=E;c[z>>2]=148;c[A>>2]=na;if((s|0)!=0?(_j(ma,s)|0,(a[v>>0]|0)!=0):0){m=2;break L}else{ga=797;break}}else if(u)ga=797;while(0);if((ga|0)==797){ga=0;p=b[i>>1]|0;if(p&4096){m=(m|0)==0?3:m;break}}if((p&512)!=0?(ha=c[B>>2]|0,(ha|0)!=0):0){q=(ha<<1&2)+18|0;r=ha>>>1;p=c[o>>2]|0;if((c[F>>2]|0)>(p|0)){c[o>>2]=p+1;h=c[G>>2]|0;a[h+(p*20|0)>>0]=q;b[h+(p*20|0)+2>>1]=0;c[h+(p*20|0)+4>>2]=r;c[h+(p*20|0)+8>>2]=0;c[h+(p*20|0)+12>>2]=0;c[h+(p*20|0)+16>>2]=0;a[h+(p*20|0)+1>>0]=0}else p=Di(g,q,r,0,0)|0;Tj(f,s,pa,16);if(p|0){q=c[o>>2]|0;if(!(a[(c[g>>2]|0)+81>>0]|0))p=(c[G>>2]|0)+(((p|0)<0?q+-1|0:p)*20|0)|0;else p=59308;c[p+8>>2]=q}}else Tj(f,s,pa,16);b[i>>1]=b[i>>1]|4}while(0);if((n|0)>1){t=t+48|0;n=n+-1|0}else break}if((m|0)<=0){ga=812;break}}if((ga|0)==812){m=c[I>>2]|0;if((m|0)>0){i=ma+4|0;t=ma+12|0;u=ma+16|0;v=ma+8|0;w=ma+20|0;x=ma+24|0;y=ma+28|0;z=ma+17|0;A=ma+18|0;B=ma+72|0;C=na+12|0;s=c[H>>2]|0;while(1){do if((((((b[s+10>>1]&6)==0?(ha=e[s+12>>1]|0,!((ha&130|0)==0|(ha&2048|0)==0)):0)?(c[s+20>>2]|0)==(ia|0):0)?(c[j>>2]|0)==0:0)?(ja=c[s>>2]|0,ka=c[s+28>>2]|0,c[ma>>2]=oa,c[i>>2]=oa,c[t>>2]=0,a[u>>0]=0,c[v>>2]=0,c[w>>2]=131,c[x>>2]=0,c[y>>2]=ia,a[z>>0]=1,a[A>>0]=1,(ka|0)!=-2):0)?(b[B>>1]=ka,la=Tl(ma)|0,la|0):0){p=0;n=la;while(1){r=n+32|0;q=c[r>>2]|0;r=c[r+4>>2]|0;if((q&k|0)==0&(r&l|0)==0){if((q|0)==0&(r|0)==0?b[n+12>>1]&130:0){ga=825;break}p=(p|0)==0?n:p}n=Tl(ma)|0;if(!n){ga=829;break}}if((ga|0)==825)ga=0;else if((ga|0)==829){ga=0;if(!p)break;else n=p}if(b[n+10>>1]&4)break;if(b[n+12>>1]&1){n=c[n>>2]|0;if((c[n+4>>2]&2048|0)!=0?(c[c[c[n+20>>2]>>2]>>2]|0)>1:0)break}else n=c[n>>2]|0;E=na;D=E+52|0;do{c[E>>2]=c[n>>2];E=E+4|0;n=n+4|0}while((E|0)<(D|0));c[C>>2]=c[ja+12>>2];Tj(f,na,pa,16);break}while(0);if((m|0)>1){s=s+48|0;m=m+-1|0}else{m=j;break}}}else ga=813}if((ga|0)==813)m=j;n=c[m>>2]|0;if(n|0){m=c[o>>2]|0;c[j+28>>2]=m;if((c[F>>2]|0)>(m|0)){c[o>>2]=m+1;j=c[G>>2]|0;a[j+(m*20|0)>>0]=70;b[j+(m*20|0)+2>>1]=0;c[j+(m*20|0)+4>>2]=1;c[j+(m*20|0)+8>>2]=n;c[j+(m*20|0)+12>>2]=0;c[j+(m*20|0)+16>>2]=0;a[j+(m*20|0)+1>>0]=0}else Di(g,70,1,n,0)|0;m=c[I>>2]|0;if((m|0)>0){o=c[H>>2]|0;p=0;while(1){n=o+10|0;if((b[n>>1]&6)==0?(j=o+40|0,g=qa,(c[g>>2]&c[j>>2]|0)==0?(c[g+4>>2]&c[j+4>>2]|0)==0:0):0){Tj(f,c[o>>2]|0,pa,16);b[n>>1]=b[n>>1]|4;m=c[I>>2]|0}p=p+1|0;if((p|0)>=(m|0))break;else o=o+48|0}}}f=qa;qa=c[f+4>>2]|0;f=c[f>>2]|0;K(qa|0);Ra=ra;return f|0}function Ml(d,f,g){d=d|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;o=d+12|0;h=c[o>>2]|0;m=d+16|0;j=c[m>>2]|0;n=d+20|0;do if((h|0)<(j|0))m=h;else{k=c[n>>2]|0;l=c[c[c[d>>2]>>2]>>2]|0;j=j*96|0;a:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))p=13;else c[n>>2]=0;else{do if(!(0<0|(0==0?(e[l+276>>1]|0)>>>0>>0:0))){h=l+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];p=l+284|0;c[p>>2]=(c[p>>2]|0)+1;p=14;break a}h=l+296|0;i=c[h>>2]|0;if(!i){h=l+292|0;break}else{c[h>>2]=c[i>>2];p=l+284|0;c[p>>2]=(c[p>>2]|0)+1;p=14;break a}}else h=l+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;p=13}while(0);if((p|0)==13){i=_d(l,j,0)|0;p=14}if((p|0)==14?(c[n>>2]=i,i|0):0){ew(i|0,k|0,(c[o>>2]|0)*48|0)|0;do if(!((k|0)==(d+24|0)|(k|0)==0)){if(c[l+480>>2]|0){Xd(l,k);break}j=k;if((c[l+304>>2]|0)>>>0<=j>>>0?(c[l+308>>2]|0)>>>0>j>>>0:0){j=l+300|0;c[k>>2]=c[j>>2];c[j>>2]=k;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);h=c[n>>2]|0;k=h;if((c[l+304>>2]|0)>>>0<=k>>>0?(c[l+308>>2]|0)>>>0>k>>>0:0)h=e[l+276>>1]|0;else h=Wa[c[29352>>2]&127](h)|0;c[m>>2]=(h>>>0)/48|0;m=c[o>>2]|0;break}if(!((f|0)==0|(g&1)==0))ni(l,f);c[n>>2]=k;g=0;return g|0}while(0);l=c[n>>2]|0;c[o>>2]=m+1;b:do if(f){h=c[f+4>>2]|0;if(!(h&262144)){b[l+(m*48|0)+8>>1]=1;if(!(h&4096))break;while(1){if(!(h&262144))f=f+12|0;else f=(c[f+20>>2]|0)+4|0;f=c[f>>2]|0;if(!f){f=0;break b}h=c[f+4>>2]|0;if(!(h&4096))break b}}i=c[f+28>>2]|0;j=((i|0)<0)<<31>>31;if(i>>>0<8)if(i>>>0<2)i=-270;else{k=40;do{k=(k&65535)+65526|0;i=cw(i|0,j|0,1)|0;j=L()|0}while(j>>>0<0|(j|0)==0&i>>>0<8);k=k&65535;p=48}else{if(i>>>0>255){k=40;do{k=(k&65535)+40|0;p=i;i=bw(i|0,j|0,4)|0;o=j;j=L()|0}while(o>>>0>0|(o|0)==0&p>>>0>4095);k=k&65535}else k=40;if(j>>>0>0|(j|0)==0&i>>>0>15){do{k=(k&65535)+10&65535;p=i;i=bw(i|0,j|0,1)|0;o=j;j=L()|0}while(o>>>0>0|(o|0)==0&p>>>0>31);p=48}else p=48}if((p|0)==48)i=(k&65535)+65256+(e[3648+((i&7)<<1)>>1]|0)&65535;b[l+(m*48|0)+8>>1]=i;if(h&4096)do{if(!(h&262144))f=f+12|0;else f=(c[f+20>>2]|0)+4|0;f=c[f>>2]|0;if(!f){f=0;break b}h=c[f+4>>2]|0}while((h&4096|0)!=0)}else{b[l+(m*48|0)+8>>1]=1;f=0}while(0);c[l+(m*48|0)>>2]=f;b[l+(m*48|0)+10>>1]=g;c[l+(m*48|0)+4>>2]=d;c[l+(m*48|0)+16>>2]=-1;f=l+(m*48|0)+12|0;h=f+36|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0));g=m;return g|0}function Nl(f,g,h){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,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,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;qa=Ra;Ra=Ra+16|0;q=qa;da=qa+8|0;ea=qa+4|0;p=c[g>>2]|0;la=c[p>>2]|0;ha=c[la>>2]|0;_=ha+81|0;if(a[_>>0]|0){Ra=qa;return}na=g+20|0;t=c[na>>2]|0;w=t+(h*48|0)|0;ga=p+488|0;oa=c[w>>2]|0;pa=oa+12|0;i=c[pa>>2]|0;if(!i){z=0;A=0}else{z=Pl(ga,i)|0;A=L()|0}u=a[oa>>0]|0;s=u&255;a:do switch(u<<24>>24){case 49:{if(ok(la,oa)|0){Ra=qa;return}i=oa+20|0;if(c[oa+4>>2]&2048|0){j=Ol(ga,c[i>>2]|0)|0;i=L()|0;break a}o=c[i>>2]|0;if((o|0)!=0?(j=c[o>>2]|0,(j|0)>0):0){n=0;m=j;j=0;i=0;do{k=c[o+4+(n*20|0)>>2]|0;if(!k){k=0;l=0}else{k=Pl(ga,k)|0;l=L()|0;m=c[o>>2]|0}j=k|j;i=l|i;n=n+1|0}while((n|0)<(m|0))}else{j=0;i=0}break}case 50:{j=0;i=0;break}default:{i=c[oa+16>>2]|0;if(!i){j=0;i=0}else{j=Pl(ga,i)|0;i=L()|0}}}while(0);m=t+(h*48|0)+32|0;c[m>>2]=j;c[m+4>>2]=i;c[ga>>2]=0;m=Pl(ga,oa)|0;n=L()|0;r=t+(h*48|0)+10|0;if(c[ga>>2]|0)b[r>>1]=b[r>>1]|4096;ka=oa+4|0;if(c[ka>>2]&1){j=b[oa+36>>1]|0;k=c[p+492>>2]|0;b:do if((k|0)>0){i=0;while(1){if((c[p+496+(i<<2)>>2]|0)==(j|0))break;i=i+1|0;if((i|0)>=(k|0)){k=0;l=0;break b}}k=cw(1,0,i|0)|0;l=L()|0}else{k=0;l=0}while(0);i=k|m;j=l|n;m=Sv(k|0,l|0,-1,-1)|0;n=L()|0;ja=bw(i|0,j|0,1)|0;ia=L()|0;if(ia>>>0>>0|(ia|0)==(l|0)&ja>>>0>>0){y=i;x=j;ja=m;ia=n}else{cd(la,43561,q);Ra=qa;return}}else{y=m;x=n;ja=0;ia=0}o=t+(h*48|0)+40|0;c[o>>2]=y;c[o+4>>2]=x;o=t+(h*48|0)+20|0;c[o>>2]=-1;c[t+(h*48|0)+16>>2]=-1;m=t+(h*48|0)+12|0;b[m>>1]=0;c:do switch(u<<24>>24){case 45:case 50:case 53:case 54:case 55:case 56:case 57:case 49:{i=c[pa>>2]|0;d:do if(!i)i=0;else while(1){j=c[i+4>>2]|0;if(!(j&4096))break d;if(!(j&262144))i=i+12|0;else i=(c[i+20>>2]|0)+4|0;i=c[i>>2]|0;if(!i){i=0;break}}while(0);j=c[oa+16>>2]|0;e:do if(!j)j=0;else while(1){k=c[j+4>>2]|0;if(!(k&4096))break e;if(!(k&262144))j=j+12|0;else j=(c[j+20>>2]|0)+4|0;j=c[j>>2]|0;if(!j){j=0;break}}while(0);l=t+(h*48|0)+32|0;v=l;v=((c[v>>2]&z|0)==0?(c[v+4>>2]&A|0)==0:0)?8191:2048;k=c[t+(h*48|0)+24>>2]|0;if((k|0)>0)i=c[(c[i+20>>2]|0)+4+((k+-1|0)*20|0)>>2]|0;k=a[i>>0]|0;n=(s+-54|0)>>>0<4;if(n&k<<24>>24==-87){k=c[(c[i+20>>2]|0)+4>>2]|0;i=k;k=a[k>>0]|0}if(k<<24>>24!=-94){if((!((z|0)==0&(A|0)==0)?(R=Sv(z|0,A|0,-1,-1)|0,(R&z|0)==0&((L()|0)&A|0)==0):0)?Ql(f,z,A,da,i)|0:0){i=c[da>>2]|0;k=c[da+4>>2]|0;fa=51}}else{fa=c[i+28>>2]|0;c[da>>2]=fa;k=b[i+32>>1]|0;c[da+4>>2]=k;i=fa;fa=51}if((fa|0)==51){c[o>>2]=i;c[t+(h*48|0)+28>>2]=k;switch(u<<24>>24){case 49:{i=1;break}case 50:{i=256;break}case 45:{i=128;break}default:i=2<>1]=i&v}m=u<<24>>24==45;if(m)b[r>>1]=b[r>>1]|2048;do if(!j)i=w;else{k=c[l>>2]|0;l=c[l+4>>2]|0;i=a[j>>0]|0;if(n&i<<24>>24==-87){i=c[(c[j+20>>2]|0)+4>>2]|0;j=i;i=a[i>>0]|0}if(i<<24>>24!=-94){if((k|0)==0&(l|0)==0){i=w;break}R=Sv(k|0,l|0,-1,-1)|0;if(!((R&k|0)==0&((L()|0)&l|0)==0)){i=w;break}if(!(Ql(f,k,l,da,j)|0)){i=w;break}}else{c[da>>2]=c[j+28>>2];c[da+4>>2]=b[j+32>>1]}f:do if((c[o>>2]|0)>-1){if(!oa)s=0;else s=dk(ha,oa,0,0)|0;do if(!(a[_>>0]|0)){i=Ml(g,s,3)|0;if(!i)break;n=c[na>>2]|0;q=n+(i*48|0)|0;c[n+(i*48|0)+16>>2]=h;b[n+(i*48|0)+8>>1]=b[n+(h*48|0)+8>>1]|0;R=n+(h*48|0)+14|0;a[R>>0]=(a[R>>0]|0)+1<<24>>24;i=n+(i*48|0)+10|0;if(m)b[i>>1]=b[i>>1]|2048;i=n+(h*48|0)|0;R=n+(h*48|0)+10|0;b[R>>1]=b[R>>1]|8;if(b[(c[la>>2]|0)+76>>1]&128){r=0;break f}switch(a[s>>0]|0){case 45:case 53:break;default:{r=0;break f}}if(c[s+4>>2]&1|0){r=0;break f}m=s+12|0;j=c[m>>2]|0;Q=Xj(j)|0;l=s+16|0;k=c[l>>2]|0;R=Xj(k)|0;if(Q<<24>>24!=R<<24>>24?!(Q<<24>>24>66&R<<24>>24>66):0){r=0;break f}g:do if(!(c[j+4>>2]&256)){do if(k|0){if(!(c[k+4>>2]&256))break;j=Yi(la,k)|0;fa=87;break g}while(0);j=Yi(la,j)|0;if(j|0){fa=88;break}j=Yi(la,k)|0;fa=87}else{j=Yi(la,j)|0;fa=87}while(0);if((fa|0)==87?j|0:0)fa=88;do if((fa|0)==88){if((c[j+12>>2]|0)==78?(c[j+8>>2]|0)==0:0)break;k=c[l>>2]|0;j=Yi(la,c[m>>2]|0)|0;if(!j)j=c[(c[la>>2]|0)+8>>2]|0;k=Yi(la,k)|0;if(!k)k=c[(c[la>>2]|0)+8>>2]|0;m=c[j>>2]|0;k=c[k>>2]|0;R=a[m>>0]|0;j=(d[208+(R&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0;if(!(R<<24>>24==0|(j|0)!=0)){l=k;k=m;do{k=k+1|0;l=l+1|0;R=a[k>>0]|0;j=(d[208+(R&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(R<<24>>24==0|(j|0)!=0))}if(j|0){r=0;break f}}while(0);r=n+(h*48|0)+12|0;b[r>>1]=b[r>>1]|2048;r=2048;break f}else{if(!s)break;ni(ha,s)}while(0);Ra=qa;return}else{s=oa;i=w;q=w;r=0}while(0);o=s+16|0;k=(c[o>>2]|0)+4|0;l=c[k>>2]|0;m=l&256;p=s+12|0;n=c[p>>2]|0;j=n;do if((m|0)==(c[n+4>>2]&256|0)){if(m|0){c[k>>2]=l&-257;break}if(!(Yi(la,n)|0)){j=c[p>>2]|0;break}else{j=c[p>>2]|0;R=j+4|0;c[R>>2]=c[R>>2]|256;break}}while(0);R=c[o>>2]|0;c[o>>2]=j;c[p>>2]=R;j=a[s>>0]|0;if((j&255)>53)a[s>>0]=((j&255)+202^2)+54;c[q+20>>2]=c[da>>2];c[q+28>>2]=c[da+4>>2];j=q+32|0;c[j>>2]=ja|z;c[j+4>>2]=ia|A;j=q+40|0;c[j>>2]=y;c[j+4>>2]=x;j=a[s>>0]|0;switch(j<<24>>24){case 49:{j=1;break}case 50:{j=256;break}case 45:{j=128;break}default:j=2<<(j&255)+-53}b[q+12>>1]=j+r&(v&65535)}while(0);break}default:{switch(a[oa>>0]|0){case 48:{if((a[g+8>>0]|0)!=44){i=w;break c}k=c[oa+20>>2]|0;l=oa+36|0;i=c[pa>>2]|0;if(!i)j=0;else j=dk(ha,i,0,0)|0;i=c[k+4>>2]|0;if(!i)i=0;else i=dk(ha,i,0,0)|0;i=ej(la,57,j,i)|0;if(i|0){R=i+4|0;c[R>>2]=c[R>>2]|c[ka>>2]&1;b[i+36>>1]=b[l>>1]|0}R=Ml(g,i,3)|0;Nl(f,g,R);i=c[na>>2]|0;c[i+(R*48|0)+16>>2]=h;b[i+(R*48|0)+8>>1]=b[i+(h*48|0)+8>>1]|0;i=i+(h*48|0)+14|0;a[i>>0]=(a[i>>0]|0)+1<<24>>24;i=c[pa>>2]|0;if(!i)j=0;else j=dk(ha,i,0,0)|0;i=c[k+24>>2]|0;if(!i)i=0;else i=dk(ha,i,0,0)|0;i=ej(la,55,j,i)|0;if(i|0){R=i+4|0;c[R>>2]=c[R>>2]|c[ka>>2]&1;b[i+36>>1]=b[l>>1]|0}R=Ml(g,i,3)|0;Nl(f,g,R);i=c[na>>2]|0;c[i+(R*48|0)+16>>2]=h;b[i+(R*48|0)+8>>1]=b[i+(h*48|0)+8>>1]|0;R=i+(h*48|0)+14|0;a[R>>0]=(a[R>>0]|0)+1<<24>>24;i=i+(h*48|0)|0;break c}case 43:break;default:{i=w;break c}}N=c[g>>2]|0;O=c[N>>2]|0;P=c[O>>2]|0;H=c[na>>2]|0;Q=c[H+(h*48|0)>>2]|0;h:do if(!P){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](416)|0;fa=146;break}i=Wa[c[29356>>2]&127](416)|0;if((c[14985]|0)>>>0<416)c[14985]=416;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){fa=c[14978]|0;J=Tv(j|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;I=L()|0;c[14768]=((I|0)<0|(I|0)==0&J>>>0<=fa>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(i){j=Wa[c[29352>>2]&127](i)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0){c[14987]=j;fa=148}else fa=148}else fa=147}else{if(c[P+272>>2]|0){if(a[P+81>>0]|0){fa=147;break}}else{do if((e[P+276>>1]|0)>=416){j=P+300|0;i=c[j>>2]|0;if(i|0){c[j>>2]=c[i>>2];fa=P+284|0;c[fa>>2]=(c[fa>>2]|0)+1;fa=146;break h}j=P+296|0;i=c[j>>2]|0;if(!i){i=P+292|0;break}else{c[j>>2]=c[i>>2];fa=P+284|0;c[fa>>2]=(c[fa>>2]|0)+1;fa=146;break h}}else i=P+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(P,416,0)|0;fa=146}while(0);if((fa|0)==146)if(!i)fa=147;else fa=148;i:do if((fa|0)==147)c[H+(h*48|0)+28>>2]=0;else if((fa|0)==148){gw(i+8|0,0,408)|0;c[H+(h*48|0)+28>>2]=i;j=H+(h*48|0)+10|0;b[j>>1]=b[j>>1]|16;j=i+24|0;gw(j|0,0,384)|0;c[i>>2]=N;a[i+9>>0]=0;c[i+4>>2]=0;I=i+12|0;c[I>>2]=0;c[i+16>>2]=8;J=i+20|0;c[J>>2]=j;Il(i,Q,43);j=c[I>>2]|0;if((j|0)>0)do{G=j;j=j+-1|0;Nl(f,i,j)}while((G|0)>1);y=P+81|0;if(!(a[y>>0]|0)){j=c[I>>2]|0;if((j|0)>0){z=P+272|0;A=P+276|0;B=N+492|0;C=P+288|0;D=P+300|0;E=P+296|0;F=P+284|0;G=P+292|0;x=c[J>>2]|0;v=-1;l=-1;n=-1;o=-1;while(1){w=j;j=j+-1|0;m=x+12|0;u=b[m>>1]|0;j:do if(!(u&511)){do if(c[z>>2]|0)if(!(a[y>>0]|0))fa=164;else{n=0;o=0;p=v;break j}else{if((e[A>>1]|0)>=408){k=c[D>>2]|0;if(k|0){c[D>>2]=c[k>>2];c[F>>2]=(c[F>>2]|0)+1;break}k=c[E>>2]|0;if(!k)k=G;else{c[E>>2]=c[k>>2];c[F>>2]=(c[F>>2]|0)+1;break}}else k=C;c[k>>2]=(c[k>>2]|0)+1;fa=164}while(0);if((fa|0)==164){fa=0;k=_d(P,408,0)|0}if(!k){n=0;o=0;p=v}else{c[x+28>>2]=k;n=x+10|0;b[n>>1]=b[n>>1]|32;b[m>>1]=1024;m=k+24|0;gw(m|0,0,384)|0;c[k>>2]=c[g>>2];a[k+9>>0]=0;n=k+4|0;c[n>>2]=0;o=k+12|0;c[o>>2]=0;c[k+16>>2]=8;p=k+20|0;c[p>>2]=m;Il(k,c[x>>2]|0,44);m=c[o>>2]|0;if((m|0)>0)do{u=m;m=m+-1|0;Nl(f,k,m)}while((u|0)>1);c[n>>2]=g;k:do if((a[y>>0]|0)==0?(K=c[o>>2]|0,(K|0)>0):0){q=c[p>>2]|0;r=0;k=0;m=0;while(1){switch(a[c[q>>2]>>0]|0){case 45:case 50:case 53:case 54:case 55:case 56:case 57:case 49:{fa=174;break}default:if((b[q+12>>1]|0)==64)fa=174}if((fa|0)==174){fa=0;o=c[q+20>>2]|0;p=c[B>>2]|0;l:do if((p|0)>0){n=0;while(1){if((c[N+496+(n<<2)>>2]|0)==(o|0))break;n=n+1|0;if((n|0)>=(p|0)){n=0;o=0;break l}}n=cw(1,0,n|0)|0;o=L()|0}else{n=0;o=0}while(0);k=n|k;m=o|m}r=r+1|0;if((r|0)>=(K|0))break k;else q=q+48|0}}else{k=0;m=0}while(0);n=0;o=0;p=k&v;l=m&l}}else{q=b[x+10>>1]|0;if(!(q&8)){m=c[x+20>>2]|0;s=c[B>>2]|0;r=(s|0)>0;m:do if(r){k=0;while(1){if((c[N+496+(k<<2)>>2]|0)==(m|0))break;k=k+1|0;if((k|0)>=(s|0)){p=0;t=0;break m}}p=cw(1,0,k|0)|0;t=L()|0}else{p=0;t=0}while(0);if(!(q&2))k=t;else{m=c[(c[J>>2]|0)+((c[x+16>>2]|0)*48|0)+20>>2]|0;n:do if(r){k=0;while(1){if((c[N+496+(k<<2)>>2]|0)==(m|0))break;k=k+1|0;if((k|0)>=(s|0)){k=0;m=0;break n}}k=cw(1,0,k|0)|0;m=L()|0}else{k=0;m=0}while(0);p=k|p;k=m|t}u=(u&2)==0;n=u?0:p&n;o=u?0:k&o;p=p&v;l=k&l}else p=v}while(0);k=(p|0)!=0|(l|0)!=0;if(!(k&(w|0)>1))break;else{x=x+48|0;v=p}}K=i+408|0;c[K>>2]=p;c[K+4>>2]=l;b[H+(h*48|0)+12>>1]=512;if(k)fa=198;else r=n}else{n=i+408|0;c[n>>2]=-1;c[n+4>>2]=-1;b[H+(h*48|0)+12>>1]=512;n=-1;o=-1;fa=198}o:do if((fa|0)==198){a[g+9>>0]=1;if((c[I>>2]|0)==2){j=0;k=c[J>>2]|0;while(1){m=j+1|0;if((b[k+12>>1]|0)!=1024)if(!j)j=k;else{r=n;break o}else{i=c[k+28>>2]|0;if((c[i+12>>2]|0)<=(j|0)){r=n;break o}j=(c[i+20>>2]|0)+(j*48|0)|0}if(!j){r=n;break o}l=0;while(1){if((b[k+60>>1]|0)==1024){i=c[k+76>>2]|0;if((c[i+12>>2]|0)<=(l|0))break;i=(c[i+20>>2]|0)+(l*48|0)|0;if(!i)break}else if(!l)i=k+48|0;else break;Rl(f,g,j,i);l=l+1|0;k=c[J>>2]|0}j=m}}else r=n}while(0);if(!((r|0)==0&(o|0)==0)?(R=N+492|0,M=c[I>>2]|0,(M|0)>0):0){n=M;i=c[J>>2]|0;while(1){k=n+-1|0;q=i+10|0;b[q>>1]=b[q>>1]&-65;q=c[i+20>>2]|0;if((q|0)!=-1){l=c[R>>2]|0;p:do if((l|0)>0){j=0;while(1){if((c[N+496+(j<<2)>>2]|0)==(q|0))break;j=j+1|0;if((j|0)>=(l|0)){j=0;l=0;break p}}j=cw(1,0,j|0)|0;l=L()|0}else{j=0;l=0}while(0);if(!((j&r|0)==0&(l&o|0)==0))break}if((n|0)>1){n=k;i=i+48|0}else break i}l=c[i+28>>2]|0;m=c[(c[i>>2]|0)+12>>2]|0;if((n|0)>=1){q:do if((l|0)==-2){j=q;while(1){if((j|0)==(q|0)){if((c[i+28>>2]|0)!=-2){fa=242;break q}if(bk(O,c[(c[i>>2]|0)+12>>2]|0,m,-1)|0){fa=242;break q}M=c[i>>2]|0;K=Xj(c[M+16>>2]|0)|0;if(!(K<<24>>24==0|K<<24>>24==(Xj(c[M+12>>2]|0)|0)<<24>>24)){fa=242;break q}M=i+10|0;b[M>>1]=b[M>>1]|64}else{M=i+10|0;b[M>>1]=b[M>>1]&-65}if((k|0)<=0)break q;j=c[i+68>>2]|0;k=k+-1|0;i=i+48|0}}else{j=q;while(1){if((j|0)==(q|0)){if((c[i+28>>2]|0)!=(l|0)){fa=242;break q}M=c[i>>2]|0;K=Xj(c[M+16>>2]|0)|0;if(!(K<<24>>24==0|K<<24>>24==(Xj(c[M+12>>2]|0)|0)<<24>>24)){fa=242;break q}M=i+10|0;b[M>>1]=b[M>>1]|64}else{M=i+10|0;b[M>>1]=b[M>>1]&-65}if((k|0)<=0)break q;j=c[i+68>>2]|0;k=k+-1|0;i=i+48|0}}while(0);r:do if((fa|0)==242){i=c[I>>2]|0;if((i|0)<=0)break i;n=i;i=c[J>>2]|0;while(1){k=n+-1|0;p=i+10|0;b[p>>1]=b[p>>1]&-65;p=c[i+20>>2]|0;if((p|0)!=(q|0)){l=c[R>>2]|0;s:do if((l|0)>0){j=0;while(1){if((c[N+496+(j<<2)>>2]|0)==(p|0))break;j=j+1|0;if((j|0)>=(l|0)){j=0;l=0;break s}}j=cw(1,0,j|0)|0;l=L()|0}else{j=0;l=0}while(0);if(!((j&r|0)==0&(l&o|0)==0))break}if((n|0)>1){n=k;i=i+48|0}else break i}l=c[i+28>>2]|0;m=c[(c[i>>2]|0)+12>>2]|0;if((n|0)<1)break i;if((l|0)!=-2){j=p;while(1){if((j|0)==(p|0)){if((c[i+28>>2]|0)!=(l|0))break i;R=c[i>>2]|0;M=Xj(c[R+16>>2]|0)|0;if(!(M<<24>>24==0|M<<24>>24==(Xj(c[R+12>>2]|0)|0)<<24>>24))break i;R=i+10|0;b[R>>1]=b[R>>1]|64}else{R=i+10|0;b[R>>1]=b[R>>1]&-65}if((k|0)<=0)break r;j=c[i+68>>2]|0;k=k+-1|0;i=i+48|0}}j=p;while(1){if((j|0)==(p|0)){if((c[i+28>>2]|0)!=-2)break i;if(bk(O,c[(c[i>>2]|0)+12>>2]|0,m,-1)|0)break i;R=c[i>>2]|0;M=Xj(c[R+16>>2]|0)|0;if(!(M<<24>>24==0|M<<24>>24==(Xj(c[R+12>>2]|0)|0)<<24>>24))break i;R=i+10|0;b[R>>1]=b[R>>1]|64}else{R=i+10|0;b[R>>1]=b[R>>1]&-65}if((k|0)<=0)break r;j=c[i+68>>2]|0;k=k+-1|0;i=i+48|0}}while(0);i=c[I>>2]|0;if((i|0)>0){k=0;j=0;m=c[J>>2]|0;while(1){l=i;i=i+-1|0;if(b[m+10>>1]&64){k=c[(c[m>>2]|0)+16>>2]|0;if(!k)k=0;else k=dk(P,k,0,0)|0;j=nj(c[c[N>>2]>>2]|0,j,k)|0;k=c[(c[m>>2]|0)+12>>2]|0}if((l|0)<=1)break;else m=m+48|0}if(!k)i=0;else i=dk(P,k,0,0)|0}else{j=0;i=0}i=ej(O,49,i,0)|0;if(i|0){R=i+4|0;c[R>>2]=c[R>>2]|c[Q+4>>2]&1;b[i+36>>1]=b[Q+36>>1]|0;c[i+20>>2]=j;Q=Ml(g,i,3)|0;Nl(f,g,Q);R=c[na>>2]|0;c[R+(Q*48|0)+16>>2]=h;b[R+(Q*48|0)+8>>1]=b[R+(h*48|0)+8>>1]|0;R=R+(h*48|0)+14|0;a[R>>0]=(a[R>>0]|0)+1<<24>>24;break}if(j|0)ri(P,j)}}}}while(0);i=(c[na>>2]|0)+(h*48|0)|0}}while(0);C=g+8|0;t:do if((a[C>>0]|0)==44){A=c[la>>2]|0;u:do if((((a[oa>>0]|0)==-95?(Z=oa+20|0,S=c[Z>>2]|0,(S|0)!=0):0)?(T=c[S>>2]|0,U=Jd(A,c[oa+8>>2]|0,T,1,0)|0,(U|0)!=0):0)?(V=c[U+4>>2]|0,(V&4|0)!=0):0){l=c[Z>>2]|0;if((T|0)>=3){j=c[l+44>>2]|0;if((a[j>>0]|0)!=110)break;j=c[j+8>>2]|0;k=a[j>>0]|0;if(!(k<<24>>24))break;if(a[j+1>>0]|0)break}else k=0;w=c[U+8>>2]|0;u=a[w>>0]|0;v=a[w+1>>0]|0;w=a[w+2>>0]|0;B=V&8;y=c[l+24>>2]|0;j=c[l+4>>2]|0;v:do if(!j)z=0;else while(1){l=c[j+4>>2]|0;if(!(l&4096)){z=j;break v}if(!(l&262144))j=j+12|0;else j=(c[j+20>>2]|0)+4|0;j=c[j>>2]|0;if(!j){z=0;break}}while(0);j=a[z>>0]|0;x=j<<24>>24==-108;do if(x){if(!(0==0?(c[A+32>>2]&8388608|0)==0:0))break u;j=c[la+220>>2]|0;q=b[z+32>>1]|0;r=q<<16>>16;w:do if((j|0)!=0?(V=c[j+100>>2]|0,X=r+-1|0,W=V+(X*40|0)|0,X=V+(X*40|0)+8|0,(b[X>>1]&1)==0):0){p=c[j>>2]|0;x:do if(!p){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](40)|0;fa=300;break}j=Wa[c[29356>>2]&127](40)|0;if((c[14985]|0)>>>0<40)c[14985]=40;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){V=c[14978]|0;U=Tv(l|0,m|0,j|0,((j|0)<0)<<31>>31|0)|0;T=L()|0;c[14768]=((T|0)<0|(T|0)==0&U>>>0<=V>>>0)&1}l=Wa[c[29340>>2]&127](j)|0;if(!l){j=0;m=0;n=0;break w}j=Wa[c[29352>>2]&127](l)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0<=(c[14987]|0)>>>0){o=l;break}c[14987]=j;o=l}else{if(c[p+272>>2]|0){if(a[p+81>>0]|0){j=0;m=0;n=0;break w}}else{do if((e[p+276>>1]|0)>=40){l=p+300|0;j=c[l>>2]|0;if(j|0){c[l>>2]=c[j>>2];fa=p+284|0;c[fa>>2]=(c[fa>>2]|0)+1;fa=300;break x}l=p+296|0;j=c[l>>2]|0;if(!j){j=p+292|0;break}else{c[l>>2]=c[j>>2];fa=p+284|0;c[fa>>2]=(c[fa>>2]|0)+1;fa=300;break x}}else j=p+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(p,40,0)|0;fa=300}while(0);if((fa|0)==300)if(!j){j=0;m=0;n=0;break}else o=j;j=o;l=j+40|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(l|0));n=o+8|0;b[n>>1]=1;c[o+32>>2]=p;c[o>>2]=c[W>>2];c[o+4>>2]=c[W+4>>2];c[o+8>>2]=c[W+8>>2];c[o+12>>2]=c[W+12>>2];c[o+16>>2]=c[W+16>>2];j=b[n>>1]&-1025;b[n>>1]=j;j=j&65535;y:do if(j&18|0){if(b[X>>1]&2048)break;l=(j|4096)&65535;b[n>>1]=l;do if(j&16384){m=o+12|0;j=(c[o>>2]|0)+(c[m>>2]|0)|0;if((j|0)<1)if(!(l&16)){fa=309;break}else j=1;if(Eg(o,j,1)|0)break y;gw((c[o+16>>2]|0)+(c[m>>2]|0)|0,0,c[o>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+(c[o>>2]|0);j=b[n>>1]&-16897;b[n>>1]=j;if(!(c[o+24>>2]|0)){fa=309;break}if((c[o+16>>2]|0)!=(c[o+20>>2]|0))fa=309}else fa=309;while(0);if((fa|0)==309){if(Jg(o)|0)break;j=b[n>>1]|0}b[n>>1]=j&-4097}while(0);j=b[n>>1]|0;if((j&15|16)<<16>>16!=18){j=0;m=o;n=o;break}do if((j&514)==514){if((a[o+10>>0]|0)!=1)break;j=c[o+16>>2]|0;m=o;n=o;break w}while(0);if(j&1){j=0;m=o;n=o;break}j=Gg(o,1)|0;m=o;n=o}else{j=0;m=0;n=0}while(0);l=c[la+8>>2]|0;if(q<<16>>16>31){s=l+208|0;c[s>>2]=c[s>>2]|-2147483648;s=m;t=n;break}else{s=l+208|0;c[s>>2]=c[s>>2]|1<>24!=110)break u;s=0;j=c[z+8>>2]|0;t=0}while(0);do if((j|0)!=0?(Y=a[j>>0]|0,Y<<24>>24!=w<<24>>24&((Y<<24>>24==v<<24>>24|(Y<<24>>24==0?1:Y<<24>>24==u<<24>>24))^1)):0){l=0;n=Y;do{m=l+1|0;if(n<<24>>24==k<<24>>24)l=(a[j+m>>0]|0)==0?m:l+2|0;else l=m;n=a[j+l>>0]|0;m=n<<24>>24==u<<24>>24}while(n<<24>>24!=w<<24>>24&((n<<24>>24==v<<24>>24|(n<<24>>24==0|m))^1));if(((l|0)!=0?(a[j+(l+-1)>>0]|0)!=-1:0)?!((l|0)<2?Y<<24>>24==k<<24>>24:0):0){if(m)q=(a[j+(l+1)>>0]|0)==0&1;else q=0;c[da>>2]=j;r=(Eu(j)|0)&1073741823;c[da+4>>2]=r;r=oj(A,110,da,0)|0;z:do if(r|0){p=c[r+8>>2]|0;a[p+l>>0]=0;if((l|0)>0){o=k&255;m=0;n=0;while(1){Y=n+((a[p+n>>0]|0)==(o|0)&1)|0;k=m+1|0;a[p+m>>0]=a[p+Y>>0]|0;n=Y+1|0;if((n|0)>=(l|0))break;else m=k}}else k=0;a[p+k>>0]=0;Y=a[p>>0]|0;if(!(Y<<24>>24==45|((Y&255)+-48|0)>>>0<10)?!((k|0)==1&Y<<24>>24==47):0)break;do if((a[y>>0]|0)==-94){if((Xj(y)|0)<<24>>24!=66)break;if(!(c[(c[y+44>>2]|0)+56>>2]|0))break z}while(0);ni(A,r);if(!s)break u;if(!((b[s+8>>1]&9216)==0?!(c[s+24>>2]|0):0))Cg(s);j=c[s+32>>2]|0;do if(j|0){if(c[j+480>>2]|0){Xd(j,t);break u}k=t;if((c[j+304>>2]|0)>>>0>k>>>0)break;if((c[j+308>>2]|0)>>>0<=k>>>0)break;_=j+300|0;c[t>>2]=c[_>>2];c[_>>2]=t;break u}while(0);if(!t)break u;if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break u}else{_=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-_;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break u}}while(0);if(!x){n=q;break}m=c[la+8>>2]|0;k=b[z+32>>1]|0;if(k<<16>>16>31)k=-2147483648;else k=1<<(k<<16>>16)+-1;Y=m+208|0;c[Y>>2]=c[Y>>2]|k;if(!q){n=0;break}if(!(a[(c[z+8>>2]|0)+1>>0]|0)){n=q;break}n=la+19|0;k=a[n>>0]|0;if(!(k<<24>>24)){Y=la+44|0;l=(c[Y>>2]|0)+1|0;c[Y>>2]=l}else{l=k+-1<<24>>24;a[n>>0]=l;l=c[la+148+((l&255)<<2)>>2]|0}Jj(la,z,l)|0;if(!(a[(c[m>>2]|0)+81>>0]|0))k=(c[m+104>>2]|0)+(((c[m+108>>2]|0)+-1|0)*20|0)|0;else k=59308;c[k+12>>2]=0;if(!l){n=q;break}k=a[n>>0]|0;if((k&255)>=8){n=q;break}a[n>>0]=k+1<<24>>24;c[la+148+((k&255)<<2)>>2]=l;n=q}else{n=0;r=0;j=0}}else{n=0;r=0;j=0}while(0);l=(j|0)==0;A:do if(s|0){if(!((b[s+8>>1]&9216)==0?!(c[s+24>>2]|0):0))Cg(s);j=c[s+32>>2]|0;do if(j|0){if(c[j+480>>2]|0){Xd(j,t);break A}k=t;if((c[j+304>>2]|0)>>>0>k>>>0)break;if((c[j+308>>2]|0)>>>0<=k>>>0)break;Y=j+300|0;c[t>>2]=c[Y>>2];c[Y>>2]=t;break A}while(0);if(t|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{Y=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-Y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}while(0);if(!l){p=c[(c[Z>>2]|0)+24>>2]|0;if(!r)q=0;else q=dk(ha,r,0,0)|0;o=(B|0)!=0;do if(!o){if(a[(c[la>>2]|0)+81>>0]|0)break;l=i+10|0;b[l>>1]=b[l>>1]|1024;l=r+8|0;j=c[l>>2]|0;i=a[j>>0]|0;if(!(i<<24>>24))break;m=q+8|0;k=0;do{Z=i&255;a[j>>0]=i&~(a[880+Z>>0]&32);a[(c[m>>2]|0)+k>>0]=a[208+Z>>0]|0;k=k+1|0;j=(c[l>>2]|0)+k|0;i=a[j>>0]|0}while(i<<24>>24!=0)}while(0);if(!(a[_>>0]|0)){j=c[q+8>>2]|0;if(!j)i=0;else i=(Eu(j)|0)&1073741823;k=j+(i+-1)|0;i=a[k>>0]|0;if(o){j=i;i=n}else{j=a[208+(i&255)>>0]|0;i=i<<24>>24==64?0:n}a[k>>0]=(j&255)+1;n=i}l=o?34049:43602;k=(p|0)==0;if(k)j=0;else j=dk(ha,p,0,0)|0;c[da>>2]=l;c[da+4>>2]=6;i=oj(c[la>>2]|0,106,da,0)|0;if(!i)i=j;else{c[i+12>>2]=j;_=i+4|0;c[_>>2]=c[_>>2]|4352}i=ej(la,57,i,r)|0;if(i|0){_=i+4|0;c[_>>2]=c[_>>2]|c[ka>>2]&1;b[i+36>>1]=b[oa+36>>1]|0}m=Ml(g,i,259)|0;Nl(f,g,m);if(k)j=0;else j=dk(ha,p,0,0)|0;c[da>>2]=l;c[da+4>>2]=6;i=oj(c[la>>2]|0,106,da,0)|0;if(!i)i=j;else{c[i+12>>2]=j;_=i+4|0;c[_>>2]=c[_>>2]|4352}i=ej(la,56,i,q)|0;if(i|0){_=i+4|0;c[_>>2]=c[_>>2]|c[ka>>2]&1;b[i+36>>1]=b[oa+36>>1]|0}j=Ml(g,i,259)|0;Nl(f,g,j);k=c[na>>2]|0;i=k+(h*48|0)|0;if(!n)break;c[k+(m*48|0)+16>>2]=h;Y=k+(h*48|0)+8|0;b[k+(m*48|0)+8>>1]=b[Y>>1]|0;_=k+(h*48|0)+14|0;Z=a[_>>0]|0;c[k+(j*48|0)+16>>2]=h;b[k+(j*48|0)+8>>1]=b[Y>>1]|0;a[_>>0]=Z+2<<24>>24}}while(0);if((a[C>>0]|0)==44){j=a[oa>>0]|0;B:do switch(j<<24>>24){case -95:{j=c[oa+20>>2]|0;if((j|0)!=0?(c[j>>2]|0)==2:0){o=j+4|0;p=j+24|0;k=c[p>>2]|0;C:do if(((a[k>>0]|0)==-94?c[(c[k+44>>2]|0)+56>>2]|0:0)?(aa=c[oa+8>>2]|0,_=a[aa>>0]|0,$=_&255,_<<24>>24):0){j=(d[208+$>>0]|0)+-109|0;if(!j){l=38025;m=aa;do{m=m+1|0;l=l+1|0;_=a[m>>0]|0;j=(d[208+(_&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(_<<24>>24==0|(j|0)!=0))}D:do if(j){n=$|32;switch((n&255)<<24>>24){case 103:{m=43609;j=aa;do{j=j+1|0;m=m+1|0;fa=a[j>>0]|0;l=(d[208+(fa&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(fa<<24>>24==0|(l|0)!=0));if(!l){j=1;break D}else break C}case 108:{fa=425;break}case 114:break;default:break C}if((fa|0)==425){j=43614;l=aa;do{l=l+1|0;j=j+1|0;fa=a[l>>0]|0;m=(d[208+(fa&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(fa<<24>>24==0|(m|0)!=0));if(!m){j=2;break}if((n|0)!=114)break C}m=43619;j=aa;do{j=j+1|0;m=m+1|0;fa=a[j>>0]|0;l=(d[208+(fa&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(fa<<24>>24==0|(l|0)!=0));if(!l)j=3;else break C}else j=0;while(0);j=a[18144+(j<<3)+4>>0]|0;m=1;n=c[o>>2]|0;fa=453;break B}while(0);k=c[o>>2]|0;if((a[k>>0]|0)==-94?(ba=c[k+44>>2]|0,(c[ba+56>>2]|0)!=0):0){j=ba+64|0;while(1){j=c[j>>2]|0;if((c[j>>2]|0)==(ha|0))break;else j=j+24|0}j=c[j+8>>2]|0;l=c[(c[j>>2]|0)+72>>2]|0;if(l|0?(ca=_a[l&127](j,2,c[oa+8>>2]|0,da,ea)|0,(ca|0)>149):0){j=ca&255;m=1;n=c[p>>2]|0;fa=453;break B}fa=465}else fa=465}else fa=465;break}case 51:case -96:case 52:{k=c[pa>>2]|0;l=c[oa+16>>2]|0;if((a[k>>0]|0)==-94)m=(c[(c[k+44>>2]|0)+56>>2]|0)!=0&1;else m=0;if(l)if((a[l>>0]|0)==-94){fa=(c[(c[l+44>>2]|0)+56>>2]|0)==0;n=fa?l:k;k=fa?k:l;m=m+((fa^1)&1)|0}else n=l;else n=0;switch(j<<24>>24){case 52:{j=68;break}case -96:{j=69;break}case 51:{j=70;break}default:j=0}if((m|0)>0)fa=453;else fa=465;break}default:{}}while(0);if((fa|0)==453)while(1){u=m;m=m+-1|0;l=n;o=(n|0)==0;if(o){s=0;t=0}else{s=Pl(ga,l)|0;t=L()|0}r=k;if(!k){p=0;q=0}else{p=Pl(ga,r)|0;q=L()|0}if((p&s|0)==0&(q&t|0)==0){if(o)i=0;else i=dk(ha,l,0,0)|0;i=ej(la,46,0,i)|0;if((i|0)!=0&(c[ka>>2]&1|0)!=0){fa=i+4|0;c[fa>>2]=c[fa>>2]|1}fa=Ml(g,i,3)|0;ca=c[na>>2]|0;i=ca+(fa*48|0)+32|0;c[i>>2]=s;c[i+4>>2]=t;c[ca+(fa*48|0)+20>>2]=c[r+28>>2];c[ca+(fa*48|0)+28>>2]=b[r+32>>1];b[ca+(fa*48|0)+12>>1]=64;a[ca+(fa*48|0)+15>>0]=j;i=c[na>>2]|0;c[i+(fa*48|0)+16>>2]=h;b[i+(fa*48|0)+8>>1]=b[i+(h*48|0)+8>>1]|0;da=i+(h*48|0)+14|0;a[da>>0]=(a[da>>0]|0)+1<<24>>24;da=i+(h*48|0)+10|0;b[da>>1]=b[da>>1]|8;da=i+(h*48|0)+40|0;ea=c[da+4>>2]|0;fa=ca+(fa*48|0)+40|0;c[fa>>2]=c[da>>2];c[fa+4>>2]=ea;i=i+(h*48|0)|0}if((u|0)<=1){fa=465;break}else{fa=n;n=k;k=fa}}if((fa|0)==465){if((a[C>>0]|0)!=44)break;j=a[oa>>0]|0}switch(j<<24>>24){case 45:case 53:{m=c[pa>>2]|0;l=a[m>>0]|0;if(l<<24>>24==-88)j=a[m+38>>0]|0;else j=l;switch(j<<24>>24){case -87:{j=m+20|0;fa=473;break}case -125:{j=c[m+20>>2]|0;fa=473;break}default:{}}do if((fa|0)==473){q=c[c[j>>2]>>2]|0;if((q|0)>1){r=oa+16|0;k=c[r>>2]|0;j=a[k>>0]|0;if(j<<24>>24==-88)j=a[k+38>>0]|0;switch(j<<24>>24){case -87:{j=k+20|0;fa=479;break}case -125:{j=c[k+20>>2]|0;fa=479;break}default:j=1}if((fa|0)==479)j=c[c[j>>2]>>2]|0;if((j|0)==(q|0)){if(c[m+4>>2]&2048|0?c[k+4>>2]&2048|0:0)break;o=la+272|0;p=oa+36|0;n=0;j=l;i=m;while(1){switch(j<<24>>24){case -125:{j=ej(la,170,0,0)|0;if(!j)j=0;else{b[j+32>>1]=n;c[j+12>>2]=i}break}case -87:{i=c[(c[i+20>>2]|0)+4+(n*20|0)>>2]|0;if(!i){k=0;j=0;fa=489}else fa=488;break}default:fa=488}if((fa|0)==488){k=i;j=dk(c[la>>2]|0,i,0,0)|0;fa=489}E:do if((fa|0)==489){fa=0;i=c[o>>2]|0;if(i){while(1){if((c[i>>2]|0)==(k|0))break;i=c[i+12>>2]|0;if(!i)break E}c[i>>2]=j}}while(0);i=c[r>>2]|0;switch(a[i>>0]|0){case -125:{k=ej(la,170,0,0)|0;if(!k)i=0;else{b[k+32>>1]=n;c[k+12>>2]=i;i=k}break}case -87:{i=c[(c[i+20>>2]|0)+4+(n*20|0)>>2]|0;if(!i){l=0;i=0;fa=499}else fa=498;break}default:fa=498}if((fa|0)==498){l=i;i=dk(c[la>>2]|0,i,0,0)|0;fa=499}F:do if((fa|0)==499){fa=0;k=c[o>>2]|0;if(k){while(1){if((c[k>>2]|0)==(l|0))break;k=c[k+12>>2]|0;if(!k)break F}c[k>>2]=i}}while(0);i=ej(la,d[oa>>0]|0,j,i)|0;if(i|0){ha=i+4|0;c[ha>>2]=c[ha>>2]|c[ka>>2]&1;b[i+36>>1]=b[p>>1]|0}Nl(f,g,Ml(g,i,1)|0);i=n+1|0;if((i|0)==(q|0))break;ha=c[pa>>2]|0;n=i;j=a[ha>>0]|0;i=ha}la=a[C>>0]|0;i=c[na>>2]|0;ka=i+(h*48|0)+10|0;b[ka>>1]=b[ka>>1]|6;b[i+(h*48|0)+12>>1]=0;if(la<<24>>24==44)i=i+(h*48|0)|0;else break t}}}while(0);j=a[oa>>0]|0;break}default:{}}if(((j<<24>>24==49?(c[i+24>>2]|0)==0:0)?(ma=c[pa>>2]|0,(a[ma>>0]|0)==-87):0)?(c[(c[oa+20>>2]|0)+52>>2]|0)==0:0){k=0;i=-87;j=ma;while(1){if(i<<24>>24==-88)i=a[j+38>>0]|0;switch(i<<24>>24){case -87:{i=j+20|0;fa=520;break}case -125:{i=c[j+20>>2]|0;fa=520;break}default:i=1}if((fa|0)==520){fa=0;i=c[c[i>>2]>>2]|0}if((k|0)>=(i|0))break t;ma=Ml(g,oa,2)|0;i=k+1|0;c[(c[na>>2]|0)+(ma*48|0)+24>>2]=i;Nl(f,g,ma);j=c[na>>2]|0;c[j+(ma*48|0)+16>>2]=h;b[j+(ma*48|0)+8>>1]=b[j+(h*48|0)+8>>1]|0;j=j+(h*48|0)+14|0;a[j>>0]=(a[j>>0]|0)+1<<24>>24;j=c[pa>>2]|0;k=i;i=a[j>>0]|0}}}}while(0);h=(c[na>>2]|0)+(h*48|0)+32|0;oa=h;pa=c[oa+4>>2]|ia;c[h>>2]=c[oa>>2]|ja;c[h+4>>2]=pa;Ra=qa;return}function Ol(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;if(!d){r=0;s=0;K(r|0);return s|0}o=d;d=0;e=0;do{n=c[o+32>>2]|0;l=c[o>>2]|0;if((l|0)!=0?(s=c[l>>2]|0,(s|0)>0):0){k=0;j=s;f=0;g=0;do{h=c[l+4+(k*20|0)>>2]|0;if(!h){h=0;i=0}else{h=Pl(b,h)|0;i=L()|0;j=c[l>>2]|0}f=h|f;g=i|g;k=k+1|0}while((k|0)<(j|0))}else{f=0;g=0}l=f|d;k=g|e;j=c[o+40>>2]|0;if((j|0)!=0?(q=c[j>>2]|0,(q|0)>0):0){i=0;h=q;d=0;e=0;do{f=c[j+4+(i*20|0)>>2]|0;if(!f){f=0;g=0}else{f=Pl(b,f)|0;g=L()|0;h=c[j>>2]|0}d=f|d;e=g|e;i=i+1|0}while((i|0)<(h|0))}else{d=0;e=0}l=l|d;k=k|e;j=c[o+48>>2]|0;if((j|0)!=0?(r=c[j>>2]|0,(r|0)>0):0){i=0;g=r;h=0;e=0;while(1){d=c[j+4+(i*20|0)>>2]|0;if(!d){d=0;f=0}else{d=Pl(b,d)|0;f=L()|0;g=c[j>>2]|0}d=d|h;e=f|e;i=i+1|0;if((i|0)>=(g|0)){h=d;i=e;break}else h=d}}else{h=0;i=0}d=c[o+36>>2]|0;if(!d){e=0;g=0}else{e=Pl(b,d)|0;g=L()|0}d=c[o+44>>2]|0;if(!d){d=0;f=0}else{d=Pl(b,d)|0;f=L()|0}d=l|h|e|d;e=k|i|g|f;if((n|0)!=0?(c[n>>2]|0)>0:0){m=0;do{h=Ol(b,c[n+8+(m*72|0)+20>>2]|0)|0;g=L()|0|e;e=c[n+8+(m*72|0)+44>>2]|0;if(!e){e=0;f=0}else{e=Pl(b,e)|0;f=L()|0}d=h|d|e;e=g|f;if(a[n+8+(m*72|0)+37>>0]&4){l=c[n+8+(m*72|0)+64>>2]|0;if((l|0)!=0?(p=c[l>>2]|0,(p|0)>0):0){k=0;f=0;g=0;i=p;do{h=c[l+4+(k*20|0)>>2]|0;if(!h){h=0;j=0}else{h=Pl(b,h)|0;j=L()|0;i=c[l>>2]|0}f=h|f;g=j|g;k=k+1|0}while((k|0)<(i|0))}else{f=0;g=0}d=f|d;e=g|e}m=m+1|0}while((m|0)<(c[n>>2]|0))}o=c[o+52>>2]|0}while((o|0)!=0);K(e|0);return d|0}function Pl(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=a[d>>0]|0;j=d+4|0;f=c[j>>2]|0;if(e<<24>>24==-94&(f&8|0)==0){g=c[d+28>>2]|0;f=c[b+4>>2]|0;if((f|0)<=0){o=0;b=0;K(o|0);return b|0}e=0;while(1){if((c[b+8+(e<<2)>>2]|0)==(g|0))break;e=e+1|0;if((e|0)>=(f|0)){e=0;f=0;i=45;break}}if((i|0)==45){K(e|0);return f|0}b=cw(1,0,e|0)|0;o=L()|0;K(o|0);return b|0}if(f&8404992|0){o=0;b=0;K(o|0);return b|0}a:do if(e<<24>>24==-85?(g=c[d+28>>2]|0,h=c[b+4>>2]|0,(h|0)>0):0){e=0;while(1){if((c[b+8+(e<<2)>>2]|0)==(g|0))break;e=e+1|0;if((e|0)>=(h|0)){f=0;g=0;break a}}f=cw(1,0,e|0)|0;g=L()|0}else{f=0;g=0}while(0);e=c[d+12>>2]|0;if(e){n=Pl(b,e)|0;f=n|f;g=L()|0|g}e=c[d+16>>2]|0;do if(!e){e=c[j>>2]|0;if(e&2048|0){if(e&32|0)c[b>>2]=1;n=Ol(b,c[d+20>>2]|0)|0;f=n|f;g=L()|0|g;break}n=c[d+20>>2]|0;if(n){e=c[n>>2]|0;if((e|0)>0){m=0;k=0;h=0;while(1){i=c[n+4+(m*20|0)>>2]|0;if(!i){i=0;j=0}else{i=Pl(b,i)|0;j=L()|0;e=c[n>>2]|0}i=i|k;h=j|h;m=m+1|0;if((m|0)>=(e|0)){e=i;break}else k=i}}else{e=0;h=0}f=e|f;g=h|g}}else{n=Pl(b,e)|0;f=n|f;g=L()|0|g}while(0);if((a[d>>0]|0)!=-95){o=g;b=f;K(o|0);return b|0}d=d+44|0;e=c[d>>2]|0;if(!e){o=g;b=f;K(o|0);return b|0}n=c[e+8>>2]|0;if((n|0)!=0?(l=c[n>>2]|0,(l|0)>0):0){m=0;h=0;i=0;while(1){e=c[n+4+(m*20|0)>>2]|0;if(!e){j=0;k=0;e=l}else{j=Pl(b,e)|0;k=L()|0;e=c[n>>2]|0}h=j|h;i=k|i;m=m+1|0;if((m|0)>=(e|0))break;else l=e}e=c[d>>2]|0}else{h=0;i=0}m=h|f;l=i|g;k=c[e+12>>2]|0;if((k|0)!=0?(o=c[k>>2]|0,(o|0)>0):0){j=0;f=0;e=0;h=o;do{g=c[k+4+(j*20|0)>>2]|0;if(!g){g=0;i=0}else{g=Pl(b,g)|0;i=L()|0;h=c[k>>2]|0}f=g|f;e=i|e;j=j+1|0}while((j|0)<(h|0))}else{f=0;e=0}o=l|e;b=m|f;K(o|0);return b|0}function Ql(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,l=0,m=0,n=0,o=0,p=0;if(e>>>0>0|(e|0)==0&d>>>0>1){h=0;do{h=h+1|0;m=d;d=bw(d|0,e|0,1)|0;l=e;e=L()|0}while(l>>>0>0|(l|0)==0&m>>>0>3)}else h=0;m=c[a+8+(h*72|0)+40>>2]|0;h=c[(c[a+8+(h*72|0)+16>>2]|0)+8>>2]|0;if(!h){p=0;return p|0}l=(g|0)==0;a:while(1){j=h+40|0;b:do if(c[j>>2]|0?(n=h+50|0,o=b[n>>1]|0,o<<16>>16):0){k=h+4|0;if(l){a=0;d=o;while(1){if((b[(c[k>>2]|0)+(a<<1)>>1]|0)==-2){d=c[(c[j>>2]|0)+4+(a*20|0)>>2]|0;c:do if(!d)d=0;else while(1){e=c[d+4>>2]|0;if(!(e&4096))break c;if(!(e&262144))d=d+12|0;else d=(c[d+20>>2]|0)+4|0;d=c[d>>2]|0;if(!d){d=0;break}}while(0);if(!(bk(0,0,d,m)|0))break a;d=b[n>>1]|0}a=a+1|0;if(a>>>0>=(d&65535)>>>0)break b}}i=0;d=o;do{if((b[(c[k>>2]|0)+(i<<1)>>1]|0)==-2){d=c[(c[j>>2]|0)+4+(i*20|0)>>2]|0;e=g;while(1){a=c[e+4>>2]|0;if(!(a&4096))break;if(!(a&262144))e=e+12|0;else e=(c[e+20>>2]|0)+4|0;e=c[e>>2]|0;if(!e){e=0;break}}d:do if(!d)d=0;else while(1){a=c[d+4>>2]|0;if(!(a&4096))break d;if(!(a&262144))d=d+12|0;else d=(c[d+20>>2]|0)+4|0;d=c[d>>2]|0;if(!d){d=0;break}}while(0);if(!(bk(0,e,d,m)|0))break a;d=b[n>>1]|0}i=i+1|0}while(i>>>0<(d&65535)>>>0)}while(0);h=c[h+20>>2]|0;if(!h){h=0;p=41;break}}if((p|0)==41)return h|0;c[f>>2]=m;c[f+4>>2]=-2;p=1;return p|0}function Rl(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=b[f+12>>1]|0;i=b[g+12>>1]|0;j=i|h;if((h&62)==0|(i&62)==0)return;i=j&65535;if(!((i&26|0)==(i|0)|(i&38|0)==(i|0)))return;if(bk(0,c[(c[f>>2]|0)+12>>2]|0,c[(c[g>>2]|0)+12>>2]|0,-1)|0)return;if(bk(0,c[(c[f>>2]|0)+16>>2]|0,c[(c[g>>2]|0)+16>>2]|0,-1)|0)return;f=c[f>>2]|0;if(!f)return;h=dk(c[c[c[e>>2]>>2]>>2]|0,f,0,0)|0;if(!h)return;g=((i+65535&i|0)==0?j:(i&24|0)==0?32:8)&65535;f=53;while(1)if((2<>0]=f;Nl(d,e,Ml(e,h,3)|0);return}function Sl(b,d){b=b|0;d=d|0;if((a[d>>0]|0)!=-95){d=0;return d|0}if(c[d+4>>2]&524288|0){d=0;return d|0}a[b+20>>0]=0;d=2;return d|0}function Tl(e){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,D=0,E=0;t=e+24|0;x=e+4|0;y=e+18|0;z=e+12|0;A=e+20|0;C=e+17|0;D=e+8|0;u=e+16|0;v=e+28|0;w=e+72|0;g=c[t>>2]|0;h=c[x>>2]|0;f=a[y>>0]|0;a:while(1){q=(f&255)+-1|0;s=b[e+72+(q<<1)>>1]|0;q=c[e+28+(q<<2)>>2]|0;r=s<<16>>16;s=s<<16>>16==-2;f=h;while(1){p=f+12|0;if((g|0)<(c[p>>2]|0)){o=(c[f+20>>2]|0)+(g*48|0)|0;while(1){do if((c[o+20>>2]|0)==(q|0)?(c[o+28>>2]|0)==(r|0):0){if(s){i=c[(c[o>>2]|0)+12>>2]|0;h=c[z>>2]|0;b:do if(!i)i=0;else while(1){j=c[i+4>>2]|0;if(!(j&4096))break b;if(!(j&262144))i=i+12|0;else i=(c[i+20>>2]|0)+4|0;i=c[i>>2]|0;if(!i){i=0;break}}while(0);c:do if(!h)h=0;else while(1){j=c[h+4>>2]|0;if(!(j&4096))break c;if(!(j&262144))h=h+12|0;else h=(c[h+20>>2]|0)+4|0;h=c[h>>2]|0;if(!h){h=0;break}}while(0);if(bk(0,i,h,q)|0)break}if((d[y>>0]|0)>=2?c[(c[o>>2]|0)+4>>2]&1|0:0)break;n=o+12|0;h=b[n>>1]|0;if((h&2048)!=0?(B=a[C>>0]|0,(B&255)<11):0){i=c[(c[o>>2]|0)+16>>2]|0;j=c[i+4>>2]|0;if(j&4096)do{if(!(j&262144))i=i+12|0;else i=(c[i+20>>2]|0)+4|0;i=c[i>>2]|0;j=c[i+4>>2]|0}while((j&4096|0)!=0);if((a[i>>0]|0)==-94){m=B&255;d:do if(!(B<<24>>24))j=0;else{l=c[i+28>>2]|0;k=i+32|0;j=0;do{if((c[e+28+(j<<2)>>2]|0)==(l|0)?(b[e+72+(j<<1)>>1]|0)==(b[k>>1]|0):0)break d;j=j+1|0}while(j>>>0>>0)}while(0);if((j|0)==(m|0)){c[e+28+(m<<2)>>2]=c[i+28>>2];b[e+72+(m<<1)>>1]=b[i+32>>1]|0;a[C>>0]=B+1<<24>>24;h=b[n>>1]|0}}}i=h&65535;if(c[A>>2]&i|0){if((i&256|0)==0&(c[D>>2]|0)!=0){k=c[c[f>>2]>>2]|0;h=c[o>>2]|0;if(!(Vl(h,a[u>>0]|0)|0))break;i=c[h+12>>2]|0;j=c[h+16>>2]|0;do if(!(c[i+4>>2]&256)){if(j|0?c[j+4>>2]&256|0:0){h=Yi(k,j)|0;E=51;break}h=Yi(k,i)|0;if(!h){h=Yi(k,j)|0;E=51}}else{h=Yi(k,i)|0;E=51}while(0);if((E|0)==51){E=0;if(!h)h=c[(c[k>>2]|0)+8>>2]|0}i=c[h>>2]|0;j=c[D>>2]|0;m=a[i>>0]|0;h=(d[208+(m&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0;if(!(m<<24>>24==0|(h|0)!=0))do{i=i+1|0;j=j+1|0;m=a[i>>0]|0;h=(d[208+(m&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(m<<24>>24==0|(h|0)!=0));if(h|0)break;h=b[n>>1]|0}if(!(h&130))break a;h=c[(c[o>>2]|0)+16>>2]|0;if((a[h>>0]|0)!=-94)break a;if((c[h+28>>2]|0)!=(c[v>>2]|0))break a;if((b[h+32>>1]|0)!=(b[w>>1]|0))break a}}while(0);g=g+1|0;if((g|0)<(c[p>>2]|0))o=o+48|0;else break}}f=c[f+4>>2]|0;if(!f)break;else g=0}f=a[y>>0]|0;if((f&255)>=(d[C>>0]|0)){f=0;E=67;break}h=c[e>>2]|0;f=f+1<<24>>24;a[y>>0]=f;g=0}if((E|0)==67)return f|0;c[x>>2]=f;c[t>>2]=g+1;E=o;return E|0}function Ul(b){b=b|0;var d=0;d=Xj(c[b+12>>2]|0)|0;a[b+16>>0]=d;return Tl(b)|0}function Vl(a,b){a=a|0;b=b|0;var d=0,e=0;e=Xj(c[a+12>>2]|0)|0;d=c[a+16>>2]|0;do if(!d){if(!(c[a+4>>2]&2048)){a=e<<24>>24==0?65:e;break}a=Xj(c[(c[c[a+20>>2]>>2]|0)+4>>2]|0)|0;if(e<<24>>24==0|a<<24>>24==0){a=(a|e)<<24>>24==0?65:(a&255)+(e&255)&255;break}else{a=e<<24>>24>66|a<<24>>24>66?67:65;break}}else{a=Xj(d)|0;if(e<<24>>24==0|a<<24>>24==0){a=(a|e)<<24>>24==0?65:(a&255)+(e&255)&255;break}else{a=e<<24>>24>66|a<<24>>24>66?67:65;break}}while(0);switch(a<<24>>24|0){case 66:{b=b<<24>>24==66;b=b&1;return b|0}case 65:{b=1;b=b&1;return b|0}default:{b=b<<24>>24>66;b=b&1;return b|0}}return 0}function Wl(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var 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,J=0,K=0;K=Ra;Ra=Ra+16|0;p=K;H=K+4|0;s=c[f>>2]|0;J=c[s>>2]|0;r=c[f+4>>2]|0;F=c[f+12>>2]|0;s=c[s+4>>2]|0;x=d[F+16>>0]|0;B=c[f+8>>2]|0;G=r+20|0;q=r+12|0;n=c[q>>2]|0;if((n|0)>0){o=c[s+8+(x*72|0)+40>>2]|0;l=0;k=0;m=c[G>>2]|0;while(1){if((c[m+20>>2]|0)==(o|0)?(E=m+32|0,(c[E>>2]&i|0)==0?(c[E+4>>2]&j|0)==0:0):0)k=k+((b[m+12>>1]&-2049)<<16>>16!=0&1)|0;l=l+1|0;if((l|0)==(n|0)){o=k;break}else m=m+48|0}}else o=0;if(!B)y=0;else{n=c[B>>2]|0;a:do if((n|0)>0){m=s+8+(x*72|0)+40|0;k=0;do{l=c[B+4+(k*20|0)>>2]|0;if((a[l>>0]|0)!=-94)break a;if((c[l+28>>2]|0)!=(c[m>>2]|0))break a;k=k+1|0}while((k|0)<(n|0))}else k=0;while(0);y=(k|0)==(n|0)?n:0}m=c[J>>2]|0;n=(o*20|0)+80+(y<<3)|0;b:do if(!m){E=Sv(n|0,0,-1,-1)|0;C=L()|0;if(!(C>>>0>0|(C|0)==0&E>>>0>2147483390)){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](n)|0;D=38;break}k=Wa[c[29356>>2]&127](n)|0;if((c[14985]|0)>>>0>>0)c[14985]=n;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){E=c[14978]|0;C=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;w=L()|0;c[14768]=((w|0)<0|(w|0)==0&C>>>0<=E>>>0)&1}l=Wa[c[29340>>2]&127](k)|0;if(l){k=Wa[c[29352>>2]&127](l)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;E=l}else E=l}else D=39}else D=39}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0){D=39;break}}else{do if(!(0<0|(0==0?(e[m+276>>1]|0)>>>0>>0:0))){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];D=m+284|0;c[D>>2]=(c[D>>2]|0)+1;D=38;break b}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];D=m+284|0;c[D>>2]=(c[D>>2]|0)+1;D=38;break b}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,n,0)|0;D=38}while(0);if((D|0)==38)if(!k)D=39;else E=k;if((D|0)==39){cd(J,34831,p);J=7;Ra=K;return J|0}gw(E|0,0,n|0)|0;v=E+80|0;w=v+(o*12|0)|0;c[E>>2]=o;c[E+8>>2]=y;C=E+4|0;c[C>>2]=v;c[E+12>>2]=w;c[E+16>>2]=w+(y<<3);c[E+72>>2]=r;c[E+76>>2]=J;t=c[q>>2]|0;if((t|0)>0){u=s+8+(x*72|0)+36|0;s=c[s+8+(x*72|0)+40>>2]|0;l=0;k=0;q=c[G>>2]|0;r=0;while(1){do if(((c[q+20>>2]|0)==(s|0)?(x=q+32|0,(c[x>>2]&i|0)==0?(c[x+4>>2]&j|0)==0:0):0)?(z=b[q+12>>1]|0,A=z&65535,(A&63487|0)!=0):0){if(a[u>>0]&8?!((A&384|0)==0?1:(c[(c[q>>2]|0)+4>>2]&1|0)!=0):0)break;c[v+(l*12|0)>>2]=c[q+28>>2];c[v+(l*12|0)+8>>2]=r;p=z&8191;p=p<<16>>16==1?2:p;m=p&65535;c:do if(p<<16>>16!=64){if(m&384|0){m=v+(l*12|0)+4|0;if(p<<16>>16==256){a[m>>0]=71;break}else{a[m>>0]=72;break}}o=v+(l*12|0)+4|0;a[o>>0]=p;if(m&60){n=c[(c[q>>2]|0)+16>>2]|0;m=a[n>>0]|0;if(m<<24>>24==-88)m=a[n+38>>0]|0;switch(m<<24>>24){case -87:{m=n+20|0;break}case -125:{m=c[n+20>>2]|0;break}default:break c}if((c[c[m>>2]>>2]|0)>=2){k=r>>>0<16?(1<>0]=8;break c}case 4:{a[o>>0]=32;break c}default:break c}}}}else a[v+(l*12|0)+4>>0]=a[q+15>>0]|0;while(0);l=l+1|0}while(0);r=r+1|0;if((r|0)==(t|0)){i=k;break}else q=q+48|0}}else i=0;if((y|0)<=0){if(!E){J=7;Ra=K;return J|0}}else{k=0;do{c[w+(k<<3)>>2]=b[(c[B+4+(k*20|0)>>2]|0)+32>>1];a[w+(k<<3)+4>>0]=a[B+4+(k*20|0)+12>>0]|0;k=k+1|0}while((k|0)!=(y|0))}b[F+18>>1]=0;c[F+36>>2]=1024;b[F+40>>1]=0;a[F+28>>0]=0;A=c[E>>2]|0;k=c[J>>2]|0;o=F+44|0;d:do if((A|0)>(e[o>>1]|0)){p=A+7&-8;n=p<<2;e:do if(c[k+272>>2]|0)if(!(a[k+81>>0]|0))D=80;else D=94;else{do if(!(0<0|(0==0?(e[k+276>>1]|0)>>>0>>0:0))){l=k+300|0;m=c[l>>2]|0;if(m|0){c[l>>2]=c[m>>2];D=k+284|0;c[D>>2]=(c[D>>2]|0)+1;D=81;break e}l=k+296|0;m=c[l>>2]|0;if(!m){l=k+292|0;break}else{c[l>>2]=c[m>>2];D=k+284|0;c[D>>2]=(c[D>>2]|0)+1;D=81;break e}}else l=k+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;D=80}while(0);if((D|0)==80){m=_d(k,n,0)|0;D=81}do if((D|0)==81){if(!m){k=c[J>>2]|0;if(!k)break;else{D=94;break}}l=F+48|0;ew(m|0,c[l>>2]|0,e[o>>1]<<2|0)|0;n=c[l>>2]|0;do if((n|0)!=(F+56|0)){if(c[k+480>>2]|0){Xd(k,n);break}B=n;if((c[k+304>>2]|0)>>>0<=B>>>0?(c[k+308>>2]|0)>>>0>B>>>0:0){B=k+300|0;c[n>>2]=c[B>>2];c[B>>2]=n;break}if(n|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{B=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-B;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);c[l>>2]=m;b[o>>1]=p;break d}while(0);if((D|0)==94){if(c[k+480>>2]|0){Xd(k,E);J=7;Ra=K;return J|0}J=E;if((c[k+304>>2]|0)>>>0<=J>>>0?(c[k+308>>2]|0)>>>0>J>>>0:0){J=k+300|0;c[E>>2]=c[J>>2];c[J>>2]=E;J=7;Ra=K;return J|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](E);J=7;Ra=K;return J|0}else{J=Wa[c[29352>>2]&127](E)|0;c[14978]=(c[14978]|0)-J;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](E);J=7;Ra=K;return J|0}}while(0);l=Zl(f,g,h,-1,-1,0,E,i,H)|0;if(!l){z=F;w=~g;x=~h;y=c[z>>2]&w;z=c[z+4>>2]&x;k=(c[H>>2]|0)!=0;if((y|0)!=0|(z|0)!=0|k){if(k){l=Zl(f,g,h,-1,-1,1,E,i,H)|0;n=F;k=c[n>>2]&w;n=c[n+4>>2]&x;m=(k|0)==0&(n|0)==0&1;if(!l){v=k;D=106}else k=m}else{m=0;v=0;n=0;D=106}f:do if((D|0)==106){u=(A|0)>0;k=m;o=0;l=0;while(1){if(!u){l=0;break f}q=c[G>>2]|0;r=c[C>>2]|0;while(1){p=0;t=-1;s=-1;do{D=q+((c[r+(p*12|0)+8>>2]|0)*48|0)+32|0;j=c[D>>2]&w;D=c[D+4>>2]&x;B=(D>>>0>l>>>0|(D|0)==(l|0)&j>>>0>o>>>0)&(D>>>0>>0|(D|0)==(t|0)&j>>>0>>0);s=B?j:s;t=B?D:t;p=p+1|0}while((p|0)!=(A|0));if((s|0)==-1&(t|0)==-1){l=0;break f}if((s|0)==(y|0)&(t|0)==(z|0)|(s|0)==(v|0)&(t|0)==(n|0)){l=t;o=s}else break}l=Zl(f,g,h,s|g,t|h,0,E,i,H)|0;D=F;if((c[D>>2]|0)==(g|0)?(c[D+4>>2]|0)==(h|0):0){k=(c[H>>2]|0)==0?1:k;m=1}if(!l){o=s;l=t}else break}}while(0);if(!(m|l)){l=Zl(f,g,h,g,h,0,E,i,H)|0;k=(c[H>>2]|0)==0?1:k}if(!(k|l))l=Zl(f,g,h,g,h,1,E,i,H)|0}else l=0}do if(c[E+28>>2]|0?(I=c[E+24>>2]|0,I|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](I);break}else{H=Wa[c[29352>>2]&127](I)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](I);break}while(0);k=c[J>>2]|0;if(k|0){if(c[k+480>>2]|0){Xd(k,E);J=l;Ra=K;return J|0}J=E;if((c[k+304>>2]|0)>>>0<=J>>>0?(c[k+308>>2]|0)>>>0>J>>>0:0){J=k+300|0;c[E>>2]=c[J>>2];c[J>>2]=E;J=l;Ra=K;return J|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](E);J=l;Ra=K;return J|0}else{J=Wa[c[29352>>2]&127](E)|0;c[14978]=(c[14978]|0)-J;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](E);J=l;Ra=K;return J|0}return 0}function Xl(f,g,h){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,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,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;ja=Ra;Ra=Ra+128|0;ca=ja+80|0;fa=ja+72|0;k=ja;l=ja+112|0;m=ja+108|0;b[m>>1]=-1;ha=c[f+12>>2]|0;_=c[f>>2]|0;P=c[_+4>>2]|0;Q=d[ha+16>>0]|0;$=P+8+(Q*72|0)|0;O=P+8+(Q*72|0)+16|0;R=c[O>>2]|0;aa=c[f+4>>2]|0;ba=P+8+(Q*72|0)+68|0;i=c[ba>>2]|0;o=(i|0)==0;do if(o){if(c[R+36>>2]&32|0){k=c[R+8>>2]|0;break}i=k;j=i+72|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(j|0));b[k+50>>1]=1;b[k+52>>1]=1;c[k+4>>2]=m;c[k+8>>2]=l;a[k+54>>0]=5;c[k+12>>2]=R;b[k+48>>1]=b[R+46>>1]|0;Z=k+55|0;a[Z>>0]=3;a[Z+1>>0]=0;b[l>>1]=b[R+44>>1]|0;b[l+2>>1]=0;if(!(a[P+8+(Q*72|0)+37>>0]&1))c[k+20>>2]=c[(c[O>>2]|0)+8>>2]}else k=i;while(0);m=b[R+44>>1]|0;if(m<<16>>16<11)i=0;else{i=m<<16>>16;j=((i|0)<0)<<31>>31;if((m&65535)>255){l=40;do{l=(l&65535)+40|0;Z=i;i=bw(i|0,j|0,4)|0;Y=j;j=L()|0}while(Y>>>0>0|(Y|0)==0&Z>>>0>4095);l=l&65535}else l=40;if(j>>>0>0|(j|0)==0&i>>>0>15){do{l=(l&65535)+10&65535;Z=i;i=bw(i|0,j|0,1)|0;Y=j;j=L()|0}while(Y>>>0>0|(Y|0)==0&Z>>>0>31);j=l}else j=l;i=(j&65535)+65493+(e[3648+((i&7)<<1)>>1]|0)&65535}a:do if((((((c[f+16>>2]|0)==0?(b[_+44>>1]&32)==0:0)?!((0==0?(c[(c[c[_>>2]>>2]|0)+32>>2]&32768|0)==0:0)|o^1):0)?(n=a[P+8+(Q*72|0)+37>>0]|0,(n&1)==0):0)?(M=R+36|0,(n&40)==0&(c[M>>2]&32|0)==0):0)?(I=c[aa+20>>2]|0,Z=c[aa+12>>2]|0,N=I+(Z*48|0)|0,(Z|0)>0):0){A=ha+8|0;B=P+8+(Q*72|0)+40|0;C=P+8+(Q*72|0)+36|0;D=ha+24|0;E=ha+42|0;F=ha+32|0;G=ha+40|0;H=ha+48|0;x=(i&65535)+(m&65535)|0;s=x&65535;t=ha+18|0;u=R+12|0;v=ha+22|0;n=i<<16>>16;w=(x&65535)+65526|0;x=(x<<16>>16)+28|0;y=ha+20|0;z=ha+36|0;o=i<<16>>16<12;p=i<<16>>16>74;q=18112+(43-n)|0;r=18112+(n+-43)|0;if(i<<16>>16<43){m=i<<16>>16<-6?43:44;l=I;while(1){j=l+32|0;Z=j;Y=A;do if((((c[Y>>2]&c[Z>>2]|0)==0?(c[Y+4>>2]&c[Z+4>>2]|0)==0:0)?(c[l+20>>2]|0)==(c[B>>2]|0):0)?(J=e[l+12>>1]|0,(J&130|0)!=0):0){if(a[C>>0]&8?!((J&128|0)==0?1:(c[(c[l>>2]|0)+4>>2]&1|0)!=0):0){i=0;break}i=c[l+28>>2]|0;if((i|0)>=0?(Vl(c[l>>2]|0,a[(c[(c[O>>2]|0)+4>>2]|0)+(i<<4)+13>>0]|0)|0)!=0:0){b[D>>1]=1;b[E>>1]=0;c[F>>2]=0;b[G>>1]=1;c[c[H>>2]>>2]=l;b[t>>1]=s;if(!(c[u>>2]|0))i=(c[M>>2]&2|0)==0?x:w;else i=w;b[t>>1]=(i&32768|0)==0?i&65535:0;b[v>>1]=43;if(o)i=m;else i=(d[q>>0]|0)+43&65535;b[y>>1]=i;c[z>>2]=16384;Y=j;Z=c[Y+4>>2]|h;i=ha;c[i>>2]=c[Y>>2]|g;c[i+4>>2]=Z;i=_l(f,ha)|0}else i=0}else i=0;while(0);l=l+48|0;if(!(l>>>0>>0&(i|0)==0))break a}}m=i<<16>>16>92?i:n+1&65535;l=I;do{j=l+32|0;Z=j;Y=A;do if((((c[Y>>2]&c[Z>>2]|0)==0?(c[Y+4>>2]&c[Z+4>>2]|0)==0:0)?(c[l+20>>2]|0)==(c[B>>2]|0):0)?(K=e[l+12>>1]|0,(K&130|0)!=0):0){if(a[C>>0]&8?!((K&128|0)==0?1:(c[(c[l>>2]|0)+4>>2]&1|0)!=0):0){i=0;break}i=c[l+28>>2]|0;if((i|0)>=0?(Vl(c[l>>2]|0,a[(c[(c[O>>2]|0)+4>>2]|0)+(i<<4)+13>>0]|0)|0)!=0:0){b[D>>1]=1;b[E>>1]=0;c[F>>2]=0;b[G>>1]=1;c[c[H>>2]>>2]=l;b[t>>1]=s;if((c[u>>2]|0)==0?(c[M>>2]&2|0)==0:0)i=x;else i=w;b[t>>1]=(i&32768|0)==0?i&65535:0;b[v>>1]=43;if(p)i=m;else i=(d[r>>0]|0)+n&65535;b[y>>1]=i;c[z>>2]=16384;Y=j;Z=c[Y+4>>2]|h;i=ha;c[i>>2]=c[Y>>2]|g;c[i+4>>2]=Z;i=_l(f,ha)|0}else i=0}else i=0;while(0);l=l+48|0}while(l>>>0>>0&(i|0)==0)}else i=0;while(0);Z=ha+36|0;if(!((i|0)==0&(k|0)!=0)){ia=i;Ra=ja;return ia|0}I=P+8+(Q*72|0)+40|0;J=ha+24|0;K=ha+26|0;M=ha+28|0;N=ha+42|0;O=ha+40|0;S=ha+17|0;T=ha+18|0;U=ha+22|0;V=ha+32|0;W=ha+20|0;X=f+20|0;Y=R+36|0;H=P+8+(Q*72|0)+56|0;A=R+46|0;B=_+92|0;C=_+100|0;D=fa+4|0;E=ca+4|0;F=ca+24|0;z=ca+20|0;G=_+44|0;y=1;b:while(1){w=k+36|0;i=c[w>>2]|0;if((i|0)!=0?(bm(c[I>>2]|0,aa,i)|0)==0:0)i=0;else{v=k+55|0;if(!((d[v>>0]|d[v+1>>0]<<8)&256)){x=b[c[k+8>>2]>>1]|0;b[J>>1]=0;b[K>>1]=0;b[M>>1]=0;b[N>>1]=0;b[O>>1]=0;a[S>>0]=0;b[T>>1]=0;r=ha;c[r>>2]=g;c[r+4>>2]=h;b[U>>1]=x;c[V>>2]=k;r=c[I>>2]|0;c:do if((((d[v>>0]|d[v+1>>0]<<8)&4)==0?(da=c[(c[f>>2]|0)+8>>2]|0,(da|0)!=0):0)?(ea=c[da>>2]|0,(ea|0)>0):0){s=k+40|0;t=k+50|0;u=k+4|0;q=0;i=ea;while(1){j=c[da+4+(q*20|0)>>2]|0;d:do if(!j)j=0;else while(1){l=c[j+4>>2]|0;if(!(l&4096))break d;if(!(l&262144))j=j+12|0;else j=(c[j+20>>2]|0)+4|0;j=c[j>>2]|0;if(!j){j=0;break}}while(0);if((a[j>>0]|0)==-94?(c[j+28>>2]|0)==(r|0):0){m=b[j+32>>1]|0;if(m<<16>>16<0){j=1;break c}j=b[t>>1]|0;if(j<<16>>16){n=c[u>>2]|0;l=j&65535;j=0;do{if(m<<16>>16==(b[n+(j<<1)>>1]|0)){j=1;break c}j=j+1|0}while(j>>>0>>0)}}else ia=75;e:do if((ia|0)==75){ia=0;p=c[s>>2]|0;if((p|0)!=0?(ga=b[t>>1]|0,ga<<16>>16!=0):0){if(!j){n=c[u>>2]|0;o=ga&65535;m=0;while(1){f:do if((b[n+(m<<1)>>1]|0)==-2){j=c[p+4+(m*20|0)>>2]|0;if(!j){j=1;break c}while(1){l=c[j+4>>2]|0;if(!(l&4096))break f;if(!(l&262144))j=j+12|0;else j=(c[j+20>>2]|0)+4|0;j=c[j>>2]|0;if(!j){j=1;break c}}}while(0);m=m+1|0;if(m>>>0>=o>>>0)break e}}n=0;i=ga;do{if((b[(c[u>>2]|0)+(n<<1)>>1]|0)==-2){i=c[p+4+(n*20|0)>>2]|0;l=j;while(1){m=c[l+4>>2]|0;if(!(m&4096))break;if(!(m&262144))l=l+12|0;else l=(c[l+20>>2]|0)+4|0;l=c[l>>2]|0;if(!l){l=0;break}}g:do if(!i)i=0;else while(1){m=c[i+4>>2]|0;if(!(m&4096))break g;if(!(m&262144))i=i+12|0;else i=(c[i+20>>2]|0)+4|0;i=c[i>>2]|0;if(!i){i=0;break}}while(0);if(!(bk(0,l,i,r)|0)){j=1;break c}i=b[t>>1]|0}n=n+1|0}while(n>>>0<(i&65535)>>>0);i=c[da>>2]|0}}while(0);q=q+1|0;if((q|0)>=(i|0)){j=0;break}}}else j=0;while(0);i=d[v>>0]|d[v+1>>0]<<8;do if((i&3)==3){c[Z>>2]=256;a[S>>0]=(j|0)==0?0:y&255;b[W>>1]=(x&65535)+16;cm(aa,ha,x);i=_l(f,ha)|0;b[U>>1]=x;if(i|0){ia=147;break b}}else{if(!(i&32)){i=H;m=k+64|0;R=c[m>>2]&c[i>>2];i=c[m+4>>2]&c[i+4>>2];m=R;n=i;i=(R|0)==0&(i|0)==0?576:512}else{m=0;n=0;i=576}c[Z>>2]=i;i=(j|0)!=0;if((!i?(c[Y>>2]&32|0)==0:0)?(c[w>>2]|0)==0:0){if(!((m|0)==0&(n|0)==0))break;if((d[v>>0]|d[v+1>>0]<<8)&4)break;if((b[k+48>>1]|0)>=(b[A>>1]|0))break;if(!((b[G>>1]&4)==0&(c[7328]|0)!=0))break;if(b[(c[c[_>>2]>>2]|0)+76>>1]&32)break}a[S>>0]=i?y&255:0;i=x<<16>>16;l=i+1+(((b[k+48>>1]|0)*15|0)/(b[A>>1]|0)|0)&65535;b[W>>1]=l;if(!((m|0)==0&(n|0)==0)){i=i+16&65535;n=c[I>>2]|0;if((c[B>>2]|0)>0){m=0;do{l=c[C>>2]|0;j=c[l+(m*48|0)>>2]|0;c[ca>>2]=0;c[ca+4>>2]=0;c[ca+8>>2]=0;c[ca+12>>2]=0;c[ca+16>>2]=0;c[ca+20>>2]=0;c[D>>2]=n;c[fa>>2]=k;c[E>>2]=148;c[F>>2]=fa;if(j){_j(ca,j)|0;if(a[z>>0]|0)break}j=b[l+(m*48|0)+8>>1]|0;do if(j<<16>>16<1)i=(j&65535)+(i&65535)&65535;else{i=i+-1<<16>>16;if(!(b[l+(m*48|0)+12>>1]&130))break;i=(i&65535)+65517&65535}while(0);m=m+1|0}while((m|0)<(c[B>>2]|0));l=b[W>>1]|0}j=l<<16>>16;m=i<<16>>16;do if(l<<16>>16>16){if((j+49|0)>=(m|0))if((j+31|0)<(m|0)){i=m+1&65535;break}else{i=(d[18112+(m-j)>>0]|0)+m&65535;break}}else if((m+49|0)>=(j|0))if((m+31|0)<(j|0)){i=j+1&65535;break}else{i=(d[18112+(j-m)>>0]|0)+j&65535;break}else i=l;while(0);b[W>>1]=i}cm(aa,ha,x);i=_l(f,ha)|0;b[U>>1]=x;if(i|0){ia=147;break b}}while(0);c[X>>2]=0;i=dm(f,$,k,0)|0;if((c[X>>2]|0)==1)c[Y>>2]=c[Y>>2]|256}else i=0}if(c[ba>>2]|0){ia=147;break}k=c[k+20>>2]|0;if(!((i|0)==0&(k|0)!=0)){ia=147;break}else y=y+1|0}if((ia|0)==147){Ra=ja;return i|0}return 0}function Yl(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var 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,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;ia=Ra;Ra=Ra+608|0;ba=ia+168|0;da=ia+576|0;ha=ia+112|0;ea=ia+56|0;fa=ia;k=c[f>>2]|0;_=c[f+4>>2]|0;o=c[_+20>>2]|0;n=c[_+12>>2]|0;$=o+(n*48|0)|0;aa=c[f+12>>2]|0;l=ha;m=l+56|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));k=c[k+4>>2]|0;l=d[aa+16>>0]|0;Z=c[k+8+(l*72|0)+40>>2]|0;if((n|0)<=0){ha=0;Ra=ia;return ha|0}W=aa+8|0;X=da+8|0;Y=da+16|0;E=k+8+(l*72|0)+16|0;F=da+4|0;G=ba+4|0;H=ba+8|0;I=ba+12|0;J=ba+20|0;K=fa+8|0;L=ha+8|0;M=ea+8|0;N=ha+16|0;O=aa+40|0;P=aa+48|0;Q=aa+36|0;R=aa+18|0;S=aa+17|0;T=aa+24|0;U=aa+20|0;V=aa+22|0;k=0;a:while(1){b:do if((b[o+12>>1]&512)!=0?(ca=c[o+28>>2]|0,D=ca+408|0,C=W,!((c[C>>2]&c[D>>2]|0)==0?(c[C+4>>2]&c[D+4>>2]|0)==0:0)):0){l=ca+20|0;D=(c[l>>2]|0)+((c[ca+12>>2]|0)*48|0)|0;c[da>>2]=c[f>>2];c[da+4>>2]=c[f+4>>2];c[da+8>>2]=c[f+8>>2];c[da+12>>2]=c[f+12>>2];c[da+16>>2]=c[f+16>>2];c[da+20>>2]=c[f+20>>2];c[da+24>>2]=c[f+24>>2];c[X>>2]=0;c[Y>>2]=ea;l=c[l>>2]|0;c:do if(l>>>0>>0){n=1;C=l;l=0;do{if(!(b[C+12>>1]&1024)){if((c[C+20>>2]|0)==(Z|0)){c[ba>>2]=c[_>>2];c[G>>2]=_;a[H>>0]=44;c[I>>2]=1;c[J>>2]=C;l=ba;ga=11}}else{l=c[C+28>>2]|0;ga=11}do if((ga|0)==11){ga=0;c[F>>2]=l;b[ea>>1]=0;if(!(c[(c[E>>2]|0)+56>>2]|0))l=Xl(da,g,h)|0;else l=Wl(da,g,h,i,j)|0;if(!l)l=Yl(da,g,h,i,j)|0;m=b[ea>>1]|0;if(!(m<<16>>16)){k=0;break c}if(n|0){ew(L|0,M|0,(m&65535)<<4|0)|0;n=0;k=m;break}b[fa>>1]=k;B=k&65535;ew(K|0,L|0,B<<4|0)|0;if(!(k<<16>>16))k=0;else{x=m&65535;w=0;k=0;do{y=fa+8+(w<<4)|0;z=fa+8+(w<<4)+8|0;A=fa+8+(w<<4)+10|0;v=0;do{u=y;m=ea+8+(v<<4)|0;t=c[m>>2]|c[u>>2];u=c[m+4>>2]|c[u+4>>2];m=b[z>>1]|0;n=b[ea+8+(v<<4)+8>>1]|0;p=m<<16>>16;q=n<<16>>16;do if(m<<16>>16>16){if((p+49|0)<(q|0)){m=n;break}if((p+31|0)<(q|0)){m=q+1&65535;break}else{m=(d[18112+(q-p)>>0]|0)+q&65535;break}}else{if((q+49|0)<(p|0))break;if((q+31|0)<(p|0)){m=p+1&65535;break}else{m=(d[18112+(p-q)>>0]|0)+p&65535;break}}while(0);n=b[A>>1]|0;p=b[ea+8+(v<<4)+10>>1]|0;q=n<<16>>16;r=p<<16>>16;do if(n<<16>>16>16){if((q+49|0)<(r|0))break;if((q+31|0)<(r|0)){p=r+1&65535;break}else{p=(d[18112+(r-q)>>0]|0)+r&65535;break}}else{if((r+49|0)<(q|0)){p=n;break}if((r+31|0)<(q|0)){p=q+1&65535;break}else{p=(d[18112+(q-r)>>0]|0)+q&65535;break}}while(0);d:do if(k<<16>>16){n=k;r=L;while(1){q=b[r+8>>1]|0;if(q<<16>>16>=m<<16>>16?(s=r,(c[s>>2]&t|0)==(t|0)?(c[s+4>>2]&u|0)==(u|0):0):0){ga=52;break}if(q<<16>>16<=m<<16>>16?(s=r,q=c[s>>2]|0,s=c[s+4>>2]|0,(q&t|0)==(q|0)&(s&u|0)==(s|0)):0)break d;n=n+-1<<16>>16;if(!(n<<16>>16))break;else r=r+16|0}if((ga|0)==52){q=r;n=r+8|0;ga=53;break}if((k&65535)<3){ga=48;break}r=k&65535;s=L;n=b[N>>1]|0;q=1;do{s=n<<16>>16>(b[ha+8+(q<<4)+8>>1]|0)?ha+8+(q<<4)|0:s;q=q+1|0;n=b[s+8>>1]|0}while((q|0)!=(r|0));if(n<<16>>16>m<<16>>16){q=s;n=s+8|0;ga=53}}else ga=48;while(0);if((ga|0)==48){n=k&65535;b[ha+8+(n<<4)+10>>1]=p;q=ha+8+(n<<4)|0;n=ha+8+(n<<4)+8|0;k=k+1<<16>>16;ga=53}do if((ga|0)==53){ga=0;s=q;c[s>>2]=t;c[s+4>>2]=u;b[n>>1]=m;m=q+10|0;if((b[m>>1]|0)<=p<<16>>16)break;b[m>>1]=p}while(0);v=v+1|0}while((v|0)!=(x|0));w=w+1|0}while((w|0)!=(B|0))}n=0}while(0);C=C+48|0}while(C>>>0>>0)}else l=0;while(0);b[O>>1]=1;c[c[P>>2]>>2]=o;c[Q>>2]=8192;b[R>>1]=0;a[S>>0]=0;c[T>>2]=0;c[T+4>>2]=0;c[T+8>>2]=0;if(l|0)break a;n=k&65535;m=0;while(1){if(m>>>0>=n>>>0)break b;b[U>>1]=(e[ha+8+(m<<4)+8>>1]|0)+1;b[V>>1]=b[ha+8+(m<<4)+10>>1]|0;C=ha+8+(m<<4)|0;D=c[C+4>>2]|0;l=aa;c[l>>2]=c[C>>2];c[l+4>>2]=D;l=_l(f,aa)|0;if(!l)m=m+1|0;else break a}}while(0);o=o+48|0;if(o>>>0>=$>>>0){l=0;break}}b[ha>>1]=k;ha=l;Ra=ia;return ha|0}function Zl(f,i,j,k,l,m,n,o,p){f=f|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=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,V=0,W=0;U=Ra;Ra=Ra+32|0;P=U+24|0;M=U+16|0;x=U+8|0;y=U;B=c[f+4>>2]|0;G=c[n+16>>2]|0;T=c[f+12>>2]|0;v=c[f>>2]|0;O=c[v>>2]|0;v=c[v+4>>2]|0;w=d[T+16>>0]|0;I=c[n>>2]|0;c[p>>2]=0;C=T;c[C>>2]=i;c[C+4>>2]=j;C=n+4|0;z=(I|0)>0;if(z){q=c[B+20>>2]|0;i=c[C>>2]|0;j=0;while(1){S=c[i+8>>2]|0;u=i+5|0;a[u>>0]=0;Q=q+(S*48|0)+32|0;N=c[Q>>2]|0;Q=c[Q+4>>2]|0;if((N&k|0)==(N|0)&(Q&l|0)==(Q|0)?(b[q+(S*48|0)+12>>1]&m)<<16>>16==0:0)a[u>>0]=1;j=j+1|0;if((j|0)==(I|0))break;else i=i+12|0}}gw(G|0,0,I<<3|0)|0;J=n+24|0;c[J>>2]=0;E=n+20|0;c[E>>2]=0;K=n+32|0;c[K>>2]=0;N=n+40|0;g[N>>3]=5.e+98;Q=n+48|0;S=Q;c[S>>2]=25;c[S+4>>2]=0;S=n+56|0;c[S>>2]=0;j=v+8+(w*72|0)+56|0;i=c[j+4>>2]|0;D=n+64|0;c[D>>2]=c[j>>2];c[D+4>>2]=i;D=v+8+(w*72|0)+16|0;i=c[(c[D>>2]|0)+64>>2]|0;j=c[O>>2]|0;if((c[i>>2]|0)!=(j|0))do i=c[i+24>>2]|0;while((c[i>>2]|0)!=(j|0));q=c[i+8>>2]|0;u=Xa[c[(c[q>>2]|0)+12>>2]&255](q,n)|0;a:do switch(u|0){case 0:case 19:break;case 7:{i=c[O>>2]|0;j=i+81|0;if((a[j>>0]|0)==0?(a[i+82>>0]|0)==0:0){a[j>>0]=1;if((c[i+180>>2]|0)>0)c[i+264>>2]=1;A=i+272|0;c[A>>2]=(c[A>>2]|0)+1;i=c[i+236>>2]|0;if(i|0)c[i+12>>2]=7}break}default:{i=c[q+8>>2]|0;if(i|0){c[x>>2]=i;cd(O,31408,x);break a}switch(u|0){case 516:{i=50738;break}case 100:{i=50760;break}case 101:{i=50782;break}default:{i=u&255;if(i>>>0<29?(520028155>>>i&1|0)!=0:0)i=c[22960+(i<<2)>>2]|0;else i=50724}}c[y>>2]=i;cd(O,31408,y)}}while(0);i=q+8|0;j=c[i>>2]|0;do if(j|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{A=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-A;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);c[i>>2]=0;switch(u|0){case 0:{do if(z){j=T+48|0;i=0;do{c[(c[j>>2]|0)+(i<<2)>>2]=0;i=i+1|0}while((i|0)!=(I|0));A=T+24|0;i=T+30|0;b[i>>1]=0;if(z){y=B+12|0;z=T+48|0;x=B+20|0;u=-1;v=c[C>>2]|0;w=0;while(1){q=c[G+(w<<3)>>2]|0;k=q+-1|0;if((q|0)>0){l=c[v+8>>2]|0;if((q|0)>(I|0)|(l|0)<0)break;if((l|0)>=(c[y>>2]|0))break;j=(c[z>>2]|0)+(k<<2)|0;if(c[j>>2]|0)break;if(!(a[v+5>>0]|0))break;m=c[x>>2]|0;V=m+(l*48|0)+32|0;W=T;B=c[W+4>>2]|c[V+4>>2];C=T;c[C>>2]=c[W>>2]|c[V>>2];c[C+4>>2]=B;c[j>>2]=m+(l*48|0);u=(k|0)>(u|0)?k:u;if((q|0)<17?a[G+(w<<3)+4>>0]|0:0)b[i>>1]=1<>1];if(b[m+(l*48|0)+12>>1]&1){c[K>>2]=0;c[S>>2]=c[S>>2]&-2;c[p>>2]=1}}w=w+1|0;if((w|0)>=(I|0)){R=50;break}else v=v+12|0}if((R|0)==50){j=b[i>>1]|0;q=A;k=A;break}c[M>>2]=c[c[D>>2]>>2];cd(O,43661,M);W=1;Ra=U;return W|0}else{u=-1;j=0;q=A;k=A}}else{k=T+24|0;i=T+30|0;b[i>>1]=0;u=-1;j=0;q=k}while(0);b[i>>1]=j&~o;b[T+40>>1]=u+1;b:do if((u|0)>=0){j=c[T+48>>2]|0;i=0;while(1){if(!(c[j+(i<<2)>>2]|0))break;if((i|0)<(u|0))i=i+1|0;else break b}c[P>>2]=c[c[D>>2]>>2];cd(O,43661,P);W=1;Ra=U;return W|0}while(0);c[q>>2]=c[E>>2];u=n+28|0;l=T+28|0;a[l>>0]=c[u>>2];c[u>>2]=0;u=T+32|0;c[u>>2]=c[J>>2];if(!(c[K>>2]|0))i=0;else i=c[n+8>>2]&255;a[k+5>>0]=i;b[T+18>>1]=0;r=+g[N>>3];g[h>>3]=r;i=c[h>>2]|0;j=c[h+4>>2]|0;do if(!(r<=1.0)){if(!(r<=2.0e9)){i=bw(i|0,j|0,52)|0;L()|0;i=(i*10|0)+55316&65535;break}i=~~r>>>0;j=+t(r)>=1.0?(r>0.0?~~+H(+s(r/4294967296.0),4294967295.0)>>>0:~~+F((r-+(~~r>>>0))/4294967296.0)>>>0):0;if(!(j>>>0<0|(j|0)==0&i>>>0<8)){if(j>>>0>0|(j|0)==0&i>>>0>255){q=40;do{q=(q&65535)+40|0;W=i;i=bw(i|0,j|0,4)|0;V=j;j=L()|0}while(V>>>0>0|(V|0)==0&W>>>0>4095);q=q&65535}else q=40;if(j>>>0>0|(j|0)==0&i>>>0>15)do{q=(q&65535)+10&65535;W=i;i=bw(i|0,j|0,1)|0;V=j;j=L()|0}while(V>>>0>0|(V|0)==0&W>>>0>31)}else{if(j>>>0<0|(j|0)==0&i>>>0<2){i=0;break}q=40;do{q=(q&65535)+65526|0;i=cw(i|0,j|0,1)|0;j=L()|0}while(j>>>0<0|(j|0)==0&i>>>0<8);q=q&65535}i=(q&65535)+65526+(e[3648+((i&7)<<1)>>1]|0)&65535}else i=0;while(0);b[T+20>>1]=i;j=Q;i=c[j>>2]|0;j=c[j+4>>2]|0;if(j>>>0<0|(j|0)==0&i>>>0<8)if(j>>>0<0|(j|0)==0&i>>>0<2)i=0;else{q=40;do{q=(q&65535)+65526|0;i=cw(i|0,j|0,1)|0;j=L()|0}while(j>>>0<0|(j|0)==0&i>>>0<8);q=q&65535;R=88}else{if(j>>>0>0|(j|0)==0&i>>>0>255){q=40;do{q=(q&65535)+40|0;W=i;i=bw(i|0,j|0,4)|0;V=j;j=L()|0}while(V>>>0>0|(V|0)==0&W>>>0>4095);q=q&65535}else q=40;if(j>>>0>0|(j|0)==0&i>>>0>15){do{q=(q&65535)+10&65535;W=i;i=bw(i|0,j|0,1)|0;V=j;j=L()|0}while(V>>>0>0|(V|0)==0&W>>>0>31);R=88}else R=88}if((R|0)==88)i=(q&65535)+65526+(e[3648+((i&7)<<1)>>1]|0)&65535;b[T+22>>1]=i;j=T+36|0;W=c[j>>2]|0;c[j>>2]=(c[S>>2]&1|0)==0?W&-4097:W|4096;j=_l(f,T)|0;if(!(a[l>>0]|0)){W=j;Ra=U;return W|0}i=c[u>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{W=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-W;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);a[l>>0]=0;W=j;Ra=U;return W|0}case 19:{W=0;Ra=U;return W|0}default:{W=u;Ra=U;return W|0}}return 0}function _l(f,g){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,x=0,y=0,z=0,A=0,B=0,C=0,D=0;k=c[f>>2]|0;B=c[c[k>>2]>>2]|0;h=f+24|0;i=c[h>>2]|0;if(!i){f=c[f+16>>2]|0;if(!f){g=101;return g|0}b[f>>1]=0;g=101;return g|0}c[h>>2]=i+-1;p=c[f+16>>2]|0;if(p|0){if(!(b[g+40>>1]|0)){g=0;return g|0}m=g;l=c[m>>2]|0;m=c[m+4>>2]|0;n=b[g+20>>1]|0;o=b[g+22>>1]|0;j=b[p>>1]|0;i=p+8|0;do if(j<<16>>16){f=j;k=i;while(1){h=b[k+8>>1]|0;if(h<<16>>16>=n<<16>>16?(g=k,(c[g>>2]&l|0)==(l|0)?(c[g+4>>2]&m|0)==(m|0):0):0){v=18;break}if(h<<16>>16<=n<<16>>16?(g=k,B=c[g>>2]|0,g=c[g+4>>2]|0,(B&l|0)==(B|0)&(g&m|0)==(g|0)):0){f=0;v=157;break}f=f+-1<<16>>16;if(!(f<<16>>16)){v=13;break}else k=k+16|0}if((v|0)==13){if((j&65535)<3){v=14;break}j=j&65535;f=b[p+16>>1]|0;h=1;do{i=f<<16>>16>(b[p+8+(h<<4)+8>>1]|0)?p+8+(h<<4)|0:i;h=h+1|0;f=b[i+8>>1]|0}while((h|0)!=(j|0));if(f<<16>>16>n<<16>>16){h=i;f=i+8|0;break}else f=0;return f|0}else if((v|0)==18){h=k;f=k+8|0;break}else if((v|0)==157)return f|0}else v=14;while(0);if((v|0)==14){f=j&65535;b[p>>1]=j+1<<16>>16;b[p+8+(f<<4)+10>>1]=o;h=p+8+(f<<4)|0;f=p+8+(f<<4)+8|0}g=h;c[g>>2]=l;c[g+4>>2]=m;b[f>>1]=n;f=h+10|0;if((b[f>>1]|0)<=o<<16>>16){g=0;return g|0}b[f>>1]=o;g=0;return g|0}f=k+60|0;p=c[f>>2]|0;A=g+36|0;n=c[A>>2]|0;k=(p|0)==0;if(!(k|(n&512|0)==0)){l=g+20|0;m=g+22|0;i=a[g+16>>0]|0;h=p;do{do if((a[h+16>>0]|0)==i<<24>>24?c[h+36>>2]&512|0:0){if(am(h,g)|0){b[l>>1]=b[h+20>>1]|0;b[m>>1]=(e[h+22>>1]|0)+65535;break}if(am(g,h)|0){b[l>>1]=b[h+20>>1]|0;b[m>>1]=(e[h+22>>1]|0)+1}}while(0);h=c[h+52>>2]|0}while((h|0)!=0)}a:do if(k)v=57;else{q=a[g+16>>0]|0;r=g+17|0;o=g+42|0;s=g+18|0;t=g+20|0;u=g+22|0;if((n&513|0)!=513){m=p;while(1){if((a[m+16>>0]|0)==q<<24>>24?(a[m+17>>0]|0)==(a[r>>0]|0):0){v=m;p=c[v>>2]|0;v=c[v+4>>2]|0;i=g;h=c[i>>2]|0;i=c[i+4>>2]|0;k=h&p;l=i&v;if((((k|0)==(p|0)&(l|0)==(v|0)?(b[m+18>>1]|0)<=(b[s>>1]|0):0)?(b[m+20>>1]|0)<=(b[t>>1]|0):0)?(b[m+22>>1]|0)<=(b[u>>1]|0):0){f=0;break}if(((k|0)==(h|0)&(l|0)==(i|0)?(b[m+20>>1]|0)>=(b[t>>1]|0):0)?(b[m+22>>1]|0)>=(b[u>>1]|0):0){v=57;break a}}f=m+52|0;m=c[f>>2]|0;if(!m){i=f;v=58;break a}}return f|0}m=p;while(1){if((a[m+16>>0]|0)==q<<24>>24?(a[m+17>>0]|0)==(a[r>>0]|0):0){if((c[m+36>>2]&16384|0?(b[o>>1]|0)==0:0)?(p=m,v=g,n=c[v>>2]|0,v=c[v+4>>2]|0,(n&c[p>>2]|0)==(n|0)?(v&c[p+4>>2]|0)==(v|0):0):0){v=57;break a}v=m;p=c[v>>2]|0;v=c[v+4>>2]|0;i=g;h=c[i>>2]|0;i=c[i+4>>2]|0;k=h&p;l=i&v;if((((k|0)==(p|0)&(l|0)==(v|0)?(b[m+18>>1]|0)<=(b[s>>1]|0):0)?(b[m+20>>1]|0)<=(b[t>>1]|0):0)?(b[m+22>>1]|0)<=(b[u>>1]|0):0){f=0;break}if(((k|0)==(h|0)&(l|0)==(i|0)?(b[m+20>>1]|0)>=(b[t>>1]|0):0)?(b[m+22>>1]|0)>=(b[u>>1]|0):0){v=57;break a}}f=m+52|0;m=c[f>>2]|0;if(!m){i=f;v=58;break a}}return f|0}while(0);b:do if((v|0)==57){u=c[f>>2]|0;if(u){f=u+52|0;h=c[f>>2]|0;if(h){o=g+16|0;p=g+17|0;q=g+42|0;r=g+18|0;s=g+20|0;t=g+22|0;do{n=a[o>>0]|0;while(1){if((a[h+16>>0]|0)==n<<24>>24?(a[h+17>>0]|0)==(a[p>>0]|0):0){if(((c[h+36>>2]&16384|0?(b[q>>1]|0)==0:0)?(c[A>>2]&513|0)==513:0)?(l=h,m=g,k=c[m>>2]|0,m=c[m+4>>2]|0,(k&c[l>>2]|0)==(k|0)?(m&c[l+4>>2]|0)==(m|0):0):0)break;C=h;D=c[C>>2]|0;C=c[C+4>>2]|0;k=g;i=c[k>>2]|0;k=c[k+4>>2]|0;l=i&D;m=k&C;if((((l|0)==(D|0)&(m|0)==(C|0)?(b[h+18>>1]|0)<=(b[r>>1]|0):0)?(b[h+20>>1]|0)<=(b[s>>1]|0):0)?(b[h+22>>1]|0)<=(b[t>>1]|0):0)break b;if(((l|0)==(i|0)&(m|0)==(k|0)?(b[h+20>>1]|0)>=(b[s>>1]|0):0)?(b[h+22>>1]|0)>=(b[t>>1]|0):0)break}f=h+52|0;h=c[f>>2]|0;if(!h)break b}c[f>>2]=c[h+52>>2];$l(B,h);h=c[f>>2]|0}while((h|0)!=0)}}else{i=f;v=58}}while(0);do if((v|0)==58){c:do if(c[B+272>>2]|0)if(!(a[B+81>>0]|0))v=69;else{c[i>>2]=0;D=7;return D|0}else{do if((e[B+276>>1]|0)>=72){h=B+300|0;f=c[h>>2]|0;if(f|0){c[h>>2]=c[f>>2];D=B+284|0;c[D>>2]=(c[D>>2]|0)+1;break c}h=B+296|0;f=c[h>>2]|0;if(!f){f=B+292|0;break}else{c[h>>2]=c[f>>2];D=B+284|0;c[D>>2]=(c[D>>2]|0)+1;break c}}else f=B+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1;v=69}while(0);if((v|0)==69)f=_d(B,72,0)|0;c[i>>2]=f;if(!f){D=7;return D|0}else{c[f+48>>2]=f+56;b[f+40>>1]=0;b[f+44>>1]=3;c[f+36>>2]=0;c[f+52>>2]=0;u=f;break}}while(0);l=u+36|0;f=c[l>>2]|0;do if(f&17408|0){if(f&1024|0?(x=u+28|0,a[x>>0]|0):0){f=u+32|0;h=c[f>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{D=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-D;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);a[x>>0]=0;c[f>>2]=0;break}if(f&16384|0?(y=u+32|0,w=c[y>>2]|0,w|0):0){f=c[w+16>>2]|0;d:do if(f){do if(B|0){h=B+480|0;if(!(c[h>>2]|0)){i=f;if((c[B+304>>2]|0)>>>0>i>>>0)break;if((c[B+308>>2]|0)>>>0<=i>>>0)break;D=B+300|0;c[f>>2]=c[D>>2];c[D>>2]=f}else Xd(B,f);f=c[y>>2]|0;v=113;break d}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);v=111;break}else{v=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);v=111;break}}else v=111;while(0);if((v|0)==111){f=c[y>>2]|0;if(!B){z=f;v=118}else{h=B+480|0;v=113}}do if((v|0)==113){if(c[h>>2]|0){Xd(B,f);break}D=f;if((c[B+304>>2]|0)>>>0<=D>>>0?(c[B+308>>2]|0)>>>0>D>>>0:0){D=B+300|0;c[f>>2]=c[D>>2];c[D>>2]=f}else{z=f;v=118}}while(0);do if((v|0)==118?z|0:0)if(!(c[7324]|0)){ab[c[29344>>2]&127](z);break}else{D=Wa[c[29352>>2]&127](z)|0;c[14978]=(c[14978]|0)-D;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](z);break}while(0);c[y>>2]=0}}while(0);f=b[g+40>>1]|0;k=u+44|0;do if((e[k>>1]|0)<(f&65535)){i=(f&65535)+7&131064;h=i<<2;e:do if(c[B+272>>2]|0){if(!(a[B+81>>0]|0))v=135}else{do if(!(0<0|(0==0?(e[B+276>>1]|0)>>>0>>0:0))){f=B+300|0;j=c[f>>2]|0;if(j|0){c[f>>2]=c[j>>2];v=B+284|0;c[v>>2]=(c[v>>2]|0)+1;v=136;break e}f=B+296|0;j=c[f>>2]|0;if(!j){f=B+292|0;break}else{c[f>>2]=c[j>>2];v=B+284|0;c[v>>2]=(c[v>>2]|0)+1;v=136;break e}}else f=B+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1;v=135}while(0);if((v|0)==135){j=_d(B,h,0)|0;v=136}if((v|0)==136?j|0:0){f=u+48|0;ew(j|0,c[f>>2]|0,e[k>>1]<<2|0)|0;h=c[f>>2]|0;do if((h|0)!=(u+56|0)){if(c[B+480>>2]|0){Xd(B,h);break}D=h;if((c[B+304>>2]|0)>>>0<=D>>>0?(c[B+308>>2]|0)>>>0>D>>>0:0){D=B+300|0;c[h>>2]=c[D>>2];c[D>>2]=h;break}if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{D=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-D;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);c[f>>2]=j;b[k>>1]=i;v=149;break}i=u+24|0;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;i=7}else{j=c[u+48>>2]|0;v=149}while(0);do if((v|0)==149){f=u;h=g;i=f+44|0;do{c[f>>2]=c[h>>2];f=f+4|0;h=h+4|0}while((f|0)<(i|0));ew(j|0,c[g+48>>2]|0,e[u+40>>1]<<2|0)|0;f=c[A>>2]|0;if(f&1024|0){a[g+28>>0]=0;i=0;break}if(!(f&16384))i=0;else{c[g+32>>2]=0;i=0}}while(0);if(c[l>>2]&1024|0){D=i;return D|0}f=u+32|0;h=c[f>>2]|0;if(!h){D=i;return D|0}D=h+55|0;if(((d[D>>0]|d[D+1>>0]<<8)&3)!=3){D=i;return D|0}c[f>>2]=0;D=i;return D|0}function $l(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=e+48|0;f=c[l>>2]|0;m=e+56|0;do if((f|0)!=(m|0)){if(d|0){if(c[d+480>>2]|0){Xd(d,f);break}k=f;if((c[d+304>>2]|0)>>>0<=k>>>0?(c[d+308>>2]|0)>>>0>k>>>0:0){k=d+300|0;c[f>>2]=c[k>>2];c[k>>2]=f;break}}if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{k=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);k=e+36|0;f=c[k>>2]|0;do if(f&17408|0){if(f&1024|0?(h=e+28|0,a[h>>0]|0):0){f=e+32|0;g=c[f>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{j=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);a[h>>0]=0;c[f>>2]=0;break}if(f&16384|0?(i=e+32|0,g=c[i>>2]|0,g|0):0){f=c[g+16>>2]|0;a:do if(f){do if(d|0){g=d+480|0;if(!(c[g>>2]|0)){h=f;if((c[d+304>>2]|0)>>>0>h>>>0)break;if((c[d+308>>2]|0)>>>0<=h>>>0)break;h=d+300|0;c[f>>2]=c[h>>2];c[h>>2]=f}else Xd(d,f);f=c[i>>2]|0;h=35;break a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);h=33;break}else{h=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);h=33;break}}else h=33;while(0);if((h|0)==33){f=c[i>>2]|0;if(!d){j=f;h=40}else{g=d+480|0;h=35}}do if((h|0)==35){if(c[g>>2]|0){Xd(d,f);break}g=f;if((c[d+304>>2]|0)>>>0<=g>>>0?(c[d+308>>2]|0)>>>0>g>>>0:0){g=d+300|0;c[f>>2]=c[g>>2];c[g>>2]=f}else{j=f;h=40}}while(0);do if((h|0)==40?j|0:0)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{h=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);c[i>>2]=0}}while(0);c[l>>2]=m;b[e+40>>1]=0;b[e+44>>1]=3;c[k>>2]=0;if(d|0){if(c[d+480>>2]|0){Xd(d,e);return}m=e;if((c[d+304>>2]|0)>>>0<=m>>>0?(c[d+308>>2]|0)>>>0>m>>>0:0){m=d+300|0;c[e>>2]=c[m>>2];c[m>>2]=e;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);return}else{m=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);return}}function am(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=b[a+40>>1]|0;g=h&65535;j=b[a+42>>1]|0;i=b[d+40>>1]|0;l=i&65535;k=b[d+42>>1]|0;if((k&65535)>(j&65535)?1:(g-(j&65535)|0)>=(l-(k&65535)|0)){d=0;return d|0}e=b[a+20>>1]|0;f=b[d+20>>1]|0;if(e<<16>>16>=f<<16>>16){if(e<<16>>16>f<<16>>16){d=0;return d|0}if((b[a+22>>1]|0)>(b[d+22>>1]|0)){d=0;return d|0}}e=g+-1|0;a:do if(h<<16>>16){k=c[a+48>>2]|0;j=d+48|0;if(!(i<<16>>16)){while(1){if(c[k+(e<<2)>>2]|0){e=0;break}if((e|0)>0)e=e+-1|0;else break a}return e|0}b:while(1){h=c[k+(e<<2)>>2]|0;c:do if(h|0){i=c[j>>2]|0;f=l;while(1){g=f;f=f+-1|0;if((c[i+(f<<2)>>2]|0)==(h|0))break c;if((g|0)<=1){e=0;break b}}}while(0);if((e|0)>0)e=e+-1|0;else break a}return e|0}while(0);if(c[a+36>>2]&64|0?(c[d+36>>2]&64|0)==0:0){d=0;return d|0}d=1;return d|0}function bm(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;g=c[c[e>>2]>>2]|0;a:do if((a[f>>0]|0)==44){while(1){if(!(bm(d,e,c[f+12>>2]|0)|0)){f=0;break}f=c[f+16>>2]|0;if((a[f>>0]|0)!=44)break a}return f|0}while(0);k=(0==0?(c[(c[g>>2]|0)+32>>2]&8388608|0)==0:0)?g:0;j=e+12|0;g=c[j>>2]|0;if((g|0)<=0){d=0;return d|0}h=c[e+20>>2]|0;i=0;while(1){e=c[h>>2]|0;if(!((c[e+4>>2]&1|0)!=0?(b[e+36>>1]|0)!=(d|0):0)){if(em(k,e,f,d)|0){f=1;g=12;break}g=c[j>>2]|0}i=i+1|0;if((i|0)>=(g|0)){f=0;g=12;break}else h=h+48|0}if((g|0)==12)return f|0;return 0}function cm(a,d,f){a=a|0;d=d|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;t=Ra;Ra=Ra+16|0;s=t;r=d;p=d+8|0;g=p;q=~(c[g>>2]|c[r>>2]);r=~(c[g+4>>2]|c[r+4>>2]);g=c[a+12>>2]|0;m=a+20|0;a:do if((g|0)>0){n=d+40|0;o=d+48|0;d=d+22|0;a=0;l=c[m>>2]|0;while(1){if(b[l+10>>1]&2)break a;k=l+40|0;i=c[k>>2]|0;k=c[k+4>>2]|0;j=p;b:do if((i&q|0)==0&(k&r|0)==0&(c[j>>2]&i|0?1:(c[j+4>>2]&k|0)!=0)){h=b[n>>1]|0;if(h<<16>>16){k=c[o>>2]|0;h=h&65535;do{i=h;h=h+-1|0;j=c[k+(h<<2)>>2]|0;if(j|0){if((j|0)==(l|0))break b;j=c[j+16>>2]|0;if((j|0)>-1?((c[m>>2]|0)+(j*48|0)|0)==(l|0):0)break b}}while((i|0)>1)}h=b[l+8>>1]|0;if(h<<16>>16<1){b[d>>1]=(e[d>>1]|0)+(h&65535);break}b[d>>1]=(b[d>>1]|0)+-1<<16>>16;if(b[l+12>>1]&130){k=(uk(c[(c[l>>2]|0)+16>>2]|0,s)|0)!=0;k=k&((c[s>>2]|0)+1|0)>>>0<3?10:20;c[s>>2]=k;a=(k|0)>(a<<16>>16|0)?k&65535:a}}while(0);if((g|0)>1){g=g+-1|0;l=l+48|0}else break}}else{a=0;d=d+22|0}while(0);a=(f<<16>>16)-(a<<16>>16)|0;if((a|0)>=(b[d>>1]|0)){Ra=t;return}b[d>>1]=a;Ra=t;return}function dm(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var 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,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,_=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;Fa=Ra;Ra=Ra+96|0;ga=Fa;ja=c[c[f>>2]>>2]|0;ua=c[ja>>2]|0;va=c[f+12>>2]|0;sa=ua+81|0;if(a[sa>>0]|0){Ea=7;Ra=Fa;return Ea|0}wa=va+36|0;xa=c[wa>>2]|0;da=(xa&32|0)==0?447:24;ra=h+55|0;da=((d[ra>>0]|d[ra+1>>0]<<8)&4)==0?da:da&387;ya=va+24|0;za=b[ya>>1]|0;ka=va+26|0;la=b[ka>>1]|0;ma=va+28|0;na=b[ma>>1]|0;Aa=va+42|0;oa=b[Aa>>1]|0;Ba=va+40|0;m=b[Ba>>1]|0;qa=va;pa=c[qa>>2]|0;qa=c[qa+4>>2]|0;Ca=va+22|0;Da=b[Ca>>1]|0;ha=f+4|0;k=c[ha>>2]|0;ia=g+40|0;ta=c[ia>>2]|0;Ea=za&65535;c[ga>>2]=k;c[ga+4>>2]=k;k=ga+12|0;c[k>>2]=0;l=ga+16|0;a[l>>0]=0;n=ga+8|0;c[n>>2]=0;c[ga+20>>2]=da;c[ga+24>>2]=0;c[ga+28>>2]=ta;a[ga+17>>0]=1;a[ga+18>>0]=1;do if(h){o=b[(c[h+4>>2]|0)+(Ea<<1)>>1]|0;j=o<<16>>16;if(o<<16>>16==-2){c[k>>2]=c[(c[h+40>>2]|0)+4+(Ea*20|0)>>2];c[n>>2]=c[(c[h+32>>2]|0)+(Ea<<2)>>2];b[ga+72>>1]=-2;n=Ul(ga)|0;break}k=c[h+12>>2]|0;if(o<<16>>16!=(b[k+40>>1]|0))if(o<<16>>16>-1){a[l>>0]=a[(c[k+4>>2]|0)+(j<<4)+13>>0]|0;c[n>>2]=c[(c[h+32>>2]|0)+(Ea<<2)>>2];ca=8}else ca=8;else{j=-1;ca=8}}else{j=Ea;ca=8}while(0);if((ca|0)==8){b[ga+72>>1]=j;n=Tl(ga)|0}b[va+18>>1]=0;ta=h+8|0;da=b[c[ta>>2]>>1]|0;if(da<<16>>16<11)M=0;else{j=da<<16>>16;k=((j|0)<0)<<31>>31;if((da&65535)>255){l=40;do{l=(l&65535)+40|0;ba=j;j=bw(j|0,k|0,4)|0;aa=k;k=L()|0}while(aa>>>0>0|(aa|0)==0&ba>>>0>4095);l=l&65535}else l=40;if(k>>>0>0|(k|0)==0&j>>>0>15){do{l=(l&65535)+10&65535;ba=j;j=bw(j|0,k|0,1)|0;aa=k;k=L()|0}while(aa>>>0>0|(aa|0)==0&ba>>>0>31);k=l}else k=l;M=(k&65535)+65493+(e[3648+((j&7)<<1)>>1]|0)&65535}a:do if(!n)j=0;else{v=h+4|0;w=va+8|0;x=h+12|0;y=g+36|0;z=h+54|0;A=f+20|0;B=va+44|0;C=h+50|0;D=va+48|0;E=m&65535;V=E+8&131064;F=V<<2;G=ua+272|0;H=ua+276|0;I=h+48|0;J=g+16|0;K=M<<16>>16;N=ua+288|0;O=ua+300|0;P=va+56|0;Q=i<<16>>16==0;R=K+49|0;S=va+20|0;T=ua+296|0;U=ua+284|0;V=V&65535;W=ua+480|0;X=K+31|0;Y=i<<16>>16;Z=ua+292|0;_=ua+304|0;$=h+52|0;aa=K+1&65535;ba=ua+308|0;t=n;l=0;k=0;do{s=b[t+12>>1]|0;u=s&65535;if(s<<16>>16==256){j=b[(c[v>>2]|0)+(Ea<<1)>>1]|0;if(j<<16>>16>-1)j=d[(c[(c[x>>2]|0)+4>>2]|0)+(j<<16>>16<<4)+12>>0]|0;else j=j<<16>>16==-1&1;if(j)j=0;else ca=26}else ca=26;b:do if((ca|0)==26){ca=0;r=t+32|0;q=r;o=w;n=c[o>>2]|0;o=c[o+4>>2]|0;if(((n&c[q>>2]|0)==0?(o&c[q+4>>2]|0)==0:0)?(ea=t+10|0,!(s<<16>>16==16&(b[ea>>1]&256)!=0)):0){if(a[y>>0]&8?(c[(c[t>>2]|0)+4>>2]&1|0)==0:0){j=0;break}if((a[z>>0]|0)!=0?((e[C>>1]|0)+-1|0)==(Ea|0):0)j=2;else j=1;c[A>>2]=c[A>>2]|j;c[wa>>2]=xa;b[ya>>1]=za;b[ka>>1]=la;b[ma>>1]=na;b[Ba>>1]=m;if((m&65535)<(e[B>>1]|0)){q=E;p=m;j=c[D>>2]|0}else{do if(c[G>>2]|0)if(!(a[sa>>0]|0))ca=43;else{j=0;break a}else{if(!(0<0|(0==0?(e[H>>1]|0)>>>0>>0:0))){j=c[O>>2]|0;if(j|0){c[O>>2]=c[j>>2];c[U>>2]=(c[U>>2]|0)+1;break}j=c[T>>2]|0;if(!j)j=Z;else{c[T>>2]=c[j>>2];c[U>>2]=(c[U>>2]|0)+1;break}}else j=N;c[j>>2]=(c[j>>2]|0)+1;ca=43}while(0);if((ca|0)==43){ca=0;j=_d(ua,F,0)|0}if(!j){j=0;break a}ew(j|0,c[D>>2]|0,e[B>>1]<<2|0)|0;n=c[D>>2]|0;c:do if((n|0)!=(P|0)){if(c[W>>2]|0){Xd(ua,n);break}o=n;do if((c[_>>2]|0)>>>0<=o>>>0){if((c[ba>>2]|0)>>>0<=o>>>0)break;c[n>>2]=c[O>>2];c[O>>2]=n;break c}while(0);if(!n)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{q=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);c[D>>2]=j;b[B>>1]=V;p=b[Ba>>1]|0;o=w;q=p&65535;n=c[o>>2]|0;o=c[o+4>>2]|0}p=p+1<<16>>16;b[Ba>>1]=p;c[j+(q<<2)>>2]=t;j=r;q=(c[j+4>>2]|qa)&~o;r=va;c[r>>2]=(c[j>>2]|pa)&~n;c[r+4>>2]=q;d:do if(!(u&1)){if(u&130|0){j=b[(c[v>>2]|0)+(Ea<<1)>>1]|0;n=c[wa>>2]|0;o=n|1;c[wa>>2]=o;do if(j<<16>>16!=-1){if(!(Q&j<<16>>16>-1)){s=0;p=o;break d}j=b[C>>1]|0;if(((j&65535)+-1|0)!=(Ea|0)){s=0;p=o;break d}if((d[ra>>0]|d[ra+1>>0]<<8)&8)break;if(j<<16>>16==1?s<<16>>16==2&(a[z>>0]|0)!=0:0)break;p=n|65537;c[wa>>2]=p;s=0;break d}while(0);p=n|4097;c[wa>>2]=p;s=0;break}if(u&256|0){p=c[wa>>2]|8;c[wa>>2]=p;s=0;break}j=c[wa>>2]|0;if(!(u&36)){c[wa>>2]=j|18;j=(gm(ja,c[ia>>2]|0,h,Ea,t)|0)&65535;b[ma>>1]=j;j=c[wa>>2]|0;if(!(j&32)){l=t;k=0;s=0;p=j;break}l=t;k=c[(c[D>>2]|0)+((e[Ba>>1]|0)+-2<<2)>>2]|0;s=0;p=j;break}c[wa>>2]=j|34;s=(gm(ja,c[ia>>2]|0,h,Ea,t)|0)&65535;b[ka>>1]=s;if(!(b[ea>>1]&256)){l=0;k=t;s=0;p=c[wa>>2]|0;break}l=t+48|0;j=b[Ba>>1]|0;if((j&65535)<(e[B>>1]|0))k=c[D>>2]|0;else{o=(j&65535)+8&131064;n=o<<2;e:do if(c[G>>2]|0)if(!(a[sa>>0]|0))ca=117;else{j=0;break a}else{do if(0<0|(0==0?(e[H>>1]|0)>>>0>>0:0))j=N;else{k=c[O>>2]|0;if(k|0){c[O>>2]=c[k>>2];c[U>>2]=(c[U>>2]|0)+1;break e}k=c[T>>2]|0;if(!k){j=Z;break}c[T>>2]=c[k>>2];c[U>>2]=(c[U>>2]|0)+1;break e}while(0);c[j>>2]=(c[j>>2]|0)+1;ca=117}while(0);if((ca|0)==117){ca=0;k=_d(ua,n,0)|0}if(!k){j=0;break a}ew(k|0,c[D>>2]|0,e[B>>1]<<2|0)|0;j=c[D>>2]|0;f:do if((j|0)!=(P|0)){if(c[W>>2]|0){Xd(ua,j);break}n=j;do if((c[_>>2]|0)>>>0<=n>>>0){if((c[ba>>2]|0)>>>0<=n>>>0)break;c[j>>2]=c[O>>2];c[O>>2]=j;break f}while(0);if(!j)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{s=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);c[D>>2]=k;b[B>>1]=o;j=b[Ba>>1]|0}b[Ba>>1]=j+1<<16>>16;c[k+((j&65535)<<2)>>2]=l;p=c[wa>>2]|16;c[wa>>2]=p;b[ma>>1]=1;k=t;s=0}else{q=c[t>>2]|0;if(!(c[q+4>>2]&2048)){j=c[q+20>>2]|0;if((j|0)!=0?(fa=c[j>>2]|0,(fa|0)!=0):0){n=((fa|0)<0)<<31>>31;do if(fa>>>0<8){if(fa>>>0<2){j=0;break}o=40;j=fa;do{o=(o&65535)+65526|0;j=cw(j|0,n|0,1)|0;n=L()|0}while(n>>>0<0|(n|0)==0&j>>>0<8);o=o&65535;ca=78}else{if(fa>>>0>255){o=40;j=fa;do{o=(o&65535)+40|0;ca=j;j=bw(j|0,n|0,4)|0;s=n;n=L()|0}while(s>>>0>0|(s|0)==0&ca>>>0>4095);o=o&65535}else{o=40;j=fa}if(!(n>>>0>0|(n|0)==0&j>>>0>15)){ca=78;break}do{o=(o&65535)+10&65535;ca=j;j=bw(j|0,n|0,1)|0;s=n;n=L()|0}while(s>>>0>0|(s|0)==0&ca>>>0>31);ca=78}while(0);if((ca|0)==78){ca=0;j=(o&65535)+65526+(e[3648+((j&7)<<1)>>1]|0)|0}r=j<<16>>16}else r=0}else{r=(p&65535)+-1|0;if((p&65535)>1){p=c[D>>2]|0;o=0;j=46;do{n=c[p+(o<<2)>>2]|0;if(n)j=(c[n>>2]|0)==(q|0)?0:j;o=o+1|0}while((o|0)!=(r|0));r=j}else r=46}if((d[ra>>0]|d[ra+1>>0]<<8)&128){q=b[(c[ta>>2]|0)+(Ea<<1)>>1]|0;n=r&65535;if(n<<16>>16<11)j=0;else{j=n<<16>>16;p=((j|0)<0)<<31>>31;if((n&65535)>255){o=40;n=p;do{o=(o&65535)+40|0;s=j;j=bw(j|0,n|0,4)|0;p=n;n=L()|0}while(p>>>0>0|(p|0)==0&s>>>0>4095);o=o&65535}else{o=40;n=p}if(n>>>0>0|(n|0)==0&j>>>0>15){do{o=(o&65535)+10&65535;s=j;j=bw(j|0,n|0,1)|0;p=n;n=L()|0}while(p>>>0>0|(p|0)==0&s>>>0>31);n=o}else n=o;j=(n&65535)+65493+(e[3648+((j&7)<<1)>>1]|0)|0}if(((q<<16>>16)+10+(j<<16>>16)|0)<(r+K|0)){j=0;break b}}p=c[wa>>2]|4;c[wa>>2]=p;s=r}while(0);do if(!(p&2)){n=(b[ya>>1]|0)+1<<16>>16;b[ya>>1]=n;n=n&65535;t=b[t+8>>1]|0;j=t&65535;if(t<<16>>16<1?(b[(c[v>>2]|0)+(Ea<<1)>>1]|0)>-1:0){j=j-s+(e[Ca>>1]|0)&65535;ca=152;break}j=c[ta>>2]|0;j=(e[j+(n<<1)>>1]|0)-(e[j+(n+-1<<1)>>1]|0)+(e[Ca>>1]|0)|0;n=j&65535;b[Ca>>1]=n;if(u&256){j=j+10&65535;ca=152}}else{j=b[Ca>>1]|0;o=j<<16>>16;do if(k){n=b[k+8>>1]|0;if(n<<16>>16<1){j=(n&65535)+(j&65535)&65535;break}else{j=(j&65535)+65516&65535;break}}while(0);do if(l){n=b[l+8>>1]|0;if(n<<16>>16<1){j=(n&65535)+(j&65535)&65535;break}else{j=(j&65535)+65516&65535;break}}while(0);n=(k|0)!=0;do if(n){if(!((l|0)!=0&(b[k+8>>1]|0)>0))break;if((b[l+8>>1]|0)<=0)break;j=(j&65535)+65516&65535}while(0);ca=(((l|0)!=0)<<31>>31)+(n<<31>>31)+o|0;j=(j<<16>>16>10?j:10)&65535;j=((ca|0)>(j|0)?j:ca)&65535;ca=152}while(0);if((ca|0)==152){ca=0;b[Ca>>1]=j;n=j}r=n&65535;o=r+1+(((b[I>>1]|0)*15|0)/(b[(c[J>>2]|0)+46>>1]|0)|0)|0;j=o&65535;o=o<<16>>16;do if(M<<16>>16>16){if((R|0)>=(o|0))if((X|0)<(o|0)){j=o+1&65535;break}else{j=o+(d[18112+(o-K)>>0]|0)&65535;break}}else if((o+49|0)>=(K|0))if((o+31|0)<(K|0))j=aa;else j=(d[18112+(K-o)>>0]|0)+K&65535;else j=M;while(0);b[S>>1]=j;if(!(p&320)){q=r+16|0;o=q&65535;p=j<<16>>16;q=q<<16>>16;do if(j<<16>>16>16){if((p+49|0)<(q|0)){j=o;break}if((p+31|0)<(q|0)){j=q+1&65535;break}else{j=q+(d[18112+(q-p)>>0]|0)&65535;break}}else{if((q+49|0)<(p|0))break;if((q+31|0)<(p|0)){j=p+1&65535;break}else{j=(d[18112+(p-q)>>0]|0)+p&65535;break}}while(0);b[S>>1]=j}o=s+Y|0;b[S>>1]=o+(j&65535);b[Ca>>1]=o+r;cm(c[ha>>2]|0,va,da);j=_l(f,va)|0;u=c[wa>>2]|0;b[Ca>>1]=(u&2|0)==0?n:Da;if((u&16|0)==0?(e[ya>>1]|0)<(e[$>>1]|0):0)dm(f,g,h,o&65535)|0;b[Ca>>1]=Da}else j=0}while(0);t=Tl(ga)|0}while((j|0)==0&(t|0)!=0)}while(0);ja=va;c[ja>>2]=pa;c[ja+4>>2]=qa;b[ya>>1]=za;b[ka>>1]=la;b[ma>>1]=na;b[Aa>>1]=oa;c[wa>>2]=xa;b[Ca>>1]=Da;b[Ba>>1]=m;if(za<<16>>16!=oa<<16>>16){Ea=j;Ra=Fa;return Ea|0}p=Ea+1|0;if(p>>>0>=(e[h+50>>1]|0)>>>0){Ea=j;Ra=Fa;return Ea|0}if((d[ra>>0]|d[ra+1>>0]<<8)&64){Ea=j;Ra=Fa;return Ea|0}if(b[ua+76>>1]&16384){Ea=j;Ra=Fa;return Ea|0}if((b[(c[ta>>2]|0)+(p<<1)>>1]|0)<=41){Ea=j;Ra=Fa;return Ea|0}n=va+44|0;if((m&65535)<(e[n>>1]|0)){n=za;o=za;j=c[va+48>>2]|0;k=xa;l=Da}else{m=(m&65535)+8&131064;l=m<<2;g:do if(c[ua+272>>2]|0)if(!(a[sa>>0]|0))ca=194;else{Ea=7;Ra=Fa;return Ea|0}else{do if(!(0<0|(0==0?(e[ua+276>>1]|0)>>>0>>0:0))){k=ua+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];sa=ua+284|0;c[sa>>2]=(c[sa>>2]|0)+1;break g}k=ua+296|0;j=c[k>>2]|0;if(!j){j=ua+292|0;break}else{c[k>>2]=c[j>>2];sa=ua+284|0;c[sa>>2]=(c[sa>>2]|0)+1;break g}}else j=ua+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;ca=194}while(0);if((ca|0)==194)j=_d(ua,l,0)|0;if(!j){Ea=7;Ra=Fa;return Ea|0}k=va+48|0;ew(j|0,c[k>>2]|0,e[n>>1]<<2|0)|0;l=c[k>>2]|0;do if((l|0)!=(va+56|0)){if(c[ua+480>>2]|0){Xd(ua,l);break}va=l;if((c[ua+304>>2]|0)>>>0<=va>>>0?(c[ua+308>>2]|0)>>>0>va>>>0:0){va=ua+300|0;c[l>>2]=c[va>>2];c[va>>2]=l;break}if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{va=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-va;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[k>>2]=j;b[n>>1]=m;n=b[ya>>1]|0;o=b[Aa>>1]|0;m=b[Ba>>1]|0;k=c[wa>>2]|0;l=b[Ca>>1]|0}b[ya>>1]=n+1<<16>>16;b[Aa>>1]=o+1<<16>>16;b[Ba>>1]=m+1<<16>>16;c[j+((m&65535)<<2)>>2]=0;c[wa>>2]=k|32768;Ba=c[ta>>2]|0;Ea=(e[Ba+(Ea<<1)>>1]|0)-(e[Ba+(p<<1)>>1]|0)|0;b[Ca>>1]=(l&65535)-Ea;dm(f,g,h,(((Ea<<16)+327680|0)>>>16)+(i&65535)&65535)|0;b[Ca>>1]=Da;b[ya>>1]=za;b[Aa>>1]=za;c[wa>>2]=xa;Ea=0;Ra=Fa;return Ea|0}function em(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;if(!(bk(b,d,e,f)|0)){f=1;return f|0}g=a[e>>0]|0;do if(g<<24>>24==43){if(em(b,d,c[e+12>>2]|0,f)|0){f=1;return f|0}if(!(em(b,d,c[e+16>>2]|0,f)|0)){g=a[e>>0]|0;break}else{f=1;return f|0}}while(0);a:do if(g<<24>>24==51){switch(a[d>>0]|0){case 45:case 50:break a;default:{}}g=c[d+12>>2]|0;b:do if(!g)g=0;else while(1){d=c[g+4>>2]|0;if(!(d&4096))break b;if(!(d&262144))g=g+12|0;else g=(c[g+20>>2]|0)+4|0;g=c[g>>2]|0;if(!g){g=0;break}}while(0);if(!(bk(b,g,c[e+12>>2]|0,f)|0)){f=1;return f|0}}while(0);f=0;return f|0}function fm(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;if((a[e>>0]|0)!=-94){d=0;return d|0}f=c[d+24>>2]|0;if((c[e+28>>2]|0)!=(c[f+4>>2]|0)){d=0;return d|0}f=c[f>>2]|0;h=b[e+32>>1]|0;e=b[f+52>>1]|0;a:do if(e<<16>>16){g=c[f+4>>2]|0;e=e&65535;f=0;while(1){if((b[g+(f<<1)>>1]|0)==h<<16>>16)break;f=f+1|0;if(f>>>0>=e>>>0)break a}if((f&65535)<<16>>16>=0){d=0;return d|0}}while(0);a[d+20>>0]=1;d=2;return d|0} -function gq(b,e){b=b|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,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,_=0,$=0;$=Ra;Ra=Ra+16|0;H=$+4|0;Q=$;W=c[e+12>>2]|0;f=c[W+12>>2]|0;X=c[e>>2]|0;E=c[e+4>>2]|0;F=b+235|0;G=(a[F>>0]|0)==0?157:158;if(!E){_=0;Ra=$;return _|0}_=e+8|0;I=E+-1|0;J=e+44|0;K=e+40|0;M=(f&16|0)!=0;N=(E|0)>1;O=W+4|0;P=(f&32|0)==0;R=(f&34|0)!=0;S=(f&8|0)==0;T=(f&4|0)==0;U=(f&2|0)==0;V=W+8|0;C=(f&1|0)!=0;Y=e+20|0;Z=e+16|0;f=c[_>>2]|0;a:while(1){if((f|0)>0){j=0;do{f=c[X+(j<<2)>>2]|0;if(!(a[f+4>>0]|0)){f=fq(b,f)|0;if(f|0){D=186;break a}}else{i=f+40|0;if(!(a[f+5>>0]|0)){g=c[i>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{B=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-B;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);f=f+52|0;g=c[f>>2]|0;do if(g|0){h=c[g+20>>2]|0;gc(c[g+16>>2]|0)|0;if(h|0){if(c[h+480>>2]|0){Xd(h,g);break}B=g;if((c[h+304>>2]|0)>>>0<=B>>>0?(c[h+308>>2]|0)>>>0>B>>>0:0){B=h+300|0;c[g>>2]=c[B>>2];c[B>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{B=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-B;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[f>>2]=0}c[i>>2]=0}j=j+1|0;f=c[_>>2]|0}while((j|0)<(f|0))}f=f+(((f|0)==(E|0))<<31>>31)|0;if((f|0)>0)do{m=f;f=f+-1|0;b:do if((m|0)<(E|0)){k=f;j=c[X+(f<<2)>>2]|0;do{l=k;k=k+1|0;n=X+(k<<2)|0;i=c[n>>2]|0;h=(c[j+40>>2]|0)==0;o=i;g=c[i+40>>2]|0;if(!h)if(!g){g=0;D=32}else{A=c[j+60>>2]|0;g=c[i+60>>2]|0;B=A-g|0;g=Lu(c[j+64>>2]|0,c[i+64>>2]|0,(B|0)<0?A:g)|0;g=(g|0)==0?B:g}else D=32;if((D|0)==32){D=0;g=(h&1)-((g|0)==0&1)|0}if(!g)g=(c[i>>2]|0)-(c[j>>2]|0)|0;if((g|0)<0)break b;B=X+(l<<2)|0;j=c[B>>2]|0;c[n>>2]=j;c[B>>2]=o}while((k|0)<(I|0))}while(0)}while((m|0)>1);c[_>>2]=0;f=c[X>>2]|0;if(!(c[f+40>>2]|0)){f=0;D=186;break}i=c[f+60>>2]|0;c[J>>2]=i;h=c[f+64>>2]|0;c[K>>2]=h;f=c[W>>2]|0;if(!(M|(f|0)==0)){g=c[O>>2]|0;if((i|0)<(g|0)|S&(i|0)>(g|0)){f=0;D=186;break}if(Lu(h,f,g)|0){f=0;D=186;break}}c:do if(N){f=1;do{g=c[X+(f<<2)>>2]|0;if(!(c[g+40>>2]|0)){D=48;break c}if((c[g+60>>2]|0)!=(i|0)){D=48;break c}if(Lu(h,c[g+64>>2]|0,i)|0){D=48;break c}f=f+1|0}while((f|0)<(E|0))}else{f=1;D=48}while(0);if((D|0)==48){D=0;if(!(R|(f|0)!=1)){f=c[X>>2]|0;g=(c[f+56>>2]|0)==0;if(!(a[F>>0]|0)){D=52;break}if(g){D=51;break}else f=1}}q=0;do{r=c[X+(q<<2)>>2]|0;if((a[F>>0]|0)!=0?(c[r+56>>2]|0)!=0:0){a[H>>0]=0;A=r+88|0;B=A;c[B>>2]=0;c[B+4>>2]=0;B=r+84|0;c[B>>2]=0;kq(0,c[r+72>>2]|0,c[r+76>>2]|0,r+80|0,A,B,H)}else D=64;d:do if((D|0)==64){D=0;n=r+72|0;k=r+40|0;o=r+52|0;g=c[o>>2]|0;e:do if(g|0){l=(c[n>>2]|0)+10|0;p=r+48|0;m=r+44|0;i=c[p>>2]|0;j=g;while(1){g=c[k>>2]|0;if((l-g|0)<=(i|0))break e;h=(c[m>>2]|0)-i|0;h=(h|0)<4096?h:4096;if(jd(j,g+i|0,h,i,81)|0)break d;g=(c[p>>2]|0)+h|0;c[p>>2]=g;g=(c[k>>2]|0)+g|0;h=g+20|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0));i=c[p>>2]|0;j=c[o>>2]|0;if((i|0)==(c[m>>2]|0))break;if(!j)break e}do if(j|0){g=c[j+20>>2]|0;gc(c[j+16>>2]|0)|0;if(g|0){if(c[g+480>>2]|0){Xd(g,j);break}B=j;if((c[g+304>>2]|0)>>>0<=B>>>0?(c[g+308>>2]|0)>>>0>B>>>0:0){B=g+300|0;c[j>>2]=c[B>>2];c[B>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{B=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-B;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);c[o>>2]=0;c[p>>2]=0}while(0);l=c[n>>2]|0;k=r+88|0;g=a[l>>0]|0;h=g&255;do if(!(h&128)){B=k;c[B>>2]=g&255;c[B+4>>2]=0;g=1}else{B=d[l+1>>0]|0;g=B<<7|h&127;if(!(B&128)){B=k;c[B>>2]=g;c[B+4>>2]=0;g=2;break}B=d[l+2>>0]|0;g=B<<14|g&16383;if(!(B&128)){B=k;c[B>>2]=g;c[B+4>>2]=0;g=3;break}B=d[l+3>>0]|0;g=B<<21|g&2097151;if(!(B&128)){B=k;c[B>>2]=g;c[B+4>>2]=0;g=4;break}i=28;j=l+4|0;g=g&268435455;h=0;do{B=j;j=j+1|0;B=d[B>>0]|0;A=cw(B&127|0,0,i|0)|0;g=Sv(A|0,L()|0,g|0,h|0)|0;h=L()|0;i=i+7|0}while(i>>>0<64&((B&128|0)!=0|0!=0));B=k;c[B>>2]=g;c[B+4>>2]=h;g=j-l|0}while(0);c[r+80>>2]=l+g}while(0);q=q+1|0}while(q>>>0>>0);B=f+-1|0;A=f>>>0>1;if(A){i=B;do{j=i;i=i+-1|0;f:do if((j|0)<(f|0)){g=i;l=c[X+(i<<2)>>2]|0;do{h=g;g=g+1|0;k=X+(g<<2)|0;if((Xa[G&255](l,c[k>>2]|0)|0)<0)break f;z=X+(h<<2)|0;y=c[k>>2]|0;l=c[z>>2]|0;c[k>>2]=l;c[z>>2]=y}while((g|0)<(B|0))}while(0)}while((j|0)>1)}if(c[(c[X>>2]|0)+80>>2]|0){g=0;y=0;z=0;while(1){c[H>>2]=0;c[Q>>2]=0;x=c[X>>2]|0;n=x+88|0;o=c[n>>2]|0;n=c[n+4>>2]|0;jq(b,x,H,Q)|0;g:do if(A){h=1;do{i=c[X+(h<<2)>>2]|0;if(!(c[i+80>>2]|0))break g;x=i+88|0;if(!((c[x>>2]|0)==(o|0)?(c[x+4>>2]|0)==(n|0):0))break g;jq(b,i,0,0)|0;h=h+1|0}while(h>>>0>>0)}else h=1;while(0);if(T)i=c[Q>>2]|0;else{q=c[V>>2]|0;j=c[H>>2]|0;p=c[Q>>2]|0;r=j+p|0;k=j;m=0;while(1){h:do if(k>>>0>>0){l=0;i=k;while(1){k=a[i>>0]|0;if(!(k&254|l)){l=i;break h}i=i+1|0;if(i>>>0>>0)l=k&128;else{l=i;break}}}else l=k;while(0);i=l-j|0;if((m|0)==(q|0))break;p=p-i|0;if(!p){j=l;i=0;break}k=l+1|0;j=a[k>>0]|0;i=j&255;do if(!(i&128))j=1;else{x=d[l+2>>0]|0;i=x<<7|j&127;if(!(x&128)){j=2;break}x=d[l+3>>0]|0;i=x<<14|i&16383;if(!(x&128)){j=3;break}x=d[l+4>>0]|0;i=x<<21|i&2097151;if(!(x&128)){j=4;break}i=(a[l+5>>0]&7)<<28|i&268435455;j=5}while(0);k=k+j|0;j=l;m=i}c[H>>2]=j;c[Q>>2]=i}do if(U|(i|0)>0){w=(g|0)>0;u=w&(a[F>>0]|0)!=0;t=Tv(y|0,z|0,o|0,n|0)|0;v=L()|0;x=Tv(o|0,n|0,y|0,z|0)|0;k=L()|0;x=u?t:x;k=u?v:k;if((k|0)<0|(k|0)==0&x>>>0<1?!((x|0)==(o|0)&(k|0)==(n|0)&(w^1)):0){f=267;D=184;break a}j=0;l=x;m=k;do{j=j+1|0;l=bw(l|0,m|0,7)|0;m=L()|0}while(!((l|0)==0&(m|0)==0));j=(C?i+1|0:0)+g+j|0;if((j|0)>(c[Y>>2]|0)){j=j<<1;c[Y>>2]=j;l=c[Z>>2]|0;if(mb()|0){f=7;D=184;break a}j=sb(l,(j|0)>0?j:0,0)|0;if(!j){f=7;D=184;break a}c[Z>>2]=j}else j=c[Z>>2]|0;w=j+g|0;if(P){m=w;l=x;while(1){i=l&255;j=m+1|0;a[m>>0]=i|-128;l=bw(l|0,k|0,7)|0;k=L()|0;if((l|0)==0&(k|0)==0)break;else m=j}a[m>>0]=i&127;g=j-w+g|0;if(!C)break;z=c[Q>>2]|0;ew((c[Z>>2]|0)+g|0,c[H>>2]|0,z|0)|0;g=z+g|0;a[(c[Z>>2]|0)+g>>0]=0;g=g+1|0;break}l=c[H>>2]|0;v=l+i|0;m=a[l>>0]|0;switch(m<<24>>24){case 1:{i=0;j=0;break}case 2:{i=w;m=x;q=k;while(1){j=m&255;p=i+1|0;a[i>>0]=j|-128;m=bw(m|0,q|0,7)|0;q=L()|0;if((m|0)==0&(q|0)==0)break;else i=p}a[i>>0]=j&127;a[p>>0]=2;i=1-w+p|0;j=1;m=a[l>>0]|0;D=140;break}default:{i=0;j=0;D=140}}if((D|0)==140){D=0;m=m<<24>>24;if(m&254)do{l=l+1|0;u=m;m=a[l>>0]|0}while((m&254|u&128|0)!=0)}if(l>>>0>>0)do{r=l+1|0;p=a[r>>0]|0;m=p&255;do if(!(m&128)){l=1;u=p&255;q=0}else{u=d[l+2>>0]|0;m=u<<7|m&127;if(!(u&128)){l=2;u=m;q=0;break}u=d[l+3>>0]|0;m=u<<14|m&16383;if(!(u&128)){l=3;u=m;q=0;break}u=d[l+4>>0]|0;m=u<<21|m&2097151;if(!(u&128)){l=4;u=m;q=0;break}p=28;l=l+5|0;m=m&268435455;q=0;do{u=l;l=l+1|0;u=d[u>>0]|0;t=cw(u&127|0,0,p|0)|0;m=Sv(t|0,L()|0,m|0,q|0)|0;q=L()|0;p=p+7|0}while(p>>>0<64&((u&128|0)!=0|0!=0));l=l-r|0;u=m}while(0);l=r+l|0;m=a[l>>0]|0;if(m<<24>>24==2){if(!j){m=w+i|0;j=m;r=x;t=k;while(1){p=r&255;s=j+1|0;a[j>>0]=p|-128;r=bw(r|0,t|0,7)|0;t=L()|0;if((r|0)==0&(t|0)==0)break;else j=s}a[j>>0]=p&127;i=i-m+s|0;j=1}t=i+1|0;a[w+i>>0]=1;s=w+t|0;r=s;p=u;while(1){i=p&255;m=r+1|0;a[r>>0]=i|-128;p=bw(p|0,q|0,7)|0;q=L()|0;if((p|0)==0&(q|0)==0)break;else r=m}a[r>>0]=i&127;i=m-s+t|0;a[w+i>>0]=2;i=i+1|0;m=a[l>>0]|0}m=m<<24>>24;if(m&254)do{l=l+1|0;u=m;m=a[l>>0]|0}while((m&254|u&128|0)!=0)}while(l>>>0>>0);if(j){a[w+i>>0]=0;i=i+1|0}x=(i|0)==0;g=i+g|0;o=x?y:o;n=x?z:n}else{o=y;n=z}while(0);h=h+(((h|0)==(f|0))<<31>>31)|0;if((h|0)>0)do{k=h;h=h+-1|0;i:do if((k|0)<(f|0)){i=h;m=c[X+(h<<2)>>2]|0;do{j=i;i=i+1|0;l=X+(i<<2)|0;if((Xa[G&255](m,c[l>>2]|0)|0)<0)break i;z=X+(j<<2)|0;y=c[l>>2]|0;m=c[z>>2]|0;c[l>>2]=m;c[z>>2]=y}while((i|0)<(B|0))}while(0)}while((k|0)>1);if(!(c[(c[X>>2]|0)+80>>2]|0))break;else{y=o;z=n}}if((g|0)>0){D=183;break}}c[_>>2]=f}do if((D|0)==51){c[e+52>>2]=c[f+76>>2];f=f+72|0;g=100}else if((D|0)==52){i=c[f+76>>2]|0;c[e+52>>2]=i;f=f+72|0;if(g)g=100;else{h=c[f>>2]|0;if((c[Y>>2]|0)<(i|0)){g=i<<1;c[Y>>2]=g;f=c[Z>>2]|0;if(mb()|0){f=Z;g=7;break}f=sb(f,(g|0)>0?g:0,0)|0;if(!f){f=Z;g=7;break}c[Z>>2]=f}else f=c[Z>>2]|0;ew(f|0,h|0,i|0)|0;f=Z;g=100}}else if((D|0)==183){c[e+48>>2]=c[Z>>2];c[e+52>>2]=g;c[_>>2]=f;_=100;Ra=$;return _|0}else if((D|0)==184){_=f;Ra=$;return _|0}else if((D|0)==186){Ra=$;return f|0}while(0);c[e+48>>2]=c[f>>2];c[_>>2]=1;_=g;Ra=$;return _|0}function hq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=((c[a+80>>2]|0)==0&1)-((c[b+80>>2]|0)==0&1)|0;if(d|0){b=d;return b|0}e=a+88|0;d=c[e>>2]|0;e=c[e+4>>2]|0;g=b+88|0;f=c[g>>2]|0;g=c[g+4>>2]|0;if((d|0)==(f|0)&(e|0)==(g|0)){b=(c[b>>2]|0)-(c[a>>2]|0)|0;return b|0}else{b=(e|0)<(g|0)|(e|0)==(g|0)&d>>>0>>0?1:-1;return b|0}return 0}function iq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=((c[a+80>>2]|0)==0&1)-((c[b+80>>2]|0)==0&1)|0;if(d|0){b=d;return b|0}e=a+88|0;d=c[e>>2]|0;e=c[e+4>>2]|0;g=b+88|0;f=c[g>>2]|0;g=c[g+4>>2]|0;if((d|0)==(f|0)&(e|0)==(g|0)){b=(c[b>>2]|0)-(c[a>>2]|0)|0;return b|0}else{b=(e|0)>(g|0)|(e|0)==(g|0)&d>>>0>f>>>0?1:-1;return b|0}return 0}function jq(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,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=Ra;Ra=Ra+16|0;n=v;i=v+4|0;u=e+80|0;h=c[u>>2]|0;c[n>>2]=h;t=b+235|0;b=h;if(a[t>>0]|0?c[e+56>>2]|0:0){a[i>>0]=0;if(!f)b=e+84|0;else{c[f>>2]=h;b=e+84|0;c[g>>2]=(c[b>>2]|0)+-1}kq(0,c[e+72>>2]|0,c[e+76>>2]|0,n,e+88|0,b,i);if(!(a[i>>0]|0))c[u>>2]=c[n>>2];else c[u>>2]=0;u=0;Ra=v;return u|0}m=(c[e+72>>2]|0)+(c[e+76>>2]|0)|0;q=e+52|0;o=e+40|0;r=e+48|0;p=e+44|0;h=0;while(1){i=a[b>>0]|0;if((i|h)<<24>>24)do{b=b+1|0;h=i&-128;i=a[b>>0]|0}while((i|h)<<24>>24!=0);i=c[q>>2]|0;if(!i)break;j=c[r>>2]|0;k=(c[o>>2]|0)+j|0;if(b>>>0>>0)break;l=(c[p>>2]|0)-j|0;l=(l|0)<4096?l:4096;i=jd(i,k,l,j,81)|0;if(i|0){s=67;break}i=(c[r>>2]|0)+l|0;c[r>>2]=i;i=(c[o>>2]|0)+i|0;j=i+20|0;do{a[i>>0]=0;i=i+1|0}while((i|0)<(j|0));if((c[r>>2]|0)==(c[p>>2]|0)){i=c[q>>2]|0;do if(i|0){j=c[i+20>>2]|0;gc(c[i+16>>2]|0)|0;if(j|0){if(c[j+480>>2]|0){Xd(j,i);break}l=i;if((c[j+304>>2]|0)>>>0<=l>>>0?(c[j+308>>2]|0)>>>0>l>>>0:0){l=j+300|0;c[i>>2]=c[l>>2];c[l>>2]=i;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{l=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);c[q>>2]=0;c[r>>2]=0}}if((s|0)==67){c[n>>2]=b;u=i;Ra=v;return u|0}b=b+1|0;c[n>>2]=b;if(f|0){c[f>>2]=c[u>>2];c[g>>2]=b+-1-(c[u>>2]|0)}do if(b>>>0>>0){l=b;while(1){if(a[l>>0]|0)break;b=l+1|0;if(b>>>0>>0)l=b;else{s=36;break}}if((s|0)==36){c[n>>2]=b;break}c[n>>2]=l;b=c[q>>2]|0;a:do if(b|0){k=l+10|0;i=c[r>>2]|0;j=b;while(1){b=c[o>>2]|0;if((k-b|0)<=(i|0))break a;h=(c[p>>2]|0)-i|0;h=(h|0)<4096?h:4096;if(jd(j,b+i|0,h,i,81)|0){b=0;s=68;break}i=(c[r>>2]|0)+h|0;c[r>>2]=i;i=(c[o>>2]|0)+i|0;j=i+20|0;do{a[i>>0]=0;i=i+1|0}while((i|0)<(j|0));i=c[r>>2]|0;j=c[q>>2]|0;if((i|0)==(c[p>>2]|0))break;if(!j)break a}if((s|0)==68){Ra=v;return b|0}do if(j|0){b=c[j+20>>2]|0;gc(c[j+16>>2]|0)|0;if(b|0){if(c[b+480>>2]|0){Xd(b,j);break}s=j;if((c[b+304>>2]|0)>>>0<=s>>>0?(c[b+308>>2]|0)>>>0>s>>>0:0){s=b+300|0;c[j>>2]=c[s>>2];c[s>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{s=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);c[q>>2]=0;c[r>>2]=0}while(0);h=a[l>>0]|0;b=h&255;do if(!(b&128)){i=1;b=h&255;h=0}else{s=d[l+1>>0]|0;b=s<<7|b&127;if(!(s&128)){i=2;h=0;break}s=d[l+2>>0]|0;b=s<<14|b&16383;if(!(s&128)){i=3;h=0;break}s=d[l+3>>0]|0;b=s<<21|b&2097151;if(!(s&128)){i=4;h=0;break}i=28;j=l+4|0;b=b&268435455;h=0;do{s=j;j=j+1|0;s=d[s>>0]|0;r=cw(s&127|0,0,i|0)|0;b=Sv(r|0,L()|0,b|0,h|0)|0;h=L()|0;i=i+7|0}while(i>>>0<64&((s&128|0)!=0|0!=0));i=j-l|0}while(0);c[u>>2]=l+i;r=(a[t>>0]|0)==0;u=e+88|0;t=u;e=c[t>>2]|0;t=c[t+4>>2]|0;q=Tv(0,0,b|0,h|0)|0;s=L()|0;t=Sv((r?b:q)|0,(r?h:s)|0,e|0,t|0)|0;e=L()|0;c[u>>2]=t;c[u+4>>2]=e;u=0;Ra=v;return u|0}while(0);c[u>>2]=0;u=0;Ra=v;return u|0}function kq(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,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=c[g>>2]|0;if(!k){p=e+f|0;if((f|0)>0){o=(b|0)==0?1:-1;j=1;f=0;b=0;while(1){l=a[e>>0]|0;k=l&255;do if(!(k&128)){n=1;m=l&255;l=0}else{n=d[e+1>>0]|0;k=n<<7|k&127;if(!(n&128)){n=2;m=k;l=0;break}n=d[e+2>>0]|0;k=n<<14|k&16383;if(!(n&128)){n=3;m=k;l=0;break}n=d[e+3>>0]|0;k=n<<21|k&2097151;if(!(n&128)){n=4;m=k;l=0;break}m=28;n=e+4|0;k=k&268435455;l=0;do{q=n;n=n+1|0;q=d[q>>0]|0;r=cw(q&127|0,0,m|0)|0;k=Sv(r|0,L()|0,k|0,l|0)|0;l=L()|0;m=m+7|0}while(m>>>0<64&((q&128|0)!=0|0!=0));n=n-e|0;m=k}while(0);k=e+n|0;m=Yv(m|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;n=L()|0;e=k;l=0;while(1){j=a[e>>0]|0;e=e+1|0;if(!(l<<24>>24|j))break;else l=j&128}f=Sv(m|0,n|0,f|0,b|0)|0;b=L()|0;a:do if(e>>>0

        >>0)do{if(a[e>>0]|0)break a;e=e+1|0}while(e>>>0

        >>0);while(0);if(e>>>0

        >>0)j=o;else break}}else{k=0;f=0;b=0}c[i>>2]=p-k;c[g>>2]=k;r=h;c[r>>2]=f;c[r+4>>2]=b;return}n=(b|0)==0;b=k+-2|0;b:do if(b>>>0>>0)o=b;else while(1){if((a[b>>0]|0)>=0){o=b;break b}b=b+-1|0;if(b>>>0>>0){o=b;break}}while(0);m=o+1|0;p=m;b=a[m>>0]|0;f=b&255;do if(!(f&128)){b=b&255;f=0}else{r=d[o+2>>0]|0;b=r<<7|f&127;if(!(r&128)){f=0;break}r=d[o+3>>0]|0;b=r<<14|b&16383;if(!(r&128)){f=0;break}r=d[o+4>>0]|0;b=r<<21|b&2097151;if(!(r&128)){f=0;break}k=28;l=o+5|0;b=b&268435455;f=0;while(1){r=d[l>>0]|0;q=cw(r&127|0,0,k|0)|0;b=Sv(q|0,L()|0,b|0,f|0)|0;f=L()|0;k=k+7|0;if(!(k>>>0<64&((r&128|0)!=0|0!=0)))break;else l=l+1|0}}while(0);q=Yv(b|0,f|0,(n?1:-1)|0,(n?0:-1)|0)|0;n=L()|0;r=h;n=Tv(c[r>>2]|0,c[r+4>>2]|0,q|0,n|0)|0;q=L()|0;r=h;c[r>>2]=n;c[r+4>>2]=q;if((m|0)==(e|0)){a[j>>0]=1;b=p}else{b=o+-1|0;c:do if(b>>>0>e>>>0){b=-1;while(1){k=b+-1|0;f=a[o+b>>0]|0;b=o+k|0;if(f<<24>>24)break c;if(b>>>0>e>>>0)b=k;else{f=0;break}}}else{f=0;k=-1}while(0);d:do if(b>>>0>e>>>0){b=f;while(1){f=a[o+k>>0]|0;if(!(f&-128&255|b<<24>>24))break;k=k+-1|0;b=o+k|0;if(b>>>0>e>>>0)b=f;else{e=47;break d}}b=o+k+2|0;e=49}else e=47;while(0);if((e|0)==47)if((k|0)<-1&f<<24>>24==0){b=o+(k+2)|0;e=49}do{r=b;b=b+1|0}while((a[r>>0]|0)<0);c[i>>2]=p-b}c[g>>2]=b;return}function lq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if(mb()|0){e=7;return e|0}if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](132)|0;if(!f){e=7;return e|0}else i=f}else{h=Wa[c[29356>>2]&127](132)|0;if((c[14985]|0)>>>0<132)c[14985]=132;g=59064;f=c[g>>2]|0;g=c[g+4>>2]|0;if((g|0)>0|(g|0)==0&f>>>0>0){i=c[14978]|0;g=Tv(f|0,g|0,h|0,((h|0)<0)<<31>>31|0)|0;f=L()|0;c[14768]=((f|0)<0|(f|0)==0&g>>>0<=i>>>0)&1}g=Wa[c[29340>>2]&127](h)|0;if(!g){e=7;return e|0}f=Wa[c[29352>>2]&127](g)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0){c[14987]=f;i=g}else i=g}gw(i|0,0,132)|0;a:do if((b|0)>1){h=d+4|0;f=c[h>>2]|0;b=Eu(f)|0;if((b|0)>0){d=i+4|0;f=a[f>>0]|0;if(f<<24>>24>=0){g=0;do{a[d+(f&255)>>0]=1;g=g+1|0;if((g|0)>=(b|0))break a;f=a[(c[h>>2]|0)+g>>0]|0}while(f<<24>>24>=0)}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);e=1;return e|0}else{e=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);e=1;return e|0}}}else{g=i+4|0;f=1;do{a[g+f>>0]=((f+-48|0)>>>0>9&((f&2147483615)+-65|0)>>>0>25)<<31>>31;f=f+1|0}while((f|0)!=128)}while(0);c[e>>2]=i;e=0;return e|0}function mq(a){a=a|0;var b=0;if(!a)return 0;if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{b=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function nq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(mb()|0){e=7;return e|0}if(!(c[7324]|0)){a=Wa[c[29340>>2]&127](28)|0;if(!a){e=7;return e|0}}else{g=Wa[c[29356>>2]&127](28)|0;if((c[14985]|0)>>>0<28)c[14985]=28;f=59064;a=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&a>>>0>0){h=c[14978]|0;f=Tv(a|0,f|0,g|0,((g|0)<0)<<31>>31|0)|0;a=L()|0;c[14768]=((a|0)<0|(a|0)==0&f>>>0<=h>>>0)&1}a=Wa[c[29340>>2]&127](g)|0;if(!a){h=7;return h|0}f=Wa[c[29352>>2]&127](a)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0)c[14987]=f}c[a+4>>2]=b;if(b){if((d|0)<0)d=Eu(b)|0}else d=0;c[a+8>>2]=d;h=a+12|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[e>>2]=a;h=0;return h|0}function oq(a){a=a|0;var b=0,d=0;b=c[a+20>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function pq(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;l=c[b>>2]|0;o=c[b+4>>2]|0;p=b+12|0;i=c[p>>2]|0;k=c[b+8>>2]|0;if((i|0)>=(k|0)){p=101;return p|0}while(1){a:do if((i|0)<(k|0))while(1){j=a[o+i>>0]|0;if(j<<24>>24<=-1){n=i;break a}if(!(a[(j&255)+(l+4)>>0]|0)){n=i;break a}i=i+1|0;c[p>>2]=i;if((i|0)>=(k|0)){n=i;break}}else n=i;while(0);if((n|0)<(k|0)){i=n;do{j=a[o+i>>0]|0;if(j<<24>>24>-1?a[(j&255)+(l+4)>>0]|0:0)break;i=i+1|0;c[p>>2]=i}while((i|0)<(k|0));if((i|0)>(n|0))break}else i=n;if((i|0)>=(k|0)){i=101;m=23;break}}if((m|0)==23)return i|0;l=i-n|0;i=b+24|0;do if((l|0)>(c[i>>2]|0)){j=l+20|0;c[i>>2]=j;k=b+20|0;i=c[k>>2]|0;if(mb()|0){p=7;return p|0}i=sb(i,(j|0)>0?j:0,0)|0;if(!i){p=7;return p|0}else{c[k>>2]=i;break}}while(0);j=b+20|0;if((l|0)>0){i=0;do{k=a[o+(i+n)>>0]|0;m=k&255;a[(c[j>>2]|0)+i>>0]=(k+-65&255)<26?m+32|0:m;i=i+1|0}while((i|0)!=(l|0))}c[d>>2]=c[j>>2];c[e>>2]=l;c[f>>2]=n;c[g>>2]=c[p>>2];o=b+16|0;p=c[o>>2]|0;c[o>>2]=p+1;c[h>>2]=p;p=0;return p|0}function qq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if(mb()|0){d=7;return d|0}if(!(c[7324]|0)){a=Wa[c[29340>>2]&127](4)|0;if(!a){d=7;return d|0}}else{e=Wa[c[29356>>2]&127](4)|0;if((c[14985]|0)>>>0<4)c[14985]=4;b=59064;a=c[b>>2]|0;b=c[b+4>>2]|0;if((b|0)>0|(b|0)==0&a>>>0>0){f=c[14978]|0;b=Tv(a|0,b|0,e|0,((e|0)<0)<<31>>31|0)|0;a=L()|0;c[14768]=((a|0)<0|(a|0)==0&b>>>0<=f>>>0)&1}a=Wa[c[29340>>2]&127](e)|0;if(!a){f=7;return f|0}b=Wa[c[29352>>2]&127](a)|0;b=(c[14978]|0)+b|0;c[14978]=b;if(b>>>0>(c[14982]|0)>>>0)c[14982]=b;b=(c[14981]|0)+1|0;c[14981]=b;if(b>>>0>(c[14987]|0)>>>0)c[14987]=b}c[a>>2]=0;c[d>>2]=a;f=0;return f|0}function rq(a){a=a|0;var b=0;if(!a)return 0;if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{b=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function sq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(mb()|0){e=7;return e|0}if(!(c[7324]|0)){a=Wa[c[29340>>2]&127](28)|0;if(!a){e=7;return e|0}}else{g=Wa[c[29356>>2]&127](28)|0;if((c[14985]|0)>>>0<28)c[14985]=28;f=59064;a=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&a>>>0>0){h=c[14978]|0;f=Tv(a|0,f|0,g|0,((g|0)<0)<<31>>31|0)|0;a=L()|0;c[14768]=((a|0)<0|(a|0)==0&f>>>0<=h>>>0)&1}a=Wa[c[29340>>2]&127](g)|0;if(!a){h=7;return h|0}f=Wa[c[29352>>2]&127](a)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0)c[14987]=f}c[a+4>>2]=b;if(b){if((d|0)<0)d=Eu(b)|0}else d=0;c[a+8>>2]=d;h=a+12|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[e>>2]=a;h=0;return h|0}function tq(a){a=a|0;var b=0,d=0;b=c[a+20>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function uq(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,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;ka=Ra;Ra=Ra+32|0;q=ka;p=c[b+4>>2]|0;ja=b+12|0;i=c[ja>>2]|0;o=c[b+8>>2]|0;if((i|0)>=(o|0)){ja=101;Ra=ka;return ja|0}while(1){a:do if((i|0)<(o|0))while(1){l=a[p+i>>0]|0;n=l<<24>>24;if(n&128|0){ia=i;break a}if(l<<24>>24>=48?a[26096+(n+-48)>>0]|0:0){ia=i;break a}i=i+1|0;c[ja>>2]=i;if((i|0)>=(o|0)){ia=i;break}}else ia=i;while(0);if((ia|0)<(o|0)){i=ia;do{l=a[p+i>>0]|0;n=l<<24>>24;if(!(n&128)){if(l<<24>>24<48)break;if(!(a[26096+(n+-48)>>0]|0))break}i=i+1|0;c[ja>>2]=i}while((i|0)<(o|0));if((i|0)>(ia|0))break}else i=ia;if((i|0)>=(o|0)){i=101;fa=564;break}}if((fa|0)==564){Ra=ka;return i|0}r=i-ia|0;i=b+24|0;do if((r|0)>(c[i>>2]|0)){l=r+20|0;c[i>>2]=l;n=b+20|0;i=c[n>>2]|0;if(mb()|0){ja=7;Ra=ka;return ja|0}i=sb(i,(l|0)>0?l:0,0)|0;if(!i){ja=7;Ra=ka;return ja|0}else{c[n>>2]=i;ha=n;ga=i;break}}else{ga=b+20|0;ha=ga;ga=c[ga>>2]|0}while(0);o=p+ia|0;do if((r+-3|0)>>>0<=17){l=22;n=0;while(1){i=a[o+n>>0]|0;if((i+-65&255)>=26){if((i+-97&255)>=26){fa=39;break}}else i=(i&255)+32&255;a[q+l>>0]=i;n=n+1|0;if((n|0)>=(r|0))break;else l=l+-1|0}if((fa|0)==39){i=0;k=0;do{j=a[o+k>>0]|0;if((j+-65&255)<26)j=(j&255)+32&255;else i=(j+-48&255)<10?1:i;a[ga+k>>0]=j;k=k+1|0}while((k|0)!=(r|0));j=(i|0)==0?10:3;if((j<<1|0)<(r|0)){i=j;j=r-j|0;do{a[ga+i>>0]=a[ga+j>>0]|0;j=j+1|0;i=i+1|0}while((j|0)<(r|0))}else i=r;a[ga+i>>0]=0;c[e>>2]=i;break}i=q+23|0;a[i>>0]=0;a[i+1>>0]=0;a[i+2>>0]=0;a[i+3>>0]=0;a[i+4>>0]=0;i=q+l|0;l=a[i>>0]|0;b:do if(l<<24>>24==115){l=i+1|0;n=a[l>>0]|0;switch(n<<24>>24){case 101:break;case 115:{a[l>>0]=115;a[i>>0]=115;l=115;break b}default:{i=l;l=n;fa=51;break b}}n=i+2|0;switch(a[n>>0]|0){case 115:break;case 105:{a[n>>0]=105;i=n;l=105;break b}default:{fa=82;break b}}i=i+3|0;if((a[i>>0]|0)==115){a[i>>0]=115;a[n>>0]=115;i=n;l=115}else fa=82}else fa=51;while(0);c:do if((fa|0)==51){d:do switch(l<<24>>24){case 100:{p=i+1|0;if((a[p>>0]|0)!=101){l=i;fa=82;break c}o=i+2|0;l=a[o>>0]|0;if(l<<24>>24!=101){n=o;while(1)if(!(yq(n)|0))break;else n=n+1|0;if(!(a[n>>0]|0)){l=i;fa=82;break c}else break d}l=i+3|0;n=a[l>>0]|0;if(!(n<<24>>24)){l=i;fa=82;break c}while(1){n=(n<<24>>24)+-97|0;if((n|0)==24)n=yq(l+1|0)|0;else n=1-(a[26176+n>>0]|0)|0;if(!n)break;l=l+1|0;n=a[l>>0]|0;if(!(n<<24>>24)){l=i;fa=82;break c}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=i;fa=82;break c}a[o>>0]=101;a[p>>0]=101;i=p;l=101;break c}case 103:{if((a[i+1>>0]|0)!=110){l=i;fa=82;break c}if((a[i+2>>0]|0)!=105){l=i;fa=82;break c}n=i+3|0;l=n;while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=i;fa=82;break c}o=n;l=a[n>>0]|0;break}default:{l=i;fa=82;break c}}while(0);switch(l<<24>>24){case 116:{i=o+1|0;if((a[i>>0]|0)==97){a[i>>0]=97;a[o>>0]=116;i=o+-1|0;a[i>>0]=101;l=101;break c}break}case 108:{i=o+1|0;if((a[i>>0]|0)==98){a[i>>0]=98;a[o>>0]=108;i=o+-1|0;a[i>>0]=101;l=101;break c}break}case 122:{i=o+1|0;if((a[i>>0]|0)==105){a[i>>0]=105;a[o>>0]=122;i=o+-1|0;a[i>>0]=101;l=101;break c}break}default:{}}if(yq(o)|0){i=o+1|0;n=a[i>>0]|0;if(l<<24>>24==n<<24>>24)switch(l<<24>>24){case 122:case 115:case 108:break;default:{fa=83;break c}}if(!(n<<24>>24==0|((l+-119&255)<3|(vq(o)|0)==0))){i=(n<<24>>24)+-97|0;if((i|0)==24)i=yq(o+2|0)|0;else i=1-(a[26176+i>>0]|0)|0;if((i|0)!=0?(yq(o+2|0)|0)!=0:0){i=o+-1|0;a[i>>0]=101;l=101}else{l=o;fa=82}}else{l=o;fa=82}}else{l=o;fa=82}}while(0);if((fa|0)==82){i=l;l=a[l>>0]|0;fa=83}if((fa|0)==83)if(l<<24>>24==121){l=i;do l=l+1|0;while((yq(l)|0)!=0);if(!(a[l>>0]|0))l=121;else{a[i>>0]=105;l=105}}q=i+1|0;n=a[q>>0]|0;e:do switch(n<<24>>24|0){case 97:{if(l<<24>>24==108)if((n<<24>>24==97?(J=i+2|0,(a[J>>0]|0)==110):0)?(I=i+3|0,(a[I>>0]|0)==111):0){n=i+4|0;if(((a[n>>0]|0)==105?(N=i+5|0,(a[N>>0]|0)==116):0)?(M=i+6|0,(a[M>>0]|0)==97):0){l=i+7|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=108;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=108;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=108;break e}a[M>>0]=97;a[N>>0]=116;a[n>>0]=101;i=n;l=101;break e}n=i+4|0;if(((a[n>>0]|0)==105?(H=i+5|0,(a[H>>0]|0)==116):0)?(v=i+6|0,x=a[v>>0]|0,x<<24>>24!=0):0){l=v;m=x;while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=108;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(a[l>>0]|0){a[H>>0]=116;a[n>>0]=105;a[I>>0]=111;a[J>>0]=110;i=J;l=110}else l=108}else l=108}else l=108;break}case 99:{if(l<<24>>24==105)if(n<<24>>24==99?(Y=i+2|0,(a[Y>>0]|0)==110):0){n=i+3|0;switch(a[n>>0]|0){case 101:{l=i+4|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=105;break e}a[n>>0]=101;a[Y>>0]=110;a[q>>0]=99;a[i>>0]=101;l=101;break e}case 97:{l=i+4|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=105;break e}a[n>>0]=97;a[Y>>0]=110;a[q>>0]=99;a[i>>0]=101;l=101;break e}default:{l=105;break e}}}else l=105;break}case 101:{if(l<<24>>24==114)if(((n<<24>>24==101?(E=i+2|0,(a[E>>0]|0)==122):0)?(D=i+3|0,(a[D>>0]|0)==105):0)?(s=i+4|0,m=a[s>>0]|0,m<<24>>24!=0):0){l=s;while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=114;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(a[l>>0]|0){a[D>>0]=105;a[E>>0]=122;a[q>>0]=101;i=q;l=101}else l=114}else l=114;break}case 103:{if(l<<24>>24==105)if(((n<<24>>24==103?(G=i+2|0,(a[G>>0]|0)==111):0)?(F=i+3|0,(a[F>>0]|0)==108):0)?(t=i+4|0,u=a[t>>0]|0,u<<24>>24!=0):0){l=t;m=u;while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(a[l>>0]|0){a[F>>0]=108;a[G>>0]=111;a[q>>0]=103;i=q;l=103}else l=105}else l=105;break}case 108:{if(l<<24>>24==105)if(n<<24>>24==108){p=i+2|0;switch(a[p>>0]|0){case 98:{l=i+3|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=105;break e}a[p>>0]=98;a[q>>0]=108;a[i>>0]=101;l=101;break e}case 108:{n=i+3|0;if((a[n>>0]|0)!=97){l=105;break e}l=i+4|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=105;break e}a[n>>0]=97;a[p>>0]=108;i=p;l=108;break e}case 116:{o=i+3|0;if((a[o>>0]|0)!=110){l=105;break e}n=i+4|0;if((a[n>>0]|0)!=101){l=105;break e}l=i+5|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=105;break e}a[n>>0]=101;a[o>>0]=110;a[p>>0]=116;i=p;l=116;break e}case 101:{l=i+3|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=105;break e}a[p>>0]=101;i=p;l=101;break e}case 115:{o=i+3|0;if((a[o>>0]|0)!=117){l=105;break e}n=i+4|0;if((a[n>>0]|0)!=111){l=105;break e}l=i+5|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=105;break e}a[n>>0]=111;a[o>>0]=117;a[p>>0]=115;i=p;l=115;break e}default:{l=105;break e}}}else l=105;break}case 111:{switch(l<<24>>24){case 110:break;case 114:{if(n<<24>>24!=111){l=114;break e}o=i+2|0;if((a[o>>0]|0)!=116){l=114;break e}n=i+3|0;if((a[n>>0]|0)!=97){l=114;break e}l=i+4|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=114;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=114;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=114;break e}a[n>>0]=97;a[o>>0]=116;a[q>>0]=101;i=q;l=101;break e}default:break e}if((n<<24>>24==111?(L=i+2|0,(a[L>>0]|0)==105):0)?(K=i+3|0,(a[K>>0]|0)==116):0){n=i+4|0;if(((a[n>>0]|0)==97?(P=i+5|0,(a[P>>0]|0)==122):0)?(O=i+6|0,(a[O>>0]|0)==105):0){l=i+7|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=110;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=110;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=110;break e}a[O>>0]=105;a[P>>0]=122;a[n>>0]=101;i=n;l=101;break e}n=i+4|0;if((a[n>>0]|0)==97?(w=i+5|0,y=a[w>>0]|0,y<<24>>24!=0):0){l=w;m=y;while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=110;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(a[l>>0]|0){a[n>>0]=97;a[K>>0]=116;a[L>>0]=101;i=L;l=101}else l=110}else l=110}else l=110;break}case 115:{switch(l<<24>>24){case 109:{if(n<<24>>24!=115){l=109;break e}if((a[i+2>>0]|0)!=105){l=109;break e}o=i+3|0;if((a[o>>0]|0)!=108){l=109;break e}n=i+4|0;if((a[n>>0]|0)!=97){l=109;break e}l=i+5|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=109;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=109;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=109;break e}a[n>>0]=97;a[o>>0]=108;i=o;l=108;break e}case 115:break;default:break e}if((n<<24>>24==115?(a[i+2>>0]|0)==101:0)?(a[i+3>>0]|0)==110:0){n=i+4|0;if(((a[n>>0]|0)==101?(R=i+5|0,(a[R>>0]|0)==118):0)?(Q=i+6|0,(a[Q>>0]|0)==105):0){l=i+7|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=115;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=115;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=115;break e}a[Q>>0]=105;a[R>>0]=118;a[n>>0]=101;i=n;l=101;break e}n=i+4|0;if(((a[n>>0]|0)==108?(W=i+5|0,(a[W>>0]|0)==117):0)?(V=i+6|0,(a[V>>0]|0)==102):0){l=i+7|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=115;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=115;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=115;break e}a[V>>0]=102;a[W>>0]=117;a[n>>0]=108;i=n;l=108;break e}n=i+4|0;if((((a[n>>0]|0)==115?(T=i+5|0,(a[T>>0]|0)==117):0)?(S=i+6|0,(a[S>>0]|0)==111):0)?(z=i+7|0,B=a[z>>0]|0,B<<24>>24!=0):0){l=z;m=B;while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=115;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(a[l>>0]|0){a[S>>0]=111;a[T>>0]=117;a[n>>0]=115;i=n;l=115}else l=115}else l=115}else l=115;break}case 116:{if(l<<24>>24==105)if(n<<24>>24==116?(X=i+2|0,(a[X>>0]|0)==105):0){o=i+3|0;switch(a[o>>0]|0){case 108:break;case 118:{n=i+4|0;if((a[n>>0]|0)!=105){l=105;break e}l=i+5|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=105;break e}a[n>>0]=105;a[o>>0]=118;a[X>>0]=101;i=X;l=101;break e}default:{l=105;break e}}n=i+4|0;if((a[n>>0]|0)==97){l=i+5|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=105;break e}a[n>>0]=97;a[o>>0]=108;i=o;l=108;break e}n=i+4|0;if(((a[n>>0]|0)==105?(U=i+5|0,(a[U>>0]|0)==98):0)?(A=i+6|0,C=a[A>>0]|0,C<<24>>24!=0):0){l=A;m=C;while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(a[l>>0]|0){a[U>>0]=98;a[n>>0]=108;a[o>>0]=101;i=o;l=101}else l=105}else l=105}else l=105;break}default:{}}while(0);f:do switch(l<<24>>24|0){case 101:{if(l<<24>>24==101)switch(a[i+1>>0]|0){case 116:{if((a[i+2>>0]|0)!=97)break f;m=i+3|0;if((a[m>>0]|0)!=99)break f;l=i+4|0;if((a[l>>0]|0)!=105)break f;j=i+5|0;k=a[j>>0]|0;if(!(k<<24>>24))break f;while(1){k=(k<<24>>24)+-97|0;if((k|0)==24)k=yq(j+1|0)|0;else k=1-(a[26176+k>>0]|0)|0;if(!k)break;j=j+1|0;k=a[j>>0]|0;if(!(k<<24>>24))break f}while(1)if(!(yq(j)|0))break;else j=j+1|0;if(!(a[j>>0]|0))break f;a[l>>0]=105;a[m>>0]=99;i=m;break f}case 118:{if((a[i+2>>0]|0)!=105)break f;if((a[i+3>>0]|0)!=116)break f;if((a[i+4>>0]|0)!=97)break f;l=i+5|0;k=a[l>>0]|0;if(!(k<<24>>24))break f;j=l;while(1){k=(k<<24>>24)+-97|0;if((k|0)==24)k=yq(j+1|0)|0;else k=1-(a[26176+k>>0]|0)|0;if(!k)break;j=j+1|0;k=a[j>>0]|0;if(!(k<<24>>24))break f}while(1)if(!(yq(j)|0))break;else j=j+1|0;i=(a[j>>0]|0)==0?i:l;break f}case 122:{if((a[i+2>>0]|0)!=105)break f;m=i+3|0;if((a[m>>0]|0)!=108)break f;l=i+4|0;if((a[l>>0]|0)!=97)break f;j=i+5|0;k=a[j>>0]|0;if(!(k<<24>>24))break f;while(1){k=(k<<24>>24)+-97|0;if((k|0)==24)k=yq(j+1|0)|0;else k=1-(a[26176+k>>0]|0)|0;if(!k)break;j=j+1|0;k=a[j>>0]|0;if(!(k<<24>>24))break f}while(1)if(!(yq(j)|0))break;else j=j+1|0;if(!(a[j>>0]|0))break f;a[l>>0]=97;a[m>>0]=108;i=m;break f}default:break f}break}case 105:{if(((((l<<24>>24==105?(a[i+1>>0]|0)==116:0)?(a[i+2>>0]|0)==105:0)?(ba=i+3|0,(a[ba>>0]|0)==99):0)?(aa=i+4|0,(a[aa>>0]|0)==105):0)?(j=i+5|0,Z=a[j>>0]|0,Z<<24>>24!=0):0){k=Z;while(1){k=(k<<24>>24)+-97|0;if((k|0)==24)k=yq(j+1|0)|0;else k=1-(a[26176+k>>0]|0)|0;if(!k)break;j=j+1|0;k=a[j>>0]|0;if(!(k<<24>>24))break f}while(1)if(!(yq(j)|0))break;else j=j+1|0;if(a[j>>0]|0){a[aa>>0]=105;a[ba>>0]=99;i=ba}}break}case 108:{if(l<<24>>24==108){switch(a[i+1>>0]|0){case 97:break;case 117:{if((a[i+2>>0]|0)!=102)break f;l=i+3|0;k=a[l>>0]|0;if(!(k<<24>>24))break f;j=l;while(1){k=(k<<24>>24)+-97|0;if((k|0)==24)k=yq(j+1|0)|0;else k=1-(a[26176+k>>0]|0)|0;if(!k)break;j=j+1|0;k=a[j>>0]|0;if(!(k<<24>>24))break f}while(1)if(!(yq(j)|0))break;else j=j+1|0;i=(a[j>>0]|0)==0?i:l;break f}default:break f}l=i+2|0;if(((a[l>>0]|0)==99?(da=i+3|0,(a[da>>0]|0)==105):0)?(_=i+4|0,$=a[_>>0]|0,$<<24>>24!=0):0){j=_;k=$;while(1){k=(k<<24>>24)+-97|0;if((k|0)==24)k=yq(j+1|0)|0;else k=1-(a[26176+k>>0]|0)|0;if(!k)break;j=j+1|0;k=a[j>>0]|0;if(!(k<<24>>24))break f}while(1)if(!(yq(j)|0))break;else j=j+1|0;if(a[j>>0]|0){a[da>>0]=105;a[l>>0]=99;i=l}}}break}case 115:{if((((l<<24>>24==115?(a[i+1>>0]|0)==115:0)?(a[i+2>>0]|0)==101:0)?(a[i+3>>0]|0)==110:0)?(ca=i+4|0,k=a[ca>>0]|0,k<<24>>24!=0):0){j=ca;while(1){k=(k<<24>>24)+-97|0;if((k|0)==24)k=yq(j+1|0)|0;else k=1-(a[26176+k>>0]|0)|0;if(!k)break;j=j+1|0;k=a[j>>0]|0;if(!(k<<24>>24))break f}while(1)if(!(yq(j)|0))break;else j=j+1|0;i=(a[j>>0]|0)==0?i:ca}break}default:{}}while(0);l=a[i+1>>0]|0;g:do switch(l<<24>>24|0){case 97:{j=a[i>>0]|0;if(j<<24>>24==108){j=i+2|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399}else fa=400;break}case 99:{if((a[i>>0]|0)==101)if((a[i+2>>0]|0)==110){switch(a[i+3>>0]|0){case 101:case 97:break;default:{j=i;fa=399;break g}}j=i+4|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399}else{j=i;fa=399}break}case 101:{j=a[i>>0]|0;if(j<<24>>24==114){j=i+2|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399}else fa=400;break}case 105:{j=a[i>>0]|0;if(j<<24>>24==99){j=i+2|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399}else fa=400;break}case 108:{if((a[i>>0]|0)==101)if((a[i+2>>0]|0)==98){switch(a[i+3>>0]|0){case 105:case 97:break;default:{j=i;fa=399;break g}}j=i+4|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399}else{j=i;fa=399}break}case 110:{j=a[i>>0]|0;if(j<<24>>24==116){switch(a[i+2>>0]|0){case 97:{j=i+3|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399;break g}case 101:break;default:break g}if(l<<24>>24==110){j=i+3|0;if((a[j>>0]|0)!=109){fa=(wq(j)|0)==0;j=fa?i:j;fa=399;break g}j=i+4|0;if((a[j>>0]|0)==101){j=i+5|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399;break g}else{fa=(wq(j)|0)==0;j=fa?i:j;fa=399;break g}}else{j=i;fa=399}}else fa=400;break}case 111:{j=a[i>>0]|0;if(j<<24>>24==117){j=i+2|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399;break g}k=i+3|0;if(l<<24>>24==111&(j<<24>>24==110?((a[k>>0]|0)+-115&255)<2:0)?(a[i+2>>0]|0)==105:0){j=(wq(k)|0)==0;j=j?i:k;fa=399}else{j=i;fa=399}break}case 115:{j=a[i>>0]|0;if(j<<24>>24==109)if((a[i+2>>0]|0)==105){j=i+3|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399}else{j=i;fa=399}else fa=400;break}case 116:switch(a[i>>0]|0){case 101:{if(l<<24>>24!=116){j=i;fa=399;break g}if((a[i+2>>0]|0)!=97){j=i;fa=399;break g}j=i+3|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399;break g}case 105:{if(l<<24>>24!=116){j=i;fa=399;break g}if((a[i+2>>0]|0)!=105){j=i;fa=399;break g}j=i+3|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399;break g}default:{j=i;fa=399;break g}}case 117:{j=a[i>>0]|0;if(j<<24>>24==115)if((a[i+2>>0]|0)==111){j=i+3|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399}else{j=i;fa=399}else fa=400;break}case 122:case 118:{if((a[i>>0]|0)==101)if((a[i+2>>0]|0)==105){j=i+3|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399}else{j=i;fa=399}break}default:{j=i;fa=399}}while(0);if((fa|0)==399){i=j;j=a[j>>0]|0;fa=400}do if((fa|0)==400)if(j<<24>>24==101){k=i+1|0;if(!(wq(k)|0)){if(vq(k)|0){if((yq(k)|0?((a[k>>0]|0)+-119&255)>=3:0)?(ea=a[i+2>>0]|0,ea<<24>>24):0){j=(ea<<24>>24)+-97|0;if((j|0)==24)j=yq(i+3|0)|0;else j=1-(a[26176+j>>0]|0)|0;if(j|0?yq(i+3|0)|0:0)break}i=k}}else i=k}while(0);if((wq(i)|0)!=0?(a[i>>0]|0)==108:0){fa=i+1|0;i=(a[fa>>0]|0)==108?fa:i}k=Eu(i)|0;c[e>>2]=k;a[ga+k>>0]=0;j=a[i>>0]|0;if(j<<24>>24)do{i=i+1|0;k=k+-1|0;a[ga+k>>0]=j;j=a[i>>0]|0}while(j<<24>>24!=0)}else{if((r|0)>0){i=0;k=0;do{j=a[o+k>>0]|0;if((j+-65&255)<26)j=(j&255)+32&255;else i=(j+-48&255)<10?1:i;a[ga+k>>0]=j;k=k+1|0}while((k|0)!=(r|0));if(!i){i=r;fa=31}else{i=r;j=3}}else{i=0;fa=31}if((fa|0)==31)j=10;if((j<<1|0)<(r|0)){i=j;j=r-j|0;do{a[ga+i>>0]=a[ga+j>>0]|0;j=j+1|0;i=i+1|0}while((j|0)<(r|0))}a[ga+i>>0]=0;c[e>>2]=i}while(0);c[d>>2]=c[ha>>2];c[f>>2]=ia;c[g>>2]=c[ja>>2];g=b+16|0;ja=c[g>>2]|0;c[g>>2]=ja+1;c[h>>2]=ja;ja=0;Ra=ka;return ja|0}function vq(b){b=b|0;var c=0,d=0;c=a[b>>0]|0;if(!(c<<24>>24)){d=0;return d|0}while(1){c=(c<<24>>24)+-97|0;if((c|0)==24)c=yq(b+1|0)|0;else c=1-(a[26176+c>>0]|0)|0;if(!c)break;b=b+1|0;c=a[b>>0]|0;if(!(c<<24>>24)){b=0;d=17;break}}if((d|0)==17)return b|0;while(1)if(!(yq(b)|0))break;else b=b+1|0;if(!(a[b>>0]|0)){d=0;return d|0}while(1)if(!(xq(b)|0))break;else b=b+1|0;if(!(a[b>>0]|0)){d=1;return d|0}while(1)if(!(yq(b)|0))break;else b=b+1|0;d=(a[b>>0]|0)==0&1;return d|0}function wq(b){b=b|0;var c=0,d=0,e=0,f=0;c=a[b>>0]|0;if(!(c<<24>>24)){f=0;return f|0}while(1){c=(c<<24>>24)+-97|0;if((c|0)==24)c=yq(b+1|0)|0;else c=1-(a[26176+c>>0]|0)|0;if(!c)break;d=b+1|0;c=a[d>>0]|0;if(!(c<<24>>24)){e=0;f=20;break}else b=d}if((f|0)==20)return e|0;while(1)if(!(yq(b)|0))break;else b=b+1|0;c=a[b>>0]|0;if(!(c<<24>>24)){f=0;return f|0}while(1){c=(c<<24>>24)+-97|0;if((c|0)==24)c=yq(b+1|0)|0;else c=1-(a[26176+c>>0]|0)|0;if(!c)break;d=b+1|0;c=a[d>>0]|0;if(!(c<<24>>24)){e=0;f=20;break}else b=d}if((f|0)==20)return e|0;while(1)if(!(yq(b)|0))break;else b=b+1|0;f=(a[b>>0]|0)!=0&1;return f|0}function xq(b){b=b|0;var c=0;c=a[b>>0]|0;if(!(c<<24>>24)){b=0;return b|0}c=(c<<24>>24)+-97|0;if((c|0)==24){b=yq(b+1|0)|0;return b|0}else{b=1-(a[26176+c>>0]|0)|0;return b|0}return 0}function yq(b){b=b|0;var c=0;c=a[b>>0]|0;if(!(c<<24>>24)){b=0;return b|0}c=(c<<24>>24)+-97|0;if((c|0)!=24){b=a[26176+c>>0]|0;return b|0}c=a[b+1>>0]|0;if(!(c<<24>>24)){b=1;return b|0}c=(c<<24>>24)+-97|0;if((c|0)==24)c=yq(b+2|0)|0;else c=1-(a[26176+c>>0]|0)|0;b=(c|0)!=0&1;return b|0}function zq(d,e,f){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;x=Ra;Ra=Ra+32|0;w=x+16|0;s=x+8|0;o=x;v=x+24|0;t=c[(c[d+4>>2]|0)+8>>2]|0;j=c[f>>2]|0;i=b[j+8>>1]|0;if((i&514)==514?(a[j+10>>0]|0)==1:0){u=c[j+16>>2]|0;k=j}else if(!(i&1)){u=Gg(j,1)|0;k=c[f>>2]|0}else{u=0;k=j}i=b[k+8>>1]|0;if((i&2)!=0?(a[k+10>>0]|0)==1:0)i=c[k+12>>2]|0;else p=9;do if((p|0)==9){j=i&65535;if(!(j&16)){if(j&1|0){i=0;break}i=Fg(k,1)|0;break}else{i=c[k+12>>2]|0;if(!(j&16384))break;i=(c[k>>2]|0)+i|0;break}}while(0);k=i+1|0;a:do if((e|0)!=2){b:do if(((!((u|0)==0|(t|0)==0)?(l=t+16|0,c[l>>2]|0):0)?(m=Xa[(a[t>>0]<<24>>24==1?154:155)&255](u,k)|0,m=(c[t+12>>2]|0)+-1&m,n=c[l>>2]|0,n|0):0)?(h=c[n+(m<<3)>>2]|0,q=(a[t>>0]|0)==1?79:80,g=c[n+(m<<3)+4>>2]|0,(h|0)!=0&(g|0)!=0):0){while(1){h=h+-1|0;if(!(Za[q&127](c[g+12>>2]|0,c[g+16>>2]|0,u,k)|0))break;g=c[g>>2]|0;if(!((h|0)!=0&(g|0)!=0))break b}h=c[g+8>>2]|0;if(h|0){g=d;j=h;break a}}while(0);c[s>>2]=u;g=Bb(53600,s)|0;c[d+20>>2]=1;yc(c[d>>2]|0,g,-1,1,-1)|0;if(!g){Ra=x;return}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);Ra=x;return}else{d=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);Ra=x;return}}else{i=c[(c[d>>2]|0)+32>>2]|0;c[v>>2]=0;c[o>>2]=-1;c[o+4>>2]=v;yd(i,1004,o)|0;i=f+4|0;j=c[i>>2]|0;g=b[j+8>>1]|0;if((c[v>>2]|0)==0&(g&32)==0){c[d+20>>2]=1;yc(c[d>>2]|0,53578,-1,1,-1)|0;Ra=x;return}if((g&2)!=0?(a[j+10>>0]|0)==1:0){r=c[j+12>>2]|0;p=24}else p=19;do if((p|0)==19){h=g&65535;if(!(h&16)){if(h&1|0)break;r=Fg(j,1)|0;p=24;break}else{g=c[j+12>>2]|0;if(!(h&16384)){r=g;p=24;break}r=(c[j>>2]|0)+g|0;p=24;break}}while(0);if((p|0)==24?!((u|0)==0|(r|0)!=4):0){s=mc(c[i>>2]|0)|0;s=c[s>>2]|0;h=s;if((Ep(t,u,k,s)|0)!=(s|0)){g=d;j=h;break}c[d+20>>2]=1;yc(c[d>>2]|0,34831,-1,1,-1)|0;g=d;j=h;break}c[d+20>>2]=1;yc(c[d>>2]|0,53555,-1,1,-1)|0;Ra=x;return}while(0);u=c[(c[g>>2]|0)+32>>2]|0;c[v>>2]=0;c[w>>2]=-1;c[w+4>>2]=v;yd(u,1004,w)|0;if((c[v>>2]|0)==0?(b[(c[f>>2]|0)+8>>1]&32)==0:0){Ra=x;return}i=c[g>>2]|0;g=c[i+32>>2]|0;if(g|0?(c[g+108>>2]|0)<4:0){g=c[g+236>>2]|0;if(g|0){c[g+12>>2]=18;w=g+36|0;c[w>>2]=(c[w>>2]|0)+1}c[d+20>>2]=18;yc(i,31223,-1,1,0)|0;Ra=x;return}do if((c[i+24>>2]|0)<32)if(!(Eg(i,32,0)|0)){g=i+8|0;h=c[i+16>>2]|0;break}else{Ra=x;return}else{h=c[i+20>>2]|0;c[i+16>>2]=h;g=i+8|0;b[g>>1]=b[g>>1]&13}while(0);a[h>>0]=j;a[h+1>>0]=j>>8;a[h+2>>0]=j>>16;a[h+3>>0]=j>>24;c[i+12>>2]=4;b[g>>1]=16;a[i+10>>0]=1;Ra=x;return}function Aq(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 Xq(1,a,b,c,d,e,f)|0}function Bq(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 Xq(0,a,b,c,d,e,f)|0}function Cq(b,d){b=b|0;d=d|0;var e=0,f=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;t=d+20|0;c[t>>2]=0;o=d+40|0;g[o>>3]=5.0e6;p=c[d>>2]|0;if((p|0)>0){q=c[d+4>>2]|0;r=b+24|0;m=-1;j=-1;n=0;f=-1;l=-1;e=0;a:while(1){b:do if(!(a[q+(n*12|0)+5>>0]|0))if((a[q+(n*12|0)+4>>0]|0)==64){s=18;break a}else{h=m;i=j}else{i=c[q+(n*12|0)>>2]|0;if((i|0)<0)k=1;else k=(i|0)==((c[r>>2]|0)+1|0);h=a[q+(n*12|0)+4>>0]|0;c:do if(!((f|0)<0&(k&h<<24>>24==2))){switch(h<<24>>24){case 2:{s=13;break c}case 64:break;default:{i=j;break c}}if((i|0)>-1?(i|0)<=(c[r>>2]|0):0){e=i+2|0;c[t>>2]=e;g[o>>3]=2.0;i=j;f=n;h=64}else{i=j;h=64}}else{c[t>>2]=1;g[o>>3]=1.0;f=n;e=1;s=13}while(0);if((s|0)==13){s=0;i=(i|0)==((c[r>>2]|0)+2|0)?n:j;h=2}if(k){k=(h&255)+-4|0;switch(k>>>2|k<<30|0){case 0:case 7:{h=n;break b}case 3:case 1:{h=m;l=n;break b}default:{h=m;break b}}}else h=m}while(0);n=n+1|0;if((n|0)>=(p|0))break;else{m=h;j=i}}if((s|0)==18){c[t>>2]=0;g[o>>3]=1.e+50;d=d+48|0;c[d>>2]=0;c[d+4>>2]=262144;return 0}if((e|0)==1){e=d+56|0;c[e>>2]=c[e>>2]|1;e=1}if((f|0)>-1){s=c[d+16>>2]|0;c[s+(f<<3)>>2]=1;a[s+(f<<3)+4>>0]=1;f=2}else f=1;if((i|0)>-1){e=e|65536;c[t>>2]=e;c[(c[d+16>>2]|0)+(i<<3)>>2]=f;f=f+1|0}if((h|0)>-1){e=e|131072;c[t>>2]=e;c[(c[d+16>>2]|0)+(h<<3)>>2]=f;f=f+1|0}if((l|0)>-1){c[t>>2]=e|262144;c[(c[d+16>>2]|0)+(l<<3)>>2]=f}}if((c[d+8>>2]|0)!=1)return 0;e=c[d+12>>2]|0;t=c[e>>2]|0;if((t|0)>=0?(t|0)!=((c[b+24>>2]|0)+1|0):0)return 0;c[d+24>>2]=(a[e+4>>0]|0)==0?54528:54523;c[d+32>>2]=1;return 0}function Dq(a){a=a|0;var b=0,d=0;gc(c[a+216>>2]|0)|0;b=a+56|0;gc(c[b>>2]|0)|0;gc(c[b+4>>2]|0)|0;gc(c[b+8>>2]|0)|0;gc(c[b+12>>2]|0)|0;gc(c[b+16>>2]|0)|0;gc(c[b+20>>2]|0)|0;gc(c[b+24>>2]|0)|0;gc(c[b+28>>2]|0)|0;gc(c[b+32>>2]|0)|0;gc(c[b+36>>2]|0)|0;gc(c[b+40>>2]|0)|0;gc(c[b+44>>2]|0)|0;gc(c[b+48>>2]|0)|0;gc(c[b+52>>2]|0)|0;gc(c[b+56>>2]|0)|0;gc(c[b+60>>2]|0)|0;gc(c[b+64>>2]|0)|0;gc(c[b+68>>2]|0)|0;gc(c[b+72>>2]|0)|0;gc(c[b+76>>2]|0)|0;gc(c[b+80>>2]|0)|0;gc(c[b+84>>2]|0)|0;gc(c[b+88>>2]|0)|0;gc(c[b+92>>2]|0)|0;gc(c[b+96>>2]|0)|0;gc(c[b+100>>2]|0)|0;gc(c[b+104>>2]|0)|0;gc(c[b+108>>2]|0)|0;gc(c[b+112>>2]|0)|0;gc(c[b+116>>2]|0)|0;gc(c[b+120>>2]|0)|0;gc(c[b+124>>2]|0)|0;gc(c[b+128>>2]|0)|0;gc(c[b+132>>2]|0)|0;gc(c[b+136>>2]|0)|0;gc(c[b+140>>2]|0)|0;gc(c[b+144>>2]|0)|0;gc(c[b+148>>2]|0)|0;gc(c[b+152>>2]|0)|0;gc(c[b+156>>2]|0)|0;b=c[a+244>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);b=c[a+220>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);b=c[a+224>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);b=c[a+40>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);b=c[a+44>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);d=c[a+36>>2]|0;Wa[c[(c[d>>2]|0)+8>>2]&127](d)|0;if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function Eq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;d=Ra;Ra=Ra+48|0;e=d;b=d+44|0;c[b>>2]=0;h=c[a+16>>2]|0;f=c[a+12>>2]|0;g=c[a+20>>2]|0;i=(c[a+40>>2]|0)==0?59952:54718;c[e>>2]=h;c[e+4>>2]=g;c[e+8>>2]=h;c[e+12>>2]=g;c[e+16>>2]=h;c[e+20>>2]=g;c[e+24>>2]=h;c[e+28>>2]=g;c[e+32>>2]=i;c[e+36>>2]=h;c[e+40>>2]=g;_q(b,f,54532,e);b=c[b>>2]|0;if(b|0){i=b;Ra=d;return i|0}Dq(a)|0;i=0;Ra=d;return i|0}function Fq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;do if(!(mb()|0)){if(!(c[7324]|0)){a=Wa[c[29340>>2]&127](96)|0;c[b>>2]=a;if(!a){b=7;return b|0}}else{e=Wa[c[29356>>2]&127](96)|0;if((c[14985]|0)>>>0<96)c[14985]=96;d=59064;a=c[d>>2]|0;d=c[d+4>>2]|0;if((d|0)>0|(d|0)==0&a>>>0>0){f=c[14978]|0;d=Tv(a|0,d|0,e|0,((e|0)<0)<<31>>31|0)|0;a=L()|0;c[14768]=((a|0)<0|(a|0)==0&d>>>0<=f>>>0)&1}a=Wa[c[29340>>2]&127](e)|0;if(!a)break;d=Wa[c[29352>>2]&127](a)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0)c[14987]=d;c[b>>2]=a}d=a+96|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(d|0));f=0;return f|0}while(0);c[b>>2]=0;f=7;return f|0}function Gq(a){a=a|0;var b=0;$q(a);if(!a)return 0;if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{b=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function Hq(f,h,i,j,k){f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var 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,J=0,K=0,M=0;K=Ra;Ra=Ra+128|0;I=K+104|0;E=K+96|0;F=K+64|0;w=K+56|0;v=K+48|0;z=K+40|0;A=K;B=K+116|0;x=K+112|0;y=K+108|0;G=c[f>>2]|0;r=h&65535;if(!r){j=0;J=0}else{j=1;J=c[k>>2]|0}if(!(h&65536)){t=0;s=0}else{s=c[k+(j<<2)>>2]|0;t=s;j=j+1|0}if(!(h&131072)){D=0;o=0}else{o=c[k+(j<<2)>>2]|0;D=o;j=j+1|0}if(!(h&262144)){C=0;p=0}else{p=c[k+(j<<2)>>2]|0;C=p}$q(f);do if(D){n=D+8|0;j=b[n>>1]|0;u=j&31;k=d[816+u>>0]|0;if((u|16|0)==18){j=a[D+10>>0]|0;k=D+16|0;m=D+12|0;if(!(Lg(c[k>>2]|0,z,c[m>>2]|0,j)|0))j=b[n>>1]|0;else{if(!(Og(c[k>>2]|0,A,c[m>>2]|0,j)|0)){q=A;u=c[q+4>>2]|0;j=D;c[j>>2]=c[q>>2];c[j+4>>2]=u;j=4}else{g[D>>3]=+g[z>>3];j=8}j=b[n>>1]&-3|j;b[n>>1]=j}k=d[816+(j&31)>>0]|0}if((k|0)==1){j=j&65535;if(j&4|0){k=o;j=c[k>>2]|0;k=c[k+4>>2]|0;break}if(j&8|0){j=Mg(+g[D>>3])|0;k=L()|0;break}if(!(j&18)){j=0;k=0}else{j=Ng(a[D+10>>0]|0,c[D+12>>2]|0,c[D+16>>2]|0)|0;k=L()|0}}else{j=0;k=-2147483648}}else{j=0;k=-2147483648}while(0);u=f+72|0;q=u;c[q>>2]=j;c[q+4>>2]=k;do if(C){n=C+8|0;j=b[n>>1]|0;q=j&31;k=d[816+q>>0]|0;if((q|16|0)==18){j=a[C+10>>0]|0;k=C+16|0;m=C+12|0;if(!(Lg(c[k>>2]|0,z,c[m>>2]|0,j)|0))j=b[n>>1]|0;else{if(!(Og(c[k>>2]|0,A,c[m>>2]|0,j)|0)){o=A;q=c[o+4>>2]|0;j=C;c[j>>2]=c[o>>2];c[j+4>>2]=q;j=4}else{g[C>>3]=+g[z>>3];j=8}j=b[n>>1]&-3|j;b[n>>1]=j}k=d[816+(j&31)>>0]|0}if((k|0)==1){j=j&65535;if(j&4|0){k=p;j=c[k>>2]|0;k=c[k+4>>2]|0;break}if(j&8|0){j=Mg(+g[C>>3])|0;k=L()|0;break}if(!(j&18)){j=0;k=0}else{j=Ng(a[C+10>>0]|0,c[C+12>>2]|0,c[C+16>>2]|0)|0;k=L()|0}}else{j=-1;k=2147483647}}else{j=-1;k=2147483647}while(0);q=f+80|0;p=q;c[p>>2]=j;c[p+4>>2]=k;if(!i)j=a[G+235>>0]|0;else j=(a[i>>0]|0)==68&1;a[f+52>>0]=j;h=h&65535;b[f+4>>1]=h;do if(r>>>0>1){o=r+-2|0;k=J+8|0;do if(J){j=b[k>>1]|0;if((j&514)==514?(a[J+10>>0]|0)==1:0)j=c[J+16>>2]|0;else{if(j&1){H=52;break}j=Gg(J,1)|0}if(j){p=j;m=0}else H=52}else H=52;while(0);if((H|0)==52)if(!(-1431655766>>>(b[k>>1]&31)&1)){f=7;Ra=K;return f|0}else{p=0;m=1}k=f+20|0;c[k>>2]=0;if(!t)j=0;else{j=e[t+8>>1]|0;do if(!(j&4)){if(j&8|0){j=Mg(+g[t>>3])|0;L()|0;break}if(!(j&18))j=0;else{j=Ng(a[t+10>>0]|0,c[t+12>>2]|0,c[t+16>>2]|0)|0;L()|0}}else j=c[s>>2]|0;while(0);c[k>>2]=j}k=c[G+36>>2]|0;r=c[G+28>>2]|0;t=d[G+232>>0]|0;s=c[G+24>>2]|0;i=f+16|0;n=G+8|0;M=A+24|0;c[M>>2]=0;c[M+4>>2]=0;c[M+8>>2]=0;c[A>>2]=k;c[A+4>>2]=j;c[A+8>>2]=r;c[A+16>>2]=s;c[A+20>>2]=o;c[A+12>>2]=t;a:do if(m){c[i>>2]=0;j=0}else{j=er(A,p,Eu(p)|0,i,z)|0;do if(!j){j=c[i>>2]|0;if(c[A+32>>2]|0){ar(j);c[i>>2]=0;break}if(!j){j=0;break a}j=cr(i,12)|0;if(!j){j=c[i>>2]|0;k=dr(j,12)|0;if(!k)break a;else{l=k;H=70}}else{l=j;H=70}}else{l=j;H=70}while(0);b:do if((H|0)==70){ar(c[i>>2]|0);c[i>>2]=0;switch(l|0){case 1:break b;case 18:break;default:{M=l;Ra=K;return M|0}}c[v>>2]=12;Wp(n,54811,v);M=1;Ra=K;return M|0}while(0);c[w>>2]=p;Wp(n,54863,w);M=1;Ra=K;return M|0}while(0);M=c[f>>2]|0;c[z>>2]=0;c[A>>2]=0;c[B>>2]=0;fr(f,j,A,B,z);j=c[A>>2]|0;do if((c[z>>2]|0)==0&(j|0)>1?a[M+232>>0]|0:0){k=pb((c[B>>2]<<3)+(j*24|0)|0,0)|0;m=k+((c[A>>2]|0)*24|0)|0;if(!k){c[z>>2]=7;break}c[x>>2]=k;c[y>>2]=m;gr(f,0,c[i>>2]|0,x,y,z);j=((c[x>>2]|0)-k|0)/24|0;c[A>>2]=j;c[B>>2]=(c[y>>2]|0)-m>>2;if((c[z>>2]|0)==0?(M=hr(f,0,k,j)|0,c[z>>2]=M,(M|0)==0&(c[B>>2]|0)>0):0){j=0;do{M=hr(f,c[m+(j<<2)>>2]|0,k,c[A>>2]|0)|0;c[z>>2]=M;j=j+1|0}while((M|0)==0?(j|0)<(c[B>>2]|0):0)}if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{M=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}}while(0);ir(f,c[i>>2]|0,z);j=c[z>>2]|0;k=G+248|0;m=c[k>>2]|0;do if(m|0){n=c[m+20>>2]|0;gc(c[m+16>>2]|0)|0;if(n|0){if(c[n+480>>2]|0){Xd(n,m);break}M=m;if((c[n+304>>2]|0)>>>0<=M>>>0?(c[n+308>>2]|0)>>>0>M>>>0:0){M=n+300|0;c[m>>2]=c[M>>2];c[M>>2]=m;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{M=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[k>>2]=0;if(!j){c[f+40>>2]=c[f+44>>2];M=f+32|0;c[M>>2]=0;c[M+4>>2]=0;break}else{M=j;Ra=K;return M|0}}while(0);c:do switch(h<<16>>16){case 0:{l=c[G+220>>2]|0;if((D|0)!=0|(C|0)!=0){H=u;E=c[H>>2]|0;H=c[H+4>>2]|0;J=q;I=c[J>>2]|0;J=c[J+4>>2]|0;j=(a[f+52>>0]|0)==0?54528:54523;c[F>>2]=l;M=F+8|0;c[M>>2]=E;c[M+4>>2]=H;M=F+16|0;c[M>>2]=I;c[M+4>>2]=J;c[F+24>>2]=j;j=Bb(54721,F)|0}else{j=(a[f+52>>0]|0)==0?54528:54523;c[E>>2]=l;c[E+4>>2]=j;j=Bb(54783,E)|0}if(!j){M=7;Ra=K;return M|0}l=qd(c[G+12>>2]|0,j,-1,129,0,f+12|0,0)|0;if(!(c[7324]|0)){ab[c[29344>>2]&127](j);H=116;break c}else{H=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);H=116;break c}}case 1:{m=f+12|0;l=c[m>>2]|0;if(!l){k=c[f>>2]|0;j=k+216|0;l=c[j>>2]|0;do if(!l){c[I>>2]=c[k+220>>2];j=Bb(54912,I)|0;if(!j){M=7;Ra=K;return M|0}l=qd(c[k+12>>2]|0,j,-1,129,0,m,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](j);else{M=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j)}if(!l){l=c[m>>2]|0;break}else{M=l;Ra=K;return M|0}}else{c[m>>2]=l;c[j>>2]=0}while(0);a[f+8>>0]=1}l=Yc(l,1,J)|0;H=116;break}default:{}}while(0);if((H|0)==116?l|0:0){M=l;Ra=K;return M|0}M=Iq(f)|0;Ra=K;return M|0}function Iq(b){b=b|0;var d=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;q=Ra;Ra=Ra+16|0;d=q;if((e[b+4>>1]|0)<2){d=b+12|0;if((Gc(c[d>>2]|0)|0)==100){o=Oc(c[d>>2]|0,0)|0;p=L()|0;b=b+32|0;c[b>>2]=o;c[b+4>>2]=p;b=0;Ra=q;return b|0}a[b+6>>0]=1;g=c[d>>2]|0;if(!g){b=0;Ra=q;return b|0}d=c[g>>2]|0;b=g+136|0;p=c[b+4>>2]|0;if((p|0)>0|(p|0)==0&(c[b>>2]|0)>>>0>0)hc(d,g);f=kc(g)|0;c[g+20>>2]=770837923;c[g+36>>2]=-1;c[g+40>>2]=0;a[g+146>>0]=2;c[g+44>>2]=0;c[g+32>>2]=1;a[g+147>>0]=-1;c[g+48>>2]=0;b=g+64|0;c[b>>2]=0;c[b+4>>2]=0;if((f|0)==3082|(a[d+81>>0]|0)!=0){og(d);b=7;Ra=q;return b|0}else{b=c[d+68>>2]&f;Ra=q;return b|0}}c[d>>2]=0;f=c[b+16>>2]|0;if(f){g=b+7|0;h=b+12|0;i=f+32|0;j=b+6|0;k=b+88|0;l=f+24|0;o=b+32|0;do{if((a[g>>0]|0)==0?(m=c[h>>2]|0,m|0):0){n=c[m>>2]|0;r=m+136|0;s=c[r+4>>2]|0;if((s|0)>0|(s|0)==0&(c[r>>2]|0)>>>0>0)hc(n,m);s=kc(m)|0;c[m+20>>2]=770837923;c[m+36>>2]=-1;c[m+40>>2]=0;a[m+146>>0]=2;c[m+44>>2]=0;c[m+32>>2]=1;a[m+147>>0]=-1;c[m+48>>2]=0;r=m+64|0;c[r>>2]=0;c[r+4>>2]=0;if((s|0)==3082|(a[n+81>>0]|0)!=0)og(n)}qr(b,f,d);s=a[i>>0]|0;a[j>>0]=s;a[g>>0]=1;c[k>>2]=1;t=l;n=c[t+4>>2]|0;r=o;c[r>>2]=c[t>>2];c[r+4>>2]=n;if(s<<24>>24)break}while((rr(b,d)|0)!=0);d=c[d>>2]|0;if(!d){d=o;p=22}}else{a[b+6>>0]=1;d=b+32|0;p=22}do if((p|0)==22){f=d;d=c[f>>2]|0;f=c[f+4>>2]|0;if(!(a[b+52>>0]|0)){t=b+80|0;s=c[t+4>>2]|0;if(!((f|0)>(s|0)|((f|0)==(s|0)?d>>>0>(c[t>>2]|0)>>>0:0))){d=0;break}}else{t=b+72|0;s=c[t+4>>2]|0;if(!((f|0)<(s|0)|((f|0)==(s|0)?d>>>0<(c[t>>2]|0)>>>0:0))){d=0;break}}a[b+6>>0]=1;d=0}while(0);t=d;Ra=q;return t|0}function Jq(b){b=b|0;var c=0;c=b+6|0;if(!(a[c>>0]|0)){c=0;return c|0}$q(b);a[c>>0]=1;c=1;return c|0}function Kq(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;h=c[d>>2]|0;i=c[h+24>>2]|0;switch(g-i|0){case 0:{g=c[f>>2]|0;h=g+8|0;if(!((b[h>>1]&9216)==0?!(c[g+24>>2]|0):0))Cg(g);c[g>>2]=54938;c[g+16>>2]=d;b[h>>1]=-31231;a[g+11>>0]=112;c[g+36>>2]=97;f=0;return f|0}case 1:{d=d+32|0;i=c[d>>2]|0;d=c[d+4>>2]|0;g=c[f>>2]|0;h=g+8|0;if(!(b[h>>1]&9216)){f=g;c[f>>2]=i;c[f+4>>2]=d;b[h>>1]=4;f=0;return f|0}else{Pg(g,i,d);f=0;return f|0}}case 2:{if(c[d+16>>2]|0){i=c[d+20>>2]|0;d=((i|0)<0)<<31>>31;g=c[f>>2]|0;h=g+8|0;if(!(b[h>>1]&9216)){f=g;c[f>>2]=i;c[f+4>>2]=d;b[h>>1]=4;f=0;return f|0}else{Pg(g,i,d);f=0;return f|0}}if(!(c[h+44>>2]|0)){g=c[f>>2]|0;h=g+8|0;if(!(b[h>>1]&9216)){f=g;c[f>>2]=0;c[f+4>>2]=0;b[h>>1]=4;f=0;return f|0}else{Pg(g,0,0);f=0;return f|0}}break}default:i=g}g=ur(0,d)|0;if(g|0){f=g;return f|0}k=c[d+12>>2]|0;j=(k|0)==0;if(!j?(c[k+120>>2]|0)!=0:0)g=(e[k+144>>1]|0)+-1|0;else g=-1;if((g|0)<=(i|0)){f=0;return f|0}g=i+1|0;do if(j)d=29576;else{h=c[k+120>>2]|0;if(h|0?g>>>0<(e[k+144>>1]|0)>>>0:0){d=h+(g*40|0)|0;break}d=c[k>>2]|0;c[d+64>>2]=25;Ne(d,25);d=29576}while(0);g=d+8|0;h=e[g>>1]|0;if(h&2048|0)b[g>>1]=h&59391|4096;if(!j){h=c[k>>2]|0;i=k+40|0;g=c[i>>2]|0;if((g|0)==3082|(a[h+81>>0]|0)!=0){og(h);g=7}else g=c[h+68>>2]&g;c[i>>2]=g}Dc(f,d);f=0;return f|0}function Lq(a,b){a=a|0;b=b|0;var d=0;d=a+32|0;a=c[d+4>>2]|0;c[b>>2]=c[d>>2];c[b+4>>2]=a;return 0}function Mq(f,h,i,j){f=f|0;h=h|0;i=i|0;j=j|0;var 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,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,_=0,$=0,aa=0,ba=0,ca=0,da=0;ca=Ra;Ra=Ra+160|0;q=ca+48|0;E=ca+40|0;D=ca+32|0;C=ca+24|0;Z=ca+16|0;y=ca+8|0;u=ca;O=ca+136|0;$=ca+80|0;W=ca+72|0;X=ca+68|0;Y=ca+64|0;ba=ca+60|0;z=ca+56|0;c[ba>>2]=0;c[z>>2]=0;x=(h|0)>1;a:do if(x){_=f+24|0;h=c[_>>2]|0;if(-1431655766>>>(b[(c[i>>2]|0)+8>>1]&31)&1|0?(p=c[i+(h+2<<2)>>2]|0,o=p+8|0,k=b[o>>1]|0,(-1431655766>>>(k&31)&1|0)==0):0){do if(p){if((k&514)==514?(a[p+10>>0]|0)==1:0){q=c[p+16>>2]|0;break}if(!(k&1)){q=Gg(p,1)|0;k=b[o>>1]|0}else q=0}else q=0;while(0);if((k&2)!=0?(a[p+10>>0]|0)==1:0)h=c[p+12>>2]|0;else aa=14;do if((aa|0)==14){k=k&65535;if(!(k&16)){if(k&1|0){h=0;break}h=Fg(p,1)|0;break}else{h=c[p+12>>2]|0;if(!(k&16384))break;h=(c[p>>2]|0)+h|0;break}}while(0);b:do if(!q)k=7;else{c:do switch(h|0){case 8:{o=a[q>>0]|0;d:do if(!(o<<24>>24)){k=37598;aa=22}else{_=o&255;k=208+_|0;do if((_|32|0)==111){k=a[q+1>>0]|0;if(!(k<<24>>24)){k=37599;aa=22;break d}_=k&255;k=208+_|0;if((_|32|0)==112){k=a[q+2>>0]|0;if(!(k<<24>>24)){k=37600;aa=22;break d}_=k&255;k=208+_|0;if((_|32|0)==116){k=a[q+3>>0]|0;if(!(k<<24>>24)){k=37601;aa=22;break d}_=k&255;k=208+_|0;if((_|32|0)==105){k=a[q+4>>0]|0;if(!(k<<24>>24)){k=37602;aa=22;break d}k=k&255;if((k|32|0)!=109){n=109;k=208+k|0;break}k=a[q+5>>0]|0;if(!(k<<24>>24)){k=37603;aa=22;break d}k=k&255;if((k|32|0)!=105){n=105;k=208+k|0;break}k=a[q+6>>0]|0;if(!(k<<24>>24)){k=37604;aa=22;break d}k=k&255;if((k|32|0)!=122){n=122;k=208+k|0;break}k=a[q+7>>0]|0;if(!(k<<24>>24)){k=37605;aa=22;break d}k=k&255;if((k|32|0)==101)break d;else{n=101;k=208+k|0}}else n=105}else n=116}else n=112}else n=111;while(0);t=d[k>>0]|0;aa=26}while(0);if((aa|0)==22){t=0;n=a[208+(d[k>>0]|0)>>0]|0;aa=26}if((aa|0)==26?(t|0)!=(n&255|0):0)break c;k=Dr(f,0)|0;break b}case 7:{o=a[q>>0]|0;e:do if(!(o<<24>>24)){k=54949;aa=29}else{Z=o&255;k=208+Z|0;do if((Z|32|0)==114){k=a[q+1>>0]|0;if(!(k<<24>>24)){k=54950;aa=29;break e}Z=k&255;k=208+Z|0;if((Z|32|0)==101){k=a[q+2>>0]|0;if(!(k<<24>>24)){k=54951;aa=29;break e}Z=k&255;k=208+Z|0;if((Z|32|0)==98){k=a[q+3>>0]|0;if(!(k<<24>>24)){k=54952;aa=29;break e}Z=k&255;k=208+Z|0;if((Z|32|0)==117){k=a[q+4>>0]|0;if(!(k<<24>>24)){k=54953;aa=29;break e}k=k&255;if((k|32|0)!=105){n=105;k=208+k|0;break}k=a[q+5>>0]|0;if(!(k<<24>>24)){k=54954;aa=29;break e}k=k&255;if((k|32|0)!=108){n=108;k=208+k|0;break}k=a[q+6>>0]|0;if(!(k<<24>>24)){k=54955;aa=29;break e}k=k&255;if((k|32|0)==100)break e;else{n=100;k=208+k|0}}else n=117}else n=98}else n=101}else n=114;while(0);s=d[k>>0]|0;r=n;aa=33}while(0);if((aa|0)==29){s=0;r=a[208+(d[k>>0]|0)>>0]|0;aa=33}if((aa|0)==33?(s|0)!=(r&255|0):0)break c;k=Lr(f,0)|0;c[O>>2]=k;if(!k){c[$>>2]=0;c[u>>2]=c[f+220>>2];k=Bb(55001,u)|0;do if(k){l=qd(c[f+12>>2]|0,k,-1,128,0,$,0)|0;c[O>>2]=l;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{Z=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-Z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}if(!l){k=c[_>>2]|0;k=Yv(k|0,((k|0)<0)<<31>>31|0,12,0)|0;k=Sv(k|0,L()|0,12,0)|0;C=pb(k,L()|0)|0;if(!C){c[O>>2]=7;n=0;m=0;l=0;k=0;break}gw(C|0,0,k|0)|0;l=(c[_>>2]|0)+1|0;m=C+(l<<2)|0;l=m+(l<<2)|0;w=f+44|0;x=f+272|0;y=f+284|0;j=f+280|0;i=f+234|0;z=f+32|0;A=f+264|0;B=f+260|0;n=0;v=c[$>>2]|0;while(1){if((Gc(v)|0)!=100){aa=89;break}if(!(c[w>>2]|0))u=0;else u=Nc(v,(c[_>>2]|0)+1|0)|0;o=Oc(v,0)|0;p=L()|0;h=x;k=c[h>>2]|0;h=c[h+4>>2]|0;do if(!((h|0)>(p|0)|(h|0)==(p|0)&k>>>0>o>>>0)){if((k|0)==(o|0)&(h|0)==(p|0)?(c[y>>2]|0)==0:0){aa=52;break}if((c[j>>2]|0)!=(u|0)){aa=52;break}if((c[A>>2]|0)<=(c[B>>2]|0))aa=53;else aa=52}else aa=52;while(0);if((aa|0)==52){aa=0;k=Sr(f)|0;if(!k)aa=53}if((aa|0)==53){aa=0;k=x;c[k>>2]=o;c[k+4>>2]=p;c[j>>2]=u;c[y>>2]=0;k=0}c[O>>2]=k;gw(C|0,0,(c[_>>2]<<2)+4|0)|0;f:do if(!k){r=v+120|0;s=v+144|0;t=v+40|0;g:do if(!v){k=c[_>>2]|0;if((k|0)<=0)break;o=c[z>>2]|0;h=0;do{if(!(a[o+h>>0]|0)){c[C+(h<<2)>>2]=0;k=c[_>>2]|0}h=h+1|0}while((h|0)<(k|0))}else{q=0;do{if((q|0)>=(c[_>>2]|0))break g;p=q;q=q+1|0;if(!(a[(c[z>>2]|0)+p>>0]|0)){k=c[r>>2]|0;do if(!k)aa=66;else{if(q>>>0>=(e[s>>1]|0)>>>0){aa=66;break}k=k+(q*40|0)|0}while(0);if((aa|0)==66){aa=0;k=c[v>>2]|0;c[k+64>>2]=25;Ne(k,25);k=29576}h=b[k+8>>1]|0;do if((h&514)==514){if((a[k+10>>0]|0)!=1){aa=71;break}o=c[k+16>>2]|0}else aa=71;while(0);do if((aa|0)==71){aa=0;if(h&1){o=0;break}o=Gg(k,1)|0}while(0);k=c[v>>2]|0;h=c[t>>2]|0;if((h|0)==3082|(a[k+81>>0]|0)!=0){og(k);k=7}else k=c[k+68>>2]&h;c[t>>2]=k;k=Mr(f,u,o,p,C+(p<<2)|0)|0;Y=Lc(v,q)|0;Z=C+(c[_>>2]<<2)|0;c[Z>>2]=(c[Z>>2]|0)+Y}else k=0}while(!(k|0));c[O>>2]=k;break f}while(0);c[O>>2]=0;k=0}while(0);if(a[i>>0]|0){Br(O,f,C);k=c[O>>2]|0}h=(k|0)==0;do if(h){n=n+1|0;if((c[_>>2]|0)<0){k=v;break}k=0;while(1){aa=m+(k<<2)|0;c[aa>>2]=(c[aa>>2]|0)+(c[C+(k<<2)>>2]|0);if((k|0)<(c[_>>2]|0))k=k+1|0;else{k=v;break}}}else{gc(v)|0;k=0}while(0);if(h)v=k;else{aa=88;break}}if((aa|0)==88){c[$>>2]=k;k=C;break}else if((aa|0)==89){c[$>>2]=v;k=C;break}}else{n=0;m=0;l=0;k=0}}else{c[O>>2]=7;n=0;m=0;l=0;k=0}while(0);if(a[f+232>>0]|0)Cr(O,f,m,l,n);do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{_=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-_;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);k=c[$>>2]|0;if(k){k=gc(k)|0;l=c[O>>2]|0;if(!l)c[O>>2]=k;else k=l}else k=c[O>>2]|0}break b}case 15:{o=a[q>>0]|0;h:do if(!(o<<24>>24)){k=54957;aa=103}else{V=o&255;k=208+V|0;do if((V|32|0)==105){k=a[q+1>>0]|0;if(!(k<<24>>24)){k=54958;aa=103;break h}V=k&255;k=208+V|0;if((V|32|0)==110){k=a[q+2>>0]|0;if(!(k<<24>>24)){k=54959;aa=103;break h}V=k&255;k=208+V|0;if((V|32|0)==116){k=a[q+3>>0]|0;if(!(k<<24>>24)){k=54960;aa=103;break h}V=k&255;k=208+V|0;if((V|32|0)==101){k=a[q+4>>0]|0;if(!(k<<24>>24)){k=54961;aa=103;break h}k=k&255;if((k|32|0)!=103){n=103;k=208+k|0;break}k=a[q+5>>0]|0;if(!(k<<24>>24)){k=54962;aa=103;break h}k=k&255;if((k|32|0)!=114){n=114;k=208+k|0;break}k=a[q+6>>0]|0;if(!(k<<24>>24)){k=54963;aa=103;break h}k=k&255;if((k|32|0)!=105){n=105;k=208+k|0;break}k=a[q+7>>0]|0;if(!(k<<24>>24)){k=54964;aa=103;break h}k=k&255;if((k|32|0)!=116){n=116;k=208+k|0;break}k=a[q+8>>0]|0;if(!(k<<24>>24)){k=54965;aa=103;break h}k=k&255;if((k|32|0)!=121){n=121;k=208+k|0;break}k=a[q+9>>0]|0;if(!(k<<24>>24)){k=54966;aa=103;break h}if(k<<24>>24!=45){n=45;k=208+(k&255)|0;break}k=a[q+10>>0]|0;if(!(k<<24>>24)){k=54967;aa=103;break h}k=k&255;if((k|32|0)!=99){n=99;k=208+k|0;break}k=a[q+11>>0]|0;if(!(k<<24>>24)){k=54968;aa=103;break h}k=k&255;if((k|32|0)!=104){n=104;k=208+k|0;break}k=a[q+12>>0]|0;if(!(k<<24>>24)){k=54969;aa=103;break h}k=k&255;if((k|32|0)!=101){n=101;k=208+k|0;break}k=a[q+13>>0]|0;if(!(k<<24>>24)){k=54970;aa=103;break h}k=k&255;if((k|32|0)!=99){n=99;k=208+k|0;break}k=a[q+14>>0]|0;if(!(k<<24>>24)){k=54971;aa=103;break h}k=k&255;if((k|32|0)==107)break h;else{n=107;k=208+k|0}}else n=101}else n=116}else n=110}else n=105;while(0);w=d[k>>0]|0;v=n;aa=107}while(0);if((aa|0)==103){w=0;v=a[208+(d[k>>0]|0)>>0]|0;aa=107}if((aa|0)==107?(w|0)!=(v&255|0):0)break c;l=f+164|0;k=c[l>>2]|0;c[O>>2]=k;do if(!k){k=c[f+20>>2]|0;c[y>>2]=c[f+16>>2];c[y+4>>2]=k;k=Bb(52546,y)|0;if(!k){h=7;n=0;m=0;l=0;k=0;break}h=qd(c[f+12>>2]|0,k,-1,133,0,O,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{V=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-V;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}k=c[O>>2]|0;c[l>>2]=k;if(!h)aa=116;else{n=0;m=0;l=0;k=0}}else aa=116;while(0);if((aa|0)==116){N=k;l=c[f+280>>2]|0;m=((l|0)<0)<<31>>31;do if(!(Vc(N,1)|0)){n=c[N+100>>2]|0;h=n+8|0;if(!(b[h>>1]&9216)){V=n;c[V>>2]=l;c[V+4>>2]=m;b[h>>1]=4;break}else{Pg(n,l,m);break}}while(0);V=f+252|0;l=c[V>>2]|0;m=((l|0)<0)<<31>>31;do if(!(Vc(N,2)|0)){h=c[N+100>>2]|0;n=h+40|0;h=h+48|0;if(!(b[h>>1]&9216)){U=n;c[U>>2]=l;c[U+4>>2]=m;b[h>>1]=4;break}else{Pg(n,l,m);break}}while(0);E=O+12|0;F=$+12|0;G=$+4|0;H=$+16|0;I=$+48|0;J=$+52|0;K=$+40|0;M=$+44|0;n=0;l=0;while(1){if((Gc(N)|0)!=100){m=0;o=1;U=l;break}C=Nc(N,0)|0;if((c[V>>2]|0)>0){D=((C|0)<0)<<31>>31;B=0;do{c[O>>2]=0;c[O+4>>2]=0;c[O+8>>2]=0;c[E>>2]=19;m=$;h=m+56|0;do{c[m>>2]=0;m=m+4|0}while((m|0)<(h|0));m=Xp(f,C,B,-2,0,0,0,1,$)|0;do if(!m){c[F>>2]=O;m=eq(f,$,0,0)|0;if(m|0){v=0;o=0;break}m=gq(f,$)|0;if((m|0)!=100){v=0;o=0;break}h=0;o=0;do{t=c[I>>2]|0;s=c[J>>2]|0;A=t+s|0;p=a[t>>0]|0;m=p&255;do if(!(m&128)){q=1;m=p&255;r=0}else{U=d[t+1>>0]|0;m=U<<7|m&127;if(!(U&128)){q=2;r=0;break}U=d[t+2>>0]|0;m=U<<14|m&16383;if(!(U&128)){q=3;r=0;break}U=d[t+3>>0]|0;m=U<<21|m&2097151;if(!(U&128)){q=4;r=0;break}p=28;q=t+4|0;m=m&268435455;r=0;do{U=q;q=q+1|0;U=d[U>>0]|0;T=cw(U&127|0,0,p|0)|0;m=Sv(T|0,L()|0,m|0,r|0)|0;r=L()|0;p=p+7|0}while(p>>>0<64&((U&128|0)!=0|0!=0));q=q-t|0}while(0);if((q|0)<(s|0)){j=c[K>>2]|0;i=c[M>>2]|0;z=(i|0)>0;y=t+q|0;p=0;w=0;x=0;while(1){s=a[y>>0]|0;q=s&255;do if(!(q&128)){v=1;u=0;t=s&255}else{U=d[y+1>>0]|0;q=U<<7|q&127;if(!(U&128)){v=2;u=0;t=q;break}U=d[y+2>>0]|0;q=U<<14|q&16383;if(!(U&128)){v=3;u=0;t=q;break}U=d[y+3>>0]|0;t=U<<21|q&2097151;if(!(U&128)){v=4;u=0;break}q=28;s=y+4|0;t=t&268435455;u=0;do{U=s;s=s+1|0;U=d[U>>0]|0;T=cw(U&127|0,0,q|0)|0;t=Sv(T|0,L()|0,t|0,u|0)|0;u=L()|0;q=q+7|0}while(q>>>0<64&((U&128|0)!=0|0!=0));v=s-y|0}while(0);y=y+v|0;do if(y>>>0>>0){if(!(u>>>0<0|(u|0)==0&t>>>0<2)){v=Sv(w|0,x|0,-2,-1)|0;u=Sv(v|0,L()|0,t|0,u|0)|0;v=L()|0;q=cw(m|0,r|0,3)|0;T=L()|0;U=Sv(m|0,r|0,C|0,D|0)|0;T=Sv(U|0,L()|0,q|0,T|0)|0;q=L()|0;U=cw(T|0,q|0,3)|0;s=L()|0;q=Sv(T|0,q|0,B|0,0)|0;s=Sv(q|0,L()|0,U|0,s|0)|0;U=L()|0;q=cw(s|0,U|0,3)|0;T=L()|0;U=Sv(s|0,U|0,p|0,((p|0)<0)<<31>>31|0)|0;T=Sv(U|0,L()|0,q|0,T|0)|0;q=L()|0;U=aw(0,u|0,32)|0;s=L()|0;q=Yv(T|0,q|0,9,0)|0;q=Sv(U|0,s|0,q|0,L()|0)|0;s=L()|0;if(z){t=0;do{U=a[j+t>>0]|0;q=Yv(q|0,s|0,9,0)|0;q=Sv(q|0,L()|0,U|0,((U|0)<0)<<31>>31|0)|0;s=L()|0;t=t+1|0}while((t|0)!=(i|0))}t=y;h=q^h;o=s^o;s=u;q=v;break}s=a[y>>0]|0;p=s&255;q=(p&128|0)==0;if(!((t|0)==0&(u|0)==0)){do if(q)q=1;else{U=d[y+1>>0]|0;p=U<<7|p&127;if(!(U&128)){q=2;break}U=d[y+2>>0]|0;p=U<<14|p&16383;if(!(U&128)){q=3;break}U=d[y+3>>0]|0;p=U<<21|p&2097151;if(!(U&128)){q=4;break}s=28;t=y+4|0;p=p&268435455;q=0;do{U=t;t=t+1|0;U=d[U>>0]|0;T=cw(U&127|0,0,s|0)|0;p=Sv(T|0,L()|0,p|0,q|0)|0;q=L()|0;s=s+7|0}while(s>>>0<64&((U&128|0)!=0|0!=0));q=t-y|0}while(0);t=y+q|0;s=0;q=0;break}do if(q){t=1;p=s&255;q=0}else{U=d[y+1>>0]|0;p=U<<7|p&127;if(!(U&128)){t=2;q=0;break}U=d[y+2>>0]|0;p=U<<14|p&16383;if(!(U&128)){t=3;q=0;break}U=d[y+3>>0]|0;p=U<<21|p&2097151;if(!(U&128)){t=4;q=0;break}s=28;t=y+4|0;p=p&268435455;q=0;do{U=t;t=t+1|0;U=d[U>>0]|0;T=cw(U&127|0,0,s|0)|0;p=Sv(T|0,L()|0,p|0,q|0)|0;q=L()|0;s=s+7|0}while(s>>>0<64&((U&128|0)!=0|0!=0));t=t-y|0}while(0);m=Sv(p|0,q|0,m|0,r|0)|0;t=y+t|0;p=0;r=L()|0;s=0;q=0}else{t=y;s=w;q=x}while(0);if(t>>>0>>0){y=t;w=s;x=q}else break}}m=gq(f,$)|0}while((m|0)==100);v=h}else{v=0;o=0}while(0);t=c[G>>2]|0;u=c[$>>2]|0;if((t|0)<=0){if(u|0)aa=213}else{r=0;while(1){s=c[u+(r<<2)>>2]|0;do if(s|0){do if(!(c[s+56>>2]|0)){h=c[s+64>>2]|0;if(!h)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{aa=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);do if(!(a[s+5>>0]|0)){h=c[s+40>>2]|0;if(!h)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{aa=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);h=c[s+52>>2]|0;i:do if(h|0){p=c[h+20>>2]|0;gc(c[h+16>>2]|0)|0;do if(p|0){if(c[p+480>>2]|0){Xd(p,h);break i}q=h;if((c[p+304>>2]|0)>>>0>q>>>0)break;if((c[p+308>>2]|0)>>>0<=q>>>0)break;aa=p+300|0;c[h>>2]=c[aa>>2];c[aa>>2]=h;break i}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{aa=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{aa=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}}while(0);r=r+1|0;if((r|0)==(t|0)){aa=213;break}}}do if((aa|0)==213){aa=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](u);break}else{U=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-U;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);break}}while(0);h=c[H>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{U=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-U;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);n=v^n;l=o^l;B=B+1|0}while((B|0)<(c[V>>2]|0))}else m=0;if(m){o=0;U=l;break}}do if(k){k=c[N>>2]|0;T=N+136|0;S=c[T+4>>2]|0;if((S|0)>0|(S|0)==0&(c[T>>2]|0)>>>0>0)hc(k,N);l=kc(N)|0;c[N+20>>2]=770837923;c[N+36>>2]=-1;c[N+40>>2]=0;a[N+146>>0]=2;c[N+44>>2]=0;c[N+32>>2]=1;a[N+147>>0]=-1;c[N+48>>2]=0;T=N+64|0;c[T>>2]=0;c[T+4>>2]=0;if((l|0)==3082|(a[k+81>>0]|0)!=0){og(k);h=7;break}else{h=c[k+68>>2]&l;break}}else h=0;while(0);if(o)if(!h){T=f+36|0;m=c[c[T>>2]>>2]|0;c[O>>2]=0;c[Z>>2]=c[f+220>>2];k=Bb(55001,Z)|0;j:do if(!k){h=7;m=0;k=0;l=0}else{h=qd(c[f+12>>2]|0,k,-1,128,0,O,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{S=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}l=c[O>>2]|0;if(h|0){m=0;k=0;break}K=f+44|0;M=f+32|0;N=(l|0)==0;O=l+120|0;P=l+144|0;Q=l+40|0;R=m+20|0;S=f+256|0;J=m+16|0;m=0;k=0;do{if((Gc(l)|0)!=100){h=0;break j}h=Oc(l,0)|0;o=L()|0;if(!(c[K>>2]|0))I=0;else I=Nc(l,(c[_>>2]|0)+1|0)|0;H=Yv(h|0,o|0,9,0)|0;H=Sv(H|0,L()|0,I|0,((I|0)<0)<<31>>31|0)|0;G=L()|0;E=Yv(H|0,G|0,81,0)|0;F=L()|0;G=Yv(H|0,G|0,9,0)|0;H=L()|0;D=0;do{if((D|0)>=(c[_>>2]|0)){h=0;break}C=D;D=D+1|0;if(!(a[(c[M>>2]|0)+C>>0]|0)){k:do if(N)h=29576;else{h=c[O>>2]|0;do if(h|0){if(D>>>0>=(e[P>>1]|0)>>>0)break;h=h+(D*40|0)|0;break k}while(0);h=c[l>>2]|0;c[h+64>>2]=25;Ne(h,25);h=29576}while(0);o=b[h+8>>1]|0;do if((o&514)==514){if((a[h+10>>0]|0)!=1){aa=250;break}q=c[h+16>>2]|0}else aa=250;while(0);do if((aa|0)==250){aa=0;if(o&1){q=0;break}q=Gg(h,1)|0}while(0);if(!N){h=c[l>>2]|0;o=c[Q>>2]|0;if((o|0)==3082|(a[h+81>>0]|0)!=0){og(h);h=7}else h=c[h+68>>2]&o;c[Q>>2]=h}h=Lc(l,D)|0;o=c[T>>2]|0;p=c[o>>2]|0;c[Z>>2]=0;h=Za[c[p+12>>2]&127](o,q,h,Z)|0;l:do if(!h){c[c[Z>>2]>>2]=o;do if((c[p>>2]|0)>0){h=Xa[c[p+24>>2]&255](c[Z>>2]|0,I)|0;if(!h)break;Wa[c[p+16>>2]&127](c[Z>>2]|0)|0;c[Z>>2]=0;o=0;aa=262;break l}while(0);o=c[Z>>2]|0;z=o;A=Sv(E|0,F|0,C|0,0)|0;A=Yv(A|0,L()|0,9,0)|0;B=L()|0;do{c[$>>2]=0;c[W>>2]=0;c[X>>2]=0;c[Y>>2]=0;h=$a[c[R>>2]&127](z,Z,$,W,X,Y)|0;i=(h|0)==0;do if(i){w=c[Z>>2]|0;x=c[$>>2]|0;y=c[Y>>2]|0;j=((y|0)<0)<<31>>31;p=Sv(A|0,B|0,y|0,j|0)|0;q=L()|0;if((x|0)>0){r=0;do{v=a[w+r>>0]|0;p=Yv(p|0,q|0,9,0)|0;p=Sv(p|0,L()|0,v|0,((v|0)<0)<<31>>31|0)|0;q=L()|0;r=r+1|0}while((r|0)!=(x|0))}m=p^m;k=q^k;u=c[V>>2]|0;if((u|0)<=1)break;v=c[S>>2]|0;t=1;do{s=c[v+(t*24|0)>>2]|0;if((s|0)<=(x|0)){q=Sv(G|0,H|0,t|0,0)|0;p=L()|0;r=cw(q|0,p|0,3)|0;da=L()|0;p=Sv(q|0,p|0,C|0,0)|0;da=Sv(p|0,L()|0,r|0,da|0)|0;r=L()|0;p=cw(da|0,r|0,3)|0;q=L()|0;r=Sv(da|0,r|0,y|0,j|0)|0;q=Sv(r|0,L()|0,p|0,q|0)|0;p=L()|0;if((s|0)>0){r=0;do{da=a[w+r>>0]|0;q=Yv(q|0,p|0,9,0)|0;q=Sv(q|0,L()|0,da|0,((da|0)<0)<<31>>31|0)|0;p=L()|0;r=r+1|0}while((r|0)!=(s|0))}m=q^m;k=p^k}t=t+1|0}while((t|0)!=(u|0))}while(0)}while(i)}else{o=c[Z>>2]|0;aa=262}while(0);if((aa|0)==262)aa=0;if(o|0)Wa[c[J>>2]&127](o)|0;h=(h|0)==101?0:h}else h=0}while(!(h|0))}while((h|0)==0)}while(0);gc(l)|0;l=U}else{m=0;l=U;k=0}else{h=m;m=0;l=U;k=0}}k=(h|(n|0)==(m|0)&(l|0)==(k|0)&1|0)==0?267:h;break b}default:{if((h|0)<=6){k=1;break b}o=a[q>>0]|0}}while(0);n=o<<24>>24==0;m:do if(n){k=54973;aa=287}else{da=o&255;k=208+da|0;do if((da|32|0)==109){k=a[q+1>>0]|0;if(!(k<<24>>24)){k=54974;aa=287;break m}da=k&255;k=208+da|0;if((da|32|0)==101){k=a[q+2>>0]|0;if(!(k<<24>>24)){k=54975;aa=287;break m}da=k&255;k=208+da|0;if((da|32|0)==114){k=a[q+3>>0]|0;if(!(k<<24>>24)){k=54976;aa=287;break m}da=k&255;k=208+da|0;if((da|32|0)==103){k=a[q+4>>0]|0;if(!(k<<24>>24)){k=54977;aa=287;break m}k=k&255;if((k|32|0)!=101){m=101;k=208+k|0;break}k=a[q+5>>0]|0;if(!(k<<24>>24)){k=54978;aa=287;break m}if(k<<24>>24==61)break m;else{m=61;k=208+(k&255)|0}}else m=103}else m=114}else m=101}else m=109;while(0);A=d[k>>0]|0;aa=291}while(0);if((aa|0)==287){A=0;m=a[208+(d[k>>0]|0)>>0]|0;aa=291}if((aa|0)==291?(A|0)!=(m&255|0):0){if((h|0)<=10){k=1;break}n:do if(n){k=54980;aa=321}else{da=o&255;k=208+da|0;do if((da|32|0)==97){k=a[q+1>>0]|0;if(!(k<<24>>24)){k=54981;aa=321;break n}da=k&255;k=208+da|0;if((da|32|0)==117){k=a[q+2>>0]|0;if(!(k<<24>>24)){k=54982;aa=321;break n}k=k&255;if((k|32|0)!=116){l=116;k=208+k|0;break}k=a[q+3>>0]|0;if(!(k<<24>>24)){k=54983;aa=321;break n}k=k&255;if((k|32|0)!=111){l=111;k=208+k|0;break}k=a[q+4>>0]|0;if(!(k<<24>>24)){k=54984;aa=321;break n}k=k&255;if((k|32|0)!=109){l=109;k=208+k|0;break}k=a[q+5>>0]|0;if(!(k<<24>>24)){k=54985;aa=321;break n}k=k&255;if((k|32|0)!=101){l=101;k=208+k|0;break}k=a[q+6>>0]|0;if(!(k<<24>>24)){k=54986;aa=321;break n}k=k&255;if((k|32|0)!=114){l=114;k=208+k|0;break}k=a[q+7>>0]|0;if(!(k<<24>>24)){k=54987;aa=321;break n}k=k&255;if((k|32|0)!=103){l=103;k=208+k|0;break}k=a[q+8>>0]|0;if(!(k<<24>>24)){k=54988;aa=321;break n}k=k&255;if((k|32|0)!=101){l=101;k=208+k|0;break}k=a[q+9>>0]|0;if(!(k<<24>>24)){k=54989;aa=321;break n}if(k<<24>>24==61)break n;else{l=61;k=208+(k&255)|0}}else l=117}else l=97;while(0);B=d[k>>0]|0;aa=325}while(0);if((aa|0)==321){B=0;l=a[208+(d[k>>0]|0)>>0]|0;aa=325}if((aa|0)==325?(B|0)!=(l&255|0):0){k=1;break}k=q+10|0;c[$>>2]=0;l=a[k>>0]|0;o:do if(l<<24>>24>47){n=k;k=0;m=l;l=l<<24>>24;while(1){if(!(m<<24>>24<58&(k|0)<214748363))break o;n=n+1|0;k=l+-48+(k*10|0)|0;l=a[n>>0]|0;if(l<<24>>24<=47)break;else{m=l;l=l<<24>>24}}}else k=0;while(0);n=f+48|0;c[n>>2]=(k|0)==1|(k|0)>16?8:k;l=f+233|0;if(!(a[l>>0]|0)){k=c[f+12>>2]|0;da=c[f+20>>2]|0;c[D>>2]=c[f+16>>2];c[D+4>>2]=da;_q($,k,54351,D);k=c[$>>2]|0;if(!k){a[l>>0]=1;aa=333}}else aa=333;do if((aa|0)==333){m=f+148|0;l=c[m>>2]|0;c[O>>2]=l;if(!l){l=c[f+20>>2]|0;c[E>>2]=c[f+16>>2];c[E+4>>2]=l;l=Bb(52453,E)|0;if(!l){c[$>>2]=7;k=7;break}k=qd(c[f+12>>2]|0,l,-1,133,0,O,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{da=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[O>>2]|0;c[m>>2]=l;c[$>>2]=k;if(k)break}else c[$>>2]=0;h=l;do if(!(Vc(h,1)|0)){k=c[h+100>>2]|0;m=k+8|0;if(!(b[m>>1]&9216)){da=k;c[da>>2]=2;c[da+4>>2]=0;b[m>>1]=4;break}else{Pg(k,2,0);break}}while(0);m=c[n>>2]|0;n=((m|0)<0)<<31>>31;if(Vc(h,2)|0){Gc(h)|0;if(!l)k=0;else aa=351}else{l=c[h+100>>2]|0;k=l+40|0;l=l+48|0;if(!(b[l>>1]&9216)){da=k;c[da>>2]=m;c[da+4>>2]=n;b[l>>1]=4}else Pg(k,m,n);Gc(h)|0;aa=351}do if((aa|0)==351){k=c[h>>2]|0;da=h+136|0;_=c[da+4>>2]|0;if((_|0)>0|(_|0)==0&(c[da>>2]|0)>>>0>0)hc(k,h);l=kc(h)|0;c[h+20>>2]=770837923;c[h+36>>2]=-1;c[h+40>>2]=0;a[h+146>>0]=2;c[h+44>>2]=0;c[h+32>>2]=1;a[h+147>>0]=-1;c[h+48>>2]=0;da=h+64|0;c[da>>2]=0;c[da+4>>2]=0;if((l|0)==3082|(a[k+81>>0]|0)!=0){og(k);k=7;break}else{k=c[k+68>>2]&l;break}}while(0);c[$>>2]=k}while(0);break}k=q+6|0;m=a[k>>0]|0;p:do if(m<<24>>24>47){l=0;n=m;m=m<<24>>24;while(1){if(!(n<<24>>24<58&(l|0)<214748363)){aa=302;break p}k=k+1|0;l=m+-48+(l*10|0)|0;m=a[k>>0]|0;if(m<<24>>24>47){n=m;m=m<<24>>24}else{aa=296;break}}}else{l=0;aa=296}while(0);q:do if((aa|0)==296){if(m<<24>>24==44){k=k+1|0;n=a[k>>0]|0;if(n<<24>>24<=47){aa=302;break}m=0;h=n;n=n<<24>>24;while(1){if(!(h<<24>>24<58&(m|0)<214748363)){aa=302;break q}k=k+1|0;m=n+-48+(m*10|0)|0;o=a[k>>0]|0;if(o<<24>>24<=47){n=m;k=o;break}else{h=o;n=o<<24>>24}}}else{n=8;k=m}if(k<<24>>24!=0|(n|0)<2)aa=302;else{c[O>>2]=0;m=f+233|0;if(!(a[m>>0]|0)){k=c[f+12>>2]|0;da=c[f+20>>2]|0;c[C>>2]=c[f+16>>2];c[C+4>>2]=da;_q(O,k,54351,C);k=c[O>>2]|0;if(!k){a[m>>0]=1;aa=306}}else aa=306;if((aa|0)==306){k=Or(f,l,n)|0;c[O>>2]=k}l=f+248|0;m=c[l>>2]|0;r:do if(m|0){n=c[m+20>>2]|0;gc(c[m+16>>2]|0)|0;do if(n|0){if(c[n+480>>2]|0){Xd(n,m);break r}h=m;if((c[n+304>>2]|0)>>>0>h>>>0)break;if((c[n+308>>2]|0)>>>0<=h>>>0)break;da=n+300|0;c[m>>2]=c[da>>2];c[da>>2]=m;break r}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{da=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[l>>2]=0}}while(0);if((aa|0)==302){c[O>>2]=1;k=1}}while(0);c[ba>>2]=k;break}k=c[i+(h+4<<2)>>2]|0;l=e[k+8>>1]|0;do if(!(l&4)){if(l&8|0){k=Mg(+g[k>>3])|0;L()|0;break}if(!(l&18)){r=_;aa=444;break a}k=Ng(a[k+10>>0]|0,c[k+12>>2]|0,c[k+16>>2]|0)|0;L()|0}else k=c[k>>2]|0;while(0);if((k|0)<0)c[ba>>2]=19;else{r=_;aa=444}}else{r=f+24|0;aa=444}while(0);do if((aa|0)==444){t=c[r>>2]|0;t=cw(t|0,((t|0)<0)<<31>>31|0,3)|0;t=Sv(t|0,L()|0,8,0)|0;t=pb(t,L()|0)|0;if(!t){c[ba>>2]=7;break}o=(c[r>>2]|0)+1|0;s=t+(o<<2)|0;gw(t|0,0,o<<3|0)|0;o=f+264|0;s:do if(!(c[o>>2]|0)){m=f+120|0;k=c[m>>2]|0;c[O>>2]=k;do if(!k){l=c[f+20>>2]|0;c[q>>2]=c[f+16>>2];c[q+4>>2]=l;l=Bb(52138,q)|0;if(!l){k=7;break}k=qd(c[f+12>>2]|0,l,-1,133,0,O,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{da=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[O>>2]|0;c[m>>2]=l;if(!k){k=l;aa=455}}else aa=455;while(0);do if((aa|0)==455){m=k;Vc(m,1)|0;Gc(m)|0;if(!k){aa=461;break s}k=c[m>>2]|0;da=m+136|0;$=c[da+4>>2]|0;if(($|0)>0|($|0)==0&(c[da>>2]|0)>>>0>0)hc(k,m);l=kc(m)|0;c[m+20>>2]=770837923;c[m+36>>2]=-1;c[m+40>>2]=0;a[m+146>>0]=2;c[m+44>>2]=0;c[m+32>>2]=1;a[m+147>>0]=-1;c[m+48>>2]=0;da=m+64|0;c[da>>2]=0;c[da+4>>2]=0;if(!((l|0)==3082|(a[k+81>>0]|0)!=0)){da=c[k+68>>2]&l;c[ba>>2]=da;if(!da){aa=463;break s}else break s}else{og(k);k=7;break}}while(0);c[ba>>2]=k}else aa=461;while(0);if((aa|0)==461){c[ba>>2]=0;aa=463}t:do if((aa|0)==463){do if(x?(c[f+40>>2]|0)==0:0){k=c[i+((c[r>>2]|0)+3<<2)>>2]|0;n=k+8|0;l=b[n>>1]|0;m=-1431655766>>>(l&31);if(m&1){k=c[i+4>>2]|0;n=k+8|0;l=b[n>>1]|0;m=-1431655766>>>(l&31)}if(!(m&1)){h=c[i>>2]|0;m=b[h+8>>1]|0;if(!(-1431655766>>>(m&31)&1)){m=m&65535;do if(!(m&4)){if(m&8|0){n=Mg(+g[h>>3])|0;h=L()|0;break}if(!(m&18)){n=0;h=0}else{da=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;h=L()|0;l=b[n>>1]|0;n=da}}else{n=c[h>>2]|0;h=c[h+4>>2]|0}while(0);l=l&65535;do if(!(l&4)){if(l&8|0){l=Mg(+g[k>>3])|0;m=L()|0;break}if(!(l&18)){l=0;m=0}else{l=Ng(a[k+10>>0]|0,c[k+12>>2]|0,c[k+16>>2]|0)|0;m=L()|0}}else{m=k;l=c[m>>2]|0;m=c[m+4>>2]|0}while(0);if((n|0)==(l|0)&(h|0)==(m|0)){m=0;break}}if((a[(c[f+12>>2]|0)+86>>0]|0)==5){l=0;k=zr(f,k,z,t)|0}else{l=1;k=Ar(f,i,j)|0}c[ba>>2]=k;if(!k)m=l;else break t}else m=0}else m=0;while(0);k=c[i>>2]|0;if(!(-1431655766>>>(b[k+8>>1]&31)&1)){k=zr(f,k,z,t)|0;c[ba>>2]=k}else k=0;if(x&(k|0)==0){k=c[i+((c[r>>2]|0)+4<<2)>>2]|0;l=e[k+8>>1]|0;do if(!(l&4)){if(l&8|0){p=Mg(+g[k>>3])|0;L()|0;break}if(!(l&18))p=0;else{p=Ng(a[k+10>>0]|0,c[k+12>>2]|0,c[k+16>>2]|0)|0;L()|0}}else p=c[k>>2]|0;while(0);u:do if(!m){da=Ar(f,i,j)|0;c[ba>>2]=da;switch(da|0){case 0:{aa=499;break u}case 19:break;default:break u}if(!(c[f+40>>2]|0))c[ba>>2]=267}else aa=499;while(0);v:do if((aa|0)==499){n=j;m=c[n>>2]|0;n=c[n+4>>2]|0;h=f+272|0;l=h;k=c[l>>2]|0;l=c[l+4>>2]|0;do if(!((l|0)>(n|0)|(l|0)==(n|0)&k>>>0>m>>>0)){if((k|0)==(m|0)&(l|0)==(n|0)?(c[f+284>>2]|0)==0:0){aa=504;break}k=f+280|0;if(!((c[k>>2]|0)==(p|0)?(c[o>>2]|0)<=(c[f+260>>2]|0):0))aa=504}else aa=504;while(0);do if((aa|0)==504){k=Sr(f)|0;if(!k){k=f+280|0;break}else{c[ba>>2]=k;break v}}while(0);da=h;c[da>>2]=m;c[da+4>>2]=n;c[k>>2]=p;c[f+284>>2]=0;c[ba>>2]=0;k=c[r>>2]|0;w:do if((k|0)>0){o=f+32|0;h=2;while(1){m=h+-2|0;if(!(a[(c[o>>2]|0)+m>>0]|0)){n=i+(h<<2)|0;k=c[n>>2]|0;x:do if(!k)k=0;else{l=b[k+8>>1]|0;do if((l&514)==514){if((a[k+10>>0]|0)!=1)break;k=c[k+16>>2]|0;break x}while(0);if(l&1){k=0;break}k=Gg(k,1)|0}while(0);k=Mr(f,p,k,m,s+(m<<2)|0)|0;if(k|0)break w;m=c[n>>2]|0;k=b[m+8>>1]|0;do if(!(k&2))aa=520;else{if((a[m+10>>0]|0)!=1){aa=520;break}k=c[m+12>>2]|0}while(0);do if((aa|0)==520){aa=0;l=k&65535;if(!(l&16)){if(l&1|0){k=0;break}k=Fg(m,1)|0;break}else{k=c[m+12>>2]|0;if(!(l&16384))break;k=(c[m>>2]|0)+k|0;break}}while(0);da=s+(c[r>>2]<<2)|0;c[da>>2]=(c[da>>2]|0)+k;k=c[r>>2]|0}if((h|0)>(k|0)){k=0;break}else h=h+1|0}}else k=0;while(0);c[ba>>2]=k}while(0);if(a[f+234>>0]|0)Br(ba,f,s);c[z>>2]=(c[z>>2]|0)+1}if(a[f+232>>0]|0)Cr(ba,f,s,t,c[z>>2]|0)}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{da=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}while(0);k=f+248|0;l=c[k>>2]|0;if(!l){c[k>>2]=0;da=c[ba>>2]|0;Ra=ca;return da|0}m=c[l+20>>2]|0;gc(c[l+16>>2]|0)|0;if(m|0){if(c[m+480>>2]|0){Xd(m,l);c[k>>2]=0;da=c[ba>>2]|0;Ra=ca;return da|0}da=l;if((c[m+304>>2]|0)>>>0<=da>>>0?(c[m+308>>2]|0)>>>0>da>>>0:0){da=m+300|0;c[l>>2]=c[da>>2];c[da>>2]=l;c[k>>2]=0;da=c[ba>>2]|0;Ra=ca;return da|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);c[k>>2]=0;da=c[ba>>2]|0;Ra=ca;return da|0}else{da=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);c[k>>2]=0;da=c[ba>>2]|0;Ra=ca;return da|0}return 0}function Nq(b){b=b|0;var d=0,e=0,f=0,g=0;g=Ra;Ra=Ra+16|0;d=g;c[b+52>>2]=0;f=b+233|0;if((a[f>>0]|0)!=2){f=0;Ra=g;return f|0}c[d>>2]=c[b+20>>2];e=Bb(55011,d)|0;if(!e){f=7;Ra=g;return f|0}d=Rd(c[b+12>>2]|0,c[b+16>>2]|0,e,0,0,0,0,0,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](e);else{b=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e)}a[f>>0]=(d|0)==0&1;f=0;Ra=g;return f|0}function Oq(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;o=Ra;Ra=Ra+16|0;d=o;f=o+8|0;m=b+12|0;l=(c[m>>2]|0)+40|0;n=c[l>>2]|0;l=c[l+4>>2]|0;g=Sr(b)|0;a:do if(!g){j=b+52|0;if((c[j>>2]|0)>>>0>4){k=b+48|0;switch(c[k>>2]|0){case 255:case 0:{g=0;break a}default:{}}h=b+200|0;e=c[h>>2]|0;c[f>>2]=e;do if(!e){g=c[b+20>>2]|0;c[d>>2]=c[b+16>>2];c[d+4>>2]=g;d=Bb(53253,d)|0;if(!d){g=7;d=0;break}g=qd(c[m>>2]|0,d,-1,133,0,f,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](d);else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d)}d=c[f>>2]|0;c[h>>2]=d;if(!g){e=d;i=12}else d=0}else i=12;while(0);do if((i|0)==12){g=e;if((Gc(g)|0)==100)d=Nc(g,0)|0;else d=0;if(e){e=c[g>>2]|0;i=g+136|0;h=c[i+4>>2]|0;if((h|0)>0|(h|0)==0&(c[i>>2]|0)>>>0>0)hc(e,g);f=kc(g)|0;c[g+20>>2]=770837923;c[g+36>>2]=-1;c[g+40>>2]=0;a[g+146>>0]=2;c[g+44>>2]=0;c[g+32>>2]=1;a[g+147>>0]=-1;c[g+48>>2]=0;i=g+64|0;c[i>>2]=0;c[i+4>>2]=0;if((f|0)==3082|(a[e+81>>0]|0)!=0){og(e);g=7;break}else{g=c[e+68>>2]&f;break}}else g=0}while(0);d=G(c[j>>2]|0,d)|0;d=((d|0)/2|0)+d|0;if((d|0)>64)g=Or(b,d,c[k>>2]|0)|0}else g=0}while(0);d=b+248|0;e=c[d>>2]|0;do if(e|0){f=c[e+20>>2]|0;gc(c[e+16>>2]|0)|0;if(f|0){if(c[f+480>>2]|0){Xd(f,e);break}b=e;if((c[f+304>>2]|0)>>>0<=b>>>0?(c[f+308>>2]|0)>>>0>b>>>0:0){b=f+300|0;c[e>>2]=c[b>>2];c[b>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{b=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);c[d>>2]=0;m=(c[m>>2]|0)+40|0;c[m>>2]=n;c[m+4>>2]=l;Ra=o;return g|0}function Pq(a){a=a|0;return 0}function Qq(a){a=a|0;Fr(a);return 0}function Rq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;if(Bu(d,51022)|0)if(Bu(d,51030)|0)if(Bu(d,37598)|0)if(!(Bu(d,51038)|0))a=3;else{e=0;return e|0}else a=2;else a=1;else a=0;c[e>>2]=c[26368+(a<<3)+4>>2];e=1;return e|0}function Sq(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;q=Ra;Ra=Ra+96|0;p=q+72|0;o=q+56|0;l=q+40|0;j=q+24|0;i=q+8|0;e=q;m=q+84|0;g=b+12|0;n=c[g>>2]|0;k=b+233|0;if((a[k>>0]|0)==2){c[e>>2]=c[b+20>>2];f=Bb(55011,e)|0;if(!f)e=7;else{e=Rd(c[g>>2]|0,c[b+16>>2]|0,f,0,0,0,0,0,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](f);else{h=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f)}a[k>>0]=(e|0)==0&1;h=7}}else h=7;if((h|0)==7){c[m>>2]=0;e=Sr(b)|0}c[m>>2]=e;if(!(c[b+40>>2]|0)){h=c[b+20>>2]|0;c[i>>2]=c[b+16>>2];c[i+4>>2]=h;c[i+8>>2]=d;_q(m,n,55251,i)}if(a[b+234>>0]|0){i=c[b+20>>2]|0;c[j>>2]=c[b+16>>2];c[j+4>>2]=i;c[j+8>>2]=d;_q(m,n,55304,j)}f=b+16|0;if(!(a[k>>0]|0))e=b+20|0;else{e=b+20|0;k=c[e>>2]|0;c[l>>2]=c[f>>2];c[l+4>>2]=k;c[l+8>>2]=d;_q(m,n,55357,l)}l=c[e>>2]|0;c[o>>2]=c[f>>2];c[o+4>>2]=l;c[o+8>>2]=d;_q(m,n,55404,o);o=c[e>>2]|0;c[p>>2]=c[f>>2];c[p+4>>2]=o;c[p+8>>2]=d;_q(m,n,55458,p);Ra=q;return c[m>>2]|0}function Tq(b,c){b=b|0;c=c|0;if(a[b+236>>0]|0){c=0;return c|0}c=Oq(b)|0;return c|0}function Uq(a,b){a=a|0;b=b|0;return 0}function Vq(a,b){a=a|0;b=b|0;Fr(a);return 0}function Wq(b){b=b|0;var c=0,e=0,f=0,g=0,h=0,i=0;if(!b){i=0;return i|0}i=a[b>>0]|0;g=d[208+(i&255)>>0]|0;c=g+-99|0;i=i<<24>>24==0;if(!(i|(c|0)!=0)){e=53664;f=b;do{f=f+1|0;e=e+1|0;h=a[f>>0]|0;c=(d[208+(h&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(h<<24>>24==0|(c|0)!=0))}if(!c){i=1;return i|0}c=g+-100|0;if(!(i|(c|0)!=0)){e=55510;f=b;do{f=f+1|0;e=e+1|0;h=a[f>>0]|0;c=(d[208+(h&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(h<<24>>24==0|(c|0)!=0))}if(!c){i=1;return i|0}h=g+-115|0;g=i|(h|0)!=0;if(g)c=h;else{e=55518;f=b;do{f=f+1|0;e=e+1|0;i=a[f>>0]|0;c=(d[208+(i&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(i<<24>>24==0|(c|0)!=0))}if(!c){i=1;return i|0}if(g)c=h;else{e=55525;f=b;do{f=f+1|0;e=e+1|0;i=a[f>>0]|0;c=(d[208+(i&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(i<<24>>24==0|(c|0)!=0))}if(!c){i=1;return i|0}if(g){i=h;i=(i|0)==0;i=i&1;return i|0}e=31715;do{b=b+1|0;e=e+1|0;i=a[b>>0]|0;c=(d[208+(i&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(i<<24>>24==0|(c|0)!=0));i=(c|0)==0;i=i&1;return i|0}function Xq(f,g,h,i,j,k,l){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|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,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;Ia=Ra;Ra=Ra+320|0;Fa=Ia+296|0;Da=Ia+288|0;Ca=Ia+280|0;Ba=Ia+272|0;za=Ia+264|0;xa=Ia+256|0;wa=Ia+248|0;va=Ia+240|0;ua=Ia+232|0;ta=Ia+216|0;sa=Ia+200|0;ra=Ia+192|0;qa=Ia+176|0;pa=Ia+168|0;oa=Ia+160|0;na=Ia+152|0;Aa=Ia+144|0;ma=Ia+128|0;ha=Ia+120|0;ga=Ia+112|0;fa=Ia+104|0;ka=Ia+96|0;ja=Ia+80|0;ia=Ia+72|0;ea=Ia+64|0;da=Ia+56|0;W=Ia+48|0;R=Ia+40|0;O=Ia+32|0;Q=Ia+24|0;P=Ia+16|0;N=Ia+8|0;M=Ia;la=Ia+316|0;Ha=Ia+312|0;Ga=Ia+308|0;c[Ha>>2]=0;ya=(a[(c[j>>2]|0)+3>>0]|0)==52;c[Ga>>2]=0;_=j+4|0;X=Eu(c[_>>2]|0)|0;$=X+1|0;Y=j+8|0;Z=(Eu(c[Y>>2]|0)|0)+1|0;o=(i<<2)+-8|0;n=pb(o,0)|0;if((n|0)!=0?(gw(n|0,0,o|0)|0,m=pb(o,0)|0,(m|0)!=0):0){gw(m|0,0,o|0)|0;a:do if((i|0)>3){w=3;y=0;v=0;t=0;s=0;r=0;q=0;u=0;F=0;x=0;p=0;o=0;while(1){H=c[j+(w<<2)>>2]|0;do if((o|0)==0?!((H|0)==0|(Eu(H)|0)>>>0<9):0){o=a[H>>0]|0;b:do if(!(o<<24>>24)){o=53622;Ea=9}else{I=o&255;o=208+I|0;do if((I|32|0)==116){o=a[H+1>>0]|0;if(!(o<<24>>24)){o=53623;Ea=9;break b}I=o&255;o=208+I|0;if((I|32|0)==111){o=a[H+2>>0]|0;if(!(o<<24>>24)){o=53624;Ea=9;break b}I=o&255;o=208+I|0;if((I|32|0)==107){o=a[H+3>>0]|0;if(!(o<<24>>24)){o=53625;Ea=9;break b}I=o&255;o=208+I|0;if((I|32|0)==101){o=a[H+4>>0]|0;if(!(o<<24>>24)){o=53626;Ea=9;break b}o=o&255;if((o|32|0)!=110){z=110;o=208+o|0;break}o=a[H+5>>0]|0;if(!(o<<24>>24)){o=53627;Ea=9;break b}o=o&255;if((o|32|0)!=105){z=105;o=208+o|0;break}o=a[H+6>>0]|0;if(!(o<<24>>24)){o=53628;Ea=9;break b}o=o&255;if((o|32|0)!=122){z=122;o=208+o|0;break}o=a[H+7>>0]|0;if(!(o<<24>>24)){o=53629;Ea=9;break b}o=o&255;if((o|32|0)==101)break b;else{z=101;o=208+o|0}}else z=101}else z=107}else z=111}else z=116;while(0);K=d[o>>0]|0;J=z;Ea=13}while(0);if((Ea|0)==9){K=0;J=a[208+(d[o>>0]|0)>>0]|0;Ea=13}if((Ea|0)==13?(Ea=0,(K|0)!=(J&255|0)):0){Ea=17;break}I=a[H+8>>0]|0;if((I&128|0)==0?(a[26208+I>>0]|0)==0:0){E=Yq(h,H+9|0,Ga,l)|0;c[Ha>>2]=E;E=y}else Ea=17}else Ea=17;while(0);c:do if((Ea|0)==17){Ea=0;d:do if(ya){o=H;e:while(1){switch(a[o>>0]|0){case 0:break d;case 61:break e;default:{}}o=o+1|0}E=o-H|0;c[M>>2]=o+1;I=Bb(31408,M)|0;if(!I){c[Ha>>2]=7;E=y;break c}o=a[I>>0]|0;switch(o<<24>>24){case 34:case 39:case 91:case 96:{C=o<<24>>24==91?93:o;z=a[I+1>>0]|0;f:do if(!(z<<24>>24))o=0;else{A=1;o=0;do{B=A+1|0;if(z<<24>>24==C<<24>>24){if((a[I+B>>0]|0)!=C<<24>>24)break f;a[I+o>>0]=C;A=A+2|0}else{a[I+o>>0]=z;A=B}o=o+1|0;z=a[I+A>>0]|0}while(z<<24>>24!=0)}while(0);a[I+o>>0]=0;break}default:{}}G=I;g:do if(!H)o=8;else{switch(E|0){case 9:{A=H;C=51038;B=E;while(1){o=a[A>>0]|0;if(!(o<<24>>24)){Ea=36;break}z=a[208+(o&255)>>0]|0;o=a[208+(d[C>>0]|0)>>0]|0;if(z<<24>>24!=o<<24>>24){Ea=38;break}if((B|0)>1){A=A+1|0;C=C+1|0;B=B+-1|0}else{o=0;break g}}if((Ea|0)==36){Ea=0;z=0;o=a[208+(d[C>>0]|0)>>0]|0}else if((Ea|0)==38){Ea=0;z=z&255}if((z|0)==(o&255|0)){o=0;break g}switch(E|0){case 6:{Ea=42;break}case 8:{o=E;Ea=415;break}default:{}}break}case 6:{Ea=42;break}case 8:{o=E;Ea=415;break}default:{}}if((Ea|0)==42){Ea=0;A=H;C=53631;B=E;while(1){o=a[A>>0]|0;if(!(o<<24>>24)){Ea=412;break}z=a[208+(o&255)>>0]|0;o=a[208+(d[C>>0]|0)>>0]|0;if(z<<24>>24!=o<<24>>24){Ea=410;break}if((B|0)>1){A=A+1|0;C=C+1|0;B=B+-1|0}else{o=1;break g}}if((Ea|0)==410){Ea=0;z=z&255}else if((Ea|0)==412){Ea=0;z=0;o=a[208+(d[C>>0]|0)>>0]|0}if((z|0)==(o&255|0)){o=1;break}if((E|0)==8){o=8;Ea=415}}if((Ea|0)==415){Ea=0;B=H;C=53638;A=o;while(1){o=a[B>>0]|0;if(!(o<<24>>24)){Ea=420;break}z=a[208+(o&255)>>0]|0;o=a[208+(d[C>>0]|0)>>0]|0;if(z<<24>>24!=o<<24>>24){Ea=418;break}if((A|0)>1){B=B+1|0;C=C+1|0;A=A+-1|0}else{o=2;break g}}if((Ea|0)==418){Ea=0;z=z&255}else if((Ea|0)==420){Ea=0;z=0;o=a[208+(d[C>>0]|0)>>0]|0}if((z|0)==(o&255|0)){o=2;break}}D=(E|0)==10;if(D){o=a[H>>0]|0;h:do if(!(o<<24>>24)){o=53647;Ea=427}else{C=o&255;o=208+C|0;do if((C|32|0)==117){o=a[H+1>>0]|0;if(!(o<<24>>24)){o=53648;Ea=427;break h}o=o&255;if((o|32|0)!=110){A=110;o=208+o|0;break}o=a[H+2>>0]|0;if(!(o<<24>>24)){o=53649;Ea=427;break h}o=o&255;if((o|32|0)!=99){A=99;o=208+o|0;break}o=a[H+3>>0]|0;if(!(o<<24>>24)){o=53650;Ea=427;break h}o=o&255;if((o|32|0)!=111){A=111;o=208+o|0;break}o=a[H+4>>0]|0;if(!(o<<24>>24)){o=53651;Ea=427;break h}o=o&255;if((o|32|0)!=109){A=109;o=208+o|0;break}o=a[H+5>>0]|0;if(!(o<<24>>24)){o=53652;Ea=427;break h}o=o&255;if((o|32|0)!=112){A=112;o=208+o|0;break}o=a[H+6>>0]|0;if(!(o<<24>>24)){o=53653;Ea=427;break h}o=o&255;if((o|32|0)!=114){A=114;o=208+o|0;break}o=a[H+7>>0]|0;if(!(o<<24>>24)){o=53654;Ea=427;break h}o=o&255;if((o|32|0)!=101){A=101;o=208+o|0;break}o=a[H+8>>0]|0;if(!(o<<24>>24)){o=53655;Ea=427;break h}o=o&255;if((o|32|0)!=115){A=115;o=208+o|0;break}o=a[H+9>>0]|0;if(!(o<<24>>24)){o=53656;Ea=427;break h}o=o&255;if((o|32|0)==115){o=3;break g}else{A=115;o=208+o|0}}else A=117;while(0);z=d[o>>0]|0;o=A}while(0);if((Ea|0)==427){Ea=0;z=0;o=a[208+(d[o>>0]|0)>>0]|0}if((z|0)==(o&255|0)){o=3;break}}switch(E|0){case 5:{A=H;C=53658;B=E;while(1){o=a[A>>0]|0;if(!(o<<24>>24)){Ea=435;break}z=a[208+(o&255)>>0]|0;o=a[208+(d[C>>0]|0)>>0]|0;if(z<<24>>24!=o<<24>>24){Ea=433;break}if((B|0)>1){A=A+1|0;C=C+1|0;B=B+-1|0}else{o=4;break g}}if((Ea|0)==433){Ea=0;z=z&255}else if((Ea|0)==435){Ea=0;z=0;o=a[208+(d[C>>0]|0)>>0]|0}if((z|0)==(o&255|0)){o=4;break g}if((E|0)==7){o=7;Ea=438}break}case 7:{o=E;Ea=438;break}default:{}}if((Ea|0)==438){Ea=0;B=H;C=53664;A=o;while(1){o=a[B>>0]|0;if(!(o<<24>>24)){Ea=443;break}z=a[208+(o&255)>>0]|0;o=a[208+(d[C>>0]|0)>>0]|0;if(z<<24>>24!=o<<24>>24){Ea=441;break}if((A|0)>1){B=B+1|0;C=C+1|0;A=A+-1|0}else{o=5;break g}}if((Ea|0)==441){Ea=0;z=z&255}else if((Ea|0)==443){Ea=0;z=0;o=a[208+(d[C>>0]|0)>>0]|0}if((z|0)==(o&255|0)){o=5;break}}if(D){o=a[H>>0]|0;i:do if(!(o<<24>>24)){o=53672;Ea=450}else{E=o&255;o=208+E|0;do if((E|32|0)==108){o=a[H+1>>0]|0;if(!(o<<24>>24)){o=53673;Ea=450;break i}o=o&255;if((o|32|0)!=97){A=97;o=208+o|0;break}o=a[H+2>>0]|0;if(!(o<<24>>24)){o=53674;Ea=450;break i}o=o&255;if((o|32|0)!=110){A=110;o=208+o|0;break}o=a[H+3>>0]|0;if(!(o<<24>>24)){o=53675;Ea=450;break i}o=o&255;if((o|32|0)!=103){A=103;o=208+o|0;break}o=a[H+4>>0]|0;if(!(o<<24>>24)){o=53676;Ea=450;break i}o=o&255;if((o|32|0)!=117){A=117;o=208+o|0;break}o=a[H+5>>0]|0;if(!(o<<24>>24)){o=53677;Ea=450;break i}o=o&255;if((o|32|0)!=97){A=97;o=208+o|0;break}o=a[H+6>>0]|0;if(!(o<<24>>24)){o=53678;Ea=450;break i}o=o&255;if((o|32|0)!=103){A=103;o=208+o|0;break}o=a[H+7>>0]|0;if(!(o<<24>>24)){o=53679;Ea=450;break i}o=o&255;if((o|32|0)!=101){A=101;o=208+o|0;break}o=a[H+8>>0]|0;if(!(o<<24>>24)){o=53680;Ea=450;break i}o=o&255;if((o|32|0)!=105){A=105;o=208+o|0;break}o=a[H+9>>0]|0;if(!(o<<24>>24)){o=53681;Ea=450;break i}o=o&255;if((o|32|0)==100){o=6;break g}else{A=100;o=208+o|0}}else A=108;while(0);z=d[o>>0]|0;o=A}while(0);if((Ea|0)==450){Ea=0;z=0;o=a[208+(d[o>>0]|0)>>0]|0}if((z|0)==(o&255|0)){o=6;break}if(D){o=a[H>>0]|0;j:do if(!(o<<24>>24)){o=53683;Ea=457}else{E=o&255;o=208+E|0;do if((E|32|0)==110){o=a[H+1>>0]|0;if(!(o<<24>>24)){o=53684;Ea=457;break j}o=o&255;if((o|32|0)!=111){A=111;o=208+o|0;break}o=a[H+2>>0]|0;if(!(o<<24>>24)){o=53685;Ea=457;break j}o=o&255;if((o|32|0)!=116){A=116;o=208+o|0;break}o=a[H+3>>0]|0;if(!(o<<24>>24)){o=53686;Ea=457;break j}o=o&255;if((o|32|0)!=105){A=105;o=208+o|0;break}o=a[H+4>>0]|0;if(!(o<<24>>24)){o=53687;Ea=457;break j}o=o&255;if((o|32|0)!=110){A=110;o=208+o|0;break}o=a[H+5>>0]|0;if(!(o<<24>>24)){o=53688;Ea=457;break j}o=o&255;if((o|32|0)!=100){A=100;o=208+o|0;break}o=a[H+6>>0]|0;if(!(o<<24>>24)){o=53689;Ea=457;break j}o=o&255;if((o|32|0)!=101){A=101;o=208+o|0;break}o=a[H+7>>0]|0;if(!(o<<24>>24)){o=53690;Ea=457;break j}o=o&255;if((o|32|0)!=120){A=120;o=208+o|0;break}o=a[H+8>>0]|0;if(!(o<<24>>24)){o=53691;Ea=457;break j}o=o&255;if((o|32|0)!=101){A=101;o=208+o|0;break}o=a[H+9>>0]|0;if(!(o<<24>>24)){o=53692;Ea=457;break j}o=o&255;if((o|32|0)==100){o=7;break g}else{A=100;o=208+o|0}}else A=110;while(0);z=d[o>>0]|0;o=A}while(0);if((Ea|0)==457){Ea=0;z=0;o=a[208+(d[o>>0]|0)>>0]|0}if((z|0)==(o&255|0)){o=7;break}}}o=8}while(0);k:do switch(o&15){case 0:{if((Eu(I)|0)==4){o=a[I>>0]|0;l:do if(!(o<<24>>24)){o=51048;Ea=46}else{H=o&255;o=208+H|0;do if((H|32|0)==102){o=a[I+1>>0]|0;if(!(o<<24>>24)){o=51049;Ea=46;break l}o=o&255;if((o|32|0)!=116){z=116;o=208+o|0;break}o=a[I+2>>0]|0;if(!(o<<24>>24)){o=51050;Ea=46;break l}o=o&255;if((o|32|0)!=115){z=115;o=208+o|0;break}o=a[I+3>>0]|0;if(!(o<<24>>24)){o=51051;Ea=46;break l}if(o<<24>>24==51){y=1;o=F;break k}else{z=51;o=208+(o&255)|0}}else z=102;while(0);y=d[o>>0]|0;o=z}while(0);if((Ea|0)==46){Ea=0;y=0;o=a[208+(d[o>>0]|0)>>0]|0}if((y|0)==(o&255|0)){y=1;o=F;break k}}c[N>>2]=I;Wp(l,53694,N);c[Ha>>2]=1;y=1;o=F;break}case 1:{if(!u){E=y;u=I;break c}if(!(c[7324]|0)){ab[c[29344>>2]&127](u);E=y;u=I;break c}else{E=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);E=y;u=I;break c}}case 2:{if(!q){E=y;q=I;break c}if(!(c[7324]|0)){ab[c[29344>>2]&127](q);E=y;q=I;break c}else{E=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);E=y;q=I;break c}}case 3:{if(!r){E=y;r=I;break c}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);E=y;r=I;break c}else{E=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);E=y;r=I;break c}}case 4:{m:do switch(Eu(I)|0){case 3:{B=a[I>>0]|0;do if(!(B<<24>>24)){o=53721;Ea=66}else{H=B&255;o=208+H|0;if((H|32|0)==97){o=a[I+1>>0]|0;if(!(o<<24>>24)){o=53722;Ea=66;break}H=o&255;o=208+H|0;if((H|32|0)==115){o=a[I+2>>0]|0;if(!(o<<24>>24)){o=53723;Ea=66;break}o=o&255;if((o|32|0)==99){o=B;break m}else{A=99;o=208+o|0}}else A=115}else A=97;z=d[o>>0]|0;o=A}while(0);if((Ea|0)==66){Ea=0;z=0;o=a[208+(d[o>>0]|0)>>0]|0}if((z|0)==(o&255|0))o=B;else Ea=77;break}case 4:{B=a[I>>0]|0;n:do if(!(B<<24>>24)){o=38073;Ea=72}else{H=B&255;o=208+H|0;do if((H|32|0)==100){o=a[I+1>>0]|0;if(!(o<<24>>24)){o=38074;Ea=72;break n}H=o&255;o=208+H|0;if((H|32|0)==101){o=a[I+2>>0]|0;if(!(o<<24>>24)){o=38075;Ea=72;break n}o=o&255;if((o|32|0)!=115){A=115;o=208+o|0;break}o=a[I+3>>0]|0;if(!(o<<24>>24)){o=38076;Ea=72;break n}o=o&255;if((o|32|0)==99){o=B;break m}else{A=99;o=208+o|0}}else A=101}else A=100;while(0);z=d[o>>0]|0;o=A}while(0);if((Ea|0)==72){Ea=0;z=0;o=a[208+(d[o>>0]|0)>>0]|0}if((z|0)==(o&255|0))o=B;else Ea=77;break}default:Ea=77}while(0);if((Ea|0)==77){Ea=0;c[P>>2]=I;Wp(l,53725,P);c[Ha>>2]=1;o=a[I>>0]|0}o=(o|32)<<24>>24==100&1;break}case 5:{if(!s){E=y;s=I;break c}if(!(c[7324]|0)){ab[c[29344>>2]&127](s);E=y;s=I;break c}else{E=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);E=y;s=I;break c}}case 6:{if(!t){E=y;t=I;break c}if(!(c[7324]|0)){ab[c[29344>>2]&127](t);E=y;t=I;break c}else{E=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);E=y;t=I;break c}}case 7:{c[m+(v<<2)>>2]=G;E=y;v=v+1|0;break c}default:{c[Q>>2]=H;Wp(l,53748,Q);c[Ha>>2]=1;o=F}}while(0);if(!I){E=y;F=o;break c}if(!(c[7324]|0)){ab[c[29344>>2]&127](I);E=y;F=o;break c}else{E=Wa[c[29352>>2]&127](I)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](I);E=y;F=o;break c}}while(0);p=p+1+(Eu(H)|0)|0;c[n+(x<<2)>>2]=H;x=x+1|0;E=y}while(0);w=w+1|0;o=c[Ha>>2]|0;y=(o|0)==0;if(!((w|0)<(i|0)&y))break;y=E;o=c[Ga>>2]|0}o:do if((s|0)!=0&y){do if(q|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{Q=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}while(0);do if(r|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{Q=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}while(0);if(x|0){w=n;r=0;q=0;o=c[Ha>>2]|0;Ea=162;break}if(!(c[7324]|0))ab[c[29344>>2]&127](n);else{Q=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n)}o=c[_>>2]|0;c[la>>2]=0;c[O>>2]=o;c[O+4>>2]=s;o=Bb(53869,O)|0;if(o){n=qd(g,o,-1,0,0,la,0)|0;p=(n|0)==0;if(!p){Q=pd(g)|0;c[R>>2]=Q;Wp(l,31408,R)}if(!(c[7324]|0))ab[c[29344>>2]&127](o);else{R=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o)}if(p){C=c[la>>2]|0;A=(C|0)==0;p:do if(!A?(T=C+144|0,S=b[T>>1]|0,U=S&65535,S<<16>>16!=0):0){y=C+116|0;o=0;q=S;x=0;n=0;while(1){w=c[C>>2]|0;do if(o>>>0<(q&65535)>>>0){p=c[y>>2]|0;q=p+(o*40|0)|0;q:do if(!q)p=0;else{r=b[p+(o*40|0)+8>>1]|0;do if((r&514)==514){if((a[p+(o*40|0)+10>>0]|0)!=1)break;p=c[p+(o*40|0)+16>>2]|0;break q}while(0);if(r&1){p=0;break}p=Gg(q,1)|0}while(0);q=w+81|0;if(!(a[q>>0]|0))break;if(c[w+180>>2]|0){p=0;break}a[q>>0]=0;c[w+264>>2]=0;p=w+272|0;c[p>>2]=(c[p>>2]|0)+-1;p=0}else p=0;while(0);p=Sv(x|0,n|0,(Eu(p)|0)+1|0,0)|0;n=L()|0;o=o+1|0;if((o|0)==(U|0)){x=U;B=p;o=0;break p}q=b[T>>1]|0;x=p}}else{x=0;B=0;n=0;o=1}while(0);D=Sv(B|0,n|0,x<<2|0,0)|0;D=pb(D,L()|0)|0;n=(D|0)==0;r:do if(o|n)o=n?7:0;else{n=D+(x<<2)|0;y=C+144|0;z=C+116|0;if(A){p=(Eu(0)|0)+1|0;o=0;while(1){ew(n|0,0,p|0)|0;c[D+(o<<2)>>2]=n;o=o+1|0;if((o|0)==(x|0)){o=0;break r}else n=n+p|0}}w=0;while(1){r=c[C>>2]|0;do if(w>>>0<(e[y>>1]|0)>>>0){o=c[z>>2]|0;p=o+(w*40|0)|0;s:do if(!p)o=0;else{q=b[o+(w*40|0)+8>>1]|0;do if((q&514)==514){if((a[o+(w*40|0)+10>>0]|0)!=1)break;o=c[o+(w*40|0)+16>>2]|0;break s}while(0);if(q&1){o=0;break}o=Gg(p,1)|0}while(0);p=r+81|0;if(!(a[p>>0]|0))break;if(c[r+180>>2]|0){o=0;break}a[p>>0]=0;c[r+264>>2]=0;o=r+272|0;c[o>>2]=(c[o>>2]|0)+-1;o=0}else o=0;while(0);p=(Eu(o)|0)+1|0;ew(n|0,o|0,p|0)|0;c[D+(w<<2)>>2]=n;w=w+1|0;if((w|0)==(x|0)){o=0;break}else n=n+p|0}}while(0);gc(C)|0;c[Ha>>2]=o;if(!((t|0)!=0&(o|0)==0)){w=D;p=B;r=0;q=0;n=D;Ea=162;break}if(!x){o=E;p=F;w=D;r=0;q=0;n=D;Ea=164;break a}n=0;while(1){p=c[D+(n<<2)>>2]|0;if(p|0){U=a[t>>0]|0;o=(d[208+(U&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0;if(!(U<<24>>24==0|(o|0)!=0)){q=t;do{q=q+1|0;p=p+1|0;U=a[q>>0]|0;o=(d[208+(U&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0}while(!(U<<24>>24==0|(o|0)!=0))}if(!o)break}n=n+1|0;if(n>>>0>=x>>>0){w=D;p=B;r=0;q=0;n=D;break o}}if(n>>>0>>0)do{U=n;n=n+1|0;c[D+(U<<2)>>2]=c[D+(n<<2)>>2]}while((n|0)!=(x|0));w=D;x=x+-1|0;p=B;r=0;q=0;n=D;break}}else n=7;c[Ha>>2]=n;o=0;r=0;q=0;n=0;p=0;break a}else{w=n;Ea=162}while(0);if((Ea|0)==162)if(o){o=0;p=0;break}if(!x){o=E;p=F;Ea=164}else{C=E;B=F;D=w;H=x;A=p;Ea=165}}else{o=0;v=0;t=0;s=0;u=0;p=0;w=n;r=0;q=0;Ea=164}while(0);if((Ea|0)==164){c[w>>2]=53664;C=o;B=p;D=w;H=1;A=8;Ea=165}do if((Ea|0)==165){if((c[Ga>>2]|0)==0?(h=Yq(h,50983,Ga,l)|0,c[Ha>>2]=h,h|0):0){o=0;p=0;break}x=(u|0)!=0;t:do if(x?(V=a[u>>0]|0,V<<24>>24!=0):0){w=u;o=2;p=V;while(1){switch(p<<24>>24){case 0:break t;case 44:{o=o+1|0;break}default:{}}p=w+1|0;w=p;p=a[p>>0]|0}}else o=1;while(0);p=o*24|0;O=pb(p,0)|0;u:do if(O){gw(O|0,0,p|0)|0;if(x&(o|0)>1){z=u;p=1;while(1){x=a[z>>0]|0;if((x+-48&255)>=10)break;y=z;w=0;do{w=(x<<24>>24)+-48+(w*10|0)|0;if((w|0)>1e7){w=0;break}y=y+1|0;x=a[y>>0]|0}while((x+-48&255)<10);if((y|0)==(z|0))break;if(!w){p=p+-1|0;o=o+-1|0}else c[O+(p*24|0)>>2]=w;p=p+1|0;if((p|0)>=(o|0)){p=0;Ea=185;break u}else z=y+1|0}c[Ha>>2]=1;c[W>>2]=u;Wp(l,53775,W);x=0;o=c[Ha>>2]|0}else{p=0;Ea=185}}else{o=0;p=7;Ea=185}while(0);if((Ea|0)==185){c[Ha>>2]=p;x=o;o=p}if(!o){w=x*24|0;p=X+289+Z+A+H+(H<<2)+w|0;o=pb(p,0)|0;if(!o){c[Ha>>2]=7;p=O;break}gw(o|0,0,p|0)|0;N=o+12|0;c[N>>2]=g;j=o+24|0;c[j>>2]=H;c[o+264>>2]=0;p=o+288|0;M=o+28|0;c[M>>2]=p;c[o+36>>2]=c[Ga>>2];c[o+260>>2]=1048576;I=o+234|0;a[I>>0]=ya&(C|0)==0&1;G=ya&1;K=o+233|0;a[K>>0]=G;a[o+232>>0]=G;a[o+235>>0]=B;c[o+48>>2]=255;G=o+40|0;c[G>>2]=s;i=o+44|0;c[i>>2]=t;p=p+(H<<2)|0;t=o+256|0;c[t>>2]=p;ew(p|0,O|0,w|0)|0;c[o+252>>2]=x;p=c[t>>2]|0;if((x|0)>0){s=0;do{a[p+(s*24|0)+4>>0]=1;a[p+(s*24|0)+5>>0]=1;p=p+(s*24|0)+8|0;c[p>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;s=s+1|0;p=c[t>>2]|0}while((s|0)!=(x|0))}p=p+(x*24|0)|0;E=o+32|0;c[E>>2]=p;p=p+H|0;J=o+20|0;c[J>>2]=p;ew(p|0,c[Y>>2]|0,Z|0)|0;p=p+Z|0;F=o+16|0;c[F>>2]=p;ew(p|0,c[_>>2]|0,$|0)|0;B=(H|0)>0;if(B){A=0;z=p+$|0;while(1){y=c[D+(A<<2)>>2]|0;v:while(1){x=a[y>>0]|0;s=x<<24>>24;switch(s|0){case 0:break v;case 96:case 34:case 39:{Ea=198;break v}case 91:{Ea=197;break v}default:{}}if(s&128|0){Ea=206;break}p=y+1|0;if(!(a[26208+s>>0]|0))y=p;else{Ea=208;break}}w:do if((Ea|0)==197){p=y;while(1){s=p+1|0;Ea=a[s>>0]|0;t=Ea<<24>>24==0;if(t^Ea<<24>>24!=93)p=s;else break}p=t?s:p+2|0;Ea=212}else if((Ea|0)==198){p=y+1|0;s=a[p>>0]|0;if(!(s<<24>>24))Ea=212;else{w=y;while(1){if(s<<24>>24==x<<24>>24){p=w+2|0;if((a[p>>0]|0)!=x<<24>>24){Ea=212;break w}}t=p+1|0;s=a[t>>0]|0;if(!(s<<24>>24)){p=t;Ea=212;break}else{w=p;p=t}}}}else if((Ea|0)==206){p=y+1|0;Ea=208}while(0);x:do if((Ea|0)==208)while(1){Ea=a[p>>0]|0;if((Ea&128|0)==0?(a[26208+Ea>>0]|0)==0:0){Ea=212;break x}p=p+1|0}while(0);if((Ea|0)==212){Ea=0;p=p-y|0;if((p|0)>0){ew(z|0,y|0,p|0)|0;s=p}else s=p}a[z+s>>0]=0;p=a[z>>0]|0;switch(p<<24>>24){case 34:case 39:case 91:case 96:{y=p<<24>>24==91?93:p;t=a[z+1>>0]|0;y:do if(!(t<<24>>24))p=0;else{w=1;p=0;do{x=w+1|0;if(t<<24>>24==y<<24>>24){if((a[z+x>>0]|0)!=y<<24>>24)break y;a[z+p>>0]=y;w=w+2|0}else{a[z+p>>0]=t;w=x}p=p+1|0;t=a[z+w>>0]|0}while(t<<24>>24!=0)}while(0);a[z+p>>0]=0;break}default:{}}c[(c[M>>2]|0)+(A<<2)>>2]=z;A=A+1|0;if((A|0)>=(H|0))break;else z=z+(s+1)|0}if(B){C=(v|0)>0;B=0;do{D=Eu(c[(c[M>>2]|0)+(B<<2)>>2]|0)|0;z:do if(C){if((D|0)<=0){p=0;while(1){s=m+(p<<2)|0;t=c[s>>2]|0;do if(t|0){if((D|0)!=(Eu(t)|0))break;if(!(c[(c[M>>2]|0)+(B<<2)>>2]|0))break;a[(c[E>>2]|0)+B>>0]=1;if(!(c[7324]|0))ab[c[29344>>2]&127](t);else{$=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-$;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t)}c[s>>2]=0}while(0);p=p+1|0;if((p|0)==(v|0))break z}}y=0;do{z=m+(y<<2)|0;A=c[z>>2]|0;do if(A|0){if((D|0)!=(Eu(A)|0))break;p=c[(c[M>>2]|0)+(B<<2)>>2]|0;if(!p)break;w=A;x=D;while(1){s=a[p>>0]|0;if(!(s<<24>>24)){Ea=238;break}s=a[208+(s&255)>>0]|0;t=a[208+(d[w>>0]|0)>>0]|0;if(s<<24>>24!=t<<24>>24){Ea=236;break}if((x|0)>1){p=p+1|0;w=w+1|0;x=x+-1|0}else break}if((Ea|0)==236){aa=s&255;ba=t;Ea=239}else if((Ea|0)==238){aa=0;ba=a[208+(d[w>>0]|0)>>0]|0;Ea=239}if((Ea|0)==239?(Ea=0,(aa|0)!=(ba&255|0)):0)break;a[(c[E>>2]|0)+B>>0]=1;if(!(c[7324]|0))ab[c[29344>>2]&127](A);else{$=Wa[c[29352>>2]&127](A)|0;c[14978]=(c[14978]|0)-$;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](A)}c[z>>2]=0}while(0);y=y+1|0}while((y|0)!=(v|0))}while(0);B=B+1|0}while((B|0)<(H|0))}}if((v|0)>0){p=0;do{s=c[m+(p<<2)>>2]|0;if(s|0){c[da>>2]=s;Wp(l,44776,da);c[Ha>>2]=1}p=p+1|0}while((p|0)!=(v|0))}if((c[Ha>>2]|0)==0?(ca=(q|0)==0,ca^(r|0)==0):0){c[Ha>>2]=1;c[ea>>2]=ca?53638:53647;Wp(l,53810,ea)}c[la>>2]=0;do if(!(c[G>>2]|0)){if(r){y=((Eu(r)|0)<<1)+3|0;y=pb(y,((y|0)<0)<<31>>31)|0;if(!y){t=0;s=0}else{a[y>>0]=34;x=0;t=y;A:while(1){s=t+1|0;w=r+x|0;p=a[w>>0]|0;switch(p<<24>>24){case 0:break A;case 34:{a[s>>0]=34;s=t+2|0;p=a[w>>0]|0;break}default:{}}a[s>>0]=p;x=x+1|0;t=s}a[s>>0]=34;a[t+2>>0]=0;t=y;s=y}}else{t=59952;s=0;r=0}Zq(Ha,la,53889,ia);if((c[j>>2]|0)>0){p=0;do{ia=c[(c[M>>2]|0)+(p<<2)>>2]|0;c[ja>>2]=t;c[ja+4>>2]=p;c[ja+8>>2]=ia;Zq(Ha,la,53895,ja);p=p+1|0}while((p|0)<(c[j>>2]|0))}if(c[i>>2]|0){c[ka>>2]=53917;Zq(Ha,la,53910,ka)}if(s)if(!(c[7324]|0)){ab[c[29344>>2]&127](s);y=r;break}else{y=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);y=r;break}else y=r}else{Zq(Ha,la,38132,fa);if((c[j>>2]|0)>0){p=0;do{c[ga>>2]=c[(c[M>>2]|0)+(p<<2)>>2];Zq(Ha,la,53924,ga);p=p+1|0}while((p|0)<(c[j>>2]|0))}p=c[i>>2]|0;if(!p)y=r;else{c[ha>>2]=p;Zq(Ha,la,53910,ha);y=r}}while(0);p=c[G>>2]|0;r=(p|0)==0;if(r)p=c[J>>2]|0;c[ma>>2]=c[F>>2];c[ma+4>>2]=p;c[ma+8>>2]=r?53956:59952;Zq(Ha,la,53933,ma);c[o+220>>2]=c[la>>2];c[ma>>2]=0;if(q){x=((Eu(q)|0)<<1)+3|0;x=pb(x,((x|0)<0)<<31>>31)|0;if(!x){s=0;r=0}else{a[x>>0]=34;w=0;s=x;B:while(1){r=s+1|0;t=q+w|0;p=a[t>>0]|0;switch(p<<24>>24){case 0:break B;case 34:{a[r>>0]=34;r=s+2|0;p=a[t>>0]|0;break}default:{}}a[r>>0]=p;w=w+1|0;s=r}a[r>>0]=34;a[s+2>>0]=0;s=x;r=x}}else{s=59952;r=0;q=0}Zq(Ha,ma,35133,Aa);if((c[j>>2]|0)>0){p=0;do{c[na>>2]=s;Zq(Ha,ma,53965,na);p=p+1|0}while((p|0)<(c[j>>2]|0))}if(c[i>>2]|0)Zq(Ha,ma,53972,oa);do if(r|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{oa=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}while(0);c[o+224>>2]=c[ma>>2];if(c[Ha>>2]|0){t=0;s=0;r=y;p=O;break}w=(f|0)!=0;if(w){c[Aa>>2]=0;t=c[N>>2]|0;C:do if(!(c[G>>2]|0)){s=c[i>>2]|0;p=Bb(53976,pa)|0;D:do if(p|0){r=0;while(1){if((r|0)>=(c[j>>2]|0))break;pa=c[(c[M>>2]|0)+(r<<2)>>2]|0;c[qa>>2]=p;c[qa+4>>2]=r;c[qa+8>>2]=pa;p=Bb(54002,qa)|0;if(!p)break D;else r=r+1|0}if(s){c[ra>>2]=p;c[ra+4>>2]=s;p=Bb(54014,ra)|0;if(!p)break}sa=c[J>>2]|0;c[ta>>2]=c[F>>2];c[ta+4>>2]=sa;c[ta+8>>2]=p;_q(Aa,t,54025,ta);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break C}else{ta=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ta;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break C}}while(0);c[Aa>>2]=7;ta=c[J>>2]|0;c[sa>>2]=c[F>>2];c[sa+4>>2]=ta;c[sa+8>>2]=0;_q(Aa,t,54025,sa)}while(0);ta=c[J>>2]|0;c[ua>>2]=c[F>>2];c[ua+4>>2]=ta;_q(Aa,t,54058,ua);ua=c[J>>2]|0;c[va>>2]=c[F>>2];c[va+4>>2]=ua;_q(Aa,t,54130,va);if(a[I>>0]|0){va=c[J>>2]|0;c[wa>>2]=c[F>>2];c[wa+4>>2]=va;_q(Aa,t,54283,wa)}do if(!(a[K>>0]|0))p=c[Aa>>2]|0;else{p=c[N>>2]|0;wa=c[J>>2]|0;c[xa>>2]=c[F>>2];c[xa+4>>2]=wa;_q(Aa,p,54351,xa);p=c[Aa>>2]|0;if(p|0)break;a[K>>0]=1;p=0}while(0);c[Ha>>2]=p}else p=0;if(!(w|ya))a[K>>0]=2;if(p|0){c[o+228>>2]=(c[o+240>>2]|0)+-35;t=0;s=0;r=y;p=O;break}c[za>>2]=c[F>>2];r=Bb(54428,za)|0;do if(r){p=qd(c[N>>2]|0,r,-1,0,0,Aa,0)|0;switch(p|0){case 0:{p=c[Aa>>2]|0;Gc(p)|0;Aa=Nc(p,0)|0;c[o+240>>2]=Aa;p=gc(p)|0;break}case 23:{c[o+240>>2]=1024;p=0;break}default:{}}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{Aa=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-Aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}else p=7;while(0);c[Ha>>2]=p;c[o+228>>2]=(c[o+240>>2]|0)+-35;if(p|0){t=0;s=0;r=y;p=O;break}t=c[i>>2]|0;t=(t|0)==0?54448:t;p=c[N>>2]|0;c[Ba>>2]=1;vd(p,1,Ba)|0;c[Ca>>2]=c[c[M>>2]>>2];p=Bb(54457,Ca)|0;E:do if(!p){s=0;p=0}else{r=1;while(1){if((r|0)>=(c[j>>2]|0)){s=p;p=1;break E}Ca=c[(c[M>>2]|0)+(r<<2)>>2]|0;c[Da>>2]=p;c[Da+4>>2]=Ca;p=Bb(54462,Da)|0;if(!p){s=0;p=0;break}else r=r+1|0}}while(0);r=c[J>>2]|0;c[Fa>>2]=s;c[Fa+4>>2]=r;c[Fa+8>>2]=t;r=Bb(54469,Fa)|0;if(!(p&(r|0)!=0))if(!r)p=7;else{p=7;Ea=341}else{p=td(c[N>>2]|0,r)|0;Ea=341}do if((Ea|0)==341)if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{Fa=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}while(0);do if(s|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{Fa=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}while(0);c[Ha>>2]=p;t=0;s=0;r=y;p=O}else{o=0;p=O}}while(0);do if(u|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](u);break}else{Fa=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);break}while(0);do if(p|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{Fa=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}while(0);do if(q|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{Fa=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}while(0);do if(r|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{Fa=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}while(0);do if(s|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{Fa=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}while(0);do if(t|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{Fa=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}while(0);if((v|0)>0){p=0;do{q=c[m+(p<<2)>>2]|0;do if(q|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{Fa=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}while(0);p=p+1|0}while((p|0)!=(v|0))}}else{c[Ha>>2]=7;o=0;m=0}do if(n|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{Fa=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}while(0);do if(m|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{Fa=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}while(0);if(!(c[Ha>>2]|0)){c[k>>2]=o;Ha=c[Ha>>2]|0;Ra=Ia;return Ha|0}if(o|0){Dq(o)|0;Ha=c[Ha>>2]|0;Ra=Ia;return Ha|0}m=c[Ga>>2]|0;if(!m){Ha=c[Ha>>2]|0;Ra=Ia;return Ha|0}Wa[c[(c[m>>2]|0)+8>>2]&127](m)|0;Ha=c[Ha>>2]|0;Ra=Ia;return Ha|0}function Yq(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,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;x=Ra;Ra=Ra+32|0;w=x+16|0;s=x+8|0;v=x;c[v>>2]=d;v=Bb(31408,v)|0;if(!v){w=7;Ra=x;return w|0}u=v+(Eu(v)|0)|0;l=v;a:while(1){k=a[l>>0]|0;h=k<<24>>24;switch(h|0){case 0:{d=0;break a}case 96:case 34:case 39:{t=5;break a}case 91:{t=4;break a}default:{}}if(h&128|0){t=13;break}d=l+1|0;if(!(a[26208+h>>0]|0))l=d;else{t=15;break}}b:do if((t|0)==4){d=l;while(1){h=d+1|0;t=a[h>>0]|0;i=t<<24>>24==0;if(i^t<<24>>24!=93)d=h;else break}d=i?h:d+2|0;t=19}else if((t|0)==5){d=l+1|0;h=a[d>>0]|0;if(!(h<<24>>24))t=19;else{j=l;while(1){if(h<<24>>24==k<<24>>24){d=j+2|0;if((a[d>>0]|0)!=k<<24>>24){t=19;break b}}i=d+1|0;h=a[i>>0]|0;if(!(h<<24>>24)){d=i;t=19;break}else{j=d;d=i}}}}else if((t|0)==13){d=l+1|0;t=15}while(0);c:do if((t|0)==15)while(1){t=a[d>>0]|0;if((t&128|0)==0?(a[26208+t>>0]|0)==0:0){t=19;break c}d=d+1|0}while(0);if((t|0)==19){h=d-l|0;d=l}m=(d|0)==0?v:d;a[m+h>>0]=0;d=a[m>>0]|0;switch(d<<24>>24){case 34:case 39:case 91:case 96:{l=d<<24>>24==91?93:d;i=a[m+1>>0]|0;d:do if(!(i<<24>>24))d=0;else{j=1;d=0;do{k=j+1|0;if(i<<24>>24==l<<24>>24){if((a[m+k>>0]|0)!=l<<24>>24)break d;a[m+d>>0]=l;j=j+2|0}else{a[m+d>>0]=i;j=k}d=d+1|0;i=a[m+j>>0]|0}while(i<<24>>24!=0)}while(0);a[m+d>>0]=0;break}default:{}}i=(Eu(m)|0)+1|0;e:do if((((b|0)!=0?(n=b+16|0,(c[n>>2]|0)!=0):0)?(o=Xa[(a[b>>0]<<24>>24==1?154:155)&255](m,i)|0,o=(c[b+12>>2]|0)+-1&o,p=c[n>>2]|0,(p|0)!=0):0)?(q=c[p+(o<<3)>>2]|0,r=(a[b>>0]|0)==1?79:80,g=c[p+(o<<3)+4>>2]|0,(q|0)!=0&(g|0)!=0):0){d=q;while(1){d=d+-1|0;if(!(Za[r&127](c[g+12>>2]|0,c[g+16>>2]|0,m,i)|0))break;g=c[g>>2]|0;if(!((d|0)!=0&(g|0)!=0)){t=37;break e}}n=c[g+8>>2]|0;if(n){g=m+(h+1)|0;f:do if(g>>>0>>0){b=0;l=0;d=0;while(1){g:while(1){k=a[g>>0]|0;i=k<<24>>24;switch(i|0){case 0:{h=b;g=l;break f}case 96:case 34:case 39:{t=43;break g}case 91:{t=42;break g}default:{}}if(i&128|0){t=51;break}h=g+1|0;if(!(a[26208+i>>0]|0))g=h;else{t=53;break}}h:do if((t|0)==42){h=g;while(1){i=h+1|0;t=a[i>>0]|0;j=t<<24>>24==0;if(j^t<<24>>24!=93)h=i;else break}h=j?i:h+2|0;t=57}else if((t|0)==43){t=0;i=g+1|0;j=a[i>>0]|0;if(!(j<<24>>24))l=1;else{h=g;while(1){if(j<<24>>24==k<<24>>24){h=h+2|0;if((a[h>>0]|0)!=k<<24>>24){t=57;break h}}else h=i;i=h+1|0;j=a[i>>0]|0;if(!(j<<24>>24)){h=i;t=57;break}}}}else if((t|0)==51){h=g+1|0;t=53}while(0);i:do if((t|0)==53)while(1){t=a[h>>0]|0;if((t&128|0)==0?(a[26208+t>>0]|0)==0:0){t=57;break i}h=h+1|0}while(0);if((t|0)==57){t=0;if(!g){h=b;g=l;break f}else l=h-g|0}h=b;b=b+1|0;if(mb()|0)break;m=sb(d,b<<2,0)|0;if(!m)break;c[m+(h<<2)>>2]=g;a[g+l>>0]=0;d=a[g>>0]|0;switch(d<<24>>24){case 34:case 39:case 91:case 96:{k=d<<24>>24==91?93:d;h=a[g+1>>0]|0;j:do if(!(h<<24>>24))d=0;else{i=1;d=0;do{j=i+1|0;if(h<<24>>24==k<<24>>24){if((a[g+j>>0]|0)!=k<<24>>24)break j;a[g+d>>0]=k;i=i+2|0}else{a[g+d>>0]=h;i=j}d=d+1|0;h=a[g+i>>0]|0}while(h<<24>>24!=0)}while(0);a[g+d>>0]=0;break}default:{}}g=g+(l+1)|0;if(g>>>0>=u>>>0){t=77;break}else{l=m;d=m}}if((t|0)==77){h=b;g=m;d=m;break}if(!(c[7324]|0))ab[c[29344>>2]&127](v);else{w=Wa[c[29352>>2]&127](v)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](v)}if(!d){w=7;Ra=x;return w|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);w=7;Ra=x;return w|0}else{w=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);w=7;Ra=x;return w|0}}else{h=0;g=0;d=0}while(0);g=Ya[c[n+4>>2]&127](h,g,e)|0;if(!g)c[c[e>>2]>>2]=n;else Wp(f,53851,w);if(d)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{w=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}else t=37}else t=37;while(0);if((t|0)==37){c[s>>2]=m;Wp(f,53600,s);g=1}if(!(c[7324]|0)){ab[c[29344>>2]&127](v);w=g;Ra=x;return w|0}else{w=Wa[c[29352>>2]&127](v)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](v);w=g;Ra=x;return w|0}return 0}function Zq(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;i=Ra;Ra=Ra+32|0;g=i+16|0;f=i;if(c[a>>2]|0){Ra=i;return}c[f>>2]=e;f=Ab(d,f)|0;if(f){d=c[b>>2]|0;if(d){c[g>>2]=d;c[g+4>>2]=f;d=Bb(38967,g)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](f);else{g=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f)}if(!d)h=8}else d=f}else h=8;if((h|0)==8){c[a>>2]=7;d=0}qb(c[b>>2]|0);c[b>>2]=d;Ra=i;return}function _q(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=Ra;Ra=Ra+16|0;f=g;if(c[a>>2]|0){Ra=g;return}c[f>>2]=e;d=Ab(d,f)|0;if(!d){c[a>>2]=7;Ra=g;return}b=nd(b,d,0,0,0)|0;c[a>>2]=b;if(!(c[7324]|0)){ab[c[29344>>2]&127](d);Ra=g;return}else{b=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);Ra=g;return}}function $q(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=b+8|0;if(a[f>>0]|0){d=(c[b>>2]|0)+216|0;if(!(c[d>>2]|0)){g=b+12|0;e=c[g>>2]|0;c[d>>2]=e;d=e;if(e|0){e=c[d>>2]|0;h=d+136|0;i=c[h+4>>2]|0;if((i|0)>0|(i|0)==0&(c[h>>2]|0)>>>0>0)hc(e,d);i=kc(d)|0;c[d+20>>2]=770837923;c[d+36>>2]=-1;c[d+40>>2]=0;a[d+146>>0]=2;c[d+44>>2]=0;c[d+32>>2]=1;a[d+147>>0]=-1;c[d+48>>2]=0;h=d+64|0;c[h>>2]=0;c[h+4>>2]=0;if((i|0)==3082|(a[e+81>>0]|0)!=0)og(e)}c[g>>2]=0}a[f>>0]=0}gc(c[b+12>>2]|0)|0;g=b+28|0;d=c[g>>2]|0;if(d|0)do{e=d;d=c[d+8>>2]|0;f=c[e+12>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{i=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](e);else{i=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e)}}while((d|0)!=0);c[g>>2]=0;d=c[b+44>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{i=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);d=c[b+92>>2]|0;do if((d|0?(a[d>>0]=0,(a[d+1>>0]|0)==0):0)?(a[d+2>>0]|0)==0:0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{i=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);ar(c[b+16>>2]|0);d=b+4|0;e=d+92|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));return}function ar(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;if(!a)return;while(1){b=c[a+12>>2]|0;if(!b){b=c[a+16>>2]|0;if(!b)break;else a=b}else a=b}do{g=c[a+8>>2]|0;f=c[a+20>>2]|0;if(f|0){b=c[f>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{e=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);do if(c[f+24>>2]|0?(h=c[f+28>>2]|0,h|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{e=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);e=f+64|0;b=f;d=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));if((c[e>>2]|0)>0){b=0;do{d=f+72+(b*24|0)+20|0;br(c[d>>2]|0);c[d>>2]=0;b=b+1|0}while((b|0)<(c[e>>2]|0))}}b=c[a+40>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{f=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](a);else{f=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a)}a:do if(g)if((a|0)==(c[g+12>>2]|0)?(i=c[g+16>>2]|0,(i|0)!=0):0){a=i;while(1){b=c[a+12>>2]|0;if(!b){b=c[a+16>>2]|0;if(!b)break a;else a=b}else a=b}}else a=g;else a=0;while(0)}while((a|0)!=0);return}function br(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!b)return;j=b+4|0;d=c[b>>2]|0;if((c[j>>2]|0)>0){g=0;do{f=c[d+(g<<2)>>2]|0;do if(f|0){do if((c[f+56>>2]|0)==0?(h=c[f+64>>2]|0,h|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{e=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);do if((a[f+5>>0]|0)==0?(i=c[f+40>>2]|0,i|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{e=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);d=c[f+52>>2]|0;do if(d|0){e=c[d+20>>2]|0;gc(c[d+16>>2]|0)|0;if(e|0){if(c[e+480>>2]|0){Xd(e,d);break}k=d;if((c[e+304>>2]|0)>>>0<=k>>>0?(c[e+308>>2]|0)>>>0>k>>>0:0){k=e+300|0;c[d>>2]=c[k>>2];c[k>>2]=d;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{k=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{k=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);g=g+1|0;d=c[b>>2]|0}while((g|0)<(c[j>>2]|0))}do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{k=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);d=b+16|0;e=c[d>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{k=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);c[j>>2]=0;c[b>>2]=0;c[d>>2]=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{k=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}} -function kj(f,h,i){f=f|0;h=h|0;i=i|0;var 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,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,_=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;Pa=Ra;Ra=Ra+400|0;Ia=Pa+200|0;Ha=Pa+192|0;Ca=Pa+176|0;ya=Pa+168|0;Aa=Pa+160|0;ra=Pa+152|0;qa=Pa+144|0;pa=Pa+136|0;oa=Pa+128|0;ja=Pa+120|0;ha=Pa+112|0;ia=Pa+104|0;fa=Pa+96|0;ea=Pa+88|0;ga=Pa+80|0;ba=Pa+72|0;$=Pa+64|0;_=Pa+56|0;Z=Pa+48|0;aa=Pa+32|0;D=Pa+24|0;C=Pa+16|0;o=Pa+8|0;n=Pa;Da=Pa+360|0;Ea=Pa+308|0;Ga=Pa+296|0;La=Pa+256|0;Ma=Pa+208|0;Na=c[f>>2]|0;Oa=f+8|0;j=c[Oa>>2]|0;a:do if(!j){if((c[f+116>>2]|0)==0?(b[Na+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[Na+272>>2]|0)if(!(a[Na+81>>0]|0))Fa=15;else{Ja=0;break a}else{do if((e[Na+276>>1]|0)>=224){j=Na+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];Ka=Na+284|0;c[Ka>>2]=(c[Ka>>2]|0)+1;break b}j=Na+296|0;k=c[j>>2]|0;if(!k){j=Na+292|0;break}else{c[j>>2]=c[k>>2];Ka=Na+284|0;c[Ka>>2]=(c[Ka>>2]|0)+1;break b}}else j=Na+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;Fa=15}while(0);if((Fa|0)==15)k=_d(Na,224,0)|0;if(!k)Ja=0;else{T=k+104|0;U=T+120|0;do{c[T>>2]=0;T=T+4|0}while((T|0)<(U|0));c[k>>2]=Na;j=Na+4|0;l=c[j>>2]|0;if(l|0)c[l+4>>2]=k;c[k+8>>2]=l;c[k+4>>2]=0;c[j>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=f;c[Oa>>2]=k;Di(k,61,0,1,0)|0;Ja=k}}else Ja=j;while(0);if(!h){Oa=1;Ra=Pa;return Oa|0}xa=Na+81|0;if(a[xa>>0]|0){Oa=1;Ra=Pa;return Oa|0}Ka=f+36|0;if(c[Ka>>2]|0){Oa=1;Ra=Pa;return Oa|0}j=c[f>>2]|0;do if(((a[j+165>>0]|0)==0?(a[f+200>>0]|0)==0:0)?(m=c[j+312>>2]|0,m|0):0){j=$a[m&127](c[j+316>>2]|0,21,0,0,0,c[f+240>>2]|0)|0;if((j|0)==1){cd(f,39216,n);c[f+12>>2]=23;Oa=1;Ra=Pa;return Oa|0}if((j|2|0)==2){if(!j)break;else j=1;Ra=Pa;return j|0}else{cd(f,39231,o);c[f+12>>2]=1;Oa=1;Ra=Pa;return Oa|0}}while(0);T=Ma;U=T+48|0;do{c[T>>2]=0;T=T+4|0}while((T|0)<(U|0));if((d[i>>0]|0)<9){j=h+48|0;k=c[j>>2]|0;if(k|0)ri(Na,k);c[j>>2]=0;Ba=h+8|0;c[Ba>>2]=c[Ba>>2]&-2;Kk(f,h,0)}else Kk(f,h,0);c:do if((c[Ka>>2]|0)==0?(a[xa>>0]|0)==0:0){if(((a[i>>0]|0)==9?(A=c[Oa>>2]|0,B=c[f>>2]|0,(a[f+199>>0]|0)==0):0)?(p=f+16|0,(a[p>>0]|0)==0):0){k=h;while(1){j=c[k+52>>2]|0;if(!j)break;else k=j}y=c[k+32>>2]|0;z=c[k>>2]|0;a[p>>0]=1;x=c[B+32>>2]|0;w=(x&4|0)==0&0==0;x=(x&68|0)==0&0==0;Wi(A,c[z>>2]|0);j=c[z>>2]|0;if((j|0)>0){n=A+116|0;o=B+272|0;p=B+276|0;q=B+81|0;r=B+288|0;s=B+300|0;t=B+296|0;u=B+284|0;v=B+292|0;m=0;do{k=c[z+4+(m*20|0)>>2]|0;j=c[z+4+(m*20|0)+4>>2]|0;d:do if(j){if(!(a[(c[A>>2]|0)+81>>0]|0))yc((c[n>>2]|0)+(m*40|0)|0,j,-1,1,-1)|0}else{do if(!x){if((a[k>>0]|0)!=-94)break;j=b[k+32>>1]|0;k=c[k+44>>2]|0;if(j<<16>>16<0)j=b[k+40>>1]|0;else j=j<<16>>16;if((j|0)<0)j=38132;else j=c[(c[k+4>>2]|0)+(j<<4)>>2]|0;if(w){if(a[(c[A>>2]|0)+81>>0]|0)break d;yc((c[n>>2]|0)+(m*40|0)|0,j,-1,1,-1)|0;break d}else{c[C>>2]=c[k>>2];c[C+4>>2]=j;j=dd(B,40358,C)|0;if(a[(c[A>>2]|0)+81>>0]|0)break d;yc((c[n>>2]|0)+(m*40|0)|0,j,-1,1,116)|0;break d}}while(0);k=c[z+4+(m*20|0)+8>>2]|0;e:do if(!k){c[D>>2]=m+1;j=dd(B,41025,D)|0}else{l=(Eu(k)|0)+1|0;f:do if(c[o>>2]|0)if(!(a[q>>0]|0))Fa=69;else{j=0;break e}else{do if(0<0|(0==0?(e[p>>1]|0)>>>0>>0:0))j=r;else{j=c[s>>2]|0;if(j|0){c[s>>2]=c[j>>2];c[u>>2]=(c[u>>2]|0)+1;break f}j=c[t>>2]|0;if(!j){j=v;break}c[t>>2]=c[j>>2];c[u>>2]=(c[u>>2]|0)+1;break f}while(0);c[j>>2]=(c[j>>2]|0)+1;Fa=69}while(0);if((Fa|0)==69){Fa=0;j=_d(B,l,0)|0}if(!j){j=0;break}ew(j|0,k|0,l|0)|0}while(0);if(a[(c[A>>2]|0)+81>>0]|0)break;yc((c[n>>2]|0)+(m*40|0)|0,j,-1,1,116)|0}while(0);m=m+1|0;j=c[z>>2]|0}while((m|0)<(j|0))}n=c[Oa>>2]|0;c[Da+4>>2]=y;c[Da>>2]=f;c[Da+12>>2]=0;if((j|0)>0){l=n+116|0;m=n+144|0;k=0;do{if(!(a[(c[n>>2]|0)+81>>0]|0)){j=Vk(Da,c[z+4+(k*20|0)>>2]|0)|0;yc((c[l>>2]|0)+((k+(e[m>>1]|0)|0)*40|0)|0,j,-1,1,-1)|0;j=c[z>>2]|0}k=k+1|0}while((k|0)<(j|0))}}wa=h+68|0;ca=h+52|0;if(c[wa>>2]|0?(c[ca>>2]|0)==0:0){j=c[Oa>>2]|0;g:do if(!j){l=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[l+76>>1]&8)==0:0)a[f+23>>0]=1;h:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))Fa=97;else{A=0;break g}else{do if((e[l+276>>1]|0)>=224){j=l+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];Ba=l+284|0;c[Ba>>2]=(c[Ba>>2]|0)+1;break h}j=l+296|0;k=c[j>>2]|0;if(!k){j=l+292|0;break}else{c[j>>2]=c[k>>2];Ba=l+284|0;c[Ba>>2]=(c[Ba>>2]|0)+1;break h}}else j=l+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;Fa=97}while(0);if((Fa|0)==97)k=_d(l,224,0)|0;if(!k)A=0;else{T=k+104|0;U=T+120|0;do{c[T>>2]=0;T=T+4|0}while((T|0)<(U|0));c[k>>2]=l;j=l+4|0;l=c[j>>2]|0;if(l|0)c[l+4>>2]=k;c[k+8>>2]=l;c[k+4>>2]=0;c[j>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=f;c[Oa>>2]=k;Di(k,61,0,1,0)|0;A=k}}else A=j;while(0);B=c[f>>2]|0;z=h+32|0;u=c[z>>2]|0;v=c[h+36>>2]|0;w=c[h+40>>2]|0;x=c[h+44>>2]|0;o=c[wa>>2]|0;p=o+8|0;c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[z+12>>2]=0;j=gk(B,c[p>>2]|0,0)|0;q=o+12|0;m=c[q>>2]|0;if(m){if(!j)n=0;else n=c[j>>2]|0;if((c[m>>2]|0)>0){l=0;do{k=c[m+4+(l*20|0)>>2]|0;if(!k)k=0;else k=dk(c[f>>2]|0,k,0,0)|0;j=nj(c[f>>2]|0,j,k)|0;if(j|0)a[j+4+((l+n|0)*20|0)+12>>0]=a[m+4+(l*20|0)+12>>0]|0;l=l+1|0}while((l|0)<(c[m>>2]|0));t=j}else t=j}else t=j;i:do if((t|0?(G=h+48|0,F=c[G>>2]|0,F|0):0)?(E=c[t>>2]|0,(E|0)==(c[F>>2]|0)):0){if((E|0)>0){j=0;do{if((a[t+4+(j*20|0)+12>>0]|0)!=(a[F+4+(j*20|0)+12>>0]|0))break i;if(bk(0,c[t+4+(j*20|0)>>2]|0,c[F+4+(j*20|0)>>2]|0,-1)|0)break i;j=j+1|0}while((j|0)<(c[t>>2]|0));j=c[G>>2]|0;if(j|0)Fa=121}else{j=F;Fa=121}if((Fa|0)==121)ri(B,j);c[G>>2]=0}while(0);j=f+40|0;m=c[j>>2]|0;y=o+44|0;c[y>>2]=m;c[j>>2]=m+4;j=c[h>>2]|0;m=Da+12|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[Ea+12>>2]=0;m=Ea+8|0;c[m>>2]=0;c[Ea>>2]=o;c[Ea+4>>2]=u;c[Da>>2]=f;c[Da+4>>2]=129;c[Da+8>>2]=130;c[Da+24>>2]=Ea;if((j|0)!=0?(H=c[j>>2]|0,(H|0)>0):0){l=H;j=j+4|0;while(1){k=c[j>>2]|0;if(k|0?_j(Da,k)|0:0)break;if((l|0)>1){l=l+-1|0;j=j+20|0}else break}k=c[m>>2]|0}else k=0;j=c[h+48>>2]|0;m=Da+12|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[Ea+12>>2]=0;m=Ea+8|0;c[m>>2]=k;c[Ea>>2]=o;c[Ea+4>>2]=u;c[Da>>2]=f;c[Da+4>>2]=129;c[Da+8>>2]=130;c[Da+24>>2]=Ea;if((j|0)!=0?(I=c[j>>2]|0,(I|0)>0):0){l=I;j=j+4|0;while(1){k=c[j>>2]|0;if(k|0?_j(Da,k)|0:0)break;if((l|0)>1){l=l+-1|0;j=j+20|0}else break}k=c[m>>2]|0}j=k;l=(k|0)==0;if(l)k=0;else k=c[j>>2]|0;c[o+72>>2]=k;n=c[p>>2]|0;do if(n){if(l)m=0;else m=c[j>>2]|0;if((c[n>>2]|0)<=0)break;l=0;do{k=c[n+4+(l*20|0)>>2]|0;if(!k)k=0;else k=dk(c[f>>2]|0,k,0,0)|0;j=nj(c[f>>2]|0,j,k)|0;if(j|0)a[j+4+((l+m|0)*20|0)+12>>0]=a[n+4+(l*20|0)+12>>0]|0;l=l+1|0}while((l|0)<(c[n>>2]|0))}while(0);m=c[q>>2]|0;do if(m){if(!j)n=0;else n=c[j>>2]|0;if((c[m>>2]|0)<=0){Fa=159;break}l=0;do{k=c[m+4+(l*20|0)>>2]|0;if(!k)k=0;else k=dk(c[f>>2]|0,k,0,0)|0;j=nj(c[f>>2]|0,j,k)|0;k=(j|0)==0;if(!k)a[j+4+((l+n|0)*20|0)+12>>0]=a[m+4+(l*20|0)+12>>0]|0;l=l+1|0}while((l|0)<(c[m>>2]|0));if(o){l=j;Fa=161}}else Fa=159;while(0);if((Fa|0)==159){l=j;k=(j|0)==0;Fa=161}if((Fa|0)==161){p=f+44|0;q=A+108|0;r=A+112|0;s=A+104|0;j=l;do{if(k)l=0;else l=c[j>>2]|0;c[o+76>>2]=l;n=c[(c[o+68>>2]|0)+20>>2]|0;do if(n){if(k)m=0;else m=c[j>>2]|0;if((c[n>>2]|0)<=0)break;l=0;do{k=c[n+4+(l*20|0)>>2]|0;if(!k)k=0;else k=dk(c[f>>2]|0,k,0,0)|0;j=nj(c[f>>2]|0,j,k)|0;if(j|0)a[j+4+((l+m|0)*20|0)+12>>0]=a[n+4+(l*20|0)+12>>0]|0;l=l+1|0}while((l|0)<(c[n>>2]|0))}while(0);k=c[o+36>>2]|0;if(k){Ba=dk(B,k,0,0)|0;j=nj(c[f>>2]|0,j,Ba)|0}l=c[p>>2]|0;k=l+1|0;c[o+48>>2]=k;l=l+2|0;c[p>>2]=l;c[o+52>>2]=l;l=c[q>>2]|0;if((c[r>>2]|0)>(l|0)){c[q>>2]=l+1;Ba=c[s>>2]|0;a[Ba+(l*20|0)>>0]=73;b[Ba+(l*20|0)+2>>1]=0;c[Ba+(l*20|0)+4>>2]=0;c[Ba+(l*20|0)+8>>2]=k;c[Ba+(l*20|0)+12>>2]=0;c[Ba+(l*20|0)+16>>2]=0;a[Ba+(l*20|0)+1>>0]=0}else Di(A,73,0,k,0)|0;o=c[o+32>>2]|0;k=(j|0)==0}while((o|0)!=0)}if(k){l=oj(B,147,17136,0)|0;l=nj(c[f>>2]|0,0,l)|0}else l=j;j=mj(f,l,u,v,w,x,t,0,0)|0;k=pj(f,0,0,0)|0;c[z>>2]=k;do if(k){c[k+28>>2]=j;Qk(f,k);if(!(Rk(f,(c[z>>2]|0)+8|0)|0)){Ba=j+8|0;c[Ba>>2]=c[Ba>>2]|64;Ba=h+8|0;c[Ba>>2]=c[Ba>>2]&-9;Kk(f,j,0);j=0}else j=7;m=c[y>>2]|0;k=c[l>>2]|0;n=A+108|0;l=c[n>>2]|0;o=A+112|0;if((c[o>>2]|0)>(l|0)){c[n>>2]=l+1;Ba=c[A+104>>2]|0;a[Ba+(l*20|0)>>0]=113;b[Ba+(l*20|0)+2>>1]=0;c[Ba+(l*20|0)+4>>2]=m;c[Ba+(l*20|0)+8>>2]=k;c[Ba+(l*20|0)+12>>2]=0;c[Ba+(l*20|0)+16>>2]=0;a[Ba+(l*20|0)+1>>0]=0}else Di(A,113,m,k,0)|0;k=c[y>>2]|0;l=k+1|0;m=c[n>>2]|0;if((c[o>>2]|0)>(m|0)){c[n>>2]=m+1;Ba=c[A+104>>2]|0;a[Ba+(m*20|0)>>0]=111;b[Ba+(m*20|0)+2>>1]=0;c[Ba+(m*20|0)+4>>2]=l;c[Ba+(m*20|0)+8>>2]=k;c[Ba+(m*20|0)+12>>2]=0;c[Ba+(m*20|0)+16>>2]=0;a[Ba+(m*20|0)+1>>0]=0}else Di(A,111,l,k,0)|0;k=c[y>>2]|0;l=k+2|0;m=c[n>>2]|0;if((c[o>>2]|0)>(m|0)){c[n>>2]=m+1;Ba=c[A+104>>2]|0;a[Ba+(m*20|0)>>0]=111;b[Ba+(m*20|0)+2>>1]=0;c[Ba+(m*20|0)+4>>2]=l;c[Ba+(m*20|0)+8>>2]=k;c[Ba+(m*20|0)+12>>2]=0;c[Ba+(m*20|0)+16>>2]=0;a[Ba+(m*20|0)+1>>0]=0}else Di(A,111,l,k,0)|0;k=c[y>>2]|0;l=k+3|0;m=c[n>>2]|0;if((c[o>>2]|0)>(m|0)){c[n>>2]=m+1;Ba=c[A+104>>2]|0;a[Ba+(m*20|0)>>0]=111;b[Ba+(m*20|0)+2>>1]=0;c[Ba+(m*20|0)+4>>2]=l;c[Ba+(m*20|0)+8>>2]=k;c[Ba+(m*20|0)+12>>2]=0;c[Ba+(m*20|0)+16>>2]=0;a[Ba+(m*20|0)+1>>0]=0;break}else{Di(A,111,l,k,0)|0;break}}else{if(!j){j=0;break}pi(B,j,1);j=0}while(0);if(!((j|0)==0&(a[B+81>>0]|0)==0)){m=1;break}}va=h+32|0;l=c[va>>2]|0;za=h+8|0;da=(c[za>>2]|0)>>>3&1;T=La+4|0;U=T+36|0;do{c[T>>2]=0;T=T+4|0}while((T|0)<(U|0));S=h+48|0;c[La>>2]=c[S>>2];j=c[ca>>2]|0;j:do if(!j){sa=h+36|0;ua=Na+76|0;V=f+240|0;K=h+60|0;M=(da|0)!=0;W=f+200|0;N=h+4|0;X=f+12|0;O=Da+4|0;P=Da+8|0;Q=Da+12|0;R=Da+16|0;Ba=f+116|0;k=0;ta=l;k:while(1){j=c[ta>>2]|0;if((k|0)>=(j|0))break;m=c[ta+8+(k*72|0)+20>>2]|0;n=c[ta+8+(k*72|0)+16>>2]|0;j=ta+8+(k*72|0)+36|0;if((a[j>>0]&8?(Y=ta+8+(k*72|0)+40|0,ll(c[sa>>2]|0,c[Y>>2]|0)|0):0)?(b[ua>>1]&8192)==0:0){a[j>>0]=a[j>>0]&-41;ml(c[sa>>2]|0,c[Y>>2]|0)}l:do if(m){j=b[n+42>>1]|0;l=c[c[m>>2]>>2]|0;if((l|0)!=(j<<16>>16|0)){Fa=209;break k}if(!(c[m+8>>2]&8)){do if((k|0)==0&(c[m+48>>2]|0)!=0){if(!(c[za>>2]&262144))break;if((c[ta>>2]|0)==1){j=ta;k=0;break l}if(a[ta+116>>0]&10){j=ta;k=0;break l}}while(0);s=c[V>>2]|0;I=c[f>>2]|0;m:do if(!(b[I+76>>1]&1)){t=c[va>>2]|0;J=c[t+8+(k*72|0)+40>>2]|0;u=t+8+(k*72|0)+20|0;m=c[u>>2]|0;if(c[wa>>2]|0)break;if(c[m+68>>2]|0)break;o=c[m+32>>2]|0;j=c[m+60>>2]|0;n=(j|0)==0;if(!n){if(c[K>>2]|0)break;if(c[j+16>>2]|0)break;j=c[za>>2]|0;if(j&256)break}else j=c[za>>2]|0;l=c[o>>2]|0;if(!l)break;p=c[m+8>>2]|0;if(p&1|0)break;if(!n?M|(c[t>>2]|0)>1:0)break;r=c[S>>2]|0;q=(r|0)==0;if(!q?c[m+48>>2]|0:0)break;if(M?c[m+48>>2]|0:0)break;if(n){if(p&8192|0)break}else if(!((p&8192|j&1|0)==0&(c[sa>>2]|0)==0))break;H=t+8+(k*72|0)+36|0;if(a[H>>0]&32){if(M|(l|0)>1)break;if(!(c[(c[o+24>>2]|0)+56>>2]|0))G=1;else break}else G=0;n=m+52|0;l=c[n>>2]|0;do if(l|0){if(!((j&1|0)==0&((M|(c[m+48>>2]|0)!=0)^1)))break m;if(!((c[t>>2]|0)==1&(p&9|0)==0))break m;j=l;while(1){l=(j|0)==0;if(!l?(a[m+4>>0]|0)!=-128:0)break m;if((c[c[m+32>>2]>>2]|0)<1)break m;if(l)break;if(c[j+8>>2]&9|0)break m;m=j;j=c[j+52>>2]|0}if(q)break;l=c[r>>2]|0;if((l|0)<=0)break;j=0;do{if(!(b[r+4+(j*20|0)+16>>1]|0))break m;j=j+1|0}while((j|0)<(l|0))}while(0);q=t+8+(k*72|0)+8|0;j=c[q>>2]|0;c[V>>2]=j;do if(!(a[I+165>>0]|0)){if(a[W>>0]|0)break;l=c[I+312>>2]|0;if(!l)break;j=$a[l&127](c[I+316>>2]|0,21,0,0,0,j)|0;if((j|0)==1){cd(f,39216,Z);c[X>>2]=23;break}if((j|2|0)==2)break;cd(f,39231,_);c[X>>2]=1}while(0);c[V>>2]=s;j=c[n>>2]|0;n:do if(!j)Fa=267;else{p=I+81|0;o=c[S>>2]|0;n=c[K>>2]|0;m=c[ca>>2]|0;while(1){c[S>>2]=0;c[va>>2]=0;c[ca>>2]=0;c[K>>2]=0;l=fk(I,h,0)|0;c[K>>2]=n;c[S>>2]=o;c[va>>2]=t;a[N>>0]=-128;if(!l)l=m;else{c[l+52>>2]=m;if(m|0)c[m+56>>2]=l;c[l+56>>2]=h}c[ca>>2]=l;if(a[p>>0]|0)break n;j=c[j+52>>2]|0;if(!j){Fa=267;break}else m=l}}while(0);do if((Fa|0)==267){Fa=0;F=c[u>>2]|0;n=t+8+(k*72|0)+4|0;j=c[n>>2]|0;o:do if(j|0){if(c[I+480>>2]|0){Xd(I,j);break}l=j;do if((c[I+304>>2]|0)>>>0<=l>>>0){if((c[I+308>>2]|0)>>>0<=l>>>0)break;ta=I+300|0;c[j>>2]=c[ta>>2];c[ta>>2]=j;break o}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{ta=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-ta;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);j=c[q>>2]|0;p:do if(j|0){if(c[I+480>>2]|0){Xd(I,j);break}l=j;do if((c[I+304>>2]|0)>>>0<=l>>>0){if((c[I+308>>2]|0)>>>0<=l>>>0)break;ta=I+300|0;c[j>>2]=c[ta>>2];c[ta>>2]=j;break p}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{ta=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-ta;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);j=t+8+(k*72|0)+12|0;l=c[j>>2]|0;q:do if(l|0){if(c[I+480>>2]|0){Xd(I,l);break}m=l;do if((c[I+304>>2]|0)>>>0<=m>>>0){if((c[I+308>>2]|0)>>>0<=m>>>0)break;ta=I+300|0;c[l>>2]=c[ta>>2];c[ta>>2]=l;break q}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ta=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ta;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[n>>2]=0;c[q>>2]=0;c[j>>2]=0;c[u>>2]=0;j=t+8+(k*72|0)+16|0;l=c[j>>2]|0;if(l|0){m=l+32|0;n=c[m>>2]|0;if((n|0)==1){ta=c[Ba>>2]|0;ta=((ta|0)==0?f:ta)+256|0;c[l+76>>2]=c[ta>>2];c[ta>>2]=l}else c[m>>2]=n+-1;c[j>>2]=0}y=k+1|0;z=I+480|0;A=I+304|0;B=I+308|0;C=I+300|0;D=(G|0)==0;E=I+81|0;w=h;o=-1;x=F;while(1){t=c[x+32>>2]|0;u=c[t>>2]|0;s=w+32|0;j=c[s>>2]|0;if(!j){j=pj(f,0,0,0)|0;if(!j)break;c[s>>2]=j;v=0}else v=a[H>>0]|0;if((u|0)>1){r=u+-1|0;l=c[j>>2]|0;m=l+r|0;if(m>>>0>(c[j+4>>2]|0)>>>0){l=cw(l|0,((l|0)<0)<<31>>31|0,1)|0;l=Sv(l|0,L()|0,r|0,((r|0)<0)<<31>>31|0)|0;n=L()|0;if((m|0)>199){Fa=307;break}p=c[f>>2]|0;m=(n|0)<0|(n|0)==0&l>>>0<200;q=m?l:200;l=Yv(q|0,(m?n:0)|0,72,0)|0;l=Sv(l|0,L()|0,8,0)|0;m=L()|0;n=j;do if((c[p+304>>2]|0)>>>0<=n>>>0){if((c[p+308>>2]|0)>>>0<=n>>>0){Fa=311;break}if(m>>>0>0|((m|0)==0?l>>>0>(e[p+276>>1]|0)>>>0:0))Fa=311}else Fa=311;while(0);if((Fa|0)==311){Fa=0;j=Zd(p,j,l,m)|0;if(!j)break}c[j+4>>2]=q;n=j;m=j;j=c[j>>2]|0}else{n=j;m=j;j=l}if((j|0)>(y|0)){do{j=j+-1|0;T=n+8+((j+r|0)*72|0)|0;l=n+8+(j*72|0)|0;U=T+72|0;do{c[T>>2]=c[l>>2];T=T+4|0;l=l+4|0}while((T|0)<(U|0))}while((j|0)>(y|0));j=c[m>>2]|0}c[m>>2]=j+r;gw(n+8+(y*72|0)|0,0,r*72|0)|0;l=u+k|0;j=y;do{c[n+8+(j*72|0)+40>>2]=-1;j=j+1|0}while((j|0)<(l|0));c[s>>2]=n;j=n}if((u|0)>0){r=0;while(1){p=r+k|0;q=j+8+(p*72|0)|0;p=c[j+8+(p*72|0)+48>>2]|0;r:do if(p|0){o=p+4|0;l=c[p>>2]|0;if((c[o>>2]|0)>0){n=0;do{l=c[l+(n<<3)>>2]|0;s:do if(l|0){if(c[z>>2]|0){Xd(I,l);break}m=l;do if((c[A>>2]|0)>>>0<=m>>>0){if((c[B>>2]|0)>>>0<=m>>>0)break;c[l>>2]=c[C>>2];c[C>>2]=l;break s}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ta=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ta;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);n=n+1|0;l=c[p>>2]|0}while((n|0)<(c[o>>2]|0))}t:do if(l|0){if(c[z>>2]|0){Xd(I,l);break}m=l;do if((c[A>>2]|0)>>>0<=m>>>0){if((c[B>>2]|0)>>>0<=m>>>0)break;c[l>>2]=c[C>>2];c[C>>2]=l;break t}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ta=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ta;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);if(c[z>>2]|0){Xd(I,p);break}l=p;do if((c[A>>2]|0)>>>0<=l>>>0){if((c[B>>2]|0)>>>0<=l>>>0)break;c[p>>2]=c[C>>2];c[C>>2]=p;break r}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ta=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ta;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);m=t+8+(r*72|0)|0;T=q;l=m;U=T+72|0;do{c[T>>2]=c[l>>2];T=T+4|0;l=l+4|0}while((T|0)<(U|0));l=c[t+8+(r*72|0)+40>>2]|0;T=m;U=T+72|0;do{c[T>>2]=0;T=T+4|0}while((T|0)<(U|0));r=r+1|0;if((r|0)==(u|0)){o=l;break}}}a[j+8+(k*72|0)+36>>0]=v;l=x+48|0;m=c[l>>2]|0;if(m|0){n=c[m>>2]|0;if((n|0)>0){j=0;do{b[m+4+(j*20|0)+16>>1]=0;j=j+1|0}while((j|0)!=(n|0))}c[w+48>>2]=m;c[l>>2]=0}ta=x+36|0;j=c[ta>>2]|0;c[ta>>2]=0;if(!D)Wk(j,o);ta=w+36|0;U=Xk(I,j,c[ta>>2]|0)|0;c[ta>>2]=U;if(!(a[E>>0]|0)){c[Da>>2]=f;c[O>>2]=J;c[P>>2]=o;c[Q>>2]=G;c[R>>2]=c[x>>2];yl(Da,w,0)}j=w+8|0;c[j>>2]=c[j>>2]|c[x+8>>2]&1;j=x+60|0;l=c[j>>2]|0;if(l|0){c[w+60>>2]=l;c[j>>2]=0}w=c[w+52>>2]|0;if(!w)break;else x=c[x+52>>2]|0}if((Fa|0)==307){Fa=0;c[$>>2]=200;cd(f,43159,$)}if(!F)break;pi(I,F,1)}while(0);if(!(c[Ka>>2]|0))k=-1;else{m=1;break c}}while(0);j=c[va>>2]|0;if(a[xa>>0]|0){m=1;break c}if((d[i>>0]|0)<9)break;c[La>>2]=c[S>>2]}else j=ta}else j=ta;while(0);l=c[ca>>2]|0;if(!l){k=k+1|0;ta=j}else{w=l;break j}}if((Fa|0)==209){m=c[n>>2]|0;c[aa>>2]=j<<16>>16;c[aa+4>>2]=m;c[aa+8>>2]=l;cd(f,43040,aa);m=1;break c}if((j|0)>1)if((b[ua>>1]|0)>-1){c[Da>>2]=f;m=Da+4|0;n=Da+8|0;o=Da+12|0;p=Ea+4|0;q=Ea+8|0;r=Ea+12|0;s=Ea+16|0;t=Ea+24|0;u=Ea+20|0;do{c[m>>2]=0;c[n>>2]=0;c[o>>2]=0;Fl(Da,c[sa>>2]|0);u:do if(c[m>>2]|0){c[u>>2]=0;c[Ea>>2]=f;c[p>>2]=131;c[q>>2]=132;c[r>>2]=0;c[s>>2]=0;c[t>>2]=Da;j=c[sa>>2]|0;if(j|0)_j(Ea,j)|0;j=c[c[Da>>2]>>2]|0;k=c[o>>2]|0;if(!k)break;do if(j|0){if(c[j+480>>2]|0){Xd(j,k);break u}l=k;if((c[j+304>>2]|0)>>>0>l>>>0)break;if((c[j+308>>2]|0)>>>0<=l>>>0)break;Fa=j+300|0;c[k>>2]=c[Fa>>2];c[Fa>>2]=k;break u}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{Fa=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0)}while((c[n>>2]|0)!=0);j=c[ta>>2]|0;Fa=668}else Fa=669;else Fa=668;if((Fa|0)==668?(j|0)>0:0)Fa=669;v:do if((Fa|0)==669){z=f+208|0;A=f+44|0;B=Ja+108|0;C=Ja+112|0;D=ta+116|0;E=Ja+104|0;F=Da+4|0;G=Da+16|0;H=Da+8|0;I=Da+12|0;J=Ja+12|0;K=ta+8|0;M=f+19|0;N=f+28|0;O=ta+36|0;P=ta+32|0;Q=ta+24|0;R=ta+45|0;S=ta+40|0;y=0;while(1){u=ta+8+(y*72|0)|0;ka=ta+8+(y*72|0)+56|0;do if(((c[ka>>2]|0)==0&(c[ka+4>>2]|0)==0?(la=c[ta+8+(y*72|0)+8>>2]|0,ma=c[ta+8+(y*72|0)+4>>2]|0,na=c[f>>2]|0,(a[na+165>>0]|0)==0):0)?(a[W>>0]|0)==0:0){j=c[na+312>>2]|0;if(!j)break;j=$a[j&127](c[na+316>>2]|0,20,la,59952,ma,c[V>>2]|0)|0;if((j|0)==1){cd(f,39216,oa);c[X>>2]=23;break}if((j|2|0)==2)break;cd(f,39231,pa);c[X>>2]=1}while(0);s=ta+8+(y*72|0)+20|0;v=c[s>>2]|0;if(v|0){ka=nl(h)|0;c[z>>2]=(c[z>>2]|0)+ka;if(!(b[ua>>1]&4096))ol(f,v,c[sa>>2]|0,c[ta+8+(y*72|0)+40>>2]|0,(d[ta+8+(y*72|0)+36>>0]|0)>>>5&1)|0;x=c[V>>2]|0;t=ta+8+(y*72|0)+8|0;c[V>>2]=c[t>>2];l=(y|0)==0;do if(l){if((c[ta>>2]|0)!=1?(a[D>>0]&10)==0:0){Fa=693;break}l=c[B>>2]|0;j=l+1|0;k=(c[A>>2]|0)+1|0;c[A>>2]=k;c[O>>2]=k;if((c[C>>2]|0)>(l|0)){c[B>>2]=j;ka=c[E>>2]|0;a[ka+(l*20|0)>>0]=13;b[ka+(l*20|0)+2>>1]=0;c[ka+(l*20|0)+4>>2]=k;c[ka+(l*20|0)+8>>2]=0;c[ka+(l*20|0)+12>>2]=j;c[ka+(l*20|0)+16>>2]=0;a[ka+(l*20|0)+1>>0]=0}else Di(Ja,13,k,0,j)|0;c[P>>2]=j;j=c[O>>2]|0;a[Da>>0]=13;c[F>>2]=j;c[G>>2]=0;c[H>>2]=0;c[I>>2]=0;c[qa>>2]=c[v+20>>2];nk(f,1,43080,qa);kj(f,v,Da)|0;b[(c[Q>>2]|0)+44>>1]=b[v+6>>1]|0;a[R>>0]=a[R>>0]|16;c[S>>2]=c[H>>2];j=c[O>>2]|0;k=c[B>>2]|0;if((c[C>>2]|0)>(k|0)){c[B>>2]=k+1;ka=c[E>>2]|0;a[ka+(k*20|0)>>0]=67;b[ka+(k*20|0)+2>>1]=0;c[ka+(k*20|0)+4>>2]=j;c[ka+(k*20|0)+8>>2]=0;c[ka+(k*20|0)+12>>2]=0;c[ka+(k*20|0)+16>>2]=0;a[ka+(k*20|0)+1>>0]=0}else Di(Ja,67,j,0,0)|0;k=c[J>>2]|0;a[k+19>>0]=0;c[k+28>>2]=0;k=c[B>>2]|0;if(!(a[(c[Ja>>2]|0)+81>>0]|0))j=(c[E>>2]|0)+(((l|0)<0?k+-1|0:l)*20|0)|0;else j=59308;c[j+8>>2]=k}else Fa=693;while(0);if((Fa|0)==693){Fa=0;k=(c[A>>2]|0)+1|0;c[A>>2]=k;w=ta+8+(y*72|0)+28|0;c[w>>2]=k;j=c[B>>2]|0;if((c[C>>2]|0)>(j|0)){ka=j+1|0;c[B>>2]=ka;ja=c[E>>2]|0;a[ja+(j*20|0)>>0]=70;b[ja+(j*20|0)+2>>1]=0;c[ja+(j*20|0)+4>>2]=0;c[ja+(j*20|0)+8>>2]=k;c[ja+(j*20|0)+12>>2]=0;c[ja+(j*20|0)+16>>2]=0;a[ja+(j*20|0)+1>>0]=0;k=ka}else{k=Di(Ja,70,0,k,0)|0;j=k;k=k+1|0}c[ta+8+(y*72|0)+24>>2]=k;do if(!(a[ta+8+(y*72|0)+37>>0]&8)){k=c[B>>2]|0;if((c[C>>2]|0)>(k|0)){c[B>>2]=k+1;T=c[E>>2]|0;a[T+(k*20|0)>>0]=17;T=T+(k*20|0)+1|0;U=T+19|0;do{a[T>>0]=0;T=T+1|0}while((T|0)<(U|0));r=k;break}else{r=Di(Ja,17,0,0,0)|0;break}}else r=0;while(0);w:do if(l)Fa=724;else{p=ta+8+(y*72|0)+4|0;q=K;x:while(1){o=c[q+20>>2]|0;y:do if(o|0){if(a[q+37>>0]&16)break;l=c[q+8>>2]|0;if(!l)break;m=c[q+4>>2]|0;n=c[p>>2]|0;do if(!m)k=((n|0)!=0)<<31>>31;else{if(!n)break y;ka=a[m>>0]|0;k=(d[208+(ka&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0;if(ka<<24>>24==0|(k|0)!=0)break;do{m=m+1|0;n=n+1|0;ka=a[m>>0]|0;k=(d[208+(ka&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(ka<<24>>24==0|(k|0)!=0))}while(0);if(k|0)break;m=c[t>>2]|0;if(!m)break;ka=a[l>>0]|0;k=(d[208+(ka&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0;if(!(ka<<24>>24==0|(k|0)!=0))do{l=l+1|0;m=m+1|0;ka=a[l>>0]|0;k=(d[208+(ka&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(ka<<24>>24==0|(k|0)!=0));if(k|0)break;k=c[s>>2]|0;if((c[k+20>>2]|0)!=(c[o+20>>2]|0))break;if(!(bk(0,c[k+36>>2]|0,c[o+36>>2]|0,-1)|0))break x}while(0);k=q+72|0;if(k>>>0>>0)q=k;else{Fa=724;break w}}k=c[ta+8+(y*72|0)+40>>2]|0;l=c[q+40>>2]|0;m=c[B>>2]|0;if((c[C>>2]|0)>(m|0)){c[B>>2]=m+1;ka=c[E>>2]|0;a[ka+(m*20|0)>>0]=111;b[ka+(m*20|0)+2>>1]=0;c[ka+(m*20|0)+4>>2]=k;c[ka+(m*20|0)+8>>2]=l;c[ka+(m*20|0)+12>>2]=0;c[ka+(m*20|0)+16>>2]=0;a[ka+(m*20|0)+1>>0]=0}else Di(Ja,111,k,l,0)|0;k=b[(c[q+20>>2]|0)+6>>1]|0;b[v+6>>1]=k}while(0);if((Fa|0)==724){Fa=0;k=c[ta+8+(y*72|0)+40>>2]|0;a[Da>>0]=12;c[F>>2]=k;c[G>>2]=0;c[H>>2]=0;c[I>>2]=0;c[ra>>2]=c[v+20>>2];nk(f,1,43094,ra);kj(f,v,Da)|0;k=b[v+6>>1]|0}b[(c[ta+8+(y*72|0)+16>>2]|0)+44>>1]=k;l=c[B>>2]|0;if(r|0){if(!(a[(c[Ja>>2]|0)+81>>0]|0))k=(c[E>>2]|0)+(((r|0)<0?l+-1|0:r)*20|0)|0;else k=59308;c[k+8>>2]=l}k=c[w>>2]|0;if((c[C>>2]|0)>(l|0)){c[B>>2]=l+1;ka=c[E>>2]|0;a[ka+(l*20|0)>>0]=66;b[ka+(l*20|0)+2>>1]=0;c[ka+(l*20|0)+4>>2]=k;c[ka+(l*20|0)+8>>2]=0;c[ka+(l*20|0)+12>>2]=0;c[ka+(l*20|0)+16>>2]=0;a[ka+(l*20|0)+1>>0]=0;k=l}else k=Di(Ja,66,k,0,0)|0;if((j|0)<0)j=(c[B>>2]|0)+-1|0;if(!(a[(c[Ja>>2]|0)+81>>0]|0))j=(c[E>>2]|0)+(j*20|0)|0;else j=59308;c[j+4>>2]=k}a[M>>0]=0;c[N>>2]=0;if(a[xa>>0]|0)break;ka=nl(h)|0;c[z>>2]=(c[z>>2]|0)-ka;c[V>>2]=x}y=y+1|0;if((y|0)>=(c[ta>>2]|0))break v}m=1;break c}while(0);$=c[h>>2]|0;D=c[sa>>2]|0;t=h+40|0;m=c[t>>2]|0;u=h+44|0;X=c[u>>2]|0;j=c[za>>2]|0;a[Ga>>0]=j&1;z:do if((j&9|0)==1){n=c[La>>2]|0;k=(n|0)==0;l=($|0)==0;do if(!(l&k)){if(l|k){U=m;break z}k=c[n>>2]|0;if((k|0)!=(c[$>>2]|0)){U=m;break z}if((k|0)<=0)break;j=0;do{if((a[n+4+(j*20|0)+12>>0]|0)!=(a[$+4+(j*20|0)+12>>0]|0)){U=m;break z}if(bk(0,c[n+4+(j*20|0)>>2]|0,c[$+4+(j*20|0)>>2]|0,-1)|0){U=m;break z}j=j+1|0}while((j|0)<(c[n>>2]|0));j=c[za>>2]|0}while(0);c[za>>2]=j&-2;U=gk(Na,$,0)|0;c[t>>2]=U}else U=m;while(0);q=c[La>>2]|0;A:do if(q){o=c[f>>2]|0;r=c[q>>2]|0;m=(c[$>>2]|0)+1+r|0;n=m*5|0;l=n+20|0;p=o+272|0;B:do if(c[p>>2]|0)if(!(a[o+81>>0]|0))Fa=763;else{n=0;o=1}else{do if(!(0<0|(0==0?(e[o+276>>1]|0)>>>0>>0:0))){j=o+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];Fa=o+284|0;c[Fa>>2]=(c[Fa>>2]|0)+1;Fa=764;break B}j=o+296|0;k=c[j>>2]|0;if(!k){j=o+292|0;break}else{c[j>>2]=c[k>>2];Fa=o+284|0;c[Fa>>2]=(c[Fa>>2]|0)+1;Fa=764;break B}}else j=o+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;Fa=763}while(0);if((Fa|0)==763){k=_d(o,l,0)|0;Fa=764}do if((Fa|0)==764){do if(!k){j=o+81|0;if(a[j>>0]|0){n=0;p=1;break}if(a[o+82>>0]|0){n=0;p=1;break}a[j>>0]=1;if((c[o+180>>2]|0)>0)c[o+264>>2]=1;c[p>>2]=(c[p>>2]|0)+1;j=c[o+236>>2]|0;if(!j){n=0;p=1;break}c[j+12>>2]=7;n=0;p=1}else{c[k+16>>2]=k+20+(m<<2);b[k+6>>1]=r;b[k+8>>1]=m;a[k+4>>0]=a[o+78>>0]|0;c[k+12>>2]=o;c[k>>2]=1;gw(k+24|0,0,n+-4|0)|0;n=k;p=0}while(0);if(!((r|0)>0&(k|0)!=0)){o=p;break}o=k+16|0;l=q+4|0;m=0;while(1){j=Yi(f,c[l>>2]|0)|0;if(!j)j=c[(c[f>>2]|0)+8>>2]|0;c[k+20+(m<<2)>>2]=j;a[(c[o>>2]|0)+m>>0]=a[l+12>>0]|0;m=m+1|0;if((m|0)==(r|0)){o=p;break}else l=l+20|0}}while(0);l=f+40|0;k=c[l>>2]|0;c[l>>2]=k+1;c[La+8>>2]=k;l=(c[c[La>>2]>>2]|0)+1+(c[$>>2]|0)|0;m=Ja+108|0;j=c[m>>2]|0;if((c[Ja+112>>2]|0)>(j|0)){c[m>>2]=j+1;ra=c[Ja+104>>2]|0;a[ra+(j*20|0)>>0]=113;b[ra+(j*20|0)+2>>1]=0;c[ra+(j*20|0)+4>>2]=k;c[ra+(j*20|0)+8>>2]=l;c[ra+(j*20|0)+12>>2]=0;c[ra+(j*20|0)+16>>2]=0;a[ra+(j*20|0)+1>>0]=0}else j=Di(Ja,113,k,l,0)|0;k=c[Ja>>2]|0;if(!(a[k+81>>0]|0)){if((j|0)<0)k=(c[m>>2]|0)+-1|0;else k=j;l=c[Ja+104>>2]|0;m=l+(k*20|0)+1|0;if(a[m>>0]|0){Ei(Ja,l+(k*20|0)|0,n,-9);break}if(o)break;c[l+(k*20|0)+16>>2]=n;a[m>>0]=-9;break}if(o|(c[k+480>>2]|0)!=0)break;ra=(c[n>>2]|0)+-1|0;c[n>>2]=ra;if(ra|0)break;k=c[n+12>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,n);break A}l=n;if((c[k+304>>2]|0)>>>0>l>>>0)break;if((c[k+308>>2]|0)>>>0<=l>>>0)break;ra=k+300|0;c[n>>2]=c[ra>>2];c[ra>>2]=n;break A}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{ra=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-ra;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}else j=-1;while(0);c[La+20>>2]=j;do if((a[i>>0]|0)==12){j=c[i+4>>2]|0;k=c[$>>2]|0;l=Ja+108|0;m=c[l>>2]|0;if((c[Ja+112>>2]|0)>(m|0)){c[l>>2]=m+1;ra=c[Ja+104>>2]|0;a[ra+(m*20|0)>>0]=113;b[ra+(m*20|0)+2>>1]=0;c[ra+(m*20|0)+4>>2]=j;c[ra+(m*20|0)+8>>2]=k;c[ra+(m*20|0)+12>>2]=0;c[ra+(m*20|0)+16>>2]=0;a[ra+(m*20|0)+1>>0]=0;break}else{Di(Ja,113,j,k,0)|0;break}}while(0);_=f+56|0;aa=c[_>>2]|0;j=aa+-1|0;c[_>>2]=j;if(!(c[za>>2]&16384))b[h+6>>1]=320;pl(f,h,j);do if(!(c[h+12>>2]|0)){j=c[La+20>>2]|0;if((j|0)<=-1)break;if(!(a[(c[Ja>>2]|0)+81>>0]|0))j=(c[Ja+104>>2]|0)+(j*20|0)|0;else j=59308;a[j>>0]=114;ra=La+32|0;a[ra>>0]=a[ra>>0]|1}while(0);do if(!(c[za>>2]&1))j=0;else{q=f+40|0;s=c[q>>2]|0;c[q>>2]=s+1;c[Ga+4>>2]=s;q=c[h>>2]|0;o=c[f>>2]|0;r=c[q>>2]|0;m=r+1|0;n=m*5|0;l=n+20|0;p=o+272|0;C:do if(c[p>>2]|0)if(!(a[o+81>>0]|0))Fa=820;else{o=0;n=1}else{do if(!(0<0|(0==0?(e[o+276>>1]|0)>>>0>>0:0))){j=o+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];Fa=o+284|0;c[Fa>>2]=(c[Fa>>2]|0)+1;Fa=821;break C}j=o+296|0;k=c[j>>2]|0;if(!k){j=o+292|0;break}else{c[j>>2]=c[k>>2];Fa=o+284|0;c[Fa>>2]=(c[Fa>>2]|0)+1;Fa=821;break C}}else j=o+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;Fa=820}while(0);if((Fa|0)==820){k=_d(o,l,0)|0;Fa=821}do if((Fa|0)==821){do if(!k){j=o+81|0;if(a[j>>0]|0){o=0;n=1;break}if(a[o+82>>0]|0){o=0;n=1;break}a[j>>0]=1;if((c[o+180>>2]|0)>0)c[o+264>>2]=1;c[p>>2]=(c[p>>2]|0)+1;j=c[o+236>>2]|0;if(!j){o=0;n=1;break}c[j+12>>2]=7;o=0;n=1}else{c[k+16>>2]=k+20+(m<<2);b[k+6>>1]=r;b[k+8>>1]=m;a[k+4>>0]=a[o+78>>0]|0;c[k+12>>2]=o;c[k>>2]=1;gw(k+24|0,0,n+-4|0)|0;o=k;n=0}while(0);if(!((r|0)>0&(k|0)!=0))break;p=k+16|0;l=q+4|0;m=0;while(1){j=Yi(f,c[l>>2]|0)|0;if(!j)j=c[(c[f>>2]|0)+8>>2]|0;c[k+20+(m<<2)>>2]=j;a[(c[p>>2]|0)+m>>0]=a[l+12>>0]|0;m=m+1|0;if((m|0)==(r|0))break;else l=l+20|0}}while(0);p=Ja+108|0;j=c[p>>2]|0;if((c[Ja+112>>2]|0)>(j|0)){c[p>>2]=j+1;ra=c[Ja+104>>2]|0;a[ra+(j*20|0)>>0]=113;b[ra+(j*20|0)+2>>1]=0;c[ra+(j*20|0)+4>>2]=s;c[ra+(j*20|0)+8>>2]=0;c[ra+(j*20|0)+12>>2]=0;c[ra+(j*20|0)+16>>2]=0;a[ra+(j*20|0)+1>>0]=0}else j=Di(Ja,113,s,0,0)|0;k=c[Ja>>2]|0;D:do if(a[k+81>>0]|0){if(n|(c[k+480>>2]|0)!=0)break;ra=(c[o>>2]|0)+-1|0;c[o>>2]=ra;if(ra|0)break;k=c[o+12>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,o);break D}l=o;if((c[k+304>>2]|0)>>>0>l>>>0)break;if((c[k+308>>2]|0)>>>0<=l>>>0)break;ra=k+300|0;c[o>>2]=c[ra>>2];c[ra>>2]=o;break D}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{ra=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-ra;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}else{if((j|0)<0)k=(c[p>>2]|0)+-1|0;else k=j;l=c[Ja+104>>2]|0;m=l+(k*20|0)+1|0;if(a[m>>0]|0){Ei(Ja,l+(k*20|0)|0,o,-9);break}if(n)break;c[l+(k*20|0)+16>>2]=o;a[m>>0]=-9}while(0);c[Ga+8>>2]=j;j=c[p>>2]|0;if((j|0)<=0){j=3;break}b[(c[Ja+104>>2]|0)+((j+-1|0)*20|0)+2>>1]=8;j=3}while(0);a[Ga+1>>0]=j;l=(U|0)==0;E:do if((da|0)==0&l){B=(((a[Ga>>0]|0)==0?0:256)|c[za>>2]&16384)&65535;q=c[wa>>2]|0;C=(q|0)!=0;do if(C){j=c[Oa>>2]|0;F:do if(!j){l=c[f>>2]|0;do if(!(c[Ba>>2]|0)){if(b[l+76>>1]&8)break;a[f+23>>0]=1}while(0);G:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))Fa=873;else{j=0;break F}else{do if((e[l+276>>1]|0)>=224){k=l+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];Ca=l+284|0;c[Ca>>2]=(c[Ca>>2]|0)+1;break G}k=l+296|0;j=c[k>>2]|0;if(!j){j=l+292|0;break}else{c[k>>2]=c[j>>2];Ca=l+284|0;c[Ca>>2]=(c[Ca>>2]|0)+1;break G}}else j=l+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;Fa=873}while(0);if((Fa|0)==873)j=_d(l,224,0)|0;if(!j){j=0;break}T=j+104|0;U=T+120|0;do{c[T>>2]=0;T=T+4|0}while((T|0)<(U|0));c[j>>2]=l;k=l+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=j;c[j+8>>2]=l;c[j+4>>2]=0;c[k>>2]=j;c[j+20>>2]=381479589;c[j+12>>2]=f;c[Oa>>2]=j;Di(j,61,0,1,0)|0}while(0);k=c[q+8>>2]|0;do if(k){m=c[k>>2]|0;k=f+44|0;o=c[k>>2]|0;l=o+1|0;c[q+64>>2]=l;m=o+m|0;c[k>>2]=m;o=j+108|0;n=c[o>>2]|0;p=j+112|0;if((c[p>>2]|0)>(n|0)){c[o>>2]=n+1;A=c[j+104>>2]|0;a[A+(n*20|0)>>0]=73;b[A+(n*20|0)+2>>1]=0;c[A+(n*20|0)+4>>2]=0;c[A+(n*20|0)+8>>2]=l;c[A+(n*20|0)+12>>2]=m;c[A+(n*20|0)+16>>2]=0;a[A+(n*20|0)+1>>0]=0;A=k;break}else{Di(j,73,0,l,m)|0;A=k;break}}else{A=f+44|0;o=j+108|0;p=j+112|0}while(0);k=(c[A>>2]|0)+1|0;c[A>>2]=k;c[q+80>>2]=k;l=c[o>>2]|0;if((c[p>>2]|0)>(l|0)){c[o>>2]=l+1;Ca=c[j+104>>2]|0;a[Ca+(l*20|0)>>0]=70;b[Ca+(l*20|0)+2>>1]=0;c[Ca+(l*20|0)+4>>2]=1;c[Ca+(l*20|0)+8>>2]=k;c[Ca+(l*20|0)+12>>2]=0;c[Ca+(l*20|0)+16>>2]=0;a[Ca+(l*20|0)+1>>0]=0}else Di(j,70,1,k,0)|0;if(a[q+20>>0]|0){n=c[A>>2]|0;m=n+1|0;c[q+84>>2]=m;n=n+2|0;c[A>>2]=n;k=q+88|0;c[k>>2]=n;n=f+40|0;l=c[n>>2]|0;c[n>>2]=l+1;n=q+56|0;c[n>>2]=l;l=c[o>>2]|0;if((c[p>>2]|0)>(l|0)){c[o>>2]=l+1;Ca=c[j+104>>2]|0;a[Ca+(l*20|0)>>0]=70;b[Ca+(l*20|0)+2>>1]=0;c[Ca+(l*20|0)+4>>2]=1;c[Ca+(l*20|0)+8>>2]=m;c[Ca+(l*20|0)+12>>2]=0;c[Ca+(l*20|0)+16>>2]=0;a[Ca+(l*20|0)+1>>0]=0}else Di(j,70,1,m,0)|0;k=c[k>>2]|0;l=c[o>>2]|0;if((c[p>>2]|0)>(l|0)){c[o>>2]=l+1;Ca=c[j+104>>2]|0;a[Ca+(l*20|0)>>0]=70;b[Ca+(l*20|0)+2>>1]=0;c[Ca+(l*20|0)+4>>2]=0;c[Ca+(l*20|0)+8>>2]=k;c[Ca+(l*20|0)+12>>2]=0;c[Ca+(l*20|0)+16>>2]=0;a[Ca+(l*20|0)+1>>0]=0}else Di(j,70,0,k,0)|0;m=c[n>>2]|0;k=c[q+44>>2]|0;l=c[o>>2]|0;if((c[p>>2]|0)>(l|0)){c[o>>2]=l+1;Ca=c[j+104>>2]|0;a[Ca+(l*20|0)>>0]=111;b[Ca+(l*20|0)+2>>1]=0;c[Ca+(l*20|0)+4>>2]=m;c[Ca+(l*20|0)+8>>2]=k;c[Ca+(l*20|0)+12>>2]=0;c[Ca+(l*20|0)+16>>2]=0;a[Ca+(l*20|0)+1>>0]=0;break}else{Di(j,111,m,k,0)|0;break}}x=f+40|0;y=q+44|0;z=j+104|0;w=q;do{v=w+40|0;k=c[v>>2]|0;do if(c[k+4>>2]&4096){if((a[w+17>>0]|0)==87){Fa=944;break}n=c[(c[w+68>>2]|0)+20>>2]|0;t=c[f>>2]|0;u=c[n>>2]|0;r=u+1|0;s=r*5|0;l=s+20|0;q=t+272|0;H:do if(c[q>>2]|0)if(!(a[t+81>>0]|0))Fa=909;else{r=0;m=0;n=1}else{do if(!(0<0|(0==0?(e[t+276>>1]|0)>>>0>>0:0))){k=t+300|0;m=c[k>>2]|0;if(m|0){c[k>>2]=c[m>>2];Fa=t+284|0;c[Fa>>2]=(c[Fa>>2]|0)+1;Fa=910;break H}k=t+296|0;m=c[k>>2]|0;if(!m){k=t+292|0;break}else{c[k>>2]=c[m>>2];Fa=t+284|0;c[Fa>>2]=(c[Fa>>2]|0)+1;Fa=910;break H}}else k=t+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;Fa=909}while(0);if((Fa|0)==909){m=_d(t,l,0)|0;Fa=910}I:do if((Fa|0)==910){Fa=0;if(m|0){q=m+16|0;c[q>>2]=m+20+(r<<2);b[m+6>>1]=u;b[m+8>>1]=r;a[m+4>>0]=a[t+78>>0]|0;c[m+12>>2]=t;c[m>>2]=1;gw(m+24|0,0,s+-4|0)|0;if((u|0)<=0){r=m;n=0;break}l=n+4|0;n=0;while(1){k=Yi(f,c[l>>2]|0)|0;if(!k)k=c[(c[f>>2]|0)+8>>2]|0;c[m+20+(n<<2)>>2]=k;a[(c[q>>2]|0)+n>>0]=a[l+12>>0]|0;n=n+1|0;if((n|0)==(u|0)){r=m;n=0;break I}else l=l+20|0}}k=t+81|0;if(a[k>>0]|0){r=0;n=1;break}if(a[t+82>>0]|0){r=0;n=1;break}a[k>>0]=1;if((c[t+180>>2]|0)>0)c[t+264>>2]=1;c[q>>2]=(c[q>>2]|0)+1;k=c[t+236>>2]|0;if(!k){r=0;n=1;break}c[k+12>>2]=7;r=0;n=1}while(0);l=c[x>>2]|0;c[x>>2]=l+1;k=w+56|0;c[k>>2]=l;Ca=c[A>>2]|0;q=w+60|0;c[q>>2]=Ca+1;c[A>>2]=Ca+3;do if(m){if((a[(c[(c[v>>2]|0)+32>>2]|0)+1>>0]|0)!=105)break;a[c[m+16>>2]>>0]=1;l=c[k>>2]|0}while(0);k=c[o>>2]|0;if((c[p>>2]|0)>(k|0)){c[o>>2]=k+1;Ca=c[z>>2]|0;a[Ca+(k*20|0)>>0]=113;b[Ca+(k*20|0)+2>>1]=0;c[Ca+(k*20|0)+4>>2]=l;c[Ca+(k*20|0)+8>>2]=2;c[Ca+(k*20|0)+12>>2]=0;c[Ca+(k*20|0)+16>>2]=0;a[Ca+(k*20|0)+1>>0]=0}else Di(j,113,l,2,0)|0;k=c[j>>2]|0;J:do if(a[k+81>>0]|0){if(n|(c[k+480>>2]|0)!=0)break;Ca=(c[r>>2]|0)+-1|0;c[r>>2]=Ca;if(Ca|0)break;k=c[r+12>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,r);break J}l=r;if((c[k+304>>2]|0)>>>0>l>>>0)break;if((c[k+308>>2]|0)>>>0<=l>>>0)break;Ca=k+300|0;c[r>>2]=c[Ca>>2];c[Ca>>2]=r;break J}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{Ca=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-Ca;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}else{Aa=c[z>>2]|0;Ca=(c[o>>2]|0)+-1|0;a[Aa+(Ca*20|0)+1>>0]=-9;c[Aa+(Ca*20|0)+16>>2]=r}while(0);k=(c[q>>2]|0)+1|0;l=c[o>>2]|0;if((c[p>>2]|0)>(l|0)){c[o>>2]=l+1;Ca=c[z>>2]|0;a[Ca+(l*20|0)>>0]=70;b[Ca+(l*20|0)+2>>1]=0;c[Ca+(l*20|0)+4>>2]=0;c[Ca+(l*20|0)+8>>2]=k;c[Ca+(l*20|0)+12>>2]=0;c[Ca+(l*20|0)+16>>2]=0;a[Ca+(l*20|0)+1>>0]=0;break}else{Di(j,70,0,k,0)|0;break}}else Fa=944;while(0);do if((Fa|0)==944){Fa=0;k=c[k+32>>2]|0;if((k|0)==43457|(k|0)==43467){l=c[A>>2]|0;c[w+60>>2]=l+1;k=c[x>>2]|0;c[x>>2]=k+1;c[w+56>>2]=k;c[A>>2]=l+2;l=c[y>>2]|0;m=c[o>>2]|0;if((c[p>>2]|0)>(m|0)){c[o>>2]=m+1;Ca=c[z>>2]|0;a[Ca+(m*20|0)>>0]=111;b[Ca+(m*20|0)+2>>1]=0;c[Ca+(m*20|0)+4>>2]=k;c[Ca+(m*20|0)+8>>2]=l;c[Ca+(m*20|0)+12>>2]=0;c[Ca+(m*20|0)+16>>2]=0;a[Ca+(m*20|0)+1>>0]=0;break}else{Di(j,111,k,l,0)|0;break}}if(!((k|0)==40587|(k|0)==40592))break;k=c[x>>2]|0;c[x>>2]=k+1;c[w+56>>2]=k;l=c[y>>2]|0;m=c[o>>2]|0;if((c[p>>2]|0)>(m|0)){c[o>>2]=m+1;Ca=c[z>>2]|0;a[Ca+(m*20|0)>>0]=111;b[Ca+(m*20|0)+2>>1]=0;c[Ca+(m*20|0)+4>>2]=k;c[Ca+(m*20|0)+8>>2]=l;c[Ca+(m*20|0)+12>>2]=0;c[Ca+(m*20|0)+16>>2]=0;a[Ca+(m*20|0)+1>>0]=0;break}else{Di(j,111,k,l,0)|0;break}}while(0);w=c[w+32>>2]|0}while((w|0)!=0)}while(0);k=h+6|0;Q=ql(f,ta,D,c[La>>2]|0,c[h>>2]|0,B,b[k>>1]|0)|0;if(!Q){m=1;break c}j=b[Q+72>>1]|0;if(j<<16>>16<(b[k>>1]|0))b[k>>1]=j;do if(a[Ga>>0]|0){j=a[Q+51>>0]|0;if(!(j<<24>>24))break;a[Ga+1>>0]=j}while(0);k=c[La>>2]|0;do if(!k)Fa=965;else{l=a[Q+47>>0]|0;c[La+4>>2]=l;if(!(a[Q+52>>0]|0))j=Q+32|0;else j=Q+752+(((d[Q+46>>0]|0)+-1|0)*80|0)+16|0;c[La+28>>2]=c[j>>2];if((c[k>>2]|0)!=(l|0))break;c[La>>2]=0;Fa=965}while(0);do if((Fa|0)==965){j=c[La+20>>2]|0;if((j|0)<=-1)break;k=c[Ja>>2]|0;if(a[k+81>>0]|0)break;Ca=c[Ja+104>>2]|0;za=Ca+(j*20|0)+1|0;Aa=Ca+(j*20|0)+16|0;kg(k,a[za>>0]|0,c[Aa>>2]|0);a[za>>0]=0;c[Aa>>2]=0;a[Ca+(j*20|0)>>0]=-86}while(0);if(!C){rl(f,h,-1,La,Ga,i,c[Q+32>>2]|0,c[Q+36>>2]|0);sl(Q);j=0;Fa=1796;break}Z=c[_>>2]|0;m=Z+-1|0;W=Z+-2|0;X=Z+-3|0;c[_>>2]=X;w=f+44|0;Y=(c[w>>2]|0)+1|0;c[w>>2]=Y;V=c[wa>>2]|0;J=c[V+12>>2]|0;j=c[Oa>>2]|0;K:do if(!j){l=c[f>>2]|0;do if(!(c[Ba>>2]|0)){if(b[l+76>>1]&8)break;a[f+23>>0]=1}while(0);L:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))Fa=983;else{S=0;break K}else{do if((e[l+276>>1]|0)>=224){j=l+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];Ca=l+284|0;c[Ca>>2]=(c[Ca>>2]|0)+1;break L}j=l+296|0;k=c[j>>2]|0;if(!k){j=l+292|0;break}else{c[j>>2]=c[k>>2];Ca=l+284|0;c[Ca>>2]=(c[Ca>>2]|0)+1;break L}}else j=l+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;Fa=983}while(0);if((Fa|0)==983)k=_d(l,224,0)|0;if(!k){S=0;break}T=k+104|0;U=T+120|0;do{c[T>>2]=0;T=T+4|0}while((T|0)<(U|0));c[k>>2]=l;j=l+4|0;l=c[j>>2]|0;if(l|0)c[l+4>>2]=k;c[k+8>>2]=l;c[k+4>>2]=0;c[j>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=f;c[Oa>>2]=k;Di(k,61,0,1,0)|0;S=k}else S=j;while(0);o=c[va>>2]|0;p=c[o+48>>2]|0;o=b[(c[o+24>>2]|0)+42>>1]|0;q=o<<16>>16;K=c[_>>2]|0;E=K+-1|0;c[_>>2]=E;z=Ea+20|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[z+20>>2]=0;c[z+24>>2]=0;c[z+28>>2]=0;c[Ea>>2]=f;z=Ea+4|0;c[z>>2]=V;c[Ea+8>>2]=S;c[Ea+12>>2]=Y;c[Ea+16>>2]=m;P=c[V+44>>2]|0;R=Ea+36|0;c[R>>2]=P;O=P+1|0;B=Ea+28|0;c[B>>2]=P+2;H=Ea+44|0;c[H>>2]=P+3;P=V+17|0;M:do switch(a[P>>0]|0){case 83:{if((a[V+16>>0]|0)==86)break M;k=c[V+24>>2]|0;j=c[f>>2]|0;c[Da>>2]=0;do if(k|0){Wj(j,k,a[j+78>>0]|0,67,Da)|0;n=c[Da>>2]|0;if(!n)break;l=n+8|0;m=b[l>>1]|0;j=m&65535;do if(!(j&4)){if(j&8|0){k=Mg(+g[n>>3])|0;L()|0;j=m;break}if(!(j&18)){k=0;j=m;break}k=Ng(a[n+10>>0]|0,c[n+12>>2]|0,c[n+16>>2]|0)|0;L()|0;j=b[l>>1]|0}else{k=c[n>>2]|0;j=m}while(0);l=(k|0)<1;if(!((j&9216)==0?!(c[n+24>>2]|0):0))Cg(n);j=c[n+32>>2]|0;do if(!j)Fa=1007;else{if(c[j+480>>2]|0){Xd(j,n);break}k=n;if((c[j+304>>2]|0)>>>0>k>>>0){Fa=1007;break}if((c[j+308>>2]|0)>>>0<=k>>>0){Fa=1007;break}Da=j+300|0;c[n>>2]=c[Da>>2];c[Da>>2]=n}while(0);do if((Fa|0)==1007)if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{Da=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-Da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}while(0);if(l)break M;c[Ea+24>>2]=1;break M}while(0);break}case 87:{if(c[V+84>>2]|0)break M;j=V;do{Ca=c[(c[j+40>>2]|0)+32>>2]|0;if((Ca|0)==40592|((Ca|0)==40587|((Ca|0)==43457|(Ca|0)==43467)))break M;j=c[j+32>>2]|0}while((j|0)!=0);if((a[V+18>>0]|0)!=85){c[Ea+24>>2]=1;break M}if((a[V+16>>0]|0)==86)break M;k=c[V+28>>2]|0;j=c[f>>2]|0;c[Da>>2]=0;do if(k|0){Wj(j,k,a[j+78>>0]|0,67,Da)|0;n=c[Da>>2]|0;if(!n)break;l=n+8|0;m=b[l>>1]|0;j=m&65535;do if(!(j&4)){if(j&8|0){k=Mg(+g[n>>3])|0;L()|0;j=m;break}if(!(j&18)){k=0;j=m;break}k=Ng(a[n+10>>0]|0,c[n+12>>2]|0,c[n+16>>2]|0)|0;L()|0;j=b[l>>1]|0}else{k=c[n>>2]|0;j=m}while(0);l=(k|0)<1;if(!((j&9216)==0?!(c[n+24>>2]|0):0))Cg(n);j=c[n+32>>2]|0;do if(!j)Fa=1036;else{if(c[j+480>>2]|0){Xd(j,n);break}k=n;if((c[j+304>>2]|0)>>>0>k>>>0){Fa=1036;break}if((c[j+308>>2]|0)>>>0<=k>>>0){Fa=1036;break}Da=j+300|0;c[n>>2]=c[Da>>2];c[Da>>2]=n}while(0);do if((Fa|0)==1036)if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{Da=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-Da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}while(0);if(l)break M;c[Ea+24>>2]=3;break M}while(0);break}default:c[Ea+24>>2]=2}while(0);j=c[w>>2]|0;n=j+1|0;j=j+q|0;t=j+1|0;u=j+2|0;c[w>>2]=u;switch(a[P>>0]|0){case 83:case 85:{j=j+3|0;c[w>>2]=j;G=j;break}default:{G=0;j=u}}F=V+18|0;switch(a[F>>0]|0){case 83:case 85:{j=j+1|0;c[w>>2]=j;D=j;break}default:D=0}C=V+16|0;if((a[C>>0]|0)==76){y=0;x=0}else{if(!J)m=0;else m=c[J>>2]|0;k=(c[V+72>>2]|0)+n|0;l=c[V+8>>2]|0;if(l)k=(c[l>>2]|0)+k|0;y=j+m|0;c[Ea+32>>2]=y+1;y=y+m|0;c[Ea+40>>2]=y+1;y=y+m|0;c[Ea+48>>2]=y+1;c[w>>2]=y+m;y=j+1|0;x=k}M=S+108|0;N=S+112|0;if(o<<16>>16>0){k=S+104|0;j=0;do{l=j+n|0;m=c[M>>2]|0;if((c[N>>2]|0)>(m|0)){c[M>>2]=m+1;Da=c[k>>2]|0;a[Da+(m*20|0)>>0]=90;b[Da+(m*20|0)+2>>1]=0;c[Da+(m*20|0)+4>>2]=p;c[Da+(m*20|0)+8>>2]=j;c[Da+(m*20|0)+12>>2]=l;c[Da+(m*20|0)+16>>2]=0;a[Da+(m*20|0)+1>>0]=0}else Di(S,90,p,j,l)|0;j=j+1|0}while((j|0)!=(q|0))}j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Da=c[S+104>>2]|0;a[Da+(j*20|0)>>0]=92;b[Da+(j*20|0)+2>>1]=0;c[Da+(j*20|0)+4>>2]=n;c[Da+(j*20|0)+8>>2]=q;c[Da+(j*20|0)+12>>2]=t;c[Da+(j*20|0)+16>>2]=0;a[Da+(j*20|0)+1>>0]=0}else Di(S,92,n,q,t)|0;I=V+8|0;q=c[I>>2]|0;do if(q){r=c[q>>2]|0;s=(c[V+72>>2]|0)+n|0;o=c[f>>2]|0;m=r+1|0;n=m*5|0;l=n+20|0;p=o+272|0;N:do if(c[p>>2]|0)if(!(a[o+81>>0]|0))Fa=1074;else{n=0;l=1}else{do if(!(0<0|(0==0?(e[o+276>>1]|0)>>>0>>0:0))){j=o+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];Fa=o+284|0;c[Fa>>2]=(c[Fa>>2]|0)+1;Fa=1075;break N}j=o+296|0;k=c[j>>2]|0;if(!k){j=o+292|0;break}else{c[j>>2]=c[k>>2];Fa=o+284|0;c[Fa>>2]=(c[Fa>>2]|0)+1;Fa=1075;break N}}else j=o+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;Fa=1074}while(0);if((Fa|0)==1074){k=_d(o,l,0)|0;Fa=1075}do if((Fa|0)==1075){do if(!k){j=o+81|0;if(a[j>>0]|0){n=0;p=1;break}if(a[o+82>>0]|0){n=0;p=1;break}a[j>>0]=1;if((c[o+180>>2]|0)>0)c[o+264>>2]=1;c[p>>2]=(c[p>>2]|0)+1;j=c[o+236>>2]|0;if(!j){n=0;p=1;break}c[j+12>>2]=7;n=0;p=1}else{c[k+16>>2]=k+20+(m<<2);b[k+6>>1]=r;b[k+8>>1]=m;a[k+4>>0]=a[o+78>>0]|0;c[k+12>>2]=o;c[k>>2]=1;gw(k+24|0,0,n+-4|0)|0;n=k;p=0}while(0);if(!((r|0)>0&(k|0)!=0)){l=p;break}o=k+16|0;l=q+4|0;m=0;while(1){j=Yi(f,c[l>>2]|0)|0;if(!j)j=c[(c[f>>2]|0)+8>>2]|0;c[k+20+(m<<2)>>2]=j;a[(c[o>>2]|0)+m>>0]=a[l+12>>0]|0;m=m+1|0;if((m|0)==(r|0)){l=p;break}else l=l+20|0}}while(0);o=(c[w>>2]|0)+1|0;c[w>>2]=o;m=V+64|0;j=c[m>>2]|0;k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Da=c[S+104>>2]|0;a[Da+(k*20|0)>>0]=87;b[Da+(k*20|0)+2>>1]=0;c[Da+(k*20|0)+4>>2]=s;c[Da+(k*20|0)+8>>2]=j;c[Da+(k*20|0)+12>>2]=r;c[Da+(k*20|0)+16>>2]=0;a[Da+(k*20|0)+1>>0]=0}else k=Di(S,87,s,j,r)|0;j=c[S>>2]|0;O:do if(a[j+81>>0]|0){if(l|(c[j+480>>2]|0)!=0)break;Da=(c[n>>2]|0)+-1|0;c[n>>2]=Da;if(Da|0)break;j=c[n+12>>2]|0;do if(j|0){if(c[j+480>>2]|0){Xd(j,n);break O}l=n;if((c[j+304>>2]|0)>>>0>l>>>0)break;if((c[j+308>>2]|0)>>>0<=l>>>0)break;Da=j+300|0;c[n>>2]=c[Da>>2];c[Da>>2]=n;break O}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{Da=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-Da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}else{Ca=c[S+104>>2]|0;Da=(c[M>>2]|0)+-1|0;a[Ca+(Da*20|0)+1>>0]=-9;c[Ca+(Da*20|0)+16>>2]=n}while(0);l=k+2|0;j=k+4|0;k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Da=c[S+104>>2]|0;a[Da+(k*20|0)>>0]=16;b[Da+(k*20|0)+2>>1]=0;c[Da+(k*20|0)+4>>2]=l;c[Da+(k*20|0)+8>>2]=j;c[Da+(k*20|0)+12>>2]=l;c[Da+(k*20|0)+16>>2]=0;a[Da+(k*20|0)+1>>0]=0}else Di(S,16,l,j,l)|0;j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Da=c[S+104>>2]|0;a[Da+(j*20|0)>>0]=12;b[Da+(j*20|0)+2>>1]=0;c[Da+(j*20|0)+4>>2]=o;c[Da+(j*20|0)+8>>2]=0;c[Da+(j*20|0)+12>>2]=0;c[Da+(j*20|0)+16>>2]=0;a[Da+(j*20|0)+1>>0]=0}else j=Di(S,12,o,0,0)|0;m=c[m>>2]|0;k=r+-1|0;l=c[M>>2]|0;if((c[N>>2]|0)>(l|0)){c[M>>2]=l+1;v=c[S+104>>2]|0;a[v+(l*20|0)>>0]=78;b[v+(l*20|0)+2>>1]=0;c[v+(l*20|0)+4>>2]=s;c[v+(l*20|0)+8>>2]=m;c[v+(l*20|0)+12>>2]=k;c[v+(l*20|0)+16>>2]=0;a[v+(l*20|0)+1>>0]=0;v=j;A=o;break}else{Di(S,78,s,m,k)|0;v=j;A=o;break}}else{v=0;A=0}while(0);j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Da=c[S+104>>2]|0;a[Da+(j*20|0)>>0]=121;b[Da+(j*20|0)+2>>1]=0;c[Da+(j*20|0)+4>>2]=O;c[Da+(j*20|0)+8>>2]=u;c[Da+(j*20|0)+12>>2]=0;c[Da+(j*20|0)+16>>2]=0;a[Da+(j*20|0)+1>>0]=0}else Di(S,121,O,u,0)|0;j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Da=c[S+104>>2]|0;a[Da+(j*20|0)>>0]=122;b[Da+(j*20|0)+2>>1]=0;c[Da+(j*20|0)+4>>2]=O;c[Da+(j*20|0)+8>>2]=t;c[Da+(j*20|0)+12>>2]=u;c[Da+(j*20|0)+16>>2]=0;a[Da+(j*20|0)+1>>0]=0}else Di(S,122,O,t,u)|0;j=c[V+80>>2]|0;k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;t=c[S+104>>2]|0;a[t+(k*20|0)>>0]=52;b[t+(k*20|0)+2>>1]=0;c[t+(k*20|0)+4>>2]=j;c[t+(k*20|0)+8>>2]=0;c[t+(k*20|0)+12>>2]=u;c[t+(k*20|0)+16>>2]=0;a[t+(k*20|0)+1>>0]=0;t=k}else t=Di(S,52,j,0,u)|0;j=c[Oa>>2]|0;P:do if(!j){l=c[f>>2]|0;do if(!(c[Ba>>2]|0)){if(b[l+76>>1]&8)break;a[f+23>>0]=1}while(0);Q:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))Fa=1136;else{j=0;break P}else{do if((e[l+276>>1]|0)>=224){k=l+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];Da=l+284|0;c[Da>>2]=(c[Da>>2]|0)+1;break Q}k=l+296|0;j=c[k>>2]|0;if(!j){j=l+292|0;break}else{c[k>>2]=c[j>>2];Da=l+284|0;c[Da>>2]=(c[Da>>2]|0)+1;break Q}}else j=l+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;Fa=1136}while(0);if((Fa|0)==1136)j=_d(l,224,0)|0;if(!j){j=0;break}T=j+104|0;U=T+120|0;do{c[T>>2]=0;T=T+4|0}while((T|0)<(U|0));c[j>>2]=l;k=l+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=j;c[j+8>>2]=l;c[j+4>>2]=0;c[k>>2]=j;c[j+20>>2]=381479589;c[j+12>>2]=f;c[Oa>>2]=j;Di(j,61,0,1,0)|0}while(0);q=j+108|0;r=j+112|0;s=j+104|0;u=V+84|0;o=V;p=0;do{n=c[o+40>>2]|0;k=c[o+48>>2]|0;l=c[q>>2]|0;if((c[r>>2]|0)>(l|0)){c[q>>2]=l+1;Da=c[s>>2]|0;a[Da+(l*20|0)>>0]=73;b[Da+(l*20|0)+2>>1]=0;c[Da+(l*20|0)+4>>2]=0;c[Da+(l*20|0)+8>>2]=k;c[Da+(l*20|0)+12>>2]=0;c[Da+(l*20|0)+16>>2]=0;a[Da+(l*20|0)+1>>0]=0}else Di(j,73,0,k,0)|0;k=c[(c[o+68>>2]|0)+20>>2]|0;if(!k)k=0;else k=c[k>>2]|0;p=(p|0)>(k|0)?p:k;do if(!(c[u>>2]|0)){Da=c[n+32>>2]|0;do if((Da|0)==43457|(Da|0)==43467){k=o+60|0;l=c[k>>2]|0;m=c[q>>2]|0;if((c[r>>2]|0)>(m|0)){c[q>>2]=m+1;Da=c[s>>2]|0;a[Da+(m*20|0)>>0]=70;b[Da+(m*20|0)+2>>1]=0;c[Da+(m*20|0)+4>>2]=0;c[Da+(m*20|0)+8>>2]=l;c[Da+(m*20|0)+12>>2]=0;c[Da+(m*20|0)+16>>2]=0;a[Da+(m*20|0)+1>>0]=0}else Di(j,70,0,l,0)|0;k=(c[k>>2]|0)+1|0;l=c[q>>2]|0;if((c[r>>2]|0)>(l|0)){c[q>>2]=l+1;Da=c[s>>2]|0;a[Da+(l*20|0)>>0]=70;b[Da+(l*20|0)+2>>1]=0;c[Da+(l*20|0)+4>>2]=0;c[Da+(l*20|0)+8>>2]=k;c[Da+(l*20|0)+12>>2]=0;c[Da+(l*20|0)+16>>2]=0;a[Da+(l*20|0)+1>>0]=0;break}else{Di(j,70,0,k,0)|0;break}}while(0);if(!(c[n+4>>2]&4096))break;k=c[o+56>>2]|0;if(!k)break;l=c[q>>2]|0;if((c[r>>2]|0)>(l|0)){c[q>>2]=l+1;Da=c[s>>2]|0;a[Da+(l*20|0)>>0]=-118;b[Da+(l*20|0)+2>>1]=0;c[Da+(l*20|0)+4>>2]=k;c[Da+(l*20|0)+8>>2]=0;c[Da+(l*20|0)+12>>2]=0;c[Da+(l*20|0)+16>>2]=0;a[Da+(l*20|0)+1>>0]=0}else Di(j,138,k,0,0)|0;k=(c[o+60>>2]|0)+1|0;l=c[q>>2]|0;if((c[r>>2]|0)>(l|0)){c[q>>2]=l+1;Da=c[s>>2]|0;a[Da+(l*20|0)>>0]=70;b[Da+(l*20|0)+2>>1]=0;c[Da+(l*20|0)+4>>2]=0;c[Da+(l*20|0)+8>>2]=k;c[Da+(l*20|0)+12>>2]=0;c[Da+(l*20|0)+16>>2]=0;a[Da+(l*20|0)+1>>0]=0;break}else{Di(j,70,0,k,0)|0;break}}while(0);o=c[o+32>>2]|0}while((o|0)!=0);n=c[w>>2]|0;c[w>>2]=n+p;c[Ea+20>>2]=n+1;n=(G|0)!=0;if(n){j=c[V+24>>2]|0;do if(j){if((a[j>>0]|0)!=-88){m=Jj(f,j,G)|0;Fa=1172;break}m=c[Oa>>2]|0;j=c[j+28>>2]|0;k=m+108|0;l=c[k>>2]|0;if((c[m+112>>2]|0)>(l|0)){c[k>>2]=l+1;Da=c[m+104>>2]|0;a[Da+(l*20|0)>>0]=78;b[Da+(l*20|0)+2>>1]=0;c[Da+(l*20|0)+4>>2]=j;c[Da+(l*20|0)+8>>2]=G;c[Da+(l*20|0)+12>>2]=0;c[Da+(l*20|0)+16>>2]=0;a[Da+(l*20|0)+1>>0]=0;break}else{Di(m,78,j,G,0)|0;break}}else{m=Jj(f,0,G)|0;Fa=1172}while(0);do if((Fa|0)==1172){if((m|0)==(G|0))break;j=c[Oa>>2]|0;if(!j)break;k=j+108|0;l=c[k>>2]|0;if((c[j+112>>2]|0)>(l|0)){c[k>>2]=l+1;Da=c[j+104>>2]|0;a[Da+(l*20|0)>>0]=79;b[Da+(l*20|0)+2>>1]=0;c[Da+(l*20|0)+4>>2]=m;c[Da+(l*20|0)+8>>2]=G;c[Da+(l*20|0)+12>>2]=0;c[Da+(l*20|0)+16>>2]=0;a[Da+(l*20|0)+1>>0]=0;break}else{Di(j,79,m,G,0)|0;break}}while(0);pm(f,G,(a[C>>0]|0)==86?3:0)}o=(D|0)!=0;if(o){j=c[V+28>>2]|0;do if(j){if((a[j>>0]|0)!=-88){m=Jj(f,j,D)|0;Fa=1186;break}m=c[Oa>>2]|0;j=c[j+28>>2]|0;k=m+108|0;l=c[k>>2]|0;if((c[m+112>>2]|0)>(l|0)){c[k>>2]=l+1;Da=c[m+104>>2]|0;a[Da+(l*20|0)>>0]=78;b[Da+(l*20|0)+2>>1]=0;c[Da+(l*20|0)+4>>2]=j;c[Da+(l*20|0)+8>>2]=D;c[Da+(l*20|0)+12>>2]=0;c[Da+(l*20|0)+16>>2]=0;a[Da+(l*20|0)+1>>0]=0;break}else{Di(m,78,j,D,0)|0;break}}else{m=Jj(f,0,D)|0;Fa=1186}while(0);do if((Fa|0)==1186){if((m|0)==(D|0))break;j=c[Oa>>2]|0;if(!j)break;k=j+108|0;l=c[k>>2]|0;if((c[j+112>>2]|0)>(l|0)){c[k>>2]=l+1;Fa=c[j+104>>2]|0;a[Fa+(l*20|0)>>0]=79;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=m;c[Fa+(l*20|0)+8>>2]=D;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0;break}else{Di(j,79,m,D,0)|0;break}}while(0);pm(f,D,(a[C>>0]|0)==86?4:1)}j=a[P>>0]|0;if(n&j<<24>>24==(a[F>>0]|0)){j=j<<24>>24==83?57:55;k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Fa=c[S+104>>2]|0;a[Fa+(k*20|0)>>0]=j;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=G;c[Fa+(k*20|0)+8>>2]=0;c[Fa+(k*20|0)+12>>2]=D;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else k=Di(S,j,G,0,D)|0;qm(c[Ea>>2]|0,c[z>>2]|0,0);j=c[R>>2]|0;l=c[M>>2]|0;if((c[N>>2]|0)>(l|0)){c[M>>2]=l+1;Fa=c[S+104>>2]|0;a[Fa+(l*20|0)>>0]=36;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=j;c[Fa+(l*20|0)+8>>2]=1;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0}else Di(S,36,j,1,0)|0;rm(Ea);j=c[R>>2]|0;l=c[M>>2]|0;if((c[N>>2]|0)>(l|0)){c[M>>2]=l+1;Fa=c[S+104>>2]|0;a[Fa+(l*20|0)>>0]=-118;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=j;c[Fa+(l*20|0)+8>>2]=0;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0}else Di(S,138,j,0,0)|0;j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Fa=c[S+104>>2]|0;a[Fa+(j*20|0)>>0]=11;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=0;c[Fa+(j*20|0)+8>>2]=E;c[Fa+(j*20|0)+12>>2]=0;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0}else Di(S,11,0,E,0)|0;l=c[M>>2]|0;if(!(a[(c[S>>2]|0)+81>>0]|0))j=(c[S+104>>2]|0)+(((k|0)<0?l+-1|0:k)*20|0)|0;else j=59308;c[j+8>>2]=l;j=a[P>>0]|0}do if(j<<24>>24==83){if(!(o&(a[C>>0]|0)!=86))break;j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Fa=c[S+104>>2]|0;a[Fa+(j*20|0)>>0]=101;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=G;c[Fa+(j*20|0)+8>>2]=D;c[Fa+(j*20|0)+12>>2]=G;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0;break}else{Di(S,101,G,D,G)|0;break}}while(0);do if((a[P>>0]|0)!=87){j=c[B>>2]|0;k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Fa=c[S+104>>2]|0;a[Fa+(k*20|0)>>0]=36;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=j;c[Fa+(k*20|0)+8>>2]=1;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0;break}else{Di(S,36,j,1,0)|0;break}}while(0);j=c[R>>2]|0;k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Fa=c[S+104>>2]|0;a[Fa+(k*20|0)>>0]=36;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=j;c[Fa+(k*20|0)+8>>2]=1;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(S,36,j,1,0)|0;j=c[H>>2]|0;k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Fa=c[S+104>>2]|0;a[Fa+(k*20|0)>>0]=36;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=j;c[Fa+(k*20|0)+8>>2]=1;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(S,36,j,1,0)|0;m=(y|0)!=0;do if((J|0)!=0&m){j=(c[J>>2]|0)+-1|0;k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Fa=c[S+104>>2]|0;a[Fa+(k*20|0)>>0]=78;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=x;c[Fa+(k*20|0)+8>>2]=y;c[Fa+(k*20|0)+12>>2]=j;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(S,78,x,y,j)|0;j=c[Ea+32>>2]|0;k=(c[J>>2]|0)+-1|0;l=c[M>>2]|0;if((c[N>>2]|0)>(l|0)){c[M>>2]=l+1;Fa=c[S+104>>2]|0;a[Fa+(l*20|0)>>0]=78;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=y;c[Fa+(l*20|0)+8>>2]=j;c[Fa+(l*20|0)+12>>2]=k;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0}else Di(S,78,y,j,k)|0;j=c[Ea+40>>2]|0;k=(c[J>>2]|0)+-1|0;l=c[M>>2]|0;if((c[N>>2]|0)>(l|0)){c[M>>2]=l+1;Fa=c[S+104>>2]|0;a[Fa+(l*20|0)>>0]=78;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=y;c[Fa+(l*20|0)+8>>2]=j;c[Fa+(l*20|0)+12>>2]=k;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0}else Di(S,78,y,j,k)|0;j=c[Ea+48>>2]|0;k=(c[J>>2]|0)+-1|0;l=c[M>>2]|0;if((c[N>>2]|0)>(l|0)){c[M>>2]=l+1;Fa=c[S+104>>2]|0;a[Fa+(l*20|0)>>0]=78;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=y;c[Fa+(l*20|0)+8>>2]=j;c[Fa+(l*20|0)+12>>2]=k;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0;break}else{Di(S,78,y,j,k)|0;break}}while(0);j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Fa=c[S+104>>2]|0;a[Fa+(j*20|0)>>0]=11;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=0;c[Fa+(j*20|0)+8>>2]=E;c[Fa+(j*20|0)+12>>2]=0;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0}else Di(S,11,0,E,0)|0;k=c[M>>2]|0;if(!(a[(c[S>>2]|0)+81>>0]|0))j=(c[S+104>>2]|0)+(((t|0)<0?k+-1|0:t)*20|0)|0;else j=59308;c[j+8>>2]=k;if(m)sm(f,J,x,y,E);j=a[P>>0]|0;R:do if(j<<24>>24==83){tm(Ea,3,0,0)|0;if((a[F>>0]|0)==87)break;if((a[C>>0]|0)!=86){tm(Ea,1,D,0)|0;tm(Ea,2,G,0)|0;break}l=c[_>>2]|0;j=l+-1|0;c[_>>2]=j;k=c[M>>2]|0;um(Ea,57,c[R>>2]|0,D,c[H>>2]|0,j);tm(Ea,2,G,0)|0;tm(Ea,1,0,0)|0;j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Fa=c[S+104>>2]|0;a[Fa+(j*20|0)>>0]=11;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=0;c[Fa+(j*20|0)+8>>2]=k;c[Fa+(j*20|0)+12>>2]=0;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0}else Di(S,11,0,k,0)|0;k=c[S+12>>2]|0;j=0-l|0;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,S,j);break}else{c[(c[k+64>>2]|0)+(j<<2)>>2]=c[M>>2];break}}else{if((a[F>>0]|0)==85){do if(j<<24>>24==85){Fa=(a[C>>0]|0)==86;tm(Ea,3,D,0)|0;if(!Fa)break;tm(Ea,2,G,0)|0;tm(Ea,1,0,0)|0;break R}else tm(Ea,3,D,0)|0;while(0);tm(Ea,1,0,0)|0;tm(Ea,2,G,0)|0;break}tm(Ea,3,0,0)|0;if((a[F>>0]|0)==87)break;if((a[C>>0]|0)!=86){do if(o){j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Fa=c[S+104>>2]|0;a[Fa+(j*20|0)>>0]=47;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=D;c[Fa+(j*20|0)+8>>2]=0;c[Fa+(j*20|0)+12>>2]=1;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0;break}else{j=Di(S,47,D,0,1)|0;break}}else j=0;while(0);tm(Ea,1,0,0)|0;tm(Ea,2,G,0)|0;if(!o)break;k=c[M>>2]|0;if(!(a[(c[S>>2]|0)+81>>0]|0))j=(c[S+104>>2]|0)+(((j|0)<0?k+-1|0:j)*20|0)|0;else j=59308;c[j+8>>2]=k;break}k=c[M>>2]|0;if(o){l=(c[_>>2]|0)+-1|0;c[_>>2]=l;um(Ea,57,c[R>>2]|0,D,c[H>>2]|0,l)}else l=0;tm(Ea,1,0,0)|0;tm(Ea,2,G,0)|0;if(!o)break;j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Fa=c[S+104>>2]|0;a[Fa+(j*20|0)>>0]=11;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=0;c[Fa+(j*20|0)+8>>2]=k;c[Fa+(j*20|0)+12>>2]=0;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0}else Di(S,11,0,k,0)|0;k=c[S+12>>2]|0;j=~l;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,S,j);break}else{c[(c[k+64>>2]|0)+(j<<2)>>2]=c[M>>2];break}}while(0);k=c[S+12>>2]|0;j=0-K|0;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0)mk(k,S,j);else c[(c[k+64>>2]|0)+(j<<2)>>2]=c[M>>2];sl(Q);j=c[M>>2]|0;if(!(c[I>>2]|0))p=0;else{if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Fa=c[S+104>>2]|0;a[Fa+(j*20|0)>>0]=70;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=0;c[Fa+(j*20|0)+8>>2]=A;c[Fa+(j*20|0)+12>>2]=0;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0}else j=Di(S,70,0,A,0)|0;l=c[M>>2]|0;if(!(a[(c[S>>2]|0)+81>>0]|0))k=(c[S+104>>2]|0)+(((v|0)<0?l+-1|0:v)*20|0)|0;else k=59308;c[k+8>>2]=l;p=j;j=l}if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;o=c[S+104>>2]|0;a[o+(j*20|0)>>0]=36;b[o+(j*20|0)+2>>1]=0;c[o+(j*20|0)+4>>2]=O;c[o+(j*20|0)+8>>2]=0;c[o+(j*20|0)+12>>2]=0;c[o+(j*20|0)+16>>2]=0;a[o+(j*20|0)+1>>0]=0;o=j}else o=Di(S,36,O,0,0)|0;j=a[P>>0]|0;do if((a[F>>0]|0)==85){do if(j<<24>>24==85){Fa=(a[C>>0]|0)==86;tm(Ea,3,D,0)|0;if(!Fa)break;tm(Ea,2,G,0)|0}else tm(Ea,3,D,0)|0;while(0);tm(Ea,1,0,0)|0;k=a[(c[S>>2]|0)+81>>0]|0;l=c[M>>2]|0}else{tm(Ea,3,0,0)|0;if(j<<24>>24!=83){k=c[M>>2]|0;m=tm(Ea,1,0,1)|0;tm(Ea,2,G,0)|0;j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Fa=c[S+104>>2]|0;a[Fa+(j*20|0)>>0]=11;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=0;c[Fa+(j*20|0)+8>>2]=k;c[Fa+(j*20|0)+12>>2]=0;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0}else Di(S,11,0,k,0)|0;l=c[M>>2]|0;k=a[(c[S>>2]|0)+81>>0]|0;if(!(k<<24>>24))j=(c[S+104>>2]|0)+(((m|0)<0?l+-1|0:m)*20|0)|0;else j=59308;c[j+8>>2]=l;break}do if((a[C>>0]|0)!=86){j=c[M>>2]|0;if((a[F>>0]|0)==87){n=tm(Ea,1,G,1)|0;l=tm(Ea,2,0,1)|0;break}else{n=tm(Ea,1,D,1)|0;l=tm(Ea,2,G,1)|0;break}}else{j=c[M>>2]|0;l=tm(Ea,2,G,1)|0;n=tm(Ea,1,0,1)|0}while(0);k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Fa=c[S+104>>2]|0;a[Fa+(k*20|0)>>0]=11;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=0;c[Fa+(k*20|0)+8>>2]=j;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(S,11,0,j,0)|0;k=c[M>>2]|0;if(!(a[(c[S>>2]|0)+81>>0]|0))j=(c[S+104>>2]|0)+(((l|0)<0?k+-1|0:l)*20|0)|0;else j=59308;c[j+8>>2]=k;m=tm(Ea,1,0,1)|0;j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Fa=c[S+104>>2]|0;a[Fa+(j*20|0)>>0]=11;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=0;c[Fa+(j*20|0)+8>>2]=k;c[Fa+(j*20|0)+12>>2]=0;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0}else Di(S,11,0,k,0)|0;l=c[M>>2]|0;k=a[(c[S>>2]|0)+81>>0]|0;if(!(k<<24>>24)){j=l+-1|0;Fa=c[S+104>>2]|0;c[Fa+(((n|0)<0?j:n)*20|0)+8>>2]=l;j=Fa+(((m|0)<0?j:m)*20|0)|0}else{c[14829]=l;j=59308}c[j+8>>2]=l}while(0);if(!(k<<24>>24))j=(c[S+104>>2]|0)+(((o|0)<0?l+-1|0:o)*20|0)|0;else j=59308;c[j+8>>2]=l;j=c[R>>2]|0;if((c[N>>2]|0)>(l|0)){c[M>>2]=l+1;Fa=c[S+104>>2]|0;a[Fa+(l*20|0)>>0]=-118;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=j;c[Fa+(l*20|0)+8>>2]=0;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0}else Di(S,138,j,0,0)|0;do if(c[I>>2]|0){j=c[u>>2]|0;do if(j|0){k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Fa=c[S+104>>2]|0;a[Fa+(k*20|0)>>0]=70;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=1;c[Fa+(k*20|0)+8>>2]=j;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(S,70,1,j,0)|0;j=c[V+88>>2]|0;k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Fa=c[S+104>>2]|0;a[Fa+(k*20|0)>>0]=70;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=0;c[Fa+(k*20|0)+8>>2]=j;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0;break}else{Di(S,70,0,j,0)|0;break}}while(0);k=c[M>>2]|0;if(!(a[(c[S>>2]|0)+81>>0]|0))j=(c[S+104>>2]|0)+(((p|0)<0?k+-1|0:p)*20|0)|0;else j=59308;c[j+4>>2]=k;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Fa=c[S+104>>2]|0;a[Fa+(k*20|0)>>0]=66;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=A;c[Fa+(k*20|0)+8>>2]=0;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0;break}else{Di(S,66,A,0,0)|0;break}}while(0);n=Ja+108|0;j=c[n>>2]|0;m=Ja+112|0;if((c[m>>2]|0)>(j|0)){c[n>>2]=j+1;Fa=c[Ja+104>>2]|0;a[Fa+(j*20|0)>>0]=11;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=0;c[Fa+(j*20|0)+8>>2]=X;c[Fa+(j*20|0)+12>>2]=0;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0}else Di(Ja,11,0,X,0)|0;l=Ja+12|0;j=c[l>>2]|0;k=0-Z|0;if(((c[j+56>>2]|0)+(c[j+60>>2]|0)|0)<0)mk(j,Ja,k);else c[(c[j+64>>2]|0)+(k<<2)>>2]=c[n>>2];c[La+28>>2]=0;rl(f,h,-1,La,Ga,i,W,X);j=c[l>>2]|0;k=1-Z|0;if(((c[j+56>>2]|0)+(c[j+60>>2]|0)|0)<0)mk(j,Ja,k);else c[(c[j+64>>2]|0)+(k<<2)>>2]=c[n>>2];j=c[n>>2]|0;if((c[m>>2]|0)>(j|0)){c[n>>2]=j+1;Fa=c[Ja+104>>2]|0;a[Fa+(j*20|0)>>0]=66;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=Y;c[Fa+(j*20|0)+8>>2]=0;c[Fa+(j*20|0)+12>>2]=0;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0}else Di(Ja,66,Y,0,0)|0;k=c[l>>2]|0;j=2-Z|0;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,Ja,j);j=0;Fa=1796;break}else{c[(c[k+64>>2]|0)+(j<<2)>>2]=c[n>>2];j=0;Fa=1796;break}}else{z=(U|0)!=0;do if(z){k=c[h>>2]|0;j=c[k>>2]|0;if((j|0)>0){k=k+4|0;while(1){b[k+16+2>>1]=0;if((j|0)>1){k=k+20|0;j=j+-1|0}else break}}j=c[U>>2]|0;if((j|0)>0){k=U+4|0;while(1){b[k+16+2>>1]=0;if((j|0)>1){k=k+20|0;j=j+-1|0}else break}}j=h+6|0;if((b[j>>1]|0)<=66)break;b[j>>1]=66}else b[h+6>>1]=0;while(0);k=c[La>>2]|0;j=(k|0)==0;S:do if(l&j)R=1;else{if(l|j){R=0;break}j=c[U>>2]|0;if((j|0)!=(c[k>>2]|0)){R=0;break}if((j|0)<=0){R=1;break}j=0;while(1){if((a[U+4+(j*20|0)+12>>0]|0)!=(a[k+4+(j*20|0)+12>>0]|0)){R=0;break S}if(bk(0,c[U+4+(j*20|0)>>2]|0,c[k+4+(j*20|0)>>2]|0,-1)|0){R=0;break S}j=j+1|0;if((j|0)>=(c[U>>2]|0)){R=1;break}}}while(0);W=c[_>>2]|0;V=W+-1|0;c[_>>2]=V;S=Ea+12|0;c[S>>2]=0;c[S+4>>2]=0;c[S+8>>2]=0;c[S+12>>2]=0;c[S+16>>2]=0;c[Ea>>2]=f;c[Ea+4>>2]=ta;c[Ea+8>>2]=Ma;S=f+44|0;c[Ma+16>>2]=(c[S>>2]|0)+1;if(z)j=c[U>>2]|0;else j=0;A=Ma+12|0;c[A>>2]=j;c[Ma+24>>2]=U;do if($|0){j=c[$>>2]|0;if((j|0)<=0)break;n=Da+4|0;o=Da+8|0;p=Da+12|0;q=Da+16|0;r=Da+24|0;l=$+4|0;m=0;while(1){k=c[l>>2]|0;c[n>>2]=133;c[o>>2]=134;c[p>>2]=67;c[q>>2]=0;c[r>>2]=Ea;c[Da>>2]=0;if(k){_j(Da,k)|0;j=c[$>>2]|0}m=m+1|0;if((m|0)>=(j|0))break;else l=l+20|0}}while(0);n=c[La>>2]|0;do if(n|0){j=c[n>>2]|0;if((j|0)<=0)break;o=Da+4|0;p=Da+8|0;q=Da+12|0;r=Da+16|0;s=Da+24|0;l=n+4|0;m=0;while(1){k=c[l>>2]|0;c[o>>2]=133;c[p>>2]=134;c[q>>2]=67;c[r>>2]=0;c[s>>2]=Ea;c[Da>>2]=0;if(k){_j(Da,k)|0;j=c[n>>2]|0}m=m+1|0;if((m|0)>=(j|0))break;else l=l+20|0}}while(0);do if(!X)C=D;else{if(!z){c[Da+4>>2]=133;c[Da+8>>2]=134;c[Da+12>>2]=67;c[Da+16>>2]=0;c[Da+24>>2]=Ea;c[Da>>2]=0;_j(Da,X)|0;C=D;break}j=Da+8|0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;c[Da>>2]=f;c[Da+4>>2]=135;c[Da+24>>2]=h;j=c[u>>2]|0;if(j|0)_j(Da,j)|0;C=c[sa>>2]|0;c[Da+4>>2]=133;c[Da+8>>2]=134;c[Da+12>>2]=67;c[Da+16>>2]=0;c[Da+24>>2]=Ea;c[Da>>2]=0;_j(Da,X)|0}while(0);I=Ma+32|0;y=Ma+36|0;c[y>>2]=c[I>>2];do if(!(c[t>>2]|0)){if(c[u>>2]|0){x=0;j=0;break}if((c[Ma+44>>2]|0)!=1){x=0;j=0;break}j=c[c[Ma+40>>2]>>2]|0;p=c[j+20>>2]|0;do if(!p){j=0;k=0}else{if((c[p>>2]|0)!=1){j=0;k=0;break}k=c[j+8>>2]|0;o=a[k>>0]|0;j=(d[208+(o&255)>>0]|0)+-109|0;o=o<<24>>24==0|(j|0)!=0;if(o)l=j;else{m=44311;n=k;do{n=n+1|0;m=m+1|0;wa=a[n>>0]|0;l=(d[208+(wa&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(wa<<24>>24==0|(l|0)!=0))}if(l){if(!o){l=44315;do{k=k+1|0;l=l+1|0;wa=a[k>>0]|0;j=(d[208+(wa&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(wa<<24>>24==0|(j|0)!=0))}if(!j){l=1;k=2}else{j=0;k=0;break}}else{l=0;k=1}j=gk(Na,p,0)|0;if(!j){j=0;break}a[j+16>>0]=l}while(0);x=k&255}else{x=0;j=0}while(0);T=Ma+44|0;n=c[T>>2]|0;if((n|0)>0){q=Ea+24|0;r=Ma+40|0;s=Da+4|0;t=Da+8|0;u=Da+12|0;v=Da+16|0;w=Da+24|0;p=0;k=b[q>>1]|0;do{k=k|8;b[q>>1]=k;o=c[(c[(c[r>>2]|0)+(p<<4)>>2]|0)+20>>2]|0;do if(o){l=c[o>>2]|0;if((l|0)<=0)break;m=o+4|0;n=0;k=l;while(1){l=c[m>>2]|0;c[s>>2]=133;c[t>>2]=134;c[u>>2]=67;c[v>>2]=0;c[w>>2]=Ea;c[Da>>2]=0;if(l){_j(Da,l)|0;k=c[o>>2]|0}n=n+1|0;if((n|0)>=(k|0))break;else m=m+20|0}k=b[q>>1]|0;n=c[T>>2]|0}while(0);k=k&-9;b[q>>1]=k;p=p+1|0}while((p|0)<(n|0))}o=c[S>>2]|0;c[Ma+20>>2]=o;T:do if(!(a[xa>>0]|0)){do if(z){y=f+40|0;p=c[y>>2]|0;c[y>>2]=p+1;O=Ma+4|0;c[O>>2]=p;p=c[f>>2]|0;r=c[U>>2]|0;n=(c[I>>2]|0)+1+r|0;o=n*5|0;m=o+20|0;q=p+272|0;U:do if(c[q>>2]|0)if(!(a[p+81>>0]|0))Fa=1431;else{E=0;q=1;z=0}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){k=p+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];Fa=p+284|0;c[Fa>>2]=(c[Fa>>2]|0)+1;Fa=1432;break U}k=p+296|0;l=c[k>>2]|0;if(!l){k=p+292|0;break}else{c[k>>2]=c[l>>2];Fa=p+284|0;c[Fa>>2]=(c[Fa>>2]|0)+1;Fa=1432;break U}}else k=p+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;Fa=1431}while(0);if((Fa|0)==1431){l=_d(p,m,0)|0;Fa=1432}do if((Fa|0)==1432){do if(!l){k=p+81|0;if(a[k>>0]|0){m=0;q=1;break}if(a[p+82>>0]|0){m=0;q=1;break}a[k>>0]=1;if((c[p+180>>2]|0)>0)c[p+264>>2]=1;c[q>>2]=(c[q>>2]|0)+1;k=c[p+236>>2]|0;if(!k){m=0;q=1;break}c[k+12>>2]=7;m=0;q=1}else{c[l+16>>2]=l+20+(n<<2);b[l+6>>1]=r;b[l+8>>1]=n;a[l+4>>0]=a[p+78>>0]|0;c[l+12>>2]=p;c[l>>2]=1;gw(l+24|0,0,o+-4|0)|0;m=l;q=0}while(0);if(!((r|0)>0&(l|0)!=0)){E=m;z=l;break}p=l+16|0;n=U+4|0;o=0;while(1){k=Yi(f,c[n>>2]|0)|0;if(!k)k=c[(c[f>>2]|0)+8>>2]|0;c[l+20+(o<<2)>>2]=k;a[(c[p>>2]|0)+o>>0]=a[n+12>>0]|0;o=o+1|0;if((o|0)==(r|0)){E=m;z=l;break}else n=n+20|0}}while(0);m=c[O>>2]|0;k=c[A>>2]|0;P=Ja+108|0;l=c[P>>2]|0;Q=Ja+112|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;H=c[Ja+104>>2]|0;a[H+(l*20|0)>>0]=114;b[H+(l*20|0)+2>>1]=0;c[H+(l*20|0)+4>>2]=m;c[H+(l*20|0)+8>>2]=k;c[H+(l*20|0)+12>>2]=0;c[H+(l*20|0)+16>>2]=0;a[H+(l*20|0)+1>>0]=0;H=l}else H=Di(Ja,114,m,k,0)|0;k=c[Ja>>2]|0;V:do if(a[k+81>>0]|0){if(q|(c[k+480>>2]|0)!=0)break;Ea=(c[E>>2]|0)+-1|0;c[E>>2]=Ea;if(Ea|0){q=0;break}k=c[E+12>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,E);q=0;break V}l=E;if((c[k+304>>2]|0)>>>0>l>>>0)break;if((c[k+308>>2]|0)>>>0<=l>>>0)break;q=k+300|0;c[E>>2]=c[q>>2];c[q>>2]=E;q=0;break V}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](E);q=0;break}else{q=Wa[c[29352>>2]&127](E)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](E);q=0;break}}else{if((H|0)<0)k=(c[P>>2]|0)+-1|0;else k=H;l=c[Ja+104>>2]|0;m=l+(k*20|0)+1|0;if(a[m>>0]|0){Ei(Ja,l+(k*20|0)|0,E,-9);break}if(q){q=1;break}c[l+(k*20|0)+16>>2]=E;a[m>>0]=-9;q=0}while(0);A=c[S>>2]|0;M=A+1|0;G=A+2|0;J=A+3|0;K=c[_>>2]|0;F=K+-1|0;N=A+4|0;D=K+-2|0;c[_>>2]=D;A=A+5|0;k=c[U>>2]|0;Ea=k+N|0;B=Ea+1|0;c[S>>2]=Ea+k;k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Ea=c[Ja+104>>2]|0;a[Ea+(k*20|0)>>0]=70;b[Ea+(k*20|0)+2>>1]=0;c[Ea+(k*20|0)+4>>2]=0;c[Ea+(k*20|0)+8>>2]=G;c[Ea+(k*20|0)+12>>2]=0;c[Ea+(k*20|0)+16>>2]=0;a[Ea+(k*20|0)+1>>0]=0}else Di(Ja,70,0,G,0)|0;k=(c[U>>2]|0)+N|0;l=c[P>>2]|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;Ea=c[Ja+104>>2]|0;a[Ea+(l*20|0)>>0]=73;b[Ea+(l*20|0)+2>>1]=0;c[Ea+(l*20|0)+4>>2]=0;c[Ea+(l*20|0)+8>>2]=A;c[Ea+(l*20|0)+12>>2]=k;c[Ea+(l*20|0)+16>>2]=0;a[Ea+(l*20|0)+1>>0]=0}else Di(Ja,73,0,A,k)|0;k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Ea=c[Ja+104>>2]|0;a[Ea+(k*20|0)>>0]=12;b[Ea+(k*20|0)+2>>1]=0;c[Ea+(k*20|0)+4>>2]=N;c[Ea+(k*20|0)+8>>2]=D;c[Ea+(k*20|0)+12>>2]=0;c[Ea+(k*20|0)+16>>2]=0;a[Ea+(k*20|0)+1>>0]=0}else Di(Ja,12,N,D,0)|0;C=ql(f,ta,C,U,0,R?576:64,0)|0;if(!C)break T;if((c[U>>2]|0)==(a[C+47>>0]|0)){n=0;o=0;m=0}else{if(!(a[Ga>>0]|0))k=43118;else k=(c[za>>2]&1|0)==0?43109:43118;c[Aa>>2]=k;nk(f,0,44319,Aa);u=c[U>>2]|0;p=c[I>>2]|0;if((p|0)>0){n=c[Ma+28>>2]|0;l=u;k=u;m=0;while(1){o=(c[n+(m*24|0)+12>>2]|0)>=(l|0)&1;k=k+o|0;m=m+1|0;if((m|0)>=(p|0)){x=k;break}else l=l+o|0}}else x=u;w=(x|0)==1;do if(w){k=f+19|0;l=a[k>>0]|0;if(!(l<<24>>24)){v=(c[S>>2]|0)+1|0;c[S>>2]=v;break}else{v=l+-1<<24>>24;a[k>>0]=v;v=c[f+148+((v&255)<<2)>>2]|0;break}}else{k=f+32|0;l=c[k>>2]|0;m=f+28|0;n=c[m>>2]|0;if((n|0)<(x|0)){v=c[S>>2]|0;c[S>>2]=v+x;v=v+1|0;break}else{c[k>>2]=l+x;c[m>>2]=n-x;v=l;break}}while(0);t=c[Oa>>2]|0;if((u|0)>0){m=t+108|0;n=t+112|0;o=t+104|0;k=U+4|0;l=0;while(1){p=l+v|0;r=Jj(f,c[k>>2]|0,p)|0;do if((r|0)!=(p|0)){s=c[m>>2]|0;if((c[n>>2]|0)>(s|0)){c[m>>2]=s+1;Ea=c[o>>2]|0;a[Ea+(s*20|0)>>0]=79;b[Ea+(s*20|0)+2>>1]=0;c[Ea+(s*20|0)+4>>2]=r;c[Ea+(s*20|0)+8>>2]=p;c[Ea+(s*20|0)+12>>2]=0;c[Ea+(s*20|0)+16>>2]=0;a[Ea+(s*20|0)+1>>0]=0;break}else{Di(t,79,r,p,0)|0;break}}while(0);l=l+1|0;if((l|0)==(u|0))break;else k=k+20|0}l=c[I>>2]|0}else l=p;if((l|0)>0){o=Ma+28|0;k=u;n=0;do{m=c[o>>2]|0;if((c[m+(n*24|0)+12>>2]|0)>=(k|0)){Vj(Ja,c[m+(n*24|0)>>2]|0,c[m+(n*24|0)+4>>2]|0,c[m+(n*24|0)+8>>2]|0,k+v|0);k=k+1|0;l=c[I>>2]|0}n=n+1|0}while((n|0)<(l|0))}n=f+19|0;k=a[n>>0]|0;if(!(k<<24>>24)){m=(c[S>>2]|0)+1|0;c[S>>2]=m}else{m=k+-1<<24>>24;a[n>>0]=m;m=c[f+148+((m&255)<<2)>>2]|0}k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Ea=c[Ja+104>>2]|0;a[Ea+(k*20|0)>>0]=92;b[Ea+(k*20|0)+2>>1]=0;c[Ea+(k*20|0)+4>>2]=v;c[Ea+(k*20|0)+8>>2]=x;c[Ea+(k*20|0)+12>>2]=m;c[Ea+(k*20|0)+16>>2]=0;a[Ea+(k*20|0)+1>>0]=0}else Di(Ja,92,v,x,m)|0;k=c[O>>2]|0;l=c[P>>2]|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;Ea=c[Ja+104>>2]|0;a[Ea+(l*20|0)>>0]=-125;b[Ea+(l*20|0)+2>>1]=0;c[Ea+(l*20|0)+4>>2]=k;c[Ea+(l*20|0)+8>>2]=m;c[Ea+(l*20|0)+12>>2]=0;c[Ea+(l*20|0)+16>>2]=0;a[Ea+(l*20|0)+1>>0]=0}else Di(Ja,131,k,m,0)|0;do if(m|0){k=a[n>>0]|0;if((k&255)>=8)break;a[n>>0]=k+1<<24>>24;c[f+148+((k&255)<<2)>>2]=m}while(0);do if(w){if(!v)break;k=a[n>>0]|0;if((k&255)>=8)break;a[n>>0]=k+1<<24>>24;c[f+148+((k&255)<<2)>>2]=v}else{k=f+28|0;if((c[k>>2]|0)>=(x|0))break;c[k>>2]=x;c[f+32>>2]=v}while(0);sl(C);o=c[y>>2]|0;c[y>>2]=o+1;c[Ma+8>>2]=o;k=a[n>>0]|0;if(!(k<<24>>24)){m=(c[S>>2]|0)+1|0;c[S>>2]=m}else{m=k+-1<<24>>24;a[n>>0]=m;m=c[f+148+((m&255)<<2)>>2]|0}k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Ea=c[Ja+104>>2]|0;a[Ea+(k*20|0)>>0]=116;b[Ea+(k*20|0)+2>>1]=0;c[Ea+(k*20|0)+4>>2]=o;c[Ea+(k*20|0)+8>>2]=m;c[Ea+(k*20|0)+12>>2]=x;c[Ea+(k*20|0)+16>>2]=0;a[Ea+(k*20|0)+1>>0]=0}else Di(Ja,116,o,m,x)|0;k=c[O>>2]|0;l=c[P>>2]|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;Ea=c[Ja+104>>2]|0;a[Ea+(l*20|0)>>0]=34;b[Ea+(l*20|0)+2>>1]=0;c[Ea+(l*20|0)+4>>2]=k;c[Ea+(l*20|0)+8>>2]=V;c[Ea+(l*20|0)+12>>2]=0;c[Ea+(l*20|0)+16>>2]=0;a[Ea+(l*20|0)+1>>0]=0}else Di(Ja,34,k,V,0)|0;a[Ma+1>>0]=1;n=1}W:do if(R){if(b[ua>>1]&4){Fa=1537;break}do if(!n){if(a[C+48>>0]|0)break;u=c[P>>2]|0;t=0;break W}while(0);c[La>>2]=0;k=c[La+20>>2]|0;l=c[Ja>>2]|0;if(a[l+81>>0]|0){Fa=1537;break}Fa=c[Ja+104>>2]|0;Da=Fa+(k*20|0)+1|0;Ea=Fa+(k*20|0)+16|0;kg(l,a[Da>>0]|0,c[Ea>>2]|0);a[Da>>0]=0;c[Ea>>2]=0;a[Fa+(k*20|0)>>0]=-86;Fa=1537}else Fa=1537;while(0);do if((Fa|0)==1537){l=c[P>>2]|0;if(!n){u=l;t=0;break}k=c[O>>2]|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;u=c[Ja+104>>2]|0;a[u+(l*20|0)>>0]=126;b[u+(l*20|0)+2>>1]=0;c[u+(l*20|0)+4>>2]=k;c[u+(l*20|0)+8>>2]=m;c[u+(l*20|0)+12>>2]=o;c[u+(l*20|0)+16>>2]=0;a[u+(l*20|0)+1>>0]=0;u=l;t=1;break}else{Di(Ja,126,k,m,o)|0;u=l;t=1;break}}while(0);l=c[U>>2]|0;if((l|0)>0){s=Ja+104|0;r=0;do{X:do if(t){k=r+B|0;l=c[P>>2]|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;Fa=c[s>>2]|0;a[Fa+(l*20|0)>>0]=90;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=o;c[Fa+(l*20|0)+8>>2]=r;c[Fa+(l*20|0)+12>>2]=k;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0;break}else{Di(Ja,90,o,r,k)|0;break}}else{a[Ma>>0]=1;k=c[U+4+(r*20|0)>>2]|0;p=r+B|0;do if(k){if((a[k>>0]|0)!=-88){n=Jj(f,k,p)|0;break}n=c[Oa>>2]|0;k=c[k+28>>2]|0;l=n+108|0;m=c[l>>2]|0;if((c[n+112>>2]|0)>(m|0)){c[l>>2]=m+1;Fa=c[n+104>>2]|0;a[Fa+(m*20|0)>>0]=78;b[Fa+(m*20|0)+2>>1]=0;c[Fa+(m*20|0)+4>>2]=k;c[Fa+(m*20|0)+8>>2]=p;c[Fa+(m*20|0)+12>>2]=0;c[Fa+(m*20|0)+16>>2]=0;a[Fa+(m*20|0)+1>>0]=0;break X}else{Di(n,78,k,p,0)|0;break X}}else n=Jj(f,0,p)|0;while(0);if((n|0)==(p|0))break;k=c[Oa>>2]|0;if(!k)break;l=k+108|0;m=c[l>>2]|0;if((c[k+112>>2]|0)>(m|0)){c[l>>2]=m+1;Fa=c[k+104>>2]|0;a[Fa+(m*20|0)>>0]=79;b[Fa+(m*20|0)+2>>1]=0;c[Fa+(m*20|0)+4>>2]=n;c[Fa+(m*20|0)+8>>2]=p;c[Fa+(m*20|0)+12>>2]=0;c[Fa+(m*20|0)+16>>2]=0;a[Fa+(m*20|0)+1>>0]=0;break}else{Di(k,79,n,p,0)|0;break}}while(0);r=r+1|0;l=c[U>>2]|0}while((r|0)<(l|0))}if(z|0)c[z>>2]=(c[z>>2]|0)+1;k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Fa=c[Ja+104>>2]|0;a[Fa+(k*20|0)>>0]=87;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=A;c[Fa+(k*20|0)+8>>2]=B;c[Fa+(k*20|0)+12>>2]=l;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else k=Di(Ja,87,A,B,l)|0;l=c[Ja>>2]|0;Y:do if(a[l+81>>0]|0){if(q|(c[l+480>>2]|0)!=0)break;Fa=(c[E>>2]|0)+-1|0;c[E>>2]=Fa;if(Fa|0)break;k=c[E+12>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,E);break Y}l=E;if((c[k+304>>2]|0)>>>0>l>>>0)break;if((c[k+308>>2]|0)>>>0<=l>>>0)break;Fa=k+300|0;c[E>>2]=c[Fa>>2];c[Fa>>2]=E;break Y}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](E);break}else{Fa=Wa[c[29352>>2]&127](E)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](E);break}}else{if((k|0)<0)k=(c[P>>2]|0)+-1|0;l=c[Ja+104>>2]|0;m=l+(k*20|0)+1|0;if(a[m>>0]|0){Ei(Ja,l+(k*20|0)|0,E,-9);break}if(q)break;c[l+(k*20|0)+16>>2]=E;a[m>>0]=-9}while(0);o=c[P>>2]|0;k=o+1|0;if((c[Q>>2]|0)>(o|0)){c[P>>2]=k;Fa=c[Ja+104>>2]|0;a[Fa+(o*20|0)>>0]=16;b[Fa+(o*20|0)+2>>1]=0;c[Fa+(o*20|0)+4>>2]=k;c[Fa+(o*20|0)+8>>2]=0;c[Fa+(o*20|0)+12>>2]=k;c[Fa+(o*20|0)+16>>2]=0;a[Fa+(o*20|0)+1>>0]=0}else Di(Ja,16,k,0,k)|0;l=c[U>>2]|0;k=c[Oa>>2]|0;m=k+108|0;n=c[m>>2]|0;if((c[k+112>>2]|0)>(n|0)){c[m>>2]=n+1;Fa=c[k+104>>2]|0;a[Fa+(n*20|0)>>0]=77;b[Fa+(n*20|0)+2>>1]=0;c[Fa+(n*20|0)+4>>2]=B;c[Fa+(n*20|0)+8>>2]=A;c[Fa+(n*20|0)+12>>2]=l;c[Fa+(n*20|0)+16>>2]=0;a[Fa+(n*20|0)+1>>0]=0}else Di(k,77,B,A,l)|0;k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Fa=c[Ja+104>>2]|0;a[Fa+(k*20|0)>>0]=12;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=J;c[Fa+(k*20|0)+8>>2]=F;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(Ja,12,J,F,0)|0;k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Fa=c[Ja+104>>2]|0;a[Fa+(k*20|0)>>0]=47;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=G;c[Fa+(k*20|0)+8>>2]=V;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(Ja,47,G,V,0)|0;k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Fa=c[Ja+104>>2]|0;a[Fa+(k*20|0)>>0]=12;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=N;c[Fa+(k*20|0)+8>>2]=D;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(Ja,12,N,D,0)|0;l=c[P>>2]|0;if(!(a[(c[Ja>>2]|0)+81>>0]|0))k=(c[Ja+104>>2]|0)+(((o|0)<0?l+-1|0:o)*20|0)|0;else k=59308;c[k+8>>2]=l;tl(f,M,Ma);k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Fa=c[Ja+104>>2]|0;a[Fa+(k*20|0)>>0]=70;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=1;c[Fa+(k*20|0)+8>>2]=M;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(Ja,70,1,M,0)|0;do if(t){k=c[O>>2]|0;l=c[P>>2]|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;Fa=c[Ja+104>>2]|0;a[Fa+(l*20|0)>>0]=3;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=k;c[Fa+(l*20|0)+8>>2]=u;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0;break}else{Di(Ja,3,k,u,0)|0;break}}else{sl(C);k=c[Ja>>2]|0;if(a[k+81>>0]|0)break;Fa=c[Ja+104>>2]|0;Da=Fa+(H*20|0)+1|0;Ea=Fa+(H*20|0)+16|0;kg(k,a[Da>>0]|0,c[Ea>>2]|0);a[Da>>0]=0;c[Ea>>2]=0;a[Fa+(H*20|0)>>0]=-86}while(0);k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Fa=c[Ja+104>>2]|0;a[Fa+(k*20|0)>>0]=12;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=J;c[Fa+(k*20|0)+8>>2]=F;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(Ja,12,J,F,0)|0;k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Fa=c[Ja+104>>2]|0;a[Fa+(k*20|0)>>0]=11;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=0;c[Fa+(k*20|0)+8>>2]=V;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(Ja,11,0,V,0)|0;v=c[P>>2]|0;if((c[Q>>2]|0)>(v|0)){c[P>>2]=v+1;Fa=c[Ja+104>>2]|0;a[Fa+(v*20|0)>>0]=70;b[Fa+(v*20|0)+2>>1]=0;c[Fa+(v*20|0)+4>>2]=1;c[Fa+(v*20|0)+8>>2]=G;c[Fa+(v*20|0)+12>>2]=0;c[Fa+(v*20|0)+16>>2]=0;a[Fa+(v*20|0)+1>>0]=0}else Di(Ja,70,1,G,0)|0;k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Fa=c[Ja+104>>2]|0;a[Fa+(k*20|0)>>0]=66;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=J;c[Fa+(k*20|0)+8>>2]=0;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(Ja,66,J,0,0)|0;k=Ja+12|0;l=c[k>>2]|0;m=0-K|0;if(((c[l+56>>2]|0)+(c[l+60>>2]|0)|0)<0)mk(l,Ja,m);else c[(c[l+64>>2]|0)+(m<<2)>>2]=c[P>>2];u=c[P>>2]|0;l=u+2|0;if((c[Q>>2]|0)>(u|0)){c[P>>2]=u+1;Fa=c[Ja+104>>2]|0;a[Fa+(u*20|0)>>0]=47;b[Fa+(u*20|0)+2>>1]=0;c[Fa+(u*20|0)+4>>2]=M;c[Fa+(u*20|0)+8>>2]=l;c[Fa+(u*20|0)+12>>2]=0;c[Fa+(u*20|0)+16>>2]=0;a[Fa+(u*20|0)+1>>0]=0}else Di(Ja,47,M,l,0)|0;l=c[P>>2]|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;Fa=c[Ja+104>>2]|0;a[Fa+(l*20|0)>>0]=66;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=J;c[Fa+(l*20|0)+8>>2]=0;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0}else Di(Ja,66,J,0,0)|0;q=c[Oa>>2]|0;if((c[T>>2]|0)>0){r=q+108|0;s=q+112|0;t=q+104|0;o=c[Ma+40>>2]|0;p=0;while(1){l=c[(c[o>>2]|0)+20>>2]|0;n=c[o+8>>2]|0;if(!l)m=0;else m=c[l>>2]|0;l=c[r>>2]|0;if((c[s>>2]|0)>(l|0)){c[r>>2]=l+1;Fa=c[t>>2]|0;a[Fa+(l*20|0)>>0]=-99;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=n;c[Fa+(l*20|0)+8>>2]=m;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0}else Di(q,157,n,m,0)|0;l=c[o+4>>2]|0;m=c[q>>2]|0;Z:do if(a[m+81>>0]|0){if(!(c[l+4>>2]&16))break;do if(m|0){if(c[m+480>>2]|0){Xd(m,l);break Z}n=l;if((c[m+304>>2]|0)>>>0>n>>>0)break;if((c[m+308>>2]|0)>>>0<=n>>>0)break;Fa=m+300|0;c[l>>2]=c[Fa>>2];c[Fa>>2]=l;break Z}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{Fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}else{Ea=c[t>>2]|0;Fa=(c[r>>2]|0)+-1|0;a[Ea+(Fa*20|0)+1>>0]=-8;c[Ea+(Fa*20|0)+16>>2]=l}while(0);p=p+1|0;if((p|0)>=(c[T>>2]|0))break;else o=o+16|0}}l=u+1|0;Tj(f,X,l,16);rl(f,h,-1,La,Ga,i,l,v);l=c[P>>2]|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;Fa=c[Ja+104>>2]|0;a[Fa+(l*20|0)>>0]=66;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=J;c[Fa+(l*20|0)+8>>2]=0;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0}else Di(Ja,66,J,0,0)|0;m=c[k>>2]|0;l=1-K|0;if(((c[m+56>>2]|0)+(c[m+60>>2]|0)|0)<0)mk(m,Ja,l);else c[(c[m+64>>2]|0)+(l<<2)>>2]=c[P>>2];ul(f,Ma);l=c[P>>2]|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;Fa=c[Ja+104>>2]|0;a[Fa+(l*20|0)>>0]=70;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=0;c[Fa+(l*20|0)+8>>2]=M;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0}else Di(Ja,70,0,M,0)|0;l=c[P>>2]|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;Fa=c[Ja+104>>2]|0;a[Fa+(l*20|0)>>0]=66;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=N;c[Fa+(l*20|0)+8>>2]=0;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0;break}else{Di(Ja,66,N,0,0)|0;break}}else{z=Ma+40|0;m=c[z>>2]|0;do if(!(c[sa>>2]|0)){l=c[h>>2]|0;if((c[l>>2]|0)!=1){Fa=1752;break}k=c[va>>2]|0;if((c[k>>2]|0)!=1){Fa=1752;break}if(c[k+28>>2]|0){Fa=1752;break}w=c[k+24>>2]|0;k=c[l+4>>2]|0;if(c[w+56>>2]|0){Fa=1752;break}if((n|0)==0|(a[k>>0]|0)!=-93){Fa=1752;break}if(!(c[(c[m+4>>2]|0)+4>>2]&256)){Fa=1752;break}if((w|0)==0?1:(c[k+4>>2]&2|0)!=0){Fa=1752;break}l=c[w+72>>2]|0;if(!l)u=-1e6;else{m=c[(c[f>>2]|0)+16>>2]|0;k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0)){u=k;break}else k=k+1|0}s=f+40|0;v=c[s>>2]|0;c[s>>2]=v+1;s=w+28|0;t=c[s>>2]|0;n=c[Ba>>2]|0;n=(n|0)==0?f:n;k=n+84|0;l=c[k>>2]|0;m=1<>2]=l|m;if((u|0)!=1)break;r=c[n>>2]|0;k=r+16|0;if(c[(c[k>>2]|0)+20>>2]|0)break;if(a[n+199>>0]|0)break;l=Pe(c[r>>2]|0,0,r,Da,0,542)|0;if(l|0){cd(n,32157,ya);c[n+12>>2]=l;break}Ea=c[Da>>2]|0;c[(c[k>>2]|0)+20>>2]=Ea;k=c[r+92>>2]|0;n=c[Ea+4>>2]|0;c[n+4>>2]=c[Ea>>2];do if(!(b[n+22>>1]&2)){o=n+32|0;p=n+36|0;q=(c[o>>2]|0)-(c[p>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[o>>2]=k;m=n+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;Ea=(c[14820]|0)+1|0;c[14820]=Ea;c[14821]=(Ea|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;Fa=1688;break}else{k=Wa[c[29352>>2]&127](l)|0;Fa=1688}while(0);do if((Fa|0)==1688){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{Ea=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-Ea;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);Ea=Se(c[n>>2]|0,o,q)|0;c[p>>2]=(c[o>>2]|0)-(q&65535);if((Ea|0)!=7)break;k=r+81|0;do if(!(a[k>>0]|0)){if(a[r+82>>0]|0)break;a[k>>0]=1;if((c[r+180>>2]|0)>0)c[r+264>>2]=1;k=r+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[r+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break _}while(0)}while(0);Hj(f,u,c[s>>2]|0,0,c[w>>2]|0);s=w+36|0;l=c[w+8>>2]|0;$:do if(!(c[s>>2]&32)){k=0;Fa=1706}else{if(!l){l=t;n=0;r=0;q=1;break}k=l;while(1){Fa=k+55|0;if(((d[Fa>>0]|d[Fa+1>>0]<<8)&3)==2){Fa=1706;break $}k=c[k+20>>2]|0;if(!k){k=0;Fa=1706;break}}}while(0);do if((Fa|0)==1706){if(l){n=w+46|0;do{Ea=l+55|0;do if(!((d[Ea>>0]|d[Ea+1>>0]<<8)&4)){m=b[l+48>>1]|0;if(m<<16>>16>=(b[n>>1]|0))break;if(c[l+36>>2]|0)break;if(k|0?m<<16>>16>=(b[k+48>>1]|0):0)break;k=l}while(0);l=c[l+20>>2]|0}while((l|0)!=0)}if(!k){l=t;n=0;r=0;q=1;break}l=c[k+44>>2]|0;n=Ij(f,k)|0;r=k;q=0}while(0);o=Ja+108|0;k=c[o>>2]|0;p=Ja+112|0;if((c[p>>2]|0)>(k|0)){c[o>>2]=k+1;Ea=c[Ja+104>>2]|0;a[Ea+(k*20|0)>>0]=108;b[Ea+(k*20|0)+2>>1]=0;c[Ea+(k*20|0)+4>>2]=v;c[Ea+(k*20|0)+8>>2]=l;c[Ea+(k*20|0)+12>>2]=u;c[Ea+(k*20|0)+16>>2]=0;a[Ea+(k*20|0)+1>>0]=0}else k=Di(Ja,108,v,l,u)|0;if(!(a[(c[Ja>>2]|0)+81>>0]|0)){Ea=c[Ja+104>>2]|0;a[Ea+(k*20|0)+1>>0]=-3;c[Ea+(k*20|0)+16>>2]=1}aa:do if(n|0){k=c[Ja>>2]|0;if(!(a[k+81>>0]|0)){k=(c[o>>2]|0)+-1|0;l=c[Ja+104>>2]|0;m=l+(k*20|0)+1|0;if(!(a[m>>0]|0)){c[l+(k*20|0)+16>>2]=n;a[m>>0]=-9;break}else{Ei(Ja,l+(k*20|0)|0,n,-9);break}}if(c[k+480>>2]|0)break;Ea=(c[n>>2]|0)+-1|0;c[n>>2]=Ea;if(Ea|0)break;k=c[n+12>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,n);break aa}l=n;if((c[k+304>>2]|0)>>>0>l>>>0)break;if((c[k+308>>2]|0)>>>0<=l>>>0)break;Ea=k+300|0;c[n>>2]=c[Ea>>2];c[Ea>>2]=n;break aa}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{Ea=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-Ea;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);k=c[(c[z>>2]|0)+8>>2]|0;l=c[o>>2]|0;if((c[p>>2]|0)>(l|0)){c[o>>2]=l+1;Ea=c[Ja+104>>2]|0;a[Ea+(l*20|0)>>0]=93;b[Ea+(l*20|0)+2>>1]=0;c[Ea+(l*20|0)+4>>2]=v;c[Ea+(l*20|0)+8>>2]=k;c[Ea+(l*20|0)+12>>2]=0;c[Ea+(l*20|0)+16>>2]=0;a[Ea+(l*20|0)+1>>0]=0}else Di(Ja,93,v,k,0)|0;k=c[o>>2]|0;if((c[p>>2]|0)>(k|0)){c[o>>2]=k+1;Ea=c[Ja+104>>2]|0;a[Ea+(k*20|0)>>0]=117;b[Ea+(k*20|0)+2>>1]=0;c[Ea+(k*20|0)+4>>2]=v;c[Ea+(k*20|0)+8>>2]=0;c[Ea+(k*20|0)+12>>2]=0;c[Ea+(k*20|0)+16>>2]=0;a[Ea+(k*20|0)+1>>0]=0}else Di(Ja,117,v,0,0)|0;if((a[f+199>>0]|0)!=2)break;do if(q){k=c[w>>2]|0;m=59952;l=59952}else{if(c[s>>2]&32){Ea=r+55|0;k=c[w>>2]|0;if(((d[Ea>>0]|d[Ea+1>>0]<<8)&3)==2){m=59952;l=59952;break}}else k=c[w>>2]|0;m=44411;l=c[r>>2]|0}while(0);c[Ca>>2]=k;c[Ca+4>>2]=m;c[Ca+8>>2]=l;nk(f,0,44393,Ca)}else Fa=1752;while(0);do if((Fa|0)==1752){do if(c[y>>2]|0){ba:do if((n|0)>0){k=0;do{if(c[(c[m+(k<<4)+4>>2]|0)+4>>2]&32|0)break ba;k=k+1|0}while((k|0)<(n|0))}else k=0;while(0);if((k|0)!=(n|0)){m=0;break}m=o+1|0;c[S>>2]=m;k=Ja+108|0;l=c[k>>2]|0;if((c[Ja+112>>2]|0)>(l|0)){c[k>>2]=l+1;Ea=c[Ja+104>>2]|0;a[Ea+(l*20|0)>>0]=70;b[Ea+(l*20|0)+2>>1]=0;c[Ea+(l*20|0)+4>>2]=0;c[Ea+(l*20|0)+8>>2]=m;c[Ea+(l*20|0)+12>>2]=0;c[Ea+(l*20|0)+16>>2]=0;a[Ea+(l*20|0)+1>>0]=0;break}else{Di(Ja,70,0,m,0)|0;break}}else m=0;while(0);ul(f,Ma);n=ql(f,ta,C,j,0,x,0)|0;if(!n)break T;tl(f,m,Ma);do if(m|0){k=Ja+108|0;l=c[k>>2]|0;if((c[Ja+112>>2]|0)>(l|0)){c[k>>2]=l+1;Fa=c[Ja+104>>2]|0;a[Fa+(l*20|0)>>0]=70;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=1;c[Fa+(l*20|0)+8>>2]=m;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0;break}else{Di(Ja,70,1,m,0)|0;break}}while(0);do if((a[n+47>>0]|0)>0){k=c[n+36>>2]|0;l=Ja+108|0;m=c[l>>2]|0;if((c[Ja+112>>2]|0)>(m|0)){c[l>>2]=m+1;Fa=c[Ja+104>>2]|0;a[Fa+(m*20|0)>>0]=11;b[Fa+(m*20|0)+2>>1]=0;c[Fa+(m*20|0)+4>>2]=0;c[Fa+(m*20|0)+8>>2]=k;c[Fa+(m*20|0)+12>>2]=0;c[Fa+(m*20|0)+16>>2]=0;a[Fa+(m*20|0)+1>>0]=0;break}else{Di(Ja,11,0,k,0)|0;break}}while(0);sl(n);p=c[Oa>>2]|0;if((c[T>>2]|0)<=0)break;q=p+108|0;r=p+112|0;s=p+104|0;n=c[z>>2]|0;o=0;while(1){k=c[(c[n>>2]|0)+20>>2]|0;m=c[n+8>>2]|0;if(!k)l=0;else l=c[k>>2]|0;k=c[q>>2]|0;if((c[r>>2]|0)>(k|0)){c[q>>2]=k+1;Fa=c[s>>2]|0;a[Fa+(k*20|0)>>0]=-99;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=m;c[Fa+(k*20|0)+8>>2]=l;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(p,157,m,l,0)|0;k=c[n+4>>2]|0;l=c[p>>2]|0;ca:do if(a[l+81>>0]|0){if(!(c[k+4>>2]&16))break;do if(l|0){if(c[l+480>>2]|0){Xd(l,k);break ca}m=k;if((c[l+304>>2]|0)>>>0>m>>>0)break;if((c[l+308>>2]|0)>>>0<=m>>>0)break;Fa=l+300|0;c[k>>2]=c[Fa>>2];c[Fa>>2]=k;break ca}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{Fa=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}else{Ea=c[s>>2]|0;Fa=(c[q>>2]|0)+-1|0;a[Ea+(Fa*20|0)+1>>0]=-8;c[Ea+(Fa*20|0)+16>>2]=k}while(0);o=o+1|0;if((o|0)>=(c[T>>2]|0))break;else n=n+16|0}}while(0);c[La>>2]=0;Tj(f,X,V,16);rl(f,h,-1,0,0,i,V,V);k=Ja+12|0}while(0);l=c[k>>2]|0;k=0-W|0;if(((c[l+56>>2]|0)+(c[l+60>>2]|0)|0)<0)mk(l,Ja,k);else c[(c[l+64>>2]|0)+(k<<2)>>2]=c[Ja+108>>2];Fa=1796;break E}while(0);k=1}while(0);if((Fa|0)==1796){if((a[Ga+1>>0]|0)==3){c[Ha>>2]=43109;nk(f,0,44319,Ha)}do if(c[La>>2]|0){r=La+4|0;c[Ia>>2]=(c[r>>2]|0)>0?43127:43150;nk(f,0,44319,Ia);p=c[$>>2]|0;I=c[Oa>>2]|0;H=c[La+24>>2]|0;G=c[_>>2]|0;t=G+-1|0;c[_>>2]=t;q=c[La>>2]|0;E=a[i>>0]|0;x=i+4|0;C=c[x>>2]|0;y=c[h>>2]|0;s=La+16|0;k=c[s>>2]|0;do if(k|0){l=c[La+12>>2]|0;o=I+108|0;m=c[o>>2]|0;n=I+112|0;if((c[n>>2]|0)>(m|0)){c[o>>2]=m+1;Ia=c[I+104>>2]|0;a[Ia+(m*20|0)>>0]=12;b[Ia+(m*20|0)+2>>1]=0;c[Ia+(m*20|0)+4>>2]=l;c[Ia+(m*20|0)+8>>2]=k;c[Ia+(m*20|0)+12>>2]=0;c[Ia+(m*20|0)+16>>2]=0;a[Ia+(m*20|0)+1>>0]=0}else Di(I,12,l,k,0)|0;k=c[o>>2]|0;if((c[n>>2]|0)>(k|0)){c[o>>2]=k+1;Ia=c[I+104>>2]|0;a[Ia+(k*20|0)>>0]=11;b[Ia+(k*20|0)+2>>1]=0;c[Ia+(k*20|0)+4>>2]=0;c[Ia+(k*20|0)+8>>2]=H;c[Ia+(k*20|0)+12>>2]=0;c[Ia+(k*20|0)+16>>2]=0;a[Ia+(k*20|0)+1>>0]=0}else Di(I,11,0,H,0)|0;k=c[I+12>>2]|0;l=~c[s>>2];if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,I,l);break}else{c[(c[k+64>>2]|0)+(l<<2)>>2]=c[o>>2];break}}while(0);F=c[La+8>>2]|0;da:do switch(E<<24>>24){case 9:case 10:case 13:{z=p;A=c[i+8>>2]|0;B=0;break}default:{l=f+19|0;k=a[l>>0]|0;if(!(k<<24>>24)){k=f+44|0;o=(c[k>>2]|0)+1|0;c[k>>2]=o;k=0}else{k=k+-1<<24>>24;a[l>>0]=k;o=c[f+148+((k&255)<<2)>>2]|0}if((E|2)<<24>>24==14)if(!(k<<24>>24)){z=f+44|0;A=(c[z>>2]|0)+1|0;c[z>>2]=A;z=0;B=o;break da}else{A=k+-1<<24>>24;a[l>>0]=A;z=0;A=c[f+148+((A&255)<<2)>>2]|0;B=o;break da}if((p|0)==1)if(!(k<<24>>24)){z=f+44|0;A=(c[z>>2]|0)+1|0;c[z>>2]=A;z=1;B=o;break da}else{A=k+-1<<24>>24;a[l>>0]=A;z=1;A=c[f+148+((A&255)<<2)>>2]|0;B=o;break da}else{k=f+32|0;n=c[k>>2]|0;l=f+28|0;m=c[l>>2]|0;if((m|0)<(p|0)){z=f+44|0;A=c[z>>2]|0;c[z>>2]=A+p;z=p;A=A+1|0;B=o;break da}else{c[k>>2]=n+p;c[l>>2]=m-p;z=p;A=n;B=o;break da}}}}while(0);q=(c[q>>2]|0)-(c[r>>2]|0)|0;D=La+32|0;do if(!(a[D>>0]&1)){n=I+108|0;k=c[n>>2]|0;o=I+112|0;if((c[o>>2]|0)>(k|0)){c[n>>2]=k+1;Ia=c[I+104>>2]|0;a[Ia+(k*20|0)>>0]=35;b[Ia+(k*20|0)+2>>1]=0;c[Ia+(k*20|0)+4>>2]=F;c[Ia+(k*20|0)+8>>2]=H;c[Ia+(k*20|0)+12>>2]=0;c[Ia+(k*20|0)+16>>2]=0;a[Ia+(k*20|0)+1>>0]=0}else k=Di(I,35,F,H,0)|0;l=c[h+16>>2]|0;if((l|0)<=0){l=1;v=F;break}m=c[n>>2]|0;if((c[o>>2]|0)>(m|0)){c[n>>2]=m+1;v=c[I+104>>2]|0;a[v+(m*20|0)>>0]=47;b[v+(m*20|0)+2>>1]=0;c[v+(m*20|0)+4>>2]=l;c[v+(m*20|0)+8>>2]=t;c[v+(m*20|0)+12>>2]=1;c[v+(m*20|0)+16>>2]=0;a[v+(m*20|0)+1>>0]=0;l=1;v=F;break}else{Di(I,47,l,t,1)|0;l=1;v=F;break}}else{o=f+44|0;p=(c[o>>2]|0)+1|0;c[o>>2]=p;o=f+40|0;v=c[o>>2]|0;c[o>>2]=v+1;o=I+108|0;do if(c[s>>2]|0){k=c[o>>2]|0;l=I+112|0;if((c[l>>2]|0)>(k|0)){c[o>>2]=k+1;T=c[I+104>>2]|0;a[T+(k*20|0)>>0]=17;T=T+(k*20|0)+1|0;U=T+19|0;do{a[T>>0]=0;T=T+1|0}while((T|0)<(U|0));m=k;n=l;break}else{m=Di(I,17,0,0,0)|0;n=l;break}}else{m=0;n=I+112|0}while(0);k=z+1+q|0;l=c[o>>2]|0;if((c[n>>2]|0)>(l|0)){c[o>>2]=l+1;Ia=c[I+104>>2]|0;a[Ia+(l*20|0)>>0]=116;b[Ia+(l*20|0)+2>>1]=0;c[Ia+(l*20|0)+4>>2]=v;c[Ia+(l*20|0)+8>>2]=p;c[Ia+(l*20|0)+12>>2]=k;c[Ia+(l*20|0)+16>>2]=0;a[Ia+(l*20|0)+1>>0]=0}else Di(I,116,v,p,k)|0;k=c[o>>2]|0;if(m|0){if(!(a[(c[I>>2]|0)+81>>0]|0))l=(c[I+104>>2]|0)+(((m|0)<0?k+-1|0:m)*20|0)|0;else l=59308;c[l+8>>2]=k}if((c[n>>2]|0)>(k|0)){c[o>>2]=k+1;Ia=c[I+104>>2]|0;a[Ia+(k*20|0)>>0]=34;b[Ia+(k*20|0)+2>>1]=0;c[Ia+(k*20|0)+4>>2]=F;c[Ia+(k*20|0)+8>>2]=H;c[Ia+(k*20|0)+12>>2]=0;c[Ia+(k*20|0)+16>>2]=0;a[Ia+(k*20|0)+1>>0]=0}else k=Di(I,34,F,H,0)|0;l=c[h+16>>2]|0;do if((l|0)>0){m=c[o>>2]|0;if((c[n>>2]|0)>(m|0)){c[o>>2]=m+1;h=c[I+104>>2]|0;a[h+(m*20|0)>>0]=47;b[h+(m*20|0)+2>>1]=0;c[h+(m*20|0)+4>>2]=l;c[h+(m*20|0)+8>>2]=t;c[h+(m*20|0)+12>>2]=1;c[h+(m*20|0)+16>>2]=0;a[h+(m*20|0)+1>>0]=0;break}else{Di(I,47,l,t,1)|0;break}}while(0);l=c[o>>2]|0;if((c[n>>2]|0)>(l|0)){c[o>>2]=l+1;h=c[I+104>>2]|0;a[h+(l*20|0)>>0]=126;b[h+(l*20|0)+2>>1]=0;c[h+(l*20|0)+4>>2]=F;c[h+(l*20|0)+8>>2]=p;c[h+(l*20|0)+12>>2]=v;c[h+(l*20|0)+16>>2]=0;a[h+(l*20|0)+1>>0]=0;l=0;break}else{Di(I,126,F,p,v)|0;l=0;break}}while(0);w=k+1|0;u=l+q|0;if((z|0)>0){k=0;l=u+-1|0;do{l=l+((b[y+4+(k*20|0)+16>>1]|0)==0&1)|0;k=k+1|0}while((k|0)!=(z|0));r=I+108|0;s=I+112|0;t=I+104|0;q=z;while(1){m=q;q=q+-1|0;k=b[y+4+(q*20|0)+16>>1]|0;n=k<<16>>16==0;k=n?l:(k&65535)+-1|0;o=q+A|0;p=c[r>>2]|0;if((c[s>>2]|0)>(p|0)){c[r>>2]=p+1;h=c[t>>2]|0;a[h+(p*20|0)>>0]=90;b[h+(p*20|0)+2>>1]=0;c[h+(p*20|0)+4>>2]=v;c[h+(p*20|0)+8>>2]=k;c[h+(p*20|0)+12>>2]=o;c[h+(p*20|0)+16>>2]=0;a[h+(p*20|0)+1>>0]=0}else Di(I,90,v,k,o)|0;if((m|0)<=1)break;else l=l+(n<<31>>31)|0}}ea:do switch(E<<24>>24){case 12:case 14:{l=I+108|0;k=c[l>>2]|0;m=I+112|0;if((c[m>>2]|0)>(k|0)){c[l>>2]=k+1;i=c[I+104>>2]|0;a[i+(k*20|0)>>0]=90;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=v;c[i+(k*20|0)+8>>2]=u;c[i+(k*20|0)+12>>2]=A;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0}else Di(I,90,v,u,A)|0;k=c[l>>2]|0;if((c[m>>2]|0)>(k|0)){c[l>>2]=k+1;i=c[I+104>>2]|0;a[i+(k*20|0)>>0]=121;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=C;c[i+(k*20|0)+8>>2]=B;c[i+(k*20|0)+12>>2]=0;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0}else Di(I,121,C,B,0)|0;k=c[l>>2]|0;if((c[m>>2]|0)>(k|0)){c[l>>2]=k+1;i=c[I+104>>2]|0;a[i+(k*20|0)>>0]=122;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=C;c[i+(k*20|0)+8>>2]=A;c[i+(k*20|0)+12>>2]=B;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0}else Di(I,122,C,A,B)|0;k=c[l>>2]|0;if((k|0)<=0)break ea;b[(c[I+104>>2]|0)+((k+-1|0)*20|0)+2>>1]=8;break}case 11:{o=c[i+16>>2]|0;p=I+108|0;k=c[p>>2]|0;q=I+112|0;if((c[q>>2]|0)>(k|0)){c[p>>2]=k+1;i=c[I+104>>2]|0;a[i+(k*20|0)>>0]=92;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=A;c[i+(k*20|0)+8>>2]=z;c[i+(k*20|0)+12>>2]=B;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0}else k=Di(I,92,A,z,B)|0;l=c[I>>2]|0;fa:do if(!(a[l+81>>0]|0)){if((k|0)<0)k=(c[p>>2]|0)+-1|0;l=c[I+104>>2]|0;m=l+(k*20|0)|0;do if((z|0)<=-1){n=l+(k*20|0)+1|0;if(a[n>>0]|0)break;if((z|0)==-3){c[l+(k*20|0)+16>>2]=o;a[n>>0]=-3;break fa}if(!o)break fa;c[l+(k*20|0)+16>>2]=o;a[n>>0]=z;if((z|0)!=-12)break fa;i=o+12|0;c[i>>2]=(c[i>>2]|0)+1;break fa}while(0);Ei(I,m,o,z)}else{if((z|0)==-12)break;kg(l,z,o)}while(0);k=c[p>>2]|0;if((c[q>>2]|0)>(k|0)){c[p>>2]=k+1;i=c[I+104>>2]|0;a[i+(k*20|0)>>0]=-124;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=C;c[i+(k*20|0)+8>>2]=B;c[i+(k*20|0)+12>>2]=A;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0}else k=Di(I,132,C,B,A)|0;if(a[(c[I>>2]|0)+81>>0]|0)break ea;i=c[I+104>>2]|0;a[i+(k*20|0)+1>>0]=-3;c[i+(k*20|0)+16>>2]=z;break}case 10:break;case 9:{k=c[i+8>>2]|0;l=I+108|0;m=c[l>>2]|0;if((c[I+112>>2]|0)>(m|0)){c[l>>2]=m+1;i=c[I+104>>2]|0;a[i+(m*20|0)>>0]=81;b[i+(m*20|0)+2>>1]=0;c[i+(m*20|0)+4>>2]=k;c[i+(m*20|0)+8>>2]=z;c[i+(m*20|0)+12>>2]=0;c[i+(m*20|0)+16>>2]=0;a[i+(m*20|0)+1>>0]=0;break ea}else{Di(I,81,k,z,0)|0;break ea}}default:{k=c[x>>2]|0;l=I+108|0;m=c[l>>2]|0;if((c[I+112>>2]|0)>(m|0)){c[l>>2]=m+1;i=c[I+104>>2]|0;a[i+(m*20|0)>>0]=14;b[i+(m*20|0)+2>>1]=0;c[i+(m*20|0)+4>>2]=k;c[i+(m*20|0)+8>>2]=0;c[i+(m*20|0)+12>>2]=0;c[i+(m*20|0)+16>>2]=0;a[i+(m*20|0)+1>>0]=0;break ea}else{Di(I,14,k,0,0)|0;break ea}}}while(0);do if(B|0){if(E<<24>>24!=11){l=f+19|0;k=a[l>>0]|0;if(A){if((k&255)>=8)break;i=k+1<<24>>24;a[l>>0]=i;c[f+148+((k&255)<<2)>>2]=A;k=i}if((k&255)>=8)break;a[l>>0]=k+1<<24>>24;c[f+148+((k&255)<<2)>>2]=B;break}do if((z|0)==1){if(!A)break;k=f+19|0;l=a[k>>0]|0;if((l&255)>=8)break;a[k>>0]=l+1<<24>>24;c[f+148+((l&255)<<2)>>2]=A}else{k=f+28|0;if((c[k>>2]|0)>=(z|0))break;c[k>>2]=z;c[f+32>>2]=A}while(0);k=f+19|0;l=a[k>>0]|0;if((l&255)>=8)break;a[k>>0]=l+1<<24>>24;c[f+148+((l&255)<<2)>>2]=B}while(0);o=I+12|0;l=c[o>>2]|0;k=0-G|0;if(((c[l+56>>2]|0)+(c[l+60>>2]|0)|0)<0){mk(l,I,k);n=I+108|0}else{n=I+108|0;c[(c[l+64>>2]|0)+(k<<2)>>2]=c[n>>2]}k=c[n>>2]|0;m=I+112|0;l=(c[m>>2]|0)>(k|0);do if(!(a[D>>0]&1))if(l){c[n>>2]=k+1;i=c[I+104>>2]|0;a[i+(k*20|0)>>0]=5;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=F;c[i+(k*20|0)+8>>2]=w;c[i+(k*20|0)+12>>2]=0;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0;break}else{Di(I,5,F,w,0)|0;break}else if(l){c[n>>2]=k+1;i=c[I+104>>2]|0;a[i+(k*20|0)>>0]=3;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=F;c[i+(k*20|0)+8>>2]=w;c[i+(k*20|0)+12>>2]=0;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0;break}else{Di(I,3,F,w,0)|0;break}while(0);k=c[La+12>>2]|0;do if(k|0){l=c[n>>2]|0;if((c[m>>2]|0)>(l|0)){c[n>>2]=l+1;i=c[I+104>>2]|0;a[i+(l*20|0)>>0]=66;b[i+(l*20|0)+2>>1]=0;c[i+(l*20|0)+4>>2]=k;c[i+(l*20|0)+8>>2]=0;c[i+(l*20|0)+12>>2]=0;c[i+(l*20|0)+16>>2]=0;a[i+(l*20|0)+1>>0]=0;break}else{Di(I,66,k,0,0)|0;break}}while(0);l=c[o>>2]|0;k=~H;if(((c[l+56>>2]|0)+(c[l+60>>2]|0)|0)<0){mk(l,I,k);break}else{c[(c[l+64>>2]|0)+(k<<2)>>2]=c[n>>2];break}}while(0);l=c[Ja+12>>2]|0;k=0-aa|0;if(((c[l+56>>2]|0)+(c[l+60>>2]|0)|0)<0)mk(l,Ja,k);else c[(c[l+64>>2]|0)+(k<<2)>>2]=c[Ja+108>>2];k=(c[Ka>>2]|0)>0&1}if(!j){m=k;break c}ri(Na,j);m=k;break c}else w=j;while(0);y=c[f>>2]|0;c[Da>>2]=c[i>>2];c[Da+4>>2]=c[i+4>>2];c[Da+8>>2]=c[i+8>>2];c[Da+12>>2]=c[i+12>>2];c[Da+16>>2]=c[i+16>>2];c[Da+20>>2]=c[i+20>>2];j=(c[w+48>>2]|0)==0;ga:do if(j?(ka=w+60|0,(c[ka>>2]|0)==0):0){j=c[Oa>>2]|0;ha:do if(!j){if((c[f+116>>2]|0)==0?(b[y+76>>1]&8)==0:0)a[f+23>>0]=1;ia:do if(c[y+272>>2]|0)if(!(a[y+81>>0]|0))Fa=393;else{x=0;break ha}else{do if((e[y+276>>1]|0)>=224){j=y+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];Na=y+284|0;c[Na>>2]=(c[Na>>2]|0)+1;break ia}j=y+296|0;k=c[j>>2]|0;if(!k){j=y+292|0;break}else{c[j>>2]=c[k>>2];Na=y+284|0;c[Na>>2]=(c[Na>>2]|0)+1;break ia}}else j=y+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;Fa=393}while(0);if((Fa|0)==393)k=_d(y,224,0)|0;if(!k)x=0;else{T=k+104|0;U=T+120|0;do{c[T>>2]=0;T=T+4|0}while((T|0)<(U|0));c[k>>2]=y;j=y+4|0;l=c[j>>2]|0;if(l|0)c[l+4>>2]=k;c[k+8>>2]=l;c[k+4>>2]=0;c[j>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=f;c[Oa>>2]=k;Di(k,61,0,1,0)|0;x=k}}else x=j;while(0);if((a[Da>>0]|0)==12){j=c[Da+4>>2]|0;k=c[c[h>>2]>>2]|0;l=x+108|0;m=c[l>>2]|0;if((c[x+112>>2]|0)>(m|0)){c[l>>2]=m+1;Na=c[x+104>>2]|0;a[Na+(m*20|0)>>0]=113;b[Na+(m*20|0)+2>>1]=0;c[Na+(m*20|0)+4>>2]=j;c[Na+(m*20|0)+8>>2]=k;c[Na+(m*20|0)+12>>2]=0;c[Na+(m*20|0)+16>>2]=0;a[Na+(m*20|0)+1>>0]=0}else Di(x,113,j,k,0)|0;a[Da>>0]=14}j=c[za>>2]|0;if(j&1024|0){n=(c[h+60>>2]|0)==0;l=n&1;j=h;k=1;while(1){m=c[j+52>>2]|0;if(!m)break;else{j=m;k=k+l|0}}c[ga>>2]=k;c[ga+4>>2]=(k|0)==1?59952:43321;nk(f,0,43298,ga);k=k&65535;if(!n){rl(f,j,-1,0,0,Da,1,1);k=0;j=0;Fa=640;break}while(1){rl(f,j,-1,0,0,Da,1,1);b[j+6>>1]=k;j=c[j+56>>2]|0;if(!j){k=0;j=0;Fa=640;break ga}}}do if(!(j&8192)){if(c[S>>2]|0){m=Bl(f,h,i)|0;break ga}if(!(c[w+52>>2]|0)){nk(f,1,43243,ea);nk(f,1,43258,fa)}p=h+4|0;switch(a[p>>0]|0){case -128:{o=h+12|0;k=w+12|0;c[k>>2]=c[o>>2];m=h+16|0;l=w+16|0;c[l>>2]=c[m>>2];Na=h+60|0;c[ka>>2]=c[Na>>2];j=kj(f,w,Da)|0;c[Na>>2]=0;if(j|0){k=0;Fa=640;break ga}c[ca>>2]=0;k=c[k>>2]|0;c[o>>2]=k;c[m>>2]=c[l>>2];do if(k){p=x+108|0;j=c[p>>2]|0;q=x+112|0;if((c[q>>2]|0)>(j|0)){c[p>>2]=j+1;Na=c[x+104>>2]|0;a[Na+(j*20|0)>>0]=20;b[Na+(j*20|0)+2>>1]=0;c[Na+(j*20|0)+4>>2]=k;c[Na+(j*20|0)+8>>2]=0;c[Na+(j*20|0)+12>>2]=0;c[Na+(j*20|0)+16>>2]=0;a[Na+(j*20|0)+1>>0]=0}else j=Di(x,20,k,0,0)|0;n=c[m>>2]|0;if(!n){u=j;break}k=c[o>>2]|0;l=n+1|0;m=c[p>>2]|0;if((c[q>>2]|0)>(m|0)){c[p>>2]=m+1;u=c[x+104>>2]|0;a[u+(m*20|0)>>0]=-104;b[u+(m*20|0)+2>>1]=0;c[u+(m*20|0)+4>>2]=k;c[u+(m*20|0)+8>>2]=l;c[u+(m*20|0)+12>>2]=n;c[u+(m*20|0)+16>>2]=0;a[u+(m*20|0)+1>>0]=0;u=j;break}else{Di(x,152,k,l,n)|0;u=j;break}}else u=0;while(0);nk(f,1,41509,ia);j=kj(f,h,Da)|0;n=c[ca>>2]|0;c[ca>>2]=w;t=h+6|0;k=b[t>>1]|0;l=b[w+6>>1]|0;m=k<<16>>16;o=l<<16>>16;do if(k<<16>>16>16){if((m+49|0)<(o|0)){k=l;break}if((m+31|0)<(o|0)){k=o+1&65535;break}else{k=(d[18112+(o-m)>>0]|0)+o&65535;break}}else{if((o+49|0)<(m|0))break;if((o+31|0)<(m|0)){k=m+1&65535;break}else{k=(d[18112+(m-o)>>0]|0)+m&65535;break}}while(0);b[t>>1]=k;k=c[ka>>2]|0;do if(k|0){Na=(uk(c[k+12>>2]|0,Ea)|0)!=0;k=c[Ea>>2]|0;if(!(Na&(k|0)>0))break;r=b[t>>1]|0;l=((k|0)<0)<<31>>31;s=k>>>0<8;do if(s){if(k>>>0<2){m=0;break}m=40;p=k;o=l;do{m=(m&65535)+65526|0;p=cw(p|0,o|0,1)|0;o=L()|0}while(o>>>0<0|(o|0)==0&p>>>0<8);o=m&65535;m=p;Fa=450}else{if(k>>>0>255){m=40;q=k;o=l;do{m=(m&65535)+40|0;Na=q;q=bw(q|0,o|0,4)|0;Ma=o;o=L()|0}while(Ma>>>0>0|(Ma|0)==0&Na>>>0>4095);p=m&65535;m=q}else{p=40;o=l;m=k}if(!(o>>>0>0|(o|0)==0&m>>>0>15)){o=p;Fa=450;break}do{p=(p&65535)+10&65535;Na=m;m=bw(m|0,o|0,1)|0;Ma=o;o=L()|0}while(Ma>>>0>0|(Ma|0)==0&Na>>>0>31);o=p;Fa=450}while(0);if((Fa|0)==450)m=(o&65535)+65526+(e[3648+((m&7)<<1)>>1]|0)&65535;if(r<<16>>16<=m<<16>>16)break;do if(s){if(k>>>0<2){k=0;break}m=40;do{m=(m&65535)+65526|0;k=cw(k|0,l|0,1)|0;l=L()|0}while(l>>>0<0|(l|0)==0&k>>>0<8);m=m&65535;Fa=465}else{if(k>>>0>255){m=40;do{m=(m&65535)+40|0;Na=k;k=bw(k|0,l|0,4)|0;Ma=l;l=L()|0}while(Ma>>>0>0|(Ma|0)==0&Na>>>0>4095);m=m&65535}else m=40;if(!(l>>>0>0|(l|0)==0&k>>>0>15)){Fa=465;break}do{m=(m&65535)+10&65535;Na=k;k=bw(k|0,l|0,1)|0;Ma=l;l=L()|0}while(Ma>>>0>0|(Ma|0)==0&Na>>>0>31);Fa=465}while(0);if((Fa|0)==465)k=(m&65535)+65526+(e[3648+((k&7)<<1)>>1]|0)&65535;b[t>>1]=k}while(0);if(u|0){l=c[x+108>>2]|0;if(!(a[(c[x>>2]|0)+81>>0]|0))k=(c[x+104>>2]|0)+(((u|0)<0?l+-1|0:u)*20|0)|0;else k=59308;c[k+8>>2]=l}break}case 127:case -127:{if((a[Da>>0]|0)==1)s=c[Da+4>>2]|0;else{k=f+40|0;l=c[k>>2]|0;c[k>>2]=l+1;k=x+108|0;j=c[k>>2]|0;if((c[x+112>>2]|0)>(j|0)){c[k>>2]=j+1;Na=c[x+104>>2]|0;a[Na+(j*20|0)>>0]=113;b[Na+(j*20|0)+2>>1]=0;c[Na+(j*20|0)+4>>2]=l;c[Na+(j*20|0)+8>>2]=0;c[Na+(j*20|0)+12>>2]=0;c[Na+(j*20|0)+16>>2]=0;a[Na+(j*20|0)+1>>0]=0}else j=Di(x,113,l,0,0)|0;c[h+24>>2]=j;j=h;while(1){k=c[j+56>>2]|0;if(!k)break;else j=k}s=j+8|0;c[s>>2]=c[s>>2]|32;s=l}a[Ea>>0]=1;c[Ea+4>>2]=s;c[Ea+16>>2]=0;c[Ea+8>>2]=0;c[Ea+12>>2]=0;j=kj(f,w,Ea)|0;if(j|0){k=0;Fa=640;break ga}Na=a[p>>0]|0;c[ca>>2]=0;q=h+60|0;r=c[q>>2]|0;c[q>>2]=0;a[Ea>>0]=Na<<24>>24==-127?2:1;switch(Na<<24>>24){case -128:{j=41509;break}case -126:{j=41519;break}case -127:{j=41529;break}default:j=41536}c[ha>>2]=j;nk(f,1,43277,ha);j=kj(f,h,Ea)|0;k=c[S>>2]|0;if(k|0)ri(y,k);n=c[ca>>2]|0;c[ca>>2]=w;c[S>>2]=0;if((a[p>>0]|0)==127){p=h+6|0;k=b[p>>1]|0;l=b[w+6>>1]|0;m=k<<16>>16;o=l<<16>>16;do if(k<<16>>16>16){if((m+49|0)<(o|0)){k=l;break}if((m+31|0)<(o|0)){k=o+1&65535;break}else{k=(d[18112+(o-m)>>0]|0)+o&65535;break}}else{if((o+49|0)<(m|0))break;if((o+31|0)<(m|0)){k=m+1&65535;break}else{k=(d[18112+(m-o)>>0]|0)+m&65535;break}}while(0);b[p>>1]=k}k=c[q>>2]|0;if(k|0)ni(y,k);c[q>>2]=r;c[h+12>>2]=0;c[h+16>>2]=0;do if((a[Da>>0]|0)!=1){q=f+56|0;p=c[q>>2]|0;l=p+-1|0;m=p+-2|0;c[q>>2]=m;pl(f,h,l);q=x+108|0;k=c[q>>2]|0;r=x+112|0;if((c[r>>2]|0)>(k|0)){c[q>>2]=k+1;Na=c[x+104>>2]|0;a[Na+(k*20|0)>>0]=36;b[Na+(k*20|0)+2>>1]=0;c[Na+(k*20|0)+4>>2]=s;c[Na+(k*20|0)+8>>2]=l;c[Na+(k*20|0)+12>>2]=0;c[Na+(k*20|0)+16>>2]=0;a[Na+(k*20|0)+1>>0]=0}else Di(x,36,s,l,0)|0;o=c[q>>2]|0;rl(f,h,s,0,0,Da,m,l);m=x+12|0;k=c[m>>2]|0;l=1-p|0;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0)mk(k,x,l);else c[(c[k+64>>2]|0)+(l<<2)>>2]=c[q>>2];k=c[q>>2]|0;if((c[r>>2]|0)>(k|0)){c[q>>2]=k+1;Na=c[x+104>>2]|0;a[Na+(k*20|0)>>0]=5;b[Na+(k*20|0)+2>>1]=0;c[Na+(k*20|0)+4>>2]=s;c[Na+(k*20|0)+8>>2]=o;c[Na+(k*20|0)+12>>2]=0;c[Na+(k*20|0)+16>>2]=0;a[Na+(k*20|0)+1>>0]=0}else Di(x,5,s,o,0)|0;l=c[m>>2]|0;k=0-p|0;if(((c[l+56>>2]|0)+(c[l+60>>2]|0)|0)<0)mk(l,x,k);else c[(c[l+64>>2]|0)+(k<<2)>>2]=c[q>>2];k=c[q>>2]|0;if((c[r>>2]|0)>(k|0)){c[q>>2]=k+1;Na=c[x+104>>2]|0;a[Na+(k*20|0)>>0]=117;b[Na+(k*20|0)+2>>1]=0;c[Na+(k*20|0)+4>>2]=s;c[Na+(k*20|0)+8>>2]=0;c[Na+(k*20|0)+12>>2]=0;c[Na+(k*20|0)+16>>2]=0;a[Na+(k*20|0)+1>>0]=0;break}else{Di(x,117,s,0,0)|0;break}}while(0);break}default:{u=f+40|0;t=c[u>>2]|0;s=t+1|0;c[u>>2]=t+2;u=x+108|0;j=c[u>>2]|0;v=x+112|0;if((c[v>>2]|0)>(j|0)){c[u>>2]=j+1;Na=c[x+104>>2]|0;a[Na+(j*20|0)>>0]=113;b[Na+(j*20|0)+2>>1]=0;c[Na+(j*20|0)+4>>2]=t;c[Na+(j*20|0)+8>>2]=0;c[Na+(j*20|0)+12>>2]=0;c[Na+(j*20|0)+16>>2]=0;a[Na+(j*20|0)+1>>0]=0}else j=Di(x,113,t,0,0)|0;c[h+24>>2]=j;j=h;while(1){k=c[j+56>>2]|0;if(!k)break;else j=k}k=j+8|0;c[k>>2]=c[k>>2]|32;a[Ea>>0]=1;k=Ea+4|0;c[k>>2]=t;c[Ea+16>>2]=0;c[Ea+8>>2]=0;c[Ea+12>>2]=0;j=kj(f,w,Ea)|0;if(j|0){k=0;Fa=640;break ga}j=c[u>>2]|0;if((c[v>>2]|0)>(j|0)){c[u>>2]=j+1;Na=c[x+104>>2]|0;a[Na+(j*20|0)>>0]=113;b[Na+(j*20|0)+2>>1]=0;c[Na+(j*20|0)+4>>2]=s;c[Na+(j*20|0)+8>>2]=0;c[Na+(j*20|0)+12>>2]=0;c[Na+(j*20|0)+16>>2]=0;a[Na+(j*20|0)+1>>0]=0}else j=Di(x,113,s,0,0)|0;c[h+28>>2]=j;c[ca>>2]=0;m=h+60|0;o=c[m>>2]|0;c[m>>2]=0;c[k>>2]=s;switch(a[p>>0]|0){case -128:{j=41509;break}case -126:{j=41519;break}case -127:{j=41529;break}default:j=41536}c[ja>>2]=j;nk(f,1,43277,ja);j=kj(f,h,Ea)|0;n=c[ca>>2]|0;c[ca>>2]=w;l=h+6|0;k=b[w+6>>1]|0;if((b[l>>1]|0)>k<<16>>16)b[l>>1]=k;k=c[m>>2]|0;if(k|0)ni(y,k);c[m>>2]=o;k=f+56|0;r=c[k>>2]|0;o=r+-1|0;p=r+-2|0;c[k>>2]=p;pl(f,h,o);k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;Na=c[x+104>>2]|0;a[Na+(k*20|0)>>0]=36;b[Na+(k*20|0)+2>>1]=0;c[Na+(k*20|0)+4>>2]=t;c[Na+(k*20|0)+8>>2]=o;c[Na+(k*20|0)+12>>2]=0;c[Na+(k*20|0)+16>>2]=0;a[Na+(k*20|0)+1>>0]=0}else Di(x,36,t,o,0)|0;m=f+19|0;k=a[m>>0]|0;if(!(k<<24>>24)){Na=f+44|0;l=(c[Na>>2]|0)+1|0;c[Na>>2]=l}else{l=k+-1<<24>>24;a[m>>0]=l;l=c[f+148+((l&255)<<2)>>2]|0}k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;q=c[x+104>>2]|0;a[q+(k*20|0)>>0]=127;b[q+(k*20|0)+2>>1]=0;c[q+(k*20|0)+4>>2]=t;c[q+(k*20|0)+8>>2]=l;c[q+(k*20|0)+12>>2]=0;c[q+(k*20|0)+16>>2]=0;a[q+(k*20|0)+1>>0]=0;q=k}else q=Di(x,127,t,l,0)|0;k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;Na=c[x+104>>2]|0;a[Na+(k*20|0)>>0]=28;b[Na+(k*20|0)+2>>1]=0;c[Na+(k*20|0)+4>>2]=s;c[Na+(k*20|0)+8>>2]=p;c[Na+(k*20|0)+12>>2]=l;c[Na+(k*20|0)+16>>2]=0;a[Na+(k*20|0)+1>>0]=0}else k=Di(x,28,s,p,l)|0;if(!(a[(c[x>>2]|0)+81>>0]|0)){Na=c[x+104>>2]|0;a[Na+(k*20|0)+1>>0]=-3;c[Na+(k*20|0)+16>>2]=0}do if(l|0){k=a[m>>0]|0;if((k&255)>=8)break;a[m>>0]=k+1<<24>>24;c[f+148+((k&255)<<2)>>2]=l}while(0);rl(f,h,t,0,0,Da,p,o);m=x+12|0;k=c[m>>2]|0;l=1-r|0;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0)mk(k,x,l);else c[(c[k+64>>2]|0)+(l<<2)>>2]=c[u>>2];k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;Na=c[x+104>>2]|0;a[Na+(k*20|0)>>0]=5;b[Na+(k*20|0)+2>>1]=0;c[Na+(k*20|0)+4>>2]=t;c[Na+(k*20|0)+8>>2]=q;c[Na+(k*20|0)+12>>2]=0;c[Na+(k*20|0)+16>>2]=0;a[Na+(k*20|0)+1>>0]=0}else Di(x,5,t,q,0)|0;l=c[m>>2]|0;k=0-r|0;if(((c[l+56>>2]|0)+(c[l+60>>2]|0)|0)<0)mk(l,x,k);else c[(c[l+64>>2]|0)+(k<<2)>>2]=c[u>>2];k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;Na=c[x+104>>2]|0;a[Na+(k*20|0)>>0]=117;b[Na+(k*20|0)+2>>1]=0;c[Na+(k*20|0)+4>>2]=s;c[Na+(k*20|0)+8>>2]=0;c[Na+(k*20|0)+12>>2]=0;c[Na+(k*20|0)+16>>2]=0;a[Na+(k*20|0)+1>>0]=0}else Di(x,117,s,0,0)|0;k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;Na=c[x+104>>2]|0;a[Na+(k*20|0)>>0]=117;b[Na+(k*20|0)+2>>1]=0;c[Na+(k*20|0)+4>>2]=t;c[Na+(k*20|0)+8>>2]=0;c[Na+(k*20|0)+12>>2]=0;c[Na+(k*20|0)+16>>2]=0;a[Na+(k*20|0)+1>>0]=0}else Di(x,117,t,0,0)|0}}if(c[h+56>>2]|0)break;m=f+212|0;k=c[m>>2]|0;if(!k)k=0;else{l=c[Oa>>2]|0;if((k|0)<0)k=(c[l+108>>2]|0)+-1|0;if(!(a[(c[l>>2]|0)+81>>0]|0))k=(c[l+104>>2]|0)+(k*20|0)|0;else k=59308;k=c[k+8>>2]|0}c[m>>2]=k}else{Al(f,h,Da);j=0;n=0}while(0);if(c[za>>2]&32){w=c[c[h>>2]>>2]|0;o=w+1|0;p=o*5|0;m=p+20|0;q=y+272|0;ja:do if(c[q>>2]|0)if(!(a[y+81>>0]|0))Fa=589;else{k=n;j=7;Fa=640;break ga}else{do if(!(0<0|(0==0?(e[y+276>>1]|0)>>>0>>0:0))){k=y+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];v=y+284|0;c[v>>2]=(c[v>>2]|0)+1;v=l;break ja}k=y+296|0;l=c[k>>2]|0;if(!l){k=y+292|0;break}else{c[k>>2]=c[l>>2];v=y+284|0;c[v>>2]=(c[v>>2]|0)+1;v=l;break ja}}else k=y+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;Fa=589}while(0);if((Fa|0)==589)v=_d(y,m,0)|0;if(!v){k=y+81|0;do if(!(a[k>>0]|0)){if(a[y+82>>0]|0)break;a[k>>0]=1;if((c[y+180>>2]|0)>0)c[y+264>>2]=1;c[q>>2]=(c[q>>2]|0)+1;k=c[y+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);if(!v){k=n;j=7;Fa=640;break}else{u=0;t=1}}else{c[v+16>>2]=v+20+(o<<2);b[v+6>>1]=w;b[v+8>>1]=o;a[v+4>>0]=a[y+78>>0]|0;c[v+12>>2]=y;c[v>>2]=1;gw(v+24|0,0,p+-4|0)|0;u=v;t=0}if((w|0)>0){m=y+8|0;k=v+20|0;l=0;while(1){Na=Cl(f,h,l)|0;c[k>>2]=Na;if(!Na)c[k>>2]=c[m>>2];l=l+1|0;if((l|0)==(w|0))break;else k=k+4|0}}q=x+104|0;r=u+12|0;s=u;p=h;do{o=p+24|0;m=c[o>>2]|0;k=(m|0)<0;do if(t){if(k)break;do if(!(a[(c[x>>2]|0)+81>>0]|0)){k=c[q>>2]|0;c[k+(m*20|0)+8>>2]=w;c[v>>2]=(c[v>>2]|0)+1;if(!(a[k+(m*20|0)+1>>0]|0))break;Ei(x,k+(m*20|0)|0,u,-9)}else{c[14829]=w;c[v>>2]=(c[v>>2]|0)+1}while(0);c[o>>2]=-1;k=p+28|0;l=c[k>>2]|0;if((l|0)<0)break;do if(!(a[(c[x>>2]|0)+81>>0]|0)){m=c[q>>2]|0;c[m+(l*20|0)+8>>2]=w;c[v>>2]=(c[v>>2]|0)+1;if(!(a[m+(l*20|0)+1>>0]|0))break;Ei(x,m+(l*20|0)|0,u,-9)}else{c[14829]=w;c[v>>2]=(c[v>>2]|0)+1}while(0);c[k>>2]=-1}else{if(k)break;k=c[x>>2]|0;ka:do if(!(a[k+81>>0]|0)){k=c[q>>2]|0;c[k+(m*20|0)+8>>2]=w;c[v>>2]=(c[v>>2]|0)+1;l=k+(m*20|0)+1|0;if(!(a[l>>0]|0)){c[k+(m*20|0)+16>>2]=u;a[l>>0]=-9;break}else{Ei(x,k+(m*20|0)|0,u,-9);break}}else{c[14829]=w;c[v>>2]=(c[v>>2]|0)+1;if(c[k+480>>2]|0)break;Na=(c[u>>2]|0)+-1|0;c[u>>2]=Na;if(Na|0)break;k=c[r>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,u);break ka}if((c[k+304>>2]|0)>>>0>s>>>0)break;if((c[k+308>>2]|0)>>>0<=s>>>0)break;Na=k+300|0;c[u>>2]=c[Na>>2];c[Na>>2]=u;break ka}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](u);break}else{Na=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-Na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);break}}while(0);c[o>>2]=-1;o=p+28|0;m=c[o>>2]|0;if((m|0)<0)break;k=c[x>>2]|0;la:do if(!(a[k+81>>0]|0)){k=c[q>>2]|0;c[k+(m*20|0)+8>>2]=w;c[v>>2]=(c[v>>2]|0)+1;l=k+(m*20|0)+1|0;if(!(a[l>>0]|0)){c[k+(m*20|0)+16>>2]=u;a[l>>0]=-9;break}else{Ei(x,k+(m*20|0)|0,u,-9);break}}else{c[14829]=w;c[v>>2]=(c[v>>2]|0)+1;if(c[k+480>>2]|0)break;Na=(c[u>>2]|0)+-1|0;c[u>>2]=Na;if(Na|0)break;k=c[r>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,u);break la}if((c[k+304>>2]|0)>>>0>s>>>0)break;if((c[k+308>>2]|0)>>>0<=s>>>0)break;Na=k+300|0;c[u>>2]=c[Na>>2];c[Na>>2]=u;break la}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](u);break}else{Na=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-Na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);break}}while(0);c[o>>2]=-1}while(0);p=c[p+52>>2]|0}while((p|0)!=0);Na=(c[v>>2]|0)+-1|0;c[v>>2]=Na;if(Na|0){k=n;Fa=640;break}k=c[v+12>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,u);k=n;Fa=640;break ga}l=v;if((c[k+304>>2]|0)>>>0>l>>>0)break;if((c[k+308>>2]|0)>>>0<=l>>>0)break;k=k+300|0;c[v>>2]=c[k>>2];c[k>>2]=v;k=n;Fa=640;break ga}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](u);k=n;Fa=640;break}else{k=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);k=n;Fa=640;break}}else{k=n;Fa=640}}else Fa=374;while(0);if((Fa|0)==374){k=j?43237:43150;switch(a[h+4>>0]|0){case -128:{j=41509;break}case -126:{j=41519;break}case -127:{j=41529;break}default:j=41536}c[ba>>2]=k;c[ba+4>>2]=j;cd(f,43195,ba);k=0;j=1;Fa=640}if((Fa|0)==640){c[i+8>>2]=c[Da+8>>2];c[i+12>>2]=c[Da+12>>2];if(!k)m=j;else{pi(y,k,1);m=j}}if(c[h+56>>2]|0){Oa=m;Ra=Pa;return Oa|0}l=f+212|0;j=c[l>>2]|0;if(!j)j=0;else{k=c[Oa>>2]|0;if((j|0)<0)j=(c[k+108>>2]|0)+-1|0;if(!(a[(c[k>>2]|0)+81>>0]|0))j=(c[k+104>>2]|0)+(j*20|0)|0;else j=59308;j=c[j+8>>2]|0}c[l>>2]=j;Oa=m;Ra=Pa;return Oa|0}else m=1;while(0);j=c[Ma+28>>2]|0;do if(j|0){if(Na|0){if(c[Na+480>>2]|0){Xd(Na,j);break}i=j;if((c[Na+304>>2]|0)>>>0<=i>>>0?(c[Na+308>>2]|0)>>>0>i>>>0:0){i=Na+300|0;c[j>>2]=c[i>>2];c[i>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{i=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);j=c[Ma+40>>2]|0;do if(j|0){if(Na|0){if(c[Na+480>>2]|0){Xd(Na,j);break}i=j;if((c[Na+304>>2]|0)>>>0<=i>>>0?(c[Na+308>>2]|0)>>>0>i>>>0:0){i=Na+300|0;c[j>>2]=c[i>>2];c[i>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{i=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);l=f+212|0;j=c[l>>2]|0;if(!j)j=0;else{k=c[Oa>>2]|0;if((j|0)<0)j=(c[k+108>>2]|0)+-1|0;if(!(a[(c[k>>2]|0)+81>>0]|0))j=(c[k+104>>2]|0)+(j*20|0)|0;else j=59308;j=c[j+8>>2]|0}c[l>>2]=j;Oa=m;Ra=Pa;return Oa|0}function lj(b,f,g,h,i,j,k,l){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=Ra;Ra=Ra+16|0;m=s;r=c[b>>2]|0;do if(!f){f=(k|0)!=0;if(f|(l|0)!=0){c[m>>2]=f?44504:44507;cd(b,44468,m);break}else{q=pj(b,0,g,h)|0;n=6;break}}else{q=pj(b,f,g,h)|0;n=6}while(0);if((n|0)==6?q|0:0){o=(c[q>>2]|0)+-1|0;a:do if((d[b+200>>0]|0)>1?(p=c[q+8+(o*72|0)+8>>2]|0,p|0):0){if(!((h|0)!=0?(c[h>>2]|0)!=0:0))h=g;g=c[b>>2]|0;b:do if(!g){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](16)|0;n=35;break}f=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;g=59064;m=c[g>>2]|0;g=c[g+4>>2]|0;if((g|0)>0|(g|0)==0&m>>>0>0){t=c[14978]|0;g=Tv(m|0,g|0,f|0,((f|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&g>>>0<=t>>>0)&1}f=Wa[c[29340>>2]&127](f)|0;if(!f)break a;m=Wa[c[29352>>2]&127](f)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0>(c[14987]|0)>>>0)c[14987]=m}else{if(c[g+272>>2]|0){if(a[g+81>>0]|0)break a}else{do if((e[g+276>>1]|0)>=16){m=g+300|0;f=c[m>>2]|0;if(f|0){c[m>>2]=c[f>>2];n=g+284|0;c[n>>2]=(c[n>>2]|0)+1;n=35;break b}m=g+296|0;f=c[m>>2]|0;if(!f){f=g+292|0;break}else{c[m>>2]=c[f>>2];n=g+284|0;c[n>>2]=(c[n>>2]|0)+1;n=35;break b}}else f=g+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1}f=_d(g,16,0)|0;n=35}while(0);if((n|0)==35)if(!f)break;m=f+4|0;g=m+12|0;do{a[m>>0]=0;m=m+1|0}while((m|0)<(g|0));c[f>>2]=p;n=h;p=c[n+4>>2]|0;t=f+4|0;c[t>>2]=c[n>>2];c[t+4>>2]=p;t=b+272|0;c[f+12>>2]=c[t>>2];c[t>>2]=f}while(0);if(c[i+4>>2]|0){t=qj(r,i)|0;c[q+8+(o*72|0)+12>>2]=t}c[q+8+(o*72|0)+20>>2]=j;c[q+8+(o*72|0)+44>>2]=k;c[q+8+(o*72|0)+48>>2]=l;t=q;Ra=s;return t|0}if(k|0)ni(r,k);do if(l|0){b=l+4|0;f=c[l>>2]|0;c:do if((c[b>>2]|0)>0){g=r+480|0;h=r+304|0;n=r+308|0;o=r+300|0;if(!r){m=0;while(1){f=c[f+(m<<3)>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{t=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);m=m+1|0;f=c[l>>2]|0;if((m|0)>=(c[b>>2]|0))break c}}m=0;do{f=c[f+(m<<3)>>2]|0;do if(f|0){if(c[g>>2]|0){Xd(r,f);break}t=f;if((c[h>>2]|0)>>>0<=t>>>0?(c[n>>2]|0)>>>0>t>>>0:0){c[f>>2]=c[o>>2];c[o>>2]=f;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{t=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);m=m+1|0;f=c[l>>2]|0}while((m|0)<(c[b>>2]|0))}while(0);d:do if(f){do if(r|0){m=r+480|0;if(!(c[m>>2]|0)){g=f;if((c[r+304>>2]|0)>>>0>g>>>0)break;if((c[r+308>>2]|0)>>>0<=g>>>0)break;t=r+300|0;c[f>>2]=c[t>>2];c[t>>2]=f}else Xd(r,f);f=m;n=75;break d}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);n=73;break}else{n=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);n=73;break}}else n=73;while(0);if((n|0)==73)if(r){f=r+480|0;n=75}if((n|0)==75){if(c[f>>2]|0){Xd(r,l);break}t=l;if((c[r+304>>2]|0)>>>0<=t>>>0?(c[r+308>>2]|0)>>>0>t>>>0:0){t=r+300|0;c[l>>2]=c[t>>2];c[t>>2]=l;break}}if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{t=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);if(!j){t=0;Ra=s;return t|0}pi(r,j,1);t=0;Ra=s;return t|0}function mj(d,f,g,h,i,j,k,l,m){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+96|0;q=t+80|0;s=t;p=c[d>>2]|0;a:do if(c[p+272>>2]|0)if(!(a[p+81>>0]|0))r=11;else n=0;else{do if((e[p+276>>1]|0)>=76){o=p+300|0;n=c[o>>2]|0;if(n|0){c[o>>2]=c[n>>2];p=p+284|0;c[p>>2]=(c[p>>2]|0)+1;break a}o=p+296|0;n=c[o>>2]|0;if(!n){n=p+292|0;break}else{c[o>>2]=c[n>>2];p=p+284|0;c[p>>2]=(c[p>>2]|0)+1;break a}}else n=p+288|0;while(0);c[n>>2]=(c[n>>2]|0)+1;r=11}while(0);if((r|0)==11)n=_d(p,76,0)|0;o=(n|0)==0?s:n;if(!f){f=c[d>>2]|0;c[q>>2]=0;c[q+4>>2]=0;f=oj(f,172,q,0)|0;f=nj(c[d>>2]|0,0,f)|0}c[o>>2]=f;a[o+4>>0]=-125;c[o+8>>2]=l;c[o+12>>2]=0;c[o+16>>2]=0;q=d+100|0;l=(c[q>>2]|0)+1|0;c[q>>2]=l;c[o+20>>2]=l;c[o+24>>2]=-1;c[o+28>>2]=-1;b[o+6>>1]=0;if(!g){n=c[d>>2]|0;b:do if(!n){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](80)|0;r=38;break}g=Wa[c[29356>>2]&127](80)|0;if((c[14985]|0)>>>0<80)c[14985]=80;n=59064;f=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&f>>>0>0){l=c[14978]|0;q=Tv(f|0,n|0,g|0,((g|0)<0)<<31>>31|0)|0;p=L()|0;c[14768]=((p|0)<0|(p|0)==0&q>>>0<=l>>>0)&1}g=Wa[c[29340>>2]&127](g)|0;if(g){f=Wa[c[29352>>2]&127](g)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0){c[14987]=f;r=39}else r=39}else g=0}else{if(c[n+272>>2]|0){if(a[n+81>>0]|0){g=0;break}}else{do if((e[n+276>>1]|0)>=80){f=n+300|0;g=c[f>>2]|0;if(g|0){c[f>>2]=c[g>>2];r=n+284|0;c[r>>2]=(c[r>>2]|0)+1;r=38;break b}f=n+296|0;g=c[f>>2]|0;if(!g){g=n+292|0;break}else{c[f>>2]=c[g>>2];r=n+284|0;c[r>>2]=(c[r>>2]|0)+1;r=38;break b}}else g=n+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1}g=_d(n,80,0)|0;r=38}while(0);if((r|0)==38)if(!g)g=0;else r=39;if((r|0)==39){f=g;n=f+80|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(n|0))}}c[o+32>>2]=g;c[o+36>>2]=h;c[o+40>>2]=i;c[o+44>>2]=j;c[o+48>>2]=k;c[o+52>>2]=0;c[o+56>>2]=0;c[o+60>>2]=m;c[o+64>>2]=0;c[o+68>>2]=0;c[o+72>>2]=0;g=c[d>>2]|0;if(!(a[g+81>>0]|0)){s=o;Ra=t;return s|0}pi(g,o,(o|0)!=(s|0)&1);s=0;Ra=t;return s|0}function nj(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0;a:do if(!d){b:do if(c[b+272>>2]|0)if(!(a[b+81>>0]|0))i=12;else{d=0;break a}else{do if((e[b+276>>1]|0)>=24){g=b+300|0;d=c[g>>2]|0;if(d|0){c[g>>2]=c[d>>2];h=b+284|0;c[h>>2]=(c[h>>2]|0)+1;break b}g=b+296|0;d=c[g>>2]|0;if(!d){d=b+292|0;break}else{c[g>>2]=c[d>>2];h=b+284|0;c[h>>2]=(c[h>>2]|0)+1;break b}}else d=b+288|0;while(0);c[d>>2]=(c[d>>2]|0)+1;i=12}while(0);if((i|0)==12)d=_d(b,24,0)|0;if(d){c[d>>2]=0;i=20}}else{g=c[d>>2]|0;if(!(g+-1&g)){h=Yv(g|0,((g|0)<0)<<31>>31|0,40,0)|0;g=L()|0;h=h|4;j=d;if(((c[b+304>>2]|0)>>>0<=j>>>0?(c[b+308>>2]|0)>>>0>j>>>0:0)?!(g>>>0>0|((g|0)==0?h>>>0>(e[b+276>>1]|0)>>>0:0)):0){i=20;break}g=Zd(b,d,h,g)|0;if(g){d=g;i=20}}else i=20}while(0);if((i|0)==20){j=c[d>>2]|0;c[d>>2]=j+1;i=d+4+(j*20|0)+4|0;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;c[i+12>>2]=0;c[d+4+(j*20|0)>>2]=f;j=d;return j|0}if(f|0)ni(b,f);if(!d){j=0;return j|0}ri(b,d);j=0;return j|0}function oj(d,f,g,h){d=d|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,s=0,t=0;t=Ra;Ra=Ra+16|0;n=t;c[n>>2]=0;o=(g|0)!=0;do if(o){if(((f|0)==147?(i=c[g>>2]|0,i|0):0)?ii(i,n)|0:0){m=0;break}m=(c[g+4>>2]|0)+1|0}else m=0;while(0);k=m+52|0;a:do if(c[d+272>>2]|0)if(!(a[d+81>>0]|0))l=16;else{s=0;Ra=t;return s|0}else{do if(!(0<0|(0==0?(e[d+276>>1]|0)>>>0>>0:0))){i=d+300|0;j=c[i>>2]|0;if(j|0){c[i>>2]=c[j>>2];p=d+284|0;c[p>>2]=(c[p>>2]|0)+1;p=j;break a}i=d+296|0;j=c[i>>2]|0;if(!j){i=d+292|0;break}else{c[i>>2]=c[j>>2];p=d+284|0;c[p>>2]=(c[p>>2]|0)+1;p=j;break a}}else i=d+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;l=16}while(0);if((l|0)==16)p=_d(d,k,0)|0;if(!p){s=p;Ra=t;return s|0}i=p;j=i+52|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(j|0));a[p>>0]=f;b[p+34>>1]=-1;do if(o){if(!m){c[p+4>>2]=8389632;c[p+8>>2]=c[n>>2];break}k=p+52|0;d=p+8|0;c[d>>2]=k;i=g+4|0;j=c[i>>2]|0;if(!j)i=0;else{ew(k|0,c[g>>2]|0,j|0)|0;i=c[i>>2]|0}a[k+i>>0]=0;if(((h|0?(s=c[d>>2]|0,q=a[s>>0]|0,(a[880+(q&255)>>0]|0)<0):0)?(h=p+4|0,c[h>>2]=(q<<24>>24==34?67108928:67108864)|c[h>>2],s|0):0)?(r=a[s>>0]|0,(a[880+(r&255)>>0]|0)<0):0){d=r<<24>>24==91?93:r;k=0;i=1;while(1){j=a[s+i>>0]|0;if(j<<24>>24==d<<24>>24){i=i+1|0;j=s+k|0;if((a[s+i>>0]|0)!=d<<24>>24)break;a[j>>0]=d}else a[s+k>>0]=j;k=k+1|0;i=i+1|0}a[j>>0]=0}}while(0);c[p+24>>2]=1;s=p;Ra=t;return s|0}function pj(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+16|0;k=o;n=c[b>>2]|0;do if(!d){a:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))j=12;else{n=0;Ra=o;return n|0}else{do if((e[n+276>>1]|0)>=80){h=n+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];m=n+284|0;c[m>>2]=(c[m>>2]|0)+1;break a}h=n+296|0;i=c[h>>2]|0;if(!i){h=n+292|0;break}else{c[h>>2]=c[i>>2];m=n+284|0;c[m>>2]=(c[m>>2]|0)+1;break a}}else h=n+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;j=12}while(0);if((j|0)==12)i=_d(n,80,0)|0;if(!i){n=0;Ra=o;return n|0}else{c[i+4>>2]=1;c[i>>2]=1;j=i+8|0;k=j+72|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));b=i;h=i+48|0;break}}else{m=c[d>>2]|0;h=m+1|0;b:do if(h>>>0>(c[d+4>>2]|0)>>>0){i=cw(m|0,((m|0)<0)<<31>>31|0,1)|0;j=L()|0;i=i|1;do if((h|0)>199){c[k>>2]=200;cd(b,43159,k)}else{h=(j|0)<0|(j|0)==0&i>>>0<200;b=h?i:200;h=Yv(b|0,(h?j:0)|0,72,0)|0;h=Sv(h|0,L()|0,8,0)|0;i=L()|0;l=d;if(((c[n+304>>2]|0)>>>0<=l>>>0?(c[n+308>>2]|0)>>>0>l>>>0:0)?!(i>>>0>0|((i|0)==0?h>>>0>(e[n+276>>1]|0)>>>0:0)):0)h=d;else{h=Zd(n,d,h,i)|0;if(!h)break}c[h+4>>2]=b;i=c[h>>2]|0;if((i|0)<=(m|0)){l=h;b=h;h=i;break b}do{j=h+8+(i*72|0)|0;i=i+-1|0;b=h+8+(i*72|0)|0;k=j+72|0;do{c[j>>2]=c[b>>2];j=j+4|0;b=b+4|0}while((j|0)<(k|0))}while((i|0)>(m|0));l=h;b=h;h=c[h>>2]|0;break b}while(0);qi(n,d);n=0;Ra=o;return n|0}else{l=d;b=d;h=m}while(0);c[b>>2]=h+1;j=l+8+(m*72|0)|0;k=j+72|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));b=l;h=l+8+(m*72|0)+40|0}while(0);c[h>>2]=-1;h=(c[b>>2]|0)+-1|0;if(g|0?c[g>>2]|0:0){g=qj(n,g)|0;c[b+8+(h*72|0)+8>>2]=g;n=qj(n,f)|0;c[b+8+(h*72|0)+4>>2]=n;n=b;Ra=o;return n|0}n=qj(n,f)|0;c[b+8+(h*72|0)+8>>2]=n;c[b+8+(h*72|0)+4>>2]=0;n=b;Ra=o;return n|0}function qj(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0;if(!d){k=0;return k|0}k=c[d>>2]|0;i=c[d+4>>2]|0;if(!k){k=0;return k|0}g=Sv(i|0,0,1,0)|0;h=L()|0;a:do if(c[b+272>>2]|0)if(!(a[b+81>>0]|0))j=13;else{k=0;return k|0}else{do if(0<0|(0==0?i>>>0<(e[b+276>>1]|0)>>>0:0)){d=b+300|0;f=c[d>>2]|0;if(f|0){c[d>>2]=c[f>>2];b=b+284|0;c[b>>2]=(c[b>>2]|0)+1;b=f;break a}d=b+296|0;f=c[d>>2]|0;if(!f){d=b+292|0;break}else{c[d>>2]=c[f>>2];b=b+284|0;c[b>>2]=(c[b>>2]|0)+1;b=f;break a}}else d=b+288|0;while(0);c[d>>2]=(c[d>>2]|0)+1;j=13}while(0);if((j|0)==13)b=_d(b,g,h)|0;if(!b){k=0;return k|0}ew(b|0,k|0,i|0)|0;a[b+i>>0]=0;d=a[b>>0]|0;if((a[880+(d&255)>>0]|0)>=0){k=b;return k|0}h=d<<24>>24==91?93:d;g=0;d=1;while(1){f=a[b+d>>0]|0;if(f<<24>>24==h<<24>>24){d=d+1|0;f=b+g|0;if((a[b+d>>0]|0)!=h<<24>>24)break;a[f>>0]=h}else a[b+g>>0]=f;g=g+1|0;d=d+1|0}a[f>>0]=0;k=b;return k|0} -function yj(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var 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,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,_=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;Ea=Ra;Ra=Ra+448|0;ha=Ea+424|0;ca=Ea+416|0;ta=Ea+408|0;sa=Ea+400|0;ra=Ea+392|0;qa=Ea+384|0;ma=Ea+376|0;na=Ea+368|0;da=Ea+336|0;W=Ea+328|0;M=Ea+320|0;U=Ea+304|0;ba=Ea+280|0;V=Ea+272|0;ga=Ea+256|0;fa=Ea+240|0;ea=Ea+224|0;Z=Ea+216|0;ja=Ea+184|0;ia=Ea+152|0;X=Ea+144|0;J=Ea+136|0;N=Ea+128|0;K=Ea+120|0;I=Ea+112|0;_=Ea+104|0;T=Ea+96|0;Q=Ea+88|0;S=Ea+80|0;A=Ea+72|0;y=Ea+64|0;z=Ea+56|0;w=Ea+48|0;q=Ea+40|0;o=Ea+32|0;n=Ea+24|0;wa=Ea+16|0;B=Ea;oa=Ea+440|0;va=Ea+436|0;pa=Ea+432|0;Da=c[f>>2]|0;ua=f+8|0;k=c[ua>>2]|0;if(!k){if((c[f+116>>2]|0)==0?(b[Da+76>>1]&8)==0:0)a[f+23>>0]=1;a:do if(c[Da+272>>2]|0)if(!(a[Da+81>>0]|0))za=15;else{Ra=Ea;return}else{do if((e[Da+276>>1]|0)>=224){k=Da+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];Ca=Da+284|0;c[Ca>>2]=(c[Ca>>2]|0)+1;break a}k=Da+296|0;l=c[k>>2]|0;if(!l){k=Da+292|0;break}else{c[k>>2]=c[l>>2];Ca=Da+284|0;c[Ca>>2]=(c[Ca>>2]|0)+1;break a}}else k=Da+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=15}while(0);if((za|0)==15)l=_d(Da,224,0)|0;if(!l){Ra=Ea;return}$=l+104|0;aa=$+120|0;do{c[$>>2]=0;$=$+4|0}while(($|0)<(aa|0));c[l>>2]=Da;k=Da+4|0;m=c[k>>2]|0;if(m|0)c[m+4>>2]=l;c[l+8>>2]=m;c[l+4>>2]=0;c[k>>2]=l;c[l+20>>2]=381479589;c[l+12>>2]=f;c[ua>>2]=l;Di(l,61,0,1,0)|0;Aa=l}else Aa=k;F=Aa+149|0;xa=d[F>>0]|d[F+1>>0]<<8|64;a[F>>0]=xa;a[F+1>>0]=xa>>8;xa=f+44|0;c[xa>>2]=2;k=c[f>>2]|0;ka=h+4|0;if(c[ka>>2]|0){if(a[k+165>>0]|0){cd(f,39404,n);Ra=Ea;return}r=wk(k,g)|0;if((r|0)<0){c[o>>2]=g;cd(f,39421,o);Ra=Ea;return}else g=h}else r=d[k+164>>0]|0;ya=Da+16|0;aa=c[ya>>2]|0;$=(r|0)==1;if(($?(v=c[f>>2]|0,p=v+16|0,(c[(c[p>>2]|0)+20>>2]|0)==0):0)?(a[f+199>>0]|0)==0:0){k=Pe(c[v>>2]|0,0,v,wa,0,542)|0;if(k|0){cd(f,32157,q);c[f+12>>2]=k;Ra=Ea;return}Ca=c[wa>>2]|0;c[(c[p>>2]|0)+20>>2]=Ca;k=c[v+92>>2]|0;p=c[Ca+4>>2]|0;c[p+4>>2]=c[Ca>>2];if(!(b[p+22>>1]&2)){m=p+32|0;n=p+36|0;o=(c[m>>2]|0)-(c[n>>2]|0)|0;if(((k+-512|0)>>>0<65025?(k+-1&k|0)==0:0)?(c[m>>2]=k,t=p+80|0,s=c[t>>2]|0,s|0):0){l=s+-4|0;c[t>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;Ca=(c[14820]|0)+1|0;c[14820]=Ca;c[14821]=(Ca|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;za=40;break}else{k=Wa[c[29352>>2]&127](l)|0;za=40}while(0);do if((za|0)==40){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{Ca=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-Ca;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[t>>2]=0}Ca=Se(c[p>>2]|0,m,o)|0;c[n>>2]=(c[m>>2]|0)-(o&65535);if((Ca|0)==7){k=v+81|0;if((a[k>>0]|0)==0?(a[v+82>>0]|0)==0:0){a[k>>0]=1;if((c[v+180>>2]|0)>0)c[v+264>>2]=1;k=v+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[v+236>>2]|0;if(k|0)c[k+12>>2]=7}Ra=Ea;return}}}Ca=qj(Da,g)|0;if(!Ca){Ra=Ea;return}if(!j)Ba=qj(Da,i)|0;else{c[w>>2]=i;Ba=dd(Da,45384,w)|0}if(!(c[ka>>2]|0))la=0;else la=c[aa+(r<<4)>>2]|0;k=c[f>>2]|0;do if(((a[k+165>>0]|0)==0?(a[f+200>>0]|0)==0:0)?(x=c[k+312>>2]|0,(x|0)!=0):0){k=$a[x&127](c[k+316>>2]|0,19,Ca,Ba,la,c[f+240>>2]|0)|0;if((k|0)==1){cd(f,39216,z);c[f+12>>2]=23;za=2020;break}if((k|2|0)==2)if(!k){za=67;break}else{za=2020;break}else{cd(f,39231,y);c[f+12>>2]=1;za=2020;break}}else za=67;while(0);b:do if((za|0)==67){c[B>>2]=0;c[B+4>>2]=Ca;c[B+8>>2]=Ba;c[B+12>>2]=0;t=Da+404|0;c[t>>2]=0;k=Td(Da,la)|0;c:do if(k){l=c[k+4>>2]|0;c[l+4>>2]=c[k>>2];k=c[(c[l>>2]|0)+60>>2]|0;l=c[k>>2]|0;d:do if(l|0){k=Ya[c[l+40>>2]&127](k,14,B)|0;switch(k|0){case 12:break d;case 0:break;default:{l=c[B>>2]|0;if(!l)break c;c[A>>2]=l;cd(f,31408,A);l=c[B>>2]|0;if(!l)break c;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break c}else{Aa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-Aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break c}}}Wi(Aa,1);if(!(a[(c[Aa>>2]|0)+81>>0]|0))yc(c[Aa+116>>2]|0,c[B>>2]|0,-1,1,-1)|0;l=c[B>>2]|0;if(!l){za=2020;break b}m=Aa+108|0;k=c[m>>2]|0;n=Aa+112|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=110;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,110,0,1,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;Ei(Aa,(c[Aa+104>>2]|0)+(k*20|0)|0,l,0)}k=c[m>>2]|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0}else Di(Aa,81,1,1,0)|0;k=c[B>>2]|0;if(!k){za=2020;break b}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);za=2020;break b}else{za=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-za;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);za=2020;break b}}while(0);B=a[Ca>>0]|0;q=d[208+(B&255)>>0]|0;e:do if(!(B<<24>>24)){k=0;l=59;do{o=k+l|0;m=(o|0)/2|0;n=q-(d[208+(d[c[4544+(m<<4)>>2]>>0]|0)>>0]|0)|0;if(!n){j=m;za=103;break e}B=(n|0)<0;k=B?k:m+1|0;l=B?m+-1|0:l}while((k|0)<=(l|0))}else{n=0;p=59;do{o=n+p|0;g=(o|0)/2|0;l=c[4544+(g<<4)>>2]|0;k=q-(d[208+(d[l>>0]|0)>>0]|0)|0;if(!k){m=Ca;do{m=m+1|0;l=l+1|0;B=a[m>>0]|0;k=(d[208+(B&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(B<<24>>24==0|(k|0)!=0));if(!k){j=g;za=103;break e}}B=(k|0)<0;n=B?n:g+1|0;p=B?g+-1|0:p}while((n|0)<=(p|0))}while(0);f:do if((za|0)==103){s=4544+(j<<4)|0;m=a[4544+(j<<4)+5>>0]|0;g:do if(m&1?(D=c[f>>2]|0,(a[D+165>>0]|0)==0):0){n=f+4|0;p=D+24|0;g=(c[p>>2]&1|0)==0;q=D+16|0;B=c[(c[q>>2]|0)+12>>2]|0;a[D+78>>0]=a[B+77>>0]|0;if((b[B+78>>1]&1)==0?(C=eh(D,0,n,0)|0,(C|0)!=0):0)k=C;else za=107;h:do if((za|0)==107){k=c[D+20>>2]|0;if((k|0)>1)do{l=k;k=k+-1|0;if((b[(c[(c[q>>2]|0)+(k<<4)+12>>2]|0)+78>>1]&1)==0?(E=eh(D,k,n,0)|0,E|0):0){k=E;break h}}while((l|0)>2);if(g)c[p>>2]=c[p>>2]&-2;if(!(a[D+89>>0]|0))break g;c[p>>2]=c[p>>2]|16;break g}while(0);c[f+12>>2]=k;Aa=f+36|0;c[Aa>>2]=(c[Aa>>2]|0)+1;break f}while(0);E=m&255;do if((E&2|0)==0?(Ba|0)==0|(E&4|0)==0:0){E=a[4544+(j<<4)+7>>0]|0;m=E&255;E=E<<24>>24==0;Wi(Aa,E?1:m);if(E){if(a[(c[Aa>>2]|0)+81>>0]|0)break;yc(c[Aa+116>>2]|0,c[s>>2]|0,-1,1,0)|0;break}n=Aa+116|0;k=0;l=d[4544+(j<<4)+6>>0]|0;while(1){if(!(a[(c[Aa>>2]|0)+81>>0]|0))yc((c[n>>2]|0)+(k*40|0)|0,c[5504+(l<<2)>>2]|0,-1,1,0)|0;k=k+1|0;if((k|0)==(m|0))break;else l=l+1|0}}while(0);do switch(a[4544+(j<<4)+4>>0]|0){case 11:{u=1<>2]=c[ya>>2]|u;if(!$?a[(c[(c[(c[Aa>>2]|0)+16>>2]|0)+(r<<4)+4>>2]|0)+9>>0]|0:0){ya=Aa+156|0;c[ya>>2]=c[ya>>2]|u}if(!Ba){c[xa>>2]=(c[xa>>2]|0)+2;Aa=ed(Aa,9,18352)|0;c[Aa+4>>2]=r;c[Aa+24>>2]=r;c[Aa+124>>2]=-2e3;break f}c[wa>>2]=0;ii(Ba,wa)|0;k=c[wa>>2]|0;k=(k|0)>-1?k:(k|0)==-2147483648?2147483647:0-k|0;t=c[f+116>>2]|0;t=(t|0)==0?f:t;l=t+84|0;m=c[l>>2]|0;i:do if(!(m&u)){c[l>>2]=m|u;if(!$)break;s=c[t>>2]|0;l=s+16|0;if(c[(c[l>>2]|0)+20>>2]|0)break;if(a[t+199>>0]|0)break;m=Pe(c[s>>2]|0,0,s,wa,0,542)|0;if(m|0){cd(t,32157,S);c[t+12>>2]=m;break}ya=c[wa>>2]|0;c[(c[l>>2]|0)+20>>2]=ya;l=c[s+92>>2]|0;o=c[ya+4>>2]|0;c[o+4>>2]=c[ya>>2];do if(!(b[o+22>>1]&2)){p=o+32|0;g=o+36|0;q=(c[p>>2]|0)-(c[g>>2]|0)|0;do if((l+-512|0)>>>0<65025){if(l+-1&l|0)break;c[p>>2]=l;n=o+80|0;l=c[n>>2]|0;if(!l)break;m=l+-4|0;c[n>>2]=m;l=m;do if((c[14816]|0)>>>0<=l>>>0)if((c[14817]|0)>>>0>l>>>0){c[14979]=(c[14979]|0)+-1;c[m>>2]=c[14819];c[14819]=m;ya=(c[14820]|0)+1|0;c[14820]=ya;c[14821]=(ya|0)<(c[14815]|0)&1;break}else{l=Wa[c[29352>>2]&127](m)|0;za=147;break}else{l=Wa[c[29352>>2]&127](m)|0;za=147}while(0);do if((za|0)==147){c[14980]=(c[14980]|0)-l;if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{za=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-za;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[n>>2]=0}while(0);za=Se(c[o>>2]|0,p,q)|0;c[g>>2]=(c[p>>2]|0)-(q&65535);if((za|0)!=7)break;l=s+81|0;do if(!(a[l>>0]|0)){if(a[s+82>>0]|0)break;a[l>>0]=1;if((c[s+180>>2]|0)>0)c[s+264>>2]=1;l=s+272|0;c[l>>2]=(c[l>>2]|0)+1;l=c[s+236>>2]|0;if(!l)break;c[l+12>>2]=7}while(0);break i}while(0)}while(0);l=t+80|0;c[l>>2]=c[l>>2]|u;l=Aa+108|0;m=c[l>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[l>>2]=m+1;Aa=c[Aa+104>>2]|0;a[Aa+(m*20|0)>>0]=95;b[Aa+(m*20|0)+2>>1]=0;c[Aa+(m*20|0)+4>>2]=r;c[Aa+(m*20|0)+8>>2]=3;c[Aa+(m*20|0)+12>>2]=k;c[Aa+(m*20|0)+16>>2]=0;a[Aa+(m*20|0)+1>>0]=0}else Di(Aa,95,r,3,k)|0;c[(c[aa+(r<<4)+12>>2]|0)+80>>2]=k;m=c[aa+(r<<4)+4>>2]|0;l=c[m+4>>2]|0;c[l+4>>2]=c[m>>2];l=c[(c[l>>2]|0)+212>>2]|0;c[l+16>>2]=k;m=c[7357]|0;n=c[l+44>>2]|0;if((k|0)<=-1){za=Yv(k|0,((k|0)<0)<<31>>31|0,-1024,-1)|0;Aa=L()|0;k=(c[l+28>>2]|0)+(c[l+24>>2]|0)|0;k=Wv(za|0,Aa|0,k|0,((k|0)<0)<<31>>31|0)|0;L()|0}bb[m&127](n,k);break f}case 28:{k=c[aa+(r<<4)+4>>2]|0;if(Ba|0){c[wa>>2]=0;ii(Ba,wa)|0;l=c[wa>>2]|0;c[Da+92>>2]=l;g=c[k+4>>2]|0;c[g+4>>2]=c[k>>2];if(b[g+22>>1]&2){za=2020;break b}n=g+32|0;o=g+36|0;p=(c[n>>2]|0)-(c[o>>2]|0)|0;do if((l+-512|0)>>>0<65025){if(l+-1&l|0)break;c[n>>2]=l;m=g+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;Aa=(c[14820]|0)+1|0;c[14820]=Aa;c[14821]=(Aa|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;za=219;break}else{k=Wa[c[29352>>2]&127](l)|0;za=219}while(0);do if((za|0)==219){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{Aa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-Aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);Aa=Se(c[g>>2]|0,n,p)|0;c[o>>2]=(c[n>>2]|0)-(p&65535);if((Aa|0)!=7){za=2020;break b}k=Da+81|0;if(a[k>>0]|0){za=2020;break b}if(a[Da+82>>0]|0){za=2020;break b}a[k>>0]=1;if((c[Da+180>>2]|0)>0)c[Da+264>>2]=1;k=Da+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[Da+236>>2]|0;if(!k){za=2020;break b}c[k+12>>2]=7;za=2020;break b}if(!k){n=0;o=0}else{o=c[(c[k+4>>2]|0)+32>>2]|0;n=o;o=((o|0)<0)<<31>>31}m=c[Aa>>2]|0;j:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=179;else za=199;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=180;break j}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=180;break j}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=179}while(0);if((za|0)==179){p=_d(m,8,0)|0;za=180}k:do if((za|0)==180){if(!p){za=199;break}m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=o;a[m+1>>0]=o>>8;a[m+2>>0]=o>>16;a[m+3>>0]=o>>24;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break k}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break k}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);do if((za|0)==199){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,1,0)|0;break f}}case 30:{g=c[aa+(r<<4)+4>>2]|0;do if(!Ba){m=-1;n=0}else{za=a[Ba>>0]|0;k=(d[208+(za&255)>>0]|0)+-102|0;if(!(za<<24>>24==0|(k|0)!=0)){l=45388;m=Ba;do{m=m+1|0;l=l+1|0;za=a[m>>0]|0;k=(d[208+(za&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(k|0)!=0))}if(!k)m=2;else m=(Zm(Ba,1,0)|0)<<24>>24!=0&1;if(c[ka>>2]|0){n=1;break}p=c[Da+20>>2]|0;if((p|0)<=0){n=1;break}l=c[ya>>2]|0;n=m<<2;k=0;do{o=c[l+(k<<4)+4>>2]|0;if(o|0){za=c[o+4>>2]|0;c[za+4>>2]=c[o>>2];za=za+22|0;b[za>>1]=n|b[za>>1]&-13&65535}k=k+1|0}while((k|0)!=(p|0));n=1}while(0);if(!g)n=0;else{l=c[g+4>>2]|0;c[l+4>>2]=c[g>>2];l=l+22|0;k=b[l>>1]|0;if(n){k=(m<<2|k&-13&65535)&65535;b[l>>1]=k}n=(k&65535)>>>2&3}m=c[Aa>>2]|0;l:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=256;else za=276;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=257;break l}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=257;break l}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=256}while(0);if((za|0)==256){p=_d(m,8,0)|0;za=257}m:do if((za|0)==257){if(!p){za=276;break}m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=0;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break m}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break m}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);do if((za|0)==276){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,1,0)|0;break f}}case 24:{n=c[f+116>>2]|0;n=(n|0)==0?f:n;k=n+84|0;l=c[k>>2]|0;m=1<>2]=l|m,$):0)?(Y=c[n>>2]|0,O=Y+16|0,(c[(c[O>>2]|0)+20>>2]|0)==0):0){if(a[n+199>>0]|0)break;k=Pe(c[Y>>2]|0,0,Y,wa,0,542)|0;if(k|0){cd(n,32157,Q);c[n+12>>2]=k;break}ya=c[wa>>2]|0;c[(c[O>>2]|0)+20>>2]=ya;k=c[Y+92>>2]|0;n=c[ya+4>>2]|0;c[n+4>>2]=c[ya>>2];do if(!(b[n+22>>1]&2)){o=n+32|0;p=n+36|0;g=(c[o>>2]|0)-(c[p>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[o>>2]=k;m=n+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;ya=(c[14820]|0)+1|0;c[14820]=ya;c[14821]=(ya|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;za=302;break}else{k=Wa[c[29352>>2]&127](l)|0;za=302}while(0);do if((za|0)==302){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ya=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);ya=Se(c[n>>2]|0,o,g)|0;c[p>>2]=(c[o>>2]|0)-(g&65535);if((ya|0)!=7)break;k=Y+81|0;do if(!(a[k>>0]|0)){if(a[Y+82>>0]|0)break;a[k>>0]=1;if((c[Y+180>>2]|0)>0)c[Y+264>>2]=1;k=Y+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[Y+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break n}while(0)}while(0);o=(c[xa>>2]|0)+1|0;c[xa>>2]=o;do if((a[Ca>>0]|32)<<24>>24==112){l=Aa+108|0;m=c[l>>2]|0;k=Aa+112|0;if((c[k>>2]|0)>(m|0)){c[l>>2]=m+1;za=c[Aa+104>>2]|0;a[za+(m*20|0)>>0]=-90;b[za+(m*20|0)+2>>1]=0;c[za+(m*20|0)+4>>2]=r;c[za+(m*20|0)+8>>2]=o;c[za+(m*20|0)+12>>2]=0;c[za+(m*20|0)+16>>2]=0;a[za+(m*20|0)+1>>0]=0;m=l;break}else{Di(Aa,166,r,o,0)|0;m=l;break}}else{c[wa>>2]=0;if(Ba){ii(Ba,wa)|0;k=c[wa>>2]|0;if((k|0)<0)k=(k|0)==-2147483648?2147483647:0-k|0;else za=322}else{k=0;za=322}m=Aa+108|0;l=c[m>>2]|0;n=Aa+112|0;if((c[n>>2]|0)>(l|0)){c[m>>2]=l+1;za=c[Aa+104>>2]|0;a[za+(l*20|0)>>0]=-89;b[za+(l*20|0)+2>>1]=0;c[za+(l*20|0)+4>>2]=r;c[za+(l*20|0)+8>>2]=o;c[za+(l*20|0)+12>>2]=k;c[za+(l*20|0)+16>>2]=0;a[za+(l*20|0)+1>>0]=0;k=n;break}else{Di(Aa,167,r,o,k)|0;k=n;break}}while(0);l=c[m>>2]|0;if((c[k>>2]|0)>(l|0)){c[m>>2]=l+1;Aa=c[Aa+104>>2]|0;a[Aa+(l*20|0)>>0]=81;b[Aa+(l*20|0)+2>>1]=0;c[Aa+(l*20|0)+4>>2]=o;c[Aa+(l*20|0)+8>>2]=1;c[Aa+(l*20|0)+12>>2]=0;c[Aa+(l*20|0)+16>>2]=0;a[Aa+(l*20|0)+1>>0]=0;break f}else{Di(Aa,81,o,1,0)|0;break f}}case 23:{do if(!Ba)za=339;else{o=a[Ba>>0]|0;n=d[208+(o&255)>>0]|0;k=n+-101|0;o=o<<24>>24==0;if(!(o|(k|0)!=0)){l=45400;m=Ba;do{m=m+1|0;l=l+1|0;za=a[m>>0]|0;k=(d[208+(za&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(k|0)!=0))}if(k){k=n+-110|0;if(!(o|(k|0)!=0)){l=45393;m=Ba;do{m=m+1|0;l=l+1|0;za=a[m>>0]|0;k=(d[208+(za&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(k|0)!=0))}if(!k)l=0;else{za=339;break}}else l=1;if(c[ka>>2]|0){za=350;break}p=c[Da+20>>2]|0;if((p|0)>2){o=c[ya>>2]|0;k=l&255;m=2;do{n=c[c[(c[o+(m<<4)+4>>2]|0)+4>>2]>>2]|0;do if(!(a[n+12>>0]|0)){za=c[n+216>>2]|0;if(za|0?(a[za+43>>0]|0)==2:0)break;a[n+4>>0]=k}while(0);m=m+1|0}while((m|0)!=(p|0))}else k=l&255;a[Da+83>>0]=k;za=350}while(0);if((za|0)==339)if(!(c[ka>>2]|0))m=Da+83|0;else{l=-1;za=350}if((za|0)==350){k=c[c[(c[aa+(r<<4)+4>>2]|0)+4>>2]>>2]|0;do if((l|0)>-1){if(a[k+12>>0]|0)break;za=c[k+216>>2]|0;if(za|0?(a[za+43>>0]|0)==2:0)break;a[k+4>>0]=l}while(0);m=k+4|0}n=Aa+108|0;k=c[n>>2]|0;o=Aa+112|0;l=(c[o>>2]|0)>(k|0);if((a[m>>0]|0)==1){if(l){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=110;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,110,0,1,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((k|0)<0)k=(c[n>>2]|0)+-1|0;Ei(Aa,(c[Aa+104>>2]|0)+(k*20|0)|0,45400,0)}k=c[n>>2]|0;if((c[o>>2]|0)>(k|0)){c[n>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,1,0)|0;break f}}else{if(l){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=110;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,110,0,1,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((k|0)<0)k=(c[n>>2]|0)+-1|0;Ei(Aa,(c[Aa+104>>2]|0)+(k*20|0)|0,45393,0)}k=c[n>>2]|0;if((c[o>>2]|0)>(k|0)){c[n>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,1,0)|0;break f}}}case 20:{o:do if(Ba){m=(Eu(Ba)|0)&1073741823;if(m){n=Ba;p=36033;o=m;while(1){k=a[n>>0]|0;if(!(k<<24>>24)){za=381;break}l=a[208+(k&255)>>0]|0;k=a[208+(d[p>>0]|0)>>0]|0;if(l<<24>>24!=k<<24>>24){za=383;break}if((o|0)>1){n=n+1|0;p=p+1|0;o=o+-1|0}else{s=0;break o}}if((za|0)==381){l=0;k=a[208+(d[p>>0]|0)>>0]|0}else if((za|0)==383)l=l&255;if((l|0)!=(k&255|0)){n=Ba;p=36040;o=m;while(1){k=a[n>>0]|0;if(!(k<<24>>24)){za=2043;break}l=a[208+(k&255)>>0]|0;k=a[208+(d[p>>0]|0)>>0]|0;if(l<<24>>24!=k<<24>>24){za=2041;break}if((o|0)>1){n=n+1|0;p=p+1|0;o=o+-1|0}else{s=1;break o}}if((za|0)==2041)l=l&255;else if((za|0)==2043){l=0;k=a[208+(d[p>>0]|0)>>0]|0}if((l|0)==(k&255|0)){s=1;break}n=Ba;p=36048;o=m;while(1){k=a[n>>0]|0;if(!(k<<24>>24)){za=2050;break}l=a[208+(k&255)>>0]|0;k=a[208+(d[p>>0]|0)>>0]|0;if(l<<24>>24!=k<<24>>24){za=2048;break}if((o|0)>1){n=n+1|0;p=p+1|0;o=o+-1|0}else{s=2;break o}}if((za|0)==2048)l=l&255;else if((za|0)==2050){l=0;k=a[208+(d[p>>0]|0)>>0]|0}if((l|0)==(k&255|0)){s=2;break}n=Ba;p=36052;o=m;while(1){k=a[n>>0]|0;if(!(k<<24>>24)){za=2057;break}l=a[208+(k&255)>>0]|0;k=a[208+(d[p>>0]|0)>>0]|0;if(l<<24>>24!=k<<24>>24){za=2055;break}if((o|0)>1){n=n+1|0;p=p+1|0;o=o+-1|0}else{s=3;break o}}if((za|0)==2055)l=l&255;else if((za|0)==2057){l=0;k=a[208+(d[p>>0]|0)>>0]|0}if((l|0)==(k&255|0)){s=3;break}n=Ba;p=36061;o=m;while(1){k=a[n>>0]|0;if(!(k<<24>>24)){za=2064;break}l=a[208+(k&255)>>0]|0;k=a[208+(d[p>>0]|0)>>0]|0;if(l<<24>>24!=k<<24>>24){za=2062;break}if((o|0)>1){n=n+1|0;p=p+1|0;o=o+-1|0}else{s=4;break o}}if((za|0)==2062)l=l&255;else if((za|0)==2064){l=0;k=a[208+(d[p>>0]|0)>>0]|0}if((l|0)==(k&255|0)){s=4;break}n=Ba;o=36068;while(1){k=a[n>>0]|0;if(!(k<<24>>24)){za=2071;break}l=a[208+(k&255)>>0]|0;k=a[208+(d[o>>0]|0)>>0]|0;if(l<<24>>24!=k<<24>>24){za=2069;break}if((m|0)>1){n=n+1|0;o=o+1|0;m=m+-1|0}else{s=5;break o}}if((za|0)==2069)l=l&255;else if((za|0)==2071){l=0;k=a[208+(d[o>>0]|0)>>0]|0}if((l|0)==(k&255|0))s=5;else za=387}else s=0}else s=0}else za=387;while(0);if((za|0)==387)if(!(c[ka>>2]|0)){c[ka>>2]=1;r=0;s=-1}else s=-1;l=c[Da+20>>2]|0;if((l|0)>0){p=Aa+152|0;m=Aa+108|0;k=Aa+112|0;g=Aa+104|0;q=Aa+156|0;do{o=l;l=l+-1|0;do if(c[(c[ya>>2]|0)+(l<<4)+4>>2]|0){if((l|0)!=(r|0)?c[ka>>2]|0:0)break;n=1<>2]=c[p>>2]|n;do if((l|0)!=1){if(!(a[(c[(c[(c[Aa>>2]|0)+16>>2]|0)+(l<<4)+4>>2]|0)+9>>0]|0))break;c[q>>2]=c[q>>2]|n}while(0);n=c[m>>2]|0;if((c[k>>2]|0)>(n|0)){c[m>>2]=n+1;za=c[g>>2]|0;a[za+(n*20|0)>>0]=7;b[za+(n*20|0)+2>>1]=0;c[za+(n*20|0)+4>>2]=l;c[za+(n*20|0)+8>>2]=1;c[za+(n*20|0)+12>>2]=s;c[za+(n*20|0)+16>>2]=0;a[za+(n*20|0)+1>>0]=0;break}else{Di(Aa,7,l,1,s)|0;break}}while(0)}while((o|0)>1)}else{m=Aa+108|0;k=Aa+112|0}l=c[m>>2]|0;if((c[k>>2]|0)>(l|0)){c[m>>2]=l+1;za=c[Aa+104>>2]|0;a[za+(l*20|0)>>0]=81;b[za+(l*20|0)+2>>1]=0;c[za+(l*20|0)+4>>2]=1;c[za+(l*20|0)+8>>2]=1;c[za+(l*20|0)+12>>2]=0;c[za+(l*20|0)+16>>2]=0;a[za+(l*20|0)+1>>0]=0;za=2020;break b}else{Di(Aa,81,1,1,0)|0;za=2020;break b}}case 21:{m=c[c[(c[aa+(r<<4)+4>>2]|0)+4>>2]>>2]|0;za=wa;c[za>>2]=-2;c[za+4>>2]=-1;if(Ba){Vd(Ba,wa)|0;l=wa;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)<-1|(l|0)==-1&k>>>0<4294967295){k=wa;c[k>>2]=-1;c[k+4>>2]=-1;k=-1;n=-1}else n=l;l=m+160|0;c[l>>2]=k;c[l+4>>2]=n;l=c[m+216>>2]|0;if(!l)o=k;else{o=l+16|0;c[o>>2]=k;c[o+4>>2]=n;o=k}}else{n=m+160|0;o=c[n>>2]|0;n=c[n+4>>2]|0}m=wa;c[m>>2]=o;c[m+4>>2]=n;m=c[Aa>>2]|0;p:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=421;else za=441;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=422;break p}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=422;break p}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=421}while(0);if((za|0)==421){p=_d(m,8,0)|0;za=422}q:do if((za|0)==422)if(p){m=p;k=m;a[k>>0]=o;a[k+1>>0]=o>>8;a[k+2>>0]=o>>16;a[k+3>>0]=o>>24;m=m+4|0;a[m>>0]=n;a[m+1>>0]=n>>8;a[m+2>>0]=n>>16;a[m+3>>0]=n>>24;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break q}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break q}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}else za=441;while(0);do if((za|0)==441){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0}else Di(Aa,81,1,1,0)|0;break f}case 1:{p=c[aa+(r<<4)+4>>2]|0;if(Ba|0){o=a[Ba>>0]|0;n=d[208+(o&255)>>0]|0;k=n+-110|0;o=o<<24>>24==0;if(!(o|(k|0)!=0)){l=45841;m=Ba;do{m=m+1|0;l=l+1|0;za=a[m>>0]|0;k=(d[208+(za&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(k|0)!=0))}do if(!k)m=0;else{k=n+-102|0;if(!(o|(k|0)!=0)){l=45810;m=Ba;do{m=m+1|0;l=l+1|0;za=a[m>>0]|0;k=(d[208+(za&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(k|0)!=0))}if(!k){m=1;break}k=n+-105|0;if(!(o|(k|0)!=0)){l=45846;m=Ba;do{m=m+1|0;l=l+1|0;za=a[m>>0]|0;k=(d[208+(za&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(k|0)!=0))}if(!k){m=2;break}c[wa>>2]=0;ii(Ba,wa)|0;m=c[wa>>2]|0;m=m>>>0<3?m&255:0}while(0);a[Da+84>>0]=m;n=c[p+4>>2]|0;c[n+4>>2]=c[p>>2];l=m&255;if(b[n+22>>1]&2){k=n+17|0;if(((l|0)!=0|0)!=(d[k>>0]|0)){za=2020;break b}}else k=n+17|0;a[k>>0]=(l|0)!=0&1;a[n+18>>0]=(l|0)==2&1;k=m+-1|0;if(k>>>0>=2){za=2020;break b}ya=c[Aa+108>>2]|0;za=ed(Aa,5,18400)|0;c[za+4>>2]=r;c[za+24>>2]=r;c[za+48>>2]=ya+4;c[za+84>>2]=r;c[za+92>>2]=k;k=1<>2]=c[za>>2]|k;if($){za=2020;break b}if(!(a[(c[(c[(c[Aa>>2]|0)+16>>2]|0)+(r<<4)+4>>2]|0)+9>>0]|0)){za=2020;break b}za=Aa+156|0;c[za>>2]=c[za>>2]|k;za=2020;break b}k=c[p+4>>2]|0;c[k+4>>2]=c[p>>2];if(!(a[k+17>>0]|0))n=0;else n=(a[k+18>>0]|0)==0?1:2;m=c[Aa>>2]|0;r:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=466;else za=486;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=467;break r}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=467;break r}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=466}while(0);if((za|0)==466){p=_d(m,8,0)|0;za=467}s:do if((za|0)==467){if(!p){za=486;break}m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=0;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break s}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break s}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);do if((za|0)==486){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,1,0)|0;break f}}case 16:{if(!((Ba|0)!=0?(ya=(ii(Ba,oa)|0)==0,u=c[oa>>2]|0,!(ya|(u|0)<1)):0)){c[oa>>2]=2147483647;u=2147483647}t=c[f+116>>2]|0;t=(t|0)==0?f:t;k=t+84|0;l=c[k>>2]|0;s=1<>2]=l|s,$):0){q=c[t>>2]|0;k=q+16|0;if(c[(c[k>>2]|0)+20>>2]|0)break;if(a[t+199>>0]|0)break;l=Pe(c[q>>2]|0,0,q,wa,0,542)|0;if(l|0){cd(t,32157,T);c[t+12>>2]=l;break}ya=c[wa>>2]|0;c[(c[k>>2]|0)+20>>2]=ya;k=c[q+92>>2]|0;n=c[ya+4>>2]|0;c[n+4>>2]=c[ya>>2];do if(!(b[n+22>>1]&2)){o=n+32|0;p=n+36|0;g=(c[o>>2]|0)-(c[p>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[o>>2]=k;m=n+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;ya=(c[14820]|0)+1|0;c[14820]=ya;c[14821]=(ya|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;za=535;break}else{k=Wa[c[29352>>2]&127](l)|0;za=535}while(0);do if((za|0)==535){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{za=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-za;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);za=Se(c[n>>2]|0,o,g)|0;c[p>>2]=(c[o>>2]|0)-(g&65535);if((za|0)!=7)break;k=q+81|0;do if(!(a[k>>0]|0)){if(a[q+82>>0]|0)break;a[k>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;k=q+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[q+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break t}while(0)}while(0);m=t+80|0;c[m>>2]=c[m>>2]|s;m=Aa+108|0;k=c[m>>2]|0;n=Aa+112|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=70;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=u;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else Di(Aa,70,u,1,0)|0;k=c[m>>2]|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=59;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=r;c[za+(k*20|0)+8>>2]=0;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,59,r,0,0)|0;l=c[m>>2]|0;if((c[n>>2]|0)>(l|0)){c[m>>2]=l+1;za=c[Aa+104>>2]|0;a[za+(l*20|0)>>0]=81;b[za+(l*20|0)+2>>1]=0;c[za+(l*20|0)+4>>2]=1;c[za+(l*20|0)+8>>2]=0;c[za+(l*20|0)+12>>2]=0;c[za+(l*20|0)+16>>2]=0;a[za+(l*20|0)+1>>0]=0}else Di(Aa,81,1,0,0)|0;l=c[m>>2]|0;if((c[n>>2]|0)>(l|0)){c[m>>2]=l+1;za=c[Aa+104>>2]|0;a[za+(l*20|0)>>0]=83;b[za+(l*20|0)+2>>1]=0;c[za+(l*20|0)+4>>2]=1;c[za+(l*20|0)+8>>2]=-1;c[za+(l*20|0)+12>>2]=0;c[za+(l*20|0)+16>>2]=0;a[za+(l*20|0)+1>>0]=0}else Di(Aa,83,1,-1,0)|0;l=c[m>>2]|0;if((c[n>>2]|0)>(l|0)){c[m>>2]=l+1;za=c[Aa+104>>2]|0;a[za+(l*20|0)>>0]=47;b[za+(l*20|0)+2>>1]=0;c[za+(l*20|0)+4>>2]=1;c[za+(l*20|0)+8>>2]=k;c[za+(l*20|0)+12>>2]=0;c[za+(l*20|0)+16>>2]=0;a[za+(l*20|0)+1>>0]=0}else Di(Aa,47,1,k,0)|0;l=c[m>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))k=(c[Aa+104>>2]|0)+(((k|0)<0?l+-1|0:k)*20|0)|0;else k=59308;c[k+8>>2]=l;break f}case 4:{if(Ba|0){c[wa>>2]=0;ii(Ba,wa)|0;k=c[wa>>2]|0;c[(c[aa+(r<<4)+12>>2]|0)+80>>2]=k;m=c[aa+(r<<4)+4>>2]|0;l=c[m+4>>2]|0;c[l+4>>2]=c[m>>2];l=c[(c[l>>2]|0)+212>>2]|0;c[l+16>>2]=k;m=c[7357]|0;n=c[l+44>>2]|0;if((k|0)<=-1){za=Yv(k|0,((k|0)<0)<<31>>31|0,-1024,-1)|0;Aa=L()|0;k=(c[l+28>>2]|0)+(c[l+24>>2]|0)|0;k=Wv(za|0,Aa|0,k|0,((k|0)<0)<<31>>31|0)|0;L()|0}bb[m&127](n,k);break f}n=c[(c[aa+(r<<4)+12>>2]|0)+80>>2]|0;o=((n|0)<0)<<31>>31;m=c[Aa>>2]|0;u:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=577;else za=597;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=578;break u}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=578;break u}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=577}while(0);if((za|0)==577){p=_d(m,8,0)|0;za=578}v:do if((za|0)==578)if(p){m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=o;a[m+1>>0]=o>>8;a[m+2>>0]=o>>16;a[m+3>>0]=o>>24;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break v}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break v}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}else za=597;while(0);do if((za|0)==597){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,1,0)|0;break f}}case 5:{if(Ba|0){c[wa>>2]=1;do if(!(ii(Ba,wa)|0))k=c[wa>>2]|0;else{Aa=c[aa+(r<<4)+4>>2]|0;k=c[wa>>2]|0;m=c[Aa+4>>2]|0;c[m+4>>2]=c[Aa>>2];m=c[(c[m>>2]|0)+212>>2]|0;if(!k){k=0;break}if((k|0)<0){za=Yv(k|0,((k|0)<0)<<31>>31|0,-1024,-1)|0;Aa=L()|0;l=(c[m+28>>2]|0)+(c[m+24>>2]|0)|0;l=Wv(za|0,Aa|0,l|0,((l|0)<0)<<31>>31|0)|0;L()|0}else l=k;c[m+20>>2]=l}while(0);f=(Zm(Ba,1,(k|0)!=0&1)|0)<<24>>24==0;r=Da+32|0;za=r;xa=c[za>>2]|0;za=c[za+4>>2]|0;Aa=r;c[Aa>>2]=f?xa&-33:xa|32;c[Aa+4>>2]=f?za:za;do if(a[Da+79>>0]|0){k=c[Da+20>>2]|0;if((k|0)<=0)break;q=c[ya>>2]|0;while(1){p=k;k=k+-1|0;l=c[q+4>>2]|0;if(l|0){g=c[r>>2]&56|d[q+8>>0];m=c[l+4>>2]|0;c[m+4>>2]=c[l>>2];m=c[m>>2]|0;za=g&7;Aa=(a[m+12>>0]|0)==0;n=(za|0)==1;o=za>>>0>2&Aa;a[m+7>>0]=(n|Aa^1)&1;a[m+8>>0]=o&1;a[m+9>>0]=(za|0)==4&Aa&1;n=Aa&(n^1);do if(n){l=m+10|0;if(!(g&8)){a[l>>0]=2;l=2;break}else{a[l>>0]=3;l=3;break}}else{a[m+10>>0]=0;l=0}while(0);Aa=(l<<2|(o?l:0))&255;a[m+11>>0]=(g&16|0)==0|n^1?Aa:Aa|12;Aa=m+20|0;za=d[Aa>>0]|0;a[Aa>>0]=(g&32|0)==0?za|1:za&254}if((p|0)<=1)break;else q=q+16|0}}while(0);break f}if(0==0?(c[Da+32>>2]&32|0)==0:0){n=0;o=0}else{k=c[aa+(r<<4)+4>>2]|0;l=c[k+4>>2]|0;c[l+4>>2]=c[k>>2];l=c[(c[l>>2]|0)+212>>2]|0;k=c[l+16>>2]|0;if((k|0)<=-1){ya=Yv(k|0,((k|0)<0)<<31>>31|0,-1024,-1)|0;za=L()|0;k=(c[l+28>>2]|0)+(c[l+24>>2]|0)|0;k=Wv(ya|0,za|0,k|0,((k|0)<0)<<31>>31|0)|0;L()|0}o=c[l+20>>2]|0;o=(k|0)<(o|0)?o:k;n=o;o=((o|0)<0)<<31>>31}m=c[Aa>>2]|0;w:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=626;else za=646;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=627;break w}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=627;break w}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=626}while(0);if((za|0)==626){p=_d(m,8,0)|0;za=627}x:do if((za|0)==627){if(!p){za=646;break}m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=o;a[m+1>>0]=o>>8;a[m+2>>0]=o>>16;a[m+3>>0]=o>>24;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break x}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break x}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);do if((za|0)==646){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=81;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=1;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0;za=2020;break b}else{Di(Aa,81,1,1,0)|0;za=2020;break b}}case 25:{m=c[Aa>>2]|0;y:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=685;else za=705;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];za=m+284|0;c[za>>2]=(c[za>>2]|0)+1;za=686;break y}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];za=m+284|0;c[za>>2]=(c[za>>2]|0)+1;za=686;break y}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=685}while(0);if((za|0)==685){l=_d(m,8,0)|0;za=686}z:do if((za|0)==686)if(l){m=l;k=m;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=0;m=m+4|0;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=0;m=Aa+108|0;k=c[m>>2]|0;p=Aa+112|0;if((c[p>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=l;a[o>>0]=-14;l=p;break}else{Ei(Aa,n+(k*20|0)|0,l,-14);l=p;break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,l);l=p;break z}k=l;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[l>>2]=c[ya>>2];c[ya>>2]=l;l=p;break z}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);l=p;break}else{ya=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);l=p;break}}else za=705;while(0);do if((za|0)==705){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}else m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,1,0)|0;break f}}case 35:{if(Ba|0){l=a[Ba>>0]|0;do if((l+-48&255)<3)k=(l<<24>>24)+-48|0;else{n=d[208+(l&255)>>0]|0;k=n+-102|0;o=l<<24>>24==0;if(!(o|(k|0)!=0)){l=38150;m=Ba;do{m=m+1|0;l=l+1|0;Aa=a[m>>0]|0;k=(d[208+(Aa&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(k|0)!=0))}if(!k){k=1;break}k=n+-109|0;if(!(o|(k|0)!=0)){l=36061;m=Ba;do{m=m+1|0;l=l+1|0;Aa=a[m>>0]|0;k=(d[208+(Aa&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(k|0)!=0))}k=(k|0)==0?2:0}while(0);l=c[f>>2]|0;m=l+80|0;if((k|0)==(d[m>>0]|0))break f;n=l+16|0;o=c[(c[n>>2]|0)+20>>2]|0;A:do if(o|0){do if(a[l+79>>0]|0){if(a[o+8>>0]|0)break;ug(o);c[(c[n>>2]|0)+20>>2]=0;$b(l);break A}while(0);cd(f,45858,_);break f}while(0);a[m>>0]=k;break f}n=d[Da+80>>0]|0;m=c[Aa>>2]|0;B:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=727;else za=747;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=728;break B}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=728;break B}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=727}while(0);if((za|0)==727){p=_d(m,8,0)|0;za=728}C:do if((za|0)==728)if(p){m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=0;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break C}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break C}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}else za=747;while(0);do if((za|0)==747){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=81;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=1;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0;za=2020;break b}else{Di(Aa,81,1,1,0)|0;za=2020;break b}}case 36:{if(!Ba){l=c[14771]|0;if(!l)break f;m=Aa+108|0;k=c[m>>2]|0;n=Aa+112|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=110;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,110,0,1,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;Ei(Aa,(c[Aa+104>>2]|0)+(k*20|0)|0,l,0)}k=c[m>>2]|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,1,0)|0;break f}}do if(a[Ba>>0]|0){Aa=c[Da>>2]|0;Aa=(Za[c[Aa+32>>2]&127](Aa,Ba,1,wa)|0)!=0;if(Aa|(c[wa>>2]|0)==0){cd(f,45410,I);za=2020;break b}else break}while(0);D:do if((d[Da+80>>0]|0)<2){k=c[f>>2]|0;l=k+16|0;m=c[(c[l>>2]|0)+20>>2]|0;if(!m)break;do if(a[k+79>>0]|0){if(a[m+8>>0]|0)break;ug(m);c[(c[l>>2]|0)+20>>2]=0;$b(k);break D}while(0);cd(f,45858,K)}while(0);k=c[14771]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{Aa=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-Aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);if(!(a[Ba>>0]|0)){c[14771]=0;za=2020;break b}else{c[N>>2]=Ba;za=Bb(31408,N)|0;c[14771]=za;za=2020;break b}}case 33:{if(Ba|0){k=Da+79|0;if(!(a[k>>0]|0)){cd(f,45435,J);za=2020;break b}if($){za=2020;break b}Aa=(Zm(Ba,0,1)|0)+1&7;a[aa+(r<<4)+8>>0]=Aa<<24>>24==0?1:Aa;a[aa+(r<<4)+9>>0]=1;if(!(a[k>>0]|0)){za=2020;break b}k=c[Da+20>>2]|0;if((k|0)<=0){za=2020;break b}r=Da+32|0;q=c[ya>>2]|0;while(1){p=k;k=k+-1|0;l=c[q+4>>2]|0;if(l|0){g=c[r>>2]&56|d[q+8>>0];m=c[l+4>>2]|0;c[m+4>>2]=c[l>>2];m=c[m>>2]|0;za=g&7;Aa=(a[m+12>>0]|0)==0;n=(za|0)==1;o=za>>>0>2&Aa;a[m+7>>0]=(n|Aa^1)&1;a[m+8>>0]=o&1;a[m+9>>0]=(za|0)==4&Aa&1;n=Aa&(n^1);do if(n){l=m+10|0;if(!(g&8)){a[l>>0]=2;l=2;break}else{a[l>>0]=3;l=3;break}}else{a[m+10>>0]=0;l=0}while(0);Aa=(l<<2|(o?l:0))&255;a[m+11>>0]=(g&16|0)==0|n^1?Aa:Aa|12;Aa=m+20|0;za=d[Aa>>0]|0;a[Aa>>0]=(g&32|0)==0?za|1:za&254}if((p|0)<=1)break f;else q=q+16|0}}n=(d[aa+(r<<4)+8>>0]|0)+-1|0;o=((n|0)<0)<<31>>31;m=c[Aa>>2]|0;E:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=815;else za=835;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=816;break E}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=816;break E}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=815}while(0);if((za|0)==815){p=_d(m,8,0)|0;za=816}F:do if((za|0)==816)if(p){m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=o;a[m+1>>0]=o>>8;a[m+2>>0]=o>>16;a[m+3>>0]=o>>24;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break F}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break F}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}else za=835;while(0);do if((za|0)==835){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,1,0)|0;break f}}case 2:{if(Ba|0){l=4544+(j<<4)+8|0;k=c[l>>2]|0;l=c[l+4>>2]|0;m=Da+79|0;za=(a[m>>0]|0)==0;k=za?k&-16385:k;l=za?l:l;do if(!((Zm(Ba,1,0)|0)<<24>>24)){za=Da+32|0;xa=za;f=c[xa+4>>2]&~l;c[za>>2]=c[xa>>2]&~k;c[za+4>>2]=f;if(!((k|0)==524288&(l|0)==0))break;za=Da+472|0;c[za>>2]=0;c[za+4>>2]=0}else{za=Da+32|0;xa=za;f=c[xa+4>>2]|l;c[za>>2]=c[xa>>2]|k;c[za+4>>2]=f}while(0);k=Aa+108|0;l=c[k>>2]|0;if((c[Aa+112>>2]|0)>(l|0)){c[k>>2]=l+1;$=c[Aa+104>>2]|0;a[$+(l*20|0)>>0]=-98;$=$+(l*20|0)+1|0;aa=$+19|0;do{a[$>>0]=0;$=$+1|0}while(($|0)<(aa|0))}else Di(Aa,158,0,0,0)|0;if(!(a[m>>0]|0)){za=2020;break b}k=c[Da+20>>2]|0;if((k|0)<=0){za=2020;break b}r=Da+32|0;q=c[ya>>2]|0;while(1){p=k;k=k+-1|0;l=c[q+4>>2]|0;if(l|0){g=c[r>>2]&56|d[q+8>>0];m=c[l+4>>2]|0;c[m+4>>2]=c[l>>2];m=c[m>>2]|0;za=g&7;Aa=(a[m+12>>0]|0)==0;n=(za|0)==1;o=za>>>0>2&Aa;a[m+7>>0]=(n|Aa^1)&1;a[m+8>>0]=o&1;a[m+9>>0]=(za|0)==4&Aa&1;n=Aa&(n^1);do if(n){l=m+10|0;if(!(g&8)){a[l>>0]=2;l=2;break}else{a[l>>0]=3;l=3;break}}else{a[m+10>>0]=0;l=0}while(0);Aa=(l<<2|(o?l:0))&255;a[m+11>>0]=(g&16|0)==0|n^1?Aa:Aa|12;Aa=m+20|0;za=d[Aa>>0]|0;a[Aa>>0]=(g&32|0)==0?za|1:za&254}if((p|0)<=1)break f;else q=q+16|0}}za=a[4544+(j<<4)+7>>0]|0;n=za&255;za=za<<24>>24==0;Wi(Aa,za?1:n);if(za)if(!(a[(c[Aa>>2]|0)+81>>0]|0)){yc(c[Aa+116>>2]|0,c[s>>2]|0,-1,1,0)|0;o=Aa}else o=Aa;else{m=Aa+116|0;k=0;l=d[4544+(j<<4)+6>>0]|0;while(1){if(!(a[(c[Aa>>2]|0)+81>>0]|0))yc((c[m>>2]|0)+(k*40|0)|0,c[5504+(l<<2)>>2]|0,-1,1,0)|0;k=k+1|0;if((k|0)==(n|0)){o=Aa;break}else l=l+1|0}}n=Da+32|0;m=4544+(j<<4)+8|0;n=(c[m>>2]&c[n>>2]|0?1:(c[m+4>>2]&c[n+4>>2]|0)!=0)&1;m=c[o>>2]|0;G:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=878;else za=898;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=879;break G}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=879;break G}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=878}while(0);if((za|0)==878){p=_d(m,8,0)|0;za=879}H:do if((za|0)==879){if(!p){za=898;break}m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=0;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[o>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break H}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break H}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);do if((za|0)==898){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[o>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=81;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=1;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0;za=2020;break b}else{Di(Aa,81,1,1,0)|0;za=2020;break b}}case 34:{if(!Ba)break f;s=bd(f,2,Ba,la)|0;if(!s)break f;m=c[s+72>>2]|0;if(!m)n=-1e6;else{l=c[ya>>2]|0;k=0;while(1)if((c[l+(k<<4)+12>>2]|0)==(m|0)){n=k;break}else k=k+1|0}k=c[s+8>>2]|0;I:do if(!k)r=0;else while(1){ya=k+55|0;if(((d[ya>>0]|d[ya+1>>0]<<8)&3)==2){r=k;break I}k=c[k+20>>2]|0;if(!k){r=0;break}}while(0);c[xa>>2]=7;o=c[f+116>>2]|0;o=(o|0)==0?f:o;k=o+84|0;l=c[k>>2]|0;m=1<>2]=l|m;if((n|0)!=1)break;q=c[o>>2]|0;k=q+16|0;if(c[(c[k>>2]|0)+20>>2]|0)break;if(a[o+199>>0]|0)break;l=Pe(c[q>>2]|0,0,q,wa,0,542)|0;if(l|0){cd(o,32157,X);c[o+12>>2]=l;break}ya=c[wa>>2]|0;c[(c[k>>2]|0)+20>>2]=ya;k=c[q+92>>2]|0;n=c[ya+4>>2]|0;c[n+4>>2]=c[ya>>2];do if(!(b[n+22>>1]&2)){o=n+32|0;p=n+36|0;g=(c[o>>2]|0)-(c[p>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[o>>2]=k;m=n+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;ya=(c[14820]|0)+1|0;c[14820]=ya;c[14821]=(ya|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;za=951;break}else{k=Wa[c[29352>>2]&127](l)|0;za=951}while(0);do if((za|0)==951){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ya=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);ya=Se(c[n>>2]|0,o,g)|0;c[p>>2]=(c[o>>2]|0)-(g&65535);if((ya|0)!=7)break;k=q+81|0;do if(!(a[k>>0]|0)){if(a[q+82>>0]|0)break;a[k>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;k=q+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[q+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break J}while(0)}while(0);Sk(f,s)|0;i=s+42|0;l=b[i>>1]|0;if(l<<16>>16<=0)break f;m=c[s+4>>2]|0;t=4544+(j<<4)+8|0;u=r+4|0;if(!r){r=c[t>>2]|0;t=c[t+4>>2]|0;s=(r|0)==0&(t|0)==0;t=(r|0)==0&(t|0)==0?45496:45488;r=0;k=0;q=m;while(1){p=a[q+15>>0]|0;za=p&2;g=(za&255)>>>1&255;if(za<<24>>24!=0&s)k=k+1|0;else{n=c[q>>2]|0;if(!(p&4))m=59952;else m=n+(Eu(n)|0)+1|0;o=(a[q+12>>0]|0)!=0&1;l=c[q+4>>2]|0;if(!l)l=0;else l=c[l+8>>2]|0;c[ia>>2]=r-k;c[ia+4>>2]=n;c[ia+8>>2]=m;c[ia+12>>2]=o;c[ia+16>>2]=l;c[ia+20>>2]=p&1;c[ia+24>>2]=g;_m(Aa,1,t,ia);l=b[i>>1]|0}r=r+1|0;if((r|0)>=(l<<16>>16|0))break f;else q=q+16|0}}s=0;k=0;r=m;p=l<<16>>16;while(1){o=a[r+15>>0]|0;ya=o&2;q=(ya&255)>>>1&255;do if(!(ya<<24>>24))za=979;else{ya=t;if(!((c[ya>>2]|0)==0&(c[ya+4>>2]|0)==0)){za=979;break}k=k+1|0}while(0);if((za|0)==979){za=0;l=(o&1)==0;K:do if(l)l=(l^1)&1;else{if((p|0)<1){l=1;break}m=c[u>>2]|0;l=1;while(1){if((s|0)==(b[m+(l+-1<<1)>>1]|0))break K;n=l+1|0;if((l|0)<(p|0))l=n;else{l=n;break}}}while(0);p=t;p=(c[p>>2]|0)==0&(c[p+4>>2]|0)==0?45496:45488;g=c[r>>2]|0;if(!(o&4))n=59952;else n=g+(Eu(g)|0)+1|0;o=(a[r+12>>0]|0)!=0&1;m=c[r+4>>2]|0;if(!m)m=0;else m=c[m+8>>2]|0;c[ja>>2]=s-k;c[ja+4>>2]=g;c[ja+8>>2]=n;c[ja+12>>2]=o;c[ja+16>>2]=m;c[ja+20>>2]=l;c[ja+24>>2]=q;_m(Aa,1,p,ja);l=b[i>>1]|0}s=s+1|0;p=l<<16>>16;if((s|0)>=(p|0))break;else r=r+16|0}break}case 17:{if(!Ba)break f;i=hi(Da,Ba,la)|0;if(!i)break f;m=c[i+24>>2]|0;if(!m)k=-1e6;else{l=c[ya>>2]|0;k=0;while(1)if((c[l+(k<<4)+12>>2]|0)==(m|0))break;else k=k+1|0}u=4544+(j<<4)+8|0;u=(c[u>>2]|0)==0&(c[u+4>>2]|0)==0;r=b[(u?i+50|0:i+52|0)>>1]|0;j=r&65535;c[xa>>2]=u?3:6;s=c[i+12>>2]|0;o=c[f+116>>2]|0;o=(o|0)==0?f:o;l=o+84|0;m=c[l>>2]|0;n=1<>2]=m|n;if((k|0)!=1)break;q=c[o>>2]|0;k=q+16|0;if(c[(c[k>>2]|0)+20>>2]|0)break;if(a[o+199>>0]|0)break;l=Pe(c[q>>2]|0,0,q,wa,0,542)|0;if(l|0){cd(o,32157,Z);c[o+12>>2]=l;break}ya=c[wa>>2]|0;c[(c[k>>2]|0)+20>>2]=ya;k=c[q+92>>2]|0;n=c[ya+4>>2]|0;c[n+4>>2]=c[ya>>2];do if(!(b[n+22>>1]&2)){o=n+32|0;p=n+36|0;g=(c[o>>2]|0)-(c[p>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[o>>2]=k;m=n+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;ya=(c[14820]|0)+1|0;c[14820]=ya;c[14821]=(ya|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;za=1010;break}else{k=Wa[c[29352>>2]&127](l)|0;za=1010}while(0);do if((za|0)==1010){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{za=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-za;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);za=Se(c[n>>2]|0,o,g)|0;c[p>>2]=(c[o>>2]|0)-(g&65535);if((za|0)!=7)break;k=q+81|0;do if(!(a[k>>0]|0)){if(a[q+82>>0]|0)break;a[k>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;k=q+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[q+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break L}while(0)}while(0);if(!(r<<16>>16))break f;t=i+4|0;q=s+4|0;r=Aa+108|0;s=Aa+112|0;o=i+28|0;p=i+32|0;n=i+50|0;g=Aa+104|0;if(u){m=0;do{za=b[(c[t>>2]|0)+(m<<1)>>1]|0;k=za<<16>>16;if(za<<16>>16<0)l=0;else l=c[(c[q>>2]|0)+(k<<4)>>2]|0;c[ea>>2]=m;c[ea+4>>2]=k;c[ea+8>>2]=l;_m(Aa,1,45503,ea);k=c[xa>>2]|0;l=c[r>>2]|0;if((c[s>>2]|0)>(l|0)){c[r>>2]=l+1;za=c[g>>2]|0;a[za+(l*20|0)>>0]=81;b[za+(l*20|0)+2>>1]=0;c[za+(l*20|0)+4>>2]=1;c[za+(l*20|0)+8>>2]=k;c[za+(l*20|0)+12>>2]=0;c[za+(l*20|0)+16>>2]=0;a[za+(l*20|0)+1>>0]=0}else Di(Aa,81,1,k,0)|0;m=m+1|0}while((m|0)!=(j|0))}else{m=0;do{za=b[(c[t>>2]|0)+(m<<1)>>1]|0;k=za<<16>>16;if(za<<16>>16<0)l=0;else l=c[(c[q>>2]|0)+(k<<4)>>2]|0;c[fa>>2]=m;c[fa+4>>2]=k;c[fa+8>>2]=l;_m(Aa,1,45503,fa);l=c[(c[p>>2]|0)+(m<<2)>>2]|0;k=m>>>0<(e[n>>1]|0)>>>0&1;c[ga>>2]=d[(c[o>>2]|0)+m>>0];c[ga+4>>2]=l;c[ga+8>>2]=k;_m(Aa,4,45508,ga);k=c[xa>>2]|0;l=c[r>>2]|0;if((c[s>>2]|0)>(l|0)){c[r>>2]=l+1;za=c[g>>2]|0;a[za+(l*20|0)>>0]=81;b[za+(l*20|0)+2>>1]=0;c[za+(l*20|0)+4>>2]=1;c[za+(l*20|0)+8>>2]=k;c[za+(l*20|0)+12>>2]=0;c[za+(l*20|0)+16>>2]=0;a[za+(l*20|0)+1>>0]=0}else Di(Aa,81,1,k,0)|0;m=m+1|0}while((m|0)!=(j|0))}break}case 18:{if(!Ba)break f;r=Sd(Da,Ba,la)|0;if(!r)break f;m=c[r+72>>2]|0;if(!m)k=-1e6;else{l=c[ya>>2]|0;k=0;while(1)if((c[l+(k<<4)+12>>2]|0)==(m|0))break;else k=k+1|0}c[xa>>2]=5;o=c[f+116>>2]|0;o=(o|0)==0?f:o;l=o+84|0;m=c[l>>2]|0;n=1<>2]=m|n;if((k|0)!=1)break;q=c[o>>2]|0;k=q+16|0;if(c[(c[k>>2]|0)+20>>2]|0)break;if(a[o+199>>0]|0)break;l=Pe(c[q>>2]|0,0,q,wa,0,542)|0;if(l|0){cd(o,32157,V);c[o+12>>2]=l;break}ya=c[wa>>2]|0;c[(c[k>>2]|0)+20>>2]=ya;k=c[q+92>>2]|0;n=c[ya+4>>2]|0;c[n+4>>2]=c[ya>>2];do if(!(b[n+22>>1]&2)){o=n+32|0;p=n+36|0;g=(c[o>>2]|0)-(c[p>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[o>>2]=k;m=n+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;ya=(c[14820]|0)+1|0;c[14820]=ya;c[14821]=(ya|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;za=1059;break}else{k=Wa[c[29352>>2]&127](l)|0;za=1059}while(0);do if((za|0)==1059){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{za=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-za;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);za=Se(c[n>>2]|0,o,g)|0;c[p>>2]=(c[o>>2]|0)-(g&65535);if((za|0)!=7)break;k=q+81|0;do if(!(a[k>>0]|0)){if(a[q+82>>0]|0)break;a[k>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;k=q+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[q+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break M}while(0)}while(0);k=c[r+8>>2]|0;if(!k)break f;l=0;while(1){xa=c[k>>2]|0;f=(a[k+54>>0]|0)!=0&1;ya=k+55|0;ya=c[30092+(((d[ya>>0]|d[ya+1>>0]<<8)&3)<<2)>>2]|0;za=(c[k+36>>2]|0)!=0&1;c[ba>>2]=l;c[ba+4>>2]=xa;c[ba+8>>2]=f;c[ba+12>>2]=ya;c[ba+16>>2]=za;_m(Aa,1,45517,ba);k=c[k+20>>2]|0;if(!k)break;else l=l+1|0}break}case 10:{c[xa>>2]=3;o=Da+20|0;k=c[o>>2]|0;if((k|0)<=0){za=2020;break b}n=0;while(1){l=c[ya>>2]|0;m=c[l+(n<<4)+4>>2]|0;if(m){l=c[l+(n<<4)>>2]|0;k=c[c[m+4>>2]>>2]|0;if(!(a[k+15>>0]|0))k=c[k+168>>2]|0;else k=59952;c[U>>2]=n;c[U+4>>2]=l;c[U+8>>2]=k;_m(Aa,1,45523,U);k=c[o>>2]|0}n=n+1|0;if((n|0)>=(k|0)){za=2020;break b}}}case 7:{c[xa>>2]=2;k=c[Da+388>>2]|0;if(!k){za=2020;break b}l=0;while(1){za=c[c[k+8>>2]>>2]|0;c[M>>2]=l;c[M+4>>2]=za;_m(Aa,1,45527,M);k=c[k>>2]|0;if(!k)break;else l=l+1|0}break}case 14:{if(!Ba)break f;r=Sd(Da,Ba,la)|0;if(!r)break f;s=c[r+16>>2]|0;if(!s)break f;m=c[r+72>>2]|0;if(!m)k=-1e6;else{l=c[ya>>2]|0;k=0;while(1)if((c[l+(k<<4)+12>>2]|0)==(m|0))break;else k=k+1|0}c[xa>>2]=8;o=c[f+116>>2]|0;o=(o|0)==0?f:o;l=o+84|0;m=c[l>>2]|0;n=1<>2]=m|n;if((k|0)!=1)break;q=c[o>>2]|0;k=q+16|0;if(c[(c[k>>2]|0)+20>>2]|0)break;if(a[o+199>>0]|0)break;l=Pe(c[q>>2]|0,0,q,wa,0,542)|0;if(l|0){cd(o,32157,W);c[o+12>>2]=l;break}ya=c[wa>>2]|0;c[(c[k>>2]|0)+20>>2]=ya;k=c[q+92>>2]|0;n=c[ya+4>>2]|0;c[n+4>>2]=c[ya>>2];do if(!(b[n+22>>1]&2)){o=n+32|0;p=n+36|0;g=(c[o>>2]|0)-(c[p>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[o>>2]=k;m=n+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;ya=(c[14820]|0)+1|0;c[14820]=ya;c[14821]=(ya|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;za=1106;break}else{k=Wa[c[29352>>2]&127](l)|0;za=1106}while(0);do if((za|0)==1106){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{za=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-za;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);za=Se(c[n>>2]|0,o,g)|0;c[p>>2]=(c[o>>2]|0)-(g&65535);if((za|0)!=7)break;k=q+81|0;do if(!(a[k>>0]|0)){if(a[q+82>>0]|0)break;a[k>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;k=q+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[q+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break N}while(0)}while(0);i=r+4|0;m=s;n=0;while(1){p=m+20|0;O:do if((c[p>>2]|0)>0){g=m+8|0;q=m+26|0;r=m+25|0;o=0;while(1){s=c[g>>2]|0;t=c[(c[i>>2]|0)+(c[m+36+(o<<3)>>2]<<4)>>2]|0;u=c[m+36+(o<<3)+4>>2]|0;switch(a[q>>0]|0){case 8:{k=45928;break}case 9:{k=45937;break}case 10:{k=45949;break}case 7:{k=45957;break}default:k=45966}switch(a[r>>0]|0){case 8:{l=45928;break}case 9:{l=45937;break}case 10:{l=45949;break}case 7:{l=45957;break}default:l=45966}c[da>>2]=n;c[da+4>>2]=o;c[da+8>>2]=s;c[da+12>>2]=t;c[da+16>>2]=u;c[da+20>>2]=k;c[da+24>>2]=l;c[da+28>>2]=45539;_m(Aa,1,45530,da);o=o+1|0;if((o|0)>=(c[p>>2]|0))break O}}while(0);m=c[m+4>>2]|0;if(!m)break;else n=n+1|0}break}case 13:{k=c[xa>>2]|0;J=k+1|0;K=k+5|0;M=k+6|0;c[xa>>2]=M;l=c[(c[(c[ya>>2]|0)+(r<<4)+12>>2]|0)+16>>2]|0;P:do if(l|0){C=(Ba|0)==0;D=f+116|0;E=Aa+108|0;F=Aa+112|0;G=Aa+104|0;H=f+40|0;I=f+56|0;h=k+2|0;w=k+3|0;x=Aa+12|0;y=Da+480|0;z=Da+304|0;A=Da+308|0;B=Da+300|0;k=l;do{if(C){v=c[k+8>>2]|0;k=c[k>>2]|0}else{v=bd(f,0,Ba,la)|0;k=0}do if(v|0){t=v+16|0;if(!(c[t>>2]|0))break;m=c[v+72>>2]|0;if(!m)s=-1e6;else{n=c[ya>>2]|0;l=0;while(1)if((c[n+(l<<4)+12>>2]|0)==(m|0)){s=l;break}else l=l+1|0}o=c[D>>2]|0;o=(o|0)==0?f:o;l=o+84|0;m=c[l>>2]|0;n=1<>2]=m|n;if((s|0)!=1)break;r=c[o>>2]|0;l=r+16|0;if(c[(c[l>>2]|0)+20>>2]|0)break;if(a[o+199>>0]|0)break;m=Pe(c[r>>2]|0,0,r,wa,0,542)|0;if(m|0){cd(o,32157,na);c[o+12>>2]=m;break}ta=c[wa>>2]|0;c[(c[l>>2]|0)+20>>2]=ta;l=c[r+92>>2]|0;o=c[ta+4>>2]|0;c[o+4>>2]=c[ta>>2];do if(!(b[o+22>>1]&2)){p=o+32|0;g=o+36|0;q=(c[p>>2]|0)-(c[g>>2]|0)|0;do if((l+-512|0)>>>0<65025){if(l+-1&l|0)break;c[p>>2]=l;n=o+80|0;l=c[n>>2]|0;if(!l)break;m=l+-4|0;c[n>>2]=m;l=m;do if((c[14816]|0)>>>0<=l>>>0)if((c[14817]|0)>>>0>l>>>0){c[14979]=(c[14979]|0)+-1;c[m>>2]=c[14819];c[14819]=m;ta=(c[14820]|0)+1|0;c[14820]=ta;c[14821]=(ta|0)<(c[14815]|0)&1;break}else{l=Wa[c[29352>>2]&127](m)|0;za=1159;break}else{l=Wa[c[29352>>2]&127](m)|0;za=1159}while(0);do if((za|0)==1159){za=0;c[14980]=(c[14980]|0)-l;if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{ta=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-ta;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[n>>2]=0}while(0);ta=Se(c[o>>2]|0,p,q)|0;c[g>>2]=(c[p>>2]|0)-(q&65535);if((ta|0)!=7)break;l=r+81|0;do if(!(a[l>>0]|0)){if(a[r+82>>0]|0)break;a[l>>0]=1;if((c[r+180>>2]|0)>0)c[r+264>>2]=1;l=r+272|0;c[l>>2]=(c[l>>2]|0)+1;l=c[r+236>>2]|0;if(!l)break;c[l+12>>2]=7}while(0);break Q}while(0)}while(0);Hj(f,s,c[v+28>>2]|0,0,c[v>>2]|0);l=M+(b[v+42>>1]|0)|0;if((l|0)>(c[xa>>2]|0)){c[xa>>2]=l;Gj(f,0,s,v,108)}else Gj(f,0,s,v,108);m=c[v>>2]|0;l=c[E>>2]|0;if((c[F>>2]|0)>(l|0)){c[E>>2]=l+1;ta=c[G>>2]|0;a[ta+(l*20|0)>>0]=110;b[ta+(l*20|0)+2>>1]=0;c[ta+(l*20|0)+4>>2]=0;c[ta+(l*20|0)+8>>2]=J;c[ta+(l*20|0)+12>>2]=0;c[ta+(l*20|0)+16>>2]=0;a[ta+(l*20|0)+1>>0]=0}else l=Di(Aa,110,0,J,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((l|0)<0)l=(c[E>>2]|0)+-1|0;Ei(Aa,(c[G>>2]|0)+(l*20|0)|0,m,0)}l=c[t>>2]|0;if(!l)l=1;else{p=l;l=1;do{m=Sd(Da,c[p+8>>2]|0,la)|0;R:do if(m|0){c[oa>>2]=0;Hj(f,s,c[m+28>>2]|0,0,c[m>>2]|0);if(Om(f,m,p,oa,0)|0)break P;o=c[oa>>2]|0;if(!o){Gj(f,l,s,m,108);break}m=c[o+44>>2]|0;n=c[E>>2]|0;if((c[F>>2]|0)>(n|0)){c[E>>2]=n+1;ta=c[G>>2]|0;a[ta+(n*20|0)>>0]=108;b[ta+(n*20|0)+2>>1]=0;c[ta+(n*20|0)+4>>2]=l;c[ta+(n*20|0)+8>>2]=m;c[ta+(n*20|0)+12>>2]=s;c[ta+(n*20|0)+16>>2]=0;a[ta+(n*20|0)+1>>0]=0}else Di(Aa,108,l,m,s)|0;n=c[ua>>2]|0;o=Ij(f,o)|0;if(!o)break;m=c[n>>2]|0;if(!(a[m+81>>0]|0)){sa=c[n+104>>2]|0;ta=(c[n+108>>2]|0)+-1|0;a[sa+(ta*20|0)+1>>0]=-9;c[sa+(ta*20|0)+16>>2]=o;break}if(c[m+480>>2]|0)break;ta=(c[o>>2]|0)+-1|0;c[o>>2]=ta;if(ta|0)break;m=c[o+12>>2]|0;do if(m|0){if(c[m+480>>2]|0){Xd(m,o);break R}n=o;if((c[m+304>>2]|0)>>>0>n>>>0)break;if((c[m+308>>2]|0)>>>0<=n>>>0)break;ta=m+300|0;c[o>>2]=c[ta>>2];c[ta>>2]=o;break R}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{ta=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-ta;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}while(0);l=l+1|0;p=c[p+4>>2]|0}while((p|0)!=0)}if((c[H>>2]|0)<(l|0))c[H>>2]=l;l=c[E>>2]|0;if((c[F>>2]|0)>(l|0)){c[E>>2]=l+1;$=c[G>>2]|0;a[$+(l*20|0)>>0]=36;$=$+(l*20|0)+1|0;aa=$+19|0;do{a[$>>0]=0;$=$+1|0}while(($|0)<(aa|0));j=l}else j=Di(Aa,36,0,0,0)|0;l=c[t>>2]|0;if(l|0){i=v+36|0;u=1;while(1){s=l+8|0;m=Sd(Da,c[s>>2]|0,la)|0;c[oa>>2]=0;c[va>>2]=0;p=(m|0)!=0;if(p)Om(f,m,l,oa,va)|0;t=c[I>>2]|0;r=t+-1|0;c[I>>2]=r;g=l+20|0;m=c[g>>2]|0;if((m|0)>0){o=0;do{n=c[va>>2]|0;m=o+M|0;Vj(Aa,v,0,c[((n|0)==0?l+36+(o<<3)|0:n+(o<<2)|0)>>2]|0,m);n=c[E>>2]|0;if((c[F>>2]|0)>(n|0)){c[E>>2]=n+1;ta=c[G>>2]|0;a[ta+(n*20|0)>>0]=50;b[ta+(n*20|0)+2>>1]=0;c[ta+(n*20|0)+4>>2]=m;c[ta+(n*20|0)+8>>2]=r;c[ta+(n*20|0)+12>>2]=0;c[ta+(n*20|0)+16>>2]=0;a[ta+(n*20|0)+1>>0]=0}else Di(Aa,50,m,r,0)|0;o=o+1|0;m=c[g>>2]|0}while((o|0)<(m|0))}n=c[oa>>2]|0;do if(!n){if(!p)break;m=c[E>>2]|0;n=m+2|0;if((c[F>>2]|0)>(m|0)){c[E>>2]=m+1;ta=c[G>>2]|0;a[ta+(m*20|0)>>0]=30;b[ta+(m*20|0)+2>>1]=0;c[ta+(m*20|0)+4>>2]=u;c[ta+(m*20|0)+8>>2]=n;c[ta+(m*20|0)+12>>2]=M;c[ta+(m*20|0)+16>>2]=0;a[ta+(m*20|0)+1>>0]=0}else Di(Aa,30,u,n,M)|0;m=c[E>>2]|0;if((c[F>>2]|0)>(m|0)){c[E>>2]=m+1;ta=c[G>>2]|0;a[ta+(m*20|0)>>0]=11;b[ta+(m*20|0)+2>>1]=0;c[ta+(m*20|0)+4>>2]=0;c[ta+(m*20|0)+8>>2]=r;c[ta+(m*20|0)+12>>2]=0;c[ta+(m*20|0)+16>>2]=0;a[ta+(m*20|0)+1>>0]=0;break}else{Di(Aa,11,0,r,0)|0;break}}else{q=gl(Da,n)|0;g=c[g>>2]|0;n=c[E>>2]|0;if((c[F>>2]|0)>(n|0)){c[E>>2]=n+1;ta=c[G>>2]|0;a[ta+(n*20|0)>>0]=92;b[ta+(n*20|0)+2>>1]=0;c[ta+(n*20|0)+4>>2]=M;c[ta+(n*20|0)+8>>2]=m;c[ta+(n*20|0)+12>>2]=K;c[ta+(n*20|0)+16>>2]=0;a[ta+(n*20|0)+1>>0]=0;m=n}else m=Di(Aa,92,M,m,K)|0;n=c[Aa>>2]|0;S:do if(!(a[n+81>>0]|0)){if((m|0)<0)m=(c[E>>2]|0)+-1|0;n=c[G>>2]|0;o=n+(m*20|0)|0;do if((g|0)<=-1){p=n+(m*20|0)+1|0;if(a[p>>0]|0)break;if((g|0)==-3){c[n+(m*20|0)+16>>2]=q;a[p>>0]=-3;break S}if(!q)break S;c[n+(m*20|0)+16>>2]=q;a[p>>0]=g;if((g|0)!=-12)break S;ta=q+12|0;c[ta>>2]=(c[ta>>2]|0)+1;break S}while(0);Ei(Aa,o,q,g)}else{if((g|0)==-12)break;kg(n,g,q)}while(0);m=c[E>>2]|0;if((c[F>>2]|0)>(m|0)){c[E>>2]=m+1;ta=c[G>>2]|0;a[ta+(m*20|0)>>0]=29;b[ta+(m*20|0)+2>>1]=0;c[ta+(m*20|0)+4>>2]=u;c[ta+(m*20|0)+8>>2]=r;c[ta+(m*20|0)+12>>2]=K;c[ta+(m*20|0)+16>>2]=0;a[ta+(m*20|0)+1>>0]=0}else m=Di(Aa,29,u,r,K)|0;if(a[(c[Aa>>2]|0)+81>>0]|0)break;ta=c[G>>2]|0;a[ta+(m*20|0)+1>>0]=-3;c[ta+(m*20|0)+16>>2]=0}while(0);m=c[E>>2]|0;n=(c[F>>2]|0)>(m|0);do if(!(c[i>>2]&32))if(n){c[E>>2]=m+1;ta=c[G>>2]|0;a[ta+(m*20|0)>>0]=-128;b[ta+(m*20|0)+2>>1]=0;c[ta+(m*20|0)+4>>2]=0;c[ta+(m*20|0)+8>>2]=h;c[ta+(m*20|0)+12>>2]=0;c[ta+(m*20|0)+16>>2]=0;a[ta+(m*20|0)+1>>0]=0;break}else{Di(Aa,128,0,h,0)|0;break}else if(n){c[E>>2]=m+1;ta=c[G>>2]|0;a[ta+(m*20|0)>>0]=73;b[ta+(m*20|0)+2>>1]=0;c[ta+(m*20|0)+4>>2]=0;c[ta+(m*20|0)+8>>2]=h;c[ta+(m*20|0)+12>>2]=0;c[ta+(m*20|0)+16>>2]=0;a[ta+(m*20|0)+1>>0]=0;break}else{Di(Aa,73,0,h,0)|0;break}while(0);c[ma>>2]=c[s>>2];c[ma+4>>2]=u+-1;_m(Aa,w,45544,ma);m=c[E>>2]|0;if((c[F>>2]|0)>(m|0)){c[E>>2]=m+1;ta=c[G>>2]|0;a[ta+(m*20|0)>>0]=81;b[ta+(m*20|0)+2>>1]=0;c[ta+(m*20|0)+4>>2]=J;c[ta+(m*20|0)+8>>2]=4;c[ta+(m*20|0)+12>>2]=0;c[ta+(m*20|0)+16>>2]=0;a[ta+(m*20|0)+1>>0]=0}else Di(Aa,81,J,4,0)|0;n=c[x>>2]|0;m=0-t|0;if(((c[n+56>>2]|0)+(c[n+60>>2]|0)|0)<0)mk(n,Aa,m);else c[(c[n+64>>2]|0)+(m<<2)>>2]=c[E>>2];m=c[va>>2]|0;T:do if(m|0){if(c[y>>2]|0){Xd(Da,m);break}n=m;do if((c[z>>2]|0)>>>0<=n>>>0){if((c[A>>2]|0)>>>0<=n>>>0)break;c[m>>2]=c[B>>2];c[B>>2]=m;break T}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{ta=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-ta;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);l=c[l+4>>2]|0;if(!l)break;else u=u+1|0}}l=j+1|0;m=c[E>>2]|0;if((c[F>>2]|0)>(m|0)){c[E>>2]=m+1;ta=c[G>>2]|0;a[ta+(m*20|0)>>0]=5;b[ta+(m*20|0)+2>>1]=0;c[ta+(m*20|0)+4>>2]=0;c[ta+(m*20|0)+8>>2]=l;c[ta+(m*20|0)+12>>2]=0;c[ta+(m*20|0)+16>>2]=0;a[ta+(m*20|0)+1>>0]=0}else Di(Aa,5,0,l,0)|0;m=c[E>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))l=(c[G>>2]|0)+(((j|0)<0?m+-1|0:j)*20|0)|0;else l=59308;c[l+8>>2]=m}while(0)}while((k|0)!=0)}while(0);break f}case 6:{if(!Ba)break f;l=(Zm(Ba,1,0)|0)<<24>>24!=0;Aa=l?45976:31415;Hd(Da,43614,2,1,Aa,105,0,0,0,0,0)|0;Hd(Da,43614,3,1,Aa,105,0,0,0,0,0)|0;Hd(Da,43609,2,1,31411,105,0,0,0,0,0)|0;Aa=Jd(Da,43609,2,1,0)|0;k=Aa+4|0;if(Aa|0)c[k>>2]=c[k>>2]|12;Aa=Jd(Da,43609,3,1,0)|0;k=Aa+4|0;if(Aa|0)c[k>>2]=c[k>>2]|12;l=l?12:4;Aa=Jd(Da,43614,2,1,0)|0;k=Aa+4|0;if(Aa|0)c[k>>2]=c[k>>2]|l&255;Aa=Jd(Da,43614,3,1,0)|0;k=Aa+4|0;if(!Aa)break f;c[k>>2]=c[k>>2]|l&255;break f}case 19:{V=(a[Ca>>0]|32)<<24>>24==113;U=(c[h>>2]|0)==0?-1:r;c[xa>>2]=6;c[oa>>2]=100;if(Ba){ii(Ba,oa)|0;k=c[oa>>2]|0;if((k|0)<1){c[oa>>2]=100;S=100}else S=k}else S=100;k=S+-1|0;T=Aa+108|0;l=c[T>>2]|0;R=Aa+112|0;if((c[R>>2]|0)>(l|0)){c[T>>2]=l+1;oa=c[Aa+104>>2]|0;a[oa+(l*20|0)>>0]=70;b[oa+(l*20|0)+2>>1]=0;c[oa+(l*20|0)+4>>2]=k;c[oa+(l*20|0)+8>>2]=1;c[oa+(l*20|0)+12>>2]=0;c[oa+(l*20|0)+16>>2]=0;a[oa+(l*20|0)+1>>0]=0}else Di(Aa,70,k,1,0)|0;z=Da+81|0;A=Da+20|0;U:do if((c[A>>2]|0)>0){B=(U|0)<0;C=f+116|0;D=Da+272|0;E=Da+276|0;F=Da+288|0;G=Da+300|0;H=Da+296|0;I=Da+284|0;h=f+19|0;J=f+28|0;K=Da+292|0;M=Aa+104|0;N=Da+32|0;O=f+56|0;P=Aa+12|0;Q=f+52|0;y=0;do{do if(B|(y|0)==(U|0)){n=c[C>>2]|0;n=(n|0)==0?f:n;k=n+84|0;l=c[k>>2]|0;m=1<>2]=l|m;if((y|0)!=1)break;q=c[n>>2]|0;k=q+16|0;if(c[(c[k>>2]|0)+20>>2]|0)break;if(a[n+199>>0]|0)break;l=Pe(c[q>>2]|0,0,q,wa,0,542)|0;if(l|0){cd(n,32157,qa);c[n+12>>2]=l;break}oa=c[wa>>2]|0;c[(c[k>>2]|0)+20>>2]=oa;k=c[q+92>>2]|0;n=c[oa+4>>2]|0;c[n+4>>2]=c[oa>>2];do if(!(b[n+22>>1]&2)){o=n+32|0;p=n+36|0;g=(c[o>>2]|0)-(c[p>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[o>>2]=k;m=n+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;oa=(c[14820]|0)+1|0;c[14820]=oa;c[14821]=(oa|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;za=1314;break}else{k=Wa[c[29352>>2]&127](l)|0;za=1314}while(0);do if((za|0)==1314){za=0;c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);oa=Se(c[n>>2]|0,o,g)|0;c[p>>2]=(c[o>>2]|0)-(g&65535);if((oa|0)!=7)break;k=q+81|0;do if(!(a[k>>0]|0)){if(a[q+82>>0]|0)break;a[k>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;k=q+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[q+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break V}while(0)}while(0);g=(c[(c[ya>>2]|0)+(y<<4)+12>>2]|0)+16|0;l=c[g>>2]|0;if(!l){m=0;k=0}else{m=0;k=0;do{n=c[l+8>>2]|0;k=((c[n+36>>2]|0)>>>5&1^1)+k|0;n=c[n+8>>2]|0;if(!n)o=0;else{o=0;do{k=k+1|0;o=o+1|0;n=c[n+20>>2]|0}while((n|0)!=0)}m=(o|0)>(m|0)?o:m;l=c[l>>2]|0}while((l|0)!=0)}l=(k<<2)+4|0;W:do if(c[D>>2]|0)if(!(a[z>>0]|0))za=1341;else break U;else{do if(0<0|(0==0?(e[E>>1]|0)>>>0>>0:0))k=F;else{k=c[G>>2]|0;if(k|0){c[G>>2]=c[k>>2];c[I>>2]=(c[I>>2]|0)+1;p=k;break W}k=c[H>>2]|0;if(!k){k=K;break}c[H>>2]=c[k>>2];c[I>>2]=(c[I>>2]|0)+1;p=k;break W}while(0);c[k>>2]=(c[k>>2]|0)+1;za=1341}while(0);if((za|0)==1341){za=0;p=_d(Da,l,0)|0}if(!p)break U;k=c[g>>2]|0;if(!k)l=0;else{l=0;do{o=c[k+8>>2]|0;n=l+1|0;if(!(c[o+36>>2]&32)){c[p+(n<<2)>>2]=c[o+28>>2];l=n}n=c[o+8>>2]|0;if(n)do{l=l+1|0;c[p+(l<<2)>>2]=c[n+44>>2];n=c[n+20>>2]|0}while((n|0)!=0);k=c[k>>2]|0}while((k|0)!=0)}c[p>>2]=l;oa=c[xa>>2]|0;k=m+8|0;c[xa>>2]=(oa|0)>(k|0)?oa:k;a[h>>0]=0;c[J>>2]=0;k=c[T>>2]|0;if((c[R>>2]|0)>(k|0)){c[T>>2]=k+1;oa=c[M>>2]|0;a[oa+(k*20|0)>>0]=-109;b[oa+(k*20|0)+2>>1]=0;c[oa+(k*20|0)+4>>2]=2;c[oa+(k*20|0)+8>>2]=l;c[oa+(k*20|0)+12>>2]=1;c[oa+(k*20|0)+16>>2]=0;a[oa+(k*20|0)+1>>0]=0}else k=Di(Aa,147,2,l,1)|0;l=c[Aa>>2]|0;X:do if(!(a[l+81>>0]|0)){if((k|0)<0)k=(c[T>>2]|0)+-1|0;l=c[M>>2]|0;m=l+(k*20|0)+1|0;if(!(a[m>>0]|0)){c[l+(k*20|0)+16>>2]=p;a[m>>0]=-15;break}else{Ei(Aa,l+(k*20|0)|0,p,-15);break}}else{do if(l|0){if(c[l+480>>2]|0){Xd(l,p);break X}k=p;if((c[l+304>>2]|0)>>>0>k>>>0)break;if((c[l+308>>2]|0)>>>0<=k>>>0)break;oa=l+300|0;c[p>>2]=c[oa>>2];c[oa>>2]=p;break X}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{oa=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);k=c[T>>2]|0;if((k|0)>0)b[(c[M>>2]|0)+((k+-1|0)*20|0)+2>>1]=y&255;if((c[R>>2]|0)>(k|0)){c[T>>2]=k+1;oa=c[M>>2]|0;a[oa+(k*20|0)>>0]=50;b[oa+(k*20|0)+2>>1]=0;c[oa+(k*20|0)+4>>2]=2;c[oa+(k*20|0)+8>>2]=0;c[oa+(k*20|0)+12>>2]=0;c[oa+(k*20|0)+16>>2]=0;a[oa+(k*20|0)+1>>0]=0}else k=Di(Aa,50,2,0,0)|0;c[ra>>2]=c[(c[ya>>2]|0)+(y<<4)>>2];o=dd(Da,45548,ra)|0;l=c[T>>2]|0;if((c[R>>2]|0)>(l|0)){c[T>>2]=l+1;oa=c[M>>2]|0;a[oa+(l*20|0)>>0]=110;b[oa+(l*20|0)+2>>1]=0;c[oa+(l*20|0)+4>>2]=0;c[oa+(l*20|0)+8>>2]=3;c[oa+(l*20|0)+12>>2]=0;c[oa+(l*20|0)+16>>2]=0;a[oa+(l*20|0)+1>>0]=0}else l=Di(Aa,110,0,3,0)|0;m=c[Aa>>2]|0;Y:do if(a[m+81>>0]|0){if(!o)break;do if(m|0){if(c[m+480>>2]|0){Xd(m,o);break Y}l=o;if((c[m+304>>2]|0)>>>0>l>>>0)break;if((c[m+308>>2]|0)>>>0<=l>>>0)break;oa=m+300|0;c[o>>2]=c[oa>>2];c[oa>>2]=o;break Y}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{oa=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}else{if((l|0)<0)l=(c[T>>2]|0)+-1|0;m=c[M>>2]|0;n=m+(l*20|0)+1|0;if(a[n>>0]|0){Ei(Aa,m+(l*20|0)|0,o,-7);break}if(!o)break;c[m+(l*20|0)+16>>2]=o;a[n>>0]=-7}while(0);l=c[T>>2]|0;if((c[R>>2]|0)>(l|0)){c[T>>2]=l+1;oa=c[M>>2]|0;a[oa+(l*20|0)>>0]=105;b[oa+(l*20|0)+2>>1]=0;c[oa+(l*20|0)+4>>2]=2;c[oa+(l*20|0)+8>>2]=3;c[oa+(l*20|0)+12>>2]=3;c[oa+(l*20|0)+16>>2]=0;a[oa+(l*20|0)+1>>0]=0}else Di(Aa,105,2,3,3)|0;l=c[T>>2]|0;if((c[R>>2]|0)>(l|0)){c[T>>2]=l+1;oa=c[M>>2]|0;a[oa+(l*20|0)>>0]=81;b[oa+(l*20|0)+2>>1]=0;c[oa+(l*20|0)+4>>2]=3;c[oa+(l*20|0)+8>>2]=1;c[oa+(l*20|0)+12>>2]=0;c[oa+(l*20|0)+16>>2]=0;a[oa+(l*20|0)+1>>0]=0}else Di(Aa,81,3,1,0)|0;l=c[T>>2]|0;m=l+2|0;if((c[R>>2]|0)>(l|0)){c[T>>2]=l+1;oa=c[M>>2]|0;a[oa+(l*20|0)>>0]=47;b[oa+(l*20|0)+2>>1]=0;c[oa+(l*20|0)+4>>2]=1;c[oa+(l*20|0)+8>>2]=m;c[oa+(l*20|0)+12>>2]=1;c[oa+(l*20|0)+16>>2]=0;a[oa+(l*20|0)+1>>0]=0}else Di(Aa,47,1,m,1)|0;l=c[T>>2]|0;if((c[R>>2]|0)>(l|0)){c[T>>2]=l+1;$=c[M>>2]|0;a[$+(l*20|0)>>0]=69;$=$+(l*20|0)+1|0;aa=$+19|0;do{a[$>>0]=0;$=$+1|0}while(($|0)<(aa|0))}else Di(Aa,69,0,0,0)|0;l=c[T>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))k=(c[M>>2]|0)+(((k|0)<0?l+-1|0:k)*20|0)|0;else k=59308;c[k+8>>2]=l;k=c[g>>2]|0;if(!k)break;do{u=c[k+8>>2]|0;do if((c[u+28>>2]|0)>=1){Z:do if(!(c[u+36>>2]&32))l=0;else{l=c[u+8>>2]|0;if(!l){l=0;break}while(1){oa=l+55|0;if(((d[oa>>0]|d[oa+1>>0]<<8)&3)==2)break Z;l=c[l+20>>2]|0;if(!l){l=0;break}}}while(0);Hm(f,u,108,0,1,0,wa,va)|0;m=c[T>>2]|0;if((c[R>>2]|0)>(m|0)){c[T>>2]=m+1;oa=c[M>>2]|0;a[oa+(m*20|0)>>0]=70;b[oa+(m*20|0)+2>>1]=0;c[oa+(m*20|0)+4>>2]=0;c[oa+(m*20|0)+8>>2]=7;c[oa+(m*20|0)+12>>2]=0;c[oa+(m*20|0)+16>>2]=0;a[oa+(m*20|0)+1>>0]=0}else Di(Aa,70,0,7,0)|0;x=u+8|0;m=c[x>>2]|0;if(m|0){n=0;while(1){o=n+8|0;p=c[T>>2]|0;if((c[R>>2]|0)>(p|0)){c[T>>2]=p+1;oa=c[M>>2]|0;a[oa+(p*20|0)>>0]=70;b[oa+(p*20|0)+2>>1]=0;c[oa+(p*20|0)+4>>2]=0;c[oa+(p*20|0)+8>>2]=o;c[oa+(p*20|0)+12>>2]=0;c[oa+(p*20|0)+16>>2]=0;a[oa+(p*20|0)+1>>0]=0}else Di(Aa,70,0,o,0)|0;m=c[m+20>>2]|0;if(!m)break;else n=n+1|0}}m=c[wa>>2]|0;n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=36;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=m;c[oa+(n*20|0)+8>>2]=0;c[oa+(n*20|0)+12>>2]=0;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else Di(Aa,36,m,0,0)|0;m=c[T>>2]|0;if((c[R>>2]|0)>(m|0)){c[T>>2]=m+1;w=c[M>>2]|0;a[w+(m*20|0)>>0]=83;b[w+(m*20|0)+2>>1]=0;c[w+(m*20|0)+4>>2]=7;c[w+(m*20|0)+8>>2]=1;c[w+(m*20|0)+12>>2]=0;c[w+(m*20|0)+16>>2]=0;a[w+(m*20|0)+1>>0]=0;w=m}else w=Di(Aa,83,7,1,0)|0;do if(V)p=u+42|0;else{m=c[wa>>2]|0;p=u+42|0;n=(b[p>>1]|0)+-1|0;o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=90;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=m;c[oa+(o*20|0)+8>>2]=n;c[oa+(o*20|0)+12>>2]=3;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0}else Di(Aa,90,m,n,3)|0;m=c[T>>2]|0;if((m|0)<=0)break;b[(c[M>>2]|0)+((m+-1|0)*20|0)+2>>1]=128}while(0);m=b[p>>1]|0;if(m<<16>>16>0){s=u+40|0;t=u+4|0;r=0;do{do if((r|0)!=(b[s>>1]|0)){if(!(a[(c[t>>2]|0)+(r<<4)+12>>0]|0))break;Vj(Aa,u,c[wa>>2]|0,r,3);m=c[T>>2]|0;if((m|0)>0)b[(c[M>>2]|0)+((m+-1|0)*20|0)+2>>1]=128;if((c[R>>2]|0)>(m|0)){c[T>>2]=m+1;oa=c[M>>2]|0;a[oa+(m*20|0)>>0]=51;b[oa+(m*20|0)+2>>1]=0;c[oa+(m*20|0)+4>>2]=3;c[oa+(m*20|0)+8>>2]=0;c[oa+(m*20|0)+12>>2]=0;c[oa+(m*20|0)+16>>2]=0;a[oa+(m*20|0)+1>>0]=0}else m=Di(Aa,51,3,0,0)|0;q=c[(c[t>>2]|0)+(r<<4)>>2]|0;c[sa>>2]=c[u>>2];c[sa+4>>2]=q;q=dd(Da,45572,sa)|0;n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=110;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=0;c[oa+(n*20|0)+8>>2]=3;c[oa+(n*20|0)+12>>2]=0;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else n=Di(Aa,110,0,3,0)|0;o=c[Aa>>2]|0;_:do if(a[o+81>>0]|0){if(!q)break;do if(o|0){if(c[o+480>>2]|0){Xd(o,q);break _}n=q;if((c[o+304>>2]|0)>>>0>n>>>0)break;if((c[o+308>>2]|0)>>>0<=n>>>0)break;oa=o+300|0;c[q>>2]=c[oa>>2];c[oa>>2]=q;break _}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{oa=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}else{if((n|0)<0)n=(c[T>>2]|0)+-1|0;o=c[M>>2]|0;g=o+(n*20|0)+1|0;if(a[g>>0]|0){Ei(Aa,o+(n*20|0)|0,q,-7);break}if(!q)break;c[o+(n*20|0)+16>>2]=q;a[g>>0]=-7}while(0);n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=81;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=3;c[oa+(n*20|0)+8>>2]=1;c[oa+(n*20|0)+12>>2]=0;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else Di(Aa,81,3,1,0)|0;n=c[T>>2]|0;o=n+2|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=47;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=1;c[oa+(n*20|0)+8>>2]=o;c[oa+(n*20|0)+12>>2]=1;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else Di(Aa,47,1,o,1)|0;n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;$=c[M>>2]|0;a[$+(n*20|0)>>0]=69;$=$+(n*20|0)+1|0;aa=$+19|0;do{a[$>>0]=0;$=$+1|0}while(($|0)<(aa|0))}else Di(Aa,69,0,0,0)|0;n=c[T>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))m=(c[M>>2]|0)+(((m|0)<0?n+-1|0:m)*20|0)|0;else m=59308;c[m+8>>2]=n;m=b[p>>1]|0}while(0);r=r+1|0}while((r|0)<(m<<16>>16|0))}m=c[u+24>>2]|0;$:do if(m|0){if(!((c[N>>2]&512|0)==0&0==0))break;q=gk(Da,m,0)|0;do if(!(a[z>>0]|0)){g=c[O>>2]|0;n=g+-1|0;o=g+-2|0;c[O>>2]=o;c[Q>>2]=(c[wa>>2]|0)+1;m=c[q>>2]|0;if((m|0)>1)do{oa=m;m=m+-1|0;Tj(f,c[q+4+(m*20|0)>>2]|0,n,0)}while((oa|0)>2);tk(f,c[q+4>>2]|0,o,16);m=c[P>>2]|0;n=0-g|0;if(((c[m+56>>2]|0)+(c[m+60>>2]|0)|0)<0)mk(m,Aa,n);else c[(c[m+64>>2]|0)+(n<<2)>>2]=c[T>>2];c[Q>>2]=0;c[ta>>2]=c[u>>2];p=dd(Da,45592,ta)|0;m=c[T>>2]|0;if((c[R>>2]|0)>(m|0)){c[T>>2]=m+1;oa=c[M>>2]|0;a[oa+(m*20|0)>>0]=110;b[oa+(m*20|0)+2>>1]=0;c[oa+(m*20|0)+4>>2]=0;c[oa+(m*20|0)+8>>2]=3;c[oa+(m*20|0)+12>>2]=0;c[oa+(m*20|0)+16>>2]=0;a[oa+(m*20|0)+1>>0]=0}else m=Di(Aa,110,0,3,0)|0;n=c[Aa>>2]|0;aa:do if(a[n+81>>0]|0){if(!p)break;do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break aa}m=p;if((c[n+304>>2]|0)>>>0>m>>>0)break;if((c[n+308>>2]|0)>>>0<=m>>>0)break;oa=n+300|0;c[p>>2]=c[oa>>2];c[oa>>2]=p;break aa}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{oa=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}else{if((m|0)<0)m=(c[T>>2]|0)+-1|0;n=c[M>>2]|0;o=n+(m*20|0)+1|0;if(a[o>>0]|0){Ei(Aa,n+(m*20|0)|0,p,-7);break}if(!p)break;c[n+(m*20|0)+16>>2]=p;a[o>>0]=-7}while(0);m=c[T>>2]|0;if((c[R>>2]|0)>(m|0)){c[T>>2]=m+1;oa=c[M>>2]|0;a[oa+(m*20|0)>>0]=81;b[oa+(m*20|0)+2>>1]=0;c[oa+(m*20|0)+4>>2]=3;c[oa+(m*20|0)+8>>2]=1;c[oa+(m*20|0)+12>>2]=0;c[oa+(m*20|0)+16>>2]=0;a[oa+(m*20|0)+1>>0]=0}else Di(Aa,81,3,1,0)|0;m=c[T>>2]|0;n=m+2|0;if((c[R>>2]|0)>(m|0)){c[T>>2]=m+1;oa=c[M>>2]|0;a[oa+(m*20|0)>>0]=47;b[oa+(m*20|0)+2>>1]=0;c[oa+(m*20|0)+4>>2]=1;c[oa+(m*20|0)+8>>2]=n;c[oa+(m*20|0)+12>>2]=1;c[oa+(m*20|0)+16>>2]=0;a[oa+(m*20|0)+1>>0]=0}else Di(Aa,47,1,n,1)|0;m=c[T>>2]|0;if((c[R>>2]|0)>(m|0)){c[T>>2]=m+1;$=c[M>>2]|0;a[$+(m*20|0)>>0]=69;$=$+(m*20|0)+1|0;aa=$+19|0;do{a[$>>0]=0;$=$+1|0}while(($|0)<(aa|0))}else Di(Aa,69,0,0,0)|0;n=c[P>>2]|0;m=1-g|0;if(((c[n+56>>2]|0)+(c[n+60>>2]|0)|0)<0){mk(n,Aa,m);break}else{c[(c[n+64>>2]|0)+(m<<2)>>2]=c[T>>2];break}}else if(!q)break $;while(0);ri(Da,q)}while(0);if(V){l=c[wa>>2]|0;m=c[T>>2]|0;if((c[R>>2]|0)>(m|0)){c[T>>2]=m+1;oa=c[M>>2]|0;a[oa+(m*20|0)>>0]=5;b[oa+(m*20|0)+2>>1]=0;c[oa+(m*20|0)+4>>2]=l;c[oa+(m*20|0)+8>>2]=w;c[oa+(m*20|0)+12>>2]=0;c[oa+(m*20|0)+16>>2]=0;a[oa+(m*20|0)+1>>0]=0}else Di(Aa,5,l,w,0)|0;m=c[T>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))l=(c[M>>2]|0)+((((w|0)<1?m:w)+-1|0)*20|0)|0;else l=59308;c[l+8>>2]=m;break}m=c[x>>2]|0;if(m|0){v=u+4|0;n=-1;o=0;j=0;while(1){g=(c[O>>2]|0)+-1|0;c[O>>2]=g;do if((l|0)!=(m|0)){i=el(f,m,c[wa>>2]|0,0,0,pa,o,n)|0;n=j+8|0;o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=83;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=n;c[oa+(o*20|0)+8>>2]=1;c[oa+(o*20|0)+12>>2]=0;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0}else Di(Aa,83,n,1,0)|0;n=(c[va>>2]|0)+j|0;p=e[m+52>>1]|0;o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=29;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=n;c[oa+(o*20|0)+8>>2]=g;c[oa+(o*20|0)+12>>2]=i;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0;g=o}else g=Di(Aa,29,n,g,i)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){oa=c[M>>2]|0;a[oa+(g*20|0)+1>>0]=-3;c[oa+(g*20|0)+16>>2]=p}n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=110;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=0;c[oa+(n*20|0)+8>>2]=3;c[oa+(n*20|0)+12>>2]=0;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else n=Di(Aa,110,0,3,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((n|0)<0)n=(c[T>>2]|0)+-1|0;Ei(Aa,(c[M>>2]|0)+(n*20|0)|0,45622,0)}n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=105;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=7;c[oa+(n*20|0)+8>>2]=3;c[oa+(n*20|0)+12>>2]=3;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else Di(Aa,105,7,3,3)|0;n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=110;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=0;c[oa+(n*20|0)+8>>2]=4;c[oa+(n*20|0)+12>>2]=0;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else n=Di(Aa,110,0,4,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((n|0)<0)n=(c[T>>2]|0)+-1|0;Ei(Aa,(c[M>>2]|0)+(n*20|0)|0,45627,0)}n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=105;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=4;c[oa+(n*20|0)+8>>2]=3;c[oa+(n*20|0)+12>>2]=3;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else Di(Aa,105,4,3,3)|0;p=c[m>>2]|0;n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=110;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=0;c[oa+(n*20|0)+8>>2]=4;c[oa+(n*20|0)+12>>2]=0;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else n=Di(Aa,110,0,4,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((n|0)<0)o=(c[T>>2]|0)+-1|0;else o=n;Ei(Aa,(c[M>>2]|0)+(o*20|0)|0,p,0)}o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=105;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=4;c[oa+(o*20|0)+8>>2]=3;c[oa+(o*20|0)+12>>2]=3;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0}else Di(Aa,105,4,3,3)|0;o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=81;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=3;c[oa+(o*20|0)+8>>2]=1;c[oa+(o*20|0)+12>>2]=0;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0}else Di(Aa,81,3,1,0)|0;o=c[T>>2]|0;p=o+2|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;u=c[M>>2]|0;a[u+(o*20|0)>>0]=47;b[u+(o*20|0)+2>>1]=0;c[u+(o*20|0)+4>>2]=1;c[u+(o*20|0)+8>>2]=p;c[u+(o*20|0)+12>>2]=1;c[u+(o*20|0)+16>>2]=0;a[u+(o*20|0)+1>>0]=0;u=o}else u=Di(Aa,47,1,p,1)|0;o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;$=c[M>>2]|0;a[$+(o*20|0)>>0]=69;$=$+(o*20|0)+1|0;aa=$+19|0;do{a[$>>0]=0;$=$+1|0}while(($|0)<(aa|0))}else Di(Aa,69,0,0,0)|0;p=c[T>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))o=(c[M>>2]|0)+(((g|0)<0?p+-1|0:g)*20|0)|0;else o=59308;c[o+8>>2]=p;do if(a[m+54>>0]|0){t=c[O>>2]|0;s=t+-1|0;c[O>>2]=s;r=m+50|0;if(b[r>>1]|0){p=m+4|0;o=0;do{oa=b[(c[p>>2]|0)+(o<<1)>>1]|0;if(!(oa<<16>>16>-1?(a[(c[v>>2]|0)+(oa<<16>>16<<4)+12>>0]|0)!=0:0))za=1581;do if((za|0)==1581){za=0;g=o+i|0;q=c[T>>2]|0;if((c[R>>2]|0)>(q|0)){c[T>>2]=q+1;oa=c[M>>2]|0;a[oa+(q*20|0)>>0]=50;b[oa+(q*20|0)+2>>1]=0;c[oa+(q*20|0)+4>>2]=g;c[oa+(q*20|0)+8>>2]=s;c[oa+(q*20|0)+12>>2]=0;c[oa+(q*20|0)+16>>2]=0;a[oa+(q*20|0)+1>>0]=0;break}else{Di(Aa,50,g,s,0)|0;break}}while(0);o=o+1|0}while(o>>>0<(e[r>>1]|0)>>>0);p=c[T>>2]|0}o=(c[va>>2]|0)+j|0;if((c[R>>2]|0)>(p|0)){c[T>>2]=p+1;oa=c[M>>2]|0;a[oa+(p*20|0)>>0]=5;b[oa+(p*20|0)+2>>1]=0;c[oa+(p*20|0)+4>>2]=o;c[oa+(p*20|0)+8>>2]=0;c[oa+(p*20|0)+12>>2]=0;c[oa+(p*20|0)+16>>2]=0;a[oa+(p*20|0)+1>>0]=0}else p=Di(Aa,5,o,0,0)|0;o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=11;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=0;c[oa+(o*20|0)+8>>2]=s;c[oa+(o*20|0)+12>>2]=0;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0}else Di(Aa,11,0,s,0)|0;o=c[T>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))p=(c[M>>2]|0)+(((p|0)<0?o+-1|0:p)*20|0)|0;else p=59308;c[p+8>>2]=o;p=(c[va>>2]|0)+j|0;g=e[r>>1]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=38;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=p;c[oa+(o*20|0)+8>>2]=s;c[oa+(o*20|0)+12>>2]=i;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0}else o=Di(Aa,38,p,s,i)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){oa=c[M>>2]|0;a[oa+(o*20|0)+1>>0]=-3;c[oa+(o*20|0)+16>>2]=g}o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=110;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=0;c[oa+(o*20|0)+8>>2]=3;c[oa+(o*20|0)+12>>2]=0;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0}else o=Di(Aa,110,0,3,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((o|0)<0)o=(c[T>>2]|0)+-1|0;Ei(Aa,(c[M>>2]|0)+(o*20|0)|0,45648,0)}o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=11;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=0;c[oa+(o*20|0)+8>>2]=n;c[oa+(o*20|0)+12>>2]=0;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0}else Di(Aa,11,0,n,0)|0;o=c[P>>2]|0;n=0-t|0;if(((c[o+56>>2]|0)+(c[o+60>>2]|0)|0)<0){mk(o,Aa,n);break}else{c[(c[o+64>>2]|0)+(n<<2)>>2]=c[T>>2];break}}while(0);o=c[T>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))n=(c[M>>2]|0)+(((u|0)<0?o+-1|0:u)*20|0)|0;else n=59308;c[n+8>>2]=o;n=c[pa>>2]|0;if(!n){n=i;o=m;break}o=c[ua>>2]|0;p=c[o+12>>2]|0;n=~n;if(((c[p+56>>2]|0)+(c[p+60>>2]|0)|0)<0){mk(p,o,n);n=i;o=m;break}else{c[(c[p+64>>2]|0)+(n<<2)>>2]=c[o+108>>2];n=i;o=m;break}}while(0);m=c[m+20>>2]|0;if(!m)break;else j=j+1|0}}m=c[wa>>2]|0;n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=5;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=m;c[oa+(n*20|0)+8>>2]=w;c[oa+(n*20|0)+12>>2]=0;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else Di(Aa,5,m,w,0)|0;m=c[T>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))n=(c[M>>2]|0)+((((w|0)<1?m:w)+-1|0)*20|0)|0;else n=59308;c[n+8>>2]=m;if((c[R>>2]|0)>(m|0)){c[T>>2]=m+1;oa=c[M>>2]|0;a[oa+(m*20|0)>>0]=110;b[oa+(m*20|0)+2>>1]=0;c[oa+(m*20|0)+4>>2]=0;c[oa+(m*20|0)+8>>2]=2;c[oa+(m*20|0)+12>>2]=0;c[oa+(m*20|0)+16>>2]=0;a[oa+(m*20|0)+1>>0]=0}else m=Di(Aa,110,0,2,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((m|0)<0)m=(c[T>>2]|0)+-1|0;Ei(Aa,(c[M>>2]|0)+(m*20|0)|0,45675,0)}m=c[x>>2]|0;if(!m)break;g=0;while(1){if((l|0)!=(m|0)){n=(c[va>>2]|0)+g|0;o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=93;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=n;c[oa+(o*20|0)+8>>2]=3;c[oa+(o*20|0)+12>>2]=0;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0}else Di(Aa,93,n,3,0)|0;n=g+8|0;o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=53;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=n;c[oa+(o*20|0)+8>>2]=0;c[oa+(o*20|0)+12>>2]=3;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0}else o=Di(Aa,53,n,0,3)|0;n=c[T>>2]|0;if((n|0)>0)b[(c[M>>2]|0)+((n+-1|0)*20|0)+2>>1]=144;p=c[m>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=110;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=0;c[oa+(n*20|0)+8>>2]=4;c[oa+(n*20|0)+12>>2]=0;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else n=Di(Aa,110,0,4,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((n|0)<0)n=(c[T>>2]|0)+-1|0;Ei(Aa,(c[M>>2]|0)+(n*20|0)|0,p,0)}n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=105;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=4;c[oa+(n*20|0)+8>>2]=2;c[oa+(n*20|0)+12>>2]=3;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else Di(Aa,105,4,2,3)|0;n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=81;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=3;c[oa+(n*20|0)+8>>2]=1;c[oa+(n*20|0)+12>>2]=0;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else Di(Aa,81,3,1,0)|0;n=c[T>>2]|0;p=n+2|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=47;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=1;c[oa+(n*20|0)+8>>2]=p;c[oa+(n*20|0)+12>>2]=1;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else Di(Aa,47,1,p,1)|0;n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;$=c[M>>2]|0;a[$+(n*20|0)>>0]=69;$=$+(n*20|0)+1|0;aa=$+19|0;do{a[$>>0]=0;$=$+1|0}while(($|0)<(aa|0))}else Di(Aa,69,0,0,0)|0;p=c[T>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))n=(c[M>>2]|0)+(((o|0)<0?p+-1|0:o)*20|0)|0;else n=59308;c[n+8>>2]=p}m=c[m+20>>2]|0;if(!m)break;else g=g+1|0}}while(0);k=c[k>>2]|0}while((k|0)!=0)}while(0);y=y+1|0}while((y|0)<(c[A>>2]|0))}while(0);k=ed(Aa,7,18432)|0;if(k|0){c[k+8>>2]=1-S;a[k+41>>0]=-1;c[k+56>>2]=45704;a[k+101>>0]=-1;c[k+116>>2]=50394}if(!(a[(c[Aa>>2]|0)+81>>0]|0))k=c[Aa+104>>2]|0;else k=59308;c[k+12>>2]=(c[T>>2]|0)+-2;za=2020;break b}case 12:{if(!Ba){m=c[f>>2]|0;ba:do if(!(a[m+165>>0]|0)){n=f+4|0;o=m+24|0;p=(c[o>>2]&1|0)==0;g=m+16|0;ya=c[(c[g>>2]|0)+12>>2]|0;a[m+78>>0]=a[ya+77>>0]|0;if((b[ya+78>>1]&1)==0?(P=eh(m,0,n,0)|0,(P|0)!=0):0)k=P;else za=1682;ca:do if((za|0)==1682){k=c[m+20>>2]|0;if((k|0)>1)do{l=k;k=k+-1|0;if((b[(c[(c[g>>2]|0)+(k<<4)+12>>2]|0)+78>>1]&1)==0?(R=eh(m,k,n,0)|0,R|0):0){k=R;break ca}}while((l|0)>2);if(p)c[o>>2]=c[o>>2]&-2;if(!(a[m+89>>0]|0))break ba;c[o>>2]=c[o>>2]|16;break ba}while(0);c[f+12>>2]=k;Aa=f+36|0;c[Aa>>2]=(c[Aa>>2]|0)+1;break f}while(0);za=a[(c[f>>2]|0)+78>>0]|0;l=c[18464+((za&255)<<3)>>2]|0;if(za<<24>>24==8)break f;m=Aa+108|0;k=c[m>>2]|0;n=Aa+112|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=110;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,110,0,1,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;Ei(Aa,(c[Aa+104>>2]|0)+(k*20|0)|0,l,0)}k=c[m>>2]|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,1,0)|0;break f}}o=c[(c[ya>>2]|0)+12>>2]|0;if((b[o+78>>1]&5)==1){za=2020;break b}k=a[Ba>>0]|0;da:do if(k<<24>>24){k=(d[208+(k&255)>>0]|0)+-117|0;n=(k|0)==0;if(n){l=45707;m=Ba;do{m=m+1|0;l=l+1|0;Aa=a[m>>0]|0;k=(d[208+(Aa&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(k|0)!=0))}do if(k){if(!n)break da;k=45712;l=Ba;do{l=l+1|0;k=k+1|0;Aa=a[l>>0]|0;m=(d[208+(Aa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(m|0)!=0));if(!m){k=18472;break}k=45718;l=Ba;do{l=l+1|0;k=k+1|0;Aa=a[l>>0]|0;m=(d[208+(Aa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(m|0)!=0));if(!m){k=18480;break}k=45727;l=Ba;do{l=l+1|0;k=k+1|0;Aa=a[l>>0]|0;m=(d[208+(Aa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(m|0)!=0));if(!m){k=18488;break}k=45736;l=Ba;do{l=l+1|0;k=k+1|0;Aa=a[l>>0]|0;m=(d[208+(Aa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(m|0)!=0));if(!m){k=18496;break}k=45744;l=Ba;do{l=l+1|0;k=k+1|0;Aa=a[l>>0]|0;m=(d[208+(Aa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(m|0)!=0));if(!m){k=18504;break}k=45752;l=Ba;do{l=l+1|0;k=k+1|0;Aa=a[l>>0]|0;m=(d[208+(Aa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(m|0)!=0));if(!m){k=18512;break}k=45759;l=Ba;do{l=l+1|0;k=k+1|0;Aa=a[l>>0]|0;m=(d[208+(Aa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(m|0)!=0));if(!m)k=18520;else break da}else k=18464;while(0);za=a[k+4>>0]|0;za=za<<24>>24==0?2:za;a[Da+78>>0]=za;a[o+77>>0]=za;za=2020;break b}while(0);c[ca>>2]=Ba;cd(f,45765,ca);break f}case 0:{k=c[4544+(j<<4)+8>>2]|0;l=1<>2]=c[za>>2]|l;if(!$?a[(c[(c[(c[Aa>>2]|0)+16>>2]|0)+(r<<4)+4>>2]|0)+9>>0]|0:0){za=Aa+156|0;c[za>>2]=c[za>>2]|l}ea:do if(Ba|0){switch(o|0){case 24:case 25:case 42:case 43:break ea;default:{}}Aa=ed(Aa,2,45790)|0;c[Aa+4>>2]=r;c[Aa+24>>2]=r;c[Aa+28>>2]=k;c[wa>>2]=0;ii(Ba,wa)|0;c[Aa+32>>2]=c[wa>>2];break f}while(0);Aa=ed(Aa,3,45798)|0;c[Aa+4>>2]=r;c[Aa+24>>2]=r;c[Aa+32>>2]=k;Aa=(d[F>>0]|d[F+1>>0]<<8)&-65;a[F>>0]=Aa;a[F+1>>0]=Aa>>8;break f}case 8:{c[xa>>2]=1;n=Aa+108|0;o=Aa+112|0;p=Aa+104|0;m=0;do{l=c[26464+(m<<2)>>2]|0;m=m+1|0;k=c[n>>2]|0;if((c[o>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[p>>2]|0;a[za+(k*20|0)>>0]=110;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,110,0,1,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((k|0)<0)k=(c[n>>2]|0)+-1|0;Ei(Aa,(c[p>>2]|0)+(k*20|0)|0,l,0)}k=c[n>>2]|0;if((c[o>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[p>>2]|0;a[za+(k*20|0)>>0]=81;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=1;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else Di(Aa,81,1,1,0)|0}while((m|0)!=7);Aa=(d[F>>0]|d[F+1>>0]<<8)&-65;a[F>>0]=Aa;a[F+1>>0]=Aa>>8;break f}case 39:{p=(c[h>>2]|0)==0?10:r;do if(Ba){o=a[Ba>>0]|0;n=d[208+(o&255)>>0]|0;k=n+-102|0;o=o<<24>>24==0;if(!(o|(k|0)!=0)){l=45810;m=Ba;do{m=m+1|0;l=l+1|0;za=a[m>>0]|0;k=(d[208+(za&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(k|0)!=0))}if(!k)l=1;else{k=n+-114|0;if(!(o|(k|0)!=0)){l=45815;m=Ba;do{m=m+1|0;l=l+1|0;za=a[m>>0]|0;k=(d[208+(za&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(k|0)!=0))}if(!k){l=2;break}k=n+-116|0;if(!(o|(k|0)!=0)){l=36052;m=Ba;do{m=m+1|0;l=l+1|0;za=a[m>>0]|0;k=(d[208+(za&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(k|0)!=0))}l=(k|0)==0?3:0}}else l=0;while(0);c[xa>>2]=3;m=Aa+108|0;k=c[m>>2]|0;n=Aa+112|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=6;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=p;c[za+(k*20|0)+8>>2]=l;c[za+(k*20|0)+12>>2]=1;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else Di(Aa,6,p,l,1)|0;k=c[m>>2]|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=3;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,3,0)|0;break f}}case 38:{if(!Ba)k=c[Da+240>>2]|0;else{c[wa>>2]=0;ii(Ba,wa)|0;za=c[wa>>2]|0;ya=(za|0)>0;k=ya?76:0;c[Da+240>>2]=k;c[Da+244>>2]=ya?za:0}if((k|0)==76){o=c[Da+244>>2]|0;n=o;o=((o|0)<0)<<31>>31}else{n=0;o=0}m=c[Aa>>2]|0;fa:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=1767;else za=1787;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=1768;break fa}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=1768;break fa}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=1767}while(0);if((za|0)==1767){p=_d(m,8,0)|0;za=1768}ga:do if((za|0)==1768){if(!p){za=1787;break}m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=o;a[m+1>>0]=o>>8;a[m+2>>0]=o>>16;a[m+3>>0]=o>>24;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break ga}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break ga}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);do if((za|0)==1787){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=81;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=1;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0;za=2020;break b}else{Di(Aa,81,1,1,0)|0;za=2020;break b}}case 31:{o=Da+20|0;m=c[o>>2]|0;if((m|0)<=0){za=2020;break b}n=c[ya>>2]|0;k=0;do{l=c[n+(k<<4)+4>>2]|0;if(l|0)c[(c[l+4>>2]|0)+4>>2]=c[l>>2];k=k+1|0}while((k|0)!=(m|0));k=0;while(1){l=c[n+(k<<4)+4>>2]|0;if(!l)l=m;else{ab[c[29456>>2]&127](c[(c[(c[c[l+4>>2]>>2]|0)+212>>2]|0)+44>>2]|0);l=c[o>>2]|0}k=k+1|0;if((k|0)>=(l|0)){za=2020;break b}n=c[ya>>2]|0;m=l}}case 27:{if(Ba){c[wa>>2]=0;ii(Ba,wa)|0;k=c[wa>>2]|0;if(!(k&2))break f}else k=65534;wa=f+40|0;w=c[wa>>2]|0;c[wa>>2]=w+1;if(!la)j=(c[Da+20>>2]|0)+-1|0;else j=r;if((r|0)>(j|0)){m=Aa+108|0;k=Aa+112|0}else{v=f+116|0;t=k&1;s=(t|0)==0;m=Aa+108|0;t=t|2;k=Aa+112|0;u=f+19|0;i=Aa+104|0;while(1){do if((r|0)!=1){l=c[v>>2]|0;l=((l|0)==0?f:l)+84|0;n=c[l>>2]|0;o=1<>2]=n|o;l=c[(c[(c[ya>>2]|0)+(r<<4)+12>>2]|0)+16>>2]|0;if(!l)break;do{q=c[l+8>>2]|0;ha:do if(c[q+36>>2]&256|0){g=(e[q+44>>1]|0)+46|0;o=g&65535;n=c[q+8>>2]|0;ia:do if(!n)za=1825;else while(1){wa=n+55|0;if(!((d[wa>>0]|d[wa+1>>0]<<8)&128))break ia;n=c[n+20>>2]|0;if(!n){za=1825;break}}while(0);do if((za|0)==1825){za=0;if(!(o<<16>>16))break;Gj(f,w,r,q,108);o=c[m>>2]|0;p=o+t|0;n=g<<16>>16;if((c[k>>2]|0)>(o|0)){c[m>>2]=o+1;wa=c[i>>2]|0;a[wa+(o*20|0)>>0]=33;b[wa+(o*20|0)+2>>1]=0;c[wa+(o*20|0)+4>>2]=w;c[wa+(o*20|0)+8>>2]=p;c[wa+(o*20|0)+12>>2]=n;c[wa+(o*20|0)+16>>2]=0;a[wa+(o*20|0)+1>>0]=0;break}else{Di(Aa,33,w,p,n)|0;break}}while(0);q=c[q>>2]|0;c[ha>>2]=c[(c[ya>>2]|0)+(r<<4)>>2];c[ha+4>>2]=q;q=dd(Da,45823,ha)|0;if(s){n=c[m>>2]|0;if((c[k>>2]|0)>(n|0)){c[m>>2]=n+1;$=c[i>>2]|0;a[$+(n*20|0)>>0]=-116;$=$+(n*20|0)+1|0;aa=$+19|0;do{a[$>>0]=0;$=$+1|0}while(($|0)<(aa|0))}else n=Di(Aa,140,0,0,0)|0;o=c[Aa>>2]|0;if(!(a[o+81>>0]|0)){if((n|0)<0)n=(c[m>>2]|0)+-1|0;o=c[i>>2]|0;p=o+(n*20|0)+1|0;if(a[p>>0]|0){Ei(Aa,o+(n*20|0)|0,q,-7);break}if(!q)break;c[o+(n*20|0)+16>>2]=q;a[p>>0]=-7;break}if(!q)break;do if(o|0){if(c[o+480>>2]|0){Xd(o,q);break ha}n=q;if((c[o+304>>2]|0)>>>0>n>>>0)break;if((c[o+308>>2]|0)>>>0<=n>>>0)break;wa=o+300|0;c[q>>2]=c[wa>>2];c[wa>>2]=q;break ha}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{wa=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-wa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}n=a[u>>0]|0;if(!(n<<24>>24)){g=(c[xa>>2]|0)+1|0;c[xa>>2]=g}else{g=n+-1<<24>>24;a[u>>0]=g;g=c[f+148+((g&255)<<2)>>2]|0}n=c[m>>2]|0;if((c[k>>2]|0)>(n|0)){c[m>>2]=n+1;wa=c[i>>2]|0;a[wa+(n*20|0)>>0]=110;b[wa+(n*20|0)+2>>1]=0;c[wa+(n*20|0)+4>>2]=0;c[wa+(n*20|0)+8>>2]=g;c[wa+(n*20|0)+12>>2]=0;c[wa+(n*20|0)+16>>2]=0;a[wa+(n*20|0)+1>>0]=0}else n=Di(Aa,110,0,g,0)|0;o=c[Aa>>2]|0;ja:do if(a[o+81>>0]|0){if(!q)break;do if(o|0){if(c[o+480>>2]|0){Xd(o,q);break ja}n=q;if((c[o+304>>2]|0)>>>0>n>>>0)break;if((c[o+308>>2]|0)>>>0<=n>>>0)break;wa=o+300|0;c[q>>2]=c[wa>>2];c[wa>>2]=q;break ja}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{wa=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-wa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}else{if((n|0)<0)n=(c[m>>2]|0)+-1|0;o=c[i>>2]|0;p=o+(n*20|0)+1|0;if(a[p>>0]|0){Ei(Aa,o+(n*20|0)|0,q,-7);break}if(!q)break;c[o+(n*20|0)+16>>2]=q;a[p>>0]=-7}while(0);n=c[m>>2]|0;if((c[k>>2]|0)>(n|0)){c[m>>2]=n+1;wa=c[i>>2]|0;a[wa+(n*20|0)>>0]=81;b[wa+(n*20|0)+2>>1]=0;c[wa+(n*20|0)+4>>2]=g;c[wa+(n*20|0)+8>>2]=1;c[wa+(n*20|0)+12>>2]=0;c[wa+(n*20|0)+16>>2]=0;a[wa+(n*20|0)+1>>0]=0;break}else{Di(Aa,81,g,1,0)|0;break}}while(0);l=c[l>>2]|0}while((l|0)!=0)}while(0);if((r|0)<(j|0))r=r+1|0;else break}}l=c[m>>2]|0;if((c[k>>2]|0)>(l|0)){c[m>>2]=l+1;$=c[Aa+104>>2]|0;a[$+(l*20|0)>>0]=-98;$=$+(l*20|0)+1|0;aa=$+19|0;do{a[$>>0]=0;$=$+1|0}while(($|0)<(aa|0));break f}else{Di(Aa,158,0,0,0)|0;break f}}case 32:{if((Ba|0?(Vd(Ba,wa)|0)==0:0)?(H=wa,G=c[H>>2]|0,H=c[H+4>>2]|0,!((H|0)<0|(mb()|0)!=0)):0){za=59064;c[za>>2]=G;c[za+4>>2]=H;c[14768]=((G|0)!=0|(H|0)!=0)&((H|0)<0|(H|0)==0&G>>>0<=(c[14978]|0)>>>0)&1}m=(mb()|0)==0;o=59064;n=m?c[o>>2]|0:-1;o=m?c[o+4>>2]|0:-1;m=c[Aa>>2]|0;ka:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=1942;else za=1962;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=1943;break ka}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=1943;break ka}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=1942}while(0);if((za|0)==1942){p=_d(m,8,0)|0;za=1943}la:do if((za|0)==1943)if(p){m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=o;a[m+1>>0]=o>>8;a[m+2>>0]=o>>16;a[m+3>>0]=o>>24;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break la}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break la}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}else za=1962;while(0);do if((za|0)==1962){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0}else Di(Aa,81,1,1,0)|0;break f}case 37:{if(Ba|0?(f=(Vd(Ba,wa)|0)==0,za=wa,ya=c[za+4>>2]|0,f&((ya|0)>-1|(ya|0)==-1&(c[za>>2]|0)>>>0>4294967295)):0)c[Da+152>>2]=0;n=c[Da+152>>2]|0;o=((n|0)<0)<<31>>31;m=c[Aa>>2]|0;ma:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=1987;else za=2007;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=1988;break ma}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=1988;break ma}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=1987}while(0);if((za|0)==1987){p=_d(m,8,0)|0;za=1988}na:do if((za|0)==1988)if(p){m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=o;a[m+1>>0]=o>>8;a[m+2>>0]=o>>16;a[m+3>>0]=o>>24;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break na}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break na}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}else za=2007;while(0);do if((za|0)==2007){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0}else Di(Aa,81,1,1,0)|0;za=2020;break b}default:{if(!Ba)k=c[Da+448>>2]|0;else{c[wa>>2]=0;ii(Ba,wa)|0;k=c[wa>>2]|0;l=Da+396|0;if((k|0)>0){c[l>>2]=91;c[Da+400>>2]=Da;c[t>>2]=0;a[Da+408>>0]=1}else{c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;a[l+12>>0]=0;k=0}c[Da+448>>2]=k}o=((k|0)<0)<<31>>31;n=c[Aa>>2]|0;oa:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))za=1897;else za=1917;else{do if((e[n+276>>1]|0)>=8){l=n+300|0;m=c[l>>2]|0;if(m|0){c[l>>2]=c[m>>2];za=n+284|0;c[za>>2]=(c[za>>2]|0)+1;za=1898;break oa}l=n+296|0;m=c[l>>2]|0;if(!m){l=n+292|0;break}else{c[l>>2]=c[m>>2];za=n+284|0;c[za>>2]=(c[za>>2]|0)+1;za=1898;break oa}}else l=n+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;za=1897}while(0);if((za|0)==1897){m=_d(n,8,0)|0;za=1898}pa:do if((za|0)==1898)if(m){p=m;l=p;a[l>>0]=k;a[l+1>>0]=k>>8;a[l+2>>0]=k>>16;a[l+3>>0]=k>>24;p=p+4|0;a[p>>0]=o;a[p+1>>0]=o>>8;a[p+2>>0]=o>>16;a[p+3>>0]=o>>24;p=Aa+108|0;k=c[p>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[p>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[p>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=m;a[o>>0]=-14;m=p;break}else{Ei(Aa,n+(k*20|0)|0,m,-14);m=p;break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,m);m=p;break pa}k=m;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[m>>2]=c[ya>>2];c[ya>>2]=m;m=p;break pa}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);m=p;break}else{ya=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);m=p;break}}else za=1917;while(0);do if((za|0)==1917){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=81;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=1;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0;za=2020;break b}else{Di(Aa,81,1,1,0)|0;za=2020;break b}}}while(0)}while(0);if(!Da){za=2025;break b}else{za=2020;break b}}else k=1;while(0);za=f+36|0;c[za>>2]=(c[za>>2]|0)+1;c[f+12>>2]=k;za=2020}while(0);do if((za|0)==2020){if(c[Da+480>>2]|0){Xd(Da,Ca);break}Aa=Ca;if((c[Da+304>>2]|0)>>>0<=Aa>>>0?(c[Da+308>>2]|0)>>>0>Aa>>>0:0){Aa=Da+300|0;c[Ca>>2]=c[Aa>>2];c[Aa>>2]=Ca}else za=2025}while(0);do if((za|0)==2025)if(!(c[7324]|0)){ab[c[29344>>2]&127](Ca);break}else{Aa=Wa[c[29352>>2]&127](Ca)|0;c[14978]=(c[14978]|0)-Aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Ca);break}while(0);if(!Ba){Ra=Ea;return}if(Da|0){if(c[Da+480>>2]|0){Xd(Da,Ba);Ra=Ea;return}Ca=Ba;if((c[Da+304>>2]|0)>>>0<=Ca>>>0?(c[Da+308>>2]|0)>>>0>Ca>>>0:0){Da=Da+300|0;c[Ba>>2]=c[Da>>2];c[Da>>2]=Ba;Ra=Ea;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](Ba);Ra=Ea;return}else{Da=Wa[c[29352>>2]&127](Ba)|0;c[14978]=(c[14978]|0)-Da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Ba);Ra=Ea;return}} -function Or(f,g,h){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,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,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,_=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,Sa=0,Ta=0,Ua=0,Va=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,ob=0,qb=0,rb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=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;Nb=Ra;Ra=Ra+256|0;Jb=Nb+232|0;Hb=Nb+224|0;Gb=Nb+216|0;Fb=Nb+208|0;Eb=Nb+200|0;Db=Nb+192|0;Cb=Nb+184|0;Ab=Nb+176|0;zb=Nb+168|0;yb=Nb+160|0;xb=Nb+152|0;vb=Nb+144|0;ub=Nb+136|0;tb=Nb+128|0;Ib=Nb+120|0;wb=Nb+112|0;l=Nb+104|0;Kb=Nb+56|0;lb=Nb+244|0;ob=Nb+8|0;qb=Nb;rb=Nb+240|0;if(mb()|0){Mb=7;Ra=Nb;return Mb|0}if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](640)|0;if(!i){Mb=7;Ra=Nb;return Mb|0}else Lb=i}else{i=Wa[c[29356>>2]&127](640)|0;if((c[14985]|0)>>>0<640)c[14985]=640;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){Lb=c[14978]|0;jb=Tv(j|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;ib=L()|0;c[14768]=((ib|0)<0|(ib|0)==0&jb>>>0<=Lb>>>0)&1}j=Wa[c[29340>>2]&127](i)|0;if(!j){Mb=7;Ra=Nb;return Mb|0}i=Wa[c[29352>>2]&127](j)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0){c[14987]=i;Lb=j}else Lb=j}ib=Lb+568|0;jb=Lb+584|0;k=f+144|0;i=c[k>>2]|0;c[Kb>>2]=i;do if(!i){i=c[f+20>>2]|0;c[l>>2]=c[f+16>>2];c[l+4>>2]=i;i=Bb(52411,l)|0;if(!i){j=7;i=0;break}j=qd(c[f+12>>2]|0,i,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](i);else{hb=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-hb;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i)}i=c[Kb>>2]|0;c[k>>2]=i;if(!j){m=i;M=21}else i=0}else{m=i;M=21}while(0);do if((M|0)==21){o=m;do if(!(Vc(o,1)|0)){i=c[o+100>>2]|0;j=i+8|0;if(!(b[j>>1]&9216)){hb=i;c[hb>>2]=1;c[hb+4>>2]=0;b[j>>1]=4;break}else{Pg(i,1,0);break}}while(0);do if((Gc(o)|0)==100){if(!m)j=mc(29576)|0;else{i=c[o+120>>2]|0;if((i|0)!=0?(b[o+144>>1]|0)!=0:0)j=o;else{i=c[o>>2]|0;c[i+64>>2]=25;Ne(i,25);i=29576;j=o}l=mc(i)|0;i=c[j>>2]|0;k=o+40|0;j=c[k>>2]|0;if((j|0)==3082|(a[i+81>>0]|0)!=0){og(i);i=7}else i=c[i+68>>2]&j;c[k>>2]=i;j=l}n=Lc(o,0)|0;if(j){if((n|0)>0){if(mb()|0){l=7;i=0;n=0;p=0;break}i=sb(0,n,0)|0;if(!i){l=7;i=0;n=0;p=0;break}else k=n}else{i=0;k=0}ew(i|0,j|0,n|0)|0;l=0;p=k}else{l=0;i=0;n=0;p=0}}else{l=0;i=0;n=0;p=0}while(0);do if(m){j=c[o>>2]|0;hb=o+136|0;gb=c[hb+4>>2]|0;if((gb|0)>0|(gb|0)==0&(c[hb>>2]|0)>>>0>0)hc(j,o);k=kc(o)|0;c[o+20>>2]=770837923;c[o+36>>2]=-1;c[o+40>>2]=0;a[o+146>>0]=2;c[o+44>>2]=0;c[o+32>>2]=1;a[o+147>>0]=-1;c[o+48>>2]=0;hb=o+64|0;c[hb>>2]=0;c[hb+4>>2]=0;if((k|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break}else{j=c[j+68>>2]&k;break}}else j=0;while(0);j=(l|0)==0?j:l;if((j|0)==0&(g|0)>0){eb=f+252|0;fb=f+168|0;gb=f+16|0;hb=f+20|0;Q=(h|0)>2?h:2;R=f+12|0;S=Lb+580|0;T=f+88|0;U=Lb+588|0;V=f+116|0;W=Lb+600|0;X=f+104|0;Y=Lb+596|0;Z=Lb+572|0;_=Lb+624|0;$=Lb+628|0;aa=f+184|0;ba=Lb+40|0;ca=f+172|0;da=Lb+632|0;ea=Lb+636|0;fa=Lb+64|0;ga=Lb+68|0;ha=Lb+76|0;ia=Lb+80|0;ja=f+228|0;ka=Lb+56|0;la=Lb+4|0;ma=Lb+84|0;na=Lb+48|0;oa=Lb+116|0;pa=Lb+108|0;qa=Lb+8|0;ra=Lb+16|0;sa=Lb+24|0;ta=Lb+32|0;ua=f+96|0;va=Lb+112|0;wa=Lb+88|0;xa=Lb+120|0;ya=Lb+152|0;za=Lb+184|0;Aa=Lb+216|0;Ba=Lb+248|0;Ca=Lb+280|0;Da=Lb+312|0;Ea=Lb+344|0;Fa=Lb+376|0;Ga=Lb+408|0;Ha=Lb+440|0;Ia=Lb+472|0;Ja=Lb+504|0;Ka=Lb+536|0;La=f+192|0;Ma=f+176|0;Na=f+124|0;Oa=ob+4|0;Pa=f+188|0;Qa=lb+4|0;Sa=f+196|0;Ta=ob+8|0;Ua=ob+4|0;Va=f+236|0;Xa=ob+16|0;Ya=ob+24|0;Za=ob+28|0;_a=Kb+8|0;$a=Kb+4|0;bb=Kb+16|0;cb=Kb+28|0;P=Kb+24|0;db=f+180|0;K=g;k=0;o=0;h=0;while(1){u=c[eb>>2]<<10;v=((u|0)<0)<<31>>31;O=c[fb>>2]|0;c[Kb>>2]=O;j=O;if((O|0)==0?(kb=c[hb>>2]|0,c[wb>>2]=c[gb>>2],c[wb+4>>2]=kb,kb=Bb(52607,wb)|0,(kb|0)!=0):0){qd(c[R>>2]|0,kb,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](kb);else{O=Wa[c[29352>>2]&127](kb)|0;c[14978]=(c[14978]|0)-O;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](kb)}j=c[Kb>>2]|0;c[fb>>2]=j}g=j;do if(!(Vc(g,1)|0)){l=c[g+100>>2]|0;m=l+8|0;if(!(b[m>>1]&9216)){O=l;c[O>>2]=Q;c[O+4>>2]=0;b[m>>1]=4;break}else{Pg(l,Q,0);break}}while(0);if((Gc(g)|0)==100){o=Oc(g,0)|0;h=L()|0;t=Nc(g,1)|0}else t=-1;do if(j){j=c[g>>2]|0;O=g+136|0;N=c[O+4>>2]|0;if((N|0)>0|(N|0)==0&(c[O>>2]|0)>>>0>0)hc(j,g);l=kc(g)|0;c[g+20>>2]=770837923;c[g+36>>2]=-1;c[g+40>>2]=0;a[g+146>>0]=2;c[g+44>>2]=0;c[g+32>>2]=1;a[g+147>>0]=-1;c[g+48>>2]=0;O=g+64|0;c[O>>2]=0;c[O+4>>2]=0;if(!((l|0)==3082|(a[j+81>>0]|0)!=0)){j=c[j+68>>2]&l;if(!j){M=67;break}else{M=94;break}}else{og(j);j=7;M=94;break}}else M=67;while(0);if((M|0)==67){M=0;if(n){j=n+-2|0;a:do if((n|0)>2)while(1){l=j+-1|0;if((a[i+l>>0]|0)>=0)break a;if((j|0)>1)j=l;else{j=l;break}}while(0);b:do if((j|0)>0)while(1){l=j+-1|0;if((a[i+l>>0]|0)>=0){l=j;break b}if((j|0)>1)j=l;else break}else l=j;while(0);r=i+l|0;m=a[r>>0]|0;j=m&255;do if(!(j&128)){g=1;s=m&255;q=0}else{O=d[r+1>>0]|0;j=O<<7|j&127;if(!(O&128)){g=2;s=j;q=0;break}O=d[r+2>>0]|0;j=O<<14|j&16383;if(!(O&128)){g=3;s=j;q=0;break}O=d[r+3>>0]|0;j=O<<21|j&2097151;if(!(O&128)){g=4;s=j;q=0;break}m=28;g=r+4|0;j=j&268435455;q=0;do{O=g;g=g+1|0;O=d[O>>0]|0;N=cw(O&127|0,0,m|0)|0;j=Sv(N|0,L()|0,j|0,q|0)|0;q=L()|0;m=m+7|0}while(m>>>0<64&((O&128|0)!=0|0!=0));g=g-r|0;s=j}while(0);r=g+l|0;g=i+r|0;j=a[g>>0]|0;m=j&255;do if(!(m&128))j=1;else{O=d[g+1>>0]|0;j=O<<7|j&127;if(!(O&128)){m=j;j=2;break}O=d[g+2>>0]|0;j=O<<14|j&16383;if(!(O&128)){m=j;j=3;break}O=d[g+3>>0]|0;j=O<<21|j&2097151;if(!(O&128)){m=j;j=4;break}m=(a[g+4>>0]&7)<<28|j&268435455;j=5}while(0);j=(j+r|0)==(n|0)?0:267;if((t|0)<0){E=1;J=m;k=1;n=l;O=s;N=q}else{E=Zv(o|0,h|0,u|0,v|0)|0;O=L()|0;N=Zv(s|0,q|0,u|0,v|0)|0;J=L()|0;N=(O|0)<(J|0)|(O|0)==(J|0)&E>>>0>>0;E=(N^1)&1;J=N?t:m;k=N?k:1;n=N?n:l;O=N?o:s;N=N?h:q}}else{j=0;n=0;M=94}}if((M|0)==94){M=0;if((t|0)<0)break;else{E=0;J=t;O=o;N=h}}gw(Lb|0,0,640)|0;c[S>>2]=1;c:do if(!j){j=c[T>>2]|0;c[Kb>>2]=j;do if(!j){j=c[hb>>2]|0;c[Ib>>2]=c[gb>>2];c[Ib+4>>2]=j;j=Bb(51533,Ib)|0;if(!j){s=0;M=116;break}l=qd(c[R>>2]|0,j,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](j);else{M=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j)}j=c[Kb>>2]|0;c[T>>2]=j;if(!l)M=104;else{s=0;M=116}}else M=104;while(0);if((M|0)==104){M=0;g=j;l=Sv(O|0,N|0,1,0)|0;m=L()|0;do if(!(Vc(g,1)|0)){o=c[g+100>>2]|0;h=o+8|0;if(!(b[h>>1]&9216)){I=o;c[I>>2]=l;c[I+4>>2]=m;b[h>>1]=4;break}else{Pg(o,l,m);break}}while(0);Gc(g)|0;m=Nc(g,0)|0;do if(j){j=c[g>>2]|0;I=g+136|0;H=c[I+4>>2]|0;if((H|0)>0|(H|0)==0&(c[I>>2]|0)>>>0>0)hc(j,g);l=kc(g)|0;c[g+20>>2]=770837923;c[g+36>>2]=-1;c[g+40>>2]=0;a[g+146>>0]=2;c[g+44>>2]=0;c[g+32>>2]=1;a[g+147>>0]=-1;c[g+48>>2]=0;I=g+64|0;c[I>>2]=0;c[I+4>>2]=0;if((l|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break}else{j=c[j+68>>2]&l;break}}else j=0;while(0);if(m)if((E|0)!=0&(m|0)==1){s=1;M=116}else D=m;else{s=0;M=116}}do if((M|0)==116){M=0;g=Sv(O|0,N|0,1,0)|0;q=L()|0;j=c[V>>2]|0;c[Kb>>2]=j;if(!j){l=c[hb>>2]|0;c[tb>>2]=c[gb>>2];c[tb+4>>2]=l;l=Bb(52072,tb)|0;if(!l){m=K;j=7;l=p;M=801;break c}j=qd(c[R>>2]|0,l,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{I=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[Kb>>2]|0;c[V>>2]=l;if(!j)j=l;else{m=K;l=p;M=801;break c}}r=j;l=Sv(O|0,N|0,2,0)|0;m=L()|0;do if(!(Vc(r,1)|0)){o=c[r+100>>2]|0;h=o+8|0;if(!(b[h>>1]&9216)){I=o;c[I>>2]=l;c[I+4>>2]=m;b[h>>1]=4;break}else{Pg(o,l,m);break}}while(0);l=Wv(g|0,q|0,1024,0)|0;l=cw(l|0,L()|0,10)|0;l=Sv(l|0,L()|0,1024,0)|0;m=L()|0;do if(!(Vc(r,2)|0)){h=c[r+100>>2]|0;o=h+40|0;h=h+48|0;if(!(b[h>>1]&9216)){I=o;c[I>>2]=l;c[I+4>>2]=m;b[h>>1]=4;break}else{Pg(o,l,m);break}}while(0);if((Gc(r)|0)==100){if(!j)l=1;else{l=c[r+120>>2]|0;do if(!l)M=137;else{if(!(b[r+144>>1]|0)){M=137;break}m=r}while(0);if((M|0)==137){M=0;l=c[r>>2]|0;c[l+64>>2]=25;Ne(l,25);l=29576;m=r}l=b[l+8>>1]&31;m=c[m>>2]|0;h=r+40|0;o=c[h>>2]|0;if((o|0)==3082|(a[m+81>>0]|0)!=0){og(m);m=7}else m=c[m+68>>2]&o;c[h>>2]=m}m=-1431655766>>>l&1}else m=0;do if(j){j=c[r>>2]|0;I=r+136|0;H=c[I+4>>2]|0;if((H|0)>0|(H|0)==0&(c[I>>2]|0)>>>0>0)hc(j,r);l=kc(r)|0;c[r+20>>2]=770837923;c[r+36>>2]=-1;c[r+40>>2]=0;a[r+146>>0]=2;c[r+44>>2]=0;c[r+32>>2]=1;a[r+147>>0]=-1;c[r+48>>2]=0;I=r+64|0;c[I>>2]=0;c[I+4>>2]=0;if((l|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break}else{j=c[j+68>>2]&l;break}}else j=0;while(0);if(!m){D=s;break}c[S>>2]=c[S>>2]|2;D=s}while(0);if(!j){A=jb;B=A+56|0;do{c[A>>2]=0;A=A+4|0}while((A|0)<(B|0));j=J<<2;l=pb(j,0)|0;c[jb>>2]=l;if(!l){m=K;j=7;l=p;M=801}else{gw(l|0,0,j|0)|0;j=c[X>>2]|0;c[Kb>>2]=j;if(!j){l=c[hb>>2]|0;c[ub>>2]=c[gb>>2];c[ub+4>>2]=l;l=Bb(51773,ub)|0;if(!l){m=K;j=7;l=p;M=801;break}j=qd(c[R>>2]|0,l,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{I=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[Kb>>2]|0;c[X>>2]=l;if(!j)j=l;else{m=K;l=p;M=801;break}}C=j;do if(!(Vc(C,1)|0)){l=c[C+100>>2]|0;m=l+8|0;if(!(b[m>>1]&9216)){I=l;c[I>>2]=O;c[I+4>>2]=N;b[m>>1]=4;break}else{Pg(l,O,N);break}}while(0);y=(j|0)==0;w=C+120|0;z=C+40|0;x=C+144|0;j=(J|0)>0&(Gc(C)|0)==100;d:do if(y){if(!j){j=0;M=206;break}r=0;while(1){l=Oc(C,1)|0;m=L()|0;o=Oc(C,2)|0;h=L()|0;g=Oc(C,3)|0;q=L()|0;s=mc(29576)|0;t=Lc(C,4)|0;u=(c[jb>>2]|0)+(r<<2)|0;if((l|0)==0&(m|0)==0){if(!((o|0)==0&(h|0)==0)){j=267;break}j=t+20|0}else j=0;v=nb(j+96|0)|0;if(!v){j=7;break}A=v;B=A+96|0;do{c[A>>2]=0;A=A+4|0}while((A|0)<(B|0));c[v>>2]=r;a[v+4>>0]=0;M=v+8|0;c[M>>2]=l;c[M+4>>2]=m;M=v+16|0;c[M>>2]=o;c[M+4>>2]=h;M=v+24|0;c[M>>2]=g;c[M+4>>2]=q;if(!j){H=Sv(l|0,m|0,-1,-1)|0;I=L()|0;M=v+32|0;c[M>>2]=H;c[M+4>>2]=I}else{j=v+96|0;c[v+40>>2]=j;a[v+5>>0]=1;c[v+44>>2]=t;if(t|0)ew(j|0,s|0,t|0)|0;A=j+t|0;B=A+20|0;do{a[A>>0]=0;A=A+1|0}while((A|0)<(B|0))}c[u>>2]=v;c[U>>2]=(c[U>>2]|0)+1;r=r+1|0;if(!((r|0)<(J|0)&(Gc(C)|0)==100)){j=0;l=1;M=199;break d}}c[U>>2]=(c[U>>2]|0)+1;l=0;M=199}else{if(!j){j=0;l=1;M=200;break}v=0;while(1){g=Oc(C,1)|0;q=L()|0;r=Oc(C,2)|0;s=L()|0;t=Oc(C,3)|0;u=L()|0;j=c[w>>2]|0;do if(!j)M=184;else{if((e[x>>1]|0)<=4){M=184;break}j=j+160|0}while(0);if((M|0)==184){M=0;j=c[C>>2]|0;c[j+64>>2]=25;Ne(j,25);j=29576}h=mc(j)|0;j=c[C>>2]|0;l=c[z>>2]|0;if((l|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7}else j=c[j+68>>2]&l;c[z>>2]=j;l=Lc(C,4)|0;m=(c[jb>>2]|0)+(v<<2)|0;if((g|0)==0&(q|0)==0){if(!((r|0)==0&(s|0)==0)){j=267;break}j=l+20|0}else j=0;o=nb(j+96|0)|0;if(!o){j=7;break}A=o;B=A+96|0;do{c[A>>2]=0;A=A+4|0}while((A|0)<(B|0));c[o>>2]=v;a[o+4>>0]=0;I=o+8|0;c[I>>2]=g;c[I+4>>2]=q;I=o+16|0;c[I>>2]=r;c[I+4>>2]=s;I=o+24|0;c[I>>2]=t;c[I+4>>2]=u;if(!j){F=Sv(g|0,q|0,-1,-1)|0;H=L()|0;I=o+32|0;c[I>>2]=F;c[I+4>>2]=H}else{j=o+96|0;c[o+40>>2]=j;a[o+5>>0]=1;c[o+44>>2]=l;if(l|0)ew(j|0,h|0,l|0)|0;A=j+l|0;B=A+20|0;do{a[A>>0]=0;A=A+1|0}while((A|0)<(B|0))}c[m>>2]=o;c[U>>2]=(c[U>>2]|0)+1;v=v+1|0;if(!((v|0)<(J|0)&(Gc(C)|0)==100)){j=0;l=1;M=199;break d}}c[U>>2]=(c[U>>2]|0)+1;l=0;M=199}while(0);do if((M|0)==199){M=0;if(!y){M=200;break}if(l){j=0;M=206}}while(0);do if((M|0)==200){M=0;m=c[C>>2]|0;I=C+136|0;H=c[I+4>>2]|0;if((H|0)>0|(H|0)==0&(c[I>>2]|0)>>>0>0)hc(m,C);o=kc(C)|0;c[C+20>>2]=770837923;c[C+36>>2]=-1;c[z>>2]=0;a[C+146>>0]=2;c[C+44>>2]=0;c[C+32>>2]=1;a[C+147>>0]=-1;c[C+48>>2]=0;I=C+64|0;c[I>>2]=0;c[I+4>>2]=0;if((o|0)==3082|(a[m+81>>0]|0)!=0){og(m);if(l){j=7;M=206;break}else break}else if(l){j=c[m+68>>2]&o;M=206;break}else break}while(0);if((M|0)==206)M=0;if(j|0){m=K;l=p;M=801;break}m=c[U>>2]|0;if((m|0)!=(J|0)){q=K;j=0;break}c[Y>>2]=ib;j=eq(f,jb,c[ib>>2]|0,c[Z>>2]|0)|0;if(j|0){m=K;l=p;M=801;break}j=gq(f,jb)|0;if((j|0)!=100){m=K;l=p;M=801;break}e:do if((E|0)!=0&(D|0)>0){x=c[_>>2]|0;y=c[$>>2]|0;z=D+-1|0;j=c[aa>>2]|0;c[Kb>>2]=j;if(!j){l=c[hb>>2]|0;c[vb>>2]=c[gb>>2];c[vb+4>>2]=l;l=Bb(52942,vb)|0;if(!l){m=K;g=J;j=7;l=p;M=750;break}j=qd(c[R>>2]|0,l,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{I=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[Kb>>2]|0;c[aa>>2]=l;if(!j)j=l;else{m=K;g=J;l=p;M=750;break}}D=j;l=Sv(O|0,N|0,1,0)|0;m=L()|0;do if(!(Vc(D,1)|0)){o=c[D+100>>2]|0;h=o+8|0;if(!(b[h>>1]&9216)){I=o;c[I>>2]=l;c[I+4>>2]=m;b[h>>1]=4;break}else{Pg(o,l,m);break}}while(0);l=((z|0)<0)<<31>>31;do if(!(Vc(D,2)|0)){o=c[D+100>>2]|0;m=o+40|0;o=o+48|0;if(!(b[o>>1]&9216)){I=m;c[I>>2]=z;c[I+4>>2]=l;b[o>>1]=4;break}else{Pg(m,z,l);break}}while(0);do if((Gc(D)|0)!=100){if(!j){M=421;break e}j=c[D>>2]|0;M=D+136|0;I=c[M+4>>2]|0;if((I|0)>0|(I|0)==0&(c[M>>2]|0)>>>0>0)hc(j,D);l=kc(D)|0;c[D+20>>2]=770837923;c[D+36>>2]=-1;c[D+40>>2]=0;a[D+146>>0]=2;c[D+44>>2]=0;c[D+32>>2]=1;a[D+147>>0]=-1;c[D+48>>2]=0;M=D+64|0;c[M>>2]=0;c[M+4>>2]=0;if((l|0)==3082|(a[j+81>>0]|0)!=0){og(j);m=K;g=J;j=7;l=p;M=750;break e}else{j=c[j+68>>2]&l;break}}else{v=Oc(D,1)|0;w=L()|0;t=Oc(D,2)|0;u=L()|0;C=(j|0)==0;f:do if(C)j=29576;else{j=c[D+120>>2]|0;do if(j|0){if((e[D+144>>1]|0)<=3)break;j=j+120|0;break f}while(0);j=c[D>>2]|0;c[j+64>>2]=25;Ne(j,25);j=29576}while(0);l=b[j+8>>1]|0;do if((l&514)==514){if((a[j+10>>0]|0)!=1){M=237;break}s=c[j+16>>2]|0}else M=237;while(0);do if((M|0)==237){M=0;if(l&1){s=0;break}s=Gg(j,1)|0}while(0);if(!C){j=c[D>>2]|0;m=D+40|0;l=c[m>>2]|0;if((l|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7}else j=c[j+68>>2]&l;c[m>>2]=j}if(!s){h=ba;j=c[h+4>>2]|0;h=c[h>>2]|0;o=0;r=0}else{l=a[s>>0]|0;if((l+-48&255)<10){j=0;o=0;m=0;do{m=Yv(o|0,m|0,10,0)|0;o=(l&255)+-48|0;o=Sv(m|0,L()|0,o|0,((o|0)<0)<<31>>31|0)|0;m=L()|0;j=j+1|0;l=a[s+j>>0]|0}while((l+-48&255)<10)}else{j=0;o=0;m=0}g:while(1){l=a[s+j>>0]|0;switch(l<<24>>24){case 45:{M=251;break g}case 32:break;default:{q=1;r=0;break g}}j=j+1|0}if((M|0)==251){M=0;l=j+1|0;j=l;l=a[s+l>>0]|0;q=-1;r=-1}if((l+-48&255)<10){h=0;g=0;do{g=Yv(h|0,g|0,10,0)|0;h=(l&255)+-48|0;h=Sv(g|0,L()|0,h|0,((h|0)<0)<<31>>31|0)|0;g=L()|0;j=j+1|0;l=a[s+j>>0]|0}while((l+-48&255)<10);l=h;j=g}else{l=0;j=0}h=Yv(l|0,j|0,q|0,r|0)|0;j=L()|0;r=ba;c[r>>2]=h;c[r+4>>2]=j;r=m}l=Tv(0,0,h|0,j|0)|0;m=L()|0;if((j|0)<0){j=ba;c[j>>2]=l;c[j+4>>2]=m;j=m}else l=h;a[na>>0]=(l|0)==0&(j|0)==0&1;s=Lc(D,4)|0;if(C)q=mc(29576)|0;else{j=c[D+120>>2]|0;do if(!j)M=263;else{if((e[D+144>>1]|0)<=4){M=263;break}j=j+160|0;l=D}while(0);if((M|0)==263){M=0;j=c[D>>2]|0;c[j+64>>2]=25;Ne(j,25);j=29576;l=D}h=mc(j)|0;j=c[l>>2]|0;m=D+40|0;l=c[m>>2]|0;if((l|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7}else j=c[j+68>>2]&l;c[m>>2]=j;q=h}j=c[La>>2]|0;c[Kb>>2]=j;do if(!j){j=c[hb>>2]|0;c[xb>>2]=c[gb>>2];c[xb+4>>2]=j;j=Bb(53128,xb)|0;if(!j){m=7;break}m=qd(c[R>>2]|0,j,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](j);else{I=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j)}j=c[Kb>>2]|0;c[La>>2]=j;if(!m){m=j;M=277}}else{m=j;M=277}while(0);h:do if((M|0)==277){M=0;g=m;do if(!(Vc(g,1)|0)){j=c[g+100>>2]|0;l=j+8|0;if(!(b[l>>1]&9216)){I=j;c[I>>2]=o;c[I+4>>2]=r;b[l>>1]=4;break}else{Pg(j,o,r);break}}while(0);h=(Gc(g)|0)==100;j=h&1;do if(m){l=c[g>>2]|0;I=g+136|0;H=c[I+4>>2]|0;if((H|0)>0|(H|0)==0&(c[I>>2]|0)>>>0>0)hc(l,g);m=kc(g)|0;c[g+20>>2]=770837923;c[g+36>>2]=-1;c[g+40>>2]=0;a[g+146>>0]=2;c[g+44>>2]=0;c[g+32>>2]=1;a[g+147>>0]=-1;c[g+48>>2]=0;I=g+64|0;c[I>>2]=0;c[I+4>>2]=0;if((m|0)==3082|(a[l+81>>0]|0)!=0){og(l);m=7;break h}else{m=c[l+68>>2]&m;break}}else m=0;while(0);if(h&(m|0)==0){c[Kb>>2]=0;c[lb>>2]=0;m=dq(f,t,u,Kb,lb)|0;if(!m){m=c[Kb>>2]|0;j=c[lb>>2]|0;A=Ta;B=A+40|0;do{c[A>>2]=0;A=A+4|0}while((A|0)<(B|0));c[ob>>2]=m;c[Ua>>2]=j;do if(!(a[m>>0]|0))j=1;else{g=m+1|0;j=a[g>>0]|0;l=j&255;if(!(l&128)){I=Xa;c[I>>2]=j&255;c[I+4>>2]=0;j=2;break}I=d[m+2>>0]|0;j=I<<7|l&127;if(!(I&128)){I=Xa;c[I>>2]=j;c[I+4>>2]=0;j=3;break}I=d[m+3>>0]|0;j=I<<14|j&16383;if(!(I&128)){I=Xa;c[I>>2]=j;c[I+4>>2]=0;j=4;break}I=d[m+4>>0]|0;j=I<<21|j&2097151;if(!(I&128)){I=Xa;c[I>>2]=j;c[I+4>>2]=0;j=5;break}h=28;m=m+5|0;j=j&268435455;l=0;do{I=m;m=m+1|0;I=d[I>>0]|0;H=cw(I&127|0,0,h|0)|0;j=Sv(H|0,L()|0,j|0,l|0)|0;l=L()|0;h=h+7|0}while(h>>>0<64&((I&128|0)!=0|0!=0));I=Xa;c[I>>2]=j;c[I+4>>2]=l;j=1-g+m|0}while(0);c[Ta>>2]=j;m=Pr(ob)|0;if((m|0)==0&(c[ob>>2]|0)!=0)do m=Pr(ob)|0;while((m|0)==0&(c[ob>>2]|0)!=0);l=c[Ya>>2]|0;I=c[Za>>2]|0;j=Lu(x,l,(y|0)<(I|0)?y:I)|0;j=(((j|0)==0?y-I|0:j)|0)>0&1;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{I=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0)}else j=1;l=c[Kb>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{I=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0)}if(!((m|0)==0&(j|0)!=0))break;h=a[q>>0]|0;g=h<<24>>24;l=Tv(o|0,r|0,v|0,w|0)|0;L()|0;l=(l+1|0)/16|0;c[Lb>>2]=l;I=sa;c[I>>2]=v;c[I+4>>2]=w;I=ta;c[I>>2]=o;c[I+4>>2]=r;I=qa;c[I>>2]=O;c[I+4>>2]=N;c[ra>>2]=z;if(h<<24>>24<15){j=g;do{I=j;j=j+1|0;E=G(j,l)|0;E=Sv(v|0,w|0,E|0,((E|0)<0)<<31>>31|0)|0;F=L()|0;H=Lb+56+(j<<5)|0;c[H>>2]=E;c[H+4>>2]=F}while((I|0)<14)}o=G(l,g)|0;o=Sv(v|0,w|0,o|0,((o|0)<0)<<31>>31|0)|0;m=L()|0;l=Lb+56+(g<<5)|0;c[l>>2]=o;c[l+4>>2]=m;l=c[ja>>2]|0;l=(s|0)>(l|0)?s:l;m=Lb+56+(g<<5)+28|0;o=Lb+56+(g<<5)+20|0;j=c[o>>2]|0;if((c[m>>2]|0)<(l|0)){if(mb()|0){m=7;break}j=sb(j,(l|0)>0?l:0,0)|0;if(!j){m=7;break}c[m>>2]=l;c[o>>2]=j}ew(j|0,q|0,s|0)|0;c[Lb+56+(g<<5)+24>>2]=s;if(h<<24>>24<=-1){m=0;break}q=g;j=s;while(1){m=c[Lb+56+(q<<5)+20>>2]|0;A=_a;B=A+40|0;do{c[A>>2]=0;A=A+4|0}while((A|0)<(B|0));c[Kb>>2]=m;c[$a>>2]=j;if(!(a[m>>0]|0))j=1;else{h=m+1|0;j=a[h>>0]|0;l=j&255;do if(!(l&128)){I=bb;c[I>>2]=j&255;c[I+4>>2]=0;j=1}else{I=d[m+2>>0]|0;j=I<<7|l&127;if(!(I&128)){I=bb;c[I>>2]=j;c[I+4>>2]=0;j=2;break}I=d[m+3>>0]|0;j=I<<14|j&16383;if(!(I&128)){I=bb;c[I>>2]=j;c[I+4>>2]=0;j=3;break}I=d[m+4>>0]|0;j=I<<21|j&2097151;if(!(I&128)){I=bb;c[I>>2]=j;c[I+4>>2]=0;j=4;break}o=28;m=m+5|0;j=j&268435455;l=0;do{I=m;m=m+1|0;I=d[I>>0]|0;H=cw(I&127|0,0,o|0)|0;j=Sv(H|0,L()|0,j|0,l|0)|0;l=L()|0;o=o+7|0}while(o>>>0<64&((I&128|0)!=0|0!=0));I=bb;c[I>>2]=j;c[I+4>>2]=l;j=m-h|0}while(0);j=j+1|0}c[_a>>2]=j;j=Pr(Kb)|0;l=(j|0)==0;if(l&(c[Kb>>2]|0)!=0)do{j=Pr(Kb)|0;l=(j|0)==0}while(l&(c[Kb>>2]|0)!=0);o=c[cb>>2]|0;do if(l){l=Lb+56+(q<<5)+16|0;m=Lb+56+(q<<5)+8|0;if((c[l>>2]|0)<(o|0)){j=c[m>>2]|0;if(mb()|0){j=7;M=364;break}j=sb(j,(o|0)>0?o:0,0)|0;if(!j){j=7;M=364;break}c[l>>2]=o;c[m>>2]=j}else j=c[m>>2]|0;l=c[P>>2]|0;ew(j|0,l|0,o|0)|0;c[Lb+56+(q<<5)+12>>2]=o;if((q|0)<=0){j=0;break}c[lb>>2]=0;c[ob>>2]=0;h=q+-1|0;j=bb;g=c[j>>2]|0;j=c[j+4>>2]|0;o=Lb+56+(h<<5)|0;c[o>>2]=g;c[o+4>>2]=j;j=dq(f,g,j,lb,ob)|0;g=c[ob>>2]|0;o=c[ja>>2]|0;o=(g|0)>(o|0)?g:o;do if(!j){l=Lb+56+(h<<5)+28|0;m=Lb+56+(h<<5)+20|0;j=c[m>>2]|0;if((c[l>>2]|0)<(o|0)){if(mb()|0){j=7;break}j=sb(j,(o|0)>0?o:0,0)|0;if(!j){j=7;break}c[l>>2]=o;c[m>>2]=j}ew(j|0,c[lb>>2]|0,g|0)|0;c[Lb+56+(h<<5)+24>>2]=g;j=0}while(0);l=c[lb>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{M=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);M=364}else M=364;while(0);if((M|0)==364){M=0;l=c[P>>2]|0}do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{I=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=q+-1|0;if(!((q|0)>0&(j|0)==0)){m=j;break h}q=l;j=c[Lb+56+(l<<5)+24>>2]|0}}while(0);do if(!C){j=c[D>>2]|0;M=D+136|0;I=c[M+4>>2]|0;if((I|0)>0|(I|0)==0&(c[M>>2]|0)>>>0>0)hc(j,D);l=kc(D)|0;c[D+20>>2]=770837923;c[D+36>>2]=-1;c[D+40>>2]=0;a[D+146>>0]=2;c[D+44>>2]=0;c[D+32>>2]=1;a[D+147>>0]=-1;c[D+48>>2]=0;M=D+64|0;c[M>>2]=0;c[M+4>>2]=0;if((l|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break}else{j=c[j+68>>2]&l;break}}else j=0;while(0);j=(m|0)==0?j:m}while(0);if(!j)M=421;else{m=K;g=J;l=p;M=750}}else{j=c[ca>>2]|0;c[Kb>>2]=j;if(!j){l=c[hb>>2]|0;c[yb>>2]=c[gb>>2];c[yb+4>>2]=l;l=Bb(52726,yb)|0;if(!l){m=K;g=J;j=7;l=p;M=750;break}j=qd(c[R>>2]|0,l,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{M=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[Kb>>2]|0;c[ca>>2]=l;if(!j)j=l;else{m=K;g=J;l=p;M=750;break}}g=j;do if(!(Vc(g,1)|0)){l=c[g+100>>2]|0;m=l+8|0;if(!(b[m>>1]&9216)){M=l;c[M>>2]=O;c[M+4>>2]=N;b[m>>1]=4;break}else{Pg(l,O,N);break}}while(0);l=c[U>>2]|0;m=((l|0)<0)<<31>>31;do if(!(Vc(g,2)|0)){h=c[g+100>>2]|0;o=h+40|0;h=h+48|0;if(!(b[h>>1]&9216)){M=o;c[M>>2]=l;c[M+4>>2]=m;b[h>>1]=4;break}else{Pg(o,l,m);break}}while(0);if((Gc(g)|0)==100)o=Nc(g,0)|0;else o=0;do if(j|0){j=c[g>>2]|0;M=g+136|0;I=c[M+4>>2]|0;if((I|0)>0|(I|0)==0&(c[M>>2]|0)>>>0>0)hc(j,g);l=kc(g)|0;c[g+20>>2]=770837923;c[g+36>>2]=-1;c[g+40>>2]=0;a[g+146>>0]=2;c[g+44>>2]=0;c[g+32>>2]=1;a[g+147>>0]=-1;c[g+48>>2]=0;M=g+64|0;c[M>>2]=0;c[M+4>>2]=0;if(!((l|0)==3082|(a[j+81>>0]|0)!=0)){j=c[j+68>>2]&l;if(!j)break;else{m=K;g=J;l=p;M=750;break e}}else{og(j);m=K;g=J;j=7;l=p;M=750;break e}}while(0);j=c[ua>>2]|0;c[Kb>>2]=j;if(!j){l=c[hb>>2]|0;c[zb>>2]=c[gb>>2];c[zb+4>>2]=l;l=Bb(51657,zb)|0;if(!l){m=K;g=J;j=7;l=p;M=750;break}j=qd(c[R>>2]|0,l,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{M=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[Kb>>2]|0;c[ua>>2]=l;if(!j)j=l;else{m=K;g=J;l=p;M=750;break}}m=j;if((Gc(m)|0)==100){F=o<<4;F=Sv(F|0,((F|0)<0)<<31>>31|0,-1,-1)|0;M=L()|0;I=Oc(m,0)|0;H=L()|0;E=sa;c[E>>2]=I;c[E+4>>2]=H;H=Sv(F|0,M|0,I|0,H|0)|0;I=L()|0;M=ta;c[M>>2]=H;c[M+4>>2]=I}do if(j|0){j=c[m>>2]|0;M=m+136|0;I=c[M+4>>2]|0;if((I|0)>0|(I|0)==0&(c[M>>2]|0)>>>0>0)hc(j,m);l=kc(m)|0;c[m+20>>2]=770837923;c[m+36>>2]=-1;c[m+40>>2]=0;a[m+146>>0]=2;c[m+44>>2]=0;c[m+32>>2]=1;a[m+147>>0]=-1;c[m+48>>2]=0;M=m+64|0;c[M>>2]=0;c[M+4>>2]=0;if(!((l|0)==3082|(a[j+81>>0]|0)!=0)){j=c[j+68>>2]&l;if(!j)break;else{m=K;g=J;l=p;M=750;break e}}else{og(j);m=K;g=J;j=7;l=p;M=750;break e}}while(0);j=ta;j=Hr(f,c[j>>2]|0,c[j+4>>2]|0,0,0)|0;if(j|0){m=K;g=J;l=p;M=750;break}I=qa;c[I>>2]=O;c[I+4>>2]=N;c[Lb>>2]=o;c[ra>>2]=D;I=sa;M=c[I>>2]|0;I=c[I+4>>2]|0;H=ka;c[H>>2]=M;c[H+4>>2]=I;H=Sv(M|0,I|0,o|0,((o|0)<0)<<31>>31|0)|0;F=L()|0;E=wa;c[E>>2]=H;c[E+4>>2]=F;E=o<<1;E=Sv(M|0,I|0,E|0,((E|0)<0)<<31>>31|0)|0;F=L()|0;H=xa;c[H>>2]=E;c[H+4>>2]=F;H=o*3|0;H=Sv(M|0,I|0,H|0,((H|0)<0)<<31>>31|0)|0;F=L()|0;E=ya;c[E>>2]=H;c[E+4>>2]=F;E=o<<2;E=Sv(M|0,I|0,E|0,((E|0)<0)<<31>>31|0)|0;F=L()|0;H=za;c[H>>2]=E;c[H+4>>2]=F;H=o*5|0;H=Sv(M|0,I|0,H|0,((H|0)<0)<<31>>31|0)|0;F=L()|0;E=Aa;c[E>>2]=H;c[E+4>>2]=F;E=o*6|0;E=Sv(M|0,I|0,E|0,((E|0)<0)<<31>>31|0)|0;F=L()|0;H=Ba;c[H>>2]=E;c[H+4>>2]=F;H=o*7|0;H=Sv(M|0,I|0,H|0,((H|0)<0)<<31>>31|0)|0;F=L()|0;E=Ca;c[E>>2]=H;c[E+4>>2]=F;E=o<<3;E=Sv(M|0,I|0,E|0,((E|0)<0)<<31>>31|0)|0;F=L()|0;H=Da;c[H>>2]=E;c[H+4>>2]=F;H=o*9|0;H=Sv(M|0,I|0,H|0,((H|0)<0)<<31>>31|0)|0;F=L()|0;E=Ea;c[E>>2]=H;c[E+4>>2]=F;E=o*10|0;E=Sv(M|0,I|0,E|0,((E|0)<0)<<31>>31|0)|0;F=L()|0;H=Fa;c[H>>2]=E;c[H+4>>2]=F;H=o*11|0;H=Sv(M|0,I|0,H|0,((H|0)<0)<<31>>31|0)|0;F=L()|0;E=Ga;c[E>>2]=H;c[E+4>>2]=F;E=o*12|0;E=Sv(M|0,I|0,E|0,((E|0)<0)<<31>>31|0)|0;F=L()|0;H=Ha;c[H>>2]=E;c[H+4>>2]=F;H=o*13|0;H=Sv(M|0,I|0,H|0,((H|0)<0)<<31>>31|0)|0;F=L()|0;E=Ia;c[E>>2]=H;c[E+4>>2]=F;E=o*14|0;E=Sv(M|0,I|0,E|0,((E|0)<0)<<31>>31|0)|0;F=L()|0;H=Ja;c[H>>2]=E;c[H+4>>2]=F;H=o*15|0;H=Sv(M|0,I|0,H|0,((H|0)<0)<<31>>31|0)|0;I=L()|0;M=Ka;c[M>>2]=H;c[M+4>>2]=I;M=421}while(0);i:do if((M|0)==421){M=0;if(!(c[Lb>>2]|0)){m=K;g=J;j=0;l=p;M=750;break}j:while(1){E=c[_>>2]|0;F=c[$>>2]|0;H=c[da>>2]|0;I=c[ea>>2]|0;l=c[fa>>2]|0;m=c[ga>>2]|0;k:do if((m|0)>0){j=0;while(1){if((a[l+j>>0]|0)!=(a[E+j>>0]|0)){A=j;break k}j=j+1|0;if((j|0)>=(m|0)){A=j;break}}}else A=0;while(0);g=0;j=A;l=((A|0)<0)<<31>>31;do{g=g+1|0;j=bw(j|0,l|0,7)|0;l=L()|0}while(!((j|0)==0&(l|0)==0));h=F-A|0;o=0;j=h;l=((h|0)<0)<<31>>31;do{o=o+1|0;j=bw(j|0,l|0,7)|0;l=L()|0}while(!((j|0)==0&(l|0)==0));D=((I|0)<0)<<31>>31;j=0;l=I;m=D;do{j=j+1|0;l=bw(l|0,m|0,7)|0;m=L()|0}while(!((l|0)==0&(m|0)==0));l=h+I+g+o+j|0;j=c[ia>>2]|0;do if((j|0)>0){if((j+l|0)<=(c[ja>>2]|0)){M=480;break}C=ka;j=Hr(f,c[C>>2]|0,c[C+4>>2]|0,c[ha>>2]|0,j)|0;c[la>>2]=(c[la>>2]|0)+1;l:do if(!j){C=A+1|0;m=ka;v=1;l=c[m>>2]|0;m=c[m+4>>2]|0;while(1){z=Lb+56+(v<<5)+8|0;o=c[z>>2]|0;B=Lb+56+(v<<5)+12|0;q=c[B>>2]|0;m:do if((q|0)>0){j=0;while(1){if((a[o+j>>0]|0)!=(a[E+j>>0]|0)){x=j;break m}j=j+1|0;if((j|0)>=(q|0)){x=j;break}}}else x=0;while(0);t=((x|0)<0)<<31>>31;g=0;j=x;o=t;do{g=g+1|0;j=bw(j|0,o|0,7)|0;o=L()|0}while(!((j|0)==0&(o|0)==0));w=C-x|0;u=((w|0)<0)<<31>>31;j=0;o=w;h=u;do{j=j+1|0;o=bw(o|0,h|0,7)|0;h=L()|0}while(!((o|0)==0&(h|0)==0));s=g+w+j|0;y=Lb+56+(v<<5)+24|0;j=c[y>>2]|0;if(!q)break;if((j+s|0)<=(c[ja>>2]|0))break;r=Lb+56+(v<<5)|0;o=r;q=Lb+56+(v<<5)+20|0;j=Hr(f,c[o>>2]|0,c[o+4>>2]|0,c[q>>2]|0,j)|0;a[c[q>>2]>>0]=v;q=(c[q>>2]|0)+1|0;o=Sv(l|0,m|0,1,0)|0;l=q;g=L()|0;while(1){m=o&255;h=l+1|0;a[l>>0]=m|-128;o=bw(o|0,g|0,7)|0;g=L()|0;if((o|0)==0&(g|0)==0)break;else l=h}a[l>>0]=m&127;c[y>>2]=1-q+h;m=r;l=c[m>>2]|0;m=c[m+4>>2]|0;x=Sv(l|0,m|0,1,0)|0;y=L()|0;z=r;c[z>>2]=x;c[z+4>>2]=y;c[B>>2]=0;if((j|0)!=0|(l|0)==0&(m|0)==0)break l;j=v+1|0;if(j>>>0<16)v=j;else{j=0;break l}}q=Lb+56+(v<<5)+20|0;if(!j){o=c[ja>>2]|0;r=Lb+56+(v<<5)+28|0;j=c[q>>2]|0;if((c[r>>2]|0)<(o|0)){if(mb()|0){j=7;break}j=sb(j,(o|0)>0?o:0,0)|0;if(!j){j=7;break}c[r>>2]=o;c[q>>2]=j}a[j>>0]=v;g=(c[q>>2]|0)+1|0;h=g;while(1){j=l&255;o=h+1|0;a[h>>0]=j|-128;l=bw(l|0,m|0,7)|0;m=L()|0;if((l|0)==0&(m|0)==0)break;else h=o}a[h>>0]=j&127;j=1-g+o|0;c[y>>2]=j;m=r}else m=Lb+56+(v<<5)+28|0;l=j+s|0;if((c[m>>2]|0)<(l|0)){j=c[q>>2]|0;if(mb()|0){j=7;break}j=sb(j,(l|0)>0?l:0,0)|0;if(!j){j=7;break}c[m>>2]=l;c[q>>2]=j}l=Lb+56+(v<<5)+16|0;if((c[l>>2]|0)<=(A|0)){j=c[z>>2]|0;if(mb()|0){j=7;break}j=sb(j,(C|0)>0?C:0,0)|0;if(!j){j=7;break}c[l>>2]=C;c[z>>2]=j}if(!(c[B>>2]|0))j=c[y>>2]|0;else{h=(c[q>>2]|0)+(c[y>>2]|0)|0;o=h;g=x;m=t;while(1){j=g&255;l=o+1|0;a[o>>0]=j|-128;g=bw(g|0,m|0,7)|0;m=L()|0;if((g|0)==0&(m|0)==0)break;else o=l}a[o>>0]=j&127;j=(c[y>>2]|0)+(l-h)|0;c[y>>2]=j}h=(c[q>>2]|0)+j|0;o=h;g=w;m=u;while(1){j=g&255;l=o+1|0;a[o>>0]=j|-128;g=bw(g|0,m|0,7)|0;m=L()|0;if((g|0)==0&(m|0)==0)break;else o=l}a[o>>0]=j&127;j=(c[y>>2]|0)+(l-h)|0;c[y>>2]=j;ew((c[q>>2]|0)+j|0,E+x|0,w|0)|0;c[y>>2]=(c[y>>2]|0)+w;ew(c[z>>2]|0,E|0,C|0)|0;c[B>>2]=C;j=0}while(0);m=ka;m=Sv(c[m>>2]|0,c[m+4>>2]|0,1,0)|0;l=L()|0;h=ka;c[h>>2]=m;c[h+4>>2]=l;c[ga>>2]=0;c[ia>>2]=0;h=0;l=F;m=((F|0)<0)<<31>>31;do{h=h+1|0;l=bw(l|0,m|0,7)|0;m=L()|0}while(!((l|0)==0&(m|0)==0));o=0;m=I;l=D;do{o=o+1|0;m=bw(m|0,l|0,7)|0;l=L()|0}while(!((m|0)==0&(l|0)==0));l=F+1+I+h|0;B=l+o|0;C=ba;B=Sv(c[C>>2]|0,c[C+4>>2]|0,B|0,((B|0)<0)<<31>>31|0)|0;C=L()|0;D=ba;c[D>>2]=B;c[D+4>>2]=C;if(!j){l=l+o|0;j=0;M=482}}else M=480;while(0);if((M|0)==480){B=ba;B=Sv(c[B>>2]|0,c[B+4>>2]|0,l|0,((l|0)<0)<<31>>31|0)|0;C=L()|0;D=ba;c[D>>2]=B;c[D+4>>2]=C;l=l+j|0;M=482}do if((M|0)==482){M=0;if((c[ma>>2]|0)<(l|0)){j=c[ha>>2]|0;if(mb()|0){m=K;g=J;j=7;l=p;M=750;break i}j=sb(j,(l|0)>0?l:0,0)|0;if(!j){m=K;g=J;j=7;l=p;M=750;break i}c[ma>>2]=l;c[ha>>2]=j;j=c[ia>>2]|0}if(!j){c[ia>>2]=1;a[c[ha>>2]>>0]=0}j=Qr(ha,fa,E,F,H,I)|0;if(j|0)break;j=gq(f,jb)|0}while(0);l=c[la>>2]|0;if((j|0)==100&(l|0)>=(K|0))break;switch(j|0){case 100:break;case 0:break j;default:{m=K;g=J;l=p;M=750;break i}}}F=K+-1-l|0;j=c[U>>2]|0;n:do if((j|0)>0){w=0;y=j;l=j;o:while(1){x=y+-1|0;if((l|0)>0){m=c[jb>>2]|0;j=0;do{o=c[m+(j<<2)>>2]|0;j=j+1|0}while((j|0)<(l|0)?(c[o>>2]|0)!=(x|0):0)}else o=0;do if(!(c[o+40>>2]|0)){h=o+8|0;m=h;j=c[m>>2]|0;m=c[m+4>>2]|0;do if(!((j|0)==0&(m|0)==0)){l=c[Na>>2]|0;c[Kb>>2]=l;if(!l){l=c[hb>>2]|0;c[Ab>>2]=c[gb>>2];c[Ab+4>>2]=l;l=Bb(52181,Ab)|0;if(!l){M=502;break o}j=qd(c[R>>2]|0,l,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[Kb>>2]|0;c[Na>>2]=l;if(j|0){g=w;break n}m=h;j=c[m>>2]|0;m=c[m+4>>2]|0}q=l;do if(!(Vc(q,1)|0)){h=c[q+100>>2]|0;g=h+8|0;if(!(b[g>>1]&9216)){K=h;c[K>>2]=j;c[K+4>>2]=m;b[g>>1]=4;break}else{Pg(h,j,m);break}}while(0);h=o+24|0;m=c[h>>2]|0;h=c[h+4>>2]|0;if(Vc(q,2)|0){Gc(q)|0;if(!l)break}else{l=c[q+100>>2]|0;j=l+40|0;l=l+48|0;if(!(b[l>>1]&9216)){K=j;c[K>>2]=m;c[K+4>>2]=h;b[l>>1]=4}else Pg(j,m,h);Gc(q)|0}j=c[q>>2]|0;K=q+136|0;J=c[K+4>>2]|0;if((J|0)>0|(J|0)==0&(c[K>>2]|0)>>>0>0)hc(j,q);l=kc(q)|0;c[q+20>>2]=770837923;c[q+36>>2]=-1;c[q+40>>2]=0;a[q+146>>0]=2;c[q+44>>2]=0;c[q+32>>2]=1;a[q+147>>0]=-1;c[q+48>>2]=0;K=q+64|0;c[K>>2]=0;c[K+4>>2]=0;if((l|0)==3082|(a[j+81>>0]|0)!=0){M=521;break o}j=c[j+68>>2]&l;if(j|0){g=w;break n}}while(0);h=c[o>>2]|0;j=c[Ma>>2]|0;c[Kb>>2]=j;if(!j){l=c[hb>>2]|0;c[Cb>>2]=c[gb>>2];c[Cb+4>>2]=l;l=Bb(52829,Cb)|0;if(!l){M=526;break o}j=qd(c[R>>2]|0,l,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[Kb>>2]|0;c[Ma>>2]=l;if(!j)j=l;else{g=w;break n}}o=j;do if(!(Vc(o,1)|0)){l=c[o+100>>2]|0;m=l+8|0;if(!(b[m>>1]&9216)){K=l;c[K>>2]=O;c[K+4>>2]=N;b[m>>1]=4;break}else{Pg(l,O,N);break}}while(0);m=((h|0)<0)<<31>>31;if(Vc(o,2)|0){Gc(o)|0;if(!j){m=w;j=0;break}}else{l=c[o+100>>2]|0;j=l+40|0;l=l+48|0;if(!(b[l>>1]&9216)){K=j;c[K>>2]=h;c[K+4>>2]=m;b[l>>1]=4}else Pg(j,h,m);Gc(o)|0}j=c[o>>2]|0;K=o+136|0;J=c[K+4>>2]|0;if((J|0)>0|(J|0)==0&(c[K>>2]|0)>>>0>0)hc(j,o);l=kc(o)|0;c[o+20>>2]=770837923;c[o+36>>2]=-1;c[o+40>>2]=0;a[o+146>>0]=2;c[o+44>>2]=0;c[o+32>>2]=1;a[o+147>>0]=-1;c[o+48>>2]=0;K=o+64|0;c[K>>2]=0;c[K+4>>2]=0;if((l|0)==3082|(a[j+81>>0]|0)!=0){M=544;break o}m=w;j=c[j+68>>2]&l}else{q=c[o+64>>2]|0;t=c[o+60>>2]|0;v=c[o>>2]|0;c[lb>>2]=0;c[lb+4>>2]=0;c[lb+8>>2]=0;c[ob>>2]=0;c[ob+4>>2]=0;c[ob+8>>2]=0;j=qb;c[j>>2]=0;c[j+4>>2]=0;j=c[aa>>2]|0;c[Kb>>2]=j;do if(!j){l=c[hb>>2]|0;c[Db>>2]=c[gb>>2];c[Db+4>>2]=l;l=Bb(52942,Db)|0;if(!l){j=7;break}j=qd(c[R>>2]|0,l,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[Kb>>2]|0;c[aa>>2]=l;if(!j){j=l;M=554}}else M=554;while(0);p:do if((M|0)==554){M=0;g=j;do if(!(Vc(g,1)|0)){l=c[g+100>>2]|0;m=l+8|0;if(!(b[m>>1]&9216)){K=l;c[K>>2]=O;c[K+4>>2]=N;b[m>>1]=4;break}else{Pg(l,O,N);break}}while(0);u=((v|0)<0)<<31>>31;do if(!(Vc(g,2)|0)){m=c[g+100>>2]|0;l=m+40|0;m=m+48|0;if(!(b[m>>1]&9216)){K=l;c[K>>2]=v;c[K+4>>2]=u;b[m>>1]=4;break}else{Pg(l,v,u);break}}while(0);if((Gc(g)|0)==100){if(!j)l=mc(29576)|0;else{l=c[g+120>>2]|0;do if(!l)M=567;else{if((e[g+144>>1]|0)<=4){M=567;break}l=l+160|0;m=g}while(0);if((M|0)==567){M=0;l=c[g>>2]|0;c[l+64>>2]=25;Ne(l,25);l=29576;m=g}l=mc(l)|0;m=c[m>>2]|0;h=g+40|0;o=c[h>>2]|0;if((o|0)==3082|(a[m+81>>0]|0)!=0){og(m);m=7}else m=c[m+68>>2]&o;c[h>>2]=m}m=Lc(g,4)|0;r=Oc(g,1)|0;s=L()|0;m=Rr(l,m,lb,q,t,qb)|0}else{m=0;r=0;s=0}do if(j){j=c[g>>2]|0;K=g+136|0;J=c[K+4>>2]|0;if((J|0)>0|(J|0)==0&(c[K>>2]|0)>>>0>0)hc(j,g);l=kc(g)|0;c[g+20>>2]=770837923;c[g+36>>2]=-1;c[g+40>>2]=0;a[g+146>>0]=2;c[g+44>>2]=0;c[g+32>>2]=1;a[g+147>>0]=-1;c[g+48>>2]=0;K=g+64|0;c[K>>2]=0;c[K+4>>2]=0;if((l|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break}else{j=c[j+68>>2]&l;break}}else j=0;while(0);j=(m|0)==0?j:m;m=qb;l=c[m>>2]|0;m=c[m+4>>2]|0;do if((j|0)==0&((l|0)!=0|(m|0)!=0)){while(1){c[Kb>>2]=0;c[rb>>2]=0;j=dq(f,l,m,Kb,rb)|0;do if(!j){j=Rr(c[Kb>>2]|0,c[rb>>2]|0,ob,q,t,qb)|0;if(j|0)break;j=Hr(f,l,m,c[ob>>2]|0,c[Oa>>2]|0)|0}while(0);o=c[Kb>>2]|0;do if(o|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{K=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}while(0);o=(j|0)==0;g=qb;h=c[g>>2]|0;g=c[g+4>>2]|0;if(o&((h|0)!=0|(g|0)!=0)){l=h;m=g}else break}if(!o)break p;j=c[Na>>2]|0;c[Kb>>2]=j;if(!j){o=c[hb>>2]|0;c[Eb>>2]=c[gb>>2];c[Eb+4>>2]=o;o=Bb(52181,Eb)|0;if(!o){j=7;break p}j=qd(c[R>>2]|0,o,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](o);else{K=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o)}o=c[Kb>>2]|0;c[Na>>2]=o;if(!j)j=o;else break p}q=j;do if(!(Vc(q,1)|0)){o=c[q+100>>2]|0;h=o+8|0;if(!(b[h>>1]&9216)){K=o;c[K>>2]=r;c[K+4>>2]=s;b[h>>1]=4;break}else{Pg(o,r,s);break}}while(0);h=Sv(l|0,m|0,-1,-1)|0;g=L()|0;if(Vc(q,2)|0){Gc(q)|0;if(!j){h=l;break}}else{o=c[q+100>>2]|0;j=o+40|0;o=o+48|0;if(!(b[o>>1]&9216)){K=j;c[K>>2]=h;c[K+4>>2]=g;b[o>>1]=4}else Pg(j,h,g);Gc(q)|0}j=c[q>>2]|0;K=q+136|0;J=c[K+4>>2]|0;if((J|0)>0|(J|0)==0&(c[K>>2]|0)>>>0>0)hc(j,q);o=kc(q)|0;c[q+20>>2]=770837923;c[q+36>>2]=-1;c[q+40>>2]=0;a[q+146>>0]=2;c[q+44>>2]=0;c[q+32>>2]=1;a[q+147>>0]=-1;c[q+48>>2]=0;K=q+64|0;c[K>>2]=0;c[K+4>>2]=0;if((o|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break p}else{j=c[j+68>>2]&o;M=614;break}}else{l=0;m=0;M=614}while(0);if((M|0)==614){M=0;if(!j)h=l;else break}j=c[Pa>>2]|0;c[Kb>>2]=j;if(!j){l=c[hb>>2]|0;c[Fb>>2]=c[gb>>2];c[Fb+4>>2]=l;l=Bb(53049,Fb)|0;if(!l){j=7;break}j=qd(c[R>>2]|0,l,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[Kb>>2]|0;c[Pa>>2]=l;if(!j)j=l;else break}g=j;do if(!(Vc(g,1)|0)){l=c[g+100>>2]|0;o=l+8|0;if(!(b[o>>1]&9216)){K=l;c[K>>2]=h;c[K+4>>2]=m;b[o>>1]=4;break}else{Pg(l,h,m);break}}while(0);l=c[lb>>2]|0;m=c[Qa>>2]|0;do if(!((l|0)==0|(Vc(g,2)|0)!=0)){l=yc((c[g+100>>2]|0)+40|0,l,m,0,0)|0;if(!l)break;m=c[g>>2]|0;c[m+64>>2]=l;Ne(m,l);m=c[g>>2]|0;if(!((l|0)==3082|(a[m+81>>0]|0)!=0))break;og(m)}while(0);do if(!(Vc(g,3)|0)){m=c[g+100>>2]|0;l=m+80|0;m=m+88|0;if(!(b[m>>1]&9216)){K=l;c[K>>2]=O;c[K+4>>2]=N;b[m>>1]=4;break}else{Pg(l,O,N);break}}while(0);if(Vc(g,4)|0){Gc(g)|0;if(!j)j=0;else M=641}else{l=c[g+100>>2]|0;j=l+120|0;l=l+128|0;if(!(b[l>>1]&9216)){M=j;c[M>>2]=v;c[M+4>>2]=u;b[l>>1]=4}else Pg(j,v,u);Gc(g)|0;M=641}do if((M|0)==641){M=0;j=c[g>>2]|0;K=g+136|0;J=c[K+4>>2]|0;if((J|0)>0|(J|0)==0&(c[K>>2]|0)>>>0>0)hc(j,g);l=kc(g)|0;c[g+20>>2]=770837923;c[g+36>>2]=-1;c[g+40>>2]=0;a[g+146>>0]=2;c[g+44>>2]=0;c[g+32>>2]=1;a[g+147>>0]=-1;c[g+48>>2]=0;K=g+64|0;c[K>>2]=0;c[K+4>>2]=0;if((l|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break}else{j=c[j+68>>2]&l;break}}while(0);Vc(g,2)|0}while(0);l=c[lb>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[ob>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);m=w+1|0}while(0);l=(j|0)==0;if(!((y|0)>1&l)){M=658;break}w=m;y=x;l=c[U>>2]|0}if((M|0)==502){M=0;g=w;j=7;break}else if((M|0)==521){M=0;og(j);g=w;j=7;break}else if((M|0)==526){M=0;g=w;j=7;break}else if((M|0)==544){M=0;og(j);g=w;j=7;break}else if((M|0)==658){M=0;if(!l){g=m;break}E=m;j=c[U>>2]|0;M=660;break}}else{E=0;M=660}while(0);do if((M|0)==660){M=0;if((E|0)==(j|0)){g=j;j=0;break}j=c[Sa>>2]|0;c[Kb>>2]=j;do if(!j){l=c[hb>>2]|0;c[Gb>>2]=c[gb>>2];c[Gb+4>>2]=l;l=Bb(53193,Gb)|0;if(!l){j=7;l=0;M=698;break}j=qd(c[R>>2]|0,l,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{M=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[Kb>>2]|0;c[Sa>>2]=l;if(!j){j=l;M=669}else{l=0;M=698}}else M=669;while(0);q:do if((M|0)==669){M=0;r=j;do if(!(Vc(r,1)|0)){l=c[r+100>>2]|0;m=l+8|0;if(!(b[m>>1]&9216)){K=l;c[K>>2]=O;c[K+4>>2]=N;b[m>>1]=4;break}else{Pg(l,O,N);break}}while(0);r:do if((Gc(r)|0)==100){g=0;o=0;q=0;h=0;l=0;while(1){if((q|0)>=(o|0)){o=o+16|0;m=o<<2;if(mb()|0){o=7;break r}m=sb(h,(m|0)>0?m:0,0)|0;if(!m){o=7;break r}else{g=m;l=m;h=m}}K=Nc(r,0)|0;m=q+1|0;c[g+(q<<2)>>2]=K;if((Gc(r)|0)==100)q=m;else{q=m;o=0;break}}}else{q=0;o=0;g=0;l=0}while(0);do if(j){j=c[r>>2]|0;K=r+136|0;J=c[K+4>>2]|0;if((J|0)>0|(J|0)==0&(c[K>>2]|0)>>>0>0)hc(j,r);m=kc(r)|0;c[r+20>>2]=770837923;c[r+36>>2]=-1;c[r+40>>2]=0;a[r+146>>0]=2;c[r+44>>2]=0;c[r+32>>2]=1;a[r+147>>0]=-1;c[r+48>>2]=0;K=r+64|0;c[K>>2]=0;c[K+4>>2]=0;if((m|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break}else{j=c[j+68>>2]&m;break}}else j=0;while(0);j=(o|0)==0?j:o;if(j|0){M=698;break}j=c[db>>2]|0;c[Kb>>2]=j;if(!j){m=c[hb>>2]|0;c[Hb>>2]=c[gb>>2];c[Hb+4>>2]=m;m=Bb(52884,Hb)|0;if(!m){j=7;M=698;break}j=qd(c[R>>2]|0,m,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](m);else{K=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m)}m=c[Kb>>2]|0;c[db>>2]=m;if(!j)j=m;else{M=698;break}}D=j;do if(!(Vc(D,2)|0)){o=c[D+100>>2]|0;m=o+40|0;o=o+48|0;if(!(b[o>>1]&9216)){K=m;c[K>>2]=O;c[K+4>>2]=N;b[o>>1]=4;break}else{Pg(m,O,N);break}}while(0);a[Va>>0]=1;if(!q){j=0;break}s=D+100|0;t=D+136|0;u=D+20|0;v=D+36|0;w=D+40|0;x=D+146|0;y=D+44|0;z=D+32|0;A=D+147|0;B=D+48|0;C=D+64|0;if(!j){r=0;s:while(1){j=c[g+(r<<2)>>2]|0;do if((j|0)==(r|0))j=0;else{m=((j|0)<0)<<31>>31;do if(!(Vc(D,3)|0)){h=c[s>>2]|0;o=h+80|0;h=h+88|0;if(!(b[h>>1]&9216)){K=o;c[K>>2]=j;c[K+4>>2]=m;b[h>>1]=4;break}else{Pg(o,j,m);break}}while(0);if(Vc(D,1)|0){Gc(D)|0;j=0;break}j=c[s>>2]|0;m=j+8|0;if(!(b[m>>1]&9216)){K=j;c[K>>2]=r;c[K+4>>2]=0;b[m>>1]=4}else Pg(j,r,0);Gc(D)|0;j=c[D>>2]|0;K=t;J=c[K+4>>2]|0;if((J|0)>0|(J|0)==0&(c[K>>2]|0)>>>0>0)hc(j,D);m=kc(D)|0;c[u>>2]=770837923;c[v>>2]=-1;c[w>>2]=0;a[x>>0]=2;c[y>>2]=0;c[z>>2]=1;a[A>>0]=-1;c[B>>2]=0;K=C;c[K>>2]=0;c[K+4>>2]=0;if((m|0)==3082|(a[j+81>>0]|0)!=0)break s;j=c[j+68>>2]&m}while(0);r=r+1|0;if(!(r>>>0>>0&(j|0)==0))break q}og(j);j=7;break}r=0;while(1){j=c[g+(r<<2)>>2]|0;if((j|0)==(r|0))j=0;else{m=((j|0)<0)<<31>>31;do if(!(Vc(D,3)|0)){h=c[s>>2]|0;o=h+80|0;h=h+88|0;if(!(b[h>>1]&9216)){K=o;c[K>>2]=j;c[K+4>>2]=m;b[h>>1]=4;break}else{Pg(o,j,m);break}}while(0);if(!(Vc(D,1)|0)){j=c[s>>2]|0;m=j+8|0;if(!(b[m>>1]&9216)){K=j;c[K>>2]=r;c[K+4>>2]=0;b[m>>1]=4}else Pg(j,r,0);Gc(D)|0}else Gc(D)|0;j=c[D>>2]|0;K=t;J=c[K+4>>2]|0;if((J|0)>0|(J|0)==0&(c[K>>2]|0)>>>0>0)hc(j,D);m=kc(D)|0;c[u>>2]=770837923;c[v>>2]=-1;c[w>>2]=0;a[x>>0]=2;c[y>>2]=0;c[z>>2]=1;a[A>>0]=-1;c[B>>2]=0;K=C;c[K>>2]=0;c[K+4>>2]=0;if((m|0)==3082|(a[j+81>>0]|0)!=0)break;j=c[j+68>>2]&m}r=r+1|0;if(!(r>>>0>>0&(j|0)==0))break q}og(j);j=7}while(0);if((M|0)==698){M=0;a[Va>>0]=1}a[Va>>0]=0;if(!l){g=E;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);g=E;break}else{g=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);g=E;break}}while(0);if(!g){t=F;s=p;r=1;break}k=n+20|0;if(j|0){m=F;k=1;l=p;M=751;break}if((p|0)<(k|0)){if(mb()|0){m=F;k=1;j=7;l=p;M=751;break}j=sb(i,(k|0)>0?k:0,0)|0;if(!j){m=F;k=1;j=7;l=p;M=751;break}else{i=j;p=k}}k=i+n|0;j=k;m=O;h=N;while(1){l=m&255;o=j+1|0;a[j>>0]=l|-128;m=bw(m|0,h|0,7)|0;h=L()|0;if((m|0)==0&(h|0)==0)break;else j=o}a[j>>0]=l&127;n=o-k+n|0;o=i+n|0;j=o;l=g;m=((g|0)<0)<<31>>31;while(1){k=l&255;h=j+1|0;a[j>>0]=k|-128;l=bw(l|0,m|0,7)|0;m=L()|0;if((l|0)==0&(m|0)==0)break;else j=h}a[j>>0]=k&127;m=F;k=1;j=0;n=n-o+h|0;l=p;M=750}while(0);if((M|0)==750){M=0;if(!g){t=m;s=l;r=1}else M=751}if((M|0)==751){M=0;r=ba;r=Tv(0,0,c[r>>2]|0,c[r+4>>2]|0)|0;s=L()|0;t=ba;c[t>>2]=r;c[t+4>>2]=s;t=m;s=l;r=0}m=15;while(1){if((c[Lb+56+(m<<5)+24>>2]|0)>0){M=763;break}l=c[Lb+56+(m<<5)+20>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[Lb+56+(m<<5)+8>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);if(!m)break;else m=m+-1|0}do if((M|0)==763){M=0;do if(m){if((m|0)>0)M=773}else{if(j|0){m=1;M=773;break}j=c[pa>>2]|0;if((c[oa>>2]|0)<11){if(mb()|0){j=7;m=1;M=773;break}j=sb(j,11,0)|0;if(!j){j=7;m=1;M=773;break}c[oa>>2]=11;c[pa>>2]=j}a[j>>0]=1;l=(c[pa>>2]|0)+1|0;p=ka;j=l;o=c[p>>2]|0;p=c[p+4>>2]|0;while(1){m=o&255;h=j+1|0;a[j>>0]=m|-128;o=bw(o|0,p|0,7)|0;p=L()|0;if((o|0)==0&(p|0)==0)break;else j=h}a[j>>0]=m&127;c[va>>2]=1-l+h;j=0;m=1;M=773}while(0);if((M|0)==773){h=0;do{l=c[Lb+56+(h<<5)+24>>2]|0;o=Lb+56+(h<<5)+20|0;if((j|0)==0&(l|0)>0){j=Lb+56+(h<<5)|0;j=Hr(f,c[j>>2]|0,c[j+4>>2]|0,c[o>>2]|0,l)|0}l=c[o>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{M=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[Lb+56+(h<<5)+8>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{M=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);h=h+1|0}while((h|0)!=(m|0))}if(!j){j=qa;j=Sv(c[j>>2]|0,c[j+4>>2]|0,1,0)|0;l=L()|0;o=sa;h=ka;p=ta;if(!(a[na>>0]|0)){q=ba;g=c[q>>2]|0;q=c[q+4>>2]|0}else{g=0;q=0}M=Lb+56+(m<<5)+20|0;j=Jr(f,j,l,c[ra>>2]|0,c[o>>2]|0,c[o+4>>2]|0,c[h>>2]|0,c[h+4>>2]|0,c[p>>2]|0,c[p+4>>2]|0,g,q,c[M>>2]|0,c[Lb+56+(m<<5)+24>>2]|0)|0;l=M}else l=Lb+56+(m<<5)+20|0;l=c[l>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{M=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[Lb+56+(m<<5)+8>>2]|0;if(!l)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{M=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);if(!r){m=t;l=s;M=801;break}if(a[na>>0]|0){m=t;l=s;M=801;break}M=Sv(O|0,N|0,1,0)|0;l=L()|0;m=ba;Gr(f,M,l,c[m>>2]|0,c[m+4>>2]|0)|0;m=t;l=s;M=801}}else{m=K;l=p;M=801}}else{m=K;l=p;M=801}while(0);if((M|0)==801){M=0;q=m;p=l;m=c[U>>2]|0}l=c[jb>>2]|0;if((m|0)>0){g=0;do{h=c[l+(g<<2)>>2]|0;do if(h|0){do if(!(c[h+56>>2]|0)){l=c[h+64>>2]|0;if(!l)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);do if(!(a[h+5>>0]|0)){l=c[h+40>>2]|0;if(!l)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);l=c[h+52>>2]|0;t:do if(l|0){m=c[l+20>>2]|0;gc(c[l+16>>2]|0)|0;do if(m|0){if(c[m+480>>2]|0){Xd(m,l);break t}o=l;if((c[m+304>>2]|0)>>>0>o>>>0)break;if((c[m+308>>2]|0)>>>0<=o>>>0)break;K=m+300|0;c[l>>2]=c[K>>2];c[K>>2]=l;break t}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{K=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);g=g+1|0;l=c[jb>>2]|0}while((g|0)<(c[U>>2]|0))}do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[W>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);c[U>>2]=0;c[jb>>2]=0;c[W>>2]=0;if((j|0)==0&(q|0)>0){K=q;o=O;h=N}else break}if((k|0)!=0&(j|0)==0){l=f+148|0;k=c[l>>2]|0;c[Kb>>2]=k;if(!k){k=c[f+20>>2]|0;c[Jb>>2]=c[f+16>>2];c[Jb+4>>2]=k;k=Bb(52453,Jb)|0;if(!k){j=7;break}j=qd(c[f+12>>2]|0,k,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{f=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}k=c[Kb>>2]|0;c[l>>2]=k;if(j)break}m=k;do if(!(Vc(m,1)|0)){j=c[m+100>>2]|0;l=j+8|0;if(!(b[l>>1]&9216)){Kb=j;c[Kb>>2]=1;c[Kb+4>>2]=0;b[l>>1]=4;break}else{Pg(j,1,0);break}}while(0);if((i|0)==0|(Vc(m,2)|0)!=0){Gc(m)|0;if(!k)j=0;else M=857}else{j=yc((c[m+100>>2]|0)+40|0,i,n,0,0)|0;if(j|0?(Mb=c[m>>2]|0,c[Mb+64>>2]=j,Ne(Mb,j),Mb=c[m>>2]|0,(j|0)==3082|(a[Mb+81>>0]|0)!=0):0)og(Mb);Gc(m)|0;M=857}do if((M|0)==857){j=c[m>>2]|0;Mb=m+136|0;Kb=c[Mb+4>>2]|0;if((Kb|0)>0|(Kb|0)==0&(c[Mb>>2]|0)>>>0>0)hc(j,m);k=kc(m)|0;c[m+20>>2]=770837923;c[m+36>>2]=-1;c[m+40>>2]=0;a[m+146>>0]=2;c[m+44>>2]=0;c[m+32>>2]=1;a[m+147>>0]=-1;c[m+48>>2]=0;Mb=m+64|0;c[Mb>>2]=0;c[Mb+4>>2]=0;if((k|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break}else{j=c[j+68>>2]&k;break}}while(0);Vc(m,2)|0}}}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](Lb);else{Mb=Wa[c[29352>>2]&127](Lb)|0;c[14978]=(c[14978]|0)-Mb;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Lb)}if(!i){Mb=j;Ra=Nb;return Mb|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);Mb=j;Ra=Nb;return Mb|0}else{Mb=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-Mb;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);Mb=j;Ra=Nb;return Mb|0}return 0}function Pr(b){b=b|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;m=b+28|0;g=(c[m>>2]|0)!=0;n=b+16|0;e=n;f=c[e>>2]|0;e=c[e+4>>2]|0;if(g&((f|0)!=0|(e|0)!=0)){l=Sv(f|0,e|0,1,0)|0;o=L()|0;p=n;c[p>>2]=l;c[p+4>>2]=o}o=b+8|0;j=c[o>>2]|0;p=b+4|0;k=c[p>>2]|0;if((j|0)>=(k|0)){c[b>>2]=0;b=0;return b|0}h=c[b>>2]|0;if(g){g=h+j|0;f=a[g>>0]|0;e=f&255;if(e&128){l=d[g+1>>0]|0;e=l<<7|f&127;if(l&128){l=d[g+2>>0]|0;e=l<<14|e&16383;if(l&128){l=d[g+3>>0]|0;e=l<<21|e&2097151;if(!(l&128))f=4;else{e=(a[g+4>>0]&7)<<28|e&268435455;f=5}}else f=3}else f=2}else f=1;j=f+j|0;c[o>>2]=j}else e=0;i=h+j|0;f=a[i>>0]|0;g=f&255;if(g&128){l=d[i+1>>0]|0;f=l<<7|f&127;if(l&128){l=d[i+2>>0]|0;f=l<<14|f&16383;if(l&128){l=d[i+3>>0]|0;f=l<<21|f&2097151;if(!(l&128)){l=f;f=4}else{l=(a[i+4>>0]&7)<<28|f&268435455;f=5}}else{l=f;f=3}}else{l=f;f=2}}else{l=g;f=1}g=f+j|0;c[o>>2]=g;if((e|0)>(g|0)|(l|0)>(k-g|0)){b=267;return b|0}k=l+e|0;i=b+32|0;j=b+24|0;do if((c[i>>2]|0)<(k|0)){f=c[j>>2]|0;if(mb()|0){b=7;return b|0}f=sb(f,(k|0)>0?k:0,0)|0;if(!f){b=7;return b|0}else{c[i>>2]=k;c[j>>2]=f;h=c[b>>2]|0;g=c[o>>2]|0;break}}else f=c[j>>2]|0;while(0);ew(f+e|0,h+g|0,l|0)|0;c[m>>2]=k;i=(c[o>>2]|0)+l|0;c[o>>2]=i;if(!((c[n>>2]|0)==0&(c[n+4>>2]|0)==0)){b=0;return b|0}j=c[b>>2]|0;g=j+i|0;e=a[g>>0]|0;f=e&255;h=b+40|0;do if(f&128){n=d[g+1>>0]|0;f=n<<7|e&127;if(!(n&128)){c[h>>2]=f;e=2;break}n=d[g+2>>0]|0;f=n<<14|f&16383;if(!(n&128)){c[h>>2]=f;e=3;break}n=d[g+3>>0]|0;f=n<<21|f&2097151;if(!(n&128)){c[h>>2]=f;e=4;break}else{f=(a[g+4>>0]&7)<<28|f&268435455;c[h>>2]=f;e=5;break}}else{c[h>>2]=f;e=1}while(0);e=e+i|0;c[o>>2]=e;if(((c[p>>2]|0)-e|0)<(f|0)){b=267;return b|0}c[b+36>>2]=j+e;c[o>>2]=f+e;b=0;return b|0}function Qr(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;m=d+4|0;k=c[m>>2]|0;j=d+8|0;i=c[d>>2]|0;do if((c[j>>2]|0)<(f|0)){if(mb()|0){h=7;return h|0}i=sb(i,(f|0)>0?f:0,0)|0;if(!i){h=7;return h|0}else{c[j>>2]=f;c[d>>2]=i;l=c[m>>2]|0;break}}else l=k;while(0);j=(k|0)==0;a:do if((l|0)>0){d=0;while(1){if((a[i+d>>0]|0)!=(a[e+d>>0]|0)){n=d;break a}d=d+1|0;if((d|0)>=(l|0)){n=d;break}}}else n=0;while(0);o=f-n|0;ew(i|0,e|0,f|0)|0;c[m>>2]=f;if(j){d=b+4|0;m=d;d=c[d>>2]|0}else{m=b+4|0;i=(c[b>>2]|0)+(c[m>>2]|0)|0;d=i;k=n;f=((n|0)<0)<<31>>31;while(1){j=k&255;l=d+1|0;a[d>>0]=j|-128;k=bw(k|0,f|0,7)|0;f=L()|0;if((k|0)==0&(f|0)==0)break;else d=l}a[d>>0]=j&127;d=l-i+(c[m>>2]|0)|0;c[m>>2]=d}i=(c[b>>2]|0)+d|0;d=i;k=o;f=((o|0)<0)<<31>>31;while(1){j=k&255;l=d+1|0;a[d>>0]=j|-128;k=bw(k|0,f|0,7)|0;f=L()|0;if((k|0)==0&(f|0)==0)break;else d=l}a[d>>0]=j&127;d=(c[m>>2]|0)+(l-i)|0;c[m>>2]=d;ew((c[b>>2]|0)+d|0,e+n|0,o|0)|0;d=(c[m>>2]|0)+o|0;c[m>>2]=d;if(!g){h=0;return h|0}i=(c[b>>2]|0)+d|0;d=i;k=h;f=((h|0)<0)<<31>>31;while(1){j=k&255;l=d+1|0;a[d>>0]=j|-128;k=bw(k|0,f|0,7)|0;f=L()|0;if((k|0)==0&(f|0)==0)break;else d=l}a[d>>0]=j&127;e=(c[m>>2]|0)+(l-i)|0;c[m>>2]=e;ew((c[b>>2]|0)+e|0,g|0,h|0)|0;c[m>>2]=(c[m>>2]|0)+h;h=0;return h|0}function Rr(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,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;z=Ra;Ra=Ra+64|0;x=z;y=z+48|0;c[y>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;v=(a[b>>0]|0)!=0;k=f+8|0;do if((c[k>>2]|0)<(e|0)){j=c[f>>2]|0;if(mb()|0){y=7;Ra=z;return y|0}j=sb(j,(e|0)>0?e:0,0)|0;if(!j){y=7;Ra=z;return y|0}else{c[k>>2]=e;c[f>>2]=j;break}}while(0);w=f+4|0;c[w>>2]=0;o=x+8|0;j=o;k=j+40|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));c[x>>2]=b;c[x+4>>2]=e;do if(!(a[b>>0]|0))j=1;else{m=b+1|0;n=x+16|0;j=a[m>>0]|0;k=j&255;if(!(k&128)){t=n;c[t>>2]=j&255;c[t+4>>2]=0;j=2;break}t=d[b+2>>0]|0;j=t<<7|k&127;if(!(t&128)){t=n;c[t>>2]=j;c[t+4>>2]=0;j=3;break}t=d[b+3>>0]|0;j=t<<14|j&16383;if(!(t&128)){t=n;c[t>>2]=j;c[t+4>>2]=0;j=4;break}t=d[b+4>>0]|0;j=t<<21|j&2097151;if(!(t&128)){t=n;c[t>>2]=j;c[t+4>>2]=0;j=5;break}e=28;l=b+5|0;j=j&268435455;k=0;do{t=l;l=l+1|0;t=d[t>>0]|0;s=cw(t&127|0,0,e|0)|0;j=Sv(s|0,L()|0,j|0,k|0)|0;k=L()|0;e=e+7|0}while(e>>>0<64&((t&128|0)!=0|0!=0));t=n;c[t>>2]=j;c[t+4>>2]=k;j=1-m+l|0}while(0);c[o>>2]=j;j=Pr(x)|0;a:do if((j|0)==0&(c[x>>2]|0)!=0){o=x+24|0;q=x+28|0;r=x+36|0;s=x+40|0;t=x+16|0;while(1){if(!(c[w>>2]|0)){m=c[q>>2]|0;n=Lu(c[o>>2]|0,g,(m|0)<(h|0)?m:h)|0;n=(n|0)==0?m-h|0:n;if(!((n|0)<0|v&(n|0)==0)){k=t;j=c[k>>2]|0;k=c[k+4>>2]|0;a[c[f>>2]>>0]=a[b>>0]|0;if((j|0)==0&(k|0)==0){k=0;e=0;j=1}else{n=(c[f>>2]|0)+1|0;l=n;while(1){e=j&255;m=l+1|0;a[l>>0]=e|-128;j=bw(j|0,k|0,7)|0;k=L()|0;if((j|0)==0&(k|0)==0)break;else l=m}a[l>>0]=e&127;e=t;k=c[e>>2]|0;e=c[e+4>>2]|0;j=1-n+m|0}c[w>>2]=j;u=i;c[u>>2]=k;c[u+4>>2]=e;u=26}}else u=26;if((u|0)==26?(u=0,p=Qr(f,y,c[o>>2]|0,c[q>>2]|0,c[r>>2]|0,c[s>>2]|0)|0,p|0):0)break a;j=Pr(x)|0;if(!((j|0)==0&(c[x>>2]|0)!=0)){p=j;break}}}else p=j;while(0);if(!(c[w>>2]|0)){n=x+16|0;e=n;j=c[e>>2]|0;e=c[e+4>>2]|0;a[c[f>>2]>>0]=a[b>>0]|0;if((j|0)==0&(e|0)==0){k=0;e=0;j=1}else{o=(c[f>>2]|0)+1|0;l=o;while(1){k=j&255;m=l+1|0;a[l>>0]=k|-128;j=bw(j|0,e|0,7)|0;e=L()|0;if((j|0)==0&(e|0)==0)break;else l=m}a[l>>0]=k&127;e=n;k=c[e>>2]|0;e=c[e+4>>2]|0;j=1-o+m|0}c[w>>2]=j;c[i>>2]=k;c[i+4>>2]=e}j=c[x+24>>2]|0;do if(j|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{x=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);j=c[y>>2]|0;if(!j){y=p;Ra=z;return y|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);y=p;Ra=z;return y|0}else{y=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);y=p;Ra=z;return y|0}return 0}function Sr(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=Ra;Ra=Ra+16|0;i=m;j=m+8|0;f=d+252|0;g=d+280|0;a:do if((c[f>>2]|0)>0){e=0;b:while(1){h=Er(d,c[g>>2]|0,e,-1)|0;e=e+1|0;switch(h|0){case 0:case 101:break;default:break b}if((e|0)>=(c[f>>2]|0))break a}Fr(d);l=h;Ra=m;return l|0}while(0);Fr(d);if(!(a[d+233>>0]|0)){l=0;Ra=m;return l|0}k=d+48|0;if((c[k>>2]|0)!=255){l=0;Ra=m;return l|0}if(!(c[d+52>>2]|0)){l=0;Ra=m;return l|0}g=d+144|0;e=c[g>>2]|0;c[j>>2]=e;if(!e){e=c[d+20>>2]|0;c[i>>2]=c[d+16>>2];c[i+4>>2]=e;e=Bb(52411,i)|0;if(!e){l=7;Ra=m;return l|0}f=qd(c[d+12>>2]|0,e,-1,133,0,j,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](e);else{d=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e)}e=c[j>>2]|0;c[g>>2]=e;if(f){l=f;Ra=m;return l|0}}h=e;do if(!(Vc(h,1)|0)){f=c[h+100>>2]|0;g=f+8|0;if(!(b[g>>1]&9216)){j=f;c[j>>2]=2;c[j+4>>2]=0;b[g>>1]=4;break}else{Pg(f,2,0);break}}while(0);switch(Gc(h)|0){case 100:{f=Nc(h,0)|0;f=(f|0)==1?8:f;l=22;break}case 101:{f=0;l=22;break}default:{}}if((l|0)==22)c[k>>2]=f;if(!e){l=0;Ra=m;return l|0}e=c[h>>2]|0;l=h+136|0;k=c[l+4>>2]|0;if((k|0)>0|(k|0)==0&(c[l>>2]|0)>>>0>0)hc(e,h);f=kc(h)|0;c[h+20>>2]=770837923;c[h+36>>2]=-1;c[h+40>>2]=0;a[h+146>>0]=2;c[h+44>>2]=0;c[h+32>>2]=1;a[h+147>>0]=-1;c[h+48>>2]=0;l=h+64|0;c[l>>2]=0;c[l+4>>2]=0;if((f|0)==3082|(a[e+81>>0]|0)!=0){og(e);l=7;Ra=m;return l|0}else{l=c[e+68>>2]&f;Ra=m;return l|0}return 0}function Tr(f,h,i){f=f|0;h=h|0;i=i|0;var 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,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,_=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;Aa=Ra;Ra=Ra+176|0;m=Aa+96|0;sa=Aa+164|0;ta=Aa+152|0;ua=Aa+128|0;va=Aa+124|0;xa=Aa+120|0;ya=Aa+116|0;za=Aa+112|0;na=Aa+108|0;oa=Aa+104|0;pa=Aa+100|0;qa=Aa;if((h|0)>6){c[f+20>>2]=1;yc(c[f>>2]|0,55039,-1,1,-1)|0;Ra=Aa;return}j=c[i>>2]|0;if((((b[j+8>>1]&-15393)<<16>>16==-32255?(a[j+11>>0]|0)==112:0)?(Bu(c[j>>2]|0,54938)|0)==0:0)?(ra=c[j+16>>2]|0,ra|0):0){a:do switch(h|0){case 6:{h=c[i+20>>2]|0;j=e[h+8>>1]|0;if(j&4|0){k=c[h>>2]|0;ga=18;break a}if(j&8|0){k=Mg(+g[h>>3])|0;L()|0;ga=18;break a}if(!(j&18)){k=0;ga=18}else{k=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;L()|0;ga=18}break}case 5:{k=15;ga=18;break}case 4:{l=-1;k=15;ga=24;break}case 3:{m=55028;l=-1;k=15;ga=30;break}case 2:{o=55023;n=55028;l=-1;k=15;ga=36;break}default:{ka=55019;la=55023;ma=55028;fa=-1;q=15;ga=42}}while(0);do if((ga|0)==18){h=c[i+16>>2]|0;j=e[h+8>>1]|0;if(j&4|0){l=c[h>>2]|0;ga=24;break}if(j&8|0){l=Mg(+g[h>>3])|0;L()|0;ga=24;break}if(!(j&18)){l=0;ga=24}else{l=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;L()|0;ga=24}}while(0);do if((ga|0)==24){h=c[i+12>>2]|0;if(h){j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0){m=c[h+16>>2]|0;ga=30;break}if(!(j&1)){m=Gg(h,1)|0;ga=30}else{m=0;ga=30}}else{m=0;ga=30}}while(0);do if((ga|0)==30){h=c[i+8>>2]|0;if(h){j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0){o=c[h+16>>2]|0;n=m;ga=36;break}if(!(j&1)){o=Gg(h,1)|0;n=m;ga=36}else{o=0;n=m;ga=36}}else{o=0;n=m;ga=36}}while(0);do if((ga|0)==36?(p=c[i+4>>2]|0,p|0):0){h=b[p+8>>1]|0;if((h&514)==514?(a[p+10>>0]|0)==1:0){ka=c[p+16>>2]|0;la=o;ma=n;fa=l;q=k;ga=42;break}if(!(h&1)){ka=Gg(p,1)|0;la=o;ma=n;fa=l;q=k;ga=42}}while(0);if((ga|0)==42?(ka|0)!=0&((la|0)!=0&(ma|0)!=0):0){if(!q){if((yc(c[f>>2]|0,59952,-1,1,0)|0)!=18){Ra=Aa;return}c[f+20>>2]=18;yc(c[f>>2]|0,31223,-1,1,0)|0;Ra=Aa;return}if(ur(f,ra)|0){Ra=Aa;return}ja=c[ra>>2]|0;ea=ra+16|0;b:do if(!(c[ea>>2]|0)){if((yc(c[f>>2]|0,59952,0,1,0)|0)==18){c[f+20>>2]=18;yc(c[f>>2]|0,31223,-1,1,0)|0}}else{V=(q|0)>-64?q:-64;V=(V|0)<64?V:64;W=(V|0)>-1;X=ja+24|0;Y=(fa|0)<0;Z=ta+4|0;_=ua+16|0;$=ua+4|0;aa=ua+8|0;ba=ua+12|0;ca=ua+20|0;da=0-V|0;ia=1;h=0;c:while(1){if(W)ha=(ia+-1+V|0)/(ia|0)|0;else ha=da;U=0;k=0;j=0;T=0;l=0;d:while(1){S=qa+(U*24|0)|0;c[S>>2]=0;c[S+4>>2]=0;c[S+8>>2]=0;c[S+12>>2]=0;c[S+16>>2]=0;c[S+20>>2]=0;e:do if((c[X>>2]|0)>0){Q=qa+(U*24|0)+4|0;m=qa+(U*24|0)+8|0;R=qa+(U*24|0)+16|0;P=0;O=-1;s=j;f:while(1){g:do if(Y|(P|0)==(fa|0)){c[ua>>2]=0;c[ua+4>>2]=0;c[ua+8>>2]=0;c[ua+12>>2]=0;c[ua+16>>2]=0;c[ua+20>>2]=0;h=Z;c[h>>2]=0;c[h+4>>2]=0;c[ta>>2]=ra;h=c[ea>>2]|0;c[sa>>2]=0;h=Zr(h,sa,92,ta)|0;i=c[Z>>2]|0;do if(!h){h=i*24|0;j=pb(h,0)|0;c[_>>2]=j;if(!j){h=7;break}gw(j|0,0,h|0)|0;c[ua>>2]=ra;c[$>>2]=P;c[aa>>2]=ha;c[ba>>2]=i;c[ca>>2]=-1;h=c[ea>>2]|0;c[sa>>2]=0;h=Zr(h,sa,93,ua)|0;N=(h|0)==0;h:do if(N){if((i|0)>0){o=c[_>>2]|0;n=0;j=s;do{K=(c[o+(n*24|0)+12>>2]|0)==0;J=cw(1,0,n|0)|0;M=L()|0;k=(K?0:J)|k;j=(K?0:M)|j;n=n+1|0}while((n|0)!=(i|0))}else j=s;n=-1;I=0;o=c[ca>>2]|0;J=0;p=0;K=0;M=0;while(1){i:do if((o|0)<0){c[ca>>2]=0;o=c[ba>>2]|0;if((o|0)<=0){s=0;t=0;r=0;q=0;i=0;o=0;break}v=0;while(1){u=c[_>>2]|0;t=u+(v*24|0)+12|0;u=u+(v*24|0)+8|0;s=c[aa>>2]|0;q=c[t>>2]|0;if(q){i=c[u>>2]|0;o=q;j:do if((i|0)<(s|0)){o=q;do{r=a[o>>0]|0;if((r&255)<2){i=-1;o=0;break j}q=r&255;do if(!(q&128))r=1;else{ga=d[o+1>>0]|0;q=ga<<7|r&127;if(!(ga&128)){r=2;break}ga=d[o+2>>0]|0;q=ga<<14|q&16383;if(!(ga&128)){r=3;break}ga=d[o+3>>0]|0;q=ga<<21|q&2097151;if(!(ga&128)){r=4;break}q=(a[o+4>>0]&7)<<28|q&268435455;r=5}while(0);o=o+r|0;i=i+-2+q|0}while((i|0)<(s|0))}while(0);c[u>>2]=i;c[t>>2]=o;o=c[ba>>2]|0}v=v+1|0;if((v|0)>=(o|0)){ga=123;break}}}else{q=c[ba>>2]|0;if((q|0)<=0){t=P;r=I;s=j;q=J;i=K;o=M;break h}r=c[_>>2]|0;o=2147483647;i=0;while(1){if(!(c[r+(i*24|0)+12>>2]|0))x=o;else{x=c[r+(i*24|0)+8>>2]|0;x=(x|0)<(o|0)?x:o}i=i+1|0;if((i|0)==(q|0))break;else o=x}if((x|0)==2147483647){t=P;r=I;s=j;q=J;i=K;o=M;break h}w=x-(c[aa>>2]|0)|0;c[ca>>2]=w+1;i=0;while(1){u=r+(i*24|0)+12|0;v=r+(i*24|0)+8|0;o=c[u>>2]|0;if(o|0){q=c[v>>2]|0;k:do if((q|0)<=(x|0))do{t=a[o>>0]|0;if((t&255)<2){q=-1;o=0;break k}s=t&255;do if(!(s&128))t=1;else{ga=d[o+1>>0]|0;s=ga<<7|t&127;if(!(ga&128)){t=2;break}ga=d[o+2>>0]|0;s=ga<<14|s&16383;if(!(ga&128)){t=3;break}ga=d[o+3>>0]|0;s=ga<<21|s&2097151;if(!(ga&128)){t=4;break}s=(a[o+4>>0]&7)<<28|s&268435455;t=5}while(0);o=o+t|0;q=q+-2+s|0}while((q|0)<=(x|0));while(0);c[v>>2]=q;c[u>>2]=o}u=r+(i*24|0)+20|0;t=r+(i*24|0)+16|0;o=c[u>>2]|0;if(o|0){q=c[t>>2]|0;l:do if((q|0)<=(w|0))do{s=a[o>>0]|0;if((s&255)<2){q=-1;o=0;break l}r=s&255;do if(!(r&128))s=1;else{ga=d[o+1>>0]|0;r=ga<<7|s&127;if(!(ga&128)){s=2;break}ga=d[o+2>>0]|0;r=ga<<14|r&16383;if(!(ga&128)){s=3;break}ga=d[o+3>>0]|0;r=ga<<21|r&2097151;if(!(ga&128)){s=4;break}r=(a[o+4>>0]&7)<<28|r&268435455;s=5}while(0);o=o+s|0;q=q+-2+r|0}while((q|0)<=(w|0));while(0);c[t>>2]=q;c[u>>2]=o}i=i+1|0;o=c[ba>>2]|0;if((i|0)>=(o|0)){ga=123;break i}r=c[_>>2]|0}}while(0);do if((ga|0)==123){ga=0;H=c[ca>>2]|0;if((o|0)<=0){s=0;t=0;r=0;q=0;i=0;o=H;break}F=c[_>>2]|0;G=(c[aa>>2]|0)+H|0;s=0;E=0;t=0;r=0;q=0;i=0;while(1){v=c[F+(E*24|0)+20>>2]|0;m:do if(v){u=c[F+(E*24|0)+16>>2]|0;if((u|0)<(H|0)|(u|0)>=(G|0))break;C=cw(1,0,E|0)|0;D=L()|0;B=c[F+(E*24|0)>>2]|0;if((B|0)<=0){x=v;while(1){s=(((t|T)&C|0)==0&((r|l)&D|0)==0?1e3:1)+s|0;t=t|C;r=r|D;w=a[x>>0]|0;if((w&255)<2)break m;v=w&255;do if(!(v&128))w=1;else{B=d[x+1>>0]|0;v=B<<7|w&127;if(!(B&128)){w=2;break}B=d[x+2>>0]|0;v=B<<14|v&16383;if(!(B&128)){w=3;break}B=d[x+3>>0]|0;v=B<<21|v&2097151;if(!(B&128)){w=4;break}v=(a[x+4>>0]&7)<<28|v&268435455;w=5}while(0);u=u+-2+v|0;if((u|0)<(H|0)|(u|0)>=(G|0))break m;else x=x+w|0}}A=v;while(1){w=cw(1,0,u-H|0)|0;x=L()|0;y=(t|T)&C;z=(r|l)&D;v=0;do{Ba=bw(w|0,x|0,v|0)|0;q=Ba|q;i=L()|0|i;v=v+1|0}while((v|0)!=(B|0));s=((y|0)==0&(z|0)==0?1e3:1)+s|0;t=t|C;r=r|D;w=a[A>>0]|0;if((w&255)<2)break m;v=w&255;do if(!(v&128))w=1;else{Ba=d[A+1>>0]|0;v=Ba<<7|w&127;if(!(Ba&128)){w=2;break}Ba=d[A+2>>0]|0;v=Ba<<14|v&16383;if(!(Ba&128)){w=3;break}Ba=d[A+3>>0]|0;v=Ba<<21|v&2097151;if(!(Ba&128)){w=4;break}v=(a[A+4>>0]&7)<<28|v&268435455;w=5}while(0);u=u+-2+v|0;if((u|0)<(H|0)|(u|0)>=(G|0))break;else A=A+w|0}}while(0);E=E+1|0;if((E|0)==(o|0)){o=H;break}}}while(0);Ba=(s|0)>(n|0);n=Ba?s:n;I=Ba?o:I;J=Ba?t:J;p=Ba?r:p;K=Ba?q:K;M=Ba?i:M}}else{n=0;t=0;r=0;q=0;p=0;i=0;o=0}while(0);j=c[_>>2]|0;do if(j|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{Ba=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-Ba;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);if(!N){j=11;n=O;o=s;break g}if((n|0)<=(O|0)){j=0;n=O;h=0;o=s;break g}c[S>>2]=t;c[Q>>2]=r;j=m;c[j>>2]=q;c[j+4>>2]=p;j=R;c[j>>2]=i;c[j+4>>2]=o;j=0;h=0;o=s;break g}while(0);j=11;n=O;o=s}else{j=10;n=O;o=s}while(0);switch(j&15){case 10:case 0:break;default:break f}P=P+1|0;if((P|0)>=(c[X>>2]|0)){j=o;ga=158;break e}else{O=n;s=o}}if(!j){m=T;j=o}else break d}else{m=qa+(U*24|0)+8|0;ga=158}while(0);if((ga|0)==158){ga=0;Ba=m;m=c[Ba>>2]|T;l=c[Ba+4>>2]|l}U=U+1|0;if(U>>>0>=ia>>>0){ga=161;break}else T=m}if((ga|0)==161){ga=0;j=(ia|0)==4|(k|0)==(m|0)&(j|0)==(l|0)?2:0}switch(j|0){case 2:{ga=164;break c}case 11:{m=0;break c}case 0:break;default:break b}ia=ia+1|0}n:do if((ga|0)==164)if(!h){F=ia+-1|0;G=ra+12|0;H=ra+20|0;I=ha+-1|0;E=0;m=0;k=0;s=0;while(1){B=(E|0)==(F|0);i=c[qa+(E*24|0)>>2]|0;p=c[qa+(E*24|0)+4>>2]|0;r=qa+(E*24|0)+16|0;q=c[r>>2]|0;r=c[r+4>>2]|0;o=c[ra>>2]|0;c[ya>>2]=0;i=i+1|0;n=c[G>>2]|0;l=(n|0)==0;do if(l)h=29576;else{h=c[n+120>>2]|0;if(h|0?i>>>0<(e[n+144>>1]|0)>>>0:0){h=h+(i*40|0)|0;break}h=c[n>>2]|0;c[h+64>>2]=25;Ne(h,25);h=29576}while(0);j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0)A=c[h+16>>2]|0;else if(!(j&1))A=Gg(h,1)|0;else A=0;if(!l){j=c[n>>2]|0;l=n+40|0;h=c[l>>2]|0;if((h|0)==3082|(a[j+81>>0]|0)!=0){og(j);h=7}else h=c[j+68>>2]&h;c[l>>2]=h}n=c[G>>2]|0;if(!A){if(!n)h=1;else{h=c[n+120>>2]|0;do if(!h)ga=186;else{if(i>>>0>=(e[n+144>>1]|0)>>>0){ga=186;break}h=h+(i*40|0)|0;j=n}while(0);if((ga|0)==186){ga=0;h=c[n>>2]|0;c[h+64>>2]=25;Ne(h,25);h=29576;j=n}h=b[h+8>>1]&31;l=c[j>>2]|0;n=n+40|0;j=c[n>>2]|0;if((j|0)==3082|(a[l+81>>0]|0)!=0){og(l);j=7}else j=c[l+68>>2]&j;c[n>>2]=j}h=(-1431655766>>>h&1|0)==0?7:0;j=s}else{z=Lc(n,i)|0;y=o+36|0;j=c[y>>2]|0;D=c[j>>2]|0;l=c[H>>2]|0;c[sa>>2]=0;h=Za[c[D+12>>2]&127](j,A,z,sa)|0;if(h|0)break;c[c[sa>>2]>>2]=j;if((c[D>>2]|0)>0?(wa=Xa[c[D+24>>2]&255](c[sa>>2]|0,l)|0,wa|0):0){ga=195;break}C=c[sa>>2]|0;w=D+20|0;x=(E|0)!=0;t=p;v=0;o=0;j=s;s=q;o:while(1){c[na>>2]=-1;c[oa>>2]=0;c[pa>>2]=0;h=$a[c[w>>2]&127](C,za,na,oa,pa,ya)|0;switch(h|0){case 101:{ga=199;break o}case 0:break;default:{ga=274;break o}}h=c[ya>>2]|0;p:do if((h|0)<(t|0)){p=v;i=t;h=0;n=s;l=r}else{if(!o){o=c[oa>>2]|0;n=z-o|0;i=c[H>>2]|0;o=A+o|0;q:do if((s|0)==0&(r|0)==0){i=t;q=0;r=0}else{h=0;while(1){Ba=cw(1,0,h|0)|0;if((Ba&s|0)==0&((L()|0)&r|0)==0)h=h+1|0;else break}l=0;while(1){Ba=cw(1,0,I-l|0)|0;if((Ba&s|0)==0&((L()|0)&r|0)==0)l=l+1|0;else break}Ba=h-l|0;p=(Ba|0)/2|0;if((Ba|0)<=1){i=t;q=s;break}c[ta>>2]=0;l=c[y>>2]|0;q=c[l>>2]|0;c[sa>>2]=0;h=Za[c[q+12>>2]&127](l,o,n,sa)|0;r:do if(!h){c[c[sa>>2]>>2]=l;do if((c[q>>2]|0)>0){h=Xa[c[q+24>>2]&255](c[sa>>2]|0,i)|0;if(!h)break;Wa[c[q+16>>2]&127](c[sa>>2]|0)|0;c[sa>>2]=0;ga=216;break r}while(0);o=c[sa>>2]|0;l=p+ha|0;n=q+20|0;while(1){if((c[ta>>2]|0)>=(l|0)){ga=219;break}c[ua>>2]=0;c[va>>2]=0;c[xa>>2]=0;h=$a[c[n>>2]&127](o,sa,ua,va,xa,ta)|0;if(h|0){ga=221;break}}if((ga|0)==219){ga=0;Wa[c[q+16>>2]&127](o)|0;h=0}else if((ga|0)==221){ga=0;Wa[c[q+16>>2]&127](o)|0;if((h|0)==101)h=1;else break}i=h-ha+(c[ta>>2]|0)|0;Ba=(i|0)>0;q=bw(s|0,r|0,(Ba?i:0)|0)|0;r=L()|0;i=(Ba?i:0)+t|0;break q}else ga=216;while(0);if((ga|0)==216)ga=0;p=v;o=1;i=t;n=s;l=r;break p}while(0);do if(x|(i|0)>0){n=Eu(ma)|0;if((k+1+n|0)>=(j|0)){l=Sv(j|0,((j|0)<0)<<31>>31|0,100,0)|0;l=Sv(l|0,L()|0,n|0,((n|0)<0)<<31>>31|0)|0;h=L()|0;if(mb()|0){p=v;o=1;h=7;n=q;l=r;break p}h=sb(m,l,h)|0;if(!h){p=v;o=1;h=7;n=q;l=r;break p}m=h;j=l}ew(m+k|0,ma|0,n|0)|0;k=n+k|0;h=m+k|0;ga=238}else{h=c[oa>>2]|0;if(!h)break;if((h|0)<0)h=Eu(A)|0;if((k+1+h|0)>=(j|0)){n=Sv(j|0,((j|0)<0)<<31>>31|0,100,0)|0;n=Sv(n|0,L()|0,h|0,((h|0)<0)<<31>>31|0)|0;l=L()|0;if(mb()|0){p=v;o=1;h=7;n=q;l=r;break p}l=sb(m,n,l)|0;if(!l){p=v;o=1;h=7;n=q;l=r;break p}m=l;j=n}ew(m+k|0,A|0,h|0)|0;k=h+k|0;h=m+k|0;ga=238}while(0);if((ga|0)==238){ga=0;a[h>>0]=0}h=c[ya>>2]|0;if((h|0)<(i|0)){p=v;o=1;h=0;n=q;l=r;break}else{u=1;t=i}}else{u=o;q=s}if((h|0)>=(t+ha|0)){ga=241;break o}p=cw(1,0,h-t|0)|0;p=(p&q|0)!=0|((L()|0)&r|0)!=0;do if((h|0)>(t|0)){o=A+v|0;h=(c[oa>>2]|0)-v|0;if((h|0)<0)h=Eu(o)|0;if((k+1+h|0)>=(j|0)){n=Sv(j|0,((j|0)<0)<<31>>31|0,100,0)|0;n=Sv(n|0,L()|0,h|0,((h|0)<0)<<31>>31|0)|0;l=L()|0;if(mb()|0){h=7;break}l=sb(m,n,l)|0;if(!l){h=7;break}m=l;j=n}ew(m+k|0,o|0,h|0)|0;k=h+k|0;a[m+k>>0]=0;ga=255}else ga=255;while(0);do if((ga|0)==255){ga=0;if(p){n=Eu(ka)|0;o=n+k|0;if((o+1|0)>=(j|0)){l=Sv(j|0,((j|0)<0)<<31>>31|0,100,0)|0;l=Sv(l|0,L()|0,n|0,((n|0)<0)<<31>>31|0)|0;h=L()|0;if(mb()|0){h=7;break}h=sb(m,l,h)|0;if(!h){h=7;break}m=h;j=l}ew(m+k|0,ka|0,n|0)|0;a[m+o>>0]=0;k=o}h=c[oa>>2]|0;o=A+h|0;h=(c[pa>>2]|0)-h|0;if((h|0)<0)h=Eu(o)|0;i=h+k|0;if((i+1|0)>=(j|0)){n=Sv(j|0,((j|0)<0)<<31>>31|0,100,0)|0;n=Sv(n|0,L()|0,h|0,((h|0)<0)<<31>>31|0)|0;l=L()|0;if(mb()|0){h=7;break}l=sb(m,n,l)|0;if(!l){h=7;break}m=l;j=n}ew(m+k|0,o|0,h|0)|0;h=m+i|0;a[h>>0]=0;if(!p){h=0;k=i;break}o=Eu(la)|0;k=o+i|0;if((k+1|0)>=(j|0)){n=Sv(j|0,((j|0)<0)<<31>>31|0,100,0)|0;n=Sv(n|0,L()|0,o|0,((o|0)<0)<<31>>31|0)|0;h=L()|0;if(mb()|0){h=7;k=i;break}l=sb(m,n,h)|0;if(!l){h=7;k=i;break}h=l+i|0;m=l;j=n}ew(h|0,la|0,o|0)|0;a[m+k>>0]=0;h=0}while(0);p=c[pa>>2]|0;o=u;i=t;n=q;l=r}while(0);if(!h){t=i;v=p;s=n;r=l}else break}do if((ga|0)==199){n=A+v|0;o=Eu(n)|0;if((k+1+o|0)>=(j|0)){l=Sv(j|0,((j|0)<0)<<31>>31|0,100,0)|0;l=Sv(l|0,L()|0,o|0,((o|0)<0)<<31>>31|0)|0;h=L()|0;if(mb()|0){h=7;ga=274;break}h=sb(m,l,h)|0;if(!h){h=7;ga=274;break}m=h;j=l}ew(m+k|0,n|0,o|0)|0;k=o+k|0;a[m+k>>0]=0;h=0;ga=274}else if((ga|0)==241){if(!B){h=0;ga=274;break}n=Eu(ma)|0;if((k+1+n|0)>=(j|0)){l=Sv(j|0,((j|0)<0)<<31>>31|0,100,0)|0;l=Sv(l|0,L()|0,n|0,((n|0)<0)<<31>>31|0)|0;h=L()|0;if(mb()|0){h=7;ga=274;break}h=sb(m,l,h)|0;if(!h){h=7;ga=274;break}m=h;j=l}ew(m+k|0,ma|0,n|0)|0;k=n+k|0;a[m+k>>0]=0;h=0;ga=274}while(0);if((ga|0)==274)ga=0;Wa[c[D+16>>2]&127](C)|0}E=E+1|0;if(!(E>>>0>>0&(h|0)==0))break n;else s=j}if((ga|0)==195){Wa[c[D+16>>2]&127](c[sa>>2]|0)|0;c[sa>>2]=0;h=wa}}else m=0;while(0);j=ja+248|0;k=c[j>>2]|0;do if(k|0){l=c[k+20>>2]|0;gc(c[k+16>>2]|0)|0;if(l|0){if(c[l+480>>2]|0){Xd(l,k);break}Ba=k;if((c[l+304>>2]|0)>>>0<=Ba>>>0?(c[l+308>>2]|0)>>>0>Ba>>>0:0){Ba=l+300|0;c[k>>2]=c[Ba>>2];c[Ba>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{Ba=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-Ba;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[j>>2]=0;if(!h){if((yc(c[f>>2]|0,m,-1,1,90)|0)!=18)break;c[f+20>>2]=18;yc(c[f>>2]|0,31223,-1,1,0)|0;break}c[f+20>>2]=h;j=c[f>>2]|0;if(b[j+8>>1]&1){switch(h|0){case 516:{h=50738;break}case 100:{h=50760;break}case 101:{h=50782;break}default:{h=h&255;if(h>>>0<29?(520028155>>>h&1|0)!=0:0)h=c[22960+(h<<2)>>2]|0;else h=50724}}yc(j,h,-1,1,0)|0}if(m|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{Ba=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-Ba;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);Ra=Aa;return}h=c[f>>2]|0;j=h+8|0;if(!(b[j>>1]&9216))b[j>>1]=1;else{Dg(h);h=c[f>>2]|0}c[f+20>>2]=7;h=c[h+32>>2]|0;j=h+81|0;if(a[j>>0]|0){Ra=Aa;return}if(a[h+82>>0]|0){Ra=Aa;return}a[j>>0]=1;if((c[h+180>>2]|0)>0)c[h+264>>2]=1;Ba=h+272|0;c[Ba>>2]=(c[Ba>>2]|0)+1;h=c[h+236>>2]|0;if(!h){Ra=Aa;return}c[h+12>>2]=7;Ra=Aa;return}c[m>>2]=51022;h=Bb(55087,m)|0;c[f+20>>2]=1;yc(c[f>>2]|0,h,-1,1,-1)|0;if(!h){Ra=Aa;return}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);Ra=Aa;return}else{Ba=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-Ba;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);Ra=Aa;return}}function Ur(f,g,h){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,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,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;R=Ra;Ra=Ra+160|0;M=R+104|0;i=R+96|0;E=R;F=R+136|0;O=R+64|0;G=R+132|0;I=R+128|0;J=R+124|0;K=R+120|0;g=c[h>>2]|0;if((((b[g+8>>1]&-15393)<<16>>16==-32255?(a[g+11>>0]|0)==112:0)?(Bu(c[g>>2]|0,54938)|0)==0:0)?(j=c[g+16>>2]|0,j|0):0){if(ur(f,j)|0){Ra=R;return}P=c[j>>2]|0;C=P+36|0;h=c[c[C>>2]>>2]|0;D=j+16|0;g=c[D>>2]|0;do if(!g){if((yc(c[f>>2]|0,59952,0,1,0)|0)==18){c[f+20>>2]=18;yc(c[f>>2]|0,31223,-1,1,0)|0}}else{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;c[O+24>>2]=0;c[O+28>>2]=0;k=F+4|0;c[k>>2]=0;c[k+4>>2]=0;c[F>>2]=j;c[E>>2]=0;k=Zr(g,E,92,F)|0;B=c[F+8>>2]|0;a:do if(!k){A=pb(B*12|0,0)|0;H=O+24|0;c[H>>2]=A;if(A){z=j+32|0;A=c[z+4>>2]|0;x=O+16|0;c[x>>2]=c[z>>2];c[x+4>>2]=A;c[O>>2]=j;x=P+24|0;if((c[x>>2]|0)>0){y=O+4|0;z=O+8|0;A=j+12|0;t=j+20|0;u=h+20|0;v=(B|0)>0;w=P+40|0;s=h+16|0;r=0;h=0;j=0;n=0;b:while(1){c[G>>2]=0;c[I>>2]=0;c[J>>2]=0;c[K>>2]=0;c[y>>2]=r;c[z>>2]=0;l=c[D>>2]|0;c[E>>2]=0;Zr(l,E,94,O)|0;l=c[A>>2]|0;q=r;r=r+1|0;k=(l|0)==0;do if(k)g=29576;else{g=c[l+120>>2]|0;if(g|0?r>>>0<(e[l+144>>1]|0)>>>0:0){g=g+(r*40|0)|0;break}g=c[l>>2]|0;c[g+64>>2]=25;Ne(g,25);g=29576}while(0);i=b[g+8>>1]|0;if((i&514)==514?(a[g+10>>0]|0)==1:0)m=c[g+16>>2]|0;else if(!(i&1))m=Gg(g,1)|0;else m=0;if(!k){i=c[l>>2]|0;k=l+40|0;g=c[k>>2]|0;if((g|0)==3082|(a[i+81>>0]|0)!=0){og(i);g=7}else g=c[i+68>>2]&g;c[k>>2]=g}g=Lc(c[A>>2]|0,r)|0;if(!m){l=c[A>>2]|0;if(!l)g=1;else{g=c[l+120>>2]|0;do if(!g)Q=38;else{if(r>>>0>=(e[l+144>>1]|0)>>>0){Q=38;break}g=g+(r*40|0)|0;i=l}while(0);if((Q|0)==38){Q=0;g=c[l>>2]|0;c[g+64>>2]=25;Ne(g,25);g=29576;i=l}g=b[g+8>>1]&31;k=c[i>>2]|0;l=l+40|0;i=c[l>>2]|0;if((i|0)==3082|(a[k+81>>0]|0)!=0){og(k);i=7}else i=c[k+68>>2]&i;c[l>>2]=i}if(!(-1431655766>>>g&1)){k=7;g=H;Q=83;break a}else g=n}else{i=c[C>>2]|0;k=c[t>>2]|0;l=c[i>>2]|0;c[E>>2]=0;g=Za[c[l+12>>2]&127](i,m,g,E)|0;if(g|0){Q=47;break}c[c[E>>2]>>2]=i;if((c[l>>2]|0)>0?(N=Xa[c[l+24>>2]&255](c[E>>2]|0,k)|0,N|0):0){Q=46;break}p=c[E>>2]|0;g=$a[c[u>>2]&127](p,F,G,I,J,K)|0;i=n;c:while(1){d:while(1){switch(g|0){case 101:break c;case 0:break;default:{Q=79;break b}}do if(v){n=c[H>>2]|0;k=0;l=2147483647;m=0;while(1){g=n+(m*12|0)|0;if(!(c[g>>2]|0))o=k;else{S=(c[n+(m*12|0)+4>>2]|0)-(c[n+(m*12|0)+8>>2]|0)|0;T=(S|0)<(l|0);o=T?g:k;l=T?S:l}m=m+1|0;if((m|0)==(B|0))break;else k=o}if(!o){g=101;break}m=c[o>>2]|0;k=a[m>>0]|0;if((k&255)<2)c[o>>2]=0;else{n=o+4|0;g=k&255;do if(!(g&128))k=1;else{T=d[m+1>>0]|0;g=T<<7|k&127;if(!(T&128)){k=2;break}T=d[m+2>>0]|0;g=T<<14|g&16383;if(!(T&128)){k=3;break}T=d[m+3>>0]|0;g=T<<21|g&2097151;if(!(T&128)){k=4;break}g=(a[m+4>>0]&7)<<28|g&268435455;k=5}while(0);c[o>>2]=m+k;c[n>>2]=g+-2+(c[n>>2]|0)}if((c[K>>2]|0)>=(l|0))break d;do{g=$a[c[u>>2]&127](p,F,G,I,J,K)|0;k=(g|0)==0}while(k&(c[K>>2]|0)<(l|0));if(k)break d;if((g|0)!=101)break;g=(c[w>>2]|0)==0?267:101}else g=101;while(0)}T=(o-(c[H>>2]|0)|0)/12|0;m=c[I>>2]|0;l=(c[J>>2]|0)-m|0;c[M>>2]=q;c[M+4>>2]=T;c[M+8>>2]=m;c[M+12>>2]=l;Cb(64,E,55116,M)|0;l=Eu(E)|0;m=l+j|0;do if((m+1|0)<(i|0))Q=73;else{k=Sv(i|0,((i|0)<0)<<31>>31|0,100,0)|0;k=Sv(k|0,L()|0,l|0,((l|0)<0)<<31>>31|0)|0;g=L()|0;if(mb()|0){g=7;break}g=sb(h,k,g)|0;if(!g){g=7;break}h=g;i=k;Q=73}while(0);if((Q|0)==73){Q=0;ew(h+j|0,E|0,l|0)|0;a[h+m>>0]=0;g=0;j=m}}Wa[c[s>>2]&127](p)|0;g=i}if((r|0)>=(c[x>>2]|0)){k=0;g=H;Q=83;break a}else n=g}if((Q|0)==46){Wa[c[l+16>>2]&127](c[E>>2]|0)|0;c[E>>2]=0;g=N;Q=47}else if((Q|0)==79)Wa[c[s>>2]&127](p)|0;k=g;g=H;Q=83}else{k=0;g=H;h=0;j=0;Q=83}}else{k=7;l=0;j=0}}else{g=O+24|0;h=0;j=0;Q=83}while(0);do if((Q|0)==83){g=c[g>>2]|0;if(g)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);l=h;break}else{l=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);l=h;break}else l=h}while(0);g=P+248|0;h=c[g>>2]|0;do if(h|0){i=c[h+20>>2]|0;gc(c[h+16>>2]|0)|0;if(i|0){if(c[i+480>>2]|0){Xd(i,h);break}T=h;if((c[i+304>>2]|0)>>>0<=T>>>0?(c[i+308>>2]|0)>>>0>T>>>0:0){T=i+300|0;c[h>>2]=c[T>>2];c[T>>2]=h;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{T=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-T;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);c[g>>2]=0;if(!k){if((yc(c[f>>2]|0,l,j+-1|0,1,90)|0)!=18)break;c[f+20>>2]=18;yc(c[f>>2]|0,31223,-1,1,0)|0;break}c[f+20>>2]=k;h=c[f>>2]|0;if(b[h+8>>1]&1){switch(k|0){case 516:{g=50738;break}case 100:{g=50760;break}case 101:{g=50782;break}default:{g=k&255;if(g>>>0<29?(520028155>>>g&1|0)!=0:0)g=c[22960+(g<<2)>>2]|0;else g=50724}}yc(h,g,-1,1,0)|0}if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{T=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-T;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);Ra=R;return}c[i>>2]=51030;g=Bb(55087,i)|0;c[f+20>>2]=1;yc(c[f>>2]|0,g,-1,1,-1)|0;if(!g){Ra=R;return}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);Ra=R;return}else{T=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-T;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);Ra=R;return}}function Vr(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=Ra;Ra=Ra+16|0;g=i;e=c[f>>2]|0;if((((b[e+8>>1]&-15393)<<16>>16==-32255?(a[e+11>>0]|0)==112:0)?(Bu(c[e>>2]|0,54938)|0)==0:0)?(h=c[e+16>>2]|0,h|0):0){g=c[h>>2]|0;f=g+12|0;e=nd(c[f>>2]|0,55167,0,0,0)|0;a:do if(!e){e=Dr(g,1)|0;switch(e|0){case 0:case 101:{h=nd(c[f>>2]|0,55182,0,0,0)|0;e=(h|0)==0?e:h;break a}default:{nd(c[f>>2]|0,55195,0,0,0)|0;nd(c[f>>2]|0,55182,0,0,0)|0;break a}}}while(0);f=g+248|0;g=c[f>>2]|0;do if(g|0){h=c[g+20>>2]|0;gc(c[g+16>>2]|0)|0;if(h|0){if(c[h+480>>2]|0){Xd(h,g);break}j=g;if((c[h+304>>2]|0)>>>0<=j>>>0?(c[h+308>>2]|0)>>>0>j>>>0:0){j=h+300|0;c[g>>2]=c[j>>2];c[j>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{j=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[f>>2]=0;switch(e|0){case 0:{if((yc(c[d>>2]|0,55129,-1,1,0)|0)!=18){Ra=i;return}c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;Ra=i;return}case 101:{if((yc(c[d>>2]|0,55145,-1,1,0)|0)!=18){Ra=i;return}c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;Ra=i;return}default:{c[d+20>>2]=(e|0)==0?-1:e;f=c[d>>2]|0;if(!(b[f+8>>1]&1)){Ra=i;return}switch(e|0){case 516:{e=50738;break}case 100:{e=50760;break}default:{e=e&255;if(e>>>0<29?(520028155>>>e&1|0)!=0:0)e=c[22960+(e<<2)>>2]|0;else e=50724}}yc(f,e,-1,1,0)|0;Ra=i;return}}}c[g>>2]=37598;e=Bb(55087,g)|0;c[d+20>>2]=1;yc(c[d>>2]|0,e,-1,1,-1)|0;if(!e){Ra=i;return}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);Ra=i;return}else{j=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);Ra=i;return}}function Wr(e,f,g){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,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=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,_=0,$=0,aa=0;$=Ra;Ra=Ra+80|0;X=$+48|0;o=$+40|0;i=$+32|0;Y=$+76|0;U=$+64|0;V=$+60|0;Z=$+56|0;W=$;h=c[g>>2]|0;if((((b[h+8>>1]&-15393)<<16>>16==-32255?(a[h+11>>0]|0)==112:0)?(Bu(c[h>>2]|0,54938)|0)==0:0)?(T=c[h+16>>2]|0,T|0):0){do if((f|0)>1?(j=c[g+4>>2]|0,(j|0)!=0):0){f=b[j+8>>1]|0;if((f&514)==514?(a[j+10>>0]|0)==1:0){f=c[j+16>>2]|0;break}if(!(f&1))f=Gg(j,1)|0;else f=0}else f=0;while(0);_=c[T>>2]|0;O=(f|0)==0?55212:f;P=T+16|0;f=c[P>>2]|0;if(!f){if((yc(c[e>>2]|0,59952,0,0,0)|0)!=18){Ra=$;return}c[e+20>>2]=18;yc(c[e>>2]|0,31223,-1,1,0)|0;Ra=$;return}Q=W+8|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;c[W>>2]=T;R=W+4|0;c[R>>2]=c[_+24>>2];S=T+92|0;g=c[S>>2]|0;if(g)if(!(Bu(c[g+12>>2]|0,O)|0)){j=0;u=47}else{a[g>>0]=0;do if((a[g+1>>0]|0)==0?(a[g+2>>0]|0)==0:0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{N=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-N;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);c[S>>2]=0;f=c[P>>2]|0;u=27}else u=27;a:do if((u|0)==27){c[U>>2]=0;c[Y>>2]=0;Zr(f,Y,95,U)|0;g=c[U>>2]|0;c[T+24>>2]=g;c[Q>>2]=g;f=a[O>>0]|0;b:do if(!(f<<24>>24))f=0;else{j=_+232|0;k=_+234|0;l=c[R>>2]|0;m=G(l,g)|0;n=m*3|0;i=G((l+31|0)/32|0,g)|0;h=0;g=0;c:while(1){c[Y>>2]=0;switch(f<<24>>24){case 98:case 121:case 120:case 115:case 99:case 112:break;case 110:{if(!(a[j>>0]|0)){f=110;break c}break}case 97:{if(!(a[j>>0]|0)){f=97;break c}break}case 108:{if(!(a[k>>0]|0)){f=108;break c}break}default:break c}switch(f<<24>>24|0){case 99:case 112:case 110:{f=1;break}case 115:case 108:case 97:{f=l;break}case 121:{f=m;break}case 98:{f=i;break}default:f=n}g=f+g|0;h=h+1|0;f=a[O+h>>0]|0;if(!(f<<24>>24)){f=g;break b}}c[o>>2]=f<<24>>24;Wp(Y,55216,o);f=c[Y>>2]|0;c[e+20>>2]=1;yc(c[e>>2]|0,f,-1,1,-1)|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{e=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);break a}while(0);g=cw(f|0,0,3)|0;i=L()|0;g=g|4;h=Eu(O)|0;N=Sv(h|0,0,21,0)|0;i=Sv(N|0,L()|0,g|0,i|0)|0;i=pb(i,L()|0)|0;if(!i){c[S>>2]=0;c[T+88>>2]=1;i=0;f=7;h=0;u=303;break}else{j=g+20|0;gw(i|0,0,j|0)|0;u=i+16|0;c[u>>2]=20;g=f+1|0;c[u+(g<<2)>>2]=(g<<2)+20;c[i+4>>2]=f;j=i+j|0;c[i+12>>2]=j;ew(j|0,O|0,h+1|0)|0;a[i>>0]=1;c[S>>2]=i;c[T+88>>2]=1;j=1;g=i;u=47;break}}while(0);d:do if((u|0)==47){f=g+1|0;do if(a[f>>0]|0){f=g+2|0;if(!(a[f>>0]|0)){a[f>>0]=1;N=g+16+((c[g+4>>2]|0)+2<<2)|0;i=98;break}f=g+4|0;h=pb(c[f>>2]<<2,0)|0;if(!h){i=0;f=7;h=0;u=303;break d}if(!(c[g+8>>2]|0)){N=h;i=90}else{ew(h|0,g+20|0,c[f>>2]<<2|0)|0;N=h;i=90}}else{a[f>>0]=1;N=g+20|0;i=98}while(0);h=N;F=W+28|0;c[F>>2]=h;H=T+24|0;c[Q>>2]=c[H>>2];c[V>>2]=0;I=c[T>>2]|0;c[Z>>2]=0;J=W+24|0;K=U+4|0;M=(j|0)==0;x=T+32|0;y=I+140|0;z=U+4|0;A=I+16|0;B=I+20|0;C=T+28|0;D=I+12|0;E=W+16|0;w=0;g=N;while(1){v=O+w|0;f=a[v>>0]|0;if(!(f<<24>>24)){f=0;break}a[J>>0]=f;e:do switch(f<<24>>24|0){case 112:{if(M)f=0;else{c[g>>2]=c[Q>>2];f=0}break}case 99:{if(M)f=0;else{c[g>>2]=c[R>>2];f=0}break}case 110:{if(M)f=0;else{f=c[Z>>2]|0;if(!f){f=lr(I,Z)|0;if(!f){f=c[Z>>2]|0;if(!f){k=mc(29576)|0;u=74}else u=65}else j=0}else u=65;if((u|0)==65){g=c[f+120>>2]|0;if((g|0)!=0?(b[f+144>>1]|0)!=0:0)j=f;else{g=c[f>>2]|0;c[g+64>>2]=25;Ne(g,25);g=29576;j=f}k=mc(g)|0;g=c[j>>2]|0;j=f+40|0;f=c[j>>2]|0;if((f|0)==3082|(a[g+81>>0]|0)!=0){og(g);f=7}else f=c[g+68>>2]&f;c[j>>2]=f;u=74}if((u|0)==74){u=0;f=a[k>>0]|0;g=f&255;do if(!(g&128)){f=f&255;g=0}else{t=d[k+1>>0]|0;f=t<<7|g&127;if(!(t&128)){g=0;break}t=d[k+2>>0]|0;f=t<<14|f&16383;if(!(t&128)){g=0;break}t=d[k+3>>0]|0;f=t<<21|f&2097151;if(!(t&128)){g=0;break}l=28;j=k+4|0;f=f&268435455;g=0;while(1){t=d[j>>0]|0;s=cw(t&127|0,0,l|0)|0;f=Sv(s|0,L()|0,f|0,g|0)|0;g=L()|0;l=l+7|0;if(!(l>>>0<64&((t&128|0)!=0|0!=0)))break;else j=j+1|0}}while(0);j=f;f=(f|0)==0&(g|0)==0?267:0}c[V>>2]=f;c[c[F>>2]>>2]=j}break}case 97:{if(M)f=0;else{f=c[Z>>2]|0;if(!f){f=lr(I,Z)|0;if(!f){f=c[Z>>2]|0;if(!f){l=mc(29576)|0;u=99}else u=90}}else u=90;if((u|0)==90){g=c[f+120>>2]|0;if((g|0)!=0?(b[f+144>>1]|0)!=0:0)j=f;else{g=c[f>>2]|0;c[g+64>>2]=25;Ne(g,25);g=29576;j=f}k=mc(g)|0;g=c[j>>2]|0;j=f+40|0;f=c[j>>2]|0;if((f|0)==3082|(a[g+81>>0]|0)!=0){og(g);f=7}else f=c[g+68>>2]&f;c[j>>2]=f;l=k;u=99}if((u|0)==99){u=0;g=a[l>>0]|0;f=g&255;do if(!(f&128)){j=1;f=g&255;g=0}else{t=d[l+1>>0]|0;f=t<<7|f&127;if(!(t&128)){j=2;g=0;break}t=d[l+2>>0]|0;f=t<<14|f&16383;if(!(t&128)){j=3;g=0;break}t=d[l+3>>0]|0;f=t<<21|f&2097151;if(!(t&128)){j=4;g=0;break}j=28;k=l+4|0;f=f&268435455;g=0;do{t=k;k=k+1|0;t=d[t>>0]|0;s=cw(t&127|0,0,j|0)|0;f=Sv(s|0,L()|0,f|0,g|0)|0;g=L()|0;j=j+7|0}while(j>>>0<64&((t&128|0)!=0|0!=0));j=k-l|0}while(0);if((f|0)==0&(g|0)==0)f=267;else{c[V>>2]=0;if((c[R>>2]|0)<=0){f=0;break e}o=bw(f|0,0,1)|0;p=L()|0;n=0;m=l+j|0;while(1){j=a[m>>0]|0;g=j&255;do if(!(g&128)){k=1;g=j&255}else{t=d[m+1>>0]|0;g=t<<7|g&127;if(!(t&128)){k=2;break}t=d[m+2>>0]|0;g=t<<14|g&16383;if(!(t&128)){k=3;break}t=d[m+3>>0]|0;g=t<<21|g&2097151;if(!(t&128)){k=4;break}k=28;l=m+4|0;g=g&268435455;j=0;do{t=l;l=l+1|0;t=d[t>>0]|0;s=cw(t&127|0,0,k|0)|0;g=Sv(s|0,L()|0,g|0,j|0)|0;j=L()|0;k=k+7|0}while(k>>>0<64&((t&128|0)!=0|0!=0));k=l-m|0}while(0);t=Sv(g|0,0,o|0,p|0)|0;t=_v(t|0,L()|0,f|0,0)|0;L()|0;c[(c[F>>2]|0)+(n<<2)>>2]=t;n=n+1|0;if((n|0)>=(c[R>>2]|0)){f=0;break e}else m=m+k|0}}}c[V>>2]=f}break}case 108:{l=x;k=c[l>>2]|0;l=c[l+4>>2]|0;u=c[y>>2]|0;c[Y>>2]=u;g=u;do if(!u){j=c[B>>2]|0;c[X>>2]=c[A>>2];c[X+4>>2]=j;j=Bb(52364,X)|0;if(!j){f=7;u=156;break}f=qd(c[D>>2]|0,j,-1,133,0,Y,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](j);else{u=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j)}g=c[Y>>2]|0;c[y>>2]=g;if(!f)u=134;else u=156}else u=134;while(0);f:do if((u|0)==134){u=0;o=g;do if(!(Vc(o,1)|0)){f=c[o+100>>2]|0;j=f+8|0;if(!(b[j>>1]&9216)){t=f;c[t>>2]=k;c[t+4>>2]=l;b[j>>1]=4;break}else{Pg(f,k,l);break}}while(0);f=(g|0)==0;do if((Gc(o)|0)==100){if(!f){m=o+120|0;f=c[m>>2]|0;do if(!f)u=143;else{if(!(b[o+144>>1]|0)){u=143;break}j=f;f=o}while(0);if((u|0)==143){u=0;j=c[o>>2]|0;c[j+64>>2]=25;Ne(j,25);j=29576;f=o}l=b[j+8>>1]&15;j=c[f>>2]|0;n=o+40|0;k=c[n>>2]|0;if((k|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7}else j=c[j+68>>2]&k;c[n>>2]=j;if((l|16)<<16>>16!=16){u=150;break}c[V>>2]=0;f=c[m>>2]|0;do if(!f)u=160;else{if(!(b[o+144>>1]|0)){u=160;break}j=o}while(0);if((u|0)==160){u=0;f=c[o>>2]|0;c[f+64>>2]=25;Ne(f,25);f=29576;j=o}k=mc(f)|0;f=c[j>>2]|0;j=c[n>>2]|0;if((j|0)==3082|(a[f+81>>0]|0)!=0){og(f);f=7}else f=c[f+68>>2]&j;c[n>>2]=f;if((c[R>>2]|0)<=0){k=o;g=o;f=0;break f}m=k;n=0;while(1){f=d[m>>0]|0;do if(!(f&128))j=1;else{u=d[m+1>>0]|0;f=u<<7|f&127;if(!(u&128)){j=2;break}u=d[m+2>>0]|0;f=u<<14|f&16383;if(!(u&128)){j=3;break}u=d[m+3>>0]|0;f=u<<21|f&2097151;if(!(u&128)){j=4;break}k=28;l=m+4|0;f=f&268435455;j=0;do{u=l;l=l+1|0;u=d[u>>0]|0;t=cw(u&127|0,0,k|0)|0;f=Sv(t|0,L()|0,f|0,j|0)|0;j=L()|0;k=k+7|0}while(k>>>0<64&((u&128|0)!=0|0!=0));j=l-m|0}while(0);c[(c[F>>2]|0)+(n<<2)>>2]=f;n=n+1|0;if((n|0)>=(c[R>>2]|0)){j=o;f=0;u=174;break f}else m=m+j|0}}}else if(!f){f=o;u=150}while(0);do if((u|0)==150){f=c[f>>2]|0;u=o+136|0;t=c[u+4>>2]|0;if((t|0)>0|(t|0)==0&(c[u>>2]|0)>>>0>0)hc(f,o);g=kc(o)|0;c[o+20>>2]=770837923;c[o+36>>2]=-1;c[o+40>>2]=0;a[o+146>>0]=2;c[o+44>>2]=0;c[o+32>>2]=1;a[o+147>>0]=-1;c[o+48>>2]=0;u=o+64|0;c[u>>2]=0;c[u+4>>2]=0;if(!((g|0)==3082|(a[f+81>>0]|0)!=0)){f=c[f+68>>2]&g;if(!f)break;else{g=0;u=156;break f}}else{og(f);f=7;g=0;u=156;break f}}while(0);f=267;g=0;u=156}while(0);if((u|0)==156){c[V>>2]=f;j=g;u=174}if((u|0)==174){u=0;if(!g)break e;k=j;g=j}g=c[g>>2]|0;t=k+136|0;s=c[t+4>>2]|0;if((s|0)>0|(s|0)==0&(c[t>>2]|0)>>>0>0)hc(g,k);t=kc(k)|0;c[k+20>>2]=770837923;c[k+36>>2]=-1;c[k+40>>2]=0;a[k+146>>0]=2;c[k+44>>2]=0;c[k+32>>2]=1;a[k+147>>0]=-1;c[k+48>>2]=0;s=k+64|0;c[s>>2]=0;c[s+4>>2]=0;if((t|0)==3082|(a[g+81>>0]|0)!=0)og(g);break}case 115:{f=z;c[f>>2]=0;c[f+4>>2]=0;c[U>>2]=T;f=c[P>>2]|0;c[Y>>2]=0;f=Zr(f,Y,92,U)|0;c[V>>2]=f;if(!f){t=pb(c[H>>2]<<4,0)|0;do if(t){gw(t|0,0,c[H>>2]<<4|0)|0;f=c[P>>2]|0;c[Y>>2]=0;Zr(f,Y,96,t)|0;f=c[Q>>2]|0;if((f|0)>0){g=0;j=0;do{g=g-(c[(c[(c[t+(j<<4)>>2]|0)+20>>2]|0)+64>>2]|0)|0;c[t+(j<<4)+4>>2]=g;j=j+1|0}while((j|0)!=(f|0))}g:do if((c[R>>2]|0)>0){s=0;h:while(1){i:do if((f|0)>0){g=0;q=0;do{p=t+(q<<4)+8|0;f=_r(T,c[t+(q<<4)>>2]|0,s,p)|0;if(f|0)break g;m=c[p>>2]|0;if(m){n=c[t+(q<<4)+4>>2]|0;o=t+(q<<4)+12|0;c[o>>2]=n;j=a[m>>0]|0;f=j&255;do if(!(f&128)){k=1;l=0;f=j&255}else{r=d[m+1>>0]|0;f=r<<7|f&127;if(!(r&128)){k=2;l=0;break}r=d[m+2>>0]|0;f=r<<14|f&16383;if(!(r&128)){k=3;l=0;break}r=d[m+3>>0]|0;f=r<<21|f&2097151;if(!(r&128)){k=4;l=0;break}j=28;k=m+4|0;f=f&268435455;l=0;do{r=k;k=k+1|0;r=d[r>>0]|0;aa=cw(r&127|0,0,j|0)|0;f=Sv(aa|0,L()|0,f|0,l|0)|0;l=L()|0;j=j+7|0}while(j>>>0<64&((r&128|0)!=0|0!=0));k=k-m|0}while(0);if(l>>>0<0|(l|0)==0&f>>>0<2)break h;c[o>>2]=n+-2+f;c[p>>2]=m+k;g=g+1|0}q=q+1|0;r=c[Q>>2]|0}while((q|0)<(r|0));if((g|0)<=0){f=0;break}if((r|0)<=0){f=g;g=c[2]|0;while(1){k=a[g>>0]|0;j=k&255;do if(!(j&128)){l=1;m=0;j=k&255}else{aa=d[g+1>>0]|0;j=aa<<7|j&127;if(!(aa&128)){l=2;m=0;break}aa=d[g+2>>0]|0;j=aa<<14|j&16383;if(!(aa&128)){l=3;m=0;break}aa=d[g+3>>0]|0;j=aa<<21|j&2097151;if(!(aa&128)){l=4;m=0;break}k=28;l=g+4|0;j=j&268435455;m=0;do{aa=l;l=l+1|0;aa=d[aa>>0]|0;r=cw(aa&127|0,0,k|0)|0;j=Sv(r|0,L()|0,j|0,m|0)|0;m=L()|0;k=k+7|0}while(k>>>0<64&((aa&128|0)!=0|0!=0));l=l-g|0}while(0);if(m>>>0<0|(m|0)==0&j>>>0<2){c[2]=0;g=0;f=f+-1|0}else{g=g+l|0;c[3]=j+-2+(c[3]|0);c[2]=g}if((f|0)<=0){f=0;break i}}}f=0;do{l=0;k=0;m=0;do{j=t+(m<<4)|0;if(!(c[t+(m<<4)+8>>2]|0))l=0;else{if(!((k|0)!=0?(c[t+(m<<4)+12>>2]|0)>=(c[k+12>>2]|0):0))k=j;if((l|0)!=0?(c[t+(m<<4)+12>>2]|0)!=(c[j+-16+12>>2]|0):0)j=1;else j=l+1|0;l=j;f=(j|0)>(f|0)?j:f}m=m+1|0}while((m|0)!=(r|0));p=k+8|0;o=c[p>>2]|0;l=a[o>>0]|0;j=l&255;do if(!(j&128)){m=1;n=0;j=l&255}else{aa=d[o+1>>0]|0;j=aa<<7|j&127;if(!(aa&128)){m=2;n=0;break}aa=d[o+2>>0]|0;j=aa<<14|j&16383;if(!(aa&128)){m=3;n=0;break}aa=d[o+3>>0]|0;j=aa<<21|j&2097151;if(!(aa&128)){m=4;n=0;break}l=28;m=o+4|0;j=j&268435455;n=0;do{aa=m;m=m+1|0;aa=d[aa>>0]|0;q=cw(aa&127|0,0,l|0)|0;j=Sv(q|0,L()|0,j|0,n|0)|0;n=L()|0;l=l+7|0}while(l>>>0<64&((aa&128|0)!=0|0!=0));m=m-o|0}while(0);if(n>>>0<0|(n|0)==0&j>>>0<2){c[p>>2]=0;g=g+-1|0}else{aa=k+12|0;c[aa>>2]=j+-2+(c[aa>>2]|0);c[p>>2]=o+m}}while((g|0)>0)}else f=0;while(0);c[(c[F>>2]|0)+(s<<2)>>2]=f;f=s+1|0;if((f|0)>=(c[R>>2]|0)){f=0;break g}s=f;f=c[Q>>2]|0}c[p>>2]=0;f=267}else f=0;while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{aa=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}else f=7;while(0);c[V>>2]=f}break}case 98:{f=G(((c[R>>2]|0)+31|0)/32|0,c[Q>>2]|0)|0;u=258;break}case 121:{f=G(c[Q>>2]|0,c[R>>2]|0)|0;u=258;break}default:{m=c[P>>2]|0;f=K;c[f>>2]=0;c[f+4>>2]=0;c[U>>2]=T;c[Y>>2]=0;f=Zr(m,Y,92,U)|0;c[V>>2]=f;if(!f){if(!M){j:do if(c[C>>2]|0){f=c[Z>>2]|0;do if(!f){f=lr(I,Z)|0;if(f|0)break;f=c[Z>>2]|0;if(f|0){u=265;break}k=mc(29576)|0;u=274}else u=265;while(0);if((u|0)==265){u=0;g=c[f+120>>2]|0;do if(!g)u=268;else{if(!(b[f+144>>1]|0)){u=268;break}j=f}while(0);if((u|0)==268){g=c[f>>2]|0;c[g+64>>2]=25;Ne(g,25);g=29576;j=f}k=mc(g)|0;g=c[j>>2]|0;j=f+40|0;f=c[j>>2]|0;if((f|0)==3082|(a[g+81>>0]|0)!=0){og(g);f=7}else f=c[g+68>>2]&f;c[j>>2]=f;u=274}do if((u|0)==274){u=0;f=a[k>>0]|0;g=f&255;do if(!(g&128)){f=f&255;g=0}else{aa=d[k+1>>0]|0;f=aa<<7|g&127;if(!(aa&128)){g=0;break}aa=d[k+2>>0]|0;f=aa<<14|f&16383;if(!(aa&128)){g=0;break}aa=d[k+3>>0]|0;f=aa<<21|f&2097151;if(!(aa&128)){g=0;break}l=28;j=k+4|0;f=f&268435455;g=0;while(1){aa=d[j>>0]|0;t=cw(aa&127|0,0,l|0)|0;f=Sv(t|0,L()|0,f|0,g|0)|0;g=L()|0;l=l+7|0;if(!(l>>>0<64&((aa&128|0)!=0|0!=0)))break;else j=j+1|0}}while(0);if((f|0)==0&(g|0)==0){f=267;break}aa=E;c[aa>>2]=f;c[aa+4>>2]=0;c[V>>2]=0;break j}while(0);c[V>>2]=f;break e}while(0);c[Y>>2]=0;f=Zr(m,Y,97,W)|0;c[V>>2]=f;rr(T,V)|0;f=c[V>>2]|0;if(f|0)break e}c[Y>>2]=0;Zr(m,Y,98,W)|0;f=0}}}while(0);if((u|0)==258){u=0;gw(g|0,0,f<<2|0)|0;f=ds(c[P>>2]|0,W)|0;c[V>>2]=f}switch(a[v>>0]|0){case 99:case 112:case 110:{g=1;break}case 115:case 108:case 97:{g=c[R>>2]|0;break}case 121:{g=G(c[Q>>2]|0,c[R>>2]|0)|0;break}case 98:{g=G(((c[R>>2]|0)+31|0)/32|0,c[Q>>2]|0)|0;break}default:g=G((c[R>>2]|0)*3|0,c[Q>>2]|0)|0}g=(c[F>>2]|0)+(g<<2)|0;c[F>>2]=g;if(f|0)break;else w=w+1|0}g=c[Z>>2]|0;if(g|0){j=c[g>>2]|0;aa=g+136|0;Z=c[aa+4>>2]|0;if((Z|0)>0|(Z|0)==0&(c[aa>>2]|0)>>>0>0)hc(j,g);aa=kc(g)|0;c[g+20>>2]=770837923;c[g+36>>2]=-1;c[g+40>>2]=0;a[g+146>>0]=2;c[g+44>>2]=0;c[g+32>>2]=1;a[g+147>>0]=-1;c[g+48>>2]=0;Z=g+64|0;c[Z>>2]=0;c[Z+4>>2]=0;if((aa|0)==3082|(a[j+81>>0]|0)!=0)og(j)}if(!M){Z=c[S>>2]|0;c[Z+8>>2]=1;aa=c[Z+4>>2]|0;ew(Z+16+(aa+2<<2)|0,Z+20|0,aa<<2|0)|0}if(!f){if((yc(c[e>>2]|0,N,c[(c[S>>2]|0)+4>>2]<<2,0,i)|0)==18){c[e+20>>2]=18;yc(c[e>>2]|0,31223,-1,1,0)|0}}else u=303}while(0);if((u|0)==303){c[e+20>>2]=f;g=c[e>>2]|0;if(b[g+8>>1]&1){switch(f|0){case 516:{f=50738;break}case 100:{f=50760;break}case 101:{f=50782;break}default:{f=f&255;if(f>>>0<29?(520028155>>>f&1|0)!=0:0)f=c[22960+(f<<2)>>2]|0;else f=50724}}yc(g,f,-1,1,0)|0}if(i|0)ab[i&127](h)}f=_+248|0;g=c[f>>2]|0;do if(g|0){h=c[g+20>>2]|0;gc(c[g+16>>2]|0)|0;if(h|0){if(c[h+480>>2]|0){Xd(h,g);break}aa=g;if((c[h+304>>2]|0)>>>0<=aa>>>0?(c[h+308>>2]|0)>>>0>aa>>>0:0){aa=h+300|0;c[g>>2]=c[aa>>2];c[aa>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{aa=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[f>>2]=0;Ra=$;return}c[i>>2]=51038;f=Bb(55087,i)|0;c[e+20>>2]=1;yc(c[e>>2]|0,f,-1,1,-1)|0;if(!f){Ra=$;return}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);Ra=$;return}else{aa=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);Ra=$;return}}function Xr(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=Ra;Ra=Ra+16|0;i=k;j=c[f+16>>2]|0;c[j+(e*24|0)>>2]=c[(c[b+20>>2]|0)+64>>2];h=_r(c[f>>2]|0,b,c[f+4>>2]|0,i)|0;g=c[i>>2]|0;if(!g){j=h;Ra=k;return j|0}c[j+(e*24|0)+4>>2]=g;f=a[g>>0]|0;b=f&255;if(b&128){l=d[g+1>>0]|0;b=l<<7|f&127;if(l&128){l=d[g+2>>0]|0;b=l<<14|b&16383;if(l&128){l=d[g+3>>0]|0;b=l<<21|b&2097151;if(!(l&128))f=4;else{b=(a[g+4>>0]&7)<<28|b&268435455;f=5}}else f=3}else f=2}else f=1;g=g+f|0;c[i>>2]=g;f=b+-2|0;if((b|0)<2){l=267;Ra=k;return l|0}c[j+(e*24|0)+12>>2]=g;c[j+(e*24|0)+20>>2]=g;c[j+(e*24|0)+8>>2]=f;c[j+(e*24|0)+16>>2]=f;l=h;Ra=k;return l|0}function Yr(a,b,d){a=a|0;b=b|0;d=d|0;b=c[a+20>>2]|0;a=d+4|0;c[a>>2]=(c[a>>2]|0)+1;d=d+8|0;c[d>>2]=(c[d>>2]|0)+(c[b+64>>2]|0);return 0}function Zr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[a>>2]|0;a:do if((f|0)!=5){g=a;while(1){a=Zr(c[g+12>>2]|0,b,d,e)|0;if(!((f|0)!=2&(a|0)==0))break;a=c[g+16>>2]|0;f=c[a>>2]|0;if((f|0)==5)break a;else g=a}return a|0}while(0);e=Ya[d&127](a,c[b>>2]|0,e)|0;c[b>>2]=(c[b>>2]|0)+1;return e|0}function _r(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,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;G=Ra;Ra=Ra+32|0;F=G+16|0;C=G;o=G+12|0;D=G+20|0;E=G+8|0;A=c[e+20>>2]|0;i=c[b>>2]|0;c[g>>2]=0;B=c[A+68>>2]|0;if(!((B|0)==(f|0)?1:(B|0)>=(c[i+24>>2]|0))){g=0;Ra=G;return g|0}n=e+24|0;m=c[n>>2]|0;n=c[n+4>>2]|0;h=C;c[h>>2]=m;c[h+4>>2]=n;h=c[A+28>>2]|0;c[F>>2]=h;B=b+32|0;z=B;if(!(((m|0)==(c[z>>2]|0)?(n|0)==(c[z+4>>2]|0):0)?(a[e+32>>0]|0)==0:0))x=4;a:do if((x|0)==4){c[o>>2]=0;y=a[i+235>>0]|0;z=y&255;h=c[e+8>>2]|0;b:do if(h){i=0;l=0;do{x=c[h>>2]|0;i=(x|0)==4?1:i;e=(x|0)==1?h:e;l=(a[h+32>>0]|0)==0?l:1;h=c[h+8>>2]|0}while((h|0)!=0);if(i){c:do if(c[A+40>>2]|0){k=e+32|0;i=a[k>>0]|0;$r(b,e,o);j=e+24|0;h=c[o>>2]|0;if(!h)if(!(i<<24>>24))do{if(a[k>>0]|0){h=0;break c}qr(b,e,o);x=j;h=c[o>>2]|0}while(((c[x>>2]|0)!=(m|0)?1:(c[x+4>>2]|0)!=(n|0))&(h|0)==0);else do{if(a[k>>0]|0){h=0;break c}qr(b,e,o);h=c[o>>2]|0}while(!(h|0))}else h=0;while(0);i=(h|0)==0;d:do if(!(l<<24>>24)){if(!i)break b;if(!e)x=81;else x=24}else{if(!i)break b;i=e+32|0;while(1){if(a[i>>0]|0){x=24;break d}qr(b,e,o);h=c[o>>2]|0;if(h|0)break b}}while(0);if((x|0)==24){u=b+52|0;w=y<<24>>24==0;v=w?1:-1;w=w?0:-1;h=1;do{a[D>>0]=0;if((c[e>>2]|0)==1)i=c[e+16>>2]|0;else i=e;r=c[i+20>>2]|0;s=r+48|0;j=c[s>>2]|0;c[F>>2]=j;t=r+56|0;m=t;i=c[m>>2]|0;m=c[m+4>>2]|0;b=C;c[b>>2]=i;c[b+4>>2]=m;b=r+4|0;q=c[b>>2]|0;k=(q|0)!=0;l=j;e:do if((a[u>>0]|0)==y<<24>>24){if(k)k=((c[r>>2]|0)+q|0)>>>0<=l>>>0;else k=1;n=k&1;a[D>>0]=n;p=n;b=l;while(1){f:do if(!b){if(p<<24>>24){h=m;x=76;break e}n=c[r>>2]|0;l=n;i=a[n>>0]|0;j=i&255;do if(!(j&128)){i=i&255;j=C;c[j>>2]=i;c[j+4>>2]=0;j=1;m=0}else{p=d[n+1>>0]|0;i=p<<7|j&127;if(!(p&128)){j=C;c[j>>2]=i;c[j+4>>2]=0;j=2;m=0;break}p=d[n+2>>0]|0;i=p<<14|i&16383;if(!(p&128)){j=C;c[j>>2]=i;c[j+4>>2]=0;j=3;m=0;break}p=d[n+3>>0]|0;i=p<<21|i&2097151;if(!(p&128)){j=C;c[j>>2]=i;c[j+4>>2]=0;j=4;m=0;break}j=28;k=n+4|0;i=i&268435455;m=0;do{p=k;k=k+1|0;p=d[p>>0]|0;o=cw(p&127|0,0,j|0)|0;i=Sv(o|0,L()|0,i|0,m|0)|0;m=L()|0;j=j+7|0}while(j>>>0<64&((p&128|0)!=0|0!=0));j=C;c[j>>2]=i;c[j+4>>2]=m;j=k-l|0}while(0);k=0;j=n+j|0;n=0}else{k=B;l=c[k>>2]|0;k=c[k+4>>2]|0;o=Tv(i|0,m|0,l|0,k|0)|0;Yv(o|0,L()|0,v|0,w|0)|0;if(!(n<<24>>24==0&(L()|0)<0)){x=77;break e}n=c[r>>2]|0;l=b;j=0;while(1){k=a[l>>0]|0;l=l+1|0;if(!(j<<24>>24|k))break;else j=k&128}j=l;k=n+q|0;do if(l>>>0>>0){while(1){n=a[l>>0]|0;if(n<<24>>24)break;j=l+1|0;if(j>>>0>>0)l=j;else{x=52;break}}if((x|0)==52){x=0;break}k=n&255;do if(!(k&128)){b=1;k=n&255;j=0}else{o=d[l+1>>0]|0;k=o<<7|k&127;if(!(o&128)){b=2;j=0;break}o=d[l+2>>0]|0;k=o<<14|k&16383;if(!(o&128)){b=3;j=0;break}o=d[l+3>>0]|0;k=o<<21|k&2097151;if(!(o&128)){b=4;j=0;break}n=28;b=l+4|0;k=k&268435455;o=0;do{H=b;b=b+1|0;H=d[H>>0]|0;I=cw(H&127|0,0,n|0)|0;k=Sv(I|0,L()|0,k|0,o|0)|0;o=L()|0;n=n+7|0}while(n>>>0<64&((H&128|0)!=0|0!=0));b=b-j|0;j=o}while(0);k=Yv(k|0,j|0,v|0,w|0)|0;i=Sv(i|0,m|0,k|0,L()|0)|0;m=L()|0;k=C;c[k>>2]=i;c[k+4>>2]=m;k=p;j=l+b|0;n=0;break f}while(0);a[D>>0]=1;k=1;n=1}while(0);c[F>>2]=j;p=k;b=j}}else{if(k)if(!j)i=0;else i=(c[r>>2]|0)>>>0>=l>>>0;else i=1;a[D>>0]=i&1;i=l;while(1){if(!i){if(a[D>>0]|0)break}else{m=C;i=c[m>>2]|0;m=c[m+4>>2]|0;k=B;l=c[k>>2]|0;k=c[k+4>>2]|0;I=Tv(i|0,m|0,l|0,k|0)|0;I=Yv(I|0,L()|0,v|0,w|0)|0;H=L()|0;n=a[D>>0]|0;if(!(n<<24>>24==0&((H|0)>0|(H|0)==0&I>>>0>0))){x=77;break e}}kq(z,c[r>>2]|0,c[b>>2]|0,F,C,E,D);j=c[F>>2]|0;i=j}h=C;i=c[h>>2]|0;h=c[h+4>>2]|0;x=76}while(0);if((x|0)==76){c[s>>2]=j;I=t;c[I>>2]=i;c[I+4>>2]=h;x=78}else if((x|0)==77){x=0;c[s>>2]=j;I=t;c[I>>2]=i;c[I+4>>2]=m;if(!(n<<24>>24==0&((i|0)==(l|0)&(m|0)==(k|0))))x=78}if((x|0)==78){x=0;h=0}e=c[e+12>>2]|0}while((e|0)!=0);if(!h)h=0;else x=81}if((x|0)==81)h=c[A+48>>2]|0;c[F>>2]=h;break a}else h=0}else h=0;while(0);I=h;Ra=G;return I|0}while(0);if(!h){I=0;Ra=G;return I|0}if((a[h>>0]|0)==1){j=h+1|0;c[F>>2]=j;i=a[j>>0]|0;e=i&255;if(e&128){I=d[h+2>>0]|0;i=I<<7|i&127;if(I&128){I=d[h+3>>0]|0;i=I<<14|i&16383;if(I&128){I=d[h+4>>0]|0;i=I<<21|i&2097151;if(!(I&128)){h=i;i=4}else{h=(a[h+5>>0]&7)<<28|i&268435455;i=5}}else{h=i;i=3}}else{h=i;i=2}}else{h=e;i=1}I=j+i|0;c[F>>2]=I;i=h;h=I}else i=0;e=a[h>>0]|0;g:do if((i|0)<(f|0)){while(1){i=e<<24>>24;if(i&254)do{h=h+1|0;I=i;i=a[h>>0]|0}while((i&254|I&128|0)!=0);c[F>>2]=h;if(!(a[h>>0]|0)){h=0;break}j=h+1|0;c[F>>2]=j;e=a[j>>0]|0;i=e&255;if(i&128){I=d[h+2>>0]|0;i=I<<7|e&127;if(I&128){I=d[h+3>>0]|0;i=I<<14|i&16383;if(I&128){I=d[h+4>>0]|0;i=I<<21|i&2097151;if(!(I&128))h=4;else{i=(a[h+5>>0]&7)<<28|i&268435455;h=5}}else h=3}else h=2}else h=1;h=j+h|0;c[F>>2]=h;e=a[h>>0]|0;if((i|0)>=(f|0))break g}Ra=G;return h|0}while(0);if(!(e<<24>>24)){c[F>>2]=0;h=0}c[g>>2]=(i|0)==(f|0)?h:0;I=0;Ra=G;return I|0}function $r(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;p=Ra;Ra=Ra+16|0;m=p+4|0;n=p;if(!d){Ra=p;return}if(c[e>>2]|0){Ra=p;return}o=c[d+20>>2]|0;if(o|0){g=o+24|0;f=o+28|0;do if(c[g>>2]|0?(h=c[f>>2]|0,h|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{l=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[f>>2]=0;c[o+32>>2]=0;c[g>>2]=0;l=o+40|0;if(c[l>>2]|0){k=o+64|0;j=c[k>>2]|0;if((j|0)>0){h=0;do{f=c[o+72+(h*24|0)+20>>2]|0;if(f|0?(c[f+8>>2]=0,c[f+28>>2]=1,i=c[f+4>>2]|0,(i|0)>0):0){g=c[f>>2]|0;f=0;do{q=g+(f<<2)|0;c[(c[q>>2]|0)+80>>2]=0;q=c[q>>2]|0;c[q+84>>2]=0;q=q+88|0;c[q>>2]=0;c[q+4>>2]=0;f=f+1|0}while((f|0)!=(i|0))}h=h+1|0}while((h|0)<(j|0))}h=c[b>>2]|0;i=o+68|0;a:do if((j|0)>0){g=0;while(1){if(c[o+72+(g*24|0)+20>>2]|0){c[m>>2]=0;c[n>>2]=0;f=jr(h,o+72+(g*24|0)|0,c[i>>2]|0,m,n)|0;if(f|0)break;f=kr(h,o,g,c[n>>2]|0,c[m>>2]|0)|0;if(f|0)break a}g=g+1|0;if((g|0)>=(c[k>>2]|0)){f=0;break a}}}else f=0;while(0);c[l>>2]=0;c[e>>2]=f}c[o+8>>2]=0;q=o+16|0;c[q>>2]=0;c[q+4>>2]=0;c[o+48>>2]=0}q=d+24|0;c[q>>2]=0;c[q+4>>2]=0;a[d+32>>0]=0;a[d+33>>0]=0;$r(b,c[d+12>>2]|0,e);$r(b,c[d+16>>2]|0,e);Ra=p;return}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,l=0,m=0,n=0;n=Ra;Ra=Ra+16|0;h=n;m=_r(c[f>>2]|0,b,c[f+4>>2]|0,h)|0;l=c[(c[b+20>>2]|0)+64>>2]|0;g=c[h>>2]|0;if(!g){i=0;j=0}else{b=a[g>>0]|0;e=b&255;if(e&128){k=d[g+1>>0]|0;e=k<<7|b&127;if(k&128){k=d[g+2>>0]|0;e=k<<14|e&16383;if(k&128){k=d[g+3>>0]|0;e=k<<21|e&2097151;if(!(k&128))b=4;else{e=(a[g+4>>0]&7)<<28|e&268435455;b=5}}else b=3}else b=2}else b=1;j=g+b|0;c[h>>2]=j;i=e+-2|0}if((l|0)<=0){Ra=n;return m|0}k=c[f+24>>2]|0;g=f+8|0;h=l+-1|0;b=c[g>>2]|0;e=0;f=b;while(1){c[k+(f*12|0)+8>>2]=h-e;c[k+(f*12|0)>>2]=j;c[k+(f*12|0)+4>>2]=i;e=e+1|0;if((e|0)==(l|0))break;else f=f+1|0}c[g>>2]=b+l;Ra=n;return m|0}function bs(a,b,d){a=a|0;b=b|0;d=d|0;c[d>>2]=(c[d>>2]|0)+1;c[a+36>>2]=b;return 0}function cs(b){b=b|0;var d=0;d=b+(0-(c[b+-4>>2]|0))|0;if((d+16+4|0)==(b|0))a[d+1>>0]=0;else a[d+2>>0]=0;if(a[d>>0]|0)return;if(a[d+1>>0]|0)return;if(a[d+2>>0]|0)return;if(!(c[7324]|0)){ab[c[29344>>2]&127](d);return}else{b=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);return}}function ds(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(a[b+32>>0]|0){n=0;return n|0}while(1){m=b+24|0;h=c[e>>2]|0;n=h+32|0;if(!((c[m>>2]|0)==(c[n>>2]|0)?(c[m+4>>2]|0)==(c[n+4>>2]|0):0)){g=0;f=36;break}f=c[b+12>>2]|0;if(!f){f=7;break}f=ds(f,e)|0;if(f|0){g=f;f=36;break}f=c[b+16>>2]|0;if(!(a[f+32>>0]|0))b=f;else{g=0;f=36;break}}if((f|0)==7){m=c[b+20>>2]|0;f=c[m+28>>2]|0;i=(a[e+24>>0]|0)==121;n=e+4|0;l=c[n>>2]|0;l=G(i?l:(l+31|0)/32|0,c[b+36>>2]|0)|0;m=m+68|0;k=(c[h>>2]|0)+24|0;j=e+28|0;if(i){i=0;while(1){b=a[f>>0]|0;g=b<<24>>24;if(!(g&254)){h=0;e=f}else{b=0;while(1){f=f+1|0;e=g&128;h=(e>>>7^1)+b|0;b=a[f>>0]|0;g=b<<24>>24;if(!(g&254|e)){e=f;break}else b=h}}g=c[m>>2]|0;if((g|0)==(i|0)?1:(g|0)>=(c[k>>2]|0)){c[(c[j>>2]|0)+(i+l<<2)>>2]=h;b=a[e>>0]|0}if(b<<24>>24!=1){g=0;f=36;break}g=e+1|0;f=a[g>>0]|0;b=f&255;if(b&128){i=d[e+2>>0]|0;b=i<<7|f&127;if(i&128){i=d[e+3>>0]|0;b=i<<14|b&16383;if(i&128){i=d[e+4>>0]|0;b=i<<21|b&2097151;if(!(i&128))f=4;else{b=(a[e+5>>0]&7)<<28|b&268435455;f=5}}else f=3}else f=2}else f=1;if((b|0)>=(c[n>>2]|0)){g=267;f=36;break}i=b;f=g+f|0}if((f|0)==36)return g|0}else{i=0;while(1){b=a[f>>0]|0;g=b<<24>>24;if(!(g&254)){h=0;e=f}else{b=0;while(1){f=f+1|0;e=g&128;h=(e>>>7^1)+b|0;b=a[f>>0]|0;g=b<<24>>24;if(!(g&254|e)){e=f;break}else b=h}}g=c[m>>2]|0;if(!((h|0)==0|((g|0)!=(i|0)?(g|0)<(c[k>>2]|0):0))){b=(c[j>>2]|0)+(((i+1|0)/32|0)+l<<2)|0;c[b>>2]=c[b>>2]|1<<(i&31);b=a[e>>0]|0}if(b<<24>>24!=1){g=0;f=36;break}g=e+1|0;f=a[g>>0]|0;b=f&255;if(b&128){i=d[e+2>>0]|0;b=i<<7|f&127;if(i&128){i=d[e+3>>0]|0;b=i<<14|b&16383;if(i&128){i=d[e+4>>0]|0;b=i<<21|b&2097151;if(!(i&128))f=4;else{b=(a[e+5>>0]&7)<<28|b&268435455;f=5}}else f=3}else f=2}else f=1;if((b|0)>=(c[n>>2]|0)){g=267;f=36;break}i=b;f=g+f|0}if((f|0)==36)return g|0}}else if((f|0)==36)return g|0;return 0}function es(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;w=Ra;Ra=Ra+16|0;s=w;u=c[e>>2]|0;v=(c[e+28>>2]|0)+((G(d*3|0,c[e+4>>2]|0)|0)<<2)|0;f=c[u>>2]|0;if(a[b+34>>0]|0?(c[c[b+8>>2]>>2]|0)!=1:0){b=f+24|0;if((c[b>>2]|0)<=0){v=0;Ra=w;return v|0}e=c[u+64>>2]|0;d=0;do{u=d*3|0;c[v+(u+1<<2)>>2]=e;c[v+(u+2<<2)>>2]=e;d=d+1|0}while((d|0)<(c[b>>2]|0));d=0;Ra=w;return d|0}c[s>>2]=0;t=b+40|0;if(!(c[t>>2]|0)){o=u+32|0;q=o;p=c[q>>2]|0;q=c[q+4>>2]|0;e=c[b+8>>2]|0;a:do if(!e)e=b;else{d=b;while(1){if((c[e>>2]|0)!=1){e=d;break a}d=c[e+8>>2]|0;if(!d)break;else{n=e;e=d;d=n}}}while(0);l=e+24|0;n=l;m=c[n>>2]|0;n=c[n+4>>2]|0;j=e+32|0;k=a[j>>0]|0;b=f+24|0;d=e;do{if((c[d>>2]|0)==5)g=d;else g=c[d+16>>2]|0;f=pb((c[b>>2]|0)*12|0,0)|0;c[g+40>>2]=f;if(!f){h=16;break}gw(f|0,0,(c[b>>2]|0)*12|0)|0;d=c[d+12>>2]|0}while((d|0)!=0);if((h|0)==16){v=7;Ra=w;return v|0}$r(u,e,s);i=u+6|0;d=c[s>>2]|0;b:do if((a[i>>0]|0)==0&(d|0)==0){f=u+7|0;g=u+12|0;h=u+88|0;while(1){if((a[f>>0]|0)==0?(r=c[g>>2]|0,r|0):0){d=c[r>>2]|0;x=r+136|0;y=c[x+4>>2]|0;if((y|0)>0|(y|0)==0&(c[x>>2]|0)>>>0>0)hc(d,r);y=kc(r)|0;c[r+20>>2]=770837923;c[r+36>>2]=-1;c[r+40>>2]=0;a[r+146>>0]=2;c[r+44>>2]=0;c[r+32>>2]=1;a[r+147>>0]=-1;c[r+48>>2]=0;x=r+64|0;c[x>>2]=0;c[x+4>>2]=0;if((y|0)==3082|(a[d+81>>0]|0)!=0)og(d)}qr(u,e,s);y=a[j>>0]|0;a[i>>0]=y;a[f>>0]=1;c[h>>2]=1;z=l;d=c[z+4>>2]|0;x=o;c[x>>2]=c[z>>2];c[x+4>>2]=d;if(!((y<<24>>24==0?(c[e>>2]|0)==1:0)?(rr(u,s)|0)!=0:0)){d=c[s>>2]|0;if(d|0)break b;if(a[i>>0]|0){d=0;break b}hs(e,c[b>>2]|0);d=c[s>>2]|0;if(!((d|0)==0&(a[i>>0]|0)==0))break b}}}while(0);a[i>>0]=0;z=o;c[z>>2]=p;c[z+4>>2]=q;if(!(k<<24>>24)){$r(u,e,s);do{qr(u,e,s);z=l;d=c[s>>2]|0}while(((c[z>>2]|0)!=(m|0)?1:(c[z+4>>2]|0)!=(n|0))&(d|0)==0)}else a[j>>0]=k;if(d){z=d;Ra=w;return z|0}}else b=f+24|0;if((c[b>>2]|0)<=0){z=0;Ra=w;return z|0}e=c[t>>2]|0;d=0;do{z=d*3|0;y=z+1|0;c[v+(y<<2)>>2]=c[e+(y<<2)>>2];z=z+2|0;c[v+(z<<2)>>2]=c[e+(z<<2)>>2];d=d+1|0}while((d|0)<(c[b>>2]|0));d=0;Ra=w;return d|0}function fs(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;n=Ra;Ra=Ra+16|0;l=n;m=e+4|0;k=c[m>>2]|0;j=G(d*3|0,k)|0;if((k|0)<=0){m=0;Ra=n;return m|0}k=e+28|0;i=0;do{d=_r(c[e>>2]|0,b,i,l)|0;g=c[l>>2]|0;if(!g)f=0;else{h=a[g>>0]|0;if(!(h&254))f=0;else{f=0;do{g=g+1|0;o=h&128;f=(o>>>7^1)+f|0;h=a[g>>0]|0}while((h&254|o|0)!=0)}c[l>>2]=g}c[(c[k>>2]|0)+((i*3|0)+j<<2)>>2]=f;i=i+1|0}while((d|0)==0?(i|0)<(c[m>>2]|0):0);Ra=n;return d|0}function gs(a,b,d){a=a|0;b=b|0;d=d|0;c[d+(b<<4)>>2]=a;return 0}function hs(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(!b)return;do{f=c[b+20>>2]|0;a:do if(f|0?(m=c[f+28>>2]|0,m|0):0){l=b+40|0;i=m;f=0;while(1){h=a[i>>0]|0;if((h&255)<2)g=0;else{g=0;j=0;while(1){g=g+((j|0)==0&1)|0;k=i+1|0;i=h&-128;h=a[k>>0]|0;if(!((h&-2|i)<<24>>24)){i=k;break}else{j=i&255;i=k}}}j=c[l>>2]|0;k=f*3|0;h=j+(k+1<<2)|0;c[h>>2]=(c[h>>2]|0)+g;k=j+(k+2<<2)|0;c[k>>2]=(c[k>>2]|0)+((g|0)!=0&1);if(!(a[i>>0]|0))break a;h=i+1|0;g=a[h>>0]|0;f=g&255;if(f&128){k=d[i+2>>0]|0;f=k<<7|g&127;if(k&128){k=d[i+3>>0]|0;f=k<<14|f&16383;if(k&128){k=d[i+4>>0]|0;f=k<<21|f&2097151;if(!(k&128))g=4;else{f=(a[i+5>>0]&7)<<28|f&268435455;g=5}}else g=3}else g=2}else g=1;if((f|0)<(e|0))i=h+g|0;else break}}while(0);hs(c[b+12>>2]|0,e);b=c[b+16>>2]|0}while((b|0)!=0);return}function is(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,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=Ra;Ra=Ra+16|0;x=z;y=z+4|0;c[y>>2]=0;b=td(b,55547)|0;if(b|0){y=b;Ra=z;return y|0}s=e+-3|0;r=f+12|0;a:do if(s){k=(e|0)>3;if(k){f=0;b=0;do{b=b+1+(Eu(c[r+(f<<2)>>2]|0)|0)|0;f=f+1|0}while((f|0)!=(s|0))}else b=0;q=pb(b+(s<<2)|0,0)|0;b=(q|0)==0;b:do if(b|k^1){if(b){f=7;j=0;b=0;m=44;break a}}else{n=q+(s<<2)|0;o=0;while(1){b=r+(o<<2)|0;p=Eu(c[b>>2]|0)|0;c[q+(o<<2)>>2]=n;p=p+1|0;ew(n|0,c[b>>2]|0,p|0)|0;b=a[n>>0]|0;switch(b<<24>>24){case 34:case 39:case 91:case 96:{m=b<<24>>24==91?93:b;f=a[n+1>>0]|0;c:do if(!(f<<24>>24))b=0;else{k=1;b=0;do{l=k+1|0;if(f<<24>>24==m<<24>>24){if((a[n+l>>0]|0)!=m<<24>>24)break c;a[n+b>>0]=m;k=k+2|0}else{a[n+b>>0]=f;k=l}b=b+1|0;f=a[n+k>>0]|0}while(f<<24>>24!=0)}while(0);a[n+b>>0]=0;break}default:{}}o=o+1|0;if((o|0)==(s|0))break b;else n=n+p|0}}while(0);if((e|0)<4){k=50983;l=q;b=q;m=21}else{k=c[q>>2]|0;l=q;b=q;m=21}}else{k=50983;l=0;b=0;m=21}while(0);d:do if((m|0)==21){f=(Eu(k)|0)+1|0;e:do if(((d|0?(t=d+16|0,c[t>>2]|0):0)?(u=Xa[(a[d>>0]<<24>>24==1?154:155)&255](k,f)|0,u=(c[d+12>>2]|0)+-1&u,v=c[t>>2]|0,v|0):0)?(j=c[v+(u<<3)>>2]|0,w=(a[d>>0]|0)==1?79:80,i=c[v+(u<<3)+4>>2]|0,(j|0)!=0&(i|0)!=0):0){while(1){j=j+-1|0;if(!(Za[w&127](c[i+12>>2]|0,c[i+16>>2]|0,k,f)|0))break;i=c[i>>2]|0;if(!((j|0)!=0&(i|0)!=0))break e}i=c[i+8>>2]|0;if(i|0){j=i;i=Ya[c[i+4>>2]&127]((e|0)>4?e+-4|0:0,l+4|0,y)|0;if(i|0){f=i;m=44;break d}if(mb()|0){f=7;m=44;break d}if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](20)|0;if(!i){f=7;m=44;break d}}else{i=Wa[c[29356>>2]&127](20)|0;if((c[14985]|0)>>>0<20)c[14985]=20;k=59064;f=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&f>>>0>0){e=c[14978]|0;x=Tv(f|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&x>>>0<=e>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){f=7;m=44;break d}f=Wa[c[29352>>2]&127](i)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0)c[14987]=f};c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;c[i+12>>2]=j;c[i+16>>2]=c[y>>2];c[g>>2]=i;i=0;break d}}while(0);c[x>>2]=k;Wp(h,53600,x);f=1;j=0;m=44}while(0);if((m|0)==44){i=c[y>>2]|0;if(!i)i=f;else{Wa[c[j+8>>2]&127](i)|0;i=f}}if(!b){y=i;Ra=z;return y|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);y=i;Ra=z;return y|0}else{y=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);y=i;Ra=z;return y|0}return 0}function js(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[d>>2]|0;a:do if((e|0)>0){f=c[d+4>>2]|0;b=0;while(1){if((a[f+(b*12|0)+5>>0]|0?(c[f+(b*12|0)>>2]|0)==0:0)?(a[f+(b*12|0)+4>>0]|0)==2:0)break;b=b+1|0;if((b|0)>=(e|0))break a}c[d+20>>2]=1;f=c[d+16>>2]|0;c[f+(b<<3)>>2]=1;a[f+(b<<3)+4>>0]=1;g[d+40>>3]=1.0;return 0}while(0);c[d+20>>2]=0;return 0}function ks(a){a=a|0;var b=0;Wa[c[(c[a+12>>2]|0)+8>>2]&127](c[a+16>>2]|0)|0;if(!a)return 0;if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{b=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0} -function Xf(e){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;u=Ra;Ra=Ra+16|0;o=u;t=c[e+20>>2]|0;s=t+16|0;f=a[s>>0]|0;if(f<<24>>24==2){r=c[t>>2]|0;f=c[t+40>>2]|0;if(f|0){e=f;Ra=u;return e|0}do if((c[t+216>>2]|0)==0?(l=t+5|0,(a[l>>0]|0)!=2):0){k=t+24|0;i=c[k>>2]|0;if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](512)|0;if(!f)q=16}else{f=Wa[c[29356>>2]&127](512)|0;if((c[14985]|0)>>>0<512)c[14985]=512;h=59064;g=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&g>>>0>0){p=c[14978]|0;j=Tv(g|0,h|0,f|0,((f|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&j>>>0<=p>>>0)&1}f=Wa[c[29340>>2]&127](f)|0;if(f){g=Wa[c[29352>>2]&127](f)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0)c[14987]=g}else q=16}if((q|0)==16){c[t+56>>2]=0;e=7;Ra=u;return e|0}gw(f+4|0,0,508)|0;c[f>>2]=i;p=t+56|0;c[p>>2]=f;j=t+64|0;f=c[j>>2]|0;a:do if(!(c[f>>2]|0)){if((a[l>>0]|0)==4){j=f;k=j+72|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));c[f+4>>2]=1020;c[f>>2]=29896;c[f+8>>2]=-1;c[f+56>>2]=0;c[f+64>>2]=0;c[f+60>>2]=0;q=33;break}do if(!(a[t+12>>0]|0)){c[o>>2]=0;if((c[k>>2]|0)!=0?(m=c[t+60>>2]|0,n=c[m>>2]|0,(n|0)!=0):0){f=Ya[c[n+40>>2]&127](m,20,o)|0;if((f|0)==12){h=2054;i=0;f=c[j>>2]|0;q=29;break}g=(f|0)==0;if(g&(c[o>>2]|0)!=0){f=1032;break a}if(g){g=c[t+172>>2]|0;f=c[j>>2]|0;j=f;k=j+72|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));h=2054;q=30}}else{h=2054;i=0;q=29}}else{i=c[7334]|0;c[o>>2]=0;h=4110;q=29}while(0);if((q|0)==29){g=c[t+172>>2]|0;j=f;k=j+72|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));if(!i)q=30;else{c[f+4>>2]=(i|0)>0?i:1020;c[f>>2]=29896;c[f+8>>2]=i;c[f+56>>2]=h;c[f+64>>2]=g;c[f+60>>2]=r;q=33;break}}if((q|0)==30)f=_a[c[r+24>>2]&127](r,g,f,h&556927,0)|0;if(!f)q=33}else q=33;while(0);if((q|0)==33){c[t+44>>2]=0;f=t+72|0;a[t+19>>0]=0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;f=of(t)|0;if(!f)break}yf(c[p>>2]|0);c[p>>2]=0;e=f;Ra=u;return e|0}while(0);a[s>>0]=3;m=3}else m=f;n=e+28|0;f=b[n>>1]|0;h=f&65535;if(h&17){g=h&65519;f=g&65535;b[n>>1]=f;if(h&1){f=(g^3)&65535;b[n>>1]=f;g=c[e+12>>2]|0;c[e+36>>2]=0;h=c[g>>2]|0;c[e+32>>2]=h;if(!h){c[g+4>>2]=e;if(a[g+32>>0]|0)a[g+33>>0]=1}else c[h+36>>2]=e;c[g>>2]=e;g=g+8|0;if((f&8)==0&(c[g>>2]|0)==0)c[g>>2]=e}}j=c[t+56>>2]|0;b:do if(j){l=c[e+24>>2]|0;h=l+-1|0;g=c[j>>2]|0;c:do if(h>>>0>>0){i=c[j+8>>2]|0;if(i){k=j;do{g=(h>>>0)/(i>>>0)|0;k=c[k+12+(g<<2)>>2]|0;if(!k)break c;h=h-(G(g,i)|0)|0;i=c[k+8>>2]|0}while((i|0)!=0);j=k;g=c[k>>2]|0}if(g>>>0<4001)if(!(1<<(h&7)&d[j+12+(h>>>3)>>0]))break;else break b;i=h+1|0;g=(h>>>0)%125|0;h=c[j+12+(g<<2)>>2]|0;if(h|0)do{if((h|0)==(i|0))break b;g=((g+1|0)>>>0)%125|0;h=c[j+12+(g<<2)>>2]|0}while((h|0)!=0)}while(0);if(l>>>0>(c[t+28>>2]|0)>>>0){if(m<<24>>24==4)break;f=f|8;b[n>>1]=f;break}f=Yf(e)|0;if(!f){f=b[n>>1]|0;break}else{e=f;Ra=u;return e|0}}while(0);b[n>>1]=f|4;if((c[t+96>>2]|0)>0)h=Ve(e)|0;else h=0;g=t+24|0;f=c[e+24>>2]|0;if((c[g>>2]|0)>>>0>=f>>>0){e=h;Ra=u;return e|0}c[g>>2]=f;e=h;Ra=u;return e|0}function Yf(e){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;t=Ra;Ra=Ra+16|0;p=t;s=c[e+20>>2]|0;r=s+72|0;h=r;n=c[h>>2]|0;h=c[h+4>>2]|0;o=c[e+4>>2]|0;f=c[s+48>>2]|0;q=s+152|0;g=c[q>>2]|0;if((g|0)>200)do{m=g;g=g+-200|0;f=f+(d[o+g>>0]|0)|0}while((m|0)>400);l=e+28|0;b[l>>1]=b[l>>1]|8;l=s+64|0;g=c[l>>2]|0;m=e+24|0;e=c[m>>2]|0;a[p>>0]=e>>>24;i=p+1|0;a[i>>0]=e>>>16;j=p+2|0;a[j>>0]=e>>>8;k=p+3|0;a[k>>0]=e;g=_a[c[(c[g>>2]|0)+12>>2]&127](g,p,4,n,h)|0;if(g|0){s=g;Ra=t;return s|0}u=c[l>>2]|0;g=c[q>>2]|0;e=Sv(n|0,h|0,4,0)|0;h=L()|0;g=_a[c[(c[u>>2]|0)+12>>2]&127](u,o,g,e,h)|0;if(g|0){u=g;Ra=t;return u|0}n=c[l>>2]|0;o=c[q>>2]|0;o=Sv(e|0,h|0,o|0,((o|0)<0)<<31>>31|0)|0;u=L()|0;a[p>>0]=f>>>24;a[i>>0]=f>>>16;a[j>>0]=f>>>8;a[k>>0]=f;f=_a[c[(c[n>>2]|0)+12>>2]&127](n,p,4,o,u)|0;if(f|0){u=f;Ra=t;return u|0}k=(c[q>>2]|0)+8|0;j=r;k=Sv(c[j>>2]|0,c[j+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0;j=L()|0;l=r;c[l>>2]=k;c[l+4>>2]=j;l=s+44|0;c[l>>2]=(c[l>>2]|0)+1;l=df(c[s+56>>2]|0,c[m>>2]|0)|0;j=c[m>>2]|0;k=s+96|0;g=c[k>>2]|0;if((g|0)>0){i=s+92|0;f=0;h=0;do{e=c[i>>2]|0;if((c[e+(h*48|0)+20>>2]|0)>>>0>=j>>>0){f=df(c[e+(h*48|0)+16>>2]|0,j)|0|f;g=c[k>>2]|0}h=h+1|0}while((h|0)<(g|0))}else f=0;u=f|l;Ra=t;return u|0}function Zf(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=c[d+4>>2]|0;f=c[d>>2]|0;a[j+19>>0]=0;k=d+8|0;do if(a[k>>0]|0){if((c[f+172>>2]|0)>1){f=j+76|0;if((c[f>>2]|0)==(d|0)?(c[f>>2]=0,e=j+22|0,b[e>>1]=b[e>>1]&-193,e=c[j+72>>2]|0,e|0):0)do{a[e+8>>0]=1;e=c[e+12>>2]|0}while((e|0)!=0);a[k>>0]=1;return}e=j+72|0;f=c[e>>2]|0;if(f|0)while(1){g=f+12|0;do if((c[f>>2]|0)==(d|0)){h=c[g>>2]|0;c[e>>2]=h;if((c[f+4>>2]|0)!=1)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);i=15;break}else{i=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);i=15;break}else{g=e;f=h}}else{e=g;i=15}while(0);if((i|0)==15){i=0;g=e;f=c[e>>2]|0}if(!f)break;else e=g}e=j+76|0;if((c[e>>2]|0)!=(d|0)){e=j+40|0;f=c[e>>2]|0;if((f|0)==2){d=j+22|0;b[d>>1]=b[d>>1]&-129;c[e>>2]=1;break}}else{c[e>>2]=0;f=j+22|0;b[f>>1]=b[f>>1]&-193;f=j+40|0;e=f;f=c[f>>2]|0}d=f+-1|0;c[e>>2]=d;if(!d)a[j+20>>0]=0}while(0);a[k>>0]=0;if(a[j+20>>0]|0)return;e=j+12|0;f=c[e>>2]|0;if(!f)return;c[e>>2]=0;k=c[f+72>>2]|0;e=c[k+20>>2]|0;Df(k);if(c[(c[e+212>>2]|0)+12>>2]|0)return;switch(a[e+16>>0]|0){case 0:case 6:break;case 1:{if(!(a[e+4>>0]|0))uf(e,0,0)|0;break}default:tf(e)|0}vf(e);return}function _f(e,f,g,h){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,s=0,t=0;r=Ra;Ra=Ra+32|0;k=r;m=r+20|0;j=r+24|0;o=r+16|0;p=r+12|0;if(g>>>0<2)i=0;else{i=g+-2|0;i=i-((i>>>0)%(((((c[e+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;i=((i+1|0)==(1073741824/((c[e+32>>2]|0)>>>0)|0|0)?3:2)+i|0}a:do if((i|0)!=(g|0)?((1073741824/((c[e+32>>2]|0)>>>0)|0)+1|0)!=(g|0):0){n=c[(c[e+12>>2]|0)+56>>2]|0;b:do if((d[n+37>>0]|0)<<16|(d[n+36>>0]|0)<<24|(d[n+38>>0]|0)<<8|(d[n+39>>0]|0)){i=eg(e,g,j,o)|0;if(!i){n=a[j>>0]|0;c:do switch(n<<24>>24){case 1:{c[k>>2]=32306;c[k+4>>2]=66936;c[k+8>>2]=31517;Db(11,32001,k);i=11;break b}case 2:{if(!h){i=fg(e,p,m,g,1)|0;if(i|0)break b;i=c[p>>2]|0;do if(i|0){i=c[i+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{q=c[i+20>>2]|0;p=q+120|0;c[p>>2]=(c[p>>2]|0)+-1;q=q+136|0;c[i+16>>2]=c[q>>2];c[q>>2]=i;break}}while(0)}break}default:{i=c[e>>2]|0;i=Za[c[i+204>>2]&127](i,g,m,0)|0;do if(!i){i=c[m>>2]|0;l=c[i+8>>2]|0;j=l+4|0;if((c[j>>2]|0)!=(g|0)){c[l+56>>2]=c[i+4>>2];c[l+72>>2]=i;c[l+52>>2]=e;c[j>>2]=g;a[l+9>>0]=(g|0)==1?100:0}i=(h|0)==0;j=i?2:0;k=i?f:0;d:do if(i){i=fg(e,m,p,k,j)|0;if(!i){i=c[m>>2]|0;do if(i|0){i=c[i+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{m=c[i+20>>2]|0;f=m+120|0;c[f>>2]=(c[f>>2]|0)+-1;m=m+136|0;c[i+16>>2]=c[m>>2];c[m>>2]=i;break}}while(0);i=c[p>>2]|0}else q=30}else do{i=fg(e,m,p,k,j)|0;if(i|0){q=30;break d}i=c[m>>2]|0;do if(i|0){i=c[i+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{s=c[i+20>>2]|0;t=s+120|0;c[t>>2]=(c[t>>2]|0)+-1;s=s+136|0;c[i+16>>2]=c[s>>2];c[s>>2]=i;break}}while(0);i=c[p>>2]|0}while(i>>>0>f>>>0);while(0);if((q|0)==30){do if(l|0){j=c[l+72>>2]|0;if(!(b[j+28>>1]&32)){Df(j);break}else{t=c[j+20>>2]|0;s=t+120|0;c[s>>2]=(c[s>>2]|0)+-1;t=t+136|0;c[j+16>>2]=c[t>>2];c[t>>2]=j;break}}while(0);break}i=gg(e,l,n,c[o>>2]|0,i,h)|0;do if(l|0){j=c[l+72>>2]|0;if(!(b[j+28>>1]&32)){Df(j);break}else{t=c[j+20>>2]|0;s=t+120|0;c[s>>2]=(c[s>>2]|0)+-1;t=t+136|0;c[j+16>>2]=c[t>>2];c[t>>2]=j;break}}while(0);if(!i)break c}while(0);break b}}while(0);break a}}else i=101;while(0);t=i;Ra=r;return t|0}while(0);if(h|0){t=0;Ra=r;return t|0}k=1073741824/((c[e+32>>2]|0)>>>0)|0;f=k+1|0;l=e+36|0;i=g;while(1){j=i+-1|0;if((j|0)!=(f|0)){if(j>>>0<2)i=0;else{i=i+-3|0;i=i-((i>>>0)%(((((c[l>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;i=((i+1|0)==(k|0)?3:2)+i|0}if((i|0)!=(j|0))break}i=j}a[e+19>>0]=1;c[e+44>>2]=j;t=0;Ra=r;return t|0}function $f(d,e,f){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;k=(e|0)==0;a:while(1){b:do if((d|0)!=(f|0)){if(!k?(c[d+64>>2]|0)!=(e|0):0)break;switch(a[d>>0]|0){case 2:{a[d>>0]=0;break}case 0:{c[d+4>>2]=0;break}default:{j=d+68|0;g=a[j>>0]|0;if(g<<24>>24<=-1)break b;if(g<<24>>24){i=0;do{h=c[(c[d+120+(i<<2)>>2]|0)+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);g=a[j>>0]|0}else{m=c[h+20>>2]|0;n=m+120|0;c[n>>2]=(c[n>>2]|0)+-1;m=m+136|0;c[h+16>>2]=c[m>>2];c[m>>2]=h}i=i+1|0}while((i|0)<(g<<24>>24|0))}g=c[(c[d+116>>2]|0)+72>>2]|0;if(!(b[g+28>>1]&32))Df(g);else{n=c[g+20>>2]|0;m=n+120|0;c[m>>2]=(c[m>>2]|0)+-1;n=n+136|0;c[g+16>>2]=c[n>>2];c[n>>2]=g}a[j>>0]=-1;break b}}g=ag(d)|0;if(g|0)break a;j=d+68|0;g=a[j>>0]|0;if(g<<24>>24>-1){if(g<<24>>24){i=0;do{h=c[(c[d+120+(i<<2)>>2]|0)+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);g=a[j>>0]|0}else{n=c[h+20>>2]|0;m=n+120|0;c[m>>2]=(c[m>>2]|0)+-1;n=n+136|0;c[h+16>>2]=c[n>>2];c[n>>2]=h}i=i+1|0}while((i|0)<(g<<24>>24|0))}g=c[(c[d+116>>2]|0)+72>>2]|0;if(!(b[g+28>>1]&32))Df(g);else{n=c[g+20>>2]|0;m=n+120|0;c[m>>2]=(c[m>>2]|0)+-1;n=n+136|0;c[g+16>>2]=c[n>>2];c[n>>2]=g}a[j>>0]=-1}a[d>>0]=3;n=d+1|0;a[n>>0]=a[n>>0]&-15}while(0);d=c[d+24>>2]|0;if(!d){d=0;l=34;break}}if((l|0)==34)return d|0;n=d+1|0;a[n>>0]=a[n>>0]&-15;n=g;return n|0}function ag(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=(a[b+69>>0]|0)==0;bg(b);if(!g){f=b+32|0;g=c[f+4>>2]|0;b=b+56|0;c[b>>2]=c[f>>2];c[b+4>>2]=g;b=0;return b|0}f=c[b+44>>2]|0;g=b+56|0;d=g;c[d>>2]=f;c[d+4>>2]=0;d=Sv(f|0,0,17,0)|0;L()|0;f=Sv(f|0,0,16,0)|0;e=L()|0;if(e>>>0>0|(e|0)==0&f>>>0>2147483390){b=7;return b|0}if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](d)|0;if(!d){b=7;return b|0}}else{f=Wa[c[29356>>2]&127](d)|0;if((c[14985]|0)>>>0>>0)c[14985]=d;e=59064;d=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&d>>>0>0){h=c[14978]|0;e=Tv(d|0,e|0,f|0,((f|0)<0)<<31>>31|0)|0;d=L()|0;c[14768]=((d|0)<0|(d|0)==0&e>>>0<=h>>>0)&1}d=Wa[c[29340>>2]&127](f)|0;if(!d){h=7;return h|0}e=Wa[c[29352>>2]&127](d)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0>(c[14987]|0)>>>0)c[14987]=e}e=cg(b,0,c[g>>2]|0,d,0)|0;if(!e){e=d+(c[g>>2]|0)|0;f=e+17|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(f|0));c[b+16>>2]=d;h=0;return h|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);h=e;return h|0}else{h=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);h=e;return h|0}return 0}function bg(f){f=f|0;var g=0,h=0;if(b[f+50>>1]|0)return;g=f+1|0;a[g>>0]=a[g>>0]|2;g=c[f+116>>2]|0;h=(c[g+64>>2]|0)+(e[f+70>>1]<<1)|0;cb[c[g+80>>2]&255](g,(c[g+56>>2]|0)+((d[h>>0]<<8|d[h+1>>0])&e[g+26>>1])|0,f+32|0);return}function cg(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var 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;A=Ra;Ra=Ra+48|0;z=A+16|0;m=A;w=A+32|0;x=A+28|0;n=c[f+116>>2]|0;v=c[f+20>>2]|0;bg(f);r=c[f+40>>2]|0;p=v+36|0;q=f+48|0;l=e[q>>1]|0;if((r-(c[n+56>>2]|0)|0)>>>0>((c[p>>2]|0)-l|0)>>>0){c[m>>2]=32306;c[m+4>>2]=67944;c[m+8>>2]=31517;Db(11,32001,m);z=11;Ra=A;return z|0}if(l>>>0>g>>>0){o=(h+g|0)>>>0>l>>>0?l-g|0:h;g=r+g|0;l=c[n+72>>2]|0;a:do if(!j){ew(i|0,g|0,o|0)|0;k=0}else{m=c[l+20>>2]|0;if((b[l+28>>1]&4)!=0?(c[m+24>>2]|0)>>>0>=(c[l+24>>2]|0)>>>0:0){if(c[m+96>>2]|0){k=Ve(l)|0;y=13}}else y=9;do if((y|0)==9){k=c[m+40>>2]|0;if(k|0)break a;if((c[m+148>>2]|0)>>>0>(c[m+152>>2]|0)>>>0){k=Wf(l)|0;y=13;break}else{k=Xf(l)|0;y=13;break}}while(0);if((y|0)==13?k|0:0)break;ew(g|0,i|0,o|0)|0;k=0}while(0);s=0;h=h-o|0;i=i+o|0}else{s=g-l|0;k=0}do if((k|0)==0&(h|0)!=0){l=c[p>>2]|0;t=l+-4|0;k=e[q>>1]|0;o=r+k|0;o=(d[o+1>>0]|0)<<16|(d[o>>0]|0)<<24|(d[o+2>>0]|0)<<8|(d[o+3>>0]|0);c[w>>2]=o;n=f+1|0;do if(a[n>>0]&4){k=(s>>>0)/(t>>>0)|0;l=c[(c[f+12>>2]|0)+(k<<2)>>2]|0;if(!l)y=28;else{c[w>>2]=l;g=k;m=s-(G(k,t)|0)|0;y=29}}else{g=((l+-5-k+(c[f+44>>2]|0)|0)>>>0)/(t>>>0)|0;m=f+12|0;k=c[m>>2]|0;if(k){l=g<<2;r=(l|0)>(Wa[c[29352>>2]&127](k)|0);k=c[m>>2]|0;if(r)y=23}else y=23;if((y|0)==23){k=sb(k,g<<3,0)|0;if(!k){k=7;break}c[m>>2]=k;l=g<<2}gw(k|0,0,l|0)|0;a[n>>0]=a[n>>0]|4;y=28}while(0);if((y|0)==28)if(!o){k=0;y=55}else{g=0;m=s;l=o;y=29}b:do if((y|0)==29){r=f+12|0;p=(j|0)==0;q=p?2:0;o=g;while(1){k=c[r>>2]|0;c[k+(o<<2)>>2]=l;if(m>>>0>>0){n=(m+h|0)>>>0>t>>>0?t-m|0:h;k=c[v>>2]|0;k=Za[c[k+204>>2]&127](k,l,x,q)|0;do if(!k){g=c[x>>2]|0;l=c[g+4>>2]|0;c[w>>2]=(d[l+1>>0]|0)<<16|(d[l>>0]|0)<<24|(d[l+2>>0]|0)<<8|(d[l+3>>0]|0);l=l+(m+4)|0;c:do if(p){ew(i|0,l|0,n|0)|0;k=0}else{m=c[g+20>>2]|0;if((b[g+28>>1]&4)!=0?(c[m+24>>2]|0)>>>0>=(c[g+24>>2]|0)>>>0:0){if(c[m+96>>2]|0){u=Ve(g)|0;y=46}}else y=42;do if((y|0)==42){y=0;k=c[m+40>>2]|0;if(k|0)break c;if((c[m+148>>2]|0)>>>0>(c[m+152>>2]|0)>>>0){u=Wf(g)|0;y=46;break}else{u=Xf(g)|0;y=46;break}}while(0);if((y|0)==46?(y=0,u|0):0){k=u;break}ew(l|0,i|0,n|0)|0;k=0}while(0);l=c[x>>2]|0;if(l)if(!(b[l+28>>1]&32)){Df(l);m=0;break}else{m=c[l+20>>2]|0;j=m+120|0;c[j>>2]=(c[j>>2]|0)+-1;m=m+136|0;c[l+16>>2]=c[m>>2];c[m>>2]=l;m=0;break}else m=0}while(0);h=h-n|0;if(!h)break b;else g=i+n|0}else{k=c[k+(o+1<<2)>>2]|0;if(!k)k=dg(v,l,0,w)|0;else{c[w>>2]=k;k=0}g=i;m=m-t|0}if(k|0){y=55;break b}l=c[w>>2]|0;if(!l){k=0;y=55;break}else{i=g;o=o+1|0}}}while(0);if((y|0)==55)break;z=k;Ra=A;return z|0}while(0);if(!((k|0)==0&(h|0)!=0)){z=k;Ra=A;return z|0}c[z>>2]=32306;c[z+4>>2]=68089;c[z+8>>2]=31517;Db(11,32001,z);z=11;Ra=A;return z|0}function dg(e,f,g,h){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,s=0;s=Ra;Ra=Ra+16|0;o=s;l=s+4|0;do if(a[e+17>>0]|0){m=e+36|0;k=1073741824/((c[e+32>>2]|0)>>>0)|0;p=f;do{i=p;p=p+1|0;if(p>>>0<2)j=0;else{j=i+-1|0;j=j-((j>>>0)%(((((c[m>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;j=((j+1|0)==(k|0)?3:2)+j|0}}while((j|0)==(p|0)|(i|0)==(k|0));if(p>>>0<=(c[e+44>>2]|0)>>>0?(n=eg(e,p,l,o)|0,m=(n|0)==0,q=m&(a[l>>0]|0)==4&(c[o>>2]|0)==(f|0),q|m^1):0){k=0;j=q?101:n;i=q?p:0;break}else{r=9;break}}else r=9;while(0);do if((r|0)==9){i=c[e>>2]|0;i=Za[c[i+204>>2]&127](i,f,o,(g|0)==0?2:0)|0;if(i|0){k=0;j=i;i=0;break}i=c[o>>2]|0;k=c[i+8>>2]|0;j=k+4|0;if((c[j>>2]|0)==(f|0))i=c[k+56>>2]|0;else{r=c[i+4>>2]|0;c[k+56>>2]=r;c[k+72>>2]=i;c[k+52>>2]=e;c[j>>2]=f;a[k+9>>0]=(f|0)==1?100:0;i=r}j=0;i=d[i+1>>0]<<16|d[i>>0]<<24|d[i+2>>0]<<8|d[i+3>>0]}while(0);c[h>>2]=i;if(g|0){c[g>>2]=k;h=(j|0)==101;h=h?0:j;Ra=s;return h|0}if(!k){h=(j|0)==101;h=h?0:j;Ra=s;return h|0}i=c[k+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);h=(j|0)==101;h=h?0:j;Ra=s;return h|0}else{h=c[i+20>>2]|0;g=h+120|0;c[g>>2]=(c[g>>2]|0)+-1;h=h+136|0;c[i+16>>2]=c[h>>2];c[h>>2]=i;h=(j|0)==101;h=h?0:j;Ra=s;return h|0}return 0}function eg(e,f,g,h){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;o=Ra;Ra=Ra+32|0;n=o+16|0;m=o;i=o+28|0;if(f>>>0<2)l=0;else{l=f+-2|0;l=l-((l>>>0)%(((((c[e+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;l=((l+1|0)==(1073741824/((c[e+32>>2]|0)>>>0)|0|0)?3:2)+l|0}e=c[e>>2]|0;e=Za[c[e+204>>2]&127](e,l,i,0)|0;if(e|0){n=e;Ra=o;return n|0}k=c[i>>2]|0;j=c[k+4>>2]|0;e=(f-l|0)*5|0;i=e+-5|0;if((i|0)<0){do if(k|0)if(!(b[k+28>>1]&32)){Df(k);break}else{n=c[k+20>>2]|0;h=n+120|0;c[h>>2]=(c[h>>2]|0)+-1;n=n+136|0;c[k+16>>2]=c[n>>2];c[n>>2]=k;break}while(0);c[m>>2]=32306;c[m+4>>2]=64247;c[m+8>>2]=31517;Db(11,32001,m);n=11;Ra=o;return n|0}a[g>>0]=a[j+i>>0]|0;if(h|0){m=j+(e+-4)|0;c[h>>2]=(d[m+1>>0]|0)<<16|(d[m>>0]|0)<<24|(d[m+2>>0]|0)<<8|(d[m+3>>0]|0)}do if(k|0)if(!(b[k+28>>1]&32)){Df(k);break}else{m=c[k+20>>2]|0;h=m+120|0;c[h>>2]=(c[h>>2]|0)+-1;m=m+136|0;c[k+16>>2]=c[m>>2];c[m>>2]=k;break}while(0);if(((a[g>>0]|0)+-1&255)<=4){n=0;Ra=o;return n|0}c[n>>2]=32306;c[n+4>>2]=64255;c[n+8>>2]=31517;Db(11,32001,n);n=11;Ra=o;return n|0}function fg(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var 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,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;Z=Ra;Ra=Ra+160|0;r=Z+144|0;o=Z+128|0;T=Z+112|0;R=Z+96|0;U=Z+80|0;Q=Z+64|0;P=Z+48|0;V=Z+32|0;S=Z+16|0;j=Z;Y=Z+156|0;q=e+12|0;k=c[q>>2]|0;p=e+44|0;W=c[p>>2]|0;O=k+56|0;N=c[O>>2]|0;N=d[N+37>>0]<<16|d[N+36>>0]<<24|d[N+38>>0]<<8|d[N+39>>0];if(N>>>0>=W>>>0){c[j>>2]=32306;c[j+4>>2]=69057;c[j+8>>2]=31517;Db(11,32001,j);f=11;Ra=Z;return f|0}if(!N){i=(a[e+19>>0]|0)==0&1;k=c[k+72>>2]|0;l=c[k+20>>2]|0;if((b[k+28>>1]&4)!=0?(c[l+24>>2]|0)>>>0>=(c[k+24>>2]|0)>>>0:0)if(!(c[l+96>>2]|0))k=W;else{j=Ve(k)|0;X=190}else X=186;do if((X|0)==186){j=c[l+40>>2]|0;if(j|0){f=j;Ra=Z;return f|0}if((c[l+148>>2]|0)>>>0>(c[l+152>>2]|0)>>>0){j=Wf(k)|0;X=190;break}else{j=Xf(k)|0;X=190;break}}while(0);do if((X|0)==190)if(!j){k=c[p>>2]|0;break}else{f=j;Ra=Z;return f|0}while(0);j=k+1|0;c[p>>2]=j;n=e+32|0;l=1073741824/((c[n>>2]|0)>>>0)|0;if((k|0)==(l|0)){j=k+2|0;c[p>>2]=j}if(a[e+17>>0]|0){if(j>>>0<2)k=0;else{k=j+-2|0;k=k-((k>>>0)%(((((c[e+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;k=((k+1|0)==(l|0)?3:2)+k|0}if((k|0)==(j|0)){k=c[e>>2]|0;k=Za[c[k+204>>2]&127](k,j,Y,i)|0;if(k|0){f=k;Ra=Z;return f|0}k=c[Y>>2]|0;m=c[k+8>>2]|0;l=m+4|0;if((c[l>>2]|0)==(j|0))j=c[m+72>>2]|0;else{c[m+56>>2]=c[k+4>>2];c[m+72>>2]=k;c[m+52>>2]=e;c[l>>2]=j;a[m+9>>0]=(j|0)==1?100:0;j=k}if((b[j+30>>1]|0)>1){j=c[m+72>>2]|0;if(!(b[j+28>>1]&32))Df(j);else{f=c[j+20>>2]|0;e=f+120|0;c[e>>2]=(c[e>>2]|0)+-1;f=f+136|0;c[j+16>>2]=c[f>>2];c[f>>2]=j}c[o>>2]=32306;c[o+4>>2]=65442;c[o+8>>2]=31517;Db(11,32001,o);f=11;Ra=Z;return f|0}a[m>>0]=0;m=m+72|0;j=c[m>>2]|0;l=c[j+20>>2]|0;if((b[j+28>>1]&4)!=0?(c[l+24>>2]|0)>>>0>=(c[j+24>>2]|0)>>>0:0)if(!(c[l+96>>2]|0))k=0;else k=Ve(j)|0;else X=212;do if((X|0)==212){k=c[l+40>>2]|0;if(!k)if((c[l+148>>2]|0)>>>0>(c[l+152>>2]|0)>>>0){k=Wf(j)|0;break}else{k=Xf(j)|0;break}}while(0);j=c[m>>2]|0;if(!(b[j+28>>1]&32))Df(j);else{X=c[j+20>>2]|0;W=X+120|0;c[W>>2]=(c[W>>2]|0)+-1;X=X+136|0;c[j+16>>2]=c[X>>2];c[X>>2]=j}if(k|0){f=k;Ra=Z;return f|0}k=c[p>>2]|0;j=k+1|0;c[p>>2]=j;if((k|0)==(1073741824/((c[n>>2]|0)>>>0)|0|0)){j=k+2|0;c[p>>2]=j}}}m=c[(c[q>>2]|0)+56>>2]|0;a[m+28>>0]=j>>>24;a[m+29>>0]=j>>>16;a[m+30>>0]=j>>>8;a[m+31>>0]=j;m=c[p>>2]|0;c[g>>2]=m;j=c[e>>2]|0;j=Za[c[j+204>>2]&127](j,m,Y,i)|0;if(j|0){c[f>>2]=0;f=j;Ra=Z;return f|0}j=c[Y>>2]|0;k=c[j+8>>2]|0;l=k+4|0;if((c[l>>2]|0)==(m|0))j=k+72|0;else{c[k+56>>2]=c[j+4>>2];Y=k+72|0;c[Y>>2]=j;c[k+52>>2]=e;c[l>>2]=m;a[k+9>>0]=(m|0)==1?100:0;j=Y}c[f>>2]=k;m=c[j>>2]|0;if((b[m+30>>1]|0)>1){do if(k|0)if(!(b[m+28>>1]&32)){Df(m);break}else{e=c[m+20>>2]|0;Y=e+120|0;c[Y>>2]=(c[Y>>2]|0)+-1;e=e+136|0;c[m+16>>2]=c[e>>2];c[e>>2]=m;break}while(0);c[f>>2]=0;c[r>>2]=32306;c[r+4>>2]=65442;c[r+8>>2]=31517;Db(11,32001,r);f=11;Ra=Z;return f|0}a[k>>0]=0;l=c[m+20>>2]|0;do if((b[m+28>>1]&4)!=0?(c[l+24>>2]|0)>>>0>=(c[m+24>>2]|0)>>>0:0)if(!(c[l+96>>2]|0)){f=0;Ra=Z;return f|0}else{j=Ve(m)|0;X=241;break}else X=237;while(0);do if((X|0)==237){j=c[l+40>>2]|0;if(!j)if((c[l+148>>2]|0)>>>0>(c[l+152>>2]|0)>>>0){j=Wf(m)|0;X=241;break}else{j=Xf(m)|0;X=241;break}else X=243}while(0);do if((X|0)==241)if(j){k=c[f>>2]|0;if(!k)break;else{X=243;break}}else{f=0;Ra=Z;return f|0}while(0);do if((X|0)==243){k=c[k+72>>2]|0;if(!(b[k+28>>1]&32)){Df(k);break}else{e=c[k+20>>2]|0;Y=e+120|0;c[Y>>2]=(c[Y>>2]|0)+-1;e=e+136|0;c[k+16>>2]=c[e>>2];c[e>>2]=k;break}}while(0);c[f>>2]=0;f=j;Ra=Z;return f|0}a:do switch(i<<24>>24){case 1:{if(W>>>0>>0)n=0;else{j=eg(e,h,Y,0)|0;if(!j){n=(a[Y>>0]|0)==2&1;break a}f=j;Ra=Z;return f|0}break}case 2:{n=1;break}default:n=0}while(0);k=c[k+72>>2]|0;l=c[k+20>>2]|0;if((b[k+28>>1]&4)!=0?(c[l+24>>2]|0)>>>0>=(c[k+24>>2]|0)>>>0:0){if(c[l+96>>2]|0){m=Ve(k)|0;X=18}}else X=14;do if((X|0)==14){j=c[l+40>>2]|0;if(j|0){f=j;Ra=Z;return f|0}if((c[l+148>>2]|0)>>>0>(c[l+152>>2]|0)>>>0){m=Wf(k)|0;X=18;break}else{m=Xf(k)|0;X=18;break}}while(0);if((X|0)==18?m|0:0){f=m;Ra=Z;return f|0}F=c[O>>2]|0;H=N+-1|0;a[F+36>>0]=H>>>24;a[F+37>>0]=H>>>16;a[F+38>>0]=H>>>8;a[F+39>>0]=H;F=e+36|0;H=(h|0)==0;E=i<<24>>24==2;D=e+60|0;C=0;l=0;b:while(1){B=l;x=(l|0)!=0;if(x){k=c[B+56>>2]|0;j=d[k+1>>0]<<16|d[k>>0]<<24|d[k+2>>0]<<8;k=k+3|0}else{k=c[O>>2]|0;j=d[k+33>>0]<<16|d[k+32>>0]<<24|d[k+34>>0]<<8;k=k+35|0}i=j|d[k>>0];if(i>>>0>W>>>0){X=25;break}if(C>>>0>N>>>0){X=25;break}C=C+1|0;k=c[e>>2]|0;k=Za[c[k+204>>2]&127](k,i,Y,0)|0;if(k|0){X=35;break}j=c[Y>>2]|0;A=c[j+8>>2]|0;k=A+4|0;if((c[k>>2]|0)==(i|0))v=c[A+72>>2]|0;else{c[A+56>>2]=c[j+4>>2];c[A+72>>2]=j;c[A+52>>2]=e;c[k>>2]=i;a[A+9>>0]=(i|0)==1?100:0;v=j}j=A;if((b[v+30>>1]|0)>1){X=31;break}a[A>>0]=0;y=A+56|0;w=c[y>>2]|0;r=w+4|0;s=w+5|0;t=w+6|0;u=w+7|0;z=d[s>>0]<<16|d[r>>0]<<24|d[t>>0]<<8|d[u>>0];q=n<<24>>24!=0;c:do if(q|(z|0)!=0){if(z>>>0>(((c[F>>2]|0)>>>2)+-2|0)>>>0){X=49;break b}if(n<<24>>24?(i|0)==(h|0)|E&i>>>0>>0:0){c[g>>2]=i;c[f>>2]=j;j=c[A+72>>2]|0;m=c[j+20>>2]|0;if((b[j+28>>1]&4)!=0?(c[m+24>>2]|0)>>>0>=(c[j+24>>2]|0)>>>0:0){if(c[m+96>>2]|0){I=Ve(j)|0;X=60}}else X=56;do if((X|0)==56){k=c[m+40>>2]|0;if(k|0){X=251;break b}if((c[m+148>>2]|0)>>>0>(c[m+152>>2]|0)>>>0){I=Wf(j)|0;X=60;break}else{I=Xf(j)|0;X=60;break}}while(0);if((X|0)==60?(X=0,I|0):0){X=248;break b}if(!z){if(!x){X=63;break b}i=B+72|0;j=c[i>>2]|0;m=c[j+20>>2]|0;do if(!(b[j+28>>1]&4))X=68;else{if((c[m+24>>2]|0)>>>0<(c[j+24>>2]|0)>>>0){X=68;break}if(!(c[m+96>>2]|0))break;J=Ve(j)|0;X=72}while(0);do if((X|0)==68){k=c[m+40>>2]|0;if(k|0){X=252;break b}if((c[m+148>>2]|0)>>>0>(c[m+152>>2]|0)>>>0){J=Wf(j)|0;X=72;break}else{J=Xf(j)|0;X=72;break}}while(0);if((X|0)==72?(0,J|0):0){X=249;break b}n=c[B+56>>2]|0;k=c[y>>2]|0;k=d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24;a[n>>0]=k;a[n+1>>0]=k>>8;a[n+2>>0]=k>>16;a[n+3>>0]=k>>24;n=0;k=0;l=i;j=0;X=178;break}s=c[y>>2]|0;p=a[s+8>>0]|0;q=a[s+9>>0]|0;r=a[s+10>>0]|0;s=a[s+11>>0]|0;m=(q&255)<<16|(p&255)<<24|(r&255)<<8|s&255;if(m>>>0>W>>>0){X=75;break b}k=c[e>>2]|0;k=Za[c[k+204>>2]&127](k,m,Y,0)|0;if(k|0){X=85;break b}j=c[Y>>2]|0;o=c[j+8>>2]|0;k=o+4|0;if((c[k>>2]|0)==(m|0))j=c[o+72>>2]|0;else{c[o+56>>2]=c[j+4>>2];c[o+72>>2]=j;c[o+52>>2]=e;c[k>>2]=m;a[o+9>>0]=(m|0)==1?100:0}if((b[j+30>>1]|0)>1){X=81;break b}a[o>>0]=0;j=o+72|0;n=c[j>>2]|0;i=c[n+20>>2]|0;m=b[n+28>>1]|0;do if(!(m&4))X=90;else{if((c[i+24>>2]|0)>>>0<(c[n+24>>2]|0)>>>0){X=90;break}if(!(c[i+96>>2]|0))break;K=Ve(n)|0;X=94}while(0);do if((X|0)==90){k=c[i+40>>2]|0;if(k|0){X=96;break b}if((c[i+148>>2]|0)>>>0>(c[i+152>>2]|0)>>>0){K=Wf(n)|0;X=94;break}else{K=Xf(n)|0;X=94;break}}while(0);if((X|0)==94?(X=0,K|0):0){X=95;break b}w=o+56|0;v=c[w>>2]|0;u=c[y>>2]|0;u=d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24;a[v>>0]=u;a[v+1>>0]=u>>8;a[v+2>>0]=u>>16;a[v+3>>0]=u>>24;v=c[w>>2]|0;z=z+-1|0;a[v+4>>0]=z>>>24;a[v+5>>0]=z>>>16;a[v+6>>0]=z>>>8;a[v+7>>0]=z;ew((c[w>>2]|0)+8|0,(c[y>>2]|0)+12|0,z<<2|0)|0;j=c[j>>2]|0;if(!(b[j+28>>1]&32))Df(j);else{z=c[j+20>>2]|0;y=z+120|0;c[y>>2]=(c[y>>2]|0)+-1;z=z+136|0;c[j+16>>2]=c[z>>2];c[z>>2]=j}if(!x){X=103;break b}i=B+72|0;j=c[i>>2]|0;m=c[j+20>>2]|0;do if(!(b[j+28>>1]&4))X=108;else{if((c[m+24>>2]|0)>>>0<(c[j+24>>2]|0)>>>0){X=108;break}if(!(c[m+96>>2]|0))break;L=Ve(j)|0;X=112}while(0);do if((X|0)==108){k=c[m+40>>2]|0;if(k|0){X=254;break b}if((c[m+148>>2]|0)>>>0>(c[m+152>>2]|0)>>>0){L=Wf(j)|0;X=112;break}else{L=Xf(j)|0;X=112;break}}while(0);if((X|0)==112?(0,L|0):0){X=253;break b}n=c[B+56>>2]|0;a[n>>0]=p;a[n+1>>0]=q;a[n+2>>0]=r;a[n+3>>0]=s;n=0;k=0;l=i;j=0;X=178;break}if(z){d:do if(!H)if(E){k=0;while(1){y=w+((k<<2)+8)|0;if((d[y+1>>0]<<16|d[y>>0]<<24|d[y+2>>0]<<8|d[y+3>>0])>>>0<=h>>>0){i=k;break d}k=k+1|0;if(k>>>0>=z>>>0){i=0;break}}}else{k=(d[w+9>>0]<<16|d[w+8>>0]<<24|d[w+10>>0]<<8|d[w+11>>0])-h|0;if(z>>>0<=1){i=0;break}m=(k|0)>-1?k:(k|0)==-2147483648?2147483647:0-k|0;k=0;i=1;while(1){p=w+((i<<2)+8)|0;p=(d[p+1>>0]<<16|d[p>>0]<<24|d[p+2>>0]<<8|d[p+3>>0])-h|0;p=(p|0)>-1?p:(p|0)==-2147483648?2147483647:0-p|0;o=(p|0)<(m|0);k=o?i:k;i=i+1|0;if((i|0)==(z|0)){i=k;break}else m=o?p:m}}else i=0;while(0);o=w+((i<<2)+8)|0;k=d[o+1>>0]<<16|d[o>>0]<<24|d[o+2>>0]<<8|d[o+3>>0];if(k>>>0>W>>>0){X=124;break b}if((k|0)==(h|0)|q^1|E&k>>>0>>0){c[g>>2]=k;m=c[v+20>>2]|0;do if(!(b[v+28>>1]&4))X=130;else{if((c[m+24>>2]|0)>>>0<(c[v+24>>2]|0)>>>0){X=130;break}if(!(c[m+96>>2]|0))break;M=Ve(v)|0;X=134}while(0);do if((X|0)==130){k=c[m+40>>2]|0;if(k|0){X=256;break b}if((c[m+148>>2]|0)>>>0>(c[m+152>>2]|0)>>>0){M=Wf(v)|0;X=134;break}else{M=Xf(v)|0;X=134;break}}while(0);if((X|0)==134?(0,M|0):0){X=255;break b}k=z+-1|0;if(i>>>0>>0){X=w+((z<<2)+4)|0;X=d[X>>0]|d[X+1>>0]<<8|d[X+2>>0]<<16|d[X+3>>0]<<24;a[o>>0]=X;a[o+1>>0]=X>>8;a[o+2>>0]=X>>16;a[o+3>>0]=X>>24}a[r>>0]=k>>>24;a[s>>0]=k>>>16;a[t>>0]=k>>>8;a[u>>0]=k;p=c[g>>2]|0;i=c[D>>2]|0;e:do if(!i)k=0;else{k=c[i>>2]|0;if(k>>>0

        >>0){k=1;break}m=p+-1|0;if(m>>>0>=k>>>0){k=0;break}n=c[i+8>>2]|0;if(n){o=i;do{k=(m>>>0)/(n>>>0)|0;o=c[o+12+(k<<2)>>2]|0;if(!o){k=0;break e}m=m-(G(k,n)|0)|0;n=c[o+8>>2]|0}while((n|0)!=0);i=o;k=c[o>>2]|0}if(k>>>0<4001){k=(1<<(m&7)&d[i+12+(m>>>3)>>0]|0)!=0&1;break}n=m+1|0;k=(m>>>0)%125|0;m=c[i+12+(k<<2)>>2]|0;if(!m){k=0;break}while(1){if((m|0)==(n|0)){k=1;break e}k=((k+1|0)>>>0)%125|0;m=c[i+12+(k<<2)>>2]|0;if(!m){k=0;break}}}while(0);X=c[e>>2]|0;k=Za[c[X+204>>2]&127](X,p,Y,k^1)|0;if(k|0){c[f>>2]=0;n=0;X=176;break}k=c[Y>>2]|0;m=c[k+8>>2]|0;n=m+4|0;if((c[n>>2]|0)==(p|0))k=m+72|0;else{c[m+56>>2]=c[k+4>>2];X=m+72|0;c[X>>2]=k;c[m+52>>2]=e;c[n>>2]=p;a[m+9>>0]=(p|0)==1?100:0;k=X}c[f>>2]=m;if((b[(c[k>>2]|0)+30>>1]|0)>1){do if(m|0){k=c[m+72>>2]|0;if(!(b[k+28>>1]&32)){Df(k);break}else{X=c[k+20>>2]|0;A=X+120|0;c[A>>2]=(c[A>>2]|0)+-1;X=X+136|0;c[k+16>>2]=c[X>>2];c[X>>2]=k;break}}while(0);c[f>>2]=0;c[T>>2]=32306;c[T+4>>2]=65442;c[T+8>>2]=31517;Db(11,32001,T);n=0;k=11;X=176;break}a[m>>0]=0;n=c[m+72>>2]|0;i=c[n+20>>2]|0;do if(!(b[n+28>>1]&4))X=166;else{if((c[i+24>>2]|0)>>>0<(c[n+24>>2]|0)>>>0){X=166;break}if(!(c[i+96>>2]|0)){n=0;k=0;X=176;break c}k=Ve(n)|0;X=170}while(0);do if((X|0)==166){k=c[i+40>>2]|0;if(k|0){X=172;break}if((c[i+148>>2]|0)>>>0>(c[i+152>>2]|0)>>>0){k=Wf(n)|0;X=170;break}else{k=Xf(n)|0;X=170;break}}while(0);if((X|0)==170){X=0;if(!k){n=0;k=0;X=176;break}m=c[f>>2]|0;if(m)X=172}do if((X|0)==172){m=c[m+72>>2]|0;if(!(b[m+28>>1]&32)){Df(m);break}else{X=c[m+20>>2]|0;A=X+120|0;c[A>>2]=(c[A>>2]|0)+-1;X=X+136|0;c[m+16>>2]=c[X>>2];c[X>>2]=m;break}}while(0);c[f>>2]=0;n=0;X=176}else{k=0;X=176}}else{k=0;X=176}}else{m=c[v+20>>2]|0;if((b[v+28>>1]&4)!=0?(c[m+24>>2]|0)>>>0>=(c[v+24>>2]|0)>>>0:0)if(!(c[m+96>>2]|0))k=w;else{k=Ve(v)|0;X=45}else X=41;do if((X|0)==41){k=c[m+40>>2]|0;if(k|0){X=250;break b}if((c[m+148>>2]|0)>>>0>(c[m+152>>2]|0)>>>0){k=Wf(v)|0;X=45;break}else{k=Xf(v)|0;X=45;break}}while(0);if((X|0)==45){if(k|0){X=247;break b}k=c[y>>2]|0}c[g>>2]=i;n=(c[O>>2]|0)+32|0;k=d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24;a[n>>0]=k;a[n+1>>0]=k>>8;a[n+2>>0]=k>>16;a[n+3>>0]=k>>24;c[f>>2]=j;n=0;k=0;j=0;X=176}while(0);if((X|0)==176){X=0;if(l){l=B+72|0;X=178}}do if((X|0)==178){X=0;l=c[l>>2]|0;if(!(b[l+28>>1]&32)){Df(l);break}else{B=c[l+20>>2]|0;A=B+120|0;c[A>>2]=(c[A>>2]|0)+-1;B=B+136|0;c[l+16>>2]=c[B>>2];c[B>>2]=l;break}}while(0);if(!(n<<24>>24)){l=0;X=257;break}else l=j}switch(X|0){case 25:{c[S>>2]=32306;c[S+4>>2]=69113;c[S+8>>2]=31517;Db(11,32001,S);j=l;k=11;break}case 31:{j=c[A+72>>2]|0;if(!(b[j+28>>1]&32))Df(j);else{f=c[j+20>>2]|0;e=f+120|0;c[e>>2]=(c[e>>2]|0)+-1;f=f+136|0;c[j+16>>2]=c[f>>2];c[f>>2]=j}c[V>>2]=32306;c[V+4>>2]=65442;c[V+8>>2]=31517;Db(11,32001,V);j=l;k=11;break}case 35:{j=l;break}case 49:{c[P>>2]=32306;c[P+4>>2]=69142;c[P+8>>2]=31517;Db(11,32001,P);k=11;j=A;X=257;break}case 63:{f=(c[O>>2]|0)+32|0;e=c[y>>2]|0;e=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[f>>0]=e;a[f+1>>0]=e>>8;a[f+2>>0]=e>>16;a[f+3>>0]=e>>24;f=0;Ra=Z;return f|0}case 75:{c[Q>>2]=32306;c[Q+4>>2]=69176;c[Q+8>>2]=31517;Db(11,32001,Q);k=11;j=A;X=257;break}case 81:{j=c[o+72>>2]|0;if(!(b[j+28>>1]&32))Df(j);else{f=c[j+20>>2]|0;e=f+120|0;c[e>>2]=(c[e>>2]|0)+-1;f=f+136|0;c[j+16>>2]=c[f>>2];c[f>>2]=j}c[U>>2]=32306;c[U+4>>2]=65442;c[U+8>>2]=31517;Db(11,32001,U);k=11;j=A;X=257;break}case 85:{j=A;X=257;break}case 95:{m=c[j>>2]|0;k=K;n=m;m=b[m+28>>1]|0;X=96;break}case 103:{f=c[O>>2]|0;a[f+32>>0]=p;a[f+33>>0]=q;a[f+34>>0]=r;a[f+35>>0]=s;f=0;Ra=Z;return f|0}case 124:{c[R>>2]=32306;c[R+4>>2]=69241;c[R+8>>2]=31517;Db(11,32001,R);k=11;j=A;X=257;break}case 247:{j=A;X=257;break}case 248:{k=I;j=A;X=257;break}case 249:{k=J;j=A;X=257;break}case 250:{j=A;X=257;break}case 251:{j=A;X=257;break}case 252:{j=A;X=257;break}case 253:{k=L;j=A;X=257;break}case 254:{j=A;X=257;break}case 255:{k=M;j=A;X=257;break}case 256:{j=A;X=257;break}}do if((X|0)==96){j=A;if(!(m&32)){Df(n);X=257;break}else{X=c[n+20>>2]|0;f=X+120|0;c[f>>2]=(c[f>>2]|0)+-1;X=X+136|0;c[n+16>>2]=c[X>>2];c[X>>2]=n;X=257;break}}while(0);do if((X|0)==257)if(j){j=c[j+72>>2]|0;if(!(b[j+28>>1]&32)){Df(j);j=l;break}else{f=c[j+20>>2]|0;e=f+120|0;c[e>>2]=(c[e>>2]|0)+-1;f=f+136|0;c[j+16>>2]=c[f>>2];c[f>>2]=j;j=l;break}}else j=l;while(0);if(!j){f=k;Ra=Z;return f|0}j=c[j+72>>2]|0;if(!(b[j+28>>1]&32)){Df(j);f=k;Ra=Z;return f|0}else{f=c[j+20>>2]|0;e=f+120|0;c[e>>2]=(c[e>>2]|0)+-1;f=f+136|0;c[j+16>>2]=c[f>>2];c[f>>2]=j;f=k;Ra=Z;return f|0}return 0}function gg(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 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,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;S=Ra;Ra=Ra+112|0;P=S+88|0;N=S+72|0;L=S+56|0;q=S+40|0;l=S+24|0;M=S;R=S+100|0;H=g+4|0;Q=c[H>>2]|0;F=c[f>>2]|0;if(Q>>>0<3){c[l>>2]=32306;c[l+4>>2]=66838;c[l+8>>2]=31517;Db(11,32001,l);R=11;Ra=S;return R|0}C=c[g+72>>2]|0;D=F+12|0;a:do if(a[D>>0]|0){n=c[C+20>>2]|0;p=C+28|0;if((b[p>>1]&4)!=0?(c[n+24>>2]|0)>>>0>=(c[C+24>>2]|0)>>>0:0){if(!(c[n+96>>2]|0)){O=14;break}l=Ve(C)|0}else O=9;do if((O|0)==9){l=c[n+40>>2]|0;if(l|0)break a;if((c[n+148>>2]|0)>>>0>(c[n+152>>2]|0)>>>0){l=Wf(C)|0;break}else{l=Xf(C)|0;break}}while(0);if(!l)O=14}else{p=C+28|0;O=14}while(0);b:do if((O|0)==14){l=b[p>>1]|0;if(l&2){l=Ve(C)|0;if(l|0)break;l=b[p>>1]|0}if((k|0)!=0|(l&8)==0)E=0;else E=c[C+24>>2]|0;b[p>>1]=l&-9;l=F+212|0;n=Ya[c[29436>>2]&127](c[(c[l>>2]|0)+44>>2]|0,j,0)|0;do if(n){l=c[l>>2]|0;k=c[n+4>>2]|0;if(!(c[k>>2]|0)){l=sf(l,j,n)|0;if(!l){A=0;y=0;break}x=l;y=1;l=b[l+30>>1]|0}else{x=l+12|0;c[x>>2]=(c[x>>2]|0)+1;x=k+30|0;l=(b[x>>1]|0)+1<<16>>16;b[x>>1]=l;x=k;y=(k|0)!=0}k=x+28|0;n=b[k>>1]|0;if(l<<16>>16>1){if(!(n&32))Df(x);else{j=c[x+20>>2]|0;i=j+120|0;c[i>>2]=(c[i>>2]|0)+-1;j=j+136|0;c[x+16>>2]=c[j>>2];c[j>>2]=x}c[q>>2]=32306;c[q+4>>2]=57762;c[q+8>>2]=31517;Db(11,32001,q);l=11;break b}b[p>>1]=b[p>>1]|n&8;if(!(a[D>>0]|0)){s=c[x+12>>2]|0;do if(b[k>>1]&2){l=s+8|0;n=x+36|0;k=c[n>>2]|0;if((c[l>>2]|0)==(x|0))c[l>>2]=k;q=c[x+32>>2]|0;r=(q|0)==0;if(r){c[s+4>>2]=k;l=k}else{c[q+36>>2]=k;l=c[n>>2]|0}if(l|0){c[l+32>>2]=q;break}c[s>>2]=q;if(r)a[s+33>>0]=2}while(0);A=s+12|0;c[A>>2]=(c[A>>2]|0)+-1;cb[c[29440>>2]&255](c[s+44>>2]|0,c[x>>2]|0,1);A=x;break}A=(c[F+24>>2]|0)+1|0;l=x+12|0;w=x+24|0;db[c[29444>>2]&127](c[(c[l>>2]|0)+44>>2]|0,c[x>>2]|0,c[w>>2]|0,A);c[w>>2]=A;w=b[k>>1]|0;if((w&10)==10){t=c[l>>2]|0;v=t+8|0;l=c[v>>2]|0;s=x+36|0;k=c[s>>2]|0;if((l|0)==(x|0)){c[v>>2]=k;u=k}else u=l;r=x+32|0;n=c[r>>2]|0;q=(n|0)==0;if(q){c[t+4>>2]=k;l=k}else{c[n+36>>2]=k;l=c[s>>2]|0}do if(!l){c[t>>2]=n;if(q){a[t+33>>0]=2;c[s>>2]=0;c[r>>2]=0;l=t;O=42;break}else{c[s>>2]=0;l=t;O=41;break}}else{c[l+32>>2]=n;n=c[t>>2]|0;c[s>>2]=0;c[r>>2]=n;if(!n){l=t;O=42}else{l=t;O=41}}while(0);if((O|0)==41)c[n+36>>2]=x;else if((O|0)==42){c[t+4>>2]=x;if(a[t+32>>0]|0)a[t+33>>0]=1}c[l>>2]=x;if((w&8)==0&(u|0)==0){c[v>>2]=x;A=x}else A=x}else A=x}else{A=0;y=0}while(0);v=C+24|0;z=c[v>>2]|0;x=C+12|0;db[c[29444>>2]&127](c[(c[x>>2]|0)+44>>2]|0,c[C>>2]|0,z,j);c[v>>2]=j;v=b[p>>1]|0;if((v&10)==10){t=c[x>>2]|0;w=t+8|0;l=c[w>>2]|0;s=C+36|0;k=c[s>>2]|0;if((l|0)==(C|0)){c[w>>2]=k;u=k}else u=l;r=C+32|0;n=c[r>>2]|0;q=(n|0)==0;if(q){c[t+4>>2]=k;l=k}else{c[n+36>>2]=k;l=c[s>>2]|0}do if(!l){c[t>>2]=n;if(q){a[t+33>>0]=2;c[s>>2]=0;c[r>>2]=0;l=t;O=69;break}else{c[s>>2]=0;l=t;O=68;break}}else{c[l+32>>2]=n;n=c[t>>2]|0;c[s>>2]=0;c[r>>2]=n;if(!n){l=t;O=69}else{l=t;O=68}}while(0);if((O|0)==68)c[n+36>>2]=C;else if((O|0)==69){c[t+4>>2]=C;if(a[t+32>>0]|0)a[t+33>>0]=1}c[l>>2]=C;if((v&8)==0&(u|0)==0)c[w>>2]=C}l=v&65535;if(l&17|0?(B=l&65519,b[p>>1]=B,l&1|0):0){k=(B^3)&65535;b[p>>1]=k;l=c[x>>2]|0;c[C+36>>2]=0;n=c[l>>2]|0;c[C+32>>2]=n;if(!n){c[l+4>>2]=C;if(a[l+32>>0]|0)a[l+33>>0]=1}else c[n+36>>2]=C;c[l>>2]=C;l=l+8|0;if((k&8)==0&(c[l>>2]|0)==0)c[l>>2]=C}do if(y&(a[D>>0]|0)!=0){l=A+12|0;v=A+24|0;db[c[29444>>2]&127](c[(c[l>>2]|0)+44>>2]|0,c[A>>2]|0,c[v>>2]|0,z);c[v>>2]=z;v=b[A+28>>1]|0;if((v&10)==10){s=c[l>>2]|0;u=s+8|0;l=c[u>>2]|0;r=A+36|0;p=c[r>>2]|0;if((l|0)==(A|0)){c[u>>2]=p;t=p}else t=l;q=A+32|0;n=c[q>>2]|0;k=(n|0)==0;if(k){c[s+4>>2]=p;l=p}else{c[n+36>>2]=p;l=c[r>>2]|0}do if(!l){c[s>>2]=n;if(k){a[s+33>>0]=2;c[r>>2]=0;c[q>>2]=0;l=s;O=94;break}else{c[r>>2]=0;l=s;O=93;break}}else{c[l+32>>2]=n;n=c[s>>2]|0;c[r>>2]=0;c[q>>2]=n;if(!n){l=s;O=94}else{l=s;O=93}}while(0);if((O|0)==93)c[n+36>>2]=A;else if((O|0)==94){c[s+4>>2]=A;if(a[s+32>>0]|0)a[s+33>>0]=1}c[l>>2]=A;if((v&8)==0&(t|0)==0)c[u>>2]=A}if(!(v&32)){Df(A);break}else{D=c[A+20>>2]|0;C=D+120|0;c[C>>2]=(c[C>>2]|0)+-1;D=D+136|0;c[A+16>>2]=c[D>>2];c[D>>2]=A;break}}while(0);do if(E|0){r=Za[c[F+204>>2]&127](F,E,M,0)|0;if(!r){l=c[M>>2]|0;p=l+28|0;n=b[p>>1]|8;b[p>>1]=n;k=n&65535;if(k&17){o=k&65519;n=o&65535;b[p>>1]=n;if(k&1){b[p>>1]=o^3;n=c[l+12>>2]|0;c[l+36>>2]=0;o=c[n>>2]|0;c[l+32>>2]=o;if(!o){c[n+4>>2]=l;if(a[n+32>>0]|0)a[n+33>>0]=1}else c[o+36>>2]=l;c[n>>2]=l;l=c[M>>2]|0;n=b[l+28>>1]|0}}if(!(n&32))Df(l);else{J=c[l+20>>2]|0;F=J+120|0;c[F>>2]=(c[F>>2]|0)+-1;J=J+136|0;c[l+16>>2]=c[J>>2];c[J>>2]=l}break}if(E>>>0<=(c[F+28>>2]|0)>>>0?(o=c[F+56>>2]|0,J=c[F+208>>2]|0,o|0):0){l=E+-1|0;m=c[o+8>>2]|0;c:do if(!m)O=109;else while(1){n=(l>>>0)/(m>>>0)|0;o=c[o+12+(n<<2)>>2]|0;if(!o)break c;l=l-(G(n,m)|0)|0;m=c[o+8>>2]|0;if(!m){O=109;break}}while(0);do if((O|0)==109){if((c[o>>2]|0)>>>0<4001){j=o+12+(l>>>3)|0;a[j>>0]=(1<<(l&7)^255)&d[j>>0];break}q=o+12|0;ew(J|0,q|0,500)|0;gw(q|0,0,500)|0;q=o+4|0;c[q>>2]=0;p=l+1|0;n=0;do{k=J+(n<<2)|0;l=c[k>>2]|0;if(!((l|0)==0|(l|0)==(p|0))){m=((l+-1|0)>>>0)%125|0;c[q>>2]=(c[q>>2]|0)+1;l=o+12+(m<<2)|0;if(c[l>>2]|0)do{l=m+1|0;m=l>>>0>124?0:l;l=o+12+(m<<2)|0}while((c[l>>2]|0)!=0);c[l>>2]=c[k>>2]}n=n+1|0}while((n|0)!=125)}while(0);c[R>>2]=r;R=r;Ra=S;return R|0}c[R>>2]=r;R=r;Ra=S;return R|0}while(0);c[R>>2]=0;c[H>>2]=j;switch(h<<24>>24){case 1:case 5:{l=hg(g)|0;c[R>>2]=l;if(l|0){R=l;Ra=S;return R|0}if(h<<24>>24==1){R=0;Ra=S;return R|0}break}default:{l=c[g+56>>2]|0;l=d[l+1>>0]<<16|d[l>>0]<<24|d[l+2>>0]<<8|d[l+3>>0];if(l|0?(ig(f,l,4,j,R),I=c[R>>2]|0,I|0):0){R=I;Ra=S;return R|0}}}l=c[f>>2]|0;l=Za[c[l+204>>2]&127](l,i,M,0)|0;if(l|0){c[R>>2]=l;R=l;Ra=S;return R|0}l=c[M>>2]|0;v=c[l+8>>2]|0;n=v+4|0;if((c[n>>2]|0)==(i|0))w=v+72|0;else{c[v+56>>2]=c[l+4>>2];w=v+72|0;c[w>>2]=l;c[v+52>>2]=f;c[n>>2]=i;a[v+9>>0]=(i|0)==1?100:0}c[R>>2]=0;l=c[w>>2]|0;n=c[l+20>>2]|0;do if((b[l+28>>1]&4)!=0?(c[n+24>>2]|0)>>>0>=(c[l+24>>2]|0)>>>0:0)if(!(c[n+96>>2]|0)){c[R>>2]=0;break}else{m=Ve(l)|0;O=152;break}else O=147;while(0);do if((O|0)==147){m=c[n+40>>2]|0;if(m|0){c[R>>2]=m;O=153;break}if((c[n+148>>2]|0)>>>0>(c[n+152>>2]|0)>>>0){m=Wf(l)|0;O=152;break}else{m=Xf(l)|0;O=152;break}}while(0);if((O|0)==152?(c[R>>2]=m,m|0):0)O=153;if((O|0)==153){if(!v){R=m;Ra=S;return R|0}l=c[w>>2]|0;if(!(b[l+28>>1]&32)){Df(l);R=m;Ra=S;return R|0}else{R=c[l+20>>2]|0;j=R+120|0;c[j>>2]=(c[j>>2]|0)+-1;R=R+136|0;c[l+16>>2]=c[R>>2];c[R>>2]=l;R=m;Ra=S;return R|0}}d:do if(h<<24>>24==4){l=c[v+56>>2]|0;m=l+1|0;n=l+2|0;o=l+3|0;if((d[m>>0]<<16|d[l>>0]<<24|d[n>>0]<<8|d[o>>0]|0)==(Q|0)){a[l>>0]=j>>>24;a[m>>0]=j>>>16;a[n>>0]=j>>>8;a[o>>0]=j;l=0;O=181;break}else{c[L>>2]=32306;c[L+4>>2]=66766;c[L+8>>2]=31517;Db(11,32001,L);l=11;O=181;break}}else{if((a[v>>0]|0)==0?(K=Gf(v)|0,K|0):0){l=K;O=181;break}L=b[v+24>>1]|0;u=L&65535;e:do if(L<<16>>16){n=v+56|0;t=v+26|0;s=v+64|0;o=v+80|0;p=M+16|0;k=M+12|0;q=M+18|0;r=v+52|0;if(h<<24>>24!=3){p=c[n>>2]|0;o=c[s>>2]|0;n=e[t>>1]|0;l=0;while(1){m=o+(l<<1)|0;m=p+((d[m>>0]<<8|d[m+1>>0])&n)|0;if((d[m+1>>0]<<16|d[m>>0]<<24|d[m+2>>0]<<8|d[m+3>>0]|0)==(Q|0))break;l=l+1|0;if(l>>>0>=u>>>0)break e}a[m>>0]=j>>>24;a[m+1>>0]=j>>>16;a[m+2>>0]=j>>>8;a[m+3>>0]=j;break}l=0;while(1){m=(c[s>>2]|0)+(l<<1)|0;m=(c[n>>2]|0)+((d[m>>0]<<8|d[m+1>>0])&e[t>>1])|0;cb[c[o>>2]&255](v,m,M);if((c[k>>2]|0)>>>0>(e[p>>1]|0)>>>0){m=m+(e[q>>1]|0)|0;if(m>>>0>((c[n>>2]|0)+(c[(c[r>>2]|0)+36>>2]|0)|0)>>>0){O=172;break}m=m+-4|0;if((d[m+1>>0]<<16|d[m>>0]<<24|d[m+2>>0]<<8|d[m+3>>0]|0)==(Q|0)){O=174;break}}l=l+1|0;if(l>>>0>=u>>>0)break e}if((O|0)==172){c[N>>2]=32306;c[N+4>>2]=66785;c[N+8>>2]=31517;Db(11,32001,N);l=11;O=181;break d}else if((O|0)==174){a[m>>0]=j>>>24;a[m+1>>0]=j>>>16;a[m+2>>0]=j>>>8;a[m+3>>0]=j;break}}else l=0;while(0);if((l|0)==(u|0)){do if(h<<24>>24==5){l=(c[v+56>>2]|0)+((d[v+9>>0]|0)+8)|0;m=l+1|0;n=l+2|0;o=l+3|0;if((d[m>>0]<<16|d[l>>0]<<24|d[n>>0]<<8|d[o>>0]|0)!=(Q|0))break;a[l>>0]=j>>>24;a[m>>0]=j>>>16;a[n>>0]=j>>>8;a[o>>0]=j;l=0;O=181;break d}while(0);c[P>>2]=32306;c[P+4>>2]=66803;c[P+8>>2]=31517;Db(11,32001,P);l=11}else l=0;c[R>>2]=l;if(v)O=183}while(0);if((O|0)==181){c[R>>2]=l;O=183}do if((O|0)==183){m=c[w>>2]|0;if(!(b[m+28>>1]&32)){Df(m);break}else{Q=c[m+20>>2]|0;P=Q+120|0;c[P>>2]=(c[P>>2]|0)+-1;Q=Q+136|0;c[m+16>>2]=c[Q>>2];c[Q>>2]=m;break}}while(0);if(l|0){R=l;Ra=S;return R|0}ig(f,j,h,i,R);R=c[R>>2]|0;Ra=S;return R|0}while(0);c[R>>2]=l;R=l;Ra=S;return R|0}function hg(f){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,y=0,z=0,A=0,B=0;B=Ra;Ra=Ra+48|0;x=B+24|0;t=B;y=B+36|0;u=f+52|0;z=c[u>>2]|0;w=f+4|0;A=c[w>>2]|0;if(!(a[f>>0]|0)){g=Gf(f)|0;c[y>>2]=g;if(g|0){A=g;Ra=B;return A|0}}else c[y>>2]=0;s=b[f+24>>1]|0;k=s&65535;a:do if(!(s<<16>>16))g=f+8|0;else{l=f+56|0;m=f+26|0;n=f+64|0;o=f+80|0;p=t+16|0;q=t+12|0;g=f+8|0;r=f+60|0;s=t+18|0;h=0;j=0;while(1){i=(c[n>>2]|0)+(h<<1)|0;i=(c[l>>2]|0)+((d[i>>0]<<8|d[i+1>>0])&e[m>>1])|0;do if((j|0)==0?(cb[c[o>>2]&255](f,i,t),v=e[p>>1]|0,(c[q>>2]|0)>>>0>v>>>0):0){j=c[r>>2]|0;if(j>>>0>=i>>>0?j>>>0<(i+v|0)>>>0:0){c[x>>2]=32306;c[x+4>>2]=64569;c[x+8>>2]=31517;Db(11,32001,x);c[y>>2]=11;break}j=i+((e[s>>1]|0)+-4)|0;ig(c[u>>2]|0,d[j+1>>0]<<16|d[j>>0]<<24|d[j+2>>0]<<8|d[j+3>>0],3,c[w>>2]|0,y)}while(0);if(!(a[g>>0]|0))ig(z,d[i+1>>0]<<16|d[i>>0]<<24|d[i+2>>0]<<8|d[i+3>>0],5,A,y);h=h+1|0;if((h|0)==(k|0))break a;j=c[y>>2]|0}}while(0);if(!(a[g>>0]|0)){f=(c[f+56>>2]|0)+((d[f+9>>0]|0)+8)|0;ig(z,d[f+1>>0]<<16|d[f>>0]<<24|d[f+2>>0]<<8|d[f+3>>0],5,A,y)}A=c[y>>2]|0;Ra=B;return A|0}function ig(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=Ra;Ra=Ra+48|0;m=r+32|0;l=r+16|0;j=r;q=r+44|0;if(c[i>>2]|0){Ra=r;return}switch(f|0){case 0:{c[j>>2]=32306;c[j+4>>2]=64184;c[j+8>>2]=31517;Db(11,32001,j);c[i>>2]=11;Ra=r;return}case 1:{k=0;break}default:{k=f+-2|0;k=k-((k>>>0)%(((((c[e+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;k=((k+1|0)==(1073741824/((c[e+32>>2]|0)>>>0)|0|0)?3:2)+k|0}}j=c[e>>2]|0;j=Za[c[j+204>>2]&127](j,k,q,0)|0;if(j|0){c[i>>2]=j;Ra=r;return}n=c[q>>2]|0;a:do if(!(a[c[n+8>>2]>>0]|0)){l=(f-k|0)*5|0;j=l+-5|0;if((j|0)<0){c[m>>2]=32306;c[m+4>>2]=64202;c[m+8>>2]=31517;Db(11,32001,m);c[i>>2]=11;break}f=c[n+4>>2]|0;e=f+j|0;if((a[e>>0]|0)==g<<24>>24?(m=f+(l+-4)|0,(d[m+1>>0]<<16|d[m>>0]<<24|d[m+2>>0]<<8|d[m+3>>0]|0)==(h|0)):0)break;k=c[n+20>>2]|0;do if((b[n+28>>1]&4)!=0?(c[k+24>>2]|0)>>>0>=(c[n+24>>2]|0)>>>0:0)if(!(c[k+96>>2]|0)){c[i>>2]=0;break}else{o=Ve(n)|0;p=23;break}else p=18;while(0);do if((p|0)==18){j=c[k+40>>2]|0;if(j|0){c[i>>2]=j;break a}if((c[k+148>>2]|0)>>>0>(c[k+152>>2]|0)>>>0){o=Wf(n)|0;p=23;break}else{o=Xf(n)|0;p=23;break}}while(0);if((p|0)==23?(c[i>>2]=o,o|0):0)break;a[e>>0]=g;i=f+(l+-4)|0;a[i>>0]=h>>>24;a[i+1>>0]=h>>>16;a[i+2>>0]=h>>>8;a[i+3>>0]=h}else{c[l>>2]=32306;c[l+4>>2]=64197;c[l+8>>2]=31517;Db(11,32001,l);c[i>>2]=11}while(0);j=c[q>>2]|0;if(!j){Ra=r;return}if(!(b[j+28>>1]&32)){Df(j);Ra=r;return}else{q=c[j+20>>2]|0;i=q+120|0;c[i>>2]=(c[i>>2]|0)+-1;q=q+136|0;c[j+16>>2]=c[q>>2];c[q>>2]=j;Ra=r;return}}function jg(d,e,f){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;if(!d){n=0;return n|0}n=d+4|0;g=c[n>>2]|0;c[g+4>>2]=c[d>>2];g=c[g+8>>2]|0;if(!g){n=0;return n|0}k=(f|0)==0;a:while(1){b:do if(k){f=g+16|0;h=c[f>>2]|0;if(h)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);m=58;break}else{m=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);m=58;break}else m=58}else{l=g+1|0;if(a[l>>0]&1){f=g+16|0;h=c[f>>2]|0;if(!h){m=58;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);m=58;break}else{m=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);m=58;break}}switch(a[g>>0]|0){case 0:{c[g+4>>2]=0;f=ag(g)|0;if(f|0){k=f;break a}j=g+68|0;f=a[j>>0]|0;if(f<<24>>24>-1){if(f<<24>>24){i=0;do{h=c[(c[g+120+(i<<2)>>2]|0)+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);f=a[j>>0]|0}else{o=c[h+20>>2]|0;p=o+120|0;c[p>>2]=(c[p>>2]|0)+-1;o=o+136|0;c[h+16>>2]=c[o>>2];c[o>>2]=h}i=i+1|0}while((i|0)<(f<<24>>24|0))}f=c[(c[g+116>>2]|0)+72>>2]|0;if(!(b[f+28>>1]&32))Df(f);else{p=c[f+20>>2]|0;o=p+120|0;c[o>>2]=(c[o>>2]|0)+-1;p=p+136|0;c[f+16>>2]=c[p>>2];c[p>>2]=f}a[j>>0]=-1}break}case 2:{a[g>>0]=0;f=ag(g)|0;if(f|0){k=f;break a}j=g+68|0;f=a[j>>0]|0;if(f<<24>>24>-1){if(f<<24>>24){i=0;do{h=c[(c[g+120+(i<<2)>>2]|0)+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);f=a[j>>0]|0}else{p=c[h+20>>2]|0;o=p+120|0;c[o>>2]=(c[o>>2]|0)+-1;p=p+136|0;c[h+16>>2]=c[p>>2];c[p>>2]=h}i=i+1|0}while((i|0)<(f<<24>>24|0))}f=c[(c[g+116>>2]|0)+72>>2]|0;if(!(b[f+28>>1]&32))Df(f);else{p=c[f+20>>2]|0;o=p+120|0;c[o>>2]=(c[o>>2]|0)+-1;p=p+136|0;c[f+16>>2]=c[p>>2];c[p>>2]=f}a[j>>0]=-1}break}default:break b}a[g>>0]=3;a[l>>0]=a[l>>0]&-15}while(0);if((m|0)==58){m=0;c[f>>2]=0;a[g>>0]=4;c[g+4>>2]=e}j=g+68|0;f=a[j>>0]|0;if(f<<24>>24>-1){if(f<<24>>24){i=0;do{h=c[(c[g+120+(i<<2)>>2]|0)+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);f=a[j>>0]|0}else{p=c[h+20>>2]|0;o=p+120|0;c[o>>2]=(c[o>>2]|0)+-1;p=p+136|0;c[h+16>>2]=c[p>>2];c[p>>2]=h}i=i+1|0}while((i|0)<(f<<24>>24|0))}f=c[(c[g+116>>2]|0)+72>>2]|0;if(!(b[f+28>>1]&32))Df(f);else{p=c[f+20>>2]|0;o=p+120|0;c[o>>2]=(c[o>>2]|0)+-1;p=p+136|0;c[f+16>>2]=c[p>>2];c[p>>2]=f}a[j>>0]=-1}g=c[g+24>>2]|0;if(!g){f=0;m=71;break}}if((m|0)==71)return f|0;a[l>>0]=a[l>>0]&-15;f=c[n>>2]|0;c[f+4>>2]=c[d>>2];f=c[f+8>>2]|0;if(!f){p=k;return p|0}do{g=f+16|0;h=c[g>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{p=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[g>>2]=0;a[f>>0]=4;c[f+4>>2]=k;j=f+68|0;g=a[j>>0]|0;if(g<<24>>24>-1){if(g<<24>>24){i=0;do{h=c[(c[f+120+(i<<2)>>2]|0)+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);g=a[j>>0]|0}else{p=c[h+20>>2]|0;o=p+120|0;c[o>>2]=(c[o>>2]|0)+-1;p=p+136|0;c[h+16>>2]=c[p>>2];c[p>>2]=h}i=i+1|0}while((i|0)<(g<<24>>24|0))}g=c[(c[f+116>>2]|0)+72>>2]|0;if(!(b[g+28>>1]&32))Df(g);else{p=c[g+20>>2]|0;o=p+120|0;c[o>>2]=(c[o>>2]|0)+-1;p=p+136|0;c[g+16>>2]=c[p>>2];c[p>>2]=g}a[j>>0]=-1}f=c[f+24>>2]|0}while((f|0)!=0);f=k;return f|0}function kg(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;switch(d|0){case -16:{lg(a,e);return}case -15:case -17:case -7:case -14:case -13:{if(!e)return;if(a|0){if(c[a+480>>2]|0){Xd(a,e);return}d=e;if((c[a+304>>2]|0)>>>0<=d>>>0?(c[a+308>>2]|0)>>>0>d>>>0:0){d=a+300|0;c[e>>2]=c[d>>2];c[d>>2]=e;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);return}else{d=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);return}}case -9:{if((e|0)==0|(c[a+480>>2]|0)!=0)return;d=(c[e>>2]|0)+-1|0;c[e>>2]=d;if(d|0)return;a=c[e+12>>2]|0;if(a|0){if(c[a+480>>2]|0){Xd(a,e);return}d=e;if((c[a+304>>2]|0)>>>0<=d>>>0?(c[a+308>>2]|0)>>>0>d>>>0:0){d=a+300|0;c[e>>2]=c[d>>2];c[d>>2]=e;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);return}else{d=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);return}}case -8:{if(!(c[e+4>>2]&16))return;if(a|0){if(c[a+480>>2]|0){Xd(a,e);return}d=e;if((c[a+304>>2]|0)>>>0<=d>>>0?(c[a+308>>2]|0)>>>0>d>>>0:0){d=a+300|0;c[e>>2]=c[d>>2];c[d>>2]=e;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);return}else{d=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);return}}case -11:{if(c[a+480>>2]|0){mg(a,e);return}if(!e)return;if(!((b[e+8>>1]&9216)==0?!(c[e+24>>2]|0):0))Cg(e);a=c[e+32>>2]|0;if(a|0){if(c[a+480>>2]|0){Xd(a,e);return}d=e;if((c[a+304>>2]|0)>>>0<=d>>>0?(c[a+308>>2]|0)>>>0>d>>>0:0){d=a+300|0;c[e>>2]=c[d>>2];c[d>>2]=e;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);return}else{d=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);return}}case -12:{if(c[a+480>>2]|0)return;a=c[e>>2]|0;f=e+12|0;d=(c[f>>2]|0)+-1|0;c[f>>2]=d;if(d|0)return;d=c[e+8>>2]|0;if(d|0)Wa[c[(c[d>>2]|0)+16>>2]&127](d)|0;if(a|0){if(c[a+480>>2]|0){Xd(a,e);return}f=e;if((c[a+304>>2]|0)>>>0<=f>>>0?(c[a+308>>2]|0)>>>0>f>>>0:0){f=a+300|0;c[e>>2]=c[f>>2];c[f>>2]=e;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);return}else{f=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);return}}default:return}}function lg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[b+4>>2]|0;a:do if(c[f+4>>2]&16){do if(a|0){d=a+480|0;if(!(c[d>>2]|0)){e=f;if((c[a+304>>2]|0)>>>0>e>>>0)break;if((c[a+308>>2]|0)>>>0<=e>>>0)break;e=a+300|0;c[f>>2]=c[e>>2];c[e>>2]=f}else Xd(a,f);e=14;break a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);e=12;break}else{e=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);e=12;break}}else e=12;while(0);if((e|0)==12)if(a){d=a+480|0;e=14}if((e|0)==14){if(c[d>>2]|0){Xd(a,b);return}f=b;if((c[a+304>>2]|0)>>>0<=f>>>0?(c[a+308>>2]|0)>>>0>f>>>0:0){a=a+300|0;c[b>>2]=c[a>>2];c[a>>2]=b;return}}if(!b)return;if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{a=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-a;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}}function mg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;a:do if((c[b+24>>2]|0)!=0?(f=c[b+20>>2]|0,(f|0)!=0):0){do if(a|0){d=a+480|0;if(!(c[d>>2]|0)){e=f;if((c[a+304>>2]|0)>>>0>e>>>0)break;if((c[a+308>>2]|0)>>>0<=e>>>0)break;e=a+300|0;c[f>>2]=c[e>>2];c[e>>2]=f}else Xd(a,f);e=15;break a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);e=13;break}else{e=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);e=13;break}}else e=13;while(0);if((e|0)==13)if(a){d=a+480|0;e=15}if((e|0)==15){if(c[d>>2]|0){Xd(a,b);return}f=b;if((c[a+304>>2]|0)>>>0<=f>>>0?(c[a+308>>2]|0)>>>0>f>>>0:0){a=a+300|0;c[b>>2]=c[a>>2];c[a>>2]=b;return}}if(!b)return;if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{a=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-a;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}}function ng(a){a=a|0;var b=0,d=0,e=0;b=c[a>>2]|0;e=a+12|0;d=(c[e>>2]|0)+-1|0;c[e>>2]=d;if(d|0)return;d=c[a+8>>2]|0;if(d|0)Wa[c[(c[d>>2]|0)+16>>2]&127](d)|0;if(b|0){if(c[b+480>>2]|0){Xd(b,a);return}e=a;if((c[b+304>>2]|0)>>>0<=e>>>0?(c[b+308>>2]|0)>>>0>e>>>0:0){e=b+300|0;c[a>>2]=c[e>>2];c[e>>2]=a;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return}else{e=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return}}function og(b){b=b|0;var d=0;d=b+81|0;if(a[d>>0]|0?(c[b+180>>2]|0)==0:0){a[d>>0]=0;c[b+264>>2]=0;d=b+272|0;c[d>>2]=(c[d>>2]|0)+-1}c[b+64>>2]=7;Ne(b,7);return}function pg(f){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,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,M=0,N=0;N=Ra;Ra=Ra+64|0;C=N+40|0;F=N+32|0;E=N+24|0;D=N+16|0;z=N+8|0;y=N;B=N+48|0;J=c[f>>2]|0;K=f+20|0;if((c[K>>2]|0)!=770837923){M=0;Ra=N;return M|0}M=J+81|0;if(a[M>>0]|0)c[f+40>>2]=7;i=f+196|0;g=c[i>>2]|0;if(g|0){while(1){h=c[g+4>>2]|0;if(!h)break;else g=h}sg(g)|0;c[i>>2]=0;c[f+204>>2]=0}k=f+96|0;h=c[k>>2]|0;a:do if(h|0?(l=f+28|0,j=c[l>>2]|0,(j|0)>0):0){g=0;i=j;while(1){h=c[h+(g<<2)>>2]|0;if(!h)h=i;else{tg(f,h);c[(c[k>>2]|0)+(g<<2)>>2]=0;h=c[l>>2]|0}g=g+1|0;if((g|0)>=(h|0))break a;i=h;h=c[k>>2]|0}}while(0);g=c[f+88>>2]|0;b:do if(g|0?(m=c[f+24>>2]|0,m|0):0){p=g+(m*40|0)|0;k=c[g+32>>2]|0;l=k+480|0;h=(k|0)==0;m=k+304|0;n=k+308|0;o=k+300|0;if(c[l>>2]|0){if(h)while(1){do if(c[g+24>>2]|0?(q=c[g+20>>2]|0,q|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{G=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}while(0);g=g+40|0;if(g>>>0>=p>>>0)break b}while(1){do if(c[g+24>>2]|0?(r=c[g+20>>2]|0,r|0):0){if(c[l>>2]|0){Xd(k,r);break}G=r;if((c[m>>2]|0)>>>0<=G>>>0?(c[n>>2]|0)>>>0>G>>>0:0){c[r>>2]=c[o>>2];c[o>>2]=r;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{G=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);g=g+40|0;if(g>>>0>=p>>>0)break b}}if(h)while(1){i=g+8|0;if(!(b[i>>1]&9216)){j=g+24|0;if(c[j>>2]|0){h=c[g+20>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{G=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[j>>2]=0}}else Cg(g);b[i>>1]=128;g=g+40|0;if(g>>>0>=p>>>0)break b}do{h=g+8|0;if(!(b[h>>1]&9216)){i=g+24|0;if(c[i>>2]|0){j=c[g+20>>2]|0;do if(!(c[l>>2]|0)){G=j;if((c[m>>2]|0)>>>0<=G>>>0?(c[n>>2]|0)>>>0>G>>>0:0){c[j>>2]=c[o>>2];c[o>>2]=j;break}if(j|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{G=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}else Xd(k,j);while(0);c[i>>2]=0}}else Cg(g);b[h>>1]=128;g=g+40|0}while(g>>>0

        >>0)}while(0);s=f+200|0;g=c[s>>2]|0;if(g|0)do{c[s>>2]=c[g+4>>2];h=g+80|0;j=g+60|0;i=c[j>>2]|0;k=h+(i*40|0)|0;l=g+64|0;if((c[l>>2]|0)>0){i=0;do{tg(c[g>>2]|0,c[k+(i<<2)>>2]|0);i=i+1|0}while((i|0)<(c[l>>2]|0));i=c[j>>2]|0}c:do if(i|0){r=h+(i*40|0)|0;m=c[g+112>>2]|0;n=m+480|0;i=(m|0)==0;o=m+304|0;p=m+308|0;q=m+300|0;if(c[n>>2]|0){if(i)while(1){do if(c[h+24>>2]|0?(t=c[h+20>>2]|0,t|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{G=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}while(0);h=h+40|0;if(h>>>0>=r>>>0)break c}while(1){d:do if(c[h+24>>2]|0?(u=c[h+20>>2]|0,u|0):0){if(c[n>>2]|0){Xd(m,u);break}i=u;do if((c[o>>2]|0)>>>0<=i>>>0){if((c[p>>2]|0)>>>0<=i>>>0)break;c[u>>2]=c[q>>2];c[q>>2]=u;break d}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](u);break}else{G=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);break}}while(0);h=h+40|0;if(h>>>0>=r>>>0)break c}}if(i)while(1){i=h+8|0;if(!(b[i>>1]&9216)){j=h+24|0;if(c[j>>2]|0){k=c[h+20>>2]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{G=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);c[j>>2]=0}}else Cg(h);b[i>>1]=128;h=h+40|0;if(h>>>0>=r>>>0)break c}do{i=h+8|0;if(!(b[i>>1]&9216)){j=h+24|0;if(c[j>>2]|0){k=c[h+20>>2]|0;e:do if(!(c[n>>2]|0)){l=k;do if((c[o>>2]|0)>>>0<=l>>>0){if((c[p>>2]|0)>>>0<=l>>>0)break;c[k>>2]=c[q>>2];c[q>>2]=k;break e}while(0);if(!k)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{G=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}else Xd(m,k);while(0);c[j>>2]=0}}else Cg(h);b[i>>1]=128;h=h+40|0}while(h>>>0>>0)}while(0);j=c[c[g>>2]>>2]|0;o=g+40|0;h=c[o>>2]|0;f:do if(h|0){k=j+480|0;l=j+304|0;m=j+308|0;n=j+300|0;if(!j)while(1){i=c[h+12>>2]|0;if(i|0)ab[i&127](c[h+8>>2]|0);c[o>>2]=c[h+16>>2];if(!(c[7324]|0))ab[c[29344>>2]&127](h);else{G=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h)}h=c[o>>2]|0;if(!h)break f}do{i=c[h+12>>2]|0;if(i|0)ab[i&127](c[h+8>>2]|0);c[o>>2]=c[h+16>>2];do if(!(c[k>>2]|0)){G=h;if((c[l>>2]|0)>>>0<=G>>>0?(c[m>>2]|0)>>>0>G>>>0:0){c[h>>2]=c[n>>2];c[n>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{G=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}else Xd(j,h);while(0);h=c[o>>2]|0}while((h|0)!=0)}while(0);h=c[c[g>>2]>>2]|0;do if(h){if(c[h+480>>2]|0){Xd(h,g);break}G=g;if((c[h+304>>2]|0)>>>0<=G>>>0?(c[h+308>>2]|0)>>>0>G>>>0:0){G=h+300|0;c[g>>2]=c[G>>2];c[G>>2]=g}else H=145}else H=145;while(0);do if((H|0)==145){H=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{G=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);g=c[s>>2]|0}while((g|0)!=0);n=f+216|0;g=c[n>>2]|0;g:do if(g|0){i=c[f>>2]|0;j=i+480|0;k=i+304|0;l=i+308|0;m=i+300|0;if(!i)while(1){h=c[g+12>>2]|0;if(h|0)ab[h&127](c[g+8>>2]|0);c[n>>2]=c[g+16>>2];if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{G=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}g=c[n>>2]|0;if(!g)break g}do{h=c[g+12>>2]|0;if(h|0)ab[h&127](c[g+8>>2]|0);c[n>>2]=c[g+16>>2];do if(!(c[j>>2]|0)){G=g;if((c[k>>2]|0)>>>0<=G>>>0?(c[l>>2]|0)>>>0>G>>>0:0){c[g>>2]=c[m>>2];c[m>>2]=g;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{G=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}else Xd(i,g);while(0);g=c[n>>2]|0}while((g|0)!=0)}while(0);u=f+36|0;if((c[u>>2]|0)>-1){G=f+149|0;if((d[G>>0]|d[G+1>>0]<<8)&512){h=c[f+156>>2]|0;if(h|0?(w=c[f>>2]|0,v=c[w+16>>2]|0,w=c[w+20>>2]|0,(w|0)>0):0){g=0;do{if(((g|0)!=1?1<>2]|0,x|0):0)c[(c[x+4>>2]|0)+4>>2]=c[x>>2];g=g+1|0}while((g|0)!=(w|0))}t=f+40|0;h=c[t>>2]|0;i=h&255;h:do switch(i<<24>>24){case 13:case 7:case 9:case 10:{g=d[G>>0]|d[G+1>>0]<<8;if((h&255|0)!=9|(g&256)==0){switch(i<<24>>24){case 7:case 13:{if(g&128){g=2;i=1;break h}break}default:{}}rg(J,516);i=J+444|0;g=c[i>>2]|0;if(g|0){j=J+480|0;k=J+304|0;l=J+308|0;m=J+300|0;do{c[i>>2]=c[g+24>>2];i:do if(!(c[j>>2]|0)){h=g;do if((c[k>>2]|0)>>>0<=h>>>0){if((c[l>>2]|0)>>>0<=h>>>0)break;c[g>>2]=c[m>>2];c[m>>2]=g;break i}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{x=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}else Xd(J,g);while(0);g=c[i>>2]|0}while((g|0)!=0)}c[J+452>>2]=0;c[J+456>>2]=0;a[J+87>>0]=0;a[J+79>>0]=1;c[f+44>>2]=0;g=0;h=c[t>>2]|0;i=1}else{g=0;i=1}break}default:{g=0;i=0}}while(0);if((h|0)==0?(x=f+64|0,w=c[x+4>>2]|0,(w|0)>0|(w|0)==0&(c[x>>2]|0)>>>0>0):0){c[t>>2]=787;a[f+146>>0]=2;Ag(f,32436,y)}s=J+332|0;h=c[s>>2]|0;if((h|0)>0?(c[J+356>>2]|0)==0:0)H=460;else if((a[J+79>>0]|0)!=0?(c[J+176>>2]|0)==((((d[G>>0]|d[G+1>>0]<<8)&65535)>>>8&1^1)&65535|0):0){if((c[t>>2]|0)!=0?i|(a[f+146>>0]|0)!=3:0){rg(J,0);c[f+44>>2]=0}else H=205;j:do if((H|0)==205){x=c[f>>2]|0;y=x+464|0;x=x+472|0;y=Sv(c[x>>2]|0,c[x+4>>2]|0,c[y>>2]|0,c[y+4>>2]|0)|0;x=L()|0;k:do if((x|0)>0|(x|0)==0&y>>>0>0){c[t>>2]=787;a[f+146>>0]=2;Ag(f,32436,z);if(!((d[G>>0]|d[G+1>>0]<<8)&256)){h=787;break}else g=1;Ra=N;return g|0}else{r=J+356|0;p=c[r>>2]|0;c[r>>2]=0;q=f+124|0;l:do if((h|0)>0){o=0;m:while(1){i=c[(c[p+(o<<2)>>2]|0)+8>>2]|0;do if(i|0){h=c[(c[i>>2]|0)+60>>2]|0;if(!h)break;h=Wa[h&127](i)|0;n=i+8|0;if(c[n>>2]|0){k=c[f>>2]|0;i=c[q>>2]|0;n:do if(i|0){do if(k|0){if(c[k+480>>2]|0){Xd(k,i);break n}j=i;if((c[k+304>>2]|0)>>>0>j>>>0)break;if((c[k+308>>2]|0)>>>0<=j>>>0)break;z=k+300|0;c[i>>2]=c[z>>2];c[z>>2]=i;break n}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{z=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);l=c[n>>2]|0;o:do if(!l)i=0;else{m=(Eu(l)|0)+1|0;p:do if(!k){z=Sv(m|0,0,-1,-1)|0;y=L()|0;if(y>>>0>0|(y|0)==0&z>>>0>2147483390){i=0;break o}if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](m)|0;H=247;break}i=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){z=c[14978]|0;y=Tv(j|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;x=L()|0;c[14768]=((x|0)<0|(x|0)==0&y>>>0<=z>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){i=0;break o}j=Wa[c[29352>>2]&127](i)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0<=(c[14987]|0)>>>0)break;c[14987]=j}else{if(c[k+272>>2]|0){if(a[k+81>>0]|0){i=0;break o}}else{do if(!(0<0|(0==0?(e[k+276>>1]|0)>>>0>>0:0))){j=k+300|0;i=c[j>>2]|0;if(i|0){c[j>>2]=c[i>>2];H=k+284|0;c[H>>2]=(c[H>>2]|0)+1;H=247;break p}j=k+296|0;i=c[j>>2]|0;if(!i){i=k+292|0;break}else{c[j>>2]=c[i>>2];H=k+284|0;c[H>>2]=(c[H>>2]|0)+1;H=247;break p}}else i=k+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(k,m,0)|0;H=247}while(0);if((H|0)==247){H=0;if(!i){i=0;break}}ew(i|0,l|0,m|0)|0}while(0);c[q>>2]=i;i=c[n>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{z=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);c[n>>2]=0}if(h|0)break m}while(0);o=o+1|0;if((o|0)>=(c[s>>2]|0)){H=257;break l}}c[r>>2]=p;H=454}else H=257;while(0);q:do if((H|0)==257){c[r>>2]=p;p=J+20|0;q=J+16|0;o=0;i=0;j=0;while(1){if((o|0)>=(c[p>>2]|0))break;k=c[q>>2]|0;h=c[k+(o<<4)+4>>2]|0;r:do if(!h)h=0;else{if((a[h+8>>0]|0)!=2){h=0;break}j=c[h+4>>2]|0;c[j+4>>2]=c[h>>2];j=c[j>>2]|0;do if((a[k+(o<<4)+8>>0]|0)!=1){if(!(11>>>(d[j+5>>0]|0)&1))break;i=i+((a[j+12>>0]|0)==0&1)|0}while(0);h=c[j+40>>2]|0;if(h|0){j=1;break}if(c[j+216>>2]|0){h=0;j=1;break}k=j+17|0;l=j+13|0;m=j+60|0;n=j+176|0;j=j+180|0;s:while(1){switch(a[k>>0]|0){case 0:case 1:case 2:case 3:case 5:break;default:{h=0;j=1;break r}}if(a[l>>0]|0)break;h=c[m>>2]|0;h=Xa[c[(c[h>>2]|0)+28>>2]&255](h,4)|0;switch(h|0){case 0:break s;case 5:break;default:{j=1;break r}}if(!(Wa[c[n>>2]&127](c[j>>2]|0)|0)){h=5;j=1;break r}}a[k>>0]=4;h=0;j=1}while(0);if(!h)o=o+1|0;else{H=454;break q}}do if(j|0){h=c[J+216>>2]|0;if(!h)break;if(Wa[h&127](c[J+212>>2]|0)|0){h=531;break k}}while(0);j=c[c[(c[(c[q>>2]|0)+4>>2]|0)+4>>2]>>2]|0;k=(a[j+15>>0]|0)==0;if(k){h=c[j+168>>2]|0;if(h|0)H=278}else{h=59952;H=278}do if((H|0)==278){if((i|0)<2|((Eu(h)|0)&1073741823|0)==0)break;n=c[J>>2]|0;if(k){h=c[j+168>>2]|0;if(!h){i=0;h=0}else H=320}else{h=59952;H=320}if((H|0)==320)i=(Eu(h)|0)&1073741823;c[D>>2]=h;o=dd(J,32466,D)|0;t:do if(o){j=o+i|0;k=n+32|0;i=0;u:while(1){do if(i|0){if(i>>>0>100){H=327;break u}if((i|0)!=1)break;c[E>>2]=o;Db(13,32496,E)}while(0);Fb(4,D);h=c[D>>2]|0;c[C>>2]=h>>>8;c[C+4>>2]=h&255;Cb(13,j,32511,C)|0;h=Za[c[k>>2]&127](n,o,0,B)|0;l=(h|0)==0;if(l&(c[B>>2]|0)!=0)i=i+1|0;else{H=329;break}}if((H|0)==327){c[F>>2]=o;Db(13,32482,F);Ya[c[n+28>>2]&127](n,o,0)|0;H=330}else if((H|0)==329)if(l)H=330;v:do if((H|0)==330){k=c[n+4>>2]|0;F=Sv(k|0,((k|0)<0)<<31>>31|0,-1,-1)|0;E=L()|0;if(E>>>0>0|(E|0)==0&F>>>0>2147483390){h=7;break}do if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](k)|0;if(!h){h=7;break v}else m=h}else{h=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){F=c[14978]|0;E=Tv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0;D=L()|0;c[14768]=((D|0)<0|(D|0)==0&E>>>0<=F>>>0)&1}i=Wa[c[29340>>2]&127](h)|0;if(!i){h=7;break v}h=Wa[c[29352>>2]&127](i)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0<=(c[14987]|0)>>>0){m=i;break}c[14987]=h;m=i}while(0);gw(m|0,0,k|0)|0;h=_a[c[n+24>>2]&127](n,o,m,16406,0)|0;if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{H=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}h=c[p>>2]|0;w:do if((h|0)>0){l=0;k=0;j=0;x:while(1){i=c[(c[q>>2]|0)+(l<<4)+4>>2]|0;do if(!i)i=k;else{if((a[i+8>>0]|0)!=2){i=k;break}i=c[(c[c[i+4>>2]>>2]|0)+172>>2]|0;if(!i){i=k;break}h=((Eu(i)|0)&1073741823)+1|0;h=_a[c[(c[m>>2]|0)+12>>2]&127](m,i,h,k,j)|0;if(h|0)break x;i=Sv(k|0,j|0,((Eu(i)|0)&1073741823)+1|0,0)|0;j=L()|0;h=c[p>>2]|0}while(0);l=l+1|0;if((l|0)>=(h|0))break w;else k=i}i=c[m>>2]|0;if(i|0){Wa[c[i+4>>2]&127](m)|0;c[m>>2]=0}if(!(c[7324]|0))ab[c[29344>>2]&127](m);else{H=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m)}Ya[c[n+28>>2]&127](n,o,0)|0;if(c[J+480>>2]|0){Xd(J,o);break t}i=o;do if((c[J+304>>2]|0)>>>0<=i>>>0){if((c[J+308>>2]|0)>>>0<=i>>>0)break;H=J+300|0;c[o>>2]=c[H>>2];c[H>>2]=o;break t}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break t}else{H=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break t}}while(0);do if(!((Wa[c[(c[m>>2]|0)+48>>2]&127](m)|0)&1024)){h=Xa[c[(c[m>>2]|0)+20>>2]&255](m,2)|0;if(!h)break;i=c[m>>2]|0;if(i|0){Wa[c[i+4>>2]&127](m)|0;c[m>>2]=0}if(!(c[7324]|0))ab[c[29344>>2]&127](m);else{H=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m)}Ya[c[n+28>>2]&127](n,o,0)|0;if(c[J+480>>2]|0){Xd(J,o);break t}i=o;do if((c[J+304>>2]|0)>>>0<=i>>>0){if((c[J+308>>2]|0)>>>0<=i>>>0)break;H=J+300|0;c[o>>2]=c[H>>2];c[H>>2]=o;break t}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break t}else{H=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break t}}while(0);i=0;while(1){if((i|0)>=(c[p>>2]|0)){h=0;i=1;break}h=c[(c[q>>2]|0)+(i<<4)+4>>2]|0;if(!h)h=0;else h=cc(h,o)|0;if(!h)i=i+1|0;else{i=0;break}}j=c[m>>2]|0;if(j|0){Wa[c[j+4>>2]&127](m)|0;c[m>>2]=0}if(!(c[7324]|0))ab[c[29344>>2]&127](m);else{F=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m)}if(!i){if(c[J+480>>2]|0){Xd(J,o);break t}i=o;do if((c[J+304>>2]|0)>>>0<=i>>>0){if((c[J+308>>2]|0)>>>0<=i>>>0)break;H=J+300|0;c[o>>2]=c[H>>2];c[H>>2]=o;break t}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break t}else{H=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break t}}h=Ya[c[n+28>>2]&127](n,o,1)|0;n=J+480|0;y:do if(!(c[n>>2]|0)){i=o;do if((c[J+304>>2]|0)>>>0<=i>>>0){if((c[J+308>>2]|0)>>>0<=i>>>0)break;F=J+300|0;c[o>>2]=c[F>>2];c[F>>2]=o;break y}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{F=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}else Xd(J,o);while(0);if(h|0)break t;h=c[p>>2]|0;if((h|0)>0){j=0;do{i=c[(c[q>>2]|0)+(j<<4)+4>>2]|0;if(i){bc(i,1)|0;h=c[p>>2]|0}j=j+1|0}while((j|0)<(h|0))}m=c[r>>2]|0;if(m|0){c[r>>2]=0;if((c[s>>2]|0)>0){k=0;do{l=c[m+(k<<2)>>2]|0;j=l+8|0;h=c[j>>2]|0;do if(h|0){i=c[(c[h>>2]|0)+64>>2]|0;if(!i)break;Wa[i&127](h)|0}while(0);c[l+20>>2]=0;i=c[l>>2]|0;E=l+12|0;F=(c[E>>2]|0)+-1|0;c[E>>2]=F;z:do if(!F){h=c[j>>2]|0;if(h|0)Wa[c[(c[h>>2]|0)+16>>2]&127](h)|0;do if(i|0){if(c[i+480>>2]|0){Xd(i,l);break z}h=l;if((c[i+304>>2]|0)>>>0>h>>>0)break;if((c[i+308>>2]|0)>>>0<=h>>>0)break;F=i+300|0;c[l>>2]=c[F>>2];c[F>>2]=l;break z}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{F=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);k=k+1|0}while((k|0)<(c[s>>2]|0))}A:do if(!(c[n>>2]|0)){h=m;do if((c[J+304>>2]|0)>>>0<=h>>>0){if((c[J+308>>2]|0)>>>0<=h>>>0)break;F=J+300|0;c[m>>2]=c[F>>2];c[F>>2]=m;break A}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{F=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}else Xd(J,m);while(0);c[s>>2]=0}break q}while(0);do if(J|0){if(c[J+480>>2]|0){Xd(J,o);break t}i=o;if((c[J+304>>2]|0)>>>0>i>>>0)break;if((c[J+308>>2]|0)>>>0<=i>>>0)break;H=J+300|0;c[o>>2]=c[H>>2];c[H>>2]=o;break t}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{H=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}else h=7;while(0);H=454;break q}while(0);i=0;while(1){h=c[p>>2]|0;if((i|0)>=(h|0))break;h=c[(c[q>>2]|0)+(i<<4)+4>>2]|0;if(!h)h=0;else h=cc(h,0)|0;if(!h)i=i+1|0;else{H=454;break q}}if((h|0)>0){h=0;do{i=c[(c[q>>2]|0)+(h<<4)+4>>2]|0;if(i|0?(A=bc(i,0)|0,A|0):0){h=A;H=454;break q}h=h+1|0}while((h|0)<(c[p>>2]|0))}m=c[r>>2]|0;if(!m)break;c[r>>2]=0;if((c[s>>2]|0)>0){k=0;do{l=c[m+(k<<2)>>2]|0;j=l+8|0;h=c[j>>2]|0;do if(h|0){i=c[(c[h>>2]|0)+64>>2]|0;if(!i)break;Wa[i&127](h)|0}while(0);c[l+20>>2]=0;i=c[l>>2]|0;E=l+12|0;F=(c[E>>2]|0)+-1|0;c[E>>2]=F;B:do if(!F){h=c[j>>2]|0;if(h|0)Wa[c[(c[h>>2]|0)+16>>2]&127](h)|0;do if(i|0){if(c[i+480>>2]|0){Xd(i,l);break B}h=l;if((c[i+304>>2]|0)>>>0>h>>>0)break;if((c[i+308>>2]|0)>>>0<=h>>>0)break;F=i+300|0;c[l>>2]=c[F>>2];c[F>>2]=l;break B}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{F=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);k=k+1|0}while((k|0)<(c[s>>2]|0))}C:do if(!(c[J+480>>2]|0)){h=m;do if((c[J+304>>2]|0)>>>0<=h>>>0){if((c[J+308>>2]|0)>>>0<=h>>>0)break;F=J+300|0;c[m>>2]=c[F>>2];c[F>>2]=m;break C}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{F=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}else Xd(J,m);while(0);c[s>>2]=0}while(0);D:do if((H|0)==454){switch(h|0){case 0:break D;case 5:break;default:break k}if(!((d[G>>0]|d[G+1>>0]<<8)&256)){h=5;break k}else g=5;Ra=N;return g|0}while(0);E=J+464|0;H=J+32|0;c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;E=H;F=c[E+4>>2]|0;c[H>>2]=c[E>>2]&-524289;c[H+4>>2]=F;H=J+24|0;c[H>>2]=c[H>>2]&-2;break j}while(0);c[t>>2]=h;rg(J,0);c[f+44>>2]=0}while(0);c[J+456>>2]=0;H=476}else H=460;E:do if((H|0)==460)if(!g)if(!(c[t>>2]|0)){g=1;H=477}else{switch(a[f+146>>0]|0){case 3:{g=1;H=477;break E}case 2:{g=2;H=477;break E}default:{}}rg(J,516);j=J+444|0;h=c[j>>2]|0;if(h|0){k=J+480|0;l=J+304|0;m=J+308|0;n=J+300|0;do{c[j>>2]=c[h+24>>2];F:do if(!(c[k>>2]|0)){i=h;do if((c[l>>2]|0)>>>0<=i>>>0){if((c[m>>2]|0)>>>0<=i>>>0)break;c[h>>2]=c[n>>2];c[n>>2]=h;break F}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{H=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}else Xd(J,h);while(0);h=c[j>>2]|0}while((h|0)!=0)}c[J+452>>2]=0;c[J+456>>2]=0;a[J+87>>0]=0;a[J+79>>0]=1;c[f+44>>2]=0;H=476}else H=477;while(0);if((H|0)==476)if(!g)g=0;else H=477;if((H|0)==477)if(((c[(c[f>>2]|0)+456>>2]|0)!=0?(c[f+48>>2]|0)!=0:0)?(I=Bg(f,g)|0,(I|0)!=0):0){H=c[t>>2]|0;if((H|0)==0|(H&255|0)==19){c[t>>2]=I;h=f+124|0;i=c[h>>2]|0;G:do if(i|0){if(c[J+480>>2]|0){Xd(J,i);break}j=i;do if((c[J+304>>2]|0)>>>0<=j>>>0){if((c[J+308>>2]|0)>>>0<=j>>>0)break;I=J+300|0;c[i>>2]=c[I>>2];c[I>>2]=i;break G}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{I=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);c[h>>2]=0}rg(J,516);j=J+444|0;h=c[j>>2]|0;if(h|0){k=J+480|0;l=J+304|0;m=J+308|0;n=J+300|0;do{c[j>>2]=c[h+24>>2];H:do if(!(c[k>>2]|0)){i=h;do if((c[l>>2]|0)>>>0<=i>>>0){if((c[m>>2]|0)>>>0<=i>>>0)break;c[h>>2]=c[n>>2];c[n>>2]=h;break H}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{I=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}else Xd(J,h);while(0);h=c[j>>2]|0}while((h|0)!=0)}c[J+452>>2]=0;c[J+456>>2]=0;a[J+87>>0]=0;a[J+79>>0]=1;c[f+44>>2]=0}if((d[G>>0]|d[G+1>>0]<<8)&32){h=f+44|0;if((g|0)==2)g=0;else{g=c[h>>2]|0;I=J+104|0;c[I>>2]=(c[I>>2]|0)+g}c[J+100>>2]=g;c[h>>2]=0}}if((c[u>>2]|0)>-1){g=J+168|0;c[g>>2]=(c[g>>2]|0)+-1;g=d[G>>0]|d[G+1>>0]<<8;if(!(g&256)){g=J+176|0;c[g>>2]=(c[g>>2]|0)+-1;g=d[G>>0]|d[G+1>>0]<<8}if(g&512){J=J+172|0;c[J>>2]=(c[J>>2]|0)+-1}}}c[K>>2]=832317811;g=f+40|0;if(!(a[M>>0]|0)){M=(c[g>>2]|0)==5?5:0;Ra=N;return M|0}else{c[g>>2]=7;M=0;Ra=N;return M|0}return 0}function qg(d){d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=c[d>>2]|0;l=c[d+40>>2]|0;i=d+124|0;if(!(c[i>>2]|0)){d=c[k+260>>2]|0;if(!d){k=k+64|0;c[k>>2]=l;return l|0}f=d+8|0;if(!(b[f>>1]&9216)){b[f>>1]=1;k=k+64|0;c[k>>2]=l;return l|0}else{Dg(d);k=k+64|0;c[k>>2]=l;return l|0}}j=k+82|0;a[j>>0]=(a[j>>0]|0)+1<<24>>24;h=k+260|0;d=c[h>>2]|0;do if(!d){a:do if(c[k+272>>2]|0){if(!(a[k+81>>0]|0))g=13}else{do if((e[k+276>>1]|0)>=40){d=k+300|0;f=c[d>>2]|0;if(f|0){c[d>>2]=c[f>>2];g=k+284|0;c[g>>2]=(c[g>>2]|0)+1;g=14;break a}d=k+296|0;f=c[d>>2]|0;if(!f){d=k+292|0;break}else{c[d>>2]=c[f>>2];g=k+284|0;c[g>>2]=(c[g>>2]|0)+1;g=14;break a}}else d=k+288|0;while(0);c[d>>2]=(c[d>>2]|0)+1;g=13}while(0);if((g|0)==13){f=_d(k,40,0)|0;g=14}if((g|0)==14?f|0:0){d=f;g=d+40|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(g|0));b[f+8>>1]=1;c[f+32>>2]=k;c[h>>2]=f;d=f;g=17;break}c[h>>2]=0}else g=17;while(0);if((g|0)==17)yc(d,c[i>>2]|0,-1,1,-1)|0;a[j>>0]=(a[j>>0]|0)+-1<<24>>24;k=k+64|0;c[k>>2]=l;return l|0}function rg(b,e){b=b|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;m=b+20|0;l=c[m>>2]|0;i=(l|0)>0;if(i){g=c[b+16>>2]|0;f=0;do{h=c[g+(f<<4)+4>>2]|0;if(h|0)c[(c[h+4>>2]|0)+4>>2]=c[h>>2];f=f+1|0}while((f|0)!=(l|0))}if(!(c[b+24>>2]&1))n=0;else n=(a[b+165>>0]|0)==0;if(i){j=b+16|0;k=(n^1)&1;f=0;i=0;h=l;while(1){g=c[(c[j>>2]|0)+(i<<4)+4>>2]|0;if(!g)g=h;else{f=(a[g+8>>0]|0)==2?1:f;ec(g,e,k);g=c[m>>2]|0}i=i+1|0;if((i|0)>=(g|0)){e=f;break}else h=g}}else e=0;f=b+356|0;l=c[f>>2]|0;if(l|0){c[f>>2]=0;j=b+332|0;if((c[j>>2]|0)>0){i=0;do{k=c[l+(i<<2)>>2]|0;g=k+8|0;f=c[g>>2]|0;if(f|0?(o=c[(c[f>>2]|0)+68>>2]|0,o|0):0)Wa[o&127](f)|0;c[k+20>>2]=0;h=c[k>>2]|0;f=k+12|0;m=(c[f>>2]|0)+-1|0;c[f>>2]=m;do if(!m){f=c[g>>2]|0;if(f|0)Wa[c[(c[f>>2]|0)+16>>2]&127](f)|0;if(h|0){if(c[h+480>>2]|0){Xd(h,k);break}m=k;if((c[h+304>>2]|0)>>>0<=m>>>0?(c[h+308>>2]|0)>>>0>m>>>0:0){m=h+300|0;c[k>>2]=c[m>>2];c[m>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{m=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);i=i+1|0}while((i|0)<(c[j>>2]|0))}do if(!(c[b+480>>2]|0)){o=l;if((c[b+304>>2]|0)>>>0<=o>>>0?(c[b+308>>2]|0)>>>0>o>>>0:0){o=b+300|0;c[l>>2]=c[o>>2];c[o>>2]=l;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{o=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}else Xd(b,l);while(0);c[j>>2]=0}if(n){f=c[b+4>>2]|0;if(f|0)do{o=f+149|0;n=(d[o>>0]|d[o+1>>0]<<8)&-4|1;a[o>>0]=n;a[o+1>>0]=n>>8;f=c[f+8>>2]|0}while((f|0)!=0);$b(b)}n=b+464|0;f=b+32|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;n=f;o=c[n+4>>2]|0;c[f>>2]=c[n>>2]&-524289;c[f+4>>2]=o;f=c[b+224>>2]|0;if(!f)return;if((e|0)==0?a[b+79>>0]|0:0)return;ab[f&127](c[b+220>>2]|0);return}function sg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=c[a>>2]|0;g=h+96|0;e=c[g>>2]|0;f=h+28|0;a:do if(e|0?(d=c[f>>2]|0,(d|0)>0):0){b=0;while(1){e=c[e+(b<<2)>>2]|0;if(e){tg(h,e);c[(c[g>>2]|0)+(b<<2)>>2]=0;d=c[f>>2]|0}b=b+1|0;if((b|0)>=(d|0))break a;e=c[g>>2]|0}}while(0);c[h+104>>2]=c[a+8>>2];c[h+108>>2]=c[a+52>>2];c[h+88>>2]=c[a+16>>2];c[h+24>>2]=c[a+56>>2];c[g>>2]=c[a+20>>2];c[f>>2]=c[a+44>>2];g=a+32|0;b=c[g+4>>2]|0;i=c[h>>2]|0;j=i+40|0;c[j>>2]=c[g>>2];c[j+4>>2]=b;c[h+44>>2]=c[a+68>>2];c[i+100>>2]=c[a+72>>2];j=h+216|0;b=c[j>>2]|0;if(!b){i=a+40|0;h=c[i>>2]|0;c[j>>2]=h;c[i>>2]=0;a=a+48|0;a=c[a>>2]|0;return a|0}e=i+480|0;f=i+304|0;g=i+308|0;h=i+300|0;if(!i){do{d=c[b+12>>2]|0;if(d|0)ab[d&127](c[b+8>>2]|0);c[j>>2]=c[b+16>>2];if(!(c[7324]|0))ab[c[29344>>2]&127](b);else{i=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b)}b=c[j>>2]|0}while((b|0)!=0);i=a+40|0;h=c[i>>2]|0;c[j>>2]=h;c[i>>2]=0;a=a+48|0;a=c[a>>2]|0;return a|0}do{d=c[b+12>>2]|0;if(d|0)ab[d&127](c[b+8>>2]|0);c[j>>2]=c[b+16>>2];do if(!(c[e>>2]|0)){d=b;if((c[f>>2]|0)>>>0<=d>>>0?(c[g>>2]|0)>>>0>d>>>0:0){c[b>>2]=c[h>>2];c[h>>2]=b;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}}else Xd(i,b);while(0);b=c[j>>2]|0}while((b|0)!=0);i=a+40|0;h=c[i>>2]|0;c[j>>2]=h;c[i>>2]=0;a=a+48|0;a=c[a>>2]|0;return a|0}function tg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;if(!d)return;switch(a[d>>0]|0){case 1:{f=c[b>>2]|0;b=d+40|0;d=c[b>>2]|0;if(!d)return;wg(f,d);e=c[d+40>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{h=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);do if(f){if(c[f+480>>2]|0){Xd(f,d);break}h=d;if((c[f+304>>2]|0)>>>0<=h>>>0?(c[f+308>>2]|0)>>>0>h>>>0:0){h=f+300|0;c[d>>2]=c[h>>2];c[h>>2]=d}else g=14}else g=14;while(0);do if((g|0)==14)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{h=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);c[b>>2]=0;return}case 0:{if(!(a[d+5>>0]&1)){vg(c[d+40>>2]|0);return}b=c[d+8>>2]|0;if(!b)return;ug(b);return}case 2:{h=c[d+40>>2]|0;f=c[h>>2]|0;g=c[f>>2]|0;f=f+4|0;c[f>>2]=(c[f>>2]|0)+-1;Wa[c[g+28>>2]&127](h)|0;return}default:return}}function ug(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=c[b+4>>2]|0;c[i+4>>2]=c[b>>2];d=c[i+8>>2]|0;if(d|0)do{e=d;d=c[d+24>>2]|0;if((c[e+8>>2]|0)==(b|0))vg(e)}while((d|0)!=0);ec(b,0,0);a:do if(a[b+9>>0]|0){e=i+64|0;f=c[e>>2]|0;c[e>>2]=f+-1;if((f|0)<2){d=c[14822]|0;if((d|0)==(i|0)){c[14822]=c[i+68>>2];h=15;break}if(!d)h=15;else{while(1){e=c[d+68>>2]|0;if((e|0)==(i|0))break;if(!e){h=15;break a}else d=e}c[d+68>>2]=c[i+68>>2];h=15}}}else h=15;while(0);do if((h|0)==15){Te(c[i>>2]|0,c[b>>2]|0);e=c[i+52>>2]|0;d=i+48|0;if(e){f=c[d>>2]|0;if(f|0){ab[e&127](f);h=18}}else h=18;do if((h|0)==18?(g=c[d>>2]|0,g|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{f=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);f=i+80|0;d=c[f>>2]|0;if(d|0){e=d+-4|0;c[f>>2]=e;d=e;do if((c[14816]|0)>>>0<=d>>>0)if((c[14817]|0)>>>0>d>>>0){c[14979]=(c[14979]|0)+-1;c[e>>2]=c[14819];c[14819]=e;g=(c[14820]|0)+1|0;c[14820]=g;c[14821]=(g|0)<(c[14815]|0)&1;break}else{d=Wa[c[29352>>2]&127](e)|0;h=28;break}else{d=Wa[c[29352>>2]&127](e)|0;h=28}while(0);do if((h|0)==28){c[14980]=(c[14980]|0)-d;if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{h=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);c[f>>2]=0}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{h=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);e=c[b+28>>2]|0;d=b+24|0;if(e|0)c[e+24>>2]=c[d>>2];d=c[d>>2]|0;if(d|0)c[d+28>>2]=e;if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{i=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}}function vg(d){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;m=d+8|0;e=c[m>>2]|0;if(!e)return;i=c[d+20>>2]|0;c[(c[e+4>>2]|0)+4>>2]=c[e>>2];f=i+8|0;e=c[f>>2]|0;a:do if((e|0)==(d|0))c[f>>2]=c[d+24>>2];else{while(1){f=c[e+24>>2]|0;if((f|0)==(d|0))break;if(!f)break a;else e=f}c[e+24>>2]=c[d+24>>2]}while(0);h=d+68|0;e=a[h>>0]|0;if(e<<24>>24>-1){if(e<<24>>24){g=0;do{f=c[(c[d+120+(g<<2)>>2]|0)+72>>2]|0;if(!(b[f+28>>1]&32)){Df(f);e=a[h>>0]|0}else{n=c[f+20>>2]|0;o=n+120|0;c[o>>2]=(c[o>>2]|0)+-1;n=n+136|0;c[f+16>>2]=c[n>>2];c[n>>2]=f}g=g+1|0}while((g|0)<(e<<24>>24|0))}e=c[(c[d+116>>2]|0)+72>>2]|0;if(!(b[e+28>>1]&32))Df(e);else{o=c[e+20>>2]|0;n=o+120|0;c[n>>2]=(c[n>>2]|0)+-1;o=o+136|0;c[e+16>>2]=c[o>>2];c[o>>2]=e}a[h>>0]=-1}if(((a[i+20>>0]|0)==0?(j=i+12|0,k=c[j>>2]|0,k|0):0)?(c[j>>2]=0,o=c[k+72>>2]|0,l=c[o+20>>2]|0,Df(o),(c[(c[l+212>>2]|0)+12>>2]|0)==0):0){switch(a[l+16>>0]|0){case 0:case 6:break;case 1:{if(!(a[l+4>>0]|0))uf(l,0,0)|0;break}default:tf(l)|0}vf(l)}e=c[d+12>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{o=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);e=c[d+16>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{o=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);c[m>>2]=0;return}function wg(b,e){b=b|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;k=e+20|0;l=c[k>>2]|0;do if(l|0){if((c[l>>2]|0)>0){m=l+12|0;j=0;do{h=c[m>>2]|0;i=h+(j*56|0)|0;g=c[h+(j*56|0)+28>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{p=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);g=c[h+(j*56|0)+36>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{p=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);g=c[h+(j*56|0)+48>>2]|0;do if(g|0){xg(c[g+4>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{p=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);g=i+56|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(g|0));j=j+1|0}while((j|0)<(c[l>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{p=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[k>>2]=0;k=e+59|0;if(a[k>>0]|0){l=(b|0)==0;m=b+480|0;n=b+304|0;o=b+308|0;p=b+300|0;j=0;do{i=e+64+(j*72|0)|0;g=c[e+64+(j*72|0)+12>>2]|0;do if(g|0){if(!l){if(c[m>>2]|0){Xd(b,g);break}h=g;if((c[n>>2]|0)>>>0<=h>>>0?(c[o>>2]|0)>>>0>h>>>0:0){c[g>>2]=c[p>>2];c[p>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{h=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);g=c[e+64+(j*72|0)+16>>2]|0;if(g|0)do{h=g;g=c[g+4>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](h);else{q=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h)}}while((g|0)!=0);g=c[e+64+(j*72|0)+40>>2]|0;do if(g|0){h=c[g>>2]|0;if(h|0){Wa[c[h+4>>2]&127](g)|0;c[g>>2]=0}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{q=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);g=c[e+64+(j*72|0)+56>>2]|0;do if(g|0){h=c[g>>2]|0;if(h|0){Wa[c[h+4>>2]&127](g)|0;c[g>>2]=0}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{q=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);g=i+72|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(g|0));c[e+64+(j*72|0)+8>>2]=e;j=j+1|0}while(j>>>0<(d[k>>0]|0)>>>0)}h=e+36|0;if((c[e+40>>2]|0)==0?(f=c[h>>2]|0,f|0):0)do{g=f;f=c[f+4>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{q=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}}while((f|0)!=0);c[h>>2]=0;c[e+44>>2]=0;a[e+56>>0]=0;c[e+48>>2]=0;c[e+8>>2]=0;f=e+32|0;g=c[f>>2]|0;if(!g){c[f>>2]=0;return}if(b|0){if(c[b+480>>2]|0){Xd(b,g);c[f>>2]=0;return}q=g;if((c[b+304>>2]|0)>>>0<=q>>>0?(c[b+308>>2]|0)>>>0>q>>>0:0){q=b+300|0;c[g>>2]=c[q>>2];c[q>>2]=g;c[f>>2]=0;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);c[f>>2]=0;return}else{q=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);c[f>>2]=0;return}}function xg(a){a=a|0;var b=0,d=0;if(!a)return;if((c[a>>2]|0)>0){d=a+12|0;b=0;do{yg((c[d>>2]|0)+(b*56|0)|0);b=b+1|0}while((b|0)<(c[a>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return}}function yg(a){a=a|0;var b=0,d=0;b=c[a+28>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);b=c[a+36>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);zg(c[a+48>>2]|0);b=a;a=b+56|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(a|0));return}function zg(a){a=a|0;var b=0;if(!a)return;xg(c[a+4>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return}else{b=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return}}function Ag(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;n=Ra;Ra=Ra+112|0;h=n+16|0;l=n+88|0;k=n;f=c[b>>2]|0;m=b+124|0;g=c[m>>2]|0;do if(g|0){if(f|0){if(c[f+480>>2]|0){Xd(f,g);break}j=g;if((c[f+304>>2]|0)>>>0<=j>>>0?(c[f+308>>2]|0)>>>0>j>>>0:0){j=f+300|0;c[g>>2]=c[j>>2];c[j>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{j=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[k>>2]=e;j=c[b>>2]|0;g=c[j+108>>2]|0;i=l+4|0;c[i>>2]=h;c[l>>2]=j;c[l+8>>2]=70;f=l+12|0;c[f>>2]=g;g=l+16|0;c[g>>2]=0;h=l+20|0;a[h>>0]=0;e=l+21|0;a[e>>0]=1;tb(l,d,k);b=c[i>>2]|0;if(((b|0)!=0?(a[b+(c[g>>2]|0)>>0]=0,(c[f>>2]|0)!=0):0)?(a[e>>0]&4)==0:0)f=$d(l)|0;else f=c[i>>2]|0;if((a[h>>0]|0)!=7){c[m>>2]=f;Ra=n;return}b=j+81|0;if(a[b>>0]|0){c[m>>2]=f;Ra=n;return}if(a[j+82>>0]|0){c[m>>2]=f;Ra=n;return}a[b>>0]=1;if((c[j+180>>2]|0)>0)c[j+264>>2]=1;b=j+272|0;c[b>>2]=(c[b>>2]|0)+1;b=c[j+236>>2]|0;if(!b){c[m>>2]=f;Ra=n;return}c[b+12>>2]=7;c[m>>2]=f;Ra=n;return}function Bg(e,f){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;t=c[e>>2]|0;q=e+48|0;r=c[q>>2]|0;s=r+-1|0;p=t+20|0;h=c[p>>2]|0;if((h|0)>0){n=t+16|0;o=(r|0)<1;if((f|0)==2){l=0;g=0;do{k=c[(c[n>>2]|0)+(l<<4)+4>>2]|0;if(k){i=k+8|0;do if((a[i>>0]|0)==2){j=c[k+4>>2]|0;c[j+4>>2]=c[k>>2];h=c[j+8>>2]|0;if(h|0?(m=$f(h,0,0)|0,m|0):0){h=m;break}h=wf(c[j>>2]|0,2,s)|0;if(!h){if(o?b[j+22>>1]&16:0)c[j+44>>2]=0;h=Rf(j)|0;u=c[(c[j+12>>2]|0)+56>>2]|0;c[j+44>>2]=d[u+29>>0]<<16|d[u+28>>0]<<24|d[u+30>>0]<<8|d[u+31>>0];if(!h)if((a[i>>0]|0)==2){i=c[k+4>>2]|0;c[i+4>>2]=c[k>>2];h=wf(c[i>>2]|0,1,s)|0;if(!h){if(o?b[i+22>>1]&16:0)c[i+44>>2]=0;h=Rf(i)|0;u=c[(c[i+12>>2]|0)+56>>2]|0;c[i+44>>2]=d[u+29>>0]<<16|d[u+28>>0]<<24|d[u+30>>0]<<8|d[u+31>>0]}}else h=0}}else h=0;while(0);g=(g|0)==0?h:g;h=c[p>>2]|0}l=l+1|0}while((l|0)<(h|0))}else{k=0;g=0;do{i=c[(c[n>>2]|0)+(k<<4)+4>>2]|0;if(i){if((a[i+8>>0]|0)==2){j=c[i+4>>2]|0;c[j+4>>2]=c[i>>2];h=wf(c[j>>2]|0,1,s)|0;if(!h){if(o?b[j+22>>1]&16:0)c[j+44>>2]=0;h=Rf(j)|0;u=c[(c[j+12>>2]|0)+56>>2]|0;c[j+44>>2]=d[u+29>>0]<<16|d[u+28>>0]<<24|d[u+30>>0]<<8|d[u+31>>0]}}else h=0;g=(g|0)==0?h:g;h=c[p>>2]|0}k=k+1|0}while((k|0)<(h|0))}u=t+456|0;c[u>>2]=(c[u>>2]|0)+-1;c[q>>2]=0;if(!g)h=33;else h=76}else{h=t+456|0;c[h>>2]=(c[h>>2]|0)+-1;c[q>>2]=0;h=33}a:do if((h|0)==33){o=t+356|0;b:do if((f|0)==2){if(!(c[o>>2]|0)){g=0;break a}n=t+332|0;m=0;while(1){if((m|0)>=(c[n>>2]|0))break b;l=c[(c[o>>2]|0)+(m<<2)>>2]|0;g=c[c[l+4>>2]>>2]|0;j=l+8|0;i=c[j>>2]|0;do if((i|0)!=0?(c[g>>2]|0)>1:0){k=l+12|0;h=(c[k>>2]|0)+1|0;c[k>>2]=h;g=c[g+88>>2]|0;if((g|0)!=0?(c[l+20>>2]|0)>=(r|0):0){g=Xa[g&255](i,s)|0;h=c[k>>2]|0}else g=0;i=c[l>>2]|0;u=h+-1|0;c[k>>2]=u;if(!u){h=c[j>>2]|0;if(h|0)Wa[c[(c[h>>2]|0)+16>>2]&127](h)|0;if(i|0){if(c[i+480>>2]|0){Xd(i,l);break}u=l;if((c[i+304>>2]|0)>>>0<=u>>>0?(c[i+308>>2]|0)>>>0>u>>>0:0){u=i+300|0;c[l>>2]=c[u>>2];c[u>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{u=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}}else g=0;while(0);if(!g)m=m+1|0;else{h=76;break a}}}while(0);if(!(c[o>>2]|0)){g=0;h=76}else{n=t+332|0;m=0;while(1){if((m|0)>=(c[n>>2]|0)){g=0;h=76;break a}l=c[(c[o>>2]|0)+(m<<2)>>2]|0;g=c[c[l+4>>2]>>2]|0;j=l+8|0;i=c[j>>2]|0;do if((i|0)!=0?(c[g>>2]|0)>1:0){k=l+12|0;h=(c[k>>2]|0)+1|0;c[k>>2]=h;g=c[g+84>>2]|0;if((g|0)!=0?(c[l+20>>2]|0)>=(r|0):0){g=Xa[g&255](i,s)|0;h=c[k>>2]|0}else g=0;i=c[l>>2]|0;u=h+-1|0;c[k>>2]=u;if(!u){h=c[j>>2]|0;if(h|0)Wa[c[(c[h>>2]|0)+16>>2]&127](h)|0;if(i|0){if(c[i+480>>2]|0){Xd(i,l);break}u=l;if((c[i+304>>2]|0)>>>0<=u>>>0?(c[i+308>>2]|0)>>>0>u>>>0:0){u=i+300|0;c[l>>2]=c[u>>2];c[u>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{u=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}}else g=0;while(0);if(!g)m=m+1|0;else{h=76;break}}}}while(0);if((h|0)==76)if((f|0)!=2){u=g;return u|0}s=e+72|0;u=c[s+4>>2]|0;f=t+464|0;c[f>>2]=c[s>>2];c[f+4>>2]=u;f=e+80|0;e=c[f+4>>2]|0;u=t+472|0;c[u>>2]=c[f>>2];c[u+4>>2]=e;u=g;return u|0}function Cg(a){a=a|0;var d=0,e=0,f=0,g=0,h=0;if(b[a+8>>1]&9216)Dg(a);e=a+24|0;if(!(c[e>>2]|0)){g=a+16|0;c[g>>2]=0;return}f=c[a+32>>2]|0;d=c[a+20>>2]|0;do if(f){if(c[f+480>>2]|0){Xd(f,d);break}h=d;if((c[f+304>>2]|0)>>>0<=h>>>0?(c[f+308>>2]|0)>>>0>h>>>0:0){h=f+300|0;c[d>>2]=c[h>>2];c[h>>2]=d}else g=10}else g=10;while(0);do if((g|0)==10?d|0:0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{h=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);c[e>>2]=0;h=a+16|0;c[h>>2]=0;return}function Dg(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=Ra;Ra=Ra+80|0;h=k+40|0;i=k;j=a+8|0;d=b[j>>1]|0;if(d&8192){e=c[a>>2]|0;f=h+12|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;f=i;g=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));b[i+8>>1]=1;d=a+32|0;c[i+32>>2]=c[d>>2];c[h>>2]=i;c[h+8>>2]=a;c[h+4>>2]=e;ab[c[e+20>>2]&127](h);do if((c[a+24>>2]|0)>0){d=c[d>>2]|0;e=c[a+20>>2]|0;if(d|0){if(c[d+480>>2]|0){Xd(d,e);break}h=e;if((c[d+304>>2]|0)>>>0<=h>>>0?(c[d+308>>2]|0)>>>0>h>>>0:0){h=d+300|0;c[e>>2]=c[h>>2];c[h>>2]=e;break}}if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{h=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);f=a;d=i;g=f+40|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(g|0));d=b[j>>1]|0}if(!(d&1024)){b[j>>1]=1;Ra=k;return}ab[c[a+36>>2]&127](c[a+16>>2]|0);b[j>>1]=1;Ra=k;return}function Eg(d,f,g){d=d|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;p=d+24|0;h=(c[p>>2]|0)>0;if((g|0)!=0&h?(m=d+16|0,j=c[m>>2]|0,k=d+20|0,(j|0)==(c[k>>2]|0)):0){l=c[d+32>>2]|0;g=((f|0)<0)<<31>>31;i=(j|0)==0;a:do if(!i){h=j;if(((c[l+304>>2]|0)>>>0<=h>>>0?(c[l+308>>2]|0)>>>0>h>>>0:0)?!(0>>0|(0==(g|0)?(e[l+276>>1]|0)>>>0>>0:0)):0){h=j;break}h=Zd(l,j,f,g)|0;if(!(i|(h|0)!=0)){if(c[l+480>>2]|0){Xd(l,j);h=0;break}f=j;if((c[l+304>>2]|0)>>>0<=f>>>0?(c[l+308>>2]|0)>>>0>f>>>0:0){h=l+300|0;c[j>>2]=c[h>>2];c[h>>2]=j;h=0;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);h=0;break}else{h=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);h=0;break}}}else{if(c[l+272>>2]|0){if(a[l+81>>0]|0){h=0;break}}else{do if(!(0>>0|(0==(g|0)?(e[l+276>>1]|0)>>>0>>0:0))){i=l+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];f=l+284|0;c[f>>2]=(c[f>>2]|0)+1;break a}i=l+296|0;h=c[i>>2]|0;if(!h){h=l+292|0;break}else{c[i>>2]=c[h>>2];f=l+284|0;c[f>>2]=(c[f>>2]|0)+1;break a}}else h=l+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(l,f,g)|0}while(0);c[k>>2]=h;c[m>>2]=h;j=0}else{j=d+32|0;do if(h){h=c[j>>2]|0;i=c[d+20>>2]|0;if(h|0){if(c[h+480>>2]|0){Xd(h,i);break}m=i;if((c[h+304>>2]|0)>>>0<=m>>>0?(c[h+308>>2]|0)>>>0>m>>>0:0){m=h+300|0;c[i>>2]=c[m>>2];c[m>>2]=i;break}}if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{m=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);j=c[j>>2]|0;k=((f|0)<0)<<31>>31;b:do if(!j){m=Sv(f|0,k|0,-1,-1)|0;l=L()|0;if(!(l>>>0>0|(l|0)==0&m>>>0>2147483390)){if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](f)|0;break}j=Wa[c[29356>>2]&127](f)|0;if((c[14985]|0)>>>0>>0)c[14985]=f;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){f=c[14978]|0;m=Tv(h|0,i|0,j|0,((j|0)<0)<<31>>31|0)|0;l=L()|0;c[14768]=((l|0)<0|(l|0)==0&m>>>0<=f>>>0)&1}i=Wa[c[29340>>2]&127](j)|0;if(i){h=Wa[c[29352>>2]&127](i)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0){c[14987]=h;h=i}else h=i}else h=0}else h=0}else{if(c[j+272>>2]|0){if(a[j+81>>0]|0){h=0;break}}else{do if(!(0>>0|(0==(k|0)?(e[j+276>>1]|0)>>>0>>0:0))){i=j+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];f=j+284|0;c[f>>2]=(c[f>>2]|0)+1;break b}i=j+296|0;h=c[i>>2]|0;if(!h){h=j+292|0;break}else{c[i>>2]=c[h>>2];f=j+284|0;c[f>>2]=(c[f>>2]|0)+1;break b}}else h=j+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(j,f,k)|0}while(0);k=d+20|0;c[k>>2]=h;j=g}if(!h){h=d+8|0;if(!(b[h>>1]&9216))b[h>>1]=1;else Dg(d);c[d+16>>2]=0;c[p>>2]=0;d=7;return d|0}i=c[d+32>>2]|0;if(((i|0)!=0?(n=h,(c[i+304>>2]|0)>>>0<=n>>>0):0)?(c[i+308>>2]|0)>>>0>n>>>0:0)h=e[i+276>>1]|0;else h=Wa[c[29352>>2]&127](h)|0;c[p>>2]=h;if(j|0?(o=c[d+16>>2]|0,o|0):0)ew(c[k>>2]|0,o|0,c[d+12>>2]|0)|0;j=d+8|0;h=b[j>>1]|0;if(!(h&1024))i=d+16|0;else{i=d+16|0;ab[c[d+36>>2]&127](c[i>>2]|0);h=b[j>>1]|0}c[i>>2]=c[k>>2];b[j>>1]=h&-7169;d=0;return d|0}function Fg(a,b){a=a|0;b=b|0;if(!(Gg(a,b)|0)){b=0;return b|0}b=c[a+12>>2]|0;return b|0}function Gg(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=e+8|0;g=b[l>>1]|0;h=g&65535;if(h&18){do if(h&16384){i=e+12|0;h=(c[e>>2]|0)+(c[i>>2]|0)|0;if((h|0)<1)if(!(g&16))break;else g=1;else g=h;if(!(Eg(e,g,1)|0)){gw((c[e+16>>2]|0)+(c[i>>2]|0)|0,0,c[e>>2]|0)|0;c[i>>2]=(c[i>>2]|0)+(c[e>>2]|0);g=b[l>>1]&-16897;b[l>>1]=g;break}else{f=0;return f|0}}while(0);b[l>>1]=g|2;g=e+10|0;h=f&255;i=h&247;if((i|0)!=(d[g>>0]|0))Ig(e,i&255)|0;if(h&8|0?(k=e+16|0,c[k>>2]&1|0):0){h=b[l>>1]|0;i=h&65535;do if(i&18){do if(i&16384){j=e+12|0;i=(c[e>>2]|0)+(c[j>>2]|0)|0;if((i|0)<1)if(!(h&16))break;else h=1;else h=i;if(!(Eg(e,h,1)|0)){gw((c[k>>2]|0)+(c[j>>2]|0)|0,0,c[e>>2]|0)|0;c[j>>2]=(c[j>>2]|0)+(c[e>>2]|0);h=b[l>>1]&-16897;b[l>>1]=h;break}else{f=0;return f|0}}while(0);if(c[e+24>>2]|0?(c[k>>2]|0)==(c[e+20>>2]|0):0)break;if(!(Jg(e)|0)){h=b[l>>1]|0;break}else{f=0;return f|0}}while(0);b[l>>1]=h&-4097}if((b[l>>1]&514)==2)Jg(e)|0}else{Hg(e,f,0)|0;g=e+10|0}if((a[g>>0]|0)!=(f&-9)<<24>>24){f=0;return f|0}f=c[e+16>>2]|0;return f|0}function Hg(d,e,f){d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=Ra;Ra=Ra+16|0;m=n+8|0;l=n;j=d+8|0;k=b[j>>1]|0;do if((c[d+24>>2]|0)<32){if(!(Eg(d,32,0)|0)){i=d+16|0;h=i;i=c[i>>2]|0;break}a[d+10>>0]=0;m=7;Ra=n;return m|0}else{i=c[d+20>>2]|0;h=d+16|0;c[h>>2]=i;b[j>>1]=k&13}while(0);if(!(k&4)){g[m>>3]=+g[d>>3];Cb(32,i,32529,m)|0}else{o=d;k=c[o+4>>2]|0;m=l;c[m>>2]=c[o>>2];c[m+4>>2]=k;Cb(32,i,32524,l)|0}o=(Eu(c[h>>2]|0)|0)&1073741823;c[d+12>>2]=o;a[d+10>>0]=1;o=b[j>>1]|514;b[j>>1]=f<<24>>24==0?o:o&-13;if(e<<24>>24==1){o=0;Ra=n;return o|0}Ig(d,e)|0;o=0;Ra=n;return o|0}function Ig(f,g){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;w=f+10|0;h=g<<24>>24==1;if(!(h|(a[w>>0]|0)==1)){k=f+8|0;h=b[k>>1]|0;i=h&65535;do if(i&18){do if(i&16384){j=f+12|0;i=(c[f>>2]|0)+(c[j>>2]|0)|0;if((i|0)<1)if(!(h&16))break;else h=1;else h=i;if(!(Eg(f,h,1)|0)){gw((c[f+16>>2]|0)+(c[j>>2]|0)|0,0,c[f>>2]|0)|0;c[j>>2]=(c[j>>2]|0)+(c[f>>2]|0);h=b[k>>1]&-16897;b[k>>1]=h;break}else{w=7;return w|0}}while(0);if(c[f+24>>2]|0?(c[f+16>>2]|0)==(c[f+20>>2]|0):0)break;if(!(Jg(f)|0)){h=b[k>>1]|0;break}else{w=7;return w|0}}while(0);b[k>>1]=h&-4097;h=c[f+16>>2]|0;f=c[f+12>>2]&-2;i=h+f|0;if((f|0)>0)do{v=a[h>>0]|0;f=h+1|0;a[h>>0]=a[f>>0]|0;h=h+2|0;a[f>>0]=v}while(h>>>0>>0);a[w>>0]=g;w=0;return w|0}s=f+12|0;i=c[s>>2]|0;if(h){i=i&-2;c[s>>2]=i;n=cw(i|0,((i|0)<0)<<31>>31|0,1)|0;m=L()|0;n=n|1}else{n=cw(i|0,((i|0)<0)<<31>>31|0,1)|0;n=Sv(n|0,L()|0,2,0)|0;m=L()|0}t=f+16|0;k=c[t>>2]|0;r=k+i|0;u=f+32|0;l=c[u>>2]|0;a:do if(!l){q=Sv(n|0,m|0,-1,-1)|0;p=L()|0;if(p>>>0>0|(p|0)==0&q>>>0>2147483390){w=7;return w|0}if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](n)|0;o=43;break}l=Wa[c[29356>>2]&127](n)|0;if((c[14985]|0)>>>0>>0)c[14985]=n;j=59064;h=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&h>>>0>0){q=c[14978]|0;p=Tv(h|0,j|0,l|0,((l|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&p>>>0<=q>>>0)&1}j=Wa[c[29340>>2]&127](l)|0;if(!j){w=7;return w|0}h=Wa[c[29352>>2]&127](j)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0){c[14987]=h;q=j}else q=j}else{if(c[l+272>>2]|0){if(a[l+81>>0]|0){w=7;return w|0}}else{do if(!(m>>>0>0|((m|0)==0?n>>>0>(e[l+276>>1]|0)>>>0:0))){j=l+300|0;h=c[j>>2]|0;if(h|0){c[j>>2]=c[h>>2];o=l+284|0;c[o>>2]=(c[o>>2]|0)+1;o=43;break a}j=l+296|0;h=c[j>>2]|0;if(!h){h=l+292|0;break}else{c[j>>2]=c[h>>2];o=l+284|0;c[o>>2]=(c[o>>2]|0)+1;o=43;break a}}else h=l+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(l,n,m)|0;o=43}while(0);if((o|0)==43)if(!h){w=7;return w|0}else q=h;switch(a[w>>0]|0){case 1:{h=(i|0)>0;if(g<<24>>24==2)if(h){h=q;i=k;do{k=i+1|0;p=a[i>>0]|0;i=p&255;if((p&255)>191){i=d[2736+(i+-192)>>0]|0;b:do if((k|0)==(r|0)){j=i;i=r}else{j=i;i=k;while(1){k=a[i>>0]|0;if((k&-64)<<24>>24!=-128)break b;i=i+1|0;j=j<<6|k&63;if((i|0)==(r|0)){i=r;break}}}while(0);if(!((j&-2|0)==65534|(j>>>0<128|(j&-2048|0)==55296)))if(j>>>0<65536)o=55;else{l=j+-65536|0;a[h>>0]=l>>>10&192|j>>>10&63;a[h+1>>0]=l>>>18&3|216;a[h+2>>0]=j;l=h+3|0;k=4;j=j>>>8&3|220}else{j=65533;o=55}}else{j=i;i=k;o=55}if((o|0)==55){o=0;a[h>>0]=j;l=h+1|0;k=2;j=j>>>8}h=h+k|0;a[l>>0]=j}while(i>>>0>>0)}else h=q;else if(h){n=q;h=k;while(1){i=h+1|0;p=a[h>>0]|0;h=p&255;if((p&255)>191){h=d[2736+(h+-192)>>0]|0;c:do if((i|0)==(r|0))i=r;else while(1){j=a[i>>0]|0;if((j&-64)<<24>>24!=-128)break c;i=i+1|0;h=h<<6|j&63;if((i|0)==(r|0)){i=r;break}}while(0);if(!((h&-2|0)==65534|(h>>>0<128|(h&-2048|0)==55296)))if(h>>>0<65536)o=67;else{m=h+-65536|0;a[n>>0]=m>>>18&3|216;a[n+1>>0]=m>>>10&192|h>>>10&63;m=h;j=4;k=n+2|0;l=3;h=h>>>8&3|220}else{h=65533;o=67}}else o=67;if((o|0)==67){o=0;m=h;j=2;k=n;l=1;h=h>>>8}a[k>>0]=h;h=n+j|0;a[n+l>>0]=m;if(i>>>0>>0){n=h;h=i}else break}}else h=q;c[s>>2]=h-q;a[h>>0]=0;h=h+1|0;break}case 2:{if((i|0)>0){h=q;do{i=d[k>>0]|0;l=k+2|0;p=d[k+1>>0]|0;j=p<<8|i;if(l>>>0>>0&(p&248|0)==216){j=(j<<10&983040)+65536|i<<10&64512|d[l>>0]|d[k+3>>0]<<8&768;k=k+4|0}else k=l;if(j>>>0<128){l=h;i=1}else{if(j>>>0<2048){o=h;i=2;l=1;m=192;n=31}else{if(j>>>0<65536){m=h;i=3;l=2;n=1;o=224;p=15}else{a[h>>0]=j>>>18&7|240;m=h+1|0;i=4;l=3;n=2;o=128;p=63}a[m>>0]=j>>>12&p|o;o=h+n|0;m=128;n=63}a[o>>0]=j>>>6&n|m;l=h+l|0;j=j&63|128}h=h+i|0;a[l>>0]=j}while(k>>>0>>0);o=93}else{h=q;o=93}break}default:if((i|0)>0){h=q;while(1){p=d[k>>0]|0;i=k+2|0;l=d[k+1>>0]|0;j=p<<8|l;if(i>>>0>>0&(p&248|0)==216){p=k+4|0;j=(j<<10&983040)+65536|l<<10&64512|d[k+3>>0]|d[i>>0]<<8&768}else p=i;if(j>>>0<128){k=h;i=1}else{if(j>>>0<2048){n=h;i=2;k=1;l=192;m=31}else{if(j>>>0<65536){l=h;i=3;k=2;m=1;n=224;o=15}else{a[h>>0]=j>>>18&7|240;l=h+1|0;i=4;k=3;m=2;n=128;o=63}a[l>>0]=j>>>12&o|n;n=h+m|0;l=128;m=63}a[n>>0]=j>>>6&m|l;k=h+k|0;j=j&63|128}h=h+i|0;a[k>>0]=j;if(p>>>0>>0)k=p;else{o=93;break}}}else{h=q;o=93}}if((o|0)==93)c[s>>2]=h-q;a[h>>0]=0;h=f+8|0;i=b[h>>1]|0;if(!((i&9216)==0?!(c[f+24>>2]|0):0))Cg(f);b[h>>1]=i&-32739|514;a[w>>0]=g;c[t>>2]=q;c[f+20>>2]=q;h=c[u>>2]|0;if(((h|0)!=0?(v=q,(c[h+304>>2]|0)>>>0<=v>>>0):0)?(c[h+308>>2]|0)>>>0>v>>>0:0)h=e[h+276>>1]|0;else h=Wa[c[29352>>2]&127](q)|0;c[f+24>>2]=h;w=0;return w|0}function Jg(d){d=d|0;var e=0,f=0;e=d+12|0;if(Eg(d,(c[e>>2]|0)+2|0,1)|0){e=7;return e|0}f=d+16|0;a[(c[f>>2]|0)+(c[e>>2]|0)>>0]=0;a[(c[f>>2]|0)+((c[e>>2]|0)+1)>>0]=0;e=d+8|0;b[e>>1]=b[e>>1]|512;e=0;return e|0}function Kg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=Ra;Ra=Ra+16|0;d=e;g[d>>3]=0.0;Lg(c,d,b,a)|0;Ra=e;return +(+g[d>>3])}function Lg(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;var h=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;g[c>>3]=0.0;j=f&255;if(f<<24>>24==1){j=b;i=1;q=1;f=e}else{f=3-j|0;a:do if((f|0)<(e|0))while(1){if(a[b+f>>0]|0){i=0;break a}f=f+2|0;if((f|0)>=(e|0)){i=1;break}}else i=1;while(0);j=b+(j&1)|0;q=2;f=f^1}u=b+f|0;if(j>>>0>=u>>>0){c=0;return c|0}f=j;while(1){j=a[f>>0]|0;if(!(a[880+(j&255)>>0]&1))break;f=f+q|0;if(f>>>0>=u>>>0){f=0;t=69;break}}if((t|0)==69)return f|0;switch(j<<24>>24){case 45:{s=-1;f=f+q|0;break}case 43:{s=1;f=f+q|0;break}default:s=1}b:do if(f>>>0>>0){j=0;m=0;b=0;do{e=a[f>>0]|0;if(!(((m|0)<214748364|(m|0)==214748364&b>>>0<3435973835)&((e&255)+-48|0)>>>0<10))break b;m=Yv(b|0,m|0,10,0)|0;b=(e<<24>>24)+-48|0;b=Sv(m|0,L()|0,b|0,((b|0)<0)<<31>>31|0)|0;m=L()|0;f=f+q|0;j=j+1|0}while(f>>>0>>0)}else{j=0;b=0;m=0}while(0);c:do if(f>>>0>>0){l=0;while(1){e=a[f>>0]|0;if(((e&255)+-48|0)>>>0>=10)break;f=f+q|0;j=j+1|0;e=l+1|0;if(f>>>0>>0)l=e;else{q=1;l=0;p=1;break c}}d:do if(e<<24>>24==46){f=f+q|0;if(f>>>0>>0)while(1){e=a[f>>0]|0;if(((e&255)+-48|0)>>>0>=10){e=l;break d}p=(m|0)<214748364|(m|0)==214748364&b>>>0<3435973835;n=Yv(b|0,m|0,10,0)|0;o=(e<<24>>24)+-48|0;o=Sv(n|0,L()|0,o|0,((o|0)<0)<<31>>31|0)|0;e=L()|0;b=p?o:b;m=p?e:m;e=l+(p<<31>>31)|0;j=j+1|0;f=f+q|0;if(f>>>0>>0)l=e;else break}else e=l}else e=l;while(0);if(f>>>0>>0){e:do switch(a[f>>0]|0){case 69:case 101:{f=f+q|0;if(f>>>0>=u>>>0){q=0;l=0;p=1;break c}switch(a[f>>0]|0){case 45:{p=-1;f=f+q|0;break}case 43:{p=1;f=f+q|0;break}default:p=1}if(f>>>0>>0){n=0;o=0;while(1){l=a[f>>0]|0;if(((l&255)+-48|0)>>>0>=10){l=o;break e}l=(o|0)<1e4?(o*10|0)+-48+(l<<24>>24)|0:1e4;f=f+q|0;if(f>>>0>>0){n=1;o=l}else{n=1;break}}}else{n=0;l=0}break}default:{n=1;l=0;p=1}}while(0);if(f>>>0>>0)while(1){if(!(a[880+(d[f>>0]|0)>>0]&1)){q=n;break c}f=f+q|0;if(f>>>0>=u>>>0){q=n;break}}else q=n}else{q=1;l=0;p=1}}else{q=1;l=0;p=1;e=0}while(0);e=(G(l,p)|0)+e|0;p=(e|0)<0;l=e>>31|1;f:do if((b|0)==0&(m|0)==0)h=(s|0)<0?-0.0:0.0;else{e=p?0-e|0:e;g:do if((e|0)>0){h:do if((l|0)>0)while(1){if((m|0)>214748364|(m|0)==214748364&b>>>0>3435973835){l=e;break h}b=Yv(b|0,m|0,10,0)|0;m=L()|0;l=e+-1|0;if((e|0)>1)e=l;else{t=51;break g}}else while(1){n=Wv(b|0,m|0,10,0)|0;o=L()|0;l=Yv(n|0,o|0,10,0)|0;l=Tv(b|0,m|0,l|0,L()|0)|0;if(!((l|0)==0&(L()|0)==0)){l=e;break h}l=e+-1|0;if((e|0)>1){e=l;b=n;m=o}else{b=n;m=o;t=51;break g}}while(0);o=(s|0)<0;e=Tv(0,0,b|0,m|0)|0;s=L()|0;e=o?e:b;b=o?s:m;if((l|0)>307){if((l|0)>=342){h=+(e>>>0)+4294967296.0*+(b|0);if(p){h=h*0.0;break f}else{h=h*r;break f}}l=l+-308|0;k=(l&1|0)==0?1.0:10.0;l=l>>1;if(l){h=10.0;do{h=h*h;k=(l&1|0)==0?k:k*h;l=l>>1}while((l|0)!=0)}h=+(e>>>0)+4294967296.0*+(b|0);if(p){h=h/k/1.e+308;break f}else{h=k*h*1.e+308;break f}}}else{l=e;t=51}while(0);if((t|0)==51){s=(s|0)<0;e=Tv(0,0,b|0,m|0)|0;t=L()|0;e=s?e:b;b=s?t:m;if(!l){h=+(e>>>0)+4294967296.0*+(b|0);break}}h=(l&1|0)==0?1.0:10.0;l=l>>1;if(l){k=10.0;do{k=k*k;h=(l&1|0)==0?h:h*k;l=l>>1}while((l|0)!=0)}k=+(e>>>0)+4294967296.0*+(b|0);h=p?k/h:h*k}while(0);g[c>>3]=h;c=(q|0)!=0&((j|0)>0&(f|0)==(u|0))?i:0;return c|0}function Mg(a){a=+a;var b=0,c=0;if(!(a<=-9223372036854775808.0))if(!(a>=9223372036854775808.0)){c=+t(a)>=1.0?(a>0.0?~~+H(+s(a/4294967296.0),4294967295.0)>>>0:~~+F((a-+(~~a>>>0))/4294967296.0)>>>0):0;b=~~a>>>0}else{c=2147483647;b=-1}else{c=-2147483648;b=0}K(c|0);return b|0}function Ng(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=Ra;Ra=Ra+16|0;f=e;g=f;c[g>>2]=0;c[g+4>>2]=0;Og(d,f,b,a)|0;b=f;d=c[b>>2]|0;K(c[b+4>>2]|0);Ra=e;return d|0}function Og(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,l=0,m=0,n=0,o=0,p=0;i=g&255;if(g<<24>>24==1){h=0;o=1;i=b;g=f}else{g=3-i|0;a:do if((g|0)<(f|0))while(1){if(a[b+g>>0]|0){h=1;break a}g=g+2|0;if((g|0)>=(f|0)){h=0;break}}else h=0;while(0);o=2;i=b+(i&1)|0;g=g^1}n=b+g|0;b:do if(i>>>0>>0){while(1){g=a[i>>0]|0;if(!(a[880+(g&255)>>0]&1))break;g=i+o|0;if(g>>>0>>0)i=g;else{m=0;break b}}switch(g<<24>>24){case 45:{m=1;g=i+o|0;break b}case 43:{m=0;g=i+o|0;break b}default:{m=0;g=i;break b}}}else{m=0;g=i}while(0);c:do if(g>>>0>>0){i=g;do{if((a[i>>0]|0)!=48)break c;i=i+o|0}while(i>>>0>>0)}else i=g;while(0);do if(i>>>0>>0){k=0;l=i;j=0;f=0;while(1){b=a[l>>0]|0;if((b+-48&255)>=10){b=k;k=1;break}f=Yv(j|0,f|0,10,0)|0;j=b<<24>>24;f=Sv(f|0,L()|0,-48,-1)|0;j=Sv(f|0,L()|0,j|0,((j|0)<0)<<31>>31|0)|0;f=L()|0;b=k+o|0;l=i+b|0;if(l>>>0>=n>>>0){k=0;break}else k=b}l=(m|0)!=0;if((f|0)>=0)if(l){p=26;break}else{l=0;break}else{j=l?0:-1;f=l?-2147483648:2147483647;break}}else if(!m){b=0;k=0;j=0;f=0;l=0}else{b=0;k=0;j=0;f=0;p=26}while(0);if((p|0)==26){j=Tv(0,0,j|0,f|0)|0;f=L()|0;l=1}m=e;c[m>>2]=j;c[m+4>>2]=f;if(!b){g=(g|0)==(i|0);if((h|0)!=0|g|k^1)h=h|g&1;else p=30}else if(!((h|0)!=0|k^1))p=30;d:do if((p|0)==30){g=b;while(1){if(!(a[880+(d[i+g>>0]|0)>>0]&1)){h=1;break d}g=g+o|0;if((i+g|0)>>>0>=n>>>0){h=0;break}}}while(0);g=o*19|0;if(b>>>0>>0){e=h;return e|0}if(b>>>0>g>>>0){c[e>>2]=l?0:-1;c[e+4>>2]=l?-2147483648:2147483647;e=2;return e|0}g=0;do{f=i+(G(g,o)|0)|0;f=(a[f>>0]|0)-(a[32536+g>>0]|0)|0;g=g+1|0;b=(f|0)==0}while(g>>>0<18&b);if(b)g=(a[i+(o*18|0)>>0]|0)+-56|0;else g=f*10|0;if((g|0)<0){e=h;return e|0}else{c[e>>2]=l?0:-1;c[e+4>>2]=l?-2147483648:2147483647;return ((g|0)==0?(l?h:3):2)|0}return 0}function Pg(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;f=a+8|0;if(!(b[f>>1]&9216))b[f>>1]=1;else Dg(a);c[a>>2]=d;c[a+4>>2]=e;b[f>>1]=4;return}function Qg(a){a=a|0;return} -function Sg(d,e,f){d=d|0;e=e|0;f=f|0;var h=0,i=0.0,j=0,k=0;k=d+8|0;h=b[k>>1]|0;j=h&65535;if(j&1|0)return;switch(e<<24>>24){case 65:{if(j&16|0){b[k>>1]=j&15920;return}if(!((j&2|0)!=0|(j&12|0)==0)){Hg(d,f,1)|0;h=b[k>>1]|0}h=h&-13;b[k>>1]=h;h=h&65535;if(!(h&2))return;b[k>>1]=h&15904|16;return}case 67:{oh(d);return}case 68:{do if(!(j&4)){if(j&8|0){e=Mg(+g[d>>3])|0;f=L()|0;break}if(!(j&18)){e=0;f=0}else{e=Ng(a[d+10>>0]|0,c[d+12>>2]|0,c[d+16>>2]|0)|0;f=L()|0;h=b[k>>1]|0}}else{f=d;e=c[f>>2]|0;f=c[f+4>>2]|0}while(0);c[d>>2]=e;c[d+4>>2]=f;b[k>>1]=h&15904|4;return}case 69:{do if(!(j&8)){if(j&4|0){j=d;i=+((c[j>>2]|0)>>>0)+4294967296.0*+(c[j+4>>2]|0);break}if(!(j&18))i=0.0;else{i=+Kg(a[d+10>>0]|0,c[d+12>>2]|0,c[d+16>>2]|0);h=b[k>>1]|0}}else i=+g[d>>3];while(0);g[d>>3]=i;b[k>>1]=h&15904|8;return}default:{e=j>>>3&2|j;h=e&65535;b[k>>1]=h;if(!((j&12|0)==0|(e&2|0)!=0)){Hg(d,f,1)|0;h=b[k>>1]|0}b[k>>1]=h&-16413;return}}}function Tg(a,d,e){a=a|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0;j=b[a+8>>1]|0;l=j&65535;k=b[d+8>>1]|0;m=k&65535;i=(k|j)&65535;if(i&1|0){d=(m&1)-(l&1)|0;return d|0}if(!(i&12)){if(i&2|0){if(!(l&2)){d=1;return d|0}if(!(m&2)){d=-1;return d|0}if(e|0){d=ph(a,d,e,0)|0;return d|0}}d=qh(a,d)|0;return d|0}i=k&j&65535;if(i&4|0){l=a;a=c[l>>2]|0;l=c[l+4>>2]|0;m=d;d=c[m>>2]|0;m=c[m+4>>2]|0;return ((l|0)<(m|0)|(l|0)==(m|0)&a>>>0>>0?-1:((l|0)>(m|0)|(l|0)==(m|0)&a>>>0>d>>>0)&1)|0}if(i&8|0){h=+g[a>>3];f=+g[d>>3];if(hf&1;return d|0}if(l&4|0){if(!(m&8)){d=-1;return d|0}k=a;j=c[k>>2]|0;k=c[k+4>>2]|0;h=+g[d>>3];if(h<-9223372036854775808.0){d=1;return d|0}if(h>=9223372036854775808.0){d=-1;return d|0}i=~~h>>>0;e=+t(h)>=1.0?(h>0.0?~~+H(+s(h/4294967296.0),4294967295.0)>>>0:~~+F((h-+(~~h>>>0))/4294967296.0)>>>0):0;if((k|0)<(e|0)|(k|0)==(e|0)&j>>>0>>0){d=-1;return d|0}if((k|0)>(e|0)|(k|0)==(e|0)&j>>>0>i>>>0){d=1;return d|0}f=+(j>>>0)+4294967296.0*+(k|0);if(h>f){d=-1;return d|0}d=h>2]|0;k=c[k+4>>2]|0;h=+g[a>>3];if(h<-9223372036854775808.0){d=-1;return d|0}if(h>=9223372036854775808.0){d=1;return d|0}i=~~h>>>0;e=+t(h)>=1.0?(h>0.0?~~+H(+s(h/4294967296.0),4294967295.0)>>>0:~~+F((h-+(~~h>>>0))/4294967296.0)>>>0):0;if((k|0)<(e|0)|(k|0)==(e|0)&j>>>0>>0){d=1;return d|0}if((k|0)>(e|0)|(k|0)==(e|0)&j>>>0>i>>>0){d=-1;return d|0}f=+(j>>>0)+4294967296.0*+(k|0);if(h>f){d=1;return d|0}d=(h>31;return d|0}function Ug(e,f,g){e=e|0;f=f|0;g=g|0;var h=0;do switch(f|0){case 10:{b[g+8>>1]=16385;c[g+12>>2]=0;c[g>>2]=0;g=0;return g|0}case 0:case 11:{b[g+8>>1]=1;g=0;return g|0}case 1:{e=a[e>>0]|0;f=g;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;b[g+8>>1]=4;g=1;return g|0}case 2:{e=a[e>>0]<<8|d[e+1>>0];f=g;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;b[g+8>>1]=4;g=2;return g|0}case 3:{e=d[e+1>>0]<<8|a[e>>0]<<16|d[e+2>>0];f=g;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;b[g+8>>1]=4;g=3;return g|0}case 4:{e=d[e+1>>0]<<16|a[e>>0]<<24|d[e+2>>0]<<8|d[e+3>>0];f=g;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;b[g+8>>1]=4;g=4;return g|0}case 5:{h=a[e>>0]<<8|d[e+1>>0];f=g;c[f>>2]=d[e+3>>0]<<16|d[e+2>>0]<<24|d[e+4>>0]<<8|d[e+5>>0];c[f+4>>2]=h;b[g+8>>1]=4;g=6;return g|0}case 7:case 6:{vh(e,f,g);h=8;return h|0}case 9:case 8:{h=g;c[h>>2]=f+-8;c[h+4>>2]=0;b[g+8>>1]=4;h=0;return h|0}default:{c[g+16>>2]=e;h=(f+-12|0)>>>1;c[g+12>>2]=h;b[g+8>>1]=b[31116+((f&1)<<1)>>1]|0;return h|0}}while(0);return 0}function Vg(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;o=Ra;Ra=Ra+16|0;i=o;if((d|0)<1){c[i>>2]=32306;c[i+4>>2]=67596;c[i+8>>2]=31517;Db(11,32001,i);g=11;Ra=o;return g|0}n=c[b+4>>2]|0;c[n+4>>2]=c[b>>2];l=(e|0)!=0;if(l?(m=n+80|0,(c[m>>2]|0)==0):0){k=c[n+32>>2]|0;if((c[14813]|0)>=(k|0)?(h=c[14819]|0,(h|0)!=0):0){c[14819]=c[h>>2];e=c[14820]|0;c[14820]=e+-1;c[14821]=(e|0)<=(c[14815]|0)&1;if((c[14986]|0)>>>0>>0)c[14986]=k;i=(c[14979]|0)+1|0;c[14979]=i;if(i>>>0>(c[14983]|0)>>>0)c[14983]=i}else j=11;a:do if((j|0)==11){j=Sv(k|0,((k|0)<0)<<31>>31|0,-1,-1)|0;e=L()|0;do if(!(e>>>0>0|(e|0)==0&j>>>0>2147483390)){if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](k)|0;if(!h)break}else{h=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;e=59064;i=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&i>>>0>0){j=c[14978]|0;e=Tv(i|0,e|0,h|0,((h|0)<0)<<31>>31|0)|0;i=L()|0;c[14768]=((i|0)<0|(i|0)==0&e>>>0<=j>>>0)&1}h=Wa[c[29340>>2]&127](h)|0;if(!h)break;i=Wa[c[29352>>2]&127](h)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}i=Wa[c[29352>>2]&127](h)|0;if((c[14986]|0)>>>0>>0)c[14986]=k;i=(c[14980]|0)+i|0;c[14980]=i;if(i>>>0<=(c[14984]|0)>>>0)break a;c[14984]=i;break a}while(0);c[m>>2]=0;g=7;Ra=o;return g|0}while(0);c[m>>2]=h;k=h;j=k;a[j>>0]=0;a[j+1>>0]=0;a[j+2>>0]=0;a[j+3>>0]=0;k=k+4|0;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=0;c[m>>2]=(c[m>>2]|0)+4}if((d|0)==1)d=(c[n+44>>2]|0)!=0&1;c[g+64>>2]=d;a[g+68>>0]=-1;c[g+112>>2]=f;c[g+8>>2]=b;c[g+20>>2]=n;j=g+1|0;a[j>>0]=l&1;a[g+2>>0]=l?0:2;i=n+8|0;h=c[i>>2]|0;e=h;if(h|0)do{if((c[h+64>>2]|0)==(d|0)){n=h+1|0;a[n>>0]=a[n>>0]|32;a[j>>0]=a[j>>0]|32}h=c[h+24>>2]|0}while((h|0)!=0);c[g+24>>2]=e;c[i>>2]=g;a[g>>0]=1;g=0;Ra=o;return g|0}function Wg(e,f,g){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,x=0,y=0,z=0,A=0;A=Ra;Ra=Ra+64|0;y=A+16|0;p=A;r=A+52|0;s=A+48|0;z=A+44|0;x=A+40|0;l=A+36|0;m=A+32|0;n=A+56|0;o=A+28|0;i=c[e>>2]|0;v=e+4|0;u=c[v>>2]|0;j=u+4|0;c[j>>2]=i;a:do if(!(a[u+17>>0]|0)){h=fg(u,s,z,1,0)|0;c[x>>2]=h;if(!h){q=c[s>>2]|0;break}else{z=h;Ra=A;return z|0}}else{k=u+8|0;h=c[k>>2]|0;if(h|0)do{w=h+1|0;a[w>>0]=a[w>>0]&-5;h=c[h+24>>2]|0}while((h|0)!=0);c[j>>2]=i;q=c[(c[u+12>>2]|0)+56>>2]|0;q=d[q+53>>0]<<16|d[q+52>>0]<<24|d[q+54>>0]<<8|d[q+55>>0];c[z>>2]=q;i=u+36|0;j=1073741824/((c[u+32>>2]|0)>>>0)|0;while(1){w=q+1|0;if(w>>>0<2)h=0;else{h=q+-1|0;h=h-((h>>>0)%(((((c[i>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;h=((h+1|0)==(j|0)?3:2)+h|0}if((q|0)==(j|0)|(w|0)==(h|0))q=w;else break}c[z>>2]=w;h=fg(u,m,l,w,1)|0;c[x>>2]=h;b:do if(!h){l=c[l>>2]|0;c:do if((l|0)==(w|0)){l=c[m>>2]|0;c[s>>2]=l}else{a[n>>0]=0;c[o>>2]=0;h=c[k>>2]|0;if(!h)h=0;else h=$f(h,0,0)|0;c[x>>2]=h;i=c[m>>2]|0;do if(i|0){i=c[i+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{t=c[i+20>>2]|0;m=t+120|0;c[m>>2]=(c[m>>2]|0)+-1;t=t+136|0;c[i+16>>2]=c[t>>2];c[t>>2]=i;break}}while(0);do if(!h){h=c[u>>2]|0;h=Za[c[h+204>>2]&127](h,w,r,0)|0;if(h|0){c[x>>2]=h;break}h=c[r>>2]|0;j=c[h+8>>2]|0;i=j+4|0;if((c[i>>2]|0)!=(w|0)){c[j+56>>2]=c[h+4>>2];c[j+72>>2]=h;c[j+52>>2]=u;c[i>>2]=w;a[j+9>>0]=(q|0)==0?100:0}c[s>>2]=j;h=eg(u,w,n,o)|0;c[x>>2]=h;i=a[n>>0]|0;if((i+-1&255)>=2){if(!h){h=gg(u,j,i,c[o>>2]|0,l,0)|0;c[x>>2]=h;do if(j|0){i=c[j+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{t=c[i+20>>2]|0;p=t+120|0;c[p>>2]=(c[p>>2]|0)+-1;t=t+136|0;c[i+16>>2]=c[t>>2];c[t>>2]=i;break}}while(0);if(h|0)break;h=c[u>>2]|0;h=Za[c[h+204>>2]&127](h,w,r,0)|0;if(h|0){c[x>>2]=h;break}h=c[r>>2]|0;l=c[h+8>>2]|0;i=l+4|0;if((c[i>>2]|0)==(w|0))k=l+72|0;else{c[l+56>>2]=c[h+4>>2];k=l+72|0;c[k>>2]=h;c[l+52>>2]=u;c[i>>2]=w;a[l+9>>0]=(q|0)==0?100:0}c[s>>2]=l;c[x>>2]=0;i=c[k>>2]|0;j=c[i+20>>2]|0;do if(b[i+28>>1]&4){if((c[j+24>>2]|0)>>>0<(c[i+24>>2]|0)>>>0){t=44;break}if(!(c[j+96>>2]|0)){c[x>>2]=0;t=55;break}else{h=Ve(i)|0;t=49;break}}else t=44;while(0);do if((t|0)==44){h=c[j+40>>2]|0;if(h|0){c[x>>2]=h;break}if((c[j+148>>2]|0)>>>0>(c[j+152>>2]|0)>>>0){h=Wf(i)|0;t=49;break}else{h=Xf(i)|0;t=49;break}}while(0);if((t|0)==49){c[x>>2]=h;if(!h)t=55}if((t|0)==55)break c;if(!l)break;i=c[k>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{z=c[i+20>>2]|0;f=z+120|0;c[f>>2]=(c[f>>2]|0)+-1;z=z+136|0;c[i+16>>2]=c[z>>2];c[z>>2]=i;break}}}else{c[p>>2]=32306;c[p+4>>2]=72254;c[p+8>>2]=31517;Db(11,32001,p);c[x>>2]=11;h=11}if(j){i=c[j+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{z=c[i+20>>2]|0;f=z+120|0;c[f>>2]=(c[f>>2]|0)+-1;z=z+136|0;c[i+16>>2]=c[z>>2];c[z>>2]=i;break}}}while(0);break b}while(0);ig(u,w,1,0,x);h=c[x>>2]|0;if(h|0){if(!l)break;i=c[l+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{z=c[i+20>>2]|0;f=z+120|0;c[f>>2]=(c[f>>2]|0)+-1;z=z+136|0;c[i+16>>2]=c[z>>2];c[z>>2]=i;break}}i=c[v>>2]|0;c[i+4>>2]=c[e>>2];i=c[i+12>>2]|0;k=c[i+56>>2]|0;i=c[i+72>>2]|0;j=c[i+20>>2]|0;if((b[i+28>>1]&4)!=0?(c[j+24>>2]|0)>>>0>=(c[i+24>>2]|0)>>>0:0)if(!(c[j+96>>2]|0))t=76;else{h=Ve(i)|0;t=70}else t=66;do if((t|0)==66){h=c[j+40>>2]|0;if(!h)if((c[j+148>>2]|0)>>>0>(c[j+152>>2]|0)>>>0){h=Wf(i)|0;t=70;break}else{h=Xf(i)|0;t=70;break}}while(0);if((t|0)==70)if(!h)t=76;if((t|0)==76){a[k+52>>0]=w>>>24;a[k+53>>0]=w>>>16;a[k+54>>0]=w>>>8;a[k+55>>0]=w;c[x>>2]=0;q=l;break a}c[x>>2]=h;if(l){i=c[l+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{z=c[i+20>>2]|0;f=z+120|0;c[f>>2]=(c[f>>2]|0)+-1;z=z+136|0;c[i+16>>2]=c[z>>2];c[z>>2]=i;break}}}while(0);z=h;Ra=A;return z|0}while(0);k=(g&1|0)==0?10:13;o=c[q+56>>2]|0;j=q+52|0;p=c[j>>2]|0;i=d[q+9>>0]|0;if(!(b[p+22>>1]&12)){h=o+i|0;n=p+36|0}else{n=p+36|0;h=o+i|0;gw(h|0,0,(c[n>>2]|0)-i|0)|0}a[h>>0]=k;l=i+8|0;m=l&65535;h=o+(i+1)|0;a[h>>0]=0;a[h+1>>0]=0;a[h+2>>0]=0;a[h+3>>0]=0;a[o+(i+7)>>0]=0;h=o+(i+5)|0;a[h>>0]=(c[n>>2]|0)>>>8;a[h+1>>0]=c[n>>2];c[q+20>>2]=(c[n>>2]|0)-l&65535;a[q+8>>0]=1;h=q+10|0;a[h>>0]=0;c[q+76>>2]=120;i=c[j>>2]|0;switch(k&7){case 5:{a[q+2>>0]=1;a[q+3>>0]=1;c[q+80>>2]=180;b[q+14>>1]=b[i+28>>1]|0;h=i+30|0;t=86;break}case 2:{a[q+2>>0]=0;a[q+3>>0]=0;c[q+80>>2]=179;b[q+14>>1]=b[i+24>>1]|0;h=i+26|0;t=86;break}default:{c[y>>2]=32306;c[y+4>>2]=65035;c[y+8>>2]=31517;Db(11,32001,y);h=a[h>>0]|0}}if((t|0)==86){b[q+16>>1]=b[h>>1]|0;a[q+11>>0]=a[i+21>>0]|0;h=0}b[q+18>>1]=m;c[q+60>>2]=o+(c[n>>2]|0);c[q+64>>2]=o+l;c[q+68>>2]=o+(h&255);a[q+12>>0]=0;b[q+26>>1]=(c[p+32>>2]|0)+65535;b[q+24>>1]=0;a[q>>0]=1;h=c[q+72>>2]|0;do if(h|0)if(!(b[h+28>>1]&32)){Df(h);break}else{y=c[h+20>>2]|0;x=y+120|0;c[x>>2]=(c[x>>2]|0)+-1;y=y+136|0;c[h+16>>2]=c[y>>2];c[y>>2]=h;break}while(0);c[f>>2]=c[z>>2];z=0;Ra=A;return z|0}function Xg(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 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,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;V=Ra;Ra=Ra+80|0;R=V+56|0;T=V+40|0;S=V+24|0;Q=V+8|0;P=V;a:do if(!g)if((a[f>>0]|0)==0?(l=d[f+1>>0]|0,(l&2|0)!=0):0){o=f+32|0;n=o;m=c[n>>2]|0;n=c[n+4>>2]|0;if((m|0)==(h|0)&(n|0)==(i|0)){c[k>>2]=0;U=0;Ra=V;return U|0}if((n|0)<(i|0)|(n|0)==(i|0)&m>>>0>>0){if(l&8|0){c[k>>2]=-1;U=0;Ra=V;return U|0}N=Sv(m|0,n|0,1,0)|0;if((N|0)==(h|0)&(L()|0)==(i|0)){c[k>>2]=0;l=Yg(f,0)|0;switch(l|0){case 101:{N=0;break a}case 0:break;default:{U=l;Ra=V;return U|0}}bg(f);N=o;if((c[N>>2]|0)==(h|0)?(c[N+4>>2]|0)==(i|0):0){U=0;Ra=V;return U|0}else N=0}else N=0}else N=0}else N=0;else{l=c[g>>2]|0;do if((e[l+8>>1]|0)<14){m=e[(c[g+4>>2]|0)+8>>1]|0;N=(a[c[l+16>>2]>>0]|0)==0;a[g+12>>0]=N?-1:1;a[g+13>>0]=N?1:-1;if(!(m&4)){if(m&25|0){l=88;break}if(!(c[l+20>>2]|0))l=90;else{l=88;break}}else l=89}else l=88;while(0);a[g+11>>0]=0;N=l}while(0);l=xh(f)|0;switch(l|0){case 0:{K=f+116|0;B=1-j|0;C=f+70|0;D=(N|0)==0;E=f+1|0;F=f+32|0;M=f+50|0;G=f+32|0;H=f+20|0;I=f+68|0;J=f+2|0;l=0;m=0;b:while(1){A=c[K>>2]|0;x=A+24|0;o=(e[x>>1]|0)+-1|0;j=o>>B;b[C>>1]=j;w=A+68|0;y=A+26|0;z=A+64|0;c:do if(D){t=A+3|0;u=A+60|0;n=A+8|0;s=j;r=o;o=0;d:while(1){j=(c[z>>2]|0)+(s<<1)|0;j=(c[w>>2]|0)+((d[j>>0]<<8|d[j+1>>0])&e[y>>1])|0;e:do if(a[t>>0]|0){p=j+1|0;if((a[j>>0]|0)<0){q=c[u>>2]|0;while(1){if(p>>>0>=q>>>0)break;j=p+1|0;if((a[p>>0]|0)<0)p=j;else{U=29;break e}}c[Q>>2]=32306;c[Q+4>>2]=68640;c[Q+8>>2]=31517;Db(11,32001,Q);q=1;j=s;l=11;p=r}else{j=p;U=29}}else U=29;while(0);f:do if((U|0)==29){U=0;Of(j,P)|0;p=P;j=c[p>>2]|0;p=c[p+4>>2]|0;do if((p|0)<(i|0)|(p|0)==(i|0)&j>>>0>>0){o=s+1|0;if((s|0)<(r|0))p=r;else{q=4;j=s;m=-1;p=r;break f}}else{if((p|0)>(i|0)|(p|0)==(i|0)&j>>>0>h>>>0){p=s+-1|0;if((o|0)<(s|0))break;else{q=4;j=s;m=1;break f}}b[C>>1]=s;if(!(a[n>>0]|0)){q=8;j=s;p=r;o=s;break f}a[E>>0]=a[E>>0]|2;q=F;c[q>>2]=j;c[q+4>>2]=p;b[M>>1]=0;c[k>>2]=0;q=1;j=s;l=0;p=r;break f}while(0);q=0;j=p+o>>1}while(0);switch(q&15){case 4:{U=74;break c}case 8:{U=76;break c}case 0:{s=j;r=p;break}default:break d}}if(q){U=85;break b}}else{s=A+11|0;t=A+14|0;u=A+10|0;v=A+80|0;n=o;o=0;while(1){p=(c[z>>2]|0)+(j<<1)|0;p=(c[w>>2]|0)+((d[p>>0]<<8|d[p+1>>0])&e[y>>1])|0;r=a[p>>0]|0;q=r&255;m=p+1|0;do if((r&255)>(d[s>>0]|0)){m=d[m>>0]|0;if((m&128|0)==0?(O=(q<<7&16256)+m|0,O>>>0<=(e[t>>1]|0)>>>0):0){m=Ya[N&127](O,p+2|0,g)|0;break}cb[c[v>>2]&255](A,p+(0-(d[u>>0]|0))|0,G);r=c[G>>2]|0;if((r|0)<2){U=45;break b}q=c[H>>2]|0;if(((r>>>0)/((c[q+36>>2]|0)>>>0)|0)>>>0>(c[q+44>>2]|0)>>>0){U=45;break b}m=r+18|0;q=Sv(m|0,((m|0)<0)<<31>>31|0,-1,-1)|0;p=L()|0;if(p>>>0>0|(p|0)==0&q>>>0>2147483390){l=7;break b}if(!(c[7324]|0)){m=Wa[c[29340>>2]&127](m)|0;if(!m){l=7;break b}else p=m}else{q=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;p=59064;m=c[p>>2]|0;p=c[p+4>>2]|0;if((p|0)>0|(p|0)==0&m>>>0>0){W=c[14978]|0;p=Tv(m|0,p|0,q|0,((q|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&p>>>0<=W>>>0)&1}p=Wa[c[29340>>2]&127](q)|0;if(!p){l=7;break b}m=Wa[c[29352>>2]&127](p)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0>(c[14987]|0)>>>0)c[14987]=m}b[C>>1]=j;m=cg(f,0,r,p,0)|0;a[E>>0]=a[E>>0]&-5;if(m|0){U=59;break b}m=Fh(r,p,g,0)|0;if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{W=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-W;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}else m=Ya[N&127](q,m,g)|0;while(0);if((m|0)<0)o=j+1|0;else{if(!m){U=69;break b}n=j+-1|0}if((o|0)>(n|0))break;j=n+o>>1}n=A+8|0;U=74}while(0);if((U|0)==74)if(!(a[n>>0]|0))U=76;else{U=75;break}if((U|0)==76){U=0;if((o|0)<(e[x>>1]|0)){n=(c[z>>2]|0)+(o<<1)|0;n=(d[n>>0]<<8|d[n+1>>0])&e[y>>1]}else n=(d[A+9>>0]|0)+8|0;r=(c[A+56>>2]|0)+n|0;j=a[r>>0]|0;p=a[r+1>>0]|0;q=a[r+2>>0]|0;r=a[r+3>>0]|0;n=o&65535;b[C>>1]=n;o=a[I>>0]|0;if(o<<24>>24>18){U=80;break}W=c[H>>2]|0;b[M>>1]=0;a[E>>0]=a[E>>0]&-7;A=o<<24>>24;b[f+72+(A<<1)>>1]=n;c[f+120+(A<<2)>>2]=c[K>>2];b[C>>1]=0;a[I>>0]=o+1<<24>>24;n=yh(W,(p&255)<<16|(j&255)<<24|(q&255)<<8|r&255,K,f,d[J>>0]|0)|0;if(n){l=n;break}}}do if((U|0)==45){c[S>>2]=32306;c[S+4>>2]=68714;c[S+8>>2]=31517;Db(11,32001,S);l=11}else if((U|0)==59)if(!(c[7324]|0)){ab[c[29344>>2]&127](p);l=m;break}else{l=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);l=m;break}else if((U|0)==69){c[k>>2]=0;b[C>>1]=j;if(!(a[g+11>>0]|0))l=0;else{c[T>>2]=32306;c[T+4>>2]=68745;c[T+8>>2]=31517;Db(11,32001,T);l=11}}else if((U|0)==75){b[C>>1]=j;c[k>>2]=m;l=0}else if((U|0)==80){c[R>>2]=32306;c[R+4>>2]=68229;c[R+8>>2]=31517;Db(11,32001,R);l=11}else if((U|0)==85){Ra=V;return l|0}while(0);b[M>>1]=0;W=l;Ra=V;return W|0}case 16:{c[k>>2]=-1;W=0;Ra=V;return W|0}default:{W=l;Ra=V;return W|0}}return 0}function Yg(f,g){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;s=Ra;Ra=Ra+16|0;r=s;o=f+50|0;b[o>>1]=0;p=f+1|0;a[p>>0]=a[p>>0]&-7;if(a[f>>0]|0){r=Gh(f)|0;Ra=s;return r|0}q=f+116|0;h=c[q>>2]|0;n=f+70|0;g=b[n>>1]|0;m=g+1<<16>>16;b[n>>1]=m;if((m&65535)>=(e[h+24>>1]|0)){b[n>>1]=g;r=Gh(f)|0;Ra=s;return r|0}if(a[h+8>>0]|0){r=0;Ra=s;return r|0}k=f+68|0;l=f+20|0;m=f+2|0;while(1){g=b[n>>1]|0;i=(c[h+64>>2]|0)+((g&65535)<<1)|0;i=(c[h+56>>2]|0)+((d[i>>0]<<8|d[i+1>>0])&e[h+26>>1])|0;j=a[k>>0]|0;if(j<<24>>24>18){h=8;break}i=d[i>>0]<<24|d[i+1>>0]<<16|d[i+2>>0]<<8|d[i+3>>0];t=c[l>>2]|0;b[o>>1]=0;a[p>>0]=a[p>>0]&-7;u=j<<24>>24;b[f+72+(u<<1)>>1]=g;c[f+120+(u<<2)>>2]=h;b[n>>1]=0;a[k>>0]=j+1<<24>>24;g=yh(t,i,q,f,d[m>>0]|0)|0;if(g|0){h=11;break}h=c[q>>2]|0;if(a[h+8>>0]|0){g=0;h=11;break}}if((h|0)==8){c[r>>2]=32306;c[r+4>>2]=68229;c[r+8>>2]=31517;Db(11,32001,r);u=11;Ra=s;return u|0}else if((h|0)==11){Ra=s;return g|0}return 0}function Zg(d,e){d=d|0;e=e|0;var f=0,g=0;e=d+1|0;a[e>>0]=a[e>>0]&-15;b[d+50>>1]=0;if(((a[d>>0]|0)==0?(f=d+70|0,g=b[f>>1]|0,g<<16>>16):0)?a[(c[d+116>>2]|0)+8>>0]|0:0){b[f>>1]=g+-1<<16>>16;g=0;return g|0}g=Hh(d)|0;return g|0}function _g(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var 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;v=Ra;Ra=Ra+16|0;u=v;m=c[i+4>>2]|0;a[i+10>>0]=0;t=a[h>>0]|0;j=t&255;do if(t<<24>>24<=-1){k=d[h+1>>0]|0;if(!(k&128)){t=j<<7&16256|k;j=2;break}l=d[h+2>>0]|0;if(!(l&128)){t=(j<<14|l)&2080895|k<<7&16256;j=3;break}else{j=Of(h,u)|0;s=u;t=c[s>>2]|0;t=((t|0)==(t|0)?0==(c[s+4>>2]|0):0)?t:-1;break}}else{t=j;j=1}while(0);j=j&255;if(t>>>0>g>>>0|t>>>0<=j>>>0){u=0;i=i+8|0;b[i>>1]=u;Ra=v;return}s=f+4|0;q=f+12|0;r=i+8|0;p=0;o=t;while(1){l=h+j|0;n=a[l>>0]|0;k=n&255;if(n<<24>>24>-1)l=1;else{f=d[l+1>>0]|0;do if(f&128){n=d[l+2>>0]|0;if(!(n&128)){k=(k<<14|n)&2080895|f<<7&16256;l=3;break}else{l=Of(l,u)|0;n=u;k=c[n>>2]|0;k=((k|0)==(k|0)?0==(c[n+4>>2]|0):0)?k:-1;break}}else{k=k<<7&16256|f;l=2}while(0);l=l&255}a[m+10>>0]=a[s>>0]|0;c[m+32>>2]=c[q>>2];c[m+24>>2]=0;c[m+16>>2]=0;o=(Ug(h+o|0,k,m)|0)+o|0;p=p+1<<16>>16;j=l+j|0;if((p&65535)>=(e[r>>1]|0))break;if(o>>>0>g>>>0|j>>>0>=t>>>0)break;else m=m+40|0}if(o>>>0<=g>>>0|p<<16>>16==0){u=p;i=i+8|0;b[i>>1]=u;Ra=v;return}j=m+8|0;if(!(b[j>>1]&9216)){b[j>>1]=1;u=p;i=i+8|0;b[i>>1]=u;Ra=v;return}else{Dg(m);u=p;i=i+8|0;b[i>>1]=u;Ra=v;return}}function $g(f,g){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,x=0,y=0;w=Ra;Ra=Ra+16|0;u=w;if((a[f>>0]|0)==0?a[f+1>>0]&8:0){v=0;Ra=w;return v|0}h=xh(f)|0;switch(h|0){case 0:{c[g>>2]=0;r=f+116|0;h=c[r>>2]|0;s=f+70|0;a:do if(!(a[h+8>>0]|0)){n=f+68|0;o=f+20|0;p=f+50|0;t=f+1|0;q=f+2|0;while(1){k=(c[h+56>>2]|0)+((d[h+9>>0]|0)+8)|0;g=a[k>>0]|0;i=a[k+1>>0]|0;j=a[k+2>>0]|0;k=a[k+3>>0]|0;l=b[h+24>>1]|0;b[s>>1]=l;m=a[n>>0]|0;if(m<<24>>24>18){v=9;break}x=c[o>>2]|0;b[p>>1]=0;a[t>>0]=a[t>>0]&-7;y=m<<24>>24;b[f+72+(y<<1)>>1]=l;c[f+120+(y<<2)>>2]=h;b[s>>1]=0;a[n>>0]=m+1<<24>>24;g=yh(x,(i&255)<<16|(g&255)<<24|(j&255)<<8|k&255,r,f,d[q>>0]|0)|0;if(g|0)break;h=c[r>>2]|0;if(a[h+8>>0]|0){g=t;break a}}if((v|0)==9){c[u>>2]=32306;c[u+4>>2]=68229;c[u+8>>2]=31517;Db(11,32001,u);g=11}a[t>>0]=a[t>>0]&-9;y=g;Ra=w;return y|0}else g=f+1|0;while(0);b[s>>1]=(e[h+24>>1]|0)+65535;a[g>>0]=a[g>>0]|8;y=0;Ra=w;return y|0}case 16:{c[g>>2]=1;y=0;Ra=w;return y|0}default:{y=h;Ra=w;return y|0}}return 0}function ah(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var 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,J=0,K=0,M=0,N=0;N=Ra;Ra=Ra+80|0;H=N+40|0;G=N;A=N+64|0;B=N+60|0;M=N+56|0;C=N+52|0;c[C>>2]=i;o=c[f+8>>2]|0;q=o+4|0;F=c[q>>2]|0;if((a[f>>0]|0)==4){M=c[f+4>>2]|0;Ra=N;return M|0}I=f+1|0;l=a[I>>0]|0;a:do if(l&32){m=c[f+64>>2]|0;j=c[F+8>>2]|0;b:do if(!j)K=14;else{c:do if(m){do{if((j|0)!=(f|0)?(c[j+64>>2]|0)==(m|0):0)break c;j=c[j+24>>2]|0}while((j|0)!=0);if(!f)break b;else{K=14;break b}}else{k=f+24|0;while(1){if((j|0)!=(f|0))break c;j=c[k>>2]|0;if(!j){K=14;break b}}}while(0);j=$f(j,m,f)|0;c[M>>2]=j;if(!j)break a;Ra=N;return j|0}while(0);if((K|0)==14)a[I>>0]=l&-33;c[M>>2]=0}while(0);J=f+112|0;z=c[J>>2]|0;k=z;do if(!z){l=c[f+64>>2]|0;n=g+8|0;m=c[n>>2]|0;n=c[n+4>>2]|0;k=o+11|0;if(a[k>>0]|0?(a[k>>0]=0,p=c[(c[q>>2]|0)+8>>2]|0,p|0):0){j=p;do{if((a[j+1>>0]&16?(a[k>>0]=1,(c[j+64>>2]|0)==(l|0)):0)?(z=j+32|0,(c[z>>2]|0)==(m|0)?(c[z+4>>2]|0)==(n|0):0):0)a[j>>0]=1;j=c[j+24>>2]|0}while((j|0)!=0)}if(a[I>>0]&2?(z=f+32|0,(m|0)==(c[z>>2]|0)?(n|0)==(c[z+4>>2]|0):0):0){if(!(b[f+50>>1]|0))break;if((c[f+44>>2]|0)!=((c[g+32>>2]|0)+(c[g+28>>2]|0)|0))break;M=Ih(f,g)|0;Ra=N;return M|0}if((i|0)==0?(r=Xg(f,0,m,n,(h|0)!=0&1,C)|0,c[M>>2]=r,r|0):0){M=r;Ra=N;return M|0}}else{do if(!(h&2|i)){j=b[g+24>>1]|0;if(!(j<<16>>16)){j=g+8|0;j=th(f,c[g>>2]|0,c[j>>2]|0,c[j+4>>2]|0,(h|0)!=0&1,C)|0;c[M>>2]=j}else{c[G>>2]=k;c[G+4>>2]=c[g+20>>2];b[G+8>>1]=j;j=G+10|0;b[j>>1]=0;b[j+2>>1]=0;a[j+4>>0]=0;j=Xg(f,G,0,0,(h|0)!=0&1,C)|0;c[M>>2]=j}if(!j){j=c[C>>2]|0;break}else{M=j;Ra=N;return M|0}}else j=i;while(0);if((j|0)==0?(bg(f),y=f+32|0,n=c[y>>2]|0,z=g+8|0,(n|0)==(c[z>>2]|0)?(c[y+4>>2]|0)==(c[z+4>>2]|0):0):0){c[G+16>>2]=c[g>>2];c[G+28>>2]=n;c[G+32>>2]=0;M=Ih(f,G)|0;Ra=N;return M|0}}while(0);z=f+116|0;y=c[z>>2]|0;if((c[y+20>>2]|0)<0?(s=Jh(y)|0,c[M>>2]=s,s|0):0){M=s;Ra=N;return M|0}x=c[F+80>>2]|0;o=d[y+10>>0]|0;if(!(a[y+2>>0]|0)){m=c[g+8>>2]|0;l=c[g>>2]|0;do if(m>>>0>=128){j=x+o|0;k=((m|0)<0)<<31>>31;if(m>>>0<16384){w=bw(m|0,k|0,7)|0;L()|0;a[j>>0]=w&255|-128;a[j+1>>0]=m&127;j=2;break}else{j=(wh(j,m,k)|0)&255;break}}else{a[x+o>>0]=m;j=1}while(0);r=m;n=j+o|0;q=m}else{q=c[g+28>>2]|0;n=(c[g+32>>2]|0)+q|0;p=c[g+16>>2]|0;do if(n>>>0>=128){j=x+o|0;k=((n|0)<0)<<31>>31;if(n>>>0<16384){w=bw(n|0,k|0,7)|0;L()|0;a[j>>0]=w&255|-128;a[j+1>>0]=n&127;j=2;break}else{j=(wh(j,n,k)|0)&255;break}}else{a[x+o>>0]=n;j=1}while(0);m=j+o|0;j=x+m|0;l=g+8|0;k=c[l>>2]|0;l=c[l+4>>2]|0;do if(!(l>>>0<0|(l|0)==0&k>>>0<128))if(l>>>0<0|(l|0)==0&k>>>0<16384){w=bw(k|0,l|0,7)|0;L()|0;a[j>>0]=w&255|-128;a[j+1>>0]=k&127;j=2;break}else{j=wh(j,k,l)|0;break}else{a[j>>0]=k&127;j=1}while(0);r=n;n=j+m|0;l=p}k=x+n|0;j=e[y+14>>1]|0;d:do if((r|0)>(j|0)){i=e[y+16>>1]|0;v=c[y+52>>2]|0;w=v+36|0;m=(((r-i|0)>>>0)%(((c[w>>2]|0)+-4|0)>>>0)|0)+i|0;m=(m|0)>(j|0)?i:m;i=m+n|0;n=i+4|0;c[A>>2]=0;s=v+17|0;t=v+32|0;i=x+i|0;u=0;j=r;e:while(1){r=j;while(1){j=(r|0)>(m|0)?m:r;do if((q|0)<(j|0))if((q|0)>0){ew(k|0,l|0,q|0)|0;j=q;break}else{gw(k|0,0,j|0)|0;break}else ew(k|0,l|0,j|0)|0;while(0);r=r-j|0;if((r|0)<1){K=96;break e}l=l+j|0;q=q-j|0;m=m-j|0;if(!m)break;else k=k+j|0}c[B>>2]=0;p=c[A>>2]|0;if(!(a[s>>0]|0))j=p;else{m=1073741824/((c[t>>2]|0)>>>0)|0;j=p;do{o=j;j=j+1|0;if(j>>>0<2)k=0;else{k=o+-1|0;k=k-((k>>>0)%(((((c[w>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;k=((k+1|0)==(m|0)?3:2)+k|0}}while((o|0)==(m|0)|(k|0)==(j|0));c[A>>2]=j}k=fg(v,B,A,j,0)|0;c[G>>2]=k;j=(k|0)==0;if(j&(a[s>>0]|0)!=0){j=c[A>>2]|0;ig(v,j,(p|0)==0?3:4,p,G);k=c[G>>2]|0;if(k){K=81;break}}else{if(!j)break;j=c[A>>2]|0}a[i>>0]=j>>>24;a[i+1>>0]=j>>>16;a[i+2>>0]=j>>>8;a[i+3>>0]=j;do if(u|0){j=c[u+72>>2]|0;if(!(b[j+28>>1]&32)){Df(j);break}else{u=c[j+20>>2]|0;i=u+120|0;c[i>>2]=(c[i>>2]|0)+-1;u=u+136|0;c[j+16>>2]=c[u>>2];c[u>>2]=j;break}}while(0);u=c[B>>2]|0;k=u+56|0;i=c[k>>2]|0;a[i>>0]=0;a[i+1>>0]=0;a[i+2>>0]=0;a[i+3>>0]=0;k=(c[k>>2]|0)+4|0;m=(c[w>>2]|0)+-4|0;j=r}do if((K|0)==81){j=c[B>>2]|0;if(j){j=c[j+72>>2]|0;if(!(b[j+28>>1]&32)){Df(j);break}else{f=c[j+20>>2]|0;g=f+120|0;c[g>>2]=(c[g>>2]|0)+-1;f=f+136|0;c[j+16>>2]=c[f>>2];c[f>>2]=j;break}}}else if((K|0)==96){if(!u)break d;j=c[u+72>>2]|0;if(!(b[j+28>>1]&32)){Df(j);break d}else{B=c[j+20>>2]|0;A=B+120|0;c[A>>2]=(c[A>>2]|0)+-1;B=B+136|0;c[j+16>>2]=c[B>>2];c[B>>2]=j;break d}}while(0);do if(u|0){j=c[u+72>>2]|0;if(!(b[j+28>>1]&32)){Df(j);break}else{f=c[j+20>>2]|0;g=f+120|0;c[g>>2]=(c[g>>2]|0)+-1;f=f+136|0;c[j+16>>2]=c[f>>2];c[f>>2]=j;break}}while(0);c[M>>2]=k;M=k;Ra=N;return M|0}else{n=r+n|0;ew(k|0,l|0,q|0)|0;gw(k+q|0,0,r-q|0)|0;n=(n|0)>4?n:4}while(0);c[M>>2]=0;k=f+70|0;l=b[k>>1]|0;m=l&65535;j=c[C>>2]|0;if(!j){k=c[y+72>>2]|0;l=c[k+20>>2]|0;do if((b[k+28>>1]&4)!=0?(c[l+24>>2]|0)>>>0>=(c[k+24>>2]|0)>>>0:0)if(!(c[l+96>>2]|0)){c[M>>2]=0;break}else{E=Ve(k)|0;K=112;break}else K=107;while(0);do if((K|0)==107){j=c[l+40>>2]|0;if(j|0){c[M>>2]=j;K=123;break}if((c[l+148>>2]|0)>>>0>(c[l+152>>2]|0)>>>0){E=Wf(k)|0;K=112;break}else{E=Xf(k)|0;K=112;break}}while(0);if((K|0)==112?(c[M>>2]=E,E|0):0){j=E;K=123}if((K|0)==123){M=j;Ra=N;return M|0}j=(c[y+64>>2]|0)+(m<<1)|0;j=(c[y+56>>2]|0)+((d[j>>0]<<8|d[j+1>>0])&e[y+26>>1])|0;if(!(a[y+8>>0]|0)){E=d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24;a[x>>0]=E;a[x+1>>0]=E>>8;a[x+2>>0]=E>>16;a[x+3>>0]=E>>24}k=Ah(y,j,G)|0;c[M>>2]=k;k=e[G+18>>1]|0;do if((n|0)==(k|0)?(c[G+12>>2]|0)==(e[G+16>>1]|0):0){if(a[F+17>>0]|0?(n|0)>=(e[y+16>>1]|0):0)break;if((j+n|0)>>>0>(c[y+60>>2]|0)>>>0){c[H>>2]=32306;c[H+4>>2]=71903;c[H+8>>2]=31517;Db(11,32001,H);j=11}else{ew(j|0,x|0,n|0)|0;j=0}M=j;Ra=N;return M|0}while(0);Kh(y,m,k,M);j=c[M>>2]|0;if(!j)j=m;else{M=j;Ra=N;return M|0}}else if((j|0)<0?(D=l+1<<16>>16,(b[y+24>>1]|0)!=0):0){b[k>>1]=D;a[I>>0]=a[I>>0]&-3;j=D&65535}else j=m;Lh(y,j,x,n,0,0,M);b[f+50>>1]=0;if(!(a[y+12>>0]|0)){M=c[M>>2]|0;Ra=N;return M|0}a[I>>0]=a[I>>0]&-3;k=Mh(f)|0;c[M>>2]=k;j=c[z>>2]|0;a[j+12>>0]=0;a[f>>0]=1;if(!((h&2|0)!=0&(k|0)==0)){M=k;Ra=N;return M|0}m=f+68|0;k=a[m>>0]|0;if(k<<24>>24>-1){if(k<<24>>24){l=0;j=k;do{k=c[(c[f+120+(l<<2)>>2]|0)+72>>2]|0;if(!(b[k+28>>1]&32)){Df(k);j=a[m>>0]|0}else{h=c[k+20>>2]|0;I=h+120|0;c[I>>2]=(c[I>>2]|0)+-1;h=h+136|0;c[k+16>>2]=c[h>>2];c[h>>2]=k}l=l+1|0}while((l|0)<(j<<24>>24|0));j=c[z>>2]|0}j=c[j+72>>2]|0;if(!(b[j+28>>1]&32))Df(j);else{h=c[j+20>>2]|0;I=h+120|0;c[I>>2]=(c[I>>2]|0)+-1;h=h+136|0;c[j+16>>2]=c[h>>2];c[h>>2]=j}a[m>>0]=-1}m=g+8|0;f:do if(!(c[J>>2]|0))j=0;else{J=m;j=c[J>>2]|0;J=Sv(j|0,c[J+4>>2]|0,-1,-1)|0;h=L()|0;do if(h>>>0>0|(h|0)==0&J>>>0>2147483390)K=155;else{if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](j)|0;c[f+16>>2]=j;if(!j)break}else{l=Wa[c[29356>>2]&127](j)|0;if((c[14985]|0)>>>0>>0)c[14985]=j;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){K=c[14978]|0;J=Tv(j|0,k|0,l|0,((l|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&J>>>0<=K>>>0)&1}j=Wa[c[29340>>2]&127](l)|0;if(!j){K=155;break}k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0)c[14987]=k;c[f+16>>2]=j}ew(j|0,c[g>>2]|0,c[m>>2]|0)|0;j=0;break f}while(0);if((K|0)==155)c[f+16>>2]=0;c[M>>2]=7;j=7}while(0);a[f>>0]=3;K=m;g=c[K+4>>2]|0;M=f+56|0;c[M>>2]=c[K>>2];c[M+4>>2]=g;M=j;Ra=N;return M|0}function bh(f,g){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,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=Ra;Ra=Ra+48|0;B=N+24|0;i=N+40|0;M=N+36|0;x=N;q=c[f+8>>2]|0;r=q+4|0;C=c[r>>2]|0;j=g&2;do if((a[f>>0]|0)==3){c[i>>2]=0;a[f>>0]=1;g=c[7389]|0;if((g|0)!=0?(Wa[g&127](410)|0)!=0:0)g=10;else{h=f+16|0;g=f+56|0;g=th(f,c[h>>2]|0,c[g>>2]|0,c[g+4>>2]|0,0,i)|0;if(!g){g=c[h>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{L=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-L;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);c[h>>2]=0;h=c[i>>2]|0;g=f+4|0;if(!h){if(c[g>>2]|0)D=12}else{c[g>>2]=h;D=12}if((D|0)==12?(a[f>>0]|0)==0:0)a[f>>0]=2;c[M>>2]=0;break}}c[M>>2]=g;M=g;Ra=N;return M|0}while(0);L=f+68|0;F=a[L>>0]|0;p=F<<24>>24;I=f+70|0;J=b[I>>1]|0;z=J&65535;K=f+116|0;G=c[K>>2]|0;m=(c[G+64>>2]|0)+(z<<1)|0;m=(c[G+56>>2]|0)+((d[m>>0]<<8|d[m+1>>0])&e[G+26>>1])|0;g=G+20|0;if((c[g>>2]|0)<0?Jh(G)|0:0){M=11;Ra=N;return M|0}H=j<<24>>24!=0;n=G+8|0;do if(H){if(a[n>>0]|0){k=c[g>>2]|0;i=m+(d[G+10>>0]|0)|0;A=a[i>>0]|0;h=A&255;if(A<<24>>24<0){g=0;h=h&127;do{g=g+1|0;A=a[i+g>>0]|0;h=h<<7|A&127}while(A<<24>>24<0&g>>>0<8);i=i+g|0;j=h}else j=h;if(!(a[G+2>>0]|0))g=i+1|0;else{g=1;do{A=g;g=g+1|0}while((a[i+A>>0]|0)<0&g>>>0<10);g=i+g|0}h=e[G+14>>1]|0;if(j>>>0>h>>>0){i=e[G+16>>1]|0;A=(((j-i|0)>>>0)%(((c[(c[G+52>>2]|0)+36>>2]|0)+-4|0)>>>0)|0)+i|0;g=(g-m&65535)+4+(A>>>0>h>>>0?i:A)|0}else{g=g-m+j|0;g=g>>>0>4?g:4}if((k+2+(g&65535)|0)<=((c[C+36>>2]<<1>>>0)/3|0|0)?(b[G+24>>1]|0)!=1:0){A=1;break}}g=ag(f)|0;c[M>>2]=g;if(g){M=g;Ra=N;return M|0}else A=0}else A=0;while(0);k=f+1|0;do if(!(a[n>>0]|0)){a[k>>0]=a[k>>0]&-15;b[f+50>>1]=0;if(((a[f>>0]|0)==0?(l=b[I>>1]|0,l<<16>>16):0)?a[(c[K>>2]|0)+8>>0]|0:0){b[I>>1]=l+-1<<16>>16;c[M>>2]=0;break}g=Hh(f)|0;c[M>>2]=g;if(g|0){M=g;Ra=N;return M|0}}while(0);i=a[k>>0]|0;a:do if(i&32){j=c[f+64>>2]|0;g=c[C+8>>2]|0;b:do if(!g)D=51;else{c:do if(j){do{if((g|0)!=(f|0)?(c[g+64>>2]|0)==(j|0):0)break c;g=c[g+24>>2]|0}while((g|0)!=0);if(!f)break b;else{D=51;break b}}else{h=f+24|0;while(1){if((g|0)!=(f|0))break c;g=c[h>>2]|0;if(!g){D=51;break b}}}while(0);g=$f(g,j,f)|0;c[M>>2]=g;if(!g)break a;Ra=N;return g|0}while(0);if((D|0)==51)a[k>>0]=i&-33;c[M>>2]=0}while(0);if(((c[f+112>>2]|0)==0?(s=c[f+64>>2]|0,u=f+32|0,t=c[u>>2]|0,u=c[u+4>>2]|0,v=q+11|0,a[v>>0]|0):0)?(a[v>>0]=0,o=c[(c[r>>2]|0)+8>>2]|0,o|0):0){g=o;do{if((a[g+1>>0]&16?(a[v>>0]=1,(c[g+64>>2]|0)==(s|0)):0)?(r=g+32|0,(c[r>>2]|0)==(t|0)?(c[r+4>>2]|0)==(u|0):0):0)a[g>>0]=1;g=c[g+24>>2]|0}while((g|0)!=0)}h=c[G+72>>2]|0;i=c[h+20>>2]|0;do if((b[h+28>>1]&4)!=0?(c[i+24>>2]|0)>>>0>=(c[h+24>>2]|0)>>>0:0)if(!(c[i+96>>2]|0)){c[M>>2]=0;break}else{w=Ve(h)|0;D=73;break}else D=68;while(0);do if((D|0)==68){g=c[i+40>>2]|0;if(g|0){c[M>>2]=g;M=g;Ra=N;return M|0}if((c[i+148>>2]|0)>>>0>(c[i+152>>2]|0)>>>0){w=Wf(h)|0;D=73;break}else{w=Xf(h)|0;D=73;break}}while(0);if((D|0)==73?(c[M>>2]=w,w|0):0){M=w;Ra=N;return M|0}g=Ah(G,m,x)|0;c[M>>2]=g;Kh(G,z,e[x+18>>1]|0,M);g=c[M>>2]|0;if(g|0){M=g;Ra=N;return M|0}if(!(a[n>>0]|0)){o=c[K>>2]|0;if((c[o+20>>2]|0)<0?(y=Jh(o)|0,c[M>>2]=y,y|0):0){M=y;Ra=N;return M|0}l=c[(c[(((a[L>>0]|0)+-1|0)>(p|0)?f+120+(p+1<<2)|0:K)>>2]|0)+4>>2]|0;m=o+24|0;D=(c[o+64>>2]|0)+((e[m>>1]<<1)+-2)|0;D=(d[D>>0]<<8|d[D+1>>0])&e[o+26>>1];n=(c[o+56>>2]|0)+D|0;if(D>>>0<4){c[B>>2]=32306;c[B+4>>2]=72100;c[B+8>>2]=31517;Db(11,32001,B);M=11;Ra=N;return M|0}k=(Xa[c[o+76>>2]&255](o,n)|0)&65535;g=c[C+80>>2]|0;h=c[o+72>>2]|0;i=c[h+20>>2]|0;do if((b[h+28>>1]&4)!=0?(c[i+24>>2]|0)>>>0>=(c[h+24>>2]|0)>>>0:0)if(!(c[i+96>>2]|0)){c[M>>2]=0;D=91;break}else{E=Ve(h)|0;D=90;break}else D=85;while(0);do if((D|0)==85){j=c[i+40>>2]|0;if(j|0){c[M>>2]=j;break}if((c[i+148>>2]|0)>>>0>(c[i+152>>2]|0)>>>0){E=Wf(h)|0;D=90;break}else{E=Xf(h)|0;D=90;break}}while(0);if((D|0)==90?(c[M>>2]=E,(E|0)==0):0)D=91;if((D|0)==91)Lh(G,z,n+-4|0,k+4|0,g,l,M);Kh(o,(e[m>>1]|0)+-1|0,k,M);g=c[M>>2]|0;if(g|0){M=g;Ra=N;return M|0}}g=Mh(f)|0;c[M>>2]=g;if(g|0){M=g;Ra=N;return M|0}g=a[L>>0]|0;if(g<<24>>24>F<<24>>24){h=c[(c[K>>2]|0)+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);g=a[L>>0]|0}else{E=c[h+20>>2]|0;D=E+120|0;c[D>>2]=(c[D>>2]|0)+-1;E=E+136|0;c[h+16>>2]=c[E>>2];c[E>>2]=h}h=g+-1<<24>>24;a[L>>0]=h;g=h<<24>>24;if(h<<24>>24>F<<24>>24)do{h=h+-1<<24>>24;a[L>>0]=h;g=c[f+120+(g<<2)>>2]|0;do if(g){g=c[g+72>>2]|0;if(!(b[g+28>>1]&32)){Df(g);h=a[L>>0]|0;break}else{E=c[g+20>>2]|0;D=E+120|0;c[D>>2]=(c[D>>2]|0)+-1;E=E+136|0;c[g+16>>2]=c[E>>2];c[E>>2]=g;break}}while(0);g=h<<24>>24}while(h<<24>>24>F<<24>>24);c[K>>2]=c[f+120+(g<<2)>>2];g=Mh(f)|0;c[M>>2]=g;if(g|0){M=g;Ra=N;return M|0}}if(A|0){a[f>>0]=2;h=b[G+24>>1]|0;g=f+4|0;if((J&65535)<(h&65535)){c[g>>2]=1;M=0;Ra=N;return M|0}else{c[g>>2]=-1;b[I>>1]=(h&65535)+65535;M=0;Ra=N;return M|0}}g=xh(f)|0;c[M>>2]=g;if(H){h=a[L>>0]|0;if(h<<24>>24>-1){if(h<<24>>24){i=0;g=h;do{h=c[(c[f+120+(i<<2)>>2]|0)+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);g=a[L>>0]|0}else{J=c[h+20>>2]|0;I=J+120|0;c[I>>2]=(c[I>>2]|0)+-1;J=J+136|0;c[h+16>>2]=c[J>>2];c[J>>2]=h}i=i+1|0}while((i|0)<(g<<24>>24|0))}g=c[(c[K>>2]|0)+72>>2]|0;if(!(b[g+28>>1]&32))Df(g);else{K=c[g+20>>2]|0;J=K+120|0;c[J>>2]=(c[J>>2]|0)+-1;K=K+136|0;c[g+16>>2]=c[K>>2];c[K>>2]=g}a[L>>0]=-1;g=c[M>>2]|0}a[f>>0]=3}if((g|0)!=16){M=g;Ra=N;return M|0}c[M>>2]=0;M=0;Ra=N;return M|0}function ch(f,g){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;s=Ra;Ra=Ra+16|0;r=s;h=xh(f)|0;switch(h|0){case 0:{c[g>>2]=0;k=f+116|0;l=f+70|0;m=f+68|0;n=f+20|0;o=f+50|0;p=f+1|0;q=f+2|0;while(1){g=c[k>>2]|0;if(a[g+8>>0]|0){g=0;h=8;break}h=b[l>>1]|0;i=(c[g+64>>2]|0)+((h&65535)<<1)|0;i=(c[g+56>>2]|0)+((d[i>>0]<<8|d[i+1>>0])&e[g+26>>1])|0;j=a[m>>0]|0;if(j<<24>>24>18){h=5;break}i=d[i>>0]<<24|d[i+1>>0]<<16|d[i+2>>0]<<8|d[i+3>>0];t=c[n>>2]|0;b[o>>1]=0;a[p>>0]=a[p>>0]&-7;u=j<<24>>24;b[f+72+(u<<1)>>1]=h;c[f+120+(u<<2)>>2]=g;b[l>>1]=0;a[m>>0]=j+1<<24>>24;g=yh(t,i,k,f,d[q>>0]|0)|0;if(g|0){h=8;break}}if((h|0)==5){c[r>>2]=32306;c[r+4>>2]=68229;c[r+8>>2]=31517;Db(11,32001,r);u=11;Ra=s;return u|0}else if((h|0)==8){Ra=s;return g|0}break}case 16:{c[g>>2]=1;u=0;Ra=s;return u|0}default:{u=h;Ra=s;return u|0}}return 0}function dh(a){a=a|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;n=a+8|0;d=c[a+16>>2]|0;o=c[a+20>>2]|0;g=a+40|0;e=c[a+48>>2]|0;m=c[a+52>>2]|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;g=a+24|0;h=a+32|0;f=c[h>>2]|0;c[h>>2]=0;h=a+36|0;i=c[h>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{l=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);c[h>>2]=0;c[g>>2]=0;if(f|0)do{g=f;f=c[f>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{l=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}}while((f|0)!=0);c[a+28>>2]=0;k=(e|0)==0;if(!k){j=e;do{l=c[j+8>>2]|0;do if(l|0){Xi(0,c[l+28>>2]|0);f=c[l>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{i=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);f=c[l+4>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{i=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);f=c[l+12>>2]|0;if(f|0)ni(0,f);i=c[l+16>>2]|0;do if(i|0){h=i+4|0;f=c[i>>2]|0;if((c[h>>2]|0)>0){g=0;do{f=c[f+(g<<3)>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{p=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);g=g+1|0;f=c[i>>2]|0}while((g|0)<(c[h>>2]|0))}do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{p=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{p=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{p=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);j=c[j>>2]|0}while((j|0)!=0)}do if(m|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{p=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}while(0);if(!k)do{f=e;e=c[e>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](f);else{p=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f)}}while((e|0)!=0);c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;f=(d|0)==0;if(!f){e=d;do{g=c[e+8>>2]|0;if(g|0?(n=g+32|0,p=(c[n>>2]|0)+-1|0,c[n>>2]=p,(p|0)==0):0)Vi(0,g);e=c[e>>2]|0}while((e|0)!=0)}do if(o|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{p=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}while(0);if(!f)do{e=d;d=c[d>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](e);else{p=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e)}}while((d|0)!=0);e=a+56|0;f=a+64|0;d=c[f>>2]|0;c[f>>2]=0;f=a+68|0;g=c[f>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{p=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);c[f>>2]=0;c[e>>2]=0;if(d|0)do{e=d;d=c[d>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](e);else{p=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e)}}while((d|0)!=0);c[a+60>>2]=0;c[a+72>>2]=0;d=a+78|0;e=b[d>>1]|0;if(!(e&1)){p=e&-10;b[d>>1]=p;return}p=a+4|0;c[p>>2]=(c[p>>2]|0)+1;p=e&-10;b[d>>1]=p;return}function eh(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var 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;G=Ra;Ra=Ra+48|0;x=G+16|0;C=G;A=G+24|0;F=f+165|0;a[F>>0]=1;w=(g|0)==1?34855:34585;c[C>>2]=w;c[C+4>>2]=34874;c[C+8>>2]=34876;c[C+12>>2]=0;c[A>>2]=f;c[A+8>>2]=g;y=A+12|0;c[y>>2]=0;c[A+4>>2]=h;c[A+16>>2]=i;c[A+20>>2]=0;fh(A,3,C,0)|0;i=c[y>>2]|0;a:do if(!i){z=f+16|0;u=c[z>>2]|0;C=u+(g<<4)+4|0;i=c[C>>2]|0;if(!i){f=(c[u+28>>2]|0)+78|0;b[f>>1]=b[f>>1]|1;f=0;a[F>>0]=0;Ra=G;return f|0}l=c[i>>2]|0;m=c[i+4>>2]|0;k=m+4|0;c[k>>2]=l;b:do if(!(a[i+8>>0]|0)){m=Zb(i,0,0)|0;switch(m|0){case 0:{l=c[C>>2]|0;m=c[l+4>>2]|0;B=1;k=m+4|0;l=c[l>>2]|0;break b}case 516:{l=50738;break}case 100:{l=50760;break}case 101:{l=50782;break}default:{j=m&255;if(j>>>0<29?(520028155>>>j&1|0)!=0:0)l=c[22960+(j<<2)>>2]|0;else l=50724}}j=c[h>>2]|0;do if(j|0){if(c[f+480>>2]|0){Xd(f,j);break}E=j;if((c[f+304>>2]|0)>>>0<=E>>>0?(c[f+308>>2]|0)>>>0>E>>>0:0){E=f+300|0;c[j>>2]=c[E>>2];c[E>>2]=j;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{E=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);c:do if(l){k=(Eu(l)|0)+1|0;d:do if(c[f+272>>2]|0)if(!(a[f+81>>0]|0))D=32;else{j=0;break c}else{do if(!(0<0|(0==0?(e[f+276>>1]|0)>>>0>>0:0))){i=f+300|0;j=c[i>>2]|0;if(j|0){c[i>>2]=c[j>>2];E=f+284|0;c[E>>2]=(c[E>>2]|0)+1;break d}i=f+296|0;j=c[i>>2]|0;if(!j){j=f+292|0;break}else{c[i>>2]=c[j>>2];E=f+284|0;c[E>>2]=(c[E>>2]|0)+1;break d}}else j=f+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;D=32}while(0);if((D|0)==32)j=_d(f,k,0)|0;if(j)ew(j|0,l|0,k|0)|0;else j=0}else j=0;while(0);c[h>>2]=j;j=m;break a}else B=0;while(0);c[k>>2]=l;t=c[(c[m+12>>2]|0)+56>>2]|0;p=a[t+40>>0]|0;q=a[t+41>>0]|0;r=a[t+42>>0]|0;s=a[t+43>>0]|0;c[k>>2]=l;o=d[t+45>>0]<<16|d[t+44>>0]<<24|d[t+46>>0]<<8|d[t+47>>0];c[k>>2]=l;n=d[t+49>>0]<<16|d[t+48>>0]<<24|d[t+50>>0]<<8|d[t+51>>0];c[k>>2]=l;k=d[t+59>>0]|0;t=d[t+57>>0]<<16|d[t+56>>0]<<24|d[t+58>>0]<<8|k;v=f+32|0;u=u+(g<<4)+12|0;i=c[u>>2]|0;do if((c[v>>2]&33554432|0)==0&0==0){c[i>>2]=(q&255)<<16|(p&255)<<24|(r&255)<<8|s&255;if(t){if(!g){k=k&3;k=(k|0)==0?1:k&255;a[f+78>>0]=k;D=66;break}k=a[f+78>>0]|0;if((t|0)==(k&255|0))D=66;else{j=c[h>>2]|0;do if(j|0){if(c[f+480>>2]|0){Xd(f,j);break}A=j;if((c[f+304>>2]|0)>>>0<=A>>>0?(c[f+308>>2]|0)>>>0>A>>>0:0){A=f+300|0;c[j>>2]=c[A>>2];c[A>>2]=j;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{A=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-A;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);e:do if(c[f+272>>2]|0)if(!(a[f+81>>0]|0))D=61;else j=0;else{do if((e[f+276>>1]|0)>=68){i=f+300|0;j=c[i>>2]|0;if(j|0){c[i>>2]=c[j>>2];D=f+284|0;c[D>>2]=(c[D>>2]|0)+1;D=62;break e}i=f+296|0;j=c[i>>2]|0;if(!j){j=f+292|0;break}else{c[i>>2]=c[j>>2];D=f+284|0;c[D>>2]=(c[D>>2]|0)+1;D=62;break e}}else j=f+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;D=61}while(0);if((D|0)==61){j=_d(f,68,0)|0;D=62}if((D|0)==62)if(!j)j=0;else{i=j;k=34948;l=i+68|0;do{a[i>>0]=a[k>>0]|0;i=i+1|0;k=k+1|0}while((i|0)<(l|0))}c[h>>2]=j;j=1}}else D=65}else{c[i>>2]=0;n=0;o=0;D=65}while(0);if((D|0)==65){k=(c[(c[z>>2]|0)+(g<<4)+12>>2]|0)+78|0;b[k>>1]=b[k>>1]|4;k=a[f+78>>0]|0;D=66}do if((D|0)==66){a[i+77>>0]=k;k=i+80|0;if(!(c[k>>2]|0)){i=(n|0)>-1?n:(n|0)==-2147483648?2147483647:0-n|0;i=(i|0)==0?-2e3:i;c[k>>2]=i;c[m+4>>2]=l;k=c[(c[m>>2]|0)+212>>2]|0;c[k+16>>2]=i;l=c[7357]|0;m=c[k+44>>2]|0;if((i|0)<=-1){s=Yv(i|0,((i|0)<0)<<31>>31|0,-1024,-1)|0;t=L()|0;i=(c[k+28>>2]|0)+(c[k+24>>2]|0)|0;i=Wv(s|0,t|0,i|0,((i|0)<0)<<31>>31|0)|0;L()|0}bb[l&127](m,i);i=c[u>>2]|0}k=o&255;i=i+76|0;a[i>>0]=k;if(k<<24>>24){if((k&255)>4){j=c[h>>2]|0;do if(j|0){if(c[f+480>>2]|0){Xd(f,j);break}A=j;if((c[f+304>>2]|0)>>>0<=A>>>0?(c[f+308>>2]|0)>>>0>A>>>0:0){A=f+300|0;c[j>>2]=c[A>>2];c[A>>2]=j;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{A=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-A;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);f:do if(c[f+272>>2]|0)if(!(a[f+81>>0]|0))D=92;else j=0;else{do if((e[f+276>>1]|0)>=24){i=f+300|0;j=c[i>>2]|0;if(j|0){c[i>>2]=c[j>>2];D=f+284|0;c[D>>2]=(c[D>>2]|0)+1;D=93;break f}i=f+296|0;j=c[i>>2]|0;if(!j){j=f+292|0;break}else{c[i>>2]=c[j>>2];D=f+284|0;c[D>>2]=(c[D>>2]|0)+1;D=93;break f}}else j=f+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;D=92}while(0);if((D|0)==92){j=_d(f,24,0)|0;D=93}if((D|0)==93)if(!j)j=0;else{i=j;k=35016;l=i+24|0;do{a[i>>0]=a[k>>0]|0;i=i+1|0;k=k+1|0}while((i|0)<(l|0))}c[h>>2]=j;j=1;break}}else a[i>>0]=1;if((g|0)==0&(o|0)>3){t=v;u=c[t+4>>2]|0;h=v;c[h>>2]=c[t>>2]&-3;c[h+4>>2]=u}c[x>>2]=c[(c[z>>2]|0)+(g<<4)>>2];c[x+4>>2]=w;i=dd(f,35040,x)|0;h=f+312|0;x=c[h>>2]|0;c[h>>2]=0;k=nd(f,i,77,A,0)|0;c[h>>2]=x;k=(k|0)==0?c[y>>2]|0:k;do if(i|0){if(c[f+480>>2]|0){Xd(f,i);break}h=i;if((c[f+304>>2]|0)>>>0<=h>>>0?(c[f+308>>2]|0)>>>0>h>>>0:0){h=f+300|0;c[i>>2]=c[h>>2];c[h>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{h=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);i=(k|0)==0;if(i)gh(f,g)|0;if(!(a[f+81>>0]|0)){if(!i){j=k;D=112}}else{$b(f);j=7;D=112}if((D|0)==112?(c[v>>2]&134217728|0)==0&0==0:0)break;j=(c[(c[z>>2]|0)+(g<<4)+12>>2]|0)+78|0;b[j>>1]=b[j>>1]|1;j=0}while(0);if((B|0)!=0?(E=c[C>>2]|0,c[(c[E+4>>2]|0)+4>>2]=c[E>>2],(cc(E,0)|0)==0):0)bc(E,0)|0}else j=i;while(0);g:do if((j|0)>=7){if((j|0)<3082)switch(j|0){case 7:break;default:break g}else switch(j|0){case 3082:break;default:break g}i=f+81|0;if((a[i>>0]|0)==0?(a[f+82>>0]|0)==0:0){a[i>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;i=f+272|0;c[i>>2]=(c[i>>2]|0)+1;i=c[f+236>>2]|0;if(i|0)c[i+12>>2]=7}}else{switch(j|0){case 0:break;default:break g}a[F>>0]=0;Ra=G;return j|0}while(0);if((g|0)>-1){h=c[f+16>>2]|0;g=(c[h+(g<<4)+12>>2]|0)+78|0;b[g>>1]=b[g>>1]|8;g=(c[h+28>>2]|0)+78|0;b[g>>1]=b[g>>1]|8;g=f+24|0;c[g>>2]=c[g>>2]&-17}if(c[f+56>>2]|0){f=j;a[F>>0]=0;Ra=G;return f|0}n=f+20|0;i=c[n>>2]|0;if((i|0)<=0){f=j;a[F>>0]=0;Ra=G;return f|0}m=f+16|0;l=0;do{k=c[(c[m>>2]|0)+(l<<4)+12>>2]|0;if(b[k+78>>1]&8){dh(k);i=c[n>>2]|0}l=l+1|0}while((l|0)<(i|0));a[F>>0]=0;Ra=G;return j|0}function fh(e,f,g,h){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,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=Ra;Ra=Ra+96|0;x=B+64|0;w=B+56|0;v=B+40|0;l=B+24|0;k=B+16|0;j=B;n=B+80|0;s=B+76|0;A=c[e>>2]|0;t=c[e+8>>2]|0;r=c[A+16>>2]|0;q=(c[r+(t<<4)+12>>2]|0)+78|0;b[q>>1]=b[q>>1]&-5;q=e+20|0;c[q>>2]=(c[q>>2]|0)+1;q=A+81|0;if(a[q>>0]|0){c[e+12>>2]=7;e=1;Ra=B;return e|0}if(!g){e=0;Ra=B;return e|0}u=c[g+4>>2]|0;if(!u){f=c[g>>2]|0;h=e+4|0;i=c[h>>2]|0;if(c[i>>2]|0){e=0;Ra=B;return e|0}if(c[e+16>>2]&1|0){c[i>>2]=0;c[e+12>>2]=1;e=0;Ra=B;return e|0}if(0==0?(c[A+32>>2]&1|0)==0:0){c[k>>2]=(f|0)==0?35133:f;g=dd(A,35135,k)|0;c[c[h>>2]>>2]=g;c[l>>2]=32306;c[l+4>>2]=123732;c[l+8>>2]=31517;Db(11,32001,l);c[e+12>>2]=11;e=0;Ra=B;return e|0}else{c[j>>2]=32306;c[j+4>>2]=123725;c[j+8>>2]=31517;Db(11,32001,j);c[e+12>>2]=11;e=0;Ra=B;return e|0}}i=g+8|0;k=c[i>>2]|0;l=(k|0)==0;do if(!l){f=a[k>>0]|0;do if(!(f<<24>>24)){f=35095;o=13}else{j=f&255;f=208+j|0;if((j|32|0)==99){f=a[k+1>>0]|0;if(!(f<<24>>24)){f=35096;o=13;break}j=f&255;f=208+j|0;if((j|32|0)==114){f=a[k+2>>0]|0;if(!(f<<24>>24)){f=35097;o=13;break}j=f&255;f=208+j|0;if((j|32|0)==101){f=a[k+3>>0]|0;if(!(f<<24>>24)){f=35098;o=13;break}j=f&255;f=208+j|0;if((j|32|0)==97){f=a[k+4>>0]|0;if(!(f<<24>>24)){f=35099;o=13;break}j=f&255;f=208+j|0;if((j|32|0)==116){f=a[k+5>>0]|0;if(!(f<<24>>24)){f=35100;o=13;break}j=f&255;f=208+j|0;if((j|32|0)==101){f=a[k+6>>0]|0;if(!(f<<24>>24)){f=35101;o=13;break}if(f<<24>>24==32)break;else{h=32;f=208+(f&255)|0}}else h=101}else h=116}else h=97}else h=101}else h=114}else h=99;p=d[f>>0]|0;m=h;o=17}while(0);if((o|0)==13){p=0;m=a[208+(d[f>>0]|0)>>0]|0;o=17}if((o|0)==17?(p|0)!=(m&255|0):0)break;y=A+164|0;x=a[y>>0]|0;a[y>>0]=t;c[n>>2]=0;ii(u,n)|0;c[A+160>>2]=c[n>>2];z=A+166|0;a[z>>0]=a[z>>0]&-2;qd(A,c[i>>2]|0,-1,0,0,s,0)|0;f=c[A+64>>2]|0;a[y>>0]=x;a:do if(f|0?(a[z>>0]&1)==0:0){c[e+12>>2]=f;switch(f|0){case 9:break a;case 7:break;default:{if((f&255|0)==6)break a;gi(e,c[g>>2]|0,pd(A)|0);break a}}if((a[q>>0]|0)==0?(a[A+82>>0]|0)==0:0){a[q>>0]=1;if((c[A+180>>2]|0)>0)c[A+264>>2]=1;f=A+272|0;c[f>>2]=(c[f>>2]|0)+1;f=c[A+236>>2]|0;if(f|0)c[f+12>>2]=7}}while(0);gc(c[s>>2]|0)|0;e=0;Ra=B;return e|0}while(0);i=c[g>>2]|0;j=(i|0)==0;do if(!j){if(!l?a[k>>0]|0:0)break;h=hi(A,i,c[r+(t<<4)>>2]|0)|0;i=(h|0)==0;b:do if((!i?(y=h+44|0,ii(u,y)|0):0)?(z=c[y>>2]|0,(z|0)>=2):0){f=c[(c[h+12>>2]|0)+8>>2]|0;if(!f){e=0;Ra=B;return e|0}while(1){if(!((f|0)==(h|0)?1:(c[f+44>>2]|0)!=(z|0)))break b;f=c[f+20>>2]|0;if(!f){f=0;break}}Ra=B;return f|0}while(0);gi(e,c[g>>2]|0,i?35120:35103);e=0;Ra=B;return e|0}while(0);f=e+4|0;h=c[f>>2]|0;if(c[h>>2]|0){e=0;Ra=B;return e|0}if(c[e+16>>2]&1|0){c[h>>2]=0;c[e+12>>2]=1;e=0;Ra=B;return e|0}if(0==0?(c[A+32>>2]&1|0)==0:0){c[w>>2]=j?35133:i;g=dd(A,35135,w)|0;c[c[f>>2]>>2]=g;c[x>>2]=32306;c[x+4>>2]=123732;c[x+8>>2]=31517;Db(11,32001,x);c[e+12>>2]=11;e=0;Ra=B;return e|0}else{c[v>>2]=32306;c[v+4>>2]=123725;c[v+8>>2]=31517;Db(11,32001,v);c[e+12>>2]=11;e=0;Ra=B;return e|0}return 0}function gh(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=Ra;Ra=Ra+16|0;k=m;l=m+8|0;j=e+16|0;g=c[j>>2]|0;i=c[g+(f<<4)+12>>2]|0;h=c[i+16>>2]|0;if(h|0)do{n=(c[h+8>>2]|0)+36|0;c[n>>2]=c[n>>2]&-17;h=c[h>>2]|0}while((h|0)!=0);i=i+32|0;h=c[i>>2]|0;if(h){g=h;do{n=(c[g+8>>2]|0)+55|0;h=(d[n>>0]|d[n+1>>0]<<8)&-129;a[n>>0]=h;a[n+1>>0]=h>>8;g=c[g>>2]|0}while((g|0)!=0);g=c[j>>2]|0}c[l>>2]=e;g=c[g+(f<<4)>>2]|0;c[l+4>>2]=g;do if(Sd(e,35174,g)|0){c[k>>2]=g;h=dd(e,35187,k)|0;if(h){g=nd(e,h,78,l,0)|0;if(c[e+480>>2]|0){Xd(e,h);l=g;break}n=h;if((c[e+304>>2]|0)>>>0<=n>>>0?(c[e+308>>2]|0)>>>0>n>>>0:0){l=e+300|0;c[h>>2]=c[l>>2];c[l>>2]=h;l=g;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);l=g;break}else{l=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);l=g;break}}else l=7}else l=0;while(0);g=c[i>>2]|0;if(g|0)do{f=c[g+8>>2]|0;n=f+55|0;if(!((d[n>>0]|d[n+1>>0]<<8)&128)){k=c[f+8>>2]|0;j=f+50|0;i=b[j>>1]|0;i=(i&65535)<5?i:5;h=b[(c[f+12>>2]|0)+44>>1]|0;b[k>>1]=h;if(c[f+36>>2]|0){h=(h&65535)+65526&65535;b[k>>1]=h}if(h<<16>>16<33)b[k>>1]=33;ew(k+2|0,31120,i<<1&65535|0)|0;n=b[j>>1]|0;h=n&65535;if((i&65535)<(n&65535)){h=i&65535;do{h=h+1|0;b[k+(h<<1)>>1]=23;i=b[j>>1]|0}while(h>>>0<(i&65535)>>>0);h=i&65535}if(a[f+54>>0]|0)b[k+(h<<1)>>1]=0}g=c[g>>2]|0}while((g|0)!=0);if((l|0)!=7){Ra=m;return l|0}g=e+81|0;if(a[g>>0]|0){Ra=m;return l|0}if(a[e+82>>0]|0){Ra=m;return l|0}a[g>>0]=1;if((c[e+180>>2]|0)>0)c[e+264>>2]=1;g=e+272|0;c[g>>2]=(c[g>>2]|0)+1;g=c[e+236>>2]|0;if(!g){Ra=m;return l|0}c[g+12>>2]=7;Ra=m;return l|0}function hh(d){d=d|0;var f=0,g=0,h=0,i=0,j=0;i=c[d+32>>2]|0;j=d+8|0;if(!((b[j>>1]&9216)==0?!(c[d+24>>2]|0):0))Cg(d);a:do if(c[i+272>>2]|0)if(!(a[i+81>>0]|0))h=14;else{j=7;return j|0}else{do if((e[i+276>>1]|0)>=32){f=i+300|0;g=c[f>>2]|0;if(g|0){c[f>>2]=c[g>>2];f=i+284|0;c[f>>2]=(c[f>>2]|0)+1;break a}f=i+296|0;g=c[f>>2]|0;if(!g){f=i+292|0;break}else{c[f>>2]=c[g>>2];f=i+284|0;c[f>>2]=(c[f>>2]|0)+1;break a}}else f=i+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1;h=14}while(0);if((h|0)==14)g=_d(i,32,0)|0;if(!g){j=7;return j|0}h=g;if((c[i+304>>2]|0)>>>0<=h>>>0?(c[i+308>>2]|0)>>>0>h>>>0:0)f=e[i+276>>1]|0;else f=Wa[c[29352>>2]&127](g)|0;c[g>>2]=0;c[g+4>>2]=i;c[g+8>>2]=0;c[g+12>>2]=0;c[g+20>>2]=0;c[g+16>>2]=g+32;b[g+24>>1]=(f+1048544|0)>>>4;b[g+26>>1]=1;c[g+28>>2]=0;c[d+16>>2]=g;b[j>>1]=1040;c[d+36>>2]=94;j=0;return j|0}function ih(a){a=a|0;var b=0;b=(c[a>>2]|0)+200|0;c[a+4>>2]=c[b>>2];c[b>>2]=a;return}function jh(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=b+5|0;f=a[k>>0]|0;if(!(a[b+15>>0]|0))j=3;else switch(e|0){case 2:case 4:{j=3;break}default:{}}do if((j|0)==3?(g=f&255,(g|0)!=(e|0)):0){a[k>>0]=e;if(!((e&1|0)==0&((g&5|0)==1&(a[b+4>>0]|0)==0))){if((e|0)!=2)break;e=c[b+64>>2]|0;f=c[e>>2]|0;if(!f)break;Wa[c[f+4>>2]&127](e)|0;c[e>>2]=0;break}e=c[b+64>>2]|0;f=c[e>>2]|0;if(f|0){Wa[c[f+4>>2]&127](e)|0;c[e>>2]=0}i=b+17|0;if((d[i>>0]|0)>1){j=c[b>>2]|0;Ya[c[j+28>>2]&127](j,c[b+172>>2]|0,0)|0;break}e=b+16|0;g=a[e>>0]|0;h=g<<24>>24==0;if(h){f=Sf(b)|0;e=a[e>>0]|0}else{f=0;e=g}a:do if(e<<24>>24==1){e=a[i>>0]|0;switch(e<<24>>24){case 0:case 1:case 5:break;default:{j=19;break a}}if(!(a[b+13>>0]|0)){f=c[b+60>>2]|0;if(Xa[c[(c[f>>2]|0)+28>>2]&255](f,2)|0)break;e=a[i>>0]|0}if(e<<24>>24==5)j=19;else{a[i>>0]=2;j=19}}else if(!f)j=19;while(0);if((j|0)==19?(j=c[b>>2]|0,Ya[c[j+28>>2]&127](j,c[b+172>>2]|0,0)|0,g<<24>>24==1):0){e=c[b+60>>2]|0;f=c[e>>2]|0;if(!f)break;if(!(a[b+13>>0]|0))Xa[c[f+32>>2]&255](e,1)|0;if((a[i>>0]|0)==5)break;a[i>>0]=1;break}if(h)vf(b)}while(0);return d[k>>0]|0}function kh(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var 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,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;T=Ra;Ra=Ra+80|0;A=T+32|0;y=T+24|0;x=T+16|0;w=T+8|0;q=T;S=g+79|0;if(!(a[S>>0]|0)){j=c[f>>2]|0;do if(j|0){if(c[g+480>>2]|0){Xd(g,j);break}S=j;if((c[g+304>>2]|0)>>>0<=S>>>0?(c[g+308>>2]|0)>>>0>S>>>0:0){S=g+300|0;c[j>>2]=c[S>>2];c[S>>2]=j;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{S=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);a:do if(c[g+272>>2]|0)if(!(a[g+81>>0]|0))R=21;else j=0;else{do if((e[g+276>>1]|0)>=40){k=g+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];R=g+284|0;c[R>>2]=(c[R>>2]|0)+1;R=22;break a}k=g+296|0;j=c[k>>2]|0;if(!j){j=g+292|0;break}else{c[k>>2]=c[j>>2];R=g+284|0;c[R>>2]=(c[R>>2]|0)+1;R=22;break a}}else j=g+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;R=21}while(0);if((R|0)==21){j=_d(g,40,0)|0;R=22}if((R|0)==22)if(!j)j=0;else{l=j;k=36072;n=l+40|0;do{a[l>>0]=a[k>>0]|0;l=l+1|0;k=k+1|0}while((l|0)<(n|0))}c[f>>2]=j;g=1;Ra=T;return g|0}if((c[g+168>>2]|0)>1){j=c[f>>2]|0;do if(j|0){if(c[g+480>>2]|0){Xd(g,j);break}S=j;if((c[g+304>>2]|0)>>>0<=S>>>0?(c[g+308>>2]|0)>>>0>S>>>0:0){S=g+300|0;c[j>>2]=c[S>>2];c[S>>2]=j;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{S=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);b:do if(c[g+272>>2]|0)if(!(a[g+81>>0]|0))R=45;else j=0;else{do if((e[g+276>>1]|0)>=43){k=g+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];R=g+284|0;c[R>>2]=(c[R>>2]|0)+1;R=46;break b}k=g+296|0;j=c[k>>2]|0;if(!j){j=g+292|0;break}else{c[k>>2]=c[j>>2];R=g+284|0;c[R>>2]=(c[R>>2]|0)+1;R=46;break b}}else j=g+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;R=45}while(0);if((R|0)==45){j=_d(g,43,0)|0;R=46}if((R|0)==46)if(!j)j=0;else{l=j;k=36112;n=l+43|0;do{a[l>>0]=a[k>>0]|0;l=l+1|0;k=k+1|0}while((l|0)<(n|0))}c[f>>2]=j;g=1;Ra=T;return g|0}m=g+60|0;n=c[m>>2]|0;p=(i|0)!=0;do if(p){j=b[i+8>>1]|0;if((j&15|16)<<16>>16==18){if((j&514)==514?(a[i+10>>0]|0)==1:0){j=c[i+16>>2]|0;k=n}else if(!(j&1)){j=Gg(i,1)|0;k=c[m>>2]|0}else{j=0;k=n}c[m>>2]=k&-8|6;break}j=c[f>>2]|0;do if(j|0){if(c[g+480>>2]|0){Xd(g,j);break}S=j;if((c[g+304>>2]|0)>>>0<=S>>>0?(c[g+308>>2]|0)>>>0>S>>>0:0){S=g+300|0;c[j>>2]=c[S>>2];c[S>>2]=j;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{S=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);c:do if(c[g+272>>2]|0)if(!(a[g+81>>0]|0))R=70;else j=0;else{do if((e[g+276>>1]|0)>=18){k=g+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];R=g+284|0;c[R>>2]=(c[R>>2]|0)+1;R=71;break c}k=g+296|0;j=c[k>>2]|0;if(!j){j=g+292|0;break}else{c[k>>2]=c[j>>2];R=g+284|0;c[R>>2]=(c[R>>2]|0)+1;R=71;break c}}else j=g+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;R=70}while(0);if((R|0)==70){j=_d(g,18,0)|0;R=71}if((R|0)==71)if(!j)j=0;else{l=j;k=36155;n=l+18|0;do{a[l>>0]=a[k>>0]|0;l=l+1|0;k=k+1|0}while((l|0)<(n|0))}c[f>>2]=j;g=1;Ra=T;return g|0}else j=59952;while(0);E=g+32|0;G=E;F=c[G>>2]|0;G=c[G+4>>2]|0;H=g+24|0;I=c[H>>2]|0;J=g+100|0;K=c[J>>2]|0;M=g+104|0;N=c[M>>2]|0;O=g+88|0;P=a[O>>0]|0;c[H>>2]=I|6;o=E;c[o>>2]=F&-268456578|513;c[o+4>>2]=G;a[O>>0]=0;o=g+16|0;Q=c[o>>2]|0;v=c[Q+(h<<4)>>2]|0;Q=c[Q+(h<<4)+4>>2]|0;D=Q+4|0;r=a[(c[c[D>>2]>>2]|0)+12>>0]|0;u=c[g+20>>2]|0;c[q>>2]=j;j=yi(g,f,36173,q)|0;c[m>>2]=n;d:do if(!j){j=c[o>>2]|0;C=j+(u<<4)|0;z=c[j+(u<<4)+4>>2]|0;B=z+4|0;if(p){k=c[(c[c[B>>2]>>2]|0)+60>>2]|0;m=q;c[m>>2]=0;c[m+4>>2]=0;m=c[k>>2]|0;do if(m){n=(Xa[c[m+24>>2]&255](k,q)|0)!=0;p=c[q+4>>2]|0;if(!(n|((p|0)>0|(p|0)==0&(c[q>>2]|0)>>>0>0))){j=c[o>>2]|0;break}j=c[f>>2]|0;do if(j|0){if(c[g+480>>2]|0){Xd(g,j);break}B=j;if((c[g+304>>2]|0)>>>0<=B>>>0?(c[g+308>>2]|0)>>>0>B>>>0:0){B=g+300|0;c[j>>2]=c[B>>2];c[B>>2]=j;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{B=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-B;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);e:do if(c[g+272>>2]|0)if(!(a[g+81>>0]|0))R=104;else j=0;else{do if((e[g+276>>1]|0)>=27){k=g+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];R=g+284|0;c[R>>2]=(c[R>>2]|0)+1;R=105;break e}k=g+296|0;j=c[k>>2]|0;if(!j){j=g+292|0;break}else{c[k>>2]=c[j>>2];R=g+284|0;c[R>>2]=(c[R>>2]|0)+1;R=105;break e}}else j=g+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;R=104}while(0);if((R|0)==104){j=_d(g,27,0)|0;R=105}if((R|0)==105)if(!j)j=0;else{l=j;k=36196;n=l+27|0;do{a[l>>0]=a[k>>0]|0;l=l+1|0;k=k+1|0}while((l|0)<(n|0))}c[f>>2]=j;m=C;l=1;break d}while(0);c[H>>2]=c[H>>2]|8}m=c[D>>2]|0;c[m+4>>2]=c[Q>>2];m=(c[m+32>>2]|0)-(c[m+36>>2]|0)|0;j=c[(c[j+(h<<4)+12>>2]|0)+80>>2]|0;k=c[B>>2]|0;c[k+4>>2]=c[z>>2];k=c[(c[k>>2]|0)+212>>2]|0;c[k+16>>2]=j;n=c[7357]|0;o=c[k+44>>2]|0;if((j|0)<=-1){q=Yv(j|0,((j|0)<0)<<31>>31|0,-1024,-1)|0;h=L()|0;j=(c[k+28>>2]|0)+(c[k+24>>2]|0)|0;j=Wv(q|0,h|0,j|0,((j|0)<0)<<31>>31|0)|0;L()|0}bb[n&127](o,j);k=c[D>>2]|0;c[k+4>>2]=c[Q>>2];k=c[(c[k>>2]|0)+212>>2]|0;j=c[k+16>>2]|0;if((j|0)<=-1){q=Yv(j|0,((j|0)<0)<<31>>31|0,-1024,-1)|0;h=L()|0;j=(c[k+28>>2]|0)+(c[k+24>>2]|0)|0;j=Wv(q|0,h|0,j|0,((j|0)<0)<<31>>31|0)|0;L()|0}p=c[k+20>>2]|0;j=(j|0)<(p|0)?p:j;p=c[B>>2]|0;n=c[z>>2]|0;o=p+4|0;c[o>>2]=n;p=c[p>>2]|0;k=c[p+212>>2]|0;if(j|0){if((j|0)<0){q=Yv(j|0,((j|0)<0)<<31>>31|0,-1024,-1)|0;h=L()|0;j=(c[k+28>>2]|0)+(c[k+24>>2]|0)|0;j=Wv(q|0,h|0,j|0,((j|0)<0)<<31>>31|0)|0;L()|0}c[k+20>>2]=j}c[o>>2]=n;a[p+7>>0]=1;j=p+20|0;c[p+8>>2]=0;a[j>>0]=a[j>>0]&-2;j=zi(g,f,36223)|0;if(!j){h=(i|0)==0;j=Zb(Q,h?2:0,0)|0;if(!j){j=c[D>>2]|0;if((a[(c[j>>2]|0)+5>>0]|0)==5)c[g+92>>2]=0;j=c[j+32>>2]|0;o=c[B>>2]|0;c[o+4>>2]=c[z>>2];if(!(b[o+22>>1]&2)){i=(m|0)<0;if(i)n=(c[o+32>>2]|0)-(c[o+36>>2]|0)|0;else n=m;if(((j+-512|0)>>>0<65025?(j+-1&j|0)==0:0)?(c[o+32>>2]=j,t=o+80|0,s=c[t>>2]|0,s|0):0){k=s+-4|0;c[t>>2]=k;j=k;do if((c[14816]|0)>>>0<=j>>>0)if((c[14817]|0)>>>0>j>>>0){c[14979]=(c[14979]|0)+-1;c[k>>2]=c[14819];c[14819]=k;s=(c[14820]|0)+1|0;c[14820]=s;c[14821]=(s|0)<(c[14815]|0)&1;break}else{j=Wa[c[29352>>2]&127](k)|0;R=132;break}else{j=Wa[c[29352>>2]&127](k)|0;R=132}while(0);do if((R|0)==132){c[14980]=(c[14980]|0)-j;if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{s=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[t>>2]=0}s=o+32|0;t=Se(c[o>>2]|0,s,n)|0;c[o+36>>2]=(c[s>>2]|0)-(n&65535);if(!t){if(!(r<<24>>24)){j=c[g+92>>2]|0;p=c[B>>2]|0;c[p+4>>2]=c[z>>2];if(b[p+22>>1]&2){m=C;l=7;break}if(i)o=(c[p+32>>2]|0)-(c[p+36>>2]|0)|0;else o=m;do if((j+-512|0)>>>0<65025){if(j+-1&j|0)break;c[p+32>>2]=j;n=p+80|0;j=c[n>>2]|0;if(!j)break;k=j+-4|0;c[n>>2]=k;j=k;do if((c[14816]|0)>>>0<=j>>>0)if((c[14817]|0)>>>0>j>>>0){c[14979]=(c[14979]|0)+-1;c[k>>2]=c[14819];c[14819]=k;t=(c[14820]|0)+1|0;c[14820]=t;c[14821]=(t|0)<(c[14815]|0)&1;break}else{j=Wa[c[29352>>2]&127](k)|0;R=149;break}else{j=Wa[c[29352>>2]&127](k)|0;R=149}while(0);do if((R|0)==149){c[14980]=(c[14980]|0)-j;if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{t=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[n>>2]=0}while(0);s=p+32|0;t=Se(c[p>>2]|0,s,o)|0;c[p+36>>2]=(c[s>>2]|0)-(o&65535);if(t|0){m=C;l=7;break}}if(!(a[g+81>>0]|0)){j=a[g+84>>0]|0;do if(j<<24>>24>-1)j=j<<24>>24;else{j=c[D>>2]|0;c[j+4>>2]=c[Q>>2];if(!(a[j+17>>0]|0)){j=0;break}j=(a[j+18>>0]|0)==0?1:2}while(0);n=c[B>>2]|0;c[n+4>>2]=c[z>>2];k=j&255;if(b[n+22>>1]&2){j=n+17|0;if(((k|0)!=0|0)==(d[j>>0]|0))R=162}else{j=n+17|0;R=162}if((R|0)==162){a[j>>0]=(k|0)!=0&1;a[n+18>>0]=(k|0)==2&1}k=g+164|0;a[k>>0]=u;c[w>>2]=v;j=yi(g,f,36229,w)|0;if(j|0){m=C;l=j;break}c[x>>2]=v;j=yi(g,f,36337,x)|0;if(j|0){m=C;l=j;break}a[k>>0]=0;c[y>>2]=v;j=yi(g,f,36391,y)|0;c[H>>2]=c[H>>2]&-5;if(j|0){m=C;l=j;break}c[A>>2]=v;j=yi(g,f,36542,A)|0;if(j|0){m=C;l=j;break}j=0;do{k=d[36672+j>>0]|0;n=c[D>>2]|0;c[n+4>>2]=c[Q>>2];k=(k<<2)+36|0;n=(c[(c[n+12>>2]|0)+56>>2]|0)+k|0;n=(d[n+1>>0]<<16|d[n>>0]<<24|d[n+2>>0]<<8|d[n+3>>0])+(d[36672+(j|1)>>0]|0)|0;p=c[B>>2]|0;c[p+4>>2]=c[z>>2];p=c[p+12>>2]|0;o=c[p+56>>2]|0;p=c[p+72>>2]|0;q=c[p+20>>2]|0;do if(!(b[p+28>>1]&4))R=172;else{if((c[q+24>>2]|0)>>>0<(c[p+24>>2]|0)>>>0){R=172;break}if(!(c[q+96>>2]|0))break;l=Ve(p)|0;R=176}while(0);do if((R|0)==172){l=c[q+40>>2]|0;if(l|0){m=C;break d}if((c[q+148>>2]|0)>>>0>(c[q+152>>2]|0)>>>0){l=Wf(p)|0;R=176;break}else{l=Xf(p)|0;R=176;break}}while(0);if((R|0)==176?(R=0,l|0):0){m=C;break d}f=o+k|0;a[f>>0]=n>>>24;a[f+1>>0]=n>>>16;a[f+2>>0]=n>>>8;a[f+3>>0]=n;j=j+2|0}while(j>>>0<10);f:do if(h){k=c[D>>2]|0;c[k+4>>2]=c[Q>>2];j=c[z>>2]|0;l=c[B>>2]|0;c[l+4>>2]=j;k=c[(c[k>>2]|0)+60>>2]|0;n=c[k>>2]|0;do if(!n)R=182;else{x=c[l+32>>2]|0;x=Yv(c[l+44>>2]|0,0,x|0,((x|0)<0)<<31>>31|0)|0;f=L()|0;j=y;c[j>>2]=x;c[j+4>>2]=f;j=Ya[c[n+40>>2]&127](k,11,y)|0;j=(j|0)==12?0:j;if(j|0)break;j=c[z>>2]|0;R=182}while(0);do if((R|0)==182){l=A;n=l+48|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(n|0));c[A+20>>2]=j;c[A+24>>2]=z;j=A+4|0;c[j>>2]=Q;c[A+16>>2]=1;Yb(A,2147483647)|0;k=dc(A)|0;if(!k){f=(c[D>>2]|0)+22|0;b[f>>1]=b[f>>1]&-3;break f}j=c[c[(c[j>>2]|0)+4>>2]>>2]|0;if(a[j+12>>0]|0){j=k;break}Ff(j);j=k}while(0);m=C;l=j;break d}while(0);c[(c[B>>2]|0)+4>>2]=c[z>>2];l=cc(z,0)|0;if(l|0){m=C;break}l=bc(z,0)|0;k=(l|0)!=0;j=h^1;do if(k|j)k=k?2:0;else{j=c[B>>2]|0;c[j+4>>2]=c[z>>2];if(!(a[j+17>>0]|0))l=0;else l=(a[j+18>>0]|0)==0?1:2;k=c[D>>2]|0;c[k+4>>2]=c[Q>>2];if(b[k+22>>1]&2){j=k+17|0;if(((l|0)!=0|0)!=(d[j>>0]|0)){k=0;l=0;j=0;break}}else j=k+17|0;a[j>>0]=(l|0)!=0&1;a[k+18>>0]=(l|0)==2&1;k=0;l=0;j=0}while(0);if(j|(k&3)!=0){m=C;break}j=c[(c[B>>2]|0)+32>>2]|0;n=c[D>>2]|0;c[n+4>>2]=c[Q>>2];o=n+22|0;if(b[o>>1]&2){m=C;l=8;break}if(i)m=(c[n+32>>2]|0)-(c[n+36>>2]|0)|0;do if((j+-512|0)>>>0<65025){if(j+-1&j|0)break;c[n+32>>2]=j;l=n+80|0;j=c[l>>2]|0;if(!j)break;k=j+-4|0;c[l>>2]=k;j=k;do if((c[14816]|0)>>>0<=j>>>0)if((c[14817]|0)>>>0>j>>>0){c[14979]=(c[14979]|0)+-1;c[k>>2]=c[14819];c[14819]=k;f=(c[14820]|0)+1|0;c[14820]=f;c[14821]=(f|0)<(c[14815]|0)&1;break}else{j=Wa[c[29352>>2]&127](k)|0;R=207;break}else{j=Wa[c[29352>>2]&127](k)|0;R=207}while(0);do if((R|0)==207){c[14980]=(c[14980]|0)-j;if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{R=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[l>>2]=0}while(0);R=n+32|0;l=Se(c[n>>2]|0,R,m)|0;c[n+36>>2]=(c[R>>2]|0)-(m&65535);b[o>>1]=b[o>>1]|2;m=C}else{m=C;l=7}}else{m=C;l=7}}else{m=C;l=7}}else{m=C;l=j}}else{m=C;l=j}}else{m=0;l=j}while(0);a[g+164>>0]=0;c[H>>2]=I;k=E;c[k>>2]=F;c[k+4>>2]=G;c[J>>2]=K;c[M>>2]=N;a[O>>0]=P;k=c[D>>2]|0;c[k+4>>2]=c[Q>>2];j=k+22|0;if(!(b[j>>1]&2)){P=k+32|0;R=k+36|0;Q=(c[P>>2]|0)-(c[R>>2]|0)|0;Se(c[k>>2]|0,P,Q)|0;c[R>>2]=(c[P>>2]|0)-(Q&65535);b[j>>1]=b[j>>1]|2}a[S>>0]=1;if(m|0){S=m+4|0;ug(c[S>>2]|0);c[S>>2]=0;c[m+12>>2]=0}$b(g);g=l;Ra=T;return g|0}function lh(a){a=a|0;var c=0;c=a+8|0;if(!(b[c>>1]&9216)){b[c>>1]=1;b[c>>1]=4;return a|0}else{Dg(a);b[c>>1]=4;return a|0}return 0}function mh(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;f=a+8|0;do Dg(a);while((b[f>>1]&9216)!=0);c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];if(b[d+8>>1]&2048)return;b[f>>1]=b[f>>1]&-7169&65535|e;return}function nh(d){d=d|0;var e=0,f=0,g=0,h=0;g=d+8|0;f=b[g>>1]|0;h=d+12|0;do if(f&16384){e=(c[d>>2]|0)+(c[h>>2]|0)|0;if((e|0)<1)if(!(f&16))break;else e=1;if(!(Eg(d,e,1)|0)){gw((c[d+16>>2]|0)+(c[h>>2]|0)|0,0,c[d>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+(c[d>>2]|0);b[g>>1]=b[g>>1]&-16897}}while(0);e=d+16|0;f=d+10|0;if(!(Lg(c[e>>2]|0,d,c[h>>2]|0,a[f>>0]|0)|0)){d=0;return d|0}d=(Og(c[e>>2]|0,d,c[h>>2]|0,a[f>>0]|0)|0)==0;d=d?4:8;return d|0}function oh(d){d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+16|0;l=o+8|0;m=o;n=d+8|0;e=b[n>>1]|0;if(e&13){m=e;m=m&-16403;b[n>>1]=m;Ra=o;return}j=d+16|0;k=d+12|0;e=d+10|0;f=Og(c[j>>2]|0,d,c[k>>2]|0,a[e>>0]|0)|0;if(f){i=d;h=c[i>>2]|0;i=c[i+4>>2]|0;Lg(c[j>>2]|0,d,c[k>>2]|0,a[e>>0]|0)|0;if((f|0)==1?(g[l>>3]=+g[d>>3],g[m>>3]=+(h>>>0)+4294967296.0*+(i|0),(Lu(l,m,8)|0)==0):0){e=d;c[e>>2]=h;c[e+4>>2]=i;e=4}else e=8}else e=4;m=b[n>>1]&15904|e;b[n>>1]=m;m=m&-16403;b[n>>1]=m;Ra=o;return}function ph(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,l=0,m=0,n=0,o=0,p=0;p=Ra;Ra=Ra+80|0;n=p+40|0;o=p;i=f+4|0;h=a[i>>0]|0;if((a[d+10>>0]|0)==h<<24>>24){o=_a[c[f+12>>2]&127](c[f+8>>2]|0,c[d+12>>2]|0,c[d+16>>2]|0,c[e+12>>2]|0,c[e+16>>2]|0)|0;Ra=p;return o|0}m=c[d+32>>2]|0;j=n+8|0;c[n+32>>2]=m;k=n+24|0;c[k>>2]=0;l=o+8|0;b[l>>1]=1;c[o+32>>2]=m;m=o+24|0;c[m>>2]=0;c[n>>2]=c[d>>2];c[n+4>>2]=c[d+4>>2];c[n+8>>2]=c[d+8>>2];c[n+12>>2]=c[d+12>>2];c[n+16>>2]=c[d+16>>2];if(!(b[d+8>>1]&2048))b[j>>1]=b[j>>1]&-7169|4096;c[o>>2]=c[e>>2];c[o+4>>2]=c[e+4>>2];c[o+8>>2]=c[e+8>>2];c[o+12>>2]=c[e+12>>2];c[o+16>>2]=c[e+16>>2];if(!(b[e+8>>1]&2048))b[l>>1]=b[l>>1]&-7169|4096;d=b[j>>1]|0;if((d&514)==514?(a[n+10>>0]|0)==h<<24>>24:0)e=c[n+16>>2]|0;else if(!(d&1)){e=Gg(n,h)|0;h=a[i>>0]|0}else e=0;d=b[l>>1]|0;if((d&514)==514?(a[o+10>>0]|0)==h<<24>>24:0){d=c[o+16>>2]|0;h=17}else if(!(d&1)){d=Gg(o,h)|0;h=17}else h=18;if((h|0)==17)if((e|0)==0|(d|0)==0)h=18;else d=_a[c[f+12>>2]&127](c[f+8>>2]|0,c[n+12>>2]|0,e,c[o+12>>2]|0,d)|0;if((h|0)==18)if(!g)d=0;else{a[g>>0]=7;d=0}if(!((b[j>>1]&9216)==0&(c[k>>2]|0)==0))Cg(n);if(!((b[l>>1]&9216)==0&(c[m>>2]|0)==0))Cg(o);o=d;Ra=p;return o|0}function qh(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=c[d+12>>2]|0;i=c[e+12>>2]|0;f=b[d+8>>1]|0;g=b[e+8>>1]|0;if(!((g|f)&16384)){e=Lu(c[d+16>>2]|0,c[e+16>>2]|0,(h|0)>(i|0)?i:h)|0;return ((e|0)==0?h-i|0:e)|0}f=f&16384;if((f&g)<<16>>16){i=(c[d>>2]|0)-(c[e>>2]|0)|0;return i|0}if(!(f<<16>>16)){g=c[d+16>>2]|0;a:do if((h|0)>0){f=0;while(1){if(a[g+f>>0]|0){f=1;break}f=f+1|0;if((f|0)>=(h|0))break a}return f|0}while(0);i=h-(c[e>>2]|0)|0;return i|0}else{g=c[e+16>>2]|0;b:do if((i|0)>0){f=0;while(1){if(a[g+f>>0]|0){f=-1;break}f=f+1|0;if((f|0)>=(i|0))break b}return f|0}while(0);i=(c[d>>2]|0)-i|0;return i|0}return 0}function rh(b){b=b|0;var d=0,e=0,f=0,g=0;g=Ra;Ra=Ra+16|0;f=g;d=g+12|0;e=b+64|0;e=Xg(c[b+40>>2]|0,0,c[e>>2]|0,c[e+4>>2]|0,0,d)|0;if(e|0){f=e;Ra=g;return f|0}if(!(c[d>>2]|0)){a[b+3>>0]=0;c[b+28>>2]=0;f=0;Ra=g;return f|0}else{c[f>>2]=32306;c[f+4>>2]=79626;c[f+8>>2]=31517;Db(11,32001,f);f=11;Ra=g;return f|0}return 0}function sh(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=Ra;Ra=Ra+16|0;f=i;g=c[b+40>>2]|0;d=a[g>>0]|0;do if((d&255)>2){c[f>>2]=0;if(d<<24>>24==4){d=c[g+4>>2]|0;if(!d)d=0;else h=19}else{a[g>>0]=1;d=c[7389]|0;if((d|0)!=0?(Wa[d&127](410)|0)!=0:0)d=10;else{e=g+16|0;d=g+56|0;d=th(g,c[e>>2]|0,c[d>>2]|0,c[d+4>>2]|0,0,f)|0;if(!d){d=c[e>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{j=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);c[e>>2]=0;e=c[f>>2]|0;d=g+4|0;if(!e)if(!(c[d>>2]|0))d=a[g>>0]|0;else h=14;else{c[d>>2]=e;h=14}if((h|0)==14){d=a[g>>0]|0;if(!(d<<24>>24)){a[g>>0]=2;d=2}}h=20;break}}h=19}c[b+28>>2]=0}else h=20;while(0);if((h|0)==20){c[b+28>>2]=0;if(!(d<<24>>24)){j=0;Ra=i;return j|0}else d=0}a[b+2>>0]=1;j=d;Ra=i;return j|0}function th(d,f,g,h,i,j){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+16|0;r=t;if(!f){s=Xg(d,0,g,h,i,j)|0;Ra=t;return s|0}s=d+112|0;q=c[s>>2]|0;p=q+6|0;n=((e[p>>1]|0)*40|0)+56|0;m=c[q+12>>2]|0;a:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](n)|0;o=26;break}m=Wa[c[29356>>2]&127](n)|0;if((c[14985]|0)>>>0>>0)c[14985]=n;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){n=c[14978]|0;l=Tv(k|0,l|0,m|0,((m|0)<0)<<31>>31|0)|0;k=L()|0;c[14768]=((k|0)<0|(k|0)==0&l>>>0<=n>>>0)&1}m=Wa[c[29340>>2]&127](m)|0;if(!m){s=7;Ra=t;return s|0}k=Wa[c[29352>>2]&127](m)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0)c[14987]=k}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0){s=7;Ra=t;return s|0}}else{do if(!(0<0|(0==0?(e[m+276>>1]|0)>>>0>>0:0))){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];o=m+284|0;c[o>>2]=(c[o>>2]|0)+1;o=26;break a}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];o=m+284|0;c[o>>2]=(c[o>>2]|0)+1;o=26;break a}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,n,0)|0;o=26}while(0);if((o|0)==26)if(!k){s=7;Ra=t;return s|0}else m=k;c[m+4>>2]=m+16;c[m>>2]=q;o=m+8|0;b[o>>1]=(e[p>>1]|0)+1;_g(q,g,f,m);p=b[o>>1]|0;if(p<<16>>16!=0?(p&65535)<=(e[q+8>>1]|0):0)l=Xg(d,m,g,h,i,j)|0;else{c[r>>2]=32306;c[r+4>>2]=64001;c[r+8>>2]=31517;Db(11,32001,r);l=11}k=c[(c[s>>2]|0)+12>>2]|0;if(k|0){if(c[k+480>>2]|0){Xd(k,m);s=l;Ra=t;return s|0}s=m;if((c[k+304>>2]|0)>>>0<=s>>>0?(c[k+308>>2]|0)>>>0>s>>>0:0){s=k+300|0;c[m>>2]=c[s>>2];c[s>>2]=m;s=l;Ra=t;return s|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);s=l;Ra=t;return s|0}else{s=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);s=l;Ra=t;return s|0}return 0}function uh(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,l=0;l=Ra;Ra=Ra+16|0;h=l;k=g+8|0;b[k>>1]=1;j=c[d+20>>2]|0;j=Yv(c[j+44>>2]|0,0,c[j+32>>2]|0,0)|0;i=L()|0;if(i>>>0<0|(i|0)==0&j>>>0<(f+e|0)>>>0){c[h>>2]=32306;c[h+4>>2]=75549;c[h+8>>2]=31517;Db(11,32001,h);k=11;Ra=l;return k|0}h=f+1|0;j=g+24|0;do if((c[j>>2]|0)<(h|0)){h=Eg(g,h,0)|0;if(!h){h=g+16|0;i=h;h=c[h>>2]|0;break}else{k=h;Ra=l;return k|0}}else{h=c[g+20>>2]|0;i=g+16|0;c[i>>2]=h;b[k>>1]=1}while(0);h=cg(d,e,f,h,0)|0;if(!h){a[(c[i>>2]|0)+f>>0]=0;b[k>>1]=16;c[g+12>>2]=f;k=0;Ra=l;return k|0}if((b[k>>1]&9216)==0?(c[j>>2]|0)==0:0){k=h;Ra=l;return k|0}Cg(g);k=h;Ra=l;return k|0}function vh(a,e,f){a=a|0;e=e|0;f=f|0;var i=0,j=0,k=0,l=0,m=0;l=Ra;Ra=Ra+16|0;j=l+8|0;k=l;i=(d[a+1>>0]|0)<<16|(d[a>>0]|0)<<24|(d[a+2>>0]|0)<<8|(d[a+3>>0]|0);a=(d[a+5>>0]|0)<<16|(d[a+4>>0]|0)<<24|(d[a+6>>0]|0)<<8|(d[a+7>>0]|0);m=f;c[m>>2]=a;c[m+4>>2]=i;if((e|0)==6){k=4;m=f+8|0;b[m>>1]=k;Ra=l;return}c[h>>2]=a;c[h+4>>2]=i;g[j>>3]=+g[h>>3];g[k>>3]=+g[j>>3];k=+g[j>>3]==+g[k>>3]?8:1;m=f+8|0;b[m>>1]=k;Ra=l;return}function wh(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;h=Ra;Ra=Ra+16|0;g=h;if(d>>>0>16777215|(d|0)==16777215&c>>>0>4294967295){a[b+8>>0]=c;g=bw(c|0,d|0,8)|0;L()|0;a[b+7>>0]=g&255|-128;g=bw(c|0,d|0,15)|0;L()|0;a[b+6>>0]=g&255|-128;g=bw(c|0,d|0,22)|0;L()|0;a[b+5>>0]=g&255|-128;g=bw(c|0,d|0,29)|0;L()|0;a[b+4>>0]=g&255|-128;g=bw(c|0,d|0,36)|0;L()|0;a[b+3>>0]=g&255|-128;g=bw(c|0,d|0,43)|0;L()|0;a[b+2>>0]=g&255|-128;g=bw(c|0,d|0,50)|0;L()|0;a[b+1>>0]=g&255|-128;g=bw(c|0,d|0,57)|0;L()|0;a[b>>0]=g&255|-128;g=9;Ra=h;return g|0}e=0;f=c;while(1){c=e+1|0;a[g+e>>0]=f&255|-128;f=bw(f|0,d|0,7)|0;d=L()|0;if((f|0)==0&(d|0)==0)break;else e=c}a[g>>0]=a[g>>0]&127;d=0;while(1){a[b+d>>0]=a[g+e>>0]|0;if((e|0)>0){e=e+-1|0;d=d+1|0}else break}Ra=h;return c|0}function xh(e){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;o=Ra;Ra=Ra+32|0;n=o+16|0;i=o;m=e+68|0;f=a[m>>0]|0;do if(f<<24>>24>-1){h=e+116|0;g=c[h>>2]|0;if(!(f<<24>>24)){f=h;j=26}else{g=c[g+72>>2]|0;if(!(b[g+28>>1]&32)){Df(g);f=a[m>>0]|0}else{l=c[g+20>>2]|0;k=l+120|0;c[k>>2]=(c[k>>2]|0)+-1;l=l+136|0;c[g+16>>2]=c[l>>2];c[l>>2]=g}f=f+-1<<24>>24;a[m>>0]=f;if(f<<24>>24)do{g=c[(c[e+120+(f<<24>>24<<2)>>2]|0)+72>>2]|0;if(!(b[g+28>>1]&32)){Df(g);f=a[m>>0]|0}else{l=c[g+20>>2]|0;k=l+120|0;c[k>>2]=(c[k>>2]|0)+-1;l=l+136|0;c[g+16>>2]=c[l>>2];c[l>>2]=g}f=f+-1<<24>>24;a[m>>0]=f}while(f<<24>>24!=0);k=c[e+120>>2]|0;c[h>>2]=k;f=h;l=k}}else{h=e+64|0;f=c[h>>2]|0;if(!f){a[e>>0]=1;n=16;Ra=o;return n|0}g=a[e>>0]|0;if((g&255)>2){if(g<<24>>24==4){n=c[e+4>>2]|0;Ra=o;return n|0}f=e+16|0;g=c[f>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{l=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);c[f>>2]=0;a[e>>0]=1;f=c[h>>2]|0}h=e+116|0;f=yh(c[(c[e+8>>2]|0)+4>>2]|0,f,h,0,d[e+2>>0]|0)|0;if(!f){a[m>>0]=0;g=c[h>>2]|0;a[e+69>>0]=a[g+2>>0]|0;f=h;j=26;break}a[e>>0]=1;n=f;Ra=o;return n|0}while(0);do if((j|0)==26){if(a[g>>0]|0?((c[e+112>>2]|0)==0|0)==(d[g+2>>0]|0):0){l=g;k=g;break}c[i>>2]=32306;c[i+4>>2]=68367;c[i+8>>2]=31517;Db(11,32001,i);n=11;Ra=o;return n|0}while(0);g=e+70|0;b[g>>1]=0;h=e+50|0;b[h>>1]=0;i=e+1|0;j=a[i>>0]&-15;a[i>>0]=j;if(b[k+24>>1]|0){a[e>>0]=0;n=0;Ra=o;return n|0}if(a[k+8>>0]|0){a[e>>0]=1;n=16;Ra=o;return n|0}if((c[k+4>>2]|0)==1){n=(c[k+56>>2]|0)+((d[k+9>>0]|0)+8)|0;p=a[n>>0]|0;q=a[n+1>>0]|0;k=a[n+2>>0]|0;n=a[n+3>>0]|0;a[e>>0]=0;r=c[e+20>>2]|0;b[h>>1]=0;a[i>>0]=j;b[e+72>>1]=0;c[e+120>>2]=l;b[g>>1]=0;a[m>>0]=1;n=yh(r,(q&255)<<16|(p&255)<<24|(k&255)<<8|n&255,f,e,d[e+2>>0]|0)|0;Ra=o;return n|0}else{c[n>>2]=32306;c[n+4>>2]=68380;c[n+8>>2]=31517;Db(11,32001,n);r=11;Ra=o;return r|0}return 0}function yh(d,e,f,g,h){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;n=Ra;Ra=Ra+32|0;l=n+16|0;i=n;j=n+28|0;do if((c[d+44>>2]|0)>>>0>=e>>>0){k=c[d>>2]|0;h=Za[c[k+204>>2]&127](k,e,j,h)|0;if(!h){k=c[j>>2]|0;i=k+8|0;h=c[i>>2]|0;c[f>>2]=h;if(!(a[h>>0]|0)){i=c[i>>2]|0;j=i+4|0;if((c[j>>2]|0)!=(e|0)){c[i+56>>2]=c[k+4>>2];c[i+72>>2]=k;c[i+52>>2]=d;c[j>>2]=e;a[i+9>>0]=(e|0)==1?100:0;h=c[f>>2]|0}h=Gf(h)|0;if(!h)m=8}else m=8;if((m|0)==8){if(!g){g=0;Ra=n;return g|0}m=c[f>>2]|0;if(b[m+24>>1]|0?(a[m+2>>0]|0)==(a[g+69>>0]|0):0){g=0;Ra=n;return g|0}c[l>>2]=32306;c[l+4>>2]=65376;c[l+8>>2]=31517;Db(11,32001,l);h=11}i=c[f>>2]|0;if(i){i=c[i+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{m=c[i+20>>2]|0;f=m+120|0;c[f>>2]=(c[f>>2]|0)+-1;m=m+136|0;c[i+16>>2]=c[m>>2];c[m>>2]=i;break}}}}else{c[i>>2]=32306;c[i+4>>2]=65355;c[i+8>>2]=31517;Db(11,32001,i);h=11}while(0);if(!g){g=h;Ra=n;return g|0}f=g+68|0;m=(a[f>>0]|0)+-1<<24>>24;a[f>>0]=m;c[g+116>>2]=c[g+120+(m<<24>>24<<2)>>2];g=h;Ra=n;return g|0}function zh(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var 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;z=Ra;Ra=Ra+80|0;m=z+56|0;x=z+40|0;k=z+24|0;l=z+68|0;p=z;if((c[f+44>>2]|0)>>>0>>0){c[k>>2]=32306;c[k+4>>2]=72344;c[k+8>>2]=31517;Db(11,32001,k);y=11;Ra=z;return y|0}g=yh(f,g,l,0,0)|0;if(g|0){y=g;Ra=z;return y|0}w=c[l>>2]|0;v=w+1|0;if(a[v>>0]|0){c[m>>2]=32306;c[m+4>>2]=72349;c[m+8>>2]=31517;Db(11,32001,m);a[v>>0]=0;if(!w){y=11;Ra=z;return y|0}else j=11}else{a[v>>0]=1;t=w+9|0;s=d[t>>0]|0;u=w+24|0;a:do if(!(b[u>>1]|0)){g=0;r=w+8|0;y=13}else{l=w+56|0;m=w+26|0;n=w+64|0;o=w+8|0;k=0;do{g=(c[n>>2]|0)+(k<<1)|0;g=(c[l>>2]|0)+((d[g>>0]<<8|d[g+1>>0])&e[m>>1])|0;if((a[o>>0]|0)==0?(q=zh(f,d[g+1>>0]<<16|d[g>>0]<<24|d[g+2>>0]<<8|d[g+3>>0],1,i)|0,q|0):0){j=q;break a}g=Ah(w,g,p)|0;k=k+1|0;if(g|0){j=g;break a}g=b[u>>1]|0}while(k>>>0<(g&65535)>>>0);g=g&65535;r=o;y=13}while(0);b:do if((y|0)==13){if(!(a[r>>0]|0)){g=(c[w+56>>2]|0)+(s+8)|0;g=zh(f,d[g+1>>0]<<16|d[g>>0]<<24|d[g+2>>0]<<8|d[g+3>>0],1,i)|0;if(g|0){j=g;break}}else if(i|0)c[i>>2]=(c[i>>2]|0)+g;if(h|0){j=Bh(c[w+52>>2]|0,w,c[w+4>>2]|0)|0;break}g=c[w+72>>2]|0;k=c[g+20>>2]|0;if((b[g+28>>1]&4)!=0?(c[k+24>>2]|0)>>>0>=(c[g+24>>2]|0)>>>0:0){if(c[k+96>>2]|0){j=Ve(g)|0;y=27}}else y=23;do if((y|0)==23){j=c[k+40>>2]|0;if(j|0)break b;if((c[k+148>>2]|0)>>>0>(c[k+152>>2]|0)>>>0){j=Wf(g)|0;y=27;break}else{j=Xf(g)|0;y=27;break}}while(0);if((y|0)==27?j|0:0)break;f=c[w+56>>2]|0;j=a[f+s>>0]|8;o=j&255;l=w+52|0;q=c[l>>2]|0;k=d[t>>0]|0;if(!(b[q+22>>1]&12)){g=f+k|0;p=q+36|0}else{p=q+36|0;g=f+k|0;gw(g|0,0,(c[p>>2]|0)-k|0)|0}a[g>>0]=j;m=k+8|0;n=m&65535;g=f+(k+1)|0;a[g>>0]=0;a[g+1>>0]=0;a[g+2>>0]=0;a[g+3>>0]=0;a[f+(k+7)>>0]=0;g=f+(k+5)|0;a[g>>0]=(c[p>>2]|0)>>>8;a[g+1>>0]=c[p>>2];c[w+20>>2]=(c[p>>2]|0)-m&65535;g=o>>>3;a[r>>0]=g;g=4-(g<<2)&255;j=w+10|0;a[j>>0]=g;c[w+76>>2]=120;k=c[l>>2]|0;switch((o&247)<<24>>24){case 5:{a[w+2>>0]=1;a[w+3>>0]=1;c[w+80>>2]=180;b[w+14>>1]=b[k+28>>1]|0;j=k+30|0;y=35;break}case 2:{a[w+2>>0]=0;a[w+3>>0]=0;c[w+80>>2]=179;b[w+14>>1]=b[k+24>>1]|0;j=k+26|0;y=35;break}default:{c[x>>2]=32306;c[x+4>>2]=65035;c[x+8>>2]=31517;Db(11,32001,x);g=a[j>>0]|0}}if((y|0)==35){b[w+16>>1]=b[j>>1]|0;a[w+11>>0]=a[k+21>>0]|0}b[w+18>>1]=n;c[w+60>>2]=f+(c[p>>2]|0);c[w+64>>2]=f+m;c[w+68>>2]=f+(g&255);a[w+12>>0]=0;b[w+26>>1]=(c[q+32>>2]|0)+65535;b[u>>1]=0;a[w>>0]=1;j=0}while(0);a[v>>0]=0}g=c[w+72>>2]|0;if(!(b[g+28>>1]&32)){Df(g);y=j;Ra=z;return y|0}else{y=c[g+20>>2]|0;x=y+120|0;c[x>>2]=(c[x>>2]|0)+-1;y=y+136|0;c[g+16>>2]=c[y>>2];c[y>>2]=g;y=j;Ra=z;return y|0}return 0}function Ah(f,g,h){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,s=0,t=0;t=Ra;Ra=Ra+64|0;s=t+32|0;r=t+16|0;i=t;o=t+48|0;p=t+44|0;cb[c[f+80>>2]&255](f,g,h);k=e[h+16>>1]|0;j=c[h+12>>2]|0;if((j|0)==(k|0)){s=0;Ra=t;return s|0}g=g+(e[h+18>>1]|0)|0;if(g>>>0>(c[f+60>>2]|0)>>>0){c[i>>2]=32306;c[i+4>>2]=69515;c[i+8>>2]=31517;Db(11,32001,i);s=11;Ra=t;return s|0}h=g+-4|0;n=c[f+52>>2]|0;i=(c[n+36>>2]|0)+-4|0;g=j+~k+i|0;if(i>>>0>g>>>0){s=0;Ra=t;return s|0}l=n+44|0;f=d[h+1>>0]<<16|d[h>>0]<<24|d[h+2>>0]<<8|d[h+3>>0];j=(g>>>0)/(i>>>0)|0;while(1){j=j+-1|0;c[o>>2]=0;c[p>>2]=0;if(f>>>0<2){m=8;break}if(f>>>0>(c[l>>2]|0)>>>0){m=8;break}k=(j|0)==0;if(!k){g=dg(n,f,p,o)|0;if(g|0)break;g=c[p>>2]|0;if(g)m=20;else m=12}else m=12;a:do if((m|0)==12){g=(c[n>>2]|0)+212|0;i=Ya[c[29436>>2]&127](c[(c[g>>2]|0)+44>>2]|0,f,0)|0;do if(i|0){g=c[g>>2]|0;h=c[i+4>>2]|0;if(!(c[h>>2]|0)){g=sf(g,f,i)|0;if(!g)break;else h=g}else{m=g+12|0;c[m>>2]=(c[m>>2]|0)+1;m=h+30|0;b[m>>1]=(b[m>>1]|0)+1<<16>>16}g=c[h+8>>2]|0;i=g+4|0;if((c[i>>2]|0)==(f|0)){c[p>>2]=g;if(!g){m=22;break a}else{m=20;break a}}else{c[g+56>>2]=c[h+4>>2];c[g+72>>2]=h;c[g+52>>2]=n;c[i>>2]=f;a[g+9>>0]=0;c[p>>2]=g;m=20;break a}}while(0);c[p>>2]=0;g=0;m=22}while(0);if((m|0)==20){m=0;if((b[(c[g+72>>2]|0)+30>>1]|0)==1)m=22;else{c[s>>2]=32306;c[s+4>>2]=69552;c[s+8>>2]=31517;Db(11,32001,s);g=11}}if((m|0)==22){m=0;g=Bh(n,g,f)|0}h=c[p>>2]|0;do if(h|0?(q=c[h+72>>2]|0,q|0):0)if(!(b[q+28>>1]&32)){Df(q);break}else{f=c[q+20>>2]|0;i=f+120|0;c[i>>2]=(c[i>>2]|0)+-1;f=f+136|0;c[q+16>>2]=c[f>>2];c[f>>2]=q;break}while(0);if((g|0)!=0|k){m=30;break}else f=c[o>>2]|0}if((m|0)==8){c[r>>2]=32306;c[r+4>>2]=69532;c[r+8>>2]=31517;Db(11,32001,r);g=11}else if((m|0)==30){Ra=t;return g|0}s=g;Ra=t;return s|0}function Bh(f,g,h){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,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=Ra;Ra=Ra+48|0;r=B+16|0;j=B;s=B+32|0;A=B+28|0;m=c[f+12>>2]|0;if(h>>>0>=2?(x=f+44|0,(c[x>>2]|0)>>>0>=h>>>0):0){do if(!g){g=(c[f>>2]|0)+212|0;k=Ya[c[29436>>2]&127](c[(c[g>>2]|0)+44>>2]|0,h,0)|0;if(k){g=c[g>>2]|0;j=c[k+4>>2]|0;if(!(c[j>>2]|0)){g=sf(g,h,k)|0;if(!g){g=0;break}else j=g}else{z=g+12|0;c[z>>2]=(c[z>>2]|0)+1;z=j+30|0;b[z>>1]=(b[z>>1]|0)+1<<16>>16}g=c[j+8>>2]|0;k=g+4|0;if((c[k>>2]|0)!=(h|0)){c[g+56>>2]=c[j+4>>2];c[g+72>>2]=j;c[g+52>>2]=f;c[k>>2]=h;a[g+9>>0]=0}}else g=0}else{z=c[g+72>>2]|0;q=z+30|0;b[q>>1]=(b[q>>1]|0)+1<<16>>16;z=(c[z+12>>2]|0)+12|0;c[z>>2]=(c[z>>2]|0)+1}while(0);k=c[m+72>>2]|0;l=c[k+20>>2]|0;do if((b[k+28>>1]&4)!=0?(c[l+24>>2]|0)>>>0>=(c[k+24>>2]|0)>>>0:0)if(!(c[l+96>>2]|0)){c[A>>2]=0;z=23;break}else{j=Ve(k)|0;z=22;break}else z=17;while(0);do if((z|0)==17){j=c[l+40>>2]|0;if(j|0){c[A>>2]=j;i=0;z=105;break}if((c[l+148>>2]|0)>>>0>(c[l+152>>2]|0)>>>0){j=Wf(k)|0;z=22;break}else{j=Xf(k)|0;z=22;break}}while(0);if((z|0)==22){c[A>>2]=j;if(!j)z=23;else{i=0;z=105}}a:do if((z|0)==23){q=m+56|0;p=c[q>>2]|0;j=p+36|0;k=p+37|0;m=p+38|0;p=p+39|0;l=d[k>>0]<<16|d[j>>0]<<24|d[m>>0]<<8|d[p>>0];o=l+1|0;a[j>>0]=o>>>24;a[k>>0]=o>>>16;a[m>>0]=o>>>8;a[p>>0]=o;p=f+22|0;if(!(b[p>>1]&4))m=g;else{if(!g){g=c[f>>2]|0;g=Za[c[g+204>>2]&127](g,h,s,0)|0;if(g|0){c[A>>2]=g;break}i=c[s>>2]|0;g=c[i+8>>2]|0;j=g+4|0;if((c[j>>2]|0)!=(h|0)){c[g+56>>2]=c[i+4>>2];c[g+72>>2]=i;c[g+52>>2]=f;c[j>>2]=h;a[g+9>>0]=0}c[A>>2]=0}j=c[g+72>>2]|0;k=c[j+20>>2]|0;do if((b[j+28>>1]&4)!=0?(c[k+24>>2]|0)>>>0>=(c[j+24>>2]|0)>>>0:0)if(!(c[k+96>>2]|0)){c[A>>2]=0;break}else{n=Ve(j)|0;z=40;break}else z=35;while(0);do if((z|0)==35){i=c[k+40>>2]|0;if(i|0){c[A>>2]=i;i=0;z=105;break a}if((c[k+148>>2]|0)>>>0>(c[k+152>>2]|0)>>>0){n=Wf(j)|0;z=40;break}else{n=Xf(j)|0;z=40;break}}while(0);if((z|0)==40?(c[A>>2]=n,n|0):0){i=0;z=105;break}gw(c[g+56>>2]|0,0,c[(c[g+52>>2]|0)+32>>2]|0)|0;m=g}if(a[f+17>>0]|0?(ig(f,h,2,0,A),c[A>>2]|0):0){i=0;g=m;z=105;break}if(l){n=c[q>>2]|0;n=d[n+33>>0]<<16|d[n+32>>0]<<24|d[n+34>>0]<<8|d[n+35>>0];g=c[f>>2]|0;g=Za[c[g+204>>2]&127](g,n,s,0)|0;if(g|0){c[A>>2]=g;i=0;g=m;z=105;break}g=c[s>>2]|0;i=c[g+8>>2]|0;j=i+4|0;if((c[j>>2]|0)==(n|0)){g=i+56|0;l=g;g=c[g>>2]|0}else{o=c[g+4>>2]|0;l=i+56|0;c[l>>2]=o;c[i+72>>2]=g;c[i+52>>2]=f;c[j>>2]=n;a[i+9>>0]=(n|0)==1?100:0;g=o}c[A>>2]=0;o=d[g+5>>0]<<16|d[g+4>>0]<<24|d[g+6>>0]<<8|d[g+7>>0];j=(c[f+36>>2]|0)>>>2;if(o>>>0>(j+-2|0)>>>0){c[r>>2]=32306;c[r+4>>2]=69422;c[r+8>>2]=31517;Db(11,32001,r);c[A>>2]=11;g=m;z=105;break}if(o>>>0<(j+-8|0)>>>0){j=c[i+72>>2]|0;k=c[j+20>>2]|0;do if((b[j+28>>1]&4)!=0?(c[k+24>>2]|0)>>>0>=(c[j+24>>2]|0)>>>0:0)if(!(c[k+96>>2]|0)){c[A>>2]=0;break}else{g=Ve(j)|0;z=63;break}else z=58;while(0);do if((z|0)==58){g=c[k+40>>2]|0;if(g|0){c[A>>2]=g;g=m;z=105;break a}if((c[k+148>>2]|0)>>>0>(c[k+152>>2]|0)>>>0){g=Wf(j)|0;z=63;break}else{g=Xf(j)|0;z=63;break}}while(0);if((z|0)==63){c[A>>2]=g;if(g|0){g=m;z=105;break}g=c[l>>2]|0}z=o+1|0;a[g+4>>0]=z>>>24;a[g+5>>0]=z>>>16;a[g+6>>0]=z>>>8;a[g+7>>0]=z;z=(c[l>>2]|0)+((o<<2)+8)|0;a[z>>0]=h>>>24;a[z+1>>0]=h>>>16;a[z+2>>0]=h>>>8;a[z+3>>0]=h;do if(((m|0?(b[p>>1]&4)==0:0)?(t=c[m+72>>2]|0,u=c[t+20>>2]|0,(a[u+12>>0]|0)==0):0)?(v=t+28|0,w=e[v>>1]|0,w&2|0):0){if(c[u+96>>2]|0)break;b[v>>1]=w&65515|16}while(0);n=f+60|0;g=c[n>>2]|0;do if(!g){l=c[x>>2]|0;do if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](512)|0;if(!g)z=83;else z=84}else{g=Wa[c[29356>>2]&127](512)|0;if((c[14985]|0)>>>0<512)c[14985]=512;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){z=c[14978]|0;f=Tv(j|0,k|0,g|0,((g|0)<0)<<31>>31|0)|0;y=L()|0;c[14768]=((y|0)<0|(y|0)==0&f>>>0<=z>>>0)&1}g=Wa[c[29340>>2]&127](g)|0;if(!g){z=83;break}j=Wa[c[29352>>2]&127](g)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0<=(c[14987]|0)>>>0){z=84;break}c[14987]=j;z=84}while(0);if((z|0)==83){c[n>>2]=0;g=7;break}else if((z|0)==84){gw(g+4|0,0,508)|0;c[g>>2]=l;c[n>>2]=g;z=85;break}}else z=85;while(0);if((z|0)==85)if((c[g>>2]|0)>>>0>>0)g=0;else g=df(g,h)|0;c[A>>2]=g;g=m;z=105;break}}else{n=0;i=0}if(!m){g=c[f>>2]|0;g=Za[c[g+204>>2]&127](g,h,s,0)|0;if(g|0){c[A>>2]=g;z=111;break}j=c[s>>2]|0;g=c[j+8>>2]|0;k=g+4|0;if((c[k>>2]|0)!=(h|0)){c[g+56>>2]=c[j+4>>2];c[g+72>>2]=j;c[g+52>>2]=f;c[k>>2]=h;a[g+9>>0]=0}c[A>>2]=0;m=g}g=m+72|0;k=c[g>>2]|0;l=c[k+20>>2]|0;do if((b[k+28>>1]&4)!=0?(c[l+24>>2]|0)>>>0>=(c[k+24>>2]|0)>>>0:0)if(!(c[l+96>>2]|0)){c[A>>2]=0;break}else{y=Ve(k)|0;z=104;break}else z=99;while(0);do if((z|0)==99){j=c[l+40>>2]|0;if(j|0){c[A>>2]=j;g=m;z=105;break a}if((c[l+148>>2]|0)>>>0>(c[l+152>>2]|0)>>>0){y=Wf(k)|0;z=104;break}else{y=Xf(k)|0;z=104;break}}while(0);if((z|0)==104?(c[A>>2]=y,y|0):0){g=m;z=105;break}z=m+56|0;f=c[z>>2]|0;a[f>>0]=n>>>24;a[f+1>>0]=n>>>16;a[f+2>>0]=n>>>8;a[f+3>>0]=n;z=(c[z>>2]|0)+4|0;a[z>>0]=0;a[z+1>>0]=0;a[z+2>>0]=0;a[z+3>>0]=0;z=c[q>>2]|0;a[z+32>>0]=h>>>24;a[z+33>>0]=h>>>16;a[z+34>>0]=h>>>8;a[z+35>>0]=h;a[m>>0]=0;if(!m)z=111;else z=108}while(0);if((z|0)==105)if(!g)z=111;else{a[g>>0]=0;g=g+72|0;z=108}do if((z|0)==108){g=c[g>>2]|0;if(!(b[g+28>>1]&32)){Df(g);z=111;break}else{z=c[g+20>>2]|0;h=z+120|0;c[h>>2]=(c[h>>2]|0)+-1;z=z+136|0;c[g+16>>2]=c[z>>2];c[z>>2]=g;z=111;break}}while(0);do if((z|0)==111?i|0:0){g=c[i+72>>2]|0;if(!(b[g+28>>1]&32)){Df(g);break}else{h=c[g+20>>2]|0;z=h+120|0;c[z>>2]=(c[z>>2]|0)+-1;h=h+136|0;c[g+16>>2]=c[h>>2];c[h>>2]=g;break}}while(0);A=c[A>>2]|0;Ra=B;return A|0}c[j>>2]=32306;c[j+4>>2]=69368;c[j+8>>2]=31517;Db(11,32001,j);A=11;Ra=B;return A|0}function Ch(a,b,c){a=a|0;b=b|0;c=c|0;return Fh(a,b,c,0)|0}function Dh(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;h=f+(a[f>>0]&63)|0;switch(a[f+1>>0]|0){case 1:{k=a[h>>0]|0;j=((k|0)<0)<<31>>31;break}case 2:{k=a[h>>0]<<8|d[h+1>>0];j=((k|0)<0)<<31>>31;break}case 3:{k=d[h+1>>0]<<8|a[h>>0]<<16|d[h+2>>0];j=((k|0)<0)<<31>>31;break}case 4:{k=d[h+1>>0]<<16|d[h>>0]<<24|d[h+2>>0]<<8|d[h+3>>0];j=((k|0)<0)<<31>>31;break}case 5:{k=h+2|0;j=a[h>>0]<<8|d[h+1>>0];k=d[k+1>>0]<<16|d[k>>0]<<24|d[k+2>>0]<<8|d[k+3>>0];break}case 6:{k=h+4|0;j=d[h+1>>0]<<16|d[h>>0]<<24|d[h+2>>0]<<8|d[h+3>>0];k=d[k+1>>0]<<16|d[k>>0]<<24|d[k+2>>0]<<8|d[k+3>>0];break}case 8:{j=0;k=0;break}case 9:{j=0;k=1;break}case 7:case 0:{g=Fh(b,f,g,0)|0;return g|0}default:{g=Fh(b,f,g,0)|0;return g|0}}i=c[g+4>>2]|0;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>(j|0)|(i|0)==(j|0)&h>>>0>k>>>0){g=a[g+12>>0]|0;return g|0}if((i|0)<(j|0)|(i|0)==(j|0)&h>>>0>>0){g=a[g+13>>0]|0;return g|0}if((e[g+8>>1]|0)>1){g=Fh(b,f,g,1)|0;return g|0}else{f=a[g+10>>0]|0;a[g+14>>0]=1;g=f;return g|0}return 0}function Eh(b,f,g){b=b|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;p=Ra;Ra=Ra+32|0;o=p+8|0;j=p;k=f+1|0;i=a[k>>0]|0;l=i&255;do if(i<<24>>24<=-1){h=d[f+2>>0]|0;if(!(h&128)){n=l<<7&16256|h;m=7;break}i=d[f+3>>0]|0;if(i&128){Of(k,j)|0;l=j;h=c[l>>2]|0;if((h|0)==(h|0)?0==(c[l+4>>2]|0):0){n=h;m=7;break}else break}else{n=(l<<14|i)&2080895|h<<7&16256;m=7;break}}else{n=l;m=7}while(0);if((m|0)==7?(n|0)>=12:0){if(!(n&1)){g=a[g+13>>0]|0;Ra=p;return g|0}h=d[f>>0]|0;j=(n+-12|0)/2|0;if((j+h|0)>(b|0)){c[o>>2]=32306;c[o+4>>2]=80874;c[o+8>>2]=31517;Db(11,32001,o);a[g+11>>0]=11;g=0;Ra=p;return g|0}o=c[g+4>>2]|0;i=c[o+12>>2]|0;h=Lu(f+h|0,c[o+16>>2]|0,(j|0)>(i|0)?i:j)|0;if(h|0)if((h|0)>0){g=a[g+13>>0]|0;Ra=p;return g|0}else{g=a[g+12>>0]|0;Ra=p;return g|0}h=j-i|0;if(!h)if((e[g+8>>1]|0)>1){g=Fh(b,f,g,1)|0;Ra=p;return g|0}else{f=a[g+10>>0]|0;a[g+14>>0]=1;g=f;Ra=p;return g|0}else if((h|0)>0){g=a[g+13>>0]|0;Ra=p;return g|0}else{g=a[g+12>>0]|0;Ra=p;return g|0}}g=a[g+12>>0]|0;Ra=p;return g|0}function Fh(f,h,i,j){f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0;P=Ra;Ra=Ra+96|0;O=P+80|0;N=P+64|0;q=P+48|0;K=P+40|0;M=P;p=c[i+4>>2]|0;if(!j){G=a[h>>0]|0;j=G&255;do if(G<<24>>24<=-1){k=d[h+1>>0]|0;if(!(k&128)){j=j<<7&16256|k;k=2;break}l=d[h+2>>0]|0;if(!(l&128)){j=(j<<14|l)&2080895|k<<7&16256;k=3;break}else{k=Of(h,K)|0;G=K;j=c[G>>2]|0;j=((j|0)==(j|0)?0==(c[G+4>>2]|0):0)?j:-1;break}}else k=1;while(0);m=j;r=0;k=k&255;l=j}else{m=h+1|0;G=a[m>>0]|0;j=G&255;do if(G<<24>>24>-1){l=d[h>>0]|0;k=2;w=12}else{k=d[h+2>>0]|0;do if(k&128){l=d[h+3>>0]|0;if(!(l&128)){j=(j<<14|l)&2080895|k<<7&16256;k=3;w=10;break}k=Of(m,K)|0;G=K;j=c[G>>2]|0;if((j|0)==(j|0)?0==(c[G+4>>2]|0):0)w=10;else{j=-1;l=d[h>>0]|0;k=(k&255)+1|0}}else{j=j<<7&16256|k;k=2;w=10}while(0);if((w|0)==10){k=(k&255)+1|0;l=d[h>>0]|0;if(j>>>0<=127){w=12;break}}j=(j+-12|0)>>>1}while(0);if((w|0)==12)j=d[3520+j>>0]|0;m=j+l|0;r=1;p=p+40|0}if(m>>>0>f>>>0){c[q>>2]=32306;c[q+4>>2]=80583;c[q+8>>2]=31517;Db(11,32001,q);a[i+11>>0]=11;i=0;Ra=P;return i|0}E=i+8|0;G=M+12|0;z=M+10|0;A=M+32|0;B=M+8|0;C=M+16|0;D=i+11|0;y=m;x=p;a:while(1){v=x+8|0;j=e[v>>1]|0;b:do if(j&4){j=a[h+k>>0]|0;q=j&255;if((j&255)>9){j=1;w=88;break a}switch(j<<24>>24){case 0:{j=-1;w=88;break a}case 7:{Ug(h+y|0,q,M)|0;m=x;j=c[m>>2]|0;m=c[m+4>>2]|0;o=+g[M>>3];if(!(o<-9223372036854775808.0))if(!(o>=9223372036854775808.0)?(I=~~o>>>0,J=+t(o)>=1.0?(o>0.0?~~+H(+s(o/4294967296.0),4294967295.0)>>>0:~~+F((o-+(~~o>>>0))/4294967296.0)>>>0):0,!((m|0)<(J|0)|(m|0)==(J|0)&j>>>0>>0)):0)if(!((m|0)>(J|0)|(m|0)==(J|0)&j>>>0>I>>>0)){n=+(j>>>0)+4294967296.0*+(m|0);if(o>n)j=-1;else j=o>24){case 6:{u=d[m+1>>0]<<16|d[m>>0]<<24|d[m+2>>0]<<8|d[m+3>>0];p=d[m+5>>0]<<16|d[m+4>>0]<<24|d[m+6>>0]<<8|d[m+7>>0];break}case 1:{p=a[m>>0]|0;u=((p|0)<0)<<31>>31;break}case 2:{p=a[m>>0]<<8|d[m+1>>0];u=((p|0)<0)<<31>>31;break}case 3:{p=d[m+1>>0]<<8|a[m>>0]<<16|d[m+2>>0];u=((p|0)<0)<<31>>31;break}case 4:{p=d[m+1>>0]<<16|d[m>>0]<<24|d[m+2>>0]<<8|d[m+3>>0];u=((p|0)<0)<<31>>31;break}case 5:{u=a[m>>0]<<8|d[m+1>>0];p=d[m+3>>0]<<16|d[m+2>>0]<<24|d[m+4>>0]<<8|d[m+5>>0];break}default:{u=0;p=q+-8|0}}m=x;j=c[m>>2]|0;m=c[m+4>>2]|0;if((u|0)<(m|0)|(u|0)==(m|0)&p>>>0>>0){j=-1;w=88;break a}else{j=((u|0)>(m|0)|(u|0)==(m|0)&p>>>0>j>>>0)&1;w=87}}else{if(j&8|0){j=a[h+k>>0]|0;u=j&255;if((j&255)>9){j=1;w=88;break a}if(!(j<<24>>24)){j=-1;w=88;break a}Ug(h+y|0,u,M)|0;if(j<<24>>24==7){n=+g[M>>3];o=+g[x>>3];if(no){j=1;w=88;break a}else{j=7;break}}m=M;j=c[m>>2]|0;m=c[m+4>>2]|0;o=+g[x>>3];if(o<-9223372036854775808.0){j=1;w=88;break a}if(o>=9223372036854775808.0){j=-1;w=88;break a}p=~~o>>>0;q=+t(o)>=1.0?(o>0.0?~~+H(+s(o/4294967296.0),4294967295.0)>>>0:~~+F((o-+(~~o>>>0))/4294967296.0)>>>0):0;if((m|0)<(q|0)|(m|0)==(q|0)&j>>>0

        >>0){j=-1;w=88;break a}if((m|0)>(q|0)|(m|0)==(q|0)&j>>>0>p>>>0){j=1;w=88;break a}n=+(j>>>0)+4294967296.0*+(m|0);if(o>n){j=-1;w=88;break a}else{q=u;j=o>0]|0;j=v&255;do if(v<<24>>24<=-1){p=d[m+1>>0]|0;if(!(p&128)){j=j<<7&16256|p;w=61;break}q=d[m+2>>0]|0;if(q&128){Of(m,K)|0;v=K;j=c[v>>2]|0;if((j|0)==(j|0)?0==(c[v+4>>2]|0):0){w=61;break}else{p=-1;break}}else{j=(j<<14|q)&2080895|p<<7&16256;w=61;break}}else w=61;while(0);if((w|0)==61){if(j>>>0<12){j=-1;w=88;break a}if(!(j&1)){j=1;w=88;break a}else p=j}u=(p+-12|0)>>>1;c[G>>2]=u;if((u+y|0)>>>0>f>>>0){w=65;break a}j=c[i>>2]|0;if(r>>>0>=(e[j+8>>1]|0)>>>0){w=65;break a}m=c[j+20+(r<<2)>>2]|0;if(!m){m=c[x+12>>2]|0;j=Lu(h+y|0,c[x+16>>2]|0,(u|0)<(m|0)?u:m)|0;if(!j){q=p;j=u-m|0;w=87;break}else{w=88;break a}}else{a[z>>0]=a[j+4>>0]|0;c[A>>2]=c[j+12>>2];b[B>>1]=2;c[C>>2]=h+y;q=p;j=ph(M,x,m,D)|0;w=87;break}}q=h+k|0;m=a[q>>0]|0;p=m&255;if(!(j&16)){q=p;j=m<<24>>24!=0&1;w=87;break}do if(m<<24>>24<=-1){j=d[q+1>>0]|0;if(!(j&128)){p=p<<7&16256|j;break}m=d[q+2>>0]|0;if(!(m&128)){p=(p<<14|m)&2080895|j<<7&16256;break}else{Of(q,K)|0;w=K;p=c[w>>2]|0;p=((p|0)==(p|0)?0==(c[w+4>>2]|0):0)?p:-1;break}}while(0);if(!(p>>>0>11&(p&1|0)==0)){j=-1;w=88;break a}u=(p+-12|0)>>>1;if((u+y|0)>>>0>f>>>0){w=85;break a}if(!(b[v>>1]&16384)){m=c[x+12>>2]|0;j=Lu(h+y|0,c[x+16>>2]|0,(u|0)<(m|0)?u:m)|0;if(!j){q=p;j=u-m|0;w=87;break}else{w=88;break a}}m=h+y|0;if(u|0){j=0;do{if(a[m+j>>0]|0){j=1;w=88;break a}j=j+1|0}while(j>>>0>>0)}q=p;j=u-(c[x>>2]|0)|0;w=87}while(0);if((w|0)==87){w=0;if(!j)j=q;else{w=88;break}}r=r+1|0;if((r|0)==(e[E>>1]|0)){w=96;break}x=x+40|0;if(j>>>0>127)q=(j+-12|0)>>>1;else q=d[3520+j>>0]|0;p=1;m=0;while(1){j=bw(j|0,m|0,7)|0;m=L()|0;if((j|0)==0&(m|0)==0)break;else p=p+1|0}y=q+y|0;k=p+k|0;if(y>>>0>f>>>0|k>>>0>=l>>>0){w=96;break}}if((w|0)==65){c[N>>2]=32306;c[N+4>>2]=80658;c[N+8>>2]=31517;Db(11,32001,N);a[D>>0]=11;i=0;Ra=P;return i|0}else if((w|0)==85){c[O>>2]=32306;c[O+4>>2]=80688;c[O+8>>2]=31517;Db(11,32001,O);a[D>>0]=11;i=0;Ra=P;return i|0}else if((w|0)==88){i=(a[(c[(c[i>>2]|0)+16>>2]|0)+r>>0]|0)==0?j:0-j|0;Ra=P;return i|0}else if((w|0)==96){a[i+14>>0]=1;i=a[i+10>>0]|0;Ra=P;return i|0}return 0}function Gh(f){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,y=0,z=0,A=0,B=0,C=0;A=Ra;Ra=Ra+64|0;u=A+48|0;z=A+32|0;v=A+16|0;l=A;j=A+60|0;g=a[f>>0]|0;a:do if(g<<24>>24){do if((g&255)>2){c[j>>2]=0;if(g<<24>>24==4){g=c[f+4>>2]|0;if(!g)break a;else y=g;Ra=A;return y|0}a[f>>0]=1;g=c[7389]|0;if((g|0)!=0?(Wa[g&127](410)|0)!=0:0)g=10;else{h=f+16|0;g=f+56|0;g=th(f,c[h>>2]|0,c[g>>2]|0,c[g+4>>2]|0,0,j)|0;if(!g){g=c[h>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{x=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);c[h>>2]=0;h=c[j>>2]|0;g=f+4|0;if(!h)if(!(c[g>>2]|0))k=a[f>>0]|0;else n=15;else{c[g>>2]=h;n=15}if((n|0)==15){g=a[f>>0]|0;if(!(g<<24>>24)){a[f>>0]=2;k=2}else k=g}g=k;break}}f=g;Ra=A;return f|0}while(0);switch(g<<24>>24){case 2:break;case 1:{f=101;Ra=A;return f|0}default:break a}a[f>>0]=0;if((c[f+4>>2]|0)>0){f=0;Ra=A;return f|0}}while(0);w=f+116|0;j=c[w>>2]|0;x=f+70|0;s=(b[x>>1]|0)+1<<16>>16;b[x>>1]=s;t=j;if(!(a[j>>0]|0)){c[l>>2]=32306;c[l+4>>2]=68870;c[l+8>>2]=31517;Db(11,32001,l);f=11;Ra=A;return f|0}r=(a[j+8>>0]|0)!=0;if((s&65535)<(e[j+24>>1]|0)){if(r){f=0;Ra=A;return f|0}m=f+68|0;n=f+20|0;o=f+50|0;p=f+1|0;q=f+2|0;h=j;l=t;while(1){k=b[x>>1]|0;g=(c[h+64>>2]|0)+((k&65535)<<1)|0;g=(c[h+56>>2]|0)+((d[g>>0]<<8|d[g+1>>0])&e[h+26>>1])|0;h=a[m>>0]|0;if(h<<24>>24>18){n=46;break}g=d[g>>0]<<24|d[g+1>>0]<<16|d[g+2>>0]<<8|d[g+3>>0];B=c[n>>2]|0;b[o>>1]=0;a[p>>0]=a[p>>0]&-7;C=h<<24>>24;b[f+72+(C<<1)>>1]=k;c[f+120+(C<<2)>>2]=l;b[x>>1]=0;a[m>>0]=h+1<<24>>24;g=yh(B,g,w,f,d[q>>0]|0)|0;if(g|0){y=g;n=49;break}g=c[w>>2]|0;if(!(a[g+8>>0]|0)){h=g;l=g}else{y=0;n=49;break}}if((n|0)==46){c[u>>2]=32306;c[u+4>>2]=68229;c[u+8>>2]=31517;Db(11,32001,u);C=11;Ra=A;return C|0}else if((n|0)==49){Ra=A;return y|0}}if(r){k=f+68|0;l=f+50|0;m=f+1|0;while(1){h=a[k>>0]|0;if(!(h<<24>>24)){n=36;break}b[l>>1]=0;a[m>>0]=a[m>>0]&-7;g=b[f+72+((h<<24>>24)+-1<<1)>>1]|0;b[x>>1]=g;i=h+-1<<24>>24;a[k>>0]=i;i=c[f+120+(i<<24>>24<<2)>>2]|0;c[w>>2]=i;h=c[j+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);i=c[w>>2]|0;g=b[x>>1]|0}else{C=c[h+20>>2]|0;B=C+120|0;c[B>>2]=(c[B>>2]|0)+-1;C=C+136|0;c[h+16>>2]=c[C>>2];c[C>>2]=h}if((g&65535)<(e[i+24>>1]|0))break;else j=i}if((n|0)==36){a[f>>0]=1;C=101;Ra=A;return C|0}if(!(a[i+2>>0]|0)){C=0;Ra=A;return C|0}C=Yg(f,0)|0;Ra=A;return C|0}g=(c[j+56>>2]|0)+((d[j+9>>0]|0)+8)|0;o=f+68|0;h=a[o>>0]|0;if(h<<24>>24>18){c[v>>2]=32306;c[v+4>>2]=68229;c[v+8>>2]=31517;Db(11,32001,v);C=11;Ra=A;return C|0}g=d[g>>0]<<24|d[g+1>>0]<<16|d[g+2>>0]<<8|d[g+3>>0];l=f+20|0;C=c[l>>2]|0;m=f+50|0;b[m>>1]=0;n=f+1|0;a[n>>0]=a[n>>0]&-7;k=h<<24>>24;b[f+72+(k<<1)>>1]=s;c[f+120+(k<<2)>>2]=t;b[x>>1]=0;a[o>>0]=h+1<<24>>24;k=f+2|0;g=yh(C,g,w,f,d[k>>0]|0)|0;if(g|0){C=g;Ra=A;return C|0}while(1){g=c[w>>2]|0;if(a[g+8>>0]|0){y=0;n=49;break}h=b[x>>1]|0;i=(c[g+64>>2]|0)+((h&65535)<<1)|0;i=(c[g+56>>2]|0)+((d[i>>0]<<8|d[i+1>>0])&e[g+26>>1])|0;j=a[o>>0]|0;if(j<<24>>24>18){n=32;break}C=d[i>>0]<<24|d[i+1>>0]<<16|d[i+2>>0]<<8|d[i+3>>0];B=c[l>>2]|0;b[m>>1]=0;a[n>>0]=a[n>>0]&-7;v=j<<24>>24;b[f+72+(v<<1)>>1]=h;c[f+120+(v<<2)>>2]=g;b[x>>1]=0;a[o>>0]=j+1<<24>>24;g=yh(B,C,w,f,d[k>>0]|0)|0;if(g|0){y=g;n=49;break}}if((n|0)==32){c[z>>2]=32306;c[z+4>>2]=68229;c[z+8>>2]=31517;Db(11,32001,z);C=11;Ra=A;return C|0}else if((n|0)==49){Ra=A;return y|0}return 0}function Hh(f){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,y=0;w=Ra;Ra=Ra+32|0;u=w+16|0;k=w;i=w+28|0;g=a[f>>0]|0;a:do if(g<<24>>24){do if((g&255)>2){c[i>>2]=0;if(g<<24>>24==4){g=c[f+4>>2]|0;if(!g)break a;Ra=w;return g|0}a[f>>0]=1;g=c[7389]|0;if((g|0)!=0?(Wa[g&127](410)|0)!=0:0)g=10;else{h=f+16|0;g=f+56|0;g=th(f,c[h>>2]|0,c[g>>2]|0,c[g+4>>2]|0,0,i)|0;if(!g){g=c[h>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{t=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);c[h>>2]=0;h=c[i>>2]|0;g=f+4|0;if(!h)if(!(c[g>>2]|0))g=a[f>>0]|0;else v=15;else{c[g>>2]=h;v=15}if((v|0)==15){g=a[f>>0]|0;if(!(g<<24>>24)){a[f>>0]=2;g=2}}break}}f=g;Ra=w;return f|0}while(0);switch(g<<24>>24){case 2:break;case 1:{f=101;Ra=w;return f|0}default:break a}a[f>>0]=0;if((c[f+4>>2]|0)<0){f=0;Ra=w;return f|0}}while(0);s=f+116|0;g=c[s>>2]|0;t=f+70|0;h=b[t>>1]|0;j=g;if(!(a[g+8>>0]|0)){r=(c[g+64>>2]|0)+((h&65535)<<1)|0;g=(c[g+56>>2]|0)+((d[r>>0]<<8|d[r+1>>0])&e[g+26>>1])|0;r=f+68|0;i=a[r>>0]|0;if(i<<24>>24>18){c[k>>2]=32306;c[k+4>>2]=68229;c[k+8>>2]=31517;Db(11,32001,k);f=11;Ra=w;return f|0}g=d[g>>0]<<24|d[g+1>>0]<<16|d[g+2>>0]<<8|d[g+3>>0];o=f+20|0;m=c[o>>2]|0;p=f+50|0;b[p>>1]=0;q=f+1|0;a[q>>0]=a[q>>0]&-7;n=i<<24>>24;b[f+72+(n<<1)>>1]=h;c[f+120+(n<<2)>>2]=j;b[t>>1]=0;a[r>>0]=i+1<<24>>24;n=f+2|0;g=yh(m,g,s,f,d[n>>0]|0)|0;if(g|0){f=g;Ra=w;return f|0}g=c[s>>2]|0;b:do if(!(a[g+8>>0]|0)){while(1){k=(c[g+56>>2]|0)+((d[g+9>>0]|0)+8)|0;h=a[k>>0]|0;i=a[k+1>>0]|0;j=a[k+2>>0]|0;k=a[k+3>>0]|0;l=b[g+24>>1]|0;b[t>>1]=l;m=a[r>>0]|0;if(m<<24>>24>18)break;x=c[o>>2]|0;b[p>>1]=0;a[q>>0]=a[q>>0]&-7;y=m<<24>>24;b[f+72+(y<<1)>>1]=l;c[f+120+(y<<2)>>2]=g;b[t>>1]=0;a[r>>0]=m+1<<24>>24;g=yh(x,(i&255)<<16|(h&255)<<24|(j&255)<<8|k&255,s,f,d[n>>0]|0)|0;if(g|0){v=45;break}g=c[s>>2]|0;if(a[g+8>>0]|0)break b}if((v|0)==45){Ra=w;return g|0}c[u>>2]=32306;c[u+4>>2]=68229;c[u+8>>2]=31517;Db(11,32001,u);y=11;Ra=w;return y|0}while(0);b[t>>1]=(e[g+24>>1]|0)+65535;y=0;Ra=w;return y|0}do if(!(h<<16>>16)){i=f+68|0;j=f+50|0;k=f+1|0;while(1){g=a[i>>0]|0;if(!(g<<24>>24))break;b[j>>1]=0;a[k>>0]=a[k>>0]&-7;h=b[f+72+((g<<24>>24)+-1<<1)>>1]|0;b[t>>1]=h;y=c[s>>2]|0;g=g+-1<<24>>24;a[i>>0]=g;c[s>>2]=c[f+120+(g<<24>>24<<2)>>2];g=c[y+72>>2]|0;if(!(b[g+28>>1]&32)){Df(g);h=b[t>>1]|0}else{y=c[g+20>>2]|0;x=y+120|0;c[x>>2]=(c[x>>2]|0)+-1;y=y+136|0;c[g+16>>2]=c[y>>2];c[y>>2]=g}if(h<<16>>16){v=41;break}}if((v|0)==41){g=c[s>>2]|0;break}a[f>>0]=1;y=101;Ra=w;return y|0}while(0);b[t>>1]=h+-1<<16>>16;if(!(a[g+2>>0]|0)){y=0;Ra=w;return y|0}if(a[g+8>>0]|0){y=0;Ra=w;return y|0}y=f+1|0;a[y>>0]=a[y>>0]&-15;b[f+50>>1]=0;y=Hh(f)|0;Ra=w;return y|0}function Ih(f,g){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;r=Ra;Ra=Ra+32|0;q=r+16|0;j=r;o=r+28|0;p=(c[g+32>>2]|0)+(c[g+28>>2]|0)|0;l=c[f+116>>2]|0;k=f+40|0;h=c[k>>2]|0;i=f+48|0;f=e[i>>1]|0;if((h+f|0)>>>0>(c[l+60>>2]|0)>>>0){c[j>>2]=32306;c[j+4>>2]=71650;c[j+8>>2]=31517;Db(11,32001,j);q=11;Ra=r;return q|0}f=Nh(l,h,g,0,f)|0;if(f|0){q=f;Ra=r;return q|0}f=e[i>>1]|0;if((p|0)==(f|0)){q=0;Ra=r;return q|0}i=(c[k>>2]|0)+f|0;n=c[l+52>>2]|0;j=(c[n+36>>2]|0)+-4|0;i=d[i+1>>0]<<16|d[i>>0]<<24|d[i+2>>0]<<8|d[i+3>>0];m=f;while(1){f=c[n>>2]|0;f=Za[c[f+204>>2]&127](f,i,o,0)|0;if(f|0){h=10;break}h=c[o>>2]|0;k=c[h+8>>2]|0;f=k+4|0;if((c[f>>2]|0)==(i|0)){f=k+72|0;l=f;f=c[f>>2]|0}else{c[k+56>>2]=c[h+4>>2];l=k+72|0;c[l>>2]=h;c[k+52>>2]=n;c[f>>2]=i;a[k+9>>0]=(i|0)==1?100:0;f=h}if((b[f+30>>1]|0)==1){if((j+m|0)>>>0

        >>0){f=c[k+56>>2]|0;h=j;i=d[f+1>>0]<<16|d[f>>0]<<24|d[f+2>>0]<<8|d[f+3>>0]}else{h=p-m|0;f=c[k+56>>2]|0}f=Nh(k,f+4|0,g,m,h)|0;j=h}else{c[q>>2]=32306;c[q+4>>2]=71669;c[q+8>>2]=31517;Db(11,32001,q);f=11}h=c[l>>2]|0;do if(h|0)if(!(b[h+28>>1]&32)){Df(h);break}else{l=c[h+20>>2]|0;k=l+120|0;c[k>>2]=(c[k>>2]|0)+-1;l=l+136|0;c[h+16>>2]=c[l>>2];c[l>>2]=h;break}while(0);if(f|0){h=23;break}m=j+m|0;if((m|0)>=(p|0)){f=0;h=23;break}}if((h|0)==10){q=f;Ra=r;return q|0}else if((h|0)==23){Ra=r;return f|0}return 0}function Jh(a){a=a|0;var b=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;p=Ra;Ra=Ra+80|0;o=p+64|0;j=p+48|0;l=p+32|0;k=p+16|0;g=p;n=c[(c[a+52>>2]|0)+36>>2]|0;i=c[a+56>>2]|0;b=d[a+9>>0]|0;q=i+(b+5)|0;m=b+8+(d[a+10>>0]|0)+((e[a+24>>1]|0)<<1)|0;h=n+-4|0;f=i+(b+1)|0;f=(d[f>>0]|0)<<8|(d[f+1>>0]|0);b=(((d[q>>0]|0)<<8|(d[q+1>>0]|0))+65535&65535)+1+(d[i+(b+7)>>0]|0)|0;a:do if(f){if(f>>>0>>0){c[g>>2]=32306;c[g+4>>2]=65086;c[g+8>>2]=31517;Db(11,32001,g);q=11;Ra=p;return q|0}b:do if((f|0)<=(h|0)){while(1){q=i+f|0;g=f;f=(d[q>>0]|0)<<8|(d[q+1>>0]|0);q=i+(g+2)|0;q=(d[q>>0]|0)<<8|(d[q+1>>0]|0);b=q+b|0;g=q+g|0;if(f>>>0<=(g+3|0)>>>0)break;if((f|0)>(h|0))break b}if(f|0){c[l>>2]=32306;c[l+4>>2]=65101;c[l+8>>2]=31517;Db(11,32001,l);q=11;Ra=p;return q|0}if(g>>>0<=n>>>0)break a;c[j>>2]=32306;c[j+4>>2]=65105;c[j+8>>2]=31517;Db(11,32001,j);q=11;Ra=p;return q|0}while(0);c[k>>2]=32306;c[k+4>>2]=65091;c[k+8>>2]=31517;Db(11,32001,k);q=11;Ra=p;return q|0}while(0);if((b|0)>(n|0)){c[o>>2]=32306;c[o+4>>2]=65117;c[o+8>>2]=31517;Db(11,32001,o);q=11;Ra=p;return q|0}else{c[a+20>>2]=b-m&65535;q=0;Ra=p;return q|0}return 0}function Kh(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=Ra;Ra=Ra+16|0;k=q;if(c[i>>2]|0){Ra=q;return}p=c[f+56>>2]|0;l=(c[f+64>>2]|0)+(g<<1)|0;j=(d[l>>0]|0)<<8|(d[l+1>>0]|0);m=f+9|0;n=d[m>>0]|0;o=f+52|0;if((j+h|0)>>>0>(c[(c[o>>2]|0)+36>>2]|0)>>>0){c[k>>2]=32306;c[k+4>>2]=69788;c[k+8>>2]=31517;Db(11,32001,k);c[i>>2]=11;Ra=q;return}j=Oh(f,j&65535,h&65535)|0;if(j|0){c[i>>2]=j;Ra=q;return}j=f+24|0;h=(b[j>>1]|0)+-1<<16>>16;b[j>>1]=h;if(!(h<<16>>16)){l=p+(n+1)|0;a[l>>0]=0;a[l+1>>0]=0;a[l+2>>0]=0;a[l+3>>0]=0;a[p+(n+7)>>0]=0;p=p+(n+5)|0;a[p>>0]=(c[(c[o>>2]|0)+36>>2]|0)>>>8;a[p+1>>0]=c[(c[o>>2]|0)+36>>2];c[f+20>>2]=(c[(c[o>>2]|0)+36>>2]|0)+-8-(d[m>>0]|0)-(d[f+10>>0]|0);Ra=q;return}else{fw(l|0,l+2|0,(h&65535)-g<<1|0)|0;p=p+(n+3)|0;a[p>>0]=(e[j>>1]|0)>>>8;a[p+1>>0]=b[j>>1];p=f+20|0;c[p>>2]=(c[p>>2]|0)+2;Ra=q;return}}function Lh(f,g,h,i,j,k,l){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|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;B=Ra;Ra=Ra+64|0;A=B+40|0;o=B+24|0;z=B;n=f+12|0;if((a[n>>0]|0)==0?(w=i+2|0,x=f+20|0,(w|0)<=(c[x>>2]|0)):0){j=c[f+72>>2]|0;n=c[j+20>>2]|0;if((b[j+28>>1]&4)!=0?(c[n+24>>2]|0)>>>0>=(c[j+24>>2]|0)>>>0:0){if(c[n+96>>2]|0){m=Ve(j)|0;v=16}}else v=12;do if((v|0)==12){m=c[n+40>>2]|0;if(!m)if((c[n+148>>2]|0)>>>0>(c[n+152>>2]|0)>>>0){m=Wf(j)|0;v=16;break}else{m=Xf(j)|0;v=16;break}else v=17}while(0);if((v|0)==16?m|0:0)v=17;if((v|0)==17){c[l>>2]=m;Ra=B;return}s=c[f+56>>2]|0;t=f+9|0;n=a[t>>0]|0;j=n&255;c[z>>2]=0;u=f+24|0;p=(e[u>>1]<<1)+(e[f+18>>1]|0)|0;q=s+(j+5)|0;r=q+1|0;m=d[q>>0]<<8|d[r>>0];do if(p>>>0>m>>>0){if((m|0)==0?(c[(c[f+52>>2]|0)+36>>2]|0)==65536:0){o=65536;v=22;break}c[o>>2]=32306;c[o+4>>2]=64824;c[o+8>>2]=31517;Db(11,32001,o);m=11}else{o=m;v=22}while(0);a:do if((v|0)==22){if(!(a[s+(j+2)>>0]|0)){m=p+2|0;if((m|0)>(o|0)?1:(a[s+(j+1)>>0]|0)==0)v=29;else v=25}else{m=p+2|0;if((m|0)>(o|0))v=29;else v=25}do if((v|0)==25){m=Ph(n,c[(c[f+52>>2]|0)+36>>2]|0,s,i,z)|0;if(m|0){m=m-s|0;break}m=c[z>>2]|0;if(m|0)break a;m=p+2|0;v=29}while(0);if((v|0)==29){if((m+i|0)>(o|0)){m=(c[x>>2]|0)+(-2-i)|0;m=Qh(f,(m|0)<4?m:4)|0;c[z>>2]=m;if(m|0)break;m=((d[q>>0]<<8|d[r>>0])+65535&65535)+1|0}else m=o;m=m-i|0;a[q>>0]=m>>>8;a[r>>0]=m}c[x>>2]=(c[x>>2]|0)-(w&65535);if(!k)ew(s+m|0,h|0,i|0)|0;else{ew(s+(m+4)|0,h+4|0,i+-4|0)|0;i=s+m|0;a[i>>0]=k>>>24;a[i+1>>0]=k>>>16;a[i+2>>0]=k>>>8;a[i+3>>0]=k}k=(c[f+64>>2]|0)+(g<<1)|0;fw(k+2|0,k|0,(e[u>>1]|0)-g<<1|0)|0;a[k>>0]=m>>>8;a[k+1>>0]=m;b[u>>1]=(b[u>>1]|0)+1<<16>>16;g=s+((d[t>>0]|0)+4)|0;k=(a[g>>0]|0)+1<<24>>24;a[g>>0]=k;if(!(k<<24>>24)){k=s+((d[t>>0]|0)+3)|0;a[k>>0]=(a[k>>0]|0)+1<<24>>24}m=f+52|0;if(!(a[(c[m>>2]|0)+17>>0]|0)){Ra=B;return}do if((c[l>>2]|0)==0?(cb[c[f+80>>2]&255](f,h,z),y=e[z+16>>1]|0,(c[z+12>>2]|0)>>>0>y>>>0):0){k=c[f+60>>2]|0;if(k>>>0>=h>>>0?k>>>0<(h+y|0)>>>0:0){c[A>>2]=32306;c[A+4>>2]=64569;c[A+8>>2]=31517;Db(11,32001,A);c[l>>2]=11;break}A=h+((e[z+18>>1]|0)+-4)|0;ig(c[m>>2]|0,d[A+1>>0]<<16|d[A>>0]<<24|d[A+2>>0]<<8|d[A+3>>0],3,c[f+4>>2]|0,l)}while(0);Ra=B;return}while(0);c[l>>2]=m;Ra=B;return}if(!j)m=h;else{ew(j|0,h|0,i|0)|0;m=j}if(k|0){a[m>>0]=k>>>24;a[m+1>>0]=k>>>16;a[m+2>>0]=k>>>8;a[m+3>>0]=k}l=a[n>>0]|0;a[n>>0]=l+1<<24>>24;l=l&255;c[f+36+(l<<2)>>2]=m;b[f+28+(l<<1)>>1]=g;Ra=B;return} -function lu(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;w=Ra;Ra=Ra+16|0;n=w;do if(a>>>0<245){k=a>>>0<11?16:a+11&-8;a=k>>>3;m=c[14832]|0;d=m>>>a;if(d&3|0){b=(d&1^1)+a|0;a=59368+(b<<1<<2)|0;d=a+8|0;e=c[d>>2]|0;f=e+8|0;g=c[f>>2]|0;if((g|0)==(a|0))c[14832]=m&~(1<>2]=a;c[d>>2]=g}v=b<<3;c[e+4>>2]=v|3;v=e+v+4|0;c[v>>2]=c[v>>2]|1;v=f;Ra=w;return v|0}l=c[14834]|0;if(k>>>0>l>>>0){if(d|0){b=2<>>12&16;b=b>>>i;d=b>>>5&8;b=b>>>d;g=b>>>2&4;b=b>>>g;a=b>>>1&2;b=b>>>a;e=b>>>1&1;e=(d|i|g|a|e)+(b>>>e)|0;b=59368+(e<<1<<2)|0;a=b+8|0;g=c[a>>2]|0;i=g+8|0;d=c[i>>2]|0;if((d|0)==(b|0)){a=m&~(1<>2]=b;c[a>>2]=d;a=m}v=e<<3;h=v-k|0;c[g+4>>2]=k|3;f=g+k|0;c[f+4>>2]=h|1;c[g+v>>2]=h;if(l|0){e=c[14837]|0;b=l>>>3;d=59368+(b<<1<<2)|0;b=1<>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[14834]=h;c[14837]=f;v=i;Ra=w;return v|0}g=c[14833]|0;if(g){d=(g&0-g)+-1|0;f=d>>>12&16;d=d>>>f;e=d>>>5&8;d=d>>>e;h=d>>>2&4;d=d>>>h;i=d>>>1&2;d=d>>>i;j=d>>>1&1;j=c[59632+((e|f|h|i|j)+(d>>>j)<<2)>>2]|0;d=j;i=j;j=(c[j+4>>2]&-8)-k|0;while(1){a=c[d+16>>2]|0;if(!a){a=c[d+20>>2]|0;if(!a)break}h=(c[a+4>>2]&-8)-k|0;f=h>>>0>>0;d=a;i=f?a:i;j=f?h:j}h=i+k|0;if(h>>>0>i>>>0){f=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=c[a>>2]|0;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){d=0;break}}while(1){e=b+20|0;d=c[e>>2]|0;if(!d){e=b+16|0;d=c[e>>2]|0;if(!d)break;else{b=d;a=e}}else{b=d;a=e}}c[a>>2]=0;d=b}else{d=c[i+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);do if(f|0){b=c[i+28>>2]|0;a=59632+(b<<2)|0;if((i|0)==(c[a>>2]|0)){c[a>>2]=d;if(!d){c[14833]=g&~(1<>2]|0)==(i|0)?v:f+20|0)>>2]=d;if(!d)break}c[d+24>>2]=f;b=c[i+16>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}b=c[i+20>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}while(0);if(j>>>0<16){v=j+k|0;c[i+4>>2]=v|3;v=i+v+4|0;c[v>>2]=c[v>>2]|1}else{c[i+4>>2]=k|3;c[h+4>>2]=j|1;c[h+j>>2]=j;if(l|0){e=c[14837]|0;b=l>>>3;d=59368+(b<<1<<2)|0;b=1<>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[14834]=j;c[14837]=h}v=i+8|0;Ra=w;return v|0}else m=k}else m=k}else m=k}else if(a>>>0<=4294967231){a=a+11|0;k=a&-8;e=c[14833]|0;if(e){f=0-k|0;a=a>>>8;if(a)if(k>>>0>16777215)j=31;else{m=(a+1048320|0)>>>16&8;q=a<>>16&4;q=q<>>16&2;j=14-(i|m|j)+(q<>>15)|0;j=k>>>(j+7|0)&1|j<<1}else j=0;d=c[59632+(j<<2)>>2]|0;a:do if(!d){d=0;a=0;q=61}else{a=0;i=k<<((j|0)==31?0:25-(j>>>1)|0);g=0;while(1){h=(c[d+4>>2]&-8)-k|0;if(h>>>0>>0)if(!h){a=d;f=0;q=65;break a}else{a=d;f=h}q=c[d+20>>2]|0;d=c[d+16+(i>>>31<<2)>>2]|0;g=(q|0)==0|(q|0)==(d|0)?g:q;if(!d){d=g;q=61;break}else i=i<<1}}while(0);if((q|0)==61){if((d|0)==0&(a|0)==0){a=2<>>12&16;m=m>>>h;g=m>>>5&8;m=m>>>g;i=m>>>2&4;m=m>>>i;j=m>>>1&2;m=m>>>j;d=m>>>1&1;a=0;d=c[59632+((g|h|i|j|d)+(m>>>d)<<2)>>2]|0}if(!d){i=a;h=f}else q=65}if((q|0)==65){g=d;while(1){m=(c[g+4>>2]&-8)-k|0;d=m>>>0>>0;f=d?m:f;a=d?g:a;d=c[g+16>>2]|0;if(!d)d=c[g+20>>2]|0;if(!d){i=a;h=f;break}else g=d}}if(((i|0)!=0?h>>>0<((c[14834]|0)-k|0)>>>0:0)?(l=i+k|0,l>>>0>i>>>0):0){g=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=c[a>>2]|0;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){b=0;break}}while(1){f=b+20|0;d=c[f>>2]|0;if(!d){f=b+16|0;d=c[f>>2]|0;if(!d)break;else{b=d;a=f}}else{b=d;a=f}}c[a>>2]=0}else{v=c[i+8>>2]|0;c[v+12>>2]=b;c[b+8>>2]=v}while(0);do if(g){a=c[i+28>>2]|0;d=59632+(a<<2)|0;if((i|0)==(c[d>>2]|0)){c[d>>2]=b;if(!b){e=e&~(1<>2]|0)==(i|0)?v:g+20|0)>>2]=b;if(!b)break}c[b+24>>2]=g;a=c[i+16>>2]|0;if(a|0){c[b+16>>2]=a;c[a+24>>2]=b}a=c[i+20>>2]|0;if(a){c[b+20>>2]=a;c[a+24>>2]=b}}while(0);b:do if(h>>>0<16){v=h+k|0;c[i+4>>2]=v|3;v=i+v+4|0;c[v>>2]=c[v>>2]|1}else{c[i+4>>2]=k|3;c[l+4>>2]=h|1;c[l+h>>2]=h;b=h>>>3;if(h>>>0<256){d=59368+(b<<1<<2)|0;a=c[14832]|0;b=1<>2]|0}c[a>>2]=l;c[b+12>>2]=l;c[l+8>>2]=b;c[l+12>>2]=d;break}b=h>>>8;if(b)if(h>>>0>16777215)d=31;else{u=(b+1048320|0)>>>16&8;v=b<>>16&4;v=v<>>16&2;d=14-(t|u|d)+(v<>>15)|0;d=h>>>(d+7|0)&1|d<<1}else d=0;b=59632+(d<<2)|0;c[l+28>>2]=d;a=l+16|0;c[a+4>>2]=0;c[a>>2]=0;a=1<>2]=l;c[l+24>>2]=b;c[l+12>>2]=l;c[l+8>>2]=l;break}b=c[b>>2]|0;c:do if((c[b+4>>2]&-8|0)!=(h|0)){e=h<<((d|0)==31?0:25-(d>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(h|0)){b=a;break c}else{e=e<<1;b=a}}c[d>>2]=l;c[l+24>>2]=b;c[l+12>>2]=l;c[l+8>>2]=l;break b}while(0);u=b+8|0;v=c[u>>2]|0;c[v+12>>2]=l;c[u>>2]=l;c[l+8>>2]=v;c[l+12>>2]=b;c[l+24>>2]=0}while(0);v=i+8|0;Ra=w;return v|0}else m=k}else m=k}else m=-1;while(0);d=c[14834]|0;if(d>>>0>=m>>>0){b=d-m|0;a=c[14837]|0;if(b>>>0>15){v=a+m|0;c[14837]=v;c[14834]=b;c[v+4>>2]=b|1;c[a+d>>2]=b;c[a+4>>2]=m|3}else{c[14834]=0;c[14837]=0;c[a+4>>2]=d|3;v=a+d+4|0;c[v>>2]=c[v>>2]|1}v=a+8|0;Ra=w;return v|0}h=c[14835]|0;if(h>>>0>m>>>0){t=h-m|0;c[14835]=t;v=c[14838]|0;u=v+m|0;c[14838]=u;c[u+4>>2]=t|1;c[v+4>>2]=m|3;v=v+8|0;Ra=w;return v|0}if(!(c[14950]|0)){c[14952]=4096;c[14951]=4096;c[14953]=-1;c[14954]=-1;c[14955]=0;c[14943]=0;c[14950]=n&-16^1431655768;a=4096}else a=c[14952]|0;i=m+48|0;j=m+47|0;g=a+j|0;f=0-a|0;k=g&f;if(k>>>0<=m>>>0){v=0;Ra=w;return v|0}a=c[14942]|0;if(a|0?(l=c[14940]|0,n=l+k|0,n>>>0<=l>>>0|n>>>0>a>>>0):0){v=0;Ra=w;return v|0}d:do if(!(c[14943]&4)){d=c[14838]|0;e:do if(d){e=59776;while(1){n=c[e>>2]|0;if(n>>>0<=d>>>0?(n+(c[e+4>>2]|0)|0)>>>0>d>>>0:0)break;a=c[e+8>>2]|0;if(!a){q=128;break e}else e=a}b=g-h&f;if(b>>>0<2147483647){a=hw(b|0)|0;if((a|0)==((c[e>>2]|0)+(c[e+4>>2]|0)|0)){if((a|0)!=(-1|0)){h=b;g=a;q=145;break d}}else{e=a;q=136}}else b=0}else q=128;while(0);do if((q|0)==128){d=hw(0)|0;if((d|0)!=(-1|0)?(b=d,o=c[14951]|0,p=o+-1|0,b=((p&b|0)==0?0:(p+b&0-o)-b|0)+k|0,o=c[14940]|0,p=b+o|0,b>>>0>m>>>0&b>>>0<2147483647):0){n=c[14942]|0;if(n|0?p>>>0<=o>>>0|p>>>0>n>>>0:0){b=0;break}a=hw(b|0)|0;if((a|0)==(d|0)){h=b;g=d;q=145;break d}else{e=a;q=136}}else b=0}while(0);do if((q|0)==136){d=0-b|0;if(!(i>>>0>b>>>0&(b>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){b=0;break}else{h=b;g=e;q=145;break d}a=c[14952]|0;a=j-b+a&0-a;if(a>>>0>=2147483647){h=b;g=e;q=145;break d}if((hw(a|0)|0)==(-1|0)){hw(d|0)|0;b=0;break}else{h=a+b|0;g=e;q=145;break d}}while(0);c[14943]=c[14943]|4;q=143}else{b=0;q=143}while(0);if(((q|0)==143?k>>>0<2147483647:0)?(t=hw(k|0)|0,p=hw(0)|0,r=p-t|0,s=r>>>0>(m+40|0)>>>0,!((t|0)==(-1|0)|s^1|t>>>0

        >>0&((t|0)!=(-1|0)&(p|0)!=(-1|0))^1)):0){h=s?r:b;g=t;q=145}if((q|0)==145){b=(c[14940]|0)+h|0;c[14940]=b;if(b>>>0>(c[14941]|0)>>>0)c[14941]=b;j=c[14838]|0;f:do if(j){b=59776;while(1){a=c[b>>2]|0;d=c[b+4>>2]|0;if((g|0)==(a+d|0)){q=154;break}e=c[b+8>>2]|0;if(!e)break;else b=e}if(((q|0)==154?(u=b+4|0,(c[b+12>>2]&8|0)==0):0)?g>>>0>j>>>0&a>>>0<=j>>>0:0){c[u>>2]=d+h;v=(c[14835]|0)+h|0;t=j+8|0;t=(t&7|0)==0?0:0-t&7;u=j+t|0;t=v-t|0;c[14838]=u;c[14835]=t;c[u+4>>2]=t|1;c[j+v+4>>2]=40;c[14839]=c[14954];break}if(g>>>0<(c[14836]|0)>>>0)c[14836]=g;d=g+h|0;b=59776;while(1){if((c[b>>2]|0)==(d|0)){q=162;break}a=c[b+8>>2]|0;if(!a)break;else b=a}if((q|0)==162?(c[b+12>>2]&8|0)==0:0){c[b>>2]=g;l=b+4|0;c[l>>2]=(c[l>>2]|0)+h;l=g+8|0;l=g+((l&7|0)==0?0:0-l&7)|0;b=d+8|0;b=d+((b&7|0)==0?0:0-b&7)|0;k=l+m|0;i=b-l-m|0;c[l+4>>2]=m|3;g:do if((j|0)==(b|0)){v=(c[14835]|0)+i|0;c[14835]=v;c[14838]=k;c[k+4>>2]=v|1}else{if((c[14837]|0)==(b|0)){v=(c[14834]|0)+i|0;c[14834]=v;c[14837]=k;c[k+4>>2]=v|1;c[k+v>>2]=v;break}a=c[b+4>>2]|0;if((a&3|0)==1){h=a&-8;e=a>>>3;h:do if(a>>>0<256){a=c[b+8>>2]|0;d=c[b+12>>2]|0;if((d|0)==(a|0)){c[14832]=c[14832]&~(1<>2]=d;c[d+8>>2]=a;break}}else{g=c[b+24>>2]|0;a=c[b+12>>2]|0;do if((a|0)==(b|0)){d=b+16|0;e=d+4|0;a=c[e>>2]|0;if(!a){a=c[d>>2]|0;if(!a){a=0;break}}else d=e;while(1){f=a+20|0;e=c[f>>2]|0;if(!e){f=a+16|0;e=c[f>>2]|0;if(!e)break;else{a=e;d=f}}else{a=e;d=f}}c[d>>2]=0}else{v=c[b+8>>2]|0;c[v+12>>2]=a;c[a+8>>2]=v}while(0);if(!g)break;d=c[b+28>>2]|0;e=59632+(d<<2)|0;do if((c[e>>2]|0)!=(b|0)){v=g+16|0;c[((c[v>>2]|0)==(b|0)?v:g+20|0)>>2]=a;if(!a)break h}else{c[e>>2]=a;if(a|0)break;c[14833]=c[14833]&~(1<>2]=g;d=b+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(!d)break;c[a+20>>2]=d;c[d+24>>2]=a}while(0);b=b+h|0;f=h+i|0}else f=i;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[k+4>>2]=f|1;c[k+f>>2]=f;b=f>>>3;if(f>>>0<256){d=59368+(b<<1<<2)|0;a=c[14832]|0;b=1<>2]|0}c[a>>2]=k;c[b+12>>2]=k;c[k+8>>2]=b;c[k+12>>2]=d;break}b=f>>>8;do if(!b)e=0;else{if(f>>>0>16777215){e=31;break}u=(b+1048320|0)>>>16&8;v=b<>>16&4;v=v<>>16&2;e=14-(t|u|e)+(v<>>15)|0;e=f>>>(e+7|0)&1|e<<1}while(0);b=59632+(e<<2)|0;c[k+28>>2]=e;a=k+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[14833]|0;d=1<>2]=k;c[k+24>>2]=b;c[k+12>>2]=k;c[k+8>>2]=k;break}b=c[b>>2]|0;i:do if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(f|0)){b=a;break i}else{e=e<<1;b=a}}c[d>>2]=k;c[k+24>>2]=b;c[k+12>>2]=k;c[k+8>>2]=k;break g}while(0);u=b+8|0;v=c[u>>2]|0;c[v+12>>2]=k;c[u>>2]=k;c[k+8>>2]=v;c[k+12>>2]=b;c[k+24>>2]=0}while(0);v=l+8|0;Ra=w;return v|0}b=59776;while(1){a=c[b>>2]|0;if(a>>>0<=j>>>0?(v=a+(c[b+4>>2]|0)|0,v>>>0>j>>>0):0)break;b=c[b+8>>2]|0}f=v+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=j+16|0;a=a>>>0>>0?j:a;b=a+8|0;d=h+-40|0;t=g+8|0;t=(t&7|0)==0?0:0-t&7;u=g+t|0;t=d-t|0;c[14838]=u;c[14835]=t;c[u+4>>2]=t|1;c[g+d+4>>2]=40;c[14839]=c[14954];d=a+4|0;c[d>>2]=27;c[b>>2]=c[14944];c[b+4>>2]=c[14945];c[b+8>>2]=c[14946];c[b+12>>2]=c[14947];c[14944]=g;c[14945]=h;c[14947]=0;c[14946]=b;b=a+24|0;do{u=b;b=b+4|0;c[b>>2]=7}while((u+8|0)>>>0>>0);if((a|0)!=(j|0)){g=a-j|0;c[d>>2]=c[d>>2]&-2;c[j+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){d=59368+(b<<1<<2)|0;a=c[14832]|0;b=1<>2]|0}c[a>>2]=j;c[b+12>>2]=j;c[j+8>>2]=b;c[j+12>>2]=d;break}b=g>>>8;if(b)if(g>>>0>16777215)e=31;else{u=(b+1048320|0)>>>16&8;v=b<>>16&4;v=v<>>16&2;e=14-(t|u|e)+(v<>>15)|0;e=g>>>(e+7|0)&1|e<<1}else e=0;d=59632+(e<<2)|0;c[j+28>>2]=e;c[j+20>>2]=0;c[f>>2]=0;b=c[14833]|0;a=1<>2]=j;c[j+24>>2]=d;c[j+12>>2]=j;c[j+8>>2]=j;break}b=c[d>>2]|0;j:do if((c[b+4>>2]&-8|0)!=(g|0)){e=g<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(g|0)){b=a;break j}else{e=e<<1;b=a}}c[d>>2]=j;c[j+24>>2]=b;c[j+12>>2]=j;c[j+8>>2]=j;break f}while(0);u=b+8|0;v=c[u>>2]|0;c[v+12>>2]=j;c[u>>2]=j;c[j+8>>2]=v;c[j+12>>2]=b;c[j+24>>2]=0}}else{v=c[14836]|0;if((v|0)==0|g>>>0>>0)c[14836]=g;c[14944]=g;c[14945]=h;c[14947]=0;c[14841]=c[14950];c[14840]=-1;c[14845]=59368;c[14844]=59368;c[14847]=59376;c[14846]=59376;c[14849]=59384;c[14848]=59384;c[14851]=59392;c[14850]=59392;c[14853]=59400;c[14852]=59400;c[14855]=59408;c[14854]=59408;c[14857]=59416;c[14856]=59416;c[14859]=59424;c[14858]=59424;c[14861]=59432;c[14860]=59432;c[14863]=59440;c[14862]=59440;c[14865]=59448;c[14864]=59448;c[14867]=59456;c[14866]=59456;c[14869]=59464;c[14868]=59464;c[14871]=59472;c[14870]=59472;c[14873]=59480;c[14872]=59480;c[14875]=59488;c[14874]=59488;c[14877]=59496;c[14876]=59496;c[14879]=59504;c[14878]=59504;c[14881]=59512;c[14880]=59512;c[14883]=59520;c[14882]=59520;c[14885]=59528;c[14884]=59528;c[14887]=59536;c[14886]=59536;c[14889]=59544;c[14888]=59544;c[14891]=59552;c[14890]=59552;c[14893]=59560;c[14892]=59560;c[14895]=59568;c[14894]=59568;c[14897]=59576;c[14896]=59576;c[14899]=59584;c[14898]=59584;c[14901]=59592;c[14900]=59592;c[14903]=59600;c[14902]=59600;c[14905]=59608;c[14904]=59608;c[14907]=59616;c[14906]=59616;v=h+-40|0;t=g+8|0;t=(t&7|0)==0?0:0-t&7;u=g+t|0;t=v-t|0;c[14838]=u;c[14835]=t;c[u+4>>2]=t|1;c[g+v+4>>2]=40;c[14839]=c[14954]}while(0);b=c[14835]|0;if(b>>>0>m>>>0){t=b-m|0;c[14835]=t;v=c[14838]|0;u=v+m|0;c[14838]=u;c[u+4>>2]=t|1;c[v+4>>2]=m|3;v=v+8|0;Ra=w;return v|0}}v=uu()|0;c[v>>2]=12;v=0;Ra=w;return v|0}function mu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)return;d=a+-8|0;f=c[14836]|0;a=c[a+-4>>2]|0;b=a&-8;j=d+b|0;do if(!(a&1)){e=c[d>>2]|0;if(!(a&3))return;h=d+(0-e)|0;g=e+b|0;if(h>>>0>>0)return;if((c[14837]|0)==(h|0)){a=j+4|0;b=c[a>>2]|0;if((b&3|0)!=3){i=h;b=g;break}c[14834]=g;c[a>>2]=b&-2;c[h+4>>2]=g|1;c[h+g>>2]=g;return}d=e>>>3;if(e>>>0<256){a=c[h+8>>2]|0;b=c[h+12>>2]|0;if((b|0)==(a|0)){c[14832]=c[14832]&~(1<>2]=b;c[b+8>>2]=a;i=h;b=g;break}}f=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){b=h+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){a=0;break}}else b=d;while(1){e=a+20|0;d=c[e>>2]|0;if(!d){e=a+16|0;d=c[e>>2]|0;if(!d)break;else{a=d;b=e}}else{a=d;b=e}}c[b>>2]=0}else{i=c[h+8>>2]|0;c[i+12>>2]=a;c[a+8>>2]=i}while(0);if(f){b=c[h+28>>2]|0;d=59632+(b<<2)|0;if((c[d>>2]|0)==(h|0)){c[d>>2]=a;if(!a){c[14833]=c[14833]&~(1<>2]|0)==(h|0)?i:f+20|0)>>2]=a;if(!a){i=h;b=g;break}}c[a+24>>2]=f;b=h+16|0;d=c[b>>2]|0;if(d|0){c[a+16>>2]=d;c[d+24>>2]=a}b=c[b+4>>2]|0;if(b){c[a+20>>2]=b;c[b+24>>2]=a;i=h;b=g}else{i=h;b=g}}else{i=h;b=g}}else{i=d;h=d}while(0);if(h>>>0>=j>>>0)return;a=j+4|0;e=c[a>>2]|0;if(!(e&1))return;if(!(e&2)){if((c[14838]|0)==(j|0)){j=(c[14835]|0)+b|0;c[14835]=j;c[14838]=i;c[i+4>>2]=j|1;if((i|0)!=(c[14837]|0))return;c[14837]=0;c[14834]=0;return}if((c[14837]|0)==(j|0)){j=(c[14834]|0)+b|0;c[14834]=j;c[14837]=h;c[i+4>>2]=j|1;c[h+j>>2]=j;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){b=c[j+8>>2]|0;a=c[j+12>>2]|0;if((a|0)==(b|0)){c[14832]=c[14832]&~(1<>2]=a;c[a+8>>2]=b;break}}else{g=c[j+24>>2]|0;a=c[j+12>>2]|0;do if((a|0)==(j|0)){b=j+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){d=0;break}}else b=d;while(1){e=a+20|0;d=c[e>>2]|0;if(!d){e=a+16|0;d=c[e>>2]|0;if(!d)break;else{a=d;b=e}}else{a=d;b=e}}c[b>>2]=0;d=a}else{d=c[j+8>>2]|0;c[d+12>>2]=a;c[a+8>>2]=d;d=a}while(0);if(g|0){a=c[j+28>>2]|0;b=59632+(a<<2)|0;if((c[b>>2]|0)==(j|0)){c[b>>2]=d;if(!d){c[14833]=c[14833]&~(1<>2]|0)==(j|0)?e:g+20|0)>>2]=d;if(!d)break}c[d+24>>2]=g;a=j+16|0;b=c[a>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}a=c[a+4>>2]|0;if(a|0){c[d+20>>2]=a;c[a+24>>2]=d}}}while(0);c[i+4>>2]=f|1;c[h+f>>2]=f;if((i|0)==(c[14837]|0)){c[14834]=f;return}}else{c[a>>2]=e&-2;c[i+4>>2]=b|1;c[h+b>>2]=b;f=b}a=f>>>3;if(f>>>0<256){d=59368+(a<<1<<2)|0;b=c[14832]|0;a=1<>2]|0}c[b>>2]=i;c[a+12>>2]=i;c[i+8>>2]=a;c[i+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)e=31;else{h=(a+1048320|0)>>>16&8;j=a<>>16&4;j=j<>>16&2;e=14-(g|h|e)+(j<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;a=59632+(e<<2)|0;c[i+28>>2]=e;c[i+20>>2]=0;c[i+16>>2]=0;b=c[14833]|0;d=1<>2]=i;c[i+24>>2]=a;c[i+12>>2]=i;c[i+8>>2]=i}else{a=c[a>>2]|0;b:do if((c[a+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=a+16+(e>>>31<<2)|0;b=c[d>>2]|0;if(!b)break;if((c[b+4>>2]&-8|0)==(f|0)){a=b;break b}else{e=e<<1;a=b}}c[d>>2]=i;c[i+24>>2]=a;c[i+12>>2]=i;c[i+8>>2]=i;break a}while(0);h=a+8|0;j=c[h>>2]|0;c[j+12>>2]=i;c[h>>2]=i;c[i+8>>2]=j;c[i+12>>2]=a;c[i+24>>2]=0}while(0);j=(c[14840]|0)+-1|0;c[14840]=j;if(j|0)return;a=59784;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[14840]=-1;return}function nu(a,b){a=a|0;b=b|0;var d=0;if(a){d=G(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;a=lu(d)|0;if(!a)return a|0;if(!(c[a+-4>>2]&3))return a|0;gw(a|0,0,d|0)|0;return a|0}function ou(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){b=lu(b)|0;return b|0}if(b>>>0>4294967231){b=uu()|0;c[b>>2]=12;b=0;return b|0}d=pu(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d|0){b=d+8|0;return b|0}d=lu(b)|0;if(!d){b=0;return b|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;ew(d|0,a|0,(e>>>0>>0?e:b)|0)|0;mu(a);b=d;return b|0}function pu(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;l=a+4|0;m=c[l>>2]|0;d=m&-8;i=a+d|0;if(!(m&3)){if(b>>>0<256){a=0;return a|0}if(d>>>0>=(b+4|0)>>>0?(d-b|0)>>>0<=c[14952]<<1>>>0:0)return a|0;a=0;return a|0}if(d>>>0>=b>>>0){d=d-b|0;if(d>>>0<=15)return a|0;k=a+b|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|3;m=i+4|0;c[m>>2]=c[m>>2]|1;qu(k,d);return a|0}if((c[14838]|0)==(i|0)){k=(c[14835]|0)+d|0;d=k-b|0;e=a+b|0;if(k>>>0<=b>>>0){a=0;return a|0}c[l>>2]=m&1|b|2;c[e+4>>2]=d|1;c[14838]=e;c[14835]=d;return a|0}if((c[14837]|0)==(i|0)){e=(c[14834]|0)+d|0;if(e>>>0>>0){a=0;return a|0}d=e-b|0;if(d>>>0>15){k=a+b|0;e=a+e|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|1;c[e>>2]=d;e=e+4|0;c[e>>2]=c[e>>2]&-2;e=k}else{c[l>>2]=m&1|e|2;e=a+e+4|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[14834]=d;c[14837]=e;return a|0}e=c[i+4>>2]|0;if(e&2|0){a=0;return a|0}j=(e&-8)+d|0;if(j>>>0>>0){a=0;return a|0}k=j-b|0;f=e>>>3;do if(e>>>0<256){e=c[i+8>>2]|0;d=c[i+12>>2]|0;if((d|0)==(e|0)){c[14832]=c[14832]&~(1<>2]=d;c[d+8>>2]=e;break}}else{h=c[i+24>>2]|0;d=c[i+12>>2]|0;do if((d|0)==(i|0)){e=i+16|0;f=e+4|0;d=c[f>>2]|0;if(!d){d=c[e>>2]|0;if(!d){f=0;break}}else e=f;while(1){g=d+20|0;f=c[g>>2]|0;if(!f){g=d+16|0;f=c[g>>2]|0;if(!f)break;else{d=f;e=g}}else{d=f;e=g}}c[e>>2]=0;f=d}else{f=c[i+8>>2]|0;c[f+12>>2]=d;c[d+8>>2]=f;f=d}while(0);if(h|0){d=c[i+28>>2]|0;e=59632+(d<<2)|0;if((c[e>>2]|0)==(i|0)){c[e>>2]=f;if(!f){c[14833]=c[14833]&~(1<>2]|0)==(i|0)?g:h+20|0)>>2]=f;if(!f)break}c[f+24>>2]=h;d=i+16|0;e=c[d>>2]|0;if(e|0){c[f+16>>2]=e;c[e+24>>2]=f}d=c[d+4>>2]|0;if(d|0){c[f+20>>2]=d;c[d+24>>2]=f}}}while(0);if(k>>>0<16){c[l>>2]=m&1|j|2;m=a+j+4|0;c[m>>2]=c[m>>2]|1;return a|0}else{i=a+b|0;c[l>>2]=m&1|b|2;c[i+4>>2]=k|3;m=a+j+4|0;c[m>>2]=c[m>>2]|1;qu(i,k);return a|0}return 0}function qu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){f=c[a>>2]|0;if(!(d&3))return;h=a+(0-f)|0;b=f+b|0;if((c[14837]|0)==(h|0)){a=i+4|0;d=c[a>>2]|0;if((d&3|0)!=3)break;c[14834]=b;c[a>>2]=d&-2;c[h+4>>2]=b|1;c[i>>2]=b;return}e=f>>>3;if(f>>>0<256){a=c[h+8>>2]|0;d=c[h+12>>2]|0;if((d|0)==(a|0)){c[14832]=c[14832]&~(1<>2]=d;c[d+8>>2]=a;break}}g=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){d=h+16|0;e=d+4|0;a=c[e>>2]|0;if(!a){a=c[d>>2]|0;if(!a){a=0;break}}else d=e;while(1){f=a+20|0;e=c[f>>2]|0;if(!e){f=a+16|0;e=c[f>>2]|0;if(!e)break;else{a=e;d=f}}else{a=e;d=f}}c[d>>2]=0}else{f=c[h+8>>2]|0;c[f+12>>2]=a;c[a+8>>2]=f}while(0);if(g){d=c[h+28>>2]|0;e=59632+(d<<2)|0;if((c[e>>2]|0)==(h|0)){c[e>>2]=a;if(!a){c[14833]=c[14833]&~(1<>2]|0)==(h|0)?f:g+20|0)>>2]=a;if(!a)break}c[a+24>>2]=g;d=h+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(d){c[a+20>>2]=d;c[d+24>>2]=a}}}else h=a;while(0);a=i+4|0;e=c[a>>2]|0;if(!(e&2)){if((c[14838]|0)==(i|0)){i=(c[14835]|0)+b|0;c[14835]=i;c[14838]=h;c[h+4>>2]=i|1;if((h|0)!=(c[14837]|0))return;c[14837]=0;c[14834]=0;return}if((c[14837]|0)==(i|0)){i=(c[14834]|0)+b|0;c[14834]=i;c[14837]=h;c[h+4>>2]=i|1;c[h+i>>2]=i;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){a=c[i+8>>2]|0;b=c[i+12>>2]|0;if((b|0)==(a|0)){c[14832]=c[14832]&~(1<>2]=b;c[b+8>>2]=a;break}}else{g=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+16|0;d=a+4|0;b=c[d>>2]|0;if(!b){b=c[a>>2]|0;if(!b){d=0;break}}else a=d;while(1){e=b+20|0;d=c[e>>2]|0;if(!d){e=b+16|0;d=c[e>>2]|0;if(!d)break;else{b=d;a=e}}else{b=d;a=e}}c[a>>2]=0;d=b}else{d=c[i+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);if(g|0){b=c[i+28>>2]|0;a=59632+(b<<2)|0;if((c[a>>2]|0)==(i|0)){c[a>>2]=d;if(!d){c[14833]=c[14833]&~(1<>2]|0)==(i|0)?e:g+20|0)>>2]=d;if(!d)break}c[d+24>>2]=g;b=i+16|0;a=c[b>>2]|0;if(a|0){c[d+16>>2]=a;c[a+24>>2]=d}b=c[b+4>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}}while(0);c[h+4>>2]=f|1;c[h+f>>2]=f;if((h|0)==(c[14837]|0)){c[14834]=f;return}}else{c[a>>2]=e&-2;c[h+4>>2]=b|1;c[h+b>>2]=b;f=b}b=f>>>3;if(f>>>0<256){d=59368+(b<<1<<2)|0;a=c[14832]|0;b=1<>2]|0}c[a>>2]=h;c[b+12>>2]=h;c[h+8>>2]=b;c[h+12>>2]=d;return}b=f>>>8;if(b)if(f>>>0>16777215)e=31;else{g=(b+1048320|0)>>>16&8;i=b<>>16&4;i=i<>>16&2;e=14-(d|g|e)+(i<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;b=59632+(e<<2)|0;c[h+28>>2]=e;c[h+20>>2]=0;c[h+16>>2]=0;a=c[14833]|0;d=1<>2]=h;c[h+24>>2]=b;c[h+12>>2]=h;c[h+8>>2]=h;return}b=c[b>>2]|0;a:do if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(f|0)){b=a;break a}else{e=e<<1;b=a}}c[d>>2]=h;c[h+24>>2]=b;c[h+12>>2]=h;c[h+8>>2]=h;return}while(0);g=b+8|0;i=c[g>>2]|0;c[i+12>>2]=h;c[g>>2]=h;c[h+8>>2]=i;c[h+12>>2]=b;c[h+24>>2]=0;return}function ru(a,b){a=a|0;b=b|0;if(a>>>0<9){b=lu(b)|0;return b|0}else{b=su(a,b)|0;return b|0}return 0}function su(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=a>>>0>16?a:16;if(!(d+-1&d))a=d;else{a=16;while(1)if(a>>>0>>0)a=a<<1;else break}if((-64-a|0)>>>0<=b>>>0){h=uu()|0;c[h>>2]=12;h=0;return h|0}g=b>>>0<11?16:b+11&-8;d=lu(g+12+a|0)|0;if(!d){h=0;return h|0}f=d+-8|0;do if(a+-1&d){e=(d+a+-1&0-a)+-8|0;b=f;e=(e-b|0)>>>0>15?e:e+a|0;b=e-b|0;a=d+-4|0;i=c[a>>2]|0;d=(i&-8)-b|0;if(!(i&3)){c[e>>2]=(c[f>>2]|0)+b;c[e+4>>2]=d;a=e;b=e;break}else{i=e+4|0;c[i>>2]=d|c[i>>2]&1|2;d=e+d+4|0;c[d>>2]=c[d>>2]|1;c[a>>2]=b|c[a>>2]&1|2;c[i>>2]=c[i>>2]|1;qu(f,b);a=e;b=e;break}}else{a=f;b=f}while(0);a=a+4|0;d=c[a>>2]|0;if(d&3|0?(h=d&-8,h>>>0>(g+16|0)>>>0):0){i=h-g|0;f=b+g|0;c[a>>2]=g|d&1|2;c[f+4>>2]=i|3;h=b+h+4|0;c[h>>2]=c[h>>2]|1;qu(f,i)}i=b+8|0;return i|0}function tu(a){a=a|0;var b=0;if(a>>>0>4294963200){b=uu()|0;c[b>>2]=0-a;a=-1}return a|0}function uu(){return 59888}function vu(a){a=a|0;return a|0}function wu(a){a=a|0;return ((a|0)==32|(a|0)==9)&1|0}function xu(){return 30868}function yu(a){a=a|0;return ((a|32)+-97|0)>>>0<26|0}function zu(a){a=a|0;var b=0;b=(Au(a)|0)==0;return (b?a:a&95)|0}function Au(a){a=a|0;return (a+-97|0)>>>0<26|0}function Bu(b,c){b=b|0;c=c|0;var d=0,e=0;d=a[b>>0]|0;e=a[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24)b=e;else{do{b=b+1|0;c=c+1|0;d=a[b>>0]|0;e=a[c>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24));b=e}return (d&255)-(b&255)|0}function Cu(a){a=a|0;return (a+-65|0)>>>0<26|0}function Du(a){a=a|0;var b=0;b=(Cu(a)|0)==0;return (b?a:a|32)|0}function Eu(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=5;else{d=f;while(1){if(!(a[b>>0]|0)){b=d;break a}b=b+1|0;d=b;if(!(d&3)){e=5;break}}}while(0);if((e|0)==5){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do b=b+1|0;while((a[b>>0]|0)!=0)}return b-f|0}function Fu(a,b){a=a|0;b=b|0;if(!b)b=0;else b=Gu(c[b>>2]|0,c[b+4>>2]|0,a)|0;return ((b|0)==0?a:b)|0}function Gu(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;o=(c[b>>2]|0)+1794895138|0;h=Hu(c[b+8>>2]|0,o)|0;f=Hu(c[b+12>>2]|0,o)|0;g=Hu(c[b+16>>2]|0,o)|0;a:do if((h>>>0>>2>>>0?(n=d-(h<<2)|0,f>>>0>>0&g>>>0>>0):0)?((g|f)&3|0)==0:0){n=f>>>2;m=g>>>2;l=0;while(1){j=h>>>1;k=l+j|0;i=k<<1;g=i+n|0;f=Hu(c[b+(g<<2)>>2]|0,o)|0;g=Hu(c[b+(g+1<<2)>>2]|0,o)|0;if(!(g>>>0>>0&f>>>0<(d-g|0)>>>0)){f=0;break a}if(a[b+(g+f)>>0]|0){f=0;break a}f=Bu(e,b+g|0)|0;if(!f)break;f=(f|0)<0;if((h|0)==1){f=0;break a}l=f?l:k;h=f?j:h-j|0}f=i+m|0;g=Hu(c[b+(f<<2)>>2]|0,o)|0;f=Hu(c[b+(f+1<<2)>>2]|0,o)|0;if(f>>>0>>0&g>>>0<(d-f|0)>>>0)f=(a[b+(f+g)>>0]|0)==0?b+f|0:0;else f=0}else f=0;while(0);return f|0}function Hu(a,b){a=a|0;b=b|0;var c=0;c=dw(a|0)|0;return ((b|0)==0?a:c)|0}function Iu(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,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=Ra;Ra=Ra+192|0;i=r+168|0;h=r+152|0;q=r+136|0;p=r+120|0;o=r+112|0;l=r+96|0;k=r+80|0;f=r+64|0;m=r+48|0;g=r+32|0;e=r+16|0;s=r;j=r+184|0;c[s>>2]=d;d=(c[s>>2]|0)+(4-1)&~(4-1);n=c[d>>2]|0;c[s>>2]=d+4;n=(b|0)==4?n|32768:n;a:do switch(b|0){case 14:{c[e>>2]=a;c[e+4>>2]=14;c[e+8>>2]=n;d=tu(oa(221,e|0)|0)|0;break}case 9:{c[g>>2]=a;c[g+4>>2]=16;c[g+8>>2]=j;d=oa(221,g|0)|0;switch(d|0){case -22:{c[m>>2]=a;c[m+4>>2]=9;c[m+8>>2]=n;d=oa(221,m|0)|0;break}case 0:{d=c[j+4>>2]|0;d=(c[j>>2]|0)==2?0-d|0:d;break}default:d=tu(d)|0}break}case 1030:{c[f>>2]=a;c[f+4>>2]=1030;c[f+8>>2]=n;d=oa(221,f|0)|0;if((d|0)!=-22){if((d|0)>-1){c[k>>2]=d;c[k+4>>2]=2;c[k+8>>2]=1;oa(221,k|0)|0}d=tu(d)|0;break a}c[l>>2]=a;c[l+4>>2]=1030;c[l+8>>2]=0;d=oa(221,l|0)|0;if((d|0)==-22){c[p>>2]=a;c[p+4>>2]=0;c[p+8>>2]=n;d=oa(221,p|0)|0;if((d|0)>-1){c[q>>2]=d;c[q+4>>2]=2;c[q+8>>2]=1;oa(221,q|0)|0}d=tu(d)|0;break a}else{if((d|0)>-1){c[o>>2]=d;va(6,o|0)|0}d=tu(-22)|0;break a}}case 15:case 16:case 12:case 13:{c[h>>2]=a;c[h+4>>2]=b;c[h+8>>2]=n;d=tu(oa(221,h|0)|0)|0;break}default:{c[i>>2]=a;c[i+4>>2]=b;c[i+8>>2]=n;d=tu(oa(221,i|0)|0)|0}}while(0);Ra=r;return d|0}function Ju(){var a=0,b=0;b=Ra;Ra=Ra+16|0;a=ja(20,b|0)|0;Ra=b;return a|0}function Ku(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d&255;a:do if(!f)b=b+(Eu(b)|0)|0;else{if(b&3){e=d&255;do{g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break a;b=b+1|0}while((b&3|0)!=0)}f=G(f,16843009)|0;e=c[b>>2]|0;b:do if(!((e&-2139062144^-2139062144)&e+-16843009))do{g=e^f;if((g&-2139062144^-2139062144)&g+-16843009|0)break b;b=b+4|0;e=c[b>>2]|0}while(!((e&-2139062144^-2139062144)&e+-16843009|0));while(0);e=d&255;while(1){g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break;else b=b+1|0}}while(0);return b|0}function Lu(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)b=0;else{while(1){e=a[b>>0]|0;f=a[c>>0]|0;if(e<<24>>24!=f<<24>>24)break;d=d+-1|0;if(!d){b=0;break a}else{b=b+1|0;c=c+1|0}}b=(e&255)-(f&255)|0}while(0);return b|0}function Mu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=Ra;Ra=Ra+48|0;g=h+32|0;f=h+16|0;e=h;if(!(b&4194368))e=0;else{c[e>>2]=d;i=(c[e>>2]|0)+(4-1)&~(4-1);d=c[i>>2]|0;c[e>>2]=i+4;e=d}c[f>>2]=a;c[f+4>>2]=b|32768;c[f+8>>2]=e;e=ua(5,f|0)|0;if(!((b&524288|0)==0|(e|0)<0)){c[g>>2]=e;c[g+4>>2]=2;c[g+8>>2]=1;oa(221,g|0)|0}i=tu(e)|0;Ra=h;return i|0}function Nu(a){a=a|0;var b=0,d=0;b=Ra;Ra=Ra+16|0;d=b;a=vu(a)|0;c[d>>2]=a;a=va(6,d|0)|0;a=tu((a|0)==-4?0:a)|0;Ra=b;return a|0}function Ou(a,b){a=a|0;b=b|0;var d=0,e=0;d=Ra;Ra=Ra+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=tu(ha(196,e|0)|0)|0;Ra=d;return b|0}function Pu(a,b){a=a|0;b=b|0;var d=0,e=0;d=Ra;Ra=Ra+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=tu(ga(195,e|0)|0)|0;Ra=d;return b|0}function Qu(a,b){a=a|0;b=b|0;var d=0,e=0;d=Ra;Ra=Ra+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=tu(qa(33,e|0)|0)|0;Ra=d;return b|0}function Ru(a,b){a=a|0;b=b|0;return Uu(a,b,(Eu(a)|0)+1|0)|0}function Su(a,b){a=a|0;b=b|0;Tu(a,b)|0;return a|0}function Tu(b,d){b=b|0;d=d|0;var e=0,f=0;e=d;a:do if(!((e^b)&3)){if(e&3)do{e=a[d>>0]|0;a[b>>0]=e;if(!(e<<24>>24))break a;d=d+1|0;b=b+1|0}while((d&3|0)!=0);e=c[d>>2]|0;if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){d=d+4|0;b=f+4|0;c[f>>2]=e;e=c[d>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009|0)break;else f=b}}f=10}else f=10;while(0);if((f|0)==10){f=a[d>>0]|0;a[b>>0]=f;if(f<<24>>24)do{d=d+1|0;b=b+1|0;f=a[d>>0]|0;a[b>>0]=f}while(f<<24>>24!=0)}return b|0}function Uu(b,c,d){b=b|0;c=c|0;d=d|0;a:do if(!d)d=0;else{c=c&255;while(1){d=d+-1|0;if((a[b+d>>0]|0)==c<<24>>24)break;if(!d){d=0;break a}}d=b+d|0}while(0);return d|0}function Vu(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;d=b;e=58986;f=d+15|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));if(!c){a[b+14>>0]=48;a[b+15>>0]=0}else{e=c;d=14;while(1){d=d+1|0;if(e>>>0<10)break;else e=(e>>>0)/10|0}a[b+d>>0]=0;do{f=c;c=(c>>>0)/10|0;d=d+-1|0;a[b+d>>0]=f-(c*10|0)|48}while(f>>>0>=10)}return}function Wu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=Ra;Ra=Ra+16|0;f=e;c[f>>2]=a;c[f+4>>2]=b;c[f+8>>2]=d;d=tu(wa(85,f|0)|0)|0;Ra=e;return d|0}function Xu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=Ra;Ra=Ra+48|0;f=g+40|0;e=g;d=g+32|0;c[d>>2]=a;c[d+4>>2]=b;d=ia(197,d|0)|0;if((d|0)==-9?(c[e>>2]=a,c[e+4>>2]=1,(oa(221,e|0)|0)>=0):0){Vu(e,a);c[f>>2]=e;c[f+4>>2]=b;b=tu(ga(195,f|0)|0)|0}else b=tu(d)|0;Ra=g;return b|0}function Yu(a){a=a|0;var b=0,c=0;b=(Eu(a)|0)+1|0;c=lu(b)|0;if(!c)a=0;else a=ew(c|0,a|0,b|0)|0;return a|0}function Zu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=Ra;Ra=Ra+4112|0;e=g+4096|0;d=g;if(a)if(!b){a=uu()|0;c[a>>2]=22;a=0}else f=4;else{b=4096;a=d;f=4}if((f|0)==4){c[e>>2]=a;c[e+4>>2]=b;if((tu(da(183,e|0)|0)|0)>=0){if((a|0)==(d|0))a=Yu(d)|0}else a=0}Ra=g;return a|0}function _u(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=Ra;Ra=Ra+16|0;f=e;c[f>>2]=a;c[f+4>>2]=b;c[f+8>>2]=d;d=tu(sa(4,f|0)|0)|0;Ra=e;return d|0}function $u(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=Ra;Ra=Ra+16|0;f=e;c[f>>2]=a;c[f+4>>2]=b;c[f+8>>2]=d;d=tu(pa(3,f|0)|0)|0;Ra=e;return d|0}function av(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0;if(!e)f=0;else{f=a[b>>0]|0;a:do if(!(f<<24>>24))f=0;else while(1){e=e+-1|0;g=a[c>>0]|0;if(!(f<<24>>24==g<<24>>24&((e|0)!=0&g<<24>>24!=0)))break a;b=b+1|0;c=c+1|0;f=a[b>>0]|0;if(!(f<<24>>24)){f=0;break}}while(0);f=(f&255)-(d[c>>0]|0)|0}return f|0}function bv(b,e){b=b|0;e=e|0;var f=0,g=0;f=0;while(1){if((d[27392+f>>0]|0)==(b|0)){g=4;break}f=f+1|0;if((f|0)==87){b=87;g=5;break}}if((g|0)==4)if(!f)f=27488;else{b=f;g=5}if((g|0)==5){f=27488;do{do{g=f;f=f+1|0}while((a[g>>0]|0)!=0);b=b+-1|0}while((b|0)!=0)}return cv(f,c[e+20>>2]|0)|0}function cv(a,b){a=a|0;b=b|0;return Fu(a,b)|0}function dv(a){a=a|0;var b=0;b=(ev()|0)+188|0;return bv(a,c[b>>2]|0)|0}function ev(){return xu()|0}function fv(a,b){a=a|0;b=b|0;var d=0,e=0;d=Ra;Ra=Ra+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=tu(ra(39,e|0)|0)|0;Ra=d;return b|0}function gv(a,b){a=a|0;b=b|0;var d=0,e=0;d=Ra;Ra=Ra+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=tu(xa(91,e|0)|0)|0;Ra=d;return b|0}function hv(){return}function iv(a){a=+a;var b=0;g[h>>3]=a;b=c[h+4>>2]&2147483647;c[h>>2]=c[h>>2];c[h+4>>2]=b;a=+g[h>>3];do if(b>>>0<1072049730)if(b>>>0<1045430272)a=1.0;else{a=+kv(a);a=a*a/((a+1.0)*2.0)+1.0}else if(b>>>0<1082535490){a=+D(+a);a=(a+1.0/a)*.5;break}else{a=+lv(a);break}while(0);return +a}function jv(a){a=+a;var b=0.0,d=0,e=0.0;g[h>>3]=a;d=c[h+4>>2]|0;e=(d|0)<0?-.5:.5;d=d&2147483647;c[h>>2]=c[h>>2];c[h+4>>2]=d;b=+g[h>>3];do if(d>>>0<1082535490){b=+kv(b);if(d>>>0>=1072693248){a=e*(b+b/(b+1.0));break}if(d>>>0>=1045430272)a=e*(b*2.0-b*b/(b+1.0))}else a=e*2.0*+lv(b);while(0);return +a}function kv(a){a=+a;var b=0,d=0,e=0.0,f=0.0,i=0.0,j=0,k=0,l=0.0;g[h>>3]=a;d=c[h+4>>2]|0;b=d&2147483647;d=bw(c[h>>2]|0,d|0,63)|0;L()|0;do if(b>>>0>1078159481){j=mv(a)|0;b=(L()|0)&2147483647;if(!(b>>>0>2146435072|(b|0)==2146435072&j>>>0>0))if(!d)if(a>709.782712893384)a=a*8988465674311579538646525.0e283;else k=11;else a=-1.0}else{if(b>>>0<=1071001154)if(b>>>0<1016070144)break;else{i=0.0;j=0;k=14;break}if(b>>>0<1072734898)if(!d){b=1;e=a+-.6931471803691238;f=1.9082149292705877e-10;k=12;break}else{b=-1;e=a+.6931471803691238;f=-1.9082149292705877e-10;k=12;break}else k=11}while(0);if((k|0)==11){b=~~(a*1.4426950408889634+((d|0)==0?.5:-.5));f=+(b|0);e=a-f*.6931471803691238;f=f*1.9082149292705877e-10;k=12}if((k|0)==12){i=e-f;a=i;i=e-i-f;j=b;k=14}a:do if((k|0)==14){f=a*.5;e=a*f;l=e*(e*(e*(e*(4.008217827329362e-06-e*2.0109921818362437e-07)+-7.93650757867488e-05)+1.5873015872548146e-03)+-.03333333333333313)+1.0;f=3.0-f*l;f=e*((l-f)/(6.0-a*f));if(!j){a=a-(a*f-e);break}f=a*(f-i)-i-e;switch(j|0){case -1:{a=(a-f)*.5+-.5;break a}case 1:if(a<-.25){a=(f-(a+.5))*-2.0;break a}else{a=(a-f)*2.0+1.0;break a}default:{d=cw(j+1023|0,0,52)|0;k=L()|0;c[h>>2]=d;c[h+4>>2]=k;i=+g[h>>3];if(j>>>0>56){a=a-f+1.0;a=((j|0)==1024?a*2.0*8988465674311579538646525.0e283:a*i)+-1.0;break a}b=cw(1023-j|0,0,52)|0;d=L()|0;if((j|0)<20){c[h>>2]=b;c[h+4>>2]=d;e=1.0-+g[h>>3];a=a-f}else{c[h>>2]=b;c[h+4>>2]=d;e=a-(f+ +g[h>>3]);a=1.0}a=(e+a)*i;break a}}}while(0);return +a}function lv(a){a=+a;return +(+D(+(a+-1416.0996898839683))*2247116418577894884661631.0e283*2247116418577894884661631.0e283)}function mv(a){a=+a;var b=0;g[h>>3]=a;b=c[h>>2]|0;K(c[h+4>>2]|0);return b|0}function nv(a,b,c){a=a|0;b=b|0;c=c|0;ov(a,b,c)|0;return a|0}function ov(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d;a:do if(!((g^b)&3)){f=(e|0)!=0;if(f&(g&3|0)!=0)do{g=a[d>>0]|0;a[b>>0]=g;if(!(g<<24>>24))break a;e=e+-1|0;d=d+1|0;b=b+1|0;f=(e|0)!=0}while(f&(d&3|0)!=0);if(f){if(a[d>>0]|0){b:do if(e>>>0>3){f=d;while(1){d=c[f>>2]|0;if((d&-2139062144^-2139062144)&d+-16843009|0){d=f;break b}c[b>>2]=d;e=e+-4|0;d=f+4|0;b=b+4|0;if(e>>>0>3)f=d;else break}}while(0);h=13}}else e=0}else h=13;while(0);c:do if((h|0)==13)if(!e)e=0;else while(1){h=a[d>>0]|0;a[b>>0]=h;if(!(h<<24>>24))break c;e=e+-1|0;b=b+1|0;if(!e){e=0;break}else d=d+1|0}while(0);gw(b|0,0,e|0)|0;return b|0}function pv(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,l=0,m=0,n=0;m=Ra;Ra=Ra+208|0;j=m;k=m+192|0;h=G(d,b)|0;i=k;c[i>>2]=1;c[i+4>>2]=0;a:do if(h|0){i=0-d|0;c[j+4>>2]=d;c[j>>2]=d;f=2;b=d;g=d;while(1){b=b+d+g|0;c[j+(f<<2)>>2]=b;if(b>>>0>>0){n=g;f=f+1|0;g=b;b=n}else break}g=a+h+i|0;if(g>>>0>a>>>0){h=g;f=1;b=1;do{do if((b&3|0)!=3){b=f+-1|0;if((c[j+(b<<2)>>2]|0)>>>0<(h-a|0)>>>0)qv(a,d,e,f,j);else sv(a,d,e,k,f,0,j);if((f|0)==1){tv(k,1);f=0;break}else{tv(k,b);f=1;break}}else{qv(a,d,e,f,j);rv(k,2);f=f+2|0}while(0);b=c[k>>2]|1;c[k>>2]=b;a=a+d|0}while(a>>>0>>0)}else{f=1;b=1}sv(a,d,e,k,f,0,j);g=k+4|0;while(1){if((f|0)==1&(b|0)==1)if(!(c[g>>2]|0))break a;else l=19;else if((f|0)<2)l=19;else{tv(k,2);n=f+-2|0;c[k>>2]=c[k>>2]^7;rv(k,1);sv(a+(0-(c[j+(n<<2)>>2]|0))+i|0,d,e,k,f+-1|0,1,j);tv(k,1);b=c[k>>2]|1;c[k>>2]=b;a=a+i|0;sv(a,d,e,k,n,1,j);f=n}if((l|0)==19){l=0;b=uv(k)|0;rv(k,b);a=a+i|0;f=b+f|0;b=c[k>>2]|0}}}while(0);Ra=m;return}function qv(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;m=Ra;Ra=Ra+240|0;l=m;c[l>>2]=a;a:do if((e|0)>1){k=0-b|0;i=a;g=e;e=1;h=a;while(1){i=i+k|0;j=g+-2|0;a=i+(0-(c[f+(j<<2)>>2]|0))|0;if((Xa[d&255](h,a)|0)>-1?(Xa[d&255](h,i)|0)>-1:0)break a;h=l+(e<<2)|0;if((Xa[d&255](a,i)|0)>-1){c[h>>2]=a;g=g+-1|0}else{c[h>>2]=i;a=i;g=j}e=e+1|0;if((g|0)<=1)break a;i=a;h=c[l>>2]|0}}else e=1;while(0);wv(b,l,e);Ra=m;return}function rv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[f>>2]|0;c[a>>2]=e;c[f>>2]=0;b=b+-32|0;d=0}else{d=c[f>>2]|0;e=c[a>>2]|0}c[a>>2]=d<<32-b|e>>>b;c[f>>2]=d>>>b;return}function sv(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,l=0,m=0,n=0,o=0,p=0;o=Ra;Ra=Ra+240|0;m=o+232|0;n=o;p=c[e>>2]|0;c[m>>2]=p;j=c[e+4>>2]|0;k=m+4|0;c[k>>2]=j;c[n>>2]=a;a:do if((p|0)!=1|(j|0)!=0?(l=0-b|0,i=a+(0-(c[h+(f<<2)>>2]|0))|0,(Xa[d&255](i,a)|0)>=1):0){e=1;g=(g|0)==0;j=i;while(1){if(g&(f|0)>1){g=a+l|0;i=c[h+(f+-2<<2)>>2]|0;if((Xa[d&255](g,j)|0)>-1){i=10;break a}if((Xa[d&255](g+(0-i)|0,j)|0)>-1){i=10;break a}}g=e+1|0;c[n+(e<<2)>>2]=j;p=uv(m)|0;rv(m,p);f=p+f|0;if(!((c[m>>2]|0)!=1|(c[k>>2]|0)!=0)){e=g;a=j;i=10;break a}a=j+(0-(c[h+(f<<2)>>2]|0))|0;if((Xa[d&255](a,c[n>>2]|0)|0)<1){a=j;e=g;g=0;i=9;break}else{p=j;e=g;g=1;j=a;a=p}}}else{e=1;i=9}while(0);if((i|0)==9?(g|0)==0:0)i=10;if((i|0)==10){wv(b,n,e);qv(a,b,d,f,h)}Ra=o;return}function tv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[a>>2]|0;c[f>>2]=e;c[a>>2]=0;b=b+-32|0;d=0}else{d=c[a>>2]|0;e=c[f>>2]|0}c[f>>2]=d>>>(32-b|0)|e<>2]=d<>2]|0)+-1|0)|0;if(!b){b=vv(c[a+4>>2]|0)|0;return ((b|0)==0?0:b+32|0)|0}else return b|0;return 0}function vv(a){a=a|0;var b=0;if(a)if(!(a&1)){b=a;a=0;while(1){a=a+1|0;if(!(b&2))b=b>>>1;else break}}else a=0;else a=32;return a|0}function wv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=Ra;Ra=Ra+256|0;e=h;a:do if((d|0)>=2?(g=b+(d<<2)|0,c[g>>2]=e,a|0):0)while(1){f=a>>>0<256?a:256;ew(e|0,c[b>>2]|0,f|0)|0;e=0;do{i=b+(e<<2)|0;e=e+1|0;ew(c[i>>2]|0,c[b+(e<<2)>>2]|0,f|0)|0;c[i>>2]=(c[i>>2]|0)+f}while((e|0)!=(d|0));a=a-f|0;if(!a)break a;e=c[g>>2]|0}while(0);Ra=h;return}function xv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=Ra;Ra=Ra+32|0;g=f;e=f+20|0;c[g>>2]=a;c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;d=(tu(ba(140,g|0)|0)|0)==0;Ra=f;return (d?c[e>>2]|0:-1)|0}function yv(a,b){a=a|0;b=b|0;var d=0,e=0;d=Ra;Ra=Ra+16|0;e=d;c[e>>2]=a;c[e+4>>2]=0;c[e+8>>2]=b;c[e+12>>2]=b>>31;b=tu(fa(194,e|0)|0)|0;Ra=d;return b|0}function zv(a){a=a|0;var b=0,d=0;b=Ra;Ra=Ra+16|0;d=b;c[d>>2]=a;a=tu(aa(118,d|0)|0)|0;Ra=b;return a|0}function Av(a){a=a|0;var b=0,d=0;d=Ra;Ra=Ra+16|0;b=d;c[b>>2]=a;c[b+4>>2]=0;a=(Ja(b|0,b|0)|0)==0;Ra=d;return (a?0:c[b>>2]|0)|0}function Bv(a){a=a|0;var b=0,d=0;b=Ra;Ra=Ra+16|0;d=b;c[d>>2]=a;a=tu($(10,d|0)|0)|0;Ra=b;return a|0}function Cv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=Ra;Ra=Ra+64|0;g=h+48|0;f=h;e=h+32|0;c[e>>2]=a;c[e+4>>2]=b;c[e+8>>2]=d;e=ma(207,e|0)|0;if((e|0)==-9?(c[f>>2]=a,c[f+4>>2]=1,(oa(221,f|0)|0)>=0):0){Vu(f,a);c[g>>2]=f;c[g+4>>2]=b;c[g+8>>2]=d;a=tu(na(212,g|0)|0)|0}else a=tu(e)|0;Ra=h;return a|0}function Dv(){var a=0,b=0;b=Ra;Ra=Ra+16|0;a=ka(201,b|0)|0;Ra=b;return a|0}function Ev(a){a=a|0;var b=0,d=0;b=Ra;Ra=Ra+16|0;d=b;c[d>>2]=a;a=tu(ta(40,d|0)|0)|0;Ra=b;return a|0}function Fv(a){a=+a;var b=0,d=0,e=0,f=0,i=0.0;g[h>>3]=a;f=c[h>>2]|0;d=c[h+4>>2]|0;b=bw(f|0,d|0,52)|0;L()|0;b=b&2047;c[h>>2]=f;c[h+4>>2]=d&2147483647;a=+g[h>>3];if(b>>>0<1022){if(b>>>0>=991){i=a*2.0;a=i+i*a/(1.0-a);e=5}}else{a=a/(1.0-a)*2.0;e=5}if((e|0)==5)a=+Gv(a)*.5;return +((d|0)<0?-a:a)}function Gv(a){a=+a;var b=0.0,d=0,e=0.0,f=0,i=0,j=0.0,k=0.0,l=0.0,m=0.0;g[h>>3]=a;d=c[h+4>>2]|0;do if((d|0)<0|d>>>0<1071284858)if(d>>>0<=3220176895){i=cw(d|0,0,1)|0;L()|0;if(i>>>0<2034237440)break;if(d>>>0<3218259653){e=0.0;b=0.0;f=11;break}else{f=8;break}}else{if(a==-1.0){a=-r;break}a=(a-a)/0.0;break}else if(d>>>0<=2146435071)f=8;while(0);if((f|0)==8){b=a+1.0;g[h>>3]=b;d=(c[h+4>>2]|0)+614242|0;if(d>>>0<1129316352)b=(d>>>0>1074790399?1.0-(b-a):a-(b+-1.0))/b;else b=0.0;c[h>>2]=c[h>>2];c[h+4>>2]=(d&1048575)+1072079006;e=+((d>>>20)+-1023|0);a=+g[h>>3]+-1.0;f=11}if((f|0)==11){j=a*(a*.5);m=a/(a+2.0);l=m*m;k=l*l;a=e*.6931471803691238+(a+(b+e*1.9082149292705877e-10+m*(j+(k*(k*(k*.15313837699209373+.22222198432149784)+.3999999999940942)+l*(k*(k*(k*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)))-j))}return +a}function Hv(a){a=+a;var b=0;g[h>>3]=a;b=bw(c[h>>2]|0,c[h+4>>2]|0,52)|0;L()|0;b=b&2047;do if(b>>>0>=1024)if(b>>>0<1049){a=+E(+(a*2.0-1.0/(+u(+(a*a+-1.0))+a)));break}else{a=+E(+a)+.6931471805599453;break}else{a=a+-1.0;a=+Gv(a+ +u(+(a*a+a*2.0)))}while(0);return +a}function Iv(a){a=+a;var b=0,d=0;g[h>>3]=a;d=c[h+4>>2]|0;b=d&2147483647;c[h>>2]=c[h>>2];c[h+4>>2]=b;a=+g[h>>3];do if(b>>>0>1071748074)if(b>>>0>1077149696){a=1.0-0.0/a;break}else{a=1.0-2.0/(+kv(a*2.0)+2.0);break}else{if(b>>>0>1070618798){a=+kv(a*2.0);a=a/(a+2.0);break}if(b>>>0>1048575){a=+kv(a*-2.0);a=-a/(a+2.0)}}while(0);return +((d|0)<0?-a:a)}function Jv(a){a=+a;var b=0,d=0,e=0,f=0.0;g[h>>3]=a;e=c[h>>2]|0;d=c[h+4>>2]|0;b=bw(e|0,d|0,52)|0;L()|0;b=b&2047;c[h>>2]=e;c[h+4>>2]=d&2147483647;a=+g[h>>3];do if(b>>>0<=1048){if(b>>>0>1023){a=+E(+(a*2.0+1.0/(+u(+(a*a+1.0))+a)));break}if(b>>>0>996){f=a*a;a=+Gv(f/(+u(+(f+1.0))+1.0)+a)}}else a=+E(+a)+.6931471805599453;while(0);return +((d|0)<0?-a:a)}function Kv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=Ra;Ra=Ra+48|0;f=g+40|0;e=g;d=g+32|0;c[d>>2]=a;c[d+4>>2]=b;d=ya(94,d|0)|0;if((d|0)==-9?(c[e>>2]=a,c[e+4>>2]=1,(oa(221,e|0)|0)>=0):0){Vu(e,a);c[f>>2]=e;c[f+4>>2]=b;a=tu(ca(15,f|0)|0)|0}else a=tu(d)|0;Ra=g;return a|0}function Lv(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;i=Ra;Ra=Ra+32|0;h=i;do if((g&4095|0)==0&(((g|0)<0)<<31>>31&-4096|0)==0){if(b>>>0>2147483646){a=uu()|0;c[a>>2]=12;a=-1;break}c[h>>2]=a;c[h+4>>2]=b;c[h+8>>2]=d;c[h+12>>2]=e;c[h+16>>2]=f;c[h+20>>2]=g>>12;a=tu(ea(192,h|0)|0)|0}else{a=uu()|0;c[a>>2]=22;a=-1}while(0);Ra=i;return a|0}function Mv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;h=Ra;Ra=Ra+32|0;f=h;e=a[d>>0]|0;a:do if(e<<24>>24!=0?(a[d+1>>0]|0)!=0:0){gw(f|0,0,32)|0;e=a[d>>0]|0;if(e<<24>>24)do{j=e&255;i=f+(j>>>5<<2)|0;c[i>>2]=c[i>>2]|1<<(j&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);d=a[b>>0]|0;if(!(d<<24>>24))e=b;else{e=b;do{j=d&255;if(c[f+(j>>>5<<2)>>2]&1<<(j&31)|0)break a;e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0)}}else g=3;while(0);if((g|0)==3)e=Ku(b,e<<24>>24)|0;Ra=h;return e-b|0}function Nv(){Z(59908);return}function Ov(){return 59892}function Pv(){return 59900}function Qv(){return 59904}function Rv(){return 59908}function Sv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (K(b+d+(c>>>0>>0|0)>>>0|0),c|0)|0}function Tv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (K(d|0),a-c>>>0|0)|0}function Uv(a){a=a|0;return (a?31-(I(a^a-1)|0)|0:32)|0}function Vv(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;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (K(n|0),f)|0}else{if(!g){n=0;f=0;return (K(n|0),f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return (K(n|0),f)|0}}g=(i|0)==0;do if(h){if(!g){g=(I(i|0)|0)-(I(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<>>(m>>>0)&b;g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return (K(n|0),f)|0}g=h-1|0;if(g&h|0){i=(I(h|0)|0)+33-(I(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(f|0){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (K(o|0),p)|0}else{p=Uv(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (K(o|0),p)|0}}else{if(g){if(f|0){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (K(o|0),p)|0}if(!l){if(f|0){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (K(o|0),p)|0}g=i-1|0;if(!(g&i)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((Uv(i|0)|0)>>>0);return (K(o|0),p)|0}g=(I(i|0)|0)-(I(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return (K(o|0),p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=Sv(m|0,l|0,-1,-1)|0;d=L()|0;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;Tv(k|0,d|0,e|0,n|0)|0;p=L()|0;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=Tv(e|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=L()|0;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f|0){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (K(o|0),p)|0}function Wv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=Tv(j^a|0,i^b|0,j|0,i|0)|0;g=L()|0;a=f^j;b=e^i;return Tv((Vv(h,g,Tv(f^c|0,e^d|0,f|0,e|0)|0,L()|0,0)|0)^a|0,(L()|0)^b|0,a|0,b|0)|0}function Xv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=G(e,f)|0;d=a>>>16;a=(c>>>16)+(G(e,d)|0)|0;e=b>>>16;b=G(e,f)|0;return (K((a>>>16)+(G(e,d)|0)+(((a&65535)+b|0)>>>16)|0),a+b<<16|c&65535|0)|0}function Yv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=Xv(e,f)|0;a=L()|0;return (K((G(b,f)|0)+(G(d,e)|0)+a|a&0|0),c|0|0)|0}function Zv(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=Ra;Ra=Ra+16|0;i=f|0;h=b>>31|((b|0)<0?-1:0)<<1;g=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;k=e>>31|((e|0)<0?-1:0)<<1;j=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;a=Tv(h^a|0,g^b|0,h|0,g|0)|0;b=L()|0;Vv(a,b,Tv(k^d|0,j^e|0,k|0,j|0)|0,L()|0,i)|0;e=Tv(c[i>>2]^h|0,c[i+4>>2]^g|0,h|0,g|0)|0;d=L()|0;Ra=f;return (K(d|0),e)|0}function _v(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Vv(a,b,c,d,0)|0}function $v(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=Ra;Ra=Ra+16|0;f=g|0;Vv(a,b,d,e,f)|0;Ra=g;return (K(c[f+4>>2]|0),c[f>>2]|0)|0}function aw(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){K(b>>c|0);return a>>>c|(b&(1<>c-32|0}function bw(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){K(b>>>c|0);return a>>>c|(b&(1<>>c-32|0}function cw(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){K(b<>>32-c|0);return a<>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function ew(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192){Aa(b|0,d|0,e|0)|0;return b|0}h=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return h|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((b|0)<=(f|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)<(e|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}}else{e=g-4|0;while((b|0)<(e|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 h|0}function fw(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 ew(b,c,d)|0;return b|0}function gw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0}f=h&-4|0;i=d|d<<8|d<<16|d<<24;g=f-64|0;while((b|0)<=(g|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)<(f|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}return h-e|0}function hw(a){a=a|0;var b=0,d=0;d=c[i>>2]|0;b=d+a|0;if((a|0)>0&(b|0)<(d|0)|(b|0)<0){Pa(b|0)|0;_(12);return -1}if((b|0)>(za()|0)?(Ba(b|0)|0)==0:0){_(12);return -1}c[i>>2]=b;return d|0}function iw(a){a=a|0;return Va[a&127]()|0}function jw(){return M(0)|0}function kw(){return M(1)|0}function lw(){return M(2)|0}function mw(){return M(3)|0}function nw(){return M(4)|0}function ow(){return M(5)|0}function pw(){return M(6)|0}function qw(){return M(7)|0}function rw(){return M(8)|0}function sw(){return M(9)|0}function tw(){return M(10)|0}function uw(){return M(11)|0}function vw(){return M(12)|0}function ww(){return M(13)|0}function xw(){return M(14)|0}function yw(){return M(15)|0}function zw(){return M(16)|0}function Aw(){return M(17)|0}function Bw(){return M(18)|0}function Cw(){return M(19)|0}function Dw(){return M(20)|0}function Ew(){return M(21)|0}function Fw(){return M(22)|0}function Gw(){return M(23)|0}function Hw(){return M(24)|0}function Iw(){return M(25)|0}function Jw(){return M(26)|0}function Kw(){return M(27)|0}function Lw(){return M(28)|0}function Mw(){return M(29)|0}function Nw(){return M(30)|0}function Ow(){return M(31)|0}function Pw(){return M(32)|0}function Qw(){return M(33)|0}function Rw(){return M(34)|0}function Sw(){return M(35)|0}function Tw(){return M(36)|0}function Uw(){return M(37)|0}function Vw(){return M(38)|0}function Ww(){return M(39)|0}function Xw(){return M(40)|0}function Yw(){return M(41)|0}function Zw(){return M(42)|0}function _w(){return M(43)|0}function $w(){return M(44)|0}function ax(){return M(45)|0}function bx(){return M(46)|0}function cx(){return M(47)|0}function dx(){return M(48)|0}function ex(){return M(49)|0}function fx(){return M(50)|0}function gx(){return M(51)|0}function hx(){return M(52)|0}function ix(){return M(53)|0}function jx(){return M(54)|0}function kx(){return M(55)|0}function lx(){return M(56)|0}function mx(){return M(57)|0}function nx(){return M(58)|0}function ox(){return M(59)|0}function px(){return M(60)|0}function qx(){return M(61)|0}function rx(){return M(62)|0}function sx(){return M(63)|0}function tx(a,b){a=a|0;b=b|0;return Wa[a&127](b|0)|0}function ux(a){a=a|0;return N(0,a|0)|0}function vx(a){a=a|0;return N(1,a|0)|0}function wx(a){a=a|0;return N(2,a|0)|0}function xx(a){a=a|0;return N(3,a|0)|0}function yx(a){a=a|0;return N(4,a|0)|0}function zx(a){a=a|0;return N(5,a|0)|0}function Ax(a){a=a|0;return N(6,a|0)|0}function Bx(a){a=a|0;return N(7,a|0)|0}function Cx(a){a=a|0;return N(8,a|0)|0}function Dx(a){a=a|0;return N(9,a|0)|0}function Ex(a){a=a|0;return N(10,a|0)|0}function Fx(a){a=a|0;return N(11,a|0)|0}function Gx(a){a=a|0;return N(12,a|0)|0}function Hx(a){a=a|0;return N(13,a|0)|0}function Ix(a){a=a|0;return N(14,a|0)|0}function Jx(a){a=a|0;return N(15,a|0)|0}function Kx(a){a=a|0;return N(16,a|0)|0}function Lx(a){a=a|0;return N(17,a|0)|0}function Mx(a){a=a|0;return N(18,a|0)|0}function Nx(a){a=a|0;return N(19,a|0)|0}function Ox(a){a=a|0;return N(20,a|0)|0}function Px(a){a=a|0;return N(21,a|0)|0}function Qx(a){a=a|0;return N(22,a|0)|0}function Rx(a){a=a|0;return N(23,a|0)|0}function Sx(a){a=a|0;return N(24,a|0)|0}function Tx(a){a=a|0;return N(25,a|0)|0}function Ux(a){a=a|0;return N(26,a|0)|0}function Vx(a){a=a|0;return N(27,a|0)|0}function Wx(a){a=a|0;return N(28,a|0)|0}function Xx(a){a=a|0;return N(29,a|0)|0}function Yx(a){a=a|0;return N(30,a|0)|0}function Zx(a){a=a|0;return N(31,a|0)|0}function _x(a){a=a|0;return N(32,a|0)|0}function $x(a){a=a|0;return N(33,a|0)|0}function ay(a){a=a|0;return N(34,a|0)|0}function by(a){a=a|0;return N(35,a|0)|0}function cy(a){a=a|0;return N(36,a|0)|0}function dy(a){a=a|0;return N(37,a|0)|0}function ey(a){a=a|0;return N(38,a|0)|0}function fy(a){a=a|0;return N(39,a|0)|0}function gy(a){a=a|0;return N(40,a|0)|0}function hy(a){a=a|0;return N(41,a|0)|0}function iy(a){a=a|0;return N(42,a|0)|0}function jy(a){a=a|0;return N(43,a|0)|0}function ky(a){a=a|0;return N(44,a|0)|0}function ly(a){a=a|0;return N(45,a|0)|0}function my(a){a=a|0;return N(46,a|0)|0}function ny(a){a=a|0;return N(47,a|0)|0}function oy(a){a=a|0;return N(48,a|0)|0}function py(a){a=a|0;return N(49,a|0)|0}function qy(a){a=a|0;return N(50,a|0)|0}function ry(a){a=a|0;return N(51,a|0)|0}function sy(a){a=a|0;return N(52,a|0)|0}function ty(a){a=a|0;return N(53,a|0)|0}function uy(a){a=a|0;return N(54,a|0)|0}function vy(a){a=a|0;return N(55,a|0)|0}function wy(a){a=a|0;return N(56,a|0)|0}function xy(a){a=a|0;return N(57,a|0)|0}function yy(a){a=a|0;return N(58,a|0)|0}function zy(a){a=a|0;return N(59,a|0)|0}function Ay(a){a=a|0;return N(60,a|0)|0}function By(a){a=a|0;return N(61,a|0)|0}function Cy(a){a=a|0;return N(62,a|0)|0}function Dy(a){a=a|0;return N(63,a|0)|0}function Ey(a,b,c){a=a|0;b=b|0;c=c|0;return Xa[a&255](b|0,c|0)|0}function Fy(a,b){a=a|0;b=b|0;return O(0,a|0,b|0)|0}function Gy(a,b){a=a|0;b=b|0;return O(1,a|0,b|0)|0}function Hy(a,b){a=a|0;b=b|0;return O(2,a|0,b|0)|0}function Iy(a,b){a=a|0;b=b|0;return O(3,a|0,b|0)|0}function Jy(a,b){a=a|0;b=b|0;return O(4,a|0,b|0)|0}function Ky(a,b){a=a|0;b=b|0;return O(5,a|0,b|0)|0}function Ly(a,b){a=a|0;b=b|0;return O(6,a|0,b|0)|0}function My(a,b){a=a|0;b=b|0;return O(7,a|0,b|0)|0}function Ny(a,b){a=a|0;b=b|0;return O(8,a|0,b|0)|0}function Oy(a,b){a=a|0;b=b|0;return O(9,a|0,b|0)|0}function Py(a,b){a=a|0;b=b|0;return O(10,a|0,b|0)|0}function Qy(a,b){a=a|0;b=b|0;return O(11,a|0,b|0)|0}function Ry(a,b){a=a|0;b=b|0;return O(12,a|0,b|0)|0}function Sy(a,b){a=a|0;b=b|0;return O(13,a|0,b|0)|0}function Ty(a,b){a=a|0;b=b|0;return O(14,a|0,b|0)|0}function Uy(a,b){a=a|0;b=b|0;return O(15,a|0,b|0)|0}function Vy(a,b){a=a|0;b=b|0;return O(16,a|0,b|0)|0}function Wy(a,b){a=a|0;b=b|0;return O(17,a|0,b|0)|0}function Xy(a,b){a=a|0;b=b|0;return O(18,a|0,b|0)|0}function Yy(a,b){a=a|0;b=b|0;return O(19,a|0,b|0)|0}function Zy(a,b){a=a|0;b=b|0;return O(20,a|0,b|0)|0}function _y(a,b){a=a|0;b=b|0;return O(21,a|0,b|0)|0}function $y(a,b){a=a|0;b=b|0;return O(22,a|0,b|0)|0}function az(a,b){a=a|0;b=b|0;return O(23,a|0,b|0)|0}function bz(a,b){a=a|0;b=b|0;return O(24,a|0,b|0)|0}function cz(a,b){a=a|0;b=b|0;return O(25,a|0,b|0)|0}function dz(a,b){a=a|0;b=b|0;return O(26,a|0,b|0)|0}function ez(a,b){a=a|0;b=b|0;return O(27,a|0,b|0)|0}function fz(a,b){a=a|0;b=b|0;return O(28,a|0,b|0)|0}function gz(a,b){a=a|0;b=b|0;return O(29,a|0,b|0)|0}function hz(a,b){a=a|0;b=b|0;return O(30,a|0,b|0)|0}function iz(a,b){a=a|0;b=b|0;return O(31,a|0,b|0)|0}function jz(a,b){a=a|0;b=b|0;return O(32,a|0,b|0)|0}function kz(a,b){a=a|0;b=b|0;return O(33,a|0,b|0)|0}function lz(a,b){a=a|0;b=b|0;return O(34,a|0,b|0)|0}function mz(a,b){a=a|0;b=b|0;return O(35,a|0,b|0)|0}function nz(a,b){a=a|0;b=b|0;return O(36,a|0,b|0)|0}function oz(a,b){a=a|0;b=b|0;return O(37,a|0,b|0)|0}function pz(a,b){a=a|0;b=b|0;return O(38,a|0,b|0)|0}function qz(a,b){a=a|0;b=b|0;return O(39,a|0,b|0)|0}function rz(a,b){a=a|0;b=b|0;return O(40,a|0,b|0)|0}function sz(a,b){a=a|0;b=b|0;return O(41,a|0,b|0)|0}function tz(a,b){a=a|0;b=b|0;return O(42,a|0,b|0)|0}function uz(a,b){a=a|0;b=b|0;return O(43,a|0,b|0)|0}function vz(a,b){a=a|0;b=b|0;return O(44,a|0,b|0)|0}function wz(a,b){a=a|0;b=b|0;return O(45,a|0,b|0)|0}function xz(a,b){a=a|0;b=b|0;return O(46,a|0,b|0)|0}function yz(a,b){a=a|0;b=b|0;return O(47,a|0,b|0)|0}function zz(a,b){a=a|0;b=b|0;return O(48,a|0,b|0)|0}function Az(a,b){a=a|0;b=b|0;return O(49,a|0,b|0)|0}function Bz(a,b){a=a|0;b=b|0;return O(50,a|0,b|0)|0}function Cz(a,b){a=a|0;b=b|0;return O(51,a|0,b|0)|0}function Dz(a,b){a=a|0;b=b|0;return O(52,a|0,b|0)|0}function Ez(a,b){a=a|0;b=b|0;return O(53,a|0,b|0)|0}function Fz(a,b){a=a|0;b=b|0;return O(54,a|0,b|0)|0}function Gz(a,b){a=a|0;b=b|0;return O(55,a|0,b|0)|0}function Hz(a,b){a=a|0;b=b|0;return O(56,a|0,b|0)|0}function Iz(a,b){a=a|0;b=b|0;return O(57,a|0,b|0)|0}function Jz(a,b){a=a|0;b=b|0;return O(58,a|0,b|0)|0}function Kz(a,b){a=a|0;b=b|0;return O(59,a|0,b|0)|0}function Lz(a,b){a=a|0;b=b|0;return O(60,a|0,b|0)|0}function Mz(a,b){a=a|0;b=b|0;return O(61,a|0,b|0)|0}function Nz(a,b){a=a|0;b=b|0;return O(62,a|0,b|0)|0}function Oz(a,b){a=a|0;b=b|0;return O(63,a|0,b|0)|0}function Pz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ya[a&127](b|0,c|0,d|0)|0}function Qz(a,b,c){a=a|0;b=b|0;c=c|0;return P(0,a|0,b|0,c|0)|0}function Rz(a,b,c){a=a|0;b=b|0;c=c|0;return P(1,a|0,b|0,c|0)|0}function Sz(a,b,c){a=a|0;b=b|0;c=c|0;return P(2,a|0,b|0,c|0)|0}function Tz(a,b,c){a=a|0;b=b|0;c=c|0;return P(3,a|0,b|0,c|0)|0}function Uz(a,b,c){a=a|0;b=b|0;c=c|0;return P(4,a|0,b|0,c|0)|0}function Vz(a,b,c){a=a|0;b=b|0;c=c|0;return P(5,a|0,b|0,c|0)|0}function Wz(a,b,c){a=a|0;b=b|0;c=c|0;return P(6,a|0,b|0,c|0)|0}function Xz(a,b,c){a=a|0;b=b|0;c=c|0;return P(7,a|0,b|0,c|0)|0}function Yz(a,b,c){a=a|0;b=b|0;c=c|0;return P(8,a|0,b|0,c|0)|0}function Zz(a,b,c){a=a|0;b=b|0;c=c|0;return P(9,a|0,b|0,c|0)|0}function _z(a,b,c){a=a|0;b=b|0;c=c|0;return P(10,a|0,b|0,c|0)|0}function $z(a,b,c){a=a|0;b=b|0;c=c|0;return P(11,a|0,b|0,c|0)|0}function aA(a,b,c){a=a|0;b=b|0;c=c|0;return P(12,a|0,b|0,c|0)|0}function bA(a,b,c){a=a|0;b=b|0;c=c|0;return P(13,a|0,b|0,c|0)|0}function cA(a,b,c){a=a|0;b=b|0;c=c|0;return P(14,a|0,b|0,c|0)|0}function dA(a,b,c){a=a|0;b=b|0;c=c|0;return P(15,a|0,b|0,c|0)|0}function eA(a,b,c){a=a|0;b=b|0;c=c|0;return P(16,a|0,b|0,c|0)|0}function fA(a,b,c){a=a|0;b=b|0;c=c|0;return P(17,a|0,b|0,c|0)|0}function gA(a,b,c){a=a|0;b=b|0;c=c|0;return P(18,a|0,b|0,c|0)|0}function hA(a,b,c){a=a|0;b=b|0;c=c|0;return P(19,a|0,b|0,c|0)|0}function iA(a,b,c){a=a|0;b=b|0;c=c|0;return P(20,a|0,b|0,c|0)|0}function jA(a,b,c){a=a|0;b=b|0;c=c|0;return P(21,a|0,b|0,c|0)|0}function kA(a,b,c){a=a|0;b=b|0;c=c|0;return P(22,a|0,b|0,c|0)|0}function lA(a,b,c){a=a|0;b=b|0;c=c|0;return P(23,a|0,b|0,c|0)|0}function mA(a,b,c){a=a|0;b=b|0;c=c|0;return P(24,a|0,b|0,c|0)|0}function nA(a,b,c){a=a|0;b=b|0;c=c|0;return P(25,a|0,b|0,c|0)|0}function oA(a,b,c){a=a|0;b=b|0;c=c|0;return P(26,a|0,b|0,c|0)|0}function pA(a,b,c){a=a|0;b=b|0;c=c|0;return P(27,a|0,b|0,c|0)|0}function qA(a,b,c){a=a|0;b=b|0;c=c|0;return P(28,a|0,b|0,c|0)|0}function rA(a,b,c){a=a|0;b=b|0;c=c|0;return P(29,a|0,b|0,c|0)|0}function sA(a,b,c){a=a|0;b=b|0;c=c|0;return P(30,a|0,b|0,c|0)|0}function tA(a,b,c){a=a|0;b=b|0;c=c|0;return P(31,a|0,b|0,c|0)|0}function uA(a,b,c){a=a|0;b=b|0;c=c|0;return P(32,a|0,b|0,c|0)|0}function vA(a,b,c){a=a|0;b=b|0;c=c|0;return P(33,a|0,b|0,c|0)|0}function wA(a,b,c){a=a|0;b=b|0;c=c|0;return P(34,a|0,b|0,c|0)|0}function xA(a,b,c){a=a|0;b=b|0;c=c|0;return P(35,a|0,b|0,c|0)|0}function yA(a,b,c){a=a|0;b=b|0;c=c|0;return P(36,a|0,b|0,c|0)|0}function zA(a,b,c){a=a|0;b=b|0;c=c|0;return P(37,a|0,b|0,c|0)|0}function AA(a,b,c){a=a|0;b=b|0;c=c|0;return P(38,a|0,b|0,c|0)|0}function BA(a,b,c){a=a|0;b=b|0;c=c|0;return P(39,a|0,b|0,c|0)|0}function CA(a,b,c){a=a|0;b=b|0;c=c|0;return P(40,a|0,b|0,c|0)|0}function DA(a,b,c){a=a|0;b=b|0;c=c|0;return P(41,a|0,b|0,c|0)|0}function EA(a,b,c){a=a|0;b=b|0;c=c|0;return P(42,a|0,b|0,c|0)|0}function FA(a,b,c){a=a|0;b=b|0;c=c|0;return P(43,a|0,b|0,c|0)|0}function GA(a,b,c){a=a|0;b=b|0;c=c|0;return P(44,a|0,b|0,c|0)|0}function HA(a,b,c){a=a|0;b=b|0;c=c|0;return P(45,a|0,b|0,c|0)|0}function IA(a,b,c){a=a|0;b=b|0;c=c|0;return P(46,a|0,b|0,c|0)|0}function JA(a,b,c){a=a|0;b=b|0;c=c|0;return P(47,a|0,b|0,c|0)|0}function KA(a,b,c){a=a|0;b=b|0;c=c|0;return P(48,a|0,b|0,c|0)|0}function LA(a,b,c){a=a|0;b=b|0;c=c|0;return P(49,a|0,b|0,c|0)|0}function MA(a,b,c){a=a|0;b=b|0;c=c|0;return P(50,a|0,b|0,c|0)|0}function NA(a,b,c){a=a|0;b=b|0;c=c|0;return P(51,a|0,b|0,c|0)|0}function OA(a,b,c){a=a|0;b=b|0;c=c|0;return P(52,a|0,b|0,c|0)|0}function PA(a,b,c){a=a|0;b=b|0;c=c|0;return P(53,a|0,b|0,c|0)|0}function QA(a,b,c){a=a|0;b=b|0;c=c|0;return P(54,a|0,b|0,c|0)|0}function RA(a,b,c){a=a|0;b=b|0;c=c|0;return P(55,a|0,b|0,c|0)|0}function SA(a,b,c){a=a|0;b=b|0;c=c|0;return P(56,a|0,b|0,c|0)|0}function TA(a,b,c){a=a|0;b=b|0;c=c|0;return P(57,a|0,b|0,c|0)|0}function UA(a,b,c){a=a|0;b=b|0;c=c|0;return P(58,a|0,b|0,c|0)|0}function VA(a,b,c){a=a|0;b=b|0;c=c|0;return P(59,a|0,b|0,c|0)|0}function WA(a,b,c){a=a|0;b=b|0;c=c|0;return P(60,a|0,b|0,c|0)|0}function XA(a,b,c){a=a|0;b=b|0;c=c|0;return P(61,a|0,b|0,c|0)|0}function YA(a,b,c){a=a|0;b=b|0;c=c|0;return P(62,a|0,b|0,c|0)|0}function ZA(a,b,c){a=a|0;b=b|0;c=c|0;return P(63,a|0,b|0,c|0)|0}function _A(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Za[a&127](b|0,c|0,d|0,e|0)|0}function $A(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(0,a|0,b|0,c|0,d|0)|0}function aB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(1,a|0,b|0,c|0,d|0)|0}function bB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(2,a|0,b|0,c|0,d|0)|0}function cB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(3,a|0,b|0,c|0,d|0)|0}function dB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(4,a|0,b|0,c|0,d|0)|0}function eB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(5,a|0,b|0,c|0,d|0)|0}function fB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(6,a|0,b|0,c|0,d|0)|0}function gB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(7,a|0,b|0,c|0,d|0)|0}function hB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(8,a|0,b|0,c|0,d|0)|0}function iB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(9,a|0,b|0,c|0,d|0)|0}function jB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(10,a|0,b|0,c|0,d|0)|0}function kB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(11,a|0,b|0,c|0,d|0)|0}function lB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(12,a|0,b|0,c|0,d|0)|0}function mB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(13,a|0,b|0,c|0,d|0)|0}function nB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(14,a|0,b|0,c|0,d|0)|0}function oB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(15,a|0,b|0,c|0,d|0)|0}function pB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(16,a|0,b|0,c|0,d|0)|0}function qB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(17,a|0,b|0,c|0,d|0)|0}function rB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(18,a|0,b|0,c|0,d|0)|0}function sB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(19,a|0,b|0,c|0,d|0)|0}function tB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(20,a|0,b|0,c|0,d|0)|0}function uB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(21,a|0,b|0,c|0,d|0)|0}function vB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(22,a|0,b|0,c|0,d|0)|0}function wB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(23,a|0,b|0,c|0,d|0)|0}function xB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(24,a|0,b|0,c|0,d|0)|0}function yB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(25,a|0,b|0,c|0,d|0)|0}function zB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(26,a|0,b|0,c|0,d|0)|0}function AB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(27,a|0,b|0,c|0,d|0)|0}function BB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(28,a|0,b|0,c|0,d|0)|0}function CB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(29,a|0,b|0,c|0,d|0)|0}function DB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(30,a|0,b|0,c|0,d|0)|0}function EB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(31,a|0,b|0,c|0,d|0)|0}function FB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(32,a|0,b|0,c|0,d|0)|0}function GB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(33,a|0,b|0,c|0,d|0)|0}function HB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(34,a|0,b|0,c|0,d|0)|0}function IB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(35,a|0,b|0,c|0,d|0)|0}function JB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(36,a|0,b|0,c|0,d|0)|0}function KB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(37,a|0,b|0,c|0,d|0)|0}function LB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(38,a|0,b|0,c|0,d|0)|0}function MB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(39,a|0,b|0,c|0,d|0)|0}function NB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(40,a|0,b|0,c|0,d|0)|0}function OB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(41,a|0,b|0,c|0,d|0)|0}function PB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(42,a|0,b|0,c|0,d|0)|0}function QB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(43,a|0,b|0,c|0,d|0)|0}function RB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(44,a|0,b|0,c|0,d|0)|0}function SB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(45,a|0,b|0,c|0,d|0)|0}function TB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(46,a|0,b|0,c|0,d|0)|0}function UB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(47,a|0,b|0,c|0,d|0)|0}function VB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(48,a|0,b|0,c|0,d|0)|0}function WB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(49,a|0,b|0,c|0,d|0)|0}function XB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(50,a|0,b|0,c|0,d|0)|0}function YB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(51,a|0,b|0,c|0,d|0)|0}function ZB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(52,a|0,b|0,c|0,d|0)|0}function _B(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(53,a|0,b|0,c|0,d|0)|0}function $B(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(54,a|0,b|0,c|0,d|0)|0}function aC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(55,a|0,b|0,c|0,d|0)|0}function bC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(56,a|0,b|0,c|0,d|0)|0}function cC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(57,a|0,b|0,c|0,d|0)|0}function dC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(58,a|0,b|0,c|0,d|0)|0}function eC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(59,a|0,b|0,c|0,d|0)|0}function fC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(60,a|0,b|0,c|0,d|0)|0}function gC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(61,a|0,b|0,c|0,d|0)|0}function hC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(62,a|0,b|0,c|0,d|0)|0}function iC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(63,a|0,b|0,c|0,d|0)|0}function jC(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 _a[a&127](b|0,c|0,d|0,e|0,f|0)|0}function kC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(0,a|0,b|0,c|0,d|0,e|0)|0}function lC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(1,a|0,b|0,c|0,d|0,e|0)|0}function mC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(2,a|0,b|0,c|0,d|0,e|0)|0}function nC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(3,a|0,b|0,c|0,d|0,e|0)|0}function oC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(4,a|0,b|0,c|0,d|0,e|0)|0}function pC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(5,a|0,b|0,c|0,d|0,e|0)|0}function qC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(6,a|0,b|0,c|0,d|0,e|0)|0}function rC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(7,a|0,b|0,c|0,d|0,e|0)|0}function sC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(8,a|0,b|0,c|0,d|0,e|0)|0}function tC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(9,a|0,b|0,c|0,d|0,e|0)|0}function uC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(10,a|0,b|0,c|0,d|0,e|0)|0}function vC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(11,a|0,b|0,c|0,d|0,e|0)|0}function wC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(12,a|0,b|0,c|0,d|0,e|0)|0}function xC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(13,a|0,b|0,c|0,d|0,e|0)|0}function yC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(14,a|0,b|0,c|0,d|0,e|0)|0}function zC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(15,a|0,b|0,c|0,d|0,e|0)|0}function AC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(16,a|0,b|0,c|0,d|0,e|0)|0}function BC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(17,a|0,b|0,c|0,d|0,e|0)|0}function CC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(18,a|0,b|0,c|0,d|0,e|0)|0}function DC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(19,a|0,b|0,c|0,d|0,e|0)|0}function EC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(20,a|0,b|0,c|0,d|0,e|0)|0}function FC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(21,a|0,b|0,c|0,d|0,e|0)|0}function GC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(22,a|0,b|0,c|0,d|0,e|0)|0}function HC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(23,a|0,b|0,c|0,d|0,e|0)|0}function IC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(24,a|0,b|0,c|0,d|0,e|0)|0}function JC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(25,a|0,b|0,c|0,d|0,e|0)|0}function KC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(26,a|0,b|0,c|0,d|0,e|0)|0}function LC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(27,a|0,b|0,c|0,d|0,e|0)|0}function MC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(28,a|0,b|0,c|0,d|0,e|0)|0}function NC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(29,a|0,b|0,c|0,d|0,e|0)|0}function OC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(30,a|0,b|0,c|0,d|0,e|0)|0}function PC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(31,a|0,b|0,c|0,d|0,e|0)|0}function QC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(32,a|0,b|0,c|0,d|0,e|0)|0}function RC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(33,a|0,b|0,c|0,d|0,e|0)|0}function SC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(34,a|0,b|0,c|0,d|0,e|0)|0}function TC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(35,a|0,b|0,c|0,d|0,e|0)|0}function UC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(36,a|0,b|0,c|0,d|0,e|0)|0}function VC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(37,a|0,b|0,c|0,d|0,e|0)|0}function WC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(38,a|0,b|0,c|0,d|0,e|0)|0}function XC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(39,a|0,b|0,c|0,d|0,e|0)|0}function YC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(40,a|0,b|0,c|0,d|0,e|0)|0}function ZC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(41,a|0,b|0,c|0,d|0,e|0)|0}function _C(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(42,a|0,b|0,c|0,d|0,e|0)|0}function $C(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(43,a|0,b|0,c|0,d|0,e|0)|0}function aD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(44,a|0,b|0,c|0,d|0,e|0)|0}function bD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(45,a|0,b|0,c|0,d|0,e|0)|0}function cD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(46,a|0,b|0,c|0,d|0,e|0)|0}function dD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(47,a|0,b|0,c|0,d|0,e|0)|0}function eD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(48,a|0,b|0,c|0,d|0,e|0)|0}function fD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(49,a|0,b|0,c|0,d|0,e|0)|0}function gD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(50,a|0,b|0,c|0,d|0,e|0)|0}function hD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(51,a|0,b|0,c|0,d|0,e|0)|0}function iD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(52,a|0,b|0,c|0,d|0,e|0)|0}function jD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(53,a|0,b|0,c|0,d|0,e|0)|0}function kD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(54,a|0,b|0,c|0,d|0,e|0)|0}function lD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(55,a|0,b|0,c|0,d|0,e|0)|0}function mD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(56,a|0,b|0,c|0,d|0,e|0)|0}function nD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(57,a|0,b|0,c|0,d|0,e|0)|0}function oD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(58,a|0,b|0,c|0,d|0,e|0)|0}function pD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(59,a|0,b|0,c|0,d|0,e|0)|0}function qD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(60,a|0,b|0,c|0,d|0,e|0)|0}function rD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(61,a|0,b|0,c|0,d|0,e|0)|0}function sD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(62,a|0,b|0,c|0,d|0,e|0)|0}function tD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(63,a|0,b|0,c|0,d|0,e|0)|0}function uD(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 $a[a&127](b|0,c|0,d|0,e|0,f|0,g|0)|0}function vD(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 S(0,a|0,b|0,c|0,d|0,e|0,f|0)|0}function wD(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 S(1,a|0,b|0,c|0,d|0,e|0,f|0)|0}function xD(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 S(2,a|0,b|0,c|0,d|0,e|0,f|0)|0}function yD(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 S(3,a|0,b|0,c|0,d|0,e|0,f|0)|0}function zD(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 S(4,a|0,b|0,c|0,d|0,e|0,f|0)|0}function AD(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 S(5,a|0,b|0,c|0,d|0,e|0,f|0)|0}function BD(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 S(6,a|0,b|0,c|0,d|0,e|0,f|0)|0}function CD(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 S(7,a|0,b|0,c|0,d|0,e|0,f|0)|0}function DD(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 S(8,a|0,b|0,c|0,d|0,e|0,f|0)|0}function ED(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 S(9,a|0,b|0,c|0,d|0,e|0,f|0)|0}function FD(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 S(10,a|0,b|0,c|0,d|0,e|0,f|0)|0}function GD(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 S(11,a|0,b|0,c|0,d|0,e|0,f|0)|0}function HD(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 S(12,a|0,b|0,c|0,d|0,e|0,f|0)|0}function ID(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 S(13,a|0,b|0,c|0,d|0,e|0,f|0)|0}function JD(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 S(14,a|0,b|0,c|0,d|0,e|0,f|0)|0}function KD(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 S(15,a|0,b|0,c|0,d|0,e|0,f|0)|0}function LD(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 S(16,a|0,b|0,c|0,d|0,e|0,f|0)|0}function MD(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 S(17,a|0,b|0,c|0,d|0,e|0,f|0)|0}function ND(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 S(18,a|0,b|0,c|0,d|0,e|0,f|0)|0}function OD(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 S(19,a|0,b|0,c|0,d|0,e|0,f|0)|0}function PD(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 S(20,a|0,b|0,c|0,d|0,e|0,f|0)|0}function QD(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 S(21,a|0,b|0,c|0,d|0,e|0,f|0)|0}function RD(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 S(22,a|0,b|0,c|0,d|0,e|0,f|0)|0}function SD(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 S(23,a|0,b|0,c|0,d|0,e|0,f|0)|0}function TD(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 S(24,a|0,b|0,c|0,d|0,e|0,f|0)|0}function UD(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 S(25,a|0,b|0,c|0,d|0,e|0,f|0)|0}function VD(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 S(26,a|0,b|0,c|0,d|0,e|0,f|0)|0}function WD(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 S(27,a|0,b|0,c|0,d|0,e|0,f|0)|0}function XD(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 S(28,a|0,b|0,c|0,d|0,e|0,f|0)|0}function YD(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 S(29,a|0,b|0,c|0,d|0,e|0,f|0)|0}function ZD(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 S(30,a|0,b|0,c|0,d|0,e|0,f|0)|0}function _D(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 S(31,a|0,b|0,c|0,d|0,e|0,f|0)|0}function $D(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 S(32,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aE(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 S(33,a|0,b|0,c|0,d|0,e|0,f|0)|0}function bE(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 S(34,a|0,b|0,c|0,d|0,e|0,f|0)|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;return S(35,a|0,b|0,c|0,d|0,e|0,f|0)|0}function dE(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 S(36,a|0,b|0,c|0,d|0,e|0,f|0)|0}function eE(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 S(37,a|0,b|0,c|0,d|0,e|0,f|0)|0}function fE(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 S(38,a|0,b|0,c|0,d|0,e|0,f|0)|0}function gE(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 S(39,a|0,b|0,c|0,d|0,e|0,f|0)|0}function hE(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 S(40,a|0,b|0,c|0,d|0,e|0,f|0)|0}function iE(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 S(41,a|0,b|0,c|0,d|0,e|0,f|0)|0}function jE(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 S(42,a|0,b|0,c|0,d|0,e|0,f|0)|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;return S(43,a|0,b|0,c|0,d|0,e|0,f|0)|0}function lE(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 S(44,a|0,b|0,c|0,d|0,e|0,f|0)|0}function mE(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 S(45,a|0,b|0,c|0,d|0,e|0,f|0)|0}function nE(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 S(46,a|0,b|0,c|0,d|0,e|0,f|0)|0}function oE(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 S(47,a|0,b|0,c|0,d|0,e|0,f|0)|0}function pE(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 S(48,a|0,b|0,c|0,d|0,e|0,f|0)|0}function qE(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 S(49,a|0,b|0,c|0,d|0,e|0,f|0)|0}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;return S(50,a|0,b|0,c|0,d|0,e|0,f|0)|0}function sE(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 S(51,a|0,b|0,c|0,d|0,e|0,f|0)|0}function tE(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 S(52,a|0,b|0,c|0,d|0,e|0,f|0)|0}function uE(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 S(53,a|0,b|0,c|0,d|0,e|0,f|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 S(54,a|0,b|0,c|0,d|0,e|0,f|0)|0}function wE(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 S(55,a|0,b|0,c|0,d|0,e|0,f|0)|0}function xE(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 S(56,a|0,b|0,c|0,d|0,e|0,f|0)|0}function yE(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 S(57,a|0,b|0,c|0,d|0,e|0,f|0)|0}function zE(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 S(58,a|0,b|0,c|0,d|0,e|0,f|0)|0}function AE(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 S(59,a|0,b|0,c|0,d|0,e|0,f|0)|0}function BE(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 S(60,a|0,b|0,c|0,d|0,e|0,f|0)|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;return S(61,a|0,b|0,c|0,d|0,e|0,f|0)|0}function DE(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 S(62,a|0,b|0,c|0,d|0,e|0,f|0)|0}function EE(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 S(63,a|0,b|0,c|0,d|0,e|0,f|0)|0}function FE(a,b){a=a|0;b=b|0;ab[a&127](b|0)}function GE(a){a=a|0;T(0,a|0)}function HE(a){a=a|0;T(1,a|0)}function IE(a){a=a|0;T(2,a|0)}function JE(a){a=a|0;T(3,a|0)}function KE(a){a=a|0;T(4,a|0)}function LE(a){a=a|0;T(5,a|0)}function ME(a){a=a|0;T(6,a|0)}function NE(a){a=a|0;T(7,a|0)}function OE(a){a=a|0;T(8,a|0)}function PE(a){a=a|0;T(9,a|0)}function QE(a){a=a|0;T(10,a|0)}function RE(a){a=a|0;T(11,a|0)}function SE(a){a=a|0;T(12,a|0)}function TE(a){a=a|0;T(13,a|0)}function UE(a){a=a|0;T(14,a|0)}function VE(a){a=a|0;T(15,a|0)}function WE(a){a=a|0;T(16,a|0)}function XE(a){a=a|0;T(17,a|0)}function YE(a){a=a|0;T(18,a|0)}function ZE(a){a=a|0;T(19,a|0)}function _E(a){a=a|0;T(20,a|0)}function $E(a){a=a|0;T(21,a|0)}function aF(a){a=a|0;T(22,a|0)}function bF(a){a=a|0;T(23,a|0)}function cF(a){a=a|0;T(24,a|0)}function dF(a){a=a|0;T(25,a|0)}function eF(a){a=a|0;T(26,a|0)}function fF(a){a=a|0;T(27,a|0)}function gF(a){a=a|0;T(28,a|0)}function hF(a){a=a|0;T(29,a|0)}function iF(a){a=a|0;T(30,a|0)}function jF(a){a=a|0;T(31,a|0)}function kF(a){a=a|0;T(32,a|0)}function lF(a){a=a|0;T(33,a|0)}function mF(a){a=a|0;T(34,a|0)}function nF(a){a=a|0;T(35,a|0)}function oF(a){a=a|0;T(36,a|0)}function pF(a){a=a|0;T(37,a|0)}function qF(a){a=a|0;T(38,a|0)}function rF(a){a=a|0;T(39,a|0)}function sF(a){a=a|0;T(40,a|0)}function tF(a){a=a|0;T(41,a|0)}function uF(a){a=a|0;T(42,a|0)}function vF(a){a=a|0;T(43,a|0)}function wF(a){a=a|0;T(44,a|0)}function xF(a){a=a|0;T(45,a|0)}function yF(a){a=a|0;T(46,a|0)}function zF(a){a=a|0;T(47,a|0)}function AF(a){a=a|0;T(48,a|0)}function BF(a){a=a|0;T(49,a|0)}function CF(a){a=a|0;T(50,a|0)}function DF(a){a=a|0;T(51,a|0)}function EF(a){a=a|0;T(52,a|0)}function FF(a){a=a|0;T(53,a|0)}function GF(a){a=a|0;T(54,a|0)}function HF(a){a=a|0;T(55,a|0)}function IF(a){a=a|0;T(56,a|0)}function JF(a){a=a|0;T(57,a|0)}function KF(a){a=a|0;T(58,a|0)}function LF(a){a=a|0;T(59,a|0)}function MF(a){a=a|0;T(60,a|0)}function NF(a){a=a|0;T(61,a|0)}function OF(a){a=a|0;T(62,a|0)}function PF(a){a=a|0;T(63,a|0)}function QF(a,b,c){a=a|0;b=b|0;c=c|0;bb[a&127](b|0,c|0)}function RF(a,b){a=a|0;b=b|0;U(0,a|0,b|0)}function SF(a,b){a=a|0;b=b|0;U(1,a|0,b|0)}function TF(a,b){a=a|0;b=b|0;U(2,a|0,b|0)}function UF(a,b){a=a|0;b=b|0;U(3,a|0,b|0)}function VF(a,b){a=a|0;b=b|0;U(4,a|0,b|0)}function WF(a,b){a=a|0;b=b|0;U(5,a|0,b|0)}function XF(a,b){a=a|0;b=b|0;U(6,a|0,b|0)}function YF(a,b){a=a|0;b=b|0;U(7,a|0,b|0)}function ZF(a,b){a=a|0;b=b|0;U(8,a|0,b|0)}function _F(a,b){a=a|0;b=b|0;U(9,a|0,b|0)}function $F(a,b){a=a|0;b=b|0;U(10,a|0,b|0)}function aG(a,b){a=a|0;b=b|0;U(11,a|0,b|0)}function bG(a,b){a=a|0;b=b|0;U(12,a|0,b|0)}function cG(a,b){a=a|0;b=b|0;U(13,a|0,b|0)}function dG(a,b){a=a|0;b=b|0;U(14,a|0,b|0)}function eG(a,b){a=a|0;b=b|0;U(15,a|0,b|0)}function fG(a,b){a=a|0;b=b|0;U(16,a|0,b|0)}function gG(a,b){a=a|0;b=b|0;U(17,a|0,b|0)}function hG(a,b){a=a|0;b=b|0;U(18,a|0,b|0)}function iG(a,b){a=a|0;b=b|0;U(19,a|0,b|0)}function jG(a,b){a=a|0;b=b|0;U(20,a|0,b|0)}function kG(a,b){a=a|0;b=b|0;U(21,a|0,b|0)}function lG(a,b){a=a|0;b=b|0;U(22,a|0,b|0)}function mG(a,b){a=a|0;b=b|0;U(23,a|0,b|0)}function nG(a,b){a=a|0;b=b|0;U(24,a|0,b|0)}function oG(a,b){a=a|0;b=b|0;U(25,a|0,b|0)}function pG(a,b){a=a|0;b=b|0;U(26,a|0,b|0)}function qG(a,b){a=a|0;b=b|0;U(27,a|0,b|0)}function rG(a,b){a=a|0;b=b|0;U(28,a|0,b|0)}function sG(a,b){a=a|0;b=b|0;U(29,a|0,b|0)}function tG(a,b){a=a|0;b=b|0;U(30,a|0,b|0)}function uG(a,b){a=a|0;b=b|0;U(31,a|0,b|0)}function vG(a,b){a=a|0;b=b|0;U(32,a|0,b|0)}function wG(a,b){a=a|0;b=b|0;U(33,a|0,b|0)}function xG(a,b){a=a|0;b=b|0;U(34,a|0,b|0)}function yG(a,b){a=a|0;b=b|0;U(35,a|0,b|0)}function zG(a,b){a=a|0;b=b|0;U(36,a|0,b|0)}function AG(a,b){a=a|0;b=b|0;U(37,a|0,b|0)}function BG(a,b){a=a|0;b=b|0;U(38,a|0,b|0)}function CG(a,b){a=a|0;b=b|0;U(39,a|0,b|0)}function DG(a,b){a=a|0;b=b|0;U(40,a|0,b|0)}function EG(a,b){a=a|0;b=b|0;U(41,a|0,b|0)}function FG(a,b){a=a|0;b=b|0;U(42,a|0,b|0)}function GG(a,b){a=a|0;b=b|0;U(43,a|0,b|0)}function HG(a,b){a=a|0;b=b|0;U(44,a|0,b|0)}function IG(a,b){a=a|0;b=b|0;U(45,a|0,b|0)}function JG(a,b){a=a|0;b=b|0;U(46,a|0,b|0)}function KG(a,b){a=a|0;b=b|0;U(47,a|0,b|0)}function LG(a,b){a=a|0;b=b|0;U(48,a|0,b|0)}function MG(a,b){a=a|0;b=b|0;U(49,a|0,b|0)}function NG(a,b){a=a|0;b=b|0;U(50,a|0,b|0)}function OG(a,b){a=a|0;b=b|0;U(51,a|0,b|0)}function PG(a,b){a=a|0;b=b|0;U(52,a|0,b|0)}function QG(a,b){a=a|0;b=b|0;U(53,a|0,b|0)}function RG(a,b){a=a|0;b=b|0;U(54,a|0,b|0)}function SG(a,b){a=a|0;b=b|0;U(55,a|0,b|0)}function TG(a,b){a=a|0;b=b|0;U(56,a|0,b|0)}function UG(a,b){a=a|0;b=b|0;U(57,a|0,b|0)}function VG(a,b){a=a|0;b=b|0;U(58,a|0,b|0)}function WG(a,b){a=a|0;b=b|0;U(59,a|0,b|0)}function XG(a,b){a=a|0;b=b|0;U(60,a|0,b|0)}function YG(a,b){a=a|0;b=b|0;U(61,a|0,b|0)}function ZG(a,b){a=a|0;b=b|0;U(62,a|0,b|0)}function _G(a,b){a=a|0;b=b|0;U(63,a|0,b|0)}function $G(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;cb[a&255](b|0,c|0,d|0)}function aH(a,b,c){a=a|0;b=b|0;c=c|0;V(0,a|0,b|0,c|0)}function bH(a,b,c){a=a|0;b=b|0;c=c|0;V(1,a|0,b|0,c|0)}function cH(a,b,c){a=a|0;b=b|0;c=c|0;V(2,a|0,b|0,c|0)}function dH(a,b,c){a=a|0;b=b|0;c=c|0;V(3,a|0,b|0,c|0)}function eH(a,b,c){a=a|0;b=b|0;c=c|0;V(4,a|0,b|0,c|0)}function fH(a,b,c){a=a|0;b=b|0;c=c|0;V(5,a|0,b|0,c|0)}function gH(a,b,c){a=a|0;b=b|0;c=c|0;V(6,a|0,b|0,c|0)}function hH(a,b,c){a=a|0;b=b|0;c=c|0;V(7,a|0,b|0,c|0)}function iH(a,b,c){a=a|0;b=b|0;c=c|0;V(8,a|0,b|0,c|0)}function jH(a,b,c){a=a|0;b=b|0;c=c|0;V(9,a|0,b|0,c|0)}function kH(a,b,c){a=a|0;b=b|0;c=c|0;V(10,a|0,b|0,c|0)}function lH(a,b,c){a=a|0;b=b|0;c=c|0;V(11,a|0,b|0,c|0)}function mH(a,b,c){a=a|0;b=b|0;c=c|0;V(12,a|0,b|0,c|0)}function nH(a,b,c){a=a|0;b=b|0;c=c|0;V(13,a|0,b|0,c|0)}function oH(a,b,c){a=a|0;b=b|0;c=c|0;V(14,a|0,b|0,c|0)}function pH(a,b,c){a=a|0;b=b|0;c=c|0;V(15,a|0,b|0,c|0)}function qH(a,b,c){a=a|0;b=b|0;c=c|0;V(16,a|0,b|0,c|0)}function rH(a,b,c){a=a|0;b=b|0;c=c|0;V(17,a|0,b|0,c|0)}function sH(a,b,c){a=a|0;b=b|0;c=c|0;V(18,a|0,b|0,c|0)}function tH(a,b,c){a=a|0;b=b|0;c=c|0;V(19,a|0,b|0,c|0)}function uH(a,b,c){a=a|0;b=b|0;c=c|0;V(20,a|0,b|0,c|0)}function vH(a,b,c){a=a|0;b=b|0;c=c|0;V(21,a|0,b|0,c|0)}function wH(a,b,c){a=a|0;b=b|0;c=c|0;V(22,a|0,b|0,c|0)}function xH(a,b,c){a=a|0;b=b|0;c=c|0;V(23,a|0,b|0,c|0)}function yH(a,b,c){a=a|0;b=b|0;c=c|0;V(24,a|0,b|0,c|0)}function zH(a,b,c){a=a|0;b=b|0;c=c|0;V(25,a|0,b|0,c|0)}function AH(a,b,c){a=a|0;b=b|0;c=c|0;V(26,a|0,b|0,c|0)}function BH(a,b,c){a=a|0;b=b|0;c=c|0;V(27,a|0,b|0,c|0)}function CH(a,b,c){a=a|0;b=b|0;c=c|0;V(28,a|0,b|0,c|0)}function DH(a,b,c){a=a|0;b=b|0;c=c|0;V(29,a|0,b|0,c|0)}function EH(a,b,c){a=a|0;b=b|0;c=c|0;V(30,a|0,b|0,c|0)}function FH(a,b,c){a=a|0;b=b|0;c=c|0;V(31,a|0,b|0,c|0)}function GH(a,b,c){a=a|0;b=b|0;c=c|0;V(32,a|0,b|0,c|0)}function HH(a,b,c){a=a|0;b=b|0;c=c|0;V(33,a|0,b|0,c|0)}function IH(a,b,c){a=a|0;b=b|0;c=c|0;V(34,a|0,b|0,c|0)}function JH(a,b,c){a=a|0;b=b|0;c=c|0;V(35,a|0,b|0,c|0)}function KH(a,b,c){a=a|0;b=b|0;c=c|0;V(36,a|0,b|0,c|0)}function LH(a,b,c){a=a|0;b=b|0;c=c|0;V(37,a|0,b|0,c|0)}function MH(a,b,c){a=a|0;b=b|0;c=c|0;V(38,a|0,b|0,c|0)}function NH(a,b,c){a=a|0;b=b|0;c=c|0;V(39,a|0,b|0,c|0)}function OH(a,b,c){a=a|0;b=b|0;c=c|0;V(40,a|0,b|0,c|0)}function PH(a,b,c){a=a|0;b=b|0;c=c|0;V(41,a|0,b|0,c|0)}function QH(a,b,c){a=a|0;b=b|0;c=c|0;V(42,a|0,b|0,c|0)}function RH(a,b,c){a=a|0;b=b|0;c=c|0;V(43,a|0,b|0,c|0)}function SH(a,b,c){a=a|0;b=b|0;c=c|0;V(44,a|0,b|0,c|0)}function TH(a,b,c){a=a|0;b=b|0;c=c|0;V(45,a|0,b|0,c|0)}function UH(a,b,c){a=a|0;b=b|0;c=c|0;V(46,a|0,b|0,c|0)}function VH(a,b,c){a=a|0;b=b|0;c=c|0;V(47,a|0,b|0,c|0)}function WH(a,b,c){a=a|0;b=b|0;c=c|0;V(48,a|0,b|0,c|0)}function XH(a,b,c){a=a|0;b=b|0;c=c|0;V(49,a|0,b|0,c|0)}function YH(a,b,c){a=a|0;b=b|0;c=c|0;V(50,a|0,b|0,c|0)}function ZH(a,b,c){a=a|0;b=b|0;c=c|0;V(51,a|0,b|0,c|0)}function _H(a,b,c){a=a|0;b=b|0;c=c|0;V(52,a|0,b|0,c|0)}function $H(a,b,c){a=a|0;b=b|0;c=c|0;V(53,a|0,b|0,c|0)}function aI(a,b,c){a=a|0;b=b|0;c=c|0;V(54,a|0,b|0,c|0)}function bI(a,b,c){a=a|0;b=b|0;c=c|0;V(55,a|0,b|0,c|0)}function cI(a,b,c){a=a|0;b=b|0;c=c|0;V(56,a|0,b|0,c|0)}function dI(a,b,c){a=a|0;b=b|0;c=c|0;V(57,a|0,b|0,c|0)}function eI(a,b,c){a=a|0;b=b|0;c=c|0;V(58,a|0,b|0,c|0)}function fI(a,b,c){a=a|0;b=b|0;c=c|0;V(59,a|0,b|0,c|0)}function gI(a,b,c){a=a|0;b=b|0;c=c|0;V(60,a|0,b|0,c|0)}function hI(a,b,c){a=a|0;b=b|0;c=c|0;V(61,a|0,b|0,c|0)}function iI(a,b,c){a=a|0;b=b|0;c=c|0;V(62,a|0,b|0,c|0)}function jI(a,b,c){a=a|0;b=b|0;c=c|0;V(63,a|0,b|0,c|0)}function kI(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;db[a&127](b|0,c|0,d|0,e|0)}function lI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(0,a|0,b|0,c|0,d|0)}function mI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(1,a|0,b|0,c|0,d|0)}function nI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(2,a|0,b|0,c|0,d|0)}function oI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(3,a|0,b|0,c|0,d|0)}function pI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(4,a|0,b|0,c|0,d|0)}function qI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(5,a|0,b|0,c|0,d|0)}function rI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(6,a|0,b|0,c|0,d|0)}function sI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(7,a|0,b|0,c|0,d|0)}function tI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(8,a|0,b|0,c|0,d|0)}function uI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(9,a|0,b|0,c|0,d|0)}function vI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(10,a|0,b|0,c|0,d|0)}function wI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(11,a|0,b|0,c|0,d|0)}function xI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(12,a|0,b|0,c|0,d|0)}function yI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(13,a|0,b|0,c|0,d|0)}function zI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(14,a|0,b|0,c|0,d|0)}function AI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(15,a|0,b|0,c|0,d|0)}function BI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(16,a|0,b|0,c|0,d|0)}function CI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(17,a|0,b|0,c|0,d|0)}function DI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(18,a|0,b|0,c|0,d|0)}function EI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(19,a|0,b|0,c|0,d|0)}function FI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(20,a|0,b|0,c|0,d|0)}function GI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(21,a|0,b|0,c|0,d|0)}function HI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(22,a|0,b|0,c|0,d|0)}function II(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(23,a|0,b|0,c|0,d|0)}function JI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(24,a|0,b|0,c|0,d|0)}function KI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(25,a|0,b|0,c|0,d|0)}function LI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(26,a|0,b|0,c|0,d|0)}function MI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(27,a|0,b|0,c|0,d|0)}function NI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(28,a|0,b|0,c|0,d|0)}function OI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(29,a|0,b|0,c|0,d|0)}function PI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(30,a|0,b|0,c|0,d|0)}function QI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(31,a|0,b|0,c|0,d|0)}function RI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(32,a|0,b|0,c|0,d|0)}function SI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(33,a|0,b|0,c|0,d|0)}function TI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(34,a|0,b|0,c|0,d|0)}function UI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(35,a|0,b|0,c|0,d|0)}function VI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(36,a|0,b|0,c|0,d|0)}function WI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(37,a|0,b|0,c|0,d|0)}function XI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(38,a|0,b|0,c|0,d|0)}function YI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(39,a|0,b|0,c|0,d|0)}function ZI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(40,a|0,b|0,c|0,d|0)}function _I(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(41,a|0,b|0,c|0,d|0)}function $I(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(42,a|0,b|0,c|0,d|0)}function aJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(43,a|0,b|0,c|0,d|0)}function bJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(44,a|0,b|0,c|0,d|0)}function cJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(45,a|0,b|0,c|0,d|0)}function dJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(46,a|0,b|0,c|0,d|0)}function eJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(47,a|0,b|0,c|0,d|0)}function fJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(48,a|0,b|0,c|0,d|0)}function gJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(49,a|0,b|0,c|0,d|0)}function hJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(50,a|0,b|0,c|0,d|0)}function iJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(51,a|0,b|0,c|0,d|0)}function jJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(52,a|0,b|0,c|0,d|0)}function kJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(53,a|0,b|0,c|0,d|0)}function lJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(54,a|0,b|0,c|0,d|0)}function mJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(55,a|0,b|0,c|0,d|0)}function nJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(56,a|0,b|0,c|0,d|0)}function oJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(57,a|0,b|0,c|0,d|0)}function pJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(58,a|0,b|0,c|0,d|0)}function qJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(59,a|0,b|0,c|0,d|0)}function rJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(60,a|0,b|0,c|0,d|0)}function sJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(61,a|0,b|0,c|0,d|0)}function tJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(62,a|0,b|0,c|0,d|0)}function uJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(63,a|0,b|0,c|0,d|0)}function vJ(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;eb[a&127](b|0,c|0,d|0,e|0,f|0,g|0)}function wJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(0,a|0,b|0,c|0,d|0,e|0,f|0)}function xJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(1,a|0,b|0,c|0,d|0,e|0,f|0)}function yJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(2,a|0,b|0,c|0,d|0,e|0,f|0)}function zJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(3,a|0,b|0,c|0,d|0,e|0,f|0)}function AJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(4,a|0,b|0,c|0,d|0,e|0,f|0)}function BJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(5,a|0,b|0,c|0,d|0,e|0,f|0)}function CJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(6,a|0,b|0,c|0,d|0,e|0,f|0)}function DJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(7,a|0,b|0,c|0,d|0,e|0,f|0)}function EJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(8,a|0,b|0,c|0,d|0,e|0,f|0)}function FJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(9,a|0,b|0,c|0,d|0,e|0,f|0)}function GJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(10,a|0,b|0,c|0,d|0,e|0,f|0)}function HJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(11,a|0,b|0,c|0,d|0,e|0,f|0)}function IJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(12,a|0,b|0,c|0,d|0,e|0,f|0)}function JJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(13,a|0,b|0,c|0,d|0,e|0,f|0)}function KJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(14,a|0,b|0,c|0,d|0,e|0,f|0)}function LJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(15,a|0,b|0,c|0,d|0,e|0,f|0)}function MJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(16,a|0,b|0,c|0,d|0,e|0,f|0)}function NJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(17,a|0,b|0,c|0,d|0,e|0,f|0)}function OJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(18,a|0,b|0,c|0,d|0,e|0,f|0)}function PJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(19,a|0,b|0,c|0,d|0,e|0,f|0)}function QJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(20,a|0,b|0,c|0,d|0,e|0,f|0)}function RJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(21,a|0,b|0,c|0,d|0,e|0,f|0)}function SJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(22,a|0,b|0,c|0,d|0,e|0,f|0)}function TJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(23,a|0,b|0,c|0,d|0,e|0,f|0)}function UJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(24,a|0,b|0,c|0,d|0,e|0,f|0)}function VJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(25,a|0,b|0,c|0,d|0,e|0,f|0)}function WJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(26,a|0,b|0,c|0,d|0,e|0,f|0)}function XJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(27,a|0,b|0,c|0,d|0,e|0,f|0)}function YJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(28,a|0,b|0,c|0,d|0,e|0,f|0)}function ZJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(29,a|0,b|0,c|0,d|0,e|0,f|0)}function _J(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(30,a|0,b|0,c|0,d|0,e|0,f|0)}function $J(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(31,a|0,b|0,c|0,d|0,e|0,f|0)}function aK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(32,a|0,b|0,c|0,d|0,e|0,f|0)}function bK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(33,a|0,b|0,c|0,d|0,e|0,f|0)}function cK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(34,a|0,b|0,c|0,d|0,e|0,f|0)}function dK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(35,a|0,b|0,c|0,d|0,e|0,f|0)}function eK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(36,a|0,b|0,c|0,d|0,e|0,f|0)}function fK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(37,a|0,b|0,c|0,d|0,e|0,f|0)}function gK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(38,a|0,b|0,c|0,d|0,e|0,f|0)}function hK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(39,a|0,b|0,c|0,d|0,e|0,f|0)}function iK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(40,a|0,b|0,c|0,d|0,e|0,f|0)}function jK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(41,a|0,b|0,c|0,d|0,e|0,f|0)}function kK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(42,a|0,b|0,c|0,d|0,e|0,f|0)}function lK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(43,a|0,b|0,c|0,d|0,e|0,f|0)}function mK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(44,a|0,b|0,c|0,d|0,e|0,f|0)}function nK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(45,a|0,b|0,c|0,d|0,e|0,f|0)}function oK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(46,a|0,b|0,c|0,d|0,e|0,f|0)}function pK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(47,a|0,b|0,c|0,d|0,e|0,f|0)}function qK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(48,a|0,b|0,c|0,d|0,e|0,f|0)}function rK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(49,a|0,b|0,c|0,d|0,e|0,f|0)}function sK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(50,a|0,b|0,c|0,d|0,e|0,f|0)}function tK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(51,a|0,b|0,c|0,d|0,e|0,f|0)}function uK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(52,a|0,b|0,c|0,d|0,e|0,f|0)}function vK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(53,a|0,b|0,c|0,d|0,e|0,f|0)}function wK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(54,a|0,b|0,c|0,d|0,e|0,f|0)}function xK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(55,a|0,b|0,c|0,d|0,e|0,f|0)}function yK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(56,a|0,b|0,c|0,d|0,e|0,f|0)}function zK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(57,a|0,b|0,c|0,d|0,e|0,f|0)}function AK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(58,a|0,b|0,c|0,d|0,e|0,f|0)}function BK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(59,a|0,b|0,c|0,d|0,e|0,f|0)}function CK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(60,a|0,b|0,c|0,d|0,e|0,f|0)}function DK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(61,a|0,b|0,c|0,d|0,e|0,f|0)}function EK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(62,a|0,b|0,c|0,d|0,e|0,f|0)}function FK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(63,a|0,b|0,c|0,d|0,e|0,f|0)}function GK(){J(0);return 0}function HK(a){a=a|0;J(1);return 0}function IK(a,b){a=a|0;b=b|0;J(2);return 0}function JK(a,b,c){a=a|0;b=b|0;c=c|0;J(3);return 0}function KK(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;J(4);return 0}function LK(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;J(5);return 0}function MK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;J(6);return 0}function NK(a){a=a|0;J(7)}function OK(a,b){a=a|0;b=b|0;J(8)}function PK(a,b,c){a=a|0;b=b|0;c=c|0;J(9)}function QK(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;J(10)}function RK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;J(11)} -function aj(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;do switch(b<<16>>16){case 240:case 228:case 227:case 195:{b=c[d>>2]|0;if(!b)return;pi(c[a>>2]|0,b,1);return}case 294:case 280:case 275:case 268:case 265:case 263:case 248:case 236:case 234:case 206:case 205:{b=c[d>>2]|0;if(!b)return;ni(c[a>>2]|0,b);return}case 293:case 264:case 262:case 254:case 250:case 242:case 241:case 237:case 235:case 232:case 220:case 219:case 210:{b=c[d>>2]|0;if(!b)return;ri(c[a>>2]|0,b);return}case 251:case 245:case 244:case 233:case 226:{qi(c[a>>2]|0,c[d>>2]|0);return}case 229:{i=c[a>>2]|0;h=c[d>>2]|0;if(!h)return;a:do if((c[h>>2]|0)>0){d=i+480|0;e=i+304|0;f=i+308|0;g=i+300|0;if(!i){a=0;while(1){b=c[h+8+(a<<4)+4>>2]|0;if(b|0)ri(0,b);b=c[h+8+(a<<4)+8>>2]|0;if(b|0)pi(0,b,1);b=c[h+8+(a<<4)>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{j=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);a=a+1|0;if((a|0)>=(c[h>>2]|0))break a}}a=0;do{b=c[h+8+(a<<4)+4>>2]|0;if(b|0)ri(i,b);b=c[h+8+(a<<4)+8>>2]|0;if(b|0)pi(i,b,1);b=c[h+8+(a<<4)>>2]|0;do if(b|0){if(c[d>>2]|0){Xd(i,b);break}j=b;if((c[e>>2]|0)>>>0<=j>>>0?(c[f>>2]|0)>>>0>j>>>0:0){c[b>>2]=c[g>>2];c[g>>2]=b;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{j=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}}while(0);a=a+1|0}while((a|0)<(c[h>>2]|0))}while(0);if(i|0){if(c[i+480>>2]|0){Xd(i,h);return}j=h;if((c[i+304>>2]|0)>>>0<=j>>>0?(c[i+308>>2]|0)>>>0>j>>>0:0){j=i+300|0;c[h>>2]=c[j>>2];c[j>>2]=h;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);return}else{j=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);return}}case 289:case 239:{a=c[a>>2]|0;b=c[d>>2]|0;if(!b)return;do{j=b;b=c[b+32>>2]|0;oi(a,j)}while((b|0)!=0);return}case 256:case 252:case 249:{j=c[a>>2]|0;b=c[d>>2]|0;if(!b)return;i=b+4|0;a=c[b>>2]|0;b:do if((c[i>>2]|0)>0){e=j+480|0;f=j+304|0;g=j+308|0;h=j+300|0;if(!j){d=0;while(1){a=c[a+(d<<3)>>2]|0;do if(a|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](a);break}else{h=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);break}while(0);d=d+1|0;a=c[b>>2]|0;if((d|0)>=(c[i>>2]|0))break b}}d=0;do{a=c[a+(d<<3)>>2]|0;do if(a|0){if(c[e>>2]|0){Xd(j,a);break}k=a;if((c[f>>2]|0)>>>0<=k>>>0?(c[g>>2]|0)>>>0>k>>>0:0){c[a>>2]=c[h>>2];c[h>>2]=a;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](a);break}else{k=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);break}}while(0);d=d+1|0;a=c[b>>2]|0}while((d|0)<(c[i>>2]|0))}while(0);c:do if(a){do if(j|0){d=j+480|0;if(!(c[d>>2]|0)){e=a;if((c[j+304>>2]|0)>>>0>e>>>0)break;if((c[j+308>>2]|0)>>>0<=e>>>0)break;k=j+300|0;c[a>>2]=c[k>>2];c[k>>2]=a}else Xd(j,a);a=d;d=82;break c}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](a);d=80;break}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);d=80;break}}else d=80;while(0);if((d|0)==80)if(j){a=j+480|0;d=82}if((d|0)==82){if(c[a>>2]|0){Xd(j,b);return}k=b;if((c[j+304>>2]|0)>>>0<=k>>>0?(c[j+308>>2]|0)>>>0>k>>>0:0){k=j+300|0;c[b>>2]=c[k>>2];c[k>>2]=b;return}}if(!b)return;if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{k=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}}case 292:case 291:case 290:case 258:{oi(c[a>>2]|0,c[d>>2]|0);return}case 276:case 271:{Xi(c[a>>2]|0,c[d>>2]|0);return}case 273:{j=c[a>>2]|0;b=c[d+4>>2]|0;if(!b)return;i=b+4|0;a=c[b>>2]|0;d:do if((c[i>>2]|0)>0){e=j+480|0;f=j+304|0;g=j+308|0;h=j+300|0;if(!j){d=0;while(1){a=c[a+(d<<3)>>2]|0;do if(a|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](a);break}else{k=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);break}while(0);d=d+1|0;a=c[b>>2]|0;if((d|0)>=(c[i>>2]|0))break d}}d=0;do{a=c[a+(d<<3)>>2]|0;do if(a|0){if(c[e>>2]|0){Xd(j,a);break}k=a;if((c[f>>2]|0)>>>0<=k>>>0?(c[g>>2]|0)>>>0>k>>>0:0){c[a>>2]=c[h>>2];c[h>>2]=a;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](a);break}else{k=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);break}}while(0);d=d+1|0;a=c[b>>2]|0}while((d|0)<(c[i>>2]|0))}while(0);e:do if(a){do if(j|0){d=j+480|0;if(!(c[d>>2]|0)){e=a;if((c[j+304>>2]|0)>>>0>e>>>0)break;if((c[j+308>>2]|0)>>>0<=e>>>0)break;k=j+300|0;c[a>>2]=c[k>>2];c[k>>2]=a}else Xd(j,a);a=d;d=126;break e}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](a);d=124;break}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);d=124;break}}else d=124;while(0);if((d|0)==124)if(j){a=j+480|0;d=126}if((d|0)==126){if(c[a>>2]|0){Xd(j,b);return}k=b;if((c[j+304>>2]|0)>>>0<=k>>>0?(c[j+308>>2]|0)>>>0>k>>>0:0){k=j+300|0;c[b>>2]=c[k>>2];c[k>>2]=b;return}}if(!b)return;if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{k=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}}case 298:case 297:case 296:{b=c[d+4>>2]|0;if(!b)return;ni(c[a>>2]|0,b);return}default:return}while(0)}function bj(f,g,h,i,j,k,l){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|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,M=0,N=0,O=0,P=0,Q=0;Q=Ra;Ra=Ra+96|0;J=Q+80|0;D=Q+72|0;G=Q+64|0;C=Q+56|0;z=Q+48|0;A=Q+40|0;v=Q+32|0;u=Q+24|0;s=Q+16|0;q=Q+8|0;p=Q;K=Q+84|0;P=c[f>>2]|0;H=P+165|0;n=(a[H>>0]|0)==0;do if(!n?(c[P+160>>2]|0)==1:0){h=a[P+164>>0]|0;q=h&255;h=h<<24>>24==1;p=h?34855:34585;h=h?19:14;a:do if(c[P+272>>2]|0){if(!(a[P+81>>0]|0))O=13}else{do if(!(0<0|(0==0?(e[P+276>>1]|0)>>>0>>0:0))){n=P+300|0;o=c[n>>2]|0;if(o|0){c[n>>2]=c[o>>2];O=P+284|0;c[O>>2]=(c[O>>2]|0)+1;O=14;break a}n=P+296|0;o=c[n>>2]|0;if(!o){n=P+292|0;break}else{c[n>>2]=c[o>>2];O=P+284|0;c[O>>2]=(c[O>>2]|0)+1;O=14;break a}}else n=P+288|0;while(0);c[n>>2]=(c[n>>2]|0)+1;O=13}while(0);if((O|0)==13){o=_d(P,h,0)|0;O=14}if((O|0)==14?o|0:0){ew(o|0,p|0,h|0)|0;F=g;M=c[F+4>>2]|0;E=f+180|0;c[E>>2]=c[F>>2];c[E+4>>2]=M;E=o;M=q;break}O=g;P=c[O+4>>2]|0;f=f+180|0;c[f>>2]=c[O>>2];c[f+4>>2]=P;Ra=Q;return}else O=16;while(0);if((O|0)==16){r=h+4|0;if(c[r>>2]|0){if(!n){cd(f,39404,p);Ra=Q;return}n=wk(P,g)|0;if((n|0)<0){c[q>>2]=g;cd(f,39421,q);Ra=Q;return}}else{h=g;n=d[P+164>>0]|0}o=(i|0)!=0;if(o?(n|0)!=1&(c[r>>2]|0)!=0:0){cd(f,39278,s);Ra=Q;return}r=o?1:n;q=qj(P,h)|0;b:do if((d[f+200>>0]|0)>1){p=c[f>>2]|0;c:do if(!p){if(!(c[7324]|0)){n=Wa[c[29340>>2]&127](16)|0;O=49;break}n=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;p=59064;o=c[p>>2]|0;p=c[p+4>>2]|0;if((p|0)>0|(p|0)==0&o>>>0>0){M=c[14978]|0;F=Tv(o|0,p|0,n|0,((n|0)<0)<<31>>31|0)|0;E=L()|0;c[14768]=((E|0)<0|(E|0)==0&F>>>0<=M>>>0)&1}n=Wa[c[29340>>2]&127](n)|0;if(!n)break b;o=Wa[c[29352>>2]&127](n)|0;o=(c[14978]|0)+o|0;c[14978]=o;if(o>>>0>(c[14982]|0)>>>0)c[14982]=o;o=(c[14981]|0)+1|0;c[14981]=o;if(o>>>0>(c[14987]|0)>>>0)c[14987]=o}else{if(c[p+272>>2]|0){if(a[p+81>>0]|0)break b}else{do if((e[p+276>>1]|0)>=16){o=p+300|0;n=c[o>>2]|0;if(n|0){c[o>>2]=c[n>>2];O=p+284|0;c[O>>2]=(c[O>>2]|0)+1;O=49;break c}o=p+296|0;n=c[o>>2]|0;if(!n){n=p+292|0;break}else{c[o>>2]=c[n>>2];O=p+284|0;c[O>>2]=(c[O>>2]|0)+1;O=49;break c}}else n=p+288|0;while(0);c[n>>2]=(c[n>>2]|0)+1}n=_d(p,16,0)|0;O=49}while(0);if((O|0)==49)if(!n)break;o=n+4|0;p=o;s=p+12|0;do{a[p>>0]=0;p=p+1|0}while((p|0)<(s|0));c[n>>2]=q;E=h;F=c[E+4>>2]|0;M=o;c[M>>2]=c[E>>2];c[M+4>>2]=F;M=f+272|0;c[n+12>>2]=c[M>>2];c[M>>2]=n}while(0);E=h;F=c[E+4>>2]|0;M=f+180|0;c[M>>2]=c[E>>2];c[M+4>>2]=F;if(!q){Ra=Q;return}else{E=q;g=h;M=r}}d:do if(!(vk(f,E)|0)){h=(a[P+164>>0]|0)==1?1:i;i=P+16|0;p=c[(c[i>>2]|0)+(M<<4)>>2]|0;n=(h|0)==1?34855:34585;o=c[f>>2]|0;do if(((a[o+165>>0]|0)==0?(a[f+200>>0]|0)==0:0)?(t=c[o+312>>2]|0,t|0):0){n=$a[t&127](c[o+316>>2]|0,18,n,0,p,c[f+240>>2]|0)|0;if((n|0)==1){cd(f,39216,u);c[f+12>>2]=23;O=271;break d}if((n|2|0)==2)if(!n)break;else{O=271;break d}else{cd(f,39231,v);c[f+12>>2]=1;O=271;break d}}while(0);F=(k|0)==0;do if(((F?(w=d[39319+(h+(j<<1))>>0]|0,x=c[f>>2]|0,(a[x+165>>0]|0)==0):0)?(a[f+200>>0]|0)==0:0)?(y=c[x+312>>2]|0,y|0):0){n=$a[y&127](c[x+316>>2]|0,w,E,0,p,c[f+240>>2]|0)|0;if((n|0)==1){cd(f,39216,A);c[f+12>>2]=23;O=271;break d}if((n|2|0)==2)if(!n)break;else{O=271;break d}else{cd(f,39231,z);c[f+12>>2]=1;O=271;break d}}while(0);do if(!(a[f+200>>0]|0)){o=c[(c[i>>2]|0)+(M<<4)>>2]|0;p=c[f>>2]|0;e:do if(!(a[p+165>>0]|0)){h=f+4|0;q=p+24|0;r=(c[q>>2]&1|0)==0;s=p+16|0;A=c[(c[s>>2]|0)+12>>2]|0;a[p+78>>0]=a[A+77>>0]|0;if(!((b[A+78>>1]&1)==0?(m=eh(p,0,h,0)|0,(m|0)!=0):0))O=75;f:do if((O|0)==75){m=c[p+20>>2]|0;if((m|0)>1)do{n=m;m=m+-1|0;if((b[(c[(c[s>>2]|0)+(m<<4)+12>>2]|0)+78>>1]&1)==0?(B=eh(p,m,h,0)|0,B|0):0){m=B;break f}}while((n|0)>2);if(r)c[q>>2]=c[q>>2]&-2;if(!(a[p+89>>0]|0))break e;c[q>>2]=c[q>>2]|16;break e}while(0);c[f+12>>2]=m;O=f+36|0;c[O>>2]=(c[O>>2]|0)+1;O=270;break d}while(0);if(!(Sd(P,E,o)|0)){if(hi(P,E,o)|0){c[D>>2]=E;cd(f,39347,D);O=270;break d}if(P|0){O=119;break}if(!(c[7324]|0)){m=Wa[c[29340>>2]&127](80)|0;O=141;break}m=Wa[c[29356>>2]&127](80)|0;if((c[14985]|0)>>>0<80)c[14985]=80;o=59064;n=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)>0|(o|0)==0&n>>>0>0){G=c[14978]|0;D=Tv(n|0,o|0,m|0,((m|0)<0)<<31>>31|0)|0;C=L()|0;c[14768]=((C|0)<0|(C|0)==0&D>>>0<=G>>>0)&1}m=Wa[c[29340>>2]&127](m)|0;if(!m){O=142;break}n=Wa[c[29352>>2]&127](m)|0;n=(c[14978]|0)+n|0;c[14978]=n;if(n>>>0>(c[14982]|0)>>>0)c[14982]=n;n=(c[14981]|0)+1|0;c[14981]=n;if(n>>>0<=(c[14987]|0)>>>0)break;c[14987]=n;break}if(!l){c[C>>2]=g;cd(f,39323,C);O=270;break d}p=c[f+116>>2]|0;p=(p|0)==0?f:p;m=p+84|0;n=c[m>>2]|0;o=1<>2]=n|o;if((M|0)!=1){O=270;break d}s=c[p>>2]|0;m=s+16|0;if(c[(c[m>>2]|0)+20>>2]|0){O=270;break d}if(a[p+199>>0]|0){O=270;break d}n=Pe(c[s>>2]|0,0,s,K,0,542)|0;if(n|0){cd(p,32157,G);c[p+12>>2]=n;O=270;break d}f=c[K>>2]|0;c[(c[m>>2]|0)+20>>2]=f;m=c[s+92>>2]|0;p=c[f+4>>2]|0;c[p+4>>2]=c[f>>2];if(!(b[p+22>>1]&2)){h=p+32|0;q=p+36|0;r=(c[h>>2]|0)-(c[q>>2]|0)|0;do if((m+-512|0)>>>0<65025?(m+-1&m|0)==0:0){c[h>>2]=m;o=p+80|0;m=c[o>>2]|0;if(!m)break;n=m+-4|0;c[o>>2]=n;m=n;do if((c[14816]|0)>>>0<=m>>>0)if((c[14817]|0)>>>0>m>>>0){c[14979]=(c[14979]|0)+-1;c[n>>2]=c[14819];c[14819]=n;f=(c[14820]|0)+1|0;c[14820]=f;c[14821]=(f|0)<(c[14815]|0)&1;break}else{m=Wa[c[29352>>2]&127](n)|0;O=103;break}else{m=Wa[c[29352>>2]&127](n)|0;O=103}while(0);do if((O|0)==103){c[14980]=(c[14980]|0)-m;if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{f=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);c[o>>2]=0}while(0);f=Se(c[p>>2]|0,h,r)|0;c[q>>2]=(c[h>>2]|0)-(r&65535);if((f|0)==7){m=s+81|0;do if(!(a[m>>0]|0)){if(a[s+82>>0]|0)break;a[m>>0]=1;if((c[s+180>>2]|0)>0)c[s+264>>2]=1;m=s+272|0;c[m>>2]=(c[m>>2]|0)+1;m=c[s+236>>2]|0;if(!m)break;c[m+12>>2]=7}while(0);O=270;break d}}O=270;break d}else O=119;while(0);g:do if((O|0)==119){if(c[P+272>>2]|0){if(a[P+81>>0]|0){O=142;break}}else{do if((e[P+276>>1]|0)>=80){n=P+300|0;m=c[n>>2]|0;if(m|0){c[n>>2]=c[m>>2];O=P+284|0;c[O>>2]=(c[O>>2]|0)+1;O=141;break g}n=P+296|0;m=c[n>>2]|0;if(!m){m=P+292|0;break}else{c[n>>2]=c[m>>2];O=P+284|0;c[O>>2]=(c[O>>2]|0)+1;O=141;break g}}else m=P+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1}m=_d(P,80,0)|0;O=141}while(0);if((O|0)==141)if(!m)O=142;if((O|0)==142){c[f+12>>2]=7;f=f+36|0;c[f>>2]=(c[f>>2]|0)+1;O=270;break}p=m+4|0;s=p+76|0;do{a[p>>0]=0;p=p+1|0}while((p|0)<(s|0));c[m>>2]=E;b[m+40>>1]=-1;n=c[(c[i>>2]|0)+(M<<4)+12>>2]|0;c[m+72>>2]=n;c[m+32>>2]=1;b[m+44>>1]=200;c[f+228>>2]=m;if((a[f+18>>0]|0)==0?(Bu(E,39382)|0)==0:0)c[n+72>>2]=m;if(a[H>>0]|0){Ra=Q;return}u=f+8|0;m=c[u>>2]|0;t=f+116|0;if(!m){o=c[f>>2]|0;if((c[t>>2]|0)==0?(b[o+76>>1]&8)==0:0)a[f+23>>0]=1;h:do if(c[o+272>>2]|0)if(!(a[o+81>>0]|0))O=161;else{Ra=Q;return}else{do if((e[o+276>>1]|0)>=224){m=o+300|0;n=c[m>>2]|0;if(n|0){c[m>>2]=c[n>>2];H=o+284|0;c[H>>2]=(c[H>>2]|0)+1;break h}m=o+296|0;n=c[m>>2]|0;if(!n){m=o+292|0;break}else{c[m>>2]=c[n>>2];H=o+284|0;c[H>>2]=(c[H>>2]|0)+1;break h}}else m=o+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1;O=161}while(0);if((O|0)==161)n=_d(o,224,0)|0;if(!n){Ra=Q;return}p=n+104|0;s=p+120|0;do{c[p>>2]=0;p=p+4|0}while((p|0)<(s|0));c[n>>2]=o;m=o+4|0;o=c[m>>2]|0;if(o|0)c[o+4>>2]=n;c[n+8>>2]=o;c[n+4>>2]=0;c[m>>2]=n;c[n+20>>2]=381479589;c[n+12>>2]=f;c[u>>2]=n;Di(n,61,0,1,0)|0;v=n}else v=m;s=c[t>>2]|0;s=(s|0)==0?f:s;m=s+84|0;n=c[m>>2]|0;g=1<>2]=n|g,(M|0)==1):0)?(N=c[s>>2]|0,I=N+16|0,(c[(c[I>>2]|0)+20>>2]|0)==0):0)?(a[s+199>>0]|0)==0:0){m=Pe(c[N>>2]|0,0,N,K,0,542)|0;if(m|0){cd(s,32157,J);c[s+12>>2]=m;break}K=c[K>>2]|0;c[(c[I>>2]|0)+20>>2]=K;m=c[N+92>>2]|0;p=c[K+4>>2]|0;c[p+4>>2]=c[K>>2];if(!(b[p+22>>1]&2)){h=p+32|0;q=p+36|0;r=(c[h>>2]|0)-(c[q>>2]|0)|0;do if((m+-512|0)>>>0<65025?(m+-1&m|0)==0:0){c[h>>2]=m;o=p+80|0;m=c[o>>2]|0;if(!m)break;n=m+-4|0;c[o>>2]=n;m=n;do if((c[14816]|0)>>>0<=m>>>0)if((c[14817]|0)>>>0>m>>>0){c[14979]=(c[14979]|0)+-1;c[n>>2]=c[14819];c[14819]=n;K=(c[14820]|0)+1|0;c[14820]=K;c[14821]=(K|0)<(c[14815]|0)&1;break}else{m=Wa[c[29352>>2]&127](n)|0;O=181;break}else{m=Wa[c[29352>>2]&127](n)|0;O=181}while(0);do if((O|0)==181){c[14980]=(c[14980]|0)-m;if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{K=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);c[o>>2]=0}while(0);K=Se(c[p>>2]|0,h,r)|0;c[q>>2]=(c[h>>2]|0)-(r&65535);if((K|0)==7){m=N+81|0;do if(!(a[m>>0]|0)){if(a[N+82>>0]|0)break;a[m>>0]=1;if((c[N+180>>2]|0)>0)c[N+264>>2]=1;m=N+272|0;c[m>>2]=(c[m>>2]|0)+1;m=c[N+236>>2]|0;if(!m)break;c[m+12>>2]=7}while(0);break}}}while(0);i=s+80|0;c[i>>2]=c[i>>2]|g;i=s+20|0;a[i>>0]=a[i>>0]|1;i=v+108|0;do if(!F){m=c[i>>2]|0;n=v+112|0;if((c[n>>2]|0)>(m|0)){c[i>>2]=m+1;p=c[v+104>>2]|0;a[p+(m*20|0)>>0]=-96;p=p+(m*20|0)+1|0;s=p+19|0;do{a[p>>0]=0;p=p+1|0}while((p|0)<(s|0));r=n;break}else{Di(v,160,0,0,0)|0;r=n;break}}else r=v+112|0;while(0);m=f+44|0;q=c[m>>2]|0;h=q+1|0;c[f+88>>2]=h;p=q+2|0;c[f+92>>2]=p;q=q+3|0;c[m>>2]=q;m=c[i>>2]|0;if((c[r>>2]|0)>(m|0)){c[i>>2]=m+1;N=c[v+104>>2]|0;a[N+(m*20|0)>>0]=94;b[N+(m*20|0)+2>>1]=0;c[N+(m*20|0)+4>>2]=M;c[N+(m*20|0)+8>>2]=q;c[N+(m*20|0)+12>>2]=2;c[N+(m*20|0)+16>>2]=0;a[N+(m*20|0)+1>>0]=0}else Di(v,94,M,q,2)|0;N=v+152|0;c[N>>2]=c[N>>2]|g;if((M|0)!=1?a[(c[(c[(c[v>>2]|0)+16>>2]|0)+(M<<4)+4>>2]|0)+9>>0]|0:0){N=v+156|0;c[N>>2]=c[N>>2]|g}m=c[i>>2]|0;if((c[r>>2]|0)>(m|0)){c[i>>2]=m+1;o=c[v+104>>2]|0;a[o+(m*20|0)>>0]=18;b[o+(m*20|0)+2>>1]=0;c[o+(m*20|0)+4>>2]=q;c[o+(m*20|0)+8>>2]=0;c[o+(m*20|0)+12>>2]=0;c[o+(m*20|0)+16>>2]=0;a[o+(m*20|0)+1>>0]=0;o=m}else o=Di(v,18,q,0,0)|0;m=(0==0?(c[P+32>>2]&2|0)==0:0)?4:1;n=c[i>>2]|0;if((c[r>>2]|0)>(n|0)){c[i>>2]=n+1;N=c[v+104>>2]|0;a[N+(n*20|0)>>0]=95;b[N+(n*20|0)+2>>1]=0;c[N+(n*20|0)+4>>2]=M;c[N+(n*20|0)+8>>2]=2;c[N+(n*20|0)+12>>2]=m;c[N+(n*20|0)+16>>2]=0;a[N+(n*20|0)+1>>0]=0}else Di(v,95,M,2,m)|0;m=d[P+78>>0]|0;n=c[i>>2]|0;if((c[r>>2]|0)>(n|0)){c[i>>2]=n+1;P=c[v+104>>2]|0;a[P+(n*20|0)>>0]=95;b[P+(n*20|0)+2>>1]=0;c[P+(n*20|0)+4>>2]=M;c[P+(n*20|0)+8>>2]=5;c[P+(n*20|0)+12>>2]=m;c[P+(n*20|0)+16>>2]=0;a[P+(n*20|0)+1>>0]=0}else Di(v,95,M,5,m)|0;m=c[i>>2]|0;if(!(a[(c[v>>2]|0)+81>>0]|0))n=(c[v+104>>2]|0)+(((o|0)<0?m+-1|0:o)*20|0)|0;else n=59308;c[n+8>>2]=m;n=(c[r>>2]|0)>(m|0);do if(k|j)if(n){c[i>>2]=m+1;P=c[v+104>>2]|0;a[P+(m*20|0)>>0]=70;b[P+(m*20|0)+2>>1]=0;c[P+(m*20|0)+4>>2]=0;c[P+(m*20|0)+8>>2]=p;c[P+(m*20|0)+12>>2]=0;c[P+(m*20|0)+16>>2]=0;a[P+(m*20|0)+1>>0]=0;break}else{Di(v,70,0,p,0)|0;break}else{if(n){c[i>>2]=m+1;P=c[v+104>>2]|0;a[P+(m*20|0)>>0]=-117;b[P+(m*20|0)+2>>1]=0;c[P+(m*20|0)+4>>2]=M;c[P+(m*20|0)+8>>2]=p;c[P+(m*20|0)+12>>2]=1;c[P+(m*20|0)+16>>2]=0;a[P+(m*20|0)+1>>0]=0}else m=Di(v,139,M,p,1)|0;c[f+128>>2]=m}while(0);o=c[u>>2]|0;i:do if(!o){n=c[f>>2]|0;do if(!(c[t>>2]|0)){if(b[n+76>>1]&8)break;a[f+23>>0]=1}while(0);j:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))O=238;else{o=0;break i}else{do if((e[n+276>>1]|0)>=224){m=n+300|0;o=c[m>>2]|0;if(o|0){c[m>>2]=c[o>>2];P=n+284|0;c[P>>2]=(c[P>>2]|0)+1;break j}m=n+296|0;o=c[m>>2]|0;if(!o){m=n+292|0;break}else{c[m>>2]=c[o>>2];P=n+284|0;c[P>>2]=(c[P>>2]|0)+1;break j}}else m=n+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1;O=238}while(0);if((O|0)==238)o=_d(n,224,0)|0;if(!o){o=0;break}p=o+104|0;s=p+120|0;do{c[p>>2]=0;p=p+4|0}while((p|0)<(s|0));c[o>>2]=n;m=n+4|0;n=c[m>>2]|0;if(n|0)c[n+4>>2]=o;c[o+8>>2]=n;c[o+4>>2]=0;c[m>>2]=o;c[o+20>>2]=381479589;c[o+12>>2]=f;c[u>>2]=o;Di(o,61,0,1,0)|0}while(0);Hj(f,M,1,1,34585);n=o+108|0;m=c[n>>2]|0;if((c[o+112>>2]|0)>(m|0)){c[n>>2]=m+1;P=c[o+104>>2]|0;a[P+(m*20|0)>>0]=109;b[P+(m*20|0)+2>>1]=0;c[P+(m*20|0)+4>>2]=0;c[P+(m*20|0)+8>>2]=1;c[P+(m*20|0)+12>>2]=M;c[P+(m*20|0)+16>>2]=0;a[P+(m*20|0)+1>>0]=0}else m=Di(o,109,0,1,M)|0;if(!(a[(c[o>>2]|0)+81>>0]|0)){P=c[o+104>>2]|0;a[P+(m*20|0)+1>>0]=-3;c[P+(m*20|0)+16>>2]=5}m=f+40|0;if(!(c[m>>2]|0))c[m>>2]=1;m=c[i>>2]|0;if((c[r>>2]|0)>(m|0)){c[i>>2]=m+1;f=c[v+104>>2]|0;a[f+(m*20|0)>>0]=121;b[f+(m*20|0)+2>>1]=0;c[f+(m*20|0)+4>>2]=0;c[f+(m*20|0)+8>>2]=h;c[f+(m*20|0)+12>>2]=0;c[f+(m*20|0)+16>>2]=0;a[f+(m*20|0)+1>>0]=0}else Di(v,121,0,h,0)|0;m=c[i>>2]|0;if((c[r>>2]|0)>(m|0)){c[i>>2]=m+1;f=c[v+104>>2]|0;a[f+(m*20|0)>>0]=75;b[f+(m*20|0)+2>>1]=0;c[f+(m*20|0)+4>>2]=6;c[f+(m*20|0)+8>>2]=q;c[f+(m*20|0)+12>>2]=0;c[f+(m*20|0)+16>>2]=0;a[f+(m*20|0)+1>>0]=0}else m=Di(v,75,6,q,0)|0;do if(!(a[(c[v>>2]|0)+81>>0]|0)){if((m|0)<0)m=(c[i>>2]|0)+-1|0;n=c[v+104>>2]|0;o=n+(m*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(m*20|0)+16>>2]=39398;a[o>>0]=-1;break}else{Ei(v,n+(m*20|0)|0,39398,-1);break}}while(0);m=c[i>>2]|0;if((c[r>>2]|0)>(m|0)){c[i>>2]=m+1;f=c[v+104>>2]|0;a[f+(m*20|0)>>0]=122;b[f+(m*20|0)+2>>1]=0;c[f+(m*20|0)+4>>2]=0;c[f+(m*20|0)+8>>2]=q;c[f+(m*20|0)+12>>2]=h;c[f+(m*20|0)+16>>2]=0;a[f+(m*20|0)+1>>0]=0}else Di(v,122,0,q,h)|0;m=c[i>>2]|0;if((m|0)>0)b[(c[v+104>>2]|0)+((m+-1|0)*20|0)+2>>1]=8;if((c[r>>2]|0)>(m|0)){c[i>>2]=m+1;p=c[v+104>>2]|0;a[p+(m*20|0)>>0]=117;p=p+(m*20|0)+1|0;s=p+19|0;do{a[p>>0]=0;p=p+1|0}while((p|0)<(s|0));Ra=Q;return}else{Di(v,117,0,0,0)|0;Ra=Q;return}}else O=270;while(0);if((O|0)==270?P|0:0)O=271;if((O|0)==271){if(c[P+480>>2]|0){Xd(P,E);Ra=Q;return}f=E;if((c[P+304>>2]|0)>>>0<=f>>>0?(c[P+308>>2]|0)>>>0>f>>>0:0){f=P+300|0;c[E>>2]=c[f>>2];c[f>>2]=E;Ra=Q;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](E);Ra=Q;return}else{f=Wa[c[29352>>2]&127](E)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](E);Ra=Q;return}}function cj(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var 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,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,_=0,$=0,aa=0,ba=0,ca=0,da=0;da=Ra;Ra=Ra+272|0;$=da+192|0;_=da+184|0;Y=da+152|0;R=da+136|0;X=da+128|0;W=da+120|0;T=da+112|0;P=da+104|0;w=da+96|0;v=da+88|0;u=da+80|0;S=da+232|0;N=da;O=da+200|0;ba=c[f>>2]|0;Q=(j|0)==0;if((h|0)==0&Q){Ra=da;return}aa=f+228|0;ca=c[aa>>2]|0;if(!ca){Ra=da;return}if(((Q?(k=c[ca>>2]|0,r=Ru(k,95)|0,r|0):0)?(a[r>>0]=0,l=Sd(ba,k,0)|0,a[r>>0]=95,l|0):0)?c[l+56>>2]|0:0){q=c[c[l+60>>2]>>2]|0;n=c[ba+348>>2]|0;if(!n){l=ba+340|0;k=ba+344|0}else{l=a[q>>0]|0;if(!(l<<24>>24))k=0;else{k=0;m=q;do{m=m+1|0;k=G(k+(d[208+(l&255)>>0]|0)|0,-1640531535)|0;l=a[m>>0]|0}while(l<<24>>24!=0)}k=(k>>>0)%((c[ba+336>>2]|0)>>>0)|0;l=n+(k<<3)|0;k=n+(k<<3)+4|0}l=c[l>>2]|0;a:do if(!l)k=59292;else{p=d[208+(d[q>>0]|0)>>0]|0;while(1){k=c[k>>2]|0;l=l+-1|0;n=c[k+12>>2]|0;V=a[n>>0]|0;m=(d[208+(V&255)>>0]|0)-p|0;if(!(V<<24>>24==0|(m|0)!=0)){o=q;do{n=n+1|0;o=o+1|0;V=a[n>>0]|0;m=(d[208+(V&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(V<<24>>24==0|(m|0)!=0))}if(!m)break a;if(!l){k=59292;break}}}while(0);k=c[k+8>>2]|0;if(((k|0?(s=c[k>>2]|0,(c[s>>2]|0)>=3):0)?(t=c[s+92>>2]|0,t|0):0)?Wa[t&127](r+1|0)|0:0){V=ca+36|0;c[V>>2]=c[V>>2]|1024}}V=ba+165|0;do if(a[V>>0]|0)if(Q){M=c[ba+160>>2]|0;c[ca+28>>2]=M;if((M|0)!=1)break;M=ca+36|0;c[M>>2]=c[M>>2]|1;break}else{cd(f,59952,u);Ra=da;return}while(0);b:do if(i&32){k=ca+36|0;l=c[k>>2]|0;if(l&8|0){cd(f,39491,v);Ra=da;return}if(!(l&4)){c[w>>2]=c[ca>>2];cd(f,39541,w);break}c[k>>2]=l|96;M=c[f>>2]|0;v=c[f+8>>2]|0;u=M+166|0;if((a[u>>0]&2)==0?(x=b[ca+42>>1]|0,x<<16>>16>0):0){m=c[ca+4>>2]|0;l=x<<16>>16;k=0;do{if(a[m+(k<<4)+15>>0]&1)a[m+(k<<4)+12>>0]=2;k=k+1|0}while((k|0)!=(l|0))}k=c[f+128>>2]|0;if(k|0){if((k|0)<0)k=(c[v+108>>2]|0)+-1|0;if(!(a[(c[v>>2]|0)+81>>0]|0))k=(c[v+104>>2]|0)+(k*20|0)|0;else k=59308;c[k+12>>2]=2}l=ca+40|0;k=b[l>>1]|0;do if(k<<16>>16>-1){k=c[(c[ca+4>>2]|0)+(k<<16>>16<<4)>>2]|0;c[S>>2]=k;if(!k)k=0;else k=(Eu(k)|0)&1073741823;c[S+4>>2]=k;k=oj(M,59,S,0)|0;k=nj(c[f>>2]|0,0,k)|0;if((k|0?(a[k+16>>0]=a[f+198>>0]|0,hj(f,0,0,0,k,d[ca+48>>0]|0,0,0,0,0,2),(a[M+81>>0]|0)==0):0)?(c[f+36>>2]|0)==0:0){k=c[ca+8>>2]|0;c:do if(!k)k=0;else while(1){K=k+55|0;if(((d[K>>0]|d[K+1>>0]<<8)&3)==2)break c;k=c[k+20>>2]|0;if(!k){k=0;break}}while(0);b[l>>1]=-1;K=k;break}break b}else{k=c[ca+8>>2]|0;d:do if(!k)k=0;else while(1){K=k+55|0;if(((d[K>>0]|d[K+1>>0]<<8)&3)==2)break d;k=c[k+20>>2]|0;if(!k){k=0;break}}while(0);t=k+50|0;m=b[t>>1]|0;if((m&65535)>1){r=c[k+4>>2]|0;s=k+52|0;l=1;q=1;do{p=b[r+(q<<1)>>1]|0;e:do if((l|0)>0){n=r;o=l;while(1){if((b[n>>1]|0)==p<<16>>16)break;if((o|0)>1){n=n+2|0;o=o+-1|0}else{U=70;break e}}b[s>>1]=(b[s>>1]|0)+-1<<16>>16}else U=70;while(0);if((U|0)==70){U=0;b[r+(l<<1)>>1]=p;l=l+1|0;m=b[t>>1]|0}q=q+1|0}while(q>>>0<(m&65535)>>>0)}else l=1;b[t>>1]=l;K=k}while(0);I=K+55|0;k=d[I>>0]|d[I+1>>0]<<8;J=k|32;a[I>>0]=J;a[I+1>>0]=J>>8;if(!(a[u>>0]&2)){J=k|40;a[I>>0]=J;a[I+1>>0]=J>>8}m=b[K+50>>1]|0;J=m&65535;l=K+44|0;if(v|0?(y=c[l>>2]|0,(y|0)>0):0){if(!(a[(c[v>>2]|0)+81>>0]|0))k=(c[v+104>>2]|0)+(y*20|0)|0;else k=59308;a[k>>0]=11}c[l>>2]=c[ca+28>>2];k=c[ca+8>>2]|0;if(k|0){w=m<<16>>16==0;x=K+4|0;y=M+272|0;z=K+32|0;A=M+276|0;B=M+81|0;C=M+288|0;D=M+300|0;E=M+296|0;F=M+284|0;H=M+292|0;do{u=k+55|0;f:do if(((d[u>>0]|d[u+1>>0]<<8)&3)!=2){v=k+50|0;l=b[v>>1]|0;do if(!w){s=c[x>>2]|0;t=l&65535;if(!(l<<16>>16)){m=J;n=0}else{r=c[k+4>>2]|0;m=0;q=0;do{p=b[s+(q<<1)>>1]|0;n=r;o=t;while(1){if((b[n>>1]|0)==p<<16>>16)break;if((o|0)>1){n=n+2|0;o=o+-1|0}else{U=89;break}}if((U|0)==89){U=0;m=m+1|0}q=q+1|0}while((q|0)!=(J|0));n=l}if(!m){l=n;break}o=m+(n&65535)|0;p=k+52|0;if((o|0)>(e[p>>1]|0)){n=o*7|0;m=((n|0)<0)<<31>>31;g:do if(c[y>>2]|0)if(!(a[B>>0]|0))U=103;else break b;else{do if(0>>0|(0==(m|0)?(e[A>>1]|0)>>>0>>0:0))l=C;else{l=c[D>>2]|0;if(l|0){c[D>>2]=c[l>>2];c[F>>2]=(c[F>>2]|0)+1;break g}l=c[E>>2]|0;if(!l){l=H;break}c[E>>2]=c[l>>2];c[F>>2]=(c[F>>2]|0)+1;break g}while(0);c[l>>2]=(c[l>>2]|0)+1;U=103}while(0);if((U|0)==103){U=0;l=_d(M,n,m)|0}if(!l)break b;gw(l|0,0,n|0)|0;s=k+32|0;ew(l|0,c[s>>2]|0,e[p>>1]<<2|0)|0;c[s>>2]=l;m=l+(o<<2)|0;r=k+4|0;ew(m|0,c[r>>2]|0,e[p>>1]<<1|0)|0;c[r>>2]=m;m=m+(o<<1)|0;l=k+28|0;ew(m|0,c[l>>2]|0,e[p>>1]|0)|0;c[l>>2]=m;b[p>>1]=o;l=d[u>>0]|d[u+1>>0]<<8|16;a[u>>0]=l;a[u+1>>0]=l>>8;l=b[v>>1]|0;m=l&65535}else{m=t;r=k+4|0;s=k+32|0}n=0;while(1){p=c[r>>2]|0;q=b[(c[x>>2]|0)+(n<<1)>>1]|0;h:do if(!(l<<16>>16))U=111;else{o=p;l=l&65535;while(1){if((b[o>>1]|0)==q<<16>>16){l=m;break h}if((l|0)>1){o=o+2|0;l=l+-1|0}else{U=111;break}}}while(0);if((U|0)==111){U=0;b[p+(m<<1)>>1]=q;c[(c[s>>2]|0)+(m<<2)>>2]=c[(c[z>>2]|0)+(n<<2)>>2];l=m+1|0}n=n+1|0;if((n|0)==(J|0))break f;m=l;l=b[v>>1]|0}}while(0);b[k+52>>1]=l}while(0);k=c[k+20>>2]|0}while((k|0)!=0)}s=ca+42|0;l=b[s>>1]|0;p=l<<16>>16;t=K+52|0;if((J|0)<(p|0)){k=b[t>>1]|0;if((k&65535|0)<(p|0)){o=p*7|0;n=((o|0)<0)<<31>>31;i:do if(!M){M=Sv(o|0,n|0,-1,-1)|0;H=L()|0;if(H>>>0>0|(H|0)==0&M>>>0>2147483390)break b;if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](o)|0;U=141;break}k=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){M=c[14978]|0;H=Tv(m|0,n|0,k|0,((k|0)<0)<<31>>31|0)|0;F=L()|0;c[14768]=((F|0)<0|(F|0)==0&H>>>0<=M>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break b;m=Wa[c[29352>>2]&127](k)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0<=(c[14987]|0)>>>0)break;c[14987]=m}else{if(c[M+272>>2]|0){if(a[M+81>>0]|0)break b}else{do if(!(0>>0|(0==(n|0)?(e[M+276>>1]|0)>>>0>>0:0))){m=M+300|0;k=c[m>>2]|0;if(k|0){c[m>>2]=c[k>>2];U=M+284|0;c[U>>2]=(c[U>>2]|0)+1;U=141;break i}m=M+296|0;k=c[m>>2]|0;if(!k){k=M+292|0;break}else{c[m>>2]=c[k>>2];U=M+284|0;c[U>>2]=(c[U>>2]|0)+1;U=141;break i}}else k=M+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(M,o,n)|0;U=141}while(0);if((U|0)==141)if(!k)break;gw(k|0,0,o|0)|0;M=K+32|0;ew(k|0,c[M>>2]|0,e[t>>1]<<2|0)|0;c[M>>2]=k;M=k+(p<<2)|0;k=K+4|0;ew(M|0,c[k>>2]|0,e[t>>1]<<1|0)|0;c[k>>2]=M;M=M+(p<<1)|0;k=K+28|0;ew(M|0,c[k>>2]|0,e[t>>1]|0)|0;c[k>>2]=M;b[t>>1]=l;k=d[I>>0]|d[I+1>>0]<<8|16;a[I>>0]=k;a[I+1>>0]=k>>8;k=l;l=b[s>>1]|0}if(l<<16>>16>0){q=K+4|0;r=K+32|0;p=0;k=J;do{o=c[q>>2]|0;j:do if((k|0)>0){m=o;n=k;while(1){if((p|0)==(b[m>>1]|0))break j;if((n|0)>1){m=m+2|0;n=n+-1|0}else{U=149;break}}}else U=149;while(0);if((U|0)==149){U=0;b[o+(k<<1)>>1]=p;c[(c[r>>2]|0)+(k<<2)>>2]=34049;k=k+1|0;l=b[s>>1]|0}p=p+1|0}while((p|0)<(l<<16>>16|0));k=b[t>>1]|0}}else{b[t>>1]=l;k=l}if(!(k<<16>>16)){l=-1;k=-1}else{m=c[K+4>>2]|0;k=k&65535;l=0;n=0;do{M=k;k=k+-1|0;H=b[m+(k<<1)>>1]|0;I=(H&65535)<63;H=cw(1,0,H<<16>>16|0)|0;J=L()|0;l=(I?H:0)|l;n=(I?J:0)|n}while((M|0)>1);l=~l;k=~n}M=K+64|0;c[M>>2]=l;c[M+4>>2]=k}while(0);F=ca+72|0;l=c[F>>2]|0;if(!l)E=-1e6;else{m=c[ba+16>>2]|0;k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0)){E=k;break}else k=k+1|0}w=c[ca+24>>2]|0;if(w|0){k=O+8|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;k=N;n=k+80|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(n|0));c[N>>2]=1;c[N+16>>2]=c[ca>>2];c[N+24>>2]=ca;c[N+48>>2]=-1;c[O>>2]=f;c[O+4>>2]=N;q=O+24|0;b[q>>1]=4;k:do if((c[w>>2]|0)>0){r=S+4|0;s=S+8|0;t=S+12|0;u=S+24|0;v=O+20|0;p=0;k=4;while(1){o=c[w+4+(p*20|0)>>2]|0;if(o){m=k&65535;b[q>>1]=m&28655;k=c[O>>2]|0;c[S>>2]=k;c[r>>2]=125;c[s>>2]=126;c[t>>2]=0;c[u>>2]=O;n=o+24|0;l=k;M=l+208|0;N=(c[M>>2]|0)+(c[n>>2]|0)|0;c[M>>2]=N;l=c[(c[l>>2]|0)+120>>2]|0;if((l|0)<(N|0)){U=168;break}_j(S,o)|0;l=c[S>>2]|0;k=l+208|0;c[k>>2]=(c[k>>2]|0)-(c[n>>2]|0);k=b[q>>1]|0;N=o+4|0;c[N>>2]=c[N>>2]|k&-32752&65535;k=(m&36880|k&65535)&65535;b[q>>1]=k;if((c[v>>2]|0)>0)break;if((c[l+36>>2]|0)>=1)break k}p=p+1|0;if((p|0)>=(c[w>>2]|0))break k}if((U|0)==168){c[P>>2]=l;cd(k,41637,P)}}while(0)}D=ca+42|0;l=b[D>>1]|0;if(l<<16>>16>0){m=c[ca+4>>2]|0;k=0;l=l<<16>>16;while(1){k=k+(d[m+14>>0]|0)|0;if((l|0)>1){m=m+16|0;l=l+-1|0}else break}}else k=0;k=k+((e[ca+40>>1]|0)>>>15&65535)<<2;if(k>>>0<8)if(!k)k=0;else{m=40;l=0;do{m=(m&65535)+65526|0;k=cw(k|0,l|0,1)|0;l=L()|0}while(l>>>0<0|(l|0)==0&k>>>0<8);m=m&65535;U=189}else{if(k>>>0>255){m=40;l=0;do{m=(m&65535)+40|0;U=k;k=bw(k|0,l|0,4)|0;P=l;l=L()|0}while(P>>>0>0|(P|0)==0&U>>>0>4095);m=m&65535}else{m=40;l=0}if(l>>>0>0|(l|0)==0&k>>>0>15){do{m=(m&65535)+10&65535;U=k;k=bw(k|0,l|0,1)|0;P=l;l=L()|0}while(P>>>0>0|(P|0)==0&U>>>0>31);U=189}else U=189}if((U|0)==189)k=(m&65535)+65526+(e[3648+((k&7)<<1)>>1]|0)&65535;b[ca+46>>1]=k;k=c[ca+8>>2]|0;if(k|0)do{xk(k);k=c[k+20>>2]|0}while((k|0)!=0);if(!(a[V>>0]|0)){C=f+8|0;k=c[C>>2]|0;if(!k){m=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[m+76>>1]&8)==0:0)a[f+23>>0]=1;l:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))U=209;else{Ra=da;return}else{do if((e[m+276>>1]|0)>=224){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];P=m+284|0;c[P>>2]=(c[P>>2]|0)+1;break l}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];P=m+284|0;c[P>>2]=(c[P>>2]|0)+1;break l}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;U=209}while(0);if((U|0)==209)l=_d(m,224,0)|0;if(!l){Ra=da;return}k=l+104|0;n=k+120|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(n|0));c[l>>2]=m;k=m+4|0;m=c[k>>2]|0;if(m|0)c[m+4>>2]=l;c[l+8>>2]=m;c[l+4>>2]=0;c[k>>2]=l;c[l+20>>2]=381479589;c[l+12>>2]=f;c[C>>2]=l;Di(l,61,0,1,0)|0;B=l}else B=k;u=B+108|0;k=c[u>>2]|0;v=B+112|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;n=c[B+104>>2]|0;a[n+(k*20|0)>>0]=117;k=n+(k*20|0)+1|0;n=k+19|0;do{a[k>>0]=0;k=k+1|0}while((k|0)<(n|0))}else Di(B,117,0,0,0)|0;A=(c[ca+12>>2]|0)==0;n=A?39573:39584;A=A?37991:39579;m:do if(Q){l=i<<24>>24==0?h:f+188|0;X=c[l>>2]|0;m=c[f+180>>2]|0;k=X-m|0;if((a[X>>0]|0)!=59)k=(c[l+4>>2]|0)+k|0;c[R>>2]=n;c[R+4>>2]=k;c[R+8>>2]=m;m=dd(ba,39589,R)|0;l=f+92|0;k=ca}else{l=f+44|0;t=c[l>>2]|0;p=t+1|0;s=t+2|0;t=t+3|0;c[l>>2]=t;l=c[f+116>>2]|0;a[((l|0)==0?f:l)+21>>0]=1;l=f+92|0;k=c[l>>2]|0;m=c[u>>2]|0;if((c[v>>2]|0)>(m|0)){c[u>>2]=m+1;R=c[B+104>>2]|0;a[R+(m*20|0)>>0]=109;b[R+(m*20|0)+2>>1]=0;c[R+(m*20|0)+4>>2]=1;c[R+(m*20|0)+8>>2]=k;c[R+(m*20|0)+12>>2]=E;c[R+(m*20|0)+16>>2]=0;a[R+(m*20|0)+1>>0]=0}else Di(B,109,1,k,E)|0;o=c[u>>2]|0;if((o|0)>0)b[(c[B+104>>2]|0)+((o+-1|0)*20|0)+2>>1]=16;c[f+40>>2]=2;k=o+1|0;if((c[v>>2]|0)>(o|0)){c[u>>2]=k;R=c[B+104>>2]|0;a[R+(o*20|0)>>0]=13;b[R+(o*20|0)+2>>1]=0;c[R+(o*20|0)+4>>2]=p;c[R+(o*20|0)+8>>2]=0;c[R+(o*20|0)+12>>2]=k;c[R+(o*20|0)+16>>2]=0;a[R+(o*20|0)+1>>0]=0}else Di(B,13,p,0,k)|0;m=f+36|0;do if(!(c[m>>2]|0)){k=yk(f,j)|0;if(!k)break;i=k+42|0;b[D>>1]=b[i>>1]|0;R=k+4|0;w=ca+4|0;c[w>>2]=c[R>>2];b[i>>1]=0;c[R>>2]=0;do if(!(c[ba+480>>2]|0)){i=k+32|0;R=(c[i>>2]|0)+-1|0;c[i>>2]=R;if(R|0)break;Vi(ba,k)}else Vi(ba,k);while(0);a[S>>0]=13;n=S+4|0;c[n>>2]=p;c[S+16>>2]=0;q=S+8|0;c[q>>2]=0;r=S+12|0;c[r>>2]=0;kj(f,j,S)|0;if(c[m>>2]|0)break;k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;S=c[B+104>>2]|0;a[S+(k*20|0)>>0]=67;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=p;c[S+(k*20|0)+8>>2]=0;c[S+(k*20|0)+12>>2]=0;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0}else Di(B,67,p,0,0)|0;m=c[B+12>>2]|0;a[m+19>>0]=0;c[m+28>>2]=0;m=c[u>>2]|0;if(!(a[(c[B>>2]|0)+81>>0]|0))k=(c[B+104>>2]|0)+(((o|0)<0?m+-1|0:o)*20|0)|0;else k=59308;c[k+8>>2]=m;k=c[n>>2]|0;if((c[v>>2]|0)>(m|0)){c[u>>2]=m+1;o=c[B+104>>2]|0;a[o+(m*20|0)>>0]=14;b[o+(m*20|0)+2>>1]=0;c[o+(m*20|0)+4>>2]=k;c[o+(m*20|0)+8>>2]=0;c[o+(m*20|0)+12>>2]=0;c[o+(m*20|0)+16>>2]=0;a[o+(m*20|0)+1>>0]=0;o=m}else o=Di(B,14,k,0,0)|0;n=c[q>>2]|0;k=c[r>>2]|0;m=c[u>>2]|0;if((c[v>>2]|0)>(m|0)){c[u>>2]=m+1;S=c[B+104>>2]|0;a[S+(m*20|0)>>0]=92;b[S+(m*20|0)+2>>1]=0;c[S+(m*20|0)+4>>2]=n;c[S+(m*20|0)+8>>2]=k;c[S+(m*20|0)+12>>2]=s;c[S+(m*20|0)+16>>2]=0;a[S+(m*20|0)+1>>0]=0}else Di(B,92,n,k,s)|0;zk(B,ca,0);k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;S=c[B+104>>2]|0;a[S+(k*20|0)>>0]=121;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=1;c[S+(k*20|0)+8>>2]=t;c[S+(k*20|0)+12>>2]=0;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0}else Di(B,121,1,t,0)|0;k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;S=c[B+104>>2]|0;a[S+(k*20|0)>>0]=122;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=1;c[S+(k*20|0)+8>>2]=s;c[S+(k*20|0)+12>>2]=t;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0}else Di(B,122,1,s,t)|0;k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;S=c[B+104>>2]|0;a[S+(k*20|0)>>0]=11;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=0;c[S+(k*20|0)+8>>2]=o;c[S+(k*20|0)+12>>2]=0;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0}else Di(B,11,0,o,0)|0;m=c[u>>2]|0;if(!(a[(c[B>>2]|0)+81>>0]|0))k=(c[B+104>>2]|0)+(((o|0)<0?m+-1|0:o)*20|0)|0;else k=59308;c[k+8>>2]=m;if((c[v>>2]|0)>(m|0)){c[u>>2]=m+1;S=c[B+104>>2]|0;a[S+(m*20|0)>>0]=117;b[S+(m*20|0)+2>>1]=0;c[S+(m*20|0)+4>>2]=1;c[S+(m*20|0)+8>>2]=0;c[S+(m*20|0)+12>>2]=0;c[S+(m*20|0)+16>>2]=0;a[S+(m*20|0)+1>>0]=0}else Di(B,117,1,0,0)|0;S=b[D>>1]|0;r=S<<16>>16;if(S<<16>>16>0){o=0;p=c[w>>2]|0;k=0;while(1){m=0;n=c[p>>2]|0;n:while(1){switch(a[n>>0]|0){case 0:break n;case 34:{m=m+1|0;break}default:{}}m=m+1|0;n=n+1|0}k=k+7+m|0;o=o+1|0;if((o|0)==(r|0)){n=k;break}else p=p+16|0}}else n=0;k=0;m=c[ca>>2]|0;o:while(1){switch(a[m>>0]|0){case 0:break o;case 34:{k=k+1|0;break}default:{}}k=k+1|0;m=m+1|0}x=n+2+k|0;z=(x|0)<50;q=z?59952:41687;y=z?41685:41691;z=z?34066:41696;x=(r*6|0)+35+x|0;S=Sv(x|0,((x|0)<0)<<31>>31|0,-1,-1)|0;j=L()|0;p:do if(!(j>>>0>0|(j|0)==0&S>>>0>2147483390)){do if(!(c[7324]|0)){m=Wa[c[29340>>2]&127](x)|0;if(!m)break p}else{k=Wa[c[29356>>2]&127](x)|0;if((c[14985]|0)>>>0>>0)c[14985]=x;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){S=c[14978]|0;j=Tv(m|0,n|0,k|0,((k|0)<0)<<31>>31|0)|0;R=L()|0;c[14768]=((R|0)<0|(R|0)==0&j>>>0<=S>>>0)&1}m=Wa[c[29340>>2]&127](k)|0;if(!m)break p;k=Wa[c[29352>>2]&127](m)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0<=(c[14987]|0)>>>0)break;c[14987]=k}while(0);Cb(x,m,41699,T)|0;k=(Eu(m)|0)&1073741823;u=c[ca>>2]|0;t=a[u>>0]|0;q:do if(!(t<<24>>24)){n=0;s=0}else{n=0;o=t;while(1){if(!(o<<24>>24==95?1:(a[880+(o&255)>>0]&6)!=0)){s=1;break q}n=n+1|0;o=a[u+n>>0]|0;if(!(o<<24>>24)){s=0;break}}}while(0);o=t&255;r:do if((o+-48|0)>>>0>=10){do if((n|0)>1){o=a[3952+((d[208+o>>0]<<2^n^(d[208+(d[u+(n+-1)>>0]|0)>>0]|0)*3|0)%127|0)>>0]|0;if(!(o<<24>>24))break;o=o&255;while(1){p=o+-1|0;s:do if((n|0)==(d[2064+p>>0]|0)){r=1136+(e[1776+(p<<1)>>1]|0)|0;o=0;while(1){if((a[u+o>>0]&-33)<<24>>24!=(a[r+o>>0]|0))break s;o=o+1|0;if((o|0)>=(n|0)){U=302;break r}}}while(0);o=a[4224+p>>0]|0;if(!(o<<24>>24))break;else o=o&255}}while(0);if(!((n|0)==0|s)){p=t;t=0}else U=302}else U=302;while(0);if((U|0)==302){a[m+k>>0]=34;k=k+1|0;p=a[u>>0]|0;t=1}n=k+1|0;o=m+k|0;if(p<<24>>24){s=0;r=u;do{a[o>>0]=p;if((a[r>>0]|0)==34){a[m+n>>0]=34;k=k+2|0}else k=n;s=s+1|0;r=u+s|0;p=a[r>>0]|0;n=k+1|0;o=m+k|0}while(p<<24>>24!=0)}if(t){a[o>>0]=34;k=n}o=k+1|0;a[m+k>>0]=40;k=x-o|0;n=m+o|0;if((b[D>>1]|0)>0){p=0;v=c[w>>2]|0;while(1){Cb(k,n,q,W)|0;k=((Eu(n)|0)&1073741823)+o|0;u=c[v>>2]|0;t=a[u>>0]|0;t:do if(!(t<<24>>24)){n=0;s=0}else{n=0;o=t;while(1){if(!(o<<24>>24==95?1:(a[880+(o&255)>>0]&6)!=0)){s=1;break t}n=n+1|0;o=a[u+n>>0]|0;if(!(o<<24>>24)){s=0;break}}}while(0);o=t&255;u:do if((o+-48|0)>>>0>=10){do if((n|0)>1){o=a[3952+((d[208+o>>0]<<2^n^(d[208+(d[u+(n+-1)>>0]|0)>>0]|0)*3|0)%127|0)>>0]|0;if(!(o<<24>>24))break;o=o&255;while(1){q=o+-1|0;v:do if((n|0)==(d[2064+q>>0]|0)){r=1136+(e[1776+(q<<1)>>1]|0)|0;o=0;while(1){if((a[u+o>>0]&-33)<<24>>24!=(a[r+o>>0]|0))break v;o=o+1|0;if((o|0)>=(n|0)){U=326;break u}}}while(0);o=a[4224+q>>0]|0;if(!(o<<24>>24))break;else o=o&255}}while(0);if(!((n|0)==0|s)){q=t;t=0}else U=326}else U=326;while(0);if((U|0)==326){U=0;a[m+k>>0]=34;k=k+1|0;q=a[u>>0]|0;t=1}n=k+1|0;o=m+k|0;if(q<<24>>24){s=0;r=u;do{a[o>>0]=q;if((a[r>>0]|0)==34){a[m+n>>0]=34;k=k+2|0}else k=n;s=s+1|0;r=u+s|0;q=a[r>>0]|0;n=k+1|0;o=m+k|0}while(q<<24>>24!=0)}if(t){a[o>>0]=34;k=n}T=m+k|0;a[T>>0]=0;n=c[18080+((a[v+13>>0]|0)+-65<<2)>>2]|0;o=(Eu(n)|0)&1073741823;ew(T|0,n|0,o|0)|0;o=o+k|0;p=p+1|0;k=x-o|0;n=m+o|0;if((p|0)<(b[D>>1]|0)){v=v+16|0;q=y}else break}}c[X>>2]=z;Cb(k,n,31408,X)|0;k=ca;break m}while(0);k=ba+81|0;if(a[k>>0]|0){m=0;k=ca;break m}if(a[ba+82>>0]|0){m=0;k=ca;break m}a[k>>0]=1;if((c[ba+180>>2]|0)>0)c[ba+264>>2]=1;k=ba+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[ba+236>>2]|0;if(!k){m=0;k=ca;break m}c[k+12>>2]=7;m=0;k=ca;break m}while(0);Ra=da;return}while(0);p=ba+16|0;U=c[k>>2]|0;W=c[l>>2]|0;X=c[f+88>>2]|0;c[Y>>2]=c[(c[p>>2]|0)+(E<<4)>>2];c[Y+4>>2]=34585;c[Y+8>>2]=A;c[Y+12>>2]=U;c[Y+16>>2]=U;c[Y+20>>2]=W;c[Y+24>>2]=m;c[Y+28>>2]=X;Ak(f,39604,Y);w:do if(m|0){if(c[ba+480>>2]|0){Xd(ba,m);break}l=m;do if((c[ba+304>>2]|0)>>>0<=l>>>0){if((c[ba+308>>2]|0)>>>0<=l>>>0)break;Y=ba+300|0;c[m>>2]=c[Y>>2];c[Y>>2]=m;break w}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{Y=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-Y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);l=c[C>>2]|0;m=(c[c[(c[(c[f>>2]|0)+16>>2]|0)+(E<<4)+12>>2]>>2]|0)+1|0;n=l+108|0;o=c[n>>2]|0;if((c[l+112>>2]|0)>(o|0)){c[n>>2]=o+1;Y=c[l+104>>2]|0;a[Y+(o*20|0)>>0]=95;b[Y+(o*20|0)+2>>1]=0;c[Y+(o*20|0)+4>>2]=E;c[Y+(o*20|0)+8>>2]=1;c[Y+(o*20|0)+12>>2]=m;c[Y+(o*20|0)+16>>2]=0;a[Y+(o*20|0)+1>>0]=0}else Di(l,95,E,1,m)|0;if(c[ca+36>>2]&8|0?(Z=c[p>>2]|0,(c[(c[Z+(E<<4)+12>>2]|0)+72>>2]|0)==0):0){c[_>>2]=c[Z+(E<<4)>>2];Ak(f,39691,_)}c[$>>2]=c[k>>2];Bk(B,E,dd(ba,39733,$)|0);if(!(a[V>>0]|0)){Ra=da;return}}else k=ca;if(mi((c[F>>2]|0)+8|0,c[k>>2]|0,ca)|0){k=ba+81|0;if(a[k>>0]|0){Ra=da;return}if(a[ba+82>>0]|0){Ra=da;return}a[k>>0]=1;if((c[ba+180>>2]|0)>0)c[ba+264>>2]=1;k=ba+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[ba+236>>2]|0;if(!k){Ra=da;return}c[k+12>>2]=7;Ra=da;return}c[aa>>2]=0;ba=ba+24|0;c[ba>>2]=c[ba>>2]|1;if(c[ca+12>>2]|0){Ra=da;return}k=c[f+180>>2]|0;o=(c[((c[g>>2]|0)==0?h:g)>>2]|0)-k|0;o=(o|0)>-1?k+o|0:-1;l=a[k>>0]|0;if(l<<24>>24!=0&o>>>0>k>>>0){n=0;while(1){m=k+1|0;if((l&255)>191){k=m;while(1){l=a[k>>0]|0;if((l&-64)<<24>>24==-128)k=k+1|0;else break}}else{k=m;l=a[m>>0]|0}if(l<<24>>24!=0&k>>>0>>0)n=n+1|0;else break}k=n+14|0}else k=13;c[ca+52>>2]=k;Ra=da;return}function dj(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=Ra;Ra=Ra+64|0;n=s;q=s+4|0;r=c[f>>2]|0;j=c[f+228>>2]|0;do if(j|0){m=c[j+4>>2]|0;l=(b[j+42>>1]|0)+-1|0;j=(d[r+165>>0]|0)+4&255;k=q+20|0;a[k>>0]=j;c[q+4>>2]=127;c[q+8>>2]=128;c[q+24>>2]=0;if(g){_j(q,g)|0;j=a[k>>0]|0}if(!(j<<24>>24)){c[n>>2]=c[m+(l<<4)>>2];cd(f,41761,n);break}o=m+(l<<4)+4|0;j=c[o>>2]|0;if(j|0)ni(r,j);j=q;k=j+52|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));a[q>>0]=-83;while(1)if(!(a[880+(d[h>>0]|0)>>0]&1))break;else h=h+1|0;j=i-h|0;a:do if((j|0)<=0)if(!h)j=0;else{k=j;p=15}else while(1){k=j+-1|0;if(!(a[880+(d[h+k>>0]|0)>>0]&1)){k=j;p=15;break a}if((j|0)>1)j=k;else{p=15;break}}while(0);b:do if((p|0)==15){m=Sv(k|0,((k|0)<0)<<31>>31|0,1,0)|0;n=L()|0;c:do if(c[r+272>>2]|0)if(!(a[r+81>>0]|0))p=25;else{j=0;break b}else{do if(!(n>>>0>0|((n|0)==0?m>>>0>(e[r+276>>1]|0)>>>0:0))){l=r+300|0;j=c[l>>2]|0;if(j|0){c[l>>2]=c[j>>2];i=r+284|0;c[i>>2]=(c[i>>2]|0)+1;break c}l=r+296|0;j=c[l>>2]|0;if(!j){j=r+292|0;break}else{c[l>>2]=c[j>>2];i=r+284|0;c[i>>2]=(c[i>>2]|0)+1;break c}}else j=r+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;p=25}while(0);if((p|0)==25)j=_d(r,m,n)|0;if(!j)j=0;else{ew(j|0,h|0,k|0)|0;a[j+k>>0]=0}}while(0);p=q+8|0;c[p>>2]=j;c[q+12>>2]=g;c[q+4>>2]=4096;j=dk(r,q,1,0)|0;c[o>>2]=j;j=c[p>>2]|0;do if(j|0){if(r|0){if(c[r+480>>2]|0){Xd(r,j);break}p=j;if((c[r+304>>2]|0)>>>0<=p>>>0?(c[r+308>>2]|0)>>>0>p>>>0:0){p=r+300|0;c[j>>2]=c[p>>2];c[p>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{p=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0)}while(0);if((d[f+200>>0]|0)>1?(p=q+8|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[q>>2]=f,c[q+4>>2]=124,g|0):0)_j(q,g)|0;if(!g){Ra=s;return}ni(r,g);Ra=s;return}function ej(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0;n=Ra;Ra=Ra+16|0;m=n;if(((g|0)==44?(c[f+36>>2]|0)==0:0)?(d[f+200>>0]|0)<=1:0){j=Xk(c[f>>2]|0,h,i)|0;if(!j){m=0;Ra=n;return m|0}else k=f}else l=4;a:do if((l|0)==4){j=c[f>>2]|0;b:do if(c[j+272>>2]|0){if(!(a[j+81>>0]|0))l=14}else{do if((e[j+276>>1]|0)>=52){k=j+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];j=j+284|0;c[j>>2]=(c[j>>2]|0)+1;j=l;l=15;break b}k=j+296|0;l=c[k>>2]|0;if(!l){k=j+292|0;break}else{c[k>>2]=c[l>>2];j=j+284|0;c[j>>2]=(c[j>>2]|0)+1;j=l;l=15;break b}}else k=j+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;l=14}while(0);if((l|0)==14){j=_d(j,52,0)|0;l=15}do if((l|0)==15){if(!j){j=c[f>>2]|0;break}k=j;l=k+52|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(l|0));a[j>>0]=g;b[j+34>>1]=-1;if(!i)k=0;else{c[j+16>>2]=i;k=c[i+4>>2]&2097412;c[j+4>>2]=k}if(h|0){c[j+12>>2]=h;c[j+4>>2]=k|c[h+4>>2]&2097412}Ym(j);k=f;break a}while(0);if(h|0)ni(j,h);if(!i){m=0;Ra=n;return m|0}ni(j,i);m=0;Ra=n;return m|0}while(0);k=c[(c[k>>2]|0)+120>>2]|0;if((k|0)>=(c[j+24>>2]|0)){m=j;Ra=n;return m|0}c[m>>2]=k;cd(f,41637,m);m=j;Ra=n;return m|0}function fj(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=h;l=c[f>>2]|0;m=i+53|0;a:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))p=11;else{q=0;return q|0}else{do if(!(0<0|(0==0?(e[l+276>>1]|0)>>>0>>0:0))){j=l+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];o=l+284|0;c[o>>2]=(c[o>>2]|0)+1;o=k;break a}j=l+296|0;k=c[j>>2]|0;if(!k){j=l+292|0;break}else{c[j>>2]=c[k>>2];o=l+284|0;c[o>>2]=(c[o>>2]|0)+1;o=k;break a}}else j=l+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;p=11}while(0);if((p|0)==11)o=_d(l,m,0)|0;if(!o){q=o;return q|0}a[o>>0]=g;a[o+1>>0]=0;k=o+4|0;c[k>>2]=8388608;b[o+34>>1]=-1;c[o+16>>2]=0;c[o+12>>2]=0;c[o+20>>2]=0;c[o+40>>2]=0;c[o+44>>2]=0;a[o+38>>0]=0;c[o+28>>2]=0;b[o+32>>1]=0;j=o+52|0;g=o+8|0;c[g>>2]=j;ew(j|0,h|0,i|0)|0;a[j+i>>0]=0;g=c[g>>2]|0;j=a[g>>0]|0;if(((a[880+(j&255)>>0]|0)<0?(c[k>>2]=(j<<24>>24==34?67108928:67108864)|c[k>>2],g|0):0)?(n=a[g>>0]|0,(a[880+(n&255)>>0]|0)<0):0){m=n<<24>>24==91?93:n;l=0;j=1;while(1){k=a[g+j>>0]|0;if(k<<24>>24==m<<24>>24){j=j+1|0;k=g+l|0;if((a[g+j>>0]|0)!=m<<24>>24)break;a[k>>0]=m}else a[g+l>>0]=k;l=l+1|0;j=j+1|0}a[k>>0]=0}c[o+24>>2]=1;if((d[f+200>>0]|0)<=1){q=o;return q|0}l=c[f>>2]|0;b:do if(!l){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](16)|0;p=47;break}j=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){n=c[14978]|0;h=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;g=L()|0;c[14768]=((g|0)<0|(g|0)==0&h>>>0<=n>>>0)&1}j=Wa[c[29340>>2]&127](j)|0;if(!j){q=o;return q|0}k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0)c[14987]=k}else{if(c[l+272>>2]|0){if(a[l+81>>0]|0){q=o;return q|0}}else{do if((e[l+276>>1]|0)>=16){k=l+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];p=l+284|0;c[p>>2]=(c[p>>2]|0)+1;p=47;break b}k=l+296|0;j=c[k>>2]|0;if(!j){j=l+292|0;break}else{c[k>>2]=c[j>>2];p=l+284|0;c[p>>2]=(c[p>>2]|0)+1;p=47;break b}}else j=l+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(l,16,0)|0;p=47}while(0);if((p|0)==47)if(!j){q=o;return q|0}c[j>>2]=o;c[j+4>>2]=q;c[j+8>>2]=i;q=f+272|0;c[j+12>>2]=c[q>>2];c[q>>2]=j;q=o;return q|0}function gj(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var 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;B=Ra;Ra=Ra+16|0;w=B+8|0;k=B;y=c[e+228>>2]|0;do if(!y)A=60;else{z=y+36|0;j=c[z>>2]|0;if(j&4|0){c[k>>2]=c[y>>2];cd(e,41817,k);A=60;break}x=j|4;c[z>>2]=x;if(f){v=c[f>>2]|0;if((v|0)>0){t=y+42|0;u=y+4|0;l=0;m=-1;s=0;while(1){j=c[f+4+(s*20|0)>>2]|0;a:do if(!j)j=0;else while(1){k=c[j+4>>2]|0;if(!(k&4096))break a;if(!(k&262144))j=j+12|0;else j=(c[j+20>>2]|0)+4|0;j=c[j>>2]|0;if(!j){j=0;break}}while(0);k=a[j>>0]|0;switch(k<<24>>24){case 110:{a[j>>0]=59;A=20;break}case 106:{k=c[j+12>>2]|0;if((a[k>>0]|0)==110){a[k>>0]=59;k=a[j>>0]|0;A=19}else j=m;break}default:A=19}if((A|0)==19){A=0;if(k<<24>>24==59)A=20;else j=m}b:do if((A|0)==20){A=0;o=c[j+8>>2]|0;j=b[t>>1]|0;if(j<<16>>16>0){r=c[u>>2]|0;n=a[o>>0]|0;q=a[208+(n&255)>>0]|0;p=j<<16>>16;c:do if(!(n<<24>>24)){j=0;while(1){if(q<<24>>24==(a[208+(d[c[r+(j<<4)>>2]>>0]|0)>>0]|0))break c;j=j+1|0;if((j|0)>=(p|0))break b}}else{j=0;while(1){k=c[r+(j<<4)>>2]|0;if(q<<24>>24==(a[208+(d[k>>0]|0)>>0]|0)){m=o;do{m=m+1|0;k=k+1|0;C=a[m>>0]|0;n=(d[208+(C&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(C<<24>>24==0|(n|0)!=0));if(!n)break c}j=j+1|0;if((j|0)>=(p|0))break b}}while(0);l=r+(j<<4)+15|0;a[l>>0]=a[l>>0]|1;l=r+(j<<4)|0}else j=0}while(0);s=s+1|0;if((s|0)==(v|0))break;else m=j}m=(v|0)==1;n=j;A=34}}else{n=(b[y+42>>1]|0)+-1|0;l=c[y+4>>2]|0;m=l+(n<<4)+15|0;a[m>>0]=a[m>>0]|1;m=1;l=l+(n<<4)|0;A=34}if((A|0)==34?m&(l|0)!=0:0){if(!(a[l+15>>0]&4))k=59952;else{k=c[l>>2]|0;k=k+(Eu(k)|0)+1|0}C=a[k>>0]|0;j=(d[208+(C&255)>>0]|0)+-105|0;if(!(C<<24>>24==0|(j|0)!=0)){l=31453;do{k=k+1|0;l=l+1|0;C=a[k>>0]|0;j=(d[208+(C&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(C<<24>>24==0|(j|0)!=0))}if((i|0)!=1&(j|0)==0){m=(f|0)!=0;d:do if(m&(d[e+200>>0]|0)>1){j=c[f+4>>2]|0;e:do if(!j)l=0;else while(1){k=c[j+4>>2]|0;if(!(k&4096)){l=j;break e}if(!(k&262144))j=j+12|0;else j=(c[j+20>>2]|0)+4|0;j=c[j>>2]|0;if(!j){l=0;break}}while(0);j=y+40|0;k=c[e+272>>2]|0;if(k){while(1){if((c[k>>2]|0)==(l|0))break;k=c[k+12>>2]|0;if(!k)break d}c[k>>2]=j}}else j=y+40|0;while(0);b[j>>1]=n;a[y+48>>0]=g;c[z>>2]=x|h<<3;if(m){a[e+198>>0]=a[f+16>>0]|0;break}else{Ra=B;return}}}if(h|0){cd(e,41858,w);A=60;break}hj(e,0,0,0,f,g,0,0,i,0,2);Ra=B;return}while(0);if((A|0)==60?(f|0)==0:0){Ra=B;return}ri(c[e>>2]|0,f);Ra=B;return}function hj(f,g,h,i,j,k,l,m,n,o,p){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|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,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;ya=Ra;Ra=Ra+416|0;ta=ya+320|0;sa=ya+296|0;ra=ya+280|0;oa=ya+272|0;na=ya+256|0;ma=ya+248|0;ga=ya+240|0;fa=ya+232|0;ba=ya+224|0;aa=ya+216|0;Y=ya+208|0;U=ya+200|0;T=ya+192|0;S=ya+184|0;Q=ya+176|0;P=ya+168|0;M=ya+160|0;N=ya+152|0;K=ya+144|0;J=ya+136|0;I=ya+128|0;H=ya+120|0;G=ya+112|0;D=ya+104|0;A=ya+96|0;y=ya+88|0;x=ya+80|0;pa=ya+384|0;_=ya;$=ya+352|0;B=ya+328|0;xa=c[f>>2]|0;la=xa+81|0;a:do if(((a[la>>0]|0)==0?(ca=f+36|0,(c[ca>>2]|0)<=0):0)?(ua=f+200|0,da=p<<24>>24==2,da|(a[ua>>0]|0)!=1):0){va=xa+165|0;b:do if(!(a[va>>0]|0)){s=f+4|0;t=xa+24|0;u=(c[t>>2]&1|0)==0;v=xa+16|0;qa=c[(c[v>>2]|0)+12>>2]|0;a[xa+78>>0]=a[qa+77>>0]|0;if(!((b[qa+78>>1]&1)==0?(q=eh(xa,0,s,0)|0,(q|0)!=0):0))wa=7;c:do if((wa|0)==7){q=c[xa+20>>2]|0;if((q|0)>1)do{r=q;q=q+-1|0;if((b[(c[(c[v>>2]|0)+(q<<4)+12>>2]|0)+78>>1]&1)==0?(w=eh(xa,q,s,0)|0,w|0):0){q=w;break c}}while((r|0)>2);if(u)c[t>>2]=c[t>>2]&-2;if(!(a[xa+89>>0]|0))break b;c[t>>2]=c[t>>2]|16;break b}while(0);c[f+12>>2]=q;c[ca>>2]=(c[ca>>2]|0)+1;r=m;q=0;wa=468;break a}while(0);qa=(i|0)!=0;d:do if(qa){q=c[f>>2]|0;z=h+4|0;if(c[z>>2]|0){if(a[q+165>>0]|0){cd(f,39404,x);r=m;q=0;wa=468;break a}q=wk(q,g)|0;if((q|0)<0){c[y>>2]=g;cd(f,39421,y);r=m;q=0;wa=468;break a}else{u=q;g=h}}else u=d[q+164>>0]|0;y=i+8|0;e:do if(!(a[va>>0]|0)){r=c[y>>2]|0;if(!r)q=i+12|0;else{s=c[(c[f>>2]|0)+16>>2]|0;q=0;while(1)if((c[s+(q<<4)+12>>2]|0)==(r|0))break;else q=q+1|0;q=s+(q<<4)|0}x=bd(f,0,c[i+16>>2]|0,c[q>>2]|0)|0;q=c[f>>2]|0;r=i+24|0;s=c[r>>2]|0;do if(s|0){if(q|0?c[q+480>>2]|0:0){Vi(q,s);break}ja=s+32|0;ka=(c[ja>>2]|0)+-1|0;c[ja>>2]=ka;if(!ka)Vi(q,s)}while(0);c[r>>2]=x;if(x){ka=x+32|0;c[ka>>2]=(c[ka>>2]|0)+1;f:do if(a[i+45>>0]&2){v=c[i+72>>2]|0;q=c[x+8>>2]|0;g:do if(q|0){w=d[208+(d[v>>0]|0)>>0]|0;while(1){s=c[q>>2]|0;ka=a[s>>0]|0;r=(d[208+(ka&255)>>0]|0)-w|0;if(!(ka<<24>>24==0|(r|0)!=0)){t=v;do{s=s+1|0;t=t+1|0;ka=a[s>>0]|0;r=(d[208+(ka&255)>>0]|0)-(d[208+(d[t>>0]|0)>>0]|0)|0}while(!(ka<<24>>24==0|(r|0)!=0))}if(!r)break;q=c[q+20>>2]|0;if(!q)break g}c[i+76>>2]=q;break f}while(0);c[A>>2]=v;c[A+4>>2]=0;cd(f,41107,A);a[f+17>>0]=1;break e}while(0);if(!(c[z>>2]|0))u=(c[x+72>>2]|0)==(c[(c[xa+16>>2]|0)+28>>2]|0)?1:u}}while(0);t=c[f>>2]|0;c[B>>2]=f;t=c[t+16>>2]|0;c[B+12>>2]=c[t+(u<<4)>>2];c[B+4>>2]=c[t+(u<<4)+12>>2];c[B+16>>2]=41914;c[B+20>>2]=g;t=(u|0)==1;c[B+8>>2]=t&1;al(B,i)|0;r=c[y>>2]|0;if(!r)q=i+12|0;else{s=c[(c[f>>2]|0)+16>>2]|0;q=0;while(1)if((c[s+(q<<4)+12>>2]|0)==(r|0))break;else q=q+1|0;q=s+(q<<4)|0}r=bd(f,0,c[i+16>>2]|0,c[q>>2]|0)|0;if(!r){r=m;q=0;wa=468;break a}if(t?(c[(c[xa+16>>2]|0)+28>>2]|0)!=(c[r+72>>2]|0):0){c[D>>2]=c[r>>2];cd(f,41920,D);r=m;q=0;wa=468;break a}if((c[r+36>>2]&32|0)!=0?(C=c[r+8>>2]|0,(C|0)!=0):0){q=C;while(1){ka=q+55|0;if(((d[ka>>0]|d[ka+1>>0]<<8)&3)==2){ka=r;Z=q;ja=u;ha=g;break d}q=c[q+20>>2]|0;if(!q){ka=r;Z=0;ja=u;ha=g;break}}}else{ka=r;Z=0;ja=u;ha=g}}else{q=c[f+228>>2]|0;if(!q){r=m;q=0;wa=468;break a}r=c[q+72>>2]|0;if(!r){ka=q;Z=0;ja=-1e6;ha=0}else{s=c[xa+16>>2]|0;t=0;while(1)if((c[s+(t<<4)+12>>2]|0)==(r|0)){ka=q;Z=0;ja=t;ha=0;break}else t=t+1|0}}while(0);ia=xa+16|0;A=c[ia>>2]|0;t=A+(ja<<4)|0;s=c[ka>>2]|0;do if(s|0){q=a[s>>0]|0;h:do if(!(q<<24>>24)){q=39441;wa=69}else{ea=q&255;q=208+ea|0;do if((ea|32|0)==115){q=a[s+1>>0]|0;if(!(q<<24>>24)){q=39442;wa=69;break h}ea=q&255;q=208+ea|0;if((ea|32|0)==113){q=a[s+2>>0]|0;if(!(q<<24>>24)){q=39443;wa=69;break h}ea=q&255;q=208+ea|0;if((ea|32|0)==108){q=a[s+3>>0]|0;if(!(q<<24>>24)){q=39444;wa=69;break h}ea=q&255;q=208+ea|0;if((ea|32|0)==105){q=a[s+4>>0]|0;if(!(q<<24>>24)){q=39445;wa=69;break h}ea=q&255;q=208+ea|0;if((ea|32|0)==116){q=a[s+5>>0]|0;if(!(q<<24>>24)){q=39446;wa=69;break h}q=q&255;if((q|32|0)!=101){r=101;q=208+q|0;break}q=a[s+6>>0]|0;if(!(q<<24>>24)){q=39447;wa=69;break h}if(q<<24>>24==95)break h;else{r=95;q=208+(q&255)|0}}else r=116}else r=105}else r=108}else r=113}else r=115;while(0);F=d[q>>0]|0;E=r;wa=73}while(0);if((wa|0)==69){F=0;E=a[208+(d[q>>0]|0)>>0]|0;wa=73}if((wa|0)==73?(F|0)!=(E&255|0):0)break;if(qa&(a[va>>0]|0)==0){c[G>>2]=s;cd(f,41970,G);r=m;q=0;wa=468;break a}}while(0);if(c[ka+12>>2]|0){cd(f,41998,H);r=m;q=0;wa=468;break}if(c[ka+56>>2]|0){cd(f,42023,I);r=m;q=0;wa=468;break}if(!ha){q=c[ka+8>>2]|0;if(!q)q=1;else{r=1;do{r=r+1|0;q=c[q+20>>2]|0}while((q|0)!=0);q=r}c[M>>2]=s;c[M+4>>2]=q;q=dd(xa,42115,M)|0;if(!q){r=m;q=0;wa=468;break}if(a[ua>>0]|0){r=q+7|0;a[r>>0]=(a[r>>0]|0)+1<<24>>24;r=a[ua>>0]|0;if((r&255)<=1)wa=124}else{r=0;wa=124}}else{y=qj(xa,ha)|0;if(!y){r=m;q=0;wa=468;break}if(vk(f,y)|0){r=m;q=y;wa=468;break}r=a[ua>>0]|0;if((r&255)<=1){if((a[va>>0]|0)==0?Sd(xa,y,0)|0:0){c[J>>2]=y;cd(f,42057,J);r=m;q=y;wa=468;break}if(!(hi(xa,y,c[t>>2]|0)|0)){q=y;wa=124}else{if(!o){c[K>>2]=y;cd(f,42091,K);r=m;q=y;wa=468;break}t=c[f+116>>2]|0;t=(t|0)==0?f:t;q=t+84|0;r=c[q>>2]|0;s=1<>2]=r|s;if((ja|0)!=1){r=m;q=y;wa=468;break}x=c[t>>2]|0;q=x+16|0;if(c[(c[q>>2]|0)+20>>2]|0){r=m;q=y;wa=468;break}if(a[t+199>>0]|0){r=m;q=y;wa=468;break}r=Pe(c[x>>2]|0,0,x,pa,0,542)|0;if(r|0){cd(t,32157,N);c[t+12>>2]=r;r=m;q=y;wa=468;break}k=c[pa>>2]|0;c[(c[q>>2]|0)+20>>2]=k;q=c[x+92>>2]|0;t=c[k+4>>2]|0;c[t+4>>2]=c[k>>2];do if(!(b[t+22>>1]&2)){u=t+32|0;v=t+36|0;w=(c[u>>2]|0)-(c[v>>2]|0)|0;do if((q+-512|0)>>>0<65025){if(q+-1&q|0)break;c[u>>2]=q;s=t+80|0;q=c[s>>2]|0;if(!q)break;r=q+-4|0;c[s>>2]=r;q=r;do if((c[14816]|0)>>>0<=q>>>0)if((c[14817]|0)>>>0>q>>>0){c[14979]=(c[14979]|0)+-1;c[r>>2]=c[14819];c[14819]=r;k=(c[14820]|0)+1|0;c[14820]=k;c[14821]=(k|0)<(c[14815]|0)&1;break}else{q=Wa[c[29352>>2]&127](r)|0;wa=105;break}else{q=Wa[c[29352>>2]&127](r)|0;wa=105}while(0);do if((wa|0)==105){c[14980]=(c[14980]|0)-q;if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{wa=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-wa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);c[s>>2]=0}while(0);wa=Se(c[t>>2]|0,u,w)|0;c[v>>2]=(c[u>>2]|0)-(w&65535);if((wa|0)!=7)break;q=x+81|0;do if(!(a[q>>0]|0)){if(a[x+82>>0]|0)break;a[q>>0]=1;if((c[x+180>>2]|0)>0)c[x+264>>2]=1;q=x+272|0;c[q>>2]=(c[q>>2]|0)+1;q=c[x+236>>2]|0;if(!q)break;c[q+12>>2]=7}while(0);r=m;q=y;wa=468;break a}while(0);r=m;q=y;wa=468;break}}else q=y}do if((wa|0)==124){w=c[t>>2]|0;v=(ja|0)==1;s=v?34855:34585;t=c[f>>2]|0;u=a[t+165>>0]|0;if((u|r)<<24>>24==0?(O=c[t+312>>2]|0,(O|0)!=0):0){r=$a[O&127](c[t+316>>2]|0,18,s,0,w,c[f+240>>2]|0)|0;if((r|0)==1){cd(f,39216,P);c[f+12>>2]=23;r=m;wa=468;break a}if((r|2|0)!=2){cd(f,39231,Q);c[f+12>>2]=1;r=m;wa=468;break a}if(r|0){r=m;wa=468;break a}t=c[f>>2]|0;u=a[t+165>>0]|0}s=v?3:1;r=c[ka>>2]|0;if((u<<24>>24==0?(a[ua>>0]|0)==0:0)?(R=c[t+312>>2]|0,(R|0)!=0):0){r=$a[R&127](c[t+316>>2]|0,s,q,r,w,c[f+240>>2]|0)|0;if((r|0)==1){cd(f,39216,S);c[f+12>>2]=23;r=m;wa=468;break a}if((r|2|0)==2)if(!r)break;else{r=m;wa=468;break a}else{cd(f,39231,T);c[f+12>>2]=1;r=m;wa=468;break a}}}while(0);if(j){if((c[j>>2]|0)>(c[(c[f>>2]|0)+116>>2]|0)){c[U>>2]=41914;cd(f,44753,U)}if(!(c[ca>>2]|0))T=j;else{r=m;wa=468;break}}else{ea=c[ka+4>>2]|0;j=(b[ka+42>>1]|0)+-1|0;X=ea+(j<<4)+15|0;a[X>>0]=a[X>>0]|8;j=c[ea+(j<<4)>>2]|0;c[pa>>2]=j;if(!j)j=0;else j=(Eu(j)|0)&1073741823;c[pa+4>>2]=j;r=oj(xa,59,pa,0)|0;r=nj(c[f>>2]|0,0,r)|0;if(!r){r=m;j=0;wa=468;break}if((n|0)<0)j=r;else{a[r+4+(((c[r>>2]|0)+-1|0)*20|0)+12>>0]=n;j=r}T=r}u=c[j>>2]|0;if((u|0)>0){t=0;r=0;do{s=c[T+4+(t*20|0)>>2]|0;if((a[s>>0]|0)==106){s=c[s+8>>2]|0;if(!s)s=0;else s=(Eu(s)|0)&1073741823;r=r+1+s|0}t=t+1|0}while((t|0)!=(u|0));if(!q)t=0;else wa=160}else{r=0;wa=160}if((wa|0)==160)t=(Eu(q)|0)&1073741823;V=(Z|0)!=0;if(V)s=e[Z+50>>1]|0;else s=1;y=s+u|0;v=y&65535;y=y<<16;w=y>>16;x=(y>>14)+7&-8;y=y>>15;g=y+2|0;h=x+72+(w+7+y+g&-8)|0;z=t+1|0;u=z+r+h|0;t=((u|0)<0)<<31>>31;ea=(xa|0)==0;i:do if(ea){X=Sv(u|0,t|0,-1,-1)|0;W=L()|0;if(!(W>>>0>0|(W|0)==0&X>>>0>2147483390)){if(!(c[7324]|0)){r=Wa[c[29340>>2]&127](u)|0;wa=187;break}r=Wa[c[29356>>2]&127](u)|0;if((c[14985]|0)>>>0>>0)c[14985]=u;t=59064;s=c[t>>2]|0;t=c[t+4>>2]|0;if((t|0)>0|(t|0)==0&s>>>0>0){X=c[14978]|0;W=Tv(s|0,t|0,r|0,((r|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&W>>>0<=X>>>0)&1}r=Wa[c[29340>>2]&127](r)|0;if(r){s=Wa[c[29352>>2]&127](r)|0;s=(c[14978]|0)+s|0;c[14978]=s;if(s>>>0>(c[14982]|0)>>>0)c[14982]=s;s=(c[14981]|0)+1|0;c[14981]=s;if(s>>>0<=(c[14987]|0)>>>0){wa=188;break}c[14987]=s;wa=188}else{s=0;t=0;r=0}}else{s=0;t=0;r=0}}else{if(c[xa+272>>2]|0){if(a[la>>0]|0){r=m;j=T;wa=468;break a}}else{do if(!(0>>0|(0==(t|0)?(e[xa+276>>1]|0)>>>0>>0:0))){s=xa+300|0;r=c[s>>2]|0;if(r|0){c[s>>2]=c[r>>2];wa=xa+284|0;c[wa>>2]=(c[wa>>2]|0)+1;wa=187;break i}s=xa+296|0;r=c[s>>2]|0;if(!r){r=xa+292|0;break}else{c[s>>2]=c[r>>2];wa=xa+284|0;c[wa>>2]=(c[wa>>2]|0)+1;wa=187;break i}}else r=xa+288|0;while(0);c[r>>2]=(c[r>>2]|0)+1}r=_d(xa,u,t)|0;wa=187}while(0);if((wa|0)==187)if(!r){s=0;t=0;r=0}else wa=188;if((wa|0)==188){gw(r|0,0,u|0)|0;s=r+72|0;c[r+32>>2]=s;s=s+x|0;c[r+8>>2]=s;s=s+g|0;c[r+4>>2]=s;c[r+28>>2]=s+y;b[r+52>>1]=v;b[r+50>>1]=w+65535;s=r;t=r+h|0}j:do if(!(a[la>>0]|0)){c[s>>2]=t;U=t;x=U+z|0;ew(U|0,q|0,z|0)|0;U=s+12|0;c[U>>2]=ka;W=s+54|0;a[W>>0]=k;X=s+55|0;p=p&3;n=((k|0)!=0&1)<<3&65535|p|(d[X>>0]|d[X+1>>0]<<8)&-12;a[X>>0]=n;a[X+1>>0]=n>>8;c[s+24>>2]=c[(c[ia>>2]|0)+(ja<<4)+12>>2];n=s+50|0;b[n>>1]=c[j>>2];if(m|0){c[$>>2]=0;c[$+4>>2]=0;c[$+8>>2]=0;c[$+12>>2]=0;c[$+16>>2]=0;c[$+20>>2]=0;c[$+24>>2]=0;c[$+28>>2]=0;h=_;z=h+80|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(z|0));if(ka|0){c[_>>2]=1;c[_+16>>2]=c[ka>>2];c[_+24>>2]=ka;c[_+48>>2]=-1}c[$>>2]=f;c[$+4>>2]=_;j=$+24|0;b[j>>1]=2;c[pa>>2]=f;c[pa+4>>2]=125;c[pa+8>>2]=126;c[pa+12>>2]=0;c[pa+24>>2]=$;t=m+24|0;u=f+208|0;S=(c[u>>2]|0)+(c[t>>2]|0)|0;c[u>>2]=S;u=c[(c[f>>2]|0)+120>>2]|0;if((u|0)<(S|0)){c[Y>>2]=u;cd(f,41637,Y)}else{_j(pa,m)|0;Y=(c[pa>>2]|0)+208|0;c[Y>>2]=(c[Y>>2]|0)-(c[t>>2]|0);Y=m+4|0;c[Y>>2]=c[Y>>2]|b[j>>1]&-32752&65535}c[s+36>>2]=m}g=(d[(c[A+(ja<<4)+12>>2]|0)+76>>0]|0)>3;if((d[ua>>0]|0)>1){c[s+40>>2]=T;j=0}else j=T;k:do if(!(b[n>>1]|0)){u=0;w=0}else{A=(ka|0)==0;B=$+4|0;C=$+24|0;D=_+16|0;E=_+24|0;F=_+48|0;G=pa+4|0;H=pa+8|0;I=pa+12|0;o=pa+24|0;J=f+228|0;K=ka+40|0;M=s+4|0;N=ka+4|0;O=s+40|0;P=s+32|0;Q=s+28|0;R=f;S=f+208|0;y=T+4|0;u=0;while(1){w=c[y>>2]|0;l:do switch(a[w>>0]|0){case 110:{a[w>>0]=59;break}case 106:{t=c[w+12>>2]|0;if((a[t>>0]|0)!=110)break l;a[t>>0]=59;break}default:{}}while(0);c[$>>2]=0;c[$+4>>2]=0;c[$+8>>2]=0;c[$+12>>2]=0;c[$+16>>2]=0;c[$+20>>2]=0;c[$+24>>2]=0;c[$+28>>2]=0;h=_;z=h+80|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(z|0));if(!A){c[_>>2]=1;c[D>>2]=c[ka>>2];c[E>>2]=ka;c[F>>2]=-1}c[$>>2]=f;c[B>>2]=_;b[C>>1]=32;do if(w|0){b[C>>1]=32;c[pa>>2]=R;c[G>>2]=125;c[H>>2]=126;c[I>>2]=0;c[o>>2]=$;t=w+24|0;m=(c[S>>2]|0)+(c[t>>2]|0)|0;c[S>>2]=m;v=c[(c[f>>2]|0)+120>>2]|0;if((v|0)<(m|0)){c[aa>>2]=v;cd(f,41637,aa);break}else{_j(pa,w)|0;m=(c[pa>>2]|0)+208|0;c[m>>2]=(c[m>>2]|0)-(c[t>>2]|0);m=w+4|0;c[m>>2]=c[m>>2]|b[C>>1]&-32752&65535;break}}while(0);if(c[ca>>2]|0){u=0;v=s;t=r;break j}t=c[y>>2]|0;m:do if(!t)t=0;else while(1){v=c[t+4>>2]|0;if(!(v&4096))break m;if(!(v&262144))t=t+12|0;else t=(c[t+20>>2]|0)+4|0;t=c[t>>2]|0;if(!t){t=0;break}}while(0);if((a[t>>0]|0)==-94){m=b[t+32>>1]|0;t=m<<16>>16;do if(m<<16>>16<0)t=b[K>>1]|0;else{if(a[(c[N>>2]|0)+(t<<4)+12>>0]|0)break;m=(d[X>>0]|d[X+1>>0]<<8)&-9;a[X>>0]=m;a[X+1>>0]=m>>8}while(0);b[(c[M>>2]|0)+(u<<1)>>1]=t}else{if((ka|0)==(c[J>>2]|0))break;if(!(c[O>>2]|0)){c[O>>2]=j;j=0}b[(c[M>>2]|0)+(u<<1)>>1]=-2;t=(d[X>>0]|d[X+1>>0]<<8)&-9;a[X>>0]=t;a[X+1>>0]=t>>8;t=-2}v=c[y>>2]|0;do if((a[v>>0]|0)==106){v=c[v+8>>2]|0;if(!v)t=0;else t=(Eu(v)|0)&1073741823;m=t+1|0;ew(x|0,v|0,m|0)|0;t=x;x=x+m|0}else{if((t|0)<=-1){t=0;break}t=c[(c[N>>2]|0)+(t<<4)+8>>2]|0}while(0);w=(t|0)==0?34049:t;n:do if(!(a[va>>0]|0)){t=c[f>>2]|0;v=a[t+78>>0]|0;m=a[t+165>>0]|0;t=Zi(t,v,w,m&255)|0;do if(!(m<<24>>24)){if(!t){t=_i(f,v,0,w)|0;break}if(c[t+12>>2]|0)break n;t=_i(f,v,t,w)|0}while(0);if(!t){u=0;v=s;t=r;break j}}while(0);c[(c[P>>2]|0)+(u<<2)>>2]=w;a[(c[Q>>2]|0)+u>>0]=g?a[y+12>>0]|0:0;u=u+1|0;w=b[n>>1]|0;if(u>>>0<(w&65535)>>>0)y=y+20|0;else break k}cd(f,42138,ba);u=0;wa=432;break j}while(0);o:do if(V){B=Z+50|0;v=b[B>>1]|0;if(!(v<<16>>16))break;C=Z+4|0;D=s+4|0;E=Z+32|0;F=s+32|0;h=Z+28|0;z=s+28|0;A=s+52|0;t=0;while(1){y=b[(c[C>>2]|0)+(t<<1)>>1]|0;g=c[D>>2]|0;p:do if(!(w<<16>>16))wa=252;else{x=g;w=w&65535;while(1){if((b[x>>1]|0)==y<<16>>16)break;if((w|0)>1){x=x+2|0;w=w+-1|0}else{wa=252;break p}}b[A>>1]=(b[A>>1]|0)+-1<<16>>16}while(0);if((wa|0)==252){wa=0;b[g+(u<<1)>>1]=y;c[(c[F>>2]|0)+(u<<2)>>2]=c[(c[E>>2]|0)+(t<<2)>>2];a[(c[z>>2]|0)+u>>0]=a[(c[h>>2]|0)+t>>0]|0;u=u+1|0;v=b[B>>1]|0}t=t+1|0;if(t>>>0>=(v&65535)>>>0)break o;w=b[n>>1]|0}}else{b[(c[s+4>>2]|0)+(u<<1)>>1]=-1;c[(c[s+32>>2]|0)+(u<<2)>>2]=34049}while(0);v=c[s+8>>2]|0;u=b[n>>1]|0;u=(u&65535)<5?u:5;t=b[(c[U>>2]|0)+44>>1]|0;b[v>>1]=t;if(c[s+36>>2]|0){t=(t&65535)+65526&65535;b[v>>1]=t}if(t<<16>>16<33)b[v>>1]=33;ew(v+2|0,31120,u<<1&65535|0)|0;ca=b[n>>1]|0;t=ca&65535;if((u&65535)<(ca&65535)){t=u&65535;do{t=t+1|0;b[v+(t<<1)>>1]=23;u=b[n>>1]|0}while(t>>>0<(u&65535)>>>0);t=u&65535}if(a[W>>0]|0)b[v+(t<<1)>>1]=0;B=f+228|0;if(!(c[B>>2]|0))xk(s);x=b[s+52>>1]|0;A=x<<16>>16==0;if(A){u=-1;t=-1}else{u=c[s+4>>2]|0;t=x&65535;v=0;w=0;do{ca=t;t=t+-1|0;$=b[u+(t<<1)>>1]|0;aa=($&65535)<63;$=cw(1,0,$<<16>>16|0)|0;ba=L()|0;v=(aa?$:0)|v;w=(aa?ba:0)|w}while((ca|0)>1);u=~v;t=~w}ca=s+64|0;c[ca>>2]=u;c[ca+4>>2]=t;q:do if(qa){h=x&65535;t=ka+42|0;if((h|0)<(b[t>>1]|0))break;z=d[X>>0]|d[X+1>>0]<<8;ca=z|32;a[X>>0]=ca;a[X+1>>0]=ca>>8;t=b[t>>1]|0;if(t<<16>>16<=0)break;u=b[ka+40>>1]|0;y=u<<16>>16;g=s+4|0;r:do if(A){if(!((y+1|0)<(t<<16>>16|0)|u<<16>>16==0^1))break q}else{v=t<<16>>16;u=0;while(1){if((u|0)!=(y|0)){w=u&65535;x=c[g>>2]|0;t=0;while(1){if((b[x+(t<<1)>>1]|0)==w<<16>>16)break;t=t+1|0;if(t>>>0>=h>>>0)break r}if((t&65535)<<16>>16<=-1)break r}u=u+1|0;if((u|0)>=(v|0))break q}}while(0);ca=z&-33;a[X>>0]=ca;a[X+1>>0]=ca>>8}while(0);s:do if((ka|0)==(c[B>>2]|0)){t=c[ka+8>>2]|0;if(!t){v=s;E=r;t=r;break}C=f+232|0;t:do if(da){B=t;t=r;while(1){u=b[B+50>>1]|0;do if(u<<16>>16==(b[s+50>>1]|0)){A=u&65535;u:do if(!(u<<16>>16))u=0;else{y=c[B+4>>2]|0;g=c[s+4>>2]|0;h=B+32|0;z=s+32|0;u=0;do{if((b[y+(u<<1)>>1]|0)!=(b[g+(u<<1)>>1]|0))break u;w=c[(c[h>>2]|0)+(u<<2)>>2]|0;x=c[(c[z>>2]|0)+(u<<2)>>2]|0;ga=a[w>>0]|0;v=(d[208+(ga&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0;if(!(ga<<24>>24==0|(v|0)!=0))do{w=w+1|0;x=x+1|0;ga=a[w>>0]|0;v=(d[208+(ga&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0}while(!(ga<<24>>24==0|(v|0)!=0));if(v|0)break u;u=u+1|0}while(u>>>0>>0)}while(0);if((u|0)!=(A|0)){u=0;break}w=B+54|0;u=a[w>>0]|0;x=s+54|0;v=a[x>>0]|0;do if(u<<24>>24!=v<<24>>24){if(!(u<<24>>24==11|v<<24>>24==11)){c[fa>>2]=0;cd(f,42199,fa);u=a[w>>0]|0}if(u<<24>>24!=11)break;a[w>>0]=a[x>>0]|0}while(0);ga=B+55|0;da=(d[ga>>0]|d[ga+1>>0]<<8)&-4|p;a[ga>>0]=da;a[ga+1>>0]=da>>8;if((d[ua>>0]|0)<=1){u=2;break}c[s+20>>2]=c[C>>2];c[C>>2]=s;s=0;u=2;r=0;t=0}else u=20;while(0);switch(u&31){case 20:case 0:break;default:break t}B=c[B+20>>2]|0;if(!B){v=s;E=t;t=r;break s}}}else{B=t;t=r;while(1){u=b[B+50>>1]|0;do if(u<<16>>16==(b[s+50>>1]|0)){A=u&65535;v:do if(!(u<<16>>16))u=0;else{y=c[B+4>>2]|0;g=c[s+4>>2]|0;h=B+32|0;z=s+32|0;u=0;do{if((b[y+(u<<1)>>1]|0)!=(b[g+(u<<1)>>1]|0))break v;w=c[(c[h>>2]|0)+(u<<2)>>2]|0;x=c[(c[z>>2]|0)+(u<<2)>>2]|0;fa=a[w>>0]|0;v=(d[208+(fa&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0;if(!(fa<<24>>24==0|(v|0)!=0))do{w=w+1|0;x=x+1|0;fa=a[w>>0]|0;v=(d[208+(fa&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0}while(!(fa<<24>>24==0|(v|0)!=0));if(v|0)break v;u=u+1|0}while(u>>>0>>0)}while(0);if((u|0)!=(A|0)){u=0;break}w=B+54|0;u=a[w>>0]|0;x=s+54|0;v=a[x>>0]|0;do if(u<<24>>24!=v<<24>>24){if(!(u<<24>>24==11|v<<24>>24==11)){c[ga>>2]=0;cd(f,42199,ga);u=a[w>>0]|0}if(u<<24>>24!=11)break;a[w>>0]=a[x>>0]|0}while(0);if((d[ua>>0]|0)<=1){u=2;break}c[s+20>>2]=c[C>>2];c[C>>2]=s;s=0;u=2;r=0;t=0}else u=20;while(0);switch(u&31){case 20:case 0:break;default:break t}B=c[B+20>>2]|0;if(!B){v=s;E=t;t=r;break s}}}while(0);if(!u){v=s;E=t;t=r}else{u=0;wa=432;break j}}else{v=s;E=r;t=r}while(0);do if((d[ua>>0]|0)>1)wa=420;else{if(a[va>>0]|0){w:do if(qa){s=c[xa+160>>2]|0;c[v+44>>2]=s;r=c[(c[v+12>>2]|0)+8>>2]|0;if(!r)break;while(1){if(!((r|0)==(v|0)?1:(c[r+44>>2]|0)!=(s|0)))break;r=c[r+20>>2]|0;if(!r)break w}cd(f,35103,ma);c[na>>2]=32306;c[na+4>>2]=110349;c[na+8>>2]=31517;Db(11,32001,na);c[f+12>>2]=11;u=0;s=v;r=t;wa=432;break j}while(0);if(!(mi((c[v+24>>2]|0)+24|0,c[v>>2]|0,E)|0)){wa=xa+24|0;c[wa>>2]=c[wa>>2]|1;wa=420;break}if(a[la>>0]|0){u=0;break j}if(a[xa+82>>0]|0){u=0;break j}a[la>>0]=1;if((c[xa+180>>2]|0)>0)c[xa+264>>2]=1;r=xa+272|0;c[r>>2]=(c[r>>2]|0)+1;r=c[xa+236>>2]|0;if(!r){u=0;break j}c[r+12>>2]=7;u=0;break j}if(!(qa|(c[ka+36>>2]&32|0)==0))break;D=f+44|0;C=(c[D>>2]|0)+1|0;c[D>>2]=C;D=f+8|0;r=c[D>>2]|0;w=f+116|0;if(!r){u=c[f>>2]|0;do if(!(c[w>>2]|0)){if(b[u+76>>1]&8)break;a[f+23>>0]=1}while(0);x:do if(c[u+272>>2]|0)if(!(a[u+81>>0]|0))wa=360;else{u=0;s=v;r=t;wa=432;break j}else{do if((e[u+276>>1]|0)>=224){r=u+300|0;s=c[r>>2]|0;if(s|0){c[r>>2]=c[s>>2];na=u+284|0;c[na>>2]=(c[na>>2]|0)+1;break x}r=u+296|0;s=c[r>>2]|0;if(!s){r=u+292|0;break}else{c[r>>2]=c[s>>2];na=u+284|0;c[na>>2]=(c[na>>2]|0)+1;break x}}else r=u+288|0;while(0);c[r>>2]=(c[r>>2]|0)+1;wa=360}while(0);if((wa|0)==360)s=_d(u,224,0)|0;if(!s){u=0;s=v;r=t;wa=432;break j}h=s+104|0;z=h+120|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(z|0));c[s>>2]=u;r=u+4|0;u=c[r>>2]|0;if(u|0)c[u+4>>2]=s;c[s+8>>2]=u;c[s+4>>2]=0;c[r>>2]=s;c[s+20>>2]=381479589;c[s+12>>2]=f;c[D>>2]=s;Di(s,61,0,1,0)|0;B=s}else B=r;A=c[w>>2]|0;A=(A|0)==0?f:A;r=A+84|0;s=c[r>>2]|0;z=1<>2]=s|z;if((ja|0)!=1)break;h=c[A>>2]|0;r=h+16|0;if(c[(c[r>>2]|0)+20>>2]|0)break;if(a[A+199>>0]|0)break;s=Pe(c[h>>2]|0,0,h,pa,0,542)|0;if(s|0){cd(A,32157,oa);c[A+12>>2]=s;break}pa=c[pa>>2]|0;c[(c[r>>2]|0)+20>>2]=pa;r=c[h+92>>2]|0;w=c[pa+4>>2]|0;c[w+4>>2]=c[pa>>2];do if(!(b[w+22>>1]&2)){x=w+32|0;y=w+36|0;g=(c[x>>2]|0)-(c[y>>2]|0)|0;do if((r+-512|0)>>>0<65025){if(r+-1&r|0)break;c[x>>2]=r;u=w+80|0;r=c[u>>2]|0;if(!r)break;s=r+-4|0;c[u>>2]=s;r=s;do if((c[14816]|0)>>>0<=r>>>0)if((c[14817]|0)>>>0>r>>>0){c[14979]=(c[14979]|0)+-1;c[s>>2]=c[14819];c[14819]=s;pa=(c[14820]|0)+1|0;c[14820]=pa;c[14821]=(pa|0)<(c[14815]|0)&1;break}else{r=Wa[c[29352>>2]&127](s)|0;wa=380;break}else{r=Wa[c[29352>>2]&127](s)|0;wa=380}while(0);do if((wa|0)==380){c[14980]=(c[14980]|0)-r;if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{wa=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-wa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}}while(0);c[u>>2]=0}while(0);wa=Se(c[w>>2]|0,x,g)|0;c[y>>2]=(c[x>>2]|0)-(g&65535);if((wa|0)!=7)break;r=h+81|0;do if(!(a[r>>0]|0)){if(a[h+82>>0]|0)break;a[r>>0]=1;if((c[h+180>>2]|0)>0)c[h+264>>2]=1;r=h+272|0;c[r>>2]=(c[r>>2]|0)+1;r=c[h+236>>2]|0;if(!r)break;c[r+12>>2]=7}while(0);break y}while(0)}while(0);g=A+80|0;c[g>>2]=c[g>>2]|z;g=A+20|0;a[g>>0]=a[g>>0]|1;g=B+108|0;r=c[g>>2]|0;y=B+112|0;if((c[y>>2]|0)>(r|0)){c[g>>2]=r+1;h=c[B+104>>2]|0;a[h+(r*20|0)>>0]=-86;h=h+(r*20|0)+1|0;z=h+19|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(z|0))}else r=Di(B,170,0,0,0)|0;x=v+44|0;c[x>>2]=r;r=c[g>>2]|0;if((c[y>>2]|0)>(r|0)){c[g>>2]=r+1;wa=c[B+104>>2]|0;a[wa+(r*20|0)>>0]=-117;b[wa+(r*20|0)+2>>1]=0;c[wa+(r*20|0)+4>>2]=ja;c[wa+(r*20|0)+8>>2]=C;c[wa+(r*20|0)+12>>2]=2;c[wa+(r*20|0)+16>>2]=0;a[wa+(r*20|0)+1>>0]=0}else Di(B,139,ja,C,2)|0;if(!l)s=0;else{s=c[ha>>2]|0;wa=(c[f+188>>2]|0)-s+(c[f+192>>2]|0)|0;l=wa+-1|0;wa=(a[s+l>>0]|0)==59?l:wa;c[ra>>2]=(k|0)==0?59952:42261;c[ra+4>>2]=wa;c[ra+8>>2]=s;s=dd(xa,42241,ra)|0}ra=c[v>>2]|0;wa=c[ka>>2]|0;c[sa>>2]=c[(c[ia>>2]|0)+(ja<<4)>>2];c[sa+4>>2]=34585;c[sa+8>>2]=ra;c[sa+12>>2]=wa;c[sa+16>>2]=C;c[sa+20>>2]=s;Ak(f,42269,sa);z:do if(s|0){if(c[xa+480>>2]|0){Xd(xa,s);break}r=s;do if((c[xa+304>>2]|0)>>>0<=r>>>0){if((c[xa+308>>2]|0)>>>0<=r>>>0)break;wa=xa+300|0;c[s>>2]=c[wa>>2];c[wa>>2]=s;break z}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{wa=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-wa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}}while(0);do if(qa){bl(f,v,C);r=c[D>>2]|0;s=(c[c[(c[(c[f>>2]|0)+16>>2]|0)+(ja<<4)+12>>2]>>2]|0)+1|0;u=r+108|0;w=c[u>>2]|0;if((c[r+112>>2]|0)>(w|0)){c[u>>2]=w+1;wa=c[r+104>>2]|0;a[wa+(w*20|0)>>0]=95;b[wa+(w*20|0)+2>>1]=0;c[wa+(w*20|0)+4>>2]=ja;c[wa+(w*20|0)+8>>2]=1;c[wa+(w*20|0)+12>>2]=s;c[wa+(w*20|0)+16>>2]=0;a[wa+(w*20|0)+1>>0]=0}else Di(r,95,ja,1,s)|0;c[ta>>2]=c[v>>2];Bk(B,ja,dd(xa,42317,ta)|0);r=c[g>>2]|0;if((c[y>>2]|0)>(r|0)){c[g>>2]=r+1;wa=c[B+104>>2]|0;a[wa+(r*20|0)>>0]=-98;b[wa+(r*20|0)+2>>1]=0;c[wa+(r*20|0)+4>>2]=0;c[wa+(r*20|0)+8>>2]=1;c[wa+(r*20|0)+12>>2]=0;c[wa+(r*20|0)+16>>2]=0;a[wa+(r*20|0)+1>>0]=0;break}else{Di(B,158,0,1,0)|0;break}}while(0);r=c[x>>2]|0;s=c[g>>2]|0;if(!(a[(c[B>>2]|0)+81>>0]|0))r=(c[B+104>>2]|0)+(((r|0)<0?s+-1|0:r)*20|0)|0;else r=59308;c[r+8>>2]=s;wa=420}while(0);do if((wa|0)==420){if((i|0)==0|(a[va>>0]|0)!=0)break;if((d[ua>>0]|0)<=1){u=0;s=v;r=t;wa=432;break j}c[f+232>>2]=E;break a}while(0);s=ka+8|0;do if((k|0)==5){r=c[s>>2]|0;if(!r)break;if((a[r+54>>0]|0)==5)break;r=r+20|0;s=c[r>>2]|0;A:do if(!s)s=0;else while(1){if((a[s+54>>0]|0)==5)break A;r=s+20|0;s=c[r>>2]|0;if(!s){s=0;break}}while(0);c[v+20>>2]=s;c[r>>2]=v;break a}while(0);c[v+20>>2]=c[s>>2];c[s>>2]=v;break a}else{u=m;j=T;wa=432}while(0);if((wa|0)==432)if(!s){r=u;wa=468;break}else{v=s;t=r}r=c[v+36>>2]|0;if(r|0)ni(xa,r);r=c[v+40>>2]|0;if(r|0)ri(xa,r);r=c[v+16>>2]|0;B:do if(r|0){do if(!ea){if(c[xa+480>>2]|0){Xd(xa,r);break B}s=r;if((c[xa+304>>2]|0)>>>0>s>>>0)break;if((c[xa+308>>2]|0)>>>0<=s>>>0)break;wa=xa+300|0;c[r>>2]=c[wa>>2];c[wa>>2]=r;break B}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{wa=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-wa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);wa=v+55|0;C:do if((d[wa>>0]|d[wa+1>>0]<<8)&16){r=c[v+32>>2]|0;if(!r)break;do if(!ea){if(c[xa+480>>2]|0){Xd(xa,r);break C}s=r;if((c[xa+304>>2]|0)>>>0>s>>>0)break;if((c[xa+308>>2]|0)>>>0<=s>>>0)break;wa=xa+300|0;c[r>>2]=c[wa>>2];c[wa>>2]=r;break C}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{wa=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-wa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);if(t){do if(!ea){if(c[xa+480>>2]|0){Xd(xa,t);r=u;wa=468;break a}r=t;if((c[xa+304>>2]|0)>>>0>r>>>0)break;if((c[xa+308>>2]|0)>>>0<=r>>>0)break;r=xa+300|0;c[t>>2]=c[r>>2];c[r>>2]=t;r=u;wa=468;break a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);r=u;wa=468;break}else{r=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);r=u;wa=468;break}}else{r=u;wa=468}}else{r=m;q=0;wa=468}while(0);if((wa|0)==468)if(r)ni(xa,r);if(j|0)ri(xa,j);qi(xa,i);if(!q){Ra=ya;return}if(xa|0){if(c[xa+480>>2]|0){Xd(xa,q);Ra=ya;return}i=q;if((c[xa+304>>2]|0)>>>0<=i>>>0?(c[xa+308>>2]|0)>>>0>i>>>0:0){i=xa+300|0;c[q>>2]=c[i>>2];c[i>>2]=q;Ra=ya;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](q);Ra=ya;return}else{i=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);Ra=ya;return}}function ij(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var 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,J=0,K=0,M=0,N=0;M=Ra;Ra=Ra+32|0;G=M+16|0;m=M+8|0;l=M;K=c[f>>2]|0;I=c[f+228>>2]|0;a:do if((I|0)!=0?(J=f+200|0,(a[J>>0]|0)!=1):0){r=(g|0)==0;do if(r){D=b[I+42>>1]|0;k=(D<<16>>16)+-1|0;if(D<<16>>16<1){C=130;break a}if(i)if((c[i>>2]|0)==1){k=1;C=13}else{c[l>>2]=c[(c[I+4>>2]|0)+(k<<4)>>2];c[l+4>>2]=h;cd(f,42428,l);break a}else{k=1;C=12}}else{if(!i){k=c[g>>2]|0;C=12;break}k=c[i>>2]|0;if((k|0)==(c[g>>2]|0))C=13;else{cd(f,42491,m);C=129;break a}}while(0);if((C|0)==12){p=h+4|0;l=(k<<3)+37+(c[p>>2]|0)|0;D=k;A=0}else if((C|0)==13){p=h+4|0;l=(k<<3)+37+(c[p>>2]|0)|0;o=c[i>>2]|0;if((o|0)>0){n=0;do{m=c[i+4+(n*20|0)+4>>2]|0;if(!m)m=0;else m=(Eu(m)|0)&1073741823;l=l+1+m|0;n=n+1|0}while((n|0)<(o|0));D=k;A=1}else{D=k;A=1}}n=((l|0)<0)<<31>>31;B=(K|0)==0;b:do if(B){z=Sv(l|0,n|0,-1,-1)|0;y=L()|0;if(y>>>0>0|(y|0)==0&z>>>0>2147483390){C=128;break a}if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](l)|0;C=42;break}n=Wa[c[29356>>2]&127](l)|0;if((c[14985]|0)>>>0>>0)c[14985]=l;m=59064;k=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&k>>>0>0){z=c[14978]|0;y=Tv(k|0,m|0,n|0,((n|0)<0)<<31>>31|0)|0;x=L()|0;c[14768]=((x|0)<0|(x|0)==0&y>>>0<=z>>>0)&1}m=Wa[c[29340>>2]&127](n)|0;if(!m){C=128;break a}k=Wa[c[29352>>2]&127](m)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;z=m}else z=m}else{if(c[K+272>>2]|0){if(a[K+81>>0]|0){C=128;break a}}else{do if(!(0>>0|(0==(n|0)?(e[K+276>>1]|0)>>>0>>0:0))){m=K+300|0;k=c[m>>2]|0;if(k|0){c[m>>2]=c[k>>2];C=K+284|0;c[C>>2]=(c[C>>2]|0)+1;C=42;break b}m=K+296|0;k=c[m>>2]|0;if(!k){k=K+292|0;break}else{c[m>>2]=c[k>>2];C=K+284|0;c[C>>2]=(c[C>>2]|0)+1;C=42;break b}}else k=K+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(K,l,n)|0;C=42}while(0);if((C|0)==42)if(!k){C=128;break}else z=k;gw(z|0,0,l|0)|0;c[z>>2]=I;y=I+16|0;c[z+4>>2]=c[y>>2];w=z+36|0;o=w+(D<<3)|0;x=z+8|0;c[x>>2]=o;c:do if((d[J>>0]|0)>1){m=c[f>>2]|0;d:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;C=67;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){v=c[14978]|0;u=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;t=L()|0;c[14768]=((t|0)<0|(t|0)==0&u>>>0<=v>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break c;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break c}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];C=m+284|0;c[C>>2]=(c[C>>2]|0)+1;C=67;break d}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];C=m+284|0;c[C>>2]=(c[C>>2]|0)+1;C=67;break d}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;C=67}while(0);if((C|0)==67)if(!k)break;l=k+4|0;m=l+12|0;do{a[l>>0]=0;l=l+1|0}while((l|0)<(m|0));c[k>>2]=o;t=h;u=c[t+4>>2]|0;v=k+4|0;c[v>>2]=c[t>>2];c[v+4>>2]=u;v=f+272|0;c[k+12>>2]=c[v>>2];c[v>>2]=k}while(0);ew(o|0,c[h>>2]|0,c[p>>2]|0)|0;a[o+(c[p>>2]|0)>>0]=0;if(o|0?(q=a[o>>0]|0,(a[880+(q&255)>>0]|0)<0):0){n=q<<24>>24==91?93:q;m=0;k=1;while(1){l=a[o+k>>0]|0;if(l<<24>>24==n<<24>>24){k=k+1|0;l=o+m|0;if((a[o+k>>0]|0)!=n<<24>>24)break;a[l>>0]=n}else a[o+m>>0]=l;m=m+1|0;k=k+1|0}a[l>>0]=0}m=o+((c[p>>2]|0)+1)|0;c[z+20>>2]=D;e:do if(!r)if((D|0)>0){s=I+4|0;t=f+272|0;v=b[I+42>>1]|0;u=v<<16>>16>0;v=v<<16>>16;r=0;f:while(1){if(!u){C=117;break}h=c[s>>2]|0;k=c[g+4+(r*20|0)+4>>2]|0;q=d[208+(d[k>>0]|0)>>0]|0;l=0;while(1){o=c[h+(l<<4)>>2]|0;p=a[o>>0]|0;n=(d[208+(p&255)>>0]|0)-q|0;if(!(p<<24>>24==0|(n|0)!=0)){p=k;do{o=o+1|0;p=p+1|0;N=a[o>>0]|0;n=(d[208+(N&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0}while(!(N<<24>>24==0|(n|0)!=0))}if(!n)break;l=l+1|0;if((l|0)>=(v|0))break f}c[w+(r<<3)>>2]=l;g:do if((d[J>>0]|0)>1?(F=w+(r<<3)|0,E=c[t>>2]|0,E|0):0){l=E;while(1){if((c[l>>2]|0)==(k|0))break;l=c[l+12>>2]|0;if(!l)break g}c[l>>2]=F}while(0);k=r+1|0;if((k|0)<(D|0))r=k;else{C=96;break e}}if((C|0)==117)k=c[g+4+(r*20|0)+4>>2]|0;c[G>>2]=k;cd(f,42585,G);if(!z){C=129;break a}if(!B)C=120}else C=107;else{c[w>>2]=(b[I+42>>1]|0)+-1;C=96}while(0);if((C|0)==96)if(A&(D|0)>0){p=f+272|0;n=0;while(1){o=c[i+4+(n*20|0)+4>>2]|0;if(!o)l=0;else l=(Eu(o)|0)&1073741823;c[w+(n<<3)+4>>2]=m;h:do if((d[J>>0]|0)>1?(H=c[p>>2]|0,H|0):0){k=H;while(1){if((c[k>>2]|0)==(o|0))break;k=c[k+12>>2]|0;if(!k)break h}c[k>>2]=m}while(0);ew(m|0,o|0,l|0)|0;a[m+l>>0]=0;n=n+1|0;if((n|0)==(D|0)){C=107;break}else m=m+(l+1)|0}}else C=107;if((C|0)==107){a[z+24>>0]=0;a[z+25>>0]=j;a[z+26>>0]=j>>>8;k=mi((c[I+72>>2]|0)+56|0,c[x>>2]|0,z)|0;if((k|0)!=(z|0)){if(k|0){c[z+12>>2]=k;c[k+16>>2]=z}c[y>>2]=z;C=128;break}k=K+81|0;if((a[k>>0]|0)==0?(a[K+82>>0]|0)==0:0){a[k>>0]=1;if((c[K+180>>2]|0)>0)c[K+264>>2]=1;k=K+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[K+236>>2]|0;if(k){c[k+12>>2]=7;C=120}else C=120}else C=120}if((C|0)==120){if(c[K+480>>2]|0){Xd(K,z);C=128;break}N=z;if((c[K+304>>2]|0)>>>0<=N>>>0?(c[K+308>>2]|0)>>>0>N>>>0:0){C=K+300|0;c[z>>2]=c[C>>2];c[C>>2]=z;C=128;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](z);C=128;break}else{C=Wa[c[29352>>2]&127](z)|0;c[14978]=(c[14978]|0)-C;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](z);C=128;break}}else C=128;while(0);if((C|0)==128)if(!g)C=130;else C=129;if((C|0)==129){ri(K,g);C=130}if((C|0)==130?(i|0)==0:0){Ra=M;return}ri(K,i);Ra=M;return}function jj(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var 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,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;U=Ra;Ra=Ra+208|0;Q=U+184|0;O=U+176|0;N=U+160|0;M=U+152|0;L=U+136|0;K=U+128|0;J=U+112|0;I=U+104|0;D=U+96|0;A=U+88|0;z=U+80|0;y=U+72|0;x=U+64|0;w=U+56|0;u=U+48|0;t=U+40|0;s=U+32|0;r=U+24|0;P=U;T=c[f>>2]|0;if(a[T+81>>0]|0){qi(T,g);Ra=U;return}a:do if(!(a[T+165>>0]|0)){l=f+4|0;m=T+24|0;n=(c[m>>2]&1|0)==0;o=T+16|0;S=c[(c[o>>2]|0)+12>>2]|0;a[T+78>>0]=a[S+77>>0]|0;if(!((b[S+78>>1]&1)==0?(j=eh(T,0,l,0)|0,(j|0)!=0):0))E=5;b:do if((E|0)==5){j=c[T+20>>2]|0;if((j|0)>1)do{k=j;j=j+-1|0;if((b[(c[(c[o>>2]|0)+(j<<4)+12>>2]|0)+78>>1]&1)==0?(p=eh(T,j,l,0)|0,p|0):0){j=p;break b}}while((k|0)>2);if(n)c[m>>2]=c[m>>2]&-2;if(!(a[T+89>>0]|0))break a;c[m>>2]=c[m>>2]|16;break a}while(0);c[f+12>>2]=j;f=f+36|0;c[f>>2]=(c[f>>2]|0)+1;qi(T,g);Ra=U;return}while(0);m=(i|0)!=0;if(m){S=T+85|0;a[S>>0]=(a[S>>0]|0)+1<<24>>24}k=c[g+8>>2]|0;if(!k)j=g+12|0;else{l=c[(c[f>>2]|0)+16>>2]|0;j=0;while(1)if((c[l+(j<<4)+12>>2]|0)==(k|0))break;else j=j+1|0;j=l+(j<<4)|0}S=bd(f,h,c[g+16>>2]|0,c[j>>2]|0)|0;if(m){R=T+85|0;a[R>>0]=(a[R>>0]|0)+-1<<24>>24}if(!S){if(!m){qi(T,g);Ra=U;return}hl(f,c[g+12>>2]|0);qi(T,g);Ra=U;return}H=S+72|0;k=c[H>>2]|0;if(!k)R=-1e6;else{l=c[T+16>>2]|0;j=0;while(1)if((c[l+(j<<4)+12>>2]|0)==(k|0)){R=j;break}else j=j+1|0}B=S+56|0;if(c[B>>2]|0?Sk(f,S)|0:0){qi(T,g);Ra=U;return}i=(R|0)==1;j=i?34855:34585;o=c[(c[T+16>>2]|0)+(R<<4)>>2]|0;k=c[f>>2]|0;do if(((a[k+165>>0]|0)==0?(a[f+200>>0]|0)==0:0)?(q=c[k+312>>2]|0,q|0):0){j=$a[q&127](c[k+316>>2]|0,9,j,0,o,c[f+240>>2]|0)|0;if((j|0)==1){cd(f,39216,r);c[f+12>>2]=23;qi(T,g);Ra=U;return}if((j|2|0)==2){if(!j)break;qi(T,g);Ra=U;return}else{cd(f,39231,s);c[f+12>>2]=1;qi(T,g);Ra=U;return}}while(0);do if(!h){if(!(c[B>>2]|0)){l=0;m=i?13:11;break}j=S+64|0;while(1){j=c[j>>2]|0;if((c[j>>2]|0)==(T|0))break;else j=j+24|0}l=c[(c[j+4>>2]|0)+4>>2]|0;m=30}else{l=0;m=i?15:17}while(0);j=c[S>>2]|0;k=c[f>>2]|0;do if((a[k+165>>0]|0)==0?(v=f+200|0,(a[v>>0]|0)==0):0){n=c[k+312>>2]|0;if(n){j=$a[n&127](c[k+316>>2]|0,m,j,l,o,c[f+240>>2]|0)|0;if((j|0)==1){cd(f,39216,t);c[f+12>>2]=23;qi(T,g);Ra=U;return}if((j|2|0)!=2){cd(f,39231,u);c[f+12>>2]=1;qi(T,g);Ra=U;return}if(j|0){qi(T,g);Ra=U;return}j=c[S>>2]|0;k=c[f>>2]|0;if(a[k+165>>0]|0){o=j;break}if(a[v>>0]|0){o=j;break}}l=c[k+312>>2]|0;if(l){j=$a[l&127](c[k+316>>2]|0,9,j,0,o,c[f+240>>2]|0)|0;if((j|0)==1){cd(f,39216,w);c[f+12>>2]=23;qi(T,g);Ra=U;return}if((j|2|0)!=2){cd(f,39231,x);c[f+12>>2]=1;qi(T,g);Ra=U;return}if(!j){o=c[S>>2]|0;break}else{qi(T,g);Ra=U;return}}else o=j}else o=j;while(0);c:do if(o|0){m=a[o>>0]|0;n=m<<24>>24==0;d:do if(n){j=39441;E=66}else{E=m&255;j=208+E|0;do if((E|32|0)==115){j=a[o+1>>0]|0;if(!(j<<24>>24)){j=39442;E=66;break d}E=j&255;j=208+E|0;if((E|32|0)==113){j=a[o+2>>0]|0;if(!(j<<24>>24)){j=39443;E=66;break d}j=j&255;if((j|32|0)!=108){l=108;j=208+j|0;break}j=a[o+3>>0]|0;if(!(j<<24>>24)){j=39444;E=66;break d}j=j&255;if((j|32|0)!=105){l=105;j=208+j|0;break}j=a[o+4>>0]|0;if(!(j<<24>>24)){j=39445;E=66;break d}j=j&255;if((j|32|0)!=116){l=116;j=208+j|0;break}j=a[o+5>>0]|0;if(!(j<<24>>24)){j=39446;E=66;break d}j=j&255;if((j|32|0)!=101){l=101;j=208+j|0;break}j=a[o+6>>0]|0;if(!(j<<24>>24)){j=39447;E=66;break d}if(j<<24>>24==95){E=75;break d}else{l=95;j=208+(j&255)|0}}else l=113}else l=115;while(0);k=d[j>>0]|0;j=l;E=70}while(0);if((E|0)==66){k=0;j=a[208+(d[j>>0]|0)>>0]|0;E=70}if((E|0)==70){if((k|0)!=(j&255|0))break;if(!n){j=m&255;if((j|32|0)==115)E=75;else{l=115;j=208+j|0;E=74}}else{j=42631;E=72}}do if((E|0)==75){j=a[o+1>>0]|0;if(j<<24>>24){x=j&255;j=208+x|0;if((x|32|0)==113){j=a[o+2>>0]|0;if(j<<24>>24){x=j&255;j=208+x|0;if((x|32|0)==108){j=a[o+3>>0]|0;if(j<<24>>24){j=j&255;if((j|32|0)!=105){l=105;j=208+j|0;E=74;break}j=a[o+4>>0]|0;if(!(j<<24>>24)){j=42635;E=72;break}j=j&255;if((j|32|0)!=116){l=116;j=208+j|0;E=74;break}j=a[o+5>>0]|0;if(!(j<<24>>24)){j=42636;E=72;break}j=j&255;if((j|32|0)!=101){l=101;j=208+j|0;E=74;break}j=a[o+6>>0]|0;if(!(j<<24>>24)){j=42637;E=72;break}if(j<<24>>24!=95){l=95;j=208+(j&255)|0;E=74;break}j=a[o+7>>0]|0;if(!(j<<24>>24)){j=42638;E=72;break}j=j&255;if((j|32|0)!=115){l=115;j=208+j|0;E=74;break}j=a[o+8>>0]|0;if(!(j<<24>>24)){j=42639;E=72;break}j=j&255;if((j|32|0)!=116){l=116;j=208+j|0;E=74;break}j=a[o+9>>0]|0;if(!(j<<24>>24)){j=42640;E=72;break}j=j&255;if((j|32|0)!=97){l=97;j=208+j|0;E=74;break}j=a[o+10>>0]|0;if(!(j<<24>>24)){j=42641;E=72;break}j=j&255;if((j|32|0)==116)break c;else{l=116;j=208+j|0;E=74}}else{j=42634;E=72}}else{l=108;E=74}}else{j=42633;E=72}}else{l=113;E=74}}else{j=42632;E=72}}while(0);if((E|0)==72){k=0;j=a[208+(d[j>>0]|0)>>0]|0}else if((E|0)==74){k=d[j>>0]|0;j=l}if((k|0)!=(j&255|0)){c[y>>2]=o;cd(f,42643,y);qi(T,g);Ra=U;return}}while(0);r=(h|0)!=0;j=(c[S+12>>2]|0)==0;if(r){if(j){c[z>>2]=o;cd(f,42671,z);qi(T,g);Ra=U;return}}else if(!j){c[A>>2]=o;cd(f,42705,A);qi(T,g);Ra=U;return}t=f+8|0;s=f+116|0;if(!(c[t>>2]|0)){m=c[f>>2]|0;if((c[s>>2]|0)==0?(b[m+76>>1]&8)==0:0)a[f+23>>0]=1;e:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))E=97;else{qi(T,g);Ra=U;return}else{do if((e[m+276>>1]|0)>=224){j=m+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];A=m+284|0;c[A>>2]=(c[A>>2]|0)+1;break e}j=m+296|0;k=c[j>>2]|0;if(!k){j=m+292|0;break}else{c[j>>2]=c[k>>2];A=m+284|0;c[A>>2]=(c[A>>2]|0)+1;break e}}else j=m+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;E=97}while(0);if((E|0)==97)k=_d(m,224,0)|0;if(!k){qi(T,g);Ra=U;return}j=k+104|0;l=j+120|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(l|0));c[k>>2]=m;j=m+4|0;l=c[j>>2]|0;if(l|0)c[l+4>>2]=k;c[k+8>>2]=l;c[k+4>>2]=0;c[j>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=f;c[t>>2]=k;Di(k,61,0,1,0)|0}q=c[s>>2]|0;q=(q|0)==0?f:q;j=q+84|0;k=c[j>>2]|0;p=1<>2]=k|p,i):0)?(F=c[q>>2]|0,C=F+16|0,(c[(c[C>>2]|0)+20>>2]|0)==0):0)?(a[q+199>>0]|0)==0:0){j=Pe(c[F>>2]|0,0,F,P,0,542)|0;if(j|0){cd(q,32157,D);c[q+12>>2]=j;break}D=c[P>>2]|0;c[(c[C>>2]|0)+20>>2]=D;j=c[F+92>>2]|0;m=c[D+4>>2]|0;c[m+4>>2]=c[D>>2];do if(!(b[m+22>>1]&2)){n=m+32|0;o=m+36|0;i=(c[n>>2]|0)-(c[o>>2]|0)|0;do if((j+-512|0)>>>0<65025){if(j+-1&j|0)break;c[n>>2]=j;l=m+80|0;j=c[l>>2]|0;if(!j)break;k=j+-4|0;c[l>>2]=k;j=k;do if((c[14816]|0)>>>0<=j>>>0)if((c[14817]|0)>>>0>j>>>0){c[14979]=(c[14979]|0)+-1;c[k>>2]=c[14819];c[14819]=k;D=(c[14820]|0)+1|0;c[14820]=D;c[14821]=(D|0)<(c[14815]|0)&1;break}else{j=Wa[c[29352>>2]&127](k)|0;E=117;break}else{j=Wa[c[29352>>2]&127](k)|0;E=117}while(0);do if((E|0)==117){c[14980]=(c[14980]|0)-j;if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{D=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-D;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[l>>2]=0}while(0);D=Se(c[m>>2]|0,n,i)|0;c[o>>2]=(c[n>>2]|0)-(i&65535);if((D|0)!=7)break;j=F+81|0;do if(!(a[j>>0]|0)){if(a[F+82>>0]|0)break;a[j>>0]=1;if((c[F+180>>2]|0)>0)c[F+264>>2]=1;j=F+272|0;c[j>>2]=(c[j>>2]|0)+1;j=c[F+236>>2]|0;if(!j)break;c[j+12>>2]=7}while(0);break f}while(0)}while(0);F=q+80|0;c[F>>2]=c[F>>2]|p;F=q+20|0;a[F>>0]=a[F>>0]|1;if(r){il(f,S,R,h);qi(T,g);Ra=U;return}k=c[S>>2]|0;l=c[(c[(c[f>>2]|0)+16>>2]|0)+(R<<4)>>2]|0;c[I>>2]=1;Cb(24,P,42737,I)|0;if(Sd(c[f>>2]|0,P,l)|0){c[J>>2]=l;c[J+4>>2]=P;c[J+8>>2]=38087;c[J+12>>2]=k;Ak(f,42751,J)}c[K>>2]=2;Cb(24,P,42737,K)|0;if(Sd(c[f>>2]|0,P,l)|0){c[L>>2]=l;c[L+4>>2]=P;c[L+8>>2]=38087;c[L+12>>2]=k;Ak(f,42751,L)}c[M>>2]=3;Cb(24,P,42737,M)|0;if(Sd(c[f>>2]|0,P,l)|0){c[N>>2]=l;c[N+4>>2]=P;c[N+8>>2]=38087;c[N+12>>2]=k;Ak(f,42751,N)}c[O>>2]=4;Cb(24,P,42737,O)|0;j=c[f>>2]|0;if(!(Sd(j,P,l)|0))q=j;else{c[Q>>2]=l;c[Q+4>>2]=P;c[Q+8>>2]=38087;c[Q+12>>2]=k;Ak(f,42751,Q);q=c[f>>2]|0}r=q+32|0;g:do if(!((c[r>>2]&16384|0)==0&0==0)){if(c[B>>2]|0)break;j=c[t>>2]|0;h:do if(!j){do if(!(c[s>>2]|0)){if(b[q+76>>1]&8)break;a[f+23>>0]=1}while(0);i:do if(c[q+272>>2]|0)if(!(a[q+81>>0]|0))E=149;else{p=0;break h}else{do if((e[q+276>>1]|0)>=224){j=q+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];Q=q+284|0;c[Q>>2]=(c[Q>>2]|0)+1;break i}j=q+296|0;k=c[j>>2]|0;if(!k){j=q+292|0;break}else{c[j>>2]=c[k>>2];Q=q+284|0;c[Q>>2]=(c[Q>>2]|0)+1;break i}}else j=q+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;E=149}while(0);if((E|0)==149)k=_d(q,224,0)|0;if(!k){p=0;break}j=k+104|0;l=j+120|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(l|0));c[k>>2]=q;j=q+4|0;l=c[j>>2]|0;if(l|0)c[l+4>>2]=k;c[k+8>>2]=l;c[k+4>>2]=0;c[j>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=f;c[t>>2]=k;Di(k,61,0,1,0)|0;p=k}else p=j;while(0);i=c[S>>2]|0;m=c[H>>2]|0;n=c[m+68>>2]|0;if(!n){k=m+60|0;j=m+64|0}else{k=a[i>>0]|0;if(!(k<<24>>24))j=0;else{j=0;l=i;do{l=l+1|0;j=G(j+(d[208+(k&255)>>0]|0)|0,-1640531535)|0;k=a[l>>0]|0}while(k<<24>>24!=0)}j=(j>>>0)%((c[m+56>>2]|0)>>>0)|0;k=n+(j<<3)|0;j=n+(j<<3)+4|0}k=c[k>>2]|0;j:do if(!k)j=59292;else{o=d[208+(d[i>>0]|0)>>0]|0;while(1){j=c[j>>2]|0;k=k+-1|0;m=c[j+12>>2]|0;Q=a[m>>0]|0;l=(d[208+(Q&255)>>0]|0)-o|0;if(!(Q<<24>>24==0|(l|0)!=0)){n=i;do{m=m+1|0;n=n+1|0;Q=a[m>>0]|0;l=(d[208+(Q&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(Q<<24>>24==0|(l|0)!=0))}if(!l)break j;if(!k){j=59292;break}}}while(0);do if(!(c[j+8>>2]|0)){j=c[S+16>>2]|0;if(!j)break g;while(1){if(a[j+24>>0]|0)break;if(!((c[r>>2]&524288|0)==0&0==0))break;j=c[j+4>>2]|0;if(!j)break g}k=f+56|0;j=(c[k>>2]|0)+-1|0;c[k>>2]=j;k=p+108|0;l=c[k>>2]|0;if((c[p+112>>2]|0)>(l|0)){c[k>>2]=l+1;m=c[p+104>>2]|0;a[m+(l*20|0)>>0]=46;b[m+(l*20|0)+2>>1]=0;c[m+(l*20|0)+4>>2]=1;c[m+(l*20|0)+8>>2]=j;c[m+(l*20|0)+12>>2]=0;c[m+(l*20|0)+16>>2]=0;a[m+(l*20|0)+1>>0]=0;m=j;break}else{Di(p,46,1,j,0)|0;m=j;break}}else m=0;while(0);Q=f+146|0;a[Q>>0]=1;sj(f,ik(q,g,0)|0,0);a[Q>>0]=0;if((c[r>>2]&524288|0)==0&0==0){j=p+108|0;k=c[j>>2]|0;l=k+2|0;if((c[p+112>>2]|0)>(k|0)){c[j>>2]=k+1;Q=c[p+104>>2]|0;a[Q+(k*20|0)>>0]=46;b[Q+(k*20|0)+2>>1]=0;c[Q+(k*20|0)+4>>2]=0;c[Q+(k*20|0)+8>>2]=l;c[Q+(k*20|0)+12>>2]=0;c[Q+(k*20|0)+16>>2]=0;a[Q+(k*20|0)+1>>0]=0}else Di(p,46,0,l,0)|0;Uj(f,787,2,0,-1,4)}if(!m)break;k=c[p+12>>2]|0;j=~m;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,p,j);break}else{c[(c[k+64>>2]|0)+(j<<2)>>2]=c[p+108>>2];break}}while(0);il(f,S,R,0);qi(T,g);Ra=U;return} -function rj(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,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=Ra;Ra=Ra+48|0;s=u+32|0;t=u+16|0;r=u;p=u+36|0;c[p>>2]=e;c[p+4>>2]=f;c[p+8>>2]=g;a:do if(!e)h=0;else{o=0;h=0;n=e;b:while(1){m=c[n+4>>2]|0;if((m|0)<=0)break;c:do if((m|0)==7){j=c[n>>2]|0;if(!j)break b;i=a[j>>0]|0;d:do if(!(i<<24>>24)){i=18240;q=10}else{l=i&255;i=208+l|0;do if((l|32|0)==110){i=a[j+1>>0]|0;if(!(i<<24>>24)){i=18241;q=10;break d}l=i&255;i=208+l|0;if((l|32|0)==97){i=a[j+2>>0]|0;if(!(i<<24>>24)){i=18242;q=10;break d}l=i&255;i=208+l|0;if((l|32|0)==116){i=a[j+3>>0]|0;if(!(i<<24>>24)){i=18243;q=10;break d}l=i&255;i=208+l|0;if((l|32|0)==117){i=a[j+4>>0]|0;if(!(i<<24>>24)){i=18244;q=10;break d}l=i&255;i=208+l|0;if((l|32|0)==114){i=a[j+5>>0]|0;if(!(i<<24>>24)){i=18245;q=10;break d}i=i&255;if((i|32|0)!=97){k=97;i=208+i|0;break}i=a[j+6>>0]|0;if(!(i<<24>>24)){i=18246;q=10;break d}i=i&255;if((i|32|0)==108){i=0;break c}else{k=108;i=208+i|0}}else k=114}else k=117}else k=116}else k=97}else k=110;while(0);j=d[i>>0]|0;i=k}while(0);if((q|0)==10){q=0;j=0;i=a[208+(d[i>>0]|0)>>0]|0}if((j|0)==(i&255|0))i=0;else q=12}else q=12;while(0);e:do if((q|0)==12){q=0;l=(m|0)==4;if(l){j=c[n>>2]|0;if(!j)break b;i=a[j>>0]|0;do if(!(i<<24>>24)){i=18246;q=28}else{k=i&255;i=208+k|0;if((k|32|0)==108){i=a[j+1>>0]|0;if(!(i<<24>>24)){i=18247;q=28;break}k=i&255;i=208+k|0;if((k|32|0)==101){i=a[j+2>>0]|0;if(!(i<<24>>24)){i=18248;q=28;break}k=i&255;i=208+k|0;if((k|32|0)==102){i=a[j+3>>0]|0;if(!(i<<24>>24)){i=18249;q=28;break}i=i&255;if((i|32|0)==116){i=1;break e}else{k=116;i=208+i|0}}else k=102}else k=101}else k=108;j=d[i>>0]|0;i=k}while(0);if((q|0)==28){q=0;j=0;i=a[208+(d[i>>0]|0)>>0]|0}if((j|0)==(i&255|0)){i=1;break}}else l=0;m=(m|0)==5;if(m){j=c[n>>2]|0;if(!j)break b;i=a[j>>0]|0;do if(!(i<<24>>24)){i=18250;q=37}else{k=i&255;i=208+k|0;if((k|32|0)==111){i=a[j+1>>0]|0;if(!(i<<24>>24)){i=18251;q=37;break}k=i&255;i=208+k|0;if((k|32|0)==117){i=a[j+2>>0]|0;if(!(i<<24>>24)){i=18252;q=37;break}k=i&255;i=208+k|0;if((k|32|0)==116){i=a[j+3>>0]|0;if(!(i<<24>>24)){i=18253;q=37;break}k=i&255;i=208+k|0;if((k|32|0)==101){i=a[j+4>>0]|0;if(!(i<<24>>24)){i=18254;q=37;break}i=i&255;if((i|32|0)==114){i=2;break e}else{k=114;i=208+i|0}}else k=101}else k=116}else k=117}else k=111;j=d[i>>0]|0;i=k}while(0);if((q|0)==37){q=0;j=0;i=a[208+(d[i>>0]|0)>>0]|0}if((j|0)==(i&255|0)){i=2;break}if(m){j=c[n>>2]|0;if(j){i=a[j>>0]|0;f:do if(!(i<<24>>24)){i=18254;q=45}else{m=i&255;i=208+m|0;do if((m|32|0)==114){i=a[j+1>>0]|0;if(!(i<<24>>24)){i=18255;q=45;break f}i=i&255;if((i|32|0)!=105){k=105;i=208+i|0;break}i=a[j+2>>0]|0;if(!(i<<24>>24)){i=18256;q=45;break f}i=i&255;if((i|32|0)!=103){k=103;i=208+i|0;break}i=a[j+3>>0]|0;if(!(i<<24>>24)){i=18257;q=45;break f}i=i&255;if((i|32|0)!=104){k=104;i=208+i|0;break}i=a[j+4>>0]|0;if(!(i<<24>>24)){i=18258;q=45;break f}i=i&255;if((i|32|0)==116){i=3;break e}else{k=116;i=208+i|0}}else k=114;while(0);j=d[i>>0]|0;i=k}while(0);if((q|0)==45){q=0;j=0;i=a[208+(d[i>>0]|0)>>0]|0}if((j|0)==(i&255|0)){i=3;break}else i=1}else i=1}else i=0;if(l){l=i;q=48}else l=i}else if(l){l=0;q=48}else break b;if((q|0)==48){q=0;j=c[n>>2]|0;if(j){i=a[j>>0]|0;do if(!(i<<24>>24)){i=18259;q=53}else{m=i&255;i=208+m|0;if((m|32|0)==102){i=a[j+1>>0]|0;if(!(i<<24>>24)){i=18260;q=53;break}m=i&255;i=208+m|0;if((m|32|0)==117){i=a[j+2>>0]|0;if(!(i<<24>>24)){i=18261;q=53;break}m=i&255;i=208+m|0;if((m|32|0)==108){i=a[j+3>>0]|0;if(!(i<<24>>24)){i=18262;q=53;break}i=i&255;if((i|32|0)==108){i=4;break e}else{k=108;i=208+i|0}}else k=108}else k=117}else k=102;j=d[i>>0]|0;i=k}while(0);if((q|0)==53){q=0;j=0;i=a[208+(d[i>>0]|0)>>0]|0}if((j|0)==(i&255|0)){i=4;break}}}if(!l)break b;j=c[n>>2]|0;if(!j)break b;i=a[j>>0]|0;do if(!(i<<24>>24)){i=18263;q=61}else{m=i&255;i=208+m|0;if((m|32|0)==105){i=a[j+1>>0]|0;if(!(i<<24>>24)){i=18264;q=61;break}m=i&255;i=208+m|0;if((m|32|0)==110){i=a[j+2>>0]|0;if(!(i<<24>>24)){i=18265;q=61;break}m=i&255;i=208+m|0;if((m|32|0)==110){i=a[j+3>>0]|0;if(!(i<<24>>24)){i=18266;q=61;break}m=i&255;i=208+m|0;if((m|32|0)==101){i=a[j+4>>0]|0;if(!(i<<24>>24)){i=18267;q=61;break}i=i&255;if((i|32|0)==114){i=5;break e}else{k=114;i=208+i|0}}else k=101}else k=110}else k=110}else k=105;j=d[i>>0]|0;i=k}while(0);if((q|0)==61){q=0;j=0;i=a[208+(d[i>>0]|0)>>0]|0}if((j|0)!=(i&255|0)){if(!l)break b;j=c[n>>2]|0;if(!j)break b;i=a[j>>0]|0;g:do if(!(i<<24>>24)){i=18268;q=69}else{n=i&255;i=208+n|0;do if((n|32|0)==99){i=a[j+1>>0]|0;if(!(i<<24>>24)){i=18269;q=69;break g}n=i&255;i=208+n|0;if((n|32|0)==114){i=a[j+2>>0]|0;if(!(i<<24>>24)){i=18270;q=69;break g}i=i&255;if((i|32|0)!=111){k=111;i=208+i|0;break}i=a[j+3>>0]|0;if(!(i<<24>>24)){i=18271;q=69;break g}i=i&255;if((i|32|0)!=115){k=115;i=208+i|0;break}i=a[j+4>>0]|0;if(!(i<<24>>24)){i=18272;q=69;break g}i=i&255;if((i|32|0)==115){i=6;break e}else{k=115;i=208+i|0}}else k=114}else k=99;while(0);j=d[i>>0]|0;i=k}while(0);if((q|0)==69){q=0;j=0;i=a[208+(d[i>>0]|0)>>0]|0}if((j|0)==(i&255|0))i=6;else break b}else i=5}while(0);h=h|(d[18288+(i*3|0)+2>>0]|0);o=o+1|0;if(o>>>0>=3)break a;n=c[p+(o<<2)>>2]|0;if(!n)break a}h=h|64}while(0);if((h&33|0)!=33&(h&64|0)==0){if((h&32|0)==0|(h&24|0)==8){t=h;Ra=u;return t|0}cd(b,44559,s);t=1;Ra=u;return t|0}if(!g){c[t>>2]=e;c[t+4>>2]=f;c[t+8>>2]=44514;c[t+12>>2]=0;cd(b,44515,t);t=1;Ra=u;return t|0}else{c[r>>2]=e;c[r+4>>2]=f;c[r+8>>2]=44513;c[r+12>>2]=g;cd(b,44515,r);t=1;Ra=u;return t|0}return 0}function sj(f,g,h){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,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,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;U=Ra;Ra=Ra+112|0;E=U+32|0;C=U+24|0;w=U+16|0;v=U+8|0;o=U;D=U+80|0;P=U+76|0;Q=U+72|0;F=U+40|0;c[P>>2]=0;c[Q>>2]=0;T=c[f>>2]|0;a:do if((c[f+36>>2]|0)==0?(K=T+81|0,(a[K>>0]|0)==0):0){j=c[g+8>>2]|0;if(!j)i=g+12|0;else{k=c[T+16>>2]|0;i=0;while(1)if((c[k+(i<<4)+12>>2]|0)==(j|0))break;else i=i+1|0;i=k+(i<<4)|0}R=bd(f,0,c[g+16>>2]|0,c[i>>2]|0)|0;i=c[f>>2]|0;j=g+24|0;k=c[j>>2]|0;do if(k|0){if(i|0?c[i+480>>2]|0:0){Vi(i,k);break}N=k+32|0;O=(c[N>>2]|0)+-1|0;c[N>>2]=O;if(!O)Vi(i,k)}while(0);c[j>>2]=R;if(R){O=R+32|0;c[O>>2]=(c[O>>2]|0)+1;b:do if(a[g+45>>0]&2){m=c[g+72>>2]|0;i=c[R+8>>2]|0;c:do if(i|0){n=d[208+(d[m>>0]|0)>>0]|0;while(1){k=c[i>>2]|0;O=a[k>>0]|0;j=(d[208+(O&255)>>0]|0)-n|0;if(!(O<<24>>24==0|(j|0)!=0)){l=m;do{k=k+1|0;l=l+1|0;O=a[k>>0]|0;j=(d[208+(O&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(O<<24>>24==0|(j|0)!=0))}if(!j)break;i=c[i+20>>2]|0;if(!i)break c}c[g+76>>2]=i;break b}while(0);c[o>>2]=m;c[o+4>>2]=0;cd(f,41107,o);a[f+17>>0]=1;i=0;break a}while(0);i=c[f>>2]|0;s=c[i+32>>2]|0;do if(!((s&262144|0)==0&0==0)?(q=c[(c[i+16>>2]|0)+28>>2]|0,(a[f+146>>0]|0)==0):0){p=c[R+72>>2]|0;if((p|0)!=(q|0)?(r=c[q+48>>2]|0,(r|0)!=0):0){o=R+68|0;n=r;i=0;do{m=c[n+8>>2]|0;if((c[m+24>>2]|0)==(p|0)){k=c[m+4>>2]|0;l=c[R>>2]|0;O=a[k>>0]|0;j=(d[208+(O&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0;if(!(O<<24>>24==0|(j|0)!=0))do{k=k+1|0;l=l+1|0;O=a[k>>0]|0;j=(d[208+(O&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(O<<24>>24==0|(j|0)!=0));if(!j){if(!i)i=c[o>>2]|0;c[m+32>>2]=i;i=m}}n=c[n>>2]|0}while((n|0)!=0);if(!i)S=40}else S=40;if((S|0)==40){i=c[R+68>>2]|0;if(!i){S=46;break}}j=0;k=i;do{if((a[k+8>>0]|0)==121)j=j|d[k+9>>0];k=c[k+32>>2]|0}while((k|0)!=0);if(j){j=(c[R+12>>2]|0)!=0;if(!i)S=48;else{I=i;x=1;i=1}}else S=46}else S=46;while(0);if((S|0)==46){j=(c[R+12>>2]|0)!=0;S=48}if((S|0)==48){if(!((s&16384|0)==0&0==0)){p=c[R>>2]|0;m=c[R+72>>2]|0;n=c[m+68>>2]|0;if(!n){k=m+60|0;i=m+64|0}else{k=a[p>>0]|0;if(!(k<<24>>24))i=0;else{i=0;l=p;do{l=l+1|0;i=G(i+(d[208+(k&255)>>0]|0)|0,-1640531535)|0;k=a[l>>0]|0}while(k<<24>>24!=0)}i=(i>>>0)%((c[m+56>>2]|0)>>>0)|0;k=n+(i<<3)|0;i=n+(i<<3)+4|0}k=c[k>>2]|0;d:do if(!k)i=59292;else{o=d[208+(d[p>>0]|0)>>0]|0;while(1){i=c[i>>2]|0;k=k+-1|0;m=c[i+12>>2]|0;O=a[m>>0]|0;l=(d[208+(O&255)>>0]|0)-o|0;if(!(O<<24>>24==0|(l|0)!=0)){n=p;do{m=m+1|0;n=n+1|0;O=a[m>>0]|0;l=(d[208+(O&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(O<<24>>24==0|(l|0)!=0))}if(!l)break d;if(!k){i=59292;break}}}while(0);if(!(c[i+8>>2]|0))i=(c[R+16>>2]|0)!=0&1;else i=1}else i=0;I=0;x=(i|0)!=0;i=0}u=x&1;if((Sk(f,R)|0)==0?(Fm(f,R,i)|0)==0:0){k=c[R+72>>2]|0;l=c[T+16>>2]|0;if(!k)z=-1e6;else{i=0;while(1)if((c[l+(i<<4)+12>>2]|0)==(k|0)){z=i;break}else i=i+1|0}m=c[R>>2]|0;i=c[l+(z<<4)>>2]|0;k=c[f>>2]|0;if(((a[k+165>>0]|0)==0?(a[f+200>>0]|0)==0:0)?(t=c[k+312>>2]|0,(t|0)!=0):0){i=$a[t&127](c[k+316>>2]|0,9,m,0,i,c[f+240>>2]|0)|0;if((i|0)==1){cd(f,39216,v);c[f+12>>2]=23;i=0;break}if((i|2|0)!=2){cd(f,39231,w);c[f+12>>2]=1;i=0;break}}else i=0;w=f+40|0;J=c[w>>2]|0;A=J+1|0;c[w>>2]=A;c[g+48>>2]=J;y=R+8|0;k=c[y>>2]|0;if(!k)B=0;else{l=0;m=A;do{m=m+1|0;l=l+1|0;k=c[k+20>>2]|0}while((k|0)!=0);c[w>>2]=m;B=l}if(j){O=f+240|0;N=c[O>>2]|0;c[O>>2]=c[R>>2];O=f}else{N=0;O=0}v=f+8|0;k=c[v>>2]|0;e:do if(!k){n=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[n+76>>1]&8)==0:0)a[f+23>>0]=1;f:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))S=97;else{i=0;break e}else{do if((e[n+276>>1]|0)>=224){k=n+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];m=n+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break f}k=n+296|0;l=c[k>>2]|0;if(!l){k=n+292|0;break}else{c[k>>2]=c[l>>2];m=n+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break f}}else k=n+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;S=97}while(0);if((S|0)==97)m=_d(n,224,0)|0;if(!m)i=0;else{o=m+104|0;q=o+120|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(q|0));c[m>>2]=n;k=n+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=m;c[m+8>>2]=l;c[m+4>>2]=0;c[k>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=f;c[v>>2]=m;Di(m,61,0,1,0)|0;M=m;S=102}}else{M=k;S=102}while(0);g:do if((S|0)==102){L=f+18|0;if(!(a[L>>0]|0)){H=M+149|0;t=d[H>>0]|d[H+1>>0]<<8|32;a[H>>0]=t;a[H+1>>0]=t>>8}H=f+116|0;t=c[H>>2]|0;t=(t|0)==0?f:t;k=t+84|0;l=c[k>>2]|0;s=1<>2]=l|s,(z|0)==1):0){r=c[t>>2]|0;k=r+16|0;if(c[(c[k>>2]|0)+20>>2]|0)break;if(a[t+199>>0]|0)break;l=Pe(c[r>>2]|0,0,r,D,0,542)|0;if(l|0){cd(t,32157,C);c[t+12>>2]=l;break}C=c[D>>2]|0;c[(c[k>>2]|0)+20>>2]=C;k=c[r+92>>2]|0;n=c[C+4>>2]|0;c[n+4>>2]=c[C>>2];do if(!(b[n+22>>1]&2)){o=n+32|0;p=n+36|0;q=(c[o>>2]|0)-(c[p>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[o>>2]=k;m=n+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;C=(c[14820]|0)+1|0;c[14820]=C;c[14821]=(C|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;S=119;break}else{k=Wa[c[29352>>2]&127](l)|0;S=119}while(0);do if((S|0)==119){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{C=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-C;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);C=Se(c[n>>2]|0,o,q)|0;c[p>>2]=(c[o>>2]|0)-(q&65535);if((C|0)!=7)break;k=r+81|0;do if(!(a[k>>0]|0)){if(a[r+82>>0]|0)break;a[k>>0]=1;if((c[r+180>>2]|0)>0)c[r+264>>2]=1;k=r+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[r+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break h}while(0)}while(0);C=t+80|0;c[C>>2]=c[C>>2]|s;C=t+20|0;a[C>>0]=d[C>>0]|u;if(j){Gm(f,R,h,J);c[Q>>2]=J;c[P>>2]=J}C=F+8|0;c[C>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;c[C+12>>2]=0;c[C+16>>2]=0;c[C+20>>2]=0;c[F>>2]=f;c[F+4>>2]=g;i:do if(h){l=F+24|0;b[l>>1]=0;c[D>>2]=f;c[D+4>>2]=125;c[D+8>>2]=126;c[D+12>>2]=0;c[D+24>>2]=F;m=h+24|0;k=f+208|0;C=(c[k>>2]|0)+(c[m>>2]|0)|0;c[k>>2]=C;k=c[(c[f>>2]|0)+120>>2]|0;do if((k|0)>=(C|0)){_j(D,h)|0;k=c[D>>2]|0;E=k+208|0;c[E>>2]=(c[E>>2]|0)-(c[m>>2]|0);E=h+4|0;c[E>>2]=c[E>>2]|b[l>>1]&-32752&65535;if((c[F+20>>2]|0)>0)break;if((c[k+36>>2]|0)<1)break i;else{i=0;break g}}else{c[E>>2]=k;cd(f,41637,E)}while(0);i=0;break g}while(0);do if(!(0==0?(c[T+32>>2]&128|0)==0:0)){if(a[L>>0]|0){D=0;break}if(c[f+120>>2]|0){D=0;break}l=f+44|0;k=(c[l>>2]|0)+1|0;c[l>>2]=k;l=M+108|0;m=c[l>>2]|0;if((c[M+112>>2]|0)>(m|0)){c[l>>2]=m+1;D=c[M+104>>2]|0;a[D+(m*20|0)>>0]=70;b[D+(m*20|0)+2>>1]=0;c[D+(m*20|0)+4>>2]=0;c[D+(m*20|0)+8>>2]=k;c[D+(m*20|0)+12>>2]=0;c[D+(m*20|0)+16>>2]=0;a[D+(m*20|0)+1>>0]=0;D=k;break}else{Di(M,70,0,k,0)|0;D=k;break}}else D=0;while(0);do if(x|((h|0)!=0|(i|0)!=0))S=166;else{if(c[R+56>>2]|0){S=166;break}i=R+28|0;Hj(f,z,c[i>>2]|0,1,c[R>>2]|0);do if(!(c[R+36>>2]&32)){j=c[i>>2]|0;k=(D|0)==0?-1:D;m=c[R>>2]|0;l=M+108|0;i=c[l>>2]|0;if((c[M+112>>2]|0)>(i|0)){c[l>>2]=i+1;R=c[M+104>>2]|0;a[R+(i*20|0)>>0]=-119;b[R+(i*20|0)+2>>1]=0;c[R+(i*20|0)+4>>2]=j;c[R+(i*20|0)+8>>2]=z;c[R+(i*20|0)+12>>2]=k;c[R+(i*20|0)+16>>2]=0;a[R+(i*20|0)+1>>0]=0}else i=Di(M,137,j,z,k)|0;if(a[(c[M>>2]|0)+81>>0]|0)break;if((i|0)<0)i=(c[l>>2]|0)+-1|0;j=c[M+104>>2]|0;k=j+(i*20|0)+1|0;if(a[k>>0]|0){Ei(M,j+(i*20|0)|0,m,-1);break}if(!m)break;c[j+(i*20|0)+16>>2]=m;a[k>>0]=-1}while(0);i=c[y>>2]|0;if(!i){i=0;break}l=M+108|0;m=M+112|0;n=M+104|0;do{j=c[i+44>>2]|0;k=c[l>>2]|0;if((c[m>>2]|0)>(k|0)){c[l>>2]=k+1;R=c[n>>2]|0;a[R+(k*20|0)>>0]=-119;b[R+(k*20|0)+2>>1]=0;c[R+(k*20|0)+4>>2]=j;c[R+(k*20|0)+8>>2]=z;c[R+(k*20|0)+12>>2]=0;c[R+(k*20|0)+16>>2]=0;a[R+(k*20|0)+1>>0]=0}else Di(M,137,j,z,0)|0;i=c[i+20>>2]|0}while((i|0)!=0);i=0}while(0);do if((S|0)==166){r=x|(b[F+24>>1]&64)!=0?1044:1052;j:do if(!(c[R+36>>2]&32)){i=f+44|0;l=(c[i>>2]|0)+1|0;c[i>>2]=l;i=M+108|0;k=c[i>>2]|0;if((c[M+112>>2]|0)>(k|0)){c[i>>2]=k+1;s=c[M+104>>2]|0;a[s+(k*20|0)>>0]=73;b[s+(k*20|0)+2>>1]=0;c[s+(k*20|0)+4>>2]=0;c[s+(k*20|0)+8>>2]=l;c[s+(k*20|0)+12>>2]=0;c[s+(k*20|0)+16>>2]=0;a[s+(k*20|0)+1>>0]=0;s=0;C=0;p=1;u=0;i=0;break}else{Di(M,73,0,l,0)|0;s=0;C=0;p=1;u=0;i=0;break}}else{i=c[y>>2]|0;k:do if(!i)i=0;else while(1){F=i+55|0;if(((d[F>>0]|d[F+1>>0]<<8)&3)==2)break k;i=c[i+20>>2]|0;if(!i){i=0;break}}while(0);p=b[i+50>>1]|0;o=f+44|0;k=c[o>>2]|0;q=k+1|0;m=p<<16>>16;c[o>>2]=k+m;o=c[w>>2]|0;c[w>>2]=o+1;k=M+108|0;l=c[k>>2]|0;if((c[M+112>>2]|0)>(l|0)){c[k>>2]=l+1;F=c[M+104>>2]|0;a[F+(l*20|0)>>0]=113;b[F+(l*20|0)+2>>1]=0;c[F+(l*20|0)+4>>2]=o;c[F+(l*20|0)+8>>2]=m;c[F+(l*20|0)+12>>2]=0;c[F+(l*20|0)+16>>2]=0;a[F+(l*20|0)+1>>0]=0}else l=Di(M,113,o,m,0)|0;k=c[v>>2]|0;n=Ij(f,i)|0;if(!n){s=l;l=0;C=o;u=q;break}m=c[k>>2]|0;if(!(a[m+81>>0]|0)){C=c[k+104>>2]|0;s=(c[k+108>>2]|0)+-1|0;a[C+(s*20|0)+1>>0]=-9;c[C+(s*20|0)+16>>2]=n;s=l;l=0;C=o;u=q;break}if(c[m+480>>2]|0){s=l;l=0;C=o;u=q;break}F=(c[n>>2]|0)+-1|0;c[n>>2]=F;if(F|0){s=l;l=0;C=o;u=q;break}k=c[n+12>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,n);s=l;l=0;C=o;u=q;break j}m=n;if((c[k+304>>2]|0)>>>0>m>>>0)break;if((c[k+308>>2]|0)>>>0<=m>>>0)break;s=k+300|0;c[n>>2]=c[s>>2];c[s>>2]=n;s=l;l=0;C=o;u=q;break j}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);s=l;l=0;C=o;u=q;break}else{s=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);s=l;l=0;C=o;u=q;break}}while(0);A=ql(f,g,h,0,0,r,A)|0;if(!A){i=0;break g}v=A+24|0;o=c[v>>2]|0;v=c[v+4>>2]|0;w=a[A+49>>0]|0;x=w<<24>>24==1;if(!x){F=c[H>>2]|0;a[((F|0)==0?f:F)+20>>0]=1}do if(D|0){k=M+108|0;m=c[k>>2]|0;if((c[M+112>>2]|0)>(m|0)){c[k>>2]=m+1;F=c[M+104>>2]|0;a[F+(m*20|0)>>0]=83;b[F+(m*20|0)+2>>1]=0;c[F+(m*20|0)+4>>2]=D;c[F+(m*20|0)+8>>2]=1;c[F+(m*20|0)+12>>2]=0;c[F+(m*20|0)+16>>2]=0;a[F+(m*20|0)+1>>0]=0;break}else{Di(M,83,D,1,0)|0;break}}while(0);z=(i|0)!=0;do if(!z){m=f+44|0;k=(c[m>>2]|0)+1|0;c[m>>2]=k;m=M+108|0;n=c[m>>2]|0;if((c[M+112>>2]|0)>(n|0)){c[m>>2]=n+1;F=c[M+104>>2]|0;a[F+(n*20|0)>>0]=-128;b[F+(n*20|0)+2>>1]=0;c[F+(n*20|0)+4>>2]=J;c[F+(n*20|0)+8>>2]=k;c[F+(n*20|0)+12>>2]=0;c[F+(n*20|0)+16>>2]=0;a[F+(n*20|0)+1>>0]=0;n=k;break}else{Di(M,128,J,k,0)|0;n=k;break}}else{m=p<<16>>16;if(p<<16>>16<=0){n=u;break}n=i+4|0;k=0;do{Vj(M,R,J,b[(c[n>>2]|0)+(k<<1)>>1]|0,k+u|0);k=k+1|0}while((k|0)!=(m|0));n=u}while(0);y=w<<24>>24!=0;l:do if(y){m=B+2|0;m:do if(c[T+272>>2]|0){if(!(a[K>>0]|0))S=216}else{do if(!(0<0|(0==0?(e[T+276>>1]|0)>>>0>>0:0))){k=T+300|0;i=c[k>>2]|0;if(i|0){c[k>>2]=c[i>>2];S=T+284|0;c[S>>2]=(c[S>>2]|0)+1;S=217;break m}k=T+296|0;i=c[k>>2]|0;if(!i){i=T+292|0;break}else{c[k>>2]=c[i>>2];S=T+284|0;c[S>>2]=(c[S>>2]|0)+1;S=217;break m}}else i=T+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;S=216}while(0);if((S|0)==216){i=_d(T,m,0)|0;S=217}do if((S|0)==217){if(!i)break;K=B+1|0;gw(i|0,1,K|0)|0;a[i+K>>0]=0;if((o|0)>-1)a[i+(o-J)>>0]=0;if((v|0)>-1)a[i+(v-J)>>0]=0;do if(s|0){k=c[M>>2]|0;if(a[k+81>>0]|0)break;K=c[M+104>>2]|0;E=K+(s*20|0)+1|0;F=K+(s*20|0)+16|0;kg(k,a[E>>0]|0,c[F>>2]|0);a[E>>0]=0;c[F>>2]=0;a[K+(s*20|0)>>0]=-86}while(0);r=f+56|0;s=(c[r>>2]|0)+-1|0;c[r>>2]=s;r=n;break l}while(0);sl(A);i=0;break g}else{do if(!z){i=M+108|0;k=c[i>>2]|0;if((c[M+112>>2]|0)>(k|0)){c[i>>2]=k+1;i=c[M+104>>2]|0;a[i+(k*20|0)>>0]=-108;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=l;c[i+(k*20|0)+8>>2]=n;c[i+(k*20|0)+12>>2]=0;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0;i=1;k=n;break}else{Di(M,148,l,n,0)|0;i=1;k=n;break}}else{t=f+44|0;k=(c[t>>2]|0)+1|0;c[t>>2]=k;t=p<<16>>16;q=gl(c[f>>2]|0,i)|0;r=M+108|0;i=c[r>>2]|0;s=M+112|0;if((c[s>>2]|0)>(i|0)){c[r>>2]=i+1;K=c[M+104>>2]|0;a[K+(i*20|0)>>0]=92;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=u;c[K+(i*20|0)+8>>2]=t;c[K+(i*20|0)+12>>2]=k;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else i=Di(M,92,u,t,k)|0;m=c[M>>2]|0;n:do if(!(a[m+81>>0]|0)){if((i|0)<0)i=(c[r>>2]|0)+-1|0;m=c[M+104>>2]|0;n=m+(i*20|0)|0;do if(p<<16>>16<=-1){o=m+(i*20|0)+1|0;if(a[o>>0]|0)break;if(p<<16>>16==-3){c[m+(i*20|0)+16>>2]=q;a[o>>0]=-3;break n}if(!q)break n;c[m+(i*20|0)+16>>2]=q;a[o>>0]=p;if(p<<16>>16!=-12)break n;K=q+12|0;c[K>>2]=(c[K>>2]|0)+1;break n}while(0);Ei(M,n,q,t)}else{if(p<<16>>16==-12)break;kg(m,t,q)}while(0);i=c[r>>2]|0;if((c[s>>2]|0)>(i|0)){c[r>>2]=i+1;K=c[M+104>>2]|0;a[K+(i*20|0)>>0]=-124;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=C;c[K+(i*20|0)+8>>2]=k;c[K+(i*20|0)+12>>2]=u;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else i=Di(M,132,C,k,u)|0;if(a[(c[M>>2]|0)+81>>0]|0){i=0;break}K=c[M+104>>2]|0;a[K+(i*20|0)+1>>0]=-3;c[K+(i*20|0)+16>>2]=t;i=0}while(0);sl(A);s=0;p=i;i=0;r=k}while(0);do if(!j){if(w<<24>>24!=2){Hm(f,R,109,8,J,i,P,Q)|0;break}k=M+108|0;j=c[k>>2]|0;if((c[M+112>>2]|0)>(j|0)){c[k>>2]=j+1;o=c[M+104>>2]|0;a[o+(j*20|0)>>0]=17;o=o+(j*20|0)+1|0;q=o+19|0;do{a[o>>0]=0;o=o+1|0}while((o|0)<(q|0))}else j=Di(M,17,0,0,0)|0;Hm(f,R,109,8,J,i,P,Q)|0;k=c[k>>2]|0;if(!(a[(c[M>>2]|0)+81>>0]|0))j=(c[M+104>>2]|0)+(((j|0)<0?k+-1|0:j)*20|0)|0;else j=59308;c[j+8>>2]=k}while(0);do if(!y){n=M+108|0;k=c[n>>2]|0;m=M+112|0;j=(c[m>>2]|0)>(k|0);if(!z)if(j){c[n>>2]=k+1;q=c[M+104>>2]|0;a[q+(k*20|0)>>0]=41;b[q+(k*20|0)+2>>1]=0;c[q+(k*20|0)+4>>2]=l;c[q+(k*20|0)+8>>2]=0;c[q+(k*20|0)+12>>2]=r;c[q+(k*20|0)+16>>2]=0;a[q+(k*20|0)+1>>0]=0;q=k;break}else{q=Di(M,41,l,0,r)|0;break}if(j){c[n>>2]=k+1;K=c[M+104>>2]|0;a[K+(k*20|0)>>0]=36;b[K+(k*20|0)+2>>1]=0;c[K+(k*20|0)+4>>2]=C;c[K+(k*20|0)+8>>2]=0;c[K+(k*20|0)+12>>2]=0;c[K+(k*20|0)+16>>2]=0;a[K+(k*20|0)+1>>0]=0}else k=Di(M,36,C,0,0)|0;l=c[n>>2]|0;j=(c[m>>2]|0)>(l|0);if(!(c[R+56>>2]|0))if(j){c[n>>2]=l+1;q=c[M+104>>2]|0;a[q+(l*20|0)>>0]=127;b[q+(l*20|0)+2>>1]=0;c[q+(l*20|0)+4>>2]=C;c[q+(l*20|0)+8>>2]=r;c[q+(l*20|0)+12>>2]=0;c[q+(l*20|0)+16>>2]=0;a[q+(l*20|0)+1>>0]=0;q=k;break}else{Di(M,127,C,r,0)|0;q=k;break}else if(j){c[n>>2]=l+1;q=c[M+104>>2]|0;a[q+(l*20|0)>>0]=90;b[q+(l*20|0)+2>>1]=0;c[q+(l*20|0)+4>>2]=C;c[q+(l*20|0)+8>>2]=0;c[q+(l*20|0)+12>>2]=r;c[q+(l*20|0)+16>>2]=0;a[q+(l*20|0)+1>>0]=0;q=k;break}else{Di(M,90,C,0,r)|0;q=k;break}}else{if(c[R+56>>2]|0){q=0;break}k=c[P>>2]|0;if(!(a[i+(k-J)>>0]|0)){q=0;break}l=M+108|0;j=c[l>>2]|0;if((c[M+112>>2]|0)>(j|0)){c[l>>2]=j+1;K=c[M+104>>2]|0;a[K+(j*20|0)>>0]=28;b[K+(j*20|0)+2>>1]=0;c[K+(j*20|0)+4>>2]=k;c[K+(j*20|0)+8>>2]=s;c[K+(j*20|0)+12>>2]=r;c[K+(j*20|0)+16>>2]=0;a[K+(j*20|0)+1>>0]=0}else j=Di(M,28,k,s,r)|0;if(a[(c[M>>2]|0)+81>>0]|0){q=0;break}q=c[M+104>>2]|0;a[q+(j*20|0)+1>>0]=-3;c[q+(j*20|0)+16>>2]=p<<16>>16;q=0}while(0);do if(!(c[R+56>>2]|0))Im(f,R,I,c[P>>2]|0,c[Q>>2]|0,r,p,(a[L>>0]|0)==0&1,11,w,v);else{j=c[R+64>>2]|0;o:do if(!j)p=0;else while(1){if((c[j>>2]|0)==(T|0)){p=j;break o}j=c[j+24>>2]|0;if(!j){p=0;break}}while(0);o=c[H>>2]|0;o=(o|0)==0?f:o;n=o+204|0;m=c[n>>2]|0;l=o+252|0;p:do if((m|0)>0){j=c[l>>2]|0;k=0;do{if((c[j+(k<<2)>>2]|0)==(R|0))break p;k=k+1|0}while((k|0)<(m|0));k=l;S=295}else{k=l;j=c[l>>2]|0;S=295}while(0);q:do if((S|0)==295){do if(!(mb()|0)){S=(m<<2)+4|0;j=sb(j,S,((S|0)<0)<<31>>31)|0;if(!j)break;c[k>>2]=j;S=c[n>>2]|0;c[n>>2]=S+1;c[j+(S<<2)>>2]=R;break q}while(0);j=c[o>>2]|0;k=j+81|0;if(a[k>>0]|0)break;if(a[j+82>>0]|0)break;a[k>>0]=1;if((c[j+180>>2]|0)>0)c[j+264>>2]=1;S=j+272|0;c[S>>2]=(c[S>>2]|0)+1;j=c[j+236>>2]|0;if(!j)break;c[j+12>>2]=7}while(0);m=c[H>>2]|0;a[((m|0)==0?f:m)+21>>0]=1;m=M+108|0;do if(x){j=c[m>>2]|0;k=M+112|0;if((c[k>>2]|0)>(j|0)){c[m>>2]=j+1;S=c[M+104>>2]|0;a[S+(j*20|0)>>0]=117;b[S+(j*20|0)+2>>1]=0;c[S+(j*20|0)+4>>2]=J;c[S+(j*20|0)+8>>2]=0;c[S+(j*20|0)+12>>2]=0;c[S+(j*20|0)+16>>2]=0;a[S+(j*20|0)+1>>0]=0}else Di(M,117,J,0,0)|0;if(c[H>>2]|0)break;a[f+20>>0]=0}else k=M+112|0;while(0);j=c[m>>2]|0;if((c[k>>2]|0)>(j|0)){c[m>>2]=j+1;S=c[M+104>>2]|0;a[S+(j*20|0)>>0]=10;b[S+(j*20|0)+2>>1]=0;c[S+(j*20|0)+4>>2]=0;c[S+(j*20|0)+8>>2]=1;c[S+(j*20|0)+12>>2]=r;c[S+(j*20|0)+16>>2]=0;a[S+(j*20|0)+1>>0]=0}else j=Di(M,10,0,1,r)|0;do if(!(a[(c[M>>2]|0)+81>>0]|0)){if((j|0)<0)j=(c[m>>2]|0)+-1|0;k=c[M+104>>2]|0;l=k+(j*20|0)+1|0;if(a[l>>0]|0){Ei(M,k+(j*20|0)|0,p,-12);break}if(!p)break;c[k+(j*20|0)+16>>2]=p;a[l>>0]=-12;S=p+12|0;c[S>>2]=(c[S>>2]|0)+1}while(0);j=c[m>>2]|0;if((j|0)<=0)break;b[(c[M+104>>2]|0)+((j+-1|0)*20|0)+2>>1]=2}while(0);if(y){k=c[M+12>>2]|0;j=~s;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0)mk(k,M,j);else c[(c[k+64>>2]|0)+(j<<2)>>2]=c[M+108>>2];sl(A);break}if(z){j=q+1|0;k=M+108|0;l=c[k>>2]|0;if((c[M+112>>2]|0)>(l|0)){c[k>>2]=l+1;S=c[M+104>>2]|0;a[S+(l*20|0)>>0]=5;b[S+(l*20|0)+2>>1]=0;c[S+(l*20|0)+4>>2]=C;c[S+(l*20|0)+8>>2]=j;c[S+(l*20|0)+12>>2]=0;c[S+(l*20|0)+16>>2]=0;a[S+(l*20|0)+1>>0]=0}else Di(M,5,C,j,0)|0;k=c[k>>2]|0;if(!(a[(c[M>>2]|0)+81>>0]|0))j=(c[M+104>>2]|0)+(((q|0)<0?k+-1|0:q)*20|0)|0;else j=59308;c[j+8>>2]=k;break}else{j=M+108|0;k=c[j>>2]|0;if((c[M+112>>2]|0)>(k|0)){c[j>>2]=k+1;S=c[M+104>>2]|0;a[S+(k*20|0)>>0]=11;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=0;c[S+(k*20|0)+8>>2]=q;c[S+(k*20|0)+12>>2]=0;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0}else Di(M,11,0,q,0)|0;k=c[j>>2]|0;if(!(a[(c[M>>2]|0)+81>>0]|0))j=(c[M+104>>2]|0)+(((q|0)<0?k+-1|0:q)*20|0)|0;else j=59308;c[j+8>>2]=k;break}}while(0);do if(!(a[L>>0]|0)){if(c[f+120>>2]|0)break;if(!(c[f+112>>2]|0))break;Sm(f)}while(0);if(!D)break;j=M+108|0;k=c[j>>2]|0;if((c[M+112>>2]|0)>(k|0)){c[j>>2]=k+1;f=c[M+104>>2]|0;a[f+(k*20|0)>>0]=81;b[f+(k*20|0)+2>>1]=0;c[f+(k*20|0)+4>>2]=D;c[f+(k*20|0)+8>>2]=1;c[f+(k*20|0)+12>>2]=0;c[f+(k*20|0)+16>>2]=0;a[f+(k*20|0)+1>>0]=0}else Di(M,81,D,1,0)|0;Wi(M,1);if(a[(c[M>>2]|0)+81>>0]|0)break;yc(c[M+116>>2]|0,44614,-1,1,0)|0}while(0);if(O)c[O+240>>2]=N}else i=0}else i=0}else i=0;while(0);qi(T,g);if(h|0)ni(T,h);if(!i){Ra=U;return}if(T|0){if(c[T+480>>2]|0){Xd(T,i);Ra=U;return}h=i;if((c[T+304>>2]|0)>>>0<=h>>>0?(c[T+308>>2]|0)>>>0>h>>>0:0){T=T+300|0;c[i>>2]=c[T>>2];c[T>>2]=i;Ra=U;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);Ra=U;return}else{T=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-T;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);Ra=U;return}}function tj(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 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,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,_=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;Aa=Ra;Ra=Ra+128|0;ea=Aa+48|0;aa=Aa+40|0;S=Aa+32|0;V=Aa+24|0;U=Aa+16|0;T=Aa+8|0;r=Aa;da=Aa+88|0;fa=Aa+56|0;va=Aa+52|0;c[va>>2]=0;za=c[f>>2]|0;a:do if((c[f+36>>2]|0)==0?(y=za+81|0,(a[y>>0]|0)==0):0){m=c[g+8>>2]|0;if(!m)l=g+12|0;else{n=c[za+16>>2]|0;l=0;while(1)if((c[n+(l<<4)+12>>2]|0)==(m|0))break;else l=l+1|0;l=n+(l<<4)|0}ya=bd(f,0,c[g+16>>2]|0,c[l>>2]|0)|0;l=c[f>>2]|0;m=g+24|0;n=c[m>>2]|0;do if(n|0){if(l|0?c[l+480>>2]|0:0){Vi(l,n);break}ua=n+32|0;wa=(c[ua>>2]|0)+-1|0;c[ua>>2]=wa;if(!wa)Vi(l,n)}while(0);c[m>>2]=ya;if(ya|0){wa=ya+32|0;c[wa>>2]=(c[wa>>2]|0)+1;b:do if(a[g+45>>0]&2){p=c[g+72>>2]|0;l=c[ya+8>>2]|0;c:do if(l|0){q=d[208+(d[p>>0]|0)>>0]|0;while(1){n=c[l>>2]|0;wa=a[n>>0]|0;m=(d[208+(wa&255)>>0]|0)-q|0;if(!(wa<<24>>24==0|(m|0)!=0)){o=p;do{n=n+1|0;o=o+1|0;wa=a[n>>0]|0;m=(d[208+(wa&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(wa<<24>>24==0|(m|0)!=0))}if(!m)break;l=c[l+20>>2]|0;if(!l)break c}c[g+76>>2]=l;break b}while(0);c[r>>2]=p;c[r+4>>2]=0;cd(f,41107,r);a[f+17>>0]=1;break a}while(0);n=c[f>>2]|0;ua=ya+72|0;s=c[ua>>2]|0;if(!s)Z=-1e6;else{m=c[n+16>>2]|0;l=0;while(1)if((c[m+(l<<4)+12>>2]|0)==(s|0)){Z=l;break}else l=l+1|0}do if(!(0==0?(c[n+32>>2]&262144|0)==0:0)?(t=c[(c[n+16>>2]|0)+28>>2]|0,(a[f+146>>0]|0)==0):0){if((s|0)!=(t|0)?(u=c[t+48>>2]|0,(u|0)!=0):0){r=ya+68|0;q=u;l=0;do{p=c[q+8>>2]|0;if((c[p+24>>2]|0)==(s|0)){n=c[p+4>>2]|0;o=c[ya>>2]|0;wa=a[n>>0]|0;m=(d[208+(wa&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0;if(!(wa<<24>>24==0|(m|0)!=0))do{n=n+1|0;o=o+1|0;wa=a[n>>0]|0;m=(d[208+(wa&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(wa<<24>>24==0|(m|0)!=0));if(!m){if(!l)l=c[r>>2]|0;c[p+32>>2]=l;l=p}}q=c[q>>2]|0}while((q|0)!=0);if(!l)xa=43}else xa=43;if((xa|0)==43){l=c[ya+68>>2]|0;if(!l){xa=65;break}}if(!h){m=0;n=l;do{if((a[n+8>>0]|0)==122)m=m|d[n+9>>0];n=c[n+32>>2]|0}while((n|0)!=0)}else{m=0;x=l;do{d:do if((a[x+8>>0]|0)==122){n=c[x+16>>2]|0;e:do if(n|0){w=c[h>>2]|0;if((w|0)<=0)break d;v=c[n+4>>2]|0;if((v|0)<=0)break d;s=c[n>>2]|0;q=0;while(1){t=c[h+4+(q*20|0)+4>>2]|0;u=d[208+(d[t>>0]|0)>>0]|0;r=0;do{o=c[s+(r<<3)>>2]|0;wa=a[o>>0]|0;n=(d[208+(wa&255)>>0]|0)-u|0;if(!(wa<<24>>24==0|(n|0)!=0)){p=t;do{o=o+1|0;p=p+1|0;wa=a[o>>0]|0;n=(d[208+(wa&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0}while(!(wa<<24>>24==0|(n|0)!=0))}if(!n)break e;r=r+1|0}while((r|0)<(v|0));q=q+1|0;if((q|0)>=(w|0))break d}}while(0);m=m|d[x+9>>0]}while(0);x=c[x+32>>2]|0}while((x|0)!=0)}if(!m)xa=65}else xa=65;while(0);if((xa|0)==65){m=0;l=0}sa=(c[ya+12>>2]|0)!=0;if((Sk(f,ya)|0)==0?(Fm(f,ya,m)|0)==0:0){_=f+40|0;ga=c[_>>2]|0;s=ga+1|0;c[_>>2]=s;ha=ya+36|0;ba=ya+8|0;o=c[ba>>2]|0;f:do if(c[ha>>2]&32)if(!o){p=0;o=ga;n=0}else{n=o;while(1){xa=n+55|0;if(((d[xa>>0]|d[xa+1>>0]<<8)&3)==2){xa=73;break f}n=c[n+20>>2]|0;if(!n){n=0;xa=73;break}}}else{n=0;xa=73}while(0);if((xa|0)==73)if(!o){p=0;o=ga}else{p=0;r=ga;q=s;do{r=(n|0)==(o|0)?q:r;q=q+1|0;p=p+1|0;o=c[o+20>>2]|0}while((o|0)!=0);c[_>>2]=q;o=r}$=(k|0)!=0;if($){o=c[k+28>>2]|0;s=c[k+32>>2]|0;c[_>>2]=ga}Y=g+48|0;c[Y>>2]=o;ta=ya+42|0;t=p+2+(p+(b[ta>>1]|0)<<2)|0;g:do if(c[za+272>>2]|0)if(!(a[y>>0]|0))xa=89;else break a;else{do if(!(0<0|(0==0?(e[za+276>>1]|0)>>>0>>0:0))){q=za+300|0;r=c[q>>2]|0;if(r|0){c[q>>2]=c[r>>2];wa=za+284|0;c[wa>>2]=(c[wa>>2]|0)+1;wa=r;break g}q=za+296|0;r=c[q>>2]|0;if(!r){q=za+292|0;break}else{c[q>>2]=c[r>>2];wa=za+284|0;c[wa>>2]=(c[wa>>2]|0)+1;wa=r;break g}}else q=za+288|0;while(0);c[q>>2]=(c[q>>2]|0)+1;xa=89}while(0);if((xa|0)==89)wa=_d(za,t,0)|0;if(wa|0){ra=wa+(b[ta>>1]<<2)|0;ca=ra+(p<<2)|0;W=p+1|0;gw(ca|0,1,W|0)|0;a[ca+W>>0]=0;qa=b[ta>>1]|0;q=qa<<16>>16;if(qa<<16>>16>0)gw(wa|0,-1,((q|0)>1?q:1)<<2|0)|0;X=fa+12|0;c[X>>2]=0;c[X+4>>2]=0;c[X+8>>2]=0;c[X+12>>2]=0;c[X+16>>2]=0;c[fa>>2]=f;c[fa+4>>2]=g;c[fa+8>>2]=k;X=fa+24|0;b[X>>1]=512;h:do if((c[h>>2]|0)>0){F=da+4|0;H=da+8|0;I=da+12|0;J=da+24|0;K=(n|0)==0;M=za+16|0;N=ya+4|0;O=fa+20|0;P=f+200|0;Q=f+240|0;R=ya+40|0;B=0;t=0;D=0;E=0;i:while(1){C=h+4+(E*20|0)|0;u=c[C>>2]|0;if(u){v=e[X>>1]|0;b[X>>1]=v&28655;q=c[fa>>2]|0;c[da>>2]=q;c[F>>2]=125;c[H>>2]=126;c[I>>2]=0;c[J>>2]=fa;w=u+24|0;r=q;pa=r+208|0;qa=(c[pa>>2]|0)+(c[w>>2]|0)|0;c[pa>>2]=qa;r=c[(c[r>>2]|0)+120>>2]|0;if((r|0)<(qa|0)){xa=98;break}_j(da,u)|0;q=c[da>>2]|0;qa=q+208|0;c[qa>>2]=(c[qa>>2]|0)-(c[w>>2]|0);qa=b[X>>1]|0;pa=u+4|0;c[pa>>2]=c[pa>>2]|qa&-32752&65535;b[X>>1]=v&36880|qa&65535;if((c[O>>2]|0)>0)break;if((c[q+36>>2]|0)>=1){xa=919;break h}}q=b[ta>>1]|0;j:do if(q<<16>>16>0){A=c[N>>2]|0;x=c[h+4+(E*20|0)+4>>2]|0;z=d[208+(d[x>>0]|0)>>0]|0;w=q<<16>>16;y=0;while(1){v=c[A+(y<<4)>>2]|0;qa=a[v>>0]|0;q=(d[208+(qa&255)>>0]|0)-z|0;if(!(qa<<24>>24==0|(q|0)!=0)){r=x;u=v;do{u=u+1|0;r=r+1|0;qa=a[u>>0]|0;q=(d[208+(qa&255)>>0]|0)-(d[208+(d[r>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(q|0)!=0))}if(!q)break;q=y+1|0;if((q|0)<(w|0))y=q;else{xa=114;break j}}do if((y|0)==(b[R>>1]|0)){r=c[C>>2]|0;t=1;q=D}else{if(K){r=B;q=D;break}r=B;q=(a[A+(y<<4)+15>>0]&1)==0?D:1}while(0);c[wa+(y<<2)>>2]=E;z=q;w=r;x=t}else{x=c[h+4+(E*20|0)+4>>2]|0;xa=114}while(0);if((xa|0)==114){xa=0;if(!K){xa=128;break}v=a[x>>0]|0;u=d[208+(v&255)>>0]|0;q=u+-95|0;v=v<<24>>24==0;if(!(v|(q|0)!=0)){r=58070;t=x;do{t=t+1|0;r=r+1|0;qa=a[t>>0]|0;q=(d[208+(qa&255)>>0]|0)-(d[208+(d[r>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(q|0)!=0))}do if(q|0){q=u+-114|0;if(!(v|(q|0)!=0)){r=40352;t=x;do{t=t+1|0;r=r+1|0;qa=a[t>>0]|0;q=(d[208+(qa&255)>>0]|0)-(d[208+(d[r>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(q|0)!=0))}if(!q)break;q=u+-111|0;if(!(v|(q|0)!=0)){r=58078;t=x;do{t=t+1|0;r=r+1|0;qa=a[t>>0]|0;q=(d[208+(qa&255)>>0]|0)-(d[208+(d[r>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(q|0)!=0))}if(q|0){xa=128;break i}}while(0);y=-1;z=D;w=c[C>>2]|0;x=1;v=40352}q=c[ya>>2]|0;r=c[(c[M>>2]|0)+(Z<<4)>>2]|0;t=c[f>>2]|0;do if(!(a[t+165>>0]|0)){if(a[P>>0]|0)break;u=c[t+312>>2]|0;if(!u)break;q=$a[u&127](c[t+316>>2]|0,23,q,v,r,c[Q>>2]|0)|0;if((q|0)==1){xa=134;break i}if((q|2|0)!=2){xa=136;break i}if((q|0)!=2)break;c[wa+(y<<2)>>2]=-1}while(0);E=E+1|0;if((E|0)>=(c[h>>2]|0)){S=w;N=x;O=z;xa=140;break h}else{B=w;t=x;D=z}}if((xa|0)==98){c[T>>2]=r;cd(q,41637,T)}else if((xa|0)==128){c[U>>2]=x;cd(f,44776,U);a[f+17>>0]=1;xa=918;break}else if((xa|0)==134){cd(f,39216,V);c[f+12>>2]=23;xa=919;break}else if((xa|0)==136){cd(f,39231,S);c[f+12>>2]=1;xa=919;break}xa=919}else{S=0;N=0;O=0;xa=140}while(0);k:do if((xa|0)==140){pa=(N&255)+(O&255)|0;ja=pa&255;M=ya+56|0;oa=((c[M>>2]|0)!=0)<<31>>31;qa=g+64|0;c[qa>>2]=oa;c[qa+4>>2]=((oa|0)<0)<<31>>31;pa=pa&255;l:do if(0==0?(c[(c[f>>2]|0)+32>>2]&16384|0)==0:0)ia=0;else{q=c[ya+16>>2]|0;y=c[ya>>2]|0;m:do if(!q)x=0;else{w=ya+40|0;r=(y|0)==0;if(!pa){if(r){u=q;q=0;while(1){if(!(c[u+8>>2]|0)){ia=2;break l}t=c[u+20>>2]|0;n:do if((t|0)>0){r=0;do{if((c[wa+(c[u+36+(r<<3)>>2]<<2)>>2]|0)>-1){q=1;break n}r=r+1|0}while((r|0)<(t|0))}while(0);u=c[u+4>>2]|0;if(!u){x=q;break m}}}v=q;q=0;while(1){t=c[v+8>>2]|0;if(t|0){qa=a[y>>0]|0;r=(d[208+(qa&255)>>0]|0)-(d[208+(d[t>>0]|0)>>0]|0)|0;if(!(qa<<24>>24==0|(r|0)!=0)){u=y;do{u=u+1|0;t=t+1|0;qa=a[u>>0]|0;r=(d[208+(qa&255)>>0]|0)-(d[208+(d[t>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(r|0)!=0))}if(!r){ia=2;break l}}t=c[v+20>>2]|0;o:do if((t|0)>0){r=0;do{if((c[wa+(c[v+36+(r<<3)>>2]<<2)>>2]|0)>-1){q=1;break o}r=r+1|0}while((r|0)<(t|0))}while(0);v=c[v+4>>2]|0;if(!v){x=q;break m}}}if(r){r=0;while(1){if(!(c[q+8>>2]|0)){ia=2;break l}u=c[q+20>>2]|0;p:do if((u|0)>0){t=0;do{v=c[q+36+(t<<3)>>2]|0;if((c[wa+(v<<2)>>2]|0)>-1){r=1;break p}t=t+1|0;if((v|0)==(b[w>>1]|0)){r=1;break p}}while((t|0)<(u|0))}while(0);q=c[q+4>>2]|0;if(!q){x=r;break m}}}r=0;while(1){u=c[q+8>>2]|0;if(u|0){qa=a[y>>0]|0;t=(d[208+(qa&255)>>0]|0)-(d[208+(d[u>>0]|0)>>0]|0)|0;if(!(qa<<24>>24==0|(t|0)!=0)){v=y;do{v=v+1|0;u=u+1|0;qa=a[v>>0]|0;t=(d[208+(qa&255)>>0]|0)-(d[208+(d[u>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(t|0)!=0))}if(!t){ia=2;break l}}u=c[q+20>>2]|0;q:do if((u|0)>0){t=0;do{v=c[q+36+(t<<3)>>2]|0;if((c[wa+(v<<2)>>2]|0)>-1){r=1;break q}t=t+1|0;if((v|0)==(b[w>>1]|0)){r=1;break q}}while((t|0)<(u|0))}while(0);q=c[q+4>>2]|0;if(!q){x=r;break}}}while(0);u=c[ua>>2]|0;v=c[u+68>>2]|0;if(!v){r=u+60|0;q=u+64|0}else{r=a[y>>0]|0;if(!(r<<24>>24))q=0;else{q=0;t=y;do{t=t+1|0;q=G(q+(d[208+(r&255)>>0]|0)|0,-1640531535)|0;r=a[t>>0]|0}while(r<<24>>24!=0)}q=(q>>>0)%((c[u+56>>2]|0)>>>0)|0;r=v+(q<<3)|0;q=v+(q<<3)+4|0}r=c[r>>2]|0;r:do if(!r)q=59292;else{w=d[208+(d[y>>0]|0)>>0]|0;while(1){q=c[q>>2]|0;r=r+-1|0;u=c[q+12>>2]|0;qa=a[u>>0]|0;t=(d[208+(qa&255)>>0]|0)-w|0;if(!(qa<<24>>24==0|(t|0)!=0)){v=y;do{u=u+1|0;v=v+1|0;qa=a[u>>0]|0;t=(d[208+(qa&255)>>0]|0)-(d[208+(d[v>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(t|0)!=0))}if(!t)break r;if(!r){q=59292;break}}}while(0);q=c[q+8>>2]|0;if(!q){ia=x;break}r=q;q=x;while(1){if(Jm(ya,r,wa,pa)|0)if(!(a[r+26>>0]|0))q=1;else{ia=2;break l}r=c[r+12>>2]|0;if(!r){ia=q;break}}}while(0);if((j|0)==5){c[va>>2]=1;q=1}else q=0;r=c[ba>>2]|0;if(r){J=(pa|0)!=0|(ia|0)>1;z=f+44|0;A=da+20|0;B=da+4|0;C=da+24|0;D=N<<24>>24==0;E=da+20|0;F=da+4|0;H=da+24|0;I=(j|0)==11;y=0;while(1){s:do if(J|(r|0)==(n|0))xa=210;else{t=c[r+36>>2]|0;if(t|0){c[da>>2]=0;c[da+4>>2]=0;c[da+8>>2]=0;c[da+12>>2]=0;c[da+16>>2]=0;c[da+20>>2]=0;c[B>>2]=136;c[C>>2]=wa;_j(da,t)|0;t=a[A>>0]|0;u=t&-3;if(D){a[A>>0]=u;t=u}if(t<<24>>24){xa=210;break}}v=r+50|0;if(!(b[v>>1]|0)){xa=233;break}w=r+4|0;x=r+40|0;t:do if(D){u=0;while(1){t=b[(c[w>>2]|0)+(u<<1)>>1]|0;if(t<<16>>16>-1)t=(c[wa+(t<<16>>16<<2)>>2]|0)>>>31^1;else{t=c[(c[x>>2]|0)+4+(u*20|0)>>2]|0;c[da>>2]=0;c[da+4>>2]=0;c[da+8>>2]=0;c[da+12>>2]=0;c[da+16>>2]=0;c[da+20>>2]=0;c[F>>2]=136;c[H>>2]=wa;if(!t)t=0;else{_j(da,t)|0;t=a[E>>0]|0}t=(t&-3)<<24>>24!=0&1}u=u+1|0;if(t|0)break t;if(u>>>0>=(e[v>>1]|0)>>>0){xa=233;break s}}}else{u=0;while(1){t=b[(c[w>>2]|0)+(u<<1)>>1]|0;if(t<<16>>16>-1)t=(c[wa+(t<<16>>16<<2)>>2]|0)>>>31^1;else{t=c[(c[x>>2]|0)+4+(u*20|0)>>2]|0;c[da>>2]=0;c[da+4>>2]=0;c[da+8>>2]=0;c[da+12>>2]=0;c[da+16>>2]=0;c[da+20>>2]=0;c[F>>2]=136;c[H>>2]=wa;if(!t)t=0;else{_j(da,t)|0;t=a[E>>0]|0}t=t<<24>>24!=0&1}u=u+1|0;if(t|0)break t;if(u>>>0>=(e[v>>1]|0)>>>0){xa=233;break s}}}while(0);t=(c[z>>2]|0)+1|0;c[z>>2]=t+(e[r+52>>1]|0);if(!I){xa=231;break}q=(a[r+54>>0]|0)==5?1:q;xa=231}while(0);if((xa|0)==210){t=(c[z>>2]|0)+1|0;c[z>>2]=t+(e[r+52>>1]|0);xa=231}do if((xa|0)==231){xa=0;if(!t){xa=233;break}u=y+1|0}while(0);if((xa|0)==233){xa=0;u=y+1|0;a[ca+u>>0]=0;t=0}c[ra+(y<<2)>>2]=t;r=c[r+20>>2]|0;if(!r)break;else y=u}c[va>>2]=q}if(q|0)gw(ca|0,1,W|0)|0;ma=f+8|0;q=c[ma>>2]|0;if(!q){t=c[f>>2]|0;do if(!(c[f+116>>2]|0)){if(b[t+76>>1]&8)break;a[f+23>>0]=1}while(0);u:do if(c[t+272>>2]|0)if(!(a[t+81>>0]|0))xa=252;else{xa=918;break k}else{do if((e[t+276>>1]|0)>=224){q=t+300|0;r=c[q>>2]|0;if(r|0){c[q>>2]=c[r>>2];qa=t+284|0;c[qa>>2]=(c[qa>>2]|0)+1;break u}q=t+296|0;r=c[q>>2]|0;if(!r){q=t+292|0;break}else{c[q>>2]=c[r>>2];qa=t+284|0;c[qa>>2]=(c[qa>>2]|0)+1;break u}}else q=t+288|0;while(0);c[q>>2]=(c[q>>2]|0)+1;xa=252}while(0);if((xa|0)==252)r=_d(t,224,0)|0;if(!r){xa=918;break}D=r+104|0;F=D+120|0;do{c[D>>2]=0;D=D+4|0}while((D|0)<(F|0));c[r>>2]=t;q=t+4|0;t=c[q>>2]|0;if(t|0)c[t+4>>2]=r;c[r+8>>2]=t;c[r+4>>2]=0;c[q>>2]=r;c[r+20>>2]=381479589;c[r+12>>2]=f;c[ma>>2]=r;Di(r,61,0,1,0)|0;la=r}else la=q;ka=f+18|0;if(!(a[ka>>0]|0)){qa=la+149|0;oa=d[qa>>0]|d[qa+1>>0]<<8|32;a[qa>>0]=oa;a[qa+1>>0]=oa>>8}J=(l|0)!=0;T=(ia|0)!=0;z=(J|T)&1;qa=f+116|0;B=c[qa>>2]|0;B=(B|0)==0?f:B;q=B+84|0;r=c[q>>2]|0;A=1<>2]=r|A;if((Z|0)!=1)break;y=c[B>>2]|0;q=y+16|0;if(c[(c[q>>2]|0)+20>>2]|0)break;if(a[B+199>>0]|0)break;r=Pe(c[y>>2]|0,0,y,da,0,542)|0;if(r|0){cd(B,32157,aa);c[B+12>>2]=r;break}oa=c[da>>2]|0;c[(c[q>>2]|0)+20>>2]=oa;q=c[y+92>>2]|0;u=c[oa+4>>2]|0;c[u+4>>2]=c[oa>>2];do if(!(b[u+22>>1]&2)){v=u+32|0;w=u+36|0;x=(c[v>>2]|0)-(c[w>>2]|0)|0;do if((q+-512|0)>>>0<65025){if(q+-1&q|0)break;c[v>>2]=q;t=u+80|0;q=c[t>>2]|0;if(!q)break;r=q+-4|0;c[t>>2]=r;q=r;do if((c[14816]|0)>>>0<=q>>>0)if((c[14817]|0)>>>0>q>>>0){c[14979]=(c[14979]|0)+-1;c[r>>2]=c[14819];c[14819]=r;oa=(c[14820]|0)+1|0;c[14820]=oa;c[14821]=(oa|0)<(c[14815]|0)&1;break}else{q=Wa[c[29352>>2]&127](r)|0;xa=274;break}else{q=Wa[c[29352>>2]&127](r)|0;xa=274}while(0);do if((xa|0)==274){c[14980]=(c[14980]|0)-q;if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{oa=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);c[t>>2]=0}while(0);oa=Se(c[u>>2]|0,v,x)|0;c[w>>2]=(c[v>>2]|0)-(x&65535);if((oa|0)!=7)break;q=y+81|0;do if(!(a[q>>0]|0)){if(a[y+82>>0]|0)break;a[q>>0]=1;if((c[y+180>>2]|0)>0)c[y+264>>2]=1;q=y+272|0;c[q>>2]=(c[q>>2]|0)+1;q=c[y+236>>2]|0;if(!q)break;c[q+12>>2]=7}while(0);break v}while(0)}while(0);oa=B+80|0;c[oa>>2]=c[oa>>2]|A;oa=B+20|0;a[oa>>0]=d[oa>>0]|z;if(!(c[M>>2]|0)){t=f+44|0;u=c[t>>2]|0;w=u+2|0;c[t>>2]=w;if(J|O<<24>>24!=0|T){q=w+(b[ta>>1]|0)|0;c[t>>2]=q;x=u+3|0}else{x=0;q=w}r=q+1|0;if(J|(ia|pa|0)!=0){c[t>>2]=r;y=r;v=q+2|0;q=r}else{y=w;v=r}c[t>>2]=q+(b[ta>>1]|0);F=u+1|0;aa=w;K=x;Q=y}else{F=0;v=0;aa=0;K=0;Q=0}if(sa){oa=f+240|0;na=c[oa>>2]|0;c[oa>>2]=c[ya>>2];Gm(f,ya,i,o);oa=f}else{na=0;oa=0}w:do if(!i)xa=302;else{t=e[X>>1]|0;b[X>>1]=t&28655;q=c[fa>>2]|0;c[da>>2]=q;c[da+4>>2]=125;c[da+8>>2]=126;c[da+12>>2]=0;c[da+24>>2]=fa;u=i+24|0;r=q+208|0;Z=(c[r>>2]|0)+(c[u>>2]|0)|0;c[r>>2]=Z;r=c[(c[q>>2]|0)+120>>2]|0;do if((r|0)>=(Z|0)){_j(da,i)|0;q=c[da>>2]|0;ea=q+208|0;c[ea>>2]=(c[ea>>2]|0)-(c[u>>2]|0);ea=b[X>>1]|0;da=i+4|0;c[da>>2]=c[da>>2]|ea&-32752&65535;b[X>>1]=t&36880|ea&65535;if((c[fa+20>>2]|0)>0)break;if((c[q+36>>2]|0)<1){xa=302;break w}else break w}else{c[ea>>2]=r;cd(q,41637,ea)}while(0)}while(0);x:do if((xa|0)==302){if(c[M>>2]|0){H=c[ma>>2]|0;m=c[f>>2]|0;l=c[ya+64>>2]|0;y:do if(!l)C=0;else while(1){if((c[l>>2]|0)==(m|0)){C=l;break y}l=c[l+24>>2]|0;if(!l){C=0;break}}while(0);y=b[ta>>1]|0;A=(y<<16>>16)+2|0;x=c[Y>>2]|0;F=c[_>>2]|0;c[_>>2]=F+1;D=H+108|0;l=c[D>>2]|0;E=H+112|0;if((c[E>>2]|0)>(l|0)){c[D>>2]=l+1;r=c[H+104>>2]|0;a[r+(l*20|0)>>0]=113;b[r+(l*20|0)+2>>1]=0;c[r+(l*20|0)+4>>2]=F;c[r+(l*20|0)+8>>2]=A;c[r+(l*20|0)+12>>2]=0;c[r+(l*20|0)+16>>2]=0;a[r+(l*20|0)+1>>0]=0;r=l}else r=Di(H,113,F,A,0)|0;B=f+44|0;u=c[B>>2]|0;z=u+1|0;w=u+A|0;v=w+1|0;w=w+2|0;c[B>>2]=w;B=ql(f,g,i,0,0,4,0)|0;if(!B)break;if((b[ta>>1]|0)>0){s=u+3|0;t=H+104|0;q=0;do{l=c[wa+(q<<2)>>2]|0;z:do if((l|0)>-1){l=c[h+4+(l*20|0)>>2]|0;p=q+s|0;do if(l){if((a[l>>0]|0)!=-88){o=Jj(f,l,p)|0;break}o=c[ma>>2]|0;l=c[l+28>>2]|0;m=o+108|0;n=c[m>>2]|0;if((c[o+112>>2]|0)>(n|0)){c[m>>2]=n+1;va=c[o+104>>2]|0;a[va+(n*20|0)>>0]=78;b[va+(n*20|0)+2>>1]=0;c[va+(n*20|0)+4>>2]=l;c[va+(n*20|0)+8>>2]=p;c[va+(n*20|0)+12>>2]=0;c[va+(n*20|0)+16>>2]=0;a[va+(n*20|0)+1>>0]=0;break z}else{Di(o,78,l,p,0)|0;break z}}else o=Jj(f,0,p)|0;while(0);if((o|0)==(p|0))break;l=c[ma>>2]|0;if(!l)break;m=l+108|0;n=c[m>>2]|0;if((c[l+112>>2]|0)>(n|0)){c[m>>2]=n+1;va=c[l+104>>2]|0;a[va+(n*20|0)>>0]=79;b[va+(n*20|0)+2>>1]=0;c[va+(n*20|0)+4>>2]=o;c[va+(n*20|0)+8>>2]=p;c[va+(n*20|0)+12>>2]=0;c[va+(n*20|0)+16>>2]=0;a[va+(n*20|0)+1>>0]=0;break}else{Di(l,79,o,p,0)|0;break}}else{l=q+s|0;m=c[D>>2]|0;if((c[E>>2]|0)>(m|0)){c[D>>2]=m+1;va=c[t>>2]|0;a[va+(m*20|0)>>0]=-92;b[va+(m*20|0)+2>>1]=0;c[va+(m*20|0)+4>>2]=x;c[va+(m*20|0)+8>>2]=q;c[va+(m*20|0)+12>>2]=l;c[va+(m*20|0)+16>>2]=0;a[va+(m*20|0)+1>>0]=0}else Di(H,164,x,q,l)|0;l=c[D>>2]|0;if((l|0)<=0)break;b[(c[t>>2]|0)+((l+-1|0)*20|0)+2>>1]=1}while(0);q=q+1|0}while((q|0)<(b[ta>>1]|0))}do if(!(c[ha>>2]&32)){l=c[D>>2]|0;if((c[E>>2]|0)>(l|0)){c[D>>2]=l+1;va=c[H+104>>2]|0;a[va+(l*20|0)>>0]=-128;b[va+(l*20|0)+2>>1]=0;c[va+(l*20|0)+4>>2]=x;c[va+(l*20|0)+8>>2]=z;c[va+(l*20|0)+12>>2]=0;c[va+(l*20|0)+16>>2]=0;a[va+(l*20|0)+1>>0]=0}else Di(H,128,x,z,0)|0;p=u+2|0;if(!S){l=c[D>>2]|0;if((c[E>>2]|0)>(l|0)){c[D>>2]=l+1;va=c[H+104>>2]|0;a[va+(l*20|0)>>0]=-128;b[va+(l*20|0)+2>>1]=0;c[va+(l*20|0)+4>>2]=x;c[va+(l*20|0)+8>>2]=p;c[va+(l*20|0)+12>>2]=0;c[va+(l*20|0)+16>>2]=0;a[va+(l*20|0)+1>>0]=0;break}else{Di(H,128,x,p,0)|0;break}}if((a[S>>0]|0)==-88){o=c[ma>>2]|0;l=c[S+28>>2]|0;m=o+108|0;n=c[m>>2]|0;if((c[o+112>>2]|0)>(n|0)){c[m>>2]=n+1;va=c[o+104>>2]|0;a[va+(n*20|0)>>0]=78;b[va+(n*20|0)+2>>1]=0;c[va+(n*20|0)+4>>2]=l;c[va+(n*20|0)+8>>2]=p;c[va+(n*20|0)+12>>2]=0;c[va+(n*20|0)+16>>2]=0;a[va+(n*20|0)+1>>0]=0;break}else{Di(o,78,l,p,0)|0;break}}o=Jj(f,S,p)|0;if((o|0)==(p|0))break;l=c[ma>>2]|0;if(!l)break;m=l+108|0;n=c[m>>2]|0;if((c[l+112>>2]|0)>(n|0)){c[m>>2]=n+1;va=c[l+104>>2]|0;a[va+(n*20|0)>>0]=79;b[va+(n*20|0)+2>>1]=0;c[va+(n*20|0)+4>>2]=o;c[va+(n*20|0)+8>>2]=p;c[va+(n*20|0)+12>>2]=0;c[va+(n*20|0)+16>>2]=0;a[va+(n*20|0)+1>>0]=0;break}else{Di(l,79,o,p,0)|0;break}}else{l=ba;while(1){l=c[l>>2]|0;va=l+55|0;if(((d[va>>0]|d[va+1>>0]<<8)&3)==2)break;else l=l+20|0}l=b[c[l+4>>2]>>1]|0;m=c[D>>2]|0;if((c[E>>2]|0)>(m|0)){c[D>>2]=m+1;va=c[H+104>>2]|0;a[va+(m*20|0)>>0]=-92;b[va+(m*20|0)+2>>1]=0;c[va+(m*20|0)+4>>2]=x;c[va+(m*20|0)+8>>2]=l;c[va+(m*20|0)+12>>2]=z;c[va+(m*20|0)+16>>2]=0;a[va+(m*20|0)+1>>0]=0}else Di(H,164,x,l,z)|0;n=u+3+l|0;l=u+2|0;m=c[D>>2]|0;if((c[E>>2]|0)>(m|0)){c[D>>2]=m+1;va=c[H+104>>2]|0;a[va+(m*20|0)>>0]=79;b[va+(m*20|0)+2>>1]=0;c[va+(m*20|0)+4>>2]=n;c[va+(m*20|0)+8>>2]=l;c[va+(m*20|0)+12>>2]=0;c[va+(m*20|0)+16>>2]=0;a[va+(m*20|0)+1>>0]=0;break}else{Di(H,79,n,l,0)|0;break}}while(0);s=(a[B+49>>0]|0)==0;do if(!s){l=c[H>>2]|0;if(!(a[l+81>>0]|0)){va=c[H+104>>2]|0;ta=va+(r*20|0)+1|0;ua=va+(r*20|0)+16|0;kg(l,a[ta>>0]|0,c[ua>>2]|0);a[ta>>0]=0;c[ua>>2]=0;a[va+(r*20|0)>>0]=-86}l=c[D>>2]|0;if((c[E>>2]|0)>(l|0)){c[D>>2]=l+1;va=c[H+104>>2]|0;a[va+(l*20|0)>>0]=117;b[va+(l*20|0)+2>>1]=0;c[va+(l*20|0)+4>>2]=x;c[va+(l*20|0)+8>>2]=0;c[va+(l*20|0)+12>>2]=0;c[va+(l*20|0)+16>>2]=0;a[va+(l*20|0)+1>>0]=0;break}else{Di(H,117,x,0,0)|0;break}}else{l=c[qa>>2]|0;a[((l|0)==0?f:l)+20>>0]=1;l=c[D>>2]|0;if((c[E>>2]|0)>(l|0)){c[D>>2]=l+1;va=c[H+104>>2]|0;a[va+(l*20|0)>>0]=92;b[va+(l*20|0)+2>>1]=0;c[va+(l*20|0)+4>>2]=z;c[va+(l*20|0)+8>>2]=A;c[va+(l*20|0)+12>>2]=v;c[va+(l*20|0)+16>>2]=0;a[va+(l*20|0)+1>>0]=0}else Di(H,92,z,A,v)|0;l=c[D>>2]|0;if((c[E>>2]|0)>(l|0)){c[D>>2]=l+1;va=c[H+104>>2]|0;a[va+(l*20|0)>>0]=121;b[va+(l*20|0)+2>>1]=0;c[va+(l*20|0)+4>>2]=F;c[va+(l*20|0)+8>>2]=w;c[va+(l*20|0)+12>>2]=0;c[va+(l*20|0)+16>>2]=0;a[va+(l*20|0)+1>>0]=0}else Di(H,121,F,w,0)|0;l=c[D>>2]|0;if((c[E>>2]|0)>(l|0)){c[D>>2]=l+1;va=c[H+104>>2]|0;a[va+(l*20|0)>>0]=122;b[va+(l*20|0)+2>>1]=0;c[va+(l*20|0)+4>>2]=F;c[va+(l*20|0)+8>>2]=v;c[va+(l*20|0)+12>>2]=w;c[va+(l*20|0)+16>>2]=0;a[va+(l*20|0)+1>>0]=0}else Di(H,122,F,v,w)|0;sl(B);l=c[D>>2]|0;if((c[E>>2]|0)>(l|0)){c[D>>2]=l+1;va=c[H+104>>2]|0;a[va+(l*20|0)>>0]=36;b[va+(l*20|0)+2>>1]=0;c[va+(l*20|0)+4>>2]=F;c[va+(l*20|0)+8>>2]=0;c[va+(l*20|0)+12>>2]=0;c[va+(l*20|0)+16>>2]=0;a[va+(l*20|0)+1>>0]=0}else l=Di(H,36,F,0,0)|0;if(y<<16>>16<=-2){r=l;break}n=H+104|0;m=0;do{o=m+z|0;p=c[D>>2]|0;if((c[E>>2]|0)>(p|0)){c[D>>2]=p+1;va=c[n>>2]|0;a[va+(p*20|0)>>0]=90;b[va+(p*20|0)+2>>1]=0;c[va+(p*20|0)+4>>2]=F;c[va+(p*20|0)+8>>2]=m;c[va+(p*20|0)+12>>2]=o;c[va+(p*20|0)+16>>2]=0;a[va+(p*20|0)+1>>0]=0}else Di(H,90,F,m,o)|0;m=m+1|0}while((m|0)<(A|0));r=l}while(0);q=c[qa>>2]|0;q=(q|0)==0?f:q;p=q+204|0;o=c[p>>2]|0;n=q+252|0;A:do if((o|0)>0){l=c[n>>2]|0;m=0;do{if((c[l+(m<<2)>>2]|0)==(ya|0))break A;m=m+1|0}while((m|0)<(o|0));m=n;xa=387}else{m=n;l=c[n>>2]|0;xa=387}while(0);B:do if((xa|0)==387){do if(!(mb()|0)){xa=(o<<2)+4|0;l=sb(l,xa,((xa|0)<0)<<31>>31)|0;if(!l)break;c[m>>2]=l;xa=c[p>>2]|0;c[p>>2]=xa+1;c[l+(xa<<2)>>2]=ya;break B}while(0);l=c[q>>2]|0;m=l+81|0;if(a[m>>0]|0)break;if(a[l+82>>0]|0)break;a[m>>0]=1;if((c[l+180>>2]|0)>0)c[l+264>>2]=1;ya=l+272|0;c[ya>>2]=(c[ya>>2]|0)+1;l=c[l+236>>2]|0;if(!l)break;c[l+12>>2]=7}while(0);l=c[D>>2]|0;if((c[E>>2]|0)>(l|0)){c[D>>2]=l+1;ya=c[H+104>>2]|0;a[ya+(l*20|0)>>0]=10;b[ya+(l*20|0)+2>>1]=0;c[ya+(l*20|0)+4>>2]=0;c[ya+(l*20|0)+8>>2]=A;c[ya+(l*20|0)+12>>2]=z;c[ya+(l*20|0)+16>>2]=0;a[ya+(l*20|0)+1>>0]=0}else l=Di(H,10,0,A,z)|0;do if(!(a[(c[H>>2]|0)+81>>0]|0)){if((l|0)<0)l=(c[D>>2]|0)+-1|0;m=c[H+104>>2]|0;n=m+(l*20|0)+1|0;if(a[n>>0]|0){Ei(H,m+(l*20|0)|0,C,-12);break}if(!C)break;c[m+(l*20|0)+16>>2]=C;a[n>>0]=-12;ya=C+12|0;c[ya>>2]=(c[ya>>2]|0)+1}while(0);m=c[D>>2]|0;if((m|0)>0)b[(c[H+104>>2]|0)+((m+-1|0)*20|0)+2>>1]=(j|0)==11?2:j&65535;j=c[qa>>2]|0;a[((j|0)==0?f:j)+21>>0]=1;if(!s){sl(B);break}l=r+1|0;if((c[E>>2]|0)>(m|0)){c[D>>2]=m+1;f=c[H+104>>2]|0;a[f+(m*20|0)>>0]=5;b[f+(m*20|0)+2>>1]=0;c[f+(m*20|0)+4>>2]=F;c[f+(m*20|0)+8>>2]=l;c[f+(m*20|0)+12>>2]=0;c[f+(m*20|0)+16>>2]=0;a[f+(m*20|0)+1>>0]=0}else Di(H,5,F,l,0)|0;m=c[D>>2]|0;if(!(a[(c[H>>2]|0)+81>>0]|0))l=(c[H+104>>2]|0)+(((r|0)<0?m+-1|0:r)*20|0)|0;else l=59308;c[l+8>>2]=m;if((c[E>>2]|0)>(m|0)){c[D>>2]=m+1;f=c[H+104>>2]|0;a[f+(m*20|0)>>0]=117;b[f+(m*20|0)+2>>1]=0;c[f+(m*20|0)+4>>2]=F;c[f+(m*20|0)+8>>2]=0;c[f+(m*20|0)+12>>2]=0;c[f+(m*20|0)+16>>2]=0;a[f+(m*20|0)+1>>0]=0;break}else{Di(H,117,F,0,0)|0;break}}H=f+56|0;Z=c[H>>2]|0;I=Z+-1|0;c[H>>2]=I;do if(!(0==0?(c[za+32>>2]&128|0)==0:0)){if(c[f+120>>2]|0){Y=0;break}if(!((k|0)==0&(a[ka>>0]|0)==0)){Y=0;break}r=f+44|0;q=(c[r>>2]|0)+1|0;c[r>>2]=q;r=la+108|0;t=c[r>>2]|0;if((c[la+112>>2]|0)>(t|0)){c[r>>2]=t+1;Y=c[la+104>>2]|0;a[Y+(t*20|0)>>0]=70;b[Y+(t*20|0)+2>>1]=0;c[Y+(t*20|0)+4>>2]=0;c[Y+(t*20|0)+8>>2]=q;c[Y+(t*20|0)+12>>2]=0;c[Y+(t*20|0)+16>>2]=0;a[Y+(t*20|0)+1>>0]=0;Y=q;break}else{Di(la,70,0,q,0)|0;Y=q;break}}else Y=0;while(0);C:do if(!(c[ha>>2]&32)){q=la+108|0;r=c[q>>2]|0;if((c[la+112>>2]|0)>(r|0)){c[q>>2]=r+1;E=c[la+104>>2]|0;a[E+(r*20|0)>>0]=73;b[E+(r*20|0)+2>>1]=0;c[E+(r*20|0)+4>>2]=0;c[E+(r*20|0)+8>>2]=F;c[E+(r*20|0)+12>>2]=aa;c[E+(r*20|0)+16>>2]=0;a[E+(r*20|0)+1>>0]=0;E=0;C=0;D=0;x=0;X=0;break}else{Di(la,73,0,F,aa)|0;E=0;C=0;D=0;x=0;X=0;break}}else{y=b[n+50>>1]|0;fa=f+44|0;r=c[fa>>2]|0;z=r+1|0;w=y<<16>>16;r=r+w|0;x=r+1|0;c[fa>>2]=x;if(k|0){E=x;C=y;D=z;x=0;X=0;break}A=c[_>>2]|0;c[_>>2]=A+1;t=la+108|0;q=c[t>>2]|0;u=la+112|0;if((c[u>>2]|0)>(q|0)){c[t>>2]=q+1;fa=c[la+104>>2]|0;a[fa+(q*20|0)>>0]=73;b[fa+(q*20|0)+2>>1]=0;c[fa+(q*20|0)+4>>2]=0;c[fa+(q*20|0)+8>>2]=z;c[fa+(q*20|0)+12>>2]=r;c[fa+(q*20|0)+16>>2]=0;a[fa+(q*20|0)+1>>0]=0}else Di(la,73,0,z,r)|0;q=c[t>>2]|0;if((c[u>>2]|0)>(q|0)){c[t>>2]=q+1;fa=c[la+104>>2]|0;a[fa+(q*20|0)>>0]=113;b[fa+(q*20|0)+2>>1]=0;c[fa+(q*20|0)+4>>2]=A;c[fa+(q*20|0)+8>>2]=w;c[fa+(q*20|0)+12>>2]=0;c[fa+(q*20|0)+16>>2]=0;a[fa+(q*20|0)+1>>0]=0}else q=Di(la,113,A,w,0)|0;r=c[ma>>2]|0;u=Ij(f,n)|0;if(!u){E=x;C=y;D=z;x=q;X=A;break}t=c[r>>2]|0;if(!(a[t+81>>0]|0)){C=c[r+104>>2]|0;E=(c[r+108>>2]|0)+-1|0;a[C+(E*20|0)+1>>0]=-9;c[C+(E*20|0)+16>>2]=u;E=x;C=y;D=z;x=q;X=A;break}if(c[t+480>>2]|0){E=x;C=y;D=z;x=q;X=A;break}fa=(c[u>>2]|0)+-1|0;c[u>>2]=fa;if(fa|0){E=x;C=y;D=z;x=q;X=A;break}r=c[u+12>>2]|0;do if(r|0){if(c[r+480>>2]|0){Xd(r,u);E=x;C=y;D=z;x=q;X=A;break C}t=u;if((c[r+304>>2]|0)>>>0>t>>>0)break;if((c[r+308>>2]|0)>>>0<=t>>>0)break;E=r+300|0;c[u>>2]=c[E>>2];c[E>>2]=u;E=x;C=y;D=z;x=q;X=A;break C}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](u);E=x;C=y;D=z;x=q;X=A;break}else{E=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);E=x;C=y;D=z;x=q;X=A;break}}while(0);do if($){Tj(f,i,I,16);W=0;V=1;u=0;w=0}else{q=ql(f,g,i,0,0,(c[va>>2]|0)!=0|(ja<<24>>24!=0|(T|(J|(a[ka>>0]|0)!=0)))?4100:4108,s)|0;if(!q)break x;w=q+24|0;u=c[w>>2]|0;w=c[w+4>>2]|0;r=a[q+49>>0]|0;t=r&255;if(r<<24>>24==1){W=q;V=1;break}fa=c[qa>>2]|0;a[((fa|0)==0?f:fa)+20>>0]=1;if(r<<24>>24!=2){W=q;V=t;break}if((w|0)<0|(o|0)==(w|0)){W=q;V=2;break}W=q;V=(a[ca+(w-ga)>>0]|0)==0?t:0}while(0);do if(!(c[ha>>2]&32)){r=la+108|0;q=c[r>>2]|0;t=la+112|0;if((c[t>>2]|0)>(q|0)){c[r>>2]=q+1;ha=c[la+104>>2]|0;a[ha+(q*20|0)>>0]=-128;b[ha+(q*20|0)+2>>1]=0;c[ha+(q*20|0)+4>>2]=o;c[ha+(q*20|0)+8>>2]=aa;c[ha+(q*20|0)+12>>2]=0;c[ha+(q*20|0)+16>>2]=0;a[ha+(q*20|0)+1>>0]=0}else Di(la,128,o,aa,0)|0;if(V|0){M=0;break}q=c[r>>2]|0;if((c[t>>2]|0)>(q|0)){c[r>>2]=q+1;M=c[la+104>>2]|0;a[M+(q*20|0)>>0]=-108;b[M+(q*20|0)+2>>1]=0;c[M+(q*20|0)+4>>2]=F;c[M+(q*20|0)+8>>2]=aa;c[M+(q*20|0)+12>>2]=0;c[M+(q*20|0)+16>>2]=0;a[M+(q*20|0)+1>>0]=0;M=0;break}else{Di(la,148,F,aa,0)|0;M=0;break}}else{B=C<<16>>16;if(C<<16>>16>0){r=n+4|0;q=0;do{Vj(la,ya,o,b[(c[r>>2]|0)+(q<<1)>>1]|0,q+D|0);q=q+1|0}while((q|0)!=(B|0))}if(V|0){if(!x){M=B;E=D;break}q=c[la>>2]|0;if(a[q+81>>0]|0){M=B;E=D;break}M=c[la+104>>2]|0;ha=M+(x*20|0)+1|0;E=M+(x*20|0)+16|0;kg(q,a[ha>>0]|0,c[E>>2]|0);a[ha>>0]=0;c[E>>2]=0;a[M+(x*20|0)>>0]=-86;M=B;E=D;break}y=gl(za,n)|0;z=la+108|0;q=c[z>>2]|0;A=la+112|0;if((c[A>>2]|0)>(q|0)){c[z>>2]=q+1;ha=c[la+104>>2]|0;a[ha+(q*20|0)>>0]=92;b[ha+(q*20|0)+2>>1]=0;c[ha+(q*20|0)+4>>2]=D;c[ha+(q*20|0)+8>>2]=B;c[ha+(q*20|0)+12>>2]=E;c[ha+(q*20|0)+16>>2]=0;a[ha+(q*20|0)+1>>0]=0}else q=Di(la,92,D,B,E)|0;r=c[la>>2]|0;D:do if(!(a[r+81>>0]|0)){if((q|0)<0)q=(c[z>>2]|0)+-1|0;r=c[la+104>>2]|0;t=r+(q*20|0)|0;do if(C<<16>>16<=-1){x=r+(q*20|0)+1|0;if(a[x>>0]|0)break;if(C<<16>>16==-3){c[r+(q*20|0)+16>>2]=y;a[x>>0]=-3;break D}if(!y)break D;c[r+(q*20|0)+16>>2]=y;a[x>>0]=C;if(C<<16>>16!=-12)break D;ha=y+12|0;c[ha>>2]=(c[ha>>2]|0)+1;break D}while(0);Ei(la,t,y,B)}else{if(C<<16>>16==-12)break;kg(r,B,y)}while(0);q=c[z>>2]|0;if((c[A>>2]|0)>(q|0)){c[z>>2]=q+1;ha=c[la+104>>2]|0;a[ha+(q*20|0)>>0]=-124;b[ha+(q*20|0)+2>>1]=0;c[ha+(q*20|0)+4>>2]=X;c[ha+(q*20|0)+8>>2]=E;c[ha+(q*20|0)+12>>2]=D;c[ha+(q*20|0)+16>>2]=0;a[ha+(q*20|0)+1>>0]=0}else q=Di(la,132,X,E,D)|0;if(a[(c[la>>2]|0)+81>>0]|0){M=0;break}M=c[la+104>>2]|0;a[M+(q*20|0)+1>>0]=-3;c[M+(q*20|0)+16>>2]=B;M=0}while(0);U=(k|0)==0;E:do if(U){q=(V|0)==2;if(!q)sl(W);F:do if(sa)xa=511;else{do if(V|0){if((u|0)>-1)a[ca+(u-ga)>>0]=0;if((w|0)>-1)a[ca+(w-ga)>>0]=0;if(!q)break;if(p>>>0<=(w>>>31^1)>>>0)break;r=la+108|0;p=c[r>>2]|0;q=la+112|0;if((c[q>>2]|0)>(p|0)){c[r>>2]=p+1;D=c[la+104>>2]|0;a[D+(p*20|0)>>0]=17;D=D+(p*20|0)+1|0;F=D+19|0;do{a[D>>0]=0;D=D+1|0}while((D|0)<(F|0))}else p=Di(la,17,0,0,0)|0;Hm(f,ya,109,0,ga,ca,0,0)|0;if(p|0){t=c[r>>2]|0;if(!(a[(c[la>>2]|0)+81>>0]|0))p=(c[la+104>>2]|0)+(((p|0)<0?t+-1|0:p)*20|0)|0;else p=59308;c[p+8>>2]=t}if((w|0)==(o|0)|(u|0)==(o|0)){xa=521;break F}else{xa=515;break F}}while(0);Hm(f,ya,109,0,ga,ca,0,0)|0;xa=511}while(0);do if((xa|0)==511){if(V|0){if((w|0)==(o|0)|(sa|(u|0)==(o|0))){xa=520;break}r=la+108|0;q=la+112|0;xa=515;break}if(!n){r=la+108|0;q=c[r>>2]|0;t=la+112|0;if((c[t>>2]|0)>(q|0)){c[r>>2]=q+1;k=c[la+104>>2]|0;a[k+(q*20|0)>>0]=41;b[k+(q*20|0)+2>>1]=0;c[k+(q*20|0)+4>>2]=F;c[k+(q*20|0)+8>>2]=I;c[k+(q*20|0)+12>>2]=aa;c[k+(q*20|0)+16>>2]=0;a[k+(q*20|0)+1>>0]=0}else q=Di(la,41,F,I,aa)|0;p=c[r>>2]|0;if((c[t>>2]|0)>(p|0)){c[r>>2]=p+1;R=c[la+104>>2]|0;a[R+(p*20|0)>>0]=31;b[R+(p*20|0)+2>>1]=0;c[R+(p*20|0)+4>>2]=o;c[R+(p*20|0)+8>>2]=q;c[R+(p*20|0)+12>>2]=aa;c[R+(p*20|0)+16>>2]=0;a[R+(p*20|0)+1>>0]=0;R=0;P=q;break E}else{Di(la,31,o,q,aa)|0;R=0;P=q;break E}}u=(c[H>>2]|0)+-1|0;c[H>>2]=u;r=la+108|0;p=c[r>>2]|0;t=la+112|0;if((c[t>>2]|0)>(p|0)){c[r>>2]=p+1;k=c[la+104>>2]|0;a[k+(p*20|0)>>0]=36;b[k+(p*20|0)+2>>1]=0;c[k+(p*20|0)+4>>2]=X;c[k+(p*20|0)+8>>2]=I;c[k+(p*20|0)+12>>2]=0;c[k+(p*20|0)+16>>2]=0;a[k+(p*20|0)+1>>0]=0}else Di(la,36,X,I,0)|0;p=c[r>>2]|0;if((c[t>>2]|0)>(p|0)){c[r>>2]=p+1;q=c[la+104>>2]|0;a[q+(p*20|0)>>0]=127;b[q+(p*20|0)+2>>1]=0;c[q+(p*20|0)+4>>2]=X;c[q+(p*20|0)+8>>2]=E;c[q+(p*20|0)+12>>2]=0;c[q+(p*20|0)+16>>2]=0;a[q+(p*20|0)+1>>0]=0;q=p}else q=Di(la,127,X,E,0)|0;p=c[r>>2]|0;if((c[t>>2]|0)>(p|0)){c[r>>2]=p+1;k=c[la+104>>2]|0;a[k+(p*20|0)>>0]=28;b[k+(p*20|0)+2>>1]=0;c[k+(p*20|0)+4>>2]=o;c[k+(p*20|0)+8>>2]=u;c[k+(p*20|0)+12>>2]=E;c[k+(p*20|0)+16>>2]=0;a[k+(p*20|0)+1>>0]=0}else p=Di(la,28,o,u,E)|0;if(a[(c[la>>2]|0)+81>>0]|0){R=q;P=u;break E}R=c[la+104>>2]|0;a[R+(p*20|0)+1>>0]=-3;c[R+(p*20|0)+16>>2]=0;R=q;P=u;break E}while(0);do if((xa|0)==515){p=c[r>>2]|0;if((c[q>>2]|0)>(p|0)){c[r>>2]=p+1;xa=c[la+104>>2]|0;a[xa+(p*20|0)>>0]=28;b[xa+(p*20|0)+2>>1]=0;c[xa+(p*20|0)+4>>2]=o;c[xa+(p*20|0)+8>>2]=I;c[xa+(p*20|0)+12>>2]=E;c[xa+(p*20|0)+16>>2]=0;a[xa+(p*20|0)+1>>0]=0}else p=Di(la,28,o,I,E)|0;if(a[(c[la>>2]|0)+81>>0]|0){xa=520;break}xa=c[la+104>>2]|0;a[xa+(p*20|0)+1>>0]=-3;c[xa+(p*20|0)+16>>2]=M;xa=520}while(0);if((xa|0)==520)if((V|0)==1)t=I;else xa=521;if((xa|0)==521){t=(c[H>>2]|0)+-1|0;c[H>>2]=t}p=(n|0)==0?aa:E;q=la+108|0;r=c[q>>2]|0;if((c[la+112>>2]|0)>(r|0)){c[q>>2]=r+1;R=c[la+104>>2]|0;a[R+(r*20|0)>>0]=50;b[R+(r*20|0)+2>>1]=0;c[R+(r*20|0)+4>>2]=p;c[R+(r*20|0)+8>>2]=I;c[R+(r*20|0)+12>>2]=0;c[R+(r*20|0)+16>>2]=0;a[R+(r*20|0)+1>>0]=0;R=0;P=t;break}else{Di(la,50,p,I,0)|0;R=0;P=t;break}}else{R=0;P=I}while(0);I=N<<24>>24==0;do if(!I){do if(S){if((a[S>>0]|0)!=-88){t=Jj(f,S,Q)|0;xa=551;break}t=c[ma>>2]|0;p=c[S+28>>2]|0;q=t+108|0;r=c[q>>2]|0;if((c[t+112>>2]|0)>(r|0)){c[q>>2]=r+1;k=c[t+104>>2]|0;a[k+(r*20|0)>>0]=78;b[k+(r*20|0)+2>>1]=0;c[k+(r*20|0)+4>>2]=p;c[k+(r*20|0)+8>>2]=Q;c[k+(r*20|0)+12>>2]=0;c[k+(r*20|0)+16>>2]=0;a[k+(r*20|0)+1>>0]=0;break}else{Di(t,78,p,Q,0)|0;break}}else{t=Jj(f,0,Q)|0;xa=551}while(0);do if((xa|0)==551){if((t|0)==(Q|0))break;p=c[ma>>2]|0;if(!p)break;q=p+108|0;r=c[q>>2]|0;if((c[p+112>>2]|0)>(r|0)){c[q>>2]=r+1;k=c[p+104>>2]|0;a[k+(r*20|0)>>0]=79;b[k+(r*20|0)+2>>1]=0;c[k+(r*20|0)+4>>2]=t;c[k+(r*20|0)+8>>2]=Q;c[k+(r*20|0)+12>>2]=0;c[k+(r*20|0)+16>>2]=0;a[k+(r*20|0)+1>>0]=0;break}else{Di(p,79,t,Q,0)|0;break}}while(0);p=la+108|0;q=c[p>>2]|0;if((c[la+112>>2]|0)>(q|0)){c[p>>2]=q+1;k=c[la+104>>2]|0;a[k+(q*20|0)>>0]=15;b[k+(q*20|0)+2>>1]=0;c[k+(q*20|0)+4>>2]=Q;c[k+(q*20|0)+8>>2]=0;c[k+(q*20|0)+12>>2]=0;c[k+(q*20|0)+16>>2]=0;a[k+(q*20|0)+1>>0]=0;break}else{Di(la,15,Q,0,0)|0;break}}while(0);G:do if(J|(O<<24>>24!=0|T)){if(T)D=Km(f,ya)|0;else D=0;H=(h|0)==0;J=H?121:122;F=(l|0)==0;H:do if(F)p=0;else{if(H){p=0;r=l;while(1){do if((J|0)==(d[r+8>>0]|0)){if(!(a[r+9>>0]&3))break;q=c[qa>>2]|0;q=c[((q|0)==0?f:q)+260>>2]|0;I:do if(!q)xa=574;else while(1){if((c[q>>2]|0)==(r|0)?(c[q+12>>2]|0)==(j|0):0)break I;q=c[q+4>>2]|0;if(!q){xa=574;break}}while(0);if((xa|0)==574){xa=0;q=Nm(f,r,ya,j)|0;if(!q)break}p=c[q+16>>2]|p}while(0);r=c[r+32>>2]|0;if(!r)break H}}p=0;C=l;do{J:do if((J|0)==(d[C+8>>0]|0)){if(!(a[C+9>>0]&3))break;q=c[C+16>>2]|0;K:do if(q|0){B=c[h>>2]|0;if((B|0)<=0)break J;A=c[q+4>>2]|0;if((A|0)<=0)break J;x=c[q>>2]|0;u=0;while(1){y=c[h+4+(u*20|0)+4>>2]|0;z=d[208+(d[y>>0]|0)>>0]|0;w=0;do{r=c[x+(w<<3)>>2]|0;k=a[r>>0]|0;q=(d[208+(k&255)>>0]|0)-z|0;if(!(k<<24>>24==0|(q|0)!=0)){t=y;do{r=r+1|0;t=t+1|0;k=a[r>>0]|0;q=(d[208+(k&255)>>0]|0)-(d[208+(d[t>>0]|0)>>0]|0)|0}while(!(k<<24>>24==0|(q|0)!=0))}if(!q)break K;w=w+1|0}while((w|0)<(A|0));u=u+1|0;if((u|0)>=(B|0))break J}}while(0);q=c[qa>>2]|0;q=c[((q|0)==0?f:q)+260>>2]|0;L:do if(!q)xa=595;else while(1){if((c[q>>2]|0)==(C|0)?(c[q+12>>2]|0)==(j|0):0)break L;q=c[q+4>>2]|0;if(!q){xa=595;break}}while(0);if((xa|0)==595){xa=0;q=Nm(f,C,ya,j)|0;if(!q)break}p=c[q+16>>2]|p}while(0);C=c[C+32>>2]|0}while((C|0)!=0)}while(0);q=p|D;M:do if((b[ta>>1]|0)>0){r=ya+4|0;t=la+108|0;u=la+112|0;w=la+104|0;if((q|0)==-1){p=0;while(1){Vj(la,ya,o,p,p+K|0);p=p+1|0;if((p|0)>=(b[ta>>1]|0))break M}}p=0;do{if(p>>>0<32?(1<>2]|0)+(p<<4)+15>>0]&1){xa=606;break}x=p+K|0;y=c[t>>2]|0;if((c[u>>2]|0)>(y|0)){c[t>>2]=y+1;k=c[w>>2]|0;a[k+(y*20|0)>>0]=73;b[k+(y*20|0)+2>>1]=0;c[k+(y*20|0)+4>>2]=0;c[k+(y*20|0)+8>>2]=x;c[k+(y*20|0)+12>>2]=0;c[k+(y*20|0)+16>>2]=0;a[k+(y*20|0)+1>>0]=0;break}else{Di(la,73,0,x,0)|0;break}}while(0);if((xa|0)==606){xa=0;Vj(la,ya,o,p,p+K|0)}p=p+1|0}while((p|0)<(b[ta>>1]|0))}while(0);do if((n|0)==0&I){n=la+108|0;p=c[n>>2]|0;if((c[la+112>>2]|0)>(p|0)){c[n>>2]=p+1;n=c[la+104>>2]|0;a[n+(p*20|0)>>0]=78;b[n+(p*20|0)+2>>1]=0;c[n+(p*20|0)+4>>2]=aa;c[n+(p*20|0)+8>>2]=Q;c[n+(p*20|0)+12>>2]=0;c[n+(p*20|0)+16>>2]=0;a[n+(p*20|0)+1>>0]=0;n=0;break}else{Di(la,78,aa,Q,0)|0;n=0;break}}while(0);if(F){p=0;I=1;break}if(H){p=0;r=l;while(1){do if((J|0)==(d[r+8>>0]|0)){if(!(a[r+9>>0]&1))break;q=c[qa>>2]|0;q=c[((q|0)==0?f:q)+260>>2]|0;N:do if(!q)xa=626;else while(1){if((c[q>>2]|0)==(r|0)?(c[q+12>>2]|0)==(j|0):0)break N;q=c[q+4>>2]|0;if(!q){xa=626;break}}while(0);if((xa|0)==626){xa=0;q=Nm(f,r,ya,j)|0;if(!q)break}p=c[q+20>>2]|p}while(0);r=c[r+32>>2]|0;if(!r){H=1;I=0;break G}}}p=0;C=l;while(1){O:do if((J|0)==(d[C+8>>0]|0)){if(!(a[C+9>>0]&1))break;q=c[C+16>>2]|0;P:do if(q|0){B=c[h>>2]|0;if((B|0)<=0)break O;A=c[q+4>>2]|0;if((A|0)<=0)break O;x=c[q>>2]|0;u=0;while(1){y=c[h+4+(u*20|0)+4>>2]|0;z=d[208+(d[y>>0]|0)>>0]|0;w=0;do{r=c[x+(w<<3)>>2]|0;k=a[r>>0]|0;q=(d[208+(k&255)>>0]|0)-z|0;if(!(k<<24>>24==0|(q|0)!=0)){t=y;do{r=r+1|0;t=t+1|0;k=a[r>>0]|0;q=(d[208+(k&255)>>0]|0)-(d[208+(d[t>>0]|0)>>0]|0)|0}while(!(k<<24>>24==0|(q|0)!=0))}if(!q)break P;w=w+1|0}while((w|0)<(A|0));u=u+1|0;if((u|0)>=(B|0))break O}}while(0);q=c[qa>>2]|0;q=c[((q|0)==0?f:q)+260>>2]|0;Q:do if(!q)xa=647;else while(1){if((c[q>>2]|0)==(C|0)?(c[q+12>>2]|0)==(j|0):0)break Q;q=c[q+4>>2]|0;if(!q){xa=647;break}}while(0);if((xa|0)==647){xa=0;q=Nm(f,C,ya,j)|0;if(!q)break}p=c[q+20>>2]|p}while(0);C=c[C+32>>2]|0;if(!C){H=0;I=0;break}}}else{p=0;H=(h|0)==0;I=1}while(0);if((b[ta>>1]|0)>0){z=ya+40|0;A=la+108|0;B=la+112|0;C=la+104|0;m=m&1;y=(m|0)==0;x=0;do{R:do if((x|0)==(b[z>>1]|0)){q=x+v|0;r=c[A>>2]|0;if((c[B>>2]|0)>(r|0)){c[A>>2]=r+1;k=c[C>>2]|0;a[k+(r*20|0)>>0]=73;b[k+(r*20|0)+2>>1]=0;c[k+(r*20|0)+4>>2]=0;c[k+(r*20|0)+8>>2]=q;c[k+(r*20|0)+12>>2]=0;c[k+(r*20|0)+16>>2]=0;a[k+(r*20|0)+1>>0]=0;break}else{Di(la,73,0,q,0)|0;break}}else{q=c[wa+(x<<2)>>2]|0;if((q|0)<=-1){do if(!(y|x>>>0>31)){if(1<>2]|0;if((c[B>>2]|0)>(r|0)){c[A>>2]=r+1;k=c[C>>2]|0;a[k+(r*20|0)>>0]=73;b[k+(r*20|0)+2>>1]=0;c[k+(r*20|0)+4>>2]=0;c[k+(r*20|0)+8>>2]=q;c[k+(r*20|0)+12>>2]=0;c[k+(r*20|0)+16>>2]=0;a[k+(r*20|0)+1>>0]=0;break R}else{Di(la,73,0,q,0)|0;break R}}while(0);Vj(la,ya,o,x,x+v|0);break}q=c[h+4+(q*20|0)>>2]|0;w=x+v|0;do if(q){if((a[q>>0]|0)!=-88){u=Jj(f,q,w)|0;break}u=c[ma>>2]|0;q=c[q+28>>2]|0;r=u+108|0;t=c[r>>2]|0;if((c[u+112>>2]|0)>(t|0)){c[r>>2]=t+1;k=c[u+104>>2]|0;a[k+(t*20|0)>>0]=78;b[k+(t*20|0)+2>>1]=0;c[k+(t*20|0)+4>>2]=q;c[k+(t*20|0)+8>>2]=w;c[k+(t*20|0)+12>>2]=0;c[k+(t*20|0)+16>>2]=0;a[k+(t*20|0)+1>>0]=0;break R}else{Di(u,78,q,w,0)|0;break R}}else u=Jj(f,0,w)|0;while(0);if((u|0)==(w|0))break;q=c[ma>>2]|0;if(!q)break;r=q+108|0;t=c[r>>2]|0;if((c[q+112>>2]|0)>(t|0)){c[r>>2]=t+1;k=c[q+104>>2]|0;a[k+(t*20|0)>>0]=79;b[k+(t*20|0)+2>>1]=0;c[k+(t*20|0)+4>>2]=u;c[k+(t*20|0)+8>>2]=w;c[k+(t*20|0)+12>>2]=0;c[k+(t*20|0)+16>>2]=0;a[k+(t*20|0)+1>>0]=0;break}else{Di(q,79,u,w,0)|0;break}}while(0);x=x+1|0}while((x|0)<(b[ta>>1]|0))}else m=m&1;do if(m|0){zk(la,ya,v);if(!I){B=f+23|0;C=f+44|0;A=l;do{S:do if((a[A+8>>0]|0)==122){if((a[A+9>>0]|0)!=1)break;m=c[A+16>>2]|0;T:do if(!(H|(m|0)==0)){z=c[h>>2]|0;if((z|0)<=0)break S;y=c[m+4>>2]|0;if((y|0)<=0)break S;u=c[m>>2]|0;r=0;while(1){w=c[h+4+(r*20|0)+4>>2]|0;x=d[208+(d[w>>0]|0)>>0]|0;t=0;do{p=c[u+(t<<3)>>2]|0;k=a[p>>0]|0;m=(d[208+(k&255)>>0]|0)-x|0;if(!(k<<24>>24==0|(m|0)!=0)){q=w;do{p=p+1|0;q=q+1|0;k=a[p>>0]|0;m=(d[208+(k&255)>>0]|0)-(d[208+(d[q>>0]|0)>>0]|0)|0}while(!(k<<24>>24==0|(m|0)!=0))}if(!m)break T;t=t+1|0}while((t|0)<(y|0));r=r+1|0;if((r|0)>=(z|0))break S}}while(0);m=c[ma>>2]|0;U:do if(!m){q=c[f>>2]|0;do if(!(c[qa>>2]|0)){if(b[q+76>>1]&8)break;a[B>>0]=1}while(0);V:do if(c[q+272>>2]|0)if(!(a[q+81>>0]|0))xa=707;else{m=0;break U}else{do if((e[q+276>>1]|0)>=224){p=q+300|0;m=c[p>>2]|0;if(m|0){c[p>>2]=c[m>>2];k=q+284|0;c[k>>2]=(c[k>>2]|0)+1;break V}p=q+296|0;m=c[p>>2]|0;if(!m){m=q+292|0;break}else{c[p>>2]=c[m>>2];k=q+284|0;c[k>>2]=(c[k>>2]|0)+1;break V}}else m=q+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1;xa=707}while(0);if((xa|0)==707){xa=0;m=_d(q,224,0)|0}if(!m){m=0;break}D=m+104|0;F=D+120|0;do{c[D>>2]=0;D=D+4|0}while((D|0)<(F|0));c[m>>2]=q;p=q+4|0;q=c[p>>2]|0;if(q|0)c[q+4>>2]=m;c[m+8>>2]=q;c[m+4>>2]=0;c[p>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=f;c[ma>>2]=m;Di(m,61,0,1,0)|0}while(0);p=c[qa>>2]|0;p=c[((p|0)==0?f:p)+260>>2]|0;W:do if(!p)xa=717;else while(1){if((c[p>>2]|0)==(A|0)?(c[p+12>>2]|0)==(j|0):0)break W;p=c[p+4>>2]|0;if(!p){xa=717;break}}while(0);if((xa|0)==717){xa=0;p=Nm(f,A,ya,j)|0;if(!p)break}if(!(c[A>>2]|0))w=0;else{w=(c[f>>2]|0)+32|0;w=bw(c[w>>2]|0,c[w+4>>2]|0,13)|0;L()|0;w=w&1^1}q=(c[C>>2]|0)+1|0;c[C>>2]=q;t=c[p+8>>2]|0;u=m+108|0;p=c[u>>2]|0;if((c[m+112>>2]|0)>(p|0)){c[u>>2]=p+1;k=c[m+104>>2]|0;a[k+(p*20|0)>>0]=45;b[k+(p*20|0)+2>>1]=0;c[k+(p*20|0)+4>>2]=aa;c[k+(p*20|0)+8>>2]=P;c[k+(p*20|0)+12>>2]=q;c[k+(p*20|0)+16>>2]=0;a[k+(p*20|0)+1>>0]=0}else p=Di(m,45,aa,P,q)|0;do if(!(a[(c[m>>2]|0)+81>>0]|0)){if((p|0)<0)p=(c[u>>2]|0)+-1|0;q=c[m+104>>2]|0;r=q+(p*20|0)+1|0;if(a[r>>0]|0){Ei(m,q+(p*20|0)|0,t,-4);break}if(!t)break;c[q+(p*20|0)+16>>2]=t;a[r>>0]=-4}while(0);p=c[u>>2]|0;if((p|0)<=0)break;b[(c[m+104>>2]|0)+((p+-1|0)*20|0)+2>>1]=w}while(0);A=c[A+32>>2]|0}while((A|0)!=0)}p=la+108|0;m=c[p>>2]|0;q=(c[la+112>>2]|0)>(m|0);do if(!n)if(q){c[p>>2]=m+1;k=c[la+104>>2]|0;a[k+(m*20|0)>>0]=31;b[k+(m*20|0)+2>>1]=0;c[k+(m*20|0)+4>>2]=o;c[k+(m*20|0)+8>>2]=P;c[k+(m*20|0)+12>>2]=aa;c[k+(m*20|0)+16>>2]=0;a[k+(m*20|0)+1>>0]=0;break}else{Di(la,31,o,P,aa)|0;break}else{if(q){c[p>>2]=m+1;k=c[la+104>>2]|0;a[k+(m*20|0)>>0]=28;b[k+(m*20|0)+2>>1]=0;c[k+(m*20|0)+4>>2]=o;c[k+(m*20|0)+8>>2]=P;c[k+(m*20|0)+12>>2]=E;c[k+(m*20|0)+16>>2]=0;a[k+(m*20|0)+1>>0]=0}else m=Di(la,28,o,P,E)|0;if(a[(c[la>>2]|0)+81>>0]|0)break;k=c[la+104>>2]|0;a[k+(m*20|0)+1>>0]=-3;c[k+(m*20|0)+16>>2]=M}while(0);m=b[ta>>1]|0;if(m<<16>>16<=0)break;q=ya+40|0;p=0;do{do if((c[wa+(p<<2)>>2]|0)<0){if((p|0)==(b[q>>1]|0))break;Vj(la,ya,o,p,p+v|0);m=b[ta>>1]|0}while(0);p=p+1|0}while((p|0)<(m<<16>>16|0))}while(0);do if(!sa){Tm(f,ya,ra,o,s,Q,aa,ja,j&255,P,va,wa,0);if(T)Lm(f,ya,aa,0,wa,pa);r=(pa|0)==0;t=(c[va>>2]|pa|0)==0;do if(t)q=0;else{p=la+108|0;m=c[p>>2]|0;q=(c[la+112>>2]|0)>(m|0);if(!n)if(q){c[p>>2]=m+1;q=c[la+104>>2]|0;a[q+(m*20|0)>>0]=31;b[q+(m*20|0)+2>>1]=0;c[q+(m*20|0)+4>>2]=o;c[q+(m*20|0)+8>>2]=0;c[q+(m*20|0)+12>>2]=aa;c[q+(m*20|0)+16>>2]=0;a[q+(m*20|0)+1>>0]=0;q=m;break}else{q=Di(la,31,o,0,aa)|0;break}if(q){c[p>>2]=m+1;va=c[la+104>>2]|0;a[va+(m*20|0)>>0]=28;b[va+(m*20|0)+2>>1]=0;c[va+(m*20|0)+4>>2]=o;c[va+(m*20|0)+8>>2]=0;c[va+(m*20|0)+12>>2]=E;c[va+(m*20|0)+16>>2]=0;a[va+(m*20|0)+1>>0]=0}else m=Di(la,28,o,0,E)|0;if(a[(c[la>>2]|0)+81>>0]|0){q=m;break}q=c[la+104>>2]|0;a[q+(m*20|0)+1>>0]=-3;c[q+(m*20|0)+16>>2]=M;q=m}while(0);Mm(f,ya,o,s,ra,-1);do if(!(r&(ia|0)<2)){m=la+108|0;p=c[m>>2]|0;if((c[la+112>>2]|0)>(p|0)){c[m>>2]=p+1;va=c[la+104>>2]|0;a[va+(p*20|0)>>0]=123;b[va+(p*20|0)+2>>1]=0;c[va+(p*20|0)+4>>2]=o;c[va+(p*20|0)+8>>2]=0;c[va+(p*20|0)+12>>2]=0;c[va+(p*20|0)+16>>2]=0;a[va+(p*20|0)+1>>0]=0;break}else{Di(la,123,o,0,0)|0;break}}while(0);if(!t){p=c[la+108>>2]|0;if(!(a[(c[la>>2]|0)+81>>0]|0))m=(c[la+104>>2]|0)+(((q|0)<0?p+-1|0:q)*20|0)|0;else m=59308;c[m+8>>2]=p}if(!T){Um(f,ya,o,s,Q,ra,(V|0)==2?6:4,0,0);break}Lm(f,ya,0,Q,wa,pa);Um(f,ya,o,s,Q,ra,(V|0)==2?6:4,0,0);if(0==0?(c[(c[f>>2]|0)+32>>2]&16384|0)==0:0)break;t=c[ya>>2]|0;q=c[ua>>2]|0;r=c[q+68>>2]|0;if(!r){o=q+60|0;m=q+64|0}else{o=a[t>>0]|0;if(!(o<<24>>24))m=0;else{m=0;p=t;do{p=p+1|0;m=G(m+(d[208+(o&255)>>0]|0)|0,-1640531535)|0;o=a[p>>0]|0}while(o<<24>>24!=0)}m=(m>>>0)%((c[q+56>>2]|0)>>>0)|0;o=r+(m<<3)|0;m=r+(m<<3)+4|0}o=c[o>>2]|0;X:do if(!o)m=59292;else{s=d[208+(d[t>>0]|0)>>0]|0;while(1){m=c[m>>2]|0;o=o+-1|0;q=c[m+12>>2]|0;va=a[q>>0]|0;p=(d[208+(va&255)>>0]|0)-s|0;if(!(va<<24>>24==0|(p|0)!=0)){r=t;do{q=q+1|0;r=r+1|0;va=a[q>>0]|0;p=(d[208+(va&255)>>0]|0)-(d[208+(d[r>>0]|0)>>0]|0)|0}while(!(va<<24>>24==0|(p|0)!=0))}if(!p)break X;if(!o){m=59292;break}}}while(0);m=c[m+8>>2]|0;if(!m)break;v=f+23|0;w=f+44|0;do{do if(Jm(ya,m,wa,pa)|0){r=Rm(f,ya,m,h)|0;if(!r)break;o=c[ma>>2]|0;Y:do if(!o){q=c[f>>2]|0;do if(!(c[qa>>2]|0)){if(b[q+76>>1]&8)break;a[v>>0]=1}while(0);Z:do if(c[q+272>>2]|0)if(!(a[q+81>>0]|0))xa=802;else{o=0;break Y}else{do if((e[q+276>>1]|0)>=224){p=q+300|0;o=c[p>>2]|0;if(o|0){c[p>>2]=c[o>>2];va=q+284|0;c[va>>2]=(c[va>>2]|0)+1;break Z}p=q+296|0;o=c[p>>2]|0;if(!o){o=q+292|0;break}else{c[p>>2]=c[o>>2];va=q+284|0;c[va>>2]=(c[va>>2]|0)+1;break Z}}else o=q+288|0;while(0);c[o>>2]=(c[o>>2]|0)+1;xa=802}while(0);if((xa|0)==802){xa=0;o=_d(q,224,0)|0}if(!o){o=0;break}D=o+104|0;F=D+120|0;do{c[D>>2]=0;D=D+4|0}while((D|0)<(F|0));c[o>>2]=q;p=q+4|0;q=c[p>>2]|0;if(q|0)c[q+4>>2]=o;c[o+8>>2]=q;c[o+4>>2]=0;c[p>>2]=o;c[o+20>>2]=381479589;c[o+12>>2]=f;c[ma>>2]=o;Di(o,61,0,1,0)|0}while(0);p=c[qa>>2]|0;p=c[((p|0)==0?f:p)+260>>2]|0;_:do if(!p)xa=812;else while(1){if((c[p>>2]|0)==(r|0)?(c[p+12>>2]|0)==2:0)break _;p=c[p+4>>2]|0;if(!p){xa=812;break}}while(0);if((xa|0)==812){xa=0;p=Nm(f,r,ya,2)|0;if(!p)break}if(!(c[r>>2]|0))u=0;else{u=(c[f>>2]|0)+32|0;u=bw(c[u>>2]|0,c[u+4>>2]|0,13)|0;L()|0;u=u&1^1}q=(c[w>>2]|0)+1|0;c[w>>2]=q;s=c[p+8>>2]|0;t=o+108|0;p=c[t>>2]|0;if((c[o+112>>2]|0)>(p|0)){c[t>>2]=p+1;va=c[o+104>>2]|0;a[va+(p*20|0)>>0]=45;b[va+(p*20|0)+2>>1]=0;c[va+(p*20|0)+4>>2]=aa;c[va+(p*20|0)+8>>2]=0;c[va+(p*20|0)+12>>2]=q;c[va+(p*20|0)+16>>2]=0;a[va+(p*20|0)+1>>0]=0}else p=Di(o,45,aa,0,q)|0;do if(!(a[(c[o>>2]|0)+81>>0]|0)){if((p|0)<0)p=(c[t>>2]|0)+-1|0;q=c[o+104>>2]|0;r=q+(p*20|0)+1|0;if(a[r>>0]|0){Ei(o,q+(p*20|0)|0,s,-4);break}if(!s)break;c[q+(p*20|0)+16>>2]=s;a[r>>0]=-4}while(0);p=c[t>>2]|0;if((p|0)<=0)break;b[(c[o+104>>2]|0)+((p+-1|0)*20|0)+2>>1]=u}while(0);m=c[m+12>>2]|0}while((m|0)!=0)}while(0);z=(Y|0)!=0;do if(z){m=la+108|0;o=c[m>>2]|0;if((c[la+112>>2]|0)>(o|0)){c[m>>2]=o+1;va=c[la+104>>2]|0;a[va+(o*20|0)>>0]=83;b[va+(o*20|0)+2>>1]=0;c[va+(o*20|0)+4>>2]=Y;c[va+(o*20|0)+8>>2]=1;c[va+(o*20|0)+12>>2]=0;c[va+(o*20|0)+16>>2]=0;a[va+(o*20|0)+1>>0]=0;break}else{Di(la,83,Y,1,0)|0;break}}while(0);if(!I){x=f+23|0;y=f+44|0;do{$:do if((a[l+8>>0]|0)==122){if((a[l+9>>0]|0)!=2)break;m=c[l+16>>2]|0;aa:do if(!(H|(m|0)==0)){w=c[h>>2]|0;if((w|0)<=0)break $;v=c[m+4>>2]|0;if((v|0)<=0)break $;s=c[m>>2]|0;q=0;while(1){t=c[h+4+(q*20|0)+4>>2]|0;u=d[208+(d[t>>0]|0)>>0]|0;r=0;do{o=c[s+(r<<3)>>2]|0;va=a[o>>0]|0;m=(d[208+(va&255)>>0]|0)-u|0;if(!(va<<24>>24==0|(m|0)!=0)){p=t;do{o=o+1|0;p=p+1|0;va=a[o>>0]|0;m=(d[208+(va&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0}while(!(va<<24>>24==0|(m|0)!=0))}if(!m)break aa;r=r+1|0}while((r|0)<(v|0));q=q+1|0;if((q|0)>=(w|0))break $}}while(0);m=c[ma>>2]|0;ba:do if(!m){p=c[f>>2]|0;do if(!(c[qa>>2]|0)){if(b[p+76>>1]&8)break;a[x>>0]=1}while(0);ca:do if(c[p+272>>2]|0)if(!(a[p+81>>0]|0))xa=862;else{m=0;break ba}else{do if((e[p+276>>1]|0)>=224){o=p+300|0;m=c[o>>2]|0;if(m|0){c[o>>2]=c[m>>2];va=p+284|0;c[va>>2]=(c[va>>2]|0)+1;break ca}o=p+296|0;m=c[o>>2]|0;if(!m){m=p+292|0;break}else{c[o>>2]=c[m>>2];va=p+284|0;c[va>>2]=(c[va>>2]|0)+1;break ca}}else m=p+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1;xa=862}while(0);if((xa|0)==862){xa=0;m=_d(p,224,0)|0}if(!m){m=0;break}D=m+104|0;F=D+120|0;do{c[D>>2]=0;D=D+4|0}while((D|0)<(F|0));c[m>>2]=p;o=p+4|0;p=c[o>>2]|0;if(p|0)c[p+4>>2]=m;c[m+8>>2]=p;c[m+4>>2]=0;c[o>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=f;c[ma>>2]=m;Di(m,61,0,1,0)|0}while(0);o=c[qa>>2]|0;o=c[((o|0)==0?f:o)+260>>2]|0;da:do if(!o)xa=872;else while(1){if((c[o>>2]|0)==(l|0)?(c[o+12>>2]|0)==(j|0):0)break da;o=c[o+4>>2]|0;if(!o){xa=872;break}}while(0);if((xa|0)==872){xa=0;o=Nm(f,l,ya,j)|0;if(!o)break}if(!(c[l>>2]|0))t=0;else{t=(c[f>>2]|0)+32|0;t=bw(c[t>>2]|0,c[t+4>>2]|0,13)|0;L()|0;t=t&1^1}p=(c[y>>2]|0)+1|0;c[y>>2]=p;r=c[o+8>>2]|0;s=m+108|0;o=c[s>>2]|0;if((c[m+112>>2]|0)>(o|0)){c[s>>2]=o+1;va=c[m+104>>2]|0;a[va+(o*20|0)>>0]=45;b[va+(o*20|0)+2>>1]=0;c[va+(o*20|0)+4>>2]=aa;c[va+(o*20|0)+8>>2]=P;c[va+(o*20|0)+12>>2]=p;c[va+(o*20|0)+16>>2]=0;a[va+(o*20|0)+1>>0]=0}else o=Di(m,45,aa,P,p)|0;do if(!(a[(c[m>>2]|0)+81>>0]|0)){if((o|0)<0)o=(c[s>>2]|0)+-1|0;p=c[m+104>>2]|0;q=p+(o*20|0)+1|0;if(a[q>>0]|0){Ei(m,p+(o*20|0)|0,r,-4);break}if(!r)break;c[p+(o*20|0)+16>>2]=r;a[q>>0]=-4}while(0);o=c[s>>2]|0;if((o|0)<=0)break;b[(c[m+104>>2]|0)+((o+-1|0)*20|0)+2>>1]=t}while(0);l=c[l+32>>2]|0}while((l|0)!=0)}ea:do switch(V|0){case 1:break;case 2:{m=c[la+12>>2]|0;l=~P;if(((c[m+56>>2]|0)+(c[m+60>>2]|0)|0)<0)mk(m,la,l);else c[(c[m+64>>2]|0)+(l<<2)>>2]=c[la+108>>2];sl(W);break}default:{if(!n){l=la+108|0;m=c[l>>2]|0;if((c[la+112>>2]|0)>(m|0)){c[l>>2]=m+1;j=c[la+104>>2]|0;a[j+(m*20|0)>>0]=11;b[j+(m*20|0)+2>>1]=0;c[j+(m*20|0)+4>>2]=0;c[j+(m*20|0)+8>>2]=P;c[j+(m*20|0)+12>>2]=0;c[j+(m*20|0)+16>>2]=0;a[j+(m*20|0)+1>>0]=0;break ea}else{Di(la,11,0,P,0)|0;break ea}}m=c[la+12>>2]|0;l=~P;if(((c[m+56>>2]|0)+(c[m+60>>2]|0)|0)<0){mk(m,la,l);l=la+108|0}else{j=la+108|0;c[(c[m+64>>2]|0)+(l<<2)>>2]=c[j>>2];l=j}m=c[l>>2]|0;if((c[la+112>>2]|0)>(m|0)){c[l>>2]=m+1;j=c[la+104>>2]|0;a[j+(m*20|0)>>0]=5;b[j+(m*20|0)+2>>1]=0;c[j+(m*20|0)+4>>2]=X;c[j+(m*20|0)+8>>2]=R;c[j+(m*20|0)+12>>2]=0;c[j+(m*20|0)+16>>2]=0;a[j+(m*20|0)+1>>0]=0;break ea}else{Di(la,5,X,R,0)|0;break ea}}}while(0);m=c[la+12>>2]|0;l=0-Z|0;if(((c[m+56>>2]|0)+(c[m+60>>2]|0)|0)<0)mk(m,la,l);else c[(c[m+64>>2]|0)+(l<<2)>>2]=c[la+108>>2];do if(!(a[ka>>0]|0)){if(!(U&(c[f+120>>2]|0)==0))break;if(!(c[f+112>>2]|0))break;Sm(f)}while(0);if(!z)break;l=la+108|0;m=c[l>>2]|0;if((c[la+112>>2]|0)>(m|0)){c[l>>2]=m+1;f=c[la+104>>2]|0;a[f+(m*20|0)>>0]=81;b[f+(m*20|0)+2>>1]=0;c[f+(m*20|0)+4>>2]=Y;c[f+(m*20|0)+8>>2]=1;c[f+(m*20|0)+12>>2]=0;c[f+(m*20|0)+16>>2]=0;a[f+(m*20|0)+1>>0]=0}else Di(la,81,Y,1,0)|0;Wi(la,1);if(a[(c[la>>2]|0)+81>>0]|0)break;yc(c[la+116>>2]|0,44795,-1,1,0)|0}while(0);if(!oa){xa=918;break}c[oa+240>>2]=na;xa=918}while(0);if((xa|0)==918?za|0:0)xa=919;do if((xa|0)==919){if(c[za+480>>2]|0){Xd(za,wa);break a}l=wa;if((c[za+304>>2]|0)>>>0<=l>>>0){if((c[za+308>>2]|0)>>>0<=l>>>0)break;f=za+300|0;c[wa>>2]=c[f>>2];c[f>>2]=wa;break a}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](wa);break}else{f=Wa[c[29352>>2]&127](wa)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](wa);break}}}}}while(0);qi(za,g);if(h|0)ri(za,h);if(!i){Ra=Aa;return}ni(za,i);Ra=Aa;return}function uj(e,f,g,h){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,s=0,t=0,u=0;u=Ra;Ra=Ra+48|0;k=u;r=u+8|0;t=c[e>>2]|0;if(!f)p=0;else p=c[f>>2]|0;s=(g|0)==0;do if(!(s|(h|0)==0)){l=a[h>>0]|0;o=g+4|0;i=c[o>>2]|0;switch(l<<24>>24){case -125:break;case -88:{j=a[h+38>>0]|0;q=6;break}default:{j=l;q=6}}if((q|0)==6){switch(j<<24>>24){case -87:{j=h+20|0;q=9;break}case -125:{j=c[h+20>>2]|0;q=9;break}default:j=1}if((q|0)==9)j=c[c[j>>2]>>2]|0;if((i|0)!=(j|0)){c[k>>2]=i;c[k+4>>2]=j;cd(e,38869,k);n=f;break}}a:do if((i|0)>0){m=e+272|0;n=h+20|0;j=0;i=l;while(1){switch(i<<24>>24){case -125:{i=ej(e,170,0,0)|0;if(!i)i=0;else{b[i+32>>1]=j;c[i+12>>2]=h}break}case -87:{i=c[(c[n>>2]|0)+4+(j*20|0)>>2]|0;if(!i){l=0;i=0;q=19}else q=18;break}default:{i=h;q=18}}if((q|0)==18){l=i;i=dk(c[e>>2]|0,i,0,0)|0;q=19}b:do if((q|0)==19){q=0;k=c[m>>2]|0;if(k){while(1){if((c[k>>2]|0)==(l|0))break;k=c[k+12>>2]|0;if(!k)break b}c[k>>2]=i}}while(0);f=nj(c[e>>2]|0,f,i)|0;if(f|0){l=(c[g>>2]|0)+(j<<3)|0;c[f+4+(((c[f>>2]|0)+-1|0)*20|0)+4>>2]=c[l>>2];c[l>>2]=0}j=j+1|0;i=c[o>>2]|0;if((j|0)>=(i|0))break a;i=a[h>>0]|0}}while(0);if((a[t+81>>0]|0)==0?(f|0)!=0&(a[h>>0]|0)==-125:0){n=c[f+4+(p*20|0)>>2]|0;c[n+16>>2]=h;c[n+28>>2]=i;h=0;n=f}else n=f}else n=f;while(0);if((d[e+200>>0]|0)>1?(q=r+8|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[r>>2]=e,c[r+4>>2]=124,h|0):0)_j(r,h)|0;if(h|0)ni(t,h);if(s){Ra=u;return n|0}m=g+4|0;h=c[g>>2]|0;c:do if((c[m>>2]|0)>0){f=t+480|0;j=t+304|0;k=t+308|0;l=t+300|0;if(!t){i=0;while(1){h=c[h+(i<<3)>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{s=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);i=i+1|0;h=c[g>>2]|0;if((i|0)>=(c[m>>2]|0))break c}}i=0;do{h=c[h+(i<<3)>>2]|0;do if(h|0){if(c[f>>2]|0){Xd(t,h);break}s=h;if((c[j>>2]|0)>>>0<=s>>>0?(c[k>>2]|0)>>>0>s>>>0:0){c[h>>2]=c[l>>2];c[l>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{s=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);i=i+1|0;h=c[g>>2]|0}while((i|0)<(c[m>>2]|0))}while(0);d:do if(h){do if(t|0){i=t+480|0;if(!(c[i>>2]|0)){f=h;if((c[t+304>>2]|0)>>>0>f>>>0)break;if((c[t+308>>2]|0)>>>0<=f>>>0)break;s=t+300|0;c[h>>2]=c[s>>2];c[s>>2]=h}else Xd(t,h);h=i;q=70;break d}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);q=68;break}else{q=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);q=68;break}}else q=68;while(0);if((q|0)==68)if(t){h=t+480|0;q=70}if((q|0)==70){if(c[h>>2]|0){Xd(t,g);Ra=u;return n|0}s=g;if((c[t+304>>2]|0)>>>0<=s>>>0?(c[t+308>>2]|0)>>>0>s>>>0:0){t=t+300|0;c[g>>2]=c[t>>2];c[t>>2]=g;Ra=u;return n|0}}if(!g){Ra=u;return n|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);Ra=u;return n|0}else{t=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);Ra=u;return n|0}return 0} -function vj(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 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,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,_=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;Ga=Ra;Ra=Ra+336|0;ma=Ga+232|0;ia=Ga+224|0;ga=Ga+216|0;ca=Ga+208|0;aa=Ga+200|0;$=Ga+184|0;X=Ga+176|0;T=Ga+160|0;R=Ga+152|0;Q=Ga+144|0;A=Ga+136|0;x=Ga+128|0;t=Ga+120|0;s=Ga+112|0;q=Ga+104|0;ta=Ga+304|0;ja=Ga+272|0;la=Ga;xa=Ga+268|0;wa=Ga+264|0;U=Ga+240|0;c[xa>>2]=0;c[wa>>2]=0;Fa=c[f>>2]|0;V=f+36|0;do if((c[V>>2]|0)==0?(ba=Fa+81|0,(a[ba>>0]|0)==0):0){na=U+4|0;c[na>>2]=0;if(h)if((c[h+8>>2]&512|0)!=0?(c[h+52>>2]|0)==0:0){Ea=c[h>>2]|0;c[h>>2]=0;pi(Fa,h,1);Da=0}else{Da=h;Ea=0}else{Da=0;Ea=0}h=c[g+8>>2]|0;if(!h)l=g+12|0;else{m=c[(c[f>>2]|0)+16>>2]|0;l=0;while(1)if((c[m+(l<<4)+12>>2]|0)==(h|0))break;else l=l+1|0;l=m+(l<<4)|0}Ca=bd(f,0,c[g+16>>2]|0,c[l>>2]|0)|0;l=c[f>>2]|0;ha=g+24|0;h=c[ha>>2]|0;do if(h|0){if(l|0?c[l+480>>2]|0:0){Vi(l,h);break}za=h+32|0;Aa=(c[za>>2]|0)+-1|0;c[za>>2]=Aa;if(!Aa)Vi(l,h)}while(0);c[ha>>2]=Ca;a:do if(Ca){Aa=Ca+32|0;c[Aa>>2]=(c[Aa>>2]|0)+1;b:do if(a[g+45>>0]&2){o=c[g+72>>2]|0;l=c[Ca+8>>2]|0;c:do if(l|0){p=d[208+(d[o>>0]|0)>>0]|0;while(1){m=c[l>>2]|0;Aa=a[m>>0]|0;h=(d[208+(Aa&255)>>0]|0)-p|0;if(!(Aa<<24>>24==0|(h|0)!=0)){n=o;do{m=m+1|0;n=n+1|0;Aa=a[m>>0]|0;h=(d[208+(Aa&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(h|0)!=0))}if(!h)break;l=c[l+20>>2]|0;if(!l)break c}c[g+76>>2]=l;break b}while(0);c[q>>2]=o;c[q+4>>2]=0;cd(f,41107,q);a[f+17>>0]=1;l=0;Ba=1038;break a}while(0);ra=Ca+72|0;h=c[ra>>2]|0;m=c[Fa+16>>2]|0;if(!h)W=-1e6;else{l=0;while(1)if((c[m+(l<<4)+12>>2]|0)==(h|0)){W=l;break}else l=l+1|0}n=c[Ca>>2]|0;h=c[m+(W<<4)>>2]|0;l=c[f>>2]|0;if(((a[l+165>>0]|0)==0?(a[f+200>>0]|0)==0:0)?(r=c[l+312>>2]|0,(r|0)!=0):0){l=$a[r&127](c[l+316>>2]|0,18,n,0,h,c[f+240>>2]|0)|0;if((l|0)==1){cd(f,39216,s);c[f+12>>2]=23;l=0;Ba=1038;break}if((l|2|0)!=2){cd(f,39231,t);c[f+12>>2]=1;l=0;Ba=1038;break}if(l|0){l=0;Ba=1038;break}l=c[f>>2]|0}S=Ca+36|0;pa=(c[S>>2]|0)>>>5&1;do if(!(0==0?(c[l+32>>2]&262144|0)==0:0)?(u=c[(c[l+16>>2]|0)+28>>2]|0,(a[f+146>>0]|0)==0):0){r=c[ra>>2]|0;if((r|0)!=(u|0)?(v=c[u+48>>2]|0,(v|0)!=0):0){q=Ca+68|0;p=v;l=0;do{o=c[p+8>>2]|0;do if((c[o+24>>2]|0)==(r|0)){m=c[o+4>>2]|0;n=c[Ca>>2]|0;Aa=a[m>>0]|0;h=(d[208+(Aa&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0;if(!(Aa<<24>>24==0|(h|0)!=0))do{m=m+1|0;n=n+1|0;Aa=a[m>>0]|0;h=(d[208+(Aa&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(h|0)!=0));if(h|0)break;if(!l)l=c[q>>2]|0;c[o+32>>2]=l;l=o}while(0);p=c[p>>2]|0}while((p|0)!=0);if(!l)Ba=56}else Ba=56;if((Ba|0)==56){l=c[Ca+68>>2]|0;if(!l){Ba=62;break}}h=0;m=l;do{if((a[m+8>>0]|0)==120)h=h|d[m+9>>0];m=c[m+32>>2]|0}while((m|0)!=0);if(h)t=l;else Ba=62}else Ba=62;while(0);if((Ba|0)==62){h=0;t=0}oa=(c[Ca+12>>2]|0)!=0;if((Sk(f,Ca)|0)==0?(Fm(f,Ca,h)|0)==0:0){ya=f+8|0;l=c[ya>>2]|0;if(!l){n=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[n+76>>1]&8)==0:0)a[f+23>>0]=1;d:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))Ba=79;else{l=0;Ba=1038;break a}else{do if((e[n+276>>1]|0)>=224){l=n+300|0;m=c[l>>2]|0;if(m|0){c[l>>2]=c[m>>2];Aa=n+284|0;c[Aa>>2]=(c[Aa>>2]|0)+1;break d}l=n+296|0;m=c[l>>2]|0;if(!m){l=n+292|0;break}else{c[l>>2]=c[m>>2];Aa=n+284|0;c[Aa>>2]=(c[Aa>>2]|0)+1;break d}}else l=n+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;Ba=79}while(0);if((Ba|0)==79)m=_d(n,224,0)|0;if(!m){l=0;Ba=1038;break}p=m+104|0;q=p+120|0;do{c[p>>2]=0;p=p+4|0}while((p|0)<(q|0));c[m>>2]=n;l=n+4|0;n=c[l>>2]|0;if(n|0)c[n+4>>2]=m;c[m+8>>2]=n;c[m+4>>2]=0;c[l>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=f;c[ya>>2]=m;Di(m,61,0,1,0)|0;Aa=m}else Aa=l;za=f+18|0;if(!(a[za>>0]|0)){va=Aa+149|0;ua=d[va>>0]|d[va+1>>0]<<8|32;a[va>>0]=ua;a[va+1>>0]=ua>>8}va=(Da|0)!=0;sa=(t|0)!=0;s=(va|sa)&1;ua=f+116|0;v=c[ua>>2]|0;v=(v|0)==0?f:v;l=v+84|0;m=c[l>>2]|0;u=1<>2]=m|u,(W|0)==1):0)?(y=c[v>>2]|0,w=y+16|0,(c[(c[w>>2]|0)+20>>2]|0)==0):0){if(a[v+199>>0]|0)break;l=Pe(c[y>>2]|0,0,y,ta,0,542)|0;if(l|0){cd(v,32157,x);c[v+12>>2]=l;break}qa=c[ta>>2]|0;c[(c[w>>2]|0)+20>>2]=qa;l=c[y+92>>2]|0;o=c[qa+4>>2]|0;c[o+4>>2]=c[qa>>2];do if(!(b[o+22>>1]&2)){p=o+32|0;q=o+36|0;r=(c[p>>2]|0)-(c[q>>2]|0)|0;do if((l+-512|0)>>>0<65025){if(l+-1&l|0)break;c[p>>2]=l;n=o+80|0;l=c[n>>2]|0;if(!l)break;m=l+-4|0;c[n>>2]=m;l=m;do if((c[14816]|0)>>>0<=l>>>0)if((c[14817]|0)>>>0>l>>>0){c[14979]=(c[14979]|0)+-1;c[m>>2]=c[14819];c[14819]=m;qa=(c[14820]|0)+1|0;c[14820]=qa;c[14821]=(qa|0)<(c[14815]|0)&1;break}else{l=Wa[c[29352>>2]&127](m)|0;Ba=101;break}else{l=Wa[c[29352>>2]&127](m)|0;Ba=101}while(0);do if((Ba|0)==101){c[14980]=(c[14980]|0)-l;if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{qa=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-qa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[n>>2]=0}while(0);qa=Se(c[o>>2]|0,p,r)|0;c[q>>2]=(c[p>>2]|0)-(r&65535);if((qa|0)!=7)break;l=y+81|0;do if(!(a[l>>0]|0)){if(a[y+82>>0]|0)break;a[l>>0]=1;if((c[y+180>>2]|0)>0)c[y+264>>2]=1;l=y+272|0;c[l>>2]=(c[l>>2]|0)+1;l=c[y+236>>2]|0;if(!l)break;c[l+12>>2]=7}while(0);break e}while(0)}while(0);qa=v+80|0;c[qa>>2]=c[qa>>2]|u;qa=v+20|0;a[qa>>0]=d[qa>>0]|s;qa=(i|0)==0;f:do if(qa?(P=c[f>>2]|0,(Da|0)!=0):0){if(c[f+264>>2]|0){Ba=424;break}if(c[Da+64>>2]|0){Ba=424;break}w=P+16|0;u=c[w>>2]|0;l=c[u+28>>2]|0;if(!(a[f+146>>0]|0)){s=c[ra>>2]|0;do if((s|0)!=(l|0)){l=c[l+48>>2]|0;if(!l)break;r=Ca+68|0;m=0;do{q=c[l+8>>2]|0;do if((c[q+24>>2]|0)==(s|0)){o=c[q+4>>2]|0;p=c[Ca>>2]|0;ka=a[o>>0]|0;n=(d[208+(ka&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0;if(!(ka<<24>>24==0|(n|0)!=0))do{o=o+1|0;p=p+1|0;ka=a[o>>0]|0;n=(d[208+(ka&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0}while(!(ka<<24>>24==0|(n|0)!=0));if(n|0)break;if(!m)m=c[r>>2]|0;c[q+32>>2]=m;m=q}while(0);l=c[l>>2]|0}while((l|0)!=0);if(m|0){Ba=424;break f}}while(0);if(c[Ca+68>>2]|0){Ba=424;break}}if(c[Ca+56>>2]|0){Ba=424;break}do if((j|0)==11){if((b[Ca+40>>1]|0)>-1?(z=a[Ca+48>>0]|0,z<<24>>24!=11):0){I=z&255;break}I=2}else I=j;while(0);n=c[Da+32>>2]|0;if((c[n>>2]|0)!=1){Ba=424;break}if(c[n+28>>2]|0){Ba=424;break}if(c[Da+36>>2]|0){Ba=424;break}if(c[Da+48>>2]|0){Ba=424;break}if(c[Da+40>>2]|0){Ba=424;break}if(c[Da+60>>2]|0){Ba=424;break}if(c[Da+52>>2]|0){Ba=424;break}if(c[Da+8>>2]&1|0){Ba=424;break}l=c[Da>>2]|0;if((c[l>>2]|0)!=1){Ba=424;break}if((a[c[l+4>>2]>>0]|0)!=-84){Ba=424;break}m=c[n+8>>2]|0;if(!m)l=n+12|0;else{l=0;while(1)if((c[u+(l<<4)+12>>2]|0)==(m|0))break;else l=l+1|0;l=u+(l<<4)|0}K=bd(f,0,c[n+16>>2]|0,c[l>>2]|0)|0;if(!K){Ba=424;break}x=K+28|0;y=Ca+28|0;if((c[x>>2]|0)==(c[y>>2]|0)?(c[K+72>>2]|0)==(c[ra>>2]|0):0){Ba=424;break}O=K+36|0;if((c[O>>2]^c[S>>2])&32|0){Ba=424;break}if(c[K+56>>2]|0){Ba=424;break}if(c[K+12>>2]|0){Ba=424;break}l=b[Ca+42>>1]|0;if(l<<16>>16!=(b[K+42>>1]|0)){Ba=424;break}B=Ca+40|0;if((b[B>>1]|0)!=(b[K+40>>1]|0)){Ba=424;break}r=l<<16>>16;if(l<<16>>16>0){p=c[Ca+4>>2]|0;q=c[K+4>>2]|0;o=0;do{if((a[p+(o<<4)+13>>0]|0)!=(a[q+(o<<4)+13>>0]|0)){Ba=424;break f}m=c[p+(o<<4)+8>>2]|0;n=c[q+(o<<4)+8>>2]|0;do if(!m)l=((n|0)!=0)<<31>>31;else{if(!n){Ba=424;break f}ka=a[m>>0]|0;l=(d[208+(ka&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0;if(ka<<24>>24==0|(l|0)!=0)break;do{m=m+1|0;n=n+1|0;ka=a[m>>0]|0;l=(d[208+(ka&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(ka<<24>>24==0|(l|0)!=0))}while(0);if(l|0){Ba=424;break f}if(a[p+(o<<4)+12>>0]|0?(a[q+(o<<4)+12>>0]|0)==0:0){Ba=424;break f}do if(o|0){l=c[p+(o<<4)+4>>2]|0;m=(l|0)==0;n=c[q+(o<<4)+4>>2]|0;if(m^(n|0)==0){Ba=424;break f}if(m)break;if(Bu(c[l+8>>2]|0,c[n+8>>2]|0)|0){Ba=424;break f}}while(0);o=o+1|0}while((o|0)<(r|0))}H=Ca+8|0;l=c[H>>2]|0;if(!l)v=0;else{o=K+8|0;p=K+72|0;m=0;while(1){m=(a[l+54>>0]|0)==0?m:1;n=c[o>>2]|0;if(!n){Ba=424;break f}while(1){if(Xm(l,n)|0)break;n=c[n+20>>2]|0;if(!n){Ba=424;break f}}do if((c[n+44>>2]|0)==(c[l+44>>2]|0)){if((c[p>>2]|0)!=(c[ra>>2]|0))break;n=c[7389]|0;if(!n){Ba=424;break f}if(!(Wa[n&127](411)|0)){Ba=424;break f}}while(0);l=c[l+20>>2]|0;if(!l){v=m;break}}}m=c[Ca+24>>2]|0;do if(m|0){n=c[K+24>>2]|0;if(!n){Ba=424;break f}l=c[n>>2]|0;if((l|0)!=(c[m>>2]|0)){Ba=424;break f}if((l|0)<=0)break;l=0;do{if((a[n+4+(l*20|0)+12>>0]|0)!=(a[m+4+(l*20|0)+12>>0]|0)){Ba=424;break f}if(bk(0,c[n+4+(l*20|0)>>2]|0,c[m+4+(l*20|0)>>2]|0,-1)|0){Ba=424;break f}l=l+1|0}while((l|0)<(c[n>>2]|0))}while(0);l=c[P+32>>2]|0;if((l&16384|0)==0&0==0){if(!((l&128|0)==0&0==0)){Ba=424;break}}else if(!((l&128|0)==0&0==0&(c[Ca+16>>2]|0)==0)){Ba=424;break}n=c[K+72>>2]|0;if(!n)N=-1e6;else{m=c[w>>2]|0;l=0;while(1)if((c[m+(l<<4)+12>>2]|0)==(n|0)){N=l;break}else l=l+1|0}l=c[ya>>2]|0;g:do if(!l){n=c[f>>2]|0;do if(!(c[ua>>2]|0)){if(b[n+76>>1]&8)break;a[f+23>>0]=1}while(0);h:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))Ba=217;else{M=0;break g}else{do if((e[n+276>>1]|0)>=224){l=n+300|0;m=c[l>>2]|0;if(m|0){c[l>>2]=c[m>>2];ka=n+284|0;c[ka>>2]=(c[ka>>2]|0)+1;break h}l=n+296|0;m=c[l>>2]|0;if(!m){l=n+292|0;break}else{c[l>>2]=c[m>>2];ka=n+284|0;c[ka>>2]=(c[ka>>2]|0)+1;break h}}else l=n+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;Ba=217}while(0);if((Ba|0)==217)m=_d(n,224,0)|0;if(!m){M=0;break}p=m+104|0;q=p+120|0;do{c[p>>2]=0;p=p+4|0}while((p|0)<(q|0));c[m>>2]=n;l=n+4|0;n=c[l>>2]|0;if(n|0)c[n+4>>2]=m;c[m+8>>2]=n;c[m+4>>2]=0;c[l>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=f;c[ya>>2]=m;Di(m,61,0,1,0)|0;M=m}else M=l;while(0);o=c[ua>>2]|0;o=(o|0)==0?f:o;l=o+84|0;m=c[l>>2]|0;n=1<>2]=m|n;if((N|0)!=1)break;s=c[o>>2]|0;l=s+16|0;if(c[(c[l>>2]|0)+20>>2]|0)break;if(a[o+199>>0]|0)break;m=Pe(c[s>>2]|0,0,s,ta,0,542)|0;if(m|0){cd(o,32157,A);c[o+12>>2]=m;break}ka=c[ta>>2]|0;c[(c[l>>2]|0)+20>>2]=ka;l=c[s+92>>2]|0;o=c[ka+4>>2]|0;c[o+4>>2]=c[ka>>2];do if(!(b[o+22>>1]&2)){p=o+32|0;q=o+36|0;r=(c[p>>2]|0)-(c[q>>2]|0)|0;do if((l+-512|0)>>>0<65025){if(l+-1&l|0)break;c[p>>2]=l;n=o+80|0;l=c[n>>2]|0;if(!l)break;m=l+-4|0;c[n>>2]=m;l=m;do if((c[14816]|0)>>>0<=l>>>0)if((c[14817]|0)>>>0>l>>>0){c[14979]=(c[14979]|0)+-1;c[m>>2]=c[14819];c[14819]=m;ka=(c[14820]|0)+1|0;c[14820]=ka;c[14821]=(ka|0)<(c[14815]|0)&1;break}else{l=Wa[c[29352>>2]&127](m)|0;Ba=237;break}else{l=Wa[c[29352>>2]&127](m)|0;Ba=237}while(0);do if((Ba|0)==237){c[14980]=(c[14980]|0)-l;if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{ka=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-ka;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[n>>2]=0}while(0);ka=Se(c[o>>2]|0,p,r)|0;c[q>>2]=(c[p>>2]|0)-(r&65535);if((ka|0)!=7)break;l=s+81|0;do if(!(a[l>>0]|0)){if(a[s+82>>0]|0)break;a[l>>0]=1;if((c[s+180>>2]|0)>0)c[s+264>>2]=1;l=s+272|0;c[l>>2]=(c[l>>2]|0)+1;l=c[s+236>>2]|0;if(!l)break;c[l+12>>2]=7}while(0);break i}while(0)}while(0);u=f+40|0;E=c[u>>2]|0;J=E+1|0;c[u>>2]=E+2;u=Wm(f,W,Ca)|0;F=f+19|0;l=a[F>>0]|0;do if(l<<24>>24){ka=l+-1<<24>>24;a[F>>0]=ka;m=c[f+148+((ka&255)<<2)>>2]|0;if(!(ka<<24>>24)){n=f+44|0;l=n;n=c[n>>2]|0;Ba=254;break}else{C=l+-2<<24>>24;a[F>>0]=C;D=m;C=c[f+148+((C&255)<<2)>>2]|0;break}}else{l=f+44|0;n=(c[l>>2]|0)+1|0;c[l>>2]=n;m=n;Ba=254}while(0);if((Ba|0)==254){C=n+1|0;c[l>>2]=C;D=m}Gj(f,J,W,Ca,109);A=P+24|0;do if(!(c[A>>2]&4)){if((b[B>>1]|0)<0){if(!((I+-1|0)>>>0>1|((v|0)!=0|(c[H>>2]|0)!=0))){z=0;break}}else if(!((I+-1|0)>>>0>1|(v|0)!=0)){z=0;break}o=M+108|0;l=c[o>>2]|0;m=M+112|0;if((c[m>>2]|0)>(l|0)){c[o>>2]=l+1;ka=c[M+104>>2]|0;a[ka+(l*20|0)>>0]=36;b[ka+(l*20|0)+2>>1]=0;c[ka+(l*20|0)+4>>2]=J;c[ka+(l*20|0)+8>>2]=0;c[ka+(l*20|0)+12>>2]=0;c[ka+(l*20|0)+16>>2]=0;a[ka+(l*20|0)+1>>0]=0}else l=Di(M,36,J,0,0)|0;n=c[o>>2]|0;if((c[m>>2]|0)>(n|0)){c[o>>2]=n+1;p=c[M+104>>2]|0;a[p+(n*20|0)>>0]=11;p=p+(n*20|0)+1|0;q=p+19|0;do{a[p>>0]=0;p=p+1|0}while((p|0)<(q|0))}else n=Di(M,11,0,0,0)|0;m=c[o>>2]|0;if(!(a[(c[M>>2]|0)+81>>0]|0))l=(c[M+104>>2]|0)+(((l|0)<0?m+-1|0:l)*20|0)|0;else l=59308;c[l+8>>2]=m;z=n}else z=0;while(0);do if(!(c[O>>2]&32)){Gj(f,E,N,K,108);r=M+108|0;l=c[r>>2]|0;s=M+112|0;if((c[s>>2]|0)>(l|0)){c[r>>2]=l+1;q=c[M+104>>2]|0;a[q+(l*20|0)>>0]=36;b[q+(l*20|0)+2>>1]=0;c[q+(l*20|0)+4>>2]=E;c[q+(l*20|0)+8>>2]=0;c[q+(l*20|0)+12>>2]=0;c[q+(l*20|0)+16>>2]=0;a[q+(l*20|0)+1>>0]=0;q=l}else q=Di(M,36,E,0,0)|0;j:do if((b[B>>1]|0)>-1){l=c[r>>2]|0;if((c[s>>2]|0)>(l|0)){c[r>>2]=l+1;ka=c[M+104>>2]|0;a[ka+(l*20|0)>>0]=-128;b[ka+(l*20|0)+2>>1]=0;c[ka+(l*20|0)+4>>2]=E;c[ka+(l*20|0)+8>>2]=C;c[ka+(l*20|0)+12>>2]=0;c[ka+(l*20|0)+16>>2]=0;a[ka+(l*20|0)+1>>0]=0}else l=Di(M,128,E,C,0)|0;m=c[r>>2]|0;if((c[s>>2]|0)>(m|0)){c[r>>2]=m+1;p=c[M+104>>2]|0;a[p+(m*20|0)>>0]=31;b[p+(m*20|0)+2>>1]=0;c[p+(m*20|0)+4>>2]=J;c[p+(m*20|0)+8>>2]=0;c[p+(m*20|0)+12>>2]=C;c[p+(m*20|0)+16>>2]=0;a[p+(m*20|0)+1>>0]=0;p=m}else p=Di(M,31,J,0,C)|0;m=b[B>>1]|0;o=c[f>>2]|0;n=c[Ca>>2]|0;if(m<<16>>16>-1){m=c[(c[Ca+4>>2]|0)+(m<<16>>16<<4)>>2]|0;c[Q>>2]=n;c[Q+4>>2]=m;n=1555;m=dd(o,40358,Q)|0}else{c[R>>2]=n;n=2579;m=dd(o,44808,R)|0}Uj(f,n,I,m,-7,2);n=c[r>>2]|0;if(!(a[(c[M>>2]|0)+81>>0]|0))m=(c[M+104>>2]|0)+(((p|0)<0?n+-1|0:p)*20|0)|0;else m=59308;c[m+8>>2]=n;if((u|0)<=0)break;m=c[ya>>2]|0;n=m+108|0;o=c[n>>2]|0;if((c[m+112>>2]|0)>(o|0)){c[n>>2]=o+1;ka=c[m+104>>2]|0;a[ka+(o*20|0)>>0]=-105;b[ka+(o*20|0)+2>>1]=0;c[ka+(o*20|0)+4>>2]=u;c[ka+(o*20|0)+8>>2]=C;c[ka+(o*20|0)+12>>2]=0;c[ka+(o*20|0)+16>>2]=0;a[ka+(o*20|0)+1>>0]=0;break}else{Di(m,151,u,C,0)|0;break}}else{do if(!(c[H>>2]|0)){if(c[A>>2]&8|0)break;l=c[r>>2]|0;if((c[s>>2]|0)>(l|0)){c[r>>2]=l+1;ka=c[M+104>>2]|0;a[ka+(l*20|0)>>0]=121;b[ka+(l*20|0)+2>>1]=0;c[ka+(l*20|0)+4>>2]=J;c[ka+(l*20|0)+8>>2]=C;c[ka+(l*20|0)+12>>2]=0;c[ka+(l*20|0)+16>>2]=0;a[ka+(l*20|0)+1>>0]=0;break j}else{l=Di(M,121,J,C,0)|0;break j}}while(0);l=c[r>>2]|0;if((c[s>>2]|0)>(l|0)){c[r>>2]=l+1;ka=c[M+104>>2]|0;a[ka+(l*20|0)>>0]=-128;b[ka+(l*20|0)+2>>1]=0;c[ka+(l*20|0)+4>>2]=E;c[ka+(l*20|0)+8>>2]=C;c[ka+(l*20|0)+12>>2]=0;c[ka+(l*20|0)+16>>2]=0;a[ka+(l*20|0)+1>>0]=0;break}else{l=Di(M,128,E,C,0)|0;break}}while(0);m=c[r>>2]|0;if((c[s>>2]|0)>(m|0)){c[r>>2]=m+1;ka=c[M+104>>2]|0;a[ka+(m*20|0)>>0]=127;b[ka+(m*20|0)+2>>1]=0;c[ka+(m*20|0)+4>>2]=E;c[ka+(m*20|0)+8>>2]=D;c[ka+(m*20|0)+12>>2]=1;c[ka+(m*20|0)+16>>2]=0;a[ka+(m*20|0)+1>>0]=0}else Di(M,127,E,D,1)|0;do if(c[A>>2]&4){m=c[r>>2]|0;if((c[s>>2]|0)>(m|0)){c[r>>2]=m+1;p=c[M+104>>2]|0;a[p+(m*20|0)>>0]=-126;b[p+(m*20|0)+2>>1]=0;c[p+(m*20|0)+4>>2]=J;c[p+(m*20|0)+8>>2]=0;c[p+(m*20|0)+12>>2]=0;c[p+(m*20|0)+16>>2]=0;a[p+(m*20|0)+1>>0]=0;p=57;break}else{Di(M,130,J,0,0)|0;p=57;break}}else p=41;while(0);m=c[r>>2]|0;if((c[s>>2]|0)>(m|0)){c[r>>2]=m+1;ka=c[M+104>>2]|0;a[ka+(m*20|0)>>0]=122;b[ka+(m*20|0)+2>>1]=0;c[ka+(m*20|0)+4>>2]=J;c[ka+(m*20|0)+8>>2]=D;c[ka+(m*20|0)+12>>2]=C;c[ka+(m*20|0)+16>>2]=0;a[ka+(m*20|0)+1>>0]=0}else m=Di(M,122,J,D,C)|0;do if(!(a[(c[M>>2]|0)+81>>0]|0)){if((m|0)<0)m=(c[r>>2]|0)+-1|0;n=c[M+104>>2]|0;o=n+(m*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(m*20|0)+16>>2]=Ca;a[o>>0]=-6;break}else{Ei(M,n+(m*20|0)|0,Ca,-6);break}}while(0);m=c[r>>2]|0;if((m|0)>0)b[(c[M+104>>2]|0)+((m+-1|0)*20|0)+2>>1]=p;if((c[s>>2]|0)>(m|0)){c[r>>2]=m+1;ka=c[M+104>>2]|0;a[ka+(m*20|0)>>0]=5;b[ka+(m*20|0)+2>>1]=0;c[ka+(m*20|0)+4>>2]=E;c[ka+(m*20|0)+8>>2]=l;c[ka+(m*20|0)+12>>2]=0;c[ka+(m*20|0)+16>>2]=0;a[ka+(m*20|0)+1>>0]=0}else Di(M,5,E,l,0)|0;l=c[r>>2]|0;if((c[s>>2]|0)>(l|0)){c[r>>2]=l+1;ka=c[M+104>>2]|0;a[ka+(l*20|0)>>0]=117;b[ka+(l*20|0)+2>>1]=0;c[ka+(l*20|0)+4>>2]=E;c[ka+(l*20|0)+8>>2]=0;c[ka+(l*20|0)+12>>2]=0;c[ka+(l*20|0)+16>>2]=0;a[ka+(l*20|0)+1>>0]=0}else Di(M,117,E,0,0)|0;l=c[r>>2]|0;if((c[s>>2]|0)>(l|0)){c[r>>2]=l+1;y=c[M+104>>2]|0;a[y+(l*20|0)>>0]=117;b[y+(l*20|0)+2>>1]=0;c[y+(l*20|0)+4>>2]=J;c[y+(l*20|0)+8>>2]=0;c[y+(l*20|0)+12>>2]=0;c[y+(l*20|0)+16>>2]=0;a[y+(l*20|0)+1>>0]=0;y=q;break}else{Di(M,117,J,0,0)|0;y=q;break}}else{Hj(f,W,c[y>>2]|0,1,c[Ca>>2]|0);Hj(f,N,c[x>>2]|0,0,c[K>>2]|0);y=0}while(0);l=c[H>>2]|0;if(l|0){u=K+8|0;v=M+108|0;w=M+112|0;x=M+104|0;s=l;do{l=u;while(1){o=c[l>>2]|0;if(!(Xm(s,o)|0))l=o+20|0;else break}l=c[o+44>>2]|0;m=c[v>>2]|0;if((c[w>>2]|0)>(m|0)){c[v>>2]=m+1;ka=c[x>>2]|0;a[ka+(m*20|0)>>0]=108;b[ka+(m*20|0)+2>>1]=0;c[ka+(m*20|0)+4>>2]=E;c[ka+(m*20|0)+8>>2]=l;c[ka+(m*20|0)+12>>2]=N;c[ka+(m*20|0)+16>>2]=0;a[ka+(m*20|0)+1>>0]=0}else Di(M,108,E,l,N)|0;l=c[ya>>2]|0;n=Ij(f,o)|0;k:do if(n|0){m=c[l>>2]|0;if(!(a[m+81>>0]|0)){fa=c[l+104>>2]|0;ka=(c[l+108>>2]|0)+-1|0;a[fa+(ka*20|0)+1>>0]=-9;c[fa+(ka*20|0)+16>>2]=n;break}if(c[m+480>>2]|0)break;ka=(c[n>>2]|0)+-1|0;c[n>>2]=ka;if(ka|0)break;l=c[n+12>>2]|0;do if(l|0){if(c[l+480>>2]|0){Xd(l,n);break k}m=n;if((c[l+304>>2]|0)>>>0>m>>>0)break;if((c[l+308>>2]|0)>>>0<=m>>>0)break;ka=l+300|0;c[n>>2]=c[ka>>2];c[ka>>2]=n;break k}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{ka=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-ka;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);l=c[s+44>>2]|0;m=c[v>>2]|0;if((c[w>>2]|0)>(m|0)){c[v>>2]=m+1;ka=c[x>>2]|0;a[ka+(m*20|0)>>0]=109;b[ka+(m*20|0)+2>>1]=0;c[ka+(m*20|0)+4>>2]=J;c[ka+(m*20|0)+8>>2]=l;c[ka+(m*20|0)+12>>2]=W;c[ka+(m*20|0)+16>>2]=0;a[ka+(m*20|0)+1>>0]=0}else Di(M,109,J,l,W)|0;l=c[ya>>2]|0;n=Ij(f,s)|0;l:do if(n|0){m=c[l>>2]|0;if(!(a[m+81>>0]|0)){fa=c[l+104>>2]|0;ka=(c[l+108>>2]|0)+-1|0;a[fa+(ka*20|0)+1>>0]=-9;c[fa+(ka*20|0)+16>>2]=n;break}if(c[m+480>>2]|0)break;ka=(c[n>>2]|0)+-1|0;c[n>>2]=ka;if(ka|0)break;l=c[n+12>>2]|0;do if(l|0){if(c[l+480>>2]|0){Xd(l,n);break l}m=n;if((c[l+304>>2]|0)>>>0>m>>>0)break;if((c[l+308>>2]|0)>>>0<=m>>>0)break;ka=l+300|0;c[n>>2]=c[ka>>2];c[ka>>2]=n;break l}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{ka=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-ka;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);l=c[v>>2]|0;if((l|0)>0)b[(c[x>>2]|0)+((l+-1|0)*20|0)+2>>1]=1;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;r=c[x>>2]|0;a[r+(l*20|0)>>0]=36;b[r+(l*20|0)+2>>1]=0;c[r+(l*20|0)+4>>2]=E;c[r+(l*20|0)+8>>2]=0;c[r+(l*20|0)+12>>2]=0;c[r+(l*20|0)+16>>2]=0;a[r+(l*20|0)+1>>0]=0;r=l}else r=Di(M,36,E,0,0)|0;l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;ka=c[x>>2]|0;a[ka+(l*20|0)>>0]=127;b[ka+(l*20|0)+2>>1]=0;c[ka+(l*20|0)+4>>2]=E;c[ka+(l*20|0)+8>>2]=D;c[ka+(l*20|0)+12>>2]=1;c[ka+(l*20|0)+16>>2]=0;a[ka+(l*20|0)+1>>0]=0}else Di(M,127,E,D,1)|0;do if(c[A>>2]&4){ka=b[o+52>>1]|0;q=ka&65535;m:do if(!(ka<<16>>16))l=0;else{p=c[o+32>>2]|0;l=0;do{m=c[p+(l<<2)>>2]|0;if(!m)break m;if((a[m>>0]|32)<<24>>24!=98)break m;n=34049;do{n=n+1|0;m=m+1|0;ka=a[n>>0]|0;o=(d[208+(ka&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(ka<<24>>24==0|(o|0)!=0));if(o|0)break m;l=l+1|0}while(l>>>0>>0)}while(0);if((l|0)!=(q|0)){l=0;break}l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;ka=c[x>>2]|0;a[ka+(l*20|0)>>0]=-126;b[ka+(l*20|0)+2>>1]=0;c[ka+(l*20|0)+4>>2]=J;c[ka+(l*20|0)+8>>2]=0;c[ka+(l*20|0)+12>>2]=0;c[ka+(l*20|0)+16>>2]=0;a[ka+(l*20|0)+1>>0]=0;l=16;break}else{Di(M,130,J,0,0)|0;l=16;break}}else l=0;while(0);if(c[O>>2]&32){ka=s+55|0;l=l|((d[ka>>0]|d[ka+1>>0]<<8)&3)==2}m=c[v>>2]|0;if((c[w>>2]|0)>(m|0)){c[v>>2]=m+1;ka=c[x>>2]|0;a[ka+(m*20|0)>>0]=-124;b[ka+(m*20|0)+2>>1]=0;c[ka+(m*20|0)+4>>2]=J;c[ka+(m*20|0)+8>>2]=D;c[ka+(m*20|0)+12>>2]=0;c[ka+(m*20|0)+16>>2]=0;a[ka+(m*20|0)+1>>0]=0}else Di(M,132,J,D,0)|0;m=c[v>>2]|0;if((m|0)>0)b[(c[x>>2]|0)+((m+-1|0)*20|0)+2>>1]=(l|8)&255;l=r+1|0;if((c[w>>2]|0)>(m|0)){c[v>>2]=m+1;ka=c[x>>2]|0;a[ka+(m*20|0)>>0]=5;b[ka+(m*20|0)+2>>1]=0;c[ka+(m*20|0)+4>>2]=E;c[ka+(m*20|0)+8>>2]=l;c[ka+(m*20|0)+12>>2]=0;c[ka+(m*20|0)+16>>2]=0;a[ka+(m*20|0)+1>>0]=0}else Di(M,5,E,l,0)|0;m=c[v>>2]|0;if(!(a[(c[M>>2]|0)+81>>0]|0))l=(c[x>>2]|0)+(((r|0)<0?m+-1|0:r)*20|0)|0;else l=59308;c[l+8>>2]=m;if((c[w>>2]|0)>(m|0)){c[v>>2]=m+1;ka=c[x>>2]|0;a[ka+(m*20|0)>>0]=117;b[ka+(m*20|0)+2>>1]=0;c[ka+(m*20|0)+4>>2]=E;c[ka+(m*20|0)+8>>2]=0;c[ka+(m*20|0)+12>>2]=0;c[ka+(m*20|0)+16>>2]=0;a[ka+(m*20|0)+1>>0]=0}else Di(M,117,E,0,0)|0;l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;ka=c[x>>2]|0;a[ka+(l*20|0)>>0]=117;b[ka+(l*20|0)+2>>1]=0;c[ka+(l*20|0)+4>>2]=J;c[ka+(l*20|0)+8>>2]=0;c[ka+(l*20|0)+12>>2]=0;c[ka+(l*20|0)+16>>2]=0;a[ka+(l*20|0)+1>>0]=0}else Di(M,117,J,0,0)|0;s=c[s+20>>2]|0}while((s|0)!=0)}if(y|0){m=c[M+108>>2]|0;if(!(a[(c[M>>2]|0)+81>>0]|0))l=(c[M+104>>2]|0)+(((y|0)<0?m+-1|0:y)*20|0)|0;else l=59308;c[l+8>>2]=m}do if(C|0){l=a[F>>0]|0;if((l&255)>=8)break;a[F>>0]=l+1<<24>>24;c[f+148+((l&255)<<2)>>2]=C}while(0);do if(D|0){l=a[F>>0]|0;if((l&255)>=8)break;a[F>>0]=l+1<<24>>24;c[f+148+((l&255)<<2)>>2]=D}while(0);if(!z){n=0;l=0;break}if(c[f+112>>2]|0)Sm(f);n=M+108|0;l=c[n>>2]|0;o=M+112|0;if((c[o>>2]|0)>(l|0)){c[n>>2]=l+1;p=c[M+104>>2]|0;a[p+(l*20|0)>>0]=69;p=p+(l*20|0)+1|0;q=p+19|0;do{a[p>>0]=0;p=p+1|0}while((p|0)<(q|0))}else Di(M,69,0,0,0)|0;m=c[n>>2]|0;if(!(a[(c[M>>2]|0)+81>>0]|0))l=(c[M+104>>2]|0)+(((z|0)<0?m+-1|0:z)*20|0)|0;else l=59308;c[l+8>>2]=m;if((c[o>>2]|0)>(m|0)){c[n>>2]=m+1;Ba=c[M+104>>2]|0;a[Ba+(m*20|0)>>0]=117;b[Ba+(m*20|0)+2>>1]=0;c[Ba+(m*20|0)+4>>2]=J;c[Ba+(m*20|0)+8>>2]=0;c[Ba+(m*20|0)+12>>2]=0;c[Ba+(m*20|0)+16>>2]=0;a[Ba+(m*20|0)+1>>0]=0;Ba=424;break}else{Di(M,117,J,0,0)|0;Ba=424;break}}else Ba=424;while(0);do if((Ba|0)==424){F=Wm(f,W,Ca)|0;ka=f+44|0;fa=c[ka>>2]|0;da=fa+1|0;ea=Ca+42|0;n=b[ea>>1]|0;D=n<<16>>16;E=da+D|0;c[ka>>2]=E;Z=Ca+56|0;_=(c[Z>>2]|0)==0;E=E+((_^1)&1)|0;c[ka>>2]=E;fa=_?da:fa+2|0;_=fa+1|0;m=((c[S>>2]|0)>>>7&1^1)&255;Y=(i|0)!=0;n:do if(Y){B=c[i+4>>2]|0;if((B|0)<=0){z=-1;break}C=c[i>>2]|0;l=0;do{c[C+(l<<3)+4>>2]=-1;l=l+1|0}while((l|0)!=(B|0));x=n<<16>>16>0;y=Ca+4|0;z=Ca+40|0;A=(pa|0)!=0;n=-1;w=0;while(1){v=c[C+(w<<3)>>2]|0;o:do if(x){r=c[y>>2]|0;s=a[v>>0]|0;u=a[208+(s&255)>>0]|0;p:do if(!(s<<24>>24)){l=0;do{if(u<<24>>24==(a[208+(d[c[r+(l<<4)>>2]>>0]|0)>>0]|0))break p;l=l+1|0}while((l|0)<(D|0));o=u&255;l=o+-95|0;p=1;Ba=446;break o}else{l=0;while(1){o=c[r+(l<<4)>>2]|0;if(u<<24>>24==(a[208+(d[o>>0]|0)>>0]|0)){p=v;do{p=p+1|0;o=o+1|0;S=a[p>>0]|0;q=(d[208+(S&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(S<<24>>24==0|(q|0)!=0));if(!q)break p}l=l+1|0;if((l|0)>=(D|0)){l=u;m=s;Ba=443;break o}}}while(0);c[C+(w<<3)+4>>2]=l;n=(l|0)==(b[z>>1]|0)?w:n;m=(w|0)==(l|0)?m:0}else{m=a[v>>0]|0;l=a[208+(m&255)>>0]|0;Ba=443}while(0);do if((Ba|0)==443){o=l&255;l=o+-95|0;p=m<<24>>24==0;if(p|(l|0)!=0){Ba=446;break}m=58070;n=v;do{n=n+1|0;m=m+1|0;Ba=a[n>>0]|0;l=(d[208+(Ba&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(Ba<<24>>24==0|(l|0)!=0));Ba=446}while(0);if((Ba|0)==446){Ba=0;do if(!l)l=1;else{l=o+-114|0;if(!(p|(l|0)!=0)){m=40352;n=v;do{n=n+1|0;m=m+1|0;S=a[n>>0]|0;l=(d[208+(S&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(S<<24>>24==0|(l|0)!=0))}if(!l){l=1;break}l=o+-111|0;if(!(p|(l|0)!=0)){m=58078;n=v;do{n=n+1|0;m=m+1|0;S=a[n>>0]|0;l=(d[208+(S&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(S<<24>>24==0|(l|0)!=0))}l=(l|0)==0&1}while(0);if(A|(l|0)==0)break;else{n=w;m=0}}w=w+1|0;if((w|0)>=(B|0)){z=n;break n}}c[T>>2]=g;c[T+4>>2]=0;c[T+8>>2]=v;cd(f,44817,T);a[f+17>>0]=1;l=0;Ba=1038;break a}else z=-1;while(0);q:do if(va){n=E+1|0;c[ka>>2]=n;v=Aa+108|0;o=c[v>>2]|0;l=o+1|0;w=Aa+112|0;if((c[w>>2]|0)>(o|0)){c[v>>2]=l;X=c[Aa+104>>2]|0;a[X+(o*20|0)>>0]=13;b[X+(o*20|0)+2>>1]=0;c[X+(o*20|0)+4>>2]=n;c[X+(o*20|0)+8>>2]=0;c[X+(o*20|0)+12>>2]=l;c[X+(o*20|0)+16>>2]=0;a[X+(o*20|0)+1>>0]=0}else Di(Aa,13,n,0,l)|0;a[U>>0]=13;c[na>>2]=n;c[U+16>>2]=0;x=U+8|0;c[x>>2]=m<<24>>24==0?0:_;c[U+12>>2]=b[ea>>1];X=kj(f,Da,U)|0;x=c[x>>2]|0;if(X|0){l=0;Ba=1038;break a}if(a[ba>>0]|0){l=0;Ba=1038;break a}if(c[V>>2]|0){l=0;Ba=1038;break a}l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;X=c[Aa+104>>2]|0;a[X+(l*20|0)>>0]=67;b[X+(l*20|0)+2>>1]=0;c[X+(l*20|0)+4>>2]=n;c[X+(l*20|0)+8>>2]=0;c[X+(l*20|0)+12>>2]=0;c[X+(l*20|0)+16>>2]=0;a[X+(l*20|0)+1>>0]=0}else Di(Aa,67,n,0,0)|0;m=c[Aa+12>>2]|0;a[m+19>>0]=0;c[m+28>>2]=0;m=c[v>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))l=(c[Aa+104>>2]|0)+(((o|0)<0?m+-1|0:o)*20|0)|0;else l=59308;c[l+8>>2]=m;u=c[c[Da>>2]>>2]|0;r:do if(!sa){l=c[ya>>2]|0;s:do if(!l){n=c[f>>2]|0;do if(!(c[ua>>2]|0)){if(b[n+76>>1]&8)break;a[f+23>>0]=1}while(0);t:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))Ba=485;else{l=0;break s}else{do if((e[n+276>>1]|0)>=224){m=n+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];X=n+284|0;c[X>>2]=(c[X>>2]|0)+1;break t}m=n+296|0;l=c[m>>2]|0;if(!l){l=n+292|0;break}else{c[m>>2]=c[l>>2];X=n+284|0;c[X>>2]=(c[X>>2]|0)+1;break t}}else l=n+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;Ba=485}while(0);if((Ba|0)==485)l=_d(n,224,0)|0;if(!l){l=0;break}p=l+104|0;q=p+120|0;do{c[p>>2]=0;p=p+4|0}while((p|0)<(q|0));c[l>>2]=n;m=n+4|0;n=c[m>>2]|0;if(n|0)c[n+4>>2]=l;c[l+8>>2]=n;c[l+4>>2]=0;c[m>>2]=l;c[l+20>>2]=381479589;c[l+12>>2]=f;c[ya>>2]=l;Di(l,61,0,1,0)|0}while(0);s=c[l+108>>2]|0;u:do if(!(c[Z>>2]|0))m=0;else{n=c[f>>2]|0;m=c[Ca+64>>2]|0;if(!m){m=0;break}while(1){if((c[m>>2]|0)==(n|0))break u;m=c[m+24>>2]|0;if(!m){m=0;break}}}while(0);if((s|0)<=1){T=x;U=0;E=0;J=u;break q}q=Ca+28|0;r=Ca+8|0;if(!(a[(c[l>>2]|0)+81>>0]|0)){o=c[l+104>>2]|0;n=1;while(1){v:do switch(a[o+(n*20|0)>>0]|0){case 108:{if((c[o+(n*20|0)+12>>2]|0)!=(W|0))break v;p=c[o+(n*20|0)+8>>2]|0;if((p|0)==(c[q>>2]|0))break r;l=c[r>>2]|0;if(!l)break v;do{if((p|0)==(c[l+44>>2]|0))break r;l=c[l+20>>2]|0}while((l|0)!=0);break}case -93:{if((c[o+(n*20|0)+16>>2]|0)==(m|0))break r;break}default:{}}while(0);n=n+1|0;if((n|0)>=(s|0)){T=x;U=0;E=0;J=u;break q}}}n=(c[14830]|0)==(W|0);l=(c[14831]|0)==(m|0);p=c[14829]|0;switch(a[59308]|0){case 108:break;case -93:if(l)break r;else{T=x;U=0;E=0;J=u;break q}default:{T=x;U=0;E=0;J=u;break q}}if(l){if(!n){T=x;U=0;E=0;J=u;break q}n=(p|0)==(c[q>>2]|0);m=1;while(1){if(n)break r;l=c[r>>2]|0;if(l|0)do{if((p|0)==(c[l+44>>2]|0))break r;l=c[l+20>>2]|0}while((l|0)!=0);m=m+1|0;if((m|0)>=(s|0)){T=x;U=0;E=0;J=u;break q}}}else{if(!n){T=x;U=0;E=0;J=u;break q}if((p|0)==(c[q>>2]|0))break;l=c[r>>2]|0;o=(l|0)==0;n=1;while(1){if(!o){m=l;do{if((p|0)==(c[m+44>>2]|0))break r;m=c[m+20>>2]|0}while((m|0)!=0)}n=n+1|0;if((n|0)>=(s|0)){T=x;U=0;E=0;J=u;break q}}}}while(0);q=f+40|0;r=c[q>>2]|0;c[q>>2]=r+1;q=f+19|0;m=a[q>>0]|0;do if(m<<24>>24){X=m+-1<<24>>24;a[q>>0]=X;l=c[f+148+((X&255)<<2)>>2]|0;if(!(X<<24>>24)){m=c[ka>>2]|0;Ba=530;break}else{p=m+-2<<24>>24;a[q>>0]=p;o=l;p=c[f+148+((p&255)<<2)>>2]|0;break}}else{m=(c[ka>>2]|0)+1|0;c[ka>>2]=m;l=m;Ba=530}while(0);if((Ba|0)==530){p=m+1|0;c[ka>>2]=p;o=l}l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;X=c[Aa+104>>2]|0;a[X+(l*20|0)>>0]=113;b[X+(l*20|0)+2>>1]=0;c[X+(l*20|0)+4>>2]=r;c[X+(l*20|0)+8>>2]=u;c[X+(l*20|0)+12>>2]=0;c[X+(l*20|0)+16>>2]=0;a[X+(l*20|0)+1>>0]=0}else Di(Aa,113,r,u,0)|0;l=c[na>>2]|0;m=c[v>>2]|0;if((c[w>>2]|0)>(m|0)){c[v>>2]=m+1;n=c[Aa+104>>2]|0;a[n+(m*20|0)>>0]=14;b[n+(m*20|0)+2>>1]=0;c[n+(m*20|0)+4>>2]=l;c[n+(m*20|0)+8>>2]=0;c[n+(m*20|0)+12>>2]=0;c[n+(m*20|0)+16>>2]=0;a[n+(m*20|0)+1>>0]=0;n=m}else n=Di(Aa,14,l,0,0)|0;l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;X=c[Aa+104>>2]|0;a[X+(l*20|0)>>0]=92;b[X+(l*20|0)+2>>1]=0;c[X+(l*20|0)+4>>2]=x;c[X+(l*20|0)+8>>2]=u;c[X+(l*20|0)+12>>2]=o;c[X+(l*20|0)+16>>2]=0;a[X+(l*20|0)+1>>0]=0}else Di(Aa,92,x,u,o)|0;l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;X=c[Aa+104>>2]|0;a[X+(l*20|0)>>0]=121;b[X+(l*20|0)+2>>1]=0;c[X+(l*20|0)+4>>2]=r;c[X+(l*20|0)+8>>2]=p;c[X+(l*20|0)+12>>2]=0;c[X+(l*20|0)+16>>2]=0;a[X+(l*20|0)+1>>0]=0}else Di(Aa,121,r,p,0)|0;l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;X=c[Aa+104>>2]|0;a[X+(l*20|0)>>0]=122;b[X+(l*20|0)+2>>1]=0;c[X+(l*20|0)+4>>2]=r;c[X+(l*20|0)+8>>2]=o;c[X+(l*20|0)+12>>2]=p;c[X+(l*20|0)+16>>2]=0;a[X+(l*20|0)+1>>0]=0}else Di(Aa,122,r,o,p)|0;l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;X=c[Aa+104>>2]|0;a[X+(l*20|0)>>0]=11;b[X+(l*20|0)+2>>1]=0;c[X+(l*20|0)+4>>2]=0;c[X+(l*20|0)+8>>2]=n;c[X+(l*20|0)+12>>2]=0;c[X+(l*20|0)+16>>2]=0;a[X+(l*20|0)+1>>0]=0}else Di(Aa,11,0,n,0)|0;m=c[v>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))l=(c[Aa+104>>2]|0)+(((n|0)<0?m+-1|0:n)*20|0)|0;else l=59308;c[l+8>>2]=m;do if(o|0){l=a[q>>0]|0;if((l&255)>=8)break;a[q>>0]=l+1<<24>>24;c[f+148+((l&255)<<2)>>2]=o}while(0);if(!p){T=x;U=r;E=1;J=u;break}l=a[q>>0]|0;if((l&255)>=8){T=x;U=r;E=1;J=u;break}a[q>>0]=l+1<<24>>24;c[f+148+((l&255)<<2)>>2]=p;T=x;U=r;E=1;J=u}else{W=ja+4|0;c[W>>2]=0;c[W+4>>2]=0;c[W+8>>2]=0;c[W+12>>2]=0;c[W+16>>2]=0;c[W+20>>2]=0;c[W+24>>2]=0;c[ja>>2]=f;w:do if(!Ea)l=0;else{l=c[Ea>>2]|0;if((l|0)<=0)break;s=ja+24|0;u=ta+4|0;v=ta+8|0;w=ta+12|0;x=ta+24|0;y=ja+20|0;r=0;m=0;while(1){q=c[Ea+4+(r*20|0)>>2]|0;if(q){o=m&65535;b[s>>1]=o&28655;m=c[ja>>2]|0;c[ta>>2]=m;c[u>>2]=125;c[v>>2]=126;c[w>>2]=0;c[x>>2]=ja;p=q+24|0;n=m;V=n+208|0;W=(c[V>>2]|0)+(c[p>>2]|0)|0;c[V>>2]=W;n=c[(c[n>>2]|0)+120>>2]|0;if((n|0)<(W|0)){Ba=565;break}_j(ta,q)|0;n=c[ta>>2]|0;m=n+208|0;c[m>>2]=(c[m>>2]|0)-(c[p>>2]|0);m=b[s>>1]|0;W=q+4|0;c[W>>2]=c[W>>2]|m&-32752&65535;m=(o&36880|m&65535)&65535;b[s>>1]=m;if((c[y>>2]|0)>0){Ba=567;break}if((c[n+36>>2]|0)>=1)break}r=r+1|0;if((r|0)>=(c[Ea>>2]|0))break w}if((Ba|0)==565){c[X>>2]=n;cd(m,41637,X);Ba=567}qi(Fa,g);l=0;break a}while(0);T=0;U=-1;E=0;J=l}while(0);if(qa&(J|0)>0)S=b[Ca+40>>1]|0;else S=z;X=b[ea>>1]|0;o=X<<16>>16;if(X<<16>>16>0){n=c[Ca+4>>2]|0;l=0;m=0;do{l=l+((d[n+(m<<4)+15>>0]|0)>>>1&1)|0;m=m+1|0}while((m|0)!=(o|0))}else l=0;do if(qa&(J|0)!=0){l=o-l|0;if((J|0)==(l|0))break;c[$>>2]=g;c[$+4>>2]=0;c[$+8>>2]=l;c[$+12>>2]=J;cd(f,44849,$);l=0;Ba=1038;break a}while(0);do if(Y){l=c[i+4>>2]|0;if((J|0)==(l|0))break;c[aa>>2]=J;c[aa+4>>2]=l;cd(f,44901,aa);l=0;Ba=1038;break a}while(0);O=Fa+32|0;do if(!((c[O>>2]&128|0)==0&0==0)){if(a[za>>0]|0){n=0;break}if(c[f+120>>2]|0){n=0;break}n=(c[ka>>2]|0)+1|0;c[ka>>2]=n;l=Aa+108|0;m=c[l>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[l>>2]=m+1;aa=c[Aa+104>>2]|0;a[aa+(m*20|0)>>0]=70;b[aa+(m*20|0)+2>>1]=0;c[aa+(m*20|0)+4>>2]=0;c[aa+(m*20|0)+8>>2]=n;c[aa+(m*20|0)+12>>2]=0;c[aa+(m*20|0)+16>>2]=0;a[aa+(m*20|0)+1>>0]=0;break}else{Di(Aa,70,0,n,0)|0;break}}else n=0;while(0);do if(oa){R=0;l=0}else{q=Hm(f,Ca,109,0,-1,0,xa,wa)|0;o=(q<<2)+4|0;x:do if(c[Fa+272>>2]|0)if(!(a[ba>>0]|0))Ba=599;else{l=0;Ba=1038;break a}else{do if(!(0<0|(0==0?(e[Fa+276>>1]|0)>>>0>>0:0))){l=Fa+300|0;m=c[l>>2]|0;if(m|0){c[l>>2]=c[m>>2];ba=Fa+284|0;c[ba>>2]=(c[ba>>2]|0)+1;break x}l=Fa+296|0;m=c[l>>2]|0;if(!m){l=Fa+292|0;break}else{c[l>>2]=c[m>>2];ba=Fa+284|0;c[ba>>2]=(c[ba>>2]|0)+1;break x}}else l=Fa+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;Ba=599}while(0);if((Ba|0)==599)m=_d(Fa,o,0)|0;if(!m){l=0;Ba=1038;break a}if((q|0)<=0){R=m;l=m;break}l=Ca+8|0;o=0;p=c[ka>>2]|0;while(1){l=c[l>>2]|0;ba=p+1|0;c[ka>>2]=ba;c[m+(o<<2)>>2]=ba;p=(c[ka>>2]|0)+(e[l+52>>1]|0)|0;c[ka>>2]=p;o=o+1|0;if((o|0)==(q|0)){R=m;l=m;break}else l=l+20|0}}while(0);do if(k|0){if(c[Z>>2]|0){c[ca>>2]=c[Ca>>2];cd(f,44926,ca);Ba=1038;break a}u=c[xa>>2]|0;C=g+48|0;c[C>>2]=u;c[k+20>>2]=g;c[k+24>>2]=_;c[k+28>>2]=u;c[k+32>>2]=c[wa>>2];u=c[k>>2]|0;if(!u)break;ca=ja+8|0;c[ca>>2]=0;c[ca+4>>2]=0;c[ca+8>>2]=0;c[ca+12>>2]=0;c[ca+16>>2]=0;c[ca+20>>2]=0;c[ja>>2]=f;c[ja+4>>2]=g;y:do if((c[u>>2]|0)>0){v=ja+24|0;w=ta+4|0;x=ta+8|0;y=ta+12|0;z=ta+24|0;A=ja+20|0;s=0;m=0;while(1){r=c[u+4+(s*20|0)>>2]|0;if(r){p=m&65535;b[v>>1]=p&28655;m=c[ja>>2]|0;c[ta>>2]=m;c[w>>2]=125;c[x>>2]=126;c[y>>2]=0;c[z>>2]=ja;q=r+24|0;o=m;ba=o+208|0;ca=(c[ba>>2]|0)+(c[q>>2]|0)|0;c[ba>>2]=ca;o=c[(c[o>>2]|0)+120>>2]|0;if((o|0)<(ca|0)){Ba=614;break}_j(ta,r)|0;o=c[ta>>2]|0;m=o+208|0;c[m>>2]=(c[m>>2]|0)-(c[q>>2]|0);m=b[v>>1]|0;ca=r+4|0;c[ca>>2]=c[ca>>2]|m&-32752&65535;m=(p&36880|m&65535)&65535;b[v>>1]=m;if((c[A>>2]|0)>0)break;if((c[o+36>>2]|0)>=1)break y}s=s+1|0;if((s|0)>=(c[u>>2]|0)){Ba=618;break y}}if((Ba|0)==614){c[ga>>2]=o;cd(m,41637,ga)}}else{m=0;Ba=618}while(0);z:do if((Ba|0)==618){D=k+4|0;r=c[D>>2]|0;A:do if(r){s=ja+24|0;p=m&65535;b[s>>1]=p&28655;m=c[ja>>2]|0;c[ta>>2]=m;c[ta+4>>2]=125;c[ta+8>>2]=126;c[ta+12>>2]=0;c[ta+24>>2]=ja;q=r+24|0;o=m+208|0;ga=(c[o>>2]|0)+(c[q>>2]|0)|0;c[o>>2]=ga;o=c[(c[m>>2]|0)+120>>2]|0;do if((o|0)>=(ga|0)){_j(ta,r)|0;m=c[ta>>2]|0;ia=m+208|0;c[ia>>2]=(c[ia>>2]|0)-(c[q>>2]|0);ia=b[s>>1]|0;ga=r+4|0;c[ga>>2]=c[ga>>2]|ia&-32752&65535;b[s>>1]=p&36880|ia&65535;if((c[ja+20>>2]|0)>0)break;if((c[m+36>>2]|0)<1)break A;else break z}else{c[ia>>2]=o;cd(m,41637,ia)}while(0);break z}while(0);o=c[ha>>2]|0;B=c[k>>2]|0;A=c[C>>2]|0;do if(!(c[o+36>>2]&32)){if((c[B>>2]|0)!=1)break;m=c[B+4>>2]|0;if((a[m>>0]|0)!=-94)break;if((b[m+32>>1]|0)==-1)break z}while(0);p=la;q=p+104|0;do{c[p>>2]=0;p=p+4|0}while((p|0)<(q|0));a[la>>0]=106;y=la+52|0;z=la+12|0;c[z>>2]=y;a[y>>0]=-94;c[la+80>>2]=A;m=c[o+8>>2]|0;B:do if(m|0){w=la+8|0;x=la+84|0;C:while(1){D:do if(a[m+54>>0]|0){p=c[B>>2]|0;q=m+50|0;o=b[q>>1]|0;if((p|0)!=(o&65535|0))break;r=c[m+36>>2]|0;if(r){o=c[D>>2]|0;if(!o)break;if(bk(f,o,r,A)|0)break;o=b[q>>1]|0;p=o&65535}if(!(o<<16>>16))break C;s=m+32|0;u=m+4|0;v=m+40|0;r=0;while(1){c[w>>2]=c[(c[s>>2]|0)+(r<<2)>>2];o=b[(c[u>>2]|0)+(r<<1)>>1]|0;do if(o<<16>>16==-2){o=c[(c[v>>2]|0)+4+(r*20|0)>>2]|0;if((a[o>>0]|0)==106)break;c[z>>2]=o;o=la}else{c[z>>2]=y;b[x>>1]=o;o=la}while(0);q=0;while(1){if((bk(f,c[B+4+(q*20|0)>>2]|0,o,A)|0)<2)break;q=q+1|0;if(q>>>0>=p>>>0)break D}r=r+1|0;if(r>>>0>=p>>>0)break C}}while(0);m=c[m+20>>2]|0;if(!m)break B}c[k+16>>2]=m;break z}while(0);cd(f,44986,ma)}while(0)}while(0);P=E<<24>>24!=0;do if(!P){if(!va){Q=0;N=0;break}m=c[na>>2]|0;o=Aa+108|0;p=c[o>>2]|0;if((c[Aa+112>>2]|0)>(p|0)){c[o>>2]=p+1;Q=c[Aa+104>>2]|0;a[Q+(p*20|0)>>0]=14;b[Q+(p*20|0)+2>>1]=0;c[Q+(p*20|0)+4>>2]=m;c[Q+(p*20|0)+8>>2]=0;c[Q+(p*20|0)+12>>2]=0;c[Q+(p*20|0)+16>>2]=0;a[Q+(p*20|0)+1>>0]=0;Q=p;N=p;break}else{N=Di(Aa,14,m,0,0)|0;Q=N;break}}else{o=Aa+108|0;m=c[o>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[o>>2]=m+1;na=c[Aa+104>>2]|0;a[na+(m*20|0)>>0]=36;b[na+(m*20|0)+2>>1]=0;c[na+(m*20|0)+4>>2]=U;c[na+(m*20|0)+8>>2]=0;c[na+(m*20|0)+12>>2]=0;c[na+(m*20|0)+16>>2]=0;a[na+(m*20|0)+1>>0]=0}else m=Di(Aa,36,U,0,0)|0;Q=m;N=c[o>>2]|0}while(0);na=f+56|0;M=c[na>>2]|0;K=M+-1|0;c[na>>2]=K;do if(h&1|0){na=b[ea>>1]|0;h=na<<16>>16;m=h+1|0;do if(!(na<<16>>16)){h=f+19|0;m=a[h>>0]|0;if(!(m<<24>>24)){E=(c[ka>>2]|0)+1|0;c[ka>>2]=E;break}else{E=m+-1<<24>>24;a[h>>0]=E;E=c[f+148+((E&255)<<2)>>2]|0;break}}else{o=f+32|0;p=c[o>>2]|0;q=f+28|0;r=c[q>>2]|0;if((r|0)>(h|0)){c[o>>2]=p+m;c[q>>2]=r-m;E=p;break}else{E=c[ka>>2]|0;c[ka>>2]=E+m;E=E+1|0;break}}while(0);do if((S|0)<0){h=Aa+108|0;m=c[h>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[h>>2]=m+1;na=c[Aa+104>>2]|0;a[na+(m*20|0)>>0]=70;b[na+(m*20|0)+2>>1]=0;c[na+(m*20|0)+4>>2]=-1;c[na+(m*20|0)+8>>2]=E;c[na+(m*20|0)+12>>2]=0;c[na+(m*20|0)+16>>2]=0;a[na+(m*20|0)+1>>0]=0;break}else{Di(Aa,70,-1,E,0)|0;break}}else{E:do if(P){h=Aa+108|0;m=c[h>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[h>>2]=m+1;na=c[Aa+104>>2]|0;a[na+(m*20|0)>>0]=90;b[na+(m*20|0)+2>>1]=0;c[na+(m*20|0)+4>>2]=U;c[na+(m*20|0)+8>>2]=S;c[na+(m*20|0)+12>>2]=E;c[na+(m*20|0)+16>>2]=0;a[na+(m*20|0)+1>>0]=0;break}else{Di(Aa,90,U,S,E)|0;break}}else{h=c[Ea+4+(S*20|0)>>2]|0;do if(h){if((a[h>>0]|0)!=-88){p=Jj(f,h,E)|0;break}p=c[ya>>2]|0;h=c[h+28>>2]|0;m=p+108|0;o=c[m>>2]|0;if((c[p+112>>2]|0)>(o|0)){c[m>>2]=o+1;na=c[p+104>>2]|0;a[na+(o*20|0)>>0]=78;b[na+(o*20|0)+2>>1]=0;c[na+(o*20|0)+4>>2]=h;c[na+(o*20|0)+8>>2]=E;c[na+(o*20|0)+12>>2]=0;c[na+(o*20|0)+16>>2]=0;a[na+(o*20|0)+1>>0]=0;break E}else{Di(p,78,h,E,0)|0;break E}}else p=Jj(f,0,E)|0;while(0);if((p|0)==(E|0))break;h=c[ya>>2]|0;if(!h)break;m=h+108|0;o=c[m>>2]|0;if((c[h+112>>2]|0)>(o|0)){c[m>>2]=o+1;na=c[h+104>>2]|0;a[na+(o*20|0)>>0]=79;b[na+(o*20|0)+2>>1]=0;c[na+(o*20|0)+4>>2]=p;c[na+(o*20|0)+8>>2]=E;c[na+(o*20|0)+12>>2]=0;c[na+(o*20|0)+16>>2]=0;a[na+(o*20|0)+1>>0]=0;break}else{Di(h,79,p,E,0)|0;break}}while(0);o=Aa+108|0;h=c[o>>2]|0;p=Aa+112|0;if((c[p>>2]|0)>(h|0)){c[o>>2]=h+1;na=c[Aa+104>>2]|0;a[na+(h*20|0)>>0]=51;b[na+(h*20|0)+2>>1]=0;c[na+(h*20|0)+4>>2]=E;c[na+(h*20|0)+8>>2]=0;c[na+(h*20|0)+12>>2]=0;c[na+(h*20|0)+16>>2]=0;a[na+(h*20|0)+1>>0]=0}else h=Di(Aa,51,E,0,0)|0;m=c[o>>2]|0;if((c[p>>2]|0)>(m|0)){c[o>>2]=m+1;na=c[Aa+104>>2]|0;a[na+(m*20|0)>>0]=70;b[na+(m*20|0)+2>>1]=0;c[na+(m*20|0)+4>>2]=-1;c[na+(m*20|0)+8>>2]=E;c[na+(m*20|0)+12>>2]=0;c[na+(m*20|0)+16>>2]=0;a[na+(m*20|0)+1>>0]=0}else Di(Aa,70,-1,E,0)|0;m=c[o>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))h=(c[Aa+104>>2]|0)+(((h|0)<0?m+-1|0:h)*20|0)|0;else h=59308;c[h+8>>2]=m;if((c[p>>2]|0)>(m|0)){c[o>>2]=m+1;na=c[Aa+104>>2]|0;a[na+(m*20|0)>>0]=15;b[na+(m*20|0)+2>>1]=0;c[na+(m*20|0)+4>>2]=E;c[na+(m*20|0)+8>>2]=0;c[na+(m*20|0)+12>>2]=0;c[na+(m*20|0)+16>>2]=0;a[na+(m*20|0)+1>>0]=0;break}else{Di(Aa,15,E,0,0)|0;break}}while(0);h=b[ea>>1]|0;if(h<<16>>16>0){w=i+4|0;D=(Ea|0)!=0|P;x=qa&1;y=Ca+4|0;z=E+1|0;A=Aa+108|0;B=Aa+112|0;C=Aa+104|0;h=0;v=0;while(1){F:do if(Y){m=c[w>>2]|0;if((m|0)<=0){u=0;break}o=c[i>>2]|0;h=0;while(1){if((c[o+(h<<3)+4>>2]|0)==(v|0)){u=h;break F}h=h+1|0;if((h|0)>=(m|0)){u=h;break}}}else u=h;while(0);do if(D){if(Y?(u|0)>=(c[w>>2]|0):0){Ba=710;break}if(P){h=v+z|0;m=c[A>>2]|0;if((c[B>>2]|0)>(m|0)){c[A>>2]=m+1;na=c[C>>2]|0;a[na+(m*20|0)>>0]=90;b[na+(m*20|0)+2>>1]=0;c[na+(m*20|0)+4>>2]=U;c[na+(m*20|0)+8>>2]=u;c[na+(m*20|0)+12>>2]=h;c[na+(m*20|0)+16>>2]=0;a[na+(m*20|0)+1>>0]=0;break}else{Di(Aa,90,U,u,h)|0;break}}q=c[Ea+4+(u*20|0)>>2]|0;r=v+z|0;s=c[ya>>2]|0;do if(q){if((a[q>>0]|0)!=-88){p=Jj(f,q,r)|0;Ba=732;break}h=c[q+28>>2]|0;m=s+108|0;o=c[m>>2]|0;if((c[s+112>>2]|0)>(o|0)){c[m>>2]=o+1;na=c[s+104>>2]|0;a[na+(o*20|0)>>0]=78;b[na+(o*20|0)+2>>1]=0;c[na+(o*20|0)+4>>2]=h;c[na+(o*20|0)+8>>2]=r;c[na+(o*20|0)+12>>2]=0;c[na+(o*20|0)+16>>2]=0;a[na+(o*20|0)+1>>0]=0;break}else{Di(s,78,h,r,0)|0;break}}else{p=Jj(f,0,r)|0;Ba=732}while(0);do if((Ba|0)==732){Ba=0;if((p|0)==(r|0))break;h=c[ya>>2]|0;if(!h)break;m=h+108|0;o=c[m>>2]|0;if((c[h+112>>2]|0)>(o|0)){c[m>>2]=o+1;na=c[h+104>>2]|0;a[na+(o*20|0)>>0]=79;b[na+(o*20|0)+2>>1]=0;c[na+(o*20|0)+4>>2]=p;c[na+(o*20|0)+8>>2]=r;c[na+(o*20|0)+12>>2]=0;c[na+(o*20|0)+16>>2]=0;a[na+(o*20|0)+1>>0]=0;break}else{Di(h,79,p,r,0)|0;break}}while(0);h=(c[ka>>2]|0)+1|0;c[ka>>2]=h;m=s+108|0;o=c[m>>2]|0;if((c[s+112>>2]|0)>(o|0)){c[m>>2]=o+1;na=c[s+104>>2]|0;a[na+(o*20|0)>>0]=78;b[na+(o*20|0)+2>>1]=0;c[na+(o*20|0)+4>>2]=r;c[na+(o*20|0)+8>>2]=h;c[na+(o*20|0)+12>>2]=0;c[na+(o*20|0)+16>>2]=0;a[na+(o*20|0)+1>>0]=0}else Di(s,78,r,h,0)|0;a[q+38>>0]=a[q>>0]|0;a[q>>0]=-88;c[q+28>>2]=h;na=q+4|0;c[na>>2]=c[na>>2]&-4097}else Ba=710;while(0);G:do if((Ba|0)==710){Ba=0;h=c[(c[y>>2]|0)+(v<<4)+4>>2]|0;q=v+z|0;do if(h){if((a[h>>0]|0)!=-88){p=Jj(f,h,q)|0;break}p=c[ya>>2]|0;h=c[h+28>>2]|0;m=p+108|0;o=c[m>>2]|0;if((c[p+112>>2]|0)>(o|0)){c[m>>2]=o+1;na=c[p+104>>2]|0;a[na+(o*20|0)>>0]=78;b[na+(o*20|0)+2>>1]=0;c[na+(o*20|0)+4>>2]=h;c[na+(o*20|0)+8>>2]=q;c[na+(o*20|0)+12>>2]=0;c[na+(o*20|0)+16>>2]=0;a[na+(o*20|0)+1>>0]=0;break G}else{Di(p,78,h,q,0)|0;break G}}else p=Jj(f,0,q)|0;while(0);if((p|0)==(q|0))break;h=c[ya>>2]|0;if(!h)break;m=h+108|0;o=c[m>>2]|0;if((c[h+112>>2]|0)>(o|0)){c[m>>2]=o+1;na=c[h+104>>2]|0;a[na+(o*20|0)>>0]=79;b[na+(o*20|0)+2>>1]=0;c[na+(o*20|0)+4>>2]=p;c[na+(o*20|0)+8>>2]=q;c[na+(o*20|0)+12>>2]=0;c[na+(o*20|0)+16>>2]=0;a[na+(o*20|0)+1>>0]=0;break}else{Di(h,79,p,q,0)|0;break}}while(0);v=v+1|0;h=b[ea>>1]|0;if((v|0)>=(h<<16>>16|0))break;else h=u+x|0}}if(!oa){zk(Aa,Ca,E+1|0);h=b[ea>>1]|0}m=h<<16>>16;w=E-m+-1|0;if(t){v=f+23|0;u=t;do{do if((a[u+8>>0]|0)==120){if((a[u+9>>0]|0)!=1)break;h=c[ya>>2]|0;H:do if(!h){o=c[f>>2]|0;do if(!(c[ua>>2]|0)){if(b[o+76>>1]&8)break;a[v>>0]=1}while(0);I:do if(c[o+272>>2]|0)if(!(a[o+81>>0]|0))Ba=762;else{h=0;break H}else{do if((e[o+276>>1]|0)>=224){m=o+300|0;h=c[m>>2]|0;if(h|0){c[m>>2]=c[h>>2];na=o+284|0;c[na>>2]=(c[na>>2]|0)+1;break I}m=o+296|0;h=c[m>>2]|0;if(!h){h=o+292|0;break}else{c[m>>2]=c[h>>2];na=o+284|0;c[na>>2]=(c[na>>2]|0)+1;break I}}else h=o+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;Ba=762}while(0);if((Ba|0)==762){Ba=0;h=_d(o,224,0)|0}if(!h){h=0;break}p=h+104|0;q=p+120|0;do{c[p>>2]=0;p=p+4|0}while((p|0)<(q|0));c[h>>2]=o;m=o+4|0;o=c[m>>2]|0;if(o|0)c[o+4>>2]=h;c[h+8>>2]=o;c[h+4>>2]=0;c[m>>2]=h;c[h+20>>2]=381479589;c[h+12>>2]=f;c[ya>>2]=h;Di(h,61,0,1,0)|0}while(0);m=c[ua>>2]|0;m=c[((m|0)==0?f:m)+260>>2]|0;J:do if(!m)Ba=772;else while(1){if((c[m>>2]|0)==(u|0)?(c[m+12>>2]|0)==(j|0):0)break J;m=c[m+4>>2]|0;if(!m){Ba=772;break}}while(0);if((Ba|0)==772){Ba=0;m=Nm(f,u,Ca,j)|0;if(!m)break}if(!(c[u>>2]|0))s=0;else{s=(c[f>>2]|0)+32|0;s=bw(c[s>>2]|0,c[s+4>>2]|0,13)|0;L()|0;s=s&1^1}o=(c[ka>>2]|0)+1|0;c[ka>>2]=o;q=c[m+8>>2]|0;r=h+108|0;m=c[r>>2]|0;if((c[h+112>>2]|0)>(m|0)){c[r>>2]=m+1;na=c[h+104>>2]|0;a[na+(m*20|0)>>0]=45;b[na+(m*20|0)+2>>1]=0;c[na+(m*20|0)+4>>2]=w;c[na+(m*20|0)+8>>2]=K;c[na+(m*20|0)+12>>2]=o;c[na+(m*20|0)+16>>2]=0;a[na+(m*20|0)+1>>0]=0}else m=Di(h,45,w,K,o)|0;do if(!(a[(c[h>>2]|0)+81>>0]|0)){if((m|0)<0)m=(c[r>>2]|0)+-1|0;o=c[h+104>>2]|0;p=o+(m*20|0)+1|0;if(a[p>>0]|0){Ei(h,o+(m*20|0)|0,q,-4);break}if(!q)break;c[o+(m*20|0)+16>>2]=q;a[p>>0]=-4}while(0);m=c[r>>2]|0;if((m|0)<=0)break;b[(c[h+104>>2]|0)+((m+-1|0)*20|0)+2>>1]=s}while(0);u=c[u+32>>2]|0}while((u|0)!=0);h=b[ea>>1]|0;m=h<<16>>16}o=m+1|0;if(h<<16>>16){h=f+28|0;if((c[h>>2]|0)>(m|0))break;c[h>>2]=o;c[f+32>>2]=E;break}if(!E)break;h=f+19|0;m=a[h>>0]|0;if((m&255)>=8)break;a[h>>0]=m+1<<24>>24;c[f+148+((m&255)<<2)>>2]=E}while(0);do if(!oa){do if(c[Z>>2]|0){h=Aa+108|0;m=c[h>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[h>>2]=m+1;oa=c[Aa+104>>2]|0;a[oa+(m*20|0)>>0]=73;b[oa+(m*20|0)+2>>1]=0;c[oa+(m*20|0)+4>>2]=0;c[oa+(m*20|0)+8>>2]=da;c[oa+(m*20|0)+12>>2]=0;c[oa+(m*20|0)+16>>2]=0;a[oa+(m*20|0)+1>>0]=0;break}else{Di(Aa,73,0,da,0)|0;break}}while(0);K:do if((S|0)>-1){L:do if(P){h=Aa+108|0;m=c[h>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[h>>2]=m+1;pa=c[Aa+104>>2]|0;a[pa+(m*20|0)>>0]=90;b[pa+(m*20|0)+2>>1]=0;c[pa+(m*20|0)+4>>2]=U;c[pa+(m*20|0)+8>>2]=S;c[pa+(m*20|0)+12>>2]=fa;c[pa+(m*20|0)+16>>2]=0;a[pa+(m*20|0)+1>>0]=0;break}else{Di(Aa,90,U,S,fa)|0;break}}else{if(va){h=S+T|0;m=Aa+108|0;o=c[m>>2]|0;if((c[Aa+112>>2]|0)>(o|0)){c[m>>2]=o+1;pa=c[Aa+104>>2]|0;a[pa+(o*20|0)>>0]=78;b[pa+(o*20|0)+2>>1]=0;c[pa+(o*20|0)+4>>2]=h;c[pa+(o*20|0)+8>>2]=fa;c[pa+(o*20|0)+12>>2]=0;c[pa+(o*20|0)+16>>2]=0;a[pa+(o*20|0)+1>>0]=0;break}else{Di(Aa,78,h,fa,0)|0;break}}m=c[Ea+4+(S*20|0)>>2]|0;h=a[m>>0]|0;do if(h<<24>>24==114){if(c[Z>>2]|0)break;h=c[xa>>2]|0;m=Aa+108|0;o=c[m>>2]|0;if((c[Aa+112>>2]|0)>(o|0)){c[m>>2]=o+1;I=c[Aa+104>>2]|0;a[I+(o*20|0)>>0]=121;b[I+(o*20|0)+2>>1]=0;c[I+(o*20|0)+4>>2]=h;c[I+(o*20|0)+8>>2]=fa;c[I+(o*20|0)+12>>2]=F;c[I+(o*20|0)+16>>2]=0;a[I+(o*20|0)+1>>0]=0;I=1;break K}else{Di(Aa,121,h,fa,F)|0;I=1;break K}}while(0);do if(m){if(h<<24>>24!=-88){p=Jj(f,m,fa)|0;break}p=c[ya>>2]|0;h=c[m+28>>2]|0;m=p+108|0;o=c[m>>2]|0;if((c[p+112>>2]|0)>(o|0)){c[m>>2]=o+1;pa=c[p+104>>2]|0;a[pa+(o*20|0)>>0]=78;b[pa+(o*20|0)+2>>1]=0;c[pa+(o*20|0)+4>>2]=h;c[pa+(o*20|0)+8>>2]=fa;c[pa+(o*20|0)+12>>2]=0;c[pa+(o*20|0)+16>>2]=0;a[pa+(o*20|0)+1>>0]=0;break L}else{Di(p,78,h,fa,0)|0;break L}}else p=Jj(f,0,fa)|0;while(0);if((p|0)==(fa|0))break;h=c[ya>>2]|0;if(!h)break;m=h+108|0;o=c[m>>2]|0;if((c[h+112>>2]|0)>(o|0)){c[m>>2]=o+1;pa=c[h+104>>2]|0;a[pa+(o*20|0)>>0]=79;b[pa+(o*20|0)+2>>1]=0;c[pa+(o*20|0)+4>>2]=p;c[pa+(o*20|0)+8>>2]=fa;c[pa+(o*20|0)+12>>2]=0;c[pa+(o*20|0)+16>>2]=0;a[pa+(o*20|0)+1>>0]=0;break}else{Di(h,79,p,fa,0)|0;break}}while(0);q=Aa+108|0;o=c[q>>2]|0;do if(c[Z>>2]|0){m=o+2|0;h=Aa+112|0;if((c[h>>2]|0)>(o|0)){c[q>>2]=o+1;pa=c[Aa+104>>2]|0;a[pa+(o*20|0)>>0]=50;b[pa+(o*20|0)+2>>1]=0;c[pa+(o*20|0)+4>>2]=fa;c[pa+(o*20|0)+8>>2]=m;c[pa+(o*20|0)+12>>2]=0;c[pa+(o*20|0)+16>>2]=0;a[pa+(o*20|0)+1>>0]=0;break}else{Di(Aa,50,fa,m,0)|0;break}}else{h=Aa+112|0;if((c[h>>2]|0)>(o|0)){c[q>>2]=o+1;pa=c[Aa+104>>2]|0;a[pa+(o*20|0)>>0]=51;b[pa+(o*20|0)+2>>1]=0;c[pa+(o*20|0)+4>>2]=fa;c[pa+(o*20|0)+8>>2]=0;c[pa+(o*20|0)+12>>2]=0;c[pa+(o*20|0)+16>>2]=0;a[pa+(o*20|0)+1>>0]=0}else o=Di(Aa,51,fa,0,0)|0;m=c[xa>>2]|0;p=c[q>>2]|0;if((c[h>>2]|0)>(p|0)){c[q>>2]=p+1;pa=c[Aa+104>>2]|0;a[pa+(p*20|0)>>0]=121;b[pa+(p*20|0)+2>>1]=0;c[pa+(p*20|0)+4>>2]=m;c[pa+(p*20|0)+8>>2]=fa;c[pa+(p*20|0)+12>>2]=F;c[pa+(p*20|0)+16>>2]=0;a[pa+(p*20|0)+1>>0]=0}else Di(Aa,121,m,fa,F)|0;p=c[q>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))m=(c[Aa+104>>2]|0)+(((o|0)<0?p+-1|0:o)*20|0)|0;else m=59308;c[m+8>>2]=p}while(0);m=c[q>>2]|0;if((c[h>>2]|0)>(m|0)){c[q>>2]=m+1;I=c[Aa+104>>2]|0;a[I+(m*20|0)>>0]=15;b[I+(m*20|0)+2>>1]=0;c[I+(m*20|0)+4>>2]=fa;c[I+(m*20|0)+8>>2]=0;c[I+(m*20|0)+12>>2]=0;c[I+(m*20|0)+16>>2]=0;a[I+(m*20|0)+1>>0]=0;I=0;break}else{Di(Aa,15,fa,0,0)|0;I=0;break}}else if(!(c[Z>>2]|pa)){h=c[xa>>2]|0;m=Aa+108|0;o=c[m>>2]|0;if((c[Aa+112>>2]|0)>(o|0)){c[m>>2]=o+1;I=c[Aa+104>>2]|0;a[I+(o*20|0)>>0]=121;b[I+(o*20|0)+2>>1]=0;c[I+(o*20|0)+4>>2]=h;c[I+(o*20|0)+8>>2]=fa;c[I+(o*20|0)+12>>2]=F;c[I+(o*20|0)+16>>2]=0;a[I+(o*20|0)+1>>0]=0;I=1;break}else{Di(Aa,121,h,fa,F)|0;I=1;break}}else{h=Aa+108|0;m=c[h>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[h>>2]=m+1;I=c[Aa+104>>2]|0;a[I+(m*20|0)>>0]=73;b[I+(m*20|0)+2>>1]=0;c[I+(m*20|0)+4>>2]=0;c[I+(m*20|0)+8>>2]=fa;c[I+(m*20|0)+12>>2]=0;c[I+(m*20|0)+16>>2]=0;a[I+(m*20|0)+1>>0]=0;I=0;break}else{Di(Aa,73,0,fa,0)|0;I=0;break}}while(0);do if((F|0)>0){h=c[ya>>2]|0;m=h+108|0;o=c[m>>2]|0;if((c[h+112>>2]|0)>(o|0)){c[m>>2]=o+1;pa=c[h+104>>2]|0;a[pa+(o*20|0)>>0]=-105;b[pa+(o*20|0)+2>>1]=0;c[pa+(o*20|0)+4>>2]=F;c[pa+(o*20|0)+8>>2]=fa;c[pa+(o*20|0)+12>>2]=0;c[pa+(o*20|0)+16>>2]=0;a[pa+(o*20|0)+1>>0]=0;break}else{Di(h,151,F,fa,0)|0;break}}while(0);if((b[ea>>1]|0)>0){C=Ca+40|0;D=Aa+108|0;E=Aa+112|0;F=Aa+104|0;H=Ca+4|0;u=(J|0)==0;v=f+23|0;w=i+4|0;x=ta+20|0;y=ta+4|0;z=ta+8|0;A=ta+24|0;B=(T|0)==(_|0);h=0;s=0;do{r=s+_|0;M:do if((s|0)==(b[C>>1]|0)){m=c[D>>2]|0;if((c[E>>2]|0)>(m|0)){c[D>>2]=m+1;pa=c[F>>2]|0;a[pa+(m*20|0)>>0]=74;b[pa+(m*20|0)+2>>1]=0;c[pa+(m*20|0)+4>>2]=r;c[pa+(m*20|0)+8>>2]=0;c[pa+(m*20|0)+12>>2]=0;c[pa+(m*20|0)+16>>2]=0;a[pa+(m*20|0)+1>>0]=0;break}else{Di(Aa,74,r,0,0)|0;break}}else{N:do if(qa)if(!(a[(c[H>>2]|0)+(s<<4)+15>>0]&2)){m=s-h|0;Ba=867;break}else{h=h+1|0;break}else{o=c[w>>2]|0;if((o|0)<=0){m=0;Ba=867;break}p=c[i>>2]|0;m=0;while(1){if((c[p+(m<<3)+4>>2]|0)==(s|0)){Ba=867;break N}m=m+1|0;if((m|0)>=(o|0)){Ba=867;break}}}while(0);do if((Ba|0)==867){Ba=0;if(u|(m|0)<0)break;if(Y?(m|0)>=(c[w>>2]|0):0)break;if(P){o=c[D>>2]|0;if((c[E>>2]|0)>(o|0)){c[D>>2]=o+1;pa=c[F>>2]|0;a[pa+(o*20|0)>>0]=90;b[pa+(o*20|0)+2>>1]=0;c[pa+(o*20|0)+4>>2]=U;c[pa+(o*20|0)+8>>2]=m;c[pa+(o*20|0)+12>>2]=r;c[pa+(o*20|0)+16>>2]=0;a[pa+(o*20|0)+1>>0]=0;break M}else{Di(Aa,90,U,m,r)|0;break M}}if(va){if(B)break M;m=m+T|0;o=c[D>>2]|0;if((c[E>>2]|0)>(o|0)){c[D>>2]=o+1;pa=c[F>>2]|0;a[pa+(o*20|0)>>0]=79;b[pa+(o*20|0)+2>>1]=0;c[pa+(o*20|0)+4>>2]=m;c[pa+(o*20|0)+8>>2]=r;c[pa+(o*20|0)+12>>2]=0;c[pa+(o*20|0)+16>>2]=0;a[pa+(o*20|0)+1>>0]=0;break M}else{Di(Aa,79,m,r,0)|0;break M}}m=c[Ea+4+(m*20|0)>>2]|0;do if(m){if((a[m>>0]|0)!=-88){q=Jj(f,m,r)|0;break}q=c[ya>>2]|0;m=c[m+28>>2]|0;o=q+108|0;p=c[o>>2]|0;if((c[q+112>>2]|0)>(p|0)){c[o>>2]=p+1;pa=c[q+104>>2]|0;a[pa+(p*20|0)>>0]=78;b[pa+(p*20|0)+2>>1]=0;c[pa+(p*20|0)+4>>2]=m;c[pa+(p*20|0)+8>>2]=r;c[pa+(p*20|0)+12>>2]=0;c[pa+(p*20|0)+16>>2]=0;a[pa+(p*20|0)+1>>0]=0;break M}else{Di(q,78,m,r,0)|0;break M}}else q=Jj(f,0,r)|0;while(0);if((q|0)==(r|0))break M;m=c[ya>>2]|0;if(!m)break M;o=m+108|0;p=c[o>>2]|0;if((c[m+112>>2]|0)>(p|0)){c[o>>2]=p+1;pa=c[m+104>>2]|0;a[pa+(p*20|0)>>0]=79;b[pa+(p*20|0)+2>>1]=0;c[pa+(p*20|0)+4>>2]=q;c[pa+(p*20|0)+8>>2]=r;c[pa+(p*20|0)+12>>2]=0;c[pa+(p*20|0)+16>>2]=0;a[pa+(p*20|0)+1>>0]=0;break M}else{Di(m,79,q,r,0)|0;break M}}while(0);m=c[(c[H>>2]|0)+(s<<4)+4>>2]|0;do if(!(a[v>>0]|0)){if(m|0){Ba=876;break}q=Jj(f,0,r)|0}else{a[x>>0]=2;c[y>>2]=127;c[z>>2]=128;c[A>>2]=0;if(m){_j(ta,m)|0;if(!(a[x>>0]|0)){Ba=876;break}}Nj(f,m,r)|0;break M}while(0);do if((Ba|0)==876){Ba=0;if((a[m>>0]|0)!=-88){q=Jj(f,m,r)|0;break}q=c[ya>>2]|0;m=c[m+28>>2]|0;o=q+108|0;p=c[o>>2]|0;if((c[q+112>>2]|0)>(p|0)){c[o>>2]=p+1;pa=c[q+104>>2]|0;a[pa+(p*20|0)>>0]=78;b[pa+(p*20|0)+2>>1]=0;c[pa+(p*20|0)+4>>2]=m;c[pa+(p*20|0)+8>>2]=r;c[pa+(p*20|0)+12>>2]=0;c[pa+(p*20|0)+16>>2]=0;a[pa+(p*20|0)+1>>0]=0;break M}else{Di(q,78,m,r,0)|0;break M}}while(0);if((q|0)==(r|0))break;m=c[ya>>2]|0;if(!m)break;o=m+108|0;p=c[o>>2]|0;if((c[m+112>>2]|0)>(p|0)){c[o>>2]=p+1;pa=c[m+104>>2]|0;a[pa+(p*20|0)>>0]=79;b[pa+(p*20|0)+2>>1]=0;c[pa+(p*20|0)+4>>2]=q;c[pa+(p*20|0)+8>>2]=r;c[pa+(p*20|0)+12>>2]=0;c[pa+(p*20|0)+16>>2]=0;a[pa+(p*20|0)+1>>0]=0;break}else{Di(m,79,q,r,0)|0;break}}while(0);s=s+1|0}while((s|0)<(b[ea>>1]|0))}if(!(c[Z>>2]|0)){Tm(f,Ca,R,c[xa>>2]|0,c[wa>>2]|0,da,0,S>>>31&255^1,j&255,K,ta,0,k);Lm(f,Ca,0,da,0,0);do if(!(c[ta>>2]|0))h=1;else{if(t|0){h=0;break}if((c[O>>2]&16384|0)==0&0==0){h=1;break}s=c[Ca>>2]|0;p=c[ra>>2]|0;q=c[p+68>>2]|0;if(!q){m=p+60|0;h=p+64|0}else{m=a[s>>0]|0;if(!(m<<24>>24))h=0;else{h=0;o=s;do{o=o+1|0;h=G(h+(d[208+(m&255)>>0]|0)|0,-1640531535)|0;m=a[o>>0]|0}while(m<<24>>24!=0)}h=(h>>>0)%((c[p+56>>2]|0)>>>0)|0;m=q+(h<<3)|0;h=q+(h<<3)+4|0}m=c[m>>2]|0;O:do if(!m)h=59292;else{r=d[208+(d[s>>0]|0)>>0]|0;while(1){h=c[h>>2]|0;m=m+-1|0;p=c[h+12>>2]|0;ta=a[p>>0]|0;o=(d[208+(ta&255)>>0]|0)-r|0;if(!(ta<<24>>24==0|(o|0)!=0)){q=s;do{p=p+1|0;q=q+1|0;ta=a[p>>0]|0;o=(d[208+(ta&255)>>0]|0)-(d[208+(d[q>>0]|0)>>0]|0)|0}while(!(ta<<24>>24==0|(o|0)!=0))}if(!o)break O;if(!m){h=59292;break}}}while(0);h=(c[h+8>>2]|0)==0&1}while(0);Um(f,Ca,c[xa>>2]|0,c[wa>>2]|0,da,R,0,I,h);break}h=c[Ca+64>>2]|0;P:do if(!h)h=0;else while(1){if((c[h>>2]|0)==(Fa|0))break P;h=c[h+24>>2]|0;if(!h){h=0;break}}while(0);s=c[ua>>2]|0;s=(s|0)==0?f:s;r=s+204|0;q=c[r>>2]|0;p=s+252|0;Q:do if((q|0)>0){m=c[p>>2]|0;o=0;do{if((c[m+(o<<2)>>2]|0)==(Ca|0))break Q;o=o+1|0}while((o|0)<(q|0));o=p;Ba=920}else{o=p;m=c[p>>2]|0;Ba=920}while(0);R:do if((Ba|0)==920){do if(!(mb()|0)){xa=(q<<2)+4|0;m=sb(m,xa,((xa|0)<0)<<31>>31)|0;if(!m)break;c[o>>2]=m;xa=c[r>>2]|0;c[r>>2]=xa+1;c[m+(xa<<2)>>2]=Ca;break R}while(0);m=c[s>>2]|0;o=m+81|0;if(a[o>>0]|0)break;if(a[m+82>>0]|0)break;a[o>>0]=1;if((c[m+180>>2]|0)>0)c[m+264>>2]=1;xa=m+272|0;c[xa>>2]=(c[xa>>2]|0)+1;m=c[m+236>>2]|0;if(!m)break;c[m+12>>2]=7}while(0);o=(b[ea>>1]|0)+2|0;q=Aa+108|0;m=c[q>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[q>>2]=m+1;xa=c[Aa+104>>2]|0;a[xa+(m*20|0)>>0]=10;b[xa+(m*20|0)+2>>1]=0;c[xa+(m*20|0)+4>>2]=1;c[xa+(m*20|0)+8>>2]=o;c[xa+(m*20|0)+12>>2]=da;c[xa+(m*20|0)+16>>2]=0;a[xa+(m*20|0)+1>>0]=0}else m=Di(Aa,10,1,o,da)|0;do if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((m|0)<0)m=(c[q>>2]|0)+-1|0;o=c[Aa+104>>2]|0;p=o+(m*20|0)+1|0;if(a[p>>0]|0){Ei(Aa,o+(m*20|0)|0,h,-12);break}if(!h)break;c[o+(m*20|0)+16>>2]=h;a[p>>0]=-12;xa=h+12|0;c[xa>>2]=(c[xa>>2]|0)+1}while(0);h=c[q>>2]|0;if((h|0)>0)b[(c[Aa+104>>2]|0)+((h+-1|0)*20|0)+2>>1]=(j|0)==11?2:j&65535;xa=c[ua>>2]|0;a[((xa|0)==0?f:xa)+21>>0]=1}while(0);do if(n|0){h=Aa+108|0;m=c[h>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[h>>2]=m+1;xa=c[Aa+104>>2]|0;a[xa+(m*20|0)>>0]=83;b[xa+(m*20|0)+2>>1]=0;c[xa+(m*20|0)+4>>2]=n;c[xa+(m*20|0)+8>>2]=1;c[xa+(m*20|0)+12>>2]=0;c[xa+(m*20|0)+16>>2]=0;a[xa+(m*20|0)+1>>0]=0;break}else{Di(Aa,83,n,1,0)|0;break}}while(0);if(sa){u=fa+-1-(b[ea>>1]|0)|0;v=f+23|0;do{do if((a[t+8>>0]|0)==120){if((a[t+9>>0]|0)!=2)break;h=c[ya>>2]|0;S:do if(!h){o=c[f>>2]|0;do if(!(c[ua>>2]|0)){if(b[o+76>>1]&8)break;a[v>>0]=1}while(0);T:do if(c[o+272>>2]|0)if(!(a[o+81>>0]|0))Ba=982;else{h=0;break S}else{do if((e[o+276>>1]|0)>=224){m=o+300|0;h=c[m>>2]|0;if(h|0){c[m>>2]=c[h>>2];xa=o+284|0;c[xa>>2]=(c[xa>>2]|0)+1;break T}m=o+296|0;h=c[m>>2]|0;if(!h){h=o+292|0;break}else{c[m>>2]=c[h>>2];xa=o+284|0;c[xa>>2]=(c[xa>>2]|0)+1;break T}}else h=o+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;Ba=982}while(0);if((Ba|0)==982){Ba=0;h=_d(o,224,0)|0}if(!h){h=0;break}p=h+104|0;q=p+120|0;do{c[p>>2]=0;p=p+4|0}while((p|0)<(q|0));c[h>>2]=o;m=o+4|0;o=c[m>>2]|0;if(o|0)c[o+4>>2]=h;c[h+8>>2]=o;c[h+4>>2]=0;c[m>>2]=h;c[h+20>>2]=381479589;c[h+12>>2]=f;c[ya>>2]=h;Di(h,61,0,1,0)|0}while(0);m=c[ua>>2]|0;m=c[((m|0)==0?f:m)+260>>2]|0;U:do if(!m)Ba=992;else while(1){if((c[m>>2]|0)==(t|0)?(c[m+12>>2]|0)==(j|0):0)break U;m=c[m+4>>2]|0;if(!m){Ba=992;break}}while(0);if((Ba|0)==992){Ba=0;m=Nm(f,t,Ca,j)|0;if(!m)break}if(!(c[t>>2]|0))s=0;else{s=(c[f>>2]|0)+32|0;s=bw(c[s>>2]|0,c[s+4>>2]|0,13)|0;L()|0;s=s&1^1}o=(c[ka>>2]|0)+1|0;c[ka>>2]=o;q=c[m+8>>2]|0;r=h+108|0;m=c[r>>2]|0;if((c[h+112>>2]|0)>(m|0)){c[r>>2]=m+1;xa=c[h+104>>2]|0;a[xa+(m*20|0)>>0]=45;b[xa+(m*20|0)+2>>1]=0;c[xa+(m*20|0)+4>>2]=u;c[xa+(m*20|0)+8>>2]=K;c[xa+(m*20|0)+12>>2]=o;c[xa+(m*20|0)+16>>2]=0;a[xa+(m*20|0)+1>>0]=0}else m=Di(h,45,u,K,o)|0;do if(!(a[(c[h>>2]|0)+81>>0]|0)){if((m|0)<0)m=(c[r>>2]|0)+-1|0;o=c[h+104>>2]|0;p=o+(m*20|0)+1|0;if(a[p>>0]|0){Ei(h,o+(m*20|0)|0,q,-4);break}if(!q)break;c[o+(m*20|0)+16>>2]=q;a[p>>0]=-4}while(0);m=c[r>>2]|0;if((m|0)<=0)break;b[(c[h+104>>2]|0)+((m+-1|0)*20|0)+2>>1]=s}while(0);t=c[t+32>>2]|0}while((t|0)!=0)}m=c[Aa+12>>2]|0;h=0-M|0;if(((c[m+56>>2]|0)+(c[m+60>>2]|0)|0)<0)mk(m,Aa,h);else c[(c[m+64>>2]|0)+(h<<2)>>2]=c[Aa+108>>2];if(!P){if(!va)break;h=Aa+108|0;m=c[h>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[h>>2]=m+1;j=c[Aa+104>>2]|0;a[j+(m*20|0)>>0]=11;b[j+(m*20|0)+2>>1]=0;c[j+(m*20|0)+4>>2]=0;c[j+(m*20|0)+8>>2]=N;c[j+(m*20|0)+12>>2]=0;c[j+(m*20|0)+16>>2]=0;a[j+(m*20|0)+1>>0]=0}else Di(Aa,11,0,N,0)|0;m=c[h>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))h=(c[Aa+104>>2]|0)+(((Q|0)<0?m+-1|0:Q)*20|0)|0;else h=59308;c[h+8>>2]=m;break}o=Aa+108|0;h=c[o>>2]|0;p=Aa+112|0;if((c[p>>2]|0)>(h|0)){c[o>>2]=h+1;j=c[Aa+104>>2]|0;a[j+(h*20|0)>>0]=5;b[j+(h*20|0)+2>>1]=0;c[j+(h*20|0)+4>>2]=U;c[j+(h*20|0)+8>>2]=N;c[j+(h*20|0)+12>>2]=0;c[j+(h*20|0)+16>>2]=0;a[j+(h*20|0)+1>>0]=0}else Di(Aa,5,U,N,0)|0;m=c[o>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))h=(c[Aa+104>>2]|0)+(((Q|0)<0?m+-1|0:Q)*20|0)|0;else h=59308;c[h+8>>2]=m;if((c[p>>2]|0)>(m|0)){c[o>>2]=m+1;j=c[Aa+104>>2]|0;a[j+(m*20|0)>>0]=117;b[j+(m*20|0)+2>>1]=0;c[j+(m*20|0)+4>>2]=U;c[j+(m*20|0)+8>>2]=0;c[j+(m*20|0)+12>>2]=0;c[j+(m*20|0)+16>>2]=0;a[j+(m*20|0)+1>>0]=0;break}else{Di(Aa,117,U,0,0)|0;break}}while(0);do if(!(a[za>>0]|0)){if(c[f+120>>2]|0)break;if(!(c[f+112>>2]|0))break;Sm(f)}while(0);if(!n)Ba=1038;else{h=Aa+108|0;m=c[h>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[h>>2]=m+1;f=c[Aa+104>>2]|0;a[f+(m*20|0)>>0]=81;b[f+(m*20|0)+2>>1]=0;c[f+(m*20|0)+4>>2]=n;c[f+(m*20|0)+8>>2]=1;c[f+(m*20|0)+12>>2]=0;c[f+(m*20|0)+16>>2]=0;a[f+(m*20|0)+1>>0]=0}else Di(Aa,81,n,1,0)|0;Wi(Aa,1);if(a[(c[Aa>>2]|0)+81>>0]|0){Ba=1038;break}yc(c[Aa+116>>2]|0,44972,-1,1,0)|0;Ba=1038}}else{l=0;Ba=1038}}else{l=0;Ba=1038}while(0);if((Ba|0)==1038){qi(Fa,g);if(!Ea){h=Da;r=l;break}}ri(Fa,Ea);h=Da;r=l}else Ba=1037;while(0);if((Ba|0)==1037){qi(Fa,g);r=0}do if(k|0){l=c[k>>2]|0;if(l|0)ri(Fa,l);l=c[k+4>>2]|0;if(l|0)ni(Fa,l);l=c[k+8>>2]|0;if(l|0)ri(Fa,l);l=c[k+12>>2]|0;if(l|0)ni(Fa,l);if(Fa|0){if(c[Fa+480>>2]|0){Xd(Fa,k);break}g=k;if((c[Fa+304>>2]|0)>>>0<=g>>>0?(c[Fa+308>>2]|0)>>>0>g>>>0:0){g=Fa+300|0;c[k>>2]=c[g>>2];c[g>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{g=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);if(h|0)pi(Fa,h,1);do if(i|0){q=i+4|0;l=c[i>>2]|0;V:do if((c[q>>2]|0)>0){m=Fa+480|0;n=Fa+304|0;o=Fa+308|0;p=Fa+300|0;if(!Fa){h=0;while(1){l=c[l+(h<<3)>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{k=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);h=h+1|0;l=c[i>>2]|0;if((h|0)>=(c[q>>2]|0))break V}}h=0;do{l=c[l+(h<<3)>>2]|0;do if(l|0){if(c[m>>2]|0){Xd(Fa,l);break}k=l;if((c[n>>2]|0)>>>0<=k>>>0?(c[o>>2]|0)>>>0>k>>>0:0){c[l>>2]=c[p>>2];c[p>>2]=l;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{k=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);h=h+1|0;l=c[i>>2]|0}while((h|0)<(c[q>>2]|0))}while(0);W:do if(l){do if(Fa|0){h=Fa+480|0;if(!(c[h>>2]|0)){m=l;if((c[Fa+304>>2]|0)>>>0>m>>>0)break;if((c[Fa+308>>2]|0)>>>0<=m>>>0)break;k=Fa+300|0;c[l>>2]=c[k>>2];c[k>>2]=l}else Xd(Fa,l);l=h;Ba=1093;break W}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);Ba=1091;break}else{Ba=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-Ba;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);Ba=1091;break}}else Ba=1091;while(0);if((Ba|0)==1091)if(Fa){l=Fa+480|0;Ba=1093}if((Ba|0)==1093){if(c[l>>2]|0){Xd(Fa,i);break}k=i;if((c[Fa+304>>2]|0)>>>0<=k>>>0?(c[Fa+308>>2]|0)>>>0>k>>>0:0){k=Fa+300|0;c[i>>2]=c[k>>2];c[k>>2]=i;break}}if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{k=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);if(!r){Ra=Ga;return}if(Fa|0){if(c[Fa+480>>2]|0){Xd(Fa,r);Ra=Ga;return}k=r;if((c[Fa+304>>2]|0)>>>0<=k>>>0?(c[Fa+308>>2]|0)>>>0>k>>>0:0){Fa=Fa+300|0;c[r>>2]=c[Fa>>2];c[Fa>>2]=r;Ra=Ga;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);Ra=Ga;return}else{Fa=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);Ra=Ga;return}}function wj(b,f,g){b=b|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;p=c[b>>2]|0;if(!f){a:do if(!p){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](8)|0;o=25;break}f=Wa[c[29356>>2]&127](8)|0;if((c[14985]|0)>>>0<8)c[14985]=8;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){n=c[14978]|0;m=Tv(h|0,i|0,f|0,((f|0)<0)<<31>>31|0)|0;l=L()|0;c[14768]=((l|0)<0|(l|0)==0&m>>>0<=n>>>0)&1}f=Wa[c[29340>>2]&127](f)|0;if(!f){p=0;return p|0}h=Wa[c[29352>>2]&127](f)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0)c[14987]=h}else{if(c[p+272>>2]|0){if(a[p+81>>0]|0){p=0;return p|0}}else{do if((e[p+276>>1]|0)>=8){h=p+300|0;f=c[h>>2]|0;if(f|0){c[h>>2]=c[f>>2];o=p+284|0;c[o>>2]=(c[o>>2]|0)+1;o=25;break a}h=p+296|0;f=c[h>>2]|0;if(!f){f=p+292|0;break}else{c[h>>2]=c[f>>2];o=p+284|0;c[o>>2]=(c[o>>2]|0)+1;o=25;break a}}else f=p+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1}f=_d(p,8,0)|0;o=25}while(0);if((o|0)==25)if(!f){p=0;return p|0}n=f;m=n;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=0;n=n+4|0;a[n>>0]=0;a[n+1>>0]=0;a[n+2>>0]=0;a[n+3>>0]=0}m=c[f>>2]|0;n=f+4|0;i=c[n>>2]|0;h=((i|0)<0)<<31>>31;l=Sv(i|0,h|0,-1,-1)|0;b:do if((l&i|0)==0&((L()|0)&h|0)==0){j=(i|0)==0;k=cw(i|0,h|0,4)|0;l=L()|0;k=j?8:k;l=j?0:l;c:do if(!m){if(c[p+272>>2]|0){if(a[p+81>>0]|0)break}else{do if(!(l>>>0>0|((l|0)==0?k>>>0>(e[p+276>>1]|0)>>>0:0))){j=p+300|0;h=c[j>>2]|0;if(h|0){c[j>>2]=c[h>>2];o=p+284|0;c[o>>2]=(c[o>>2]|0)+1;o=45;break c}j=p+296|0;h=c[j>>2]|0;if(!h){h=p+292|0;break}else{c[j>>2]=c[h>>2];o=p+284|0;c[o>>2]=(c[o>>2]|0)+1;o=45;break c}}else h=p+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(p,k,l)|0;o=45}else{o=m;if((c[p+304>>2]|0)>>>0<=o>>>0?(c[p+308>>2]|0)>>>0>o>>>0:0){if(!(l>>>0>0|((l|0)==0?k>>>0>(e[p+276>>1]|0)>>>0:0))){h=m;o=48;break b}h=Zd(p,m,k,l)|0;o=45;break}h=Zd(p,m,k,l)|0;o=45}while(0);if((o|0)==45){if(h|0){o=48;break}i=c[n>>2]|0}c[f>>2]=m;h=m}else{h=m;o=48}while(0);if((o|0)==48){j=h+(i<<3)|0;m=j;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=0;j=j+4|0;a[j>>0]=0;a[j+1>>0]=0;a[j+2>>0]=0;a[j+3>>0]=0;j=(c[n>>2]|0)+1|0;c[n>>2]=j;c[f>>2]=h;if((i|0)<0)i=j;else{k=qj(p,g)|0;c[(c[f>>2]|0)+(i<<3)>>2]=k;if((k|0)==0|(d[b+200>>0]|0)<2){p=f;return p|0}j=c[b>>2]|0;d:do if(!j){if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](16)|0;o=114;break}h=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){p=c[14978]|0;n=Tv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&n>>>0<=p>>>0)&1}h=Wa[c[29340>>2]&127](h)|0;if(!h){p=f;return p|0}i=Wa[c[29352>>2]&127](h)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}else{if(c[j+272>>2]|0){if(a[j+81>>0]|0){p=f;return p|0}}else{do if((e[j+276>>1]|0)>=16){i=j+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];o=j+284|0;c[o>>2]=(c[o>>2]|0)+1;o=114;break d}i=j+296|0;h=c[i>>2]|0;if(!h){h=j+292|0;break}else{c[i>>2]=c[h>>2];o=j+284|0;c[o>>2]=(c[o>>2]|0)+1;o=114;break d}}else h=j+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(j,16,0)|0;o=114}while(0);if((o|0)==114)if(!h){p=f;return p|0}i=h+4|0;j=i+12|0;do{a[i>>0]=0;i=i+1|0}while((i|0)<(j|0));c[h>>2]=k;o=g;g=c[o+4>>2]|0;p=h+4|0;c[p>>2]=c[o>>2];c[p+4>>2]=g;p=b+272|0;c[h+12>>2]=c[p>>2];c[p>>2]=h;p=f;return p|0}}e:do if((i|0)>0){j=p+480|0;k=p+304|0;l=p+308|0;m=p+300|0;if(!p){i=0;while(1){h=c[h+(i<<3)>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{g=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);i=i+1|0;h=c[f>>2]|0;if((i|0)>=(c[n>>2]|0))break e}}i=0;do{h=c[h+(i<<3)>>2]|0;do if(h|0){if(c[j>>2]|0){Xd(p,h);break}g=h;if((c[k>>2]|0)>>>0<=g>>>0?(c[l>>2]|0)>>>0>g>>>0:0){c[h>>2]=c[m>>2];c[m>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{g=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);i=i+1|0;h=c[f>>2]|0}while((i|0)<(c[n>>2]|0))}while(0);f:do if(h){do if(p|0){i=p+480|0;if(!(c[i>>2]|0)){j=h;if((c[p+304>>2]|0)>>>0>j>>>0)break;if((c[p+308>>2]|0)>>>0<=j>>>0)break;g=p+300|0;c[h>>2]=c[g>>2];c[g>>2]=h}else Xd(p,h);h=i;o=81;break f}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);o=79;break}else{o=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);o=79;break}}else o=79;while(0);if((o|0)==79)if(p){h=p+480|0;o=81}if((o|0)==81){if(c[h>>2]|0){Xd(p,f);p=0;return p|0}g=f;if((c[p+304>>2]|0)>>>0<=g>>>0?(c[p+308>>2]|0)>>>0>g>>>0:0){p=p+300|0;c[f>>2]=c[p>>2];c[p>>2]=f;p=0;return p|0}}if(!f){p=0;return p|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);p=0;return p|0}else{p=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);p=0;return p|0}return 0}function xj(f,g,h){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,s=0,t=0,u=0,v=0,w=0;w=Ra;Ra=Ra+176|0;r=w+96|0;o=w+88|0;n=w+80|0;q=w+136|0;p=w;s=w+104|0;u=f+8|0;i=c[u>>2]|0;a:do if(!i){m=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[m+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))l=15;else break a;else{do if((e[m+276>>1]|0)>=224){i=m+300|0;j=c[i>>2]|0;if(j|0){c[i>>2]=c[j>>2];k=m+284|0;c[k>>2]=(c[k>>2]|0)+1;k=j;break b}i=m+296|0;j=c[i>>2]|0;if(!j){i=m+292|0;break}else{c[i>>2]=c[j>>2];k=m+284|0;c[k>>2]=(c[k>>2]|0)+1;k=j;break b}}else i=m+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;l=15}while(0);if((l|0)==15)k=_d(m,224,0)|0;if(k|0){i=k+104|0;j=i+120|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(j|0));c[k>>2]=m;i=m+4|0;j=c[i>>2]|0;if(j|0)c[j+4>>2]=k;c[k+8>>2]=j;c[k+4>>2]=0;c[i>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=f;c[u>>2]=k;Di(k,61,0,1,0)|0;t=k;l=20}}else{t=i;l=20}while(0);do if((l|0)==20){if(g){i=c[f>>2]|0;if(c[g+4>>2]|0){if(a[i+165>>0]|0){cd(f,39404,n);break}i=wk(i,g)|0;if((i|0)<0){c[o>>2]=g;cd(f,39421,o);break}}else i=d[i+164>>0]|0;if((i|0)>-1&(i|0)!=1)n=i;else break}else n=0;do if(h){i=s+8|0;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;c[i+12>>2]=0;c[i+16>>2]=0;c[i+20>>2]=0;i=p;j=i+80|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(j|0));c[s>>2]=f;c[s+4>>2]=p;j=s+24|0;b[j>>1]=0;c[q>>2]=f;c[q+4>>2]=125;c[q+8>>2]=126;c[q+12>>2]=0;c[q+24>>2]=s;k=h+24|0;i=f+208|0;p=(c[i>>2]|0)+(c[k>>2]|0)|0;c[i>>2]=p;i=c[(c[f>>2]|0)+120>>2]|0;if((i|0)<(p|0)){c[r>>2]=i;cd(f,41637,r);i=0;break}_j(q,h)|0;i=c[q>>2]|0;r=i+208|0;c[r>>2]=(c[r>>2]|0)-(c[k>>2]|0);r=h+4|0;c[r>>2]=c[r>>2]|b[j>>1]&-32752&65535;if((c[s+20>>2]|0)>0){i=0;break}if((c[i+36>>2]|0)<1){s=f+44|0;i=(c[s>>2]|0)+1|0;c[s>>2]=i;if((a[h>>0]|0)==-88){j=c[u>>2]|0;k=c[h+28>>2]|0;l=j+108|0;m=c[l>>2]|0;if((c[j+112>>2]|0)>(m|0)){c[l>>2]=m+1;v=c[j+104>>2]|0;a[v+(m*20|0)>>0]=78;b[v+(m*20|0)+2>>1]=0;c[v+(m*20|0)+4>>2]=k;c[v+(m*20|0)+8>>2]=i;c[v+(m*20|0)+12>>2]=0;c[v+(m*20|0)+16>>2]=0;a[v+(m*20|0)+1>>0]=0;break}else{Di(j,78,k,i,0)|0;break}}l=Jj(f,h,i)|0;if((l|0)!=(i|0)?(v=c[u>>2]|0,(v|0)!=0):0){j=v+108|0;k=c[j>>2]|0;if((c[v+112>>2]|0)>(k|0)){c[j>>2]=k+1;v=c[v+104>>2]|0;a[v+(k*20|0)>>0]=79;b[v+(k*20|0)+2>>1]=0;c[v+(k*20|0)+4>>2]=l;c[v+(k*20|0)+8>>2]=i;c[v+(k*20|0)+12>>2]=0;c[v+(k*20|0)+16>>2]=0;a[v+(k*20|0)+1>>0]=0;break}else{Di(v,79,l,i,0)|0;break}}}else i=0}else i=0;while(0);j=t+108|0;k=c[j>>2]|0;if((c[t+112>>2]|0)>(k|0)){c[j>>2]=k+1;v=c[t+104>>2]|0;a[v+(k*20|0)>>0]=8;b[v+(k*20|0)+2>>1]=0;c[v+(k*20|0)+4>>2]=n;c[v+(k*20|0)+8>>2]=i;c[v+(k*20|0)+12>>2]=0;c[v+(k*20|0)+16>>2]=0;a[v+(k*20|0)+1>>0]=0}else Di(t,8,n,i,0)|0;i=1<>2]=c[v>>2]|i;if((n|0)!=1?a[(c[(c[(c[t>>2]|0)+16>>2]|0)+(n<<4)+4>>2]|0)+9>>0]|0:0){v=t+156|0;c[v>>2]=c[v>>2]|i}}while(0);if(!h){Ra=w;return}ni(c[f>>2]|0,h);Ra=w;return} -function Vi(a,e){a=a|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[e+8>>2]|0;if(f|0){j=(a|0)==0;l=e+56|0;m=a+480|0;n=a+304|0;o=a+308|0;i=a+300|0;do{h=f;f=c[f+20>>2]|0;if(!(!j?(c[m>>2]|0)!=0:0))p=5;if((p|0)==5?(0,(c[l>>2]|0)==0):0)mi((c[h+24>>2]|0)+24|0,c[h>>2]|0,0)|0;g=c[h+36>>2]|0;if(g|0)ni(a,g);g=c[h+40>>2]|0;if(g|0)ri(a,g);g=c[h+16>>2]|0;do if(g|0){if(!j){if(c[m>>2]|0){Xd(a,g);break}p=g;if((c[n>>2]|0)>>>0<=p>>>0?(c[o>>2]|0)>>>0>p>>>0:0){c[g>>2]=c[i>>2];c[i>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{p=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);p=h+55|0;do if(((d[p>>0]|d[p+1>>0]<<8)&16)!=0?(k=c[h+32>>2]|0,(k|0)!=0):0){if(!j){if(c[m>>2]|0){Xd(a,k);p=33;break}p=k;if((c[n>>2]|0)>>>0<=p>>>0?(c[o>>2]|0)>>>0>p>>>0:0){c[k>>2]=c[i>>2];c[i>>2]=k;p=33;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);p=32;break}else{p=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);p=32;break}}else p=32;while(0);if((p|0)==32)if(j)p=38;else p=33;do if((p|0)==33){p=0;if(c[m>>2]|0){Xd(a,h);break}g=h;if((c[n>>2]|0)>>>0<=g>>>0?(c[o>>2]|0)>>>0>g>>>0:0){c[h>>2]=c[i>>2];c[i>>2]=h}else p=38}while(0);do if((p|0)==38){p=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{g=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0)}while((f|0)!=0)}f=c[e+16>>2]|0;if(f|0){k=(a|0)==0;l=a+480|0;m=e+72|0;n=a+304|0;o=a+308|0;j=a+300|0;i=f;while(1){if(!(!k?(c[l>>2]|0)!=0:0)){h=i+16|0;f=c[h>>2]|0;g=i+12|0;if(!f){p=c[g>>2]|0;mi((c[m>>2]|0)+56|0,c[((p|0)==0?i:p)+8>>2]|0,p)|0}else c[f+12>>2]=c[g>>2];f=c[g>>2]|0;if(f|0)c[f+16>>2]=c[h>>2]}h=c[i+28>>2]|0;do if(h|0){g=c[h+28>>2]|0;f=c[g+16>>2]|0;if(f|0)ni(a,f);f=c[g+20>>2]|0;if(f|0)ri(a,f);f=c[g+8>>2]|0;if(f|0)pi(a,f,1);f=c[h+12>>2]|0;if(f|0)ni(a,f);if(!k){if(c[l>>2]|0){Xd(a,h);break}p=h;if((c[n>>2]|0)>>>0<=p>>>0?(c[o>>2]|0)>>>0>p>>>0:0){c[h>>2]=c[j>>2];c[j>>2]=h;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{p=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);h=c[i+32>>2]|0;a:do if(h){g=c[h+28>>2]|0;f=c[g+16>>2]|0;if(f|0)ni(a,f);f=c[g+20>>2]|0;if(f|0)ri(a,f);f=c[g+8>>2]|0;if(f|0)pi(a,f,1);f=c[h+12>>2]|0;if(f|0)ni(a,f);do if(!k){if(!(c[l>>2]|0)){f=h;if((c[n>>2]|0)>>>0>f>>>0)break;if((c[o>>2]|0)>>>0<=f>>>0)break;c[h>>2]=c[j>>2];c[j>>2]=h}else Xd(a,h);f=c[i+4>>2]|0;p=89;break a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);p=88;break}else{p=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);p=88;break}}else p=88;while(0);if((p|0)==88){f=c[i+4>>2]|0;if(k)p=94;else p=89}do if((p|0)==89){p=0;if(c[l>>2]|0){Xd(a,i);break}h=i;if((c[n>>2]|0)>>>0<=h>>>0?(c[o>>2]|0)>>>0>h>>>0:0){c[i>>2]=c[j>>2];c[j>>2]=i}else p=94}while(0);do if((p|0)==94){p=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{h=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);if(!f)break;else i=f}}m=e+4|0;g=c[m>>2]|0;do if(g|0){n=e+42|0;b:do if((b[n>>1]|0)>0){i=a+480|0;j=a+304|0;k=a+308|0;l=a+300|0;if(!a){h=0;while(1){f=c[g>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{o=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);f=c[g+4>>2]|0;if(f|0)ni(0,f);f=c[g+8>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{o=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);h=h+1|0;if((h|0)>=(b[n>>1]|0))break b;else g=g+16|0}}h=0;while(1){f=c[g>>2]|0;do if(f|0){if(c[i>>2]|0){Xd(a,f);break}o=f;if((c[j>>2]|0)>>>0<=o>>>0?(c[k>>2]|0)>>>0>o>>>0:0){c[f>>2]=c[l>>2];c[l>>2]=f;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{o=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);f=c[g+4>>2]|0;if(f|0)ni(a,f);f=c[g+8>>2]|0;do if(f|0){if(c[i>>2]|0){Xd(a,f);break}o=f;if((c[j>>2]|0)>>>0<=o>>>0?(c[k>>2]|0)>>>0>o>>>0:0){c[f>>2]=c[l>>2];c[l>>2]=f;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{o=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);h=h+1|0;if((h|0)>=(b[n>>1]|0))break;else g=g+16|0}}while(0);f=c[m>>2]|0;if(f|0){if(a|0){if(c[a+480>>2]|0){Xd(a,f);break}o=f;if((c[a+304>>2]|0)>>>0<=o>>>0?(c[a+308>>2]|0)>>>0>o>>>0:0){o=a+300|0;c[f>>2]=c[o>>2];c[o>>2]=f;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{o=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}}while(0);f=c[e>>2]|0;do if(f|0){if(a|0){if(c[a+480>>2]|0){Xd(a,f);break}o=f;if((c[a+304>>2]|0)>>>0<=o>>>0?(c[a+308>>2]|0)>>>0>o>>>0:0){o=a+300|0;c[f>>2]=c[o>>2];c[o>>2]=f;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{o=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);f=c[e+20>>2]|0;do if(f|0){if(a|0){if(c[a+480>>2]|0){Xd(a,f);break}o=f;if((c[a+304>>2]|0)>>>0<=o>>>0?(c[a+308>>2]|0)>>>0>o>>>0:0){o=a+300|0;c[f>>2]=c[o>>2];c[o>>2]=f;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{o=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);f=c[e+12>>2]|0;if(f|0)pi(a,f,1);f=c[e+24>>2]|0;if(f|0)ri(a,f);n=(a|0)==0;if(!(!n?(c[a+480>>2]|0)!=0:0))p=171;if((p|0)==171?(r=e+64|0,q=c[r>>2]|0,c[r>>2]=0,q|0):0){f=q;do{h=c[f>>2]|0;i=f+24|0;g=f;f=c[i>>2]|0;if(!h){c[r>>2]=g;c[i>>2]=0}else{q=h+360|0;c[i>>2]=c[q>>2];c[q>>2]=g}}while((f|0)!=0)}l=e+60|0;c:do if(c[l>>2]|0){m=e+56|0;d:do if((c[m>>2]|0)>0){h=a+480|0;i=a+304|0;j=a+308|0;k=a+300|0;if(n){f=0;while(1){do if((f|0)!=1?(s=c[(c[l>>2]|0)+(f<<2)>>2]|0,s|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{t=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}while(0);f=f+1|0;if((f|0)>=(c[m>>2]|0))break d}}f=0;do{e:do if((f|0)!=1?(t=c[(c[l>>2]|0)+(f<<2)>>2]|0,t|0):0){if(c[h>>2]|0){Xd(a,t);break}g=t;do if((c[i>>2]|0)>>>0<=g>>>0){if((c[j>>2]|0)>>>0<=g>>>0)break;c[t>>2]=c[k>>2];c[k>>2]=t;break e}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{s=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}while(0);f=f+1|0}while((f|0)<(c[m>>2]|0))}while(0);f=c[l>>2]|0;if(f){do if(!n){if(!(c[a+480>>2]|0)){g=f;if((c[a+304>>2]|0)>>>0>g>>>0)break;if((c[a+308>>2]|0)>>>0<=g>>>0)break;t=a+300|0;c[f>>2]=c[t>>2];c[t>>2]=f}else Xd(a,f);f=e;p=211;break c}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);p=210;break}else{p=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);p=210;break}}else p=210}else p=210;while(0);if((p|0)==210)if(!n){f=e;p=211}if((p|0)==211){if(c[a+480>>2]|0){Xd(a,f);return}t=e;if((c[a+304>>2]|0)>>>0<=t>>>0?(c[a+308>>2]|0)>>>0>t>>>0:0){a=a+300|0;c[e>>2]=c[a>>2];c[a>>2]=e;return}else e=f}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);return}else{a=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-a;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);return}}function Wi(d,f){d=d|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;t=c[d>>2]|0;r=d+144|0;h=b[r>>1]|0;do if(h<<16>>16){q=d+116|0;g=c[q>>2]|0;a:do if(g|0){p=g+(((h&65535)<<1)*40|0)|0;k=c[g+32>>2]|0;l=k+480|0;h=(k|0)==0;m=k+304|0;n=k+308|0;o=k+300|0;if(c[l>>2]|0){if(h)while(1){do if(c[g+24>>2]|0?(i=c[g+20>>2]|0,i|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{o=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);g=g+40|0;if(g>>>0>=p>>>0)break a}while(1){do if(c[g+24>>2]|0?(j=c[g+20>>2]|0,j|0):0){if(c[l>>2]|0){Xd(k,j);break}i=j;if((c[m>>2]|0)>>>0<=i>>>0?(c[n>>2]|0)>>>0>i>>>0:0){c[j>>2]=c[o>>2];c[o>>2]=j;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{i=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);g=g+40|0;if(g>>>0>=p>>>0)break a}}if(h)while(1){h=g+8|0;if(!(b[h>>1]&9216)){i=g+24|0;if(c[i>>2]|0){j=c[g+20>>2]|0;do if(j|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{o=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);c[i>>2]=0}}else Cg(g);b[h>>1]=128;g=g+40|0;if(g>>>0>=p>>>0)break a}do{h=g+8|0;if(!(b[h>>1]&9216)){i=g+24|0;if(c[i>>2]|0){j=c[g+20>>2]|0;do if(!(c[l>>2]|0)){u=j;if((c[m>>2]|0)>>>0<=u>>>0?(c[n>>2]|0)>>>0>u>>>0:0){c[j>>2]=c[o>>2];c[o>>2]=j;break}if(j|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{u=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}else Xd(k,j);while(0);c[i>>2]=0}}else Cg(g);b[h>>1]=128;g=g+40|0}while(g>>>0

        >>0)}while(0);g=c[q>>2]|0;if(g|0){if(t|0){if(c[t+480>>2]|0){Xd(t,g);break}u=g;if((c[t+304>>2]|0)>>>0<=u>>>0?(c[t+308>>2]|0)>>>0>u>>>0:0){u=t+300|0;c[g>>2]=c[u>>2];c[u>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{u=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}}while(0);b[r>>1]=f;i=f*80|0;b:do if(c[t+272>>2]|0)if(!(a[t+81>>0]|0))s=71;else{c[d+116>>2]=0;return}else{do if(!(0<0|(0==0?(e[t+276>>1]|0)>>>0>>0:0))){h=t+300|0;g=c[h>>2]|0;if(g|0){c[h>>2]=c[g>>2];u=t+284|0;c[u>>2]=(c[u>>2]|0)+1;break b}h=t+296|0;g=c[h>>2]|0;if(!g){g=t+292|0;break}else{c[h>>2]=c[g>>2];u=t+284|0;c[u>>2]=(c[u>>2]|0)+1;break b}}else g=t+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1;s=71}while(0);if((s|0)==71)g=_d(t,i,0)|0;c[d+116>>2]=g;if(!((f|0)>0&(g|0)!=0))return;h=f<<1;while(1){c[g+32>>2]=t;b[g+8>>1]=1;c[g+24>>2]=0;if((h|0)>1){h=h+-1|0;g=g+40|0}else break}return}function Xi(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;if(!b)return;i=(a|0)==0;j=a+480|0;k=a+304|0;l=a+308|0;m=a+300|0;do{h=b;b=c[b+36>>2]|0;d=c[h+16>>2]|0;if(d|0)ni(a,d);d=c[h+20>>2]|0;if(d|0)ri(a,d);d=c[h+8>>2]|0;if(d|0)pi(a,d,1);d=c[h+24>>2]|0;do if(d|0){g=d+4|0;e=c[d>>2]|0;a:do if((c[g>>2]|0)>0){if(i){f=0;while(1){e=c[e+(f<<3)>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{n=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);f=f+1|0;e=c[d>>2]|0;if((f|0)>=(c[g>>2]|0))break a}}f=0;do{e=c[e+(f<<3)>>2]|0;do if(e|0){if(c[j>>2]|0){Xd(a,e);break}n=e;if((c[k>>2]|0)>>>0<=n>>>0?(c[l>>2]|0)>>>0>n>>>0:0){c[e>>2]=c[m>>2];c[m>>2]=e;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{n=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);f=f+1|0;e=c[d>>2]|0}while((f|0)<(c[g>>2]|0))}while(0);b:do if(e){do if(!i){if(!(c[j>>2]|0)){f=e;if((c[k>>2]|0)>>>0>f>>>0)break;if((c[l>>2]|0)>>>0<=f>>>0)break;c[e>>2]=c[m>>2];c[m>>2]=e}else Xd(a,e);e=41;break b}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](e);e=40;break}else{n=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);e=40;break}}else e=40;while(0);if((e|0)==40){e=0;if(!i)e=41}if((e|0)==41){if(c[j>>2]|0){Xd(a,d);break}n=d;if((c[k>>2]|0)>>>0<=n>>>0?(c[l>>2]|0)>>>0>n>>>0:0){c[d>>2]=c[m>>2];c[m>>2]=d;break}}if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{n=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}while(0);e=c[h+28>>2]|0;do if(e|0){d=c[e>>2]|0;if(d|0)ri(a,d);d=c[e+4>>2]|0;if(d|0)ni(a,d);d=c[e+8>>2]|0;if(d|0)ri(a,d);d=c[e+12>>2]|0;if(d|0)ni(a,d);if(!i){if(c[j>>2]|0){Xd(a,e);break}n=e;if((c[k>>2]|0)>>>0<=n>>>0?(c[l>>2]|0)>>>0>n>>>0:0){c[e>>2]=c[m>>2];c[m>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{n=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);d=c[h+32>>2]|0;c:do if(d){do if(!i){if(!(c[j>>2]|0)){e=d;if((c[k>>2]|0)>>>0>e>>>0)break;if((c[l>>2]|0)>>>0<=e>>>0)break;c[d>>2]=c[m>>2];c[m>>2]=d}else Xd(a,d);d=h;e=80;break c}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](d);e=79;break}else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);e=79;break}}else e=79;while(0);if((e|0)==79)if(i){d=h;e=85}else{d=h;e=80}do if((e|0)==80){e=0;if(c[j>>2]|0){Xd(a,d);break}n=d;if((c[k>>2]|0)>>>0<=n>>>0?(c[l>>2]|0)>>>0>n>>>0:0){c[d>>2]=c[m>>2];c[m>>2]=d}else e=85}while(0);do if((e|0)==85)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{n=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0)}while((b|0)!=0);return}function Yi(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=c[e>>2]|0;a:do if(f){b:while(1){g=a[f>>0]|0;j=c[f+4>>2]|0;if(j&512|0){f=0;break a}if(g<<24>>24==-88)g=d[f+38>>0]|0;else g=g&255;switch((g&255)<<24>>24){case 106:{m=11;break b}case 77:case -94:case -92:{h=c[f+44>>2]|0;if(h|0){m=8;break b}if((g|0)==106){m=11;break b}else m=12;break}case 36:case -90:{f=c[f+12>>2]|0;break}default:m=12}c:do if((m|0)==12){m=0;if(!(j&256)){f=0;break a}g=c[f+12>>2]|0;if(g|0?c[g+4>>2]&256|0:0){f=g;break}i=c[f+16>>2]|0;h=c[f+20>>2]|0;if((j&2048|0)==0&(h|0)!=0?(k=c[h>>2]|0,(k|0)>0):0){g=0;while(1){f=c[h+4+(g*20|0)>>2]|0;g=g+1|0;if(c[f+4>>2]&256|0)break c;if((g|0)>=(k|0)){f=i;break}}}else f=i}while(0);if(!f){f=0;break a}}if((m|0)==8){f=b[f+32>>1]|0;if(f<<16>>16<=-1){f=0;break}f=Zi(l,a[l+78>>0]|0,c[(c[h+4>>2]|0)+(f<<16>>16<<4)+8>>2]|0,0)|0}else if((m|0)==11)f=_i(e,a[l+78>>0]|0,0,c[f+8>>2]|0)|0;if(f){if((c[f+12>>2]|0)==0?(_i(e,a[(c[e>>2]|0)+78>>0]|0,f,c[f>>2]|0)|0)==0:0){e=0;return e|0}}else f=0}else f=0;while(0);e=f;return e|0}function Zi(b,f,g,h){b=b|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;if(!g){g=c[b+8>>2]|0;p=(g|0)==0;b=f&255;b=b+-1|0;b=g+(b*20|0)|0;b=p?0:b;return b|0}p=b+380|0;l=c[b+392>>2]|0;if(!l){j=b+384|0;i=b+388|0}else{j=a[g>>0]|0;if(!(j<<24>>24))i=0;else{i=0;k=g;do{k=k+1|0;i=G(i+(d[208+(j&255)>>0]|0)|0,-1640531535)|0;j=a[k>>0]|0}while(j<<24>>24!=0)}i=(i>>>0)%((c[p>>2]|0)>>>0)|0;j=l+(i<<3)|0;i=l+(i<<3)+4|0}j=c[j>>2]|0;a:do if(!j)i=59292;else{n=d[208+(d[g>>0]|0)>>0]|0;while(1){i=c[i>>2]|0;j=j+-1|0;l=c[i+12>>2]|0;m=a[l>>0]|0;k=(d[208+(m&255)>>0]|0)-n|0;if(!(m<<24>>24==0|(k|0)!=0)){m=g;do{l=l+1|0;m=m+1|0;q=a[l>>0]|0;k=(d[208+(q&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(q<<24>>24==0|(k|0)!=0))}if(!k)break a;if(!j){i=59292;break}}}while(0);i=c[i+8>>2]|0;if(!((h|0)!=0&(i|0)==0)){p=i;b=(p|0)==0;q=f&255;q=q+-1|0;q=p+(q*20|0)|0;q=b?0:q;return q|0}l=(Eu(g)|0)&1073741823;m=l+61|0;b:do if(!b){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](m)|0;o=39;break}i=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){q=c[14978]|0;h=Tv(j|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&h>>>0<=q>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i)return 0;j=Wa[c[29352>>2]&127](i)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0)c[14987]=j}else{if(c[b+272>>2]|0){if(a[b+81>>0]|0)return 0}else{do if(!(0<0|(0==0?(e[b+276>>1]|0)>>>0>>0:0))){j=b+300|0;i=c[j>>2]|0;if(i|0){c[j>>2]=c[i>>2];o=b+284|0;c[o>>2]=(c[o>>2]|0)+1;o=39;break b}j=b+296|0;i=c[j>>2]|0;if(!i){i=b+292|0;break}else{c[j>>2]=c[i>>2];o=b+284|0;c[o>>2]=(c[o>>2]|0)+1;o=39;break b}}else i=b+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(b,m,0)|0;o=39}while(0);if((o|0)==39)if(!i)return 0;gw(i|0,0,m|0)|0;j=i+60|0;c[i>>2]=j;a[i+4>>0]=1;c[i+20>>2]=j;a[i+24>>0]=2;c[i+40>>2]=j;a[i+44>>0]=3;ew(j|0,g|0,l+1|0)|0;j=mi(p,j,i)|0;if(!j){p=i;b=(p|0)==0;q=f&255;q=q+-1|0;q=p+(q*20|0)|0;q=b?0:q;return q|0}i=b+81|0;if((a[i>>0]|0)==0?(a[b+82>>0]|0)==0:0){a[i>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;i=b+272|0;c[i>>2]=(c[i>>2]|0)+1;i=c[b+236>>2]|0;if(i|0)c[i+12>>2]=7}if(c[b+480>>2]|0){Xd(b,j);return 0}q=j;if((c[b+304>>2]|0)>>>0<=q>>>0?(c[b+308>>2]|0)>>>0>q>>>0:0){q=b+300|0;c[j>>2]=c[q>>2];c[q>>2]=j;return 0}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);return 0}else{q=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);return 0}return 0}function _i(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=Ra;Ra=Ra+16|0;r=s;q=c[f>>2]|0;if(!h){h=Zi(q,g,i,0)|0;if(h|0){j=h;n=3}}else{j=h;n=3}if((n|0)==3?c[j+12>>2]|0:0){r=j;Ra=s;return r|0}k=g&255;l=q+248|0;a:do if(c[l>>2]|0){if(i|0){m=(Eu(i)|0)+1|0;b:do if(c[q+272>>2]|0)if(!(a[q+81>>0]|0))n=16;else break a;else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){j=q+300|0;h=c[j>>2]|0;if(h|0){c[j>>2]=c[h>>2];j=q+284|0;c[j>>2]=(c[j>>2]|0)+1;break b}j=q+296|0;h=c[j>>2]|0;if(!h){h=q+292|0;break}else{c[j>>2]=c[h>>2];j=q+284|0;c[j>>2]=(c[j>>2]|0)+1;break b}}else h=q+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;n=16}while(0);if((n|0)==16)h=_d(q,m,0)|0;if(h|0){ew(h|0,i|0,m|0)|0;db[c[l>>2]&127](c[q+256>>2]|0,q,k,h);if(c[q+480>>2]|0){Xd(q,h);n=26;break}n=h;if((c[q+304>>2]|0)>>>0<=n>>>0?(c[q+308>>2]|0)>>>0>n>>>0:0){n=q+300|0;c[h>>2]=c[n>>2];c[n>>2]=h;n=26;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);n=26;break}else{n=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);n=26;break}}}}else n=26;while(0);c:do if((n|0)==26?(p=q+252|0,c[p>>2]|0):0){d:do if(c[q+272>>2]|0)if(!(a[q+81>>0]|0))n=37;else break c;else{do if((e[q+276>>1]|0)>=40){h=q+300|0;j=c[h>>2]|0;if(j|0){c[h>>2]=c[j>>2];m=q+284|0;c[m>>2]=(c[m>>2]|0)+1;break d}h=q+296|0;j=c[h>>2]|0;if(!j){h=q+292|0;break}else{c[h>>2]=c[j>>2];m=q+284|0;c[m>>2]=(c[m>>2]|0)+1;break d}}else h=q+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;n=37}while(0);if((n|0)==37)j=_d(q,40,0)|0;if(j|0){h=j;k=h+40|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(k|0));h=j+8|0;b[h>>1]=1;k=j+32|0;c[k>>2]=q;yc(j,i,-1,1,0)|0;l=b[h>>1]|0;if((l&514)==514?(a[j+10>>0]|0)==2:0){o=c[j+16>>2]|0;n=44}else n=42;if((n|0)==42?(l&1)==0:0){o=Gg(j,2)|0;n=44}if((n|0)==44?o|0:0)db[c[p>>2]&127](c[q+256>>2]|0,q,d[q+78>>0]|0,o);if(!((b[h>>1]&9216)==0?!(c[j+24>>2]|0):0))Cg(j);h=c[k>>2]|0;if(h|0){if(c[h+480>>2]|0){Xd(h,j);break}p=j;if((c[h+304>>2]|0)>>>0<=p>>>0?(c[h+308>>2]|0)>>>0>p>>>0:0){p=h+300|0;c[j>>2]=c[p>>2];c[p>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{p=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}}while(0);g=Zi(q,g,i,0)|0;do if(g|0){if(c[g+12>>2]|0){r=g;Ra=s;return r|0}p=c[g>>2]|0;o=(p|0)==0;if(o)h=q+8|0;else{l=c[q+392>>2]|0;if(!l){j=q+384|0;h=q+388|0}else{j=a[p>>0]|0;if(!(j<<24>>24))h=0;else{h=0;k=p;do{k=k+1|0;h=G(h+(d[208+(j&255)>>0]|0)|0,-1640531535)|0;j=a[k>>0]|0}while(j<<24>>24!=0)}h=(h>>>0)%((c[q+380>>2]|0)>>>0)|0;j=l+(h<<3)|0;h=l+(h<<3)+4|0}j=c[j>>2]|0;e:do if(!j)h=59292;else{n=d[208+(d[p>>0]|0)>>0]|0;while(1){h=c[h>>2]|0;j=j+-1|0;l=c[h+12>>2]|0;m=a[l>>0]|0;k=(d[208+(m&255)>>0]|0)-n|0;if(!(m<<24>>24==0|(k|0)!=0)){m=p;do{l=l+1|0;m=m+1|0;t=a[l>>0]|0;k=(d[208+(t&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(t<<24>>24==0|(k|0)!=0))}if(!k)break e;if(!j){h=59292;break}}}while(0);h=h+8|0}h=c[h>>2]|0;h=(h|0)==0?0:h+40|0;if(!(c[h+12>>2]|0)){if(o)h=q+8|0;else{l=c[q+392>>2]|0;if(!l){j=q+384|0;h=q+388|0}else{j=a[p>>0]|0;if(!(j<<24>>24))h=0;else{h=0;k=p;do{k=k+1|0;h=G(h+(d[208+(j&255)>>0]|0)|0,-1640531535)|0;j=a[k>>0]|0}while(j<<24>>24!=0)}h=(h>>>0)%((c[q+380>>2]|0)>>>0)|0;j=l+(h<<3)|0;h=l+(h<<3)+4|0}j=c[j>>2]|0;f:do if(!j)h=59292;else{n=d[208+(d[p>>0]|0)>>0]|0;while(1){h=c[h>>2]|0;j=j+-1|0;l=c[h+12>>2]|0;t=a[l>>0]|0;k=(d[208+(t&255)>>0]|0)-n|0;if(!(t<<24>>24==0|(k|0)!=0)){m=p;do{l=l+1|0;m=m+1|0;t=a[l>>0]|0;k=(d[208+(t&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(t<<24>>24==0|(k|0)!=0))}if(!k)break f;if(!j){h=59292;break}}}while(0);h=h+8|0}h=c[h>>2]|0;h=(h|0)==0?0:h+20|0;if(!(c[h+12>>2]|0)){if(o)h=q+8|0;else{l=c[q+392>>2]|0;if(!l){j=q+384|0;h=q+388|0}else{j=a[p>>0]|0;if(!(j<<24>>24))h=0;else{h=0;k=p;do{k=k+1|0;h=G(h+(d[208+(j&255)>>0]|0)|0,-1640531535)|0;j=a[k>>0]|0}while(j<<24>>24!=0)}h=(h>>>0)%((c[q+380>>2]|0)>>>0)|0;j=l+(h<<3)|0;h=l+(h<<3)+4|0}j=c[j>>2]|0;g:do if(!j)h=59292;else{n=d[208+(d[p>>0]|0)>>0]|0;while(1){h=c[h>>2]|0;j=j+-1|0;l=c[h+12>>2]|0;t=a[l>>0]|0;k=(d[208+(t&255)>>0]|0)-n|0;if(!(t<<24>>24==0|(k|0)!=0)){m=p;do{l=l+1|0;m=m+1|0;t=a[l>>0]|0;k=(d[208+(t&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(t<<24>>24==0|(k|0)!=0))}if(!k)break g;if(!j){h=59292;break}}}while(0);h=h+8|0}h=c[h>>2]|0;if(!(c[h+12>>2]|0))break}};c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];c[g+16>>2]=0;t=g;Ra=s;return t|0}while(0);c[r>>2]=i;cd(f,38397,r);c[f+12>>2]=257;t=0;Ra=s;return t|0} - -// EMSCRIPTEN_END_FUNCS -var Va=[GK,jw,kw,lw,mw,nw,ow,pw,qw,rw,sw,tw,uw,vw,ww,xw,yw,zw,Aw,Bw,Cw,Dw,Ew,Fw,Gw,Hw,Iw,Jw,Kw,Lw,Mw,Nw,Ow,Pw,Qw,Rw,Sw,Tw,Uw,Vw,Ww,Xw,Yw,Zw,_w,$w,ax,bx,cx,dx,ex,fx,gx,hx,ix,jx,kx,lx,mx,nx,ox,px,qx,rx,sx,Dv,we,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK];var Wa=[HK,ux,vx,wx,xx,yx,zx,Ax,Bx,Cx,Dx,Ex,Fx,Gx,Hx,Ix,Jx,Kx,Lx,Mx,Nx,Ox,Px,Qx,Rx,Sx,Tx,Ux,Vx,Wx,Xx,Yx,Zx,_x,$x,ay,by,cy,dy,ey,fy,gy,hy,iy,jy,ky,ly,my,ny,oy,py,qy,ry,sy,ty,uy,vy,wy,xy,yy,zy,Ay,By,Cy,Dy,be,le,me,Nu,Bv,Ev,Be,Fe,Ze,Ki,Mi,Oi,Pi,ep,hp,ip,jp,lp,pp,Dq,Eq,Gq,Iq,Jq,Nq,Oq,Pq,Qq,Wq,Hp,Jp,Op,Qp,Sp,Tp,mq,oq,rq,tq,ks,ms,os,ps,Ds,Es,Gs,Is,Js,Ns,Os,Rs,rb,Re,HK,HK,HK,HK,HK,HK,HK,HK,HK,HK];var Xa=[IK,Fy,Gy,Hy,Iy,Jy,Ky,Ly,My,Ny,Oy,Py,Qy,Ry,Sy,Ty,Uy,Vy,Wy,Xy,Yy,Zy,_y,$y,az,bz,cz,dz,ez,fz,gz,hz,iz,jz,kz,lz,mz,nz,oz,pz,qz,rz,sz,tz,uz,vz,wz,xz,yz,zz,Az,Bz,Cz,Dz,Ez,Fz,Gz,Hz,Iz,Jz,Kz,Lz,Mz,Nz,Oz,Ob,Pb,Rb,Tb,Ub,ae,Je,Ke,fe,ge,he,ie,je,qe,Qu,Zu,Pu,Xu,yv,Kv,ve,fv,gv,Ou,Ce,De,Ee,Ge,He,Ie,bf,cf,Ji,Li,Ri,gp,Cq,Fq,Lq,Sq,Tq,Uq,Vq,Np,Pp,Vp,js,ls,rs,Cs,Fs,Ls,Ps,Qs,Ue,If,Kf,Yg,Zg,$k,Dk,Ek,Yj,Zj,vl,wl,Gl,Yk,Cm,Dm,Am,Vm,kk,lk,Jk,Hk,Mk,Nk,Ok,_k,xl,Sl,nm,fm,Bm,jo,ko,so,to,_p,$p,Zp,iq,hq,yt,zt,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK];var Ya=[JK,Qz,Rz,Sz,Tz,Uz,Vz,Wz,Xz,Yz,Zz,_z,$z,aA,bA,cA,dA,eA,fA,gA,hA,iA,jA,kA,lA,mA,nA,oA,pA,qA,rA,sA,tA,uA,vA,wA,xA,yA,zA,AA,BA,CA,DA,EA,FA,GA,HA,IA,JA,KA,LA,MA,NA,OA,PA,QA,RA,SA,TA,UA,VA,WA,XA,YA,ZA,Kb,Nb,Qb,Sb,ee,ke,ue,Iu,$u,_u,Cv,Wu,af,Qi,np,qp,Kq,Gp,Up,lq,qq,qs,Ks,Ch,Dh,Eh,Dd,Yr,Xr,as,bs,gs,es,fs,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK];var Za=[KK,$A,aB,bB,cB,dB,eB,fB,gB,hB,iB,jB,kB,lB,mB,nB,oB,pB,qB,rB,sB,tB,uB,vB,wB,xB,yB,zB,AB,BB,CB,DB,EB,FB,GB,HB,IB,JB,KB,LB,MB,NB,OB,PB,QB,RB,SB,TB,UB,VB,WB,XB,YB,ZB,_B,$B,aC,bC,cC,dC,eC,fC,gC,hC,iC,Lb,Mb,oe,se,Mq,Ip,nq,sq,Ms,qf,pf,Ld,fh,ki,aq,bq,kd,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK];var _a=[LK,kC,lC,mC,nC,oC,pC,qC,rC,sC,tC,uC,vC,wC,xC,yC,zC,AC,BC,CC,DC,EC,FC,GC,HC,IC,JC,KC,LC,MC,NC,OC,PC,QC,RC,SC,TC,UC,VC,WC,XC,YC,ZC,_C,$C,aD,bD,cD,dD,eD,fD,gD,hD,iD,jD,kD,lD,mD,nD,oD,pD,qD,rD,sD,tD,Jb,ce,de,ne,re,_e,$e,Ni,Hq,Rq,Rp,ns,Hs,Hl,Dp,gt,ht,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK];var $a=[MK,vD,wD,xD,yD,zD,AD,BD,CD,DD,ED,FD,GD,HD,ID,JD,KD,LD,MD,ND,OD,PD,QD,RD,SD,TD,UD,VD,WD,XD,YD,ZD,_D,$D,aE,bE,cE,dE,eE,fE,gE,hE,iE,jE,kE,lE,mE,nE,oE,pE,qE,rE,sE,tE,uE,vE,wE,xE,yE,zE,AE,BE,CE,DE,EE,Lv,Ii,Aq,Bq,Kp,Mp,pq,uq,is,As,Bs,Xh,Yh,Wh,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK];var ab=[NK,GE,HE,IE,JE,KE,LE,ME,NE,OE,PE,QE,RE,SE,TE,UE,VE,WE,XE,YE,ZE,_E,$E,aF,bF,cF,dF,eF,fF,gF,hF,iF,jF,kF,lF,mF,nF,oF,pF,qF,rF,sF,tF,uF,vF,wF,xF,yF,zF,AF,BF,CF,DF,EF,FF,GF,HF,IF,JF,KF,LF,MF,NF,OF,PF,pe,wn,xn,Wn,Yn,Zn,$n,co,eo,vo,xo,zo,Bo,Eo,Ho,Ko,Lo,Oo,Po,Ro,fp,kp,mp,up,vp,qb,Fp,Qe,ih,vi,dh,ln,Qg,cs,mt,nt,pt,qt,rt,st,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK];var bb=[OK,RF,SF,TF,UF,VF,WF,XF,YF,ZF,_F,$F,aG,bG,cG,dG,eG,fG,gG,hG,iG,jG,kG,lG,mG,nG,oG,pG,qG,rG,sG,tG,uG,vG,wG,xG,yG,zG,AG,BG,CG,DG,EG,FG,GG,HG,IG,JG,KG,LG,MG,NG,OG,PG,QG,RG,SG,TG,UG,VG,WG,XG,YG,ZG,_G,op,tp,Em,Pk,Zk,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK];var cb=[PK,aH,bH,cH,dH,eH,fH,gH,hH,iH,jH,kH,lH,mH,nH,oH,pH,qH,rH,sH,tH,uH,vH,wH,xH,yH,zH,AH,BH,CH,DH,EH,FH,GH,HH,IH,JH,KH,LH,MH,NH,OH,PH,QH,RH,SH,TH,UH,VH,WH,XH,YH,ZH,_H,$H,aI,bI,cI,dI,eI,fI,gI,hI,iI,jI,bn,fn,kn,mn,nn,qn,rn,sn,tn,un,vn,yn,zn,An,Bn,Cn,Dn,En,Fn,Gn,Hn,In,Jn,Kn,Ln,Mn,Nn,On,Pn,Qn,Rn,Sn,Tn,Un,Vn,Xn,_n,ao,bo,fo,$m,go,ho,io,uo,xm,wo,yo,Ao,Co,Do,Fo,Go,Io,Jo,Mo,No,Qo,So,To,Uo,Vo,Wo,Xo,Yo,Zo,rp,Tr,Ur,Vr,Wr,At,Bt,Ct,Dt,Et,Ft,Gt,Ht,It,Jt,Kt,Lt,Mt,Nt,Ot,Pt,Qt,Rt,St,Tt,Ut,Vt,Wt,Xt,Yt,Zt,_t,$t,au,bu,cu,du,eu,fu,gu,hu,iu,ju,Kd,zq,ss,ts,us,Mf,Jf,Lf,lt,ot,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK];var db=[QK,lI,mI,nI,oI,pI,qI,rI,sI,tI,uI,vI,wI,xI,yI,zI,AI,BI,CI,DI,EI,FI,GI,HI,II,JI,KI,LI,MI,NI,OI,PI,QI,RI,SI,TI,UI,VI,WI,XI,YI,ZI,_I,$I,aJ,bJ,cJ,dJ,eJ,fJ,gJ,hJ,iJ,jJ,kJ,lJ,mJ,nJ,oJ,pJ,qJ,rJ,sJ,tJ,uJ,sp,Tj,tk,xt,ut,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK];var eb=[RK,wJ,xJ,yJ,zJ,AJ,BJ,CJ,DJ,EJ,FJ,GJ,HJ,IJ,JJ,KJ,LJ,MJ,NJ,OJ,PJ,QJ,RJ,SJ,TJ,UJ,VJ,WJ,XJ,YJ,ZJ,_J,$J,aK,bK,cK,dK,eK,fK,gK,hK,iK,jK,kK,lK,mK,nK,oK,pK,qK,rK,sK,tK,uK,vK,wK,xK,yK,zK,AK,BK,CK,DK,EK,FK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK];return{_RegisterExtensionFunctions:kt,___divdi3:Wv,___emscripten_environ_constructor:Nv,___errno_location:uu,___muldi3:Yv,___remdi3:Zv,___udivdi3:_v,___uremdi3:$v,__get_daylight:Pv,__get_environ:Rv,__get_timezone:Qv,__get_tzname:Ov,_bitshift64Ashr:aw,_bitshift64Lshr:bw,_bitshift64Shl:cw,_emscripten_replace_memory:Ua,_free:mu,_i64Add:Sv,_i64Subtract:Tv,_llvm_bswap_i32:dw,_malloc:lu,_memalign:ru,_memcpy:ew,_memmove:fw,_memset:gw,_sbrk:hw,_sqlite3_bind_blob:Sc,_sqlite3_bind_double:Uc,_sqlite3_bind_int:Wc,_sqlite3_bind_parameter_index:Zc,_sqlite3_bind_text:Xc,_sqlite3_changes:Ad,_sqlite3_clear_bindings:lc,_sqlite3_close_v2:Cd,_sqlite3_column_blob:Kc,_sqlite3_column_bytes:Lc,_sqlite3_column_double:Mc,_sqlite3_column_name:Rc,_sqlite3_column_text:Pc,_sqlite3_column_type:Qc,_sqlite3_create_function_v2:Gd,_sqlite3_data_count:Jc,_sqlite3_errmsg:pd,_sqlite3_exec:nd,_sqlite3_finalize:gc,_sqlite3_free:qb,_sqlite3_open:Od,_sqlite3_prepare_v2:od,_sqlite3_reset:jc,_sqlite3_result_blob:vc,_sqlite3_result_double:wc,_sqlite3_result_error:xc,_sqlite3_result_int:zc,_sqlite3_result_int64:Ac,_sqlite3_result_null:Bc,_sqlite3_result_text:Cc,_sqlite3_step:Gc,_sqlite3_value_blob:mc,_sqlite3_value_bytes:oc,_sqlite3_value_double:pc,_sqlite3_value_int:qc,_sqlite3_value_text:nc,_sqlite3_value_type:sc,dynCall_i:iw,dynCall_ii:tx,dynCall_iii:Ey,dynCall_iiii:Pz,dynCall_iiiii:_A,dynCall_iiiiii:jC,dynCall_iiiiiii:uD,dynCall_vi:FE,dynCall_vii:QF,dynCall_viii:$G,dynCall_viiii:kI,dynCall_viiiiii:vJ,establishStackSpace:ib,stackAlloc:fb,stackRestore:hb,stackSave:gb}}) - - -// EMSCRIPTEN_END_ASM -(Zc,bd,buffer);f._RegisterExtensionFunctions=Z._RegisterExtensionFunctions;f.___divdi3=Z.___divdi3;var lb=f.___emscripten_environ_constructor=Z.___emscripten_environ_constructor;f.___errno_location=Z.___errno_location;f.___muldi3=Z.___muldi3;f.___remdi3=Z.___remdi3;f.___udivdi3=Z.___udivdi3;f.___uremdi3=Z.___uremdi3;var Tc=f.__get_daylight=Z.__get_daylight;f.__get_environ=Z.__get_environ; -var Sc=f.__get_timezone=Z.__get_timezone,Uc=f.__get_tzname=Z.__get_tzname;f._bitshift64Ashr=Z._bitshift64Ashr;f._bitshift64Lshr=Z._bitshift64Lshr;f._bitshift64Shl=Z._bitshift64Shl;f._emscripten_replace_memory=Z._emscripten_replace_memory;var fa=f._free=Z._free;f._i64Add=Z._i64Add;f._i64Subtract=Z._i64Subtract;f._llvm_bswap_i32=Z._llvm_bswap_i32;var Wa=f._malloc=Z._malloc,$c=f._memalign=Z._memalign;f._memcpy=Z._memcpy;f._memmove=Z._memmove;var ad=f._memset=Z._memset;f._sbrk=Z._sbrk; -f._sqlite3_bind_blob=Z._sqlite3_bind_blob;f._sqlite3_bind_double=Z._sqlite3_bind_double;f._sqlite3_bind_int=Z._sqlite3_bind_int;f._sqlite3_bind_parameter_index=Z._sqlite3_bind_parameter_index;f._sqlite3_bind_text=Z._sqlite3_bind_text;f._sqlite3_changes=Z._sqlite3_changes;f._sqlite3_clear_bindings=Z._sqlite3_clear_bindings;f._sqlite3_close_v2=Z._sqlite3_close_v2;f._sqlite3_column_blob=Z._sqlite3_column_blob;f._sqlite3_column_bytes=Z._sqlite3_column_bytes;f._sqlite3_column_double=Z._sqlite3_column_double; -f._sqlite3_column_name=Z._sqlite3_column_name;f._sqlite3_column_text=Z._sqlite3_column_text;f._sqlite3_column_type=Z._sqlite3_column_type;f._sqlite3_create_function_v2=Z._sqlite3_create_function_v2;f._sqlite3_data_count=Z._sqlite3_data_count;f._sqlite3_errmsg=Z._sqlite3_errmsg;f._sqlite3_exec=Z._sqlite3_exec;f._sqlite3_finalize=Z._sqlite3_finalize;f._sqlite3_free=Z._sqlite3_free;f._sqlite3_open=Z._sqlite3_open;f._sqlite3_prepare_v2=Z._sqlite3_prepare_v2;f._sqlite3_reset=Z._sqlite3_reset; -f._sqlite3_result_blob=Z._sqlite3_result_blob;f._sqlite3_result_double=Z._sqlite3_result_double;f._sqlite3_result_error=Z._sqlite3_result_error;f._sqlite3_result_int=Z._sqlite3_result_int;f._sqlite3_result_int64=Z._sqlite3_result_int64;f._sqlite3_result_null=Z._sqlite3_result_null;f._sqlite3_result_text=Z._sqlite3_result_text;f._sqlite3_step=Z._sqlite3_step;f._sqlite3_value_blob=Z._sqlite3_value_blob;f._sqlite3_value_bytes=Z._sqlite3_value_bytes;f._sqlite3_value_double=Z._sqlite3_value_double; -f._sqlite3_value_int=Z._sqlite3_value_int;f._sqlite3_value_text=Z._sqlite3_value_text;f._sqlite3_value_type=Z._sqlite3_value_type;f.establishStackSpace=Z.establishStackSpace;var h=f.stackAlloc=Z.stackAlloc,qa=f.stackRestore=Z.stackRestore,na=f.stackSave=Z.stackSave;f.dynCall_i=Z.dynCall_i;f.dynCall_ii=Z.dynCall_ii;f.dynCall_iii=Z.dynCall_iii;f.dynCall_iiii=Z.dynCall_iiii;f.dynCall_iiiii=Z.dynCall_iiiii;f.dynCall_iiiiii=Z.dynCall_iiiiii;f.dynCall_iiiiiii=Z.dynCall_iiiiiii;f.dynCall_vi=Z.dynCall_vi; -f.dynCall_vii=Z.dynCall_vii;f.dynCall_viii=Z.dynCall_viii;f.dynCall_viiii=Z.dynCall_viiii;f.dynCall_viiiiii=Z.dynCall_viiiiii;f.asm=Z;f.cwrap=function(a,b,c,d){c=c||[];var e=c.every(function(a){return"number"===a});return"string"!==b&&e&&!d?Qa(a):function(){return Ra(a,b,c,arguments)}};f.stackSave=na;f.stackRestore=qa;f.stackAlloc=h; -if(H){if(String.prototype.startsWith?!H.startsWith(kb):0!==H.indexOf(kb)){var cd=H;H=f.locateFile?f.locateFile(cd,z):z+cd}if(y||za){var dd=f.readBinary(H);E.set(dd,8)}else{G++;f.monitorRunDependencies&&f.monitorRunDependencies(G);var ed=function(a){a.byteLength&&(a=new Uint8Array(a));E.set(a,8);f.memoryInitializerRequest&&delete f.memoryInitializerRequest.response;G--;f.monitorRunDependencies&&f.monitorRunDependencies(G);0==G&&(null!==ib&&(clearInterval(ib),ib=null),jb&&(a=jb,jb=null,a()))},fd=function(){f.readAsync(H, -ed,function(){throw"could not load memory initializer "+H;})},gd=B(H);if(gd)ed(gd.buffer);else if(f.memoryInitializerRequest){var hd=function(){var a=f.memoryInitializerRequest,b=a.response;if(200!==a.status&&0!==a.status)if(b=B(f.memoryInitializerRequestURL))b=b.buffer;else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+a.status+", retrying "+H);fd();return}ed(b)};f.memoryInitializerRequest.response?setTimeout(hd,0):f.memoryInitializerRequest.addEventListener("load", -hd)}else fd()}}function id(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}id.prototype=Error();id.prototype.constructor=id;jb=function jd(){f.calledRun||kd();f.calledRun||(jb=jd)}; -function kd(){function a(){if(!f.calledRun&&(f.calledRun=!0,!Na)){gb||(gb=!0,f.noFSInit||Ic||(Ic=!0,Hc(),f.stdin=f.stdin,f.stdout=f.stdout,f.stderr=f.stderr,f.stdin?Jc("stdin",f.stdin):bc("/dev/tty","/dev/stdin"),f.stdout?Jc("stdout",null,f.stdout):bc("/dev/tty","/dev/stdout"),f.stderr?Jc("stderr",null,f.stderr):bc("/dev/tty1","/dev/stderr"),p("/dev/stdin","r"),p("/dev/stdout","w"),p("/dev/stderr","w")),bb(db));Lb=!1;bb(eb);if(f.onRuntimeInitialized)f.onRuntimeInitialized();if(f.postRun)for("function"== -typeof f.postRun&&(f.postRun=[f.postRun]);f.postRun.length;){var a=f.postRun.shift();fb.unshift(a)}bb(fb)}}if(!(0 self._pos) { - var newData = response.substr(self._pos) - if (self._charset === 'x-user-defined') { - var buffer = new Buffer(newData.length) - for (var i = 0; i < newData.length; i++) - buffer[i] = newData.charCodeAt(i) & 0xff - - self.push(buffer) - } else { - self.push(newData, self._charset) - } - self._pos = response.length - } - break - case 'arraybuffer': - if (xhr.readyState !== rStates.DONE || !xhr.response) - break - response = xhr.response - self.push(new Buffer(new Uint8Array(response))) - break - case 'moz-chunked-arraybuffer': // take whole - response = xhr.response - if (xhr.readyState !== rStates.LOADING || !response) - break - self.push(new Buffer(new Uint8Array(response))) - break - case 'ms-stream': - response = xhr.response - if (xhr.readyState !== rStates.LOADING) - break - var reader = new global.MSStreamReader() - reader.onprogress = function () { - if (reader.result.byteLength > self._pos) { - self.push(new Buffer(new Uint8Array(reader.result.slice(self._pos)))) - self._pos = reader.result.byteLength - } - } - reader.onload = function () { - self.push(null) - } - // reader.onerror = ??? // TODO: this - reader.readAsArrayBuffer(response) - break - } - - // The ms-stream case handles end separately in reader.onload() - if (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') { - self.push(null) - } -} - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer) -},{"./capability":330,"_process":284,"buffer":182,"inherits":262,"readable-stream":312}],333:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -'use strict'; - -/**/ - -var Buffer = require('safe-buffer').Buffer; -/**/ - -var isEncoding = Buffer.isEncoding || function (encoding) { - encoding = '' + encoding; - switch (encoding && encoding.toLowerCase()) { - 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': - return true; - default: - return false; - } -}; - -function _normalizeEncoding(enc) { - if (!enc) return 'utf8'; - var retried; - while (true) { - switch (enc) { - case 'utf8': - case 'utf-8': - return 'utf8'; - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return 'utf16le'; - case 'latin1': - case 'binary': - return 'latin1'; - case 'base64': - case 'ascii': - case 'hex': - return enc; - default: - if (retried) return; // undefined - enc = ('' + enc).toLowerCase(); - retried = true; - } - } -}; - -// Do not cache `Buffer.isEncoding` when checking encoding names as some -// modules monkey-patch it to support additional encodings -function normalizeEncoding(enc) { - var nenc = _normalizeEncoding(enc); - if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); - return nenc || enc; -} - -// StringDecoder provides an interface for efficiently splitting a series of -// buffers into a series of JS strings without breaking apart multi-byte -// characters. -exports.StringDecoder = StringDecoder; -function StringDecoder(encoding) { - this.encoding = normalizeEncoding(encoding); - var nb; - switch (this.encoding) { - case 'utf16le': - this.text = utf16Text; - this.end = utf16End; - nb = 4; - break; - case 'utf8': - this.fillLast = utf8FillLast; - nb = 4; - break; - case 'base64': - this.text = base64Text; - this.end = base64End; - nb = 3; - break; - default: - this.write = simpleWrite; - this.end = simpleEnd; - return; - } - this.lastNeed = 0; - this.lastTotal = 0; - this.lastChar = Buffer.allocUnsafe(nb); -} - -StringDecoder.prototype.write = function (buf) { - if (buf.length === 0) return ''; - var r; - var i; - if (this.lastNeed) { - r = this.fillLast(buf); - if (r === undefined) return ''; - i = this.lastNeed; - this.lastNeed = 0; - } else { - i = 0; - } - if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); - return r || ''; -}; - -StringDecoder.prototype.end = utf8End; - -// Returns only complete characters in a Buffer -StringDecoder.prototype.text = utf8Text; - -// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer -StringDecoder.prototype.fillLast = function (buf) { - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); - this.lastNeed -= buf.length; -}; - -// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a -// continuation byte. If an invalid byte is detected, -2 is returned. -function utf8CheckByte(byte) { - 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; - return byte >> 6 === 0x02 ? -1 : -2; -} - -// Checks at most 3 bytes at the end of a Buffer in order to detect an -// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) -// needed to complete the UTF-8 character (if applicable) are returned. -function utf8CheckIncomplete(self, buf, i) { - var j = buf.length - 1; - if (j < i) return 0; - var nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 1; - return nb; - } - if (--j < i || nb === -2) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 2; - return nb; - } - if (--j < i || nb === -2) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) { - if (nb === 2) nb = 0;else self.lastNeed = nb - 3; - } - return nb; - } - return 0; -} - -// Validates as many continuation bytes for a multi-byte UTF-8 character as -// needed or are available. If we see a non-continuation byte where we expect -// one, we "replace" the validated continuation bytes we've seen so far with -// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding -// behavior. The continuation byte check is included three times in the case -// where all of the continuation bytes for a character exist in the same buffer. -// It is also done this way as a slight performance increase instead of using a -// loop. -function utf8CheckExtraBytes(self, buf, p) { - if ((buf[0] & 0xC0) !== 0x80) { - self.lastNeed = 0; - return '\ufffd'; - } - if (self.lastNeed > 1 && buf.length > 1) { - if ((buf[1] & 0xC0) !== 0x80) { - self.lastNeed = 1; - return '\ufffd'; - } - if (self.lastNeed > 2 && buf.length > 2) { - if ((buf[2] & 0xC0) !== 0x80) { - self.lastNeed = 2; - return '\ufffd'; - } - } - } -} - -// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. -function utf8FillLast(buf) { - var p = this.lastTotal - this.lastNeed; - var r = utf8CheckExtraBytes(this, buf, p); - if (r !== undefined) return r; - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, p, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, p, 0, buf.length); - this.lastNeed -= buf.length; -} - -// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a -// partial character, the character's bytes are buffered until the required -// number of bytes are available. -function utf8Text(buf, i) { - var total = utf8CheckIncomplete(this, buf, i); - if (!this.lastNeed) return buf.toString('utf8', i); - this.lastTotal = total; - var end = buf.length - (total - this.lastNeed); - buf.copy(this.lastChar, 0, end); - return buf.toString('utf8', i, end); -} - -// For UTF-8, a replacement character is added when ending on a partial -// character. -function utf8End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + '\ufffd'; - return r; -} - -// UTF-16LE typically needs two bytes per character, but even if we have an even -// number of bytes available, we need to check if we end on a leading/high -// surrogate. In that case, we need to wait for the next two bytes in order to -// decode the last character properly. -function utf16Text(buf, i) { - if ((buf.length - i) % 2 === 0) { - var r = buf.toString('utf16le', i); - if (r) { - var c = r.charCodeAt(r.length - 1); - if (c >= 0xD800 && c <= 0xDBFF) { - this.lastNeed = 2; - this.lastTotal = 4; - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - return r.slice(0, -1); - } - } - return r; - } - this.lastNeed = 1; - this.lastTotal = 2; - this.lastChar[0] = buf[buf.length - 1]; - return buf.toString('utf16le', i, buf.length - 1); -} - -// For UTF-16LE we do not explicitly append special replacement characters if we -// end on a partial character, we simply let v8 handle that. -function utf16End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) { - var end = this.lastTotal - this.lastNeed; - return r + this.lastChar.toString('utf16le', 0, end); - } - return r; -} - -function base64Text(buf, i) { - var n = (buf.length - i) % 3; - if (n === 0) return buf.toString('base64', i); - this.lastNeed = 3 - n; - this.lastTotal = 3; - if (n === 1) { - this.lastChar[0] = buf[buf.length - 1]; - } else { - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - } - return buf.toString('base64', i, buf.length - n); -} - -function base64End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); - return r; -} - -// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) -function simpleWrite(buf) { - return buf.toString(this.encoding); -} - -function simpleEnd(buf) { - return buf && buf.length ? this.write(buf) : ''; -} -},{"safe-buffer":334}],334:[function(require,module,exports){ -arguments[4][178][0].apply(exports,arguments) -},{"buffer":182,"dup":178}],335:[function(require,module,exports){ -(function (setImmediate,clearImmediate){ -var nextTick = require('process/browser.js').nextTick; -var apply = Function.prototype.apply; -var slice = Array.prototype.slice; -var immediateIds = {}; -var nextImmediateId = 0; - -// DOM APIs, for completeness - -exports.setTimeout = function() { - return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout); -}; -exports.setInterval = function() { - return new Timeout(apply.call(setInterval, window, arguments), clearInterval); -}; -exports.clearTimeout = -exports.clearInterval = function(timeout) { timeout.close(); }; - -function Timeout(id, clearFn) { - this._id = id; - this._clearFn = clearFn; -} -Timeout.prototype.unref = Timeout.prototype.ref = function() {}; -Timeout.prototype.close = function() { - this._clearFn.call(window, this._id); -}; - -// Does not start the time, just sets up the members needed. -exports.enroll = function(item, msecs) { - clearTimeout(item._idleTimeoutId); - item._idleTimeout = msecs; -}; - -exports.unenroll = function(item) { - clearTimeout(item._idleTimeoutId); - item._idleTimeout = -1; -}; - -exports._unrefActive = exports.active = function(item) { - clearTimeout(item._idleTimeoutId); - - var msecs = item._idleTimeout; - if (msecs >= 0) { - item._idleTimeoutId = setTimeout(function onTimeout() { - if (item._onTimeout) - item._onTimeout(); - }, msecs); - } -}; - -// That's not how node.js implements it but the exposed api is the same. -exports.setImmediate = typeof setImmediate === "function" ? setImmediate : function(fn) { - var id = nextImmediateId++; - var args = arguments.length < 2 ? false : slice.call(arguments, 1); - - immediateIds[id] = true; - - nextTick(function onNextTick() { - if (immediateIds[id]) { - // fn.call() is faster so we optimize for the common use-case - // @see http://jsperf.com/call-apply-segu - if (args) { - fn.apply(null, args); - } else { - fn.call(null); - } - // Prevent ids from leaking - exports.clearImmediate(id); - } - }); - - return id; -}; - -exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate : function(id) { - delete immediateIds[id]; -}; -}).call(this,require("timers").setImmediate,require("timers").clearImmediate) -},{"process/browser.js":284,"timers":335}],336:[function(require,module,exports){ -var Buffer = require('buffer').Buffer - -module.exports = function (buf) { - // If the buffer is backed by a Uint8Array, a faster version will work - if (buf instanceof Uint8Array) { - // If the buffer isn't a subarray, return the underlying ArrayBuffer - if (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) { - return buf.buffer - } else if (typeof buf.buffer.slice === 'function') { - // Otherwise we need to get a proper copy - return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength) - } - } - - if (Buffer.isBuffer(buf)) { - // This is the slow version that will work with any Buffer - // implementation (even in old browsers) - var arrayCopy = new Uint8Array(buf.length) - var len = buf.length - for (var i = 0; i < len; i++) { - arrayCopy[i] = buf[i] - } - return arrayCopy.buffer - } else { - throw new Error('Argument must be a Buffer') - } -} - -},{"buffer":182}],337:[function(require,module,exports){ -var undefined = (void 0); // Paranoia - -// Beyond this value, index getters/setters (i.e. array[0], array[1]) are so slow to -// create, and consume so much memory, that the browser appears frozen. -var MAX_ARRAY_LENGTH = 1e5; - -// Approximations of internal ECMAScript conversion functions -var ECMAScript = (function() { - // Stash a copy in case other scripts modify these - var opts = Object.prototype.toString, - ophop = Object.prototype.hasOwnProperty; - - return { - // Class returns internal [[Class]] property, used to avoid cross-frame instanceof issues: - Class: function(v) { return opts.call(v).replace(/^\[object *|\]$/g, ''); }, - HasProperty: function(o, p) { return p in o; }, - HasOwnProperty: function(o, p) { return ophop.call(o, p); }, - IsCallable: function(o) { return typeof o === 'function'; }, - ToInt32: function(v) { return v >> 0; }, - ToUint32: function(v) { return v >>> 0; } - }; -}()); - -// Snapshot intrinsics -var LN2 = Math.LN2, - abs = Math.abs, - floor = Math.floor, - log = Math.log, - min = Math.min, - pow = Math.pow, - round = Math.round; - -// ES5: lock down object properties -function configureProperties(obj) { - if (getOwnPropNames && defineProp) { - var props = getOwnPropNames(obj), i; - for (i = 0; i < props.length; i += 1) { - defineProp(obj, props[i], { - value: obj[props[i]], - writable: false, - enumerable: false, - configurable: false - }); - } - } -} - -// emulate ES5 getter/setter API using legacy APIs -// http://blogs.msdn.com/b/ie/archive/2010/09/07/transitioning-existing-code-to-the-es5-getter-setter-apis.aspx -// (second clause tests for Object.defineProperty() in IE<9 that only supports extending DOM prototypes, but -// note that IE<9 does not support __defineGetter__ or __defineSetter__ so it just renders the method harmless) -var defineProp -if (Object.defineProperty && (function() { - try { - Object.defineProperty({}, 'x', {}); - return true; - } catch (e) { - return false; - } - })()) { - defineProp = Object.defineProperty; -} else { - defineProp = function(o, p, desc) { - if (!o === Object(o)) throw new TypeError("Object.defineProperty called on non-object"); - if (ECMAScript.HasProperty(desc, 'get') && Object.prototype.__defineGetter__) { Object.prototype.__defineGetter__.call(o, p, desc.get); } - if (ECMAScript.HasProperty(desc, 'set') && Object.prototype.__defineSetter__) { Object.prototype.__defineSetter__.call(o, p, desc.set); } - if (ECMAScript.HasProperty(desc, 'value')) { o[p] = desc.value; } - return o; - }; -} - -var getOwnPropNames = Object.getOwnPropertyNames || function (o) { - if (o !== Object(o)) throw new TypeError("Object.getOwnPropertyNames called on non-object"); - var props = [], p; - for (p in o) { - if (ECMAScript.HasOwnProperty(o, p)) { - props.push(p); - } - } - return props; -}; - -// ES5: Make obj[index] an alias for obj._getter(index)/obj._setter(index, value) -// for index in 0 ... obj.length -function makeArrayAccessors(obj) { - if (!defineProp) { return; } - - if (obj.length > MAX_ARRAY_LENGTH) throw new RangeError("Array too large for polyfill"); - - function makeArrayAccessor(index) { - defineProp(obj, index, { - 'get': function() { return obj._getter(index); }, - 'set': function(v) { obj._setter(index, v); }, - enumerable: true, - configurable: false - }); - } - - var i; - for (i = 0; i < obj.length; i += 1) { - makeArrayAccessor(i); - } -} - -// Internal conversion functions: -// pack() - take a number (interpreted as Type), output a byte array -// unpack() - take a byte array, output a Type-like number - -function as_signed(value, bits) { var s = 32 - bits; return (value << s) >> s; } -function as_unsigned(value, bits) { var s = 32 - bits; return (value << s) >>> s; } - -function packI8(n) { return [n & 0xff]; } -function unpackI8(bytes) { return as_signed(bytes[0], 8); } - -function packU8(n) { return [n & 0xff]; } -function unpackU8(bytes) { return as_unsigned(bytes[0], 8); } - -function packU8Clamped(n) { n = round(Number(n)); return [n < 0 ? 0 : n > 0xff ? 0xff : n & 0xff]; } - -function packI16(n) { return [(n >> 8) & 0xff, n & 0xff]; } -function unpackI16(bytes) { return as_signed(bytes[0] << 8 | bytes[1], 16); } - -function packU16(n) { return [(n >> 8) & 0xff, n & 0xff]; } -function unpackU16(bytes) { return as_unsigned(bytes[0] << 8 | bytes[1], 16); } - -function packI32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; } -function unpackI32(bytes) { return as_signed(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); } - -function packU32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; } -function unpackU32(bytes) { return as_unsigned(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); } - -function packIEEE754(v, ebits, fbits) { - - var bias = (1 << (ebits - 1)) - 1, - s, e, f, ln, - i, bits, str, bytes; - - function roundToEven(n) { - var w = floor(n), f = n - w; - if (f < 0.5) - return w; - if (f > 0.5) - return w + 1; - return w % 2 ? w + 1 : w; - } - - // Compute sign, exponent, fraction - if (v !== v) { - // NaN - // http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping - e = (1 << ebits) - 1; f = pow(2, fbits - 1); s = 0; - } else if (v === Infinity || v === -Infinity) { - e = (1 << ebits) - 1; f = 0; s = (v < 0) ? 1 : 0; - } else if (v === 0) { - e = 0; f = 0; s = (1 / v === -Infinity) ? 1 : 0; - } else { - s = v < 0; - v = abs(v); - - if (v >= pow(2, 1 - bias)) { - e = min(floor(log(v) / LN2), 1023); - f = roundToEven(v / pow(2, e) * pow(2, fbits)); - if (f / pow(2, fbits) >= 2) { - e = e + 1; - f = 1; - } - if (e > bias) { - // Overflow - e = (1 << ebits) - 1; - f = 0; - } else { - // Normalized - e = e + bias; - f = f - pow(2, fbits); - } - } else { - // Denormalized - e = 0; - f = roundToEven(v / pow(2, 1 - bias - fbits)); - } - } - - // Pack sign, exponent, fraction - bits = []; - for (i = fbits; i; i -= 1) { bits.push(f % 2 ? 1 : 0); f = floor(f / 2); } - for (i = ebits; i; i -= 1) { bits.push(e % 2 ? 1 : 0); e = floor(e / 2); } - bits.push(s ? 1 : 0); - bits.reverse(); - str = bits.join(''); - - // Bits to bytes - bytes = []; - while (str.length) { - bytes.push(parseInt(str.substring(0, 8), 2)); - str = str.substring(8); - } - return bytes; -} - -function unpackIEEE754(bytes, ebits, fbits) { - - // Bytes to bits - var bits = [], i, j, b, str, - bias, s, e, f; - - for (i = bytes.length; i; i -= 1) { - b = bytes[i - 1]; - for (j = 8; j; j -= 1) { - bits.push(b % 2 ? 1 : 0); b = b >> 1; - } - } - bits.reverse(); - str = bits.join(''); - - // Unpack sign, exponent, fraction - bias = (1 << (ebits - 1)) - 1; - s = parseInt(str.substring(0, 1), 2) ? -1 : 1; - e = parseInt(str.substring(1, 1 + ebits), 2); - f = parseInt(str.substring(1 + ebits), 2); - - // Produce number - if (e === (1 << ebits) - 1) { - return f !== 0 ? NaN : s * Infinity; - } else if (e > 0) { - // Normalized - return s * pow(2, e - bias) * (1 + f / pow(2, fbits)); - } else if (f !== 0) { - // Denormalized - return s * pow(2, -(bias - 1)) * (f / pow(2, fbits)); - } else { - return s < 0 ? -0 : 0; - } -} - -function unpackF64(b) { return unpackIEEE754(b, 11, 52); } -function packF64(v) { return packIEEE754(v, 11, 52); } -function unpackF32(b) { return unpackIEEE754(b, 8, 23); } -function packF32(v) { return packIEEE754(v, 8, 23); } - - -// -// 3 The ArrayBuffer Type -// - -(function() { - - /** @constructor */ - var ArrayBuffer = function ArrayBuffer(length) { - length = ECMAScript.ToInt32(length); - if (length < 0) throw new RangeError('ArrayBuffer size is not a small enough positive integer'); - - this.byteLength = length; - this._bytes = []; - this._bytes.length = length; - - var i; - for (i = 0; i < this.byteLength; i += 1) { - this._bytes[i] = 0; - } - - configureProperties(this); - }; - - exports.ArrayBuffer = exports.ArrayBuffer || ArrayBuffer; - - // - // 4 The ArrayBufferView Type - // - - // NOTE: this constructor is not exported - /** @constructor */ - var ArrayBufferView = function ArrayBufferView() { - //this.buffer = null; - //this.byteOffset = 0; - //this.byteLength = 0; - }; - - // - // 5 The Typed Array View Types - // - - function makeConstructor(bytesPerElement, pack, unpack) { - // Each TypedArray type requires a distinct constructor instance with - // identical logic, which this produces. - - var ctor; - ctor = function(buffer, byteOffset, length) { - var array, sequence, i, s; - - if (!arguments.length || typeof arguments[0] === 'number') { - // Constructor(unsigned long length) - this.length = ECMAScript.ToInt32(arguments[0]); - if (length < 0) throw new RangeError('ArrayBufferView size is not a small enough positive integer'); - - this.byteLength = this.length * this.BYTES_PER_ELEMENT; - this.buffer = new ArrayBuffer(this.byteLength); - this.byteOffset = 0; - } else if (typeof arguments[0] === 'object' && arguments[0].constructor === ctor) { - // Constructor(TypedArray array) - array = arguments[0]; - - this.length = array.length; - this.byteLength = this.length * this.BYTES_PER_ELEMENT; - this.buffer = new ArrayBuffer(this.byteLength); - this.byteOffset = 0; - - for (i = 0; i < this.length; i += 1) { - this._setter(i, array._getter(i)); - } - } else if (typeof arguments[0] === 'object' && - !(arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) { - // Constructor(sequence array) - sequence = arguments[0]; - - this.length = ECMAScript.ToUint32(sequence.length); - this.byteLength = this.length * this.BYTES_PER_ELEMENT; - this.buffer = new ArrayBuffer(this.byteLength); - this.byteOffset = 0; - - for (i = 0; i < this.length; i += 1) { - s = sequence[i]; - this._setter(i, Number(s)); - } - } else if (typeof arguments[0] === 'object' && - (arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) { - // Constructor(ArrayBuffer buffer, - // optional unsigned long byteOffset, optional unsigned long length) - this.buffer = buffer; - - this.byteOffset = ECMAScript.ToUint32(byteOffset); - if (this.byteOffset > this.buffer.byteLength) { - throw new RangeError("byteOffset out of range"); - } - - if (this.byteOffset % this.BYTES_PER_ELEMENT) { - // The given byteOffset must be a multiple of the element - // size of the specific type, otherwise an exception is raised. - throw new RangeError("ArrayBuffer length minus the byteOffset is not a multiple of the element size."); - } - - if (arguments.length < 3) { - this.byteLength = this.buffer.byteLength - this.byteOffset; - - if (this.byteLength % this.BYTES_PER_ELEMENT) { - throw new RangeError("length of buffer minus byteOffset not a multiple of the element size"); - } - this.length = this.byteLength / this.BYTES_PER_ELEMENT; - } else { - this.length = ECMAScript.ToUint32(length); - this.byteLength = this.length * this.BYTES_PER_ELEMENT; - } - - if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) { - throw new RangeError("byteOffset and length reference an area beyond the end of the buffer"); - } - } else { - throw new TypeError("Unexpected argument type(s)"); - } - - this.constructor = ctor; - - configureProperties(this); - makeArrayAccessors(this); - }; - - ctor.prototype = new ArrayBufferView(); - ctor.prototype.BYTES_PER_ELEMENT = bytesPerElement; - ctor.prototype._pack = pack; - ctor.prototype._unpack = unpack; - ctor.BYTES_PER_ELEMENT = bytesPerElement; - - // getter type (unsigned long index); - ctor.prototype._getter = function(index) { - if (arguments.length < 1) throw new SyntaxError("Not enough arguments"); - - index = ECMAScript.ToUint32(index); - if (index >= this.length) { - return undefined; - } - - var bytes = [], i, o; - for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT; - i < this.BYTES_PER_ELEMENT; - i += 1, o += 1) { - bytes.push(this.buffer._bytes[o]); - } - return this._unpack(bytes); - }; - - // NONSTANDARD: convenience alias for getter: type get(unsigned long index); - ctor.prototype.get = ctor.prototype._getter; - - // setter void (unsigned long index, type value); - ctor.prototype._setter = function(index, value) { - if (arguments.length < 2) throw new SyntaxError("Not enough arguments"); - - index = ECMAScript.ToUint32(index); - if (index >= this.length) { - return undefined; - } - - var bytes = this._pack(value), i, o; - for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT; - i < this.BYTES_PER_ELEMENT; - i += 1, o += 1) { - this.buffer._bytes[o] = bytes[i]; - } - }; - - // void set(TypedArray array, optional unsigned long offset); - // void set(sequence array, optional unsigned long offset); - ctor.prototype.set = function(index, value) { - if (arguments.length < 1) throw new SyntaxError("Not enough arguments"); - var array, sequence, offset, len, - i, s, d, - byteOffset, byteLength, tmp; - - if (typeof arguments[0] === 'object' && arguments[0].constructor === this.constructor) { - // void set(TypedArray array, optional unsigned long offset); - array = arguments[0]; - offset = ECMAScript.ToUint32(arguments[1]); - - if (offset + array.length > this.length) { - throw new RangeError("Offset plus length of array is out of range"); - } - - byteOffset = this.byteOffset + offset * this.BYTES_PER_ELEMENT; - byteLength = array.length * this.BYTES_PER_ELEMENT; - - if (array.buffer === this.buffer) { - tmp = []; - for (i = 0, s = array.byteOffset; i < byteLength; i += 1, s += 1) { - tmp[i] = array.buffer._bytes[s]; - } - for (i = 0, d = byteOffset; i < byteLength; i += 1, d += 1) { - this.buffer._bytes[d] = tmp[i]; - } - } else { - for (i = 0, s = array.byteOffset, d = byteOffset; - i < byteLength; i += 1, s += 1, d += 1) { - this.buffer._bytes[d] = array.buffer._bytes[s]; - } - } - } else if (typeof arguments[0] === 'object' && typeof arguments[0].length !== 'undefined') { - // void set(sequence array, optional unsigned long offset); - sequence = arguments[0]; - len = ECMAScript.ToUint32(sequence.length); - offset = ECMAScript.ToUint32(arguments[1]); - - if (offset + len > this.length) { - throw new RangeError("Offset plus length of array is out of range"); - } - - for (i = 0; i < len; i += 1) { - s = sequence[i]; - this._setter(offset + i, Number(s)); - } - } else { - throw new TypeError("Unexpected argument type(s)"); - } - }; - - // TypedArray subarray(long begin, optional long end); - ctor.prototype.subarray = function(start, end) { - function clamp(v, min, max) { return v < min ? min : v > max ? max : v; } - - start = ECMAScript.ToInt32(start); - end = ECMAScript.ToInt32(end); - - if (arguments.length < 1) { start = 0; } - if (arguments.length < 2) { end = this.length; } - - if (start < 0) { start = this.length + start; } - if (end < 0) { end = this.length + end; } - - start = clamp(start, 0, this.length); - end = clamp(end, 0, this.length); - - var len = end - start; - if (len < 0) { - len = 0; - } - - return new this.constructor( - this.buffer, this.byteOffset + start * this.BYTES_PER_ELEMENT, len); - }; - - return ctor; - } - - var Int8Array = makeConstructor(1, packI8, unpackI8); - var Uint8Array = makeConstructor(1, packU8, unpackU8); - var Uint8ClampedArray = makeConstructor(1, packU8Clamped, unpackU8); - var Int16Array = makeConstructor(2, packI16, unpackI16); - var Uint16Array = makeConstructor(2, packU16, unpackU16); - var Int32Array = makeConstructor(4, packI32, unpackI32); - var Uint32Array = makeConstructor(4, packU32, unpackU32); - var Float32Array = makeConstructor(4, packF32, unpackF32); - var Float64Array = makeConstructor(8, packF64, unpackF64); - - exports.Int8Array = exports.Int8Array || Int8Array; - exports.Uint8Array = exports.Uint8Array || Uint8Array; - exports.Uint8ClampedArray = exports.Uint8ClampedArray || Uint8ClampedArray; - exports.Int16Array = exports.Int16Array || Int16Array; - exports.Uint16Array = exports.Uint16Array || Uint16Array; - exports.Int32Array = exports.Int32Array || Int32Array; - exports.Uint32Array = exports.Uint32Array || Uint32Array; - exports.Float32Array = exports.Float32Array || Float32Array; - exports.Float64Array = exports.Float64Array || Float64Array; -}()); - -// -// 6 The DataView View Type -// - -(function() { - function r(array, index) { - return ECMAScript.IsCallable(array.get) ? array.get(index) : array[index]; - } - - var IS_BIG_ENDIAN = (function() { - var u16array = new(exports.Uint16Array)([0x1234]), - u8array = new(exports.Uint8Array)(u16array.buffer); - return r(u8array, 0) === 0x12; - }()); - - // Constructor(ArrayBuffer buffer, - // optional unsigned long byteOffset, - // optional unsigned long byteLength) - /** @constructor */ - var DataView = function DataView(buffer, byteOffset, byteLength) { - if (arguments.length === 0) { - buffer = new exports.ArrayBuffer(0); - } else if (!(buffer instanceof exports.ArrayBuffer || ECMAScript.Class(buffer) === 'ArrayBuffer')) { - throw new TypeError("TypeError"); - } - - this.buffer = buffer || new exports.ArrayBuffer(0); - - this.byteOffset = ECMAScript.ToUint32(byteOffset); - if (this.byteOffset > this.buffer.byteLength) { - throw new RangeError("byteOffset out of range"); - } - - if (arguments.length < 3) { - this.byteLength = this.buffer.byteLength - this.byteOffset; - } else { - this.byteLength = ECMAScript.ToUint32(byteLength); - } - - if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) { - throw new RangeError("byteOffset and length reference an area beyond the end of the buffer"); - } - - configureProperties(this); - }; - - function makeGetter(arrayType) { - return function(byteOffset, littleEndian) { - - byteOffset = ECMAScript.ToUint32(byteOffset); - - if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) { - throw new RangeError("Array index out of range"); - } - byteOffset += this.byteOffset; - - var uint8Array = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT), - bytes = [], i; - for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) { - bytes.push(r(uint8Array, i)); - } - - if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) { - bytes.reverse(); - } - - return r(new arrayType(new exports.Uint8Array(bytes).buffer), 0); - }; - } - - DataView.prototype.getUint8 = makeGetter(exports.Uint8Array); - DataView.prototype.getInt8 = makeGetter(exports.Int8Array); - DataView.prototype.getUint16 = makeGetter(exports.Uint16Array); - DataView.prototype.getInt16 = makeGetter(exports.Int16Array); - DataView.prototype.getUint32 = makeGetter(exports.Uint32Array); - DataView.prototype.getInt32 = makeGetter(exports.Int32Array); - DataView.prototype.getFloat32 = makeGetter(exports.Float32Array); - DataView.prototype.getFloat64 = makeGetter(exports.Float64Array); - - function makeSetter(arrayType) { - return function(byteOffset, value, littleEndian) { - - byteOffset = ECMAScript.ToUint32(byteOffset); - if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) { - throw new RangeError("Array index out of range"); - } - - // Get bytes - var typeArray = new arrayType([value]), - byteArray = new exports.Uint8Array(typeArray.buffer), - bytes = [], i, byteView; - - for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) { - bytes.push(r(byteArray, i)); - } - - // Flip if necessary - if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) { - bytes.reverse(); - } - - // Write them - byteView = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT); - byteView.set(bytes); - }; - } - - DataView.prototype.setUint8 = makeSetter(exports.Uint8Array); - DataView.prototype.setInt8 = makeSetter(exports.Int8Array); - DataView.prototype.setUint16 = makeSetter(exports.Uint16Array); - DataView.prototype.setInt16 = makeSetter(exports.Int16Array); - DataView.prototype.setUint32 = makeSetter(exports.Uint32Array); - DataView.prototype.setInt32 = makeSetter(exports.Int32Array); - DataView.prototype.setFloat32 = makeSetter(exports.Float32Array); - DataView.prototype.setFloat64 = makeSetter(exports.Float64Array); - - exports.DataView = exports.DataView || DataView; - -}()); - -},{}],338:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -'use strict'; - -var punycode = require('punycode'); -var util = require('./util'); - -exports.parse = urlParse; -exports.resolve = urlResolve; -exports.resolveObject = urlResolveObject; -exports.format = urlFormat; - -exports.Url = Url; - -function Url() { - this.protocol = null; - this.slashes = null; - this.auth = null; - this.host = null; - this.port = null; - this.hostname = null; - this.hash = null; - this.search = null; - this.query = null; - this.pathname = null; - this.path = null; - this.href = null; -} - -// Reference: RFC 3986, RFC 1808, RFC 2396 - -// define these here so at least they only have to be -// compiled once on the first module load. -var protocolPattern = /^([a-z0-9.+-]+:)/i, - portPattern = /:[0-9]*$/, - - // Special case for a simple path URL - simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/, - - // RFC 2396: characters reserved for delimiting URLs. - // We actually just auto-escape these. - delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'], - - // RFC 2396: characters not allowed for various reasons. - unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), - - // Allowed by RFCs, but cause of XSS attacks. Always escape these. - autoEscape = ['\''].concat(unwise), - // Characters that are never ever allowed in a hostname. - // Note that any invalid chars are also handled, but these - // are the ones that are *expected* to be seen, so we fast-path - // them. - nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), - hostEndingChars = ['/', '?', '#'], - hostnameMaxLen = 255, - hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, - hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, - // protocols that can allow "unsafe" and "unwise" chars. - unsafeProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that never have a hostname. - hostlessProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that always contain a // bit. - slashedProtocol = { - 'http': true, - 'https': true, - 'ftp': true, - 'gopher': true, - 'file': true, - 'http:': true, - 'https:': true, - 'ftp:': true, - 'gopher:': true, - 'file:': true - }, - querystring = require('querystring'); - -function urlParse(url, parseQueryString, slashesDenoteHost) { - if (url && util.isObject(url) && url instanceof Url) return url; - - var u = new Url; - u.parse(url, parseQueryString, slashesDenoteHost); - return u; -} - -Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { - if (!util.isString(url)) { - throw new TypeError("Parameter 'url' must be a string, not " + typeof url); - } - - // Copy chrome, IE, opera backslash-handling behavior. - // Back slashes before the query string get converted to forward slashes - // See: https://code.google.com/p/chromium/issues/detail?id=25916 - var queryIndex = url.indexOf('?'), - splitter = - (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#', - uSplit = url.split(splitter), - slashRegex = /\\/g; - uSplit[0] = uSplit[0].replace(slashRegex, '/'); - url = uSplit.join(splitter); - - var rest = url; - - // trim before proceeding. - // This is to support parse stuff like " http://foo.com \n" - rest = rest.trim(); - - if (!slashesDenoteHost && url.split('#').length === 1) { - // Try fast path regexp - var simplePath = simplePathPattern.exec(rest); - if (simplePath) { - this.path = rest; - this.href = rest; - this.pathname = simplePath[1]; - if (simplePath[2]) { - this.search = simplePath[2]; - if (parseQueryString) { - this.query = querystring.parse(this.search.substr(1)); - } else { - this.query = this.search.substr(1); - } - } else if (parseQueryString) { - this.search = ''; - this.query = {}; - } - return this; - } - } - - var proto = protocolPattern.exec(rest); - if (proto) { - proto = proto[0]; - var lowerProto = proto.toLowerCase(); - this.protocol = lowerProto; - rest = rest.substr(proto.length); - } - - // figure out if it's got a host - // user@server is *always* interpreted as a hostname, and url - // resolution will treat //foo/bar as host=foo,path=bar because that's - // how the browser resolves relative URLs. - if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { - var slashes = rest.substr(0, 2) === '//'; - if (slashes && !(proto && hostlessProtocol[proto])) { - rest = rest.substr(2); - this.slashes = true; - } - } - - if (!hostlessProtocol[proto] && - (slashes || (proto && !slashedProtocol[proto]))) { - - // there's a hostname. - // the first instance of /, ?, ;, or # ends the host. - // - // If there is an @ in the hostname, then non-host chars *are* allowed - // to the left of the last @ sign, unless some host-ending character - // comes *before* the @-sign. - // URLs are obnoxious. - // - // ex: - // http://a@b@c/ => user:a@b host:c - // http://a@b?@c => user:a host:c path:/?@c - - // v0.12 TODO(isaacs): This is not quite how Chrome does things. - // Review our test case against browsers more comprehensively. - - // find the first instance of any hostEndingChars - var hostEnd = -1; - for (var i = 0; i < hostEndingChars.length; i++) { - var hec = rest.indexOf(hostEndingChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) - hostEnd = hec; - } - - // at this point, either we have an explicit point where the - // auth portion cannot go past, or the last @ char is the decider. - var auth, atSign; - if (hostEnd === -1) { - // atSign can be anywhere. - atSign = rest.lastIndexOf('@'); - } else { - // atSign must be in auth portion. - // http://a@b/c@d => host:b auth:a path:/c@d - atSign = rest.lastIndexOf('@', hostEnd); - } - - // Now we have a portion which is definitely the auth. - // Pull that off. - if (atSign !== -1) { - auth = rest.slice(0, atSign); - rest = rest.slice(atSign + 1); - this.auth = decodeURIComponent(auth); - } - - // the host is the remaining to the left of the first non-host char - hostEnd = -1; - for (var i = 0; i < nonHostChars.length; i++) { - var hec = rest.indexOf(nonHostChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) - hostEnd = hec; - } - // if we still have not hit it, then the entire thing is a host. - if (hostEnd === -1) - hostEnd = rest.length; - - this.host = rest.slice(0, hostEnd); - rest = rest.slice(hostEnd); - - // pull out port. - this.parseHost(); - - // we've indicated that there is a hostname, - // so even if it's empty, it has to be present. - this.hostname = this.hostname || ''; - - // if hostname begins with [ and ends with ] - // assume that it's an IPv6 address. - var ipv6Hostname = this.hostname[0] === '[' && - this.hostname[this.hostname.length - 1] === ']'; - - // validate a little. - if (!ipv6Hostname) { - var hostparts = this.hostname.split(/\./); - for (var i = 0, l = hostparts.length; i < l; i++) { - var part = hostparts[i]; - if (!part) continue; - if (!part.match(hostnamePartPattern)) { - var newpart = ''; - for (var j = 0, k = part.length; j < k; j++) { - if (part.charCodeAt(j) > 127) { - // we replace non-ASCII char with a temporary placeholder - // we need this to make sure size of hostname is not - // broken by replacing non-ASCII by nothing - newpart += 'x'; - } else { - newpart += part[j]; - } - } - // we test again with ASCII char only - if (!newpart.match(hostnamePartPattern)) { - var validParts = hostparts.slice(0, i); - var notHost = hostparts.slice(i + 1); - var bit = part.match(hostnamePartStart); - if (bit) { - validParts.push(bit[1]); - notHost.unshift(bit[2]); - } - if (notHost.length) { - rest = '/' + notHost.join('.') + rest; - } - this.hostname = validParts.join('.'); - break; - } - } - } - } - - if (this.hostname.length > hostnameMaxLen) { - this.hostname = ''; - } else { - // hostnames are always lower case. - this.hostname = this.hostname.toLowerCase(); - } - - if (!ipv6Hostname) { - // IDNA Support: Returns a punycoded representation of "domain". - // It only converts parts of the domain name that - // have non-ASCII characters, i.e. it doesn't matter if - // you call it with a domain that already is ASCII-only. - this.hostname = punycode.toASCII(this.hostname); - } - - var p = this.port ? ':' + this.port : ''; - var h = this.hostname || ''; - this.host = h + p; - this.href += this.host; - - // strip [ and ] from the hostname - // the host field still retains them, though - if (ipv6Hostname) { - this.hostname = this.hostname.substr(1, this.hostname.length - 2); - if (rest[0] !== '/') { - rest = '/' + rest; - } - } - } - - // now rest is set to the post-host stuff. - // chop off any delim chars. - if (!unsafeProtocol[lowerProto]) { - - // First, make 100% sure that any "autoEscape" chars get - // escaped, even if encodeURIComponent doesn't think they - // need to be. - for (var i = 0, l = autoEscape.length; i < l; i++) { - var ae = autoEscape[i]; - if (rest.indexOf(ae) === -1) - continue; - var esc = encodeURIComponent(ae); - if (esc === ae) { - esc = escape(ae); - } - rest = rest.split(ae).join(esc); - } - } - - - // chop off from the tail first. - var hash = rest.indexOf('#'); - if (hash !== -1) { - // got a fragment string. - this.hash = rest.substr(hash); - rest = rest.slice(0, hash); - } - var qm = rest.indexOf('?'); - if (qm !== -1) { - this.search = rest.substr(qm); - this.query = rest.substr(qm + 1); - if (parseQueryString) { - this.query = querystring.parse(this.query); - } - rest = rest.slice(0, qm); - } else if (parseQueryString) { - // no query string, but parseQueryString still requested - this.search = ''; - this.query = {}; - } - if (rest) this.pathname = rest; - if (slashedProtocol[lowerProto] && - this.hostname && !this.pathname) { - this.pathname = '/'; - } - - //to support http.request - if (this.pathname || this.search) { - var p = this.pathname || ''; - var s = this.search || ''; - this.path = p + s; - } - - // finally, reconstruct the href based on what has been validated. - this.href = this.format(); - return this; -}; - -// format a parsed object into a url string -function urlFormat(obj) { - // ensure it's an object, and not a string url. - // If it's an obj, this is a no-op. - // this way, you can call url_format() on strings - // to clean up potentially wonky urls. - if (util.isString(obj)) obj = urlParse(obj); - if (!(obj instanceof Url)) return Url.prototype.format.call(obj); - return obj.format(); -} - -Url.prototype.format = function() { - var auth = this.auth || ''; - if (auth) { - auth = encodeURIComponent(auth); - auth = auth.replace(/%3A/i, ':'); - auth += '@'; - } - - var protocol = this.protocol || '', - pathname = this.pathname || '', - hash = this.hash || '', - host = false, - query = ''; - - if (this.host) { - host = auth + this.host; - } else if (this.hostname) { - host = auth + (this.hostname.indexOf(':') === -1 ? - this.hostname : - '[' + this.hostname + ']'); - if (this.port) { - host += ':' + this.port; - } - } - - if (this.query && - util.isObject(this.query) && - Object.keys(this.query).length) { - query = querystring.stringify(this.query); - } - - var search = this.search || (query && ('?' + query)) || ''; - - if (protocol && protocol.substr(-1) !== ':') protocol += ':'; - - // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. - // unless they had them to begin with. - if (this.slashes || - (!protocol || slashedProtocol[protocol]) && host !== false) { - host = '//' + (host || ''); - if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; - } else if (!host) { - host = ''; - } - - if (hash && hash.charAt(0) !== '#') hash = '#' + hash; - if (search && search.charAt(0) !== '?') search = '?' + search; - - pathname = pathname.replace(/[?#]/g, function(match) { - return encodeURIComponent(match); - }); - search = search.replace('#', '%23'); - - return protocol + host + pathname + search + hash; -}; - -function urlResolve(source, relative) { - return urlParse(source, false, true).resolve(relative); -} - -Url.prototype.resolve = function(relative) { - return this.resolveObject(urlParse(relative, false, true)).format(); -}; - -function urlResolveObject(source, relative) { - if (!source) return relative; - return urlParse(source, false, true).resolveObject(relative); -} - -Url.prototype.resolveObject = function(relative) { - if (util.isString(relative)) { - var rel = new Url(); - rel.parse(relative, false, true); - relative = rel; - } - - var result = new Url(); - var tkeys = Object.keys(this); - for (var tk = 0; tk < tkeys.length; tk++) { - var tkey = tkeys[tk]; - result[tkey] = this[tkey]; - } - - // hash is always overridden, no matter what. - // even href="" will remove it. - result.hash = relative.hash; - - // if the relative url is empty, then there's nothing left to do here. - if (relative.href === '') { - result.href = result.format(); - return result; - } - - // hrefs like //foo/bar always cut to the protocol. - if (relative.slashes && !relative.protocol) { - // take everything except the protocol from relative - var rkeys = Object.keys(relative); - for (var rk = 0; rk < rkeys.length; rk++) { - var rkey = rkeys[rk]; - if (rkey !== 'protocol') - result[rkey] = relative[rkey]; - } - - //urlParse appends trailing / to urls like http://www.example.com - if (slashedProtocol[result.protocol] && - result.hostname && !result.pathname) { - result.path = result.pathname = '/'; - } - - result.href = result.format(); - return result; - } - - if (relative.protocol && relative.protocol !== result.protocol) { - // if it's a known url protocol, then changing - // the protocol does weird things - // first, if it's not file:, then we MUST have a host, - // and if there was a path - // to begin with, then we MUST have a path. - // if it is file:, then the host is dropped, - // because that's known to be hostless. - // anything else is assumed to be absolute. - if (!slashedProtocol[relative.protocol]) { - var keys = Object.keys(relative); - for (var v = 0; v < keys.length; v++) { - var k = keys[v]; - result[k] = relative[k]; - } - result.href = result.format(); - return result; - } - - result.protocol = relative.protocol; - if (!relative.host && !hostlessProtocol[relative.protocol]) { - var relPath = (relative.pathname || '').split('/'); - while (relPath.length && !(relative.host = relPath.shift())); - if (!relative.host) relative.host = ''; - if (!relative.hostname) relative.hostname = ''; - if (relPath[0] !== '') relPath.unshift(''); - if (relPath.length < 2) relPath.unshift(''); - result.pathname = relPath.join('/'); - } else { - result.pathname = relative.pathname; - } - result.search = relative.search; - result.query = relative.query; - result.host = relative.host || ''; - result.auth = relative.auth; - result.hostname = relative.hostname || relative.host; - result.port = relative.port; - // to support http.request - if (result.pathname || result.search) { - var p = result.pathname || ''; - var s = result.search || ''; - result.path = p + s; - } - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; - } - - var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), - isRelAbs = ( - relative.host || - relative.pathname && relative.pathname.charAt(0) === '/' - ), - mustEndAbs = (isRelAbs || isSourceAbs || - (result.host && relative.pathname)), - removeAllDots = mustEndAbs, - srcPath = result.pathname && result.pathname.split('/') || [], - relPath = relative.pathname && relative.pathname.split('/') || [], - psychotic = result.protocol && !slashedProtocol[result.protocol]; - - // if the url is a non-slashed url, then relative - // links like ../.. should be able - // to crawl up to the hostname, as well. This is strange. - // result.protocol has already been set by now. - // Later on, put the first path part into the host field. - if (psychotic) { - result.hostname = ''; - result.port = null; - if (result.host) { - if (srcPath[0] === '') srcPath[0] = result.host; - else srcPath.unshift(result.host); - } - result.host = ''; - if (relative.protocol) { - relative.hostname = null; - relative.port = null; - if (relative.host) { - if (relPath[0] === '') relPath[0] = relative.host; - else relPath.unshift(relative.host); - } - relative.host = null; - } - mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); - } - - if (isRelAbs) { - // it's absolute. - result.host = (relative.host || relative.host === '') ? - relative.host : result.host; - result.hostname = (relative.hostname || relative.hostname === '') ? - relative.hostname : result.hostname; - result.search = relative.search; - result.query = relative.query; - srcPath = relPath; - // fall through to the dot-handling below. - } else if (relPath.length) { - // it's relative - // throw away the existing file, and take the new path instead. - if (!srcPath) srcPath = []; - srcPath.pop(); - srcPath = srcPath.concat(relPath); - result.search = relative.search; - result.query = relative.query; - } else if (!util.isNullOrUndefined(relative.search)) { - // just pull out the search. - // like href='?foo'. - // Put this after the other two cases because it simplifies the booleans - if (psychotic) { - result.hostname = result.host = srcPath.shift(); - //occationaly the auth can get stuck only in host - //this especially happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = result.host && result.host.indexOf('@') > 0 ? - result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.host = result.hostname = authInHost.shift(); - } - } - result.search = relative.search; - result.query = relative.query; - //to support http.request - if (!util.isNull(result.pathname) || !util.isNull(result.search)) { - result.path = (result.pathname ? result.pathname : '') + - (result.search ? result.search : ''); - } - result.href = result.format(); - return result; - } - - if (!srcPath.length) { - // no path at all. easy. - // we've already handled the other stuff above. - result.pathname = null; - //to support http.request - if (result.search) { - result.path = '/' + result.search; - } else { - result.path = null; - } - result.href = result.format(); - return result; - } - - // if a url ENDs in . or .., then it must get a trailing slash. - // however, if it ends in anything else non-slashy, - // then it must NOT get a trailing slash. - var last = srcPath.slice(-1)[0]; - var hasTrailingSlash = ( - (result.host || relative.host || srcPath.length > 1) && - (last === '.' || last === '..') || last === ''); - - // strip single dots, resolve double dots to parent dir - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = srcPath.length; i >= 0; i--) { - last = srcPath[i]; - if (last === '.') { - srcPath.splice(i, 1); - } else if (last === '..') { - srcPath.splice(i, 1); - up++; - } else if (up) { - srcPath.splice(i, 1); - up--; - } - } - - // if the path is allowed to go above the root, restore leading ..s - if (!mustEndAbs && !removeAllDots) { - for (; up--; up) { - srcPath.unshift('..'); - } - } - - if (mustEndAbs && srcPath[0] !== '' && - (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { - srcPath.unshift(''); - } - - if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { - srcPath.push(''); - } - - var isAbsolute = srcPath[0] === '' || - (srcPath[0] && srcPath[0].charAt(0) === '/'); - - // put the host back - if (psychotic) { - result.hostname = result.host = isAbsolute ? '' : - srcPath.length ? srcPath.shift() : ''; - //occationaly the auth can get stuck only in host - //this especially happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = result.host && result.host.indexOf('@') > 0 ? - result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.host = result.hostname = authInHost.shift(); - } - } - - mustEndAbs = mustEndAbs || (result.host && srcPath.length); - - if (mustEndAbs && !isAbsolute) { - srcPath.unshift(''); - } - - if (!srcPath.length) { - result.pathname = null; - result.path = null; - } else { - result.pathname = srcPath.join('/'); - } - - //to support request.http - if (!util.isNull(result.pathname) || !util.isNull(result.search)) { - result.path = (result.pathname ? result.pathname : '') + - (result.search ? result.search : ''); - } - result.auth = relative.auth || result.auth; - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; -}; - -Url.prototype.parseHost = function() { - var host = this.host; - var port = portPattern.exec(host); - if (port) { - port = port[0]; - if (port !== ':') { - this.port = port.substr(1); - } - host = host.substr(0, host.length - port.length); - } - if (host) this.hostname = host; -}; - -},{"./util":339,"punycode":292,"querystring":295}],339:[function(require,module,exports){ -'use strict'; - -module.exports = { - isString: function(arg) { - return typeof(arg) === 'string'; - }, - isObject: function(arg) { - return typeof(arg) === 'object' && arg !== null; - }, - isNull: function(arg) { - return arg === null; - }, - isNullOrUndefined: function(arg) { - return arg == null; - } -}; - -},{}],340:[function(require,module,exports){ -(function (global){ - -/** - * Module exports. - */ - -module.exports = deprecate; - -/** - * Mark that a method should not be used. - * Returns a modified function which warns once by default. - * - * If `localStorage.noDeprecation = true` is set, then it is a no-op. - * - * If `localStorage.throwDeprecation = true` is set, then deprecated functions - * will throw an Error when invoked. - * - * If `localStorage.traceDeprecation = true` is set, then deprecated functions - * will invoke `console.trace()` instead of `console.error()`. - * - * @param {Function} fn - the function to deprecate - * @param {String} msg - the string to print to the console when `fn` is invoked - * @returns {Function} a new "deprecated" version of `fn` - * @api public - */ - -function deprecate (fn, msg) { - if (config('noDeprecation')) { - return fn; - } - - var warned = false; - function deprecated() { - if (!warned) { - if (config('throwDeprecation')) { - throw new Error(msg); - } else if (config('traceDeprecation')) { - console.trace(msg); - } else { - console.warn(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } - - return deprecated; -} - -/** - * Checks `localStorage` for boolean values for the given `name`. - * - * @param {String} name - * @returns {Boolean} - * @api private - */ - -function config (name) { - // accessing global.localStorage can trigger a DOMException in sandboxed iframes - try { - if (!global.localStorage) return false; - } catch (_) { - return false; - } - var val = global.localStorage[name]; - if (null == val) return false; - return String(val).toLowerCase() === 'true'; -} - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],341:[function(require,module,exports){ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} - -},{}],342:[function(require,module,exports){ -module.exports = function isBuffer(arg) { - return arg && typeof arg === 'object' - && typeof arg.copy === 'function' - && typeof arg.fill === 'function' - && typeof arg.readUInt8 === 'function'; -} -},{}],343:[function(require,module,exports){ -(function (process,global){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -var formatRegExp = /%[sdj%]/g; -exports.format = function(f) { - if (!isString(f)) { - var objects = []; - for (var i = 0; i < arguments.length; i++) { - objects.push(inspect(arguments[i])); - } - return objects.join(' '); - } - - var i = 1; - var args = arguments; - var len = args.length; - var str = String(f).replace(formatRegExp, function(x) { - if (x === '%%') return '%'; - if (i >= len) return x; - switch (x) { - case '%s': return String(args[i++]); - case '%d': return Number(args[i++]); - case '%j': - try { - return JSON.stringify(args[i++]); - } catch (_) { - return '[Circular]'; - } - default: - return x; - } - }); - for (var x = args[i]; i < len; x = args[++i]) { - if (isNull(x) || !isObject(x)) { - str += ' ' + x; - } else { - str += ' ' + inspect(x); - } - } - return str; -}; - - -// Mark that a method should not be used. -// Returns a modified function which warns once by default. -// If --no-deprecation is set, then it is a no-op. -exports.deprecate = function(fn, msg) { - // Allow for deprecating things in the process of starting up. - if (isUndefined(global.process)) { - return function() { - return exports.deprecate(fn, msg).apply(this, arguments); - }; - } - - if (process.noDeprecation === true) { - return fn; - } - - var warned = false; - function deprecated() { - if (!warned) { - if (process.throwDeprecation) { - throw new Error(msg); - } else if (process.traceDeprecation) { - console.trace(msg); - } else { - console.error(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } - - return deprecated; -}; - - -var debugs = {}; -var debugEnviron; -exports.debuglog = function(set) { - if (isUndefined(debugEnviron)) - debugEnviron = process.env.NODE_DEBUG || ''; - set = set.toUpperCase(); - if (!debugs[set]) { - if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { - var pid = process.pid; - debugs[set] = function() { - var msg = exports.format.apply(exports, arguments); - console.error('%s %d: %s', set, pid, msg); - }; - } else { - debugs[set] = function() {}; - } - } - return debugs[set]; -}; - - -/** - * Echos the value of a value. Trys to print the value out - * in the best way possible given the different types. - * - * @param {Object} obj The object to print out. - * @param {Object} opts Optional options object that alters the output. - */ -/* legacy: obj, showHidden, depth, colors*/ -function inspect(obj, opts) { - // default options - var ctx = { - seen: [], - stylize: stylizeNoColor - }; - // legacy... - if (arguments.length >= 3) ctx.depth = arguments[2]; - if (arguments.length >= 4) ctx.colors = arguments[3]; - if (isBoolean(opts)) { - // legacy... - ctx.showHidden = opts; - } else if (opts) { - // got an "options" object - exports._extend(ctx, opts); - } - // set default options - if (isUndefined(ctx.showHidden)) ctx.showHidden = false; - if (isUndefined(ctx.depth)) ctx.depth = 2; - if (isUndefined(ctx.colors)) ctx.colors = false; - if (isUndefined(ctx.customInspect)) ctx.customInspect = true; - if (ctx.colors) ctx.stylize = stylizeWithColor; - return formatValue(ctx, obj, ctx.depth); -} -exports.inspect = inspect; - - -// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics -inspect.colors = { - 'bold' : [1, 22], - 'italic' : [3, 23], - 'underline' : [4, 24], - 'inverse' : [7, 27], - 'white' : [37, 39], - 'grey' : [90, 39], - 'black' : [30, 39], - 'blue' : [34, 39], - 'cyan' : [36, 39], - 'green' : [32, 39], - 'magenta' : [35, 39], - 'red' : [31, 39], - 'yellow' : [33, 39] -}; - -// Don't use 'blue' not visible on cmd.exe -inspect.styles = { - 'special': 'cyan', - 'number': 'yellow', - 'boolean': 'yellow', - 'undefined': 'grey', - 'null': 'bold', - 'string': 'green', - 'date': 'magenta', - // "name": intentionally not styling - 'regexp': 'red' -}; - - -function stylizeWithColor(str, styleType) { - var style = inspect.styles[styleType]; - - if (style) { - return '\u001b[' + inspect.colors[style][0] + 'm' + str + - '\u001b[' + inspect.colors[style][1] + 'm'; - } else { - return str; - } -} - - -function stylizeNoColor(str, styleType) { - return str; -} - - -function arrayToHash(array) { - var hash = {}; - - array.forEach(function(val, idx) { - hash[val] = true; - }); - - return hash; -} - - -function formatValue(ctx, value, recurseTimes) { - // Provide a hook for user-specified inspect functions. - // Check that value is an object with an inspect function on it - if (ctx.customInspect && - value && - isFunction(value.inspect) && - // Filter out the util module, it's inspect function is special - value.inspect !== exports.inspect && - // Also filter out any prototype objects using the circular check. - !(value.constructor && value.constructor.prototype === value)) { - var ret = value.inspect(recurseTimes, ctx); - if (!isString(ret)) { - ret = formatValue(ctx, ret, recurseTimes); - } - return ret; - } - - // Primitive types cannot have properties - var primitive = formatPrimitive(ctx, value); - if (primitive) { - return primitive; - } - - // Look up the keys of the object. - var keys = Object.keys(value); - var visibleKeys = arrayToHash(keys); - - if (ctx.showHidden) { - keys = Object.getOwnPropertyNames(value); - } - - // IE doesn't make error fields non-enumerable - // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx - if (isError(value) - && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { - return formatError(value); - } - - // Some type of object without properties can be shortcutted. - if (keys.length === 0) { - if (isFunction(value)) { - var name = value.name ? ': ' + value.name : ''; - return ctx.stylize('[Function' + name + ']', 'special'); - } - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } - if (isDate(value)) { - return ctx.stylize(Date.prototype.toString.call(value), 'date'); - } - if (isError(value)) { - return formatError(value); - } - } - - var base = '', array = false, braces = ['{', '}']; - - // Make Array say that they are Array - if (isArray(value)) { - array = true; - braces = ['[', ']']; - } - - // Make functions say that they are functions - if (isFunction(value)) { - var n = value.name ? ': ' + value.name : ''; - base = ' [Function' + n + ']'; - } - - // Make RegExps say that they are RegExps - if (isRegExp(value)) { - base = ' ' + RegExp.prototype.toString.call(value); - } - - // Make dates with properties first say the date - if (isDate(value)) { - base = ' ' + Date.prototype.toUTCString.call(value); - } - - // Make error with message first say the error - if (isError(value)) { - base = ' ' + formatError(value); - } - - if (keys.length === 0 && (!array || value.length == 0)) { - return braces[0] + base + braces[1]; - } - - if (recurseTimes < 0) { - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } else { - return ctx.stylize('[Object]', 'special'); - } - } - - ctx.seen.push(value); - - var output; - if (array) { - output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); - } else { - output = keys.map(function(key) { - return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); - }); - } - - ctx.seen.pop(); - - return reduceToSingleString(output, base, braces); -} - - -function formatPrimitive(ctx, value) { - if (isUndefined(value)) - return ctx.stylize('undefined', 'undefined'); - if (isString(value)) { - var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') + '\''; - return ctx.stylize(simple, 'string'); - } - if (isNumber(value)) - return ctx.stylize('' + value, 'number'); - if (isBoolean(value)) - return ctx.stylize('' + value, 'boolean'); - // For some reason typeof null is "object", so special case here. - if (isNull(value)) - return ctx.stylize('null', 'null'); -} - - -function formatError(value) { - return '[' + Error.prototype.toString.call(value) + ']'; -} - - -function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { - var output = []; - for (var i = 0, l = value.length; i < l; ++i) { - if (hasOwnProperty(value, String(i))) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - String(i), true)); - } else { - output.push(''); - } - } - keys.forEach(function(key) { - if (!key.match(/^\d+$/)) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - key, true)); - } - }); - return output; -} - - -function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { - var name, str, desc; - desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; - if (desc.get) { - if (desc.set) { - str = ctx.stylize('[Getter/Setter]', 'special'); - } else { - str = ctx.stylize('[Getter]', 'special'); - } - } else { - if (desc.set) { - str = ctx.stylize('[Setter]', 'special'); - } - } - if (!hasOwnProperty(visibleKeys, key)) { - name = '[' + key + ']'; - } - if (!str) { - if (ctx.seen.indexOf(desc.value) < 0) { - if (isNull(recurseTimes)) { - str = formatValue(ctx, desc.value, null); - } else { - str = formatValue(ctx, desc.value, recurseTimes - 1); - } - if (str.indexOf('\n') > -1) { - if (array) { - str = str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n').substr(2); - } else { - str = '\n' + str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n'); - } - } - } else { - str = ctx.stylize('[Circular]', 'special'); - } - } - if (isUndefined(name)) { - if (array && key.match(/^\d+$/)) { - return str; - } - name = JSON.stringify('' + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = ctx.stylize(name, 'name'); - } else { - name = name.replace(/'/g, "\\'") - .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); - name = ctx.stylize(name, 'string'); - } - } - - return name + ': ' + str; -} - - -function reduceToSingleString(output, base, braces) { - var numLinesEst = 0; - var length = output.reduce(function(prev, cur) { - numLinesEst++; - if (cur.indexOf('\n') >= 0) numLinesEst++; - return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; - }, 0); - - if (length > 60) { - return braces[0] + - (base === '' ? '' : base + '\n ') + - ' ' + - output.join(',\n ') + - ' ' + - braces[1]; - } - - return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; -} - - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && - (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -exports.isBuffer = require('./support/isBuffer'); - -function objectToString(o) { - return Object.prototype.toString.call(o); -} - - -function pad(n) { - return n < 10 ? '0' + n.toString(10) : n.toString(10); -} - - -var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', - 'Oct', 'Nov', 'Dec']; - -// 26 Feb 16:19:34 -function timestamp() { - var d = new Date(); - var time = [pad(d.getHours()), - pad(d.getMinutes()), - pad(d.getSeconds())].join(':'); - return [d.getDate(), months[d.getMonth()], time].join(' '); -} - - -// log is just a thin wrapper to console.log that prepends a timestamp -exports.log = function() { - console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); -}; - - -/** - * Inherit the prototype methods from one constructor into another. - * - * The Function.prototype.inherits from lang.js rewritten as a standalone - * function (not on Function.prototype). NOTE: If this file is to be loaded - * during bootstrapping this function needs to be rewritten using some native - * functions as prototype setup using normal JavaScript does not work as - * expected during bootstrapping (see mirror.js in r114903). - * - * @param {function} ctor Constructor function which needs to inherit the - * prototype. - * @param {function} superCtor Constructor function to inherit prototype from. - */ -exports.inherits = require('inherits'); - -exports._extend = function(origin, add) { - // Don't do anything if add isn't an object - if (!add || !isObject(add)) return origin; - - var keys = Object.keys(add); - var i = keys.length; - while (i--) { - origin[keys[i]] = add[keys[i]]; - } - return origin; -}; - -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./support/isBuffer":342,"_process":284,"inherits":341}],344:[function(require,module,exports){ -var indexOf = require('indexof'); - -var Object_keys = function (obj) { - if (Object.keys) return Object.keys(obj) - else { - var res = []; - for (var key in obj) res.push(key) - return res; - } -}; - -var forEach = function (xs, fn) { - if (xs.forEach) return xs.forEach(fn) - else for (var i = 0; i < xs.length; i++) { - fn(xs[i], i, xs); - } -}; - -var defineProp = (function() { - try { - Object.defineProperty({}, '_', {}); - return function(obj, name, value) { - Object.defineProperty(obj, name, { - writable: true, - enumerable: false, - configurable: true, - value: value - }) - }; - } catch(e) { - return function(obj, name, value) { - obj[name] = value; - }; - } -}()); - -var globals = ['Array', 'Boolean', 'Date', 'Error', 'EvalError', 'Function', -'Infinity', 'JSON', 'Math', 'NaN', 'Number', 'Object', 'RangeError', -'ReferenceError', 'RegExp', 'String', 'SyntaxError', 'TypeError', 'URIError', -'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'escape', -'eval', 'isFinite', 'isNaN', 'parseFloat', 'parseInt', 'undefined', 'unescape']; - -function Context() {} -Context.prototype = {}; - -var Script = exports.Script = function NodeScript (code) { - if (!(this instanceof Script)) return new Script(code); - this.code = code; -}; - -Script.prototype.runInContext = function (context) { - if (!(context instanceof Context)) { - throw new TypeError("needs a 'context' argument."); - } - - var iframe = document.createElement('iframe'); - if (!iframe.style) iframe.style = {}; - iframe.style.display = 'none'; - - document.body.appendChild(iframe); - - var win = iframe.contentWindow; - var wEval = win.eval, wExecScript = win.execScript; - - if (!wEval && wExecScript) { - // win.eval() magically appears when this is called in IE: - wExecScript.call(win, 'null'); - wEval = win.eval; - } - - forEach(Object_keys(context), function (key) { - win[key] = context[key]; - }); - forEach(globals, function (key) { - if (context[key]) { - win[key] = context[key]; - } - }); - - var winKeys = Object_keys(win); - - var res = wEval.call(win, this.code); - - forEach(Object_keys(win), function (key) { - // Avoid copying circular objects like `top` and `window` by only - // updating existing context properties or new properties in the `win` - // that was only introduced after the eval. - if (key in context || indexOf(winKeys, key) === -1) { - context[key] = win[key]; - } - }); - - forEach(globals, function (key) { - if (!(key in context)) { - defineProp(context, key, win[key]); - } - }); - - document.body.removeChild(iframe); - - return res; -}; - -Script.prototype.runInThisContext = function () { - return eval(this.code); // maybe... -}; - -Script.prototype.runInNewContext = function (context) { - var ctx = Script.createContext(context); - var res = this.runInContext(ctx); - - forEach(Object_keys(ctx), function (key) { - context[key] = ctx[key]; - }); - - return res; -}; - -forEach(Object_keys(Script.prototype), function (name) { - exports[name] = Script[name] = function (code) { - var s = Script(code); - return s[name].apply(s, [].slice.call(arguments, 1)); - }; -}); - -exports.createScript = function (code) { - return exports.Script(code); -}; - -exports.createContext = Script.createContext = function (context) { - var copy = new Context(); - if(typeof context === 'object') { - forEach(Object_keys(context), function (key) { - copy[key] = context[key]; - }); - } - return copy; -}; - -},{"indexof":261}],345:[function(require,module,exports){ -var Pbf = require('pbf') -var GeoJSONWrapper = require('./lib/geojson_wrapper') - -module.exports = fromVectorTileJs -module.exports.fromVectorTileJs = fromVectorTileJs -module.exports.fromGeojsonVt = fromGeojsonVt -module.exports.GeoJSONWrapper = GeoJSONWrapper - -/** - * Serialize a vector-tile-js-created tile to pbf - * - * @param {Object} tile - * @return {Buffer} uncompressed, pbf-serialized tile data - */ -function fromVectorTileJs (tile) { - var out = new Pbf() - writeTile(tile, out) - return out.finish() -} - -/** - * Serialized a geojson-vt-created tile to pbf. - * - * @param {Object} layers - An object mapping layer names to geojson-vt-created vector tile objects - * @param {Object} [options] - An object specifying the vector-tile specification version and extent that were used to create `layers`. - * @param {Number} [options.version=1] - Version of vector-tile spec used - * @param {Number} [options.extent=4096] - Extent of the vector tile - * @return {Buffer} uncompressed, pbf-serialized tile data - */ -function fromGeojsonVt (layers, options) { - options = options || {} - var l = {} - for (var k in layers) { - l[k] = new GeoJSONWrapper(layers[k].features, options) - l[k].name = k - l[k].version = options.version - l[k].extent = options.extent - } - return fromVectorTileJs({layers: l}) -} - -function writeTile (tile, pbf) { - for (var key in tile.layers) { - pbf.writeMessage(3, writeLayer, tile.layers[key]) - } -} - -function writeLayer (layer, pbf) { - pbf.writeVarintField(15, layer.version || 1) - pbf.writeStringField(1, layer.name || '') - pbf.writeVarintField(5, layer.extent || 4096) - - var i - var context = { - keys: [], - values: [], - keycache: {}, - valuecache: {} - } - - for (i = 0; i < layer.length; i++) { - context.feature = layer.feature(i) - pbf.writeMessage(2, writeFeature, context) - } - - var keys = context.keys - for (i = 0; i < keys.length; i++) { - pbf.writeStringField(3, keys[i]) - } - - var values = context.values - for (i = 0; i < values.length; i++) { - pbf.writeMessage(4, writeValue, values[i]) - } -} - -function writeFeature (context, pbf) { - var feature = context.feature - - if (feature.id !== undefined) { - pbf.writeVarintField(1, feature.id) - } - - pbf.writeMessage(2, writeProperties, context) - pbf.writeVarintField(3, feature.type) - pbf.writeMessage(4, writeGeometry, feature) -} - -function writeProperties (context, pbf) { - var feature = context.feature - var keys = context.keys - var values = context.values - var keycache = context.keycache - var valuecache = context.valuecache - - for (var key in feature.properties) { - var keyIndex = keycache[key] - if (typeof keyIndex === 'undefined') { - keys.push(key) - keyIndex = keys.length - 1 - keycache[key] = keyIndex - } - pbf.writeVarint(keyIndex) - - var value = feature.properties[key] - var type = typeof value - if (type !== 'string' && type !== 'boolean' && type !== 'number') { - value = JSON.stringify(value) - } - var valueKey = type + ':' + value - var valueIndex = valuecache[valueKey] - if (typeof valueIndex === 'undefined') { - values.push(value) - valueIndex = values.length - 1 - valuecache[valueKey] = valueIndex - } - pbf.writeVarint(valueIndex) - } -} - -function command (cmd, length) { - return (length << 3) + (cmd & 0x7) -} - -function zigzag (num) { - return (num << 1) ^ (num >> 31) -} - -function writeGeometry (feature, pbf) { - var geometry = feature.loadGeometry() - var type = feature.type - var x = 0 - var y = 0 - var rings = geometry.length - for (var r = 0; r < rings; r++) { - var ring = geometry[r] - var count = 1 - if (type === 1) { - count = ring.length - } - pbf.writeVarint(command(1, count)) // moveto - // do not write polygon closing path as lineto - var lineCount = type === 3 ? ring.length - 1 : ring.length - for (var i = 0; i < lineCount; i++) { - if (i === 1 && type !== 1) { - pbf.writeVarint(command(2, lineCount - 1)) // lineto - } - var dx = ring[i].x - x - var dy = ring[i].y - y - pbf.writeVarint(zigzag(dx)) - pbf.writeVarint(zigzag(dy)) - x += dx - y += dy - } - if (type === 3) { - pbf.writeVarint(command(7, 1)) // closepath - } - } -} - -function writeValue (value, pbf) { - var type = typeof value - if (type === 'string') { - pbf.writeStringField(1, value) - } else if (type === 'boolean') { - pbf.writeBooleanField(7, value) - } else if (type === 'number') { - if (value % 1 !== 0) { - pbf.writeDoubleField(3, value) - } else if (value < 0) { - pbf.writeSVarintField(6, value) - } else { - pbf.writeVarintField(5, value) - } - } -} - -},{"./lib/geojson_wrapper":346,"pbf":277}],346:[function(require,module,exports){ -'use strict' - -var Point = require('@mapbox/point-geometry') -var VectorTileFeature = require('@mapbox/vector-tile').VectorTileFeature - -module.exports = GeoJSONWrapper - -// conform to vectortile api -function GeoJSONWrapper (features, options) { - this.options = options || {} - this.features = features - this.length = features.length -} - -GeoJSONWrapper.prototype.feature = function (i) { - return new FeatureWrapper(this.features[i], this.options.extent) -} - -function FeatureWrapper (feature, extent) { - this.id = typeof feature.id === 'number' ? feature.id : undefined - this.type = feature.type - this.rawGeometry = feature.type === 1 ? [feature.geometry] : feature.geometry - this.properties = feature.tags - this.extent = extent || 4096 -} - -FeatureWrapper.prototype.loadGeometry = function () { - var rings = this.rawGeometry - this.geometry = [] - - for (var i = 0; i < rings.length; i++) { - var ring = rings[i] - var newRing = [] - for (var j = 0; j < ring.length; j++) { - newRing.push(new Point(ring[j][0], ring[j][1])) - } - this.geometry.push(newRing) - } - return this.geometry -} - -FeatureWrapper.prototype.bbox = function () { - if (!this.geometry) this.loadGeometry() - - var rings = this.geometry - var x1 = Infinity - var x2 = -Infinity - var y1 = Infinity - var y2 = -Infinity - - for (var i = 0; i < rings.length; i++) { - var ring = rings[i] - - for (var j = 0; j < ring.length; j++) { - var coord = ring[j] - - x1 = Math.min(x1, coord.x) - x2 = Math.max(x2, coord.x) - y1 = Math.min(y1, coord.y) - y2 = Math.max(y2, coord.y) - } - } - - return [x1, y1, x2, y2] -} - -FeatureWrapper.prototype.toGeoJSON = VectorTileFeature.prototype.toGeoJSON - -},{"@mapbox/point-geometry":112,"@mapbox/vector-tile":113}],347:[function(require,module,exports){ -var bundleFn = arguments[3]; -var sources = arguments[4]; -var cache = arguments[5]; - -var stringify = JSON.stringify; - -module.exports = function (fn, options) { - var wkey; - var cacheKeys = Object.keys(cache); - - for (var i = 0, l = cacheKeys.length; i < l; i++) { - var key = cacheKeys[i]; - var exp = cache[key].exports; - // Using babel as a transpiler to use esmodule, the export will always - // be an object with the default export as a property of it. To ensure - // the existing api and babel esmodule exports are both supported we - // check for both - if (exp === fn || exp && exp.default === fn) { - wkey = key; - break; - } - } - - if (!wkey) { - wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16); - var wcache = {}; - for (var i = 0, l = cacheKeys.length; i < l; i++) { - var key = cacheKeys[i]; - wcache[key] = key; - } - sources[wkey] = [ - 'function(require,module,exports){' + fn + '(self); }', - wcache - ]; - } - var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16); - - var scache = {}; scache[wkey] = wkey; - sources[skey] = [ - 'function(require,module,exports){' + - // try to call default if defined to also support babel esmodule exports - 'var f = require(' + stringify(wkey) + ');' + - '(f.default ? f.default : f)(self);' + - '}', - scache - ]; - - var workerSources = {}; - resolveSources(skey); - - function resolveSources(key) { - workerSources[key] = true; - - for (var depPath in sources[key][1]) { - var depKey = sources[key][1][depPath]; - if (!workerSources[depKey]) { - resolveSources(depKey); - } - } - } - - var src = '(' + bundleFn + ')({' - + Object.keys(workerSources).map(function (key) { - return stringify(key) + ':[' - + sources[key][0] - + ',' + stringify(sources[key][1]) + ']' - ; - }).join(',') - + '},{},[' + stringify(skey) + '])' - ; - - var URL = window.URL || window.webkitURL || window.mozURL || window.msURL; - - var blob = new Blob([src], { type: 'text/javascript' }); - if (options && options.bare) { return blob; } - var workerUrl = URL.createObjectURL(blob); - var worker = new Worker(workerUrl); - worker.objectURL = workerUrl; - return worker; -}; - -},{}],348:[function(require,module,exports){ -(function (Buffer){ -module.exports = BinaryReader; - -function BinaryReader(buffer, isBigEndian) { - this.buffer = buffer; - this.position = 0; - this.isBigEndian = isBigEndian || false; -} - -function _read(readLE, readBE, size) { - return function () { - var value; - - if (this.isBigEndian) - value = readBE.call(this.buffer, this.position); - else - value = readLE.call(this.buffer, this.position); - - this.position += size; - - return value; - }; -} - -BinaryReader.prototype.readUInt8 = _read(Buffer.prototype.readUInt8, Buffer.prototype.readUInt8, 1); -BinaryReader.prototype.readUInt16 = _read(Buffer.prototype.readUInt16LE, Buffer.prototype.readUInt16BE, 2); -BinaryReader.prototype.readUInt32 = _read(Buffer.prototype.readUInt32LE, Buffer.prototype.readUInt32BE, 4); -BinaryReader.prototype.readInt8 = _read(Buffer.prototype.readInt8, Buffer.prototype.readInt8, 1); -BinaryReader.prototype.readInt16 = _read(Buffer.prototype.readInt16LE, Buffer.prototype.readInt16BE, 2); -BinaryReader.prototype.readInt32 = _read(Buffer.prototype.readInt32LE, Buffer.prototype.readInt32BE, 4); -BinaryReader.prototype.readFloat = _read(Buffer.prototype.readFloatLE, Buffer.prototype.readFloatBE, 4); -BinaryReader.prototype.readDouble = _read(Buffer.prototype.readDoubleLE, Buffer.prototype.readDoubleBE, 8); - -BinaryReader.prototype.readVarInt = function () { - var nextByte, - result = 0, - bytesRead = 0; - - do { - nextByte = this.buffer[this.position + bytesRead]; - result += (nextByte & 0x7F) << (7 * bytesRead); - bytesRead++; - } while (nextByte >= 0x80); - - this.position += bytesRead; - - return result; -}; - -}).call(this,require("buffer").Buffer) -},{"buffer":182}],349:[function(require,module,exports){ -(function (Buffer){ -module.exports = BinaryWriter; - -function BinaryWriter(size, allowResize) { - this.buffer = new Buffer(size); - this.position = 0; - this.allowResize = allowResize; -} - -function _write(write, size) { - return function (value, noAssert) { - this.ensureSize(size); - - write.call(this.buffer, value, this.position, noAssert); - this.position += size; - }; -} - -BinaryWriter.prototype.writeUInt8 = _write(Buffer.prototype.writeUInt8, 1); -BinaryWriter.prototype.writeUInt16LE = _write(Buffer.prototype.writeUInt16LE, 2); -BinaryWriter.prototype.writeUInt16BE = _write(Buffer.prototype.writeUInt16BE, 2); -BinaryWriter.prototype.writeUInt32LE = _write(Buffer.prototype.writeUInt32LE, 4); -BinaryWriter.prototype.writeUInt32BE = _write(Buffer.prototype.writeUInt32BE, 4); -BinaryWriter.prototype.writeInt8 = _write(Buffer.prototype.writeInt8, 1); -BinaryWriter.prototype.writeInt16LE = _write(Buffer.prototype.writeInt16LE, 2); -BinaryWriter.prototype.writeInt16BE = _write(Buffer.prototype.writeInt16BE, 2); -BinaryWriter.prototype.writeInt32LE = _write(Buffer.prototype.writeInt32LE, 4); -BinaryWriter.prototype.writeInt32BE = _write(Buffer.prototype.writeInt32BE, 4); -BinaryWriter.prototype.writeFloatLE = _write(Buffer.prototype.writeFloatLE, 4); -BinaryWriter.prototype.writeFloatBE = _write(Buffer.prototype.writeFloatBE, 4); -BinaryWriter.prototype.writeDoubleLE = _write(Buffer.prototype.writeDoubleLE, 8); -BinaryWriter.prototype.writeDoubleBE = _write(Buffer.prototype.writeDoubleBE, 8); - -BinaryWriter.prototype.writeBuffer = function (buffer) { - this.ensureSize(buffer.length); - - buffer.copy(this.buffer, this.position, 0, buffer.length); - this.position += buffer.length; -}; - -BinaryWriter.prototype.writeVarInt = function (value) { - var length = 1; - - while ((value & 0xFFFFFF80) !== 0) { - this.writeUInt8((value & 0x7F) | 0x80); - value >>>= 7; - length++; - } - - this.writeUInt8(value & 0x7F); - - return length; -}; - -BinaryWriter.prototype.ensureSize = function (size) { - if (this.buffer.length < this.position + size) { - if (this.allowResize) { - var tempBuffer = new Buffer(this.position + size); - this.buffer.copy(tempBuffer, 0, 0, this.buffer.length); - this.buffer = tempBuffer; - } - else { - throw new RangeError('index out of range'); - } - } -}; - -}).call(this,require("buffer").Buffer) -},{"buffer":182}],350:[function(require,module,exports){ -(function (Buffer){ -module.exports = Geometry; - -var Types = require('./types'); -var Point = require('./point'); -var LineString = require('./linestring'); -var Polygon = require('./polygon'); -var MultiPoint = require('./multipoint'); -var MultiLineString = require('./multilinestring'); -var MultiPolygon = require('./multipolygon'); -var GeometryCollection = require('./geometrycollection'); -var BinaryReader = require('./binaryreader'); -var BinaryWriter = require('./binarywriter'); -var WktParser = require('./wktparser'); -var ZigZag = require('./zigzag.js'); - -function Geometry() { - this.srid = undefined; - this.hasZ = false; - this.hasM = false; -} - -Geometry.parse = function (value, options) { - var valueType = typeof value; - - if (valueType === 'string' || value instanceof WktParser) - return Geometry._parseWkt(value); - else if (Buffer.isBuffer(value) || value instanceof BinaryReader) - return Geometry._parseWkb(value, options); - else - throw new Error('first argument must be a string or Buffer'); -}; - -Geometry._parseWkt = function (value) { - var wktParser, - srid; - - if (value instanceof WktParser) - wktParser = value; - else - wktParser = new WktParser(value); - - var match = wktParser.matchRegex([/^SRID=(\d+);/]); - if (match) - srid = parseInt(match[1], 10); - - var geometryType = wktParser.matchType(); - var dimension = wktParser.matchDimension(); - - var options = { - srid: srid, - hasZ: dimension.hasZ, - hasM: dimension.hasM - }; - - switch (geometryType) { - case Types.wkt.Point: - return Point._parseWkt(wktParser, options); - case Types.wkt.LineString: - return LineString._parseWkt(wktParser, options); - case Types.wkt.Polygon: - return Polygon._parseWkt(wktParser, options); - case Types.wkt.MultiPoint: - return MultiPoint._parseWkt(wktParser, options); - case Types.wkt.MultiLineString: - return MultiLineString._parseWkt(wktParser, options); - case Types.wkt.MultiPolygon: - return MultiPolygon._parseWkt(wktParser, options); - case Types.wkt.GeometryCollection: - return GeometryCollection._parseWkt(wktParser, options); - } -}; - -Geometry._parseWkb = function (value, parentOptions) { - var binaryReader, - wkbType, - geometryType, - options = {}; - - if (value instanceof BinaryReader) - binaryReader = value; - else - binaryReader = new BinaryReader(value); - - binaryReader.isBigEndian = !binaryReader.readInt8(); - - wkbType = binaryReader.readUInt32(); - - options.hasSrid = (wkbType & 0x20000000) === 0x20000000; - options.isEwkb = (wkbType & 0x20000000) || (wkbType & 0x40000000) || (wkbType & 0x80000000); - - if (options.hasSrid) - options.srid = binaryReader.readUInt32(); - - options.hasZ = false; - options.hasM = false; - - if (!options.isEwkb && (!parentOptions || !parentOptions.isEwkb)) { - if (wkbType >= 1000 && wkbType < 2000) { - options.hasZ = true; - geometryType = wkbType - 1000; - } - else if (wkbType >= 2000 && wkbType < 3000) { - options.hasM = true; - geometryType = wkbType - 2000; - } - else if (wkbType >= 3000 && wkbType < 4000) { - options.hasZ = true; - options.hasM = true; - geometryType = wkbType - 3000; - } - else { - geometryType = wkbType; - } - } - else { - if (wkbType & 0x80000000) - options.hasZ = true; - if (wkbType & 0x40000000) - options.hasM = true; - - geometryType = wkbType & 0xF; - } - - switch (geometryType) { - case Types.wkb.Point: - return Point._parseWkb(binaryReader, options); - case Types.wkb.LineString: - return LineString._parseWkb(binaryReader, options); - case Types.wkb.Polygon: - return Polygon._parseWkb(binaryReader, options); - case Types.wkb.MultiPoint: - return MultiPoint._parseWkb(binaryReader, options); - case Types.wkb.MultiLineString: - return MultiLineString._parseWkb(binaryReader, options); - case Types.wkb.MultiPolygon: - return MultiPolygon._parseWkb(binaryReader, options); - case Types.wkb.GeometryCollection: - return GeometryCollection._parseWkb(binaryReader, options); - default: - throw new Error('GeometryType ' + geometryType + ' not supported'); - } -}; - -Geometry.parseTwkb = function (value) { - var binaryReader, - options = {}; - - if (value instanceof BinaryReader) - binaryReader = value; - else - binaryReader = new BinaryReader(value); - - var type = binaryReader.readUInt8(); - var metadataHeader = binaryReader.readUInt8(); - - var geometryType = type & 0x0F; - options.precision = ZigZag.decode(type >> 4); - options.precisionFactor = Math.pow(10, options.precision); - - options.hasBoundingBox = metadataHeader >> 0 & 1; - options.hasSizeAttribute = metadataHeader >> 1 & 1; - options.hasIdList = metadataHeader >> 2 & 1; - options.hasExtendedPrecision = metadataHeader >> 3 & 1; - options.isEmpty = metadataHeader >> 4 & 1; - - if (options.hasExtendedPrecision) { - var extendedPrecision = binaryReader.readUInt8(); - options.hasZ = (extendedPrecision & 0x01) === 0x01; - options.hasM = (extendedPrecision & 0x02) === 0x02; - - options.zPrecision = ZigZag.decode((extendedPrecision & 0x1C) >> 2); - options.zPrecisionFactor = Math.pow(10, options.zPrecision); - - options.mPrecision = ZigZag.decode((extendedPrecision & 0xE0) >> 5); - options.mPrecisionFactor = Math.pow(10, options.mPrecision); - } - else { - options.hasZ = false; - options.hasM = false; - } - - if (options.hasSizeAttribute) - binaryReader.readVarInt(); - if (options.hasBoundingBox) { - var dimensions = 2; - - if (options.hasZ) - dimensions++; - if (options.hasM) - dimensions++; - - for (var i = 0; i < dimensions; i++) { - binaryReader.readVarInt(); - binaryReader.readVarInt(); - } - } - - switch (geometryType) { - case Types.wkb.Point: - return Point._parseTwkb(binaryReader, options); - case Types.wkb.LineString: - return LineString._parseTwkb(binaryReader, options); - case Types.wkb.Polygon: - return Polygon._parseTwkb(binaryReader, options); - case Types.wkb.MultiPoint: - return MultiPoint._parseTwkb(binaryReader, options); - case Types.wkb.MultiLineString: - return MultiLineString._parseTwkb(binaryReader, options); - case Types.wkb.MultiPolygon: - return MultiPolygon._parseTwkb(binaryReader, options); - case Types.wkb.GeometryCollection: - return GeometryCollection._parseTwkb(binaryReader, options); - default: - throw new Error('GeometryType ' + geometryType + ' not supported'); - } -}; - -Geometry.parseGeoJSON = function (value) { - return Geometry._parseGeoJSON(value); -}; - -Geometry._parseGeoJSON = function (value, isSubGeometry) { - var geometry; - - switch (value.type) { - case Types.geoJSON.Point: - geometry = Point._parseGeoJSON(value); break; - case Types.geoJSON.LineString: - geometry = LineString._parseGeoJSON(value); break; - case Types.geoJSON.Polygon: - geometry = Polygon._parseGeoJSON(value); break; - case Types.geoJSON.MultiPoint: - geometry = MultiPoint._parseGeoJSON(value); break; - case Types.geoJSON.MultiLineString: - geometry = MultiLineString._parseGeoJSON(value); break; - case Types.geoJSON.MultiPolygon: - geometry = MultiPolygon._parseGeoJSON(value); break; - case Types.geoJSON.GeometryCollection: - geometry = GeometryCollection._parseGeoJSON(value); break; - default: - throw new Error('GeometryType ' + value.type + ' not supported'); - } - - if (value.crs && value.crs.type && value.crs.type === 'name' && value.crs.properties && value.crs.properties.name) { - var crs = value.crs.properties.name; - - if (crs.indexOf('EPSG:') === 0) - geometry.srid = parseInt(crs.substring(5)); - else if (crs.indexOf('urn:ogc:def:crs:EPSG::') === 0) - geometry.srid = parseInt(crs.substring(22)); - else - throw new Error('Unsupported crs: ' + crs); - } - else if (!isSubGeometry) { - geometry.srid = 4326; - } - - return geometry; -}; - -Geometry.prototype.toEwkt = function () { - return 'SRID=' + this.srid + ';' + this.toWkt(); -}; - -Geometry.prototype.toEwkb = function () { - var ewkb = new BinaryWriter(this._getWkbSize() + 4); - var wkb = this.toWkb(); - - ewkb.writeInt8(1); - ewkb.writeUInt32LE(wkb.slice(1, 5).readUInt32LE(0) | 0x20000000, true); - ewkb.writeUInt32LE(this.srid); - - ewkb.writeBuffer(wkb.slice(5)); - - return ewkb.buffer; -}; - -Geometry.prototype._getWktType = function (wktType, isEmpty) { - var wkt = wktType; - - if (this.hasZ && this.hasM) - wkt += ' ZM '; - else if (this.hasZ) - wkt += ' Z '; - else if (this.hasM) - wkt += ' M '; - - if (isEmpty && !this.hasZ && !this.hasM) - wkt += ' '; - - if (isEmpty) - wkt += 'EMPTY'; - - return wkt; -}; - -Geometry.prototype._getWktCoordinate = function (point) { - var coordinates = point.x + ' ' + point.y; - - if (this.hasZ) - coordinates += ' ' + point.z; - if (this.hasM) - coordinates += ' ' + point.m; - - return coordinates; -}; - -Geometry.prototype._writeWkbType = function (wkb, geometryType, parentOptions) { - var dimensionType = 0; - - if (typeof this.srid === 'undefined' && (!parentOptions || typeof parentOptions.srid === 'undefined')) { - if (this.hasZ && this.hasM) - dimensionType += 3000; - else if(this.hasZ) - dimensionType += 1000; - else if(this.hasM) - dimensionType += 2000; - } - else { - if (this.hasZ) - dimensionType |= 0x80000000; - if (this.hasM) - dimensionType |= 0x40000000; - } - - wkb.writeUInt32LE(dimensionType + geometryType, true); -}; - -Geometry.getTwkbPrecision = function (xyPrecision, zPrecision, mPrecision) { - return { - xy: xyPrecision, - z: zPrecision, - m: mPrecision, - xyFactor: Math.pow(10, xyPrecision), - zFactor: Math.pow(10, zPrecision), - mFactor: Math.pow(10, mPrecision) - }; -}; - -Geometry.prototype._writeTwkbHeader = function (twkb, geometryType, precision, isEmpty) { - var type = (ZigZag.encode(precision.xy) << 4) + geometryType; - var metadataHeader = (this.hasZ || this.hasM) << 3; - metadataHeader += isEmpty << 4; - - twkb.writeUInt8(type); - twkb.writeUInt8(metadataHeader); - - if (this.hasZ || this.hasM) { - var extendedPrecision = 0; - if (this.hasZ) - extendedPrecision |= 0x1; - if (this.hasM) - extendedPrecision |= 0x2; - - twkb.writeUInt8(extendedPrecision); - } -}; - -Geometry.prototype.toGeoJSON = function (options) { - var geoJSON = {}; - - if (this.srid) { - if (options) { - if (options.shortCrs) { - geoJSON.crs = { - type: 'name', - properties: { - name: 'EPSG:' + this.srid - } - }; - } - else if (options.longCrs) { - geoJSON.crs = { - type: 'name', - properties: { - name: 'urn:ogc:def:crs:EPSG::' + this.srid - } - }; - } - } - } - - return geoJSON; -}; - -}).call(this,{"isBuffer":require("../../is-buffer/index.js")}) -},{"../../is-buffer/index.js":263,"./binaryreader":348,"./binarywriter":349,"./geometrycollection":351,"./linestring":352,"./multilinestring":353,"./multipoint":354,"./multipolygon":355,"./point":356,"./polygon":357,"./types":358,"./wktparser":359,"./zigzag.js":361}],351:[function(require,module,exports){ -module.exports = GeometryCollection; - -var util = require('util'); - -var Types = require('./types'); -var Geometry = require('./geometry'); -var BinaryWriter = require('./binarywriter'); - -function GeometryCollection(geometries, srid) { - Geometry.call(this); - - this.geometries = geometries || []; - this.srid = srid; - - if (this.geometries.length > 0) { - this.hasZ = this.geometries[0].hasZ; - this.hasM = this.geometries[0].hasM; - } -} - -util.inherits(GeometryCollection, Geometry); - -GeometryCollection.Z = function (geometries, srid) { - var geometryCollection = new GeometryCollection(geometries, srid); - geometryCollection.hasZ = true; - return geometryCollection; -}; - -GeometryCollection.M = function (geometries, srid) { - var geometryCollection = new GeometryCollection(geometries, srid); - geometryCollection.hasM = true; - return geometryCollection; -}; - -GeometryCollection.ZM = function (geometries, srid) { - var geometryCollection = new GeometryCollection(geometries, srid); - geometryCollection.hasZ = true; - geometryCollection.hasM = true; - return geometryCollection; -}; - -GeometryCollection._parseWkt = function (value, options) { - var geometryCollection = new GeometryCollection(); - geometryCollection.srid = options.srid; - geometryCollection.hasZ = options.hasZ; - geometryCollection.hasM = options.hasM; - - if (value.isMatch(['EMPTY'])) - return geometryCollection; - - value.expectGroupStart(); - - do { - geometryCollection.geometries.push(Geometry.parse(value)); - } while (value.isMatch([','])); - - value.expectGroupEnd(); - - return geometryCollection; -}; - -GeometryCollection._parseWkb = function (value, options) { - var geometryCollection = new GeometryCollection(); - geometryCollection.srid = options.srid; - geometryCollection.hasZ = options.hasZ; - geometryCollection.hasM = options.hasM; - - var geometryCount = value.readUInt32(); - - for (var i = 0; i < geometryCount; i++) - geometryCollection.geometries.push(Geometry.parse(value, options)); - - return geometryCollection; -}; - -GeometryCollection._parseTwkb = function (value, options) { - var geometryCollection = new GeometryCollection(); - geometryCollection.hasZ = options.hasZ; - geometryCollection.hasM = options.hasM; - - if (options.isEmpty) - return geometryCollection; - - var geometryCount = value.readVarInt(); - - for (var i = 0; i < geometryCount; i++) - geometryCollection.geometries.push(Geometry.parseTwkb(value)); - - return geometryCollection; -}; - -GeometryCollection._parseGeoJSON = function (value) { - var geometryCollection = new GeometryCollection(); - - for (var i = 0; i < value.geometries.length; i++) - geometryCollection.geometries.push(Geometry._parseGeoJSON(value.geometries[i], true)); - - if (geometryCollection.geometries.length > 0) - geometryCollection.hasZ = geometryCollection.geometries[0].hasZ; - - return geometryCollection; -}; - -GeometryCollection.prototype.toWkt = function () { - if (this.geometries.length === 0) - return this._getWktType(Types.wkt.GeometryCollection, true); - - var wkt = this._getWktType(Types.wkt.GeometryCollection, false) + '('; - - for (var i = 0; i < this.geometries.length; i++) - wkt += this.geometries[i].toWkt() + ','; - - wkt = wkt.slice(0, -1); - wkt += ')'; - - return wkt; -}; - -GeometryCollection.prototype.toWkb = function () { - var wkb = new BinaryWriter(this._getWkbSize()); - - wkb.writeInt8(1); - - this._writeWkbType(wkb, Types.wkb.GeometryCollection); - wkb.writeUInt32LE(this.geometries.length); - - for (var i = 0; i < this.geometries.length; i++) - wkb.writeBuffer(this.geometries[i].toWkb({ srid: this.srid })); - - return wkb.buffer; -}; - -GeometryCollection.prototype.toTwkb = function () { - var twkb = new BinaryWriter(0, true); - - var precision = Geometry.getTwkbPrecision(5, 0, 0); - var isEmpty = this.geometries.length === 0; - - this._writeTwkbHeader(twkb, Types.wkb.GeometryCollection, precision, isEmpty); - - if (this.geometries.length > 0) { - twkb.writeVarInt(this.geometries.length); - - for (var i = 0; i < this.geometries.length; i++) - twkb.writeBuffer(this.geometries[i].toTwkb()); - } - - return twkb.buffer; -}; - -GeometryCollection.prototype._getWkbSize = function () { - var size = 1 + 4 + 4; - - for (var i = 0; i < this.geometries.length; i++) - size += this.geometries[i]._getWkbSize(); - - return size; -}; - -GeometryCollection.prototype.toGeoJSON = function (options) { - var geoJSON = Geometry.prototype.toGeoJSON.call(this, options); - geoJSON.type = Types.geoJSON.GeometryCollection; - geoJSON.geometries = []; - - for (var i = 0; i < this.geometries.length; i++) - geoJSON.geometries.push(this.geometries[i].toGeoJSON()); - - return geoJSON; -}; - -},{"./binarywriter":349,"./geometry":350,"./types":358,"util":343}],352:[function(require,module,exports){ -module.exports = LineString; - -var util = require('util'); - -var Geometry = require('./geometry'); -var Types = require('./types'); -var Point = require('./point'); -var BinaryWriter = require('./binarywriter'); - -function LineString(points, srid) { - Geometry.call(this); - - this.points = points || []; - this.srid = srid; - - if (this.points.length > 0) { - this.hasZ = this.points[0].hasZ; - this.hasM = this.points[0].hasM; - } -} - -util.inherits(LineString, Geometry); - -LineString.Z = function (points, srid) { - var lineString = new LineString(points, srid); - lineString.hasZ = true; - return lineString; -}; - -LineString.M = function (points, srid) { - var lineString = new LineString(points, srid); - lineString.hasM = true; - return lineString; -}; - -LineString.ZM = function (points, srid) { - var lineString = new LineString(points, srid); - lineString.hasZ = true; - lineString.hasM = true; - return lineString; -}; - -LineString._parseWkt = function (value, options) { - var lineString = new LineString(); - lineString.srid = options.srid; - lineString.hasZ = options.hasZ; - lineString.hasM = options.hasM; - - if (value.isMatch(['EMPTY'])) - return lineString; - - value.expectGroupStart(); - lineString.points.push.apply(lineString.points, value.matchCoordinates(options)); - value.expectGroupEnd(); - - return lineString; -}; - -LineString._parseWkb = function (value, options) { - var lineString = new LineString(); - lineString.srid = options.srid; - lineString.hasZ = options.hasZ; - lineString.hasM = options.hasM; - - var pointCount = value.readUInt32(); - - for (var i = 0; i < pointCount; i++) - lineString.points.push(Point._readWkbPoint(value, options)); - - return lineString; -}; - -LineString._parseTwkb = function (value, options) { - var lineString = new LineString(); - lineString.hasZ = options.hasZ; - lineString.hasM = options.hasM; - - if (options.isEmpty) - return lineString; - - var previousPoint = new Point(0, 0, options.hasZ ? 0 : undefined, options.hasM ? 0 : undefined); - var pointCount = value.readVarInt(); - - for (var i = 0; i < pointCount; i++) - lineString.points.push(Point._readTwkbPoint(value, options, previousPoint)); - - return lineString; -}; - -LineString._parseGeoJSON = function (value) { - var lineString = new LineString(); - - if (value.coordinates.length > 0) - lineString.hasZ = value.coordinates[0].length > 2; - - for (var i = 0; i < value.coordinates.length; i++) - lineString.points.push(Point._readGeoJSONPoint(value.coordinates[i])); - - return lineString; -}; - -LineString.prototype.toWkt = function () { - if (this.points.length === 0) - return this._getWktType(Types.wkt.LineString, true); - - return this._getWktType(Types.wkt.LineString, false) + this._toInnerWkt(); -}; - -LineString.prototype._toInnerWkt = function () { - var innerWkt = '('; - - for (var i = 0; i < this.points.length; i++) - innerWkt += this._getWktCoordinate(this.points[i]) + ','; - - innerWkt = innerWkt.slice(0, -1); - innerWkt += ')'; - - return innerWkt; -}; - -LineString.prototype.toWkb = function (parentOptions) { - var wkb = new BinaryWriter(this._getWkbSize()); - - wkb.writeInt8(1); - - this._writeWkbType(wkb, Types.wkb.LineString, parentOptions); - wkb.writeUInt32LE(this.points.length); - - for (var i = 0; i < this.points.length; i++) - this.points[i]._writeWkbPoint(wkb); - - return wkb.buffer; -}; - -LineString.prototype.toTwkb = function () { - var twkb = new BinaryWriter(0, true); - - var precision = Geometry.getTwkbPrecision(5, 0, 0); - var isEmpty = this.points.length === 0; - - this._writeTwkbHeader(twkb, Types.wkb.LineString, precision, isEmpty); - - if (this.points.length > 0) { - twkb.writeVarInt(this.points.length); - - var previousPoint = new Point(0, 0, 0, 0); - for (var i = 0; i < this.points.length; i++) - this.points[i]._writeTwkbPoint(twkb, precision, previousPoint); - } - - return twkb.buffer; -}; - -LineString.prototype._getWkbSize = function () { - var coordinateSize = 16; - - if (this.hasZ) - coordinateSize += 8; - if (this.hasM) - coordinateSize += 8; - - return 1 + 4 + 4 + (this.points.length * coordinateSize); -}; - -LineString.prototype.toGeoJSON = function (options) { - var geoJSON = Geometry.prototype.toGeoJSON.call(this, options); - geoJSON.type = Types.geoJSON.LineString; - geoJSON.coordinates = []; - - for (var i = 0; i < this.points.length; i++) { - if (this.hasZ) - geoJSON.coordinates.push([this.points[i].x, this.points[i].y, this.points[i].z]); - else - geoJSON.coordinates.push([this.points[i].x, this.points[i].y]); - } - - return geoJSON; -}; - -},{"./binarywriter":349,"./geometry":350,"./point":356,"./types":358,"util":343}],353:[function(require,module,exports){ -module.exports = MultiLineString; - -var util = require('util'); - -var Types = require('./types'); -var Geometry = require('./geometry'); -var Point = require('./point'); -var LineString = require('./linestring'); -var BinaryWriter = require('./binarywriter'); - -function MultiLineString(lineStrings, srid) { - Geometry.call(this); - - this.lineStrings = lineStrings || []; - this.srid = srid; - - if (this.lineStrings.length > 0) { - this.hasZ = this.lineStrings[0].hasZ; - this.hasM = this.lineStrings[0].hasM; - } -} - -util.inherits(MultiLineString, Geometry); - -MultiLineString.Z = function (lineStrings, srid) { - var multiLineString = new MultiLineString(lineStrings, srid); - multiLineString.hasZ = true; - return multiLineString; -}; - -MultiLineString.M = function (lineStrings, srid) { - var multiLineString = new MultiLineString(lineStrings, srid); - multiLineString.hasM = true; - return multiLineString; -}; - -MultiLineString.ZM = function (lineStrings, srid) { - var multiLineString = new MultiLineString(lineStrings, srid); - multiLineString.hasZ = true; - multiLineString.hasM = true; - return multiLineString; -}; - -MultiLineString._parseWkt = function (value, options) { - var multiLineString = new MultiLineString(); - multiLineString.srid = options.srid; - multiLineString.hasZ = options.hasZ; - multiLineString.hasM = options.hasM; - - if (value.isMatch(['EMPTY'])) - return multiLineString; - - value.expectGroupStart(); - - do { - value.expectGroupStart(); - multiLineString.lineStrings.push(new LineString(value.matchCoordinates(options))); - value.expectGroupEnd(); - } while (value.isMatch([','])); - - value.expectGroupEnd(); - - return multiLineString; -}; - -MultiLineString._parseWkb = function (value, options) { - var multiLineString = new MultiLineString(); - multiLineString.srid = options.srid; - multiLineString.hasZ = options.hasZ; - multiLineString.hasM = options.hasM; - - var lineStringCount = value.readUInt32(); - - for (var i = 0; i < lineStringCount; i++) - multiLineString.lineStrings.push(Geometry.parse(value, options)); - - return multiLineString; -}; - -MultiLineString._parseTwkb = function (value, options) { - var multiLineString = new MultiLineString(); - multiLineString.hasZ = options.hasZ; - multiLineString.hasM = options.hasM; - - if (options.isEmpty) - return multiLineString; - - var previousPoint = new Point(0, 0, options.hasZ ? 0 : undefined, options.hasM ? 0 : undefined); - var lineStringCount = value.readVarInt(); - - for (var i = 0; i < lineStringCount; i++) { - var lineString = new LineString(); - lineString.hasZ = options.hasZ; - lineString.hasM = options.hasM; - - var pointCount = value.readVarInt(); - - for (var j = 0; j < pointCount; j++) - lineString.points.push(Point._readTwkbPoint(value, options, previousPoint)); - - multiLineString.lineStrings.push(lineString); - } - - return multiLineString; -}; - -MultiLineString._parseGeoJSON = function (value) { - var multiLineString = new MultiLineString(); - - if (value.coordinates.length > 0 && value.coordinates[0].length > 0) - multiLineString.hasZ = value.coordinates[0][0].length > 2; - - for (var i = 0; i < value.coordinates.length; i++) - multiLineString.lineStrings.push(LineString._parseGeoJSON({ coordinates: value.coordinates[i] })); - - return multiLineString; -}; - -MultiLineString.prototype.toWkt = function () { - if (this.lineStrings.length === 0) - return this._getWktType(Types.wkt.MultiLineString, true); - - var wkt = this._getWktType(Types.wkt.MultiLineString, false) + '('; - - for (var i = 0; i < this.lineStrings.length; i++) - wkt += this.lineStrings[i]._toInnerWkt() + ','; - - wkt = wkt.slice(0, -1); - wkt += ')'; - - return wkt; -}; - -MultiLineString.prototype.toWkb = function () { - var wkb = new BinaryWriter(this._getWkbSize()); - - wkb.writeInt8(1); - - this._writeWkbType(wkb, Types.wkb.MultiLineString); - wkb.writeUInt32LE(this.lineStrings.length); - - for (var i = 0; i < this.lineStrings.length; i++) - wkb.writeBuffer(this.lineStrings[i].toWkb({ srid: this.srid })); - - return wkb.buffer; -}; - -MultiLineString.prototype.toTwkb = function () { - var twkb = new BinaryWriter(0, true); - - var precision = Geometry.getTwkbPrecision(5, 0, 0); - var isEmpty = this.lineStrings.length === 0; - - this._writeTwkbHeader(twkb, Types.wkb.MultiLineString, precision, isEmpty); - - if (this.lineStrings.length > 0) { - twkb.writeVarInt(this.lineStrings.length); - - var previousPoint = new Point(0, 0, 0, 0); - for (var i = 0; i < this.lineStrings.length; i++) { - twkb.writeVarInt(this.lineStrings[i].points.length); - - for (var j = 0; j < this.lineStrings[i].points.length; j++) - this.lineStrings[i].points[j]._writeTwkbPoint(twkb, precision, previousPoint); - } - } - - return twkb.buffer; -}; - -MultiLineString.prototype._getWkbSize = function () { - var size = 1 + 4 + 4; - - for (var i = 0; i < this.lineStrings.length; i++) - size += this.lineStrings[i]._getWkbSize(); - - return size; -}; - -MultiLineString.prototype.toGeoJSON = function (options) { - var geoJSON = Geometry.prototype.toGeoJSON.call(this, options); - geoJSON.type = Types.geoJSON.MultiLineString; - geoJSON.coordinates = []; - - for (var i = 0; i < this.lineStrings.length; i++) - geoJSON.coordinates.push(this.lineStrings[i].toGeoJSON().coordinates); - - return geoJSON; -}; - -},{"./binarywriter":349,"./geometry":350,"./linestring":352,"./point":356,"./types":358,"util":343}],354:[function(require,module,exports){ -module.exports = MultiPoint; - -var util = require('util'); - -var Types = require('./types'); -var Geometry = require('./geometry'); -var Point = require('./point'); -var BinaryWriter = require('./binarywriter'); - -function MultiPoint(points, srid) { - Geometry.call(this); - - this.points = points || []; - this.srid = srid; - - if (this.points.length > 0) { - this.hasZ = this.points[0].hasZ; - this.hasM = this.points[0].hasM; - } -} - -util.inherits(MultiPoint, Geometry); - -MultiPoint.Z = function (points, srid) { - var multiPoint = new MultiPoint(points, srid); - multiPoint.hasZ = true; - return multiPoint; -}; - -MultiPoint.M = function (points, srid) { - var multiPoint = new MultiPoint(points, srid); - multiPoint.hasM = true; - return multiPoint; -}; - -MultiPoint.ZM = function (points, srid) { - var multiPoint = new MultiPoint(points, srid); - multiPoint.hasZ = true; - multiPoint.hasM = true; - return multiPoint; -}; - -MultiPoint._parseWkt = function (value, options) { - var multiPoint = new MultiPoint(); - multiPoint.srid = options.srid; - multiPoint.hasZ = options.hasZ; - multiPoint.hasM = options.hasM; - - if (value.isMatch(['EMPTY'])) - return multiPoint; - - value.expectGroupStart(); - multiPoint.points.push.apply(multiPoint.points, value.matchCoordinates(options)); - value.expectGroupEnd(); - - return multiPoint; -}; - -MultiPoint._parseWkb = function (value, options) { - var multiPoint = new MultiPoint(); - multiPoint.srid = options.srid; - multiPoint.hasZ = options.hasZ; - multiPoint.hasM = options.hasM; - - var pointCount = value.readUInt32(); - - for (var i = 0; i < pointCount; i++) - multiPoint.points.push(Geometry.parse(value, options)); - - return multiPoint; -}; - -MultiPoint._parseTwkb = function (value, options) { - var multiPoint = new MultiPoint(); - multiPoint.hasZ = options.hasZ; - multiPoint.hasM = options.hasM; - - if (options.isEmpty) - return multiPoint; - - var previousPoint = new Point(0, 0, options.hasZ ? 0 : undefined, options.hasM ? 0 : undefined); - var pointCount = value.readVarInt(); - - for (var i = 0; i < pointCount; i++) - multiPoint.points.push(Point._readTwkbPoint(value, options, previousPoint)); - - return multiPoint; -}; - -MultiPoint._parseGeoJSON = function (value) { - var multiPoint = new MultiPoint(); - - if (value.coordinates.length > 0) - multiPoint.hasZ = value.coordinates[0].length > 2; - - for (var i = 0; i < value.coordinates.length; i++) - multiPoint.points.push(Point._parseGeoJSON({ coordinates: value.coordinates[i] })); - - return multiPoint; -}; - -MultiPoint.prototype.toWkt = function () { - if (this.points.length === 0) - return this._getWktType(Types.wkt.MultiPoint, true); - - var wkt = this._getWktType(Types.wkt.MultiPoint, false) + '('; - - for (var i = 0; i < this.points.length; i++) - wkt += this._getWktCoordinate(this.points[i]) + ','; - - wkt = wkt.slice(0, -1); - wkt += ')'; - - return wkt; -}; - -MultiPoint.prototype.toWkb = function () { - var wkb = new BinaryWriter(this._getWkbSize()); - - wkb.writeInt8(1); - - this._writeWkbType(wkb, Types.wkb.MultiPoint); - wkb.writeUInt32LE(this.points.length); - - for (var i = 0; i < this.points.length; i++) - wkb.writeBuffer(this.points[i].toWkb({ srid: this.srid })); - - return wkb.buffer; -}; - -MultiPoint.prototype.toTwkb = function () { - var twkb = new BinaryWriter(0, true); - - var precision = Geometry.getTwkbPrecision(5, 0, 0); - var isEmpty = this.points.length === 0; - - this._writeTwkbHeader(twkb, Types.wkb.MultiPoint, precision, isEmpty); - - if (this.points.length > 0) { - twkb.writeVarInt(this.points.length); - - var previousPoint = new Point(0, 0, 0, 0); - for (var i = 0; i < this.points.length; i++) - this.points[i]._writeTwkbPoint(twkb, precision, previousPoint); - } - - return twkb.buffer; -}; - -MultiPoint.prototype._getWkbSize = function () { - var coordinateSize = 16; - - if (this.hasZ) - coordinateSize += 8; - if (this.hasM) - coordinateSize += 8; - - coordinateSize += 5; - - return 1 + 4 + 4 + (this.points.length * coordinateSize); -}; - -MultiPoint.prototype.toGeoJSON = function (options) { - var geoJSON = Geometry.prototype.toGeoJSON.call(this, options); - geoJSON.type = Types.geoJSON.MultiPoint; - geoJSON.coordinates = []; - - for (var i = 0; i < this.points.length; i++) - geoJSON.coordinates.push(this.points[i].toGeoJSON().coordinates); - - return geoJSON; -}; - -},{"./binarywriter":349,"./geometry":350,"./point":356,"./types":358,"util":343}],355:[function(require,module,exports){ -module.exports = MultiPolygon; - -var util = require('util'); - -var Types = require('./types'); -var Geometry = require('./geometry'); -var Point = require('./point'); -var Polygon = require('./polygon'); -var BinaryWriter = require('./binarywriter'); - -function MultiPolygon(polygons, srid) { - Geometry.call(this); - - this.polygons = polygons || []; - this.srid = srid; - - if (this.polygons.length > 0) { - this.hasZ = this.polygons[0].hasZ; - this.hasM = this.polygons[0].hasM; - } -} - -util.inherits(MultiPolygon, Geometry); - -MultiPolygon.Z = function (polygons, srid) { - var multiPolygon = new MultiPolygon(polygons, srid); - multiPolygon.hasZ = true; - return multiPolygon; -}; - -MultiPolygon.M = function (polygons, srid) { - var multiPolygon = new MultiPolygon(polygons, srid); - multiPolygon.hasM = true; - return multiPolygon; -}; - -MultiPolygon.ZM = function (polygons, srid) { - var multiPolygon = new MultiPolygon(polygons, srid); - multiPolygon.hasZ = true; - multiPolygon.hasM = true; - return multiPolygon; -}; - -MultiPolygon._parseWkt = function (value, options) { - var multiPolygon = new MultiPolygon(); - multiPolygon.srid = options.srid; - multiPolygon.hasZ = options.hasZ; - multiPolygon.hasM = options.hasM; - - if (value.isMatch(['EMPTY'])) - return multiPolygon; - - value.expectGroupStart(); - - do { - value.expectGroupStart(); - - var exteriorRing = []; - var interiorRings = []; - - value.expectGroupStart(); - exteriorRing.push.apply(exteriorRing, value.matchCoordinates(options)); - value.expectGroupEnd(); - - while (value.isMatch([','])) { - value.expectGroupStart(); - interiorRings.push(value.matchCoordinates(options)); - value.expectGroupEnd(); - } - - multiPolygon.polygons.push(new Polygon(exteriorRing, interiorRings)); - - value.expectGroupEnd(); - - } while (value.isMatch([','])); - - value.expectGroupEnd(); - - return multiPolygon; -}; - -MultiPolygon._parseWkb = function (value, options) { - var multiPolygon = new MultiPolygon(); - multiPolygon.srid = options.srid; - multiPolygon.hasZ = options.hasZ; - multiPolygon.hasM = options.hasM; - - var polygonCount = value.readUInt32(); - - for (var i = 0; i < polygonCount; i++) - multiPolygon.polygons.push(Geometry.parse(value, options)); - - return multiPolygon; -}; - -MultiPolygon._parseTwkb = function (value, options) { - var multiPolygon = new MultiPolygon(); - multiPolygon.hasZ = options.hasZ; - multiPolygon.hasM = options.hasM; - - if (options.isEmpty) - return multiPolygon; - - var previousPoint = new Point(0, 0, options.hasZ ? 0 : undefined, options.hasM ? 0 : undefined); - var polygonCount = value.readVarInt(); - - for (var i = 0; i < polygonCount; i++) { - var polygon = new Polygon(); - polygon.hasZ = options.hasZ; - polygon.hasM = options.hasM; - - var ringCount = value.readVarInt(); - var exteriorRingCount = value.readVarInt(); - - for (var j = 0; j < exteriorRingCount; j++) - polygon.exteriorRing.push(Point._readTwkbPoint(value, options, previousPoint)); - - for (j = 1; j < ringCount; j++) { - var interiorRing = []; - - var interiorRingCount = value.readVarInt(); - - for (var k = 0; k < interiorRingCount; k++) - interiorRing.push(Point._readTwkbPoint(value, options, previousPoint)); - - polygon.interiorRings.push(interiorRing); - } - - multiPolygon.polygons.push(polygon); - } - - return multiPolygon; -}; - -MultiPolygon._parseGeoJSON = function (value) { - var multiPolygon = new MultiPolygon(); - - if (value.coordinates.length > 0 && value.coordinates[0].length > 0 && value.coordinates[0][0].length > 0) - multiPolygon.hasZ = value.coordinates[0][0][0].length > 2; - - for (var i = 0; i < value.coordinates.length; i++) - multiPolygon.polygons.push(Polygon._parseGeoJSON({ coordinates: value.coordinates[i] })); - - return multiPolygon; -}; - -MultiPolygon.prototype.toWkt = function () { - if (this.polygons.length === 0) - return this._getWktType(Types.wkt.MultiPolygon, true); - - var wkt = this._getWktType(Types.wkt.MultiPolygon, false) + '('; - - for (var i = 0; i < this.polygons.length; i++) - wkt += this.polygons[i]._toInnerWkt() + ','; - - wkt = wkt.slice(0, -1); - wkt += ')'; - - return wkt; -}; - -MultiPolygon.prototype.toWkb = function () { - var wkb = new BinaryWriter(this._getWkbSize()); - - wkb.writeInt8(1); - - this._writeWkbType(wkb, Types.wkb.MultiPolygon); - wkb.writeUInt32LE(this.polygons.length); - - for (var i = 0; i < this.polygons.length; i++) - wkb.writeBuffer(this.polygons[i].toWkb({ srid: this.srid })); - - return wkb.buffer; -}; - -MultiPolygon.prototype.toTwkb = function () { - var twkb = new BinaryWriter(0, true); - - var precision = Geometry.getTwkbPrecision(5, 0, 0); - var isEmpty = this.polygons.length === 0; - - this._writeTwkbHeader(twkb, Types.wkb.MultiPolygon, precision, isEmpty); - - if (this.polygons.length > 0) { - twkb.writeVarInt(this.polygons.length); - - var previousPoint = new Point(0, 0, 0, 0); - for (var i = 0; i < this.polygons.length; i++) { - twkb.writeVarInt(1 + this.polygons[i].interiorRings.length); - - twkb.writeVarInt(this.polygons[i].exteriorRing.length); - - for (var j = 0; j < this.polygons[i].exteriorRing.length; j++) - this.polygons[i].exteriorRing[j]._writeTwkbPoint(twkb, precision, previousPoint); - - for (j = 0; j < this.polygons[i].interiorRings.length; j++) { - twkb.writeVarInt(this.polygons[i].interiorRings[j].length); - - for (var k = 0; k < this.polygons[i].interiorRings[j].length; k++) - this.polygons[i].interiorRings[j][k]._writeTwkbPoint(twkb, precision, previousPoint); - } - } - } - - return twkb.buffer; -}; - -MultiPolygon.prototype._getWkbSize = function () { - var size = 1 + 4 + 4; - - for (var i = 0; i < this.polygons.length; i++) - size += this.polygons[i]._getWkbSize(); - - return size; -}; - -MultiPolygon.prototype.toGeoJSON = function (options) { - var geoJSON = Geometry.prototype.toGeoJSON.call(this, options); - geoJSON.type = Types.geoJSON.MultiPolygon; - geoJSON.coordinates = []; - - for (var i = 0; i < this.polygons.length; i++) - geoJSON.coordinates.push(this.polygons[i].toGeoJSON().coordinates); - - return geoJSON; -}; - -},{"./binarywriter":349,"./geometry":350,"./point":356,"./polygon":357,"./types":358,"util":343}],356:[function(require,module,exports){ -module.exports = Point; - -var util = require('util'); - -var Geometry = require('./geometry'); -var Types = require('./types'); -var BinaryWriter = require('./binarywriter'); -var ZigZag = require('./zigzag.js'); - -function Point(x, y, z, m, srid) { - Geometry.call(this); - - this.x = x; - this.y = y; - this.z = z; - this.m = m; - this.srid = srid; - - this.hasZ = typeof this.z !== 'undefined'; - this.hasM = typeof this.m !== 'undefined'; -} - -util.inherits(Point, Geometry); - -Point.Z = function (x, y, z, srid) { - var point = new Point(x, y, z, undefined, srid); - point.hasZ = true; - return point; -}; - -Point.M = function (x, y, m, srid) { - var point = new Point(x, y, undefined, m, srid); - point.hasM = true; - return point; -}; - -Point.ZM = function (x, y, z, m, srid) { - var point = new Point(x, y, z, m, srid); - point.hasZ = true; - point.hasM = true; - return point; -}; - -Point._parseWkt = function (value, options) { - var point = new Point(); - point.srid = options.srid; - point.hasZ = options.hasZ; - point.hasM = options.hasM; - - if (value.isMatch(['EMPTY'])) - return point; - - value.expectGroupStart(); - - var coordinate = value.matchCoordinate(options); - - point.x = coordinate.x; - point.y = coordinate.y; - point.z = coordinate.z; - point.m = coordinate.m; - - value.expectGroupEnd(); - - return point; -}; - -Point._parseWkb = function (value, options) { - var point = Point._readWkbPoint(value, options); - point.srid = options.srid; - return point; -}; - -Point._readWkbPoint = function (value, options) { - return new Point(value.readDouble(), value.readDouble(), - options.hasZ ? value.readDouble() : undefined, - options.hasM ? value.readDouble() : undefined); -}; - -Point._parseTwkb = function (value, options) { - var point = new Point(); - point.hasZ = options.hasZ; - point.hasM = options.hasM; - - if (options.isEmpty) - return point; - - point.x = ZigZag.decode(value.readVarInt()) / options.precisionFactor; - point.y = ZigZag.decode(value.readVarInt()) / options.precisionFactor; - point.z = options.hasZ ? ZigZag.decode(value.readVarInt()) / options.zPrecisionFactor : undefined; - point.m = options.hasM ? ZigZag.decode(value.readVarInt()) / options.mPrecisionFactor : undefined; - - return point; -}; - -Point._readTwkbPoint = function (value, options, previousPoint) { - previousPoint.x += ZigZag.decode(value.readVarInt()) / options.precisionFactor; - previousPoint.y += ZigZag.decode(value.readVarInt()) / options.precisionFactor; - - if (options.hasZ) - previousPoint.z += ZigZag.decode(value.readVarInt()) / options.zPrecisionFactor; - if (options.hasM) - previousPoint.m += ZigZag.decode(value.readVarInt()) / options.mPrecisionFactor; - - return new Point(previousPoint.x, previousPoint.y, previousPoint.z, previousPoint.m); -}; - -Point._parseGeoJSON = function (value) { - return Point._readGeoJSONPoint(value.coordinates); -}; - -Point._readGeoJSONPoint = function (coordinates) { - if (coordinates.length === 0) - return new Point(); - - if (coordinates.length > 2) - return new Point(coordinates[0], coordinates[1], coordinates[2]); - - return new Point(coordinates[0], coordinates[1]); -}; - -Point.prototype.toWkt = function () { - if (typeof this.x === 'undefined' && typeof this.y === 'undefined' && - typeof this.z === 'undefined' && typeof this.m === 'undefined') - return this._getWktType(Types.wkt.Point, true); - - return this._getWktType(Types.wkt.Point, false) + '(' + this._getWktCoordinate(this) + ')'; -}; - -Point.prototype.toWkb = function (parentOptions) { - var wkb = new BinaryWriter(this._getWkbSize()); - - wkb.writeInt8(1); - this._writeWkbType(wkb, Types.wkb.Point, parentOptions); - - if (typeof this.x === 'undefined' && typeof this.y === 'undefined') { - wkb.writeDoubleLE(NaN); - wkb.writeDoubleLE(NaN); - - if (this.hasZ) - wkb.writeDoubleLE(NaN); - if (this.hasM) - wkb.writeDoubleLE(NaN); - } - else { - this._writeWkbPoint(wkb); - } - - return wkb.buffer; -}; - -Point.prototype._writeWkbPoint = function (wkb) { - wkb.writeDoubleLE(this.x); - wkb.writeDoubleLE(this.y); - - if (this.hasZ) - wkb.writeDoubleLE(this.z); - if (this.hasM) - wkb.writeDoubleLE(this.m); -}; - -Point.prototype.toTwkb = function () { - var twkb = new BinaryWriter(0, true); - - var precision = Geometry.getTwkbPrecision(5, 0, 0); - var isEmpty = typeof this.x === 'undefined' && typeof this.y === 'undefined'; - - this._writeTwkbHeader(twkb, Types.wkb.Point, precision, isEmpty); - - if (!isEmpty) - this._writeTwkbPoint(twkb, precision, new Point(0, 0, 0, 0)); - - return twkb.buffer; -}; - -Point.prototype._writeTwkbPoint = function (twkb, precision, previousPoint) { - var x = this.x * precision.xyFactor; - var y = this.y * precision.xyFactor; - var z = this.z * precision.zFactor; - var m = this.m * precision.mFactor; - - twkb.writeVarInt(ZigZag.encode(x - previousPoint.x)); - twkb.writeVarInt(ZigZag.encode(y - previousPoint.y)); - if (this.hasZ) - twkb.writeVarInt(ZigZag.encode(z - previousPoint.z)); - if (this.hasM) - twkb.writeVarInt(ZigZag.encode(m - previousPoint.m)); - - previousPoint.x = x; - previousPoint.y = y; - previousPoint.z = z; - previousPoint.m = m; -}; - -Point.prototype._getWkbSize = function () { - var size = 1 + 4 + 8 + 8; - - if (this.hasZ) - size += 8; - if (this.hasM) - size += 8; - - return size; -}; - -Point.prototype.toGeoJSON = function (options) { - var geoJSON = Geometry.prototype.toGeoJSON.call(this, options); - geoJSON.type = Types.geoJSON.Point; - - if (typeof this.x === 'undefined' && typeof this.y === 'undefined') - geoJSON.coordinates = []; - else if (typeof this.z !== 'undefined') - geoJSON.coordinates = [this.x, this.y, this.z]; - else - geoJSON.coordinates = [this.x, this.y]; - - return geoJSON; -}; - -},{"./binarywriter":349,"./geometry":350,"./types":358,"./zigzag.js":361,"util":343}],357:[function(require,module,exports){ -module.exports = Polygon; - -var util = require('util'); - -var Geometry = require('./geometry'); -var Types = require('./types'); -var Point = require('./point'); -var BinaryWriter = require('./binarywriter'); - -function Polygon(exteriorRing, interiorRings, srid) { - Geometry.call(this); - - this.exteriorRing = exteriorRing || []; - this.interiorRings = interiorRings || []; - this.srid = srid; - - if (this.exteriorRing.length > 0) { - this.hasZ = this.exteriorRing[0].hasZ; - this.hasM = this.exteriorRing[0].hasM; - } -} - -util.inherits(Polygon, Geometry); - -Polygon.Z = function (exteriorRing, interiorRings, srid) { - var polygon = new Polygon(exteriorRing, interiorRings, srid); - polygon.hasZ = true; - return polygon; -}; - -Polygon.M = function (exteriorRing, interiorRings, srid) { - var polygon = new Polygon(exteriorRing, interiorRings, srid); - polygon.hasM = true; - return polygon; -}; - -Polygon.ZM = function (exteriorRing, interiorRings, srid) { - var polygon = new Polygon(exteriorRing, interiorRings, srid); - polygon.hasZ = true; - polygon.hasM = true; - return polygon; -}; - -Polygon._parseWkt = function (value, options) { - var polygon = new Polygon(); - polygon.srid = options.srid; - polygon.hasZ = options.hasZ; - polygon.hasM = options.hasM; - - if (value.isMatch(['EMPTY'])) - return polygon; - - value.expectGroupStart(); - - value.expectGroupStart(); - polygon.exteriorRing.push.apply(polygon.exteriorRing, value.matchCoordinates(options)); - value.expectGroupEnd(); - - while (value.isMatch([','])) { - value.expectGroupStart(); - polygon.interiorRings.push(value.matchCoordinates(options)); - value.expectGroupEnd(); - } - - value.expectGroupEnd(); - - return polygon; -}; - -Polygon._parseWkb = function (value, options) { - var polygon = new Polygon(); - polygon.srid = options.srid; - polygon.hasZ = options.hasZ; - polygon.hasM = options.hasM; - - var ringCount = value.readUInt32(); - - if (ringCount > 0) { - var exteriorRingCount = value.readUInt32(); - - for (var i = 0; i < exteriorRingCount; i++) - polygon.exteriorRing.push(Point._readWkbPoint(value, options)); - - for (i = 1; i < ringCount; i++) { - var interiorRing = []; - - var interiorRingCount = value.readUInt32(); - - for (var j = 0; j < interiorRingCount; j++) - interiorRing.push(Point._readWkbPoint(value, options)); - - polygon.interiorRings.push(interiorRing); - } - } - - return polygon; -}; - -Polygon._parseTwkb = function (value, options) { - var polygon = new Polygon(); - polygon.hasZ = options.hasZ; - polygon.hasM = options.hasM; - - if (options.isEmpty) - return polygon; - - var previousPoint = new Point(0, 0, options.hasZ ? 0 : undefined, options.hasM ? 0 : undefined); - var ringCount = value.readVarInt(); - var exteriorRingCount = value.readVarInt(); - - for (var i = 0; i < exteriorRingCount; i++) - polygon.exteriorRing.push(Point._readTwkbPoint(value, options, previousPoint)); - - for (i = 1; i < ringCount; i++) { - var interiorRing = []; - - var interiorRingCount = value.readVarInt(); - - for (var j = 0; j < interiorRingCount; j++) - interiorRing.push(Point._readTwkbPoint(value, options, previousPoint)); - - polygon.interiorRings.push(interiorRing); - } - - return polygon; -}; - -Polygon._parseGeoJSON = function (value) { - var polygon = new Polygon(); - - if (value.coordinates.length > 0 && value.coordinates[0].length > 0) - polygon.hasZ = value.coordinates[0][0].length > 2; - - for (var i = 0; i < value.coordinates.length; i++) { - if (i > 0) - polygon.interiorRings.push([]); - - for (var j = 0; j < value.coordinates[i].length; j++) { - if (i === 0) - polygon.exteriorRing.push(Point._readGeoJSONPoint(value.coordinates[i][j])); - else - polygon.interiorRings[i - 1].push(Point._readGeoJSONPoint(value.coordinates[i][j])); - } - } - - return polygon; -}; - -Polygon.prototype.toWkt = function () { - if (this.exteriorRing.length === 0) - return this._getWktType(Types.wkt.Polygon, true); - - return this._getWktType(Types.wkt.Polygon, false) + this._toInnerWkt(); -}; - -Polygon.prototype._toInnerWkt = function () { - var innerWkt = '(('; - - for (var i = 0; i < this.exteriorRing.length; i++) - innerWkt += this._getWktCoordinate(this.exteriorRing[i]) + ','; - - innerWkt = innerWkt.slice(0, -1); - innerWkt += ')'; - - for (i = 0; i < this.interiorRings.length; i++) { - innerWkt += ',('; - - for (var j = 0; j < this.interiorRings[i].length; j++) { - innerWkt += this._getWktCoordinate(this.interiorRings[i][j]) + ','; - } - - innerWkt = innerWkt.slice(0, -1); - innerWkt += ')'; - } - - innerWkt += ')'; - - return innerWkt; -}; - -Polygon.prototype.toWkb = function (parentOptions) { - var wkb = new BinaryWriter(this._getWkbSize()); - - wkb.writeInt8(1); - - this._writeWkbType(wkb, Types.wkb.Polygon, parentOptions); - - if (this.exteriorRing.length > 0) { - wkb.writeUInt32LE(1 + this.interiorRings.length); - wkb.writeUInt32LE(this.exteriorRing.length); - } - else { - wkb.writeUInt32LE(0); - } - - for (var i = 0; i < this.exteriorRing.length; i++) - this.exteriorRing[i]._writeWkbPoint(wkb); - - for (i = 0; i < this.interiorRings.length; i++) { - wkb.writeUInt32LE(this.interiorRings[i].length); - - for (var j = 0; j < this.interiorRings[i].length; j++) - this.interiorRings[i][j]._writeWkbPoint(wkb); - } - - return wkb.buffer; -}; - -Polygon.prototype.toTwkb = function () { - var twkb = new BinaryWriter(0, true); - - var precision = Geometry.getTwkbPrecision(5, 0, 0); - var isEmpty = this.exteriorRing.length === 0; - - this._writeTwkbHeader(twkb, Types.wkb.Polygon, precision, isEmpty); - - if (this.exteriorRing.length > 0) { - twkb.writeVarInt(1 + this.interiorRings.length); - - twkb.writeVarInt(this.exteriorRing.length); - - var previousPoint = new Point(0, 0, 0, 0); - for (var i = 0; i < this.exteriorRing.length; i++) - this.exteriorRing[i]._writeTwkbPoint(twkb, precision, previousPoint); - - for (i = 0; i < this.interiorRings.length; i++) { - twkb.writeVarInt(this.interiorRings[i].length); - - for (var j = 0; j < this.interiorRings[i].length; j++) - this.interiorRings[i][j]._writeTwkbPoint(twkb, precision, previousPoint); - } - } - - return twkb.buffer; -}; - -Polygon.prototype._getWkbSize = function () { - var coordinateSize = 16; - - if (this.hasZ) - coordinateSize += 8; - if (this.hasM) - coordinateSize += 8; - - var size = 1 + 4 + 4; - - if (this.exteriorRing.length > 0) - size += 4 + (this.exteriorRing.length * coordinateSize); - - for (var i = 0; i < this.interiorRings.length; i++) - size += 4 + (this.interiorRings[i].length * coordinateSize); - - return size; -}; - -Polygon.prototype.toGeoJSON = function (options) { - var geoJSON = Geometry.prototype.toGeoJSON.call(this, options); - geoJSON.type = Types.geoJSON.Polygon; - geoJSON.coordinates = []; - - if (this.exteriorRing.length > 0) { - var exteriorRing = []; - - for (var i = 0; i < this.exteriorRing.length; i++) { - if (this.hasZ) - exteriorRing.push([this.exteriorRing[i].x, this.exteriorRing[i].y, this.exteriorRing[i].z]); - else - exteriorRing.push([this.exteriorRing[i].x, this.exteriorRing[i].y]); - } - - geoJSON.coordinates.push(exteriorRing); - } - - for (var j = 0; j < this.interiorRings.length; j++) { - var interiorRing = []; - - for (var k = 0; k < this.interiorRings[j].length; k++) { - if (this.hasZ) - interiorRing.push([this.interiorRings[j][k].x, this.interiorRings[j][k].y, this.interiorRings[j][k].z]); - else - interiorRing.push([this.interiorRings[j][k].x, this.interiorRings[j][k].y]); - } - - geoJSON.coordinates.push(interiorRing); - } - - return geoJSON; -}; - -},{"./binarywriter":349,"./geometry":350,"./point":356,"./types":358,"util":343}],358:[function(require,module,exports){ -module.exports = { - wkt: { - Point: 'POINT', - LineString: 'LINESTRING', - Polygon: 'POLYGON', - MultiPoint: 'MULTIPOINT', - MultiLineString: 'MULTILINESTRING', - MultiPolygon: 'MULTIPOLYGON', - GeometryCollection: 'GEOMETRYCOLLECTION' - }, - wkb: { - Point: 1, - LineString: 2, - Polygon: 3, - MultiPoint: 4, - MultiLineString: 5, - MultiPolygon: 6, - GeometryCollection: 7 - }, - geoJSON: { - Point: 'Point', - LineString: 'LineString', - Polygon: 'Polygon', - MultiPoint: 'MultiPoint', - MultiLineString: 'MultiLineString', - MultiPolygon: 'MultiPolygon', - GeometryCollection: 'GeometryCollection' - } -}; - -},{}],359:[function(require,module,exports){ -module.exports = WktParser; - -var Types = require('./types'); -var Point = require('./point'); - -function WktParser(value) { - this.value = value; - this.position = 0; -} - -WktParser.prototype.match = function (tokens) { - this.skipWhitespaces(); - - for (var i = 0; i < tokens.length; i++) { - if (this.value.substring(this.position).indexOf(tokens[i]) === 0) { - this.position += tokens[i].length; - return tokens[i]; - } - } - - return null; -}; - -WktParser.prototype.matchRegex = function (tokens) { - this.skipWhitespaces(); - - for (var i = 0; i < tokens.length; i++) { - var match = this.value.substring(this.position).match(tokens[i]); - - if (match) { - this.position += match[0].length; - return match; - } - } - - return null; -}; - -WktParser.prototype.isMatch = function (tokens) { - this.skipWhitespaces(); - - for (var i = 0; i < tokens.length; i++) { - if (this.value.substring(this.position).indexOf(tokens[i]) === 0) { - this.position += tokens[i].length; - return true; - } - } - - return false; -}; - -WktParser.prototype.matchType = function () { - var geometryType = this.match([Types.wkt.Point, Types.wkt.LineString, Types.wkt.Polygon, Types.wkt.MultiPoint, - Types.wkt.MultiLineString, Types.wkt.MultiPolygon, Types.wkt.GeometryCollection]); - - if (!geometryType) - throw new Error('Expected geometry type'); - - return geometryType; -}; - -WktParser.prototype.matchDimension = function () { - var dimension = this.match(['ZM', 'Z', 'M']); - - switch (dimension) { - case 'ZM': return { hasZ: true, hasM: true }; - case 'Z': return { hasZ: true, hasM: false }; - case 'M': return { hasZ: false, hasM: true }; - default: return { hasZ: false, hasM: false }; - } -}; - -WktParser.prototype.expectGroupStart = function () { - if (!this.isMatch(['('])) - throw new Error('Expected group start'); -}; - -WktParser.prototype.expectGroupEnd = function () { - if (!this.isMatch([')'])) - throw new Error('Expected group end'); -}; - -WktParser.prototype.matchCoordinate = function (options) { - var match; - - if (options.hasZ && options.hasM) - match = this.matchRegex([/^(-?\d+\.?\d*)\s+(-?\d+\.?\d*)\s+(-?\d+\.?\d*)\s+(-?\d+\.?\d*)/]); - else if (options.hasZ || options.hasM) - match = this.matchRegex([/^(-?\d+\.?\d*)\s+(-?\d+\.?\d*)\s+(-?\d+\.?\d*)/]); - else - match = this.matchRegex([/^(-?\d+\.?\d*)\s+(-?\d+\.?\d*)/]); - - if (!match) - throw new Error('Expected coordinates'); - - if (options.hasZ && options.hasM) - return new Point(parseFloat(match[1]), parseFloat(match[2]), parseFloat(match[3]), parseFloat(match[4])); - else if (options.hasZ) - return new Point(parseFloat(match[1]), parseFloat(match[2]), parseFloat(match[3])); - else if (options.hasM) - return new Point(parseFloat(match[1]), parseFloat(match[2]), undefined, parseFloat(match[3])); - else - return new Point(parseFloat(match[1]), parseFloat(match[2])); -}; - -WktParser.prototype.matchCoordinates = function (options) { - var coordinates = []; - - do { - var startsWithBracket = this.isMatch(['(']); - - coordinates.push(this.matchCoordinate(options)); - - if (startsWithBracket) - this.expectGroupEnd(); - } while (this.isMatch([','])); - - return coordinates; -}; - -WktParser.prototype.skipWhitespaces = function () { - while (this.position < this.value.length && this.value[this.position] === ' ') - this.position++; -}; - -},{"./point":356,"./types":358}],360:[function(require,module,exports){ -exports.Types = require('./types'); -exports.Geometry = require('./geometry'); -exports.Point = require('./point'); -exports.LineString = require('./linestring'); -exports.Polygon = require('./polygon'); -exports.MultiPoint = require('./multipoint'); -exports.MultiLineString = require('./multilinestring'); -exports.MultiPolygon = require('./multipolygon'); -exports.GeometryCollection = require('./geometrycollection'); -},{"./geometry":350,"./geometrycollection":351,"./linestring":352,"./multilinestring":353,"./multipoint":354,"./multipolygon":355,"./point":356,"./polygon":357,"./types":358}],361:[function(require,module,exports){ -module.exports = { - encode: function (value) { - return (value << 1) ^ (value >> 31); - }, - decode: function (value) { - return (value >> 1) ^ (-(value & 1)); - } -}; - -},{}],362:[function(require,module,exports){ -module.exports = extend - -var hasOwnProperty = Object.prototype.hasOwnProperty; - -function extend() { - var target = {} - - for (var i = 0; i < arguments.length; i++) { - var source = arguments[i] - - for (var key in source) { - if (hasOwnProperty.call(source, key)) { - target[key] = source[key] - } - } - } - - return target -} - -},{}]},{},[1])(1) -}); diff --git a/libs/potree/lazylibs/geopackage/geopackage.min.js b/libs/potree/lazylibs/geopackage/geopackage.min.js deleted file mode 100644 index 856963d..0000000 --- a/libs/potree/lazylibs/geopackage/geopackage.min.js +++ /dev/null @@ -1,97 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.geopackage=f()}})(function(){var define,module,exports;return 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;o1){return callback(new Error("Unexpected state. More than one Tile Matrix Set matched for table name: "+tableName+", count: "+results.length))}var tileMatrixSet=new TileMatrixSet;tms.populateObjectFromResult(tileMatrixSet,results[0]);this.getTileDaoWithTileMatrixSet(tileMatrixSet,callback)}.bind(this))};GeoPackage.prototype.getTileTables=function(callback){var tms=this.getTileMatrixSetDao();tms.isTableExists(function(err,exists){if(!exists){return callback(null,[])}tms.getTileTables(callback)})};GeoPackage.prototype.getFeatureTables=function(callback){var gcd=this.getGeometryColumnsDao();gcd.isTableExists(function(err,exists){if(!exists){return callback(null,[])}gcd.getFeatureTables(callback)})};GeoPackage.prototype.getGeometryColumnsDao=function(){return new GeometryColumnsDao(this.connection)};GeoPackage.prototype.getFeatureDaoWithGeometryColumns=function(geometryColumns,callback){if(!geometryColumns){return callback(new Error("Non null Geometry Columns is required to create Feature DAO"))}var tableReader=new FeatureTableReader(geometryColumns);var featureTable=tableReader.readFeatureTable(this.connection,function(err,featureTable){if(err){return callback(err)}var dao=new FeatureDao(this.connection,featureTable,geometryColumns,this.metadataDb);callback(null,dao)}.bind(this))};GeoPackage.prototype.getFeatureDaoWithContents=function(contents,callback){};GeoPackage.prototype.getFeatureDaoWithTableName=function(tableName,callback){var self=this;var dao=this.getGeometryColumnsDao();var geometryColumns=dao.queryForTableName(tableName,function(err,geometryColumns){if(!geometryColumns){return callback(new Error("No Feature Table exists for table name: "+tableName))}self.getFeatureDaoWithGeometryColumns(geometryColumns,callback)})};module.exports=GeoPackage},{"./core/contents":"/data/github/geopackage-node/lib/core/contents/index.js","./core/srs":"/data/github/geopackage-node/lib/core/srs/index.js","./features/columns":"/data/github/geopackage-node/lib/features/columns/index.js","./features/user/featureDao":"/data/github/geopackage-node/lib/features/user/featureDao.js","./features/user/featureTableReader":"/data/github/geopackage-node/lib/features/user/featureTableReader.js","./tiles/matrix":"/data/github/geopackage-node/lib/tiles/matrix/index.js","./tiles/matrixset":"/data/github/geopackage-node/lib/tiles/matrixset/index.js","./tiles/user/tileDao":"/data/github/geopackage-node/lib/tiles/user/tileDao.js","./tiles/user/tileTableReader":"/data/github/geopackage-node/lib/tiles/user/tileTableReader.js",async:"/data/github/geopackage-node/node_modules/async/lib/async.js"}],"/data/github/geopackage-node/lib/geoPackageConstants.js":[function(require,module,exports){exports.GEOPACKAGE_EXTENSION="gpkg";exports.GEOPACKAGE_EXTENDED_EXTENSION="gpkx";exports.APPLICATION_ID="GP10";exports.GEOPACKAGE_EXTENSION_AUTHOR=exports.GEOPACKAGE_EXTENSION;exports.GEOMETRY_EXTENSION_PREFIX="geom";exports.GEOPACKAGE_GEOMETRY_MAGIC_NUMBER="GP";exports.GEOPACKAGE_GEOMETRY_VERSION_1=0;exports.SQLITE_HEADER_PREFIX="SQLite format 3"},{}],"/data/github/geopackage-node/lib/geoPackageManager.js":[function(require,module,exports){var async=require("async"),path=require("path"),GeoPackage=require("./geoPackage"),GeoPackageValidate=require("./validate/geoPackageValidate"),GeoPackageConnection=require("./db/geoPackageConnection");module.exports.open=function(filePath,callback){var error=GeoPackageValidate.validateGeoPackageExtension(filePath);if(error)return callback(error);var results={};async.waterfall([function(callback){GeoPackageConnection.connect(filePath,function(err,connection){if(err){console.log("cannot open "+filePath);return callback(err)}results.connection=connection;callback(err,results)})},function(results,callback){results.geoPackage=new GeoPackage(path.basename(filePath),filePath,results.connection);callback(null,results)},function(results,callback){GeoPackageValidate.hasMinimumTables(results.geoPackage,function(err){callback(err,results)})}],function(err,results){if(err){return callback(err)}callback(err,results.geoPackage)})}},{"./db/geoPackageConnection":"/data/github/geopackage-node/lib/db/geoPackageConnection.js","./geoPackage":"/data/github/geopackage-node/lib/geoPackage.js","./validate/geoPackageValidate":"/data/github/geopackage-node/lib/validate/geoPackageValidate.js",async:"/data/github/geopackage-node/node_modules/async/lib/async.js",path:"/data/github/geopackage-node/node_modules/browserify/node_modules/path-browserify/index.js"}],"/data/github/geopackage-node/lib/geom/geometryData.js":[function(require,module,exports){(function(Buffer){var GeoPackageConstants=require("../geoPackageConstants");var wkx=require("wkx");var BIG_ENDIAN=0;var LITTLE_ENDIAN=1;var GeometryData=function(buffer){this.empty=true;this.byteOrder=BIG_ENDIAN;this.fromData(buffer)};module.exports=GeometryData;GeometryData.prototype.fromData=function(buffer){this.buffer=buffer;if(buffer instanceof Uint8Array){this.buffer=buffer=new Buffer(buffer)}var magicString=buffer.toString("ascii",0,2);if(magicString!==GeoPackageConstants.GEOPACKAGE_GEOMETRY_MAGIC_NUMBER){throw new Error("Unexpected GeoPackage Geometry magic number: "+magicString+", Expected: "+GeoPackageConstants.GEOPACKAGE_GEOMETRY_MAGIC_NUMBER)}var version=buffer.readUInt8(2);if(version!==GeoPackageConstants.GEOPACKAGE_GEOMETRY_VERSION_1){throw new Error("Unexpected GeoPackage Geometry version "+version+", Expected: "+GeoPackageConstants.GEOPACKAGE_GEOMETRY_VERSION_1)}var flags=buffer.readUInt8(3);var envelopeIndicator=this.readFlags(flags);this.srsId=buffer[this.byteOrder?"readUInt32LE":"readUInt32BE"](4);this.envelope=this.readEnvelope(envelopeIndicator,buffer);var offset=this.envelope.offset;var wkbBuffer=buffer.slice(offset);this.geometry=wkx.Geometry.parse(wkbBuffer)};GeometryData.prototype.readFlags=function(flagsInt){var reserved7=flagsInt>>7&1;var reserved6=flagsInt>>6&1;if(reserved7!==0||reserved6!==0){throw new Error("Unexpected GeoPackage Geometry flags. Flag bit 7 and 6 should both be 0, 7="+reserved7+", 6="+reserved6)}var binaryType=flagsInt>>5&1;this.extended=binaryType==1;var emptyValue=flagsInt>>4&1;this.empty=emptyValue==1;var envelopeIndicator=flagsInt>>1&7;if(envelopeIndicator>4){throw new Error("Unexpected GeoPackage Geometry flags. Envelope contents indicator must be between 0 and 4. Actual: "+envelopeIndicator)}var byteOrderValue=flagsInt&1;this.byteOrder=byteOrderValue;return envelopeIndicator};GeometryData.prototype.readEnvelope=function(envelopeIndicator,buffer){var readDoubleMethod="readDouble"+(this.byteOrder?"LE":"BE");var envelopeByteOffset=8;reads=0;var envelope={};if(envelopeIndicator<=0){envelope.offset=envelopeByteOffset;return envelope}envelope.minX=buffer[readDoubleMethod](envelopeByteOffset+8*reads++);envelope.maxX=buffer[readDoubleMethod](envelopeByteOffset+8*reads++);envelope.minY=buffer[readDoubleMethod](envelopeByteOffset+8*reads++);envelope.maxY=buffer[readDoubleMethod](envelopeByteOffset+8*reads++);envelope.hasZ=false;var minZ=undefined;var maxZ=undefined;envelope.hasM=false;var minM=undefined;var maxM=undefined;if(envelopeIndicator===2||envelopeIndicator===4){envelope.hasZ=true;envelope.minZ=buffer[readDoubleMethod](envelopeByteOffset+8*reads++);envelope.maxZ=buffer[readDoubleMethod](envelopeByteOffset+8*reads++)}if(envelopeIndicator===3||envelopeIndicator===4){envelope.hasM=true;envelope.minM=buffer[readDoubleMethod](envelopeByteOffset+8*reads++);envelope.maxM=buffer[readDoubleMethod](envelopeByteOffset+8*reads++)}envelope.offset=envelopeByteOffset+8*reads;return envelope}}).call(this,require("buffer").Buffer)},{"../geoPackageConstants":"/data/github/geopackage-node/lib/geoPackageConstants.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",wkx:"/data/github/geopackage-node/node_modules/wkx/lib/wkx.js"}],"/data/github/geopackage-node/lib/geopackage.js":[function(require,module,exports){arguments[4]["/data/github/geopackage-node/lib/geoPackage.js"][0].apply(exports,arguments)},{"./core/contents":"/data/github/geopackage-node/lib/core/contents/index.js","./core/srs":"/data/github/geopackage-node/lib/core/srs/index.js","./features/columns":"/data/github/geopackage-node/lib/features/columns/index.js","./features/user/featureDao":"/data/github/geopackage-node/lib/features/user/featureDao.js","./features/user/featureTableReader":"/data/github/geopackage-node/lib/features/user/featureTableReader.js","./tiles/matrix":"/data/github/geopackage-node/lib/tiles/matrix/index.js","./tiles/matrixset":"/data/github/geopackage-node/lib/tiles/matrixset/index.js","./tiles/user/tileDao":"/data/github/geopackage-node/lib/tiles/user/tileDao.js","./tiles/user/tileTableReader":"/data/github/geopackage-node/lib/tiles/user/tileTableReader.js",async:"/data/github/geopackage-node/node_modules/async/lib/async.js"}],"/data/github/geopackage-node/lib/tiles/creator/index.js":[function(require,module,exports){(function(process){var fileType=require("file-type");module.exports.initialize=function(width,height,callback){if(typeof process!=="undefined"&&process.version){new LwipTileCreator(width,height,callback)}else{new CanvasTileCreator(width,height,callback)}};function CanvasTileCreator(width,height,callback){this.canvas=document.createElement("canvas");this.canvas.width=width;this.canvas.height=height;this.ctx=this.canvas.getContext("2d");callback(null,this)}CanvasTileCreator.prototype.addTile=function(tileData,xOffset,yOffset,callback){var type=fileType(tileData);var base64Data=btoa(String.fromCharCode.apply(null,tileData));var image=document.createElement("img");image.onload=function(){this.ctx.drawImage(image,xOffset,yOffset);callback()}.bind(this);image.src="data:"+type.mime+";base64,"+base64Data};CanvasTileCreator.prototype.getCompleteTile=function(format,callback){callback(null,this.canvas.toDataURL())};function LwipTileCreator(width,height,callback){this.lwip=require("lwip");this.width=width;this.height=height;this.lwip.create(this.width*3,this.height*3,function(err,image){this.image=image;callback(null,this)}.bind(this))}LwipTileCreator.prototype.addTile=function(tileData,xOffset,yOffset,callback){var type=fileType(tileData);this.lwip.open(tileData,type.ext,function(err,tile){this.image.paste(xOffset+this.width,yOffset+this.height,tile,callback)}.bind(this))};LwipTileCreator.prototype.getCompleteTile=function(format,callback){this.image.writeFile("/tmp/lwip.png",function(err){this.image.batch().crop(this.width,this.height).toBuffer(format,callback)}.bind(this))}}).call(this,require("_process"))},{_process:"/data/github/geopackage-node/node_modules/browserify/node_modules/process/browser.js","file-type":"/data/github/geopackage-node/node_modules/file-type/index.js",lwip:false}],"/data/github/geopackage-node/lib/tiles/matrix/index.js":[function(require,module,exports){var Dao=require("../../dao/dao"),TileMatrixSetDao=require("../matrixset").TileMatrixSetDao;var util=require("util");var TileMatrix=function(){this.tableName;this.zoomLevel;this.matrixWidth;this.matrixHeight;this.tileWidth;this.tileHeight;this.pixelXSize;this.pixelYSize};var TileMatrixDao=function(connection){Dao.call(this,connection)};util.inherits(TileMatrixDao,Dao);TileMatrixDao.prototype.createObject=function(){return new TileMatrix};TileMatrixDao.prototype.getContents=function(tileMatrix,callback){var dao=this.getContentsDao();return dao.queryForIdObject(tileMatrix.tableName,callback)};TileMatrixDao.prototype.getContentsDao=function(){var ContentsDao=require("../../core/contents").ContentsDao;return new ContentsDao(this.connection)};TileMatrixDao.prototype.getTileMatrixSet=function(tileMatrix,callback){var dao=this.getTileMatrixSetDao();return dao.queryForIdObject(tileMatrix.tableName,callback)};TileMatrixDao.prototype.getTileMatrixSetDao=function(){return new TileMatrixSetDao(this.connection)};TileMatrixDao.TABLE_NAME="gpkg_tile_matrix";TileMatrixDao.COLUMN_PK1="table_name";TileMatrixDao.COLUMN_PK2="zoom_level";TileMatrixDao.COLUMN_TABLE_NAME="table_name";TileMatrixDao.COLUMN_ZOOM_LEVEL="zoom_level";TileMatrixDao.COLUMN_MATRIX_WIDTH="matrix_width";TileMatrixDao.COLUMN_MATRIX_HEIGHT="matrix_height";TileMatrixDao.COLUMN_TILE_WIDTH="tile_width";TileMatrixDao.COLUMN_TILE_HEIGHT="tile_height";TileMatrixDao.COLUMN_PIXEL_X_SIZE="pixel_x_size";TileMatrixDao.COLUMN_PIXEL_Y_SIZE="pixel_y_size";TileMatrix.TABLE_NAME="tableName";TileMatrix.ZOOM_LEVEL="zoomLevel";TileMatrix.MATRIX_WIDTH="matrixWidth";TileMatrix.MATRIX_HEIGHT="matrixHeight";TileMatrix.TILE_WIDTH="tileWidth";TileMatrix.TILE_HEIGHT="tileHeight";TileMatrix.PIXEL_X_SIZE="pixelXSize";TileMatrix.PIXEL_Y_SIZE="pixelYSize";TileMatrixDao.prototype.tableName="gpkg_tile_matrix";TileMatrixDao.prototype.idColumns=[TileMatrixDao.COLUMN_PK1,TileMatrixDao.COLUMN_PK2];TileMatrixDao.prototype.columns=[TileMatrixDao.COLUMN_TABLE_NAME,TileMatrixDao.COLUMN_ZOOM_LEVEL,TileMatrixDao.COLUMN_MATRIX_WIDTH,TileMatrixDao.COLUMN_MATRIX_HEIGHT,TileMatrixDao.COLUMN_TILE_WIDTH,TileMatrixDao.COLUMN_TILE_HEIGHT,TileMatrixDao.COLUMN_PIXEL_X_SIZE,TileMatrixDao.COLUMN_PIXEL_Y_SIZE];TileMatrixDao.prototype.columnToPropertyMap={};TileMatrixDao.prototype.columnToPropertyMap[TileMatrixDao.COLUMN_TABLE_NAME]=TileMatrix.TABLE_NAME;TileMatrixDao.prototype.columnToPropertyMap[TileMatrixDao.COLUMN_ZOOM_LEVEL]=TileMatrix.ZOOM_LEVEL;TileMatrixDao.prototype.columnToPropertyMap[TileMatrixDao.COLUMN_MATRIX_WIDTH]=TileMatrix.MATRIX_WIDTH;TileMatrixDao.prototype.columnToPropertyMap[TileMatrixDao.COLUMN_MATRIX_HEIGHT]=TileMatrix.MATRIX_HEIGHT;TileMatrixDao.prototype.columnToPropertyMap[TileMatrixDao.COLUMN_TILE_WIDTH]=TileMatrix.TILE_WIDTH;TileMatrixDao.prototype.columnToPropertyMap[TileMatrixDao.COLUMN_TILE_HEIGHT]=TileMatrix.TILE_HEIGHT;TileMatrixDao.prototype.columnToPropertyMap[TileMatrixDao.COLUMN_PIXEL_X_SIZE]=TileMatrix.PIXEL_X_SIZE;TileMatrixDao.prototype.columnToPropertyMap[TileMatrixDao.COLUMN_PIXEL_Y_SIZE]=TileMatrix.PIXEL_Y_SIZE;TileMatrixDao.columnIndexToPropertyMap=[TileMatrix.TABLE_NAME,TileMatrix.ZOOM_LEVEL,TileMatrix.MATRIX_WIDTH,TileMatrix.MATRIX_HEIGHT,TileMatrix.TILE_WIDTH,TileMatrix.TILE_HEIGHT,TileMatrix.PIXEL_X_SIZE,TileMatrix.PIXEL_Y_SIZE];module.exports.TileMatrixDao=TileMatrixDao;module.exports.TileMatrix=TileMatrix},{"../../core/contents":"/data/github/geopackage-node/lib/core/contents/index.js","../../dao/dao":"/data/github/geopackage-node/lib/dao/dao.js","../matrixset":"/data/github/geopackage-node/lib/tiles/matrixset/index.js",util:"/data/github/geopackage-node/node_modules/browserify/node_modules/util/util.js"}],"/data/github/geopackage-node/lib/tiles/matrixset/index.js":[function(require,module,exports){var Dao=require("../../dao/dao"),BoundingBox=require("../../boundingBox"),SpatialReferenceSystemDao=require("../../core/srs").SpatialReferenceSystemDao;var util=require("util");var TileMatrixSet=function(){this.tableName;this.srsId;this.minX;this.minY;this.maxX; -this.maxY};TileMatrixSet.prototype.setBoundingBox=function(boundingBox){this.minX=boundingBox.minLongitude;this.maxX=boundingBox.maxLongitude;this.minY=boundingBox.minLatitude;this.maxY=boundingBox.maxLatitude};TileMatrixSet.prototype.getBoundingBox=function(){return new BoundingBox(this.minX,this.maxX,this.minY,this.maxY)};var TileMatrixSetDao=function(connection){Dao.call(this,connection);this.connection=connection};util.inherits(TileMatrixSetDao,Dao);TileMatrixSetDao.prototype.createObject=function(){return new TileMatrixSet};TileMatrixSetDao.prototype.getTileTables=function(callback){var tableNames=[];this.connection.each("select "+TileMatrixSetDao.COLUMN_TABLE_NAME+" from "+TileMatrixSetDao.TABLE_NAME,function(err,result){if(err)return callback(err);tableNames.push(result[TileMatrixSetDao.COLUMN_TABLE_NAME])},function(err,numberOfResults){callback(err,tableNames)})};TileMatrixSetDao.prototype.getProjection=function(tileMatrixSet,callback){this.getSrs(tileMatrixSet,function(err,srs){if(err)return callback(err);if(!srs)return callback();var srsDao=this.getSpatialReferenceSystemDao();callback(null,srsDao.getProjection(srs))}.bind(this))};TileMatrixSetDao.prototype.getSrs=function(tileMatrixSet,callback){var dao=this.getSpatialReferenceSystemDao();dao.queryForIdObject(tileMatrixSet.srsId,callback)};TileMatrixSetDao.prototype.getContents=function(tileMatrixSet,callback){var dao=this.getContentsDao();dao.queryForIdObject(tileMatrixSet.tableName,callback)};TileMatrixSetDao.prototype.getSpatialReferenceSystemDao=function(){return new SpatialReferenceSystemDao(this.connection)};TileMatrixSetDao.prototype.getContentsDao=function(){var ContentsDao=require("../../core/contents").ContentsDao;return new ContentsDao(this.connection)};TileMatrixSet.TABLE_NAME="tableName";TileMatrixSet.MIN_X="minX";TileMatrixSet.MIN_Y="minY";TileMatrixSet.MAX_X="maxX";TileMatrixSet.MAX_Y="maxY";TileMatrixSet.SRS_ID="srsId";TileMatrixSetDao.TABLE_NAME="gpkg_tile_matrix_set";TileMatrixSetDao.COLUMN_PK="table_name";TileMatrixSetDao.COLUMN_TABLE_NAME="table_name";TileMatrixSetDao.COLUMN_SRS_ID="srs_id";TileMatrixSetDao.COLUMN_MIN_X="min_x";TileMatrixSetDao.COLUMN_MIN_Y="min_y";TileMatrixSetDao.COLUMN_MAX_X="max_x";TileMatrixSetDao.COLUMN_MAX_Y="max_y";TileMatrixSetDao.prototype.tableName="gpkg_tile_matrix_set";TileMatrixSetDao.prototype.idColumns=[TileMatrixSetDao.COLUMN_PK];TileMatrixSetDao.prototype.columns=[TileMatrixSetDao.COLUMN_TABLE_NAME,TileMatrixSetDao.COLUMN_SRS_ID,TileMatrixSetDao.COLUMN_MIN_X,TileMatrixSetDao.COLUMN_MIN_Y,TileMatrixSetDao.COLUMN_MAX_X,TileMatrixSetDao.COLUMN_MAX_Y];TileMatrixSetDao.prototype.columnToPropertyMap={};TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_TABLE_NAME]=TileMatrixSet.TABLE_NAME;TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_SRS_ID]=TileMatrixSet.SRS_ID;TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_MIN_X]=TileMatrixSet.MIN_X;TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_MIN_Y]=TileMatrixSet.MIN_Y;TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_MAX_X]=TileMatrixSet.MAX_X;TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_MAX_Y]=TileMatrixSet.MAX_Y;TileMatrixSetDao.columnIndexToPropertyMap=[TileMatrixSet.TABLE_NAME,TileMatrixSet.SRS_ID,TileMatrixSet.MIN_X,TileMatrixSet.MIN_Y,TileMatrixSet.MAX_X,TileMatrixSet.MAX_Y];module.exports.TileMatrixSetDao=TileMatrixSetDao;module.exports.TileMatrixSet=TileMatrixSet},{"../../boundingBox":"/data/github/geopackage-node/lib/boundingBox.js","../../core/contents":"/data/github/geopackage-node/lib/core/contents/index.js","../../core/srs":"/data/github/geopackage-node/lib/core/srs/index.js","../../dao/dao":"/data/github/geopackage-node/lib/dao/dao.js",util:"/data/github/geopackage-node/node_modules/browserify/node_modules/util/util.js"}],"/data/github/geopackage-node/lib/tiles/retriever/index.js":[function(require,module,exports){var TileMatrixSetDao=require("../matrixset").TileMatrixSetDao,TileBoundingBoxUtils=require("../tileBoundingBoxUtils"),TileCreator=require("../creator");var async=require("async");var GeoPackageTileRetriever=function(tileDao,width,height){this.tileDao=tileDao;this.tileDao.adjustTileMatrixLengths();this.width=width;this.height=height};module.exports=GeoPackageTileRetriever;GeoPackageTileRetriever.prototype.getWebMercatorBoundingBox=function(callback){if(this.setWebMercatorBoundingBox){return callback(null,this.setWebMercatorBoundingBox)}else{var tileMatrixSetDao=new TileMatrixSetDao(this.tileDao.connection);var tileMatrixSet=this.tileDao.tileMatrixSet;tileMatrixSetDao.getSrs(tileMatrixSet,function(err,srs){this.setProjectionBoundingBox=tileMatrixSet.getBoundingBox();this.setWebMercatorBoundingBox=this.setProjectionBoundingBox.projectBoundingBox("EPSG:3857","EPSG:3857");callback(null,this.setWebMercatorBoundingBox)}.bind(this))}};GeoPackageTileRetriever.prototype.hasTile=function(x,y,zoom,callback){var webMercatorBoundingBox=TileBoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(x,y,zoom);this.getTileMatrixWithWebMercatorBoundingBox(webMercatorBoundingBox,function(err,tileMatrix){var tileResults=[];this.retrieveTileResults(webMercatorBoundingBox,tileMatrix,function(err,result){tileResults.push(result)},function(err){if(tileResults&&tileResults.length>0){return callback(err,true)}callback(err,false)})}.bind(this))};GeoPackageTileRetriever.prototype.getTile=function(x,y,zoom,callback){var webMercatorBoundingBox=TileBoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(x,y,zoom);this.getTileWithBounds(webMercatorBoundingBox,zoom,callback)};GeoPackageTileRetriever.prototype.getTileWithWgs84Bounds=function(wgs84BoundingBox,zoom,callback){var webMercatorBoundingBox=wgs84BoundingBox.projectBoundingBox("EPSG:4326","EPSG:3857");this.getTileWithBounds(webMercatorBoundingBox,zoom,callback)};GeoPackageTileRetriever.prototype.getTileWithBounds=function(webMercatorBoundingBox,zoom,callback){var tiles=[];this.getTileMatrixWithWebMercatorBoundingBox(webMercatorBoundingBox,zoom,function(err,tileMatrix){if(err||!tileMatrix)return callback();var tileWidth=tileMatrix.tileWidth;var tileHeight=tileMatrix.tileHeight;TileCreator.initialize(this.width||tileWidth,this.height||tileHeight,function(err,creator){this.retrieveTileResults(webMercatorBoundingBox,tileMatrix,function(err,tile){this.getWebMercatorBoundingBox(function(err,box){var tileWebMercatorBoundingBox=TileBoundingBoxUtils.getWebMercatorBoundingBox(box,tileMatrix,tile.getTileColumn(),tile.getTileRow());var overlap=TileBoundingBoxUtils.overlapWithBoundingBox(webMercatorBoundingBox,tileWebMercatorBoundingBox);if(overlap){var xOffset=Math.round(TileBoundingBoxUtils.getXPixelOffset(this.width||tileWidth,webMercatorBoundingBox,tileWebMercatorBoundingBox.minLongitude));var yOffset=Math.round(TileBoundingBoxUtils.getYPixelOffset(this.height||tileHeight,webMercatorBoundingBox,tileWebMercatorBoundingBox.maxLatitude));if(xOffset<=-(this.height||tileHeight)||xOffset>=(this.height||tileHeight)||yOffset<=-(this.width||tileWidth)||yOffset>=(this.width||tileWidth)){}else{tiles.push({data:tile.getTileData(),xOffset:xOffset,yOffset:yOffset})}}}.bind(this))}.bind(this),function(err){async.eachSeries(tiles,function(tile,callback){creator.addTile(tile.data,tile.xOffset,tile.yOffset,callback)},function(err){creator.getCompleteTile("png",callback)})})}.bind(this))}.bind(this))};GeoPackageTileRetriever.prototype.getTileMatrixWithWebMercatorBoundingBox=function(webMercatorBoundingBox,zoom,callback){if(!callback){callback=zoom;zoom=undefined}var tileMatrix;this.getWebMercatorBoundingBox(function(err,setWebMercatorBoundingBox){var overlap=TileBoundingBoxUtils.overlapWithBoundingBox(webMercatorBoundingBox,setWebMercatorBoundingBox);if(overlap){var distance=webMercatorBoundingBox.maxLongitude-webMercatorBoundingBox.minLongitude;var zoomLevel=zoom;if(zoom===undefined||zoom===null){zoomLevel=this.tileDao.getZoomLevelWithLength(distance)}if(zoomLevel!==undefined&&zoomLevel!==null){tileMatrix=this.tileDao.getTileMatrixWithZoomLevel(zoomLevel)}}callback(null,tileMatrix)}.bind(this))};GeoPackageTileRetriever.prototype.retrieveTileResults=function(webMercatorBoundingBox,tileMatrix,tileCallback,doneCallback){if(tileMatrix){this.getWebMercatorBoundingBox(function(err,setWebMercatorBoundingBox){var tileGrid=TileBoundingBoxUtils.getTileGridWithWebMercatorTotalBoundingBox(setWebMercatorBoundingBox,tileMatrix.matrixWidth,tileMatrix.matrixHeight,webMercatorBoundingBox);this.tileDao.queryByTileGrid(tileGrid,tileMatrix.zoomLevel,tileCallback,doneCallback)}.bind(this))}else{doneCallback()}}},{"../creator":"/data/github/geopackage-node/lib/tiles/creator/index.js","../matrixset":"/data/github/geopackage-node/lib/tiles/matrixset/index.js","../tileBoundingBoxUtils":"/data/github/geopackage-node/lib/tiles/tileBoundingBoxUtils.js",async:"/data/github/geopackage-node/node_modules/async/lib/async.js"}],"/data/github/geopackage-node/lib/tiles/tileBoundingBoxUtils.js":[function(require,module,exports){var BoundingBox=require("../boundingBox"),TileGrid=require("./tileGrid");var proj4=require("proj4");var WEB_MERCATOR_HALF_WORLD_WIDTH=20037508.342789244;module.exports.overlapWithBoundingBox=function(boundingBox,boundingBox2){var minLongitude=Math.max(boundingBox.minLongitude,boundingBox2.minLongitude);var maxLongitude=Math.min(boundingBox.maxLongitude,boundingBox2.maxLongitude);var minLatitude=Math.max(boundingBox.minLatitude,boundingBox2.minLatitude);var maxLatitude=Math.min(boundingBox.maxLatitude,boundingBox2.maxLatitude);var overlap;if(minLongitude=0){if(minColumn<0){minColumn=0}if(maxColumn>=matrixWidth){maxColumn=matrixWidth-1}}var maxRow=module.exports.getTileRowWithWebMercatorTotalBoundingBox(webMercatorTotalBox,matrixHeight,webMercatorBoundingBox.minLatitude,true);var minRow=module.exports.getTileRowWithWebMercatorTotalBoundingBox(webMercatorTotalBox,matrixHeight,webMercatorBoundingBox.maxLatitude);if(minRow=0){if(minRow<0){minRow=0}if(maxRow>=matrixHeight){maxRow=matrixHeight-1}}var tileGrid=new TileGrid(minColumn,maxColumn,minRow,maxRow);return tileGrid};module.exports.getTileColumnWithWebMercatorTotalBoundingBox=function(webMercatorTotalBox,matrixWidth,longitude,max){var minX=webMercatorTotalBox.minLongitude;var maxX=webMercatorTotalBox.maxLongitude;var tileId;if(longitude=maxX){tileId=matrixWidth}else{var matrixWidthMeters=maxX-minX;var tileWidth=matrixWidthMeters/matrixWidth;var tileIdDouble=(longitude-minX)/tileWidth;tileId=parseInt(tileIdDouble);if(max){if(tileIdDouble===tileId){tileId--}}}return tileId};module.exports.getTileRowWithWebMercatorTotalBoundingBox=function(webMercatorTotalBox,matrixHeight,latitude,max){var minY=webMercatorTotalBox.minLatitude;var maxY=webMercatorTotalBox.maxLatitude;var tileId;if(latitude=maxY){tileId=-1}else{var matrixHeightMeters=maxY-minY;var tileHeight=matrixHeightMeters/matrixHeight;var tileIdDouble=(maxY-latitude)/tileHeight;tileId=parseInt(tileIdDouble);if(max){if(tileIdDouble===tileId){tileId--}}}return tileId};module.exports.getWebMercatorBoundingBox=function(webMercatorTotalBox,tileMatrix,tileColumn,tileRow){var tileMatrixWidth=tileMatrix.matrixWidth;var tileMatrixHeight=tileMatrix.matrixHeight;var tileGrid=new TileGrid(tileColumn,tileColumn,tileRow,tileRow);var matrixMinX=webMercatorTotalBox.minLongitude;var matrixMaxX=webMercatorTotalBox.maxLongitude;var matrixWidth=matrixMaxX-matrixMinX;var tileWidth=matrixWidth/tileMatrixWidth;var minLon=matrixMinX+tileWidth*tileGrid.minX;var maxLon=minLon+tileWidth*(tileGrid.maxX+1-tileGrid.minX);var matrixMinY=webMercatorTotalBox.minLatitude;var matrixMaxY=webMercatorTotalBox.maxLatitude;var matrixHeight=matrixMaxY-matrixMinY;var tileHeight=matrixHeight/tileMatrixHeight;var maxLat=matrixMaxY-tileHeight*tileGrid.minY;var minLat=maxLat-tileHeight*(tileGrid.maxY+1-tileGrid.minY);var boundingBox=new BoundingBox(minLon,maxLon,minLat,maxLat);return boundingBox};module.exports.getWebMercatorBoundingBoxWithWebMercatorTotalBoundingBox=function(webMercatorTotalBox,tileMatrixWidth,tileMatrixHeight,tileGrid){var matrixMinX=webMercatorTotalBox.minLongitude;var matrixMaxX=webMercatorTotalBox.maxLongitude;var matrixWidth=matrixMaxX-matrixMinX;var tileWidth=matrixWidth/tileMatrixWidth;var minLon=matrixMinX+tileWidth*tileGrid.minX;var maxLon=minLon+tileWidth*(tileGrid.maxX+1-tileGrid.minX);var matrixMinY=webMercatorTotalBox.minLatitude;var matrixMaxY=webMercatorTotalBox.maxLatitude;var matrixHeight=matrixMaxY-matrixMinY;var tileHeight=matrixHeight/tileMatrixHeight;var maxLat=matrixMaxY-tileHeight*tileGrid.minY;var minLat=maxLat-tileHeight*(tileGrid.maxY+1-tileGrid.minY);return new BoundingBox(minLon,maxLon,minLat,maxLat)}},{"../boundingBox":"/data/github/geopackage-node/lib/boundingBox.js","./tileGrid":"/data/github/geopackage-node/lib/tiles/tileGrid.js",proj4:"/data/github/geopackage-node/node_modules/proj4/lib/index.js"}],"/data/github/geopackage-node/lib/tiles/tileGrid.js":[function(require,module,exports){var TileGrid=function(minX,maxX,minY,maxY){this.minX=minX;this.maxX=maxX;this.minY=minY;this.maxY=maxY};TileGrid.prototype.count=function(){return(this.maxX+1-this.minX)*(this.maxY+1-this.minY)};TileGrid.prototype.equals=function(tileGrid){if(!tileGrid)return false;return this.minX===tileGrid.minX&&this.maxX===tileGrid.maxX&&this.minY===tileGrid.minY&&this.maxY===tileGrid.maxY};module.exports=TileGrid},{}],"/data/github/geopackage-node/lib/tiles/user/tileColumn.js":[function(require,module,exports){var UserColumn=require("../../user/userColumn"),DataTypes=require("../../db/dataTypes"),TileTable=require("./tileTable");var util=require("util");var TileColumn=function(index,name,dataType,max,notNull,defaultValue,primaryKey){UserColumn.call(this,index,name,dataType,max,notNull,defaultValue,primaryKey);if(dataType===DataTypes.GPKG_DT_GEOMETRY){throw new Error("Data Type is required to create column: "+name)}};util.inherits(TileColumn,UserColumn);TileColumn.createIdColumn=function(index){return new TileColumn(index,TileTable.COLUMN_ID,DataTypes.GPKG_DT_INTEGER,null,false,null,true)};TileColumn.createZoomLevelColumn=function(index){return new TileColumn(index,TileTable.COLUMN_ZOOM_LEVEL,DataTypes.GPKG_DT_INTEGER,null,true,null,false)};TileColumn.createTileColumnColumn=function(index){return new TileColumn(index,TileTable.COLUMN_TILE_COLUMN,DataTypes.GPKG_DT_INTEGER,null,true,null,false)};TileColumn.createTileRowColumn=function(index){return new TileColumn(index,TileTable.COLUMN_TILE_ROW,DataTypes.GPKG_DT_INTEGER,null,true,null,false)};TileColumn.createTileDataColumn=function(index){return new TileColumn(index,TileTable.COLUMN_TILE_DATA,DataTypes.GPKG_DT_BLOB,null,true,null,false)};module.exports=TileColumn},{"../../db/dataTypes":"/data/github/geopackage-node/lib/db/dataTypes.js","../../user/userColumn":"/data/github/geopackage-node/lib/user/userColumn.js","./tileTable":"/data/github/geopackage-node/lib/tiles/user/tileTable.js",util:"/data/github/geopackage-node/node_modules/browserify/node_modules/util/util.js"}],"/data/github/geopackage-node/lib/tiles/user/tileDao.js":[function(require,module,exports){var UserDao=require("../../user/UserDao"),TileGrid=require("../tileGrid"),TileRow=require("./tileRow"),TileMatrixSetDao=require("../matrixset").TileMatrixSetDao,BoundingBoxUtils=require("../tileBoundingBoxUtils"),ColumnValues=require("../../dao/columnValues"),TileTable=require("./tileTable"),TileDaoUtils=require("./tileDaoUtils");var util=require("util"),proj4=require("proj4"),async=require("async");var TileDao=function(connection,table,tileMatrixSet,tileMatrices,callback){UserDao.call(this,connection,table);this.connection=connection;this.tileMatrixSet=tileMatrixSet;this.tileMatrices=tileMatrices;this.zoomLevelToTileMatrix=[];this.widths=[];this.heights=[];if(tileMatrices.length===0){this.minZoom=0;this.maxZoom=0}else{this.minZoom=this.tileMatrices[0].zoomLevel;this.maxZoom=this.tileMatrices[this.tileMatrices.length-1].zoomLevel}for(var i=this.tileMatrices.length-1;i>=0;i--){var tileMatrix=this.tileMatrices[i];this.zoomLevelToTileMatrix[tileMatrix.zoomLevel]=tileMatrix}this.initialize(callback)};util.inherits(TileDao,UserDao);TileDao.prototype.initialize=function(callback){var tileMatrixSetDao=this.getTileMatrixSetDao();tileMatrixSetDao.getSrs(this.tileMatrixSet,function(err,srs){if(srs.definition&&srs.definition!=="undefined"){this.projection=proj4(srs.definition)}else{this.projection=proj4(srs.organization+":"+srs.organizationCoordsysId)}for(var i=this.tileMatrices.length-1;i>=0;i--){var tileMatrix=this.tileMatrices[i];var width=tileMatrix.pixelXSize*parseInt(tileMatrix.tileWidth);var height=tileMatrix.pixelYSize*parseInt(tileMatrix.tileHeight);if(this.projection.to_meter){width=this.projection.to_meter*tileMatrix.pixelXSize*parseInt(tileMatrix.tileWidth);height=this.projection.to_meter*tileMatrix.pixelYSize*parseInt(tileMatrix.tileHeight)}this.widths.push(width);this.heights.push(height)}callback(null,this)}.bind(this))};TileDao.prototype.createObject=function(){throw new Error("not implemented")};TileDao.prototype.getBoundingBoxWithZoomLevel=function(zoomLevel,callback){var boundingBox;var tileMatrix=this.getTileMatrixWithZoomLevel(zoomLevel);if(tileMatrix){this.queryForTileGridWithZoomLevel(zoomLevel,function(err,tileGrid){if(tileGrid){var matrixSetBoundingBox=this.getBoundingBox();boundingBox=BoundingBoxUtils.getWebMercatorBoundingBoxWithWebMercatorTotalBoundingBox(matrixSetBoundingBox,tileMatrix.matrixWidth,tileMatrix.matrixHeight,tileGrid)}callback(err,boundingBox)}.bind(this))}else{callback(null,boundingBox)}};TileDao.prototype.getBoundingBox=function(){return this.tileMatrixSet.getBoundingBox()};TileDao.prototype.queryForTileGridWithZoomLevel=function(zoomLevel,callback){var where=this.buildWhereWithFieldAndValue(TileTable.COLUMN_ZOOM_LEVEL,zoomLevel);var whereArgs=this.buildWhereArgsWithValue(zoomLevel);async.series({minX:function(callback){this.minOfColumn(TileTable.COLUMN_TILE_COLUMN,where,whereArgs,callback)}.bind(this),maxX:function(callback){this.maxOfColumn(TileTable.COLUMN_TILE_COLUMN,where,whereArgs,callback)}.bind(this),minY:function(callback){this.minOfColumn(TileTable.COLUMN_TILE_ROW,where,whereArgs,callback)}.bind(this),maxY:function(callback){this.maxOfColumn(TileTable.COLUMN_TILE_ROW,where,whereArgs,callback)}.bind(this)},function(err,results){if(err)return callback(err);var tileGrid;if(results.minX!=null&&results.minY!=null&&results.maxX!=null&&results.maxY!=null){tileGrid=new TileGrid(results.minX,results.maxX,results.minY,results.maxY)}callback(err,tileGrid)})};TileDao.prototype.getTileGridWithZoomLevel=function(zoomLevel){var tileGrid;var tileMatrix=this.getTileMatrixWithZoomLevel(zoomLevel);if(tileMatrix){tileGrid=new TileGrid(0,parseInt(tileMatrix.matrixWidth)-1,0,parseInt(tileMatrix.matrixHeight)-1)}return tileGrid};TileDao.prototype.getTileTable=function(){return this.table};TileDao.prototype.getTileRow=function(result){return this.getRow(result)};TileDao.prototype.newRowWithColumnTypes=function(columnTypes,values){return new TileRow(this.getTileTable(),columnTypes,values)};TileDao.prototype.newRow=function(){return new TileRow(this.getTileTable())};TileDao.prototype.adjustTileMatrixLengths=function(){TileDaoUtils.adjustTileMatrixLengths(this.tileMatrixSet,this.tileMatrices)};TileDao.prototype.getTileMatrixWithZoomLevel=function(zoomLevel){return this.zoomLevelToTileMatrix[zoomLevel]};TileDao.prototype.queryForTile=function(column,row,zoomLevel,callback){var fieldValues=new ColumnValues;fieldValues.addColumn(TileTable.COLUMN_TILE_COLUMN,column);fieldValues.addColumn(TileTable.COLUMN_TILE_ROW,row);fieldValues.addColumn(TileTable.COLUMN_ZOOM_LEVEL,zoomLevel);this.queryForFieldValues(fieldValues,function(err,result){var tileRow=this.getTileRow(result);callback(err,tileRow)}.bind(this))};TileDao.prototype.queryForTilesWithZoomLevel=function(zoomLevel,tileCallback,doneCallback){this.queryForEqWithFieldAndValue(TileTable.COLUMN_ZOOM_LEVEL,zoomLevel,function(err,result){if(!tileCallback)return;if(err||!result)return tileCallback(err);tileCallback(err,this.getTileRow(result))}.bind(this),doneCallback)};TileDao.prototype.queryForTilesDescending=function(zoomLevel,tileCallback,doneCallback){this.queryForEqWithField(TileTable.COLUMN_ZOOM_LEVEL,zoomLevel,undefined,undefined,TileTable.COLUMN_TILE_COLUMN+" DESC, "+TileTable.COLUMN_TILE_ROW+", DESC",function(err,result){if(!tileCallback)return;if(err||!result)return tileCallback(err);tileCallback(err,this.getTileRow(result))}.bind(this),doneCallback)};TileDao.prototype.queryForTilesInColumn=function(column,zoomLevel,tileCallback,doneCallback){var fieldValues=new ColumnValues;fieldValues.addColumn(TileTable.COLUMN_TILE_COLUMN,column);fieldValues.addColumn(TileTable.COLUMN_ZOOM_LEVEL,zoomLevel);this.queryForFieldValues(fieldValues,function(err,result){if(!tileCallback)return;if(err||!result)return tileCallback(err);tileCallback(err,this.getTileRow(result))}.bind(this),doneCallback)};TileDao.prototype.queryForTilesInRow=function(row,zoomLevel,tileCallback,doneCallback){var fieldValues=new ColumnValues;fieldValues.addColumn(TileTable.COLUMN_TILE_ROW,row);fieldValues.addColumn(TileTable.COLUMN_ZOOM_LEVEL,zoomLevel);this.queryForFieldValues(fieldValues,function(err,result){if(!tileCallback)return;if(err||!result)return tileCallback(err);tileCallback(err,this.getTileRow(result))}.bind(this),doneCallback)};TileDao.prototype.getZoomLevelWithLength=function(length){return TileDaoUtils.getZoomLevel(this.widths,this.heights,this.tileMatrices,length)};TileDao.prototype.queryByTileGrid=function(tileGrid,zoomLevel,tileCallback,doneCallback){if(!tileGrid)return doneCallback();var where="";where+=this.buildWhereWithFieldAndValue(TileTable.COLUMN_ZOOM_LEVEL,zoomLevel);where+=" and ";where+=this.buildWhereWithFieldAndValueAndOperation(TileTable.COLUMN_TILE_COLUMN,tileGrid.minX,">=");where+=" and ";where+=this.buildWhereWithFieldAndValueAndOperation(TileTable.COLUMN_TILE_COLUMN,tileGrid.maxX,"<=");where+=" and ";where+=this.buildWhereWithFieldAndValueAndOperation(TileTable.COLUMN_TILE_ROW,tileGrid.minY,">=");where+=" and ";where+=this.buildWhereWithFieldAndValueAndOperation(TileTable.COLUMN_TILE_ROW,tileGrid.maxY,"<=");var whereArgs=this.buildWhereArgsWithValueArray([zoomLevel,tileGrid.minX,tileGrid.maxX,tileGrid.minY,tileGrid.maxY]);this.queryWhereWithArgsDistinct(where,whereArgs,function(err,result){if(!tileCallback)return;if(err||!result)return tileCallback(err);tileCallback(err,this.getTileRow(result))}.bind(this),doneCallback)};TileDao.prototype.getTileMatrixSetDao=function(){return new TileMatrixSetDao(this.connection)};module.exports=TileDao},{"../../dao/columnValues":"/data/github/geopackage-node/lib/dao/columnValues.js","../../user/UserDao":"/data/github/geopackage-node/lib/user/UserDao.js","../matrixset":"/data/github/geopackage-node/lib/tiles/matrixset/index.js","../tileBoundingBoxUtils":"/data/github/geopackage-node/lib/tiles/tileBoundingBoxUtils.js","../tileGrid":"/data/github/geopackage-node/lib/tiles/tileGrid.js","./tileDaoUtils":"/data/github/geopackage-node/lib/tiles/user/tileDaoUtils.js","./tileRow":"/data/github/geopackage-node/lib/tiles/user/tileRow.js","./tileTable":"/data/github/geopackage-node/lib/tiles/user/tileTable.js",async:"/data/github/geopackage-node/node_modules/async/lib/async.js",proj4:"/data/github/geopackage-node/node_modules/proj4/lib/index.js",util:"/data/github/geopackage-node/node_modules/browserify/node_modules/util/util.js"}],"/data/github/geopackage-node/lib/tiles/user/tileDaoUtils.js":[function(require,module,exports){module.exports.adjustTileMatrixLengths=function(tileMatrixSet,tileMatrices){var tileMatrixWidth=tileMatrixSet.maxX-tileMatrixSet.minX;var tileMatrixHeight=tileMatrixSet.maxY-tileMatrixSet.minY;for(var i=0;iparseInt(tileMatrix.matrixWidth)){tileMatrix.matrixWidth=parseInt(tempMatrixWidth)}if(tempMatrixHeight>parseInt(tileMatrix.matrixHeight)){tileMatrix.matrixHeight=parseInt(tempMatrixHeight)}}};module.exports.getZoomLevel=function(widths,heights,tileMatrices,length){var zoomLevel;var widthIndex=widths.length;var heightIndex=heights.length;for(var i=0;ilength){widthIndex=i;break}}for(var i=0;ilength){heightIndex=i;break}}if(widthIndex===0){if(length=widths[widthIndex-1]/.51){widthIndex=-1}else{widthIndex=widthIndex-1}}else if(length-widths[widthIndex-1]=heights[heightIndex-1]/.51){heightIndex=-1}else{heightIndex=heightIndex-1}}else if(length-heights[heightIndex-1]=0&&heightIndex>=0){var index=widthIndex=0){var tileMatrix=tileMatrices[tileMatrices.length-index-1];zoomLevel=tileMatrix.zoomLevel}}return zoomLevel}},{}],"/data/github/geopackage-node/lib/tiles/user/tileRow.js":[function(require,module,exports){var UserRow=require("../../user/UserRow");var util=require("util");var TileRow=function(tileTable,columnTypes,values){UserRow.call(this,tileTable,columnTypes,values);this.tileTable=tileTable};util.inherits(TileRow,UserRow);TileRow.prototype.toObjectValue=function(value){return value};TileRow.prototype.toDatabaseValue=function(value){return value};TileRow.prototype.getZoomLevelColumnIndex=function(){return this.tileTable.zoomLevelIndex};TileRow.prototype.getZoomLevelColumn=function(){return this.tileTable.getZoomLevelColumn()};TileRow.prototype.getZoomLevel=function(){return this.getValueWithColumnName(this.getZoomLevelColumn().name)};TileRow.prototype.setZoomLevel=function(zoomLevel){this.setValueWithIndex(this.getZoomLevelColumnIndex(),zoomLevel)};TileRow.prototype.getTileColumnColumnIndex=function(){return this.tileTable.tileColumnIndex};TileRow.prototype.getTileColumnColumn=function(){return this.tileTable.getTileColumnColumn()};TileRow.prototype.getTileColumn=function(){return this.getValueWithColumnName(this.getTileColumnColumn().name)};TileRow.prototype.setTileColumn=function(tileColumn){this.setValueWithColumnName(this.getTileColumnColumn().name,tileColumn)};TileRow.prototype.getTileRowColumnIndex=function(){return this.tileTable.tileRowIndex};TileRow.prototype.getTileRowColumn=function(){return this.tileTable.getTileRowColumn()};TileRow.prototype.getTileRow=function(){return this.getValueWithColumnName(this.getTileRowColumn().name)};TileRow.prototype.setTileRow=function(tileRow){this.setValueWithColumnName(this.getTileRowColumn().name,tileRow)};TileRow.prototype.getTileDataColumnIndex=function(){return this.tileTable.tileDataIndex};TileRow.prototype.getTileDataColumn=function(){return this.tileTable.getTileDataColumn()};TileRow.prototype.getTileData=function(){return this.getValueWithColumnName(this.getTileDataColumn().name)};TileRow.prototype.setTileData=function(tileData){this.setValueWithColumnName(this.getTileDataColumn().name,tileData)};TileRow.prototype.getTileDataImage=function(){};module.exports=TileRow},{"../../user/UserRow":"/data/github/geopackage-node/lib/user/UserRow.js",util:"/data/github/geopackage-node/node_modules/browserify/node_modules/util/util.js"}],"/data/github/geopackage-node/lib/tiles/user/tileTable.js":[function(require,module,exports){var UserTable=require("../../user/userTable");var util=require("util");var TileTable=function(tableName,columns){UserTable.call(this,tableName,columns);var zoomLevel;var tileColumn;var tileRow;var tileData;for(var i=0;i-1){var maxString=type.substring(maxStart+1,type.length-1);if(maxString!==""){max=parseInt(maxString);type=type.substring(0,maxStart)}}}var defaultValueIndex=result[GPKG_UTR_DFLT_VALUE];try{var column=this.createColumnWithResults(result,index,name,type,max,notNull,defaultValueIndex,primarykey);columnList.push(column)}catch(e){console.err(e);return callback(e)}}if(columnList.length===0){return callback(new Error("Table does not exist: "+this.tableName))}var table=this.createTableWithNameAndColumns(this.tableName,columnList);callback(null,table)}.bind(this))};UserTableReader.prototype.createColumnWithResults=function(result,index,name,type,max,notNull,defaultValueIndex,primaryKey){var dataType=DataTypes.fromName(type);var defaultValue=undefined;if(defaultValueIndex){}return new UserColumn(index,name,dataType,max,notNull,defaultValue,primaryKey)};UserTableReader.prototype.createTableWithNameAndColumns=function(tableName,columns){return new UserTable(tableName,columns)};module.exports=UserTableReader},{"../db/dataTypes":"/data/github/geopackage-node/lib/db/dataTypes.js","./userColumn":"/data/github/geopackage-node/lib/user/userColumn.js","./userTable":"/data/github/geopackage-node/lib/user/userTable.js"}],"/data/github/geopackage-node/lib/user/userColumn.js":[function(require,module,exports){var DataTypes=require("../db/dataTypes");function UserColumn(index,name,dataType,max,notNull,defaultValue,primaryKey){this.index=index;this.name=name;this.dataType=dataType;this.max=max;this.notNull=notNull,this.defaultValue=defaultValue;this.primaryKey=primaryKey;this.validateMax()}UserColumn.prototype.getTypeName=function(){var type=undefined;if(this.dataType!==DataTypes.GPKG_DT_GEOMETRY){type=DataTypes.name(this.dataType)}return type};UserColumn.prototype.validateMax=function(){if(this.max&&this.dataType!=="TEXT"&&this.dataType!=="BLOB"){throw new Error("Column max is only supported for TEXT and BLOB columns. column: "+self.name+", max: "+self.max+", type: "+self.dataType)}};module.exports=UserColumn},{"../db/dataTypes":"/data/github/geopackage-node/lib/db/dataTypes.js"}],"/data/github/geopackage-node/lib/user/userRow.js":[function(require,module,exports){arguments[4]["/data/github/geopackage-node/lib/user/UserRow.js"][0].apply(exports,arguments)},{}],"/data/github/geopackage-node/lib/user/userTable.js":[function(require,module,exports){var UserTable=function(tableName,columns){this.tableName=tableName;columns.sort(function(a,b){return a.index-b.index});for(var i=0;i=0&&arr.length%1===0}function _arrayEach(arr,iterator){var index=-1,length=arr.length;while(++index3){eachfn(arr,limit,iteratee,done)}else{cb=iterator;iterator=limit;eachfn(arr,iteratee,done)}}}async.any=async.some=_createTester(async.eachOf,toBool,identity);async.someLimit=_createTester(async.eachOfLimit,toBool,identity);async.all=async.every=_createTester(async.eachOf,notId,notId);async.everyLimit=_createTester(async.eachOfLimit,notId,notId);function _findGetResult(v,x){return x}async.detect=_createTester(async.eachOf,identity,_findGetResult);async.detectSeries=_createTester(async.eachOfSeries,identity,_findGetResult);async.detectLimit=_createTester(async.eachOfLimit,identity,_findGetResult);async.sortBy=function(arr,iterator,callback){async.map(arr,function(x,callback){iterator(x,function(err,criteria){if(err){callback(err)}else{callback(null,{value:x,criteria:criteria})}})},function(err,results){if(err){return callback(err)}else{callback(null,_map(results.sort(comparator),function(x){return x.value}))}});function comparator(left,right){var a=left.criteria,b=right.criteria;return ab?1:0}};async.auto=function(tasks,concurrency,callback){if(typeof arguments[1]==="function"){callback=concurrency;concurrency=null}callback=_once(callback||noop);var keys=_keys(tasks);var remainingTasks=keys.length;if(!remainingTasks){return callback(null)}if(!concurrency){concurrency=remainingTasks}var results={};var runningTasks=0;var hasError=false;var listeners=[];function addListener(fn){listeners.unshift(fn)}function removeListener(fn){var idx=_indexOf(listeners,fn);if(idx>=0)listeners.splice(idx,1)}function taskComplete(){remainingTasks--;_arrayEach(listeners.slice(0),function(fn){fn()})}addListener(function(){if(!remainingTasks){callback(null,results)}});_arrayEach(keys,function(k){if(hasError)return;var task=_isArray(tasks[k])?tasks[k]:[tasks[k]];var taskCallback=_restParam(function(err,args){runningTasks--;if(args.length<=1){args=args[0]}if(err){var safeResults={};_forEachOf(results,function(val,rkey){safeResults[rkey]=val});safeResults[k]=args;hasError=true;callback(err,safeResults)}else{results[k]=args;async.setImmediate(taskComplete)}});var requires=task.slice(0,task.length-1);var len=requires.length;var dep;while(len--){if(!(dep=tasks[requires[len]])){throw new Error("Has nonexistent dependency in "+requires.join(", "))}if(_isArray(dep)&&_indexOf(dep,k)>=0){throw new Error("Has cyclic dependencies")}}function ready(){return runningTasks3){throw new Error("Invalid arguments - must be either (task), (task, callback), (times, task) or (times, task, callback)")}else if(length<=2&&typeof times==="function"){callback=task;task=times}if(typeof times!=="function"){parseTimes(opts,times)}opts.callback=callback;opts.task=task;function wrappedTask(wrappedCallback,wrappedResults){function retryAttempt(task,finalAttempt){return function(seriesCallback){task(function(err,result){seriesCallback(!err||finalAttempt,{err:err,result:result})},wrappedResults)}}function retryInterval(interval){return function(seriesCallback){setTimeout(function(){seriesCallback(null)},interval)}}while(opts.times){var finalAttempt=!(opts.times-=1);attempts.push(retryAttempt(opts.task,finalAttempt));if(!finalAttempt&&opts.interval>0){attempts.push(retryInterval(opts.interval))}}async.series(attempts,function(done,data){data=data[data.length-1];(wrappedCallback||opts.callback)(data.err,data.result)})}return opts.callback?wrappedTask():wrappedTask};async.waterfall=function(tasks,callback){callback=_once(callback||noop);if(!_isArray(tasks)){var err=new Error("First argument to waterfall must be an array of functions");return callback(err)}if(!tasks.length){return callback()}function wrapIterator(iterator){return _restParam(function(err,args){if(err){callback.apply(null,[err].concat(args))}else{var next=iterator.next();if(next){args.push(wrapIterator(next))}else{args.push(callback)}ensureAsync(iterator).apply(null,args)}})}wrapIterator(async.iterator(tasks))()};function _parallel(eachfn,tasks,callback){callback=callback||noop;var results=_isArrayLike(tasks)?[]:{};eachfn(tasks,function(task,key,callback){task(_restParam(function(err,args){if(args.length<=1){args=args[0]}results[key]=args;callback(err)}))},function(err){callback(err,results)})}async.parallel=function(tasks,callback){_parallel(async.eachOf,tasks,callback)};async.parallelLimit=function(tasks,limit,callback){_parallel(_eachOfLimit(limit),tasks,callback)};async.series=function(tasks,callback){_parallel(async.eachOfSeries,tasks,callback)};async.iterator=function(tasks){function makeCallback(index){function fn(){if(tasks.length){tasks[index].apply(null,arguments)}return fn.next()}fn.next=function(){return index>>1);if(compare(item,sequence[mid])>=0){beg=mid}else{end=mid-1}}return beg}function _insert(q,data,priority,callback){if(callback!=null&&typeof callback!=="function"){throw new Error("task callback must be a function")}q.started=true;if(!_isArray(data)){data=[data]}if(data.length===0){return async.setImmediate(function(){q.drain()})}_arrayEach(data,function(task){var item={data:task,priority:priority,callback:typeof callback==="function"?callback:noop};q.tasks.splice(_binarySearch(q.tasks,item,_compareTasks)+1,0,item);if(q.tasks.length===q.concurrency){q.saturated()}async.setImmediate(q.process)})}var q=async.queue(worker,concurrency);q.push=function(data,priority,callback){_insert(q,data,priority,callback)};delete q.unshift;return q};async.cargo=function(worker,payload){return _queue(worker,1,payload)};function _console_fn(name){return _restParam(function(fn,args){fn.apply(null,args.concat([_restParam(function(err,args){if(typeof console==="object"){if(err){if(console.error){console.error(err)}}else if(console[name]){_arrayEach(args,function(x){console[name](x)})}}})]))})}async.log=_console_fn("log");async.dir=_console_fn("dir");async.memoize=function(fn,hasher){var memo={};var queues={};var has=Object.prototype.hasOwnProperty;hasher=hasher||identity;var memoized=_restParam(function memoized(args){var callback=args.pop();var key=hasher.apply(null,args);if(has.call(memo,key)){async.setImmediate(function(){callback.apply(null,memo[key])})}else if(has.call(queues,key)){ -queues[key].push(callback)}else{queues[key]=[callback];fn.apply(null,args.concat([_restParam(function(args){memo[key]=args;var q=queues[key];delete queues[key];for(var i=0,l=q.length;i1)return new Buffer(arg,arguments[1]);return new Buffer(arg)}if(!Buffer.TYPED_ARRAY_SUPPORT){this.length=0;this.parent=undefined}if(typeof arg==="number"){return fromNumber(this,arg)}if(typeof arg==="string"){return fromString(this,arg,arguments.length>1?arguments[1]:"utf8")}return fromObject(this,arg)}Buffer._augment=function(arr){arr.__proto__=Buffer.prototype;return arr};function fromNumber(that,length){that=allocate(that,length<0?0:checked(length)|0);if(!Buffer.TYPED_ARRAY_SUPPORT){for(var i=0;i>>1;if(fromPool)that.parent=rootParent;return that}function checked(length){if(length>=kMaxLength()){throw new RangeError("Attempt to allocate Buffer larger than maximum "+"size: 0x"+kMaxLength().toString(16)+" bytes")}return length|0}function SlowBuffer(subject,encoding){if(!(this instanceof SlowBuffer))return new SlowBuffer(subject,encoding);var buf=new Buffer(subject,encoding);delete buf.parent;return buf}Buffer.isBuffer=function isBuffer(b){return!!(b!=null&&b._isBuffer)};Buffer.compare=function compare(a,b){if(!Buffer.isBuffer(a)||!Buffer.isBuffer(b)){throw new TypeError("Arguments must be Buffers")}if(a===b)return 0;var x=a.length;var y=b.length;for(var i=0,len=Math.min(x,y);i>>1;case"base64":return base64ToBytes(string).length;default:if(loweredCase)return utf8ToBytes(string).length;encoding=(""+encoding).toLowerCase();loweredCase=true}}}Buffer.byteLength=byteLength;function slowToString(encoding,start,end){var loweredCase=false;start=start|0;end=end===undefined||end===Infinity?this.length:end|0;if(!encoding)encoding="utf8";if(start<0)start=0;if(end>this.length)end=this.length;if(end<=start)return"";while(true){switch(encoding){case"hex":return hexSlice(this,start,end);case"utf8":case"utf-8":return utf8Slice(this,start,end);case"ascii":return asciiSlice(this,start,end);case"binary":return binarySlice(this,start,end);case"base64":return base64Slice(this,start,end);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,start,end);default:if(loweredCase)throw new TypeError("Unknown encoding: "+encoding);encoding=(encoding+"").toLowerCase();loweredCase=true}}}Buffer.prototype._isBuffer=true;Buffer.prototype.toString=function toString(){var length=this.length|0;if(length===0)return"";if(arguments.length===0)return utf8Slice(this,0,length);return slowToString.apply(this,arguments)};Buffer.prototype.equals=function equals(b){if(!Buffer.isBuffer(b))throw new TypeError("Argument must be a Buffer");if(this===b)return true;return Buffer.compare(this,b)===0};Buffer.prototype.inspect=function inspect(){var str="";var max=exports.INSPECT_MAX_BYTES;if(this.length>0){str=this.toString("hex",0,max).match(/.{2}/g).join(" ");if(this.length>max)str+=" ... "}return""};Buffer.prototype.compare=function compare(b){if(!Buffer.isBuffer(b))throw new TypeError("Argument must be a Buffer");return Buffer.compare(this,b)};Buffer.prototype.indexOf=function indexOf(val,byteOffset){if(byteOffset>2147483647)byteOffset=2147483647;else if(byteOffset<-2147483648)byteOffset=-2147483648;byteOffset>>=0;if(this.length===0)return-1;if(byteOffset>=this.length)return-1;if(byteOffset<0)byteOffset=Math.max(this.length+byteOffset,0);if(typeof val==="string"){if(val.length===0)return-1;return String.prototype.indexOf.call(this,val,byteOffset)}if(Buffer.isBuffer(val)){return arrayIndexOf(this,val,byteOffset)}if(typeof val==="number"){if(Buffer.TYPED_ARRAY_SUPPORT&&Uint8Array.prototype.indexOf==="function"){return Uint8Array.prototype.indexOf.call(this,val,byteOffset)}return arrayIndexOf(this,[val],byteOffset)}function arrayIndexOf(arr,val,byteOffset){var foundIndex=-1;for(var i=0;byteOffset+iremaining){length=remaining}}var strLen=string.length;if(strLen%2!==0)throw new Error("Invalid hex string");if(length>strLen/2){length=strLen/2}for(var i=0;iremaining)length=remaining;if(string.length>0&&(length<0||offset<0)||offset>this.length){throw new RangeError("attempt to write outside buffer bounds")}if(!encoding)encoding="utf8";var loweredCase=false;for(;;){switch(encoding){case"hex":return hexWrite(this,string,offset,length);case"utf8":case"utf-8":return utf8Write(this,string,offset,length);case"ascii":return asciiWrite(this,string,offset,length);case"binary":return binaryWrite(this,string,offset,length);case"base64":return base64Write(this,string,offset,length);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,string,offset,length);default:if(loweredCase)throw new TypeError("Unknown encoding: "+encoding);encoding=(""+encoding).toLowerCase();loweredCase=true}}};Buffer.prototype.toJSON=function toJSON(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function base64Slice(buf,start,end){if(start===0&&end===buf.length){return base64.fromByteArray(buf)}else{return base64.fromByteArray(buf.slice(start,end))}}function utf8Slice(buf,start,end){end=Math.min(buf.length,end);var res=[];var i=start;while(i239?4:firstByte>223?3:firstByte>191?2:1;if(i+bytesPerSequence<=end){var secondByte,thirdByte,fourthByte,tempCodePoint;switch(bytesPerSequence){case 1:if(firstByte<128){codePoint=firstByte}break;case 2:secondByte=buf[i+1];if((secondByte&192)===128){tempCodePoint=(firstByte&31)<<6|secondByte&63;if(tempCodePoint>127){codePoint=tempCodePoint}}break;case 3:secondByte=buf[i+1];thirdByte=buf[i+2];if((secondByte&192)===128&&(thirdByte&192)===128){tempCodePoint=(firstByte&15)<<12|(secondByte&63)<<6|thirdByte&63;if(tempCodePoint>2047&&(tempCodePoint<55296||tempCodePoint>57343)){codePoint=tempCodePoint}}break;case 4:secondByte=buf[i+1];thirdByte=buf[i+2];fourthByte=buf[i+3];if((secondByte&192)===128&&(thirdByte&192)===128&&(fourthByte&192)===128){tempCodePoint=(firstByte&15)<<18|(secondByte&63)<<12|(thirdByte&63)<<6|fourthByte&63;if(tempCodePoint>65535&&tempCodePoint<1114112){codePoint=tempCodePoint}}}}if(codePoint===null){codePoint=65533;bytesPerSequence=1}else if(codePoint>65535){codePoint-=65536;res.push(codePoint>>>10&1023|55296);codePoint=56320|codePoint&1023}res.push(codePoint);i+=bytesPerSequence}return decodeCodePointsArray(res)}var MAX_ARGUMENTS_LENGTH=4096;function decodeCodePointsArray(codePoints){var len=codePoints.length;if(len<=MAX_ARGUMENTS_LENGTH){return String.fromCharCode.apply(String,codePoints)}var res="";var i=0;while(ilen)end=len;var out="";for(var i=start;ilen){start=len}if(end<0){end+=len;if(end<0)end=0}else if(end>len){end=len}if(endlength)throw new RangeError("Trying to access beyond buffer length")}Buffer.prototype.readUIntLE=function readUIntLE(offset,byteLength,noAssert){offset=offset|0;byteLength=byteLength|0;if(!noAssert)checkOffset(offset,byteLength,this.length);var val=this[offset];var mul=1;var i=0;while(++i0&&(mul*=256)){val+=this[offset+--byteLength]*mul}return val};Buffer.prototype.readUInt8=function readUInt8(offset,noAssert){if(!noAssert)checkOffset(offset,1,this.length);return this[offset]};Buffer.prototype.readUInt16LE=function readUInt16LE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);return this[offset]|this[offset+1]<<8};Buffer.prototype.readUInt16BE=function readUInt16BE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);return this[offset]<<8|this[offset+1]};Buffer.prototype.readUInt32LE=function readUInt32LE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return(this[offset]|this[offset+1]<<8|this[offset+2]<<16)+this[offset+3]*16777216};Buffer.prototype.readUInt32BE=function readUInt32BE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return this[offset]*16777216+(this[offset+1]<<16|this[offset+2]<<8|this[offset+3])};Buffer.prototype.readIntLE=function readIntLE(offset,byteLength,noAssert){offset=offset|0;byteLength=byteLength|0;if(!noAssert)checkOffset(offset,byteLength,this.length);var val=this[offset];var mul=1;var i=0;while(++i=mul)val-=Math.pow(2,8*byteLength);return val};Buffer.prototype.readIntBE=function readIntBE(offset,byteLength,noAssert){offset=offset|0;byteLength=byteLength|0;if(!noAssert)checkOffset(offset,byteLength,this.length);var i=byteLength;var mul=1;var val=this[offset+--i];while(i>0&&(mul*=256)){val+=this[offset+--i]*mul}mul*=128;if(val>=mul)val-=Math.pow(2,8*byteLength);return val};Buffer.prototype.readInt8=function readInt8(offset,noAssert){if(!noAssert)checkOffset(offset,1,this.length);if(!(this[offset]&128))return this[offset];return(255-this[offset]+1)*-1};Buffer.prototype.readInt16LE=function readInt16LE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);var val=this[offset]|this[offset+1]<<8;return val&32768?val|4294901760:val};Buffer.prototype.readInt16BE=function readInt16BE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);var val=this[offset+1]|this[offset]<<8;return val&32768?val|4294901760:val};Buffer.prototype.readInt32LE=function readInt32LE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return this[offset]|this[offset+1]<<8|this[offset+2]<<16|this[offset+3]<<24};Buffer.prototype.readInt32BE=function readInt32BE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return this[offset]<<24|this[offset+1]<<16|this[offset+2]<<8|this[offset+3]};Buffer.prototype.readFloatLE=function readFloatLE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,true,23,4)};Buffer.prototype.readFloatBE=function readFloatBE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,false,23,4)};Buffer.prototype.readDoubleLE=function readDoubleLE(offset,noAssert){if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,true,52,8)};Buffer.prototype.readDoubleBE=function readDoubleBE(offset,noAssert){if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,false,52,8)};function checkInt(buf,value,offset,ext,max,min){if(!Buffer.isBuffer(buf))throw new TypeError("buffer must be a Buffer instance");if(value>max||valuebuf.length)throw new RangeError("index out of range")}Buffer.prototype.writeUIntLE=function writeUIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset|0;byteLength=byteLength|0;if(!noAssert)checkInt(this,value,offset,byteLength,Math.pow(2,8*byteLength),0);var mul=1;var i=0;this[offset]=value&255;while(++i=0&&(mul*=256)){this[offset+i]=value/mul&255}return offset+byteLength};Buffer.prototype.writeUInt8=function writeUInt8(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,1,255,0);if(!Buffer.TYPED_ARRAY_SUPPORT)value=Math.floor(value);this[offset]=value&255;return offset+1};function objectWriteUInt16(buf,value,offset,littleEndian){if(value<0)value=65535+value+1;for(var i=0,j=Math.min(buf.length-offset,2);i>>(littleEndian?i:1-i)*8}}Buffer.prototype.writeUInt16LE=function writeUInt16LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,65535,0);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value&255;this[offset+1]=value>>>8}else{objectWriteUInt16(this,value,offset,true)}return offset+2};Buffer.prototype.writeUInt16BE=function writeUInt16BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,65535,0);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value>>>8;this[offset+1]=value&255}else{objectWriteUInt16(this,value,offset,false)}return offset+2};function objectWriteUInt32(buf,value,offset,littleEndian){if(value<0)value=4294967295+value+1;for(var i=0,j=Math.min(buf.length-offset,4);i>>(littleEndian?i:3-i)*8&255}}Buffer.prototype.writeUInt32LE=function writeUInt32LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,4294967295,0);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset+3]=value>>>24;this[offset+2]=value>>>16;this[offset+1]=value>>>8;this[offset]=value&255}else{objectWriteUInt32(this,value,offset,true)}return offset+4};Buffer.prototype.writeUInt32BE=function writeUInt32BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,4294967295,0);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&255}else{objectWriteUInt32(this,value,offset,false)}return offset+4};Buffer.prototype.writeIntLE=function writeIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset|0;if(!noAssert){var limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit)}var i=0;var mul=1;var sub=value<0?1:0;this[offset]=value&255;while(++i>0)-sub&255}return offset+byteLength};Buffer.prototype.writeIntBE=function writeIntBE(value,offset,byteLength,noAssert){value=+value;offset=offset|0;if(!noAssert){var limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit)}var i=byteLength-1;var mul=1;var sub=value<0?1:0;this[offset+i]=value&255;while(--i>=0&&(mul*=256)){this[offset+i]=(value/mul>>0)-sub&255}return offset+byteLength};Buffer.prototype.writeInt8=function writeInt8(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,1,127,-128);if(!Buffer.TYPED_ARRAY_SUPPORT)value=Math.floor(value);if(value<0)value=255+value+1;this[offset]=value&255;return offset+1};Buffer.prototype.writeInt16LE=function writeInt16LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,32767,-32768);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value&255;this[offset+1]=value>>>8}else{objectWriteUInt16(this,value,offset,true)}return offset+2};Buffer.prototype.writeInt16BE=function writeInt16BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,32767,-32768);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value>>>8;this[offset+1]=value&255}else{objectWriteUInt16(this,value,offset,false)}return offset+2};Buffer.prototype.writeInt32LE=function writeInt32LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,2147483647,-2147483648);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value&255;this[offset+1]=value>>>8;this[offset+2]=value>>>16;this[offset+3]=value>>>24}else{objectWriteUInt32(this,value,offset,true)}return offset+4};Buffer.prototype.writeInt32BE=function writeInt32BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,2147483647,-2147483648);if(value<0)value=4294967295+value+1;if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&255}else{objectWriteUInt32(this,value,offset,false)}return offset+4};function checkIEEE754(buf,value,offset,ext,max,min){if(offset+ext>buf.length)throw new RangeError("index out of range");if(offset<0)throw new RangeError("index out of range")}function writeFloat(buf,value,offset,littleEndian,noAssert){if(!noAssert){checkIEEE754(buf,value,offset,4,3.4028234663852886e38,-3.4028234663852886e38)}ieee754.write(buf,value,offset,littleEndian,23,4);return offset+4}Buffer.prototype.writeFloatLE=function writeFloatLE(value,offset,noAssert){return writeFloat(this,value,offset,true,noAssert)};Buffer.prototype.writeFloatBE=function writeFloatBE(value,offset,noAssert){return writeFloat(this,value,offset,false,noAssert)};function writeDouble(buf,value,offset,littleEndian,noAssert){if(!noAssert){checkIEEE754(buf,value,offset,8,1.7976931348623157e308,-1.7976931348623157e308)}ieee754.write(buf,value,offset,littleEndian,52,8);return offset+8}Buffer.prototype.writeDoubleLE=function writeDoubleLE(value,offset,noAssert){return writeDouble(this,value,offset,true,noAssert)};Buffer.prototype.writeDoubleBE=function writeDoubleBE(value,offset,noAssert){return writeDouble(this,value,offset,false,noAssert)};Buffer.prototype.copy=function copy(target,targetStart,start,end){if(!start)start=0;if(!end&&end!==0)end=this.length;if(targetStart>=target.length)targetStart=target.length;if(!targetStart)targetStart=0;if(end>0&&end=this.length)throw new RangeError("sourceStart out of bounds");if(end<0)throw new RangeError("sourceEnd out of bounds");if(end>this.length)end=this.length;if(target.length-targetStart=0;i--){target[i+targetStart]=this[i+start]}}else if(len<1e3||!Buffer.TYPED_ARRAY_SUPPORT){for(i=0;i=this.length)throw new RangeError("start out of bounds");if(end<0||end>this.length)throw new RangeError("end out of bounds");var i;if(typeof value==="number"){for(i=start;i55295&&codePoint<57344){if(!leadSurrogate){if(codePoint>56319){if((units-=3)>-1)bytes.push(239,191,189);continue}else if(i+1===length){if((units-=3)>-1)bytes.push(239,191,189);continue}leadSurrogate=codePoint;continue}if(codePoint<56320){if((units-=3)>-1)bytes.push(239,191,189);leadSurrogate=codePoint;continue}codePoint=(leadSurrogate-55296<<10|codePoint-56320)+65536}else if(leadSurrogate){if((units-=3)>-1)bytes.push(239,191,189)}leadSurrogate=null;if(codePoint<128){if((units-=1)<0)break;bytes.push(codePoint)}else if(codePoint<2048){if((units-=2)<0)break;bytes.push(codePoint>>6|192,codePoint&63|128)}else if(codePoint<65536){if((units-=3)<0)break;bytes.push(codePoint>>12|224,codePoint>>6&63|128,codePoint&63|128)}else if(codePoint<1114112){if((units-=4)<0)break;bytes.push(codePoint>>18|240,codePoint>>12&63|128,codePoint>>6&63|128,codePoint&63|128)}else{throw new Error("Invalid code point")}}return bytes}function asciiToBytes(str){var byteArray=[];for(var i=0;i>8;lo=c%256;byteArray.push(lo);byteArray.push(hi)}return byteArray}function base64ToBytes(str){return base64.toByteArray(base64clean(str))}function blitBuffer(src,dst,offset,length){for(var i=0;i=dst.length||i>=src.length)break;dst[i+offset]=src[i]}return i}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"base64-js":"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/node_modules/base64-js/lib/b64.js",ieee754:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/node_modules/ieee754/index.js",isarray:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/node_modules/isarray/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/node_modules/base64-js/lib/b64.js":[function(require,module,exports){"use strict";exports.toByteArray=toByteArray;exports.fromByteArray=fromByteArray;var lookup=[];var revLookup=[];var Arr=typeof Uint8Array!=="undefined"?Uint8Array:Array;function init(){var code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var i=0,len=code.length;i0){throw new Error("Invalid string. Length must be a multiple of 4")}placeHolders=b64[len-2]==="="?2:b64[len-1]==="="?1:0;arr=new Arr(len*3/4-placeHolders);l=placeHolders>0?len-4:len; -var L=0;for(i=0,j=0;i>16&255;arr[L++]=tmp>>8&255;arr[L++]=tmp&255}if(placeHolders===2){tmp=revLookup[b64.charCodeAt(i)]<<2|revLookup[b64.charCodeAt(i+1)]>>4;arr[L++]=tmp&255}else if(placeHolders===1){tmp=revLookup[b64.charCodeAt(i)]<<10|revLookup[b64.charCodeAt(i+1)]<<4|revLookup[b64.charCodeAt(i+2)]>>2;arr[L++]=tmp>>8&255;arr[L++]=tmp&255}return arr}function tripletToBase64(num){return lookup[num>>18&63]+lookup[num>>12&63]+lookup[num>>6&63]+lookup[num&63]}function encodeChunk(uint8,start,end){var tmp;var output=[];for(var i=start;ilen2?len2:i+maxChunkLength))}if(extraBytes===1){tmp=uint8[len-1];output+=lookup[tmp>>2];output+=lookup[tmp<<4&63];output+="=="}else if(extraBytes===2){tmp=(uint8[len-2]<<8)+uint8[len-1];output+=lookup[tmp>>10];output+=lookup[tmp>>4&63];output+=lookup[tmp<<2&63];output+="="}parts.push(output);return parts.join("")}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/node_modules/ieee754/index.js":[function(require,module,exports){exports.read=function(buffer,offset,isLE,mLen,nBytes){var e,m;var eLen=nBytes*8-mLen-1;var eMax=(1<>1;var nBits=-7;var i=isLE?nBytes-1:0;var d=isLE?-1:1;var s=buffer[offset+i];i+=d;e=s&(1<<-nBits)-1;s>>=-nBits;nBits+=eLen;for(;nBits>0;e=e*256+buffer[offset+i],i+=d,nBits-=8){}m=e&(1<<-nBits)-1;e>>=-nBits;nBits+=mLen;for(;nBits>0;m=m*256+buffer[offset+i],i+=d,nBits-=8){}if(e===0){e=1-eBias}else if(e===eMax){return m?NaN:(s?-1:1)*Infinity}else{m=m+Math.pow(2,mLen);e=e-eBias}return(s?-1:1)*m*Math.pow(2,e-mLen)};exports.write=function(buffer,value,offset,isLE,mLen,nBytes){var e,m,c;var eLen=nBytes*8-mLen-1;var eMax=(1<>1;var rt=mLen===23?Math.pow(2,-24)-Math.pow(2,-77):0;var i=isLE?0:nBytes-1;var d=isLE?1:-1;var s=value<0||value===0&&1/value<0?1:0;value=Math.abs(value);if(isNaN(value)||value===Infinity){m=isNaN(value)?1:0;e=eMax}else{e=Math.floor(Math.log(value)/Math.LN2);if(value*(c=Math.pow(2,-e))<1){e--;c*=2}if(e+eBias>=1){value+=rt/c}else{value+=rt*Math.pow(2,1-eBias)}if(value*c>=2){e++;c/=2}if(e+eBias>=eMax){m=0;e=eMax}else if(e+eBias>=1){m=(value*c-1)*Math.pow(2,mLen);e=e+eBias}else{m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen);e=0}}for(;mLen>=8;buffer[offset+i]=m&255,i+=d,m/=256,mLen-=8){}e=e<0;buffer[offset+i]=e&255,i+=d,e/=256,eLen-=8){}buffer[offset+i-d]|=s*128}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/node_modules/isarray/index.js":[function(require,module,exports){var toString={}.toString;module.exports=Array.isArray||function(arr){return toString.call(arr)=="[object Array]"}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/index.js":[function(require,module,exports){"use strict";exports.randomBytes=exports.rng=exports.pseudoRandomBytes=exports.prng=require("randombytes");exports.createHash=exports.Hash=require("create-hash");exports.createHmac=exports.Hmac=require("create-hmac");var hashes=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(Object.keys(require("browserify-sign/algos")));exports.getHashes=function(){return hashes};var p=require("pbkdf2");exports.pbkdf2=p.pbkdf2;exports.pbkdf2Sync=p.pbkdf2Sync;var aes=require("browserify-cipher");["Cipher","createCipher","Cipheriv","createCipheriv","Decipher","createDecipher","Decipheriv","createDecipheriv","getCiphers","listCiphers"].forEach(function(key){exports[key]=aes[key]});var dh=require("diffie-hellman");["DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","createDiffieHellman","DiffieHellman"].forEach(function(key){exports[key]=dh[key]});var sign=require("browserify-sign");["createSign","Sign","createVerify","Verify"].forEach(function(key){exports[key]=sign[key]});exports.createECDH=require("create-ecdh");var publicEncrypt=require("public-encrypt");["publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt"].forEach(function(key){exports[key]=publicEncrypt[key]});["createCredentials"].forEach(function(name){exports[name]=function(){throw new Error(["sorry, "+name+" is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join("\n"))}})},{"browserify-cipher":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/browser.js","browserify-sign":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/browser.js","browserify-sign/algos":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/algos.js","create-ecdh":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-ecdh/browser.js","create-hash":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/browser.js","create-hmac":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hmac/browser.js","diffie-hellman":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/diffie-hellman/browser.js",pbkdf2:"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/pbkdf2/browser.js","public-encrypt":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/public-encrypt/browser.js",randombytes:"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/randombytes/browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/browser.js":[function(require,module,exports){var ebtk=require("evp_bytestokey");var aes=require("browserify-aes/browser");var DES=require("browserify-des");var desModes=require("browserify-des/modes");var aesModes=require("browserify-aes/modes");function createCipher(suite,password){var keyLen,ivLen;suite=suite.toLowerCase();if(aesModes[suite]){keyLen=aesModes[suite].key;ivLen=aesModes[suite].iv}else if(desModes[suite]){keyLen=desModes[suite].key*8;ivLen=desModes[suite].iv}else{throw new TypeError("invalid suite type")}var keys=ebtk(password,false,keyLen,ivLen);return createCipheriv(suite,keys.key,keys.iv)}function createDecipher(suite,password){var keyLen,ivLen;suite=suite.toLowerCase();if(aesModes[suite]){keyLen=aesModes[suite].key;ivLen=aesModes[suite].iv}else if(desModes[suite]){keyLen=desModes[suite].key*8;ivLen=desModes[suite].iv}else{throw new TypeError("invalid suite type")}var keys=ebtk(password,false,keyLen,ivLen);return createDecipheriv(suite,keys.key,keys.iv)}function createCipheriv(suite,key,iv){suite=suite.toLowerCase();if(aesModes[suite]){return aes.createCipheriv(suite,key,iv)}else if(desModes[suite]){return new DES({key:key,iv:iv,mode:suite})}else{throw new TypeError("invalid suite type")}}function createDecipheriv(suite,key,iv){suite=suite.toLowerCase();if(aesModes[suite]){return aes.createDecipheriv(suite,key,iv)}else if(desModes[suite]){return new DES({key:key,iv:iv,mode:suite,decrypt:true})}else{throw new TypeError("invalid suite type")}}exports.createCipher=exports.Cipher=createCipher;exports.createCipheriv=exports.Cipheriv=createCipheriv;exports.createDecipher=exports.Decipher=createDecipher;exports.createDecipheriv=exports.Decipheriv=createDecipheriv;function getCiphers(){return Object.keys(desModes).concat(aes.getCiphers())}exports.listCiphers=exports.getCiphers=getCiphers},{"browserify-aes/browser":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/browser.js","browserify-aes/modes":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/modes.js","browserify-des":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-des/index.js","browserify-des/modes":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-des/modes.js",evp_bytestokey:"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/evp_bytestokey/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/aes.js":[function(require,module,exports){(function(Buffer){var uint_max=Math.pow(2,32);function fixup_uint32(x){var ret,x_pos;ret=x>uint_max||x<0?(x_pos=Math.abs(x)%uint_max,x<0?uint_max-x_pos:x_pos):x;return ret}function scrub_vec(v){for(var i=0;i>>8^sx&255^99;this.SBOX[x]=sx;this.INV_SBOX[sx]=x;x2=d[x];x4=d[x2];x8=d[x4];t=d[sx]*257^sx*16843008;this.SUB_MIX[0][x]=t<<24|t>>>8;this.SUB_MIX[1][x]=t<<16|t>>>16;this.SUB_MIX[2][x]=t<<8|t>>>24;this.SUB_MIX[3][x]=t;t=x8*16843009^x4*65537^x2*257^x*16843008;this.INV_SUB_MIX[0][sx]=t<<24|t>>>8;this.INV_SUB_MIX[1][sx]=t<<16|t>>>16;this.INV_SUB_MIX[2][sx]=t<<8|t>>>24;this.INV_SUB_MIX[3][sx]=t;if(x===0){x=xi=1}else{x=x2^d[d[d[x8^x2]]];xi^=d[d[xi]]}}return true};var G=new Global;AES.blockSize=4*4;AES.prototype.blockSize=AES.blockSize;AES.keySize=256/8;AES.prototype.keySize=AES.keySize;function bufferToArray(buf){var len=buf.length/4;var out=new Array(len);var i=-1;while(++i>>24,t=G.SBOX[t>>>24]<<24|G.SBOX[t>>>16&255]<<16|G.SBOX[t>>>8&255]<<8|G.SBOX[t&255],t^=G.RCON[ksRow/keySize|0]<<24):keySize>6&&ksRow%keySize===4?t=G.SBOX[t>>>24]<<24|G.SBOX[t>>>16&255]<<16|G.SBOX[t>>>8&255]<<8|G.SBOX[t&255]:void 0,this._keySchedule[ksRow-keySize]^t)}this._invKeySchedule=[];for(invKsRow=0;invKsRow>>24]]^G.INV_SUB_MIX[1][G.SBOX[t>>>16&255]]^G.INV_SUB_MIX[2][G.SBOX[t>>>8&255]]^G.INV_SUB_MIX[3][G.SBOX[t&255]]}return true};AES.prototype.encryptBlock=function(M){M=bufferToArray(new Buffer(M));var out=this._doCryptBlock(M,this._keySchedule,G.SUB_MIX,G.SBOX);var buf=new Buffer(16);buf.writeUInt32BE(out[0],0);buf.writeUInt32BE(out[1],4);buf.writeUInt32BE(out[2],8);buf.writeUInt32BE(out[3],12);return buf};AES.prototype.decryptBlock=function(M){M=bufferToArray(new Buffer(M));var temp=[M[3],M[1]];M[1]=temp[0];M[3]=temp[1];var out=this._doCryptBlock(M,this._invKeySchedule,G.INV_SUB_MIX,G.INV_SBOX);var buf=new Buffer(16);buf.writeUInt32BE(out[0],0);buf.writeUInt32BE(out[3],4);buf.writeUInt32BE(out[2],8);buf.writeUInt32BE(out[1],12);return buf};AES.prototype.scrub=function(){scrub_vec(this._keySchedule);scrub_vec(this._invKeySchedule);scrub_vec(this._key)};AES.prototype._doCryptBlock=function(M,keySchedule,SUB_MIX,SBOX){var ksRow,s0,s1,s2,s3,t0,t1,t2,t3;s0=M[0]^keySchedule[0];s1=M[1]^keySchedule[1];s2=M[2]^keySchedule[2];s3=M[3]^keySchedule[3];ksRow=4;for(var round=1;round>>24]^SUB_MIX[1][s1>>>16&255]^SUB_MIX[2][s2>>>8&255]^SUB_MIX[3][s3&255]^keySchedule[ksRow++];t1=SUB_MIX[0][s1>>>24]^SUB_MIX[1][s2>>>16&255]^SUB_MIX[2][s3>>>8&255]^SUB_MIX[3][s0&255]^keySchedule[ksRow++];t2=SUB_MIX[0][s2>>>24]^SUB_MIX[1][s3>>>16&255]^SUB_MIX[2][s0>>>8&255]^SUB_MIX[3][s1&255]^keySchedule[ksRow++];t3=SUB_MIX[0][s3>>>24]^SUB_MIX[1][s0>>>16&255]^SUB_MIX[2][s1>>>8&255]^SUB_MIX[3][s2&255]^keySchedule[ksRow++];s0=t0;s1=t1;s2=t2;s3=t3}t0=(SBOX[s0>>>24]<<24|SBOX[s1>>>16&255]<<16|SBOX[s2>>>8&255]<<8|SBOX[s3&255])^keySchedule[ksRow++];t1=(SBOX[s1>>>24]<<24|SBOX[s2>>>16&255]<<16|SBOX[s3>>>8&255]<<8|SBOX[s0&255])^keySchedule[ksRow++];t2=(SBOX[s2>>>24]<<24|SBOX[s3>>>16&255]<<16|SBOX[s0>>>8&255]<<8|SBOX[s1&255])^keySchedule[ksRow++];t3=(SBOX[s3>>>24]<<24|SBOX[s0>>>16&255]<<16|SBOX[s1>>>8&255]<<8|SBOX[s2&255])^keySchedule[ksRow++];return[fixup_uint32(t0),fixup_uint32(t1),fixup_uint32(t2),fixup_uint32(t3)]};exports.AES=AES}).call(this,require("buffer").Buffer)},{buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/authCipher.js":[function(require,module,exports){(function(Buffer){var aes=require("./aes");var Transform=require("cipher-base");var inherits=require("inherits");var GHASH=require("./ghash");var xor=require("buffer-xor");inherits(StreamCipher,Transform);module.exports=StreamCipher;function StreamCipher(mode,key,iv,decrypt){if(!(this instanceof StreamCipher)){return new StreamCipher(mode,key,iv)}Transform.call(this);this._finID=Buffer.concat([iv,new Buffer([0,0,0,1])]);iv=Buffer.concat([iv,new Buffer([0,0,0,2])]);this._cipher=new aes.AES(key);this._prev=new Buffer(iv.length);this._cache=new Buffer("");this._secCache=new Buffer("");this._decrypt=decrypt;this._alen=0;this._len=0;iv.copy(this._prev);this._mode=mode;var h=new Buffer(4);h.fill(0);this._ghash=new GHASH(this._cipher.encryptBlock(h));this._authTag=null;this._called=false}StreamCipher.prototype._update=function(chunk){if(!this._called&&this._alen){var rump=16-this._alen%16;if(rump<16){rump=new Buffer(rump);rump.fill(0);this._ghash.update(rump)}}this._called=true;var out=this._mode.encrypt(this,chunk);if(this._decrypt){this._ghash.update(chunk)}else{this._ghash.update(out)}this._len+=chunk.length;return out};StreamCipher.prototype._final=function(){if(this._decrypt&&!this._authTag){throw new Error("Unsupported state or unable to authenticate data")}var tag=xor(this._ghash.final(this._alen*8,this._len*8),this._cipher.encryptBlock(this._finID));if(this._decrypt){if(xorTest(tag,this._authTag)){throw new Error("Unsupported state or unable to authenticate data")}}else{this._authTag=tag}this._cipher.scrub()};StreamCipher.prototype.getAuthTag=function getAuthTag(){if(!this._decrypt&&Buffer.isBuffer(this._authTag)){return this._authTag}else{throw new Error("Attempting to get auth tag in unsupported state")}};StreamCipher.prototype.setAuthTag=function setAuthTag(tag){if(this._decrypt){this._authTag=tag}else{throw new Error("Attempting to set auth tag in unsupported state")}};StreamCipher.prototype.setAAD=function setAAD(buf){if(!this._called){this._ghash.update(buf);this._alen+=buf.length}else{throw new Error("Attempting to set AAD in unsupported state")}};function xorTest(a,b){var out=0;if(a.length!==b.length){out++}var len=Math.min(a.length,b.length);var i=-1;while(++i16){out=this.cache.slice(0,16);this.cache=this.cache.slice(16);return out}}else{if(this.cache.length>=16){out=this.cache.slice(0,16);this.cache=this.cache.slice(16);return out}}return null};Splitter.prototype.flush=function(){if(this.cache.length){return this.cache}};function unpad(last){var padded=last[15];var i=-1;while(++i15){var out=this.cache.slice(0,16);this.cache=this.cache.slice(16);return out}return null};Splitter.prototype.flush=function(){var len=16-this.cache.length;var padBuff=new Buffer(len);var i=-1;while(++i0;j--){Vi[j]=Vi[j]>>>1|(Vi[j-1]&1)<<31}Vi[0]=Vi[0]>>>1;if(lsb_Vi){Vi[0]=Vi[0]^225<<24}}this.state=fromArray(Zi)};GHASH.prototype.update=function(buf){this.cache=Buffer.concat([this.cache,buf]);var chunk;while(this.cache.length>=16){chunk=this.cache.slice(0,16);this.cache=this.cache.slice(16);this.ghash(chunk)}};GHASH.prototype.final=function(abl,bl){if(this.cache.length){this.ghash(Buffer.concat([this.cache,zeros],16))}this.ghash(fromArray([0,abl,0,bl]));return this.state};function toArray(buf){return[buf.readUInt32BE(0),buf.readUInt32BE(4),buf.readUInt32BE(8),buf.readUInt32BE(12)]}function fromArray(out){out=out.map(fixup_uint32);var buf=new Buffer(16);buf.writeUInt32BE(out[0],0);buf.writeUInt32BE(out[1],4);buf.writeUInt32BE(out[2],8);buf.writeUInt32BE(out[3],12);return buf}var uint_max=Math.pow(2,32);function fixup_uint32(x){var ret,x_pos;ret=x>uint_max||x<0?(x_pos=Math.abs(x)%uint_max,x<0?uint_max-x_pos:x_pos):x;return ret}function xor(a,b){return[a[0]^b[0],a[1]^b[1],a[2]^b[2],a[3]^b[3]]}}).call(this,require("buffer").Buffer)},{buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/modes.js":[function(require,module,exports){exports["aes-128-ecb"]={cipher:"AES",key:128,iv:0,mode:"ECB",type:"block"};exports["aes-192-ecb"]={cipher:"AES",key:192,iv:0,mode:"ECB",type:"block"};exports["aes-256-ecb"]={cipher:"AES",key:256,iv:0,mode:"ECB",type:"block"};exports["aes-128-cbc"]={cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"};exports["aes-192-cbc"]={cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"};exports["aes-256-cbc"]={cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"};exports["aes128"]=exports["aes-128-cbc"];exports["aes192"]=exports["aes-192-cbc"];exports["aes256"]=exports["aes-256-cbc"];exports["aes-128-cfb"]={cipher:"AES",key:128,iv:16,mode:"CFB",type:"stream" -};exports["aes-192-cfb"]={cipher:"AES",key:192,iv:16,mode:"CFB",type:"stream"};exports["aes-256-cfb"]={cipher:"AES",key:256,iv:16,mode:"CFB",type:"stream"};exports["aes-128-cfb8"]={cipher:"AES",key:128,iv:16,mode:"CFB8",type:"stream"};exports["aes-192-cfb8"]={cipher:"AES",key:192,iv:16,mode:"CFB8",type:"stream"};exports["aes-256-cfb8"]={cipher:"AES",key:256,iv:16,mode:"CFB8",type:"stream"};exports["aes-128-cfb1"]={cipher:"AES",key:128,iv:16,mode:"CFB1",type:"stream"};exports["aes-192-cfb1"]={cipher:"AES",key:192,iv:16,mode:"CFB1",type:"stream"};exports["aes-256-cfb1"]={cipher:"AES",key:256,iv:16,mode:"CFB1",type:"stream"};exports["aes-128-ofb"]={cipher:"AES",key:128,iv:16,mode:"OFB",type:"stream"};exports["aes-192-ofb"]={cipher:"AES",key:192,iv:16,mode:"OFB",type:"stream"};exports["aes-256-ofb"]={cipher:"AES",key:256,iv:16,mode:"OFB",type:"stream"};exports["aes-128-ctr"]={cipher:"AES",key:128,iv:16,mode:"CTR",type:"stream"};exports["aes-192-ctr"]={cipher:"AES",key:192,iv:16,mode:"CTR",type:"stream"};exports["aes-256-ctr"]={cipher:"AES",key:256,iv:16,mode:"CTR",type:"stream"};exports["aes-128-gcm"]={cipher:"AES",key:128,iv:12,mode:"GCM",type:"auth"};exports["aes-192-gcm"]={cipher:"AES",key:192,iv:12,mode:"GCM",type:"auth"};exports["aes-256-gcm"]={cipher:"AES",key:256,iv:12,mode:"GCM",type:"auth"}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/modes/cbc.js":[function(require,module,exports){var xor=require("buffer-xor");exports.encrypt=function(self,block){var data=xor(block,self._prev);self._prev=self._cipher.encryptBlock(data);return self._prev};exports.decrypt=function(self,block){var pad=self._prev;self._prev=block;var out=self._cipher.decryptBlock(block);return xor(out,pad)}},{"buffer-xor":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/node_modules/buffer-xor/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/modes/cfb.js":[function(require,module,exports){(function(Buffer){var xor=require("buffer-xor");exports.encrypt=function(self,data,decrypt){var out=new Buffer("");var len;while(data.length){if(self._cache.length===0){self._cache=self._cipher.encryptBlock(self._prev);self._prev=new Buffer("")}if(self._cache.length<=data.length){len=self._cache.length;out=Buffer.concat([out,encryptStart(self,data.slice(0,len),decrypt)]);data=data.slice(len)}else{out=Buffer.concat([out,encryptStart(self,data,decrypt)]);break}}return out};function encryptStart(self,data,decrypt){var len=data.length;var out=xor(data,self._cache);self._cache=self._cache.slice(len);self._prev=Buffer.concat([self._prev,decrypt?data:out]);return out}}).call(this,require("buffer").Buffer)},{buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js","buffer-xor":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/node_modules/buffer-xor/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/modes/cfb1.js":[function(require,module,exports){(function(Buffer){function encryptByte(self,byteParam,decrypt){var pad;var i=-1;var len=8;var out=0;var bit,value;while(++i>i%8;self._prev=shiftIn(self._prev,decrypt?bit:value)}return out}exports.encrypt=function(self,chunk,decrypt){var len=chunk.length;var out=new Buffer(len);var i=-1;while(++i>7}return out}}).call(this,require("buffer").Buffer)},{buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/modes/cfb8.js":[function(require,module,exports){(function(Buffer){function encryptByte(self,byteParam,decrypt){var pad=self._cipher.encryptBlock(self._prev);var out=pad[0]^byteParam;self._prev=Buffer.concat([self._prev.slice(1),new Buffer([decrypt?byteParam:out])]);return out}exports.encrypt=function(self,chunk,decrypt){var len=chunk.length;var out=new Buffer(len);var i=-1;while(++i0;count--){inputOff+=this._buffer(data,inputOff);outputOff+=this._flushBuffer(out,outputOff)}inputOff+=this._buffer(data,inputOff);return out};Cipher.prototype.final=function final(buffer){var first;if(buffer)first=this.update(buffer);var last;if(this.type==="encrypt")last=this._finalEncrypt();else last=this._finalDecrypt();if(first)return first.concat(last);else return last};Cipher.prototype._pad=function _pad(buffer,off){if(off===0)return false;while(off>>1];kL=utils.r28shl(kL,shift);kR=utils.r28shl(kR,shift);utils.pc2(kL,kR,state.keys,i)}};DES.prototype._update=function _update(inp,inOff,out,outOff){var state=this._desState;var l=utils.readUInt32BE(inp,inOff);var r=utils.readUInt32BE(inp,inOff+4);utils.ip(l,r,state.tmp,0);l=state.tmp[0];r=state.tmp[1];if(this.type==="encrypt")this._encrypt(state,l,r,state.tmp,0);else this._decrypt(state,l,r,state.tmp,0);l=state.tmp[0];r=state.tmp[1];utils.writeUInt32BE(out,l,outOff);utils.writeUInt32BE(out,r,outOff+4)};DES.prototype._pad=function _pad(buffer,off){var value=buffer.length-off;for(var i=off;i>>0;l=t}utils.rip(r,l,out,off)};DES.prototype._decrypt=function _decrypt(state,lStart,rStart,out,off){var l=rStart;var r=lStart;for(var i=state.keys.length-2;i>=0;i-=2){var keyL=state.keys[i];var keyR=state.keys[i+1];utils.expand(l,state.tmp,0);keyL^=state.tmp[0];keyR^=state.tmp[1];var s=utils.substitute(keyL,keyR);var f=utils.permute(s);var t=l;l=(r^f)>>>0;r=t}utils.rip(l,r,out,off)}},{"../des":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-des/node_modules/des.js/lib/des.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js","minimalistic-assert":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-des/node_modules/des.js/node_modules/minimalistic-assert/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-des/node_modules/des.js/lib/des/ede.js":[function(require,module,exports){"use strict";var assert=require("minimalistic-assert");var inherits=require("inherits");var des=require("../des");var Cipher=des.Cipher;var DES=des.DES;function EDEState(type,key){assert.equal(key.length,24,"Invalid key length");var k1=key.slice(0,8);var k2=key.slice(8,16);var k3=key.slice(16,24);if(type==="encrypt"){this.ciphers=[DES.create({type:"encrypt",key:k1}),DES.create({type:"decrypt",key:k2}),DES.create({type:"encrypt",key:k3})]}else{this.ciphers=[DES.create({type:"decrypt",key:k3}),DES.create({type:"encrypt",key:k2}),DES.create({type:"decrypt",key:k1})]}}function EDE(options){Cipher.call(this,options);var state=new EDEState(this.type,this.options.key);this._edeState=state}inherits(EDE,Cipher);module.exports=EDE;EDE.create=function create(options){return new EDE(options)};EDE.prototype._update=function _update(inp,inOff,out,outOff){var state=this._edeState;state.ciphers[0]._update(inp,inOff,out,outOff);state.ciphers[1]._update(out,outOff,out,outOff);state.ciphers[2]._update(out,outOff,out,outOff)};EDE.prototype._pad=DES.prototype._pad;EDE.prototype._unpad=DES.prototype._unpad},{"../des":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-des/node_modules/des.js/lib/des.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js","minimalistic-assert":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-des/node_modules/des.js/node_modules/minimalistic-assert/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-des/node_modules/des.js/lib/des/utils.js":[function(require,module,exports){"use strict";exports.readUInt32BE=function readUInt32BE(bytes,off){var res=bytes[0+off]<<24|bytes[1+off]<<16|bytes[2+off]<<8|bytes[3+off];return res>>>0};exports.writeUInt32BE=function writeUInt32BE(bytes,value,off){bytes[0+off]=value>>>24;bytes[1+off]=value>>>16&255;bytes[2+off]=value>>>8&255;bytes[3+off]=value&255};exports.ip=function ip(inL,inR,out,off){var outL=0;var outR=0;for(var i=6;i>=0;i-=2){for(var j=0;j<=24;j+=8){outL<<=1;outL|=inR>>>j+i&1}for(var j=0;j<=24;j+=8){outL<<=1;outL|=inL>>>j+i&1}}for(var i=6;i>=0;i-=2){for(var j=1;j<=25;j+=8){outR<<=1;outR|=inR>>>j+i&1}for(var j=1;j<=25;j+=8){outR<<=1;outR|=inL>>>j+i&1}}out[off+0]=outL>>>0;out[off+1]=outR>>>0};exports.rip=function rip(inL,inR,out,off){var outL=0;var outR=0;for(var i=0;i<4;i++){for(var j=24;j>=0;j-=8){outL<<=1;outL|=inR>>>j+i&1;outL<<=1;outL|=inL>>>j+i&1}}for(var i=4;i<8;i++){for(var j=24;j>=0;j-=8){outR<<=1;outR|=inR>>>j+i&1;outR<<=1;outR|=inL>>>j+i&1}}out[off+0]=outL>>>0;out[off+1]=outR>>>0};exports.pc1=function pc1(inL,inR,out,off){var outL=0;var outR=0;for(var i=7;i>=5;i--){for(var j=0;j<=24;j+=8){outL<<=1;outL|=inR>>j+i&1}for(var j=0;j<=24;j+=8){outL<<=1;outL|=inL>>j+i&1}}for(var j=0;j<=24;j+=8){outL<<=1;outL|=inR>>j+i&1}for(var i=1;i<=3;i++){for(var j=0;j<=24;j+=8){outR<<=1;outR|=inR>>j+i&1}for(var j=0;j<=24;j+=8){outR<<=1;outR|=inL>>j+i&1}}for(var j=0;j<=24;j+=8){outR<<=1;outR|=inL>>j+i&1}out[off+0]=outL>>>0;out[off+1]=outR>>>0};exports.r28shl=function r28shl(num,shift){return num<>>28-shift};var pc2table=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];exports.pc2=function pc2(inL,inR,out,off){var outL=0;var outR=0;var len=pc2table.length>>>1;for(var i=0;i>>pc2table[i]&1}for(var i=len;i>>pc2table[i]&1}out[off+0]=outL>>>0;out[off+1]=outR>>>0};exports.expand=function expand(r,out,off){var outL=0;var outR=0;outL=(r&1)<<5|r>>>27;for(var i=23;i>=15;i-=4){outL<<=6;outL|=r>>>i&63}for(var i=11;i>=3;i-=4){outR|=r>>>i&63;outR<<=6}outR|=(r&31)<<1|r>>>31;out[off+0]=outL>>>0;out[off+1]=outR>>>0};var sTable=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];exports.substitute=function substitute(inL,inR){var out=0;for(var i=0;i<4;i++){var b=inL>>>18-i*6&63;var sb=sTable[i*64+b];out<<=4;out|=sb}for(var i=0;i<4;i++){var b=inR>>>18-i*6&63;var sb=sTable[4*64+i*64+b];out<<=4;out|=sb}return out>>>0};var permuteTable=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];exports.permute=function permute(num){var out=0;for(var i=0;i>>permuteTable[i]&1}return out>>>0};exports.padSplit=function padSplit(num,size,group){var str=num.toString(2);while(str.length0){bufs.push(md_buf)}bufs.push(password);if(salt){bufs.push(salt)}md_buf=md5(Buffer.concat(bufs));bufs=[];i=0;if(keyLen>0){while(true){if(keyLen===0){break}if(i===md_buf.length){break}key[ki++]=md_buf[i];keyLen--;i++}}if(ivLen>0&&i!==md_buf.length){while(true){if(ivLen===0){break}if(i===md_buf.length){break}iv[ii++]=md_buf[i];ivLen--;i++}}if(keyLen===0&&ivLen===0){break}}for(i=0;i0)return left;return right};BN.min=function min(left,right){if(left.cmp(right)<0)return left;return right};BN.prototype._init=function init(number,base,endian){if(typeof number==="number"){return this._initNumber(number,base,endian)}if(typeof number==="object"){return this._initArray(number,base,endian)}if(base==="hex"){base=16}assert(base===(base|0)&&base>=2&&base<=36);number=number.toString().replace(/\s+/g,"");var start=0;if(number[0]==="-"){start++}if(base===16){this._parseHex(number,start)}else{this._parseBase(number,base,start)}if(number[0]==="-"){this.negative=1}this.strip();if(endian!=="le")return;this._initArray(this.toArray(),base,endian)};BN.prototype._initNumber=function _initNumber(number,base,endian){if(number<0){this.negative=1;number=-number}if(number<67108864){this.words=[number&67108863];this.length=1}else if(number<4503599627370496){this.words=[number&67108863,number/67108864&67108863];this.length=2}else{assert(number<9007199254740992);this.words=[number&67108863,number/67108864&67108863,1];this.length=3}if(endian!=="le")return;this._initArray(this.toArray(),base,endian)};BN.prototype._initArray=function _initArray(number,base,endian){assert(typeof number.length==="number");if(number.length<=0){this.words=[0];this.length=1;return this}this.length=Math.ceil(number.length/3);this.words=new Array(this.length);for(var i=0;i=0;i-=3){w=number[i]|number[i-1]<<8|number[i-2]<<16;this.words[j]|=w<>>26-off&67108863;off+=24;if(off>=26){off-=26;j++}}}else if(endian==="le"){for(i=0,j=0;i>>26-off&67108863;off+=24;if(off>=26){off-=26;j++}}}return this.strip()};function parseHex(str,start,end){var r=0;var len=Math.min(str.length,end);for(var i=start;i=49&&c<=54){r|=c-49+10}else if(c>=17&&c<=22){r|=c-17+10}else{r|=c&15}}return r}BN.prototype._parseHex=function _parseHex(number,start){this.length=Math.ceil((number.length-start)/6);this.words=new Array(this.length);for(var i=0;i=start;i-=6){w=parseHex(number,i,i+6);this.words[j]|=w<>>26-off&4194303;off+=24;if(off>=26){off-=26;j++}}if(i+6!==start){w=parseHex(number,start,i+6);this.words[j]|=w<>>26-off&4194303}this.strip()};function parseBase(str,start,end,mul){var r=0;var len=Math.min(str.length,end);for(var i=start;i=49){r+=c-49+10}else if(c>=17){r+=c-17+10}else{r+=c}}return r}BN.prototype._parseBase=function _parseBase(number,base,start){this.words=[0];this.length=1;for(var limbLen=0,limbPow=1;limbPow<=67108863;limbPow*=base){limbLen++}limbLen--;limbPow=limbPow/base|0;var total=number.length-start;var mod=total%limbLen;var end=Math.min(total,total-mod)+start;var word=0;for(var i=start;i1&&this.words[this.length-1]===0){this.length--}return this._normSign()};BN.prototype._normSign=function _normSign(){if(this.length===1&&this.words[0]===0){this.negative=0}return this};BN.prototype.inspect=function inspect(){return(this.red?""};var zeros=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"];var groupSizes=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5];var groupBases=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];BN.prototype.toString=function toString(base,padding){base=base||10;padding=padding|0||1;var out;if(base===16||base==="hex"){out="";var off=0;var carry=0;for(var i=0;i>>24-off&16777215;if(carry!==0||i!==this.length-1){out=zeros[6-word.length]+word+out}else{out=word+out}off+=2;if(off>=26){off-=26;i--}}if(carry!==0){out=carry.toString(16)+out}while(out.length%padding!==0){out="0"+out}if(this.negative!==0){out="-"+out}return out}if(base===(base|0)&&base>=2&&base<=36){var groupSize=groupSizes[base];var groupBase=groupBases[base];out="";var c=this.clone();c.negative=0;while(!c.isZero()){var r=c.modn(groupBase).toString(base);c=c.idivn(groupBase);if(!c.isZero()){out=zeros[groupSize-r.length]+r+out}else{out=r+out}}if(this.isZero()){out="0"+out}while(out.length%padding!==0){out="0"+out}if(this.negative!==0){out="-"+out}return out}assert(false,"Base should be between 2 and 36")};BN.prototype.toNumber=function toNumber(){var length=this.bitLength();var ret;if(length<=26){ret=this.words[0]}else if(length<=52){ret=this.words[1]*67108864+this.words[0]}else if(length===53){ret=4503599627370496+this.words[1]*67108864+this.words[0]}else{assert(false,"Number can only safely store up to 53 bits")}return this.negative!==0?-ret:ret};BN.prototype.toJSON=function toJSON(){return this.toString(16)};BN.prototype.toBuffer=function toBuffer(endian,length){assert(typeof Buffer!=="undefined");return this.toArrayLike(Buffer,endian,length)};BN.prototype.toArray=function toArray(endian,length){return this.toArrayLike(Array,endian,length)};BN.prototype.toArrayLike=function toArrayLike(ArrayType,endian,length){var byteLength=this.byteLength();var reqLength=length||Math.max(1,byteLength);assert(byteLength<=reqLength,"byte array longer than desired length");assert(reqLength>0,"Requested array length <= 0");this.strip();var littleEndian=endian==="le";var res=new ArrayType(reqLength);var b,i;var q=this.clone();if(!littleEndian){for(i=0;i=4096){r+=13;t>>>=13}if(t>=64){r+=7;t>>>=7}if(t>=8){r+=4;t>>>=4}if(t>=2){r+=2;t>>>=2}return r+t}}BN.prototype._zeroBits=function _zeroBits(w){if(w===0)return 26;var t=w;var r=0;if((t&8191)===0){r+=13;t>>>=13}if((t&127)===0){r+=7;t>>>=7}if((t&15)===0){r+=4;t>>>=4}if((t&3)===0){r+=2;t>>>=2}if((t&1)===0){r++}return r};BN.prototype.bitLength=function bitLength(){var w=this.words[this.length-1];var hi=this._countBits(w);return(this.length-1)*26+hi};function toBitArray(num){var w=new Array(num.bitLength());for(var bit=0;bit>>wbit}return w}BN.prototype.zeroBits=function zeroBits(){if(this.isZero())return 0;var r=0;for(var i=0;inum.length)return this.clone().ior(num);return num.clone().ior(this)};BN.prototype.uor=function uor(num){if(this.length>num.length)return this.clone().iuor(num);return num.clone().iuor(this)};BN.prototype.iuand=function iuand(num){var b;if(this.length>num.length){b=num}else{b=this}for(var i=0;inum.length)return this.clone().iand(num);return num.clone().iand(this)};BN.prototype.uand=function uand(num){if(this.length>num.length)return this.clone().iuand(num);return num.clone().iuand(this)};BN.prototype.iuxor=function iuxor(num){var a;var b;if(this.length>num.length){a=this;b=num}else{a=num;b=this}for(var i=0;inum.length)return this.clone().ixor(num);return num.clone().ixor(this)};BN.prototype.uxor=function uxor(num){if(this.length>num.length)return this.clone().iuxor(num);return num.clone().iuxor(this)};BN.prototype.inotn=function inotn(width){assert(typeof width==="number"&&width>=0);var bytesNeeded=Math.ceil(width/26)|0;var bitsLeft=width%26;this._expand(bytesNeeded);if(bitsLeft>0){bytesNeeded--}for(var i=0;i0){this.words[i]=~this.words[i]&67108863>>26-bitsLeft}return this.strip()};BN.prototype.notn=function notn(width){return this.clone().inotn(width)};BN.prototype.setn=function setn(bit,val){assert(typeof bit==="number"&&bit>=0);var off=bit/26|0;var wbit=bit%26;this._expand(off+1);if(val){this.words[off]=this.words[off]|1<num.length){a=this;b=num}else{a=num;b=this}var carry=0;for(var i=0;i>>26}for(;carry!==0&&i>>26}this.length=a.length;if(carry!==0){this.words[this.length]=carry;this.length++}else if(a!==this){for(;inum.length)return this.clone().iadd(num);return num.clone().iadd(this)};BN.prototype.isub=function isub(num){if(num.negative!==0){num.negative=0;var r=this.iadd(num);num.negative=1;return r._normSign()}else if(this.negative!==0){this.negative=0;this.iadd(num);this.negative=1;return this._normSign()}var cmp=this.cmp(num);if(cmp===0){this.negative=0;this.length=1;this.words[0]=0;return this}var a,b;if(cmp>0){a=this;b=num}else{a=num;b=this}var carry=0;for(var i=0;i>26;this.words[i]=r&67108863}for(;carry!==0&&i>26;this.words[i]=r&67108863}if(carry===0&&i>>26;var rword=carry&67108863;var maxJ=Math.min(k,num.length-1);for(var j=Math.max(0,k-self.length+1);j<=maxJ;j++){var i=k-j|0;a=self.words[i]|0;b=num.words[j]|0;r=a*b+rword;ncarry+=r/67108864|0;rword=r&67108863}out.words[k]=rword|0;carry=ncarry|0}if(carry!==0){out.words[k]=carry|0}else{out.length--}return out.strip()}var comb10MulTo=function comb10MulTo(self,num,out){var a=self.words;var b=num.words;var o=out.words;var c=0;var lo;var mid;var hi;var a0=a[0]|0;var al0=a0&8191;var ah0=a0>>>13;var a1=a[1]|0;var al1=a1&8191;var ah1=a1>>>13;var a2=a[2]|0;var al2=a2&8191;var ah2=a2>>>13;var a3=a[3]|0;var al3=a3&8191;var ah3=a3>>>13;var a4=a[4]|0;var al4=a4&8191;var ah4=a4>>>13;var a5=a[5]|0;var al5=a5&8191;var ah5=a5>>>13;var a6=a[6]|0;var al6=a6&8191;var ah6=a6>>>13;var a7=a[7]|0;var al7=a7&8191;var ah7=a7>>>13;var a8=a[8]|0;var al8=a8&8191;var ah8=a8>>>13;var a9=a[9]|0;var al9=a9&8191;var ah9=a9>>>13;var b0=b[0]|0;var bl0=b0&8191;var bh0=b0>>>13;var b1=b[1]|0;var bl1=b1&8191;var bh1=b1>>>13;var b2=b[2]|0;var bl2=b2&8191;var bh2=b2>>>13;var b3=b[3]|0;var bl3=b3&8191;var bh3=b3>>>13;var b4=b[4]|0;var bl4=b4&8191;var bh4=b4>>>13;var b5=b[5]|0;var bl5=b5&8191;var bh5=b5>>>13;var b6=b[6]|0;var bl6=b6&8191;var bh6=b6>>>13;var b7=b[7]|0;var bl7=b7&8191;var bh7=b7>>>13;var b8=b[8]|0;var bl8=b8&8191;var bh8=b8>>>13;var b9=b[9]|0;var bl9=b9&8191;var bh9=b9>>>13;out.negative=self.negative^num.negative;out.length=19;lo=Math.imul(al0,bl0);mid=Math.imul(al0,bh0);mid+=Math.imul(ah0,bl0);hi=Math.imul(ah0,bh0);var w0=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w0>>>26);w0&=67108863;lo=Math.imul(al1,bl0);mid=Math.imul(al1,bh0);mid+=Math.imul(ah1,bl0);hi=Math.imul(ah1,bh0);lo+=Math.imul(al0,bl1);mid+=Math.imul(al0,bh1);mid+=Math.imul(ah0,bl1);hi+=Math.imul(ah0,bh1);var w1=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w1>>>26);w1&=67108863;lo=Math.imul(al2,bl0);mid=Math.imul(al2,bh0);mid+=Math.imul(ah2,bl0);hi=Math.imul(ah2,bh0);lo+=Math.imul(al1,bl1);mid+=Math.imul(al1,bh1);mid+=Math.imul(ah1,bl1);hi+=Math.imul(ah1,bh1);lo+=Math.imul(al0,bl2);mid+=Math.imul(al0,bh2);mid+=Math.imul(ah0,bl2);hi+=Math.imul(ah0,bh2);var w2=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w2>>>26);w2&=67108863;lo=Math.imul(al3,bl0);mid=Math.imul(al3,bh0);mid+=Math.imul(ah3,bl0);hi=Math.imul(ah3,bh0);lo+=Math.imul(al2,bl1);mid+=Math.imul(al2,bh1);mid+=Math.imul(ah2,bl1);hi+=Math.imul(ah2,bh1);lo+=Math.imul(al1,bl2);mid+=Math.imul(al1,bh2);mid+=Math.imul(ah1,bl2);hi+=Math.imul(ah1,bh2);lo+=Math.imul(al0,bl3);mid+=Math.imul(al0,bh3);mid+=Math.imul(ah0,bl3);hi+=Math.imul(ah0,bh3);var w3=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w3>>>26);w3&=67108863;lo=Math.imul(al4,bl0);mid=Math.imul(al4,bh0);mid+=Math.imul(ah4,bl0);hi=Math.imul(ah4,bh0);lo+=Math.imul(al3,bl1);mid+=Math.imul(al3,bh1);mid+=Math.imul(ah3,bl1);hi+=Math.imul(ah3,bh1);lo+=Math.imul(al2,bl2);mid+=Math.imul(al2,bh2);mid+=Math.imul(ah2,bl2);hi+=Math.imul(ah2,bh2);lo+=Math.imul(al1,bl3);mid+=Math.imul(al1,bh3);mid+=Math.imul(ah1,bl3);hi+=Math.imul(ah1,bh3);lo+=Math.imul(al0,bl4);mid+=Math.imul(al0,bh4);mid+=Math.imul(ah0,bl4);hi+=Math.imul(ah0,bh4);var w4=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w4>>>26);w4&=67108863;lo=Math.imul(al5,bl0);mid=Math.imul(al5,bh0);mid+=Math.imul(ah5,bl0);hi=Math.imul(ah5,bh0);lo+=Math.imul(al4,bl1);mid+=Math.imul(al4,bh1);mid+=Math.imul(ah4,bl1);hi+=Math.imul(ah4,bh1);lo+=Math.imul(al3,bl2);mid+=Math.imul(al3,bh2);mid+=Math.imul(ah3,bl2);hi+=Math.imul(ah3,bh2);lo+=Math.imul(al2,bl3);mid+=Math.imul(al2,bh3);mid+=Math.imul(ah2,bl3);hi+=Math.imul(ah2,bh3);lo+=Math.imul(al1,bl4);mid+=Math.imul(al1,bh4);mid+=Math.imul(ah1,bl4);hi+=Math.imul(ah1,bh4);lo+=Math.imul(al0,bl5);mid+=Math.imul(al0,bh5);mid+=Math.imul(ah0,bl5);hi+=Math.imul(ah0,bh5);var w5=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w5>>>26);w5&=67108863;lo=Math.imul(al6,bl0);mid=Math.imul(al6,bh0);mid+=Math.imul(ah6,bl0);hi=Math.imul(ah6,bh0);lo+=Math.imul(al5,bl1);mid+=Math.imul(al5,bh1);mid+=Math.imul(ah5,bl1);hi+=Math.imul(ah5,bh1);lo+=Math.imul(al4,bl2);mid+=Math.imul(al4,bh2);mid+=Math.imul(ah4,bl2);hi+=Math.imul(ah4,bh2);lo+=Math.imul(al3,bl3);mid+=Math.imul(al3,bh3);mid+=Math.imul(ah3,bl3);hi+=Math.imul(ah3,bh3);lo+=Math.imul(al2,bl4);mid+=Math.imul(al2,bh4);mid+=Math.imul(ah2,bl4);hi+=Math.imul(ah2,bh4);lo+=Math.imul(al1,bl5);mid+=Math.imul(al1,bh5);mid+=Math.imul(ah1,bl5);hi+=Math.imul(ah1,bh5);lo+=Math.imul(al0,bl6);mid+=Math.imul(al0,bh6);mid+=Math.imul(ah0,bl6);hi+=Math.imul(ah0,bh6);var w6=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w6>>>26);w6&=67108863;lo=Math.imul(al7,bl0);mid=Math.imul(al7,bh0);mid+=Math.imul(ah7,bl0);hi=Math.imul(ah7,bh0);lo+=Math.imul(al6,bl1);mid+=Math.imul(al6,bh1);mid+=Math.imul(ah6,bl1);hi+=Math.imul(ah6,bh1);lo+=Math.imul(al5,bl2);mid+=Math.imul(al5,bh2);mid+=Math.imul(ah5,bl2);hi+=Math.imul(ah5,bh2);lo+=Math.imul(al4,bl3);mid+=Math.imul(al4,bh3);mid+=Math.imul(ah4,bl3);hi+=Math.imul(ah4,bh3);lo+=Math.imul(al3,bl4);mid+=Math.imul(al3,bh4);mid+=Math.imul(ah3,bl4);hi+=Math.imul(ah3,bh4);lo+=Math.imul(al2,bl5);mid+=Math.imul(al2,bh5);mid+=Math.imul(ah2,bl5);hi+=Math.imul(ah2,bh5);lo+=Math.imul(al1,bl6);mid+=Math.imul(al1,bh6);mid+=Math.imul(ah1,bl6);hi+=Math.imul(ah1,bh6);lo+=Math.imul(al0,bl7);mid+=Math.imul(al0,bh7);mid+=Math.imul(ah0,bl7);hi+=Math.imul(ah0,bh7);var w7=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w7>>>26);w7&=67108863;lo=Math.imul(al8,bl0);mid=Math.imul(al8,bh0);mid+=Math.imul(ah8,bl0);hi=Math.imul(ah8,bh0);lo+=Math.imul(al7,bl1);mid+=Math.imul(al7,bh1);mid+=Math.imul(ah7,bl1);hi+=Math.imul(ah7,bh1);lo+=Math.imul(al6,bl2);mid+=Math.imul(al6,bh2);mid+=Math.imul(ah6,bl2);hi+=Math.imul(ah6,bh2);lo+=Math.imul(al5,bl3);mid+=Math.imul(al5,bh3);mid+=Math.imul(ah5,bl3);hi+=Math.imul(ah5,bh3);lo+=Math.imul(al4,bl4);mid+=Math.imul(al4,bh4);mid+=Math.imul(ah4,bl4);hi+=Math.imul(ah4,bh4);lo+=Math.imul(al3,bl5);mid+=Math.imul(al3,bh5);mid+=Math.imul(ah3,bl5);hi+=Math.imul(ah3,bh5);lo+=Math.imul(al2,bl6);mid+=Math.imul(al2,bh6);mid+=Math.imul(ah2,bl6);hi+=Math.imul(ah2,bh6);lo+=Math.imul(al1,bl7);mid+=Math.imul(al1,bh7);mid+=Math.imul(ah1,bl7);hi+=Math.imul(ah1,bh7);lo+=Math.imul(al0,bl8);mid+=Math.imul(al0,bh8);mid+=Math.imul(ah0,bl8);hi+=Math.imul(ah0,bh8);var w8=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w8>>>26);w8&=67108863;lo=Math.imul(al9,bl0);mid=Math.imul(al9,bh0);mid+=Math.imul(ah9,bl0);hi=Math.imul(ah9,bh0);lo+=Math.imul(al8,bl1);mid+=Math.imul(al8,bh1);mid+=Math.imul(ah8,bl1);hi+=Math.imul(ah8,bh1);lo+=Math.imul(al7,bl2);mid+=Math.imul(al7,bh2);mid+=Math.imul(ah7,bl2);hi+=Math.imul(ah7,bh2);lo+=Math.imul(al6,bl3);mid+=Math.imul(al6,bh3);mid+=Math.imul(ah6,bl3);hi+=Math.imul(ah6,bh3);lo+=Math.imul(al5,bl4);mid+=Math.imul(al5,bh4);mid+=Math.imul(ah5,bl4);hi+=Math.imul(ah5,bh4);lo+=Math.imul(al4,bl5);mid+=Math.imul(al4,bh5);mid+=Math.imul(ah4,bl5);hi+=Math.imul(ah4,bh5);lo+=Math.imul(al3,bl6);mid+=Math.imul(al3,bh6);mid+=Math.imul(ah3,bl6);hi+=Math.imul(ah3,bh6);lo+=Math.imul(al2,bl7);mid+=Math.imul(al2,bh7);mid+=Math.imul(ah2,bl7);hi+=Math.imul(ah2,bh7);lo+=Math.imul(al1,bl8);mid+=Math.imul(al1,bh8);mid+=Math.imul(ah1,bl8);hi+=Math.imul(ah1,bh8);lo+=Math.imul(al0,bl9);mid+=Math.imul(al0,bh9);mid+=Math.imul(ah0,bl9);hi+=Math.imul(ah0,bh9);var w9=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w9>>>26);w9&=67108863;lo=Math.imul(al9,bl1);mid=Math.imul(al9,bh1);mid+=Math.imul(ah9,bl1);hi=Math.imul(ah9,bh1);lo+=Math.imul(al8,bl2);mid+=Math.imul(al8,bh2);mid+=Math.imul(ah8,bl2);hi+=Math.imul(ah8,bh2);lo+=Math.imul(al7,bl3);mid+=Math.imul(al7,bh3);mid+=Math.imul(ah7,bl3);hi+=Math.imul(ah7,bh3);lo+=Math.imul(al6,bl4);mid+=Math.imul(al6,bh4);mid+=Math.imul(ah6,bl4);hi+=Math.imul(ah6,bh4);lo+=Math.imul(al5,bl5);mid+=Math.imul(al5,bh5);mid+=Math.imul(ah5,bl5);hi+=Math.imul(ah5,bh5);lo+=Math.imul(al4,bl6);mid+=Math.imul(al4,bh6);mid+=Math.imul(ah4,bl6);hi+=Math.imul(ah4,bh6);lo+=Math.imul(al3,bl7);mid+=Math.imul(al3,bh7);mid+=Math.imul(ah3,bl7);hi+=Math.imul(ah3,bh7);lo+=Math.imul(al2,bl8);mid+=Math.imul(al2,bh8);mid+=Math.imul(ah2,bl8);hi+=Math.imul(ah2,bh8);lo+=Math.imul(al1,bl9);mid+=Math.imul(al1,bh9);mid+=Math.imul(ah1,bl9);hi+=Math.imul(ah1,bh9);var w10=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w10>>>26);w10&=67108863;lo=Math.imul(al9,bl2);mid=Math.imul(al9,bh2);mid+=Math.imul(ah9,bl2);hi=Math.imul(ah9,bh2);lo+=Math.imul(al8,bl3);mid+=Math.imul(al8,bh3);mid+=Math.imul(ah8,bl3);hi+=Math.imul(ah8,bh3);lo+=Math.imul(al7,bl4);mid+=Math.imul(al7,bh4);mid+=Math.imul(ah7,bl4);hi+=Math.imul(ah7,bh4);lo+=Math.imul(al6,bl5);mid+=Math.imul(al6,bh5);mid+=Math.imul(ah6,bl5);hi+=Math.imul(ah6,bh5);lo+=Math.imul(al5,bl6);mid+=Math.imul(al5,bh6);mid+=Math.imul(ah5,bl6);hi+=Math.imul(ah5,bh6);lo+=Math.imul(al4,bl7);mid+=Math.imul(al4,bh7);mid+=Math.imul(ah4,bl7);hi+=Math.imul(ah4,bh7);lo+=Math.imul(al3,bl8);mid+=Math.imul(al3,bh8);mid+=Math.imul(ah3,bl8);hi+=Math.imul(ah3,bh8);lo+=Math.imul(al2,bl9);mid+=Math.imul(al2,bh9);mid+=Math.imul(ah2,bl9);hi+=Math.imul(ah2,bh9);var w11=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w11>>>26);w11&=67108863;lo=Math.imul(al9,bl3);mid=Math.imul(al9,bh3);mid+=Math.imul(ah9,bl3);hi=Math.imul(ah9,bh3);lo+=Math.imul(al8,bl4);mid+=Math.imul(al8,bh4);mid+=Math.imul(ah8,bl4);hi+=Math.imul(ah8,bh4);lo+=Math.imul(al7,bl5);mid+=Math.imul(al7,bh5);mid+=Math.imul(ah7,bl5);hi+=Math.imul(ah7,bh5);lo+=Math.imul(al6,bl6);mid+=Math.imul(al6,bh6);mid+=Math.imul(ah6,bl6);hi+=Math.imul(ah6,bh6);lo+=Math.imul(al5,bl7);mid+=Math.imul(al5,bh7);mid+=Math.imul(ah5,bl7);hi+=Math.imul(ah5,bh7);lo+=Math.imul(al4,bl8);mid+=Math.imul(al4,bh8);mid+=Math.imul(ah4,bl8);hi+=Math.imul(ah4,bh8);lo+=Math.imul(al3,bl9);mid+=Math.imul(al3,bh9);mid+=Math.imul(ah3,bl9);hi+=Math.imul(ah3,bh9);var w12=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w12>>>26);w12&=67108863;lo=Math.imul(al9,bl4);mid=Math.imul(al9,bh4);mid+=Math.imul(ah9,bl4);hi=Math.imul(ah9,bh4);lo+=Math.imul(al8,bl5);mid+=Math.imul(al8,bh5);mid+=Math.imul(ah8,bl5);hi+=Math.imul(ah8,bh5);lo+=Math.imul(al7,bl6);mid+=Math.imul(al7,bh6);mid+=Math.imul(ah7,bl6);hi+=Math.imul(ah7,bh6);lo+=Math.imul(al6,bl7);mid+=Math.imul(al6,bh7);mid+=Math.imul(ah6,bl7);hi+=Math.imul(ah6,bh7);lo+=Math.imul(al5,bl8);mid+=Math.imul(al5,bh8);mid+=Math.imul(ah5,bl8);hi+=Math.imul(ah5,bh8);lo+=Math.imul(al4,bl9);mid+=Math.imul(al4,bh9);mid+=Math.imul(ah4,bl9);hi+=Math.imul(ah4,bh9);var w13=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w13>>>26);w13&=67108863;lo=Math.imul(al9,bl5);mid=Math.imul(al9,bh5);mid+=Math.imul(ah9,bl5);hi=Math.imul(ah9,bh5);lo+=Math.imul(al8,bl6);mid+=Math.imul(al8,bh6);mid+=Math.imul(ah8,bl6);hi+=Math.imul(ah8,bh6);lo+=Math.imul(al7,bl7);mid+=Math.imul(al7,bh7);mid+=Math.imul(ah7,bl7);hi+=Math.imul(ah7,bh7);lo+=Math.imul(al6,bl8);mid+=Math.imul(al6,bh8);mid+=Math.imul(ah6,bl8);hi+=Math.imul(ah6,bh8);lo+=Math.imul(al5,bl9);mid+=Math.imul(al5,bh9);mid+=Math.imul(ah5,bl9);hi+=Math.imul(ah5,bh9);var w14=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w14>>>26);w14&=67108863;lo=Math.imul(al9,bl6);mid=Math.imul(al9,bh6);mid+=Math.imul(ah9,bl6);hi=Math.imul(ah9,bh6);lo+=Math.imul(al8,bl7);mid+=Math.imul(al8,bh7);mid+=Math.imul(ah8,bl7);hi+=Math.imul(ah8,bh7);lo+=Math.imul(al7,bl8);mid+=Math.imul(al7,bh8);mid+=Math.imul(ah7,bl8);hi+=Math.imul(ah7,bh8);lo+=Math.imul(al6,bl9);mid+=Math.imul(al6,bh9);mid+=Math.imul(ah6,bl9);hi+=Math.imul(ah6,bh9);var w15=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w15>>>26);w15&=67108863;lo=Math.imul(al9,bl7);mid=Math.imul(al9,bh7);mid+=Math.imul(ah9,bl7);hi=Math.imul(ah9,bh7);lo+=Math.imul(al8,bl8);mid+=Math.imul(al8,bh8);mid+=Math.imul(ah8,bl8);hi+=Math.imul(ah8,bh8);lo+=Math.imul(al7,bl9);mid+=Math.imul(al7,bh9);mid+=Math.imul(ah7,bl9);hi+=Math.imul(ah7,bh9);var w16=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w16>>>26);w16&=67108863;lo=Math.imul(al9,bl8);mid=Math.imul(al9,bh8);mid+=Math.imul(ah9,bl8);hi=Math.imul(ah9,bh8);lo+=Math.imul(al8,bl9);mid+=Math.imul(al8,bh9);mid+=Math.imul(ah8,bl9);hi+=Math.imul(ah8,bh9);var w17=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w17>>>26);w17&=67108863;lo=Math.imul(al9,bl9);mid=Math.imul(al9,bh9);mid+=Math.imul(ah9,bl9);hi=Math.imul(ah9,bh9);var w18=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w18>>>26);w18&=67108863;o[0]=w0;o[1]=w1;o[2]=w2;o[3]=w3;o[4]=w4;o[5]=w5;o[6]=w6;o[7]=w7;o[8]=w8;o[9]=w9;o[10]=w10;o[11]=w11;o[12]=w12;o[13]=w13;o[14]=w14;o[15]=w15;o[16]=w16;o[17]=w17;o[18]=w18;if(c!==0){o[19]=c;out.length++}return out};if(!Math.imul){comb10MulTo=smallMulTo}function bigMulTo(self,num,out){out.negative=num.negative^self.negative;out.length=self.length+num.length;var carry=0;var hncarry=0;for(var k=0;k>>26)|0;hncarry+=ncarry>>>26;ncarry&=67108863}out.words[k]=rword;carry=ncarry;ncarry=hncarry}if(carry!==0){out.words[k]=carry}else{out.length--}return out.strip()}function jumboMulTo(self,num,out){var fftm=new FFTM;return fftm.mulp(self,num,out)}BN.prototype.mulTo=function mulTo(num,out){var res;var len=this.length+num.length;if(this.length===10&&num.length===10){res=comb10MulTo(this,num,out)}else if(len<63){res=smallMulTo(this,num,out)}else if(len<1024){res=bigMulTo(this,num,out)}else{res=jumboMulTo(this,num,out)}return res};function FFTM(x,y){this.x=x;this.y=y}FFTM.prototype.makeRBT=function makeRBT(N){var t=new Array(N);var l=BN.prototype._countBits(N)-1;for(var i=0;i>=1}return rb};FFTM.prototype.permute=function permute(rbt,rws,iws,rtws,itws,N){for(var i=0;i>>1){i++}return 1<>>13;rws[2*i+1]=carry&8191;carry=carry>>>13}for(i=2*len;i>=26;carry+=w/67108864|0;carry+=lo>>>26;this.words[i]=lo&67108863}if(carry!==0){this.words[i]=carry;this.length++}return this};BN.prototype.muln=function muln(num){return this.clone().imuln(num)};BN.prototype.sqr=function sqr(){return this.mul(this)};BN.prototype.isqr=function isqr(){return this.imul(this.clone())};BN.prototype.pow=function pow(num){var w=toBitArray(num);if(w.length===0)return new BN(1);var res=this;for(var i=0;i=0);var r=bits%26;var s=(bits-r)/26;var carryMask=67108863>>>26-r<<26-r;var i;if(r!==0){var carry=0;for(i=0;i>>26-r}if(carry){this.words[i]=carry;this.length++}}if(s!==0){for(i=this.length-1;i>=0;i--){this.words[i+s]=this.words[i]}for(i=0;i=0);var h;if(hint){h=(hint-hint%26)/26}else{h=0}var r=bits%26;var s=Math.min((bits-r)/26,this.length);var mask=67108863^67108863>>>r<s){this.length-=s;for(i=0;i=0&&(carry!==0||i>=h);i--){var word=this.words[i]|0;this.words[i]=carry<<26-r|word>>>r;carry=word&mask}if(maskedWords&&carry!==0){maskedWords.words[maskedWords.length++]=carry}if(this.length===0){this.words[0]=0;this.length=1}return this.strip()};BN.prototype.ishrn=function ishrn(bits,hint,extended){assert(this.negative===0);return this.iushrn(bits,hint,extended)};BN.prototype.shln=function shln(bits){return this.clone().ishln(bits)};BN.prototype.ushln=function ushln(bits){return this.clone().iushln(bits)};BN.prototype.shrn=function shrn(bits){return this.clone().ishrn(bits)};BN.prototype.ushrn=function ushrn(bits){return this.clone().iushrn(bits)};BN.prototype.testn=function testn(bit){assert(typeof bit==="number"&&bit>=0);var r=bit%26;var s=(bit-r)/26;var q=1<=0);var r=bits%26;var s=(bits-r)/26;assert(this.negative===0,"imaskn works only with positive numbers");if(r!==0){s++}this.length=Math.min(s,this.length);if(r!==0){var mask=67108863^67108863>>>r<=67108864;i++){this.words[i]-=67108864;if(i===this.length-1){this.words[i+1]=1}else{this.words[i+1]++}}this.length=Math.max(this.length,i+1);return this};BN.prototype.isubn=function isubn(num){assert(typeof num==="number");assert(num<67108864);if(num<0)return this.iaddn(-num);if(this.negative!==0){this.negative=0;this.iaddn(num);this.negative=1;return this}this.words[0]-=num;if(this.length===1&&this.words[0]<0){this.words[0]=-this.words[0];this.negative=1}else{for(var i=0;i>26)-(right/67108864|0);this.words[i+shift]=w&67108863}for(;i>26;this.words[i+shift]=w&67108863}if(carry===0)return this.strip();assert(carry===-1);carry=0;for(i=0;i>26;this.words[i]=w&67108863}this.negative=1;return this.strip()};BN.prototype._wordDiv=function _wordDiv(num,mode){var shift=this.length-num.length;var a=this.clone();var b=num;var bhi=b.words[b.length-1]|0;var bhiBits=this._countBits(bhi);shift=26-bhiBits;if(shift!==0){b=b.ushln(shift);a.iushln(shift);bhi=b.words[b.length-1]|0}var m=a.length-b.length;var q;if(mode!=="mod"){q=new BN(null);q.length=m+1;q.words=new Array(q.length);for(var i=0;i=0;j--){var qj=(a.words[b.length+j]|0)*67108864+(a.words[b.length+j-1]|0);qj=Math.min(qj/bhi|0,67108863);a._ishlnsubmul(b,qj,j);while(a.negative!==0){qj--;a.negative=0;a._ishlnsubmul(b,1,j);if(!a.isZero()){a.negative^=1}}if(q){q.words[j]=qj}}if(q){q.strip()}a.strip();if(mode!=="div"&&shift!==0){a.iushrn(shift)}return{div:q||null,mod:a}};BN.prototype.divmod=function divmod(num,mode,positive){assert(!num.isZero());if(this.isZero()){return{div:new BN(0),mod:new BN(0)}}var div,mod,res;if(this.negative!==0&&num.negative===0){res=this.neg().divmod(num,mode);if(mode!=="mod"){div=res.div.neg()}if(mode!=="div"){mod=res.mod.neg();if(positive&&mod.negative!==0){mod.iadd(num)}}return{div:div,mod:mod}}if(this.negative===0&&num.negative!==0){res=this.divmod(num.neg(),mode);if(mode!=="mod"){div=res.div.neg()}return{div:div,mod:res.mod}}if((this.negative&num.negative)!==0){res=this.neg().divmod(num.neg(),mode);if(mode!=="div"){mod=res.mod.neg();if(positive&&mod.negative!==0){mod.isub(num)}}return{div:res.div,mod:mod}}if(num.length>this.length||this.cmp(num)<0){return{div:new BN(0),mod:this}}if(num.length===1){if(mode==="div"){return{div:this.divn(num.words[0]),mod:null}}if(mode==="mod"){return{div:null,mod:new BN(this.modn(num.words[0]))}}return{div:this.divn(num.words[0]),mod:new BN(this.modn(num.words[0]))}}return this._wordDiv(num,mode)};BN.prototype.div=function div(num){return this.divmod(num,"div",false).div};BN.prototype.mod=function mod(num){return this.divmod(num,"mod",false).mod};BN.prototype.umod=function umod(num){return this.divmod(num,"mod",true).mod};BN.prototype.divRound=function divRound(num){var dm=this.divmod(num);if(dm.mod.isZero())return dm.div;var mod=dm.div.negative!==0?dm.mod.isub(num):dm.mod;var half=num.ushrn(1);var r2=num.andln(1);var cmp=mod.cmp(half);if(cmp<0||r2===1&&cmp===0)return dm.div;return dm.div.negative!==0?dm.div.isubn(1):dm.div.iaddn(1)};BN.prototype.modn=function modn(num){assert(num<=67108863);var p=(1<<26)%num;var acc=0;for(var i=this.length-1;i>=0;i--){acc=(p*acc+(this.words[i]|0))%num}return acc};BN.prototype.idivn=function idivn(num){assert(num<=67108863);var carry=0;for(var i=this.length-1;i>=0;i--){var w=(this.words[i]|0)+carry*67108864;this.words[i]=w/num|0;carry=w%num}return this.strip()};BN.prototype.divn=function divn(num){return this.clone().idivn(num)};BN.prototype.egcd=function egcd(p){assert(p.negative===0);assert(!p.isZero());var x=this;var y=p.clone();if(x.negative!==0){x=x.umod(p)}else{x=x.clone()}var A=new BN(1);var B=new BN(0);var C=new BN(0);var D=new BN(1);var g=0;while(x.isEven()&&y.isEven()){x.iushrn(1);y.iushrn(1);++g}var yp=y.clone();var xp=x.clone();while(!x.isZero()){for(var i=0,im=1;(x.words[0]&im)===0&&i<26;++i,im<<=1);if(i>0){x.iushrn(i);while(i-- >0){if(A.isOdd()||B.isOdd()){A.iadd(yp);B.isub(xp)}A.iushrn(1);B.iushrn(1)}}for(var j=0,jm=1;(y.words[0]&jm)===0&&j<26;++j,jm<<=1);if(j>0){y.iushrn(j);while(j-- >0){if(C.isOdd()||D.isOdd()){C.iadd(yp);D.isub(xp)}C.iushrn(1);D.iushrn(1)}}if(x.cmp(y)>=0){x.isub(y);A.isub(C);B.isub(D)}else{y.isub(x);C.isub(A);D.isub(B)}}return{a:C,b:D,gcd:y.iushln(g)}};BN.prototype._invmp=function _invmp(p){assert(p.negative===0);assert(!p.isZero());var a=this;var b=p.clone();if(a.negative!==0){a=a.umod(p)}else{a=a.clone()}var x1=new BN(1);var x2=new BN(0);var delta=b.clone();while(a.cmpn(1)>0&&b.cmpn(1)>0){for(var i=0,im=1;(a.words[0]&im)===0&&i<26;++i,im<<=1);if(i>0){a.iushrn(i);while(i-- >0){if(x1.isOdd()){x1.iadd(delta)}x1.iushrn(1)}}for(var j=0,jm=1;(b.words[0]&jm)===0&&j<26;++j,jm<<=1);if(j>0){b.iushrn(j);while(j-- >0){if(x2.isOdd()){x2.iadd(delta)}x2.iushrn(1)}}if(a.cmp(b)>=0){a.isub(b);x1.isub(x2)}else{b.isub(a);x2.isub(x1)}}var res;if(a.cmpn(1)===0){res=x1}else{res=x2}if(res.cmpn(0)<0){res.iadd(p)}return res};BN.prototype.gcd=function gcd(num){if(this.isZero())return num.abs();if(num.isZero())return this.abs();var a=this.clone();var b=num.clone();a.negative=0;b.negative=0;for(var shift=0;a.isEven()&&b.isEven();shift++){a.iushrn(1);b.iushrn(1)}do{while(a.isEven()){a.iushrn(1)}while(b.isEven()){b.iushrn(1)}var r=a.cmp(b);if(r<0){var t=a;a=b;b=t}else if(r===0||b.cmpn(1)===0){break}a.isub(b)}while(true);return b.iushln(shift)};BN.prototype.invm=function invm(num){return this.egcd(num).a.umod(num)};BN.prototype.isEven=function isEven(){return(this.words[0]&1)===0};BN.prototype.isOdd=function isOdd(){return(this.words[0]&1)===1};BN.prototype.andln=function andln(num){return this.words[0]&num};BN.prototype.bincn=function bincn(bit){assert(typeof bit==="number");var r=bit%26;var s=(bit-r)/26;var q=1<>>26;w&=67108863;this.words[i]=w}if(carry!==0){this.words[i]=carry;this.length++}return this};BN.prototype.isZero=function isZero(){return this.length===1&&this.words[0]===0};BN.prototype.cmpn=function cmpn(num){var negative=num<0;if(this.negative!==0&&!negative)return-1;if(this.negative===0&&negative)return 1;this.strip();var res;if(this.length>1){res=1}else{if(negative){num=-num}assert(num<=67108863,"Number is too big");var w=this.words[0]|0;res=w===num?0:wnum.length)return 1;if(this.length=0;i--){var a=this.words[i]|0;var b=num.words[i]|0;if(a===b)continue;if(ab){res=1}break}return res};BN.prototype.gtn=function gtn(num){return this.cmpn(num)===1};BN.prototype.gt=function gt(num){return this.cmp(num)===1};BN.prototype.gten=function gten(num){return this.cmpn(num)>=0};BN.prototype.gte=function gte(num){return this.cmp(num)>=0};BN.prototype.ltn=function ltn(num){return this.cmpn(num)===-1};BN.prototype.lt=function lt(num){return this.cmp(num)===-1};BN.prototype.lten=function lten(num){return this.cmpn(num)<=0};BN.prototype.lte=function lte(num){return this.cmp(num)<=0};BN.prototype.eqn=function eqn(num){return this.cmpn(num)===0};BN.prototype.eq=function eq(num){return this.cmp(num)===0};BN.red=function red(num){return new Red(num)};BN.prototype.toRed=function toRed(ctx){assert(!this.red,"Already a number in reduction context");assert(this.negative===0,"red works only with positives");return ctx.convertTo(this)._forceRed(ctx)};BN.prototype.fromRed=function fromRed(){assert(this.red,"fromRed works only with numbers in reduction context");return this.red.convertFrom(this)};BN.prototype._forceRed=function _forceRed(ctx){this.red=ctx;return this};BN.prototype.forceRed=function forceRed(ctx){assert(!this.red,"Already a number in reduction context");return this._forceRed(ctx)};BN.prototype.redAdd=function redAdd(num){assert(this.red,"redAdd works only with red numbers");return this.red.add(this,num)};BN.prototype.redIAdd=function redIAdd(num){assert(this.red,"redIAdd works only with red numbers");return this.red.iadd(this,num)};BN.prototype.redSub=function redSub(num){assert(this.red,"redSub works only with red numbers");return this.red.sub(this,num)};BN.prototype.redISub=function redISub(num){assert(this.red,"redISub works only with red numbers");return this.red.isub(this,num)};BN.prototype.redShl=function redShl(num){assert(this.red,"redShl works only with red numbers");return this.red.shl(this,num)};BN.prototype.redMul=function redMul(num){assert(this.red,"redMul works only with red numbers");this.red._verify2(this,num);return this.red.mul(this,num)};BN.prototype.redIMul=function redIMul(num){assert(this.red,"redMul works only with red numbers");this.red._verify2(this,num);return this.red.imul(this,num)};BN.prototype.redSqr=function redSqr(){assert(this.red,"redSqr works only with red numbers");this.red._verify1(this);return this.red.sqr(this)};BN.prototype.redISqr=function redISqr(){assert(this.red,"redISqr works only with red numbers");this.red._verify1(this);return this.red.isqr(this)};BN.prototype.redSqrt=function redSqrt(){assert(this.red,"redSqrt works only with red numbers");this.red._verify1(this);return this.red.sqrt(this)};BN.prototype.redInvm=function redInvm(){assert(this.red,"redInvm works only with red numbers");this.red._verify1(this);return this.red.invm(this)};BN.prototype.redNeg=function redNeg(){assert(this.red,"redNeg works only with red numbers");this.red._verify1(this);return this.red.neg(this)};BN.prototype.redPow=function redPow(num){assert(this.red&&!num.red,"redPow(normalNum)");this.red._verify1(this);return this.red.pow(this,num)};var primes={k256:null,p224:null,p192:null,p25519:null};function MPrime(name,p){this.name=name;this.p=new BN(p,16);this.n=this.p.bitLength();this.k=new BN(1).iushln(this.n).isub(this.p);this.tmp=this._tmp()}MPrime.prototype._tmp=function _tmp(){var tmp=new BN(null);tmp.words=new Array(Math.ceil(this.n/13));return tmp};MPrime.prototype.ireduce=function ireduce(num){var r=num;var rlen;do{this.split(r,this.tmp);r=this.imulK(r);r=r.iadd(this.tmp);rlen=r.bitLength()}while(rlen>this.n);var cmp=rlen0){r.isub(this.p)}else{r.strip()}return r};MPrime.prototype.split=function split(input,out){input.iushrn(this.n,0,out)};MPrime.prototype.imulK=function imulK(num){return num.imul(this.k)};function K256(){MPrime.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}inherits(K256,MPrime);K256.prototype.split=function split(input,output){var mask=4194303;var outLen=Math.min(input.length,9);for(var i=0;i>>22;prev=next}prev>>>=22;input.words[i-10]=prev;if(prev===0&&input.length>10){input.length-=10}else{input.length-=9}};K256.prototype.imulK=function imulK(num){num.words[num.length]=0;num.words[num.length+1]=0;num.length+=2;var lo=0;for(var i=0;i>>=26;num.words[i]=lo;carry=hi}if(carry!==0){num.words[num.length++]=carry}return num};BN._prime=function prime(name){if(primes[name])return primes[name];var prime;if(name==="k256"){prime=new K256}else if(name==="p224"){prime=new P224}else if(name==="p192"){prime=new P192}else if(name==="p25519"){prime=new P25519}else{throw new Error("Unknown prime "+name)}primes[name]=prime;return prime};function Red(m){if(typeof m==="string"){var prime=BN._prime(m);this.m=prime.p;this.prime=prime}else{this.m=m;this.prime=null}}Red.prototype._verify1=function _verify1(a){assert(a.negative===0,"red works only with positives");assert(a.red,"red works only with red numbers")};Red.prototype._verify2=function _verify2(a,b){assert((a.negative|b.negative)===0,"red works only with positives");assert(a.red&&a.red===b.red,"red works only with red numbers")};Red.prototype.imod=function imod(a){if(this.prime)return this.prime.ireduce(a)._forceRed(this);return a.umod(this.m)._forceRed(this)};Red.prototype.neg=function neg(a){if(a.isZero()){return a.clone()}return this.m.sub(a)._forceRed(this)};Red.prototype.add=function add(a,b){this._verify2(a,b);var res=a.add(b);if(res.cmp(this.m)>=0){res.isub(this.m)}return res._forceRed(this)};Red.prototype.iadd=function iadd(a,b){this._verify2(a,b);var res=a.iadd(b);if(res.cmp(this.m)>=0){res.isub(this.m)}return res};Red.prototype.sub=function sub(a,b){this._verify2(a,b);var res=a.sub(b);if(res.cmpn(0)<0){res.iadd(this.m)}return res._forceRed(this)};Red.prototype.isub=function isub(a,b){this._verify2(a,b);var res=a.isub(b);if(res.cmpn(0)<0){res.iadd(this.m)}return res};Red.prototype.shl=function shl(a,num){this._verify1(a);return this.imod(a.ushln(num))};Red.prototype.imul=function imul(a,b){this._verify2(a,b);return this.imod(a.imul(b))};Red.prototype.mul=function mul(a,b){this._verify2(a,b);return this.imod(a.mul(b))};Red.prototype.isqr=function isqr(a){return this.imul(a,a.clone())};Red.prototype.sqr=function sqr(a){return this.mul(a,a)};Red.prototype.sqrt=function sqrt(a){if(a.isZero())return a.clone();var mod3=this.m.andln(3);assert(mod3%2===1);if(mod3===3){var pow=this.m.add(new BN(1)).iushrn(2);return this.pow(a,pow)}var q=this.m.subn(1);var s=0;while(!q.isZero()&&q.andln(1)===0){s++;q.iushrn(1)}assert(!q.isZero());var one=new BN(1).toRed(this);var nOne=one.redNeg();var lpow=this.m.subn(1).iushrn(1);var z=this.m.bitLength();z=new BN(2*z*z).toRed(this);while(this.pow(z,lpow).cmp(nOne)!==0){z.redIAdd(nOne)}var c=this.pow(z,q);var r=this.pow(a,q.addn(1).iushrn(1));var t=this.pow(a,q);var m=s;while(t.cmp(one)!==0){var tmp=t;for(var i=0;tmp.cmp(one)!==0;i++){tmp=tmp.redSqr()}assert(i=0;i--){var word=num.words[i];for(var j=start-1;j>=0;j--){var bit=word>>j&1;if(res!==wnd[0]){res=this.sqr(res)}if(bit===0&¤t===0){currentLen=0;continue}current<<=1;current|=bit;currentLen++;if(currentLen!==windowSize&&(i!==0||j!==0))continue;res=this.mul(res,wnd[current]);currentLen=0;current=0}start=26}return res};Red.prototype.convertTo=function convertTo(num){var r=num.umod(this.m);return r===num?r.clone():r};Red.prototype.convertFrom=function convertFrom(num){var res=num.clone();res.red=null;return res};BN.mont=function mont(num){return new Mont(num)};function Mont(m){Red.call(this,m);this.shift=this.m.bitLength();if(this.shift%26!==0){this.shift+=26-this.shift%26}this.r=new BN(1).iushln(this.shift);this.r2=this.imod(this.r.sqr());this.rinv=this.r._invmp(this.m);this.minv=this.rinv.mul(this.r).isubn(1).div(this.m);this.minv=this.minv.umod(this.r);this.minv=this.r.sub(this.minv)}inherits(Mont,Red);Mont.prototype.convertTo=function convertTo(num){return this.imod(num.ushln(this.shift))};Mont.prototype.convertFrom=function convertFrom(num){var r=this.imod(num.mul(this.rinv));r.red=null;return r};Mont.prototype.imul=function imul(a,b){if(a.isZero()||b.isZero()){a.words[0]=0;a.length=1;return a}var t=a.imul(b);var c=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);var u=t.isub(c).iushrn(this.shift);var res=u;if(u.cmp(this.m)>=0){res=u.isub(this.m)}else if(u.cmpn(0)<0){res=u.iadd(this.m)}return res._forceRed(this)};Mont.prototype.mul=function mul(a,b){if(a.isZero()||b.isZero())return new BN(0)._forceRed(this);var t=a.mul(b);var c=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);var u=t.isub(c).iushrn(this.shift);var res=u;if(u.cmp(this.m)>=0){res=u.isub(this.m)}else if(u.cmpn(0)<0){res=u.iadd(this.m)}return res._forceRed(this)};Mont.prototype.invm=function invm(a){var res=this.imod(a._invmp(this.m).mul(this.r2));return res._forceRed(this)}})(typeof module==="undefined"||module,this)},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/browserify-rsa/index.js":[function(require,module,exports){(function(Buffer){var bn=require("bn.js");var randomBytes=require("randombytes");module.exports=crt;function blind(priv){var r=getr(priv);var blinder=r.toRed(bn.mont(priv.modulus)).redPow(new bn(priv.publicExponent)).fromRed();return{blinder:blinder,unblinder:r.invm(priv.modulus)}}function crt(msg,priv){var blinds=blind(priv);var len=priv.modulus.byteLength();var mod=bn.mont(priv.modulus);var blinded=new bn(msg).mul(blinds.blinder).umod(priv.modulus);var c1=blinded.toRed(bn.mont(priv.prime1));var c2=blinded.toRed(bn.mont(priv.prime2));var qinv=priv.coefficient;var p=priv.prime1;var q=priv.prime2;var m1=c1.redPow(priv.exponent1);var m2=c2.redPow(priv.exponent2);m1=m1.fromRed();m2=m2.fromRed();var h=m1.isub(m2).imul(qinv).umod(p);h.imul(q);m2.iadd(h);return new Buffer(m2.imul(blinds.unblinder).umod(priv.modulus).toArray(false,len))}crt.getr=getr;function getr(priv){var len=priv.modulus.byteLength();var r=new bn(randomBytes(len));while(r.cmp(priv.modulus)>=0||!r.umod(priv.prime1)||!r.umod(priv.prime2)){r=new bn(randomBytes(len))}return r}}).call(this,require("buffer").Buffer)},{"bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",randombytes:"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/randombytes/browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic.js":[function(require,module,exports){"use strict";var elliptic=exports;elliptic.version=require("../package.json").version;elliptic.utils=require("./elliptic/utils");elliptic.rand=require("brorand");elliptic.hmacDRBG=require("./elliptic/hmac-drbg");elliptic.curve=require("./elliptic/curve");elliptic.curves=require("./elliptic/curves");elliptic.ec=require("./elliptic/ec");elliptic.eddsa=require("./elliptic/eddsa")},{"../package.json":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/package.json","./elliptic/curve":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/index.js","./elliptic/curves":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curves.js","./elliptic/ec":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/ec/index.js","./elliptic/eddsa":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/eddsa/index.js","./elliptic/hmac-drbg":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/hmac-drbg.js","./elliptic/utils":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/utils.js",brorand:"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/node_modules/brorand/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/base.js":[function(require,module,exports){"use strict";var BN=require("bn.js");var elliptic=require("../../elliptic");var utils=elliptic.utils;var getNAF=utils.getNAF;var getJSF=utils.getJSF;var assert=utils.assert;function BaseCurve(type,conf){this.type=type;this.p=new BN(conf.p,16);this.red=conf.prime?BN.red(conf.prime):BN.mont(this.p);this.zero=new BN(0).toRed(this.red);this.one=new BN(1).toRed(this.red);this.two=new BN(2).toRed(this.red);this.n=conf.n&&new BN(conf.n,16);this.g=conf.g&&this.pointFromJSON(conf.g,conf.gRed);this._wnafT1=new Array(4);this._wnafT2=new Array(4);this._wnafT3=new Array(4);this._wnafT4=new Array(4)}module.exports=BaseCurve;BaseCurve.prototype.point=function point(){throw new Error("Not implemented")};BaseCurve.prototype.validate=function validate(){throw new Error("Not implemented")};BaseCurve.prototype._fixedNafMul=function _fixedNafMul(p,k){assert(p.precomputed);var doubles=p._getDoubles();var naf=getNAF(k,1);var I=(1<=j;k--)nafW=(nafW<<1)+naf[k];repr.push(nafW)}var a=this.jpoint(null,null,null);var b=this.jpoint(null,null,null);for(var i=I;i>0;i--){for(var j=0;j=0;i--){for(var k=0;i>=0&&naf[i]===0;i--)k++;if(i>=0)k++;acc=acc.dblp(k);if(i<0)break;var z=naf[i];assert(z!==0);if(p.type==="affine"){if(z>0)acc=acc.mixedAdd(wnd[z-1>>1]);else acc=acc.mixedAdd(wnd[-z-1>>1].neg())}else{if(z>0)acc=acc.add(wnd[z-1>>1]);else acc=acc.add(wnd[-z-1>>1].neg())}}return p.type==="affine"?acc.toP():acc};BaseCurve.prototype._wnafMulAdd=function _wnafMulAdd(defW,points,coeffs,len){var wndWidth=this._wnafT1;var wnd=this._wnafT2;var naf=this._wnafT3;var max=0;for(var i=0;i=1;i-=2){var a=i-1;var b=i;if(wndWidth[a]!==1||wndWidth[b]!==1){naf[a]=getNAF(coeffs[a],wndWidth[a]);naf[b]=getNAF(coeffs[b],wndWidth[b]);max=Math.max(naf[a].length,max);max=Math.max(naf[b].length,max);continue}var comb=[points[a],null,null,points[b]];if(points[a].y.cmp(points[b].y)===0){comb[1]=points[a].add(points[b]);comb[2]=points[a].toJ().mixedAdd(points[b].neg())}else if(points[a].y.cmp(points[b].y.redNeg())===0){comb[1]=points[a].toJ().mixedAdd(points[b]);comb[2]=points[a].add(points[b].neg())}else{comb[1]=points[a].toJ().mixedAdd(points[b]); -comb[2]=points[a].toJ().mixedAdd(points[b].neg())}var index=[-3,-1,-5,-7,0,7,5,1,3];var jsf=getJSF(coeffs[a],coeffs[b]);max=Math.max(jsf[0].length,max);naf[a]=new Array(max);naf[b]=new Array(max);for(var j=0;j=0;i--){var k=0;while(i>=0){var zero=true;for(var j=0;j=0)k++;acc=acc.dblp(k);if(i<0)break;for(var j=0;j0)p=wnd[j][z-1>>1];else if(z<0)p=wnd[j][-z-1>>1].neg();if(p.type==="affine")acc=acc.mixedAdd(p);else acc=acc.add(p)}}for(var i=0;i=Math.ceil((k.bitLength()+1)/doubles.step)};BasePoint.prototype._getDoubles=function _getDoubles(step,power){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;var doubles=[this];var acc=this;for(var i=0;i";return""};Point.prototype.isInfinity=function isInfinity(){return this.x.cmpn(0)===0&&this.y.cmp(this.z)===0};Point.prototype._extDbl=function _extDbl(){var a=this.x.redSqr();var b=this.y.redSqr();var c=this.z.redSqr();c=c.redIAdd(c);var d=this.curve._mulA(a);var e=this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);var g=d.redAdd(b);var f=g.redSub(c);var h=d.redSub(b);var nx=e.redMul(f);var ny=g.redMul(h);var nt=e.redMul(h);var nz=f.redMul(g);return this.curve.point(nx,ny,nz,nt)};Point.prototype._projDbl=function _projDbl(){var b=this.x.redAdd(this.y).redSqr();var c=this.x.redSqr();var d=this.y.redSqr();var nx;var ny;var nz;if(this.curve.twisted){var e=this.curve._mulA(c);var f=e.redAdd(d);if(this.zOne){nx=b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));ny=f.redMul(e.redSub(d));nz=f.redSqr().redSub(f).redSub(f)}else{var h=this.z.redSqr();var j=f.redSub(h).redISub(h);nx=b.redSub(c).redISub(d).redMul(j);ny=f.redMul(e.redSub(d));nz=f.redMul(j)}}else{var e=c.redAdd(d);var h=this.curve._mulC(this.c.redMul(this.z)).redSqr();var j=e.redSub(h).redSub(h);nx=this.curve._mulC(b.redISub(e)).redMul(j);ny=this.curve._mulC(e).redMul(c.redISub(d));nz=e.redMul(j)}return this.curve.point(nx,ny,nz)};Point.prototype.dbl=function dbl(){if(this.isInfinity())return this;if(this.curve.extended)return this._extDbl();else return this._projDbl()};Point.prototype._extAdd=function _extAdd(p){var a=this.y.redSub(this.x).redMul(p.y.redSub(p.x));var b=this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));var c=this.t.redMul(this.curve.dd).redMul(p.t);var d=this.z.redMul(p.z.redAdd(p.z));var e=b.redSub(a);var f=d.redSub(c);var g=d.redAdd(c);var h=b.redAdd(a);var nx=e.redMul(f);var ny=g.redMul(h);var nt=e.redMul(h);var nz=f.redMul(g);return this.curve.point(nx,ny,nz,nt)};Point.prototype._projAdd=function _projAdd(p){var a=this.z.redMul(p.z);var b=a.redSqr();var c=this.x.redMul(p.x);var d=this.y.redMul(p.y);var e=this.curve.d.redMul(c).redMul(d);var f=b.redSub(e);var g=b.redAdd(e);var tmp=this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);var nx=a.redMul(f).redMul(tmp);var ny;var nz;if(this.curve.twisted){ny=a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));nz=f.redMul(g)}else{ny=a.redMul(g).redMul(d.redSub(c));nz=this.curve._mulC(f).redMul(g)}return this.curve.point(nx,ny,nz)};Point.prototype.add=function add(p){if(this.isInfinity())return p;if(p.isInfinity())return this;if(this.curve.extended)return this._extAdd(p);else return this._projAdd(p)};Point.prototype.mul=function mul(k){if(this._hasDoubles(k))return this.curve._fixedNafMul(this,k);else return this.curve._wnafMul(this,k)};Point.prototype.mulAdd=function mulAdd(k1,p,k2){return this.curve._wnafMulAdd(1,[this,p],[k1,k2],2)};Point.prototype.normalize=function normalize(){if(this.zOne)return this;var zi=this.z.redInvm();this.x=this.x.redMul(zi);this.y=this.y.redMul(zi);if(this.t)this.t=this.t.redMul(zi);this.z=this.curve.one;this.zOne=true;return this};Point.prototype.neg=function neg(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())};Point.prototype.getX=function getX(){this.normalize();return this.x.fromRed()};Point.prototype.getY=function getY(){this.normalize();return this.y.fromRed()};Point.prototype.eq=function eq(other){return this===other||this.getX().cmp(other.getX())===0&&this.getY().cmp(other.getY())===0};Point.prototype.toP=Point.prototype.normalize;Point.prototype.mixedAdd=Point.prototype.add},{"../../elliptic":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic.js","../curve":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/index.js","bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/index.js":[function(require,module,exports){"use strict";var curve=exports;curve.base=require("./base");curve.short=require("./short");curve.mont=require("./mont");curve.edwards=require("./edwards")},{"./base":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/base.js","./edwards":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/edwards.js","./mont":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/mont.js","./short":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/short.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/mont.js":[function(require,module,exports){"use strict";var curve=require("../curve");var BN=require("bn.js");var inherits=require("inherits");var Base=curve.base;var elliptic=require("../../elliptic");var utils=elliptic.utils;function MontCurve(conf){Base.call(this,"mont",conf);this.a=new BN(conf.a,16).toRed(this.red);this.b=new BN(conf.b,16).toRed(this.red);this.i4=new BN(4).toRed(this.red).redInvm();this.two=new BN(2).toRed(this.red);this.a24=this.i4.redMul(this.a.redAdd(this.two))}inherits(MontCurve,Base);module.exports=MontCurve;MontCurve.prototype.validate=function validate(point){var x=point.normalize().x;var x2=x.redSqr();var rhs=x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);var y=rhs.redSqrt();return y.redSqr().cmp(rhs)===0};function Point(curve,x,z){Base.BasePoint.call(this,curve,"projective");if(x===null&&z===null){this.x=this.curve.one;this.z=this.curve.zero}else{this.x=new BN(x,16);this.z=new BN(z,16);if(!this.x.red)this.x=this.x.toRed(this.curve.red);if(!this.z.red)this.z=this.z.toRed(this.curve.red)}}inherits(Point,Base.BasePoint);MontCurve.prototype.decodePoint=function decodePoint(bytes,enc){return this.point(utils.toArray(bytes,enc),1)};MontCurve.prototype.point=function point(x,z){return new Point(this,x,z)};MontCurve.prototype.pointFromJSON=function pointFromJSON(obj){return Point.fromJSON(this,obj)};Point.prototype.precompute=function precompute(){};Point.prototype._encode=function _encode(){return this.getX().toArray("be",this.curve.p.byteLength())};Point.fromJSON=function fromJSON(curve,obj){return new Point(curve,obj[0],obj[1]||curve.one)};Point.prototype.inspect=function inspect(){if(this.isInfinity())return"";return""};Point.prototype.isInfinity=function isInfinity(){return this.z.cmpn(0)===0};Point.prototype.dbl=function dbl(){var a=this.x.redAdd(this.z);var aa=a.redSqr();var b=this.x.redSub(this.z);var bb=b.redSqr();var c=aa.redSub(bb);var nx=aa.redMul(bb);var nz=c.redMul(bb.redAdd(this.curve.a24.redMul(c)));return this.curve.point(nx,nz)};Point.prototype.add=function add(){throw new Error("Not supported on Montgomery curve")};Point.prototype.diffAdd=function diffAdd(p,diff){var a=this.x.redAdd(this.z);var b=this.x.redSub(this.z);var c=p.x.redAdd(p.z);var d=p.x.redSub(p.z);var da=d.redMul(a);var cb=c.redMul(b);var nx=diff.z.redMul(da.redAdd(cb).redSqr());var nz=diff.x.redMul(da.redISub(cb).redSqr());return this.curve.point(nx,nz)};Point.prototype.mul=function mul(k){var t=k.clone();var a=this;var b=this.curve.point(null,null);var c=this;for(var bits=[];t.cmpn(0)!==0;t.iushrn(1))bits.push(t.andln(1));for(var i=bits.length-1;i>=0;i--){if(bits[i]===0){a=a.diffAdd(b,c);b=b.dbl()}else{b=a.diffAdd(b,c);a=a.dbl()}}return b};Point.prototype.mulAdd=function mulAdd(){throw new Error("Not supported on Montgomery curve")};Point.prototype.eq=function eq(other){return this.getX().cmp(other.getX())===0};Point.prototype.normalize=function normalize(){this.x=this.x.redMul(this.z.redInvm());this.z=this.curve.one;return this};Point.prototype.getX=function getX(){this.normalize();return this.x.fromRed()}},{"../../elliptic":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic.js","../curve":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/index.js","bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/short.js":[function(require,module,exports){"use strict";var curve=require("../curve");var elliptic=require("../../elliptic");var BN=require("bn.js");var inherits=require("inherits");var Base=curve.base;var assert=elliptic.utils.assert;function ShortCurve(conf){Base.call(this,"short",conf);this.a=new BN(conf.a,16).toRed(this.red);this.b=new BN(conf.b,16).toRed(this.red);this.tinv=this.two.redInvm();this.zeroA=this.a.fromRed().cmpn(0)===0;this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0;this.endo=this._getEndomorphism(conf);this._endoWnafT1=new Array(4);this._endoWnafT2=new Array(4)}inherits(ShortCurve,Base);module.exports=ShortCurve;ShortCurve.prototype._getEndomorphism=function _getEndomorphism(conf){if(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)return;var beta;var lambda;if(conf.beta){beta=new BN(conf.beta,16).toRed(this.red)}else{var betas=this._getEndoRoots(this.p);beta=betas[0].cmp(betas[1])<0?betas[0]:betas[1];beta=beta.toRed(this.red)}if(conf.lambda){lambda=new BN(conf.lambda,16)}else{var lambdas=this._getEndoRoots(this.n);if(this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta))===0){lambda=lambdas[0]}else{lambda=lambdas[1];assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta))===0)}}var basis;if(conf.basis){basis=conf.basis.map(function(vec){return{a:new BN(vec.a,16),b:new BN(vec.b,16)}})}else{basis=this._getEndoBasis(lambda)}return{beta:beta,lambda:lambda,basis:basis}};ShortCurve.prototype._getEndoRoots=function _getEndoRoots(num){var red=num===this.p?this.red:BN.mont(num);var tinv=new BN(2).toRed(red).redInvm();var ntinv=tinv.redNeg();var s=new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);var l1=ntinv.redAdd(s).fromRed();var l2=ntinv.redSub(s).fromRed();return[l1,l2]};ShortCurve.prototype._getEndoBasis=function _getEndoBasis(lambda){var aprxSqrt=this.n.ushrn(Math.floor(this.n.bitLength()/2));var u=lambda;var v=this.n.clone();var x1=new BN(1);var y1=new BN(0);var x2=new BN(0);var y2=new BN(1);var a0;var b0;var a1;var b1;var a2;var b2;var prevR;var i=0;var r;var x;while(u.cmpn(0)!==0){var q=v.div(u);r=v.sub(q.mul(u));x=x2.sub(q.mul(x1));var y=y2.sub(q.mul(y1));if(!a1&&r.cmp(aprxSqrt)<0){a0=prevR.neg();b0=x1;a1=r.neg();b1=x}else if(a1&&++i===2){break}prevR=r;v=u;u=r;x2=x1;x1=x;y2=y1;y1=y}a2=r.neg();b2=x;var len1=a1.sqr().add(b1.sqr());var len2=a2.sqr().add(b2.sqr());if(len2.cmp(len1)>=0){a2=a0;b2=b0}if(a1.negative){a1=a1.neg();b1=b1.neg()}if(a2.negative){a2=a2.neg();b2=b2.neg()}return[{a:a1,b:b1},{a:a2,b:b2}]};ShortCurve.prototype._endoSplit=function _endoSplit(k){var basis=this.endo.basis;var v1=basis[0];var v2=basis[1];var c1=v2.b.mul(k).divRound(this.n);var c2=v1.b.neg().mul(k).divRound(this.n);var p1=c1.mul(v1.a);var p2=c2.mul(v2.a);var q1=c1.mul(v1.b);var q2=c2.mul(v2.b);var k1=k.sub(p1).sub(p2);var k2=q1.add(q2).neg();return{k1:k1,k2:k2}};ShortCurve.prototype.pointFromX=function pointFromX(x,odd){x=new BN(x,16);if(!x.red)x=x.toRed(this.red);var y2=x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);var y=y2.redSqrt();if(y.redSqr().redSub(y2).cmp(this.zero)!==0)throw new Error("invalid point");var isOdd=y.fromRed().isOdd();if(odd&&!isOdd||!odd&&isOdd)y=y.redNeg();return this.point(x,y)};ShortCurve.prototype.validate=function validate(point){if(point.inf)return true;var x=point.x;var y=point.y;var ax=this.a.redMul(x);var rhs=x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);return y.redSqr().redISub(rhs).cmpn(0)===0};ShortCurve.prototype._endoWnafMulAdd=function _endoWnafMulAdd(points,coeffs){var npoints=this._endoWnafT1;var ncoeffs=this._endoWnafT2;for(var i=0;i";return""};Point.prototype.isInfinity=function isInfinity(){return this.inf};Point.prototype.add=function add(p){if(this.inf)return p;if(p.inf)return this;if(this.eq(p))return this.dbl();if(this.neg().eq(p))return this.curve.point(null,null);if(this.x.cmp(p.x)===0)return this.curve.point(null,null);var c=this.y.redSub(p.y);if(c.cmpn(0)!==0)c=c.redMul(this.x.redSub(p.x).redInvm());var nx=c.redSqr().redISub(this.x).redISub(p.x);var ny=c.redMul(this.x.redSub(nx)).redISub(this.y);return this.curve.point(nx,ny)};Point.prototype.dbl=function dbl(){if(this.inf)return this;var ys1=this.y.redAdd(this.y);if(ys1.cmpn(0)===0)return this.curve.point(null,null);var a=this.curve.a;var x2=this.x.redSqr();var dyinv=ys1.redInvm();var c=x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);var nx=c.redSqr().redISub(this.x.redAdd(this.x));var ny=c.redMul(this.x.redSub(nx)).redISub(this.y);return this.curve.point(nx,ny)};Point.prototype.getX=function getX(){return this.x.fromRed()};Point.prototype.getY=function getY(){return this.y.fromRed()};Point.prototype.mul=function mul(k){k=new BN(k,16);if(this._hasDoubles(k))return this.curve._fixedNafMul(this,k);else if(this.curve.endo)return this.curve._endoWnafMulAdd([this],[k]);else return this.curve._wnafMul(this,k)};Point.prototype.mulAdd=function mulAdd(k1,p2,k2){var points=[this,p2];var coeffs=[k1,k2];if(this.curve.endo)return this.curve._endoWnafMulAdd(points,coeffs);else return this.curve._wnafMulAdd(1,points,coeffs,2)};Point.prototype.eq=function eq(p){return this===p||this.inf===p.inf&&(this.inf||this.x.cmp(p.x)===0&&this.y.cmp(p.y)===0)};Point.prototype.neg=function neg(_precompute){if(this.inf)return this;var res=this.curve.point(this.x,this.y.redNeg());if(_precompute&&this.precomputed){var pre=this.precomputed;var negate=function(p){return p.neg()};res.precomputed={naf:pre.naf&&{wnd:pre.naf.wnd,points:pre.naf.points.map(negate)},doubles:pre.doubles&&{step:pre.doubles.step,points:pre.doubles.points.map(negate)}}}return res};Point.prototype.toJ=function toJ(){if(this.inf)return this.curve.jpoint(null,null,null);var res=this.curve.jpoint(this.x,this.y,this.curve.one);return res};function JPoint(curve,x,y,z){Base.BasePoint.call(this,curve,"jacobian");if(x===null&&y===null&&z===null){this.x=this.curve.one;this.y=this.curve.one;this.z=new BN(0)}else{this.x=new BN(x,16);this.y=new BN(y,16);this.z=new BN(z,16)}if(!this.x.red)this.x=this.x.toRed(this.curve.red);if(!this.y.red)this.y=this.y.toRed(this.curve.red);if(!this.z.red)this.z=this.z.toRed(this.curve.red);this.zOne=this.z===this.curve.one}inherits(JPoint,Base.BasePoint);ShortCurve.prototype.jpoint=function jpoint(x,y,z){return new JPoint(this,x,y,z)};JPoint.prototype.toP=function toP(){if(this.isInfinity())return this.curve.point(null,null);var zinv=this.z.redInvm();var zinv2=zinv.redSqr();var ax=this.x.redMul(zinv2);var ay=this.y.redMul(zinv2).redMul(zinv);return this.curve.point(ax,ay)};JPoint.prototype.neg=function neg(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)};JPoint.prototype.add=function add(p){if(this.isInfinity())return p;if(p.isInfinity())return this;var pz2=p.z.redSqr();var z2=this.z.redSqr();var u1=this.x.redMul(pz2);var u2=p.x.redMul(z2);var s1=this.y.redMul(pz2.redMul(p.z));var s2=p.y.redMul(z2.redMul(this.z));var h=u1.redSub(u2);var r=s1.redSub(s2);if(h.cmpn(0)===0){if(r.cmpn(0)!==0)return this.curve.jpoint(null,null,null);else return this.dbl()}var h2=h.redSqr();var h3=h2.redMul(h);var v=u1.redMul(h2);var nx=r.redSqr().redIAdd(h3).redISub(v).redISub(v);var ny=r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));var nz=this.z.redMul(p.z).redMul(h);return this.curve.jpoint(nx,ny,nz)};JPoint.prototype.mixedAdd=function mixedAdd(p){if(this.isInfinity())return p.toJ();if(p.isInfinity())return this;var z2=this.z.redSqr();var u1=this.x;var u2=p.x.redMul(z2);var s1=this.y;var s2=p.y.redMul(z2).redMul(this.z);var h=u1.redSub(u2);var r=s1.redSub(s2);if(h.cmpn(0)===0){if(r.cmpn(0)!==0)return this.curve.jpoint(null,null,null);else return this.dbl()}var h2=h.redSqr();var h3=h2.redMul(h);var v=u1.redMul(h2);var nx=r.redSqr().redIAdd(h3).redISub(v).redISub(v);var ny=r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));var nz=this.z.redMul(h);return this.curve.jpoint(nx,ny,nz)};JPoint.prototype.dblp=function dblp(pow){if(pow===0)return this;if(this.isInfinity())return this;if(!pow)return this.dbl();if(this.curve.zeroA||this.curve.threeA){var r=this;for(var i=0;i";return""};JPoint.prototype.isInfinity=function isInfinity(){return this.z.cmpn(0)===0}},{"../../elliptic":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic.js","../curve":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/index.js","bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js", -inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curves.js":[function(require,module,exports){"use strict";var curves=exports;var hash=require("hash.js");var elliptic=require("../elliptic");var assert=elliptic.utils.assert;function PresetCurve(options){if(options.type==="short")this.curve=new elliptic.curve.short(options);else if(options.type==="edwards")this.curve=new elliptic.curve.edwards(options);else this.curve=new elliptic.curve.mont(options);this.g=this.curve.g;this.n=this.curve.n;this.hash=options.hash;assert(this.g.validate(),"Invalid curve");assert(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}curves.PresetCurve=PresetCurve;function defineCurve(name,options){Object.defineProperty(curves,name,{configurable:true,enumerable:true,get:function(){var curve=new PresetCurve(options);Object.defineProperty(curves,name,{configurable:true,enumerable:true,value:curve});return curve}})}defineCurve("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:hash.sha256,gRed:false,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]});defineCurve("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:hash.sha256,gRed:false,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]});defineCurve("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:hash.sha256,gRed:false,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]});defineCurve("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff "+"fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff "+"fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f "+"5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 "+"f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:hash.sha384,gRed:false,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 "+"5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 "+"0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]});defineCurve("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff "+"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff "+"ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff "+"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff "+"ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b "+"99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd "+"3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff "+"ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 "+"f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:hash.sha512,gRed:false,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 "+"053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 "+"a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 "+"579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 "+"3fad0761 353c7086 a272c240 88be9476 9fd16650"]});defineCurve("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"0",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:hash.sha256,gRed:false,g:["9"]});defineCurve("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:hash.sha256,gRed:false,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var pre;try{pre=require("./precomputed/secp256k1")}catch(e){pre=undefined}defineCurve("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:hash.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:false,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",pre]})},{"../elliptic":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic.js","./precomputed/secp256k1":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","hash.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/node_modules/hash.js/lib/hash.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/ec/index.js":[function(require,module,exports){"use strict";var BN=require("bn.js");var elliptic=require("../../elliptic");var utils=elliptic.utils;var assert=utils.assert;var KeyPair=require("./key");var Signature=require("./signature");function EC(options){if(!(this instanceof EC))return new EC(options);if(typeof options==="string"){assert(elliptic.curves.hasOwnProperty(options),"Unknown curve "+options);options=elliptic.curves[options]}if(options instanceof elliptic.curves.PresetCurve)options={curve:options};this.curve=options.curve.curve;this.n=this.curve.n;this.nh=this.n.ushrn(1);this.g=this.curve.g;this.g=options.curve.g;this.g.precompute(options.curve.n.bitLength()+1);this.hash=options.hash||options.curve.hash}module.exports=EC;EC.prototype.keyPair=function keyPair(options){return new KeyPair(this,options)};EC.prototype.keyFromPrivate=function keyFromPrivate(priv,enc){return KeyPair.fromPrivate(this,priv,enc)};EC.prototype.keyFromPublic=function keyFromPublic(pub,enc){return KeyPair.fromPublic(this,pub,enc)};EC.prototype.genKeyPair=function genKeyPair(options){if(!options)options={};var drbg=new elliptic.hmacDRBG({hash:this.hash,pers:options.pers,entropy:options.entropy||elliptic.rand(this.hash.hmacStrength),nonce:this.n.toArray()});var bytes=this.n.byteLength();var ns2=this.n.sub(new BN(2));do{var priv=new BN(drbg.generate(bytes));if(priv.cmp(ns2)>0)continue;priv.iaddn(1);return this.keyFromPrivate(priv)}while(true)};EC.prototype._truncateToN=function truncateToN(msg,truncOnly){var delta=msg.byteLength()*8-this.n.bitLength();if(delta>0)msg=msg.ushrn(delta);if(!truncOnly&&msg.cmp(this.n)>=0)return msg.sub(this.n);else return msg};EC.prototype.sign=function sign(msg,key,enc,options){if(typeof enc==="object"){options=enc;enc=null}if(!options)options={};key=this.keyFromPrivate(key,enc);msg=this._truncateToN(new BN(msg,16));var bytes=this.n.byteLength();var bkey=key.getPrivate().toArray("be",bytes);var nonce=msg.toArray("be",bytes);var drbg=new elliptic.hmacDRBG({hash:this.hash,entropy:bkey,nonce:nonce,pers:options.pers,persEnc:options.persEnc});var ns1=this.n.sub(new BN(1));for(var iter=0;true;iter++){var k=options.k?options.k(iter):new BN(drbg.generate(this.n.byteLength()));k=this._truncateToN(k,true);if(k.cmpn(1)<=0||k.cmp(ns1)>=0)continue;var kp=this.g.mul(k);if(kp.isInfinity())continue;var kpX=kp.getX();var r=kpX.umod(this.n);if(r.cmpn(0)===0)continue;var s=k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));s=s.umod(this.n);if(s.cmpn(0)===0)continue;var recoveryParam=(kp.getY().isOdd()?1:0)|(kpX.cmp(r)!==0?2:0);if(options.canonical&&s.cmp(this.nh)>0){s=this.n.sub(s);recoveryParam^=1}return new Signature({r:r,s:s,recoveryParam:recoveryParam})}};EC.prototype.verify=function verify(msg,signature,key,enc){msg=this._truncateToN(new BN(msg,16));key=this.keyFromPublic(key,enc);signature=new Signature(signature,"hex");var r=signature.r;var s=signature.s;if(r.cmpn(1)<0||r.cmp(this.n)>=0)return false;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return false;var sinv=s.invm(this.n);var u1=sinv.mul(msg).umod(this.n);var u2=sinv.mul(r).umod(this.n);var p=this.g.mulAdd(u1,key.getPublic(),u2);if(p.isInfinity())return false;return p.getX().umod(this.n).cmp(r)===0};EC.prototype.recoverPubKey=function(msg,signature,j,enc){assert((3&j)===j,"The recovery param is more than two bits");signature=new Signature(signature,enc);var n=this.n;var e=new BN(msg);var r=signature.r;var s=signature.s;var isYOdd=j&1;var isSecondKey=j>>1;if(r.cmp(this.curve.p.umod(this.curve.n))>=0&&isSecondKey)throw new Error("Unable to find sencond key candinate");if(isSecondKey)r=this.curve.pointFromX(r.add(this.curve.n),isYOdd);else r=this.curve.pointFromX(r,isYOdd);var eNeg=n.sub(e);var rInv=signature.r.invm(n);return this.g.mulAdd(eNeg,r,s).mul(rInv)};EC.prototype.getKeyRecoveryParam=function(e,signature,Q,enc){signature=new Signature(signature,enc);if(signature.recoveryParam!==null)return signature.recoveryParam;for(var i=0;i<4;i++){var Qprime;try{Qprime=this.recoverPubKey(e,signature,i)}catch(e){continue}if(Qprime.eq(Q))return i}throw new Error("Unable to find valid recovery factor")}},{"../../elliptic":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic.js","./key":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/ec/key.js","./signature":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/ec/signature.js","bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/ec/key.js":[function(require,module,exports){"use strict";var BN=require("bn.js");function KeyPair(ec,options){this.ec=ec;this.priv=null;this.pub=null;if(options.priv)this._importPrivate(options.priv,options.privEnc);if(options.pub)this._importPublic(options.pub,options.pubEnc)}module.exports=KeyPair;KeyPair.fromPublic=function fromPublic(ec,pub,enc){if(pub instanceof KeyPair)return pub;return new KeyPair(ec,{pub:pub,pubEnc:enc})};KeyPair.fromPrivate=function fromPrivate(ec,priv,enc){if(priv instanceof KeyPair)return priv;return new KeyPair(ec,{priv:priv,privEnc:enc})};KeyPair.prototype.validate=function validate(){var pub=this.getPublic();if(pub.isInfinity())return{result:false,reason:"Invalid public key"};if(!pub.validate())return{result:false,reason:"Public key is not a point"};if(!pub.mul(this.ec.curve.n).isInfinity())return{result:false,reason:"Public key * N != O"};return{result:true,reason:null}};KeyPair.prototype.getPublic=function getPublic(compact,enc){if(typeof compact==="string"){enc=compact;compact=null}if(!this.pub)this.pub=this.ec.g.mul(this.priv);if(!enc)return this.pub;return this.pub.encode(enc,compact)};KeyPair.prototype.getPrivate=function getPrivate(enc){if(enc==="hex")return this.priv.toString(16,2);else return this.priv};KeyPair.prototype._importPrivate=function _importPrivate(key,enc){this.priv=new BN(key,enc||16);this.priv=this.priv.umod(this.ec.curve.n)};KeyPair.prototype._importPublic=function _importPublic(key,enc){if(key.x||key.y){this.pub=this.ec.curve.point(key.x,key.y);return}this.pub=this.ec.curve.decodePoint(key,enc)};KeyPair.prototype.derive=function derive(pub){return pub.mul(this.priv).getX()};KeyPair.prototype.sign=function sign(msg,enc,options){return this.ec.sign(msg,this,enc,options)};KeyPair.prototype.verify=function verify(msg,signature){return this.ec.verify(msg,signature,this)};KeyPair.prototype.inspect=function inspect(){return""}},{"bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/ec/signature.js":[function(require,module,exports){"use strict";var BN=require("bn.js");var elliptic=require("../../elliptic");var utils=elliptic.utils;var assert=utils.assert;function Signature(options,enc){if(options instanceof Signature)return options;if(this._importDER(options,enc))return;assert(options.r&&options.s,"Signature without r or s");this.r=new BN(options.r,16);this.s=new BN(options.s,16);if(options.recoveryParam===undefined)this.recoveryParam=null;else this.recoveryParam=options.recoveryParam}module.exports=Signature;function Position(){this.place=0}function getLength(buf,p){var initial=buf[p.place++];if(!(initial&128)){return initial}var octetLen=initial&15;var val=0;for(var i=0,off=p.place;i>>3);arr.push(octets|128);while(--octets){arr.push(len>>>(octets<<3)&255)}arr.push(len)}Signature.prototype.toDER=function toDER(enc){var r=this.r.toArray();var s=this.s.toArray();if(r[0]&128)r=[0].concat(r);if(s[0]&128)s=[0].concat(s);r=rmPadding(r);s=rmPadding(s);while(!s[0]&&!(s[1]&128)){s=s.slice(1)}var arr=[2];constructLength(arr,r.length);arr=arr.concat(r);arr.push(2);constructLength(arr,s.length);var backHalf=arr.concat(s);var res=[48];constructLength(res,backHalf.length);res=res.concat(backHalf);return utils.encode(res,enc)}},{"../../elliptic":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic.js","bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/eddsa/index.js":[function(require,module,exports){"use strict";var hash=require("hash.js");var elliptic=require("../../elliptic");var utils=elliptic.utils;var assert=utils.assert;var parseBytes=utils.parseBytes;var KeyPair=require("./key");var Signature=require("./signature");function EDDSA(curve){assert(curve==="ed25519","only tested with ed25519 so far");if(!(this instanceof EDDSA))return new EDDSA(curve);var curve=elliptic.curves[curve].curve;this.curve=curve;this.g=curve.g;this.g.precompute(curve.n.bitLength()+1);this.pointClass=curve.point().constructor;this.encodingLength=Math.ceil(curve.n.bitLength()/8);this.hash=hash.sha512}module.exports=EDDSA;EDDSA.prototype.sign=function sign(message,secret){message=parseBytes(message);var key=this.keyFromSecret(secret);var r=this.hashInt(key.messagePrefix(),message);var R=this.g.mul(r);var Rencoded=this.encodePoint(R);var s_=this.hashInt(Rencoded,key.pubBytes(),message).mul(key.priv());var S=r.add(s_).umod(this.curve.n);return this.makeSignature({R:R,S:S,Rencoded:Rencoded})};EDDSA.prototype.verify=function verify(message,sig,pub){message=parseBytes(message);sig=this.makeSignature(sig);var key=this.keyFromPublic(pub);var h=this.hashInt(sig.Rencoded(),key.pubBytes(),message);var SG=this.g.mul(sig.S());var RplusAh=sig.R().add(key.pub().mul(h));return RplusAh.eq(SG)};EDDSA.prototype.hashInt=function hashInt(){var hash=this.hash();for(var i=0;i=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits");this._init(entropy,nonce,pers)}module.exports=HmacDRBG;HmacDRBG.prototype._init=function init(entropy,nonce,pers){var seed=entropy.concat(nonce).concat(pers);this.K=new Array(this.outLen/8);this.V=new Array(this.outLen/8);for(var i=0;i=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits");this._update(entropy.concat(add||[]));this.reseed=1};HmacDRBG.prototype.generate=function generate(len,enc,add,addEnc){if(this.reseed>this.reseedInterval)throw new Error("Reseed is required");if(typeof enc!=="string"){addEnc=add;add=enc;enc=null}if(add){add=utils.toArray(add,addEnc);this._update(add)}var temp=[];while(temp.length>8;var lo=c&255;if(hi)res.push(hi,lo);else res.push(lo)}}else if(enc==="hex"){msg=msg.replace(/[^a-z0-9]+/gi,"");if(msg.length%2!==0)msg="0"+msg;for(var i=0;i=0){var z;if(k.isOdd()){var mod=k.andln(ws-1);if(mod>(ws>>1)-1)z=(ws>>1)-mod;else z=mod;k.isubn(z)}else{z=0}naf.push(z);var shift=k.cmpn(0)!==0&&k.andln(ws-1)===0?w+1:1;for(var i=1;i0||k2.cmpn(-d2)>0){var m14=k1.andln(3)+d1&3;var m24=k2.andln(3)+d2&3;if(m14===3)m14=-1;if(m24===3)m24=-1;var u1;if((m14&1)===0){u1=0}else{var m8=k1.andln(7)+d1&7;if((m8===3||m8===5)&&m24===2)u1=-m14;else u1=m14}jsf[0].push(u1);var u2;if((m24&1)===0){u2=0}else{var m8=k2.andln(7)+d2&7;if((m8===3||m8===5)&&m14===2)u2=-m24;else u2=m24}jsf[1].push(u2);if(2*d1===u1+1)d1=1-d1;if(2*d2===u2+1)d2=1-d2;k1.iushrn(1);k2.iushrn(1)}return jsf}utils.getJSF=getJSF;function cachedProperty(obj,computer){var name=computer.name;var key="_"+name;obj.prototype[name]=function cachedProperty(){return this[key]!==undefined?this[key]:this[key]=computer.call(this)}}utils.cachedProperty=cachedProperty;function parseBytes(bytes){return typeof bytes==="string"?utils.toArray(bytes,"hex"):bytes}utils.parseBytes=parseBytes;function intFromLE(bytes){return new BN(bytes,"hex","le")}utils.intFromLE=intFromLE},{"bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/node_modules/brorand/index.js":[function(require,module,exports){var r;module.exports=function rand(len){if(!r)r=new Rand(null);return r.generate(len)};function Rand(rand){this.rand=rand}module.exports.Rand=Rand;Rand.prototype.generate=function generate(len){return this._rand(len)};if(typeof window==="object"){if(window.crypto&&window.crypto.getRandomValues){Rand.prototype._rand=function _rand(n){var arr=new Uint8Array(n);window.crypto.getRandomValues(arr);return arr}}else if(window.msCrypto&&window.msCrypto.getRandomValues){Rand.prototype._rand=function _rand(n){var arr=new Uint8Array(n);window.msCrypto.getRandomValues(arr);return arr}}else{Rand.prototype._rand=function(){throw new Error("Not implemented yet")}}}else{try{var crypto=require("cry"+"pto");Rand.prototype._rand=function _rand(n){return crypto.randomBytes(n)}}catch(e){Rand.prototype._rand=function _rand(n){var res=new Uint8Array(n);for(var i=0;i=this._delta8){msg=this.pending;var r=msg.length%this._delta8;this.pending=msg.slice(msg.length-r,msg.length);if(this.pending.length===0)this.pending=null;msg=utils.join32(msg,0,msg.length-r,this.endian);for(var i=0;i>>24&255;res[i++]=len>>>16&255;res[i++]=len>>>8&255;res[i++]=len&255}else{res[i++]=len&255;res[i++]=len>>>8&255;res[i++]=len>>>16&255;res[i++]=len>>>24&255;res[i++]=0;res[i++]=0;res[i++]=0;res[i++]=0;for(var t=8;tthis.blockSize)key=(new this.Hash).update(key).digest();assert(key.length<=this.blockSize);for(var i=key.length;i>>3}function g1_256(x){return rotr32(x,17)^rotr32(x,19)^x>>>10}function ft_1(s,x,y,z){if(s===0)return ch32(x,y,z);if(s===1||s===3)return p32(x,y,z);if(s===2)return maj32(x,y,z)}function ch64_hi(xh,xl,yh,yl,zh,zl){var r=xh&yh^~xh&zh;if(r<0)r+=4294967296;return r}function ch64_lo(xh,xl,yh,yl,zh,zl){var r=xl&yl^~xl&zl;if(r<0)r+=4294967296;return r}function maj64_hi(xh,xl,yh,yl,zh,zl){var r=xh&yh^xh&zh^yh&zh;if(r<0)r+=4294967296;return r}function maj64_lo(xh,xl,yh,yl,zh,zl){var r=xl&yl^xl&zl^yl&zl;if(r<0)r+=4294967296;return r}function s0_512_hi(xh,xl){var c0_hi=rotr64_hi(xh,xl,28);var c1_hi=rotr64_hi(xl,xh,2);var c2_hi=rotr64_hi(xl,xh,7);var r=c0_hi^c1_hi^c2_hi;if(r<0)r+=4294967296;return r}function s0_512_lo(xh,xl){var c0_lo=rotr64_lo(xh,xl,28);var c1_lo=rotr64_lo(xl,xh,2);var c2_lo=rotr64_lo(xl,xh,7);var r=c0_lo^c1_lo^c2_lo;if(r<0)r+=4294967296;return r}function s1_512_hi(xh,xl){var c0_hi=rotr64_hi(xh,xl,14);var c1_hi=rotr64_hi(xh,xl,18);var c2_hi=rotr64_hi(xl,xh,9);var r=c0_hi^c1_hi^c2_hi;if(r<0)r+=4294967296;return r}function s1_512_lo(xh,xl){var c0_lo=rotr64_lo(xh,xl,14);var c1_lo=rotr64_lo(xh,xl,18);var c2_lo=rotr64_lo(xl,xh,9);var r=c0_lo^c1_lo^c2_lo;if(r<0)r+=4294967296;return r}function g0_512_hi(xh,xl){var c0_hi=rotr64_hi(xh,xl,1);var c1_hi=rotr64_hi(xh,xl,8);var c2_hi=shr64_hi(xh,xl,7);var r=c0_hi^c1_hi^c2_hi;if(r<0)r+=4294967296;return r}function g0_512_lo(xh,xl){var c0_lo=rotr64_lo(xh,xl,1);var c1_lo=rotr64_lo(xh,xl,8);var c2_lo=shr64_lo(xh,xl,7);var r=c0_lo^c1_lo^c2_lo;if(r<0)r+=4294967296;return r}function g1_512_hi(xh,xl){var c0_hi=rotr64_hi(xh,xl,19);var c1_hi=rotr64_hi(xl,xh,29);var c2_hi=shr64_hi(xh,xl,6);var r=c0_hi^c1_hi^c2_hi;if(r<0)r+=4294967296;return r}function g1_512_lo(xh,xl){var c0_lo=rotr64_lo(xh,xl,19);var c1_lo=rotr64_lo(xl,xh,29);var c2_lo=shr64_lo(xh,xl,6);var r=c0_lo^c1_lo^c2_lo;if(r<0)r+=4294967296;return r}},{"../hash":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/node_modules/hash.js/lib/hash.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/node_modules/hash.js/lib/hash/utils.js":[function(require,module,exports){var utils=exports;var inherits=require("inherits");function toArray(msg,enc){if(Array.isArray(msg))return msg.slice();if(!msg)return[];var res=[];if(typeof msg==="string"){if(!enc){for(var i=0;i>8;var lo=c&255;if(hi)res.push(hi,lo);else res.push(lo)}}else if(enc==="hex"){msg=msg.replace(/[^a-z0-9]+/gi,"");if(msg.length%2!==0)msg="0"+msg;for(var i=0;i>>24|w>>>8&65280|w<<8&16711680|(w&255)<<24;return res>>>0}utils.htonl=htonl;function toHex32(msg,endian){var res="";for(var i=0;i>>0}return res}utils.join32=join32;function split32(msg,endian){var res=new Array(msg.length*4);for(var i=0,k=0;i>>24;res[k+1]=m>>>16&255;res[k+2]=m>>>8&255;res[k+3]=m&255}else{res[k+3]=m>>>24;res[k+2]=m>>>16&255;res[k+1]=m>>>8&255;res[k]=m&255}}return res}utils.split32=split32;function rotr32(w,b){return w>>>b|w<<32-b}utils.rotr32=rotr32;function rotl32(w,b){return w<>>32-b}utils.rotl32=rotl32;function sum32(a,b){return a+b>>>0}utils.sum32=sum32;function sum32_3(a,b,c){return a+b+c>>>0}utils.sum32_3=sum32_3;function sum32_4(a,b,c,d){return a+b+c+d>>>0}utils.sum32_4=sum32_4;function sum32_5(a,b,c,d,e){return a+b+c+d+e>>>0}utils.sum32_5=sum32_5;function assert(cond,msg){if(!cond)throw new Error(msg||"Assertion failed")}utils.assert=assert;utils.inherits=inherits;function sum64(buf,pos,ah,al){var bh=buf[pos];var bl=buf[pos+1];var lo=al+bl>>>0;var hi=(lo>>0;buf[pos+1]=lo}exports.sum64=sum64;function sum64_hi(ah,al,bh,bl){var lo=al+bl>>>0;var hi=(lo>>0}exports.sum64_hi=sum64_hi;function sum64_lo(ah,al,bh,bl){var lo=al+bl;return lo>>>0}exports.sum64_lo=sum64_lo;function sum64_4_hi(ah,al,bh,bl,ch,cl,dh,dl){var carry=0;var lo=al;lo=lo+bl>>>0;carry+=lo>>0;carry+=lo>>0;carry+=lo>>0}exports.sum64_4_hi=sum64_4_hi;function sum64_4_lo(ah,al,bh,bl,ch,cl,dh,dl){var lo=al+bl+cl+dl;return lo>>>0}exports.sum64_4_lo=sum64_4_lo;function sum64_5_hi(ah,al,bh,bl,ch,cl,dh,dl,eh,el){var carry=0;var lo=al;lo=lo+bl>>>0;carry+=lo>>0;carry+=lo>>0;carry+=lo>>0;carry+=lo>>0}exports.sum64_5_hi=sum64_5_hi;function sum64_5_lo(ah,al,bh,bl,ch,cl,dh,dl,eh,el){var lo=al+bl+cl+dl+el;return lo>>>0}exports.sum64_5_lo=sum64_5_lo;function rotr64_hi(ah,al,num){var r=al<<32-num|ah>>>num;return r>>>0}exports.rotr64_hi=rotr64_hi;function rotr64_lo(ah,al,num){var r=ah<<32-num|al>>>num;return r>>>0}exports.rotr64_lo=rotr64_lo;function shr64_hi(ah,al,num){return ah>>>num}exports.shr64_hi=shr64_hi;function shr64_lo(ah,al,num){var r=ah<<32-num|al>>>num;return r>>>0}exports.shr64_lo=shr64_lo},{inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/package.json":[function(require,module,exports){module.exports={name:"elliptic",version:"6.2.3",description:"EC cryptography",main:"lib/elliptic.js",files:["lib"],scripts:{coverage:"npm run unit --coverage",coveralls:"npm run coverage && cat ./coverage/lcov.info | coveralls",jscs:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/*.js",jshint:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/*.js",lint:"npm run jscs && npm run jshint",test:"npm run lint && npm run unit",unit:"istanbul test _mocha --reporter=spec test/*-test.js"},repository:{type:"git",url:"git+ssh://git@github.com/indutny/elliptic.git"},keywords:["EC","Elliptic","curve","Cryptography"],author:{name:"Fedor Indutny",email:"fedor@indutny.com"},license:"MIT",bugs:{url:"https://github.com/indutny/elliptic/issues"},homepage:"https://github.com/indutny/elliptic",devDependencies:{coveralls:"^2.11.3",istanbul:"^0.4.2",jscs:"^2.9.0",jshint:"^2.6.0",mocha:"^2.1.0"},dependencies:{"bn.js":"^4.0.0",brorand:"^1.0.1","hash.js":"^1.0.0",inherits:"^2.0.1"},gitHead:"c32f20b22b420eb6af3c6dda28963deb7facf823",_id:"elliptic@6.2.3",_shasum:"18e46d7306b0951275a2d42063270a14b74ebe99",_from:"elliptic@>=6.0.0 <7.0.0",_npmVersion:"3.3.12",_nodeVersion:"5.4.1",_npmUser:{name:"indutny",email:"fedor@indutny.com"},dist:{shasum:"18e46d7306b0951275a2d42063270a14b74ebe99",tarball:"http://registry.npmjs.org/elliptic/-/elliptic-6.2.3.tgz"},maintainers:[{name:"indutny",email:"fedor@indutny.com"}],directories:{},_resolved:"https://registry.npmjs.org/elliptic/-/elliptic-6.2.3.tgz",readme:"ERROR: No README data found!"}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/aesid.json":[function(require,module,exports){module.exports={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/asn1.js":[function(require,module,exports){var asn1=require("asn1.js");var RSAPrivateKey=asn1.define("RSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())});exports.RSAPrivateKey=RSAPrivateKey;var RSAPublicKey=asn1.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});exports.RSAPublicKey=RSAPublicKey;var PublicKey=asn1.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(AlgorithmIdentifier),this.key("subjectPublicKey").bitstr())});exports.PublicKey=PublicKey;var AlgorithmIdentifier=asn1.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())});var PrivateKeyInfo=asn1.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(AlgorithmIdentifier),this.key("subjectPrivateKey").octstr())});exports.PrivateKey=PrivateKeyInfo;var EncryptedPrivateKeyInfo=asn1.define("EncryptedPrivateKeyInfo",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())});exports.EncryptedPrivateKey=EncryptedPrivateKeyInfo;var DSAPrivateKey=asn1.define("DSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())});exports.DSAPrivateKey=DSAPrivateKey;exports.DSAparam=asn1.define("DSAparam",function(){this.int()});var ECPrivateKey=asn1.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(ECParameters),this.key("publicKey").optional().explicit(1).bitstr())});exports.ECPrivateKey=ECPrivateKey;var ECParameters=asn1.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});exports.signature=asn1.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())})},{"asn1.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/fixProc.js":[function(require,module,exports){(function(Buffer){var findProc=/Proc-Type: 4,ENCRYPTED\r?\nDEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\r?\n\r?\n([0-9A-z\n\r\+\/\=]+)\r?\n/m;var startRegex=/^-----BEGIN (.*) KEY-----\r?\n/m;var fullRegex=/^-----BEGIN (.*) KEY-----\r?\n([0-9A-z\n\r\+\/\=]+)\r?\n-----END \1 KEY-----$/m;var evp=require("evp_bytestokey");var ciphers=require("browserify-aes");module.exports=function(okey,password){var key=okey.toString();var match=key.match(findProc);var decrypted;if(!match){var match2=key.match(fullRegex);decrypted=new Buffer(match2[2].replace(/\r?\n/g,""),"base64")}else{var suite="aes"+match[1];var iv=new Buffer(match[2],"hex");var cipherText=new Buffer(match[3].replace(/\r?\n/g,""),"base64");var cipherKey=evp(password,iv.slice(0,8),parseInt(match[1],10)).key;var out=[];var cipher=ciphers.createDecipheriv(suite,cipherKey,iv);out.push(cipher.update(cipherText));out.push(cipher.final());decrypted=Buffer.concat(out)}var tag=key.match(startRegex)[1]+" KEY";return{tag:tag,data:decrypted}}}).call(this,require("buffer").Buffer)},{"browserify-aes":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/browserify-aes/browser.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",evp_bytestokey:"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/evp_bytestokey/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/index.js":[function(require,module,exports){(function(Buffer){var asn1=require("./asn1");var aesid=require("./aesid.json");var fixProc=require("./fixProc");var ciphers=require("browserify-aes");var compat=require("pbkdf2");module.exports=parseKeys;function parseKeys(buffer){var password;if(typeof buffer==="object"&&!Buffer.isBuffer(buffer)){password=buffer.passphrase;buffer=buffer.key}if(typeof buffer==="string"){buffer=new Buffer(buffer)}var stripped=fixProc(buffer,password);var type=stripped.tag;var data=stripped.data;var subtype,ndata;switch(type){case"PUBLIC KEY":ndata=asn1.PublicKey.decode(data,"der");subtype=ndata.algorithm.algorithm.join(".");switch(subtype){case"1.2.840.113549.1.1.1":return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":ndata.subjectPrivateKey=ndata.subjectPublicKey;return{type:"ec",data:ndata};case"1.2.840.10040.4.1":ndata.algorithm.params.pub_key=asn1.DSAparam.decode(ndata.subjectPublicKey.data,"der");return{type:"dsa",data:ndata.algorithm.params};default:throw new Error("unknown key id "+subtype)}throw new Error("unknown key type "+type);case"ENCRYPTED PRIVATE KEY":data=asn1.EncryptedPrivateKey.decode(data,"der");data=decrypt(data,password);case"PRIVATE KEY":ndata=asn1.PrivateKey.decode(data,"der");subtype=ndata.algorithm.algorithm.join(".");switch(subtype){case"1.2.840.113549.1.1.1":return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:ndata.algorithm.curve,privateKey:asn1.ECPrivateKey.decode(ndata.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":ndata.algorithm.params.priv_key=asn1.DSAparam.decode(ndata.subjectPrivateKey,"der");return{type:"dsa",params:ndata.algorithm.params};default:throw new Error("unknown key id "+subtype)}throw new Error("unknown key type "+type);case"RSA PUBLIC KEY":return asn1.RSAPublicKey.decode(data,"der");case"RSA PRIVATE KEY":return asn1.RSAPrivateKey.decode(data,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:asn1.DSAPrivateKey.decode(data,"der")};case"EC PRIVATE KEY":data=asn1.ECPrivateKey.decode(data,"der");return{curve:data.parameters.value,privateKey:data.privateKey};default:throw new Error("unknown key type "+type)}}parseKeys.signature=asn1.signature;function decrypt(data,password){var salt=data.algorithm.decrypt.kde.kdeparams.salt;var iters=parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(),10);var algo=aesid[data.algorithm.decrypt.cipher.algo.join(".")];var iv=data.algorithm.decrypt.cipher.iv;var cipherText=data.subjectPrivateKey;var keylen=parseInt(algo.split("-")[1],10)/8;var key=compat.pbkdf2Sync(password,salt,iters,keylen);var cipher=ciphers.createDecipheriv(algo,key,iv);var out=[];out.push(cipher.update(cipherText));out.push(cipher.final());return Buffer.concat(out)}}).call(this,require("buffer").Buffer)},{"./aesid.json":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/aesid.json","./asn1":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/asn1.js","./fixProc":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/fixProc.js","browserify-aes":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/browserify-aes/browser.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",pbkdf2:"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/pbkdf2/browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1.js":[function(require,module,exports){var asn1=exports;asn1.bignum=require("bn.js");asn1.define=require("./asn1/api").define;asn1.base=require("./asn1/base");asn1.constants=require("./asn1/constants");asn1.decoders=require("./asn1/decoders");asn1.encoders=require("./asn1/encoders")},{"./asn1/api":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/api.js","./asn1/base":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/base/index.js","./asn1/constants":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/constants/index.js","./asn1/decoders":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/decoders/index.js","./asn1/encoders":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/encoders/index.js","bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/api.js":[function(require,module,exports){var asn1=require("../asn1");var inherits=require("inherits");var api=exports;api.define=function define(name,body){return new Entity(name,body)};function Entity(name,body){this.name=name;this.body=body;this.decoders={};this.encoders={}}Entity.prototype._createNamed=function createNamed(base){var named;try{named=require("vm").runInThisContext("(function "+this.name+"(entity) {\n"+" this._initNamed(entity);\n"+"})")}catch(e){named=function(entity){this._initNamed(entity)}}inherits(named,base);named.prototype._initNamed=function initnamed(entity){base.call(this,entity)};return new named(this)};Entity.prototype._getDecoder=function _getDecoder(enc){if(!this.decoders.hasOwnProperty(enc))this.decoders[enc]=this._createNamed(asn1.decoders[enc]);return this.decoders[enc]};Entity.prototype.decode=function decode(data,enc,options){return this._getDecoder(enc).decode(data,options)};Entity.prototype._getEncoder=function _getEncoder(enc){if(!this.encoders.hasOwnProperty(enc))this.encoders[enc]=this._createNamed(asn1.encoders[enc]);return this.encoders[enc]};Entity.prototype.encode=function encode(data,enc,reporter){return this._getEncoder(enc).encode(data,reporter)}},{"../asn1":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js",vm:"/data/github/geopackage-node/node_modules/browserify/node_modules/vm-browserify/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/base/buffer.js":[function(require,module,exports){var inherits=require("inherits");var Reporter=require("../base").Reporter;var Buffer=require("buffer").Buffer;function DecoderBuffer(base,options){Reporter.call(this,options);if(!Buffer.isBuffer(base)){this.error("Input not Buffer");return}this.base=base;this.offset=0;this.length=base.length}inherits(DecoderBuffer,Reporter);exports.DecoderBuffer=DecoderBuffer;DecoderBuffer.prototype.save=function save(){return{offset:this.offset,reporter:Reporter.prototype.save.call(this)}};DecoderBuffer.prototype.restore=function restore(save){var res=new DecoderBuffer(this.base);res.offset=save.offset;res.length=this.offset;this.offset=save.offset;Reporter.prototype.restore.call(this,save.reporter);return res};DecoderBuffer.prototype.isEmpty=function isEmpty(){return this.offset===this.length};DecoderBuffer.prototype.readUInt8=function readUInt8(fail){if(this.offset+1<=this.length)return this.base.readUInt8(this.offset++,true);else return this.error(fail||"DecoderBuffer overrun")};DecoderBuffer.prototype.skip=function skip(bytes,fail){if(!(this.offset+bytes<=this.length))return this.error(fail||"DecoderBuffer overrun");var res=new DecoderBuffer(this.base);res._reporterState=this._reporterState;res.offset=this.offset;res.length=this.offset+bytes;this.offset+=bytes;return res};DecoderBuffer.prototype.raw=function raw(save){return this.base.slice(save?save.offset:this.offset,this.length)};function EncoderBuffer(value,reporter){if(Array.isArray(value)){this.length=0;this.value=value.map(function(item){if(!(item instanceof EncoderBuffer))item=new EncoderBuffer(item,reporter);this.length+=item.length;return item},this)}else if(typeof value==="number"){if(!(0<=value&&value<=255))return reporter.error("non-byte EncoderBuffer value");this.value=value;this.length=1}else if(typeof value==="string"){this.value=value;this.length=Buffer.byteLength(value)}else if(Buffer.isBuffer(value)){this.value=value;this.length=value.length}else{return reporter.error("Unsupported type: "+typeof value)}}exports.EncoderBuffer=EncoderBuffer;EncoderBuffer.prototype.join=function join(out,offset){if(!out)out=new Buffer(this.length);if(!offset)offset=0;if(this.length===0)return out;if(Array.isArray(this.value)){this.value.forEach(function(item){item.join(out,offset);offset+=item.length})}else{if(typeof this.value==="number")out[offset]=this.value;else if(typeof this.value==="string")out.write(this.value,offset);else if(Buffer.isBuffer(this.value))this.value.copy(out,offset);offset+=this.length}return out}},{"../base":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/base/index.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/base/index.js":[function(require,module,exports){var base=exports;base.Reporter=require("./reporter").Reporter;base.DecoderBuffer=require("./buffer").DecoderBuffer;base.EncoderBuffer=require("./buffer").EncoderBuffer;base.Node=require("./node")},{"./buffer":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/base/buffer.js","./node":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/base/node.js","./reporter":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/base/reporter.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/base/node.js":[function(require,module,exports){var Reporter=require("../base").Reporter;var EncoderBuffer=require("../base").EncoderBuffer;var DecoderBuffer=require("../base").DecoderBuffer;var assert=require("minimalistic-assert");var tags=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"];var methods=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(tags);var overrided=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];function Node(enc,parent){var state={};this._baseState=state;state.enc=enc;state.parent=parent||null;state.children=null;state.tag=null;state.args=null;state.reverseArgs=null;state.choice=null;state.optional=false;state.any=false;state.obj=false;state.use=null;state.useDecoder=null; -state.key=null;state["default"]=null;state.explicit=null;state.implicit=null;state.contains=null;if(!state.parent){state.children=[];this._wrap()}}module.exports=Node;var stateProps=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit"];Node.prototype.clone=function clone(){var state=this._baseState;var cstate={};stateProps.forEach(function(prop){cstate[prop]=state[prop]});var res=new this.constructor(cstate.parent);res._baseState=cstate;return res};Node.prototype._wrap=function wrap(){var state=this._baseState;methods.forEach(function(method){this[method]=function _wrappedMethod(){var clone=new this.constructor(this);state.children.push(clone);return clone[method].apply(clone,arguments)}},this)};Node.prototype._init=function init(body){var state=this._baseState;assert(state.parent===null);body.call(this);state.children=state.children.filter(function(child){return child._baseState.parent===this},this);assert.equal(state.children.length,1,"Root node can have only one child")};Node.prototype._useArgs=function useArgs(args){var state=this._baseState;var children=args.filter(function(arg){return arg instanceof this.constructor},this);args=args.filter(function(arg){return!(arg instanceof this.constructor)},this);if(children.length!==0){assert(state.children===null);state.children=children;children.forEach(function(child){child._baseState.parent=this},this)}if(args.length!==0){assert(state.args===null);state.args=args;state.reverseArgs=args.map(function(arg){if(typeof arg!=="object"||arg.constructor!==Object)return arg;var res={};Object.keys(arg).forEach(function(key){if(key==(key|0))key|=0;var value=arg[key];res[value]=key});return res})}};overrided.forEach(function(method){Node.prototype[method]=function _overrided(){var state=this._baseState;throw new Error(method+" not implemented for encoding: "+state.enc)}});tags.forEach(function(tag){Node.prototype[tag]=function _tagMethod(){var state=this._baseState;var args=Array.prototype.slice.call(arguments);assert(state.tag===null);state.tag=tag;this._useArgs(args);return this}});Node.prototype.use=function use(item){var state=this._baseState;assert(state.use===null);state.use=item;return this};Node.prototype.optional=function optional(){var state=this._baseState;state.optional=true;return this};Node.prototype.def=function def(val){var state=this._baseState;assert(state["default"]===null);state["default"]=val;state.optional=true;return this};Node.prototype.explicit=function explicit(num){var state=this._baseState;assert(state.explicit===null&&state.implicit===null);state.explicit=num;return this};Node.prototype.implicit=function implicit(num){var state=this._baseState;assert(state.explicit===null&&state.implicit===null);state.implicit=num;return this};Node.prototype.obj=function obj(){var state=this._baseState;var args=Array.prototype.slice.call(arguments);state.obj=true;if(args.length!==0)this._useArgs(args);return this};Node.prototype.key=function key(newKey){var state=this._baseState;assert(state.key===null);state.key=newKey;return this};Node.prototype.any=function any(){var state=this._baseState;state.any=true;return this};Node.prototype.choice=function choice(obj){var state=this._baseState;assert(state.choice===null);state.choice=obj;this._useArgs(Object.keys(obj).map(function(key){return obj[key]}));return this};Node.prototype.contains=function contains(item){var state=this._baseState;assert(state.use===null);state.contains=item;return this};Node.prototype._decode=function decode(input){var state=this._baseState;if(state.parent===null)return input.wrapResult(state.children[0]._decode(input));var result=state["default"];var present=true;var prevKey;if(state.key!==null)prevKey=input.enterKey(state.key);if(state.optional){var tag=null;if(state.explicit!==null)tag=state.explicit;else if(state.implicit!==null)tag=state.implicit;else if(state.tag!==null)tag=state.tag;if(tag===null&&!state.any){var save=input.save();try{if(state.choice===null)this._decodeGeneric(state.tag,input);else this._decodeChoice(input);present=true}catch(e){present=false}input.restore(save)}else{present=this._peekTag(input,tag,state.any);if(input.isError(present))return present}}var prevObj;if(state.obj&&present)prevObj=input.enterObject();if(present){if(state.explicit!==null){var explicit=this._decodeTag(input,state.explicit);if(input.isError(explicit))return explicit;input=explicit}if(state.use===null&&state.choice===null){if(state.any)var save=input.save();var body=this._decodeTag(input,state.implicit!==null?state.implicit:state.tag,state.any);if(input.isError(body))return body;if(state.any)result=input.raw(save);else input=body}if(state.any)result=result;else if(state.choice===null)result=this._decodeGeneric(state.tag,input);else result=this._decodeChoice(input);if(input.isError(result))return result;if(!state.any&&state.choice===null&&state.children!==null){state.children.forEach(function decodeChildren(child){child._decode(input)})}if(state.contains&&(state.tag==="octstr"||state.tag==="bitstr")){var data=new DecoderBuffer(result);result=this._getUse(state.contains,input._reporterState.obj)._decode(data)}}if(state.obj&&present)result=input.leaveObject(prevObj);if(state.key!==null&&(result!==null||present===true))input.leaveKey(prevKey,state.key,result);return result};Node.prototype._decodeGeneric=function decodeGeneric(tag,input){var state=this._baseState;if(tag==="seq"||tag==="set")return null;if(tag==="seqof"||tag==="setof")return this._decodeList(input,tag,state.args[0]);else if(/str$/.test(tag))return this._decodeStr(input,tag);else if(tag==="objid"&&state.args)return this._decodeObjid(input,state.args[0],state.args[1]);else if(tag==="objid")return this._decodeObjid(input,null,null);else if(tag==="gentime"||tag==="utctime")return this._decodeTime(input,tag);else if(tag==="null_")return this._decodeNull(input);else if(tag==="bool")return this._decodeBool(input);else if(tag==="int"||tag==="enum")return this._decodeInt(input,state.args&&state.args[0]);else if(state.use!==null)return this._getUse(state.use,input._reporterState.obj)._decode(input);else return input.error("unknown tag: "+tag);return null};Node.prototype._getUse=function _getUse(entity,obj){var state=this._baseState;state.useDecoder=this._use(entity,obj);assert(state.useDecoder._baseState.parent===null);state.useDecoder=state.useDecoder._baseState.children[0];if(state.implicit!==state.useDecoder._baseState.implicit){state.useDecoder=state.useDecoder.clone();state.useDecoder._baseState.implicit=state.implicit}return state.useDecoder};Node.prototype._decodeChoice=function decodeChoice(input){var state=this._baseState;var result=null;var match=false;Object.keys(state.choice).some(function(key){var save=input.save();var node=state.choice[key];try{var value=node._decode(input);if(input.isError(value))return false;result={type:key,value:value};match=true}catch(e){input.restore(save);return false}return true},this);if(!match)return input.error("Choice not matched");return result};Node.prototype._createEncoderBuffer=function createEncoderBuffer(data){return new EncoderBuffer(data,this.reporter)};Node.prototype._encode=function encode(data,reporter,parent){var state=this._baseState;if(state["default"]!==null&&state["default"]===data)return;var result=this._encodeValue(data,reporter,parent);if(result===undefined)return;if(this._skipDefault(result,reporter,parent))return;return result};Node.prototype._encodeValue=function encode(data,reporter,parent){var state=this._baseState;if(state.parent===null)return state.children[0]._encode(data,reporter||new Reporter);var result=null;var present=true;this.reporter=reporter;if(state.optional&&data===undefined){if(state["default"]!==null)data=state["default"];else return}var prevKey;var content=null;var primitive=false;if(state.any){result=this._createEncoderBuffer(data)}else if(state.choice){result=this._encodeChoice(data,reporter)}else if(state.contains){content=this._getUse(state.contains,parent)._encode(data,reporter);primitive=true}else if(state.children){content=state.children.map(function(child){if(child._baseState.tag==="null_")return child._encode(null,reporter,data);if(child._baseState.key===null)return reporter.error("Child should have a key");var prevKey=reporter.enterKey(child._baseState.key);if(typeof data!=="object")return reporter.error("Child expected, but input is not object");var res=child._encode(data[child._baseState.key],reporter,data);reporter.leaveKey(prevKey);return res},this).filter(function(child){return child});content=this._createEncoderBuffer(content)}else{if(state.tag==="seqof"||state.tag==="setof"){if(!(state.args&&state.args.length===1))return reporter.error("Too many args for : "+state.tag);if(!Array.isArray(data))return reporter.error("seqof/setof, but data is not Array");var child=this.clone();child._baseState.implicit=null;content=this._createEncoderBuffer(data.map(function(item){var state=this._baseState;return this._getUse(state.args[0],data)._encode(item,reporter)},child))}else if(state.use!==null){result=this._getUse(state.use,parent)._encode(data,reporter)}else{content=this._encodePrimitive(state.tag,data);primitive=true}}var result;if(!state.any&&state.choice===null){var tag=state.implicit!==null?state.implicit:state.tag;var cls=state.implicit===null?"universal":"context";if(tag===null){if(state.use===null)reporter.error("Tag could be ommited only for .use()")}else{if(state.use===null)result=this._encodeComposite(tag,primitive,cls,content)}}if(state.explicit!==null)result=this._encodeComposite(state.explicit,false,"context",result);return result};Node.prototype._encodeChoice=function encodeChoice(data,reporter){var state=this._baseState;var node=state.choice[data.type];if(!node){assert(false,data.type+" not found in "+JSON.stringify(Object.keys(state.choice)))}return node._encode(data.value,reporter)};Node.prototype._encodePrimitive=function encodePrimitive(tag,data){var state=this._baseState;if(/str$/.test(tag))return this._encodeStr(data,tag);else if(tag==="objid"&&state.args)return this._encodeObjid(data,state.reverseArgs[0],state.args[1]);else if(tag==="objid")return this._encodeObjid(data,null,null);else if(tag==="gentime"||tag==="utctime")return this._encodeTime(data,tag);else if(tag==="null_")return this._encodeNull();else if(tag==="int"||tag==="enum")return this._encodeInt(data,state.args&&state.reverseArgs[0]);else if(tag==="bool")return this._encodeBool(data);else throw new Error("Unsupported tag: "+tag)};Node.prototype._isNumstr=function isNumstr(str){return/^[0-9 ]*$/.test(str)};Node.prototype._isPrintstr=function isPrintstr(str){return/^[A-Za-z0-9 '\(\)\+,\-\.\/:=\?]*$/.test(str)}},{"../base":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/base/index.js","minimalistic-assert":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/node_modules/minimalistic-assert/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/base/reporter.js":[function(require,module,exports){var inherits=require("inherits");function Reporter(options){this._reporterState={obj:null,path:[],options:options||{},errors:[]}}exports.Reporter=Reporter;Reporter.prototype.isError=function isError(obj){return obj instanceof ReporterError};Reporter.prototype.save=function save(){var state=this._reporterState;return{obj:state.obj,pathLen:state.path.length}};Reporter.prototype.restore=function restore(data){var state=this._reporterState;state.obj=data.obj;state.path=state.path.slice(0,data.pathLen)};Reporter.prototype.enterKey=function enterKey(key){return this._reporterState.path.push(key)};Reporter.prototype.leaveKey=function leaveKey(index,key,value){var state=this._reporterState;state.path=state.path.slice(0,index-1);if(state.obj!==null)state.obj[key]=value};Reporter.prototype.enterObject=function enterObject(){var state=this._reporterState;var prev=state.obj;state.obj={};return prev};Reporter.prototype.leaveObject=function leaveObject(prev){var state=this._reporterState;var now=state.obj;state.obj=prev;return now};Reporter.prototype.error=function error(msg){var err;var state=this._reporterState;var inherited=msg instanceof ReporterError;if(inherited){err=msg}else{err=new ReporterError(state.path.map(function(elem){return"["+JSON.stringify(elem)+"]"}).join(""),msg.message||msg,msg.stack)}if(!state.options.partial)throw err;if(!inherited)state.errors.push(err);return err};Reporter.prototype.wrapResult=function wrapResult(result){var state=this._reporterState;if(!state.options.partial)return result;return{result:this.isError(result)?null:result,errors:state.errors}};function ReporterError(path,msg){this.path=path;this.rethrow(msg)}inherits(ReporterError,Error);ReporterError.prototype.rethrow=function rethrow(msg){this.message=msg+" at: "+(this.path||"(shallow)");Error.captureStackTrace(this,ReporterError);return this}},{inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/constants/der.js":[function(require,module,exports){var constants=require("../constants");exports.tagClass={0:"universal",1:"application",2:"context",3:"private"};exports.tagClassByName=constants._reverse(exports.tagClass);exports.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"};exports.tagByName=constants._reverse(exports.tag)},{"../constants":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/constants/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/constants/index.js":[function(require,module,exports){var constants=exports;constants._reverse=function reverse(map){var res={};Object.keys(map).forEach(function(key){if((key|0)==key)key=key|0;var value=map[key];res[value]=key});return res};constants.der=require("./der")},{"./der":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/constants/der.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/decoders/der.js":[function(require,module,exports){var inherits=require("inherits");var asn1=require("../../asn1");var base=asn1.base;var bignum=asn1.bignum;var der=asn1.constants.der;function DERDecoder(entity){this.enc="der";this.name=entity.name;this.entity=entity;this.tree=new DERNode;this.tree._init(entity.body)}module.exports=DERDecoder;DERDecoder.prototype.decode=function decode(data,options){if(!(data instanceof base.DecoderBuffer))data=new base.DecoderBuffer(data,options);return this.tree._decode(data,options)};function DERNode(parent){base.Node.call(this,"der",parent)}inherits(DERNode,base.Node);DERNode.prototype._peekTag=function peekTag(buffer,tag,any){if(buffer.isEmpty())return false;var state=buffer.save();var decodedTag=derDecodeTag(buffer,'Failed to peek tag: "'+tag+'"');if(buffer.isError(decodedTag))return decodedTag;buffer.restore(state);return decodedTag.tag===tag||decodedTag.tagStr===tag||decodedTag.tagStr+"of"===tag||any};DERNode.prototype._decodeTag=function decodeTag(buffer,tag,any){var decodedTag=derDecodeTag(buffer,'Failed to decode tag of "'+tag+'"');if(buffer.isError(decodedTag))return decodedTag;var len=derDecodeLen(buffer,decodedTag.primitive,'Failed to get length of "'+tag+'"');if(buffer.isError(len))return len;if(!any&&decodedTag.tag!==tag&&decodedTag.tagStr!==tag&&decodedTag.tagStr+"of"!==tag){return buffer.error('Failed to match tag: "'+tag+'"')}if(decodedTag.primitive||len!==null)return buffer.skip(len,'Failed to match body of: "'+tag+'"');var state=buffer.save();var res=this._skipUntilEnd(buffer,'Failed to skip indefinite length body: "'+this.tag+'"');if(buffer.isError(res))return res;len=buffer.offset-state.offset;buffer.restore(state);return buffer.skip(len,'Failed to match body of: "'+tag+'"')};DERNode.prototype._skipUntilEnd=function skipUntilEnd(buffer,fail){while(true){var tag=derDecodeTag(buffer,fail);if(buffer.isError(tag))return tag;var len=derDecodeLen(buffer,tag.primitive,fail);if(buffer.isError(len))return len;var res;if(tag.primitive||len!==null)res=buffer.skip(len);else res=this._skipUntilEnd(buffer,fail);if(buffer.isError(res))return res;if(tag.tagStr==="end")break}};DERNode.prototype._decodeList=function decodeList(buffer,tag,decoder){var result=[];while(!buffer.isEmpty()){var possibleEnd=this._peekTag(buffer,"end");if(buffer.isError(possibleEnd))return possibleEnd;var res=decoder.decode(buffer,"der");if(buffer.isError(res)&&possibleEnd)break;result.push(res)}return result};DERNode.prototype._decodeStr=function decodeStr(buffer,tag){if(tag==="bitstr"){var unused=buffer.readUInt8();if(buffer.isError(unused))return unused;return{unused:unused,data:buffer.raw()}}else if(tag==="bmpstr"){var raw=buffer.raw();if(raw.length%2===1)return buffer.error("Decoding of string type: bmpstr length mismatch");var str="";for(var i=0;i>6];var primitive=(tag&32)===0;if((tag&31)===31){var oct=tag;tag=0;while((oct&128)===128){oct=buf.readUInt8(fail);if(buf.isError(oct))return oct;tag<<=7;tag|=oct&127}}else{tag&=31}var tagStr=der.tag[tag];return{cls:cls,primitive:primitive,tag:tag,tagStr:tagStr}}function derDecodeLen(buf,primitive,fail){var len=buf.readUInt8(fail);if(buf.isError(len))return len;if(!primitive&&len===128)return null;if((len&128)===0){return len}var num=len&127;if(num>=4)return buf.error("length octect is too long");len=0;for(var i=0;i=256;i>>=8)lenOctets++;var header=new Buffer(1+1+lenOctets);header[0]=encodedTag;header[1]=128|lenOctets;for(var i=1+lenOctets,j=content.length;j>0;i--,j>>=8)header[i]=j&255;return this._createEncoderBuffer([header,content])};DERNode.prototype._encodeStr=function encodeStr(str,tag){if(tag==="bitstr"){return this._createEncoderBuffer([str.unused|0,str.data])}else if(tag==="bmpstr"){var buf=new Buffer(str.length*2);for(var i=0;i=40)return this.reporter.error("Second objid identifier OOB");id.splice(0,2,id[0]*40+id[1])}var size=0;for(var i=0;i=128;ident>>=7)size++}var objid=new Buffer(size);var offset=objid.length-1;for(var i=id.length-1;i>=0;i--){var ident=id[i];objid[offset--]=ident&127;while((ident>>=7)>0)objid[offset--]=128|ident&127}return this._createEncoderBuffer(objid)};function two(num){if(num<10)return"0"+num;else return num}DERNode.prototype._encodeTime=function encodeTime(time,tag){var str;var date=new Date(time);if(tag==="gentime"){str=[two(date.getFullYear()),two(date.getUTCMonth()+1),two(date.getUTCDate()),two(date.getUTCHours()),two(date.getUTCMinutes()),two(date.getUTCSeconds()),"Z"].join("")}else if(tag==="utctime"){str=[two(date.getFullYear()%100),two(date.getUTCMonth()+1),two(date.getUTCDate()),two(date.getUTCHours()),two(date.getUTCMinutes()),two(date.getUTCSeconds()),"Z"].join("")}else{this.reporter.error("Encoding "+tag+" time is not supported yet")}return this._encodeStr(str,"octstr")};DERNode.prototype._encodeNull=function encodeNull(){return this._createEncoderBuffer("")};DERNode.prototype._encodeInt=function encodeInt(num,values){if(typeof num==="string"){if(!values)return this.reporter.error("String int or enum given, but no values map");if(!values.hasOwnProperty(num)){return this.reporter.error("Values map doesn't contain: "+JSON.stringify(num))}num=values[num]}if(typeof num!=="number"&&!Buffer.isBuffer(num)){var numArray=num.toArray();if(!num.sign&&numArray[0]&128){numArray.unshift(0)}num=new Buffer(numArray)}if(Buffer.isBuffer(num)){var size=num.length;if(num.length===0)size++;var out=new Buffer(size);num.copy(out);if(num.length===0)out[0]=0;return this._createEncoderBuffer(out)}if(num<128)return this._createEncoderBuffer(num);if(num<256)return this._createEncoderBuffer([0,num]);var size=1;for(var i=num;i>=256;i>>=8)size++;var out=new Array(size);for(var i=out.length-1;i>=0;i--){out[i]=num&255;num>>=8}if(out[0]&128){out.unshift(0)}return this._createEncoderBuffer(new Buffer(out))};DERNode.prototype._encodeBool=function encodeBool(value){return this._createEncoderBuffer(value?255:0)};DERNode.prototype._use=function use(entity,obj){if(typeof entity==="function")entity=entity(obj);return entity._getEncoder("der").tree};DERNode.prototype._skipDefault=function skipDefault(dataBuffer,reporter,parent){var state=this._baseState;var i;if(state["default"]===null)return false;var data=dataBuffer.join();if(state.defaultBuffer===undefined)state.defaultBuffer=this._encodeValue(state["default"],reporter,parent).join();if(data.length!==state.defaultBuffer.length)return false;for(i=0;i=31)return reporter.error("Multi-octet tag encoding unsupported");if(!primitive)res|=32;res|=der.tagClassByName[cls||"universal"]<<6;return res}},{"../../asn1":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/encoders/index.js":[function(require,module,exports){var encoders=exports;encoders.der=require("./der");encoders.pem=require("./pem")},{"./der":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/encoders/der.js","./pem":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/encoders/pem.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/encoders/pem.js":[function(require,module,exports){var inherits=require("inherits");var Buffer=require("buffer").Buffer;var asn1=require("../../asn1");var DEREncoder=require("./der");function PEMEncoder(entity){DEREncoder.call(this,entity);this.enc="pem"}inherits(PEMEncoder,DEREncoder);module.exports=PEMEncoder;PEMEncoder.prototype.encode=function encode(data,options){var buf=DEREncoder.prototype.encode.call(this,data);var p=buf.toString("base64");var out=["-----BEGIN "+options.label+"-----"];for(var i=0;i0){bits.ishrn(shift)}return bits}function bits2octets(bits,q){bits=bits2int(bits,q);bits=bits.mod(q);var out=new Buffer(bits.toArray());if(out.length=q){throw new Error("invalid sig")}}module.exports=verify}).call(this,require("buffer").Buffer)},{"./curves":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/curves.js","bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",elliptic:"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic.js","parse-asn1":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-ecdh/browser.js":[function(require,module,exports){(function(Buffer){var elliptic=require("elliptic");var BN=require("bn.js");module.exports=function createECDH(curve){return new ECDH(curve)};var aliases={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};aliases.p224=aliases.secp224r1;aliases.p256=aliases.secp256r1=aliases.prime256v1;aliases.p192=aliases.secp192r1=aliases.prime192v1;aliases.p384=aliases.secp384r1;aliases.p521=aliases.secp521r1;function ECDH(curve){this.curveType=aliases[curve];if(!this.curveType){this.curveType={name:curve}}this.curve=new elliptic.ec(this.curveType.name);this.keys=void 0}ECDH.prototype.generateKeys=function(enc,format){this.keys=this.curve.genKeyPair();return this.getPublicKey(enc,format)};ECDH.prototype.computeSecret=function(other,inenc,enc){inenc=inenc||"utf8";if(!Buffer.isBuffer(other)){other=new Buffer(other,inenc)}var otherPub=this.curve.keyFromPublic(other).getPublic();var out=otherPub.mul(this.keys.getPrivate()).getX();return formatReturnValue(out,enc,this.curveType.byteLength)};ECDH.prototype.getPublicKey=function(enc,format){var key=this.keys.getPublic(format==="compressed",true);if(format==="hybrid"){if(key[key.length-1]%2){key[0]=7}else{key[0]=6}}return formatReturnValue(key,enc)};ECDH.prototype.getPrivateKey=function(enc){return formatReturnValue(this.keys.getPrivate(),enc)};ECDH.prototype.setPublicKey=function(pub,enc){enc=enc||"utf8";if(!Buffer.isBuffer(pub)){pub=new Buffer(pub,enc)}this.keys._importPublic(pub);return this};ECDH.prototype.setPrivateKey=function(priv,enc){enc=enc||"utf8";if(!Buffer.isBuffer(priv)){priv=new Buffer(priv,enc)}var _priv=new BN(priv);_priv=_priv.toString(16);this.keys._importPrivate(_priv);return this};function formatReturnValue(bn,enc,len){if(!Array.isArray(bn)){bn=bn.toArray()}var buf=new Buffer(bn);if(len&&buf.length>5]|=128<>>9<<4)+14]=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;for(var i=0;i>16)+(y>>16)+(lsw>>16);return msw<<16|lsw&65535}function bit_rol(num,cnt){return num<>>32-cnt}module.exports=function md5(buf){return helpers.hash(buf,core_md5,16)}},{"./helpers":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/helpers.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/cipher-base/index.js":[function(require,module,exports){arguments[4]["/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/node_modules/cipher-base/index.js"][0].apply(exports,arguments)},{buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js",stream:"/data/github/geopackage-node/node_modules/browserify/node_modules/stream-browserify/index.js",string_decoder:"/data/github/geopackage-node/node_modules/browserify/node_modules/string_decoder/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/ripemd160/lib/ripemd160.js":[function(require,module,exports){(function(Buffer){var zl=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13];var zr=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11];var sl=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6];var sr=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11];var hl=[0,1518500249,1859775393,2400959708,2840853838];var hr=[1352829926,1548603684,1836072691,2053994217,0];function bytesToWords(bytes){var words=[];for(var i=0,b=0;i>>5]|=bytes[i]<<24-b%32}return words}function wordsToBytes(words){var bytes=[];for(var b=0;b>>5]>>>24-b%32&255)}return bytes}function processBlock(H,M,offset){for(var i=0;i<16;i++){var offset_i=offset+i;var M_offset_i=M[offset_i];M[offset_i]=(M_offset_i<<8|M_offset_i>>>24)&16711935|(M_offset_i<<24|M_offset_i>>>8)&4278255360}var al,bl,cl,dl,el;var ar,br,cr,dr,er;ar=al=H[0];br=bl=H[1];cr=cl=H[2];dr=dl=H[3];er=el=H[4];var t;for(i=0;i<80;i+=1){t=al+M[offset+zl[i]]|0;if(i<16){t+=f1(bl,cl,dl)+hl[0]}else if(i<32){t+=f2(bl,cl,dl)+hl[1]}else if(i<48){t+=f3(bl,cl,dl)+hl[2]}else if(i<64){t+=f4(bl,cl,dl)+hl[3]}else{t+=f5(bl,cl,dl)+hl[4]}t=t|0;t=rotl(t,sl[i]);t=t+el|0;al=el;el=dl;dl=rotl(cl,10);cl=bl;bl=t;t=ar+M[offset+zr[i]]|0;if(i<16){t+=f5(br,cr,dr)+hr[0]}else if(i<32){t+=f4(br,cr,dr)+hr[1]}else if(i<48){t+=f3(br,cr,dr)+hr[2]}else if(i<64){t+=f2(br,cr,dr)+hr[3]}else{t+=f1(br,cr,dr)+hr[4]}t=t|0;t=rotl(t,sr[i]);t=t+er|0;ar=er;er=dr;dr=rotl(cr,10);cr=br;br=t}t=H[1]+cl+dr|0;H[1]=H[2]+dl+er|0;H[2]=H[3]+el+ar|0;H[3]=H[4]+al+br|0;H[4]=H[0]+bl+cr|0;H[0]=t}function f1(x,y,z){return x^y^z}function f2(x,y,z){return x&y|~x&z}function f3(x,y,z){return(x|~y)^z}function f4(x,y,z){return x&z|y&~z}function f5(x,y,z){return x^(y|~z)}function rotl(x,n){return x<>>32-n}function ripemd160(message){var H=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof message==="string"){message=new Buffer(message,"utf8")}var m=bytesToWords(message);var nBitsLeft=message.length*8;var nBitsTotal=message.length*8;m[nBitsLeft>>>5]|=128<<24-nBitsLeft%32;m[(nBitsLeft+64>>>9<<4)+14]=(nBitsTotal<<8|nBitsTotal>>>24)&16711935|(nBitsTotal<<24|nBitsTotal>>>8)&4278255360;for(var i=0;i>>24)&16711935|(H_i<<24|H_i>>>8)&4278255360}var digestbytes=wordsToBytes(H);return new Buffer(digestbytes)}module.exports=ripemd160}).call(this,require("buffer").Buffer)},{buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/hash.js":[function(require,module,exports){(function(Buffer){function Hash(blockSize,finalSize){this._block=new Buffer(blockSize);this._finalSize=finalSize;this._blockSize=blockSize;this._len=0;this._s=0}Hash.prototype.update=function(data,enc){if(typeof data==="string"){enc=enc||"utf8";data=new Buffer(data,enc)}var l=this._len+=data.length;var s=this._s||0;var f=0;var buffer=this._block;while(s=this._finalSize*8){this._update(this._block);this._block.fill(0)}this._block.writeInt32BE(l,this._blockSize-4);var hash=this._update(this._block)||this._hash();return enc?hash.toString(enc):hash};Hash.prototype._update=function(){throw new Error("_update must be implemented by subclass")};module.exports=Hash}).call(this,require("buffer").Buffer)},{buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/index.js":[function(require,module,exports){var exports=module.exports=function SHA(algorithm){algorithm=algorithm.toLowerCase();var Algorithm=exports[algorithm];if(!Algorithm)throw new Error(algorithm+" is not supported (we accept pull requests)");return new Algorithm};exports.sha=require("./sha");exports.sha1=require("./sha1");exports.sha224=require("./sha224");exports.sha256=require("./sha256");exports.sha384=require("./sha384");exports.sha512=require("./sha512")},{"./sha":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha.js","./sha1":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha1.js","./sha224":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha224.js","./sha256":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha256.js","./sha384":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha384.js","./sha512":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha512.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha.js":[function(require,module,exports){(function(Buffer){var inherits=require("inherits");var Hash=require("./hash");var K=[1518500249,1859775393,2400959708|0,3395469782|0];var W=new Array(80);function Sha(){this.init();this._w=W;Hash.call(this,64,56)}inherits(Sha,Hash);Sha.prototype.init=function(){this._a=1732584193;this._b=4023233417;this._c=2562383102;this._d=271733878;this._e=3285377520;return this};function rotl5(num){return num<<5|num>>>27}function rotl30(num){return num<<30|num>>>2}function ft(s,b,c,d){if(s===0)return b&c|~b&d;if(s===2)return b&c|b&d|c&d;return b^c^d}Sha.prototype._update=function(M){var W=this._w;var a=this._a|0;var b=this._b|0;var c=this._c|0;var d=this._d|0;var e=this._e|0;for(var i=0;i<16;++i)W[i]=M.readInt32BE(i*4);for(;i<80;++i)W[i]=W[i-3]^W[i-8]^W[i-14]^W[i-16];for(var j=0;j<80;++j){var s=~~(j/20);var t=rotl5(a)+ft(s,b,c,d)+e+W[j]+K[s]|0;e=d;d=c;c=rotl30(b);b=a;a=t}this._a=a+this._a|0;this._b=b+this._b|0;this._c=c+this._c|0;this._d=d+this._d|0;this._e=e+this._e|0};Sha.prototype._hash=function(){var H=new Buffer(20);H.writeInt32BE(this._a|0,0);H.writeInt32BE(this._b|0,4);H.writeInt32BE(this._c|0,8);H.writeInt32BE(this._d|0,12);H.writeInt32BE(this._e|0,16);return H};module.exports=Sha}).call(this,require("buffer").Buffer)},{"./hash":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/hash.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha1.js":[function(require,module,exports){(function(Buffer){var inherits=require("inherits");var Hash=require("./hash");var K=[1518500249,1859775393,2400959708|0,3395469782|0];var W=new Array(80);function Sha1(){this.init();this._w=W;Hash.call(this,64,56)}inherits(Sha1,Hash);Sha1.prototype.init=function(){this._a=1732584193;this._b=4023233417;this._c=2562383102;this._d=271733878;this._e=3285377520;return this};function rotl1(num){return num<<1|num>>>31}function rotl5(num){return num<<5|num>>>27}function rotl30(num){return num<<30|num>>>2}function ft(s,b,c,d){if(s===0)return b&c|~b&d;if(s===2)return b&c|b&d|c&d;return b^c^d}Sha1.prototype._update=function(M){var W=this._w;var a=this._a|0;var b=this._b|0;var c=this._c|0;var d=this._d|0;var e=this._e|0;for(var i=0;i<16;++i)W[i]=M.readInt32BE(i*4);for(;i<80;++i)W[i]=rotl1(W[i-3]^W[i-8]^W[i-14]^W[i-16]);for(var j=0;j<80;++j){var s=~~(j/20);var t=rotl5(a)+ft(s,b,c,d)+e+W[j]+K[s]|0;e=d;d=c;c=rotl30(b);b=a;a=t}this._a=a+this._a|0;this._b=b+this._b|0;this._c=c+this._c|0;this._d=d+this._d|0;this._e=e+this._e|0};Sha1.prototype._hash=function(){var H=new Buffer(20);H.writeInt32BE(this._a|0,0);H.writeInt32BE(this._b|0,4);H.writeInt32BE(this._c|0,8);H.writeInt32BE(this._d|0,12);H.writeInt32BE(this._e|0,16);return H};module.exports=Sha1}).call(this,require("buffer").Buffer); -},{"./hash":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/hash.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha224.js":[function(require,module,exports){(function(Buffer){var inherits=require("inherits");var Sha256=require("./sha256");var Hash=require("./hash");var W=new Array(64);function Sha224(){this.init();this._w=W;Hash.call(this,64,56)}inherits(Sha224,Sha256);Sha224.prototype.init=function(){this._a=3238371032;this._b=914150663;this._c=812702999;this._d=4144912697;this._e=4290775857;this._f=1750603025;this._g=1694076839;this._h=3204075428;return this};Sha224.prototype._hash=function(){var H=new Buffer(28);H.writeInt32BE(this._a,0);H.writeInt32BE(this._b,4);H.writeInt32BE(this._c,8);H.writeInt32BE(this._d,12);H.writeInt32BE(this._e,16);H.writeInt32BE(this._f,20);H.writeInt32BE(this._g,24);return H};module.exports=Sha224}).call(this,require("buffer").Buffer)},{"./hash":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/hash.js","./sha256":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha256.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha256.js":[function(require,module,exports){(function(Buffer){var inherits=require("inherits");var Hash=require("./hash");var K=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];var W=new Array(64);function Sha256(){this.init();this._w=W;Hash.call(this,64,56)}inherits(Sha256,Hash);Sha256.prototype.init=function(){this._a=1779033703;this._b=3144134277;this._c=1013904242;this._d=2773480762;this._e=1359893119;this._f=2600822924;this._g=528734635;this._h=1541459225;return this};function ch(x,y,z){return z^x&(y^z)}function maj(x,y,z){return x&y|z&(x|y)}function sigma0(x){return(x>>>2|x<<30)^(x>>>13|x<<19)^(x>>>22|x<<10)}function sigma1(x){return(x>>>6|x<<26)^(x>>>11|x<<21)^(x>>>25|x<<7)}function gamma0(x){return(x>>>7|x<<25)^(x>>>18|x<<14)^x>>>3}function gamma1(x){return(x>>>17|x<<15)^(x>>>19|x<<13)^x>>>10}Sha256.prototype._update=function(M){var W=this._w;var a=this._a|0;var b=this._b|0;var c=this._c|0;var d=this._d|0;var e=this._e|0;var f=this._f|0;var g=this._g|0;var h=this._h|0;for(var i=0;i<16;++i)W[i]=M.readInt32BE(i*4);for(;i<64;++i)W[i]=gamma1(W[i-2])+W[i-7]+gamma0(W[i-15])+W[i-16]|0;for(var j=0;j<64;++j){var T1=h+sigma1(e)+ch(e,f,g)+K[j]+W[j]|0;var T2=sigma0(a)+maj(a,b,c)|0;h=g;g=f;f=e;e=d+T1|0;d=c;c=b;b=a;a=T1+T2|0}this._a=a+this._a|0;this._b=b+this._b|0;this._c=c+this._c|0;this._d=d+this._d|0;this._e=e+this._e|0;this._f=f+this._f|0;this._g=g+this._g|0;this._h=h+this._h|0};Sha256.prototype._hash=function(){var H=new Buffer(32);H.writeInt32BE(this._a,0);H.writeInt32BE(this._b,4);H.writeInt32BE(this._c,8);H.writeInt32BE(this._d,12);H.writeInt32BE(this._e,16);H.writeInt32BE(this._f,20);H.writeInt32BE(this._g,24);H.writeInt32BE(this._h,28);return H};module.exports=Sha256}).call(this,require("buffer").Buffer)},{"./hash":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/hash.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha384.js":[function(require,module,exports){(function(Buffer){var inherits=require("inherits");var SHA512=require("./sha512");var Hash=require("./hash");var W=new Array(160);function Sha384(){this.init();this._w=W;Hash.call(this,128,112)}inherits(Sha384,SHA512);Sha384.prototype.init=function(){this._ah=3418070365;this._bh=1654270250;this._ch=2438529370;this._dh=355462360;this._eh=1731405415;this._fh=2394180231;this._gh=3675008525;this._hh=1203062813;this._al=3238371032;this._bl=914150663;this._cl=812702999;this._dl=4144912697;this._el=4290775857;this._fl=1750603025;this._gl=1694076839;this._hl=3204075428;return this};Sha384.prototype._hash=function(){var H=new Buffer(48);function writeInt64BE(h,l,offset){H.writeInt32BE(h,offset);H.writeInt32BE(l,offset+4)}writeInt64BE(this._ah,this._al,0);writeInt64BE(this._bh,this._bl,8);writeInt64BE(this._ch,this._cl,16);writeInt64BE(this._dh,this._dl,24);writeInt64BE(this._eh,this._el,32);writeInt64BE(this._fh,this._fl,40);return H};module.exports=Sha384}).call(this,require("buffer").Buffer)},{"./hash":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/hash.js","./sha512":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha512.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha512.js":[function(require,module,exports){(function(Buffer){var inherits=require("inherits");var Hash=require("./hash");var K=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];var W=new Array(160);function Sha512(){this.init();this._w=W;Hash.call(this,128,112)}inherits(Sha512,Hash);Sha512.prototype.init=function(){this._ah=1779033703;this._bh=3144134277;this._ch=1013904242;this._dh=2773480762;this._eh=1359893119;this._fh=2600822924;this._gh=528734635;this._hh=1541459225;this._al=4089235720;this._bl=2227873595;this._cl=4271175723;this._dl=1595750129;this._el=2917565137;this._fl=725511199;this._gl=4215389547;this._hl=327033209;return this};function Ch(x,y,z){return z^x&(y^z)}function maj(x,y,z){return x&y|z&(x|y)}function sigma0(x,xl){return(x>>>28|xl<<4)^(xl>>>2|x<<30)^(xl>>>7|x<<25)}function sigma1(x,xl){return(x>>>14|xl<<18)^(x>>>18|xl<<14)^(xl>>>9|x<<23)}function Gamma0(x,xl){return(x>>>1|xl<<31)^(x>>>8|xl<<24)^x>>>7}function Gamma0l(x,xl){return(x>>>1|xl<<31)^(x>>>8|xl<<24)^(x>>>7|xl<<25)}function Gamma1(x,xl){return(x>>>19|xl<<13)^(xl>>>29|x<<3)^x>>>6}function Gamma1l(x,xl){return(x>>>19|xl<<13)^(xl>>>29|x<<3)^(x>>>6|xl<<26)}function getCarry(a,b){return a>>>0>>0?1:0}Sha512.prototype._update=function(M){var W=this._w;var ah=this._ah|0;var bh=this._bh|0;var ch=this._ch|0;var dh=this._dh|0;var eh=this._eh|0;var fh=this._fh|0;var gh=this._gh|0;var hh=this._hh|0;var al=this._al|0;var bl=this._bl|0;var cl=this._cl|0;var dl=this._dl|0;var el=this._el|0;var fl=this._fl|0;var gl=this._gl|0;var hl=this._hl|0;for(var i=0;i<32;i+=2){W[i]=M.readInt32BE(i*4);W[i+1]=M.readInt32BE(i*4+4)}for(;i<160;i+=2){var xh=W[i-15*2];var xl=W[i-15*2+1];var gamma0=Gamma0(xh,xl);var gamma0l=Gamma0l(xl,xh);xh=W[i-2*2];xl=W[i-2*2+1];var gamma1=Gamma1(xh,xl);var gamma1l=Gamma1l(xl,xh);var Wi7h=W[i-7*2];var Wi7l=W[i-7*2+1];var Wi16h=W[i-16*2];var Wi16l=W[i-16*2+1];var Wil=gamma0l+Wi7l|0;var Wih=gamma0+Wi7h+getCarry(Wil,gamma0l)|0;Wil=Wil+gamma1l|0;Wih=Wih+gamma1+getCarry(Wil,gamma1l)|0;Wil=Wil+Wi16l|0;Wih=Wih+Wi16h+getCarry(Wil,Wi16l)|0;W[i]=Wih;W[i+1]=Wil}for(var j=0;j<160;j+=2){Wih=W[j];Wil=W[j+1];var majh=maj(ah,bh,ch);var majl=maj(al,bl,cl);var sigma0h=sigma0(ah,al);var sigma0l=sigma0(al,ah);var sigma1h=sigma1(eh,el);var sigma1l=sigma1(el,eh);var Kih=K[j];var Kil=K[j+1];var chh=Ch(eh,fh,gh);var chl=Ch(el,fl,gl);var t1l=hl+sigma1l|0;var t1h=hh+sigma1h+getCarry(t1l,hl)|0;t1l=t1l+chl|0;t1h=t1h+chh+getCarry(t1l,chl)|0;t1l=t1l+Kil|0;t1h=t1h+Kih+getCarry(t1l,Kil)|0;t1l=t1l+Wil|0;t1h=t1h+Wih+getCarry(t1l,Wil)|0;var t2l=sigma0l+majl|0;var t2h=sigma0h+majh+getCarry(t2l,sigma0l)|0;hh=gh;hl=gl;gh=fh;gl=fl;fh=eh;fl=el;el=dl+t1l|0;eh=dh+t1h+getCarry(el,dl)|0;dh=ch;dl=cl;ch=bh;cl=bl;bh=ah;bl=al;al=t1l+t2l|0;ah=t1h+t2h+getCarry(al,t1l)|0}this._al=this._al+al|0;this._bl=this._bl+bl|0;this._cl=this._cl+cl|0;this._dl=this._dl+dl|0;this._el=this._el+el|0;this._fl=this._fl+fl|0;this._gl=this._gl+gl|0;this._hl=this._hl+hl|0;this._ah=this._ah+ah+getCarry(this._al,al)|0;this._bh=this._bh+bh+getCarry(this._bl,bl)|0;this._ch=this._ch+ch+getCarry(this._cl,cl)|0;this._dh=this._dh+dh+getCarry(this._dl,dl)|0;this._eh=this._eh+eh+getCarry(this._el,el)|0;this._fh=this._fh+fh+getCarry(this._fl,fl)|0;this._gh=this._gh+gh+getCarry(this._gl,gl)|0;this._hh=this._hh+hh+getCarry(this._hl,hl)|0};Sha512.prototype._hash=function(){var H=new Buffer(64);function writeInt64BE(h,l,offset){H.writeInt32BE(h,offset);H.writeInt32BE(l,offset+4)}writeInt64BE(this._ah,this._al,0);writeInt64BE(this._bh,this._bl,8);writeInt64BE(this._ch,this._cl,16);writeInt64BE(this._dh,this._dl,24);writeInt64BE(this._eh,this._el,32);writeInt64BE(this._fh,this._fl,40);writeInt64BE(this._gh,this._gl,48);writeInt64BE(this._hh,this._hl,56);return H};module.exports=Sha512}).call(this,require("buffer").Buffer)},{"./hash":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/hash.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hmac/browser.js":[function(require,module,exports){(function(Buffer){"use strict";var createHash=require("create-hash/browser");var inherits=require("inherits");var Transform=require("stream").Transform;var ZEROS=new Buffer(128);ZEROS.fill(0);function Hmac(alg,key){Transform.call(this);alg=alg.toLowerCase();if(typeof key==="string"){key=new Buffer(key)}var blocksize=alg==="sha512"||alg==="sha384"?128:64;this._alg=alg;this._key=key;if(key.length>blocksize){key=createHash(alg).update(key).digest()}else if(key.lengthbits){num.ishrn(1)}if(num.isEven()){num.iadd(ONE)}if(!num.testn(1)){num.iadd(TWO)}if(!gen.cmp(TWO)){while(num.mod(TWENTYFOUR).cmp(ELEVEN)){num.iadd(FOUR)}}else if(!gen.cmp(FIVE)){while(num.mod(TEN).cmp(THREE)){num.iadd(FOUR)}}n2=num.shrn(1);if(simpleSieve(n2)&&simpleSieve(num)&&fermatTest(n2)&&fermatTest(num)&&millerRabin.test(n2)&&millerRabin.test(num)){return num}}}},{"bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js","miller-rabin":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/diffie-hellman/node_modules/miller-rabin/lib/mr.js",randombytes:"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/randombytes/browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/diffie-hellman/lib/primes.json":[function(require,module,exports){module.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js":[function(require,module,exports){arguments[4]["/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js"][0].apply(exports,arguments)},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/diffie-hellman/node_modules/miller-rabin/lib/mr.js":[function(require,module,exports){var bn=require("bn.js");var brorand=require("brorand");function MillerRabin(rand){this.rand=rand||new brorand.Rand}module.exports=MillerRabin;MillerRabin.create=function create(rand){return new MillerRabin(rand)};MillerRabin.prototype._rand=function _rand(n){var len=n.bitLength();var buf=this.rand.generate(Math.ceil(len/8));buf[0]|=3;var mask=len&7;if(mask!==0)buf[buf.length-1]>>=7-mask;return new bn(buf)};MillerRabin.prototype.test=function test(n,k,cb){var len=n.bitLength();var red=bn.mont(n);var rone=new bn(1).toRed(red);if(!k)k=Math.max(1,len/48|0);var n1=n.subn(1);var n2=n1.subn(1);for(var s=0;!n1.testn(s);s++){}var d=n.shrn(s);var rn1=n1.toRed(red);var prime=true;for(;k>0;k--){var a=this._rand(n2);if(cb)cb(a);var x=a.toRed(red).redPow(d);if(x.cmp(rone)===0||x.cmp(rn1)===0)continue;for(var i=1;i0;k--){var a=this._rand(n2);var g=n.gcd(a);if(g.cmpn(1)!==0)return g;var x=a.toRed(red).redPow(d);if(x.cmp(rone)===0||x.cmp(rn1)===0)continue;for(var i=1;iMAX_ALLOC){throw new TypeError("Bad key length")}digest=digest||"sha1";if(!Buffer.isBuffer(password))password=new Buffer(password,"binary");if(!Buffer.isBuffer(salt))salt=new Buffer(salt,"binary");var hLen;var l=1;var DK=new Buffer(keylen);var block1=new Buffer(salt.length+4);salt.copy(block1,0,0,salt.length);var r;var T;for(var i=1;i<=l;i++){block1.writeUInt32BE(i,salt.length);var U=createHmac(digest,password).update(block1).digest();if(!hLen){hLen=U.length;T=new Buffer(hLen);l=Math.ceil(keylen/hLen);r=keylen-(l-1)*hLen}U.copy(T,0,0,hLen);for(var j=1;jk||new bn(enc).cmp(key.modulus)>=0){throw new Error("decryption error")}var msg;if(reverse){msg=withPublic(new bn(enc),key)}else{msg=crt(enc,key)}var zBuffer=new Buffer(k-msg.length);zBuffer.fill(0);msg=Buffer.concat([zBuffer,msg],k);if(padding===4){return oaep(key,msg)}else if(padding===1){return pkcs1(key,msg,reverse)}else if(padding===3){return msg}else{throw new Error("unknown padding")}};function oaep(key,msg){var n=key.modulus;var k=key.modulus.byteLength();var mLen=msg.length;var iHash=createHash("sha1").update(new Buffer("")).digest();var hLen=iHash.length;var hLen2=2*hLen;if(msg[0]!==0){throw new Error("decryption error")}var maskedSeed=msg.slice(1,hLen+1);var maskedDb=msg.slice(hLen+1);var seed=xor(maskedSeed,mgf(maskedDb,hLen));var db=xor(maskedDb,mgf(seed,k-hLen-1));if(compare(iHash,db.slice(0,hLen))){throw new Error("decryption error")}var i=hLen;while(db[i]===0){i++}if(db[i++]!==1){throw new Error("decryption error")}return db.slice(i)}function pkcs1(key,msg,reverse){var p1=msg.slice(0,2);var i=2;var status=0;while(msg[i++]!==0){if(i>=msg.length){status++;break}}var ps=msg.slice(2,i-1);var p2=msg.slice(i-1,i);if(p1.toString("hex")!=="0002"&&!reverse||p1.toString("hex")!=="0001"&&reverse){status++}if(ps.length<8){status++}if(status){throw new Error("decryption error")}return msg.slice(i)}function compare(a,b){a=new Buffer(a);b=new Buffer(b);var dif=0;var len=a.length;if(a.length!==b.length){dif++;len=Math.min(a.length,b.length)}var i=-1;while(++i=0){throw new Error("data too long for modulus")}}else{throw new Error("unknown padding")}if(reverse){return crt(paddedMsg,key)}else{return withPublic(paddedMsg,key)}};function oaep(key,msg){var k=key.modulus.byteLength();var mLen=msg.length;var iHash=createHash("sha1").update(new Buffer("")).digest();var hLen=iHash.length;var hLen2=2*hLen;if(mLen>k-hLen2-2){throw new Error("message too long")}var ps=new Buffer(k-mLen-hLen2-2);ps.fill(0);var dblen=k-hLen-1;var seed=randomBytes(hLen);var maskedDb=xor(Buffer.concat([iHash,ps,new Buffer([1]),msg],dblen),mgf(seed,dblen));var maskedSeed=xor(seed,mgf(maskedDb,hLen));return new bn(Buffer.concat([new Buffer([0]),maskedSeed,maskedDb],k))}function pkcs1(key,msg,reverse){var mLen=msg.length;var k=key.modulus.byteLength();if(mLen>k-11){throw new Error("message too long")}var ps;if(reverse){ps=new Buffer(k-mLen-3);ps.fill(255)}else{ps=nonZero(k-mLen-3)}return new bn(Buffer.concat([new Buffer([0,reverse?1:2]),ps,new Buffer([0]),msg],k))}function nonZero(len,crypto){var out=new Buffer(len);var i=0;var cache=randomBytes(len*2);var cur=0;var num;while(i65536)throw new Error("requested too many random bytes");var rawBytes=new global.Uint8Array(size);if(size>0){crypto.getRandomValues(rawBytes)}var bytes=new Buffer(rawBytes.buffer);if(typeof cb==="function"){return process.nextTick(function(){cb(null,bytes)})}return bytes}}).call(this,require("_process"),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{},require("buffer").Buffer)},{_process:"/data/github/geopackage-node/node_modules/browserify/node_modules/process/browser.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/events/events.js":[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}throw TypeError('Uncaught, unspecified "error" event.')}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:args=Array.prototype.slice.call(arguments,1);handler.apply(this,args)}}else if(isObject(handler)){args=Array.prototype.slice.call(arguments,1);listeners=handler.slice();len=listeners.length;for(i=0;i0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-- >0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else if(listeners){while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.prototype.listenerCount=function(type){if(this._events){var evlistener=this._events[type];if(isFunction(evlistener))return 1;else if(evlistener)return evlistener.length}return 0};EventEmitter.listenerCount=function(emitter,type){return emitter.listenerCount(type)};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js":[function(require,module,exports){if(typeof Object.create==="function"){module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:false,writable:true,configurable:true}})}}else{module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype;ctor.prototype=new TempCtor;ctor.prototype.constructor=ctor}}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/insert-module-globals/node_modules/is-buffer/index.js":[function(require,module,exports){module.exports=function(obj){return!!(obj!=null&&(obj._isBuffer||obj.constructor&&typeof obj.constructor.isBuffer==="function"&&obj.constructor.isBuffer(obj)))}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/path-browserify/index.js":[function(require,module,exports){(function(process){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}var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;var splitPath=function(filename){return splitPathRe.exec(filename).slice(1)};exports.resolve=function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:process.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){continue}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=normalizeArray(filter(resolvedPath.split("/"),function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."};exports.normalize=function(path){var isAbsolute=exports.isAbsolute(path),trailingSlash=substr(path,-1)==="/";path=normalizeArray(filter(path.split("/"),function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path};exports.isAbsolute=function(path){return path.charAt(0)==="/"};exports.join=function(){var paths=Array.prototype.slice.call(arguments,0);return exports.normalize(filter(paths,function(p,index){if(typeof p!=="string"){throw new TypeError("Arguments to path.join must be strings")}return p}).join("/"))};exports.relative=function(from,to){from=exports.resolve(from).substr(1);to=exports.resolve(to).substr(1);function trim(arr){var start=0;for(;start=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;i1){for(var i=1;i0){if(state.ended&&!addToFront){var e=new Error("stream.push() after EOF");stream.emit("error",e)}else if(state.endEmitted&&addToFront){var e=new Error("stream.unshift() after end event");stream.emit("error",e)}else{var skipAdd;if(state.decoder&&!addToFront&&!encoding){chunk=state.decoder.write(chunk);skipAdd=!state.objectMode&&chunk.length===0}if(!addToFront)state.reading=false;if(!skipAdd){if(state.flowing&&state.length===0&&!state.sync){stream.emit("data",chunk);stream.read(0)}else{state.length+=state.objectMode?1:chunk.length;if(addToFront)state.buffer.unshift(chunk);else state.buffer.push(chunk);if(state.needReadable)emitReadable(stream)}}maybeReadMore(stream,state)}}else if(!addToFront){state.reading=false}return needMoreData(state)}function needMoreData(state){return!state.ended&&(state.needReadable||state.length=MAX_HWM){ -n=MAX_HWM}else{n--;n|=n>>>1;n|=n>>>2;n|=n>>>4;n|=n>>>8;n|=n>>>16;n++}return n}function howMuchToRead(n,state){if(state.length===0&&state.ended)return 0;if(state.objectMode)return n===0?0:1;if(n===null||isNaN(n)){if(state.flowing&&state.buffer.length)return state.buffer[0].length;else return state.length}if(n<=0)return 0;if(n>state.highWaterMark)state.highWaterMark=computeNewHighWaterMark(n);if(n>state.length){if(!state.ended){state.needReadable=true;return 0}else{return state.length}}return n}Readable.prototype.read=function(n){debug("read",n);var state=this._readableState;var nOrig=n;if(typeof n!=="number"||n>0)state.emittedReadable=false;if(n===0&&state.needReadable&&(state.length>=state.highWaterMark||state.ended)){debug("read: emitReadable",state.length,state.ended);if(state.length===0&&state.ended)endReadable(this);else emitReadable(this);return null}n=howMuchToRead(n,state);if(n===0&&state.ended){if(state.length===0)endReadable(this);return null}var doRead=state.needReadable;debug("need readable",doRead);if(state.length===0||state.length-n0)ret=fromList(n,state);else ret=null;if(ret===null){state.needReadable=true;n=0}state.length-=n;if(state.length===0&&!state.ended)state.needReadable=true;if(nOrig!==n&&state.ended&&state.length===0)endReadable(this);if(ret!==null)this.emit("data",ret);return ret};function chunkInvalid(state,chunk){var er=null;if(!Buffer.isBuffer(chunk)&&typeof chunk!=="string"&&chunk!==null&&chunk!==undefined&&!state.objectMode){er=new TypeError("Invalid non-string/buffer chunk")}return er}function onEofChunk(stream,state){if(state.ended)return;if(state.decoder){var chunk=state.decoder.end();if(chunk&&chunk.length){state.buffer.push(chunk);state.length+=state.objectMode?1:chunk.length}}state.ended=true;emitReadable(stream)}function emitReadable(stream){var state=stream._readableState;state.needReadable=false;if(!state.emittedReadable){debug("emitReadable",state.flowing);state.emittedReadable=true;if(state.sync)processNextTick(emitReadable_,stream);else emitReadable_(stream)}}function emitReadable_(stream){debug("emit readable");stream.emit("readable");flow(stream)}function maybeReadMore(stream,state){if(!state.readingMore){state.readingMore=true;processNextTick(maybeReadMore_,stream,state)}}function maybeReadMore_(stream,state){var len=state.length;while(!state.reading&&!state.flowing&&!state.ended&&state.length=length){if(stringMode)ret=list.join("");else if(list.length===1)ret=list[0];else ret=Buffer.concat(list,length);list.length=0}else{if(n0)throw new Error("endReadable called on non-empty stream");if(!state.endEmitted){state.ended=true;processNextTick(endReadableNT,state,stream)}}function endReadableNT(state,stream){if(!state.endEmitted&&state.length===0){state.endEmitted=true;stream.readable=false;stream.emit("end")}}function forEach(xs,f){for(var i=0,l=xs.length;i-1?setImmediate:processNextTick;var Buffer=require("buffer").Buffer;Writable.WritableState=WritableState;var util=require("core-util-is");util.inherits=require("inherits");var internalUtil={deprecate:require("util-deprecate")};var Stream;(function(){try{Stream=require("st"+"ream")}catch(_){}finally{if(!Stream)Stream=require("events").EventEmitter}})();var Buffer=require("buffer").Buffer;util.inherits(Writable,Stream);function nop(){}function WriteReq(chunk,encoding,cb){this.chunk=chunk;this.encoding=encoding;this.callback=cb;this.next=null}var Duplex;function WritableState(options,stream){Duplex=Duplex||require("./_stream_duplex");options=options||{};this.objectMode=!!options.objectMode;if(stream instanceof Duplex)this.objectMode=this.objectMode||!!options.writableObjectMode;var hwm=options.highWaterMark;var defaultHwm=this.objectMode?16:16*1024;this.highWaterMark=hwm||hwm===0?hwm:defaultHwm;this.highWaterMark=~~this.highWaterMark;this.needDrain=false;this.ending=false;this.ended=false;this.finished=false;var noDecode=options.decodeStrings===false;this.decodeStrings=!noDecode;this.defaultEncoding=options.defaultEncoding||"utf8";this.length=0;this.writing=false;this.corked=0;this.sync=true;this.bufferProcessing=false;this.onwrite=function(er){onwrite(stream,er)};this.writecb=null;this.writelen=0;this.bufferedRequest=null;this.lastBufferedRequest=null;this.pendingcb=0;this.prefinished=false;this.errorEmitted=false;this.bufferedRequestCount=0;this.corkedRequestsFree=new CorkedRequest(this);this.corkedRequestsFree.next=new CorkedRequest(this)}WritableState.prototype.getBuffer=function writableStateGetBuffer(){var current=this.bufferedRequest;var out=[];while(current){out.push(current);current=current.next}return out};(function(){try{Object.defineProperty(WritableState.prototype,"buffer",{get:internalUtil.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer "+"instead.")})}catch(_){}})();var Duplex;function Writable(options){Duplex=Duplex||require("./_stream_duplex");if(!(this instanceof Writable)&&!(this instanceof Duplex))return new Writable(options);this._writableState=new WritableState(options,this);this.writable=true;if(options){if(typeof options.write==="function")this._write=options.write;if(typeof options.writev==="function")this._writev=options.writev}Stream.call(this)}Writable.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe. Not readable."))};function writeAfterEnd(stream,cb){var er=new Error("write after end");stream.emit("error",er);processNextTick(cb,er)}function validChunk(stream,state,chunk,cb){var valid=true;if(!Buffer.isBuffer(chunk)&&typeof chunk!=="string"&&chunk!==null&&chunk!==undefined&&!state.objectMode){var er=new TypeError("Invalid non-string/buffer chunk");stream.emit("error",er);processNextTick(cb,er);valid=false}return valid}Writable.prototype.write=function(chunk,encoding,cb){var state=this._writableState;var ret=false;if(typeof encoding==="function"){cb=encoding;encoding=null}if(Buffer.isBuffer(chunk))encoding="buffer";else if(!encoding)encoding=state.defaultEncoding;if(typeof cb!=="function")cb=nop;if(state.ended)writeAfterEnd(this,cb);else if(validChunk(this,state,chunk,cb)){state.pendingcb++;ret=writeOrBuffer(this,state,chunk,encoding,cb)}return ret};Writable.prototype.cork=function(){var state=this._writableState;state.corked++};Writable.prototype.uncork=function(){var state=this._writableState;if(state.corked){state.corked--;if(!state.writing&&!state.corked&&!state.finished&&!state.bufferProcessing&&state.bufferedRequest)clearBuffer(this,state)}};Writable.prototype.setDefaultEncoding=function setDefaultEncoding(encoding){if(typeof encoding==="string")encoding=encoding.toLowerCase();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);this._writableState.defaultEncoding=encoding};function decodeChunk(state,chunk,encoding){if(!state.objectMode&&state.decodeStrings!==false&&typeof chunk==="string"){chunk=new Buffer(chunk,encoding)}return chunk}function writeOrBuffer(stream,state,chunk,encoding,cb){chunk=decodeChunk(state,chunk,encoding);if(Buffer.isBuffer(chunk))encoding="buffer";var len=state.objectMode?1:chunk.length;state.length+=len;var ret=state.length=this.charLength-this.charReceived?this.charLength-this.charReceived:buffer.length;buffer.copy(this.charBuffer,this.charReceived,0,available);this.charReceived+=available;if(this.charReceived=55296&&charCode<=56319){this.charLength+=this.surrogateSize;charStr="";continue}this.charReceived=this.charLength=0;if(buffer.length===0){return charStr}break}this.detectIncompleteChar(buffer);var end=buffer.length;if(this.charLength){buffer.copy(this.charBuffer,0,buffer.length-this.charReceived,end);end-=this.charReceived}charStr+=buffer.toString(this.encoding,0,end);var end=charStr.length-1;var charCode=charStr.charCodeAt(end);if(charCode>=55296&&charCode<=56319){var size=this.surrogateSize;this.charLength+=size;this.charReceived+=size;this.charBuffer.copy(this.charBuffer,size,0,size);buffer.copy(this.charBuffer,0,0,size);return charStr.substring(0,end)}return charStr};StringDecoder.prototype.detectIncompleteChar=function(buffer){var i=buffer.length>=3?3:buffer.length;for(;i>0;i--){var c=buffer[buffer.length-i];if(i==1&&c>>5==6){this.charLength=2;break}if(i<=2&&c>>4==14){this.charLength=3;break}if(i<=3&&c>>3==30){this.charLength=4;break}}this.charReceived=i};StringDecoder.prototype.end=function(buffer){var res="";if(buffer&&buffer.length)res=this.write(buffer);if(this.charReceived){var cr=this.charReceived;var buf=this.charBuffer;var enc=this.encoding;res+=buf.slice(0,cr).toString(enc)}return res};function passThroughWrite(buffer){return buffer.toString(this.encoding)}function utf16DetectIncompleteChar(buffer){this.charReceived=buffer.length%2;this.charLength=this.charReceived?2:0}function base64DetectIncompleteChar(buffer){this.charReceived=buffer.length%3;this.charLength=this.charReceived?3:0}},{buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/util/support/isBufferBrowser.js":[function(require,module,exports){module.exports=function isBuffer(arg){return arg&&typeof arg==="object"&&typeof arg.copy==="function"&&typeof arg.fill==="function"&&typeof arg.readUInt8==="function"}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/util/util.js":[function(require,module,exports){(function(process,global){var formatRegExp=/%[sdj%]/g;exports.format=function(f){if(!isString(f)){var objects=[];for(var i=0;i=len)return x;switch(x){case"%s":return String(args[i++]);case"%d":return Number(args[i++]);case"%j":try{return JSON.stringify(args[i++])}catch(_){return"[Circular]"}default:return x}});for(var x=args[i];i=3)ctx.depth=arguments[2];if(arguments.length>=4)ctx.colors=arguments[3];if(isBoolean(opts)){ctx.showHidden=opts}else if(opts){exports._extend(ctx,opts)}if(isUndefined(ctx.showHidden))ctx.showHidden=false;if(isUndefined(ctx.depth))ctx.depth=2;if(isUndefined(ctx.colors))ctx.colors=false;if(isUndefined(ctx.customInspect))ctx.customInspect=true;if(ctx.colors)ctx.stylize=stylizeWithColor;return formatValue(ctx,obj,ctx.depth)}exports.inspect=inspect;inspect.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};inspect.styles={special:"cyan",number:"yellow","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"};function stylizeWithColor(str,styleType){var style=inspect.styles[styleType];if(style){return"["+inspect.colors[style][0]+"m"+str+"["+inspect.colors[style][1]+"m"}else{return str}}function stylizeNoColor(str,styleType){return str}function arrayToHash(array){var hash={};array.forEach(function(val,idx){hash[val]=true});return hash}function formatValue(ctx,value,recurseTimes){if(ctx.customInspect&&value&&isFunction(value.inspect)&&value.inspect!==exports.inspect&&!(value.constructor&&value.constructor.prototype===value)){var ret=value.inspect(recurseTimes,ctx);if(!isString(ret)){ret=formatValue(ctx,ret,recurseTimes)}return ret}var primitive=formatPrimitive(ctx,value);if(primitive){return primitive}var keys=Object.keys(value);var visibleKeys=arrayToHash(keys);if(ctx.showHidden){keys=Object.getOwnPropertyNames(value)}if(isError(value)&&(keys.indexOf("message")>=0||keys.indexOf("description")>=0)){return formatError(value)}if(keys.length===0){if(isFunction(value)){var name=value.name?": "+value.name:"";return ctx.stylize("[Function"+name+"]","special")}if(isRegExp(value)){return ctx.stylize(RegExp.prototype.toString.call(value),"regexp")}if(isDate(value)){return ctx.stylize(Date.prototype.toString.call(value),"date")}if(isError(value)){return formatError(value)}}var base="",array=false,braces=["{","}"];if(isArray(value)){array=true;braces=["[","]"]}if(isFunction(value)){var n=value.name?": "+value.name:"";base=" [Function"+n+"]"}if(isRegExp(value)){base=" "+RegExp.prototype.toString.call(value)}if(isDate(value)){base=" "+Date.prototype.toUTCString.call(value)}if(isError(value)){base=" "+formatError(value)}if(keys.length===0&&(!array||value.length==0)){return braces[0]+base+braces[1]}if(recurseTimes<0){if(isRegExp(value)){return ctx.stylize(RegExp.prototype.toString.call(value),"regexp")}else{return ctx.stylize("[Object]","special")}}ctx.seen.push(value);var output;if(array){output=formatArray(ctx,value,recurseTimes,visibleKeys,keys)}else{output=keys.map(function(key){return formatProperty(ctx,value,recurseTimes,visibleKeys,key,array)})}ctx.seen.pop();return reduceToSingleString(output,base,braces)}function formatPrimitive(ctx,value){if(isUndefined(value))return ctx.stylize("undefined","undefined");if(isString(value)){var simple="'"+JSON.stringify(value).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return ctx.stylize(simple,"string")}if(isNumber(value))return ctx.stylize(""+value,"number");if(isBoolean(value))return ctx.stylize(""+value,"boolean");if(isNull(value))return ctx.stylize("null","null")}function formatError(value){return"["+Error.prototype.toString.call(value)+"]"}function formatArray(ctx,value,recurseTimes,visibleKeys,keys){var output=[];for(var i=0,l=value.length;i-1){if(array){str=str.split("\n").map(function(line){return" "+line}).join("\n").substr(2)}else{str="\n"+str.split("\n").map(function(line){return" "+line}).join("\n")}}}else{str=ctx.stylize("[Circular]","special")}}if(isUndefined(name)){if(array&&key.match(/^\d+$/)){return str}name=JSON.stringify(""+key);if(name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)){name=name.substr(1,name.length-2);name=ctx.stylize(name,"name")}else{name=name.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'");name=ctx.stylize(name,"string")}}return name+": "+str}function reduceToSingleString(output,base,braces){var numLinesEst=0;var length=output.reduce(function(prev,cur){numLinesEst++;if(cur.indexOf("\n")>=0)numLinesEst++;return prev+cur.replace(/\u001b\[\d\d?m/g,"").length+1},0);if(length>60){return braces[0]+(base===""?"":base+"\n ")+" "+output.join(",\n ")+" "+braces[1]}return braces[0]+base+" "+output.join(", ")+" "+braces[1]}function isArray(ar){return Array.isArray(ar)}exports.isArray=isArray;function isBoolean(arg){return typeof arg==="boolean"}exports.isBoolean=isBoolean;function isNull(arg){return arg===null}exports.isNull=isNull;function isNullOrUndefined(arg){return arg==null}exports.isNullOrUndefined=isNullOrUndefined;function isNumber(arg){return typeof arg==="number"}exports.isNumber=isNumber;function isString(arg){return typeof arg==="string"}exports.isString=isString;function isSymbol(arg){return typeof arg==="symbol"}exports.isSymbol=isSymbol;function isUndefined(arg){return arg===void 0}exports.isUndefined=isUndefined;function isRegExp(re){return isObject(re)&&objectToString(re)==="[object RegExp]"}exports.isRegExp=isRegExp;function isObject(arg){return typeof arg==="object"&&arg!==null}exports.isObject=isObject;function isDate(d){return isObject(d)&&objectToString(d)==="[object Date]"}exports.isDate=isDate;function isError(e){return isObject(e)&&(objectToString(e)==="[object Error]"||e instanceof Error)}exports.isError=isError;function isFunction(arg){return typeof arg==="function"}exports.isFunction=isFunction;function isPrimitive(arg){return arg===null||typeof arg==="boolean"||typeof arg==="number"||typeof arg==="string"||typeof arg==="symbol"||typeof arg==="undefined"}exports.isPrimitive=isPrimitive;exports.isBuffer=require("./support/isBuffer");function objectToString(o){return Object.prototype.toString.call(o)}function pad(n){return n<10?"0"+n.toString(10):n.toString(10)}var months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function timestamp(){var d=new Date;var time=[pad(d.getHours()),pad(d.getMinutes()),pad(d.getSeconds())].join(":");return[d.getDate(),months[d.getMonth()],time].join(" ")}exports.log=function(){console.log("%s - %s",timestamp(),exports.format.apply(exports,arguments))};exports.inherits=require("inherits");exports._extend=function(origin,add){if(!add||!isObject(add))return origin;var keys=Object.keys(add);var i=keys.length;while(i--){origin[keys[i]]=add[keys[i]]}return origin};function hasOwnProperty(obj,prop){return Object.prototype.hasOwnProperty.call(obj,prop)}}).call(this,require("_process"),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./support/isBuffer":"/data/github/geopackage-node/node_modules/browserify/node_modules/util/support/isBufferBrowser.js",_process:"/data/github/geopackage-node/node_modules/browserify/node_modules/process/browser.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/vm-browserify/index.js":[function(require,module,exports){var indexOf=require("indexof");var Object_keys=function(obj){if(Object.keys)return Object.keys(obj);else{var res=[];for(var key in obj)res.push(key);return res}};var forEach=function(xs,fn){if(xs.forEach)return xs.forEach(fn);else for(var i=0;i1)){return null}if(buf[0]===255&&buf[1]===216&&buf[2]===255){return{ext:"jpg",mime:"image/jpeg"}}if(buf[0]===137&&buf[1]===80&&buf[2]===78&&buf[3]===71){return{ext:"png",mime:"image/png"}}if(buf[0]===71&&buf[1]===73&&buf[2]===70){return{ext:"gif",mime:"image/gif"}}if(buf[8]===87&&buf[9]===69&&buf[10]===66&&buf[11]===80){return{ext:"webp",mime:"image/webp"}}if((buf[0]===73&&buf[1]===73&&buf[2]===42&&buf[3]===0||buf[0]===77&&buf[1]===77&&buf[2]===0&&buf[3]===42)&&buf[8]===67&&buf[9]===82){return{ext:"cr2",mime:"image/x-canon-cr2"}}if(buf[0]===73&&buf[1]===73&&buf[2]===42&&buf[3]===0||buf[0]===77&&buf[1]===77&&buf[2]===0&&buf[3]===42){return{ext:"tif",mime:"image/tiff"}}if(buf[0]===66&&buf[1]===77){return{ext:"bmp",mime:"image/bmp"}}if(buf[0]===73&&buf[1]===73&&buf[2]===188){return{ext:"jxr",mime:"image/vnd.ms-photo"}}if(buf[0]===56&&buf[1]===66&&buf[2]===80&&buf[3]===83){return{ext:"psd",mime:"image/vnd.adobe.photoshop"}}if(buf[0]===80&&buf[1]===75&&buf[2]===3&&buf[3]===4&&buf[30]===109&&buf[31]===105&&buf[32]===109&&buf[33]===101&&buf[34]===116&&buf[35]===121&&buf[36]===112&&buf[37]===101&&buf[38]===97&&buf[39]===112&&buf[40]===112&&buf[41]===108&&buf[42]===105&&buf[43]===99&&buf[44]===97&&buf[45]===116&&buf[46]===105&&buf[47]===111&&buf[48]===110&&buf[49]===47&&buf[50]===101&&buf[51]===112&&buf[52]===117&&buf[53]===98&&buf[54]===43&&buf[55]===122&&buf[56]===105&&buf[57]===112){return{ext:"epub",mime:"application/epub+zip"}}if(buf[0]===80&&buf[1]===75&&buf[2]===3&&buf[3]===4&&buf[30]===77&&buf[31]===69&&buf[32]===84&&buf[33]===65&&buf[34]===45&&buf[35]===73&&buf[36]===78&&buf[37]===70&&buf[38]===47&&buf[39]===109&&buf[40]===111&&buf[41]===122&&buf[42]===105&&buf[43]===108&&buf[44]===108&&buf[45]===97&&buf[46]===46&&buf[47]===114&&buf[48]===115&&buf[49]===97){return{ext:"xpi",mime:"application/x-xpinstall"}}if(buf[0]===80&&buf[1]===75&&(buf[2]===3||buf[2]===5||buf[2]===7)&&(buf[3]===4||buf[3]===6||buf[3]===8)){return{ext:"zip",mime:"application/zip"}}if(buf[257]===117&&buf[258]===115&&buf[259]===116&&buf[260]===97&&buf[261]===114){return{ext:"tar",mime:"application/x-tar"}}if(buf[0]===82&&buf[1]===97&&buf[2]===114&&buf[3]===33&&buf[4]===26&&buf[5]===7&&(buf[6]===0||buf[6]===1)){return{ext:"rar",mime:"application/x-rar-compressed"}}if(buf[0]===31&&buf[1]===139&&buf[2]===8){return{ext:"gz",mime:"application/gzip"}}if(buf[0]===66&&buf[1]===90&&buf[2]===104){return{ext:"bz2",mime:"application/x-bzip2"}}if(buf[0]===55&&buf[1]===122&&buf[2]===188&&buf[3]===175&&buf[4]===39&&buf[5]===28){return{ext:"7z",mime:"application/x-7z-compressed"}}if(buf[0]===120&&buf[1]===1){return{ext:"dmg",mime:"application/x-apple-diskimage"}}if(buf[0]===0&&buf[1]===0&&buf[2]===0&&(buf[3]===24||buf[3]===32)&&buf[4]===102&&buf[5]===116&&buf[6]===121&&buf[7]===112||buf[0]===51&&buf[1]===103&&buf[2]===112&&buf[3]===53||buf[0]===0&&buf[1]===0&&buf[2]===0&&buf[3]===28&&buf[4]===102&&buf[5]===116&&buf[6]===121&&buf[7]===112&&buf[8]===109&&buf[9]===112&&buf[10]===52&&buf[11]===50&&buf[16]===109&&buf[17]===112&&buf[18]===52&&buf[19]===49&&buf[20]===109&&buf[21]===112&&buf[22]===52&&buf[23]===50&&buf[24]===105&&buf[25]===115&&buf[26]===111&&buf[27]===109||buf[0]===0&&buf[1]===0&&buf[2]===0&&buf[3]===28&&buf[4]===102&&buf[5]===116&&buf[6]===121&&buf[7]===112&&buf[8]===105&&buf[9]===115&&buf[10]===111&&buf[11]===109||buf[0]===0&&buf[1]===0&&buf[2]===0&&buf[3]===28&&buf[4]===102&&buf[5]===116&&buf[6]===121&&buf[7]===112&&buf[8]===109&&buf[9]===112&&buf[10]===52&&buf[11]===50&&buf[12]===0&&buf[13]===0&&buf[14]===0&&buf[15]===0){return{ext:"mp4",mime:"video/mp4"}}if(buf[0]===0&&buf[1]===0&&buf[2]===0&&buf[3]===28&&buf[4]===102&&buf[5]===116&&buf[6]===121&&buf[7]===112&&buf[8]===77&&buf[9]===52&&buf[10]===86){return{ext:"m4v",mime:"video/x-m4v"}}if(buf[0]===77&&buf[1]===84&&buf[2]===104&&buf[3]===100){return{ext:"mid",mime:"audio/midi"}}if(buf[31]===109&&buf[32]===97&&buf[33]===116&&buf[34]===114&&buf[35]===111&&buf[36]===115&&buf[37]===107&&buf[38]===97){return{ext:"mkv",mime:"video/x-matroska"}}if(buf[0]===26&&buf[1]===69&&buf[2]===223&&buf[3]===163){return{ext:"webm",mime:"video/webm"}}if(buf[0]===0&&buf[1]===0&&buf[2]===0&&buf[3]===20&&buf[4]===102&&buf[5]===116&&buf[6]===121&&buf[7]===112){return{ext:"mov",mime:"video/quicktime"}}if(buf[0]===82&&buf[1]===73&&buf[2]===70&&buf[3]===70&&buf[8]===65&&buf[9]===86&&buf[10]===73){return{ext:"avi",mime:"video/x-msvideo"}}if(buf[0]===48&&buf[1]===38&&buf[2]===178&&buf[3]===117&&buf[4]===142&&buf[5]===102&&buf[6]===207&&buf[7]===17&&buf[8]===166&&buf[9]===217){return{ext:"wmv",mime:"video/x-ms-wmv"}}if(buf[0]===0&&buf[1]===0&&buf[2]===1&&buf[3].toString(16)[0]==="b"){return{ext:"mpg",mime:"video/mpeg"}}if(buf[0]===73&&buf[1]===68&&buf[2]===51||buf[0]===255&&buf[1]===251){return{ext:"mp3",mime:"audio/mpeg"}}if(buf[4]===102&&buf[5]===116&&buf[6]===121&&buf[7]===112&&buf[8]===77&&buf[9]===52&&buf[10]===65||buf[0]===77&&buf[1]===52&&buf[2]===65&&buf[3]===32){return{ext:"m4a",mime:"audio/m4a"}}if(buf[28]===79&&buf[29]===112&&buf[30]===117&&buf[31]===115&&buf[32]===72&&buf[33]===101&&buf[34]===97&&buf[35]===100){return{ext:"opus",mime:"audio/opus"}}if(buf[0]===79&&buf[1]===103&&buf[2]===103&&buf[3]===83){return{ext:"ogg",mime:"audio/ogg"}}if(buf[0]===102&&buf[1]===76&&buf[2]===97&&buf[3]===67){return{ext:"flac",mime:"audio/x-flac"}}if(buf[0]===82&&buf[1]===73&&buf[2]===70&&buf[3]===70&&buf[8]===87&&buf[9]===65&&buf[10]===86&&buf[11]===69){return{ext:"wav",mime:"audio/x-wav"}}if(buf[0]===35&&buf[1]===33&&buf[2]===65&&buf[3]===77&&buf[4]===82&&buf[5]===10){return{ext:"amr",mime:"audio/amr"}}if(buf[0]===37&&buf[1]===80&&buf[2]===68&&buf[3]===70){return{ext:"pdf",mime:"application/pdf"}}if(buf[0]===77&&buf[1]===90){return{ext:"exe",mime:"application/x-msdownload"}}if((buf[0]===67||buf[0]===70)&&buf[1]===87&&buf[2]===83){return{ext:"swf",mime:"application/x-shockwave-flash"}}if(buf[0]===123&&buf[1]===92&&buf[2]===114&&buf[3]===116&&buf[4]===102){return{ext:"rtf",mime:"application/rtf"}}if(buf[0]===119&&buf[1]===79&&buf[2]===70&&buf[3]===70&&(buf[4]===0&&buf[5]===1&&buf[6]===0&&buf[7]===0||buf[4]===79&&buf[5]===84&&buf[6]===84&&buf[7]===79)){return{ext:"woff",mime:"application/font-woff"}}if(buf[0]===119&&buf[1]===79&&buf[2]===70&&buf[3]===50&&(buf[4]===0&&buf[5]===1&&buf[6]===0&&buf[7]===0||buf[4]===79&&buf[5]===84&&buf[6]===84&&buf[7]===79)){return{ext:"woff2",mime:"application/font-woff"}}if(buf[34]===76&&buf[35]===80&&(buf[8]===0&&buf[9]===0&&buf[10]===1||buf[8]===1&&buf[9]===0&&buf[10]===2||buf[8]===2&&buf[9]===0&&buf[10]===2)){return{ext:"eot",mime:"application/octet-stream"}}if(buf[0]===0&&buf[1]===1&&buf[2]===0&&buf[3]===0&&buf[4]===0){return{ext:"ttf",mime:"application/font-sfnt"}}if(buf[0]===79&&buf[1]===84&&buf[2]===84&&buf[3]===79&&buf[4]===0){return{ext:"otf",mime:"application/font-sfnt"}}if(buf[0]===0&&buf[1]===0&&buf[2]===1&&buf[3]===0){return{ext:"ico",mime:"image/x-icon"}}if(buf[0]===70&&buf[1]===76&&buf[2]===86&&buf[3]===1){return{ext:"flv",mime:"video/x-flv"}}if(buf[0]===37&&buf[1]===33){return{ext:"ps",mime:"application/postscript"}}if(buf[0]===253&&buf[1]===55&&buf[2]===122&&buf[3]===88&&buf[4]===90&&buf[5]===0){return{ext:"xz",mime:"application/x-xz"}}if(buf[0]===83&&buf[1]===81&&buf[2]===76&&buf[3]===105){return{ext:"sqlite",mime:"application/x-sqlite3"}}if(buf[0]===78&&buf[1]===69&&buf[2]===83&&buf[3]===26){return{ext:"nes",mime:"application/x-nintendo-nes-rom"}}if(buf[0]===67&&buf[1]===114&&buf[2]===50&&buf[3]===52){return{ext:"crx",mime:"application/x-google-chrome-extension"}}if(buf[0]===77&&buf[1]===83&&buf[2]===67&&buf[3]===70||buf[0]===73&&buf[1]===83&&buf[2]===99&&buf[3]===40){return{ext:"cab",mime:"application/vnd.ms-cab-compressed"}}if(buf[0]===33&&buf[1]===60&&buf[2]===97&&buf[3]===114&&buf[4]===99&&buf[5]===104&&buf[6]===62&&buf[7]===10&&buf[8]===100&&buf[9]===101&&buf[10]===98&&buf[11]===105&&buf[12]===97&&buf[13]===110&&buf[14]===45&&buf[15]===98&&buf[16]===105&&buf[17]===110&&buf[18]===97&&buf[19]===114&&buf[20]===121){return{ext:"deb",mime:"application/x-deb"}}if(buf[0]===33&&buf[1]===60&&buf[2]===97&&buf[3]===114&&buf[4]===99&&buf[5]===104&&buf[6]===62){return{ext:"ar",mime:"application/x-unix-archive"}}if(buf[0]===237&&buf[1]===171&&buf[2]===238&&buf[3]===219){return{ext:"rpm",mime:"application/x-rpm"}}if(buf[0]===31&&buf[1]===160||buf[0]===31&&buf[1]===157){return{ext:"Z",mime:"application/x-compress"}}if(buf[0]===76&&buf[1]===90&&buf[2]===73&&buf[3]===80){return{ext:"lz",mime:"application/x-lzip"}}if(buf[0]===208&&buf[1]===207&&buf[2]===17&&buf[3]===224&&buf[4]===161&&buf[5]===177&&buf[6]===26&&buf[7]===225){return{ext:"msi",mime:"application/x-msi"}}return null}},{}],"/data/github/geopackage-node/node_modules/leaflet/dist/leaflet-src.js":[function(require,module,exports){(function(window,document,undefined){var oldL=window.L,L={};L.version="0.7.7";if(typeof module==="object"&&typeof module.exports==="object"){module.exports=L}else if(typeof define==="function"&&define.amd){define(L)}L.noConflict=function(){window.L=oldL;return this};window.L=L;L.Util={extend:function(dest){var sources=Array.prototype.slice.call(arguments,1),i,j,len,src;for(j=0,len=sources.length;j2?Array.prototype.slice.call(arguments,2):null;return function(){return fn.apply(obj,args||arguments)}},stamp:function(){var lastId=0,key="_leaflet_id";return function(obj){obj[key]=obj[key]||++lastId;return obj[key]}}(),invokeEach:function(obj,method,context){var i,args;if(typeof obj==="object"){args=Array.prototype.slice.call(arguments,3);for(i in obj){method.apply(context,[i,obj[i]].concat(args))}return true}return false},limitExecByInterval:function(fn,time,context){var lock,execOnUnlock;return function wrapperFn(){var args=arguments;if(lock){execOnUnlock=true;return}lock=true;setTimeout(function(){lock=false;if(execOnUnlock){wrapperFn.apply(context,args);execOnUnlock=false}},time);fn.apply(context,args)}},falseFn:function(){return false},formatNum:function(num,digits){var pow=Math.pow(10,digits||5);return Math.round(num*pow)/pow},trim:function(str){return str.trim?str.trim():str.replace(/^\s+|\s+$/g,"")},splitWords:function(str){return L.Util.trim(str).split(/\s+/)},setOptions:function(obj,options){obj.options=L.extend({},obj.options,options);return obj.options},getParamString:function(obj,existingUrl,uppercase){var params=[];for(var i in obj){params.push(encodeURIComponent(uppercase?i.toUpperCase():i)+"="+encodeURIComponent(obj[i]))}return(!existingUrl||existingUrl.indexOf("?")===-1?"?":"&")+params.join("&")},template:function(str,data){return str.replace(/\{ *([\w_]+) *\}/g,function(str,key){var value=data[key];if(value===undefined){throw new Error("No value provided for variable "+str)}else if(typeof value==="function"){value=value(data)}return value})},isArray:Array.isArray||function(obj){return Object.prototype.toString.call(obj)==="[object Array]"},emptyImageUrl:"data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="};(function(){function getPrefixed(name){var i,fn,prefixes=["webkit","moz","o","ms"];for(i=0;i0||type+"_idx"in events&&events[type+"_idx_len"]>0)},removeEventListener:function(types,fn,context){if(!this[eventsKey]){return this}if(!types){return this.clearAllEventListeners()}if(L.Util.invokeEach(types,this.removeEventListener,this,fn,context)){return this}var events=this[eventsKey],contextId=context&&context!==this&&L.stamp(context),i,len,type,listeners,j,indexKey,indexLenKey,typeIndex,removed;types=L.Util.splitWords(types);for(i=0,len=types.length;i=0;j--){if(listeners[j].action===fn&&(!context||listeners[j].context===context)){removed=listeners.splice(j,1);removed[0].action=L.Util.falseFn}}if(context&&typeIndex&&listeners.length===0){delete typeIndex[contextId];events[indexLenKey]--}}}}return this},clearAllEventListeners:function(){delete this[eventsKey];return this},fireEvent:function(type,data){if(!this.hasEventListeners(type)){return this}var event=L.Util.extend({},data,{type:type,target:this});var events=this[eventsKey],listeners,i,len,typeIndex,contextId;if(events[type]){listeners=events[type].slice();for(i=0,len=listeners.length;i1||"matchMedia"in window&&window.matchMedia("(min-resolution:144dpi)")&&window.matchMedia("(min-resolution:144dpi)").matches,doc=document.documentElement,ie3d=ie&&"transition"in doc.style,webkit3d="WebKitCSSMatrix"in window&&"m11"in new window.WebKitCSSMatrix&&!android23,gecko3d="MozPerspective"in doc.style,opera3d="OTransition"in doc.style,any3d=!window.L_DISABLE_3D&&(ie3d||webkit3d||gecko3d||opera3d)&&!phantomjs;var touch=!window.L_NO_TOUCH&&!phantomjs&&(pointer||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch);L.Browser={ie:ie,ielt9:ielt9,webkit:webkit,gecko:gecko&&!webkit&&!window.opera&&!ie,android:android,android23:android23,chrome:chrome,ie3d:ie3d,webkit3d:webkit3d,gecko3d:gecko3d,opera3d:opera3d,any3d:any3d,mobile:mobile,mobileWebkit:mobile&&webkit,mobileWebkit3d:mobile&&webkit3d,mobileOpera:mobile&&window.opera,touch:touch,msPointer:msPointer,pointer:pointer,retina:retina}})();L.Point=function(x,y,round){this.x=round?Math.round(x):x;this.y=round?Math.round(y):y};L.Point.prototype={clone:function(){return new L.Point(this.x,this.y)},add:function(point){return this.clone()._add(L.point(point))},_add:function(point){this.x+=point.x;this.y+=point.y;return this},subtract:function(point){return this.clone()._subtract(L.point(point))},_subtract:function(point){this.x-=point.x;this.y-=point.y;return this},divideBy:function(num){return this.clone()._divideBy(num)},_divideBy:function(num){this.x/=num;this.y/=num;return this},multiplyBy:function(num){return this.clone()._multiplyBy(num)},_multiplyBy:function(num){this.x*=num;this.y*=num;return this},round:function(){return this.clone()._round()},_round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this},floor:function(){return this.clone()._floor()},_floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);return this},distanceTo:function(point){point=L.point(point);var x=point.x-this.x,y=point.y-this.y;return Math.sqrt(x*x+y*y)},equals:function(point){point=L.point(point);return point.x===this.x&&point.y===this.y},contains:function(point){point=L.point(point);return Math.abs(point.x)<=Math.abs(this.x)&&Math.abs(point.y)<=Math.abs(this.y)},toString:function(){return"Point("+L.Util.formatNum(this.x)+", "+L.Util.formatNum(this.y)+")"}};L.point=function(x,y,round){if(x instanceof L.Point){return x}if(L.Util.isArray(x)){return new L.Point(x[0],x[1])}if(x===undefined||x===null){return x}return new L.Point(x,y,round)};L.Bounds=function(a,b){if(!a){return}var points=b?[a,b]:a;for(var i=0,len=points.length;i=this.min.x&&max.x<=this.max.x&&min.y>=this.min.y&&max.y<=this.max.y},intersects:function(bounds){bounds=L.bounds(bounds);var min=this.min,max=this.max,min2=bounds.min,max2=bounds.max,xIntersects=max2.x>=min.x&&min2.x<=max.x,yIntersects=max2.y>=min.y&&min2.y<=max.y;return xIntersects&&yIntersects},isValid:function(){return!!(this.min&&this.max)}};L.bounds=function(a,b){if(!a||a instanceof L.Bounds){return a}return new L.Bounds(a,b)};L.Transformation=function(a,b,c,d){this._a=a;this._b=b;this._c=c;this._d=d};L.Transformation.prototype={transform:function(point,scale){return this._transform(point.clone(),scale)},_transform:function(point,scale){scale=scale||1;point.x=scale*(this._a*point.x+this._b);point.y=scale*(this._c*point.y+this._d);return point},untransform:function(point,scale){scale=scale||1;return new L.Point((point.x/scale-this._b)/this._a,(point.y/scale-this._d)/this._c)}};L.DomUtil={get:function(id){return typeof id==="string"?document.getElementById(id):id},getStyle:function(el,style){var value=el.style[style];if(!value&&el.currentStyle){value=el.currentStyle[style]}if((!value||value==="auto")&&document.defaultView){var css=document.defaultView.getComputedStyle(el,null);value=css?css[style]:null}return value==="auto"?null:value},getViewportOffset:function(element){var top=0,left=0,el=element,docBody=document.body,docEl=document.documentElement,pos;do{top+=el.offsetTop||0;left+=el.offsetLeft||0;top+=parseInt(L.DomUtil.getStyle(el,"borderTopWidth"),10)||0;left+=parseInt(L.DomUtil.getStyle(el,"borderLeftWidth"),10)||0;pos=L.DomUtil.getStyle(el,"position");if(el.offsetParent===docBody&&pos==="absolute"){break}if(pos==="fixed"){top+=docBody.scrollTop||docEl.scrollTop||0;left+=docBody.scrollLeft||docEl.scrollLeft||0;break}if(pos==="relative"&&!el.offsetLeft){var width=L.DomUtil.getStyle(el,"width"),maxWidth=L.DomUtil.getStyle(el,"max-width"),r=el.getBoundingClientRect();if(width!=="none"||maxWidth!=="none"){left+=r.left+el.clientLeft}top+=r.top+(docBody.scrollTop||docEl.scrollTop||0);break}el=el.offsetParent}while(el);el=element;do{if(el===docBody){break}top-=el.scrollTop||0;left-=el.scrollLeft||0;el=el.parentNode}while(el);return new L.Point(left,top)},documentIsLtr:function(){if(!L.DomUtil._docIsLtrCached){L.DomUtil._docIsLtrCached=true;L.DomUtil._docIsLtr=L.DomUtil.getStyle(document.body,"direction")==="ltr"}return L.DomUtil._docIsLtr},create:function(tagName,className,container){var el=document.createElement(tagName);el.className=className;if(container){container.appendChild(el)}return el},hasClass:function(el,name){if(el.classList!==undefined){return el.classList.contains(name)}var className=L.DomUtil._getClass(el);return className.length>0&&new RegExp("(^|\\s)"+name+"(\\s|$)").test(className)},addClass:function(el,name){if(el.classList!==undefined){var classes=L.Util.splitWords(name);for(var i=0,len=classes.length;i=sw.lat&&ne2.lat<=ne.lat&&sw2.lng>=sw.lng&&ne2.lng<=ne.lng},intersects:function(bounds){bounds=L.latLngBounds(bounds);var sw=this._southWest,ne=this._northEast,sw2=bounds.getSouthWest(),ne2=bounds.getNorthEast(),latIntersects=ne2.lat>=sw.lat&&sw2.lat<=ne.lat,lngIntersects=ne2.lng>=sw.lng&&sw2.lng<=ne.lng;return latIntersects&&lngIntersects},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(bounds){if(!bounds){return false}bounds=L.latLngBounds(bounds);return this._southWest.equals(bounds.getSouthWest())&&this._northEast.equals(bounds.getNorthEast())},isValid:function(){return!!(this._southWest&&this._northEast)}};L.latLngBounds=function(a,b){if(!a||a instanceof L.LatLngBounds){return a}return new L.LatLngBounds(a,b)};L.Projection={};L.Projection.SphericalMercator={MAX_LATITUDE:85.0511287798,project:function(latlng){var d=L.LatLng.DEG_TO_RAD,max=this.MAX_LATITUDE,lat=Math.max(Math.min(max,latlng.lat),-max),x=latlng.lng*d,y=lat*d;y=Math.log(Math.tan(Math.PI/4+y/2));return new L.Point(x,y)},unproject:function(point){var d=L.LatLng.RAD_TO_DEG,lng=point.x*d,lat=(2*Math.atan(Math.exp(point.y))-Math.PI/2)*d;return new L.LatLng(lat,lng)}};L.Projection.LonLat={project:function(latlng){return new L.Point(latlng.lng,latlng.lat)},unproject:function(point){return new L.LatLng(point.y,point.x)}};L.CRS={latLngToPoint:function(latlng,zoom){var projectedPoint=this.projection.project(latlng),scale=this.scale(zoom);return this.transformation._transform(projectedPoint,scale)},pointToLatLng:function(point,zoom){var scale=this.scale(zoom),untransformedPoint=this.transformation.untransform(point,scale);return this.projection.unproject(untransformedPoint)},project:function(latlng){return this.projection.project(latlng)},scale:function(zoom){return 256*Math.pow(2,zoom)},getSize:function(zoom){var s=this.scale(zoom);return L.point(s,s)}};L.CRS.Simple=L.extend({},L.CRS,{projection:L.Projection.LonLat,transformation:new L.Transformation(1,0,-1,0),scale:function(zoom){return Math.pow(2,zoom)}});L.CRS.EPSG3857=L.extend({},L.CRS,{code:"EPSG:3857",projection:L.Projection.SphericalMercator,transformation:new L.Transformation(.5/Math.PI,.5,-.5/Math.PI,.5),project:function(latlng){var projectedPoint=this.projection.project(latlng),earthRadius=6378137;return projectedPoint.multiplyBy(earthRadius)}});L.CRS.EPSG900913=L.extend({},L.CRS.EPSG3857,{code:"EPSG:900913"});L.CRS.EPSG4326=L.extend({},L.CRS,{code:"EPSG:4326",projection:L.Projection.LonLat,transformation:new L.Transformation(1/360,.5,-1/360,.5)});L.Map=L.Class.extend({includes:L.Mixin.Events,options:{crs:L.CRS.EPSG3857,fadeAnimation:L.DomUtil.TRANSITION&&!L.Browser.android23,trackResize:true,markerZoomAnimation:L.DomUtil.TRANSITION&&L.Browser.any3d},initialize:function(id,options){options=L.setOptions(this,options);this._initContainer(id);this._initLayout();this._onResize=L.bind(this._onResize,this);this._initEvents();if(options.maxBounds){this.setMaxBounds(options.maxBounds)}if(options.center&&options.zoom!==undefined){this.setView(L.latLng(options.center),options.zoom,{reset:true})}this._handlers=[];this._layers={};this._zoomBoundLayers={};this._tileLayersNum=0;this.callInitHooks();this._addLayers(options.layers)},setView:function(center,zoom){zoom=zoom===undefined?this.getZoom():zoom;this._resetView(L.latLng(center),this._limitZoom(zoom));return this},setZoom:function(zoom,options){if(!this._loaded){this._zoom=this._limitZoom(zoom);return this}return this.setView(this.getCenter(),zoom,{zoom:options})},zoomIn:function(delta,options){return this.setZoom(this._zoom+(delta||1),options)},zoomOut:function(delta,options){return this.setZoom(this._zoom-(delta||1),options)},setZoomAround:function(latlng,zoom,options){var scale=this.getZoomScale(zoom),viewHalf=this.getSize().divideBy(2),containerPoint=latlng instanceof L.Point?latlng:this.latLngToContainerPoint(latlng),centerOffset=containerPoint.subtract(viewHalf).multiplyBy(1-1/scale),newCenter=this.containerPointToLatLng(viewHalf.add(centerOffset));return this.setView(newCenter,zoom,{zoom:options})},fitBounds:function(bounds,options){options=options||{};bounds=bounds.getBounds?bounds.getBounds():L.latLngBounds(bounds);var paddingTL=L.point(options.paddingTopLeft||options.padding||[0,0]),paddingBR=L.point(options.paddingBottomRight||options.padding||[0,0]),zoom=this.getBoundsZoom(bounds,false,paddingTL.add(paddingBR));zoom=options.maxZoom?Math.min(options.maxZoom,zoom):zoom;var paddingOffset=paddingBR.subtract(paddingTL).divideBy(2),swPoint=this.project(bounds.getSouthWest(),zoom),nePoint=this.project(bounds.getNorthEast(),zoom),center=this.unproject(swPoint.add(nePoint).divideBy(2).add(paddingOffset),zoom);return this.setView(center,zoom,options)},fitWorld:function(options){return this.fitBounds([[-90,-180],[90,180]],options)},panTo:function(center,options){return this.setView(center,this._zoom,{pan:options})},panBy:function(offset){this.fire("movestart");this._rawPanBy(L.point(offset));this.fire("move");return this.fire("moveend")},setMaxBounds:function(bounds){bounds=L.latLngBounds(bounds);this.options.maxBounds=bounds;if(!bounds){return this.off("moveend",this._panInsideMaxBounds,this)}if(this._loaded){this._panInsideMaxBounds()}return this.on("moveend",this._panInsideMaxBounds,this)},panInsideBounds:function(bounds,options){var center=this.getCenter(),newCenter=this._limitCenter(center,this._zoom,bounds);if(center.equals(newCenter)){return this}return this.panTo(newCenter,options)},addLayer:function(layer){var id=L.stamp(layer);if(this._layers[id]){return this}this._layers[id]=layer;if(layer.options&&(!isNaN(layer.options.maxZoom)||!isNaN(layer.options.minZoom))){this._zoomBoundLayers[id]=layer;this._updateZoomLevels()}if(this.options.zoomAnimation&&L.TileLayer&&layer instanceof L.TileLayer){this._tileLayersNum++;this._tileLayersToLoad++;layer.on("load",this._onTileLayerLoad,this)}if(this._loaded){this._layerAdd(layer)}return this},removeLayer:function(layer){var id=L.stamp(layer);if(!this._layers[id]){return this}if(this._loaded){layer.onRemove(this)}delete this._layers[id];if(this._loaded){this.fire("layerremove",{layer:layer})}if(this._zoomBoundLayers[id]){delete this._zoomBoundLayers[id];this._updateZoomLevels()}if(this.options.zoomAnimation&&L.TileLayer&&layer instanceof L.TileLayer){this._tileLayersNum--;this._tileLayersToLoad--;layer.off("load",this._onTileLayerLoad,this)}return this},hasLayer:function(layer){if(!layer){return false}return L.stamp(layer)in this._layers},eachLayer:function(method,context){for(var i in this._layers){method.call(context,this._layers[i])}return this},invalidateSize:function(options){if(!this._loaded){return this}options=L.extend({animate:false,pan:true},options===true?{animate:true}:options);var oldSize=this.getSize();this._sizeChanged=true;this._initialCenter=null;var newSize=this.getSize(),oldCenter=oldSize.divideBy(2).round(),newCenter=newSize.divideBy(2).round(),offset=oldCenter.subtract(newCenter);if(!offset.x&&!offset.y){return this}if(options.animate&&options.pan){this.panBy(offset)}else{if(options.pan){this._rawPanBy(offset)}this.fire("move");if(options.debounceMoveend){clearTimeout(this._sizeTimer);this._sizeTimer=setTimeout(L.bind(this.fire,this,"moveend"),200)}else{this.fire("moveend")}}return this.fire("resize",{oldSize:oldSize,newSize:newSize})},addHandler:function(name,HandlerClass){if(!HandlerClass){return this}var handler=this[name]=new HandlerClass(this);this._handlers.push(handler);if(this.options[name]){handler.enable()}return this},remove:function(){if(this._loaded){this.fire("unload")}this._initEvents("off");try{delete this._container._leaflet}catch(e){this._container._leaflet=undefined}this._clearPanes();if(this._clearControlPos){this._clearControlPos()}this._clearHandlers();return this},getCenter:function(){this._checkIfLoaded();if(this._initialCenter&&!this._moved()){return this._initialCenter}return this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var bounds=this.getPixelBounds(),sw=this.unproject(bounds.getBottomLeft()),ne=this.unproject(bounds.getTopRight());return new L.LatLngBounds(sw,ne)},getMinZoom:function(){return this.options.minZoom===undefined?this._layersMinZoom===undefined?0:this._layersMinZoom:this.options.minZoom},getMaxZoom:function(){return this.options.maxZoom===undefined?this._layersMaxZoom===undefined?Infinity:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(bounds,inside,padding){bounds=L.latLngBounds(bounds);var zoom=this.getMinZoom()-(inside?1:0),maxZoom=this.getMaxZoom(),size=this.getSize(),nw=bounds.getNorthWest(),se=bounds.getSouthEast(),zoomNotFound=true,boundsSize;padding=L.point(padding||[0,0]);do{zoom++;boundsSize=this.project(se,zoom).subtract(this.project(nw,zoom)).add(padding);zoomNotFound=!inside?size.contains(boundsSize):boundsSize.x0?Math.round(left-right)/2:Math.max(0,Math.ceil(left))-Math.max(0,Math.floor(right))},_limitZoom:function(zoom){var min=this.getMinZoom(),max=this.getMaxZoom();return Math.max(min,Math.min(max,zoom))}});L.map=function(id,options){return new L.Map(id,options)};L.Projection.Mercator={MAX_LATITUDE:85.0840591556,R_MINOR:6356752.314245179,R_MAJOR:6378137,project:function(latlng){var d=L.LatLng.DEG_TO_RAD,max=this.MAX_LATITUDE,lat=Math.max(Math.min(max,latlng.lat),-max),r=this.R_MAJOR,r2=this.R_MINOR,x=latlng.lng*d*r,y=lat*d,tmp=r2/r,eccent=Math.sqrt(1-tmp*tmp),con=eccent*Math.sin(y);con=Math.pow((1-con)/(1+con),eccent*.5);var ts=Math.tan(.5*(Math.PI*.5-y))/con;y=-r*Math.log(ts);return new L.Point(x,y)},unproject:function(point){var d=L.LatLng.RAD_TO_DEG,r=this.R_MAJOR,r2=this.R_MINOR,lng=point.x*d/r,tmp=r2/r,eccent=Math.sqrt(1-tmp*tmp),ts=Math.exp(-point.y/r),phi=Math.PI/2-2*Math.atan(ts),numIter=15,tol=1e-7,i=numIter,dphi=.1,con;while(Math.abs(dphi)>tol&&--i>0){con=eccent*Math.sin(phi);dphi=Math.PI/2-2*Math.atan(ts*Math.pow((1-con)/(1+con),.5*eccent))-phi;phi+=dphi}return new L.LatLng(phi*d,lng)}};L.CRS.EPSG3395=L.extend({},L.CRS,{code:"EPSG:3395",projection:L.Projection.Mercator,transformation:function(){var m=L.Projection.Mercator,r=m.R_MAJOR,scale=.5/(Math.PI*r);return new L.Transformation(scale,.5,-scale,.5)}()});L.TileLayer=L.Class.extend({includes:L.Mixin.Events,options:{minZoom:0,maxZoom:18,tileSize:256,subdomains:"abc",errorTileUrl:"",attribution:"",zoomOffset:0,opacity:1,unloadInvisibleTiles:L.Browser.mobile,updateWhenIdle:L.Browser.mobile},initialize:function(url,options){options=L.setOptions(this,options);if(options.detectRetina&&L.Browser.retina&&options.maxZoom>0){options.tileSize=Math.floor(options.tileSize/2);options.zoomOffset++;if(options.minZoom>0){options.minZoom--}this.options.maxZoom--}if(options.bounds){options.bounds=L.latLngBounds(options.bounds)}this._url=url;var subdomains=this.options.subdomains;if(typeof subdomains==="string"){this.options.subdomains=subdomains.split("")}},onAdd:function(map){this._map=map;this._animated=map._zoomAnimated;this._initContainer();map.on({viewreset:this._reset,moveend:this._update},this);if(this._animated){map.on({zoomanim:this._animateZoom,zoomend:this._endZoomAnim},this)}if(!this.options.updateWhenIdle){this._limitedUpdate=L.Util.limitExecByInterval(this._update,150,this);map.on("move",this._limitedUpdate,this)}this._reset();this._update()},addTo:function(map){map.addLayer(this);return this},onRemove:function(map){this._container.parentNode.removeChild(this._container);map.off({viewreset:this._reset,moveend:this._update},this);if(this._animated){map.off({zoomanim:this._animateZoom,zoomend:this._endZoomAnim},this)}if(!this.options.updateWhenIdle){map.off("move",this._limitedUpdate,this)}this._container=null;this._map=null},bringToFront:function(){var pane=this._map._panes.tilePane;if(this._container){pane.appendChild(this._container);this._setAutoZIndex(pane,Math.max)}return this},bringToBack:function(){var pane=this._map._panes.tilePane;if(this._container){pane.insertBefore(this._container,pane.firstChild);this._setAutoZIndex(pane,Math.min)}return this},getAttribution:function(){return this.options.attribution},getContainer:function(){return this._container},setOpacity:function(opacity){this.options.opacity=opacity;if(this._map){this._updateOpacity()}return this},setZIndex:function(zIndex){this.options.zIndex=zIndex;this._updateZIndex();return this},setUrl:function(url,noRedraw){this._url=url;if(!noRedraw){this.redraw()}return this},redraw:function(){if(this._map){this._reset({hard:true});this._update()}return this},_updateZIndex:function(){if(this._container&&this.options.zIndex!==undefined){this._container.style.zIndex=this.options.zIndex}},_setAutoZIndex:function(pane,compare){var layers=pane.children,edgeZIndex=-compare(Infinity,-Infinity),zIndex,i,len;for(i=0,len=layers.length;izoomN){tileSize=Math.round(map.getZoomScale(zoom)/map.getZoomScale(zoomN)*tileSize)}return tileSize},_update:function(){if(!this._map){return}var map=this._map,bounds=map.getPixelBounds(),zoom=map.getZoom(),tileSize=this._getTileSize();if(zoom>this.options.maxZoom||zoom=limit.x)||tilePoint.y<0||tilePoint.y>=limit.y){return false}}if(options.bounds){var tileSize=this._getTileSize(),nwPoint=tilePoint.multiplyBy(tileSize),sePoint=nwPoint.add([tileSize,tileSize]),nw=this._map.unproject(nwPoint),se=this._map.unproject(sePoint);if(!options.continuousWorld&&!options.noWrap){nw=nw.wrap();se=se.wrap()}if(!options.bounds.intersects([nw,se])){return false}}return true},_removeOtherTiles:function(bounds){var kArr,x,y,key;for(key in this._tiles){kArr=key.split(":");x=parseInt(kArr[0],10);y=parseInt(kArr[1],10);if(xbounds.max.x||ybounds.max.y){this._removeTile(key)}}},_removeTile:function(key){var tile=this._tiles[key];this.fire("tileunload",{tile:tile,url:tile.src});if(this.options.reuseTiles){L.DomUtil.removeClass(tile,"leaflet-tile-loaded");this._unusedTiles.push(tile)}else if(tile.parentNode===this._tileContainer){this._tileContainer.removeChild(tile)}if(!L.Browser.android){tile.onload=null;tile.src=L.Util.emptyImageUrl}delete this._tiles[key]},_addTile:function(tilePoint,container){var tilePos=this._getTilePos(tilePoint);var tile=this._getTile();L.DomUtil.setPosition(tile,tilePos,L.Browser.chrome);this._tiles[tilePoint.x+":"+tilePoint.y]=tile;this._loadTile(tile,tilePoint);if(tile.parentNode!==this._tileContainer){container.appendChild(tile)}},_getZoomForUrl:function(){var options=this.options,zoom=this._map.getZoom();if(options.zoomReverse){zoom=options.maxZoom-zoom}zoom+=options.zoomOffset;return options.maxNativeZoom?Math.min(zoom,options.maxNativeZoom):zoom},_getTilePos:function(tilePoint){var origin=this._map.getPixelOrigin(),tileSize=this._getTileSize();return tilePoint.multiplyBy(tileSize).subtract(origin)},getTileUrl:function(tilePoint){return L.Util.template(this._url,L.extend({s:this._getSubdomain(tilePoint),z:tilePoint.z,x:tilePoint.x,y:tilePoint.y},this.options))},_getWrapTileNum:function(){var crs=this._map.options.crs,size=crs.getSize(this._map.getZoom());return size.divideBy(this._getTileSize())._floor()},_adjustTilePoint:function(tilePoint){var limit=this._getWrapTileNum();if(!this.options.continuousWorld&&!this.options.noWrap){tilePoint.x=(tilePoint.x%limit.x+limit.x)%limit.x}if(this.options.tms){tilePoint.y=limit.y-tilePoint.y-1}tilePoint.z=this._getZoomForUrl()},_getSubdomain:function(tilePoint){var index=Math.abs(tilePoint.x+tilePoint.y)%this.options.subdomains.length;return this.options.subdomains[index]},_getTile:function(){if(this.options.reuseTiles&&this._unusedTiles.length>0){var tile=this._unusedTiles.pop();this._resetTile(tile);return tile}return this._createTile()},_resetTile:function(){},_createTile:function(){var tile=L.DomUtil.create("img","leaflet-tile");tile.style.width=tile.style.height=this._getTileSize()+"px";tile.galleryimg="no";tile.onselectstart=tile.onmousemove=L.Util.falseFn;if(L.Browser.ielt9&&this.options.opacity!==undefined){L.DomUtil.setOpacity(tile,this.options.opacity)}if(L.Browser.mobileWebkit3d){tile.style.WebkitBackfaceVisibility="hidden"}return tile},_loadTile:function(tile,tilePoint){tile._layer=this;tile.onload=this._tileOnLoad;tile.onerror=this._tileOnError;this._adjustTilePoint(tilePoint);tile.src=this.getTileUrl(tilePoint);this.fire("tileloadstart",{tile:tile,url:tile.src})},_tileLoaded:function(){this._tilesToLoad--;if(this._animated){L.DomUtil.addClass(this._tileContainer,"leaflet-zoom-animated")}if(!this._tilesToLoad){this.fire("load");if(this._animated){clearTimeout(this._clearBgBufferTimer);this._clearBgBufferTimer=setTimeout(L.bind(this._clearBgBuffer,this),500)}}},_tileOnLoad:function(){var layer=this._layer;if(this.src!==L.Util.emptyImageUrl){L.DomUtil.addClass(this,"leaflet-tile-loaded");layer.fire("tileload",{tile:this,url:this.src})}layer._tileLoaded()},_tileOnError:function(){var layer=this._layer;layer.fire("tileerror",{tile:this,url:this.src});var newUrl=layer.options.errorTileUrl;if(newUrl){this.src=newUrl}layer._tileLoaded()}});L.tileLayer=function(url,options){return new L.TileLayer(url,options)};L.TileLayer.WMS=L.TileLayer.extend({defaultWmsParams:{service:"WMS",request:"GetMap",version:"1.1.1",layers:"",styles:"",format:"image/jpeg",transparent:false},initialize:function(url,options){this._url=url;var wmsParams=L.extend({},this.defaultWmsParams),tileSize=options.tileSize||this.options.tileSize;if(options.detectRetina&&L.Browser.retina){wmsParams.width=wmsParams.height=tileSize*2}else{wmsParams.width=wmsParams.height=tileSize}for(var i in options){if(!this.options.hasOwnProperty(i)&&i!=="crs"){wmsParams[i]=options[i]}}this.wmsParams=wmsParams;L.setOptions(this,options)},onAdd:function(map){this._crs=this.options.crs||map.options.crs;this._wmsVersion=parseFloat(this.wmsParams.version);var projectionKey=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[projectionKey]=this._crs.code;L.TileLayer.prototype.onAdd.call(this,map)},getTileUrl:function(tilePoint){var map=this._map,tileSize=this.options.tileSize,nwPoint=tilePoint.multiplyBy(tileSize),sePoint=nwPoint.add([tileSize,tileSize]),nw=this._crs.project(map.unproject(nwPoint,tilePoint.z)),se=this._crs.project(map.unproject(sePoint,tilePoint.z)),bbox=this._wmsVersion>=1.3&&this._crs===L.CRS.EPSG4326?[se.y,nw.x,nw.y,se.x].join(","):[nw.x,se.y,se.x,nw.y].join(","),url=L.Util.template(this._url,{s:this._getSubdomain(tilePoint)});return url+L.Util.getParamString(this.wmsParams,url,true)+"&BBOX="+bbox},setParams:function(params,noRedraw){L.extend(this.wmsParams,params);if(!noRedraw){this.redraw()}return this}});L.tileLayer.wms=function(url,options){return new L.TileLayer.WMS(url,options)};L.TileLayer.Canvas=L.TileLayer.extend({options:{async:false},initialize:function(options){L.setOptions(this,options)},redraw:function(){if(this._map){this._reset({hard:true});this._update()}for(var i in this._tiles){this._redrawTile(this._tiles[i])}return this},_redrawTile:function(tile){this.drawTile(tile,tile._tilePoint,this._map._zoom)},_createTile:function(){var tile=L.DomUtil.create("canvas","leaflet-tile");tile.width=tile.height=this.options.tileSize;tile.onselectstart=tile.onmousemove=L.Util.falseFn;return tile},_loadTile:function(tile,tilePoint){tile._layer=this;tile._tilePoint=tilePoint;this._redrawTile(tile);if(!this.options.async){this.tileDrawn(tile)}},drawTile:function(){},tileDrawn:function(tile){this._tileOnLoad.call(tile)}});L.tileLayer.canvas=function(options){return new L.TileLayer.Canvas(options)};L.ImageOverlay=L.Class.extend({includes:L.Mixin.Events,options:{opacity:1},initialize:function(url,bounds,options){this._url=url;this._bounds=L.latLngBounds(bounds);L.setOptions(this,options)},onAdd:function(map){this._map=map;if(!this._image){this._initImage()}map._panes.overlayPane.appendChild(this._image);map.on("viewreset",this._reset,this);if(map.options.zoomAnimation&&L.Browser.any3d){map.on("zoomanim",this._animateZoom,this)}this._reset()},onRemove:function(map){map.getPanes().overlayPane.removeChild(this._image);map.off("viewreset",this._reset,this);if(map.options.zoomAnimation){map.off("zoomanim",this._animateZoom,this)}},addTo:function(map){map.addLayer(this);return this},setOpacity:function(opacity){this.options.opacity=opacity;this._updateOpacity();return this},bringToFront:function(){if(this._image){this._map._panes.overlayPane.appendChild(this._image)}return this},bringToBack:function(){var pane=this._map._panes.overlayPane;if(this._image){pane.insertBefore(this._image,pane.firstChild)}return this},setUrl:function(url){this._url=url;this._image.src=this._url},getAttribution:function(){return this.options.attribution},_initImage:function(){this._image=L.DomUtil.create("img","leaflet-image-layer");if(this._map.options.zoomAnimation&&L.Browser.any3d){L.DomUtil.addClass(this._image,"leaflet-zoom-animated")}else{L.DomUtil.addClass(this._image,"leaflet-zoom-hide")}this._updateOpacity();L.extend(this._image,{galleryimg:"no",onselectstart:L.Util.falseFn,onmousemove:L.Util.falseFn,onload:L.bind(this._onImageLoad,this),src:this._url})},_animateZoom:function(e){var map=this._map,image=this._image,scale=map.getZoomScale(e.zoom),nw=this._bounds.getNorthWest(),se=this._bounds.getSouthEast(),topLeft=map._latLngToNewLayerPoint(nw,e.zoom,e.center),size=map._latLngToNewLayerPoint(se,e.zoom,e.center)._subtract(topLeft),origin=topLeft._add(size._multiplyBy(1/2*(1-1/scale)));image.style[L.DomUtil.TRANSFORM]=L.DomUtil.getTranslateString(origin)+" scale("+scale+") "},_reset:function(){var image=this._image,topLeft=this._map.latLngToLayerPoint(this._bounds.getNorthWest()),size=this._map.latLngToLayerPoint(this._bounds.getSouthEast())._subtract(topLeft);L.DomUtil.setPosition(image,topLeft);image.style.width=size.x+"px";image.style.height=size.y+"px"},_onImageLoad:function(){this.fire("load")},_updateOpacity:function(){L.DomUtil.setOpacity(this._image,this.options.opacity)}});L.imageOverlay=function(url,bounds,options){return new L.ImageOverlay(url,bounds,options)};L.Icon=L.Class.extend({options:{className:""},initialize:function(options){L.setOptions(this,options)},createIcon:function(oldIcon){return this._createIcon("icon",oldIcon)},createShadow:function(oldIcon){return this._createIcon("shadow",oldIcon)},_createIcon:function(name,oldIcon){var src=this._getIconUrl(name);if(!src){if(name==="icon"){throw new Error("iconUrl not set in Icon options (see the docs).")}return null}var img;if(!oldIcon||oldIcon.tagName!=="IMG"){img=this._createImg(src)}else{img=this._createImg(src,oldIcon)}this._setIconStyles(img,name);return img},_setIconStyles:function(img,name){var options=this.options,size=L.point(options[name+"Size"]),anchor;if(name==="shadow"){anchor=L.point(options.shadowAnchor||options.iconAnchor)}else{anchor=L.point(options.iconAnchor)}if(!anchor&&size){anchor=size.divideBy(2,true)}img.className="leaflet-marker-"+name+" "+options.className;if(anchor){img.style.marginLeft=-anchor.x+"px";img.style.marginTop=-anchor.y+"px"}if(size){img.style.width=size.x+"px";img.style.height=size.y+"px"}},_createImg:function(src,el){el=el||document.createElement("img");el.src=src;return el},_getIconUrl:function(name){if(L.Browser.retina&&this.options[name+"RetinaUrl"]){return this.options[name+"RetinaUrl"]}return this.options[name+"Url"]}});L.icon=function(options){return new L.Icon(options)};L.Icon.Default=L.Icon.extend({options:{iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],shadowSize:[41,41]},_getIconUrl:function(name){var key=name+"Url";if(this.options[key]){return this.options[key]}if(L.Browser.retina&&name==="icon"){name+="-2x"}var path=L.Icon.Default.imagePath;if(!path){throw new Error("Couldn't autodetect L.Icon.Default.imagePath, set it manually.")}return path+"/marker-"+name+".png"}});L.Icon.Default.imagePath=function(){var scripts=document.getElementsByTagName("script"),leafletRe=/[\/^]leaflet[\-\._]?([\w\-\._]*)\.js\??/;var i,len,src,matches,path;for(i=0,len=scripts.length;imaxHeight){style.height=maxHeight+"px";L.DomUtil.addClass(container,scrolledClass)}else{L.DomUtil.removeClass(container,scrolledClass)}this._containerWidth=this._container.offsetWidth},_updatePosition:function(){if(!this._map){return}var pos=this._map.latLngToLayerPoint(this._latlng),animated=this._animated,offset=L.point(this.options.offset);if(animated){L.DomUtil.setPosition(this._container,pos)}this._containerBottom=-offset.y-(animated?0:pos.y);this._containerLeft=-Math.round(this._containerWidth/2)+offset.x+(animated?0:pos.x);this._container.style.bottom=this._containerBottom+"px";this._container.style.left=this._containerLeft+"px"},_zoomAnimation:function(opt){var pos=this._map._latLngToNewLayerPoint(this._latlng,opt.zoom,opt.center);L.DomUtil.setPosition(this._container,pos)},_adjustPan:function(){if(!this.options.autoPan){return}var map=this._map,containerHeight=this._container.offsetHeight,containerWidth=this._containerWidth,layerPos=new L.Point(this._containerLeft,-containerHeight-this._containerBottom);if(this._animated){layerPos._add(L.DomUtil.getPosition(this._container))}var containerPos=map.layerPointToContainerPoint(layerPos),padding=L.point(this.options.autoPanPadding),paddingTL=L.point(this.options.autoPanPaddingTopLeft||padding),paddingBR=L.point(this.options.autoPanPaddingBottomRight||padding),size=map.getSize(),dx=0,dy=0;if(containerPos.x+containerWidth+paddingBR.x>size.x){dx=containerPos.x+containerWidth-size.x+paddingBR.x}if(containerPos.x-dx-paddingTL.x<0){dx=containerPos.x-paddingTL.x}if(containerPos.y+containerHeight+paddingBR.y>size.y){dy=containerPos.y+containerHeight-size.y+paddingBR.y}if(containerPos.y-dy-paddingTL.y<0){dy=containerPos.y-paddingTL.y}if(dx||dy){map.fire("autopanstart").panBy([dx,dy])}},_onCloseButtonClick:function(e){this._close();L.DomEvent.stop(e)}});L.popup=function(options,source){return new L.Popup(options,source)};L.Map.include({openPopup:function(popup,latlng,options){this.closePopup();if(!(popup instanceof L.Popup)){var content=popup;popup=new L.Popup(options).setLatLng(latlng).setContent(content)}popup._isOpen=true;this._popup=popup;return this.addLayer(popup)},closePopup:function(popup){if(!popup||popup===this._popup){popup=this._popup;this._popup=null}if(popup){this.removeLayer(popup);popup._isOpen=false}return this}});L.Marker.include({openPopup:function(){if(this._popup&&this._map&&!this._map.hasLayer(this._popup)){this._popup.setLatLng(this._latlng);this._map.openPopup(this._popup)}return this},closePopup:function(){if(this._popup){this._popup._close()}return this},togglePopup:function(){if(this._popup){if(this._popup._isOpen){this.closePopup()}else{this.openPopup()}}return this},bindPopup:function(content,options){var anchor=L.point(this.options.icon.options.popupAnchor||[0,0]);anchor=anchor.add(L.Popup.prototype.options.offset);if(options&&options.offset){anchor=anchor.add(options.offset)}options=L.extend({offset:anchor},options);if(!this._popupHandlersAdded){this.on("click",this.togglePopup,this).on("remove",this.closePopup,this).on("move",this._movePopup,this);this._popupHandlersAdded=true}if(content instanceof L.Popup){L.setOptions(content,options);this._popup=content;content._source=this}else{this._popup=new L.Popup(options,this).setContent(content)}return this},setPopupContent:function(content){if(this._popup){this._popup.setContent(content)}return this},unbindPopup:function(){if(this._popup){this._popup=null;this.off("click",this.togglePopup,this).off("remove",this.closePopup,this).off("move",this._movePopup,this);this._popupHandlersAdded=false}return this},getPopup:function(){return this._popup},_movePopup:function(e){this._popup.setLatLng(e.latlng)}});L.LayerGroup=L.Class.extend({initialize:function(layers){this._layers={};var i,len;if(layers){for(i=0,len=layers.length;i';var shape=div.firstChild;shape.style.behavior="url(#default#VML)";return shape&&typeof shape.adj==="object"}catch(e){return false}}();L.Path=L.Browser.svg||!L.Browser.vml?L.Path:L.Path.extend({statics:{VML:true,CLIP_PADDING:.02},_createElement:function(){try{document.namespaces.add("lvml","urn:schemas-microsoft-com:vml");return function(name){return document.createElement("')}}catch(e){return function(name){return document.createElement("<"+name+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),_initPath:function(){var container=this._container=this._createElement("shape");L.DomUtil.addClass(container,"leaflet-vml-shape"+(this.options.className?" "+this.options.className:""));if(this.options.clickable){L.DomUtil.addClass(container,"leaflet-clickable")}container.coordsize="1 1";this._path=this._createElement("path");container.appendChild(this._path);this._map._pathRoot.appendChild(container)},_initStyle:function(){this._updateStyle()},_updateStyle:function(){var stroke=this._stroke,fill=this._fill,options=this.options,container=this._container;container.stroked=options.stroke;container.filled=options.fill;if(options.stroke){if(!stroke){stroke=this._stroke=this._createElement("stroke");stroke.endcap="round";container.appendChild(stroke)}stroke.weight=options.weight+"px";stroke.color=options.color;stroke.opacity=options.opacity;if(options.dashArray){stroke.dashStyle=L.Util.isArray(options.dashArray)?options.dashArray.join(" "):options.dashArray.replace(/( *, *)/g," ")}else{stroke.dashStyle=""}if(options.lineCap){stroke.endcap=options.lineCap.replace("butt","flat")}if(options.lineJoin){stroke.joinstyle=options.lineJoin}}else if(stroke){container.removeChild(stroke);this._stroke=null}if(options.fill){if(!fill){fill=this._fill=this._createElement("fill");container.appendChild(fill)}fill.color=options.fillColor||options.color;fill.opacity=options.fillOpacity}else if(fill){container.removeChild(fill);this._fill=null}},_updatePath:function(){var style=this._container.style;style.display="none";this._path.v=this.getPathString()+" ";style.display=""}});L.Map.include(L.Browser.svg||!L.Browser.vml?{}:{_initPathRoot:function(){if(this._pathRoot){return}var root=this._pathRoot=document.createElement("div");root.className="leaflet-vml-container";this._panes.overlayPane.appendChild(root);this.on("moveend",this._updatePathViewport);this._updatePathViewport()}});L.Browser.canvas=function(){return!!document.createElement("canvas").getContext}();L.Path=L.Path.SVG&&!window.L_PREFER_CANVAS||!L.Browser.canvas?L.Path:L.Path.extend({statics:{CANVAS:true,SVG:false},redraw:function(){if(this._map){this.projectLatlngs();this._requestUpdate()}return this},setStyle:function(style){L.setOptions(this,style);if(this._map){this._updateStyle();this._requestUpdate()}return this},onRemove:function(map){map.off("viewreset",this.projectLatlngs,this).off("moveend",this._updatePath,this);if(this.options.clickable){this._map.off("click",this._onClick,this);this._map.off("mousemove",this._onMouseMove,this)}this._requestUpdate();this.fire("remove");this._map=null},_requestUpdate:function(){if(this._map&&!L.Path._updateRequest){L.Path._updateRequest=L.Util.requestAnimFrame(this._fireMapMoveEnd,this._map)}},_fireMapMoveEnd:function(){L.Path._updateRequest=null;this.fire("moveend")},_initElements:function(){this._map._initPathRoot();this._ctx=this._map._canvasCtx},_updateStyle:function(){var options=this.options;if(options.stroke){this._ctx.lineWidth=options.weight;this._ctx.strokeStyle=options.color}if(options.fill){this._ctx.fillStyle=options.fillColor||options.color}if(options.lineCap){this._ctx.lineCap=options.lineCap}if(options.lineJoin){this._ctx.lineJoin=options.lineJoin}},_drawPath:function(){var i,j,len,len2,point,drawMethod;this._ctx.beginPath();for(i=0,len=this._parts.length;imaxSqDist){index=i;maxSqDist=sqDist}}if(maxSqDist>sqTolerance){markers[index]=1;this._simplifyDPStep(points,markers,sqTolerance,first,index);this._simplifyDPStep(points,markers,sqTolerance,index,last)}},_reducePoints:function(points,sqTolerance){var reducedPoints=[points[0]];for(var i=1,prev=0,len=points.length;isqTolerance){reducedPoints.push(points[i]);prev=i}}if(prevbounds.max.x){code|=2}if(p.ybounds.max.y){code|=8}return code},_sqDist:function(p1,p2){var dx=p2.x-p1.x,dy=p2.y-p1.y;return dx*dx+dy*dy},_sqClosestPointOnSegment:function(p,p1,p2,sqDist){var x=p1.x,y=p1.y,dx=p2.x-x,dy=p2.y-y,dot=dx*dx+dy*dy,t;if(dot>0){t=((p.x-x)*dx+(p.y-y)*dy)/dot;if(t>1){x=p2.x;y=p2.y}else if(t>0){x+=dx*t;y+=dy*t}}dx=p.x-x;dy=p.y-y;return sqDist?dx*dx+dy*dy:new L.Point(x,y)}};L.Polyline=L.Path.extend({initialize:function(latlngs,options){L.Path.prototype.initialize.call(this,options);this._latlngs=this._convertLatLngs(latlngs)},options:{smoothFactor:1,noClip:false},projectLatlngs:function(){this._originalPoints=[];for(var i=0,len=this._latlngs.length;i=2&&latlngs[0].equals(latlngs[latlngs.length-1])){latlngs.pop()}},projectLatlngs:function(){L.Polyline.prototype.projectLatlngs.call(this);this._holePoints=[];if(!this._holes){return}var i,j,len,len2;for(i=0,len=this._holes.length;ivp.max.x||p.y-r>vp.max.y||p.x+rp.y!==p2.y>p.y&&p.x<(p2.x-p1.x)*(p.y-p1.y)/(p2.y-p1.y)+p1.x){inside=!inside}}}return inside}});L.Circle.include(!L.Path.CANVAS?{}:{_drawPath:function(){var p=this._point;this._ctx.beginPath();this._ctx.arc(p.x,p.y,this._radius,0,Math.PI*2,false)},_containsPoint:function(p){var center=this._point,w2=this.options.stroke?this.options.weight/2:0;return p.distanceTo(center)<=this._radius+w2}});L.CircleMarker.include(!L.Path.CANVAS?{}:{_updateStyle:function(){L.Path.prototype._updateStyle.call(this)}});L.GeoJSON=L.FeatureGroup.extend({initialize:function(geojson,options){L.setOptions(this,options);this._layers={};if(geojson){this.addData(geojson)}},addData:function(geojson){var features=L.Util.isArray(geojson)?geojson:geojson.features,i,len,feature;if(features){for(i=0,len=features.length;i=0;i--){L.DomEvent.on(el,L.Draggable.START[i],stop)}return L.DomEvent.on(el,"click",L.DomEvent._fakeStop).on(el,"dblclick",stop)},preventDefault:function(e){if(e.preventDefault){e.preventDefault()}else{e.returnValue=false}return this},stop:function(e){return L.DomEvent.preventDefault(e).stopPropagation(e)},getMousePosition:function(e,container){if(!container){return new L.Point(e.clientX,e.clientY)}var rect=container.getBoundingClientRect();return new L.Point(e.clientX-rect.left-container.clientLeft,e.clientY-rect.top-container.clientTop)},getWheelDelta:function(e){var delta=0;if(e.wheelDelta){delta=e.wheelDelta/120}if(e.detail){delta=-e.detail/3}return delta},_skipEvents:{},_fakeStop:function(e){L.DomEvent._skipEvents[e.type]=true},_skipped:function(e){var skipped=this._skipEvents[e.type];this._skipEvents[e.type]=false;return skipped},_checkMouse:function(el,e){var related=e.relatedTarget;if(!related){return true}try{while(related&&related!==el){related=related.parentNode}}catch(err){return false}return related!==el},_getEvent:function(){var e=window.event;if(!e){var caller=arguments.callee.caller;while(caller){e=caller["arguments"][0];if(e&&window.Event===e.constructor){break}caller=caller.caller}}return e},_filterClick:function(e,handler){var timeStamp=e.timeStamp||e.originalEvent.timeStamp,elapsed=L.DomEvent._lastClick&&timeStamp-L.DomEvent._lastClick;if(elapsed&&elapsed>100&&elapsed<500||e.target._simulatedClick&&!e._simulated){L.DomEvent.stop(e);return}L.DomEvent._lastClick=timeStamp;return handler(e)}};L.DomEvent.on=L.DomEvent.addListener;L.DomEvent.off=L.DomEvent.removeListener;L.Draggable=L.Class.extend({includes:L.Mixin.Events,statics:{START:L.Browser.touch?["touchstart","mousedown"]:["mousedown"],END:{mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},MOVE:{mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"}},initialize:function(element,dragStartTarget){this._element=element;this._dragStartTarget=dragStartTarget||element},enable:function(){if(this._enabled){return}for(var i=L.Draggable.START.length-1;i>=0;i--){L.DomEvent.on(this._dragStartTarget,L.Draggable.START[i],this._onDown,this)}this._enabled=true},disable:function(){if(!this._enabled){return}for(var i=L.Draggable.START.length-1;i>=0;i--){L.DomEvent.off(this._dragStartTarget,L.Draggable.START[i],this._onDown,this)}this._enabled=false;this._moved=false},_onDown:function(e){this._moved=false;if(e.shiftKey||e.which!==1&&e.button!==1&&!e.touches){return}L.DomEvent.stopPropagation(e);if(L.Draggable._disabled){return}L.DomUtil.disableImageDrag();L.DomUtil.disableTextSelection();if(this._moving){return}var first=e.touches?e.touches[0]:e;this._startPoint=new L.Point(first.clientX,first.clientY);this._startPos=this._newPos=L.DomUtil.getPosition(this._element);L.DomEvent.on(document,L.Draggable.MOVE[e.type],this._onMove,this).on(document,L.Draggable.END[e.type],this._onUp,this)},_onMove:function(e){if(e.touches&&e.touches.length>1){this._moved=true;return}var first=e.touches&&e.touches.length===1?e.touches[0]:e,newPoint=new L.Point(first.clientX,first.clientY),offset=newPoint.subtract(this._startPoint);if(!offset.x&&!offset.y){return}if(L.Browser.touch&&Math.abs(offset.x)+Math.abs(offset.y)<3){return}L.DomEvent.preventDefault(e);if(!this._moved){this.fire("dragstart");this._moved=true;this._startPos=L.DomUtil.getPosition(this._element).subtract(offset);L.DomUtil.addClass(document.body,"leaflet-dragging");this._lastTarget=e.target||e.srcElement;L.DomUtil.addClass(this._lastTarget,"leaflet-drag-target")}this._newPos=this._startPos.add(offset);this._moving=true;L.Util.cancelAnimFrame(this._animRequest);this._animRequest=L.Util.requestAnimFrame(this._updatePosition,this,true,this._dragStartTarget)},_updatePosition:function(){this.fire("predrag");L.DomUtil.setPosition(this._element,this._newPos);this.fire("drag")},_onUp:function(){L.DomUtil.removeClass(document.body,"leaflet-dragging");if(this._lastTarget){L.DomUtil.removeClass(this._lastTarget,"leaflet-drag-target");this._lastTarget=null}for(var i in L.Draggable.MOVE){L.DomEvent.off(document,L.Draggable.MOVE[i],this._onMove).off(document,L.Draggable.END[i],this._onUp)}L.DomUtil.enableImageDrag();L.DomUtil.enableTextSelection();if(this._moved&&this._moving){L.Util.cancelAnimFrame(this._animRequest);this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})}this._moving=false}});L.Handler=L.Class.extend({initialize:function(map){this._map=map},enable:function(){if(this._enabled){return}this._enabled=true;this.addHooks()},disable:function(){if(!this._enabled){return}this._enabled=false;this.removeHooks()},enabled:function(){return!!this._enabled}});L.Map.mergeOptions({dragging:true,inertia:!L.Browser.android23,inertiaDeceleration:3400,inertiaMaxSpeed:Infinity,inertiaThreshold:L.Browser.touch?32:18,easeLinearity:.25,worldCopyJump:false});L.Map.Drag=L.Handler.extend({addHooks:function(){if(!this._draggable){var map=this._map;this._draggable=new L.Draggable(map._mapPane,map._container);this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this);if(map.options.worldCopyJump){this._draggable.on("predrag",this._onPreDrag,this);map.on("viewreset",this._onViewReset,this);map.whenReady(this._onViewReset,this)}}this._draggable.enable()},removeHooks:function(){this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){var map=this._map;if(map._panAnim){map._panAnim.stop()}map.fire("movestart").fire("dragstart");if(map.options.inertia){this._positions=[];this._times=[]}},_onDrag:function(){if(this._map.options.inertia){var time=this._lastTime=+new Date,pos=this._lastPos=this._draggable._newPos;this._positions.push(pos);this._times.push(time);if(time-this._times[0]>200){this._positions.shift();this._times.shift()}}this._map.fire("move").fire("drag")},_onViewReset:function(){var pxCenter=this._map.getSize()._divideBy(2),pxWorldCenter=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=pxWorldCenter.subtract(pxCenter).x;this._worldWidth=this._map.project([0,180]).x},_onPreDrag:function(){var worldWidth=this._worldWidth,halfWidth=Math.round(worldWidth/2),dx=this._initialWorldOffset,x=this._draggable._newPos.x,newX1=(x-halfWidth+dx)%worldWidth+halfWidth-dx,newX2=(x+halfWidth+dx)%worldWidth-halfWidth-dx,newX=Math.abs(newX1+dx)options.inertiaThreshold||!this._positions[0];map.fire("dragend",e);if(noInertia){map.fire("moveend")}else{var direction=this._lastPos.subtract(this._positions[0]),duration=(this._lastTime+delay-this._times[0])/1e3,ease=options.easeLinearity,speedVector=direction.multiplyBy(ease/duration),speed=speedVector.distanceTo([0,0]),limitedSpeed=Math.min(options.inertiaMaxSpeed,speed),limitedSpeedVector=speedVector.multiplyBy(limitedSpeed/speed),decelerationDuration=limitedSpeed/(options.inertiaDeceleration*ease),offset=limitedSpeedVector.multiplyBy(-decelerationDuration/2).round();if(!offset.x||!offset.y){map.fire("moveend")}else{offset=map._limitOffset(offset,map.options.maxBounds);L.Util.requestAnimFrame(function(){map.panBy(offset,{duration:decelerationDuration,easeLinearity:ease,noMoveStart:true})})}}}});L.Map.addInitHook("addHandler","dragging",L.Map.Drag);L.Map.mergeOptions({doubleClickZoom:true});L.Map.DoubleClickZoom=L.Handler.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(e){var map=this._map,zoom=map.getZoom()+(e.originalEvent.shiftKey?-1:1);if(map.options.doubleClickZoom==="center"){map.setZoom(zoom)}else{map.setZoomAround(e.containerPoint,zoom)}}});L.Map.addInitHook("addHandler","doubleClickZoom",L.Map.DoubleClickZoom);L.Map.mergeOptions({scrollWheelZoom:true});L.Map.ScrollWheelZoom=L.Handler.extend({addHooks:function(){L.DomEvent.on(this._map._container,"mousewheel",this._onWheelScroll,this);L.DomEvent.on(this._map._container,"MozMousePixelScroll",L.DomEvent.preventDefault);this._delta=0},removeHooks:function(){L.DomEvent.off(this._map._container,"mousewheel",this._onWheelScroll);L.DomEvent.off(this._map._container,"MozMousePixelScroll",L.DomEvent.preventDefault)},_onWheelScroll:function(e){var delta=L.DomEvent.getWheelDelta(e);this._delta+=delta;this._lastMousePos=this._map.mouseEventToContainerPoint(e);if(!this._startTime){this._startTime=+new Date}var left=Math.max(40-(+new Date-this._startTime),0);clearTimeout(this._timer);this._timer=setTimeout(L.bind(this._performZoom,this),left);L.DomEvent.preventDefault(e);L.DomEvent.stopPropagation(e)},_performZoom:function(){var map=this._map,delta=this._delta,zoom=map.getZoom();delta=delta>0?Math.ceil(delta):Math.floor(delta);delta=Math.max(Math.min(delta,4),-4);delta=map._limitZoom(zoom+delta)-zoom;this._delta=0;this._startTime=null;if(!delta){return}if(map.options.scrollWheelZoom==="center"){map.setZoom(zoom+delta)}else{map.setZoomAround(this._lastMousePos,zoom+delta)}}});L.Map.addInitHook("addHandler","scrollWheelZoom",L.Map.ScrollWheelZoom);L.extend(L.DomEvent,{_touchstart:L.Browser.msPointer?"MSPointerDown":L.Browser.pointer?"pointerdown":"touchstart",_touchend:L.Browser.msPointer?"MSPointerUp":L.Browser.pointer?"pointerup":"touchend",addDoubleTapListener:function(obj,handler,id){var last,doubleTap=false,delay=250,touch,pre="_leaflet_",touchstart=this._touchstart,touchend=this._touchend,trackedTouches=[];function onTouchStart(e){var count;if(L.Browser.pointer){trackedTouches.push(e.pointerId);count=trackedTouches.length}else{count=e.touches.length}if(count>1){return}var now=Date.now(),delta=now-(last||now);touch=e.touches?e.touches[0]:e;doubleTap=delta>0&&delta<=delay;last=now}function onTouchEnd(e){if(L.Browser.pointer){var idx=trackedTouches.indexOf(e.pointerId);if(idx===-1){return}trackedTouches.splice(idx,1)}if(doubleTap){if(L.Browser.pointer){var newTouch={},prop;for(var i in touch){prop=touch[i];if(typeof prop==="function"){newTouch[i]=prop.bind(touch)}else{newTouch[i]=prop}}touch=newTouch}touch.type="dblclick";handler(touch);last=null}}obj[pre+touchstart+id]=onTouchStart;obj[pre+touchend+id]=onTouchEnd;var endElement=L.Browser.pointer?document.documentElement:obj;obj.addEventListener(touchstart,onTouchStart,false);endElement.addEventListener(touchend,onTouchEnd,false);if(L.Browser.pointer){endElement.addEventListener(L.DomEvent.POINTER_CANCEL,onTouchEnd,false)}return this},removeDoubleTapListener:function(obj,id){var pre="_leaflet_";obj.removeEventListener(this._touchstart,obj[pre+this._touchstart+id],false);(L.Browser.pointer?document.documentElement:obj).removeEventListener(this._touchend,obj[pre+this._touchend+id],false);if(L.Browser.pointer){document.documentElement.removeEventListener(L.DomEvent.POINTER_CANCEL,obj[pre+this._touchend+id],false)}return this}});L.extend(L.DomEvent,{POINTER_DOWN:L.Browser.msPointer?"MSPointerDown":"pointerdown",POINTER_MOVE:L.Browser.msPointer?"MSPointerMove":"pointermove",POINTER_UP:L.Browser.msPointer?"MSPointerUp":"pointerup",POINTER_CANCEL:L.Browser.msPointer?"MSPointerCancel":"pointercancel",_pointers:[],_pointerDocumentListener:false,addPointerListener:function(obj,type,handler,id){switch(type){case"touchstart":return this.addPointerListenerStart(obj,type,handler,id);case"touchend":return this.addPointerListenerEnd(obj,type,handler,id);case"touchmove":return this.addPointerListenerMove(obj,type,handler,id);default:throw"Unknown touch event type"}},addPointerListenerStart:function(obj,type,handler,id){var pre="_leaflet_",pointers=this._pointers;var cb=function(e){if(e.pointerType!=="mouse"&&e.pointerType!==e.MSPOINTER_TYPE_MOUSE){L.DomEvent.preventDefault(e)}var alreadyInArray=false;for(var i=0;i1){return}}if(!this._moved){L.DomUtil.addClass(map._mapPane,"leaflet-touching");map.fire("movestart").fire("zoomstart");this._moved=true}L.Util.cancelAnimFrame(this._animRequest);this._animRequest=L.Util.requestAnimFrame(this._updateOnMove,this,true,this._map._container);L.DomEvent.preventDefault(e)},_updateOnMove:function(){var map=this._map,origin=this._getScaleOrigin(),center=map.layerPointToLatLng(origin),zoom=map.getScaleZoom(this._scale);map._animateZoom(center,zoom,this._startCenter,this._scale,this._delta,false,true)},_onTouchEnd:function(){if(!this._moved||!this._zooming){this._zooming=false;return}var map=this._map;this._zooming=false;L.DomUtil.removeClass(map._mapPane,"leaflet-touching");L.Util.cancelAnimFrame(this._animRequest);L.DomEvent.off(document,"touchmove",this._onTouchMove).off(document,"touchend",this._onTouchEnd);var origin=this._getScaleOrigin(),center=map.layerPointToLatLng(origin),oldZoom=map.getZoom(),floatZoomDelta=map.getScaleZoom(this._scale)-oldZoom,roundZoomDelta=floatZoomDelta>0?Math.ceil(floatZoomDelta):Math.floor(floatZoomDelta),zoom=map._limitZoom(oldZoom+roundZoomDelta),scale=map.getZoomScale(zoom)/this._scale;map._animateZoom(center,zoom,origin,scale)},_getScaleOrigin:function(){var centerOffset=this._centerOffset.subtract(this._delta).divideBy(this._scale);return this._startCenter.add(centerOffset)}});L.Map.addInitHook("addHandler","touchZoom",L.Map.TouchZoom);L.Map.mergeOptions({tap:true,tapTolerance:15});L.Map.Tap=L.Handler.extend({addHooks:function(){L.DomEvent.on(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){L.DomEvent.off(this._map._container,"touchstart",this._onDown,this)},_onDown:function(e){if(!e.touches){return}L.DomEvent.preventDefault(e);this._fireClick=true;if(e.touches.length>1){this._fireClick=false;clearTimeout(this._holdTimeout);return}var first=e.touches[0],el=first.target;this._startPos=this._newPos=new L.Point(first.clientX,first.clientY);if(el.tagName&&el.tagName.toLowerCase()==="a"){L.DomUtil.addClass(el,"leaflet-active")}this._holdTimeout=setTimeout(L.bind(function(){if(this._isTapValid()){this._fireClick=false;this._onUp();this._simulateEvent("contextmenu",first)}},this),1e3);L.DomEvent.on(document,"touchmove",this._onMove,this).on(document,"touchend",this._onUp,this)},_onUp:function(e){clearTimeout(this._holdTimeout);L.DomEvent.off(document,"touchmove",this._onMove,this).off(document,"touchend",this._onUp,this);if(this._fireClick&&e&&e.changedTouches){var first=e.changedTouches[0],el=first.target;if(el&&el.tagName&&el.tagName.toLowerCase()==="a"){L.DomUtil.removeClass(el,"leaflet-active")}if(this._isTapValid()){this._simulateEvent("click",first)}}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(e){var first=e.touches[0];this._newPos=new L.Point(first.clientX,first.clientY)},_simulateEvent:function(type,e){var simulatedEvent=document.createEvent("MouseEvents");simulatedEvent._simulated=true;e.target._simulatedClick=true;simulatedEvent.initMouseEvent(type,true,true,window,1,e.screenX,e.screenY,e.clientX,e.clientY,false,false,false,false,0,null);e.target.dispatchEvent(simulatedEvent)}});if(L.Browser.touch&&!L.Browser.pointer){L.Map.addInitHook("addHandler","tap",L.Map.Tap)}L.Map.mergeOptions({boxZoom:true});L.Map.BoxZoom=L.Handler.extend({initialize:function(map){this._map=map;this._container=map._container;this._pane=map._panes.overlayPane;this._moved=false},addHooks:function(){L.DomEvent.on(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){L.DomEvent.off(this._container,"mousedown",this._onMouseDown);this._moved=false},moved:function(){return this._moved},_onMouseDown:function(e){this._moved=false;if(!e.shiftKey||e.which!==1&&e.button!==1){return false}L.DomUtil.disableTextSelection();L.DomUtil.disableImageDrag();this._startLayerPoint=this._map.mouseEventToLayerPoint(e);L.DomEvent.on(document,"mousemove",this._onMouseMove,this).on(document,"mouseup",this._onMouseUp,this).on(document,"keydown",this._onKeyDown,this)},_onMouseMove:function(e){if(!this._moved){this._box=L.DomUtil.create("div","leaflet-zoom-box",this._pane);L.DomUtil.setPosition(this._box,this._startLayerPoint);this._container.style.cursor="crosshair";this._map.fire("boxzoomstart")}var startPoint=this._startLayerPoint,box=this._box,layerPoint=this._map.mouseEventToLayerPoint(e),offset=layerPoint.subtract(startPoint),newPos=new L.Point(Math.min(layerPoint.x,startPoint.x),Math.min(layerPoint.y,startPoint.y));L.DomUtil.setPosition(box,newPos);this._moved=true;box.style.width=Math.max(0,Math.abs(offset.x)-4)+"px";box.style.height=Math.max(0,Math.abs(offset.y)-4)+"px"},_finish:function(){if(this._moved){this._pane.removeChild(this._box);this._container.style.cursor=""}L.DomUtil.enableTextSelection();L.DomUtil.enableImageDrag();L.DomEvent.off(document,"mousemove",this._onMouseMove).off(document,"mouseup",this._onMouseUp).off(document,"keydown",this._onKeyDown)},_onMouseUp:function(e){this._finish();var map=this._map,layerPoint=map.mouseEventToLayerPoint(e);if(this._startLayerPoint.equals(layerPoint)){return}var bounds=new L.LatLngBounds(map.layerPointToLatLng(this._startLayerPoint),map.layerPointToLatLng(layerPoint));map.fitBounds(bounds);map.fire("boxzoomend",{boxZoomBounds:bounds})},_onKeyDown:function(e){if(e.keyCode===27){this._finish()}}});L.Map.addInitHook("addHandler","boxZoom",L.Map.BoxZoom);L.Map.mergeOptions({keyboard:true,keyboardPanOffset:80,keyboardZoomOffset:1});L.Map.Keyboard=L.Handler.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,173]},initialize:function(map){this._map=map;this._setPanOffset(map.options.keyboardPanOffset);this._setZoomOffset(map.options.keyboardZoomOffset)},addHooks:function(){var container=this._map._container;if(container.tabIndex===-1){container.tabIndex="0"}L.DomEvent.on(container,"focus",this._onFocus,this).on(container,"blur",this._onBlur,this).on(container,"mousedown",this._onMouseDown,this);this._map.on("focus",this._addHooks,this).on("blur",this._removeHooks,this)},removeHooks:function(){this._removeHooks();var container=this._map._container;L.DomEvent.off(container,"focus",this._onFocus,this).off(container,"blur",this._onBlur,this).off(container,"mousedown",this._onMouseDown,this);this._map.off("focus",this._addHooks,this).off("blur",this._removeHooks,this)},_onMouseDown:function(){if(this._focused){return}var body=document.body,docEl=document.documentElement,top=body.scrollTop||docEl.scrollTop,left=body.scrollLeft||docEl.scrollLeft;this._map._container.focus();window.scrollTo(left,top)},_onFocus:function(){this._focused=true;this._map.fire("focus")},_onBlur:function(){this._focused=false;this._map.fire("blur")},_setPanOffset:function(pan){var keys=this._panKeys={},codes=this.keyCodes,i,len;for(i=0,len=codes.left.length;iLeaflet'},initialize:function(options){L.setOptions(this,options);this._attributions={}},onAdd:function(map){this._container=L.DomUtil.create("div","leaflet-control-attribution");L.DomEvent.disableClickPropagation(this._container);for(var i in map._layers){if(map._layers[i].getAttribution){this.addAttribution(map._layers[i].getAttribution())}}map.on("layeradd",this._onLayerAdd,this).on("layerremove",this._onLayerRemove,this);this._update();return this._container},onRemove:function(map){map.off("layeradd",this._onLayerAdd).off("layerremove",this._onLayerRemove)},setPrefix:function(prefix){this.options.prefix=prefix;this._update();return this},addAttribution:function(text){if(!text){return}if(!this._attributions[text]){this._attributions[text]=0}this._attributions[text]++;this._update();return this},removeAttribution:function(text){if(!text){return}if(this._attributions[text]){this._attributions[text]--;this._update()}return this},_update:function(){if(!this._map){return}var attribs=[];for(var i in this._attributions){if(this._attributions[i]){attribs.push(i)}}var prefixAndAttribs=[];if(this.options.prefix){prefixAndAttribs.push(this.options.prefix); -}if(attribs.length){prefixAndAttribs.push(attribs.join(", "))}this._container.innerHTML=prefixAndAttribs.join(" | ")},_onLayerAdd:function(e){if(e.layer.getAttribution){this.addAttribution(e.layer.getAttribution())}},_onLayerRemove:function(e){if(e.layer.getAttribution){this.removeAttribution(e.layer.getAttribution())}}});L.Map.mergeOptions({attributionControl:true});L.Map.addInitHook(function(){if(this.options.attributionControl){this.attributionControl=(new L.Control.Attribution).addTo(this)}});L.control.attribution=function(options){return new L.Control.Attribution(options)};L.Control.Scale=L.Control.extend({options:{position:"bottomleft",maxWidth:100,metric:true,imperial:true,updateWhenIdle:false},onAdd:function(map){this._map=map;var className="leaflet-control-scale",container=L.DomUtil.create("div",className),options=this.options;this._addScales(options,className,container);map.on(options.updateWhenIdle?"moveend":"move",this._update,this);map.whenReady(this._update,this);return container},onRemove:function(map){map.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(options,className,container){if(options.metric){this._mScale=L.DomUtil.create("div",className+"-line",container)}if(options.imperial){this._iScale=L.DomUtil.create("div",className+"-line",container)}},_update:function(){var bounds=this._map.getBounds(),centerLat=bounds.getCenter().lat,halfWorldMeters=6378137*Math.PI*Math.cos(centerLat*Math.PI/180),dist=halfWorldMeters*(bounds.getNorthEast().lng-bounds.getSouthWest().lng)/180,size=this._map.getSize(),options=this.options,maxMeters=0;if(size.x>0){maxMeters=dist*(options.maxWidth/size.x)}this._updateScales(options,maxMeters)},_updateScales:function(options,maxMeters){if(options.metric&&maxMeters){this._updateMetric(maxMeters)}if(options.imperial&&maxMeters){this._updateImperial(maxMeters)}},_updateMetric:function(maxMeters){var meters=this._getRoundNum(maxMeters);this._mScale.style.width=this._getScaleWidth(meters/maxMeters)+"px";this._mScale.innerHTML=meters<1e3?meters+" m":meters/1e3+" km"},_updateImperial:function(maxMeters){var maxFeet=maxMeters*3.2808399,scale=this._iScale,maxMiles,miles,feet;if(maxFeet>5280){maxMiles=maxFeet/5280;miles=this._getRoundNum(maxMiles);scale.style.width=this._getScaleWidth(miles/maxMiles)+"px";scale.innerHTML=miles+" mi"}else{feet=this._getRoundNum(maxFeet);scale.style.width=this._getScaleWidth(feet/maxFeet)+"px";scale.innerHTML=feet+" ft"}},_getScaleWidth:function(ratio){return Math.round(this.options.maxWidth*ratio)-10},_getRoundNum:function(num){var pow10=Math.pow(10,(Math.floor(num)+"").length-1),d=num/pow10;d=d>=10?10:d>=5?5:d>=3?3:d>=2?2:1;return pow10*d}});L.control.scale=function(options){return new L.Control.Scale(options)};L.Control.Layers=L.Control.extend({options:{collapsed:true,position:"topright",autoZIndex:true},initialize:function(baseLayers,overlays,options){L.setOptions(this,options);this._layers={};this._lastZIndex=0;this._handlingClick=false;for(var i in baseLayers){this._addLayer(baseLayers[i],i)}for(i in overlays){this._addLayer(overlays[i],i,true)}},onAdd:function(map){this._initLayout();this._update();map.on("layeradd",this._onLayerChange,this).on("layerremove",this._onLayerChange,this);return this._container},onRemove:function(map){map.off("layeradd",this._onLayerChange,this).off("layerremove",this._onLayerChange,this)},addBaseLayer:function(layer,name){this._addLayer(layer,name);this._update();return this},addOverlay:function(layer,name){this._addLayer(layer,name,true);this._update();return this},removeLayer:function(layer){var id=L.stamp(layer);delete this._layers[id];this._update();return this},_initLayout:function(){var className="leaflet-control-layers",container=this._container=L.DomUtil.create("div",className);container.setAttribute("aria-haspopup",true);if(!L.Browser.touch){L.DomEvent.disableClickPropagation(container).disableScrollPropagation(container)}else{L.DomEvent.on(container,"click",L.DomEvent.stopPropagation)}var form=this._form=L.DomUtil.create("form",className+"-list");if(this.options.collapsed){if(!L.Browser.android){L.DomEvent.on(container,"mouseover",this._expand,this).on(container,"mouseout",this._collapse,this)}var link=this._layersLink=L.DomUtil.create("a",className+"-toggle",container);link.href="#";link.title="Layers";if(L.Browser.touch){L.DomEvent.on(link,"click",L.DomEvent.stop).on(link,"click",this._expand,this)}else{L.DomEvent.on(link,"focus",this._expand,this)}L.DomEvent.on(form,"click",function(){setTimeout(L.bind(this._onInputClick,this),0)},this);this._map.on("click",this._collapse,this)}else{this._expand()}this._baseLayersList=L.DomUtil.create("div",className+"-base",form);this._separator=L.DomUtil.create("div",className+"-separator",form);this._overlaysList=L.DomUtil.create("div",className+"-overlays",form);container.appendChild(form)},_addLayer:function(layer,name,overlay){var id=L.stamp(layer);this._layers[id]={layer:layer,name:name,overlay:overlay};if(this.options.autoZIndex&&layer.setZIndex){this._lastZIndex++;layer.setZIndex(this._lastZIndex)}},_update:function(){if(!this._container){return}this._baseLayersList.innerHTML="";this._overlaysList.innerHTML="";var baseLayersPresent=false,overlaysPresent=false,i,obj;for(i in this._layers){obj=this._layers[i];this._addItem(obj);overlaysPresent=overlaysPresent||obj.overlay;baseLayersPresent=baseLayersPresent||!obj.overlay}this._separator.style.display=overlaysPresent&&baseLayersPresent?"":"none"},_onLayerChange:function(e){var obj=this._layers[L.stamp(e.layer)];if(!obj){return}if(!this._handlingClick){this._update()}var type=obj.overlay?e.type==="layeradd"?"overlayadd":"overlayremove":e.type==="layeradd"?"baselayerchange":null;if(type){this._map.fire(type,obj)}},_createRadioElement:function(name,checked){var radioHtml='=0){this._onZoomTransitionEnd()}},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(center,zoom,options){if(this._animatingZoom){return true}options=options||{};if(!this._zoomAnimated||options.animate===false||this._nothingToAnimate()||Math.abs(zoom-this._zoom)>this.options.zoomAnimationThreshold){return false}var scale=this.getZoomScale(zoom),offset=this._getCenterOffset(center)._divideBy(1-1/scale),origin=this._getCenterLayerPoint()._add(offset);if(options.animate!==true&&!this.getSize().contains(offset)){return false}this.fire("movestart").fire("zoomstart");this._animateZoom(center,zoom,origin,scale,null,true);return true},_animateZoom:function(center,zoom,origin,scale,delta,backwards,forTouchZoom){if(!forTouchZoom){this._animatingZoom=true}L.DomUtil.addClass(this._mapPane,"leaflet-zoom-anim");this._animateToCenter=center;this._animateToZoom=zoom;if(L.Draggable){L.Draggable._disabled=true}L.Util.requestAnimFrame(function(){this.fire("zoomanim",{center:center,zoom:zoom,origin:origin,scale:scale,delta:delta,backwards:backwards});setTimeout(L.bind(this._onZoomTransitionEnd,this),250)},this)},_onZoomTransitionEnd:function(){if(!this._animatingZoom){return}this._animatingZoom=false;L.DomUtil.removeClass(this._mapPane,"leaflet-zoom-anim");L.Util.requestAnimFrame(function(){this._resetView(this._animateToCenter,this._animateToZoom,true,true);if(L.Draggable){L.Draggable._disabled=false}},this)}});L.TileLayer.include({_animateZoom:function(e){if(!this._animating){this._animating=true;this._prepareBgBuffer()}var bg=this._bgBuffer,transform=L.DomUtil.TRANSFORM,initialTransform=e.delta?L.DomUtil.getTranslateString(e.delta):bg.style[transform],scaleStr=L.DomUtil.getScaleString(e.scale,e.origin);bg.style[transform]=e.backwards?scaleStr+" "+initialTransform:initialTransform+" "+scaleStr},_endZoomAnim:function(){var front=this._tileContainer,bg=this._bgBuffer;front.style.visibility="";front.parentNode.appendChild(front);L.Util.falseFn(bg.offsetWidth);var zoom=this._map.getZoom();if(zoom>this.options.maxZoom||zoom.5&&frontLoaded<.5){front.style.visibility="hidden";this._stopLoadingImages(front);return}bg.style.visibility="hidden";bg.style[L.DomUtil.TRANSFORM]="";this._tileContainer=bg;bg=this._bgBuffer=front;this._stopLoadingImages(bg);clearTimeout(this._clearBgBufferTimer)},_getLoadedTilesPercentage:function(container){var tiles=container.getElementsByTagName("img"),i,len,count=0;for(i=0,len=tiles.length;i1){x=x>1?1:-1}return Math.asin(x)}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/e0fn.js":[function(require,module,exports){module.exports=function(x){return 1-.25*x*(1+x/16*(3+1.25*x))}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/e1fn.js":[function(require,module,exports){module.exports=function(x){return.375*x*(1+.25*x*(1+.46875*x))}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/e2fn.js":[function(require,module,exports){module.exports=function(x){return.05859375*x*x*(1+.75*x)}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/e3fn.js":[function(require,module,exports){module.exports=function(x){return x*x*x*(35/3072)}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/gN.js":[function(require,module,exports){module.exports=function(a,e,sinphi){var temp=e*sinphi;return a/Math.sqrt(1-temp*temp)}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/imlfn.js":[function(require,module,exports){module.exports=function(ml,e0,e1,e2,e3){var phi;var dphi;phi=ml/e0;for(var i=0;i<15;i++){dphi=(ml-(e0*phi-e1*Math.sin(2*phi)+e2*Math.sin(4*phi)-e3*Math.sin(6*phi)))/(e0-2*e1*Math.cos(2*phi)+4*e2*Math.cos(4*phi)-6*e3*Math.cos(6*phi));phi+=dphi;if(Math.abs(dphi)<=1e-10){return phi}}return NaN}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/iqsfnz.js":[function(require,module,exports){var HALF_PI=Math.PI/2;module.exports=function(eccent,q){var temp=1-(1-eccent*eccent)/(2*eccent)*Math.log((1-eccent)/(1+eccent));if(Math.abs(Math.abs(q)-temp)<1e-6){if(q<0){return-1*HALF_PI}else{return HALF_PI}}var phi=Math.asin(.5*q);var dphi;var sin_phi;var cos_phi;var con;for(var i=0;i<30;i++){sin_phi=Math.sin(phi);cos_phi=Math.cos(phi);con=eccent*sin_phi;dphi=Math.pow(1-con*con,2)/(2*cos_phi)*(q/(1-eccent*eccent)-sin_phi/(1-con*con)+.5/eccent*Math.log((1-con)/(1+con)));phi+=dphi;if(Math.abs(dphi)<=1e-10){return phi}}return NaN}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/mlfn.js":[function(require,module,exports){module.exports=function(e0,e1,e2,e3,phi){return e0*phi-e1*Math.sin(2*phi)+e2*Math.sin(4*phi)-e3*Math.sin(6*phi)}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/msfnz.js":[function(require,module,exports){module.exports=function(eccent,sinphi,cosphi){var con=eccent*sinphi;return cosphi/Math.sqrt(1-con*con)}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/phi2z.js":[function(require,module,exports){var HALF_PI=Math.PI/2;module.exports=function(eccent,ts){var eccnth=.5*eccent;var con,dphi;var phi=HALF_PI-2*Math.atan(ts);for(var i=0;i<=15;i++){con=eccent*Math.sin(phi);dphi=HALF_PI-2*Math.atan(ts*Math.pow((1-con)/(1+con),eccnth))-phi;phi+=dphi;if(Math.abs(dphi)<=1e-10){return phi}}return-9999}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/pj_enfn.js":[function(require,module,exports){var C00=1;var C02=.25;var C04=.046875;var C06=.01953125;var C08=.01068115234375;var C22=.75;var C44=.46875;var C46=.013020833333333334;var C48=.007120768229166667;var C66=.3645833333333333;var C68=.005696614583333333;var C88=.3076171875;module.exports=function(es){var en=[];en[0]=C00-es*(C02+es*(C04+es*(C06+es*C08)));en[1]=es*(C22-es*(C04+es*(C06+es*C08)));var t=es*es;en[2]=t*(C44-es*(C46+es*C48));t*=es;en[3]=t*(C66-es*C68);en[4]=t*es*C88;return en}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/pj_inv_mlfn.js":[function(require,module,exports){var pj_mlfn=require("./pj_mlfn");var EPSLN=1e-10;var MAX_ITER=20;module.exports=function(arg,es,en){var k=1/(1-es);var phi=arg;for(var i=MAX_ITER;i;--i){var s=Math.sin(phi);var t=1-es*s*s;t=(pj_mlfn(phi,s,Math.cos(phi),en)-arg)*(t*Math.sqrt(t))*k;phi-=t;if(Math.abs(t)1e-7){con=eccent*sinphi;return(1-eccent*eccent)*(sinphi/(1-con*con)-.5/eccent*Math.log((1-con)/(1+con)))}else{return 2*sinphi}}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/sign.js":[function(require,module,exports){module.exports=function(x){return x<0?-1:1}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/srat.js":[function(require,module,exports){module.exports=function(esinp,exp){return Math.pow((1-esinp)/(1+esinp),exp)}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/toPoint.js":[function(require,module,exports){module.exports=function(array){var out={x:array[0],y:array[1]};if(array.length>2){out.z=array[2]}if(array.length>3){out.m=array[3]}return out}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/tsfnz.js":[function(require,module,exports){var HALF_PI=Math.PI/2;module.exports=function(eccent,phi,sinphi){var con=eccent*sinphi;var com=.5*eccent;con=Math.pow((1-con)/(1+con),com);return Math.tan(.5*(HALF_PI-phi))/con}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/constants/Datum.js":[function(require,module,exports){exports.wgs84={towgs84:"0,0,0",ellipse:"WGS84",datumName:"WGS84"};exports.ch1903={towgs84:"674.374,15.056,405.346",ellipse:"bessel",datumName:"swiss"};exports.ggrs87={towgs84:"-199.87,74.79,246.62",ellipse:"GRS80",datumName:"Greek_Geodetic_Reference_System_1987"};exports.nad83={towgs84:"0,0,0",ellipse:"GRS80",datumName:"North_American_Datum_1983"};exports.nad27={nadgrids:"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",ellipse:"clrk66",datumName:"North_American_Datum_1927"};exports.potsdam={towgs84:"606.0,23.0,413.0",ellipse:"bessel",datumName:"Potsdam Rauenberg 1950 DHDN"};exports.carthage={towgs84:"-263.0,6.0,431.0",ellipse:"clark80",datumName:"Carthage 1934 Tunisia"};exports.hermannskogel={towgs84:"653.0,-212.0,449.0",ellipse:"bessel",datumName:"Hermannskogel"};exports.ire65={towgs84:"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",ellipse:"mod_airy",datumName:"Ireland 1965"};exports.rassadiran={towgs84:"-133.63,-157.5,-158.62",ellipse:"intl",datumName:"Rassadiran"};exports.nzgd49={towgs84:"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",ellipse:"intl",datumName:"New Zealand Geodetic Datum 1949"};exports.osgb36={towgs84:"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",ellipse:"airy",datumName:"Airy 1830"};exports.s_jtsk={towgs84:"589,76,480",ellipse:"bessel",datumName:"S-JTSK (Ferro)"};exports.beduaram={towgs84:"-106,-87,188",ellipse:"clrk80",datumName:"Beduaram"};exports.gunung_segara={towgs84:"-403,684,41",ellipse:"bessel",datumName:"Gunung Segara Jakarta"};exports.rnb72={towgs84:"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1",ellipse:"intl",datumName:"Reseau National Belge 1972"}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/constants/Ellipsoid.js":[function(require,module,exports){exports.MERIT={a:6378137,rf:298.257,ellipseName:"MERIT 1983"};exports.SGS85={a:6378136,rf:298.257,ellipseName:"Soviet Geodetic System 85"};exports.GRS80={a:6378137,rf:298.257222101,ellipseName:"GRS 1980(IUGG, 1980)"};exports.IAU76={a:6378140,rf:298.257,ellipseName:"IAU 1976"};exports.airy={a:6377563.396,b:6356256.91,ellipseName:"Airy 1830"};exports.APL4={a:6378137,rf:298.25,ellipseName:"Appl. Physics. 1965"};exports.NWL9D={a:6378145,rf:298.25,ellipseName:"Naval Weapons Lab., 1965"};exports.mod_airy={a:6377340.189,b:6356034.446,ellipseName:"Modified Airy"};exports.andrae={a:6377104.43,rf:300,ellipseName:"Andrae 1876 (Den., Iclnd.)"};exports.aust_SA={a:6378160,rf:298.25,ellipseName:"Australian Natl & S. Amer. 1969"};exports.GRS67={a:6378160,rf:298.247167427,ellipseName:"GRS 67(IUGG 1967)"};exports.bessel={a:6377397.155,rf:299.1528128,ellipseName:"Bessel 1841"};exports.bess_nam={a:6377483.865,rf:299.1528128,ellipseName:"Bessel 1841 (Namibia)"};exports.clrk66={a:6378206.4,b:6356583.8,ellipseName:"Clarke 1866"};exports.clrk80={a:6378249.145,rf:293.4663,ellipseName:"Clarke 1880 mod."};exports.clrk58={a:6378293.645208759,rf:294.2606763692654,ellipseName:"Clarke 1858"};exports.CPM={a:6375738.7,rf:334.29,ellipseName:"Comm. des Poids et Mesures 1799"};exports.delmbr={a:6376428,rf:311.5,ellipseName:"Delambre 1810 (Belgium)"};exports.engelis={a:6378136.05,rf:298.2566,ellipseName:"Engelis 1985"};exports.evrst30={a:6377276.345,rf:300.8017,ellipseName:"Everest 1830"};exports.evrst48={a:6377304.063,rf:300.8017,ellipseName:"Everest 1948"};exports.evrst56={a:6377301.243,rf:300.8017,ellipseName:"Everest 1956"};exports.evrst69={a:6377295.664,rf:300.8017,ellipseName:"Everest 1969"};exports.evrstSS={a:6377298.556,rf:300.8017,ellipseName:"Everest (Sabah & Sarawak)"};exports.fschr60={a:6378166,rf:298.3,ellipseName:"Fischer (Mercury Datum) 1960"};exports.fschr60m={a:6378155,rf:298.3,ellipseName:"Fischer 1960"};exports.fschr68={a:6378150,rf:298.3,ellipseName:"Fischer 1968"};exports.helmert={a:6378200,rf:298.3,ellipseName:"Helmert 1906"};exports.hough={a:6378270,rf:297,ellipseName:"Hough"};exports.intl={a:6378388,rf:297,ellipseName:"International 1909 (Hayford)"};exports.kaula={a:6378163,rf:298.24,ellipseName:"Kaula 1961"};exports.lerch={a:6378139,rf:298.257,ellipseName:"Lerch 1979"};exports.mprts={a:6397300,rf:191,ellipseName:"Maupertius 1738"};exports.new_intl={a:6378157.5,b:6356772.2,ellipseName:"New International 1967"};exports.plessis={a:6376523,rf:6355863,ellipseName:"Plessis 1817 (France)"};exports.krass={a:6378245,rf:298.3,ellipseName:"Krassovsky, 1942"};exports.SEasia={a:6378155,b:6356773.3205,ellipseName:"Southeast Asia"};exports.walbeck={a:6376896,b:6355834.8467,ellipseName:"Walbeck"};exports.WGS60={a:6378165,rf:298.3,ellipseName:"WGS 60"};exports.WGS66={a:6378145,rf:298.25,ellipseName:"WGS 66"};exports.WGS7={a:6378135,rf:298.26,ellipseName:"WGS 72"};exports.WGS84={a:6378137,rf:298.257223563,ellipseName:"WGS 84"};exports.sphere={a:6370997,b:6370997,ellipseName:"Normal Sphere (r=6370997)"}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/constants/PrimeMeridian.js":[function(require,module,exports){exports.greenwich=0;exports.lisbon=-9.131906111111;exports.paris=2.337229166667;exports.bogota=-74.080916666667;exports.madrid=-3.687938888889;exports.rome=12.452333333333;exports.bern=7.439583333333;exports.jakarta=106.807719444444;exports.ferro=-17.666666666667;exports.brussels=4.367975;exports.stockholm=18.058277777778;exports.athens=23.7163375;exports.oslo=10.722916666667},{}],"/data/github/geopackage-node/node_modules/proj4/lib/constants/units.js":[function(require,module,exports){exports.ft={to_meter:.3048};exports["us-ft"]={to_meter:1200/3937}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/core.js":[function(require,module,exports){var proj=require("./Proj");var transform=require("./transform");var wgs84=proj("WGS84");function transformer(from,to,coords){var transformedArray;if(Array.isArray(coords)){transformedArray=transform(from,to,coords);if(coords.length===3){return[transformedArray.x,transformedArray.y,transformedArray.z]}else{return[transformedArray.x,transformedArray.y]}}else{return transform(from,to,coords)}}function checkProj(item){if(item instanceof proj){ -return item}if(item.oProj){return item.oProj}return proj(item)}function proj4(fromProj,toProj,coord){fromProj=checkProj(fromProj);var single=false;var obj;if(typeof toProj==="undefined"){toProj=fromProj;fromProj=wgs84;single=true}else if(typeof toProj.x!=="undefined"||Array.isArray(toProj)){coord=toProj;toProj=fromProj;fromProj=wgs84;single=true}toProj=checkProj(toProj);if(coord){return transformer(fromProj,toProj,coord)}else{obj={forward:function(coords){return transformer(fromProj,toProj,coords)},inverse:function(coords){return transformer(toProj,fromProj,coords)}};if(single){obj.oProj=toProj}return obj}}module.exports=proj4},{"./Proj":"/data/github/geopackage-node/node_modules/proj4/lib/Proj.js","./transform":"/data/github/geopackage-node/node_modules/proj4/lib/transform.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/datum.js":[function(require,module,exports){var HALF_PI=Math.PI/2;var PJD_3PARAM=1;var PJD_7PARAM=2;var PJD_GRIDSHIFT=3;var PJD_WGS84=4;var PJD_NODATUM=5;var SEC_TO_RAD=484813681109536e-20;var AD_C=1.0026;var COS_67P5=.3826834323650898;var datum=function(proj){if(!(this instanceof datum)){return new datum(proj)}this.datum_type=PJD_WGS84;if(!proj){return}if(proj.datumCode&&proj.datumCode==="none"){this.datum_type=PJD_NODATUM}if(proj.datum_params){this.datum_params=proj.datum_params.map(parseFloat);if(this.datum_params[0]!==0||this.datum_params[1]!==0||this.datum_params[2]!==0){this.datum_type=PJD_3PARAM}if(this.datum_params.length>3){if(this.datum_params[3]!==0||this.datum_params[4]!==0||this.datum_params[5]!==0||this.datum_params[6]!==0){this.datum_type=PJD_7PARAM;this.datum_params[3]*=SEC_TO_RAD;this.datum_params[4]*=SEC_TO_RAD;this.datum_params[5]*=SEC_TO_RAD;this.datum_params[6]=this.datum_params[6]/1e6+1}}}this.datum_type=proj.grids?PJD_GRIDSHIFT:this.datum_type;this.a=proj.a;this.b=proj.b;this.es=proj.es;this.ep2=proj.ep2;if(this.datum_type===PJD_GRIDSHIFT){this.grids=proj.grids}};datum.prototype={compare_datums:function(dest){if(this.datum_type!==dest.datum_type){return false}else if(this.a!==dest.a||Math.abs(this.es-dest.es)>5e-11){return false}else if(this.datum_type===PJD_3PARAM){return this.datum_params[0]===dest.datum_params[0]&&this.datum_params[1]===dest.datum_params[1]&&this.datum_params[2]===dest.datum_params[2]}else if(this.datum_type===PJD_7PARAM){return this.datum_params[0]===dest.datum_params[0]&&this.datum_params[1]===dest.datum_params[1]&&this.datum_params[2]===dest.datum_params[2]&&this.datum_params[3]===dest.datum_params[3]&&this.datum_params[4]===dest.datum_params[4]&&this.datum_params[5]===dest.datum_params[5]&&this.datum_params[6]===dest.datum_params[6]}else if(this.datum_type===PJD_GRIDSHIFT||dest.datum_type===PJD_GRIDSHIFT){return this.nadgrids===dest.nadgrids}else{return true}},geodetic_to_geocentric:function(p){var Longitude=p.x;var Latitude=p.y;var Height=p.z?p.z:0;var X;var Y;var Z;var Error_Code=0;var Rn;var Sin_Lat;var Sin2_Lat;var Cos_Lat;if(Latitude<-HALF_PI&&Latitude>-1.001*HALF_PI){Latitude=-HALF_PI}else if(Latitude>HALF_PI&&Latitude<1.001*HALF_PI){Latitude=HALF_PI}else if(Latitude<-HALF_PI||Latitude>HALF_PI){return null}if(Longitude>Math.PI){Longitude-=2*Math.PI}Sin_Lat=Math.sin(Latitude);Cos_Lat=Math.cos(Latitude);Sin2_Lat=Sin_Lat*Sin_Lat;Rn=this.a/Math.sqrt(1-this.es*Sin2_Lat);X=(Rn+Height)*Cos_Lat*Math.cos(Longitude);Y=(Rn+Height)*Cos_Lat*Math.sin(Longitude);Z=(Rn*(1-this.es)+Height)*Sin_Lat;p.x=X;p.y=Y;p.z=Z;return Error_Code},geocentric_to_geodetic:function(p){var genau=1e-12;var genau2=genau*genau;var maxiter=30;var P;var RR;var CT;var ST;var RX;var RK;var RN;var CPHI0;var SPHI0;var CPHI;var SPHI;var SDPHI;var At_Pole;var iter;var X=p.x;var Y=p.y;var Z=p.z?p.z:0;var Longitude;var Latitude;var Height;At_Pole=false;P=Math.sqrt(X*X+Y*Y);RR=Math.sqrt(X*X+Y*Y+Z*Z);if(P/this.agenau2&&iter0){Longitude=HALF_PI}else if(Y<0){Longitude=-HALF_PI}else{At_Pole=true;Longitude=0;if(Z>0){Latitude=HALF_PI}else if(Z<0){Latitude=-HALF_PI}else{Latitude=HALF_PI;Height=-this.b;return}}}W2=X*X+Y*Y;W=Math.sqrt(W2);T0=Z*AD_C;S0=Math.sqrt(T0*T0+W2);Sin_B0=T0/S0;Cos_B0=W/S0;Sin3_B0=Sin_B0*Sin_B0*Sin_B0;T1=Z+this.b*this.ep2*Sin3_B0;Sum=W-this.a*this.es*Cos_B0*Cos_B0*Cos_B0;S1=Math.sqrt(T1*T1+Sum*Sum);Sin_p1=T1/S1;Cos_p1=Sum/S1;Rn=this.a/Math.sqrt(1-this.es*Sin_p1*Sin_p1);if(Cos_p1>=COS_67P5){Height=W/Cos_p1-Rn}else if(Cos_p1<=-COS_67P5){Height=W/-Cos_p1-Rn}else{Height=Z/Sin_p1+Rn*(this.es-1)}if(At_Pole===false){Latitude=Math.atan(Sin_p1/Cos_p1)}p.x=Longitude;p.y=Latitude;p.z=Height;return p},geocentric_to_wgs84:function(p){if(this.datum_type===PJD_3PARAM){p.x+=this.datum_params[0];p.y+=this.datum_params[1];p.z+=this.datum_params[2]}else if(this.datum_type===PJD_7PARAM){var Dx_BF=this.datum_params[0];var Dy_BF=this.datum_params[1];var Dz_BF=this.datum_params[2];var Rx_BF=this.datum_params[3];var Ry_BF=this.datum_params[4];var Rz_BF=this.datum_params[5];var M_BF=this.datum_params[6];var x_out=M_BF*(p.x-Rz_BF*p.y+Ry_BF*p.z)+Dx_BF;var y_out=M_BF*(Rz_BF*p.x+p.y-Rx_BF*p.z)+Dy_BF;var z_out=M_BF*(-Ry_BF*p.x+Rx_BF*p.y+p.z)+Dz_BF;p.x=x_out;p.y=y_out;p.z=z_out}},geocentric_from_wgs84:function(p){if(this.datum_type===PJD_3PARAM){p.x-=this.datum_params[0];p.y-=this.datum_params[1];p.z-=this.datum_params[2]}else if(this.datum_type===PJD_7PARAM){var Dx_BF=this.datum_params[0];var Dy_BF=this.datum_params[1];var Dz_BF=this.datum_params[2];var Rx_BF=this.datum_params[3];var Ry_BF=this.datum_params[4];var Rz_BF=this.datum_params[5];var M_BF=this.datum_params[6];var x_tmp=(p.x-Dx_BF)/M_BF;var y_tmp=(p.y-Dy_BF)/M_BF;var z_tmp=(p.z-Dz_BF)/M_BF;p.x=x_tmp+Rz_BF*y_tmp-Ry_BF*z_tmp;p.y=-Rz_BF*x_tmp+y_tmp+Rx_BF*z_tmp;p.z=Ry_BF*x_tmp-Rx_BF*y_tmp+z_tmp}}};module.exports=datum},{}],"/data/github/geopackage-node/node_modules/proj4/lib/datum_transform.js":[function(require,module,exports){var PJD_3PARAM=1;var PJD_7PARAM=2;var PJD_GRIDSHIFT=3;var PJD_NODATUM=5;var SRS_WGS84_SEMIMAJOR=6378137;var SRS_WGS84_ESQUARED=.006694379990141316;module.exports=function(source,dest,point){var wp,i,l;function checkParams(fallback){return fallback===PJD_3PARAM||fallback===PJD_7PARAM}if(source.compare_datums(dest)){return point}if(source.datum_type===PJD_NODATUM||dest.datum_type===PJD_NODATUM){return point}var src_a=source.a;var src_es=source.es;var dst_a=dest.a;var dst_es=dest.es;var fallback=source.datum_type;if(fallback===PJD_GRIDSHIFT){if(this.apply_gridshift(source,0,point)===0){source.a=SRS_WGS84_SEMIMAJOR;source.es=SRS_WGS84_ESQUARED}else{if(!source.datum_params){source.a=src_a;source.es=source.es;return point}wp=1;for(i=0,l=source.datum_params.length;i3){fallback=PJD_7PARAM}else{fallback=PJD_3PARAM}}}if(dest.datum_type===PJD_GRIDSHIFT){dest.a=SRS_WGS84_SEMIMAJOR;dest.es=SRS_WGS84_ESQUARED}if(source.es!==dest.es||source.a!==dest.a||checkParams(fallback)||checkParams(dest.datum_type)){source.geodetic_to_geocentric(point);if(checkParams(source.datum_type)){source.geocentric_to_wgs84(point)}if(checkParams(dest.datum_type)){dest.geocentric_from_wgs84(point)}dest.geocentric_to_geodetic(point)}if(dest.datum_type===PJD_GRIDSHIFT){this.apply_gridshift(dest,1,point)}source.a=src_a;source.es=src_es;dest.a=dst_a;dest.es=dst_es;return point}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/defs.js":[function(require,module,exports){var globals=require("./global");var parseProj=require("./projString");var wkt=require("./wkt");function defs(name){var that=this;if(arguments.length===2){var def=arguments[1];if(typeof def==="string"){if(def.charAt(0)==="+"){defs[name]=parseProj(arguments[1])}else{defs[name]=wkt(arguments[1])}}else{defs[name]=def}}else if(arguments.length===1){if(Array.isArray(name)){return name.map(function(v){if(Array.isArray(v)){defs.apply(that,v)}else{defs(v)}})}else if(typeof name==="string"){if(name in defs){return defs[name]}}else if("EPSG"in name){defs["EPSG:"+name.EPSG]=name}else if("ESRI"in name){defs["ESRI:"+name.ESRI]=name}else if("IAU2000"in name){defs["IAU2000:"+name.IAU2000]=name}else{console.log(name)}return}}globals(defs);module.exports=defs},{"./global":"/data/github/geopackage-node/node_modules/proj4/lib/global.js","./projString":"/data/github/geopackage-node/node_modules/proj4/lib/projString.js","./wkt":"/data/github/geopackage-node/node_modules/proj4/lib/wkt.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/deriveConstants.js":[function(require,module,exports){var Datum=require("./constants/Datum");var Ellipsoid=require("./constants/Ellipsoid");var extend=require("./extend");var datum=require("./datum");var EPSLN=1e-10;var SIXTH=.16666666666666666;var RA4=.04722222222222222;var RA6=.022156084656084655;module.exports=function(json){if(json.datumCode&&json.datumCode!=="none"){var datumDef=Datum[json.datumCode];if(datumDef){json.datum_params=datumDef.towgs84?datumDef.towgs84.split(","):null;json.ellps=datumDef.ellipse;json.datumName=datumDef.datumName?datumDef.datumName:json.datumCode}}if(!json.a){var ellipse=Ellipsoid[json.ellps]?Ellipsoid[json.ellps]:Ellipsoid.WGS84;extend(json,ellipse)}if(json.rf&&!json.b){json.b=(1-1/json.rf)*json.a}if(json.rf===0||Math.abs(json.a-json.b)EPSLN){this.ns0=(this.ms1*this.ms1-this.ms2*this.ms2)/(this.qs2-this.qs1)}else{this.ns0=this.con}this.c=this.ms1*this.ms1+this.ns0*this.qs1;this.rh=this.a*Math.sqrt(this.c-this.ns0*this.qs0)/this.ns0};exports.forward=function(p){var lon=p.x;var lat=p.y;this.sin_phi=Math.sin(lat);this.cos_phi=Math.cos(lat);var qs=qsfnz(this.e3,this.sin_phi,this.cos_phi);var rh1=this.a*Math.sqrt(this.c-this.ns0*qs)/this.ns0;var theta=this.ns0*adjust_lon(lon-this.long0);var x=rh1*Math.sin(theta)+this.x0;var y=this.rh-rh1*Math.cos(theta)+this.y0;p.x=x;p.y=y;return p};exports.inverse=function(p){var rh1,qs,con,theta,lon,lat;p.x-=this.x0;p.y=this.rh-p.y+this.y0;if(this.ns0>=0){rh1=Math.sqrt(p.x*p.x+p.y*p.y);con=1}else{rh1=-Math.sqrt(p.x*p.x+p.y*p.y);con=-1}theta=0;if(rh1!==0){theta=Math.atan2(con*p.x,con*p.y)}con=rh1*this.ns0/this.a;if(this.sphere){lat=Math.asin((this.c-con*con)/(2*this.ns0))}else{qs=(this.c-con*con)/this.ns0;lat=this.phi1z(this.e3,qs)}lon=adjust_lon(theta/this.ns0+this.long0);p.x=lon;p.y=lat;return p};exports.phi1z=function(eccent,qs){var sinphi,cosphi,con,com,dphi;var phi=asinz(.5*qs);if(eccent2*HALF_PI*this.a){return}z=rh/this.a;sinz=Math.sin(z);cosz=Math.cos(z);lon=this.long0;if(Math.abs(rh)<=EPSLN){lat=this.lat0}else{lat=asinz(cosz*this.sin_p12+p.y*sinz*this.cos_p12/rh);con=Math.abs(this.lat0)-HALF_PI;if(Math.abs(con)<=EPSLN){if(this.lat0>=0){lon=adjust_lon(this.long0+Math.atan2(p.x,-p.y))}else{lon=adjust_lon(this.long0-Math.atan2(-p.x,p.y))}}else{lon=adjust_lon(this.long0+Math.atan2(p.x*sinz,rh*this.cos_p12*cosz-p.y*this.sin_p12*sinz))}}p.x=lon;p.y=lat;return p}else{e0=e0fn(this.es);e1=e1fn(this.es);e2=e2fn(this.es);e3=e3fn(this.es);if(Math.abs(this.sin_p12-1)<=EPSLN){Mlp=this.a*mlfn(e0,e1,e2,e3,HALF_PI);rh=Math.sqrt(p.x*p.x+p.y*p.y);M=Mlp-rh;lat=imlfn(M/this.a,e0,e1,e2,e3);lon=adjust_lon(this.long0+Math.atan2(p.x,-1*p.y));p.x=lon;p.y=lat;return p}else if(Math.abs(this.sin_p12+1)<=EPSLN){Mlp=this.a*mlfn(e0,e1,e2,e3,HALF_PI);rh=Math.sqrt(p.x*p.x+p.y*p.y);M=rh-Mlp;lat=imlfn(M/this.a,e0,e1,e2,e3);lon=adjust_lon(this.long0+Math.atan2(p.x,p.y));p.x=lon;p.y=lat;return p}else{rh=Math.sqrt(p.x*p.x+p.y*p.y);Az=Math.atan2(p.x,p.y);N1=gN(this.a,this.e,this.sin_p12);cosAz=Math.cos(Az);tmp=this.e*this.cos_p12*cosAz;A=-tmp*tmp/(1-this.es);B=3*this.es*(1-A)*this.sin_p12*this.cos_p12*cosAz/(1-this.es);D=rh/N1;Ee=D-A*(1+A)*Math.pow(D,3)/6-B*(1+3*A)*Math.pow(D,4)/24;F=1-A*Ee*Ee/2-D*Ee*Ee*Ee/6;psi=Math.asin(this.sin_p12*Math.cos(Ee)+this.cos_p12*Math.sin(Ee)*cosAz);lon=adjust_lon(this.long0+Math.asin(Math.sin(Az)*Math.sin(Ee)/Math.cos(psi)));lat=Math.atan((1-this.es*F*this.sin_p12/Math.sin(psi))*Math.tan(psi)/(1-this.es));p.x=lon;p.y=lat;return p}}};exports.names=["Azimuthal_Equidistant","aeqd"]},{"../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js","../common/asinz":"/data/github/geopackage-node/node_modules/proj4/lib/common/asinz.js","../common/e0fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e0fn.js","../common/e1fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e1fn.js","../common/e2fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e2fn.js","../common/e3fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e3fn.js","../common/gN":"/data/github/geopackage-node/node_modules/proj4/lib/common/gN.js","../common/imlfn":"/data/github/geopackage-node/node_modules/proj4/lib/common/imlfn.js","../common/mlfn":"/data/github/geopackage-node/node_modules/proj4/lib/common/mlfn.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/cass.js":[function(require,module,exports){var mlfn=require("../common/mlfn");var e0fn=require("../common/e0fn");var e1fn=require("../common/e1fn");var e2fn=require("../common/e2fn");var e3fn=require("../common/e3fn");var gN=require("../common/gN");var adjust_lon=require("../common/adjust_lon");var adjust_lat=require("../common/adjust_lat");var imlfn=require("../common/imlfn");var HALF_PI=Math.PI/2;var EPSLN=1e-10;exports.init=function(){if(!this.sphere){this.e0=e0fn(this.es);this.e1=e1fn(this.es);this.e2=e2fn(this.es);this.e3=e3fn(this.es);this.ml0=this.a*mlfn(this.e0,this.e1,this.e2,this.e3,this.lat0)}};exports.forward=function(p){var x,y;var lam=p.x;var phi=p.y;lam=adjust_lon(lam-this.long0);if(this.sphere){x=this.a*Math.asin(Math.cos(phi)*Math.sin(lam));y=this.a*(Math.atan2(Math.tan(phi),Math.cos(lam))-this.lat0)}else{var sinphi=Math.sin(phi);var cosphi=Math.cos(phi);var nl=gN(this.a,this.e,sinphi);var tl=Math.tan(phi)*Math.tan(phi);var al=lam*Math.cos(phi);var asq=al*al;var cl=this.es*cosphi*cosphi/(1-this.es);var ml=this.a*mlfn(this.e0,this.e1,this.e2,this.e3,phi);x=nl*al*(1-asq*tl*(1/6-(8-tl+8*cl)*asq/120));y=ml-this.ml0+nl*sinphi/cosphi*asq*(.5+(5-tl+6*cl)*asq/24)}p.x=x+this.x0;p.y=y+this.y0;return p};exports.inverse=function(p){p.x-=this.x0;p.y-=this.y0;var x=p.x/this.a;var y=p.y/this.a;var phi,lam;if(this.sphere){var dd=y+this.lat0;phi=Math.asin(Math.sin(dd)*Math.cos(x));lam=Math.atan2(Math.tan(x),Math.cos(dd))}else{var ml1=this.ml0/this.a+y;var phi1=imlfn(ml1,this.e0,this.e1,this.e2,this.e3);if(Math.abs(Math.abs(phi1)-HALF_PI)<=EPSLN){p.x=this.long0;p.y=HALF_PI;if(y<0){p.y*=-1}return p}var nl1=gN(this.a,this.e,Math.sin(phi1));var rl1=nl1*nl1*nl1/this.a/this.a*(1-this.es);var tl1=Math.pow(Math.tan(phi1),2);var dl=x*this.a/nl1;var dsq=dl*dl;phi=phi1-nl1*Math.tan(phi1)/rl1*dl*dl*(.5-(1+3*tl1)*dl*dl/24);lam=dl*(1-dsq*(tl1/3+(1+3*tl1)*tl1*dsq/15))/Math.cos(phi1)}p.x=adjust_lon(lam+this.long0);p.y=adjust_lat(phi);return p};exports.names=["Cassini","Cassini_Soldner","cass"]},{"../common/adjust_lat":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lat.js","../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js","../common/e0fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e0fn.js","../common/e1fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e1fn.js","../common/e2fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e2fn.js","../common/e3fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e3fn.js","../common/gN":"/data/github/geopackage-node/node_modules/proj4/lib/common/gN.js","../common/imlfn":"/data/github/geopackage-node/node_modules/proj4/lib/common/imlfn.js","../common/mlfn":"/data/github/geopackage-node/node_modules/proj4/lib/common/mlfn.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/cea.js":[function(require,module,exports){var adjust_lon=require("../common/adjust_lon");var qsfnz=require("../common/qsfnz");var msfnz=require("../common/msfnz");var iqsfnz=require("../common/iqsfnz");exports.init=function(){if(!this.sphere){this.k0=msfnz(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts))}};exports.forward=function(p){var lon=p.x;var lat=p.y;var x,y;var dlon=adjust_lon(lon-this.long0);if(this.sphere){x=this.x0+this.a*dlon*Math.cos(this.lat_ts);y=this.y0+this.a*Math.sin(lat)/Math.cos(this.lat_ts)}else{var qs=qsfnz(this.e,Math.sin(lat));x=this.x0+this.a*this.k0*dlon;y=this.y0+this.a*qs*.5/this.k0}p.x=x;p.y=y;return p};exports.inverse=function(p){p.x-=this.x0;p.y-=this.y0;var lon,lat;if(this.sphere){lon=adjust_lon(this.long0+p.x/this.a/Math.cos(this.lat_ts)); -lat=Math.asin(p.y/this.a*Math.cos(this.lat_ts))}else{lat=iqsfnz(this.e,2*p.y*this.k0/this.a);lon=adjust_lon(this.long0+p.x/(this.a*this.k0))}p.x=lon;p.y=lat;return p};exports.names=["cea"]},{"../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js","../common/iqsfnz":"/data/github/geopackage-node/node_modules/proj4/lib/common/iqsfnz.js","../common/msfnz":"/data/github/geopackage-node/node_modules/proj4/lib/common/msfnz.js","../common/qsfnz":"/data/github/geopackage-node/node_modules/proj4/lib/common/qsfnz.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/eqc.js":[function(require,module,exports){var adjust_lon=require("../common/adjust_lon");var adjust_lat=require("../common/adjust_lat");exports.init=function(){this.x0=this.x0||0;this.y0=this.y0||0;this.lat0=this.lat0||0;this.long0=this.long0||0;this.lat_ts=this.lat_ts||0;this.title=this.title||"Equidistant Cylindrical (Plate Carre)";this.rc=Math.cos(this.lat_ts)};exports.forward=function(p){var lon=p.x;var lat=p.y;var dlon=adjust_lon(lon-this.long0);var dlat=adjust_lat(lat-this.lat0);p.x=this.x0+this.a*dlon*this.rc;p.y=this.y0+this.a*dlat;return p};exports.inverse=function(p){var x=p.x;var y=p.y;p.x=adjust_lon(this.long0+(x-this.x0)/(this.a*this.rc));p.y=adjust_lat(this.lat0+(y-this.y0)/this.a);return p};exports.names=["Equirectangular","Equidistant_Cylindrical","eqc"]},{"../common/adjust_lat":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lat.js","../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/eqdc.js":[function(require,module,exports){var e0fn=require("../common/e0fn");var e1fn=require("../common/e1fn");var e2fn=require("../common/e2fn");var e3fn=require("../common/e3fn");var msfnz=require("../common/msfnz");var mlfn=require("../common/mlfn");var adjust_lon=require("../common/adjust_lon");var adjust_lat=require("../common/adjust_lat");var imlfn=require("../common/imlfn");var EPSLN=1e-10;exports.init=function(){if(Math.abs(this.lat1+this.lat2)=0){rh1=Math.sqrt(p.x*p.x+p.y*p.y);con=1}else{rh1=-Math.sqrt(p.x*p.x+p.y*p.y);con=-1}var theta=0;if(rh1!==0){theta=Math.atan2(con*p.x,con*p.y)}if(this.sphere){lon=adjust_lon(this.long0+theta/this.ns);lat=adjust_lat(this.g-rh1/this.a);p.x=lon;p.y=lat;return p}else{var ml=this.g-rh1/this.a;lat=imlfn(ml,this.e0,this.e1,this.e2,this.e3);lon=adjust_lon(this.long0+theta/this.ns);p.x=lon;p.y=lat;return p}};exports.names=["Equidistant_Conic","eqdc"]},{"../common/adjust_lat":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lat.js","../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js","../common/e0fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e0fn.js","../common/e1fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e1fn.js","../common/e2fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e2fn.js","../common/e3fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e3fn.js","../common/imlfn":"/data/github/geopackage-node/node_modules/proj4/lib/common/imlfn.js","../common/mlfn":"/data/github/geopackage-node/node_modules/proj4/lib/common/mlfn.js","../common/msfnz":"/data/github/geopackage-node/node_modules/proj4/lib/common/msfnz.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/gauss.js":[function(require,module,exports){var FORTPI=Math.PI/4;var srat=require("../common/srat");var HALF_PI=Math.PI/2;var MAX_ITER=20;exports.init=function(){var sphi=Math.sin(this.lat0);var cphi=Math.cos(this.lat0);cphi*=cphi;this.rc=Math.sqrt(1-this.es)/(1-this.es*sphi*sphi);this.C=Math.sqrt(1+this.es*cphi*cphi/(1-this.es));this.phic0=Math.asin(sphi/this.C);this.ratexp=.5*this.C*this.e;this.K=Math.tan(.5*this.phic0+FORTPI)/(Math.pow(Math.tan(.5*this.lat0+FORTPI),this.C)*srat(this.e*sphi,this.ratexp))};exports.forward=function(p){var lon=p.x;var lat=p.y;p.y=2*Math.atan(this.K*Math.pow(Math.tan(.5*lat+FORTPI),this.C)*srat(this.e*Math.sin(lat),this.ratexp))-HALF_PI;p.x=this.C*lon;return p};exports.inverse=function(p){var DEL_TOL=1e-14;var lon=p.x/this.C;var lat=p.y;var num=Math.pow(Math.tan(.5*lat+FORTPI)/this.K,1/this.C);for(var i=MAX_ITER;i>0;--i){lat=2*Math.atan(num*srat(this.e*Math.sin(p.y),-.5*this.e))-HALF_PI;if(Math.abs(lat-p.y)0||Math.abs(g)<=EPSLN){x=this.x0+this.a*ksp*cosphi*Math.sin(dlon)/g;y=this.y0+this.a*ksp*(this.cos_p14*sinphi-this.sin_p14*cosphi*coslon)/g}else{x=this.x0+this.infinity_dist*cosphi*Math.sin(dlon);y=this.y0+this.infinity_dist*(this.cos_p14*sinphi-this.sin_p14*cosphi*coslon)}p.x=x;p.y=y;return p};exports.inverse=function(p){var rh;var sinc,cosc;var c;var lon,lat;p.x=(p.x-this.x0)/this.a;p.y=(p.y-this.y0)/this.a;p.x/=this.k0;p.y/=this.k0;if(rh=Math.sqrt(p.x*p.x+p.y*p.y)){c=Math.atan2(rh,this.rc);sinc=Math.sin(c);cosc=Math.cos(c);lat=asinz(cosc*this.sin_p14+p.y*sinc*this.cos_p14/rh);lon=Math.atan2(p.x*sinc,rh*this.cos_p14*cosc-p.y*this.sin_p14*sinc);lon=adjust_lon(this.long0+lon)}else{lat=this.phic0;lon=0}p.x=lon;p.y=lat;return p};exports.names=["gnom"]},{"../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js","../common/asinz":"/data/github/geopackage-node/node_modules/proj4/lib/common/asinz.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/krovak.js":[function(require,module,exports){var adjust_lon=require("../common/adjust_lon");exports.init=function(){this.a=6377397.155;this.es=.006674372230614;this.e=Math.sqrt(this.es);if(!this.lat0){this.lat0=.863937979737193}if(!this.long0){this.long0=.7417649320975901-.308341501185665}if(!this.k0){this.k0=.9999}this.s45=.785398163397448;this.s90=2*this.s45;this.fi0=this.lat0;this.e2=this.es;this.e=Math.sqrt(this.e2);this.alfa=Math.sqrt(1+this.e2*Math.pow(Math.cos(this.fi0),4)/(1-this.e2));this.uq=1.04216856380474;this.u0=Math.asin(Math.sin(this.fi0)/this.alfa);this.g=Math.pow((1+this.e*Math.sin(this.fi0))/(1-this.e*Math.sin(this.fi0)),this.alfa*this.e/2);this.k=Math.tan(this.u0/2+this.s45)/Math.pow(Math.tan(this.fi0/2+this.s45),this.alfa)*this.g;this.k1=this.k0;this.n0=this.a*Math.sqrt(1-this.e2)/(1-this.e2*Math.pow(Math.sin(this.fi0),2));this.s0=1.37008346281555;this.n=Math.sin(this.s0);this.ro0=this.k1*this.n0/Math.tan(this.s0);this.ad=this.s90-this.uq};exports.forward=function(p){var gfi,u,deltav,s,d,eps,ro;var lon=p.x;var lat=p.y;var delta_lon=adjust_lon(lon-this.long0);gfi=Math.pow((1+this.e*Math.sin(lat))/(1-this.e*Math.sin(lat)),this.alfa*this.e/2);u=2*(Math.atan(this.k*Math.pow(Math.tan(lat/2+this.s45),this.alfa)/gfi)-this.s45);deltav=-delta_lon*this.alfa;s=Math.asin(Math.cos(this.ad)*Math.sin(u)+Math.sin(this.ad)*Math.cos(u)*Math.cos(deltav));d=Math.asin(Math.cos(u)*Math.sin(deltav)/Math.cos(s));eps=this.n*d;ro=this.ro0*Math.pow(Math.tan(this.s0/2+this.s45),this.n)/Math.pow(Math.tan(s/2+this.s45),this.n);p.y=ro*Math.cos(eps)/1;p.x=ro*Math.sin(eps)/1;if(!this.czech){p.y*=-1;p.x*=-1}return p};exports.inverse=function(p){var u,deltav,s,d,eps,ro,fi1;var ok;var tmp=p.x;p.x=p.y;p.y=tmp;if(!this.czech){p.y*=-1;p.x*=-1}ro=Math.sqrt(p.x*p.x+p.y*p.y);eps=Math.atan2(p.y,p.x);d=eps/Math.sin(this.s0);s=2*(Math.atan(Math.pow(this.ro0/ro,1/this.n)*Math.tan(this.s0/2+this.s45))-this.s45);u=Math.asin(Math.cos(this.ad)*Math.sin(s)-Math.sin(this.ad)*Math.cos(s)*Math.cos(d));deltav=Math.asin(Math.cos(s)*Math.sin(d)/Math.cos(u));p.x=this.long0-deltav/this.alfa;fi1=u;ok=0;var iter=0;do{p.y=2*(Math.atan(Math.pow(this.k,-1/this.alfa)*Math.pow(Math.tan(u/2+this.s45),1/this.alfa)*Math.pow((1+this.e*Math.sin(fi1))/(1-this.e*Math.sin(fi1)),this.e/2))-this.s45);if(Math.abs(fi1-p.y)<1e-10){ok=1}fi1=p.y;iter+=1}while(ok===0&&iter<15);if(iter>=15){return null}return p};exports.names=["Krovak","krovak"]},{"../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/laea.js":[function(require,module,exports){var HALF_PI=Math.PI/2;var FORTPI=Math.PI/4;var EPSLN=1e-10;var qsfnz=require("../common/qsfnz");var adjust_lon=require("../common/adjust_lon");exports.S_POLE=1;exports.N_POLE=2;exports.EQUIT=3;exports.OBLIQ=4;exports.init=function(){var t=Math.abs(this.lat0);if(Math.abs(t-HALF_PI)0){var sinphi;this.qp=qsfnz(this.e,1);this.mmf=.5/(1-this.es);this.apa=this.authset(this.es);switch(this.mode){case this.N_POLE:this.dd=1;break;case this.S_POLE:this.dd=1;break;case this.EQUIT:this.rq=Math.sqrt(.5*this.qp);this.dd=1/this.rq;this.xmf=1;this.ymf=.5*this.qp;break;case this.OBLIQ:this.rq=Math.sqrt(.5*this.qp);sinphi=Math.sin(this.lat0);this.sinb1=qsfnz(this.e,sinphi)/this.qp;this.cosb1=Math.sqrt(1-this.sinb1*this.sinb1);this.dd=Math.cos(this.lat0)/(Math.sqrt(1-this.es*sinphi*sinphi)*this.rq*this.cosb1);this.ymf=(this.xmf=this.rq)/this.dd;this.xmf*=this.dd;break}}else{if(this.mode===this.OBLIQ){this.sinph0=Math.sin(this.lat0);this.cosph0=Math.cos(this.lat0)}}};exports.forward=function(p){var x,y,coslam,sinlam,sinphi,q,sinb,cosb,b,cosphi;var lam=p.x;var phi=p.y;lam=adjust_lon(lam-this.long0);if(this.sphere){sinphi=Math.sin(phi);cosphi=Math.cos(phi);coslam=Math.cos(lam);if(this.mode===this.OBLIQ||this.mode===this.EQUIT){y=this.mode===this.EQUIT?1+cosphi*coslam:1+this.sinph0*sinphi+this.cosph0*cosphi*coslam;if(y<=EPSLN){return null}y=Math.sqrt(2/y);x=y*cosphi*Math.sin(lam);y*=this.mode===this.EQUIT?sinphi:this.cosph0*sinphi-this.sinph0*cosphi*coslam}else if(this.mode===this.N_POLE||this.mode===this.S_POLE){if(this.mode===this.N_POLE){coslam=-coslam}if(Math.abs(phi+this.phi0)=0){x=(b=Math.sqrt(q))*sinlam;y=coslam*(this.mode===this.S_POLE?b:-b)}else{x=y=0}break}}p.x=this.a*x+this.x0;p.y=this.a*y+this.y0;return p};exports.inverse=function(p){p.x-=this.x0;p.y-=this.y0;var x=p.x/this.a;var y=p.y/this.a;var lam,phi,cCe,sCe,q,rho,ab;if(this.sphere){var cosz=0,rh,sinz=0;rh=Math.sqrt(x*x+y*y);phi=rh*.5;if(phi>1){return null}phi=2*Math.asin(phi);if(this.mode===this.OBLIQ||this.mode===this.EQUIT){sinz=Math.sin(phi);cosz=Math.cos(phi)}switch(this.mode){case this.EQUIT:phi=Math.abs(rh)<=EPSLN?0:Math.asin(y*sinz/rh);x*=sinz;y=cosz*rh;break;case this.OBLIQ:phi=Math.abs(rh)<=EPSLN?this.phi0:Math.asin(cosz*this.sinph0+y*sinz*this.cosph0/rh);x*=sinz*this.cosph0;y=(cosz-Math.sin(phi)*this.sinph0)*rh;break;case this.N_POLE:y=-y;phi=HALF_PI-phi;break;case this.S_POLE:phi-=HALF_PI;break}lam=y===0&&(this.mode===this.EQUIT||this.mode===this.OBLIQ)?0:Math.atan2(x,y)}else{ab=0;if(this.mode===this.OBLIQ||this.mode===this.EQUIT){x/=this.dd;y*=this.dd;rho=Math.sqrt(x*x+y*y);if(rhoEPSLN){this.ns=Math.log(ms1/ms2)/Math.log(ts1/ts2)}else{this.ns=sin1}if(isNaN(this.ns)){this.ns=sin1}this.f0=ms1/(this.ns*Math.pow(ts1,this.ns));this.rh=this.a*this.f0*Math.pow(ts0,this.ns);if(!this.title){this.title="Lambert Conformal Conic"}};exports.forward=function(p){var lon=p.x;var lat=p.y;if(Math.abs(2*Math.abs(lat)-Math.PI)<=EPSLN){lat=sign(lat)*(HALF_PI-2*EPSLN)}var con=Math.abs(Math.abs(lat)-HALF_PI);var ts,rh1;if(con>EPSLN){ts=tsfnz(this.e,lat,Math.sin(lat));rh1=this.a*this.f0*Math.pow(ts,this.ns)}else{con=lat*this.ns;if(con<=0){return null}rh1=0}var theta=this.ns*adjust_lon(lon-this.long0);p.x=this.k0*(rh1*Math.sin(theta))+this.x0;p.y=this.k0*(this.rh-rh1*Math.cos(theta))+this.y0;return p};exports.inverse=function(p){var rh1,con,ts;var lat,lon;var x=(p.x-this.x0)/this.k0;var y=this.rh-(p.y-this.y0)/this.k0;if(this.ns>0){rh1=Math.sqrt(x*x+y*y);con=1}else{rh1=-Math.sqrt(x*x+y*y);con=-1}var theta=0;if(rh1!==0){theta=Math.atan2(con*x,con*y)}if(rh1!==0||this.ns>0){con=1/this.ns;ts=Math.pow(rh1/(this.a*this.f0),con);lat=phi2z(this.e,ts);if(lat===-9999){return null}}else{lat=-HALF_PI}lon=adjust_lon(theta/this.ns+this.long0);p.x=lon;p.y=lat;return p};exports.names=["Lambert Tangential Conformal Conic Projection","Lambert_Conformal_Conic","Lambert_Conformal_Conic_2SP","lcc"]},{"../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js","../common/msfnz":"/data/github/geopackage-node/node_modules/proj4/lib/common/msfnz.js","../common/phi2z":"/data/github/geopackage-node/node_modules/proj4/lib/common/phi2z.js","../common/sign":"/data/github/geopackage-node/node_modules/proj4/lib/common/sign.js","../common/tsfnz":"/data/github/geopackage-node/node_modules/proj4/lib/common/tsfnz.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/longlat.js":[function(require,module,exports){exports.init=function(){};function identity(pt){return pt}exports.forward=identity;exports.inverse=identity;exports.names=["longlat","identity"]},{}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/merc.js":[function(require,module,exports){var msfnz=require("../common/msfnz");var HALF_PI=Math.PI/2;var EPSLN=1e-10;var R2D=57.29577951308232;var adjust_lon=require("../common/adjust_lon");var FORTPI=Math.PI/4;var tsfnz=require("../common/tsfnz");var phi2z=require("../common/phi2z");exports.init=function(){var con=this.b/this.a;this.es=1-con*con;if(!("x0"in this)){this.x0=0}if(!("y0"in this)){this.y0=0}this.e=Math.sqrt(this.es);if(this.lat_ts){if(this.sphere){this.k0=Math.cos(this.lat_ts)}else{this.k0=msfnz(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts))}}else{if(!this.k0){if(this.k){this.k0=this.k}else{this.k0=1}}}};exports.forward=function(p){var lon=p.x;var lat=p.y;if(lat*R2D>90&&lat*R2D<-90&&lon*R2D>180&&lon*R2D<-180){return null}var x,y;if(Math.abs(Math.abs(lat)-HALF_PI)<=EPSLN){return null}else{if(this.sphere){x=this.x0+this.a*this.k0*adjust_lon(lon-this.long0);y=this.y0+this.a*this.k0*Math.log(Math.tan(FORTPI+.5*lat))}else{var sinphi=Math.sin(lat);var ts=tsfnz(this.e,lat,sinphi);x=this.x0+this.a*this.k0*adjust_lon(lon-this.long0);y=this.y0-this.a*this.k0*Math.log(ts)}p.x=x;p.y=y;return p}};exports.inverse=function(p){var x=p.x-this.x0;var y=p.y-this.y0;var lon,lat;if(this.sphere){lat=HALF_PI-2*Math.atan(Math.exp(-y/(this.a*this.k0)))}else{var ts=Math.exp(-y/(this.a*this.k0));lat=phi2z(this.e,ts);if(lat===-9999){return null}}lon=adjust_lon(this.long0+x/(this.a*this.k0));p.x=lon;p.y=lat;return p};exports.names=["Mercator","Popular Visualisation Pseudo Mercator","Mercator_1SP","Mercator_Auxiliary_Sphere","merc"]},{"../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js","../common/msfnz":"/data/github/geopackage-node/node_modules/proj4/lib/common/msfnz.js","../common/phi2z":"/data/github/geopackage-node/node_modules/proj4/lib/common/phi2z.js","../common/tsfnz":"/data/github/geopackage-node/node_modules/proj4/lib/common/tsfnz.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/mill.js":[function(require,module,exports){var adjust_lon=require("../common/adjust_lon");exports.init=function(){};exports.forward=function(p){var lon=p.x;var lat=p.y;var dlon=adjust_lon(lon-this.long0);var x=this.x0+this.a*dlon;var y=this.y0+this.a*Math.log(Math.tan(Math.PI/4+lat/2.5))*1.25;p.x=x;p.y=y;return p};exports.inverse=function(p){p.x-=this.x0;p.y-=this.y0;var lon=adjust_lon(this.long0+p.x/this.a);var lat=2.5*(Math.atan(Math.exp(.8*p.y/this.a))-Math.PI/4);p.x=lon;p.y=lat;return p};exports.names=["Miller_Cylindrical","mill"]},{"../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/moll.js":[function(require,module,exports){var adjust_lon=require("../common/adjust_lon");var EPSLN=1e-10;exports.init=function(){};exports.forward=function(p){var lon=p.x;var lat=p.y;var delta_lon=adjust_lon(lon-this.long0);var theta=lat;var con=Math.PI*Math.sin(lat);for(var i=0;true;i++){var delta_theta=-(theta+Math.sin(theta)-con)/(1+Math.cos(theta));theta+=delta_theta;if(Math.abs(delta_theta).999999999999){arg=.999999999999}theta=Math.asin(arg);var lon=adjust_lon(this.long0+p.x/(.900316316158*this.a*Math.cos(theta)));if(lon<-Math.PI){lon=-Math.PI}if(lon>Math.PI){lon=Math.PI}arg=(2*theta+Math.sin(2*theta))/Math.PI;if(Math.abs(arg)>1){arg=1}var lat=Math.asin(arg);p.x=lon;p.y=lat;return p};exports.names=["Mollweide","moll"]},{"../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/nzmg.js":[function(require,module,exports){var SEC_TO_RAD=484813681109536e-20;exports.iterations=1;exports.init=function(){this.A=[];this.A[1]=.6399175073;this.A[2]=-.1358797613;this.A[3]=.063294409;this.A[4]=-.02526853;this.A[5]=.0117879;this.A[6]=-.0055161;this.A[7]=.0026906;this.A[8]=-.001333;this.A[9]=67e-5;this.A[10]=-34e-5;this.B_re=[];this.B_im=[];this.B_re[1]=.7557853228;this.B_im[1]=0;this.B_re[2]=.249204646;this.B_im[2]=.003371507;this.B_re[3]=-.001541739;this.B_im[3]=.04105856;this.B_re[4]=-.10162907;this.B_im[4]=.01727609;this.B_re[5]=-.26623489;this.B_im[5]=-.36249218;this.B_re[6]=-.6870983;this.B_im[6]=-1.1651967;this.C_re=[];this.C_im=[];this.C_re[1]=1.3231270439;this.C_im[1]=0;this.C_re[2]=-.577245789;this.C_im[2]=-.007809598;this.C_re[3]=.508307513;this.C_im[3]=-.112208952;this.C_re[4]=-.15094762;this.C_im[4]=.18200602;this.C_re[5]=1.01418179;this.C_im[5]=1.64497696;this.C_re[6]=1.9660549;this.C_im[6]=2.5127645;this.D=[];this.D[1]=1.5627014243;this.D[2]=.5185406398;this.D[3]=-.03333098;this.D[4]=-.1052906;this.D[5]=-.0368594;this.D[6]=.007317;this.D[7]=.0122;this.D[8]=.00394;this.D[9]=-.0013};exports.forward=function(p){var n;var lon=p.x;var lat=p.y;var delta_lat=lat-this.lat0;var delta_lon=lon-this.long0;var d_phi=delta_lat/SEC_TO_RAD*1e-5;var d_lambda=delta_lon;var d_phi_n=1;var d_psi=0;for(n=1;n<=10;n++){d_phi_n=d_phi_n*d_phi;d_psi=d_psi+this.A[n]*d_phi_n}var th_re=d_psi;var th_im=d_lambda;var th_n_re=1;var th_n_im=0;var th_n_re1;var th_n_im1;var z_re=0;var z_im=0;for(n=1;n<=6;n++){th_n_re1=th_n_re*th_re-th_n_im*th_im;th_n_im1=th_n_im*th_re+th_n_re*th_im;th_n_re=th_n_re1;th_n_im=th_n_im1;z_re=z_re+this.B_re[n]*th_n_re-this.B_im[n]*th_n_im;z_im=z_im+this.B_im[n]*th_n_re+this.B_re[n]*th_n_im}p.x=z_im*this.a+this.x0;p.y=z_re*this.a+this.y0;return p};exports.inverse=function(p){var n;var x=p.x;var y=p.y;var delta_x=x-this.x0;var delta_y=y-this.y0;var z_re=delta_y/this.a;var z_im=delta_x/this.a;var z_n_re=1;var z_n_im=0;var z_n_re1;var z_n_im1;var th_re=0;var th_im=0;for(n=1;n<=6;n++){z_n_re1=z_n_re*z_re-z_n_im*z_im;z_n_im1=z_n_im*z_re+z_n_re*z_im;z_n_re=z_n_re1;z_n_im=z_n_im1;th_re=th_re+this.C_re[n]*z_n_re-this.C_im[n]*z_n_im;th_im=th_im+this.C_im[n]*z_n_re+this.C_re[n]*z_n_im}for(var i=0;i=0){fl=dl+Math.sqrt(dl*dl-1)}else{fl=dl-Math.sqrt(dl*dl-1)}this.el=fl*Math.pow(t0,this.bl);gl=.5*(fl-1/fl);this.gamma0=Math.asin(Math.sin(this.alpha)/dl);this.long0=this.longc-Math.asin(gl*Math.tan(this.gamma0))/this.bl}else{var t1=tsfnz(this.e,this.lat1,Math.sin(this.lat1));var t2=tsfnz(this.e,this.lat2,Math.sin(this.lat2));if(this.lat0>=0){this.el=(dl+Math.sqrt(dl*dl-1))*Math.pow(t0,this.bl)}else{this.el=(dl-Math.sqrt(dl*dl-1))*Math.pow(t0,this.bl)}var hl=Math.pow(t1,this.bl);var ll=Math.pow(t2,this.bl);fl=this.el/hl;gl=.5*(fl-1/fl);var jl=(this.el*this.el-ll*hl)/(this.el*this.el+ll*hl);var pl=(ll-hl)/(ll+hl);var dlon12=adjust_lon(this.long1-this.long2);this.long0=.5*(this.long1+this.long2)-Math.atan(jl*Math.tan(.5*this.bl*dlon12)/pl)/this.bl;this.long0=adjust_lon(this.long0);var dlon10=adjust_lon(this.long1-this.long0);this.gamma0=Math.atan(Math.sin(this.bl*dlon10)/gl);this.alpha=Math.asin(dl*Math.sin(this.gamma0))}if(this.no_off){this.uc=0}else{if(this.lat0>=0){this.uc=this.al/this.bl*Math.atan2(Math.sqrt(dl*dl-1),Math.cos(this.alpha))}else{this.uc=-1*this.al/this.bl*Math.atan2(Math.sqrt(dl*dl-1),Math.cos(this.alpha))}}};exports.forward=function(p){var lon=p.x;var lat=p.y;var dlon=adjust_lon(lon-this.long0);var us,vs;var con;if(Math.abs(Math.abs(lat)-HALF_PI)<=EPSLN){if(lat>0){con=-1}else{con=1}vs=this.al/this.bl*Math.log(Math.tan(FORTPI+con*this.gamma0*.5));us=-1*con*HALF_PI*this.al/this.bl}else{var t=tsfnz(this.e,lat,Math.sin(lat));var ql=this.el/Math.pow(t,this.bl);var sl=.5*(ql-1/ql);var tl=.5*(ql+1/ql);var vl=Math.sin(this.bl*dlon);var ul=(sl*Math.sin(this.gamma0)-vl*Math.cos(this.gamma0))/tl;if(Math.abs(Math.abs(ul)-1)<=EPSLN){vs=Number.POSITIVE_INFINITY}else{vs=.5*this.al*Math.log((1-ul)/(1+ul))/this.bl}if(Math.abs(Math.cos(this.bl*dlon))<=EPSLN){us=this.al*this.bl*dlon}else{us=this.al*Math.atan2(sl*Math.cos(this.gamma0)+vl*Math.sin(this.gamma0),Math.cos(this.bl*dlon))/this.bl}}if(this.no_rot){p.x=this.x0+us;p.y=this.y0+vs}else{us-=this.uc;p.x=this.x0+vs*Math.cos(this.alpha)+us*Math.sin(this.alpha);p.y=this.y0+us*Math.cos(this.alpha)-vs*Math.sin(this.alpha)}return p};exports.inverse=function(p){var us,vs;if(this.no_rot){vs=p.y-this.y0;us=p.x-this.x0}else{vs=(p.x-this.x0)*Math.cos(this.alpha)-(p.y-this.y0)*Math.sin(this.alpha);us=(p.y-this.y0)*Math.cos(this.alpha)+(p.x-this.x0)*Math.sin(this.alpha);us+=this.uc}var qp=Math.exp(-1*this.bl*vs/this.al);var sp=.5*(qp-1/qp);var tp=.5*(qp+1/qp);var vp=Math.sin(this.bl*us/this.al);var up=(vp*Math.cos(this.gamma0)+sp*Math.sin(this.gamma0))/tp;var ts=Math.pow(this.el/Math.sqrt((1+up)/(1-up)),1/this.bl);if(Math.abs(up-1)1e-7){if(++iteration>20){return}S=1/this.alpha*(Math.log(Math.tan(Math.PI/4+b/2))-this.K)+this.e*Math.log(Math.tan(Math.PI/4+Math.asin(this.e*Math.sin(phy))/2));prevPhy=phy;phy=2*Math.atan(Math.exp(S))-Math.PI/2}p.x=lambda;p.y=phy;return p};exports.names=["somerc"]},{}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/stere.js":[function(require,module,exports){var HALF_PI=Math.PI/2;var EPSLN=1e-10;var sign=require("../common/sign");var msfnz=require("../common/msfnz");var tsfnz=require("../common/tsfnz");var phi2z=require("../common/phi2z");var adjust_lon=require("../common/adjust_lon");exports.ssfn_=function(phit,sinphi,eccen){sinphi*=eccen;return Math.tan(.5*(HALF_PI+phit))*Math.pow((1-sinphi)/(1+sinphi),.5*eccen)};exports.init=function(){this.coslat0=Math.cos(this.lat0);this.sinlat0=Math.sin(this.lat0);if(this.sphere){if(this.k0===1&&!isNaN(this.lat_ts)&&Math.abs(this.coslat0)<=EPSLN){this.k0=.5*(1+sign(this.lat0)*Math.sin(this.lat_ts))}}else{if(Math.abs(this.coslat0)<=EPSLN){if(this.lat0>0){this.con=1}else{this.con=-1}}this.cons=Math.sqrt(Math.pow(1+this.e,1+this.e)*Math.pow(1-this.e,1-this.e));if(this.k0===1&&!isNaN(this.lat_ts)&&Math.abs(this.coslat0)<=EPSLN){this.k0=.5*this.cons*msfnz(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts))/tsfnz(this.e,this.con*this.lat_ts,this.con*Math.sin(this.lat_ts))}this.ms1=msfnz(this.e,this.sinlat0,this.coslat0);this.X0=2*Math.atan(this.ssfn_(this.lat0,this.sinlat0,this.e))-HALF_PI;this.cosX0=Math.cos(this.X0);this.sinX0=Math.sin(this.X0)}};exports.forward=function(p){var lon=p.x;var lat=p.y;var sinlat=Math.sin(lat);var coslat=Math.cos(lat);var A,X,sinX,cosX,ts,rh;var dlon=adjust_lon(lon-this.long0);if(Math.abs(Math.abs(lon-this.long0)-Math.PI)<=EPSLN&&Math.abs(lat+this.lat0)<=EPSLN){p.x=NaN;p.y=NaN;return p}if(this.sphere){A=2*this.k0/(1+this.sinlat0*sinlat+this.coslat0*coslat*Math.cos(dlon));p.x=this.a*A*coslat*Math.sin(dlon)+this.x0;p.y=this.a*A*(this.coslat0*sinlat-this.sinlat0*coslat*Math.cos(dlon))+this.y0;return p}else{X=2*Math.atan(this.ssfn_(lat,sinlat,this.e))-HALF_PI;cosX=Math.cos(X);sinX=Math.sin(X);if(Math.abs(this.coslat0)<=EPSLN){ts=tsfnz(this.e,lat*this.con,this.con*sinlat);rh=2*this.a*this.k0*ts/this.cons;p.x=this.x0+rh*Math.sin(lon-this.long0);p.y=this.y0-this.con*rh*Math.cos(lon-this.long0);return p}else if(Math.abs(this.sinlat0)0){lon=adjust_lon(this.long0+Math.atan2(p.x,-1*p.y))}else{lon=adjust_lon(this.long0+Math.atan2(p.x,p.y))}}else{lon=adjust_lon(this.long0+Math.atan2(p.x*Math.sin(c),rh*this.coslat0*Math.cos(c)-p.y*this.sinlat0*Math.sin(c)))}p.x=lon;p.y=lat;return p}else{if(Math.abs(this.coslat0)<=EPSLN){if(rh<=EPSLN){lat=this.lat0;lon=this.long0;p.x=lon;p.y=lat;return p}p.x*=this.con;p.y*=this.con;ts=rh*this.cons/(2*this.a*this.k0);lat=this.con*phi2z(this.e,ts);lon=this.con*adjust_lon(this.con*this.long0+Math.atan2(p.x,-1*p.y))}else{ce=2*Math.atan(rh*this.cosX0/(2*this.a*this.k0*this.ms1));lon=this.long0;if(rh<=EPSLN){Chi=this.X0}else{Chi=Math.asin(Math.cos(ce)*this.sinX0+p.y*Math.sin(ce)*this.cosX0/rh);lon=adjust_lon(this.long0+Math.atan2(p.x*Math.sin(ce),rh*this.cosX0*Math.cos(ce)-p.y*this.sinX0*Math.sin(ce)))}lat=-1*phi2z(this.e,Math.tan(.5*(HALF_PI+Chi)))}}p.x=lon;p.y=lat;return p};exports.names=["stere","Stereographic_South_Pole","Polar Stereographic (variant B)"]},{"../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js","../common/msfnz":"/data/github/geopackage-node/node_modules/proj4/lib/common/msfnz.js","../common/phi2z":"/data/github/geopackage-node/node_modules/proj4/lib/common/phi2z.js","../common/sign":"/data/github/geopackage-node/node_modules/proj4/lib/common/sign.js","../common/tsfnz":"/data/github/geopackage-node/node_modules/proj4/lib/common/tsfnz.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/sterea.js":[function(require,module,exports){var gauss=require("./gauss");var adjust_lon=require("../common/adjust_lon");exports.init=function(){gauss.init.apply(this);if(!this.rc){return}this.sinc0=Math.sin(this.phic0);this.cosc0=Math.cos(this.phic0);this.R2=2*this.rc;if(!this.title){this.title="Oblique Stereographic Alternative"}};exports.forward=function(p){var sinc,cosc,cosl,k;p.x=adjust_lon(p.x-this.long0);gauss.forward.apply(this,[p]);sinc=Math.sin(p.y);cosc=Math.cos(p.y);cosl=Math.cos(p.x);k=this.k0*this.R2/(1+this.sinc0*sinc+this.cosc0*cosc*cosl);p.x=k*cosc*Math.sin(p.x);p.y=k*(this.cosc0*sinc-this.sinc0*cosc*cosl);p.x=this.a*p.x+this.x0;p.y=this.a*p.y+this.y0;return p};exports.inverse=function(p){var sinc,cosc,lon,lat,rho;p.x=(p.x-this.x0)/this.a;p.y=(p.y-this.y0)/this.a;p.x/=this.k0;p.y/=this.k0;if(rho=Math.sqrt(p.x*p.x+p.y*p.y)){var c=2*Math.atan2(rho,this.R2);sinc=Math.sin(c);cosc=Math.cos(c);lat=Math.asin(cosc*this.sinc0+p.y*sinc*this.cosc0/rho);lon=Math.atan2(p.x*sinc,rho*this.cosc0*cosc-p.y*this.sinc0*sinc)}else{lat=this.phic0;lon=0}p.x=lon;p.y=lat;gauss.inverse.apply(this,[p]);p.x=adjust_lon(p.x+this.long0);return p};exports.names=["Stereographic_North_Pole","Oblique_Stereographic","Polar_Stereographic","sterea","Oblique Stereographic Alternative"]},{"../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js","./gauss":"/data/github/geopackage-node/node_modules/proj4/lib/projections/gauss.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/tmerc.js":[function(require,module,exports){var e0fn=require("../common/e0fn");var e1fn=require("../common/e1fn");var e2fn=require("../common/e2fn");var e3fn=require("../common/e3fn");var mlfn=require("../common/mlfn");var adjust_lon=require("../common/adjust_lon");var HALF_PI=Math.PI/2;var EPSLN=1e-10;var sign=require("../common/sign");var asinz=require("../common/asinz");exports.init=function(){this.e0=e0fn(this.es);this.e1=e1fn(this.es);this.e2=e2fn(this.es);this.e3=e3fn(this.es);this.ml0=this.a*mlfn(this.e0,this.e1,this.e2,this.e3,this.lat0)};exports.forward=function(p){var lon=p.x;var lat=p.y;var delta_lon=adjust_lon(lon-this.long0);var con;var x,y;var sin_phi=Math.sin(lat);var cos_phi=Math.cos(lat);if(this.sphere){var b=cos_phi*Math.sin(delta_lon);if(Math.abs(Math.abs(b)-1)<1e-10){return 93}else{x=.5*this.a*this.k0*Math.log((1+b)/(1-b));con=Math.acos(cos_phi*Math.cos(delta_lon)/Math.sqrt(1-b*b));if(lat<0){con=-con}y=this.a*this.k0*(con-this.lat0)}}else{var al=cos_phi*delta_lon;var als=Math.pow(al,2);var c=this.ep2*Math.pow(cos_phi,2);var tq=Math.tan(lat);var t=Math.pow(tq,2);con=1-this.es*Math.pow(sin_phi,2);var n=this.a/Math.sqrt(con);var ml=this.a*mlfn(this.e0,this.e1,this.e2,this.e3,lat);x=this.k0*n*al*(1+als/6*(1-t+c+als/20*(5-18*t+Math.pow(t,2)+72*c-58*this.ep2)))+this.x0;y=this.k0*(ml-this.ml0+n*tq*(als*(.5+als/24*(5-t+9*c+4*Math.pow(c,2)+als/30*(61-58*t+Math.pow(t,2)+600*c-330*this.ep2)))))+this.y0}p.x=x;p.y=y;return p};exports.inverse=function(p){var con,phi;var delta_phi;var i;var max_iter=6;var lat,lon;if(this.sphere){var f=Math.exp(p.x/(this.a*this.k0));var g=.5*(f-1/f);var temp=this.lat0+p.y/(this.a*this.k0);var h=Math.cos(temp);con=Math.sqrt((1-h*h)/(1+g*g));lat=asinz(con);if(temp<0){lat=-lat}if(g===0&&h===0){lon=this.long0}else{lon=adjust_lon(Math.atan2(g,h)+this.long0)}}else{var x=p.x-this.x0;var y=p.y-this.y0;con=(this.ml0+y/this.k0)/this.a;phi=con;for(i=0;true;i++){delta_phi=(con+this.e1*Math.sin(2*phi)-this.e2*Math.sin(4*phi)+this.e3*Math.sin(6*phi))/this.e0-phi;phi+=delta_phi;if(Math.abs(delta_phi)<=EPSLN){break}if(i>=max_iter){return 95}}if(Math.abs(phi)=0){y=this.y0+Math.PI*this.R*Math.tan(.5*theta)}else{y=this.y0+Math.PI*this.R*-Math.tan(.5*theta)}}var al=.5*Math.abs(Math.PI/dlon-dlon/Math.PI);var asq=al*al;var sinth=Math.sin(theta);var costh=Math.cos(theta);var g=costh/(sinth+costh-1);var gsq=g*g;var m=g*(2/sinth-1);var msq=m*m;var con=Math.PI*this.R*(al*(g-msq)+Math.sqrt(asq*(g-msq)*(g-msq)-(msq+asq)*(gsq-msq)))/(msq+asq);if(dlon<0){con=-con}x=this.x0+con;var q=asq+g;con=Math.PI*this.R*(m*q-al*Math.sqrt((msq+asq)*(asq+1)-q*q))/(msq+asq);if(lat>=0){y=this.y0+con}else{y=this.y0-con}p.x=x;p.y=y;return p};exports.inverse=function(p){var lon,lat;var xx,yy,xys,c1,c2,c3;var a1;var m1;var con;var th1;var d;p.x-=this.x0;p.y-=this.y0;con=Math.PI*this.R;xx=p.x/con;yy=p.y/con;xys=xx*xx+yy*yy;c1=-Math.abs(yy)*(1+xys);c2=c1-2*yy*yy+xx*xx;c3=-2*c1+1+2*yy*yy+xys*xys;d=yy*yy/c3+(2*c2*c2*c2/c3/c3/c3-9*c1*c2/c3/c3)/27;a1=(c1-c2*c2/3/c3)/c3;m1=2*Math.sqrt(-a1/3);con=3*d/a1/m1;if(Math.abs(con)>1){if(con>=0){con=1}else{con=-1}}th1=Math.acos(con)/3;if(p.y>=0){lat=(-m1*Math.cos(th1+Math.PI/3)-c2/3/c3)*Math.PI}else{lat=-(-m1*Math.cos(th1+Math.PI/3)-c2/3/c3)*Math.PI}if(Math.abs(xx)-1){obj[key]={name:v[0].toLowerCase(),convert:v[1]};if(v.length===3){obj[key].auth=v[2]}}else if(key==="SPHEROID"){obj[key]={name:v[0],a:v[1],rf:v[2]};if(v.length===4){obj[key].auth=v[3]}}else if(["GEOGCS","GEOCCS","DATUM","VERT_CS","COMPD_CS","LOCAL_CS","FITTED_CS","LOCAL_DATUM"].indexOf(key)>-1){v[0]=["name",v[0]];mapit(obj,key,v)}else if(v.every(function(aa){return Array.isArray(aa)})){mapit(obj,key,v)}else{sExpr(v,obj[key])}}}}function rename(obj,params){var outName=params[0];var inName=params[1];if(!(outName in obj)&&inName in obj){obj[outName]=obj[inName];if(params.length===3){obj[outName]=params[2](obj[outName])}}}function d2r(input){return input*D2R}function cleanWKT(wkt){if(wkt.type==="GEOGCS"){wkt.projName="longlat"}else if(wkt.type==="LOCAL_CS"){wkt.projName="identity";wkt.local=true}else{if(typeof wkt.PROJECTION==="object"){wkt.projName=Object.keys(wkt.PROJECTION)[0]}else{wkt.projName=wkt.PROJECTION}}if(wkt.UNIT){wkt.units=wkt.UNIT.name.toLowerCase();if(wkt.units==="metre"){wkt.units="meter"}if(wkt.UNIT.convert){if(wkt.type==="GEOGCS"){if(wkt.DATUM&&wkt.DATUM.SPHEROID){wkt.to_meter=parseFloat(wkt.UNIT.convert,10)*wkt.DATUM.SPHEROID.a}}else{wkt.to_meter=parseFloat(wkt.UNIT.convert,10)}}}if(wkt.GEOGCS){if(wkt.GEOGCS.DATUM){wkt.datumCode=wkt.GEOGCS.DATUM.name.toLowerCase()}else{wkt.datumCode=wkt.GEOGCS.name.toLowerCase()}if(wkt.datumCode.slice(0,2)==="d_"){wkt.datumCode=wkt.datumCode.slice(2)}if(wkt.datumCode==="new_zealand_geodetic_datum_1949"||wkt.datumCode==="new_zealand_1949"){wkt.datumCode="nzgd49"}if(wkt.datumCode==="wgs_1984"){if(wkt.PROJECTION==="Mercator_Auxiliary_Sphere"){wkt.sphere=true}wkt.datumCode="wgs84"}if(wkt.datumCode.slice(-6)==="_ferro"){wkt.datumCode=wkt.datumCode.slice(0,-6)}if(wkt.datumCode.slice(-8)==="_jakarta"){wkt.datumCode=wkt.datumCode.slice(0,-8)}if(~wkt.datumCode.indexOf("belge")){wkt.datumCode="rnb72"}if(wkt.GEOGCS.DATUM&&wkt.GEOGCS.DATUM.SPHEROID){wkt.ellps=wkt.GEOGCS.DATUM.SPHEROID.name.replace("_19","").replace(/[Cc]larke\_18/,"clrk");if(wkt.ellps.toLowerCase().slice(0,13)==="international"){wkt.ellps="intl"}wkt.a=wkt.GEOGCS.DATUM.SPHEROID.a;wkt.rf=parseFloat(wkt.GEOGCS.DATUM.SPHEROID.rf,10)}if(~wkt.datumCode.indexOf("osgb_1936")){wkt.datumCode="osgb36"}}if(wkt.b&&!isFinite(wkt.b)){wkt.b=wkt.a}function toMeter(input){var ratio=wkt.to_meter||1;return parseFloat(input,10)*ratio}var renamer=function(a){return rename(wkt,a)};var list=[["standard_parallel_1","Standard_Parallel_1"],["standard_parallel_2","Standard_Parallel_2"],["false_easting","False_Easting"],["false_northing","False_Northing"],["central_meridian","Central_Meridian"],["latitude_of_origin","Latitude_Of_Origin"],["latitude_of_origin","Central_Parallel"],["scale_factor","Scale_Factor"],["k0","scale_factor"],["latitude_of_center","Latitude_of_center"],["lat0","latitude_of_center",d2r],["longitude_of_center","Longitude_Of_Center"],["longc","longitude_of_center",d2r],["x0","false_easting",toMeter],["y0","false_northing",toMeter],["long0","central_meridian",d2r],["lat0","latitude_of_origin",d2r],["lat0","standard_parallel_1",d2r],["lat1","standard_parallel_1",d2r],["lat2","standard_parallel_2",d2r],["alpha","azimuth",d2r],["srsCode","name"]];list.forEach(renamer);if(!wkt.long0&&wkt.longc&&(wkt.projName==="Albers_Conic_Equal_Area"||wkt.projName==="Lambert_Azimuthal_Equal_Area")){wkt.long0=wkt.longc}if(!wkt.lat_ts&&wkt.lat1&&(wkt.projName==="Stereographic_South_Pole"||wkt.projName==="Polar Stereographic (variant B)")){wkt.lat0=d2r(wkt.lat1>0?90:-90);wkt.lat_ts=wkt.lat1}}module.exports=function(wkt,self){var lisp=JSON.parse((","+wkt).replace(/\s*\,\s*([A-Z_0-9]+?)(\[)/g,',["$1",').slice(1).replace(/\s*\,\s*([A-Z_0-9]+?)\]/g,',"$1"]').replace(/,\["VERTCS".+/,""));var type=lisp.shift();var name=lisp.shift();lisp.unshift(["name",name]);lisp.unshift(["type",type]);lisp.unshift("output");var obj={};sExpr(lisp,obj);cleanWKT(obj.output);return extend(self,obj.output)}},{"./extend":"/data/github/geopackage-node/node_modules/proj4/lib/extend.js"}],"/data/github/geopackage-node/node_modules/proj4/node_modules/mgrs/mgrs.js":[function(require,module,exports){var NUM_100K_SETS=6;var SET_ORIGIN_COLUMN_LETTERS="AJSAJS";var SET_ORIGIN_ROW_LETTERS="AFAFAF";var A=65;var I=73;var O=79;var V=86;var Z=90;exports.forward=function(ll,accuracy){accuracy=accuracy||5;return encode(LLtoUTM({lat:ll[1],lon:ll[0]}),accuracy)};exports.inverse=function(mgrs){var bbox=UTMtoLL(decode(mgrs.toUpperCase()));if(bbox.lat&&bbox.lon){return[bbox.lon,bbox.lat,bbox.lon,bbox.lat]}return[bbox.left,bbox.bottom,bbox.right,bbox.top]};exports.toPoint=function(mgrs){var bbox=UTMtoLL(decode(mgrs.toUpperCase()));if(bbox.lat&&bbox.lon){return[bbox.lon,bbox.lat]}return[(bbox.left+bbox.right)/2,(bbox.top+bbox.bottom)/2]};function degToRad(deg){return deg*(Math.PI/180)}function radToDeg(rad){return 180*(rad/Math.PI)}function LLtoUTM(ll){var Lat=ll.lat;var Long=ll.lon;var a=6378137;var eccSquared=.00669438;var k0=.9996;var LongOrigin;var eccPrimeSquared;var N,T,C,A,M;var LatRad=degToRad(Lat);var LongRad=degToRad(Long);var LongOriginRad;var ZoneNumber;ZoneNumber=Math.floor((Long+180)/6)+1;if(Long===180){ZoneNumber=60}if(Lat>=56&&Lat<64&&Long>=3&&Long<12){ZoneNumber=32}if(Lat>=72&&Lat<84){if(Long>=0&&Long<9){ZoneNumber=31}else if(Long>=9&&Long<21){ZoneNumber=33}else if(Long>=21&&Long<33){ZoneNumber=35}else if(Long>=33&&Long<42){ZoneNumber=37}}LongOrigin=(ZoneNumber-1)*6-180+3;LongOriginRad=degToRad(LongOrigin);eccPrimeSquared=eccSquared/(1-eccSquared);N=a/Math.sqrt(1-eccSquared*Math.sin(LatRad)*Math.sin(LatRad));T=Math.tan(LatRad)*Math.tan(LatRad);C=eccPrimeSquared*Math.cos(LatRad)*Math.cos(LatRad);A=Math.cos(LatRad)*(LongRad-LongOriginRad);M=a*((1-eccSquared/4-3*eccSquared*eccSquared/64-5*eccSquared*eccSquared*eccSquared/256)*LatRad-(3*eccSquared/8+3*eccSquared*eccSquared/32+45*eccSquared*eccSquared*eccSquared/1024)*Math.sin(2*LatRad)+(15*eccSquared*eccSquared/256+45*eccSquared*eccSquared*eccSquared/1024)*Math.sin(4*LatRad)-35*eccSquared*eccSquared*eccSquared/3072*Math.sin(6*LatRad));var UTMEasting=k0*N*(A+(1-T+C)*A*A*A/6+(5-18*T+T*T+72*C-58*eccPrimeSquared)*A*A*A*A*A/120)+5e5;var UTMNorthing=k0*(M+N*Math.tan(LatRad)*(A*A/2+(5-T+9*C+4*C*C)*A*A*A*A/24+(61-58*T+T*T+600*C-330*eccPrimeSquared)*A*A*A*A*A*A/720));if(Lat<0){UTMNorthing+=1e7}return{northing:Math.round(UTMNorthing),easting:Math.round(UTMEasting),zoneNumber:ZoneNumber,zoneLetter:getLetterDesignator(Lat)}}function UTMtoLL(utm){var UTMNorthing=utm.northing;var UTMEasting=utm.easting;var zoneLetter=utm.zoneLetter;var zoneNumber=utm.zoneNumber;if(zoneNumber<0||zoneNumber>60){return null}var k0=.9996;var a=6378137;var eccSquared=.00669438;var eccPrimeSquared;var e1=(1-Math.sqrt(1-eccSquared))/(1+Math.sqrt(1-eccSquared));var N1,T1,C1,R1,D,M;var LongOrigin;var mu,phi1Rad;var x=UTMEasting-5e5;var y=UTMNorthing;if(zoneLetter<"N"){y-=1e7}LongOrigin=(zoneNumber-1)*6-180+3;eccPrimeSquared=eccSquared/(1-eccSquared);M=y/k0;mu=M/(a*(1-eccSquared/4-3*eccSquared*eccSquared/64-5*eccSquared*eccSquared*eccSquared/256));phi1Rad=mu+(3*e1/2-27*e1*e1*e1/32)*Math.sin(2*mu)+(21*e1*e1/16-55*e1*e1*e1*e1/32)*Math.sin(4*mu)+151*e1*e1*e1/96*Math.sin(6*mu);N1=a/Math.sqrt(1-eccSquared*Math.sin(phi1Rad)*Math.sin(phi1Rad));T1=Math.tan(phi1Rad)*Math.tan(phi1Rad);C1=eccPrimeSquared*Math.cos(phi1Rad)*Math.cos(phi1Rad);R1=a*(1-eccSquared)/Math.pow(1-eccSquared*Math.sin(phi1Rad)*Math.sin(phi1Rad),1.5);D=x/(N1*k0);var lat=phi1Rad-N1*Math.tan(phi1Rad)/R1*(D*D/2-(5+3*T1+10*C1-4*C1*C1-9*eccPrimeSquared)*D*D*D*D/24+(61+90*T1+298*C1+45*T1*T1-252*eccPrimeSquared-3*C1*C1)*D*D*D*D*D*D/720);lat=radToDeg(lat);var lon=(D-(1+2*T1+C1)*D*D*D/6+(5-2*C1+28*T1-3*C1*C1+8*eccPrimeSquared+24*T1*T1)*D*D*D*D*D/120)/Math.cos(phi1Rad);lon=LongOrigin+radToDeg(lon);var result;if(utm.accuracy){var topRight=UTMtoLL({northing:utm.northing+utm.accuracy,easting:utm.easting+utm.accuracy,zoneLetter:utm.zoneLetter,zoneNumber:utm.zoneNumber});result={top:topRight.lat,right:topRight.lon,bottom:lat,left:lon}}else{result={lat:lat,lon:lon}}return result}function getLetterDesignator(lat){var LetterDesignator="Z";if(84>=lat&&lat>=72){LetterDesignator="X"}else if(72>lat&&lat>=64){LetterDesignator="W"}else if(64>lat&&lat>=56){LetterDesignator="V"}else if(56>lat&&lat>=48){LetterDesignator="U"}else if(48>lat&&lat>=40){LetterDesignator="T"}else if(40>lat&&lat>=32){LetterDesignator="S"}else if(32>lat&&lat>=24){LetterDesignator="R"}else if(24>lat&&lat>=16){LetterDesignator="Q"}else if(16>lat&&lat>=8){LetterDesignator="P"}else if(8>lat&&lat>=0){LetterDesignator="N"}else if(0>lat&&lat>=-8){LetterDesignator="M"}else if(-8>lat&&lat>=-16){LetterDesignator="L"}else if(-16>lat&&lat>=-24){LetterDesignator="K"}else if(-24>lat&&lat>=-32){LetterDesignator="J"}else if(-32>lat&&lat>=-40){LetterDesignator="H"}else if(-40>lat&&lat>=-48){LetterDesignator="G"}else if(-48>lat&&lat>=-56){LetterDesignator="F"}else if(-56>lat&&lat>=-64){LetterDesignator="E"}else if(-64>lat&&lat>=-72){LetterDesignator="D"}else if(-72>lat&&lat>=-80){LetterDesignator="C"}return LetterDesignator}function encode(utm,accuracy){var seasting="00000"+utm.easting,snorthing="00000"+utm.northing;return utm.zoneNumber+utm.zoneLetter+get100kID(utm.easting,utm.northing,utm.zoneNumber)+seasting.substr(seasting.length-5,accuracy)+snorthing.substr(snorthing.length-5,accuracy)}function get100kID(easting,northing,zoneNumber){var setParm=get100kSetForZone(zoneNumber);var setColumn=Math.floor(easting/1e5);var setRow=Math.floor(northing/1e5)%20;return getLetter100kID(setColumn,setRow,setParm)}function get100kSetForZone(i){var setParm=i%NUM_100K_SETS;if(setParm===0){setParm=NUM_100K_SETS}return setParm}function getLetter100kID(column,row,parm){var index=parm-1;var colOrigin=SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index);var rowOrigin=SET_ORIGIN_ROW_LETTERS.charCodeAt(index);var colInt=colOrigin+column-1;var rowInt=rowOrigin+row;var rollover=false;if(colInt>Z){colInt=colInt-Z+A-1;rollover=true}if(colInt===I||colOriginI||(colInt>I||colOriginO||(colInt>O||colOriginZ){colInt=colInt-Z+A-1}if(rowInt>V){rowInt=rowInt-V+A-1;rollover=true}else{rollover=false}if(rowInt===I||rowOriginI||(rowInt>I||rowOriginO||(rowInt>O||rowOriginV){rowInt=rowInt-V+A-1}var twoLetter=String.fromCharCode(colInt)+String.fromCharCode(rowInt);return twoLetter}function decode(mgrsString){if(mgrsString&&mgrsString.length===0){throw"MGRSPoint coverting from nothing"}var length=mgrsString.length;var hunK=null;var sb="";var testChar;var i=0;while(!/[A-Z]/.test(testChar=mgrsString.charAt(i))){if(i>=2){throw"MGRSPoint bad conversion from: "+mgrsString}sb+=testChar;i++}var zoneNumber=parseInt(sb,10);if(i===0||i+3>length){throw"MGRSPoint bad conversion from: "+mgrsString}var zoneLetter=mgrsString.charAt(i++);if(zoneLetter<="A"||zoneLetter==="B"||zoneLetter==="Y"||zoneLetter>="Z"||zoneLetter==="I"||zoneLetter==="O"){throw"MGRSPoint zone letter "+zoneLetter+" not handled: "+mgrsString}hunK=mgrsString.substring(i,i+=2);var set=get100kSetForZone(zoneNumber);var east100k=getEastingFromChar(hunK.charAt(0),set);var north100k=getNorthingFromChar(hunK.charAt(1),set);while(north100k0){accuracyBonus=1e5/Math.pow(10,sep);sepEastingString=mgrsString.substring(i,i+sep);sepEasting=parseFloat(sepEastingString)*accuracyBonus;sepNorthingString=mgrsString.substring(i+sep);sepNorthing=parseFloat(sepNorthingString)*accuracyBonus}easting=sepEasting+east100k;northing=sepNorthing+north100k;return{easting:easting,northing:northing,zoneLetter:zoneLetter,zoneNumber:zoneNumber,accuracy:accuracyBonus}}function getEastingFromChar(e,set){var curCol=SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set-1);var eastingValue=1e5;var rewindMarker=false;while(curCol!==e.charCodeAt(0)){curCol++;if(curCol===I){curCol++}if(curCol===O){curCol++}if(curCol>Z){if(rewindMarker){throw"Bad character: "+e}curCol=A;rewindMarker=true}eastingValue+=1e5}return eastingValue}function getNorthingFromChar(n,set){if(n>"V"){throw"MGRSPoint given invalid Northing "+n}var curRow=SET_ORIGIN_ROW_LETTERS.charCodeAt(set-1);var northingValue=0;var rewindMarker=false;while(curRow!==n.charCodeAt(0)){curRow++;if(curRow===I){curRow++}if(curRow===O){curRow++}if(curRow>V){if(rewindMarker){throw"Bad character: "+n}curRow=A;rewindMarker=true}northingValue+=1e5}return northingValue}function getMinNorthing(zoneLetter){var northing;switch(zoneLetter){case"C":northing=11e5;break;case"D":northing=2e6;break;case"E":northing=28e5;break;case"F":northing=37e5; -break;case"G":northing=46e5;break;case"H":northing=55e5;break;case"J":northing=64e5;break;case"K":northing=73e5;break;case"L":northing=82e5;break;case"M":northing=91e5;break;case"N":northing=0;break;case"P":northing=8e5;break;case"Q":northing=17e5;break;case"R":northing=26e5;break;case"S":northing=35e5;break;case"T":northing=44e5;break;case"U":northing=53e5;break;case"V":northing=62e5;break;case"W":northing=7e6;break;case"X":northing=79e5;break;default:northing=-1}if(northing>=0){return northing}else{throw"Invalid zone letter: "+zoneLetter}}},{}],"/data/github/geopackage-node/node_modules/proj4/package.json":[function(require,module,exports){module.exports={name:"proj4",version:"2.3.14",description:"Proj4js is a JavaScript library to transform point coordinates from one coordinate system to another, including datum transformations.",main:"lib/index.js",directories:{test:"test",doc:"docs"},scripts:{test:"./node_modules/istanbul/lib/cli.js test ./node_modules/mocha/bin/_mocha test/test.js"},repository:{type:"git",url:"git://github.com/proj4js/proj4js.git"},author:"",license:"MIT",jam:{main:"dist/proj4.js",include:["dist/proj4.js","README.md","AUTHORS","LICENSE.md"]},devDependencies:{"grunt-cli":"~0.1.13",grunt:"~0.4.2","grunt-contrib-connect":"~0.6.0","grunt-contrib-jshint":"~0.8.0",chai:"~1.8.1",mocha:"~1.17.1","grunt-mocha-phantomjs":"~0.4.0",browserify:"~12.0.1","grunt-browserify":"~4.0.1","grunt-contrib-uglify":"~0.11.1",curl:"git://github.com/cujojs/curl.git",istanbul:"~0.2.4",tin:"~0.4.0"},dependencies:{mgrs:"~0.0.2"},contributors:[{name:"Mike Adair",email:"madair@dmsolutions.ca"},{name:"Richard Greenwood",email:"rich@greenwoodmap.com"},{name:"Calvin Metcalf",email:"calvin.metcalf@gmail.com"},{name:"Richard Marsden",url:"http://www.winwaed.com"},{name:"T. Mittan"},{name:"D. Steinwand"},{name:"S. Nelson"}],gitHead:"7619c8a63df1eae5bad0b9ad31ca1d87b0549243",bugs:{url:"https://github.com/proj4js/proj4js/issues"},homepage:"https://github.com/proj4js/proj4js#readme",_id:"proj4@2.3.14",_shasum:"928906144388980c914c5a357fc493aba59a747a",_from:"proj4@>=2.3.14 <3.0.0",_npmVersion:"2.14.12",_nodeVersion:"4.2.6",_npmUser:{name:"ahocevar",email:"andreas.hocevar@gmail.com"},dist:{shasum:"928906144388980c914c5a357fc493aba59a747a",tarball:"https://registry.npmjs.org/proj4/-/proj4-2.3.14.tgz"},maintainers:[{name:"cwmma",email:"calvin.metcalf@gmail.com"},{name:"ahocevar",email:"andreas.hocevar@gmail.com"}],_npmOperationalInternal:{host:"packages-13-west.internal.npmjs.com",tmp:"tmp/proj4-2.3.14.tgz_1457689264880_0.9409773757215589"},_resolved:"https://registry.npmjs.org/proj4/-/proj4-2.3.14.tgz",readme:"ERROR: No README data found!"}},{}],"/data/github/geopackage-node/node_modules/reproject/index.js":[function(require,module,exports){"use strict";var proj4=require("proj4");function isXY(list){return list.length>=2&&typeof list[0]==="number"&&typeof list[1]==="number"}function traverseCoords(coordinates,callback){if(isXY(coordinates))return callback(coordinates);return coordinates.map(function(coord){return traverseCoords(coord,callback)})}function clone(obj){if(null==obj||"object"!==typeof obj)return obj;var copy=obj.constructor();for(var attr in obj){if(obj.hasOwnProperty(attr))copy[attr]=obj[attr]}return copy}function traverseGeoJson(geojson,leafCallback,nodeCallback){if(geojson==null)return geojson;var r=clone(geojson);if(geojson.type==="Feature"){r.geometry=traverseGeoJson(geojson.geometry,leafCallback,nodeCallback)}else if(geojson.type==="FeatureCollection"){r.features=r.features.map(function(gj){return traverseGeoJson(gj,leafCallback,nodeCallback)})}else if(geojson.type==="GeometryCollection"){r.geometries=r.geometries.map(function(gj){return traverseGeoJson(gj,leafCallback,nodeCallback)})}else{if(leafCallback)leafCallback(r)}if(nodeCallback)nodeCallback(r);return r}function detectCrs(geojson,projs){var crsInfo=geojson.crs,crs;if(crsInfo===undefined){throw new Error('Unable to detect CRS, GeoJSON has no "crs" property.')}if(crsInfo.type==="name"){crs=projs[crsInfo.properties.name]}else if(crsInfo.type==="EPSG"){crs=projs["EPSG:"+crsInfo.properties.code]}if(!crs){throw new Error("CRS defined in crs section could not be identified: "+JSON.stringify(crsInfo))}return crs}function determineCrs(crs,projs){if(typeof crs==="string"||crs instanceof String){return projs[crs]||proj4.Proj(crs)}return crs}function reproject(geojson,from,to,projs){projs=projs||{};if(!from){from=detectCrs(geojson,projs)}else{from=determineCrs(from,projs)}to=determineCrs(to,projs);var transform=proj4(from,to);return traverseGeoJson(geojson,function(gj){if(gj.crs){delete gj.crs}gj.coordinates=traverseCoords(gj.coordinates,function(xy){return transform.forward(xy)})},function(gj){if(gj.bbox){gj.bbox=function(){var min=[Number.MAX_VALUE,Number.MAX_VALUE],max=[-Number.MAX_VALUE,-Number.MAX_VALUE];traverseGeoJson(gj,function(_gj){traverseCoords(_gj.coordinates,function(xy){min[0]=Math.min(min[0],xy[0]);min[1]=Math.min(min[1],xy[1]);max[0]=Math.max(max[0],xy[0]);max[1]=Math.max(max[1],xy[1])})});return[min[0],min[1],max[0],max[1]]}()}})}module.exports={detectCrs:detectCrs,reproject:reproject,reverse:function(geojson){return traverseGeoJson(geojson,function(gj){gj.coordinates=traverseCoords(gj.coordinates,function(xy){return[xy[1],xy[0]]})})},toWgs84:function(geojson,from,projs){return reproject(geojson,from,proj4.WGS84,projs)}}},{proj4:"/data/github/geopackage-node/node_modules/proj4/lib/index.js"}],"/data/github/geopackage-node/node_modules/sql.js/js/sql.js":[function(require,module,exports){(function(process,Buffer,__dirname){var SQL=function(){var f;f||(f=eval("(function() { try { return Module || {} } catch(e) { return {} } })()"));var aa={},ba;for(ba in f)f.hasOwnProperty(ba)&&(aa[ba]=f[ba]);var ca="object"===typeof window,da="function"===typeof importScripts,ea="object"===typeof process&&"function"===typeof require&&!ca&&!da,fa=!ca&&!ea&&!da;if(ea){f.print||(f.print=function(a){process.stdout.write(a+"\n")});f.printErr||(f.printErr=function(a){process.stderr.write(a+"\n")});var ga=require("fs"),ia=require("path");f.read=function(a,b){a=ia.normalize(a);var c=ga.readFileSync(a);c||a==ia.resolve(a)||(a=path.join(__dirname,"..","src",a),c=ga.readFileSync(a));c&&!b&&(c=c.toString());return c};f.readBinary=function(a){a=f.read(a,!0);a.buffer||(a=new Uint8Array(a));assert(a.buffer);return a};f.load=function(a){ja(read(a))};f.thisProgram||(f.thisProgram=1 0) var gc = undefined");else if(ca||da)f.read=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.send(null);return b.responseText},"undefined"!=typeof arguments&&(f.arguments=arguments),"undefined"!==typeof console?(f.print||(f.print=function(a){console.log(a)}),f.printErr||(f.printErr=function(a){console.log(a)})):f.print||(f.print=function(){}),da&&(f.load=importScripts),"undefined"===typeof f.setWindowTitle&&(f.setWindowTitle=function(a){document.title=a});else throw"Unknown runtime environment. Where are we?";function ja(a){eval.call(null,a)}!f.load&&f.read&&(f.load=function(a){ja(f.read(a))});f.print||(f.print=function(){});f.printErr||(f.printErr=f.print);f.arguments||(f.arguments=[]);f.thisProgram||(f.thisProgram="./this.program");f.print=f.print;f.fa=f.printErr;f.preRun=[];f.postRun=[];for(ba in aa)aa.hasOwnProperty(ba)&&(f[ba]=aa[ba]);var l={Qb:function(a){la=a},Ab:function(){return la},qa:function(){return k},ga:function(a){k=a},Xa:function(a){switch(a){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:return"*"===a[a.length-1]?l.M:"i"===a[0]?(a=parseInt(a.substr(1)),assert(0===a%8),a/8):0}},xb:function(a){return Math.max(l.Xa(a),l.M)},oe:16,Ke:function(a,b){"double"===b||"i64"===b?a&7&&(assert(4===(a&7)),a+=4):assert(0===(a&3));return a},ye:function(a,b,c){return c||"i64"!=a&&"double"!=a?a?Math.min(b||(a?l.xb(a):0),l.M):Math.min(b,8):8},T:function(a,b,c){return c&&c.length?(c.splice||(c=Array.prototype.slice.call(c)),c.splice(0,0,b),f["dynCall_"+a].apply(null,c)):f["dynCall_"+a].call(null,b)},A:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],La:function(a){for(var b=0;b=na)p("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+na+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 "),a=!0;return a?(n=b,0):b},ta:function(a,b){return Math.ceil(a/(b?b:16))*(b?b:16)},He:function(a,b,c){return c?+(a>>>0)+4294967296*+(b>>>0):+(a>>>0)+4294967296*+(b|0)},aa:8,M:4,re:0};f.Runtime=l;l.addFunction=l.La;l.removeFunction=l.Mb;var oa=!1,pa,qa,la;function assert(a,b){a||p("Assertion failed: "+b)}function ra(a){var b=f["_"+a];if(!b)try{b=eval("_"+a)}catch(c){}assert(b,"Cannot call unknown function "+a+" (perhaps LLVM optimizations or closure removed it?)");return b}var sa,ta;(function(){function a(a){a=a.toString().match(d).slice(1);return{arguments:a[0],body:a[1],returnValue:a[2]}}var b={stackSave:function(){l.qa()},stackRestore:function(){l.ga()},arrayToC:function(a){var b=l.R(a.length);ua(a,b);return b},stringToC:function(a){var b=0;null!==a&&void 0!==a&&0!==a&&(b=l.R((a.length<<2)+1),wa(a,b));return b}},c={string:b.stringToC,array:b.arrayToC};ta=function(a,b,d,e,g){a=ra(a);var v=[],G=0;if(e)for(var I=0;I>0]=b;break;case"i8":u[a>>0]=b;break;case"i16":za[a>>1]=b;break;case"i32":w[a>>2]=b;break;case"i64":qa=[b>>>0,(pa=b,1<=+Aa(pa)?0>>0:~~+Da((pa-+(~~pa>>>0))/4294967296)>>>0:0)];w[a>>2]=qa[0];w[a+4>>2]=qa[1];break;case"float":Ea[a>>2]=b;break;case"double":Fa[a>>3]=b;break;default:p("invalid type for setValue: "+c)}}f.setValue=ya;function y(a,b){b=b||"i8";"*"===b.charAt(b.length-1)&&(b="i32");switch(b){case"i1":return u[a>>0];case"i8":return u[a>>0];case"i16":return za[a>>1];case"i32":return w[a>>2];case"i64":return w[a>>2];case"float":return Ea[a>>2];case"double":return Fa[a>>3];default:p("invalid type for setValue: "+b)}return null}f.getValue=y;f.ALLOC_NORMAL=0;f.ALLOC_STACK=1;f.ALLOC_STATIC=2;f.ALLOC_DYNAMIC=3;f.ALLOC_NONE=4;function z(a,b,c,d){var e,g;"number"===typeof a?(e=!0,g=a):(e=!1,g=a.length);var h="string"===typeof b?b:null;c=4==c?d:[Ga,l.R,l.bb,l.ba][void 0===c?2:c](Math.max(g,h?1:b.length));if(e){d=c;assert(0==(c&3));for(a=c+(g&-4);d>2]=0;for(a=c+g;d>0]=0;return c}if("i8"===h)return a.subarray||a.slice?A.set(a,c):A.set(new Uint8Array(a),c),c;d=0;for(var m,t;d>0];c|=d;if(0==d&&!b)break;e++;if(b&&e==b)break}b||(b=e);d="";if(128>c){for(;0>0];if(!c)return b;b+=String.fromCharCode(c)}};f.stringToAscii=function(a,b){return Ka(a,b,!1)};function La(a,b){for(var c,d,e,g,h,m,t="";;){c=a[b++];if(!c)return t;c&128?(d=a[b++]&63,192==(c&224)?t+=String.fromCharCode((c&31)<<6|d):(e=a[b++]&63,224==(c&240)?c=(c&15)<<12|d<<6|e:(g=a[b++]&63,240==(c&248)?c=(c&7)<<18|d<<12|e<<6|g:(h=a[b++]&63,248==(c&252)?c=(c&3)<<24|d<<18|e<<12|g<<6|h:(m=a[b++]&63,c=(c&1)<<30|d<<24|e<<18|g<<12|h<<6|m))),65536>c?t+=String.fromCharCode(c):(c-=65536,t+=String.fromCharCode(55296|c>>10,56320|c&1023)))):t+=String.fromCharCode(c)}}f.UTF8ArrayToString=La;f.UTF8ToString=function(a){return La(A,a)};function Ma(a,b,c,d){if(!(0=h&&(h=65536+((h&1023)<<10)|a.charCodeAt(++g)&1023);if(127>=h){if(c>=d)break;b[c++]=h}else{if(2047>=h){if(c+1>=d)break;b[c++]=192|h>>6}else{if(65535>=h){if(c+2>=d)break;b[c++]=224|h>>12}else{if(2097151>=h){if(c+3>=d)break;b[c++]=240|h>>18}else{if(67108863>=h){if(c+4>=d)break;b[c++]=248|h>>24}else{if(c+5>=d)break;b[c++]=252|h>>30;b[c++]=128|h>>24&63}b[c++]=128|h>>18&63}b[c++]=128|h>>12&63}b[c++]=128|h>>6&63}b[c++]=128|h&63}}b[c]=0;return c-e}f.stringToUTF8Array=Ma;f.stringToUTF8=function(a,b,c){return Ma(a,A,b,c)};function Na(a){for(var b=0,c=0;c=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:2097151>=d?b+4:67108863>=d?b+5:b+6}return b}f.lengthBytesUTF8=Na;f.UTF16ToString=function(a){for(var b=0,c="";;){var d=za[a+2*b>>1];if(0==d)return c;++b;c+=String.fromCharCode(d)}};f.stringToUTF16=function(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var e=0;e>1]=a.charCodeAt(e),b+=2;za[b>>1]=0;return b-d};f.lengthBytesUTF16=function(a){return 2*a.length};f.UTF32ToString=function(a){for(var b=0,c="";;){var d=w[a+4*b>>2];if(0==d)return c;++b;65536<=d?(d=d-65536,c+=String.fromCharCode(55296|d>>10,56320|d&1023)):c+=String.fromCharCode(d)}};f.stringToUTF32=function(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e=g)var h=a.charCodeAt(++e),g=65536+((g&1023)<<10)|h&1023;w[b>>2]=g;b+=4;if(b+4>c)break}w[b>>2]=0;return b-d};f.lengthBytesUTF32=function(a){for(var b=0,c=0;c=d&&++c;b+=4}return b};function Oa(a){function b(c,d,e){d=d||Infinity;var g="",h=[],v;if("N"===a[m]){m++;"K"===a[m]&&m++;for(v=[];"E"!==a[m];)if("S"===a[m]){m++;var F=a.indexOf("_",m);v.push(r[a.substring(m,F)||0]||"?");m=F+1}else if("C"===a[m])v.push(v[v.length-1]),m+=2;else{var F=parseInt(a.substr(m)),ha=F.toString().length;if(!F||!ha){m--;break}var lc=a.substr(m+ha,F);v.push(lc);r.push(lc);m+=ha+F}m++;v=v.join("::");d--;if(0===d)return c?[v]:v}else if(("K"===a[m]||x&&"L"===a[m])&&m++,F=parseInt(a.substr(m)))ha=F.toString().length,v=a.substr(m+ha,F),m+=ha+F;x=!1;"I"===a[m]?(m++,F=b(!0),ha=b(!0,1,!0),g+=ha[0]+" "+v+"<"+F.join(", ")+">"):g=v;a:for(;m$a?2*$a:$a+16777216;$a!==na&&(na=$a);assert("undefined"!==typeof Int32Array&&"undefined"!==typeof Float64Array&&!!new Int32Array(1).subarray&&!!new Int32Array(1).set,"JS engine does not provide full typed array support");var buffer;buffer=new ArrayBuffer(na);u=new Int8Array(buffer);za=new Int16Array(buffer);w=new Int32Array(buffer);A=new Uint8Array(buffer);Ta=new Uint16Array(buffer);Ua=new Uint32Array(buffer);Ea=new Float32Array(buffer);Fa=new Float64Array(buffer);w[0]=255;assert(255===A[0]&&0===A[3],"Typed arrays 2 must be run on a little-endian system");f.HEAP=void 0;f.buffer=buffer;f.HEAP8=u;f.HEAP16=za;f.HEAP32=w;f.HEAPU8=A;f.HEAPU16=Ta;f.HEAPU32=Ua;f.HEAPF32=Ea;f.HEAPF64=Fa;function ab(a){for(;0>0]=a[c],c+=1}f.writeStringToMemory=wa;function ua(a,b){for(var c=0;c>0]=a[c]}f.writeArrayToMemory=ua;function Ka(a,b,c){for(var d=0;d>0]=a.charCodeAt(d);c||(u[b>>0]=0)}f.writeAsciiToMemory=Ka;Math.imul&&-5===Math.imul(4294967295,5)||(Math.imul=function(a,b){var c=a&65535,d=b&65535;return c*d+((a>>>16)*d+c*(b>>>16)<<16)|0});Math.De=Math.imul;Math.clz32||(Math.clz32=function(a){a=a>>>0;for(var b=0;32>b;b++)if(a&1<<31-b)return b;return 32});Math.ue=Math.clz32;var Aa=Math.abs,ib=Math.cos,jb=Math.sin,kb=Math.tan,lb=Math.acos,mb=Math.asin,nb=Math.atan,ob=Math.atan2,pb=Math.exp,qb=Math.log,rb=Math.sqrt,Da=Math.ceil,Ca=Math.floor,sb=Math.pow,Ba=Math.min,tb=0,ub=null,vb=null;function wb(){tb++;f.monitorRunDependencies&&f.monitorRunDependencies(tb)}f.addRunDependency=wb;function xb(){tb--;f.monitorRunDependencies&&f.monitorRunDependencies(tb);if(0==tb&&(null!==ub&&(clearInterval(ub),ub=null),vb)){var a=vb;vb=null;a()}}f.removeRunDependency=xb;f.preloadedImages={};f.preloadedAudios={};Va=8;ma=Va+50112;cb.push();z([1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,254,255,255,127,0,0,0,0,128,0,0,0,244,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,67,0,0,1,0,1,0,130,0,0,0,151,67,0,0,1,0,1,0,131,0,0,0,156,67,0,0,1,0,1,0,132,0,0,0,161,67,0,0,2,0,1,0,133,0,0,0,166,67,0,0,2,0,1,0,133,0,0,0,172,67,0,0,1,0,1,0,134,0,0,0,178,67,0,0,1,0,1,0,135,0,0,0,184,67,0,0,1,0,1,0,136,0,0,0,190,67,0,0,2,0,1,0,137,0,0,0,201,67,0,0,1,0,1,0,138,0,0,0,209,67,0,0,1,0,1,0,139,0,0,0,217,67,0,0,1,0,1,0,140,0,0,0,221,67,0,0,1,0,1,0,141,0,0,0,225,67,0,0,1,0,1,0,142,0,0,0,229,67,0,0,1,0,1,0,143,0,0,0,233,67,0,0,1,0,1,0,144,0,0,0,238,67,0,0,1,0,1,0,145,0,0,0,243,67,0,0,1,0,1,0,146,0,0,0,248,67,0,0,1,0,1,0,147,0,0,0,253,67,0,0,1,0,1,0,148,0,0,0,232,101,0,0,1,0,1,0,149,0,0,0,1,68,0,0,1,0,1,0,150,0,0,0,7,68,0,0,2,0,1,0,151,0,0,0,13,68,0,0,1,0,1,0,152,0,0,0,18,68,0,0,1,0,1,0,153,0,0,0,23,68,0,0,1,0,1,0,154,0,0,0,30,68,0,0,1,0,1,0,155,0,0,0,35,68,0,0,1,0,1,0,156,0,0,0,41,68,0,0,0,0,1,1,157,0,0,0,44,68,0,0,2,0,1,0,158,0,0,0,54,68,0,0,2,0,1,0,159,0,0,0,54,68,0,0,3,0,1,0,159,0,0,0,64,68,0,0,2,0,1,0,160,0,0,0,72,68,0,0,2,0,1,0,161,0,0,0,81,68,0,0,1,0,1,0,162,0,0,0,89,68,0,0,1,0,1,0,163,0,0,0,96,68,0,0,2,0,1,0,164,0,0,0,101,68,0,0,2,0,1,0,165,0,0,0,106,68,0,0,2,0,1,0,166,0,0,0,111,68,0,0,2,0,1,0,167,0,0,0,121,68,0,0,1,0,0,0,168,0,0,0,130,0,0,0,127,68,0,0,1,0,0,0,168,0,0,0,131,0,0,0,76,105,0,0,1,0,0,0,169,0,0,0,132,0,0,0,136,68,0,0,1,0,0,0,169,0,0,0,133,0,0,0,143,68,0,0,1,0,0,0,169,0,0,0,134,0,0,0,158,68,0,0,1,0,0,0,169,0,0,0,135,0,0,0,0,0,0,0,128,48,0,0,128,32,14,0,128,32,200,3,0,0,0,0,128,255,255,255,0,248,255,255,0,0,255,255,1,0,0,0,0,0,0,0,223,183,0,0,235,183,0,0,247,183,0,0,15,184,0,0,26,184,0,0,46,184,0,0,60,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,184,177,0,0,12,28,0,0,130,0,0,0,130,0,0,0,130,0,0,0,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,0,0,0,130,0,0,0,131,0,0,0,132,0,0,0,132,0,0,0,133,0,0,0,133,0,0,0,134,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,189,177,0,0,16,28,0,0,130,0,0,0,130,0,0,0,130,0,0,0,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,0,0,0,130,0,0,0,131,0,0,0,132,0,0,0,132,0,0,0,133,0,0,0,133,0,0,0,134,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,199,177,0,0,20,28,0,0,130,0,0,0,130,0,0,0,130,0,0,0,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,0,0,0,130,0,0,0,131,0,0,0,132,0,0,0,132,0,0,0,133,0,0,0,133,0,0,0,134,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,212,177,0,0,12,28,0,0,130,0,0,0,130,0,0,0,130,0,0,0,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,0,0,0,130,0,0,0,131,0,0,0,132,0,0,0,132,0,0,0,133,0,0,0,133,0,0,0,134,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,202,154,59,0,202,154,59,208,7,0,0,232,3,0,0,244,1,0,0,168,97,0,0,127,0,0,0,10,0,0,0,80,195,0,0,231,3,0,0,232,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,130,0,0,0,131,0,0,0,135,0,0,0,130,0,0,0,131,0,0,0,136,0,0,0,132,0,0,0,131,0,0,0,133,0,0,0,134,0,0,0,134,0,0,0,137,0,0,0,132,0,0,0,135,0,0,0,136,0,0,0,137,0,0,0,138,0,0,0,132,0,0,0,138,0,0,0,139,0,0,0,140,0,0,0,141,0,0,0,0,0,0,0,132,0,0,0,132,0,0,0,142,0,0,0,139,0,0,0,139,0,0,0,143,0,0,0,140,0,0,0,133,0,0,0,141,0,0,0,142,0,0,0,135,0,0,0,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,84,0,0,21,85,0,0,89,85,0,0,117,85,0,0,146,85,0,0,173,85,0,0,201,85,0,0,226,85,0,0,250,85,0,0,59,86,0,0,118,86,0,0,186,86,0,0,234,86,0,0,90,87,0,0,225,87,0,0,21,88,0,0,87,88,0,0,130,88,0,0,189,88,0,0,228,88,0,0,16,89,0,0,57,89,0,0,104,89,0,0,146,89,0,0,66,75,0,0,66,75,0,0,184,89,0,0,239,89,0,0,44,90,0,0,149,90,0,0,252,90,0,0,51,91,0,0,109,91,0,0,216,91,0,0,39,92,0,0,104,92,0,0,164,92,0,0,212,92,0,0,62,93,0,0,135,93,0,0,99,83,0,0,170,0,0,0,107,83,0,0,171,0,0,0,125,83,0,0,172,0,0,0,115,83,0,0,173,0,0,0,79,96,0,0,2,0,4,0,82,96,0,0,3,1,3,0,86,96,0,0,3,1,2,0,90,96,0,0,4,0,1,0,115,83,0,0,9,0,0,0,59,100,0,0,6,0,0,0,178,97,0,0,8,0,0,0,187,97,0,0,10,0,0,0,66,100,0,0,5,0,0,0,116,97,0,0,7,0,0,0,72,100,0,0,10,0,0,0,83,100,0,0,10,0,0,0,0,0,0,0,136,0,0,0,143,0,0,0,133,0,0,0,144,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0,137,0,0,0,145,0,0,0,134,0,0,0,146,0,0,0,134,0,0,0,0,0,0,0,0,0,0,0,135,0,0,0,135,0,0,0,145,0,0,0,147,0,0,0,147,0,0,0,146,0,0,0,148,0,0,0,134,0,0,0,149,0,0,0,150,0,0,0,138,0,0,0,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,151,0,0,0,135,0,0,0,152,0,0,0,136,0,0,0,0,0,0,0,255,255,255,255,255,255,0,252,1,0,0,248,1,0,0,248,48,0,0,0,7,232,0,0,6,108,1,0,47,236,1,0,7,172,2,0,1,208,2,0,3,216,2,0,1,236,2,0,1,252,2,0,1,92,3,0,1,220,3,0,4,8,11,0,14,72,11,0,7,148,11,0,1,180,11,0,129,188,11,0,1,212,13,0,1,248,13,0,2,16,14,0,1,28,14,0,1,216,15,0,8,8,18,0,6,104,21,0,2,36,22,0,1,60,22,0,55,68,22,0,2,204,23,0,5,0,24,0,22,24,24,0,2,120,24,0,21,44,25,0,4,168,25,0,1,192,25,0,1,80,27,0,15,88,27,0,7,156,27,0,2,244,27,0,14,0,28,0,1,60,28,0,1,68,28,0,27,192,28,0,11,152,30,0,9,172,31,0,4,216,31,0,4,88,32,0,9,108,32,0,3,148,32,0,5,164,32,0,15,192,32,0,3,100,33,0,1,120,33,0,27,144,35,0,4,0,36,0,3,232,36,0,18,248,36,0,7,68,37,0,4,136,37,0,1,192,37,0,3,4,38,0,1,240,38,0,7,248,38,0,2,28,39,0,3,44,39,0,1,92,39,0,2,136,39,0,2,200,39,0,2,232,39,0,3,4,40,0,1,240,40,0,5,248,40,0,2,28,41,0,3,44,41,0,1,68,41,0,2,192,41,0,1,212,41,0,3,4,42,0,1,240,42,0,8,248,42,0,3,28,43,0,3,44,43,0,2,136,43,0,2,192,43,0,3,4,44,0,1,240,44,0,7,248,44,0,2,28,45,0,3,44,45,0,2,88,45,0,2,136,45,0,1,192,45,0,1,8,46,0,5,248,46,0,3,24,47,0,4,40,47,0,1,92,47,0,8,204,47,0,3,4,48,0,7,248,48,0,3,24,49,0,4,40,49,0,2,84,49,0,2,136,49,0,1,252,49,0,2,8,50,0,1,240,50,0,7,248,50,0,3,24,51,0,4,40,51,0,2,84,51,0,2,136,51,0,2,8,52,0,7,248,52,0,3,24,53,0,4,40,53,0,1,92,53,0,2,136,53,0,1,228,53,0,2,8,54,0,1,40,55,0,6,60,55,0,1,88,55,0,8,96,55,0,3,200,55,0,1,196,56,0,7,208,56,0,1,252,56,0,9,28,57,0,2,104,57,0,1,196,58,0,6,208,58,0,2,236,58,0,6,32,59,0,31,4,60,0,12,208,60,0,23,196,61,0,11,52,62,0,36,100,62,0,15,248,62,0,13,56,63,0,20,172,64,0,6,40,65,0,4,88,65,0,3,120,65,0,3,136,65,0,7,156,65,0,4,196,65,0,12,8,66,0,1,60,66,0,6,104,66,0,1,236,67,0,12,116,77,0,10,64,78,0,1,0,80,0,2,180,89,0,1,0,90,0,2,108,90,0,3,172,91,0,3,72,92,0,5,200,92,0,2,72,93,0,2,200,93,0,35,208,94,0,4,96,95,0,1,116,95,0,15,0,96,0,1,164,98,0,12,128,100,0,12,192,100,0,1,0,101,0,2,16,101,0,17,192,102,0,2,32,103,0,34,120,103,0,5,92,104,0,2,120,104,0,10,84,105,0,29,128,105,0,1,252,105,0,7,128,106,0,6,160,106,0,5,0,108,0,17,208,108,0,35,104,109,0,3,0,110,0,13,132,110,0,14,152,111,0,4,240,111,0,20,144,112,0,5,236,112,0,2,248,113,0,8,0,115,0,25,64,115,0,1,180,115,0,3,200,115,0,39,0,119,0,4,240,119,0,1,244,126,0,3,252,126,0,3,52,127,0,3,116,127,0,3,180,127,0,2,244,127,0,101,0,128,0,6,168,129,0,5,232,129,0,5,40,130,0,26,128,130,0,33,64,131,0,2,0,132,0,4,12,132,0,2,32,132,0,1,80,132,0,3,88,132,0,6,120,132,0,1,148,132,0,1,156,132,0,1,164,132,0,1,184,132,0,2,232,132,0,5,0,133,0,4,40,133,0,1,60,133,0,100,66,134,0,39,0,144,0,11,0,145,0,78,112,146,0,0,2,148,0,117,4,156,0,185,83,158,0,10,64,173,0,6,148,179,0,3,188,179,0,4,228,179,0,2,248,179,0,1,192,181,0,1,252,181,0,79,128,183,0,12,192,184,0,26,0,186,0,89,108,186,0,214,0,188,0,12,192,191,0,5,0,192,0,25,32,192,0,7,168,192,0,2,216,192,0,3,244,192,0,4,100,194,0,1,128,194,0,1,236,195,0,2,64,198,0,10,88,198,0,36,0,199,0,31,0,200,0,30,168,200,0,1,64,201,0,32,128,201,0,39,40,202,0,63,0,203,0,0,1,204,0,64,0,55,1,55,64,146,2,2,248,147,2,3,52,152,2,16,188,153,2,1,124,154,2,8,192,155,2,23,0,156,2,2,128,156,2,2,36,158,2,1,8,160,2,1,24,160,2,1,44,160,2,9,140,160,2,4,216,160,2,4,208,161,2,2,0,162,2,17,208,162,2,2,56,163,2,18,128,163,2,3,224,163,2,10,152,164,2,13,28,165,2,1,124,165,2,4,0,166,2,27,204,166,2,2,120,167,2,14,164,168,2,1,12,169,2,2,48,169,2,4,112,169,2,3,220,169,2,1,236,169,2,1,192,170,2,3,200,170,2,2,220,170,2,2,248,170,2,1,4,171,2,2,120,171,2,7,172,171,2,2,212,171,2,11,140,175,2,1,0,96,3,2,252,109,3,2,252,111,3,1,252,127,3,1,120,236,3,1,164,236,3,16,200,238,3,2,248,244,3,2,240,247,3,26,0,248,3,7,128,248,3,35,192,248,3,19,80,249,3,4,160,249,3,1,252,251,3,15,4,252,3,7,104,252,3,6,236,252,3,11,108,253,3,7,128,255,3,7,160,255,3,5,228,255,3,3,0,4,4,9,220,4,4,17,228,5,4,12,64,6,4,46,64,7,4,1,124,14,4,1,64,15,4,1,92,33,4,1,124,36,4,1,252,36,4,3,4,40,4,2,20,40,4,4,48,40,4,3,224,40,4,1,252,40,4,9,64,41,4,1,252,41,4,7,228,44,4,3,0,64,4,22,224,64,4,3,0,66,4,18,192,66,4,3,0,68,4,14,156,68,4,4,0,69,4,3,0,70,4,14,204,70,4,4,20,71,4,13,172,90,4,4,192,145,4,46,68,189,5,4,60,190,5,246,0,64,7,39,0,68,7,181,164,68,7,70,0,72,7,87,0,76,7,1,4,91,7,1,108,91,7,1,236,91,7,1,84,92,7,1,212,92,7,1,60,93,7,1,188,93,7,1,36,94,7,1,164,94,7,1,12,95,7,2,192,187,7,44,0,192,7,100,192,192,7,15,128,194,7,14,196,194,7,15,4,195,7,15,68,195,7,31,64,196,7,60,192,196,7,43,192,197,7,29,152,199,7,43,64,200,7,9,0,201,7,2,64,201,7,33,0,204,7,6,192,204,7,70,220,204,7,20,0,206,7,37,128,206,7,5,24,207,7,17,128,207,7,63,0,208,7,1,0,209,7,182,8,209,7,4,228,211,7,62,0,212,7,4,0,213,7,24,64,213,7,70,236,215,7,11,20,217,7,70,0,218,7,116,0,220,7,1,4,0,56,96,128,0,56,240,0,4,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,153,0,0,0,135,0,0,0,136,0,0,0,140,0,0,0,148,0,0,0,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,105,0,0,0,0,2,0,172,105,0,0,0,0,4,0,0,0,0,0,0,0,0,0,148,105,0,0,1,0,0,0,151,105,0,0,2,0,0,0,154,105,0,0,6,0,0,0,158,105,0,0,128,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,154,0,0,0,136,0,0,0,141,0,0,0,130,0,0,0,155,0,0,0,142,0,0,0,174,0,0,0,130,0,0,0,131,0,0,0,137,0,0,0,138,0,0,0,156,0,0,0,139,0,0,0,150,0,0,0,157,0,0,0,158,0,0,0,159,0,0,0,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,136,0,0,1,0,0,0,66,81,0,0,1,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,175,0,0,0,0,0,0,0,32,124,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,176,0,0,0,0,0,0,0,22,124,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,2,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,82,0,0,95,124,0,0,108,124,0,0,0,0,0,0,121,124,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,178,0,0,0,0,0,0,0,115,125,0,0,0,0,0,0,0,0,0,0,3,0,1,0,0,0,0,0,0,0,0,0,179,0,0,0,0,0,0,0,240,125,0,0,0,0,0,0,0,0,0,0,67,133,0,0,0,0,0,0,8,0,0,0,35,129,0,0,1,1,0,0,0,0,0,0,82,133,0,0,2,0,0,0,0,0,16,0,98,133,0,0,3,0,0,0,0,0,0,0,158,128,0,0,4,1,0,0,0,0,0,0,67,129,0,0,5,0,0,0,0,0,0,0,111,133,0,0,6,0,0,0,0,0,0,0,131,133,0,0,2,0,0,0,0,0,0,16,147,133,0,0,2,0,0,0,16,0,0,0,168,133,0,0,7,0,0,0,0,0,0,0,183,133,0,0,8,0,0,0,0,0,0,0,199,133,0,0,2,0,0,0,128,0,0,0,213,133,0,0,0,2,0,0,15,0,0,0,226,133,0,0,10,1,0,0,0,0,0,0,240,133,0,0,11,1,0,0,0,0,0,0,3,134,0,0,2,0,0,0,0,0,0,1,22,134,0,0,2,0,0,0,0,1,0,0,170,130,0,0,12,0,0,0,0,0,0,0,45,134,0,0,13,1,0,0,0,0,0,0,63,134,0,0,14,1,0,0,0,0,0,0,80,134,0,0,2,0,0,0,0,0,8,0,93,134,0,0,0,2,0,0,0,0,0,0,108,134,0,0,2,0,0,0,4,0,0,0,126,134,0,0,2,0,0,0,8,0,0,0,136,134,0,0,2,0,0,0,0,32,0,0,161,134,0,0,15,1,0,0,0,0,0,0,180,134,0,0,16,1,0,0,0,0,0,0,191,134,0,0,17,1,0,0,0,0,0,0,202,134,0,0,16,1,0,0,1,0,0,0,9,130,0,0,18,1,0,0,0,0,0,0,3,129,0,0,19,1,0,0,0,0,0,0,16,129,0,0,20,0,0,0,0,0,0,0,214,134,0,0,2,0,0,0,0,128,0,0,246,128,0,0,22,0,0,0,0,0,0,0,233,134,0,0,23,1,0,0,0,0,0,0,79,129,0,0,24,0,0,0,0,0,0,0,248,134,0,0,23,1,0,0,0,0,0,0,205,128,0,0,25,0,0,0,0,0,0,0,3,135,0,0,2,0,0,0,0,0,0,2,14,135,0,0,18,1,0,0,0,0,0,0,26,135,0,0,2,0,0,0,0,64,0,0,43,135,0,0,2,0,0,0,0,0,4,0,62,135,0,0,2,0,0,0,0,0,2,0,88,135,0,0,0,0,0,0,1,0,0,0,215,128,0,0,26,0,0,0,0,0,0,0,103,135,0,0,2,0,0,0,64,0,0,0,122,135,0,0,27,0,0,0,0,0,0,0,32,131,0,0,28,0,0,0,0,0,0,0,136,135,0,0,29,1,0,0,0,0,0,0,146,129,0,0,30,1,0,0,0,0,0,0,142,135,0,0,31,1,0,0,0,0,0,0,89,129,0,0,32,0,0,0,0,0,0,0,100,129,0,0,33,0,0,0,0,0,0,0,48,131,0,0,34,0,0,0,0,0,0,0,153,135,0,0,0,0,0,0,6,0,0,0,5,131,0,0,35,0,0,0,0,0,0,0,166,135,0,0,36,1,0,0,0,0,0,0,181,135,0,0,2,0,0,0,0,8,1,0,165,132,0,0,120,132,0,0,197,132,0,0,202,132,0,0,210,132,0,0,134,132,0,0,13,132,0,0,178,132,0,0,184,132,0,0,190,132,0,0,159,132,0,0,165,132,0,0,120,132,0,0,88,97,0,0,169,132,0,0,174,132,0,0,82,132,0,0,120,132,0,0,137,132,0,0,144,132,0,0,151,132,0,0,130,132,0,0,132,132,0,0,134,132,0,0,82,132,0,0,120,132,0,0,125,132,0,0,82,132,0,0,120,132,0,0,79,132,0,0,82,132,0,0,13,132,0,0,86,132,0,0,91,132,0,0,94,132,0,0,104,132,0,0,114,132,0,0,13,132,0,0,248,99,0,0,19,132,0,0,26,132,0,0,74,131,0,0,1,0,0,0,79,131,0,0,1,0,0,0,85,131,0,0,2,0,0,0,94,131,0,0,3,0,0,0,103,131,0,0,2,0,0,0,111,131,0,0,3,0,0,0,119,131,0,0,0,0,0,0,126,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,131,0,0,232,101,0,0,61,131,0,0,44,133,0,0,51,133,0,0,59,133,0,0,252,130,0,0,158,105,0,0,63,133,0,0,114,132,0,0,64,0,0,0,141,131,0,0,66,0,0,0,136,131,0,0,65,0,0,0,113,139,0,0,67,0,0,0,79,120,0,0,3,0,0,0,75,120,0,0,3,0,0,0,66,75,0,0,150,149,0,0,156,149,0,0,161,149,0,0,166,149,0,0,26,150,0,0,32,150,0,0,40,150,0,0,255,157,0,0,4,158,0,0,11,158,0,0,14,158,0,0,17,158,0,0,20,158,0,0,23,158,0,0,26,158,0,0,34,158,0,0,66,100,0,0,86,132,0,0,43,158,0,0,62,169,0,0,71,169,0,0,78,169,0,0,84,169,0,0,167,169,0,0,177,169,0,0,188,169,0,0,200,169,0,0,211,169,0,0,222,169,0,0,233,169,0,0,238,169,0,0,243,169,0,0,254,169,0,0,10,170,0,0,17,170,0,0,25,170,0,0,33,170,0,0,38,170,0,0,44,170,0,0,51,170,0,0,65,170,0,0,78,170,0,0,84,170,0,0,88,170,0,0,99,170,0,0,104,170,0,0,112,170,0,0,118,170,0,0,125,170,0,0,130,170,0,0,139,170,0,0,144,170,0,0,153,170,0,0,158,170,0,0,163,170,0,0,169,170,0,0,177,170,0,0,187,170,0,0,195,170,0,0,205,170,0,0,214,170,0,0,221,170,0,0,231,170,0,0,244,170,0,0,249,170,0,0,5,171,0,0,13,171,0,0,18,171,0,0,23,171,0,0,26,171,0,0,32,171,0,0,39,171,0,0,48,171,0,0,59,171,0,0,65,171,0,0,76,171,0,0,86,171,0,0,96,171,0,0,105,171,0,0,115,171,0,0,129,171,0,0,143,171,0,0,154,171,0,0,167,171,0,0,178,171,0,0,184,171,0,0,196,171,0,0,203,171,0,0,210,171,0,0,217,171,0,0,224,171,0,0,235,171,0,0,244,171,0,0,250,171,0,0,4,172,0,0,7,172,0,0,11,172,0,0,20,172,0,0,29,172,0,0,36,172,0,0,43,172,0,0,51,172,0,0,54,172,0,0,57,172,0,0,60,172,0,0,63,172,0,0,66,172,0,0,69,172,0,0,79,172,0,0,86,172,0,0,92,172,0,0,102,172,0,0,113,172,0,0,117,172,0,0,126,172,0,0,135,172,0,0,142,172,0,0,152,172,0,0,159,172,0,0,166,172,0,0,173,172,0,0,181,172,0,0,192,172,0,0,206,172,0,0,217,172,0,0,224,172,0,0,232,172,0,0,238,172,0,0,246,172,0,0,251,172,0,0,6,173,0,0,11,173,0,0,18,173,0,0,31,173,0,0,41,173,0,0,51,173,0,0,56,173,0,0,65,173,0,0,71,173,0,0,77,173,0,0,83,173,0,0,89,173,0,0,97,173,0,0,103,173,0,0,115,173,0,0,127,173,0,0,139,173,0,0,151,173,0,0,164,173,0,0,174,173,0,0,184,173,0,0,196,173,0,0,208,173,0,0,218,173,0,0,229,173,0,0,240,173,0,0,248,173,0,0,253,173,0,0,3,174,0,0,13,174,0,0,22,174,0,0,29,174,0,0,35,174,0,0,47,174,0,0,57,174,0,0,70,174,0,0,83,174,0,0,92,174,0,0,100,174,0,0,109,174,0,0,120,174,0,0,127,174,0,0,137,174,0,0,144,174,0,0,152,174,0,0,161,174,0,0,167,174,0,0,175,174,0,0,181,174,0,0,189,174,0,0,199,174,0,0,208,174,0,0,213,174,0,0,224,174,0,0,229,174,0,0,57,175,0,0,70,175,0,0,0,0,0,0,106,175,0,0,131,175,0,0,162,175,0,0,181,175,0,0,136,126,0,0,206,175,0,0,243,175,0,0,255,175,0,0,14,176,0,0,47,176,0,0,65,176,0,0,90,176,0,0,119,176,0,0,136,176,0,0,96,160,0,0,90,74,0,0,159,176,0,0,177,176,0,0,195,176,0,0,234,176,0,0,9,177,0,0,30,177,0,0,62,177,0,0,96,177,0,0,151,0,0,0,152,0,0,0,153,0,0,0,1,0,0,0,160,0,0,0,137,0,0,0,138,0,0,0,143,0,0,0,154,0,0,0,155,0,0,0,156,0,0,0,157,0,0,0,158,0,0,0,144,0,0,0,161,0,0,0,162,0,0,0,0,0,0,0,136,0,0,0,141,0,0,0,159,0,0,0,139,0,0,0,137,0,0,0,3,178,0,0,145,0,0,0,0,0,0,0,222,177,0,0,163,0,0,0,0,0,0,0,81,105,0,0,160,0,0,0,0,0,0,0,8,178,0,0,161,0,0,0,0,0,0,0,15,178,0,0,162,0,0,0,0,0,0,0,20,178,0,0,163,0,0,0,0,0,0,0,26,178,0,0,164,0,0,0,0,0,0,0,36,178,0,0,146,0,0,0,0,0,0,0,42,178,0,0,147,0,0,0,0,0,0,0,47,178,0,0,0,0,0,0,0,0,0,0,53,178,0,0,0,0,0,0,0,0,0,0,61,178,0,0,148,0,0,0,0,0,0,0,67,178,0,0,0,0,0,0,0,0,0,0,74,178,0,0,0,0,0,0,0,0,0,0,83,178,0,0,165,0,0,0,0,0,0,0,90,178,0,0,0,0,0,0,0,0,0,0,100,178,0,0,164,0,0,0,0,0,0,0,107,178,0,0,166,0,0,0,0,0,0,0,121,178,0,0,167,0,0,0,0,0,0,0,127,178,0,0,165,0,0,0,0,0,0,0,133,178,0,0,149,0,0,0,0,0,0,0,140,178,0,0,130,0,0,0,0,0,0,0,148,178,0,0,137,0,0,0,0,0,0,0,153,178,0,0,168,0,0,0,0,0,0,0,160,178,0,0,0,0,0,0,0,0,0,0,167,178,0,0,131,0,0,0,0,0,0,0,179,178,0,0,150,0,0,0,0,0,0,0,188,178,0,0,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,179,0,0,38,179,0,0,47,179,0,0,52,179,0,0,3,0,0,0,166,0,0,0,137,0,0,0,138,0,0,0,143,0,0,0,154,0,0,0,155,0,0,0,170,0,0,0,171,0,0,0,172,0,0,0,144,0,0,0,161,0,0,0,162,0,0,0,0,0,0,0,136,0,0,0,141,0,0,0,159,0,0,0,139,0,0,0,137,0,0,0,0,0,0,0,3,0,0,0,167,0,0,0,137,0,0,0,138,0,0,0,143,0,0,0,154,0,0,0,155,0,0,0,173,0,0,0,174,0,0,0,175,0,0,0,144,0,0,0,161,0,0,0,162,0,0,0,140,0,0,0,136,0,0,0,141,0,0,0,159,0,0,0,139,0,0,0,137,0,0,0,0,0,0,0,1,0,1,8,1,0,0,0,0,0,0,0,180,0,0,0,0,0,0,0,46,182,0,0,0,0,0,0,0,0,0,0,2,0,1,8,1,0,0,0,0,0,0,0,180,0,0,0,0,0,0,0,46,182,0,0,0,0,0,0,0,0,0,0,1,0,1,8,2,0,0,0,0,0,0,0,180,0,0,0,0,0,0,0,52,182,0,0,0,0,0,0,0,0,0,0,2,0,1,8,2,0,0,0,0,0,0,0,180,0,0,0,0,0,0,0,52,182,0,0,0,0,0,0,0,0,0,0,1,0,1,8,3,0,0,0,0,0,0,0,180,0,0,0,0,0,0,0,58,182,0,0,0,0,0,0,0,0,0,0,2,0,1,8,3,0,0,0,0,0,0,0,180,0,0,0,0,0,0,0,58,182,0,0,0,0,0,0,0,0,0,0,255,255,33,8,0,0,0,0,0,0,0,0,181,0,0,0,0,0,0,0,181,142,0,0,0,0,0,0,0,0,0,0,0,0,33,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,142,0,0,0,0,0,0,0,0,0,0,1,0,33,16,0,0,0,0,0,0,0,0,182,0,0,0,142,0,0,0,181,142,0,0,0,0,0,0,0,0,0,0,255,255,33,8,1,0,0,0,0,0,0,0,181,0,0,0,0,0,0,0,185,142,0,0,0,0,0,0,0,0,0,0,0,0,33,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,142,0,0,0,0,0,0,0,0,0,0,1,0,33,16,1,0,0,0,0,0,0,0,182,0,0,0,142,0,0,0,185,142,0,0,0,0,0,0,0,0,0,0,1,0,129,8,0,0,0,0,0,0,0,0,183,0,0,0,0,0,0,0,63,182,0,0,0,0,0,0,0,0,0,0,1,0,65,8,0,0,0,0,0,0,0,0,184,0,0,0,0,0,0,0,70,182,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,185,0,0,0,0,0,0,0,77,182,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,186,0,0,0,0,0,0,0,83,182,0,0,0,0,0,0,0,0,0,0,3,0,1,8,0,0,0,0,0,0,0,0,186,0,0,0,0,0,0,0,83,182,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,187,0,0,0,0,0,0,0,90,182,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,188,0,0,0,0,0,0,0,97,182,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,189,0,0,0,0,0,0,0,105,182,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,110,182,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,114,182,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,114,182,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,192,0,0,0,0,0,0,0,120,182,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,193,0,0,0,0,0,0,0,126,182,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,182,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,182,0,0,0,0,0,0,0,0,0,0,255,255,1,10,0,0,0,0,0,0,0,0,194,0,0,0,0,0,0,0,132,182,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,195,0,0,0,0,0,0,0,141,182,0,0,0,0,0,0,0,0,0,0,2,0,1,10,0,0,0,0,0,0,0,0,194,0,0,0,0,0,0,0,145,182,0,0,0,0,0,0,0,0,0,0,1,0,1,12,0,0,0,0,0,0,0,0,194,0,0,0,0,0,0,0,152,182,0,0,0,0,0,0,0,0,0,0,2,0,1,12,0,0,0,0,0,0,0,0,194,0,0,0,0,0,0,0,161,182,0,0,0,0,0,0,0,0,0,0,1,0,1,12,0,0,0,0,0,0,0,0,194,0,0,0,0,0,0,0,172,182,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,196,0,0,0,0,0,0,0,179,182,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,197,0,0,0,0,0,0,0,186,182,0,0,0,0,0,0,0,0,0,0,2,0,33,8,0,0,0,0,0,0,0,0,198,0,0,0,0,0,0,0,197,182,0,0,0,0,0,0,0,0,0,0,0,0,1,32,0,0,0,0,0,0,0,0,194,0,0,0,0,0,0,0,204,182,0,0,0,0,0,0,0,0,0,0,0,0,1,32,0,0,0,0,0,0,0,0,199,0,0,0,0,0,0,0,219,182,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,200,0,0,0,0,0,0,0,236,182,0,0,0,0,0,0,0,0,0,0,1,0,1,32,0,0,0,0,0,0,0,0,201,0,0,0,0,0,0,0,247,182,0,0,0,0,0,0,0,0,0,0,1,0,1,32,0,0,0,0,0,0,0,0,202,0,0,0,0,0,0,0,17,183,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,203,0,0,0,0,0,0,0,42,183,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,204,0,0,0,0,0,0,0,48,183,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,205,0,0,0,0,0,0,0,66,183,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,206,0,0,0,0,0,0,0,74,183,0,0,0,0,0,0,0,0,0,0,3,0,1,8,0,0,0,0,0,0,0,0,207,0,0,0,0,0,0,0,88,183,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,208,0,0,0,0,0,0,0,96,183,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,209,0,0,0,143,0,0,0,105,183,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,209,0,0,0,144,0,0,0,109,183,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,209,0,0,0,145,0,0,0,115,183,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,210,0,0,0,146,0,0,0,119,183,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,210,0,0,0,146,0,0,0,119,183,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,211,0,0,0,147,0,0,0,125,183,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,211,0,0,0,147,0,0,0,125,183,0,0,0,0,0,0,0,0,0,0,2,0,13,8,58,75,0,0,0,0,0,0,212,0,0,0,0,0,0,0,141,131,0,0,0,0,0,0,0,0,0,0,2,0,5,8,62,75,0,0,0,0,0,0,212,0,0,0,0,0,0,0,136,131,0,0,0,0,0,0,0,0,0,0,3,0,5,8,62,75,0,0,0,0,0,0,212,0,0,0,0,0,0,0,136,131,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,213,0,0,0,0,0,0,0,173,180,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,214,0,0,0,0,0,0,0,193,180,0,0,0,0,0,0,0,0,0,0,3,0,1,8,0,0,0,0,0,0,0,0,215,0,0,0,0,0,0,0,215,180,0,0,0,0,0,0,0,0,0,0,255,255,1,32,0,0,0,0,0,0,0,0,216,0,0,0,0,0,0,0,2,181,0,0,0,0,0,0,0,0,0,0,255,255,1,32,0,0,0,0,0,0,0,0,217,0,0,0,0,0,0,0,12,181,0,0,0,0,0,0,0,0,0,0,255,255,1,32,0,0,0,0,0,0,0,0,218,0,0,0,0,0,0,0,17,181,0,0,0,0,0,0,0,0,0,0,255,255,1,32,0,0,0,0,0,0,0,0,219,0,0,0,0,0,0,0,22,181,0,0,0,0,0,0,0,0,0,0,255,255,1,32,0,0,0,0,0,0,0,0,220,0,0,0,0,0,0,0,31,181,0,0,0,0,0,0,0,0,0,0,0,0,1,32,0,0,0,0,0,0,0,0,221,0,0,0,0,0,0,0,40,181,0,0,0,0,0,0,0,0,0,0,0,0,1,32,0,0,0,0,0,0,0,0,222,0,0,0,0,0,0,0,53,181,0,0,0,0,0,0,0,0,0,0,0,0,1,32,0,0,0,0,0,0,0,0,223,0,0,0,0,0,0,0,71,181,0,0,0,0,0,0,0,0,0,0,158,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,39,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,0,0,0,152,0,0,0,196,191,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255],"i8",4,l.aa); -z([2,0,2,0,8,0,9,0,14,0,16,0,20,0,23,0,25,0,25,0,29,0,33,0,36,0,41,0,46,0,48,0,53,0,54,0,59,0,62,0,65,0,67,0,69,0,78,0,81,0,86,0,91,0,95,0,96,0,101,0,105,0,109,0,117,0,122,0,128,0,136,0,142,0,152,0,159,0,162,0,162,0,165,0,167,0,167,0,171,0,176,0,179,0,184,0,184,0,188,0,192,0,199,0,204,0,209,0,212,0,218,0,221,0,225,0,234,0,240,0,240,0,240,0,243,0,246,0,250,0,251,0,255,0,5,1,9,1,16,1,22,1,34,1,40,1,49,1,51,1,57,1,62,1,64,1,71,1,76,1,81,1,87,1,93,1,98,1,102,1,105,1,111,1,115,1,122,1,124,1,131,1,133,1,135,1,144,1,148,1,154,1,160,1,168,1,173,1,173,1,189,1,196,1,203,1,204,1,211,1,215,1,219,1,223,1,227,1,230,1,232,1,234,1,240,1,244,1,252,1,1,2,9,2,12,2,17,2,22,2,28,2,32,2,37,2,0,0,2,0,3,0,5,0,6,0,7,0,8,0,9,0,33,0,32,0,30,0,28,0,26,0,65,0,14,26,181,0,64,1,192,0,14,23,216,0,14,7,0,1,1,48,50,1,1,6,57,1,1,16,74,1,1,46,120,1,116,1,121,1,1,6,127,1,104,1,129,1,50,1,130,1,1,4,134,1,44,1,135,1,0,1,137,1,42,2,139,1,0,1,142,1,32,1,143,1,38,1,144,1,40,1,145,1,0,1,147,1,42,1,148,1,46,1,150,1,52,1,151,1,48,1,152,1,0,1,156,1,52,1,157,1,54,1,159,1,56,1,160,1,1,6,166,1,60,1,167,1,0,1,169,1,60,1,172,1,0,1,174,1,60,1,175,1,0,1,177,1,58,2,179,1,1,4,183,1,62,1,184,1,0,1,188,1,0,1,196,1,2,1,197,1,0,1,199,1,2,1,200,1,0,1,202,1,2,1,203,1,1,18,222,1,1,18,241,1,2,1,242,1,1,4,246,1,122,1,247,1,134,1,248,1,1,40,32,2,110,1,34,2,1,18,58,2,70,1,59,2,0,1,61,2,108,1,62,2,68,1,65,2,0,1,67,2,106,1,68,2,28,1,69,2,30,1,70,2,1,10,69,3,36,1,112,3,1,4,118,3,0,1,134,3,18,1,136,3,16,3,140,3,26,1,142,3,24,2,145,3,14,17,163,3,14,9,194,3,0,1,207,3,4,1,208,3,140,1,209,3,142,1,213,3,146,1,214,3,144,1,216,3,1,24,240,3,136,1,241,3,138,1,244,3,130,1,245,3,128,1,247,3,0,1,249,3,152,1,250,3,0,1,253,3,110,3,0,4,34,16,16,4,14,32,96,4,1,34,138,4,1,54,192,4,6,1,193,4,1,14,208,4,1,88,49,5,22,38,160,16,66,38,199,16,66,1,205,16,66,1,0,30,1,150,155,30,132,1,158,30,96,1,160,30,1,96,8,31,150,8,24,31,150,6,40,31,150,8,56,31,150,8,72,31,150,6,89,31,151,8,104,31,150,8,136,31,150,8,152,31,150,8,168,31,150,8,184,31,150,2,186,31,126,2,188,31,148,1,190,31,100,1,200,31,124,4,204,31,148,1,216,31,150,2,218,31,120,2,232,31,150,2,234,31,118,2,236,31,152,1,248,31,112,2,250,31,114,2,252,31,148,1,38,33,98,1,42,33,92,1,43,33,94,1,50,33,12,1,96,33,8,16,131,33,0,1,182,36,10,26,0,44,22,47,96,44,0,1,98,44,88,1,99,44,102,1,100,44,90,1,103,44,1,6,109,44,84,1,110,44,86,1,111,44,80,1,112,44,82,1,114,44,0,1,117,44,0,1,126,44,78,2,128,44,1,100,235,44,1,4,242,44,0,1,64,166,1,46,128,166,1,24,34,167,1,14,50,167,1,62,121,167,1,4,125,167,76,1,126,167,1,10,139,167,0,1,141,167,74,1,144,167,1,4,160,167,1,10,170,167,72,1,33,255,14,26,1,0,2,0,8,0,15,0,16,0,26,0,28,0,32,0,37,0,38,0,40,0,48,0,63,0,64,0,69,0,71,0,79,0,80,0,116,0,202,0,203,0,205,0,206,0,207,0,209,0,210,0,211,0,213,0,214,0,217,0,218,0,219,0,7,3,96,28,40,42,43,42,188,90,216,90,252,117,193,213,225,213,226,213,228,213,3,214,9,214,25,214,65,223,186,223,65,226,163,226,251,227,26,241,244,254,61,255,93,255,126,255,128,255,130,255,135,255,144,255,156,255,159,255,170,255,182,255,192,255,196,255,198,255,200,255,202,255,208,255,226,255,231,255,234,255,241,255,247,255,248,255,249,255,0,0,5,7,56,7,67,7,99,7,136,7,148,7,203,7,232,7,248,7,12,8,62,8,120,8,158,8,216,8,238,8,40,9,79,9,168,9,184,9,212,9,36,10,108,10,172,10,222,10,26,11,78,11,138,11,168,11,184,11,212,11,8,13,128,13,112,14,128,14,144,14,160,14,56,15,72,15,88,15,128,15,168,15,200,15,10,16,42,16,74,16,106,16,138,16,170,16,200,16,216,16,248,16,56,17,72,17,120,17,152,17,4,24,54,24,120,24,136,24,216,24,29,25,105,25,129,25,8,240,28,240,94,240,152,240,202,240,248,240,8,241,30,241,88,241,104,241,140,241,184,241,218,241,252,241,46,242,170,242,202,242,248,242,10,243,94,243,156,243,234,243,14,244,72,244,90,244,120,244,140,244,176,244,184,244,192,244,200,244,10,245,204,245,74,246,106,246,42,247,158,247,113,255,186,3,86,0,21,0,206,255,23,0,79,0,134,0,226,0,136,255,129,255,146,0,161,0,35,1,93,1,110,1,55,1,126,1,118,1,231,0,108,1,111,1,140,1,142,1,236,0,61,1,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,204,1,247,1,55,2,57,2,60,2,65,2,68,2,70,2,72,2,75,2,81,2,119,2,132,2,134,2,137,2,143,2,145,2,147,2,149,2,152,2,158,2,196,2,208,2,247,2,3,3,42,3,54,3,93,3,105,3,144,3,162,3,179,3,182,3,189,3,191,3,195,3,198,3,200,3,230,3,237,3,245,3,254,3,1,4,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,218,1,212,0,15,0,242,1,222,0,255,1,153,255,97,0,45,2,153,255,153,255,153,255,153,255,176,255,9,0,59,0,19,0,38,1,38,1,203,255,194,255,178,2,179,2,223,2,225,2,228,2,232,2,133,0,54,1,148,0,74,1,160,0,124,1,18,3,20,3,145,1,40,1,21,3,221,2,85,0,210,2,214,255,68,1,252,1,16,3,60,3,61,3,62,3,166,2,201,2,151,1,69,0,150,0,194,0,188,0,33,1,45,1,147,1,205,1,229,1,56,2,105,2,161,2,212,2,11,3,24,3,56,3,63,3,69,3,74,3,78,3,80,3,113,3,124,3,132,3,163,3,168,3,190,1,142,3,143,3,176,3,181,3,133,3,187,3,199,3,210,3,155,3,224,3,225,3,188,3,228,3,231,3,242,3,33,1,250,3,9,4,19,4,22,4,25,4,32,4,166,3,205,3,229,3,232,3,234,3,133,3,244,3,251,3,36,4,246,3,236,3,252,3,207,3,0,4,208,3,16,4,11,4,23,4,21,4,253,3,239,3,27,4,29,4,7,4,10,4,59,4,2,4,58,4,60,4,240,3,241,3,65,4,12,4,44,4,35,4,45,4,47,4,48,4,49,4,81,4,87,4,52,4,26,4,56,4,66,4,55,4,91,4,93,4,34,4,24,4,104,4,114,4,116,4,100,4,121,4,124,4,125,4,127,4,107,4,111,4,113,4,117,4,106,4,118,4,119,4,120,4,123,4,110,4,126,4,128,4,82,4,88,4,89,4,92,4,90,4,101,4,99,4,103,4,147,4,151,4,95,4,140,4,96,4,97,4,142,4,122,4,131,4,133,4,136,4,143,4,187,4,190,4,200,4,201,4,208,4,209,4,210,4,211,4,108,4,129,4,109,4,177,4,184,4,204,4,55,1,26,5,145,0,139,2,2,0,192,0,140,2,82,1,12,3,92,0,92,0,92,0,92,0,85,0,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,88,0,88,0,88,0,87,0,79,1,71,1,88,3,88,3,92,0,92,0,92,0,92,0,185,2,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,76,0,39,3,74,0,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,79,1,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,55,1,12,3,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,100,1,40,3,8,3,189,2,177,2,177,2,86,0,83,0,166,0,1,1,41,3,203,2,174,1,86,0,83,0,166,0,68,1,185,2,88,3,88,3,201,0,158,0,20,1,131,1,15,1,130,1,188,0,177,2,177,2,60,3,86,0,83,0,166,0,13,1,65,3,49,0,123,0,87,0,79,1,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,239,0,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,55,1,251,2,77,1,76,1,216,0,152,1,138,1,69,0,231,0,137,1,178,2,179,2,140,1,142,3,251,0,98,1,250,0,32,1,59,1,174,1,140,3,174,1,141,3,89,0,89,0,88,0,88,0,88,0,87,0,79,1,135,1,88,3,88,3,178,2,179,2,183,0,95,0,123,0,128,1,125,1,124,1,65,3,31,0,65,3,49,0,144,3,144,3,239,2,240,2,123,1,123,0,55,1,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,114,0,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,174,1,152,1,143,1,179,1,145,2,88,3,88,3,90,1,57,0,232,0,60,3,109,0,192,2,110,1,177,2,177,2,107,1,57,3,248,2,97,0,237,2,240,2,65,3,49,0,196,2,196,2,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,167,1,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,55,1,114,0,22,0,105,1,176,2,58,0,152,1,134,1,251,0,93,1,240,0,213,0,250,2,177,2,177,2,79,3,173,2,115,0,105,1,231,0,137,1,177,2,177,2,140,1,183,0,177,2,177,2,128,1,125,1,124,1,105,1,88,3,88,3,178,2,179,2,160,0,159,0,223,0,123,1,226,2,25,0,38,3,195,2,73,3,143,0,177,2,177,2,67,3,136,1,83,1,254,2,254,2,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,146,3,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,55,1,72,3,72,3,72,3,10,1,1,1,178,2,179,2,10,3,194,2,86,0,83,0,166,0,219,0,178,2,179,2,225,2,1,0,178,2,179,2,177,2,177,2,177,2,177,2,174,1,86,0,83,0,166,0,249,0,176,2,169,3,88,3,88,3,171,1,187,2,188,2,60,3,42,1,178,2,179,2,221,0,174,2,115,0,123,0,176,3,27,3,65,3,48,0,86,1,49,1,202,3,79,3,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,114,0,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,55,1,172,3,73,3,167,2,201,2,173,1,67,3,174,1,251,0,98,1,250,0,99,1,32,1,178,2,179,2,178,2,179,2,29,1,173,3,84,1,203,3,31,1,210,0,23,0,174,0,25,3,64,3,174,1,97,1,65,3,10,0,88,3,88,3,24,0,174,3,151,0,241,2,72,3,72,3,72,3,26,3,200,3,10,5,65,1,142,1,10,5,100,1,96,1,242,2,65,3,49,0,167,3,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,174,1,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,55,1,120,1,114,0,139,3,193,2,174,1,139,3,72,1,122,3,114,0,65,3,10,0,198,3,174,1,89,3,89,3,64,1,189,0,163,0,64,3,165,0,174,1,138,3,88,1,67,1,138,3,136,3,65,3,10,0,197,3,50,1,88,3,88,3,187,0,163,1,65,3,10,0,220,0,101,3,104,3,64,3,222,0,147,1,65,3,49,0,195,4,25,3,68,0,169,3,150,1,245,0,66,0,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,93,3,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,55,1,148,1,213,0,250,2,66,3,89,1,114,0,172,3,134,3,112,1,215,2,5,0,60,1,192,0,140,1,4,3,12,3,13,1,230,0,242,0,3,3,244,0,141,1,164,0,173,3,129,1,123,0,91,1,55,0,99,1,73,1,88,3,88,3,216,2,77,1,76,1,176,2,200,3,11,5,212,2,174,3,11,5,157,1,214,0,65,3,9,0,106,1,30,1,187,3,115,0,206,2,55,1,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,174,1,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,144,3,144,3,20,5,20,5,246,2,88,3,88,3,69,1,198,3,12,3,65,3,35,0,235,2,208,2,78,1,187,2,188,2,209,3,140,2,82,1,243,0,233,2,152,3,152,3,113,1,187,0,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,114,0,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,55,1,174,1,186,3,174,1,112,0,54,1,174,1,181,2,61,1,186,2,144,1,174,1,25,3,103,1,174,1,249,3,174,1,192,0,174,1,145,1,12,3,174,1,104,1,65,3,36,0,65,3,12,0,174,1,65,3,27,0,60,1,88,3,88,3,65,3,37,0,20,0,65,3,38,0,65,3,39,0,65,3,28,0,72,0,65,3,29,0,151,2,152,2,153,2,8,1,65,3,40,0,234,0,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,174,1,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,55,1,174,1,186,2,174,1,149,3,147,0,174,1,165,0,148,3,19,1,65,3,41,0,174,1,12,3,174,1,21,0,174,1,3,1,174,1,6,1,18,1,174,1,111,1,65,3,42,0,65,3,11,0,174,1,65,3,43,0,235,0,88,3,88,3,25,3,65,3,99,0,65,3,44,0,65,3,45,0,65,3,32,0,75,0,65,3,46,0,49,1,199,3,1,1,1,1,65,3,47,0,55,1,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,174,1,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,174,1,186,0,185,0,184,0,238,0,88,3,88,3,138,2,2,0,40,4,65,3,33,0,227,2,217,0,218,0,1,1,203,3,1,1,170,1,61,1,1,1,6,3,65,3,117,0,1,1,55,1,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,174,1,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,174,1,62,1,124,0,212,0,163,0,88,3,88,3,175,3,132,3,130,3,65,3,118,0,247,2,214,2,213,2,1,1,243,2,33,1,33,1,221,2,222,2,193,3,65,3,119,0,170,2,55,1,93,0,82,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,174,1,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,174,1,204,2,246,0,66,1,75,1,88,3,88,3,0,1,114,0,101,1,65,3,53,0,40,3,145,3,145,3,164,3,156,0,160,1,164,1,168,1,162,3,41,3,65,3,34,0,108,1,55,1,253,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,174,1,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,174,1,114,0,114,0,114,0,192,3,88,3,88,3,51,1,2,1,62,3,65,3,100,0,191,0,252,0,121,1,11,1,68,0,197,0,68,0,5,1,204,2,1,3,65,3,50,0,71,0,143,3,143,3,7,1,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,174,1,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,80,0,169,1,34,3,3,0,190,4,191,0,174,1,9,1,80,1,80,1,65,3,101,0,229,2,80,0,169,1,129,3,3,0,211,2,210,2,172,1,209,2,80,1,80,1,174,1,125,3,14,1,174,1,197,0,65,3,102,0,174,1,32,3,172,1,174,1,183,2,174,1,75,3,111,0,158,1,174,1,16,3,153,1,174,1,63,3,174,1,65,3,98,0,123,0,65,3,116,0,79,3,158,1,65,3,49,0,11,3,65,3,113,0,65,3,106,0,226,0,123,0,65,3,105,0,79,3,65,3,103,0,65,3,104,0,23,3,155,1,77,0,78,0,34,1,156,1,174,1,35,1,114,0,79,0,176,1,175,1,133,1,174,1,67,3,77,0,78,0,129,3,71,3,152,1,154,1,174,1,79,0,176,1,175,1,116,1,191,2,67,3,65,3,52,0,174,1,80,0,169,1,174,1,3,0,65,3,54,0,4,3,75,3,80,1,80,1,172,2,3,3,65,3,51,0,72,3,72,3,72,3,74,3,19,0,172,1,160,2,65,3,26,0,159,2,65,3,30,0,161,2,72,3,72,3,72,3,74,3,19,0,207,0,149,2,22,1,48,1,148,0,24,1,158,1,26,1,248,0,102,1,54,3,126,1,6,0,92,1,161,0,17,1,80,0,169,1,79,3,3,0,166,3,127,3,208,2,126,3,80,1,80,1,40,1,157,0,159,1,241,0,28,1,162,2,190,3,194,0,185,3,172,1,183,3,180,3,77,0,78,0,9,3,63,1,56,0,59,0,135,0,79,0,176,1,175,1,121,0,66,0,67,3,146,0,128,0,94,1,158,1,51,3,130,0,95,1,131,0,132,0,133,0,119,1,173,0,107,0,138,0,149,0,79,3,109,1,178,0,62,0,70,0,169,1,168,3,3,0,59,3,121,3,115,1,255,0,80,1,80,1,24,3,72,3,72,3,72,3,74,3,19,0,77,0,78,0,147,3,172,1,208,0,179,0,144,0,79,0,176,1,175,1,117,1,4,1,67,3,180,0,70,1,163,2,181,0,52,1,232,2,132,1,231,2,219,2,158,1,206,2,230,2,218,2,200,2,146,1,53,1,199,2,16,1,20,3,65,0,198,2,79,3,197,2,21,1,193,0,21,3,19,3,23,1,108,3,73,0,72,3,72,3,72,3,74,3,19,0,18,3,25,1,162,1,27,1,166,1,227,0,77,0,78,0,74,1,228,0,229,0,96,0,255,2,79,0,176,1,175,1,151,1,67,0,67,3,215,0,36,1,37,1,149,1,38,1,47,1,46,1,45,1,204,0,43,1,39,1,202,0,164,2,169,2,7,0,177,1,157,2,203,0,205,0,206,0,125,0,110,0,57,1,178,1,155,2,154,2,146,2,168,0,224,0,237,0,72,3,72,3,72,3,74,3,19,0,120,0,144,2,81,1,236,0,155,0,167,0,85,1,233,0,58,1,108,0,137,3,135,3,58,3,127,0,126,0,244,2,170,0,129,0,172,0,247,0,160,3,134,0,136,0,171,0,60,0,61,0,123,0,169,0,137,0,165,3,175,0,176,0,159,3,8,0,13,0,177,0,254,0,150,3,139,0,191,0,156,3,140,0,114,1,166,2,150,0,118,1,182,0,18,1,12,1,141,0,122,0,63,0,14,0,122,1,15,0,127,1,64,0,225,0,78,3,77,3,106,3,16,0,4,0,217,2,253,2,2,3,162,0,139,1,209,0,211,0,142,0,33,3,110,3,28,3,56,1,71,0,68,0,107,3,105,3,171,3,190,0,161,1,170,3,17,0,195,0,196,0,152,0,18,0,207,3,199,0,208,3,153,0,198,0,154,0,165,1,109,3,76,3,184,2,81,0,200,0,41,1,87,1,251,3,250,3,44,1,141,2,16,16,2,16,5,0,33,4,75,5,46,4,180,4,180,4,180,4,90,0,60,0,237,255,58,0,58,0,186,0,180,4,180,4,180,4,180,4,180,4,180,4,180,4,67,0,67,0,182,0,80,1,218,0,38,2,135,0,7,1,84,1,161,1,238,1,59,2,110,2,187,2,8,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,110,3,59,3,161,3,212,3,212,3,132,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,234,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,185,255,209,255,209,255,209,255,209,255,209,255,250,255,88,0,190,255,218,0,218,0,162,1,239,1,23,2,23,2,33,0,43,0,10,0,226,255,167,255,167,255,167,255,11,0,169,1,169,1,12,1,199,1,93,2,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,172,2,138,0,10,0,43,0,125,0,125,0,125,0,125,0,125,0,125,0,167,255,167,255,167,255,228,0,85,1,85,1,207,0,20,1,44,1,24,1,96,1,98,1,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,51,2,51,2,51,2,218,0,218,0,179,1,218,0,218,0,218,0,67,2,218,0,218,0,73,2,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,69,2,0,3,199,2,199,2,199,2,192,2,215,0,41,4,244,2,178,1,197,2,197,2,200,2,178,1,200,2,22,2,90,3,129,2,185,3,197,2,168,255,185,3,185,3,99,3,233,1,191,1,176,4,94,4,94,4,179,4,179,4,94,4,205,4,160,4,102,4,218,4,218,4,218,4,218,4,94,4,226,4,102,4,205,4,160,4,160,4,102,4,94,4,226,4,115,4,213,4,94,4,94,4,226,4,253,4,94,4,226,4,94,4,226,4,253,4,181,4,181,4,181,4,235,4,253,4,181,4,186,4,181,4,235,4,181,4,181,4,171,4,194,4,171,4,194,4,171,4,194,4,171,4,194,4,94,4,94,4,174,4,253,4,230,4,230,4,253,4,199,4,207,4,206,4,212,4,102,4,66,5,68,5,83,5,83,5,93,5,93,5,93,5,93,5,167,255,167,255,167,255,167,255,167,255,167,255,221,1,35,2,130,1,50,3,238,2,253,2,188,2,238,3,219,2,243,3,247,3,248,3,249,3,180,3,68,3,167,3,191,2,255,3,31,4,40,4,53,4,87,3,150,3,63,4,61,4,99,2,112,5,114,5,97,5,236,4,105,5,53,5,108,5,102,5,103,5,7,5,254,4,17,5,9,5,110,5,8,5,118,5,134,5,13,5,6,5,60,5,61,5,32,5,116,5,109,5,24,5,146,5,143,5,127,5,43,5,11,5,98,5,128,5,99,5,94,5,113,5,49,5,135,5,138,5,141,5,50,5,56,5,142,5,115,5,144,5,145,5,140,5,147,5,117,5,148,5,149,5,119,5,125,5,150,5,151,5,152,5,63,5,154,5,157,5,155,5,156,5,59,5,160,5,161,5,158,5,159,5,163,5,64,5,164,5,162,5,165,5,166,5,164,5,169,5,170,5,171,5,173,5,174,5,178,5,176,5,180,5,179,5,172,5,181,5,182,5,184,5,185,5,181,5,187,5,186,5,188,5,189,5,191,5,82,5,92,5,95,5,96,5,192,5,204,5,219,5,214,3,20,5,20,5,20,5,190,4,190,4,190,4,25,5,20,5,85,4,114,4,114,4,250,4,25,5,25,5,25,5,25,5,25,5,25,5,188,4,25,5,25,5,25,5,20,5,25,5,89,4,120,4,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,249,4,251,4,128,4,127,4,230,4,101,4,125,4,118,4,122,4,191,4,184,4,185,4,183,4,187,4,192,4,25,5,121,4,153,4,168,4,152,4,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,162,4,167,4,174,4,166,4,163,4,155,4,154,4,156,4,157,4,25,5,25,5,240,3,50,4,25,5,25,5,158,4,25,5,252,3,159,4,171,4,170,4,169,4,247,3,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,214,3,20,5,25,5,25,5,20,5,20,5,20,5,20,5,20,5,20,5,12,5,89,4,79,4,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,0,5,254,4,25,5,203,4,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,85,4,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,220,3,25,5,223,4,85,4,85,4,85,4,87,4,65,4,77,4,222,3,124,4,103,4,103,4,235,4,124,4,235,4,21,4,44,4,18,4,114,4,103,4,186,4,114,4,114,4,86,4,77,4,25,5,5,5,94,4,94,4,253,4,253,4,94,4,133,4,54,4,124,4,61,4,61,4,61,4,61,4,94,4,237,3,124,4,133,4,54,4,54,4,124,4,94,4,237,3,229,4,227,4,94,4,94,4,237,3,196,4,94,4,237,3,94,4,237,3,196,4,52,4,52,4,52,4,36,4,196,4,52,4,21,4,52,4,36,4,52,4,52,4,107,4,102,4,107,4,102,4,107,4,102,4,107,4,102,4,94,4,94,4,25,5,196,4,200,4,200,4,196,4,119,4,108,4,117,4,115,4,124,4,243,3,39,4,230,3,230,3,219,3,219,3,219,3,219,3,17,5,17,5,12,5,23,4,23,4,6,4,25,5,25,5,25,5,25,5,25,5,25,5,254,3,25,5,205,4,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,140,4,25,5,215,3,7,5,25,5,25,5,4,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,233,4,25,5,25,5,25,5,25,5,25,5,25,5,226,4,225,4,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,68,4,25,5,25,5,25,5,72,4,25,5,25,5,25,5,25,5,25,5,25,5,25,5,116,4,25,5,109,4,25,5,189,4,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,22,5,25,5,25,5,25,5,21,5,25,5,25,5,25,5,25,5,25,5,142,4,25,5,141,4,145,4,25,5,228,3,25,5,16,0,2,2,12,0,14,0,24,0,31,0,59,0,15,39,97,99,111,115,0,97,115,105,110,0,97,116,97,110,0,97,116,110,50,0,97,116,97,110,50,0,97,99,111,115,104,0,97,115,105,110,104,0,97,116,97,110,104,0,100,105,102,102,101,114,101,110,99,101,0,100,101,103,114,101,101,115,0,114,97,100,105,97,110,115,0,99,111,115,0,115,105,110,0,116,97,110,0,99,111,116,0,99,111,115,104,0,115,105,110,104,0,116,97,110,104,0,99,111,116,104,0,101,120,112,0,108,111,103,49,48,0,112,111,119,101,114,0,115,105,103,110,0,115,113,114,116,0,115,113,117,97,114,101,0,99,101,105,108,0,102,108,111,111,114,0,112,105,0,114,101,112,108,105,99,97,116,101,0,99,104,97,114,105,110,100,101,120,0,108,101,102,116,115,116,114,0,114,105,103,104,116,115,116,114,0,114,101,118,101,114,115,101,0,112,114,111,112,101,114,0,112,97,100,108,0,112,97,100,114,0,112,97,100,99,0,115,116,114,102,105,108,116,101,114,0,115,116,100,101,118,0,118,97,114,105,97,110,99,101,0,109,101,100,105,97,110,0,108,111,119,101,114,95,113,117,97,114,116,105,108,101,0,117,112,112,101,114,95,113,117,97,114,116,105,108,101,0,102,111,114,32,110,111,100,101,0,97,114,103,99,61,61,49,0,99,47,101,120,116,101,110,115,105,111,110,45,102,117,110,99,116,105,111,110,115,46,99,0,97,99,111,115,70,117,110,99,0,97,115,105,110,70,117,110,99,0,97,116,97,110,70,117,110,99,0,97,114,103,99,61,61,50,0,97,116,110,50,70,117,110,99,0,97,99,111,115,104,70,117,110,99,0,97,115,105,110,104,70,117,110,99,0,97,116,97,110,104,70,117,110,99,0,100,105,102,102,101,114,101,110,99,101,70,117,110,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,0,1,2,0,0,2,2,4,5,5,0,1,2,6,2,3,0,1,0,2,0,2,0,0,0,0,0,0,0,1,2,3,0,1,2,0,0,2,2,4,5,5,0,1,2,6,2,3,0,1,0,2,0,2,0,0,0,0,0,63,48,48,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,114,97,100,50,100,101,103,70,117,110,99,0,100,101,103,50,114,97,100,70,117,110,99,0,99,111,115,70,117,110,99,0,115,105,110,70,117,110,99,0,116,97,110,70,117,110,99,0,99,111,116,70,117,110,99,0,99,111,115,104,70,117,110,99,0,115,105,110,104,70,117,110,99,0,116,97,110,104,70,117,110,99,0,99,111,116,104,70,117,110,99,0,101,120,112,70,117,110,99,0,108,111,103,70,117,110,99,0,108,111,103,49,48,70,117,110,99,0,112,111,119,101,114,70,117,110,99,0,115,105,103,110,70,117,110,99,0,115,113,114,116,70,117,110,99,0,115,113,117,97,114,101,70,117,110,99,0,99,101,105,108,70,117,110,99,0,102,108,111,111,114,70,117,110,99,0,100,111,109,97,105,110,32,101,114,114,111,114,0,97,114,103,99,61,61,51,32,124,124,97,114,103,99,61,61,50,0,99,104,97,114,105,110,100,101,120,70,117,110,99,0,108,101,102,116,70,117,110,99,0,114,105,103,104,116,70,117,110,99,0,49,61,61,97,114,103,99,0,114,101,118,101,114,115,101,70,117,110,99,0,112,114,111,112,101,114,70,117,110,99,0,112,97,100,108,70,117,110,99,0,122,60,61,122,84,101,114,109,0,115,113,108,105,116,101,51,85,116,102,56,67,104,97,114,76,101,110,0,112,97,100,114,70,117,110,99,0,112,97,100,99,70,117,110,99,0,115,116,114,102,105,108,116,101,114,70,117,110,99,0,118,97,114,105,97,110,99,101,83,116,101,112,0,109,111,100,101,83,116,101,112,0,51,46,49,49,46,48,0,83,81,76,73,84,69,95,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,3,5,1,5,1,5,2,5,2,5,1,5,1,5,4,5,3,5,1,5,1,5,2,5,2,5,1,5,1,5,115,116,114,105,110,103,32,111,114,32,98,108,111,98,32,116,111,111,32,98,105,103,0,99,97,110,110,111,116,32,111,112,101,110,32,118,105,114,116,117,97,108,32,116,97,98,108,101,58,32,37,115,0,99,97,110,110,111,116,32,111,112,101,110,32,116,97,98,108,101,32,119,105,116,104,111,117,116,32,114,111,119,105,100,58,32,37,115,0,99,97,110,110,111,116,32,111,112,101,110,32,118,105,101,119,58,32,37,115,0,110,111,32,115,117,99,104,32,99,111,108,117,109,110,58,32,34,37,115,34,0,102,111,114,101,105,103,110,32,107,101,121,0,105,110,100,101,120,101,100,0,99,97,110,110,111,116,32,111,112,101,110,32,37,115,32,99,111,108,117,109,110,32,102,111,114,32,119,114,105,116,105,110,103,0,148,0,0,0,54,0,0,0,28,1,1,0,70,0,7,1,47,0,0,1,33,1,0,0,13,0,2,0,61,0,0,0,21,0,0,0,37,115,0,42,63,91,0,37,95,0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,0,0,10,10,10,10,10,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,64,0,42,42,42,42,42,42,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,0,0,0,0,0,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,1,4,3,2,5,116,114,105,103,103,101,114,0,116,101,109,112,0,50,48,49,54,45,48,50,45,49,53,32,49,55,58,50,57,58,50,52,32,51,100,56,54,50,102,50,48,55,101,51,97,100,99,48,48,102,55,56,48,54,54,55,57,57,97,99,53,97,56,99,50,56,50,52,51,48,97,53,102,0,117,110,107,110,111,119,110,32,100,97,116,97,98,97,115,101,58,32,37,115,0,73,78,84,69,71,69,82,0,57,50,50,51,51,55,50,48,51,54,56,53,52,55,55,53,56,48,0,2,2,3,5,3,4,5,4,0,1,2,4,9,12,15,20,111,110,111,102,102,97,108,115,101,121,101,115,116,114,117,101,120,116,114,97,102,117,108,108,0,1,0,0,0,1,1,3,2,76,105,117,74,0,45,0,0,82,0,77,0,0,42,12,78,15,0,116,85,54,112,0,19,0,0,121,0,119,115,0,22,93,0,9,0,0,70,71,0,69,6,0,48,90,102,0,118,101,0,0,44,0,103,24,0,17,0,122,53,23,0,5,110,25,96,0,0,124,106,60,123,57,28,55,0,91,0,100,26,0,99,0,0,0,95,92,97,88,109,14,39,108,0,81,0,18,89,111,32,0,120,80,113,62,46,84,0,0,94,40,59,114,0,36,0,0,29,0,86,63,64,0,20,61,0,56,7,7,5,4,6,4,5,3,6,7,3,6,6,7,7,3,8,2,6,5,4,4,3,10,4,6,11,6,2,7,5,5,9,6,9,9,7,10,10,4,6,2,3,9,4,2,6,5,7,4,5,7,6,6,5,6,5,5,9,7,7,3,2,4,4,7,3,6,4,7,6,12,6,9,4,6,5,4,7,6,5,6,7,5,4,5,6,5,7,3,7,13,2,2,4,6,6,8,5,17,12,7,8,8,2,4,4,4,4,4,2,2,6,5,8,5,8,3,5,5,6,4,9,3,82,69,73,78,68,69,88,69,68,69,83,67,65,80,69,65,67,72,69,67,75,69,89,66,69,70,79,82,69,73,71,78,79,82,69,71,69,88,80,76,65,73,78,83,84,69,65,68,68,65,84,65,66,65,83,69,76,69,67,84,65,66,76,69,70,84,72,69,78,68,69,70,69,82,82,65,66,76,69,76,83,69,88,67,69,80,84,82,65,78,83,65,67,84,73,79,78,65,84,85,82,65,76,84,69,82,65,73,83,69,88,67,76,85,83,73,86,69,88,73,83,84,83,65,86,69,80,79,73,78,84,69,82,83,69,67,84,82,73,71,71,69,82,69,70,69,82,69,78,67,69,83,67,79,78,83,84,82,65,73,78,84,79,70,70,83,69,84,69,77,80,79,82,65,82,89,85,78,73,81,85,69,82,89,87,73,84,72,79,85,84,69,82,69,76,69,65,83,69,65,84,84,65,67,72,65,86,73,78,71,82,79,85,80,68,65,84,69,66,69,71,73,78,78,69,82,69,67,85,82,83,73,86,69,66,69,84,87,69,69,78,79,84,78,85,76,76,73,75,69,67,65,83,67,65,68,69,76,69,84,69,67,65,83,69,67,79,76,76,65,84,69,67,82,69,65,84,69,67,85,82,82,69,78,84,95,68,65,84,69,68,69,84,65,67,72,73,77,77,69,68,73,65,84,69,74,79,73,78,83,69,82,84,77,65,84,67,72,80,76,65,78,65,76,89,90,69,80,82,65,71,77,65,66,79,82,84,86,65,76,85,69,83,86,73,82,84,85,65,76,73,77,73,84,87,72,69,78,87,72,69,82,69,78,65,77,69,65,70,84,69,82,69,80,76,65,67,69,65,78,68,69,70,65,85,76,84,65,85,84,79,73,78,67,82,69,77,69,78,84,67,65,83,84,67,79,76,85,77,78,67,79,77,77,73,84,67,79,78,70,76,73,67,84,67,82,79,83,83,67,85,82,82,69,78,84,95,84,73,77,69,83,84,65,77,80,82,73,77,65,82,89,68,69,70,69,82,82,69,68,73,83,84,73,78,67,84,68,82,79,80,70,65,73,76,70,82,79,77,70,85,76,76,71,76,79,66,89,73,70,73,83,78,85,76,76,79,82,68,69,82,69,83,84,82,73,67,84,82,73,71,72,84,82,79,76,76,66,65,67,75,82,79,87,85,78,73,79,78,85,83,73,78,71,86,65,67,85,85,77,86,73,69,87,73,78,73,84,73,65,76,76,89,67,28,140,42,84,44,104,53,35,113,46,47,50,2,49,142,41,24,119,16,98,138,11,112,139,117,6,30,107,98,141,57,9,20,13,118,62,105,99,131,55,54,111,21,21,71,103,3,25,66,98,14,34,128,127,110,5,98,58,74,77,19,52,101,50,37,33,109,136,95,17,69,43,8,124,108,51,4,32,56,29,120,65,129,137,130,68,31,59,72,100,106,15,75,38,39,10,40,98,69,69,102,7,121,73,114,45,123,98,50,36,18,76,126,60,98,12,61,115,125,63,64,48,116,0,0,0,0,4,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,13,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,21,0,0,0,0,0,50,0,43,3,47,0,0,0,0,30,0,58,0,38,0,0,0,1,66,0,0,67,0,41,0,0,0,0,0,0,49,65,0,0,0,0,31,52,16,34,10,0,0,0,0,0,0,0,11,72,79,0,8,0,104,98,0,107,0,87,0,75,51,0,27,37,73,83,0,35,68,0,0,95,82,79,87,73,68,95,0,82,79,87,73,68,0,79,73,68,0,115,113,108,105,116,101,95,116,101,109,112,95,109,97,115,116,101,114,0,115,113,108,105,116,101,95,109,97,115,116,101,114,0,49,0,67,82,69,65,84,69,32,84,65,66,76,69,32,120,40,116,121,112,101,32,116,101,120,116,44,110,97,109,101,32,116,101,120,116,44,116,98,108,95,110,97,109,101,32,116,101,120,116,44,114,111,111,116,112,97,103,101,32,105,110,116,101,103,101,114,44],"i8",4,l.aa+10622);z([115,113,108,32,116,101,120,116,41,0,97,116,116,97,99,104,101,100,32,100,97,116,97,98,97,115,101,115,32,109,117,115,116,32,117,115,101,32,116,104,101,32,115,97,109,101,32,116,101,120,116,32,101,110,99,111,100,105,110,103,32,97,115,32,109,97,105,110,32,100,97,116,97,98,97,115,101,0,117,110,115,117,112,112,111,114,116,101,100,32,102,105,108,101,32,102,111,114,109,97,116,0,83,69,76,69,67,84,32,110,97,109,101,44,32,114,111,111,116,112,97,103,101,44,32,115,113,108,32,70,82,79,77,32,34,37,119,34,46,37,115,32,79,82,68,69,82,32,66,89,32,114,111,119,105,100,0,115,113,108,105,116,101,95,115,116,97,116,49,0,83,69,76,69,67,84,32,116,98,108,44,105,100,120,44,115,116,97,116,32,70,82,79,77,32,37,81,46,115,113,108,105,116,101,95,115,116,97,116,49,0,117,110,111,114,100,101,114,101,100,42,0,115,122,61,91,48,45,57,93,42,0,110,111,115,107,105,112,115,99,97,110,42,0,99,114,101,97,116,101,32,0,105,110,118,97,108,105,100,32,114,111,111,116,112,97,103,101,0,63,0,109,97,108,102,111,114,109,101,100,32,100,97,116,97,98,97,115,101,32,115,99,104,101,109,97,32,40,37,115,41,0,37,122,32,45,32,37,115,0,100,97,116,97,98,97,115,101,32,99,111,114,114,117,112,116,105,111,110,32,97,116,32,108,105,110,101,32,37,100,32,111,102,32,91,37,46,49,48,115,93,0,117,110,97,98,108,101,32,116,111,32,100,101,108,101,116,101,47,109,111,100,105,102,121,32,99,111,108,108,97,116,105,111,110,32,115,101,113,117,101,110,99,101,32,100,117,101,32,116,111,32,97,99,116,105,118,101,32,115,116,97,116,101,109,101,110,116,115,0,78,79,67,65,83,69,0,82,84,82,73,77,0,109,97,105,110,0,115,105,109,112,108,101,0,112,111,114,116,101,114,0,117,110,105,99,111,100,101,54,49,0,102,116,115,51,95,116,111,107,101,110,105,122,101,114,0,115,110,105,112,112,101,116,0,111,102,102,115,101,116,115,0,109,97,116,99,104,105,110,102,111,0,111,112,116,105,109,105,122,101,0,102,116,115,51,0,102,116,115,52,0,102,116,115,51,116,111,107,101,110,105,122,101,0,67,82,69,65,84,69,32,84,65,66,76,69,32,120,40,105,110,112,117,116,44,32,116,111,107,101,110,44,32,115,116,97,114,116,44,32,101,110,100,44,32,112,111,115,105,116,105,111,110,41,0,117,110,107,110,111,119,110,32,116,111,107,101,110,105,122,101,114,58,32,37,115,0,65,76,84,69,82,32,84,65,66,76,69,32,37,81,46,39,37,113,95,99,111,110,116,101,110,116,39,32,32,82,69,78,65,77,69,32,84,79,32,39,37,113,95,99,111,110,116,101,110,116,39,59,0,65,76,84,69,82,32,84,65,66,76,69,32,37,81,46,39,37,113,95,100,111,99,115,105,122,101,39,32,32,82,69,78,65,77,69,32,84,79,32,39,37,113,95,100,111,99,115,105,122,101,39,59,0,65,76,84,69,82,32,84,65,66,76,69,32,37,81,46,39,37,113,95,115,116,97,116,39,32,32,82,69,78,65,77,69,32,84,79,32,39,37,113,95,115,116,97,116,39,59,0,65,76,84,69,82,32,84,65,66,76,69,32,37,81,46,39,37,113,95,115,101,103,109,101,110,116,115,39,32,82,69,78,65,77,69,32,84,79,32,39,37,113,95,115,101,103,109,101,110,116,115,39,59,0,65,76,84,69,82,32,84,65,66,76,69,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,32,32,82,69,78,65,77,69,32,84,79,32,39,37,113,95,115,101,103,100,105,114,39,59,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,99,111,110,116,101,110,116,39,32,87,72,69,82,69,32,114,111,119,105,100,32,61,32,63,0,83,69,76,69,67,84,32,78,79,84,32,69,88,73,83,84,83,40,83,69,76,69,67,84,32,100,111,99,105,100,32,70,82,79,77,32,37,81,46,39,37,113,95,99,111,110,116,101,110,116,39,32,87,72,69,82,69,32,114,111,119,105,100,33,61,63,41,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,99,111,110,116,101,110,116,39,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,109,101,110,116,115,39,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,100,111,99,115,105,122,101,39,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,115,116,97,116,39,0,83,69,76,69,67,84,32,37,115,32,87,72,69,82,69,32,114,111,119,105,100,61,63,0,83,69,76,69,67,84,32,40,83,69,76,69,67,84,32,109,97,120,40,105,100,120,41,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,61,32,63,41,32,43,32,49,0,82,69,80,76,65,67,69,32,73,78,84,79,32,37,81,46,39,37,113,95,115,101,103,109,101,110,116,115,39,40,98,108,111,99,107,105,100,44,32,98,108,111,99,107,41,32,86,65,76,85,69,83,40,63,44,32,63,41,0,83,69,76,69,67,84,32,99,111,97,108,101,115,99,101,40,40,83,69,76,69,67,84,32,109,97,120,40,98,108,111,99,107,105,100,41,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,109,101,110,116,115,39,41,32,43,32,49,44,32,49,41,0,82,69,80,76,65,67,69,32,73,78,84,79,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,86,65,76,85,69,83,40,63,44,63,44,63,44,63,44,63,44,63,41,0,83,69,76,69,67,84,32,105,100,120,44,32,115,116,97,114,116,95,98,108,111,99,107,44,32,108,101,97,118,101,115,95,101,110,100,95,98,108,111,99,107,44,32,101,110,100,95,98,108,111,99,107,44,32,114,111,111,116,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,61,32,63,32,79,82,68,69,82,32,66,89,32,105,100,120,32,65,83,67,0,83,69,76,69,67,84,32,105,100,120,44,32,115,116,97,114,116,95,98,108,111,99,107,44,32,108,101,97,118,101,115,95,101,110,100,95,98,108,111,99,107,44,32,101,110,100,95,98,108,111,99,107,44,32,114,111,111,116,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,66,69,84,87,69,69,78,32,63,32,65,78,68,32,63,79,82,68,69,82,32,66,89,32,108,101,118,101,108,32,68,69,83,67,44,32,105,100,120,32,65,83,67,0,83,69,76,69,67,84,32,99,111,117,110,116,40,42,41,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,61,32,63,0,83,69,76,69,67,84,32,109,97,120,40,108,101,118,101,108,41,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,66,69,84,87,69,69,78,32,63,32,65,78,68,32,63,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,61,32,63,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,109,101,110,116,115,39,32,87,72,69,82,69,32,98,108,111,99,107,105,100,32,66,69,84,87,69,69,78,32,63,32,65,78,68,32,63,0,73,78,83,69,82,84,32,73,78,84,79,32,37,81,46,39,37,113,95,99,111,110,116,101,110,116,39,32,86,65,76,85,69,83,40,37,115,41,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,100,111,99,115,105,122,101,39,32,87,72,69,82,69,32,100,111,99,105,100,32,61,32,63,0,82,69,80,76,65,67,69,32,73,78,84,79,32,37,81,46,39,37,113,95,100,111,99,115,105,122,101,39,32,86,65,76,85,69,83,40,63,44,63,41,0,83,69,76,69,67,84,32,115,105,122,101,32,70,82,79,77,32,37,81,46,39,37,113,95,100,111,99,115,105,122,101,39,32,87,72,69,82,69,32,100,111,99,105,100,61,63,0,83,69,76,69,67,84,32,118,97,108,117,101,32,70,82,79,77,32,37,81,46,39,37,113,95,115,116,97,116,39,32,87,72,69,82,69,32,105,100,61,63,0,82,69,80,76,65,67,69,32,73,78,84,79,32,37,81,46,39,37,113,95,115,116,97,116,39,32,86,65,76,85,69,83,40,63,44,63,41,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,66,69,84,87,69,69,78,32,63,32,65,78,68,32,63,0,83,69,76,69,67,84,32,63,32,85,78,73,79,78,32,83,69,76,69,67,84,32,108,101,118,101,108,32,47,32,40,49,48,50,52,32,42,32,63,41,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,0,83,69,76,69,67,84,32,108,101,118,101,108,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,71,82,79,85,80,32,66,89,32,108,101,118,101,108,32,72,65,86,73,78,71,32,99,111,117,110,116,40,42,41,62,61,63,32,32,79,82,68,69,82,32,66,89,32,40,108,101,118,101,108,32,37,37,32,49,48,50,52,41,32,65,83,67,32,76,73,77,73,84,32,49,0,83,69,76,69,67,84,32,50,32,42,32,116,111,116,97,108,40,49,32,43,32,108,101,97,118,101,115,95,101,110,100,95,98,108,111,99,107,32,45,32,115,116,97,114,116,95,98,108,111,99,107,41,32,32,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,61,32,63,32,65,78,68,32,105,100,120,32,60,32,63,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,61,32,63,32,65,78,68,32,105,100,120,32,61,32,63,0,85,80,68,65,84,69,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,83,69,84,32,105,100,120,32,61,32,63,32,87,72,69,82,69,32,108,101,118,101,108,61,63,32,65,78,68,32,105,100,120,61,63,0,83,69,76,69,67,84,32,105,100,120,44,32,115,116,97,114,116,95,98,108,111,99,107,44,32,108,101,97,118,101,115,95,101,110,100,95,98,108,111,99,107,44,32,101,110,100,95,98,108,111,99,107,44,32,114,111,111,116,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,61,32,63,32,65,78,68,32,105,100,120,32,61,32,63,0,85,80,68,65,84,69,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,83,69,84,32,115,116,97,114,116,95,98,108,111,99,107,32,61,32,63,44,32,114,111,111,116,32,61,32,63,87,72,69,82,69,32,108,101,118,101,108,32,61,32,63,32,65,78,68,32,105,100,120,32,61,32,63,0,83,69,76,69,67,84,32,49,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,109,101,110,116,115,39,32,87,72,69,82,69,32,98,108,111,99,107,105,100,61,63,32,65,78,68,32,98,108,111,99,107,32,73,83,32,78,85,76,76,0,83,69,76,69,67,84,32,105,100,120,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,61,63,32,79,82,68,69,82,32,66,89,32,49,32,65,83,67,0,83,69,76,69,67,84,32,109,97,120,40,32,108,101,118,101,108,32,37,37,32,49,48,50,52,32,41,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,0,83,69,76,69,67,84,32,108,101,118,101,108,44,32,105,100,120,44,32,101,110,100,95,98,108,111,99,107,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,66,69,84,87,69,69,78,32,63,32,65,78,68,32,63,32,79,82,68,69,82,32,66,89,32,108,101,118,101,108,32,68,69,83,67,44,32,105,100,120,32,65,83,67,0,85,80,68,65,84,69,32,79,82,32,70,65,73,76,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,83,69,84,32,108,101,118,101,108,61,45,49,44,105,100,120,61,63,32,87,72,69,82,69,32,108,101,118,101,108,61,63,32,65,78,68,32,105,100,120,61,63,0,85,80,68,65,84,69,32,79,82,32,70,65,73,76,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,83,69,84,32,108,101,118,101,108,61,63,32,87,72,69,82,69,32,108,101,118,101,108,61,45,49,0,37,108,108,100,32,37,108,108,100,0,37,115,95,115,101,103,109,101,110,116,115,0,98,108,111,99,107,0,83,69,76,69,67,84,32,49,32,70,82,79,77,32,37,81,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,116,98,108,95,110,97,109,101,61,39,37,113,95,115,116,97,116,39,0,112,99,120,0,83,69,76,69,67,84,32,37,115,32,87,72,69,82,69,32,114,111,119,105,100,32,61,32,63,0,117,110,114,101,99,111,103,110,105,122,101,100,32,109,97,116,99,104,105,110,102,111,32,114,101,113,117,101,115,116,58,32,37,99,0,105,108,108,101,103,97,108,32,102,105,114,115,116,32,97,114,103,117,109,101,110,116,32,116,111,32,37,115,0,73,110,100,101,120,32,111,112,116,105,109,105,122,101,100,0,73,110,100,101,120,32,97,108,114,101,97,100,121,32,111,112,116,105,109,97,108,0,83,65,86,69,80,79,73,78,84,32,102,116,115,51,0,82,69,76,69,65,83,69,32,102,116,115,51,0,82,79,76,76,66,65,67,75,32,84,79,32,102,116,115,51,0,37,100,32,37,100,32,37,100,32,37,100,32,0,60,98,62,0,60,47,98,62,0,60,98,62,46,46,46,60,47,98,62,0,119,114,111,110,103,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,32,116,111,32,102,117,110,99,116,105,111,110,32,115,110,105,112,112,101,116,40,41,0,114,101,98,117,105,108,100,0,105,110,116,101,103,114,105,116,121,45,99,104,101,99,107,0,109,101,114,103,101,61,0,97,117,116,111,109,101,114,103,101,61,0,67,82,69,65,84,69,32,84,65,66,76,69,32,73,70,32,78,79,84,32,69,88,73,83,84,83,32,37,81,46,39,37,113,95,115,116,97,116,39,40,105,100,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32,75,69,89,44,32,118,97,108,117,101,32,66,76,79,66,41,59,0,83,69,76,69,67,84,32,37,115,0,68,69,83,67,0,65,83,67,0,83,69,76,69,67,84,32,37,115,32,87,72,69,82,69,32,114,111,119,105,100,32,66,69,84,87,69,69,78,32,37,108,108,100,32,65,78,68,32,37,108,108,100,32,79,82,68,69,82,32,66,89,32,114,111,119,105,100,32,37,115,0,83,69,76,69,67,84,32,37,115,32,79,82,68,69,82,32,66,89,32,114,111,119,105,100,32,37,115,0,70,84,83,32,101,120,112,114,101,115,115,105,111,110,32,116,114,101,101,32,105,115,32,116,111,111,32,108,97,114,103,101,32,40,109,97,120,105,109,117,109,32,100,101,112,116,104,32,37,100,41,0,109,97,108,102,111,114,109,101,100,32,77,65,84,67,72,32,101,120,112,114,101,115,115,105,111,110,58,32,91,37,115,93,0,79,82,0,65,78,68,0,78,79,84,0,78,69,65,82,0,68,82,79,80,32,84,65,66,76,69,32,73,70,32,69,88,73,83,84,83,32,37,81,46,39,37,113,95,99,111,110,116,101,110,116,39,0,68,82,79,80,32,84,65,66,76,69,32,73,70,32,69,88,73,83,84,83,32,37,81,46,39,37,113,95,115,101,103,109,101,110,116,115,39,0,68,82,79,80,32,84,65,66,76,69,32,73,70,32,69,88,73,83,84,83,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,0,68,82,79,80,32,84,65,66,76,69,32,73,70,32,69,88,73,83,84,83,32,37,81,46,39,37,113,95,100,111,99,115,105,122,101,39,0,68,82,79,80,32,84,65,66,76,69,32,73,70,32,69,88,73,83,84,83,32,37,81,46,39,37,113,95,115,116,97,116,39,0,116,111,107,101,110,105,122,101,0,117,110,114,101,99,111,103,110,105,122,101,100,32,112,97,114,97,109,101,116,101,114,58,32,37,115,0,117,110,114,101,99,111,103,110,105,122,101,100,32,109,97,116,99,104,105,110,102,111,58,32,37,115,0,97,115,99,0,100,101,115,99,0,117,110,114,101,99,111,103,110,105,122,101,100,32,111,114,100,101,114,58,32,37,115,0,99,111,110,116,101,110,116,0,101,114,114,111,114,32,112,97,114,115,105,110,103,32,112,114,101,102,105,120,32,112,97,114,97,109,101,116,101,114,58,32,37,115,0,110,111,32,115,117,99,104,32,99,111,108,117,109,110,58,32,37,115,0,99,111,109,112,114,101,115,115,0,117,110,99,111,109,112,114,101,115,115,0,109,105,115,115,105,110,103,32,37,115,32,112,97,114,97,109,101,116,101,114,32,105,110,32,102,116,115,52,32,99,111,110,115,116,114,117,99,116,111,114,0,95,95,108,97,110,103,105,100,0,37,81,44,32,0,37,122,37,81,44,32,0,67,82,69,65,84,69,32,84,65,66,76,69,32,120,40,37,115,32,37,81,32,72,73,68,68,69,78,44,32,100,111,99,105,100,32,72,73,68,68,69,78,44,32,37,81,32,72,73,68,68,69,78,41,0,80,82,65,71,77,65,32,37,81,46,112,97,103,101,95,115,105,122,101,0,100,111,99,105,100,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32,75,69,89,0,37,122,44,32,39,99,37,100,37,113,39,0,37,122,44,32,108,97,110,103,105,100,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,39,37,113,95,99,111,110,116,101,110,116,39,40,37,115,41,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,39,37,113,95,115,101,103,109,101,110,116,115,39,40,98,108,111,99,107,105,100,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32,75,69,89,44,32,98,108,111,99,107,32,66,76,79,66,41,59,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,40,108,101,118,101,108,32,73,78,84,69,71,69,82,44,105,100,120,32,73,78,84,69,71,69,82,44,115,116,97,114,116,95,98,108,111,99,107,32,73,78,84,69,71,69,82,44,108,101,97,118,101,115,95,101,110,100,95,98,108,111,99,107,32,73,78,84,69,71,69,82,44,101,110,100,95,98,108,111,99,107,32,73,78,84,69,71,69,82,44,114,111,111,116,32,66,76,79,66,44,80,82,73,77,65,82,89,32,75,69,89,40,108,101,118,101,108,44,32,105,100,120,41,41,59,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,39,37,113,95,100,111,99,115,105,122,101,39,40,100,111,99,105,100,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32,75,69,89,44,32,115,105,122,101,32,66,76,79,66,41,59,0,44,37,115,40,63,41,0,44,32,63,0,37,115,37,115,0,100,111,99,105,100,0,44,37,115,40,120,46,39,99,37,100,37,113,39,41,0,44,32,120,46,37,81,0,108,97,110,103,105,100,0,114,111,119,105,100,0,44,32,120,46,39,37,113,39,0,95,99,111,110,116,101,110,116,0,32,70,82,79,77,32,39,37,113,39,46,39,37,113,37,115,39,32,65,83,32,120,0,83,69,76,69,67,84,32,42,32,70,82,79,77,32,37,81,46,37,81,0,112,114,101,102,105,120,0,111,114,100,101,114,0,108,97,110,103,117,97,103,101,105,100,0,110,111,116,105,110,100,101,120,101,100,0,117,110,107,110,111,119,110,32,116,111,107,101,110,105,122,101,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,102,116,115,51,116,111,107,101,110,105,122,101,58,32,100,105,115,97,98,108,101,100,32,45,32,114,101,98,117,105,108,100,32,119,105,116,104,32,45,68,83,81,76,73,84,69,95,69,78,65,66,76,69,95,70,84,83,51,95,84,79,75,69,78,73,90,69,82,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,115,101,115,115,0,115,115,0,115,101,105,0,105,0,100,101,101,0,101,101,0,103,110,105,0,100,101,0,116,97,0,97,116,101,0,108,98,0,98,108,101,0,122,105,0,105,122,101,0,108,97,110,111,105,116,97,0,108,97,110,111,105,116,0,116,105,111,110,0,105,99,110,101,0,101,110,99,101,0,105,99,110,97,0,97,110,99,101,0,114,101,122,105,0,105,103,111,108,0,108,111,103,0,105,108,98,0,105,108,108,97,0,97,108,0,105,108,116,110,101,0,101,110,116,0,105,108,101,0,101,0,105,108,115,117,111,0,111,117,115,0,110,111,105,116,97,122,105,0,110,111,105,116,97,0,114,111,116,97,0,109,115,105,108,97,0,115,115,101,110,101,118,105,0,105,118,101,0,115,115,101,110,108,117,102,0,102,117,108,0,115,115,101,110,115,117,111,0,105,116,105,108,97,0,105,116,105,118,105,0,105,116,105,108,105,98,0,101,116,97,99,105,0,105,99,0,101,118,105,116,97,0,101,122,105,108,97,0,105,116,105,99,105,0,108,97,99,105,0,108,117,102,0,115,115,101,110,0,116,110,101,109,101,0,116,110,101,109,0,116,110,101,0,110,111,105,0,101,116,97,0,105,116,105,0,0,1,1,1,0,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,2,1,102,116,115,52,97,117,120,0,42,0,67,82,69,65,84,69,32,84,65,66,76,69,32,120,40,116,101,114,109,44,32,99,111,108,44,32,100,111,99,117,109,101,110,116,115,44,32,111,99,99,117,114,114,101,110,99,101,115,44,32,108,97,110,103,117,97,103,101,105,100,32,72,73,68,68,69,78,41,0,105,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,115,32,116,111,32,102,116,115,52,97,117,120,32,99,111,110,115,116,114,117,99,116,111,114,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,0,1,2,3,0,1,0,0,0,97,99,101,105,110,111,117,121,121,97,99,100,101,101,103,104,105,106,107,108,110,111,114,115,116,117,117,119,121,122,111,117,97,105,111,117,103,107,111,106,103,110,97,101,105,111,114,117,115,116,104,97,101,111,121,0,0,0,0,0,0,0,0,97,98,100,100,101,102,103,104,104,105,107,108,108,109,110,112,114,114,115,116,117,118,119,119,120,121,122,104,116,119,121,97,101,105,111,117,121,114,101,109,111,118,101,95,100,105,97,99,114,105,116,105,99,115,61,49,0,114,101,109,111,118,101,95,100,105,97,99,114,105,116,105,99,115,61,48,0,116,111,107,101,110,99,104,97,114,115,61,0,115,101,112,97,114,97,116,111,114,115,61,0,97,117,116,111,109,97,116,105,99,32,101,120,116,101,110,115,105,111,110,32,108,111,97,100,105,110,103,32,102,97,105,108,101,100,58,32,37,115,0,77,65,84,67,72,0,58,109,101,109,111,114,121,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,101,99,111,118,101,114,101,100,32,37,100,32,112,97,103,101,115,32,102,114,111,109,32,37,115,0,217,213,5,249,32,161,99,215,99,97,110,110,111,116,32,108,105,109,105,116,32,87,65,76,32,115,105,122,101,58,32,37,115,0,99,97,110,110,111,116,32,111,112,101,110,32,102,105,108,101,32,97,116,32,108,105,110,101,32,37,100,32,111,102,32,91,37,46,49,48,115,93,0,114,101,99,111,118,101,114,101,100,32,37,100,32,102,114,97,109,101,115,32,102,114,111,109,32,87,65,76,32,102,105,108,101,32,37,115,0,45,106,111,117,114,110,97,108,0,0,45,119,97,108,0,0,110,111,108,111,99,107,0,105,109,109,117,116,97,98,108,101,0,0,102,105,108,101,58,0,108,111,99,97,108,104,111,115,116,0,105,110,118,97,108,105,100,32,117,114,105,32,97,117,116,104,111,114,105,116,121,58,32,37,46,42,115,0,118,102,115,0,99,97,99,104,101,0,109,111,100,101,0,97,99,99,101,115,115,0,110,111,32,115,117,99,104,32,37,115,32,109,111,100,101,58,32,37,115,0,37,115,32,109,111,100,101,32,110,111,116,32,97,108,108,111,119,101,100,58,32,37,115,0,110,111,32,115,117,99,104,32,118,102,115,58,32,37,115,0,114,111,0,114,119,0,114,119,99,0,109,101,109,111,114,121,0,115,104,97,114,101,100,0,112,114,105,118,97,116,101,0,117,110,97,98,108,101,32,116,111,32,117,115,101,32,102,117,110,99,116,105,111,110,32,37,115,32,105,110,32,116,104,101,32,114,101,113,117,101,115,116,101,100,32,99,111,110,116,101,120,116,0,117,110,97,98,108,101,32,116,111,32,100,101,108,101,116,101,47,109,111,100,105,102,121,32,117,115,101,114,45,102,117,110,99,116,105,111,110,32,100,117,101,32,116,111,32,97,99,116,105,118,101,32,115,116,97,116,101,109,101,110,116,115,0,117,110,97,98,108,101,32,116,111,32,99,108,111,115,101,32,100,117,101,32,116,111,32,117,110,102,105,110,97,108,105,122,101,100,32,115,116,97,116,101,109,101,110,116,115,32,111,114,32,117,110,102,105,110,105,115,104,101,100,32,98,97,99,107,117,112,115,0,102,97,105,108,101,100,32,109,101,109,111,114,121,32,114,101,115,105,122,101,32,37,117,32,116,111,32,37,117,32,98,121,116,101,115,0,102,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,37,117,32,98,121,116,101,115,32,111,102,32,109,101,109,111,114,121,0,117,110,114,101,99,111,103,110,105,122,101,100,32,116,111,107,101,110,58,32,34,37,84,34,0,110,101,97,114,32,34,37,84,34,58,32,115,121,110,116,97,120,32,101,114,114,111,114,0,117,110,107,110,111,119,110,32,116,97,98,108,101,32,111,112,116,105,111,110,58,32,37,46,42,115,0,115,101,116,32,108,105,115,116,0,116,111,111,32,109,97,110,121,32,97,114,103,117,109,101,110,116,115,32,111,110,32,102,117,110,99,116,105,111,110,32,37,84,0,113,117,97,108,105,102,105,101,100,32,116,97,98,108,101,32,110,97,109,101,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,73,78,83,69,82,84,44,32,85,80,68,65,84,69,44,32,97,110,100,32,68,69,76,69,84,69,32,115,116,97,116,101,109,101,110,116,115,32,119,105,116,104,105,110,32,116,114,105,103,103,101,114,115,0,116,104,101,32,73,78,68,69,88,69,68,32,66,89,32,99,108,97,117,115,101,32,105,115,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,85,80,68,65,84,69,32,111,114,32,68,69,76,69,84,69,32,115,116,97,116,101,109,101,110,116,115,32,119,105,116,104,105,110,32,116,114,105,103,103,101,114,115,0,116,104,101,32,78,79,84,32,73,78,68,69,88,69,68,32,99,108,97,117,115,101,32,105,115,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,85,80,68,65,84,69,32,111,114,32,68,69,76,69,84,69,32,115,116,97,116,101,109,101,110,116,115,32,119,105,116,104,105,110,32,116,114,105,103,103,101,114,115,0,144,1,145,2,145,1,146,1,146,3,147,0,147,1,147,3,148,1,149,3,151,0,151,1,151,2,150,0,150,1,150,1,150,1,149,2,149,2,149,2,153,1,153,0,149,2,149,3,149,5,149,2,154,6,156,1,158,0,158,3,157,1,157,0,155,5,155,2,162,0,162,2,160,3,160,1,164,3,165,1,152,1,152,1,152,1,166,0,166,1,168,1,168,4,168,6,169,1,169,2,170,1,170,1,167,2,167,0,173,2,173,2,173,4,173,3,173,3,173,2,173,2,173,3,173,5,173,2,173,4,173,4,173,1,173,2,178,0,178,1,180,0,180,2,182,2,182,3,182,3,182,3,183,2,183,2,183,1,183,1,183,2,181,3,181,2,184,0,184,2,184,2,161,0,161,2,185,3,185,1,186,1,186,0,187,2,187,7,187,5,187,5,187,10,190,0,190,1,176,0,176,3,191,0,191,2,192,1,192,1,192,1,149,4,194,2,194,0,149,9,149,4,149,1,163,2,196,1,196,3,199,1,199,2,199,1,197,9,197,1,208,4,208,5,200,1,200,1,200,0,211,2,211,0,201,3,201,2,201,4,212,2,212,1,212,0,202,0,202,2,214,2,214,0,213,7,213,9,213,7,213,7,159,0,159,2,195,2,215,1,215,2,215,3,215,4,217,2,217,0,216,0,216,3,216,2,218,4,218,0,206,0,206,3,188,4,188,2,177,1,177,1,177,0,204,0,204,3,205,0,205,2,207,0,207,2,207,4,207,4,149,6,203,0,203,2,149,8,220,5,220,3,149,6,149,7,221,2,221,1,222,0,222,3,219,3,219,1,175,1,175,3,174,1,175,1,175,1,175,3,175,5,174,1,174,1,175,1,175,3,175,6,175,5,175,4,174,1,175,3,175,3,175,3,175,3,175,3,175,3,175,3,175,3,223,1,223,2,175,3,175,5,175,2,175,3,175,3,175,4,175,2,175,2,175,2,175,2,224,1,224,2,175,5,225,1,225,2,175,5,175,3,175,5,175,4,175,4,175,5,227,5,227,4,228,2,228,0,226,1,226,0,210,1,210,0,209,3,209,1,149,12,229,1,229,0,179,0,179,3,189,5,189,3,230,0,230,2,149,4,149,1,149,2,149,3,149,5,149,6,149,5,149,6,231,1,231,1,231,1,231,1,231,1,171,2,171,1,172,2,149,5,232,11,234,1,234,1,234,2,234,0,235,1,235,1,235,3,236,0,236,3,237,0,237,2,233,3,233,2,239,1,239,3,240,0,240,3,240,2,238,7,238,5,238,5,238,1,175,4,175,6,193,1,193,1,193,1,149,4,149,6,149,3,242,0,242,2,241,1,241,0,149,1,149,3,149,1,149,3,149,6,149,6,243,1,244,0,244,1,149,1,149,4,245,8,246,1,246,3,247,0,247,2,248,1,248,3,249,1,250,0,250,4,250,2,198,0,198,2,198,3,251,6,251,8,100,117,112,108,105,99,97,116,101,32,87,73,84,72,32,116,97,98,108,101,32,110,97,109,101,58,32,37,115,0,110,111,116,32,97,117,116,104,111,114,105,122,101,100,0,97,117,116,104,111,114,105,122,101,114,32,109,97,108,102,117,110,99,116,105,111,110,0,67,82,69,65,84,69,32,86,73,82,84,85,65,76,32,84,65,66,76,69,32,37,84,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,116,121,112,101,61,39,116,97,98,108,101,39,44,32,110,97,109,101,61,37,81,44,32,116,98,108,95,110,97,109,101,61,37,81,44,32,114,111,111,116,112,97,103,101,61,48,44,32,115,113,108,61,37,81,32,87,72,69,82,69,32,114,111,119,105,100,61,35,37,100,0,110,97,109,101,61,39,37,113,39,32,65,78,68,32,116,121,112,101,61,39,116,97,98,108,101,39,0,118,105,114,116,117,97,108,32,116,97,98,108,101,115,32,109,97,121,32,110,111,116,32,98,101,32,97,108,116,101,114,101,100,0,67,97,110,110,111,116,32,97,100,100,32,97,32,99,111,108,117,109,110,32,116,111,32,97,32,118,105,101,119,0,115,113,108,105,116,101,95,97,108,116,101,114,116,97,98,95,37,115,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,97,32,116,101,109,112,111,114,97,114,121,32,100,97,116,97,98,97,115,101,32,102,105,108,101,32,102,111,114,32,115,116,111,114,105,110,103,32,116,101,109,112,111,114,97,114,121,32,116,97,98,108,101,115,0,115,113,108,105,116,101,95,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,97,108,116,101,114,101,100,0,67,97,110,110,111,116,32,97,100,100,32,97,32,80,82,73,77,65,82,89,32,75,69,89,32,99,111,108,117,109,110,0,67,97,110,110,111,116,32,97,100,100,32,97,32,85,78,73,81,85,69,32,99,111,108,117,109,110,0,67,97,110,110,111,116,32,97,100,100,32,97,32,82,69,70,69,82,69,78,67,69,83,32,99,111,108,117,109,110,32,119,105,116,104,32,110,111,110,45,78,85,76,76,32,100,101,102,97,117,108,116,32,118,97,108,117,101,0,67,97,110,110,111,116,32,97,100,100,32,97,32,78,79,84,32,78,85,76,76,32,99,111,108,117,109,110,32,119,105,116,104,32,100,101,102,97,117,108,116,32,118,97,108,117,101,32,78,85,76,76,0,67,97,110,110,111,116,32,97,100,100,32,97,32,99,111,108,117,109,110,32,119,105,116,104,32,110,111,110,45,99,111,110,115,116,97,110,116,32,100,101,102,97,117,108,116,0,85,80,68,65,84,69,32,34,37,119,34,46,37,115,32,83,69,84,32,115,113,108,32,61,32,115,117,98,115,116,114,40,115,113,108,44,49,44,37,100,41,32,124,124,32,39,44,32,39,32,124,124,32,37,81,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,37,100,41,32,87,72,69,82,69,32,116,121,112,101,32,61,32,39,116,97,98,108,101,39,32,65,78,68,32,110,97,109,101,32,61,32,37,81,0,116,98,108,95,110,97,109,101,61,37,81,0,116,121,112,101,61,39,116,114,105,103,103,101,114,39,32,65,78,68,32,40,37,115,41,0,110,97,109,101,61,37,81,0,37,115,32,79,82,32,110,97,109,101,61,37,81,0,45,0,37,108,108,100,0,37,33,46,49,53,103,0,116,104,101,114,101,32,105,115,32,97,108,114,101,97,100,121,32,97,110,111,116,104,101,114,32,116,97,98,108,101,32,111,114,32,105,110,100,101,120,32,119,105,116,104,32,116,104,105,115,32,110,97,109,101,58,32,37,115,0,118,105,101,119,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,97,108,116,101,114,101,100,0,85,80,68,65,84,69,32,34,37,119,34,46,37,115,32,83,69,84,32,115,113,108,32,61,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,112,97,114,101,110,116,40,115,113,108,44,32,37,81,44,32,37,81,41,32,87,72,69,82,69,32,37,115,59,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,115,113,108,32,61,32,67,65,83,69,32,87,72,69,78,32,116,121,112,101,32,61,32,39,116,114,105,103,103,101,114,39,32,84,72,69,78,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,114,105,103,103,101,114,40,115,113,108,44,32,37,81,41,69,76,83,69,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,97,98,108,101,40,115,113,108,44,32,37,81,41,32,69,78,68,44,32,116,98,108,95,110,97,109,101,32,61,32,37,81,44,32,110,97,109,101,32,61,32,67,65,83,69,32,87,72,69,78,32,116,121,112,101,61,39,116,97,98,108,101,39,32,84,72,69,78,32,37,81,32,87,72,69,78,32,110,97,109,101,32,76,73,75,69,32,39,115,113,108,105,116,101,95,97,117,116,111,105,110,100,101,120,37,37,39,32,65,78,68,32,116,121,112,101,61,39,105,110,100,101,120,39,32,84,72,69,78,32,39,115,113,108,105,116,101,95,97,117,116,111,105,110,100,101,120,95,39,32,124,124,32,37,81,32,124,124,32,115,117,98,115,116,114,40,110,97,109,101,44,37,100,43,49,56,41,32,69,76,83,69,32,110,97,109,101,32,69,78,68,32,87,72,69,82,69,32,116,98,108,95,110,97,109,101,61,37,81,32,67,79,76,76,65,84,69,32,110,111,99,97,115,101,32,65,78,68,32,40,116,121,112,101,61,39,116,97,98,108,101,39,32,79,82,32,116,121,112,101,61,39,105,110,100,101,120,39,32,79,82,32,116,121,112,101,61,39,116,114,105,103,103,101,114,39,41,59,0,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,0,85,80,68,65,84,69,32,34,37,119,34,46,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,32,115,101,116,32,110,97,109,101,32,61,32,37,81,32,87,72,69,82,69,32,110,97,109,101,32,61,32,37,81,0,85,80,68,65,84,69,32,115,113,108,105,116,101,95,116,101,109,112,95,109,97,115,116,101,114,32,83,69,84,32,115,113,108,32,61,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,114,105,103,103,101,114,40,115,113,108,44,32,37,81,41,44,32,116,98,108,95,110,97,109,101,32,61,32,37,81,32,87,72,69,82,69,32,37,115,59,0,118,105,101,119,32,37,115,32,105,115,32,99,105,114,99,117,108,97,114,108,121,32,100,101,102,105,110,101,100,0,110,111,32,115,117,99,104,32,99,111,108,108,97,116,105,111,110,32,115,101,113,117,101,110,99,101,58,32,37,115,0,3,2,1,97,32,71,82,79,85,80,32,66,89,32,99,108,97,117,115,101,32,105,115,32,114,101,113,117,105,114,101,100,32,98,101,102,111,114,101,32,72,65,86,73,78,71,0,79,82,68,69,82,0,71,82,79,85,80,0,97,103,103,114,101,103,97,116,101,32,102,117,110,99,116,105,111,110,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,116,104,101,32,71,82,79,85,80,32,66,89,32,99,108,97,117,115,101,0,116,111,111,32,109,97,110,121,32,116,101,114,109,115,32,105,110,32,79,82,68,69,82,32,66,89,32,99,108,97,117,115,101,0,37,114,32,79,82,68,69,82,32,66,89,32,116,101,114,109,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,97,110,121,32,99,111,108,117,109,110,32,105,110,32,116,104,101,32,114,101,115,117,108,116,32,115,101,116,0,37,114,32,37,115,32,66,89,32,116,101,114,109,32,111,117,116,32,111,102,32,114,97,110,103,101,32,45,32,115,104,111,117,108,100,32,98,101,32,98,101,116,119,101,101,110,32,49,32,97,110,100,32,37,100,0,97,108,108,32,86,65,76,85,69,83,32,109,117,115,116,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,110,117,109,98,101,114,32,111,102,32,116,101,114,109,115,0,83,69,76,69,67,84,115,32,116,111,32,116,104,101,32,108,101,102,116,32,97,110,100,32,114,105,103,104,116,32,111,102,32,37,115,32,100,111,32,110,111,116,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,110,117,109,98,101,114,32,111,102,32,114,101,115,117,108,116,32,99,111,108,117,109,110,115,0,85,78,73,79,78,32,65,76,76,0,73,78,84,69,82,83,69,67,84,0,69,88,67,69,80,84,0,85,78,73,79,78,0,116,111,111,32,109,97,110,121,32,116,101,114,109,115,32,105,110,32,37,115,32,66,89,32,99,108,97,117,115,101,0,69,120,112,114,101,115,115,105,111,110,32,116,114,101,101,32,105,115,32,116,111,111,32,108,97,114,103,101,32,40,109,97,120,105,109,117,109,32,100,101,112,116,104,32,37,100,41,0,116,104,101,32,34,46,34,32,111,112,101,114,97,116,111,114,0,102,117,110,99,116,105,111,110,115,0,115,101,99,111,110,100,32,97,114,103,117,109,101,110,116,32,116,111,32,108,105,107,101,108,105,104,111,111,100,40,41,32,109,117,115,116,32,98,101,32,97,32,99,111,110,115,116,97,110,116,32,98,101,116,119,101,101,110,32,48,46,48,32,97,110,100,32,49,46,48,0,110,111,116,32,97,117,116,104,111,114,105,122,101,100,32,116,111,32,117,115,101,32,102,117,110,99,116,105,111,110,58,32,37,115,0,110,111,110,45,100,101,116,101,114,109,105,110,105,115,116,105,99,32,102,117,110,99,116,105,111,110,115,0,109,105,115,117,115,101,32,111,102,32,97,103,103,114,101,103,97,116,101,32,102,117,110,99,116,105,111,110,32,37,46,42,115,40,41,0,110,111,32,115,117,99,104,32,102,117,110,99,116,105,111,110,58,32,37,46,42,115,0,119,114,111,110,103,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,32,116,111,32,102,117,110,99,116,105,111,110,32,37,46,42,115,40,41,0,115,117,98,113,117,101,114,105,101,115,0,112,97,114,97,109,101,116,101,114,115,0,112,97,114,116,105,97,108,32,105,110,100,101,120,32,87,72,69,82,69,32,99,108,97,117,115,101,115,0,105,110,100,101,120,32,101,120,112,114,101,115,115,105,111,110,115,0,67,72,69,67,75,32,99,111,110,115,116,114,97,105,110,116,115,0,37,115,32,112,114,111,104,105,98,105,116,101,100,32,105,110,32,37,115,0,110,101,119,0,111,108,100,0,109,105,115,117,115,101,32,111,102,32,97,108,105,97,115,101,100,32,97,103,103,114,101,103,97,116,101,32,37,115,0,110,111,32,115,117,99,104,32,99,111,108,117,109,110,0,97,109,98,105,103,117,111,117,115,32,99,111,108,117,109,110,32,110,97,109,101,0,37,115,58,32,37,115,46,37,115,46,37,115,0,37,115,58,32,37,115,46,37,115,0,37,115,58,32,37,115,0,97,99,99,101,115,115,32,116,111,32,37,115,46,37,115,46,37,115,32,105,115,32,112,114,111,104,105,98,105,116,101,100,0,97,99,99,101,115,115,32,116,111,32,37,115,46,37,115,32,105,115,32,112,114,111,104,105,98,105,116,101,100,0,115,113,108,105,116,101,95,115,113,95,37,112,0,116,111,111,32,109,97,110,121,32,114,101,102,101,114,101,110,99,101,115,32,116,111,32,34,37,115,34,58,32,109,97,120,32,54,53,53,51,53,0,37,115,46,37,115,0,37,115,46,37,115,46,37,115,0,110,111,32,115,117,99,104,32,116,97,98,108,101,58,32,37,115,0,110,111,32,116,97,98,108,101,115,32,115,112,101,99,105,102,105,101,100,0,116,111,111,32,109,97,110,121,32,99,111,108,117,109,110,115,32,105,110,32,114,101,115,117,108,116,32,115,101,116,0,97,32,78,65,84,85,82,65,76,32],"i8",4,l.aa+20862); -z([106,111,105,110,32,109,97,121,32,110,111,116,32,104,97,118,101,32,97,110,32,79,78,32,111,114,32,85,83,73,78,71,32,99,108,97,117,115,101,0,99,97,110,110,111,116,32,104,97,118,101,32,98,111,116,104,32,79,78,32,97,110,100,32,85,83,73,78,71,32,99,108,97,117,115,101,115,32,105,110,32,116,104,101,32,115,97,109,101,32,106,111,105,110,0,99,97,110,110,111,116,32,106,111,105,110,32,117,115,105,110,103,32,99,111,108,117,109,110,32,37,115,32,45,32,99,111,108,117,109,110,32,110,111,116,32,112,114,101,115,101,110,116,32,105,110,32,98,111,116,104,32,116,97,98,108,101,115,0,110,111,32,115,117,99,104,32,105,110,100,101,120,58,32,37,115,0,39,37,115,39,32,105,115,32,110,111,116,32,97,32,102,117,110,99,116,105,111,110,0,109,117,108,116,105,112,108,101,32,114,101,102,101,114,101,110,99,101,115,32,116,111,32,114,101,99,117,114,115,105,118,101,32,116,97,98,108,101,58,32,37,115,0,99,105,114,99,117,108,97,114,32,114,101,102,101,114,101,110,99,101,58,32,37,115,0,116,97,98,108,101,32,37,115,32,104,97,115,32,37,100,32,118,97,108,117,101,115,32,102,111,114,32,37,100,32,99,111,108,117,109,110,115,0,109,117,108,116,105,112,108,101,32,114,101,99,117,114,115,105,118,101,32,114,101,102,101,114,101,110,99,101,115,58,32,37,115,0,114,101,99,117,114,115,105,118,101,32,114,101,102,101,114,101,110,99,101,32,105,110,32,97,32,115,117,98,113,117,101,114,121,58,32,37,115,0,37,46,42,122,58,37,117,0,110,111,32,115,117,99,104,32,109,111,100,117,108,101,58,32,37,115,0,118,116,97,98,108,101,32,99,111,110,115,116,114,117,99,116,111,114,32,99,97,108,108,101,100,32,114,101,99,117,114,115,105,118,101,108,121,58,32,37,115,0,118,116,97,98,108,101,32,99,111,110,115,116,114,117,99,116,111,114,32,102,97,105,108,101,100,58,32,37,115,0,118,116,97,98,108,101,32,99,111,110,115,116,114,117,99,116,111,114,32,100,105,100,32,110,111,116,32,100,101,99,108,97,114,101,32,115,99,104,101,109,97,58,32,37,115,0,104,105,100,100,101,110,0,32,104,105,100,100,101,110,0,111,98,106,101,99,116,32,110,97,109,101,32,114,101,115,101,114,118,101,100,32,102,111,114,32,105,110,116,101,114,110,97,108,32,117,115,101,58,32,37,115,0,99,111,114,114,117,112,116,32,100,97,116,97,98,97,115,101,0,117,110,107,110,111,119,110,32,100,97,116,97,98,97,115,101,32,37,84,0,105,100,120,0,116,98,108,0,115,113,108,105,116,101,95,37,0,66,66,66,0,115,116,97,116,95,103,101,116,0,37,108,108,117,0,32,37,108,108,117,0,115,116,97,116,95,112,117,115,104,0,115,116,97,116,95,105,110,105,116,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,37,115,40,37,115,41,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,37,115,61,37,81,0,116,98,108,44,105,100,120,44,115,116,97,116,0,115,113,108,105,116,101,95,115,116,97,116,51,0,115,113,108,105,116,101,95,115,116,97,116,52,0,117,110,97,98,108,101,32,116,111,32,105,100,101,110,116,105,102,121,32,116,104,101,32,111,98,106,101,99,116,32,116,111,32,98,101,32,114,101,105,110,100,101,120,101,100,0,105,110,100,101,120,32,39,37,113,39,0,44,32,0,109,105,115,117,115,101,32,111,102,32,97,103,103,114,101,103,97,116,101,58,32,37,115,40,41,0,117,110,107,110,111,119,110,32,102,117,110,99,116,105,111,110,58,32,37,46,42,115,40,41,0,82,65,73,83,69,40,41,32,109,97,121,32,111,110,108,121,32,98,101,32,117,115,101,100,32,119,105,116,104,105,110,32,97,32,116,114,105,103,103,101,114,45,112,114,111,103,114,97,109,0,67,79,82,82,69,76,65,84,69,68,32,0,76,73,83,84,0,83,67,65,76,65,82,0,69,88,69,67,85,84,69,32,37,115,37,115,32,83,85,66,81,85,69,82,89,32,37,100,0,48,120,0,104,101,120,32,108,105,116,101,114,97,108,32,116,111,111,32,98,105,103,58,32,37,115,0,115,113,108,105,116,101,95,100,101,116,97,99,104,0,110,111,32,115,117,99,104,32,100,97,116,97,98,97,115,101,58,32,37,115,0,99,97,110,110,111,116,32,100,101,116,97,99,104,32,100,97,116,97,98,97,115,101,32,37,115,0,99,97,110,110,111,116,32,68,69,84,65,67,72,32,100,97,116,97,98,97,115,101,32,119,105,116,104,105,110,32,116,114,97,110,115,97,99,116,105,111,110,0,100,97,116,97,98,97,115,101,32,37,115,32,105,115,32,108,111,99,107,101,100,0,115,113,108,105,116,101,95,97,116,116,97,99,104,0,116,111,111,32,109,97,110,121,32,97,116,116,97,99,104,101,100,32,100,97,116,97,98,97,115,101,115,32,45,32,109,97,120,32,37,100,0,99,97,110,110,111,116,32,65,84,84,65,67,72,32,100,97,116,97,98,97,115,101,32,119,105,116,104,105,110,32,116,114,97,110,115,97,99,116,105,111,110,0,100,97,116,97,98,97,115,101,32,37,115,32,105,115,32,97,108,114,101,97,100,121,32,105,110,32,117,115,101,0,100,97,116,97,98,97,115,101,32,105,115,32,97,108,114,101,97,100,121,32,97,116,116,97,99,104,101,100,0,111,117,116,32,111,102,32,109,101,109,111,114,121,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,100,97,116,97,98,97,115,101,58,32,37,115,0,110,111,32,115,117,99,104,32,116,114,105,103,103,101,114,58,32,37,83,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,110,97,109,101,61,37,81,32,65,78,68,32,116,121,112,101,61,39,116,114,105,103,103,101,114,39,0,116,101,109,112,111,114,97,114,121,32,116,114,105,103,103,101,114,32,109,97,121,32,110,111,116,32,104,97,118,101,32,113,117,97,108,105,102,105,101,100,32,110,97,109,101,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,116,114,105,103,103,101,114,115,32,111,110,32,118,105,114,116,117,97,108,32,116,97,98,108,101,115,0,116,114,105,103,103,101,114,32,37,84,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,116,114,105,103,103,101,114,32,111,110,32,115,121,115,116,101,109,32,116,97,98,108,101,0,66,69,70,79,82,69,0,65,70,84,69,82,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,37,115,32,116,114,105,103,103,101,114,32,111,110,32,118,105,101,119,58,32,37,83,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,73,78,83,84,69,65,68,32,79,70,32,116,114,105,103,103,101,114,32,111,110,32,116,97,98,108,101,58,32,37,83,0,37,115,32,37,84,32,99,97,110,110,111,116,32,114,101,102,101,114,101,110,99,101,32,111,98,106,101,99,116,115,32,105,110,32,100,97,116,97,98,97,115,101,32,37,115,0,37,115,32,99,97,110,110,111,116,32,117,115,101,32,118,97,114,105,97,98,108,101,115,0,73,78,83,69,82,84,32,73,78,84,79,32,37,81,46,37,115,32,86,65,76,85,69,83,40,39,116,114,105,103,103,101,114,39,44,37,81,44,37,81,44,48,44,39,67,82,69,65,84,69,32,84,82,73,71,71,69,82,32,37,113,39,41,0,116,121,112,101,61,39,116,114,105,103,103,101,114,39,32,65,78,68,32,110,97,109,101,61,39,37,113,39,0,45,37,84,0,114,101,115,117,108,116,0,99,97,99,104,101,95,115,105,122,101,0,2,0,0,0,51,0,1,3,138,1,8,0,22,0,2,0,90,1,2,1,138,1,8,0,22,0,1,0,160,0,0,0,33,1,1,0,112,97,103,101,95,115,105,122,101,0,115,101,99,117,114,101,95,100,101,108,101,116,101,0,110,111,114,109,97,108,0,101,120,99,108,117,115,105,118,101,0,108,111,99,107,105,110,103,95,109,111,100,101,0,106,111,117,114,110,97,108,95,109,111,100,101,0,106,111,117,114,110,97,108,95,115,105,122,101,95,108,105,109,105,116,0,97,117,116,111,95,118,97,99,117,117,109,0,2,0,1,0,51,0,1,4,45,1,0,0,21,0,2,0,52,0,7,0,99,97,99,104,101,95,115,112,105,108,108,0,109,109,97,112,95,115,105,122,101,0,116,101,109,112,95,115,116,111,114,101,0,116,101,109,112,95,115,116,111,114,101,95,100,105,114,101,99,116,111,114,121,0,110,111,116,32,97,32,119,114,105,116,97,98,108,101,32,100,105,114,101,99,116,111,114,121,0,115,121,110,99,104,114,111,110,111,117,115,0,83,97,102,101,116,121,32,108,101,118,101,108,32,109,97,121,32,110,111,116,32,98,101,32,99,104,97,110,103,101,100,32,105,110,115,105,100,101,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,105,115,115,105,115,105,0,115,115,105,105,0,115,105,105,0,105,105,115,0,105,115,105,0,105,115,105,115,105,0,105,115,115,0,105,115,0,105,105,115,115,115,115,115,115,0,78,79,78,69,0,115,105,0,105,110,116,101,103,114,105,116,121,95,99,104,101,99,107,0,42,42,42,32,105,110,32,100,97,116,97,98,97,115,101,32,37,115,32,42,42,42,10,0,78,85,76,76,32,118,97,108,117,101,32,105,110,32,37,115,46,37,115,0,114,111,119,32,0,32,109,105,115,115,105,110,103,32,102,114,111,109,32,105,110,100,101,120,32,0,110,111,110,45,117,110,105,113,117,101,32,101,110,116,114,121,32,105,110,32,105,110,100,101,120,32,0,119,114,111,110,103,32,35,32,111,102,32,101,110,116,114,105,101,115,32,105,110,32,105,110,100,101,120,32,0,37,1,0,0,45,1,4,0,97,0,3,0,33,3,1,0,111,107,0,101,110,99,111,100,105,110,103,0,117,110,115,117,112,112,111,114,116,101,100,32,101,110,99,111,100,105,110,103,58,32,37,115,0,2,0,1,0,52,0,0,0,2,0,0,0,51,0,1,0,33,1,1,0,99,111,109,112,105,108,101,95,111,112,116,105,111,110,0,102,117,108,108,0,114,101,115,116,97,114,116,0,116,114,117,110,99,97,116,101,0,119,97,108,95,97,117,116,111,99,104,101,99,107,112,111,105,110,116,0,116,105,109,101,111,117,116,0,115,111,102,116,95,104,101,97,112,95,108,105,109,105,116,0,116,104,114,101,97,100,115,0,98,117,115,121,0,99,104,101,99,107,112,111,105,110,116,101,100,0,85,84,70,56,0,85,84,70,45,56,0,85,84,70,45,49,54,108,101,0,85,84,70,45,49,54,98,101,0,85,84,70,49,54,108,101,0,85,84,70,49,54,98,101,0,85,84,70,45,49,54,0,85,84,70,49,54,0,37,95,0,0,108,105,107,101,0,103,108,111,98,0,76,73,75,69,32,111,114,32,71,76,79,66,32,112,97,116,116,101,114,110,32,116,111,111,32,99,111,109,112,108,101,120,0,69,83,67,65,80,69,32,101,120,112,114,101,115,115,105,111,110,32,109,117,115,116,32,98,101,32,97,32,115,105,110,103,108,101,32,99,104,97,114,97,99,116,101,114,0,102,111,114,101,105,103,110,32,107,101,121,32,109,105,115,109,97,116,99,104,32,45,32,34,37,119,34,32,114,101,102,101,114,101,110,99,105,110,103,32,34,37,119,34,0,116,97,98,108,101,0,112,97,114,101,110,116,0,102,107,105,100,0,83,69,84,32,78,85,76,76,0,83,69,84,32,68,69,70,65,85,76,84,0,67,65,83,67,65,68,69,0,82,69,83,84,82,73,67,84,0,78,79,32,65,67,84,73,79,78,0,105,100,0,115,101,113,0,102,114,111,109,0,116,111,0,111,110,95,117,112,100,97,116,101,0,111,110,95,100,101,108,101,116,101,0,109,97,116,99,104,0,110,97,109,101,0,102,105,108,101,0,99,0,117,0,112,107,0,117,110,105,113,117,101,0,111,114,105,103,105,110,0,112,97,114,116,105,97,108,0,115,101,113,110,111,0,99,105,100,0,99,111,108,108,0,107,101,121,0,105,110,100,101,120,0,119,105,100,116,104,0,104,101,105,103,104,116,0,116,121,112,101,0,110,111,116,110,117,108,108,0,100,102,108,116,95,118,97,108,117,101,0,116,101,109,112,111,114,97,114,121,32,115,116,111,114,97,103,101,32,99,97,110,110,111,116,32,98,101,32,99,104,97,110,103,101,100,32,102,114,111,109,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,110,111,110,101,0,105,110,99,114,101,109,101,110,116,97,108,0,100,101,108,101,116,101,0,112,101,114,115,105,115,116,0,111,102,102,0,119,97,108,0,97,112,112,108,105,99,97,116,105,111,110,95,105,100,0,97,117,116,111,109,97,116,105,99,95,105,110,100,101,120,0,98,117,115,121,95,116,105,109,101,111,117,116,0,99,97,115,101,95,115,101,110,115,105,116,105,118,101,95,108,105,107,101,0,99,101,108,108,95,115,105,122,101,95,99,104,101,99,107,0,99,104,101,99,107,112,111,105,110,116,95,102,117,108,108,102,115,121,110,99,0,99,111,108,108,97,116,105,111,110,95,108,105,115,116,0,99,111,109,112,105,108,101,95,111,112,116,105,111,110,115,0,99,111,117,110,116,95,99,104,97,110,103,101,115,0,100,97,116,97,95,118,101,114,115,105,111,110,0,100,97,116,97,98,97,115,101,95,108,105,115,116,0,100,101,102,97,117,108,116,95,99,97,99,104,101,95,115,105,122,101,0,100,101,102,101,114,95,102,111,114,101,105,103,110,95,107,101,121,115,0,101,109,112,116,121,95,114,101,115,117,108,116,95,99,97,108,108,98,97,99,107,115,0,102,111,114,101,105,103,110,95,107,101,121,95,99,104,101,99,107,0,102,111,114,101,105,103,110,95,107,101,121,95,108,105,115,116,0,102,111,114,101,105,103,110,95,107,101,121,115,0,102,114,101,101,108,105,115,116,95,99,111,117,110,116,0,102,117,108,108,95,99,111,108,117,109,110,95,110,97,109,101,115,0,102,117,108,108,102,115,121,110,99,0,105,103,110,111,114,101,95,99,104,101,99,107,95,99,111,110,115,116,114,97,105,110,116,115,0,105,110,99,114,101,109,101,110,116,97,108,95,118,97,99,117,117,109,0,105,110,100,101,120,95,105,110,102,111,0,105,110,100,101,120,95,108,105,115,116,0,105,110,100,101,120,95,120,105,110,102,111,0,108,101,103,97,99,121,95,102,105,108,101,95,102,111,114,109,97,116,0,109,97,120,95,112,97,103,101,95,99,111,117,110,116,0,112,97,103,101,95,99,111,117,110,116,0,113,117,101,114,121,95,111,110,108,121,0,113,117,105,99,107,95,99,104,101,99,107,0,114,101,97,100,95,117,110,99,111,109,109,105,116,116,101,100,0,114,101,99,117,114,115,105,118,101,95,116,114,105,103,103,101,114,115,0,114,101,118,101,114,115,101,95,117,110,111,114,100,101,114,101,100,95,115,101,108,101,99,116,115,0,115,99,104,101,109,97,95,118,101,114,115,105,111,110,0,115,104,111,114,116,95,99,111,108,117,109,110,95,110,97,109,101,115,0,115,104,114,105,110,107,95,109,101,109,111,114,121,0,115,116,97,116,115,0,116,97,98,108,101,95,105,110,102,111,0,117,115,101,114,95,118,101,114,115,105,111,110,0,119,97,108,95,99,104,101,99,107,112,111,105,110,116,0,119,114,105,116,97,98,108,101,95,115,99,104,101,109,97,0,110,111,32,115,117,99,104,32,105,110,100,101,120,58,32,37,83,0,105,110,100,101,120,32,97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32,85,78,73,81,85,69,32,111,114,32,80,82,73,77,65,82,89,32,75,69,89,32,99,111,110,115,116,114,97,105,110,116,32,99,97,110,110,111,116,32,98,101,32,100,114,111,112,112,101,100,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,110,97,109,101,61,37,81,32,65,78,68,32,116,121,112,101,61,39,105,110,100,101,120,39,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,114,111,111,116,112,97,103,101,61,37,100,32,87,72,69,82,69,32,35,37,100,32,65,78,68,32,114,111,111,116,112,97,103,101,61,35,37,100,0,115,113,108,105,116,101,95,115,116,97,116,37,100,0,115,121,110,116,97,120,32,101,114,114,111,114,32,97,102,116,101,114,32,99,111,108,117,109,110,32,110,97,109,101,32,34,37,46,42,115,34,0,48,0,118,97,114,105,97,98,108,101,32,110,117,109,98,101,114,32,109,117,115,116,32,98,101,32,98,101,116,119,101,101,110,32,63,49,32,97,110,100,32,63,37,100,0,116,111,111,32,109,97,110,121,32,83,81,76,32,118,97,114,105,97,98,108,101,115,0,116,97,98,108,101,32,37,83,32,104,97,115,32,110,111,32,99,111,108,117,109,110,32,110,97,109,101,100,32,37,115,0,116,97,98,108,101,32,37,83,32,104,97,115,32,37,100,32,99,111,108,117,109,110,115,32,98,117,116,32,37,100,32,118,97,108,117,101,115,32,119,101,114,101,32,115,117,112,112,108,105,101,100,0,37,100,32,118,97,108,117,101,115,32,102,111,114,32,37,100,32,99,111,108,117,109,110,115,0,114,111,119,115,32,105,110,115,101,114,116,101,100,0,77,0,2,0,74,0,0,0,49,0,2,0,75,0,0,0,61,0,0,0,97,116,32,109,111,115,116,32,37,100,32,116,97,98,108,101,115,32,105,110,32,97,32,106,111,105,110,0,66,64,63,65,0,0,108,105,66,63,65,64,117,115,114,116,7,6,108,105,83,69,65,82,67,72,0,83,67,65,78,0,32,83,85,66,81,85,69,82,89,32,37,100,0,32,84,65,66,76,69,32,37,115,0,32,65,83,32,37,115,0,80,82,73,77,65,82,89,32,75,69,89,0,65,85,84,79,77,65,84,73,67,32,80,65,82,84,73,65,76,32,67,79,86,69,82,73,78,71,32,73,78,68,69,88,0,65,85,84,79,77,65,84,73,67,32,67,79,86,69,82,73,78,71,32,73,78,68,69,88,0,67,79,86,69,82,73,78,71,32,73,78,68,69,88,32,37,115,0,73,78,68,69,88,32,37,115,0,32,85,83,73,78,71,32,0,61,0,62,63,32,65,78,68,32,114,111,119,105,100,60,0,62,0,60,0,32,85,83,73,78,71,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32,75,69,89,32,40,114,111,119,105,100,37,115,63,41,0,32,86,73,82,84,85,65,76,32,84,65,66,76,69,32,73,78,68,69,88,32,37,100,58,37,115,0,32,40,0,32,65,78,68,32,0,37,115,61,63,0,65,78,89,40,37,115,41,0,41,0,60,101,120,112,114,62,0,97,117,116,111,109,97,116,105,99,32,105,110,100,101,120,32,111,110,32,37,115,40,37,115,41,0,97,117,116,111,45,105,110,100,101,120,0,110,111,32,113,117,101,114,121,32,115,111,108,117,116,105,111,110,0,10,10,9,9,8,8,7,7,7,6,6,6,5,5,5,4,4,4,4,3,3,3,3,3,3,2,2,2,2,2,2,2,37,115,46,120,66,101,115,116,73,110,100,101,120,40,41,32,109,97,108,102,117,110,99,116,105,111,110,0,116,97,98,108,101,32,37,115,58,32,120,66,101,115,116,73,110,100,101,120,32,114,101,116,117,114,110,101,100,32,97,110,32,105,110,118,97,108,105,100,32,112,108,97,110,0,83,81,66,73,78,65,82,89,0,114,101,103,101,120,112,0,116,111,111,32,109,97,110,121,32,97,114,103,117,109,101,110,116,115,32,111,110,32,37,115,40,41,32,45,32,109,97,120,32,37,100,0,45,45,32,84,82,73,71,71,69,82,32,37,115,0,0,0,0,1,1,1,1,1,0,16,0,1,0,1,1,2,1,2,3,18,8,0,16,16,16,16,0,16,16,0,0,16,16,0,0,0,0,2,3,2,2,0,0,1,1,3,3,0,0,0,16,16,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,9,9,9,38,38,16,16,0,3,3,11,11,11,11,11,11,0,38,38,38,38,38,38,38,38,38,38,0,18,16,0,0,0,0,0,16,0,1,1,1,1,4,4,0,0,16,1,1,1,1,16,0,0,16,16,0,0,0,0,0,0,6,35,11,1,16,16,0,1,4,3,26,3,3,3,0,0,0,1,0,0,0,0,0,0,0,1,0,16,16,1,0,0,0,0,1,2,3,4,6,8,8,0,0,0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,49,49,50,50,51,51,52,52,53,53,54,54,55,55,56,56,57,57,70,79,82,69,73,71,78,32,75,69,89,32,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,0,37,115,46,114,111,119,105,100,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,109,111,100,105,102,105,101,100,0,99,97,110,110,111,116,32,109,111,100,105,102,121,32,37,115,32,98,101,99,97,117,115,101,32,105,116,32,105,115,32,97,32,118,105,101,119,0,114,111,119,115,32,117,112,100,97,116,101,100,0,116,111,111,32,109,97,110,121,32,99,111,108,117,109,110,115,32,105,110,32,37,115,0,114,111,119,115,32,100,101,108,101,116,101,100,0,0,7,4,6,4,40,10,5,32,14,5,48,19,4,56,23,5,1,28,5,3,110,97,116,117,114,97,108,101,102,116,111,117,116,101,114,105,103,104,116,102,117,108,108,105,110,110,101,114,99,114,111,115,115,0,32,0,117,110,107,110,111,119,110,32,111,114,32,117,110,115,117,112,112,111,114,116,101,100,32,106,111,105,110,32,116,121,112,101,58,32,37,84,32,37,84,37,115,37,84,0,82,73,71,72,84,32,97,110,100,32,70,85,76,76,32,79,85,84,69,82,32,74,79,73,78,115,32,97,114,101,32,110,111,116,32,99,117,114,114,101,110,116,108,121,32,115,117,112,112,111,114,116,101,100,0,79,78,0,85,83,73,78,71,0,97,32,74,79,73,78,32,99,108,97,117,115,101,32,105,115,32,114,101,113,117,105,114,101,100,32,98,101,102,111,114,101,32,37,115,0,116,111,111,32,109,97,110,121,32,116,101,114,109,115,32,105,110,32,99,111,109,112,111,117,110,100,32,83,69,76,69,67,84,0,101,120,112,101,99,116,101,100,32,37,100,32,99,111,108,117,109,110,115,32,102,111,114,32,39,37,115,39,32,98,117,116,32,103,111,116,32,37,100,0,68,73,83,84,73,78,67,84,0,71,82,79,85,80,32,66,89,0,82,73,71,72,84,32,80,65,82,84,32,79,70,32,79,82,68,69,82,32,66,89,0,79,82,68,69,82,32,66,89,0,99,111,108,117,109,110,37,100,0,109,105,110,0,109,97,120,0,32,85,83,73,78,71,32,67,79,86,69,82,73,78,71,32,73,78,68,69,88,32,0,83,67,65,78,32,84,65,66,76,69,32,37,115,37,115,37,115,0,68,73,83,84,73,78,67,84,32,97,103,103,114,101,103,97,116,101,115,32,109,117,115,116,32,104,97,118,101,32,101,120,97,99,116,108,121,32,111,110,101,32,97,114,103,117,109,101,110,116,0,85,83,69,32,84,69,77,80,32,66,45,84,82,69,69,32,70,79,82,32,37,115,0,79,82,68,69,82,32,66,89,32,99,108,97,117,115,101,32,115,104,111,117,108,100,32,99,111,109,101,32,97,102,116,101,114,32,37,115,32,110,111,116,32,98,101,102,111,114,101,0,76,73,77,73,84,32,99,108,97,117,115,101,32,115,104,111,117,108,100,32,99,111,109,101,32,97,102,116,101,114,32,37,115,32,110,111,116,32,98,101,102,111,114,101,0,85,83,73,78,71,32,84,69,77,80,32,66,45,84,82,69,69,32,0,67,79,77,80,79,85,78,68,32,83,85,66,81,85,69,82,73,69,83,32,37,100,32,65,78,68,32,37,100,32,37,115,40,37,115,41,0,114,101,99,117,114,115,105,118,101,32,97,103,103,114,101,103,97,116,101,32,113,117,101,114,105,101,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,111,110,108,121,32,97,32,115,105,110,103,108,101,32,114,101,115,117,108,116,32,97,108,108,111,119,101,100,32,102,111,114,32,97,32,83,69,76,69,67,84,32,116,104,97,116,32,105,115,32,112,97,114,116,32,111,102,32,97,110,32,101,120,112,114,101,115,115,105,111,110,0,112,97,114,97,109,101,116,101,114,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,118,105,101,119,115,0,118,105,101,119,0,115,113,108,105,116,101,95,115,116,97,116,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,100,114,111,112,112,101,100,0,117,115,101,32,68,82,79,80,32,84,65,66,76,69,32,116,111,32,100,101,108,101,116,101,32,116,97,98,108,101,32,37,115,0,117,115,101,32,68,82,79,80,32,86,73,69,87,32,116,111,32,100,101,108,101,116,101,32,118,105,101,119,32,37,115,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,32,87,72,69,82,69,32,110,97,109,101,61,37,81,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,116,98,108,95,110,97,109,101,61,37,81,32,97,110,100,32,116,121,112,101,33,61,39,116,114,105,103,103,101,114,39,0,102,111,114,101,105,103,110,32,107,101,121,32,111,110,32,37,115,32,115,104,111,117,108,100,32,114,101,102,101,114,101,110,99,101,32,111,110,108,121,32,111,110,101,32,99,111,108,117,109,110,32,111,102,32,116,97,98,108,101,32,37,84,0,110,117,109,98,101,114,32,111,102,32,99,111,108,117,109,110,115,32,105,110,32,102,111,114,101,105,103,110,32,107,101,121,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,116,104,101,32,110,117,109,98,101,114,32,111,102,32,99,111,108,117,109,110,115,32,105,110,32,116,104,101,32,114,101,102,101,114,101,110,99,101,100,32,116,97,98,108,101,0,117,110,107,110,111,119,110,32,99,111,108,117,109,110,32,34,37,115,34,32,105,110,32,102,111,114,101,105,103,110,32,107,101,121,32,100,101,102,105,110,105,116,105,111,110,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,97,32,84,69,77,80,32,105,110,100,101,120,32,111,110,32,110,111,110,45,84,69,77,80,32,116,97,98,108,101,32,34,37,115,34,0,97,108,116,101,114,116,97,98,95,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,105,110,100,101,120,101,100,0,118,105,101,119,115,32,109,97,121,32,110,111,116,32,98,101,32,105,110,100,101,120,101,100,0,118,105,114,116,117,97,108,32,116,97,98,108,101,115,32,109,97,121,32,110,111,116,32,98,101,32,105,110,100,101,120,101,100,0,116,104,101,114,101,32,105,115,32,97,108,114,101,97,100,121,32,97,32,116,97,98,108,101,32,110,97,109,101,100,32,37,115,0,105,110,100,101,120,32,37,115,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,115,113,108,105,116,101,95,97,117,116,111,105,110,100,101,120,95,37,115,95,37,100,0,101,120,112,114,101,115,115,105,111,110,115,32,112,114,111,104,105,98,105,116,101,100,32,105,110,32,80,82,73,77,65,82,89,32,75,69,89,32,97,110,100,32,85,78,73,81,85,69,32,99,111,110,115,116,114,97,105,110,116,115,0,99,111,110,102,108,105,99,116,105,110,103,32,79,78,32,67,79,78,70,76,73,67,84,32,99,108,97,117,115,101,115,32,115,112,101,99,105,102,105,101,100,0,32,85,78,73,81,85,69,0,67,82,69,65,84,69,37,115,32,73,78,68,69,88,32,37,46,42,115,0,73,78,83,69,82,84,32,73,78,84,79,32,37,81,46,37,115,32,86,65,76,85,69,83,40,39,105,110,100,101,120,39,44,37,81,44,37,81,44,35,37,100,44,37,81,41,59,0,110,97,109,101,61,39,37,113,39,32,65,78,68,32,116,121,112,101,61,39,105,110,100,101,120,39,0,116,97,98,108,101,32,34,37,115,34,32,104,97,115,32,109,111,114,101,32,116,104,97,110,32,111,110,101,32,112,114,105,109,97,114,121,32,107,101,121,0,65,85,84,79,73,78,67,82,69,77,69,78,84,32,105,115,32,111,110,108,121,32,97,108,108,111,119,101,100,32,111,110,32,97,110,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32,75,69,89,0,100,101,102,97,117,108,116,32,118,97,108,117,101,32,111,102,32,99,111,108,117,109,110,32,91,37,115,93,32,105,115,32,110,111,116,32,99,111,110,115,116,97,110,116,0,116,111,111,32,109,97,110,121,32,99,111,108,117,109,110,115,32,111,110,32,37,115,0,100,117,112,108,105,99,97,116,101,32,99,111,108,117,109,110,32,110,97,109,101,58,32,37,115,0,65,85,84,79,73,78,67,82,69,77,69,78,84,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,87,73,84,72,79,85,84,32,82,79,87,73,68,32,116,97,98,108,101,115,0,80,82,73,77,65,82,89,32,75,69,89,32,109,105,115,115,105,110,103,32,111,110,32,116,97,98,108,101,32,37,115,0,84,65,66,76,69,0,86,73,69,87,0,67,82,69,65,84,69,32,37,115,32,37,46,42,115,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,116,121,112,101,61,39,37,115,39,44,32,110,97,109,101,61,37,81,44,32,116,98,108,95,110,97,109,101,61,37,81,44,32,114,111,111,116,112,97,103,101,61,35,37,100,44,32,115,113,108,61,37,81,32,87,72,69,82,69,32,114,111,119,105,100,61,35,37,100,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,40,110,97,109,101,44,115,101,113,41,0,116,98,108,95,110,97,109,101,61,39,37,113,39,32,65,78,68,32,116,121,112,101,33,61,39,116,114,105,103,103,101,114,39,0,44,0,10,32,32,0,44,10,32,32,0,10,41,0,67,82,69,65,84,69,32,84,65,66,76,69,32,0,32,84,69,88,84,0,32,78,85,77,0,32,73,78,84,0,32,82,69,65,76,0,116,101,109,112,111,114,97,114,121,32,116,97,98,108,101,32,110,97,109,101,32,109,117,115,116,32,98,101,32,117,110,113,117,97,108,105,102,105,101,100,0,2,4,8,6,116,97,98,108,101,32,37,84,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,116,104,101,114,101,32,105,115,32,97,108,114,101,97,100,121,32,97,110,32,105,110,100,101,120,32,110,97,109,101,100,32,37,115,0,6,0,0,0,0,0,66,69,71,73,78,0,82,69,76,69,65,83,69,0,82,79,76,76,66,65,67,75,0,67,79,77,77,73,84,0,25,0,0,0,108,0,9,0,47,0,0,0,78,0,7,0,103,0,0,0,47,0,1,0,13,0,9,0,7,0,2,0,22,0,0,0,61,0,0,0,112,97,114,115,101,114,32,115,116,97,99,107,32,111,118,101,114,102,108,111,119,0,19,144,145,146,147,24,1,2,27,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,91,92,93,94,95,19,50,51,80,81,82,83,27,85,86,87,88,89,90,91,92,93,94,95,137,177,139,71,72,73,74,75,76,77,78,79,80,81,82,83,95,85,86,87,88,89,90,91,92,93,94,95,19,97,85,86,87,88,89,90,91,92,93,94,95,152,33,212,173,27,28,223,224,225,152,42,181,152,223,224,225,95,97,50,51,99,100,101,102,103,104,105,27,28,59,223,224,225,112,174,175,66,94,95,71,72,73,74,75,76,77,78,79,80,81,82,83,195,85,86,87,88,89,90,91,92,93,94,95,19,197,89,90,220,209,210,26,119,120,97,98,208,100,108,109,110,152,157,152,107,152,109,89,90,91,92,93,94,95,163,50,51,97,98,99,55,66,102,103,104,174,175,174,175,132,133,192,193,113,66,19,71,72,73,74,75,76,77,78,79,80,81,82,83,198,85,86,87,88,89,90,91,92,93,94,95,152,209,210,148,149,50,51,100,53,154,59,156,174,229,27,28,232,163,163,22,192,193,174,175,27,28,71,72,73,74,75,76,77,78,79,80,81,82,83,251,85,86,87,88,89,90,91,92,93,94,95,19,198,198,152,152,24,209,210,108,109,110,196,197,27,28,69,164,165,152,119,120,27,28,208,99,27,28,102,103,104,152,50,51,97,98,89,90,185,113,187,22,177,174,97,58,27,28,101,115,245,117,118,71,72,73,74,75,76,77,78,79,80,81,82,83,11,85,86,87,88,89,90,91,92,93,94,95,19,132,133,134,23,152,97,98,91,174,223,224,225,239,97,98,187,22,97,98,27,28,27,28,152,223,224,225,239,152,163,50,51,170,171,172,59,160,97,98,239,164,165,66,242,124,174,175,195,22,23,69,71,72,73,74,75,76,77,78,79,80,81,82,83,198,85,86,87,88,89,90,91,92,93,94,95,19,12,97,21,23,152,101,152,108,109,110,221,152,97,98,97,98,152,29,243,70,226,23,233,26,26,152,152,238,174,175,50,51,22,45,24,47,132,133,134,124,22,23,188,163,26,152,65,59,174,175,163,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,19,19,198,152,23,152,152,209,103,198,174,175,70,152,50,51,219,213,214,152,98,152,171,172,188,171,172,174,175,248,249,50,51,51,251,174,175,220,74,75,152,188,152,174,175,140,124,26,163,188,16,130,71,72,73,74,75,76,77,78,79,80,81,82,83,101,85,86,87,88,89,90,91,92,93,94,95,19,209,196,197,23,231,198,12,231,219,37,22,107,24,208,116,27,112,201,62,121,64,152,152,29,52,66,221,211,221,219,50,51,60,89,90,152,22,23,183,45,26,47,22,174,175,238,152,164,165,106,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,132,133,119,120,163,50,51,111,70,97,174,175,181,182,170,171,172,0,1,2,140,190,108,109,110,51,71,72,73,74,75,76,77,78,79,80,81,82,83,198,85,86,87,88,89,90,91,92,93,94,95,19,152,152,152,22,166,152,168,169,27,19,152,26,19,152,122,152,24,152,28,27,152,28,174,175,174,175,152,174,175,107,50,51,174,175,22,174,175,174,175,174,175,138,174,175,7,8,9,16,174,175,152,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,19,152,97,152,31,24,152,98,35,101,174,175,152,97,152,79,152,62,152,64,112,152,49,174,175,174,175,152,174,175,152,50,51,124,174,175,174,175,174,175,174,175,138,174,175,22,23,152,152,174,175,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,108,109,110,152,50,51,146,147,23,174,175,26,195,195,152,70,152,168,169,152,26,174,175,152,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,246,247,213,214,50,51,195,152,195,174,175,195,100,101,152,195,152,152,7,8,152,174,175,163,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,27,152,189,189,50,51,195,198,152,174,175,33,132,133,152,123,163,163,163,152,42,174,175,152,19,152,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,198,198,198,23,50,51,26,152,23,174,175,26,23,23,23,26,26,26,152,97,23,174,175,26,132,133,152,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,19,20,23,22,23,26,152,152,27,28,174,175,152,19,20,27,22,183,183,38,152,27,28,152,23,152,152,26,174,175,152,152,38,152,23,152,27,26,57,152,215,163,152,152,152,174,175,66,174,175,69,57,174,175,152,174,175,174,175,212,66,174,175,69,174,175,174,175,152,152,89,90,152,193,152,152,198,96,97,98,91,152,101,89,90,97,152,209,210,152,96,97,98,235,152,101,174,175,152,19,20,152,22,174,175,116,97,27,28,152,121,174,175,132,133,134,135,136,38,152,174,175,152,174,175,152,132,133,134,135,136,234,152,212,150,199,212,57,212,240,240,203,178,200,216,186,177,19,20,69,22,203,177,182,177,27,28,202,200,228,216,216,155,39,122,159,38,159,41,89,90,91,159,241,241,22,96,97,98,71,130,101,222,191,18,57,203,194,159,194,194,194,18,158,244,191,222,69,159,158,137,19,20,203,22,191,203,46,236,27,28,159,132,133,134,135,136,89,90,237,38,159,158,22,96,97,98,179,159,101,158,48,159,158,179,176,107,176,184,57,106,176,184,176,125,179,178,176,218,107,176,69,176,217,159,218,218,217,159,137,132,133,134,135,136,218,217,179,217,179,227,89,90,95,230,230,129,207,96,97,98,126,128,101,5,206,205,127,204,10,11,12,13,14,203,25,17,162,26,161,13,153,153,6,247,180,250,151,151,151,151,32,180,34,132,133,134,135,136,167,4,3,43,22,15,68,142,250,16,23,23,120,111,131,20,56,123,125,16,1,123,131,63,79,79,66,67,111,28,36,122,1,5,22,107,140,54,54,26,61,107,44,20,24,19,105,112,23,22,40,22,22,53,22,53,22,53,23,23,23,22,22,30,116,23,122,26,23,23,22,28,11,124,114,26,26,23,23,23,36,24,23,36,26,22,22,36,23,122,23,22,26,22,24,23,23,23,22,122,23,141,122,122,15,1,0,0,27,27,27,27,0,27,27,27,0,27,27,27,27,0,0,0,27,0,0,27,0,0,0,27,0,0,0,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,7,7,27,7,7,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,7,15,8,5,4,22,24,8,17,18,21,20,23,11,26,16,3,3,3,3,3,3,3,3,3,3,5,19,12,14,13,6,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,9,27,27,27,1,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,27,10,27,25,27,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,105,110,118,97,108,105,100,0,65,80,73,32,99,97,108,108,32,119,105,116,104,32,37,115,32,100,97,116,97,98,97,115,101,32,99,111,110,110,101,99,116,105,111,110,32,112,111,105,110,116,101,114,0,100,97,116,97,98,97,115,101,32,115,99,104,101,109,97,32,105,115,32,108,111,99,107,101,100,58,32,37,115,0,115,116,97,116,101,109,101,110,116,32,116,111,111,32,108,111,110,103,0,97,100,100,114,0,111,112,99,111,100,101,0,112,49,0,112,50,0,112,51,0,112,52,0,112,53,0,99,111,109,109,101,110,116,0,115,101,108,101,99,116,105,100,0,100,101,116,97,105,108,0,78,85,76,76,0,117,110,111,112,101,110,101,100,0,114,101,97,108,0,105,110,116,101,103,101,114,0,110,117,108,108,0,99,97,110,110,111,116,32,111,112,101,110,32,118,97,108,117,101,32,111,102,32,116,121,112,101,32,37,115,0,110,111,32,115,117,99,104,32,114,111,119,105,100,58,32,37,108,108,100,0,110,111,32,115,117,99,104,32,118,105,101,119,0,110,111,32,115,117,99,104,32,116,97,98,108,101,0,98,105,110,100,32,111,110,32,97,32,98,117,115,121,32,112,114,101,112,97,114,101,100,32,115,116,97,116,101,109,101,110,116,58,32,91,37,115,93,0,97,98,111,114,116,32,97,116,32,37,100,32,105,110,32,91,37,115,93,58,32,37,115,0,37,115,32,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,58,32,37,115,0,37,115,32,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,0,0,0,0,0,1,2,0,2,2,0,1,2,1,1,1,2,1,2,0,0,0,0,0,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,115,97,118,101,112,111,105,110,116,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,110,111,32,115,117,99,104,32,115,97,118,101,112,111,105,110,116,58,32,37,115,0,99,97,110,110,111,116,32,114,101,108,101,97,115,101,32,115,97,118,101,112,111,105,110,116,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,99,97,110,110,111,116,32,99,111,109,109,105,116,32,116,114,97,110,115,97,99,116,105,111,110,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,99,97,110,110,111,116,32,114,111,108,108,98,97,99,107,32,45,32,110,111,32,116,114,97,110,115,97,99,116,105,111,110,32,105,115,32,97,99,116,105,118,101,0,99,97,110,110,111,116,32,99,111,109,109,105,116,32,45,32,110,111,32,116,114,97,110,115,97,99,116,105,111,110,32,105,115,32,97,99,116,105,118,101,0,99,97,110,110,111,116,32,115,116,97,114,116,32,97,32,116,114,97,110,115,97,99,116,105,111,110,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,100,97,116,97,98,97,115,101,32,115,99,104,101,109,97,32,104,97,115,32,99,104,97,110,103,101,100,0,83,69,76,69,67,84,32,110,97,109,101,44,32,114,111,111,116,112,97,103,101,44,32,115,113,108,32,70,82,79,77,32,39,37,113,39,46,37,115,32,87,72,69,82,69,32,37,115,32,79,82,68,69,82,32,66,89,32,114,111,119,105,100,0,116,111,111,32,109,97,110,121,32,108,101,118,101,108,115,32,111,102,32,116,114,105,103,103,101,114,32,114,101,99,117,114,115,105,111,110,0,105,110,116,111,0,111,117,116,32,111,102,0,99,97,110,110,111,116,32,99,104,97,110,103,101,32,37,115,32,119,97,108,32,109,111,100,101,32,102,114,111,109,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,100,97,116,97,98,97,115,101,32,116,97,98,108,101,32,105,115,32,108,111,99,107,101,100,58,32,37,115,0,115,116,97,116,101,109,101,110,116,32,97,98,111,114,116,115,32,97,116,32,37,100,58,32,91,37,115,93,32,37,115,0,45,45,32,0,39,37,46,42,113,39,0,122,101,114,111,98,108,111,98,40,37,100,41,0,120,39,0,37,48,50,120,0,39,0,99,97,110,110,111,116],"i8",4,l.aa+31102); -z([32,86,65,67,85,85,77,32,102,114,111,109,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,99,97,110,110,111,116,32,86,65,67,85,85,77,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,65,84,84,65,67,72,32,39,58,109,101,109,111,114,121,58,39,32,65,83,32,118,97,99,117,117,109,95,100,98,59,0,65,84,84,65,67,72,32,39,39,32,65,83,32,118,97,99,117,117,109,95,100,98,59,0,80,82,65,71,77,65,32,118,97,99,117,117,109,95,100,98,46,115,121,110,99,104,114,111,110,111,117,115,61,79,70,70,0,66,69,71,73,78,59,0,83,69,76,69,67,84,32,39,67,82,69,65,84,69,32,84,65,66,76,69,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,49,52,41,32,32,32,70,82,79,77,32,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,116,121,112,101,61,39,116,97,98,108,101,39,32,65,78,68,32,110,97,109,101,33,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,32,32,32,65,78,68,32,99,111,97,108,101,115,99,101,40,114,111,111,116,112,97,103,101,44,49,41,62,48,0,83,69,76,69,67,84,32,39,67,82,69,65,84,69,32,73,78,68,69,88,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,49,52,41,32,32,70,82,79,77,32,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,115,113,108,32,76,73,75,69,32,39,67,82,69,65,84,69,32,73,78,68,69,88,32,37,39,32,0,83,69,76,69,67,84,32,39,67,82,69,65,84,69,32,85,78,73,81,85,69,32,73,78,68,69,88,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,50,49,41,32,32,32,70,82,79,77,32,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,115,113,108,32,76,73,75,69,32,39,67,82,69,65,84,69,32,85,78,73,81,85,69,32,73,78,68,69,88,32,37,39,0,83,69,76,69,67,84,32,39,73,78,83,69,82,84,32,73,78,84,79,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,32,83,69,76,69,67,84,32,42,32,70,82,79,77,32,109,97,105,110,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,59,39,70,82,79,77,32,109,97,105,110,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,116,121,112,101,32,61,32,39,116,97,98,108,101,39,32,65,78,68,32,110,97,109,101,33,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,32,32,32,65,78,68,32,99,111,97,108,101,115,99,101,40,114,111,111,116,112,97,103,101,44,49,41,62,48,0,83,69,76,69,67,84,32,39,68,69,76,69,84,69,32,70,82,79,77,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,59,39,32,70,82,79,77,32,118,97,99,117,117,109,95,100,98,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,110,97,109,101,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,32,0,83,69,76,69,67,84,32,39,73,78,83,69,82,84,32,73,78,84,79,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,32,83,69,76,69,67,84,32,42,32,70,82,79,77,32,109,97,105,110,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,59,39,32,70,82,79,77,32,118,97,99,117,117,109,95,100,98,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,110,97,109,101,61,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,59,0,73,78,83,69,82,84,32,73,78,84,79,32,118,97,99,117,117,109,95,100,98,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,32,32,83,69,76,69,67,84,32,116,121,112,101,44,32,110,97,109,101,44,32,116,98,108,95,110,97,109,101,44,32,114,111,111,116,112,97,103,101,44,32,115,113,108,32,32,32,32,70,82,79,77,32,109,97,105,110,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,32,32,87,72,69,82,69,32,116,121,112,101,61,39,118,105,101,119,39,32,79,82,32,116,121,112,101,61,39,116,114,105,103,103,101,114,39,32,32,32,32,32,32,79,82,32,40,116,121,112,101,61,39,116,97,98,108,101,39,32,65,78,68,32,114,111,111,116,112,97,103,101,61,48,41,0,1,1,3,0,5,0,6,0,8,0,77,97,105,110,32,102,114,101,101,108,105,115,116,58,32,0,80,97,103,101,32,37,100,32,105,115,32,110,101,118,101,114,32,117,115,101,100,0,80,111,105,110,116,101,114,32,109,97,112,32,112,97,103,101,32,37,100,32,105,115,32,114,101,102,101,114,101,110,99,101,100,0,10,0,80,97,103,101,32,37,100,58,32,0,117,110,97,98,108,101,32,116,111,32,103,101,116,32,116,104,101,32,112,97,103,101,46,32,101,114,114,111,114,32,99,111,100,101,61,37,100,0,98,116,114,101,101,73,110,105,116,80,97,103,101,40,41,32,114,101,116,117,114,110,115,32,101,114,114,111,114,32,99,111,100,101,32,37,100,0,79,110,32,116,114,101,101,32,112,97,103,101,32,37,100,32,99,101,108,108,32,37,100,58,32,0,79,110,32,112,97,103,101,32,37,100,32,97,116,32,114,105,103,104,116,32,99,104,105,108,100,58,32,0,79,102,102,115,101,116,32,37,100,32,111,117,116,32,111,102,32,114,97,110,103,101,32,37,100,46,46,37,100,0,69,120,116,101,110,100,115,32,111,102,102,32,101,110,100,32,111,102,32,112,97,103,101,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,0,67,104,105,108,100,32,112,97,103,101,32,100,101,112,116,104,32,100,105,102,102,101,114,115,0,77,117,108,116,105,112,108,101,32,117,115,101,115,32,102,111,114,32,98,121,116,101,32,37,117,32,111,102,32,112,97,103,101,32,37,100,0,70,114,97,103,109,101,110,116,97,116,105,111,110,32,111,102,32,37,100,32,98,121,116,101,115,32,114,101,112,111,114,116,101,100,32,97,115,32,37,100,32,111,110,32,112,97,103,101,32,37,100,0,105,110,118,97,108,105,100,32,112,97,103,101,32,110,117,109,98,101,114,32,37,100,0,50,110,100,32,114,101,102,101,114,101,110,99,101,32,116,111,32,112,97,103,101,32,37,100,0,70,97,105,108,101,100,32,116,111,32,114,101,97,100,32,112,116,114,109,97,112,32,107,101,121,61,37,100,0,66,97,100,32,112,116,114,32,109,97,112,32,101,110,116,114,121,32,107,101,121,61,37,100,32,101,120,112,101,99,116,101,100,61,40,37,100,44,37,100,41,32,103,111,116,61,40,37,100,44,37,100,41,0,37,100,32,111,102,32,37,100,32,112,97,103,101,115,32,109,105,115,115,105,110,103,32,102,114,111,109,32,111,118,101,114,102,108,111,119,32,108,105,115,116,32,115,116,97,114,116,105,110,103,32,97,116,32,37,100,0,102,97,105,108,101,100,32,116,111,32,103,101,116,32,112,97,103,101,32,37,100,0,102,114,101,101,108,105,115,116,32,108,101,97,102,32,99,111,117,110,116,32,116,111,111,32,98,105,103,32,111,110,32,112,97,103,101,32,37,100,0,102,114,101,101,45,112,97,103,101,32,99,111,117,110,116,32,105,110,32,104,101,97,100,101,114,32,105,115,32,116,111,111,32,115,109,97,108,108,0,0,1,2,3,4,6,8,83,81,76,105,116,101,32,102,111,114,109,97,116,32,51,0,37,115,45,109,106,88,88,88,88,88,88,57,88,88,122,0,77,74,32,100,101,108,101,116,101,58,32,37,115,0,77,74,32,99,111,108,108,105,100,101,58,32,37,115,0,45,109,106,37,48,54,88,57,37,48,50,88,0,78,79,84,32,78,85,76,76,0,85,78,73,81,85,69,0,67,72,69,67,75,0,70,79,82,69,73,71,78,32,75,69,89,0,37,46,50,120,0,107,40,37,100,0,66,0,44,37,115,37,115,0,40,37,46,50,48,115,41,0,37,115,40,37,100,41,0,37,100,0,37,46,49,54,103,0,40,98,108,111,98,41,0,118,116,97,98,58,37,112,0,44,37,100,0,93,0,112,114,111,103,114,97,109,0,83,97,118,101,112,111,105,110,116,0,65,117,116,111,67,111,109,109,105,116,0,84,114,97,110,115,97,99,116,105,111,110,0,83,111,114,116,101,114,78,101,120,116,0,80,114,101,118,73,102,79,112,101,110,0,78,101,120,116,73,102,79,112,101,110,0,80,114,101,118,0,78,101,120,116,0,67,104,101,99,107,112,111,105,110,116,0,74,111,117,114,110,97,108,77,111,100,101,0,86,97,99,117,117,109,0,86,70,105,108,116,101,114,0,86,85,112,100,97,116,101,0,71,111,116,111,0,71,111,115,117,98,0,82,101,116,117,114,110,0,73,110,105,116,67,111,114,111,117,116,105,110,101,0,69,110,100,67,111,114,111,117,116,105,110,101,0,89,105,101,108,100,0,78,111,116,0,72,97,108,116,73,102,78,117,108,108,0,72,97,108,116,0,73,110,116,101,103,101,114,0,73,110,116,54,52,0,83,116,114,105,110,103,0,78,117,108,108,0,83,111,102,116,78,117,108,108,0,66,108,111,98,0,86,97,114,105,97,98,108,101,0,77,111,118,101,0,67,111,112,121,0,83,67,111,112,121,0,73,110,116,67,111,112,121,0,82,101,115,117,108,116,82,111,119,0,67,111,108,108,83,101,113,0,70,117,110,99,116,105,111,110,48,0,70,117,110,99,116,105,111,110,0,65,100,100,73,109,109,0,77,117,115,116,66,101,73,110,116,0,82,101,97,108,65,102,102,105,110,105,116,121,0,67,97,115,116,0,80,101,114,109,117,116,97,116,105,111,110,0,67,111,109,112,97,114,101,0,74,117,109,112,0,79,110,99,101,0,73,102,0,73,102,78,111,116,0,67,111,108,117,109,110,0,65,102,102,105,110,105,116,121,0,77,97,107,101,82,101,99,111,114,100,0,67,111,117,110,116,0,82,101,97,100,67,111,111,107,105,101,0,83,101,116,67,111,111,107,105,101,0,82,101,111,112,101,110,73,100,120,0,79,112,101,110,82,101,97,100,0,79,112,101,110,87,114,105,116,101,0,79,112,101,110,65,117,116,111,105,110,100,101,120,0,79,112,101,110,69,112,104,101,109,101,114,97,108,0,83,111,114,116,101,114,79,112,101,110,0,83,101,113,117,101,110,99,101,84,101,115,116,0,79,112,101,110,80,115,101,117,100,111,0,67,108,111,115,101,0,67,111,108,117,109,110,115,85,115,101,100,0,83,101,101,107,76,84,0,83,101,101,107,76,69,0,83,101,101,107,71,69,0,83,101,101,107,71,84,0,78,111,67,111,110,102,108,105,99,116,0,78,111,116,70,111,117,110,100,0,70,111,117,110,100,0,78,111,116,69,120,105,115,116,115,0,79,114,0,65,110,100,0,83,101,113,117,101,110,99,101,0,78,101,119,82,111,119,105,100,0,73,110,115,101,114,116,0,73,115,78,117,108,108,0,78,111,116,78,117,108,108,0,78,101,0,69,113,0,71,116,0,76,101,0,76,116,0,71,101,0,73,110,115,101,114,116,73,110,116,0,66,105,116,65,110,100,0,66,105,116,79,114,0,83,104,105,102,116,76,101,102,116,0,83,104,105,102,116,82,105,103,104,116,0,65,100,100,0,83,117,98,116,114,97,99,116,0,77,117,108,116,105,112,108,121,0,68,105,118,105,100,101,0,82,101,109,97,105,110,100,101,114,0,67,111,110,99,97,116,0,68,101,108,101,116,101,0,66,105,116,78,111,116,0,83,116,114,105,110,103,56,0,82,101,115,101,116,67,111,117,110,116,0,83,111,114,116,101,114,67,111,109,112,97,114,101,0,83,111,114,116,101,114,68,97,116,97,0,82,111,119,75,101,121,0,82,111,119,68,97,116,97,0,82,111,119,105,100,0,78,117,108,108,82,111,119,0,76,97,115,116,0,83,111,114,116,101,114,83,111,114,116,0,83,111,114,116,0,82,101,119,105,110,100,0,83,111,114,116,101,114,73,110,115,101,114,116,0,73,100,120,73,110,115,101,114,116,0,73,100,120,68,101,108,101,116,101,0,83,101,101,107,0,73,100,120,82,111,119,105,100,0,73,100,120,76,69,0,73,100,120,71,84,0,73,100,120,76,84,0,73,100,120,71,69,0,68,101,115,116,114,111,121,0,67,108,101,97,114,0,82,101,115,101,116,83,111,114,116,101,114,0,67,114,101,97,116,101,73,110,100,101,120,0,67,114,101,97,116,101,84,97,98,108,101,0,80,97,114,115,101,83,99,104,101,109,97,0,76,111,97,100,65,110,97,108,121,115,105,115,0,68,114,111,112,84,97,98,108,101,0,68,114,111,112,73,110,100,101,120,0,68,114,111,112,84,114,105,103,103,101,114,0,73,110,116,101,103,114,105,116,121,67,107,0,82,111,119,83,101,116,65,100,100,0,82,111,119,83,101,116,82,101,97,100,0,82,111,119,83,101,116,84,101,115,116,0,80,114,111,103,114,97,109,0,82,101,97,108,0,80,97,114,97,109,0,70,107,67,111,117,110,116,101,114,0,70,107,73,102,90,101,114,111,0,77,101,109,77,97,120,0,73,102,80,111,115,0,79,102,102,115,101,116,76,105,109,105,116,0,73,102,78,111,116,90,101,114,111,0,68,101,99,114,74,117,109,112,90,101,114,111,0,74,117,109,112,90,101,114,111,73,110,99,114,0,65,103,103,83,116,101,112,48,0,65,103,103,83,116,101,112,0,65,103,103,70,105,110,97,108,0,73,110,99,114,86,97,99,117,117,109,0,69,120,112,105,114,101,0,84,97,98,108,101,76,111,99,107,0,86,66,101,103,105,110,0,86,67,114,101,97,116,101,0,86,68,101,115,116,114,111,121,0,86,79,112,101,110,0,86,67,111,108,117,109,110,0,86,78,101,120,116,0,86,82,101,110,97,109,101,0,80,97,103,101,99,111,117,110,116,0,77,97,120,80,103,99,110,116,0,73,110,105,116,0,67,117,114,115,111,114,72,105,110,116,0,78,111,111,112,0,69,120,112,108,97,105,110,0,65,80,73,32,99,97,108,108,101,100,32,119,105,116,104,32,78,85,76,76,32,112,114,101,112,97,114,101,100,32,115,116,97,116,101,109,101,110,116,0,117,110,107,110,111,119,110,32,101,114,114,111,114,0,97,98,111,114,116,32,100,117,101,32,116,111,32,82,79,76,76,66,65,67,75,0,110,111,116,32,97,110,32,101,114,114,111,114,0,83,81,76,32,108,111,103,105,99,32,101,114,114,111,114,32,111,114,32,109,105,115,115,105,110,103,32,100,97,116,97,98,97,115,101,0,97,99,99,101,115,115,32,112,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,99,97,108,108,98,97,99,107,32,114,101,113,117,101,115,116,101,100,32,113,117,101,114,121,32,97,98,111,114,116,0,100,97,116,97,98,97,115,101,32,105,115,32,108,111,99,107,101,100,0,100,97,116,97,98,97,115,101,32,116,97,98,108,101,32,105,115,32,108,111,99,107,101,100,0,97,116,116,101,109,112,116,32,116,111,32,119,114,105,116,101,32,97,32,114,101,97,100,111,110,108,121,32,100,97,116,97,98,97,115,101,0,105,110,116,101,114,114,117,112,116,101,100,0,100,105,115,107,32,73,47,79,32,101,114,114,111,114,0,100,97,116,97,98,97,115,101,32,100,105,115,107,32,105,109,97,103,101,32,105,115,32,109,97,108,102,111,114,109,101,100,0,117,110,107,110,111,119,110,32,111,112,101,114,97,116,105,111,110,0,100,97,116,97,98,97,115,101,32,111,114,32,100,105,115,107,32,105,115,32,102,117,108,108,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,100,97,116,97,98,97,115,101,32,102,105,108,101,0,108,111,99,107,105,110,103,32,112,114,111,116,111,99,111,108,0,116,97,98,108,101,32,99,111,110,116,97,105,110,115,32,110,111,32,100,97,116,97,0,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,0,100,97,116,97,116,121,112,101,32,109,105,115,109,97,116,99,104,0,108,105,98,114,97,114,121,32,114,111,117,116,105,110,101,32,99,97,108,108,101,100,32,111,117,116,32,111,102,32,115,101,113,117,101,110,99,101,0,108,97,114,103,101,32,102,105,108,101,32,115,117,112,112,111,114,116,32,105,115,32,100,105,115,97,98,108,101,100,0,97,117,116,104,111,114,105,122,97,116,105,111,110,32,100,101,110,105,101,100,0,97,117,120,105,108,105,97,114,121,32,100,97,116,97,98,97,115,101,32,102,111,114,109,97,116,32,101,114,114,111,114,0,98,105,110,100,32,111,114,32,99,111,108,117,109,110,32,105,110,100,101,120,32,111,117,116,32,111,102,32,114,97,110,103,101,0,102,105,108,101,32,105,115,32,101,110,99,114,121,112,116,101,100,32,111,114,32,105,115,32,110,111,116,32,97,32,100,97,116,97,98,97,115,101,0,65,80,73,32,99,97,108,108,101,100,32,119,105,116,104,32,102,105,110,97,108,105,122,101,100,32,112,114,101,112,97,114,101,100,32,115,116,97,116,101,109,101,110,116,0,64,32,32,0,117,110,105,120,0,117,110,105,120,45,110,111,110,101,0,117,110,105,120,45,100,111,116,102,105,108,101,0,117,110,105,120,45,101,120,99,108,0,99,108,111,115,101,0,111,115,95,117,110,105,120,46,99,58,37,100,58,32,40,37,100,41,32,37,115,40,37,115,41,32,45,32,37,115,0,111,112,101,110,0,103,101,116,99,119,100,0,115,116,97,116,0,102,115,116,97,116,0,102,116,114,117,110,99,97,116,101,0,102,99,110,116,108,0,114,101,97,100,0,112,114,101,97,100,0,112,114,101,97,100,54,52,0,119,114,105,116,101,0,112,119,114,105,116,101,0,112,119,114,105,116,101,54,52,0,102,99,104,109,111,100,0,102,97,108,108,111,99,97,116,101,0,117,110,108,105,110,107,0,111,112,101,110,68,105,114,101,99,116,111,114,121,0,109,107,100,105,114,0,114,109,100,105,114,0,102,99,104,111,119,110,0,103,101,116,101,117,105,100,0,109,109,97,112,0,109,117,110,109,97,112,0,109,114,101,109,97,112,0,103,101,116,112,97,103,101,115,105,122,101,0,114,101,97,100,108,105,110,107,0,108,115,116,97,116,0,97,116,116,101,109,112,116,32,116,111,32,111,112,101,110,32,34,37,115,34,32,97,115,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,37,100,0,47,100,101,118,47,110,117,108,108,0,37,115,47,101,116,105,108,113,115,95,37,108,108,120,37,99,0,83,81,76,73,84,69,95,84,77,80,68,73,82,0,84,77,80,68,73,82,0,47,118,97,114,47,116,109,112,0,47,117,115,114,47,116,109,112,0,47,116,109,112,0,46,0,102,117,108,108,95,102,115,121,110,99,0,47,100,101,118,47,117,114,97,110,100,111,109,0,102,115,121,110,99,0,112,115,111,119,0,37,115,46,108,111,99,107,0,99,97,110,110,111,116,32,102,115,116,97,116,32,100,98,32,102,105,108,101,32,37,115,0,102,105,108,101,32,117,110,108,105,110,107,101,100,32,119,104,105,108,101,32,111,112,101,110,58,32,37,115,0,109,117,108,116,105,112,108,101,32,108,105,110,107,115,32,116,111,32,102,105,108,101,58,32,37,115,0,102,105,108,101,32,114,101,110,97,109,101,100,32,119,104,105,108,101,32,111,112,101,110,58,32,37,115,0,37,115,45,115,104,109,0,114,101,97,100,111,110,108,121,95,115,104,109,0,37,0,100,10,1,1,0,0,115,0,4,6,0,0,103,0,1,4,30,0,122,0,4,7,0,0,113,0,4,10,0,0,81,0,4,11,0,0,119,0,4,15,0,0,99,0,0,9,0,0,111,8,0,1,0,2,117,10,0,1,0,0,120,16,0,1,16,1,88,16,0,1,0,4,102,0,1,2,0,0,101,0,1,3,30,0,69,0,1,3,14,0,71,0,1,4,14,0,105,10,1,1,0,0,110,0,0,5,0,0,37,0,0,8,0,0,112,16,0,14,0,1,84,0,2,12,0,0,83,0,2,13,0,0,114,10,3,16,0,0,116,104,115,116,110,100,114,100,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,0,45,120,48,0,88,48,0,78,97,78,0,73,110,102,0,40,78,85,76,76,41,0,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,97,98,108,101,0,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,114,105,103,103,101,114,0,115,113,108,105,116,101,95,114,101,110,97,109,101,95,112,97,114,101,110,116,0,37,115,37,46,42,115,34,37,119,34,0,37,46,42,115,34,37,119,34,37,115,0,106,117,108,105,97,110,100,97,121,0,100,97,116,101,0,116,105,109,101,0,100,97,116,101,116,105,109,101,0,115,116,114,102,116,105,109,101,0,99,117,114,114,101,110,116,95,116,105,109,101,0,99,117,114,114,101,110,116,95,116,105,109,101,115,116,97,109,112,0,99,117,114,114,101,110,116,95,100,97,116,101,0,37,48,50,100,0,37,48,54,46,51,102,0,37,48,51,100,0,37,48,52,100,0,108,111,99,97,108,116,105,109,101,0,117,110,105,120,101,112,111,99,104,0,117,116,99,0,119,101,101,107,100,97,121,32,0,115,116,97,114,116,32,111,102,32,0,109,111,110,116,104,0,121,101,97,114,0,100,97,121,0,104,111,117,114,0,109,105,110,117,116,101,0,115,101,99,111,110,100,0,50,48,99,58,50,48,101,0,50,48,101,0,50,48,98,58,50,48,101,0,108,111,99,97,108,32,116,105,109,101,32,117,110,97,118,97,105,108,97,98,108,101,0,110,111,119,0,52,48,102,45,50,49,97,45,50,49,100,0,37,48,52,100,45,37,48,50,100,45,37,48,50,100,32,37,48,50,100,58,37,48,50,100,58,37,48,50,100,0,37,48,50,100,58,37,48,50,100,58,37,48,50,100,0,37,48,52,100,45,37,48,50,100,45,37,48,50,100,0,108,116,114,105,109,0,114,116,114,105,109,0,116,114,105,109,0,116,121,112,101,111,102,0,108,101,110,103,116,104,0,105,110,115,116,114,0,115,117,98,115,116,114,0,112,114,105,110,116,102,0,117,110,105,99,111,100,101,0,99,104,97,114,0,97,98,115,0,114,111,117,110,100,0,117,112,112,101,114,0,108,111,119,101,114,0,99,111,97,108,101,115,99,101,0,104,101,120,0,105,102,110,117,108,108,0,117,110,108,105,107,101,108,121,0,108,105,107,101,108,105,104,111,111,100,0,108,105,107,101,108,121,0,114,97,110,100,111,109,0,114,97,110,100,111,109,98,108,111,98,0,110,117,108,108,105,102,0,115,113,108,105,116,101,95,118,101,114,115,105,111,110,0,115,113,108,105,116,101,95,115,111,117,114,99,101,95,105,100,0,115,113,108,105,116,101,95,108,111,103,0,115,113,108,105,116,101,95,99,111,109,112,105,108,101,111,112,116,105,111,110,95,117,115,101,100,0,115,113,108,105,116,101,95,99,111,109,112,105,108,101,111,112,116,105,111,110,95,103,101,116,0,113,117,111,116,101,0,108,97,115,116,95,105,110,115,101,114,116,95,114,111,119,105,100,0,99,104,97,110,103,101,115,0,116,111,116,97,108,95,99,104,97,110,103,101,115,0,114,101,112,108,97,99,101,0,122,101,114,111,98,108,111,98,0,115,117,109,0,116,111,116,97,108,0,97,118,103,0,99,111,117,110,116,0,103,114,111,117,112,95,99,111,110,99,97,116,0,105,110,116,101,103,101,114,32,111,118,101,114,102,108,111,119,0,37,33,46,50,48,101,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,37,46,42,102,0,116,101,120,116,0,98,108,111,98,0,1,109,105,115,117,115,101,32,97,116,32,108,105,110,101,32,37,100,32,111,102,32,91,37,46,49,48,115,93,0,68,73,83,65,66,76,69,95,76,70,83,0,69,78,65,66,76,69,95,70,84,83,51,0,69,78,65,66,76,69,95,70,84,83,51,95,80,65,82,69,78,84,72,69,83,73,83,0,73,78,84,54,52,95,84,89,80,69,0,79,77,73,84,95,76,79,65,68,95,69,88,84,69,78,83,73,79,78,0,83,89,83,84,69,77,95,77,65,76,76,79,67,0,84,72,82,69,65,68,83,65,70,69,61,48,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,47,112,114,111,99,47,115,101,108,102,47,102,100,47],"i8",4,l.aa+41342);var yb=l.ta(z(12,"i8",2),8);assert(0==yb%8);f._i64Subtract=zb;f._i64Add=Ab;var D={H:1,J:2,Kd:3,Gc:4,O:5,Ka:6,$b:7,dd:8,L:9,nc:10,Ga:11,Ud:11,Ia:12,Y:13,zc:14,rd:15,Z:16,Ha:17,Vd:18,ha:19,ia:20,S:21,p:22,Zc:23,eb:24,$:25,Rd:26,Ac:27,nd:28,ja:29,Hd:30,Sc:31,Bd:32,wc:33,fb:34,jd:42,Dc:43,oc:44,Jc:45,Kc:46,Lc:47,Rc:48,Sd:49,bd:50,Ic:51,tc:35,ed:37,fc:52,ic:53,Wd:54,$c:55,jc:56,kc:57,uc:35,lc:59,pd:60,cd:61,Od:62,od:63,kd:64,ld:65,Gd:66,gd:67,cc:68,Ld:69,pc:70,Cd:71,Uc:72,xc:73,hc:74,wd:76,gc:77,Fd:78,Mc:79,Nc:80,Qc:81,Pc:82,Oc:83,qd:38,Ja:39,Vc:36,sa:40,xd:95,Ad:96,sc:104,ad:105,dc:97,Ed:91,ud:88,md:92,Id:108,rc:111,ac:98,qc:103,Yc:101,Wc:100,Pd:110,Bc:112,Cc:113,Fc:115,ec:114,vc:89,Tc:90,Dd:93,Jd:94,bc:99,Xc:102,Hc:106,sd:107,Qd:109,Td:87,yc:122,Md:116,vd:95,hd:123,Ec:84,yd:75,mc:125,td:131,zd:130,Nd:86},Bb={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 Cb(a){f.___errno_location&&(w[f.___errno_location()>>2]=a);return a}function Db(a,b){for(var c=0,d=a.length-1;0<=d;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c--;c)a.unshift("..");return a}function Eb(a){var b="/"===a.charAt(0),c="/"===a.substr(-1);(a=Db(a.split("/").filter(function(a){return!!a}),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b?"/":"")+a}function Fb(a){var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return".";b&&(b=b.substr(0,b.length-1));return a+b}function Gb(a){if("/"===a)return"/";var b=a.lastIndexOf("/");return-1===b?a:a.substr(b+1)}function Hb(){var a=Array.prototype.slice.call(arguments,0);return Eb(a.join("/"))}function E(a,b){return Eb(a+"/"+b)}function Ib(){for(var a="",b=!1,c=arguments.length-1;-1<=c&&!b;c--){ -b=0<=c?arguments[c]:"/";if("string"!==typeof b)throw new TypeError("Arguments to path.resolve must be strings");if(!b)return"";a=b+"/"+a;b="/"===b.charAt(0)}a=Db(a.split("/").filter(function(a){return!!a}),!b).join("/");return(b?"/":"")+a||"."}var Jb=[];function Kb(a,b){Jb[a]={input:[],output:[],W:b};Lb(a,Mb)}var Mb={open:function(a){var b=Jb[a.g.rdev];if(!b)throw new H(D.ha);a.tty=b;a.seekable=!1},close:function(a){a.tty.W.flush(a.tty)},flush:function(a){a.tty.W.flush(a.tty)},read:function(a,b,c,d){if(!a.tty||!a.tty.W.Ya)throw new H(D.Ka);for(var e=0,g=0;ga.e.length&&(a.e=J.wb(a),a.q=a.e.length);if(!a.e||a.e.subarray){var c=a.e?a.e.buffer.byteLength:0;c>=b||(b=Math.max(b,c*(1048576>c?2:1.125)|0),0!=c&&(b=Math.max(b,256)),c=a.e,a.e=new Uint8Array(b),0b)a.e.length=b;else for(;a.e.length=a.g.q)return 0;a=Math.min(a.g.q-e,d);assert(0<=a);if(8b)throw new H(D.p);return b},Ma:function(a,b,c){J.Sa(a.g,b+c);a.g.q=Math.max(a.g.q,b+c)},oa:function(a,b,c,d,e,g,h){if(32768!==(a.g.mode&61440))throw new H(D.ha);c=a.g.e;if(h&2||c.buffer!==b&&c.buffer!==b.buffer){if(0>1)}catch(c){if(!c.code)throw c;throw new H(D[c.code])}return b.mode},F:function(a){for(var b=[];a.parent!==a;)b.push(a.name),a=a.parent;b.push(a.D.Ba.root);b.reverse();return Hb.apply(null,b)},Ta:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},ub:function(a){a&=-32769;if(a in L.Ta)return L.Ta[a];throw new H(D.p)},k:{G:function(a){a=L.F(a);var b;try{b=fs.lstatSync(a)}catch(c){if(!c.code)throw c;throw new H(D[c.code])}L.na&&!b.P&&(b.P=4096);L.na&&!b.blocks&&(b.blocks=(b.size+b.P-1)/b.P|0);return{dev:b.dev,ino:b.ino,mode:b.mode,nlink:b.nlink,uid:b.uid,gid:b.gid,rdev:b.rdev,size:b.size,atime:b.atime,mtime:b.mtime,ctime:b.ctime,P:b.P,blocks:b.blocks}},B:function(a,b){var c=L.F(a);try{void 0!==b.mode&&(fs.chmodSync(c,b.mode),a.mode=b.mode),void 0!==b.size&&fs.truncateSync(c,b.size)}catch(d){if(!d.code)throw d;throw new H(D[d.code])}},lookup:function(a,b){var c=E(L.F(a),b),c=L.Wa(c);return L.createNode(a,b,c)},da:function(a,b,c,d){a=L.createNode(a,b,c,d);b=L.F(a);try{K(a.mode)?fs.mkdirSync(b,a.mode):fs.writeFileSync(b,"",{mode:a.mode})}catch(e){if(!e.code)throw e;throw new H(D[e.code])}return a},rename:function(a,b,c){a=L.F(a);b=E(L.F(b),c);try{fs.renameSync(a,b)}catch(d){if(!d.code)throw d;throw new H(D[d.code])}},unlink:function(a,b){var c=E(L.F(a),b);try{fs.unlinkSync(c)}catch(d){if(!d.code)throw d;throw new H(D[d.code])}},rmdir:function(a,b){var c=E(L.F(a),b);try{fs.rmdirSync(c)}catch(d){if(!d.code)throw d;throw new H(D[d.code])}},readdir:function(a){a=L.F(a);try{return fs.readdirSync(a)}catch(b){if(!b.code)throw b;throw new H(D[b.code])}},symlink:function(a,b,c){a=E(L.F(a),b);try{fs.symlinkSync(c,a)}catch(d){if(!d.code)throw d;throw new H(D[d.code])}},readlink:function(a){var b=L.F(a);try{return b=fs.readlinkSync(b),b=Tb.relative(Tb.resolve(a.D.Ba.root),b)}catch(c){if(!c.code)throw c;throw new H(D[c.code])}}},n:{open:function(a){var b=L.F(a.g);try{32768===(a.g.mode&61440)&&(a.ea=fs.openSync(b,L.ub(a.flags)))}catch(c){if(!c.code)throw c;throw new H(D[c.code])}},close:function(a){try{32768===(a.g.mode&61440)&&a.ea&&fs.closeSync(a.ea)}catch(b){if(!b.code)throw b;throw new H(D[b.code])}},read:function(a,b,c,d,e){if(0===d)return 0;var g=new Buffer(d),h;try{h=fs.readSync(a.ea,g,0,d,e)}catch(m){throw new H(D[m.code])}if(0b)throw new H(D.p);return b}}};z(1,"i32*",2);z(1,"i32*",2);z(1,"i32*",2);var Ub=null,Vb=[null],M=[],Wb=1,Xb=null,Yb=!0,N={},H=null,Rb={};function O(a,b){a=Ib("/",a);b=b||{};if(!a)return{path:"",g:null};var c={Ua:!0,Da:0},d;for(d in c)void 0===b[d]&&(b[d]=c[d]);if(8>>0)%Xb.length}function ac(a){var b=$b(a.parent.id,a.name);a.V=Xb[b];Xb[b]=a}function bc(a){var b=$b(a.parent.id,a.name);if(Xb[b]===a)Xb[b]=a.V;else for(b=Xb[b];b;){if(b.V===a){b.V=a.V;break}b=b.V}}function Sb(a,b){var c;if(c=(c=cc(a,"x"))?c:a.k.lookup?0:D.Y)throw new H(c,a);for(c=Xb[$b(a.id,b)];c;c=c.V){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.k.lookup(a,b)}function Qb(a,b,c,d){dc||(dc=function(a,b,c,d){a||(a=this);this.parent=a;this.D=a.D;this.U=null;this.id=Wb++;this.name=b;this.mode=c;this.k={};this.n={};this.rdev=d},dc.prototype={},Object.defineProperties(dc.prototype,{read:{get:function(){return 365===(this.mode&365)},set:function(a){a?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146===(this.mode&146)},set:function(a){a?this.mode|=146:this.mode&=-147}},Fb:{get:function(){return K(this.mode)}},Eb:{get:function(){return 8192===(this.mode&61440)}}}));a=new dc(a,b,c,d);ac(a);return a}function K(a){return 16384===(a&61440)}var ec={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};function cc(a,b){if(Yb)return 0;if(-1===b.indexOf("r")||a.mode&292){if(-1!==b.indexOf("w")&&!(a.mode&146)||-1!==b.indexOf("x")&&!(a.mode&73))return D.Y}else return D.Y;return 0}function fc(a,b){try{return Sb(a,b),D.Ha}catch(c){}return cc(a,"wx")}function gc(a,b,c){var d;try{d=Sb(a,b)}catch(e){return e.o}if(a=cc(a,"wx"))return a;if(c){if(!K(d.mode))return D.ia;if(d===d.parent||"/"===P(d))return D.Z}else if(K(d.mode))return D.S;return 0}function hc(a){var b;b=4096;for(a=a||0;a<=b;a++)if(!M[a])return a;throw new H(D.eb)}function ic(a,b){jc||(jc=function(){},jc.prototype={},Object.defineProperties(jc.prototype,{object:{get:function(){return this.g},set:function(a){this.g=a}},Fe:{get:function(){return 1!==(this.flags&2097155)}},Ge:{get:function(){return 0!==(this.flags&2097155)}},Ee:{get:function(){return this.flags&1024}}}));var c=new jc,d;for(d in a)c[d]=a[d];a=c;c=hc(b);a.fd=c;return M[c]=a}var Pb={open:function(a){a.n=Vb[a.g.rdev].n;a.n.open&&a.n.open(a)},N:function(){throw new H(D.ja)}};function Lb(a,b){Vb[a]={n:b}}function kc(a,b){var c="/"===b,d=!b,e;if(c&&Ub)throw new H(D.Z);if(!c&&!d){e=O(b,{Ua:!1});b=e.path;e=e.g;if(e.U)throw new H(D.Z);if(!K(e.mode))throw new H(D.ia)}var d={type:a,Ba:{},$a:b,Jb:[]},g=a.D(d);g.D=d;d.root=g;c?Ub=g:e&&(e.U=d,e.D&&e.D.Jb.push(d))}function mc(a,b,c){var d=O(a,{parent:!0}).g;a=Gb(a);if(!a||"."===a||".."===a)throw new H(D.p);var e=fc(d,a);if(e)throw new H(e);if(!d.k.da)throw new H(D.H);return d.k.da(d,a,b,c)}function nc(a,b){b=(void 0!==b?b:438)&4095;b|=32768;return mc(a,b,0)}function Q(a,b){b=(void 0!==b?b:511)&1023;b|=16384;return mc(a,b,0)}function oc(a,b,c){"undefined"===typeof c&&(c=b,b=438);return mc(a,b|8192,c)}function pc(a,b){if(!Ib(a))throw new H(D.J);var c=O(b,{parent:!0}).g;if(!c)throw new H(D.J);var d=Gb(b),e=fc(c,d);if(e)throw new H(e);if(!c.k.symlink)throw new H(D.H);return c.k.symlink(c,d,a)}function qc(a){var b=O(a,{parent:!0}).g,c=Gb(a),d=Sb(b,c),e=gc(b,c,!1);if(e)throw e===D.S&&(e=D.H),new H(e);if(!b.k.unlink)throw new H(D.H);if(d.U)throw new H(D.Z);try{N.willDeletePath&&N.willDeletePath(a)}catch(g){console.log("FS.trackingDelegate['willDeletePath']('"+a+"') threw an exception: "+g.message)}b.k.unlink(b,c);bc(d);try{if(N.onDeletePath)N.onDeletePath(a)}catch(h){console.log("FS.trackingDelegate['onDeletePath']('"+a+"') threw an exception: "+h.message)}}function Zb(a){a=O(a).g;if(!a)throw new H(D.J);if(!a.k.readlink)throw new H(D.p);return Ib(P(a.parent),a.k.readlink(a))}function rc(a,b){var c=O(a,{Q:!b}).g;if(!c)throw new H(D.J);if(!c.k.G)throw new H(D.H);return c.k.G(c)}function sc(a){return rc(a,!0)}function tc(a,b){var c;"string"===typeof a?c=O(a,{Q:!0}).g:c=a;if(!c.k.B)throw new H(D.H);c.k.B(c,{mode:b&4095|c.mode&-4096,timestamp:Date.now()})}function uc(a){var b;"string"===typeof a?b=O(a,{Q:!0}).g:b=a;if(!b.k.B)throw new H(D.H);b.k.B(b,{timestamp:Date.now()})}function vc(a,b){if(0>b)throw new H(D.p);var c;"string"===typeof a?c=O(a,{Q:!0}).g:c=a;if(!c.k.B)throw new H(D.H);if(K(c.mode))throw new H(D.S);if(32768!==(c.mode&61440))throw new H(D.p);var d=cc(c,"w");if(d)throw new H(d);c.k.B(c,{size:b,timestamp:Date.now()})}function wc(a,b,c,d){if(""===a)throw new H(D.J);if("string"===typeof b){var e=ec[b];if("undefined"===typeof e)throw Error("Unknown file open mode: "+b);b=e}c=b&64?("undefined"===typeof c?438:c)&4095|32768:0;var g;if("object"===typeof a)g=a;else{a=Eb(a);try{g=O(a,{Q:!(b&131072)}).g}catch(h){}}e=!1;if(b&64)if(g){if(b&128)throw new H(D.Ha)}else g=mc(a,c,0),e=!0;if(!g)throw new H(D.J);8192===(g.mode&61440)&&(b&=-513);if(b&65536&&!K(g.mode))throw new H(D.ia);if(!e&&(g?40960===(g.mode&61440)?c=D.sa:K(g.mode)&&(0!==(b&2097155)||b&512)?c=D.S:(c=["r","w","rw"][b&3],b&512&&(c+="w"),c=cc(g,c)):c=D.J,c))throw new H(c);b&512&&vc(g,0);b&=-641;d=ic({g:g,path:P(g),flags:b,seekable:!0,position:0,n:g.n,Sb:[],error:!1},d);d.n.open&&d.n.open(d);!f.logReadFiles||b&1||(xc||(xc={}),a in xc||(xc[a]=1,f.printErr("read file: "+a)));try{N.onOpenFile&&(g=0,1!==(b&2097155)&&(g|=1),0!==(b&2097155)&&(g|=2),N.onOpenFile(a,g))}catch(m){console.log("FS.trackingDelegate['onOpenFile']('"+a+"', flags) threw an exception: "+m.message)}return d}function yc(a){a.za&&(a.za=null);try{a.n.close&&a.n.close(a)}catch(b){throw b}finally{M[a.fd]=null}}function zc(a,b,c){if(!a.seekable||!a.n.N)throw new H(D.ja);a.position=a.n.N(a,b,c);a.Sb=[]}function Ac(a,b,c,d,e){if(0>d||0>e)throw new H(D.p);if(1===(a.flags&2097155))throw new H(D.L);if(K(a.g.mode))throw new H(D.S);if(!a.n.read)throw new H(D.p);var g=!0;if("undefined"===typeof e)e=a.position,g=!1;else if(!a.seekable)throw new H(D.ja);b=a.n.read(a,b,c,d,e);g||(a.position+=b);return b}function Bc(a,b,c,d,e,g){if(0>d||0>e)throw new H(D.p);if(0===(a.flags&2097155))throw new H(D.L);if(K(a.g.mode))throw new H(D.S);if(!a.n.write)throw new H(D.p);a.flags&1024&&zc(a,0,2);var h=!0;if("undefined"===typeof e)e=a.position,h=!1;else if(!a.seekable)throw new H(D.ja);b=a.n.write(a,b,c,d,e,g);h||(a.position+=b);try{if(a.path&&N.onWriteToFile)N.onWriteToFile(a.path)}catch(m){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+m.message)}return b}function Cc(){H||(H=function(a,b){this.g=b;this.Pb=function(a){this.o=a;for(var b in D)if(D[b]===a){this.code=b;break}};this.Pb(a);this.message=Bb[a]},H.prototype=Error(),H.prototype.constructor=H,[D.J].forEach(function(a){Rb[a]=new H(a);Rb[a].stack=""}))}var Dc;function Ec(a,b){var c=0;a&&(c|=365);b&&(c|=146);return c}function Fc(a,b,c,d){a=E("string"===typeof a?a:P(a),b);return nc(a,Ec(c,d))}function Gc(a,b,c,d,e,g){a=b?E("string"===typeof a?a:P(a),b):a;d=Ec(d,e);e=nc(a,d);if(c){if("string"===typeof c){a=Array(c.length);b=0;for(var h=c.length;b>2]=d.dev;w[c+4>>2]=0;w[c+8>>2]=d.ino;w[c+12>>2]=d.mode;w[c+16>>2]=d.nlink;w[c+20>>2]=d.uid;w[c+24>>2]=d.gid;w[c+28>>2]=d.rdev;w[c+32>>2]=0;w[c+36>>2]=d.size;w[c+40>>2]=4096;w[c+44>>2]=d.blocks;w[c+48>>2]=d.atime.getTime()/1e3|0;w[c+52>>2]=0;w[c+56>>2]=d.mtime.getTime()/1e3|0;w[c+60>>2]=0;w[c+64>>2]=d.ctime.getTime()/1e3|0;w[c+68>>2]=0;w[c+72>>2]=d.ino;return 0}var S=0;function T(){S+=4;return w[S-4>>2]}function U(){return q(T())}function Lc(){var a;a=T();a=M[a];if(!a)throw new H(D.L);return a}var xa=void 0;function Mc(a){a=a/1e3;if((ca||da)&&self.performance&&self.performance.now)for(var b=self.performance.now();self.performance.now()-b>2]=60*-(new Date).getTimezoneOffset();var b=new Date(2e3,0,1),c=new Date(2e3,6,1);w[Pc>>2]=Number(b.getTimezoneOffset()!=c.getTimezoneOffset());var d=a(b),e=a(c),d=z(B(d),"i8",0),e=z(B(e),"i8",0);c.getTimezoneOffset()>2]=d,w[Oc+4>>2]=e):(w[Oc>>2]=e,w[Oc+4>>2]=d)}}function Sc(a,b){Rc();var c=new Date(1e3*w[a>>2]);w[b>>2]=c.getSeconds();w[b+4>>2]=c.getMinutes();w[b+8>>2]=c.getHours();w[b+12>>2]=c.getDate();w[b+16>>2]=c.getMonth();w[b+20>>2]=c.getFullYear()-1900;w[b+24>>2]=c.getDay();var d=new Date(c.getFullYear(),0,1);w[b+28>>2]=(c.getTime()-d.getTime())/864e5|0;w[b+36>>2]=-(60*c.getTimezoneOffset());c=c.getTimezoneOffset()==Math.min(d.getTimezoneOffset(),new Date(2e3,6,1).getTimezoneOffset())|0;w[b+32>>2]=c;w[b+40>>2]=w[Oc+(c?l.M:0)>>2];return b}f._bitshift64Lshr=Tc;function Uc(a,b){eb.push(function(){l.T("vi",a,[b])});Uc.level=eb.length}var Vc=z(1,"i32*",2);function Wc(a){var b,c;Wc.C?(c=w[Vc>>2],b=w[c>>2]):(Wc.C=!0,V.USER=V.LOGNAME="web_user",V.PATH="/",V.PWD="/",V.HOME="/home/web_user",V.LANG="C",V._=f.thisProgram,b=z(1024,"i8",2),c=z(256,"i8*",2),w[c>>2]=b,w[Vc>>2]=c);var d=[],e=0,g;for(g in a)if("string"===typeof a[g]){var h=g+"="+a[g];d.push(h);e+=h.length}if(1024>2]=b,b+=h.length+1;w[c+4*d.length>>2]=0}var V={};function Xc(a){if(0===a)return 0;a=q(a);if(!V.hasOwnProperty(a))return 0;Xc.C&&Pa(Xc.C);Xc.C=z(B(V[a]),"i8",0);return Xc.C}f._memcpy=Yc;function Ia(a){Ia.Va||(n=Sa(),Ia.Va=!0,assert(l.ba),Ia.Gb=l.ba,l.ba=function(){p("cannot dynamically allocate, sbrk now has control")});var b=n;return 0==a||Ia.Gb(a)?b:4294967295}f._memmove=Zc;function $c(a,b){S=b;return 0}f._memset=ad;f._bitshift64Shl=bd;var cd=Ca;function dd(a,b){ed=a;fd=b;if(!gd)return 1;if(0==a)hd=function(){setTimeout(id,b)},jd="timeout";else if(1==a)hd=function(){kd(id)},jd="rAF";else if(2==a){if(!window.setImmediate){var c=[];window.addEventListener("message",function(a){a.source===window&&"__emcc"===a.data&&(a.stopPropagation(),c.shift()())},!0);window.setImmediate=function(a){c.push(a);window.postMessage("__emcc","*")}}hd=function(){window.setImmediate(id)};jd="immediate"}return 0}function ld(a,b,c,d,e){f.noExitRuntime=!0;assert(!gd,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");gd=a;md=d;var g=nd;id=function(){if(!oa)if(0>h-6&63,h=h-6,c=c+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[v];2==h?(c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(g&3)<<4],c+="=="):4==h&&(c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(g&15)<<2],c+="=");G.src="data:audio/x-"+b.substr(-3)+";base64,"+c;m(G)}};G.src=x;Dd(function(){m(G)})}else return t()}});var c=f.canvas;c&&(c.Ea=c.requestPointerLock||c.mozRequestPointerLock||c.webkitRequestPointerLock||c.msRequestPointerLock||function(){},c.Ra=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},c.Ra=c.Ra.bind(document),document.addEventListener("pointerlockchange",a,!1),document.addEventListener("mozpointerlockchange",a,!1),document.addEventListener("webkitpointerlockchange",a,!1),document.addEventListener("mspointerlockchange",a,!1),f.elementPointerLock&&c.addEventListener("click",function(a){!vd&&c.Ea&&(c.Ea(),a.preventDefault())},!1))}}function Ed(a,b,c,d){if(b&&f.wa&&a==f.canvas)return f.wa;var e,g;if(b){g={antialias:!1,alpha:!1};if(d)for(var h in d)g[h]=d[h];if(g=GL.createContext(a,g))e=GL.getContext(g).Zd;a.style.backgroundColor="black"}else e=a.getContext("2d");if(!e)return null;c&&(b||assert("undefined"===typeof GLctx,"cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),f.wa=e,b&&GL.Ie(g),f.Le=b,wd.forEach(function(a){a()}),xd());return e}var Fd=!1,Gd=void 0,Hd=void 0;function Id(a,b,c){function d(){ud=!1;var a=e.parentNode;(document.webkitFullScreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.mozFullscreenElement||document.fullScreenElement||document.fullscreenElement||document.msFullScreenElement||document.msFullscreenElement||document.webkitCurrentFullScreenElement)===a?(e.Pa=document.cancelFullScreen||document.mozCancelFullScreen||document.webkitCancelFullScreen||document.msExitFullscreen||document.exitFullscreen||function(){},e.Pa=e.Pa.bind(document),Gd&&e.Ea(),ud=!0,Hd&&Jd()):(a.parentNode.insertBefore(e,a),a.parentNode.removeChild(a),Hd&&Kd());if(f.onFullScreen)f.onFullScreen(ud);Ld(e)}Gd=a;Hd=b;Md=c;"undefined"===typeof Gd&&(Gd=!0);"undefined"===typeof Hd&&(Hd=!1);"undefined"===typeof Md&&(Md=null);var e=f.canvas;Fd||(Fd=!0,document.addEventListener("fullscreenchange",d,!1),document.addEventListener("mozfullscreenchange",d,!1),document.addEventListener("webkitfullscreenchange",d,!1),document.addEventListener("MSFullscreenChange",d,!1));var g=document.createElement("div");e.parentNode.insertBefore(g,e);g.appendChild(e);g.C=g.requestFullScreen||g.mozRequestFullScreen||g.msRequestFullscreen||(g.webkitRequestFullScreen?function(){g.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null);c?g.C({Me:c}):g.C()}var Nd=0;function Od(a){var b=Date.now();if(0===Nd)Nd=b+1e3/60;else for(;b+2>=Nd;)Nd+=1e3/60;b=Math.max(Nd-b,0);setTimeout(a,b)}function kd(a){"undefined"===typeof window?Od(a):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Od),window.requestAnimationFrame(a))}function Dd(a){f.noExitRuntime=!0;setTimeout(function(){oa||a()},1e4)}function Cd(a){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[a.substr(a.lastIndexOf(".")+1)]}function Pd(a,b,c){var d=new XMLHttpRequest;d.open("GET",a,!0);d.responseType="arraybuffer";d.onload=function(){200==d.status||0==d.status&&d.response?b(d.response):c()};d.onerror=c;d.send(null)}function Qd(a,b,c){Pd(a,function(c){assert(c,'Loading data file "'+a+'" failed (no arrayBuffer).');b(new Uint8Array(c));xb()},function(){if(c)c();else throw'Loading data file "'+a+'" failed.'});wb()}var Rd=[];function Sd(){var a=f.canvas;Rd.forEach(function(b){b(a.width,a.height)})}function Jd(){if("undefined"!=typeof SDL){var a=Ua[SDL.screen+0*l.M>>2];w[SDL.screen+0*l.M>>2]=a|8388608}Sd()}function Kd(){if("undefined"!=typeof SDL){var a=Ua[SDL.screen+0*l.M>>2];w[SDL.screen+0*l.M>>2]=a&-8388609}Sd()}function Ld(a,b,c){b&&c?(a.Tb=b,a.Cb=c):(b=a.Tb,c=a.Cb);var d=b,e=c;f.forcedAspectRatio&&0this.length-1||0>a)){var b=a%this.chunkSize;return this.Bb(a/this.chunkSize|0)[b]}};m.prototype.Ob=function(a){this.Bb=a};m.prototype.Oa=function(){var a=new XMLHttpRequest;a.open("HEAD",c,!1);a.send(null);if(!(200<=a.status&&300>a.status||304===a.status))throw Error("Couldn't load "+c+". Status: "+a.status);var b=Number(a.getResponseHeader("Content-length")),d,e=1048576;(d=a.getResponseHeader("Accept-Ranges"))&&"bytes"===d||(e=b);var g=this;g.Ob(function(a){var d=a*e,h=(a+1)*e-1,h=Math.min(h,b-1);if("undefined"===typeof g.ma[a]){var m=g.ma;if(d>h)throw Error("invalid range ("+d+", "+h+") or no bytes requested!");if(h>b-1)throw Error("only "+b+" bytes available! programmer error!");var r=new XMLHttpRequest;r.open("GET",c,!1);b!==e&&r.setRequestHeader("Range","bytes="+d+"-"+h);"undefined"!=typeof Uint8Array&&(r.responseType="arraybuffer");r.overrideMimeType&&r.overrideMimeType("text/plain; charset=x-user-defined");r.send(null);if(!(200<=r.status&&300>r.status||304===r.status))throw Error("Couldn't load "+c+". Status: "+r.status);d=void 0!==r.response?new Uint8Array(r.response||[]):B(r.responseText||"",!0);m[a]=d}if("undefined"===typeof g.ma[a])throw Error("doXHR failed!");return g.ma[a]});this.lb=b;this.kb=e;this.Aa=!0};if("undefined"!==typeof XMLHttpRequest){if(!da)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";g=new m;Object.defineProperty(g,"length",{get:function(){this.Aa||this.Oa();return this.lb}});Object.defineProperty(g,"chunkSize",{get:function(){this.Aa||this.Oa();return this.kb}});h=void 0}else h=c,g=void 0;var t=Fc(a,b,d,e);g?t.e=g:h&&(t.e=null,t.url=h);Object.defineProperty(t,"usedBytes",{get:function(){return this.e.length}});var r={};Object.keys(t.n).forEach(function(a){var b=t.n[a];r[a]=function(){if(!Ic(t))throw new H(D.O);return b.apply(null,arguments)}});r.read=function(a,b,c,d,e){if(!Ic(t))throw new H(D.O);a=a.g.e;if(e>=a.length)return 0;d=Math.min(a.length-e,d);assert(0<=d);if(a.slice)for(var g=0;g=g)e=-D.p;else{var h=Zb(c),h=h.slice(0,Math.max(0,g));wa(h,d,!0);e=h.length}return e}catch(m){return"undefined"!==typeof R&&m instanceof H||p(m),-m.o}},_sin:jb,_exp:pb,_utimes:function(a,b){var c;b?(c=1e3*w[b+8>>2],c+=w[b+12>>2]/1e3):c=Date.now();a=q(a);try{var d=c,e=O(a,{Q:!0}).g;e.k.B(e,{timestamp:Math.max(d,c)});return 0}catch(g){if(!(g instanceof H))throw g+" : "+Qa();Cb(g.o);return-1}},_llvm_pow_f64:sb,_acos:lb,___syscall54:function(a,b){S=b;try{var c=Lc(),d=T();switch(d){case 21505:return c.tty?0:-D.$;case 21506:return c.tty?0:-D.$;case 21519:if(!c.tty)return-D.$;var e=T();return w[e>>2]=0;case 21520:return c.tty?-D.p:-D.$;case 21531:e=T();if(!c.n.Db)throw new H(D.$);return c.n.Db(c,d,e);default:p("bad ioctl syscall "+d)}}catch(g){return"undefined"!==typeof R&&g instanceof H||p(g),-g.o}},_pthread_cleanup_push:Uc,_abort:function(){f.abort()},___syscall40:function(a,b){S=b;try{var c=U(),d=O(c,{parent:!0}).g,e=Gb(c),g=Sb(d,e),h=gc(d,e,!0);if(h)throw new H(h);if(!d.k.rmdir)throw new H(D.H);if(g.U)throw new H(D.Z);try{N.willDeletePath&&N.willDeletePath(c)}catch(m){console.log("FS.trackingDelegate['willDeletePath']('"+c+"') threw an exception: "+m.message)}d.k.rmdir(d,e);bc(g);try{if(N.onDeletePath)N.onDeletePath(c)}catch(t){console.log("FS.trackingDelegate['onDeletePath']('"+c+"') threw an exception: "+t.message)}return 0}catch(r){return"undefined"!==typeof R&&r instanceof H||p(r),-r.o}},___syscall118:function(a,b){S=b;try{return Lc(),0}catch(c){return"undefined"!==typeof R&&c instanceof H||p(c),-c.o}},___setErrNo:Cb,___syscall20:function(a,b){S=b;return 42},___syscall183:function(a,b){S=b;try{var c=T(),d=T();if(0===d)return-D.p;if(2>d)return-D.fb;Ka("/",c);return c}catch(e){return"undefined"!==typeof R&&e instanceof H||p(e),-e.o}},___assert_fail:function(a,b,c,d){oa=!0;throw"Assertion failed: "+q(a)+", at: "+[b?q(b):"unknown filename",c,d?q(d):"unknown function"]+" at "+Qa()},_usleep:Mc,_asin:mb,___buildEnvironment:Wc,___syscall202:$c,___syscall91:function(a,b){S=b;try{var c=T(),d=T(),e=Jc[c];if(!e)return 0;if(d===e.Hb){var g=M[e.fd],h=e.flags,m=new Uint8Array(A.subarray(c,c+d));g&&g.n.pa&&g.n.pa(g,m,0,d,h);Jc[c]=null;e.ua&&Pa(e.Ib)}return 0}catch(t){return"undefined"!==typeof R&&t instanceof H||p(t),-t.o}},_cos:ib,___syscall39:function(a,b){S=b;try{var c=U(),d=T(),c=Eb(c);"/"===c[c.length-1]&&(c=c.substr(0,c.length-1));Q(c,d);return 0}catch(e){return"undefined"!==typeof R&&e instanceof H||p(e),-e.o}},_localtime_r:Sc,_tzset:Rc,_emscripten_set_main_loop_timing:dd,_sbrk:Ia,___syscall192:function(a,b){S=b;try{var c=T(),d=T(),e=T(),g=T(),h=T(),m=T(),m=m<<12,t,r=!1;if(-1===h){t=Ga(d);if(!t)return-D.Ia;ad(t,0,d);r=!0}else{var x=M[h];if(!x)return-D.L;var v,G=A;if(1===(x.flags&2097155))throw new H(D.Y);if(!x.n.oa)throw new H(D.ha);v=x.n.oa(x,G,c,d,m,e,g);t=v.Kb;r=v.ua}Jc[t]={Ib:t,Hb:d,ua:r,fd:h,flags:g};return t}catch(I){return"undefined"!==typeof R&&I instanceof H||p(I),-I.o}},___syscall197:function(a,b){S=b;try{var c=Lc(),d=T();return Kc(rc,c.path,d)}catch(e){return"undefined"!==typeof R&&e instanceof H||p(e),-e.o}},___syscall196:function(a,b){S=b;try{var c=U(),d=T();return Kc(sc,c,d)}catch(e){return"undefined"!==typeof R&&e instanceof H||p(e),-e.o}},___syscall195:function(a,b){S=b;try{var c=U(),d=T();return Kc(rc,c,d)}catch(e){return"undefined"!==typeof R&&e instanceof H||p(e),-e.o}},___syscall194:function(a,b){S=b;try{var c=T();assert(0===T());var d=T(),e=T();0<=d?assert(0===e):assert(-1===e);var g=M[c];if(!g)throw new H(D.L);if(0===(g.flags&2097155))throw new H(D.p);vc(g.g,d);return 0}catch(h){return"undefined"!==typeof R&&h instanceof H||p(h),-h.o}},___syscall212:function(a,b){S=b;try{var c=U();T();T();uc(c);return 0}catch(d){return"undefined"!==typeof R&&d instanceof H||p(d),-d.o}},_sysconf:function(a){switch(a){case 30:return 4096;case 85:return $a/4096;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"===typeof navigator?navigator.hardwareConcurrency||1:1}Cb(D.p);return-1},___syscall94:function(a,b){S=b;try{var c=T(),d=T(),e=M[c];if(!e)throw new H(D.L);tc(e.g,d);return 0}catch(g){return"undefined"!==typeof R&&g instanceof H||p(g),-g.o}},_nanosleep:function(a,b){var c=w[a>>2],d=w[a+4>>2];0!==b&&(w[b>>2]=0,w[b+4>>2]=0);return Mc(1e6*c+d/1e3)},_emscripten_memcpy_big:function(a,b,c){A.set(A.subarray(b,b+c),a);return a},___syscall221:function(a,b){S=b;try{var c=Lc();switch(T()){case 0:var d=T();return 0>d?-D.p:wc(c.path,c.flags,0,d).fd;case 1:case 2:return 0;case 3:return c.flags;case 4:return d=T(),c.flags|=d,0;case 12:case 12:return d=T(),za[d+0>>1]=2,0;case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-D.p;case 9:return Cb(D.p),-1;default:return-D.p}}catch(e){return"undefined"!==typeof R&&e instanceof H||p(e),-e.o}},_floor:cd,_atan:nb,___syscall201:function(){return $c.apply(null,arguments)},_pthread_self:function(){return 0},_getenv:Xc,___syscall33:function(a,b){S=b;try{var c=U(),d;var e=T();if(e&-8)d=-D.p;else{var g;g=O(c,{Q:!0}).g;c="";e&4&&(c+="r");e&2&&(c+="w");e&1&&(c+="x");d=c&&cc(g,c)?-D.Y:0}return d}catch(h){return"undefined"!==typeof R&&h instanceof H||p(h),-h.o}},_log:qb,___unlock:function(){},___syscall140:function(a,b){S=b;try{var c=Lc(),d=T(),e=T(),g=T(),h=T();assert(0===d);zc(c,e,h);w[g>>2]=c.position;c.za&&0===e&&0===h&&(c.za=null);return 0}catch(m){return"undefined"!==typeof R&&m instanceof H||p(m),-m.o}},___syscall15:function(a,b){S=b;try{var c=U(),d=T();tc(c,d);return 0}catch(e){return"undefined"!==typeof R&&e instanceof H||p(e),-e.o}},_emscripten_set_main_loop:ld,___syscall10:function(a,b){S=b;try{var c=U();qc(c);return 0}catch(d){return"undefined"!==typeof R&&d instanceof H||p(d),-d.o}},_tan:kb,___syscall3:function(a,b){S=b;try{var c=Lc(),d=T(),e=T();return Ac(c,u,d,e)}catch(g){return"undefined"!==typeof R&&g instanceof H||p(g),-g.o}},___lock:function(){},___syscall6:function(a,b){S=b;try{var c=Lc();yc(c);return 0}catch(d){return"undefined"!==typeof R&&d instanceof H||p(d),-d.o}},___syscall5:function(a,b){S=b;try{var c=U(),d=T(),e=T();return wc(c,d,e).fd}catch(g){return"undefined"!==typeof R&&g instanceof H||p(g),-g.o}},___syscall4:function(a,b){S=b;try{var c=Lc(),d=T(),e=T();return Bc(c,u,d,e)}catch(g){return"undefined"!==typeof R&&g instanceof H||p(g),-g.o}},_time:function(a){var b=Date.now()/1e3|0;a&&(w[a>>2]=b);return b},_atan2:ob,_gettimeofday:function(a){var b=Date.now();w[a>>2]=b/1e3|0;w[a+4>>2]=b%1e3*1e3|0;return 0},_ceil:Td,_sqrt:rb,_localtime:function(a){return Sc(a,Nc)},___syscall207:function(a,b){S=b;try{var c=T();T();T();var d=M[c];if(!d)throw new H(D.L);uc(d.g);return 0}catch(e){return"undefined"!==typeof R&&e instanceof H||p(e),-e.o}},___syscall146:function(a,b){S=b;try{var c=Lc(),d=T(),e;a:{for(var g=T(),h=0,m=0;m>2],w[d+(8*m+4)>>2],void 0);if(0>t){e=-1;break a}h+=t}e=h}return e}catch(r){return"undefined"!==typeof R&&r instanceof H||p(r),-r.o}},STACKTOP:k,STACK_MAX:Xa,tempDoublePtr:yb,ABORT:oa,cttz_i8:Ud};var W=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.STACKTOP|0;var j=env.STACK_MAX|0;var k=env.tempDoublePtr|0;var l=env.ABORT|0;var m=env.cttz_i8|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,y=0,z=0,A=0,B=0.0;var C=0;var D=0;var E=0;var F=0;var G=0;var H=0;var I=0;var J=0;var K=0;var L=0;var M=global.Math.floor;var N=global.Math.abs;var O=global.Math.sqrt;var P=global.Math.pow;var Q=global.Math.cos;var R=global.Math.sin;var S=global.Math.tan;var T=global.Math.acos;var U=global.Math.asin;var V=global.Math.atan;var W=global.Math.atan2;var X=global.Math.exp;var Y=global.Math.log;var Z=global.Math.ceil;var _=global.Math.imul;var $=global.Math.min;var aa=global.Math.clz32;var ba=env.abort;var ca=env.assert;var da=env.invoke_iiii;var ea=env.jsCall_iiii;var fa=env.invoke_i;var ga=env.jsCall_i;var ha=env.invoke_vi;var ia=env.jsCall_vi;var ja=env.invoke_vii;var ka=env.jsCall_vii;var la=env.invoke_iiiiiii;var ma=env.jsCall_iiiiiii;var na=env.invoke_ii;var oa=env.jsCall_ii;var pa=env.invoke_viii;var qa=env.jsCall_viii;var ra=env.invoke_v;var sa=env.jsCall_v;var ta=env.invoke_iiiii;var ua=env.jsCall_iiiii;var va=env.invoke_viiiiii;var wa=env.jsCall_viiiiii;var xa=env.invoke_iii;var ya=env.jsCall_iii;var za=env.invoke_iiiiii;var Aa=env.jsCall_iiiiii;var Ba=env.invoke_viiii;var Ca=env.jsCall_viiii;var Da=env._pthread_cleanup_pop;var Ea=env.___syscall85;var Fa=env._sin;var Ga=env._exp;var Ha=env._utimes;var Ia=env._llvm_pow_f64;var Ja=env._acos;var Ka=env.___syscall54;var La=env._pthread_cleanup_push;var Ma=env._abort;var Na=env.___syscall40;var Oa=env.___syscall118;var Pa=env.___setErrNo;var Qa=env.___syscall20;var Ra=env.___syscall183;var Sa=env.___assert_fail;var Ta=env._usleep;var Ua=env._asin;var Va=env.___buildEnvironment;var Wa=env.___syscall202;var Xa=env.___syscall91;var Ya=env._cos;var Za=env.___syscall39;var _a=env._localtime_r;var $a=env._tzset;var ab=env._emscripten_set_main_loop_timing;var bb=env._sbrk;var cb=env.___syscall192;var db=env.___syscall197;var eb=env.___syscall196;var fb=env.___syscall195;var gb=env.___syscall194;var hb=env.___syscall212;var ib=env._sysconf;var jb=env.___syscall94;var kb=env._nanosleep;var lb=env._emscripten_memcpy_big;var mb=env.___syscall221;var nb=env._floor;var ob=env._atan;var pb=env.___syscall201;var qb=env._pthread_self;var rb=env._getenv;var sb=env.___syscall33;var tb=env._log;var ub=env.___unlock;var vb=env.___syscall140;var wb=env.___syscall15;var xb=env._emscripten_set_main_loop;var yb=env.___syscall10;var zb=env._tan;var Ab=env.___syscall3;var Bb=env.___lock;var Cb=env.___syscall6;var Db=env.___syscall5;var Eb=env.___syscall4;var Fb=env._time;var Gb=env._atan2;var Hb=env._gettimeofday;var Ib=env._ceil;var Jb=env._sqrt;var Kb=env._localtime;var Lb=env.___syscall207;var Mb=env.___syscall146;var Nb=0.0;function $b(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+15&-16;return b|0}function ac(){return i|0}function bc(a){a=a|0;i=a}function cc(a,b){a=a|0;b=b|0;i=a;j=b}function dc(a,b){a=a|0;b=b|0;if(!n){n=a;o=b}}function ec(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0]}function fc(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[k+4>>0]=a[b+4>>0];a[k+5>>0]=a[b+5>>0];a[k+6>>0]=a[b+6>>0];a[k+7>>0]=a[b+7>>0]}function gc(a){a=a|0;C=a}function hc(){return C|0}function ic(b){b=b|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=b;c[f>>2]=0;while(1){if((c[f>>2]|0)>>>0>=40)break;c[g>>2]=0;switch(d[352+((c[f>>2]|0)*12|0)+5>>0]|0){case 1:{c[g>>2]=c[e>>2];break}case 2:{c[g>>2]=-1;break}default:{}}vf(c[e>>2]|0,c[352+((c[f>>2]|0)*12|0)>>2]|0,a[352+((c[f>>2]|0)*12|0)+4>>0]|0,d[352+((c[f>>2]|0)*12|0)+6>>0]|0,c[g>>2]|0,c[352+((c[f>>2]|0)*12|0)+8>>2]|0,0,0)|0;c[f>>2]=(c[f>>2]|0)+1}c[f>>2]=0;while(1){if((c[f>>2]|0)>>>0>=6)break;c[h>>2]=0;switch(d[832+(c[f>>2]<<4)+5>>0]|0){case 1:{c[h>>2]=c[e>>2];break}case 2:{c[h>>2]=-1;break}default:{}}vf(c[e>>2]|0,c[832+(c[f>>2]<<4)>>2]|0,a[832+(c[f>>2]<<4)+4>>0]|0,1,c[h>>2]|0,0,c[832+(c[f>>2]<<4)+8>>2]|0,c[832+(c[f>>2]<<4)+12>>2]|0)|0;c[f>>2]=(c[f>>2]|0)+1}i=j;return 0}function jc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,378,17622);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+T(+ +h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function kc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,379,17631);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+U(+ +h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function lc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,380,17640);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+V(+ +h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function mc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;h[j>>3]=0.0;if((c[l>>2]|0)!=2)Sa(17649,17598,570,17657);if((fe(c[c[f>>2]>>2]|0)|0)!=5?(fe(c[(c[f>>2]|0)+4>>2]|0)|0)!=5:0){h[g>>3]=+ce(c[c[f>>2]>>2]|0);h[j>>3]=+ce(c[(c[f>>2]|0)+4>>2]|0);ie(c[e>>2]|0,+W(+ +h[g>>3],+ +h[j>>3]));i=k;return}me(c[e>>2]|0);i=k;return}function nc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,394,17666);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+ZP(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function oc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,402,17676);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+_P(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function pc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,410,17686);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+$P(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function qc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+64|0;f=o+32|0;p=o+28|0;g=o+24|0;m=o+20|0;n=o+16|0;j=o+12|0;h=o+8|0;k=o+4|0;l=o;c[f>>2]=b;c[p>>2]=d;c[g>>2]=e;c[m>>2]=o+48;c[n>>2]=o+40;c[j>>2]=0;c[h>>2]=0;if((c[p>>2]|0)!=2)Sa(17649,17598,1680,17696);if((fe(c[c[g>>2]>>2]|0)|0)!=5?(fe(c[(c[g>>2]|0)+4>>2]|0)|0)!=5:0){c[k>>2]=ae(c[c[g>>2]>>2]|0)|0;c[l>>2]=ae(c[(c[g>>2]|0)+4>>2]|0)|0;md(c[k>>2]|0,c[m>>2]|0);md(c[l>>2]|0,c[n>>2]|0);c[h>>2]=0;while(1){if((c[h>>2]|0)>=4)break;p=nd(c[m>>2]|0)|0;if((p|0)==(nd(c[n>>2]|0)|0))c[j>>2]=(c[j>>2]|0)+1;do{p=(c[m>>2]|0)+1|0;c[m>>2]=p}while((192&a[p>>0]|0)==128);do{p=(c[n>>2]|0)+1|0;c[n>>2]=p}while((192&a[p>>0]|0)==128);c[h>>2]=(c[h>>2]|0)+1}ke(c[f>>2]|0,c[j>>2]|0);i=o;return}me(c[f>>2]|0);i=o;return}function rc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,498,18100);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+od(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function sc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,499,18112);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+pd(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function tc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,420,18124);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+Q(+ +h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function uc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,419,18132);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+R(+ +h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function vc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,421,18140);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+S(+ +h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function wc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,422,18148);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+qd(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function xc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,446,18156);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+aQ(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function yc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,438,18165);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+eQ(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function zc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,454,18174);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+fQ(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function Ac(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,456,18183);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+rd(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function Bc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,474,18192);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+X(+ +h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function Cc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,472,18200);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+Y(+ +h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function Dc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,473,18208);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+cQ(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function Ec(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0;l=i;i=i+48|0;e=l+32|0;m=l+28|0;f=l+24|0;g=l+16|0;j=l+8|0;k=l;c[e>>2]=a;c[m>>2]=b;c[f>>2]=d;h[g>>3]=0.0;h[j>>3]=0.0;if((c[m>>2]|0)!=2)Sa(17649,17598,546,18218);if((fe(c[c[f>>2]>>2]|0)|0)!=5?(fe(c[(c[f>>2]|0)+4>>2]|0)|0)!=5:0){h[g>>3]=+ce(c[c[f>>2]>>2]|0);h[j>>3]=+ce(c[(c[f>>2]|0)+4>>2]|0);c[(SP()|0)>>2]=0;h[k>>3]=+P(+ +h[g>>3],+ +h[j>>3]);m=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(m){ie(e,+h[k>>3]);i=l;return}else{m=TP(c[(SP()|0)>>2]|0)|0;je(e,m,c[(SP()|0)>>2]|0);i=l;return}}me(c[e>>2]|0);i=l;return}function Fc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;j=k+24|0;l=k+20|0;e=k+16|0;g=k+8|0;f=k;c[j>>2]=a;c[l>>2]=b;c[e>>2]=d;h[g>>3]=0.0;a=f;c[a>>2]=0;c[a+4>>2]=0;if((c[l>>2]|0)!=1)Sa(17590,17598,590,18228);switch(fe(c[c[e>>2]>>2]|0)|0){case 1:{l=f;c[l>>2]=ee(c[c[e>>2]>>2]|0)|0;c[l+4>>2]=C;l=f;g=c[l+4>>2]|0;if((g|0)>0|(g|0)==0&(c[l>>2]|0)>>>0>0)e=1;else e=(c[f+4>>2]|0)<0?-1:0;l=f;c[l>>2]=e;c[l+4>>2]=((e|0)<0)<<31>>31;l=f;le(c[j>>2]|0,c[l>>2]|0,c[l+4>>2]|0);i=k;return}case 5:{me(c[j>>2]|0);i=k;return}default:{h[g>>3]=+ce(c[c[e>>2]>>2]|0);if(+h[g>>3]>0.0)e=1;else e=+h[g>>3]<0.0?-1:0;h[g>>3]=+(e|0);ie(c[j>>2]|0,+h[g>>3]);i=k;return}}}function Gc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,375,18237);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+O(+ +h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function Hc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;a=g;c[a>>2]=0;c[a+4>>2]=0;h[j>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,514,18246);switch(fe(c[c[f>>2]>>2]|0)|0){case 1:{a=g;c[a>>2]=ee(c[c[f>>2]>>2]|0)|0;c[a+4>>2]=C;a=c[e>>2]|0;j=g;l=g;le(a,rR(c[j>>2]|0,c[j+4>>2]|0,c[l>>2]|0,c[l+4>>2]|0)|0,C);i=k;return}case 5:{me(c[e>>2]|0);i=k;return}default:{h[j>>3]=+ce(c[c[f>>2]>>2]|0);ie(c[e>>2]|0,+h[j>>3]*+h[j>>3]);i=k;return}}}function Ic(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0.0;k=i;i=i+48|0;e=k+32|0;l=k+28|0;f=k+24|0;j=k+16|0;g=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[j>>3]=0.0;a=k+8|0;c[a>>2]=0;c[a+4>>2]=0;if((c[l>>2]|0)!=1)Sa(17590,17598,620,18257);switch(fe(c[c[f>>2]>>2]|0)|0){case 1:{l=g;c[l>>2]=ee(c[c[f>>2]>>2]|0)|0;c[l+4>>2]=C;l=g;le(c[e>>2]|0,c[l>>2]|0,c[l+4>>2]|0);i=k;return}case 5:{me(c[e>>2]|0);i=k;return}default:{h[j>>3]=+ce(c[c[f>>2]>>2]|0);m=+Z(+ +h[j>>3]);le(c[e>>2]|0,~~m>>>0,+N(m)>=1.0?m>0.0?~~+$(+M(m/4294967296.0),4294967295.0)>>>0:~~+Z((m-+(~~m>>>0))/4294967296.0)>>>0:0);i=k;return}}}function Jc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0.0;k=i;i=i+48|0;e=k+32|0;l=k+28|0;f=k+24|0;j=k+16|0;g=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[j>>3]=0.0;a=k+8|0;c[a>>2]=0;c[a+4>>2]=0;if((c[l>>2]|0)!=1)Sa(17590,17598,645,18266);switch(fe(c[c[f>>2]>>2]|0)|0){case 1:{l=g;c[l>>2]=ee(c[c[f>>2]>>2]|0)|0; -c[l+4>>2]=C;l=g;le(c[e>>2]|0,c[l>>2]|0,c[l+4>>2]|0);i=k;return}case 5:{me(c[e>>2]|0);i=k;return}default:{h[j>>3]=+ce(c[c[f>>2]>>2]|0);m=+M(+ +h[j>>3]);le(c[e>>2]|0,~~m>>>0,+N(m)>=1.0?m>0.0?~~+$(+M(m/4294967296.0),4294967295.0)>>>0:~~+Z((m-+(~~m>>>0))/4294967296.0)>>>0:0);i=k;return}}}function Kc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e+8|0;c[f>>2]=a;c[e+4>>2]=b;c[e>>2]=d;ie(c[f>>2]|0,3.141592653589793);i=e;return}function Lc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+64|0;e=n+48|0;o=n+44|0;f=n+40|0;l=n+36|0;m=n+32|0;h=n+24|0;j=n+16|0;k=n+8|0;g=n;c[e>>2]=a;c[o>>2]=b;c[f>>2]=d;a=g;c[a>>2]=0;c[a+4>>2]=0;if((c[o>>2]|0)!=2){i=n;return}if(5==(fe(c[c[f>>2]>>2]|0)|0)){i=n;return}a=ee(c[(c[f>>2]|0)+4>>2]|0)|0;o=h;c[o>>2]=a;c[o+4>>2]=C;if((c[h+4>>2]|0)<0){je(c[e>>2]|0,18276,-1);i=n;return}a=be(c[c[f>>2]>>2]|0)|0;o=j;c[o>>2]=a;c[o+4>>2]=((a|0)<0)<<31>>31;o=j;a=h;a=rR(c[o>>2]|0,c[o+4>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;o=k;c[o>>2]=a;c[o+4>>2]=C;o=k;o=gR(c[o>>2]|0,c[o+4>>2]|0,1,0)|0;c[l>>2]=Id(o)|0;o=j;o=gR(c[o>>2]|0,c[o+4>>2]|0,1,0)|0;c[m>>2]=Id(o)|0;if((c[l>>2]|0)!=0&(c[m>>2]|0)!=0){o=c[m>>2]|0;zQ(o,ae(c[c[f>>2]>>2]|0)|0)|0;o=g;c[o>>2]=0;c[o+4>>2]=0;while(1){k=g;d=c[k+4>>2]|0;o=h;a=c[o+4>>2]|0;if(!((d|0)<(a|0)|((d|0)==(a|0)?(c[k>>2]|0)>>>0<(c[o>>2]|0)>>>0:0)))break;o=c[l>>2]|0;a=g;k=j;k=rR(c[a>>2]|0,c[a+4>>2]|0,c[k>>2]|0,c[k+4>>2]|0)|0;zQ(o+k|0,c[m>>2]|0)|0;k=g;k=gR(c[k>>2]|0,c[k+4>>2]|0,1,0)|0;o=g;c[o>>2]=k;c[o+4>>2]=C}ne(c[e>>2]|0,c[l>>2]|0,-1,-1);Kd(c[l>>2]|0);Kd(c[m>>2]|0);i=n;return}te(c[e>>2]|0);if(c[l>>2]|0)Kd(c[l>>2]|0);if(!(c[m>>2]|0)){i=n;return}Kd(c[m>>2]|0);i=n;return}function Mc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;e=m+24|0;f=m+20|0;g=m+16|0;k=m+12|0;l=m+8|0;j=m+4|0;h=m;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[j>>2]=0;c[h>>2]=0;if(!((c[f>>2]|0)==3|(c[f>>2]|0)==2))Sa(18289,17598,1038,18307);if(5!=(fe(c[c[g>>2]>>2]|0)|0)?5!=(fe(c[(c[g>>2]|0)+4>>2]|0)|0):0){c[k>>2]=ae(c[c[g>>2]>>2]|0)|0;if(!(c[k>>2]|0)){i=m;return}c[l>>2]=ae(c[(c[g>>2]|0)+4>>2]|0)|0;if((c[f>>2]|0)==3){a=(de(c[(c[g>>2]|0)+8>>2]|0)|0)-1|0;c[j>>2]=a;c[j>>2]=(c[j>>2]|0)<0?0:a}else c[j>>2]=0;c[h>>2]=sd(c[k>>2]|0,c[l>>2]|0,c[j>>2]|0,0)|0;ke(c[e>>2]|0,(c[h>>2]|0)+1|0);i=m;return}me(c[e>>2]|0);i=m;return}function Nc(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+48|0;g=p+32|0;q=p+28|0;h=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;n=p+8|0;o=p+4|0;m=p;c[g>>2]=b;c[q>>2]=e;c[h>>2]=f;c[j>>2]=0;c[k>>2]=0;c[l>>2]=0;if((c[q>>2]|0)!=2)Sa(17649,17598,1073,18321);if(5!=(fe(c[c[h>>2]>>2]|0)|0)?5!=(fe(c[(c[h>>2]|0)+4>>2]|0)|0):0){c[n>>2]=ae(c[c[h>>2]>>2]|0)|0;c[l>>2]=de(c[(c[h>>2]|0)+4>>2]|0)|0;c[o>>2]=c[n>>2];a:while(1){if(!(nd(c[o>>2]|0)|0))break;q=c[j>>2]|0;c[j>>2]=q+1;if((q|0)>=(c[l>>2]|0))break;while(1){q=(c[o>>2]|0)+1|0;c[o>>2]=q;if((192&(d[q>>0]|0)|0)!=128)continue a}}c[k>>2]=(c[o>>2]|0)-(c[n>>2]|0);c[m>>2]=Id((c[o>>2]|0)-(c[n>>2]|0)+1|0)|0;if(c[m>>2]|0){DQ(c[m>>2]|0,c[n>>2]|0,(c[o>>2]|0)-(c[n>>2]|0)|0)|0;a[(c[m>>2]|0)+(c[k>>2]|0)>>0]=0;ne(c[g>>2]|0,c[m>>2]|0,-1,-1);Kd(c[m>>2]|0);i=p;return}else{te(c[g>>2]|0);i=p;return}}me(c[g>>2]|0);i=p;return}function Oc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+48|0;f=p+36|0;q=p+32|0;g=p+28|0;k=p+24|0;h=p+20|0;j=p+16|0;m=p+12|0;o=p+8|0;n=p+4|0;l=p;c[f>>2]=b;c[q>>2]=d;c[g>>2]=e;c[k>>2]=0;c[h>>2]=0;c[j>>2]=0;if((c[q>>2]|0)!=2)Sa(17649,17598,1113,18330);if(5!=(fe(c[c[g>>2]>>2]|0)|0)?5!=(fe(c[(c[g>>2]|0)+4>>2]|0)|0):0){c[m>>2]=ae(c[c[g>>2]>>2]|0)|0;c[k>>2]=de(c[(c[g>>2]|0)+4>>2]|0)|0;c[o>>2]=c[m>>2];while(1){if(!(nd(c[o>>2]|0)|0))break;do{q=(c[o>>2]|0)+1|0;c[o>>2]=q}while((192&a[q>>0]|0)==128);c[h>>2]=(c[h>>2]|0)+1}c[n>>2]=c[o>>2];c[o>>2]=c[m>>2];q=(c[h>>2]|0)-(c[k>>2]|0)|0;c[j>>2]=q;c[j>>2]=(c[j>>2]|0)<0?0:q;a:while(1){q=c[j>>2]|0;c[j>>2]=q+-1;if((q|0)<=0)break;while(1){q=(c[o>>2]|0)+1|0;c[o>>2]=q;if((192&a[q>>0]|0)!=128)continue a}}c[l>>2]=Id((c[n>>2]|0)-(c[o>>2]|0)+1|0)|0;if(c[l>>2]|0){zQ(c[l>>2]|0,c[o>>2]|0)|0;ne(c[f>>2]|0,c[l>>2]|0,-1,-1);Kd(c[l>>2]|0);i=p;return}else{te(c[f>>2]|0);i=p;return}}me(c[f>>2]|0);i=p;return}function Pc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+48|0;f=o+32|0;p=o+28|0;g=o+24|0;m=o+20|0;n=o+16|0;k=o+12|0;l=o+8|0;j=o+4|0;h=o;c[f>>2]=b;c[p>>2]=d;c[g>>2]=e;c[j>>2]=0;c[h>>2]=0;if(1!=(c[p>>2]|0))Sa(18340,17598,1323,18348);if(5==(fe(c[c[g>>2]>>2]|0)|0)){me(c[f>>2]|0);i=o;return}c[m>>2]=ae(c[c[g>>2]>>2]|0)|0;c[j>>2]=BQ(c[m>>2]|0)|0;c[k>>2]=Id((c[j>>2]|0)+1|0)|0;if(!(c[k>>2]|0)){te(c[f>>2]|0);i=o;return}c[l>>2]=(c[k>>2]|0)+(c[j>>2]|0);p=c[l>>2]|0;c[l>>2]=p+-1;a[p>>0]=0;c[n>>2]=c[m>>2];a:while(1){if(!(nd(c[n>>2]|0)|0))break;c[m>>2]=c[n>>2];do{p=(c[n>>2]|0)+1|0;c[n>>2]=p}while((192&a[p>>0]|0)==128);c[h>>2]=1;while(1){if(((c[n>>2]|0)+(0-(c[h>>2]|0))|0)>>>0<(c[m>>2]|0)>>>0)continue a;j=a[(c[n>>2]|0)+(0-(c[h>>2]|0))>>0]|0;p=c[l>>2]|0;c[l>>2]=p+-1;a[p>>0]=j;c[h>>2]=(c[h>>2]|0)+1}}ne(c[f>>2]|0,c[k>>2]|0,-1,-1);Kd(c[k>>2]|0);i=o;return}function Qc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;g=n+24|0;o=n+20|0;f=n+16|0;k=n+12|0;l=n+8|0;m=n+4|0;j=n+28|0;h=n;c[g>>2]=b;c[o>>2]=d;c[f>>2]=e;c[h>>2]=1;if((c[o>>2]|0)!=1)Sa(17590,17598,724,18360);if(5==(fe(c[c[f>>2]>>2]|0)|0)){me(c[g>>2]|0);i=n;return}c[k>>2]=ae(c[c[f>>2]>>2]|0)|0;c[l>>2]=td(c[k>>2]|0)|0;if(!(c[l>>2]|0)){te(c[g>>2]|0);i=n;return}c[m>>2]=c[l>>2];while(1){o=c[k>>2]|0;c[k>>2]=o+1;o=a[o>>0]|0;a[j>>0]=o;if(!(o<<24>>24))break;if(NP(a[j>>0]|0)|0)c[h>>2]=1;else{f=a[j>>0]|0;if((c[h>>2]|0)==1)a[j>>0]=RP(f)|0;else a[j>>0]=QP(f)|0;c[h>>2]=0}b=a[j>>0]|0;o=c[m>>2]|0;c[m>>2]=o+1;a[o>>0]=b}a[c[m>>2]>>0]=0;ne(c[g>>2]|0,c[l>>2]|0,-1,-1);Kd(c[l>>2]|0);i=n;return}function Rc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+48|0;m=o+40|0;p=o+36|0;f=o+32|0;h=o+8|0;k=o;g=o+28|0;j=o+24|0;n=o+20|0;l=o+16|0;c[m>>2]=b;c[p>>2]=d;c[f>>2]=e;c[g>>2]=0;if((c[p>>2]|0)!=2)Sa(17649,17598,771,18371);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[m>>2]|0);i=o;return}c[j>>2]=ae(c[c[f>>2]>>2]|0)|0;b=ee(c[(c[f>>2]|0)+4>>2]|0)|0;p=h;c[p>>2]=b;c[p+4>>2]=C;if((c[h+4>>2]|0)<0){je(c[m>>2]|0,18276,-1);i=o;return}d=ud(c[j>>2]|0,-1)|0;b=k;c[b>>2]=d;c[b+4>>2]=((d|0)<0)<<31>>31;b=k;d=c[b+4>>2]|0;p=h;e=c[p+4>>2]|0;f=c[j>>2]|0;do if((d|0)>(e|0)|((d|0)==(e|0)?(c[b>>2]|0)>>>0>=(c[p>>2]|0)>>>0:0)){c[n>>2]=td(f)|0;f=c[m>>2]|0;if(c[n>>2]|0){ne(f,c[n>>2]|0,-1,-1);break}te(f);i=o;return}else{p=BQ(f)|0;b=h;b=gR(p|0,0,c[b>>2]|0,c[b+4>>2]|0)|0;p=k;p=fR(b|0,C|0,c[p>>2]|0,c[p+4>>2]|0)|0;p=gR(p|0,C|0,1,0)|0;c[n>>2]=Id(p)|0;if(!(c[n>>2]|0)){te(c[m>>2]|0);i=o;return}c[l>>2]=c[n>>2];c[g>>2]=1;while(1){d=c[g>>2]|0;b=k;b=gR(d|0,((d|0)<0)<<31>>31|0,c[b>>2]|0,c[b+4>>2]|0)|0;d=C;p=h;e=c[p+4>>2]|0;f=c[l>>2]|0;if(!((d|0)<(e|0)|((d|0)==(e|0)?b>>>0<=(c[p>>2]|0)>>>0:0)))break;c[l>>2]=f+1;a[f>>0]=32;c[g>>2]=(c[g>>2]|0)+1}zQ(f,c[j>>2]|0)|0}while(0);ne(c[m>>2]|0,c[n>>2]|0,-1,-1);Kd(c[n>>2]|0);i=o;return}function Sc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+64|0;n=p+48|0;q=p+44|0;f=p+40|0;k=p+16|0;l=p+8|0;h=p;j=p+36|0;g=p+32|0;o=p+28|0;m=p+24|0;c[n>>2]=b;c[q>>2]=d;c[f>>2]=e;c[j>>2]=0;if((c[q>>2]|0)!=2)Sa(17649,17598,825,18408);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[n>>2]|0);i=p;return}c[g>>2]=ae(c[c[f>>2]>>2]|0)|0;b=ee(c[(c[f>>2]|0)+4>>2]|0)|0;q=k;c[q>>2]=b;c[q+4>>2]=C;if((c[k+4>>2]|0)<0){je(c[n>>2]|0,18276,-1);i=p;return}d=ud(c[g>>2]|0,-1)|0;b=l;c[b>>2]=d;c[b+4>>2]=((d|0)<0)<<31>>31;b=l;d=c[b+4>>2]|0;q=k;e=c[q+4>>2]|0;f=c[g>>2]|0;do if((d|0)>(e|0)|((d|0)==(e|0)?(c[b>>2]|0)>>>0>=(c[q>>2]|0)>>>0:0)){c[o>>2]=td(f)|0;f=c[n>>2]|0;if(c[o>>2]|0){ne(f,c[o>>2]|0,-1,-1);break}te(f);i=p;return}else{q=h;c[q>>2]=BQ(f)|0;c[q+4>>2]=0;q=h;b=k;b=gR(c[q>>2]|0,c[q+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;q=l;q=fR(b|0,C|0,c[q>>2]|0,c[q+4>>2]|0)|0;q=gR(q|0,C|0,1,0)|0;c[o>>2]=Id(q)|0;if(!(c[o>>2]|0)){te(c[n>>2]|0);i=p;return}q=zQ(c[o>>2]|0,c[g>>2]|0)|0;c[m>>2]=q+(c[h>>2]|0);c[j>>2]=1;while(1){b=c[j>>2]|0;h=l;h=gR(b|0,((b|0)<0)<<31>>31|0,c[h>>2]|0,c[h+4>>2]|0)|0;b=C;q=k;g=c[q+4>>2]|0;f=c[m>>2]|0;if(!((b|0)<(g|0)|((b|0)==(g|0)?h>>>0<=(c[q>>2]|0)>>>0:0)))break;c[m>>2]=f+1;a[f>>0]=32;c[j>>2]=(c[j>>2]|0)+1}a[f>>0]=0}while(0);ne(c[n>>2]|0,c[o>>2]|0,-1,-1);Kd(c[o>>2]|0);i=p;return}function Tc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+64|0;n=p+48|0;q=p+44|0;f=p+40|0;k=p+16|0;l=p+8|0;h=p;j=p+36|0;g=p+32|0;o=p+28|0;m=p+24|0;c[n>>2]=b;c[q>>2]=d;c[f>>2]=e;c[j>>2]=0;if((c[q>>2]|0)!=2)Sa(17649,17598,880,18417);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[n>>2]|0);i=p;return}c[g>>2]=ae(c[c[f>>2]>>2]|0)|0;b=ee(c[(c[f>>2]|0)+4>>2]|0)|0;q=k;c[q>>2]=b;c[q+4>>2]=C;if((c[k+4>>2]|0)<0){je(c[n>>2]|0,18276,-1);i=p;return}d=ud(c[g>>2]|0,-1)|0;b=l;c[b>>2]=d;c[b+4>>2]=((d|0)<0)<<31>>31;b=l;d=c[b+4>>2]|0;q=k;e=c[q+4>>2]|0;f=c[g>>2]|0;do if((d|0)>(e|0)|((d|0)==(e|0)?(c[b>>2]|0)>>>0>=(c[q>>2]|0)>>>0:0)){c[o>>2]=td(f)|0;f=c[n>>2]|0;if(c[o>>2]|0){ne(f,c[o>>2]|0,-1,-1);break}te(f);i=p;return}else{q=h;c[q>>2]=BQ(f)|0;c[q+4>>2]=0;q=h;b=k;b=gR(c[q>>2]|0,c[q+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;q=l;q=fR(b|0,C|0,c[q>>2]|0,c[q+4>>2]|0)|0;q=gR(q|0,C|0,1,0)|0;c[o>>2]=Id(q)|0;if(!(c[o>>2]|0)){te(c[n>>2]|0);i=p;return}c[m>>2]=c[o>>2];c[j>>2]=1;while(1){d=c[j>>2]<<1;b=l;b=gR(d|0,((d|0)<0)<<31>>31|0,c[b>>2]|0,c[b+4>>2]|0)|0;d=C;q=k;e=c[q+4>>2]|0;f=c[m>>2]|0;if(!((d|0)<(e|0)|((d|0)==(e|0)?b>>>0<=(c[q>>2]|0)>>>0:0)))break;c[m>>2]=f+1;a[f>>0]=32;c[j>>2]=(c[j>>2]|0)+1}zQ(f,c[g>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+(c[h>>2]|0);while(1){b=c[j>>2]|0;h=l;h=gR(b|0,((b|0)<0)<<31>>31|0,c[h>>2]|0,c[h+4>>2]|0)|0;b=C;q=k;g=c[q+4>>2]|0;f=c[m>>2]|0;if(!((b|0)<(g|0)|((b|0)==(g|0)?h>>>0<=(c[q>>2]|0)>>>0:0)))break;c[m>>2]=f+1;a[f>>0]=32;c[j>>2]=(c[j>>2]|0)+1}a[f>>0]=0}while(0);ne(c[n>>2]|0,c[o>>2]|0,-1,-1);Kd(c[o>>2]|0);i=p;return}function Uc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+48|0;f=r+44|0;s=r+40|0;g=r+36|0;n=r+32|0;o=r+28|0;k=r+24|0;l=r+20|0;m=r+16|0;p=r+12|0;q=r+8|0;h=r+4|0;j=r;c[f>>2]=b;c[s>>2]=d;c[g>>2]=e;c[h>>2]=0;c[j>>2]=0;if((c[s>>2]|0)!=2)Sa(17649,17598,939,18426);if((fe(c[c[g>>2]>>2]|0)|0)!=5?(fe(c[(c[g>>2]|0)+4>>2]|0)|0)!=5:0){c[n>>2]=ae(c[c[g>>2]>>2]|0)|0;c[o>>2]=ae(c[(c[g>>2]|0)+4>>2]|0)|0;c[p>>2]=Id((BQ(c[n>>2]|0)|0)+1|0)|0;if(!(c[p>>2]|0)){te(c[f>>2]|0);i=r;return}c[q>>2]=c[p>>2];c[k>>2]=c[n>>2];a:while(1){s=nd(c[k>>2]|0)|0;c[h>>2]=s;if(!s)break;c[l>>2]=c[o>>2];b:while(1){s=nd(c[l>>2]|0)|0;c[j>>2]=s;if(!s)break;if((c[j>>2]|0)==(c[h>>2]|0))break;while(1){s=(c[l>>2]|0)+1|0;c[l>>2]=s;if((192&a[s>>0]|0)!=128)continue b}}if(c[j>>2]|0){c[m>>2]=c[l>>2];do{s=(c[m>>2]|0)+1|0;c[m>>2]=s}while((192&a[s>>0]|0)==128);DQ(c[q>>2]|0,c[l>>2]|0,(c[m>>2]|0)-(c[l>>2]|0)|0)|0;c[q>>2]=(c[q>>2]|0)+((c[m>>2]|0)-(c[l>>2]|0))}while(1){s=(c[k>>2]|0)+1|0;c[k>>2]=s;if((192&a[s>>0]|0)!=128)continue a}}a[c[q>>2]>>0]=0;ne(c[f>>2]|0,c[p>>2]|0,-1,-1);Kd(c[p>>2]|0);i=r;return}me(c[f>>2]|0);i=r;return}function Vc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;e=l+28|0;m=l+24|0;f=l+20|0;j=l+16|0;g=l+8|0;k=l;c[e>>2]=a;c[m>>2]=b;c[f>>2]=d;if((c[m>>2]|0)!=1)Sa(17590,17598,1395,18440);c[j>>2]=xe(c[e>>2]|0,24)|0;if(5==(Te(c[c[f>>2]>>2]|0)|0)){i=l;return}a=(c[j>>2]|0)+16|0;m=a;m=gR(c[m>>2]|0,c[m+4>>2]|0,1,0)|0;c[a>>2]=m;c[a+4>>2]=C;h[k>>3]=+ce(c[c[f>>2]>>2]|0);h[g>>3]=+h[k>>3]-+h[c[j>>2]>>3];a=(c[j>>2]|0)+16|0;m=c[j>>2]|0;h[m>>3]=+h[m>>3]+ +h[g>>3]/(+((c[a>>2]|0)>>>0)+4294967296.0*+(c[a+4>>2]|0));m=(c[j>>2]|0)+8|0;h[m>>3]=+h[m>>3]+ +h[g>>3]*(+h[k>>3]-+h[c[j>>2]>>3]);i=l;return}function Wc(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=xe(c[b>>2]|0,0)|0;if((c[d>>2]|0)!=0?(a=(c[d>>2]|0)+16|0,f=c[a+4>>2]|0,(f|0)>0|(f|0)==0&(c[a>>2]|0)>>>0>1):0){a=c[b>>2]|0;g=+h[(c[d>>2]|0)+8>>3];f=(c[d>>2]|0)+16|0;f=fR(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;ie(a,+O(+(g/(+(f>>>0)+4294967296.0*+(C|0)))));i=e;return}ie(c[b>>2]|0,0.0);i=e;return}function Xc(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=xe(c[b>>2]|0,0)|0;if((c[d>>2]|0)!=0?(a=(c[d>>2]|0)+16|0,f=c[a+4>>2]|0,(f|0)>0|(f|0)==0&(c[a>>2]|0)>>>0>1):0){a=c[b>>2]|0;g=+h[(c[d>>2]|0)+8>>3];f=(c[d>>2]|0)+16|0;f=fR(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;ie(a,g/(+(f>>>0)+4294967296.0*+(C|0)));i=e;return}ie(c[b>>2]|0,0.0);i=e;return}function Yc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+80|0;e=q+64|0;r=q+60|0;f=q+56|0;n=q+52|0;p=q+8|0;o=q;m=q+48|0;l=q+44|0;k=q+40|0;g=q+28|0;j=q+16|0;c[e>>2]=a;c[r>>2]=b;c[f>>2]=d;a=p;c[a>>2]=0;c[a+4>>2]=0;h[o>>3]=0.0;if((c[r>>2]|0)!=1)Sa(17590,17598,1418,18453);c[k>>2]=Te(c[c[f>>2]>>2]|0)|0;if((c[k>>2]|0)==5){i=q;return}c[n>>2]=xe(c[e>>2]|0,64)|0;do if(!(c[(c[n>>2]|0)+56>>2]|0)){e=aR(1,12)|0;c[(c[n>>2]|0)+56>>2]=e;e=c[n>>2]|0;if((c[k>>2]|0)==1){r=c[e+56>>2]|0;bd(g,176);c[r>>2]=c[g>>2];c[r+4>>2]=c[g+4>>2];c[r+8>>2]=c[g+8>>2];r=(c[n>>2]|0)+48|0;c[r>>2]=0;c[r+4>>2]=0;break}else{r=e+48|0;c[r>>2]=1;c[r+4>>2]=0;r=c[(c[n>>2]|0)+56>>2]|0;bd(j,177);c[r>>2]=c[j>>2];c[r+4>>2]=c[j+4>>2];c[r+8>>2]=c[j+8>>2];break}}while(0);r=(c[n>>2]|0)+16|0;e=r;e=gR(c[e>>2]|0,c[e+4>>2]|0,1,0)|0;c[r>>2]=e;c[r+4>>2]=C;r=(c[n>>2]|0)+48|0;e=c[c[f>>2]>>2]|0;if(0==(c[r>>2]|0)?0==(c[r+4>>2]|0):0){r=ee(e)|0;o=p;c[o>>2]=r;c[o+4>>2]=C;c[m>>2]=aR(1,8)|0;o=p;p=c[o+4>>2]|0;r=c[m>>2]|0;c[r>>2]=c[o>>2];c[r+4>>2]=p;fd(c[(c[n>>2]|0)+56>>2]|0,c[m>>2]|0);i=q;return}else{h[o>>3]=+ce(e);c[l>>2]=aR(1,8)|0;h[c[l>>2]>>3]=+h[o>>3];fd(c[(c[n>>2]|0)+56>>2]|0,c[l>>2]|0);i=q;return}}function Zc(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=xe(c[b>>2]|0,0)|0;if(!(c[d>>2]|0)){i=e;return}if(!(c[(c[d>>2]|0)+56>>2]|0)){i=e;return}hd(c[(c[d>>2]|0)+56>>2]|0,131,c[d>>2]|0);jd(c[(c[d>>2]|0)+56>>2]|0);$Q(c[(c[d>>2]|0)+56>>2]|0);a=(c[d>>2]|0)+40|0;if(!(1==(c[a>>2]|0)?0==(c[a+4>>2]|0):0)){i=e;return}f=(c[d>>2]|0)+48|0;a=c[b>>2]|0;b=c[d>>2]|0;if(0==(c[f>>2]|0)?0==(c[f+4>>2]|0):0){f=b;le(a,c[f>>2]|0,c[f+4>>2]|0);i=e;return}else{ie(a,+h[b+8>>3]);i=e;return}}function _c(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=xe(c[b>>2]|0,0)|0;if(!(c[d>>2]|0)){i=e;return}a=(c[d>>2]|0)+16|0;h[(c[d>>2]|0)+24>>3]=(+((c[a>>2]|0)>>>0)+4294967296.0*+(c[a+4>>2]|0))/2.0;wd(c[b>>2]|0);i=e;return}function $c(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=xe(c[b>>2]|0,0)|0;if(!(c[d>>2]|0)){i=e;return}a=(c[d>>2]|0)+16|0;h[(c[d>>2]|0)+24>>3]=(+((c[a>>2]|0)>>>0)+4294967296.0*+(c[a+4>>2]|0))/4.0;wd(c[b>>2]|0);i=e;return}function ad(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=xe(c[b>>2]|0,0)|0;if(!(c[d>>2]|0)){i=e;return}a=(c[d>>2]|0)+16|0;a=rR(c[a>>2]|0,c[a+4>>2]|0,3,0)|0;h[(c[d>>2]|0)+24>>3]=(+(a>>>0)+4294967296.0*+(C|0))/4.0;wd(c[b>>2]|0);i=e;return}function bd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+12|0;e=d;c[f>>2]=b;c[e+4>>2]=c[f>>2];c[e>>2]=0;c[a>>2]=c[e>>2];c[a+4>>2]=c[e+4>>2];c[a+8>>2]=c[e+8>>2];i=d;return}function cd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=i;i=i+16|0;h=f+12|0;g=f+8|0;e=f;c[h>>2]=a;c[g>>2]=b;c[f+4>>2]=d;c[e>>2]=aR(c[h>>2]|0,c[g>>2]|0)|0;i=f;return c[e>>2]|0}function dd(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;$Q(c[d>>2]|0);i=b;return}function ed(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;g=k+12|0;h=k+8|0;j=k+4|0;f=k;c[e>>2]=a;c[g>>2]=b;c[h>>2]=d;if(!(c[c[e>>2]>>2]|0)){c[f>>2]=cd(1,24,17581)|0;c[(c[f>>2]|0)+8>>2]=c[h>>2];j=(c[f>>2]|0)+16|0;c[j>>2]=1;c[j+4>>2]=0;c[c[e>>2]>>2]=c[f>>2];i=k;return}c[j>>2]=Yb[c[g>>2]&255](c[(c[c[e>>2]>>2]|0)+8>>2]|0,c[h>>2]|0)|0;if(!(c[j>>2]|0)){j=(c[c[e>>2]>>2]|0)+16|0;g=j;g=gR(c[g>>2]|0,c[g+4>>2]|0,1,0)|0;c[j>>2]=g;c[j+4>>2]=C;dd(c[h>>2]|0);i=k;return}e=c[c[e>>2]>>2]|0;if((c[j>>2]|0)>0){ed(e,c[g>>2]|0,c[h>>2]|0);i=k;return}else{ed(e+4|0,c[g>>2]|0,c[h>>2]|0);i=k;return}}function fd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;ed(c[f>>2]|0,c[(c[f>>2]|0)+4>>2]|0,c[e>>2]|0);i=d;return}function gd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(!(c[e>>2]|0)){i=h;return}if(c[c[e>>2]>>2]|0)gd(c[c[e>>2]>>2]|0,c[f>>2]|0,c[g>>2]|0);d=(c[e>>2]|0)+16|0;_b[c[f>>2]&255](c[(c[e>>2]|0)+8>>2]|0,c[d>>2]|0,c[d+4>>2]|0,c[g>>2]|0);if(!(c[(c[e>>2]|0)+4>>2]|0)){i=h;return}gd(c[(c[e>>2]|0)+4>>2]|0,c[f>>2]|0,c[g>>2]|0);i=h;return}function hd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;gd(c[c[h>>2]>>2]|0,c[g>>2]|0,c[f>>2]|0);i=e;return}function id(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[b>>2]|0)){i=d;return}dd(c[(c[b>>2]|0)+8>>2]|0);if(c[c[b>>2]>>2]|0)id(c[c[b>>2]>>2]|0);if(c[(c[b>>2]|0)+4>>2]|0)id(c[(c[b>>2]|0)+4>>2]|0);dd(c[b>>2]|0);i=d;return}function jd(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;id(c[c[d>>2]>>2]|0);i=b;return}function kd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;g=i;i=i+32|0;d=g+24|0;j=g+20|0;h=g+16|0;e=g+8|0;f=g;c[j>>2]=a;c[h>>2]=b;j=c[j>>2]|0;a=c[j+4>>2]|0;b=e;c[b>>2]=c[j>>2];c[b+4>>2]=a;h=c[h>>2]|0;b=c[h+4>>2]|0;a=f;c[a>>2]=c[h>>2];c[a+4>>2]=b;a=e;b=f;if((c[a>>2]|0)==(c[b>>2]|0)?(c[a+4>>2]|0)==(c[b+4>>2]|0):0){c[d>>2]=0;j=c[d>>2]|0;i=g;return j|0}h=e;b=c[h+4>>2]|0;j=f;f=c[j+4>>2]|0;if((b|0)<(f|0)|((b|0)==(f|0)?(c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0:0)){c[d>>2]=-1;j=c[d>>2]|0;i=g;return j|0}else{c[d>>2]=1;j=c[d>>2]|0;i=g;return j|0}return 0}function ld(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0;g=i;i=i+32|0;d=g+24|0;k=g+20|0;j=g+16|0;e=g+8|0;f=g;c[k>>2]=a;c[j>>2]=b;h[e>>3]=+h[c[k>>2]>>3];h[f>>3]=+h[c[j>>2]>>3];do if(!(+h[e>>3]==+h[f>>3]))if(+h[e>>3]<+h[f>>3]){c[d>>2]=-1;break}else{c[d>>2]=1;break}else c[d>>2]=0;while(0);i=g;return c[d>>2]|0}function md(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;j=l+12|0;h=l+8|0;k=l+4|0;g=l;c[f>>2]=b;c[j>>2]=e;c[h>>2]=0;while(1){if(!(d[(c[f>>2]|0)+(c[h>>2]|0)>>0]|0))break;if(!((MP(d[(c[f>>2]|0)+(c[h>>2]|0)>>0]|0)|0)!=0^1))break;c[h>>2]=(c[h>>2]|0)+1}if(!(a[(c[f>>2]|0)+(c[h>>2]|0)>>0]|0)){zQ(c[j>>2]|0,17839)|0;i=l;return}e=(RP(d[(c[f>>2]|0)+(c[h>>2]|0)>>0]|0)|0)&255;a[c[j>>2]>>0]=e;c[k>>2]=1;while(1){if((c[k>>2]|0)>=4)break;if(!(d[(c[f>>2]|0)+(c[h>>2]|0)>>0]|0))break;c[g>>2]=d[17711+(d[(c[f>>2]|0)+(c[h>>2]|0)>>0]&127)>>0];if((c[g>>2]|0)>0){b=(c[g>>2]|0)+48&255;e=c[k>>2]|0;c[k>>2]=e+1;a[(c[j>>2]|0)+e>>0]=b}c[h>>2]=(c[h>>2]|0)+1}while(1){f=c[k>>2]|0;if((c[k>>2]|0)>=4)break;c[k>>2]=f+1;a[(c[j>>2]|0)+f>>0]=48}a[(c[j>>2]|0)+f>>0]=0;i=l;return}function nd(a){a=a|0;var b=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;b=h+8|0;e=h+4|0;f=h;c[b>>2]=a;a=c[b>>2]|0;c[b>>2]=a+1;c[e>>2]=d[a>>0];c[f>>2]=d[17844+(c[e>>2]|0)>>0];switch(c[f>>2]|0){case 4:{c[e>>2]=65533;g=c[e>>2]|0;i=h;return g|0}case 3:{a=c[e>>2]<<6;g=c[b>>2]|0;c[b>>2]=g+1;c[e>>2]=a+(d[g>>0]|0);g=4;break}case 2:{g=4;break}case 1:break;default:{g=c[e>>2]|0;i=h;return g|0}}if((g|0)==4){a=c[e>>2]<<6;g=c[b>>2]|0;c[b>>2]=g+1;c[e>>2]=a+(d[g>>0]|0)}a=c[e>>2]<<6;g=c[b>>2]|0;c[b>>2]=g+1;c[e>>2]=a+(d[g>>0]|0);c[e>>2]=(c[e>>2]|0)-(c[928+(c[f>>2]<<2)>>2]|0);if(((c[944+(c[f>>2]<<2)>>2]&c[e>>2]|0)!=0?(c[e>>2]&-2048|0)!=55296:0)?(c[e>>2]&-2|0)!=65534:0){g=c[e>>2]|0;i=h;return g|0}c[e>>2]=65533;g=c[e>>2]|0;i=h;return g|0}function od(a){a=+a;var b=0,c=0;c=i;i=i+16|0;b=c;h[b>>3]=a;i=c;return+(+h[b>>3]*180.0/3.141592653589793)}function pd(a){a=+a;var b=0,c=0;c=i;i=i+16|0;b=c;h[b>>3]=a;i=c;return+(+h[b>>3]*3.141592653589793/180.0)}function qd(a){a=+a;var b=0,c=0;b=i;i=i+16|0;c=b;h[c>>3]=a;a=1.0/+S(+ +h[c>>3]);i=b;return+a}function rd(a){a=+a;var b=0,c=0;b=i;i=i+16|0;c=b;h[c>>3]=a;a=1.0/+fQ(+h[c>>3]);i=b;return+a}function sd(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;g=t+40|0;h=t+36|0;j=t+32|0;k=t+28|0;l=t+24|0;m=t+20|0;p=t+16|0;q=t+12|0;r=t+8|0;n=t+4|0;o=t;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=0;c[p>>2]=-1;if(!(a[c[h>>2]>>0]|0)){c[g>>2]=-1;s=c[g>>2]|0;i=t;return s|0}a:while(1){if(!(nd(c[j>>2]|0)|0))break;d=c[m>>2]|0;c[m>>2]=d+1;if((d|0)>=(c[k>>2]|0))break;while(1){d=(c[j>>2]|0)+1|0;c[j>>2]=d;if((192&a[d>>0]|0)!=128)continue a}}c[m>>2]=0;while(1){if(!(nd(c[j>>2]|0)|0))break;c[q>>2]=c[h>>2];c[r>>2]=c[j>>2];do{c[n>>2]=nd(c[q>>2]|0)|0;c[o>>2]=nd(c[r>>2]|0)|0;do{d=(c[q>>2]|0)+1|0;c[q>>2]=d}while((192&a[d>>0]|0)==128);do{d=(c[r>>2]|0)+1|0;c[r>>2]=d}while((192&a[d>>0]|0)==128)}while(((c[n>>2]|0)!=0?(c[n>>2]|0)==(c[o>>2]|0):0)&(c[o>>2]|0)!=0);if(!(c[n>>2]|0)){s=14;break}do{d=(c[j>>2]|0)+1|0;c[j>>2]=d}while((192&a[d>>0]|0)==128);c[m>>2]=(c[m>>2]|0)+1}if((s|0)==14)c[p>>2]=c[m>>2];if(c[l>>2]|0)c[c[l>>2]>>2]=c[j>>2];s=c[p>>2]|0;c[g>>2]=(c[p>>2]|0)>=0?s+(c[k>>2]|0)|0:s;s=c[g>>2]|0;i=t;return s|0}function td(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=Id((BQ(c[d>>2]|0)|0)+1|0)|0;a=zQ(c[e>>2]|0,c[d>>2]|0)|0;i=b;return a|0}function ud(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[f>>2]=b;c[g>>2]=e;c[j>>2]=0;if((c[g>>2]|0)>=0)c[h>>2]=(c[f>>2]|0)+(c[g>>2]|0);else c[h>>2]=-1;if((c[f>>2]|0)>>>0>(c[h>>2]|0)>>>0)Sa(18380,17598,316,18389);while(1){if(!(a[c[f>>2]>>0]|0)){f=10;break}if((c[f>>2]|0)>>>0>=(c[h>>2]|0)>>>0){f=10;break}c[f>>2]=(c[f>>2]|0)+((d[17844+(d[c[f>>2]>>0]|0)>>0]|0)+1);c[j>>2]=(c[j>>2]|0)+1}if((f|0)==10){i=k;return c[j>>2]|0}return 0}function vd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+48|0;m=l+32|0;j=l+16|0;n=l+28|0;g=l+8|0;f=l;k=l+24|0;c[m>>2]=a;a=j;c[a>>2]=b;c[a+4>>2]=d;c[n>>2]=e;c[k>>2]=c[n>>2];e=(c[k>>2]|0)+48|0;b=c[m>>2]|0;if(0==(c[e>>2]|0)?0==(c[e+4>>2]|0):0){n=c[b>>2]|0;m=g;c[m>>2]=n;c[m+4>>2]=((n|0)<0)<<31>>31;m=(c[k>>2]|0)+32|0;n=j;b=c[k>>2]|0;if((c[m>>2]|0)==(c[n>>2]|0)?(c[m+4>>2]|0)==(c[n+4>>2]|0):0){n=b+40|0;m=n;m=gR(c[m>>2]|0,c[m+4>>2]|0,1,0)|0;c[n>>2]=m;c[n+4>>2]=C;i=l;return}m=b+32|0;e=c[m+4>>2]|0;n=j;f=c[n+4>>2]|0;if(!((e|0)<(f|0)|((e|0)==(f|0)?(c[m>>2]|0)>>>0<(c[n>>2]|0)>>>0:0))){i=l;return}n=c[g+4>>2]|0;m=c[k>>2]|0;c[m>>2]=c[g>>2];c[m+4>>2]=n;m=c[j+4>>2]|0;n=(c[k>>2]|0)+32|0;c[n>>2]=c[j>>2];c[n+4>>2]=m;n=(c[k>>2]|0)+40|0;c[n>>2]=1;c[n+4>>2]=0;i=l;return}else{h[f>>3]=+h[b>>3];m=(c[k>>2]|0)+32|0;n=j;b=c[k>>2]|0;if((c[m>>2]|0)==(c[n>>2]|0)?(c[m+4>>2]|0)==(c[n+4>>2]|0):0){n=b+40|0;m=n;m=gR(c[m>>2]|0,c[m+4>>2]|0,1,0)|0;c[n>>2]=m;c[n+4>>2]=C;i=l;return}m=b+32|0;e=c[m+4>>2]|0;n=j;g=c[n+4>>2]|0;if(!((e|0)<(g|0)|((e|0)==(g|0)?(c[m>>2]|0)>>>0<(c[n>>2]|0)>>>0:0))){i=l;return}h[(c[k>>2]|0)+8>>3]=+h[f>>3];m=c[j+4>>2]|0;n=(c[k>>2]|0)+32|0;c[n>>2]=c[j>>2];c[n+4>>2]=m;n=(c[k>>2]|0)+40|0;c[n>>2]=1;c[n+4>>2]=0;i=l;return}}function wd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=i;i=i+16|0;b=f+4|0;e=f;c[b>>2]=a;c[e>>2]=xe(c[b>>2]|0,0)|0;if(!(c[e>>2]|0)){i=f;return}if(!(c[(c[e>>2]|0)+56>>2]|0)){i=f;return}c[(c[e>>2]|0)+60>>2]=0;hd(c[(c[e>>2]|0)+56>>2]|0,132,c[e>>2]|0);jd(c[(c[e>>2]|0)+56>>2]|0);$Q(c[(c[e>>2]|0)+56>>2]|0);d=(c[e>>2]|0)+48|0;if(!(0==(c[d>>2]|0)?0==(c[d+4>>2]|0):0)){d=(c[e>>2]|0)+40|0;ie(c[b>>2]|0,+h[(c[e>>2]|0)+8>>3]/(+((c[d>>2]|0)>>>0)+4294967296.0*+(c[d+4>>2]|0)));i=f;return}g=(c[e>>2]|0)+40|0;b=c[b>>2]|0;d=c[e>>2]|0;a=c[d>>2]|0;d=c[d+4>>2]|0;if(1==(c[g>>2]|0)?0==(c[g+4>>2]|0):0){le(b,a,d);i=f;return}else{g=(c[e>>2]|0)+40|0;ie(b,(+(a>>>0)+4294967296.0*+(d|0))*1.0/(+((c[g>>2]|0)>>>0)+4294967296.0*+(c[g+4>>2]|0)));i=f;return}}function xd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+64|0;j=q+56|0;m=q+32|0;r=q+52|0;o=q+24|0;n=q+16|0;f=q+8|0;k=q;g=q+48|0;l=q+44|0;p=q+40|0;c[j>>2]=a;a=m;c[a>>2]=b;c[a+4>>2]=d;c[r>>2]=e;c[p>>2]=c[r>>2];if((c[(c[p>>2]|0)+60>>2]|0)>0){i=q;return}h[f>>3]=+h[(c[p>>2]|0)+24>>3];r=(c[p>>2]|0)+16|0;h[k>>3]=+((c[r>>2]|0)>>>0)+4294967296.0*+(c[r+4>>2]|0)-+h[(c[p>>2]|0)+24>>3];r=(c[p>>2]|0)+32|0;e=m;e=gR(c[r>>2]|0,c[r+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;c[g>>2]=e;e=(c[p>>2]|0)+16|0;r=(c[p>>2]|0)+32|0;r=fR(c[e>>2]|0,c[e+4>>2]|0,c[r>>2]|0,c[r+4>>2]|0)|0;c[l>>2]=r;do if(+(c[g>>2]|0)>=+h[f>>3]){b=c[p>>2]|0;if(!(+(c[l>>2]|0)>=+h[k>>3])){c[b+60>>2]=1;break}r=b+40|0;b=r;b=gR(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;c[r>>2]=b;c[r+4>>2]=C;r=(c[p>>2]|0)+48|0;b=c[j>>2]|0;if(0==(c[r>>2]|0)?0==(c[r+4>>2]|0):0){n=c[b>>2]|0;r=o;c[r>>2]=n;c[r+4>>2]=((n|0)<0)<<31>>31;r=c[p>>2]|0;n=r;o=gR(c[n>>2]|0,c[n+4>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0;c[r>>2]=o;c[r+4>>2]=C;break}else{h[n>>3]=+h[b>>3];r=(c[p>>2]|0)+8|0;h[r>>3]=+h[r>>3]+ +h[n>>3];break}}while(0);o=m;r=(c[p>>2]|0)+32|0;p=r;p=gR(c[p>>2]|0,c[p+4>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0;c[r>>2]=p;c[r+4>>2]=C;i=q;return}function yd(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h+12|0;d=h+8|0;e=h+4|0;f=h;c[d>>2]=b;if(!(zd(c[d>>2]|0,18469,7)|0))c[d>>2]=(c[d>>2]|0)+7;c[f>>2]=If(c[d>>2]|0)|0;c[e>>2]=0;while(1){if((c[e>>2]|0)>=7){d=9;break}if((zd(c[d>>2]|0,c[968+(c[e>>2]<<2)>>2]|0,c[f>>2]|0)|0)==0?(Jf(a[(c[968+(c[e>>2]<<2)>>2]|0)+(c[f>>2]|0)>>0]|0)|0)==0:0){d=7;break}c[e>>2]=(c[e>>2]|0)+1}if((d|0)==7){c[g>>2]=1;g=c[g>>2]|0;i=h;return g|0}else if((d|0)==9){c[g>>2]=0;g=c[g>>2]|0;i=h;return g|0}return 0}function zd(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;l=m+20|0;f=m+16|0;g=m+12|0;h=m+8|0;j=m+4|0;k=m;c[f>>2]=a;c[g>>2]=b;c[h>>2]=e;e=c[g>>2]|0;if(!(c[f>>2]|0)){c[l>>2]=(e|0)!=0?-1:0;l=c[l>>2]|0;i=m;return l|0}if(!e){c[l>>2]=1;l=c[l>>2]|0;i=m;return l|0}c[j>>2]=c[f>>2];c[k>>2]=c[g>>2];while(1){g=c[h>>2]|0;c[h>>2]=g+-1;if((g|0)<=0)break;if(!(d[c[j>>2]>>0]|0))break;if((d[18477+(d[c[j>>2]>>0]|0)>>0]|0|0)!=(d[18477+(d[c[k>>2]>>0]|0)>>0]|0|0))break;c[j>>2]=(c[j>>2]|0)+1;c[k>>2]=(c[k>>2]|0)+1}if((c[h>>2]|0)<0)e=0;else e=(d[18477+(d[c[j>>2]>>0]|0)>>0]|0)-(d[18477+(d[c[k>>2]>>0]|0)>>0]|0)|0;c[l>>2]=e;l=c[l>>2]|0;i=m;return l|0}function Ad(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[d>>2]=a;if((c[d>>2]|0)>=0&(c[d>>2]|0)<7){c[b>>2]=c[968+(c[d>>2]<<2)>>2];a=c[b>>2]|0;i=e;return a|0}else{c[b>>2]=0;a=c[b>>2]|0;i=e;return a|0}return 0}function Bd(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;g=m+20|0;h=m+16|0;j=m+12|0;k=m+8|0;l=m+4|0;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;if((c[h>>2]|0)<0|(c[h>>2]|0)>=10){c[g>>2]=Kf(16368)|0;l=c[g>>2]|0;i=m;return l|0}if(a[18733+(c[h>>2]|0)>>0]|0)b=Lf()|0;else b=Mf()|0;c[m>>2]=b;j=c[j>>2]|0;c[j>>2]=c[996+(c[h>>2]<<2)>>2];c[j+4>>2]=0;k=c[k>>2]|0;c[k>>2]=c[1036+(c[h>>2]<<2)>>2];c[k+4>>2]=0;if(c[l>>2]|0)c[1036+(c[h>>2]<<2)>>2]=c[996+(c[h>>2]<<2)>>2];c[g>>2]=0;l=c[g>>2]|0;i=m;return l|0}function Cd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=i;i=i+16|0;b=f+12|0;d=f+8|0;e=f+4|0;g=f;c[d>>2]=a;c[e>>2]=0;c[g>>2]=Dd()|0;if(c[g>>2]|0){c[b>>2]=0;g=c[b>>2]|0;i=f;return g|0}c[e>>2]=c[269];while(1){if((c[e>>2]|0)==0|(c[d>>2]|0)==0)break;if(!(yQ(c[d>>2]|0,c[(c[e>>2]|0)+16>>2]|0)|0))break;c[e>>2]=c[(c[e>>2]|0)+12>>2]}c[b>>2]=c[e>>2];g=c[b>>2]|0;i=f;return g|0}function Dd(){var a=0,b=0,d=0,e=0,f=0;f=i;i=i+16|0;d=f+8|0;e=f+4|0;a=f;if(c[59]|0){c[d>>2]=0;e=c[d>>2]|0;i=f;return e|0}c[e>>2]=0;if(c[e>>2]|0){c[d>>2]=c[e>>2];e=c[d>>2]|0;i=f;return e|0}c[61]=1;if(!(c[62]|0))c[e>>2]=Tf()|0;if(((c[e>>2]|0)==0?(c[62]=1,(c[65]|0)==0):0)?(c[65]=8,!((c[3]|0)==0|(c[65]|0)!=0)):0)c[e>>2]=7;if(!(c[e>>2]|0))c[64]=(c[64]|0)+1;if(c[e>>2]|0){c[d>>2]=c[e>>2];e=c[d>>2]|0;i=f;return e|0}if((c[59]|0)==0&(c[60]|0)==0){c[a>>2]=1080;c[60]=1;a=c[a>>2]|0;b=a+92|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));Uf();if(!(c[63]|0))c[e>>2]=Vf()|0;if(!(c[e>>2]|0)){c[63]=1;c[e>>2]=Wf()|0}if(!(c[e>>2]|0)){Xf(c[53]|0,c[54]|0,c[55]|0);c[59]=1}c[60]=0}c[64]=(c[64]|0)+-1;if((c[64]|0)<=0)c[65]=0;c[d>>2]=c[e>>2];e=c[d>>2]|0;i=f;return e|0}function Ed(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+12|0;f=h+8|0;g=h+4|0;d=h;c[f>>2]=a;c[g>>2]=b;c[d>>2]=Dd()|0;if(c[d>>2]|0){c[e>>2]=c[d>>2];g=c[e>>2]|0;i=h;return g|0}Yf(c[f>>2]|0);b=c[269]|0;if((c[g>>2]|0)!=0|(c[269]|0)==0){c[(c[f>>2]|0)+12>>2]=b;c[269]=c[f>>2]}else{c[(c[f>>2]|0)+12>>2]=c[b+12>>2];c[(c[269]|0)+12>>2]=c[f>>2]}c[e>>2]=0;g=c[e>>2]|0;i=h;return g|0}function Fd(a){a=a|0;var b=0;b=i;i=i+16|0;c[b>>2]=a;i=b;return 0}function Gd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;j=i;i=i+48|0;e=j+32|0;f=j+24|0;h=j+16|0;g=j+8|0;d=j;k=j+40|0;l=f;c[l>>2]=a;c[l+4>>2]=b;c[k>>2]=Dd()|0;if(c[k>>2]|0){k=e;c[k>>2]=-1;c[k+4>>2]=-1;k=e;l=k;l=c[l>>2]|0;k=k+4|0;k=c[k>>2]|0;C=k;i=j;return l|0}b=288;k=c[b+4>>2]|0;l=h;c[l>>2]=c[b>>2];c[l+4>>2]=k;if((c[f+4>>2]|0)<0){l=c[h+4>>2]|0;k=e;c[k>>2]=c[h>>2];c[k+4>>2]=l;k=e;l=k;l=c[l>>2]|0;k=k+4|0;k=c[k>>2]|0;C=k;i=j;return l|0}b=f;l=c[b+4>>2]|0;k=288;c[k>>2]=c[b>>2];c[k+4>>2]=l;k=Zf(0)|0;l=d;c[l>>2]=k;c[l+4>>2]=C;l=f;k=c[l+4>>2]|0;if((k|0)>0|(k|0)==0&(c[l>>2]|0)>>>0>0){l=f;b=c[l+4>>2]|0;a=d;k=c[a+4>>2]|0;a=(b|0)<(k|0)|((b|0)==(k|0)?(c[l>>2]|0)>>>0<=(c[a>>2]|0)>>>0:0)}else a=0;c[77]=a&1;l=Hd()|0;k=f;k=fR(l|0,C|0,c[k>>2]|0,c[k+4>>2]|0)|0;l=g;c[l>>2]=k;c[l+4>>2]=C;l=g;k=c[l+4>>2]|0;if((k|0)>0|(k|0)==0&(c[l>>2]|0)>>>0>0)Fd(c[g>>2]&2147483647)|0;l=c[h+4>>2]|0;k=e;c[k>>2]=c[h>>2];c[k+4>>2]=l;k=e;l=k;l=c[l>>2]|0;k=k+4|0;k=c[k>>2]|0;C=k;i=j;return l|0}function Hd(){var a=0,b=0;b=i;i=i+16|0;a=b+8|0;Bd(0,a,b,0)|0;C=c[a+4>>2]|0;i=b;return c[a>>2]|0}function Id(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;d=e+4|0;b=e;c[b>>2]=a;if(Dd()|0){c[d>>2]=0;d=c[d>>2]|0;i=e;return d|0}if((c[b>>2]|0)<=0)b=0;else{b=c[b>>2]|0;b=_f(b,((b|0)<0)<<31>>31)|0}c[d>>2]=b;d=c[d>>2]|0;i=e;return d|0}function Jd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+8|0;e=f;g=e;c[g>>2]=a;c[g+4>>2]=b;if(Dd()|0){c[d>>2]=0;g=c[d>>2]|0;i=f;return g|0}else{g=e;c[d>>2]=_f(c[g>>2]|0,c[g+4>>2]|0)|0;g=c[d>>2]|0;i=f;return g|0}return 0}function Kd(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[b>>2]|0)){i=d;return}if(c[2]|0){ag(0,$f(c[b>>2]|0)|0);ag(9,1);Qb[c[48>>2]&255](c[b>>2]|0);i=d;return}else{Qb[c[48>>2]&255](c[b>>2]|0);i=d;return}}function Ld(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[e>>2]=a;c[f>>2]=b;if(Dd()|0){c[d>>2]=0;a=c[d>>2]|0;i=g;return a|0}if((c[f>>2]|0)<0)c[f>>2]=0;a=c[f>>2]|0;c[d>>2]=bg(c[e>>2]|0,a,((a|0)<0)<<31>>31)|0;a=c[d>>2]|0;i=g;return a|0}function Md(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+12|0;f=h+8|0;g=h;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;if(Dd()|0){c[e>>2]=0;a=c[e>>2]|0;i=h;return a|0}else{a=g;c[e>>2]=bg(c[f>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;a=c[e>>2]|0;i=h;return a|0}return 0}function Nd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+128|0;d=j+40|0;e=j+36|0;f=j+32|0;h=j+28|0;g=j;c[e>>2]=a;c[f>>2]=b;if(Dd()|0){c[d>>2]=0;a=c[d>>2]|0;i=j;return a|0}else{cg(g,0,j+44|0,70,1e9);dg(g,c[e>>2]|0,c[f>>2]|0);c[h>>2]=eg(g)|0;c[d>>2]=c[h>>2];a=c[d>>2]|0;i=j;return a|0}return 0}function Od(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;d=h+28|0;e=h+24|0;f=h+8|0;g=h;c[e>>2]=a;if(Dd()|0){c[d>>2]=0;a=c[d>>2]|0;i=h;return a|0}else{c[f>>2]=b;c[g>>2]=Nd(c[e>>2]|0,f)|0;c[d>>2]=c[g>>2];a=c[d>>2]|0;i=h;return a|0}return 0}function Pd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+48|0;f=l+44|0;g=l+40|0;m=l+36|0;h=l+32|0;j=l+28|0;k=l;c[g>>2]=a;c[m>>2]=b;c[h>>2]=d;c[j>>2]=e;e=c[m>>2]|0;if((c[g>>2]|0)<=0){c[f>>2]=e;m=c[f>>2]|0;i=l;return m|0}else{cg(k,0,e,c[g>>2]|0,0);dg(k,c[h>>2]|0,c[j>>2]|0);c[f>>2]=eg(k)|0;m=c[f>>2]|0;i=l;return m|0}return 0}function Qd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;g=i;i=i+32|0;l=g+28|0;k=g+24|0;j=g+20|0;f=g+16|0;h=g;c[l>>2]=a;c[k>>2]=b;c[j>>2]=d;c[h>>2]=e;c[f>>2]=Pd(c[l>>2]|0,c[k>>2]|0,c[j>>2]|0,h)|0;i=g;return c[f>>2]|0}function Rd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+32|0;e=h+20|0;f=h+16|0;g=h;c[e>>2]=a;c[f>>2]=b;if(!(c[66]|0)){i=h;return}c[g>>2]=d;fg(c[e>>2]|0,c[f>>2]|0,g);i=h;return}function Sd(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+288|0;f=m+12|0;g=m+8|0;k=m+272|0;l=m+4|0;h=m;j=m+16|0;c[f>>2]=b;c[g>>2]=e;c[l>>2]=c[g>>2];if(Dd()|0){i=m;return}if((c[f>>2]|0)<=0|(c[g>>2]|0)==0){a[18743]=0;i=m;return}if(!(a[18743]|0)){a[18745]=0;a[18744]=0;gg(Cd(0)|0,256,j)|0;c[h>>2]=0;while(1){if((c[h>>2]|0)>=256)break;a[18746+(c[h>>2]|0)>>0]=c[h>>2];c[h>>2]=(c[h>>2]|0)+1}c[h>>2]=0;while(1){if((c[h>>2]|0)>=256)break;a[18745]=(d[18745]|0)+((d[18746+(c[h>>2]|0)>>0]|0)+(a[j+(c[h>>2]|0)>>0]|0));a[k>>0]=a[18746+(d[18745]|0)>>0]|0;a[18746+(d[18745]|0)>>0]=a[18746+(c[h>>2]|0)>>0]|0;a[18746+(c[h>>2]|0)>>0]=a[k>>0]|0;c[h>>2]=(c[h>>2]|0)+1}a[18743]=1}do{a[18744]=(a[18744]|0)+1<<24>>24;a[k>>0]=a[18746+(d[18744]|0)>>0]|0; -a[18745]=(d[18745]|0)+(d[k>>0]|0);a[18746+(d[18744]|0)>>0]=a[18746+(d[18745]|0)>>0]|0;a[18746+(d[18745]|0)>>0]=a[k>>0]|0;a[k>>0]=(d[k>>0]|0)+(d[18746+(d[18744]|0)>>0]|0);j=a[18746+(d[k>>0]|0)>>0]|0;e=c[l>>2]|0;c[l>>2]=e+1;a[e>>0]=j;e=(c[f>>2]|0)+-1|0;c[f>>2]=e}while((e|0)!=0);i=m;return}function Td(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;g=k+16|0;e=k+12|0;f=k+8|0;h=k+4|0;j=k;c[e>>2]=a;c[f>>2]=b;a=c[f>>2]|0;if(!(c[e>>2]|0)){c[g>>2]=(a|0)!=0?-1:0;j=c[g>>2]|0;i=k;return j|0}if(!a){c[g>>2]=1;j=c[g>>2]|0;i=k;return j|0}c[h>>2]=c[e>>2];c[j>>2]=c[f>>2];while(1){if(d[c[h>>2]>>0]|0)b=(d[18477+(d[c[h>>2]>>0]|0)>>0]|0|0)==(d[18477+(d[c[j>>2]>>0]|0)>>0]|0|0);else b=0;a=c[h>>2]|0;if(!b)break;c[h>>2]=a+1;c[j>>2]=(c[j>>2]|0)+1}c[g>>2]=(d[18477+(d[a>>0]|0)>>0]|0)-(d[18477+(d[c[j>>2]>>0]|0)>>0]|0);j=c[g>>2]|0;i=k;return j|0}function Ud(){var a=0,b=0;b=i;i=i+16|0;a=b;c[a>>2]=0;while(1){if((c[a>>2]|0)>>>0>=4)break;Ed(1172+((c[a>>2]|0)*88|0)|0,(c[a>>2]|0)==0&1)|0;c[a>>2]=(c[a>>2]|0)+1}i=b;return 0}function Vd(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=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,D=0,E=0,F=0;F=i;i=i+112|0;r=F+108|0;e=F+104|0;D=F+100|0;f=F+96|0;B=F+92|0;p=F+88|0;z=F+84|0;x=F+80|0;j=F+76|0;m=F+72|0;s=F+68|0;h=F+64|0;o=F+60|0;k=F+56|0;q=F+52|0;v=F+16|0;y=F+48|0;g=F+44|0;l=F+40|0;u=F+8|0;t=F;n=F+36|0;A=F+32|0;w=F+28|0;E=F+24|0;c[r>>2]=a;c[e>>2]=b;c[B>>2]=0;c[p>>2]=0;kg(c[(c[r>>2]|0)+24>>2]|0);c[D>>2]=c[(c[r>>2]|0)+28>>2];if(lg(c[D>>2]|0)|0){E=c[D>>2]|0;i=F;return E|0}c[z>>2]=Of(c[(c[r>>2]|0)+24>>2]|0)|0;c[x>>2]=Of(c[(c[r>>2]|0)+4>>2]|0)|0;c[m>>2]=-1;c[s>>2]=0;if((c[c[r>>2]>>2]|0)!=0?(d[(c[(c[(c[r>>2]|0)+24>>2]|0)+4>>2]|0)+20>>0]|0|0)==2:0)c[D>>2]=5;else c[D>>2]=0;if((0==(c[D>>2]|0)?(c[(c[r>>2]|0)+12>>2]|0)==0:0)?(a=mg(c[(c[r>>2]|0)+4>>2]|0,2)|0,c[D>>2]=a,0==(a|0)):0){c[(c[r>>2]|0)+12>>2]=1;ng(c[(c[r>>2]|0)+4>>2]|0,1,(c[r>>2]|0)+8|0)}if((c[D>>2]|0)==0?0==(og(c[(c[r>>2]|0)+24>>2]|0)|0):0){c[D>>2]=mg(c[(c[r>>2]|0)+24>>2]|0,0)|0;c[s>>2]=1}c[B>>2]=pg(c[(c[r>>2]|0)+24>>2]|0)|0;c[p>>2]=pg(c[(c[r>>2]|0)+4>>2]|0)|0;c[f>>2]=qg(Of(c[(c[r>>2]|0)+4>>2]|0)|0)|0;if(0==(c[D>>2]|0)&(c[f>>2]|0)==5?(c[B>>2]|0)!=(c[p>>2]|0):0)c[D>>2]=8;c[m>>2]=rg(c[(c[r>>2]|0)+24>>2]|0)|0;c[j>>2]=0;while(1){if((c[e>>2]|0)>=0?(c[j>>2]|0)>=(c[e>>2]|0):0)break;if((c[(c[r>>2]|0)+16>>2]|0)>>>0>(c[m>>2]|0)>>>0)break;if(!((c[D>>2]|0)!=0^1))break;c[h>>2]=c[(c[r>>2]|0)+16>>2];if((c[h>>2]|0)!=((((c[381]|0)>>>0)/((c[(c[(c[(c[r>>2]|0)+24>>2]|0)+4>>2]|0)+32>>2]|0)>>>0)|0)+1|0)?(c[D>>2]=sg(c[z>>2]|0,c[h>>2]|0,o,2)|0,(c[D>>2]|0)==0):0){b=c[r>>2]|0;a=c[h>>2]|0;c[D>>2]=ug(b,a,tg(c[o>>2]|0)|0,0)|0;vg(c[o>>2]|0)}a=(c[r>>2]|0)+16|0;c[a>>2]=(c[a>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+1}do if(!(c[D>>2]|0)){c[(c[r>>2]|0)+36>>2]=c[m>>2];c[(c[r>>2]|0)+32>>2]=(c[m>>2]|0)+1-(c[(c[r>>2]|0)+16>>2]|0);if((c[(c[r>>2]|0)+16>>2]|0)>>>0>(c[m>>2]|0)>>>0){c[D>>2]=101;break}if(!(c[(c[r>>2]|0)+40>>2]|0))wg(c[r>>2]|0)}while(0);if((c[D>>2]|0)==101){if(!(c[m>>2]|0)){c[D>>2]=xg(c[(c[r>>2]|0)+4>>2]|0)|0;c[m>>2]=1}if((c[D>>2]|0)==0|(c[D>>2]|0)==101)c[D>>2]=yg(c[(c[r>>2]|0)+4>>2]|0,1,(c[(c[r>>2]|0)+8>>2]|0)+1|0)|0;if(!(c[D>>2]|0)){if(c[c[r>>2]>>2]|0)zg(c[c[r>>2]>>2]|0);if((c[f>>2]|0)==5)c[D>>2]=Ag(c[(c[r>>2]|0)+4>>2]|0,2)|0}if(!(c[D>>2]|0)){if((c[B>>2]|0)<(c[p>>2]|0)){c[q>>2]=(c[p>>2]|0)/(c[B>>2]|0)|0;c[k>>2]=((c[m>>2]|0)+(c[q>>2]|0)-1|0)/(c[q>>2]|0)|0;if((c[k>>2]|0)==((((c[381]|0)>>>0)/((c[(c[(c[(c[r>>2]|0)+4>>2]|0)+4>>2]|0)+32>>2]|0)>>>0)|0)+1|0))c[k>>2]=(c[k>>2]|0)+-1}else c[k>>2]=_(c[m>>2]|0,(c[B>>2]|0)/(c[p>>2]|0)|0)|0;if((c[B>>2]|0)<(c[p>>2]|0)){q=c[B>>2]|0;o=c[m>>2]|0;o=rR(q|0,((q|0)<0)<<31>>31|0,o|0,((o|0)<0)<<31>>31|0)|0;q=v;c[q>>2]=o;c[q+4>>2]=C;c[y>>2]=Bg(c[x>>2]|0)|0;Cg(c[x>>2]|0,l);c[g>>2]=c[k>>2];while(1){if(c[D>>2]|0)break;if((c[g>>2]|0)>>>0>(c[l>>2]|0)>>>0)break;do if((c[g>>2]|0)!=((((c[381]|0)>>>0)/((c[(c[(c[(c[r>>2]|0)+4>>2]|0)+4>>2]|0)+32>>2]|0)>>>0)|0)+1|0)){c[D>>2]=sg(c[x>>2]|0,c[g>>2]|0,n,0)|0;if(c[D>>2]|0)break;c[D>>2]=Dg(c[n>>2]|0)|0;vg(c[n>>2]|0)}while(0);c[g>>2]=(c[g>>2]|0)+1}if(!(c[D>>2]|0))c[D>>2]=Eg(c[x>>2]|0,0,1)|0;o=(c[381]|0)+(c[p>>2]|0)|0;a=((o|0)<0)<<31>>31;q=v;n=c[q+4>>2]|0;if((a|0)<(n|0)|((a|0)==(n|0)?o>>>0<(c[q>>2]|0)>>>0:0)){f=(c[381]|0)+(c[p>>2]|0)|0;e=f;f=((f|0)<0)<<31>>31}else{f=v;e=c[f>>2]|0;f=c[f+4>>2]|0}p=t;c[p>>2]=e;c[p+4>>2]=f;p=(c[381]|0)+(c[B>>2]|0)|0;q=u;c[q>>2]=p;c[q+4>>2]=((p|0)<0)<<31>>31;while(1){if(c[D>>2]|0)break;p=u;n=c[p+4>>2]|0;q=t;o=c[q+4>>2]|0;if(!((n|0)<(o|0)|((n|0)==(o|0)?(c[p>>2]|0)>>>0<(c[q>>2]|0)>>>0:0)))break;c[A>>2]=0;p=u;q=c[B>>2]|0;q=pR(c[p>>2]|0,c[p+4>>2]|0,q|0,((q|0)<0)<<31>>31|0)|0;q=gR(q|0,C|0,1,0)|0;c[w>>2]=q;c[D>>2]=sg(c[z>>2]|0,c[w>>2]|0,A,0)|0;if(!(c[D>>2]|0)){c[E>>2]=tg(c[A>>2]|0)|0;q=u;c[D>>2]=Fg(c[y>>2]|0,c[E>>2]|0,c[B>>2]|0,c[q>>2]|0,c[q+4>>2]|0)|0}vg(c[A>>2]|0);p=c[B>>2]|0;q=u;p=gR(c[q>>2]|0,c[q+4>>2]|0,p|0,((p|0)<0)<<31>>31|0)|0;q=u;c[q>>2]=p;c[q+4>>2]=C}if(!(c[D>>2]|0)){E=v;c[D>>2]=Gg(c[y>>2]|0,c[E>>2]|0,c[E+4>>2]|0)|0}if(!(c[D>>2]|0))c[D>>2]=Hg(c[x>>2]|0,0)|0}else{Ig(c[x>>2]|0,c[k>>2]|0);c[D>>2]=Eg(c[x>>2]|0,0,0)|0}if(!(c[D>>2]|0)){E=Jg(c[(c[r>>2]|0)+4>>2]|0,0)|0;c[D>>2]=E;c[D>>2]=0==(E|0)?101:E}}}if(c[s>>2]|0){Kg(c[(c[r>>2]|0)+24>>2]|0,0)|0;Jg(c[(c[r>>2]|0)+24>>2]|0,0)|0}if((c[D>>2]|0)==3082)c[D>>2]=7;c[(c[r>>2]|0)+28>>2]=c[D>>2];E=c[D>>2]|0;i=F;return E|0}function Wd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;d=h+16|0;e=h+12|0;b=h+8|0;f=h+4|0;g=h;c[e>>2]=a;if(!(c[e>>2]|0)){c[d>>2]=0;g=c[d>>2]|0;i=h;return g|0}c[f>>2]=c[(c[e>>2]|0)+20>>2];kg(c[(c[e>>2]|0)+24>>2]|0);if(c[c[e>>2]>>2]|0){a=(c[(c[e>>2]|0)+24>>2]|0)+16|0;c[a>>2]=(c[a>>2]|0)+-1}if(c[(c[e>>2]|0)+40>>2]|0){c[b>>2]=Lg(Of(c[(c[e>>2]|0)+24>>2]|0)|0)|0;while(1){if((c[c[b>>2]>>2]|0)==(c[e>>2]|0))break;c[b>>2]=(c[c[b>>2]>>2]|0)+44}c[c[b>>2]>>2]=c[(c[e>>2]|0)+44>>2]}Mg(c[(c[e>>2]|0)+4>>2]|0,0,0)|0;if((c[(c[e>>2]|0)+28>>2]|0)==101)a=0;else a=c[(c[e>>2]|0)+28>>2]|0;c[g>>2]=a;if(c[c[e>>2]>>2]|0){jg(c[c[e>>2]>>2]|0,c[g>>2]|0);Ng(c[c[e>>2]>>2]|0)}if(c[c[e>>2]>>2]|0)Kd(c[e>>2]|0);Ng(c[f>>2]|0);c[d>>2]=c[g>>2];g=c[d>>2]|0;i=h;return g|0}function Xd(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=c[e>>2];if(!(c[b>>2]|0)){e=0;i=d;return e|0}e=c[(c[b>>2]|0)+168>>2]|0;i=d;return e|0}function Yd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;b=h+16|0;d=h+12|0;f=h+8|0;g=h+4|0;e=h;c[d>>2]=a;if(!(c[d>>2]|0))c[f>>2]=0;else{c[g>>2]=c[d>>2];c[e>>2]=c[c[g>>2]>>2];if(Og(c[g>>2]|0)|0){c[b>>2]=Kf(72362)|0;g=c[b>>2]|0;i=h;return g|0}a=(c[g>>2]|0)+128|0;d=c[a+4>>2]|0;if((d|0)>0|(d|0)==0&(c[a>>2]|0)>>>0>0)Pg(c[e>>2]|0,c[g>>2]|0);c[f>>2]=Qg(c[g>>2]|0)|0;c[f>>2]=Rg(c[e>>2]|0,c[f>>2]|0)|0;Ng(c[e>>2]|0)}c[b>>2]=c[f>>2];g=c[b>>2]|0;i=h;return g|0}function Zd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;e=g+8|0;f=g+4|0;d=g;c[b>>2]=a;if(!(c[b>>2]|0)){c[e>>2]=0;f=c[e>>2]|0;i=g;return f|0}c[f>>2]=c[b>>2];c[d>>2]=c[c[f>>2]>>2];a=(c[f>>2]|0)+128|0;b=c[a+4>>2]|0;if((b|0)>0|(b|0)==0&(c[a>>2]|0)>>>0>0)Pg(c[d>>2]|0,c[f>>2]|0);c[e>>2]=Sg(c[f>>2]|0)|0;Tg(c[f>>2]|0);c[e>>2]=Rg(c[d>>2]|0,c[e>>2]|0)|0;f=c[e>>2]|0;i=g;return f|0}function _d(a){a=a|0;var d=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;j=h+12|0;d=h+8|0;g=h+4|0;f=h;c[j>>2]=a;c[g>>2]=0;c[f>>2]=c[j>>2];c[d>>2]=0;while(1){if((c[d>>2]|0)>=(b[(c[f>>2]|0)+68>>1]|0))break;Ug((c[(c[f>>2]|0)+60>>2]|0)+((c[d>>2]|0)*40|0)|0);b[(c[(c[f>>2]|0)+60>>2]|0)+((c[d>>2]|0)*40|0)+8>>1]=1;c[d>>2]=(c[d>>2]|0)+1}if(!((e[(c[f>>2]|0)+88>>1]|0)>>>8&1)){j=c[g>>2]|0;i=h;return j|0}if(!(c[(c[f>>2]|0)+188>>2]|0)){j=c[g>>2]|0;i=h;return j|0}j=(c[f>>2]|0)+88|0;b[j>>1]=b[j>>1]&-9|8;j=c[g>>2]|0;i=h;return j|0}function $d(a){a=a|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h+8|0;d=h+4|0;f=h;c[d>>2]=a;c[f>>2]=c[d>>2];if(!((e[(c[f>>2]|0)+8>>1]|0)&18)){c[g>>2]=ae(c[d>>2]|0)|0;g=c[g>>2]|0;i=h;return g|0}if(Vg(c[f>>2]|0)|0){c[g>>2]=0;g=c[g>>2]|0;i=h;return g|0}a=(c[f>>2]|0)+8|0;b[a>>1]=e[a>>1]|0|16;if(c[(c[f>>2]|0)+12>>2]|0)d=c[(c[f>>2]|0)+16>>2]|0;else d=0;c[g>>2]=d;g=c[g>>2]|0;i=h;return g|0}function ae(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Wg(c[d>>2]|0,1)|0;i=b;return a|0}function be(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Xg(c[d>>2]|0,1)|0;i=b;return a|0}function ce(a){a=a|0;var b=0.0,d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;b=+Yg(c[e>>2]|0);i=d;return+b}function de(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Zg(c[d>>2]|0)|0;i=b;return a|0}function ee(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Zg(c[d>>2]|0)|0;i=b;return a|0}function fe(a){a=a|0;var b=0,f=0;f=i;i=i+16|0;b=f;c[b>>2]=a;i=f;return d[19002+((e[(c[b>>2]|0)+8>>1]|0)&31)>>0]|0|0}function ge(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;ah(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,0,c[g>>2]|0);i=f;return}function he(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,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;h=l+12|0;j=l;k=l+8|0;c[g>>2]=a;c[h>>2]=b;b=j;c[b>>2]=d;c[b+4>>2]=e;c[k>>2]=f;b=j;f=c[b+4>>2]|0;if(f>>>0>0|(f|0)==0&(c[b>>2]|0)>>>0>2147483647){bh(c[h>>2]|0,c[k>>2]|0,c[g>>2]|0)|0;i=l;return}else{ah(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,0,c[k>>2]|0);i=l;return}}function ie(a,b){a=a|0;b=+b;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+8|0;e=d;c[f>>2]=a;h[e>>3]=b;ch(c[c[f>>2]>>2]|0,+h[e>>3]);i=d;return}function je(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f+8|0;h=f+4|0;g=f;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;c[(c[j>>2]|0)+20>>2]=1;a[(c[j>>2]|0)+25>>0]=1;dh(c[c[j>>2]>>2]|0,c[h>>2]|0,c[g>>2]|0,1,-1)|0;i=f;return}function ke(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;a=c[f>>2]|0;eh(c[c[e>>2]>>2]|0,a,((a|0)<0)<<31>>31);i=d;return}function le(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;a=g;eh(c[c[f>>2]>>2]|0,c[a>>2]|0,c[a+4>>2]|0);i=e;return}function me(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;fh(c[c[d>>2]>>2]|0);i=b;return}function ne(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;ah(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,1,c[g>>2]|0);i=f;return}function oe(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;k=p+16|0;l=p+12|0;m=p;n=p+8|0;o=p+20|0;c[k>>2]=b;c[l>>2]=e;e=m;c[e>>2]=f;c[e+4>>2]=g;c[n>>2]=h;a[o>>0]=j;if((d[o>>0]|0)==4)a[o>>0]=(a[960]|0)==0?3:2;e=m;h=c[e+4>>2]|0;if(h>>>0>0|(h|0)==0&(c[e>>2]|0)>>>0>2147483647){bh(c[l>>2]|0,c[n>>2]|0,c[k>>2]|0)|0;i=p;return}else{ah(c[k>>2]|0,c[l>>2]|0,c[m>>2]|0,a[o>>0]|0,c[n>>2]|0);i=p;return}}function pe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;gh(c[c[f>>2]>>2]|0,c[e>>2]|0)|0;i=d;return}function qe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;h=i;i=i+32|0;e=h+16|0;f=h+12|0;g=h;k=h+8|0;c[f>>2]=a;j=g;c[j>>2]=b;c[j+4>>2]=d;c[k>>2]=c[c[f>>2]>>2];d=g;j=c[d+4>>2]|0;a=c[(c[(c[k>>2]|0)+32>>2]|0)+88>>2]|0;b=((a|0)<0)<<31>>31;if(j>>>0>b>>>0|((j|0)==(b|0)?(c[d>>2]|0)>>>0>a>>>0:0)){c[e>>2]=18;k=c[e>>2]|0;i=h;return k|0}else{hh(c[c[f>>2]>>2]|0,c[g>>2]|0);c[e>>2]=0;k=c[e>>2]|0;i=h;return k|0}return 0}function re(b,d){b=b|0;d=d|0;var f=0,g=0,h=0;h=i;i=i+16|0;f=h+4|0;g=h;c[f>>2]=b;c[g>>2]=d;c[(c[f>>2]|0)+20>>2]=c[g>>2];a[(c[f>>2]|0)+25>>0]=1;if(!((e[(c[c[f>>2]>>2]|0)+8>>1]|0)&1)){i=h;return}b=c[c[f>>2]>>2]|0;dh(b,ih(c[g>>2]|0)|0,-1,1,0)|0;i=h;return}function se(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;c[(c[e>>2]|0)+20>>2]=18;a[(c[e>>2]|0)+25>>0]=1;dh(c[c[e>>2]>>2]|0,19034,-1,1,0)|0;i=d;return}function te(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;fh(c[c[e>>2]>>2]|0);c[(c[e>>2]|0)+20>>2]=7;a[(c[e>>2]|0)+25>>0]=1;jh(c[(c[c[e>>2]>>2]|0)+32>>2]|0);i=d;return}function ue(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;e=o+32|0;f=o+28|0;j=o+24|0;k=o+20|0;m=o+16|0;g=o+12|0;h=o+8|0;l=o+4|0;n=o;c[f>>2]=d;c[j>>2]=0;c[k>>2]=0;c[m>>2]=c[f>>2];c[g>>2]=0;if(kh(c[m>>2]|0)|0){c[e>>2]=Kf(72913)|0;n=c[e>>2]|0;i=o;return n|0}c[h>>2]=c[c[m>>2]>>2];d=(c[m>>2]|0)+88|0;b[d>>1]=b[d>>1]&-513;while(1){d=lh(c[m>>2]|0)|0;c[j>>2]=d;if((d|0)!=17)break;d=c[g>>2]|0;c[g>>2]=d+1;if((d|0)>=50)break;c[l>>2]=c[(c[m>>2]|0)+76>>2];d=mh(c[m>>2]|0)|0;c[j>>2]=d;c[k>>2]=d;if(c[j>>2]|0)break;Zd(c[f>>2]|0)|0;if((c[l>>2]|0)<0)continue;d=(c[m>>2]|0)+88|0;b[d>>1]=b[d>>1]&-513|512}do if(c[k>>2]|0){c[n>>2]=ae(c[(c[h>>2]|0)+236>>2]|0)|0;Sf(c[h>>2]|0,c[(c[m>>2]|0)+44>>2]|0);if(a[(c[h>>2]|0)+65>>0]|0){c[(c[m>>2]|0)+44>>2]=0;c[j>>2]=7;c[(c[m>>2]|0)+80>>2]=7;break}else{n=nh(c[h>>2]|0,c[n>>2]|0)|0;c[(c[m>>2]|0)+44>>2]=n;c[(c[m>>2]|0)+80>>2]=c[k>>2];break}}while(0);c[j>>2]=Rg(c[h>>2]|0,c[j>>2]|0)|0;c[e>>2]=c[j>>2];n=c[e>>2]|0;i=o;return n|0}function ve(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[(c[b>>2]|0)+4>>2]|0)+4>>2]|0}function we(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[c[b>>2]>>2]|0)+32>>2]|0}function xe(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0;g=i;i=i+16|0;d=g+8|0;h=g+4|0;f=g;c[h>>2]=a;c[f>>2]=b;b=c[h>>2]|0;if(!((e[(c[(c[h>>2]|0)+8>>2]|0)+8>>1]|0)&8192)){c[d>>2]=oh(b,c[f>>2]|0)|0;h=c[d>>2]|0;i=g;return h|0}else{c[d>>2]=c[(c[b+8>>2]|0)+16>>2];h=c[d>>2]|0;i=g;return h|0}return 0}function ye(a){a=a|0;var b=0,d=0,f=0;d=i;i=i+16|0;f=d+4|0;b=d;c[f>>2]=a;c[b>>2]=c[f>>2];if(!(c[b>>2]|0)){f=0;i=d;return f|0}f=e[(c[b>>2]|0)+84>>1]|0;i=d;return f|0}function ze(a){a=a|0;var b=0,d=0,f=0,g=0;f=i;i=i+16|0;b=f+8|0;g=f+4|0;d=f;c[g>>2]=a;c[d>>2]=c[g>>2];if((c[d>>2]|0)!=0?(c[(c[d>>2]|0)+20>>2]|0)!=0:0){c[b>>2]=e[(c[d>>2]|0)+84>>1];g=c[b>>2]|0;i=f;return g|0}c[b>>2]=0;g=c[b>>2]|0;i=f;return g|0}function Ae(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;d=e;c[f>>2]=a;c[g>>2]=b;c[d>>2]=$d(qh(c[f>>2]|0,c[g>>2]|0)|0)|0;rh(c[f>>2]|0);i=e;return c[d>>2]|0}function Be(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;d=e;c[f>>2]=a;c[g>>2]=b;c[d>>2]=be(qh(c[f>>2]|0,c[g>>2]|0)|0)|0;rh(c[f>>2]|0);i=e;return c[d>>2]|0}function Ce(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+12|0;g=e+8|0;d=e;c[f>>2]=a;c[g>>2]=b;h[d>>3]=+ce(qh(c[f>>2]|0,c[g>>2]|0)|0);rh(c[f>>2]|0);i=e;return+ +h[d>>3]}function De(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;d=e;c[f>>2]=a;c[g>>2]=b;c[d>>2]=de(qh(c[f>>2]|0,c[g>>2]|0)|0)|0;rh(c[f>>2]|0);i=e;return c[d>>2]|0}function Ee(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+12|0;g=d+8|0;e=d;c[f>>2]=a;c[g>>2]=b;b=ee(qh(c[f>>2]|0,c[g>>2]|0)|0)|0;a=e;c[a>>2]=b;c[a+4>>2]=C;rh(c[f>>2]|0);a=e;C=c[a+4>>2]|0;i=d;return c[a>>2]|0}function Fe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;d=e;c[f>>2]=a;c[g>>2]=b;c[d>>2]=ae(qh(c[f>>2]|0,c[g>>2]|0)|0)|0;rh(c[f>>2]|0);i=e;return c[d>>2]|0}function Ge(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0;h=i;i=i+16|0;f=h+8|0;j=h+4|0;g=h;c[f>>2]=a;c[j>>2]=d;c[g>>2]=qh(c[f>>2]|0,c[j>>2]|0)|0;if(!((e[(c[g>>2]|0)+8>>1]|0)&2048)){j=c[f>>2]|0;rh(j);j=c[g>>2]|0;i=h;return j|0}j=(c[g>>2]|0)+8|0;b[j>>1]=(e[j>>1]|0)&-2049;j=(c[g>>2]|0)+8|0;b[j>>1]=e[j>>1]|0|4096;j=c[f>>2]|0;rh(j);j=c[g>>2]|0;i=h;return j|0}function He(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;d=e;c[f>>2]=a;c[g>>2]=b;c[d>>2]=fe(qh(c[f>>2]|0,c[g>>2]|0)|0)|0;rh(c[f>>2]|0);i=e;return c[d>>2]|0}function Ie(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=sh(c[f>>2]|0,c[e>>2]|0,169,0)|0;i=d;return a|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,j=0,k=0,l=0,m=0;g=i;i=i+32|0;m=g+16|0;l=g+12|0;k=g+8|0;j=g+4|0;h=g;c[m>>2]=a;c[l>>2]=b;c[k>>2]=d;c[j>>2]=e;c[h>>2]=f;d=th(c[m>>2]|0,c[l>>2]|0,c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,0)|0;i=g;return d|0}function Ke(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;l=k+20|0;e=k+16|0;f=k;j=k+12|0;g=k+8|0;c[l>>2]=a;c[e>>2]=b;h[f>>3]=d;c[g>>2]=c[l>>2];c[j>>2]=uh(c[g>>2]|0,c[e>>2]|0)|0;if(c[j>>2]|0){l=c[j>>2]|0;i=k;return l|0}ch((c[(c[g>>2]|0)+60>>2]|0)+(((c[e>>2]|0)-1|0)*40|0)|0,+h[f>>3]);l=c[j>>2]|0;i=k;return l|0}function Le(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;h=e;c[g>>2]=a;c[f>>2]=b;c[h>>2]=d;a=c[h>>2]|0;a=Me(c[g>>2]|0,c[f>>2]|0,a,((a|0)<0)<<31>>31)|0;i=e;return a|0}function Me(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;l=k+20|0;f=k+16|0;g=k;j=k+12|0;h=k+8|0;c[l>>2]=a;c[f>>2]=b;a=g;c[a>>2]=d;c[a+4>>2]=e;c[h>>2]=c[l>>2];c[j>>2]=uh(c[h>>2]|0,c[f>>2]|0)|0;if(c[j>>2]|0){l=c[j>>2]|0;i=k;return l|0}l=g;eh((c[(c[h>>2]|0)+60>>2]|0)+(((c[f>>2]|0)-1|0)*40|0)|0,c[l>>2]|0,c[l+4>>2]|0);l=c[j>>2]|0;i=k;return l|0}function Ne(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+12|0;f=e+8|0;d=e+4|0;g=e;c[h>>2]=a;c[f>>2]=b;c[g>>2]=c[h>>2];c[d>>2]=uh(c[g>>2]|0,c[f>>2]|0)|0;i=e;return c[d>>2]|0}function Oe(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,j=0,k=0,l=0,m=0;g=i;i=i+32|0;m=g+16|0;l=g+12|0;k=g+8|0;j=g+4|0;h=g;c[m>>2]=a;c[l>>2]=b;c[k>>2]=d;c[j>>2]=e;c[h>>2]=f;d=th(c[m>>2]|0,c[l>>2]|0,c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,1)|0;i=g;return d|0}function Pe(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;g=m+12|0;j=m+8|0;k=m+4|0;l=m;c[g>>2]=b;c[j>>2]=d;c[k>>2]=f;switch(fe(c[k>>2]|0)|0){case 1:{k=c[k>>2]|0;c[l>>2]=Me(c[g>>2]|0,c[j>>2]|0,c[k>>2]|0,c[k+4>>2]|0)|0;l=c[l>>2]|0;i=m;return l|0}case 2:{c[l>>2]=Ke(c[g>>2]|0,c[j>>2]|0,+h[c[k>>2]>>3])|0;l=c[l>>2]|0;i=m;return l|0}case 4:{b=c[g>>2]|0;g=c[j>>2]|0;d=c[k>>2]|0;if((e[(c[k>>2]|0)+8>>1]|0)&16384){c[l>>2]=Qe(b,g,c[d>>2]|0)|0;l=c[l>>2]|0;i=m;return l|0}else{c[l>>2]=Je(b,g,c[d+16>>2]|0,c[(c[k>>2]|0)+12>>2]|0,-1)|0;l=c[l>>2]|0;i=m;return l|0}}case 3:{c[l>>2]=th(c[g>>2]|0,c[j>>2]|0,c[(c[k>>2]|0)+16>>2]|0,c[(c[k>>2]|0)+12>>2]|0,-1,a[(c[k>>2]|0)+10>>0]|0)|0;l=c[l>>2]|0;i=m;return l|0}default:{c[l>>2]=Ne(c[g>>2]|0,c[j>>2]|0)|0;l=c[l>>2]|0;i=m;return l|0}}return 0}function Qe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;k=j+16|0;e=j+12|0;f=j+8|0;h=j+4|0;g=j;c[k>>2]=a;c[e>>2]=b;c[f>>2]=d;c[g>>2]=c[k>>2];c[h>>2]=uh(c[g>>2]|0,c[e>>2]|0)|0;if(c[h>>2]|0){k=c[h>>2]|0;i=j;return k|0}hh((c[(c[g>>2]|0)+60>>2]|0)+(((c[e>>2]|0)-1|0)*40|0)|0,c[f>>2]|0);k=c[h>>2]|0;i=j;return k|0}function Re(a){a=a|0;var d=0,e=0,f=0;e=i;i=i+16|0;f=e+4|0;d=e;c[f>>2]=a;c[d>>2]=c[f>>2];if(!(c[d>>2]|0)){f=0;i=e;return f|0}f=b[(c[d>>2]|0)+68>>1]|0;i=e;return f|0}function Se(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=c[f>>2]|0;b=c[e>>2]|0;b=vh(a,b,If(c[e>>2]|0)|0)|0;i=d;return b|0}function Te(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;c[d>>2]=fe(c[b>>2]|0)|0;if((c[d>>2]|0)!=3){a=c[d>>2]|0;i=f;return a|0}c[e>>2]=c[b>>2];xh(c[e>>2]|0,0);c[d>>2]=fe(c[b>>2]|0)|0;a=c[d>>2]|0;i=f;return a|0}function Ue(f,g,h,j,k,l,m,n){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=i;i=i+144|0;M=Q+48|0;L=Q+40|0;N=Q+32|0;E=Q+24|0;D=Q+16|0;C=Q+8|0;F=Q+132|0;o=Q+128|0;p=Q+124|0;G=Q+120|0;q=Q;r=Q+116|0;H=Q+112|0;x=Q+108|0;t=Q+104|0;K=Q+100|0;O=Q+96|0;A=Q+92|0;J=Q+88|0;I=Q+84|0;P=Q+80|0;z=Q+76|0;y=Q+72|0;v=Q+68|0;w=Q+64|0;B=Q+60|0;u=Q+56|0;s=Q+52|0;c[F>>2]=f;c[o>>2]=g;c[p>>2]=h;c[G>>2]=j;h=q;c[h>>2]=k;c[h+4>>2]=l;c[r>>2]=m;c[H>>2]=n;c[x>>2]=0;c[K>>2]=0;c[O>>2]=0;c[J>>2]=0;c[I>>2]=0;c[c[H>>2]>>2]=0;c[r>>2]=((c[r>>2]|0)!=0^1^1)&1;c[I>>2]=ph(c[F>>2]|0,28,0)|0;a:do if((c[I>>2]|0)!=0?(c[J>>2]=yh(c[F>>2]|0,544,0)|0,(c[J>>2]|0)!=0):0){while(1){kR(c[J>>2]|0,0,544)|0;c[c[J>>2]>>2]=c[F>>2];Sf(c[F>>2]|0,c[O>>2]|0);c[O>>2]=0;Nf(c[F>>2]|0);c[A>>2]=zh(c[J>>2]|0,0,c[p>>2]|0,c[o>>2]|0)|0;if((c[A>>2]|0)!=0?(d[(c[A>>2]|0)+42>>0]&16|0)!=0:0){c[A>>2]=0;h=c[J>>2]|0;c[C>>2]=c[p>>2];Ah(h,19057,C)}if((c[A>>2]|0)!=0?(d[(c[A>>2]|0)+42>>0]&32|0)!=0:0){c[A>>2]=0;h=c[J>>2]|0;c[D>>2]=c[p>>2];Ah(h,19087,D)}if((c[A>>2]|0)!=0?(c[(c[A>>2]|0)+12>>2]|0)!=0:0){c[A>>2]=0;h=c[J>>2]|0;c[E>>2]=c[p>>2];Ah(h,19123,E)}if(!(c[A>>2]|0)){k=13;break}c[t>>2]=0;while(1){if((c[t>>2]|0)>=(b[(c[A>>2]|0)+34>>1]|0))break;if(!(Td(c[(c[(c[A>>2]|0)+4>>2]|0)+((c[t>>2]|0)*24|0)>>2]|0,c[G>>2]|0)|0))break;c[t>>2]=(c[t>>2]|0)+1}if((c[t>>2]|0)==(b[(c[A>>2]|0)+34>>1]|0)){k=21;break}if(c[r>>2]|0){c[P>>2]=0;b:do if(c[(c[F>>2]|0)+24>>2]&524288){c[y>>2]=c[(c[A>>2]|0)+16>>2];while(1){if(!(c[y>>2]|0))break b;c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[(c[y>>2]|0)+20>>2]|0))break;if((c[(c[y>>2]|0)+36+(c[v>>2]<<3)>>2]|0)==(c[t>>2]|0))c[P>>2]=19165;c[v>>2]=(c[v>>2]|0)+1}c[y>>2]=c[(c[y>>2]|0)+4>>2]}}while(0);c[z>>2]=c[(c[A>>2]|0)+8>>2];while(1){if(!(c[z>>2]|0))break;c[w>>2]=0;while(1){if((c[w>>2]|0)>=(e[(c[z>>2]|0)+50>>1]|0))break;if(!((b[(c[(c[z>>2]|0)+4>>2]|0)+(c[w>>2]<<1)>>1]|0)!=(c[t>>2]|0)?(b[(c[(c[z>>2]|0)+4>>2]|0)+(c[w>>2]<<1)>>1]|0)!=-2:0))c[P>>2]=19177;c[w>>2]=(c[w>>2]|0)+1}c[z>>2]=c[(c[z>>2]|0)+20>>2]}if(c[P>>2]|0){k=42;break}}h=Ch(c[J>>2]|0)|0;c[(c[I>>2]|0)+20>>2]=h;if(c[(c[I>>2]|0)+20>>2]|0){c[B>>2]=c[(c[I>>2]|0)+20>>2];c[u>>2]=Dh(c[F>>2]|0,c[(c[A>>2]|0)+64>>2]|0)|0;Eh(c[B>>2]|0,2,c[u>>2]|0,c[r>>2]|0,c[c[(c[A>>2]|0)+64>>2]>>2]|0,c[(c[(c[A>>2]|0)+64>>2]|0)+4>>2]|0)|0;Fh(c[B>>2]|0,1);c[s>>2]=Gh(c[B>>2]|0,9,19219,0)|0;Hh(c[B>>2]|0,c[u>>2]|0);if(!(d[(c[F>>2]|0)+65>>0]|0)){c[(c[s>>2]|0)+4>>2]=c[u>>2];c[(c[s>>2]|0)+8>>2]=c[(c[A>>2]|0)+28>>2];c[(c[s>>2]|0)+12>>2]=c[r>>2];Ih(c[B>>2]|0,1,c[c[A>>2]>>2]|0,0)}if(!(d[(c[F>>2]|0)+65>>0]|0)){if(c[r>>2]|0)a[(c[s>>2]|0)+20>>0]=55;c[(c[s>>2]|0)+20+8>>2]=c[(c[A>>2]|0)+28>>2];c[(c[s>>2]|0)+20+12>>2]=c[u>>2];a[(c[s>>2]|0)+20+1>>0]=-14;c[(c[s>>2]|0)+20+16>>2]=(b[(c[A>>2]|0)+34>>1]|0)+1;c[(c[s>>2]|0)+80+8>>2]=b[(c[A>>2]|0)+34>>1];b[(c[J>>2]|0)+444>>1]=1;c[(c[J>>2]|0)+76>>2]=1;c[(c[J>>2]|0)+72>>2]=1;Jh(c[B>>2]|0,c[J>>2]|0)}}c[c[I>>2]>>2]=c[r>>2];c[(c[I>>2]|0)+12>>2]=c[t>>2];c[(c[I>>2]|0)+24>>2]=c[F>>2];if(a[(c[F>>2]|0)+65>>0]|0)break a;h=q;Me(c[(c[I>>2]|0)+20>>2]|0,1,c[h>>2]|0,c[h+4>>2]|0)|0;h=q;c[K>>2]=Kh(c[I>>2]|0,c[h>>2]|0,c[h+4>>2]|0,O)|0;h=(c[x>>2]|0)+1|0;c[x>>2]=h;if(!((h|0)<50?(c[K>>2]|0)==17:0))break a}if((k|0)==13){if(c[(c[J>>2]|0)+4>>2]|0){Sf(c[F>>2]|0,c[O>>2]|0);c[O>>2]=c[(c[J>>2]|0)+4>>2];c[(c[J>>2]|0)+4>>2]=0}c[K>>2]=1;break}else if((k|0)==21){Sf(c[F>>2]|0,c[O>>2]|0);P=c[F>>2]|0;c[N>>2]=c[G>>2];c[O>>2]=Bh(P,19144,N)|0;c[K>>2]=1;break}else if((k|0)==42){Sf(c[F>>2]|0,c[O>>2]|0);N=c[F>>2]|0;c[L>>2]=c[P>>2];c[O>>2]=Bh(N,19185,L)|0;c[K>>2]=1;break}}while(0);if((c[K>>2]|0)==0?(d[(c[F>>2]|0)+65>>0]|0)==0:0){c[c[H>>2]>>2]=c[I>>2];L=c[F>>2]|0;P=c[K>>2]|0;N=c[O>>2]|0;N=(N|0)!=0;N=N?19255:0;I=c[O>>2]|0;c[M>>2]=I;hg(L,P,N,M);N=c[F>>2]|0;P=c[O>>2]|0;Sf(N,P);P=c[J>>2]|0;Lh(P);P=c[F>>2]|0;O=c[J>>2]|0;Sf(P,O);O=c[F>>2]|0;P=c[K>>2]|0;P=Rg(O,P)|0;c[K>>2]=P;P=c[K>>2]|0;i=Q;return P|0}if((c[I>>2]|0)!=0?(c[(c[I>>2]|0)+20>>2]|0)!=0:0)Qg(c[(c[I>>2]|0)+20>>2]|0)|0;Sf(c[F>>2]|0,c[I>>2]|0);L=c[F>>2]|0;P=c[K>>2]|0;N=c[O>>2]|0;N=(N|0)!=0;N=N?19255:0;I=c[O>>2]|0;c[M>>2]=I;hg(L,P,N,M);N=c[F>>2]|0;P=c[O>>2]|0;Sf(N,P);P=c[J>>2]|0;Lh(P);P=c[F>>2]|0;O=c[J>>2]|0;Sf(P,O);O=c[F>>2]|0;P=c[K>>2]|0;P=Rg(O,P)|0;c[K>>2]=P;P=c[K>>2]|0;i=Q;return P|0}function Ve(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=i;i=i+16|0;g=f+12|0;d=f+8|0;e=f+4|0;b=f;c[g>>2]=a;c[d>>2]=c[g>>2];if(c[d>>2]|0){c[b>>2]=c[(c[d>>2]|0)+24>>2];c[e>>2]=Yd(c[(c[d>>2]|0)+20>>2]|0)|0;Sf(c[b>>2]|0,c[d>>2]|0);g=c[e>>2]|0;i=f;return g|0}else{c[e>>2]=0;g=c[e>>2]|0;i=f;return g|0}return 0}function We(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;b=Nh(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[g>>2]|0,138)|0;i=f;return b|0}function Xe(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=c[e>>2];if(!(c[b>>2]|0)){e=0;i=d;return e|0}if(!(c[(c[b>>2]|0)+20>>2]|0)){e=0;i=d;return e|0}e=c[(c[b>>2]|0)+4>>2]|0;i=d;return e|0}function Ye(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+48|0;k=m+8|0;e=m+32|0;n=m+28|0;f=m;j=m+24|0;h=m+20|0;g=m+16|0;l=m+12|0;c[n>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[h>>2]=c[n>>2];if(!(c[h>>2]|0)){c[e>>2]=Kf(81515)|0;n=c[e>>2]|0;i=m;return n|0}c[g>>2]=c[(c[h>>2]|0)+24>>2];if(c[(c[h>>2]|0)+20>>2]|0){n=f;c[j>>2]=Kh(c[h>>2]|0,c[n>>2]|0,c[n+4>>2]|0,l)|0;if(c[j>>2]|0){h=c[g>>2]|0;a=c[j>>2]|0;n=(c[l>>2]|0)!=0?19255:0;c[k>>2]=c[l>>2];hg(h,a,n,k);Sf(c[g>>2]|0,c[l>>2]|0)}}else c[j>>2]=4;c[j>>2]=Rg(c[g>>2]|0,c[j>>2]|0)|0;c[e>>2]=c[j>>2];n=c[e>>2]|0;i=m;return n|0}function Ze(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;b=(Ph(c[f>>2]|0,c[e>>2]|0,19258,91)|0)==0&1;i=d;return b|0}function _e(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;b=(Ph(c[h>>2]|0,c[g>>2]|0,19262,c[f>>2]|0)|0)==0&1;i=e;return b|0}function $e(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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;z=i;i=i+64|0;j=z+56|0;k=z+52|0;l=z+48|0;m=z+44|0;n=z+40|0;o=z+36|0;w=z+32|0;x=z+28|0;v=z+24|0;p=z+20|0;r=z+16|0;t=z+12|0;q=z+8|0;s=z+4|0;u=z;c[k>>2]=b;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[w>>2]=0;c[v>>2]=0;c[p>>2]=0;if(!(Qh(c[k>>2]|0)|0)){c[j>>2]=Kf(105510)|0;y=c[j>>2]|0;i=z;return y|0}if(!(c[l>>2]|0))c[l>>2]=19266;jg(c[k>>2]|0,0);a:while(1){if(c[w>>2]|0)break;if(!(a[c[l>>2]>>0]|0))break;c[q>>2]=0;c[v>>2]=0;c[w>>2]=af(c[k>>2]|0,c[l>>2]|0,-1,v,x)|0;if(c[w>>2]|0)continue;if(!(c[v>>2]|0)){c[l>>2]=c[x>>2];continue}c[r>>2]=0;c[t>>2]=ye(c[v>>2]|0)|0;do{c[w>>2]=ue(c[v>>2]|0)|0;do if(c[m>>2]|0){if(100!=(c[w>>2]|0)){if(101!=(c[w>>2]|0)|(c[r>>2]|0)!=0)break;if(!(c[(c[k>>2]|0)+24>>2]&256))break}if(!(c[r>>2]|0)){c[p>>2]=ph(c[k>>2]|0,(c[t>>2]<<1<<2)+1|0,0)|0;if(!(c[p>>2]|0))break a;c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[t>>2]|0))break;e=Ie(c[v>>2]|0,c[s>>2]|0)|0;c[(c[p>>2]|0)+(c[s>>2]<<2)>>2]=e;c[s>>2]=(c[s>>2]|0)+1}c[r>>2]=1}b:do if((c[w>>2]|0)==100){c[q>>2]=(c[p>>2]|0)+(c[t>>2]<<2);c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[t>>2]|0))break b;e=Fe(c[v>>2]|0,c[s>>2]|0)|0;c[(c[q>>2]|0)+(c[s>>2]<<2)>>2]=e;if((c[(c[q>>2]|0)+(c[s>>2]<<2)>>2]|0)==0?(He(c[v>>2]|0,c[s>>2]|0)|0)!=5:0){y=27;break a}c[s>>2]=(c[s>>2]|0)+1}}while(0);if(Wb[c[m>>2]&255](c[n>>2]|0,c[t>>2]|0,c[q>>2]|0,c[p>>2]|0)|0){y=30;break a}}while(0)}while((c[w>>2]|0)==100);c[w>>2]=Qg(c[v>>2]|0)|0;c[v>>2]=0;c[l>>2]=c[x>>2];while(1){if(!(d[19267+(d[c[l>>2]>>0]|0)>>0]&1))break;c[l>>2]=(c[l>>2]|0)+1}Sf(c[k>>2]|0,c[p>>2]|0);c[p>>2]=0}if((y|0)==27)jh(c[k>>2]|0);else if((y|0)==30){c[w>>2]=4;Qg(c[v>>2]|0)|0;c[v>>2]=0;jg(c[k>>2]|0,4)}if(c[v>>2]|0)Qg(c[v>>2]|0)|0;Sf(c[k>>2]|0,c[p>>2]|0);c[w>>2]=Rg(c[k>>2]|0,c[w>>2]|0)|0;do if((c[w>>2]|0)!=0&(c[o>>2]|0)!=0){c[u>>2]=1+(If(bf(c[k>>2]|0)|0)|0);y=c[u>>2]|0;y=_f(y,((y|0)<0)<<31>>31)|0;c[c[o>>2]>>2]=y;if(c[c[o>>2]>>2]|0){e=c[c[o>>2]>>2]|0;y=bf(c[k>>2]|0)|0;iR(e|0,y|0,c[u>>2]|0)|0;break}else{c[w>>2]=7;jg(c[k>>2]|0,7);break}}else if(c[o>>2]|0)c[c[o>>2]>>2]=0;while(0);c[j>>2]=c[w>>2];y=c[j>>2]|0;i=z;return y|0}function af(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,j=0,k=0,l=0,m=0,n=0;h=i;i=i+32|0;n=h+20|0;m=h+16|0;l=h+12|0;k=h+8|0;j=h+4|0;g=h;c[n>>2]=a;c[m>>2]=b;c[l>>2]=d;c[k>>2]=e;c[j>>2]=f;c[g>>2]=Rh(c[n>>2]|0,c[m>>2]|0,c[l>>2]|0,1,0,c[k>>2]|0,c[j>>2]|0)|0;i=h;return c[g>>2]|0}function bf(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[e>>2]=b;if(!(c[e>>2]|0)){c[d>>2]=ih(7)|0;f=c[d>>2]|0;i=g;return f|0}if(!(Sh(c[e>>2]|0)|0)){c[d>>2]=ih(Kf(134947)|0)|0;f=c[d>>2]|0;i=g;return f|0}if(!(a[(c[e>>2]|0)+65>>0]|0)){c[f>>2]=ae(c[(c[e>>2]|0)+236>>2]|0)|0;if(!(c[f>>2]|0))c[f>>2]=ih(c[(c[e>>2]|0)+52>>2]|0)|0}else c[f>>2]=ih(7)|0;c[d>>2]=c[f>>2];f=c[d>>2]|0;i=g;return f|0}function cf(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,j=0,k=0,l=0,m=0,n=0;h=i;i=i+32|0;n=h+20|0;m=h+16|0;l=h+12|0;k=h+8|0;j=h+4|0;g=h;c[n>>2]=a;c[m>>2]=b;c[l>>2]=d;c[k>>2]=e;c[j>>2]=f;c[g>>2]=Rh(c[n>>2]|0,c[m>>2]|0,c[l>>2]|0,0,0,c[k>>2]|0,c[j>>2]|0)|0;i=h;return c[g>>2]|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,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;b=Th(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[g>>2]|0,0)|0;i=f;return b|0}function ef(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,j=0,k=0,l=0,m=0;g=i;i=i+32|0;m=g+16|0;l=g+12|0;k=g+8|0;j=g+4|0;h=g;c[m>>2]=a;c[l>>2]=b;c[k>>2]=d;c[j>>2]=e;c[h>>2]=f;b=Th(c[m>>2]|0,c[l>>2]|0,c[k>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;i=g;return b|0}function ff(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;o=q;g=q+32|0;h=q+28|0;j=q+24|0;k=q+20|0;l=q+16|0;n=q+12|0;m=q+8|0;p=q+4|0;c[h>>2]=e;c[j>>2]=f;c[n>>2]=0;c[p>>2]=0;c[k>>2]=c[(c[h>>2]|0)+328>>2];if((c[k>>2]|0)!=0?(c[(c[k>>2]|0)+12>>2]|0)==0:0){c[m>>2]=c[(c[k>>2]|0)+4>>2];c[l>>2]=ph(c[h>>2]|0,544,0)|0;if(!(c[l>>2]|0))c[n>>2]=7;else{a[(c[l>>2]|0)+454>>0]=1;c[c[l>>2]>>2]=c[h>>2];c[(c[l>>2]|0)+428>>2]=1;if((((0==(Uh(c[l>>2]|0,c[j>>2]|0,p)|0)?(c[(c[l>>2]|0)+488>>2]|0)!=0:0)?(a[(c[h>>2]|0)+65>>0]|0)==0:0)?(c[(c[(c[l>>2]|0)+488>>2]|0)+12>>2]|0)==0:0)?(d[(c[(c[l>>2]|0)+488>>2]|0)+42>>0]&16|0)==0:0){if(!(c[(c[m>>2]|0)+4>>2]|0)){c[(c[m>>2]|0)+4>>2]=c[(c[(c[l>>2]|0)+488>>2]|0)+4>>2];b[(c[m>>2]|0)+34>>1]=b[(c[(c[l>>2]|0)+488>>2]|0)+34>>1]|0;b[(c[(c[l>>2]|0)+488>>2]|0)+34>>1]=0;c[(c[(c[l>>2]|0)+488>>2]|0)+4>>2]=0}c[(c[k>>2]|0)+12>>2]=1}else{m=c[h>>2]|0;f=(c[p>>2]|0)!=0?19255:0;c[o>>2]=c[p>>2];hg(m,1,f,o);Sf(c[h>>2]|0,c[p>>2]|0);c[n>>2]=1}a[(c[l>>2]|0)+454>>0]=0;if(c[(c[l>>2]|0)+8>>2]|0)Qg(c[(c[l>>2]|0)+8>>2]|0)|0;Qf(c[h>>2]|0,c[(c[l>>2]|0)+488>>2]|0);Lh(c[l>>2]|0);Sf(c[h>>2]|0,c[l>>2]|0)}c[n>>2]=Rg(c[h>>2]|0,c[n>>2]|0)|0;c[g>>2]=c[n>>2];p=c[g>>2]|0;i=q;return p|0}jg(c[h>>2]|0,21);c[g>>2]=Kf(119136)|0;p=c[g>>2]|0;i=q;return p|0}function gf(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return d[19523+((d[(c[b>>2]|0)+70>>0]|0)-1)>>0]|0|0}function hf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;f=k+28|0;l=k+24|0;g=k+8|0;j=k+4|0;h=k;c[f>>2]=b;c[l>>2]=d;c[j>>2]=0;c[g>>2]=e;do if((c[l>>2]|0)==1){c[h>>2]=c[(c[f>>2]|0)+328>>2];if(c[h>>2]|0){e=(c[g>>2]|0)+(4-1)&~(4-1);l=c[e>>2]|0;c[g>>2]=e+4;a[(c[c[h>>2]>>2]|0)+16>>0]=l;break}else{c[j>>2]=Kf(119587)|0;break}}else c[j>>2]=Kf(119595)|0;while(0);if(!(c[j>>2]|0)){l=c[j>>2]|0;i=k;return l|0}jg(c[f>>2]|0,c[j>>2]|0);l=c[j>>2]|0;i=k;return l|0}function jf(){return 18462}function kf(){return 19541}function lf(){return 3011e3}function mf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+48|0;h=k+44|0;d=k+40|0;e=k+24|0;j=k+16|0;g=k+8|0;f=k;c[d>>2]=a;c[j>>2]=0;if(c[59]|0){c[h>>2]=Kf(133154)|0;j=c[h>>2]|0;i=k;return j|0}c[e>>2]=b;do switch(c[d>>2]|0){case 4:{g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[11]=c[b>>2];c[12]=c[b+4>>2];c[13]=c[b+8>>2];c[14]=c[b+12>>2];c[15]=c[b+16>>2];c[16]=c[b+20>>2];c[17]=c[b+24>>2];c[18]=c[b+28>>2];break}case 5:{if(!(c[11]|0))Xh();g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[b>>2]=c[11];c[b+4>>2]=c[12];c[b+8>>2]=c[13];c[b+12>>2]=c[14];c[b+16>>2]=c[15];c[b+20>>2]=c[16];c[b+24>>2]=c[17];c[b+28>>2]=c[18];break}case 9:{g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[2]=b;break}case 6:{g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[50]=b;b=(c[e>>2]|0)+(4-1)&~(4-1);g=c[b>>2]|0;c[e>>2]=b+4;c[51]=g;g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[52]=b;break}case 7:{g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[53]=b;b=(c[e>>2]|0)+(4-1)&~(4-1);g=c[b>>2]|0;c[e>>2]=b+4;c[54]=g;g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[55]=b;break}case 24:{g=(Yh()|0)+(Zh()|0)+(_h()|0)|0;a=(c[e>>2]|0)+(4-1)&~(4-1);b=c[a>>2]|0;c[e>>2]=a+4;c[b>>2]=g;break}case 14:break;case 15:{c[j>>2]=1;break}case 18:{d=(c[e>>2]|0)+(4-1)&~(4-1);f=c[d>>2]|0;c[e>>2]=d+4;d=112;e=f;f=d+52|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));break}case 19:{if(!(c[30]|0))$h();f=(c[e>>2]|0)+(4-1)&~(4-1);d=c[f>>2]|0;c[e>>2]=f+4;e=112;f=d+52|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));break}case 13:{b=(c[e>>2]|0)+(4-1)&~(4-1);g=c[b>>2]|0;c[e>>2]=b+4;c[9]=g;g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[10]=b;break}case 16:{b=(c[e>>2]|0)+(4-1)&~(4-1);g=c[b>>2]|0;c[e>>2]=b+4;c[66]=g;g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[67]=b;break}case 17:{g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[5]=b;break}case 20:{g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[6]=b;break}case 22:{b=(c[e>>2]|0)+(8-1)&~(8-1);a=b;d=c[a>>2]|0;a=c[a+4>>2]|0;c[e>>2]=b+8;b=g;c[b>>2]=d;c[b+4>>2]=a;b=(c[e>>2]|0)+(8-1)&~(8-1); -a=b;d=c[a>>2]|0;a=c[a+4>>2]|0;c[e>>2]=b+8;e=f;c[e>>2]=d;c[e+4>>2]=a;e=f;b=c[e+4>>2]|0;e=(c[f+4>>2]|0)<0|((b|0)>0|(b|0)==0&(c[e>>2]|0)>>>0>0);b=f;c[b>>2]=e?0:d;c[b+4>>2]=e?0:a;if((c[g+4>>2]|0)<0){b=g;c[b>>2]=0;c[b+4>>2]=0}a=g;d=c[a+4>>2]|0;b=f;e=c[b+4>>2]|0;if((d|0)>(e|0)|((d|0)==(e|0)?(c[a>>2]|0)>>>0>(c[b>>2]|0)>>>0:0)){e=f;a=c[e+4>>2]|0;b=g;c[b>>2]=c[e>>2];c[b+4>>2]=a}b=c[f+4>>2]|0;a=192;c[a>>2]=c[f>>2];c[a+4>>2]=b;a=g;g=c[a+4>>2]|0;b=184;c[b>>2]=c[a>>2];c[b+4>>2]=g;break}case 25:{g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[58]=b;break}default:c[j>>2]=1}while(0);c[h>>2]=c[j>>2];j=c[h>>2]|0;i=k;return j|0}function nf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;d=g+8|0;e=g+4|0;f=g;c[b>>2]=a;Nf(c[b>>2]|0);c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[(c[b>>2]|0)+20>>2]|0))break;c[e>>2]=c[(c[(c[b>>2]|0)+16>>2]|0)+(c[d>>2]<<4)+4>>2];if(c[e>>2]|0){c[f>>2]=Of(c[e>>2]|0)|0;ai(c[f>>2]|0)}c[d>>2]=(c[d>>2]|0)+1}i=g;return 0}function of(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=(c[d>>2]|0)+32|0;C=c[a+4>>2]|0;i=b;return c[a>>2]|0}function pf(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+80>>2]|0}function qf(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+84>>2]|0}function rf(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=di(c[d>>2]|0,0)|0;i=b;return a|0}function sf(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=di(c[d>>2]|0,1)|0;i=b;return a|0}function tf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;h=e+4|0;g=e;c[f>>2]=a;c[h>>2]=b;c[g>>2]=d;c[(c[f>>2]|0)+448>>2]=c[h>>2];c[(c[f>>2]|0)+448+4>>2]=c[g>>2];c[(c[f>>2]|0)+448+8>>2]=0;c[(c[f>>2]|0)+496>>2]=0;i=e;return 0}function uf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;a=c[d>>2]|0;if((c[e>>2]|0)>0){tf(a,178,c[d>>2]|0)|0;c[(c[d>>2]|0)+496>>2]=c[e>>2];i=f;return 0}else{tf(a,0,0)|0;i=f;return 0}return 0}function vf(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;k=i;i=i+32|0;s=k+28|0;r=k+24|0;q=k+20|0;p=k+16|0;o=k+12|0;n=k+8|0;m=k+4|0;l=k;c[s>>2]=a;c[r>>2]=b;c[q>>2]=d;c[p>>2]=e;c[o>>2]=f;c[n>>2]=g;c[m>>2]=h;c[l>>2]=j;b=wf(c[s>>2]|0,c[r>>2]|0,c[q>>2]|0,c[p>>2]|0,c[o>>2]|0,c[n>>2]|0,c[m>>2]|0,c[l>>2]|0,0)|0;i=k;return b|0}function wf(a,b,d,e,f,g,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;x=i;i=i+48|0;l=x+40|0;m=x+36|0;n=x+32|0;o=x+28|0;p=x+24|0;q=x+20|0;r=x+16|0;s=x+12|0;t=x+8|0;v=x+4|0;u=x;c[l>>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]=j;c[t>>2]=k;c[v>>2]=1;c[u>>2]=0;do if(c[t>>2]|0){c[u>>2]=ph(c[l>>2]|0,12,0)|0;a=c[t>>2]|0;if(c[u>>2]|0){c[(c[u>>2]|0)+4>>2]=a;c[(c[u>>2]|0)+8>>2]=c[p>>2];w=5;break}else{Qb[a&255](c[p>>2]|0);break}}else w=5;while(0);if(((w|0)==5?(c[v>>2]=fi(c[l>>2]|0,c[m>>2]|0,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)|0,(c[u>>2]|0)!=0):0)?(c[c[u>>2]>>2]|0)==0:0){Qb[c[t>>2]&255](c[p>>2]|0);Sf(c[l>>2]|0,c[u>>2]|0)}c[v>>2]=Rg(c[l>>2]|0,c[v>>2]|0)|0;i=x;return c[v>>2]|0}function xf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;e=j+16|0;f=j+12|0;g=j+8|0;k=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[k>>2]=If(c[f>>2]|0)|0;c[h>>2]=0;if(!(gi(c[e>>2]|0,c[f>>2]|0,c[k>>2]|0,c[g>>2]|0,1,0)|0))c[h>>2]=fi(c[e>>2]|0,c[f>>2]|0,c[g>>2]|0,1,0,224,0,0,0)|0;c[h>>2]=Rg(c[e>>2]|0,c[h>>2]|0)|0;i=j;return c[h>>2]|0}function yf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;f=e+4|0;d=e;c[f>>2]=a;c[d>>2]=b;a=c[f>>2]|0;if((c[d>>2]|0)>0){zf(a,139,c[d>>2]|0)|0;i=e;return 0}else{zf(a,0,0)|0;i=e;return 0}return 0}function zf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+12|0;j=f+8|0;h=f+4|0;e=f;c[g>>2]=a;c[j>>2]=b;c[h>>2]=d;c[e>>2]=c[(c[g>>2]|0)+220>>2];c[(c[g>>2]|0)+216>>2]=c[j>>2];c[(c[g>>2]|0)+220>>2]=c[h>>2];i=f;return c[e>>2]|0}function Af(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;q=r;h=r+32|0;j=r+28|0;k=r+24|0;l=r+20|0;m=r+16|0;n=r+12|0;p=r+8|0;o=r+4|0;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=10;if(c[m>>2]|0)c[c[m>>2]>>2]=-1;if(c[n>>2]|0)c[c[n>>2]>>2]=-1;if((c[l>>2]|0)<0|(c[l>>2]|0)>3){c[h>>2]=21;d=c[h>>2]|0;i=r;return d|0}if((c[k>>2]|0)!=0?(a[c[k>>2]>>0]|0)!=0:0)c[o>>2]=ji(c[j>>2]|0,c[k>>2]|0)|0;if((c[o>>2]|0)<0){c[p>>2]=1;d=c[j>>2]|0;c[q>>2]=c[k>>2];hg(d,1,19602,q)}else{c[(c[j>>2]|0)+448+8>>2]=0;c[p>>2]=ki(c[j>>2]|0,c[o>>2]|0,c[l>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;jg(c[j>>2]|0,c[p>>2]|0)}c[p>>2]=Rg(c[j>>2]|0,c[p>>2]|0)|0;c[h>>2]=c[p>>2];d=c[h>>2]|0;i=r;return d|0}function Bf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;b=Af(c[f>>2]|0,c[e>>2]|0,0,0,0)|0;i=d;return b|0}function Cf(a){a=a|0;var b=0,e=0,f=0;f=i;i=i+16|0;b=f+4|0;e=f;c[e>>2]=a;if((c[e>>2]|0)!=0?(Sh(c[e>>2]|0)|0)==0:0){c[b>>2]=Kf(135016)|0;a=c[b>>2]|0;i=f;return a|0}if((c[e>>2]|0)!=0?(d[(c[e>>2]|0)+65>>0]|0|0)==0:0){c[b>>2]=c[(c[e>>2]|0)+52>>2]&c[(c[e>>2]|0)+56>>2];a=c[b>>2]|0;i=f;return a|0}c[b>>2]=7;a=c[b>>2]|0;i=f;return a|0}function Df(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;if((c[g>>2]|0)<0|(c[g>>2]|0)>=12){c[e>>2]=-1;j=c[e>>2]|0;i=k;return j|0}c[j>>2]=c[(c[f>>2]|0)+88+(c[g>>2]<<2)>>2];if((c[h>>2]|0)>=0){if((c[h>>2]|0)>(c[1536+(c[g>>2]<<2)>>2]|0))c[h>>2]=c[1536+(c[g>>2]<<2)>>2];c[(c[f>>2]|0)+88+(c[g>>2]<<2)>>2]=c[h>>2]}c[e>>2]=c[j>>2];j=c[e>>2]|0;i=k;return j|0}function Ef(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=mi(c[f>>2]|0,c[e>>2]|0,6,0)|0;i=d;return a|0}function Ff(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+32|0;o=m+28|0;n=m+24|0;f=m+20|0;g=m+16|0;l=m+12|0;j=m+8|0;k=m+4|0;h=m;c[o>>2]=a;c[n>>2]=b;c[f>>2]=d;c[g>>2]=e;c[l>>2]=1;c[j>>2]=si(c[o>>2]|0,c[n>>2]|0)|0;if(!(c[j>>2]|0)){o=c[l>>2]|0;i=m;return o|0}kg(c[j>>2]|0);c[k>>2]=Of(c[j>>2]|0)|0;c[h>>2]=Bg(c[k>>2]|0)|0;if((c[f>>2]|0)==7){c[c[g>>2]>>2]=c[h>>2];c[l>>2]=0;o=c[l>>2]|0;i=m;return o|0}if((c[f>>2]|0)==27){o=ti(c[k>>2]|0)|0;c[c[g>>2]>>2]=o;c[l>>2]=0;o=c[l>>2]|0;i=m;return o|0}if((c[f>>2]|0)==28){o=ui(c[k>>2]|0)|0;c[c[g>>2]>>2]=o;c[l>>2]=0;o=c[l>>2]|0;i=m;return o|0}if(c[c[h>>2]>>2]|0){c[l>>2]=vi(c[h>>2]|0,c[f>>2]|0,c[g>>2]|0)|0;o=c[l>>2]|0;i=m;return o|0}else{c[l>>2]=12;o=c[l>>2]|0;i=m;return o|0}return 0}function Gf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j+12|0;e=j+8|0;f=j+4|0;g=j;c[e>>2]=b;c[f>>2]=d;if((c[e>>2]|0)==0|(c[f>>2]|0)==0){c[h>>2]=0;h=c[h>>2]|0;i=j;return h|0}d=(If(c[e>>2]|0)|0)+1|0;c[e>>2]=(c[e>>2]|0)+d;while(1){if(!(a[c[e>>2]>>0]|0)){b=8;break}c[g>>2]=yQ(c[e>>2]|0,c[f>>2]|0)|0;d=(If(c[e>>2]|0)|0)+1|0;c[e>>2]=(c[e>>2]|0)+d;d=c[e>>2]|0;if(!(c[g>>2]|0)){b=6;break}d=(If(d)|0)+1|0;c[e>>2]=(c[e>>2]|0)+d}if((b|0)==6){c[h>>2]=d;h=c[h>>2]|0;i=j;return h|0}else if((b|0)==8){c[h>>2]=0;h=c[h>>2]|0;i=j;return h|0}return 0}function Hf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+16|0;j=g+12|0;h=g+8|0;e=g+4|0;f=g;c[j>>2]=a;c[h>>2]=b;c[e>>2]=d;c[f>>2]=Gf(c[j>>2]|0,c[h>>2]|0)|0;c[e>>2]=(c[e>>2]|0)!=0&1;if(c[f>>2]|0){j=(Bi(c[f>>2]|0,c[e>>2]&255)|0)&255;i=g;return j|0}else{j=c[e>>2]|0;i=g;return j|0}return 0}function If(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[d>>2]=a;if(!(c[d>>2]|0))c[b>>2]=0;else c[b>>2]=1073741823&(BQ(c[d>>2]|0)|0);i=e;return c[b>>2]|0}function Jf(b){b=b|0;var c=0,e=0;e=i;i=i+16|0;c=e;a[c>>0]=b;i=e;return((d[19267+(d[c>>0]|0)>>0]|0)&70|0)!=0|0}function Kf(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b;e=b+8|0;c[e>>2]=a;e=c[e>>2]|0;a=(kf()|0)+20|0;c[d>>2]=e;c[d+4>>2]=a;Rd(21,47042,d);i=b;return 21}function Lf(){return c[417]|0}function Mf(){return c[70]|0}function Nf(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[(c[b>>2]|0)+20>>2]|0))break;c[e>>2]=c[(c[(c[b>>2]|0)+16>>2]|0)+(c[d>>2]<<4)+4>>2];if(c[e>>2]|0)c[(c[(c[e>>2]|0)+4>>2]|0)+4>>2]=c[c[e>>2]>>2];c[d>>2]=(c[d>>2]|0)+1}i=f;return}function Of(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[c[(c[b>>2]|0)+4>>2]>>2]|0}function Pf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=f;return}bv(c[d>>2]|0,c[(c[e>>2]|0)+28>>2]|0);Sf(c[d>>2]|0,c[c[e>>2]>>2]|0);Sf(c[d>>2]|0,c[(c[e>>2]|0)+4>>2]|0);Zu(c[d>>2]|0,c[(c[e>>2]|0)+12>>2]|0);_u(c[d>>2]|0,c[(c[e>>2]|0)+16>>2]|0);Sf(c[d>>2]|0,c[e>>2]|0);i=f;return}function Qf(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+16|0;f=l+12|0;g=l+8|0;h=l+4|0;j=l;c[e>>2]=a;c[f>>2]=d;if(!(c[f>>2]|0)){i=l;return}if(!((c[e>>2]|0)!=0?(c[(c[e>>2]|0)+528>>2]|0)!=0:0))k=4;if((k|0)==4?(d=(c[f>>2]|0)+36|0,k=(b[d>>1]|0)+-1<<16>>16,b[d>>1]=k,(k&65535|0)>0):0){i=l;return}c[g>>2]=c[(c[f>>2]|0)+8>>2];while(1){if(!(c[g>>2]|0))break;c[h>>2]=c[(c[g>>2]|0)+20>>2];if(!((c[e>>2]|0)!=0?(c[(c[e>>2]|0)+528>>2]|0)!=0:0)){c[j>>2]=c[c[g>>2]>>2];Oj((c[(c[g>>2]|0)+24>>2]|0)+24|0,c[j>>2]|0,0)|0}WG(c[e>>2]|0,c[g>>2]|0);c[g>>2]=c[h>>2]}LP(c[e>>2]|0,c[f>>2]|0);RG(c[e>>2]|0,c[f>>2]|0);Sf(c[e>>2]|0,c[c[f>>2]>>2]|0);Sf(c[e>>2]|0,c[(c[f>>2]|0)+20>>2]|0);Wu(c[e>>2]|0,c[(c[f>>2]|0)+12>>2]|0);Vu(c[e>>2]|0,c[(c[f>>2]|0)+24>>2]|0);CH(c[e>>2]|0,c[f>>2]|0);Sf(c[e>>2]|0,c[f>>2]|0);i=l;return}function Rf(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;h=l+16|0;j=l+12|0;g=l+8|0;f=l+4|0;k=l;c[h>>2]=a;c[j>>2]=d;oC(c[(c[j>>2]|0)+60>>2]|0,b[(c[j>>2]|0)+68>>1]|0);oC(c[(c[j>>2]|0)+16>>2]|0,e[(c[j>>2]|0)+84>>1]<<1);c[g>>2]=c[(c[j>>2]|0)+192>>2];while(1){if(!(c[g>>2]|0))break;c[f>>2]=c[(c[g>>2]|0)+24>>2];KP(c[h>>2]|0,c[c[g>>2]>>2]|0,c[(c[g>>2]|0)+4>>2]|0);Sf(c[h>>2]|0,c[g>>2]|0);c[g>>2]=c[f>>2]}c[k>>2]=(b[(c[j>>2]|0)+70>>1]|0)-1;while(1){a=c[h>>2]|0;if((c[k>>2]|0)<0)break;Sf(a,c[(c[(c[j>>2]|0)+64>>2]|0)+(c[k>>2]<<2)>>2]|0);c[k>>2]=(c[k>>2]|0)+-1}Sf(a,c[(c[j>>2]|0)+64>>2]|0);KP(c[h>>2]|0,c[(c[j>>2]|0)+4>>2]|0,c[(c[j>>2]|0)+32>>2]|0);Sf(c[h>>2]|0,c[(c[j>>2]|0)+16>>2]|0);Sf(c[h>>2]|0,c[(c[j>>2]|0)+168>>2]|0);Sf(c[h>>2]|0,c[(c[j>>2]|0)+172>>2]|0);i=l;return}function Sf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=g;return}if(c[d>>2]|0){a=c[d>>2]|0;b=c[e>>2]|0;if(c[(c[d>>2]|0)+528>>2]|0){JP(a,b);i=g;return}if(au(a,b)|0){c[f>>2]=c[e>>2];c[c[f>>2]>>2]=c[(c[d>>2]|0)+248+28>>2];c[(c[d>>2]|0)+248+28>>2]=c[f>>2];f=(c[d>>2]|0)+248+8|0;c[f>>2]=(c[f>>2]|0)+-1;i=g;return}}Kd(c[e>>2]|0);i=g;return}function Tf(){var a=0,b=0,d=0,e=0,f=0,g=0;g=i;i=i+32|0;e=g+16|0;a=g+12|0;b=g+8|0;f=g+4|0;d=g;if(!(c[11]|0))Xh();c[70]=0;c[71]=0;c[72]=0;c[73]=0;c[74]=0;c[75]=0;c[76]=0;c[77]=0;c[70]=8;if((c[50]|0)!=0&(c[51]|0)>=100&(c[52]|0)>0){c[f>>2]=c[51]&-8;c[51]=c[f>>2];c[d>>2]=c[50];c[b>>2]=c[52];c[75]=c[d>>2];c[76]=c[b>>2];c[a>>2]=0;while(1){if((c[a>>2]|0)>=((c[b>>2]|0)-1|0))break;c[c[d>>2]>>2]=(c[d>>2]|0)+(c[f>>2]|0);c[d>>2]=c[c[d>>2]>>2];c[a>>2]=(c[a>>2]|0)+1}c[c[d>>2]>>2]=0;c[74]=(c[d>>2]|0)+4}else{c[74]=0;c[50]=0;c[51]=0;c[52]=0}if((c[53]|0)==0|(c[54]|0)<512|(c[55]|0)<=0){c[53]=0;c[54]=0}c[e>>2]=Tb[c[64>>2]&255](c[18]|0)|0;if(!(c[e>>2]|0)){f=c[e>>2]|0;i=g;return f|0}c[70]=0;c[71]=0;c[72]=0;c[73]=0;c[74]=0;c[75]=0;c[76]=0;c[77]=0;f=c[e>>2]|0;i=g;return f|0}function Uf(){var a=0,b=0,d=0,e=0;e=i;i=i+16|0;b=e+8|0;d=e+4|0;a=e;c[d>>2]=1080;c[a>>2]=7788;c[b>>2]=0;while(1){if((c[b>>2]|0)>=57)break;Yt(c[d>>2]|0,(c[a>>2]|0)+(c[b>>2]<<5)|0);c[b>>2]=(c[b>>2]|0)+1}tO();uO();i=e;return}function Vf(){if(!(c[30]|0))$h();return Tb[c[120>>2]&255](c[29]|0)|0}function Wf(){var a=0,b=0,d=0;d=i;i=i+16|0;a=d+4|0;b=d;c[b>>2]=Id(10)|0;if(!(c[b>>2]|0)){c[a>>2]=7;b=c[a>>2]|0;i=d;return b|0}else{Kd(c[b>>2]|0);c[a>>2]=Ud()|0;b=c[a>>2]|0;i=d;return b|0}return 0}function Xf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(!(c[409]|0)){i=j;return}if(!(c[e>>2]|0)){c[g>>2]=0;c[f>>2]=0}c[f>>2]=c[f>>2]&-8;c[412]=c[f>>2];b=c[g>>2]|0;c[419]=b;c[413]=b;if((c[g>>2]|0)>90)d=10;else d=((c[g>>2]|0)/10|0)+1|0;c[414]=d;c[415]=c[e>>2];c[418]=0;c[420]=0;while(1){b=c[g>>2]|0;c[g>>2]=b+-1;d=c[e>>2]|0;if(!b)break;c[h>>2]=d;c[c[h>>2]>>2]=c[418];c[418]=c[h>>2];c[e>>2]=(c[e>>2]|0)+(c[f>>2]|0)}c[416]=d;i=j;return}function Yf(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;if(!(c[d>>2]|0)){i=f;return}if((c[269]|0)==(c[d>>2]|0)){c[269]=c[(c[d>>2]|0)+12>>2];i=f;return}if(!(c[269]|0)){i=f;return}c[e>>2]=c[269];while(1){if(c[(c[e>>2]|0)+12>>2]|0)b=(c[(c[e>>2]|0)+12>>2]|0)!=(c[d>>2]|0);else b=0;a=c[(c[e>>2]|0)+12>>2]|0;if(!b)break;c[e>>2]=a}if((a|0)!=(c[d>>2]|0)){i=f;return}c[(c[e>>2]|0)+12>>2]=c[(c[d>>2]|0)+12>>2];i=f;return}function Zf(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;C=0;i=d;return c[996+(c[b>>2]<<2)>>2]|0}function _f(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f;e=f+8|0;g=d;c[g>>2]=a;c[g+4>>2]=b;g=d;b=d;a=c[b+4>>2]|0;if((c[g>>2]|0)==0&(c[g+4>>2]|0)==0|(a>>>0>0|(a|0)==0&(c[b>>2]|0)>>>0>=2147483392)){c[e>>2]=0;g=c[e>>2]|0;i=f;return g|0}if(c[2]|0){sO(c[d>>2]|0,e)|0;g=c[e>>2]|0;i=f;return g|0}else{c[e>>2]=Tb[c[44>>2]&255](c[d>>2]|0)|0;g=c[e>>2]|0;i=f;return g|0}return 0}function $f(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Tb[c[56>>2]&255](c[d>>2]|0)|0;i=b;return a|0}function ag(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=996+(c[f>>2]<<2)|0;c[a>>2]=(c[a>>2]|0)-(c[e>>2]|0);i=d;return}function bg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;e=m+28|0;f=m+24|0;g=m;k=m+20|0;j=m+16|0;h=m+12|0;l=m+8|0;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;d=g;b=c[d>>2]|0;d=c[d+4>>2]|0;if(!(c[f>>2]|0)){c[e>>2]=_f(b,d)|0;l=c[e>>2]|0;i=m;return l|0}if((b|0)==0&(d|0)==0){Kd(c[f>>2]|0);c[e>>2]=0;l=c[e>>2]|0;i=m;return l|0}a=g;d=c[a+4>>2]|0;if(d>>>0>0|(d|0)==0&(c[a>>2]|0)>>>0>=2147483392){c[e>>2]=0;l=c[e>>2]|0;i=m;return l|0}c[k>>2]=$f(c[f>>2]|0)|0;c[j>>2]=Tb[c[60>>2]&255](c[g>>2]|0)|0;do if((c[k>>2]|0)!=(c[j>>2]|0)){if(!(c[2]|0)){c[l>>2]=Yb[c[52>>2]&255](c[f>>2]|0,c[j>>2]|0)|0;break}Mi(5,c[g>>2]|0);c[h>>2]=(c[j>>2]|0)-(c[k>>2]|0);d=Zf(0)|0;n=C;b=288;a=c[h>>2]|0;a=fR(c[b>>2]|0,c[b+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;b=C;if((n|0)>(b|0)|(n|0)==(b|0)&d>>>0>=a>>>0)rO(c[h>>2]|0);c[l>>2]=Yb[c[52>>2]&255](c[f>>2]|0,c[j>>2]|0)|0;n=288;h=c[n+4>>2]|0;if((c[l>>2]|0)==0&((h|0)>0|(h|0)==0&(c[n>>2]|0)>>>0>0)){rO(c[g>>2]|0);c[l>>2]=Yb[c[52>>2]&255](c[f>>2]|0,c[j>>2]|0)|0}if(c[l>>2]|0){c[j>>2]=$f(c[l>>2]|0)|0;Ni(0,(c[j>>2]|0)-(c[k>>2]|0)|0)}}else c[l>>2]=c[f>>2];while(0);c[e>>2]=c[l>>2];n=c[e>>2]|0;i=m;return n|0}function cg(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+32|0;j=h+16|0;m=h+12|0;n=h+8|0;l=h+4|0;k=h;c[j>>2]=b;c[m>>2]=d;c[n>>2]=e;c[l>>2]=f;c[k>>2]=g;e=c[n>>2]|0;c[(c[j>>2]|0)+4>>2]=e;c[(c[j>>2]|0)+8>>2]=e;c[c[j>>2]>>2]=c[m>>2];c[(c[j>>2]|0)+12>>2]=0;c[(c[j>>2]|0)+16>>2]=c[l>>2];c[(c[j>>2]|0)+20>>2]=c[k>>2];a[(c[j>>2]|0)+24>>0]=0;a[(c[j>>2]|0)+25>>0]=0;i=h;return}function dg(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.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,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;ra=i;i=i+272|0;j=ra+176|0;k=ra+172|0;l=ra+168|0;q=ra+164|0;p=ra+160|0;aa=ra+156|0;Q=ra+152|0;K=ra+148|0;ja=ra+144|0;B=ra+268|0;F=ra+267|0;z=ra+266|0;x=ra+265|0;y=ra+264|0;H=ra+263|0;D=ra+262|0;E=ra+261|0;t=ra+260|0;na=ra+259|0;m=ra+258|0;ha=ra+257|0;ba=ra+256|0;R=ra+32|0;ea=ra+24|0;L=ra+140|0;pa=ra+136|0;T=ra+132|0;oa=ra+128|0;w=ra+124|0;u=ra+120|0;W=ra+116|0;fa=ra+16|0;A=ra+255|0;G=ra+254|0;X=ra+112|0;o=ra+184|0;ka=ra+108|0;ca=ra+104|0;ia=ra+8|0;la=ra+100|0;s=ra+96|0;n=ra+183|0;$=ra+92|0;ma=ra+182|0;ga=ra;I=ra+88|0;U=ra+84|0;J=ra+80|0;N=ra+76|0;O=ra+72|0;S=ra+68|0;M=ra+64|0;V=ra+60|0;r=ra+181|0;da=ra+180|0;v=ra+56|0;_=ra+52|0;Z=ra+48|0;P=ra+44|0;Y=ra+40|0;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;a[na>>0]=0;c[oa>>2]=0;c[X>>2]=0;c[p>>2]=0;if(a[(c[j>>2]|0)+25>>0]|0){b=d[(c[j>>2]|0)+25>>0]&2;a[m>>0]=b;if(b&255){e=c[l>>2]|0;f=(c[e>>2]|0)+(4-1)&~(4-1);b=c[f>>2]|0;c[e>>2]=f+4;c[X>>2]=b}a[ha>>0]=d[(c[j>>2]|0)+25>>0]&1}else{a[ha>>0]=0;a[m>>0]=0}a:while(1){b=a[c[k>>2]>>0]|0;c[q>>2]=b;if(!b){qa=268;break}if((c[q>>2]|0)!=37){c[p>>2]=c[k>>2];do{c[k>>2]=(c[k>>2]|0)+1;if(!(a[c[k>>2]>>0]|0))break}while((a[c[k>>2]>>0]|0)!=37);aA(c[j>>2]|0,c[p>>2]|0,(c[k>>2]|0)-(c[p>>2]|0)|0);if(!(a[c[k>>2]>>0]|0)){qa=268;break}}b=(c[k>>2]|0)+1|0;c[k>>2]=b;b=a[b>>0]|0;c[q>>2]=b;if(!b){qa=13;break}a[H>>0]=0;a[y>>0]=0;a[x>>0]=0;a[z>>0]=0;a[F>>0]=0;a[B>>0]=0;a[t>>0]=0;do{switch(c[q>>2]|0){case 45:{a[B>>0]=1;break}case 43:{a[F>>0]=1;break}case 32:{a[z>>0]=1;break}case 35:{a[x>>0]=1;break}case 33:{a[y>>0]=1;break}case 48:{a[H>>0]=1;break}default:a[t>>0]=1}if(a[t>>0]|0)break;b=(c[k>>2]|0)+1|0;c[k>>2]=b;b=a[b>>0]|0;c[q>>2]=b}while((b|0)!=0);if((c[q>>2]|0)==42){if(a[m>>0]|0){b=mO(c[X>>2]|0)|0;c[ja>>2]=b}else{e=c[l>>2]|0;f=(c[e>>2]|0)+(4-1)&~(4-1);b=c[f>>2]|0;c[e>>2]=f+4;c[ja>>2]=b}if((c[ja>>2]|0)<0){a[B>>0]=1;c[ja>>2]=(c[ja>>2]|0)>=-2147483647?0-(c[ja>>2]|0)|0:0}b=(c[k>>2]|0)+1|0;c[k>>2]=b;c[q>>2]=a[b>>0]}else{c[ka>>2]=0;while(1){f=c[ka>>2]|0;if(!((c[q>>2]|0)>=48?(c[q>>2]|0)<=57:0))break;c[ka>>2]=(f*10|0)+(c[q>>2]|0)-48;b=(c[k>>2]|0)+1|0;c[k>>2]=b;c[q>>2]=a[b>>0]}c[ja>>2]=f&2147483647}do if((c[q>>2]|0)==46){b=(c[k>>2]|0)+1|0;c[k>>2]=b;c[q>>2]=a[b>>0];if((c[q>>2]|0)!=42){c[ca>>2]=0;while(1){f=c[ca>>2]|0;if(!((c[q>>2]|0)>=48?(c[q>>2]|0)<=57:0))break;c[ca>>2]=(f*10|0)+(c[q>>2]|0)-48;b=(c[k>>2]|0)+1|0;c[k>>2]=b;c[q>>2]=a[b>>0]}c[aa>>2]=f&2147483647;break}if(a[m>>0]|0){b=mO(c[X>>2]|0)|0;c[aa>>2]=b}else{e=c[l>>2]|0;f=(c[e>>2]|0)+(4-1)&~(4-1);b=c[f>>2]|0;c[e>>2]=f+4;c[aa>>2]=b}b=(c[k>>2]|0)+1|0;c[k>>2]=b;c[q>>2]=a[b>>0];if((c[aa>>2]|0)<0)c[aa>>2]=(c[aa>>2]|0)>=-2147483647?0-(c[aa>>2]|0)|0:-1}else c[aa>>2]=-1;while(0);do if((c[q>>2]|0)==108){a[D>>0]=1;b=(c[k>>2]|0)+1|0;c[k>>2]=b;c[q>>2]=a[b>>0];if((c[q>>2]|0)==108){a[E>>0]=1;b=(c[k>>2]|0)+1|0;c[k>>2]=b;c[q>>2]=a[b>>0];break}else{a[E>>0]=0;break}}else{a[E>>0]=0;a[D>>0]=0}while(0);c[L>>2]=46051;a[na>>0]=0;c[K>>2]=0;while(1){if((c[K>>2]|0)>=23)break;f=c[K>>2]|0;if((c[q>>2]|0)==(a[46051+((c[K>>2]|0)*6|0)>>0]|0)){qa=56;break}c[K>>2]=f+1}if((qa|0)==56){qa=0;c[L>>2]=46051+(f*6|0);if((d[ha>>0]|0)==0?(d[(c[L>>2]|0)+2>>0]&2|0)!=0:0){qa=268;break}a[na>>0]=a[(c[L>>2]|0)+3>>0]|0}b:do switch(d[na>>0]|0){case 14:{a[E>>0]=0;a[D>>0]=1;qa=62;break}case 1:case 16:{qa=62;break}case 4:case 3:case 2:{if(a[m>>0]|0)h[ea>>3]=+nO(c[X>>2]|0);else{b=c[l>>2]|0;e=(c[b>>2]|0)+(8-1)&~(8-1);g=+h[e>>3];c[b>>2]=e+8;h[ea>>3]=g}if((c[aa>>2]|0)<0)c[aa>>2]=6;do if(!(+h[ea>>3]<0.0)){if(a[F>>0]|0){a[ba>>0]=43;break}if(a[z>>0]|0){a[ba>>0]=32;break}else{a[ba>>0]=0;break}}else{h[ea>>3]=-+h[ea>>3];a[ba>>0]=45}while(0);if((d[na>>0]|0)==4&(c[aa>>2]|0)>0)c[aa>>2]=(c[aa>>2]|0)+-1;c[K>>2]=c[aa>>2]&4095;h[fa>>3]=.5;while(1){if((c[K>>2]|0)<=0)break;c[K>>2]=(c[K>>2]|0)+-1;h[fa>>3]=+h[fa>>3]*.1}if((d[na>>0]|0)==2)h[ea>>3]=+h[ea>>3]+ +h[fa>>3];c[w>>2]=0;if(HF(+h[ea>>3])|0){c[p>>2]=46238;c[Q>>2]=3;break b}if(+h[ea>>3]>0.0){h[ga>>3]=1.0;while(1){if(!(+h[ea>>3]>=+h[ga>>3]*1.e+100?(c[w>>2]|0)<=350:0))break;h[ga>>3]=+h[ga>>3]*1.e+100;c[w>>2]=(c[w>>2]|0)+100}while(1){if(!(+h[ea>>3]>=+h[ga>>3]*1.0e10?(c[w>>2]|0)<=350:0))break;h[ga>>3]=+h[ga>>3]*1.0e10;c[w>>2]=(c[w>>2]|0)+10}while(1){g=+h[ga>>3];if(!(+h[ea>>3]>=+h[ga>>3]*10.0?(c[w>>2]|0)<=350:0))break;h[ga>>3]=g*10.0;c[w>>2]=(c[w>>2]|0)+1}h[ea>>3]=+h[ea>>3]/g;while(1){if(!(+h[ea>>3]<1.0e-08))break;h[ea>>3]=+h[ea>>3]*1.0e8;c[w>>2]=(c[w>>2]|0)-8}while(1){if(!(+h[ea>>3]<1.0))break;h[ea>>3]=+h[ea>>3]*10.0;c[w>>2]=(c[w>>2]|0)+-1}if((c[w>>2]|0)>350){c[p>>2]=o;a[o>>0]=a[ba>>0]|0;b=o+((a[ba>>0]|0)!=0&1)|0;a[b>>0]=a[46242]|0;a[b+1>>0]=a[46243]|0;a[b+2>>0]=a[46244]|0;a[b+3>>0]=a[46245]|0;c[Q>>2]=3+((a[ba>>0]|0)!=0&1);break b}}c[p>>2]=o;if((d[na>>0]|0)!=2?(h[ea>>3]=+h[ea>>3]+ +h[fa>>3],+h[ea>>3]>=10.0):0){h[ea>>3]=+h[ea>>3]*.1;c[w>>2]=(c[w>>2]|0)+1}c:do if((d[na>>0]|0)==4){a[G>>0]=((a[x>>0]|0)!=0^1)&1;do if((c[w>>2]|0)>=-4){if((c[w>>2]|0)>(c[aa>>2]|0))break;c[aa>>2]=(c[aa>>2]|0)-(c[w>>2]|0);a[na>>0]=2;break c}while(0);a[na>>0]=3}else a[G>>0]=a[y>>0]|0;while(0);if((d[na>>0]|0)==3)c[u>>2]=0;else c[u>>2]=c[w>>2];b=(c[u>>2]|0)>0?c[u>>2]|0:0;e=c[aa>>2]|0;e=gR(b|0,((b|0)<0)<<31>>31|0,e|0,((e|0)<0)<<31>>31|0)|0;b=c[ja>>2]|0;b=gR(e|0,C|0,b|0,((b|0)<0)<<31>>31|0)|0;e=C;if((e|0)>0|(e|0)==0&b>>>0>55?(b=(c[u>>2]|0)>0?c[u>>2]|0:0,e=c[aa>>2]|0,e=gR(b|0,((b|0)<0)<<31>>31|0,e|0,((e|0)<0)<<31>>31|0)|0,b=c[ja>>2]|0,b=gR(e|0,C|0,b|0,((b|0)<0)<<31>>31|0)|0,b=gR(b|0,C|0,15,0)|0,b=_f(b,C)|0,c[oa>>2]=b,c[p>>2]=b,(c[p>>2]|0)==0):0){qa=161;break a}c[pa>>2]=c[p>>2];c[W>>2]=16+((d[y>>0]|0)*10|0);a[A>>0]=((c[aa>>2]|0)>0?1:0)|d[x>>0]|d[y>>0];if(a[ba>>0]|0){e=a[ba>>0]|0;b=c[p>>2]|0;c[p>>2]=b+1;a[b>>0]=e}d:do if((c[u>>2]|0)<0){b=c[p>>2]|0;c[p>>2]=b+1;a[b>>0]=48}else while(1){if((c[u>>2]|0)<0)break d;e=oO(ea,W)|0;b=c[p>>2]|0;c[p>>2]=b+1;a[b>>0]=e;c[u>>2]=(c[u>>2]|0)+-1}while(0);if(a[A>>0]|0){b=c[p>>2]|0;c[p>>2]=b+1;a[b>>0]=46}c[u>>2]=(c[u>>2]|0)+1;while(1){if((c[u>>2]|0)>=0)break;b=c[p>>2]|0;c[p>>2]=b+1;a[b>>0]=48;c[aa>>2]=(c[aa>>2]|0)+-1;c[u>>2]=(c[u>>2]|0)+1}while(1){b=c[aa>>2]|0;c[aa>>2]=b+-1;if((b|0)<=0)break;e=oO(ea,W)|0;b=c[p>>2]|0;c[p>>2]=b+1;a[b>>0]=e}do if(d[G>>0]|0){if(!(d[A>>0]|0))break;while(1){f=(c[p>>2]|0)+-1|0;if((a[(c[p>>2]|0)+-1>>0]|0)!=48)break;c[p>>2]=f;a[f>>0]=0}if((a[f>>0]|0)!=46)break;f=c[p>>2]|0;if(a[y>>0]|0){c[p>>2]=f+1;a[f>>0]=48;break}else{b=f+-1|0;c[p>>2]=b;a[b>>0]=0;break}}while(0);if((d[na>>0]|0)==3){f=a[46198+(d[(c[L>>2]|0)+4>>0]|0)>>0]|0;b=c[p>>2]|0;c[p>>2]=b+1;a[b>>0]=f;b=(c[w>>2]|0)<0;f=c[p>>2]|0;c[p>>2]=f+1;if(b){a[f>>0]=45;c[w>>2]=0-(c[w>>2]|0)}else a[f>>0]=43;if((c[w>>2]|0)>=100){e=((c[w>>2]|0)/100|0)+48&255;b=c[p>>2]|0;c[p>>2]=b+1;a[b>>0]=e;c[w>>2]=(c[w>>2]|0)%100|0}b=((c[w>>2]|0)/10|0)+48&255;e=c[p>>2]|0;c[p>>2]=e+1;a[e>>0]=b;e=((c[w>>2]|0)%10|0)+48&255;b=c[p>>2]|0;c[p>>2]=b+1;a[b>>0]=e}a[c[p>>2]>>0]=0;c[Q>>2]=(c[p>>2]|0)-(c[pa>>2]|0);c[p>>2]=c[pa>>2];if((d[H>>0]|0)==0|(a[B>>0]|0)!=0)break b;if((c[Q>>2]|0)>=(c[ja>>2]|0))break b;c[U>>2]=(c[ja>>2]|0)-(c[Q>>2]|0);c[I>>2]=c[ja>>2];while(1){if((c[I>>2]|0)<(c[U>>2]|0))break;a[(c[p>>2]|0)+(c[I>>2]|0)>>0]=a[(c[p>>2]|0)+((c[I>>2]|0)-(c[U>>2]|0))>>0]|0;c[I>>2]=(c[I>>2]|0)+-1}c[I>>2]=(a[ba>>0]|0)!=0&1;while(1){b=c[U>>2]|0;c[U>>2]=b+-1;if(!b)break;b=c[I>>2]|0;c[I>>2]=b+1;a[(c[p>>2]|0)+b>>0]=48}c[Q>>2]=c[ja>>2];break}case 5:{if(!(a[m>>0]|0)){e=c[(c[j>>2]|0)+12>>2]|0;f=c[l>>2]|0;sa=(c[f>>2]|0)+(4-1)&~(4-1);b=c[sa>>2]|0;c[f>>2]=sa+4;c[b>>2]=e}c[ja>>2]=0;c[Q>>2]=0;break}case 8:{a[o>>0]=37;c[p>>2]=o;c[Q>>2]=1;break}case 9:{if(a[m>>0]|0){c[p>>2]=pO(c[X>>2]|0)|0;if(c[p>>2]|0)f=a[c[p>>2]>>0]|0;else f=0;c[q>>2]=f}else{b=c[l>>2]|0;e=(c[b>>2]|0)+(4-1)&~(4-1);sa=c[e>>2]|0;c[b>>2]=e+4;c[q>>2]=sa}if((c[aa>>2]|0)>1){c[ja>>2]=(c[ja>>2]|0)-((c[aa>>2]|0)-1);if(!((c[ja>>2]|0)<=1|(a[B>>0]|0)!=0)){qO(c[j>>2]|0,(c[ja>>2]|0)-1|0,32);c[ja>>2]=0}qO(c[j>>2]|0,(c[aa>>2]|0)-1|0,c[q>>2]&255)}c[Q>>2]=1;a[o>>0]=c[q>>2];c[p>>2]=o;break}case 7:case 6:{if(a[m>>0]|0){c[p>>2]=pO(c[X>>2]|0)|0;a[na>>0]=6}else{b=c[l>>2]|0;e=(c[b>>2]|0)+(4-1)&~(4-1);sa=c[e>>2]|0;c[b>>2]=e+4;c[p>>2]=sa}if(c[p>>2]|0){if((d[na>>0]|0)==7)c[oa>>2]=c[p>>2]}else c[p>>2]=19266;if((c[aa>>2]|0)<0){c[Q>>2]=If(c[p>>2]|0)|0;break b}c[Q>>2]=0;while(1){if((c[Q>>2]|0)>=(c[aa>>2]|0))break b;if(!(a[(c[p>>2]|0)+(c[Q>>2]|0)>>0]|0))break b;c[Q>>2]=(c[Q>>2]|0)+1}}case 15:case 11:case 10:{a[da>>0]=(d[na>>0]|0)==15?34:39;if(a[m>>0]|0)c[v>>2]=pO(c[X>>2]|0)|0;else{b=c[l>>2]|0;e=(c[b>>2]|0)+(4-1)&~(4-1);sa=c[e>>2]|0;c[b>>2]=e+4;c[v>>2]=sa}c[M>>2]=(c[v>>2]|0)==0&1;if(c[M>>2]|0)c[v>>2]=(d[na>>0]|0)==11?40498:46246;c[O>>2]=c[aa>>2];c[S>>2]=0;c[J>>2]=0;while(1){if(!(c[O>>2]|0))break;sa=a[(c[v>>2]|0)+(c[J>>2]|0)>>0]|0;a[r>>0]=sa;if(!(sa<<24>>24))break;if((a[r>>0]|0)==(a[da>>0]|0))c[S>>2]=(c[S>>2]|0)+1;c[J>>2]=(c[J>>2]|0)+1;c[O>>2]=(c[O>>2]|0)+-1}if(c[M>>2]|0)f=0;else f=(d[na>>0]|0)==11;c[V>>2]=f&1;c[S>>2]=(c[S>>2]|0)+((c[J>>2]|0)+3);if((c[S>>2]|0)>70){sa=c[S>>2]|0;sa=_f(sa,((sa|0)<0)<<31>>31)|0;c[oa>>2]=sa;c[p>>2]=sa;if(!(c[p>>2]|0)){qa=241;break a}}else c[p>>2]=o;c[N>>2]=0;if(c[V>>2]|0){b=a[da>>0]|0;sa=c[N>>2]|0;c[N>>2]=sa+1;a[(c[p>>2]|0)+sa>>0]=b}c[O>>2]=c[J>>2];c[J>>2]=0;while(1){if((c[J>>2]|0)>=(c[O>>2]|0))break;b=a[(c[v>>2]|0)+(c[J>>2]|0)>>0]|0;a[r>>0]=b;sa=c[N>>2]|0;c[N>>2]=sa+1;a[(c[p>>2]|0)+sa>>0]=b;if((a[r>>0]|0)==(a[da>>0]|0)){b=a[r>>0]|0;sa=c[N>>2]|0;c[N>>2]=sa+1;a[(c[p>>2]|0)+sa>>0]=b}c[J>>2]=(c[J>>2]|0)+1}if(c[V>>2]|0){b=a[da>>0]|0;sa=c[N>>2]|0;c[N>>2]=sa+1;a[(c[p>>2]|0)+sa>>0]=b}a[(c[p>>2]|0)+(c[N>>2]|0)>>0]=0;c[Q>>2]=c[N>>2];break}case 12:{b=c[l>>2]|0;e=(c[b>>2]|0)+(4-1)&~(4-1);sa=c[e>>2]|0;c[b>>2]=e+4;c[_>>2]=sa;if((c[_>>2]|0)!=0?(c[(c[_>>2]|0)+4>>2]|0)!=0:0)aA(c[j>>2]|0,c[c[_>>2]>>2]|0,c[(c[_>>2]|0)+4>>2]|0);c[ja>>2]=0;c[Q>>2]=0;break}case 13:{e=c[l>>2]|0;sa=(c[e>>2]|0)+(4-1)&~(4-1);b=c[sa>>2]|0;c[e>>2]=sa+4;c[Z>>2]=b;b=c[l>>2]|0;e=(c[b>>2]|0)+(4-1)&~(4-1);sa=c[e>>2]|0;c[b>>2]=e+4;c[P>>2]=sa;c[Y>>2]=(c[Z>>2]|0)+8+((c[P>>2]|0)*72|0);if(c[(c[Y>>2]|0)+4>>2]|0){AD(c[j>>2]|0,c[(c[Y>>2]|0)+4>>2]|0);aA(c[j>>2]|0,45876,1)}AD(c[j>>2]|0,c[(c[Y>>2]|0)+8>>2]|0);c[ja>>2]=0;c[Q>>2]=0;break}default:{qa=268;break a}}while(0);if((qa|0)==62){qa=0;f=(a[m>>0]|0)!=0;do if(d[(c[L>>2]|0)+2>>0]&1){do if(!f){f=c[l>>2]|0;if(a[E>>0]|0){sa=(c[f>>2]|0)+(8-1)&~(8-1);b=sa;e=c[b>>2]|0;b=c[b+4>>2]|0;c[f>>2]=sa+8;sa=ia;c[sa>>2]=e;c[sa+4>>2]=b;break}else{sa=(c[f>>2]|0)+(4-1)&~(4-1);b=c[sa>>2]|0;c[f>>2]=sa+4;sa=ia;c[sa>>2]=b;c[sa+4>>2]=((b|0)<0)<<31>>31;break}}else{b=mO(c[X>>2]|0)|0;sa=ia;c[sa>>2]=b;c[sa+4>>2]=C}while(0);e=ia;f=c[e>>2]|0;e=c[e+4>>2]|0;if((c[ia+4>>2]|0)<0){if((f|0)==0&(e|0)==-2147483648){sa=R;c[sa>>2]=0;c[sa+4>>2]=-2147483648}else{b=ia;b=fR(0,0,c[b>>2]|0,c[b+4>>2]|0)|0;sa=R;c[sa>>2]=b;c[sa+4>>2]=C}a[ba>>0]=45;break}sa=R;c[sa>>2]=f;c[sa+4>>2]=e;if(a[F>>0]|0){a[ba>>0]=43;break}if(a[z>>0]|0){a[ba>>0]=32;break}else{a[ba>>0]=0;break}}else{do if(!f){f=c[l>>2]|0;if(a[E>>0]|0){sa=(c[f>>2]|0)+(8-1)&~(8-1);b=sa;e=c[b>>2]|0;b=c[b+4>>2]|0;c[f>>2]=sa+8;sa=R;c[sa>>2]=e;c[sa+4>>2]=b;break}else{sa=(c[f>>2]|0)+(4-1)&~(4-1);b=c[sa>>2]|0;c[f>>2]=sa+4;sa=R;c[sa>>2]=b;c[sa+4>>2]=0;break}}else{b=mO(c[X>>2]|0)|0;sa=R;c[sa>>2]=b;c[sa+4>>2]=C}while(0);a[ba>>0]=0}while(0);sa=R;if((c[sa>>2]|0)==0&(c[sa+4>>2]|0)==0)a[x>>0]=0;if((d[H>>0]|0)!=0?(c[aa>>2]|0)<((c[ja>>2]|0)-((a[ba>>0]|0)!=0&1)|0):0)c[aa>>2]=(c[ja>>2]|0)-((a[ba>>0]|0)!=0&1);if((c[aa>>2]|0)>=60){c[T>>2]=(c[aa>>2]|0)+10;sa=c[T>>2]|0;sa=_f(sa,((sa|0)<0)<<31>>31)|0;c[oa>>2]=sa;c[pa>>2]=sa;if(!(c[pa>>2]|0)){qa=92;break}}else{c[T>>2]=70;c[pa>>2]=o}c[p>>2]=(c[pa>>2]|0)+((c[T>>2]|0)-1);if((d[na>>0]|0)==16){sa=R;sa=tR(c[sa>>2]|0,c[sa+4>>2]|0,10,0)|0;c[la>>2]=sa;if(!((c[la>>2]|0)<4?(sa=R,sa=sR(c[sa>>2]|0,c[sa+4>>2]|0,10,0)|0,sa=tR(sa|0,C|0,10,0)|0,!((sa|0)==1&(C|0)==0)):0))c[la>>2]=0;sa=a[46189+((c[la>>2]<<1)+1)>>0]|0;b=(c[p>>2]|0)+-1|0;c[p>>2]=b;a[b>>0]=sa;b=a[46189+(c[la>>2]<<1)>>0]|0;sa=(c[p>>2]|0)+-1|0;c[p>>2]=sa;a[sa>>0]=b}c[s>>2]=46198+(d[(c[L>>2]|0)+4>>0]|0);a[n>>0]=a[(c[L>>2]|0)+1>>0]|0;do{sa=R;sa=tR(c[sa>>2]|0,c[sa+4>>2]|0,d[n>>0]|0,0)|0;sa=a[(c[s>>2]|0)+sa>>0]|0;b=(c[p>>2]|0)+-1|0;c[p>>2]=b;a[b>>0]=sa;b=R;b=sR(c[b>>2]|0,c[b+4>>2]|0,d[n>>0]|0,0)|0;sa=R;c[sa>>2]=b;c[sa+4>>2]=C;sa=R;b=c[sa+4>>2]|0}while(b>>>0>0|(b|0)==0&(c[sa>>2]|0)>>>0>0);c[Q>>2]=(c[pa>>2]|0)+((c[T>>2]|0)-1)-(c[p>>2]|0);c[K>>2]=(c[aa>>2]|0)-(c[Q>>2]|0);while(1){if((c[K>>2]|0)<=0)break;sa=(c[p>>2]|0)+-1|0;c[p>>2]=sa;a[sa>>0]=48;c[K>>2]=(c[K>>2]|0)+-1}if(a[ba>>0]|0){b=a[ba>>0]|0;sa=(c[p>>2]|0)+-1|0;c[p>>2]=sa;a[sa>>0]=b}e:do if((d[x>>0]|0)!=0?(d[(c[L>>2]|0)+5>>0]|0)!=0:0){c[$>>2]=46231+(d[(c[L>>2]|0)+5>>0]|0);while(1){sa=a[c[$>>2]>>0]|0;a[ma>>0]=sa;if(!(sa<<24>>24))break e;b=a[ma>>0]|0;sa=(c[p>>2]|0)+-1|0;c[p>>2]=sa;a[sa>>0]=b;c[$>>2]=(c[$>>2]|0)+1}}while(0);c[Q>>2]=(c[pa>>2]|0)+((c[T>>2]|0)-1)-(c[p>>2]|0)}c[ja>>2]=(c[ja>>2]|0)-(c[Q>>2]|0);if(!((c[ja>>2]|0)<=0|(a[B>>0]|0)!=0))qO(c[j>>2]|0,c[ja>>2]|0,32);aA(c[j>>2]|0,c[p>>2]|0,c[Q>>2]|0);if((c[ja>>2]|0)>0?(d[B>>0]|0)!=0:0)qO(c[j>>2]|0,c[ja>>2]|0,32);if(c[oa>>2]|0){Sf(c[c[j>>2]>>2]|0,c[oa>>2]|0);c[oa>>2]=0}c[k>>2]=(c[k>>2]|0)+1}if((qa|0)==13){aA(c[j>>2]|0,46049,1);i=ra;return}else if((qa|0)==92){eA(c[j>>2]|0,1);i=ra;return}else if((qa|0)==161){eA(c[j>>2]|0,1);i=ra;return}else if((qa|0)==241){eA(c[j>>2]|0,1);i=ra;return}else if((qa|0)==268){i=ra;return}}function eg(b){b=b|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=b;do if(((c[(c[e>>2]|0)+8>>2]|0)!=0?(a[(c[(c[e>>2]|0)+8>>2]|0)+(c[(c[e>>2]|0)+12>>2]|0)>>0]=0,(c[(c[e>>2]|0)+20>>2]|0)>>>0>0):0)?((d[(c[e>>2]|0)+25>>0]|0)&4|0)==0:0){b=yh(c[c[e>>2]>>2]|0,(c[(c[e>>2]|0)+12>>2]|0)+1|0,0)|0;c[(c[e>>2]|0)+8>>2]=b;b=c[e>>2]|0;if(c[(c[e>>2]|0)+8>>2]|0){iR(c[b+8>>2]|0,c[(c[e>>2]|0)+4>>2]|0,(c[(c[e>>2]|0)+12>>2]|0)+1|0)|0;b=(c[e>>2]|0)+25|0;a[b>>0]=d[b>>0]|0|4;break}else{eA(b,1);break}}while(0);i=f;return c[(c[e>>2]|0)+8>>2]|0}function fg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+256|0;h=e+36|0;j=e+32|0;f=e+28|0;g=e;c[h>>2]=a;c[j>>2]=b;c[f>>2]=d;cg(g,0,e+40|0,210,0);dg(g,c[j>>2]|0,c[f>>2]|0);f=c[66]|0;d=c[67]|0;a=c[h>>2]|0;b=eg(g)|0;Ub[f&255](d,a,b);i=e;return}function gg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;d=Ob[c[(c[h>>2]|0)+56>>2]&255](c[h>>2]|0,c[g>>2]|0,c[f>>2]|0)|0;i=e;return d|0}function hg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+28|0;g=l+24|0;h=l+20|0;k=l+16|0;j=l;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[(c[f>>2]|0)+52>>2]=c[g>>2];a=c[f>>2]|0;if(!(c[h>>2]|0)){jg(a,c[g>>2]|0);i=l;return}if((c[a+236>>2]|0)==0?(g=Vh(c[f>>2]|0)|0,c[(c[f>>2]|0)+236>>2]=g,(g|0)==0):0){i=l;return}c[j>>2]=e;c[k>>2]=Zw(c[f>>2]|0,c[h>>2]|0,j)|0;Wh(c[(c[f>>2]|0)+236>>2]|0,-1,c[k>>2]|0,1,170);i=l;return}function ig(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f;e=f+8|0;g=d;c[g>>2]=a;c[g+4>>2]=b;b=d;c[e>>2]=_f(c[b>>2]|0,c[b+4>>2]|0)|0;if(!(c[e>>2]|0)){g=c[e>>2]|0;i=f;return g|0}kR(c[e>>2]|0,0,c[d>>2]|0)|0;g=c[e>>2]|0;i=f;return g|0}function jg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;d=e+4|0;f=e;c[d>>2]=a;c[f>>2]=b;c[(c[d>>2]|0)+52>>2]=c[f>>2];if(!(c[(c[d>>2]|0)+236>>2]|0)){i=e;return}PM(c[(c[d>>2]|0)+236>>2]|0);i=e;return}function kg(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;c[(c[(c[d>>2]|0)+4>>2]|0)+4>>2]=c[c[d>>2]>>2];i=b;return}function lg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!((c[b>>2]|0)!=0&(c[b>>2]|0)!=5)){a=0;a=a&1;i=d;return a|0}a=(c[b>>2]|0)!=6;a=a&1;i=d;return a|0}function mg(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;h=p+24|0;j=p+20|0;l=p+16|0;o=p+12|0;k=p+8|0;m=p+4|0;n=p;c[h>>2]=f;c[j>>2]=g;c[l>>2]=c[(c[h>>2]|0)+4>>2];c[o>>2]=0;kg(c[h>>2]|0);do if((d[(c[h>>2]|0)+8>>0]|0)!=2?(c[j>>2]|0)!=0?1:(d[(c[h>>2]|0)+8>>0]|0)!=1:0){if((c[j>>2]|0)!=0?(e[(c[l>>2]|0)+22>>1]&1|0)!=0:0){c[o>>2]=8;break}c[k>>2]=0;if((c[j>>2]|0)!=0?(d[(c[l>>2]|0)+20>>0]|0)==2:0)g=8;else g=7;a:do if((g|0)==7)if(!(e[(c[l>>2]|0)+22>>1]&64)){if((c[j>>2]|0)>1){c[m>>2]=c[(c[l>>2]|0)+72>>2];while(1){if(!(c[m>>2]|0))break a;f=c[m>>2]|0;if((c[c[m>>2]>>2]|0)!=(c[h>>2]|0))break;c[m>>2]=c[f+12>>2]}c[k>>2]=c[c[f>>2]>>2]}}else g=8;while(0);if((g|0)==8)c[k>>2]=c[c[(c[l>>2]|0)+76>>2]>>2];if(c[k>>2]|0){c[o>>2]=262;break}c[o>>2]=mH(c[h>>2]|0,1,1)|0;if(!(c[o>>2]|0)){m=(c[l>>2]|0)+22|0;b[m>>1]=e[m>>1]&-9;if(!(c[(c[l>>2]|0)+44>>2]|0)){m=(c[l>>2]|0)+22|0;b[m>>1]=e[m>>1]|8}while(1){if((c[(c[l>>2]|0)+12>>2]|0)==0?(m=MM(c[l>>2]|0)|0,c[o>>2]=m,0==(m|0)):0)continue;do if((c[o>>2]|0)==0&(c[j>>2]|0)!=0){if(e[(c[l>>2]|0)+22>>1]&1){c[o>>2]=8;break}k=c[c[l>>2]>>2]|0;m=(c[j>>2]|0)>1&1;c[o>>2]=NM(k,m,Sq(c[c[h>>2]>>2]|0)|0)|0;if(!(c[o>>2]|0))c[o>>2]=VL(c[l>>2]|0)|0}while(0);if(c[o>>2]|0)rB(c[l>>2]|0);if((c[o>>2]&255|0)!=5)break;if(d[(c[l>>2]|0)+20>>0]|0)break;if(!(Yq(c[l>>2]|0)|0))break}if(!(c[o>>2]|0)){if((d[(c[h>>2]|0)+8>>0]|0)==0?(m=(c[l>>2]|0)+40|0,c[m>>2]=(c[m>>2]|0)+1,(a[(c[h>>2]|0)+9>>0]|0)!=0):0){a[(c[h>>2]|0)+32+8>>0]=1;c[(c[h>>2]|0)+32+12>>2]=c[(c[l>>2]|0)+72>>2];c[(c[l>>2]|0)+72>>2]=(c[h>>2]|0)+32}a[(c[h>>2]|0)+8>>0]=(c[j>>2]|0)!=0?2:1;if((d[(c[h>>2]|0)+8>>0]|0)>(d[(c[l>>2]|0)+20>>0]|0))a[(c[l>>2]|0)+20>>0]=a[(c[h>>2]|0)+8>>0]|0; -if(c[j>>2]|0){c[n>>2]=c[(c[l>>2]|0)+12>>2];c[(c[l>>2]|0)+76>>2]=c[h>>2];m=(c[l>>2]|0)+22|0;b[m>>1]=e[m>>1]&-33;if((c[j>>2]|0)>1){m=(c[l>>2]|0)+22|0;b[m>>1]=e[m>>1]|32}m=c[(c[l>>2]|0)+44>>2]|0;if((m|0)!=($q((c[(c[n>>2]|0)+56>>2]|0)+28|0)|0)?(c[o>>2]=Dg(c[(c[n>>2]|0)+72>>2]|0)|0,(c[o>>2]|0)==0):0)Xs((c[(c[n>>2]|0)+56>>2]|0)+28|0,c[(c[l>>2]|0)+44>>2]|0)}}}}while(0);if(!((c[o>>2]|0)==0&(c[j>>2]|0)!=0)){o=c[o>>2]|0;i=p;return o|0}c[o>>2]=SL(c[c[l>>2]>>2]|0,c[(c[c[h>>2]>>2]|0)+500>>2]|0)|0;o=c[o>>2]|0;i=p;return o|0}function ng(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[h>>2]=c[(c[e>>2]|0)+4>>2];kg(c[e>>2]|0);if((c[f>>2]|0)==15){d=LM(c[c[h>>2]>>2]|0)|0;c[c[g>>2]>>2]=d+(c[(c[e>>2]|0)+20>>2]|0);i=j;return}else{d=$q((c[(c[(c[h>>2]|0)+12>>2]|0)+56>>2]|0)+(36+(c[f>>2]<<2))|0)|0;c[c[g>>2]>>2]=d;i=j;return}}function og(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return(d[(c[b>>2]|0)+8>>0]|0|0)!=0|0}function pg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[(c[b>>2]|0)+4>>2]|0)+32>>2]|0}function qg(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return d[(c[b>>2]|0)+5>>0]|0|0}function rg(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=$E(c[(c[d>>2]|0)+4>>2]|0)|0;i=b;return a|0}function sg(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=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;t=i;i=i+48|0;k=t+44|0;l=t+40|0;m=t+36|0;n=t+32|0;u=t+28|0;s=t+24|0;r=t+20|0;p=t+16|0;q=t+12|0;o=t+8|0;h=t+4|0;g=t;c[l>>2]=a;c[m>>2]=b;c[n>>2]=e;c[u>>2]=f;c[s>>2]=0;c[r>>2]=0;c[p>>2]=0;c[q>>2]=c[u>>2]&1;c[o>>2]=0;if((c[m>>2]|0)>>>0<=1&(c[m>>2]|0)==0){c[k>>2]=Lj(49076)|0;u=c[k>>2]|0;i=t;return u|0}do if(c[(c[l>>2]|0)+44>>2]|0){c[s>>2]=c[(c[l>>2]|0)+44>>2];j=23}else{if(((c[o>>2]|0)!=0?(sr(c[l>>2]|0)|0)!=0:0)?(c[s>>2]=xs(c[(c[l>>2]|0)+216>>2]|0,c[m>>2]|0,p)|0,(c[s>>2]|0)!=0):0)break;if((c[o>>2]|0)!=0&(c[p>>2]|0)==0){c[h>>2]=0;e=c[(c[l>>2]|0)+64>>2]|0;u=c[(c[l>>2]|0)+160>>2]|0;u=rR((c[m>>2]|0)-1|0,0,u|0,((u|0)<0)<<31>>31|0)|0;c[s>>2]=$K(e,u,C,c[(c[l>>2]|0)+160>>2]|0,h)|0;if((c[s>>2]|0)==0&(c[h>>2]|0)!=0){if((d[(c[l>>2]|0)+17>>0]|0|0)>1)c[r>>2]=Zr(c[l>>2]|0,c[m>>2]|0)|0;f=c[l>>2]|0;if(!(c[r>>2]|0))c[s>>2]=IM(f,c[m>>2]|0,c[h>>2]|0,r)|0;else{e=c[f+64>>2]|0;u=c[(c[l>>2]|0)+160>>2]|0;u=rR((c[m>>2]|0)-1|0,0,u|0,((u|0)<0)<<31>>31|0)|0;Cs(e,u,C,c[h>>2]|0)|0}if(c[r>>2]|0){c[c[n>>2]>>2]=c[r>>2];c[k>>2]=0;u=c[k>>2]|0;i=t;return u|0}}if(c[s>>2]|0)break}c[g>>2]=cs(c[(c[l>>2]|0)+212>>2]|0,c[m>>2]|0,3)|0;if(!(c[g>>2]|0)){c[s>>2]=JM(c[(c[l>>2]|0)+212>>2]|0,c[m>>2]|0,g)|0;if(c[s>>2]|0)break;if(!(c[g>>2]|0)){c[c[n>>2]>>2]=0;c[r>>2]=0;c[s>>2]=7;break}}j=ds(c[(c[l>>2]|0)+212>>2]|0,c[m>>2]|0,c[g>>2]|0)|0;c[c[n>>2]>>2]=j;c[r>>2]=j;j=23}while(0);do if((j|0)==23){if(c[s>>2]|0){c[r>>2]=0;break}f=c[l>>2]|0;if(!((c[q>>2]|0)!=0?1:(c[(c[r>>2]|0)+16>>2]|0)==0)){u=f+192|0;c[u>>2]=(c[u>>2]|0)+1;c[k>>2]=0;u=c[k>>2]|0;i=t;return u|0}c[(c[r>>2]|0)+16>>2]=f;if((c[m>>2]|0)>>>0<=2147483647?(c[m>>2]|0)!=(((c[381]|0)/(c[(c[l>>2]|0)+160>>2]|0)|0)+1|0):0){if(((d[(c[l>>2]|0)+16>>0]|0|0)==0?!((c[q>>2]|0)!=0?1:(c[(c[l>>2]|0)+28>>2]|0)>>>0<(c[m>>2]|0)>>>0):0)?(c[c[(c[l>>2]|0)+64>>2]>>2]|0)!=0:0){u=(sr(c[l>>2]|0)|0)!=0;if(u&(c[o>>2]|0)==0?(c[s>>2]=xs(c[(c[l>>2]|0)+216>>2]|0,c[m>>2]|0,p)|0,(c[s>>2]|0)!=0):0)break;u=(c[l>>2]|0)+192+4|0;c[u>>2]=(c[u>>2]|0)+1;c[s>>2]=ys(c[r>>2]|0,c[p>>2]|0)|0;if(c[s>>2]|0)break}else{if((c[m>>2]|0)>>>0>(c[(c[l>>2]|0)+164>>2]|0)>>>0){c[s>>2]=13;break}if(c[q>>2]|0){Sj();if((c[m>>2]|0)>>>0<=(c[(c[l>>2]|0)+32>>2]|0)>>>0)gj(c[(c[l>>2]|0)+60>>2]|0,c[m>>2]|0)|0;Ht(c[l>>2]|0,c[m>>2]|0)|0;Tj()}kR(c[(c[r>>2]|0)+4>>2]|0,0,c[(c[l>>2]|0)+160>>2]|0)|0}c[k>>2]=0;u=c[k>>2]|0;i=t;return u|0}c[s>>2]=Lj(49165)|0}while(0);if(c[r>>2]|0)ws(c[r>>2]|0);Bs(c[l>>2]|0);c[c[n>>2]>>2]=0;c[k>>2]=c[s>>2];u=c[k>>2]|0;i=t;return u|0}function tg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+4>>2]|0}function ug(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=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;w=i;i=i+80|0;g=w+68|0;x=w+64|0;h=w+60|0;j=w+56|0;q=w+52|0;p=w+48|0;o=w+44|0;n=w+40|0;l=w+8|0;v=w+36|0;m=w;r=w+32|0;k=w+28|0;t=w+24|0;s=w+20|0;u=w+16|0;c[g>>2]=b;c[x>>2]=d;c[h>>2]=e;c[j>>2]=f;c[q>>2]=Of(c[(c[g>>2]|0)+4>>2]|0)|0;c[p>>2]=pg(c[(c[g>>2]|0)+24>>2]|0)|0;c[o>>2]=pg(c[(c[g>>2]|0)+4>>2]|0)|0;c[n>>2]=(c[p>>2]|0)<(c[o>>2]|0)?c[p>>2]|0:c[o>>2]|0;b=c[p>>2]|0;b=rR(c[x>>2]|0,0,b|0,((b|0)<0)<<31>>31|0)|0;e=l;c[e>>2]=b;c[e+4>>2]=C;c[v>>2]=0;if((c[p>>2]|0)!=(c[o>>2]|0)?(DJ(c[q>>2]|0)|0)!=0:0)c[v>>2]=8;x=l;e=c[p>>2]|0;e=fR(c[x>>2]|0,c[x+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;x=m;c[x>>2]=e;c[x+4>>2]=C;while(1){if(c[v>>2]|0){g=14;break}e=m;d=c[e+4>>2]|0;x=l;b=c[x+4>>2]|0;if(!((d|0)<(b|0)|((d|0)==(b|0)?(c[e>>2]|0)>>>0<(c[x>>2]|0)>>>0:0))){g=14;break}c[r>>2]=0;e=m;x=c[o>>2]|0;x=pR(c[e>>2]|0,c[e+4>>2]|0,x|0,((x|0)<0)<<31>>31|0)|0;c[k>>2]=x+1;if((c[k>>2]|0)!=((((c[381]|0)>>>0)/((c[(c[(c[(c[g>>2]|0)+4>>2]|0)+4>>2]|0)+32>>2]|0)>>>0)|0)+1|0)){x=sg(c[q>>2]|0,c[k>>2]|0,r,0)|0;c[v>>2]=x;if((0==(x|0)?(x=Dg(c[r>>2]|0)|0,c[v>>2]=x,0==(x|0)):0)?(x=m,e=c[p>>2]|0,e=qR(c[x>>2]|0,c[x+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,c[t>>2]=(c[h>>2]|0)+e,c[s>>2]=tg(c[r>>2]|0)|0,e=m,x=c[o>>2]|0,x=qR(c[e>>2]|0,c[e+4>>2]|0,x|0,((x|0)<0)<<31>>31|0)|0,c[u>>2]=(c[s>>2]|0)+x,iR(c[u>>2]|0,c[t>>2]|0,c[n>>2]|0)|0,a[(It(c[r>>2]|0)|0)>>0]=0,x=m,(c[x>>2]|0)==0&(c[x+4>>2]|0)==0&(c[j>>2]|0)==0):0){x=(c[u>>2]|0)+28|0;Xs(x,rg(c[(c[g>>2]|0)+24>>2]|0)|0)}vg(c[r>>2]|0)}e=c[o>>2]|0;x=m;e=gR(c[x>>2]|0,c[x+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;x=m;c[x>>2]=e;c[x+4>>2]=C}if((g|0)==14){i=w;return c[v>>2]|0}return 0}function vg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[b>>2]|0)){i=d;return}zs(c[b>>2]|0);i=d;return}function wg(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=Lg(Of(c[(c[d>>2]|0)+24>>2]|0)|0)|0;c[(c[d>>2]|0)+44>>2]=c[c[e>>2]>>2];c[c[e>>2]>>2]=c[d>>2];c[(c[d>>2]|0)+40>>2]=1;i=b;return}function xg(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;kg(c[e>>2]|0);c[(c[(c[e>>2]|0)+4>>2]|0)+44>>2]=0;c[b>>2]=VL(c[(c[e>>2]|0)+4>>2]|0)|0;i=d;return c[b>>2]|0}function yg(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;m=l+20|0;f=l+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[m>>2]=b;c[f>>2]=d;c[g>>2]=e;c[h>>2]=c[(c[m>>2]|0)+4>>2];kg(c[m>>2]|0);c[j>>2]=c[(c[(c[h>>2]|0)+12>>2]|0)+56>>2];c[k>>2]=Dg(c[(c[(c[h>>2]|0)+12>>2]|0)+72>>2]|0)|0;if(c[k>>2]|0){m=c[k>>2]|0;i=l;return m|0}Xs((c[j>>2]|0)+(36+(c[f>>2]<<2))|0,c[g>>2]|0);if((c[f>>2]|0)!=7){m=c[k>>2]|0;i=l;return m|0}a[(c[h>>2]|0)+18>>0]=c[g>>2];m=c[k>>2]|0;i=l;return m|0}function zg(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;Nf(c[b>>2]|0);c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[(c[b>>2]|0)+20>>2]|0))break;c[e>>2]=(c[(c[b>>2]|0)+16>>2]|0)+(c[d>>2]<<4);if(c[(c[e>>2]|0)+12>>2]|0)tj(c[(c[e>>2]|0)+12>>2]|0);c[d>>2]=(c[d>>2]|0)+1}e=(c[b>>2]|0)+24|0;c[e>>2]=c[e>>2]&-3;ju(c[b>>2]|0);mB(c[b>>2]|0);i=f;return}function Ag(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;h=n+16|0;j=n+12|0;l=n+8|0;m=n+4|0;k=n;c[h>>2]=f;c[j>>2]=g;c[l>>2]=c[(c[h>>2]|0)+4>>2];f=(c[l>>2]|0)+22|0;b[f>>1]=(e[f>>1]|0)&-17;if((c[j>>2]|0)==1){f=(c[l>>2]|0)+22|0;b[f>>1]=e[f>>1]|0|16}c[m>>2]=mg(c[h>>2]|0,0)|0;do if(!(c[m>>2]|0)){c[k>>2]=c[(c[(c[l>>2]|0)+12>>2]|0)+56>>2];if((d[(c[k>>2]|0)+18>>0]|0|0)==(c[j>>2]&255|0)?(d[(c[k>>2]|0)+19>>0]|0|0)==(c[j>>2]&255|0):0)break;c[m>>2]=mg(c[h>>2]|0,2)|0;if((c[m>>2]|0)==0?(c[m>>2]=Dg(c[(c[(c[l>>2]|0)+12>>2]|0)+72>>2]|0)|0,(c[m>>2]|0)==0):0){a[(c[k>>2]|0)+18>>0]=c[j>>2];a[(c[k>>2]|0)+19>>0]=c[j>>2]}}while(0);f=(c[l>>2]|0)+22|0;b[f>>1]=(e[f>>1]|0)&-17;i=n;return c[m>>2]|0}function Bg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+64>>2]|0}function Cg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;c[c[e>>2]>>2]=c[(c[f>>2]|0)+28>>2];i=d;return}function Dg(a){a=a|0;var b=0,d=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;b=g+4|0;f=g;c[b>>2]=a;c[f>>2]=c[(c[b>>2]|0)+16>>2];if(c[(c[f>>2]|0)+44>>2]|0){c[d>>2]=c[(c[f>>2]|0)+44>>2];f=c[d>>2]|0;i=g;return f|0}if(((e[(c[b>>2]|0)+24>>1]|0)&4|0)!=0?(c[(c[f>>2]|0)+28>>2]|0)>>>0>=(c[(c[b>>2]|0)+20>>2]|0)>>>0:0)if(c[(c[f>>2]|0)+104>>2]|0){c[d>>2]=lt(c[b>>2]|0)|0;f=c[d>>2]|0;i=g;return f|0}else{c[d>>2]=0;f=c[d>>2]|0;i=g;return f|0}b=c[b>>2]|0;if((c[(c[f>>2]|0)+156>>2]|0)>>>0>(c[(c[f>>2]|0)+160>>2]|0)>>>0){c[d>>2]=DM(b)|0;f=c[d>>2]|0;i=g;return f|0}else{c[d>>2]=EM(b)|0;f=c[d>>2]|0;i=g;return f|0}return 0}function Eg(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;g=p+28|0;h=p+24|0;j=p+20|0;k=p+16|0;o=p+12|0;m=p+8|0;n=p+4|0;l=p;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[o>>2]=0;f=c[h>>2]|0;if(c[(c[h>>2]|0)+44>>2]|0){c[g>>2]=c[f+44>>2];o=c[g>>2]|0;i=p;return o|0}if((d[f+17>>0]|0)<3){c[g>>2]=0;o=c[g>>2]|0;i=p;return o|0}f=c[h>>2]|0;do if(!(a[(c[h>>2]|0)+16>>0]|0)){e=(sr(f)|0)!=0;f=c[h>>2]|0;if(e){c[m>>2]=qs(c[f+212>>2]|0)|0;c[n>>2]=0;if(!(c[m>>2]|0)){c[o>>2]=sg(c[h>>2]|0,1,n,0)|0;c[m>>2]=c[n>>2];c[(c[m>>2]|0)+12>>2]=0}if(c[m>>2]|0)c[o>>2]=mt(c[h>>2]|0,c[m>>2]|0,c[(c[h>>2]|0)+28>>2]|0,1)|0;vg(c[n>>2]|0);if(c[o>>2]|0)break;rr(c[(c[h>>2]|0)+212>>2]|0);break}c[o>>2]=BM(f,0)|0;if((((c[o>>2]|0)==0?(c[o>>2]=CM(c[h>>2]|0,c[j>>2]|0)|0,(c[o>>2]|0)==0):0)?(c[o>>2]=nt(c[h>>2]|0,0)|0,(c[o>>2]|0)==0):0)?(n=c[h>>2]|0,c[o>>2]=ot(n,qs(c[(c[h>>2]|0)+212>>2]|0)|0)|0,(c[o>>2]|0)==0):0){rr(c[(c[h>>2]|0)+212>>2]|0);if((c[(c[h>>2]|0)+28>>2]|0)>>>0>(c[(c[h>>2]|0)+36>>2]|0)>>>0){c[l>>2]=(c[(c[h>>2]|0)+28>>2]|0)-((c[(c[h>>2]|0)+28>>2]|0)==(((c[381]|0)/(c[(c[h>>2]|0)+160>>2]|0)|0)+1|0)&1);c[o>>2]=ur(c[h>>2]|0,c[l>>2]|0)|0;if((c[o>>2]|0)!=0|(c[k>>2]|0)!=0)break}else if(c[k>>2]|0)break;c[o>>2]=Hg(c[h>>2]|0,c[j>>2]|0)|0}}else _i(c[f+96>>2]|0);while(0);if((c[o>>2]|0)==0?(sr(c[h>>2]|0)|0)==0:0)a[(c[h>>2]|0)+17>>0]=5;c[g>>2]=c[o>>2];o=c[g>>2]|0;i=p;return o|0}function Fg(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,j=0,k=0,l=0;g=i;i=i+32|0;k=g+16|0;j=g+12|0;h=g+8|0;l=g;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;b=l;c[b>>2]=e;c[b+4>>2]=f;b=l;b=Zb[c[(c[c[k>>2]>>2]|0)+12>>2]&255](c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;i=g;return b|0}function Gg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;e=j+20|0;f=j+8|0;g=j;h=j+16|0;c[e>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[h>>2]=Si(c[e>>2]|0,g)|0;if(c[h>>2]|0){h=c[h>>2]|0;i=j;return h|0}b=c[g+4>>2]|0;a=f;d=c[a+4>>2]|0;if(!((b|0)>(d|0)|((b|0)==(d|0)?(c[g>>2]|0)>>>0>(c[a>>2]|0)>>>0:0))){h=c[h>>2]|0;i=j;return h|0}a=f;c[h>>2]=nr(c[e>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;h=c[h>>2]|0;i=j;return h|0}function Hg(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[f>>2]=b;c[g>>2]=e;c[j>>2]=0;if(c[c[(c[f>>2]|0)+64>>2]>>2]|0){c[h>>2]=c[g>>2];e=vi(c[(c[f>>2]|0)+64>>2]|0,21,c[h>>2]|0)|0;c[j>>2]=e;c[j>>2]=(c[j>>2]|0)==12?0:e}if(c[j>>2]|0){e=c[j>>2]|0;i=k;return e|0}if(a[(c[f>>2]|0)+7>>0]|0){e=c[j>>2]|0;i=k;return e|0}c[j>>2]=or(c[(c[f>>2]|0)+64>>2]|0,d[(c[f>>2]|0)+12>>0]|0)|0;e=c[j>>2]|0;i=k;return e|0}function Ig(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;c[(c[e>>2]|0)+28>>2]=c[f>>2];i=d;return}function Jg(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;g=l+12|0;h=l+8|0;k=l+4|0;j=l;c[g>>2]=b;c[h>>2]=e;if(!(d[(c[g>>2]|0)+8>>0]|0)){c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}kg(c[g>>2]|0);do if((d[(c[g>>2]|0)+8>>0]|0|0)==2){c[j>>2]=c[(c[g>>2]|0)+4>>2];c[k>>2]=AM(c[c[j>>2]>>2]|0)|0;if(!((c[k>>2]|0)!=0&(c[h>>2]|0)==0)){k=(c[g>>2]|0)+20|0;c[k>>2]=(c[k>>2]|0)+-1;a[(c[j>>2]|0)+20>>0]=1;vM(c[j>>2]|0);break}c[f>>2]=c[k>>2];k=c[f>>2]|0;i=l;return k|0}while(0);wM(c[g>>2]|0);c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}function Kg(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;g=l+12|0;h=l+8|0;k=l+4|0;j=l;c[g>>2]=b;c[h>>2]=e;c[k>>2]=0;if((d[(c[g>>2]|0)+8>>0]|0)==2){c[j>>2]=c[(c[g>>2]|0)+4>>2];kg(c[g>>2]|0);if((a[(c[j>>2]|0)+17>>0]|0)!=0?(c[k>>2]=zM(c[j>>2]|0)|0,(c[k>>2]|0)!=0):0){c[f>>2]=c[k>>2];e=c[f>>2]|0;i=l;return e|0}if(a[(c[j>>2]|0)+19>>0]|0)Ig(c[c[j>>2]>>2]|0,c[(c[j>>2]|0)+44>>2]|0);c[k>>2]=Eg(c[c[j>>2]>>2]|0,c[h>>2]|0,0)|0}c[f>>2]=c[k>>2];e=c[f>>2]|0;i=l;return e|0}function Lg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[b>>2]|0)+96|0}function Mg(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;g=q+32|0;h=q+28|0;j=q+24|0;n=q+20|0;l=q+16|0;m=q+12|0;o=q+8|0;p=q+4|0;k=q;c[g>>2]=b;c[h>>2]=e;c[j>>2]=f;c[l>>2]=c[(c[g>>2]|0)+4>>2];kg(c[g>>2]|0);if(!(c[h>>2]|0)){f=nH(c[l>>2]|0,0,0)|0;c[h>>2]=f;c[n>>2]=f;if(c[n>>2]|0)c[j>>2]=0}else c[n>>2]=0;if((c[h>>2]|0)!=0?(c[o>>2]=oI(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0)|0,(c[o>>2]|0)!=0):0)c[n>>2]=c[o>>2];if((d[(c[g>>2]|0)+8>>0]|0|0)!=2){f=c[g>>2]|0;wM(f);f=c[n>>2]|0;i=q;return f|0}c[p>>2]=jr(c[c[l>>2]>>2]|0)|0;if(c[p>>2]|0)c[n>>2]=c[p>>2];if(!(nF(c[l>>2]|0,1,m,0)|0)){c[k>>2]=$q((c[(c[m>>2]|0)+56>>2]|0)+28|0)|0;if(!(c[k>>2]|0))Cg(c[c[l>>2]>>2]|0,k);c[(c[l>>2]|0)+44>>2]=c[k>>2];qB(c[m>>2]|0)}a[(c[l>>2]|0)+20>>0]=1;vM(c[l>>2]|0);f=c[g>>2]|0;wM(f);f=c[n>>2]|0;i=q;return f|0}function Ng(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+48|0;d=n+32|0;e=n+28|0;f=n+24|0;j=n+20|0;m=n+16|0;k=n+12|0;g=n+8|0;h=n+4|0;l=n;c[d>>2]=b;if((c[(c[d>>2]|0)+76>>2]|0)!=1691352191){i=n;return}if(eu(c[d>>2]|0)|0){i=n;return}qI(c[d>>2]|0,0);rI(c[d>>2]|0);c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[d>>2]|0)+20>>2]|0))break;c[j>>2]=(c[(c[d>>2]|0)+16>>2]|0)+(c[f>>2]<<4);if((c[(c[j>>2]|0)+4>>2]|0)!=0?(lB(c[(c[j>>2]|0)+4>>2]|0)|0,c[(c[j>>2]|0)+4>>2]=0,(c[f>>2]|0)!=1):0)c[(c[j>>2]|0)+12>>2]=0;c[f>>2]=(c[f>>2]|0)+1}if(c[(c[(c[d>>2]|0)+16>>2]|0)+16+12>>2]|0)tj(c[(c[(c[d>>2]|0)+16>>2]|0)+16+12>>2]|0);ju(c[d>>2]|0);mB(c[d>>2]|0);c[f>>2]=0;while(1){if((c[f>>2]|0)>=23)break;c[g>>2]=c[(c[d>>2]|0)+340+(c[f>>2]<<2)>>2];while(1){if(!(c[g>>2]|0))break;c[k>>2]=c[(c[g>>2]|0)+24>>2];while(1){if(!(c[g>>2]|0))break;bu(c[d>>2]|0,c[g>>2]|0);c[m>>2]=c[(c[g>>2]|0)+8>>2];Sf(c[d>>2]|0,c[g>>2]|0);c[g>>2]=c[m>>2]}c[g>>2]=c[k>>2]}c[f>>2]=(c[f>>2]|0)+1}c[e>>2]=c[(c[d>>2]|0)+432+8>>2];while(1){if(!(c[e>>2]|0))break;c[h>>2]=c[(c[e>>2]|0)+8>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=3)break;if(c[(c[h>>2]|0)+((c[f>>2]|0)*20|0)+16>>2]|0)Qb[c[(c[h>>2]|0)+((c[f>>2]|0)*20|0)+16>>2]&255](c[(c[h>>2]|0)+((c[f>>2]|0)*20|0)+8>>2]|0);c[f>>2]=(c[f>>2]|0)+1}Sf(c[d>>2]|0,c[h>>2]|0);c[e>>2]=c[c[e>>2]>>2]}vj((c[d>>2]|0)+432|0);c[e>>2]=c[(c[d>>2]|0)+312+8>>2];while(1){if(!(c[e>>2]|0))break;c[l>>2]=c[(c[e>>2]|0)+8>>2];if(c[(c[l>>2]|0)+12>>2]|0)Qb[c[(c[l>>2]|0)+12>>2]&255](c[(c[l>>2]|0)+8>>2]|0);BH(c[d>>2]|0,c[l>>2]|0);Sf(c[d>>2]|0,c[l>>2]|0);c[e>>2]=c[c[e>>2]>>2]}vj((c[d>>2]|0)+312|0);jg(c[d>>2]|0,0);$g(c[(c[d>>2]|0)+236>>2]|0);c[(c[d>>2]|0)+76>>2]=-1254786768;Sf(c[d>>2]|0,c[(c[(c[d>>2]|0)+16>>2]|0)+16+12>>2]|0);c[(c[d>>2]|0)+76>>2]=-1623446221;if(a[(c[d>>2]|0)+248+6>>0]|0)Kd(c[(c[d>>2]|0)+248+32>>2]|0);Kd(c[d>>2]|0);i=n;return}function Og(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=d+8|0;e=d+4|0;c[e>>2]=a;if(!(c[c[e>>2]>>2]|0)){Rd(21,45447,d);c[b>>2]=1;e=c[b>>2]|0;i=d;return e|0}else{c[b>>2]=0;e=c[b>>2]|0;i=d;return e|0}return 0}function Pg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;f=d+12|0;e=d+8|0;h=d;c[f>>2]=a;c[e>>2]=b;IH(c[c[f>>2]>>2]|0,h)|0;g=c[(c[f>>2]|0)+184>>2]|0;f=c[(c[f>>2]|0)+188>>2]|0;a=c[(c[e>>2]|0)+168>>2]|0;b=(c[e>>2]|0)+128|0;b=fR(c[h>>2]|0,c[h+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;b=rR(b|0,C|0,1e6,0)|0;_b[g&255](f,a,b,C);b=(c[e>>2]|0)+128|0;c[b>>2]=0;c[b+4>>2]=0;i=d;return}function Qg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=0;if(!((c[(c[b>>2]|0)+40>>2]|0)!=-1108210269?(c[(c[b>>2]|0)+40>>2]|0)!=1369188723:0))c[d>>2]=Sg(c[b>>2]|0)|0;Tu(c[b>>2]|0);i=e;return c[d>>2]|0}function Rg(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[f>>2]=a;c[g>>2]=b;if((c[g>>2]|0)==3082?1:(d[(c[f>>2]|0)+65>>0]|0|0)!=0){c[e>>2]=uM(c[f>>2]|0)|0;b=c[e>>2]|0;i=h;return b|0}else{c[e>>2]=c[g>>2]&c[(c[f>>2]|0)+56>>2];b=c[e>>2]|0;i=h;return b|0}return 0}function Sg(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0;h=i;i=i+16|0;g=h;d=h+8|0;f=h+4|0;c[d>>2]=a;c[f>>2]=c[c[d>>2]>>2];TH(c[d>>2]|0)|0;a=c[d>>2]|0;if((c[(c[d>>2]|0)+76>>2]|0)>=0){MH(a)|0;Sf(c[f>>2]|0,c[(c[d>>2]|0)+44>>2]|0);c[(c[d>>2]|0)+44>>2]=0;if((e[(c[d>>2]|0)+88>>1]|0)>>>4&1){g=(c[d>>2]|0)+88|0;b[g>>1]=b[g>>1]&-9|8}}else if((c[a+80>>2]|0)!=0?((e[(c[d>>2]|0)+88>>1]|0)>>>3&1|0)!=0:0){k=c[f>>2]|0;j=c[(c[d>>2]|0)+80>>2]|0;a=(c[(c[d>>2]|0)+44>>2]|0)!=0?19255:0;c[g>>2]=c[(c[d>>2]|0)+44>>2];hg(k,j,a,g);Sf(c[f>>2]|0,c[(c[d>>2]|0)+44>>2]|0);c[(c[d>>2]|0)+44>>2]=0}tM(c[d>>2]|0);k=(c[d>>2]|0)+136|0;c[k>>2]=0;c[k+4>>2]=0;c[(c[d>>2]|0)+40>>2]=649915045;i=h;return c[(c[d>>2]|0)+80>>2]&c[(c[f>>2]|0)+56>>2]|0}function Tg(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;c[(c[e>>2]|0)+40>>2]=-1108210269;c[(c[e>>2]|0)+76>>2]=-1;c[(c[e>>2]|0)+80>>2]=0;a[(c[e>>2]|0)+86>>0]=2;c[(c[e>>2]|0)+92>>2]=0;c[(c[e>>2]|0)+72>>2]=1;a[(c[e>>2]|0)+87>>0]=-1;c[(c[e>>2]|0)+104>>2]=0;b=(c[e>>2]|0)+144|0;c[b>>2]=0;c[b+4>>2]=0;i=d;return}function Ug(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(((e[(c[b>>2]|0)+8>>1]|0)&9312|0)==0?(c[(c[b>>2]|0)+24>>2]|0)==0:0){i=d;return}sM(c[b>>2]|0);i=d;return}function Vg(a){a=a|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+8|0;f=h+4|0;g=h;c[f>>2]=a;do if((e[(c[f>>2]|0)+8>>1]|0)&16384){a=(c[(c[f>>2]|0)+12>>2]|0)+(c[c[f>>2]>>2]|0)|0;c[g>>2]=a;c[g>>2]=(c[g>>2]|0)<=0?1:a;if(!(ux(c[f>>2]|0,c[g>>2]|0,1)|0)){kR((c[(c[f>>2]|0)+16>>2]|0)+(c[(c[f>>2]|0)+12>>2]|0)|0,0,c[c[f>>2]>>2]|0)|0;a=(c[f>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+(c[c[f>>2]>>2]|0);a=(c[f>>2]|0)+8|0;b[a>>1]=(e[a>>1]|0)&-16897;break}c[d>>2]=7;a=c[d>>2]|0;i=h;return a|0}while(0);c[d>>2]=0;a=c[d>>2]|0;i=h;return a|0}function Wg(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k+4|0;h=k;j=k+8|0;c[h>>2]=b;a[j>>0]=f;do if(c[h>>2]|0){if(((e[(c[h>>2]|0)+8>>1]|0)&514|0)==514?(d[(c[h>>2]|0)+10>>0]|0|0)==(d[j>>0]|0|0):0){c[g>>2]=c[(c[h>>2]|0)+16>>2];break}if((e[(c[h>>2]|0)+8>>1]|0)&1){c[g>>2]=0;break}else{c[g>>2]=rM(c[h>>2]|0,a[j>>0]|0)|0;break}}else c[g>>2]=0;while(0);i=k;return c[g>>2]|0}function Xg(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;j=l+8|0;g=l+4|0;h=l+12|0;k=l;c[g>>2]=b;a[h>>0]=f;c[k>>2]=c[g>>2];if(((e[(c[k>>2]|0)+8>>1]|0)&2|0)!=0?(d[(c[g>>2]|0)+10>>0]|0|0)==(d[h>>0]|0|0):0){c[j>>2]=c[(c[k>>2]|0)+12>>2];k=c[j>>2]|0;i=l;return k|0}b=e[(c[k>>2]|0)+8>>1]|0;if((e[(c[k>>2]|0)+8>>1]|0)&16){f=c[(c[k>>2]|0)+12>>2]|0;if(b&16384){c[j>>2]=f+(c[c[k>>2]>>2]|0);k=c[j>>2]|0;i=l;return k|0}else{c[j>>2]=f;k=c[j>>2]|0;i=l;return k|0}}else if(b&1){c[j>>2]=0;k=c[j>>2]|0;i=l;return k|0}else{c[j>>2]=qM(c[g>>2]|0,a[h>>0]|0)|0;k=c[j>>2]|0;i=l;return k|0}return 0}function Yg(b){b=b|0;var d=0,f=0,g=0,j=0,k=0,l=0.0;k=i;i=i+32|0;f=k+8|0;g=k+16|0;j=k;c[g>>2]=b;d=c[g>>2]|0;if((e[(c[g>>2]|0)+8>>1]|0)&8){h[f>>3]=+h[d>>3];l=+h[f>>3];i=k;return+l}b=c[g>>2]|0;if((e[d+8>>1]|0)&4){j=b;h[f>>3]=+((c[j>>2]|0)>>>0)+4294967296.0*+(c[j+4>>2]|0);l=+h[f>>3];i=k;return+l}if((e[b+8>>1]|0)&18){h[j>>3]=0.0;Ky(c[(c[g>>2]|0)+16>>2]|0,j,c[(c[g>>2]|0)+12>>2]|0,a[(c[g>>2]|0)+10>>0]|0)|0;h[f>>3]=+h[j>>3];l=+h[f>>3];i=k;return+l}else{h[f>>3]=0.0;l=+h[f>>3];i=k;return+l}return 0.0}function Zg(b){b=b|0;var d=0,f=0,g=0,j=0,k=0;k=i;i=i+32|0;d=k+8|0;f=k+20|0;g=k+16|0;j=k;c[f>>2]=b;c[g>>2]=e[(c[f>>2]|0)+8>>1];do if(!(c[g>>2]&4)){if(c[g>>2]&8){b=qx(+h[c[f>>2]>>3])|0;j=d;c[j>>2]=b;c[j+4>>2]=C;break}if(c[g>>2]&18){g=j;c[g>>2]=0;c[g+4>>2]=0;Hi(c[(c[f>>2]|0)+16>>2]|0,j,c[(c[f>>2]|0)+12>>2]|0,a[(c[f>>2]|0)+10>>0]|0)|0;g=j;b=c[g+4>>2]|0;j=d;c[j>>2]=c[g>>2];c[j+4>>2]=b;break}else{j=d;c[j>>2]=0;c[j+4>>2]=0;break}}else{g=c[f>>2]|0;b=c[g+4>>2]|0;j=d;c[j>>2]=c[g>>2];c[j+4>>2]=b}while(0);j=d;C=c[j+4>>2]|0;i=k;return c[j>>2]|0}function _g(d){d=d|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[g>>2]=d;if((e[(c[g>>2]|0)+8>>1]|0)&16384)Vg(c[g>>2]|0)|0;c[h>>2]=e[(c[g>>2]|0)+8>>1];do if(c[h>>2]&18){if((c[(c[g>>2]|0)+24>>2]|0)!=0?(c[(c[g>>2]|0)+16>>2]|0)==(c[(c[g>>2]|0)+20>>2]|0):0)break;if(!(ux(c[g>>2]|0,(c[(c[g>>2]|0)+12>>2]|0)+2|0,1)|0)){a[(c[(c[g>>2]|0)+16>>2]|0)+(c[(c[g>>2]|0)+12>>2]|0)>>0]=0;a[(c[(c[g>>2]|0)+16>>2]|0)+((c[(c[g>>2]|0)+12>>2]|0)+1)>>0]=0;d=(c[g>>2]|0)+8|0;b[d>>1]=e[d>>1]|0|512;break}c[f>>2]=7;d=c[f>>2]|0;i=j;return d|0}while(0);d=(c[g>>2]|0)+8|0;b[d>>1]=(e[d>>1]|0)&-4097;c[f>>2]=0;d=c[f>>2]|0;i=j;return d|0}function $g(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[b>>2]|0)){i=d;return}Ug(c[b>>2]|0);Sf(c[(c[b>>2]|0)+32>>2]|0,c[b>>2]|0);i=d;return}function ah(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;j=i;i=i+32|0;h=j+12|0;n=j+8|0;m=j+4|0;l=j+16|0;k=j;c[h>>2]=b;c[n>>2]=d;c[m>>2]=e;a[l>>0]=f;c[k>>2]=g;if((dh(c[c[h>>2]>>2]|0,c[n>>2]|0,c[m>>2]|0,a[l>>0]|0,c[k>>2]|0)|0)!=18){i=j;return}se(c[h>>2]|0);i=j;return}function bh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(!((c[f>>2]|0)==0|(c[f>>2]|0)==(-1|0)))Qb[c[f>>2]&255](c[e>>2]|0);if(!(c[g>>2]|0)){i=h;return 18}se(c[g>>2]|0);i=h;return 18}function ch(a,d){a=a|0;d=+d;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+8|0;f=g;c[e>>2]=a;h[f>>3]=d;fh(c[e>>2]|0);if(HF(+h[f>>3])|0){i=g;return}h[c[e>>2]>>3]=+h[f>>3];b[(c[e>>2]|0)+8>>1]=8;i=g;return}function dh(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=i;i=i+48|0;n=u+28|0;o=u+24|0;l=u+20|0;v=u+16|0;p=u+34|0;q=u+12|0;t=u+8|0;s=u+4|0;r=u+32|0;m=u;c[o>>2]=f;c[l>>2]=g;c[v>>2]=h;a[p>>0]=j;c[q>>2]=k;c[t>>2]=c[v>>2];b[r>>1]=0;j=c[o>>2]|0;if(!(c[l>>2]|0)){fh(j);c[n>>2]=0;v=c[n>>2]|0;i=u;return v|0}if(c[j+32>>2]|0)c[s>>2]=c[(c[(c[o>>2]|0)+32>>2]|0)+88>>2];else c[s>>2]=1e9;b[r>>1]=(d[p>>0]|0)==0?16:2;if((c[t>>2]|0)<0){a:do if((d[p>>0]|0)==1){c[t>>2]=If(c[l>>2]|0)|0;if((c[t>>2]|0)>(c[s>>2]|0))c[t>>2]=(c[s>>2]|0)+1}else{c[t>>2]=0;while(1){if((c[t>>2]|0)>(c[s>>2]|0))break a;if(!(a[(c[l>>2]|0)+(c[t>>2]|0)>>0]|a[(c[l>>2]|0)+((c[t>>2]|0)+1)>>0]))break a;c[t>>2]=(c[t>>2]|0)+2}}while(0);b[r>>1]=e[r>>1]|512}do if((c[q>>2]|0)!=(-1|0)){v=(c[q>>2]|0)==170;Ug(c[o>>2]|0);j=c[l>>2]|0;c[(c[o>>2]|0)+16>>2]=j;if(v){c[(c[o>>2]|0)+20>>2]=j;v=$t(c[(c[o>>2]|0)+32>>2]|0,c[(c[o>>2]|0)+20>>2]|0)|0;c[(c[o>>2]|0)+24>>2]=v;break}else{c[(c[o>>2]|0)+36>>2]=c[q>>2];b[r>>1]=e[r>>1]|((c[q>>2]|0)==0?2048:1024);break}}else{c[m>>2]=c[t>>2];if(e[r>>1]&512)c[m>>2]=(c[m>>2]|0)+((d[p>>0]|0)==1?1:2);if((c[t>>2]|0)>(c[s>>2]|0)){c[n>>2]=18;v=c[n>>2]|0;i=u;return v|0}if(!(tx(c[o>>2]|0,(c[m>>2]|0)>32?c[m>>2]|0:32)|0)){iR(c[(c[o>>2]|0)+16>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;break}c[n>>2]=7;v=c[n>>2]|0;i=u;return v|0}while(0);c[(c[o>>2]|0)+12>>2]=c[t>>2];b[(c[o>>2]|0)+8>>1]=b[r>>1]|0;a[(c[o>>2]|0)+10>>0]=(d[p>>0]|0)==0?1:d[p>>0]|0;if((d[(c[o>>2]|0)+10>>0]|0)!=1?(pM(c[o>>2]|0)|0)!=0:0){c[n>>2]=7;v=c[n>>2]|0;i=u;return v|0}if((c[t>>2]|0)>(c[s>>2]|0)){c[n>>2]=18;v=c[n>>2]|0;i=u;return v|0}else{c[n>>2]=0;v=c[n>>2]|0;i=u;return v|0}return 0}function eh(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+16|0;g=j+8|0;h=j;c[g>>2]=a;a=h;c[a>>2]=d;c[a+4>>2]=f;if((e[(c[g>>2]|0)+8>>1]|0)&9312){a=h;oM(c[g>>2]|0,c[a>>2]|0,c[a+4>>2]|0);i=j;return}else{f=h;h=c[f+4>>2]|0;a=c[g>>2]|0;c[a>>2]=c[f>>2];c[a+4>>2]=h;b[(c[g>>2]|0)+8>>1]=4;i=j;return}}function fh(a){a=a|0;var d=0,f=0;d=i;i=i+16|0;f=d;c[f>>2]=a;a=c[f>>2]|0;if((e[(c[f>>2]|0)+8>>1]|0)&9312){DF(a);i=d;return}else{b[a+8>>1]=1;i=d;return}}function gh(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=a;c[g>>2]=d;c[h>>2]=0;if((e[(c[f>>2]|0)+8>>1]|0)&9312)DF(c[f>>2]|0);a=c[f>>2]|0;d=c[g>>2]|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];a=(c[f>>2]|0)+8|0;b[a>>1]=(e[a>>1]|0)&-1025;if(!((e[(c[f>>2]|0)+8>>1]|0)&18)){h=c[h>>2]|0;i=j;return h|0}if((e[(c[g>>2]|0)+8>>1]|0)&2048){h=c[h>>2]|0;i=j;return h|0}a=(c[f>>2]|0)+8|0;b[a>>1]=e[a>>1]|0|4096;c[h>>2]=_g(c[f>>2]|0)|0;h=c[h>>2]|0;i=j;return h|0}function hh(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;f=h+4|0;g=h;c[f>>2]=d;c[g>>2]=e;Ug(c[f>>2]|0);b[(c[f>>2]|0)+8>>1]=16400;c[(c[f>>2]|0)+12>>2]=0;if((c[g>>2]|0)<0)c[g>>2]=0;c[c[f>>2]>>2]=c[g>>2];a[(c[f>>2]|0)+10>>0]=1;c[(c[f>>2]|0)+16>>2]=0;i=h;return}function ih(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=44821;if((c[b>>2]|0)!=516){c[b>>2]=c[b>>2]&255;if((c[b>>2]|0)>=0&(c[b>>2]|0)<27?(c[7072+(c[b>>2]<<2)>>2]|0)!=0:0)c[d>>2]=c[7072+(c[b>>2]<<2)>>2]}else c[d>>2]=44835;i=e;return c[d>>2]|0}function jh(b){b=b|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=b;if(d[(c[e>>2]|0)+65>>0]|0){i=f;return}if(d[(c[e>>2]|0)+66>>0]|0){i=f;return}a[(c[e>>2]|0)+65>>0]=1;if((c[(c[e>>2]|0)+160>>2]|0)>0)c[(c[e>>2]|0)+240>>2]=1;b=(c[e>>2]|0)+248|0;c[b>>2]=(c[b>>2]|0)+1;i=f;return}function kh(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+8|0;d=e+4|0;c[d>>2]=a;if(!(c[d>>2]|0)){Rd(21,44781,e);c[b>>2]=1;a=c[b>>2]|0;i=e;return a|0}else{c[b>>2]=Og(c[d>>2]|0)|0;a=c[b>>2]|0;i=e;return a|0}return 0}function lh(d){d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[g>>2]=d;if((c[(c[g>>2]|0)+40>>2]|0)!=-1108210269)Zd(c[g>>2]|0)|0;c[h>>2]=c[c[g>>2]>>2];d=c[g>>2]|0;if(a[(c[h>>2]|0)+65>>0]|0){c[d+80>>2]=7;c[f>>2]=7;j=c[f>>2]|0;i=k;return j|0}if((c[d+76>>2]|0)<=0?((e[(c[g>>2]|0)+88>>1]|0)>>>3&1|0)!=0:0){c[(c[g>>2]|0)+80>>2]=17;c[j>>2]=1}else{if((c[(c[g>>2]|0)+76>>2]|0)<0){if(!(c[(c[h>>2]|0)+148>>2]|0))c[(c[h>>2]|0)+240>>2]=0;if(((c[(c[h>>2]|0)+184>>2]|0)!=0?(a[(c[h>>2]|0)+140+5>>0]|0)==0:0)?(c[(c[g>>2]|0)+168>>2]|0)!=0:0)IH(c[c[h>>2]>>2]|0,(c[g>>2]|0)+128|0)|0;d=(c[h>>2]|0)+148|0;c[d>>2]=(c[d>>2]|0)+1;if(!((e[(c[g>>2]|0)+88>>1]|0)>>>6&1)){d=(c[h>>2]|0)+156|0;c[d>>2]=(c[d>>2]|0)+1}if((e[(c[g>>2]|0)+88>>1]|0)>>>7&1){d=(c[h>>2]|0)+152|0;c[d>>2]=(c[d>>2]|0)+1}c[(c[g>>2]|0)+76>>2]=0}if(b[(c[g>>2]|0)+88>>1]&3)c[j>>2]=JH(c[g>>2]|0)|0;else{d=(c[h>>2]|0)+160|0;c[d>>2]=(c[d>>2]|0)+1;c[j>>2]=KH(c[g>>2]|0)|0;d=(c[h>>2]|0)+160|0;c[d>>2]=(c[d>>2]|0)+-1}if((c[j>>2]|0)!=100?(d=(c[g>>2]|0)+128|0,l=c[d+4>>2]|0,(l|0)>0|(l|0)==0&(c[d>>2]|0)>>>0>0):0)Pg(c[h>>2]|0,c[g>>2]|0);if((c[j>>2]|0)==101?(l=LH(c[h>>2]|0)|0,c[(c[g>>2]|0)+80>>2]=l,(c[(c[g>>2]|0)+80>>2]|0)!=0):0)c[j>>2]=1;c[(c[h>>2]|0)+52>>2]=c[j>>2];if(7==(Rg(c[c[g>>2]>>2]|0,c[(c[g>>2]|0)+80>>2]|0)|0))c[(c[g>>2]|0)+80>>2]=7}if(((c[j>>2]|0)!=100?((e[(c[g>>2]|0)+88>>1]|0)>>>8&1|0)!=0:0)&(c[j>>2]|0)!=101)c[j>>2]=MH(c[g>>2]|0)|0;c[f>>2]=c[j>>2]&c[(c[h>>2]|0)+56>>2];l=c[f>>2]|0;i=k;return l|0}function mh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;b=h+20|0;d=h+16|0;g=h+12|0;f=h+8|0;j=h+4|0;e=h;c[d>>2]=a;c[j>>2]=Xd(c[d>>2]|0)|0;c[e>>2]=wA(c[d>>2]|0)|0;c[g>>2]=Rh(c[e>>2]|0,c[j>>2]|0,-1,0,c[d>>2]|0,f,0)|0;if(!(c[g>>2]|0)){GH(c[f>>2]|0,c[d>>2]|0);wh(c[f>>2]|0,c[d>>2]|0)|0;HH(c[f>>2]|0);Qg(c[f>>2]|0)|0;c[b>>2]=0;j=c[b>>2]|0;i=h;return j|0}if((c[g>>2]|0)==7)jh(c[e>>2]|0);c[b>>2]=c[g>>2];j=c[b>>2]|0;i=h;return j|0}function nh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;d=j+16|0;e=j+12|0;f=j+8|0;h=j+4|0;g=j;c[e>>2]=a;c[f>>2]=b;if(!(c[f>>2]|0)){c[d>>2]=0;h=c[d>>2]|0;i=j;return h|0}c[g>>2]=(If(c[f>>2]|0)|0)+1;b=c[g>>2]|0;c[h>>2]=yh(c[e>>2]|0,b,((b|0)<0)<<31>>31)|0;if(c[h>>2]|0)iR(c[h>>2]|0,c[f>>2]|0,c[g>>2]|0)|0;c[d>>2]=c[h>>2];h=c[d>>2]|0;i=j;return h|0}function oh(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=d;c[g>>2]=c[(c[e>>2]|0)+8>>2];d=c[g>>2]|0;if((c[f>>2]|0)>0){tx(d,c[f>>2]|0)|0;b[(c[g>>2]|0)+8>>1]=8192;c[c[g>>2]>>2]=c[(c[e>>2]|0)+4>>2];if(c[(c[g>>2]|0)+16>>2]|0)kR(c[(c[g>>2]|0)+16>>2]|0,0,c[f>>2]|0)|0}else{fh(d);c[(c[g>>2]|0)+16>>2]=0}i=h;return c[(c[g>>2]|0)+16>>2]|0}function ph(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;h=g+12|0;e=g;f=g+8|0;c[h>>2]=a;a=e;c[a>>2]=b;c[a+4>>2]=d;a=e;c[f>>2]=yh(c[h>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;if(!(c[f>>2]|0)){h=c[f>>2]|0;i=g;return h|0}kR(c[f>>2]|0,0,c[e>>2]|0)|0;h=c[f>>2]|0;i=g;return h|0}function qh(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;j=h+12|0;d=h+8|0;g=h+4|0;f=h;c[j>>2]=a;c[d>>2]=b;c[g>>2]=c[j>>2];if(((c[g>>2]|0)!=0?(c[(c[g>>2]|0)+20>>2]|0)!=0:0)?(c[d>>2]|0)>=0?(c[d>>2]|0)<(e[(c[g>>2]|0)+84>>1]|0|0):0:0){c[f>>2]=(c[(c[g>>2]|0)+20>>2]|0)+((c[d>>2]|0)*40|0);j=c[f>>2]|0;i=h;return j|0}if((c[g>>2]|0)!=0?(c[c[g>>2]>>2]|0)!=0:0)jg(c[c[g>>2]>>2]|0,25);c[f>>2]=FH()|0;j=c[f>>2]|0;i=h;return j|0}function rh(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=c[e>>2];if(!(c[b>>2]|0)){i=d;return}e=Rg(c[c[b>>2]>>2]|0,c[(c[b>>2]|0)+80>>2]|0)|0;c[(c[b>>2]|0)+80>>2]=e;i=d;return}function sh(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+32|0;p=o+28|0;g=o+24|0;h=o+20|0;j=o+16|0;n=o+12|0;m=o+8|0;l=o+4|0;k=o;c[p>>2]=b;c[g>>2]=d;c[h>>2]=e;c[j>>2]=f;c[n>>2]=0;c[m>>2]=c[p>>2];c[k>>2]=c[c[m>>2]>>2];c[l>>2]=ye(c[p>>2]|0)|0;if(!((c[g>>2]|0)>=0?(c[g>>2]|0)<(c[l>>2]|0):0)){p=c[n>>2]|0;i=o;return p|0}p=_(c[j>>2]|0,c[l>>2]|0)|0;c[g>>2]=(c[g>>2]|0)+p;c[n>>2]=Tb[c[h>>2]&255]((c[(c[m>>2]|0)+16>>2]|0)+((c[g>>2]|0)*40|0)|0)|0;if(!(a[(c[k>>2]|0)+65>>0]|0)){p=c[n>>2]|0;i=o;return p|0}li(c[k>>2]|0);c[n>>2]=0;p=c[n>>2]|0;i=o;return p|0}function th(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+48|0;t=s+28|0;k=s+24|0;l=s+20|0;m=s+16|0;n=s+12|0;o=s+32|0;p=s+8|0;q=s+4|0;r=s;c[t>>2]=b;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;a[o>>0]=j;c[p>>2]=c[t>>2];c[r>>2]=uh(c[p>>2]|0,c[k>>2]|0)|0;if(c[r>>2]|0){if(!((c[n>>2]|0)!=0&(c[n>>2]|0)!=(-1|0))){t=c[r>>2]|0;i=s;return t|0}Qb[c[n>>2]&255](c[l>>2]|0);t=c[r>>2]|0;i=s;return t|0}if(!(c[l>>2]|0)){t=c[r>>2]|0;i=s;return t|0}c[q>>2]=(c[(c[p>>2]|0)+60>>2]|0)+(((c[k>>2]|0)-1|0)*40|0);c[r>>2]=dh(c[q>>2]|0,c[l>>2]|0,c[m>>2]|0,a[o>>0]|0,c[n>>2]|0)|0;if((c[r>>2]|0)==0?(d[o>>0]|0|0)!=0:0)c[r>>2]=Zt(c[q>>2]|0,d[(c[c[p>>2]>>2]|0)+62>>0]|0)|0;jg(c[c[p>>2]>>2]|0,c[r>>2]|0);c[r>>2]=Rg(c[c[p>>2]>>2]|0,c[r>>2]|0)|0;t=c[r>>2]|0;i=s;return t|0}function uh(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;k=m;f=m+16|0;g=m+12|0;h=m+8|0;j=m+4|0;c[g>>2]=a;c[h>>2]=d;if(kh(c[g>>2]|0)|0){c[f>>2]=Kf(73485)|0;l=c[f>>2]|0;i=m;return l|0}if((c[(c[g>>2]|0)+40>>2]|0)==-1108210269?(c[(c[g>>2]|0)+76>>2]|0)<0:0){if((c[h>>2]|0)>=1?(c[h>>2]|0)<=(b[(c[g>>2]|0)+68>>1]|0):0){c[h>>2]=(c[h>>2]|0)+-1;c[j>>2]=(c[(c[g>>2]|0)+60>>2]|0)+((c[h>>2]|0)*40|0);Ug(c[j>>2]|0);b[(c[j>>2]|0)+8>>1]=1;jg(c[c[g>>2]>>2]|0,0);do if((e[(c[g>>2]|0)+88>>1]|0)>>>8&1){if(!((c[h>>2]|0)<32?(c[(c[g>>2]|0)+188>>2]&1<>2]|0)!=0:0))l=12;if((l|0)==12?(c[(c[g>>2]|0)+188>>2]|0)!=-1:0)break;l=(c[g>>2]|0)+88|0;b[l>>1]=b[l>>1]&-9|8}while(0);c[f>>2]=0;l=c[f>>2]|0;i=m;return l|0}jg(c[c[g>>2]>>2]|0,25);c[f>>2]=25;l=c[f>>2]|0;i=m;return l|0}jg(c[c[g>>2]>>2]|0,21);c[k>>2]=c[(c[g>>2]|0)+168>>2];Rd(21,40606,k);c[f>>2]=Kf(73493)|0;l=c[f>>2]|0;i=m;return l|0}function vh(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;if(!(c[h>>2]|0)){c[g>>2]=0;e=c[g>>2]|0;i=n;return e|0}a:do if(c[j>>2]|0){c[l>>2]=0;while(1){if((c[l>>2]|0)>=(b[(c[h>>2]|0)+70>>1]|0))break a;c[m>>2]=c[(c[(c[h>>2]|0)+64>>2]|0)+(c[l>>2]<<2)>>2];if(((c[m>>2]|0)!=0?(CQ(c[m>>2]|0,c[j>>2]|0,c[k>>2]|0)|0)==0:0)?(a[(c[m>>2]|0)+(c[k>>2]|0)>>0]|0)==0:0)break;c[l>>2]=(c[l>>2]|0)+1}c[g>>2]=(c[l>>2]|0)+1;e=c[g>>2]|0;i=n;return e|0}while(0);c[g>>2]=0;e=c[g>>2]|0;i=n;return e|0}function wh(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;h=i;i=i+32|0;k=h+16|0;j=h+12|0;f=h+8|0;g=h+4|0;e=h;c[k>>2]=a;c[j>>2]=d;c[f>>2]=c[k>>2];c[g>>2]=c[j>>2];c[e>>2]=0;while(1){if((c[e>>2]|0)>=(b[(c[f>>2]|0)+68>>1]|0))break;EH((c[(c[g>>2]|0)+60>>2]|0)+((c[e>>2]|0)*40|0)|0,(c[(c[f>>2]|0)+60>>2]|0)+((c[e>>2]|0)*40|0)|0);c[e>>2]=(c[e>>2]|0)+1}i=h;return 0}function xh(d,f){d=d|0;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;j=n+16|0;m=n+8|0;l=n;k=n+24|0;c[g>>2]=d;c[j>>2]=f;a[k>>0]=a[(c[g>>2]|0)+10>>0]|0;if(!(Ky(c[(c[g>>2]|0)+16>>2]|0,m,c[(c[g>>2]|0)+12>>2]|0,a[k>>0]|0)|0)){i=n;return}if(!(Hi(c[(c[g>>2]|0)+16>>2]|0,l,c[(c[g>>2]|0)+12>>2]|0,a[k>>0]|0)|0)){d=c[l+4>>2]|0;m=c[g>>2]|0;c[m>>2]=c[l>>2];c[m+4>>2]=d;m=(c[g>>2]|0)+8|0;b[m>>1]=e[m>>1]|0|4;i=n;return}h[c[g>>2]>>3]=+h[m>>3];m=(c[g>>2]|0)+8|0;b[m>>1]=e[m>>1]|0|8;if(!(c[j>>2]|0)){i=n;return}px(c[g>>2]|0);i=n;return}function yh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0; -j=i;i=i+32|0;e=j+16|0;f=j+12|0;g=j;h=j+8|0;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;if(c[f>>2]|0){h=g;c[e>>2]=Fw(c[f>>2]|0,c[h>>2]|0,c[h+4>>2]|0)|0;h=c[e>>2]|0;i=j;return h|0}else{a=g;c[h>>2]=_f(c[a>>2]|0,c[a+4>>2]|0)|0;c[e>>2]=c[h>>2];h=c[e>>2]|0;i=j;return h|0}return 0}function zh(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+64|0;q=r+16|0;p=r;k=r+52|0;l=r+48|0;g=r+44|0;m=r+40|0;n=r+36|0;o=r+32|0;j=r+28|0;h=r+24|0;c[l>>2]=b;c[g>>2]=d;c[m>>2]=e;c[n>>2]=f;if(pz(c[l>>2]|0)|0){c[k>>2]=0;q=c[k>>2]|0;i=r;return q|0}c[o>>2]=pi(c[c[l>>2]>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;if(!(c[o>>2]|0)){c[j>>2]=(c[g>>2]|0)!=0?40579:40592;if(((ji(c[c[l>>2]>>2]|0,c[n>>2]|0)|0)<1?(c[h>>2]=nj((c[c[l>>2]>>2]|0)+312|0,c[m>>2]|0)|0,(c[h>>2]|0)!=0):0)?(AH(c[l>>2]|0,c[h>>2]|0)|0)!=0:0){c[k>>2]=c[(c[h>>2]|0)+16>>2];q=c[k>>2]|0;i=r;return q|0}d=c[l>>2]|0;g=c[j>>2]|0;if(c[n>>2]|0){n=c[n>>2]|0;q=c[m>>2]|0;c[p>>2]=g;c[p+4>>2]=n;c[p+8>>2]=q;Ah(d,30884,p)}else{p=c[m>>2]|0;c[q>>2]=g;c[q+4>>2]=p;Ah(d,30894,q)}a[(c[l>>2]|0)+17>>0]=1}c[k>>2]=c[o>>2];q=c[k>>2]|0;i=r;return q|0}function Ah(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;j=i;i=i+48|0;f=j+32|0;l=j+28|0;h=j+24|0;k=j+8|0;g=j;c[f>>2]=b;c[l>>2]=d;c[g>>2]=c[c[f>>2]>>2];c[k>>2]=e;c[h>>2]=Zw(c[g>>2]|0,c[l>>2]|0,k)|0;if(a[(c[g>>2]|0)+69>>0]|0){Sf(c[g>>2]|0,c[h>>2]|0);i=j;return}else{l=(c[f>>2]|0)+68|0;c[l>>2]=(c[l>>2]|0)+1;Sf(c[g>>2]|0,c[(c[f>>2]|0)+4>>2]|0);c[(c[f>>2]|0)+4>>2]=c[h>>2];c[(c[f>>2]|0)+12>>2]=1;i=j;return}}function Bh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+32|0;j=f+28|0;h=f+24|0;g=f+8|0;e=f;c[j>>2]=a;c[h>>2]=b;c[g>>2]=d;c[e>>2]=Zw(c[j>>2]|0,c[h>>2]|0,g)|0;i=f;return c[e>>2]|0}function Ch(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=c[c[d>>2]>>2];c[f>>2]=ph(c[e>>2]|0,208,0)|0;if(!(c[f>>2]|0)){c[b>>2]=0;a=c[b>>2]|0;i=g;return a|0}c[c[f>>2]>>2]=c[e>>2];if(c[(c[e>>2]|0)+4>>2]|0)c[(c[(c[e>>2]|0)+4>>2]|0)+48>>2]=c[f>>2];c[(c[f>>2]|0)+52>>2]=c[(c[e>>2]|0)+4>>2];c[(c[f>>2]|0)+48>>2]=0;c[(c[e>>2]|0)+4>>2]=c[f>>2];c[(c[f>>2]|0)+40>>2]=649915045;c[(c[f>>2]|0)+24>>2]=c[d>>2];c[b>>2]=c[f>>2];a=c[b>>2]|0;i=g;return a|0}function Dh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=-1e6;if(!(c[e>>2]|0)){f=c[f>>2]|0;i=g;return f|0}c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[d>>2]|0)+20>>2]|0)){d=6;break}if((c[(c[(c[d>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+12>>2]|0)==(c[e>>2]|0)){d=6;break}c[f>>2]=(c[f>>2]|0)+1}if((d|0)==6){f=c[f>>2]|0;i=g;return f|0}return 0}function Eh(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=i;i=i+32|0;l=j+24|0;p=j+20|0;o=j+16|0;n=j+12|0;m=j+8|0;k=j+4|0;h=j;c[l>>2]=a;c[p>>2]=b;c[o>>2]=d;c[n>>2]=e;c[m>>2]=f;c[k>>2]=g;c[h>>2]=Vw(c[l>>2]|0,c[p>>2]|0,c[o>>2]|0,c[n>>2]|0,c[m>>2]|0)|0;Ih(c[l>>2]|0,c[h>>2]|0,c[k>>2]|0,-14);i=j;return c[h>>2]|0}function Fh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g;f=g+4|0;c[e>>2]=b;a[f>>0]=d;if(a[(c[c[e>>2]>>2]|0)+65>>0]|0){i=g;return}a[(c[(c[e>>2]|0)+4>>2]|0)+(((c[(c[e>>2]|0)+32>>2]|0)-1|0)*20|0)+3>>0]=a[f>>0]|0;i=g;return}function Gh(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;h=p+28|0;j=p+24|0;k=p+20|0;l=p+16|0;m=p+8|0;o=p+4|0;n=p;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;c[p+12>>2]=g;if(((c[(c[j>>2]|0)+32>>2]|0)+(c[k>>2]|0)|0)>(c[(c[(c[j>>2]|0)+24>>2]|0)+88>>2]|0)?(Xw(c[j>>2]|0,c[k>>2]|0)|0)!=0:0){c[h>>2]=0;o=c[h>>2]|0;i=p;return o|0}b=(c[(c[j>>2]|0)+4>>2]|0)+((c[(c[j>>2]|0)+32>>2]|0)*20|0)|0;c[o>>2]=b;c[n>>2]=b;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[k>>2]|0))break;a[c[o>>2]>>0]=a[c[l>>2]>>0]|0;c[(c[o>>2]|0)+4>>2]=a[(c[l>>2]|0)+1>>0];c[(c[o>>2]|0)+8>>2]=a[(c[l>>2]|0)+2>>0];if((d[35754+(d[c[l>>2]>>0]|0)>>0]&1|0)!=0?(a[(c[l>>2]|0)+2>>0]|0)>0:0){b=(c[o>>2]|0)+8|0;c[b>>2]=(c[b>>2]|0)+(c[(c[j>>2]|0)+32>>2]|0)}c[(c[o>>2]|0)+12>>2]=a[(c[l>>2]|0)+3>>0];a[(c[o>>2]|0)+1>>0]=0;c[(c[o>>2]|0)+16>>2]=0;a[(c[o>>2]|0)+3>>0]=0;c[m>>2]=(c[m>>2]|0)+1;c[l>>2]=(c[l>>2]|0)+4;c[o>>2]=(c[o>>2]|0)+20}o=(c[j>>2]|0)+32|0;c[o>>2]=(c[o>>2]|0)+(c[k>>2]|0);c[h>>2]=c[n>>2];o=c[h>>2]|0;i=p;return o|0}function Hh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;a=(c[d>>2]|0)+96|0;c[a>>2]=c[a>>2]|1<>2];if((c[e>>2]|0)==1){i=f;return}if(!(zH(c[(c[(c[c[d>>2]>>2]|0)+16>>2]|0)+(c[e>>2]<<4)+4>>2]|0)|0)){i=f;return}a=(c[d>>2]|0)+100|0;c[a>>2]=c[a>>2]|1<>2];i=f;return}function Ih(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;k=n+12|0;l=n+8|0;m=n+4|0;j=n;c[g>>2]=b;c[h>>2]=d;c[k>>2]=e;c[l>>2]=f;c[j>>2]=c[c[g>>2]>>2];if(a[(c[j>>2]|0)+65>>0]|0){if((c[l>>2]|0)==-10){i=n;return}qA(c[j>>2]|0,c[l>>2]|0,c[k>>2]|0);i=n;return}if((c[h>>2]|0)<0)c[h>>2]=(c[(c[g>>2]|0)+32>>2]|0)-1;c[m>>2]=(c[(c[g>>2]|0)+4>>2]|0)+((c[h>>2]|0)*20|0);if((c[l>>2]|0)<0?(a[(c[m>>2]|0)+1>>0]|0)==0:0){g=c[k>>2]|0;if((c[l>>2]|0)==-14){c[(c[m>>2]|0)+16>>2]=g;a[(c[m>>2]|0)+1>>0]=-14;i=n;return}if(!g){i=n;return}c[(c[m>>2]|0)+16>>2]=c[k>>2];a[(c[m>>2]|0)+1>>0]=c[l>>2];if((c[l>>2]|0)!=-10){i=n;return}yH(c[k>>2]|0);i=n;return}xH(c[g>>2]|0,c[m>>2]|0,c[k>>2]|0,c[l>>2]|0);i=n;return}function Jh(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;g=r+44|0;h=r+40|0;j=r+36|0;p=r+32|0;n=r+28|0;m=r+24|0;l=r+20|0;o=r+16|0;k=r+12|0;q=r;c[g>>2]=e;c[h>>2]=f;c[j>>2]=c[c[g>>2]>>2];c[p>>2]=b[(c[h>>2]|0)+444>>1];c[n>>2]=c[(c[h>>2]|0)+76>>2];c[m>>2]=c[(c[h>>2]|0)+72>>2];c[l>>2]=c[(c[h>>2]|0)+400>>2];f=c[(c[h>>2]|0)+84>>2]|0;c[o>>2]=f;c[o>>2]=(c[o>>2]|0)==0?1:f;c[n>>2]=(c[n>>2]|0)+(c[m>>2]|0);c[k>>2]=((c[(c[g>>2]|0)+32>>2]|0)*20|0)+7&-8;c[q>>2]=(c[(c[g>>2]|0)+4>>2]|0)+(c[k>>2]|0);c[q+4>>2]=(c[(c[h>>2]|0)+92>>2]|0)-(c[k>>2]|0)&-8;if((c[q+4>>2]|0)>0)kR(c[q>>2]|0,0,c[q+4>>2]|0)|0;SE(c[g>>2]|0,l);if(d[(c[h>>2]|0)+20>>0]|0)e=(d[(c[h>>2]|0)+21>>0]|0)!=0;else e=0;f=(c[g>>2]|0)+88|0;b[f>>1]=b[f>>1]&-33|(e&1)<<5&65535;if((c[n>>2]|0)<10?(d[(c[h>>2]|0)+453>>0]|0)!=0:0)c[n>>2]=10;f=(c[g>>2]|0)+88|0;b[f>>1]=b[f>>1]&-9;do{c[q+8>>2]=0;f=wH(q,c[(c[g>>2]|0)+8>>2]|0,(c[n>>2]|0)*40|0)|0;c[(c[g>>2]|0)+8>>2]=f;f=wH(q,c[(c[g>>2]|0)+60>>2]|0,(c[p>>2]|0)*40|0)|0;c[(c[g>>2]|0)+60>>2]=f;f=wH(q,c[(c[g>>2]|0)+12>>2]|0,c[l>>2]<<2)|0;c[(c[g>>2]|0)+12>>2]=f;f=wH(q,c[(c[g>>2]|0)+56>>2]|0,c[m>>2]<<2)|0;c[(c[g>>2]|0)+56>>2]=f;f=wH(q,c[(c[g>>2]|0)+200>>2]|0,c[o>>2]|0)|0;c[(c[g>>2]|0)+200>>2]=f;if(!(c[q+8>>2]|0))break;f=c[q+8>>2]|0;f=ph(c[j>>2]|0,f,((f|0)<0)<<31>>31)|0;c[(c[g>>2]|0)+172>>2]=f;c[q>>2]=f;c[q+4>>2]=c[q+8>>2]}while((a[(c[j>>2]|0)+65>>0]|0)!=0^1);c[(c[g>>2]|0)+36>>2]=c[m>>2];c[(c[g>>2]|0)+196>>2]=c[o>>2];a:do if(c[(c[g>>2]|0)+60>>2]|0){b[(c[g>>2]|0)+68>>1]=c[p>>2];c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[p>>2]|0))break a;b[(c[(c[g>>2]|0)+60>>2]|0)+((c[k>>2]|0)*40|0)+8>>1]=1;c[(c[(c[g>>2]|0)+60>>2]|0)+((c[k>>2]|0)*40|0)+32>>2]=c[j>>2];c[k>>2]=(c[k>>2]|0)+1}}while(0);b[(c[g>>2]|0)+70>>1]=c[(c[h>>2]|0)+448>>2];c[(c[g>>2]|0)+64>>2]=c[(c[h>>2]|0)+476>>2];c[(c[h>>2]|0)+448>>2]=0;c[(c[h>>2]|0)+476>>2]=0;if(!(c[(c[g>>2]|0)+8>>2]|0)){p=c[h>>2]|0;p=p+453|0;p=a[p>>0]|0;p=p&255;q=c[g>>2]|0;q=q+88|0;p=p&65535;o=b[q>>1]|0;p=p&3;o=o&-4;p=o|p;b[q>>1]=p;q=c[g>>2]|0;Tg(q);i=r;return}q=(c[g>>2]|0)+8|0;c[q>>2]=(c[q>>2]|0)+-40;c[(c[g>>2]|0)+28>>2]=c[n>>2];c[k>>2]=1;while(1){if((c[k>>2]|0)>(c[n>>2]|0))break;b[(c[(c[g>>2]|0)+8>>2]|0)+((c[k>>2]|0)*40|0)+8>>1]=128;c[(c[(c[g>>2]|0)+8>>2]|0)+((c[k>>2]|0)*40|0)+32>>2]=c[j>>2];c[k>>2]=(c[k>>2]|0)+1}p=c[h>>2]|0;p=p+453|0;p=a[p>>0]|0;p=p&255;q=c[g>>2]|0;q=q+88|0;p=p&65535;o=b[q>>1]|0;p=p&3;o=o&-4;p=o|p;b[q>>1]=p;q=c[g>>2]|0;Tg(q);i=r;return}function Kh(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+64|0;q=s+24|0;p=s+16|0;k=s+8|0;l=s+52|0;m=s;n=s+48|0;o=s+44|0;r=s+40|0;g=s+36|0;h=s+32|0;j=s+28|0;c[l>>2]=a;a=m;c[a>>2]=d;c[a+4>>2]=e;c[n>>2]=f;c[r>>2]=0;c[g>>2]=c[(c[l>>2]|0)+20>>2];e=m;a=c[e+4>>2]|0;f=c[(c[g>>2]|0)+60>>2]|0;c[f>>2]=c[e>>2];c[f+4>>2]=a;c[o>>2]=ue(c[(c[l>>2]|0)+20>>2]|0)|0;do if((c[o>>2]|0)==100){c[h>>2]=c[c[(c[g>>2]|0)+56>>2]>>2];c[j>>2]=c[(c[h>>2]|0)+80+(c[(c[l>>2]|0)+12>>2]<<2)>>2];d=c[l>>2]|0;if((c[j>>2]|0)>>>0>=12){c[(c[l>>2]|0)+8>>2]=c[(c[h>>2]|0)+80+((c[d+12>>2]|0)+(b[(c[h>>2]|0)+12>>1]|0)<<2)>>2];k=uF(c[j>>2]|0)|0;c[(c[l>>2]|0)+4>>2]=k;c[(c[l>>2]|0)+16>>2]=c[(c[h>>2]|0)+16>>2];vH(c[(c[l>>2]|0)+16>>2]|0);break}e=c[d+24>>2]|0;if(!(c[j>>2]|0))d=40525;else d=(c[j>>2]|0)==7?40512:40517;c[k>>2]=d;c[r>>2]=Bh(e,40530,k)|0;c[o>>2]=1;Yd(c[(c[l>>2]|0)+20>>2]|0)|0;c[(c[l>>2]|0)+20>>2]=0}while(0);if((c[o>>2]|0)==100){c[o>>2]=0;q=c[r>>2]|0;r=c[n>>2]|0;c[r>>2]=q;r=c[o>>2]|0;i=s;return r|0}if(!(c[(c[l>>2]|0)+20>>2]|0)){q=c[r>>2]|0;r=c[n>>2]|0;c[r>>2]=q;r=c[o>>2]|0;i=s;return r|0}c[o>>2]=Yd(c[(c[l>>2]|0)+20>>2]|0)|0;c[(c[l>>2]|0)+20>>2]=0;d=c[(c[l>>2]|0)+24>>2]|0;if(!(c[o>>2]|0)){l=m;m=c[l+4>>2]|0;q=p;c[q>>2]=c[l>>2];c[q+4>>2]=m;c[r>>2]=Bh(d,40559,p)|0;c[o>>2]=1;q=c[r>>2]|0;r=c[n>>2]|0;c[r>>2]=q;r=c[o>>2]|0;i=s;return r|0}else{c[q>>2]=bf(c[(c[l>>2]|0)+24>>2]|0)|0;c[r>>2]=Bh(d,19255,q)|0;q=c[r>>2]|0;r=c[n>>2]|0;c[r>>2]=q;r=c[o>>2]|0;i=s;return r|0}return 0}function Lh(b){b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=b;if(!(c[e>>2]|0)){i=g;return}c[f>>2]=c[c[e>>2]>>2];Sf(c[f>>2]|0,c[(c[e>>2]|0)+120>>2]|0);Vu(c[f>>2]|0,c[(c[e>>2]|0)+324>>2]|0);if(c[f>>2]|0){b=(c[f>>2]|0)+248|0;c[b>>2]=(c[b>>2]|0)-(d[(c[e>>2]|0)+24>>0]|0)}a[(c[e>>2]|0)+24>>0]=0;i=g;return}function Mh(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[h>>2]=a;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;if(!(d[(c[h>>2]|0)+66>>0]|0)){c[g>>2]=4;m=c[g>>2]|0;i=n;return m|0}if((d[(c[h>>2]|0)+66>>0]|0|0)>=3)e=WE(c[h>>2]|0)|0;else e=0;c[m>>2]=e;if(!(c[m>>2]|0))c[m>>2]=hF(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0,c[l>>2]|0,0)|0;c[g>>2]=c[m>>2];m=c[g>>2]|0;i=n;return m|0}function Nh(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+48|0;g=r+36|0;s=r+32|0;h=r+28|0;j=r+24|0;k=r+20|0;l=r+16|0;o=r+12|0;n=r+8|0;p=r+4|0;m=r;c[s>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[n>>2]=c[s>>2];if(!(c[n>>2]|0)){c[g>>2]=Kf(81441)|0;s=c[g>>2]|0;i=r;return s|0}c[m>>2]=c[(c[n>>2]|0)+24>>2];c[p>>2]=c[(c[n>>2]|0)+20>>2];do if(!((c[j>>2]|0)<0|(c[k>>2]|0)<0)?(a=c[k>>2]|0,b=c[j>>2]|0,b=gR(a|0,((a|0)<0)<<31>>31|0,b|0,((b|0)<0)<<31>>31|0)|0,a=C,s=c[(c[n>>2]|0)+4>>2]|0,f=((s|0)<0)<<31>>31,!((a|0)>(f|0)|(a|0)==(f|0)&b>>>0>s>>>0)):0){if(!(c[p>>2]|0)){c[o>>2]=4;break}uH(c[(c[n>>2]|0)+16>>2]|0);c[o>>2]=Wb[c[l>>2]&255](c[(c[n>>2]|0)+16>>2]|0,(c[k>>2]|0)+(c[(c[n>>2]|0)+8>>2]|0)|0,c[j>>2]|0,c[h>>2]|0)|0;if((c[o>>2]|0)==4){Qg(c[p>>2]|0)|0;c[(c[n>>2]|0)+20>>2]=0;break}else{c[(c[p>>2]|0)+80>>2]=c[o>>2];break}}else q=5;while(0);if((q|0)==5)c[o>>2]=1;jg(c[m>>2]|0,c[o>>2]|0);c[o>>2]=Rg(c[m>>2]|0,c[o>>2]|0)|0;c[g>>2]=c[o>>2];s=c[g>>2]|0;i=r;return s|0}function Oh(a){a=a|0;var d=0,e=0,f=0;e=i;i=i+16|0;f=e+4|0;d=e;c[f>>2]=a;c[d>>2]=c[(c[f>>2]|0)+4>>2];while(1){if(!(c[d>>2]|0))break;f=(c[d>>2]|0)+88|0;b[f>>1]=b[f>>1]&-9|8;c[d>>2]=c[(c[d>>2]|0)+52>>2]}i=e;return}function Ph(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=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;x=i;i=i+64|0;s=x+52|0;t=x+48|0;u=x+44|0;v=x+40|0;w=x+36|0;q=x+32|0;r=x+28|0;n=x+24|0;m=x+20|0;p=x+56|0;l=x+16|0;o=x+12|0;j=x+8|0;k=x+4|0;h=x;c[t>>2]=b;c[u>>2]=e;c[v>>2]=f;c[w>>2]=g;c[n>>2]=d[(c[v>>2]|0)+1>>0];c[m>>2]=d[c[v>>2]>>0];a[p>>0]=a[(c[v>>2]|0)+3>>0]|0;c[l>>2]=0;a:while(1){if((d[c[t>>2]>>0]|0)<128){g=c[t>>2]|0;c[t>>2]=g+1;g=d[g>>0]|0}else g=jC(t)|0;c[q>>2]=g;if(!g){b=83;break}if((c[q>>2]|0)==(c[m>>2]|0)){b=7;break}do if((c[q>>2]|0)==(c[w>>2]|0)){if(!(d[(c[v>>2]|0)+2>>0]|0)){c[q>>2]=jC(t)|0;if(!(c[q>>2]|0)){b=49;break a}c[l>>2]=c[t>>2];break}c[j>>2]=0;c[k>>2]=0;c[h>>2]=0;c[q>>2]=jC(u)|0;if(!(c[q>>2]|0)){b=52;break a}c[r>>2]=jC(t)|0;if((c[r>>2]|0)==94){c[h>>2]=1;c[r>>2]=jC(t)|0}if((c[r>>2]|0)==93){if((c[q>>2]|0)==93)c[k>>2]=1;c[r>>2]=jC(t)|0}while(1){g=c[r>>2]|0;if(!((c[r>>2]|0)!=0?(c[r>>2]|0)!=93:0))break;if(((g|0)==45?(d[c[t>>2]>>0]|0)!=93:0)?(c[j>>2]|0)>>>0>0?(d[c[t>>2]>>0]|0)!=0:0:0){c[r>>2]=jC(t)|0;if((c[q>>2]|0)>>>0>=(c[j>>2]|0)>>>0?(c[q>>2]|0)>>>0<=(c[r>>2]|0)>>>0:0)c[k>>2]=1;c[j>>2]=0}else{if((c[q>>2]|0)==(c[r>>2]|0))c[k>>2]=1;c[j>>2]=c[r>>2]}c[r>>2]=jC(t)|0}if(!g){b=73;break a}if(!(c[k>>2]^c[h>>2])){b=73;break a}else continue a}while(0);if((d[c[u>>2]>>0]|0)<128){g=c[u>>2]|0;c[u>>2]=g+1;g=d[g>>0]|0}else g=jC(u)|0;c[r>>2]=g;if((c[q>>2]|0)==(c[r>>2]|0))continue;if((d[p>>0]|0)!=0&(c[q>>2]|0)>>>0<128&(c[r>>2]|0)>>>0<128?(d[18477+(c[q>>2]&255)>>0]|0)==(d[18477+(c[r>>2]&255)>>0]|0):0)continue;if((c[q>>2]|0)!=(c[n>>2]|0)){b=82;break}if(!((c[r>>2]|0)!=0?(c[t>>2]|0)!=(c[l>>2]|0):0)){b=82;break}}if((b|0)==7){while(1){b=0;if((d[c[t>>2]>>0]|0)<128){g=c[t>>2]|0;c[t>>2]=g+1;g=d[g>>0]|0}else g=jC(t)|0;c[q>>2]=g;if((g|0)==(c[m>>2]|0))g=1;else g=(c[q>>2]|0)==(c[n>>2]|0);f=c[q>>2]|0;if(!g)break;if((f|0)!=(c[n>>2]|0)){b=7;continue}if(!(jC(u)|0)){b=15;break}else b=7}if((b|0)==15){c[s>>2]=0;w=c[s>>2]|0;i=x;return w|0}if(!f){c[s>>2]=1;w=c[s>>2]|0;i=x;return w|0}do if((c[q>>2]|0)==(c[w>>2]|0)){if(!(d[(c[v>>2]|0)+2>>0]|0)){c[q>>2]=jC(t)|0;if(c[q>>2]|0)break;c[s>>2]=0;w=c[s>>2]|0;i=x;return w|0}b:while(1){if(d[c[u>>2]>>0]|0)g=(Ph((c[t>>2]|0)+-1|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0)|0)==0;else g=0;f=c[u>>2]|0;if(!g)break;c[u>>2]=f+1;if((d[f>>0]|0)<192)continue;while(1){if((d[c[u>>2]>>0]&192|0)!=128)continue b;c[u>>2]=(c[u>>2]|0)+1}}c[s>>2]=(d[f>>0]|0)!=0&1;w=c[s>>2]|0;i=x;return w|0}while(0);c:do if((c[q>>2]|0)>>>0<=128){g=c[q>>2]|0;if(a[p>>0]|0){c[o>>2]=g&~(d[19267+(c[q>>2]&255)>>0]&32);c[q>>2]=d[18477+(c[q>>2]&255)>>0]}else c[o>>2]=g;while(1){p=c[u>>2]|0;c[u>>2]=p+1;p=d[p>>0]|0;c[r>>2]=p;if(!p)break c;if((c[r>>2]|0)!=(c[q>>2]|0)?(c[r>>2]|0)!=(c[o>>2]|0):0)continue;if(Ph(c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0)|0)break}c[s>>2]=1;w=c[s>>2]|0;i=x;return w|0}else{while(1){if((d[c[u>>2]>>0]|0)<128){g=c[u>>2]|0;c[u>>2]=g+1;g=d[g>>0]|0}else g=jC(u)|0;c[r>>2]=g;if(!g)break c;if((c[r>>2]|0)!=(c[q>>2]|0))continue;if(Ph(c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0)|0)break}c[s>>2]=1;w=c[s>>2]|0;i=x;return w|0}while(0);c[s>>2]=0;w=c[s>>2]|0;i=x;return w|0}else if((b|0)==49){c[s>>2]=0;w=c[s>>2]|0;i=x;return w|0}else if((b|0)==52){c[s>>2]=0;w=c[s>>2]|0;i=x;return w|0}else if((b|0)==73){c[s>>2]=0;w=c[s>>2]|0;i=x;return w|0}else if((b|0)==82){c[s>>2]=0;w=c[s>>2]|0;i=x;return w|0}else if((b|0)==83){c[s>>2]=(d[c[u>>2]>>0]|0)==0&1;w=c[s>>2]|0;i=x;return w|0}return 0}function Qh(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[d>>2]=a;do if(!(c[d>>2]|0)){hH(40498);c[b>>2]=0}else{c[e>>2]=c[(c[d>>2]|0)+76>>2];if((c[e>>2]|0)==-1607883113){c[b>>2]=1;break}if(Sh(c[d>>2]|0)|0)hH(40503);c[b>>2]=0}while(0);i=f;return c[b>>2]|0}function Rh(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 j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;j=s+32|0;k=s+28|0;l=s+24|0;m=s+20|0;n=s+16|0;o=s+12|0;p=s+8|0;q=s+4|0;r=s;c[k>>2]=a;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[c[p>>2]>>2]=0;b=(Qh(c[k>>2]|0)|0)==0;if(b|(c[l>>2]|0)==0){c[j>>2]=Kf(110077)|0;b=c[j>>2]|0;i=s;return b|0}Nf(c[k>>2]|0);c[r>>2]=iH(c[k>>2]|0,c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0)|0;if((c[r>>2]|0)==17){Yd(c[c[p>>2]>>2]|0)|0;c[r>>2]=iH(c[k>>2]|0,c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0)|0}c[j>>2]=c[r>>2];b=c[j>>2]|0;i=s;return b|0}function Sh(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;b=d+8|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=c[(c[f>>2]|0)+76>>2];if((c[e>>2]|0)!=1266094736&(c[e>>2]|0)!=-1607883113&(c[e>>2]|0)!=-264537850){hH(40345);c[b>>2]=0;f=c[b>>2]|0;i=d;return f|0}else{c[b>>2]=1;f=c[b>>2]|0;i=d;return f|0}return 0}function Th(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;g=r+36|0;h=r+32|0;j=r+28|0;k=r+24|0;l=r+20|0;p=r+16|0;m=r+12|0;o=r+8|0;n=r+4|0;q=r;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[p>>2]=0;c[m>>2]=If(c[h>>2]|0)|0;if(!(nj((c[g>>2]|0)+312|0,c[h>>2]|0)|0)){c[o>>2]=Fw(c[g>>2]|0,20+(c[m>>2]|0)+1|0,0)|0;if((c[o>>2]|0)!=0?(c[q>>2]=(c[o>>2]|0)+20,iR(c[q>>2]|0,c[h>>2]|0,(c[m>>2]|0)+1|0)|0,c[(c[o>>2]|0)+4>>2]=c[q>>2],c[c[o>>2]>>2]=c[j>>2],c[(c[o>>2]|0)+8>>2]=c[k>>2],c[(c[o>>2]|0)+12>>2]=c[l>>2],c[(c[o>>2]|0)+16>>2]=0,c[n>>2]=Oj((c[g>>2]|0)+312|0,c[q>>2]|0,c[o>>2]|0)|0,(c[n>>2]|0)!=0):0){jh(c[g>>2]|0);Sf(c[g>>2]|0,c[n>>2]|0)}}else c[p>>2]=Kf(118442)|0;c[p>>2]=Rg(c[g>>2]|0,c[p>>2]|0)|0;if(!((c[p>>2]|0)!=0&(c[l>>2]|0)!=0)){b=c[p>>2]|0;i=r;return b|0}Qb[c[l>>2]&255](c[k>>2]|0);b=c[p>>2]|0;i=r;return b|0}function Uh(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=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;z=i;i=i+80|0;g=z+72|0;q=z+16|0;p=z+8|0;o=z;s=z+68|0;t=z+64|0;h=z+60|0;j=z+56|0;w=z+52|0;v=z+48|0;m=z+44|0;n=z+40|0;k=z+36|0;u=z+32|0;l=z+28|0;x=z+24|0;y=z+20|0;c[t>>2]=b;c[h>>2]=e;c[j>>2]=f;c[w>>2]=0;c[k>>2]=-1;c[u>>2]=c[c[t>>2]>>2];c[l>>2]=c[(c[u>>2]|0)+88+4>>2];if(!(c[(c[u>>2]|0)+148>>2]|0))c[(c[u>>2]|0)+240>>2]=0;c[(c[t>>2]|0)+12>>2]=0;c[(c[t>>2]|0)+484>>2]=c[h>>2];c[v>>2]=0;c[m>>2]=Pu(179)|0;if(!(c[m>>2]|0)){jh(c[u>>2]|0);c[s>>2]=7;y=c[s>>2]|0;i=z;return y|0}while(1){if(!(a[(c[h>>2]|0)+(c[v>>2]|0)>>0]|0))break;c[(c[t>>2]|0)+508>>2]=(c[h>>2]|0)+(c[v>>2]|0);e=Qu((c[h>>2]|0)+(c[v>>2]|0)|0,n)|0;c[(c[t>>2]|0)+508+4>>2]=e;c[v>>2]=(c[v>>2]|0)+(c[(c[t>>2]|0)+508+4>>2]|0);if((c[v>>2]|0)>(c[l>>2]|0)){r=7;break}if((c[n>>2]|0)>=159){if(c[(c[u>>2]|0)+240>>2]|0){r=10;break}if((c[n>>2]|0)==160){r=12;break}else continue}if((c[n>>2]|0)==1)c[(c[t>>2]|0)+484>>2]=(c[h>>2]|0)+(c[v>>2]|0);b=c[m>>2]|0;f=c[n>>2]|0;A=(c[t>>2]|0)+508|0;e=c[t>>2]|0;c[g>>2]=c[A>>2];c[g+4>>2]=c[A+4>>2];Ru(b,f,g,e);c[k>>2]=c[n>>2];if(c[(c[t>>2]|0)+12>>2]|0)break;if(d[(c[u>>2]|0)+65>>0]|0)break}if((r|0)==7)c[(c[t>>2]|0)+12>>2]=18;else if((r|0)==10)c[(c[t>>2]|0)+12>>2]=9;else if((r|0)==12){A=c[t>>2]|0;c[o>>2]=(c[t>>2]|0)+508;Ah(A,27316,o)}if((c[(c[t>>2]|0)+12>>2]|0)==0?(d[(c[u>>2]|0)+65>>0]|0)==0:0){if((c[k>>2]|0)!=1){r=c[m>>2]|0;e=(c[t>>2]|0)+508|0;A=c[t>>2]|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];Ru(r,1,g,A);c[(c[t>>2]|0)+484>>2]=(c[h>>2]|0)+(c[v>>2]|0)}if((c[(c[t>>2]|0)+12>>2]|0)==0?(d[(c[u>>2]|0)+65>>0]|0)==0:0){r=c[m>>2]|0;e=(c[t>>2]|0)+508|0;A=c[t>>2]|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];Ru(r,0,g,A)}}Su(c[m>>2]|0,148);if(a[(c[u>>2]|0)+65>>0]|0)c[(c[t>>2]|0)+12>>2]=7;if(((c[(c[t>>2]|0)+12>>2]|0)!=0?(c[(c[t>>2]|0)+12>>2]|0)!=101:0)?(c[(c[t>>2]|0)+4>>2]|0)==0:0){A=c[u>>2]|0;c[p>>2]=ih(c[(c[t>>2]|0)+12>>2]|0)|0;A=Bh(A,19255,p)|0;c[(c[t>>2]|0)+4>>2]=A}if(c[(c[t>>2]|0)+4>>2]|0){c[c[j>>2]>>2]=c[(c[t>>2]|0)+4>>2];A=c[(c[t>>2]|0)+12>>2]|0;c[q>>2]=c[c[j>>2]>>2];Rd(A,19255,q);c[(c[t>>2]|0)+4>>2]=0;c[w>>2]=(c[w>>2]|0)+1}if(((c[(c[t>>2]|0)+8>>2]|0)!=0?(c[(c[t>>2]|0)+68>>2]|0)>0:0)?(d[(c[t>>2]|0)+18>>0]|0)==0:0){Tu(c[(c[t>>2]|0)+8>>2]|0);c[(c[t>>2]|0)+8>>2]=0}if(!(d[(c[t>>2]|0)+18>>0]|0)){Sf(c[u>>2]|0,c[(c[t>>2]|0)+408>>2]|0);c[(c[t>>2]|0)+408>>2]=0;c[(c[t>>2]|0)+404>>2]=0}Kd(c[(c[t>>2]|0)+524>>2]|0);if(!(a[(c[t>>2]|0)+454>>0]|0))Qf(c[u>>2]|0,c[(c[t>>2]|0)+488>>2]|0);Uu(c[u>>2]|0,c[(c[t>>2]|0)+540>>2]|0);Pf(c[u>>2]|0,c[(c[t>>2]|0)+492>>2]|0);c[v>>2]=(c[(c[t>>2]|0)+448>>2]|0)-1;while(1){g=c[u>>2]|0;if((c[v>>2]|0)<0)break;Sf(g,c[(c[(c[t>>2]|0)+476>>2]|0)+(c[v>>2]<<2)>>2]|0);c[v>>2]=(c[v>>2]|0)+-1}Sf(g,c[(c[t>>2]|0)+476>>2]|0);while(1){if(!(c[(c[t>>2]|0)+412>>2]|0))break;c[x>>2]=c[(c[t>>2]|0)+412>>2];c[(c[t>>2]|0)+412>>2]=c[c[x>>2]>>2];Sf(c[u>>2]|0,c[x>>2]|0)}while(1){if(!(c[(c[t>>2]|0)+528>>2]|0))break;c[y>>2]=c[(c[t>>2]|0)+528>>2];c[(c[t>>2]|0)+528>>2]=c[(c[y>>2]|0)+68>>2];Qf(c[u>>2]|0,c[y>>2]|0)}c[s>>2]=c[w>>2];A=c[s>>2]|0;i=z;return A|0}function Vh(a){a=a|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=ph(c[d>>2]|0,40,0)|0;if(!(c[e>>2]|0)){e=c[e>>2]|0;i=f;return e|0}b[(c[e>>2]|0)+8>>1]=1;c[(c[e>>2]|0)+32>>2]=c[d>>2];e=c[e>>2]|0;i=f;return e|0}function Wh(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;h=n+12|0;j=n+8|0;k=n+4|0;l=n+16|0;m=n;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;a[l>>0]=f;c[m>>2]=g;if(!(c[h>>2]|0)){i=n;return}dh(c[h>>2]|0,c[k>>2]|0,c[j>>2]|0,a[l>>0]|0,c[m>>2]|0)|0;i=n;return}function Xh(){var a=0,b=0;a=i;i=i+16|0;b=a;c[b>>2]=5028;mf(4,b)|0;i=a;return}function Yh(){return 88}function Zh(){return 40}function _h(){return 32}function $h(){var a=0,b=0;a=i;i=i+16|0;b=a;c[b>>2]=4976;mf(18,b)|0;i=a;return}function ai(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;ku(c[(c[d>>2]|0)+212>>2]|0);i=b;return}function bi(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;if(!(c[b>>2]|0)){a=0;a=a&1;i=e;return a|0}a=(d[(c[b>>2]|0)+8>>0]|0|0)==2;a=a&1;i=e;return a|0}function ci(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;h=q+28|0;j=q+24|0;k=q+20|0;l=q+16|0;m=q+12|0;p=q+8|0;n=q+4|0;o=q;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;if(c[(c[j>>2]|0)+248+8>>2]|0){c[h>>2]=5;f=c[h>>2]|0;i=q;return f|0}if(a[(c[j>>2]|0)+248+6>>0]|0)Kd(c[(c[j>>2]|0)+248+32>>2]|0);f=c[l>>2]&-8;c[l>>2]=f;c[l>>2]=(c[l>>2]|0)<=4?0:f;if((c[m>>2]|0)<0)c[m>>2]=0;do if(!((c[l>>2]|0)==0|(c[m>>2]|0)==0)){if(c[k>>2]|0){c[p>>2]=c[k>>2];break}Sj();f=_(c[l>>2]|0,c[m>>2]|0)|0;c[p>>2]=_f(f,((f|0)<0)<<31>>31)|0;Tj();if(c[p>>2]|0){f=$f(c[p>>2]|0)|0;c[m>>2]=(f|0)/(c[l>>2]|0)|0}}else{c[l>>2]=0;c[p>>2]=0}while(0);c[(c[j>>2]|0)+248+32>>2]=c[p>>2];c[(c[j>>2]|0)+248+28>>2]=0;b[(c[j>>2]|0)+248+4>>1]=c[l>>2];if(c[p>>2]|0){c[o>>2]=c[p>>2];c[n>>2]=(c[m>>2]|0)-1;while(1){if((c[n>>2]|0)<0)break;c[c[o>>2]>>2]=c[(c[j>>2]|0)+248+28>>2];c[(c[j>>2]|0)+248+28>>2]=c[o>>2];c[o>>2]=(c[o>>2]|0)+(c[l>>2]|0);c[n>>2]=(c[n>>2]|0)+-1}c[(c[j>>2]|0)+248+36>>2]=c[o>>2];c[(c[j>>2]|0)+248>>2]=0;a[(c[j>>2]|0)+248+6>>0]=(c[k>>2]|0)==0?1:0}else{c[(c[j>>2]|0)+248+32>>2]=c[j>>2];c[(c[j>>2]|0)+248+36>>2]=c[j>>2];c[(c[j>>2]|0)+248>>2]=1;a[(c[j>>2]|0)+248+6>>0]=0}c[h>>2]=0;f=c[h>>2]|0;i=q;return f|0}function di(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;d=h+12|0;e=h+8|0;f=h+4|0;c[e>>2]=a;c[f>>2]=b;if(!(c[e>>2]|0)){c[d>>2]=0;g=c[d>>2]|0;i=h;return g|0}if(!(Sh(c[e>>2]|0)|0)){c[d>>2]=Kf(133819)|0;g=c[d>>2]|0;i=h;return g|0}cu(c[e>>2]|0);du(c[e>>2]|0)|0;if((c[f>>2]|0)==0?(eu(c[e>>2]|0)|0)!=0:0){hg(c[e>>2]|0,5,27174,g);c[d>>2]=5;g=c[d>>2]|0;i=h;return g|0}c[(c[e>>2]|0)+76>>2]=1691352191;Ng(c[e>>2]|0);c[d>>2]=0;g=c[d>>2]|0;i=h;return g|0}function ei(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;f=i;i=i+32|0;d=f+16|0;j=f+12|0;h=f+8|0;e=f+4|0;g=f;c[j>>2]=a;c[h>>2]=b;c[e>>2]=c[j>>2];c[g>>2]=c[(c[j>>2]|0)+496>>2];if((((c[h>>2]|0)+1|0)*1e3|0)>(c[g>>2]|0)){c[d>>2]=0;j=c[d>>2]|0;i=f;return j|0}else{ri(c[c[e>>2]>>2]|0,1e6)|0;c[d>>2]=1;j=c[d>>2]|0;i=f;return j|0}return 0}function Py(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;n=t+44|0;h=t+40|0;o=t+36|0;l=t+32|0;q=t+28|0;m=t+24|0;p=t+20|0;j=t+16|0;r=t+12|0;s=t+8|0;k=t;c[h>>2]=f;c[o>>2]=g;if(!(c[(c[o>>2]|0)+52>>2]|0)){c[n>>2]=0;s=c[n>>2]|0;i=t;return s|0}if(!(c[(c[o>>2]|0)+48>>2]|0)){c[n>>2]=0;s=c[n>>2]|0;i=t;return s|0}c[m>>2]=c[o>>2];while(1){if(!(c[m>>2]|0))break;if((d[(c[m>>2]|0)+4>>0]|0|0)!=116?(d[(c[m>>2]|0)+4>>0]|0|0)!=119:0)break;c[m>>2]=c[(c[m>>2]|0)+52>>2]}if(!(c[m>>2]|0)){c[n>>2]=0;s=c[n>>2]|0;i=t;return s|0}c[j>>2]=c[(c[(c[o>>2]|0)+48>>2]|0)+4>>2];c[l>>2]=(c[c[(c[o>>2]|0)+48>>2]>>2]|0)-1;while(1){if((c[l>>2]|0)<0)break;if(c[(c[(c[j>>2]|0)+((c[l>>2]|0)*20|0)>>2]|0)+4>>2]&256)break;c[l>>2]=(c[l>>2]|0)+-1}if((c[l>>2]|0)<0){c[n>>2]=0;s=c[n>>2]|0;i=t;return s|0}c[s>>2]=c[c[h>>2]>>2];c[p>>2]=c[c[s>>2]>>2];c[q>>2]=ph(c[p>>2]|0,72,0)|0;if(!(c[q>>2]|0)){c[n>>2]=2;s=c[n>>2]|0;i=t;return s|0}c[k>>2]=0;c[k+4>>2]=0;c[r>>2]=Ev(c[s>>2]|0,0,0,0,k,c[q>>2]|0,0,0)|0;if(!(c[r>>2]|0)){c[n>>2]=2;s=c[n>>2]|0;i=t;return s|0}else{h=c[q>>2]|0;j=c[o>>2]|0;k=h+72|0;do{c[h>>2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(k|0));c[(c[o>>2]|0)+32>>2]=c[r>>2];s=c[s>>2]|0;s=Gv(s,0,Jv(c[p>>2]|0,158,0)|0)|0;c[c[o>>2]>>2]=s;a[(c[o>>2]|0)+4>>0]=119;c[(c[o>>2]|0)+36>>2]=0;c[(c[q>>2]|0)+40>>2]=0;c[(c[q>>2]|0)+44>>2]=0;c[(c[q>>2]|0)+48>>2]=0;c[(c[o>>2]|0)+52>>2]=0;c[(c[o>>2]|0)+56>>2]=0;c[(c[o>>2]|0)+68>>2]=0;s=(c[o>>2]|0)+6|0;b[s>>1]=(e[s>>1]|0)&-129;s=(c[o>>2]|0)+6|0;b[s>>1]=e[s>>1]|0|16384;c[(c[(c[q>>2]|0)+52>>2]|0)+56>>2]=c[q>>2];c[(c[q>>2]|0)+60>>2]=0;c[(c[q>>2]|0)+64>>2]=0;c[n>>2]=0;s=c[n>>2]|0;i=t;return s|0}return 0}function Qy(f,g){f=f|0;g=g|0;var h=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,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;Y=i;i=i+208|0;Q=Y+56|0;P=Y+48|0;O=Y+40|0;N=Y+24|0;R=Y+16|0;p=Y+8|0;m=Y;q=Y+196|0;h=Y+192|0;r=Y+188|0;F=Y+184|0;u=Y+180|0;w=Y+176|0;x=Y+172|0;J=Y+168|0;A=Y+164|0;C=Y+160|0;t=Y+156|0;z=Y+152|0;G=Y+148|0;B=Y+144|0;l=Y+202|0;o=Y+140|0;k=Y+136|0;j=Y+200|0;s=Y+132|0;E=Y+128|0;n=Y+124|0;y=Y+120|0;M=Y+116|0;V=Y+112|0;I=Y+108|0;H=Y+104|0;W=Y+100|0;U=Y+96|0;v=Y+92|0;T=Y+88|0;S=Y+84|0;X=Y+80|0;L=Y+72|0;D=Y+64|0;K=Y+60|0;c[h>>2]=f;c[r>>2]=g;c[F>>2]=c[c[h>>2]>>2];c[t>>2]=c[c[F>>2]>>2];b[l>>1]=b[(c[r>>2]|0)+6>>1]|0;f=(c[r>>2]|0)+6|0;b[f>>1]=e[f>>1]|32;if(a[(c[t>>2]|0)+65>>0]|0){c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}if((c[(c[r>>2]|0)+32>>2]|0)!=0?(e[l>>1]&32|0)==0:0){c[J>>2]=c[(c[r>>2]|0)+32>>2];c[A>>2]=c[c[r>>2]>>2];if((c[(c[h>>2]|0)+12>>2]|0)==132){l=c[F>>2]|0;Qv(l,c[(Sy(c[r>>2]|0)|0)+68>>2]|0,0)}Ix(c[F>>2]|0,c[J>>2]|0);c[u>>2]=0;c[C>>2]=(c[J>>2]|0)+8;a:while(1){if((c[u>>2]|0)>=(c[c[J>>2]>>2]|0)){j=38;break}if(!((d[(c[C>>2]|0)+36+1>>0]|0)>>>5&1)){if(Ty(c[h>>2]|0,c[C>>2]|0)|0){j=12;break}do if(!(c[(c[C>>2]|0)+16>>2]|0)){if(!(c[(c[C>>2]|0)+8>>2]|0)){c[k>>2]=c[(c[C>>2]|0)+20>>2];if(Zx(c[h>>2]|0,c[k>>2]|0)|0){j=16;break a}l=ph(c[t>>2]|0,72,0)|0;c[o>>2]=l;c[(c[C>>2]|0)+16>>2]=l;if(!(c[o>>2]|0)){j=18;break a}b[(c[o>>2]|0)+36>>1]=1;l=c[t>>2]|0;c[m>>2]=c[o>>2];l=Bh(l,30964,m)|0;c[c[o>>2]>>2]=l;while(1){if(!(c[(c[k>>2]|0)+52>>2]|0))break;c[k>>2]=c[(c[k>>2]|0)+52>>2]}Gx(c[F>>2]|0,c[c[k>>2]>>2]|0,(c[o>>2]|0)+34|0,(c[o>>2]|0)+4|0)|0;b[(c[o>>2]|0)+32>>1]=-1;b[(c[o>>2]|0)+38>>1]=200;l=(c[o>>2]|0)+42|0;a[l>>0]=d[l>>0]|2;break}l=_w(c[F>>2]|0,0,c[C>>2]|0)|0;c[o>>2]=l;c[(c[C>>2]|0)+16>>2]=l;if(!(c[o>>2]|0)){j=24;break a}if((e[(c[o>>2]|0)+36>>1]|0)==65535){j=26;break a}l=(c[o>>2]|0)+36|0;b[l>>1]=(b[l>>1]|0)+1<<16>>16;if((d[(c[o>>2]|0)+42>>0]&16|0)==0?(Uy(c[F>>2]|0,c[C>>2]|0)|0)!=0:0){j=29;break a}if((d[(c[o>>2]|0)+42>>0]&16|0)==0?(c[(c[o>>2]|0)+12>>2]|0)==0:0)break;if(zx(c[F>>2]|0,c[o>>2]|0)|0){j=33;break a}l=Hx(c[t>>2]|0,c[(c[o>>2]|0)+12>>2]|0,0)|0;c[(c[C>>2]|0)+20>>2]=l;b[j>>1]=b[(c[o>>2]|0)+34>>1]|0;b[(c[o>>2]|0)+34>>1]=-1;Zx(c[h>>2]|0,c[(c[C>>2]|0)+20>>2]|0)|0;b[(c[o>>2]|0)+34>>1]=b[j>>1]|0}while(0);if(Vy(c[F>>2]|0,c[C>>2]|0)|0){j=36;break}}c[u>>2]=(c[u>>2]|0)+1;c[C>>2]=(c[C>>2]|0)+72}if((j|0)==12){c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}else if((j|0)==16){c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}else if((j|0)==18){c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}else if((j|0)==24){c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}else if((j|0)==26){X=c[F>>2]|0;c[p>>2]=c[c[o>>2]>>2];Ah(X,30977,p);c[(c[C>>2]|0)+16>>2]=0;c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}else if((j|0)==29){c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}else if((j|0)==33){c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}else if((j|0)==36){c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}else if((j|0)==38){if((d[(c[t>>2]|0)+65>>0]|0)==0?(Wy(c[F>>2]|0,c[r>>2]|0)|0)==0:0){c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[c[A>>2]>>2]|0))break;c[z>>2]=c[(c[(c[A>>2]|0)+4>>2]|0)+((c[x>>2]|0)*20|0)>>2];if((d[c[z>>2]>>0]|0)==158)break;if((d[c[z>>2]>>0]|0)==122?(d[c[(c[z>>2]|0)+16>>2]>>0]|0)==158:0)break;c[x>>2]=(c[x>>2]|0)+1}if((c[x>>2]|0)<(c[c[A>>2]>>2]|0)){c[s>>2]=c[(c[A>>2]|0)+4>>2];c[E>>2]=0;c[n>>2]=c[(c[c[F>>2]>>2]|0)+24>>2];if(c[n>>2]&4)h=(c[n>>2]&64|0)==0;else h=0;c[y>>2]=h&1;c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[c[A>>2]>>2]|0))break;c[z>>2]=c[(c[s>>2]|0)+((c[x>>2]|0)*20|0)>>2];c[G>>2]=c[(c[z>>2]|0)+16>>2];do if((d[c[z>>2]>>0]|0)!=158){if((d[c[z>>2]>>0]|0)==122?(d[c[G>>2]>>0]|0)==158:0){j=58;break}c[E>>2]=Gv(c[F>>2]|0,c[E>>2]|0,c[(c[s>>2]|0)+((c[x>>2]|0)*20|0)>>2]|0)|0;if(c[E>>2]|0){c[(c[(c[E>>2]|0)+4>>2]|0)+(((c[c[E>>2]>>2]|0)-1|0)*20|0)+4>>2]=c[(c[s>>2]|0)+((c[x>>2]|0)*20|0)+4>>2];c[(c[(c[E>>2]|0)+4>>2]|0)+(((c[c[E>>2]>>2]|0)-1|0)*20|0)+8>>2]=c[(c[s>>2]|0)+((c[x>>2]|0)*20|0)+8>>2];c[(c[s>>2]|0)+((c[x>>2]|0)*20|0)+4>>2]=0;c[(c[s>>2]|0)+((c[x>>2]|0)*20|0)+8>>2]=0}c[(c[s>>2]|0)+((c[x>>2]|0)*20|0)>>2]=0}else j=58;while(0);do if((j|0)==58){j=0;c[M>>2]=0;c[V>>2]=0;if((d[c[z>>2]>>0]|0)==122)c[V>>2]=c[(c[(c[z>>2]|0)+12>>2]|0)+8>>2];c[u>>2]=0;c[C>>2]=(c[J>>2]|0)+8;while(1){if((c[u>>2]|0)>=(c[c[J>>2]>>2]|0))break;c[I>>2]=c[(c[C>>2]|0)+16>>2];c[H>>2]=c[(c[C>>2]|0)+20>>2];c[W>>2]=c[(c[C>>2]|0)+12>>2];c[U>>2]=0;if(!(c[W>>2]|0))c[W>>2]=c[c[I>>2]>>2];if(a[(c[t>>2]|0)+65>>0]|0)break;if((c[H>>2]|0)!=0?(e[(c[H>>2]|0)+6>>1]&1024|0)!=0:0)j=72;else j=67;do if((j|0)==67){j=0;c[H>>2]=0;if((c[V>>2]|0)!=0?(Td(c[V>>2]|0,c[W>>2]|0)|0)!=0:0)break;c[v>>2]=Dh(c[t>>2]|0,c[(c[I>>2]|0)+64>>2]|0)|0;if((c[v>>2]|0)>=0)h=c[(c[(c[t>>2]|0)+16>>2]|0)+(c[v>>2]<<4)>>2]|0;else h=26308;c[U>>2]=h;j=72}while(0);b:do if((j|0)==72){j=0;c[w>>2]=0;while(1){if((c[w>>2]|0)>=(b[(c[I>>2]|0)+34>>1]|0))break b;c[T>>2]=c[(c[(c[I>>2]|0)+4>>2]|0)+((c[w>>2]|0)*24|0)>>2];if(!((c[V>>2]|0)!=0&(c[H>>2]|0)!=0?(Ly(c[(c[(c[c[H>>2]>>2]|0)+4>>2]|0)+((c[w>>2]|0)*20|0)+8>>2]|0,0,c[V>>2]|0,0)|0)==0:0))j=76;do if((j|0)==76){j=0;if((e[(c[r>>2]|0)+6>>1]&32768|0)==0?(d[(c[(c[I>>2]|0)+4>>2]|0)+((c[w>>2]|0)*24|0)+23>>0]&2|0)!=0:0)break;c[M>>2]=1;if((c[u>>2]|0)>0&(c[V>>2]|0)==0){if((d[(c[C>>2]|0)+36>>0]&4|0)!=0?(Xy(c[J>>2]|0,c[u>>2]|0,c[T>>2]|0,0,0)|0)!=0:0)break;if((Yy(c[(c[C>>2]|0)+52>>2]|0,c[T>>2]|0)|0)>=0)break}c[G>>2]=Jv(c[t>>2]|0,27,c[T>>2]|0)|0;c[S>>2]=c[T>>2];c[X>>2]=0;do if(c[y>>2]|0)j=84;else{if((c[c[J>>2]>>2]|0)>1){j=84;break}c[B>>2]=c[G>>2]}while(0);do if((j|0)==84){j=0;c[D>>2]=Jv(c[t>>2]|0,27,c[W>>2]|0)|0;c[B>>2]=rv(c[F>>2]|0,122,c[D>>2]|0,c[G>>2]|0,0)|0;if(c[U>>2]|0){c[D>>2]=Jv(c[t>>2]|0,27,c[U>>2]|0)|0;c[B>>2]=rv(c[F>>2]|0,122,c[D>>2]|0,c[B>>2]|0,0)|0}if(!(c[y>>2]|0))break;p=c[t>>2]|0;o=c[T>>2]|0;c[R>>2]=c[W>>2];c[R+4>>2]=o;c[S>>2]=Bh(p,31016,R)|0;c[X>>2]=c[S>>2]}while(0);c[E>>2]=Gv(c[F>>2]|0,c[E>>2]|0,c[B>>2]|0)|0;Cy(L,c[S>>2]|0);Hv(c[F>>2]|0,c[E>>2]|0,L,0);do if(c[E>>2]|0){if(!(e[(c[r>>2]|0)+6>>1]&1024))break;c[K>>2]=(c[(c[E>>2]|0)+4>>2]|0)+(((c[c[E>>2]>>2]|0)-1|0)*20|0);h=c[t>>2]|0;if(c[H>>2]|0){p=nh(h,c[(c[(c[c[H>>2]>>2]|0)+4>>2]|0)+((c[w>>2]|0)*20|0)+8>>2]|0)|0;c[(c[K>>2]|0)+8>>2]=p}else{o=c[W>>2]|0;p=c[S>>2]|0;c[N>>2]=c[U>>2];c[N+4>>2]=o;c[N+8>>2]=p;p=Bh(h,31022,N)|0;c[(c[K>>2]|0)+8>>2]=p}p=(c[K>>2]|0)+13|0;a[p>>0]=a[p>>0]&-3|2}while(0);Sf(c[t>>2]|0,c[X>>2]|0)}while(0);c[w>>2]=(c[w>>2]|0)+1}}while(0);c[u>>2]=(c[u>>2]|0)+1;c[C>>2]=(c[C>>2]|0)+72}if(!(c[M>>2]|0)){h=c[F>>2]|0;if(c[V>>2]|0){c[O>>2]=c[V>>2];Ah(h,31031,O);break}else{Ah(h,31049,P);break}}}while(0);c[x>>2]=(c[x>>2]|0)+1}Vu(c[t>>2]|0,c[A>>2]|0);c[c[r>>2]>>2]=c[E>>2]}if((c[c[r>>2]>>2]|0)!=0?(c[c[c[r>>2]>>2]>>2]|0)>(c[(c[t>>2]|0)+88+8>>2]|0):0){Ah(c[F>>2]|0,31069,Q);c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}c[q>>2]=0;X=c[q>>2]|0;i=Y;return X|0}c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}}c[q>>2]=1;X=c[q>>2]|0;i=Y;return X|0}function Ry(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=i;i=i+16|0;h=f+12|0;g=f+8|0;d=f+4|0;e=f;c[h>>2]=a;c[g>>2]=b;c[d>>2]=c[c[h>>2]>>2];c[e>>2]=c[(Sy(c[g>>2]|0)|0)+68>>2];if(!(c[e>>2]|0)){i=f;return}c[(c[d>>2]|0)+536>>2]=c[(c[e>>2]|0)+4>>2];i=f;return}function Sy(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;while(1){a=c[b>>2]|0;if(!(c[(c[b>>2]|0)+56>>2]|0))break;c[b>>2]=c[a+56>>2]}i=d;return a|0}function Ty(f,g){f=f|0;g=g|0;var h=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;B=i;i=i+96|0;u=B+16|0;o=B+8|0;j=B;v=B+88|0;w=B+84|0;k=B+80|0;y=B+76|0;h=B+72|0;x=B+68|0;p=B+64|0;t=B+60|0;r=B+56|0;A=B+52|0;s=B+48|0;q=B+44|0;z=B+40|0;l=B+36|0;n=B+32|0;m=B+28|0;c[w>>2]=f;c[k>>2]=g;c[y>>2]=c[c[w>>2]>>2];c[h>>2]=c[c[y>>2]>>2];c[x>>2]=kz(c[(c[y>>2]|0)+536>>2]|0,c[k>>2]|0,p)|0;if(c[x>>2]|0){g=c[y>>2]|0;if(c[(c[x>>2]|0)+12>>2]|0){A=c[(c[x>>2]|0)+12>>2]|0;c[j>>2]=c[c[x>>2]>>2];Ah(g,A,j);c[v>>2]=1;A=c[v>>2]|0;i=B;return A|0}if(Uy(g,c[k>>2]|0)|0){c[v>>2]=1;A=c[v>>2]|0;i=B;return A|0}j=ph(c[h>>2]|0,72,0)|0;c[t>>2]=j; -c[(c[k>>2]|0)+16>>2]=j;if(!(c[t>>2]|0)){c[v>>2]=2;A=c[v>>2]|0;i=B;return A|0}b[(c[t>>2]|0)+36>>1]=1;j=nh(c[h>>2]|0,c[c[x>>2]>>2]|0)|0;c[c[t>>2]>>2]=j;b[(c[t>>2]|0)+32>>1]=-1;b[(c[t>>2]|0)+38>>1]=200;j=(c[t>>2]|0)+42|0;a[j>>0]=d[j>>0]|66;j=Hx(c[h>>2]|0,c[(c[x>>2]|0)+8>>2]|0,0)|0;c[(c[k>>2]|0)+20>>2]=j;if(a[(c[h>>2]|0)+65>>0]|0){c[v>>2]=7;A=c[v>>2]|0;i=B;return A|0}c[A>>2]=c[(c[k>>2]|0)+20>>2];if((d[(c[A>>2]|0)+4>>0]|0)==116)g=1;else g=(d[(c[A>>2]|0)+4>>0]|0)==115;c[q>>2]=g&1;a:do if(c[q>>2]|0){c[n>>2]=c[(c[(c[k>>2]|0)+20>>2]|0)+32>>2];c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[c[n>>2]>>2]|0))break a;c[m>>2]=(c[n>>2]|0)+8+((c[l>>2]|0)*72|0);if(((c[(c[m>>2]|0)+4>>2]|0)==0?(c[(c[m>>2]|0)+8>>2]|0)!=0:0)?0==(Td(c[(c[m>>2]|0)+8>>2]|0,c[c[x>>2]>>2]|0)|0):0){c[(c[m>>2]|0)+16>>2]=c[t>>2];k=(c[m>>2]|0)+36+1|0;a[k>>0]=a[k>>0]&-33|32;k=(c[t>>2]|0)+36|0;b[k>>1]=(b[k>>1]|0)+1<<16>>16;k=(c[A>>2]|0)+6|0;b[k>>1]=e[k>>1]|8192}c[l>>2]=(c[l>>2]|0)+1}}while(0);if((e[(c[t>>2]|0)+36>>1]|0)>2){A=c[y>>2]|0;c[o>>2]=c[c[x>>2]>>2];Ah(A,31310,o);c[v>>2]=1;A=c[v>>2]|0;i=B;return A|0}c[(c[x>>2]|0)+12>>2]=31353;c[z>>2]=c[(c[y>>2]|0)+536>>2];c[(c[y>>2]|0)+536>>2]=c[p>>2];g=c[A>>2]|0;if(c[q>>2]|0)g=c[g+52>>2]|0;Zx(c[w>>2]|0,g)|0;c[(c[y>>2]|0)+536>>2]=c[p>>2];c[s>>2]=c[A>>2];while(1){g=c[s>>2]|0;if(!(c[(c[s>>2]|0)+52>>2]|0))break;c[s>>2]=c[g+52>>2]}c[r>>2]=c[g>>2];if(c[(c[x>>2]|0)+4>>2]|0){if((c[r>>2]|0)!=0?(c[c[r>>2]>>2]|0)!=(c[c[(c[x>>2]|0)+4>>2]>>2]|0):0){A=c[y>>2]|0;t=c[c[r>>2]>>2]|0;w=c[c[(c[x>>2]|0)+4>>2]>>2]|0;c[u>>2]=c[c[x>>2]>>2];c[u+4>>2]=t;c[u+8>>2]=w;Ah(A,31376,u);c[(c[y>>2]|0)+536>>2]=c[z>>2];c[v>>2]=1;A=c[v>>2]|0;i=B;return A|0}c[r>>2]=c[(c[x>>2]|0)+4>>2]}Gx(c[y>>2]|0,c[r>>2]|0,(c[t>>2]|0)+34|0,(c[t>>2]|0)+4|0)|0;if(c[q>>2]|0){g=(c[x>>2]|0)+12|0;if(e[(c[A>>2]|0)+6>>1]&8192)c[g>>2]=31414;else c[g>>2]=31448;Zx(c[w>>2]|0,c[A>>2]|0)|0}c[(c[x>>2]|0)+12>>2]=0;c[(c[y>>2]|0)+536>>2]=c[z>>2]}c[v>>2]=0;A=c[v>>2]|0;i=B;return A|0}function Uy(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;e=j+12|0;f=j+8|0;g=j+4|0;c[f>>2]=a;c[g>>2]=b;if((d[(c[g>>2]|0)+36+1>>0]|0)>>>2&1){a=c[f>>2]|0;c[h>>2]=c[(c[g>>2]|0)+8>>2];Ah(a,31287,h);c[e>>2]=1;h=c[e>>2]|0;i=j;return h|0}else{c[e>>2]=0;h=c[e>>2]|0;i=j;return h|0}return 0}function Vy(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;l=n;f=n+28|0;g=n+24|0;h=n+20|0;k=n+16|0;m=n+12|0;j=n+8|0;c[g>>2]=b;c[h>>2]=e;do if((c[(c[h>>2]|0)+16>>2]|0)!=0?((d[(c[h>>2]|0)+36+1>>0]|0)>>>1&1|0)!=0:0){c[k>>2]=c[(c[h>>2]|0)+16>>2];c[m>>2]=c[(c[h>>2]|0)+64>>2];c[j>>2]=c[(c[k>>2]|0)+8>>2];while(1){if(!(c[j>>2]|0))break;if(!(Td(c[c[j>>2]>>2]|0,c[m>>2]|0)|0))break;c[j>>2]=c[(c[j>>2]|0)+20>>2]}if(c[j>>2]|0){c[(c[h>>2]|0)+68>>2]=c[j>>2];break}k=c[g>>2]|0;c[l>>2]=c[m>>2];c[l+4>>2]=0;Ah(k,31269,l);a[(c[g>>2]|0)+17>>0]=1;c[f>>2]=1;m=c[f>>2]|0;i=n;return m|0}while(0);c[f>>2]=0;m=c[f>>2]|0;i=n;return m|0}function Wy(a,e){a=a|0;e=e|0;var f=0,g=0,h=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;C=i;i=i+96|0;A=C+16|0;z=C+8|0;y=C;w=C+92|0;x=C+88|0;f=C+84|0;u=C+80|0;g=C+76|0;o=C+72|0;p=C+68|0;s=C+64|0;q=C+60|0;t=C+56|0;n=C+52|0;v=C+48|0;h=C+44|0;k=C+40|0;r=C+36|0;B=C+32|0;j=C+28|0;l=C+24|0;m=C+20|0;c[x>>2]=a;c[f>>2]=e;c[u>>2]=c[(c[f>>2]|0)+32>>2];c[p>>2]=(c[u>>2]|0)+8;c[s>>2]=(c[p>>2]|0)+72;c[g>>2]=0;a:while(1){if((c[g>>2]|0)>=((c[c[u>>2]>>2]|0)-1|0)){f=28;break}c[q>>2]=c[(c[p>>2]|0)+16>>2];c[t>>2]=c[(c[s>>2]|0)+16>>2];b:do if(!((c[q>>2]|0)==0|(c[t>>2]|0)==0)){c[n>>2]=(d[(c[s>>2]|0)+36>>0]&32|0)!=0&1;c:do if(d[(c[s>>2]|0)+36>>0]&4){if(c[(c[s>>2]|0)+48>>2]|0){f=7;break a}if(c[(c[s>>2]|0)+52>>2]|0){f=7;break a}c[o>>2]=0;while(1){if((c[o>>2]|0)>=(b[(c[t>>2]|0)+34>>1]|0))break c;c[v>>2]=c[(c[(c[t>>2]|0)+4>>2]|0)+((c[o>>2]|0)*24|0)>>2];if(Xy(c[u>>2]|0,(c[g>>2]|0)+1|0,c[v>>2]|0,h,k)|0)_y(c[x>>2]|0,c[u>>2]|0,c[h>>2]|0,c[k>>2]|0,(c[g>>2]|0)+1|0,c[o>>2]|0,c[n>>2]|0,(c[f>>2]|0)+36|0);c[o>>2]=(c[o>>2]|0)+1}}while(0);if((c[(c[s>>2]|0)+48>>2]|0)!=0?(c[(c[s>>2]|0)+52>>2]|0)!=0:0){f=15;break a}if(c[(c[s>>2]|0)+48>>2]|0){if(c[n>>2]|0)$y(c[(c[s>>2]|0)+48>>2]|0,c[(c[s>>2]|0)+44>>2]|0);a=az(c[c[x>>2]>>2]|0,c[(c[f>>2]|0)+36>>2]|0,c[(c[s>>2]|0)+48>>2]|0)|0;c[(c[f>>2]|0)+36>>2]=a;c[(c[s>>2]|0)+48>>2]=0}if(c[(c[s>>2]|0)+52>>2]|0){c[r>>2]=c[(c[s>>2]|0)+52>>2];c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[(c[r>>2]|0)+4>>2]|0))break b;c[B>>2]=c[(c[c[r>>2]>>2]|0)+(c[o>>2]<<3)>>2];c[m>>2]=Zy(c[t>>2]|0,c[B>>2]|0)|0;if((c[m>>2]|0)<0){f=25;break a}if(!(Xy(c[u>>2]|0,(c[g>>2]|0)+1|0,c[B>>2]|0,j,l)|0)){f=25;break a}_y(c[x>>2]|0,c[u>>2]|0,c[j>>2]|0,c[l>>2]|0,(c[g>>2]|0)+1|0,c[m>>2]|0,c[n>>2]|0,(c[f>>2]|0)+36|0);c[o>>2]=(c[o>>2]|0)+1}}}while(0);c[g>>2]=(c[g>>2]|0)+1;c[s>>2]=(c[s>>2]|0)+72;c[p>>2]=(c[p>>2]|0)+72}if((f|0)==7){B=c[x>>2]|0;c[y>>2]=0;Ah(B,31100,y);c[w>>2]=1;B=c[w>>2]|0;i=C;return B|0}else if((f|0)==15){Ah(c[x>>2]|0,31150,z);c[w>>2]=1;B=c[w>>2]|0;i=C;return B|0}else if((f|0)==25){z=c[x>>2]|0;c[A>>2]=c[B>>2];Ah(z,31205,A);c[w>>2]=1;B=c[w>>2]|0;i=C;return B|0}else if((f|0)==28){c[w>>2]=0;B=c[w>>2]|0;i=C;return B|0}return 0}function Xy(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;g=q+28|0;h=q+24|0;j=q+20|0;k=q+16|0;l=q+12|0;m=q+8|0;n=q+4|0;o=q;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[j>>2]|0)){p=8;break}c[o>>2]=Zy(c[(c[h>>2]|0)+8+((c[n>>2]|0)*72|0)+16>>2]|0,c[k>>2]|0)|0;if((c[o>>2]|0)>=0)break;c[n>>2]=(c[n>>2]|0)+1}if((p|0)==8){c[g>>2]=0;p=c[g>>2]|0;i=q;return p|0}if(c[l>>2]|0){c[c[l>>2]>>2]=c[n>>2];c[c[m>>2]>>2]=c[o>>2]}c[g>>2]=1;p=c[g>>2]|0;i=q;return p|0}function Yy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h+12|0;d=h+8|0;e=h+4|0;f=h;c[d>>2]=a;c[e>>2]=b;if(!(c[d>>2]|0)){c[g>>2]=-1;g=c[g>>2]|0;i=h;return g|0}c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[d>>2]|0)+4>>2]|0)){a=8;break}a=(Td(c[(c[c[d>>2]>>2]|0)+(c[f>>2]<<3)>>2]|0,c[e>>2]|0)|0)==0;b=c[f>>2]|0;if(a){a=6;break}c[f>>2]=b+1}if((a|0)==6){c[g>>2]=b;g=c[g>>2]|0;i=h;return g|0}else if((a|0)==8){c[g>>2]=-1;g=c[g>>2]|0;i=h;return g|0}return 0}function Zy(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j+12|0;e=j+8|0;f=j+4|0;g=j;c[e>>2]=a;c[f>>2]=d;c[g>>2]=0;while(1){if((c[g>>2]|0)>=(b[(c[e>>2]|0)+34>>1]|0)){a=6;break}a=(Td(c[(c[(c[e>>2]|0)+4>>2]|0)+((c[g>>2]|0)*24|0)>>2]|0,c[f>>2]|0)|0)==0;d=c[g>>2]|0;if(a){a=4;break}c[g>>2]=d+1}if((a|0)==4){c[h>>2]=d;h=c[h>>2]|0;i=j;return h|0}else if((a|0)==6){c[h>>2]=-1;h=c[h>>2]|0;i=j;return h|0}return 0}function _y(a,d,e,f,g,h,j,k){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;p=i;i=i+48|0;s=p+44|0;v=p+40|0;x=p+36|0;w=p+32|0;u=p+28|0;t=p+24|0;q=p+20|0;l=p+16|0;m=p+12|0;r=p+8|0;n=p+4|0;o=p;c[s>>2]=a;c[v>>2]=d;c[x>>2]=e;c[w>>2]=f;c[u>>2]=g;c[t>>2]=h;c[q>>2]=j;c[l>>2]=k;c[m>>2]=c[c[s>>2]>>2];c[r>>2]=jz(c[m>>2]|0,c[v>>2]|0,c[x>>2]|0,c[w>>2]|0)|0;c[n>>2]=jz(c[m>>2]|0,c[v>>2]|0,c[u>>2]|0,c[t>>2]|0)|0;c[o>>2]=rv(c[s>>2]|0,79,c[r>>2]|0,c[n>>2]|0,0)|0;if(!((c[o>>2]|0)!=0&(c[q>>2]|0)!=0)){v=c[m>>2]|0;x=c[l>>2]|0;x=c[x>>2]|0;w=c[o>>2]|0;w=az(v,x,w)|0;x=c[l>>2]|0;c[x>>2]=w;i=p;return}v=(c[o>>2]|0)+4|0;c[v>>2]=c[v>>2]|1;b[(c[o>>2]|0)+36>>1]=c[(c[n>>2]|0)+28>>2];v=c[m>>2]|0;x=c[l>>2]|0;x=c[x>>2]|0;w=c[o>>2]|0;w=az(v,x,w)|0;x=c[l>>2]|0;c[x>>2]=w;i=p;return}function $y(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=a;c[g>>2]=e;while(1){if(!(c[f>>2]|0))break;a=(c[f>>2]|0)+4|0;c[a>>2]=c[a>>2]|1;b[(c[f>>2]|0)+36>>1]=c[g>>2];a:do if((d[c[f>>2]>>0]|0|0)==151?(c[(c[f>>2]|0)+20>>2]|0)!=0:0){c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[c[(c[f>>2]|0)+20>>2]>>2]|0))break a;$y(c[(c[(c[(c[f>>2]|0)+20>>2]|0)+4>>2]|0)+((c[h>>2]|0)*20|0)>>2]|0,c[g>>2]|0);c[h>>2]=(c[h>>2]|0)+1}}while(0);$y(c[(c[f>>2]|0)+12>>2]|0,c[g>>2]|0);c[f>>2]=c[(c[f>>2]|0)+16>>2]}i=j;return}function az(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;a=c[h>>2]|0;if(!(c[g>>2]|0)){c[e>>2]=a;j=c[e>>2]|0;i=k;return j|0}b=c[g>>2]|0;if(!a){c[e>>2]=b;j=c[e>>2]|0;i=k;return j|0}if((bz(b)|0)==0?(bz(c[h>>2]|0)|0)==0:0){c[j>>2]=cz(c[f>>2]|0,72,0,0)|0;dz(c[f>>2]|0,c[j>>2]|0,c[g>>2]|0,c[h>>2]|0);c[e>>2]=c[j>>2];j=c[e>>2]|0;i=k;return j|0}Zu(c[f>>2]|0,c[g>>2]|0);Zu(c[f>>2]|0,c[h>>2]|0);c[e>>2]=cz(c[f>>2]|0,132,5092,0)|0;j=c[e>>2]|0;i=k;return j|0}function bz(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=0;do if(!(c[(c[d>>2]|0)+4>>2]&1))if(ky(c[d>>2]|0,e)|0){c[b>>2]=(c[e>>2]|0)==0&1;break}else{c[b>>2]=0;break}else c[b>>2]=0;while(0);i=f;return c[b>>2]|0}function cz(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;h=q+28|0;j=q+24|0;k=q+20|0;l=q+16|0;p=q+12|0;o=q+8|0;n=q+4|0;m=q;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;c[l>>2]=g;c[o>>2]=0;c[n>>2]=0;do if(c[k>>2]|0){if(((c[j>>2]|0)==132?(c[c[k>>2]>>2]|0)!=0:0)?(Li(c[c[k>>2]>>2]|0,n)|0)!=0:0)break;c[o>>2]=(c[(c[k>>2]|0)+4>>2]|0)+1}while(0);c[p>>2]=Fw(c[h>>2]|0,48+(c[o>>2]|0)|0,0)|0;if(!(c[p>>2]|0)){p=c[p>>2]|0;i=q;return p|0}h=c[p>>2]|0;d=h+48|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(d|0));a[c[p>>2]>>0]=c[j>>2];b[(c[p>>2]|0)+34>>1]=-1;do if(c[k>>2]|0){h=c[p>>2]|0;if(!(c[o>>2]|0)){o=h+4|0;c[o>>2]=c[o>>2]|1024;c[(c[p>>2]|0)+8>>2]=c[n>>2];break}c[(c[p>>2]|0)+8>>2]=h+48;if(c[(c[k>>2]|0)+4>>2]|0)iR(c[(c[p>>2]|0)+8>>2]|0,c[c[k>>2]>>2]|0,c[(c[k>>2]|0)+4>>2]|0)|0;a[(c[(c[p>>2]|0)+8>>2]|0)+(c[(c[k>>2]|0)+4>>2]|0)>>0]=0;if(((c[l>>2]|0)!=0&(c[o>>2]|0)>=3?(o=a[c[c[k>>2]>>2]>>0]|0,c[m>>2]=o,(o|0)==39|(c[m>>2]|0)==34|(c[m>>2]|0)==91|(c[m>>2]|0)==96):0)?(Jw(c[(c[p>>2]|0)+8>>2]|0)|0,(c[m>>2]|0)==34):0){o=(c[p>>2]|0)+4|0;c[o>>2]=c[o>>2]|64}}while(0);c[(c[p>>2]|0)+24>>2]=1;p=c[p>>2]|0;i=q;return p|0}function dz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;if(!(c[g>>2]|0)){Zu(c[f>>2]|0,c[h>>2]|0);Zu(c[f>>2]|0,c[j>>2]|0);i=k;return}if(c[j>>2]|0){c[(c[g>>2]|0)+16>>2]=c[j>>2];b=(c[g>>2]|0)+4|0;c[b>>2]=c[b>>2]|2097408&c[(c[j>>2]|0)+4>>2]}if(c[h>>2]|0){c[(c[g>>2]|0)+12>>2]=c[h>>2];b=(c[g>>2]|0)+4|0;c[b>>2]=c[b>>2]|2097408&c[(c[h>>2]|0)+4>>2]}ez(c[g>>2]|0);i=k;return}function ez(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=0;fz(c[(c[b>>2]|0)+12>>2]|0,d);fz(c[(c[b>>2]|0)+16>>2]|0,d);a=(c[b>>2]|0)+20|0;if(!(c[(c[b>>2]|0)+4>>2]&2048)){if(c[a>>2]|0){hz(c[(c[b>>2]|0)+20>>2]|0,d);f=2097408&(iz(c[(c[b>>2]|0)+20>>2]|0)|0);a=(c[b>>2]|0)+4|0;c[a>>2]=c[a>>2]|f}}else gz(c[a>>2]|0,d);c[(c[b>>2]|0)+24>>2]=(c[d>>2]|0)+1;i=e;return}function fz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if(!(c[d>>2]|0)){i=f;return}if((c[(c[d>>2]|0)+24>>2]|0)<=(c[c[e>>2]>>2]|0)){i=f;return}c[c[e>>2]>>2]=c[(c[d>>2]|0)+24>>2];i=f;return}function gz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if(!(c[d>>2]|0)){i=f;return}fz(c[(c[d>>2]|0)+36>>2]|0,c[e>>2]|0);fz(c[(c[d>>2]|0)+44>>2]|0,c[e>>2]|0);fz(c[(c[d>>2]|0)+60>>2]|0,c[e>>2]|0);fz(c[(c[d>>2]|0)+64>>2]|0,c[e>>2]|0);hz(c[c[d>>2]>>2]|0,c[e>>2]|0);hz(c[(c[d>>2]|0)+40>>2]|0,c[e>>2]|0);hz(c[(c[d>>2]|0)+48>>2]|0,c[e>>2]|0);gz(c[(c[d>>2]|0)+52>>2]|0,c[e>>2]|0);i=f;return}function hz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;if(!(c[d>>2]|0)){i=g;return}c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[d>>2]>>2]|0))break;fz(c[(c[(c[d>>2]|0)+4>>2]|0)+((c[f>>2]|0)*20|0)>>2]|0,c[e>>2]|0);c[f>>2]=(c[f>>2]|0)+1}i=g;return}function iz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;d=g+8|0;e=g+4|0;f=g;c[b>>2]=a;c[e>>2]=0;if(!(c[b>>2]|0)){a=c[e>>2]|0;i=g;return a|0}c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[c[b>>2]>>2]|0))break;c[f>>2]=c[(c[(c[b>>2]|0)+4>>2]|0)+((c[d>>2]|0)*20|0)>>2];if(c[f>>2]|0)c[e>>2]=c[e>>2]|c[(c[f>>2]|0)+4>>2];c[d>>2]=(c[d>>2]|0)+1}a=c[e>>2]|0;i=g;return a|0}function jz(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;n=m+20|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[n>>2]=a;c[g>>2]=d;c[h>>2]=e;c[j>>2]=f;c[k>>2]=cz(c[n>>2]|0,152,0,0)|0;if(!(c[k>>2]|0)){n=c[k>>2]|0;i=m;return n|0}c[l>>2]=(c[g>>2]|0)+8+((c[h>>2]|0)*72|0);c[(c[k>>2]|0)+44>>2]=c[(c[l>>2]|0)+16>>2];c[(c[k>>2]|0)+28>>2]=c[(c[l>>2]|0)+44>>2];if((b[(c[(c[k>>2]|0)+44>>2]|0)+32>>1]|0)==(c[j>>2]|0))b[(c[k>>2]|0)+32>>1]=-1;else{b[(c[k>>2]|0)+32>>1]=c[j>>2];e=lR(1,0,((c[j>>2]|0)>=64?63:c[j>>2]|0)|0)|0;n=(c[l>>2]|0)+56|0;l=n;d=c[l+4>>2]|C;c[n>>2]=c[l>>2]|e;c[n+4>>2]=d}n=(c[k>>2]|0)+4|0;c[n>>2]=c[n>>2]|4;n=c[k>>2]|0;i=m;return n|0}function kz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;e=m+24|0;f=m+20|0;g=m+16|0;h=m+12|0;l=m+8|0;k=m+4|0;j=m;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;a:do if((c[(c[g>>2]|0)+4>>2]|0)==0?(d=c[(c[g>>2]|0)+8>>2]|0,c[l>>2]=d,(d|0)!=0):0){c[k>>2]=c[f>>2];b:while(1){if(!(c[k>>2]|0))break a;c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[c[k>>2]>>2]|0))break;if(!(Td(c[l>>2]|0,c[(c[k>>2]|0)+8+(c[j>>2]<<4)>>2]|0)|0))break b;c[j>>2]=(c[j>>2]|0)+1}c[k>>2]=c[(c[k>>2]|0)+4>>2]}c[c[h>>2]>>2]=c[k>>2];c[e>>2]=(c[k>>2]|0)+8+(c[j>>2]<<4);l=c[e>>2]|0;i=m;return l|0}while(0);c[e>>2]=0;l=c[e>>2]|0;i=m;return l|0}function lz(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;g=r+36|0;h=r+32|0;j=r+28|0;k=r+24|0;n=r+20|0;l=r+16|0;m=r+12|0;o=r+8|0;p=r+4|0;q=r;c[h>>2]=a;c[j>>2]=e;c[k>>2]=f;if(!(c[j>>2]|0)){c[g>>2]=0;q=c[g>>2]|0;i=r;return q|0}if((c[c[j>>2]>>2]|0)>0)a=((c[c[j>>2]>>2]|0)-1|0)*72|0;else a=0;c[m>>2]=80+a;m=c[m>>2]|0;c[n>>2]=Fw(c[h>>2]|0,m,((m|0)<0)<<31>>31)|0;if(!(c[n>>2]|0)){c[g>>2]=0;q=c[g>>2]|0;i=r;return q|0}m=c[c[j>>2]>>2]|0;c[(c[n>>2]|0)+4>>2]=m;c[c[n>>2]>>2]=m;c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[c[j>>2]>>2]|0))break;c[o>>2]=(c[n>>2]|0)+8+((c[l>>2]|0)*72|0);c[p>>2]=(c[j>>2]|0)+8+((c[l>>2]|0)*72|0);c[c[o>>2]>>2]=c[c[p>>2]>>2];m=nh(c[h>>2]|0,c[(c[p>>2]|0)+4>>2]|0)|0;c[(c[o>>2]|0)+4>>2]=m;m=nh(c[h>>2]|0,c[(c[p>>2]|0)+8>>2]|0)|0;c[(c[o>>2]|0)+8>>2]=m;m=nh(c[h>>2]|0,c[(c[p>>2]|0)+12>>2]|0)|0;c[(c[o>>2]|0)+12>>2]=m;c[(c[o>>2]|0)+36>>2]=c[(c[p>>2]|0)+36>>2];c[(c[o>>2]|0)+44>>2]=c[(c[p>>2]|0)+44>>2];c[(c[o>>2]|0)+24>>2]=c[(c[p>>2]|0)+24>>2];c[(c[o>>2]|0)+28>>2]=c[(c[p>>2]|0)+28>>2];if((d[(c[o>>2]|0)+36+1>>0]|0)>>>1&1){m=nh(c[h>>2]|0,c[(c[p>>2]|0)+64>>2]|0)|0;c[(c[o>>2]|0)+64>>2]=m}c[(c[o>>2]|0)+68>>2]=c[(c[p>>2]|0)+68>>2];if((d[(c[o>>2]|0)+36+1>>0]|0)>>>2&1){m=vy(c[h>>2]|0,c[(c[p>>2]|0)+64>>2]|0,c[k>>2]|0)|0;c[(c[o>>2]|0)+64>>2]=m}m=c[(c[p>>2]|0)+16>>2]|0;c[(c[o>>2]|0)+16>>2]=m;c[q>>2]=m;if(c[q>>2]|0){m=(c[q>>2]|0)+36|0;b[m>>1]=(b[m>>1]|0)+1<<16>>16}f=Hx(c[h>>2]|0,c[(c[p>>2]|0)+20>>2]|0,c[k>>2]|0)|0;c[(c[o>>2]|0)+20>>2]=f;f=ny(c[h>>2]|0,c[(c[p>>2]|0)+48>>2]|0,c[k>>2]|0)|0;c[(c[o>>2]|0)+48>>2]=f;f=nz(c[h>>2]|0,c[(c[p>>2]|0)+52>>2]|0)|0;c[(c[o>>2]|0)+52>>2]=f;f=(c[p>>2]|0)+56|0;e=c[f+4>>2]|0;m=(c[o>>2]|0)+56|0;c[m>>2]=c[f>>2];c[m+4>>2]=e;c[l>>2]=(c[l>>2]|0)+1}c[g>>2]=c[n>>2];q=c[g>>2]|0;i=r;return q|0}function mz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;d=j+16|0;e=j+12|0;h=j+8|0;g=j+4|0;f=j;c[d>>2]=a;c[e>>2]=b;c[h>>2]=0;if(!(c[e>>2]|0)){h=c[h>>2]|0;i=j;return h|0}c[g>>2]=24+((c[c[e>>2]>>2]|0)-1<<4);b=c[g>>2]|0;c[h>>2]=ph(c[d>>2]|0,b,((b|0)<0)<<31>>31)|0;if(!(c[h>>2]|0)){h=c[h>>2]|0;i=j;return h|0}c[c[h>>2]>>2]=c[c[e>>2]>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[e>>2]>>2]|0))break;b=Hx(c[d>>2]|0,c[(c[e>>2]|0)+8+(c[f>>2]<<4)+8>>2]|0,0)|0;c[(c[h>>2]|0)+8+(c[f>>2]<<4)+8>>2]=b;b=vy(c[d>>2]|0,c[(c[e>>2]|0)+8+(c[f>>2]<<4)+4>>2]|0,0)|0;c[(c[h>>2]|0)+8+(c[f>>2]<<4)+4>>2]=b;b=nh(c[d>>2]|0,c[(c[e>>2]|0)+8+(c[f>>2]<<4)>>2]|0)|0;c[(c[h>>2]|0)+8+(c[f>>2]<<4)>>2]=b;c[f>>2]=(c[f>>2]|0)+1}h=c[h>>2]|0;i=j;return h|0}function nz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;d=l+24|0;e=l+20|0;f=l+16|0;h=l+12|0;g=l+8|0;j=l+4|0;k=l;c[e>>2]=a;c[f>>2]=b;if(!(c[f>>2]|0)){c[d>>2]=0;k=c[d>>2]|0;i=l;return k|0}c[h>>2]=Fw(c[e>>2]|0,8,0)|0;if(!(c[h>>2]|0)){c[d>>2]=0;k=c[d>>2]|0;i=l;return k|0}c[(c[h>>2]|0)+4>>2]=c[(c[f>>2]|0)+4>>2];b=Fw(c[e>>2]|0,c[(c[f>>2]|0)+4>>2]<<3,0)|0;c[c[h>>2]>>2]=b;if(!(c[c[h>>2]>>2]|0)){Sf(c[e>>2]|0,c[h>>2]|0);c[d>>2]=0;k=c[d>>2]|0;i=l;return k|0}c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[f>>2]|0)+4>>2]|0))break;c[j>>2]=(c[c[h>>2]>>2]|0)+(c[g>>2]<<3);c[k>>2]=(c[c[f>>2]>>2]|0)+(c[g>>2]<<3);b=nh(c[e>>2]|0,c[c[k>>2]>>2]|0)|0;c[c[j>>2]>>2]=b;c[(c[j>>2]|0)+4>>2]=c[(c[k>>2]|0)+4>>2];c[g>>2]=(c[g>>2]|0)+1}c[d>>2]=c[h>>2];k=c[d>>2]|0;i=l;return k|0}function oz(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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,J=0,K=0,L=0,M=0,N=0;N=i;i=i+144|0;A=N+32|0;K=N+24|0;J=N+16|0;m=N+8|0;l=N;E=N+132|0;F=N+128|0;n=N+124|0;o=N+120|0;p=N+116|0;G=N+112|0;z=N+96|0;H=N+92|0;I=N+88|0;q=N+84|0;v=N+80|0;L=N+76|0;M=N+72|0;t=N+68|0;k=N+64|0;B=N+60|0;s=N+56|0;y=N+136|0;C=N+52|0;x=N+48|0;r=N+44|0;u=N+40|0;w=N+36|0;c[F>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[G>>2]=j;c[q>>2]=c[(c[n>>2]|0)+52>>2];c[v>>2]=c[(c[n>>2]|0)+48>>2];c[L>>2]=0;c[k>>2]=c[(c[F>>2]|0)+328>>2];while(1){if(!(c[k>>2]|0))break;if((c[(c[k>>2]|0)+4>>2]|0)==(c[n>>2]|0)){D=4;break}c[k>>2]=c[(c[k>>2]|0)+8>>2]}if((D|0)==4){M=c[F>>2]|0;c[l>>2]=c[c[n>>2]>>2];M=Bh(M,31513,l)|0;c[c[G>>2]>>2]=M;c[E>>2]=6;M=c[E>>2]|0;i=N;return M|0}h=c[F>>2]|0;c[m>>2]=c[c[n>>2]>>2];c[M>>2]=Bh(h,19255,m)|0;if(!(c[M>>2]|0)){c[E>>2]=7;M=c[E>>2]|0;i=N;return M|0}c[H>>2]=ph(c[F>>2]|0,28,0)|0;e=c[F>>2]|0;if(!(c[H>>2]|0)){Sf(e,c[M>>2]|0);c[E>>2]=7;M=c[E>>2]|0;i=N;return M|0}c[c[H>>2]>>2]=e;c[(c[H>>2]|0)+4>>2]=c[o>>2];c[t>>2]=Dh(c[F>>2]|0,c[(c[n>>2]|0)+64>>2]|0)|0;c[(c[(c[n>>2]|0)+52>>2]|0)+4>>2]=c[(c[(c[F>>2]|0)+16>>2]|0)+(c[t>>2]<<4)>>2];c[z+4>>2]=c[n>>2];c[z>>2]=c[H>>2];c[z+8>>2]=c[(c[F>>2]|0)+328>>2];c[z+12>>2]=0;c[(c[F>>2]|0)+328>>2]=z;c[I>>2]=Sb[c[p>>2]&255](c[F>>2]|0,c[(c[o>>2]|0)+8>>2]|0,c[v>>2]|0,c[q>>2]|0,(c[H>>2]|0)+8|0,L)|0;c[(c[F>>2]|0)+328>>2]=c[z+8>>2];if((c[I>>2]|0)==7)jh(c[F>>2]|0);a:do if(!(c[I>>2]|0)){if(c[(c[H>>2]|0)+8>>2]|0){L=c[(c[H>>2]|0)+8>>2]|0;c[L>>2]=0;c[L+4>>2]=0;c[L+8>>2]=0;c[c[(c[H>>2]|0)+8>>2]>>2]=c[c[o>>2]>>2];c[(c[H>>2]|0)+12>>2]=1;if(!(c[z+12>>2]|0)){c[B>>2]=31585;K=c[F>>2]|0;L=c[B>>2]|0;c[A>>2]=c[c[n>>2]>>2];L=Bh(K,L,A)|0;c[c[G>>2]>>2]=L;hu(c[H>>2]|0);c[I>>2]=1;break}a[y>>0]=0;c[(c[H>>2]|0)+24>>2]=c[(c[n>>2]|0)+56>>2];c[(c[n>>2]|0)+56>>2]=c[H>>2];c[s>>2]=0;while(1){if((c[s>>2]|0)>=(b[(c[n>>2]|0)+34>>1]|0))break a;c[C>>2]=c[(c[(c[n>>2]|0)+4>>2]|0)+((c[s>>2]|0)*24|0)+12>>2];c[r>>2]=0;do if(c[C>>2]|0){c[x>>2]=If(c[C>>2]|0)|0;if(!(zd(31631,c[C>>2]|0,6)|0)){if((a[(c[C>>2]|0)+6>>0]|0)!=0?(a[(c[C>>2]|0)+6>>0]|0)!=32:0)D=27}else D=27;b:do if((D|0)==27){D=0;c[r>>2]=0;while(1){if((c[r>>2]|0)>=(c[x>>2]|0))break b;if(!(zd(31638,(c[C>>2]|0)+(c[r>>2]|0)|0,7)|0)){if(!(a[(c[C>>2]|0)+((c[r>>2]|0)+7)>>0]|0))break;if((a[(c[C>>2]|0)+((c[r>>2]|0)+7)>>0]|0)==32)break}c[r>>2]=(c[r>>2]|0)+1}c[r>>2]=(c[r>>2]|0)+1}while(0);if((c[r>>2]|0)>=(c[x>>2]|0)){L=(c[n>>2]|0)+42|0;a[L>>0]=d[L>>0]|d[y>>0];break}c[w>>2]=6+((a[(c[C>>2]|0)+((c[r>>2]|0)+6)>>0]|0)!=0?1:0);c[u>>2]=c[r>>2];while(1){if(((c[u>>2]|0)+(c[w>>2]|0)|0)>(c[x>>2]|0))break;a[(c[C>>2]|0)+(c[u>>2]|0)>>0]=a[(c[C>>2]|0)+((c[u>>2]|0)+(c[w>>2]|0))>>0]|0;c[u>>2]=(c[u>>2]|0)+1}if((c[r>>2]|0)>0?(a[(c[C>>2]|0)+(c[r>>2]|0)>>0]|0)==0:0)a[(c[C>>2]|0)+((c[r>>2]|0)-1)>>0]=0;L=(c[(c[n>>2]|0)+4>>2]|0)+((c[s>>2]|0)*24|0)+23|0;a[L>>0]=d[L>>0]|2;a[y>>0]=-128}else{L=(c[n>>2]|0)+42|0;a[L>>0]=d[L>>0]|d[y>>0]}while(0);c[s>>2]=(c[s>>2]|0)+1}}}else{e=c[F>>2]|0;if(!(c[L>>2]|0)){c[J>>2]=c[M>>2];L=Bh(e,31555,J)|0;c[c[G>>2]>>2]=L}else{c[K>>2]=c[L>>2];K=Bh(e,19255,K)|0;c[c[G>>2]>>2]=K;Kd(c[L>>2]|0)}Sf(c[F>>2]|0,c[H>>2]|0)}while(0);Sf(c[F>>2]|0,c[M>>2]|0);c[E>>2]=c[I>>2];M=c[E>>2]|0;i=N;return M|0}function pz(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;f=g+4|0;e=g;c[d>>2]=b;c[f>>2]=0;c[e>>2]=c[c[d>>2]>>2];if(!(a[(c[e>>2]|0)+140+5>>0]|0))c[f>>2]=oi(c[e>>2]|0,(c[d>>2]|0)+4|0)|0;if(!(c[f>>2]|0)){f=c[f>>2]|0;i=g;return f|0}c[(c[d>>2]|0)+12>>2]=c[f>>2];b=(c[d>>2]|0)+68|0;c[b>>2]=(c[b>>2]|0)+1;f=c[f>>2]|0;i=g;return f|0}function qz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+48|0;d=l+32|0;e=l+28|0;n=l+24|0;m=l+20|0;j=l+16|0;g=l+12|0;f=l+8|0;h=l+4|0;k=l;c[d>>2]=a;c[e>>2]=b;c[n>>2]=c[c[d>>2]>>2];c[m>>2]=c[(c[(c[n>>2]|0)+16>>2]|0)+(c[e>>2]<<4)+12>>2];ax(c[d>>2]|0,0,c[e>>2]|0);c[g>>2]=c[(c[d>>2]|0)+72>>2];a=(c[d>>2]|0)+72|0;c[a>>2]=(c[a>>2]|0)+3;uz(c[d>>2]|0,c[e>>2]|0,c[g>>2]|0,0,0);c[f>>2]=(c[(c[d>>2]|0)+76>>2]|0)+1;c[h>>2]=c[(c[d>>2]|0)+72>>2];c[j>>2]=c[(c[m>>2]|0)+8+8>>2];while(1){if(!(c[j>>2]|0))break;c[k>>2]=c[(c[j>>2]|0)+8>>2];vz(c[d>>2]|0,c[k>>2]|0,0,c[g>>2]|0,c[f>>2]|0,c[h>>2]|0);c[j>>2]=c[c[j>>2]>>2]}wz(c[d>>2]|0,c[e>>2]|0);i=l;return}function rz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+12|0;h=e+8|0;d=e+4|0;f=e;c[g>>2]=a;c[h>>2]=b;c[f>>2]=Dw(c[g>>2]|0,c[h>>2]|0)|0;c[d>>2]=ji(c[g>>2]|0,c[f>>2]|0)|0;Sf(c[g>>2]|0,c[f>>2]|0);i=e;return c[d>>2]|0}function sz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[h>>2]=Dh(c[c[e>>2]>>2]|0,c[(c[f>>2]|0)+64>>2]|0)|0;ax(c[e>>2]|0,0,c[h>>2]|0);c[j>>2]=c[(c[e>>2]|0)+72>>2];d=(c[e>>2]|0)+72|0;c[d>>2]=(c[d>>2]|0)+3;d=c[e>>2]|0;a=c[h>>2]|0;b=c[j>>2]|0;if(c[g>>2]|0)uz(d,a,b,c[c[g>>2]>>2]|0,31725);else uz(d,a,b,c[c[f>>2]>>2]|0,31729);vz(c[e>>2]|0,c[f>>2]|0,c[g>>2]|0,c[j>>2]|0,(c[(c[e>>2]|0)+76>>2]|0)+1|0,c[(c[e>>2]|0)+72>>2]|0);wz(c[e>>2]|0,c[h>>2]|0);i=k;return}function tz(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;q=r+8|0;p=r;h=r+36|0;j=r+32|0;k=r+28|0;l=r+24|0;m=r+20|0;o=r+16|0;n=r+12|0;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=c[c[j>>2]>>2];e=(c[n>>2]|0)+140|0;if((c[(c[l>>2]|0)+4>>2]|0)>>>0>0){if(a[e+5>>0]|0){Ah(c[j>>2]|0,31688,p);c[h>>2]=-1;q=c[h>>2]|0;i=r;return q|0}c[c[m>>2]>>2]=c[l>>2];c[o>>2]=rz(c[n>>2]|0,c[k>>2]|0)|0;if((c[o>>2]|0)<0){p=c[j>>2]|0;c[q>>2]=c[k>>2];Ah(p,31705,q);c[h>>2]=-1;q=c[h>>2]|0;i=r;return q|0}}else{c[o>>2]=d[e+4>>0];c[c[m>>2]>>2]=c[k>>2]}c[h>>2]=c[o>>2];q=c[h>>2]|0;i=r;return q|0}function uz(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=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;x=i;i=i+96|0;v=x+16|0;u=x;h=x+84|0;j=x+80|0;k=x+76|0;l=x+72|0;m=x+68|0;q=x+64|0;p=x+60|0;r=x+56|0;t=x+52|0;o=x+40|0;n=x+88|0;w=x+36|0;s=x+32|0;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[p>>2]=c[c[h>>2]>>2];c[t>>2]=Pw(c[h>>2]|0)|0;if(!(c[t>>2]|0)){i=x;return}c[r>>2]=(c[(c[p>>2]|0)+16>>2]|0)+(c[j>>2]<<4);c[q>>2]=0;while(1){if((c[q>>2]|0)>=3)break;c[w>>2]=c[5224+(c[q>>2]<<3)>>2];g=pi(c[p>>2]|0,c[w>>2]|0,c[c[r>>2]>>2]|0)|0;c[s>>2]=g;do if(!g){if(c[5224+(c[q>>2]<<3)+4>>2]|0){g=c[h>>2]|0;b=c[w>>2]|0;f=c[5224+(c[q>>2]<<3)+4>>2]|0;c[u>>2]=c[c[r>>2]>>2];c[u+4>>2]=b;c[u+8>>2]=f;Ow(g,31786,u);c[o+(c[q>>2]<<2)>>2]=c[(c[h>>2]|0)+396>>2];a[n+(c[q>>2]|0)>>0]=16}}else{c[o+(c[q>>2]<<2)>>2]=c[(c[s>>2]|0)+28>>2];a[n+(c[q>>2]|0)>>0]=0;yz(c[h>>2]|0,c[j>>2]|0,c[o+(c[q>>2]<<2)>>2]|0,1,c[w>>2]|0);if(c[l>>2]|0){g=c[h>>2]|0;e=c[w>>2]|0;b=c[m>>2]|0;f=c[l>>2]|0;c[v>>2]=c[c[r>>2]>>2];c[v+4>>2]=e;c[v+8>>2]=b;c[v+12>>2]=f;Ow(g,31809,v);break}else{Rw(c[t>>2]|0,119,c[o+(c[q>>2]<<2)>>2]|0,c[j>>2]|0)|0;break}}while(0);c[q>>2]=(c[q>>2]|0)+1}c[q>>2]=0;while(1){if(!(c[5224+(c[q>>2]<<3)+4>>2]|0))break;Eh(c[t>>2]|0,55,(c[k>>2]|0)+(c[q>>2]|0)|0,c[o+(c[q>>2]<<2)>>2]|0,c[j>>2]|0,3)|0;Fh(c[t>>2]|0,a[n+(c[q>>2]|0)>>0]|0);c[q>>2]=(c[q>>2]|0)+1}i=x;return}function vz(b,f,g,h,j,k){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;R=i;i=i+128|0;n=R+116|0;o=R+112|0;p=R+108|0;q=R+104|0;l=R+100|0;m=R+96|0;u=R+92|0;F=R+88|0;y=R+84|0;z=R+80|0;O=R+76|0;w=R+72|0;A=R+68|0;x=R+64|0;D=R+120|0;I=R+60|0;L=R+56|0;G=R+52|0;N=R+48|0;M=R+44|0;H=R+40|0;K=R+36|0;J=R+32|0;B=R+28|0;t=R+24|0;s=R+20|0;P=R+16|0;C=R+12|0;v=R+8|0;r=R+4|0;E=R;c[n>>2]=b;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[l>>2]=j;c[m>>2]=k;c[u>>2]=c[c[n>>2]>>2];c[A>>2]=-1;a[D>>0]=1;f=c[l>>2]|0;c[l>>2]=f+1;c[I>>2]=f;f=c[l>>2]|0;c[l>>2]=f+1;c[L>>2]=f;f=c[l>>2]|0;c[l>>2]=f+1;c[G>>2]=f;f=c[l>>2]|0;c[l>>2]=f+1;c[N>>2]=f;f=c[l>>2]|0;c[l>>2]=f+1;c[M>>2]=f;f=c[l>>2]|0;c[l>>2]=f+1;c[H>>2]=f;f=c[l>>2]|0;c[l>>2]=f+1;c[K>>2]=f;c[J>>2]=c[l>>2];if((c[(c[n>>2]|0)+76>>2]|0)>(c[l>>2]|0))l=c[(c[n>>2]|0)+76>>2]|0;else l=c[l>>2]|0;c[(c[n>>2]|0)+76>>2]=l;c[O>>2]=Pw(c[n>>2]|0)|0;if((c[O>>2]|0)==0|(c[o>>2]|0)==0){i=R;return}if(!(c[(c[o>>2]|0)+28>>2]|0)){i=R;return}if(!(_e(31733,c[c[o>>2]>>2]|0,0)|0)){i=R;return}c[x>>2]=Dh(c[u>>2]|0,c[(c[o>>2]|0)+64>>2]|0)|0;if(Mw(c[n>>2]|0,28,c[c[o>>2]>>2]|0,0,c[(c[(c[u>>2]|0)+16>>2]|0)+(c[x>>2]<<4)>>2]|0)|0){i=R;return}yz(c[n>>2]|0,c[x>>2]|0,c[(c[o>>2]|0)+28>>2]|0,0,c[c[o>>2]>>2]|0);f=c[m>>2]|0;c[m>>2]=f+1;c[z>>2]=f;f=c[m>>2]|0;c[m>>2]=f+1;c[y>>2]=f;if((c[(c[n>>2]|0)+72>>2]|0)>(c[m>>2]|0))l=c[(c[n>>2]|0)+72>>2]|0;else l=c[m>>2]|0;c[(c[n>>2]|0)+72>>2]=l;zz(c[n>>2]|0,c[z>>2]|0,c[x>>2]|0,c[o>>2]|0,54);Tw(c[O>>2]|0,c[M>>2]|0,c[c[o>>2]>>2]|0)|0;c[F>>2]=c[(c[o>>2]|0)+8>>2];while(1){l=c[p>>2]|0;if(!(c[F>>2]|0))break;if(!((l|0)!=0?(c[p>>2]|0)!=(c[F>>2]|0):0))Q=15;do if((Q|0)==15){Q=0;if(!(c[(c[F>>2]|0)+36>>2]|0))a[D>>0]=0;if(((d[(c[o>>2]|0)+42>>0]|0)&32|0)!=0?(a[(c[F>>2]|0)+55>>0]&3|0)==2:0){c[B>>2]=e[(c[F>>2]|0)+50>>1];c[P>>2]=c[c[o>>2]>>2];c[C>>2]=(c[B>>2]|0)-1}else{c[B>>2]=e[(c[F>>2]|0)+52>>1];c[P>>2]=c[c[F>>2]>>2];if((d[(c[F>>2]|0)+55>>0]|0)>>>3&1)l=e[(c[F>>2]|0)+50>>1]|0;else l=c[B>>2]|0;c[C>>2]=l-1}Tw(c[O>>2]|0,c[H>>2]|0,c[P>>2]|0)|0;if((c[(c[n>>2]|0)+76>>2]|0)>((c[J>>2]|0)+(c[C>>2]|0)|0))l=c[(c[n>>2]|0)+76>>2]|0;else l=(c[J>>2]|0)+(c[C>>2]|0)|0;c[(c[n>>2]|0)+76>>2]=l;Vw(c[O>>2]|0,54,c[y>>2]|0,c[(c[F>>2]|0)+44>>2]|0,c[x>>2]|0)|0;Az(c[n>>2]|0,c[F>>2]|0);Rw(c[O>>2]|0,22,c[B>>2]|0,(c[L>>2]|0)+1|0)|0;Rw(c[O>>2]|0,22,e[(c[F>>2]|0)+50>>1]|0,(c[L>>2]|0)+2|0)|0;Uw(c[O>>2]|0,35,0,(c[L>>2]|0)+1|0,c[L>>2]|0,5108,-5)|0;Fh(c[O>>2]|0,2);c[t>>2]=xz(c[O>>2]|0,108,c[y>>2]|0)|0;Rw(c[O>>2]|0,22,0,c[G>>2]|0)|0;c[s>>2]=Bz(c[O>>2]|0)|0;if((c[C>>2]|0)>0){c[v>>2]=Cz(c[O>>2]|0)|0;c[r>>2]=Fw(c[u>>2]|0,c[C>>2]<<2,0)|0;if(!(c[r>>2]|0))break;Yw(c[O>>2]|0,13)|0;c[s>>2]=Bz(c[O>>2]|0)|0;if(((c[C>>2]|0)==1?(e[(c[F>>2]|0)+50>>1]|0|0)==1:0)?(d[(c[F>>2]|0)+54>>0]|0|0)!=0:0)Rw(c[O>>2]|0,77,c[J>>2]|0,c[v>>2]|0)|0;c[w>>2]=0;while(1){if((c[w>>2]|0)>=(c[C>>2]|0))break;c[E>>2]=Dz(c[n>>2]|0,c[(c[(c[F>>2]|0)+32>>2]|0)+(c[w>>2]<<2)>>2]|0)|0;Rw(c[O>>2]|0,22,c[w>>2]|0,c[G>>2]|0)|0;Vw(c[O>>2]|0,47,c[y>>2]|0,c[w>>2]|0,c[N>>2]|0)|0;m=Uw(c[O>>2]|0,78,c[N>>2]|0,0,(c[J>>2]|0)+(c[w>>2]|0)|0,c[E>>2]|0,-4)|0;c[(c[r>>2]|0)+(c[w>>2]<<2)>>2]=m;Fh(c[O>>2]|0,-128);c[w>>2]=(c[w>>2]|0)+1}Rw(c[O>>2]|0,22,c[C>>2]|0,c[G>>2]|0)|0;Ez(c[O>>2]|0,c[v>>2]|0)|0;Fz(c[O>>2]|0,(c[s>>2]|0)-1|0);c[w>>2]=0;while(1){l=c[O>>2]|0;if((c[w>>2]|0)>=(c[C>>2]|0))break;Fz(l,c[(c[r>>2]|0)+(c[w>>2]<<2)>>2]|0);Vw(c[O>>2]|0,47,c[y>>2]|0,c[w>>2]|0,(c[J>>2]|0)+(c[w>>2]|0)|0)|0;c[w>>2]=(c[w>>2]|0)+1}Gz(l,c[v>>2]|0);Sf(c[u>>2]|0,c[r>>2]|0)}Uw(c[O>>2]|0,35,1,c[L>>2]|0,c[N>>2]|0,5140,-5)|0;Fh(c[O>>2]|0,2);Rw(c[O>>2]|0,7,c[y>>2]|0,c[s>>2]|0)|0;Hz(c[O>>2]|0,c[L>>2]|0,0,c[K>>2]|0);Uw(c[O>>2]|0,49,c[M>>2]|0,3,c[N>>2]|0,31742,0)|0;Rw(c[O>>2]|0,74,c[q>>2]|0,c[I>>2]|0)|0;Vw(c[O>>2]|0,75,c[q>>2]|0,c[N>>2]|0,c[I>>2]|0)|0;Fh(c[O>>2]|0,8);Fz(c[O>>2]|0,c[t>>2]|0)}while(0);c[F>>2]=c[(c[F>>2]|0)+20>>2]}if(l){i=R;return}if(!(d[D>>0]|0)){i=R;return}Rw(c[O>>2]|0,50,c[z>>2]|0,c[K>>2]|0)|0;c[A>>2]=xz(c[O>>2]|0,46,c[K>>2]|0)|0;Rw(c[O>>2]|0,25,0,c[H>>2]|0)|0;Uw(c[O>>2]|0,49,c[M>>2]|0,3,c[N>>2]|0,31742,0)|0;Rw(c[O>>2]|0,74,c[q>>2]|0,c[I>>2]|0)|0;Vw(c[O>>2]|0,75,c[q>>2]|0,c[N>>2]|0,c[I>>2]|0)|0;Fh(c[O>>2]|0,8);Fz(c[O>>2]|0,c[A>>2]|0);i=R;return}function wz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;g=f+8|0;d=f+4|0;e=f;c[g>>2]=a;c[d>>2]=b;c[e>>2]=Pw(c[g>>2]|0)|0;if(!(c[e>>2]|0)){i=f;return}xz(c[e>>2]|0,124,c[d>>2]|0)|0;i=f;return}function xz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;d=Vw(c[h>>2]|0,c[g>>2]|0,c[f>>2]|0,0,0)|0;i=e;return d|0}function yz(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+48|0;t=s+28|0;m=s+24|0;n=s+20|0;o=s+32|0;p=s+16|0;q=s+12|0;j=s+8|0;k=s+4|0;r=s;c[t>>2]=b;c[m>>2]=e;c[n>>2]=f;a[o>>0]=g;c[p>>2]=h;e=c[t>>2]|0;if(c[(c[t>>2]|0)+416>>2]|0)e=c[e+416>>2]|0;c[q>>2]=e;c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[(c[q>>2]|0)+404>>2]|0))break;c[r>>2]=(c[(c[q>>2]|0)+408>>2]|0)+(c[j>>2]<<4);if((c[c[r>>2]>>2]|0)==(c[m>>2]|0)?(c[(c[r>>2]|0)+4>>2]|0)==(c[n>>2]|0):0){l=7;break}c[j>>2]=(c[j>>2]|0)+1}if((l|0)==7){if(d[(c[r>>2]|0)+8>>0]|0)e=1;else e=(d[o>>0]|0|0)!=0;a[(c[r>>2]|0)+8>>0]=e&1;i=s;return}c[k>>2]=(c[(c[q>>2]|0)+404>>2]|0)+1<<4;e=c[k>>2]|0;e=vx(c[c[q>>2]>>2]|0,c[(c[q>>2]|0)+408>>2]|0,e,((e|0)<0)<<31>>31)|0;c[(c[q>>2]|0)+408>>2]=e;e=(c[q>>2]|0)+404|0;if(c[(c[q>>2]|0)+408>>2]|0){t=c[e>>2]|0;c[e>>2]=t+1;c[r>>2]=(c[(c[q>>2]|0)+408>>2]|0)+(t<<4);c[c[r>>2]>>2]=c[m>>2];c[(c[r>>2]|0)+4>>2]=c[n>>2];a[(c[r>>2]|0)+8>>0]=a[o>>0]|0;c[(c[r>>2]|0)+12>>2]=c[p>>2];i=s;return}else{c[e>>2]=0;jh(c[c[q>>2]>>2]|0);i=s;return}}function zz(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;j=q+24|0;k=q+20|0;l=q+16|0;m=q+12|0;n=q+8|0;p=q+4|0;o=q;c[j>>2]=a;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;c[p>>2]=Pw(c[j>>2]|0)|0;yz(c[j>>2]|0,c[l>>2]|0,c[(c[m>>2]|0)+28>>2]|0,((c[n>>2]|0)==55?1:0)&255,c[c[m>>2]>>2]|0);if(!(d[(c[m>>2]|0)+42>>0]&32)){Eh(c[p>>2]|0,c[n>>2]|0,c[k>>2]|0,c[(c[m>>2]|0)+28>>2]|0,c[l>>2]|0,b[(c[m>>2]|0)+34>>1]|0)|0;i=q;return}else{c[o>>2]=Ej(c[m>>2]|0)|0;Vw(c[p>>2]|0,c[n>>2]|0,c[k>>2]|0,c[(c[o>>2]|0)+44>>2]|0,c[l>>2]|0)|0;Az(c[j>>2]|0,c[o>>2]|0);i=q;return}}function Az(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+8|0;e=d+4|0;g=d;c[f>>2]=a;c[e>>2]=b;c[g>>2]=c[(c[f>>2]|0)+8>>2];a=c[g>>2]|0;Ih(a,-1,Pz(c[f>>2]|0,c[e>>2]|0)|0,-6);i=d;return}function Bz(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+32>>2]|0}function Cz(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;f=e+8|0;d=e+4|0;b=e;c[f>>2]=a;c[d>>2]=c[(c[f>>2]|0)+24>>2];f=(c[d>>2]|0)+116|0;a=c[f>>2]|0;c[f>>2]=a+1;c[b>>2]=a;if(!(c[b>>2]&(c[b>>2]|0)-1)){f=vx(c[c[d>>2]>>2]|0,c[(c[d>>2]|0)+120>>2]|0,(c[b>>2]<<1)+1<<2,0)|0;c[(c[d>>2]|0)+120>>2]=f}if(!(c[(c[d>>2]|0)+120>>2]|0)){f=c[b>>2]|0;f=-1-f|0;i=e;return f|0}c[(c[(c[d>>2]|0)+120>>2]|0)+(c[b>>2]<<2)>>2]=-1;f=c[b>>2]|0;f=-1-f|0;i=e;return f|0}function Dz(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+32|0;f=k+12|0;g=k+8|0;m=k+4|0;h=k+17|0;l=k+16|0;j=k;c[f>>2]=b;c[g>>2]=e;c[m>>2]=c[c[f>>2]>>2];a[h>>0]=a[(c[m>>2]|0)+62>>0]|0;a[l>>0]=a[(c[m>>2]|0)+140+5>>0]|0;c[j>>2]=Mj(c[m>>2]|0,a[h>>0]|0,c[g>>2]|0,d[l>>0]|0)|0;if(a[l>>0]|0){m=c[j>>2]|0;i=k;return m|0}if((c[j>>2]|0)!=0?(c[(c[j>>2]|0)+12>>2]|0)!=0:0){m=c[j>>2]|0;i=k;return m|0}c[j>>2]=Px(c[f>>2]|0,a[h>>0]|0,c[j>>2]|0,c[g>>2]|0)|0;m=c[j>>2]|0;i=k;return m|0}function Ez(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=Vw(c[f>>2]|0,13,0,c[e>>2]|0,0)|0;i=d;return a|0}function Fz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;c[(c[(c[e>>2]|0)+24>>2]|0)+96>>2]=(c[(c[e>>2]|0)+32>>2]|0)-1;Lz(c[e>>2]|0,c[f>>2]|0,c[(c[e>>2]|0)+32>>2]|0);i=d;return}function Gz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;d=g+12|0;h=g+8|0;f=g+4|0;e=g;c[d>>2]=a;c[h>>2]=b;c[f>>2]=c[(c[d>>2]|0)+24>>2];c[e>>2]=-1-(c[h>>2]|0);if(c[(c[f>>2]|0)+120>>2]|0)c[(c[(c[f>>2]|0)+120>>2]|0)+(c[e>>2]<<2)>>2]=c[(c[d>>2]|0)+32>>2];c[(c[f>>2]|0)+96>>2]=(c[(c[d>>2]|0)+32>>2]|0)-1;i=g;return}function Hz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+12|0;j=f+8|0;h=f;c[g>>2]=a;c[j>>2]=b;c[f+4>>2]=d;c[h>>2]=e;Uw(c[g>>2]|0,35,0,c[j>>2]|0,c[h>>2]|0,5172,-5)|0;Fh(c[g>>2]|0,1);i=f;return}function Iz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+64|0;l=o+24|0;k=o+16|0;e=o+56|0;p=o+48|0;j=o+44|0;m=o+40|0;f=o+36|0;n=o+32|0;h=o+8|0;g=o;c[e>>2]=a;c[o+52>>2]=b;c[p>>2]=d;c[j>>2]=$d(c[c[p>>2]>>2]|0)|0;a=((c[(c[j>>2]|0)+12>>2]|0)+1|0)*25|0;c[n>>2]=ig(a,((a|0)<0)<<31>>31)|0;if(!(c[n>>2]|0)){te(c[e>>2]|0);i=o;return}p=c[n>>2]|0;a=k;c[a>>2]=c[c[j>>2]>>2]; -c[a+4>>2]=0;Qd(24,p,31755,k)|0;p=c[n>>2]|0;c[m>>2]=p+(If(c[n>>2]|0)|0);c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[j>>2]|0)+12>>2]|0))break;p=h;c[p>>2]=(c[(c[(c[j>>2]|0)+20+4>>2]|0)+(c[f>>2]<<2)>>2]|0)+1;c[p+4>>2]=0;p=h;p=gR(c[c[j>>2]>>2]|0,0,c[p>>2]|0,c[p+4>>2]|0)|0;p=fR(p|0,C|0,1,0)|0;d=h;d=sR(p|0,C|0,c[d>>2]|0,c[d+4>>2]|0)|0;p=g;c[p>>2]=d;c[p+4>>2]=C;p=c[m>>2]|0;d=g;a=c[d+4>>2]|0;k=l;c[k>>2]=c[d>>2];c[k+4>>2]=a;Qd(24,p,31760,l)|0;p=If(c[m>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+p;c[f>>2]=(c[f>>2]|0)+1}ne(c[e>>2]|0,c[n>>2]|0,-1,148);i=o;return}function Jz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;j=h+12|0;e=h+8|0;g=h+4|0;f=h;c[h+20>>2]=a;c[h+16>>2]=b;c[j>>2]=d;c[g>>2]=$d(c[c[j>>2]>>2]|0)|0;c[f>>2]=de(c[(c[j>>2]|0)+4>>2]|0)|0;if(!(c[c[g>>2]>>2]|0)){c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[g>>2]|0)+8>>2]|0))break;c[(c[(c[g>>2]|0)+20>>2]|0)+(c[e>>2]<<2)>>2]=1;c[e>>2]=(c[e>>2]|0)+1}j=c[g>>2]|0;g=c[j>>2]|0;g=g+1|0;c[j>>2]=g;i=h;return}Kz(c[g>>2]|0,c[f>>2]|0);c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[f>>2]|0))break;j=(c[(c[g>>2]|0)+20>>2]|0)+(c[e>>2]<<2)|0;c[j>>2]=(c[j>>2]|0)+1;c[e>>2]=(c[e>>2]|0)+1}c[e>>2]=c[f>>2];while(1){if((c[e>>2]|0)>=(c[(c[g>>2]|0)+8>>2]|0))break;j=(c[(c[g>>2]|0)+20+4>>2]|0)+(c[e>>2]<<2)|0;c[j>>2]=(c[j>>2]|0)+1;c[(c[(c[g>>2]|0)+20>>2]|0)+(c[e>>2]<<2)>>2]=1;c[e>>2]=(c[e>>2]|0)+1}j=c[g>>2]|0;g=c[j>>2]|0;g=g+1|0;c[j>>2]=g;i=h;return}function Kz(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return}function Lz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;h=e;c[g>>2]=a;c[f>>2]=b;c[h>>2]=d;d=c[h>>2]|0;c[(Mz(c[g>>2]|0,c[f>>2]|0)|0)+8>>2]=d;i=e;return}function Mz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[f>>2]=b;c[g>>2]=d;if((c[g>>2]|0)<0)c[g>>2]=(c[(c[f>>2]|0)+32>>2]|0)-1;if(a[(c[c[f>>2]>>2]|0)+65>>0]|0){c[e>>2]=5204;b=c[e>>2]|0;i=h;return b|0}else{c[e>>2]=(c[(c[f>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0);b=c[e>>2]|0;i=h;return b|0}return 0}function Nz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+48|0;e=l+32|0;n=l+24|0;k=l+20|0;g=l+16|0;j=l+12|0;h=l+8|0;m=l+4|0;f=l;c[e>>2]=a;c[l+28>>2]=b;c[n>>2]=d;c[g>>2]=de(c[c[n>>2]>>2]|0)|0;c[h>>2]=(c[g>>2]|0)+1&-2;c[j>>2]=de(c[(c[n>>2]|0)+4>>2]|0)|0;c[m>>2]=56+(c[h>>2]<<2)+(c[h>>2]<<2);c[f>>2]=we(c[e>>2]|0)|0;a=c[m>>2]|0;c[k>>2]=ph(c[f>>2]|0,a,((a|0)<0)<<31>>31)|0;if(!(c[k>>2]|0)){te(c[e>>2]|0);i=l;return}else{c[(c[k>>2]|0)+52>>2]=c[f>>2];c[c[k>>2]>>2]=0;c[(c[k>>2]|0)+8>>2]=c[g>>2];c[(c[k>>2]|0)+12>>2]=c[j>>2];c[(c[k>>2]|0)+20+4>>2]=(c[k>>2]|0)+56;c[(c[k>>2]|0)+20>>2]=(c[(c[k>>2]|0)+20+4>>2]|0)+(c[h>>2]<<2);ge(c[e>>2]|0,c[k>>2]|0,56,153);i=l;return}}function Oz(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];Sf(c[(c[d>>2]|0)+52>>2]|0,c[d>>2]|0);i=b;return}function Pz(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;h=p+28|0;j=p+24|0;k=p+20|0;l=p+16|0;m=p+12|0;g=p+8|0;n=p+4|0;o=p;c[j>>2]=b;c[k>>2]=f;c[m>>2]=e[(c[k>>2]|0)+52>>1];c[g>>2]=e[(c[k>>2]|0)+50>>1];if(c[(c[j>>2]|0)+68>>2]|0){c[h>>2]=0;o=c[h>>2]|0;i=p;return o|0}f=c[c[j>>2]>>2]|0;if((d[(c[k>>2]|0)+55>>0]|0)>>>3&1)c[n>>2]=Qz(f,c[g>>2]|0,(c[m>>2]|0)-(c[g>>2]|0)|0)|0;else c[n>>2]=Qz(f,c[m>>2]|0,0)|0;if(c[n>>2]|0){c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[m>>2]|0))break;c[o>>2]=c[(c[(c[k>>2]|0)+32>>2]|0)+(c[l>>2]<<2)>>2];if((c[o>>2]|0)==35690)f=0;else f=Dz(c[j>>2]|0,c[o>>2]|0)|0;c[(c[n>>2]|0)+20+(c[l>>2]<<2)>>2]=f;a[(c[(c[n>>2]|0)+16>>2]|0)+(c[l>>2]|0)>>0]=a[(c[(c[k>>2]|0)+28>>2]|0)+(c[l>>2]|0)>>0]|0;c[l>>2]=(c[l>>2]|0)+1}if(c[(c[j>>2]|0)+68>>2]|0){Rz(c[n>>2]|0);c[n>>2]=0}}c[h>>2]=c[n>>2];o=c[h>>2]|0;i=p;return o|0}function Qz(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[g>>2]=d;c[h>>2]=e;c[j>>2]=f;c[k>>2]=((c[h>>2]|0)+(c[j>>2]|0)|0)*5;c[l>>2]=_f(24+(c[k>>2]|0)|0,0)|0;if(c[l>>2]|0){c[(c[l>>2]|0)+16>>2]=(c[l>>2]|0)+20+((c[h>>2]|0)+(c[j>>2]|0)<<2);b[(c[l>>2]|0)+6>>1]=c[h>>2];b[(c[l>>2]|0)+8>>1]=c[j>>2];a[(c[l>>2]|0)+4>>0]=a[(c[g>>2]|0)+62>>0]|0;c[(c[l>>2]|0)+12>>2]=c[g>>2];c[c[l>>2]>>2]=1;kR((c[l>>2]|0)+24|0,0,c[k>>2]|0)|0;l=c[l>>2]|0;i=m;return l|0}else{jh(c[g>>2]|0);l=c[l>>2]|0;i=m;return l|0}return 0}function Rz(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[b>>2]|0)){i=d;return}a=c[b>>2]|0;c[a>>2]=(c[a>>2]|0)+-1;if(c[c[b>>2]>>2]|0){i=d;return}Sf(0,c[b>>2]|0);i=d;return}function Sz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;d=l+24|0;e=l+20|0;j=l+16|0;g=l+12|0;f=l+8|0;h=l+4|0;k=l;c[d>>2]=a;c[e>>2]=b;c[f>>2]=c[c[d>>2]>>2];c[g>>2]=0;c[j>>2]=c[(c[f>>2]|0)+16>>2];while(1){if((c[g>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0))break;c[h>>2]=c[(c[(c[j>>2]|0)+12>>2]|0)+8+8>>2];while(1){if(!(c[h>>2]|0))break;c[k>>2]=c[(c[h>>2]|0)+8>>2];Tz(c[d>>2]|0,c[k>>2]|0,c[e>>2]|0);c[h>>2]=c[c[h>>2]>>2]}c[g>>2]=(c[g>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+16}i=l;return}function Tz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[j>>2]=c[(c[f>>2]|0)+8>>2];while(1){if(!(c[j>>2]|0))break;if(!((c[g>>2]|0)!=0?(hB(c[g>>2]|0,c[j>>2]|0)|0)==0:0)){c[h>>2]=Dh(c[c[e>>2]>>2]|0,c[(c[f>>2]|0)+64>>2]|0)|0;ax(c[e>>2]|0,0,c[h>>2]|0);Uz(c[e>>2]|0,c[j>>2]|0,-1)}c[j>>2]=c[(c[j>>2]|0)+20>>2]}i=k;return}function Uz(a,b,f){a=a|0;b=b|0;f=f|0;var g=0,h=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;x=i;i=i+80|0;n=x+64|0;o=x+60|0;g=x+56|0;l=x+52|0;t=x+48|0;r=x+44|0;s=x+40|0;p=x+36|0;q=x+32|0;m=x+28|0;j=x+24|0;w=x+20|0;k=x+16|0;v=x+12|0;y=x+8|0;h=x+4|0;u=x;c[n>>2]=a;c[o>>2]=b;c[g>>2]=f;c[l>>2]=c[(c[o>>2]|0)+12>>2];a=(c[n>>2]|0)+72|0;b=c[a>>2]|0;c[a>>2]=b+1;c[t>>2]=b;b=(c[n>>2]|0)+72|0;a=c[b>>2]|0;c[b>>2]=a+1;c[r>>2]=a;c[y>>2]=c[c[n>>2]>>2];c[h>>2]=Dh(c[y>>2]|0,c[(c[o>>2]|0)+24>>2]|0)|0;if(Mw(c[n>>2]|0,27,c[c[o>>2]>>2]|0,0,c[(c[(c[y>>2]|0)+16>>2]|0)+(c[h>>2]<<4)>>2]|0)|0){i=x;return}yz(c[n>>2]|0,c[h>>2]|0,c[(c[l>>2]|0)+28>>2]|0,1,c[c[l>>2]>>2]|0);c[w>>2]=Pw(c[n>>2]|0)|0;if(!(c[w>>2]|0)){i=x;return}if((c[g>>2]|0)>=0)c[m>>2]=c[g>>2];else c[m>>2]=c[(c[o>>2]|0)+44>>2];c[k>>2]=Pz(c[n>>2]|0,c[o>>2]|0)|0;a=(c[n>>2]|0)+72|0;b=c[a>>2]|0;c[a>>2]=b+1;c[s>>2]=b;b=c[w>>2]|0;a=c[s>>2]|0;y=e[(c[o>>2]|0)+50>>1]|0;Uw(b,58,a,0,y,Vz(c[k>>2]|0)|0,-6)|0;zz(c[n>>2]|0,c[t>>2]|0,c[h>>2]|0,c[l>>2]|0,54);c[p>>2]=Rw(c[w>>2]|0,108,c[t>>2]|0,0)|0;c[v>>2]=Wz(c[n>>2]|0)|0;Xz(c[n>>2]|0,c[o>>2]|0,c[t>>2]|0,c[v>>2]|0,0,j,0,0)|0;Rw(c[w>>2]|0,109,c[s>>2]|0,c[v>>2]|0)|0;Yz(c[n>>2]|0,c[j>>2]|0);Rw(c[w>>2]|0,7,c[t>>2]|0,(c[p>>2]|0)+1|0)|0;Fz(c[w>>2]|0,c[p>>2]|0);if((c[g>>2]|0)<0)Rw(c[w>>2]|0,119,c[m>>2]|0,c[h>>2]|0)|0;Uw(c[w>>2]|0,55,c[r>>2]|0,c[m>>2]|0,c[h>>2]|0,c[k>>2]|0,-6)|0;Fh(c[w>>2]|0,(1|((c[g>>2]|0)>=0?16:0))&255);c[p>>2]=Rw(c[w>>2]|0,106,c[s>>2]|0,0)|0;y=(c[k>>2]|0)!=0?(d[(c[o>>2]|0)+54>>0]|0|0)!=0:0;g=Bz(c[w>>2]|0)|0;if(y){c[u>>2]=g+3;Ez(c[w>>2]|0,c[u>>2]|0)|0;c[q>>2]=Bz(c[w>>2]|0)|0;Eh(c[w>>2]|0,99,c[s>>2]|0,c[u>>2]|0,c[v>>2]|0,e[(c[o>>2]|0)+50>>1]|0)|0;Zz(c[n>>2]|0,2,c[o>>2]|0)}else c[q>>2]=g;Vw(c[w>>2]|0,100,c[s>>2]|0,c[v>>2]|0,c[r>>2]|0)|0;Vw(c[w>>2]|0,105,c[r>>2]|0,0,-1)|0;Vw(c[w>>2]|0,110,c[r>>2]|0,c[v>>2]|0,0)|0;Fh(c[w>>2]|0,16);_z(c[n>>2]|0,c[v>>2]|0);Rw(c[w>>2]|0,3,c[s>>2]|0,c[q>>2]|0)|0;Fz(c[w>>2]|0,c[p>>2]|0);xz(c[w>>2]|0,61,c[t>>2]|0)|0;xz(c[w>>2]|0,61,c[r>>2]|0)|0;xz(c[w>>2]|0,61,c[s>>2]|0)|0;i=x;return}function Vz(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(c[b>>2]|0){a=c[b>>2]|0;c[a>>2]=(c[a>>2]|0)+1}i=d;return c[b>>2]|0}function Wz(b){b=b|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+4|0;f=g;c[f>>2]=b;b=c[f>>2]|0;if(!(d[(c[f>>2]|0)+19>>0]|0)){b=b+76|0;f=(c[b>>2]|0)+1|0;c[b>>2]=f;c[e>>2]=f;f=c[e>>2]|0;i=g;return f|0}else{h=b+19|0;b=(a[h>>0]|0)+-1<<24>>24;a[h>>0]=b;c[e>>2]=c[(c[f>>2]|0)+28+((b&255)<<2)>>2];f=c[e>>2]|0;i=g;return f|0}return 0}function Xz(a,e,f,g,h,j,k,l){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;y=i;i=i+48|0;o=y+44|0;p=y+40|0;q=y+36|0;r=y+32|0;m=y+28|0;n=y+24|0;s=y+20|0;t=y+16|0;x=y+12|0;u=y+8|0;w=y+4|0;v=y;c[o>>2]=a;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[m>>2]=h;c[n>>2]=j;c[s>>2]=k;c[t>>2]=l;c[x>>2]=c[(c[o>>2]|0)+8>>2];do if(c[n>>2]|0)if(c[(c[p>>2]|0)+36>>2]|0){l=Cz(c[x>>2]|0)|0;c[c[n>>2]>>2]=l;c[(c[o>>2]|0)+104>>2]=c[q>>2];iA(c[o>>2]|0);jA(c[o>>2]|0,c[(c[p>>2]|0)+36>>2]|0,c[c[n>>2]>>2]|0,16);break}else{c[c[n>>2]>>2]=0;break}while(0);if((c[m>>2]|0)!=0?((d[(c[p>>2]|0)+55>>0]|0)>>>3&1|0)!=0:0)m=b[(c[p>>2]|0)+50>>1]|0;else m=b[(c[p>>2]|0)+52>>1]|0;c[v>>2]=m&65535;c[w>>2]=kA(c[o>>2]|0,c[v>>2]|0)|0;do if(c[s>>2]|0){if((c[w>>2]|0)==(c[t>>2]|0)?(c[(c[s>>2]|0)+36>>2]|0)==0:0)break;c[s>>2]=0}while(0);c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[v>>2]|0))break;if(!(((c[s>>2]|0)!=0?(b[(c[(c[s>>2]|0)+4>>2]|0)+(c[u>>2]<<1)>>1]|0)==(b[(c[(c[p>>2]|0)+4>>2]|0)+(c[u>>2]<<1)>>1]|0):0)?(b[(c[(c[s>>2]|0)+4>>2]|0)+(c[u>>2]<<1)>>1]|0)!=-2:0)){lA(c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[u>>2]|0,(c[w>>2]|0)+(c[u>>2]|0)|0);mA(c[x>>2]|0,39)|0}c[u>>2]=(c[u>>2]|0)+1}if(!(c[r>>2]|0)){t=c[o>>2]|0;u=c[w>>2]|0;x=c[v>>2]|0;nA(t,u,x);x=c[w>>2]|0;i=y;return x|0}Vw(c[x>>2]|0,49,c[w>>2]|0,c[v>>2]|0,c[r>>2]|0)|0;t=c[o>>2]|0;u=c[w>>2]|0;x=c[v>>2]|0;nA(t,u,x);x=c[w>>2]|0;i=y;return x|0}function Yz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=f;return}Gz(c[(c[d>>2]|0)+8>>2]|0,c[e>>2]|0);gA(c[d>>2]|0);i=f;return}function Zz(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+80|0;p=s+8|0;o=s;h=s+68|0;j=s+64|0;k=s+60|0;r=s+56|0;m=s+52|0;l=s+24|0;n=s+20|0;q=s+16|0;c[h>>2]=d;c[j>>2]=f;c[k>>2]=g;c[n>>2]=c[(c[k>>2]|0)+12>>2];cg(l,c[c[h>>2]>>2]|0,0,0,200);if(c[(c[k>>2]|0)+40>>2]|0){c[o>>2]=c[c[k>>2]>>2];$z(l,31924,o);o=eg(l)|0;c[r>>2]=o;o=c[h>>2]|0;p=c[k>>2]|0;p=p+55|0;p=a[p>>0]|0;p=p&3;p=p&255;p=(p|0)==2;p=p?1555:2067;q=c[j>>2]|0;r=c[r>>2]|0;bA(o,p,q,r,-1,2);i=s;return}c[m>>2]=0;while(1){if((c[m>>2]|0)>=(e[(c[k>>2]|0)+50>>1]|0))break;c[q>>2]=c[(c[(c[n>>2]|0)+4>>2]|0)+((b[(c[(c[k>>2]|0)+4>>2]|0)+(c[m>>2]<<1)>>1]|0)*24|0)>>2];if(c[m>>2]|0)aA(l,31935,2);o=c[q>>2]|0;c[p>>2]=c[c[n>>2]>>2];c[p+4>>2]=o;$z(l,31016,p);c[m>>2]=(c[m>>2]|0)+1}o=eg(l)|0;c[r>>2]=o;o=c[h>>2]|0;p=c[k>>2]|0;p=p+55|0;p=a[p>>0]|0;p=p&3;p=p&255;p=(p|0)==2;p=p?1555:2067;q=c[j>>2]|0;r=c[r>>2]|0;bA(o,p,q,r,-1,2);i=s;return}function _z(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k+12|0;h=k+8|0;f=k+4|0;j=k;c[g>>2]=b;c[h>>2]=e;if(!(c[h>>2]|0)){i=k;return}if((d[(c[g>>2]|0)+19>>0]|0|0)>=8){i=k;return}c[f>>2]=0;c[j>>2]=(c[g>>2]|0)+124;while(1){if((c[f>>2]|0)>=10){f=8;break}if((c[(c[j>>2]|0)+12>>2]|0)==(c[h>>2]|0)){f=6;break}c[f>>2]=(c[f>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+20}if((f|0)==6){a[(c[j>>2]|0)+6>>0]=1;i=k;return}else if((f|0)==8){h=c[h>>2]|0;b=(c[g>>2]|0)+19|0;j=a[b>>0]|0;a[b>>0]=j+1<<24>>24;c[(c[g>>2]|0)+28+((j&255)<<2)>>2]=h;i=k;return}}function $z(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+32|0;h=e+20|0;g=e+16|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;dg(c[h>>2]|0,c[g>>2]|0,f);i=e;return}function aA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(((c[(c[e>>2]|0)+12>>2]|0)+(c[g>>2]|0)|0)>>>0>=(c[(c[e>>2]|0)+16>>2]|0)>>>0){cA(c[e>>2]|0,c[f>>2]|0,c[g>>2]|0);i=h;return}else{b=(c[e>>2]|0)+12|0;c[b>>2]=(c[b>>2]|0)+(c[g>>2]|0);iR((c[(c[e>>2]|0)+8>>2]|0)+((c[(c[e>>2]|0)+12>>2]|0)-(c[g>>2]|0))|0,c[f>>2]|0,c[g>>2]|0)|0;i=h;return}}function bA(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 j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;j=q+16|0;k=q+12|0;l=q+8|0;m=q+4|0;n=q+21|0;o=q+20|0;p=q;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;a[n>>0]=g;a[o>>0]=h;c[p>>2]=Pw(c[j>>2]|0)|0;if((c[l>>2]|0)==2)Bx(c[j>>2]|0);Uw(c[p>>2]|0,21,c[k>>2]|0,c[l>>2]|0,0,c[m>>2]|0,a[n>>0]|0)|0;Fh(c[p>>2]|0,a[o>>0]|0);i=q;return}function cA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[g>>2]=dA(c[e>>2]|0,c[g>>2]|0)|0;if((c[g>>2]|0)<=0){i=h;return}iR((c[(c[e>>2]|0)+8>>2]|0)+(c[(c[e>>2]|0)+12>>2]|0)|0,c[f>>2]|0,c[g>>2]|0)|0;b=(c[e>>2]|0)+12|0;c[b>>2]=(c[b>>2]|0)+(c[g>>2]|0);i=h;return}function dA(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;h=m+24|0;j=m+20|0;k=m+16|0;l=m+12|0;g=m+8|0;f=m;c[j>>2]=b;c[k>>2]=e;if(a[(c[j>>2]|0)+24>>0]|0){c[h>>2]=0;l=c[h>>2]|0;i=m;return l|0}e=c[j>>2]|0;if(!(c[(c[j>>2]|0)+20>>2]|0)){c[k>>2]=(c[e+16>>2]|0)-(c[(c[j>>2]|0)+12>>2]|0)-1;eA(c[j>>2]|0,2);c[h>>2]=c[k>>2];l=c[h>>2]|0;i=m;return l|0}if(d[e+25>>0]&4)e=c[(c[j>>2]|0)+8>>2]|0;else e=0;c[g>>2]=e;e=f;c[e>>2]=c[(c[j>>2]|0)+12>>2];c[e+4>>2]=0;e=(c[k>>2]|0)+1|0;b=f;e=gR(c[b>>2]|0,c[b+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;b=f;c[b>>2]=e;c[b+4>>2]=C;b=f;b=gR(c[b>>2]|0,c[b+4>>2]|0,c[(c[j>>2]|0)+12>>2]|0,0)|0;e=C;if((e|0)<0|((e|0)==0?b>>>0<=(c[(c[j>>2]|0)+20>>2]|0)>>>0:0)){e=f;e=gR(c[e>>2]|0,c[e+4>>2]|0,c[(c[j>>2]|0)+12>>2]|0,0)|0;b=f;c[b>>2]=e;c[b+4>>2]=C}b=f;e=c[b+4>>2]|0;if((e|0)>0|((e|0)==0?(c[b>>2]|0)>>>0>(c[(c[j>>2]|0)+20>>2]|0)>>>0:0)){fA(c[j>>2]|0);eA(c[j>>2]|0,2);c[h>>2]=0;l=c[h>>2]|0;i=m;return l|0}c[(c[j>>2]|0)+16>>2]=c[f>>2];if(c[c[j>>2]>>2]|0)c[l>>2]=Ew(c[c[j>>2]>>2]|0,c[g>>2]|0,c[(c[j>>2]|0)+16>>2]|0,0)|0;else c[l>>2]=Md(c[g>>2]|0,c[(c[j>>2]|0)+16>>2]|0,0)|0;e=c[j>>2]|0;if(!(c[l>>2]|0)){fA(e);eA(c[j>>2]|0,1);c[h>>2]=0;l=c[h>>2]|0;i=m;return l|0}if((d[e+25>>0]&4|0)==0?(c[(c[j>>2]|0)+12>>2]|0)>>>0>0:0)iR(c[l>>2]|0,c[(c[j>>2]|0)+8>>2]|0,c[(c[j>>2]|0)+12>>2]|0)|0;c[(c[j>>2]|0)+8>>2]=c[l>>2];l=$t(c[c[j>>2]>>2]|0,c[l>>2]|0)|0;c[(c[j>>2]|0)+16>>2]=l;l=(c[j>>2]|0)+25|0;a[l>>0]=d[l>>0]|4;c[h>>2]=c[k>>2];l=c[h>>2]|0;i=m;return l|0}function eA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e;g=e+4|0;c[f>>2]=b;a[g>>0]=d;a[(c[f>>2]|0)+24>>0]=a[g>>0]|0;c[(c[f>>2]|0)+16>>2]=0;i=e;return}function fA(b){b=b|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=b;if(!((d[(c[e>>2]|0)+25>>0]|0)&4)){b=c[e>>2]|0;b=b+8|0;c[b>>2]=0;i=f;return}Sf(c[c[e>>2]>>2]|0,c[(c[e>>2]|0)+8>>2]|0);b=(c[e>>2]|0)+25|0;a[b>>0]=(d[b>>0]|0)&-5;b=c[e>>2]|0;b=b+8|0;c[b>>2]=0;i=f;return}function gA(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;a=(c[b>>2]|0)+108|0;c[a>>2]=(c[a>>2]|0)+-1;c[d>>2]=0;c[e>>2]=(c[b>>2]|0)+124;while(1){if((c[d>>2]|0)>=10)break;if((c[(c[e>>2]|0)+12>>2]|0)!=0?(c[(c[e>>2]|0)+8>>2]|0)>(c[(c[b>>2]|0)+108>>2]|0):0){hA(c[b>>2]|0,c[e>>2]|0);c[(c[e>>2]|0)+12>>2]=0}c[d>>2]=(c[d>>2]|0)+1;c[e>>2]=(c[e>>2]|0)+20}i=f;return}function hA(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;h=i;i=i+16|0;f=h+4|0;g=h;c[f>>2]=b;c[g>>2]=e;if(!(a[(c[g>>2]|0)+6>>0]|0)){i=h;return}if((d[(c[f>>2]|0)+19>>0]|0)<8){e=c[(c[g>>2]|0)+12>>2]|0;j=(c[f>>2]|0)+19|0;b=a[j>>0]|0;a[j>>0]=b+1<<24>>24;c[(c[f>>2]|0)+28+((b&255)<<2)>>2]=e}a[(c[g>>2]|0)+6>>0]=0;i=h;return}function iA(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=(c[d>>2]|0)+108|0;c[a>>2]=(c[a>>2]|0)+1;i=b;return}function jA(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;g=m+20|0;n=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[g>>2]=a;c[n>>2]=b;c[h>>2]=e;c[j>>2]=f;c[k>>2]=c[c[g>>2]>>2];c[l>>2]=ny(c[k>>2]|0,c[n>>2]|0,0)|0;if(d[(c[k>>2]|0)+65>>0]|0){a=c[k>>2]|0;n=c[l>>2]|0;Zu(a,n);i=m;return}LA(c[g>>2]|0,c[l>>2]|0,c[h>>2]|0,c[j>>2]|0);a=c[k>>2]|0;n=c[l>>2]|0;Zu(a,n);i=m;return}function kA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;d=g+12|0;e=g+8|0;f=g+4|0;h=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=c[(c[d>>2]|0)+64>>2];c[h>>2]=c[(c[d>>2]|0)+60>>2];if((c[e>>2]|0)<=(c[h>>2]|0)){h=(c[d>>2]|0)+64|0;c[h>>2]=(c[h>>2]|0)+(c[e>>2]|0);h=(c[d>>2]|0)+60|0;c[h>>2]=(c[h>>2]|0)-(c[e>>2]|0);h=c[f>>2]|0;i=g;return h|0}else{c[f>>2]=(c[(c[d>>2]|0)+76>>2]|0)+1;h=(c[d>>2]|0)+76|0;c[h>>2]=(c[h>>2]|0)+(c[e>>2]|0);h=c[f>>2]|0;i=g;return h|0}return 0}function lA(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;h=o+16|0;j=o+12|0;k=o+8|0;l=o+4|0;m=o;n=o+20|0;c[h>>2]=a;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;b[n>>1]=b[(c[(c[j>>2]|0)+4>>2]|0)+(c[l>>2]<<1)>>1]|0;if((b[n>>1]|0)==-2){c[(c[h>>2]|0)+104>>2]=c[k>>2];sA(c[h>>2]|0,c[(c[(c[(c[j>>2]|0)+40>>2]|0)+4>>2]|0)+((c[l>>2]|0)*20|0)>>2]|0,c[m>>2]|0);i=o;return}else{tA(c[(c[h>>2]|0)+8>>2]|0,c[(c[j>>2]|0)+12>>2]|0,c[k>>2]|0,b[n>>1]|0,c[m>>2]|0);i=o;return}}function mA(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;h=i;i=i+16|0;f=h+4|0;g=h;j=h+8|0;c[g>>2]=b;a[j>>0]=e;if(((c[(c[g>>2]|0)+32>>2]|0)-1|0)>(c[(c[(c[g>>2]|0)+24>>2]|0)+96>>2]|0)?(d[(c[(c[g>>2]|0)+4>>2]|0)+(((c[(c[g>>2]|0)+32>>2]|0)-1|0)*20|0)>>0]|0|0)==(d[j>>0]|0|0):0){c[f>>2]=pA(c[g>>2]|0,(c[(c[g>>2]|0)+32>>2]|0)-1|0)|0;j=c[f>>2]|0;i=h;return j|0}c[f>>2]=0;j=c[f>>2]|0;i=h;return j|0}function nA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;oA(c[e>>2]|0,c[f>>2]|0,c[g>>2]|0);if((c[g>>2]|0)<=(c[(c[e>>2]|0)+60>>2]|0)){i=h;return}c[(c[e>>2]|0)+60>>2]=c[g>>2];c[(c[e>>2]|0)+64>>2]=c[f>>2];i=h;return}function oA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;e=l+24|0;f=l+20|0;m=l+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[e>>2]=a;c[f>>2]=b;c[m>>2]=d;c[h>>2]=(c[f>>2]|0)+(c[m>>2]|0)-1;c[g>>2]=0;c[j>>2]=(c[e>>2]|0)+124;while(1){if((c[g>>2]|0)>=10)break;c[k>>2]=c[(c[j>>2]|0)+12>>2];if((c[k>>2]|0)>=(c[f>>2]|0)?(c[k>>2]|0)<=(c[h>>2]|0):0){hA(c[e>>2]|0,c[j>>2]|0);c[(c[j>>2]|0)+12>>2]=0}c[g>>2]=(c[g>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+20}i=l;return}function pA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[g>>2]=d;if(a[(c[c[f>>2]>>2]|0)+65>>0]|0){c[e>>2]=0;h=c[e>>2]|0;i=j;return h|0}else{c[h>>2]=(c[(c[f>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0);qA(c[c[f>>2]>>2]|0,a[(c[h>>2]|0)+1>>0]|0,c[(c[h>>2]|0)+16>>2]|0);a[(c[h>>2]|0)+1>>0]=0;c[(c[h>>2]|0)+16>>2]=0;a[c[h>>2]>>0]=-96;c[e>>2]=1;h=c[e>>2]|0;i=j;return h|0}return 0}function qA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;g=j+12|0;e=j+8|0;f=j+4|0;h=j;c[g>>2]=a;c[e>>2]=b;c[f>>2]=d;if(!(c[f>>2]|0)){i=j;return}switch(c[e>>2]|0){case-20:{rA(c[g>>2]|0,c[(c[f>>2]|0)+4>>2]|0);break}case-15:case-1:case-13:case-12:break;case-6:{if(c[(c[g>>2]|0)+528>>2]|0){i=j;return}Rz(c[f>>2]|0);i=j;return}case-11:{if(c[(c[g>>2]|0)+528>>2]|0){i=j;return}Kd(c[f>>2]|0);i=j;return}case-5:{rA(c[g>>2]|0,c[f>>2]|0);i=j;return}case-8:{e=c[f>>2]|0;if(!(c[(c[g>>2]|0)+528>>2]|0)){$g(e);i=j;return}c[h>>2]=e;if(c[(c[h>>2]|0)+24>>2]|0)Sf(c[g>>2]|0,c[(c[h>>2]|0)+20>>2]|0);Sf(c[g>>2]|0,c[h>>2]|0);i=j;return}case-10:{if(c[(c[g>>2]|0)+528>>2]|0){i=j;return}hu(c[f>>2]|0);i=j;return}default:{i=j;return}}Sf(c[g>>2]|0,c[f>>2]|0);i=j;return}function rA(a,b){a=a|0;b=b|0;var d=0,f=0,g=0;g=i;i=i+16|0;d=g+4|0;f=g;c[d>>2]=a;c[f>>2]=b;if(!(c[f>>2]|0)){i=g;return}if(!((e[(c[f>>2]|0)+2>>1]|0)&16)){i=g;return}Sf(c[d>>2]|0,c[f>>2]|0);i=g;return}function sA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;c[j>>2]=c[c[f>>2]>>2];c[g>>2]=ny(c[j>>2]|0,c[g>>2]|0,0)|0;if(a[(c[j>>2]|0)+65>>0]|0){b=c[j>>2]|0;e=c[g>>2]|0;Zu(b,e);i=k;return}xA(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0);b=c[j>>2]|0;e=c[g>>2]|0;Zu(b,e);i=k;return}function tA(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;j=q+24|0;k=q+20|0;l=q+16|0;m=q+12|0;n=q+8|0;o=q+4|0;p=q;c[j>>2]=a;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;if((c[m>>2]|0)>=0?(c[m>>2]|0)!=(b[(c[k>>2]|0)+32>>1]|0):0){c[o>>2]=(d[(c[k>>2]|0)+42>>0]&16|0)!=0?153:47;c[p>>2]=c[m>>2];if(d[(c[k>>2]|0)+42>>0]&32){a=Ej(c[k>>2]|0)|0;c[p>>2]=(uA(a,c[m>>2]&65535)|0)<<16>>16}Vw(c[j>>2]|0,c[o>>2]|0,c[l>>2]|0,c[p>>2]|0,c[n>>2]|0)|0}else Rw(c[j>>2]|0,103,c[l>>2]|0,c[n>>2]|0)|0;if((c[m>>2]|0)<0){i=q;return}vA(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0);i=q;return}function uA(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k+10|0;f=k+4|0;g=k+8|0;h=k;c[f>>2]=a;b[g>>1]=d;c[h>>2]=0;while(1){if((c[h>>2]|0)>=(e[(c[f>>2]|0)+52>>1]|0)){d=6;break}a=c[h>>2]|0;if((b[g>>1]|0)==(b[(c[(c[f>>2]|0)+4>>2]|0)+(c[h>>2]<<1)>>1]|0)){d=4;break}c[h>>2]=a+1}if((d|0)==4){b[j>>1]=a;j=b[j>>1]|0;i=k;return j|0}else if((d|0)==6){b[j>>1]=-1;j=b[j>>1]|0;i=k;return j|0}return 0}function vA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+20|0;h=o+16|0;j=o+12|0;k=o+8|0;n=o+4|0;l=o+24|0;m=o;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;if(c[(c[h>>2]|0)+12>>2]|0){i=o;return}c[n>>2]=0;a[l>>0]=a[(wA(c[g>>2]|0)|0)+62>>0]|0;c[m>>2]=(c[(c[h>>2]|0)+4>>2]|0)+((c[j>>2]|0)*24|0);b=wA(c[g>>2]|0)|0;dx(b,c[(c[m>>2]|0)+4>>2]|0,a[l>>0]|0,a[(c[m>>2]|0)+21>>0]|0,n)|0;if(c[n>>2]|0)Ih(c[g>>2]|0,-1,c[n>>2]|0,-8);if((a[(c[(c[h>>2]|0)+4>>2]|0)+((c[j>>2]|0)*24|0)+21>>0]|0)!=69){i=o;return}xz(c[g>>2]|0,39,c[k>>2]|0)|0;i=o;return}function wA(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[c[b>>2]>>2]|0}function xA(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=b;c[h>>2]=e;if((c[g>>2]|0)!=0?(d[c[g>>2]>>0]|0|0)==157:0){Rw(c[(c[f>>2]|0)+8>>2]|0,30,c[(c[g>>2]|0)+28>>2]|0,c[h>>2]|0)|0;i=k;return}c[j>>2]=yA(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;if((c[j>>2]|0)==(c[h>>2]|0)){i=k;return}if(!(c[(c[f>>2]|0)+8>>2]|0)){i=k;return}Rw(c[(c[f>>2]|0)+8>>2]|0,31,c[j>>2]|0,c[h>>2]|0)|0;i=k;return}function yA(f,g,h){f=f|0;g=g|0;h=h|0;var 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,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,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;la=i;i=i+320|0;C=la+16|0;H=la+8|0;B=la;da=la+308|0;ea=la+304|0;J=la+300|0;fa=la+296|0;ja=la+292|0;o=la+288|0;ga=la+284|0;ha=la+280|0;ia=la+276|0;R=la+272|0;y=la+268|0;z=la+264|0;A=la+260|0;L=la+256|0;U=la+208|0;q=la+200|0;r=la+196|0;m=la+192|0;n=la+188|0;D=la+184|0;E=la+180|0;u=la+176|0;j=la+172|0;s=la+168|0;T=la+164|0;S=la+160|0;Q=la+156|0;G=la+152|0;I=la+148|0;K=la+144|0;O=la+140|0;F=la+313|0;P=la+136|0;M=la+132|0;N=la+312|0;k=la+128|0;l=la+124|0;v=la+120|0;t=la+116|0;w=la+112|0;x=la+108|0;p=la+104|0;W=la+100|0;Z=la+96|0;Y=la+92|0;X=la+88|0;aa=la+84|0;V=la+80|0;$=la+32|0;ca=la+24|0;ba=la+20|0;c[ea>>2]=f;c[J>>2]=g;c[fa>>2]=h;c[ja>>2]=c[(c[ea>>2]|0)+8>>2];c[ga>>2]=c[fa>>2];c[ha>>2]=0;c[ia>>2]=0;c[L>>2]=c[c[ea>>2]>>2];if(!(c[ja>>2]|0)){c[da>>2]=0;ka=c[da>>2]|0;i=la;return ka|0}if(!(c[J>>2]|0))c[o>>2]=101;else c[o>>2]=d[c[J>>2]>>0];a:do switch(c[o>>2]|0){case 154:{c[q>>2]=c[(c[J>>2]|0)+40>>2];c[r>>2]=(c[(c[q>>2]|0)+28>>2]|0)+((b[(c[J>>2]|0)+34>>1]|0)*24|0);if(!(a[c[q>>2]>>0]|0)){c[ga>>2]=c[(c[r>>2]|0)+16>>2];break a}if(a[(c[q>>2]|0)+1>>0]|0)Vw(c[ja>>2]|0,47,c[(c[q>>2]|0)+8>>2]|0,c[(c[r>>2]|0)+12>>2]|0,c[fa>>2]|0)|0;else ka=11;break}case 152:{ka=11;break}case 132:{AA(c[ea>>2]|0,c[J>>2]|0,0,c[fa>>2]|0);break}case 133:{BA(c[ja>>2]|0,c[(c[J>>2]|0)+8>>2]|0,0,c[fa>>2]|0);break}case 97:{Tw(c[ja>>2]|0,c[fa>>2]|0,c[(c[J>>2]|0)+8>>2]|0)|0;break}case 101:{Rw(c[ja>>2]|0,25,0,c[fa>>2]|0)|0;break}case 134:{c[D>>2]=(c[(c[J>>2]|0)+8>>2]|0)+2;c[n>>2]=(If(c[D>>2]|0)|0)-1;c[E>>2]=ox(wA(c[ja>>2]|0)|0,c[D>>2]|0,c[n>>2]|0)|0;Uw(c[ja>>2]|0,27,(c[n>>2]|0)/2|0,c[fa>>2]|0,0,c[E>>2]|0,-1)|0;break}case 135:{Rw(c[ja>>2]|0,28,b[(c[J>>2]|0)+32>>1]|0,c[fa>>2]|0)|0;if(a[(c[(c[J>>2]|0)+8>>2]|0)+1>>0]|0)Ih(c[ja>>2]|0,-1,c[(c[(c[ea>>2]|0)+476>>2]|0)+((b[(c[J>>2]|0)+32>>1]|0)-1<<2)>>2]|0,-2);break}case 157:{c[ga>>2]=c[(c[J>>2]|0)+28>>2];break}case 38:{c[ga>>2]=yA(c[ea>>2]|0,c[(c[J>>2]|0)+12>>2]|0,c[fa>>2]|0)|0;if((c[ga>>2]|0)!=(c[fa>>2]|0)){Rw(c[ja>>2]|0,31,c[ga>>2]|0,c[fa>>2]|0)|0;c[ga>>2]=c[fa>>2]}Rw(c[ja>>2]|0,40,c[fa>>2]|0,(jx(c[(c[J>>2]|0)+8>>2]|0,0)|0)<<24>>24)|0;CA(c[ea>>2]|0,c[ga>>2]|0,1);break}case 79:case 78:case 83:case 80:case 81:case 82:{c[R>>2]=DA(c[ea>>2]|0,c[(c[J>>2]|0)+12>>2]|0,ha)|0;c[y>>2]=DA(c[ea>>2]|0,c[(c[J>>2]|0)+16>>2]|0,ia)|0;EA(c[ea>>2]|0,c[(c[J>>2]|0)+12>>2]|0,c[(c[J>>2]|0)+16>>2]|0,c[o>>2]|0,c[R>>2]|0,c[y>>2]|0,c[ga>>2]|0,32)|0;break}case 148:case 73:{c[R>>2]=DA(c[ea>>2]|0,c[(c[J>>2]|0)+12>>2]|0,ha)|0;c[y>>2]=DA(c[ea>>2]|0,c[(c[J>>2]|0)+16>>2]|0,ia)|0;c[o>>2]=(c[o>>2]|0)==73?79:78;EA(c[ea>>2]|0,c[(c[J>>2]|0)+12>>2]|0,c[(c[J>>2]|0)+16>>2]|0,c[o>>2]|0,c[R>>2]|0,c[y>>2]|0,c[ga>>2]|0,160)|0;break}case 94:case 88:case 87:case 92:case 86:case 85:case 93:case 90:case 91:case 89:case 71:case 72:{c[R>>2]=DA(c[ea>>2]|0,c[(c[J>>2]|0)+12>>2]|0,ha)|0;c[y>>2]=DA(c[ea>>2]|0,c[(c[J>>2]|0)+16>>2]|0,ia)|0;Vw(c[ja>>2]|0,c[o>>2]|0,c[y>>2]|0,c[R>>2]|0,c[fa>>2]|0)|0;break}case 155:{c[u>>2]=c[(c[J>>2]|0)+12>>2];do if((d[c[u>>2]>>0]|0)!=132)if((d[c[u>>2]>>0]|0)==133){BA(c[ja>>2]|0,c[(c[u>>2]|0)+8>>2]|0,1,c[fa>>2]|0);break}else{a[U>>0]=-124;c[U+4>>2]=17408;c[U+8>>2]=0;c[R>>2]=DA(c[ea>>2]|0,U,ha)|0;c[y>>2]=DA(c[ea>>2]|0,c[(c[J>>2]|0)+12>>2]|0,ia)|0;Vw(c[ja>>2]|0,90,c[y>>2]|0,c[R>>2]|0,c[fa>>2]|0)|0;break}else AA(c[ea>>2]|0,c[u>>2]|0,1,c[fa>>2]|0);while(0);c[ga>>2]=c[fa>>2];break}case 19:case 96:{c[R>>2]=DA(c[ea>>2]|0,c[(c[J>>2]|0)+12>>2]|0,ha)|0;c[ga>>2]=c[fa>>2];Rw(c[ja>>2]|0,c[o>>2]|0,c[R>>2]|0,c[ga>>2]|0)|0;break}case 77:case 76:{Rw(c[ja>>2]|0,22,1,c[fa>>2]|0)|0;c[R>>2]=DA(c[ea>>2]|0,c[(c[J>>2]|0)+12>>2]|0,ha)|0;c[j>>2]=xz(c[ja>>2]|0,c[o>>2]|0,c[R>>2]|0)|0;Rw(c[ja>>2]|0,22,0,c[fa>>2]|0)|0;Fz(c[ja>>2]|0,c[j>>2]|0);break}case 153:{c[s>>2]=c[(c[J>>2]|0)+40>>2];if(!(c[s>>2]|0)){ja=c[ea>>2]|0;c[B>>2]=c[(c[J>>2]|0)+8>>2];Ah(ja,31938,B);break a}else{c[ga>>2]=c[(c[(c[s>>2]|0)+40>>2]|0)+(b[(c[J>>2]|0)+34>>1]<<4)+8>>2];break a}}case 151:{c[K>>2]=0;a[F>>0]=a[(c[L>>2]|0)+62>>0]|0;c[P>>2]=0;if(c[(c[J>>2]|0)+4>>2]&16384)c[T>>2]=0;else c[T>>2]=c[(c[J>>2]|0)+20>>2];if(c[T>>2]|0)j=c[c[T>>2]>>2]|0;else j=0;c[S>>2]=j;c[I>>2]=c[(c[J>>2]|0)+8>>2];c[G>>2]=If(c[I>>2]|0)|0;c[Q>>2]=gi(c[L>>2]|0,c[I>>2]|0,c[G>>2]|0,c[S>>2]|0,a[F>>0]|0,0)|0;if((c[Q>>2]|0)!=0?(c[(c[Q>>2]|0)+16>>2]|0)==0:0){if(e[(c[Q>>2]|0)+2>>1]&512){c[M>>2]=Cz(c[ja>>2]|0)|0;xA(c[ea>>2]|0,c[c[(c[T>>2]|0)+4>>2]>>2]|0,c[fa>>2]|0);c[O>>2]=1;while(1){j=c[ja>>2]|0;if((c[O>>2]|0)>=(c[S>>2]|0))break;Rw(j,77,c[fa>>2]|0,c[M>>2]|0)|0;oA(c[ea>>2]|0,c[fa>>2]|0,1);iA(c[ea>>2]|0);xA(c[ea>>2]|0,c[(c[(c[T>>2]|0)+4>>2]|0)+((c[O>>2]|0)*20|0)>>2]|0,c[fa>>2]|0);gA(c[ea>>2]|0);c[O>>2]=(c[O>>2]|0)+1}Gz(j,c[M>>2]|0);break a}if(e[(c[Q>>2]|0)+2>>1]&1024){c[ga>>2]=yA(c[ea>>2]|0,c[c[(c[T>>2]|0)+4>>2]>>2]|0,c[fa>>2]|0)|0;break a}c[O>>2]=0;while(1){if((c[O>>2]|0)>=(c[S>>2]|0))break;if((c[O>>2]|0)<32?(FA(c[(c[(c[T>>2]|0)+4>>2]|0)+((c[O>>2]|0)*20|0)>>2]|0)|0)!=0:0)c[K>>2]=c[K>>2]|1<>2];if(!((c[P>>2]|0)!=0?1:(e[(c[Q>>2]|0)+2>>1]&32|0)==0))c[P>>2]=Ox(c[ea>>2]|0,c[(c[(c[T>>2]|0)+4>>2]|0)+((c[O>>2]|0)*20|0)>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+1}if(c[T>>2]|0){j=c[ea>>2]|0;if(c[K>>2]|0){c[R>>2]=(c[j+76>>2]|0)+1;ca=(c[ea>>2]|0)+76|0;c[ca>>2]=(c[ca>>2]|0)+(c[S>>2]|0)}else c[R>>2]=kA(j,c[S>>2]|0)|0;do if(e[(c[Q>>2]|0)+2>>1]&192){a[N>>0]=a[c[c[(c[T>>2]|0)+4>>2]>>2]>>0]|0;if((d[N>>0]|0)!=152?(d[N>>0]|0)!=154:0)break;a[(c[c[(c[T>>2]|0)+4>>2]>>2]|0)+38>>0]=e[(c[Q>>2]|0)+2>>1]&192}while(0);iA(c[ea>>2]|0);GA(c[ea>>2]|0,c[T>>2]|0,c[R>>2]|0,0,3)|0;gA(c[ea>>2]|0)}else c[R>>2]=0;if((c[S>>2]|0)>=2?(c[(c[J>>2]|0)+4>>2]&128|0)!=0:0)c[Q>>2]=HA(c[L>>2]|0,c[Q>>2]|0,c[S>>2]|0,c[(c[(c[T>>2]|0)+4>>2]|0)+20>>2]|0)|0;else ka=77;if((ka|0)==77?(c[S>>2]|0)>0:0)c[Q>>2]=HA(c[L>>2]|0,c[Q>>2]|0,c[S>>2]|0,c[c[(c[T>>2]|0)+4>>2]>>2]|0)|0;if(e[(c[Q>>2]|0)+2>>1]&32){if(!(c[P>>2]|0))c[P>>2]=c[(c[L>>2]|0)+8>>2];Uw(c[ja>>2]|0,34,0,0,0,c[P>>2]|0,-4)|0}Uw(c[ja>>2]|0,35,c[K>>2]|0,c[R>>2]|0,c[fa>>2]|0,c[Q>>2]|0,-5)|0;Fh(c[ja>>2]|0,c[S>>2]&255);if(!((c[S>>2]|0)!=0&(c[K>>2]|0)==0))break a;nA(c[ea>>2]|0,c[R>>2]|0,c[S>>2]|0);break a}ja=c[ea>>2]|0;fa=c[I>>2]|0;c[H>>2]=c[G>>2];c[H+4>>2]=fa;Ah(ja,31964,H);break}case 119:case 20:{c[ga>>2]=IA(c[ea>>2]|0,c[J>>2]|0,0,0)|0;break}case 75:{c[k>>2]=Cz(c[ja>>2]|0)|0;c[l>>2]=Cz(c[ja>>2]|0)|0;Rw(c[ja>>2]|0,25,0,c[fa>>2]|0)|0;JA(c[ea>>2]|0,c[J>>2]|0,c[k>>2]|0,c[l>>2]|0);Rw(c[ja>>2]|0,22,1,c[fa>>2]|0)|0;Gz(c[ja>>2]|0,c[k>>2]|0);Rw(c[ja>>2]|0,37,c[fa>>2]|0,0)|0;Gz(c[ja>>2]|0,c[l>>2]|0);break}case 74:{c[v>>2]=c[(c[J>>2]|0)+12>>2];c[t>>2]=c[(c[(c[J>>2]|0)+20>>2]|0)+4>>2];c[w>>2]=c[c[t>>2]>>2];c[R>>2]=DA(c[ea>>2]|0,c[v>>2]|0,ha)|0;c[y>>2]=DA(c[ea>>2]|0,c[w>>2]|0,ia)|0;c[z>>2]=Wz(c[ea>>2]|0)|0;c[A>>2]=Wz(c[ea>>2]|0)|0;EA(c[ea>>2]|0,c[v>>2]|0,c[w>>2]|0,83,c[R>>2]|0,c[y>>2]|0,c[z>>2]|0,32)|0;c[t>>2]=(c[t>>2]|0)+20;c[w>>2]=c[c[t>>2]>>2];_z(c[ea>>2]|0,c[ia>>2]|0);c[y>>2]=DA(c[ea>>2]|0,c[w>>2]|0,ia)|0;EA(c[ea>>2]|0,c[v>>2]|0,c[w>>2]|0,81,c[R>>2]|0,c[y>>2]|0,c[A>>2]|0,32)|0;Vw(c[ja>>2]|0,72,c[z>>2]|0,c[A>>2]|0,c[fa>>2]|0)|0;_z(c[ea>>2]|0,c[z>>2]|0);_z(c[ea>>2]|0,c[A>>2]|0);break}case 156:case 95:{c[ga>>2]=yA(c[ea>>2]|0,c[(c[J>>2]|0)+12>>2]|0,c[fa>>2]|0)|0;break}case 62:{c[x>>2]=c[(c[J>>2]|0)+44>>2];c[p>>2]=(_(c[(c[J>>2]|0)+28>>2]|0,(b[(c[x>>2]|0)+34>>1]|0)+1|0)|0)+1+(b[(c[J>>2]|0)+32>>1]|0);Rw(c[ja>>2]|0,134,c[p>>2]|0,c[fa>>2]|0)|0;if((b[(c[J>>2]|0)+32>>1]|0)>=0?(a[(c[(c[x>>2]|0)+4>>2]|0)+((b[(c[J>>2]|0)+32>>1]|0)*24|0)+21>>0]|0)==69:0)xz(c[ja>>2]|0,39,c[fa>>2]|0)|0;break}case 57:{if(!(c[(c[ea>>2]|0)+420>>2]|0)){Ah(c[ea>>2]|0,31989,C);c[da>>2]=0;ka=c[da>>2]|0;i=la;return ka|0}if((a[(c[J>>2]|0)+1>>0]|0)==2)Bx(c[ea>>2]|0);if((a[(c[J>>2]|0)+1>>0]|0)==4){Uw(c[ja>>2]|0,21,0,4,0,c[(c[J>>2]|0)+8>>2]|0,0)|0;break a}else{bA(c[ea>>2]|0,1811,a[(c[J>>2]|0)+1>>0]|0,c[(c[J>>2]|0)+8>>2]|0,0,0);break a}}default:{c[ba>>2]=0;c[aa>>2]=c[(c[J>>2]|0)+20>>2];c[V>>2]=c[(c[aa>>2]|0)+4>>2];c[Y>>2]=c[c[aa>>2]>>2];c[W>>2]=Cz(c[ja>>2]|0)|0;T=c[(c[J>>2]|0)+12>>2]|0;c[ca>>2]=T;if(T){j=U;k=c[ca>>2]|0;l=j+48|0;do{c[j>>2]=c[k>>2];j=j+4|0;k=k+4|0}while((j|0)<(l|0));KA(U,DA(c[ea>>2]|0,c[ca>>2]|0,ha)|0);a[$>>0]=79;c[$+12>>2]=U;c[ba>>2]=$;c[ha>>2]=0}c[X>>2]=0;while(1){if((c[X>>2]|0)>=((c[Y>>2]|0)-1|0))break;iA(c[ea>>2]|0);j=c[(c[V>>2]|0)+((c[X>>2]|0)*20|0)>>2]|0;if(c[ca>>2]|0)c[$+16>>2]=j;else c[ba>>2]=j;c[Z>>2]=Cz(c[ja>>2]|0)|0;LA(c[ea>>2]|0,c[ba>>2]|0,c[Z>>2]|0,16);xA(c[ea>>2]|0,c[(c[V>>2]|0)+(((c[X>>2]|0)+1|0)*20|0)>>2]|0,c[fa>>2]|0);Ez(c[ja>>2]|0,c[W>>2]|0)|0;gA(c[ea>>2]|0);Gz(c[ja>>2]|0,c[Z>>2]|0);c[X>>2]=(c[X>>2]|0)+2}if(c[Y>>2]&1){iA(c[ea>>2]|0);xA(c[ea>>2]|0,c[(c[(c[aa>>2]|0)+4>>2]|0)+(((c[Y>>2]|0)-1|0)*20|0)>>2]|0,c[fa>>2]|0);gA(c[ea>>2]|0)}else Rw(c[ja>>2]|0,25,0,c[fa>>2]|0)|0;Gz(c[ja>>2]|0,c[W>>2]|0)}}while(0);b:do if((ka|0)==11){c[m>>2]=c[(c[J>>2]|0)+28>>2];do if((c[m>>2]|0)<0)if((c[(c[ea>>2]|0)+100>>2]|0)>0){c[ga>>2]=(b[(c[J>>2]|0)+32>>1]|0)+(c[(c[ea>>2]|0)+100>>2]|0);break b}else{c[m>>2]=c[(c[ea>>2]|0)+104>>2];break}while(0);c[ga>>2]=zA(c[ea>>2]|0,c[(c[J>>2]|0)+44>>2]|0,b[(c[J>>2]|0)+32>>1]|0,c[m>>2]|0,c[fa>>2]|0,a[(c[J>>2]|0)+38>>0]|0)|0}while(0);_z(c[ea>>2]|0,c[ha>>2]|0);_z(c[ea>>2]|0,c[ia>>2]|0);c[da>>2]=c[ga>>2];ka=c[da>>2]|0;i=la;return ka|0}function zA(d,e,f,g,h,j){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+48|0;k=v+32|0;l=v+28|0;m=v+24|0;n=v+20|0;o=v+16|0;p=v+12|0;q=v+36|0;t=v+8|0;r=v+4|0;s=v;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;a[q>>0]=j;c[t>>2]=c[(c[l>>2]|0)+8>>2];c[r>>2]=0;c[s>>2]=(c[l>>2]|0)+124;while(1){if((c[r>>2]|0)>=10)break;if(((c[(c[s>>2]|0)+12>>2]|0)>0?(c[c[s>>2]>>2]|0)==(c[o>>2]|0):0)?(b[(c[s>>2]|0)+4>>1]|0)==(c[n>>2]|0):0){u=6;break}c[r>>2]=(c[r>>2]|0)+1;c[s>>2]=(c[s>>2]|0)+20}if((u|0)==6){t=(c[l>>2]|0)+112|0;u=c[t>>2]|0;c[t>>2]=u+1;c[(c[s>>2]|0)+16>>2]=u;fB(c[l>>2]|0,c[(c[s>>2]|0)+12>>2]|0);c[k>>2]=c[(c[s>>2]|0)+12>>2];u=c[k>>2]|0;i=v;return u|0}tA(c[t>>2]|0,c[m>>2]|0,c[o>>2]|0,c[n>>2]|0,c[p>>2]|0);if(a[q>>0]|0)Fh(c[t>>2]|0,a[q>>0]|0);else gB(c[l>>2]|0,c[o>>2]|0,c[n>>2]|0,c[p>>2]|0);c[k>>2]=c[p>>2];u=c[k>>2]|0;i=v;return u|0}function AA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+48|0;n=p+8|0;f=p+40|0;q=p+36|0;g=p+32|0;h=p+28|0;l=p+24|0;k=p+20|0;j=p+16|0;m=p;o=p+12|0;c[f>>2]=a;c[q>>2]=b;c[g>>2]=d;c[h>>2]=e;c[l>>2]=c[(c[f>>2]|0)+8>>2];e=(c[q>>2]|0)+8|0;if(c[(c[q>>2]|0)+4>>2]&1024){c[k>>2]=c[e>>2];if(c[g>>2]|0)c[k>>2]=0-(c[k>>2]|0);Rw(c[l>>2]|0,22,c[k>>2]|0,c[h>>2]|0)|0;i=p;return}c[o>>2]=c[e>>2];c[j>>2]=Ci(c[o>>2]|0,m)|0;if((c[j>>2]|0)!=0?!((c[j>>2]|0)==2&(c[g>>2]|0)!=0):0)if(!(zd(c[o>>2]|0,32088,2)|0)){q=c[f>>2]|0;c[n>>2]=c[o>>2];Ah(q,32091,n);i=p;return}else{BA(c[l>>2]|0,c[o>>2]|0,c[g>>2]|0,c[h>>2]|0);i=p;return}if(c[g>>2]|0){o=(c[j>>2]|0)==2;n=m;n=fR(0,0,c[n>>2]|0,c[n+4>>2]|0)|0;q=m;c[q>>2]=o?0:n;c[q+4>>2]=o?-2147483648:C}eB(c[l>>2]|0,23,0,c[h>>2]|0,0,m,-13)|0;i=p;return}function BA(a,b,d,e){a=a|0;b=b|0; -d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;j=m+12|0;k=m+8|0;l=m;c[f>>2]=a;c[g>>2]=b;c[j>>2]=d;c[k>>2]=e;if(!(c[g>>2]|0)){i=m;return}b=c[g>>2]|0;Ky(b,l,If(c[g>>2]|0)|0,1)|0;if(c[j>>2]|0)h[l>>3]=-+h[l>>3];eB(c[f>>2]|0,133,0,c[k>>2]|0,0,l,-12)|0;i=m;return}function CA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;oA(c[h>>2]|0,c[g>>2]|0,c[f>>2]|0);i=e;return}function DA(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;f=q+32|0;g=q+28|0;h=q+24|0;j=q+20|0;o=q+16|0;l=q+12|0;k=q+8|0;m=q+4|0;n=q;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;c[h>>2]=Tx(c[h>>2]|0)|0;if(((d[(c[g>>2]|0)+23>>0]|0|0)!=0?(d[c[h>>2]>>0]|0|0)!=157:0)?(dB(c[h>>2]|0)|0)!=0:0){c[l>>2]=c[(c[g>>2]|0)+324>>2];c[c[j>>2]>>2]=0;a:do if(c[l>>2]|0){c[m>>2]=c[(c[l>>2]|0)+4>>2];c[k>>2]=c[c[l>>2]>>2];while(1){if((c[k>>2]|0)<=0)break a;if(((d[(c[m>>2]|0)+13>>0]|0)>>>2&1|0)!=0?(py(c[c[m>>2]>>2]|0,c[h>>2]|0,-1)|0)==0:0)break;c[m>>2]=(c[m>>2]|0)+20;c[k>>2]=(c[k>>2]|0)+-1}c[f>>2]=c[(c[m>>2]|0)+16>>2];p=c[f>>2]|0;i=q;return p|0}while(0);e=(c[g>>2]|0)+76|0;n=(c[e>>2]|0)+1|0;c[e>>2]=n;c[o>>2]=n;_A(c[g>>2]|0,c[h>>2]|0,c[o>>2]|0,1)}else p=12;do if((p|0)==12){c[n>>2]=Wz(c[g>>2]|0)|0;c[o>>2]=yA(c[g>>2]|0,c[h>>2]|0,c[n>>2]|0)|0;if((c[o>>2]|0)==(c[n>>2]|0)){c[c[j>>2]>>2]=c[n>>2];break}else{_z(c[g>>2]|0,c[n>>2]|0);c[c[j>>2]>>2]=0;break}}while(0);c[f>>2]=c[o>>2];p=c[f>>2]|0;i=q;return p|0}function EA(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;l=i;i=i+48|0;n=l+40|0;v=l+36|0;u=l+32|0;s=l+28|0;p=l+24|0;r=l+20|0;q=l+16|0;t=l+12|0;m=l+8|0;k=l+4|0;o=l;c[n>>2]=a;c[v>>2]=b;c[u>>2]=d;c[s>>2]=e;c[p>>2]=f;c[r>>2]=g;c[q>>2]=h;c[t>>2]=j;c[o>>2]=VA(c[n>>2]|0,c[v>>2]|0,c[u>>2]|0)|0;c[m>>2]=(cB(c[v>>2]|0,c[u>>2]|0,c[t>>2]|0)|0)&255;c[k>>2]=Uw(c[(c[n>>2]|0)+8>>2]|0,c[s>>2]|0,c[r>>2]|0,c[q>>2]|0,c[p>>2]|0,c[o>>2]|0,-4)|0;Fh(c[(c[n>>2]|0)+8>>2]|0,c[m>>2]&255);i=l;return c[k>>2]|0}function FA(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=$A(c[d>>2]|0,1,0)|0;i=b;return a|0}function GA(b,f,g,h,j){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;z=i;i=i+64|0;k=z+44|0;l=z+40|0;m=z+36|0;n=z+32|0;o=z+49|0;v=z+28|0;q=z+24|0;s=z+20|0;t=z+16|0;p=z+48|0;x=z+12|0;u=z+8|0;r=z+4|0;w=z;c[k>>2]=b;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;a[o>>0]=j;a[p>>0]=(d[o>>0]&1|0)!=0?30:31;c[x>>2]=c[(c[k>>2]|0)+8>>2];c[t>>2]=c[c[l>>2]>>2];if(!(a[(c[k>>2]|0)+23>>0]|0))a[o>>0]=d[o>>0]&-3;c[v>>2]=c[(c[l>>2]|0)+4>>2];c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[t>>2]|0))break;c[u>>2]=c[c[v>>2]>>2];if((d[o>>0]&4|0)!=0?(g=e[(c[(c[l>>2]|0)+4>>2]|0)+((c[q>>2]|0)*20|0)+16>>1]|0,c[s>>2]=g,(g|0)>0):0)Rw(c[x>>2]|0,d[p>>0]|0,(c[s>>2]|0)+(c[n>>2]|0)-1|0,(c[m>>2]|0)+(c[q>>2]|0)|0)|0;else y=8;do if((y|0)==8){y=0;if((d[o>>0]&2|0)!=0?(FA(c[u>>2]|0)|0)!=0:0){_A(c[k>>2]|0,c[u>>2]|0,(c[m>>2]|0)+(c[q>>2]|0)|0,0);break}c[r>>2]=yA(c[k>>2]|0,c[u>>2]|0,(c[m>>2]|0)+(c[q>>2]|0)|0)|0;if((c[r>>2]|0)!=((c[m>>2]|0)+(c[q>>2]|0)|0)){if((((d[p>>0]|0)==30?(g=Mz(c[x>>2]|0,-1)|0,c[w>>2]=g,(d[g>>0]|0)==30):0)?((c[(c[w>>2]|0)+4>>2]|0)+(c[(c[w>>2]|0)+12>>2]|0)+1|0)==(c[r>>2]|0):0)?((c[(c[w>>2]|0)+8>>2]|0)+(c[(c[w>>2]|0)+12>>2]|0)+1|0)==((c[m>>2]|0)+(c[q>>2]|0)|0):0){g=(c[w>>2]|0)+12|0;c[g>>2]=(c[g>>2]|0)+1;break}Rw(c[x>>2]|0,d[p>>0]|0,c[r>>2]|0,(c[m>>2]|0)+(c[q>>2]|0)|0)|0}}while(0);c[q>>2]=(c[q>>2]|0)+1;c[v>>2]=(c[v>>2]|0)+20}i=z;return c[t>>2]|0}function HA(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var 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;z=i;i=i+64|0;k=z+56|0;l=z+52|0;m=z+48|0;n=z+44|0;o=z+40|0;t=z+36|0;u=z+32|0;r=z+28|0;w=z+24|0;q=z+20|0;s=z+16|0;v=z+12|0;y=z+8|0;x=z+4|0;p=z;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;c[o>>2]=j;c[w>>2]=0;c[q>>2]=0;c[v>>2]=0;if(!(c[o>>2]|0)){c[k>>2]=c[m>>2];y=c[k>>2]|0;i=z;return y|0}if((d[c[o>>2]>>0]|0)!=152){c[k>>2]=c[m>>2];y=c[k>>2]|0;i=z;return y|0}c[t>>2]=c[(c[o>>2]|0)+44>>2];if(!(c[t>>2]|0)){c[k>>2]=c[m>>2];y=c[k>>2]|0;i=z;return y|0}if(!(d[(c[t>>2]|0)+42>>0]&16)){c[k>>2]=c[m>>2];y=c[k>>2]|0;i=z;return y|0}c[u>>2]=c[(Ax(c[l>>2]|0,c[t>>2]|0)|0)+8>>2];c[r>>2]=c[c[u>>2]>>2];if(!(c[(c[r>>2]|0)+72>>2]|0)){c[k>>2]=c[m>>2];y=c[k>>2]|0;i=z;return y|0}c[y>>2]=nh(c[l>>2]|0,c[(c[m>>2]|0)+20>>2]|0)|0;if(c[y>>2]|0){c[x>>2]=c[y>>2];while(1){if(!(a[c[x>>2]>>0]|0))break;a[c[x>>2]>>0]=a[18477+(d[c[x>>2]>>0]|0)>>0]|0;c[x>>2]=(c[x>>2]|0)+1}r=c[(c[r>>2]|0)+72>>2]|0;t=c[u>>2]|0;u=c[n>>2]|0;x=c[y>>2]|0;c[p>>2]=w;c[v>>2]=Zb[r&255](t,u,x,c[p>>2]|0,q)|0;Sf(c[l>>2]|0,c[y>>2]|0)}if(!(c[v>>2]|0)){c[k>>2]=c[m>>2];y=c[k>>2]|0;i=z;return y|0}y=c[l>>2]|0;c[s>>2]=ph(y,32+(If(c[(c[m>>2]|0)+20>>2]|0)|0)+1|0,0)|0;if(!(c[s>>2]|0)){c[k>>2]=c[m>>2];y=c[k>>2]|0;i=z;return y|0}else{x=c[s>>2]|0;y=c[m>>2]|0;c[x>>2]=c[y>>2];c[x+4>>2]=c[y+4>>2];c[x+8>>2]=c[y+8>>2];c[x+12>>2]=c[y+12>>2];c[x+16>>2]=c[y+16>>2];c[x+20>>2]=c[y+20>>2];c[x+24>>2]=c[y+24>>2];c[x+28>>2]=c[y+28>>2];c[(c[s>>2]|0)+20>>2]=(c[s>>2]|0)+32;x=c[(c[s>>2]|0)+20>>2]|0;y=c[(c[m>>2]|0)+20>>2]|0;iR(x|0,y|0,(If(c[(c[m>>2]|0)+20>>2]|0)|0)+1|0)|0;c[(c[s>>2]|0)+12>>2]=c[w>>2];c[(c[s>>2]|0)+4>>2]=c[q>>2];y=(c[s>>2]|0)+2|0;b[y>>1]=e[y>>1]|16;c[k>>2]=c[s>>2];y=c[k>>2]|0;i=z;return y|0}return 0}function IA(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var 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,J=0,K=0,L=0,M=0;M=i;i=i+160|0;k=M;t=M+140|0;u=M+136|0;v=M+132|0;w=M+128|0;x=M+124|0;C=M+120|0;J=M+116|0;K=M+112|0;l=M+108|0;z=M+144|0;y=M+104|0;n=M+100|0;F=M+96|0;s=M+92|0;p=M+72|0;q=M+68|0;A=M+64|0;r=M+60|0;E=M+56|0;G=M+52|0;H=M+48|0;I=M+44|0;D=M+40|0;B=M+36|0;o=M+32|0;m=M+12|0;c[u>>2]=f;c[v>>2]=g;c[w>>2]=h;c[x>>2]=j;c[C>>2]=-1;c[J>>2]=0;c[K>>2]=Pw(c[u>>2]|0)|0;if(!(c[K>>2]|0)){c[t>>2]=0;L=c[t>>2]|0;i=M;return L|0}iA(c[u>>2]|0);if(!(c[(c[v>>2]|0)+4>>2]&32))c[C>>2]=UA(c[u>>2]|0)|0;if((d[(c[u>>2]|0)+453>>0]|0)==2){h=c[c[u>>2]>>2]|0;g=(d[c[v>>2]>>0]|0)==75?32051:32056;f=c[(c[u>>2]|0)+472>>2]|0;c[k>>2]=(c[C>>2]|0)>=0?19266:32039;c[k+4>>2]=g;c[k+8>>2]=f;c[l>>2]=Bh(h,32063,k)|0;Uw(c[K>>2]|0,161,c[(c[u>>2]|0)+468>>2]|0,0,0,c[l>>2]|0,-1)|0}j=c[v>>2]|0;do if((d[c[v>>2]>>0]|0)==75){c[n>>2]=c[j+12>>2];c[F>>2]=0;a[z>>0]=Nx(c[n>>2]|0)|0;n=(c[u>>2]|0)+72|0;o=c[n>>2]|0;c[n>>2]=o+1;c[(c[v>>2]|0)+28>>2]=o;c[y>>2]=Rw(c[K>>2]|0,57,c[(c[v>>2]|0)+28>>2]|0,((c[x>>2]|0)!=0^1)&1)|0;if(c[x>>2]|0)j=0;else j=Qz(c[c[u>>2]>>2]|0,1,1)|0;c[F>>2]=j;j=(c[v>>2]|0)+20|0;do if(!(c[(c[v>>2]|0)+4>>2]&2048)){if(c[j>>2]|0){c[r>>2]=c[(c[v>>2]|0)+20>>2];if(!(a[z>>0]|0))a[z>>0]=65;if(c[F>>2]|0){s=Ox(c[u>>2]|0,c[(c[v>>2]|0)+12>>2]|0)|0;c[(c[F>>2]|0)+20>>2]=s}c[G>>2]=Wz(c[u>>2]|0)|0;c[H>>2]=Wz(c[u>>2]|0)|0;if(c[x>>2]|0)Rw(c[K>>2]|0,25,0,c[H>>2]|0)|0;c[A>>2]=c[c[r>>2]>>2];c[E>>2]=c[(c[r>>2]|0)+4>>2];while(1){if((c[A>>2]|0)<=0)break;c[D>>2]=c[c[E>>2]>>2];if((c[C>>2]|0)>=0?(FA(c[D>>2]|0)|0)==0:0){pA(c[K>>2]|0,c[C>>2]|0)|0;c[C>>2]=-1}if((c[x>>2]|0)!=0?(ky(c[D>>2]|0,B)|0)!=0:0)Vw(c[K>>2]|0,84,c[(c[v>>2]|0)+28>>2]|0,c[H>>2]|0,c[B>>2]|0)|0;else L=29;do if((L|0)==29){L=0;c[I>>2]=yA(c[u>>2]|0,c[D>>2]|0,c[G>>2]|0)|0;j=c[K>>2]|0;g=c[I>>2]|0;if(c[x>>2]|0){Rw(j,38,g,(Bz(c[K>>2]|0)|0)+2|0)|0;Vw(c[K>>2]|0,75,c[(c[v>>2]|0)+28>>2]|0,c[H>>2]|0,c[I>>2]|0)|0;break}else{Uw(j,49,g,1,c[H>>2]|0,z,1)|0;CA(c[u>>2]|0,c[I>>2]|0,1);Rw(c[K>>2]|0,110,c[(c[v>>2]|0)+28>>2]|0,c[H>>2]|0)|0;break}}while(0);c[A>>2]=(c[A>>2]|0)+-1;c[E>>2]=(c[E>>2]|0)+20}_z(c[u>>2]|0,c[G>>2]|0);_z(c[u>>2]|0,c[H>>2]|0)}}else{c[s>>2]=c[j>>2];ZA(p,11,c[(c[v>>2]|0)+28>>2]|0);a[p+1>>0]=a[z>>0]|0;c[(c[s>>2]|0)+8>>2]=0;if(!(Cv(c[u>>2]|0,c[s>>2]|0,p)|0)){c[q>>2]=c[c[s>>2]>>2];L=VA(c[u>>2]|0,c[(c[v>>2]|0)+12>>2]|0,c[c[(c[q>>2]|0)+4>>2]>>2]|0)|0;c[(c[F>>2]|0)+20>>2]=L;break}Rz(c[F>>2]|0);c[t>>2]=0;L=c[t>>2]|0;i=M;return L|0}while(0);if(c[F>>2]|0)Ih(c[K>>2]|0,c[y>>2]|0,c[F>>2]|0,-6)}else{c[o>>2]=c[j+20>>2];I=(c[u>>2]|0)+76|0;L=(c[I>>2]|0)+1|0;c[I>>2]=L;ZA(m,0,L);if((d[c[v>>2]>>0]|0)==119){a[m>>0]=10;c[m+8>>2]=c[m+4>>2];Rw(c[K>>2]|0,25,0,c[m+4>>2]|0)|0}else{a[m>>0]=3;Rw(c[K>>2]|0,22,0,c[m+4>>2]|0)|0}Zu(c[c[u>>2]>>2]|0,c[(c[o>>2]|0)+60>>2]|0);L=rv(c[u>>2]|0,132,0,0,5100)|0;c[(c[o>>2]|0)+60>>2]=L;c[(c[o>>2]|0)+8>>2]=0;L=(c[o>>2]|0)+6|0;b[L>>1]=e[L>>1]&-513;if(!(Cv(c[u>>2]|0,c[o>>2]|0,m)|0)){c[J>>2]=c[m+4>>2];break}c[t>>2]=0;L=c[t>>2]|0;i=M;return L|0}while(0);if(c[w>>2]|0)XA(c[K>>2]|0,c[(c[v>>2]|0)+28>>2]|0,c[w>>2]|0);if((c[C>>2]|0)>=0)Fz(c[K>>2]|0,c[C>>2]|0);gA(c[u>>2]|0);c[t>>2]=c[J>>2];L=c[t>>2]|0;i=M;return L|0}function JA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=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;z=i;i=i+80|0;s=z+64|0;r=z+60|0;t=z+56|0;u=z+52|0;x=z+48|0;p=z+68|0;q=z+44|0;w=z+40|0;y=z+36|0;k=z+32|0;j=z+28|0;h=z+24|0;l=z+20|0;n=z+16|0;m=z+12|0;g=z+8|0;o=z+4|0;v=z;c[s>>2]=b;c[r>>2]=d;c[t>>2]=e;c[u>>2]=f;c[x>>2]=0;c[y>>2]=c[(c[s>>2]|0)+8>>2];c[q>>2]=PA(c[s>>2]|0,c[r>>2]|0,3,(c[t>>2]|0)==(c[u>>2]|0)?0:x)|0;a[p>>0]=QA(c[r>>2]|0)|0;iA(c[s>>2]|0);c[w>>2]=Wz(c[s>>2]|0)|0;xA(c[s>>2]|0,c[(c[r>>2]|0)+12>>2]|0,c[w>>2]|0);e=c[r>>2]|0;if((c[q>>2]|0)!=5){do if(RA(c[e+12>>2]|0)|0){e=c[y>>2]|0;f=c[w>>2]|0;if((c[u>>2]|0)==(c[t>>2]|0)){Rw(e,76,f,c[u>>2]|0)|0;break}else{c[o>>2]=xz(e,77,f)|0;Rw(c[y>>2]|0,108,c[(c[r>>2]|0)+28>>2]|0,c[t>>2]|0)|0;Ez(c[y>>2]|0,c[u>>2]|0)|0;Fz(c[y>>2]|0,c[o>>2]|0);break}}while(0);e=c[y>>2]|0;f=c[w>>2]|0;if((c[q>>2]|0)==1){Rw(e,38,f,c[t>>2]|0)|0;Vw(c[y>>2]|0,70,c[(c[r>>2]|0)+28>>2]|0,c[t>>2]|0,c[w>>2]|0)|0;x=c[s>>2]|0;y=c[w>>2]|0;_z(x,y);y=c[s>>2]|0;gA(y);i=z;return}Uw(e,48,f,1,0,p,1)|0;f=c[y>>2]|0;e=c[(c[r>>2]|0)+28>>2]|0;if(!(c[x>>2]|0)){Eh(f,68,e,c[t>>2]|0,c[w>>2]|0,1)|0;x=c[s>>2]|0;y=c[w>>2]|0;_z(x,y);y=c[s>>2]|0;gA(y);i=z;return}else{c[v>>2]=Eh(f,69,e,0,c[w>>2]|0,1)|0;Rw(c[y>>2]|0,76,c[x>>2]|0,c[u>>2]|0)|0;Ez(c[y>>2]|0,c[t>>2]|0)|0;Fz(c[y>>2]|0,c[v>>2]|0);x=c[s>>2]|0;y=c[w>>2]|0;_z(x,y);y=c[s>>2]|0;gA(y);i=z;return}}c[k>>2]=c[e+20>>2];c[j>>2]=Ox(c[s>>2]|0,c[(c[r>>2]|0)+12>>2]|0)|0;c[h>>2]=Cz(c[y>>2]|0)|0;c[m>>2]=0;if((c[u>>2]|0)!=(c[t>>2]|0)){c[m>>2]=Wz(c[s>>2]|0)|0;Vw(c[y>>2]|0,85,c[w>>2]|0,c[w>>2]|0,c[m>>2]|0)|0}c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[c[k>>2]>>2]|0))break;c[l>>2]=DA(c[s>>2]|0,c[(c[(c[k>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0)>>2]|0,n)|0;if((c[m>>2]|0)!=0?(RA(c[(c[(c[k>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0)>>2]|0)|0)!=0:0)Vw(c[y>>2]|0,85,c[m>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;if((c[g>>2]|0)>=((c[c[k>>2]>>2]|0)-1|0)?(c[u>>2]|0)==(c[t>>2]|0):0){Uw(c[y>>2]|0,78,c[w>>2]|0,c[t>>2]|0,c[l>>2]|0,c[j>>2]|0,-4)|0;Fh(c[y>>2]|0,(a[p>>0]|16)&255)}else{Uw(c[y>>2]|0,79,c[w>>2]|0,c[h>>2]|0,c[l>>2]|0,c[j>>2]|0,-4)|0;Fh(c[y>>2]|0,a[p>>0]|0)}_z(c[s>>2]|0,c[n>>2]|0);c[g>>2]=(c[g>>2]|0)+1}if(c[m>>2]|0){Rw(c[y>>2]|0,76,c[m>>2]|0,c[u>>2]|0)|0;Ez(c[y>>2]|0,c[t>>2]|0)|0}Gz(c[y>>2]|0,c[h>>2]|0);_z(c[s>>2]|0,c[m>>2]|0);x=c[s>>2]|0;y=c[w>>2]|0;_z(x,y);y=c[s>>2]|0;gA(y);i=z;return}function KA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;a[(c[f>>2]|0)+38>>0]=a[c[f>>2]>>0]|0;a[c[f>>2]>>0]=-99;c[(c[f>>2]|0)+28>>2]=c[g>>2];b=(c[f>>2]|0)+4|0;c[b>>2]=c[b>>2]&-4097;i=e;return}function LA(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;g=t+44|0;h=t+40|0;j=t+36|0;k=t+32|0;s=t+28|0;n=t+24|0;q=t+20|0;r=t+16|0;o=t+12|0;p=t+8|0;l=t+4|0;m=t;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[s>>2]=c[(c[g>>2]|0)+8>>2];c[n>>2]=0;c[q>>2]=0;c[r>>2]=0;if((c[s>>2]|0)==0|(c[h>>2]|0)==0){i=t;return}c[n>>2]=((d[c[h>>2]>>0]|0)+0^1)-0;a:do switch(d[c[h>>2]>>0]|0|0){case 72:{LA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[j>>2]|0,c[k>>2]|0);iA(c[g>>2]|0);LA(c[g>>2]|0,c[(c[h>>2]|0)+16>>2]|0,c[j>>2]|0,c[k>>2]|0);gA(c[g>>2]|0);break}case 71:{c[l>>2]=Cz(c[s>>2]|0)|0;MA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[l>>2]|0,c[k>>2]^16);iA(c[g>>2]|0);LA(c[g>>2]|0,c[(c[h>>2]|0)+16>>2]|0,c[j>>2]|0,c[k>>2]|0);Gz(c[s>>2]|0,c[l>>2]|0);gA(c[g>>2]|0);break}case 19:{MA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[j>>2]|0,c[k>>2]|0);break}case 79:case 78:case 83:case 80:case 81:case 82:{c[o>>2]=DA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,q)|0;c[p>>2]=DA(c[g>>2]|0,c[(c[h>>2]|0)+16>>2]|0,r)|0;EA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[(c[h>>2]|0)+16>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;break}case 148:case 73:{c[o>>2]=DA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,q)|0;c[p>>2]=DA(c[g>>2]|0,c[(c[h>>2]|0)+16>>2]|0,r)|0;c[n>>2]=(d[c[h>>2]>>0]|0|0)==73?78:79;EA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[(c[h>>2]|0)+16>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[j>>2]|0,128)|0;break}case 77:case 76:{c[o>>2]=DA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,q)|0;Rw(c[s>>2]|0,c[n>>2]|0,c[o>>2]|0,c[j>>2]|0)|0;break}case 74:{NA(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,0,c[k>>2]|0);break}case 75:if(c[k>>2]|0){JA(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,c[j>>2]|0);break a}else{c[m>>2]=Cz(c[s>>2]|0)|0;JA(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,c[m>>2]|0);Gz(c[s>>2]|0,c[m>>2]|0);break a}default:{if(bz(c[h>>2]|0)|0){Ez(c[s>>2]|0,c[j>>2]|0)|0;break a}if(!(OA(c[h>>2]|0)|0)){c[o>>2]=DA(c[g>>2]|0,c[h>>2]|0,q)|0;Vw(c[s>>2]|0,46,c[o>>2]|0,c[j>>2]|0,(c[k>>2]|0)!=0&1)|0}}}while(0);_z(c[g>>2]|0,c[q>>2]|0);_z(c[g>>2]|0,c[r>>2]|0);i=t;return}function MA(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=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;u=i;i=i+64|0;g=u+48|0;h=u+44|0;j=u+40|0;k=u+36|0;t=u+32|0;o=u+28|0;r=u+24|0;s=u+20|0;p=u+16|0;q=u+12|0;l=u+8|0;m=u+4|0;n=u;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[t>>2]=c[(c[g>>2]|0)+8>>2];c[o>>2]=0;c[r>>2]=0;c[s>>2]=0;if((c[t>>2]|0)==0|(c[h>>2]|0)==0){i=u;return}c[o>>2]=d[c[h>>2]>>0];a:do switch(c[o>>2]|0){case 72:{c[l>>2]=Cz(c[t>>2]|0)|0;LA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[l>>2]|0,c[k>>2]^16);iA(c[g>>2]|0);MA(c[g>>2]|0,c[(c[h>>2]|0)+16>>2]|0,c[j>>2]|0,c[k>>2]|0);Gz(c[t>>2]|0,c[l>>2]|0);gA(c[g>>2]|0);break}case 71:{MA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[j>>2]|0,c[k>>2]|0);iA(c[g>>2]|0);MA(c[g>>2]|0,c[(c[h>>2]|0)+16>>2]|0,c[j>>2]|0,c[k>>2]|0);gA(c[g>>2]|0);break}case 19:{LA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[j>>2]|0,c[k>>2]|0);break}case 79:case 78:case 83:case 80:case 81:case 82:{c[p>>2]=DA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,r)|0;c[q>>2]=DA(c[g>>2]|0,c[(c[h>>2]|0)+16>>2]|0,s)|0;EA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[(c[h>>2]|0)+16>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;break}case 148:case 73:{c[p>>2]=DA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,r)|0;c[q>>2]=DA(c[g>>2]|0,c[(c[h>>2]|0)+16>>2]|0,s)|0;c[o>>2]=(c[o>>2]|0)==73?79:78;EA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[(c[h>>2]|0)+16>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[j>>2]|0,128)|0;break}case 77:case 76:{c[p>>2]=DA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,r)|0;Rw(c[t>>2]|0,c[o>>2]|0,c[p>>2]|0,c[j>>2]|0)|0;break}case 74:{NA(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,1,c[k>>2]|0);break}case 75:{c[m>>2]=Cz(c[t>>2]|0)|0;c[n>>2]=(c[k>>2]|0)!=0?c[j>>2]|0:c[m>>2]|0;JA(c[g>>2]|0,c[h>>2]|0,c[m>>2]|0,c[n>>2]|0);Ez(c[t>>2]|0,c[j>>2]|0)|0;Gz(c[t>>2]|0,c[m>>2]|0);break}default:{if(OA(c[h>>2]|0)|0){Ez(c[t>>2]|0,c[j>>2]|0)|0;break a}if(!(bz(c[h>>2]|0)|0)){c[p>>2]=DA(c[g>>2]|0,c[h>>2]|0,r)|0;Vw(c[t>>2]|0,45,c[p>>2]|0,c[j>>2]|0,(c[k>>2]|0)!=0&1)|0}}}while(0);_z(c[g>>2]|0,c[r>>2]|0);_z(c[g>>2]|0,c[s>>2]|0);i=u;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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+224|0;o=s+216|0;h=s+212|0;m=s+208|0;p=s+204|0;n=s+200|0;q=s+152|0;j=s+104|0;k=s+56|0;l=s+8|0;r=s;c[o>>2]=b;c[h>>2]=d;c[m>>2]=e;c[p>>2]=f;c[n>>2]=g;c[r>>2]=0;e=l;g=c[(c[h>>2]|0)+12>>2]|0;f=e+48|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(f|0));a[q>>0]=72;c[q+12>>2]=j;c[q+16>>2]=k;a[j>>0]=83;c[j+12>>2]=l;c[j+16>>2]=c[c[(c[(c[h>>2]|0)+20>>2]|0)+4>>2]>>2];a[k>>0]=81;c[k+12>>2]=l;c[k+16>>2]=c[(c[(c[(c[h>>2]|0)+20>>2]|0)+4>>2]|0)+20>>2];KA(l,DA(c[o>>2]|0,l,r)|0);f=c[o>>2]|0;g=c[m>>2]|0;e=c[n>>2]|0;if(c[p>>2]|0){MA(f,q,g,e);q=c[o>>2]|0;r=c[r>>2]|0;_z(q,r);i=s;return}else{LA(f,q,g,e);q=c[o>>2]|0;r=c[r>>2]|0;_z(q,r);i=s;return}}function OA(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=0;do if(!(c[(c[d>>2]|0)+4>>2]&1))if(ky(c[d>>2]|0,e)|0){c[b>>2]=(c[e>>2]|0)!=0&1;break}else{c[b>>2]=0;break}else c[b>>2]=0;while(0);i=f;return c[b>>2]|0}function PA(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var 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;F=i;i=i+80|0;l=F+72|0;m=F+68|0;n=F+64|0;o=F+60|0;k=F+56|0;r=F+52|0;w=F+48|0;x=F+44|0;E=F+40|0;q=F+36|0;B=F+32|0;y=F+28|0;u=F+78|0;v=F+76|0;s=F+24|0;z=F+20|0;A=F+16|0;p=F+12|0;t=F+8|0;D=F+4|0;C=F;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;c[o>>2]=j;c[r>>2]=0;g=(c[l>>2]|0)+72|0;j=c[g>>2]|0;c[g>>2]=j+1;c[w>>2]=j;c[E>>2]=Pw(c[l>>2]|0)|0;c[x>>2]=(c[n>>2]&4|0)!=0&1;if(c[(c[m>>2]|0)+4>>2]&2048)h=c[(c[m>>2]|0)+20>>2]|0;else h=0;c[k>>2]=h;a:do if((c[(c[l>>2]|0)+68>>2]|0)==0?(TA(c[k>>2]|0)|0)!=0:0){c[q>>2]=c[c[l>>2]>>2];c[B>>2]=c[(c[(c[k>>2]|0)+32>>2]|0)+8+16>>2];c[y>>2]=c[c[(c[c[k>>2]>>2]|0)+4>>2]>>2];b[u>>1]=b[(c[y>>2]|0)+32>>1]|0;b[v>>1]=Dh(c[q>>2]|0,c[(c[B>>2]|0)+64>>2]|0)|0;bx(c[l>>2]|0,b[v>>1]|0);yz(c[l>>2]|0,b[v>>1]|0,c[(c[B>>2]|0)+28>>2]|0,0,c[c[B>>2]>>2]|0);h=c[l>>2]|0;if((b[u>>1]|0)<0){c[s>>2]=UA(h)|0;zz(c[l>>2]|0,c[w>>2]|0,b[v>>1]|0,c[B>>2]|0,54);c[r>>2]=1;Fz(c[E>>2]|0,c[s>>2]|0);break}c[A>>2]=VA(h,c[(c[m>>2]|0)+12>>2]|0,c[y>>2]|0)|0;c[p>>2]=WA(c[m>>2]|0,a[(c[(c[B>>2]|0)+4>>2]|0)+((b[u>>1]|0)*24|0)+21>>0]|0)|0;c[z>>2]=c[(c[B>>2]|0)+8>>2];while(1){if(!((c[z>>2]|0)!=0&(c[r>>2]|0)==0&(c[p>>2]|0)!=0))break a;do if((b[c[(c[z>>2]|0)+4>>2]>>1]|0)==(b[u>>1]|0)?(y=Mj(c[q>>2]|0,a[(c[q>>2]|0)+62>>0]|0,c[c[(c[z>>2]|0)+32>>2]>>2]|0,0)|0,(y|0)==(c[A>>2]|0)):0){if(c[x>>2]|0){if((e[(c[z>>2]|0)+50>>1]|0)!=1)break;if(!(d[(c[z>>2]|0)+54>>0]|0))break}c[t>>2]=UA(c[l>>2]|0)|0;Vw(c[E>>2]|0,54,c[w>>2]|0,c[(c[z>>2]|0)+44>>2]|0,b[v>>1]|0)|0;Az(c[l>>2]|0,c[z>>2]|0);c[r>>2]=3+(d[c[(c[z>>2]|0)+28>>2]>>0]|0);if((c[o>>2]|0)!=0?(a[(c[(c[B>>2]|0)+4>>2]|0)+((b[u>>1]|0)*24|0)+20>>0]|0)==0:0){s=(c[l>>2]|0)+76|0;y=(c[s>>2]|0)+1|0;c[s>>2]=y;c[c[o>>2]>>2]=y;XA(c[E>>2]|0,c[w>>2]|0,c[c[o>>2]>>2]|0)}Fz(c[E>>2]|0,c[t>>2]|0)}while(0);c[z>>2]=c[(c[z>>2]|0)+20>>2]}}while(0);do if(((c[r>>2]|0)==0?(c[n>>2]&1|0)!=0:0)?(c[(c[m>>2]|0)+4>>2]&2048|0)==0:0){if((YA(c[m>>2]|0)|0)!=0?(c[c[(c[m>>2]|0)+20>>2]>>2]|0)>2:0)break;c[r>>2]=5}while(0);if(c[r>>2]|0){c[(c[m>>2]|0)+28>>2]=c[w>>2];E=c[r>>2]|0;i=F;return E|0}c[D>>2]=c[(c[l>>2]|0)+428>>2];c[C>>2]=0;c[r>>2]=2;if(c[n>>2]&4){c[(c[l>>2]|0)+428>>2]=0;if((b[(c[(c[m>>2]|0)+12>>2]|0)+32>>1]|0)<0?(c[(c[m>>2]|0)+4>>2]&2048|0)==0:0)c[r>>2]=1}else if(c[o>>2]|0){B=(c[l>>2]|0)+76|0;E=(c[B>>2]|0)+1|0;c[B>>2]=E;c[C>>2]=E;c[c[o>>2]>>2]=E}IA(c[l>>2]|0,c[m>>2]|0,c[C>>2]|0,(c[r>>2]|0)==1&1)|0;c[(c[l>>2]|0)+428>>2]=c[D>>2];E=c[r>>2]|0;i=F;return E|0}function QA(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f;e=f+4|0;c[d>>2]=b;a[e>>0]=Nx(c[(c[d>>2]|0)+12>>2]|0)|0;b=c[d>>2]|0;if(c[(c[d>>2]|0)+16>>2]|0){a[e>>0]=SA(c[b+16>>2]|0,a[e>>0]|0)|0;e=a[e>>0]|0;i=f;return e|0}if(c[b+4>>2]&2048){a[e>>0]=SA(c[c[(c[c[(c[d>>2]|0)+20>>2]>>2]|0)+4>>2]>>2]|0,a[e>>0]|0)|0;e=a[e>>0]|0;i=f;return e|0}if(a[e>>0]|0){e=a[e>>0]|0;i=f;return e|0}a[e>>0]=65;e=a[e>>0]|0;i=f;return e|0}function RA(e){e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k+4|0;g=k;h=k+8|0;c[g>>2]=e;while(1){if((d[c[g>>2]>>0]|0)==156)f=1;else f=(d[c[g>>2]>>0]|0)==155;e=c[g>>2]|0;if(!f)break;c[g>>2]=c[e+12>>2]}a[h>>0]=a[e>>0]|0;if((d[h>>0]|0)==157)a[h>>0]=a[(c[g>>2]|0)+38>>0]|0;switch(d[h>>0]|0){case 134:case 133:case 97:case 132:{c[j>>2]=0;j=c[j>>2]|0;i=k;return j|0}case 152:{if(!(c[(c[g>>2]|0)+4>>2]&1048576))if((b[(c[g>>2]|0)+32>>1]|0)>=0)e=(d[(c[(c[(c[g>>2]|0)+44>>2]|0)+4>>2]|0)+((b[(c[g>>2]|0)+32>>1]|0)*24|0)+20>>0]|0)==0;else e=0;else e=1;c[j>>2]=e&1;j=c[j>>2]|0;i=k;return j|0}default:{c[j>>2]=1;j=c[j>>2]|0;i=k;return j|0}}return 0}function SA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;e=h+6|0;j=h;f=h+5|0;g=h+4|0;c[j>>2]=b;a[f>>0]=d;a[g>>0]=Nx(c[j>>2]|0)|0;if((a[g>>0]|0)!=0?(a[f>>0]|0)!=0:0){if((a[g>>0]|0)<67?(a[f>>0]|0)<67:0){a[e>>0]=65;j=a[e>>0]|0;i=h;return j|0}a[e>>0]=67;j=a[e>>0]|0;i=h;return j|0}if((a[g>>0]|0)!=0|(a[f>>0]|0)!=0){a[e>>0]=(a[g>>0]|0)+(a[f>>0]|0);j=a[e>>0]|0;i=h;return j|0}else{a[e>>0]=65;j=a[e>>0]|0;i=h;return j|0}return 0}function TA(a){a=a|0;var b=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;b=k+16|0;f=k+12|0;h=k+8|0;g=k+4|0;j=k;c[f>>2]=a;do if(c[f>>2]|0){if(c[(c[f>>2]|0)+52>>2]|0){c[b>>2]=0;break}if((e[(c[f>>2]|0)+6>>1]|0)&9){c[b>>2]=0;break}if(c[(c[f>>2]|0)+60>>2]|0){c[b>>2]=0;break}if(c[(c[f>>2]|0)+36>>2]|0){c[b>>2]=0;break}c[h>>2]=c[(c[f>>2]|0)+32>>2];if((c[c[h>>2]>>2]|0)!=1){c[b>>2]=0;break}if(c[(c[h>>2]|0)+8+20>>2]|0){c[b>>2]=0;break}c[j>>2]=c[(c[h>>2]|0)+8+16>>2];if(!(c[j>>2]|0)){c[b>>2]=0;break}if((d[(c[j>>2]|0)+42>>0]|0)&16){c[b>>2]=0;break}c[g>>2]=c[c[f>>2]>>2];if((c[c[g>>2]>>2]|0)!=1){c[b>>2]=0;break}if((d[c[c[(c[g>>2]|0)+4>>2]>>2]>>0]|0|0)!=152){c[b>>2]=0;break}else{c[b>>2]=1;break}}else c[b>>2]=0;while(0);i=k;return c[b>>2]|0}function UA(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=Pw(c[e>>2]|0)|0;d=c[d>>2]|0;e=(c[e>>2]|0)+84|0;a=c[e>>2]|0;c[e>>2]=a+1;a=xz(d,44,a)|0;i=b;return a|0}function VA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(c[(c[f>>2]|0)+4>>2]&256){c[h>>2]=Ox(c[e>>2]|0,c[f>>2]|0)|0;d=c[h>>2]|0;i=j;return d|0}if((c[g>>2]|0)!=0?(c[(c[g>>2]|0)+4>>2]&256|0)!=0:0){c[h>>2]=Ox(c[e>>2]|0,c[g>>2]|0)|0;d=c[h>>2]|0;i=j;return d|0}c[h>>2]=Ox(c[e>>2]|0,c[f>>2]|0)|0;if(c[h>>2]|0){d=c[h>>2]|0;i=j;return d|0}c[h>>2]=Ox(c[e>>2]|0,c[g>>2]|0)|0;d=c[h>>2]|0;i=j;return d|0}function WA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+16|0;e=g+4|0;j=g;f=g+9|0;h=g+8|0;c[j>>2]=b;a[f>>0]=d;a[h>>0]=QA(c[j>>2]|0)|0;switch(a[h>>0]|0){case 65:{c[e>>2]=1;break}case 66:{c[e>>2]=(a[f>>0]|0)==66&1;break}default:c[e>>2]=(a[f>>0]|0)>=67&1}i=g;return c[e>>2]|0}function XA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;g=e+12|0;j=e+8|0;h=e+4|0;f=e;c[g>>2]=a;c[j>>2]=b;c[h>>2]=d;Rw(c[g>>2]|0,22,0,c[h>>2]|0)|0;c[f>>2]=xz(c[g>>2]|0,108,c[j>>2]|0)|0;Vw(c[g>>2]|0,47,c[j>>2]|0,0,c[h>>2]|0)|0;Fh(c[g>>2]|0,-128);Fz(c[g>>2]|0,c[f>>2]|0);i=e;return}function YA(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;e=d+8|0;f=d+4|0;b=d;c[e>>2]=a;c[f>>2]=c[(c[e>>2]|0)+12>>2];c[(c[e>>2]|0)+12>>2]=0;c[b>>2]=FA(c[e>>2]|0)|0;c[(c[e>>2]|0)+12>>2]=c[f>>2];i=d;return c[b>>2]|0}function ZA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+8|0;j=f+4|0;h=f;c[g>>2]=b;c[j>>2]=d;c[h>>2]=e;a[c[g>>2]>>0]=c[j>>2];c[(c[g>>2]|0)+4>>2]=c[h>>2];a[(c[g>>2]|0)+1>>0]=0;c[(c[g>>2]|0)+8>>2]=0;c[(c[g>>2]|0)+12>>2]=0;i=f;return}function _A(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;h=n+16|0;o=n+12|0;j=n+8|0;k=n+20|0;l=n+4|0;m=n;c[h>>2]=b;c[o>>2]=e;c[j>>2]=f;a[k>>0]=g;c[l>>2]=c[(c[h>>2]|0)+324>>2];c[o>>2]=ny(c[c[h>>2]>>2]|0,c[o>>2]|0,0)|0;c[l>>2]=Gv(c[h>>2]|0,c[l>>2]|0,c[o>>2]|0)|0;if(!(c[l>>2]|0)){g=c[l>>2]|0;o=c[h>>2]|0;o=o+324|0;c[o>>2]=g;i=n;return}c[m>>2]=(c[(c[l>>2]|0)+4>>2]|0)+(((c[c[l>>2]>>2]|0)-1|0)*20|0);c[(c[m>>2]|0)+16>>2]=c[j>>2];g=(c[m>>2]|0)+13|0;a[g>>0]=a[g>>0]&-5|((d[k>>0]|0)&1)<<2&255;g=c[l>>2]|0;o=c[h>>2]|0;o=o+324|0;c[o>>2]=g;i=n;return}function $A(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;h=i;i=i+48|0;j=h+36|0;l=h+32|0;k=h+28|0;g=h;c[j>>2]=b;c[l>>2]=e;c[k>>2]=f;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;a[g+20>>0]=c[l>>2];c[g+4>>2]=197;c[g+8>>2]=198;c[g+24>>2]=c[k>>2];by(g,c[j>>2]|0)|0;i=h;return d[g+20>>0]|0|0}function aB(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+8|0;g=k+4|0;h=k;c[g>>2]=b;c[h>>2]=e;if((d[(c[g>>2]|0)+20>>0]|0|0)==2?(c[(c[h>>2]|0)+4>>2]&1|0)!=0:0){a[(c[g>>2]|0)+20>>0]=0;c[f>>2]=2}else j=4;a:do if((j|0)==4){b:do switch(d[c[h>>2]>>0]|0|0){case 151:{if((d[(c[g>>2]|0)+20>>0]|0|0)<4?(c[(c[h>>2]|0)+4>>2]&524288|0)==0:0){a[(c[g>>2]|0)+20>>0]=0;c[f>>2]=2;break a}c[f>>2]=0;break a}case 154:case 153:case 152:case 27:{if((d[(c[g>>2]|0)+20>>0]|0|0)==3?(c[(c[h>>2]|0)+28>>2]|0)==(c[(c[g>>2]|0)+24>>2]|0):0){c[f>>2]=0;break a}a[(c[g>>2]|0)+20>>0]=0;c[f>>2]=2;break a}case 135:{if((d[(c[g>>2]|0)+20>>0]|0|0)==5){a[c[h>>2]>>0]=101;break b}if((d[(c[g>>2]|0)+20>>0]|0|0)==4){a[(c[g>>2]|0)+20>>0]=0;c[f>>2]=2;break a}break}default:{}}while(0);c[f>>2]=0}while(0);i=k;return c[f>>2]|0}function bB(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e+4|0;c[f>>2]=b;c[e>>2]=d;a[(c[f>>2]|0)+20>>0]=0;i=e;return 2}function cB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;g=i;i=i+16|0;j=g+8|0;k=g+4|0;h=g;f=g+12|0;c[j>>2]=b;c[k>>2]=d;c[h>>2]=e;a[f>>0]=Nx(c[k>>2]|0)|0;d=(SA(c[j>>2]|0,a[f>>0]|0)|0)&255;a[f>>0]=d|c[h>>2]&255;i=g;return a[f>>0]|0}function dB(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=$A(c[d>>2]|0,2,0)|0;i=b;return a|0}function eB(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+32|0;k=s+28|0;l=s+24|0;m=s+20|0;n=s+16|0;o=s+12|0;p=s+8|0;q=s+4|0;r=s;c[k>>2]=b;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=j;c[r>>2]=Fw(wA(c[k>>2]|0)|0,8,0)|0;if(c[r>>2]|0){h=c[r>>2]|0;j=c[p>>2]|0;a[h>>0]=a[j>>0]|0;a[h+1>>0]=a[j+1>>0]|0;a[h+2>>0]=a[j+2>>0]|0;a[h+3>>0]=a[j+3>>0]|0;a[h+4>>0]=a[j+4>>0]|0;a[h+5>>0]=a[j+5>>0]|0;a[h+6>>0]=a[j+6>>0]|0;a[h+7>>0]=a[j+7>>0]|0}h=Uw(c[k>>2]|0,c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[r>>2]|0,c[q>>2]|0)|0;i=s;return h|0}function fB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;j=h+12|0;e=h+8|0;f=h+4|0;g=h;c[j>>2]=b;c[e>>2]=d;c[f>>2]=0;c[g>>2]=(c[j>>2]|0)+124;while(1){if((c[f>>2]|0)>=10)break;if((c[(c[g>>2]|0)+12>>2]|0)==(c[e>>2]|0))a[(c[g>>2]|0)+6>>0]=0;c[f>>2]=(c[f>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+20}i=h;return}function gB(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+32|0;j=s+28|0;k=s+24|0;l=s+20|0;m=s+16|0;n=s+12|0;p=s+8|0;o=s+4|0;q=s;c[j>>2]=d;c[k>>2]=f;c[l>>2]=g;c[m>>2]=h;if((e[(c[c[j>>2]>>2]|0)+60>>1]|0)&2){i=s;return}c[n>>2]=0;c[q>>2]=(c[j>>2]|0)+124;while(1){if((c[n>>2]|0)>=10)break;if(!(c[(c[q>>2]|0)+12>>2]|0)){r=5;break}c[n>>2]=(c[n>>2]|0)+1;c[q>>2]=(c[q>>2]|0)+20}if((r|0)==5){c[(c[q>>2]|0)+8>>2]=c[(c[j>>2]|0)+108>>2];c[c[q>>2]>>2]=c[k>>2];b[(c[q>>2]|0)+4>>1]=c[l>>2];c[(c[q>>2]|0)+12>>2]=c[m>>2];a[(c[q>>2]|0)+6>>0]=0;d=(c[j>>2]|0)+112|0;r=c[d>>2]|0;c[d>>2]=r+1;c[(c[q>>2]|0)+16>>2]=r;i=s;return}c[p>>2]=2147483647;c[o>>2]=-1;c[n>>2]=0;c[q>>2]=(c[j>>2]|0)+124;while(1){if((c[n>>2]|0)>=10)break;if((c[(c[q>>2]|0)+16>>2]|0)<(c[p>>2]|0)){c[o>>2]=c[n>>2];c[p>>2]=c[(c[q>>2]|0)+16>>2]}c[n>>2]=(c[n>>2]|0)+1;c[q>>2]=(c[q>>2]|0)+20}if((c[o>>2]|0)<0){i=s;return}c[q>>2]=(c[j>>2]|0)+124+((c[o>>2]|0)*20|0);c[(c[q>>2]|0)+8>>2]=c[(c[j>>2]|0)+108>>2];c[c[q>>2]>>2]=c[k>>2];b[(c[q>>2]|0)+4>>1]=c[l>>2];c[(c[q>>2]|0)+12>>2]=c[m>>2];a[(c[q>>2]|0)+6>>0]=0;d=(c[j>>2]|0)+112|0;r=c[d>>2]|0;c[d>>2]=r+1;c[(c[q>>2]|0)+16>>2]=r;i=s;return}function hB(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;k=l+16|0;f=l+12|0;g=l+8|0;h=l+4|0;j=l;c[f>>2]=a;c[g>>2]=d;c[h>>2]=0;while(1){if((c[h>>2]|0)>=(e[(c[g>>2]|0)+52>>1]|0)){f=7;break}c[j>>2]=c[(c[(c[g>>2]|0)+32>>2]|0)+(c[h>>2]<<2)>>2];if((b[(c[(c[g>>2]|0)+4>>2]|0)+(c[h>>2]<<1)>>1]|0)>=0?0==(Td(c[j>>2]|0,c[f>>2]|0)|0):0){f=5;break}c[h>>2]=(c[h>>2]|0)+1}if((f|0)==5){c[k>>2]=1;k=c[k>>2]|0;i=l;return k|0}else if((f|0)==7){c[k>>2]=0;k=c[k>>2]|0;i=l;return k|0}return 0}function iB(a,e,f,g,h,j,k){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;y=i;i=i+80|0;l=y+76|0;m=y+72|0;n=y+68|0;o=y+64|0;p=y+60|0;q=y+56|0;r=y+52|0;t=y+48|0;v=y+16|0;w=y+12|0;s=y+8|0;u=y+4|0;x=y;c[l>>2]=a;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=j;c[r>>2]=k;c[s>>2]=c[c[l>>2]>>2];c[v>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[v+12>>2]=0;c[v+16>>2]=0;c[v+20>>2]=0;c[v+24>>2]=0;c[v+28>>2]=0;c[v>>2]=c[l>>2];e=jB(v,c[p>>2]|0)|0;c[t>>2]=e;do if((0==(e|0)?(e=jB(v,c[q>>2]|0)|0,c[t>>2]=e,0==(e|0)):0)?(e=jB(v,c[r>>2]|0)|0,c[t>>2]=e,0==(e|0)):0){if(c[o>>2]|0){if((d[c[o>>2]>>0]|0)==97)c[x>>2]=c[(c[o>>2]|0)+8>>2];else c[x>>2]=0;c[t>>2]=Mw(c[l>>2]|0,c[m>>2]|0,c[x>>2]|0,0,0)|0;if(c[t>>2]|0)break}c[w>>2]=Pw(c[l>>2]|0)|0;c[u>>2]=kA(c[l>>2]|0,4)|0;xA(c[l>>2]|0,c[p>>2]|0,c[u>>2]|0);xA(c[l>>2]|0,c[q>>2]|0,(c[u>>2]|0)+1|0);xA(c[l>>2]|0,c[r>>2]|0,(c[u>>2]|0)+2|0);if(c[w>>2]|0){Uw(c[w>>2]|0,35,0,(c[u>>2]|0)+3-(b[c[n>>2]>>1]|0)|0,(c[u>>2]|0)+3|0,c[n>>2]|0,-5)|0;Fh(c[w>>2]|0,b[c[n>>2]>>1]&255);xz(c[w>>2]|0,147,(c[m>>2]|0)==24&1)|0}}while(0);Zu(c[s>>2]|0,c[p>>2]|0);Zu(c[s>>2]|0,c[q>>2]|0);Zu(c[s>>2]|0,c[r>>2]|0);i=y;return}function jB(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[g>>2]=e;c[h>>2]=0;do if(c[g>>2]|0)if((d[c[g>>2]>>0]|0|0)!=27){c[h>>2]=fy(c[f>>2]|0,c[g>>2]|0)|0;break}else{a[c[g>>2]>>0]=97;break}while(0);i=j;return c[h>>2]|0}function kB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+192|0;n=q+24|0;m=q+16|0;l=q+8|0;k=q;f=q+52|0;r=q+44|0;p=q+40|0;g=q+36|0;h=q+32|0;j=q+28|0;o=q+56|0;c[f>>2]=b;c[q+48>>2]=d;c[r>>2]=e;c[p>>2]=ae(c[c[r>>2]>>2]|0)|0;c[g>>2]=we(c[f>>2]|0)|0;c[j>>2]=0;if(!(c[p>>2]|0))c[p>>2]=19266;c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[(c[g>>2]|0)+20>>2]|0))break;c[j>>2]=(c[(c[g>>2]|0)+16>>2]|0)+(c[h>>2]<<4);if((c[(c[j>>2]|0)+4>>2]|0)!=0?(Td(c[c[j>>2]>>2]|0,c[p>>2]|0)|0)==0:0)break;c[h>>2]=(c[h>>2]|0)+1}do if((c[h>>2]|0)>=(c[(c[g>>2]|0)+20>>2]|0)){c[k>>2]=c[p>>2];Qd(128,o,32129,k)|0}else{if((c[h>>2]|0)<2){c[l>>2]=c[p>>2];Qd(128,o,32150,l)|0;break}if(!(a[(c[g>>2]|0)+63>>0]|0)){Qd(128,o,32176,m)|0;break}if((og(c[(c[j>>2]|0)+4>>2]|0)|0)==0?(fu(c[(c[j>>2]|0)+4>>2]|0)|0)==0:0){lB(c[(c[j>>2]|0)+4>>2]|0)|0;c[(c[j>>2]|0)+4>>2]=0;c[(c[j>>2]|0)+12>>2]=0;mB(c[g>>2]|0);i=q;return}c[n>>2]=c[p>>2];Qd(128,o,32218,n)|0}while(0);je(c[f>>2]|0,o,-1);i=q;return}function lB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[d>>2]=b;c[e>>2]=c[(c[d>>2]|0)+4>>2];kg(c[d>>2]|0);c[f>>2]=c[(c[e>>2]|0)+8>>2];while(1){if(!(c[f>>2]|0))break;c[g>>2]=c[f>>2];c[f>>2]=c[(c[f>>2]|0)+8>>2];if((c[c[g>>2]>>2]|0)!=(c[d>>2]|0))continue;nB(c[g>>2]|0)|0}Mg(c[d>>2]|0,0,0)|0;if(!((a[(c[d>>2]|0)+9>>0]|0)!=0?(oB(c[e>>2]|0)|0)==0:0)){ar(c[c[e>>2]>>2]|0)|0;if((c[(c[e>>2]|0)+52>>2]|0)!=0?(c[(c[e>>2]|0)+48>>2]|0)!=0:0)Qb[c[(c[e>>2]|0)+52>>2]&255](c[(c[e>>2]|0)+48>>2]|0);Sf(0,c[(c[e>>2]|0)+48>>2]|0);Pi(c[e>>2]|0);Kd(c[e>>2]|0)}if(c[(c[d>>2]|0)+28>>2]|0)c[(c[(c[d>>2]|0)+28>>2]|0)+24>>2]=c[(c[d>>2]|0)+24>>2];if(!(c[(c[d>>2]|0)+24>>2]|0)){g=c[d>>2]|0;Kd(g);i=h;return 0}c[(c[(c[d>>2]|0)+24>>2]|0)+28>>2]=c[(c[d>>2]|0)+28>>2];g=c[d>>2]|0;Kd(g);i=h;return 0}function mB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;b=g+12|0;d=g+8|0;e=g+4|0;f=g;c[b>>2]=a;c[e>>2]=2;c[d>>2]=2;while(1){if((c[d>>2]|0)>=(c[(c[b>>2]|0)+20>>2]|0))break;c[f>>2]=(c[(c[b>>2]|0)+16>>2]|0)+(c[d>>2]<<4);if(!(c[(c[f>>2]|0)+4>>2]|0)){Sf(c[b>>2]|0,c[c[f>>2]>>2]|0);c[c[f>>2]>>2]=0}else{if((c[e>>2]|0)<(c[d>>2]|0)){a=(c[(c[b>>2]|0)+16>>2]|0)+(c[e>>2]<<4)|0;h=(c[(c[b>>2]|0)+16>>2]|0)+(c[d>>2]<<4)|0;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]}c[e>>2]=(c[e>>2]|0)+1}c[d>>2]=(c[d>>2]|0)+1}c[(c[b>>2]|0)+20>>2]=c[e>>2];if((c[(c[b>>2]|0)+20>>2]|0)>2){i=g;return}if((c[(c[b>>2]|0)+16>>2]|0)==((c[b>>2]|0)+460|0)){i=g;return}h=(c[b>>2]|0)+460|0;f=c[(c[b>>2]|0)+16>>2]|0;c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];c[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];c[h+28>>2]=c[f+28>>2];Sf(c[b>>2]|0,c[(c[b>>2]|0)+16>>2]|0);c[(c[b>>2]|0)+16>>2]=(c[b>>2]|0)+460;i=g;return}function nB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;d=j+16|0;g=j+12|0;e=j+8|0;f=j+4|0;h=j;c[d>>2]=b;c[g>>2]=c[c[d>>2]>>2];if(!(c[g>>2]|0)){i=j;return 0}c[f>>2]=c[(c[d>>2]|0)+4>>2];kg(c[g>>2]|0);pB(c[d>>2]|0);a:do if((c[(c[f>>2]|0)+8>>2]|0)==(c[d>>2]|0))c[(c[f>>2]|0)+8>>2]=c[(c[d>>2]|0)+8>>2];else{c[h>>2]=c[(c[f>>2]|0)+8>>2];while(1){if((c[(c[h>>2]|0)+8>>2]|0)==(c[d>>2]|0))break;c[h>>2]=c[(c[h>>2]|0)+8>>2];if(!(c[h>>2]|0))break a}c[(c[h>>2]|0)+8>>2]=c[(c[d>>2]|0)+8>>2]}while(0);c[e>>2]=0;while(1){if((c[e>>2]|0)>(a[(c[d>>2]|0)+68>>0]|0))break;qB(c[(c[d>>2]|0)+120+(c[e>>2]<<2)>>2]|0);c[e>>2]=(c[e>>2]|0)+1}rB(c[f>>2]|0);Kd(c[(c[d>>2]|0)+12>>2]|0);i=j;return 0}function oB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[f>>2]=0;b=(c[d>>2]|0)+64|0;c[b>>2]=(c[b>>2]|0)+-1;if((c[(c[d>>2]|0)+64>>2]|0)>0){ -f=c[f>>2]|0;i=g;return f|0}if((c[1208]|0)!=(c[d>>2]|0)){c[e>>2]=c[1208];while(1){if(c[e>>2]|0)b=(c[(c[e>>2]|0)+68>>2]|0)!=(c[d>>2]|0);else b=0;a=c[e>>2]|0;if(!b)break;c[e>>2]=c[a+68>>2]}if(a)c[(c[e>>2]|0)+68>>2]=c[(c[d>>2]|0)+68>>2]}else c[1208]=c[(c[d>>2]|0)+68>>2];c[f>>2]=1;f=c[f>>2]|0;i=g;return f|0}function pB(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;Kd(c[(c[e>>2]|0)+48>>2]|0);c[(c[e>>2]|0)+48>>2]=0;a[(c[e>>2]|0)+66>>0]=0;i=d;return}function qB(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[b>>2]|0)){i=d;return}sB(c[b>>2]|0);i=d;return}function rB(a){a=a|0;var b=0,e=0,f=0;f=i;i=i+16|0;b=f+4|0;e=f;c[b>>2]=a;if(d[(c[b>>2]|0)+20>>0]|0){i=f;return}if(!(c[(c[b>>2]|0)+12>>2]|0)){i=f;return}c[e>>2]=c[(c[b>>2]|0)+12>>2];c[(c[b>>2]|0)+12>>2]=0;sB(c[e>>2]|0);i=f;return}function sB(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;zs(c[(c[d>>2]|0)+72>>2]|0);i=b;return}function tB(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=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;E=i;i=i+128|0;w=E+48|0;v=E+40|0;y=E+32|0;x=E+24|0;k=E+16|0;j=E+8|0;h=E;n=E+116|0;F=E+108|0;g=E+104|0;u=E+100|0;p=E+96|0;C=E+92|0;B=E+88|0;D=E+84|0;z=E+80|0;q=E+76|0;o=E+72|0;A=E+68|0;t=E+64|0;l=E+60|0;s=E+56|0;r=E+52|0;c[n>>2]=b;c[E+112>>2]=e;c[F>>2]=f;c[u>>2]=0;c[p>>2]=we(c[n>>2]|0)|0;c[D>>2]=0;c[z>>2]=0;c[A>>2]=0;c[B>>2]=ae(c[c[F>>2]>>2]|0)|0;c[C>>2]=ae(c[(c[F>>2]|0)+4>>2]|0)|0;if(!(c[B>>2]|0))c[B>>2]=19266;if(!(c[C>>2]|0))c[C>>2]=19266;e=c[p>>2]|0;do if((c[(c[p>>2]|0)+20>>2]|0)<((c[(c[p>>2]|0)+88+28>>2]|0)+2|0)){if(!(a[e+63>>0]|0)){c[A>>2]=Bh(c[p>>2]|0,32291,j)|0;break}c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[p>>2]|0)+20>>2]|0))break;c[l>>2]=c[(c[(c[p>>2]|0)+16>>2]|0)+(c[g>>2]<<4)>>2];if(!(Td(c[l>>2]|0,c[C>>2]|0)|0)){m=12;break}c[g>>2]=(c[g>>2]|0)+1}if((m|0)==12){F=c[p>>2]|0;c[k>>2]=c[C>>2];c[A>>2]=Bh(F,32333,k)|0;break}e=c[p>>2]|0;do if((c[(c[p>>2]|0)+16>>2]|0)==((c[p>>2]|0)+460|0)){c[o>>2]=Fw(e,48,0)|0;if(!(c[o>>2]|0)){i=E;return}else{F=c[o>>2]|0;m=c[(c[p>>2]|0)+16>>2]|0;c[F>>2]=c[m>>2];c[F+4>>2]=c[m+4>>2];c[F+8>>2]=c[m+8>>2];c[F+12>>2]=c[m+12>>2];c[F+16>>2]=c[m+16>>2];c[F+20>>2]=c[m+20>>2];c[F+24>>2]=c[m+24>>2];c[F+28>>2]=c[m+28>>2];break}}else{c[o>>2]=Ew(e,c[(c[p>>2]|0)+16>>2]|0,(c[(c[p>>2]|0)+20>>2]|0)+1<<4,0)|0;if(!(c[o>>2]|0)){i=E;return}}while(0);c[(c[p>>2]|0)+16>>2]=c[o>>2];c[o>>2]=(c[(c[p>>2]|0)+16>>2]|0)+(c[(c[p>>2]|0)+20>>2]<<4);F=c[o>>2]|0;c[F>>2]=0;c[F+4>>2]=0;c[F+8>>2]=0;c[F+12>>2]=0;c[q>>2]=c[(c[p>>2]|0)+48>>2];c[u>>2]=Wj(c[(c[c[p>>2]>>2]|0)+16>>2]|0,c[B>>2]|0,q,t,D,z)|0;if(c[u>>2]|0){if((c[u>>2]|0)==7)jh(c[p>>2]|0);je(c[n>>2]|0,c[z>>2]|0,-1);Kd(c[z>>2]|0);i=E;return}c[q>>2]=c[q>>2]|256;c[u>>2]=Xj(c[t>>2]|0,c[D>>2]|0,c[p>>2]|0,(c[o>>2]|0)+4|0,0,c[q>>2]|0)|0;Kd(c[D>>2]|0);F=(c[p>>2]|0)+20|0;c[F>>2]=(c[F>>2]|0)+1;if((c[u>>2]|0)!=19){if(!(c[u>>2]|0)){F=Yj(c[p>>2]|0,c[(c[o>>2]|0)+4>>2]|0)|0;c[(c[o>>2]|0)+12>>2]=F;if(c[(c[o>>2]|0)+12>>2]|0){if((d[(c[(c[o>>2]|0)+12>>2]|0)+76>>0]|0)!=0?(d[(c[(c[o>>2]|0)+12>>2]|0)+77>>0]|0)!=(d[(c[p>>2]|0)+62>>0]|0):0){c[A>>2]=Bh(c[p>>2]|0,20880,y)|0;c[u>>2]=1}}else c[u>>2]=7;kg(c[(c[o>>2]|0)+4>>2]|0);c[s>>2]=Of(c[(c[o>>2]|0)+4>>2]|0)|0;uB(c[s>>2]|0,d[(c[p>>2]|0)+67>>0]|0)|0;F=c[(c[o>>2]|0)+4>>2]|0;vB(F,vB(c[(c[(c[p>>2]|0)+16>>2]|0)+4>>2]|0,-1)|0)|0;wB(c[(c[o>>2]|0)+4>>2]|0,3|c[(c[p>>2]|0)+24>>2]&56)|0}}else{c[u>>2]=1;c[A>>2]=Bh(c[p>>2]|0,32363,x)|0}a[(c[o>>2]|0)+8>>0]=3;F=nh(c[p>>2]|0,c[C>>2]|0)|0;c[c[o>>2]>>2]=F;if((c[u>>2]|0)==0?(c[c[o>>2]>>2]|0)==0:0)c[u>>2]=7;if(!(c[u>>2]|0)){Nf(c[p>>2]|0);c[u>>2]=oi(c[p>>2]|0,A)|0}if(!(c[u>>2]|0)){i=E;return}c[r>>2]=(c[(c[p>>2]|0)+20>>2]|0)-1;if(c[(c[(c[p>>2]|0)+16>>2]|0)+(c[r>>2]<<4)+4>>2]|0){lB(c[(c[(c[p>>2]|0)+16>>2]|0)+(c[r>>2]<<4)+4>>2]|0)|0;c[(c[(c[p>>2]|0)+16>>2]|0)+(c[r>>2]<<4)+4>>2]=0;c[(c[(c[p>>2]|0)+16>>2]|0)+(c[r>>2]<<4)+12>>2]=0}zg(c[p>>2]|0);c[(c[p>>2]|0)+20>>2]=c[r>>2];if((c[u>>2]|0)==7|(c[u>>2]|0)==3082){jh(c[p>>2]|0);Sf(c[p>>2]|0,c[A>>2]|0);c[A>>2]=Bh(c[p>>2]|0,32392,v)|0;break}if(!(c[A>>2]|0)){F=c[p>>2]|0;c[w>>2]=c[B>>2];c[A>>2]=Bh(F,32406,w)|0}}else{c[h>>2]=c[(c[p>>2]|0)+88+28>>2];c[A>>2]=Bh(e,32254,h)|0}while(0);if(c[A>>2]|0){je(c[n>>2]|0,c[A>>2]|0,-1);Sf(c[p>>2]|0,c[A>>2]|0)}if(!(c[u>>2]|0)){i=E;return}re(c[n>>2]|0,c[u>>2]|0);i=E;return}function uB(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;f=h+4|0;g=h;c[f>>2]=b;c[g>>2]=e;if(((c[g>>2]|0)>=0?(a[(c[f>>2]|0)+13>>0]|0)==0:0)?(yB(c[(c[f>>2]|0)+216>>2]|0)|0)==0:0)a[(c[f>>2]|0)+4>>0]=c[g>>2];i=h;return d[(c[f>>2]|0)+4>>0]|0}function vB(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[g>>2]=a;c[h>>2]=d;if(!(c[g>>2]|0)){c[f>>2]=0;a=c[f>>2]|0;i=k;return a|0}kg(c[g>>2]|0);if((c[h>>2]|0)>=0?(a=(c[(c[g>>2]|0)+4>>2]|0)+22|0,b[a>>1]=(e[a>>1]|0)&-5,(c[h>>2]|0)!=0):0){a=(c[(c[g>>2]|0)+4>>2]|0)+22|0;b[a>>1]=e[a>>1]|0|4}c[j>>2]=((e[(c[(c[g>>2]|0)+4>>2]|0)+22>>1]|0)&4|0)!=0&1;c[f>>2]=c[j>>2];a=c[f>>2]|0;i=k;return a|0}function wB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;e=d+4|0;f=d;c[g>>2]=a;c[e>>2]=b;c[f>>2]=c[(c[g>>2]|0)+4>>2];kg(c[g>>2]|0);xB(c[c[f>>2]>>2]|0,c[e>>2]|0);i=d;return 0}function xB(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;g=j+8|0;h=j+4|0;f=j;c[g>>2]=b;c[h>>2]=e;c[f>>2]=c[h>>2]&7;if(a[(c[g>>2]|0)+13>>0]|0){a[(c[g>>2]|0)+7>>0]=1;a[(c[g>>2]|0)+8>>0]=0;a[(c[g>>2]|0)+9>>0]=0}else{a[(c[g>>2]|0)+7>>0]=(c[f>>2]|0)==1?1:0;a[(c[g>>2]|0)+8>>0]=(c[f>>2]|0)>>>0>=3?1:0;a[(c[g>>2]|0)+9>>0]=(c[f>>2]|0)==4?1:0}do if(!(a[(c[g>>2]|0)+7>>0]|0)){if(c[h>>2]&8){a[(c[g>>2]|0)+12>>0]=3;a[(c[g>>2]|0)+10>>0]=3;break}e=(c[h>>2]&16|0)!=0;a[(c[g>>2]|0)+12>>0]=2;f=(c[g>>2]|0)+10|0;if(e){a[f>>0]=3;break}else{a[f>>0]=2;break}}else{a[(c[g>>2]|0)+12>>0]=0;a[(c[g>>2]|0)+10>>0]=0}while(0);a[(c[g>>2]|0)+11>>0]=a[(c[g>>2]|0)+12>>0]|0;if(a[(c[g>>2]|0)+8>>0]|0){e=(c[g>>2]|0)+11|0;a[e>>0]=d[e>>0]|32}f=(c[g>>2]|0)+21|0;b=d[f>>0]|0;if(c[h>>2]&32){a[f>>0]=b&-2;i=j;return}else{a[f>>0]=b|1;i=j;return}}function yB(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;if(!(c[b>>2]|0)){a=0;a=a&1;i=e;return a|0}a=(d[(c[b>>2]|0)+43>>0]|0|0)==2;a=a&1;i=e;return a|0}function zB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;d=j+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[d>>2]=a;c[e>>2]=b;c[f>>2]=c[c[d>>2]>>2];c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0))break;c[h>>2]=(c[(c[f>>2]|0)+16>>2]|0)+(c[g>>2]<<4);do if(c[(c[h>>2]|0)+4>>2]|0){if((c[e>>2]|0)!=0?0!=(Td(c[e>>2]|0,c[c[h>>2]>>2]|0)|0):0)break;bx(c[d>>2]|0,c[g>>2]|0)}while(0);c[g>>2]=(c[g>>2]|0)+1}i=j;return}function AB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;l=o;d=o+44|0;e=o+40|0;j=o+36|0;k=o+32|0;g=o+28|0;h=o+24|0;f=o+20|0;m=o+16|0;n=o+12|0;c[d>>2]=a;c[e>>2]=b;c[g>>2]=c[c[d>>2]>>2];c[h>>2]=Dh(c[c[d>>2]>>2]|0,c[(c[e>>2]|0)+20>>2]|0)|0;c[j>>2]=BB(c[e>>2]|0)|0;c[f>>2]=16;c[m>>2]=c[(c[(c[g>>2]|0)+16>>2]|0)+(c[h>>2]<<4)>>2];c[n>>2]=(c[h>>2]|0)==1?20769:20788;if((c[h>>2]|0)==1)c[f>>2]=14;if(Mw(c[d>>2]|0,c[f>>2]|0,c[c[e>>2]>>2]|0,c[c[j>>2]>>2]|0,c[m>>2]|0)|0){i=o;return}if(Mw(c[d>>2]|0,9,c[n>>2]|0,0,c[m>>2]|0)|0){i=o;return}n=Pw(c[d>>2]|0)|0;c[k>>2]=n;if(!n){i=o;return}n=c[d>>2]|0;b=(c[h>>2]|0)==1?20769:20788;m=c[c[e>>2]>>2]|0;c[l>>2]=c[(c[(c[g>>2]|0)+16>>2]|0)+(c[h>>2]<<4)>>2];c[l+4>>2]=b;c[l+8>>2]=m;Ow(n,32454,l);Qw(c[d>>2]|0,c[h>>2]|0);Uw(c[k>>2]|0,127,c[h>>2]|0,0,0,c[c[e>>2]>>2]|0,0)|0;i=o;return}function BB(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=nj((c[(c[d>>2]|0)+24>>2]|0)+8|0,c[(c[d>>2]|0)+4>>2]|0)|0;i=b;return a|0}function CB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;l=k+12|0;f=k+16|0;g=k+8|0;h=k+4|0;j=k;c[l>>2]=b;a[f>>0]=d;c[g>>2]=e;c[h>>2]=ph(c[l>>2]|0,36+(c[(c[g>>2]|0)+4>>2]|0)+1|0,0)|0;if(!(c[h>>2]|0)){l=c[h>>2]|0;i=k;return l|0}c[j>>2]=(c[h>>2]|0)+36;iR(c[j>>2]|0,c[c[g>>2]>>2]|0,c[(c[g>>2]|0)+4>>2]|0)|0;Jw(c[j>>2]|0)|0;c[(c[h>>2]|0)+12>>2]=c[j>>2];a[c[h>>2]>>0]=a[f>>0]|0;l=c[h>>2]|0;i=k;return l|0}function DB(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;e=h+12|0;j=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[j>>2]=d;c[f>>2]=(c[j>>2]|0)+8;c[g>>2]=_w(c[e>>2]|0,0,c[f>>2]|0)|0;Qf(c[c[e>>2]>>2]|0,c[(c[f>>2]|0)+16>>2]|0);c[(c[f>>2]|0)+16>>2]=c[g>>2];if(c[g>>2]|0){j=(c[g>>2]|0)+36|0;b[j>>1]=(b[j>>1]|0)+1<<16>>16}if(!(Vy(c[e>>2]|0,c[f>>2]|0)|0)){j=c[g>>2]|0;i=h;return j|0}c[g>>2]=0;j=c[g>>2]|0;i=h;return j|0}function EB(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,j=0,k=0,l=0,m=0,n=0;g=i;i=i+32|0;h=g+20|0;n=g+16|0;j=g+12|0;l=g+8|0;k=g+4|0;m=g;c[h>>2]=a;c[n>>2]=b;c[j>>2]=d;c[l>>2]=e;c[k>>2]=f;c[m>>2]=c[c[n>>2]>>2];c[c[h>>2]>>2]=c[n>>2];c[(c[h>>2]|0)+12>>2]=c[(c[(c[m>>2]|0)+16>>2]|0)+(c[j>>2]<<4)>>2];c[(c[h>>2]|0)+4>>2]=c[(c[(c[m>>2]|0)+16>>2]|0)+(c[j>>2]<<4)+12>>2];c[(c[h>>2]|0)+16>>2]=c[l>>2];c[(c[h>>2]|0)+20>>2]=c[k>>2];c[(c[h>>2]|0)+8>>2]=(c[j>>2]|0)==1&1;i=g;return}function FB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+48|0;k=l;g=l+32|0;h=l+28|0;d=l+24|0;e=l+20|0;f=l+16|0;j=l+12|0;c[h>>2]=a;c[d>>2]=b;if(!(c[d>>2]|0)){c[g>>2]=0;k=c[g>>2]|0;i=l;return k|0}c[f>>2]=c[(c[h>>2]|0)+12>>2];c[e>>2]=0;c[j>>2]=(c[d>>2]|0)+8;while(1){if((c[e>>2]|0)>=(c[c[d>>2]>>2]|0)){d=15;break}if(!(c[(c[h>>2]|0)+8>>2]|0)){if((c[(c[j>>2]|0)+4>>2]|0)!=0?(Td(c[(c[j>>2]|0)+4>>2]|0,c[f>>2]|0)|0)!=0:0){d=8;break}Sf(c[c[c[h>>2]>>2]>>2]|0,c[(c[j>>2]|0)+4>>2]|0);c[(c[j>>2]|0)+4>>2]=0;c[c[j>>2]>>2]=c[(c[h>>2]|0)+4>>2]}if(GB(c[h>>2]|0,c[(c[j>>2]|0)+20>>2]|0)|0){d=11;break}if(HB(c[h>>2]|0,c[(c[j>>2]|0)+48>>2]|0)|0){d=13;break}c[e>>2]=(c[e>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+72}if((d|0)==8){f=c[c[h>>2]>>2]|0;b=c[(c[h>>2]|0)+20>>2]|0;j=c[(c[j>>2]|0)+4>>2]|0;c[k>>2]=c[(c[h>>2]|0)+16>>2];c[k+4>>2]=b;c[k+8>>2]=j;Ah(f,32752,k);c[g>>2]=1;k=c[g>>2]|0;i=l;return k|0}else if((d|0)==11){c[g>>2]=1;k=c[g>>2]|0;i=l;return k|0}else if((d|0)==13){c[g>>2]=1;k=c[g>>2]|0;i=l;return k|0}else if((d|0)==15){c[g>>2]=0;k=c[g>>2]|0;i=l;return k|0}return 0}function GB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g+8|0;d=g+4|0;e=g;c[d>>2]=a;c[e>>2]=b;while(1){if(!(c[e>>2]|0)){d=20;break}if(IB(c[d>>2]|0,c[c[e>>2]>>2]|0)|0){d=4;break}if(FB(c[d>>2]|0,c[(c[e>>2]|0)+32>>2]|0)|0){d=6;break}if(HB(c[d>>2]|0,c[(c[e>>2]|0)+36>>2]|0)|0){d=8;break}if(IB(c[d>>2]|0,c[(c[e>>2]|0)+40>>2]|0)|0){d=10;break}if(HB(c[d>>2]|0,c[(c[e>>2]|0)+44>>2]|0)|0){d=12;break}if(IB(c[d>>2]|0,c[(c[e>>2]|0)+48>>2]|0)|0){d=14;break}if(HB(c[d>>2]|0,c[(c[e>>2]|0)+60>>2]|0)|0){d=16;break}if(HB(c[d>>2]|0,c[(c[e>>2]|0)+64>>2]|0)|0){d=18;break}c[e>>2]=c[(c[e>>2]|0)+52>>2]}if((d|0)==4)c[f>>2]=1;else if((d|0)==6)c[f>>2]=1;else if((d|0)==8)c[f>>2]=1;else if((d|0)==10)c[f>>2]=1;else if((d|0)==12)c[f>>2]=1;else if((d|0)==14)c[f>>2]=1;else if((d|0)==16)c[f>>2]=1;else if((d|0)==18)c[f>>2]=1;else if((d|0)==20)c[f>>2]=0;i=g;return c[f>>2]|0}function HB(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;g=k+12|0;h=k+8|0;f=k+4|0;c[h>>2]=b;c[f>>2]=e;while(1){if(!(c[f>>2]|0)){e=16;break}if((d[c[f>>2]>>0]|0)==135){if(!(a[(c[c[c[h>>2]>>2]>>2]|0)+140+5>>0]|0)){e=6;break}a[c[f>>2]>>0]=101}if(c[(c[f>>2]|0)+4>>2]&16384){e=16;break}e=c[h>>2]|0;b=(c[f>>2]|0)+20|0;if(c[(c[f>>2]|0)+4>>2]&2048){if(GB(e,c[b>>2]|0)|0){e=10;break}}else if(IB(e,c[b>>2]|0)|0){e=12;break}if(HB(c[h>>2]|0,c[(c[f>>2]|0)+16>>2]|0)|0){e=14;break}c[f>>2]=c[(c[f>>2]|0)+12>>2]}if((e|0)==6){f=c[c[h>>2]>>2]|0;c[j>>2]=c[(c[h>>2]|0)+16>>2];Ah(f,32798,j);c[g>>2]=1;j=c[g>>2]|0;i=k;return j|0}else if((e|0)==10){c[g>>2]=1;j=c[g>>2]|0;i=k;return j|0}else if((e|0)==12){c[g>>2]=1;j=c[g>>2]|0;i=k;return j|0}else if((e|0)==14){c[g>>2]=1;j=c[g>>2]|0;i=k;return j|0}else if((e|0)==16){c[g>>2]=0;j=c[g>>2]|0;i=k;return j|0}return 0}function IB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;h=j+16|0;d=j+12|0;e=j+8|0;f=j+4|0;g=j;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){c[h>>2]=0;h=c[h>>2]|0;i=j;return h|0}c[f>>2]=0;c[g>>2]=c[(c[e>>2]|0)+4>>2];while(1){if((c[f>>2]|0)>=(c[c[e>>2]>>2]|0)){d=8;break}if(HB(c[d>>2]|0,c[c[g>>2]>>2]|0)|0){d=6;break}c[f>>2]=(c[f>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+20}if((d|0)==6){c[h>>2]=1;h=c[h>>2]|0;i=j;return h|0}else if((d|0)==8){c[h>>2]=0;h=c[h>>2]|0;i=j;return h|0}return 0}function JB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g+8|0;d=g+4|0;e=g;c[d>>2]=a;c[e>>2]=b;while(1){if(!(c[e>>2]|0)){d=10;break}if(GB(c[d>>2]|0,c[(c[e>>2]|0)+8>>2]|0)|0){d=4;break}if(HB(c[d>>2]|0,c[(c[e>>2]|0)+16>>2]|0)|0){d=6;break}if(IB(c[d>>2]|0,c[(c[e>>2]|0)+20>>2]|0)|0){d=8;break}c[e>>2]=c[(c[e>>2]|0)+28>>2]}if((d|0)==4)c[f>>2]=1;else if((d|0)==6)c[f>>2]=1;else if((d|0)==8)c[f>>2]=1;else if((d|0)==10)c[f>>2]=0;i=g;return c[f>>2]|0}function KB(a){a=a|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;a=(c[e>>2]|0)+88|0;b[a>>1]=b[a>>1]&-17|16;i=d;return}function LB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(!(c[g>>2]|0)){i=h;return}Tw(c[e>>2]|0,1,c[g>>2]|0)|0;MB(c[e>>2]|0,c[f>>2]|0);Rw(c[e>>2]|0,33,1,1)|0;i=h;return}function MB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;_B(c[f>>2]|0,1,e);i=d;return}function NB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+12|0;h=f+8|0;j=f;c[g>>2]=a;c[h>>2]=b;b=j;c[b>>2]=d;c[b+4>>2]=e;eB(c[g>>2]|0,23,0,1,0,j,-13)|0;MB(c[g>>2]|0,c[h>>2]|0);Rw(c[g>>2]|0,33,1,1)|0;i=f;return}function OB(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;j=i;i=i+32|0;f=j+16|0;l=j+12|0;h=j+8|0;g=j+4|0;k=j;c[f>>2]=a;c[l>>2]=d;c[k>>2]=c[c[f>>2]>>2];oC(c[(c[f>>2]|0)+16>>2]|0,(e[(c[f>>2]|0)+84>>1]|0)<<1);Sf(c[k>>2]|0,c[(c[f>>2]|0)+16>>2]|0);c[g>>2]=c[l>>2]<<1;b[(c[f>>2]|0)+84>>1]=c[l>>2];a=ph(c[k>>2]|0,(c[g>>2]|0)*40|0,0)|0;c[h>>2]=a;c[(c[f>>2]|0)+16>>2]=a;if(!(c[(c[f>>2]|0)+16>>2]|0)){i=j;return}while(1){l=c[g>>2]|0;c[g>>2]=l+-1;if((l|0)<=0)break;b[(c[h>>2]|0)+8>>1]=1;c[(c[h>>2]|0)+32>>2]=c[c[f>>2]>>2];c[h>>2]=(c[h>>2]|0)+40}i=j;return}function PB(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+32|0;j=r+28|0;k=r+24|0;l=r+20|0;m=r+16|0;n=r+12|0;o=r+8|0;q=r+4|0;p=r;c[k>>2]=b;c[l>>2]=d;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;if(a[(c[c[k>>2]>>2]|0)+65>>0]|0){c[j>>2]=7;g=c[j>>2]|0;i=r;return g|0}else{g=(c[l>>2]|0)+(_(c[m>>2]|0,e[(c[k>>2]|0)+84>>1]|0)|0)|0;c[p>>2]=(c[(c[k>>2]|0)+16>>2]|0)+(g*40|0);c[q>>2]=dh(c[p>>2]|0,c[n>>2]|0,-1,1,c[o>>2]|0)|0;c[j>>2]=c[q>>2];g=c[j>>2]|0;i=r;return g|0}return 0}function QB(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+4|0;d=f;c[d>>2]=a;do if(c[d>>2]|0){if(!(Td(c[d>>2]|0,33004)|0)){c[b>>2]=1;break}if(!(Td(c[d>>2]|0,32997)|0))c[b>>2]=0;else e=6}else e=6;while(0);if((e|0)==6)c[b>>2]=-1;i=f;return c[b>>2]|0}function RB(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[d>>2]=a;if((c[d>>2]|0)==6)c[b>>2]=0;else c[b>>2]=c[6256+(c[d>>2]<<2)>>2];i=e;return c[b>>2]|0}function SB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+8|0;f=g;c[e>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;a=f;d=c[a+4>>2]|0;if((d|0)>-1|(d|0)==-1&(c[a>>2]|0)>>>0>=4294967295){b=f;d=c[b+4>>2]|0;a=(c[e>>2]|0)+168|0;c[a>>2]=c[b>>2];c[a+4>>2]=d;a=f;nC(c[(c[e>>2]|0)+216>>2]|0,c[a>>2]|0,c[a+4>>2]|0)}a=(c[e>>2]|0)+168|0;C=c[a+4>>2]|0;i=g;return c[a>>2]|0}function TB(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;kg(c[d>>2]|0);if(!(a[(c[(c[d>>2]|0)+4>>2]|0)+17>>0]|0)){b=0;c[e>>2]=b;e=c[e>>2]|0;i=f;return e|0}b=(a[(c[(c[d>>2]|0)+4>>2]|0)+18>>0]|0)!=0^1?1:2;c[e>>2]=b;e=c[e>>2]|0;i=f;return e|0}function UB(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[d>>2]=a;do if(Td(c[d>>2]|0,34075)|0){if(!(Td(c[d>>2]|0,33519)|0)){c[b>>2]=1;break}if(!(Td(c[d>>2]|0,34080)|0)){c[b>>2]=2;break}else{c[e>>2]=Ki(c[d>>2]|0)|0;c[b>>2]=((c[e>>2]|0)>=0&(c[e>>2]|0)<=2?c[e>>2]|0:0)&255;break}}else c[b>>2]=0;while(0);i=f;return c[b>>2]|0}function VB(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+32|0;l=k+12|0;m=k+8|0;h=k+4|0;j=k;g=k+16|0;c[l>>2]=b;c[m>>2]=f;c[h>>2]=c[(c[l>>2]|0)+4>>2];c[j>>2]=0;a[g>>0]=c[m>>2];kg(c[l>>2]|0);if(((e[(c[h>>2]|0)+22>>1]|0)&2|0)!=0?(((d[g>>0]|0|0)!=0?1:0)|0)!=(d[(c[h>>2]|0)+17>>0]|0|0):0){c[j>>2]=8;m=c[j>>2]|0;i=k;return m|0}a[(c[h>>2]|0)+17>>0]=(d[g>>0]|0|0)!=0?1:0;a[(c[h>>2]|0)+18>>0]=(d[g>>0]|0|0)==2?1:0;m=c[j>>2]|0;i=k;return m|0}function WB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+12|0;f=e+8|0;g=e+4|0;d=e;c[h>>2]=a;c[f>>2]=b;c[g>>2]=c[(c[h>>2]|0)+4>>2];kg(c[h>>2]|0);c[d>>2]=lC(c[c[g>>2]>>2]|0,c[f>>2]|0)|0;i=e;return c[d>>2]|0}function XB(b){b=b|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;g=h+4|0;f=h;c[e>>2]=b;if(!(a[(c[e>>2]|0)+63>>0]|0)){i=h;return}c[g>>2]=c[(c[e>>2]|0)+16>>2];c[f>>2]=c[(c[e>>2]|0)+20>>2];while(1){b=c[f>>2]|0;c[f>>2]=b+-1;if((b|0)<=0)break;if(c[(c[g>>2]|0)+4>>2]|0)wB(c[(c[g>>2]|0)+4>>2]|0,d[(c[g>>2]|0)+8>>0]|c[(c[e>>2]|0)+24>>2]&56)|0;c[g>>2]=(c[g>>2]|0)+16}i=h;return}function YB(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;f=k+16|0;g=k+12|0;l=k+8|0;j=k+4|0;h=k;c[g>>2]=b;c[l>>2]=e;c[j>>2]=kC(c[l>>2]|0)|0;c[h>>2]=c[c[g>>2]>>2];if((d[(c[h>>2]|0)+64>>0]|0|0)==(c[j>>2]|0)){c[f>>2]=0;l=c[f>>2]|0;i=k;return l|0}if(ZB(c[g>>2]|0)|0){c[f>>2]=1;l=c[f>>2]|0;i=k;return l|0}else{a[(c[h>>2]|0)+64>>0]=c[j>>2];c[f>>2]=0;l=c[f>>2]|0;i=k;return l|0}return 0}function ZB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;d=h+12|0;e=h+8|0;f=h+4|0;c[e>>2]=b;c[f>>2]=c[c[e>>2]>>2];do if(c[(c[(c[f>>2]|0)+16>>2]|0)+16+4>>2]|0){if((a[(c[f>>2]|0)+63>>0]|0)!=0?(og(c[(c[(c[f>>2]|0)+16>>2]|0)+16+4>>2]|0)|0)==0:0){lB(c[(c[(c[f>>2]|0)+16>>2]|0)+16+4>>2]|0)|0;c[(c[(c[f>>2]|0)+16>>2]|0)+16+4>>2]=0;zg(c[f>>2]|0);break}Ah(c[e>>2]|0,34013,g);c[d>>2]=1;g=c[d>>2]|0;i=h;return g|0}while(0);c[d>>2]=0;g=c[d>>2]|0;i=h;return g|0}function _B(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;OB(c[e>>2]|0,c[f>>2]|0);c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[f>>2]|0))break;PB(c[e>>2]|0,c[h>>2]|0,0,c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,0)|0;c[h>>2]=(c[h>>2]|0)+1}i=j;return}function $B(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;g=o+32|0;h=o+28|0;j=o+24|0;k=o+8|0;m=o+4|0;l=o+36|0;n=o;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;c[m>>2]=0;while(1){e=a[(c[j>>2]|0)+(c[m>>2]|0)>>0]|0;a[l>>0]=e;if(!(e<<24>>24))break;if((a[l>>0]|0)==115){f=(c[k>>2]|0)+(4-1)&~(4-1);b=c[f>>2]|0;c[k>>2]=f+4;c[n>>2]=b;b=c[g>>2]|0;f=(c[n>>2]|0)==0?25:97;e=c[h>>2]|0;c[h>>2]=e+1;Uw(b,f,0,e,0,c[n>>2]|0,0)|0}else{b=c[g>>2]|0;e=(c[k>>2]|0)+(4-1)&~(4-1);f=c[e>>2]|0;c[k>>2]=e+4;e=c[h>>2]|0;c[h>>2]=e+1;Rw(b,22,f,e)|0}c[m>>2]=(c[m>>2]|0)+1}i=o;return}function aC(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;h=i;i=i+32|0;g=h+8|0;e=h+16|0;f=h;b[e>>1]=a;if((b[e>>1]|0)<10){f=g;c[f>>2]=1;c[f+4>>2]=0;f=g;g=f;g=c[g>>2]|0;f=f+4|0;f=c[f>>2]|0;C=f;i=h;return g|0}k=(b[e>>1]|0)%10|0;j=f;c[j>>2]=k;c[j+4>>2]=((k|0)<0)<<31>>31;b[e>>1]=(b[e>>1]|0)/10|0;j=f;k=c[j+4>>2]|0;d=f;a=c[d>>2]|0;d=c[d+4>>2]|0;if(!(k>>>0>0|(k|0)==0&(c[j>>2]|0)>>>0>=5)){if(d>>>0>0|(d|0)==0&a>>>0>=1){j=f;j=fR(c[j>>2]|0,c[j+4>>2]|0,1,0)|0;k=f;c[k>>2]=j;c[k+4>>2]=C}}else{j=fR(a|0,d|0,2,0)|0;k=f;c[k>>2]=j;c[k+4>>2]=C}if((b[e>>1]|0)<3){k=f;k=gR(c[k>>2]|0,c[k+4>>2]|0,8,0)|0;k=hR(k|0,C|0,3-(b[e>>1]|0)|0)|0;j=g;c[j>>2]=k;c[j+4>>2]=C;j=g;k=j;k=c[k>>2]|0;j=j+4|0;j=c[j>>2]|0;C=j;i=h;return k|0}if((b[e>>1]|0)>60){a=-1;d=2147483647}else{a=f;a=gR(c[a>>2]|0,c[a+4>>2]|0,8,0)|0;a=lR(a|0,C|0,(b[e>>1]|0)-3|0)|0;d=C}j=g;c[j>>2]=a;c[j+4>>2]=d;j=g;k=j;k=c[k>>2]|0;j=j+4|0;j=c[j>>2]|0;C=j;i=h;return k|0}function bC(b){b=b|0;var e=0,f=0,g=0;f=i;i=i+16|0;g=f+4|0;e=f;a[g>>0]=b;switch(d[g>>0]|0|0){case 7:{c[e>>2]=33823;break}case 8:{c[e>>2]=33832;break}case 9:{c[e>>2]=33844;break}case 6:{c[e>>2]=33852;break}default:c[e>>2]=33861}i=f;return c[e>>2]|0}function cC(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;D=i;i=i+80|0;y=D;l=D+64|0;m=D+60|0;n=D+56|0;o=D+52|0;p=D+48|0;q=D+44|0;x=D+40|0;r=D+36|0;w=D+32|0;B=D+28|0;s=D+24|0;t=D+20|0;v=D+16|0;u=D+68|0;z=D+12|0;A=D+8|0;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=j;c[q>>2]=k;c[x>>2]=0;c[r>>2]=0;c[w>>2]=c[(c[o>>2]|0)+20>>2];c[B>>2]=c[(c[o>>2]|0)+36+4>>2];do if((c[w>>2]|0)==1){if((b[(c[n>>2]|0)+32>>1]|0)>=0){if(!(c[B>>2]|0)){c[l>>2]=0;C=c[l>>2]|0;i=D;return C|0}if(!(Td(c[(c[(c[n>>2]|0)+4>>2]|0)+((b[(c[n>>2]|0)+32>>1]|0)*24|0)>>2]|0,c[B>>2]|0)|0)){c[l>>2]=0;C=c[l>>2]|0;i=D;return C|0}}}else if(c[q>>2]|0){c[r>>2]=Fw(c[c[m>>2]>>2]|0,c[w>>2]<<2,0)|0;if(c[r>>2]|0){c[c[q>>2]>>2]=c[r>>2];break}c[l>>2]=1;C=c[l>>2]|0;i=D;return C|0}while(0);c[x>>2]=c[(c[n>>2]|0)+8>>2];a:while(1){if(!(c[x>>2]|0))break;do if((e[(c[x>>2]|0)+50>>1]|0)==(c[w>>2]|0)?(d[(c[x>>2]|0)+54>>0]|0)!=0:0){if(!(c[B>>2]|0))if((a[(c[x>>2]|0)+55>>0]&3|0)==2){C=17;break a}else break;c[t>>2]=0;while(1){if((c[t>>2]|0)>=(c[w>>2]|0))break;b[u>>1]=b[(c[(c[x>>2]|0)+4>>2]|0)+(c[t>>2]<<1)>>1]|0;if((b[u>>1]|0)<0)break;j=c[(c[(c[n>>2]|0)+4>>2]|0)+((b[u>>1]|0)*24|0)+16>>2]|0;c[z>>2]=j;c[z>>2]=(c[z>>2]|0)!=0?j:35690;if(Td(c[(c[(c[x>>2]|0)+32>>2]|0)+(c[t>>2]<<2)>>2]|0,c[z>>2]|0)|0)break;c[A>>2]=c[(c[(c[n>>2]|0)+4>>2]|0)+((b[u>>1]|0)*24|0)>>2];c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[w>>2]|0))break;if(!(Td(c[(c[o>>2]|0)+36+(c[v>>2]<<3)+4>>2]|0,c[A>>2]|0)|0)){C=28;break}c[v>>2]=(c[v>>2]|0)+1}if((C|0)==28?(C=0,(c[r>>2]|0)!=0):0)c[(c[r>>2]|0)+(c[t>>2]<<2)>>2]=c[(c[o>>2]|0)+36+(c[v>>2]<<3)>>2];if((c[v>>2]|0)==(c[w>>2]|0))break;c[t>>2]=(c[t>>2]|0)+1}if((c[t>>2]|0)==(c[w>>2]|0))break a}while(0);c[x>>2]=c[(c[x>>2]|0)+20>>2]}b:do if((C|0)==17?(c[r>>2]|0)!=0:0){c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[w>>2]|0))break b;c[(c[r>>2]|0)+(c[s>>2]<<2)>>2]=c[(c[o>>2]|0)+36+(c[s>>2]<<3)>>2];c[s>>2]=(c[s>>2]|0)+1}}while(0);if(c[x>>2]|0){c[c[p>>2]>>2]=c[x>>2];c[l>>2]=0;C=c[l>>2]|0;i=D;return C|0}if(!(a[(c[m>>2]|0)+442>>0]|0)){C=c[m>>2]|0;B=c[(c[o>>2]|0)+8>>2]|0;c[y>>2]=c[c[c[o>>2]>>2]>>2];c[y+4>>2]=B;Ah(C,33760,y)}Sf(c[c[m>>2]>>2]|0,c[r>>2]|0);c[l>>2]=1;C=c[l>>2]|0;i=D;return C|0}function dC(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;h=o+16|0;g=o+12|0;j=o+8|0;l=o+4|0;m=o;n=o+20|0;k=o+22|0;c[g>>2]=d;c[j>>2]=f;if(!(c[(c[j>>2]|0)+16>>2]|0)){c[m>>2]=c[(c[j>>2]|0)+12>>2];f=(e[(c[j>>2]|0)+52>>1]|0)+1|0;f=yh(0,f,((f|0)<0)<<31>>31)|0;c[(c[j>>2]|0)+16>>2]=f;if(!(c[(c[j>>2]|0)+16>>2]|0)){jh(c[g>>2]|0);c[h>>2]=0;n=c[h>>2]|0;i=o;return n|0}c[l>>2]=0;while(1){g=c[l>>2]|0;d=c[j>>2]|0;if((c[l>>2]|0)>=(e[(c[j>>2]|0)+52>>1]|0))break;b[n>>1]=b[(c[d+4>>2]|0)+(g<<1)>>1]|0;g=b[n>>1]|0;do if((b[n>>1]|0)<0){d=c[l>>2]|0;f=c[j>>2]|0;if((g|0)==-1){a[(c[f+16>>2]|0)+d>>0]=68;break}else{f=Nx(c[(c[(c[f+40>>2]|0)+4>>2]|0)+(d*20|0)>>2]|0)|0;a[k>>0]=f;a[k>>0]=(a[k>>0]|0)==0?65:f;a[(c[(c[j>>2]|0)+16>>2]|0)+(c[l>>2]|0)>>0]=a[k>>0]|0;break}}else a[(c[(c[j>>2]|0)+16>>2]|0)+(c[l>>2]|0)>>0]=a[(c[(c[m>>2]|0)+4>>2]|0)+(g*24|0)+21>>0]|0;while(0);c[l>>2]=(c[l>>2]|0)+1}a[(c[d+16>>2]|0)+g>>0]=0}c[h>>2]=c[(c[j>>2]|0)+16>>2];n=c[h>>2]|0;i=o;return n|0}function eC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;if(c[e>>2]|0)c[f>>2]=33668;else c[f>>2]=19262;fi(c[d>>2]|0,33672,2,1,c[f>>2]|0,212,0,0,0)|0;fi(c[d>>2]|0,33672,3,1,c[f>>2]|0,212,0,0,0)|0;fi(c[d>>2]|0,33677,2,1,19258,212,0,0,0)|0;iC(c[d>>2]|0,33677,12);iC(c[d>>2]|0,33672,((c[e>>2]|0)!=0?12:4)&255);i=g;return}function fC(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;c[d>>2]=0;c[e>>2]=(c[b>>2]|0)+124;while(1){if((c[d>>2]|0)>=10)break;if(c[(c[e>>2]|0)+12>>2]|0){hA(c[b>>2]|0,c[e>>2]|0);c[(c[e>>2]|0)+12>>2]=0}c[d>>2]=(c[d>>2]|0)+1;c[e>>2]=(c[e>>2]|0)+20}i=f;return}function gC(b,e,f,g,h,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;C=i;i=i+64|0;p=C+52|0;q=C+48|0;r=C+44|0;s=C+40|0;t=C+56|0;u=C+36|0;v=C+32|0;w=C+28|0;m=C+24|0;x=C+20|0;y=C+16|0;n=C+12|0;A=C+8|0;B=C+4|0;z=C;c[q>>2]=b;c[r>>2]=e;c[s>>2]=f;a[t>>0]=g;c[u>>2]=h;c[v>>2]=j;c[w>>2]=k;c[m>>2]=l;if((d[(c[r>>2]|0)+42>>0]|0)&16){c[p>>2]=0;B=c[p>>2]|0;i=C;return B|0}c[y>>2]=Dh(c[c[q>>2]>>2]|0,c[(c[r>>2]|0)+64>>2]|0)|0;c[B>>2]=Pw(c[q>>2]|0)|0;if((c[u>>2]|0)<0)c[u>>2]=c[(c[q>>2]|0)+72>>2];l=c[u>>2]|0;c[u>>2]=l+1;c[n>>2]=l;if(c[w>>2]|0)c[c[w>>2]>>2]=c[n>>2];do if(!((d[(c[r>>2]|0)+42>>0]|0)&32)){if((c[v>>2]|0)!=0?(d[c[v>>2]>>0]|0|0)==0:0){o=11;break}zz(c[q>>2]|0,c[n>>2]|0,c[y>>2]|0,c[r>>2]|0,c[s>>2]|0)}else o=11;while(0);if((o|0)==11)yz(c[q>>2]|0,c[y>>2]|0,c[(c[r>>2]|0)+28>>2]|0,(c[s>>2]|0)==55&255,c[c[r>>2]>>2]|0);if(c[m>>2]|0)c[c[m>>2]>>2]=c[u>>2];c[x>>2]=0;c[A>>2]=c[(c[r>>2]|0)+8>>2];while(1){m=c[u>>2]|0;if(!(c[A>>2]|0))break;c[u>>2]=m+1;c[z>>2]=m;if(!((c[v>>2]|0)!=0?(d[(c[v>>2]|0)+((c[x>>2]|0)+1)>>0]|0|0)==0:0)){Vw(c[B>>2]|0,c[s>>2]|0,c[z>>2]|0,c[(c[A>>2]|0)+44>>2]|0,c[y>>2]|0)|0;Az(c[q>>2]|0,c[A>>2]|0)}if((a[(c[A>>2]|0)+55>>0]&3|0)==2?((d[(c[r>>2]|0)+42>>0]|0)&32|0)!=0:0){if(c[w>>2]|0)c[c[w>>2]>>2]=c[z>>2]}else Fh(c[B>>2]|0,a[t>>0]|0);c[A>>2]=c[(c[A>>2]|0)+20>>2];c[x>>2]=(c[x>>2]|0)+1}if((m|0)>(c[(c[q>>2]|0)+72>>2]|0))c[(c[q>>2]|0)+72>>2]=c[u>>2];c[p>>2]=c[x>>2];B=c[p>>2]|0;i=C;return B|0}function hC(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;i=i+48|0;f=o+36|0;g=o+32|0;h=o+28|0;l=o+24|0;m=o+20|0;j=o+16|0;q=o+12|0;p=o+8|0;k=o+4|0;n=o;c[f>>2]=a;c[g>>2]=b;c[h>>2]=e;c[p>>2]=we(c[f>>2]|0)|0;c[k>>2]=ve(c[f>>2]|0)|0;c[m>>2]=ae(c[c[h>>2]>>2]|0)|0;c[l>>2]=ae(c[(c[h>>2]|0)+4>>2]|0)|0;c[q>>2]=be(c[c[h>>2]>>2]|0)|0;if((c[q>>2]|0)>(c[(c[p>>2]|0)+88+32>>2]|0)){je(c[f>>2]|0,33682,-1);i=o;return}do if((c[g>>2]|0)==3){c[n>>2]=ae(c[(c[h>>2]|0)+8>>2]|0)|0;if(!(c[n>>2]|0)){i=o;return}if((Cx(c[n>>2]|0,-1)|0)==1){c[j>>2]=jC(n)|0;break}je(c[f>>2]|0,33715,-1);i=o;return}else c[j>>2]=d[(c[k>>2]|0)+2>>0];while(0);if(!((c[l>>2]|0)!=0&(c[m>>2]|0)!=0)){i=o;return}q=c[f>>2]|0;ke(q,Ph(c[m>>2]|0,c[l>>2]|0,c[k>>2]|0,c[j>>2]|0)|0);i=o;return}function iC(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;l=i;i=i+16|0;n=l+8|0;m=l+4|0;j=l+12|0;k=l;c[n>>2]=f;c[m>>2]=g;a[j>>0]=h;h=c[n>>2]|0;g=c[m>>2]|0;c[k>>2]=gi(h,g,If(c[m>>2]|0)|0,2,1,0)|0;if(!(c[k>>2]|0)){i=l;return}n=(c[k>>2]|0)+2|0;b[n>>1]=e[n>>1]|0|(d[j>>0]|0);i=l;return}function jC(a){a=a|0;var b=0,e=0,f=0,g=0,h=0;f=i;i=i+16|0;b=f+4|0;e=f;c[b>>2]=a;g=c[b>>2]|0;a=c[g>>2]|0;c[g>>2]=a+1;c[e>>2]=d[a>>0];if((c[e>>2]|0)>>>0<192){g=c[e>>2]|0;i=f;return g|0}c[e>>2]=d[26420+((c[e>>2]|0)-192)>>0];while(1){a=c[e>>2]|0;if(((d[c[c[b>>2]>>2]>>0]|0)&192|0)!=128)break;h=c[b>>2]|0;g=c[h>>2]|0;c[h>>2]=g+1;c[e>>2]=(a<<6)+(63&(d[g>>0]|0))}if((a>>>0>=128?(c[e>>2]&-2048|0)!=55296:0)?(c[e>>2]&-2|0)!=65534:0){h=c[e>>2]|0;i=f;return h|0}c[e>>2]=65533;h=c[e>>2]|0;i=f;return h|0}function kC(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+4|0;e=g;c[e>>2]=b;if((a[c[e>>2]>>0]|0)>=48?(a[c[e>>2]>>0]|0)<=50:0)c[d>>2]=(a[c[e>>2]>>0]|0)-48;else f=4;do if((f|0)==4){if(!(Td(c[e>>2]|0,33917)|0)){c[d>>2]=1;break}if(!(Td(c[e>>2]|0,27038)|0)){c[d>>2]=2;break}else{c[d>>2]=0;break}}while(0);i=g;return c[d>>2]|0}function lC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=mC(c[(c[f>>2]|0)+212>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function mC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;if(c[e>>2]|0){if((c[e>>2]|0)<0){b=c[e>>2]|0;b=rR(-1024,-1,b|0,((b|0)<0)<<31>>31|0)|0;a=(c[(c[d>>2]|0)+24>>2]|0)+(c[(c[d>>2]|0)+28>>2]|0)|0;a=pR(b|0,C|0,a|0,((a|0)<0)<<31>>31|0)|0;c[e>>2]=a}c[(c[d>>2]|0)+20>>2]=c[e>>2]}c[f>>2]=Zi(c[d>>2]|0)|0;if((c[f>>2]|0)>=(c[(c[d>>2]|0)+20>>2]|0)){f=c[f>>2]|0;i=g;return f|0}c[f>>2]=c[(c[d>>2]|0)+20>>2];f=c[f>>2]|0;i=g;return f|0}function nC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+8|0;f=g;c[e>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;if(!(c[e>>2]|0)){i=g;return}d=f;f=c[d+4>>2]|0;a=(c[e>>2]|0)+16|0;c[a>>2]=c[d>>2];c[a+4>>2]=f;i=g;return}function oC(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k+12|0;f=k+8|0;j=k+4|0;h=k;c[g>>2]=a;c[f>>2]=d;if(!((c[g>>2]|0)!=0&(c[f>>2]|0)!=0)){i=k;return}c[j>>2]=(c[g>>2]|0)+((c[f>>2]|0)*40|0);c[h>>2]=c[(c[g>>2]|0)+32>>2];if(c[(c[h>>2]|0)+528>>2]|0){do{if(c[(c[g>>2]|0)+24>>2]|0)Sf(c[h>>2]|0,c[(c[g>>2]|0)+20>>2]|0);a=(c[g>>2]|0)+40|0;c[g>>2]=a}while(a>>>0<(c[j>>2]|0)>>>0);i=k;return}do{f=c[g>>2]|0;if(!((e[(c[g>>2]|0)+8>>1]|0)&9312)){if(c[f+24>>2]|0){Sf(c[h>>2]|0,c[(c[g>>2]|0)+20>>2]|0);c[(c[g>>2]|0)+24>>2]=0}}else Ug(f);b[(c[g>>2]|0)+8>>1]=128;a=(c[g>>2]|0)+40|0;c[g>>2]=a}while(a>>>0<(c[j>>2]|0)>>>0);i=k;return}function pC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+80|0;l=o+8|0;k=o;f=o+44|0;p=o+40|0;g=o+36|0;h=o+32|0;j=o+28|0;m=o+24|0;n=o+48|0;c[f>>2]=a;c[p>>2]=b;c[g>>2]=d;c[h>>2]=e;c[m>>2]=c[(c[(c[c[f>>2]>>2]|0)+16>>2]|0)+(c[p>>2]<<4)>>2];c[j>>2]=1;while(1){if((c[j>>2]|0)>4)break;c[k>>2]=c[j>>2];Qd(24,n,34953,k)|0;if(pi(c[c[f>>2]>>2]|0,n,c[m>>2]|0)|0){p=c[f>>2]|0;e=c[g>>2]|0;d=c[h>>2]|0;c[l>>2]=c[m>>2];c[l+4>>2]=n;c[l+8>>2]=e;c[l+12>>2]=d;Ow(p,31809,l)}c[j>>2]=(c[j>>2]|0)+1}i=o;return}function qC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+48|0;h=e;g=e+36|0;j=e+32|0;l=e+28|0;k=e+24|0;f=e+20|0;c[g>>2]=a;c[j>>2]=b;c[l>>2]=d;c[k>>2]=Pw(c[g>>2]|0)|0;c[f>>2]=Wz(c[g>>2]|0)|0;Vw(c[k>>2]|0,118,c[j>>2]|0,c[f>>2]|0,c[l>>2]|0)|0;Bx(c[g>>2]|0);a=c[g>>2]|0;k=(c[l>>2]|0)==1?20769:20788;j=c[j>>2]|0;d=c[f>>2]|0;b=c[f>>2]|0;c[h>>2]=c[(c[(c[c[g>>2]>>2]|0)+16>>2]|0)+(c[l>>2]<<4)>>2];c[h+4>>2]=k;c[h+8>>2]=j;c[h+12>>2]=d;c[h+16>>2]=b;Ow(a,34897,h);_z(c[g>>2]|0,c[f>>2]|0);i=e;return}function rC(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;g=r+36|0;h=r+32|0;j=r+28|0;k=r+24|0;l=r+20|0;m=r+16|0;q=r+12|0;n=r+8|0;p=r+4|0;o=r;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=c[c[l>>2]>>2];do if(!(c[n>>2]&(c[n>>2]|0)-1)){c[p>>2]=(c[n>>2]|0)==0?1:c[n>>2]<<1;d=_(c[p>>2]|0,c[k>>2]|0)|0;c[o>>2]=Ew(c[h>>2]|0,c[j>>2]|0,d,((d|0)<0)<<31>>31)|0;if(c[o>>2]|0){c[j>>2]=c[o>>2];break}c[c[m>>2]>>2]=-1;c[g>>2]=c[j>>2];q=c[g>>2]|0;i=r;return q|0}while(0);c[q>>2]=c[j>>2];d=_(c[n>>2]|0,c[k>>2]|0)|0;kR((c[q>>2]|0)+d|0,0,c[k>>2]|0)|0;c[c[m>>2]>>2]=c[n>>2];q=c[l>>2]|0;c[q>>2]=(c[q>>2]|0)+1;c[g>>2]=c[j>>2];q=c[g>>2]|0;i=r;return q|0}function sC(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;h=q+28|0;j=q+24|0;k=q+20|0;l=q+16|0;m=q+12|0;n=q+8|0;p=q+4|0;o=q;c[h>>2]=a;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=0;c[p>>2]=0;if(c[(c[c[h>>2]>>2]|0)+24>>2]&8388608)c[p>>2]=fx(c[h>>2]|0,c[j>>2]|0)|0;c[o>>2]=c[p>>2];while(1){if(!(c[o>>2]|0))break;if((d[(c[o>>2]|0)+8>>0]|0|0)==(c[k>>2]|0)?(MF(c[(c[o>>2]|0)+16>>2]|0,c[l>>2]|0)|0)!=0:0)c[n>>2]=c[n>>2]|(d[(c[o>>2]|0)+9>>0]|0);c[o>>2]=c[(c[o>>2]|0)+32>>2]}if(!(c[m>>2]|0)){a=c[n>>2]|0;a=(a|0)!=0;b=c[p>>2]|0;b=a?b:0;i=q;return b|0}c[c[m>>2]>>2]=c[n>>2];a=c[n>>2]|0;a=(a|0)!=0;b=c[p>>2]|0;b=a?b:0;i=q;return b|0}function tC(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;l=n+8|0;k=n;f=n+24|0;g=n+20|0;h=n+16|0;j=n+12|0;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;if(!(((d[(c[h>>2]|0)+42>>0]|0)&16|0)!=0?(c[(c[c[(Ax(c[c[g>>2]>>2]|0,c[h>>2]|0)|0)+4>>2]>>2]|0)+52>>2]|0)==0:0))m=3;do if((m|0)==3){if((((d[(c[h>>2]|0)+42>>0]|0)&1|0)!=0?(c[(c[c[g>>2]>>2]|0)+24>>2]&2048|0)==0:0)?(d[(c[g>>2]|0)+18>>0]|0|0)==0:0)break;if((c[j>>2]|0)==0?(c[(c[h>>2]|0)+12>>2]|0)!=0:0){m=c[g>>2]|0;c[l>>2]=c[c[h>>2]>>2];Ah(m,36112,l);c[f>>2]=1;m=c[f>>2]|0;i=n;return m|0}c[f>>2]=0;m=c[f>>2]|0;i=n;return m|0}while(0);m=c[g>>2]|0;c[k>>2]=c[c[h>>2]>>2];Ah(m,36083,k);c[f>>2]=1;m=c[f>>2]|0;i=n;return m|0}function uC(a){a=a|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;a=(c[e>>2]|0)+88|0;b[a>>1]=b[a>>1]&-5|4;i=d;return}function vC(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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,J=0,K=0,L=0,M=0,N=0,O=0;O=i;i=i+128|0;u=O+108|0;v=O+104|0;w=O+100|0;l=O+96|0;r=O+92|0;x=O+88|0;z=O+84|0;n=O+80|0;I=O+76|0;J=O+72|0;H=O+68|0;o=O+64|0;C=O+60|0;D=O+56|0;F=O+52|0;E=O+48|0;y=O+44|0;s=O+40|0;A=O+36|0;B=O+32|0;M=O+28|0;t=O+24|0;q=O+20|0;K=O+16|0;L=O+12|0;m=O+8|0;p=O+4|0;G=O+112|0;N=O;c[v>>2]=f;c[w>>2]=g;c[l>>2]=h;c[r>>2]=j;c[x>>2]=k;c[z>>2]=c[c[v>>2]>>2];c[A>>2]=0;c[B>>2]=0;c[q>>2]=0;if(!(c[l>>2]|0)){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if((c[(c[v>>2]|0)+536>>2]|0)==0?(c[(c[l>>2]|0)+68>>2]|0)==0:0){if(fx(c[v>>2]|0,c[w>>2]|0)|0){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(d[(c[w>>2]|0)+42>>0]&16){ -c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if((c[r>>2]|0)==10){if((b[(c[w>>2]|0)+32>>1]|0)>=0)c[r>>2]=d[(c[w>>2]|0)+43>>0];if((c[r>>2]|0)==10)c[r>>2]=2}if((c[c[(c[l>>2]|0)+32>>2]>>2]|0)!=1){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(c[(c[(c[l>>2]|0)+32>>2]|0)+8+20>>2]|0){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(c[(c[l>>2]|0)+36>>2]|0){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(c[(c[l>>2]|0)+48>>2]|0){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(c[(c[l>>2]|0)+40>>2]|0){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(c[(c[l>>2]|0)+60>>2]|0){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(c[(c[l>>2]|0)+52>>2]|0){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(e[(c[l>>2]|0)+6>>1]&1){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}c[n>>2]=c[c[l>>2]>>2];if((c[c[n>>2]>>2]|0)!=1){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if((d[c[c[(c[n>>2]|0)+4>>2]>>2]>>0]|0)!=158){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}c[o>>2]=(c[(c[l>>2]|0)+32>>2]|0)+8;c[I>>2]=_w(c[v>>2]|0,0,c[o>>2]|0)|0;if(!(c[I>>2]|0)){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if((c[I>>2]|0)==(c[w>>2]|0)){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(((d[(c[w>>2]|0)+42>>0]&32|0)==0|0)!=((d[(c[I>>2]|0)+42>>0]&32|0)==0|0)){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(d[(c[I>>2]|0)+42>>0]&16){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(c[(c[I>>2]|0)+12>>2]|0){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if((b[(c[w>>2]|0)+34>>1]|0)!=(b[(c[I>>2]|0)+34>>1]|0)){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if((b[(c[w>>2]|0)+32>>1]|0)!=(b[(c[I>>2]|0)+32>>1]|0)){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}c[C>>2]=0;a:while(1){if((c[C>>2]|0)>=(b[(c[w>>2]|0)+34>>1]|0)){l=64;break}c[m>>2]=(c[(c[w>>2]|0)+4>>2]|0)+((c[C>>2]|0)*24|0);c[p>>2]=(c[(c[I>>2]|0)+4>>2]|0)+((c[C>>2]|0)*24|0);if((a[(c[m>>2]|0)+21>>0]|0)!=(a[(c[p>>2]|0)+21>>0]|0)){l=52;break}if(Td(c[(c[m>>2]|0)+16>>2]|0,c[(c[p>>2]|0)+16>>2]|0)|0){l=54;break}if((d[(c[m>>2]|0)+20>>0]|0)!=0?(a[(c[p>>2]|0)+20>>0]|0)==0:0){l=57;break}do if((c[C>>2]|0)>0){if(((c[(c[m>>2]|0)+8>>2]|0)==0|0)!=((c[(c[p>>2]|0)+8>>2]|0)==0|0)){l=62;break a}if(!(c[(c[m>>2]|0)+8>>2]|0))break;if(yQ(c[(c[m>>2]|0)+8>>2]|0,c[(c[p>>2]|0)+8>>2]|0)|0){l=62;break a}}while(0);c[C>>2]=(c[C>>2]|0)+1}if((l|0)==52){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}else if((l|0)==54){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}else if((l|0)==57){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}else if((l|0)==62){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}else if((l|0)==64){c[H>>2]=c[(c[w>>2]|0)+8>>2];while(1){if(!(c[H>>2]|0))break;if(d[(c[H>>2]|0)+54>>0]|0)c[q>>2]=1;c[J>>2]=c[(c[I>>2]|0)+8>>2];while(1){if(!(c[J>>2]|0))break;if(OF(c[H>>2]|0,c[J>>2]|0)|0)break;c[J>>2]=c[(c[J>>2]|0)+20>>2]}if(!(c[J>>2]|0)){l=73;break}c[H>>2]=c[(c[H>>2]|0)+20>>2]}if((l|0)==73){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}do if(c[(c[w>>2]|0)+24>>2]|0){if(!(qy(c[(c[I>>2]|0)+24>>2]|0,c[(c[w>>2]|0)+24>>2]|0,-1)|0))break;c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}while(0);do if(c[(c[z>>2]|0)+24>>2]&524288){if(!(c[(c[w>>2]|0)+16>>2]|0))break;c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}while(0);if(c[(c[z>>2]|0)+24>>2]&128){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}c[D>>2]=Dh(c[z>>2]|0,c[(c[I>>2]|0)+64>>2]|0)|0;c[M>>2]=Pw(c[v>>2]|0)|0;bx(c[v>>2]|0,c[D>>2]|0);p=(c[v>>2]|0)+72|0;h=c[p>>2]|0;c[p>>2]=h+1;c[F>>2]=h;h=(c[v>>2]|0)+72|0;p=c[h>>2]|0;c[h>>2]=p+1;c[E>>2]=p;c[t>>2]=wC(c[v>>2]|0,c[x>>2]|0,c[w>>2]|0)|0;c[K>>2]=Wz(c[v>>2]|0)|0;c[L>>2]=Wz(c[v>>2]|0)|0;zz(c[v>>2]|0,c[E>>2]|0,c[x>>2]|0,c[w>>2]|0,55);do if(!(c[(c[z>>2]|0)+24>>2]&134217728)){if((b[(c[w>>2]|0)+32>>1]|0)<0){if(!((c[q>>2]|0)!=0?1:(c[(c[w>>2]|0)+8>>2]|0)!=0))l=87}else if(!(c[q>>2]|0))l=87;if((l|0)==87?!((c[r>>2]|0)!=2&(c[r>>2]|0)!=1):0)break;c[y>>2]=Rw(c[M>>2]|0,108,c[E>>2]|0,0)|0;c[A>>2]=Yw(c[M>>2]|0,13)|0;Fz(c[M>>2]|0,c[y>>2]|0)}while(0);l=c[v>>2]|0;if(!(d[(c[I>>2]|0)+42>>0]&32)){zz(l,c[F>>2]|0,c[D>>2]|0,c[I>>2]|0,54);c[B>>2]=Rw(c[M>>2]|0,108,c[F>>2]|0,0)|0;do if((b[(c[w>>2]|0)+32>>1]|0)<0){l=c[M>>2]|0;if(!(c[(c[w>>2]|0)+8>>2]|0)){c[y>>2]=Rw(l,74,c[E>>2]|0,c[L>>2]|0)|0;break}else{c[y>>2]=Rw(l,103,c[F>>2]|0,c[L>>2]|0)|0;break}}else{c[y>>2]=Rw(c[M>>2]|0,103,c[F>>2]|0,c[L>>2]|0)|0;c[s>>2]=Vw(c[M>>2]|0,70,c[E>>2]|0,0,c[L>>2]|0)|0;CE(c[v>>2]|0,c[r>>2]|0,c[w>>2]|0);Fz(c[M>>2]|0,c[s>>2]|0);CC(c[v>>2]|0,c[t>>2]|0,c[L>>2]|0)}while(0);Rw(c[M>>2]|0,102,c[F>>2]|0,c[K>>2]|0)|0;Uw(c[M>>2]|0,75,c[E>>2]|0,c[K>>2]|0,c[L>>2]|0,c[c[w>>2]>>2]|0,0)|0;Fh(c[M>>2]|0,11);Rw(c[M>>2]|0,7,c[F>>2]|0,c[y>>2]|0)|0;Rw(c[M>>2]|0,61,c[F>>2]|0,0)|0;Rw(c[M>>2]|0,61,c[E>>2]|0,0)|0}else{yz(l,c[x>>2]|0,c[(c[w>>2]|0)+28>>2]|0,1,c[c[w>>2]>>2]|0);yz(c[v>>2]|0,c[D>>2]|0,c[(c[I>>2]|0)+28>>2]|0,0,c[c[I>>2]>>2]|0)}c[H>>2]=c[(c[w>>2]|0)+8>>2];while(1){if(!(c[H>>2]|0))break;a[G>>0]=0;c[J>>2]=c[(c[I>>2]|0)+8>>2];while(1){if(!(c[J>>2]|0))break;if(OF(c[H>>2]|0,c[J>>2]|0)|0)break;c[J>>2]=c[(c[J>>2]|0)+20>>2]}Vw(c[M>>2]|0,54,c[F>>2]|0,c[(c[J>>2]|0)+44>>2]|0,c[D>>2]|0)|0;Az(c[v>>2]|0,c[J>>2]|0);Vw(c[M>>2]|0,55,c[E>>2]|0,c[(c[H>>2]|0)+44>>2]|0,c[x>>2]|0)|0;Az(c[v>>2]|0,c[H>>2]|0);Fh(c[M>>2]|0,1);c[y>>2]=Rw(c[M>>2]|0,108,c[F>>2]|0,0)|0;Rw(c[M>>2]|0,101,c[F>>2]|0,c[K>>2]|0)|0;do if(c[(c[z>>2]|0)+24>>2]&134217728){c[C>>2]=0;while(1){if((c[C>>2]|0)>=(e[(c[J>>2]|0)+52>>1]|0))break;c[N>>2]=c[(c[(c[J>>2]|0)+32>>2]|0)+(c[C>>2]<<2)>>2];if(Td(35690,c[N>>2]|0)|0)break;c[C>>2]=(c[C>>2]|0)+1}if((c[C>>2]|0)!=(e[(c[J>>2]|0)+52>>1]|0))break;a[G>>0]=16;Vw(c[M>>2]|0,105,c[E>>2]|0,0,-1)|0}while(0);do if(d[(c[I>>2]|0)+42>>0]&32){if((a[(c[H>>2]|0)+55>>0]&3|0)!=2)break;a[G>>0]=d[G>>0]|1}while(0);Vw(c[M>>2]|0,110,c[E>>2]|0,c[K>>2]|0,1)|0;Fh(c[M>>2]|0,a[G>>0]|0);Rw(c[M>>2]|0,7,c[F>>2]|0,(c[y>>2]|0)+1|0)|0;Fz(c[M>>2]|0,c[y>>2]|0);Rw(c[M>>2]|0,61,c[F>>2]|0,0)|0;Rw(c[M>>2]|0,61,c[E>>2]|0,0)|0;c[H>>2]=c[(c[H>>2]|0)+20>>2]}if(c[B>>2]|0)Fz(c[M>>2]|0,c[B>>2]|0);_z(c[v>>2]|0,c[L>>2]|0);_z(c[v>>2]|0,c[K>>2]|0);if(c[A>>2]|0){Rw(c[M>>2]|0,21,0,0)|0;Fz(c[M>>2]|0,c[A>>2]|0);Rw(c[M>>2]|0,61,c[E>>2]|0,0)|0;c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}else{c[u>>2]=1;N=c[u>>2]|0;i=O;return N|0}}}c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}function wC(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;f=n+24|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;m=n+4|0;l=n;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;c[k>>2]=0;if((d[(c[j>>2]|0)+42>>0]|0)&8){b=c[g>>2]|0;if(c[(c[g>>2]|0)+416>>2]|0)b=c[b+416>>2]|0;c[m>>2]=b;c[l>>2]=c[(c[m>>2]|0)+412>>2];while(1){if(c[l>>2]|0)a=(c[(c[l>>2]|0)+4>>2]|0)!=(c[j>>2]|0);else a=0;b=c[l>>2]|0;if(!a)break;c[l>>2]=c[b>>2]}do if(!b){c[l>>2]=Fw(c[c[g>>2]>>2]|0,16,0)|0;if(c[l>>2]|0){c[c[l>>2]>>2]=c[(c[m>>2]|0)+412>>2];c[(c[m>>2]|0)+412>>2]=c[l>>2];c[(c[l>>2]|0)+4>>2]=c[j>>2];c[(c[l>>2]|0)+8>>2]=c[h>>2];h=(c[m>>2]|0)+76|0;c[h>>2]=(c[h>>2]|0)+1;h=(c[m>>2]|0)+76|0;j=(c[h>>2]|0)+1|0;c[h>>2]=j;c[(c[l>>2]|0)+12>>2]=j;m=(c[m>>2]|0)+76|0;c[m>>2]=(c[m>>2]|0)+1;break}c[f>>2]=0;m=c[f>>2]|0;i=n;return m|0}while(0);c[k>>2]=c[(c[l>>2]|0)+12>>2]}c[f>>2]=c[k>>2];m=c[f>>2]|0;i=n;return m|0}function xC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;xz(c[f>>2]|0,17,c[g>>2]|0)|0;a[(c[(c[f>>2]|0)+24>>2]|0)+19>>0]=0;c[(c[(c[f>>2]|0)+24>>2]|0)+60>>2]=0;i=e;return}function yC(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;q=r+40|0;f=r+36|0;g=r+32|0;h=r+28|0;p=r+24|0;j=r+20|0;k=r+16|0;n=r+12|0;m=r+8|0;l=r+4|0;o=r;c[f>>2]=a;c[g>>2]=b;c[h>>2]=e;c[p>>2]=Pw(c[f>>2]|0)|0;c[k>>2]=Bz(c[p>>2]|0)|0;if((d[(c[h>>2]|0)+42>>0]|0)&16)f=Ax(c[c[f>>2]>>2]|0,c[h>>2]|0)|0;else f=0;c[n>>2]=f;c[j>>2]=1;a:while(1){if((c[j>>2]|0)>=(c[k>>2]|0)){f=18;break}c[m>>2]=Mz(c[p>>2]|0,c[j>>2]|0)|0;b:do if((d[c[m>>2]>>0]|0|0)==54?(c[(c[m>>2]|0)+12>>2]|0)==(c[g>>2]|0):0){c[o>>2]=c[(c[m>>2]|0)+8>>2];if((c[o>>2]|0)==(c[(c[h>>2]|0)+28>>2]|0)){f=8;break a}c[l>>2]=c[(c[h>>2]|0)+8>>2];while(1){if(!(c[l>>2]|0))break b;if((c[o>>2]|0)==(c[(c[l>>2]|0)+44>>2]|0)){f=12;break a}c[l>>2]=c[(c[l>>2]|0)+20>>2]}}while(0);if((d[c[m>>2]>>0]|0|0)==152?(c[(c[m>>2]|0)+16>>2]|0)==(c[n>>2]|0):0){f=16;break}c[j>>2]=(c[j>>2]|0)+1}if((f|0)==8){c[q>>2]=1;q=c[q>>2]|0;i=r;return q|0}else if((f|0)==12){c[q>>2]=1;q=c[q>>2]|0;i=r;return q|0}else if((f|0)==16){c[q>>2]=1;q=c[q>>2]|0;i=r;return q|0}else if((f|0)==18){c[q>>2]=0;q=c[q>>2]|0;i=r;return q|0}return 0}function zC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;k=e+16|0;g=e+12|0;h=e+8|0;j=e+4|0;f=e;c[k>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=c[(c[k>>2]|0)+8>>2];xA(c[k>>2]|0,c[g>>2]|0,c[h>>2]|0);a=(c[k>>2]|0)+76|0;d=(c[a>>2]|0)+1|0;c[a>>2]=d;c[f>>2]=d;Rw(c[j>>2]|0,30,c[h>>2]|0,c[f>>2]|0)|0;KA(c[g>>2]|0,c[f>>2]|0);i=e;return}function AC(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;k=n+12|0;l=n+8|0;m=n+4|0;j=n;c[g>>2]=d;c[h>>2]=e;c[k>>2]=f;c[m>>2]=c[(c[h>>2]|0)+20>>2];if(!(c[m>>2]|0)){c[j>>2]=wA(c[g>>2]|0)|0;d=(b[(c[h>>2]|0)+34>>1]|0)+1|0;c[m>>2]=yh(0,d,((d|0)<0)<<31>>31)|0;if(!(c[m>>2]|0)){jh(c[j>>2]|0);i=n;return}c[l>>2]=0;while(1){if((c[l>>2]|0)>=(b[(c[h>>2]|0)+34>>1]|0))break;a[(c[m>>2]|0)+(c[l>>2]|0)>>0]=a[(c[(c[h>>2]|0)+4>>2]|0)+((c[l>>2]|0)*24|0)+21>>0]|0;c[l>>2]=(c[l>>2]|0)+1}do{d=c[l>>2]|0;c[l>>2]=d+-1;a[(c[m>>2]|0)+d>>0]=0;if((c[l>>2]|0)<0)break}while((a[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)==65);c[(c[h>>2]|0)+20>>2]=c[m>>2]}c[l>>2]=If(c[m>>2]|0)|0;if(!(c[l>>2]|0)){i=n;return}g=c[g>>2]|0;if(c[k>>2]|0){Uw(g,48,c[k>>2]|0,c[l>>2]|0,0,c[m>>2]|0,c[l>>2]|0)|0;i=n;return}else{Ih(g,-1,c[m>>2]|0,c[l>>2]|0);i=n;return}}function BC(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=i;i=i+48|0;m=v+36|0;w=v+32|0;n=v+28|0;o=v+24|0;p=v+20|0;q=v+16|0;r=v+12|0;s=v+8|0;t=v+4|0;u=v;c[m>>2]=a;c[w>>2]=b;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=j;c[s>>2]=k;c[t>>2]=l;c[u>>2]=c[w>>2];while(1){if(!(c[u>>2]|0))break;if(((d[(c[u>>2]|0)+8>>0]|0|0)==(c[n>>2]|0)?(d[(c[u>>2]|0)+9>>0]|0|0)==(c[p>>2]|0):0)?(MF(c[(c[u>>2]|0)+16>>2]|0,c[o>>2]|0)|0)!=0:0)LE(c[m>>2]|0,c[u>>2]|0,c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[t>>2]|0);c[u>>2]=c[(c[u>>2]|0)+32>>2]}i=v;return}function CC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if((c[f>>2]|0)<=0){i=h;return}Rw(c[(c[e>>2]|0)+8>>2]|0,137,c[f>>2]|0,c[g>>2]|0)|0;i=h;return}function DC(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=a;c[g>>2]=b;c[h>>2]=e;if((d[(c[f>>2]|0)+23>>0]|0|0)!=0?(FA(c[g>>2]|0)|0)!=0:0){_A(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,0);i=j;return}xA(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0);i=j;return}function EC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;l=k+20|0;d=k+16|0;h=k+12|0;f=k+8|0;g=k+4|0;e=k;c[l>>2]=a;c[d>>2]=b;a=c[l>>2]|0;if(c[(c[l>>2]|0)+416>>2]|0)a=c[a+416>>2]|0;c[h>>2]=a;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[h>>2]|0)+456>>2]|0))break;if((c[d>>2]|0)==(c[(c[(c[h>>2]|0)+524>>2]|0)+(c[f>>2]<<2)>>2]|0)){j=10;break}c[f>>2]=(c[f>>2]|0)+1}if((j|0)==10){i=k;return}c[g>>2]=(c[(c[h>>2]|0)+456>>2]|0)+1<<2;l=c[g>>2]|0;c[e>>2]=Md(c[(c[h>>2]|0)+524>>2]|0,l,((l|0)<0)<<31>>31)|0;if(c[e>>2]|0){c[(c[h>>2]|0)+524>>2]=c[e>>2];j=c[d>>2]|0;g=(c[h>>2]|0)+456|0;l=c[g>>2]|0;c[g>>2]=l+1;c[(c[(c[h>>2]|0)+524>>2]|0)+(l<<2)>>2]=j;i=k;return}else{jh(c[c[h>>2]>>2]|0);i=k;return}}function FC(f,g,h,j,k,l,m,n,o,p,q,r){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var 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;na=i;i=i+192|0;A=na;E=na+176|0;F=na+172|0;H=na+168|0;I=na+164|0;J=na+160|0;K=na+156|0;L=na+152|0;M=na+183|0;N=na+182|0;O=na+148|0;G=na+144|0;s=na+140|0;ka=na+136|0;ca=na+132|0;da=na+128|0;S=na+124|0;T=na+120|0;Z=na+116|0;w=na+112|0;$=na+108|0;t=na+104|0;ja=na+100|0;_=na+96|0;X=na+92|0;W=na+88|0;Y=na+181|0;R=na+180|0;ia=na+84|0;B=na+80|0;x=na+76|0;v=na+72|0;y=na+68|0;C=na+64|0;u=na+60|0;z=na+56|0;ga=na+52|0;ha=na+48|0;V=na+44|0;Q=na+40|0;U=na+36|0;la=na+32|0;ma=na+28|0;P=na+24|0;aa=na+20|0;fa=na+16|0;ba=na+12|0;ea=na+8|0;c[E>>2]=f;c[F>>2]=g;c[H>>2]=h;c[I>>2]=j;c[J>>2]=k;c[K>>2]=l;c[L>>2]=m;a[M>>0]=n;a[N>>0]=o;c[O>>2]=p;c[G>>2]=q;c[s>>2]=r;c[da>>2]=0;c[ja>>2]=0;c[X>>2]=0;c[W>>2]=0;a[R>>0]=0;c[ia>>2]=-1;a[Y>>0]=(c[L>>2]|0)!=0;c[S>>2]=c[c[E>>2]>>2];c[ka>>2]=Pw(c[E>>2]|0)|0;c[w>>2]=b[(c[F>>2]|0)+34>>1];if(!(d[(c[F>>2]|0)+42>>0]&32)){c[da>>2]=0;c[_>>2]=1}else{c[da>>2]=Ej(c[F>>2]|0)|0;c[_>>2]=e[(c[da>>2]|0)+50>>1]}c[T>>2]=0;while(1){if((c[T>>2]|0)>=(c[w>>2]|0))break;a:do if((c[T>>2]|0)!=(b[(c[F>>2]|0)+32>>1]|0)){if((c[s>>2]|0)!=0?(c[(c[s>>2]|0)+(c[T>>2]<<2)>>2]|0)<0:0)break;c[$>>2]=d[(c[(c[F>>2]|0)+4>>2]|0)+((c[T>>2]|0)*24|0)+20>>0];if(c[$>>2]|0){if((d[N>>0]|0)==10){if((c[$>>2]|0)==10)c[$>>2]=2}else c[$>>2]=d[N>>0];if((c[$>>2]|0)==5?(c[(c[(c[F>>2]|0)+4>>2]|0)+((c[T>>2]|0)*24|0)+4>>2]|0)==0:0)c[$>>2]=2;switch(c[$>>2]|0){case 2:{Bx(c[E>>2]|0);break}case 3:case 1:break;case 4:{Rw(c[ka>>2]|0,76,(c[K>>2]|0)+1+(c[T>>2]|0)|0,c[O>>2]|0)|0;break a}default:{c[t>>2]=xz(c[ka>>2]|0,77,(c[K>>2]|0)+1+(c[T>>2]|0)|0)|0;xA(c[E>>2]|0,c[(c[(c[F>>2]|0)+4>>2]|0)+((c[T>>2]|0)*24|0)+4>>2]|0,(c[K>>2]|0)+1+(c[T>>2]|0)|0);Fz(c[ka>>2]|0,c[t>>2]|0);break a}}m=c[S>>2]|0;l=c[(c[(c[F>>2]|0)+4>>2]|0)+((c[T>>2]|0)*24|0)>>2]|0;c[A>>2]=c[c[F>>2]>>2];c[A+4>>2]=l;c[B>>2]=Bh(m,31016,A)|0;Uw(c[ka>>2]|0,20,1299,c[$>>2]|0,(c[K>>2]|0)+1+(c[T>>2]|0)|0,c[B>>2]|0,-1)|0;Fh(c[ka>>2]|0,1)}}while(0);c[T>>2]=(c[T>>2]|0)+1}b:do if((c[(c[F>>2]|0)+24>>2]|0)!=0?(c[(c[S>>2]|0)+24>>2]&8192|0)==0:0){c[x>>2]=c[(c[F>>2]|0)+24>>2];c[(c[E>>2]|0)+100>>2]=(c[K>>2]|0)+1;c[$>>2]=(d[N>>0]|0)!=10?d[N>>0]|0:2;c[T>>2]=0;while(1){if((c[T>>2]|0)>=(c[c[x>>2]>>2]|0))break b;c[y>>2]=c[(c[(c[x>>2]|0)+4>>2]|0)+((c[T>>2]|0)*20|0)>>2];if(!((c[s>>2]|0)!=0?(BE(c[y>>2]|0,c[s>>2]|0,d[M>>0]|0)|0)!=0:0)){c[v>>2]=Cz(c[ka>>2]|0)|0;MA(c[E>>2]|0,c[y>>2]|0,c[v>>2]|0,16);if((c[$>>2]|0)==4)Ez(c[ka>>2]|0,c[O>>2]|0)|0;else{c[C>>2]=c[(c[(c[x>>2]|0)+4>>2]|0)+((c[T>>2]|0)*20|0)+4>>2];if(!(c[C>>2]|0))c[C>>2]=c[c[F>>2]>>2];if((c[$>>2]|0)==5)c[$>>2]=2;bA(c[E>>2]|0,275,c[$>>2]|0,c[C>>2]|0,0,3)}Gz(c[ka>>2]|0,c[v>>2]|0)}c[T>>2]=(c[T>>2]|0)+1}}while(0);if((d[M>>0]|0)!=0&(c[da>>2]|0)==0){c[u>>2]=Cz(c[ka>>2]|0)|0;c[$>>2]=d[(c[F>>2]|0)+43>>0];if((d[N>>0]|0)==10){if((c[$>>2]|0)==10)c[$>>2]=2}else c[$>>2]=d[N>>0];if(a[Y>>0]|0){Vw(c[ka>>2]|0,79,c[K>>2]|0,c[u>>2]|0,c[L>>2]|0)|0;Fh(c[ka>>2]|0,-112)}c:do if((c[$>>2]|0)==5?(d[N>>0]|0)!=5:0){c[ca>>2]=c[(c[F>>2]|0)+8>>2];while(1){if(!(c[ca>>2]|0))break c;if((d[(c[ca>>2]|0)+54>>0]|0)==4)break;if((d[(c[ca>>2]|0)+54>>0]|0)==3)break;c[ca>>2]=c[(c[ca>>2]|0)+20>>2]}c[X>>2]=Yw(c[ka>>2]|0,13)|0}while(0);Vw(c[ka>>2]|0,70,c[I>>2]|0,c[u>>2]|0,c[K>>2]|0)|0;switch(c[$>>2]|0){case 3:case 2:case 1:{D=55;break}case 5:{c[z>>2]=0;if(c[(c[S>>2]|0)+24>>2]&262144)c[z>>2]=sC(c[E>>2]|0,c[F>>2]|0,109,0,0)|0;if((c[z>>2]|0)==0?(DE(c[E>>2]|0,c[F>>2]|0,0,0)|0)==0:0){if(c[(c[F>>2]|0)+8>>2]|0){EE(c[E>>2]|0);GE(c[E>>2]|0,c[F>>2]|0,c[I>>2]|0,c[J>>2]|0,0,-1)}}else{EE(c[E>>2]|0);FE(c[E>>2]|0,c[F>>2]|0,c[z>>2]|0,c[I>>2]|0,c[J>>2]|0,c[K>>2]|0,1,0,5,1,-1)}c[ja>>2]=1;break}case 4:{Ez(c[ka>>2]|0,c[O>>2]|0)|0;break}default:{c[$>>2]=2;D=55}}if((D|0)==55)CE(c[E>>2]|0,c[$>>2]|0,c[F>>2]|0);Gz(c[ka>>2]|0,c[u>>2]|0);if(c[X>>2]|0){c[W>>2]=Yw(c[ka>>2]|0,13)|0;Fz(c[ka>>2]|0,c[X>>2]|0)}}c[Z>>2]=0;c[ca>>2]=c[(c[F>>2]|0)+8>>2];while(1){if(!(c[ca>>2]|0))break;do if(c[(c[H>>2]|0)+(c[Z>>2]<<2)>>2]|0){if(!(d[R>>0]|0)){AC(c[ka>>2]|0,c[F>>2]|0,(c[K>>2]|0)+1|0);a[R>>0]=1}c[V>>2]=(c[J>>2]|0)+(c[Z>>2]|0);c[Q>>2]=Cz(c[ka>>2]|0)|0;if(c[(c[ca>>2]|0)+36>>2]|0){Rw(c[ka>>2]|0,25,0,c[(c[H>>2]|0)+(c[Z>>2]<<2)>>2]|0)|0;c[(c[E>>2]|0)+100>>2]=(c[K>>2]|0)+1;jA(c[E>>2]|0,c[(c[ca>>2]|0)+36>>2]|0,c[Q>>2]|0,16);c[(c[E>>2]|0)+100>>2]=0}c[ga>>2]=kA(c[E>>2]|0,e[(c[ca>>2]|0)+52>>1]|0)|0;c[T>>2]=0;while(1){if((c[T>>2]|0)>=(e[(c[ca>>2]|0)+52>>1]|0))break;c[U>>2]=b[(c[(c[ca>>2]|0)+4>>2]|0)+(c[T>>2]<<1)>>1];do if((c[U>>2]|0)==-2){c[(c[E>>2]|0)+100>>2]=(c[K>>2]|0)+1;sA(c[E>>2]|0,c[(c[(c[(c[ca>>2]|0)+40>>2]|0)+4>>2]|0)+((c[T>>2]|0)*20|0)>>2]|0,(c[ga>>2]|0)+(c[T>>2]|0)|0);c[(c[E>>2]|0)+100>>2]=0}else{if((c[U>>2]|0)!=-1?(c[U>>2]|0)!=(b[(c[F>>2]|0)+32>>1]|0):0)c[la>>2]=(c[U>>2]|0)+(c[K>>2]|0)+1;else{if((c[ia>>2]|0)==((c[ga>>2]|0)+(c[T>>2]|0)|0))break;c[la>>2]=c[K>>2];if(c[(c[ca>>2]|0)+36>>2]|0)s=-1;else s=(c[ga>>2]|0)+(c[T>>2]|0)|0;c[ia>>2]=s}Rw(c[ka>>2]|0,(c[U>>2]|0)<0?32:31,c[la>>2]|0,(c[ga>>2]|0)+(c[T>>2]|0)|0)|0}while(0);c[T>>2]=(c[T>>2]|0)+1}Vw(c[ka>>2]|0,49,c[ga>>2]|0,e[(c[ca>>2]|0)+52>>1]|0,c[(c[H>>2]|0)+(c[Z>>2]<<2)>>2]|0)|0;CA(c[E>>2]|0,c[ga>>2]|0,e[(c[ca>>2]|0)+52>>1]|0);if(((d[Y>>0]|0)!=0?(c[da>>2]|0)==(c[ca>>2]|0):0)?(d[M>>0]|0)==0:0){Gz(c[ka>>2]|0,c[Q>>2]|0);break}c[$>>2]=d[(c[ca>>2]|0)+54>>0];if(!(c[$>>2]|0)){nA(c[E>>2]|0,c[ga>>2]|0,e[(c[ca>>2]|0)+52>>1]|0);Gz(c[ka>>2]|0,c[Q>>2]|0);break}if((d[N>>0]|0)==10){if((c[$>>2]|0)==10)c[$>>2]=2}else c[$>>2]=d[N>>0];Eh(c[ka>>2]|0,67,c[V>>2]|0,c[Q>>2]|0,c[ga>>2]|0,e[(c[ca>>2]|0)+50>>1]|0)|0;if((c[ca>>2]|0)==(c[da>>2]|0))s=c[ga>>2]|0;else s=kA(c[E>>2]|0,c[_>>2]|0)|0;c[ha>>2]=s;d:do if((d[Y>>0]|0)!=0|(c[$>>2]|0)==5){if(!(d[(c[F>>2]|0)+42>>0]&32)){Rw(c[ka>>2]|0,113,c[V>>2]|0,c[ha>>2]|0)|0;if(!(a[Y>>0]|0))break;Vw(c[ka>>2]|0,79,c[ha>>2]|0,c[Q>>2]|0,c[L>>2]|0)|0;Fh(c[ka>>2]|0,-112);break}e:do if((c[ca>>2]|0)!=(c[da>>2]|0)){c[T>>2]=0;while(1){if((c[T>>2]|0)>=(e[(c[da>>2]|0)+50>>1]|0))break e;c[ma>>2]=(uA(c[ca>>2]|0,b[(c[(c[da>>2]|0)+4>>2]|0)+(c[T>>2]<<1)>>1]|0)|0)<<16>>16;Vw(c[ka>>2]|0,47,c[V>>2]|0,c[ma>>2]|0,(c[ha>>2]|0)+(c[T>>2]|0)|0)|0;c[T>>2]=(c[T>>2]|0)+1}}while(0);if(a[Y>>0]|0){D=Bz(c[ka>>2]|0)|0;c[P>>2]=D+(e[(c[da>>2]|0)+50>>1]|0);c[aa>>2]=78;c[fa>>2]=(a[(c[ca>>2]|0)+55>>0]&3|0)==2?c[ga>>2]|0:c[ha>>2]|0;c[T>>2]=0;while(1){if((c[T>>2]|0)>=(e[(c[da>>2]|0)+50>>1]|0))break d;c[ba>>2]=Dz(c[E>>2]|0,c[(c[(c[da>>2]|0)+32>>2]|0)+(c[T>>2]<<2)>>2]|0)|0;c[ma>>2]=b[(c[(c[da>>2]|0)+4>>2]|0)+(c[T>>2]<<1)>>1];if((c[T>>2]|0)==((e[(c[da>>2]|0)+50>>1]|0)-1|0)){c[P>>2]=c[Q>>2];c[aa>>2]=79}Uw(c[ka>>2]|0,c[aa>>2]|0,(c[L>>2]|0)+1+(c[ma>>2]|0)|0,c[P>>2]|0,(c[fa>>2]|0)+(c[T>>2]|0)|0,c[ba>>2]|0,-4)|0;Fh(c[ka>>2]|0,-112);c[T>>2]=(c[T>>2]|0)+1}}}while(0);switch(c[$>>2]|0){case 3:case 2:case 1:{Zz(c[E>>2]|0,c[$>>2]|0,c[ca>>2]|0);break}case 4:{Ez(c[ka>>2]|0,c[O>>2]|0)|0;break}default:{c[ea>>2]=0;EE(c[E>>2]|0);if(c[(c[S>>2]|0)+24>>2]&262144)c[ea>>2]=sC(c[E>>2]|0,c[F>>2]|0,109,0,0)|0;FE(c[E>>2]|0,c[F>>2]|0,c[ea>>2]|0,c[I>>2]|0,c[J>>2]|0,c[ha>>2]|0,c[_>>2]&65535,0,5,((c[ca>>2]|0)==(c[da>>2]|0)?1:0)&255,-1);c[ja>>2]=1}}Gz(c[ka>>2]|0,c[Q>>2]|0);nA(c[E>>2]|0,c[ga>>2]|0,e[(c[ca>>2]|0)+52>>1]|0);if((c[ha>>2]|0)!=(c[ga>>2]|0))nA(c[E>>2]|0,c[ha>>2]|0,c[_>>2]|0)}while(0);c[ca>>2]=c[(c[ca>>2]|0)+20>>2];c[Z>>2]=(c[Z>>2]|0)+1}if(!(c[X>>2]|0)){la=c[ja>>2]|0;ma=c[G>>2]|0;c[ma>>2]=la;i=na;return}Ez(c[ka>>2]|0,(c[X>>2]|0)+1|0)|0;Fz(c[ka>>2]|0,c[W>>2]|0);la=c[ja>>2]|0;ma=c[G>>2]|0;c[ma>>2]=la;i=na;return}function GC(e,f,g,h,j,k){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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,J=0,K=0,L=0,M=0,N=0,O=0;O=i;i=i+112|0;l=O+108|0;m=O+104|0;n=O+100|0;o=O+96|0;p=O+92|0;q=O+88|0;v=O+84|0;D=O+80|0;z=O+76|0;M=O+72|0;C=O+68|0;I=O+64|0;E=O+60|0;t=O+56|0;r=O+52|0;y=O+48|0;x=O+44|0;u=O+40|0;K=O+36|0;A=O+32|0;B=O+28|0;J=O+24|0;L=O+20|0;F=O+16|0;H=O+12|0;s=O+8|0;G=O+4|0;w=O;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=j;c[q>>2]=k;c[v>>2]=c[c[l>>2]>>2];c[C>>2]=d[(c[l>>2]|0)+442>>0];if(!(c[(c[v>>2]|0)+24>>2]&524288)){i=O;return}c[z>>2]=Dh(c[v>>2]|0,c[(c[m>>2]|0)+64>>2]|0)|0;c[M>>2]=c[(c[(c[v>>2]|0)+16>>2]|0)+(c[z>>2]<<4)>>2];c[D>>2]=c[(c[m>>2]|0)+16>>2];a:while(1){if(!(c[D>>2]|0)){N=39;break}c[E>>2]=0;c[t>>2]=0;c[u>>2]=0;if(!(((c[p>>2]|0)!=0?(Td(c[c[m>>2]>>2]|0,c[(c[D>>2]|0)+8>>2]|0)|0)!=0:0)?(KC(c[m>>2]|0,c[D>>2]|0,c[p>>2]|0,c[q>>2]|0)|0)==0:0))N=7;do if((N|0)==7){N=0;if(a[(c[l>>2]|0)+442>>0]|0)c[I>>2]=pi(c[v>>2]|0,c[(c[D>>2]|0)+8>>2]|0,c[M>>2]|0)|0;else c[I>>2]=zh(c[l>>2]|0,0,c[(c[D>>2]|0)+8>>2]|0,c[M>>2]|0)|0;if((c[I>>2]|0)!=0?(cC(c[l>>2]|0,c[I>>2]|0,c[D>>2]|0,E,t)|0)==0:0){if(c[t>>2]|0)c[r>>2]=c[t>>2];else{c[y>>2]=c[(c[D>>2]|0)+36>>2];c[r>>2]=y}c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[(c[D>>2]|0)+20>>2]|0))break;if((c[(c[r>>2]|0)+(c[x>>2]<<2)>>2]|0)==(b[(c[m>>2]|0)+32>>1]|0))c[(c[r>>2]|0)+(c[x>>2]<<2)>>2]=-1;if(c[(c[v>>2]|0)+288>>2]|0){if(c[E>>2]|0)j=b[(c[(c[E>>2]|0)+4>>2]|0)+(c[x>>2]<<1)>>1]|0;else j=b[(c[I>>2]|0)+32>>1]|0;c[L>>2]=c[(c[(c[I>>2]|0)+4>>2]|0)+((j<<16>>16)*24|0)>>2];c[J>>2]=Oy(c[l>>2]|0,c[c[I>>2]>>2]|0,c[L>>2]|0,c[z>>2]|0)|0;c[u>>2]=(c[J>>2]|0)==2&1}c[x>>2]=(c[x>>2]|0)+1}yz(c[l>>2]|0,c[z>>2]|0,c[(c[I>>2]|0)+28>>2]|0,0,c[c[I>>2]>>2]|0);g=(c[l>>2]|0)+72|0;c[g>>2]=(c[g>>2]|0)+1;if(c[n>>2]|0)LC(c[l>>2]|0,c[z>>2]|0,c[I>>2]|0,c[E>>2]|0,c[D>>2]|0,c[r>>2]|0,c[n>>2]|0,-1,c[u>>2]|0);if((c[o>>2]|0)!=0?(MC(c[l>>2]|0,c[D>>2]|0)|0)==0:0)LC(c[l>>2]|0,c[z>>2]|0,c[I>>2]|0,c[E>>2]|0,c[D>>2]|0,c[r>>2]|0,c[o>>2]|0,1,c[u>>2]|0);Sf(c[v>>2]|0,c[t>>2]|0);break}if(!(c[C>>2]|0)){N=59;break a}if(d[(c[v>>2]|0)+65>>0]|0){N=59;break a}if(!(c[I>>2]|0)){c[K>>2]=Pw(c[l>>2]|0)|0;g=Bz(c[K>>2]|0)|0;c[A>>2]=g+(c[(c[D>>2]|0)+20>>2]|0)+1;c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[(c[D>>2]|0)+20>>2]|0))break;c[B>>2]=(c[(c[D>>2]|0)+36+(c[x>>2]<<3)>>2]|0)+(c[n>>2]|0)+1;Rw(c[K>>2]|0,76,c[B>>2]|0,c[A>>2]|0)|0;c[x>>2]=(c[x>>2]|0)+1}Rw(c[K>>2]|0,135,d[(c[D>>2]|0)+24>>0]|0,-1)|0}}while(0);c[D>>2]=c[(c[D>>2]|0)+4>>2]}if((N|0)==39){c[D>>2]=Ex(c[m>>2]|0)|0;b:while(1){if(!(c[D>>2]|0)){N=59;break}c[F>>2]=0;c[s>>2]=0;if(!((c[p>>2]|0)!=0?(NC(c[m>>2]|0,c[D>>2]|0,c[p>>2]|0,c[q>>2]|0)|0)==0:0))N=43;do if((N|0)==43){N=0;if((((a[(c[D>>2]|0)+24>>0]|0)==0?(c[(c[v>>2]|0)+24>>2]&16777216|0)==0:0)?(c[(c[l>>2]|0)+416>>2]|0)==0:0)?(a[(c[l>>2]|0)+20>>0]|0)==0:0)break;if(cC(c[l>>2]|0,c[m>>2]|0,c[D>>2]|0,F,s)|0){if(!(c[C>>2]|0)){N=59;break b}if(d[(c[v>>2]|0)+65>>0]|0){N=59;break b}else break}c[H>>2]=Nv(c[v>>2]|0,0,0,0)|0;if(c[H>>2]|0){c[G>>2]=(c[H>>2]|0)+8;c[(c[G>>2]|0)+16>>2]=c[c[D>>2]>>2];c[(c[G>>2]|0)+8>>2]=c[c[c[D>>2]>>2]>>2];L=(c[(c[G>>2]|0)+16>>2]|0)+36|0;b[L>>1]=(b[L>>1]|0)+1<<16>>16;L=(c[l>>2]|0)+72|0;M=c[L>>2]|0;c[L>>2]=M+1;c[(c[G>>2]|0)+44>>2]=M;if(c[o>>2]|0)OC(c[l>>2]|0,c[H>>2]|0,c[m>>2]|0,c[F>>2]|0,c[D>>2]|0,c[s>>2]|0,c[o>>2]|0,-1);if((c[n>>2]|0)!=0?(c[w>>2]=d[(c[D>>2]|0)+25+((c[p>>2]|0)!=0&1)>>0],OC(c[l>>2]|0,c[H>>2]|0,c[m>>2]|0,c[F>>2]|0,c[D>>2]|0,c[s>>2]|0,c[n>>2]|0,1),((c[w>>2]|0)!=9?(a[(c[D>>2]|0)+24>>0]|0)==0:0)&(c[w>>2]|0)!=7):0)Bx(c[l>>2]|0);c[(c[G>>2]|0)+8>>2]=0;Yu(c[v>>2]|0,c[H>>2]|0)}Sf(c[v>>2]|0,c[s>>2]|0)}while(0);c[D>>2]=c[(c[D>>2]|0)+12>>2]}if((N|0)==59){i=O;return}}else if((N|0)==59){i=O;return}}function HC(e,f,g,h,j,k,l,m,n){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;E=i;i=i+64|0;o=E+52|0;p=E+48|0;q=E+44|0;r=E+40|0;s=E+36|0;t=E+32|0;u=E+28|0;v=E+24|0;w=E+20|0;D=E+16|0;z=E+12|0;A=E+57|0;B=E+8|0;C=E+4|0;y=E;x=E+56|0;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=j;c[t>>2]=k;c[u>>2]=l;c[v>>2]=m;c[w>>2]=n;a[x>>0]=0;c[D>>2]=Pw(c[o>>2]|0)|0;c[y>>2]=0;c[z>>2]=c[(c[p>>2]|0)+8>>2];while(1){if(!(c[z>>2]|0))break;if(c[(c[t>>2]|0)+(c[y>>2]<<2)>>2]|0){a[x>>0]=1;if(c[(c[z>>2]|0)+36>>2]|0){j=c[D>>2]|0;n=c[(c[t>>2]|0)+(c[y>>2]<<2)>>2]|0;Rw(j,76,n,(Bz(c[D>>2]|0)|0)+2|0)|0}Rw(c[D>>2]|0,110,(c[r>>2]|0)+(c[y>>2]|0)|0,c[(c[t>>2]|0)+(c[y>>2]<<2)>>2]|0)|0;a[A>>0]=0;a[A>>0]=(c[w>>2]|0)!=0?16:0;if((a[(c[z>>2]|0)+55>>0]&3|0)==2?(d[(c[p>>2]|0)+42>>0]&32|0)!=0:0)a[A>>0]=d[A>>0]|1;Fh(c[D>>2]|0,a[A>>0]|0)}c[z>>2]=c[(c[z>>2]|0)+20>>2];c[y>>2]=(c[y>>2]|0)+1}if(d[(c[p>>2]|0)+42>>0]&32){i=E;return}c[B>>2]=(c[s>>2]|0)+1;c[C>>2]=Wz(c[o>>2]|0)|0;Vw(c[D>>2]|0,49,c[B>>2]|0,b[(c[p>>2]|0)+34>>1]|0,c[C>>2]|0)|0;if(!(a[x>>0]|0))AC(c[D>>2]|0,c[p>>2]|0,0);CA(c[o>>2]|0,c[B>>2]|0,b[(c[p>>2]|0)+34>>1]|0);if(a[(c[o>>2]|0)+18>>0]|0)a[A>>0]=0;else{a[A>>0]=1;a[A>>0]=d[A>>0]|((c[u>>2]|0)!=0?4:2)}if(c[v>>2]|0)a[A>>0]=d[A>>0]|8;if(c[w>>2]|0)a[A>>0]=d[A>>0]|16;Vw(c[D>>2]|0,75,c[q>>2]|0,c[C>>2]|0,c[s>>2]|0)|0;if(!(a[(c[o>>2]|0)+18>>0]|0))Ih(c[D>>2]|0,-1,c[c[p>>2]>>2]|0,0);Fh(c[D>>2]|0,a[A>>0]|0);i=E;return}function IC(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[(c[b>>2]|0)+412>>2]|0)){i=d;return}JC(c[b>>2]|0);i=d;return}function JC(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;d=m+28|0;j=m+24|0;l=m+20|0;f=m+16|0;e=m+12|0;k=m+8|0;g=m+4|0;h=m;c[d>>2]=b;c[l>>2]=c[(c[d>>2]|0)+8>>2];c[f>>2]=c[c[d>>2]>>2];c[j>>2]=c[(c[d>>2]|0)+412>>2];while(1){if(!(c[j>>2]|0)){d=5;break}c[k>>2]=(c[(c[f>>2]|0)+16>>2]|0)+(c[(c[j>>2]|0)+8>>2]<<4);c[h>>2]=c[(c[j>>2]|0)+12>>2];c[g>>2]=Wz(c[d>>2]|0)|0;zz(c[d>>2]|0,0,c[(c[j>>2]|0)+8>>2]|0,c[(c[(c[k>>2]|0)+12>>2]|0)+72>>2]|0,55);c[e>>2]=Gh(c[l>>2]|0,5,35196,0)|0;if(!(c[e>>2]|0)){d=5;break}c[(c[e>>2]|0)+4>>2]=(c[h>>2]|0)+1;c[(c[e>>2]|0)+20+8>>2]=(c[h>>2]|0)+1;c[(c[e>>2]|0)+40+4>>2]=(c[h>>2]|0)-1;c[(c[e>>2]|0)+40+12>>2]=c[g>>2];c[(c[e>>2]|0)+60+8>>2]=c[g>>2];c[(c[e>>2]|0)+60+12>>2]=(c[h>>2]|0)+1;a[(c[e>>2]|0)+60+3>>0]=8;_z(c[d>>2]|0,c[g>>2]|0);c[j>>2]=c[c[j>>2]>>2]}if((d|0)==5){i=m;return}}function KC(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;n=o+24|0;g=o+20|0;h=o+16|0;j=o+12|0;k=o+8|0;l=o+4|0;m=o;c[g>>2]=a;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[(c[h>>2]|0)+20>>2]|0)){g=8;break}c[m>>2]=c[(c[h>>2]|0)+36+(c[l>>2]<<3)>>2];if((c[(c[j>>2]|0)+(c[m>>2]<<2)>>2]|0)>=0){g=4;break}if((c[k>>2]|0)!=0?(c[m>>2]|0)==(b[(c[g>>2]|0)+32>>1]|0):0){g=6;break}c[l>>2]=(c[l>>2]|0)+1}if((g|0)==4){c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}else if((g|0)==6){c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}else if((g|0)==8){c[n>>2]=0;n=c[n>>2]|0;i=o;return n|0}return 0}function fi(d,f,g,h,j,k,l,m,n){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;D=i;i=i+64|0;C=D;p=D+56|0;q=D+52|0;r=D+48|0;s=D+44|0;t=D+40|0;u=D+36|0;v=D+32|0;w=D+28|0;x=D+24|0;y=D+20|0;B=D+16|0;A=D+12|0;z=D+8|0;o=D+4|0;c[q>>2]=d;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;c[u>>2]=j;c[v>>2]=k;c[w>>2]=l;c[x>>2]=m;c[y>>2]=n;do if(c[r>>2]|0){if((c[v>>2]|0)!=0?(c[x>>2]|0)!=0|(c[w>>2]|0)!=0:0)break;if(((c[v>>2]|0)==0&(c[x>>2]|0)!=0^1|(c[w>>2]|0)!=0?!((((c[v>>2]|0)!=0|(c[x>>2]|0)!=0)^1)&(c[w>>2]|0)!=0|(c[s>>2]|0)<-1|(c[s>>2]|0)>127):0)?(f=If(c[r>>2]|0)|0,c[A>>2]=f,255>=(f|0)):0){c[z>>2]=c[t>>2]&2048;c[t>>2]=c[t>>2]&7;do if((c[t>>2]|0)!=4){if((c[t>>2]|0)==5){c[o>>2]=fi(c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,1|c[z>>2],c[u>>2]|0,c[v>>2]|0,c[w>>2]|0,c[x>>2]|0,c[y>>2]|0)|0;if(!(c[o>>2]|0))c[o>>2]=fi(c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,2|c[z>>2],c[u>>2]|0,c[v>>2]|0,c[w>>2]|0,c[x>>2]|0,c[y>>2]|0)|0;if(!(c[o>>2]|0)){c[t>>2]=3;break}c[p>>2]=c[o>>2];C=c[p>>2]|0;i=D;return C|0}}else c[t>>2]=(a[960]|0)==0?3:2;while(0);c[B>>2]=gi(c[q>>2]|0,c[r>>2]|0,c[A>>2]|0,c[s>>2]|0,c[t>>2]&255,0)|0;do if(((c[B>>2]|0)!=0?(e[(c[B>>2]|0)+2>>1]&3|0)==(c[t>>2]|0):0)?(b[c[B>>2]>>1]|0)==(c[s>>2]|0):0){d=c[q>>2]|0;if(!(c[(c[q>>2]|0)+148>>2]|0)){Oh(d);break}hg(d,5,27111,C);c[p>>2]=5;C=c[p>>2]|0;i=D;return C|0}while(0);c[B>>2]=gi(c[q>>2]|0,c[r>>2]|0,c[A>>2]|0,c[s>>2]|0,c[t>>2]&255,1)|0;if(!(c[B>>2]|0)){c[p>>2]=7;C=c[p>>2]|0;i=D;return C|0}bu(c[q>>2]|0,c[B>>2]|0);if(c[y>>2]|0){C=c[y>>2]|0;c[C>>2]=(c[C>>2]|0)+1}c[(c[B>>2]|0)+28>>2]=c[y>>2];b[(c[B>>2]|0)+2>>1]=e[(c[B>>2]|0)+2>>1]&3|c[z>>2];c[(c[B>>2]|0)+12>>2]=(c[v>>2]|0)!=0?c[v>>2]|0:c[w>>2]|0;c[(c[B>>2]|0)+16>>2]=c[x>>2];c[(c[B>>2]|0)+4>>2]=c[u>>2];b[c[B>>2]>>1]=c[s>>2];c[p>>2]=0;C=c[p>>2]|0;i=D;return C|0}}while(0);c[p>>2]=Kf(134386)|0;C=c[p>>2]|0;i=D;return C|0}function gi(e,f,g,h,j,k){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;z=i;i=i+64|0;l=z+44|0;m=z+40|0;n=z+36|0;o=z+32|0;p=z+28|0;q=z+49|0;r=z+48|0;u=z+24|0;v=z+20|0;s=z+16|0;t=z+12|0;x=z+8|0;w=z+4|0;y=z;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;a[q>>0]=j;a[r>>0]=k;c[v>>2]=0;c[s>>2]=0;c[t>>2]=((d[18477+(d[c[n>>2]>>0]|0)>>0]|0)+(c[o>>2]|0)|0)%23|0;c[u>>2]=Wt((c[m>>2]|0)+340|0,c[t>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;while(1){if(!(c[u>>2]|0))break;c[x>>2]=Xt(c[u>>2]|0,c[p>>2]|0,a[q>>0]|0)|0;if((c[x>>2]|0)>(c[s>>2]|0)){c[v>>2]=c[u>>2];c[s>>2]=c[x>>2]}c[u>>2]=c[(c[u>>2]|0)+8>>2]}a:do if(!(a[r>>0]|0)){if((c[v>>2]|0)!=0?(c[(c[m>>2]|0)+24>>2]&2097152|0)==0:0)break;c[w>>2]=1080;c[s>>2]=0;c[u>>2]=Wt(c[w>>2]|0,c[t>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;while(1){if(!(c[u>>2]|0))break a;c[y>>2]=Xt(c[u>>2]|0,c[p>>2]|0,a[q>>0]|0)|0;if((c[y>>2]|0)>(c[s>>2]|0)){c[v>>2]=c[u>>2];c[s>>2]=c[y>>2]}c[u>>2]=c[(c[u>>2]|0)+8>>2]}}while(0);if((d[r>>0]|0)!=0&(c[s>>2]|0)<6?(f=ph(c[m>>2]|0,32+(c[o>>2]|0)+1|0,0)|0,c[v>>2]=f,(f|0)!=0):0){c[(c[v>>2]|0)+20>>2]=(c[v>>2]|0)+32;b[c[v>>2]>>1]=c[p>>2];b[(c[v>>2]|0)+2>>1]=d[q>>0]|0;iR(c[(c[v>>2]|0)+20>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;a[(c[(c[v>>2]|0)+20>>2]|0)+(c[o>>2]|0)>>0]=0;Yt((c[m>>2]|0)+340|0,c[v>>2]|0)}do if(c[v>>2]|0){if((c[(c[v>>2]|0)+12>>2]|0)==0?(d[r>>0]|0)==0:0)break;c[l>>2]=c[v>>2];f=c[l>>2]|0;i=z;return f|0}while(0);c[l>>2]=0;f=c[l>>2]|0;i=z;return f|0}function hi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;h=e;g=e+20|0;j=e+8|0;f=e+4|0;c[g>>2]=a;c[e+16>>2]=b;c[e+12>>2]=d;c[j>>2]=c[(c[(c[g>>2]|0)+4>>2]|0)+20>>2];c[h>>2]=c[j>>2];c[f>>2]=Od(27060,h)|0;je(c[g>>2]|0,c[f>>2]|0,-1);Kd(c[f>>2]|0);i=e;return}function ii(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;h=i;i=i+16|0;j=h+12|0;f=h+8|0;g=h+4|0;k=h;c[j>>2]=a;c[f>>2]=b;c[g>>2]=d;c[k>>2]=e;if((c[k>>2]|0)<(c[j>>2]|0)){i=h;return 0}Sj();Bf(c[f>>2]|0,c[g>>2]|0)|0;Tj();i=h;return 0}function ji(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;d=j+16|0;e=j+12|0;h=j+8|0;g=j+4|0;f=j;c[d>>2]=a;c[e>>2]=b;c[h>>2]=-1;if(!(c[e>>2]|0)){h=c[h>>2]|0;i=j;return h|0}c[f>>2]=If(c[e>>2]|0)|0;c[h>>2]=(c[(c[d>>2]|0)+20>>2]|0)-1;c[g>>2]=(c[(c[d>>2]|0)+16>>2]|0)+(c[h>>2]<<4);while(1){if((c[h>>2]|0)<0){d=7;break}b=c[f>>2]|0;if((b|0)==(If(c[c[g>>2]>>2]|0)|0)?0==(Td(c[c[g>>2]>>2]|0,c[e>>2]|0)|0):0){d=7;break}c[h>>2]=(c[h>>2]|0)+-1;c[g>>2]=(c[g>>2]|0)+-16}if((d|0)==7){h=c[h>>2]|0;i=j;return h|0}return 0}function ki(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;g=p+28|0;h=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;o=p+8|0;n=p+4|0;m=p;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[o>>2]=0;c[m>>2]=0;c[n>>2]=0;while(1){if(!((c[n>>2]|0)<(c[(c[g>>2]|0)+20>>2]|0)?(c[o>>2]|0)==0:0))break;if(((c[h>>2]|0)==10?1:(c[n>>2]|0)==(c[h>>2]|0))?(c[o>>2]=Ut(c[(c[(c[g>>2]|0)+16>>2]|0)+(c[n>>2]<<4)+4>>2]|0,c[j>>2]|0,c[k>>2]|0,c[l>>2]|0)|0,c[k>>2]=0,c[l>>2]=0,(c[o>>2]|0)==5):0){c[m>>2]=1;c[o>>2]=0}c[n>>2]=(c[n>>2]|0)+1}i=p;return((c[o>>2]|0)==0&(c[m>>2]|0)!=0?5:c[o>>2]|0)|0}function li(b){b=b|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=b;if(!(d[(c[e>>2]|0)+65>>0]|0)){i=f;return}if(c[(c[e>>2]|0)+160>>2]|0){i=f;return}a[(c[e>>2]|0)+65>>0]=0;c[(c[e>>2]|0)+240>>2]=0;b=(c[e>>2]|0)+248|0;c[b>>2]=(c[b>>2]|0)+-1;i=f;return}function mi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;p=s;h=s+40|0;j=s+36|0;k=s+32|0;l=s+28|0;m=s+24|0;n=s+20|0;o=s+16|0;g=s+12|0;r=s+8|0;q=s+4|0;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[r>>2]=0;c[q>>2]=0;c[c[k>>2]>>2]=0;c[o>>2]=Dd()|0;if(c[o>>2]|0){c[h>>2]=c[o>>2];r=c[h>>2]|0;i=s;return r|0}if(!(1<<(c[l>>2]&7)&70)){c[h>>2]=Kf(135519)|0;r=c[h>>2]|0;i=s;return r|0}do if(c[3]|0){if(c[l>>2]&32768){c[g>>2]=0;break}if(c[l>>2]&65536){c[g>>2]=1;break}else{c[g>>2]=c[4];break}}else c[g>>2]=0;while(0);if(!(c[l>>2]&262144)){if(c[57]|0)c[l>>2]=c[l>>2]|131072}else c[l>>2]=c[l>>2]&-131073;c[l>>2]=c[l>>2]&-655129;c[n>>2]=ig(536,0)|0;do if(c[n>>2]|0){if((c[g>>2]|0)!=0?(c[(c[n>>2]|0)+12>>2]=8,(c[(c[n>>2]|0)+12>>2]|0)==0):0){Kd(c[n>>2]|0);c[n>>2]=0;break}c[(c[n>>2]|0)+56>>2]=255;c[(c[n>>2]|0)+20>>2]=2;c[(c[n>>2]|0)+76>>2]=-264537850;c[(c[n>>2]|0)+16>>2]=(c[n>>2]|0)+460;e=(c[n>>2]|0)+88|0;g=1536;d=e+48|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0));c[(c[n>>2]|0)+88+44>>2]=0;a[(c[n>>2]|0)+63>>0]=1;a[(c[n>>2]|0)+68>>0]=-1;d=184;b=c[d+4>>2]|0;f=(c[n>>2]|0)+40|0;c[f>>2]=c[d>>2];c[f+4>>2]=b;c[(c[n>>2]|0)+72>>2]=0;c[(c[n>>2]|0)+136>>2]=2147483647;f=(c[n>>2]|0)+24|0;c[f>>2]=c[f>>2]|9437280;uj((c[n>>2]|0)+432|0);uj((c[n>>2]|0)+312|0);ni(c[n>>2]|0,35690,1,0,141,0)|0;ni(c[n>>2]|0,35690,3,0,141,0)|0;ni(c[n>>2]|0,35690,2,0,141,0)|0;ni(c[n>>2]|0,21290,1,0,142,0)|0;ni(c[n>>2]|0,21297,1,1,141,0)|0;if(!(a[(c[n>>2]|0)+65>>0]|0)){f=Mj(c[n>>2]|0,1,35690,0)|0;c[(c[n>>2]|0)+8>>2]=f; -c[(c[n>>2]|0)+48>>2]=c[l>>2];c[o>>2]=Wj(c[m>>2]|0,c[j>>2]|0,l,c[n>>2]|0,r,q)|0;if(c[o>>2]|0){if((c[o>>2]|0)==7)jh(c[n>>2]|0);j=c[n>>2]|0;l=c[o>>2]|0;m=(c[q>>2]|0)!=0?19255:0;c[p>>2]=c[q>>2];hg(j,l,m,p);Kd(c[q>>2]|0);break}c[o>>2]=Xj(c[c[n>>2]>>2]|0,c[r>>2]|0,c[n>>2]|0,(c[(c[n>>2]|0)+16>>2]|0)+4|0,0,c[l>>2]|256)|0;if(c[o>>2]|0){if((c[o>>2]|0)==3082)c[o>>2]=7;jg(c[n>>2]|0,c[o>>2]|0);break}kg(c[(c[(c[n>>2]|0)+16>>2]|0)+4>>2]|0);q=Yj(c[n>>2]|0,c[(c[(c[n>>2]|0)+16>>2]|0)+4>>2]|0)|0;c[(c[(c[n>>2]|0)+16>>2]|0)+12>>2]=q;if(!(a[(c[n>>2]|0)+65>>0]|0))a[(c[n>>2]|0)+62>>0]=a[(c[(c[(c[n>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0;q=Yj(c[n>>2]|0,0)|0;c[(c[(c[n>>2]|0)+16>>2]|0)+16+12>>2]=q;c[c[(c[n>>2]|0)+16>>2]>>2]=21303;a[(c[(c[n>>2]|0)+16>>2]|0)+8>>0]=3;c[(c[(c[n>>2]|0)+16>>2]|0)+16>>2]=19536;a[(c[(c[n>>2]|0)+16>>2]|0)+16+8>>0]=1;c[(c[n>>2]|0)+76>>2]=-1607883113;if(!(a[(c[n>>2]|0)+65>>0]|0)){jg(c[n>>2]|0,0);Zj(c[n>>2]|0);c[o>>2]=Cf(c[n>>2]|0)|0;if((c[o>>2]|0)==0?(_j(c[n>>2]|0),c[o>>2]=Cf(c[n>>2]|0)|0,(c[o>>2]|0)!=0):0)break;if((c[o>>2]|0)==0?(a[(c[n>>2]|0)+65>>0]|0)==0:0)c[o>>2]=$j(c[n>>2]|0)|0;if(c[o>>2]|0)jg(c[n>>2]|0,c[o>>2]|0);ci(c[n>>2]|0,0,c[9]|0,c[10]|0)|0;yf(c[n>>2]|0,1e3)|0}}}while(0);c[o>>2]=Cf(c[n>>2]|0)|0;if((c[o>>2]|0)!=7){if(c[o>>2]|0)c[(c[n>>2]|0)+76>>2]=1266094736}else{rf(c[n>>2]|0)|0;c[n>>2]=0}c[c[k>>2]>>2]=c[n>>2];Kd(c[r>>2]|0);c[h>>2]=c[o>>2]&255;r=c[h>>2]|0;i=s;return r|0}function ni(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;x=i;i=i+64|0;w=x;k=x+44|0;l=x+40|0;m=x+36|0;n=x+48|0;o=x+32|0;p=x+28|0;q=x+24|0;v=x+20|0;s=x+16|0;r=x+12|0;t=x+8|0;u=x+4|0;c[l>>2]=b;c[m>>2]=e;a[n>>0]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=j;c[s>>2]=d[n>>0];if((c[s>>2]|0)==4|(c[s>>2]|0)==8)c[s>>2]=(a[960]|0)==0?3:2;if((c[s>>2]|0)<1|(c[s>>2]|0)>3){c[k>>2]=Kf(135070)|0;w=c[k>>2]|0;i=x;return w|0}c[v>>2]=Mj(c[l>>2]|0,c[s>>2]&255,c[m>>2]|0,0)|0;a:do if((c[v>>2]|0)!=0?(c[(c[v>>2]|0)+12>>2]|0)!=0:0){b=c[l>>2]|0;if(c[(c[l>>2]|0)+148>>2]|0){hg(b,5,21222,w);c[k>>2]=5;w=c[k>>2]|0;i=x;return w|0}Oh(b);if((d[(c[v>>2]|0)+4>>0]&-9|0)==(c[s>>2]|0)){c[r>>2]=nj((c[l>>2]|0)+432|0,c[m>>2]|0)|0;c[t>>2]=0;while(1){if((c[t>>2]|0)>=3)break a;c[u>>2]=(c[r>>2]|0)+((c[t>>2]|0)*20|0);if((d[(c[u>>2]|0)+4>>0]|0)==(d[(c[v>>2]|0)+4>>0]|0)){if(c[(c[u>>2]|0)+16>>2]|0)Qb[c[(c[u>>2]|0)+16>>2]&255](c[(c[u>>2]|0)+8>>2]|0);c[(c[u>>2]|0)+12>>2]=0}c[t>>2]=(c[t>>2]|0)+1}}}while(0);c[v>>2]=Mj(c[l>>2]|0,c[s>>2]&255,c[m>>2]|0,1)|0;if(!(c[v>>2]|0)){c[k>>2]=7;w=c[k>>2]|0;i=x;return w|0}else{c[(c[v>>2]|0)+12>>2]=c[p>>2];c[(c[v>>2]|0)+8>>2]=c[o>>2];c[(c[v>>2]|0)+16>>2]=c[q>>2];a[(c[v>>2]|0)+4>>0]=c[s>>2]|d[n>>0]&8;jg(c[l>>2]|0,0);c[k>>2]=0;w=c[k>>2]|0;i=x;return w|0}return 0}function oi(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;g=l+12|0;j=l+8|0;k=l+4|0;h=l;c[f>>2]=b;c[g>>2]=d;c[h>>2]=((c[(c[f>>2]|0)+24>>2]&2|0)!=0^1)&1;c[k>>2]=0;a[(c[f>>2]|0)+140+5>>0]=1;a[(c[f>>2]|0)+62>>0]=a[(c[(c[(c[f>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0;c[j>>2]=0;while(1){if(c[k>>2]|0)break;if((c[j>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0))break;if(!((c[j>>2]|0)==1?1:((e[(c[(c[(c[f>>2]|0)+16>>2]|0)+(c[j>>2]<<4)+12>>2]|0)+78>>1]|0)&1|0)==1)?(c[k>>2]=qj(c[f>>2]|0,c[j>>2]|0,c[g>>2]|0)|0,(c[k>>2]|0)!=0):0)rj(c[f>>2]|0,c[j>>2]|0);c[j>>2]=(c[j>>2]|0)+1}if(((c[k>>2]|0)==0?((e[(c[(c[(c[f>>2]|0)+16>>2]|0)+16+12>>2]|0)+78>>1]|0)&1|0)!=1:0)?(c[k>>2]=qj(c[f>>2]|0,1,c[g>>2]|0)|0,(c[k>>2]|0)!=0):0)rj(c[f>>2]|0,1);a[(c[f>>2]|0)+140+5>>0]=0;if(!((c[k>>2]|0)==0&(c[h>>2]|0)!=0)){k=c[k>>2]|0;i=l;return k|0}sj(c[f>>2]|0);k=c[k>>2]|0;i=l;return k|0}function pi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;e=m+20|0;f=m+16|0;g=m+12|0;k=m+8|0;h=m+4|0;j=m;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[k>>2]=0;c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[(c[e>>2]|0)+20>>2]|0)){l=7;break}b=c[h>>2]|0;c[j>>2]=(c[h>>2]|0)<2?b^1:b;if(!((c[g>>2]|0)!=0?(Td(c[g>>2]|0,c[(c[(c[e>>2]|0)+16>>2]|0)+(c[j>>2]<<4)>>2]|0)|0)!=0:0))l=5;if((l|0)==5?(l=0,c[k>>2]=nj((c[(c[(c[e>>2]|0)+16>>2]|0)+(c[j>>2]<<4)+12>>2]|0)+8|0,c[f>>2]|0)|0,(c[k>>2]|0)!=0):0){l=7;break}c[h>>2]=(c[h>>2]|0)+1}if((l|0)==7){i=m;return c[k>>2]|0}return 0}function qi(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[d>>2]=a;do if(Td(c[d>>2]|0,20751)|0){if(!(Td(c[d>>2]|0,20759)|0)){c[b>>2]=1;break}if(!(Td(c[d>>2]|0,20765)|0)){c[b>>2]=1;break}else{c[b>>2]=0;break}}else c[b>>2]=1;while(0);i=e;return c[b>>2]|0}function ri(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=Yb[c[(c[f>>2]|0)+60>>2]&255](c[f>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function si(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+12|0;f=h+8|0;d=h+4|0;g=h;c[f>>2]=a;c[d>>2]=b;c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0)){d=8;break}if(c[(c[(c[f>>2]|0)+16>>2]|0)+(c[g>>2]<<4)+4>>2]|0){if(!(c[d>>2]|0)){d=6;break}if(!(Td(c[d>>2]|0,c[(c[(c[f>>2]|0)+16>>2]|0)+(c[g>>2]<<4)>>2]|0)|0)){d=6;break}}c[g>>2]=(c[g>>2]|0)+1}if((d|0)==6){c[e>>2]=c[(c[(c[f>>2]|0)+16>>2]|0)+(c[g>>2]<<4)+4>>2];g=c[e>>2]|0;i=h;return g|0}else if((d|0)==8){c[e>>2]=0;g=c[e>>2]|0;i=h;return g|0}return 0}function ti(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[c[b>>2]>>2]|0}function ui(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=c[d>>2]|0;if(c[(c[d>>2]|0)+216>>2]|0){d=mj(c[a+216>>2]|0)|0;i=b;return d|0}else{d=c[a+68>>2]|0;i=b;return d|0}return 0}function vi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;d=Ob[c[(c[c[h>>2]>>2]|0)+40>>2]&255](c[h>>2]|0,c[g>>2]|0,c[f>>2]|0)|0;i=e;return d|0}function wi(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=c[68];if(!(c[d>>2]|0)){d=0;i=e;return d|0}d=Tb[c[d>>2]&255](c[b>>2]|0)|0;i=e;return d|0}function xi(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+32|0;h=o+24|0;p=o+20|0;j=o+16|0;k=o+12|0;l=o+8|0;n=o+4|0;m=o;c[p>>2]=a;c[j>>2]=d;c[k>>2]=f;c[l>>2]=g;c[n>>2]=0;c[m>>2]=c[(c[p>>2]|0)+4>>2];kg(c[p>>2]|0);if((e[(c[m>>2]|0)+22>>1]|0)&2){c[h>>2]=8;p=c[h>>2]|0;i=o;return p|0}if((c[k>>2]|0)<0)c[k>>2]=(c[(c[m>>2]|0)+32>>2]|0)-(c[(c[m>>2]|0)+36>>2]|0);if((c[j>>2]|0)>=512&(c[j>>2]|0)<=65536?((c[j>>2]|0)-1&c[j>>2]|0)==0:0){c[(c[m>>2]|0)+32>>2]=c[j>>2];Pi(c[m>>2]|0)}c[n>>2]=Qi(c[c[m>>2]>>2]|0,(c[m>>2]|0)+32|0,c[k>>2]|0)|0;c[(c[m>>2]|0)+36>>2]=(c[(c[m>>2]|0)+32>>2]|0)-(c[k>>2]&65535);if(c[l>>2]|0){p=(c[m>>2]|0)+22|0;b[p>>1]=e[p>>1]|0|2}c[h>>2]=c[n>>2];p=c[h>>2]|0;i=o;return p|0}function yi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;d=e;c[g>>2]=a;c[f>>2]=b;c[d>>2]=27;Oi(c[g>>2]|0,c[f>>2]|0,d)|0;i=e;return c[d>>2]|0}function zi(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;Mi(8,c[b>>2]|0);if((c[76]|0)!=0?(c[51]|0)>=(c[b>>2]|0):0){c[d>>2]=c[75];c[75]=c[c[75]>>2];c[76]=(c[76]|0)+-1;Ni(3,1);d=c[d>>2]|0;i=e;return d|0}a=c[b>>2]|0;c[d>>2]=_f(a,((a|0)<0)<<31>>31)|0;if(!((c[2]|0)!=0&(c[d>>2]|0)!=0)){d=c[d>>2]|0;i=e;return d|0}Ni(4,$f(c[d>>2]|0)|0);d=c[d>>2]|0;i=e;return d|0}function Ai(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;e=f+4|0;d=f;c[b>>2]=a;if(!(c[b>>2]|0)){i=f;return}if((c[b>>2]|0)>>>0>=(c[50]|0)>>>0?(c[b>>2]|0)>>>0<(c[74]|0)>>>0:0){c[e>>2]=c[b>>2];c[c[e>>2]>>2]=c[75];c[75]=c[e>>2];c[76]=(c[76]|0)+1;ag(3,1);i=f;return}if(c[2]|0){c[d>>2]=$f(c[b>>2]|0)|0;ag(4,c[d>>2]|0);ag(0,c[d>>2]|0);ag(9,1);Qb[c[48>>2]&255](c[b>>2]|0);i=f;return}else{Qb[c[48>>2]&255](c[b>>2]|0);i=f;return}}function Bi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e;f=e+4|0;c[g>>2]=b;a[f>>0]=d;b=((Ji(c[g>>2]|0,1,a[f>>0]|0)|0)&255|0)!=0&255;i=e;return b|0}function Ci(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;l=m+24|0;f=m+20|0;g=m+16|0;k=m;h=m+12|0;j=m+8|0;c[f>>2]=b;c[g>>2]=e;do if((a[c[f>>2]>>0]|0)==48){if((a[(c[f>>2]|0)+1>>0]|0)!=120?(a[(c[f>>2]|0)+1>>0]|0)!=88:0)break;if(d[19267+(d[(c[f>>2]|0)+2>>0]|0)>>0]&8){b=k;c[b>>2]=0;c[b+4>>2]=0;c[h>>2]=2;while(1){e=c[h>>2]|0;if((a[(c[f>>2]|0)+(c[h>>2]|0)>>0]|0)!=48)break;c[h>>2]=e+1}c[j>>2]=e;while(1){if(!(d[19267+(d[(c[f>>2]|0)+(c[j>>2]|0)>>0]|0)>>0]&8))break;b=k;b=rR(c[b>>2]|0,c[b+4>>2]|0,16,0)|0;e=C;e=gR(b|0,e|0,(Gi(a[(c[f>>2]|0)+(c[j>>2]|0)>>0]|0)|0)&255|0,0)|0;b=k;c[b>>2]=e;c[b+4>>2]=C;c[j>>2]=(c[j>>2]|0)+1}g=c[g>>2]|0;c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];if(!(a[(c[f>>2]|0)+(c[j>>2]|0)>>0]|0))e=((c[j>>2]|0)-(c[h>>2]|0)|0)<=16;else e=0;c[l>>2]=e?0:1;l=c[l>>2]|0;i=m;return l|0}}while(0);j=c[f>>2]|0;k=c[g>>2]|0;c[l>>2]=Hi(j,k,If(c[f>>2]|0)|0,1)|0;l=c[l>>2]|0;i=m;return l|0}function Di(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Fi(c[c[(c[d>>2]|0)+4>>2]>>2]|0,1)|0;i=b;return a|0}function Ei(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return((e[(c[(c[b>>2]|0)+4>>2]|0)+22>>1]|0)&1|0)!=0|0}function Fi(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;f=i;i=i+16|0;e=f+4|0;g=f;c[e>>2]=a;c[g>>2]=b;if((c[g>>2]|0)!=0?(d[(c[e>>2]|0)+16>>0]|0|0)!=0:0){g=19266;i=f;return g|0}g=c[(c[e>>2]|0)+176>>2]|0;i=f;return g|0}function Gi(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;c[b>>2]=(c[b>>2]|0)+((1&c[b>>2]>>6)*9|0);i=d;return c[b>>2]&15|0}function Hi(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=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;w=i;i=i+64|0;l=w+48|0;m=w+44|0;n=w+40|0;h=w+36|0;j=w+52|0;q=w+32|0;k=w;r=w+28|0;p=w+24|0;o=w+20|0;s=w+16|0;u=w+12|0;t=w+8|0;c[m>>2]=b;c[n>>2]=e;c[h>>2]=f;a[j>>0]=g;b=k;c[b>>2]=0;c[b+4>>2]=0;c[r>>2]=0;c[o>>2]=0;c[s>>2]=0;c[t>>2]=(c[m>>2]|0)+(c[h>>2]|0);if((d[j>>0]|0)==1)c[q>>2]=1;else{c[q>>2]=2;c[p>>2]=3-(d[j>>0]|0);while(1){if((c[p>>2]|0)>=(c[h>>2]|0))break;if(a[(c[m>>2]|0)+(c[p>>2]|0)>>0]|0)break;c[p>>2]=(c[p>>2]|0)+2}c[s>>2]=(c[p>>2]|0)<(c[h>>2]|0)&1;c[t>>2]=(c[m>>2]|0)+(c[p>>2]|0)+(d[j>>0]|0)+-3;c[m>>2]=(c[m>>2]|0)+(d[j>>0]&1)}while(1){if((c[m>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;if(!(d[19267+(d[c[m>>2]>>0]|0)>>0]&1))break;c[m>>2]=(c[m>>2]|0)+(c[q>>2]|0)}do if((c[m>>2]|0)>>>0<(c[t>>2]|0)>>>0){if((a[c[m>>2]>>0]|0)==45){c[r>>2]=1;c[m>>2]=(c[m>>2]|0)+(c[q>>2]|0);break}if((a[c[m>>2]>>0]|0)==43)c[m>>2]=(c[m>>2]|0)+(c[q>>2]|0)}while(0);c[u>>2]=c[m>>2];while(1){if((c[m>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;if((a[c[m>>2]>>0]|0)!=48)break;c[m>>2]=(c[m>>2]|0)+(c[q>>2]|0)}c[p>>2]=0;while(1){if(((c[m>>2]|0)+(c[p>>2]|0)|0)>>>0<(c[t>>2]|0)>>>0?(b=a[(c[m>>2]|0)+(c[p>>2]|0)>>0]|0,c[o>>2]=b,(b|0)>=48):0)h=(c[o>>2]|0)<=57;else h=0;g=k;j=c[g>>2]|0;g=c[g+4>>2]|0;if(!h)break;b=rR(j|0,g|0,10,0)|0;e=c[o>>2]|0;e=gR(b|0,C|0,e|0,((e|0)<0)<<31>>31|0)|0;e=fR(e|0,C|0,48,0)|0;b=k;c[b>>2]=e;c[b+4>>2]=C;c[p>>2]=(c[p>>2]|0)+(c[q>>2]|0)}f=(c[r>>2]|0)!=0;do if(!(g>>>0>2147483647|(g|0)==2147483647&j>>>0>4294967295)){j=k;h=c[j>>2]|0;j=c[j+4>>2]|0;if(f){k=fR(0,0,h|0,j|0)|0;n=c[n>>2]|0;c[n>>2]=k;c[n+4>>2]=C;break}else{n=c[n>>2]|0;c[n>>2]=h;c[n+4>>2]=j;break}}else{n=c[n>>2]|0;c[n>>2]=f?0:-1;c[n+4>>2]=f?-2147483648:2147483647}while(0);if(!((c[o>>2]|0)!=0?((c[m>>2]|0)+(c[p>>2]|0)|0)>>>0<(c[t>>2]|0)>>>0:0))v=33;do if((v|0)==33){if((c[p>>2]|0)==0?(c[u>>2]|0)==(c[m>>2]|0):0)break;if(!((c[s>>2]|0)!=0?1:(c[p>>2]|0)>((c[q>>2]|0)*19|0))){if((c[p>>2]|0)<((c[q>>2]|0)*19|0)){c[l>>2]=0;v=c[l>>2]|0;i=w;return v|0}c[o>>2]=Ii(c[m>>2]|0,c[q>>2]|0)|0;if((c[o>>2]|0)<0){c[l>>2]=0;v=c[l>>2]|0;i=w;return v|0}if((c[o>>2]|0)>0){c[l>>2]=1;v=c[l>>2]|0;i=w;return v|0}else{c[l>>2]=(c[r>>2]|0)!=0?0:2;v=c[l>>2]|0;i=w;return v|0}}}while(0);c[l>>2]=1;v=c[l>>2]|0;i=w;return v|0}function Ii(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[e>>2]=b;c[f>>2]=d;c[g>>2]=0;c[j>>2]=19631;c[h>>2]=0;while(1){if(!((c[g>>2]|0)==0?(c[h>>2]|0)<18:0))break;b=_(c[h>>2]|0,c[f>>2]|0)|0;c[g>>2]=((a[(c[e>>2]|0)+b>>0]|0)-(a[(c[j>>2]|0)+(c[h>>2]|0)>>0]|0)|0)*10;c[h>>2]=(c[h>>2]|0)+1}if(c[g>>2]|0){b=c[g>>2]|0;i=k;return b|0}c[g>>2]=(a[(c[e>>2]|0)+((c[f>>2]|0)*18|0)>>0]|0)-56;b=c[g>>2]|0;i=k;return b|0}function Ji(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;k=n+17|0;g=n+12|0;h=n+8|0;l=n+16|0;m=n+4|0;j=n;c[g>>2]=b;c[h>>2]=e;a[l>>0]=f;f=c[g>>2]|0;if((d[19267+(d[c[g>>2]>>0]|0)>>0]|0)&4){a[k>>0]=Ki(f)|0;m=a[k>>0]|0;i=n;return m|0}c[j>>2]=If(f)|0;c[m>>2]=0;while(1){if((c[m>>2]|0)>=8){f=11;break}if((d[19650+(c[m>>2]|0)>>0]|0|0)==(c[j>>2]|0)?(zd(19666+(d[19658+(c[m>>2]|0)>>0]|0)|0,c[g>>2]|0,c[j>>2]|0)|0)==0:0){if(!(c[h>>2]|0)){f=9;break}if((d[19691+(c[m>>2]|0)>>0]|0|0)<=1){f=9;break}}c[m>>2]=(c[m>>2]|0)+1}if((f|0)==9){a[k>>0]=a[19691+(c[m>>2]|0)>>0]|0;m=a[k>>0]|0;i=n;return m|0}else if((f|0)==11){a[k>>0]=a[l>>0]|0;m=a[k>>0]|0;i=n;return m|0}return 0}function Ki(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=0;if(c[b>>2]|0)Li(c[b>>2]|0,d)|0;i=e;return c[d>>2]|0}function Li(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;j=o+32|0;k=o+28|0;l=o+24|0;h=o;m=o+20|0;f=o+16|0;g=o+12|0;n=o+8|0;c[k>>2]=b;c[l>>2]=e;b=h;c[b>>2]=0;c[b+4>>2]=0;c[g>>2]=0;do if((a[c[k>>2]>>0]|0)!=45){e=c[k>>2]|0;if((a[c[k>>2]>>0]|0)==43){c[k>>2]=e+1;break}if((a[e>>0]|0)==48){if((a[(c[k>>2]|0)+1>>0]|0)!=120?(a[(c[k>>2]|0)+1>>0]|0)!=88:0)break;if(d[19267+(d[(c[k>>2]|0)+2>>0]|0)>>0]&8){c[n>>2]=0;c[k>>2]=(c[k>>2]|0)+2;while(1){if((a[c[k>>2]>>0]|0)!=48)break;c[k>>2]=(c[k>>2]|0)+1}c[m>>2]=0;while(1){e=c[n>>2]|0;if(!((d[19267+(d[(c[k>>2]|0)+(c[m>>2]|0)>>0]|0)>>0]&8|0)!=0?(c[m>>2]|0)<8:0))break;c[n>>2]=(e<<4)+((Gi(a[(c[k>>2]|0)+(c[m>>2]|0)>>0]|0)|0)&255);c[m>>2]=(c[m>>2]|0)+1}if((e&-2147483648|0)==0?(d[19267+(d[(c[k>>2]|0)+(c[m>>2]|0)>>0]|0)>>0]&8|0)==0:0){c[c[l>>2]>>2]=c[n>>2];c[j>>2]=1;n=c[j>>2]|0;i=o;return n|0}c[j>>2]=0;n=c[j>>2]|0;i=o;return n|0}}}else{c[g>>2]=1;c[k>>2]=(c[k>>2]|0)+1}while(0);while(1){if((a[c[k>>2]>>0]|0)!=48)break;c[k>>2]=(c[k>>2]|0)+1}c[m>>2]=0;while(1){if((c[m>>2]|0)>=11)break;n=(a[(c[k>>2]|0)+(c[m>>2]|0)>>0]|0)-48|0;c[f>>2]=n;if(!((n|0)>=0&(c[f>>2]|0)<=9))break;n=h;n=rR(c[n>>2]|0,c[n+4>>2]|0,10,0)|0;b=c[f>>2]|0;b=gR(n|0,C|0,b|0,((b|0)<0)<<31>>31|0)|0;n=h;c[n>>2]=b;c[n+4>>2]=C;c[m>>2]=(c[m>>2]|0)+1}if((c[m>>2]|0)>10){c[j>>2]=0;n=c[j>>2]|0;i=o;return n|0}m=h;n=c[g>>2]|0;n=fR(c[m>>2]|0,c[m+4>>2]|0,n|0,((n|0)<0)<<31>>31|0)|0;m=C;if((m|0)>0|(m|0)==0&n>>>0>2147483647){c[j>>2]=0;n=c[j>>2]|0;i=o;return n|0}if(c[g>>2]|0){m=h;m=fR(0,0,c[m>>2]|0,c[m+4>>2]|0)|0;n=h;c[n>>2]=m;c[n+4>>2]=C}c[c[l>>2]>>2]=c[h>>2];c[j>>2]=1;n=c[j>>2]|0;i=o;return n|0}function Mi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+8|0;g=f+4|0;e=f;c[d>>2]=a;c[g>>2]=b;c[e>>2]=c[g>>2];if((c[e>>2]|0)>>>0<=(c[1036+(c[d>>2]<<2)>>2]|0)>>>0){i=f;return}c[1036+(c[d>>2]<<2)>>2]=c[e>>2];i=f;return}function Ni(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;d=e+4|0;f=e;c[d>>2]=a;c[f>>2]=b;a=996+(c[d>>2]<<2)|0;c[a>>2]=(c[a>>2]|0)+(c[f>>2]|0);if((c[996+(c[d>>2]<<2)>>2]|0)>>>0<=(c[1036+(c[d>>2]<<2)>>2]|0)>>>0){i=e;return}c[1036+(c[d>>2]<<2)>>2]=c[996+(c[d>>2]<<2)>>2];i=e;return}function Oi(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;h=p+20|0;j=p+16|0;k=p+12|0;l=p+8|0;m=p+4|0;n=p;c[h>>2]=b;c[j>>2]=f;c[k>>2]=g;if((c[j>>2]|0)<2){o=c[j>>2]|0;i=p;return o|0}c[l>>2]=(d[18477+(d[c[h>>2]>>0]|0)>>0]<<2^(d[18477+(d[(c[h>>2]|0)+((c[j>>2]|0)-1)>>0]|0)>>0]|0)*3^c[j>>2]|0)%127|0;c[l>>2]=(d[19699+(c[l>>2]|0)>>0]|0)-1;while(1){if((c[l>>2]|0)<0){o=13;break}if((d[19826+(c[l>>2]|0)>>0]|0)==(c[j>>2]|0)){c[m>>2]=0;c[n>>2]=19950+(e[10628+(c[l>>2]<<1)>>1]|0);while(1){if((c[m>>2]|0)<(c[j>>2]|0))g=(a[(c[h>>2]|0)+(c[m>>2]|0)>>0]&-33|0)==(a[(c[n>>2]|0)+(c[m>>2]|0)>>0]|0);else g=0;f=c[m>>2]|0;if(!g)break;c[m>>2]=f+1}if((f|0)>=(c[j>>2]|0))break}c[l>>2]=(d[20627+(c[l>>2]|0)>>0]|0)-1}if((o|0)==13){o=c[j>>2]|0;i=p;return o|0}c[c[k>>2]>>2]=d[20503+(c[l>>2]|0)>>0];o=c[j>>2]|0;i=p;return o|0}function Pi(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[(c[b>>2]|0)+80>>2]|0)){i=d;return}a=(c[b>>2]|0)+80|0;c[a>>2]=(c[a>>2]|0)+-4;Wi(c[(c[b>>2]|0)+80>>2]|0);c[(c[b>>2]|0)+80>>2]=0;i=d;return}function Qi(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;g=p+28|0;h=p+24|0;j=p+20|0;n=p+16|0;m=p+12|0;l=p+8|0;k=p;c[g>>2]=a;c[h>>2]=e;c[j>>2]=f;c[n>>2]=0;c[m>>2]=c[c[h>>2]>>2];if(!((d[(c[g>>2]|0)+16>>0]|0)!=0?(c[(c[g>>2]|0)+28>>2]|0)!=0:0))o=3;do if(((o|0)==3?(o=(Ri(c[(c[g>>2]|0)+212>>2]|0)|0)==0,o&(c[m>>2]|0)!=0):0)?(c[m>>2]|0)!=(c[(c[g>>2]|0)+160>>2]|0):0){c[l>>2]=0;o=k;c[o>>2]=0;c[o+4>>2]=0;if((d[(c[g>>2]|0)+17>>0]|0)>0?(c[c[(c[g>>2]|0)+64>>2]>>2]|0)!=0:0)c[n>>2]=Si(c[(c[g>>2]|0)+64>>2]|0,k)|0;if((c[n>>2]|0)==0?(c[l>>2]=Ti(c[m>>2]|0)|0,(c[l>>2]|0)==0):0)c[n>>2]=7;if(!(c[n>>2]|0)){Ui(c[g>>2]|0);c[n>>2]=Vi(c[(c[g>>2]|0)+212>>2]|0,c[m>>2]|0)|0}if(!(c[n>>2]|0)){Wi(c[(c[g>>2]|0)+208>>2]|0);c[(c[g>>2]|0)+208>>2]=c[l>>2];o=k;o=gR(c[o>>2]|0,c[o+4>>2]|0,c[m>>2]|0,0)|0;o=fR(o|0,C|0,1,0)|0;o=pR(o|0,C|0,c[m>>2]|0,0)|0;c[(c[g>>2]|0)+28>>2]=o;c[(c[g>>2]|0)+160>>2]=c[m>>2];break}else{Wi(c[l>>2]|0);break}}while(0);c[c[h>>2]>>2]=c[(c[g>>2]|0)+160>>2];if(c[n>>2]|0){o=c[n>>2]|0;i=p;return o|0}if((c[j>>2]|0)<0)c[j>>2]=b[(c[g>>2]|0)+150>>1];b[(c[g>>2]|0)+150>>1]=c[j>>2];Xi(c[g>>2]|0);o=c[n>>2]|0;i=p;return o|0}function Ri(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+12>>2]|0}function Si(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;b=Yb[c[(c[c[f>>2]>>2]|0)+24>>2]&255](c[f>>2]|0,c[e>>2]|0)|0;i=d;return b|0}function Ti(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=ej(c[d>>2]|0)|0;i=b;return a|0}function Ui(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=(c[d>>2]|0)+108|0;c[a>>2]=(c[a>>2]|0)+1;_i(c[(c[d>>2]|0)+96>>2]|0);$i(c[(c[d>>2]|0)+212>>2]|0);i=b;return}function Vi(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=a;c[g>>2]=b;if(c[(c[f>>2]|0)+24>>2]|0){c[h>>2]=Ob[c[128>>2]&255](c[g>>2]|0,(c[(c[f>>2]|0)+28>>2]|0)+40|0,d[(c[f>>2]|0)+32>>0]|0)|0;if(!(c[h>>2]|0)){c[e>>2]=7;b=c[e>>2]|0;i=j;return b|0}k=c[33]|0;a=c[h>>2]|0;b=Zi(c[f>>2]|0)|0;Rb[k&255](a,b);if(c[(c[f>>2]|0)+44>>2]|0)Qb[c[156>>2]&255](c[(c[f>>2]|0)+44>>2]|0);c[(c[f>>2]|0)+44>>2]=c[h>>2];c[(c[f>>2]|0)+24>>2]=c[g>>2]}c[e>>2]=0;k=c[e>>2]|0;i=j;return k|0}function Wi(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Yi(c[d>>2]|0);i=b;return}function Xi(a){a=a|0;var b=0;b=i;i=i+16|0;c[b>>2]=a;i=b;return}function Yi(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;c[d>>2]=0;if(!(c[b>>2]|0)){i=f;return}if((c[b>>2]|0)>>>0>=(c[415]|0)>>>0?(c[b>>2]|0)>>>0<(c[416]|0)>>>0:0){ag(1,1);c[e>>2]=c[b>>2];c[c[e>>2]>>2]=c[418];c[418]=c[e>>2];c[419]=(c[419]|0)+1;c[420]=(c[419]|0)<(c[414]|0)&1;i=f;return}c[d>>2]=$f(c[b>>2]|0)|0;ag(2,c[d>>2]|0);Kd(c[b>>2]|0);i=f;return}function Zi(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[d>>2]=a;a=c[(c[d>>2]|0)+16>>2]|0;if((c[(c[d>>2]|0)+16>>2]|0)>=0){c[b>>2]=a;d=c[b>>2]|0;i=e;return d|0}else{a=rR(-1024,-1,a|0,((a|0)<0)<<31>>31|0)|0;d=(c[(c[d>>2]|0)+24>>2]|0)+(c[(c[d>>2]|0)+28>>2]|0)|0;d=pR(a|0,C|0,d|0,((d|0)<0)<<31>>31|0)|0;c[b>>2]=d;d=c[b>>2]|0;i=e;return d|0}return 0}function _i(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=c[e>>2];while(1){if(!(c[b>>2]|0))break;c[(c[b>>2]|0)+16>>2]=1;c[b>>2]=c[(c[b>>2]|0)+44>>2]}i=d;return}function $i(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;aj(c[d>>2]|0,0);i=b;return}function aj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;d=j+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[d>>2]=a;c[e>>2]=b;if(!(c[(c[d>>2]|0)+44>>2]|0)){i=j;return}c[f>>2]=c[c[d>>2]>>2];while(1){if(!(c[f>>2]|0))break;c[g>>2]=c[(c[f>>2]|0)+32>>2];if((c[(c[f>>2]|0)+20>>2]|0)>>>0>(c[e>>2]|0)>>>0)bj(c[f>>2]|0);c[f>>2]=c[g>>2]}if(((c[e>>2]|0)==0?(c[(c[d>>2]|0)+12>>2]|0)!=0:0)?(c[h>>2]=Ob[c[140>>2]&255](c[(c[d>>2]|0)+44>>2]|0,1,0)|0,(c[h>>2]|0)!=0):0){kR(c[c[h>>2]>>2]|0,0,c[(c[d>>2]|0)+24>>2]|0)|0;c[e>>2]=1}Rb[c[152>>2]&255](c[(c[d>>2]|0)+44>>2]|0,(c[e>>2]|0)+1|0);i=j;return}function bj(a){a=a|0;var d=0,f=0;f=i;i=i+16|0;d=f;c[d>>2]=a;if(!(e[(c[d>>2]|0)+24>>1]&2)){i=f;return}cj(c[d>>2]|0,1);a=(c[d>>2]|0)+24|0;b[a>>1]=e[a>>1]&-15;a=(c[d>>2]|0)+24|0;b[a>>1]=e[a>>1]|1;if(b[(c[d>>2]|0)+26>>1]|0){i=f;return}dj(c[d>>2]|0);i=f;return}function cj(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;j=l+8|0;h=l+12|0;k=l+4|0;g=l;c[j>>2]=b;a[h>>0]=f;c[k>>2]=c[(c[j>>2]|0)+28>>2];if(d[h>>0]&1){if((c[(c[k>>2]|0)+8>>2]|0)==(c[j>>2]|0)){c[g>>2]=c[(c[j>>2]|0)+36>>2];while(1){if(c[g>>2]|0)f=(e[(c[g>>2]|0)+24>>1]&8|0)!=0;else f=0;b=c[g>>2]|0;if(!f)break;c[g>>2]=c[b+36>>2]}c[(c[k>>2]|0)+8>>2]=b}f=c[(c[j>>2]|0)+36>>2]|0;if(c[(c[j>>2]|0)+32>>2]|0)c[(c[(c[j>>2]|0)+32>>2]|0)+36>>2]=f;else c[(c[k>>2]|0)+4>>2]=f;f=c[(c[j>>2]|0)+32>>2]|0;if(!(c[(c[j>>2]|0)+36>>2]|0)){c[c[k>>2]>>2]=f;if((c[c[k>>2]>>2]|0)==0?(d[(c[k>>2]|0)+32>>0]|0)!=0:0)a[(c[k>>2]|0)+33>>0]=2}else c[(c[(c[j>>2]|0)+36>>2]|0)+32>>2]=f;c[(c[j>>2]|0)+32>>2]=0;c[(c[j>>2]|0)+36>>2]=0}if(!(d[h>>0]&2)){i=l;return}c[(c[j>>2]|0)+32>>2]=c[c[k>>2]>>2];f=c[j>>2]|0;if(!(c[(c[j>>2]|0)+32>>2]|0)){c[(c[k>>2]|0)+4>>2]=f;if(a[(c[k>>2]|0)+32>>0]|0)a[(c[k>>2]|0)+33>>0]=1}else c[(c[(c[j>>2]|0)+32>>2]|0)+36>>2]=f;c[c[k>>2]>>2]=c[j>>2];if(c[(c[k>>2]|0)+8>>2]|0){i=l;return}if(e[(c[j>>2]|0)+24>>1]&8){i=l;return}c[(c[k>>2]|0)+8>>2]=c[j>>2];i=l;return}function dj(b){b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=b;if(!(a[(c[(c[d>>2]|0)+28>>2]|0)+32>>0]|0)){i=e;return}Ub[c[144>>2]&255](c[(c[(c[d>>2]|0)+28>>2]|0)+44>>2]|0,c[c[d>>2]>>2]|0,0);i=e;return}function ej(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;c[d>>2]=0;if((c[b>>2]|0)<=(c[412]|0)?(c[d>>2]=c[418],(c[d>>2]|0)!=0):0){c[418]=c[c[418]>>2];c[419]=(c[419]|0)+-1;c[420]=(c[419]|0)<(c[414]|0)&1;Mi(7,c[b>>2]|0);Ni(1,1)}if(c[d>>2]|0){e=c[d>>2]|0;i=f;return e|0}a=c[b>>2]|0;c[d>>2]=_f(a,((a|0)<0)<<31>>31)|0;if(!(c[d>>2]|0)){e=c[d>>2]|0;i=f;return e|0}c[e>>2]=$f(c[d>>2]|0)|0;Mi(7,c[b>>2]|0);Ni(2,c[e>>2]|0);e=c[d>>2]|0;i=f;return e|0}function fj(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=ig(512,0)|0;if(!(c[d>>2]|0)){d=c[d>>2]|0;i=e;return d|0}c[c[d>>2]>>2]=c[b>>2];d=c[d>>2]|0;i=e;return d|0}function gj(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;g=p+28|0;h=p+24|0;j=p+20|0;l=p+16|0;f=p+12|0;m=p+8|0;n=p+4|0;k=p;c[h>>2]=b;c[j>>2]=e;if(!(c[h>>2]|0)){c[g>>2]=0;o=c[g>>2]|0;i=p;return o|0}c[j>>2]=(c[j>>2]|0)+-1;while(1){if((c[c[h>>2]>>2]|0)>>>0<=4e3)break;if(!(c[(c[h>>2]|0)+8>>2]|0))break;c[f>>2]=((c[j>>2]|0)>>>0)/((c[(c[h>>2]|0)+8>>2]|0)>>>0)|0;c[j>>2]=((c[j>>2]|0)>>>0)%((c[(c[h>>2]|0)+8>>2]|0)>>>0)|0;if((c[(c[h>>2]|0)+12+(c[f>>2]<<2)>>2]|0)==0?(b=fj(c[(c[h>>2]|0)+8>>2]|0)|0,c[(c[h>>2]|0)+12+(c[f>>2]<<2)>>2]=b,(c[(c[h>>2]|0)+12+(c[f>>2]<<2)>>2]|0)==0):0){o=8;break}c[h>>2]=c[(c[h>>2]|0)+12+(c[f>>2]<<2)>>2]}if((o|0)==8){c[g>>2]=7;o=c[g>>2]|0;i=p;return o|0}f=c[j>>2]|0;if((c[c[h>>2]>>2]|0)>>>0<=4e3){o=(c[h>>2]|0)+12+(((c[j>>2]|0)>>>0)/8|0)|0;a[o>>0]=d[o>>0]|0|1<<(f&7);c[g>>2]=0;o=c[g>>2]|0;i=p;return o|0}c[j>>2]=f+1;c[l>>2]=(f>>>0)%125|0;a:do if(!(c[(c[h>>2]|0)+12+(c[l>>2]<<2)>>2]|0)){if((c[(c[h>>2]|0)+4>>2]|0)>>>0>=124)o=17}else{while(1){if((c[(c[h>>2]|0)+12+(c[l>>2]<<2)>>2]|0)==(c[j>>2]|0))break;o=(c[l>>2]|0)+1|0;c[l>>2]=o;c[l>>2]=(c[l>>2]|0)>>>0>=125?0:o;if(!(c[(c[h>>2]|0)+12+(c[l>>2]<<2)>>2]|0)){o=17;break a}}c[g>>2]=0;o=c[g>>2]|0;i=p;return o|0}while(0);if((o|0)==17?(c[(c[h>>2]|0)+4>>2]|0)>>>0>=62:0){c[k>>2]=yh(0,500,0)|0;if(!(c[k>>2]|0)){c[g>>2]=7;o=c[g>>2]|0;i=p;return o|0}iR(c[k>>2]|0,(c[h>>2]|0)+12|0,500)|0;kR((c[h>>2]|0)+12|0,0,500)|0;c[(c[h>>2]|0)+8>>2]=(((c[c[h>>2]>>2]|0)+125-1|0)>>>0)/125|0;c[n>>2]=gj(c[h>>2]|0,c[j>>2]|0)|0;c[m>>2]=0;while(1){if((c[m>>2]|0)>>>0>=125)break;if(c[(c[k>>2]|0)+(c[m>>2]<<2)>>2]|0){o=gj(c[h>>2]|0,c[(c[k>>2]|0)+(c[m>>2]<<2)>>2]|0)|0;c[n>>2]=c[n>>2]|o}c[m>>2]=(c[m>>2]|0)+1}Sf(0,c[k>>2]|0);c[g>>2]=c[n>>2];o=c[g>>2]|0;i=p;return o|0}o=(c[h>>2]|0)+4|0;c[o>>2]=(c[o>>2]|0)+1;c[(c[h>>2]|0)+12+(c[l>>2]<<2)>>2]=c[j>>2];c[g>>2]=0;o=c[g>>2]|0;i=p;return o|0}function hj(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;g=p+24|0;h=p+20|0;j=p+16|0;l=p+12|0;n=p+8|0;k=p+4|0;m=p;c[g>>2]=b;c[h>>2]=e;c[j>>2]=f;if(!(c[g>>2]|0)){i=p;return}c[h>>2]=(c[h>>2]|0)+-1;while(1){if(!(c[(c[g>>2]|0)+8>>2]|0))break;c[l>>2]=((c[h>>2]|0)>>>0)/((c[(c[g>>2]|0)+8>>2]|0)>>>0)|0;c[h>>2]=((c[h>>2]|0)>>>0)%((c[(c[g>>2]|0)+8>>2]|0)>>>0)|0;c[g>>2]=c[(c[g>>2]|0)+12+(c[l>>2]<<2)>>2];if(!(c[g>>2]|0)){o=16;break}}if((o|0)==16){i=p;return}if((c[c[g>>2]>>2]|0)>>>0<=4e3){o=(c[g>>2]|0)+12+(((c[h>>2]|0)>>>0)/8|0)|0;a[o>>0]=(d[o>>0]|0)&~(1<<(c[h>>2]&7));i=p;return}c[k>>2]=c[j>>2];iR(c[k>>2]|0,(c[g>>2]|0)+12|0,500)|0;kR((c[g>>2]|0)+12|0,0,500)|0;c[(c[g>>2]|0)+4>>2]=0;c[n>>2]=0;while(1){if((c[n>>2]|0)>>>0>=125)break;if((c[(c[k>>2]|0)+(c[n>>2]<<2)>>2]|0)!=0?(c[(c[k>>2]|0)+(c[n>>2]<<2)>>2]|0)!=((c[h>>2]|0)+1|0):0){c[m>>2]=(((c[(c[k>>2]|0)+(c[n>>2]<<2)>>2]|0)-1|0)>>>0)%125|0;o=(c[g>>2]|0)+4|0;c[o>>2]=(c[o>>2]|0)+1;while(1){if(!(c[(c[g>>2]|0)+12+(c[m>>2]<<2)>>2]|0))break;o=(c[m>>2]|0)+1|0;c[m>>2]=o;c[m>>2]=(c[m>>2]|0)>>>0>=125?0:o}c[(c[g>>2]|0)+12+(c[m>>2]<<2)>>2]=c[(c[k>>2]|0)+(c[n>>2]<<2)>>2]}c[n>>2]=(c[n>>2]|0)+1}i=p;return}function ij(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if(!(c[d>>2]|0)){a=0;a=a&1;i=f;return a|0}a=(lj(c[d>>2]|0,c[e>>2]|0)|0)!=0;a=a&1;i=f;return a|0}function jj(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[c[b>>2]>>2]|0}function kj(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(c[b>>2]|0)){i=e;return}a:do if(c[(c[b>>2]|0)+8>>2]|0){c[d>>2]=0;while(1){if((c[d>>2]|0)>>>0>=125)break a;kj(c[(c[b>>2]|0)+12+(c[d>>2]<<2)>>2]|0);c[d>>2]=(c[d>>2]|0)+1}}while(0);Kd(c[b>>2]|0);i=e;return}function lj(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;h=l+12|0;j=l+8|0;e=l+4|0;k=l;c[h>>2]=a;c[j>>2]=b;c[j>>2]=(c[j>>2]|0)+-1;if((c[j>>2]|0)>>>0>=(c[c[h>>2]>>2]|0)>>>0){c[g>>2]=0;k=c[g>>2]|0;i=l;return k|0}while(1){if(!(c[(c[h>>2]|0)+8>>2]|0))break;c[e>>2]=((c[j>>2]|0)>>>0)/((c[(c[h>>2]|0)+8>>2]|0)>>>0)|0;c[j>>2]=((c[j>>2]|0)>>>0)%((c[(c[h>>2]|0)+8>>2]|0)>>>0)|0;c[h>>2]=c[(c[h>>2]|0)+12+(c[e>>2]<<2)>>2];if(!(c[h>>2]|0)){f=5;break}}if((f|0)==5){c[g>>2]=0;k=c[g>>2]|0;i=l;return k|0}e=c[j>>2]|0;if((c[c[h>>2]>>2]|0)>>>0<=4e3){c[g>>2]=((d[(c[h>>2]|0)+12+((e>>>0)/8|0)>>0]|0)&1<<(c[j>>2]&7)|0)!=0&1;k=c[g>>2]|0;i=l;return k|0}c[j>>2]=e+1;c[k>>2]=(e>>>0)%125|0;while(1){if(!(c[(c[h>>2]|0)+12+(c[k>>2]<<2)>>2]|0)){f=13;break}if((c[(c[h>>2]|0)+12+(c[k>>2]<<2)>>2]|0)==(c[j>>2]|0)){f=11;break}c[k>>2]=(((c[k>>2]|0)+1|0)>>>0)%125|0}if((f|0)==11){c[g>>2]=1;k=c[g>>2]|0;i=l;return k|0}else if((f|0)==13){c[g>>2]=0;k=c[g>>2]|0;i=l;return k|0}return 0}function mj(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+8>>2]|0}function nj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;g=e+12|0;f=e+8|0;d=e+4|0;c[g>>2]=a;c[f>>2]=b;c[d>>2]=oj(c[g>>2]|0,c[f>>2]|0,e)|0;if(!(c[d>>2]|0)){g=0;i=e;return g|0}g=c[(c[d>>2]|0)+8>>2]|0;i=e;return g|0}function oj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;m=n+28|0;e=n+24|0;j=n+20|0;f=n+16|0;l=n+12|0;k=n+8|0;g=n+4|0;h=n;c[e>>2]=a;c[j>>2]=b;c[f>>2]=d;if(c[(c[e>>2]|0)+12>>2]|0){b=pj(c[j>>2]|0)|0;c[g>>2]=(b>>>0)%((c[c[e>>2]>>2]|0)>>>0)|0;c[h>>2]=(c[(c[e>>2]|0)+12>>2]|0)+(c[g>>2]<<3);c[l>>2]=c[(c[h>>2]|0)+4>>2];c[k>>2]=c[c[h>>2]>>2]}else{c[g>>2]=0;c[l>>2]=c[(c[e>>2]|0)+8>>2];c[k>>2]=c[(c[e>>2]|0)+4>>2]}c[c[f>>2]>>2]=c[g>>2];while(1){b=c[k>>2]|0;c[k>>2]=b+-1;if(!b){e=9;break}b=(Td(c[(c[l>>2]|0)+12>>2]|0,c[j>>2]|0)|0)==0;f=c[l>>2]|0;if(b){e=7;break}c[l>>2]=c[f>>2]}if((e|0)==7){c[m>>2]=f;m=c[m>>2]|0;i=n;return m|0}else if((e|0)==9){c[m>>2]=0;m=c[m>>2]|0;i=n;return m|0}return 0}function pj(b){b=b|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;e=h+4|0;g=h;f=h+8|0;c[e>>2]=b;c[g>>2]=0;while(1){j=c[e>>2]|0;c[e>>2]=j+1;j=a[j>>0]|0;a[f>>0]=j;b=c[g>>2]|0;if(!(j&255))break;c[g>>2]=b<<3^c[g>>2]^(d[18477+(d[f>>0]|0)>>0]|0)}i=h;return b|0}function qj(f,g,h){f=f|0;g=g|0;h=h|0;var 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;A=i;i=i+128|0;w=A;l=A+108|0;m=A+104|0;n=A+100|0;o=A+96|0;u=A+92|0;j=A+88|0;v=A+84|0;t=A+80|0;B=A+64|0;r=A+40|0;q=A+24|0;y=A+20|0;s=A+16|0;p=A+112|0;z=A+12|0;x=A+8|0;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[s>>2]=0;h=(c[n>>2]|0)==1?20769:20788;c[y>>2]=h;c[B>>2]=h;c[B+4>>2]=20802;c[B+8>>2]=20804;c[B+12>>2]=0;c[q>>2]=c[m>>2];c[q+8>>2]=c[n>>2];c[q+12>>2]=0;c[q+4>>2]=c[o>>2];wj(q,3,B,0)|0;if(!(c[q+12>>2]|0)){c[t>>2]=(c[(c[m>>2]|0)+16>>2]|0)+(c[n>>2]<<4);if(!(c[(c[t>>2]|0)+4>>2]|0)){if((c[n>>2]|0)==1){B=(c[(c[(c[m>>2]|0)+16>>2]|0)+16+12>>2]|0)+78|0;b[B>>1]=e[B>>1]|1}c[l>>2]=0;B=c[l>>2]|0;i=A;return B|0}kg(c[(c[t>>2]|0)+4>>2]|0);do if(!(og(c[(c[t>>2]|0)+4>>2]|0)|0)){c[u>>2]=mg(c[(c[t>>2]|0)+4>>2]|0,0)|0;if(c[u>>2]|0){z=c[o>>2]|0;B=c[m>>2]|0;xj(z,B,ih(c[u>>2]|0)|0);break}else{c[s>>2]=1;k=11;break}}else k=11;while(0);a:do if((k|0)==11){c[j>>2]=0;while(1){if((c[j>>2]|0)>=5)break;ng(c[(c[t>>2]|0)+4>>2]|0,(c[j>>2]|0)+1|0,r+(c[j>>2]<<2)|0);c[j>>2]=(c[j>>2]|0)+1}c[c[(c[t>>2]|0)+12>>2]>>2]=c[r>>2];f=c[n>>2]|0;do if(c[r+16>>2]|0){j=c[r+16>>2]|0;if(!f){B=j&3;a[p>>0]=B;a[p>>0]=(d[p>>0]|0)==0?1:B;a[(c[m>>2]|0)+62>>0]=a[p>>0]|0;break}if((j|0)!=(d[(c[m>>2]|0)+62>>0]|0)){xj(c[o>>2]|0,c[m>>2]|0,20880);c[u>>2]=1;break a}}else{B=(c[(c[(c[m>>2]|0)+16>>2]|0)+(f<<4)+12>>2]|0)+78|0;b[B>>1]=e[B>>1]|4}while(0);a[(c[(c[t>>2]|0)+12>>2]|0)+77>>0]=a[(c[m>>2]|0)+62>>0]|0;if(!(c[(c[(c[t>>2]|0)+12>>2]|0)+80>>2]|0)){B=yj(c[r+8>>2]|0)|0;c[v>>2]=B;c[v>>2]=(c[v>>2]|0)==0?2e3:B;c[(c[(c[t>>2]|0)+12>>2]|0)+80>>2]=c[v>>2];zj(c[(c[t>>2]|0)+4>>2]|0,c[(c[(c[t>>2]|0)+12>>2]|0)+80>>2]|0)|0}a[(c[(c[t>>2]|0)+12>>2]|0)+76>>0]=c[r+4>>2];if(!(d[(c[(c[t>>2]|0)+12>>2]|0)+76>>0]|0))a[(c[(c[t>>2]|0)+12>>2]|0)+76>>0]=1;if((d[(c[(c[t>>2]|0)+12>>2]|0)+76>>0]|0)>4){xj(c[o>>2]|0,c[m>>2]|0,20948);c[u>>2]=1;break}if((c[n>>2]|0)==0?(c[r+4>>2]|0)>=4:0){B=(c[m>>2]|0)+24|0;c[B>>2]=c[B>>2]&-32769}B=c[m>>2]|0;y=c[y>>2]|0;c[w>>2]=c[(c[(c[m>>2]|0)+16>>2]|0)+(c[n>>2]<<4)>>2];c[w+4>>2]=y;c[z>>2]=Bh(B,20972,w)|0;c[x>>2]=c[(c[m>>2]|0)+288>>2];c[(c[m>>2]|0)+288>>2]=0;c[u>>2]=$e(c[m>>2]|0,c[z>>2]|0,140,q,0)|0;c[(c[m>>2]|0)+288>>2]=c[x>>2];if(!(c[u>>2]|0))c[u>>2]=c[q+12>>2];Sf(c[m>>2]|0,c[z>>2]|0);if(!(c[u>>2]|0))Aj(c[m>>2]|0,c[n>>2]|0)|0;if(a[(c[m>>2]|0)+65>>0]|0){c[u>>2]=7;zg(c[m>>2]|0)}if((c[u>>2]|0)!=0?(c[(c[m>>2]|0)+24>>2]&65536|0)==0:0)break;B=(c[(c[(c[m>>2]|0)+16>>2]|0)+(c[n>>2]<<4)+12>>2]|0)+78|0;b[B>>1]=e[B>>1]|1;c[u>>2]=0}while(0);if(c[s>>2]|0)Bj(c[(c[t>>2]|0)+4>>2]|0)|0}else c[u>>2]=c[q+12>>2];if((c[u>>2]|0)==7|(c[u>>2]|0)==3082)jh(c[m>>2]|0);c[l>>2]=c[u>>2];B=c[l>>2]|0;i=A;return B|0}function rj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+8|0;g=f+4|0;e=f;c[d>>2]=a;c[g>>2]=b;c[e>>2]=(c[(c[d>>2]|0)+16>>2]|0)+(c[g>>2]<<4);tj(c[(c[e>>2]|0)+12>>2]|0);if((c[g>>2]|0)==1){i=f;return}c[e>>2]=(c[(c[d>>2]|0)+16>>2]|0)+16;tj(c[(c[e>>2]|0)+12>>2]|0);i=f;return}function sj(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=(c[d>>2]|0)+24|0;c[a>>2]=c[a>>2]&-3;i=b;return}function tj(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+64|0;l=k+48|0;h=k+32|0;j=k+16|0;d=k+8|0;f=k+4|0;g=k;c[l>>2]=a;c[f>>2]=c[l>>2];a=(c[f>>2]|0)+8|0;c[h>>2]=c[a>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];a=(c[f>>2]|0)+40|0;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];uj((c[f>>2]|0)+40|0);vj((c[f>>2]|0)+24|0);c[d>>2]=c[j+8>>2];while(1){if(!(c[d>>2]|0))break;Pf(0,c[(c[d>>2]|0)+8>>2]|0);c[d>>2]=c[c[d>>2]>>2]}vj(j);uj((c[f>>2]|0)+8|0);c[d>>2]=c[h+8>>2];while(1){if(!(c[d>>2]|0))break;c[g>>2]=c[(c[d>>2]|0)+8>>2];Qf(0,c[g>>2]|0);c[d>>2]=c[c[d>>2]>>2]}vj(h);vj((c[f>>2]|0)+56|0);c[(c[f>>2]|0)+72>>2]=0;if(!((e[(c[f>>2]|0)+78>>1]|0)&1)){i=k;return}l=(c[f>>2]|0)+4|0;c[l>>2]=(c[l>>2]|0)+1;l=(c[f>>2]|0)+78|0;b[l>>1]=(e[l>>1]|0)&-2;i=k;return}function uj(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+8>>2]=0;c[(c[d>>2]|0)+4>>2]=0;c[c[d>>2]>>2]=0;c[(c[d>>2]|0)+12>>2]=0;i=b;return}function vj(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;c[d>>2]=c[(c[b>>2]|0)+8>>2];c[(c[b>>2]|0)+8>>2]=0;Kd(c[(c[b>>2]|0)+12>>2]|0);c[(c[b>>2]|0)+12>>2]=0;c[c[b>>2]>>2]=0;while(1){if(!(c[d>>2]|0))break;c[e>>2]=c[c[d>>2]>>2];Kd(c[d>>2]|0);c[d>>2]=c[e>>2]}c[(c[b>>2]|0)+4>>2]=0;i=f;return}function wj(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+48|0;j=r+40|0;s=r+36|0;k=r+28|0; -n=r+20|0;l=r+16|0;m=r+12|0;q=r+8|0;p=r+4|0;o=r;c[s>>2]=d;c[r+32>>2]=f;c[k>>2]=g;c[r+24>>2]=h;c[n>>2]=c[s>>2];c[l>>2]=c[c[n>>2]>>2];c[m>>2]=c[(c[n>>2]|0)+8>>2];d=(c[(c[(c[l>>2]|0)+16>>2]|0)+(c[m>>2]<<4)+12>>2]|0)+78|0;b[d>>1]=e[d>>1]&-5;if(a[(c[l>>2]|0)+65>>0]|0){Kj(c[n>>2]|0,c[c[k>>2]>>2]|0,0);c[j>>2]=1;s=c[j>>2]|0;i=r;return s|0}if(!(c[k>>2]|0)){c[j>>2]=0;s=c[j>>2]|0;i=r;return s|0}a:do if(!(c[(c[k>>2]|0)+4>>2]|0))Kj(c[n>>2]|0,c[c[k>>2]>>2]|0,0);else{if(zd(c[(c[k>>2]|0)+8>>2]|0,21114,7)|0){do if(c[c[k>>2]>>2]|0){if((c[(c[k>>2]|0)+8>>2]|0)!=0?(a[c[(c[k>>2]|0)+8>>2]>>0]|0)!=0:0)break;c[o>>2]=Fj(c[l>>2]|0,c[c[k>>2]>>2]|0,c[(c[(c[l>>2]|0)+16>>2]|0)+(c[m>>2]<<4)>>2]|0)|0;if(!(c[o>>2]|0))break a;if(Li(c[(c[k>>2]|0)+4>>2]|0,(c[o>>2]|0)+44|0)|0)break a;Kj(c[n>>2]|0,c[c[k>>2]>>2]|0,21122);break a}while(0);Kj(c[n>>2]|0,c[c[k>>2]>>2]|0,0);break}a[(c[l>>2]|0)+140+4>>0]=c[m>>2];s=Ki(c[(c[k>>2]|0)+4>>2]|0)|0;c[(c[l>>2]|0)+140>>2]=s;a[(c[l>>2]|0)+140+6>>0]=0;cf(c[l>>2]|0,c[(c[k>>2]|0)+8>>2]|0,-1,p,0)|0;c[q>>2]=c[(c[l>>2]|0)+52>>2];a[(c[l>>2]|0)+140+4>>0]=0;do if(0!=(c[q>>2]|0)?(a[(c[l>>2]|0)+140+6>>0]|0)==0:0){c[(c[n>>2]|0)+12>>2]=c[q>>2];if((c[q>>2]|0)==7){jh(c[l>>2]|0);break}if((c[q>>2]|0)!=9?(c[q>>2]&255|0)!=6:0){q=c[n>>2]|0;s=c[c[k>>2]>>2]|0;Kj(q,s,bf(c[l>>2]|0)|0)}}while(0);Yd(c[p>>2]|0)|0}while(0);c[j>>2]=0;s=c[j>>2]|0;i=r;return s|0}function xj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;h=e+4|0;g=e;c[f>>2]=a;c[h>>2]=b;c[g>>2]=d;Sf(c[h>>2]|0,c[c[f>>2]>>2]|0);d=nh(c[h>>2]|0,c[g>>2]|0)|0;c[c[f>>2]>>2]=d;i=e;return}function yj(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[d>>2]=a;a=c[d>>2]|0;do if((c[d>>2]|0)<0)if((a|0)==-2147483648){c[b>>2]=2147483647;break}else{c[b>>2]=0-(c[d>>2]|0);break}else c[b>>2]=a;while(0);i=e;return c[b>>2]|0}function zj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;e=d+4|0;f=d;c[g>>2]=a;c[e>>2]=b;c[f>>2]=c[(c[g>>2]|0)+4>>2];kg(c[g>>2]|0);Ij(c[c[f>>2]>>2]|0,c[e>>2]|0);i=d;return 0}function Aj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+48|0;l=n;d=n+40|0;e=n+36|0;f=n+32|0;k=n+24|0;g=n+16|0;m=n+12|0;j=n+8|0;h=n+4|0;c[e>>2]=a;c[f>>2]=b;c[g>>2]=c[(c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+12>>2]|0)+24+8>>2];while(1){if(!(c[g>>2]|0))break;c[h>>2]=c[(c[g>>2]|0)+8>>2];Cj(c[h>>2]|0);c[g>>2]=c[c[g>>2]>>2]}c[k>>2]=c[e>>2];c[k+4>>2]=c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)>>2];if(!(pi(c[e>>2]|0,21027,c[k+4>>2]|0)|0)){c[d>>2]=1;m=c[d>>2]|0;i=n;return m|0}h=c[e>>2]|0;c[l>>2]=c[k+4>>2];c[m>>2]=Bh(h,21040,l)|0;if(!(c[m>>2]|0))c[j>>2]=7;else{c[j>>2]=$e(c[e>>2]|0,c[m>>2]|0,141,k,0)|0;Sf(c[e>>2]|0,c[m>>2]|0)}if((c[j>>2]|0)==7)jh(c[e>>2]|0);c[d>>2]=c[j>>2];m=c[d>>2]|0;i=n;return m|0}function Bj(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;kg(c[b>>2]|0);c[d>>2]=Kg(c[b>>2]|0,0)|0;if(c[d>>2]|0){d=c[d>>2]|0;i=e;return d|0}c[d>>2]=Jg(c[b>>2]|0,0)|0;d=c[d>>2]|0;i=e;return d|0}function Cj(a){a=a|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+12|0;h=l+16|0;g=l+8|0;k=l+4|0;j=l;c[f>>2]=a;b[h>>1]=b[5446]|0;b[h+2>>1]=b[5447]|0;b[h+4>>1]=b[5448]|0;b[h+6>>1]=b[5449]|0;b[h+8>>1]=b[5450]|0;c[g>>2]=c[(c[f>>2]|0)+8>>2];if(5<(e[(c[f>>2]|0)+50>>1]|0))a=5;else a=e[(c[f>>2]|0)+50>>1]|0;c[k>>2]=a;b[c[g>>2]>>1]=b[(c[(c[f>>2]|0)+12>>2]|0)+38>>1]|0;if((b[c[g>>2]>>1]|0)<33)b[c[g>>2]>>1]=33;iR((c[g>>2]|0)+2|0,h|0,c[k>>2]<<1|0)|0;c[j>>2]=(c[k>>2]|0)+1;while(1){if((c[j>>2]|0)>(e[(c[f>>2]|0)+50>>1]|0))break;b[(c[g>>2]|0)+(c[j>>2]<<1)>>1]=23;c[j>>2]=(c[j>>2]|0)+1}if(!(d[(c[f>>2]|0)+54>>0]|0)){i=l;return}b[(c[g>>2]|0)+(e[(c[f>>2]|0)+50>>1]<<1)>>1]=0;i=l;return}function Dj(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+112|0;j=s+96|0;t=s+92|0;k=s+84|0;p=s+76|0;o=s+72|0;q=s+68|0;r=s+64|0;l=s+60|0;n=s+56|0;m=s;c[t>>2]=d;c[s+88>>2]=f;c[k>>2]=g;c[s+80>>2]=h;c[p>>2]=c[t>>2];if(((c[k>>2]|0)!=0?(c[c[k>>2]>>2]|0)!=0:0)?(c[(c[k>>2]|0)+8>>2]|0)!=0:0){c[q>>2]=pi(c[c[p>>2]>>2]|0,c[c[k>>2]>>2]|0,c[(c[p>>2]|0)+4>>2]|0)|0;if(!(c[q>>2]|0)){c[j>>2]=0;t=c[j>>2]|0;i=s;return t|0}do if(c[(c[k>>2]|0)+4>>2]|0)if(!(Td(c[c[k>>2]>>2]|0,c[(c[k>>2]|0)+4>>2]|0)|0)){c[o>>2]=Ej(c[q>>2]|0)|0;break}else{c[o>>2]=Fj(c[c[p>>2]>>2]|0,c[(c[k>>2]|0)+4>>2]|0,c[(c[p>>2]|0)+4>>2]|0)|0;break}else c[o>>2]=0;while(0);c[r>>2]=c[(c[k>>2]|0)+8>>2];if(c[o>>2]|0){c[l>>2]=0;c[n>>2]=(e[(c[o>>2]|0)+50>>1]|0)+1;t=(c[o>>2]|0)+55|0;a[t>>0]=a[t>>0]&-5;Gj(c[r>>2]|0,c[n>>2]|0,c[l>>2]|0,c[(c[o>>2]|0)+8>>2]|0,c[o>>2]|0);if(!(c[(c[o>>2]|0)+36>>2]|0))b[(c[q>>2]|0)+38>>1]=b[c[(c[o>>2]|0)+8>>2]>>1]|0}else{b[m+48>>1]=b[(c[q>>2]|0)+40>>1]|0;Gj(c[r>>2]|0,1,0,(c[q>>2]|0)+38|0,m);b[(c[q>>2]|0)+40>>1]=b[m+48>>1]|0}c[j>>2]=0;t=c[j>>2]|0;i=s;return t|0}c[j>>2]=0;t=c[j>>2]|0;i=s;return t|0}function Ej(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;f=e+4|0;d=e;c[f>>2]=b;c[d>>2]=c[(c[f>>2]|0)+8>>2];while(1){if(!(c[d>>2]|0)){b=5;break}if(!((a[(c[d>>2]|0)+55>>0]&3|0)==2^1)){b=5;break}c[d>>2]=c[(c[d>>2]|0)+20>>2]}if((b|0)==5){i=e;return c[d>>2]|0}return 0}function Fj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;e=n+24|0;f=n+20|0;g=n+16|0;k=n+12|0;h=n+8|0;j=n+4|0;l=n;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[k>>2]=0;c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[(c[e>>2]|0)+20>>2]|0)){m=7;break}b=c[h>>2]|0;c[j>>2]=(c[h>>2]|0)<2?b^1:b;c[l>>2]=c[(c[(c[e>>2]|0)+16>>2]|0)+(c[j>>2]<<4)+12>>2];if(!((c[g>>2]|0)!=0?(Td(c[g>>2]|0,c[(c[(c[e>>2]|0)+16>>2]|0)+(c[j>>2]<<4)>>2]|0)|0)!=0:0))m=5;if((m|0)==5?(m=0,c[k>>2]=nj((c[l>>2]|0)+24|0,c[f>>2]|0)|0,(c[k>>2]|0)!=0):0){m=7;break}c[h>>2]=(c[h>>2]|0)+1}if((m|0)==7){i=n;return c[k>>2]|0}return 0}function Gj(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+48|0;r=q+32|0;j=q+28|0;k=q+20|0;o=q+16|0;p=q+12|0;l=q+8|0;m=q+4|0;n=q;c[r>>2]=d;c[j>>2]=e;c[q+24>>2]=f;c[k>>2]=g;c[o>>2]=h;c[p>>2]=c[r>>2];c[m>>2]=0;while(1){if(!(a[c[p>>2]>>0]|0))break;if((c[m>>2]|0)>=(c[j>>2]|0))break;c[n>>2]=0;while(1){r=a[c[p>>2]>>0]|0;c[l>>2]=r;if(!((r|0)>=48?(c[l>>2]|0)<=57:0))break;c[n>>2]=((c[n>>2]|0)*10|0)+(c[l>>2]|0)-48;c[p>>2]=(c[p>>2]|0)+1}r=Hj(c[n>>2]|0,0)|0;b[(c[k>>2]|0)+(c[m>>2]<<1)>>1]=r;if((a[c[p>>2]>>0]|0)==32)c[p>>2]=(c[p>>2]|0)+1;c[m>>2]=(c[m>>2]|0)+1}r=(c[o>>2]|0)+55|0;a[r>>0]=a[r>>0]&-5;r=(c[o>>2]|0)+55|0;a[r>>0]=a[r>>0]&-65;a:while(1){if(!(a[c[p>>2]>>0]|0))break;do if(Ze(21081,c[p>>2]|0)|0){r=(Ze(21092,c[p>>2]|0)|0)==0;j=c[p>>2]|0;if(r){r=Ki(j+3|0)|0;r=Hj(r,((r|0)<0)<<31>>31)|0;b[(c[o>>2]|0)+48>>1]=r;break}if(!(Ze(21102,j)|0)){r=(c[o>>2]|0)+55|0;a[r>>0]=a[r>>0]&-65|64}}else{r=(c[o>>2]|0)+55|0;a[r>>0]=a[r>>0]&-5|4}while(0);while(1){if(!(a[c[p>>2]>>0]|0))break;if((a[c[p>>2]>>0]|0)==32)break;c[p>>2]=(c[p>>2]|0)+1}while(1){if((a[c[p>>2]>>0]|0)!=32)continue a;c[p>>2]=(c[p>>2]|0)+1}}i=q;return}function Hj(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;e=h+10|0;f=h;g=h+8|0;j=f;c[j>>2]=a;c[j+4>>2]=d;b[g>>1]=40;d=f;a=c[d+4>>2]|0;a:do if(a>>>0<0|(a|0)==0&(c[d>>2]|0)>>>0<8){j=f;d=c[j+4>>2]|0;if(d>>>0<0|(d|0)==0&(c[j>>2]|0)>>>0<2){b[e>>1]=0;j=b[e>>1]|0;i=h;return j|0}else while(1){j=f;d=c[j+4>>2]|0;if(!(d>>>0<0|(d|0)==0&(c[j>>2]|0)>>>0<8))break a;b[g>>1]=(b[g>>1]|0)-10;d=f;d=lR(c[d>>2]|0,c[d+4>>2]|0,1)|0;j=f;c[j>>2]=d;c[j+4>>2]=C}}else{while(1){j=f;d=c[j+4>>2]|0;if(!(d>>>0>0|(d|0)==0&(c[j>>2]|0)>>>0>255))break;b[g>>1]=(b[g>>1]|0)+40;d=f;d=hR(c[d>>2]|0,c[d+4>>2]|0,4)|0;j=f;c[j>>2]=d;c[j+4>>2]=C}while(1){j=f;d=c[j+4>>2]|0;if(!(d>>>0>0|(d|0)==0&(c[j>>2]|0)>>>0>15))break a;b[g>>1]=(b[g>>1]|0)+10;d=f;d=hR(c[d>>2]|0,c[d+4>>2]|0,1)|0;j=f;c[j>>2]=d;c[j+4>>2]=C}}while(0);b[e>>1]=(b[10876+((c[f>>2]&7)<<1)>>1]|0)+(b[g>>1]|0)-10;j=b[e>>1]|0;i=h;return j|0}function Ij(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;Jj(c[(c[f>>2]|0)+212>>2]|0,c[e>>2]|0);i=d;return}function Jj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;c[(c[f>>2]|0)+16>>2]=c[e>>2];e=c[33]|0;b=c[(c[f>>2]|0)+44>>2]|0;a=Zi(c[f>>2]|0)|0;Rb[e&255](b,a);i=d;return}function Kj(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;m=o+8|0;l=o;g=o+32|0;h=o+28|0;j=o+24|0;k=o+20|0;n=o+16|0;c[g>>2]=b;c[h>>2]=e;c[j>>2]=f;c[k>>2]=c[c[g>>2]>>2];if((a[(c[k>>2]|0)+65>>0]|0)==0?(c[(c[k>>2]|0)+24>>2]&65536|0)==0:0){if(!(c[h>>2]|0))c[h>>2]=21139;e=c[k>>2]|0;c[l>>2]=c[h>>2];c[n>>2]=Bh(e,21141,l)|0;if(c[j>>2]|0){e=c[k>>2]|0;f=c[j>>2]|0;c[m>>2]=c[n>>2];c[m+4>>2]=f;c[n>>2]=Bh(e,21172,m)|0}Sf(c[k>>2]|0,c[c[(c[g>>2]|0)+4>>2]>>2]|0);c[c[(c[g>>2]|0)+4>>2]>>2]=c[n>>2]}if(d[(c[k>>2]|0)+65>>0]|0){f=7;e=c[g>>2]|0;e=e+12|0;c[e>>2]=f;i=o;return}f=Lj(109430)|0;e=c[g>>2]|0;e=e+12|0;c[e>>2]=f;i=o;return}function Lj(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b;e=b+8|0;c[e>>2]=a;e=c[e>>2]|0;a=(kf()|0)+20|0;c[d>>2]=e;c[d+4>>2]=a;Rd(11,21180,d);i=b;return 11}function Mj(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;n=m+12|0;h=m+16|0;j=m+8|0;k=m+4|0;l=m;c[n>>2]=b;a[h>>0]=e;c[j>>2]=f;c[k>>2]=g;g=c[n>>2]|0;if(c[j>>2]|0)c[l>>2]=Nj(g,c[j>>2]|0,c[k>>2]|0)|0;else c[l>>2]=c[g+8>>2];if(!(c[l>>2]|0)){n=c[l>>2]|0;i=m;return n|0}c[l>>2]=(c[l>>2]|0)+(((d[h>>0]|0)-1|0)*20|0);n=c[l>>2]|0;i=m;return n|0}function Nj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;f=l+20|0;g=l+16|0;m=l+12|0;j=l+8|0;h=l+4|0;k=l;c[f>>2]=b;c[g>>2]=d;c[m>>2]=e;c[j>>2]=nj((c[f>>2]|0)+432|0,c[g>>2]|0)|0;if(!(0==(c[j>>2]|0)&(c[m>>2]|0)!=0)){m=c[j>>2]|0;i=l;return m|0}c[h>>2]=If(c[g>>2]|0)|0;c[j>>2]=ph(c[f>>2]|0,60+(c[h>>2]|0)+1|0,0)|0;if(!(c[j>>2]|0)){m=c[j>>2]|0;i=l;return m|0}c[k>>2]=0;c[c[j>>2]>>2]=(c[j>>2]|0)+60;a[(c[j>>2]|0)+4>>0]=1;c[(c[j>>2]|0)+20>>2]=(c[j>>2]|0)+60;a[(c[j>>2]|0)+20+4>>0]=2;c[(c[j>>2]|0)+40>>2]=(c[j>>2]|0)+60;a[(c[j>>2]|0)+40+4>>0]=3;iR(c[c[j>>2]>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;a[(c[c[j>>2]>>2]|0)+(c[h>>2]|0)>>0]=0;c[k>>2]=Oj((c[f>>2]|0)+432|0,c[c[j>>2]>>2]|0,c[j>>2]|0)|0;if(!(c[k>>2]|0)){m=c[j>>2]|0;i=l;return m|0}jh(c[f>>2]|0);Sf(c[f>>2]|0,c[k>>2]|0);c[j>>2]=0;m=c[j>>2]|0;i=l;return m|0}function Oj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;k=n+28|0;l=n+24|0;e=n+20|0;f=n+16|0;h=n+12|0;g=n+8|0;m=n+4|0;j=n;c[l>>2]=a;c[e>>2]=b;c[f>>2]=d;c[g>>2]=oj(c[l>>2]|0,c[e>>2]|0,h)|0;if(c[g>>2]|0){c[j>>2]=c[(c[g>>2]|0)+8>>2];if(!(c[f>>2]|0))Pj(c[l>>2]|0,c[g>>2]|0,c[h>>2]|0);else{c[(c[g>>2]|0)+8>>2]=c[f>>2];c[(c[g>>2]|0)+12>>2]=c[e>>2]}c[k>>2]=c[j>>2];m=c[k>>2]|0;i=n;return m|0}if(!(c[f>>2]|0)){c[k>>2]=0;m=c[k>>2]|0;i=n;return m|0}c[m>>2]=_f(16,0)|0;if(!(c[m>>2]|0)){c[k>>2]=c[f>>2];m=c[k>>2]|0;i=n;return m|0}c[(c[m>>2]|0)+12>>2]=c[e>>2];c[(c[m>>2]|0)+8>>2]=c[f>>2];b=(c[l>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+1;if(((c[(c[l>>2]|0)+4>>2]|0)>>>0>=10?(c[(c[l>>2]|0)+4>>2]|0)>>>0>c[c[l>>2]>>2]<<1>>>0:0)?(Qj(c[l>>2]|0,c[(c[l>>2]|0)+4>>2]<<1)|0)!=0:0){b=pj(c[e>>2]|0)|0;c[h>>2]=(b>>>0)%((c[c[l>>2]>>2]|0)>>>0)|0}if(c[(c[l>>2]|0)+12>>2]|0)e=(c[(c[l>>2]|0)+12>>2]|0)+(c[h>>2]<<3)|0;else e=0;Rj(c[l>>2]|0,e,c[m>>2]|0);c[k>>2]=0;m=c[k>>2]|0;i=n;return m|0}function Pj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;b=c[c[f>>2]>>2]|0;if(c[(c[f>>2]|0)+4>>2]|0)c[c[(c[f>>2]|0)+4>>2]>>2]=b;else c[(c[e>>2]|0)+8>>2]=b;if(c[c[f>>2]>>2]|0)c[(c[c[f>>2]>>2]|0)+4>>2]=c[(c[f>>2]|0)+4>>2];if(c[(c[e>>2]|0)+12>>2]|0){c[h>>2]=(c[(c[e>>2]|0)+12>>2]|0)+(c[g>>2]<<3);if((c[(c[h>>2]|0)+4>>2]|0)==(c[f>>2]|0))c[(c[h>>2]|0)+4>>2]=c[c[f>>2]>>2];h=c[h>>2]|0;c[h>>2]=(c[h>>2]|0)+-1}Kd(c[f>>2]|0);h=(c[e>>2]|0)+4|0;c[h>>2]=(c[h>>2]|0)+-1;if(c[(c[e>>2]|0)+4>>2]|0){i=j;return}vj(c[e>>2]|0);i=j;return}function Qj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;d=l+24|0;e=l+20|0;f=l+16|0;j=l+12|0;g=l+8|0;k=l+4|0;h=l;c[e>>2]=a;c[f>>2]=b;c[f>>2]=c[f>>2]<<3>>>0>1024?128:b;if((c[f>>2]|0)==(c[c[e>>2]>>2]|0)){c[d>>2]=0;a=c[d>>2]|0;i=l;return a|0}Sj();c[j>>2]=_f(c[f>>2]<<3,0)|0;Tj();if(!(c[j>>2]|0)){c[d>>2]=0;a=c[d>>2]|0;i=l;return a|0}Kd(c[(c[e>>2]|0)+12>>2]|0);c[(c[e>>2]|0)+12>>2]=c[j>>2];a=(($f(c[j>>2]|0)|0)>>>0)/8|0;c[f>>2]=a;c[c[e>>2]>>2]=a;kR(c[j>>2]|0,0,c[f>>2]<<3|0)|0;c[g>>2]=c[(c[e>>2]|0)+8>>2];c[(c[e>>2]|0)+8>>2]=0;while(1){if(!(c[g>>2]|0))break;a=pj(c[(c[g>>2]|0)+12>>2]|0)|0;c[h>>2]=(a>>>0)%((c[f>>2]|0)>>>0)|0;c[k>>2]=c[c[g>>2]>>2];Rj(c[e>>2]|0,(c[j>>2]|0)+(c[h>>2]<<3)|0,c[g>>2]|0);c[g>>2]=c[k>>2]}c[d>>2]=1;a=c[d>>2]|0;i=l;return a|0}function Rj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+12|0;e=j+8|0;g=j+4|0;h=j;c[f>>2]=a;c[e>>2]=b;c[g>>2]=d;if(c[e>>2]|0){if(c[c[e>>2]>>2]|0)b=c[(c[e>>2]|0)+4>>2]|0;else b=0;c[h>>2]=b;d=c[e>>2]|0;c[d>>2]=(c[d>>2]|0)+1;c[(c[e>>2]|0)+4>>2]=c[g>>2]}else c[h>>2]=0;if(!(c[h>>2]|0)){c[c[g>>2]>>2]=c[(c[f>>2]|0)+8>>2];if(c[(c[f>>2]|0)+8>>2]|0)c[(c[(c[f>>2]|0)+8>>2]|0)+4>>2]=c[g>>2];c[(c[g>>2]|0)+4>>2]=0;c[(c[f>>2]|0)+8>>2]=c[g>>2];i=j;return}c[c[g>>2]>>2]=c[h>>2];c[(c[g>>2]|0)+4>>2]=c[(c[h>>2]|0)+4>>2];b=c[g>>2]|0;if(c[(c[h>>2]|0)+4>>2]|0)c[c[(c[h>>2]|0)+4>>2]>>2]=b;else c[(c[f>>2]|0)+8>>2]=b;c[(c[h>>2]|0)+4>>2]=c[g>>2];i=j;return}function Sj(){if(!(c[421]|0))return;Vb[c[1684>>2]&255]();return}function Tj(){if(!(c[422]|0))return;Vb[c[1688>>2]&255]();return}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,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+24|0;h=o+20|0;j=o+16|0;k=o+12|0;l=o+8|0;n=o+4|0;m=o;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=(c[h>>2]|0)<(c[k>>2]|0)?c[h>>2]|0:c[k>>2]|0;c[n>>2]=vQ(c[j>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;if(c[n>>2]|0){n=c[n>>2]|0;i=o;return n|0}if(((c[g>>2]|0)!=0?(Tt((c[j>>2]|0)+(c[m>>2]|0)|0,(c[h>>2]|0)-(c[m>>2]|0)|0)|0)!=0:0)?(Tt((c[l>>2]|0)+(c[m>>2]|0)|0,(c[k>>2]|0)-(c[m>>2]|0)|0)|0)!=0:0){n=c[n>>2]|0;i=o;return n|0}c[n>>2]=(c[h>>2]|0)-(c[k>>2]|0);n=c[n>>2]|0;i=o;return n|0}function Vj(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,j=0,k=0,l=0,m=0;k=i;i=i+32|0;g=k+16|0;m=k+12|0;h=k+8|0;l=k+4|0;j=k;c[k+20>>2]=a;c[g>>2]=b;c[m>>2]=d;c[h>>2]=e;c[l>>2]=f;c[j>>2]=zd(c[m>>2]|0,c[l>>2]|0,(c[g>>2]|0)<(c[h>>2]|0)?c[g>>2]|0:c[h>>2]|0)|0;if(c[j>>2]|0){m=c[j>>2]|0;i=k;return m|0}c[j>>2]=(c[g>>2]|0)-(c[h>>2]|0);m=c[j>>2]|0;i=k;return m|0}function Wj(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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,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;S=i;i=i+160|0;K=S+32|0;J=S+24|0;I=S+16|0;H=S+8|0;m=S+140|0;T=S+136|0;n=S+132|0;o=S+128|0;p=S+124|0;q=S+120|0;r=S+116|0;G=S+112|0;v=S+108|0;Q=S+104|0;M=S+100|0;t=S+144|0;l=S+96|0;O=S+92|0;u=S+88|0;x=S+84|0;y=S+80|0;k=S;F=S+76|0;D=S+72|0;P=S+68|0;E=S+64|0;s=S+60|0;N=S+56|0;A=S+52|0;z=S+48|0;w=S+44|0;B=S+40|0;L=S+36|0;c[T>>2]=b;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=j;c[G>>2]=0;c[v>>2]=c[c[o>>2]>>2];c[Q>>2]=c[T>>2];c[l>>2]=If(c[n>>2]|0)|0;a:do if(((c[v>>2]&64|0)!=0|(c[5]|0)!=0)&(c[l>>2]|0)>=5?(vQ(c[n>>2]|0,26902,5)|0)==0:0){c[y>>2]=0;e=(c[l>>2]|0)+2|0;T=k;c[T>>2]=e;c[T+4>>2]=((e|0)<0)<<31>>31;c[v>>2]=c[v>>2]|64;c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[l>>2]|0))break;e=(a[(c[n>>2]|0)+(c[x>>2]|0)>>0]|0)==38&1;T=k;e=gR(c[T>>2]|0,c[T+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;T=k;c[T>>2]=e;c[T+4>>2]=C;c[x>>2]=(c[x>>2]|0)+1}T=k;c[M>>2]=Jd(c[T>>2]|0,c[T+4>>2]|0)|0;if(!(c[M>>2]|0)){c[m>>2]=7;T=c[m>>2]|0;i=S;return T|0}c[x>>2]=5;do if((a[(c[n>>2]|0)+5>>0]|0)==47?(a[(c[n>>2]|0)+6>>0]|0)==47:0){c[x>>2]=7;while(1){if(a[(c[n>>2]|0)+(c[x>>2]|0)>>0]|0)k=(a[(c[n>>2]|0)+(c[x>>2]|0)>>0]|0)!=47;else k=0;l=c[x>>2]|0;if(!k)break;c[x>>2]=l+1}if((l|0)!=7){if((c[x>>2]|0)==16?(vQ(26908,(c[n>>2]|0)+7|0,9)|0)==0:0)break;T=(c[n>>2]|0)+7|0;c[H>>2]=(c[x>>2]|0)-7;c[H+4>>2]=T;T=Od(26918,H)|0;c[c[r>>2]>>2]=T;c[G>>2]=1;break a}}while(0);c[u>>2]=0;b:while(1){T=a[(c[n>>2]|0)+(c[x>>2]|0)>>0]|0;a[t>>0]=T;if(!(T<<24>>24))break;if((a[t>>0]|0)==35)break;c[x>>2]=(c[x>>2]|0)+1;do if(((a[t>>0]|0)==37?(d[19267+(d[(c[n>>2]|0)+(c[x>>2]|0)>>0]|0)>>0]&8|0)!=0:0)?(d[19267+(d[(c[n>>2]|0)+((c[x>>2]|0)+1)>>0]|0)>>0]&8|0)!=0:0){T=c[x>>2]|0;c[x>>2]=T+1;c[F>>2]=((Gi(a[(c[n>>2]|0)+T>>0]|0)|0)&255)<<4;T=c[x>>2]|0;c[x>>2]=T+1;T=(Gi(a[(c[n>>2]|0)+T>>0]|0)|0)&255;c[F>>2]=(c[F>>2]|0)+T;if(c[F>>2]|0){a[t>>0]=c[F>>2];break}while(1){T=a[(c[n>>2]|0)+(c[x>>2]|0)>>0]|0;a[t>>0]=T;if(!(T<<24>>24))continue b;if((a[t>>0]|0)==35)continue b;if((c[u>>2]|0)==0?(a[t>>0]|0)==63:0)continue b;if((c[u>>2]|0)==1){if((a[t>>0]|0)==61)continue b;if((a[t>>0]|0)==38)continue b}if((c[u>>2]|0)==2?(a[t>>0]|0)==38:0)continue b;c[x>>2]=(c[x>>2]|0)+1}}else R=37;while(0);c:do if((R|0)==37){R=0;do if((c[u>>2]|0)==1){if((a[t>>0]|0)!=38?(a[t>>0]|0)!=61:0)break;if(!(a[(c[M>>2]|0)+((c[y>>2]|0)-1)>>0]|0))while(1){if(!(a[(c[n>>2]|0)+(c[x>>2]|0)>>0]|0))continue b;if((a[(c[n>>2]|0)+(c[x>>2]|0)>>0]|0)==35)continue b;if((a[(c[n>>2]|0)+((c[x>>2]|0)-1)>>0]|0)==38)continue b;c[x>>2]=(c[x>>2]|0)+1}else{if((a[t>>0]|0)==38){T=c[y>>2]|0;c[y>>2]=T+1;a[(c[M>>2]|0)+T>>0]=0}else c[u>>2]=2;a[t>>0]=0;break c}}while(0);if(!((c[u>>2]|0)==0?(a[t>>0]|0)==63:0)){if((c[u>>2]|0)!=2)break;if((a[t>>0]|0)!=38)break}a[t>>0]=0;c[u>>2]=1}while(0);H=a[t>>0]|0;T=c[y>>2]|0;c[y>>2]=T+1;a[(c[M>>2]|0)+T>>0]=H}if((c[u>>2]|0)==1){T=c[y>>2]|0;c[y>>2]=T+1;a[(c[M>>2]|0)+T>>0]=0}T=c[y>>2]|0;c[y>>2]=T+1;a[(c[M>>2]|0)+T>>0]=0;T=c[y>>2]|0;c[y>>2]=T+1;a[(c[M>>2]|0)+T>>0]=0;T=(If(c[M>>2]|0)|0)+1|0;c[O>>2]=(c[M>>2]|0)+T;while(1){if(!(a[c[O>>2]>>0]|0)){R=84;break a}c[D>>2]=If(c[O>>2]|0)|0;c[P>>2]=(c[O>>2]|0)+((c[D>>2]|0)+1);c[E>>2]=If(c[P>>2]|0)|0;if((c[D>>2]|0)==3?(vQ(26946,c[O>>2]|0,3)|0)==0:0)c[Q>>2]=c[P>>2];else{c[s>>2]=0;c[N>>2]=0;c[A>>2]=0;c[z>>2]=0;if((c[D>>2]|0)==5?(vQ(26950,c[O>>2]|0,5)|0)==0:0){c[A>>2]=393216;c[s>>2]=4912;c[z>>2]=c[A>>2];c[N>>2]=26950}if((c[D>>2]|0)==4?(vQ(26956,c[O>>2]|0,4)|0)==0:0){c[A>>2]=135;c[s>>2]=4936;c[z>>2]=c[A>>2]&c[v>>2];c[N>>2]=26961}if(c[s>>2]|0){c[B>>2]=0;c[w>>2]=0;while(1){if(!(c[(c[s>>2]|0)+(c[w>>2]<<3)>>2]|0))break;c[L>>2]=c[(c[s>>2]|0)+(c[w>>2]<<3)>>2];T=c[E>>2]|0;if((T|0)==(If(c[L>>2]|0)|0)?0==(vQ(c[P>>2]|0,c[L>>2]|0,c[E>>2]|0)|0):0){R=73;break}c[w>>2]=(c[w>>2]|0)+1}if((R|0)==73){R=0;c[B>>2]=c[(c[s>>2]|0)+(c[w>>2]<<3)+4>>2]}if(!(c[B>>2]|0)){R=76;break}if((c[B>>2]&-129|0)>(c[z>>2]|0)){R=78;break}c[v>>2]=c[v>>2]&~c[A>>2]|c[B>>2]}}c[O>>2]=(c[P>>2]|0)+((c[E>>2]|0)+1)}if((R|0)==76){T=c[P>>2]|0;c[I>>2]=c[N>>2];c[I+4>>2]=T;T=Od(26968,I)|0;c[c[r>>2]>>2]=T;c[G>>2]=1;break}else if((R|0)==78){T=c[P>>2]|0;c[J>>2]=c[N>>2];c[J+4>>2]=T;T=Od(26988,J)|0;c[c[r>>2]>>2]=T;c[G>>2]=3;break}}else R=81;while(0);do if((R|0)==81){T=(c[l>>2]|0)+2|0;c[M>>2]=Jd(T,((T|0)<0)<<31>>31)|0;if(c[M>>2]|0){iR(c[M>>2]|0,c[n>>2]|0,c[l>>2]|0)|0;a[(c[M>>2]|0)+(c[l>>2]|0)>>0]=0;a[(c[M>>2]|0)+((c[l>>2]|0)+1)>>0]=0;c[v>>2]=c[v>>2]&-65;R=84;break}c[m>>2]=7;T=c[m>>2]|0;i=S;return T|0}while(0);if((R|0)==84?(T=Cd(c[Q>>2]|0)|0,c[c[p>>2]>>2]=T,(c[c[p>>2]>>2]|0)==0):0){c[K>>2]=c[Q>>2];T=Od(27012,K)|0;c[c[r>>2]>>2]=T;c[G>>2]=1}if(c[G>>2]|0){Kd(c[M>>2]|0);c[M>>2]=0}c[c[o>>2]>>2]=c[v>>2];c[c[q>>2]>>2]=c[M>>2];c[m>>2]=c[G>>2];T=c[m>>2]|0;i=S;return T|0}function Xj(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;I=i;i=i+192|0;C=I+76|0;m=I+72|0;n=I+68|0;o=I+64|0;D=I+60|0;p=I+56|0;q=I+52|0;F=I+48|0;E=I+44|0;H=I+36|0;x=I+180|0;z=I+80|0;u=I+32|0;t=I+28|0;v=I+24|0;w=I+20|0;A=I+16|0;s=I+12|0;y=I+8|0;r=I+4|0;G=I;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[D>>2]=j;c[p>>2]=k;c[q>>2]=l;c[F>>2]=0;c[I+40>>2]=0;c[H>>2]=0;if(!(c[n>>2]|0))h=1;else h=(a[c[n>>2]>>0]|0)==0;c[u>>2]=h&1;if((c[n>>2]|0)!=0?(yQ(c[n>>2]|0,26694)|0)==0:0)h=1;else B=5;do if((B|0)==5){if((c[u>>2]|0)!=0?(Sq(c[o>>2]|0)|0)!=0:0){h=1;break}h=(c[q>>2]&128|0)!=0}while(0);c[t>>2]=h&1;if(c[t>>2]|0)c[p>>2]=c[p>>2]|2;if((c[q>>2]&256|0)!=0?(c[t>>2]|0)!=0|(c[u>>2]|0)!=0:0)c[q>>2]=c[q>>2]&-257|512;c[E>>2]=ig(48,0)|0;if(!(c[E>>2]|0)){c[C>>2]=7;H=c[C>>2]|0;i=I;return H|0}a[(c[E>>2]|0)+8>>0]=0;c[c[E>>2]>>2]=c[o>>2];c[(c[E>>2]|0)+32>>2]=c[E>>2];c[(c[E>>2]|0)+32+4>>2]=1;do if(!(c[u>>2]|0)){if((c[t>>2]|0)!=0?(c[q>>2]&64|0)==0:0)break;if(c[q>>2]&131072){c[v>>2]=(If(c[n>>2]|0)|0)+1;c[w>>2]=(c[(c[m>>2]|0)+8>>2]|0)+1;u=(c[w>>2]|0)>(c[v>>2]|0)?c[w>>2]|0:c[v>>2]|0;c[A>>2]=_f(u,((u|0)<0)<<31>>31)|0;a[(c[E>>2]|0)+9>>0]=1;if(!(c[A>>2]|0)){Kd(c[E>>2]|0);c[C>>2]=7;H=c[C>>2]|0;i=I;return H|0}if(!(c[t>>2]|0)){c[H>>2]=Tq(c[m>>2]|0,c[n>>2]|0,c[w>>2]|0,c[A>>2]|0)|0;if(c[H>>2]|0){Kd(c[A>>2]|0);Kd(c[E>>2]|0);c[C>>2]=c[H>>2];H=c[C>>2]|0;i=I;return H|0}}else iR(c[A>>2]|0,c[n>>2]|0,c[v>>2]|0)|0;c[F>>2]=c[1208];while(1){if(!(c[F>>2]|0))break;w=c[A>>2]|0;if(0==(yQ(w,Fi(c[c[F>>2]>>2]|0,0)|0)|0)?(w=ti(c[c[F>>2]>>2]|0)|0,(w|0)==(c[m>>2]|0)):0){B=29;break}c[F>>2]=c[(c[F>>2]|0)+68>>2]}do if((B|0)==29){c[s>>2]=(c[(c[o>>2]|0)+20>>2]|0)-1;while(1){if((c[s>>2]|0)<0){B=35;break}c[y>>2]=c[(c[(c[o>>2]|0)+16>>2]|0)+(c[s>>2]<<4)+4>>2];if((c[y>>2]|0)!=0?(c[(c[y>>2]|0)+4>>2]|0)==(c[F>>2]|0):0)break;c[s>>2]=(c[s>>2]|0)+-1}if((B|0)==35){c[(c[E>>2]|0)+4>>2]=c[F>>2];y=(c[F>>2]|0)+64|0;c[y>>2]=(c[y>>2]|0)+1;break}Kd(c[A>>2]|0);Kd(c[E>>2]|0);c[C>>2]=19;H=c[C>>2]|0;i=I;return H|0}while(0);Kd(c[A>>2]|0)}}while(0);do if(!(c[F>>2]|0)){c[F>>2]=ig(84,0)|0;if(!(c[F>>2]|0)){c[H>>2]=7;break}c[H>>2]=Vq(c[m>>2]|0,c[F>>2]|0,c[n>>2]|0,88,c[p>>2]|0,c[q>>2]|0,149)|0;if(!(c[H>>2]|0)){A=(c[o>>2]|0)+40|0;Wq(c[c[F>>2]>>2]|0,c[A>>2]|0,c[A+4>>2]|0);c[H>>2]=Xq(c[c[F>>2]>>2]|0,100,z)|0}if(!(c[H>>2]|0)){a[(c[F>>2]|0)+16>>0]=c[p>>2];c[(c[F>>2]|0)+4>>2]=c[o>>2];Zq(c[c[F>>2]>>2]|0,171,c[F>>2]|0);c[(c[E>>2]|0)+4>>2]=c[F>>2];c[(c[F>>2]|0)+8>>2]=0;c[(c[F>>2]|0)+12>>2]=0;if((_q(c[c[F>>2]>>2]|0)|0)<<24>>24){A=(c[F>>2]|0)+22|0;b[A>>1]=e[A>>1]|1}c[(c[F>>2]|0)+32>>2]=d[z+16>>0]<<8|d[z+17>>0]<<16;if(((c[(c[F>>2]|0)+32>>2]|0)>>>0>=512?(c[(c[F>>2]|0)+32>>2]|0)>>>0<=65536:0)?((c[(c[F>>2]|0)+32>>2]|0)-1&c[(c[F>>2]|0)+32>>2]|0)==0:0){a[x>>0]=a[z+20>>0]|0;A=(c[F>>2]|0)+22|0;b[A>>1]=e[A>>1]|2;A=($q(z+52|0)|0)!=0;a[(c[F>>2]|0)+17>>0]=A?1:0;A=($q(z+64|0)|0)!=0;a[(c[F>>2]|0)+18>>0]=A?1:0}else{c[(c[F>>2]|0)+32>>2]=0;if(!((c[n>>2]|0)==0|(c[t>>2]|0)!=0)){a[(c[F>>2]|0)+17>>0]=0;a[(c[F>>2]|0)+18>>0]=0}a[x>>0]=0}c[H>>2]=Qi(c[c[F>>2]>>2]|0,(c[F>>2]|0)+32|0,d[x>>0]|0)|0;if(!(c[H>>2]|0)){c[(c[F>>2]|0)+36>>2]=(c[(c[F>>2]|0)+32>>2]|0)-(d[x>>0]|0);if(a[(c[E>>2]|0)+9>>0]|0){c[(c[F>>2]|0)+64>>2]=1;c[(c[F>>2]|0)+68>>2]=c[1208];c[1208]=c[F>>2];B=56}else B=56}}}else B=56;while(0);if((B|0)==56){a:do if(a[(c[E>>2]|0)+9>>0]|0){c[r>>2]=0;while(1){if((c[r>>2]|0)>=(c[(c[o>>2]|0)+20>>2]|0))break a;B=c[(c[(c[o>>2]|0)+16>>2]|0)+(c[r>>2]<<4)+4>>2]|0;c[G>>2]=B;if((B|0)!=0?(d[(c[G>>2]|0)+9>>0]|0)!=0:0)break;c[r>>2]=(c[r>>2]|0)+1}while(1){if(!(c[(c[G>>2]|0)+28>>2]|0))break;c[G>>2]=c[(c[G>>2]|0)+28>>2]}if((c[(c[E>>2]|0)+4>>2]|0)>>>0<(c[(c[G>>2]|0)+4>>2]|0)>>>0){c[(c[E>>2]|0)+24>>2]=c[G>>2];c[(c[E>>2]|0)+28>>2]=0;c[(c[G>>2]|0)+28>>2]=c[E>>2];break}while(1){if(c[(c[G>>2]|0)+24>>2]|0)k=(c[(c[(c[G>>2]|0)+24>>2]|0)+4>>2]|0)>>>0<(c[(c[E>>2]|0)+4>>2]|0)>>>0;else k=0;h=c[(c[G>>2]|0)+24>>2]|0;if(!k)break;c[G>>2]=h}c[(c[E>>2]|0)+24>>2]=h;c[(c[E>>2]|0)+28>>2]=c[G>>2];if(c[(c[E>>2]|0)+24>>2]|0)c[(c[(c[E>>2]|0)+24>>2]|0)+28>>2]=c[E>>2];c[(c[G>>2]|0)+24>>2]=c[E>>2]}while(0);c[c[D>>2]>>2]=c[E>>2]}if(!(c[H>>2]|0)){if(!(Rq(c[E>>2]|0,0,0)|0))Ij(c[c[(c[E>>2]|0)+4>>2]>>2]|0,2e3)}else{if((c[F>>2]|0)!=0?(c[c[F>>2]>>2]|0)!=0:0)ar(c[c[F>>2]>>2]|0)|0;Kd(c[F>>2]|0);Kd(c[E>>2]|0);c[c[D>>2]>>2]=0}c[C>>2]=c[H>>2];H=c[C>>2]|0;i=I;return H|0}function Yj(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[g>>2]=e;if(c[g>>2]|0)c[h>>2]=Rq(c[g>>2]|0,84,150)|0;else c[h>>2]=ph(0,84,0)|0;if(!(c[h>>2]|0)){jh(c[f>>2]|0);e=c[h>>2]|0;i=j;return e|0}if(d[(c[h>>2]|0)+76>>0]|0){e=c[h>>2]|0;i=j;return e|0}uj((c[h>>2]|0)+8|0);uj((c[h>>2]|0)+24|0);uj((c[h>>2]|0)+40|0);uj((c[h>>2]|0)+56|0);a[(c[h>>2]|0)+77>>0]=1;e=c[h>>2]|0;i=j;return e|0}function Zj(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=d+4|0;e=d;c[b>>2]=a;c[e>>2]=xf(c[b>>2]|0,26688,2)|0;if((c[e>>2]|0)!=7){i=d;return}jh(c[b>>2]|0);i=d;return}function _j(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;g=k;b=k+24|0;e=k+20|0;d=k+16|0;f=k+12|0;h=k+8|0;j=k+4|0;c[b>>2]=a;c[d>>2]=1;if(!(c[382]|0)){i=k;return}c[e>>2]=0;while(1){if(!(c[d>>2]|0))break;if((c[e>>2]|0)>>>0>=(c[382]|0)>>>0){c[h>>2]=0;c[d>>2]=0}else c[h>>2]=c[(c[383]|0)+(c[e>>2]<<2)>>2];c[j>>2]=0;if((c[h>>2]|0)!=0?(a=Ob[c[h>>2]&255](c[b>>2]|0,j,3980)|0,c[f>>2]=a,(a|0)!=0):0){l=c[b>>2]|0;a=c[f>>2]|0;c[g>>2]=c[j>>2];hg(l,a,26649,g);c[d>>2]=0}Kd(c[j>>2]|0);c[e>>2]=(c[e>>2]|0)+1}i=k;return}function $j(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;b=k+24|0;d=k+20|0;j=k+16|0;e=k+12|0;g=k+8|0;f=k+4|0;h=k;c[d>>2]=a;c[j>>2]=0;c[e>>2]=0;c[g>>2]=0;c[f>>2]=0;c[h>>2]=0;ak(h);c[j>>2]=bk(c[d>>2]|0)|0;if(c[j>>2]|0){c[b>>2]=c[j>>2];j=c[b>>2]|0;i=k;return j|0}ck(g);dk(f);c[e>>2]=Id(20)|0;if(c[e>>2]|0)ek(c[e>>2]|0,1,1);else c[j>>2]=7;do if(!(c[j>>2]|0)){if(((fk(c[e>>2]|0,21308,7,c[g>>2]|0)|0)==0?(fk(c[e>>2]|0,21315,7,c[f>>2]|0)|0)==0:0)?(fk(c[e>>2]|0,21322,10,c[h>>2]|0)|0)==0:0)break;c[j>>2]=7}while(0);if((((((0==(c[j>>2]|0)?(h=gk(c[d>>2]|0,c[e>>2]|0,21332)|0,c[j>>2]=h,0==(h|0)):0)?(h=xf(c[d>>2]|0,21347,-1)|0,c[j>>2]=h,0==(h|0)):0)?(h=xf(c[d>>2]|0,21355,1)|0,c[j>>2]=h,0==(h|0)):0)?(h=xf(c[d>>2]|0,21363,1)|0,c[j>>2]=h,0==(h|0)):0)?(h=xf(c[d>>2]|0,21363,2)|0,c[j>>2]=h,0==(h|0)):0)?(h=xf(c[d>>2]|0,21373,1)|0,c[j>>2]=h,0==(h|0)):0){c[j>>2]=ef(c[d>>2]|0,21382,1692,c[e>>2]|0,151)|0;if(!(c[j>>2]|0))c[j>>2]=ef(c[d>>2]|0,21387,1692,c[e>>2]|0,0)|0;if(!(c[j>>2]|0))c[j>>2]=ik(c[d>>2]|0,c[e>>2]|0)|0;c[b>>2]=c[j>>2];j=c[b>>2]|0;i=k;return j|0}if(c[e>>2]|0){jk(c[e>>2]|0);Kd(c[e>>2]|0)}c[b>>2]=c[j>>2];j=c[b>>2]|0;i=k;return j|0}function ak(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;c[c[d>>2]>>2]=2312;i=b;return}function bk(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=df(c[e>>2]|0,26300,2220,0)|0;i=d;return c[b>>2]|0}function ck(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;c[c[d>>2]>>2]=2192;i=b;return}function dk(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;c[c[d>>2]>>2]=2164;i=b;return}function ek(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f;j=f+5|0;h=f+4|0;c[g>>2]=b;a[j>>0]=d;a[h>>0]=e;a[c[g>>2]>>0]=a[j>>0]|0;a[(c[g>>2]|0)+1>>0]=a[h>>0]|0;c[(c[g>>2]|0)+8>>2]=0;c[(c[g>>2]|0)+4>>2]=0;c[(c[g>>2]|0)+12>>2]=0;c[(c[g>>2]|0)+16>>2]=0;i=f;return}function fk(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+48|0;k=s+40|0;l=s+36|0;m=s+32|0;n=s+28|0;o=s+24|0;q=s+20|0;p=s+16|0;g=s+12|0;r=s+8|0;t=s+4|0;h=s;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[t>>2]=Bk(a[c[l>>2]>>0]|0)|0;c[q>>2]=Yb[c[t>>2]&255](c[m>>2]|0,c[n>>2]|0)|0;c[p>>2]=c[q>>2]&(c[(c[l>>2]|0)+12>>2]|0)-1;c[g>>2]=Ck(c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,c[p>>2]|0)|0;if(c[g>>2]|0){c[h>>2]=c[(c[g>>2]|0)+8>>2];if(!(c[o>>2]|0))Vp(c[l>>2]|0,c[g>>2]|0,c[p>>2]|0);else c[(c[g>>2]|0)+8>>2]=c[o>>2];c[k>>2]=c[h>>2];t=c[k>>2]|0;i=s;return t|0}if(!(c[o>>2]|0)){c[k>>2]=0;t=c[k>>2]|0;i=s;return t|0}if(!((c[(c[l>>2]|0)+12>>2]|0)==0?(Wp(c[l>>2]|0,8)|0)!=0:0))j=10;do if((j|0)==10){if((c[(c[l>>2]|0)+4>>2]|0)>=(c[(c[l>>2]|0)+12>>2]|0)?(Wp(c[l>>2]|0,c[(c[l>>2]|0)+12>>2]<<1)|0)!=0:0)break;c[r>>2]=Xp(20)|0;if(!(c[r>>2]|0)){c[k>>2]=c[o>>2];t=c[k>>2]|0;i=s;return t|0}do if((c[m>>2]|0)!=0?(a[(c[l>>2]|0)+1>>0]|0)!=0:0){f=Xp(c[n>>2]|0)|0;c[(c[r>>2]|0)+12>>2]=f;f=c[r>>2]|0;if(c[(c[r>>2]|0)+12>>2]|0){iR(c[f+12>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;break}kk(f);c[k>>2]=c[o>>2];t=c[k>>2]|0;i=s;return t|0}else c[(c[r>>2]|0)+12>>2]=c[m>>2];while(0);c[(c[r>>2]|0)+16>>2]=c[n>>2];t=(c[l>>2]|0)+4|0;c[t>>2]=(c[t>>2]|0)+1;c[p>>2]=c[q>>2]&(c[(c[l>>2]|0)+12>>2]|0)-1;Yp(c[l>>2]|0,(c[(c[l>>2]|0)+16>>2]|0)+(c[p>>2]<<3)|0,c[r>>2]|0);c[(c[r>>2]|0)+8>>2]=c[o>>2];c[k>>2]=0;t=c[k>>2]|0;i=s;return t|0}while(0);c[(c[l>>2]|0)+4>>2]=0;c[k>>2]=c[o>>2];t=c[k>>2]|0;i=s;return t|0}function gk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;e=j+20|0;k=j+16|0;f=j+12|0;h=j+8|0;g=j+4|0;c[e>>2]=a;c[k>>2]=b;c[f>>2]=d;c[h>>2]=0;c[g>>2]=c[k>>2];c[j>>2]=5;if(!(c[h>>2]|0))c[h>>2]=vf(c[e>>2]|0,c[f>>2]|0,1,5,c[g>>2]|0,225,0,0)|0;if(c[h>>2]|0){k=c[h>>2]|0;i=j;return k|0}c[h>>2]=vf(c[e>>2]|0,c[f>>2]|0,2,5,c[g>>2]|0,225,0,0)|0;k=c[h>>2]|0;i=j;return k|0}function hk(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];jk(c[d>>2]|0);Kd(c[d>>2]|0);i=b;return}function ik(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;d=e;c[g>>2]=a;c[f>>2]=b;c[d>>2]=df(c[g>>2]|0,21392,1784,c[f>>2]|0)|0;i=e;return c[d>>2]|0}function jk(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=b;c[e>>2]=c[(c[d>>2]|0)+8>>2];c[(c[d>>2]|0)+8>>2]=0;kk(c[(c[d>>2]|0)+16>>2]|0);c[(c[d>>2]|0)+16>>2]=0;c[(c[d>>2]|0)+12>>2]=0;while(1){if(!(c[e>>2]|0))break;c[f>>2]=c[c[e>>2]>>2];if((a[(c[d>>2]|0)+1>>0]|0)!=0?(c[(c[e>>2]|0)+12>>2]|0)!=0:0)kk(c[(c[e>>2]|0)+12>>2]|0);kk(c[e>>2]|0);c[e>>2]=c[f>>2]}c[(c[d>>2]|0)+4>>2]=0;i=g;return}function kk(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Kd(c[d>>2]|0);i=b;return}function lk(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,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;w=i;i=i+64|0;h=w+56|0;x=w+52|0;j=w+48|0;k=w+44|0;l=w+40|0;m=w+36|0;n=w+32|0;s=w+28|0;r=w+24|0;t=w+20|0;u=w+16|0;p=w+12|0;q=w+8|0;v=w+4|0;o=w;c[x>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[s>>2]=0;c[r>>2]=0;c[t>>2]=0;c[p>>2]=0;c[u>>2]=ff(c[x>>2]|0,21405)|0;if(c[u>>2]|0){c[h>>2]=c[u>>2];x=c[h>>2]|0;i=w;return x|0}c[q>>2]=(c[k>>2]|0)-3;c[u>>2]=wk(c[q>>2]|0,(c[l>>2]|0)+12|0,p)|0;if(!(c[u>>2]|0)){if((c[q>>2]|0)<1)c[v>>2]=21308;else c[v>>2]=c[c[p>>2]>>2];c[u>>2]=xk(c[j>>2]|0,c[v>>2]|0,r,c[n>>2]|0)|0}if(!(c[u>>2]|0)){c[o>>2]=(c[p>>2]|0)+4;c[u>>2]=Ob[c[(c[r>>2]|0)+4>>2]&255]((c[q>>2]|0)>1?(c[q>>2]|0)-1|0:0,c[o>>2]|0,t)|0}if((c[u>>2]|0)==0?(c[s>>2]=Id(20)|0,(c[s>>2]|0)==0):0)c[u>>2]=7;if(c[u>>2]|0){if(c[t>>2]|0)Tb[c[(c[r>>2]|0)+8>>2]&255](c[t>>2]|0)|0}else{x=c[s>>2]|0;c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;c[x+16>>2]=0;c[(c[s>>2]|0)+12>>2]=c[r>>2];c[(c[s>>2]|0)+16>>2]=c[t>>2];c[c[m>>2]>>2]=c[s>>2]}Kd(c[p>>2]|0);c[h>>2]=c[u>>2];x=c[h>>2]|0;i=w;return x|0}function mk(b,e){b=b|0;e=e|0;var f=0,g=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+4|0;j=k;c[k+8>>2]=b;c[g>>2]=e;c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[c[g>>2]>>2]|0)){e=8;break}if(((d[(c[(c[g>>2]|0)+4>>2]|0)+((c[j>>2]|0)*12|0)+5>>0]|0|0)!=0?(c[(c[(c[g>>2]|0)+4>>2]|0)+((c[j>>2]|0)*12|0)>>2]|0)==0:0)?(d[(c[(c[g>>2]|0)+4>>2]|0)+((c[j>>2]|0)*12|0)+4>>0]|0|0)==2:0){e=6;break}c[j>>2]=(c[j>>2]|0)+1}if((e|0)==6){c[(c[g>>2]|0)+20>>2]=1;c[(c[(c[g>>2]|0)+16>>2]|0)+(c[j>>2]<<3)>>2]=1;a[(c[(c[g>>2]|0)+16>>2]|0)+(c[j>>2]<<3)+4>>0]=1;h[(c[g>>2]|0)+40>>3]=1.0;c[f>>2]=0;j=c[f>>2]|0;i=k;return j|0}else if((e|0)==8){c[(c[g>>2]|0)+20>>2]=0;c[f>>2]=0;j=c[f>>2]|0;i=k;return j|0}return 0}function nk(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];Tb[c[(c[(c[d>>2]|0)+12>>2]|0)+8>>2]&255](c[(c[d>>2]|0)+16>>2]|0)|0;Kd(c[d>>2]|0);i=b;return 0}function ok(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+12|0;e=g+4|0;f=g;c[g+8>>2]=a;c[e>>2]=b;c[f>>2]=Id(36)|0;if(!(c[f>>2]|0)){c[d>>2]=7;f=c[d>>2]|0;i=g;return f|0}else{a=c[f>>2]|0;b=a+36|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));c[c[e>>2]>>2]=c[f>>2];c[d>>2]=0;f=c[d>>2]|0;i=g;return f|0}return 0}function pk(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];vk(c[d>>2]|0);Kd(c[d>>2]|0);i=b;return 0}function qk(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+48|0;h=q+40|0;j=q+36|0;r=q+32|0;k=q+20|0;o=q+16|0;m=q+12|0;n=q+8|0;p=q+4|0;l=q;c[j>>2]=b;c[r>>2]=d;c[q+28>>2]=e;c[q+24>>2]=f;c[k>>2]=g;c[o>>2]=1;c[m>>2]=c[j>>2];c[n>>2]=c[c[j>>2]>>2];vk(c[m>>2]|0);do if((c[r>>2]|0)==1){c[p>>2]=ae(c[c[k>>2]>>2]|0)|0;c[l>>2]=be(c[c[k>>2]>>2]|0)|0;r=Id((c[l>>2]|0)+1|0)|0;c[(c[m>>2]|0)+4>>2]=r;if(!(c[(c[m>>2]|0)+4>>2]|0)){c[o>>2]=7;break}iR(c[(c[m>>2]|0)+4>>2]|0,c[p>>2]|0,c[l>>2]|0)|0;a[(c[(c[m>>2]|0)+4>>2]|0)+(c[l>>2]|0)>>0]=0;c[o>>2]=Wb[c[(c[(c[n>>2]|0)+12>>2]|0)+12>>2]&255](c[(c[n>>2]|0)+16>>2]|0,c[(c[m>>2]|0)+4>>2]|0,c[l>>2]|0,(c[m>>2]|0)+8|0)|0;if(!(c[o>>2]|0))c[c[(c[m>>2]|0)+8>>2]>>2]=c[(c[n>>2]|0)+16>>2]}while(0);if(c[o>>2]|0){c[h>>2]=c[o>>2];r=c[h>>2]|0;i=q;return r|0}else{c[h>>2]=rk(c[j>>2]|0)|0;r=c[h>>2]|0;i=q;return r|0}return 0}function rk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=i;i=i+16|0;g=e+12|0;b=e+8|0;f=e+4|0; -d=e;c[g>>2]=a;c[b>>2]=c[g>>2];c[f>>2]=c[c[g>>2]>>2];a=(c[b>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+1;c[d>>2]=Sb[c[(c[(c[f>>2]|0)+12>>2]|0)+20>>2]&255](c[(c[b>>2]|0)+8>>2]|0,(c[b>>2]|0)+16|0,(c[b>>2]|0)+20|0,(c[b>>2]|0)+24|0,(c[b>>2]|0)+28|0,(c[b>>2]|0)+32|0)|0;if(!(c[d>>2]|0)){g=c[d>>2]|0;i=e;return g|0}vk(c[b>>2]|0);if((c[d>>2]|0)!=101){g=c[d>>2]|0;i=e;return g|0}c[d>>2]=0;g=c[d>>2]|0;i=e;return g|0}function sk(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=c[e>>2];i=d;return(c[(c[b>>2]|0)+16>>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,j=0;g=i;i=i+16|0;j=g+12|0;e=g+8|0;h=g+4|0;f=g;c[j>>2]=a;c[e>>2]=b;c[h>>2]=d;c[f>>2]=c[j>>2];switch(c[h>>2]|0){case 0:{ne(c[e>>2]|0,c[(c[f>>2]|0)+4>>2]|0,-1,-1);i=g;return 0}case 1:{ne(c[e>>2]|0,c[(c[f>>2]|0)+16>>2]|0,c[(c[f>>2]|0)+20>>2]|0,-1);i=g;return 0}case 2:{ke(c[e>>2]|0,c[(c[f>>2]|0)+24>>2]|0);i=g;return 0}case 3:{ke(c[e>>2]|0,c[(c[f>>2]|0)+28>>2]|0);i=g;return 0}default:{ke(c[e>>2]|0,c[(c[f>>2]|0)+32>>2]|0);i=g;return 0}}return 0}function uk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;e=d+4|0;f=d;c[g>>2]=a;c[e>>2]=b;c[f>>2]=c[g>>2];a=c[(c[f>>2]|0)+12>>2]|0;b=c[e>>2]|0;c[b>>2]=a;c[b+4>>2]=((a|0)<0)<<31>>31;i=d;return 0}function vk(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(c[(c[b>>2]|0)+8>>2]|0){c[d>>2]=c[c[b>>2]>>2];Tb[c[(c[(c[d>>2]|0)+12>>2]|0)+16>>2]&255](c[(c[b>>2]|0)+8>>2]|0)|0;c[(c[b>>2]|0)+8>>2]=0}Kd(c[(c[b>>2]|0)+4>>2]|0);c[(c[b>>2]|0)+4>>2]=0;c[(c[b>>2]|0)+16>>2]=0;c[(c[b>>2]|0)+20>>2]=0;c[(c[b>>2]|0)+24>>2]=0;c[(c[b>>2]|0)+28>>2]=0;c[(c[b>>2]|0)+32>>2]=0;c[(c[b>>2]|0)+12>>2]=0;i=e;return}function wk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;e=o+32|0;f=o+28|0;g=o+24|0;n=o+20|0;j=o+16|0;l=o+12|0;h=o+8|0;m=o+4|0;k=o;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[n>>2]=0;if(!(c[e>>2]|0)){c[c[g>>2]>>2]=0;n=c[n>>2]|0;i=o;return n|0}c[l>>2]=0;c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[e>>2]|0))break;d=(BQ(c[(c[f>>2]|0)+(c[j>>2]<<2)>>2]|0)|0)+1|0;c[l>>2]=(c[l>>2]|0)+d;c[j>>2]=(c[j>>2]|0)+1}d=Id((c[e>>2]<<2)+(c[l>>2]|0)|0)|0;c[h>>2]=d;c[c[g>>2]>>2]=d;if(!(c[h>>2]|0)){c[n>>2]=7;n=c[n>>2]|0;i=o;return n|0}c[m>>2]=(c[h>>2]|0)+(c[e>>2]<<2);c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[e>>2]|0))break;c[k>>2]=BQ(c[(c[f>>2]|0)+(c[j>>2]<<2)>>2]|0)|0;c[(c[h>>2]|0)+(c[j>>2]<<2)>>2]=c[m>>2];iR(c[m>>2]|0,c[(c[f>>2]|0)+(c[j>>2]<<2)>>2]|0,(c[k>>2]|0)+1|0)|0;Ik(c[m>>2]|0);c[m>>2]=(c[m>>2]|0)+((c[k>>2]|0)+1);c[j>>2]=(c[j>>2]|0)+1}n=c[n>>2]|0;i=o;return n|0}function xk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+32|0;l=m;f=m+28|0;o=m+24|0;g=m+20|0;h=m+16|0;j=m+12|0;k=m+8|0;n=m+4|0;c[o>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[n>>2]=BQ(c[g>>2]|0)|0;c[k>>2]=yk(c[o>>2]|0,c[g>>2]|0,(c[n>>2]|0)+1|0)|0;if(c[k>>2]|0){c[c[h>>2]>>2]=c[k>>2];c[f>>2]=0;o=c[f>>2]|0;i=m;return o|0}else{o=c[j>>2]|0;c[l>>2]=c[g>>2];zk(o,21456,l);c[f>>2]=1;o=c[f>>2]|0;i=m;return o|0}return 0}function yk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f+12|0;h=f+8|0;g=f+4|0;e=f;c[j>>2]=a;c[h>>2]=b;c[g>>2]=d;c[e>>2]=Ak(c[j>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;if(!(c[e>>2]|0)){j=0;i=f;return j|0}j=c[(c[e>>2]|0)+8>>2]|0;i=f;return j|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=i;i=i+32|0;f=e+20|0;h=e+16|0;g=e;c[f>>2]=a;c[h>>2]=b;Kd(c[c[f>>2]>>2]|0);c[g>>2]=d;b=Nd(c[h>>2]|0,g)|0;c[c[f>>2]>>2]=b;i=e;return}function Ak(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;if((c[g>>2]|0)!=0?(c[(c[g>>2]|0)+16>>2]|0)!=0:0){c[l>>2]=Bk(a[c[g>>2]>>0]|0)|0;c[k>>2]=Yb[c[l>>2]&255](c[h>>2]|0,c[j>>2]|0)|0;c[f>>2]=Ck(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,c[k>>2]&(c[(c[g>>2]|0)+12>>2]|0)-1)|0;l=c[f>>2]|0;i=m;return l|0}c[f>>2]=0;l=c[f>>2]|0;i=m;return l|0}function Bk(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=d+4|0;e=d;c[e>>2]=a;if((c[e>>2]|0)==1)c[b>>2]=180;else c[b>>2]=181;i=d;return c[b>>2]|0}function Ck(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;k=q+32|0;g=q+28|0;l=q+24|0;m=q+20|0;h=q+16|0;o=q+12|0;n=q+8|0;p=q+4|0;j=q;c[g>>2]=b;c[l>>2]=d;c[m>>2]=e;c[h>>2]=f;a:do if(c[(c[g>>2]|0)+16>>2]|0){c[j>>2]=(c[(c[g>>2]|0)+16>>2]|0)+(c[h>>2]<<3);c[o>>2]=c[(c[j>>2]|0)+4>>2];c[n>>2]=c[c[j>>2]>>2];c[p>>2]=Dk(a[c[g>>2]>>0]|0)|0;while(1){d=c[n>>2]|0;c[n>>2]=d+-1;if(!((d|0)!=0?(c[o>>2]|0)!=0:0))break a;d=(Wb[c[p>>2]&255](c[(c[o>>2]|0)+12>>2]|0,c[(c[o>>2]|0)+16>>2]|0,c[l>>2]|0,c[m>>2]|0)|0)==0;g=c[o>>2]|0;if(d)break;c[o>>2]=c[g>>2]}c[k>>2]=g;p=c[k>>2]|0;i=q;return p|0}while(0);c[k>>2]=0;p=c[k>>2]|0;i=q;return p|0}function Dk(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=d+4|0;e=d;c[e>>2]=a;if((c[e>>2]|0)==1)c[b>>2]=142;else c[b>>2]=143;i=d;return c[b>>2]|0}function Ek(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;f=k+16|0;g=k+12|0;h=k+8|0;j=k+4|0;l=k;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[l>>2]=e;if((c[h>>2]|0)!=(c[l>>2]|0)){c[f>>2]=1;l=c[f>>2]|0;i=k;return l|0}else{c[f>>2]=CQ(c[g>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;l=c[f>>2]|0;i=k;return l|0}return 0}function Fk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;f=k+16|0;g=k+12|0;h=k+8|0;j=k+4|0;l=k;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[l>>2]=e;if((c[h>>2]|0)!=(c[l>>2]|0)){c[f>>2]=1;l=c[f>>2]|0;i=k;return l|0}else{c[f>>2]=vQ(c[g>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;l=c[f>>2]|0;i=k;return l|0}return 0}function Gk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;j=h+12|0;e=h+8|0;g=h+4|0;f=h;c[j>>2]=b;c[e>>2]=d;c[g>>2]=c[j>>2];c[f>>2]=0;if((c[e>>2]|0)<=0)c[e>>2]=BQ(c[g>>2]|0)|0;while(1){d=c[f>>2]|0;if((c[e>>2]|0)<=0)break;b=d<<3^c[f>>2];j=c[g>>2]|0;c[g>>2]=j+1;c[f>>2]=b^a[j>>0];c[e>>2]=(c[e>>2]|0)+-1}i=h;return d&2147483647|0}function Hk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;j=h+12|0;e=h+8|0;f=h+4|0;g=h;c[j>>2]=b;c[e>>2]=d;c[f>>2]=0;c[g>>2]=c[j>>2];while(1){j=c[e>>2]|0;c[e>>2]=j+-1;d=c[f>>2]|0;if((j|0)<=0)break;b=d<<3^c[f>>2];j=c[g>>2]|0;c[g>>2]=j+1;c[f>>2]=b^a[j>>0]}i=h;return d&2147483647|0}function Ik(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+8|0;h=j+12|0;f=j+4|0;g=j;c[e>>2]=b;a[h>>0]=a[c[e>>2]>>0]|0;if((((a[h>>0]|0)!=91?(a[h>>0]|0)!=39:0)?(a[h>>0]|0)!=34:0)?(a[h>>0]|0)!=96:0){i=j;return}c[f>>2]=1;c[g>>2]=0;if((a[h>>0]|0)==91)a[h>>0]=93;while(1){if(!(a[(c[e>>2]|0)+(c[f>>2]|0)>>0]|0))break;b=c[f>>2]|0;d=b+1|0;if((a[(c[e>>2]|0)+(c[f>>2]|0)>>0]|0)!=(a[h>>0]|0)){c[f>>2]=d;b=a[(c[e>>2]|0)+b>>0]|0;d=c[g>>2]|0;c[g>>2]=d+1;a[(c[e>>2]|0)+d>>0]=b;continue}if((a[(c[e>>2]|0)+d>>0]|0)!=(a[h>>0]|0))break;b=a[h>>0]|0;d=c[g>>2]|0;c[g>>2]=d+1;a[(c[e>>2]|0)+d>>0]=b;c[f>>2]=(c[f>>2]|0)+2}a[(c[e>>2]|0)+(c[g>>2]|0)>>0]=0;i=j;return}function Jk(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,j=0,k=0,l=0,m=0,n=0,o=0;h=i;i=i+32|0;o=h+20|0;n=h+16|0;m=h+12|0;l=h+8|0;k=h+4|0;j=h;c[o>>2]=a;c[n>>2]=b;c[m>>2]=d;c[l>>2]=e;c[k>>2]=f;c[j>>2]=g;g=Fp(1,c[o>>2]|0,c[n>>2]|0,c[m>>2]|0,c[l>>2]|0,c[k>>2]|0,c[j>>2]|0)|0;i=h;return g|0}function Kk(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,j=0,k=0,l=0,m=0,n=0,o=0;h=i;i=i+32|0;o=h+20|0;n=h+16|0;m=h+12|0;l=h+8|0;k=h+4|0;j=h;c[o>>2]=a;c[n>>2]=b;c[m>>2]=d;c[l>>2]=e;c[k>>2]=f;c[j>>2]=g;g=Fp(0,c[o>>2]|0,c[n>>2]|0,c[m>>2]|0,c[l>>2]|0,c[k>>2]|0,c[j>>2]|0)|0;i=h;return g|0}function Lk(b,e){b=b|0;e=e|0;var f=0,g=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;u=i;i=i+64|0;r=u+48|0;v=u+44|0;s=u+40|0;o=u+36|0;g=u+32|0;j=u+28|0;n=u+24|0;k=u+20|0;l=u+16|0;m=u+12|0;f=u+8|0;p=u+4|0;t=u;c[v>>2]=b;c[s>>2]=e;c[o>>2]=c[v>>2];c[j>>2]=-1;c[n>>2]=-1;c[k>>2]=-1;c[l>>2]=-1;c[(c[s>>2]|0)+20>>2]=0;h[(c[s>>2]|0)+40>>3]=5.0e6;c[g>>2]=0;a:while(1){if((c[g>>2]|0)>=(c[c[s>>2]>>2]|0))break;c[p>>2]=(c[(c[s>>2]|0)+4>>2]|0)+((c[g>>2]|0)*12|0);e=c[p>>2]|0;b:do if(!(d[(c[p>>2]|0)+5>>0]|0)){if((d[e+4>>0]|0)==64){q=5;break a}}else{if((c[e>>2]|0)<0)e=1;else e=(c[c[p>>2]>>2]|0)==((c[(c[o>>2]|0)+24>>2]|0)+1|0);c[f>>2]=e&1;if((c[j>>2]|0)<0?(c[f>>2]|0)!=0?(d[(c[p>>2]|0)+4>>0]|0)==2:0:0){c[(c[s>>2]|0)+20>>2]=1;h[(c[s>>2]|0)+40>>3]=1.0;c[j>>2]=c[g>>2]}if(((d[(c[p>>2]|0)+4>>0]|0)==64?(c[c[p>>2]>>2]|0)>=0:0)?(c[c[p>>2]>>2]|0)<=(c[(c[o>>2]|0)+24>>2]|0):0){c[(c[s>>2]|0)+20>>2]=2+(c[c[p>>2]>>2]|0);h[(c[s>>2]|0)+40>>3]=2.0;c[j>>2]=c[g>>2]}if((d[(c[p>>2]|0)+4>>0]|0)==2?(c[c[p>>2]>>2]|0)==((c[(c[o>>2]|0)+24>>2]|0)+2|0):0)c[n>>2]=c[g>>2];if(c[f>>2]|0)switch(d[(c[p>>2]|0)+4>>0]|0){case 4:case 32:{c[k>>2]=c[g>>2];break b}case 16:case 8:{c[l>>2]=c[g>>2];break b}default:break b}}while(0);c[g>>2]=(c[g>>2]|0)+1}if((q|0)==5){c[(c[s>>2]|0)+20>>2]=0;h[(c[s>>2]|0)+40>>3]=1.e+50;Dp(c[s>>2]|0,0,262144);c[r>>2]=0;v=c[r>>2]|0;i=u;return v|0}if((c[(c[s>>2]|0)+20>>2]|0)==1)Ep(c[s>>2]|0);c[m>>2]=1;if((c[j>>2]|0)>=0){v=c[m>>2]|0;c[m>>2]=v+1;c[(c[(c[s>>2]|0)+16>>2]|0)+(c[j>>2]<<3)>>2]=v;a[(c[(c[s>>2]|0)+16>>2]|0)+(c[j>>2]<<3)+4>>0]=1}if((c[n>>2]|0)>=0){v=(c[s>>2]|0)+20|0;c[v>>2]=c[v>>2]|65536;v=c[m>>2]|0;c[m>>2]=v+1;c[(c[(c[s>>2]|0)+16>>2]|0)+(c[n>>2]<<3)>>2]=v}if((c[k>>2]|0)>=0){v=(c[s>>2]|0)+20|0;c[v>>2]=c[v>>2]|131072;v=c[m>>2]|0;c[m>>2]=v+1;c[(c[(c[s>>2]|0)+16>>2]|0)+(c[k>>2]<<3)>>2]=v}if((c[l>>2]|0)>=0){v=(c[s>>2]|0)+20|0;c[v>>2]=c[v>>2]|262144;v=c[m>>2]|0;c[m>>2]=v+1;c[(c[(c[s>>2]|0)+16>>2]|0)+(c[l>>2]<<3)>>2]=v}do if((c[(c[s>>2]|0)+8>>2]|0)==1){c[t>>2]=c[(c[s>>2]|0)+12>>2];if((c[c[t>>2]>>2]|0)>=0?(c[c[t>>2]>>2]|0)!=((c[(c[o>>2]|0)+24>>2]|0)+1|0):0)break;e=(c[s>>2]|0)+24|0;if(a[(c[t>>2]|0)+4>>0]|0)c[e>>2]=24471;else c[e>>2]=24476;c[(c[s>>2]|0)+32>>2]=1}while(0);c[r>>2]=0;v=c[r>>2]|0;i=u;return v|0}function Mk(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;f=e+8|0;d=e+4|0;b=e;c[f>>2]=a;c[d>>2]=c[f>>2];c[b>>2]=0;while(1){if((c[b>>2]|0)>=40)break;Yd(c[(c[d>>2]|0)+56+(c[b>>2]<<2)>>2]|0)|0;c[b>>2]=(c[b>>2]|0)+1}Kd(c[(c[d>>2]|0)+240>>2]|0);Kd(c[(c[d>>2]|0)+216>>2]|0);Kd(c[(c[d>>2]|0)+220>>2]|0);Kd(c[(c[d>>2]|0)+40>>2]|0);Kd(c[(c[d>>2]|0)+44>>2]|0);Tb[c[(c[c[(c[d>>2]|0)+36>>2]>>2]|0)+8>>2]&255](c[(c[d>>2]|0)+36>>2]|0)|0;Kd(c[d>>2]|0);i=e;return 0}function Nk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+64|0;j=n+32|0;h=n+24|0;l=n+16|0;k=n+8|0;g=n;b=n+56|0;e=n+52|0;f=n+48|0;m=n+44|0;d=n+40|0;c[b>>2]=a;c[e>>2]=c[b>>2];c[f>>2]=0;c[m>>2]=c[(c[e>>2]|0)+16>>2];c[d>>2]=c[(c[e>>2]|0)+12>>2];if(!(c[(c[e>>2]|0)+40>>2]|0)){a=c[d>>2]|0;o=c[(c[e>>2]|0)+20>>2]|0;c[g>>2]=c[m>>2];c[g+4>>2]=o;hl(f,a,24671,g)}o=c[d>>2]|0;g=c[(c[e>>2]|0)+20>>2]|0;c[k>>2]=c[m>>2];c[k+4>>2]=g;hl(f,o,24708,k);o=c[d>>2]|0;k=c[(c[e>>2]|0)+20>>2]|0;c[l>>2]=c[m>>2];c[l+4>>2]=k;hl(f,o,24746,l);o=c[d>>2]|0;l=c[(c[e>>2]|0)+20>>2]|0;c[h>>2]=c[m>>2];c[h+4>>2]=l;hl(f,o,24782,h);o=c[d>>2]|0;l=c[(c[e>>2]|0)+20>>2]|0;c[j>>2]=c[m>>2];c[j+4>>2]=l;hl(f,o,24819,j);if(!(c[f>>2]|0)){o=Mk(c[b>>2]|0)|0;i=n;return o|0}else{o=c[f>>2]|0;i=n;return o|0}return 0}function Ok(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;e=f+12|0;g=f+4|0;d=f;c[f+8>>2]=a;c[g>>2]=b;b=Id(96)|0;c[d>>2]=b;c[c[g>>2]>>2]=b;if(c[d>>2]|0){d=c[d>>2]|0;a=d+96|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(a|0));c[e>>2]=0;g=c[e>>2]|0;i=f;return g|0}else{c[e>>2]=7;g=c[e>>2]|0;i=f;return g|0}return 0}function Pk(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];Yd(c[(c[d>>2]|0)+8>>2]|0)|0;ap(c[(c[d>>2]|0)+12>>2]|0);Cp(c[d>>2]|0);Kd(c[(c[d>>2]|0)+44>>2]|0);tm(c[(c[d>>2]|0)+92>>2]|0);Kd(c[d>>2]|0);i=b;return 0}function Qk(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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,D=0,E=0;E=i;i=i+112|0;B=E+32|0;A=E;t=E+108|0;u=E+104|0;k=E+100|0;n=E+96|0;l=E+88|0;z=E+84|0;D=E+80|0;o=E+76|0;v=E+72|0;w=E+68|0;q=E+64|0;r=E+60|0;x=E+56|0;y=E+52|0;m=E+48|0;p=E+44|0;s=E+40|0;c[u>>2]=e;c[k>>2]=f;c[n>>2]=g;c[E+92>>2]=h;c[l>>2]=j;c[z>>2]=0;c[v>>2]=c[c[u>>2]>>2];c[w>>2]=c[u>>2];c[q>>2]=0;c[r>>2]=0;c[x>>2]=0;c[y>>2]=0;c[o>>2]=c[k>>2]&65535;c[m>>2]=0;if(c[o>>2]|0){e=c[m>>2]|0;c[m>>2]=e+1;c[q>>2]=c[(c[l>>2]|0)+(e<<2)>>2]}if(c[k>>2]&65536){e=c[m>>2]|0;c[m>>2]=e+1;c[r>>2]=c[(c[l>>2]|0)+(e<<2)>>2]}if(c[k>>2]&131072){e=c[m>>2]|0;c[m>>2]=e+1;c[x>>2]=c[(c[l>>2]|0)+(e<<2)>>2]}if(c[k>>2]&262144){e=c[m>>2]|0;c[m>>2]=e+1;c[y>>2]=c[(c[l>>2]|0)+(e<<2)>>2]}Yd(c[(c[w>>2]|0)+8>>2]|0)|0;Kd(c[(c[w>>2]|0)+44>>2]|0);tm(c[(c[w>>2]|0)+92>>2]|0);ap(c[(c[w>>2]|0)+12>>2]|0);k=(c[u>>2]|0)+4|0;l=k+92|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(l|0));e=bp(c[x>>2]|0,0,-2147483648)|0;h=(c[w>>2]|0)+72|0;c[h>>2]=e;c[h+4>>2]=C;h=bp(c[y>>2]|0,-1,2147483647)|0;e=(c[w>>2]|0)+80|0;c[e>>2]=h;c[e+4>>2]=C;if(c[n>>2]|0)a[(c[w>>2]|0)+52>>0]=(a[c[n>>2]>>0]|0)==68;else a[(c[w>>2]|0)+52>>0]=a[(c[v>>2]|0)+231>>0]|0;b[(c[w>>2]|0)+4>>1]=c[o>>2];do if((c[o>>2]|0)!=1&(c[o>>2]|0)!=0){c[p>>2]=(c[o>>2]|0)-2;c[s>>2]=ae(c[q>>2]|0)|0;if((c[s>>2]|0)==0?(fe(c[q>>2]|0)|0)!=5:0){c[t>>2]=7;D=c[t>>2]|0;i=E;return D|0}c[(c[w>>2]|0)+16>>2]=0;if(c[r>>2]|0){r=de(c[r>>2]|0)|0;c[(c[w>>2]|0)+16>>2]=r}c[z>>2]=cp(c[(c[v>>2]|0)+36>>2]|0,c[(c[w>>2]|0)+16>>2]|0,c[(c[v>>2]|0)+28>>2]|0,d[(c[v>>2]|0)+228>>0]|0,c[(c[v>>2]|0)+24>>2]|0,c[p>>2]|0,c[s>>2]|0,-1,(c[w>>2]|0)+12|0,(c[v>>2]|0)+8|0)|0;if(c[z>>2]|0){c[t>>2]=c[z>>2];D=c[t>>2]|0;i=E;return D|0}c[z>>2]=dp(c[w>>2]|0)|0;sm(c[v>>2]|0);if(!(c[z>>2]|0)){c[(c[w>>2]|0)+40>>2]=c[(c[w>>2]|0)+44>>2];s=(c[w>>2]|0)+32|0;c[s>>2]=0;c[s+4>>2]=0;break}c[t>>2]=c[z>>2];D=c[t>>2]|0;i=E;return D|0}while(0);do if(!(c[o>>2]|0)){k=c[(c[v>>2]|0)+216>>2]|0;l=c[w>>2]|0;if((c[x>>2]|0)!=0|(c[y>>2]|0)!=0){r=l+72|0;q=c[r>>2]|0;r=c[r+4>>2]|0;x=(c[w>>2]|0)+80|0;s=c[x>>2]|0;x=c[x+4>>2]|0;B=(d[(c[w>>2]|0)+52>>0]|0)!=0?24471:24476;c[A>>2]=k;y=A+8|0;c[y>>2]=q;c[y+4>>2]=r;y=A+16|0;c[y>>2]=s;c[y+4>>2]=x;c[A+24>>2]=B;c[D>>2]=Od(24480,A)|0}else{A=(d[l+52>>0]|0)!=0?24471:24476;c[B>>2]=k;c[B+4>>2]=A;c[D>>2]=Od(24542,B)|0}if(c[D>>2]|0){c[z>>2]=af(c[(c[v>>2]|0)+12>>2]|0,c[D>>2]|0,-1,(c[w>>2]|0)+8|0,0)|0;Kd(c[D>>2]|0);break}else{c[z>>2]=7;break}}else if((c[o>>2]|0)==1?(c[z>>2]=zn(c[w>>2]|0,(c[w>>2]|0)+8|0)|0,(c[z>>2]|0)==0):0)c[z>>2]=Pe(c[(c[w>>2]|0)+8>>2]|0,1,c[q>>2]|0)|0;while(0);if(c[z>>2]|0){c[t>>2]=c[z>>2];D=c[t>>2]|0;i=E;return D|0}else{c[t>>2]=Rk(c[u>>2]|0)|0;D=c[t>>2]|0;i=E;return D|0}return 0}function Rk(d){d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;g=h+4|0;f=h;c[e>>2]=d;c[f>>2]=c[e>>2];if((b[(c[f>>2]|0)+4>>1]|0)!=1?(b[(c[f>>2]|0)+4>>1]|0)!=0:0){c[g>>2]=$o(c[e>>2]|0)|0;g=c[g>>2]|0;i=h;return g|0}d=100!=(ue(c[(c[f>>2]|0)+8>>2]|0)|0);e=c[f>>2]|0;if(d){a[e+6>>0]=1;c[g>>2]=Zd(c[(c[f>>2]|0)+8>>2]|0)|0;g=c[g>>2]|0;i=h;return g|0}else{d=Ee(c[e+8>>2]|0,0)|0;f=(c[f>>2]|0)+32|0;c[f>>2]=d;c[f+4>>2]=C;c[g>>2]=0;g=c[g>>2]|0;i=h;return g|0}return 0}function Sk(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return d[(c[b>>2]|0)+6>>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,j=0,k=0,l=0,m=0;l=i;i=i+32|0;m=l+24|0;e=l+20|0;f=l+16|0;k=l+12|0;j=l+8|0;h=l+4|0;g=l;c[m>>2]=a;c[e>>2]=b;c[f>>2]=d;c[k>>2]=0;c[j>>2]=c[m>>2];c[h>>2]=c[c[m>>2]>>2];if((c[f>>2]|0)==((c[(c[h>>2]|0)+24>>2]|0)+1|0)){m=(c[j>>2]|0)+32|0;le(c[e>>2]|0,c[m>>2]|0,c[m+4>>2]|0);m=c[k>>2]|0;i=l;return m|0}if((c[f>>2]|0)==(c[(c[h>>2]|0)+24>>2]|0)){ge(c[e>>2]|0,j,4,-1);m=c[k>>2]|0;i=l;return m|0}if((c[f>>2]|0)==((c[(c[h>>2]|0)+24>>2]|0)+2|0)?(c[(c[j>>2]|0)+12>>2]|0)!=0:0){m=c[(c[j>>2]|0)+16>>2]|0;le(c[e>>2]|0,m,((m|0)<0)<<31>>31);m=c[k>>2]|0;i=l;return m|0}c[k>>2]=nn(0,c[j>>2]|0)|0;if(c[k>>2]|0){m=c[k>>2]|0;i=l;return m|0}if((c[f>>2]|0)==((c[(c[h>>2]|0)+24>>2]|0)+2|0)){c[g>>2]=0;if(c[(c[h>>2]|0)+44>>2]|0)c[g>>2]=De(c[(c[j>>2]|0)+8>>2]|0,(c[(c[h>>2]|0)+24>>2]|0)+1|0)|0;ke(c[e>>2]|0,c[g>>2]|0);m=c[k>>2]|0;i=l;return m|0}else{m=ze(c[(c[j>>2]|0)+8>>2]|0)|0;if((m|0)<=((c[f>>2]|0)+1|0)){m=c[k>>2]|0;i=l;return m|0}m=c[e>>2]|0;pe(m,Ge(c[(c[j>>2]|0)+8>>2]|0,(c[f>>2]|0)+1|0)|0);m=c[k>>2]|0;i=l;return m|0}return 0}function Uk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;f=d+4|0;e=d;c[g>>2]=a;c[f>>2]=b;c[e>>2]=c[g>>2];e=(c[e>>2]|0)+32|0;a=c[e+4>>2]|0;b=c[f>>2]|0;c[b>>2]=c[e>>2];c[b+4>>2]=a;i=d;return 0}function Vk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;a=Ao(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;i=f;return a|0}function Wk(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];c[(c[d>>2]|0)+52>>2]=0;a=fl(c[d>>2]|0)|0;i=b;return a|0}function Xk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=i;i=i+32|0;h=g+20|0;e=g+12|0;f=g+8|0;d=g+4|0;b=g;c[h>>2]=a;c[g+16>>2]=64;c[e>>2]=c[h>>2];c[f>>2]=gl(c[e>>2]|0)|0;if(((((c[f>>2]|0)==0?(c[(c[e>>2]|0)+52>>2]|0)>>>0>4:0)?(c[(c[e>>2]|0)+48>>2]|0)!=0:0)?(c[(c[e>>2]|0)+48>>2]|0)!=255:0)?(c[d>>2]=0,c[f>>2]=_n(c[e>>2]|0,d)|0,c[b>>2]=_(c[(c[e>>2]|0)+52>>2]|0,c[d>>2]|0)|0,c[b>>2]=(c[b>>2]|0)+((c[b>>2]|0)/2|0),(c[b>>2]|0)>64):0)c[f>>2]=$n(c[e>>2]|0,c[b>>2]|0,c[(c[e>>2]|0)+48>>2]|0)|0;sm(c[e>>2]|0);i=g;return c[f>>2]|0}function Yk(a){a=a|0;var b=0;b=i;i=i+16|0;c[b>>2]=a;i=b;return 0}function Zk(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];dl(c[d>>2]|0);i=b;return 0}function _k(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,j=0,k=0,l=0,m=0,n=0;m=i;i=i+80|0;j=m+64|0;n=m+60|0;g=m+48|0;k=m+44|0;l=m+8|0;h=m;c[n>>2]=e;e=c[n>>2]|0;c[m+56>>2]=a;c[m+52>>2]=b;c[g>>2]=d;c[k>>2]=e;c[m+40>>2]=f;c[l>>2]=c[509];c[l+4>>2]=c[510];c[l+8>>2]=c[511];c[l+12>>2]=c[512];c[l+16>>2]=c[513];c[l+20>>2]=c[514];c[l+24>>2]=c[515];c[l+28>>2]=c[516];c[h>>2]=0;while(1){if((c[h>>2]|0)>=4){b=6;break}n=(yQ(c[g>>2]|0,c[l+(c[h>>2]<<3)>>2]|0)|0)==0;a=c[h>>2]|0;if(n){b=4;break}c[h>>2]=a+1}if((b|0)==4){c[c[k>>2]>>2]=c[l+(a<<3)+4>>2];c[j>>2]=1;n=c[j>>2]|0;i=m;return n|0}else if((b|0)==6){c[j>>2]=0;n=c[j>>2]|0;i=m;return n|0}return 0}function $k(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+96|0;l=o+64|0;k=o+48|0;n=o+32|0;m=o+16|0;j=o;p=o+92|0;e=o+88|0;g=o+84|0;f=o+80|0;h=o+76|0;c[p>>2]=b;c[e>>2]=d;c[g>>2]=c[p>>2];c[f>>2]=c[(c[g>>2]|0)+12>>2];c[h>>2]=fl(c[g>>2]|0)|0;if(!(c[h>>2]|0))c[h>>2]=gl(c[g>>2]|0)|0;if(!(c[(c[g>>2]|0)+40>>2]|0)){p=c[f>>2]|0;b=c[(c[g>>2]|0)+20>>2]|0;d=c[e>>2]|0;c[j>>2]=c[(c[g>>2]|0)+16>>2];c[j+4>>2]=b;c[j+8>>2]=d;hl(h,p,21478,j)}if(a[(c[g>>2]|0)+230>>0]|0){p=c[f>>2]|0;j=c[(c[g>>2]|0)+20>>2]|0;d=c[e>>2]|0;c[m>>2]=c[(c[g>>2]|0)+16>>2];c[m+4>>2]=j;c[m+8>>2]=d;hl(h,p,21531,m)}if(a[(c[g>>2]|0)+229>>0]|0){p=c[f>>2]|0;m=c[(c[g>>2]|0)+20>>2]|0;d=c[e>>2]|0;c[n>>2]=c[(c[g>>2]|0)+16>>2];c[n+4>>2]=m;c[n+8>>2]=d;hl(h,p,21584,n)}p=c[f>>2]|0;d=c[(c[g>>2]|0)+20>>2]|0;n=c[e>>2]|0;c[k>>2]=c[(c[g>>2]|0)+16>>2];c[k+4>>2]=d;c[k+8>>2]=n;hl(h,p,21631,k);p=c[f>>2]|0;n=c[(c[g>>2]|0)+20>>2]|0;d=c[e>>2]|0;c[l>>2]=c[(c[g>>2]|0)+16>>2];c[l+4>>2]=n;c[l+8>>2]=d;hl(h,p,21685,l);i=o;return c[h>>2]|0}function al(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+8|0;f=g;c[e>>2]=a;c[g+4>>2]=b;c[f>>2]=0;if(d[(c[e>>2]|0)+232>>0]|0){f=c[f>>2]|0;i=g;return f|0}c[f>>2]=Xk(c[e>>2]|0)|0;f=c[f>>2]|0;i=g;return f|0}function bl(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 0}function cl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+8|0;e=d;c[f>>2]=a;c[d+4>>2]=b;c[e>>2]=c[f>>2];dl(c[e>>2]|0);i=d;return 0}function dl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;b=h+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[b>>2]=a;c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[(c[b>>2]|0)+248>>2]|0))break;c[f>>2]=(c[(c[b>>2]|0)+252>>2]|0)+((c[d>>2]|0)*24|0)+4;c[e>>2]=c[(c[f>>2]|0)+8>>2];while(1){if(!(c[e>>2]|0))break;c[g>>2]=c[(c[e>>2]|0)+8>>2];el(c[g>>2]|0);c[e>>2]=c[c[e>>2]>>2]}jk(c[f>>2]|0);c[d>>2]=(c[d>>2]|0)+1}c[(c[b>>2]|0)+260>>2]=0;i=h;return}function el(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Kd(c[d>>2]|0);i=b;return}function fl(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;j=m;e=m+28|0;h=m+24|0;k=m+20|0;l=m+16|0;g=m+12|0;f=m+8|0;c[e>>2]=b;c[h>>2]=0;if((d[(c[e>>2]|0)+229>>0]|0|0)!=2){l=c[h>>2]|0;i=m;return l|0}c[k>>2]=24028;k=c[k>>2]|0;b=c[(c[e>>2]|0)+20>>2]|0;c[j>>2]=c[(c[e>>2]|0)+16>>2];c[j+4>>2]=b;c[l>>2]=Od(k,j)|0;if(!(c[l>>2]|0)){c[h>>2]=7;l=c[h>>2]|0;i=m;return l|0}c[g>>2]=0;c[h>>2]=af(c[(c[e>>2]|0)+12>>2]|0,c[l>>2]|0,-1,g,0)|0;if((c[h>>2]|0)==0?(c[f>>2]=(ue(c[g>>2]|0)|0)==100&1,c[h>>2]=Yd(c[g>>2]|0)|0,(c[h>>2]|0)==0):0)a[(c[e>>2]|0)+229>>0]=c[f>>2];Kd(c[l>>2]|0);l=c[h>>2]|0;i=m;return l|0}function gl(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;h=j+8|0;f=j+4|0;g=j;c[e>>2]=a;c[h>>2]=0;c[f>>2]=0;while(1){if(!(c[h>>2]|0))a=(c[f>>2]|0)<(c[(c[e>>2]|0)+248>>2]|0);else a=0;b=c[e>>2]|0;if(!a)break;b=il(b,c[(c[e>>2]|0)+272>>2]|0,c[f>>2]|0,-1)|0;c[h>>2]=b;c[h>>2]=(c[h>>2]|0)==101?0:b;c[f>>2]=(c[f>>2]|0)+1}dl(b);if(c[h>>2]|0){h=c[h>>2]|0;i=j;return h|0}if(!(d[(c[e>>2]|0)+229>>0]|0)){h=c[h>>2]|0;i=j;return h|0}if((c[(c[e>>2]|0)+48>>2]|0)!=255){h=c[h>>2]|0;i=j;return h|0}if((c[(c[e>>2]|0)+52>>2]|0)>>>0<=0){h=c[h>>2]|0;i=j;return h|0}c[g>>2]=0;c[h>>2]=jl(c[e>>2]|0,22,g,0)|0;if(c[h>>2]|0){h=c[h>>2]|0;i=j;return h|0}Le(c[g>>2]|0,1,2)|0;c[h>>2]=ue(c[g>>2]|0)|0;if((c[h>>2]|0)==100){f=De(c[g>>2]|0,0)|0;c[(c[e>>2]|0)+48>>2]=f;if((c[(c[e>>2]|0)+48>>2]|0)==1)c[(c[e>>2]|0)+48>>2]=8}else if((c[h>>2]|0)==101)c[(c[e>>2]|0)+48>>2]=0;c[h>>2]=Zd(c[g>>2]|0)|0;h=c[h>>2]|0;i=j;return h|0}function hl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+48|0;f=l+32|0;g=l+28|0;h=l+24|0;j=l+8|0;k=l;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;if(c[c[f>>2]>>2]|0){i=l;return}c[j>>2]=e;c[k>>2]=Nd(c[h>>2]|0,j)|0;if(!(c[k>>2]|0)){c[c[f>>2]>>2]=7;i=l;return}else{d=$e(c[g>>2]|0,c[k>>2]|0,0,0,0)|0;c[c[f>>2]>>2]=d;Kd(c[k>>2]|0);i=l;return}}function il(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+128|0;f=s+120|0;g=s+116|0;h=s+112|0;j=s+108|0;r=s+104|0;n=s+100|0;p=s+8|0;q=s+96|0;m=s+80|0;l=s+24|0;k=s+16|0;o=s;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[n>>2]=0;a=p;c[a>>2]=0;c[a+4>>2]=0;c[q>>2]=0;c[k>>2]=0;a=o;c[a>>2]=0;c[a+4>>2]=0;c[r>>2]=kl(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,0,0,1,0,l)|0;a:do if((c[r>>2]|0)==0?(c[l+4>>2]|0)!=0:0){if((c[j>>2]|0)!=-1?(c[r>>2]=ll(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,o)|0,(c[r>>2]|0)!=0):0)break;do if((c[j>>2]|0)==-2)if((c[l+4>>2]|0)==1){c[r>>2]=101;break a}else{b=o;e=c[b+4>>2]|0;a=p;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[k>>2]=1;break}else{e=ml(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,(c[j>>2]|0)+1|0)|0;a=p;c[a>>2]=e;c[a+4>>2]=C;c[r>>2]=nl(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,(c[j>>2]|0)+1|0,n)|0;if((c[j>>2]|0)!=-1){a=p;b=c[a+4>>2]|0;d=o;e=c[d+4>>2]|0;d=(b|0)>(e|0)|((b|0)==(e|0)?(c[a>>2]|0)>>>0>(c[d>>2]|0)>>>0:0)}else d=0;c[k>>2]=d&1}while(0);if(!(c[r>>2]|0)){c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+12>>2]=1;a=m+12|0;c[a>>2]=c[a>>2]|((c[k>>2]|0)!=0?2:0);c[r>>2]=ol(c[f>>2]|0,l,m)|0;while(1){if(c[r>>2]|0)break;c[r>>2]=pl(c[f>>2]|0,l)|0;if((c[r>>2]|0)!=100)break;c[r>>2]=ql(c[f>>2]|0,q,1,c[l+40>>2]|0,c[l+44>>2]|0,c[l+48>>2]|0,c[l+52>>2]|0)|0}if(!(c[r>>2]|0)){if((c[j>>2]|0)!=-1){c[r>>2]=rl(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,c[l>>2]|0,c[l+4>>2]|0)|0;if(!((c[r>>2]|0)==0&(c[q>>2]|0)!=0))break}else if(!(c[q>>2]|0))break;m=p;c[r>>2]=sl(c[f>>2]|0,c[q>>2]|0,c[m>>2]|0,c[m+4>>2]|0,c[n>>2]|0)|0;if(!(c[r>>2]|0)){if((c[j>>2]|0)!=-1?(n=p,k=c[n+4>>2]|0,o,m=c[o+4>>2]|0,!((k|0)<(m|0)|((k|0)==(m|0)?(c[n>>2]|0)>>>0<(c[o>>2]|0)>>>0:0))):0)break;o=p;p=(c[q>>2]|0)+56|0;c[r>>2]=tl(c[f>>2]|0,c[o>>2]|0,c[o+4>>2]|0,c[p>>2]|0,c[p+4>>2]|0)|0}}}}while(0);ul(c[q>>2]|0);vl(l);i=s;return c[r>>2]|0}function jl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+240|0;o=t+24|0;n=t+16|0;g=t;h=t+228|0;j=t+224|0;q=t+220|0;k=t+216|0;f=t+56|0;s=t+48|0;r=t+44|0;p=t+40|0;l=t+36|0;m=t+32|0;c[h>>2]=a;c[j>>2]=b;c[q>>2]=d;c[k>>2]=e;iR(f|0,1876,160)|0;c[s>>2]=0;c[r>>2]=c[(c[h>>2]|0)+56+(c[j>>2]<<2)>>2];do if(!(c[r>>2]|0)){a=c[j>>2]|0;do if((c[j>>2]|0)!=18){e=c[f+(c[j>>2]<<2)>>2]|0;b=c[h>>2]|0;if((a|0)==7){c[n>>2]=c[b+216>>2];c[p>>2]=Od(e,n)|0;break}else{n=c[(c[h>>2]|0)+20>>2]|0;c[o>>2]=c[b+16>>2];c[o+4>>2]=n;c[p>>2]=Od(e,o)|0;break}}else{o=c[f+(a<<2)>>2]|0;f=c[(c[h>>2]|0)+20>>2]|0;n=c[(c[h>>2]|0)+220>>2]|0;c[g>>2]=c[(c[h>>2]|0)+16>>2];c[g+4>>2]=f;c[g+8>>2]=n;c[p>>2]=Od(o,g)|0}while(0);if(c[p>>2]|0){c[s>>2]=af(c[(c[h>>2]|0)+12>>2]|0,c[p>>2]|0,-1,r,0)|0;Kd(c[p>>2]|0);c[(c[h>>2]|0)+56+(c[j>>2]<<2)>>2]=c[r>>2];break}else{c[s>>2]=7;break}}while(0);if(!(c[k>>2]|0)){p=c[r>>2]|0;r=c[q>>2]|0;c[r>>2]=p;s=c[s>>2]|0;i=t;return s|0}c[m>>2]=Re(c[r>>2]|0)|0;c[l>>2]=0;while(1){if(c[s>>2]|0){e=15;break}if((c[l>>2]|0)>=(c[m>>2]|0)){e=15;break}c[s>>2]=Pe(c[r>>2]|0,(c[l>>2]|0)+1|0,c[(c[k>>2]|0)+(c[l>>2]<<2)>>2]|0)|0;c[l>>2]=(c[l>>2]|0)+1}if((e|0)==15){p=c[r>>2]|0;r=c[q>>2]|0;c[r>>2]=p;s=c[s>>2]|0;i=t;return s|0}return 0}function kl(a,b,d,e,f,g,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+48|0;l=u+32|0;m=u+28|0;n=u+24|0;o=u+20|0;p=u+16|0;q=u+12|0;r=u+8|0;s=u+4|0;t=u;c[l>>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]=j;c[t>>2]=k;d=c[t>>2]|0;b=d+56|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(b|0));t=dm(c[l>>2]|0,c[m>>2]|0,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[t>>2]|0)|0;i=u;return t|0}function ll(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;f=n+24|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=jl(c[g>>2]|0,15,l,0)|0;if(c[m>>2]|0){c[f>>2]=c[m>>2];m=c[f>>2]|0;i=n;return m|0}m=c[l>>2]|0;e=ml(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,0)|0;Me(m,1,e,C)|0;e=c[l>>2]|0;m=ml(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,1023)|0;Me(e,2,m,C)|0;if(100==(ue(c[l>>2]|0)|0)){e=Ee(c[l>>2]|0,0)|0;m=c[k>>2]|0;c[m>>2]=e;c[m+4>>2]=C}c[f>>2]=Zd(c[l>>2]|0)|0;m=c[f>>2]|0;i=n;return m|0}function ml(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;k=f+20|0;l=f+16|0;j=f+12|0;g=f+8|0;h=f;c[k>>2]=a;c[l>>2]=b;c[j>>2]=d;c[g>>2]=e;a=c[l>>2]|0;e=c[(c[k>>2]|0)+248>>2]|0;e=rR(a|0,((a|0)<0)<<31>>31|0,e|0,((e|0)<0)<<31>>31|0)|0;a=c[j>>2]|0;a=gR(e|0,C|0,a|0,((a|0)<0)<<31>>31|0)|0;a=rR(a|0,C|0,1024,0)|0;e=h;c[e>>2]=a;c[e+4>>2]=C;e=h;a=c[g>>2]|0;a=gR(c[e>>2]|0,c[e+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;i=f;return a|0}function nl(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;g=p+28|0;h=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;o=p+8|0;n=p+4|0;m=p;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=0;c[o>>2]=jl(c[g>>2]|0,8,n,0)|0;if(!(c[o>>2]|0)){a=c[n>>2]|0;f=ml(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;Me(a,1,f,C)|0;if(100==(ue(c[n>>2]|0)|0))c[m>>2]=De(c[n>>2]|0,0)|0;c[o>>2]=Zd(c[n>>2]|0)|0}if(c[o>>2]|0){o=c[o>>2]|0;i=p;return o|0}if((c[m>>2]|0)>=16){c[o>>2]=il(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;c[c[l>>2]>>2]=0;o=c[o>>2]|0;i=p;return o|0}else{c[c[l>>2]>>2]=c[m>>2];o=c[o>>2]|0;i=p;return o|0}return 0}function ol(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;c[(c[g>>2]|0)+12>>2]=c[f>>2];d=bm(c[h>>2]|0,c[g>>2]|0,c[c[f>>2]>>2]|0,c[(c[f>>2]|0)+4>>2]|0)|0;i=e;return d|0}function pl(b,e){b=b|0;e=e|0;var f=0,g=0,h=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,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;K=i;i=i+128|0;f=K+120|0;g=K+116|0;h=K+112|0;H=K+108|0;s=K+104|0;u=K+100|0;q=K+96|0;t=K+92|0;v=K+88|0;r=K+84|0;l=K+80|0;B=K+76|0;E=K+72|0;I=K+68|0;A=K+64|0;m=K+60|0;G=K+56|0;y=K+52|0;p=K+16|0;w=K+48|0;F=K+44|0;z=K+40|0;x=K+36|0;o=K+8|0;n=K;k=K+32|0;j=K+28|0;D=K+24|0;c[g>>2]=b;c[h>>2]=e;c[H>>2]=0;c[s>>2]=c[(c[(c[h>>2]|0)+12>>2]|0)+12>>2]&2;c[u>>2]=c[(c[(c[h>>2]|0)+12>>2]|0)+12>>2]&1;c[q>>2]=c[(c[(c[h>>2]|0)+12>>2]|0)+12>>2]&4;c[t>>2]=c[(c[(c[h>>2]|0)+12>>2]|0)+12>>2]&8;c[v>>2]=c[(c[(c[h>>2]|0)+12>>2]|0)+12>>2]&16;c[r>>2]=c[(c[(c[h>>2]|0)+12>>2]|0)+12>>2]&32;c[l>>2]=c[c[h>>2]>>2];c[B>>2]=c[(c[h>>2]|0)+4>>2];c[E>>2]=c[(c[h>>2]|0)+12>>2];c[I>>2]=(d[(c[g>>2]|0)+231>>0]|0)!=0?182:183;if(!(c[(c[h>>2]|0)+4>>2]|0)){c[f>>2]=0;J=c[f>>2]|0;i=K;return J|0}a:while(1){c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[(c[h>>2]|0)+8>>2]|0))break;c[G>>2]=c[(c[l>>2]|0)+(c[m>>2]<<2)>>2];if(a[(c[G>>2]|0)+4>>0]|0)Kl(c[G>>2]|0);else c[H>>2]=Ll(c[g>>2]|0,c[G>>2]|0,0)|0;if(c[H>>2]|0){J=9;break a}c[m>>2]=(c[m>>2]|0)+1}Nl(c[l>>2]|0,c[B>>2]|0,c[(c[h>>2]|0)+8>>2]|0,184);c[(c[h>>2]|0)+8>>2]=0;if(!(c[(c[c[l>>2]>>2]|0)+40>>2]|0)){J=61;break}c[(c[h>>2]|0)+44>>2]=c[(c[c[l>>2]>>2]|0)+60>>2];c[(c[h>>2]|0)+40>>2]=c[(c[c[l>>2]>>2]|0)+64>>2];if(!((c[v>>2]|0)!=0?1:(c[c[E>>2]>>2]|0)==0)){if((c[(c[h>>2]|0)+44>>2]|0)<(c[(c[E>>2]|0)+4>>2]|0)){J=61;break}if((c[t>>2]|0)==0?(c[(c[h>>2]|0)+44>>2]|0)>(c[(c[E>>2]|0)+4>>2]|0):0){J=61;break}if(vQ(c[(c[h>>2]|0)+40>>2]|0,c[c[E>>2]>>2]|0,c[(c[E>>2]|0)+4>>2]|0)|0){J=61;break}}c[A>>2]=1;while(1){if(((c[A>>2]|0)<(c[B>>2]|0)?(c[(c[(c[l>>2]|0)+(c[A>>2]<<2)>>2]|0)+40>>2]|0)!=0:0)?(c[(c[(c[l>>2]|0)+(c[A>>2]<<2)>>2]|0)+60>>2]|0)==(c[(c[h>>2]|0)+44>>2]|0):0)e=0==(vQ(c[(c[h>>2]|0)+40>>2]|0,c[(c[(c[l>>2]|0)+(c[A>>2]<<2)>>2]|0)+64>>2]|0,c[(c[h>>2]|0)+44>>2]|0)|0);else e=0;b=c[A>>2]|0;if(!e)break;c[A>>2]=b+1}do if(!((b|0)!=1|(c[s>>2]|0)!=0|(c[r>>2]|0)!=0)){if((d[(c[g>>2]|0)+231>>0]|0)!=0?((c[(c[c[l>>2]>>2]|0)+56>>2]|0)!=0|0)!=0:0){J=32;break}c[(c[h>>2]|0)+52>>2]=c[(c[c[l>>2]>>2]|0)+76>>2];if(c[(c[c[l>>2]>>2]|0)+56>>2]|0){c[H>>2]=Ol(c[h>>2]|0,c[(c[c[l>>2]>>2]|0)+72>>2]|0,c[(c[h>>2]|0)+52>>2]|0)|0;c[(c[h>>2]|0)+48>>2]=c[(c[h>>2]|0)+16>>2]}else c[(c[h>>2]|0)+48>>2]=c[(c[c[l>>2]>>2]|0)+72>>2];if(!(c[H>>2]|0))c[H>>2]=100}else J=32;while(0);if((J|0)==32){J=0;c[y>>2]=0;e=p;c[e>>2]=0;c[e+4>>2]=0;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[A>>2]|0))break;Pl(c[g>>2]|0,c[(c[l>>2]|0)+(c[m>>2]<<2)>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+1}Nl(c[l>>2]|0,c[A>>2]|0,c[A>>2]|0,c[I>>2]|0);while(1){if(!(c[(c[c[l>>2]>>2]|0)+80>>2]|0))break;c[F>>2]=0;c[z>>2]=0;L=(c[c[l>>2]>>2]|0)+88|0;b=c[L+4>>2]|0;e=o;c[e>>2]=c[L>>2];c[e+4>>2]=b;Ql(c[g>>2]|0,c[c[l>>2]>>2]|0,F,z)|0;c[w>>2]=1;while(1){if((c[w>>2]|0)>=(c[A>>2]|0))break;if(!(c[(c[(c[l>>2]|0)+(c[w>>2]<<2)>>2]|0)+80>>2]|0))break;e=(c[(c[l>>2]|0)+(c[w>>2]<<2)>>2]|0)+88|0;L=o;if(!((c[e>>2]|0)==(c[L>>2]|0)?(c[e+4>>2]|0)==(c[L+4>>2]|0):0))break;Ql(c[g>>2]|0,c[(c[l>>2]|0)+(c[w>>2]<<2)>>2]|0,0,0)|0;c[w>>2]=(c[w>>2]|0)+1}if(c[q>>2]|0)Rl(c[(c[E>>2]|0)+8>>2]|0,0,F,z);do if((c[s>>2]|0)==0|(c[z>>2]|0)>0){if((c[y>>2]|0)>0?(d[(c[g>>2]|0)+231>>0]|0)!=0:0){L=p;e=o;e=fR(c[L>>2]|0,c[L+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;L=n;c[L>>2]=e;c[L+4>>2]=C}else{L=o;e=p;e=fR(c[L>>2]|0,c[L+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;L=n;c[L>>2]=e;c[L+4>>2]=C}L=n;L=Dl(c[L>>2]|0,c[L+4>>2]|0)|0;c[x>>2]=L+((c[u>>2]|0)!=0?(c[z>>2]|0)+1|0:0);if(((c[y>>2]|0)+(c[x>>2]|0)|0)>(c[(c[h>>2]|0)+20>>2]|0)){c[(c[h>>2]|0)+20>>2]=(c[y>>2]|0)+(c[x>>2]|0)<<1;c[k>>2]=Ld(c[(c[h>>2]|0)+16>>2]|0,c[(c[h>>2]|0)+20>>2]|0)|0;if(!(c[k>>2]|0)){J=50;break a}c[(c[h>>2]|0)+16>>2]=c[k>>2]}b=(c[(c[h>>2]|0)+16>>2]|0)+(c[y>>2]|0)|0;if(c[r>>2]|0){c[j>>2]=b;L=n;c[D>>2]=Sl(c[L>>2]|0,c[L+4>>2]|0,c[F>>2]|0,c[z>>2]|0,c[j>>2]|0)|0;if(!(c[D>>2]|0))break;b=o;e=c[b+4>>2]|0;L=p;c[L>>2]=c[b>>2];c[L+4>>2]=e;c[y>>2]=(c[y>>2]|0)+(c[D>>2]|0);break}else{e=n;b=El(b,c[e>>2]|0,c[e+4>>2]|0)|0;c[y>>2]=(c[y>>2]|0)+b;b=o;e=c[b+4>>2]|0;L=p;c[L>>2]=c[b>>2];c[L+4>>2]=e;if(!(c[u>>2]|0))break;iR((c[(c[h>>2]|0)+16>>2]|0)+(c[y>>2]|0)|0,c[F>>2]|0,c[z>>2]|0)|0;c[y>>2]=(c[y>>2]|0)+(c[z>>2]|0);L=c[y>>2]|0;c[y>>2]=L+1;a[(c[(c[h>>2]|0)+16>>2]|0)+L>>0]=0;break}}while(0);Nl(c[l>>2]|0,c[A>>2]|0,c[w>>2]|0,c[I>>2]|0)}if((c[y>>2]|0)>0){c[(c[h>>2]|0)+48>>2]=c[(c[h>>2]|0)+16>>2];c[(c[h>>2]|0)+52>>2]=c[y>>2];c[H>>2]=100}}c[(c[h>>2]|0)+8>>2]=c[A>>2];if(c[H>>2]|0){J=61;break}}if((J|0)==9){c[f>>2]=c[H>>2];L=c[f>>2]|0;i=K;return L|0}else if((J|0)==50){c[f>>2]=7;L=c[f>>2]|0;i=K;return L|0}else if((J|0)==61){c[f>>2]=c[H>>2];L=c[f>>2]|0;i=K;return L|0}return 0}function ql(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 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;B=i;i=i+80|0;j=B+68|0;k=B+64|0;l=B+60|0;m=B+56|0;n=B+52|0;o=B+48|0;p=B+44|0;q=B+40|0;t=B+36|0;v=B+32|0;u=B+28|0;s=B+24|0;x=B+20|0;y=B+16|0;w=B+12|0;z=B+8|0;r=B+4|0;A=B;c[k>>2]=a;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[x>>2]=c[c[l>>2]>>2];if(!(c[x>>2]|0)){c[x>>2]=Id(64)|0;if(!(c[x>>2]|0)){c[j>>2]=7;A=c[j>>2]|0;i=B;return A|0}g=c[x>>2]|0;d=g+64|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(d|0));c[c[l>>2]>>2]=c[x>>2];l=Id(c[(c[k>>2]|0)+224>>2]|0)|0;c[(c[x>>2]|0)+48>>2]=l;if(!(c[(c[x>>2]|0)+48>>2]|0)){ -c[j>>2]=7;A=c[j>>2]|0;i=B;return A|0}c[(c[x>>2]|0)+40>>2]=c[(c[k>>2]|0)+224>>2];c[y>>2]=jl(c[k>>2]|0,10,w,0)|0;if(c[y>>2]|0){c[j>>2]=c[y>>2];A=c[j>>2]|0;i=B;return A|0}if(100==(ue(c[w>>2]|0)|0)){e=Ee(c[w>>2]|0,0)|0;b=(c[x>>2]|0)+16|0;c[b>>2]=e;c[b+4>>2]=C;b=(c[x>>2]|0)+16|0;e=c[b+4>>2]|0;l=(c[x>>2]|0)+8|0;c[l>>2]=c[b>>2];c[l+4>>2]=e}c[y>>2]=Zd(c[w>>2]|0)|0;if(c[y>>2]|0){c[j>>2]=c[y>>2];A=c[j>>2]|0;i=B;return A|0}}c[s>>2]=c[(c[x>>2]|0)+44>>2];c[t>>2]=Gl(c[(c[x>>2]|0)+24>>2]|0,c[(c[x>>2]|0)+28>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;c[v>>2]=(c[o>>2]|0)-(c[t>>2]|0);y=c[t>>2]|0;y=Dl(y,((y|0)<0)<<31>>31)|0;w=c[v>>2]|0;w=y+(Dl(w,((w|0)<0)<<31>>31)|0)|0;w=w+(c[v>>2]|0)|0;y=c[q>>2]|0;y=w+(Dl(y,((y|0)<0)<<31>>31)|0)|0;c[u>>2]=y+(c[q>>2]|0);do if((c[s>>2]|0)>0?((c[s>>2]|0)+(c[u>>2]|0)|0)>(c[(c[k>>2]|0)+224>>2]|0):0){l=c[k>>2]|0;e=(c[x>>2]|0)+16|0;y=e;w=c[y>>2]|0;y=c[y+4>>2]|0;b=gR(w|0,y|0,1,0)|0;c[e>>2]=b;c[e+4>>2]=C;c[z>>2]=zl(l,w,y,c[(c[x>>2]|0)+48>>2]|0,c[s>>2]|0)|0;if(c[z>>2]|0){c[j>>2]=c[z>>2];A=c[j>>2]|0;i=B;return A|0}y=(c[k>>2]|0)+52|0;c[y>>2]=(c[y>>2]|0)+1;c[z>>2]=Hl(c[k>>2]|0,c[x>>2]|0,c[m>>2]|0,c[n>>2]|0,(c[t>>2]|0)+1|0)|0;if(!(c[z>>2]|0)){c[s>>2]=0;c[(c[x>>2]|0)+28>>2]=0;c[t>>2]=0;c[v>>2]=c[o>>2];y=c[o>>2]|0;y=1+(Dl(y,((y|0)<0)<<31>>31)|0)|0;y=y+(c[o>>2]|0)|0;z=c[q>>2]|0;z=y+(Dl(z,((z|0)<0)<<31>>31)|0)|0;c[u>>2]=z+(c[q>>2]|0);break}c[j>>2]=c[z>>2];A=c[j>>2]|0;i=B;return A|0}while(0);y=c[u>>2]|0;z=(c[x>>2]|0)+56|0;w=z;y=gR(c[w>>2]|0,c[w+4>>2]|0,y|0,((y|0)<0)<<31>>31|0)|0;c[z>>2]=y;c[z+4>>2]=C;do if((c[u>>2]|0)>(c[(c[x>>2]|0)+40>>2]|0)){c[r>>2]=Ld(c[(c[x>>2]|0)+48>>2]|0,c[u>>2]|0)|0;if(c[r>>2]|0){c[(c[x>>2]|0)+48>>2]=c[r>>2];c[(c[x>>2]|0)+40>>2]=c[u>>2];break}c[j>>2]=7;A=c[j>>2]|0;i=B;return A|0}while(0);z=c[t>>2]|0;z=El((c[(c[x>>2]|0)+48>>2]|0)+(c[s>>2]|0)|0,z,((z|0)<0)<<31>>31)|0;c[s>>2]=(c[s>>2]|0)+z;z=c[v>>2]|0;z=El((c[(c[x>>2]|0)+48>>2]|0)+(c[s>>2]|0)|0,z,((z|0)<0)<<31>>31)|0;c[s>>2]=(c[s>>2]|0)+z;iR((c[(c[x>>2]|0)+48>>2]|0)+(c[s>>2]|0)|0,(c[n>>2]|0)+(c[t>>2]|0)|0,c[v>>2]|0)|0;c[s>>2]=(c[s>>2]|0)+(c[v>>2]|0);z=c[q>>2]|0;z=El((c[(c[x>>2]|0)+48>>2]|0)+(c[s>>2]|0)|0,z,((z|0)<0)<<31>>31)|0;c[s>>2]=(c[s>>2]|0)+z;iR((c[(c[x>>2]|0)+48>>2]|0)+(c[s>>2]|0)|0,c[p>>2]|0,c[q>>2]|0)|0;c[(c[x>>2]|0)+44>>2]=(c[s>>2]|0)+(c[q>>2]|0);if(c[m>>2]|0){do if((c[o>>2]|0)>(c[(c[x>>2]|0)+32>>2]|0)){c[A>>2]=Ld(c[(c[x>>2]|0)+36>>2]|0,c[o>>2]<<1)|0;if(c[A>>2]|0){c[(c[x>>2]|0)+32>>2]=c[o>>2]<<1;c[(c[x>>2]|0)+36>>2]=c[A>>2];c[(c[x>>2]|0)+24>>2]=c[A>>2];break}c[j>>2]=7;A=c[j>>2]|0;i=B;return A|0}while(0);iR(c[(c[x>>2]|0)+24>>2]|0,c[n>>2]|0,c[o>>2]|0)|0}else c[(c[x>>2]|0)+24>>2]=c[n>>2];c[(c[x>>2]|0)+28>>2]=c[o>>2];c[j>>2]=0;A=c[j>>2]|0;i=B;return A|0}function rl(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;l=s+36|0;m=s+32|0;n=s+28|0;o=s+24|0;p=s+20|0;h=s+16|0;j=s+12|0;r=s+8|0;k=s+4|0;q=s;c[m>>2]=a;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[h>>2]=f;c[j>>2]=g;c[r>>2]=0;c[q>>2]=0;c[k>>2]=0;while(1){if(c[r>>2]|0)break;if((c[k>>2]|0)>=(c[j>>2]|0))break;c[r>>2]=Fl(c[m>>2]|0,c[(c[h>>2]|0)+(c[k>>2]<<2)>>2]|0)|0;c[k>>2]=(c[k>>2]|0)+1}if(c[r>>2]|0){c[l>>2]=c[r>>2];r=c[l>>2]|0;i=s;return r|0}h=c[m>>2]|0;if((c[p>>2]|0)==-2){c[r>>2]=jl(h,26,q,0)|0;if(!(c[r>>2]|0)){p=c[q>>2]|0;a=ml(c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,0)|0;Me(p,1,a,C)|0;a=c[q>>2]|0;p=ml(c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,1023)|0;Me(a,2,p,C)|0}}else{c[r>>2]=jl(h,16,q,0)|0;if(!(c[r>>2]|0)){a=c[q>>2]|0;p=ml(c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;Me(a,1,p,C)|0}}if(!(c[r>>2]|0)){ue(c[q>>2]|0)|0;c[r>>2]=Zd(c[q>>2]|0)|0}c[l>>2]=c[r>>2];r=c[l>>2]|0;i=s;return r|0}function sl(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;g=q+44|0;h=q+40|0;j=q+16|0;k=q+36|0;o=q+32|0;l=q+8|0;m=q;p=q+28|0;n=q+24|0;c[g>>2]=a;c[h>>2]=b;b=j;c[b>>2]=d;c[b+4>>2]=e;c[k>>2]=f;if(!(c[c[h>>2]>>2]|0)){b=j;p=(c[h>>2]|0)+56|0;c[o>>2]=Bl(c[g>>2]|0,c[b>>2]|0,c[b+4>>2]|0,c[k>>2]|0,0,0,0,0,0,0,c[p>>2]|0,c[p+4>>2]|0,c[(c[h>>2]|0)+48>>2]|0,c[(c[h>>2]|0)+44>>2]|0)|0;p=c[g>>2]|0;p=p+52|0;b=c[p>>2]|0;b=b+1|0;c[p>>2]=b;p=c[o>>2]|0;i=q;return p|0}b=l;c[b>>2]=0;c[b+4>>2]=0;c[p>>2]=0;c[n>>2]=0;b=(c[h>>2]|0)+16|0;e=c[b+4>>2]|0;f=m;c[f>>2]=c[b>>2];c[f+4>>2]=e;f=c[g>>2]|0;e=(c[h>>2]|0)+16|0;b=e;a=c[b>>2]|0;b=c[b+4>>2]|0;d=gR(a|0,b|0,1,0)|0;c[e>>2]=d;c[e+4>>2]=C;c[o>>2]=zl(f,a,b,c[(c[h>>2]|0)+48>>2]|0,c[(c[h>>2]|0)+44>>2]|0)|0;if(!(c[o>>2]|0)){a=(c[h>>2]|0)+8|0;b=(c[h>>2]|0)+16|0;c[o>>2]=Al(c[g>>2]|0,c[c[h>>2]>>2]|0,1,c[a>>2]|0,c[a+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0,l,p,n)|0}if(c[o>>2]|0){p=c[g>>2]|0;p=p+52|0;b=c[p>>2]|0;b=b+1|0;c[p>>2]=b;p=c[o>>2]|0;i=q;return p|0}f=(c[h>>2]|0)+8|0;a=l;b=(c[h>>2]|0)+56|0;c[o>>2]=Bl(c[g>>2]|0,c[j>>2]|0,c[j+4>>2]|0,c[k>>2]|0,c[f>>2]|0,c[f+4>>2]|0,c[m>>2]|0,c[m+4>>2]|0,c[a>>2]|0,c[a+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0,c[p>>2]|0,c[n>>2]|0)|0;p=c[g>>2]|0;p=p+52|0;b=c[p>>2]|0;b=b+1|0;c[p>>2]=b;p=c[o>>2]|0;i=q;return p|0}function tl(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,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;v=i;i=i+80|0;g=v+72|0;h=v+40|0;j=v+32|0;t=v+68|0;q=v+64|0;k=v+60|0;n=v+24|0;o=v+16|0;p=v+8|0;l=v;m=v+56|0;r=v+52|0;s=v+48|0;c[g>>2]=a;a=h;c[a>>2]=b;c[a+4>>2]=d;a=j;c[a>>2]=e;c[a+4>>2]=f;c[t>>2]=0;c[t>>2]=jl(c[g>>2]|0,37,q,0)|0;if(c[t>>2]|0){u=c[t>>2]|0;i=v;return u|0}c[k>>2]=0;f=h;f=pR(c[f>>2]|0,c[f+4>>2]|0,1024,0)|0;f=gR(f|0,C|0,1,0)|0;f=rR(f|0,C|0,1024,0)|0;f=fR(f|0,C|0,1,0)|0;a=n;c[a>>2]=f;c[a+4>>2]=C;a=j;a=rR(c[a>>2]|0,c[a+4>>2]|0,3,0)|0;a=pR(a|0,C|0,2,0)|0;j=o;c[j>>2]=a;c[j+4>>2]=C;j=c[q>>2]|0;a=h;a=gR(c[a>>2]|0,c[a+4>>2]|0,1,0)|0;Me(j,1,a,C)|0;a=n;Me(c[q>>2]|0,2,c[a>>2]|0,c[a+4>>2]|0)|0;while(1){if(100!=(ue(c[q>>2]|0)|0))break;a=p;c[a>>2]=0;c[a+4>>2]=0;yl(c[q>>2]|0,2,l,p);a=p;n=c[a+4>>2]|0;if((n|0)<0|(n|0)==0&(c[a>>2]|0)>>>0<=0){u=6;break}n=p;f=c[n+4>>2]|0;a=o;j=c[a+4>>2]|0;if((f|0)>(j|0)|((f|0)==(j|0)?(c[n>>2]|0)>>>0>(c[a>>2]|0)>>>0:0)){u=6;break}c[k>>2]=1}if((u|0)==6)c[k>>2]=0;c[t>>2]=Zd(c[q>>2]|0)|0;if(!(c[k>>2]|0)){u=c[t>>2]|0;i=v;return u|0}c[m>>2]=0;c[r>>2]=0;c[s>>2]=0;if(!(c[t>>2]|0))c[t>>2]=jl(c[g>>2]|0,38,r,0)|0;if(!(c[t>>2]|0))c[t>>2]=jl(c[g>>2]|0,39,s,0)|0;a:do if(!(c[t>>2]|0)){u=h;Me(c[q>>2]|0,1,c[u>>2]|0,c[u+4>>2]|0)|0;do{if(100!=(ue(c[q>>2]|0)|0))break a;a=c[r>>2]|0;u=c[m>>2]|0;c[m>>2]=u+1;Le(a,1,u)|0;u=c[r>>2]|0;Le(u,2,De(c[q>>2]|0,0)|0)|0;u=c[r>>2]|0;Le(u,3,De(c[q>>2]|0,1)|0)|0;ue(c[r>>2]|0)|0;c[t>>2]=Zd(c[r>>2]|0)|0}while((c[t>>2]|0)==0);Zd(c[q>>2]|0)|0}while(0);if(!(c[t>>2]|0))c[t>>2]=Zd(c[q>>2]|0)|0;if(c[t>>2]|0){u=c[t>>2]|0;i=v;return u|0}u=h;Me(c[s>>2]|0,1,c[u>>2]|0,c[u+4>>2]|0)|0;ue(c[s>>2]|0)|0;c[t>>2]=Zd(c[s>>2]|0)|0;u=c[t>>2]|0;i=v;return u|0}function ul(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[b>>2]|0)){i=d;return}Kd(c[(c[b>>2]|0)+48>>2]|0);Kd(c[(c[b>>2]|0)+36>>2]|0);xl(c[c[b>>2]>>2]|0);Kd(c[b>>2]|0);i=d;return}function vl(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(c[b>>2]|0)){i=e;return}c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[(c[b>>2]|0)+4>>2]|0))break;wl(c[(c[c[b>>2]>>2]|0)+(c[d>>2]<<2)>>2]|0);c[d>>2]=(c[d>>2]|0)+1}Kd(c[c[b>>2]>>2]|0);Kd(c[(c[b>>2]|0)+16>>2]|0);c[(c[b>>2]|0)+4>>2]=0;c[c[b>>2]>>2]=0;c[(c[b>>2]|0)+16>>2]=0;i=e;return}function wl(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;if(!(c[b>>2]|0)){a=c[b>>2]|0;Kd(a);i=e;return}if(!(c[(c[b>>2]|0)+56>>2]|0))Kd(c[(c[b>>2]|0)+64>>2]|0);if(!(d[(c[b>>2]|0)+5>>0]|0))Kd(c[(c[b>>2]|0)+40>>2]|0);Ve(c[(c[b>>2]|0)+52>>2]|0)|0;a=c[b>>2]|0;Kd(a);i=e;return}function xl(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;if(!(c[b>>2]|0)){i=f;return}c[d>>2]=c[(c[b>>2]|0)+8>>2];xl(c[c[d>>2]>>2]|0);while(1){if(!(c[d>>2]|0))break;c[e>>2]=c[(c[d>>2]|0)+4>>2];if((c[(c[d>>2]|0)+36>>2]|0)!=((c[d>>2]|0)+40|0))Kd(c[(c[d>>2]|0)+36>>2]|0);Kd(c[(c[d>>2]|0)+28>>2]|0);Kd(c[d>>2]|0);c[d>>2]=c[e>>2]}i=f;return}function yl(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+48|0;p=n+32|0;o=n+28|0;g=n+24|0;h=n+20|0;m=n+16|0;j=n+12|0;k=n+8|0;l=n;c[p>>2]=a;c[o>>2]=b;c[g>>2]=e;c[h>>2]=f;c[m>>2]=Fe(c[p>>2]|0,c[o>>2]|0)|0;if(!(c[m>>2]|0)){i=n;return}c[k>>2]=1;p=l;c[p>>2]=0;c[p+4>>2]=0;c[j>>2]=0;while(1){if((d[(c[m>>2]|0)+(c[j>>2]|0)>>0]|0|0)>=48)b=(d[(c[m>>2]|0)+(c[j>>2]|0)>>0]|0|0)<=57;else b=0;e=l;a=c[e>>2]|0;e=c[e+4>>2]|0;if(!b)break;p=rR(a|0,e|0,10,0)|0;o=(d[(c[m>>2]|0)+(c[j>>2]|0)>>0]|0)-48|0;o=gR(p|0,C|0,o|0,((o|0)<0)<<31>>31|0)|0;p=l;c[p>>2]=o;c[p+4>>2]=C;c[j>>2]=(c[j>>2]|0)+1}p=c[g>>2]|0;c[p>>2]=a;c[p+4>>2]=e;while(1){if((d[(c[m>>2]|0)+(c[j>>2]|0)>>0]|0|0)!=32)break;c[j>>2]=(c[j>>2]|0)+1}p=l;c[p>>2]=0;c[p+4>>2]=0;if((d[(c[m>>2]|0)+(c[j>>2]|0)>>0]|0|0)==45){c[j>>2]=(c[j>>2]|0)+1;c[k>>2]=-1}while(1){if((d[(c[m>>2]|0)+(c[j>>2]|0)>>0]|0|0)>=48)b=(d[(c[m>>2]|0)+(c[j>>2]|0)>>0]|0|0)<=57;else b=0;e=l;a=c[e>>2]|0;e=c[e+4>>2]|0;if(!b)break;p=rR(a|0,e|0,10,0)|0;o=(d[(c[m>>2]|0)+(c[j>>2]|0)>>0]|0)-48|0;o=gR(p|0,C|0,o|0,((o|0)<0)<<31>>31|0)|0;p=l;c[p>>2]=o;c[p+4>>2]=C;c[j>>2]=(c[j>>2]|0)+1}o=c[k>>2]|0;o=rR(a|0,e|0,o|0,((o|0)<0)<<31>>31|0)|0;p=c[h>>2]|0;c[p>>2]=o;c[p+4>>2]=C;i=n;return}function zl(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,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;n=m+24|0;g=m;h=m+20|0;j=m+16|0;k=m+12|0;l=m+8|0;c[n>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;c[h>>2]=e;c[j>>2]=f;c[l>>2]=jl(c[n>>2]|0,9,k,0)|0;if(c[l>>2]|0){n=c[l>>2]|0;i=m;return n|0}n=g;Me(c[k>>2]|0,1,c[n>>2]|0,c[n+4>>2]|0)|0;Je(c[k>>2]|0,2,c[h>>2]|0,c[j>>2]|0,0)|0;ue(c[k>>2]|0)|0;c[l>>2]=Zd(c[k>>2]|0)|0;n=c[l>>2]|0;i=m;return n|0}function Al(a,b,d,e,f,g,h,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;B=i;i=i+80|0;o=B+72|0;p=B+68|0;q=B+64|0;r=B+24|0;s=B+16|0;t=B+60|0;m=B+56|0;n=B+52|0;A=B+48|0;w=B+44|0;z=B+40|0;u=B+8|0;v=B;x=B+36|0;y=B+32|0;c[o>>2]=a;c[p>>2]=b;c[q>>2]=d;b=r;c[b>>2]=e;c[b+4>>2]=f;b=s;c[b>>2]=g;c[b+4>>2]=h;c[t>>2]=j;c[m>>2]=k;c[n>>2]=l;c[A>>2]=0;if(!(c[c[p>>2]>>2]|0)){j=r;c[w>>2]=Cl(c[p>>2]|0,c[q>>2]|0,c[j>>2]|0,c[j+4>>2]|0)|0;j=s;j=fR(c[j>>2]|0,c[j+4>>2]|0,1,0)|0;l=c[t>>2]|0;c[l>>2]=j;c[l+4>>2]=C;c[c[n>>2]>>2]=(c[(c[p>>2]|0)+32>>2]|0)-(c[w>>2]|0);c[c[m>>2]>>2]=(c[(c[p>>2]|0)+36>>2]|0)+(c[w>>2]|0);A=c[A>>2]|0;i=B;return A|0}l=s;j=c[l+4>>2]|0;k=u;c[k>>2]=c[l>>2];c[k+4>>2]=j;k=r;j=c[k+4>>2]|0;l=v;c[l>>2]=c[k>>2];c[l+4>>2]=j;c[z>>2]=c[(c[p>>2]|0)+8>>2];while(1){if(!((c[z>>2]|0)!=0?(c[A>>2]|0)==0:0))break;l=v;c[x>>2]=Cl(c[z>>2]|0,c[q>>2]|0,c[l>>2]|0,c[l+4>>2]|0)|0;c[y>>2]=(c[(c[z>>2]|0)+32>>2]|0)-(c[x>>2]|0);l=u;c[A>>2]=zl(c[o>>2]|0,c[l>>2]|0,c[l+4>>2]|0,(c[(c[z>>2]|0)+36>>2]|0)+(c[x>>2]|0)|0,c[y>>2]|0)|0;l=u;l=gR(c[l>>2]|0,c[l+4>>2]|0,1,0)|0;j=u;c[j>>2]=l;c[j+4>>2]=C;j=(c[(c[z>>2]|0)+12>>2]|0)+1|0;l=v;j=gR(c[l>>2]|0,c[l+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0;l=v;c[l>>2]=j;c[l+4>>2]=C;c[z>>2]=c[(c[z>>2]|0)+4>>2]}if(c[A>>2]|0){A=c[A>>2]|0;i=B;return A|0}j=s;l=u;c[A>>2]=Al(c[o>>2]|0,c[c[p>>2]>>2]|0,(c[q>>2]|0)+1|0,c[j>>2]|0,c[j+4>>2]|0,c[l>>2]|0,c[l+4>>2]|0,c[t>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;A=c[A>>2]|0;i=B;return A|0}function Bl(a,b,d,e,f,g,h,j,k,l,m,n,o,p){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;D=i;i=i+96|0;B=D+40|0;q=D+84|0;E=D+80|0;r=D+32|0;s=D+76|0;t=D+24|0;u=D+16|0;v=D+8|0;w=D;x=D+72|0;y=D+68|0;z=D+64|0;A=D+60|0;C=D+56|0;c[E>>2]=a;a=r;c[a>>2]=b;c[a+4>>2]=d;c[s>>2]=e;a=t;c[a>>2]=f;c[a+4>>2]=g;a=u;c[a>>2]=h;c[a+4>>2]=j;a=v;c[a>>2]=k;c[a+4>>2]=l;a=w;c[a>>2]=m;c[a+4>>2]=n;c[x>>2]=o;c[y>>2]=p;c[A>>2]=jl(c[E>>2]|0,11,z,0)|0;if(!(c[A>>2]|0)){E=r;Me(c[z>>2]|0,1,c[E>>2]|0,c[E+4>>2]|0)|0;Le(c[z>>2]|0,2,c[s>>2]|0)|0;E=t;Me(c[z>>2]|0,3,c[E>>2]|0,c[E+4>>2]|0)|0;E=u;Me(c[z>>2]|0,4,c[E>>2]|0,c[E+4>>2]|0)|0;E=w;do if((c[E>>2]|0)==0&(c[E+4>>2]|0)==0){E=v;Me(c[z>>2]|0,5,c[E>>2]|0,c[E+4>>2]|0)|0}else{e=v;p=c[e+4>>2]|0;o=w;a=c[o>>2]|0;o=c[o+4>>2]|0;E=B;c[E>>2]=c[e>>2];c[E+4>>2]=p;E=B+8|0;c[E>>2]=a;c[E+4>>2]=o;c[C>>2]=Od(24e3,B)|0;if(c[C>>2]|0){Oe(c[z>>2]|0,5,c[C>>2]|0,-1,148)|0;break}c[q>>2]=7;E=c[q>>2]|0;i=D;return E|0}while(0);Je(c[z>>2]|0,6,c[x>>2]|0,c[y>>2]|0,0)|0;ue(c[z>>2]|0)|0;c[A>>2]=Zd(c[z>>2]|0)|0}c[q>>2]=c[A>>2];E=c[q>>2]|0;i=D;return E|0}function Cl(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;h=i;i=i+32|0;j=h+16|0;l=h+12|0;k=h;g=h+8|0;c[j>>2]=b;c[l>>2]=d;b=k;c[b>>2]=e;c[b+4>>2]=f;b=k;c[g>>2]=10-(Dl(c[b>>2]|0,c[b+4>>2]|0)|0);a[(c[(c[j>>2]|0)+36>>2]|0)+(c[g>>2]|0)>>0]=c[l>>2];b=k;El((c[(c[j>>2]|0)+36>>2]|0)+((c[g>>2]|0)+1)|0,c[b>>2]|0,c[b+4>>2]|0)|0;i=h;return c[g>>2]|0}function Dl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f;e=f+8|0;g=d;c[g>>2]=a;c[g+4>>2]=b;c[e>>2]=0;do{c[e>>2]=(c[e>>2]|0)+1;b=d;b=hR(c[b>>2]|0,c[b+4>>2]|0,7)|0;g=d;c[g>>2]=b;c[g+4>>2]=C;g=d}while((c[g>>2]|0)!=0|(c[g+4>>2]|0)!=0);i=f;return c[e>>2]|0}function El(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;g=k+20|0;l=k+8|0;h=k+16|0;j=k;c[g>>2]=b;b=l;c[b>>2]=e;c[b+4>>2]=f;c[h>>2]=c[g>>2];e=l;f=c[e+4>>2]|0;b=j;c[b>>2]=c[e>>2];c[b+4>>2]=f;do{l=(c[j>>2]&127|128)&255;b=c[h>>2]|0;c[h>>2]=b+1;a[b>>0]=l;b=j;b=hR(c[b>>2]|0,c[b+4>>2]|0,7)|0;l=j;c[l>>2]=b;c[l+4>>2]=C;l=j}while((c[l>>2]|0)!=0|(c[l+4>>2]|0)!=0);l=(c[h>>2]|0)+-1|0;a[l>>0]=(d[l>>0]|0)&127;i=k;return(c[h>>2]|0)-(c[g>>2]|0)|0}function Fl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;g=h+4|0;f=h;c[d>>2]=a;c[e>>2]=b;c[g>>2]=0;b=(c[e>>2]|0)+8|0;if(!((c[b>>2]|0)!=0|(c[b+4>>2]|0)!=0)){g=c[g>>2]|0;i=h;return g|0}c[g>>2]=jl(c[d>>2]|0,17,f,0)|0;if(c[g>>2]|0){g=c[g>>2]|0;i=h;return g|0}b=(c[e>>2]|0)+8|0;Me(c[f>>2]|0,1,c[b>>2]|0,c[b+4>>2]|0)|0;b=(c[e>>2]|0)+24|0;Me(c[f>>2]|0,2,c[b>>2]|0,c[b+4>>2]|0)|0;ue(c[f>>2]|0)|0;c[g>>2]=Zd(c[f>>2]|0)|0;g=c[g>>2]|0;i=h;return g|0}function Gl(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;h=l+12|0;j=l+8|0;k=l;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[l+4>>2]=f;c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[h>>2]|0)){g=5;break}if((a[(c[g>>2]|0)+(c[k>>2]|0)>>0]|0)!=(a[(c[j>>2]|0)+(c[k>>2]|0)>>0]|0)){g=5;break}c[k>>2]=(c[k>>2]|0)+1}if((g|0)==5){i=l;return c[k>>2]|0}return 0}function Hl(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,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;w=i;i=i+64|0;m=w+56|0;n=w+52|0;o=w+48|0;p=w+44|0;q=w+40|0;r=w+36|0;u=w+32|0;v=w+28|0;s=w+24|0;g=w+20|0;j=w+16|0;h=w+12|0;k=w+8|0;l=w+4|0;t=w;c[n>>2]=a;c[o>>2]=b;c[p>>2]=d;c[q>>2]=e;c[r>>2]=f;c[u>>2]=c[c[o>>2]>>2];do if(c[u>>2]|0){c[g>>2]=c[(c[u>>2]|0)+32>>2];c[j>>2]=c[g>>2];c[h>>2]=Gl(c[(c[u>>2]|0)+16>>2]|0,c[(c[u>>2]|0)+20>>2]|0,c[q>>2]|0,c[r>>2]|0)|0;c[k>>2]=(c[r>>2]|0)-(c[h>>2]|0);b=c[h>>2]|0;b=Dl(b,((b|0)<0)<<31>>31)|0;e=c[k>>2]|0;e=b+(Dl(e,((e|0)<0)<<31>>31)|0)|0;c[j>>2]=(c[j>>2]|0)+(e+(c[k>>2]|0));if((c[j>>2]|0)>(c[(c[n>>2]|0)+224>>2]|0)?(c[(c[u>>2]|0)+16>>2]|0)!=0:0)break;if((c[j>>2]|0)>(c[(c[n>>2]|0)+224>>2]|0)?(v=Id(c[j>>2]|0)|0,c[(c[u>>2]|0)+36>>2]=v,(c[(c[u>>2]|0)+36>>2]|0)==0):0){c[m>>2]=7;v=c[m>>2]|0;i=w;return v|0}if(c[(c[u>>2]|0)+16>>2]|0){v=c[h>>2]|0;v=El((c[(c[u>>2]|0)+36>>2]|0)+(c[g>>2]|0)|0,v,((v|0)<0)<<31>>31)|0;c[g>>2]=(c[g>>2]|0)+v}v=c[k>>2]|0;v=El((c[(c[u>>2]|0)+36>>2]|0)+(c[g>>2]|0)|0,v,((v|0)<0)<<31>>31)|0;c[g>>2]=(c[g>>2]|0)+v;iR((c[(c[u>>2]|0)+36>>2]|0)+(c[g>>2]|0)|0,(c[q>>2]|0)+(c[h>>2]|0)|0,c[k>>2]|0)|0;c[(c[u>>2]|0)+32>>2]=(c[g>>2]|0)+(c[k>>2]|0);v=(c[u>>2]|0)+12|0;c[v>>2]=(c[v>>2]|0)+1;if(c[p>>2]|0){do if((c[(c[u>>2]|0)+24>>2]|0)<(c[r>>2]|0)){c[l>>2]=Ld(c[(c[u>>2]|0)+28>>2]|0,c[r>>2]<<1)|0;if(c[l>>2]|0){c[(c[u>>2]|0)+24>>2]=c[r>>2]<<1;c[(c[u>>2]|0)+28>>2]=c[l>>2];break}c[m>>2]=7;v=c[m>>2]|0;i=w;return v|0}while(0);c[(c[u>>2]|0)+16>>2]=c[(c[u>>2]|0)+28>>2];iR(c[(c[u>>2]|0)+16>>2]|0,c[q>>2]|0,c[r>>2]|0)|0;c[(c[u>>2]|0)+20>>2]=c[r>>2]}else{c[(c[u>>2]|0)+16>>2]=c[q>>2];c[(c[u>>2]|0)+20>>2]=c[r>>2]}c[m>>2]=0;v=c[m>>2]|0;i=w;return v|0}while(0);c[s>>2]=Id(40+(c[(c[n>>2]|0)+224>>2]|0)|0)|0;if(!(c[s>>2]|0)){c[m>>2]=7;v=c[m>>2]|0;i=w;return v|0}d=c[s>>2]|0;g=d+40|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(g|0));c[(c[s>>2]|0)+32>>2]=11;c[(c[s>>2]|0)+36>>2]=(c[s>>2]|0)+40;if(c[u>>2]|0){c[t>>2]=c[c[u>>2]>>2];c[v>>2]=Hl(c[n>>2]|0,t,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0)|0;if(!(c[c[u>>2]>>2]|0))c[c[u>>2]>>2]=c[t>>2];c[(c[u>>2]|0)+4>>2]=c[s>>2];c[(c[s>>2]|0)+8>>2]=c[(c[u>>2]|0)+8>>2];c[c[s>>2]>>2]=c[t>>2];c[(c[s>>2]|0)+28>>2]=c[(c[u>>2]|0)+28>>2];c[(c[s>>2]|0)+24>>2]=c[(c[u>>2]|0)+24>>2];c[(c[u>>2]|0)+28>>2]=0}else{c[(c[s>>2]|0)+8>>2]=c[s>>2];c[v>>2]=Hl(c[n>>2]|0,s,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0)|0}c[c[o>>2]>>2]=c[s>>2];c[m>>2]=c[v>>2];v=c[m>>2]|0;i=w;return v|0}function Il(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=((c[(c[d>>2]|0)+80>>2]|0)==0&1)-((c[(c[e>>2]|0)+80>>2]|0)==0&1);if(c[f>>2]|0){f=c[f>>2]|0;i=g;return f|0}a=(c[d>>2]|0)+88|0;b=(c[e>>2]|0)+88|0;if((c[a>>2]|0)==(c[b>>2]|0)?(c[a+4>>2]|0)==(c[b+4>>2]|0):0){c[f>>2]=(c[c[e>>2]>>2]|0)-(c[c[d>>2]>>2]|0);f=c[f>>2]|0;i=g;return f|0}else{a=(c[d>>2]|0)+88|0;d=c[a+4>>2]|0;b=(c[e>>2]|0)+88|0;e=c[b+4>>2]|0;c[f>>2]=(d|0)<(e|0)|((d|0)==(e|0)?(c[a>>2]|0)>>>0<(c[b>>2]|0)>>>0:0)?1:-1;f=c[f>>2]|0;i=g;return f|0}return 0}function Jl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=((c[(c[d>>2]|0)+80>>2]|0)==0&1)-((c[(c[e>>2]|0)+80>>2]|0)==0&1);if(c[f>>2]|0){f=c[f>>2]|0;i=g;return f|0}a=(c[d>>2]|0)+88|0;b=(c[e>>2]|0)+88|0;if((c[a>>2]|0)==(c[b>>2]|0)?(c[a+4>>2]|0)==(c[b+4>>2]|0):0){c[f>>2]=(c[c[e>>2]>>2]|0)-(c[c[d>>2]>>2]|0);f=c[f>>2]|0;i=g;return f|0}else{a=(c[d>>2]|0)+88|0;d=c[a+4>>2]|0;b=(c[e>>2]|0)+88|0;e=c[b+4>>2]|0;c[f>>2]=(d|0)>(e|0)|((d|0)==(e|0)?(c[a>>2]|0)>>>0>(c[b>>2]|0)>>>0:0)?1:-1;f=c[f>>2]|0;i=g;return f|0}return 0}function Kl(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;if(d[(c[b>>2]|0)+5>>0]|0){a=c[b>>2]|0;a=a+40|0;c[a>>2]=0;i=e;return}Kd(c[(c[b>>2]|0)+40>>2]|0);Ve(c[(c[b>>2]|0)+52>>2]|0)|0;c[(c[b>>2]|0)+52>>2]=0;a=c[b>>2]|0;a=a+40|0;c[a>>2]=0;i=e;return}function Ll(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=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;v=i;i=i+64|0;s=v+52|0;g=v+48|0;t=v+44|0;h=v+40|0;q=v+36|0;u=v+32|0;o=v+28|0;p=v+24|0;l=v+20|0;j=v+16|0;m=v+12|0;k=v+8|0;n=v+4|0;r=v;c[g>>2]=b;c[t>>2]=e;c[h>>2]=f;f=c[t>>2]|0;if(c[(c[t>>2]|0)+72>>2]|0)c[u>>2]=(c[(c[t>>2]|0)+72>>2]|0)+(c[f+76>>2]|0);else c[u>>2]=c[f+40>>2];if(!((c[u>>2]|0)!=0?(c[u>>2]|0)>>>0<((c[(c[t>>2]|0)+40>>2]|0)+(c[(c[t>>2]|0)+44>>2]|0)|0)>>>0:0)){f=c[t>>2]|0;if(c[(c[t>>2]|0)+56>>2]|0){c[l>>2]=c[c[f+56>>2]>>2];Kd(c[(c[t>>2]|0)+40>>2]|0);c[(c[t>>2]|0)+40>>2]=0;do if(c[l>>2]|0){c[m>>2]=c[(c[l>>2]|0)+8>>2];c[k>>2]=(c[c[m>>2]>>2]|0)+1;c[(c[t>>2]|0)+64>>2]=c[(c[l>>2]|0)+12>>2];c[(c[t>>2]|0)+60>>2]=c[(c[l>>2]|0)+16>>2];c[j>>2]=Id(c[k>>2]|0)|0;if(c[j>>2]|0){iR(c[j>>2]|0,c[(c[m>>2]|0)+4>>2]|0,c[k>>2]|0)|0;u=c[k>>2]|0;c[(c[t>>2]|0)+76>>2]=u;c[(c[t>>2]|0)+44>>2]=u;u=c[j>>2]|0;c[(c[t>>2]|0)+72>>2]=u;c[(c[t>>2]|0)+40>>2]=u;u=(c[t>>2]|0)+56|0;c[u>>2]=(c[u>>2]|0)+4;break}c[s>>2]=7;u=c[s>>2]|0;i=v;return u|0}while(0);c[s>>2]=0;u=c[s>>2]|0;i=v;return u|0}Kl(f);l=(c[t>>2]|0)+32|0;j=c[l+4>>2]|0;m=(c[t>>2]|0)+16|0;k=c[m+4>>2]|0;if((j|0)>(k|0)|((j|0)==(k|0)?(c[l>>2]|0)>>>0>=(c[m>>2]|0)>>>0:0)){c[s>>2]=0;u=c[s>>2]|0;i=v;return u|0}k=c[g>>2]|0;j=(c[t>>2]|0)+32|0;l=j;l=gR(c[l>>2]|0,c[l+4>>2]|0,1,0)|0;m=C;c[j>>2]=l;c[j+4>>2]=m;c[q>>2]=am(k,l,m,(c[t>>2]|0)+40|0,(c[t>>2]|0)+44|0,(c[h>>2]|0)!=0?(c[t>>2]|0)+48|0:0)|0;if(c[q>>2]|0){c[s>>2]=c[q>>2];u=c[s>>2]|0;i=v;return u|0}if((c[h>>2]|0)!=0?(c[(c[t>>2]|0)+48>>2]|0)<(c[(c[t>>2]|0)+44>>2]|0):0){c[(c[t>>2]|0)+52>>2]=c[(c[g>>2]|0)+244>>2];c[(c[g>>2]|0)+244>>2]=0}c[u>>2]=c[(c[t>>2]|0)+40>>2]}c[q>>2]=Yl(c[t>>2]|0,c[u>>2]|0,20)|0;if(c[q>>2]|0){c[s>>2]=c[q>>2];u=c[s>>2]|0;i=v;return u|0}f=c[u>>2]|0;if(d[c[u>>2]>>0]&128)f=Vl(f,o)|0;else{c[o>>2]=d[f>>0];f=1}c[u>>2]=(c[u>>2]|0)+f;f=c[u>>2]|0;if(d[c[u>>2]>>0]&128)f=Vl(f,p)|0;else{c[p>>2]=d[f>>0];f=1}c[u>>2]=(c[u>>2]|0)+f;if(!((c[o>>2]|0)<0|(c[p>>2]|0)<=0)?((c[u>>2]|0)+(c[p>>2]|0)|0)>>>0<=((c[(c[t>>2]|0)+40>>2]|0)+(c[(c[t>>2]|0)+44>>2]|0)|0)>>>0:0){do if(((c[o>>2]|0)+(c[p>>2]|0)|0)>(c[(c[t>>2]|0)+68>>2]|0)){c[n>>2]=(c[o>>2]|0)+(c[p>>2]|0)<<1;c[r>>2]=Ld(c[(c[t>>2]|0)+64>>2]|0,c[n>>2]|0)|0;if(c[r>>2]|0){c[(c[t>>2]|0)+64>>2]=c[r>>2];c[(c[t>>2]|0)+68>>2]=c[n>>2];break}c[s>>2]=7;u=c[s>>2]|0;i=v;return u|0}while(0);c[q>>2]=Yl(c[t>>2]|0,c[u>>2]|0,(c[p>>2]|0)+10|0)|0;if(c[q>>2]|0){c[s>>2]=c[q>>2];u=c[s>>2]|0;i=v;return u|0}iR((c[(c[t>>2]|0)+64>>2]|0)+(c[o>>2]|0)|0,c[u>>2]|0,c[p>>2]|0)|0;c[(c[t>>2]|0)+60>>2]=(c[o>>2]|0)+(c[p>>2]|0);c[u>>2]=(c[u>>2]|0)+(c[p>>2]|0);f=c[u>>2]|0;if(d[c[u>>2]>>0]&128)f=Vl(f,(c[t>>2]|0)+76|0)|0;else{c[(c[t>>2]|0)+76>>2]=d[f>>0];f=1}c[u>>2]=(c[u>>2]|0)+f;c[(c[t>>2]|0)+72>>2]=c[u>>2];c[(c[t>>2]|0)+80>>2]=0;do if(((c[(c[t>>2]|0)+72>>2]|0)+(c[(c[t>>2]|0)+76>>2]|0)|0)>>>0<=((c[(c[t>>2]|0)+40>>2]|0)+(c[(c[t>>2]|0)+44>>2]|0)|0)>>>0){if((c[(c[t>>2]|0)+48>>2]|0)==0?(a[(c[(c[t>>2]|0)+72>>2]|0)+((c[(c[t>>2]|0)+76>>2]|0)-1)>>0]|0)!=0:0)break;c[s>>2]=0;u=c[s>>2]|0;i=v;return u|0}while(0);c[s>>2]=267;u=c[s>>2]|0;i=v;return u|0}c[s>>2]=267;u=c[s>>2]|0;i=v;return u|0}function Ml(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[d>>2]=a;c[e>>2]=b;if((c[(c[d>>2]|0)+40>>2]|0)!=0?(c[(c[e>>2]|0)+40>>2]|0)!=0:0){c[g>>2]=(c[(c[d>>2]|0)+60>>2]|0)-(c[(c[e>>2]|0)+60>>2]|0);a=c[(c[d>>2]|0)+64>>2]|0;b=c[(c[e>>2]|0)+64>>2]|0;if((c[g>>2]|0)<0)c[f>>2]=vQ(a,b,c[(c[d>>2]|0)+60>>2]|0)|0;else c[f>>2]=vQ(a,b,c[(c[e>>2]|0)+60>>2]|0)|0;if(!(c[f>>2]|0))c[f>>2]=c[g>>2]}else c[f>>2]=((c[(c[d>>2]|0)+40>>2]|0)==0&1)-((c[(c[e>>2]|0)+40>>2]|0)==0&1);if(c[f>>2]|0){g=c[f>>2]|0;i=h;return g|0}c[f>>2]=(c[c[e>>2]>>2]|0)-(c[c[d>>2]>>2]|0);g=c[f>>2]|0;i=h;return g|0}function Nl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;f=n+24|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;if((c[h>>2]|0)==(c[g>>2]|0))c[h>>2]=(c[h>>2]|0)+-1;c[k>>2]=(c[h>>2]|0)-1;while(1){if((c[k>>2]|0)<0)break;c[l>>2]=c[k>>2];while(1){if((c[l>>2]|0)>=((c[g>>2]|0)-1|0))break;if((Yb[c[j>>2]&255](c[(c[f>>2]|0)+(c[l>>2]<<2)>>2]|0,c[(c[f>>2]|0)+((c[l>>2]|0)+1<<2)>>2]|0)|0)<0)break;c[m>>2]=c[(c[f>>2]|0)+((c[l>>2]|0)+1<<2)>>2];c[(c[f>>2]|0)+((c[l>>2]|0)+1<<2)>>2]=c[(c[f>>2]|0)+(c[l>>2]<<2)>>2];c[(c[f>>2]|0)+(c[l>>2]<<2)>>2]=c[m>>2];c[l>>2]=(c[l>>2]|0)+1}c[k>>2]=(c[k>>2]|0)+-1}i=n;return}function Ol(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;do if((c[h>>2]|0)>(c[(c[f>>2]|0)+20>>2]|0)){c[(c[f>>2]|0)+20>>2]=c[h>>2]<<1;c[j>>2]=Ld(c[(c[f>>2]|0)+16>>2]|0,c[(c[f>>2]|0)+20>>2]|0)|0;if(c[j>>2]|0){c[(c[f>>2]|0)+16>>2]=c[j>>2];break}c[e>>2]=7;j=c[e>>2]|0;i=k;return j|0}while(0);iR(c[(c[f>>2]|0)+16>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;c[e>>2]=0;j=c[e>>2]|0;i=k;return j|0}function Pl(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;l=k+12|0;f=k+8|0;j=k+4|0;g=k+16|0;h=k;c[l>>2]=b;c[f>>2]=e;c[j>>2]=0;if((d[(c[l>>2]|0)+231>>0]|0|0)!=0?(c[(c[f>>2]|0)+56>>2]|0)!=0:0){a[g>>0]=0;l=(c[f>>2]|0)+88|0;c[l>>2]=0;c[l+4>>2]=0;c[(c[f>>2]|0)+84>>2]=0;Wl(0,c[(c[f>>2]|0)+72>>2]|0,c[(c[f>>2]|0)+76>>2]|0,(c[f>>2]|0)+80|0,(c[f>>2]|0)+88|0,(c[f>>2]|0)+84|0,g);l=c[j>>2]|0;i=k;return l|0}c[j>>2]=Yl(c[f>>2]|0,c[(c[f>>2]|0)+72>>2]|0,10)|0;if(c[j>>2]|0){l=c[j>>2]|0;i=k;return l|0}c[h>>2]=Ul(c[(c[f>>2]|0)+72>>2]|0,(c[f>>2]|0)+88|0)|0;c[(c[f>>2]|0)+80>>2]=(c[(c[f>>2]|0)+72>>2]|0)+(c[h>>2]|0);l=c[j>>2]|0;i=k;return l|0}function Ql(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=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;u=i;i=i+48|0;s=u+36|0;t=u+32|0;r=u+28|0;h=u+24|0;j=u+20|0;q=u+16|0;o=u+12|0;l=u+41|0;k=u+40|0;p=u+8|0;n=u;c[t>>2]=b;c[r>>2]=e;c[h>>2]=f;c[j>>2]=g;c[q>>2]=0;c[o>>2]=c[(c[r>>2]|0)+80>>2];a[l>>0]=0;do if((d[(c[t>>2]|0)+231>>0]|0)!=0?(c[(c[r>>2]|0)+56>>2]|0)!=0:0){a[k>>0]=0;if(c[h>>2]|0){c[c[h>>2]>>2]=c[(c[r>>2]|0)+80>>2];c[c[j>>2]>>2]=(c[(c[r>>2]|0)+84>>2]|0)-1}Wl(0,c[(c[r>>2]|0)+72>>2]|0,c[(c[r>>2]|0)+76>>2]|0,o,(c[r>>2]|0)+88|0,(c[r>>2]|0)+84|0,k);if(a[k>>0]|0){c[(c[r>>2]|0)+80>>2]=0;break}else{c[(c[r>>2]|0)+80>>2]=c[o>>2];break}}else m=8;while(0);do if((m|0)==8){c[p>>2]=(c[(c[r>>2]|0)+72>>2]|0)+(c[(c[r>>2]|0)+76>>2]|0);while(1){if(a[c[o>>2]>>0]|a[l>>0]){f=c[o>>2]|0;c[o>>2]=f+1;a[l>>0]=a[f>>0]&128;continue}if(!(c[(c[r>>2]|0)+52>>2]|0))break;if((c[o>>2]|0)>>>0<((c[(c[r>>2]|0)+40>>2]|0)+(c[(c[r>>2]|0)+48>>2]|0)|0)>>>0)break;c[q>>2]=Xl(c[r>>2]|0)|0;if(c[q>>2]|0){m=14;break}}if((m|0)==14){c[s>>2]=c[q>>2];t=c[s>>2]|0;i=u;return t|0}c[o>>2]=(c[o>>2]|0)+1;if(c[h>>2]|0){c[c[h>>2]>>2]=c[(c[r>>2]|0)+80>>2];c[c[j>>2]>>2]=(c[o>>2]|0)-(c[(c[r>>2]|0)+80>>2]|0)-1}while(1){if((c[o>>2]|0)>>>0<(c[p>>2]|0)>>>0)h=(a[c[o>>2]>>0]|0)==0;else h=0;j=c[o>>2]|0;if(!h)break;c[o>>2]=j+1}h=c[r>>2]|0;if(j>>>0>=(c[p>>2]|0)>>>0){c[h+80>>2]=0;break}c[q>>2]=Yl(h,c[o>>2]|0,10)|0;if(!(c[q>>2]|0)){e=c[o>>2]|0;e=e+(Ul(c[o>>2]|0,n)|0)|0;c[(c[r>>2]|0)+80>>2]=e;e=n;l=c[e>>2]|0;e=c[e+4>>2]|0;h=(c[r>>2]|0)+88|0;k=h;j=c[k>>2]|0;k=c[k+4>>2]|0;if(a[(c[t>>2]|0)+231>>0]|0){r=fR(j|0,k|0,l|0,e|0)|0;t=h;c[t>>2]=r;c[t+4>>2]=C;break}else{r=gR(j|0,k|0,l|0,e|0)|0;t=h;c[t>>2]=r;c[t+4>>2]=C;break}}}while(0);c[s>>2]=0;t=c[s>>2]|0;i=u;return t|0}function Rl(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;h=t+32|0;j=t+28|0;k=t+24|0;l=t+20|0;r=t+16|0;o=t+12|0;q=t+8|0;n=t+4|0;p=t;m=t+36|0;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[l>>2]=g;c[r>>2]=c[c[k>>2]>>2];c[o>>2]=c[c[l>>2]>>2];c[q>>2]=(c[r>>2]|0)+(c[o>>2]|0);c[n>>2]=0;c[p>>2]=c[r>>2];while(1){a[m>>0]=0;while(1){if((c[p>>2]|0)>>>0>=(c[q>>2]|0)>>>0)break;if(!((a[m>>0]|a[c[p>>2]>>0])&254))break;f=c[p>>2]|0;c[p>>2]=f+1;a[m>>0]=a[f>>0]&128}e=(c[p>>2]|0)-(c[r>>2]|0)|0;if((c[h>>2]|0)==(c[n>>2]|0)){s=7;break}c[o>>2]=(c[o>>2]|0)-e;c[r>>2]=c[p>>2];if(!(c[o>>2]|0))break;c[p>>2]=(c[r>>2]|0)+1;e=c[p>>2]|0;if(d[c[p>>2]>>0]&128)e=Vl(e,n)|0;else{c[n>>2]=d[e>>0];e=1}c[p>>2]=(c[p>>2]|0)+e}if((s|0)==7)c[o>>2]=e;if(!(c[j>>2]|0)){s=c[r>>2]|0;r=c[k>>2]|0;c[r>>2]=s;r=c[o>>2]|0;s=c[l>>2]|0;c[s>>2]=r;i=t;return}if(((c[r>>2]|0)+(c[o>>2]|0)|0)==(c[q>>2]|0)){s=c[r>>2]|0;r=c[k>>2]|0;c[r>>2]=s;r=c[o>>2]|0;s=c[l>>2]|0;c[s>>2]=r;i=t;return}kR((c[r>>2]|0)+(c[o>>2]|0)|0,0,(c[q>>2]|0)-((c[r>>2]|0)+(c[o>>2]|0))|0)|0;s=c[r>>2]|0;r=c[k>>2]|0;c[r>>2]=s;r=c[o>>2]|0;s=c[l>>2]|0;c[s>>2]=r;i=t;return}function Sl(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=i;i=i+48|0;h=p+8|0;r=p+40|0;q=p+36|0;j=p+32|0;m=p+28|0;k=p+24|0;n=p+20|0;o=p+16|0;l=p;s=h;c[s>>2]=b;c[s+4>>2]=d;c[r>>2]=e;c[q>>2]=f;c[j>>2]=g;c[m>>2]=0;c[k>>2]=0;c[n>>2]=c[r>>2];c[o>>2]=(c[r>>2]|0)+(c[q>>2]|0);if((a[c[n>>2]>>0]|0)!=1){if((a[c[n>>2]>>0]|0)==2){s=h;s=El((c[j>>2]|0)+(c[m>>2]|0)|0,c[s>>2]|0,c[s+4>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+s;s=c[m>>2]|0;c[m>>2]=s+1;a[(c[j>>2]|0)+s>>0]=2;c[k>>2]=1}Tl(0,n)}while(1){if((c[n>>2]|0)>>>0>=(c[o>>2]|0)>>>0)break;if((a[c[n>>2]>>0]|0)!=1)break;c[n>>2]=(c[n>>2]|0)+1;s=Ul(c[n>>2]|0,l)|0;c[n>>2]=(c[n>>2]|0)+s;if((a[c[n>>2]>>0]|0)==2){if(!(c[k>>2]|0)){s=h;s=El((c[j>>2]|0)+(c[m>>2]|0)|0,c[s>>2]|0,c[s+4>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+s;c[k>>2]=1}s=c[m>>2]|0;c[m>>2]=s+1;a[(c[j>>2]|0)+s>>0]=1;s=l;s=El((c[j>>2]|0)+(c[m>>2]|0)|0,c[s>>2]|0,c[s+4>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+s;s=c[m>>2]|0;c[m>>2]=s+1;a[(c[j>>2]|0)+s>>0]=2}Tl(0,n)}if(!(c[k>>2]|0)){s=c[m>>2]|0;i=p;return s|0}s=c[m>>2]|0;c[m>>2]=s+1;a[(c[j>>2]|0)+s>>0]=0;s=c[m>>2]|0;i=p;return s|0}function Tl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+16|0;f=l+12|0;k=l+8|0;g=l+20|0;h=l+4|0;j=l;c[e>>2]=b;c[f>>2]=d;c[k>>2]=c[c[f>>2]>>2];a[g>>0]=0;while(1){if(!(254&(a[c[k>>2]>>0]|a[g>>0])))break;d=c[k>>2]|0;c[k>>2]=d+1;a[g>>0]=a[d>>0]&128}if(!(c[e>>2]|0)){b=c[k>>2]|0;d=c[f>>2]|0;c[d>>2]=b;i=l;return}c[h>>2]=(c[k>>2]|0)-(c[c[f>>2]>>2]|0);c[j>>2]=c[c[e>>2]>>2];iR(c[j>>2]|0,c[c[f>>2]>>2]|0,c[h>>2]|0)|0;c[j>>2]=(c[j>>2]|0)+(c[h>>2]|0);c[c[e>>2]>>2]=c[j>>2];b=c[k>>2]|0;d=c[f>>2]|0;c[d>>2]=b;i=l;return}function Ul(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+48|0;e=n+36|0;f=n+32|0;g=n+28|0;l=n+24|0;h=n+20|0;j=n+8|0;m=n+16|0;k=n;c[f>>2]=b;c[g>>2]=d;c[l>>2]=c[f>>2];b=c[f>>2]|0;c[f>>2]=b+1;c[h>>2]=a[b>>0];b=c[h>>2]|0;if(!(c[h>>2]&128)){m=c[g>>2]|0;c[m>>2]=b;c[m+4>>2]=0;c[e>>2]=1;m=c[e>>2]|0;i=n;return m|0}d=c[f>>2]|0;c[f>>2]=d+1;c[h>>2]=b&127|a[d>>0]<<7;b=c[h>>2]|0;if(!(c[h>>2]&16384)){m=c[g>>2]|0;c[m>>2]=b;c[m+4>>2]=0;c[e>>2]=2;m=c[e>>2]|0;i=n;return m|0}d=c[f>>2]|0;c[f>>2]=d+1;c[h>>2]=b&16383|a[d>>0]<<14;b=c[h>>2]|0;if(!(c[h>>2]&2097152)){m=c[g>>2]|0;c[m>>2]=b;c[m+4>>2]=0;c[e>>2]=3;m=c[e>>2]|0;i=n;return m|0}d=c[f>>2]|0;c[f>>2]=d+1;c[h>>2]=b&2097151|a[d>>0]<<21;b=c[h>>2]|0;if(!(c[h>>2]&268435456)){m=c[g>>2]|0;c[m>>2]=b;c[m+4>>2]=0;c[e>>2]=4;m=c[e>>2]|0;i=n;return m|0}h=j;c[h>>2]=b&268435455;c[h+4>>2]=0;c[m>>2]=28;while(1){if((c[m>>2]|0)>63)break;h=c[f>>2]|0;c[f>>2]=h+1;h=a[h>>0]|0;d=k;c[d>>2]=h;c[d+4>>2]=((h|0)<0)<<31>>31;d=lR(c[k>>2]&127|0,0,c[m>>2]|0)|0;h=j;d=gR(c[h>>2]|0,c[h+4>>2]|0,d|0,C|0)|0;h=j;c[h>>2]=d;c[h+4>>2]=C;if((c[k>>2]&128|0)==0&0==0)break;c[m>>2]=(c[m>>2]|0)+7}k=c[j+4>>2]|0;m=c[g>>2]|0;c[m>>2]=c[j>>2];c[m+4>>2]=k;c[e>>2]=(c[f>>2]|0)-(c[l>>2]|0);m=c[e>>2]|0;i=n;return m|0}function Vl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;c[f>>2]=d+1;c[h>>2]=a[d>>0];d=c[h>>2]&127;b=c[f>>2]|0;c[f>>2]=b+1;c[h>>2]=d|a[b>>0]<<7;b=c[h>>2]|0;if(!(c[h>>2]&16384)){c[c[g>>2]>>2]=b;c[e>>2]=2;h=c[e>>2]|0;i=j;return h|0}d=c[f>>2]|0;c[f>>2]=d+1;c[h>>2]=b&16383|a[d>>0]<<14;b=c[h>>2]|0;if(!(c[h>>2]&2097152)){c[c[g>>2]>>2]=b;c[e>>2]=3;h=c[e>>2]|0;i=j;return h|0}d=c[f>>2]|0;c[f>>2]=d+1;c[h>>2]=b&2097151|a[d>>0]<<21;b=c[h>>2]|0;if(!(c[h>>2]&268435456)){c[c[g>>2]>>2]=b;c[e>>2]=4;h=c[e>>2]|0;i=j;return h|0}else{c[h>>2]=b&268435455;c[c[g>>2]>>2]=c[h>>2]|(a[c[f>>2]>>0]&15)<<28;c[e>>2]=5;h=c[e>>2]|0;i=j;return h|0}return 0}function Wl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;B=i;i=i+80|0;k=B+76|0;l=B+72|0;m=B+68|0;n=B+64|0;o=B+60|0;p=B+56|0;q=B+52|0;w=B+48|0;t=B+16|0;z=B+44|0;x=B+40|0;y=B+36|0;u=B+32|0;r=B+8|0;v=B+28|0;s=B;A=B+24|0;c[k>>2]=b;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=j;c[w>>2]=c[c[n>>2]>>2];if(c[w>>2]|0){c[v>>2]=(c[k>>2]|0)!=0?-1:1;_l(w,c[l>>2]|0,s);f=c[v>>2]|0;h=s;h=rR(f|0,((f|0)<0)<<31>>31|0,c[h>>2]|0,c[h+4>>2]|0)|0;f=c[o>>2]|0;g=f;h=fR(c[g>>2]|0,c[g+4>>2]|0,h|0,C|0)|0;c[f>>2]=h;c[f+4>>2]=C;if((c[w>>2]|0)==(c[l>>2]|0))a[c[q>>2]>>0]=1;else{c[A>>2]=c[w>>2];$l(c[l>>2]|0,w);c[c[p>>2]>>2]=(c[A>>2]|0)-(c[w>>2]|0)}c[c[n>>2]>>2]=c[w>>2];i=B;return}f=t;c[f>>2]=0;c[f+4>>2]=0;c[z>>2]=0;c[x>>2]=c[l>>2];c[y>>2]=(c[l>>2]|0)+(c[m>>2]|0);c[u>>2]=1;while(1){if((c[x>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break;f=Ul(c[x>>2]|0,r)|0;c[x>>2]=(c[x>>2]|0)+f;f=c[u>>2]|0;h=r;h=rR(f|0,((f|0)<0)<<31>>31|0,c[h>>2]|0,c[h+4>>2]|0)|0;f=t;h=gR(c[f>>2]|0,c[f+4>>2]|0,h|0,C|0)|0;f=t;c[f>>2]=h;c[f+4>>2]=C;c[z>>2]=c[x>>2];Zl(0,x);while(1){if((c[x>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break;if(a[c[x>>2]>>0]|0)break;c[x>>2]=(c[x>>2]|0)+1}c[u>>2]=(c[k>>2]|0)!=0?-1:1}c[c[p>>2]>>2]=(c[y>>2]|0)-(c[z>>2]|0);c[c[n>>2]>>2]=c[z>>2];g=t;h=c[g+4>>2]|0;f=c[o>>2]|0;c[f>>2]=c[g>>2];c[f+4>>2]=h;i=B;return}function Xl(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;e=g+8|0;d=g+4|0;f=g;c[e>>2]=b;if(((c[(c[e>>2]|0)+44>>2]|0)-(c[(c[e>>2]|0)+48>>2]|0)|0)<4096)b=(c[(c[e>>2]|0)+44>>2]|0)-(c[(c[e>>2]|0)+48>>2]|0)|0;else b=4096;c[d>>2]=b;c[f>>2]=We(c[(c[e>>2]|0)+52>>2]|0,(c[(c[e>>2]|0)+40>>2]|0)+(c[(c[e>>2]|0)+48>>2]|0)|0,c[d>>2]|0,c[(c[e>>2]|0)+48>>2]|0)|0;if(c[f>>2]|0){f=c[f>>2]|0;i=g;return f|0}b=(c[e>>2]|0)+48|0;c[b>>2]=(c[b>>2]|0)+(c[d>>2]|0);b=(c[(c[e>>2]|0)+40>>2]|0)+(c[(c[e>>2]|0)+48>>2]|0)|0;d=b+20|0;do{a[b>>0]=0;b=b+1|0}while((b|0)<(d|0));if((c[(c[e>>2]|0)+48>>2]|0)!=(c[(c[e>>2]|0)+44>>2]|0)){f=c[f>>2]|0;i=g;return f|0}Ve(c[(c[e>>2]|0)+52>>2]|0)|0;c[(c[e>>2]|0)+52>>2]=0;c[(c[e>>2]|0)+48>>2]=0;f=c[f>>2]|0;i=g;return f|0}function Yl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[h>>2]=0;while(1){if(!((c[h>>2]|0)==0?(c[(c[e>>2]|0)+52>>2]|0)!=0:0)){e=5;break}if(((c[f>>2]|0)-(c[(c[e>>2]|0)+40>>2]|0)+(c[g>>2]|0)|0)<=(c[(c[e>>2]|0)+48>>2]|0)){ -e=5;break}c[h>>2]=Xl(c[e>>2]|0)|0}if((e|0)==5){i=j;return c[h>>2]|0}return 0}function Zl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+16|0;f=l+12|0;k=l+8|0;g=l+20|0;h=l+4|0;j=l;c[e>>2]=b;c[f>>2]=d;c[k>>2]=c[c[f>>2]>>2];a[g>>0]=0;while(1){d=(a[c[k>>2]>>0]|a[g>>0]|0)!=0;b=c[k>>2]|0;c[k>>2]=b+1;if(!d)break;a[g>>0]=a[b>>0]&128}if(!(c[e>>2]|0)){j=c[k>>2]|0;k=c[f>>2]|0;c[k>>2]=j;i=l;return}c[h>>2]=(c[k>>2]|0)-(c[c[f>>2]>>2]|0);c[j>>2]=c[c[e>>2]>>2];iR(c[j>>2]|0,c[c[f>>2]>>2]|0,c[h>>2]|0)|0;c[j>>2]=(c[j>>2]|0)+(c[h>>2]|0);c[c[e>>2]>>2]=c[j>>2];j=c[k>>2]|0;k=c[f>>2]|0;c[k>>2]=j;i=l;return}function _l(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+20|0;g=l+16|0;h=l+12|0;j=l;k=l+8|0;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;c[k>>2]=(c[c[f>>2]>>2]|0)+-2;while(1){if((c[k>>2]|0)>>>0<(c[g>>2]|0)>>>0)break;if(!(a[c[k>>2]>>0]&128))break;c[k>>2]=(c[k>>2]|0)+-1}c[k>>2]=(c[k>>2]|0)+1;c[c[f>>2]>>2]=c[k>>2];Ul(c[k>>2]|0,j)|0;d=j;e=c[d+4>>2]|0;b=c[h>>2]|0;c[b>>2]=c[d>>2];c[b+4>>2]=e;i=l;return}function $l(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;e=k+8|0;f=k+4|0;h=k;g=k+12|0;c[e>>2]=b;c[f>>2]=d;c[h>>2]=(c[c[f>>2]>>2]|0)+-2;a[g>>0]=0;do{if((c[h>>2]|0)>>>0<=(c[e>>2]|0)>>>0)break;d=c[h>>2]|0;c[h>>2]=d+-1;d=a[d>>0]|0;a[g>>0]=d}while((d<<24>>24|0)==0);while(1){if((c[h>>2]|0)>>>0>(c[e>>2]|0)>>>0)d=(a[c[h>>2]>>0]&128|a[g>>0]|0)!=0;else d=0;b=c[h>>2]|0;if(!d)break;c[h>>2]=b+-1;a[g>>0]=a[b>>0]|0}if(b>>>0<=(c[e>>2]|0)>>>0){if((a[g>>0]|0)==0?(c[c[f>>2]>>2]|0)>>>0>((c[h>>2]|0)+2|0)>>>0:0)j=11}else j=11;if((j|0)==11)c[h>>2]=(c[h>>2]|0)+2;do{j=c[h>>2]|0;c[h>>2]=j+1}while((a[j>>0]&128|0)!=0);c[c[f>>2]>>2]=c[h>>2];i=k;return}function am(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 j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;o=t+8|0;p=t+40|0;j=t+36|0;k=t;q=t+32|0;l=t+28|0;m=t+24|0;s=t+20|0;n=t+16|0;r=t+12|0;c[j>>2]=b;b=k;c[b>>2]=d;c[b+4>>2]=e;c[q>>2]=f;c[l>>2]=g;c[m>>2]=h;d=c[j>>2]|0;if(c[(c[j>>2]|0)+244>>2]|0){o=k;c[s>>2]=Ye(c[d+244>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0}else{if(0==(c[d+240>>2]|0)?(c[o>>2]=c[(c[j>>2]|0)+20>>2],o=Od(24010,o)|0,c[(c[j>>2]|0)+240>>2]=o,0==(c[(c[j>>2]|0)+240>>2]|0)):0){c[p>>2]=7;s=c[p>>2]|0;i=t;return s|0}o=k;c[s>>2]=Ue(c[(c[j>>2]|0)+12>>2]|0,c[(c[j>>2]|0)+16>>2]|0,c[(c[j>>2]|0)+240>>2]|0,24022,c[o>>2]|0,c[o+4>>2]|0,0,(c[j>>2]|0)+244|0)|0}if((c[s>>2]|0)==0?(c[n>>2]=Xe(c[(c[j>>2]|0)+244>>2]|0)|0,c[c[l>>2]>>2]=c[n>>2],(c[q>>2]|0)!=0):0){c[r>>2]=Id((c[n>>2]|0)+20|0)|0;if(c[r>>2]|0){if((c[m>>2]|0)!=0&(c[n>>2]|0)>16384){c[n>>2]=4096;c[c[m>>2]>>2]=c[n>>2]}c[s>>2]=We(c[(c[j>>2]|0)+244>>2]|0,c[r>>2]|0,c[n>>2]|0,0)|0;d=(c[r>>2]|0)+(c[n>>2]|0)|0;e=d+20|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(e|0));if(c[s>>2]|0){Kd(c[r>>2]|0);c[r>>2]=0}}else c[s>>2]=7;c[c[q>>2]>>2]=c[r>>2]}c[p>>2]=c[s>>2];s=c[p>>2]|0;i=t;return s|0}function bm(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;n=r+36|0;g=r+32|0;o=r+28|0;h=r+24|0;j=r+20|0;k=r+16|0;p=r+12|0;m=r+8|0;l=r+4|0;q=r;c[g>>2]=a;c[o>>2]=b;c[h>>2]=e;c[j>>2]=f;c[p>>2]=c[(c[o>>2]|0)+4>>2];c[k>>2]=0;a:while(1){if(c[(c[o>>2]|0)+28>>2]|0){g=12;break}if((c[k>>2]|0)>=(c[(c[o>>2]|0)+4>>2]|0)){g=12;break}c[m>>2]=0;c[l>>2]=c[(c[c[o>>2]>>2]|0)+(c[k>>2]<<2)>>2];do{c[q>>2]=Ll(c[g>>2]|0,c[l>>2]|0,0)|0;if(c[q>>2]|0){g=6;break a}if(!(c[h>>2]|0))break;e=cm(c[l>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;c[m>>2]=e}while((e|0)<0);if((c[m>>2]|0)!=0?(d[(c[l>>2]|0)+4>>0]|0|0)!=0:0)Kl(c[l>>2]|0);c[k>>2]=(c[k>>2]|0)+1}if((g|0)==6){c[n>>2]=c[q>>2];q=c[n>>2]|0;i=r;return q|0}else if((g|0)==12){Nl(c[c[o>>2]>>2]|0,c[p>>2]|0,c[p>>2]|0,184);c[n>>2]=0;q=c[n>>2]|0;i=r;return q|0}return 0}function cm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+12|0;e=j+8|0;g=j+4|0;h=j;c[f>>2]=a;c[e>>2]=b;c[g>>2]=d;c[h>>2]=0;if(!(c[(c[f>>2]|0)+40>>2]|0)){h=c[h>>2]|0;i=j;return h|0}a=c[(c[f>>2]|0)+64>>2]|0;d=c[e>>2]|0;if((c[(c[f>>2]|0)+60>>2]|0)>(c[g>>2]|0))c[h>>2]=vQ(a,d,c[g>>2]|0)|0;else c[h>>2]=vQ(a,d,c[(c[f>>2]|0)+60>>2]|0)|0;if(c[h>>2]|0){h=c[h>>2]|0;i=j;return h|0}c[h>>2]=(c[(c[f>>2]|0)+60>>2]|0)-(c[g>>2]|0);h=c[h>>2]|0;i=j;return h|0}function dm(a,b,d,e,f,g,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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,D=0,E=0,F=0,G=0;G=i;i=i+96|0;l=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;D=G+52|0;A=G+48|0;E=G+44|0;y=G+40|0;z=G+36|0;w=G+16|0;v=G+8|0;u=G;x=G+32|0;F=G+28|0;B=G+24|0;c[l>>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]=j;c[t>>2]=k;c[D>>2]=0;c[A>>2]=0;if(((c[o>>2]|0)<0?(c[(c[l>>2]|0)+252>>2]|0)!=0:0)?(c[y>>2]=0,c[D>>2]=em(c[l>>2]|0,c[n>>2]|0,c[p>>2]|0,c[q>>2]|0,((c[r>>2]|0)!=0?1:(c[s>>2]|0)!=0)&1,y)|0,(c[D>>2]|0)==0&(c[y>>2]|0)!=0):0)c[D>>2]=fm(c[t>>2]|0,c[y>>2]|0)|0;a:do if((c[o>>2]|0)!=-1){if(!(c[D>>2]|0))c[D>>2]=gm(c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,A)|0;while(1){if(c[D>>2]|0)break a;f=ue(c[A>>2]|0)|0;c[D>>2]=f;if(100!=(f|0))break a;c[z>>2]=0;y=Ee(c[A>>2]|0,1)|0;f=w;c[f>>2]=y;c[f+4>>2]=C;f=Ee(c[A>>2]|0,2)|0;y=v;c[y>>2]=f;c[y+4>>2]=C;y=Ee(c[A>>2]|0,3)|0;f=u;c[f>>2]=y;c[f+4>>2]=C;c[x>>2]=Be(c[A>>2]|0,4)|0;c[F>>2]=Ae(c[A>>2]|0,4)|0;f=w;if(((c[f>>2]|0)!=0|(c[f+4>>2]|0)!=0)&(c[p>>2]|0)!=0){c[B>>2]=(c[r>>2]|0)!=0?v:0;c[D>>2]=hm(c[l>>2]|0,c[p>>2]|0,c[q>>2]|0,c[F>>2]|0,c[x>>2]|0,w,c[B>>2]|0)|0;if(c[D>>2]|0)break a;if((c[r>>2]|0)==0&(c[s>>2]|0)==0){k=w;y=c[k+4>>2]|0;f=v;c[f>>2]=c[k>>2];c[f+4>>2]=y}}k=w;y=v;f=u;c[D>>2]=im((c[(c[t>>2]|0)+4>>2]|0)+1|0,((c[r>>2]|0)==0?(c[s>>2]|0)==0:0)&1,c[k>>2]|0,c[k+4>>2]|0,c[y>>2]|0,c[y+4>>2]|0,c[f>>2]|0,c[f+4>>2]|0,c[F>>2]|0,c[x>>2]|0,z)|0;if(c[D>>2]|0)break a;c[D>>2]=fm(c[t>>2]|0,c[z>>2]|0)|0}}while(0);c[E>>2]=Zd(c[A>>2]|0)|0;if((c[D>>2]|0)!=101){f=c[D>>2]|0;i=G;return f|0}c[D>>2]=c[E>>2];f=c[D>>2]|0;i=G;return f|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,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;y=i;i=i+80|0;A=y+64|0;z=y+60|0;h=y+56|0;j=y+52|0;k=y+48|0;l=y+44|0;u=y+40|0;s=y+36|0;m=y+32|0;q=y+28|0;v=y+24|0;t=y+20|0;o=y+16|0;w=y+12|0;r=y+8|0;n=y+4|0;p=y;c[A>>2]=a;c[z>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;c[l>>2]=g;c[u>>2]=0;c[m>>2]=0;c[q>>2]=0;c[v>>2]=0;c[t>>2]=(c[(c[A>>2]|0)+252>>2]|0)+((c[z>>2]|0)*24|0)+4;if(c[k>>2]|0){c[o>>2]=0;c[s>>2]=c[(c[t>>2]|0)+8>>2];while(1){if(!(c[s>>2]|0))break;c[w>>2]=c[(c[s>>2]|0)+12>>2];c[r>>2]=c[(c[s>>2]|0)+16>>2];if(c[j>>2]|0){if((c[r>>2]|0)>=(c[j>>2]|0)?0==(vQ(c[w>>2]|0,c[h>>2]|0,c[j>>2]|0)|0):0)x=7}else x=7;if((x|0)==7){x=0;if((c[q>>2]|0)==(c[o>>2]|0)){c[o>>2]=(c[o>>2]|0)+16;c[n>>2]=Ld(c[m>>2]|0,c[o>>2]<<2)|0;if(!(c[n>>2]|0)){x=9;break}c[m>>2]=c[n>>2]}z=c[s>>2]|0;A=c[q>>2]|0;c[q>>2]=A+1;c[(c[m>>2]|0)+(A<<2)>>2]=z}c[s>>2]=c[c[s>>2]>>2]}if((x|0)==9){c[v>>2]=7;c[q>>2]=0}if((c[q>>2]|0)>1)uQ(c[m>>2]|0,c[q>>2]|0,4,185)}else{c[s>>2]=Ak(c[t>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;if(c[s>>2]|0){c[m>>2]=s;c[q>>2]=1}}do if((c[q>>2]|0)>0){c[p>>2]=96+((c[q>>2]|0)+1<<2);c[u>>2]=Id(c[p>>2]|0)|0;if(c[u>>2]|0){kR(c[u>>2]|0,0,c[p>>2]|0)|0;c[c[u>>2]>>2]=2147483647;c[(c[u>>2]|0)+56>>2]=(c[u>>2]|0)+96;iR(c[(c[u>>2]|0)+56>>2]|0,c[m>>2]|0,c[q>>2]<<2|0)|0;break}else{c[v>>2]=7;break}}while(0);if(!(c[k>>2]|0)){z=c[u>>2]|0;A=c[l>>2]|0;c[A>>2]=z;A=c[v>>2]|0;i=y;return A|0}Kd(c[m>>2]|0);z=c[u>>2]|0;A=c[l>>2]|0;c[A>>2]=z;A=c[v>>2]|0;i=y;return A|0}function fm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;d=j+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;do if(!((c[(c[e>>2]|0)+4>>2]|0)%16|0)){c[h>>2]=(c[(c[e>>2]|0)+4>>2]|0)+16<<2;c[g>>2]=Ld(c[c[e>>2]>>2]|0,c[h>>2]|0)|0;if(c[g>>2]|0){c[c[e>>2]>>2]=c[g>>2];break}wl(c[f>>2]|0);c[d>>2]=7;b=c[d>>2]|0;i=j;return b|0}while(0);a=c[f>>2]|0;h=(c[e>>2]|0)+4|0;b=c[h>>2]|0;c[h>>2]=b+1;c[(c[c[e>>2]>>2]|0)+(b<<2)>>2]=a;c[d>>2]=0;b=c[d>>2]|0;i=j;return b|0}function gm(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,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+24|0;h=o+20|0;j=o+16|0;k=o+12|0;l=o+8|0;n=o+4|0;m=o;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=0;d=c[g>>2]|0;if((c[k>>2]|0)<0){c[n>>2]=jl(d,13,m,0)|0;if(!(c[n>>2]|0)){k=c[m>>2]|0;f=ml(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,0)|0;Me(k,1,f,C)|0;f=c[m>>2]|0;k=ml(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,1023)|0;Me(f,2,k,C)|0}}else{c[n>>2]=jl(d,12,m,0)|0;if(!(c[n>>2]|0)){f=c[m>>2]|0;k=ml(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;Me(f,1,k,C)|0}}c[c[l>>2]>>2]=c[m>>2];i=o;return c[n>>2]|0}function hm(a,b,e,f,g,h,j){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+48|0;n=v+40|0;o=v+36|0;p=v+32|0;k=v+28|0;l=v+24|0;q=v+20|0;r=v+16|0;t=v+12|0;m=v+8|0;u=v+4|0;s=v;c[n>>2]=a;c[o>>2]=b;c[p>>2]=e;c[k>>2]=f;c[l>>2]=g;c[q>>2]=h;c[r>>2]=j;c[t>>2]=0;g=c[k>>2]|0;if((d[c[k>>2]>>0]|0)&128)Vl(g,m)|0;else c[m>>2]=d[g>>0];c[t>>2]=jm(c[o>>2]|0,c[p>>2]|0,c[k>>2]|0,c[l>>2]|0,c[q>>2]|0,c[r>>2]|0)|0;if(!((c[t>>2]|0)==0&(c[m>>2]|0)>1)){u=c[t>>2]|0;i=v;return u|0}c[u>>2]=0;c[s>>2]=0;if((c[q>>2]|0)!=0&(c[r>>2]|0)!=0?(l=c[q>>2]|0,m=c[r>>2]|0,(c[l>>2]|0)!=(c[m>>2]|0)?1:(c[l+4>>2]|0)!=(c[m+4>>2]|0)):0){m=c[q>>2]|0;c[t>>2]=am(c[n>>2]|0,c[m>>2]|0,c[m+4>>2]|0,u,s,0)|0;if(!(c[t>>2]|0))c[t>>2]=hm(c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[u>>2]|0,c[s>>2]|0,c[q>>2]|0,0)|0;Kd(c[u>>2]|0);c[q>>2]=0;c[u>>2]=0}if(!(c[t>>2]|0)){if(c[q>>2]|0){e=c[q>>2]|0;g=c[e>>2]|0;e=c[e+4>>2]|0}else{e=c[r>>2]|0;g=c[e>>2]|0;e=c[e+4>>2]|0}c[t>>2]=am(c[n>>2]|0,g,e,u,s,0)|0}if(!(c[t>>2]|0))c[t>>2]=hm(c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[u>>2]|0,c[s>>2]|0,c[q>>2]|0,c[r>>2]|0)|0;Kd(c[u>>2]|0);u=c[t>>2]|0;i=v;return u|0}function im(b,d,e,f,g,h,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;z=i;i=i+64|0;t=z+52|0;u=z+48|0;v=z+44|0;w=z+16|0;o=z+8|0;p=z;q=z+40|0;r=z+36|0;s=z+32|0;y=z+28|0;x=z+24|0;c[u>>2]=b;c[v>>2]=d;b=w;c[b>>2]=e;c[b+4>>2]=f;b=o;c[b>>2]=g;c[b+4>>2]=h;b=p;c[b>>2]=j;c[b+4>>2]=k;c[q>>2]=l;c[r>>2]=m;c[s>>2]=n;c[x>>2]=0;l=w;if((c[l>>2]|0)==0&(c[l+4>>2]|0)==0)c[x>>2]=(c[r>>2]|0)+20;c[y>>2]=Id(96+(c[x>>2]|0)|0)|0;if(!(c[y>>2]|0)){c[t>>2]=7;y=c[t>>2]|0;i=z;return y|0}e=c[y>>2]|0;f=e+96|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));c[c[y>>2]>>2]=c[u>>2];a[(c[y>>2]|0)+4>>0]=(c[v>>2]|0)!=0;l=w;u=c[l+4>>2]|0;v=(c[y>>2]|0)+8|0;c[v>>2]=c[l>>2];c[v+4>>2]=u;v=c[o+4>>2]|0;u=(c[y>>2]|0)+16|0;c[u>>2]=c[o>>2];c[u+4>>2]=v;u=c[p+4>>2]|0;v=(c[y>>2]|0)+24|0;c[v>>2]=c[p>>2];c[v+4>>2]=u;if(c[x>>2]|0){c[(c[y>>2]|0)+40>>2]=(c[y>>2]|0)+96;a[(c[y>>2]|0)+5>>0]=1;c[(c[y>>2]|0)+44>>2]=c[r>>2];iR(c[(c[y>>2]|0)+40>>2]|0,c[q>>2]|0,c[r>>2]|0)|0;e=(c[(c[y>>2]|0)+40>>2]|0)+(c[r>>2]|0)|0;f=e+20|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(f|0))}else{w=fR(c[w>>2]|0,c[w+4>>2]|0,1,0)|0;x=(c[y>>2]|0)+32|0;c[x>>2]=w;c[x+4>>2]=C}c[c[s>>2]>>2]=c[y>>2];c[t>>2]=0;y=c[t>>2]|0;i=z;return y|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 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,D=0;A=i;i=i+80|0;u=A+76|0;j=A+72|0;k=A+68|0;D=A+64|0;B=A+60|0;v=A+56|0;w=A+52|0;y=A+48|0;r=A+44|0;s=A+40|0;z=A+36|0;n=A+32|0;m=A+28|0;x=A;l=A+24|0;q=A+20|0;p=A+16|0;o=A+12|0;t=A+8|0;c[j>>2]=a;c[k>>2]=b;c[D>>2]=e;c[B>>2]=f;c[v>>2]=g;c[w>>2]=h;c[y>>2]=0;c[r>>2]=c[D>>2];c[s>>2]=(c[r>>2]|0)+(c[B>>2]|0);c[z>>2]=0;c[n>>2]=0;c[m>>2]=1;a=Ul(c[r>>2]|0,x)|0;c[r>>2]=(c[r>>2]|0)+a;a=Ul(c[r>>2]|0,x)|0;c[r>>2]=(c[r>>2]|0)+a;if((c[r>>2]|0)>>>0>(c[s>>2]|0)>>>0){c[u>>2]=267;D=c[u>>2]|0;i=A;return D|0}while(1){if((c[r>>2]|0)>>>0>=(c[s>>2]|0)>>>0){f=28;break}if(!((c[v>>2]|0)!=0?1:(c[w>>2]|0)!=0)){f=28;break}c[p>>2]=0;if(!(c[m>>2]|0)){f=c[r>>2]|0;if((d[c[r>>2]>>0]|0)&128)f=Vl(f,p)|0;else{c[p>>2]=d[f>>0];f=1}c[r>>2]=(c[r>>2]|0)+f}c[m>>2]=0;f=c[r>>2]|0;if((d[c[r>>2]>>0]|0)&128)f=Vl(f,q)|0;else{c[q>>2]=d[f>>0];f=1}c[r>>2]=(c[r>>2]|0)+f;if((c[p>>2]|0)<0|(c[q>>2]|0)<0){f=15;break}if(((c[r>>2]|0)+(c[q>>2]|0)|0)>>>0>(c[s>>2]|0)>>>0){f=15;break}if(((c[p>>2]|0)+(c[q>>2]|0)|0)>(c[n>>2]|0)){c[n>>2]=(c[p>>2]|0)+(c[q>>2]|0)<<1;c[t>>2]=Ld(c[z>>2]|0,c[n>>2]|0)|0;if(!(c[t>>2]|0)){f=18;break}c[z>>2]=c[t>>2]}iR((c[z>>2]|0)+(c[p>>2]|0)|0,c[r>>2]|0,c[q>>2]|0)|0;c[o>>2]=(c[p>>2]|0)+(c[q>>2]|0);c[r>>2]=(c[r>>2]|0)+(c[q>>2]|0);c[l>>2]=vQ(c[j>>2]|0,c[z>>2]|0,(c[o>>2]|0)>(c[k>>2]|0)?c[k>>2]|0:c[o>>2]|0)|0;do if(c[v>>2]|0){if((c[l>>2]|0)>=0){if(c[l>>2]|0)break;if((c[o>>2]|0)<=(c[k>>2]|0))break}a=x;B=c[a+4>>2]|0;D=c[v>>2]|0;c[D>>2]=c[a>>2];c[D+4>>2]=B;c[v>>2]=0}while(0);if((c[w>>2]|0)!=0&(c[l>>2]|0)<0){a=x;B=c[a+4>>2]|0;D=c[w>>2]|0;c[D>>2]=c[a>>2];c[D+4>>2]=B;c[w>>2]=0}B=x;B=gR(c[B>>2]|0,c[B+4>>2]|0,1,0)|0;D=x;c[D>>2]=B;c[D+4>>2]=C}if((f|0)==15)c[y>>2]=267;else if((f|0)==18)c[y>>2]=7;else if((f|0)==28){if(c[v>>2]|0){t=x;B=c[t+4>>2]|0;D=c[v>>2]|0;c[D>>2]=c[t>>2];c[D+4>>2]=B}if(c[w>>2]|0){B=c[x+4>>2]|0;D=c[w>>2]|0;c[D>>2]=c[x>>2];c[D+4>>2]=B}}Kd(c[z>>2]|0);c[u>>2]=c[y>>2];D=c[u>>2]|0;i=A;return D|0}function km(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;m=g+28|0;l=g+24|0;k=g+20|0;j=g+16|0;e=g+12|0;f=g+8|0;h=g+4|0;d=g;c[m>>2]=a;c[l>>2]=b;c[k>>2]=c[(c[c[m>>2]>>2]|0)+12>>2];c[j>>2]=c[(c[c[l>>2]>>2]|0)+12>>2];c[e>>2]=c[(c[c[m>>2]>>2]|0)+16>>2];c[f>>2]=c[(c[c[l>>2]>>2]|0)+16>>2];c[h>>2]=(c[e>>2]|0)<(c[f>>2]|0)?c[e>>2]|0:c[f>>2]|0;c[d>>2]=vQ(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;if(c[d>>2]|0){m=c[d>>2]|0;i=g;return m|0}c[d>>2]=(c[e>>2]|0)-(c[f>>2]|0);m=c[d>>2]|0;i=g;return m|0}function lm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;h=p+32|0;e=p+28|0;f=p+24|0;l=p+20|0;o=p+16|0;n=p+12|0;m=p+8|0;j=p+4|0;k=p;c[h>>2]=a;c[e>>2]=b;c[f>>2]=d;c[o>>2]=24274;c[n>>2]=24278;c[m>>2]=24283;c[j>>2]=-1;c[k>>2]=15;d=c[h>>2]|0;if((c[e>>2]|0)>6){je(d,24294,-1);i=p;return}if(pm(d,21347,c[c[f>>2]>>2]|0,l)|0){i=p;return}switch(c[e>>2]|0){case 6:{c[k>>2]=de(c[(c[f>>2]|0)+20>>2]|0)|0;g=6;break}case 5:{g=6;break}case 4:{g=7;break}case 3:{g=8;break}case 2:{g=9;break}default:{}}if((g|0)==6){c[j>>2]=de(c[(c[f>>2]|0)+16>>2]|0)|0;g=7}if((g|0)==7){c[m>>2]=ae(c[(c[f>>2]|0)+12>>2]|0)|0;g=8}if((g|0)==8){c[n>>2]=ae(c[(c[f>>2]|0)+8>>2]|0)|0;g=9}if((g|0)==9)c[o>>2]=ae(c[(c[f>>2]|0)+4>>2]|0)|0;if(!((c[m>>2]|0)!=0&(c[n>>2]|0)!=0&(c[o>>2]|0)!=0)){te(c[h>>2]|0);i=p;return}d=c[h>>2]|0;if(!(c[k>>2]|0)){ne(d,19266,-1,0);i=p;return}if(nn(d,c[l>>2]|0)|0){i=p;return}Sn(c[h>>2]|0,c[l>>2]|0,c[o>>2]|0,c[n>>2]|0,c[m>>2]|0,c[j>>2]|0,c[k>>2]|0);i=p;return}function mm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+12|0;h=g+4|0;f=g;c[e>>2]=a;c[g+8>>2]=b;c[h>>2]=d;if(pm(c[e>>2]|0,21355,c[c[h>>2]>>2]|0,f)|0){i=g;return}if(nn(c[e>>2]|0,c[f>>2]|0)|0){i=g;return}On(c[e>>2]|0,c[f>>2]|0);i=g;return}function nm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;e=j+20|0;k=j+12|0;h=j+8|0;f=j+4|0;g=j;c[e>>2]=a;c[j+16>>2]=b;c[k>>2]=d;if(pm(c[e>>2]|0,21373,c[c[k>>2]>>2]|0,g)|0){i=j;return}c[f>>2]=c[c[g>>2]>>2];c[h>>2]=Mn(c[f>>2]|0)|0;switch(c[h>>2]|0){case 0:{ne(c[e>>2]|0,24178,-1,0);i=j;return}case 101:{ne(c[e>>2]|0,24194,-1,0);i=j;return}default:{re(c[e>>2]|0,c[h>>2]|0);i=j;return}}}function om(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(pm(c[e>>2]|0,21363,c[c[g>>2]>>2]|0,h)|0){i=k;return}c[j>>2]=0;if((c[f>>2]|0)>1)c[j>>2]=ae(c[(c[g>>2]|0)+4>>2]|0)|0;qm(c[e>>2]|0,c[h>>2]|0,c[j>>2]|0);i=k;return}function pm(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;n=p;g=p+28|0;h=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;m=p+8|0;o=p+4|0;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;if((fe(c[k>>2]|0)|0)==4?(be(c[k>>2]|0)|0)==4:0){d=$d(c[k>>2]|0)|0;a[m>>0]=a[d>>0]|0;a[m+1>>0]=a[d+1>>0]|0;a[m+2>>0]=a[d+2>>0]|0;a[m+3>>0]=a[d+3>>0]|0;c[c[l>>2]>>2]=c[m>>2];c[g>>2]=0;d=c[g>>2]|0;i=p;return d|0}c[n>>2]=c[j>>2];c[o>>2]=Od(24149,n)|0;je(c[h>>2]|0,c[o>>2]|0,-1);Kd(c[o>>2]|0);c[g>>2]=1;d=c[g>>2]|0;i=p;return d|0}function qm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;g=k+12|0;f=k+8|0;h=k+4|0;j=k;c[e>>2]=a;c[g>>2]=b;c[f>>2]=d;c[h>>2]=c[c[g>>2]>>2];if(c[f>>2]|0)c[j>>2]=c[f>>2];else c[j>>2]=24084;e=c[e>>2]|0;if(c[(c[g>>2]|0)+12>>2]|0){rm(e,c[g>>2]|0,c[j>>2]|0);sm(c[h>>2]|0);i=k;return}else{ge(e,19266,0,0);i=k;return}}function rm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=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;u=i;i=i+80|0;f=u+76|0;g=u+72|0;h=u+68|0;q=u;o=u+64|0;p=u+60|0;k=u+56|0;j=u+52|0;r=u+48|0;n=u+44|0;l=u+40|0;s=u+36|0;m=u+32|0;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;c[o>>2]=c[c[g>>2]>>2];c[p>>2]=0;c[k>>2]=0;c[j>>2]=0;c[r>>2]=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;c[q+24>>2]=0;c[q+28>>2]=0;c[q>>2]=c[g>>2];c[q+4>>2]=c[(c[o>>2]|0)+24>>2];if((c[(c[g>>2]|0)+92>>2]|0)!=0?(yQ(c[(c[(c[g>>2]|0)+92>>2]|0)+12>>2]|0,c[h>>2]|0)|0)!=0:0){tm(c[(c[g>>2]|0)+92>>2]|0);c[(c[g>>2]|0)+92>>2]=0}if(!(c[(c[g>>2]|0)+92>>2]|0)){c[n>>2]=0;e=um(c[(c[g>>2]|0)+12>>2]|0)|0;c[(c[g>>2]|0)+20>>2]=e;c[q+8>>2]=c[(c[g>>2]|0)+20>>2];c[l>>2]=0;while(1){if(!(a[(c[h>>2]|0)+(c[l>>2]|0)>>0]|0))break;c[s>>2]=0;if(vm(c[o>>2]|0,a[(c[h>>2]|0)+(c[l>>2]|0)>>0]|0,s)|0){t=8;break}e=wm(q,a[(c[h>>2]|0)+(c[l>>2]|0)>>0]|0)|0;c[n>>2]=(c[n>>2]|0)+e;c[l>>2]=(c[l>>2]|0)+1}if((t|0)==8){je(c[f>>2]|0,c[s>>2]|0,-1);Kd(c[s>>2]|0);i=u;return}t=xm(c[n>>2]|0,c[h>>2]|0)|0;c[(c[g>>2]|0)+92>>2]=t;if(!(c[(c[g>>2]|0)+92>>2]|0))c[p>>2]=7;c[(c[g>>2]|0)+88>>2]=1;c[k>>2]=1}if((c[p>>2]|0)==0?(c[r>>2]=ym(c[(c[g>>2]|0)+92>>2]|0,j)|0,(c[r>>2]|0)==0):0)c[p>>2]=7;if((c[p>>2]|0)==0?(c[q+28>>2]=c[j>>2],c[q+8>>2]=c[(c[g>>2]|0)+20>>2],c[p>>2]=zm(c[g>>2]|0,c[k>>2]|0,q,c[h>>2]|0)|0,(c[k>>2]|0)!=0):0)Am(c[(c[g>>2]|0)+92>>2]|0);if(!(c[p>>2]|0)){c[m>>2]=c[(c[(c[g>>2]|0)+92>>2]|0)+4>>2]<<2;ge(c[f>>2]|0,c[j>>2]|0,c[m>>2]|0,c[r>>2]|0);i=u;return}re(c[f>>2]|0,c[p>>2]|0);if(!(c[r>>2]|0)){i=u;return}Qb[c[r>>2]&255](c[j>>2]|0);i=u;return}function sm(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Ve(c[(c[d>>2]|0)+244>>2]|0)|0;c[(c[d>>2]|0)+244>>2]=0;i=b;return}function tm(b){b=b|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=b;if(!(c[e>>2]|0)){i=f;return}a[c[e>>2]>>0]=0;if(d[c[e>>2]>>0]|0){i=f;return}if(d[(c[e>>2]|0)+1>>0]|0){i=f;return}if(d[(c[e>>2]|0)+2>>0]|0){i=f;return}Kd(c[e>>2]|0);i=f;return}function um(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=0;Hm(c[e>>2]|0,153,b)|0;i=d;return c[b>>2]|0}function vm(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;l=m;g=m+12|0;h=m+8|0;j=m+16|0;k=m+4|0;c[h>>2]=b;a[j>>0]=e;c[k>>2]=f;do if((a[j>>0]|0)!=112?(a[j>>0]|0)!=99:0){if((a[j>>0]|0)==110?(d[(c[h>>2]|0)+228>>0]|0)!=0:0)break;if((a[j>>0]|0)==97?(d[(c[h>>2]|0)+228>>0]|0)!=0:0)break;if((a[j>>0]|0)==108?(d[(c[h>>2]|0)+230>>0]|0)!=0:0)break;if((((a[j>>0]|0)!=115?(a[j>>0]|0)!=120:0)?(a[j>>0]|0)!=121:0)?(a[j>>0]|0)!=98:0){f=c[k>>2]|0;c[l>>2]=a[j>>0];zk(f,24114,l);c[g>>2]=1;l=c[g>>2]|0;i=m;return l|0}}while(0);c[g>>2]=0;l=c[g>>2]|0;i=m;return l|0}function wm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+4|0;h=g+8|0;f=g;c[e>>2]=b;a[h>>0]=d;switch(a[h>>0]|0){case 99:case 112:case 110:{c[f>>2]=1;break}case 115:case 108:case 97:{c[f>>2]=c[(c[e>>2]|0)+4>>2];break}case 121:{c[f>>2]=_(c[(c[e>>2]|0)+4>>2]|0,c[(c[e>>2]|0)+8>>2]|0)|0;break}case 98:{c[f>>2]=_(c[(c[e>>2]|0)+8>>2]|0,((c[(c[e>>2]|0)+4>>2]|0)+31|0)/32|0)|0;break}default:c[f>>2]=(_(c[(c[e>>2]|0)+4>>2]|0,c[(c[e>>2]|0)+8>>2]|0)|0)*3}i=g;return c[f>>2]|0}function xm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;j=k+8|0;g=k+4|0;h=k;c[e>>2]=b;c[f>>2]=d;c[g>>2]=((c[e>>2]<<1)+1<<2)+20;c[h>>2]=BQ(c[f>>2]|0)|0;c[j>>2]=Id((c[g>>2]|0)+(c[h>>2]|0)+1|0)|0;if(!(c[j>>2]|0)){d=c[j>>2]|0;i=k;return d|0}kR(c[j>>2]|0,0,c[g>>2]|0)|0;c[(c[j>>2]|0)+16>>2]=(c[j>>2]|0)+16+4-(c[j>>2]|0);c[(c[j>>2]|0)+16+(1+(c[e>>2]|0)<<2)>>2]=(c[(c[j>>2]|0)+16>>2]|0)+((c[e>>2]|0)+1<<2);c[(c[j>>2]|0)+4>>2]=c[e>>2];c[(c[j>>2]|0)+12>>2]=(c[j>>2]|0)+(c[g>>2]|0);iR(c[(c[j>>2]|0)+12>>2]|0,c[f>>2]|0,(c[h>>2]|0)+1|0)|0;a[c[j>>2]>>0]=1;d=c[j>>2]|0;i=k;return d|0}function ym(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[f>>2]=b;c[g>>2]=e;c[j>>2]=0;c[h>>2]=0;e=c[f>>2]|0;do if(d[(c[f>>2]|0)+1>>0]|0){b=c[f>>2]|0;if(!(d[e+2>>0]|0)){a[b+2>>0]=1;c[h>>2]=(c[f>>2]|0)+16+((c[(c[f>>2]|0)+4>>2]|0)+2<<2);c[j>>2]=152;break}c[h>>2]=Id(c[b+4>>2]<<2)|0;if((c[h>>2]|0)!=0?(c[j>>2]=148,(c[(c[f>>2]|0)+8>>2]|0)!=0):0)iR(c[h>>2]|0,(c[f>>2]|0)+16+4|0,c[(c[f>>2]|0)+4>>2]<<2|0)|0}else{a[e+1>>0]=1;c[h>>2]=(c[f>>2]|0)+16+4;c[j>>2]=152}while(0);c[c[g>>2]>>2]=c[h>>2];i=k;return c[j>>2]|0}function zm(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=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;B=i;i=i+96|0;g=B+92|0;h=B+88|0;j=B+84|0;k=B+80|0;A=B+76|0;n=B+72|0;y=B+68|0;z=B+64|0;r=B+24|0;s=B+16|0;l=B+60|0;o=B+56|0;q=B+52|0;t=B+8|0;x=B+48|0;p=B+44|0;m=B+40|0;u=B;v=B+36|0;w=B+32|0;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;c[A>>2]=0;c[y>>2]=c[c[g>>2]>>2];c[z>>2]=0;c[n>>2]=0;while(1){if(c[A>>2]|0){g=31;break}if(!(a[(c[k>>2]|0)+(c[n>>2]|0)>>0]|0)){g=31;break}a[(c[j>>2]|0)+24>>0]=a[(c[k>>2]|0)+(c[n>>2]|0)>>0]|0;a:do switch(a[(c[k>>2]|0)+(c[n>>2]|0)>>0]|0){case 112:{if(c[h>>2]|0)c[c[(c[j>>2]|0)+28>>2]>>2]=c[(c[j>>2]|0)+8>>2];break}case 99:{if(c[h>>2]|0)c[c[(c[j>>2]|0)+28>>2]>>2]=c[(c[j>>2]|0)+4>>2];break}case 110:{if(c[h>>2]|0){f=r;c[f>>2]=0;c[f+4>>2]=0;c[A>>2]=Bm(c[y>>2]|0,z,r,0)|0;c[c[(c[j>>2]|0)+28>>2]>>2]=c[r>>2]}break}case 97:{if((c[h>>2]|0)!=0?(c[A>>2]=Bm(c[y>>2]|0,z,s,l)|0,(c[A>>2]|0)==0):0){c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[(c[j>>2]|0)+4>>2]|0))break a;f=Ul(c[l>>2]|0,t)|0;c[l>>2]=(c[l>>2]|0)+f;f=c[t>>2]|0;e=s;e=pR(c[e>>2]|0,c[e+4>>2]|0,2,0)|0;e=gR(f|0,0,e|0,C|0)|0;f=s;f=pR(e|0,C|0,c[f>>2]|0,c[f+4>>2]|0)|0;c[q>>2]=f;c[(c[(c[j>>2]|0)+28>>2]|0)+(c[o>>2]<<2)>>2]=c[q>>2];c[o>>2]=(c[o>>2]|0)+1}}break}case 108:{c[x>>2]=0;f=(c[g>>2]|0)+32|0;c[A>>2]=Cm(c[y>>2]|0,c[f>>2]|0,c[f+4>>2]|0,x)|0;b:do if(!(c[A>>2]|0)){c[m>>2]=Ae(c[x>>2]|0,0)|0;c[p>>2]=0;while(1){if((c[p>>2]|0)>=(c[(c[j>>2]|0)+4>>2]|0))break b;f=Ul(c[m>>2]|0,u)|0;c[m>>2]=(c[m>>2]|0)+f;c[(c[(c[j>>2]|0)+28>>2]|0)+(c[p>>2]<<2)>>2]=c[u>>2];c[p>>2]=(c[p>>2]|0)+1}}while(0);Zd(c[x>>2]|0)|0;break}case 115:{c[A>>2]=Dm(c[g>>2]|0,0,0)|0;if(!(c[A>>2]|0))c[A>>2]=Em(c[g>>2]|0,c[j>>2]|0)|0;break}case 121:case 98:{c[v>>2]=(wm(c[j>>2]|0,a[(c[k>>2]|0)+(c[n>>2]|0)>>0]|0)|0)<<2;kR(c[(c[j>>2]|0)+28>>2]|0,0,c[v>>2]|0)|0;Fm(c[(c[g>>2]|0)+12>>2]|0,c[j>>2]|0);break}default:{c[w>>2]=c[(c[g>>2]|0)+12>>2];c[A>>2]=Dm(c[g>>2]|0,0,0)|0;if(!(c[A>>2]|0)){if(c[h>>2]|0){if((c[(c[g>>2]|0)+24>>2]|0)!=0?(c[A>>2]=Bm(c[y>>2]|0,z,(c[j>>2]|0)+16|0,0)|0,(c[A>>2]|0)!=0):0)break a;c[A>>2]=Hm(c[w>>2]|0,154,c[j>>2]|0)|0;Im(c[g>>2]|0,A)|0;if(c[A>>2]|0)break a}Hm(c[w>>2]|0,155,c[j>>2]|0)|0}}}while(0);e=wm(c[j>>2]|0,a[(c[k>>2]|0)+(c[n>>2]|0)>>0]|0)|0;f=(c[j>>2]|0)+28|0;c[f>>2]=(c[f>>2]|0)+(e<<2);c[n>>2]=(c[n>>2]|0)+1}if((g|0)==31){Zd(c[z>>2]|0)|0;i=B;return c[A>>2]|0}return 0}function Am(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+8>>2]=1;iR((c[d>>2]|0)+16+(2+(c[(c[d>>2]|0)+4>>2]|0)<<2)|0,(c[d>>2]|0)+16+4|0,c[(c[d>>2]|0)+4>>2]<<2|0)|0;i=b;return}function Bm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;f=p+36|0;g=p+32|0;h=p+28|0;j=p+24|0;k=p+20|0;n=p+16|0;l=p+12|0;m=p;o=p+8|0;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;if((c[c[h>>2]>>2]|0)==0?(c[o>>2]=Jn(c[g>>2]|0,c[h>>2]|0)|0,(c[o>>2]|0)!=0):0){c[f>>2]=c[o>>2];o=c[f>>2]|0;i=p;return o|0}c[n>>2]=c[c[h>>2]>>2];c[l>>2]=Ae(c[n>>2]|0,0)|0;o=Ul(c[l>>2]|0,m)|0;c[l>>2]=(c[l>>2]|0)+o;o=m;if((c[o>>2]|0)==0&(c[o+4>>2]|0)==0){c[f>>2]=267;o=c[f>>2]|0;i=p;return o|0}o=c[j>>2]|0;c[o>>2]=c[m>>2];c[o+4>>2]=0;if(c[k>>2]|0)c[c[k>>2]>>2]=c[l>>2];c[f>>2]=0;o=c[f>>2]|0;i=p;return o|0}function Cm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;h=f+12|0;j=f;g=f+8|0;c[h>>2]=a;a=j;c[a>>2]=b;c[a+4>>2]=d;c[g>>2]=e;e=j;e=In(c[h>>2]|0,c[e>>2]|0,c[e+4>>2]|0,c[g>>2]|0)|0;i=f;return e|0}function Dm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;k=j+24|0;e=j+20|0;f=j+16|0;g=j+12|0;h=j;c[k>>2]=a;c[e>>2]=b;c[f>>2]=d;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h>>2]=c[k>>2];c[g>>2]=Hm(c[(c[k>>2]|0)+12>>2]|0,156,h)|0;if(c[e>>2]|0)c[c[e>>2]>>2]=c[h+4>>2];if(!(c[f>>2]|0)){k=c[g>>2]|0;i=j;return k|0}c[c[f>>2]>>2]=c[h+8>>2];k=c[g>>2]|0;i=j;return k|0}function Em(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+64|0;q=t+56|0;d=t+52|0;e=t+48|0;r=t+44|0;f=t+40|0;g=t+36|0;l=t+32|0;o=t+28|0;h=t+24|0;j=t+20|0;s=t+16|0;n=t+12|0;m=t+8|0;k=t+4|0;p=t;c[d>>2]=a;c[e>>2]=b;c[l>>2]=0;c[r>>2]=Id(c[(c[d>>2]|0)+20>>2]<<4)|0;if(!(c[r>>2]|0)){c[q>>2]=7;s=c[q>>2]|0;i=t;return s|0}kR(c[r>>2]|0,0,c[(c[d>>2]|0)+20>>2]<<4|0)|0;Hm(c[(c[d>>2]|0)+12>>2]|0,157,c[r>>2]|0)|0;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[e>>2]|0)+8>>2]|0))break;c[o>>2]=(c[r>>2]|0)+(c[f>>2]<<4);c[l>>2]=(c[l>>2]|0)-(c[(c[(c[c[o>>2]>>2]|0)+20>>2]|0)+64>>2]|0);c[(c[o>>2]|0)+4>>2]=c[l>>2];c[f>>2]=(c[f>>2]|0)+1}c[g>>2]=0;a:while(1){if((c[g>>2]|0)>=(c[(c[e>>2]|0)+4>>2]|0)){d=33;break}c[h>>2]=0;c[j>>2]=0;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[e>>2]|0)+8>>2]|0))break;c[n>>2]=(c[r>>2]|0)+(c[f>>2]<<4);c[s>>2]=Km(c[d>>2]|0,c[c[n>>2]>>2]|0,c[g>>2]|0,(c[n>>2]|0)+8|0)|0;if(c[s>>2]|0){d=11;break a}if(c[(c[n>>2]|0)+8>>2]|0){c[(c[n>>2]|0)+12>>2]=c[(c[n>>2]|0)+4>>2];Gn((c[r>>2]|0)+(c[f>>2]<<4)|0)|0;c[j>>2]=(c[j>>2]|0)+1}c[f>>2]=(c[f>>2]|0)+1}while(1){if((c[j>>2]|0)<=0)break;c[m>>2]=0;c[k>>2]=0;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[e>>2]|0)+8>>2]|0))break;c[p>>2]=(c[r>>2]|0)+(c[f>>2]<<4);if(c[(c[p>>2]|0)+8>>2]|0){if(!((c[m>>2]|0)!=0?(c[(c[p>>2]|0)+12>>2]|0)>=(c[(c[m>>2]|0)+12>>2]|0):0))c[m>>2]=c[p>>2];if((c[k>>2]|0)!=0?(c[(c[p>>2]|0)+12>>2]|0)!=(c[(c[p>>2]|0)+-16+12>>2]|0):0)c[k>>2]=1;else c[k>>2]=(c[k>>2]|0)+1;if((c[k>>2]|0)>(c[h>>2]|0))c[h>>2]=c[k>>2]}else c[k>>2]=0;c[f>>2]=(c[f>>2]|0)+1}if(!(Gn(c[m>>2]|0)|0))continue;c[j>>2]=(c[j>>2]|0)+-1}c[(c[(c[e>>2]|0)+28>>2]|0)+(c[g>>2]<<2)>>2]=c[h>>2];c[g>>2]=(c[g>>2]|0)+1}if((d|0)==11){c[q>>2]=c[s>>2];s=c[q>>2]|0;i=t;return s|0}else if((d|0)==33){Kd(c[r>>2]|0);c[q>>2]=0;s=c[q>>2]|0;i=t;return s|0}return 0}function Fm(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=a;c[f>>2]=b;if(d[(c[e>>2]|0)+32>>0]|0){i=g;return}b=(c[e>>2]|0)+24|0;a=(c[c[f>>2]>>2]|0)+32|0;if(!((c[b>>2]|0)==(c[a>>2]|0)?(c[b+4>>2]|0)==(c[a+4>>2]|0):0)){i=g;return}b=c[e>>2]|0;if(c[(c[e>>2]|0)+12>>2]|0){Fm(c[b+12>>2]|0,c[f>>2]|0);Fm(c[(c[e>>2]|0)+16>>2]|0,c[f>>2]|0);i=g;return}else{En(b,c[f>>2]|0);i=g;return}}function Gm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;g=e+12|0;h=e+8|0;j=e+4|0;f=e;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[f>>2]=c[j>>2];a=_((c[h>>2]|0)*3|0,c[(c[f>>2]|0)+4>>2]|0)|0;a=Bn(c[c[f>>2]>>2]|0,c[g>>2]|0,(c[(c[f>>2]|0)+28>>2]|0)+(a<<2)|0)|0;i=e;return a|0}function Hm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;j=e+12|0;g=e+8|0;f=e+4|0;h=e;c[j>>2]=a;c[g>>2]=b;c[f>>2]=d;c[h>>2]=0;b=An(c[j>>2]|0,h,c[g>>2]|0,c[f>>2]|0)|0;i=e;return b|0}function Im(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;g=h+4|0;f=h;c[d>>2]=a;c[e>>2]=b;c[g>>2]=c[c[e>>2]>>2];c[f>>2]=0;if(c[g>>2]|0){b=c[g>>2]|0;b=(b|0)==0;g=c[f>>2]|0;g=(g|0)!=0;g=b?g:0;g=g&1;i=h;return g|0}if((c[(c[d>>2]|0)+24>>2]|0)!=0?(c[g>>2]=nn(0,c[d>>2]|0)|0,(c[g>>2]|0)==0):0)c[g>>2]=on(c[d>>2]|0)|0;c[f>>2]=0==(pn(c[d>>2]|0,c[(c[d>>2]|0)+12>>2]|0,g)|0)&1;qn(c[d>>2]|0);c[c[e>>2]>>2]=c[g>>2];b=c[g>>2]|0;b=(b|0)==0;g=c[f>>2]|0;g=(g|0)!=0;g=b?g:0;g=g&1;i=h;return g|0}function Jm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+32|0;e=l+28|0;m=l+24|0;n=l+20|0;k=l+16|0;h=l+12|0;g=l+8|0;f=l+4|0;j=l;c[e>>2]=a;c[m>>2]=b;c[n>>2]=d;c[k>>2]=0;c[h>>2]=c[n>>2];c[g>>2]=(_(c[m>>2]|0,c[(c[h>>2]|0)+4>>2]|0)|0)*3;c[f>>2]=0;while(1){if(!((c[f>>2]|0)<(c[(c[h>>2]|0)+4>>2]|0)?(c[k>>2]|0)==0:0))break;c[k>>2]=Km(c[c[h>>2]>>2]|0,c[e>>2]|0,c[f>>2]|0,j)|0;if(c[j>>2]|0){n=Lm(j)|0;c[(c[(c[h>>2]|0)+28>>2]|0)+((c[g>>2]|0)+((c[f>>2]|0)*3|0)<<2)>>2]=n}else c[(c[(c[h>>2]|0)+28>>2]|0)+((c[g>>2]|0)+((c[f>>2]|0)*3|0)<<2)>>2]=0;c[f>>2]=(c[f>>2]|0)+1}i=l;return c[k>>2]|0}function Fp(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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,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;ha=i;i=i+288|0;V=ha+40|0;U=ha+32|0;T=ha+24|0;q=ha+16|0;r=ha+8|0;p=ha;v=ha+280|0;w=ha+276|0;ia=ha+272|0;k=ha+268|0;x=ha+264|0;da=ha+260|0;y=ha+256|0;S=ha+252|0;ea=ha+248|0;ga=ha+244|0;E=ha+240|0;L=ha+236|0;F=ha+232|0;R=ha+228|0;M=ha+224|0;Z=ha+220|0;N=ha+216|0;P=ha+212|0;G=ha+208|0;z=ha+204|0;fa=ha+200|0;O=ha+196|0;A=ha+192|0;D=ha+188|0;C=ha+184|0;ba=ha+180|0;X=ha+176|0;ca=ha+172|0;Y=ha+168|0;_=ha+164|0;B=ha+160|0;Q=ha+156|0;s=ha+152|0;n=ha+148|0;t=ha+144|0;l=ha+80|0;m=ha+76|0;o=ha+72|0;H=ha+68|0;I=ha+64|0;W=ha+60|0;J=ha+56|0;K=ha+52|0;aa=ha+48|0;$=ha+44|0;c[v>>2]=b;c[w>>2]=d;c[ia>>2]=e;c[k>>2]=f;c[x>>2]=g;c[da>>2]=h;c[y>>2]=j;c[S>>2]=c[ia>>2];c[ea>>2]=0;c[ga>>2]=0;c[R>>2]=0;c[M>>2]=0;c[G>>2]=(a[(c[c[x>>2]>>2]|0)+3>>0]|0)==52&1;c[fa>>2]=0;c[O>>2]=0;c[A>>2]=0;c[D>>2]=0;c[C>>2]=0;c[ba>>2]=0;c[X>>2]=0;c[ca>>2]=0;c[Y>>2]=0;c[_>>2]=0;c[B>>2]=0;c[Q>>2]=0;c[N>>2]=(BQ(c[(c[x>>2]|0)+4>>2]|0)|0)+1;c[P>>2]=(BQ(c[(c[x>>2]|0)+8>>2]|0)|0)+1;c[L>>2]=(c[k>>2]|0)-2<<2;c[z>>2]=Id(c[L>>2]|0)|0;if(c[z>>2]|0){kR(c[z>>2]|0,0,c[L>>2]|0)|0;c[B>>2]=Id(c[L>>2]|0)|0}if(c[B>>2]|0)kR(c[B>>2]|0,0,c[L>>2]|0)|0;do if((c[z>>2]|0)!=0&(c[B>>2]|0)!=0){c[E>>2]=3;while(1){if(c[ga>>2]|0)break;if((c[E>>2]|0)>=(c[k>>2]|0))break;c[s>>2]=c[(c[x>>2]|0)+(c[E>>2]<<2)>>2];if((((c[fa>>2]|0)==0?(BQ(c[s>>2]|0)|0)>>>0>8:0)?0==(zd(c[s>>2]|0,24853,8)|0):0)?0==(Gp(a[(c[s>>2]|0)+8>>0]|0)|0):0)c[ga>>2]=Hp(c[S>>2]|0,(c[s>>2]|0)+9|0,fa,c[y>>2]|0)|0;else u=15;do if((u|0)==15){u=0;if((c[G>>2]|0)!=0?(Ip(c[s>>2]|0,n,t)|0)!=0:0){f=l;g=2100;d=f+64|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(d|0));if(!(c[t>>2]|0)){c[ga>>2]=7;break}c[m>>2]=0;while(1){if((c[m>>2]|0)>=8)break;c[o>>2]=l+(c[m>>2]<<3);if((c[n>>2]|0)==(c[(c[o>>2]|0)+4>>2]|0)?(zd(c[s>>2]|0,c[c[o>>2]>>2]|0,c[(c[o>>2]|0)+4>>2]|0)|0)==0:0)break;c[m>>2]=(c[m>>2]|0)+1}a:do if((c[m>>2]|0)==8){ia=c[y>>2]|0;c[p>>2]=c[s>>2];zk(ia,24862,p);c[ga>>2]=1}else switch(c[m>>2]|0){case 0:{if(!((BQ(c[t>>2]|0)|0)==4?(zd(c[t>>2]|0,21382,4)|0)==0:0)){ia=c[y>>2]|0;c[r>>2]=c[t>>2];zk(ia,24889,r);c[ga>>2]=1}c[D>>2]=1;break a}case 1:{Kd(c[ba>>2]|0);c[ba>>2]=c[t>>2];c[t>>2]=0;break a}case 2:{Kd(c[X>>2]|0);c[X>>2]=c[t>>2];c[t>>2]=0;break a}case 3:{Kd(c[ca>>2]|0);c[ca>>2]=c[t>>2];c[t>>2]=0;break a}case 4:{if(!((BQ(c[t>>2]|0)|0)==3?(zd(c[t>>2]|0,24916,3)|0)==0:0))u=36;do if((u|0)==36){u=0;if((BQ(c[t>>2]|0)|0)==4?(zd(c[t>>2]|0,24920,4)|0)==0:0)break;ia=c[y>>2]|0;c[q>>2]=c[t>>2];zk(ia,24925,q);c[ga>>2]=1}while(0);if((a[c[t>>2]>>0]|0)==100)f=1;else f=(a[c[t>>2]>>0]|0)==68;c[C>>2]=f&1;break a}case 5:{Kd(c[Y>>2]|0);c[Y>>2]=c[t>>2];c[t>>2]=0;break a}case 6:{Kd(c[_>>2]|0);c[_>>2]=c[t>>2];c[t>>2]=0;break a}case 7:{j=c[t>>2]|0;ia=c[Q>>2]|0;c[Q>>2]=ia+1;c[(c[B>>2]|0)+(ia<<2)>>2]=j;c[t>>2]=0;break a}default:break a}while(0);Kd(c[t>>2]|0);break}j=(BQ(c[s>>2]|0)|0)+1|0;c[R>>2]=(c[R>>2]|0)+j;j=c[s>>2]|0;ia=c[M>>2]|0;c[M>>2]=ia+1;c[(c[z>>2]|0)+(ia<<2)>>2]=j}while(0);c[E>>2]=(c[E>>2]|0)+1}b:do if(((c[ga>>2]|0)==0&(c[Y>>2]|0)!=0?(Kd(c[X>>2]|0),Kd(c[ca>>2]|0),c[X>>2]=0,c[ca>>2]=0,(c[M>>2]|0)==0):0)?(Kd(c[z>>2]|0),c[z>>2]=0,c[ga>>2]=Jp(c[w>>2]|0,c[(c[x>>2]|0)+4>>2]|0,c[Y>>2]|0,z,M,R,c[y>>2]|0)|0,(c[ga>>2]|0)==0&(c[_>>2]|0)!=0):0){c[H>>2]=0;while(1){if((c[H>>2]|0)>=(c[M>>2]|0))break b;ia=(Td(c[_>>2]|0,c[(c[z>>2]|0)+(c[H>>2]<<2)>>2]|0)|0)==0;f=c[H>>2]|0;if(ia)break;c[H>>2]=f+1}c[I>>2]=f;while(1){if((c[I>>2]|0)>=(c[M>>2]|0))break;c[(c[z>>2]|0)+(c[I>>2]<<2)>>2]=c[(c[z>>2]|0)+((c[I>>2]|0)+1<<2)>>2];c[I>>2]=(c[I>>2]|0)+1}c[M>>2]=(c[M>>2]|0)+-1}while(0);if(!(c[ga>>2]|0)){if(!(c[M>>2]|0)){c[c[z>>2]>>2]=24948;c[R>>2]=8;c[M>>2]=1}if((c[fa>>2]|0)==0?(c[ga>>2]=Hp(c[S>>2]|0,21308,fa,c[y>>2]|0)|0,(c[ga>>2]|0)!=0):0)break;c[ga>>2]=Kp(c[ba>>2]|0,O,A)|0;if((c[ga>>2]|0)==1){ia=c[y>>2]|0;c[T>>2]=c[ba>>2];zk(ia,24956,T)}if(!(c[ga>>2]|0)){c[L>>2]=280+(c[M>>2]<<2)+((c[O>>2]|0)*24|0)+(c[M>>2]|0)+(c[P>>2]|0)+(c[N>>2]|0)+(c[R>>2]|0);c[ea>>2]=Id(c[L>>2]|0)|0; -if(!(c[ea>>2]|0)){c[ga>>2]=7;break}kR(c[ea>>2]|0,0,c[L>>2]|0)|0;c[(c[ea>>2]|0)+12>>2]=c[w>>2];c[(c[ea>>2]|0)+24>>2]=c[M>>2];c[(c[ea>>2]|0)+260>>2]=0;c[(c[ea>>2]|0)+28>>2]=(c[ea>>2]|0)+280;c[(c[ea>>2]|0)+36>>2]=c[fa>>2];c[(c[ea>>2]|0)+256>>2]=1048576;a[(c[ea>>2]|0)+230>>0]=((c[G>>2]|0)!=0?(c[D>>2]|0)==0:0)&1;a[(c[ea>>2]|0)+229>>0]=c[G>>2];a[(c[ea>>2]|0)+228>>0]=c[G>>2];a[(c[ea>>2]|0)+231>>0]=c[C>>2];c[(c[ea>>2]|0)+48>>2]=255;c[(c[ea>>2]|0)+40>>2]=c[Y>>2];c[(c[ea>>2]|0)+44>>2]=c[_>>2];c[Y>>2]=0;c[_>>2]=0;c[(c[ea>>2]|0)+252>>2]=(c[(c[ea>>2]|0)+28>>2]|0)+(c[M>>2]<<2);iR(c[(c[ea>>2]|0)+252>>2]|0,c[A>>2]|0,(c[O>>2]|0)*24|0)|0;c[(c[ea>>2]|0)+248>>2]=c[O>>2];c[E>>2]=0;while(1){if((c[E>>2]|0)>=(c[O>>2]|0))break;ek((c[(c[ea>>2]|0)+252>>2]|0)+((c[E>>2]|0)*24|0)+4|0,1,1);c[E>>2]=(c[E>>2]|0)+1}c[(c[ea>>2]|0)+32>>2]=(c[(c[ea>>2]|0)+252>>2]|0)+((c[O>>2]|0)*24|0);c[Z>>2]=(c[(c[ea>>2]|0)+32>>2]|0)+(c[M>>2]|0);c[(c[ea>>2]|0)+20>>2]=c[Z>>2];iR(c[Z>>2]|0,c[(c[x>>2]|0)+8>>2]|0,c[P>>2]|0)|0;c[Z>>2]=(c[Z>>2]|0)+(c[P>>2]|0);c[(c[ea>>2]|0)+16>>2]=c[Z>>2];iR(c[Z>>2]|0,c[(c[x>>2]|0)+4>>2]|0,c[N>>2]|0)|0;c[Z>>2]=(c[Z>>2]|0)+(c[N>>2]|0);c[F>>2]=0;while(1){if((c[F>>2]|0)>=(c[M>>2]|0))break;c[J>>2]=0;c[W>>2]=Lp(c[(c[z>>2]|0)+(c[F>>2]<<2)>>2]|0,J)|0;iR(c[Z>>2]|0,c[W>>2]|0,c[J>>2]|0)|0;a[(c[Z>>2]|0)+(c[J>>2]|0)>>0]=0;Ik(c[Z>>2]|0);c[(c[(c[ea>>2]|0)+28>>2]|0)+(c[F>>2]<<2)>>2]=c[Z>>2];c[Z>>2]=(c[Z>>2]|0)+((c[J>>2]|0)+1);c[F>>2]=(c[F>>2]|0)+1}c[F>>2]=0;while(1){if((c[F>>2]|0)>=(c[M>>2]|0))break;c[K>>2]=BQ(c[(c[(c[ea>>2]|0)+28>>2]|0)+(c[F>>2]<<2)>>2]|0)|0;c[E>>2]=0;while(1){if((c[E>>2]|0)>=(c[Q>>2]|0))break;c[aa>>2]=c[(c[B>>2]|0)+(c[E>>2]<<2)>>2];if(((c[aa>>2]|0)!=0?(ia=c[K>>2]|0,(ia|0)==(BQ(c[aa>>2]|0)|0)):0)?0==(zd(c[(c[(c[ea>>2]|0)+28>>2]|0)+(c[F>>2]<<2)>>2]|0,c[aa>>2]|0,c[K>>2]|0)|0):0){a[(c[(c[ea>>2]|0)+32>>2]|0)+(c[F>>2]|0)>>0]=1;Kd(c[aa>>2]|0);c[(c[B>>2]|0)+(c[E>>2]<<2)>>2]=0}c[E>>2]=(c[E>>2]|0)+1}c[F>>2]=(c[F>>2]|0)+1}c[E>>2]=0;while(1){if((c[E>>2]|0)>=(c[Q>>2]|0))break;if(c[(c[B>>2]|0)+(c[E>>2]<<2)>>2]|0){ia=c[y>>2]|0;c[U>>2]=c[(c[B>>2]|0)+(c[E>>2]<<2)>>2];zk(ia,24991,U);c[ga>>2]=1}c[E>>2]=(c[E>>2]|0)+1}if((c[ga>>2]|0)==0?((c[X>>2]|0)==0|0)!=((c[ca>>2]|0)==0|0):0){c[$>>2]=(c[X>>2]|0)==0?25010:25019;c[ga>>2]=1;ia=c[y>>2]|0;c[V>>2]=c[$>>2];zk(ia,25030,V)}ia=Mp(c[ea>>2]|0,c[ca>>2]|0,ga)|0;c[(c[ea>>2]|0)+216>>2]=ia;ia=Np(c[ea>>2]|0,c[X>>2]|0,ga)|0;c[(c[ea>>2]|0)+220>>2]=ia;if(!(c[ga>>2]|0)){if(c[v>>2]|0)c[ga>>2]=Op(c[ea>>2]|0)|0;if(!((c[G>>2]|0)!=0|(c[v>>2]|0)!=0))a[(c[ea>>2]|0)+229>>0]=2;Pp(ga,c[ea>>2]|0);c[(c[ea>>2]|0)+224>>2]=(c[(c[ea>>2]|0)+236>>2]|0)-35;Qp(ga,c[ea>>2]|0)}}}}else c[ga>>2]=7;while(0);Kd(c[ba>>2]|0);Kd(c[A>>2]|0);Kd(c[X>>2]|0);Kd(c[ca>>2]|0);Kd(c[Y>>2]|0);Kd(c[_>>2]|0);c[E>>2]=0;while(1){if((c[E>>2]|0)>=(c[Q>>2]|0))break;Kd(c[(c[B>>2]|0)+(c[E>>2]<<2)>>2]|0);c[E>>2]=(c[E>>2]|0)+1}Kd(c[z>>2]|0);Kd(c[B>>2]|0);f=c[ea>>2]|0;if(!(c[ga>>2]|0)){c[c[da>>2]>>2]=f;ia=c[ga>>2]|0;i=ha;return ia|0}if(f){Mk(c[ea>>2]|0)|0;ia=c[ga>>2]|0;i=ha;return ia|0}if(!(c[fa>>2]|0)){ia=c[ga>>2]|0;i=ha;return ia|0}Tb[c[(c[c[fa>>2]>>2]|0)+8>>2]&255](c[fa>>2]|0)|0;ia=c[ga>>2]|0;i=ha;return ia|0}function Gp(b){b=b|0;var c=0,d=0;d=i;i=i+16|0;c=d;a[c>>0]=b;if(a[c>>0]&128){b=1;b=b&1;i=d;return b|0}b=(a[25712+(a[c>>0]|0)>>0]|0)!=0;b=b&1;i=d;return b|0}function Hp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=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;y=i;i=i+80|0;t=y+16|0;s=y+8|0;z=y;g=y+76|0;h=y+72|0;A=y+68|0;j=y+64|0;k=y+60|0;r=y+56|0;u=y+52|0;p=y+48|0;v=y+44|0;w=y+40|0;o=y+36|0;l=y+32|0;n=y+28|0;q=y+24|0;m=y+20|0;c[h>>2]=b;c[A>>2]=d;c[j>>2]=e;c[k>>2]=f;c[u>>2]=c[A>>2];c[p>>2]=0;c[z>>2]=c[A>>2];c[v>>2]=Od(19255,z)|0;if(!(c[v>>2]|0)){c[g>>2]=7;A=c[g>>2]|0;i=y;return A|0}A=BQ(c[v>>2]|0)|0;c[w>>2]=(c[v>>2]|0)+A;c[u>>2]=Lp(c[v>>2]|0,p)|0;if(!(c[u>>2]|0))c[u>>2]=c[v>>2];a[(c[u>>2]|0)+(c[p>>2]|0)>>0]=0;Ik(c[u>>2]|0);z=c[h>>2]|0;A=c[u>>2]|0;c[o>>2]=yk(z,A,(BQ(c[u>>2]|0)|0)+1|0)|0;if(c[o>>2]|0){c[l>>2]=0;c[n>>2]=0;c[u>>2]=(c[u>>2]|0)+((c[p>>2]|0)+1);while(1){if((c[u>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;A=Lp(c[u>>2]|0,p)|0;c[u>>2]=A;if(!A)break;c[q>>2]=(c[n>>2]|0)+1<<2;c[m>>2]=Ld(c[l>>2]|0,c[q>>2]|0)|0;if(!(c[m>>2]|0)){x=11;break}c[l>>2]=c[m>>2];z=c[u>>2]|0;A=c[n>>2]|0;c[n>>2]=A+1;c[(c[l>>2]|0)+(A<<2)>>2]=z;a[(c[u>>2]|0)+(c[p>>2]|0)>>0]=0;Ik(c[u>>2]|0);c[u>>2]=(c[u>>2]|0)+((c[p>>2]|0)+1)}if((x|0)==11){Kd(c[v>>2]|0);Kd(c[l>>2]|0);c[g>>2]=7;A=c[g>>2]|0;i=y;return A|0}c[r>>2]=Ob[c[(c[o>>2]|0)+4>>2]&255](c[n>>2]|0,c[l>>2]|0,c[j>>2]|0)|0;if(c[r>>2]|0)zk(c[k>>2]|0,25694,t);else c[c[c[j>>2]>>2]>>2]=c[o>>2];Kd(c[l>>2]|0)}else{A=c[k>>2]|0;c[s>>2]=c[u>>2];zk(A,21456,s);c[r>>2]=1}Kd(c[v>>2]|0);c[g>>2]=c[r>>2];A=c[g>>2]|0;i=y;return A|0}function Ip(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;k=o;f=o+24|0;g=o+20|0;h=o+16|0;j=o+12|0;m=o+8|0;l=o+4|0;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[l>>2]=c[g>>2];while(1){d=c[l>>2]|0;if((a[c[l>>2]>>0]|0)==61)break;if(!(a[d>>0]|0)){n=4;break}c[l>>2]=(c[l>>2]|0)+1}if((n|0)==4){c[f>>2]=0;n=c[f>>2]|0;i=o;return n|0}c[c[h>>2]>>2]=d-(c[g>>2]|0);c[k>>2]=(c[l>>2]|0)+1;c[m>>2]=Od(19255,k)|0;if(c[m>>2]|0)Ik(c[m>>2]|0);c[c[j>>2]>>2]=c[m>>2];c[f>>2]=1;n=c[f>>2]|0;i=o;return n|0}function Jp(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 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;A=i;i=i+96|0;w=A+8|0;B=A;j=A+80|0;C=A+76|0;D=A+72|0;k=A+68|0;l=A+64|0;m=A+60|0;n=A+56|0;v=A+52|0;z=A+48|0;u=A+44|0;o=A+40|0;s=A+36|0;r=A+32|0;p=A+28|0;x=A+24|0;t=A+20|0;y=A+16|0;q=A+12|0;c[j>>2]=a;c[C>>2]=b;c[D>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;c[v>>2]=0;c[u>>2]=0;d=c[D>>2]|0;c[B>>2]=c[C>>2];c[B+4>>2]=d;c[z>>2]=Od(25639,B)|0;if(c[z>>2]|0){c[v>>2]=cf(c[j>>2]|0,c[z>>2]|0,-1,u,0)|0;if(c[v>>2]|0){D=c[n>>2]|0;c[w>>2]=bf(c[j>>2]|0)|0;zk(D,19255,w)}}else c[v>>2]=7;Kd(c[z>>2]|0);if(c[v>>2]|0){D=c[v>>2]|0;i=A;return D|0}c[s>>2]=0;c[r>>2]=ye(c[u>>2]|0)|0;c[p>>2]=0;while(1){if((c[p>>2]|0)>=(c[r>>2]|0))break;c[x>>2]=Ie(c[u>>2]|0,c[p>>2]|0)|0;D=(BQ(c[x>>2]|0)|0)+1|0;c[s>>2]=(c[s>>2]|0)+D;c[p>>2]=(c[p>>2]|0)+1}c[o>>2]=Id((c[r>>2]<<2)+(c[s>>2]|0)|0)|0;a:do if(!(c[o>>2]|0))c[v>>2]=7;else{c[t>>2]=(c[o>>2]|0)+(c[r>>2]<<2);c[p>>2]=0;while(1){if((c[p>>2]|0)>=(c[r>>2]|0))break a;c[y>>2]=Ie(c[u>>2]|0,c[p>>2]|0)|0;c[q>>2]=(BQ(c[y>>2]|0)|0)+1;iR(c[t>>2]|0,c[y>>2]|0,c[q>>2]|0)|0;c[(c[o>>2]|0)+(c[p>>2]<<2)>>2]=c[t>>2];c[t>>2]=(c[t>>2]|0)+(c[q>>2]|0);c[p>>2]=(c[p>>2]|0)+1}}while(0);Yd(c[u>>2]|0)|0;c[c[l>>2]>>2]=c[r>>2];c[c[m>>2]>>2]=c[s>>2];c[c[k>>2]>>2]=c[o>>2];D=c[v>>2]|0;i=A;return D|0}function Kp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;f=q+36|0;g=q+32|0;h=q+28|0;j=q+24|0;k=q+20|0;m=q+16|0;o=q+12|0;p=q+8|0;l=q+4|0;n=q;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[m>>2]=1;a:do if((c[g>>2]|0)!=0?(a[c[g>>2]>>0]|0)!=0:0){c[m>>2]=(c[m>>2]|0)+1;c[o>>2]=c[g>>2];while(1){if(!(a[c[o>>2]>>0]|0))break a;if((a[c[o>>2]>>0]|0)==44)c[m>>2]=(c[m>>2]|0)+1;c[o>>2]=(c[o>>2]|0)+1}}while(0);c[k>>2]=Id((c[m>>2]|0)*24|0)|0;c[c[j>>2]>>2]=c[k>>2];if(!(c[k>>2]|0)){c[f>>2]=7;b=c[f>>2]|0;i=q;return b|0}kR(c[k>>2]|0,0,(c[m>>2]|0)*24|0)|0;b:do if(c[g>>2]|0){c[p>>2]=c[g>>2];c[l>>2]=1;while(1){if((c[l>>2]|0)>=(c[m>>2]|0))break b;c[n>>2]=0;if(Tp(p,n)|0)break;if(!(c[n>>2]|0)){c[m>>2]=(c[m>>2]|0)+-1;c[l>>2]=(c[l>>2]|0)+-1}else c[(c[k>>2]|0)+((c[l>>2]|0)*24|0)>>2]=c[n>>2];c[p>>2]=(c[p>>2]|0)+1;c[l>>2]=(c[l>>2]|0)+1}c[f>>2]=1;b=c[f>>2]|0;i=q;return b|0}while(0);c[c[h>>2]>>2]=c[m>>2];c[f>>2]=0;b=c[f>>2]|0;i=q;return b|0}function Lp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;f=k+16|0;l=k+12|0;g=k+8|0;h=k+4|0;j=k;e=k+20|0;c[l>>2]=b;c[g>>2]=d;c[j>>2]=0;c[h>>2]=c[l>>2];a:while(1){if(c[j>>2]|0){d=21;break}a[e>>0]=a[c[h>>2]>>0]|0;switch(a[e>>0]|0){case 0:{d=4;break a}case 96:case 34:case 39:{c[j>>2]=c[h>>2];while(1){l=(c[j>>2]|0)+1|0;c[j>>2]=l;if(!(a[l>>0]|0))continue a;if((a[c[j>>2]>>0]|0)!=(a[e>>0]|0))continue;l=(c[j>>2]|0)+1|0;c[j>>2]=l;if((a[l>>0]|0)!=(a[e>>0]|0))continue a}}case 91:{c[j>>2]=(c[h>>2]|0)+1;while(1){if(a[c[j>>2]>>0]|0)b=(a[c[j>>2]>>0]|0)!=93;else b=0;d=c[j>>2]|0;if(!b)break;c[j>>2]=d+1}if(!(a[d>>0]|0))continue a;c[j>>2]=(c[j>>2]|0)+1;continue a}default:{l=(Gp(a[c[h>>2]>>0]|0)|0)!=0;d=(c[h>>2]|0)+1|0;if(!l){c[h>>2]=d;continue a}c[j>>2]=d;while(1){if(!(Gp(a[c[j>>2]>>0]|0)|0))continue a;c[j>>2]=(c[j>>2]|0)+1}}}}if((d|0)==4){c[f>>2]=0;l=c[f>>2]|0;i=k;return l|0}else if((d|0)==21){c[c[g>>2]>>2]=(c[j>>2]|0)-(c[h>>2]|0);c[f>>2]=c[h>>2];l=c[f>>2]|0;i=k;return l|0}return 0}function Mp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+96|0;r=t+56|0;l=t+48|0;k=t+40|0;n=t+32|0;m=t+24|0;j=t+8|0;h=t;q=t+92|0;e=t+88|0;f=t+84|0;s=t+80|0;o=t+76|0;p=t+72|0;g=t+68|0;c[q>>2]=a;c[e>>2]=b;c[f>>2]=d;c[s>>2]=0;c[o>>2]=0;if(c[(c[q>>2]|0)+40>>2]|0){Sp(c[f>>2]|0,s,25592,n);c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[q>>2]|0)+24>>2]|0))break;p=c[f>>2]|0;c[k>>2]=c[(c[(c[q>>2]|0)+28>>2]|0)+(c[g>>2]<<2)>>2];Sp(p,s,25598,k);c[g>>2]=(c[g>>2]|0)+1}if(c[(c[q>>2]|0)+44>>2]|0){p=c[f>>2]|0;c[l>>2]=c[(c[q>>2]|0)+44>>2];Sp(p,s,25578,l)}}else{if(c[e>>2]|0){b=Rp(c[e>>2]|0)|0;c[p>>2]=b;c[o>>2]=b}else c[p>>2]=19266;Sp(c[f>>2]|0,s,25557,h);c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[q>>2]|0)+24>>2]|0))break;b=c[f>>2]|0;l=c[g>>2]|0;n=c[(c[(c[q>>2]|0)+28>>2]|0)+(c[g>>2]<<2)>>2]|0;c[j>>2]=c[p>>2];c[j+4>>2]=l;c[j+8>>2]=n;Sp(b,s,25563,j);c[g>>2]=(c[g>>2]|0)+1}if(c[(c[q>>2]|0)+44>>2]|0){p=c[f>>2]|0;c[m>>2]=25585;Sp(p,s,25578,m)}Kd(c[o>>2]|0)}e=c[f>>2]|0;f=c[(c[q>>2]|0)+16>>2]|0;g=c[q>>2]|0;if(c[(c[q>>2]|0)+40>>2]|0){b=c[g+40>>2]|0;p=c[q>>2]|0;p=p+40|0;p=c[p>>2]|0;p=(p|0)!=0;p=p?19266:25607;c[r>>2]=f;q=r+4|0;c[q>>2]=b;q=r+8|0;c[q>>2]=p;Sp(e,s,25616,r);s=c[s>>2]|0;i=t;return s|0}else{b=c[g+20>>2]|0;p=c[q>>2]|0;p=p+40|0;p=c[p>>2]|0;p=(p|0)!=0;p=p?19266:25607;c[r>>2]=f;q=r+4|0;c[q>>2]=b;q=r+8|0;c[q>>2]=p;Sp(e,s,25616,r);s=c[s>>2]|0;i=t;return s|0}return 0}function Np(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;k=o+16|0;j=o+8|0;e=o+44|0;f=o+40|0;g=o+36|0;n=o+32|0;l=o+28|0;m=o+24|0;h=o+20|0;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[n>>2]=0;c[l>>2]=0;if(c[f>>2]|0){b=Rp(c[f>>2]|0)|0;c[m>>2]=b;c[l>>2]=b}else c[m>>2]=19266;Sp(c[g>>2]|0,n,21139,o);c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[(c[e>>2]|0)+24>>2]|0))break;b=c[g>>2]|0;c[j>>2]=c[m>>2];Sp(b,n,25541,j);c[h>>2]=(c[h>>2]|0)+1}if(!(c[(c[e>>2]|0)+44>>2]|0)){m=c[l>>2]|0;Kd(m);n=c[n>>2]|0;i=o;return n|0}Sp(c[g>>2]|0,n,25548,k);m=c[l>>2]|0;Kd(m);n=c[n>>2]|0;i=o;return n|0}function Op(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+112|0;m=r+64|0;k=r+56|0;j=r+48|0;h=r+32|0;n=r+24|0;l=r+8|0;d=r+96|0;g=r+92|0;f=r+88|0;e=r+84|0;q=r+80|0;p=r+76|0;o=r+72|0;c[d>>2]=b;c[g>>2]=0;c[e>>2]=c[(c[d>>2]|0)+12>>2];if(!(c[(c[d>>2]|0)+40>>2]|0)){c[q>>2]=c[(c[d>>2]|0)+44>>2];c[p>>2]=Od(25166,r)|0;c[f>>2]=0;while(1){if(!(c[p>>2]|0))break;if((c[f>>2]|0)>=(c[(c[d>>2]|0)+24>>2]|0))break;c[o>>2]=c[(c[(c[d>>2]|0)+28>>2]|0)+(c[f>>2]<<2)>>2];s=c[f>>2]|0;b=c[o>>2]|0;c[l>>2]=c[p>>2];c[l+4>>2]=s;c[l+8>>2]=b;c[p>>2]=Od(25192,l)|0;c[f>>2]=(c[f>>2]|0)+1}if((c[q>>2]|0)!=0&(c[p>>2]|0)!=0){s=c[q>>2]|0;c[n>>2]=c[p>>2];c[n+4>>2]=s;c[p>>2]=Od(25204,n)|0}if(!(c[p>>2]|0))c[g>>2]=7;s=c[e>>2]|0;o=c[(c[d>>2]|0)+20>>2]|0;q=c[p>>2]|0;c[h>>2]=c[(c[d>>2]|0)+16>>2];c[h+4>>2]=o;c[h+8>>2]=q;hl(g,s,25215,h);Kd(c[p>>2]|0)}s=c[e>>2]|0;q=c[(c[d>>2]|0)+20>>2]|0;c[j>>2]=c[(c[d>>2]|0)+16>>2];c[j+4>>2]=q;hl(g,s,25248,j);s=c[e>>2]|0;q=c[(c[d>>2]|0)+20>>2]|0;c[k>>2]=c[(c[d>>2]|0)+16>>2];c[k+4>>2]=q;hl(g,s,25320,k);if(a[(c[d>>2]|0)+230>>0]|0){s=c[e>>2]|0;q=c[(c[d>>2]|0)+20>>2]|0;c[m>>2]=c[(c[d>>2]|0)+16>>2];c[m+4>>2]=q;hl(g,s,25473,m)}if(!(a[(c[d>>2]|0)+229>>0]|0)){s=c[g>>2]|0;i=r;return s|0}Xo(g,c[d>>2]|0);s=c[g>>2]|0;i=r;return s|0}function Pp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;h=k;d=k+20|0;e=k+16|0;g=k+12|0;j=k+8|0;f=k+4|0;c[d>>2]=a;c[e>>2]=b;if(c[c[d>>2]>>2]|0){i=k;return}c[h>>2]=c[(c[e>>2]|0)+16>>2];c[j>>2]=Od(25146,h)|0;do if(c[j>>2]|0){c[g>>2]=cf(c[(c[e>>2]|0)+12>>2]|0,c[j>>2]|0,-1,f,0)|0;if(!(c[g>>2]|0)){ue(c[f>>2]|0)|0;h=De(c[f>>2]|0,0)|0;c[(c[e>>2]|0)+236>>2]=h;c[g>>2]=Yd(c[f>>2]|0)|0;break}if((c[g>>2]|0)==23){c[(c[e>>2]|0)+236>>2]=1024;c[g>>2]=0}}else c[g>>2]=7;while(0);Kd(c[j>>2]|0);c[c[d>>2]>>2]=c[g>>2];i=k;return}function Qp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+64|0;l=p+24|0;k=p+16|0;e=p+8|0;d=p;f=p+60|0;g=p+56|0;h=p+52|0;j=p+48|0;o=p+44|0;m=p+40|0;n=p+36|0;c[f>>2]=a;c[g>>2]=b;if(c[c[f>>2]>>2]|0){i=p;return}if(c[(c[g>>2]|0)+44>>2]|0)b=c[(c[g>>2]|0)+44>>2]|0;else b=25071;c[n>>2]=b;a=c[(c[g>>2]|0)+12>>2]|0;c[d>>2]=1;hf(a,1,d)|0;c[e>>2]=c[c[(c[g>>2]|0)+28>>2]>>2];c[m>>2]=Od(25080,e)|0;c[h>>2]=1;while(1){if(c[m>>2]|0)a=(c[h>>2]|0)<(c[(c[g>>2]|0)+24>>2]|0);else a=0;b=c[m>>2]|0;if(!a)break;e=c[(c[(c[g>>2]|0)+28>>2]|0)+(c[h>>2]<<2)>>2]|0;c[k>>2]=b;c[k+4>>2]=e;c[m>>2]=Od(25085,k)|0;c[h>>2]=(c[h>>2]|0)+1}k=c[(c[g>>2]|0)+20>>2]|0;n=c[n>>2]|0;c[l>>2]=b;c[l+4>>2]=k;c[l+8>>2]=n;c[o>>2]=Od(25092,l)|0;if((c[m>>2]|0)!=0&(c[o>>2]|0)!=0)c[j>>2]=ff(c[(c[g>>2]|0)+12>>2]|0,c[o>>2]|0)|0;else c[j>>2]=7;Kd(c[o>>2]|0);Kd(c[m>>2]|0);c[c[f>>2]>>2]=c[j>>2];i=p;return}function Rp(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;d=h+16|0;j=h+12|0;g=h+8|0;e=h+4|0;f=h;c[d>>2]=b;c[j>>2]=2+((BQ(c[d>>2]|0)|0)<<1)+1;c[g>>2]=Id(c[j>>2]|0)|0;if(!(c[g>>2]|0)){j=c[g>>2]|0;i=h;return j|0}c[f>>2]=c[g>>2];j=c[f>>2]|0;c[f>>2]=j+1;a[j>>0]=34;c[e>>2]=0;while(1){if(!(a[(c[d>>2]|0)+(c[e>>2]|0)>>0]|0))break;if((a[(c[d>>2]|0)+(c[e>>2]|0)>>0]|0)==34){j=c[f>>2]|0;c[f>>2]=j+1;a[j>>0]=34}b=a[(c[d>>2]|0)+(c[e>>2]|0)>>0]|0;j=c[f>>2]|0;c[f>>2]=j+1;a[j>>0]=b;c[e>>2]=(c[e>>2]|0)+1}j=c[f>>2]|0;c[f>>2]=j+1;a[j>>0]=34;j=c[f>>2]|0;c[f>>2]=j+1;a[j>>0]=0;j=c[g>>2]|0;i=h;return j|0}function Sp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+48|0;k=n;f=n+40|0;g=n+36|0;h=n+32|0;j=n+16|0;l=n+12|0;m=n+8|0;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;if(c[c[f>>2]>>2]|0){i=n;return}c[j>>2]=e;c[l>>2]=Nd(c[h>>2]|0,j)|0;if((c[l>>2]|0)!=0?(c[c[g>>2]>>2]|0)!=0:0){d=c[l>>2]|0;c[k>>2]=c[c[g>>2]>>2];c[k+4>>2]=d;c[m>>2]=Od(25552,k)|0;Kd(c[l>>2]|0);c[l>>2]=c[m>>2]}if(!(c[l>>2]|0))c[c[f>>2]>>2]=7;Kd(c[c[g>>2]>>2]|0);c[c[g>>2]>>2]=c[l>>2];i=n;return}function Tp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+20|0;f=l+16|0;g=l+12|0;j=l+4|0;h=l;c[f>>2]=b;c[g>>2]=d;c[l+8>>2]=1e7;c[h>>2]=0;c[j>>2]=c[c[f>>2]>>2];while(1){if((a[c[j>>2]>>0]|0)<48)break;if((a[c[j>>2]>>0]|0)>57)break;c[h>>2]=((c[h>>2]|0)*10|0)+((a[c[j>>2]>>0]|0)-48);if((c[h>>2]|0)>1e7){k=5;break}c[j>>2]=(c[j>>2]|0)+1}if((k|0)==5)c[h>>2]=0;if((c[j>>2]|0)==(c[c[f>>2]>>2]|0)){c[e>>2]=1;k=c[e>>2]|0;i=l;return k|0}else{c[c[g>>2]>>2]=c[h>>2];c[c[f>>2]>>2]=c[j>>2];c[e>>2]=0;k=c[e>>2]|0;i=l;return k|0}return 0}function Up(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+48|0;j=m;e=m+32|0;n=m+28|0;o=m+24|0;g=m+20|0;h=m+16|0;l=m+12|0;f=m+8|0;k=m+4|0;c[e>>2]=a;c[n>>2]=b;c[o>>2]=d;c[h>>2]=0;c[g>>2]=ve(c[e>>2]|0)|0;c[l>>2]=ae(c[c[o>>2]>>2]|0)|0;c[f>>2]=(be(c[c[o>>2]>>2]|0)|0)+1;if((c[n>>2]|0)==2){je(c[e>>2]|0,25840,-1);i=m;return}if(c[l>>2]|0)c[h>>2]=yk(c[g>>2]|0,c[l>>2]|0,c[f>>2]|0)|0;if(c[h>>2]|0){ge(c[e>>2]|0,h,4,-1);i=m;return}else{c[j>>2]=c[l>>2];c[k>>2]=Od(21456,j)|0;je(c[e>>2]|0,c[k>>2]|0,-1);Kd(c[k>>2]|0);i=m;return}}function Vp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;d=c[c[g>>2]>>2]|0;if(c[(c[g>>2]|0)+4>>2]|0)c[c[(c[g>>2]|0)+4>>2]>>2]=d;else c[(c[f>>2]|0)+8>>2]=d;if(c[c[g>>2]>>2]|0)c[(c[c[g>>2]>>2]|0)+4>>2]=c[(c[g>>2]|0)+4>>2];c[j>>2]=(c[(c[f>>2]|0)+16>>2]|0)+(c[h>>2]<<3);if((c[(c[j>>2]|0)+4>>2]|0)==(c[g>>2]|0))c[(c[j>>2]|0)+4>>2]=c[c[g>>2]>>2];h=c[j>>2]|0;c[h>>2]=(c[h>>2]|0)+-1;if((c[c[j>>2]>>2]|0)<=0)c[(c[j>>2]|0)+4>>2]=0;if((a[(c[f>>2]|0)+1>>0]|0)!=0?(c[(c[g>>2]|0)+12>>2]|0)!=0:0)kk(c[(c[g>>2]|0)+12>>2]|0);kk(c[g>>2]|0);j=(c[f>>2]|0)+4|0;c[j>>2]=(c[j>>2]|0)+-1;if((c[(c[f>>2]|0)+4>>2]|0)>0){i=k;return}jk(c[f>>2]|0);i=k;return}function Wp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;e=n+28|0;f=n+24|0;g=n+20|0;k=n+16|0;h=n+12|0;l=n+8|0;m=n+4|0;j=n;c[f>>2]=b;c[g>>2]=d;c[k>>2]=Xp(c[g>>2]<<3)|0;if(!(c[k>>2]|0)){c[e>>2]=1;m=c[e>>2]|0;i=n;return m|0}kk(c[(c[f>>2]|0)+16>>2]|0);c[(c[f>>2]|0)+16>>2]=c[k>>2];c[(c[f>>2]|0)+12>>2]=c[g>>2];c[m>>2]=Bk(a[c[f>>2]>>0]|0)|0;c[h>>2]=c[(c[f>>2]|0)+8>>2];c[(c[f>>2]|0)+8>>2]=0;while(1){if(!(c[h>>2]|0))break;b=Yb[c[m>>2]&255](c[(c[h>>2]|0)+12>>2]|0,c[(c[h>>2]|0)+16>>2]|0)|0;c[j>>2]=b&(c[g>>2]|0)-1;c[l>>2]=c[c[h>>2]>>2];Yp(c[f>>2]|0,(c[k>>2]|0)+(c[j>>2]<<3)|0,c[h>>2]|0);c[h>>2]=c[l>>2]}c[e>>2]=0;m=c[e>>2]|0;i=n;return m|0}function Xp(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=Id(c[b>>2]|0)|0;if(!(c[d>>2]|0)){d=c[d>>2]|0;i=e;return d|0}kR(c[d>>2]|0,0,c[b>>2]|0)|0;d=c[d>>2]|0;i=e;return d|0}function Yp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[h>>2]=c[(c[f>>2]|0)+4>>2];if(!(c[h>>2]|0)){c[c[g>>2]>>2]=c[(c[e>>2]|0)+8>>2];if(c[(c[e>>2]|0)+8>>2]|0)c[(c[(c[e>>2]|0)+8>>2]|0)+4>>2]=c[g>>2];c[(c[g>>2]|0)+4>>2]=0;c[(c[e>>2]|0)+8>>2]=c[g>>2];h=c[f>>2]|0;e=c[h>>2]|0;e=e+1|0;c[h>>2]=e;g=c[g>>2]|0;h=c[f>>2]|0;h=h+4|0;c[h>>2]=g;i=j;return}c[c[g>>2]>>2]=c[h>>2];c[(c[g>>2]|0)+4>>2]=c[(c[h>>2]|0)+4>>2];b=c[g>>2]|0;if(c[(c[h>>2]|0)+4>>2]|0)c[c[(c[h>>2]|0)+4>>2]>>2]=b;else c[(c[e>>2]|0)+8>>2]=b;c[(c[h>>2]|0)+4>>2]=c[g>>2];h=c[f>>2]|0;e=c[h>>2]|0;e=e+1|0;c[h>>2]=e;g=c[g>>2]|0;h=c[f>>2]|0;h=h+4|0;c[h>>2]=g;i=j;return}function Zp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+32|0;e=h+16|0;f=h+4|0;g=h;c[h+12>>2]=a;c[h+8>>2]=b;c[f>>2]=d;c[g>>2]=Id(4)|0;if(!(c[g>>2]|0)){c[e>>2]=7;g=c[e>>2]|0;i=h;return g|0}else{c[c[g>>2]>>2]=0;c[c[f>>2]>>2]=c[g>>2];c[e>>2]=0;g=c[e>>2]|0;i=h;return g|0}return 0}function _p(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Kd(c[d>>2]|0);i=b;return 0}function $p(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+20|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[l+16>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=Id(28)|0;if(!(c[k>>2]|0)){c[f>>2]=7;b=c[f>>2]|0;i=l;return b|0}c[(c[k>>2]|0)+4>>2]=c[g>>2];do if(c[g>>2]|0)if((c[h>>2]|0)<0){b=BQ(c[g>>2]|0)|0;c[(c[k>>2]|0)+8>>2]=b;break}else{c[(c[k>>2]|0)+8>>2]=c[h>>2];break}else c[(c[k>>2]|0)+8>>2]=0;while(0);c[(c[k>>2]|0)+12>>2]=0;c[(c[k>>2]|0)+16>>2]=0;c[(c[k>>2]|0)+20>>2]=0;c[(c[k>>2]|0)+24>>2]=0;c[c[j>>2]>>2]=c[k>>2];c[f>>2]=0;b=c[f>>2]|0;i=l;return b|0}function aq(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];Kd(c[(c[d>>2]|0)+20>>2]|0);Kd(c[d>>2]|0);i=b;return 0}function bq(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 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;w=i;i=i+64|0;j=w+48|0;x=w+44|0;k=w+40|0;l=w+36|0;m=w+32|0;n=w+28|0;o=w+24|0;p=w+20|0;u=w+16|0;r=w+12|0;q=w+8|0;s=w+4|0;t=w;c[x>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=c[x>>2];c[u>>2]=c[(c[p>>2]|0)+4>>2];do{if((c[(c[p>>2]|0)+12>>2]|0)>=(c[(c[p>>2]|0)+8>>2]|0)){v=23;break}while(1){if((c[(c[p>>2]|0)+12>>2]|0)<(c[(c[p>>2]|0)+8>>2]|0)?(x=a[(c[u>>2]|0)+(c[(c[p>>2]|0)+12>>2]|0)>>0]|0,c[q>>2]=x,(x&128|0)==0):0)if((c[q>>2]|0)<48)b=1;else b=(a[25909+((c[q>>2]|0)-48)>>0]|0)!=0^1;else b=0;g=(c[p>>2]|0)+12|0;h=c[g>>2]|0;if(!b)break;c[g>>2]=h+1}c[r>>2]=h;while(1){if((c[(c[p>>2]|0)+12>>2]|0)<(c[(c[p>>2]|0)+8>>2]|0)){x=a[(c[u>>2]|0)+(c[(c[p>>2]|0)+12>>2]|0)>>0]|0;c[q>>2]=x;if(!(x&128))if((c[q>>2]|0)<48)b=1;else b=(a[25909+((c[q>>2]|0)-48)>>0]|0)!=0^1;else b=0;b=b^1}else b=0;g=(c[p>>2]|0)+12|0;h=c[g>>2]|0;if(!b)break;c[g>>2]=h+1}}while((h|0)<=(c[r>>2]|0));if((v|0)==23){c[j>>2]=101;x=c[j>>2]|0;i=w;return x|0}c[s>>2]=(c[(c[p>>2]|0)+12>>2]|0)-(c[r>>2]|0);do if((c[s>>2]|0)>(c[(c[p>>2]|0)+24>>2]|0)){c[(c[p>>2]|0)+24>>2]=(c[s>>2]|0)+20;c[t>>2]=Ld(c[(c[p>>2]|0)+20>>2]|0,c[(c[p>>2]|0)+24>>2]|0)|0;if(c[t>>2]|0){c[(c[p>>2]|0)+20>>2]=c[t>>2];break}c[j>>2]=7;x=c[j>>2]|0;i=w;return x|0}while(0);cq((c[u>>2]|0)+(c[r>>2]|0)|0,c[s>>2]|0,c[(c[p>>2]|0)+20>>2]|0,c[l>>2]|0);c[c[k>>2]>>2]=c[(c[p>>2]|0)+20>>2];c[c[m>>2]>>2]=c[r>>2];c[c[n>>2]>>2]=c[(c[p>>2]|0)+12>>2];v=(c[p>>2]|0)+16|0;x=c[v>>2]|0;c[v>>2]=x+1;c[c[o>>2]>>2]=x;c[j>>2]=0;x=c[j>>2]|0;i=w;return x|0}function cq(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+64|0;g=s+28|0;h=s+24|0;o=s+20|0;p=s+16|0;q=s+12|0;k=s+8|0;m=s+36|0;r=s+4|0;l=s;j=s+32|0;c[g>>2]=b;c[h>>2]=d;c[o>>2]=e;c[p>>2]=f;if((c[h>>2]|0)<3|(c[h>>2]|0)>=21){dq(c[g>>2]|0,c[h>>2]|0,c[o>>2]|0,c[p>>2]|0);i=s;return}c[q>>2]=0;c[k>>2]=22;while(1){if((c[q>>2]|0)>=(c[h>>2]|0))break;a[j>>0]=a[(c[g>>2]|0)+(c[q>>2]|0)>>0]|0;if((a[j>>0]|0)>=65?(a[j>>0]|0)<=90:0)a[m+(c[k>>2]|0)>>0]=(a[j>>0]|0)+97-65;else{if((a[j>>0]|0)<97){n=11;break}if((a[j>>0]|0)>122){n=11;break}a[m+(c[k>>2]|0)>>0]=a[j>>0]|0}c[q>>2]=(c[q>>2]|0)+1;c[k>>2]=(c[k>>2]|0)+-1}if((n|0)==11){dq(c[g>>2]|0,c[h>>2]|0,c[o>>2]|0,c[p>>2]|0);i=s;return}n=m+23|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;c[r>>2]=m+((c[k>>2]|0)+1);if((((a[c[r>>2]>>0]|0)==115?(eq(r,25989,25994,0)|0)==0:0)?(eq(r,25997,26001,0)|0)==0:0)?(eq(r,25994,25994,0)|0)==0:0)c[r>>2]=(c[r>>2]|0)+1;c[l>>2]=c[r>>2];do if(!(eq(r,26003,26007,172)|0)){if((eq(r,26010,19266,173)|0)==0?(eq(r,26014,19266,173)|0)==0:0)break;if((((c[r>>2]|0)!=(c[l>>2]|0)?(eq(r,26017,26020,0)|0)==0:0)?(eq(r,26024,26027,0)|0)==0:0)?(eq(r,26031,26034,0)|0)==0:0){if((((hq(c[r>>2]|0)|0)!=0?(a[c[r>>2]>>0]|0)!=108:0)?(a[c[r>>2]>>0]|0)!=115:0)?(a[c[r>>2]>>0]|0)!=122:0){c[r>>2]=(c[r>>2]|0)+1;break}if((iq(c[r>>2]|0)|0)!=0?(jq(c[r>>2]|0)|0)!=0:0){n=(c[r>>2]|0)+-1|0;c[r>>2]=n;a[n>>0]=101}}}while(0);if((a[c[r>>2]>>0]|0)==121?(gq((c[r>>2]|0)+1|0)|0)!=0:0)a[c[r>>2]>>0]=105;switch(a[(c[r>>2]|0)+1>>0]|0){case 97:{if(!(eq(r,26038,26020,172)|0))eq(r,26046,26053,172)|0;break}case 99:{if(!(eq(r,26058,26063,172)|0))eq(r,26068,26073,172)|0;break}case 101:{eq(r,26078,26034,172)|0;break}case 103:{eq(r,26083,26088,172)|0;break}case 108:{if((((eq(r,26092,26027,172)|0)==0?(eq(r,26096,26101,172)|0)==0:0)?(eq(r,26104,26110,172)|0)==0:0)?(eq(r,26114,26118,172)|0)==0:0)eq(r,26120,26126,172)|0;break}case 111:{if((eq(r,26130,26034,172)|0)==0?(eq(r,26138,26020,172)|0)==0:0)eq(r,26144,26020,172)|0;break}case 115:{if(((eq(r,26149,26101,172)|0)==0?(eq(r,26155,26163,172)|0)==0:0)?(eq(r,26167,26175,172)|0)==0:0)eq(r,26179,26126,172)|0;break}case 116:{if((eq(r,26187,26101,172)|0)==0?(eq(r,26193,26163,172)|0)==0:0)eq(r,26199,26027,172)|0;break}default:{}}switch(a[c[r>>2]>>0]|0){case 101:{if((eq(r,26206,26212,172)|0)==0?(eq(r,26215,19266,172)|0)==0:0)eq(r,26221,26101,172)|0;break}case 105:{eq(r,26227,26212,172)|0;break}case 108:{if(!(eq(r,26233,26212,172)|0))eq(r,26238,19266,172)|0;break}case 115:{eq(r,26242,19266,172)|0;break}default:{}}a:do switch(a[(c[r>>2]|0)+1>>0]|0){case 97:{if((a[c[r>>2]>>0]|0)==108?(kq((c[r>>2]|0)+2|0)|0)!=0:0)c[r>>2]=(c[r>>2]|0)+2;break}case 99:{if((a[c[r>>2]>>0]|0)==101?(a[(c[r>>2]|0)+2>>0]|0)==110:0){if((a[(c[r>>2]|0)+3>>0]|0)!=97?(a[(c[r>>2]|0)+3>>0]|0)!=101:0)break a;if(kq((c[r>>2]|0)+4|0)|0)c[r>>2]=(c[r>>2]|0)+4}break}case 101:{if((a[c[r>>2]>>0]|0)==114?(kq((c[r>>2]|0)+2|0)|0)!=0:0)c[r>>2]=(c[r>>2]|0)+2;break}case 105:{if((a[c[r>>2]>>0]|0)==99?(kq((c[r>>2]|0)+2|0)|0)!=0:0)c[r>>2]=(c[r>>2]|0)+2;break}case 108:{if((a[c[r>>2]>>0]|0)==101?(a[(c[r>>2]|0)+2>>0]|0)==98:0){if((a[(c[r>>2]|0)+3>>0]|0)!=97?(a[(c[r>>2]|0)+3>>0]|0)!=105:0)break a;if(kq((c[r>>2]|0)+4|0)|0)c[r>>2]=(c[r>>2]|0)+4}break}case 110:{if((a[c[r>>2]>>0]|0)==116){g=c[r>>2]|0;if((a[(c[r>>2]|0)+2>>0]|0)==97){if(!(kq(g+3|0)|0))break a;c[r>>2]=(c[r>>2]|0)+3;break a}if(((a[g+2>>0]|0)==101?(eq(r,26247,19266,174)|0)==0:0)?(eq(r,26253,19266,174)|0)==0:0)eq(r,26258,19266,174)|0}break}case 111:{g=c[r>>2]|0;if((a[c[r>>2]>>0]|0)==117){if(!(kq(g+2|0)|0))break a;c[r>>2]=(c[r>>2]|0)+2;break a}if((a[g+3>>0]|0)!=115?(a[(c[r>>2]|0)+3>>0]|0)!=116:0)break a;eq(r,26262,19266,174)|0;break}case 115:{if(((a[c[r>>2]>>0]|0)==109?(a[(c[r>>2]|0)+2>>0]|0)==105:0)?(kq((c[r>>2]|0)+3|0)|0)!=0:0)c[r>>2]=(c[r>>2]|0)+3;break}case 116:{if(!(eq(r,26266,19266,174)|0))eq(r,26270,19266,174)|0;break}case 117:{if(((a[c[r>>2]>>0]|0)==115?(a[(c[r>>2]|0)+2>>0]|0)==111:0)?(kq((c[r>>2]|0)+3|0)|0)!=0:0)c[r>>2]=(c[r>>2]|0)+3;break}case 122:case 118:{if(((a[c[r>>2]>>0]|0)==101?(a[(c[r>>2]|0)+2>>0]|0)==105:0)?(kq((c[r>>2]|0)+3|0)|0)!=0:0)c[r>>2]=(c[r>>2]|0)+3;break}default:{}}while(0);do if((a[c[r>>2]>>0]|0)==101){n=(kq((c[r>>2]|0)+1|0)|0)!=0;g=(c[r>>2]|0)+1|0;if(n){c[r>>2]=g;break}if((iq(g)|0)!=0?(jq((c[r>>2]|0)+1|0)|0)==0:0)c[r>>2]=(c[r>>2]|0)+1}while(0);if(((kq(c[r>>2]|0)|0)!=0?(a[c[r>>2]>>0]|0)==108:0)?(a[(c[r>>2]|0)+1>>0]|0)==108:0)c[r>>2]=(c[r>>2]|0)+1;n=BQ(c[r>>2]|0)|0;c[q>>2]=n;c[c[p>>2]>>2]=n;a[(c[o>>2]|0)+(c[q>>2]|0)>>0]=0;while(1){if(!(a[c[r>>2]>>0]|0))break;n=c[r>>2]|0;c[r>>2]=n+1;n=a[n>>0]|0;p=(c[q>>2]|0)+-1|0;c[q>>2]=p;a[(c[o>>2]|0)+p>>0]=n}i=s;return}function dq(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;g=q+28|0;h=q+24|0;j=q+20|0;k=q+16|0;n=q+12|0;p=q+8|0;o=q+4|0;m=q;l=q+32|0;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;c[m>>2]=0;c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[h>>2]|0))break;a[l>>0]=a[(c[g>>2]|0)+(c[n>>2]|0)>>0]|0;if((a[l>>0]|0)>=65?(a[l>>0]|0)<=90:0)a[(c[j>>2]|0)+(c[n>>2]|0)>>0]=(a[l>>0]|0)-65+97;else{if((a[l>>0]|0)>=48?(a[l>>0]|0)<=57:0)c[m>>2]=1;a[(c[j>>2]|0)+(c[n>>2]|0)>>0]=a[l>>0]|0}c[n>>2]=(c[n>>2]|0)+1}c[p>>2]=(c[m>>2]|0)!=0?3:10;if((c[h>>2]|0)<=(c[p>>2]<<1|0)){b=c[n>>2]|0;e=c[j>>2]|0;b=e+b|0;a[b>>0]=0;b=c[n>>2]|0;e=c[k>>2]|0;c[e>>2]=b;i=q;return}c[o>>2]=c[p>>2];c[n>>2]=(c[h>>2]|0)-(c[p>>2]|0);while(1){if((c[n>>2]|0)>=(c[h>>2]|0))break;a[(c[j>>2]|0)+(c[o>>2]|0)>>0]=a[(c[j>>2]|0)+(c[n>>2]|0)>>0]|0;c[n>>2]=(c[n>>2]|0)+1;c[o>>2]=(c[o>>2]|0)+1}c[n>>2]=c[o>>2];b=c[n>>2]|0;e=c[j>>2]|0;b=e+b|0;a[b>>0]=0;b=c[n>>2]|0;e=c[k>>2]|0;c[e>>2]=b;i=q;return}function eq(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=c[c[h>>2]>>2];while(1){if(!(a[c[j>>2]>>0]|0))break;if((a[c[j>>2]>>0]|0)!=(a[c[m>>2]>>0]|0))break;c[m>>2]=(c[m>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+1}if(a[c[j>>2]>>0]|0){c[g>>2]=0;e=c[g>>2]|0;i=n;return e|0}if((c[l>>2]|0)!=0?(Tb[c[l>>2]&255](c[m>>2]|0)|0)==0:0){c[g>>2]=1;e=c[g>>2]|0;i=n;return e|0}while(1){if(!(a[c[k>>2]>>0]|0))break;d=c[k>>2]|0;c[k>>2]=d+1;d=a[d>>0]|0;e=(c[m>>2]|0)+-1|0;c[m>>2]=e;a[e>>0]=d}c[c[h>>2]>>2]=c[m>>2];c[g>>2]=1;e=c[g>>2]|0;i=n;return e|0}function fq(b){b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+4|0;e=f;c[e>>2]=b;while(1){g=(lq(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!g)break;c[e>>2]=b+1}if(!(a[b>>0]|0)){c[d>>2]=0;g=c[d>>2]|0;i=f;return g|0}while(1){g=(mq(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!g)break;c[e>>2]=b+1}c[d>>2]=(a[b>>0]|0)!=0&1;g=c[d>>2]|0;i=f;return g|0}function gq(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;d=e;c[d>>2]=b;while(1){f=(mq(c[d>>2]|0)|0)!=0;b=c[d>>2]|0;if(!f)break;c[d>>2]=b+1}i=e;return(a[b>>0]|0)!=0|0}function hq(b){b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=b;if(!(mq(c[d>>2]|0)|0)){b=0;b=b&1;i=e;return b|0}b=(a[c[d>>2]>>0]|0)==(a[(c[d>>2]|0)+1>>0]|0);b=b&1;i=e;return b|0}function iq(b){b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+4|0;e=f;c[e>>2]=b;while(1){g=(lq(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!g)break;c[e>>2]=b+1}if(!(a[b>>0]|0)){c[d>>2]=0;g=c[d>>2]|0;i=f;return g|0}while(1){g=(mq(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!g)break;c[e>>2]=b+1}if(!(a[b>>0]|0)){c[d>>2]=0;g=c[d>>2]|0;i=f;return g|0}while(1){g=(lq(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!g)break;c[e>>2]=b+1}if(!(a[b>>0]|0)){c[d>>2]=1;g=c[d>>2]|0;i=f;return g|0}while(1){g=(mq(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!g)break;c[e>>2]=b+1}c[d>>2]=(a[b>>0]|0)==0&1;g=c[d>>2]|0;i=f;return g|0}function jq(b){b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=b;if(((((mq(c[d>>2]|0)|0)!=0?(a[c[d>>2]>>0]|0)!=119:0)?(a[c[d>>2]>>0]|0)!=120:0)?(a[c[d>>2]>>0]|0)!=121:0)?(lq((c[d>>2]|0)+1|0)|0)!=0:0)d=(mq((c[d>>2]|0)+2|0)|0)!=0;else d=0;i=e;return d&1|0}function kq(b){b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+4|0;e=f;c[e>>2]=b;while(1){g=(lq(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!g)break;c[e>>2]=b+1}if(!(a[b>>0]|0)){c[d>>2]=0;g=c[d>>2]|0;i=f;return g|0}while(1){g=(mq(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!g)break;c[e>>2]=b+1}if(!(a[b>>0]|0)){c[d>>2]=0;g=c[d>>2]|0;i=f;return g|0}while(1){g=(lq(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!g)break;c[e>>2]=b+1}if(!(a[b>>0]|0)){c[d>>2]=0;g=c[d>>2]|0;i=f;return g|0}while(1){g=(mq(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!g)break;c[e>>2]=b+1}c[d>>2]=(a[b>>0]|0)!=0&1;g=c[d>>2]|0;i=f;return g|0}function lq(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+8|0;e=h+4|0;f=h;g=h+12|0;c[e>>2]=b;a[g>>0]=a[c[e>>2]>>0]|0;if(!(a[g>>0]|0)){c[d>>2]=0;b=c[d>>2]|0;i=h;return b|0}c[f>>2]=a[26274+((a[g>>0]|0)-97)>>0];if((c[f>>2]|0)<2){c[d>>2]=1-(c[f>>2]|0);b=c[d>>2]|0;i=h;return b|0}else{c[d>>2]=mq((c[e>>2]|0)+1|0)|0;b=c[d>>2]|0;i=h;return b|0}return 0}function mq(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h+8|0;d=h+4|0;e=h;f=h+12|0;c[d>>2]=b;a[f>>0]=a[c[d>>2]>>0]|0;if(!(a[f>>0]|0)){c[g>>2]=0;g=c[g>>2]|0;i=h;return g|0}c[e>>2]=a[26274+((a[f>>0]|0)-97)>>0];if((c[e>>2]|0)<2){c[g>>2]=c[e>>2];g=c[g>>2]|0;i=h;return g|0}if(!(a[(c[d>>2]|0)+1>>0]|0))d=1;else d=(lq((c[d>>2]|0)+1|0)|0)!=0;c[g>>2]=d&1;g=c[g>>2]|0;i=h;return g|0}function nq(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;g=q+28|0;h=q+24|0;j=q+20|0;k=q+16|0;p=q+12|0;m=q+8|0;o=q+4|0;l=q+32|0;n=q;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[p>>2]=Id(132)|0;if(!(c[p>>2]|0)){c[g>>2]=7;p=c[g>>2]|0;i=q;return p|0}kR(c[p>>2]|0,0,132)|0;a:do if((c[h>>2]|0)>1){c[o>>2]=BQ(c[(c[j>>2]|0)+4>>2]|0)|0;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[o>>2]|0))break a;a[l>>0]=a[(c[(c[j>>2]|0)+4>>2]|0)+(c[m>>2]|0)>>0]|0;if((d[l>>0]|0|0)>=128)break;a[(c[p>>2]|0)+4+(d[l>>0]|0)>>0]=1;c[m>>2]=(c[m>>2]|0)+1}Kd(c[p>>2]|0);c[g>>2]=1;p=c[g>>2]|0;i=q;return p|0}else{c[n>>2]=1;while(1){if((c[n>>2]|0)>=128)break a;f=(tq(c[n>>2]|0)|0)!=0^1;a[(c[p>>2]|0)+4+(c[n>>2]|0)>>0]=f?-1:0;c[n>>2]=(c[n>>2]|0)+1}}while(0);c[c[k>>2]>>2]=c[p>>2];c[g>>2]=0;p=c[g>>2]|0;i=q;return p|0}function oq(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Kd(c[d>>2]|0);i=b;return 0}function pq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+20|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[l+16>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=Id(28)|0;if(!(c[k>>2]|0)){c[f>>2]=7;e=c[f>>2]|0;i=l;return e|0}c[(c[k>>2]|0)+4>>2]=c[g>>2];do if(c[g>>2]|0)if((c[h>>2]|0)<0){e=BQ(c[g>>2]|0)|0;c[(c[k>>2]|0)+8>>2]=e;break}else{c[(c[k>>2]|0)+8>>2]=c[h>>2];break}else c[(c[k>>2]|0)+8>>2]=0;while(0);c[(c[k>>2]|0)+12>>2]=0;c[(c[k>>2]|0)+16>>2]=0;c[(c[k>>2]|0)+20>>2]=0;c[(c[k>>2]|0)+24>>2]=0;c[c[j>>2]>>2]=c[k>>2];c[f>>2]=0;e=c[f>>2]|0;i=l;return e|0}function qq(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];Kd(c[(c[d>>2]|0)+20>>2]|0);Kd(c[d>>2]|0);i=b;return 0}function rq(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;z=i;i=i+64|0;n=z+52|0;A=z+48|0;o=z+44|0;p=z+40|0;q=z+36|0;r=z+32|0;s=z+28|0;t=z+24|0;l=z+20|0;y=z+16|0;w=z+12|0;v=z+8|0;x=z+4|0;k=z;u=z+56|0;c[A>>2]=b;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=j;c[t>>2]=c[A>>2];c[l>>2]=c[c[A>>2]>>2];c[y>>2]=c[(c[t>>2]|0)+4>>2];do{if((c[(c[t>>2]|0)+12>>2]|0)>=(c[(c[t>>2]|0)+8>>2]|0)){m=25;break}while(1){if((c[(c[t>>2]|0)+12>>2]|0)<(c[(c[t>>2]|0)+8>>2]|0))b=(sq(c[l>>2]|0,a[(c[y>>2]|0)+(c[(c[t>>2]|0)+12>>2]|0)>>0]|0)|0)!=0;else b=0;h=(c[t>>2]|0)+12|0;j=c[h>>2]|0;if(!b)break;c[h>>2]=j+1}c[w>>2]=j;while(1){if((c[(c[t>>2]|0)+12>>2]|0)<(c[(c[t>>2]|0)+8>>2]|0))b=(sq(c[l>>2]|0,a[(c[y>>2]|0)+(c[(c[t>>2]|0)+12>>2]|0)>>0]|0)|0)!=0^1;else b=0;h=(c[t>>2]|0)+12|0;j=c[h>>2]|0;if(!b)break;c[h>>2]=j+1}}while((j|0)<=(c[w>>2]|0));if((m|0)==25){c[n>>2]=101;A=c[n>>2]|0;i=z;return A|0}c[x>>2]=(c[(c[t>>2]|0)+12>>2]|0)-(c[w>>2]|0);do if((c[x>>2]|0)>(c[(c[t>>2]|0)+24>>2]|0)){c[(c[t>>2]|0)+24>>2]=(c[x>>2]|0)+20;c[k>>2]=Ld(c[(c[t>>2]|0)+20>>2]|0,c[(c[t>>2]|0)+24>>2]|0)|0;if(c[k>>2]|0){c[(c[t>>2]|0)+20>>2]=c[k>>2]; -break}c[n>>2]=7;A=c[n>>2]|0;i=z;return A|0}while(0);c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[x>>2]|0))break;a[u>>0]=a[(c[y>>2]|0)+((c[w>>2]|0)+(c[v>>2]|0))>>0]|0;if((d[u>>0]|0|0)>=65?(d[u>>0]|0|0)<=90:0)b=(d[u>>0]|0)-65+97|0;else b=d[u>>0]|0;a[(c[(c[t>>2]|0)+20>>2]|0)+(c[v>>2]|0)>>0]=b;c[v>>2]=(c[v>>2]|0)+1}c[c[o>>2]>>2]=c[(c[t>>2]|0)+20>>2];c[c[p>>2]>>2]=c[x>>2];c[c[q>>2]>>2]=c[w>>2];c[c[r>>2]>>2]=c[(c[t>>2]|0)+12>>2];y=(c[t>>2]|0)+16|0;A=c[y>>2]|0;c[y>>2]=A+1;c[c[s>>2]>>2]=A;c[n>>2]=0;A=c[n>>2]|0;i=z;return A|0}function sq(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;f=h;g=h+4|0;c[f>>2]=b;a[g>>0]=e;if((d[g>>0]|0)>=128){b=0;b=b&1;i=h;return b|0}b=(a[(c[f>>2]|0)+4+(d[g>>0]|0)>>0]|0)!=0;b=b&1;i=h;return b|0}function tq(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!((c[b>>2]|0)>=48&(c[b>>2]|0)<=57)?!((c[b>>2]|0)>=65&(c[b>>2]|0)<=90):0)b=(c[b>>2]|0)>=97?(c[b>>2]|0)<=122:0;else b=1;i=d;return b&1|0}function uq(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,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;w=i;i=i+64|0;t=w;h=w+56|0;j=w+52|0;k=w+44|0;l=w+40|0;m=w+36|0;n=w+32|0;u=w+28|0;v=w+24|0;p=w+20|0;q=w+16|0;o=w+12|0;s=w+8|0;r=w+4|0;c[j>>2]=a;c[w+48>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;do if(!((c[k>>2]|0)!=4&(c[k>>2]|0)!=5)){c[u>>2]=c[(c[l>>2]|0)+4>>2];c[p>>2]=BQ(c[u>>2]|0)|0;if((c[k>>2]|0)==5){if((c[p>>2]|0)!=4)break;if(zd(19536,c[u>>2]|0,4)|0)break;c[u>>2]=c[(c[l>>2]|0)+12>>2];c[p>>2]=BQ(c[u>>2]|0)|0;c[v>>2]=c[(c[l>>2]|0)+16>>2]}else c[v>>2]=c[(c[l>>2]|0)+12>>2];c[q>>2]=BQ(c[v>>2]|0)|0;c[s>>2]=ff(c[j>>2]|0,26310)|0;if(c[s>>2]|0){c[h>>2]=c[s>>2];v=c[h>>2]|0;i=w;return v|0}c[o>>2]=296+(c[p>>2]|0)+(c[q>>2]|0)+2;c[r>>2]=Id(c[o>>2]|0)|0;if(c[r>>2]|0){kR(c[r>>2]|0,0,c[o>>2]|0)|0;c[(c[r>>2]|0)+12>>2]=(c[r>>2]|0)+16;c[(c[(c[r>>2]|0)+12>>2]|0)+16>>2]=(c[(c[r>>2]|0)+12>>2]|0)+280;c[(c[(c[r>>2]|0)+12>>2]|0)+20>>2]=(c[(c[(c[r>>2]|0)+12>>2]|0)+16>>2]|0)+((c[p>>2]|0)+1);c[(c[(c[r>>2]|0)+12>>2]|0)+12>>2]=c[j>>2];c[(c[(c[r>>2]|0)+12>>2]|0)+248>>2]=1;iR(c[(c[(c[r>>2]|0)+12>>2]|0)+16>>2]|0,c[u>>2]|0,c[p>>2]|0)|0;iR(c[(c[(c[r>>2]|0)+12>>2]|0)+20>>2]|0,c[v>>2]|0,c[q>>2]|0)|0;Ik(c[(c[(c[r>>2]|0)+12>>2]|0)+20>>2]|0);c[c[m>>2]>>2]=c[r>>2];c[h>>2]=0;v=c[h>>2]|0;i=w;return v|0}else{c[h>>2]=7;v=c[h>>2]|0;i=w;return v|0}}while(0);zk(c[n>>2]|0,26379,t);c[h>>2]=1;v=c[h>>2]|0;i=w;return v|0}function vq(b,e){b=b|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;k=q+32|0;f=q+28|0;l=q+24|0;m=q+20|0;o=q+16|0;n=q+12|0;p=q+8|0;j=q+4|0;g=q;c[q+36>>2]=b;c[k>>2]=e;c[l>>2]=-1;c[m>>2]=-1;c[o>>2]=-1;c[n>>2]=-1;c[p>>2]=1;if(((c[(c[k>>2]|0)+8>>2]|0)==1?(c[c[(c[k>>2]|0)+12>>2]>>2]|0)==0:0)?(d[(c[(c[k>>2]|0)+12>>2]|0)+4>>0]|0)==0:0)c[(c[k>>2]|0)+32>>2]=1;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[k>>2]>>2]|0))break;if(a[(c[(c[k>>2]|0)+4>>2]|0)+((c[f>>2]|0)*12|0)+5>>0]|0){c[j>>2]=d[(c[(c[k>>2]|0)+4>>2]|0)+((c[f>>2]|0)*12|0)+4>>0];c[g>>2]=c[(c[(c[k>>2]|0)+4>>2]|0)+((c[f>>2]|0)*12|0)>>2];if(!(c[g>>2]|0)){if((c[j>>2]|0)==2)c[l>>2]=c[f>>2];if((c[j>>2]|0)==16)c[o>>2]=c[f>>2];if((c[j>>2]|0)==8)c[o>>2]=c[f>>2];if((c[j>>2]|0)==4)c[m>>2]=c[f>>2];if((c[j>>2]|0)==32)c[m>>2]=c[f>>2]}if((c[g>>2]|0)==4&(c[j>>2]|0)==2)c[n>>2]=c[f>>2]}c[f>>2]=(c[f>>2]|0)+1}f=(c[k>>2]|0)+20|0;if((c[l>>2]|0)<0){c[f>>2]=0;h[(c[k>>2]|0)+40>>3]=2.0e4;if((c[m>>2]|0)>=0){l=(c[k>>2]|0)+20|0;c[l>>2]=(c[l>>2]|0)+2;l=c[p>>2]|0;c[p>>2]=l+1;c[(c[(c[k>>2]|0)+16>>2]|0)+(c[m>>2]<<3)>>2]=l;m=(c[k>>2]|0)+40|0;h[m>>3]=+h[m>>3]/2.0}if((c[o>>2]|0)>=0){m=(c[k>>2]|0)+20|0;c[m>>2]=(c[m>>2]|0)+4;m=c[p>>2]|0;c[p>>2]=m+1;c[(c[(c[k>>2]|0)+16>>2]|0)+(c[o>>2]<<3)>>2]=m;o=(c[k>>2]|0)+40|0;h[o>>3]=+h[o>>3]/2.0}}else{c[f>>2]=1;o=c[p>>2]|0;c[p>>2]=o+1;c[(c[(c[k>>2]|0)+16>>2]|0)+(c[l>>2]<<3)>>2]=o;h[(c[k>>2]|0)+40>>3]=5.0}if((c[n>>2]|0)<0){i=q;return 0}o=c[p>>2]|0;c[p>>2]=o+1;c[(c[(c[k>>2]|0)+16>>2]|0)+(c[n>>2]<<3)>>2]=o;p=(c[k>>2]|0)+40|0;h[p>>3]=+h[p>>3]+-1.0;i=q;return 0}function wq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=i;i=i+16|0;g=f+12|0;d=f+8|0;e=f+4|0;b=f;c[g>>2]=a;c[d>>2]=c[g>>2];c[e>>2]=c[(c[d>>2]|0)+12>>2];c[b>>2]=0;while(1){if((c[b>>2]|0)>=40)break;Yd(c[(c[e>>2]|0)+56+(c[b>>2]<<2)>>2]|0)|0;c[b>>2]=(c[b>>2]|0)+1}Kd(c[(c[e>>2]|0)+240>>2]|0);Kd(c[d>>2]|0);i=f;return 0}function xq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+12|0;e=g+4|0;f=g;c[g+8>>2]=a;c[e>>2]=b;c[f>>2]=Id(120)|0;if(c[f>>2]|0){a=c[f>>2]|0;b=a+120|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));c[c[e>>2]>>2]=c[f>>2];c[d>>2]=0;f=c[d>>2]|0;i=g;return f|0}else{c[d>>2]=7;f=c[d>>2]|0;i=g;return f|0}return 0}function yq(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;f=b+8|0;e=b+4|0;d=b;c[f>>2]=a;c[e>>2]=c[(c[c[f>>2]>>2]|0)+12>>2];c[d>>2]=c[f>>2];sm(c[e>>2]|0);vl((c[d>>2]|0)+4|0);Kd(c[(c[d>>2]|0)+60>>2]|0);Kd(c[(c[d>>2]|0)+76>>2]|0);Kd(c[(c[d>>2]|0)+112>>2]|0);Kd(c[d>>2]|0);i=b;return 0}function zq(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,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;z=i;i=i+80|0;x=z+8|0;w=z;g=z+76|0;h=z+72|0;j=z+68|0;k=z+60|0;l=z+56|0;t=z+52|0;u=z+48|0;v=z+44|0;s=z+40|0;o=z+36|0;m=z+32|0;n=z+28|0;q=z+24|0;p=z+20|0;r=z+16|0;y=z+12|0;c[h>>2]=a;c[j>>2]=b;c[z+64>>2]=d;c[k>>2]=e;c[l>>2]=f;c[t>>2]=c[h>>2];c[u>>2]=c[(c[c[h>>2]>>2]|0)+12>>2];c[s>>2]=0;c[o>>2]=0;c[m>>2]=-1;c[n>>2]=-1;c[q>>2]=-1;c[p>>2]=-1;c[r>>2]=0;if((c[j>>2]|0)!=1){c[s>>2]=1;if(c[j>>2]&2){a=c[r>>2]|0;c[r>>2]=a+1;c[n>>2]=a}if(c[j>>2]&4){a=c[r>>2]|0;c[r>>2]=a+1;c[q>>2]=a}}else{a=c[r>>2]|0;c[r>>2]=a+1;c[m>>2]=a}if((c[r>>2]|0)<(c[k>>2]|0)){a=c[r>>2]|0;c[r>>2]=a+1;c[p>>2]=a}vl((c[t>>2]|0)+4|0);Kd(c[(c[t>>2]|0)+60>>2]|0);Kd(c[(c[t>>2]|0)+112>>2]|0);kR((c[t>>2]|0)+4|0,0,(c[t>>2]|0)+120-((c[t>>2]|0)+4)|0)|0;c[(c[t>>2]|0)+60+12>>2]=3;if(c[s>>2]|0){a=(c[t>>2]|0)+60+12|0;c[a>>2]=c[a>>2]|16}if(((c[m>>2]|0)>=0|(c[n>>2]|0)>=0?(c[y>>2]=ae(c[c[l>>2]>>2]|0)|0,(c[y>>2]|0)!=0):0)?(c[w>>2]=c[y>>2],y=Od(19255,w)|0,c[(c[t>>2]|0)+60>>2]=y,y=be(c[c[l>>2]>>2]|0)|0,c[(c[t>>2]|0)+60+4>>2]=y,(c[(c[t>>2]|0)+60>>2]|0)==0):0){c[g>>2]=7;y=c[g>>2]|0;i=z;return y|0}if((c[q>>2]|0)>=0?(c[x>>2]=ae(c[(c[l>>2]|0)+(c[q>>2]<<2)>>2]|0)|0,y=Od(19255,x)|0,c[(c[t>>2]|0)+76>>2]=y,y=be(c[(c[l>>2]|0)+(c[q>>2]<<2)>>2]|0)|0,c[(c[t>>2]|0)+80>>2]=y,(c[(c[t>>2]|0)+76>>2]|0)==0):0){c[g>>2]=7;y=c[g>>2]|0;i=z;return y|0}if((c[p>>2]|0)>=0){y=de(c[(c[l>>2]|0)+(c[p>>2]<<2)>>2]|0)|0;c[o>>2]=y;c[o>>2]=(c[o>>2]|0)<0?0:y}c[(c[t>>2]|0)+84>>2]=c[o>>2];c[v>>2]=kl(c[u>>2]|0,c[o>>2]|0,0,-2,c[(c[t>>2]|0)+60>>2]|0,c[(c[t>>2]|0)+60+4>>2]|0,0,c[s>>2]|0,(c[t>>2]|0)+4|0)|0;if(!(c[v>>2]|0))c[v>>2]=ol(c[u>>2]|0,(c[t>>2]|0)+4|0,(c[t>>2]|0)+60|0)|0;if(!(c[v>>2]|0))c[v>>2]=Aq(c[h>>2]|0)|0;c[g>>2]=c[v>>2];y=c[g>>2]|0;i=z;return y|0}function Aq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+64|0;d=q+52|0;r=q+48|0;m=q+44|0;b=q+40|0;n=q+36|0;g=q+32|0;l=q+28|0;e=q+24|0;h=q+20|0;f=q+16|0;k=q+12|0;j=q+8|0;o=q;c[r>>2]=a;c[m>>2]=c[r>>2];c[b>>2]=c[(c[c[r>>2]>>2]|0)+12>>2];a=(c[m>>2]|0)+96|0;r=a;r=gR(c[r>>2]|0,c[r+4>>2]|0,1,0)|0;c[a>>2]=r;c[a+4>>2]=C;a=(c[m>>2]|0)+104|0;c[a>>2]=(c[a>>2]|0)+1;while(1){if((c[(c[m>>2]|0)+104>>2]|0)>=(c[(c[m>>2]|0)+108>>2]|0))break;r=(c[(c[m>>2]|0)+112>>2]|0)+(c[(c[m>>2]|0)+104>>2]<<4)|0;a=c[r+4>>2]|0;if((a|0)>0|(a|0)==0&(c[r>>2]|0)>>>0>0){p=4;break}r=(c[m>>2]|0)+104|0;c[r>>2]=(c[r>>2]|0)+1}if((p|0)==4){c[d>>2]=0;r=c[d>>2]|0;i=q;return r|0}c[n>>2]=pl(c[b>>2]|0,(c[m>>2]|0)+4|0)|0;do if((c[n>>2]|0)==100){c[g>>2]=0;c[l>>2]=c[(c[m>>2]|0)+4+52>>2];c[e>>2]=c[(c[m>>2]|0)+4+48>>2];c[f>>2]=0;do if(c[(c[m>>2]|0)+76>>2]|0){a=c[m>>2]|0;if((c[(c[m>>2]|0)+80>>2]|0)<(c[(c[m>>2]|0)+4+44>>2]|0))a=c[a+80>>2]|0;else a=c[a+4+44>>2]|0;c[k>>2]=a;c[j>>2]=vQ(c[(c[m>>2]|0)+76>>2]|0,c[(c[m>>2]|0)+4+40>>2]|0,c[k>>2]|0)|0;if((c[j>>2]|0)>=0){if(c[j>>2]|0)break;if((c[(c[m>>2]|0)+4+44>>2]|0)<=(c[(c[m>>2]|0)+80>>2]|0))break}c[(c[m>>2]|0)+88>>2]=1;c[d>>2]=0;r=c[d>>2]|0;i=q;return r|0}while(0);if(Eq(c[m>>2]|0,2)|0){c[d>>2]=7;r=c[d>>2]|0;i=q;return r|0}kR(c[(c[m>>2]|0)+112>>2]|0,0,c[(c[m>>2]|0)+108>>2]<<4|0)|0;c[h>>2]=0;a:while(1){if((c[g>>2]|0)>=(c[l>>2]|0)){p=32;break}r=o;c[r>>2]=0;c[r+4>>2]=0;r=Ul((c[e>>2]|0)+(c[g>>2]|0)|0,o)|0;c[g>>2]=(c[g>>2]|0)+r;switch(c[f>>2]|0){case 0:{r=c[(c[m>>2]|0)+112>>2]|0;k=r;c[r>>2]=gR(c[k>>2]|0,c[k+4>>2]|0,1,0)|0;c[r+4>>2]=C;c[f>>2]=1;c[h>>2]=0;continue a}case 1:{r=o;k=c[r+4>>2]|0;if((k|0)>0|(k|0)==0&(c[r>>2]|0)>>>0>1){r=(c[(c[m>>2]|0)+112>>2]|0)+16|0;k=r;k=gR(c[k>>2]|0,c[k+4>>2]|0,1,0)|0;c[r>>2]=k;c[r+4>>2]=C}c[f>>2]=2;break}case 2:break;default:{c[h>>2]=c[o>>2];if(Eq(c[m>>2]|0,(c[h>>2]|0)+2|0)|0)break a;r=(c[(c[m>>2]|0)+112>>2]|0)+((c[h>>2]|0)+1<<4)|0;k=r;c[r>>2]=gR(c[k>>2]|0,c[k+4>>2]|0,1,0)|0;c[r+4>>2]=C;c[f>>2]=2;continue a}}r=o;if((c[r>>2]|0)==0&(c[r+4>>2]|0)==0){c[f>>2]=0;continue}r=o;if((c[r>>2]|0)==1&(c[r+4>>2]|0)==0){c[f>>2]=3;continue}else{r=(c[(c[m>>2]|0)+112>>2]|0)+((c[h>>2]|0)+1<<4)+8|0;k=r;k=gR(c[k>>2]|0,c[k+4>>2]|0,1,0)|0;c[r>>2]=k;c[r+4>>2]=C;r=(c[(c[m>>2]|0)+112>>2]|0)+8|0;k=r;k=gR(c[k>>2]|0,c[k+4>>2]|0,1,0)|0;c[r>>2]=k;c[r+4>>2]=C;continue}}if((p|0)==32){c[(c[m>>2]|0)+104>>2]=0;c[n>>2]=0;break}c[d>>2]=7;r=c[d>>2]|0;i=q;return r|0}else c[(c[m>>2]|0)+88>>2]=1;while(0);c[d>>2]=c[n>>2];r=c[d>>2]|0;i=q;return r|0}function Bq(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=c[e>>2];i=d;return c[(c[b>>2]|0)+88>>2]|0}function Cq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+16|0;j=g+12|0;e=g+8|0;h=g+4|0;f=g;c[j>>2]=a;c[e>>2]=b;c[h>>2]=d;c[f>>2]=c[j>>2];switch(c[h>>2]|0){case 0:{ne(c[e>>2]|0,c[(c[f>>2]|0)+4+40>>2]|0,c[(c[f>>2]|0)+4+44>>2]|0,-1);i=g;return 0}case 1:{e=c[e>>2]|0;if(c[(c[f>>2]|0)+104>>2]|0){ke(e,(c[(c[f>>2]|0)+104>>2]|0)-1|0);i=g;return 0}else{ne(e,26308,-1,0);i=g;return 0}}case 2:{j=(c[(c[f>>2]|0)+112>>2]|0)+(c[(c[f>>2]|0)+104>>2]<<4)|0;le(c[e>>2]|0,c[j>>2]|0,c[j+4>>2]|0);i=g;return 0}case 3:{j=(c[(c[f>>2]|0)+112>>2]|0)+(c[(c[f>>2]|0)+104>>2]<<4)+8|0;le(c[e>>2]|0,c[j>>2]|0,c[j+4>>2]|0);i=g;return 0}default:{ke(c[e>>2]|0,c[(c[f>>2]|0)+84>>2]|0);i=g;return 0}}return 0}function Dq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;f=d+4|0;e=d;c[g>>2]=a;c[f>>2]=b;c[e>>2]=c[g>>2];e=(c[e>>2]|0)+96|0;a=c[e+4>>2]|0;b=c[f>>2]|0;c[b>>2]=c[e>>2];c[b+4>>2]=a;i=d;return 0}function Eq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;do if((c[f>>2]|0)>(c[(c[e>>2]|0)+108>>2]|0)){c[g>>2]=Ld(c[(c[e>>2]|0)+112>>2]|0,c[f>>2]<<4)|0;if(c[g>>2]|0){kR((c[g>>2]|0)+(c[(c[e>>2]|0)+108>>2]<<4)|0,0,(c[f>>2]|0)-(c[(c[e>>2]|0)+108>>2]|0)<<4|0)|0;c[(c[e>>2]|0)+112>>2]=c[g>>2];c[(c[e>>2]|0)+108>>2]=c[f>>2];break}c[d>>2]=7;a=c[d>>2]|0;i=h;return a|0}while(0);c[d>>2]=0;a=c[d>>2]|0;i=h;return a|0}function Fq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;e=p+32|0;f=p+28|0;g=p+24|0;h=p+20|0;l=p+16|0;j=p+12|0;m=p+8|0;n=p+4|0;k=p;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[m>>2]=0;c[l>>2]=Id(16)|0;if(!(c[l>>2]|0)){c[e>>2]=7;o=c[e>>2]|0;i=p;return o|0}d=c[l>>2]|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[(c[l>>2]|0)+4>>2]=1;c[j>>2]=0;while(1){if(c[m>>2]|0)break;if((c[j>>2]|0)>=(c[f>>2]|0))break;c[n>>2]=c[(c[g>>2]|0)+(c[j>>2]<<2)>>2];c[k>>2]=BQ(c[n>>2]|0)|0;if((c[k>>2]|0)==19?(vQ(26585,c[n>>2]|0,19)|0)==0:0)c[(c[l>>2]|0)+4>>2]=1;else o=9;do if((o|0)==9){o=0;if((c[k>>2]|0)==19?(vQ(26605,c[n>>2]|0,19)|0)==0:0){c[(c[l>>2]|0)+4>>2]=0;break}if((c[k>>2]|0)>=11?(vQ(26625,c[n>>2]|0,11)|0)==0:0){c[m>>2]=Qq(c[l>>2]|0,1,(c[n>>2]|0)+11|0,(c[k>>2]|0)-11|0)|0;break}if((c[k>>2]|0)>=11?(vQ(26637,c[n>>2]|0,11)|0)==0:0){c[m>>2]=Qq(c[l>>2]|0,0,(c[n>>2]|0)+11|0,(c[k>>2]|0)-11|0)|0;break}c[m>>2]=1}while(0);c[j>>2]=(c[j>>2]|0)+1}if(c[m>>2]|0){Gq(c[l>>2]|0)|0;c[l>>2]=0}c[c[h>>2]>>2]=c[l>>2];c[e>>2]=c[m>>2];o=c[e>>2]|0;i=p;return o|0}function Gq(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(c[b>>2]|0)){i=e;return 0}c[d>>2]=c[b>>2];Kd(c[(c[d>>2]|0)+12>>2]|0);Kd(c[d>>2]|0);i=e;return 0}function Hq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+20|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[l+16>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=Id(28)|0;if(!(c[k>>2]|0)){c[f>>2]=7;e=c[f>>2]|0;i=l;return e|0}e=c[k>>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;c[e+24>>2]=0;c[(c[k>>2]|0)+4>>2]=c[g>>2];do if(c[g>>2]|0)if((c[h>>2]|0)<0){e=BQ(c[g>>2]|0)|0;c[(c[k>>2]|0)+8>>2]=e;break}else{c[(c[k>>2]|0)+8>>2]=c[h>>2];break}else c[(c[k>>2]|0)+8>>2]=0;while(0);c[c[j>>2]>>2]=c[k>>2];c[f>>2]=0;e=c[f>>2]|0;i=l;return e|0}function Iq(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];Kd(c[(c[d>>2]|0)+20>>2]|0);Kd(c[d>>2]|0);i=b;return 0}function Jq(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;A=i;i=i+80|0;p=A+64|0;B=A+60|0;q=A+56|0;r=A+52|0;s=A+48|0;t=A+44|0;u=A+40|0;v=A+36|0;m=A+32|0;k=A+28|0;y=A+24|0;w=A+20|0;z=A+16|0;x=A+12|0;o=A+8|0;l=A+4|0;n=A;c[B>>2]=b;c[q>>2]=e;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;c[u>>2]=j;c[v>>2]=c[B>>2];c[m>>2]=c[c[v>>2]>>2];c[k>>2]=0;c[w>>2]=(c[(c[v>>2]|0)+4>>2]|0)+(c[(c[v>>2]|0)+12>>2]|0);c[z>>2]=c[w>>2];c[o>>2]=(c[(c[v>>2]|0)+4>>2]|0)+(c[(c[v>>2]|0)+8>>2]|0);while(1){if((c[w>>2]|0)>>>0>=(c[o>>2]|0)>>>0)break;B=c[w>>2]|0;c[w>>2]=B+1;c[k>>2]=d[B>>0];do if((c[k>>2]|0)>=192){c[k>>2]=d[26420+((c[k>>2]|0)-192)>>0];while(1){if((c[w>>2]|0)!=(c[o>>2]|0))b=((d[c[w>>2]>>0]|0)&192|0)==128;else b=0;e=c[k>>2]|0;if(!b)break;B=c[w>>2]|0;c[w>>2]=B+1;c[k>>2]=(e<<6)+(63&(d[B>>0]|0))}if(((e|0)>=128?(c[k>>2]&-2048|0)!=55296:0)?(c[k>>2]&-2|0)!=65534:0)break;c[k>>2]=65533}while(0);if(Kq(c[m>>2]|0,c[k>>2]|0)|0)break;c[z>>2]=c[w>>2]}if((c[z>>2]|0)>>>0>=(c[o>>2]|0)>>>0){c[p>>2]=101;B=c[p>>2]|0;i=A;return B|0}c[y>>2]=c[(c[v>>2]|0)+20>>2];while(1){if(((c[y>>2]|0)-(c[(c[v>>2]|0)+20>>2]|0)|0)>=((c[(c[v>>2]|0)+24>>2]|0)-4|0)){c[n>>2]=Ld(c[(c[v>>2]|0)+20>>2]|0,(c[(c[v>>2]|0)+24>>2]|0)+64|0)|0;if(!(c[n>>2]|0)){b=20;break}c[y>>2]=(c[n>>2]|0)+((c[y>>2]|0)-(c[(c[v>>2]|0)+20>>2]|0));c[(c[v>>2]|0)+20>>2]=c[n>>2];B=(c[v>>2]|0)+24|0;c[B>>2]=(c[B>>2]|0)+64}c[x>>2]=c[w>>2];c[l>>2]=Lq(c[k>>2]|0,c[(c[m>>2]|0)+4>>2]|0)|0;do if(c[l>>2]|0){b=c[l>>2]|0;if((c[l>>2]|0)<128){B=c[y>>2]|0;c[y>>2]=B+1;a[B>>0]=b;break}e=c[l>>2]|0;if((b|0)<2048){f=c[y>>2]|0;c[y>>2]=f+1;a[f>>0]=192+(e>>6&31);f=128+(c[l>>2]&63)&255;B=c[y>>2]|0;c[y>>2]=B+1;a[B>>0]=f;break}b=c[l>>2]|0;if((e|0)<65536){B=c[y>>2]|0;c[y>>2]=B+1;a[B>>0]=224+(b>>12&15);B=128+(c[l>>2]>>6&63)&255;f=c[y>>2]|0;c[y>>2]=f+1;a[f>>0]=B;f=128+(c[l>>2]&63)&255;B=c[y>>2]|0;c[y>>2]=B+1;a[B>>0]=f;break}else{f=c[y>>2]|0;c[y>>2]=f+1;a[f>>0]=240+(b>>18&7);f=128+(c[l>>2]>>12&63)&255;B=c[y>>2]|0;c[y>>2]=B+1;a[B>>0]=f;B=128+(c[l>>2]>>6&63)&255;f=c[y>>2]|0;c[y>>2]=f+1;a[f>>0]=B;f=128+(c[l>>2]&63)&255;B=c[y>>2]|0;c[y>>2]=B+1;a[B>>0]=f;break}}while(0);if((c[w>>2]|0)>>>0>=(c[o>>2]|0)>>>0){b=43;break}B=c[w>>2]|0;c[w>>2]=B+1;c[k>>2]=d[B>>0];do if((c[k>>2]|0)>=192){c[k>>2]=d[26420+((c[k>>2]|0)-192)>>0];while(1){if((c[w>>2]|0)!=(c[o>>2]|0))e=((d[c[w>>2]>>0]|0)&192|0)==128;else e=0;b=c[k>>2]|0;if(!e)break;B=c[w>>2]|0;c[w>>2]=B+1;c[k>>2]=(b<<6)+(63&(d[B>>0]|0))}if(((b|0)>=128?(c[k>>2]&-2048|0)!=55296:0)?(c[k>>2]&-2|0)!=65534:0)break;c[k>>2]=65533}while(0);if(Kq(c[m>>2]|0,c[k>>2]|0)|0)continue;if(!(Mq(c[k>>2]|0)|0)){b=43;break}}if((b|0)==20){c[p>>2]=7;B=c[p>>2]|0;i=A;return B|0}else if((b|0)==43){c[(c[v>>2]|0)+12>>2]=(c[w>>2]|0)-(c[(c[v>>2]|0)+4>>2]|0);c[c[q>>2]>>2]=c[(c[v>>2]|0)+20>>2];c[c[r>>2]>>2]=(c[y>>2]|0)-(c[(c[v>>2]|0)+20>>2]|0);c[c[s>>2]>>2]=(c[z>>2]|0)-(c[(c[v>>2]|0)+4>>2]|0);c[c[t>>2]>>2]=(c[x>>2]|0)-(c[(c[v>>2]|0)+4>>2]|0);z=(c[v>>2]|0)+16|0;B=c[z>>2]|0;c[z>>2]=B+1;c[c[u>>2]>>2]=B;c[p>>2]=0;B=c[p>>2]|0;i=A;return B|0}return 0}function Kq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=Oq(c[e>>2]|0)|0;a=a^(Pq(c[f>>2]|0,c[e>>2]|0)|0);i=d;return a|0}function Lq(a,b){a=a|0;b=b|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;f=p+32|0;g=p+28|0;o=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;m=p+8|0;h=p+4|0;n=p;c[f>>2]=a;c[g>>2]=b;c[o>>2]=c[f>>2];b=c[f>>2]|0;if((c[f>>2]|0)<128){if(!((b|0)>=65&(c[f>>2]|0)<=90)){o=c[o>>2]|0;i=p;return o|0}c[o>>2]=(c[f>>2]|0)+32;o=c[o>>2]|0;i=p;return o|0}if((b|0)>=65536){if(!((c[f>>2]|0)>=66560&(c[f>>2]|0)<66600)){o=c[o>>2]|0;i=p;return o|0}c[o>>2]=(c[f>>2]|0)+40;o=c[o>>2]|0;i=p;return o|0}c[j>>2]=162;c[k>>2]=0;c[l>>2]=-1;while(1){if((c[j>>2]|0)<(c[k>>2]|0))break;c[m>>2]=((c[j>>2]|0)+(c[k>>2]|0)|0)/2|0;c[h>>2]=(c[f>>2]|0)-(e[10902+(c[m>>2]<<2)>>1]|0);b=c[m>>2]|0;if((c[h>>2]|0)>=0){c[l>>2]=b;c[k>>2]=(c[m>>2]|0)+1;continue}else{c[j>>2]=b-1;continue}}if(((c[l>>2]|0)>=0?(c[n>>2]=10902+(c[l>>2]<<2),(c[f>>2]|0)<((e[c[n>>2]>>1]|0)+(d[(c[n>>2]|0)+3>>0]|0)|0)):0)?0==(1&(d[(c[n>>2]|0)+2>>0]|0)&((e[c[n>>2]>>1]|0)^c[f>>2])|0):0)c[o>>2]=(c[f>>2]|0)+(e[11554+((d[(c[n>>2]|0)+2>>0]|0)>>1<<1)>>1]|0)&65535;if(!(c[g>>2]|0)){o=c[o>>2]|0;i=p;return o|0}c[o>>2]=Nq(c[o>>2]|0)|0;o=c[o>>2]|0;i=p;return o|0}function Mq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g+12|0;b=g+8|0;d=g+4|0;e=g;c[b>>2]=a;c[d>>2]=134389727;c[e>>2]=221688;if((c[b>>2]|0)<768|(c[b>>2]|0)>817){c[f>>2]=0;f=c[f>>2]|0;i=g;return f|0}if((c[b>>2]|0)<800)b=c[d>>2]&1<<(c[b>>2]|0)-768;else b=c[e>>2]&1<<(c[b>>2]|0)-768-32;c[f>>2]=b;f=c[f>>2]|0;i=g;return f|0}function Nq(b){b=b|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+336|0;g=p+20|0;j=p+24|0;h=p+226|0;o=p+16|0;m=p+12|0;k=p+8|0;l=p+4|0;n=p;c[g>>2]=b;iR(j|0,11708,202)|0;b=h;d=26484;f=b+101|0;do{a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}while((b|0)<(f|0));c[o>>2]=c[g>>2]<<3|7;c[m>>2]=0;c[k>>2]=100;c[l>>2]=0;while(1){if((c[k>>2]|0)<(c[l>>2]|0))break;c[n>>2]=((c[k>>2]|0)+(c[l>>2]|0)|0)/2|0;b=c[n>>2]|0;if((c[o>>2]|0)>>>0>=(e[j+(c[n>>2]<<1)>>1]|0)>>>0){c[m>>2]=b;c[l>>2]=(c[n>>2]|0)+1;continue}else{c[k>>2]=b-1;continue}}if((c[g>>2]|0)>((e[j+(c[m>>2]<<1)>>1]>>3)+(e[j+(c[m>>2]<<1)>>1]&7)|0)){o=c[g>>2]|0;i=p;return o|0}else{o=a[h+(c[m>>2]|0)>>0]|0;i=p;return o|0}return 0}function Oq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;b=k+24|0;d=k+20|0;j=k+16|0;g=k+12|0;e=k+8|0;f=k+4|0;h=k;c[d>>2]=a;a=c[d>>2]|0;if((c[d>>2]|0)<128){c[b>>2]=(c[2340+(a>>5<<2)>>2]&1<<(c[d>>2]&31)|0)==0&1;j=c[b>>2]|0;i=k;return j|0}if((a|0)>=4194304){c[b>>2]=1;j=c[b>>2]|0;i=k;return j|0}c[j>>2]=c[d>>2]<<10|1023;c[g>>2]=0;c[e>>2]=405;c[f>>2]=0;while(1){if((c[e>>2]|0)<(c[f>>2]|0))break;c[h>>2]=((c[e>>2]|0)+(c[f>>2]|0)|0)/2|0;a=c[h>>2]|0;if((c[j>>2]|0)>>>0>=(c[2356+(c[h>>2]<<2)>>2]|0)>>>0){c[g>>2]=a;c[f>>2]=(c[h>>2]|0)+1;continue}else{c[e>>2]=a-1;continue}}c[b>>2]=(c[d>>2]|0)>>>0>=(((c[2356+(c[g>>2]<<2)>>2]|0)>>>10)+(c[2356+(c[g>>2]<<2)>>2]&1023)|0)>>>0&1;j=c[b>>2]|0;i=k;return j|0}function Pq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+24|0;d=l+20|0;f=l+16|0;g=l+12|0;j=l+8|0;h=l+4|0;k=l;c[d>>2]=a;c[f>>2]=b;a:do if((c[(c[d>>2]|0)+8>>2]|0)>0){c[g>>2]=c[(c[d>>2]|0)+12>>2];c[j>>2]=0;c[h>>2]=(c[(c[d>>2]|0)+8>>2]|0)-1;while(1){if((c[h>>2]|0)<(c[j>>2]|0))break a;c[k>>2]=((c[h>>2]|0)+(c[j>>2]|0)|0)/2|0;if((c[f>>2]|0)==(c[(c[g>>2]|0)+(c[k>>2]<<2)>>2]|0))break;d=c[k>>2]|0;if((c[f>>2]|0)>(c[(c[g>>2]|0)+(c[k>>2]<<2)>>2]|0)){c[j>>2]=d+1;continue}else{c[h>>2]=d-1;continue}}c[e>>2]=1;k=c[e>>2]|0;i=l;return k|0}while(0);c[e>>2]=0;k=c[e>>2]|0;i=l;return k|0}function Qq(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=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;t=i;i=i+64|0;j=t+48|0;k=t+44|0;l=t+40|0;g=t+36|0;u=t+32|0;r=t+28|0;s=t+24|0;o=t+20|0;h=t+16|0;m=t+12|0;q=t+8|0;n=t+4|0;p=t;c[k>>2]=a;c[l>>2]=b;c[g>>2]=e;c[u>>2]=f;c[r>>2]=c[g>>2];c[s>>2]=(c[r>>2]|0)+(c[u>>2]|0);c[h>>2]=0;while(1){if((c[r>>2]|0)>>>0>=(c[s>>2]|0)>>>0)break;u=c[r>>2]|0;c[r>>2]=u+1;c[o>>2]=d[u>>0];do if((c[o>>2]|0)>=192){c[o>>2]=d[26420+((c[o>>2]|0)-192)>>0];while(1){if((c[r>>2]|0)!=(c[s>>2]|0))b=((d[c[r>>2]>>0]|0)&192|0)==128;else b=0;f=c[o>>2]|0;if(!b)break;u=c[r>>2]|0;c[r>>2]=u+1;c[o>>2]=(f<<6)+(63&(d[u>>0]|0))}if(((f|0)>=128?(c[o>>2]&-2048|0)!=55296:0)?(c[o>>2]&-2|0)!=65534:0)break;c[o>>2]=65533}while(0);u=Oq(c[o>>2]|0)|0;if((u|0)==(c[l>>2]|0))continue;if(Mq(c[o>>2]|0)|0)continue;c[h>>2]=(c[h>>2]|0)+1}if(c[h>>2]|0){c[m>>2]=Ld(c[(c[k>>2]|0)+12>>2]|0,(c[(c[k>>2]|0)+8>>2]|0)+(c[h>>2]|0)<<2)|0;if(!(c[m>>2]|0)){c[j>>2]=7;u=c[j>>2]|0;i=t;return u|0}c[q>>2]=c[(c[k>>2]|0)+8>>2];c[r>>2]=c[g>>2];while(1){if((c[r>>2]|0)>>>0>=(c[s>>2]|0)>>>0)break;u=c[r>>2]|0;c[r>>2]=u+1;c[o>>2]=d[u>>0];do if((c[o>>2]|0)>=192){c[o>>2]=d[26420+((c[o>>2]|0)-192)>>0];while(1){if((c[r>>2]|0)!=(c[s>>2]|0))b=((d[c[r>>2]>>0]|0)&192|0)==128;else b=0;f=c[o>>2]|0;if(!b)break;u=c[r>>2]|0;c[r>>2]=u+1;c[o>>2]=(f<<6)+(63&(d[u>>0]|0))}if(((f|0)>=128?(c[o>>2]&-2048|0)!=55296:0)?(c[o>>2]&-2|0)!=65534:0)break;c[o>>2]=65533}while(0);u=Oq(c[o>>2]|0)|0;if((u|0)==(c[l>>2]|0))continue;if(Mq(c[o>>2]|0)|0)continue;c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[q>>2]|0))break;if((c[(c[m>>2]|0)+(c[n>>2]<<2)>>2]|0)>=(c[o>>2]|0))break;c[n>>2]=(c[n>>2]|0)+1}c[p>>2]=c[q>>2];while(1){if((c[p>>2]|0)<=(c[n>>2]|0))break;c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]=c[(c[m>>2]|0)+((c[p>>2]|0)-1<<2)>>2];c[p>>2]=(c[p>>2]|0)+-1}c[(c[m>>2]|0)+(c[n>>2]<<2)>>2]=c[o>>2];c[q>>2]=(c[q>>2]|0)+1}c[(c[k>>2]|0)+12>>2]=c[m>>2];c[(c[k>>2]|0)+8>>2]=c[q>>2]}c[j>>2]=0;u=c[j>>2]|0;i=t;return u|0}function Rq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;j=h+12|0;e=h+8|0;f=h+4|0;g=h;c[j>>2]=a;c[e>>2]=b;c[f>>2]=d;c[g>>2]=c[(c[j>>2]|0)+4>>2];kg(c[j>>2]|0);if(!((c[e>>2]|0)!=0?(c[(c[g>>2]|0)+48>>2]|0)==0:0)){j=c[g>>2]|0;j=j+48|0;j=c[j>>2]|0;i=h;return j|0}j=c[e>>2]|0;j=ph(0,j,((j|0)<0)<<31>>31)|0;c[(c[g>>2]|0)+48>>2]=j;c[(c[g>>2]|0)+52>>2]=c[f>>2];j=c[g>>2]|0;j=j+48|0;j=c[j>>2]|0;i=h;return j|0}function Sq(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return(d[(c[b>>2]|0)+64>>0]|0|0)==2|0}function Tq(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;i=i+16|0;l=g+12|0;k=g+8|0;j=g+4|0;h=g;c[l>>2]=b;c[k>>2]=d;c[j>>2]=e;c[h>>2]=f;a[c[h>>2]>>0]=0;f=Wb[c[(c[l>>2]|0)+36>>2]&255](c[l>>2]|0,c[k>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;i=g;return f|0}function Uq(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;c[e>>2]=It(c[d>>2]|0)|0;if(!(a[c[e>>2]>>0]|0)){i=f;return}a[c[e>>2]>>0]=0;if((Jt(c[d>>2]|0)|0)<=1){i=f;return}Kt(c[e>>2]|0)|0;i=f;return}function Vq(d,e,f,g,h,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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,J=0,K=0,L=0;L=i;i=i+112|0;s=L+96|0;t=L+92|0;u=L+88|0;v=L+84|0;w=L+80|0;l=L+76|0;x=L+72|0;y=L+68|0;o=L+64|0;D=L+60|0;E=L+56|0;H=L+52|0;B=L+48|0;F=L+44|0;m=L+40|0;J=L+36|0;C=L+32|0;I=L+28|0;p=L+24|0;G=L+20|0;r=L+16|0;n=L+12|0;q=L+8|0;z=L+4|0;A=L;c[t>>2]=d;c[u>>2]=e;c[v>>2]=f;c[w>>2]=g;c[l>>2]=h;c[x>>2]=j;c[y>>2]=k;c[D>>2]=0;c[E>>2]=0;c[H>>2]=0;c[B>>2]=0;c[F>>2]=0;c[J>>2]=0;c[C>>2]=0;c[I>>2]=(c[l>>2]&1|0)==0&1;c[p>>2]=it()|0;c[G>>2]=1024;c[r>>2]=0;c[n>>2]=0;f=c[(c[t>>2]|0)+4>>2]|0;if((f|0)>(Jr()|0))c[m>>2]=(c[(c[t>>2]|0)+4>>2]|0)+7&-8;else c[m>>2]=(Jr()|0)+7&-8;c[c[u>>2]>>2]=0;do if(((c[l>>2]&2|0)!=0?(c[B>>2]=1,(c[v>>2]|0)!=0):0)?(a[c[v>>2]>>0]|0)!=0:0){c[J>>2]=nh(0,c[v>>2]|0)|0;if(c[J>>2]|0){c[C>>2]=If(c[J>>2]|0)|0;c[v>>2]=0;break}c[s>>2]=7;K=c[s>>2]|0;i=L;return K|0}while(0);if((c[v>>2]|0)!=0?(a[c[v>>2]>>0]|0)!=0:0){c[C>>2]=(c[(c[t>>2]|0)+8>>2]|0)+1;f=c[C>>2]<<1;c[J>>2]=yh(0,f,((f|0)<0)<<31>>31)|0;if(!(c[J>>2]|0)){c[s>>2]=7;K=c[s>>2]|0;i=L;return K|0}a[c[J>>2]>>0]=0;c[E>>2]=Tq(c[t>>2]|0,c[v>>2]|0,c[C>>2]|0,c[J>>2]|0)|0;c[C>>2]=If(c[J>>2]|0)|0;f=(If(c[v>>2]|0)|0)+1|0;f=(c[v>>2]|0)+f|0;c[r>>2]=f;c[q>>2]=f;while(1){l=c[q>>2]|0;if(!(a[c[q>>2]>>0]|0))break;f=(If(l)|0)+1|0;c[q>>2]=(c[q>>2]|0)+f;f=(If(c[q>>2]|0)|0)+1|0;c[q>>2]=(c[q>>2]|0)+f}c[n>>2]=l+1-(c[r>>2]|0);if((c[E>>2]|0)==0?((c[C>>2]|0)+8|0)>(c[(c[t>>2]|0)+8>>2]|0):0)c[E>>2]=et(48375)|0;if(c[E>>2]|0){Sf(0,c[J>>2]|0);c[s>>2]=c[E>>2];K=c[s>>2]|0;i=L;return K|0}}c[o>>2]=ig(224+((c[p>>2]|0)+7&-8)+((c[(c[t>>2]|0)+4>>2]|0)+7&-8)+(c[m>>2]<<1)+(c[C>>2]|0)+1+(c[n>>2]|0)+(c[C>>2]|0)+8+2+(c[C>>2]|0)+4+2|0,0)|0;if(!(c[o>>2]|0)){Sf(0,c[J>>2]|0);c[s>>2]=7;K=c[s>>2]|0;i=L;return K|0}c[D>>2]=c[o>>2];q=(c[o>>2]|0)+224|0;c[o>>2]=q;c[(c[D>>2]|0)+212>>2]=q;q=(c[o>>2]|0)+((c[p>>2]|0)+7&-8)|0;c[o>>2]=q;c[(c[D>>2]|0)+64>>2]=q;q=(c[o>>2]|0)+((c[(c[t>>2]|0)+4>>2]|0)+7&-8)|0;c[o>>2]=q;c[(c[D>>2]|0)+72>>2]=q;q=(c[o>>2]|0)+(c[m>>2]|0)|0;c[o>>2]=q;c[(c[D>>2]|0)+68>>2]=q;q=(c[o>>2]|0)+(c[m>>2]|0)|0;c[o>>2]=q;c[(c[D>>2]|0)+176>>2]=q;if(c[J>>2]|0){q=(c[o>>2]|0)+((c[C>>2]|0)+1+(c[n>>2]|0))|0;c[o>>2]=q;c[(c[D>>2]|0)+180>>2]=q;iR(c[(c[D>>2]|0)+176>>2]|0,c[J>>2]|0,c[C>>2]|0)|0;if(c[n>>2]|0)iR((c[(c[D>>2]|0)+176>>2]|0)+((c[C>>2]|0)+1)|0,c[r>>2]|0,c[n>>2]|0)|0;iR(c[(c[D>>2]|0)+180>>2]|0,c[J>>2]|0,c[C>>2]|0)|0;l=(c[(c[D>>2]|0)+180>>2]|0)+(c[C>>2]|0)|0;h=26868;g=l+10|0;do{a[l>>0]=a[h>>0]|0;l=l+1|0;h=h+1|0}while((l|0)<(g|0));c[(c[D>>2]|0)+220>>2]=(c[(c[D>>2]|0)+180>>2]|0)+((c[C>>2]|0)+8+1);iR(c[(c[D>>2]|0)+220>>2]|0,c[J>>2]|0,c[C>>2]|0)|0;C=(c[(c[D>>2]|0)+220>>2]|0)+(c[C>>2]|0)|0;a[C>>0]=a[26878]|0;a[C+1>>0]=a[26879]|0;a[C+2>>0]=a[26880]|0;a[C+3>>0]=a[26881]|0;a[C+4>>0]=a[26882]|0;Sf(0,c[J>>2]|0)}c[c[D>>2]>>2]=c[t>>2];c[(c[D>>2]|0)+152>>2]=c[x>>2];do if((c[v>>2]|0)!=0?(a[c[v>>2]>>0]|0)!=0:0){c[z>>2]=0;c[E>>2]=Vr(c[t>>2]|0,c[(c[D>>2]|0)+176>>2]|0,c[(c[D>>2]|0)+64>>2]|0,c[x>>2]|0,z)|0;c[F>>2]=c[z>>2]&1;if(!(c[E>>2]|0)){c[A>>2]=Sr(c[(c[D>>2]|0)+64>>2]|0)|0;do if((c[F>>2]|0)==0?(Rr(c[D>>2]|0),(c[G>>2]|0)>>>0<(c[(c[D>>2]|0)+156>>2]|0)>>>0):0)if((c[(c[D>>2]|0)+156>>2]|0)>>>0>8192){c[G>>2]=8192;break}else{c[G>>2]=c[(c[D>>2]|0)+156>>2];break}while(0);J=(Hf(c[v>>2]|0,26884,0)|0)&255;a[(c[D>>2]|0)+14>>0]=J;if((c[A>>2]&8192|0)==0?(Hf(c[v>>2]|0,26891,0)|0)==0:0)break;c[x>>2]=c[x>>2]|1;K=39}}else K=39;while(0);if((K|0)==39){c[H>>2]=1;a[(c[D>>2]|0)+17>>0]=1;a[(c[D>>2]|0)+18>>0]=4;a[(c[D>>2]|0)+14>>0]=1;c[F>>2]=c[x>>2]&1}if(!(c[E>>2]|0))c[E>>2]=Qi(c[D>>2]|0,G,-1)|0;if(!(c[E>>2]|0)){c[w>>2]=(c[w>>2]|0)+7&-8;c[E>>2]=kt(c[G>>2]|0,c[w>>2]|0,((c[B>>2]|0)!=0^1)&1,(c[B>>2]|0)!=0^1?186:0,c[D>>2]|0,c[(c[D>>2]|0)+212>>2]|0)|0}if(c[E>>2]|0){hr(c[(c[D>>2]|0)+64>>2]|0)|0;Wi(c[(c[D>>2]|0)+208>>2]|0);Kd(c[D>>2]|0);c[s>>2]=c[E>>2];K=c[s>>2]|0;i=L;return K|0}a[(c[D>>2]|0)+6>>0]=c[I>>2];c[(c[D>>2]|0)+164>>2]=1073741823;a[(c[D>>2]|0)+13>>0]=c[H>>2];a[(c[D>>2]|0)+4>>0]=c[H>>2];a[(c[D>>2]|0)+19>>0]=a[(c[D>>2]|0)+13>>0]|0;a[(c[D>>2]|0)+16>>0]=c[B>>2];a[(c[D>>2]|0)+15>>0]=c[F>>2];a[(c[D>>2]|0)+7>>0]=a[(c[D>>2]|0)+13>>0]|0;if(!(a[(c[D>>2]|0)+7>>0]|0)){a[(c[D>>2]|0)+8>>0]=1;a[(c[D>>2]|0)+9>>0]=0;a[(c[D>>2]|0)+12>>0]=2;a[(c[D>>2]|0)+11>>0]=34;a[(c[D>>2]|0)+10>>0]=2}b[(c[D>>2]|0)+148>>1]=c[w>>2];K=(c[D>>2]|0)+168|0;c[K>>2]=-1;c[K+4>>2]=-1;Rr(c[D>>2]|0);if(c[I>>2]|0){if(c[B>>2]|0)a[(c[D>>2]|0)+5>>0]=4}else a[(c[D>>2]|0)+5>>0]=2;c[(c[D>>2]|0)+204>>2]=c[y>>2];c[c[u>>2]>>2]=c[D>>2];c[s>>2]=0;K=c[s>>2]|0;i=L;return K|0}function Wq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;b=g;d=c[b+4>>2]|0;a=(c[f>>2]|0)+136|0;c[a>>2]=c[b>>2];c[a+4>>2]=d;Xi(c[f>>2]|0);i=e;return}function Xq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[h>>2]=0;kR(c[g>>2]|0,0,c[f>>2]|0)|0;if(!(c[c[(c[e>>2]|0)+64>>2]>>2]|0)){h=c[h>>2]|0;i=j;return h|0}a=Wr(c[(c[e>>2]|0)+64>>2]|0,c[g>>2]|0,c[f>>2]|0,0,0)|0;c[h>>2]=a;c[h>>2]=(c[h>>2]|0)==522?0:a;h=c[h>>2]|0;i=j;return h|0}function Yq(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];a=ht((c[(c[d>>2]|0)+4>>2]|0)+448|0)|0;i=b;return a|0}function Zq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+16|0;e=g+12|0;j=g+8|0;h=g+4|0;f=g;c[e>>2]=a;c[j>>2]=b;c[h>>2]=d;c[(c[e>>2]|0)+184>>2]=c[j>>2];c[(c[e>>2]|0)+188>>2]=c[h>>2];if(!(c[c[(c[e>>2]|0)+64>>2]>>2]|0)){i=g;return}c[f>>2]=(c[e>>2]|0)+184;Js(c[(c[e>>2]|0)+64>>2]|0,15,c[f>>2]|0);i=g;return}function _q(b){b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=b;i=e;return a[(c[d>>2]|0)+15>>0]|0}function $q(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return(d[c[b>>2]>>0]|0)<<24|(d[(c[b>>2]|0)+1>>0]|0)<<16|(d[(c[b>>2]|0)+2>>0]|0)<<8|(d[(c[b>>2]|0)+3>>0]|0)|0}function ar(b){b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=b;c[f>>2]=c[(c[e>>2]|0)+208>>2];Sj();br(c[e>>2]|0);a[(c[e>>2]|0)+4>>0]=0;cr(c[(c[e>>2]|0)+216>>2]|0,d[(c[e>>2]|0)+10>>0]|0,c[(c[e>>2]|0)+160>>2]|0,c[f>>2]|0)|0;c[(c[e>>2]|0)+216>>2]=0;Ui(c[e>>2]|0);b=c[e>>2]|0;if(a[(c[e>>2]|0)+16>>0]|0)dr(b);else{if(c[c[b+68>>2]>>2]|0){b=c[e>>2]|0;fr(b,er(c[e>>2]|0)|0)|0}gr(c[e>>2]|0)}Tj();hr(c[(c[e>>2]|0)+68>>2]|0)|0;hr(c[(c[e>>2]|0)+64>>2]|0)|0;Wi(c[f>>2]|0);ir(c[(c[e>>2]|0)+212>>2]|0);Kd(c[e>>2]|0);i=g;return 0}function br(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;f=e+8|0;b=e+4|0;d=e;c[f>>2]=a;c[b>>2]=c[(c[f>>2]|0)+144>>2];while(1){if(!(c[b>>2]|0))break;c[d>>2]=c[(c[b>>2]|0)+12>>2];Kd(c[b>>2]|0);c[b>>2]=c[d>>2]}i=e;return}function cr(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;h=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;o=p+8|0;n=p+4|0;m=p;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[l>>2]=g;c[o>>2]=0;if(!(c[h>>2]|0)){g=c[o>>2]|0;i=p;return g|0}c[n>>2]=0;c[o>>2]=Hs(c[(c[h>>2]|0)+4>>2]|0,4)|0;do if(!(c[o>>2]|0)){if(!(d[(c[h>>2]|0)+43>>0]|0))a[(c[h>>2]|0)+43>>0]=1;c[o>>2]=Is(c[h>>2]|0,0,0,0,c[j>>2]|0,c[k>>2]|0,c[l>>2]|0,0,0)|0;if(!(c[o>>2]|0)){c[m>>2]=-1;Js(c[(c[h>>2]|0)+4>>2]|0,10,m);if((c[m>>2]|0)!=1){c[n>>2]=1;break}g=(c[h>>2]|0)+16|0;e=c[g+4>>2]|0;if((e|0)>0|(e|0)==0&(c[g>>2]|0)>>>0>=0)Ks(c[h>>2]|0,0,0)}}while(0);Ls(c[h>>2]|0,c[n>>2]|0);hr(c[(c[h>>2]|0)+8>>2]|0)|0;if(c[n>>2]|0){Sj();qr(c[c[h>>2]>>2]|0,c[(c[h>>2]|0)+108>>2]|0,0)|0;Tj()}Kd(c[(c[h>>2]|0)+32>>2]|0);Kd(c[h>>2]|0);g=c[o>>2]|0;i=p;return g|0}function dr(b){b=b|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;e=h+8|0;g=h+4|0;f=h;c[e>>2]=b;kj(c[(c[e>>2]|0)+60>>2]|0);c[(c[e>>2]|0)+60>>2]=0;lr(c[e>>2]|0);j=(sr(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!j){if(!(a[b+4>>0]|0)){if(c[c[(c[e>>2]|0)+64>>2]>>2]|0)b=Sr(c[(c[e>>2]|0)+64>>2]|0)|0;else b=0;c[f>>2]=b;if(!(0!=(c[f>>2]&2048|0)?1==(d[(c[e>>2]|0)+5>>0]&5|0):0))hr(c[(c[e>>2]|0)+68>>2]|0)|0;c[g>>2]=wr(c[e>>2]|0,0)|0;if((c[g>>2]|0)!=0?(d[(c[e>>2]|0)+17>>0]|0)==6:0)a[(c[e>>2]|0)+18>>0]=5;a[(c[e>>2]|0)+19>>0]=0;a[(c[e>>2]|0)+17>>0]=0}}else{Gs(c[b+216>>2]|0);a[(c[e>>2]|0)+17>>0]=0}if(!(c[(c[e>>2]|0)+44>>2]|0)){j=c[e>>2]|0;j=j+80|0;g=j;c[g>>2]=0;j=j+4|0;c[j>>2]=0;j=c[e>>2]|0;j=j+88|0;g=j;c[g>>2]=0;j=j+4|0;c[j>>2]=0;j=c[e>>2]|0;j=j+20|0;a[j>>0]=0;i=h;return}Ui(c[e>>2]|0);a[(c[e>>2]|0)+19>>0]=a[(c[e>>2]|0)+13>>0]|0;a[(c[e>>2]|0)+17>>0]=0;c[(c[e>>2]|0)+44>>2]=0;j=c[e>>2]|0;j=j+80|0;g=j;c[g>>2]=0;j=j+4|0;c[j>>2]=0;j=c[e>>2]|0;j=j+88|0;g=j;c[g>>2]=0;j=j+4|0;c[j>>2]=0;j=c[e>>2]|0;j=j+20|0;a[j>>0]=0;i=h;return}function er(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;c[e>>2]=0;if(!(a[(c[d>>2]|0)+7>>0]|0))c[e>>2]=or(c[(c[d>>2]|0)+68>>2]|0,2)|0;if(c[e>>2]|0){e=c[e>>2]|0;i=f;return e|0}c[e>>2]=Si(c[(c[d>>2]|0)+68>>2]|0,(c[d>>2]|0)+88|0)|0;e=c[e>>2]|0;i=f;return e|0}function fr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+8|0;f=g+4|0;h=g;c[e>>2]=b;c[f>>2]=d;c[h>>2]=c[f>>2]&255;if(!((c[h>>2]|0)==13|(c[h>>2]|0)==10)){h=c[f>>2]|0;i=g;return h|0}c[(c[e>>2]|0)+44>>2]=c[f>>2];a[(c[e>>2]|0)+17>>0]=6;h=c[f>>2]|0;i=g;return h|0}function gr(b){b=b|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=b;do if((d[(c[e>>2]|0)+17>>0]|0)!=6?(d[(c[e>>2]|0)+17>>0]|0)!=0:0){if((d[(c[e>>2]|0)+17>>0]|0)>=2){Sj();jr(c[e>>2]|0)|0;Tj();break}if(!(a[(c[e>>2]|0)+4>>0]|0))kr(c[e>>2]|0,0,0)|0}while(0);dr(c[e>>2]|0);i=f;return}function hr(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=0;if(!(c[c[b>>2]>>2]|0)){d=c[d>>2]|0;i=e;return d|0}c[d>>2]=Tb[c[(c[c[b>>2]>>2]|0)+4>>2]&255](c[b>>2]|0)|0;c[c[b>>2]>>2]=0;d=c[d>>2]|0;i=e;return d|0}function ir(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Qb[c[156>>2]&255](c[(c[d>>2]|0)+44>>2]|0);i=b;return}function jr(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;h=k+8|0;j=k+4|0;g=k;c[f>>2]=b;c[h>>2]=0;b=c[f>>2]|0;if((d[(c[f>>2]|0)+17>>0]|0)==6){c[e>>2]=c[b+44>>2];j=c[e>>2]|0;i=k;return j|0}if((d[b+17>>0]|0)<=1){c[e>>2]=0;j=c[e>>2]|0;i=k;return j|0}l=(sr(c[f>>2]|0)|0)!=0;b=c[f>>2]|0;do if(l){c[h>>2]=Kr(b,2,-1)|0;c[j>>2]=kr(c[f>>2]|0,d[(c[f>>2]|0)+20>>0]|0,0)|0;if(!(c[h>>2]|0))c[h>>2]=c[j>>2]}else{if((c[c[b+68>>2]>>2]|0)!=0?(d[(c[f>>2]|0)+17>>0]|0)!=2:0){ -c[h>>2]=Lr(c[f>>2]|0,0)|0;break}c[g>>2]=d[(c[f>>2]|0)+17>>0];c[h>>2]=kr(c[f>>2]|0,0,0)|0;if((c[g>>2]|0)>2?(a[(c[f>>2]|0)+16>>0]|0)==0:0){c[(c[f>>2]|0)+44>>2]=4;a[(c[f>>2]|0)+17>>0]=6;c[e>>2]=c[h>>2];l=c[e>>2]|0;i=k;return l|0}}while(0);c[e>>2]=fr(c[f>>2]|0,c[h>>2]|0)|0;l=c[e>>2]|0;i=k;return l|0}function kr(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+24|0;h=o+20|0;j=o+16|0;k=o+12|0;m=o+8|0;n=o+4|0;l=o;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=0;c[n>>2]=0;if((d[(c[h>>2]|0)+17>>0]|0)<2?(d[(c[h>>2]|0)+18>>0]|0)<2:0){c[g>>2]=0;n=c[g>>2]|0;i=o;return n|0}lr(c[h>>2]|0);a:do if(c[c[(c[h>>2]|0)+68>>2]>>2]|0){b=(mr(c[(c[h>>2]|0)+68>>2]|0)|0)!=0;f=c[h>>2]|0;if(b){hr(c[f+68>>2]|0)|0;break}e=c[h>>2]|0;if((d[f+5>>0]|0)==3){l=e+80|0;if(!((c[l>>2]|0)==0&(c[l+4>>2]|0)==0)){c[m>>2]=nr(c[(c[h>>2]|0)+68>>2]|0,0,0)|0;if((c[m>>2]|0)==0?(d[(c[h>>2]|0)+8>>0]|0)!=0:0)c[m>>2]=or(c[(c[h>>2]|0)+68>>2]|0,d[(c[h>>2]|0)+12>>0]|0)|0}else c[m>>2]=0;l=(c[h>>2]|0)+80|0;c[l>>2]=0;c[l+4>>2]=0;break}else{do if((d[e+5>>0]|0)!=1){if((d[(c[h>>2]|0)+4>>0]|0)!=0?(d[(c[h>>2]|0)+5>>0]|0)!=5:0)break;c[l>>2]=((a[(c[h>>2]|0)+13>>0]|0)!=0?0:1)&1;hr(c[(c[h>>2]|0)+68>>2]|0)|0;if(!(c[l>>2]|0))break a;c[m>>2]=qr(c[c[h>>2]>>2]|0,c[(c[h>>2]|0)+180>>2]|0,d[(c[h>>2]|0)+9>>0]|0)|0;break a}while(0);c[m>>2]=pr(c[h>>2]|0,c[j>>2]|0)|0;l=(c[h>>2]|0)+80|0;c[l>>2]=0;c[l+4>>2]=0;break}}while(0);kj(c[(c[h>>2]|0)+60>>2]|0);c[(c[h>>2]|0)+60>>2]=0;c[(c[h>>2]|0)+48>>2]=0;rr(c[(c[h>>2]|0)+212>>2]|0);aj(c[(c[h>>2]|0)+212>>2]|0,c[(c[h>>2]|0)+28>>2]|0);if(!(sr(c[h>>2]|0)|0)){if((c[m>>2]|0)==0&(c[k>>2]|0)!=0?(c[(c[h>>2]|0)+36>>2]|0)>>>0>(c[(c[h>>2]|0)+28>>2]|0)>>>0:0)c[m>>2]=ur(c[h>>2]|0,c[(c[h>>2]|0)+28>>2]|0)|0}else c[n>>2]=tr(c[(c[h>>2]|0)+216>>2]|0)|0;if((c[m>>2]|0)==0&(c[k>>2]|0)!=0?(c[c[(c[h>>2]|0)+64>>2]>>2]|0)!=0:0){l=vi(c[(c[h>>2]|0)+64>>2]|0,22,0)|0;c[m>>2]=l;c[m>>2]=(c[m>>2]|0)==12?0:l}do if(!(a[(c[h>>2]|0)+4>>0]|0)){if((sr(c[h>>2]|0)|0)!=0?(vr(c[(c[h>>2]|0)+216>>2]|0,0)|0)==0:0)break;c[n>>2]=wr(c[h>>2]|0,1)|0;a[(c[h>>2]|0)+19>>0]=0}while(0);a[(c[h>>2]|0)+17>>0]=1;a[(c[h>>2]|0)+20>>0]=0;c[g>>2]=(c[m>>2]|0)==0?c[n>>2]|0:c[m>>2]|0;n=c[g>>2]|0;i=o;return n|0}function lr(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[d>>2]|0)+104>>2]|0))break;kj(c[(c[(c[d>>2]|0)+100>>2]|0)+((c[e>>2]|0)*48|0)+16>>2]|0);c[e>>2]=(c[e>>2]|0)+1}if(!((a[(c[d>>2]|0)+4>>0]|0)!=0?(mr(c[(c[d>>2]|0)+72>>2]|0)|0)==0:0))hr(c[(c[d>>2]|0)+72>>2]|0)|0;Kd(c[(c[d>>2]|0)+100>>2]|0);c[(c[d>>2]|0)+100>>2]=0;c[(c[d>>2]|0)+104>>2]=0;c[(c[d>>2]|0)+56>>2]=0;i=f;return}function mr(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[c[b>>2]>>2]|0)==4836|0}function nr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;a=g;a=Ob[c[(c[c[f>>2]>>2]|0)+16>>2]&255](c[f>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;i=e;return a|0}function or(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=Yb[c[(c[c[f>>2]>>2]|0)+20>>2]&255](c[f>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function pr(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;f=l+24|0;g=l+20|0;j=l+16|0;h=l+8|0;k=l;c[f>>2]=b;c[g>>2]=e;c[j>>2]=0;b=(c[f>>2]|0)+80|0;if(!((c[b>>2]|0)!=0|(c[b+4>>2]|0)!=0)){k=c[j>>2]|0;i=l;return k|0}m=(c[f>>2]|0)+168|0;e=c[m+4>>2]|0;b=h;c[b>>2]=c[m>>2];c[b+4>>2]=e;b=h;e=c[(c[f>>2]|0)+68>>2]|0;if((c[g>>2]|0)!=0|(c[b>>2]|0)==0&(c[b+4>>2]|0)==0)c[j>>2]=nr(e,0,0)|0;else c[j>>2]=Fg(e,26703,28,0,0)|0;if((c[j>>2]|0)==0?(a[(c[f>>2]|0)+7>>0]|0)==0:0)c[j>>2]=or(c[(c[f>>2]|0)+68>>2]|0,16|d[(c[f>>2]|0)+12>>0])|0;m=h;g=c[m+4>>2]|0;if(!((c[j>>2]|0)==0&((g|0)>0|(g|0)==0&(c[m>>2]|0)>>>0>0))){m=c[j>>2]|0;i=l;return m|0}c[j>>2]=Si(c[(c[f>>2]|0)+68>>2]|0,k)|0;if(c[j>>2]|0){m=c[j>>2]|0;i=l;return m|0}b=c[k+4>>2]|0;m=h;g=c[m+4>>2]|0;if(!((b|0)>(g|0)|((b|0)==(g|0)?(c[k>>2]|0)>>>0>(c[m>>2]|0)>>>0:0))){m=c[j>>2]|0;i=l;return m|0}m=h;c[j>>2]=nr(c[(c[f>>2]|0)+68>>2]|0,c[m>>2]|0,c[m+4>>2]|0)|0;m=c[j>>2]|0;i=l;return m|0}function qr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;b=Ob[c[(c[h>>2]|0)+28>>2]&255](c[h>>2]|0,c[g>>2]|0,c[f>>2]|0)|0;i=e;return b|0}function rr(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;while(1){a=c[c[b>>2]>>2]|0;c[d>>2]=a;if(!a)break;bj(c[d>>2]|0)}i=e;return}function sr(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[(c[b>>2]|0)+216>>2]|0)!=0|0}function tr(b){b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=b;if(!(a[(c[d>>2]|0)+44>>0]|0)){i=e;return 0}Br(c[d>>2]|0,0,1);a[(c[d>>2]|0)+44>>0]=0;c[(c[d>>2]|0)+104>>2]=0;a[(c[d>>2]|0)+47>>0]=0;i=e;return 0}function ur(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+48|0;e=m+32|0;f=m+28|0;k=m+24|0;g=m+8|0;h=m;l=m+20|0;j=m+16|0;c[e>>2]=a;c[f>>2]=b;c[k>>2]=0;if(!(c[c[(c[e>>2]|0)+64>>2]>>2]|0)){l=c[k>>2]|0;i=m;return l|0}if((d[(c[e>>2]|0)+17>>0]|0|0)<4?(d[(c[e>>2]|0)+17>>0]|0|0)!=0:0){l=c[k>>2]|0;i=m;return l|0}c[l>>2]=c[(c[e>>2]|0)+160>>2];c[k>>2]=Si(c[(c[e>>2]|0)+64>>2]|0,g)|0;b=c[l>>2]|0;b=rR(b|0,((b|0)<0)<<31>>31|0,c[f>>2]|0,0)|0;a=h;c[a>>2]=b;c[a+4>>2]=C;if(c[k>>2]|0){l=c[k>>2]|0;i=m;return l|0}b=g;a=h;if(!((c[b>>2]|0)!=(c[a>>2]|0)?1:(c[b+4>>2]|0)!=(c[a+4>>2]|0))){l=c[k>>2]|0;i=m;return l|0}b=g;o=c[b+4>>2]|0;a=h;n=c[a+4>>2]|0;if(!((o|0)>(n|0)|((o|0)==(n|0)?(c[b>>2]|0)>>>0>(c[a>>2]|0)>>>0:0))){b=g;n=c[l>>2]|0;n=gR(c[b>>2]|0,c[b+4>>2]|0,n|0,((n|0)<0)<<31>>31|0)|0;b=C;o=h;a=c[o+4>>2]|0;if((b|0)<(a|0)|((b|0)==(a|0)?n>>>0<=(c[o>>2]|0)>>>0:0)){c[j>>2]=c[(c[e>>2]|0)+208>>2];kR(c[j>>2]|0,0,c[l>>2]|0)|0;a=c[(c[e>>2]|0)+64>>2]|0;j=c[j>>2]|0;n=c[l>>2]|0;o=c[l>>2]|0;o=fR(c[h>>2]|0,c[h+4>>2]|0,o|0,((o|0)<0)<<31>>31|0)|0;c[k>>2]=Fg(a,j,n,o,C)|0}}else{o=h;c[k>>2]=nr(c[(c[e>>2]|0)+64>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0}if(c[k>>2]|0){o=c[k>>2]|0;i=m;return o|0}c[(c[e>>2]|0)+36>>2]=c[f>>2];o=c[k>>2]|0;i=m;return o|0}function vr(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k+8|0;h=k+4|0;j=k;c[g>>2]=e;c[h>>2]=f;if(c[h>>2]|0){f=c[g>>2]|0;if((c[h>>2]|0)>0){zr(f,3+(b[(c[g>>2]|0)+40>>1]|0)|0);a[(c[g>>2]|0)+43>>0]=1;c[j>>2]=1;j=c[j>>2]|0;i=k;return j|0}else{c[j>>2]=(d[f+43>>0]|0)==0&1;j=c[j>>2]|0;i=k;return j|0}}if(!(a[(c[g>>2]|0)+43>>0]|0)){c[j>>2]=0;j=c[j>>2]|0;i=k;return j|0}a[(c[g>>2]|0)+43>>0]=0;if(yr(c[g>>2]|0,3+(b[(c[g>>2]|0)+40>>1]|0)|0)|0)a[(c[g>>2]|0)+43>>0]=1;c[j>>2]=(d[(c[g>>2]|0)+43>>0]|0)==0&1;j=c[j>>2]|0;i=k;return j|0}function wr(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[g>>2]=e;c[h>>2]=0;if(!(c[c[(c[f>>2]|0)+64>>2]>>2]|0)){h=c[h>>2]|0;i=j;return h|0}if(d[(c[f>>2]|0)+14>>0]|0)e=0;else e=xr(c[(c[f>>2]|0)+64>>2]|0,c[g>>2]|0)|0;c[h>>2]=e;if((d[(c[f>>2]|0)+18>>0]|0|0)==5){h=c[h>>2]|0;i=j;return h|0}a[(c[f>>2]|0)+18>>0]=c[g>>2];h=c[h>>2]|0;i=j;return h|0}function xr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;b=Yb[c[(c[c[f>>2]>>2]|0)+32>>2]&255](c[f>>2]|0,c[e>>2]|0)|0;i=d;return b|0}function yr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[g>>2]=d;if(a[(c[f>>2]|0)+43>>0]|0){c[e>>2]=0;h=c[e>>2]|0;i=j;return h|0}else{c[h>>2]=Ar(c[(c[f>>2]|0)+4>>2]|0,c[g>>2]|0,1,6)|0;c[e>>2]=c[h>>2];h=c[e>>2]|0;i=j;return h|0}return 0}function zr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=b;c[f>>2]=d;if(a[(c[e>>2]|0)+43>>0]|0){i=g;return}Ar(c[(c[e>>2]|0)+4>>2]|0,c[f>>2]|0,1,5)|0;i=g;return}function Ar(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;b=Wb[c[(c[c[k>>2]>>2]|0)+56>>2]&255](c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;i=f;return b|0}function Br(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;if(a[(c[f>>2]|0)+43>>0]|0){i=j;return}Ar(c[(c[f>>2]|0)+4>>2]|0,c[g>>2]|0,c[h>>2]|0,9)|0;i=j;return}function Cr(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Fr(c[d>>2]|0,0,0)|0;i=b;return 0}function Dr(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=i;i=i+64|0;t=r+52|0;s=r+48|0;n=r+44|0;o=r+8|0;p=r+40|0;m=r+36|0;l=r+32|0;g=r+28|0;q=r+24|0;h=r;j=r+20|0;k=r+16|0;c[t>>2]=a;c[s>>2]=b;c[n>>2]=d;d=o;c[d>>2]=e;c[d+4>>2]=f;c[p>>2]=c[t>>2];c[m>>2]=c[s>>2];c[l>>2]=c[n>>2];d=(c[p>>2]|0)+24|0;a=o;b=o;a:do if(((c[d>>2]|0)!=(c[a>>2]|0)?1:(c[d+4>>2]|0)!=(c[a+4>>2]|0))|(c[b>>2]|0)==0&(c[b+4>>2]|0)==0){t=h;c[t>>2]=0;c[t+4>>2]=0;c[q>>2]=c[(c[p>>2]|0)+4>>2];while(1){if(!(c[q>>2]|0))break a;s=h;s=gR(c[s>>2]|0,c[s+4>>2]|0,1020,0)|0;a=C;t=o;b=c[t+4>>2]|0;if(!((a|0)<(b|0)|((a|0)==(b|0)?s>>>0<=(c[t>>2]|0)>>>0:0)))break a;s=h;s=gR(c[s>>2]|0,c[s+4>>2]|0,1020,0)|0;t=h;c[t>>2]=s;c[t+4>>2]=C;c[q>>2]=c[c[q>>2]>>2]}}else c[q>>2]=c[(c[p>>2]|0)+24+8>>2];while(0);t=o;t=qR(c[t>>2]|0,c[t+4>>2]|0,1020,0)|0;c[g>>2]=t;while(1){c[j>>2]=1020-(c[g>>2]|0);c[k>>2]=(c[l>>2]|0)<(1020-(c[g>>2]|0)|0)?c[l>>2]|0:1020-(c[g>>2]|0)|0;iR(c[m>>2]|0,(c[q>>2]|0)+4+(c[g>>2]|0)|0,c[k>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+(c[k>>2]|0);c[l>>2]=(c[l>>2]|0)-(c[j>>2]|0);c[g>>2]=0;if((c[l>>2]|0)<0){e=10;break}t=c[c[q>>2]>>2]|0;c[q>>2]=t;if(!((t|0)!=0&(c[l>>2]|0)>0)){e=10;break}}if((e|0)==10){t=o;s=c[n>>2]|0;s=gR(c[t>>2]|0,c[t+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;t=(c[p>>2]|0)+24|0;c[t>>2]=s;c[t+4>>2]=C;c[(c[p>>2]|0)+24+8>>2]=c[q>>2];i=r;return 0}return 0}function Er(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=i;i=i+64|0;o=p+48|0;s=p+44|0;q=p+40|0;r=p+36|0;k=p+32|0;j=p+28|0;n=p+24|0;l=p+20|0;g=p+16|0;h=p+12|0;m=p+8|0;c[s>>2]=a;c[q>>2]=b;c[r>>2]=d;b=p;c[b>>2]=e;c[b+4>>2]=f;c[k>>2]=c[s>>2];c[j>>2]=c[r>>2];c[n>>2]=c[q>>2];while(1){if((c[j>>2]|0)<=0){e=11;break}c[l>>2]=c[(c[k>>2]|0)+8+8>>2];s=(c[k>>2]|0)+8|0;s=qR(c[s>>2]|0,c[s+4>>2]|0,1020,0)|0;c[g>>2]=s;c[h>>2]=(c[j>>2]|0)<(1020-(c[g>>2]|0)|0)?c[j>>2]|0:1020-(c[g>>2]|0)|0;if(!(c[g>>2]|0)){c[m>>2]=Id(1024)|0;if(!(c[m>>2]|0)){e=5;break}c[c[m>>2]>>2]=0;e=c[m>>2]|0;if(c[l>>2]|0)c[c[l>>2]>>2]=e;else c[(c[k>>2]|0)+4>>2]=e;c[(c[k>>2]|0)+8+8>>2]=c[m>>2]}iR((c[(c[k>>2]|0)+8+8>>2]|0)+4+(c[g>>2]|0)|0,c[n>>2]|0,c[h>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+(c[h>>2]|0);c[j>>2]=(c[j>>2]|0)-(c[h>>2]|0);r=c[h>>2]|0;s=(c[k>>2]|0)+8|0;q=s;r=gR(c[q>>2]|0,c[q+4>>2]|0,r|0,((r|0)<0)<<31>>31|0)|0;c[s>>2]=r;c[s+4>>2]=C}if((e|0)==5){c[o>>2]=3082;s=c[o>>2]|0;i=p;return s|0}else if((e|0)==11){c[o>>2]=0;s=c[o>>2]|0;i=p;return s|0}return 0}function Fr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;e=h+20|0;j=h+16|0;f=h+12|0;g=h+8|0;c[e>>2]=a;a=h;c[a>>2]=b;c[a+4>>2]=d;c[j>>2]=c[e>>2];c[f>>2]=c[(c[j>>2]|0)+4>>2];while(1){if(!(c[f>>2]|0))break;c[g>>2]=c[f>>2];c[f>>2]=c[c[f>>2]>>2];Kd(c[g>>2]|0)}Ir(c[e>>2]|0);i=h;return 0}function Gr(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 0}function Hr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;f=d+4|0;e=d;c[g>>2]=a;c[f>>2]=b;c[e>>2]=c[g>>2];e=(c[e>>2]|0)+8|0;a=c[e+4>>2]|0;b=c[f>>2]|0;c[b>>2]=c[e>>2];c[b+4>>2]=a;i=d;return 0}function Ir(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];a=c[d>>2]|0;kR(a|0,0,Jr()|0)|0;c[c[d>>2]>>2]=4836;i=b;return}function Jr(){return 40}function Kr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;j=m+24|0;e=m+20|0;f=m+16|0;l=m+12|0;g=m+8|0;h=m+4|0;k=m;c[j>>2]=a;c[e>>2]=b;c[f>>2]=d;c[l>>2]=c[(c[j>>2]|0)+44>>2];if(c[l>>2]|0){l=c[l>>2]|0;i=m;return l|0}if((c[f>>2]|0)>=(c[(c[j>>2]|0)+104>>2]|0)){l=c[l>>2]|0;i=m;return l|0}c[h>>2]=(c[f>>2]|0)+((c[e>>2]|0)==1?0:1);c[g>>2]=c[h>>2];while(1){if((c[g>>2]|0)>=(c[(c[j>>2]|0)+104>>2]|0))break;kj(c[(c[(c[j>>2]|0)+100>>2]|0)+((c[g>>2]|0)*48|0)+16>>2]|0);c[g>>2]=(c[g>>2]|0)+1}c[(c[j>>2]|0)+104>>2]=c[h>>2];if((c[e>>2]|0)!=1){if((sr(c[j>>2]|0)|0)==0?(c[c[(c[j>>2]|0)+68>>2]>>2]|0)==0:0){l=c[l>>2]|0;i=m;return l|0}if(!(c[h>>2]|0))e=0;else e=(c[(c[j>>2]|0)+100>>2]|0)+(((c[h>>2]|0)-1|0)*48|0)|0;c[k>>2]=e;c[l>>2]=gs(c[j>>2]|0,c[k>>2]|0)|0;l=c[l>>2]|0;i=m;return l|0}if(c[h>>2]|0){l=c[l>>2]|0;i=m;return l|0}if(!(c[c[(c[j>>2]|0)+72>>2]>>2]|0)){l=c[l>>2]|0;i=m;return l|0}if(mr(c[(c[j>>2]|0)+72>>2]|0)|0)c[l>>2]=nr(c[(c[j>>2]|0)+72>>2]|0,0,0)|0;c[(c[j>>2]|0)+56>>2]=0;l=c[l>>2]|0;i=m;return l|0}function Lr(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+64|0;r=t+8|0;m=t+56|0;n=t+52|0;j=t+48|0;k=t;g=t+44|0;l=t+40|0;f=t+36|0;p=t+32|0;q=t+28|0;s=t+24|0;h=t+20|0;o=t+16|0;c[m>>2]=b;c[n>>2]=e;c[j>>2]=c[c[m>>2]>>2];c[f>>2]=0;c[q>>2]=1;c[s>>2]=0;c[o>>2]=0;c[p>>2]=Si(c[(c[m>>2]|0)+68>>2]|0,k)|0;a:do if(!(c[p>>2]|0)){c[s>>2]=c[(c[m>>2]|0)+208>>2];c[p>>2]=Mr(c[(c[m>>2]|0)+68>>2]|0,c[s>>2]|0,(c[(c[c[m>>2]>>2]|0)+8>>2]|0)+1|0)|0;if((c[p>>2]|0)==0?(a[c[s>>2]>>0]|0)!=0:0)c[p>>2]=Nr(c[j>>2]|0,c[s>>2]|0,0,q)|0;c[s>>2]=0;if((c[p>>2]|0)==0&(c[q>>2]|0)!=0){j=(c[m>>2]|0)+80|0;c[j>>2]=0;c[j+4>>2]=0;c[h>>2]=c[n>>2];b:while(1){j=k;c[p>>2]=Or(c[m>>2]|0,c[n>>2]|0,c[j>>2]|0,c[j+4>>2]|0,g,f)|0;if(c[p>>2]|0){e=8;break}if((c[g>>2]|0)==-1){b=k;b=fR(c[b>>2]|0,c[b+4>>2]|0,c[(c[m>>2]|0)+156>>2]|0,0)|0;j=(c[(c[m>>2]|0)+160>>2]|0)+8|0;j=pR(b|0,C|0,j|0,((j|0)<0)<<31>>31|0)|0;c[g>>2]=j}if(!((c[g>>2]|0)!=0|(c[n>>2]|0)!=0)?(b=(c[m>>2]|0)+88|0,b=gR(c[b>>2]|0,c[b+4>>2]|0,c[(c[m>>2]|0)+156>>2]|0,0)|0,j=(c[m>>2]|0)+80|0,(b|0)==(c[j>>2]|0)?(C|0)==(c[j+4>>2]|0):0):0){j=k;b=(c[m>>2]|0)+80|0;b=fR(c[j>>2]|0,c[j+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;j=(c[(c[m>>2]|0)+160>>2]|0)+8|0;j=pR(b|0,C|0,j|0,((j|0)<0)<<31>>31|0)|0;c[g>>2]=j}j=(c[m>>2]|0)+80|0;if((c[j+4>>2]|0)==0?(c[j>>2]|0)==(c[(c[m>>2]|0)+156>>2]|0):0){c[p>>2]=ur(c[m>>2]|0,c[f>>2]|0)|0;if(c[p>>2]|0)break a;c[(c[m>>2]|0)+28>>2]=c[f>>2]}c[l>>2]=0;while(1){if((c[l>>2]|0)>>>0>=(c[g>>2]|0)>>>0)continue b;if(c[h>>2]|0){Ui(c[m>>2]|0);c[h>>2]=0}c[p>>2]=Pr(c[m>>2]|0,(c[m>>2]|0)+80|0,0,1,0)|0;if(c[p>>2]|0)break;c[o>>2]=(c[o>>2]|0)+1;c[l>>2]=(c[l>>2]|0)+1}if((c[p>>2]|0)!=101){e=26;break}e=k;b=c[e+4>>2]|0;j=(c[m>>2]|0)+80|0;c[j>>2]=c[e>>2];c[j+4>>2]=b}if((e|0)==8){if((c[p>>2]|0)!=101)break;c[p>>2]=0;break}else if((e|0)==26){if((c[p>>2]|0)!=522)break;c[p>>2]=0;break}}}while(0);a[(c[m>>2]|0)+19>>0]=a[(c[m>>2]|0)+13>>0]|0;if(!(c[p>>2]|0)){c[s>>2]=c[(c[m>>2]|0)+208>>2];c[p>>2]=Mr(c[(c[m>>2]|0)+68>>2]|0,c[s>>2]|0,(c[(c[c[m>>2]>>2]|0)+8>>2]|0)+1|0)|0}do if(!(c[p>>2]|0)){if((d[(c[m>>2]|0)+17>>0]|0)<4?(d[(c[m>>2]|0)+17>>0]|0)!=0:0)break;c[p>>2]=Hg(c[m>>2]|0,0)|0}while(0);if(!(c[p>>2]|0))c[p>>2]=kr(c[m>>2]|0,(a[c[s>>2]>>0]|0)!=0&1,0)|0;if((c[p>>2]|0)==0?(c[q>>2]|0)!=0?(a[c[s>>2]>>0]|0)!=0:0:0)c[p>>2]=Qr(c[m>>2]|0,c[s>>2]|0)|0;if(!((c[n>>2]|0)!=0&(c[o>>2]|0)!=0)){s=c[m>>2]|0;Rr(s);s=c[p>>2]|0;i=t;return s|0}s=c[(c[m>>2]|0)+180>>2]|0;c[r>>2]=c[o>>2];c[r+4>>2]=s;Rd(539,26731,r);s=c[m>>2]|0;Rr(s);s=c[p>>2]|0;i=t;return s|0}function Mr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;f=q+36|0;g=q+32|0;h=q+28|0;j=q+24|0;n=q+20|0;m=q+16|0;o=q;l=q+12|0;p=q+8|0;k=q+40|0;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;a[c[h>>2]>>0]=0;e=Si(c[g>>2]|0,o)|0;c[n>>2]=e;d=o;b=c[d+4>>2]|0;if((((((!(0!=(e|0)|((b|0)<0|(b|0)==0&(c[d>>2]|0)>>>0<16))?(b=c[g>>2]|0,d=o,d=fR(c[d>>2]|0,c[d+4>>2]|0,16,0)|0,d=Xr(b,d,C,m)|0,c[n>>2]=d,0==(d|0)):0)?!((c[m>>2]|0)==0?1:(c[m>>2]|0)>>>0>=(c[j>>2]|0)>>>0):0)?(b=c[g>>2]|0,d=o,d=fR(c[d>>2]|0,c[d+4>>2]|0,12,0)|0,d=Xr(b,d,C,l)|0,c[n>>2]=d,0==(d|0)):0)?(b=c[g>>2]|0,d=o,d=fR(c[d>>2]|0,c[d+4>>2]|0,8,0)|0,d=Wr(b,k,8,d,C)|0,c[n>>2]=d,0==(d|0)):0)?(vQ(k,26758,8)|0)==0:0)?(k=c[g>>2]|0,e=c[h>>2]|0,b=c[m>>2]|0,d=o,d=fR(c[d>>2]|0,c[d+4>>2]|0,16,0)|0,d=fR(d|0,C|0,c[m>>2]|0,0)|0,d=Wr(k,e,b,d,C)|0,c[n>>2]=d,0==(d|0)):0){c[p>>2]=0;while(1){if((c[p>>2]|0)>>>0>=(c[m>>2]|0)>>>0)break;c[l>>2]=(c[l>>2]|0)-(a[(c[h>>2]|0)+(c[p>>2]|0)>>0]|0);c[p>>2]=(c[p>>2]|0)+1}if(c[l>>2]|0)c[m>>2]=0;a[(c[h>>2]|0)+(c[m>>2]|0)>>0]=0;c[f>>2]=0;d=c[f>>2]|0;i=q;return d|0}c[f>>2]=c[n>>2];d=c[f>>2]|0;i=q;return d|0}function Nr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;b=Wb[c[(c[k>>2]|0)+32>>2]&255](c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;i=f;return b|0}function Or(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+64|0;h=s+44|0;j=s+40|0;k=s+36|0;t=s+8|0;l=s+32|0;m=s+28|0;r=s+24|0;n=s+48|0;o=s;p=s+20|0;q=s+16|0;c[j>>2]=a;c[k>>2]=b;b=t;c[b>>2]=d;c[b+4>>2]=e;c[l>>2]=f;c[m>>2]=g;b=fs(c[j>>2]|0)|0;f=(c[j>>2]|0)+80|0;c[f>>2]=b;c[f+4>>2]=C;f=(c[j>>2]|0)+80|0;f=gR(c[f>>2]|0,c[f+4>>2]|0,c[(c[j>>2]|0)+156>>2]|0,0)|0;b=C;a=t;g=c[a+4>>2]|0;if((b|0)>(g|0)|((b|0)==(g|0)?f>>>0>(c[a>>2]|0)>>>0:0)){c[h>>2]=101;t=c[h>>2]|0;i=s;return t|0}f=(c[j>>2]|0)+80|0;a=c[f+4>>2]|0;t=o;c[t>>2]=c[f>>2];c[t+4>>2]=a;if(!((c[k>>2]|0)==0?(a=o,t=(c[j>>2]|0)+88|0,!((c[a>>2]|0)!=(c[t>>2]|0)?1:(c[a+4>>2]|0)!=(c[t+4>>2]|0))):0)){t=o;c[r>>2]=Wr(c[(c[j>>2]|0)+68>>2]|0,n,8,c[t>>2]|0,c[t+4>>2]|0)|0;if(c[r>>2]|0){c[h>>2]=c[r>>2];t=c[h>>2]|0;i=s;return t|0}if(vQ(n,26758,8)|0){c[h>>2]=101;t=c[h>>2]|0;i=s;return t|0}}a=c[(c[j>>2]|0)+68>>2]|0;t=o;t=gR(c[t>>2]|0,c[t+4>>2]|0,8,0)|0;t=Xr(a,t,C,c[l>>2]|0)|0;c[r>>2]=t;if((0==(t|0)?(a=c[(c[j>>2]|0)+68>>2]|0,t=o,t=gR(c[t>>2]|0,c[t+4>>2]|0,12,0)|0,t=Xr(a,t,C,(c[j>>2]|0)+52|0)|0,c[r>>2]=t,0==(t|0)):0)?(a=c[(c[j>>2]|0)+68>>2]|0,t=o,t=gR(c[t>>2]|0,c[t+4>>2]|0,16,0)|0,t=Xr(a,t,C,c[m>>2]|0)|0,c[r>>2]=t,0==(t|0)):0){t=(c[j>>2]|0)+80|0;do if((c[t>>2]|0)==0&(c[t+4>>2]|0)==0){a=c[(c[j>>2]|0)+68>>2]|0;t=o;t=gR(c[t>>2]|0,c[t+4>>2]|0,20,0)|0;t=Xr(a,t,C,q)|0;c[r>>2]=t;if(0==(t|0)?(a=c[(c[j>>2]|0)+68>>2]|0,t=o,t=gR(c[t>>2]|0,c[t+4>>2]|0,24,0)|0,t=Xr(a,t,C,p)|0,c[r>>2]=t,0==(t|0)):0){if(!(c[p>>2]|0))c[p>>2]=c[(c[j>>2]|0)+160>>2];if((!((c[p>>2]|0)>>>0<512|(c[q>>2]|0)>>>0<32|(c[p>>2]|0)>>>0>65536|(c[q>>2]|0)>>>0>65536)?((c[p>>2]|0)-1&c[p>>2]|0)==0:0)?((c[q>>2]|0)-1&c[q>>2]|0)==0:0){c[r>>2]=Qi(c[j>>2]|0,p,-1)|0;c[(c[j>>2]|0)+156>>2]=c[q>>2];break}c[h>>2]=101;t=c[h>>2]|0;i=s;return t|0}c[h>>2]=c[r>>2];t=c[h>>2]|0;i=s;return t|0}while(0);t=(c[j>>2]|0)+80|0;a=t;a=gR(c[a>>2]|0,c[a+4>>2]|0,c[(c[j>>2]|0)+156>>2]|0,0)|0;c[t>>2]=a;c[t+4>>2]=C;c[h>>2]=c[r>>2];t=c[h>>2]|0;i=s;return t|0}c[h>>2]=c[r>>2];t=c[h>>2]|0;i=s;return t|0}function Pr(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;B=i;i=i+64|0;y=B+60|0;o=B+56|0;p=B+52|0;l=B+48|0;q=B+44|0;r=B+40|0;A=B+36|0;z=B+32|0;v=B+28|0;m=B+24|0;s=B+20|0;n=B+16|0;t=B+12|0;u=B;x=B+8|0;c[o>>2]=f;c[p>>2]=g;c[l>>2]=h;c[q>>2]=j;c[r>>2]=k;c[s>>2]=c[(c[o>>2]|0)+208>>2];j=c[o>>2]|0;if(c[q>>2]|0)j=c[j+68>>2]|0;else j=c[j+72>>2]|0;c[n>>2]=j;f=c[p>>2]|0;c[A>>2]=Xr(c[n>>2]|0,c[f>>2]|0,c[f+4>>2]|0,v)|0;if(c[A>>2]|0){c[y>>2]=c[A>>2];A=c[y>>2]|0;i=B;return A|0}k=c[n>>2]|0;h=c[s>>2]|0;g=c[(c[o>>2]|0)+160>>2]|0;f=c[p>>2]|0;f=gR(c[f>>2]|0,c[f+4>>2]|0,4,0)|0;c[A>>2]=Wr(k,h,g,f,C)|0;if(c[A>>2]|0){c[y>>2]=c[A>>2];A=c[y>>2]|0;i=B;return A|0}g=(c[(c[o>>2]|0)+160>>2]|0)+4+(c[q>>2]<<2)|0;f=c[p>>2]|0;h=f;g=gR(c[h>>2]|0,c[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0;c[f>>2]=g;c[f+4>>2]=C;if((c[v>>2]|0)!=0?(c[v>>2]|0)!=(((c[381]|0)/(c[(c[o>>2]|0)+160>>2]|0)|0)+1|0):0){if((c[v>>2]|0)>>>0<=(c[(c[o>>2]|0)+28>>2]|0)>>>0?(ij(c[l>>2]|0,c[v>>2]|0)|0)==0:0){if(c[q>>2]|0){f=c[n>>2]|0;n=c[p>>2]|0;n=fR(c[n>>2]|0,c[n+4>>2]|0,4,0)|0;c[A>>2]=Xr(f,n,C,m)|0;if(c[A>>2]|0){c[y>>2]=c[A>>2];A=c[y>>2]|0;i=B;return A|0}if((c[r>>2]|0)==0?(n=Yr(c[o>>2]|0,c[s>>2]|0)|0,(n|0)!=(c[m>>2]|0)):0){c[y>>2]=101;A=c[y>>2]|0;i=B;return A|0}}if((c[l>>2]|0)!=0?(n=gj(c[l>>2]|0,c[v>>2]|0)|0,c[A>>2]=n,(n|0)!=0):0){c[y>>2]=c[A>>2];A=c[y>>2]|0;i=B;return A|0}if((c[v>>2]|0)==1?(b[(c[o>>2]|0)+150>>1]|0)!=(d[(c[s>>2]|0)+20>>0]|0):0)b[(c[o>>2]|0)+150>>1]=d[(c[s>>2]|0)+20>>0]|0;if(sr(c[o>>2]|0)|0)c[z>>2]=0;else c[z>>2]=Zr(c[o>>2]|0,c[v>>2]|0)|0;if(c[q>>2]|0){if(d[(c[o>>2]|0)+7>>0]|0)j=1;else{n=c[p>>2]|0;l=c[n+4>>2]|0;j=(c[o>>2]|0)+88|0;m=c[j+4>>2]|0;j=(l|0)<(m|0)|((l|0)==(m|0)?(c[n>>2]|0)>>>0<=(c[j>>2]|0)>>>0:0)}c[t>>2]=j&1}else{if(!(c[z>>2]|0))j=1;else j=0==(e[(c[z>>2]|0)+24>>1]&8|0);c[t>>2]=j&1}do if(c[c[(c[o>>2]|0)+64>>2]>>2]|0){if((d[(c[o>>2]|0)+17>>0]|0)>=4){if(!(c[t>>2]|0)){w=44;break}}else if(!((c[t>>2]|0)!=0?(d[(c[o>>2]|0)+17>>0]|0)==0:0)){w=44;break}n=c[(c[o>>2]|0)+160>>2]|0;n=rR((c[v>>2]|0)-1|0,0,n|0,((n|0)<0)<<31>>31|0)|0;t=u;c[t>>2]=n;c[t+4>>2]=C;c[A>>2]=Fg(c[(c[o>>2]|0)+64>>2]|0,c[s>>2]|0,c[(c[o>>2]|0)+160>>2]|0,c[u>>2]|0,c[u+4>>2]|0)|0;if((c[v>>2]|0)>>>0>(c[(c[o>>2]|0)+36>>2]|0)>>>0)c[(c[o>>2]|0)+36>>2]=c[v>>2];if(c[(c[o>>2]|0)+96>>2]|0){_r(c[(c[o>>2]|0)+96>>2]|0,c[v>>2]|0,c[s>>2]|0);c[s>>2]=c[s>>2]}}else w=44;while(0);do if((w|0)==44?(c[q>>2]|0)==0&(c[z>>2]|0)==0:0){w=(c[o>>2]|0)+21|0;a[w>>0]=d[w>>0]|2;c[A>>2]=sg(c[o>>2]|0,c[v>>2]|0,z,1)|0;w=(c[o>>2]|0)+21|0;a[w>>0]=d[w>>0]&-3;if(!(c[A>>2]|0)){w=(c[z>>2]|0)+24|0;b[w>>1]=e[w>>1]&-17;$r(c[z>>2]|0);break}c[y>>2]=c[A>>2];A=c[y>>2]|0;i=B;return A|0}while(0);if(c[z>>2]|0){c[x>>2]=c[(c[z>>2]|0)+4>>2];iR(c[x>>2]|0,c[s>>2]|0,c[(c[o>>2]|0)+160>>2]|0)|0;Qb[c[(c[o>>2]|0)+204>>2]&255](c[z>>2]|0);do if(c[q>>2]|0){if((c[r>>2]|0)!=0?(u=c[p>>2]|0,s=c[u+4>>2]|0,w=(c[o>>2]|0)+88|0,t=c[w+4>>2]|0,!((s|0)<(t|0)|((s|0)==(t|0)?(c[u>>2]|0)>>>0<=(c[w>>2]|0)>>>0:0))):0)break;bj(c[z>>2]|0)}while(0);if((c[v>>2]|0)==1){h=(c[o>>2]|0)+112|0;j=(c[x>>2]|0)+24|0;k=h+16|0;do{a[h>>0]=a[j>>0]|0;h=h+1|0;j=j+1|0}while((h|0)<(k|0))}as(c[z>>2]|0)}c[y>>2]=c[A>>2];A=c[y>>2]|0;i=B;return A|0}c[y>>2]=0;A=c[y>>2]|0;i=B;return A|0}c[y>>2]=101;A=c[y>>2]|0;i=B;return A|0}function Qr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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;s=i;i=i+64|0;t=s+60|0;e=s+56|0;n=s+52|0;o=s+48|0;m=s+44|0;l=s+40|0;q=s+36|0;j=s;p=s+32|0;r=s+28|0;k=s+24|0;g=s+16|0;f=s+12|0;h=s+8|0;c[t>>2]=b;c[e>>2]=d;c[n>>2]=c[c[t>>2]>>2];c[q>>2]=0;d=c[(c[n>>2]|0)+4>>2]<<1;c[m>>2]=ig(d,((d|0)<0)<<31>>31)|0;c[l>>2]=(c[m>>2]|0)+(c[(c[n>>2]|0)+4>>2]|0);if(c[m>>2]|0){c[s+20>>2]=16385;c[o>>2]=Vr(c[n>>2]|0,c[e>>2]|0,c[m>>2]|0,16385,0)|0}else c[o>>2]=7;a:do if((c[o>>2]|0)==0?(c[o>>2]=Si(c[m>>2]|0,j)|0,(c[o>>2]|0)==0):0){c[k>>2]=(c[(c[n>>2]|0)+8>>2]|0)+1;d=j;t=c[k>>2]|0;t=gR(c[d>>2]|0,c[d+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;t=gR(t|0,C|0,1,0)|0;c[q>>2]=_f(t,C)|0;if(!(c[q>>2]|0)){c[o>>2]=7;break}t=j;t=gR(c[t>>2]|0,c[t+4>>2]|0,1,0)|0;c[r>>2]=(c[q>>2]|0)+t;c[o>>2]=Wr(c[m>>2]|0,c[q>>2]|0,c[j>>2]|0,0,0)|0;if(!(c[o>>2]|0)){a[(c[q>>2]|0)+(c[j>>2]|0)>>0]=0;c[p>>2]=c[q>>2];while(1){d=(c[p>>2]|0)-(c[q>>2]|0)|0;u=((d|0)<0)<<31>>31;t=j;b=c[t+4>>2]|0;if(!((u|0)<(b|0)|((u|0)==(b|0)?d>>>0<(c[t>>2]|0)>>>0:0)))break;c[o>>2]=Nr(c[n>>2]|0,c[p>>2]|0,0,g)|0;if(c[o>>2]|0)break a;if(c[g>>2]|0){c[h>>2]=2049;c[o>>2]=Vr(c[n>>2]|0,c[p>>2]|0,c[l>>2]|0,c[h>>2]|0,0)|0;if(c[o>>2]|0)break a;c[o>>2]=Mr(c[l>>2]|0,c[r>>2]|0,c[k>>2]|0)|0;hr(c[l>>2]|0)|0;if(c[o>>2]|0)break a;if(a[c[r>>2]>>0]|0)b=(yQ(c[r>>2]|0,c[e>>2]|0)|0)==0;else b=0;c[f>>2]=b&1;if(c[f>>2]|0)break a}u=(If(c[p>>2]|0)|0)+1|0;c[p>>2]=(c[p>>2]|0)+u}hr(c[m>>2]|0)|0;c[o>>2]=qr(c[n>>2]|0,c[e>>2]|0,0)|0}}while(0);Kd(c[q>>2]|0);if(!(c[m>>2]|0)){u=c[o>>2]|0;i=s;return u|0}hr(c[m>>2]|0)|0;Kd(c[m>>2]|0);u=c[o>>2]|0;i=s;return u|0}function Rr(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;if((d[(c[b>>2]|0)+13>>0]|0|0)==0?((Sr(c[(c[b>>2]|0)+64>>2]|0)|0)&4096|0)==0:0){a=Tr(c[(c[b>>2]|0)+64>>2]|0)|0;c[(c[b>>2]|0)+156>>2]=a;i=e;return}c[(c[b>>2]|0)+156>>2]=512;i=e;return}function Sr(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Tb[c[(c[c[d>>2]>>2]|0)+48>>2]&255](c[d>>2]|0)|0;i=b;return a|0}function Tr(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=Ur(c[e>>2]|0)|0;if((c[b>>2]|0)>=32){if((c[b>>2]|0)>65536)c[b>>2]=65536}else c[b>>2]=512;i=d;return c[b>>2]|0}function Ur(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=c[(c[c[b>>2]>>2]|0)+44>>2];if(!(c[d>>2]|0)){d=4096;i=e;return d|0}d=Tb[c[d>>2]&255](c[b>>2]|0)|0;i=e;return d|0}function Vr(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,j=0,k=0,l=0,m=0,n=0;h=i;i=i+32|0;n=h+20|0;m=h+16|0;l=h+12|0;k=h+8|0;j=h+4|0;g=h;c[n>>2]=a;c[m>>2]=b;c[l>>2]=d;c[k>>2]=e;c[j>>2]=f;c[g>>2]=Zb[c[(c[n>>2]|0)+24>>2]&255](c[n>>2]|0,c[m>>2]|0,c[l>>2]|0,c[k>>2]&556927,c[j>>2]|0)|0;i=h;return c[g>>2]|0}function Wr(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,j=0,k=0,l=0;g=i;i=i+32|0;k=g+16|0;j=g+12|0;h=g+8|0;l=g;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;b=l;c[b>>2]=e;c[b+4>>2]=f;b=l;b=Zb[c[(c[c[k>>2]>>2]|0)+8>>2]&255](c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;i=g;return b|0}function Xr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;j=i;i=i+32|0;k=j+16|0;l=j;f=j+12|0;g=j+20|0;h=j+8|0;c[k>>2]=a;a=l;c[a>>2]=b;c[a+4>>2]=d;c[f>>2]=e;e=l;c[h>>2]=Wr(c[k>>2]|0,g,4,c[e>>2]|0,c[e+4>>2]|0)|0;if(c[h>>2]|0){l=c[h>>2]|0;i=j;return l|0}l=$q(g)|0;c[c[f>>2]>>2]=l;l=c[h>>2]|0;i=j;return l|0}function Yr(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;j=h+12|0;e=h+8|0;f=h+4|0;g=h;c[j>>2]=a;c[e>>2]=b;c[f>>2]=c[(c[j>>2]|0)+52>>2];c[g>>2]=(c[(c[j>>2]|0)+160>>2]|0)-200;while(1){if((c[g>>2]|0)<=0)break;c[f>>2]=(c[f>>2]|0)+(d[(c[e>>2]|0)+(c[g>>2]|0)>>0]|0);c[g>>2]=(c[g>>2]|0)-200}i=h;return c[f>>2]|0}function Zr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=cs(c[(c[e>>2]|0)+212>>2]|0,c[f>>2]|0,0)|0;if(!(c[g>>2]|0)){c[d>>2]=0;b=c[d>>2]|0;i=h;return b|0}else{c[d>>2]=ds(c[(c[e>>2]|0)+212>>2]|0,c[f>>2]|0,c[g>>2]|0)|0;b=c[d>>2]|0;i=h;return b|0}return 0}function _r(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(!(c[e>>2]|0)){i=h;return}bs(c[e>>2]|0,c[f>>2]|0,c[g>>2]|0);i=h;return}function $r(a){a=a|0;var d=0,f=0;f=i;i=i+16|0;d=f;c[d>>2]=a;if(!((e[(c[d>>2]|0)+24>>1]|0)&33)){i=f;return}a=(c[d>>2]|0)+24|0;b[a>>1]=(e[a>>1]|0)&-33;if(!((e[(c[d>>2]|0)+24>>1]|0)&1)){i=f;return}a=(c[d>>2]|0)+24|0;b[a>>1]=(e[a>>1]|0)^3;cj(c[d>>2]|0,2);i=f;return}function as(a){a=a|0;var d=0,f=0,g=0;f=i;i=i+16|0;d=f;c[d>>2]=a;g=(c[(c[d>>2]|0)+28>>2]|0)+12|0;c[g>>2]=(c[g>>2]|0)+-1;g=(c[d>>2]|0)+26|0;a=(b[g>>1]|0)+-1<<16>>16;b[g>>1]=a;if(a<<16>>16){i=f;return}a=c[d>>2]|0;if((e[(c[d>>2]|0)+24>>1]|0)&1){dj(a);i=f;return}if(!(c[a+36>>2]|0)){i=f;return}cj(c[d>>2]|0,3);i=f;return}function bs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;do{if(((lg(c[(c[e>>2]|0)+28>>2]|0)|0)==0?(c[f>>2]|0)>>>0<(c[(c[e>>2]|0)+16>>2]|0)>>>0:0)?(c[h>>2]=ug(c[e>>2]|0,c[f>>2]|0,c[g>>2]|0,1)|0,(c[h>>2]|0)!=0):0)c[(c[e>>2]|0)+28>>2]=c[h>>2];a=c[(c[e>>2]|0)+44>>2]|0;c[e>>2]=a}while((a|0)!=0);i=j;return}function cs(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;j=f+12|0;h=f+8|0;k=f+4|0;g=f;c[j>>2]=a;c[h>>2]=b;c[k>>2]=e;c[g>>2]=c[k>>2]&(d[(c[j>>2]|0)+33>>0]|0);b=Ob[c[140>>2]&255](c[(c[j>>2]|0)+44>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;i=f;return b|0}function ds(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;f=k+16|0;l=k+12|0;g=k+8|0;h=k+4|0;j=k;c[l>>2]=a;c[g>>2]=d;c[h>>2]=e;c[j>>2]=c[(c[h>>2]|0)+4>>2];a=c[l>>2]|0;if(c[c[j>>2]>>2]|0){l=a+12|0;c[l>>2]=(c[l>>2]|0)+1;l=(c[j>>2]|0)+26|0;b[l>>1]=(b[l>>1]|0)+1<<16>>16;c[f>>2]=c[j>>2];l=c[f>>2]|0;i=k;return l|0}else{c[f>>2]=es(a,c[g>>2]|0,c[h>>2]|0)|0;l=c[f>>2]|0;i=k;return l|0}return 0}function es(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=d;c[h>>2]=e;c[j>>2]=c[(c[h>>2]|0)+4>>2];a=c[j>>2]|0;e=a+40|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(e|0));c[c[j>>2]>>2]=c[h>>2];c[(c[j>>2]|0)+4>>2]=c[c[h>>2]>>2];c[(c[j>>2]|0)+8>>2]=(c[j>>2]|0)+40;kR(c[(c[j>>2]|0)+8>>2]|0,0,c[(c[f>>2]|0)+28>>2]|0)|0;c[(c[j>>2]|0)+28>>2]=c[f>>2];c[(c[j>>2]|0)+20>>2]=c[g>>2];b[(c[j>>2]|0)+24>>1]=1;j=ds(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;i=k;return j|0}function fs(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=i;i=i+32|0;b=f+16|0;e=f+8|0;d=f;c[b>>2]=a;h=e;c[h>>2]=0;c[h+4>>2]=0;h=(c[b>>2]|0)+80|0;g=c[h+4>>2]|0;a=d;c[a>>2]=c[h>>2];c[a+4>>2]=g;a=d;if(!((c[a>>2]|0)!=0|(c[a+4>>2]|0)!=0)){g=e;h=g;h=c[h>>2]|0;g=g+4|0;g=c[g>>2]|0;C=g;i=f;return h|0}h=d;h=fR(c[h>>2]|0,c[h+4>>2]|0,1,0)|0;h=pR(h|0,C|0,c[(c[b>>2]|0)+156>>2]|0,0)|0;h=gR(h|0,C|0,1,0)|0;h=rR(h|0,C|0,c[(c[b>>2]|0)+156>>2]|0,0)|0;g=e;c[g>>2]=h;c[g+4>>2]=C;g=e;h=g;h=c[h>>2]|0;g=g+4|0;g=c[g>>2]|0;C=g;i=f;return h|0}function gs(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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;s=i;i=i+64|0;e=s+56|0;f=s+52|0;g=s+48|0;q=s+16|0;j=s+8|0;p=s+44|0;o=s+40|0;k=s+36|0;m=s+32|0;h=s+28|0;l=s+24|0;n=s;c[f>>2]=b;c[g>>2]=d;c[p>>2]=0;c[o>>2]=0;if((c[g>>2]|0)!=0?(c[o>>2]=fj(c[(c[g>>2]|0)+20>>2]|0)|0,(c[o>>2]|0)==0):0){c[e>>2]=7;r=c[e>>2]|0;i=s;return r|0}if(c[g>>2]|0)b=c[(c[g>>2]|0)+20>>2]|0;else b=c[(c[f>>2]|0)+32>>2]|0;c[(c[f>>2]|0)+28>>2]=b;a[(c[f>>2]|0)+19>>0]=a[(c[f>>2]|0)+13>>0]|0;if((c[g>>2]|0)==0?(sr(c[f>>2]|0)|0)!=0:0){c[e>>2]=hs(c[f>>2]|0)|0;r=c[e>>2]|0;i=s;return r|0}t=(c[f>>2]|0)+80|0;b=c[t+4>>2]|0;d=q;c[d>>2]=c[t>>2];c[d+4>>2]=b;a:do if((c[g>>2]|0)!=0?(sr(c[f>>2]|0)|0)==0:0){t=(c[g>>2]|0)+8|0;if((c[t>>2]|0)!=0|(c[t+4>>2]|0)!=0){d=(c[g>>2]|0)+8|0;b=c[d>>2]|0;d=c[d+4>>2]|0}else{d=q;b=c[d>>2]|0;d=c[d+4>>2]|0}t=j;c[t>>2]=b;c[t+4>>2]=d;b=c[g>>2]|0;d=c[b+4>>2]|0;t=(c[f>>2]|0)+80|0;c[t>>2]=c[b>>2];c[t+4>>2]=d;while(1){if(c[p>>2]|0)break a;d=(c[f>>2]|0)+80|0;u=c[d+4>>2]|0;t=j;b=c[t+4>>2]|0;if(!((u|0)<(b|0)|((u|0)==(b|0)?(c[d>>2]|0)>>>0<(c[t>>2]|0)>>>0:0)))break a;c[p>>2]=Pr(c[f>>2]|0,(c[f>>2]|0)+80|0,c[o>>2]|0,1,1)|0}}else r=19;while(0);if((r|0)==19){u=(c[f>>2]|0)+80|0;c[u>>2]=0;c[u+4>>2]=0}b:while(1){if(c[p>>2]|0)break;t=(c[f>>2]|0)+80|0;j=c[t+4>>2]|0;u=q;r=c[u+4>>2]|0;if(!((j|0)<(r|0)|((j|0)==(r|0)?(c[t>>2]|0)>>>0<(c[u>>2]|0)>>>0:0)))break;c[m>>2]=0;u=q;c[p>>2]=Or(c[f>>2]|0,0,c[u>>2]|0,c[u+4>>2]|0,m,h)|0;if((c[m>>2]|0)==0?(t=(c[f>>2]|0)+88|0,t=gR(c[t>>2]|0,c[t+4>>2]|0,c[(c[f>>2]|0)+156>>2]|0,0)|0,u=(c[f>>2]|0)+80|0,(t|0)==(c[u>>2]|0)?(C|0)==(c[u+4>>2]|0):0):0){u=q;t=(c[f>>2]|0)+80|0;t=fR(c[u>>2]|0,c[u+4>>2]|0,c[t>>2]|0,c[t+4>>2]|0)|0;u=(c[(c[f>>2]|0)+160>>2]|0)+8|0;u=pR(t|0,C|0,u|0,((u|0)<0)<<31>>31|0)|0;c[m>>2]=u}c[k>>2]=0;while(1){if(c[p>>2]|0)continue b;if((c[k>>2]|0)>>>0>=(c[m>>2]|0)>>>0)continue b;t=(c[f>>2]|0)+80|0;j=c[t+4>>2]|0;u=q;r=c[u+4>>2]|0;if(!((j|0)<(r|0)|((j|0)==(r|0)?(c[t>>2]|0)>>>0<(c[u>>2]|0)>>>0:0)))continue b;c[p>>2]=Pr(c[f>>2]|0,(c[f>>2]|0)+80|0,c[o>>2]|0,1,1)|0;c[k>>2]=(c[k>>2]|0)+1}}c:do if(c[g>>2]|0){t=4+(c[(c[f>>2]|0)+160>>2]|0)|0;t=rR(c[(c[g>>2]|0)+24>>2]|0,0,t|0,((t|0)<0)<<31>>31|0)|0;u=n;c[u>>2]=t;c[u+4>>2]=C;if(sr(c[f>>2]|0)|0)c[p>>2]=is(c[(c[f>>2]|0)+216>>2]|0,(c[g>>2]|0)+28|0)|0;c[l>>2]=c[(c[g>>2]|0)+24>>2];while(1){if(c[p>>2]|0)break c;if((c[l>>2]|0)>>>0>=(c[(c[f>>2]|0)+56>>2]|0)>>>0)break c;c[p>>2]=Pr(c[f>>2]|0,n,c[o>>2]|0,0,1)|0;c[l>>2]=(c[l>>2]|0)+1}}while(0);kj(c[o>>2]|0);if(!(c[p>>2]|0)){r=q;t=c[r+4>>2]|0;u=(c[f>>2]|0)+80|0;c[u>>2]=c[r>>2];c[u+4>>2]=t}c[e>>2]=c[p>>2];u=c[e>>2]|0;i=s;return u|0}function hs(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;f=g+8|0;d=g+4|0;e=g;c[b>>2]=a;c[(c[b>>2]|0)+28>>2]=c[(c[b>>2]|0)+32>>2];c[f>>2]=ps(c[(c[b>>2]|0)+216>>2]|0,187,c[b>>2]|0)|0;c[d>>2]=qs(c[(c[b>>2]|0)+212>>2]|0)|0;while(1){if(!((c[d>>2]|0)!=0?(c[f>>2]|0)==0:0))break;c[e>>2]=c[(c[d>>2]|0)+12>>2];c[f>>2]=os(c[b>>2]|0,c[(c[d>>2]|0)+20>>2]|0)|0;c[d>>2]=c[e>>2]}i=g;return c[f>>2]|0}function is(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=0;if((c[(c[e>>2]|0)+12>>2]|0)!=(c[(c[d>>2]|0)+112>>2]|0)){c[c[e>>2]>>2]=0;c[(c[e>>2]|0)+12>>2]=c[(c[d>>2]|0)+112>>2]}if((c[c[e>>2]>>2]|0)>>>0>=(c[(c[d>>2]|0)+52+16>>2]|0)>>>0){f=c[f>>2]|0;i=g;return f|0}c[(c[d>>2]|0)+52+16>>2]=c[c[e>>2]>>2];c[(c[d>>2]|0)+52+24>>2]=c[(c[e>>2]|0)+4>>2];c[(c[d>>2]|0)+52+24+4>>2]=c[(c[e>>2]|0)+8>>2];js(c[d>>2]|0);f=c[f>>2]|0;i=g;return f|0}function js(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;d=m+24|0;f=m+20|0;g=m+16|0;k=m+12|0;j=m+8|0;l=m+4|0;h=m;c[d>>2]=a;c[f>>2]=0;c[g>>2]=0;c[k>>2]=0;c[j>>2]=0;if(!(c[(c[d>>2]|0)+52+16>>2]|0)){i=m;return}a=c[d>>2]|0;ls(a,ks(c[(c[d>>2]|0)+52+16>>2]|0)|0,f,g,k)|0;c[j>>2]=(c[(c[d>>2]|0)+52+16>>2]|0)-(c[k>>2]|0);c[h>>2]=0;while(1){if((c[h>>2]|0)>=8192)break;if((e[(c[f>>2]|0)+(c[h>>2]<<1)>>1]|0|0)>(c[j>>2]|0))b[(c[f>>2]|0)+(c[h>>2]<<1)>>1]=0;c[h>>2]=(c[h>>2]|0)+1}c[l>>2]=(c[f>>2]|0)-((c[g>>2]|0)+((c[j>>2]|0)+1<<2)); -kR((c[g>>2]|0)+((c[j>>2]|0)+1<<2)|0,0,c[l>>2]|0)|0;i=m;return}function ks(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=(((c[e>>2]|0)+4096-4062-1|0)>>>0)/4096|0;i=d;return c[b>>2]|0}function ls(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+48|0;q=p+32|0;g=p+28|0;h=p+24|0;j=p+20|0;k=p+16|0;o=p+12|0;m=p+8|0;n=p+4|0;l=p;c[q>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;c[o>>2]=ms(c[q>>2]|0,c[g>>2]|0,m)|0;if(c[o>>2]|0){q=c[o>>2]|0;i=p;return q|0}c[l>>2]=(c[m>>2]|0)+16384;if(!(c[g>>2]|0)){c[m>>2]=(c[m>>2]|0)+136;c[n>>2]=0}else c[n>>2]=4062+((c[g>>2]|0)-1<<12);c[c[j>>2]>>2]=(c[m>>2]|0)+-4;c[c[h>>2]>>2]=c[l>>2];c[c[k>>2]>>2]=c[n>>2];q=c[o>>2]|0;i=p;return q|0}function ms(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+24|0;h=o+20|0;j=o+16|0;k=o+12|0;n=o+8|0;m=o+4|0;l=o;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[n>>2]=0;do if((c[(c[h>>2]|0)+24>>2]|0)<=(c[j>>2]|0)){c[m>>2]=(c[j>>2]|0)+1<<2;f=c[m>>2]|0;c[l>>2]=Md(c[(c[h>>2]|0)+32>>2]|0,f,((f|0)<0)<<31>>31)|0;if(c[l>>2]|0){kR((c[l>>2]|0)+(c[(c[h>>2]|0)+24>>2]<<2)|0,0,(c[j>>2]|0)+1-(c[(c[h>>2]|0)+24>>2]|0)<<2|0)|0;c[(c[h>>2]|0)+32>>2]=c[l>>2];c[(c[h>>2]|0)+24>>2]=(c[j>>2]|0)+1;break}c[c[k>>2]>>2]=0;c[g>>2]=7;n=c[g>>2]|0;i=o;return n|0}while(0);do if(!(c[(c[(c[h>>2]|0)+32>>2]|0)+(c[j>>2]<<2)>>2]|0))if((d[(c[h>>2]|0)+43>>0]|0|0)==2){f=ig(32768,0)|0;c[(c[(c[h>>2]|0)+32>>2]|0)+(c[j>>2]<<2)>>2]=f;if(c[(c[(c[h>>2]|0)+32>>2]|0)+(c[j>>2]<<2)>>2]|0)break;c[n>>2]=7;break}else{c[n>>2]=ns(c[(c[h>>2]|0)+4>>2]|0,c[j>>2]|0,32768,d[(c[h>>2]|0)+44>>0]|0,(c[(c[h>>2]|0)+32>>2]|0)+(c[j>>2]<<2)|0)|0;if((c[n>>2]|0)!=8)break;f=(c[h>>2]|0)+46|0;a[f>>0]=d[f>>0]|0|2;c[n>>2]=0;break}while(0);c[c[k>>2]>>2]=c[(c[(c[h>>2]|0)+32>>2]|0)+(c[j>>2]<<2)>>2];c[g>>2]=c[n>>2];n=c[g>>2]|0;i=o;return n|0}function ns(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,j=0,k=0,l=0,m=0;g=i;i=i+32|0;m=g+16|0;l=g+12|0;k=g+8|0;j=g+4|0;h=g;c[m>>2]=a;c[l>>2]=b;c[k>>2]=d;c[j>>2]=e;c[h>>2]=f;f=Zb[c[(c[c[m>>2]>>2]|0)+52>>2]&255](c[m>>2]|0,c[l>>2]|0,c[k>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;i=g;return f|0}function os(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;h=i;i=i+32|0;k=h+20|0;j=h+16|0;g=h+12|0;e=h+8|0;f=h+4|0;d=h;c[k>>2]=a;c[j>>2]=b;c[g>>2]=0;c[e>>2]=c[k>>2];c[f>>2]=Zr(c[e>>2]|0,c[j>>2]|0)|0;do if(c[f>>2]|0){if((vs(c[f>>2]|0)|0)==1){ws(c[f>>2]|0);break}c[d>>2]=0;c[g>>2]=xs(c[(c[e>>2]|0)+216>>2]|0,c[(c[f>>2]|0)+20>>2]|0,d)|0;if(!(c[g>>2]|0))c[g>>2]=ys(c[f>>2]|0,c[d>>2]|0)|0;if(!(c[g>>2]|0))Qb[c[(c[e>>2]|0)+204>>2]&255](c[f>>2]|0);zs(c[f>>2]|0)}while(0);_i(c[(c[e>>2]|0)+96>>2]|0);i=h;return c[g>>2]|0}function ps(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;l=m+8|0;k=m+4|0;j=m;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;c[l>>2]=0;if(!(a[(c[f>>2]|0)+44>>0]|0)){l=c[l>>2]|0;i=m;return l|0}c[k>>2]=c[(c[f>>2]|0)+52+16>>2];e=(c[f>>2]|0)+52|0;b=ts(c[f>>2]|0)|0;d=e+48|0;do{a[e>>0]=a[b>>0]|0;e=e+1|0;b=b+1|0}while((e|0)<(d|0));c[j>>2]=(c[(c[f>>2]|0)+52+16>>2]|0)+1;while(1){if(c[l>>2]|0)break;if((c[j>>2]|0)>>>0>(c[k>>2]|0)>>>0)break;e=c[g>>2]|0;b=c[h>>2]|0;d=us(c[f>>2]|0,c[j>>2]|0)|0;c[l>>2]=Yb[e&255](b,d)|0;c[j>>2]=(c[j>>2]|0)+1}if((c[k>>2]|0)==(c[(c[f>>2]|0)+52+16>>2]|0)){l=c[l>>2]|0;i=m;return l|0}js(c[f>>2]|0);l=c[l>>2]|0;i=m;return l|0}function qs(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=c[c[b>>2]>>2];while(1){if(!(c[d>>2]|0))break;c[(c[d>>2]|0)+12>>2]=c[(c[d>>2]|0)+32>>2];c[d>>2]=c[(c[d>>2]|0)+32>>2]}a=rs(c[c[b>>2]>>2]|0)|0;i=e;return a|0}function rs(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+144|0;d=j+136|0;f=j+8|0;h=j+4|0;g=j;c[d>>2]=a;a=f;b=a+128|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));while(1){if(!(c[d>>2]|0))break;c[h>>2]=c[d>>2];c[d>>2]=c[(c[h>>2]|0)+12>>2];c[(c[h>>2]|0)+12>>2]=0;c[g>>2]=0;while(1){if((c[g>>2]|0)>=31)break;if(!(c[f+(c[g>>2]<<2)>>2]|0)){e=6;break}c[h>>2]=ss(c[f+(c[g>>2]<<2)>>2]|0,c[h>>2]|0)|0;c[f+(c[g>>2]<<2)>>2]=0;c[g>>2]=(c[g>>2]|0)+1}if((e|0)==6){e=0;c[f+(c[g>>2]<<2)>>2]=c[h>>2]}if((c[g>>2]|0)!=31)continue;b=ss(c[f+(c[g>>2]<<2)>>2]|0,c[h>>2]|0)|0;c[f+(c[g>>2]<<2)>>2]=b}c[h>>2]=c[f>>2];c[g>>2]=1;while(1){a=c[h>>2]|0;if((c[g>>2]|0)>=32)break;c[h>>2]=ss(a,c[f+(c[g>>2]<<2)>>2]|0)|0;c[g>>2]=(c[g>>2]|0)+1}i=j;return a|0}function ss(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+64|0;d=h+52|0;e=h+48|0;g=h+8|0;f=h;c[d>>2]=a;c[e>>2]=b;c[f>>2]=g;while(1){a=c[d>>2]|0;if(!((c[d>>2]|0)!=0?(c[e>>2]|0)!=0:0))break;if((c[a+20>>2]|0)>>>0<(c[(c[e>>2]|0)+20>>2]|0)>>>0){c[(c[f>>2]|0)+12>>2]=c[d>>2];c[f>>2]=c[d>>2];c[d>>2]=c[(c[d>>2]|0)+12>>2];continue}else{c[(c[f>>2]|0)+12>>2]=c[e>>2];c[f>>2]=c[e>>2];c[e>>2]=c[(c[e>>2]|0)+12>>2];continue}}if(a){c[(c[f>>2]|0)+12>>2]=c[d>>2];g=g+12|0;g=c[g>>2]|0;i=h;return g|0}if(c[e>>2]|0){c[(c[f>>2]|0)+12>>2]=c[e>>2];g=g+12|0;g=c[g>>2]|0;i=h;return g|0}else{c[(c[f>>2]|0)+12>>2]=0;g=g+12|0;g=c[g>>2]|0;i=h;return g|0}return 0}function ts(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[c[(c[b>>2]|0)+32>>2]>>2]|0}function us(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;d=g+12|0;e=g+8|0;h=g+4|0;f=g;c[e>>2]=a;c[h>>2]=b;c[f>>2]=ks(c[h>>2]|0)|0;b=c[h>>2]|0;if(!(c[f>>2]|0)){c[d>>2]=c[(c[c[(c[e>>2]|0)+32>>2]>>2]|0)+(34+b-1<<2)>>2];h=c[d>>2]|0;i=g;return h|0}else{c[d>>2]=c[(c[(c[(c[e>>2]|0)+32>>2]|0)+(c[f>>2]<<2)>>2]|0)+((((b-1-4062|0)>>>0)%4096|0)<<2)>>2];h=c[d>>2]|0;i=g;return h|0}return 0}function vs(a){a=a|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;i=e;return b[(c[d>>2]|0)+26>>1]|0}function ws(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if((e[(c[b>>2]|0)+24>>1]|0)&2)cj(c[b>>2]|0,1);a=(c[(c[b>>2]|0)+28>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+-1;Ub[c[144>>2]&255](c[(c[(c[b>>2]|0)+28>>2]|0)+44>>2]|0,c[c[b>>2]>>2]|0,1);i=d;return}function xs(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=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;w=i;i=i+64|0;s=w+56|0;g=w+52|0;h=w+48|0;t=w+44|0;u=w+40|0;o=w+36|0;m=w+32|0;p=w+28|0;j=w+24|0;k=w+20|0;q=w+16|0;n=w+12|0;r=w+8|0;v=w+4|0;l=w;c[g>>2]=a;c[h>>2]=d;c[t>>2]=f;c[u>>2]=0;c[o>>2]=c[(c[g>>2]|0)+52+16>>2];if((c[o>>2]|0)!=0?(b[(c[g>>2]|0)+40>>1]|0)!=0:0){c[p>>2]=ks(c[(c[g>>2]|0)+100>>2]|0)|0;c[m>>2]=ks(c[o>>2]|0)|0;a:while(1){if(!((c[m>>2]|0)>=(c[p>>2]|0)?(c[u>>2]|0)==0:0)){g=18;break}c[v>>2]=ls(c[g>>2]|0,c[m>>2]|0,j,k,q)|0;if(c[v>>2]|0){g=7;break}c[r>>2]=8192;c[n>>2]=Es(c[h>>2]|0)|0;while(1){if(!(b[(c[j>>2]|0)+(c[n>>2]<<1)>>1]|0))break;c[l>>2]=(e[(c[j>>2]|0)+(c[n>>2]<<1)>>1]|0)+(c[q>>2]|0);if(((c[l>>2]|0)>>>0<=(c[o>>2]|0)>>>0?(c[l>>2]|0)>>>0>=(c[(c[g>>2]|0)+100>>2]|0)>>>0:0)?(c[(c[k>>2]|0)+(e[(c[j>>2]|0)+(c[n>>2]<<1)>>1]<<2)>>2]|0)==(c[h>>2]|0):0)c[u>>2]=c[l>>2];f=c[r>>2]|0;c[r>>2]=f+-1;if(!f){g=15;break a}c[n>>2]=Fs(c[n>>2]|0)|0}c[m>>2]=(c[m>>2]|0)+-1}if((g|0)==7){c[s>>2]=c[v>>2];v=c[s>>2]|0;i=w;return v|0}else if((g|0)==15){c[s>>2]=Lj(53690)|0;v=c[s>>2]|0;i=w;return v|0}else if((g|0)==18){c[c[t>>2]>>2]=c[u>>2];c[s>>2]=0;v=c[s>>2]|0;i=w;return v|0}}c[c[t>>2]>>2]=0;c[s>>2]=0;v=c[s>>2]|0;i=w;return v|0}function ys(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+48|0;e=n+32|0;f=n+28|0;h=n+24|0;j=n+20|0;m=n+16|0;k=n+12|0;g=n;l=n+8|0;c[e>>2]=b;c[f>>2]=d;c[h>>2]=c[(c[e>>2]|0)+16>>2];c[j>>2]=c[(c[e>>2]|0)+20>>2];c[m>>2]=0;c[k>>2]=c[(c[h>>2]|0)+160>>2];if(c[f>>2]|0)c[m>>2]=Ds(c[(c[h>>2]|0)+216>>2]|0,c[f>>2]|0,c[k>>2]|0,c[(c[e>>2]|0)+4>>2]|0)|0;else{d=c[(c[h>>2]|0)+160>>2]|0;d=rR((c[j>>2]|0)-1|0,0,d|0,((d|0)<0)<<31>>31|0)|0;b=g;c[b>>2]=d;c[b+4>>2]=C;b=g;k=Wr(c[(c[h>>2]|0)+64>>2]|0,c[(c[e>>2]|0)+4>>2]|0,c[k>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;c[m>>2]=k;c[m>>2]=(c[m>>2]|0)==522?0:k}if((c[j>>2]|0)!=1){m=c[m>>2]|0;i=n;return m|0}if(c[m>>2]|0){d=(c[h>>2]|0)+112|0;f=d+16|0;do{a[d>>0]=255;d=d+1|0}while((d|0)<(f|0));m=c[m>>2]|0;i=n;return m|0}else{c[l>>2]=(c[(c[e>>2]|0)+4>>2]|0)+24;d=(c[h>>2]|0)+112|0;e=c[l>>2]|0;f=d+16|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));m=c[m>>2]|0;i=n;return m|0}return 0}function zs(a){a=a|0;var b=0,d=0,f=0;d=i;i=i+16|0;f=d+4|0;b=d;c[f>>2]=a;c[b>>2]=c[(c[f>>2]|0)+16>>2];a=c[f>>2]|0;if((e[(c[f>>2]|0)+24>>1]|0)&64){As(a);f=c[b>>2]|0;Bs(f);i=d;return}else{as(a);f=c[b>>2]|0;Bs(f);i=d;return}}function As(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b+4|0;f=b;c[d>>2]=a;c[f>>2]=c[(c[d>>2]|0)+16>>2];e=(c[f>>2]|0)+128|0;c[e>>2]=(c[e>>2]|0)+-1;c[(c[d>>2]|0)+12>>2]=c[(c[f>>2]|0)+144>>2];c[(c[f>>2]|0)+144>>2]=c[d>>2];e=c[(c[f>>2]|0)+64>>2]|0;a=c[(c[f>>2]|0)+160>>2]|0;a=rR((c[(c[d>>2]|0)+20>>2]|0)-1|0,0,a|0,((a|0)<0)<<31>>31|0)|0;Cs(e,a,C,c[(c[d>>2]|0)+4>>2]|0)|0;i=b;return}function Bs(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(c[(c[b>>2]|0)+128>>2]|0){i=d;return}if(Ri(c[(c[b>>2]|0)+212>>2]|0)|0){i=d;return}gr(c[b>>2]|0);i=d;return}function Cs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;i=i+16|0;c[f+12>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[f+8>>2]=e;i=f;return 0}function Ds(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;i=i+32|0;l=g+24|0;n=g+20|0;h=g+16|0;k=g+12|0;j=g+8|0;m=g;c[l>>2]=a;c[n>>2]=b;c[h>>2]=d;c[k>>2]=f;c[j>>2]=e[(c[l>>2]|0)+52+14>>1];c[j>>2]=(c[j>>2]&65024)+((c[j>>2]&1)<<16);f=(c[j>>2]|0)+24|0;f=rR((c[n>>2]|0)-1|0,0,f|0,((f|0)<0)<<31>>31|0)|0;f=gR(32,0,f|0,C|0)|0;f=gR(f|0,C|0,24,0)|0;a=m;c[a>>2]=f;c[a+4>>2]=C;a=m;a=Wr(c[(c[l>>2]|0)+8>>2]|0,c[k>>2]|0,(c[h>>2]|0)>(c[j>>2]|0)?c[j>>2]|0:c[h>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;i=g;return a|0}function Es(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[b>>2]|0)*383&8191|0}function Fs(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[b>>2]|0)+1&8191|0}function Gs(a){a=a|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;tr(c[d>>2]|0)|0;if((b[(c[d>>2]|0)+40>>1]|0)<0){i=e;return}zr(c[d>>2]|0,3+(b[(c[d>>2]|0)+40>>1]|0)|0);b[(c[d>>2]|0)+40>>1]=-1;i=e;return}function Hs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;b=Yb[c[(c[c[f>>2]>>2]|0)+28>>2]&255](c[f>>2]|0,c[e>>2]|0)|0;i=d;return b|0}function Is(b,d,e,f,g,h,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;A=i;i=i+64|0;z=A+52|0;v=A+48|0;w=A+44|0;m=A+40|0;n=A+36|0;o=A+32|0;p=A+28|0;q=A+24|0;r=A+20|0;s=A+16|0;y=A+12|0;t=A+8|0;x=A+4|0;u=A;c[v>>2]=b;c[w>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=j;c[r>>2]=k;c[s>>2]=l;c[t>>2]=0;c[x>>2]=c[w>>2];c[u>>2]=c[m>>2];if(a[(c[v>>2]|0)+46>>0]|0){c[z>>2]=8;z=c[z>>2]|0;i=A;return z|0}c[y>>2]=Ns(c[v>>2]|0,1,1)|0;if(c[y>>2]|0){c[z>>2]=c[y>>2];z=c[z>>2]|0;i=A;return z|0}a[(c[v>>2]|0)+45>>0]=1;do if(c[w>>2]|0){c[y>>2]=Os(c[v>>2]|0,c[m>>2]|0,c[n>>2]|0,0,1)|0;if(!(c[y>>2]|0)){a[(c[v>>2]|0)+44>>0]=1;break}if((c[y>>2]|0)==5){c[x>>2]=0;c[u>>2]=0;c[y>>2]=0}}while(0);if(((c[y>>2]|0)==0?(c[y>>2]=Ps(c[v>>2]|0,t)|0,(c[t>>2]|0)!=0):0)?(c[c[c[(c[v>>2]|0)+4>>2]>>2]>>2]|0)>=3:0)Cs(c[(c[v>>2]|0)+4>>2]|0,0,0,0)|0;if(!(c[y>>2]|0)){if((c[(c[v>>2]|0)+52+16>>2]|0)!=0?(j=Qs(c[v>>2]|0)|0,(j|0)!=(c[p>>2]|0)):0)c[y>>2]=Lj(54390)|0;else c[y>>2]=Rs(c[v>>2]|0,c[x>>2]|0,c[u>>2]|0,c[n>>2]|0,c[o>>2]|0,c[q>>2]|0)|0;if((c[y>>2]|0)==0|(c[y>>2]|0)==5){if(c[r>>2]|0)c[c[r>>2]>>2]=c[(c[v>>2]|0)+52+16>>2];if(c[s>>2]|0){j=c[(Ss(c[v>>2]|0)|0)>>2]|0;c[c[s>>2]>>2]=j}}}if(c[t>>2]|0){m=(c[v>>2]|0)+52|0;n=m+48|0;do{c[m>>2]=0;m=m+4|0}while((m|0)<(n|0))}tr(c[v>>2]|0)|0;Br(c[v>>2]|0,1,1);a[(c[v>>2]|0)+45>>0]=0;if((c[y>>2]|0)==0?(c[w>>2]|0)!=(c[x>>2]|0):0)m=5;else m=c[y>>2]|0;c[z>>2]=m;z=c[z>>2]|0;i=A;return z|0}function Js(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;Ob[c[(c[c[h>>2]>>2]|0)+40>>2]&255](c[h>>2]|0,c[g>>2]|0,c[f>>2]|0)|0;i=e;return}function Ks(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;j=k+16|0;e=k+24|0;f=k+8|0;h=k;g=k+20|0;c[e>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;Sj();c[g>>2]=Si(c[(c[e>>2]|0)+8>>2]|0,h)|0;if((c[g>>2]|0)==0?(a=h,b=c[a+4>>2]|0,h=f,d=c[h+4>>2]|0,(b|0)>(d|0)|((b|0)==(d|0)?(c[a>>2]|0)>>>0>(c[h>>2]|0)>>>0:0)):0){h=f;c[g>>2]=nr(c[(c[e>>2]|0)+8>>2]|0,c[h>>2]|0,c[h+4>>2]|0)|0}Tj();if(!(c[g>>2]|0)){i=k;return}h=c[g>>2]|0;c[j>>2]=c[(c[e>>2]|0)+108>>2];Rd(h,26766,j);i=k;return}function Ls(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;if((d[(c[e>>2]|0)+43>>0]|0|0)!=2){Ms(c[(c[e>>2]|0)+4>>2]|0,c[f>>2]|0)|0;i=h;return}c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[e>>2]|0)+24>>2]|0))break;Kd(c[(c[(c[e>>2]|0)+32>>2]|0)+(c[g>>2]<<2)>>2]|0);c[(c[(c[e>>2]|0)+32>>2]|0)+(c[g>>2]<<2)>>2]=0;c[g>>2]=(c[g>>2]|0)+1}i=h;return}function Ms(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=Yb[c[(c[c[f>>2]>>2]|0)+64>>2]&255](c[f>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function Ns(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;if(a[(c[g>>2]|0)+43>>0]|0){c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}else{c[k>>2]=Ar(c[(c[g>>2]|0)+4>>2]|0,c[h>>2]|0,c[j>>2]|0,10)|0;c[f>>2]=c[k>>2];k=c[f>>2]|0;i=l;return k|0}return 0}function Os(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,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;while(1){c[m>>2]=Ns(c[g>>2]|0,c[k>>2]|0,c[l>>2]|0)|0;if(!((c[h>>2]|0)!=0&(c[m>>2]|0)==5)){g=4;break}if(!(Tb[c[h>>2]&255](c[j>>2]|0)|0)){g=4;break}}if((g|0)==4){i=n;return c[m>>2]|0}return 0}function Ps(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;l=m+8|0;j=m+4|0;k=m;c[g>>2]=b;c[h>>2]=e;c[l>>2]=ms(c[g>>2]|0,0,k)|0;if(c[l>>2]|0){c[f>>2]=c[l>>2];l=c[f>>2]|0;i=m;return l|0}if(c[k>>2]|0)e=ct(c[g>>2]|0,c[h>>2]|0)|0;else e=1;c[j>>2]=e;do if(c[j>>2]|0){e=c[g>>2]|0;if((d[(c[g>>2]|0)+46>>0]|0)&2){k=yr(e,0)|0;c[l>>2]=k;if(k)break;zr(c[g>>2]|0,0);c[l>>2]=264;break}b=Ns(e,0,1)|0;c[l>>2]=b;if(!b){a[(c[g>>2]|0)+44>>0]=1;k=ms(c[g>>2]|0,0,k)|0;c[l>>2]=k;if(0==(k|0)?(c[j>>2]=ct(c[g>>2]|0,c[h>>2]|0)|0,(c[j>>2]|0)!=0):0){c[l>>2]=dt(c[g>>2]|0)|0;c[c[h>>2]>>2]=1}a[(c[g>>2]|0)+44>>0]=0;Br(c[g>>2]|0,0,1)}}while(0);if((c[j>>2]|0)==0?(c[(c[g>>2]|0)+52>>2]|0)!=3007e3:0)c[l>>2]=et(53243)|0;c[f>>2]=c[l>>2];l=c[f>>2]|0;i=m;return l|0}function Qs(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return((e[(c[b>>2]|0)+52+14>>1]|0)&65024)+(((e[(c[b>>2]|0)+52+14>>1]|0)&1)<<16)|0}function Rs(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,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,D=0,E=0,F=0,G=0,H=0;H=i;i=i+112|0;h=H+104|0;j=H+100|0;k=H+96|0;l=H+92|0;m=H+88|0;n=H+84|0;o=H+80|0;A=H+76|0;E=H+72|0;z=H+68|0;q=H+64|0;r=H+60|0;u=H+56|0;t=H+52|0;p=H+48|0;y=H+44|0;F=H+40|0;x=H+24|0;v=H+36|0;w=H+16|0;s=H+8|0;D=H;B=H+32|0;c[j>>2]=a;c[k>>2]=b;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[A>>2]=0;c[z>>2]=0;c[q>>2]=0;c[r>>2]=0;c[E>>2]=Qs(c[j>>2]|0)|0;c[y>>2]=Ss(c[j>>2]|0)|0;a:do if((c[c[y>>2]>>2]|0)>>>0<(c[(c[j>>2]|0)+52+16>>2]|0)>>>0){c[A>>2]=Ts(c[j>>2]|0,z)|0;if(c[A>>2]|0){c[h>>2]=c[A>>2];G=c[h>>2]|0;i=H;return G|0}c[u>>2]=c[(c[j>>2]|0)+52+16>>2];c[t>>2]=c[(c[j>>2]|0)+52+20>>2];c[p>>2]=1;while(1){if((c[p>>2]|0)>=5)break;c[F>>2]=c[(c[y>>2]|0)+4+(c[p>>2]<<2)>>2];do if((c[u>>2]|0)>>>0>(c[F>>2]|0)>>>0){c[A>>2]=Os(c[j>>2]|0,c[l>>2]|0,c[m>>2]|0,3+(c[p>>2]|0)|0,1)|0;if(!(c[A>>2]|0)){c[(c[y>>2]|0)+4+(c[p>>2]<<2)>>2]=(c[p>>2]|0)==1?c[u>>2]|0:-1;Br(c[j>>2]|0,3+(c[p>>2]|0)|0,1);break}if((c[A>>2]|0)!=5)break a;c[u>>2]=c[F>>2];c[l>>2]=0}while(0);c[p>>2]=(c[p>>2]|0)+1}if((c[c[y>>2]>>2]|0)>>>0<(c[u>>2]|0)>>>0?(G=Os(c[j>>2]|0,c[l>>2]|0,c[m>>2]|0,3,1)|0,c[A>>2]=G,(G|0)==0):0){c[v>>2]=c[c[y>>2]>>2];c[(c[y>>2]|0)+32>>2]=c[u>>2];if(c[n>>2]|0)c[A>>2]=or(c[(c[j>>2]|0)+8>>2]|0,c[n>>2]|0)|0;if(((c[A>>2]|0)==0?(g=c[E>>2]|0,g=rR(c[t>>2]|0,0,g|0,((g|0)<0)<<31>>31|0)|0,G=w,c[G>>2]=g,c[G+4>>2]=C,c[A>>2]=Si(c[(c[j>>2]|0)+4>>2]|0,x)|0,(c[A>>2]|0)==0):0)?(g=x,d=c[g+4>>2]|0,G=w,F=c[G+4>>2]|0,(d|0)<(F|0)|((d|0)==(F|0)?(c[g>>2]|0)>>>0<(c[G>>2]|0)>>>0:0)):0)Js(c[(c[j>>2]|0)+4>>2]|0,5,w);b:while(1){if(c[A>>2]|0)break;while(1){if(Us(c[z>>2]|0,q,r)|0)break b;if((c[r>>2]|0)>>>0<=(c[v>>2]|0)>>>0)continue b;if((c[r>>2]|0)>>>0>(c[u>>2]|0)>>>0)continue b;if((c[q>>2]|0)>>>0>(c[t>>2]|0)>>>0)continue b;g=(c[E>>2]|0)+24|0;g=rR((c[r>>2]|0)-1|0,0,g|0,((g|0)<0)<<31>>31|0)|0;g=gR(32,0,g|0,C|0)|0;g=gR(g|0,C|0,24,0)|0;G=s;c[G>>2]=g;c[G+4>>2]=C;G=s;c[A>>2]=Wr(c[(c[j>>2]|0)+8>>2]|0,c[o>>2]|0,c[E>>2]|0,c[G>>2]|0,c[G+4>>2]|0)|0;if(c[A>>2]|0)break b;g=c[E>>2]|0;g=rR((c[q>>2]|0)-1|0,0,g|0,((g|0)<0)<<31>>31|0)|0;G=s;c[G>>2]=g;c[G+4>>2]=C;G=s;c[A>>2]=Fg(c[(c[j>>2]|0)+4>>2]|0,c[o>>2]|0,c[E>>2]|0,c[G>>2]|0,c[G+4>>2]|0)|0;if(!((c[A>>2]|0)==0&(c[A>>2]|0)==0))break b}}if(!(c[A>>2]|0)){G=c[u>>2]|0;if((G|0)==(c[(ts(c[j>>2]|0)|0)+16>>2]|0)?(g=c[E>>2]|0,g=rR(c[(c[j>>2]|0)+52+20>>2]|0,0,g|0,((g|0)<0)<<31>>31|0)|0,G=D,c[G>>2]=g,c[G+4>>2]=C,G=D,c[A>>2]=nr(c[(c[j>>2]|0)+4>>2]|0,c[G>>2]|0,c[G+4>>2]|0)|0,(c[A>>2]|0)==0&(c[n>>2]|0)!=0):0)c[A>>2]=or(c[(c[j>>2]|0)+4>>2]|0,c[n>>2]|0)|0;if(!(c[A>>2]|0))c[c[y>>2]>>2]=c[u>>2]}Br(c[j>>2]|0,3,1)}if((c[A>>2]|0)==5){c[A>>2]=0;G=36}else G=36}else G=36;while(0);do if((G|0)==36?(c[A>>2]|0)==0&(c[k>>2]|0)!=0:0){if((c[c[y>>2]>>2]|0)>>>0<(c[(c[j>>2]|0)+52+16>>2]|0)>>>0){c[A>>2]=5;break}if((c[k>>2]|0)>=2?(Sd(4,B),c[A>>2]=Os(c[j>>2]|0,c[l>>2]|0,c[m>>2]|0,4,4)|0,(c[A>>2]|0)==0):0){if((c[k>>2]|0)==3){Vs(c[j>>2]|0,c[B>>2]|0);c[A>>2]=nr(c[(c[j>>2]|0)+8>>2]|0,0,0)|0}Br(c[j>>2]|0,4,4)}}while(0);Ws(c[z>>2]|0);c[h>>2]=c[A>>2];G=c[h>>2]|0;i=H;return G|0}function Ss(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[c[(c[b>>2]|0)+32>>2]>>2]|0)+96|0}function Ts(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=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;v=i;i=i+64|0;e=v+60|0;f=v+56|0;g=v+52|0;t=v+48|0;s=v+44|0;n=v+40|0;q=v+36|0;m=v+32|0;l=v+28|0;u=v+24|0;h=v+20|0;o=v+16|0;k=v+12|0;p=v+8|0;r=v+4|0;j=v;c[f>>2]=a;c[g>>2]=d;c[u>>2]=0;c[n>>2]=c[(c[f>>2]|0)+52+16>>2];c[s>>2]=(ks(c[n>>2]|0)|0)+1;c[q>>2]=28+(((c[s>>2]|0)-1|0)*20|0)+(c[n>>2]<<1);d=c[q>>2]|0;c[t>>2]=Jd(d,((d|0)<0)<<31>>31)|0;if(!(c[t>>2]|0)){c[e>>2]=7;u=c[e>>2]|0;i=v;return u|0}kR(c[t>>2]|0,0,c[q>>2]|0)|0;c[(c[t>>2]|0)+4>>2]=c[s>>2];c[l>>2]=Jd(((c[n>>2]|0)>>>0>4096?4096:c[n>>2]|0)<<1,0)|0;if(!(c[l>>2]|0))c[u>>2]=7;c[m>>2]=0;while(1){if(c[u>>2]|0)break;if((c[m>>2]|0)>=(c[s>>2]|0))break;c[u>>2]=ls(c[f>>2]|0,c[m>>2]|0,h,k,o)|0;if(!(c[u>>2]|0)){c[k>>2]=(c[k>>2]|0)+4;if(((c[m>>2]|0)+1|0)==(c[s>>2]|0))c[r>>2]=(c[n>>2]|0)-(c[o>>2]|0);else c[r>>2]=((c[h>>2]|0)-(c[k>>2]|0)|0)/4|0;c[j>>2]=(c[t>>2]|0)+8+((c[(c[t>>2]|0)+4>>2]|0)*20|0)+(c[o>>2]<<1);c[o>>2]=(c[o>>2]|0)+1;c[p>>2]=0;while(1){if((c[p>>2]|0)>=(c[r>>2]|0))break;b[(c[j>>2]|0)+(c[p>>2]<<1)>>1]=c[p>>2];c[p>>2]=(c[p>>2]|0)+1}at(c[k>>2]|0,c[l>>2]|0,c[j>>2]|0,r);c[(c[t>>2]|0)+8+((c[m>>2]|0)*20|0)+16>>2]=c[o>>2];c[(c[t>>2]|0)+8+((c[m>>2]|0)*20|0)+12>>2]=c[r>>2];c[(c[t>>2]|0)+8+((c[m>>2]|0)*20|0)+4>>2]=c[j>>2];c[(c[t>>2]|0)+8+((c[m>>2]|0)*20|0)+8>>2]=c[k>>2]}c[m>>2]=(c[m>>2]|0)+1}Kd(c[l>>2]|0);if(c[u>>2]|0)Ws(c[t>>2]|0);c[c[g>>2]>>2]=c[t>>2];c[e>>2]=c[u>>2];u=c[e>>2]|0;i=v;return u|0}function Us(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;f=p+28|0;g=p+24|0;h=p+20|0;k=p+16|0;m=p+12|0;j=p+8|0;n=p+4|0;l=p;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[m>>2]=-1;c[k>>2]=c[c[f>>2]>>2];c[j>>2]=(c[(c[f>>2]|0)+4>>2]|0)-1;while(1){if((c[j>>2]|0)<0)break;c[n>>2]=(c[f>>2]|0)+8+((c[j>>2]|0)*20|0);while(1){if((c[c[n>>2]>>2]|0)>=(c[(c[n>>2]|0)+12>>2]|0))break;c[l>>2]=c[(c[(c[n>>2]|0)+8>>2]|0)+((e[(c[(c[n>>2]|0)+4>>2]|0)+(c[c[n>>2]>>2]<<1)>>1]|0)<<2)>>2];if((c[l>>2]|0)>>>0>(c[k>>2]|0)>>>0){o=6;break}b=c[n>>2]|0;c[b>>2]=(c[b>>2]|0)+1}if((o|0)==6?(o=0,(c[l>>2]|0)>>>0<(c[m>>2]|0)>>>0):0){c[m>>2]=c[l>>2];c[c[h>>2]>>2]=(c[(c[n>>2]|0)+16>>2]|0)+(e[(c[(c[n>>2]|0)+4>>2]|0)+(c[c[n>>2]>>2]<<1)>>1]|0)}c[j>>2]=(c[j>>2]|0)+-1}o=c[m>>2]|0;c[c[f>>2]>>2]=o;c[c[g>>2]>>2]=o;i=p;return(c[m>>2]|0)==-1|0}function Vs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;f=i;i=i+32|0;g=f+16|0;h=f+12|0;e=f+8|0;d=f+4|0;j=f;c[g>>2]=a;c[h>>2]=b;c[e>>2]=Ss(c[g>>2]|0)|0;c[j>>2]=(c[g>>2]|0)+52+32;b=(c[g>>2]|0)+112|0;c[b>>2]=(c[b>>2]|0)+1;c[(c[g>>2]|0)+52+16>>2]=0;b=c[j>>2]|0;Xs(b,1+($q(c[j>>2]|0)|0)|0);c[(c[g>>2]|0)+52+32+4>>2]=c[h>>2];Ys(c[g>>2]|0);c[c[e>>2]>>2]=0;c[(c[e>>2]|0)+32>>2]=0;c[(c[e>>2]|0)+4+4>>2]=0;c[d>>2]=2;while(1){if((c[d>>2]|0)>=5)break;c[(c[e>>2]|0)+4+(c[d>>2]<<2)>>2]=-1;c[d>>2]=(c[d>>2]|0)+1}i=f;return}function Ws(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Kd(c[d>>2]|0);i=b;return}function Xs(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;a[c[f>>2]>>0]=(c[g>>2]|0)>>>24;a[(c[f>>2]|0)+1>>0]=(c[g>>2]|0)>>>16;a[(c[f>>2]|0)+2>>0]=(c[g>>2]|0)>>>8;a[(c[f>>2]|0)+3>>0]=c[g>>2];i=e;return}function Ys(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;f=h+8|0;g=h+4|0;c[f>>2]=b;c[g>>2]=ts(c[f>>2]|0)|0;c[h>>2]=40;a[(c[f>>2]|0)+52+12>>0]=1;c[(c[f>>2]|0)+52>>2]=3007e3;Zs(1,(c[f>>2]|0)+52|0,40,0,(c[f>>2]|0)+52+40|0);b=(c[g>>2]|0)+48|0;d=(c[f>>2]|0)+52|0;e=b+48|0;do{a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}while((b|0)<(e|0));_s(c[f>>2]|0);b=c[g>>2]|0;d=(c[f>>2]|0)+52|0;e=b+48|0;do{a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}while((b|0)<(e|0));i=h;return}function Zs(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;i=i+48|0;g=o+32|0;q=o+28|0;p=o+24|0;h=o+20|0;j=o+16|0;m=o+12|0;n=o+8|0;k=o+4|0;l=o;c[g>>2]=a;c[q>>2]=b;c[p>>2]=d;c[h>>2]=e;c[j>>2]=f;c[k>>2]=c[q>>2];c[l>>2]=(c[q>>2]|0)+(c[p>>2]|0);if(c[h>>2]|0){c[m>>2]=c[c[h>>2]>>2];c[n>>2]=c[(c[h>>2]|0)+4>>2]}else{c[n>>2]=0;c[m>>2]=0}if(c[g>>2]|0){do{q=c[k>>2]|0;c[k>>2]=q+4;c[m>>2]=(c[m>>2]|0)+((c[q>>2]|0)+(c[n>>2]|0));q=c[k>>2]|0;c[k>>2]=q+4;c[n>>2]=(c[n>>2]|0)+((c[q>>2]|0)+(c[m>>2]|0))}while((c[k>>2]|0)>>>0<(c[l>>2]|0)>>>0);q=c[m>>2]|0;p=c[j>>2]|0;c[p>>2]=q;p=c[n>>2]|0;q=c[j>>2]|0;q=q+4|0;c[q>>2]=p;i=o;return}else{do{c[m>>2]=(c[m>>2]|0)+(((c[c[k>>2]>>2]&255)<<24)+((c[c[k>>2]>>2]&65280)<<8)+((c[c[k>>2]>>2]&16711680)>>>8)+((c[c[k>>2]>>2]&-16777216)>>>24)+(c[n>>2]|0));c[n>>2]=(c[n>>2]|0)+(((c[(c[k>>2]|0)+4>>2]&255)<<24)+((c[(c[k>>2]|0)+4>>2]&65280)<<8)+((c[(c[k>>2]|0)+4>>2]&16711680)>>>8)+((c[(c[k>>2]|0)+4>>2]&-16777216)>>>24)+(c[m>>2]|0));c[k>>2]=(c[k>>2]|0)+8}while((c[k>>2]|0)>>>0<(c[l>>2]|0)>>>0);q=c[m>>2]|0;p=c[j>>2]|0;c[p>>2]=q;p=c[n>>2]|0;q=c[j>>2]|0;q=q+4|0;c[q>>2]=p;i=o;return}}function _s(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;if((d[(c[b>>2]|0)+43>>0]|0|0)==2){i=e;return}$s(c[(c[b>>2]|0)+4>>2]|0);i=e;return}function $s(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Qb[c[(c[c[d>>2]>>2]|0)+60>>2]&255](c[d>>2]|0);i=b;return}function at(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+160|0;f=s+144|0;g=s+140|0;h=s+136|0;j=s+132|0;o=s+128|0;p=s+124|0;k=s+120|0;m=s+116|0;n=s+112|0;l=s+8|0;q=s+4|0;r=s;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[o>>2]=c[c[j>>2]>>2];c[p>>2]=0;c[k>>2]=0;c[n>>2]=0;b=l;a=b+104|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(a|0));c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[o>>2]|0))break;c[p>>2]=1;c[k>>2]=(c[h>>2]|0)+(c[m>>2]<<1);c[n>>2]=0;while(1){if(!(c[m>>2]&1<>2]))break;c[q>>2]=l+(c[n>>2]<<3);bt(c[f>>2]|0,c[(c[q>>2]|0)+4>>2]|0,c[c[q>>2]>>2]|0,k,p,c[g>>2]|0);c[n>>2]=(c[n>>2]|0)+1}c[l+(c[n>>2]<<3)+4>>2]=c[k>>2];c[l+(c[n>>2]<<3)>>2]=c[p>>2];c[m>>2]=(c[m>>2]|0)+1}c[n>>2]=(c[n>>2]|0)+1;while(1){if((c[n>>2]|0)>>>0>=13)break;if(c[o>>2]&1<>2]){c[r>>2]=l+(c[n>>2]<<3);bt(c[f>>2]|0,c[(c[r>>2]|0)+4>>2]|0,c[c[r>>2]>>2]|0,k,p,c[g>>2]|0)}c[n>>2]=(c[n>>2]|0)+1}c[c[j>>2]>>2]=c[p>>2];i=s;return}function bt(a,d,f,g,h,j){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;y=i;i=i+64|0;k=y+44|0;l=y+40|0;m=y+36|0;n=y+32|0;o=y+28|0;p=y+24|0;s=y+20|0;u=y+16|0;t=y+12|0;w=y+8|0;q=y+4|0;v=y+48|0;r=y;c[k>>2]=a;c[l>>2]=d;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=j;c[s>>2]=0;c[u>>2]=0;c[t>>2]=0;c[w>>2]=c[c[o>>2]>>2];c[q>>2]=c[c[n>>2]>>2];while(1){if((c[u>>2]|0)>=(c[w>>2]|0)?(c[s>>2]|0)>=(c[m>>2]|0):0)break;do if((c[s>>2]|0)<(c[m>>2]|0)){if((c[u>>2]|0)<(c[w>>2]|0)?(c[(c[k>>2]|0)+((e[(c[l>>2]|0)+(c[s>>2]<<1)>>1]|0)<<2)>>2]|0)>>>0>=(c[(c[k>>2]|0)+((e[(c[q>>2]|0)+(c[u>>2]<<1)>>1]|0)<<2)>>2]|0)>>>0:0){x=8;break}h=c[s>>2]|0;c[s>>2]=h+1;b[v>>1]=b[(c[l>>2]|0)+(h<<1)>>1]|0}else x=8;while(0);if((x|0)==8){x=0;h=c[u>>2]|0;c[u>>2]=h+1;b[v>>1]=b[(c[q>>2]|0)+(h<<1)>>1]|0}c[r>>2]=c[(c[k>>2]|0)+((e[v>>1]|0)<<2)>>2];g=b[v>>1]|0;h=c[t>>2]|0;c[t>>2]=h+1;b[(c[p>>2]|0)+(h<<1)>>1]=g;if((c[s>>2]|0)>=(c[m>>2]|0))continue;if((c[(c[k>>2]|0)+((e[(c[l>>2]|0)+(c[s>>2]<<1)>>1]|0)<<2)>>2]|0)!=(c[r>>2]|0))continue;c[s>>2]=(c[s>>2]|0)+1}c[c[n>>2]>>2]=c[l>>2];c[c[o>>2]>>2]=c[t>>2];iR(c[l>>2]|0,c[p>>2]|0,c[t>>2]<<1|0)|0;i=y;return}function ct(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+128|0;h=p+120|0;j=p+116|0;k=p+112|0;l=p+104|0;n=p+56|0;o=p+8|0;m=p;c[j>>2]=b;c[k>>2]=f;c[m>>2]=ts(c[j>>2]|0)|0;f=n;b=c[m>>2]|0;g=f+48|0;do{a[f>>0]=a[b>>0]|0;f=f+1|0;b=b+1|0}while((f|0)<(g|0));_s(c[j>>2]|0);f=o;b=(c[m>>2]|0)+48|0;g=f+48|0;do{a[f>>0]=a[b>>0]|0;f=f+1|0;b=b+1|0}while((f|0)<(g|0));if(vQ(n,o,48)|0){c[h>>2]=1;o=c[h>>2]|0;i=p;return o|0}if(!(d[n+12>>0]|0)){c[h>>2]=1;o=c[h>>2]|0;i=p;return o|0}Zs(1,n,40,0,l);if((c[l>>2]|0)==(c[n+40>>2]|0)?(c[l+4>>2]|0)==(c[n+40+4>>2]|0):0){if(vQ((c[j>>2]|0)+52|0,n,48)|0){c[c[k>>2]>>2]=1;f=(c[j>>2]|0)+52|0;b=n;g=f+48|0;do{c[f>>2]=c[b>>2];f=f+4|0;b=b+4|0}while((f|0)<(g|0));c[(c[j>>2]|0)+36>>2]=((e[(c[j>>2]|0)+52+14>>1]|0)&65024)+(((e[(c[j>>2]|0)+52+14>>1]|0)&1)<<16)}c[h>>2]=0;o=c[h>>2]|0;i=p;return o|0}c[h>>2]=1;o=c[h>>2]|0;i=p;return o|0}function dt(e){e=e|0;var f=0,g=0,h=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,D=0,E=0;E=i;i=i+144|0;B=E+16|0;g=E+96|0;h=E+92|0;y=E+88|0;u=E+8|0;m=E+80|0;p=E+76|0;t=E+72|0;j=E+104|0;l=E+68|0;z=E+64|0;k=E+60|0;o=E+56|0;q=E;A=E+52|0;s=E+48|0;D=E+44|0;r=E+40|0;x=E+36|0;v=E+32|0;w=E+28|0;n=E+24|0;c[h>>2]=e;c[m>>2]=0;c[m+4>>2]=0;c[p>>2]=1+(d[(c[h>>2]|0)+45>>0]|0);c[t>>2]=8-(c[p>>2]|0);c[y>>2]=Ns(c[h>>2]|0,c[p>>2]|0,c[t>>2]|0)|0;if(c[y>>2]|0){c[g>>2]=c[y>>2];D=c[g>>2]|0;i=E;return D|0}e=(c[h>>2]|0)+52|0;f=e+48|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));c[y>>2]=Si(c[(c[h>>2]|0)+8>>2]|0,u)|0;a:do if(!(c[y>>2]|0)){f=u;e=c[f+4>>2]|0;do if((e|0)>0|(e|0)==0&(c[f>>2]|0)>>>0>32){c[l>>2]=0;c[y>>2]=Wr(c[(c[h>>2]|0)+8>>2]|0,j,32,0,0)|0;if(c[y>>2]|0)break a;c[s>>2]=$q(j)|0;c[A>>2]=$q(j+8|0)|0;if((((c[s>>2]&-2|0)==931071618?!(((c[A>>2]|0)>65536?1:(c[A>>2]&(c[A>>2]|0)-1|0)!=0)|(c[A>>2]|0)<512):0)?(a[(c[h>>2]|0)+52+13>>0]=c[s>>2]&1,c[(c[h>>2]|0)+36>>2]=c[A>>2],s=$q(j+12|0)|0,c[(c[h>>2]|0)+112>>2]=s,s=(c[h>>2]|0)+52+32|0,f=j+16|0,a[s>>0]=a[f>>0]|0,a[s+1>>0]=a[f+1>>0]|0,a[s+2>>0]=a[f+2>>0]|0,a[s+3>>0]=a[f+3>>0]|0,a[s+4>>0]=a[f+4>>0]|0,a[s+5>>0]=a[f+5>>0]|0,a[s+6>>0]=a[f+6>>0]|0,a[s+7>>0]=a[f+7>>0]|0,Zs((d[(c[h>>2]|0)+52+13>>0]|0)==((a[960]|0)==0|0)&1,j,24,0,(c[h>>2]|0)+52+24|0),s=c[(c[h>>2]|0)+52+24>>2]|0,(s|0)==($q(j+24|0)|0)):0)?(s=c[(c[h>>2]|0)+52+24+4>>2]|0,(s|0)==($q(j+28|0)|0)):0){c[D>>2]=$q(j+4|0)|0;if((c[D>>2]|0)!=3007e3){c[y>>2]=et(52297)|0;break}c[z>>2]=(c[A>>2]|0)+24;D=c[z>>2]|0;c[l>>2]=Jd(D,((D|0)<0)<<31>>31)|0;if(!(c[l>>2]|0)){c[y>>2]=7;break a}c[k>>2]=(c[l>>2]|0)+24;c[o>>2]=0;D=q;c[D>>2]=32;c[D+4>>2]=0;while(1){f=q;s=c[z>>2]|0;s=gR(c[f>>2]|0,c[f+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;f=C;D=u;j=c[D+4>>2]|0;if(!((f|0)<(j|0)|((f|0)==(j|0)?s>>>0<=(c[D>>2]|0)>>>0:0)))break;c[o>>2]=(c[o>>2]|0)+1;D=q;c[y>>2]=Wr(c[(c[h>>2]|0)+8>>2]|0,c[l>>2]|0,c[z>>2]|0,c[D>>2]|0,c[D+4>>2]|0)|0;if(c[y>>2]|0)break;c[r>>2]=ft(c[h>>2]|0,x,v,c[k>>2]|0,c[l>>2]|0)|0;if(!(c[r>>2]|0))break;c[y>>2]=gt(c[h>>2]|0,c[o>>2]|0,c[x>>2]|0)|0;if(c[y>>2]|0)break;if(c[v>>2]|0){c[(c[h>>2]|0)+52+16>>2]=c[o>>2];c[(c[h>>2]|0)+52+20>>2]=c[v>>2];b[(c[h>>2]|0)+52+14>>1]=c[A>>2]&65280|c[A>>2]>>16;c[m>>2]=c[(c[h>>2]|0)+52+24>>2];c[m+4>>2]=c[(c[h>>2]|0)+52+24+4>>2]}s=c[z>>2]|0;D=q;s=gR(c[D>>2]|0,c[D+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;D=q;c[D>>2]=s;c[D+4>>2]=C}Kd(c[l>>2]|0)}}while(0);if(!(c[y>>2]|0)){c[(c[h>>2]|0)+52+24>>2]=c[m>>2];c[(c[h>>2]|0)+52+24+4>>2]=c[m+4>>2];Ys(c[h>>2]|0);c[w>>2]=Ss(c[h>>2]|0)|0;c[c[w>>2]>>2]=0;c[(c[w>>2]|0)+32>>2]=c[(c[h>>2]|0)+52+16>>2];c[(c[w>>2]|0)+4>>2]=0;c[n>>2]=1;while(1){if((c[n>>2]|0)>=5)break;c[(c[w>>2]|0)+4+(c[n>>2]<<2)>>2]=-1;c[n>>2]=(c[n>>2]|0)+1}if(c[(c[h>>2]|0)+52+16>>2]|0)c[(c[w>>2]|0)+4+4>>2]=c[(c[h>>2]|0)+52+16>>2];if(c[(c[h>>2]|0)+52+20>>2]|0){D=c[(c[h>>2]|0)+108>>2]|0;c[B>>2]=c[(c[h>>2]|0)+52+16>>2];c[B+4>>2]=D;Rd(283,26831,B)}}}while(0);Br(c[h>>2]|0,c[p>>2]|0,c[t>>2]|0);c[g>>2]=c[y>>2];D=c[g>>2]|0;i=E;return D|0}function et(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b;e=b+8|0;c[e>>2]=a;e=c[e>>2]|0;a=(kf()|0)+20|0;c[d>>2]=e;c[d+4>>2]=a;Rd(14,26792,d);i=b;return 14}function ft(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;j=s+32|0;k=s+28|0;l=s+24|0;m=s+20|0;n=s+16|0;o=s+12|0;q=s+8|0;p=s+4|0;r=s;c[k>>2]=b;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=(c[k>>2]|0)+52+24;if(vQ((c[k>>2]|0)+52+32|0,(c[o>>2]|0)+8|0,8)|0){c[j>>2]=0;f=c[j>>2]|0;i=s;return f|0}c[r>>2]=$q(c[o>>2]|0)|0;if(!(c[r>>2]|0)){c[j>>2]=0;f=c[j>>2]|0;i=s;return f|0}c[q>>2]=(d[(c[k>>2]|0)+52+13>>0]|0)==((a[960]|0)==0|0)&1;Zs(c[q>>2]|0,c[o>>2]|0,8,c[p>>2]|0,c[p>>2]|0);Zs(c[q>>2]|0,c[n>>2]|0,c[(c[k>>2]|0)+36>>2]|0,c[p>>2]|0,c[p>>2]|0);f=c[c[p>>2]>>2]|0;if((f|0)==($q((c[o>>2]|0)+16|0)|0)?(f=c[(c[p>>2]|0)+4>>2]|0,(f|0)==($q((c[o>>2]|0)+20|0)|0)):0){c[c[l>>2]>>2]=c[r>>2];f=$q((c[o>>2]|0)+4|0)|0;c[c[m>>2]>>2]=f;c[j>>2]=1;f=c[j>>2]|0;i=s;return f|0}c[j>>2]=0;f=c[j>>2]|0;i=s;return f|0}function gt(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;f=t+44|0;g=t+40|0;h=t+36|0;j=t+32|0;r=t+28|0;n=t+24|0;l=t+20|0;k=t+16|0;m=t+12|0;o=t+8|0;q=t+4|0;p=t;c[g>>2]=a;c[h>>2]=d;c[j>>2]=e;c[n>>2]=0;c[l>>2]=0;c[k>>2]=0;a=c[g>>2]|0;c[r>>2]=ls(a,ks(c[h>>2]|0)|0,k,l,n)|0;do if(!(c[r>>2]|0)){c[o>>2]=(c[h>>2]|0)-(c[n>>2]|0);if((c[o>>2]|0)==1){c[p>>2]=(c[k>>2]|0)+16384-((c[l>>2]|0)+4);kR((c[l>>2]|0)+4|0,0,c[p>>2]|0)|0}if(c[(c[l>>2]|0)+(c[o>>2]<<2)>>2]|0)js(c[g>>2]|0);c[q>>2]=c[o>>2];c[m>>2]=Es(c[j>>2]|0)|0;while(1){if(!(b[(c[k>>2]|0)+(c[m>>2]<<1)>>1]|0)){s=11;break}a=c[q>>2]|0;c[q>>2]=a+-1;if(!a)break;c[m>>2]=Fs(c[m>>2]|0)|0}if((s|0)==11){c[(c[l>>2]|0)+(c[o>>2]<<2)>>2]=c[j>>2];b[(c[k>>2]|0)+(c[m>>2]<<1)>>1]=c[o>>2];break}c[f>>2]=Lj(52166)|0;s=c[f>>2]|0;i=t;return s|0}while(0);c[f>>2]=c[r>>2];s=c[f>>2]|0;i=t;return s|0}function ht(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;d=f+8|0;b=f+4|0;e=f;c[b>>2]=a;if(((c[b>>2]|0)!=0?(c[c[b>>2]>>2]|0)!=0:0)?(c[(c[b>>2]|0)+8>>2]|0)>=0:0){c[e>>2]=Yb[c[c[b>>2]>>2]&255](c[(c[b>>2]|0)+4>>2]|0,c[(c[b>>2]|0)+8>>2]|0)|0;b=(c[b>>2]|0)+8|0;if(!(c[e>>2]|0))c[b>>2]=-1;else c[b>>2]=(c[b>>2]|0)+1;c[d>>2]=c[e>>2];e=c[d>>2]|0;i=f;return e|0}c[d>>2]=0;e=c[d>>2]|0;i=f;return e|0}function it(){return 48}function jt(a,b){a=a|0;b=b|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;f=k+16|0;l=k+12|0;g=k+8|0;h=k+4|0;j=k;c[l>>2]=a;c[g>>2]=b;c[h>>2]=c[l>>2];c[j>>2]=0;if(c[(c[h>>2]|0)+44>>2]|0){c[f>>2]=0;l=c[f>>2]|0;i=k;return l|0}do if(d[(c[h>>2]|0)+21>>0]|0){if(((d[(c[h>>2]|0)+21>>0]|0)&3|0)==0?((e[(c[g>>2]|0)+24>>1]|0)&8|0)==0:0)break;c[f>>2]=0;l=c[f>>2]|0;i=k;return l|0}while(0);c[(c[g>>2]|0)+12>>2]=0;l=(sr(c[h>>2]|0)|0)!=0;a=c[g>>2]|0;if(l){c[j>>2]=lt(a)|0;if(!(c[j>>2]|0))c[j>>2]=mt(c[h>>2]|0,c[g>>2]|0,0,0)|0}else{if(!(((e[a+24>>1]|0)&8|0)==0?(d[(c[h>>2]|0)+17>>0]|0|0)!=3:0))c[j>>2]=nt(c[h>>2]|0,1)|0;if(!(c[j>>2]|0))c[j>>2]=ot(c[h>>2]|0,c[g>>2]|0)|0}if(!(c[j>>2]|0))bj(c[g>>2]|0);c[f>>2]=fr(c[h>>2]|0,c[j>>2]|0)|0;l=c[f>>2]|0;i=k;return l|0}function kt(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 j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;j=p+20|0;k=p+16|0;l=p+12|0;m=p+8|0;n=p+4|0;o=p;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;e=c[o>>2]|0;h=e+48|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(h|0));c[(c[o>>2]|0)+24>>2]=1;c[(c[o>>2]|0)+28>>2]=c[k>>2];a[(c[o>>2]|0)+32>>0]=c[l>>2];a[(c[o>>2]|0)+33>>0]=2;c[(c[o>>2]|0)+36>>2]=c[m>>2];c[(c[o>>2]|0)+40>>2]=c[n>>2];c[(c[o>>2]|0)+16>>2]=100;c[(c[o>>2]|0)+20>>2]=1;o=Vi(c[o>>2]|0,c[j>>2]|0)|0;i=p;return o|0}function lt(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[d>>2]=a;if(Dt(c[d>>2]|0)|0){c[b>>2]=Et(c[d>>2]|0)|0;a=c[b>>2]|0;i=e;return a|0}else{c[b>>2]=0;a=c[b>>2]|0;i=e;return a|0}return 0}function mt(a,b,e,f){ -a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;g=p+28|0;h=p+24|0;j=p+20|0;k=p+16|0;o=p+12|0;l=p+8|0;m=p+4|0;n=p;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;a:do if(c[k>>2]|0){c[n>>2]=h;c[l>>2]=0;c[m>>2]=c[h>>2];while(1){a=c[m>>2]|0;c[c[n>>2]>>2]=a;if(!a)break a;if((c[(c[m>>2]|0)+20>>2]|0)>>>0<=(c[j>>2]|0)>>>0){c[n>>2]=(c[m>>2]|0)+12;c[l>>2]=(c[l>>2]|0)+1}c[m>>2]=c[(c[m>>2]|0)+12>>2]}}else c[l>>2]=1;while(0);n=(c[g>>2]|0)+192+8|0;c[n>>2]=(c[n>>2]|0)+(c[l>>2]|0);if((c[(c[h>>2]|0)+20>>2]|0)==1)qt(c[h>>2]|0);c[o>>2]=wt(c[(c[g>>2]|0)+216>>2]|0,c[(c[g>>2]|0)+160>>2]|0,c[h>>2]|0,c[j>>2]|0,c[k>>2]|0,d[(c[g>>2]|0)+11>>0]|0)|0;if(c[o>>2]|0){o=c[o>>2]|0;i=p;return o|0}if(!(c[(c[g>>2]|0)+96>>2]|0)){o=c[o>>2]|0;i=p;return o|0}c[m>>2]=c[h>>2];while(1){if(!(c[m>>2]|0))break;_r(c[(c[g>>2]|0)+96>>2]|0,c[(c[m>>2]|0)+20>>2]|0,c[(c[m>>2]|0)+4>>2]|0);c[m>>2]=c[(c[m>>2]|0)+12>>2]}o=c[o>>2]|0;i=p;return o|0}function nt(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;f=o+24|0;g=o+20|0;h=o+16|0;m=o+12|0;k=o+8|0;l=o;j=o+40|0;n=o+28|0;c[g>>2]=b;c[h>>2]=e;c[m>>2]=rt(c[g>>2]|0)|0;if(c[m>>2]|0){c[f>>2]=c[m>>2];n=c[f>>2]|0;i=o;return n|0}do if(!(a[(c[g>>2]|0)+7>>0]|0)){if((c[c[(c[g>>2]|0)+68>>2]>>2]|0)!=0?(d[(c[g>>2]|0)+5>>0]|0)!=4:0){c[k>>2]=Sr(c[(c[g>>2]|0)+64>>2]|0)|0;if(!(c[k>>2]&512)){a[n>>0]=a[26758]|0;a[n+1>>0]=a[26759]|0;a[n+2>>0]=a[26760]|0;a[n+3>>0]=a[26761]|0;a[n+4>>0]=a[26762]|0;a[n+5>>0]=a[26763]|0;a[n+6>>0]=a[26764]|0;a[n+7>>0]=a[26765]|0;Xs(n+8|0,c[(c[g>>2]|0)+48>>2]|0);e=fs(c[g>>2]|0)|0;b=l;c[b>>2]=e;c[b+4>>2]=C;b=l;c[m>>2]=Wr(c[(c[g>>2]|0)+68>>2]|0,j,8,c[b>>2]|0,c[b+4>>2]|0)|0;if((c[m>>2]|0)==0?0==(vQ(j,26758,8)|0):0){b=l;c[m>>2]=Fg(c[(c[g>>2]|0)+68>>2]|0,26901,1,c[b>>2]|0,c[b+4>>2]|0)|0}if((c[m>>2]|0)!=0&(c[m>>2]|0)!=522){c[f>>2]=c[m>>2];n=c[f>>2]|0;i=o;return n|0}if(((d[(c[g>>2]|0)+8>>0]|0)!=0?0==(c[k>>2]&1024|0):0)?(c[m>>2]=or(c[(c[g>>2]|0)+68>>2]|0,d[(c[g>>2]|0)+12>>0]|0)|0,(c[m>>2]|0)!=0):0){c[f>>2]=c[m>>2];n=c[f>>2]|0;i=o;return n|0}b=(c[g>>2]|0)+88|0;c[m>>2]=Fg(c[(c[g>>2]|0)+68>>2]|0,n,12,c[b>>2]|0,c[b+4>>2]|0)|0;if(c[m>>2]|0){c[f>>2]=c[m>>2];n=c[f>>2]|0;i=o;return n|0}}if(0==(c[k>>2]&1024|0)?(c[m>>2]=or(c[(c[g>>2]|0)+68>>2]|0,d[(c[g>>2]|0)+12>>0]|((d[(c[g>>2]|0)+12>>0]|0)==3?16:0))|0,(c[m>>2]|0)!=0):0){c[f>>2]=c[m>>2];n=c[f>>2]|0;i=o;return n|0}e=(c[g>>2]|0)+80|0;b=c[e+4>>2]|0;n=(c[g>>2]|0)+88|0;c[n>>2]=c[e>>2];c[n+4>>2]=b;if(!(c[h>>2]|0))break;if(c[k>>2]&512)break;c[(c[g>>2]|0)+48>>2]=0;c[m>>2]=st(c[g>>2]|0)|0;if(!(c[m>>2]|0))break;c[f>>2]=c[m>>2];n=c[f>>2]|0;i=o;return n|0}b=(c[g>>2]|0)+80|0;m=c[b+4>>2]|0;n=(c[g>>2]|0)+88|0;c[n>>2]=c[b>>2];c[n+4>>2]=m}while(0);tt(c[(c[g>>2]|0)+212>>2]|0);a[(c[g>>2]|0)+17>>0]=4;c[f>>2]=0;n=c[f>>2]|0;i=o;return n|0}function ot(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+48|0;g=n+32|0;h=n+28|0;m=n+24|0;f=n+8|0;l=n+20|0;j=n;k=n+16|0;c[g>>2]=b;c[h>>2]=d;c[m>>2]=0;if(!(c[c[(c[g>>2]|0)+64>>2]>>2]|0))c[m>>2]=pt(c[g>>2]|0,c[(c[g>>2]|0)+64>>2]|0,c[(c[g>>2]|0)+152>>2]|0)|0;do if((c[m>>2]|0)==0?(c[(c[g>>2]|0)+40>>2]|0)>>>0<(c[(c[g>>2]|0)+28>>2]|0)>>>0:0){if((c[(c[h>>2]|0)+12>>2]|0)==0?(c[(c[h>>2]|0)+20>>2]|0)>>>0<=(c[(c[g>>2]|0)+40>>2]|0)>>>0:0)break;d=c[(c[g>>2]|0)+160>>2]|0;d=rR(d|0,((d|0)<0)<<31>>31|0,c[(c[g>>2]|0)+28>>2]|0,0)|0;b=f;c[b>>2]=d;c[b+4>>2]=C;Js(c[(c[g>>2]|0)+64>>2]|0,5,f);c[(c[g>>2]|0)+40>>2]=c[(c[g>>2]|0)+28>>2]}while(0);while(1){if(!((c[m>>2]|0)==0?(c[h>>2]|0)!=0:0))break;c[l>>2]=c[(c[h>>2]|0)+20>>2];if((c[l>>2]|0)>>>0<=(c[(c[g>>2]|0)+28>>2]|0)>>>0?0==((e[(c[h>>2]|0)+24>>1]|0)&32|0):0){b=c[(c[g>>2]|0)+160>>2]|0;b=rR((c[l>>2]|0)-1|0,0,b|0,((b|0)<0)<<31>>31|0)|0;f=j;c[f>>2]=b;c[f+4>>2]=C;if((c[(c[h>>2]|0)+20>>2]|0)==1)qt(c[h>>2]|0);c[k>>2]=c[(c[h>>2]|0)+4>>2];f=j;c[m>>2]=Fg(c[(c[g>>2]|0)+64>>2]|0,c[k>>2]|0,c[(c[g>>2]|0)+160>>2]|0,c[f>>2]|0,c[f+4>>2]|0)|0;if((c[l>>2]|0)==1){d=(c[g>>2]|0)+112|0;b=(c[k>>2]|0)+24|0;f=d+16|0;do{a[d>>0]=a[b>>0]|0;d=d+1|0;b=b+1|0}while((d|0)<(f|0))}if((c[l>>2]|0)>>>0>(c[(c[g>>2]|0)+36>>2]|0)>>>0)c[(c[g>>2]|0)+36>>2]=c[l>>2];f=(c[g>>2]|0)+192+8|0;c[f>>2]=(c[f>>2]|0)+1;_r(c[(c[g>>2]|0)+96>>2]|0,c[l>>2]|0,c[(c[h>>2]|0)+4>>2]|0)}c[h>>2]=c[(c[h>>2]|0)+12>>2]}i=n;return c[m>>2]|0}function pt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f+12|0;h=f+8|0;g=f+4|0;e=f;c[j>>2]=a;c[h>>2]=b;c[g>>2]=d;c[g>>2]=c[g>>2]|30;c[e>>2]=Vr(c[c[j>>2]>>2]|0,0,c[h>>2]|0,c[g>>2]|0,0)|0;i=f;return c[e>>2]|0}function qt(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=($q((c[(c[d>>2]|0)+16>>2]|0)+112|0)|0)+1;Xs((c[(c[d>>2]|0)+4>>2]|0)+24|0,c[e>>2]|0);Xs((c[(c[d>>2]|0)+4>>2]|0)+92|0,c[e>>2]|0);Xs((c[(c[d>>2]|0)+4>>2]|0)+96|0,3011e3);i=b;return}function rt(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=c[(c[b>>2]|0)+44>>2];if((c[d>>2]|0)==0?0==(sr(c[b>>2]|0)|0):0)c[d>>2]=ut(c[b>>2]|0,4)|0;i=e;return c[d>>2]|0}function st(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+32|0;f=l+20|0;k=l+16|0;j=l+12|0;g=l+8|0;h=l+4|0;e=l;c[f>>2]=b;c[k>>2]=0;c[j>>2]=c[(c[f>>2]|0)+208>>2];c[g>>2]=c[(c[f>>2]|0)+160>>2];if((c[g>>2]|0)>>>0>(c[(c[f>>2]|0)+156>>2]|0)>>>0)c[g>>2]=c[(c[f>>2]|0)+156>>2];c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[f>>2]|0)+104>>2]|0))break;b=(c[(c[f>>2]|0)+100>>2]|0)+((c[e>>2]|0)*48|0)+8|0;if((c[b>>2]|0)==0&(c[b+4>>2]|0)==0){n=(c[f>>2]|0)+80|0;m=c[n+4>>2]|0;b=(c[(c[f>>2]|0)+100>>2]|0)+((c[e>>2]|0)*48|0)+8|0;c[b>>2]=c[n>>2];c[b+4>>2]=m}c[e>>2]=(c[e>>2]|0)+1}b=fs(c[f>>2]|0)|0;m=C;n=(c[f>>2]|0)+80|0;c[n>>2]=b;c[n+4>>2]=m;n=(c[f>>2]|0)+88|0;c[n>>2]=b;c[n+4>>2]=m;if(((d[(c[f>>2]|0)+7>>0]|0|0)==0?(d[(c[f>>2]|0)+5>>0]|0|0)!=4:0)?((Sr(c[(c[f>>2]|0)+64>>2]|0)|0)&512|0)==0:0){e=c[j>>2]|0;b=e+12|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(b|0))}else{n=c[j>>2]|0;a[n>>0]=a[26758]|0;a[n+1>>0]=a[26759]|0;a[n+2>>0]=a[26760]|0;a[n+3>>0]=a[26761]|0;a[n+4>>0]=a[26762]|0;a[n+5>>0]=a[26763]|0;a[n+6>>0]=a[26764]|0;a[n+7>>0]=a[26765]|0;Xs((c[j>>2]|0)+8|0,-1)}Sd(4,(c[f>>2]|0)+52|0);Xs((c[j>>2]|0)+12|0,c[(c[f>>2]|0)+52>>2]|0);Xs((c[j>>2]|0)+16|0,c[(c[f>>2]|0)+32>>2]|0);Xs((c[j>>2]|0)+20|0,c[(c[f>>2]|0)+156>>2]|0);Xs((c[j>>2]|0)+24|0,c[(c[f>>2]|0)+160>>2]|0);kR((c[j>>2]|0)+28|0,0,(c[g>>2]|0)-28|0)|0;c[h>>2]=0;while(1){if(c[k>>2]|0){e=17;break}if((c[h>>2]|0)>>>0>=(c[(c[f>>2]|0)+156>>2]|0)>>>0){e=17;break}n=(c[f>>2]|0)+80|0;c[k>>2]=Fg(c[(c[f>>2]|0)+68>>2]|0,c[j>>2]|0,c[g>>2]|0,c[n>>2]|0,c[n+4>>2]|0)|0;n=(c[f>>2]|0)+80|0;m=n;m=gR(c[m>>2]|0,c[m+4>>2]|0,c[g>>2]|0,0)|0;c[n>>2]=m;c[n+4>>2]=C;c[h>>2]=(c[h>>2]|0)+(c[g>>2]|0)}if((e|0)==17){i=l;return c[k>>2]|0}return 0}function tt(a){a=a|0;var d=0,f=0,g=0;g=i;i=i+16|0;d=g+4|0;f=g;c[d>>2]=a;c[f>>2]=c[c[d>>2]>>2];while(1){if(!(c[f>>2]|0))break;a=(c[f>>2]|0)+24|0;b[a>>1]=(e[a>>1]|0)&-9;c[f>>2]=c[(c[f>>2]|0)+32>>2]}c[(c[d>>2]|0)+8>>2]=c[(c[d>>2]|0)+4>>2];i=g;return}function ut(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;while(1){c[f>>2]=vt(c[d>>2]|0,c[e>>2]|0)|0;if((c[f>>2]|0)!=5){d=4;break}if(!(Tb[c[(c[d>>2]|0)+184>>2]&255](c[(c[d>>2]|0)+188>>2]|0)|0)){d=4;break}}if((d|0)==4){i=g;return c[f>>2]|0}return 0}function vt(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[g>>2]=e;c[h>>2]=0;if((d[(c[f>>2]|0)+18>>0]|0|0)>=(c[g>>2]|0)?(d[(c[f>>2]|0)+18>>0]|0|0)!=5:0){h=c[h>>2]|0;i=j;return h|0}if(d[(c[f>>2]|0)+14>>0]|0)e=0;else e=Hs(c[(c[f>>2]|0)+64>>2]|0,c[g>>2]|0)|0;c[h>>2]=e;if(c[h>>2]|0){h=c[h>>2]|0;i=j;return h|0}if(!((c[g>>2]|0)==4?1:(d[(c[f>>2]|0)+18>>0]|0|0)!=5)){h=c[h>>2]|0;i=j;return h|0}a[(c[f>>2]|0)+18>>0]=c[g>>2];h=c[h>>2]|0;i=j;return h|0}function wt(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=i;i=i+176|0;u=M+128|0;v=M+124|0;w=M+120|0;x=M+116|0;y=M+112|0;z=M+108|0;A=M+104|0;H=M+100|0;B=M+96|0;F=M+92|0;G=M+88|0;E=M+84|0;K=M+80|0;D=M+40|0;L=M+16|0;p=M+76|0;o=M+72|0;n=M+136|0;m=M+64|0;s=M+60|0;r=M+56|0;q=M+8|0;t=M+52|0;I=M+48|0;J=M;c[v>>2]=f;c[w>>2]=g;c[x>>2]=h;c[y>>2]=j;c[z>>2]=k;c[A>>2]=l;c[G>>2]=0;c[E>>2]=0;c[p>>2]=0;c[o>>2]=ts(c[v>>2]|0)|0;if(vQ((c[v>>2]|0)+52|0,c[o>>2]|0,48)|0)c[p>>2]=(c[(c[o>>2]|0)+16>>2]|0)+1;g=xt(c[v>>2]|0)|0;c[H>>2]=g;if(g){c[u>>2]=c[H>>2];L=c[u>>2]|0;i=M;return L|0}c[B>>2]=c[(c[v>>2]|0)+52+16>>2];if(!(c[B>>2]|0)){Xs(n,931071618|(a[960]|0)==0);Xs(n+4|0,3007e3);Xs(n+8|0,c[w>>2]|0);Xs(n+12|0,c[(c[v>>2]|0)+112>>2]|0);if(!(c[(c[v>>2]|0)+112>>2]|0))Sd(8,(c[v>>2]|0)+52+32|0);g=n+16|0;l=(c[v>>2]|0)+52+32|0;a[g>>0]=a[l>>0]|0;a[g+1>>0]=a[l+1>>0]|0;a[g+2>>0]=a[l+2>>0]|0;a[g+3>>0]=a[l+3>>0]|0;a[g+4>>0]=a[l+4>>0]|0;a[g+5>>0]=a[l+5>>0]|0;a[g+6>>0]=a[l+6>>0]|0;a[g+7>>0]=a[l+7>>0]|0;Zs(1,n,24,0,m);Xs(n+24|0,c[m>>2]|0);Xs(n+28|0,c[m+4>>2]|0);c[(c[v>>2]|0)+36>>2]=c[w>>2];a[(c[v>>2]|0)+52+13>>0]=(a[960]|0)==0;c[(c[v>>2]|0)+52+24>>2]=c[m>>2];c[(c[v>>2]|0)+52+24+4>>2]=c[m+4>>2];a[(c[v>>2]|0)+47>>0]=1;c[H>>2]=Fg(c[(c[v>>2]|0)+8>>2]|0,n,32,0,0)|0;if(c[H>>2]|0){c[u>>2]=c[H>>2];L=c[u>>2]|0;i=M;return L|0}if(((c[A>>2]|0)!=0?(d[(c[v>>2]|0)+48>>0]|0)!=0:0)?(c[H>>2]=or(c[(c[v>>2]|0)+8>>2]|0,c[A>>2]&19)|0,(c[H>>2]|0)!=0):0){c[u>>2]=c[H>>2];L=c[u>>2]|0;i=M;return L|0}}c[L>>2]=c[v>>2];c[L+4>>2]=c[(c[v>>2]|0)+8>>2];l=L+8|0;c[l>>2]=0;c[l+4>>2]=0;c[L+16>>2]=c[A>>2];c[L+20>>2]=c[w>>2];l=(c[w>>2]|0)+24|0;l=rR((c[B>>2]|0)+1-1|0,0,l|0,((l|0)<0)<<31>>31|0)|0;l=gR(32,0,l|0,C|0)|0;g=D;c[g>>2]=l;c[g+4>>2]=C;c[K>>2]=(c[w>>2]|0)+24;c[F>>2]=c[x>>2];while(1){if(!(c[F>>2]|0)){m=30;break}if(((c[p>>2]|0)!=0?(c[z>>2]|0)==0?1:(c[(c[F>>2]|0)+12>>2]|0)!=0:0)?(c[r>>2]=0,xs(c[v>>2]|0,c[(c[F>>2]|0)+20>>2]|0,r)|0,(c[r>>2]|0)>>>0>=(c[p>>2]|0)>>>0):0){l=(c[w>>2]|0)+24|0;l=rR((c[r>>2]|0)-1|0,0,l|0,((l|0)<0)<<31>>31|0)|0;l=gR(32,0,l|0,C|0)|0;l=gR(l|0,C|0,24,0)|0;g=q;c[g>>2]=l;c[g+4>>2]=C;if(!((c[(c[v>>2]|0)+104>>2]|0)!=0?(c[r>>2]|0)>>>0>=(c[(c[v>>2]|0)+104>>2]|0)>>>0:0))c[(c[v>>2]|0)+104>>2]=c[r>>2];c[t>>2]=c[(c[F>>2]|0)+4>>2];g=q;c[H>>2]=Fg(c[(c[v>>2]|0)+8>>2]|0,c[t>>2]|0,c[w>>2]|0,c[g>>2]|0,c[g+4>>2]|0)|0;if(c[H>>2]|0){m=22;break}g=(c[F>>2]|0)+24|0;b[g>>1]=e[g>>1]&-129}else{c[B>>2]=(c[B>>2]|0)+1;if(c[z>>2]|0)m=(c[(c[F>>2]|0)+12>>2]|0)==0?c[y>>2]|0:0;else m=0;c[s>>2]=m;g=D;c[H>>2]=yt(L,c[F>>2]|0,c[s>>2]|0,c[g>>2]|0,c[g+4>>2]|0)|0;if(c[H>>2]|0){m=27;break}c[G>>2]=c[F>>2];l=c[K>>2]|0;g=D;l=gR(c[g>>2]|0,c[g+4>>2]|0,l|0,((l|0)<0)<<31>>31|0)|0;g=D;c[g>>2]=l;c[g+4>>2]=C;g=(c[F>>2]|0)+24|0;b[g>>1]=e[g>>1]|128}c[F>>2]=c[(c[F>>2]|0)+12>>2]}if((m|0)==22){c[u>>2]=c[H>>2];L=c[u>>2]|0;i=M;return L|0}else if((m|0)==27){c[u>>2]=c[H>>2];L=c[u>>2]|0;i=M;return L|0}else if((m|0)==30){if(((c[z>>2]|0)!=0?(c[(c[v>>2]|0)+104>>2]|0)!=0:0)?(c[H>>2]=zt(c[v>>2]|0,c[B>>2]|0)|0,(c[H>>2]|0)!=0):0){c[u>>2]=c[H>>2];L=c[u>>2]|0;i=M;return L|0}a:do if((c[z>>2]|0)!=0?(c[A>>2]&32|0)!=0:0){if(!(a[(c[v>>2]|0)+49>>0]|0)){c[H>>2]=or(c[L+4>>2]|0,c[A>>2]&19)|0;break}c[I>>2]=Tr(c[(c[v>>2]|0)+8>>2]|0)|0;t=D;A=c[I>>2]|0;A=gR(c[t>>2]|0,c[t+4>>2]|0,A|0,((A|0)<0)<<31>>31|0)|0;A=fR(A|0,C|0,1,0)|0;t=c[I>>2]|0;t=pR(A|0,C|0,t|0,((t|0)<0)<<31>>31|0)|0;A=c[I>>2]|0;A=rR(t|0,C|0,A|0,((A|0)<0)<<31>>31|0)|0;I=L+8|0;c[I>>2]=A;c[I+4>>2]=C;while(1){A=D;s=c[A+4>>2]|0;I=L+8|0;t=c[I+4>>2]|0;if(!((s|0)<(t|0)|((s|0)==(t|0)?(c[A>>2]|0)>>>0<(c[I>>2]|0)>>>0:0)))break a;I=D;c[H>>2]=yt(L,c[G>>2]|0,c[y>>2]|0,c[I>>2]|0,c[I+4>>2]|0)|0;if(c[H>>2]|0)break;A=c[K>>2]|0;I=D;A=gR(c[I>>2]|0,c[I+4>>2]|0,A|0,((A|0)<0)<<31>>31|0)|0;I=D;c[I>>2]=A;c[I+4>>2]=C;c[E>>2]=(c[E>>2]|0)+1}c[u>>2]=c[H>>2];L=c[u>>2]|0;i=M;return L|0}while(0);if(((c[z>>2]|0)!=0?(d[(c[v>>2]|0)+47>>0]|0)!=0:0)?(L=(c[v>>2]|0)+16|0,K=c[L+4>>2]|0,(K|0)>0|(K|0)==0&(c[L>>2]|0)>>>0>=0):0){L=(c[v>>2]|0)+16|0;D=c[L+4>>2]|0;K=J;c[K>>2]=c[L>>2];c[K+4>>2]=D;K=(c[w>>2]|0)+24|0;K=rR((c[B>>2]|0)+(c[E>>2]|0)+1-1|0,0,K|0,((K|0)<0)<<31>>31|0)|0;K=gR(32,0,K|0,C|0)|0;D=C;L=(c[v>>2]|0)+16|0;I=c[L+4>>2]|0;if((D|0)>(I|0)|((D|0)==(I|0)?K>>>0>(c[L>>2]|0)>>>0:0)){K=(c[w>>2]|0)+24|0;K=rR((c[B>>2]|0)+(c[E>>2]|0)+1-1|0,0,K|0,((K|0)<0)<<31>>31|0)|0;K=gR(32,0,K|0,C|0)|0;L=J;c[L>>2]=K;c[L+4>>2]=C}L=J;Ks(c[v>>2]|0,c[L>>2]|0,c[L+4>>2]|0);a[(c[v>>2]|0)+47>>0]=0}c[B>>2]=c[(c[v>>2]|0)+52+16>>2];c[F>>2]=c[x>>2];while(1){if(!((c[F>>2]|0)!=0?(c[H>>2]|0)==0:0))break;if(e[(c[F>>2]|0)+24>>1]&128){c[B>>2]=(c[B>>2]|0)+1;c[H>>2]=gt(c[v>>2]|0,c[B>>2]|0,c[(c[F>>2]|0)+20>>2]|0)|0}c[F>>2]=c[(c[F>>2]|0)+12>>2]}while(1){if(!((c[H>>2]|0)==0?(c[E>>2]|0)>0:0))break;c[B>>2]=(c[B>>2]|0)+1;c[E>>2]=(c[E>>2]|0)+-1;c[H>>2]=gt(c[v>>2]|0,c[B>>2]|0,c[(c[G>>2]|0)+20>>2]|0)|0}if(!(c[H>>2]|0)){b[(c[v>>2]|0)+52+14>>1]=c[w>>2]&65280|c[w>>2]>>16;c[(c[v>>2]|0)+52+16>>2]=c[B>>2];if(c[z>>2]|0){L=(c[v>>2]|0)+52+8|0;c[L>>2]=(c[L>>2]|0)+1;c[(c[v>>2]|0)+52+20>>2]=c[y>>2]}if(c[z>>2]|0){Ys(c[v>>2]|0);c[(c[v>>2]|0)+12>>2]=c[B>>2]}}c[u>>2]=c[H>>2];L=c[u>>2]|0;i=M;return L|0}return 0}function xt(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;d=l+24|0;e=l+20|0;j=l+16|0;f=l+12|0;h=l+8|0;k=l+4|0;g=l;c[e>>2]=a;c[j>>2]=0;if(!(b[(c[e>>2]|0)+40>>1]|0)){c[h>>2]=Ss(c[e>>2]|0)|0;do if((c[c[h>>2]>>2]|0)>>>0>0){Sd(4,k);c[j>>2]=Ns(c[e>>2]|0,4,4)|0;if(!(c[j>>2]|0)){Vs(c[e>>2]|0,c[k>>2]|0);Br(c[e>>2]|0,4,4);break}if((c[j>>2]|0)!=5){c[d>>2]=c[j>>2];k=c[d>>2]|0;i=l;return k|0}}while(0);zr(c[e>>2]|0,3);b[(c[e>>2]|0)+40>>1]=-1;c[f>>2]=0;do{a=c[e>>2]|0;k=(c[f>>2]|0)+1|0;c[f>>2]=k;c[j>>2]=Ct(a,g,1,k)|0}while((c[j>>2]|0)==-1)}c[d>>2]=c[j>>2];k=c[d>>2]|0;i=l;return k|0}function yt(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=i;i=i+64|0;g=m+28|0;h=m+24|0;p=m+20|0;o=m+16|0;j=m;l=m+12|0;k=m+8|0;n=m+32|0;c[h>>2]=a;c[p>>2]=b;c[o>>2]=d;b=j;c[b>>2]=e;c[b+4>>2]=f;c[k>>2]=c[(c[p>>2]|0)+4>>2];At(c[c[h>>2]>>2]|0,c[(c[p>>2]|0)+20>>2]|0,c[o>>2]|0,c[k>>2]|0,n);b=j;c[l>>2]=Bt(c[h>>2]|0,n,24,c[b>>2]|0,c[b+4>>2]|0)|0;if(c[l>>2]|0){c[g>>2]=c[l>>2];p=c[g>>2]|0;i=m;return p|0}else{b=c[h>>2]|0;n=c[k>>2]|0;o=c[(c[h>>2]|0)+20>>2]|0;p=j;p=gR(c[p>>2]|0,c[p+4>>2]|0,24,0)|0;c[l>>2]=Bt(b,n,o,p,C)|0;c[g>>2]=c[l>>2];p=c[g>>2]|0;i=m;return p|0}return 0}function zt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+80|0;d=q+48|0;e=q+44|0;f=q+40|0;p=q+36|0;o=q+32|0;g=q+28|0;h=q+56|0;m=q+24|0;j=q+8|0;k=q;l=q+20|0;n=q+16|0;c[e>>2]=a;c[f>>2]=b;c[p>>2]=c[(c[e>>2]|0)+36>>2];c[o>>2]=0;c[g>>2]=Id((c[p>>2]|0)+24|0)|0;if(!(c[g>>2]|0)){c[d>>2]=7;p=c[d>>2]|0;i=q;return p|0}if((c[(c[e>>2]|0)+104>>2]|0)==1){a=j;c[a>>2]=24;c[a+4>>2]=0}else{b=(c[p>>2]|0)+24|0;b=rR((c[(c[e>>2]|0)+104>>2]|0)-1-1|0,0,b|0,((b|0)<0)<<31>>31|0)|0;b=gR(32,0,b|0,C|0)|0;b=gR(b|0,C|0,16,0)|0;a=j;c[a>>2]=b;c[a+4>>2]=C}a=j;c[o>>2]=Wr(c[(c[e>>2]|0)+8>>2]|0,c[g>>2]|0,8,c[a>>2]|0,c[a+4>>2]|0)|0;a=$q(c[g>>2]|0)|0;c[(c[e>>2]|0)+52+24>>2]=a;a=$q((c[g>>2]|0)+4|0)|0;c[(c[e>>2]|0)+52+24+4>>2]=a;c[m>>2]=c[(c[e>>2]|0)+104>>2];c[(c[e>>2]|0)+104>>2]=0;while(1){if(c[o>>2]|0)break;if((c[m>>2]|0)>>>0>(c[f>>2]|0)>>>0)break;b=(c[p>>2]|0)+24|0;b=rR((c[m>>2]|0)-1|0,0,b|0,((b|0)<0)<<31>>31|0)|0;b=gR(32,0,b|0,C|0)|0;a=k;c[a>>2]=b;c[a+4>>2]=C;a=k;c[o>>2]=Wr(c[(c[e>>2]|0)+8>>2]|0,c[g>>2]|0,(c[p>>2]|0)+24|0,c[a>>2]|0,c[a+4>>2]|0)|0;if(!(c[o>>2]|0)){c[l>>2]=$q(c[g>>2]|0)|0;c[n>>2]=$q((c[g>>2]|0)+4|0)|0;At(c[e>>2]|0,c[l>>2]|0,c[n>>2]|0,(c[g>>2]|0)+24|0,h);a=k;c[o>>2]=Fg(c[(c[e>>2]|0)+8>>2]|0,h,24,c[a>>2]|0,c[a+4>>2]|0)|0}c[m>>2]=(c[m>>2]|0)+1}Kd(c[g>>2]|0);c[d>>2]=c[o>>2];p=c[d>>2]|0;i=q;return p|0}function At(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;i=i+32|0;j=o+24|0;q=o+20|0;p=o+16|0;k=o+12|0;l=o+8|0;n=o+4|0;m=o;c[j>>2]=b;c[q>>2]=e;c[p>>2]=f;c[k>>2]=g;c[l>>2]=h;c[m>>2]=(c[j>>2]|0)+52+24;Xs(c[l>>2]|0,c[q>>2]|0);Xs((c[l>>2]|0)+4|0,c[p>>2]|0);g=(c[l>>2]|0)+8|0;if(!(c[(c[j>>2]|0)+104>>2]|0)){q=(c[j>>2]|0)+52+32|0;a[g>>0]=a[q>>0]|0;a[g+1>>0]=a[q+1>>0]|0;a[g+2>>0]=a[q+2>>0]|0;a[g+3>>0]=a[q+3>>0]|0;a[g+4>>0]=a[q+4>>0]|0;a[g+5>>0]=a[q+5>>0]|0;a[g+6>>0]=a[q+6>>0]|0;a[g+7>>0]=a[q+7>>0]|0;c[n>>2]=(d[(c[j>>2]|0)+52+13>>0]|0)==((a[960]|0)==0|0)&1;Zs(c[n>>2]|0,c[l>>2]|0,8,c[m>>2]|0,c[m>>2]|0);Zs(c[n>>2]|0,c[k>>2]|0,c[(c[j>>2]|0)+36>>2]|0,c[m>>2]|0,c[m>>2]|0);Xs((c[l>>2]|0)+16|0,c[c[m>>2]>>2]|0);Xs((c[l>>2]|0)+20|0,c[(c[m>>2]|0)+4>>2]|0);i=o;return}else{h=g+16|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0));i=o;return}}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,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+28|0;h=o+24|0;j=o+20|0;k=o+16|0;l=o;n=o+12|0;m=o+8|0;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;a=l;c[a>>2]=e;c[a+4>>2]=f;a=l;f=c[a+4>>2]|0;b=(c[h>>2]|0)+8|0;d=c[b+4>>2]|0;if((f|0)<(d|0)|((f|0)==(d|0)?(c[a>>2]|0)>>>0<(c[b>>2]|0)>>>0:0)?(f=l,a=c[k>>2]|0,a=gR(c[f>>2]|0,c[f+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0,f=C,b=(c[h>>2]|0)+8|0,d=c[b+4>>2]|0,(f|0)>(d|0)|((f|0)==(d|0)?a>>>0>=(c[b>>2]|0)>>>0:0)):0){a=(c[h>>2]|0)+8|0;b=l;b=fR(c[a>>2]|0,c[a+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;c[m>>2]=b;b=l;c[n>>2]=Fg(c[(c[h>>2]|0)+4>>2]|0,c[j>>2]|0,c[m>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;if(c[n>>2]|0){c[g>>2]=c[n>>2];n=c[g>>2]|0;i=o;return n|0}a=c[m>>2]|0;b=l;a=gR(c[b>>2]|0,c[b+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;b=l;c[b>>2]=a;c[b+4>>2]=C;c[k>>2]=(c[k>>2]|0)-(c[m>>2]|0);c[j>>2]=(c[j>>2]|0)+(c[m>>2]|0);c[n>>2]=or(c[(c[h>>2]|0)+4>>2]|0,c[(c[h>>2]|0)+16>>2]&19)|0;if((c[k>>2]|0)==0|(c[n>>2]|0)!=0){c[g>>2]=c[n>>2];n=c[g>>2]|0;i=o;return n|0}}b=l;c[n>>2]=Fg(c[(c[h>>2]|0)+4>>2]|0,c[j>>2]|0,c[k>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;c[g>>2]=c[n>>2];n=c[g>>2]|0;i=o;return n|0}function Ct(a,e,f,g){a=a|0;e=e|0;f=f|0;g=g|0;var h=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;w=i;i=i+64|0;v=w+48|0;h=w+44|0;j=w+40|0;k=w+36|0;l=w+32|0;r=w+28|0;p=w+24|0;o=w+20|0;m=w+16|0;s=w+12|0;n=w+8|0;q=w+4|0;t=w;c[h>>2]=a;c[j>>2]=e;c[k>>2]=f;c[l>>2]=g;c[s>>2]=0;if((c[l>>2]|0)>5){c[q>>2]=1;if((c[l>>2]|0)>100){c[v>>2]=15;v=c[v>>2]|0;i=w;return v|0}if((c[l>>2]|0)>=10)c[q>>2]=(_((c[l>>2]|0)-9|0,(c[l>>2]|0)-9|0)|0)*39;ri(c[c[h>>2]>>2]|0,c[q>>2]|0)|0}if(!(c[k>>2]|0)){c[s>>2]=Ps(c[h>>2]|0,c[j>>2]|0)|0;do if((c[s>>2]|0)==5){if(!(c[c[(c[h>>2]|0)+32>>2]>>2]|0)){c[s>>2]=-1;break}f=yr(c[h>>2]|0,2)|0;c[s>>2]=f;if(!f){zr(c[h>>2]|0,2);c[s>>2]=-1;break}if((c[s>>2]|0)==5)c[s>>2]=261}while(0);if(c[s>>2]|0){c[v>>2]=c[s>>2];v=c[v>>2]|0;i=w;return v|0}}c[r>>2]=Ss(c[h>>2]|0)|0;do if((c[k>>2]|0)==0?(c[c[r>>2]>>2]|0)==(c[(c[h>>2]|0)+52+16>>2]|0):0){c[s>>2]=yr(c[h>>2]|0,3)|0;_s(c[h>>2]|0);if(c[s>>2]|0){if((c[s>>2]|0)==5)break;c[v>>2]=c[s>>2];v=c[v>>2]|0;i=w;return v|0}u=ts(c[h>>2]|0)|0;u=(vQ(u,(c[h>>2]|0)+52|0,48)|0)!=0;h=c[h>>2]|0;if(u){zr(h,3);c[v>>2]=-1;v=c[v>>2]|0;i=w;return v|0}else{b[h+40>>1]=0;c[v>>2]=0;v=c[v>>2]|0;i=w;return v|0}}while(0);c[p>>2]=0;c[o>>2]=0;c[n>>2]=c[(c[h>>2]|0)+52+16>>2];c[m>>2]=1;while(1){if((c[m>>2]|0)>=5)break;c[t>>2]=c[(c[r>>2]|0)+4+(c[m>>2]<<2)>>2];if((c[p>>2]|0)>>>0<=(c[t>>2]|0)>>>0?(c[t>>2]|0)>>>0<=(c[n>>2]|0)>>>0:0){c[p>>2]=c[t>>2];c[o>>2]=c[m>>2]}c[m>>2]=(c[m>>2]|0)+1}a:do if(((d[(c[h>>2]|0)+46>>0]|0)&2|0)==0?(c[o>>2]|0)==0?1:(c[p>>2]|0)>>>0<(c[n>>2]|0)>>>0:0){c[m>>2]=1;while(1){if((c[m>>2]|0)>=5)break a;c[s>>2]=Ns(c[h>>2]|0,3+(c[m>>2]|0)|0,1)|0;if(!(c[s>>2]|0)){u=36;break}if((c[s>>2]|0)!=5)break;c[m>>2]=(c[m>>2]|0)+1}if((u|0)==36){u=c[n>>2]|0;c[(c[r>>2]|0)+4+(c[m>>2]<<2)>>2]=u;c[p>>2]=u;c[o>>2]=c[m>>2];Br(c[h>>2]|0,3+(c[m>>2]|0)|0,1);break}c[v>>2]=c[s>>2];v=c[v>>2]|0;i=w;return v|0}while(0);if(!(c[o>>2]|0)){c[v>>2]=(c[s>>2]|0)==5?-1:520;v=c[v>>2]|0;i=w;return v|0}c[s>>2]=yr(c[h>>2]|0,3+(c[o>>2]|0)|0)|0;if(c[s>>2]|0){c[v>>2]=(c[s>>2]|0)==5?-1:c[s>>2]|0;v=c[v>>2]|0;i=w;return v|0}c[(c[h>>2]|0)+100>>2]=(c[c[r>>2]>>2]|0)+1;_s(c[h>>2]|0);if((c[(c[r>>2]|0)+4+(c[o>>2]<<2)>>2]|0)==(c[p>>2]|0)?(u=ts(c[h>>2]|0)|0,(vQ(u,(c[h>>2]|0)+52|0,48)|0)==0):0){b[(c[h>>2]|0)+40>>1]=c[o>>2];c[v>>2]=c[s>>2];v=c[v>>2]|0;i=w;return v|0}zr(c[h>>2]|0,3+(c[o>>2]|0)|0);c[v>>2]=-1;v=c[v>>2]|0;i=w;return v|0}function Dt(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;g=h+20|0;j=h+16|0;e=h+12|0;d=h+8|0;f=h+4|0;b=h;c[j>>2]=a;c[e>>2]=c[(c[j>>2]|0)+16>>2];c[f>>2]=c[(c[j>>2]|0)+20>>2];c[b>>2]=0;while(1){if((c[b>>2]|0)>=(c[(c[e>>2]|0)+104>>2]|0)){b=7;break}c[d>>2]=(c[(c[e>>2]|0)+100>>2]|0)+((c[b>>2]|0)*48|0);if((c[(c[d>>2]|0)+20>>2]|0)>>>0>=(c[f>>2]|0)>>>0?0==(lj(c[(c[d>>2]|0)+16>>2]|0,c[f>>2]|0)|0):0){b=5;break}c[b>>2]=(c[b>>2]|0)+1}if((b|0)==5){c[g>>2]=1;j=c[g>>2]|0;i=h;return j|0}else if((b|0)==7){c[g>>2]=0;j=c[g>>2]|0;i=h;return j|0}return 0}function Et(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;b=k+24|0;j=k+20|0;h=k+16|0;f=k+12|0;e=k;g=k+8|0;c[b>>2]=a;c[j>>2]=0;c[h>>2]=c[(c[b>>2]|0)+16>>2];if(((d[(c[h>>2]|0)+5>>0]|0|0)!=2?(c[j>>2]=Ft(c[h>>2]|0)|0,(c[j>>2]|0)==0):0)?(c[f>>2]=c[(c[b>>2]|0)+4>>2],l=4+(c[(c[h>>2]|0)+160>>2]|0)|0,l=rR(c[(c[h>>2]|0)+56>>2]|0,0,l|0,((l|0)<0)<<31>>31|0)|0,a=e,c[a>>2]=l,c[a+4>>2]=C,c[g>>2]=c[f>>2],a=e,c[j>>2]=Gt(c[(c[h>>2]|0)+72>>2]|0,c[a>>2]|0,c[a+4>>2]|0,c[(c[b>>2]|0)+20>>2]|0)|0,(c[j>>2]|0)==0):0){f=c[(c[h>>2]|0)+72>>2]|0;g=c[g>>2]|0;a=c[(c[h>>2]|0)+160>>2]|0;l=e;l=gR(c[l>>2]|0,c[l+4>>2]|0,4,0)|0;c[j>>2]=Fg(f,g,a,l,C)|0}if(c[j>>2]|0){l=c[j>>2]|0;i=k;return l|0}l=(c[h>>2]|0)+56|0;c[l>>2]=(c[l>>2]|0)+1;c[j>>2]=Ht(c[h>>2]|0,c[(c[b>>2]|0)+20>>2]|0)|0;l=c[j>>2]|0;i=k;return l|0}function Ft(a){a=a|0;var b=0,e=0,f=0;f=i;i=i+16|0;b=f+4|0;e=f;c[b>>2]=a;c[e>>2]=0;if(c[c[(c[b>>2]|0)+72>>2]>>2]|0){e=c[e>>2]|0;i=f;return e|0}if((d[(c[b>>2]|0)+5>>0]|0|0)!=4?(d[(c[b>>2]|0)+22>>0]|0|0)==0:0){c[e>>2]=pt(c[b>>2]|0,c[(c[b>>2]|0)+72>>2]|0,8192)|0;e=c[e>>2]|0;i=f;return e|0}Ir(c[(c[b>>2]|0)+72>>2]|0);e=c[e>>2]|0;i=f;return e|0}function Gt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+32|0;h=f+12|0;j=f;k=f+8|0;g=f+16|0;c[h>>2]=a;a=j;c[a>>2]=b;c[a+4>>2]=d;c[k>>2]=e;Xs(g,c[k>>2]|0);e=j;e=Fg(c[h>>2]|0,g,4,c[e>>2]|0,c[e+4>>2]|0)|0;i=f;return e|0}function Ht(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;d=j+16|0;e=j+12|0;f=j+8|0;h=j+4|0;g=j;c[d>>2]=a;c[e>>2]=b;c[h>>2]=0;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[d>>2]|0)+104>>2]|0))break;c[g>>2]=(c[(c[d>>2]|0)+100>>2]|0)+((c[f>>2]|0)*48|0);if((c[e>>2]|0)>>>0<=(c[(c[g>>2]|0)+20>>2]|0)>>>0){b=gj(c[(c[g>>2]|0)+16>>2]|0,c[e>>2]|0)|0;c[h>>2]=c[h>>2]|b}c[f>>2]=(c[f>>2]|0)+1}i=j;return c[h>>2]|0}function It(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+8>>2]|0}function Jt(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=vs(c[d>>2]|0)|0;i=b;return a|0}function Kt(f){f=f|0;var g=0,h=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;x=i;i=i+64|0;l=x+40|0;m=x+36|0;t=x+50|0;o=x+52|0;n=x+32|0;j=x+28|0;w=x+24|0;g=x+48|0;r=x+20|0;v=x+16|0;p=x+12|0;q=x+8|0;h=x+4|0;k=x;s=x+46|0;u=x+44|0;c[m>>2]=f;do if(!(a[c[m>>2]>>0]|0)){c[j>>2]=c[(c[m>>2]|0)+52>>2];a[o>>0]=a[(c[m>>2]|0)+5>>0]|0;c[n>>2]=c[(c[m>>2]|0)+56>>2];if(Lt(c[m>>2]|0,d[(c[n>>2]|0)+(d[o>>0]|0)>>0]|0)|0){c[l>>2]=Lj(57320)|0;w=c[l>>2]|0;i=x;return w|0}b[(c[m>>2]|0)+20>>1]=(c[(c[j>>2]|0)+32>>2]|0)-1;a[(c[m>>2]|0)+1>>0]=0;c[w>>2]=c[(c[j>>2]|0)+36>>2];f=(d[o>>0]|0)+8+(d[(c[m>>2]|0)+6>>0]|0)&65535;b[g>>1]=f;b[(c[m>>2]|0)+14>>1]=f;c[(c[m>>2]|0)+60>>2]=(c[n>>2]|0)+(c[w>>2]|0);c[(c[m>>2]|0)+64>>2]=(c[n>>2]|0)+(e[g>>1]|0);c[(c[m>>2]|0)+68>>2]=(c[n>>2]|0)+(d[(c[m>>2]|0)+6>>0]|0);c[v>>2]=((d[(c[n>>2]|0)+((d[o>>0]|0)+5)>>0]<<8|d[(c[n>>2]|0)+((d[o>>0]|0)+5)+1>>0])-1&65535)+1;b[(c[m>>2]|0)+18>>1]=d[(c[n>>2]|0)+((d[o>>0]|0)+3)>>0]<<8|d[(c[n>>2]|0)+((d[o>>0]|0)+3)+1>>0];if((e[(c[m>>2]|0)+18>>1]|0)>>>0>((((c[(c[j>>2]|0)+32>>2]|0)-8|0)>>>0)/6|0)>>>0){c[l>>2]=Lj(57338)|0;w=c[l>>2]|0;i=x;return w|0}c[p>>2]=(e[g>>1]|0)+(e[(c[m>>2]|0)+18>>1]<<1);c[q>>2]=(c[w>>2]|0)-4;do if(c[(c[(c[j>>2]|0)+4>>2]|0)+24>>2]&268435456){if(!(a[(c[m>>2]|0)+4>>0]|0))c[q>>2]=(c[q>>2]|0)+-1;c[h>>2]=0;while(1){if((c[h>>2]|0)>=(e[(c[m>>2]|0)+18>>1]|0)){g=17;break}b[t>>1]=d[(c[n>>2]|0)+((e[g>>1]|0)+(c[h>>2]<<1))>>0]<<8|d[(c[n>>2]|0)+((e[g>>1]|0)+(c[h>>2]<<1))+1>>0];if((e[t>>1]|0)<(c[p>>2]|0)){g=13;break}if((e[t>>1]|0)>(c[q>>2]|0)){g=13;break}c[k>>2]=(Yb[c[(c[m>>2]|0)+76>>2]&255](c[m>>2]|0,(c[n>>2]|0)+(e[t>>1]|0)|0)|0)&65535;if(((e[t>>1]|0)+(c[k>>2]|0)|0)>(c[w>>2]|0)){g=15;break}c[h>>2]=(c[h>>2]|0)+1}if((g|0)==13){c[l>>2]=Lj(57366)|0;w=c[l>>2]|0;i=x;return w|0}else if((g|0)==15){c[l>>2]=Lj(57371)|0;w=c[l>>2]|0;i=x;return w|0}else if((g|0)==17){if(a[(c[m>>2]|0)+4>>0]|0)break;c[q>>2]=(c[q>>2]|0)+1;break}}while(0);b[t>>1]=d[(c[n>>2]|0)+((d[o>>0]|0)+1)>>0]<<8|d[(c[n>>2]|0)+((d[o>>0]|0)+1)+1>>0];c[r>>2]=(d[(c[n>>2]|0)+((d[o>>0]|0)+7)>>0]|0)+(c[v>>2]|0);while(1){if((e[t>>1]|0)<=0){g=29;break}if((e[t>>1]|0)<(c[p>>2]|0)){g=23;break}if((e[t>>1]|0)>(c[q>>2]|0)){g=23;break}b[s>>1]=d[(c[n>>2]|0)+(e[t>>1]|0)>>0]<<8|d[(c[n>>2]|0)+(e[t>>1]|0)+1>>0];b[u>>1]=d[(c[n>>2]|0)+((e[t>>1]|0)+2)>>0]<<8|d[(c[n>>2]|0)+((e[t>>1]|0)+2)+1>>0];if((e[s>>1]|0)>0?(e[s>>1]|0)<=((e[t>>1]|0)+(e[u>>1]|0)+3|0):0){g=27;break}if(((e[t>>1]|0)+(e[u>>1]|0)|0)>(c[w>>2]|0)){g=27;break}c[r>>2]=(c[r>>2]|0)+(e[u>>1]|0);b[t>>1]=b[s>>1]|0}if((g|0)==23){c[l>>2]=Lj(57391)|0;w=c[l>>2]|0;i=x;return w|0}else if((g|0)==27){c[l>>2]=Lj(57398)|0;w=c[l>>2]|0;i=x;return w|0}else if((g|0)==29){if((c[r>>2]|0)<=(c[w>>2]|0)){b[(c[m>>2]|0)+16>>1]=(c[r>>2]|0)-(c[p>>2]|0);a[c[m>>2]>>0]=1;break}c[l>>2]=Lj(57412)|0;w=c[l>>2]|0;i=x;return w|0}}while(0);c[l>>2]=0;w=c[l>>2]|0;i=x;return w|0}function Lt(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;h=l+12|0;j=l+8|0;g=l+4|0;k=l;c[j>>2]=e;c[g>>2]=f;a[(c[j>>2]|0)+4>>0]=c[g>>2]>>3;c[g>>2]=c[g>>2]&-9;a[(c[j>>2]|0)+6>>0]=4-(d[(c[j>>2]|0)+4>>0]<<2);c[(c[j>>2]|0)+76>>2]=188;c[k>>2]=c[(c[j>>2]|0)+52>>2];do if((c[g>>2]|0)==5){a[(c[j>>2]|0)+2>>0]=1;g=(c[j>>2]|0)+3|0;if(a[(c[j>>2]|0)+4>>0]|0){a[g>>0]=1;c[(c[j>>2]|0)+80>>2]=226}else{a[g>>0]=0;c[(c[j>>2]|0)+76>>2]=189;c[(c[j>>2]|0)+80>>2]=227}b[(c[j>>2]|0)+10>>1]=b[(c[k>>2]|0)+28>>1]|0;b[(c[j>>2]|0)+12>>1]=b[(c[k>>2]|0)+30>>1]|0}else{if((c[g>>2]|0)==2){a[(c[j>>2]|0)+2>>0]=0;a[(c[j>>2]|0)+3>>0]=0;c[(c[j>>2]|0)+80>>2]=228;b[(c[j>>2]|0)+10>>1]=b[(c[k>>2]|0)+24>>1]|0;b[(c[j>>2]|0)+12>>1]=b[(c[k>>2]|0)+26>>1]|0;break}c[h>>2]=Lj(57278)|0;k=c[h>>2]|0;i=l;return k|0}while(0);a[(c[j>>2]|0)+7>>0]=a[(c[k>>2]|0)+21>>0]|0;c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}function Mt(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;m=n+12|0;l=n+8|0;k=n+4|0;j=n;c[g>>2]=b;c[h>>2]=f;c[m>>2]=(c[h>>2]|0)+(d[(c[g>>2]|0)+6>>0]|0);c[k>>2]=d[c[m>>2]>>0];a:do if((c[k>>2]|0)>>>0>=128){c[l>>2]=(c[m>>2]|0)+8;c[k>>2]=c[k>>2]&127;do{f=c[k>>2]<<7;b=(c[m>>2]|0)+1|0;c[m>>2]=b;c[k>>2]=f|d[b>>0]&127;if((d[c[m>>2]>>0]|0)<128)break a}while((c[m>>2]|0)>>>0<(c[l>>2]|0)>>>0)}while(0);c[m>>2]=(c[m>>2]|0)+1;b:do if(a[(c[g>>2]|0)+2>>0]|0){c[l>>2]=(c[m>>2]|0)+9;do{b=c[m>>2]|0;c[m>>2]=b+1;if(!(d[b>>0]&128))break b}while((c[m>>2]|0)>>>0<(c[l>>2]|0)>>>0)}while(0);if((c[k>>2]|0)>>>0<=(e[(c[g>>2]|0)+10>>1]|0)>>>0){b=(c[k>>2]|0)+((c[m>>2]|0)-(c[h>>2]|0))|0;c[k>>2]=b;c[k>>2]=(c[k>>2]|0)>>>0<4?4:b;b=c[k>>2]|0;b=b&65535;i=n;return b|0}c[j>>2]=e[(c[g>>2]|0)+12>>1];c[k>>2]=(c[j>>2]|0)+((((c[k>>2]|0)-(c[j>>2]|0)|0)>>>0)%(((c[(c[(c[g>>2]|0)+52>>2]|0)+36>>2]|0)-4|0)>>>0)|0);if((c[k>>2]|0)>>>0>(e[(c[g>>2]|0)+10>>1]|0)>>>0)c[k>>2]=c[j>>2];c[k>>2]=(c[k>>2]|0)+(4+((c[m>>2]|0)-(c[h>>2]|0)&65535));b=c[k>>2]|0;b=b&65535;i=n;return b|0}function Nt(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;h=q+32|0;j=q+28|0;k=q+24|0;p=q+20|0;m=q+16|0;l=q;n=q+12|0;o=q+8|0;c[h>>2]=a;c[j>>2]=f;c[k>>2]=g;c[p>>2]=c[j>>2];c[m>>2]=d[c[p>>2]>>0];a:do if((c[m>>2]|0)>>>0>=128){c[n>>2]=(c[p>>2]|0)+8;c[m>>2]=c[m>>2]&127;do{g=c[m>>2]<<7;a=(c[p>>2]|0)+1|0;c[p>>2]=a;c[m>>2]=g|(d[a>>0]|0)&127;if((d[c[p>>2]>>0]|0|0)<128)break a}while((c[p>>2]|0)>>>0<(c[n>>2]|0)>>>0)}while(0);c[p>>2]=(c[p>>2]|0)+1;a=l;c[a>>2]=d[c[p>>2]>>0];c[a+4>>2]=0;a=l;g=c[a+4>>2]|0;b:do if(g>>>0>0|(g|0)==0&(c[a>>2]|0)>>>0>=128){c[o>>2]=(c[p>>2]|0)+7;a=l;c[a>>2]=c[l>>2]&127;c[a+4>>2]=0;do{n=l;n=lR(c[n>>2]|0,c[n+4>>2]|0,7)|0;g=(c[p>>2]|0)+1|0;c[p>>2]=g;g=(d[g>>0]|0)&127;a=l;c[a>>2]=n|g;c[a+4>>2]=C|((g|0)<0)<<31>>31;if((d[c[p>>2]>>0]|0|0)<128)break b}while((c[p>>2]|0)>>>0<(c[o>>2]|0)>>>0);o=l;o=lR(c[o>>2]|0,c[o+4>>2]|0,8)|0;g=(c[p>>2]|0)+1|0;c[p>>2]=g;a=l;c[a>>2]=o|(d[g>>0]|0);c[a+4>>2]=C}while(0);c[p>>2]=(c[p>>2]|0)+1;o=l;g=c[o+4>>2]|0;a=c[k>>2]|0;c[a>>2]=c[o>>2];c[a+4>>2]=g;c[(c[k>>2]|0)+12>>2]=c[m>>2];c[(c[k>>2]|0)+8>>2]=c[p>>2];if((c[m>>2]|0)>>>0>(e[(c[h>>2]|0)+10>>1]|0)>>>0){Rt(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0);i=q;return}b[(c[k>>2]|0)+18>>1]=(c[m>>2]|0)+((c[p>>2]|0)-(c[j>>2]|0)&65535);if((e[(c[k>>2]|0)+18>>1]|0|0)<4)b[(c[k>>2]|0)+18>>1]=4;b[(c[k>>2]|0)+16>>1]=c[m>>2];i=q;return}function Ot(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;g=h+4|0;f=h;c[h+12>>2]=a;c[e>>2]=b;c[g>>2]=(c[e>>2]|0)+4;c[f>>2]=(c[g>>2]|0)+9;do{a=c[g>>2]|0;c[g>>2]=a+1;if(!((d[a>>0]|0)&128))break}while((c[g>>2]|0)>>>0<(c[f>>2]|0)>>>0);i=h;return(c[g>>2]|0)-(c[e>>2]|0)&65535|0}function Pt(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+16|0;h=f+4|0;g=f;c[f+8>>2]=a;c[h>>2]=d;c[g>>2]=e;a=4+((St((c[h>>2]|0)+4|0,c[g>>2]|0)|0)&255)&65535;b[(c[g>>2]|0)+18>>1]=a;c[(c[g>>2]|0)+12>>2]=0;b[(c[g>>2]|0)+16>>1]=0;c[(c[g>>2]|0)+8>>2]=0;i=f;return}function Qt(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;h=o+20|0;j=o+16|0;k=o+12|0;n=o+8|0;l=o+4|0;m=o;c[h>>2]=a;c[j>>2]=f;c[k>>2]=g;c[n>>2]=(c[j>>2]|0)+(d[(c[h>>2]|0)+6>>0]|0);c[l>>2]=d[c[n>>2]>>0];a:do if((c[l>>2]|0)>>>0>=128){c[m>>2]=(c[n>>2]|0)+8;c[l>>2]=c[l>>2]&127;do{g=c[l>>2]<<7;a=(c[n>>2]|0)+1|0;c[n>>2]=a;c[l>>2]=g|(d[a>>0]|0)&127;if((d[c[n>>2]>>0]|0|0)<128)break a}while((c[n>>2]|0)>>>0<(c[m>>2]|0)>>>0)}while(0);c[n>>2]=(c[n>>2]|0)+1;a=c[k>>2]|0;c[a>>2]=c[l>>2];c[a+4>>2]=0;c[(c[k>>2]|0)+12>>2]=c[l>>2];c[(c[k>>2]|0)+8>>2]=c[n>>2];if((c[l>>2]|0)>>>0>(e[(c[h>>2]|0)+10>>1]|0)>>>0){Rt(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0);i=o;return}b[(c[k>>2]|0)+18>>1]=(c[l>>2]|0)+((c[n>>2]|0)-(c[j>>2]|0)&65535);if((e[(c[k>>2]|0)+18>>1]|0|0)<4)b[(c[k>>2]|0)+18>>1]=4;b[(c[k>>2]|0)+16>>1]=c[l>>2];i=o;return}function Rt(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+32|0;n=l+20|0;g=l+16|0;h=l+12|0;j=l+8|0;m=l+4|0;k=l;c[n>>2]=a;c[g>>2]=d;c[h>>2]=f;c[j>>2]=e[(c[n>>2]|0)+12>>1];c[m>>2]=e[(c[n>>2]|0)+10>>1];c[k>>2]=(c[j>>2]|0)+((((c[(c[h>>2]|0)+12>>2]|0)-(c[j>>2]|0)|0)>>>0)%(((c[(c[(c[n>>2]|0)+52>>2]|0)+36>>2]|0)-4|0)>>>0)|0);if((c[k>>2]|0)<=(c[m>>2]|0))b[(c[h>>2]|0)+16>>1]=c[k>>2];else b[(c[h>>2]|0)+16>>1]=c[j>>2];b[(c[h>>2]|0)+18>>1]=((c[(c[h>>2]|0)+8>>2]|0)+(e[(c[h>>2]|0)+16>>1]|0)-(c[g>>2]|0)&65535)+4;i=l;return}function tE(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;F=i;i=i+96|0;r=F+80|0;s=F+76|0;k=F+72|0;t=F+68|0;u=F+64|0;G=F+60|0;E=F+56|0;z=F+52|0;m=F+48|0;n=F+44|0;p=F+40|0;v=F+36|0;q=F+84|0;w=F+32|0;A=F+28|0;x=F+24|0;C=F+20|0;o=F+16|0;l=F+12|0;y=F+8|0;D=F+4|0;B=F;c[s>>2]=e;c[k>>2]=f;c[t>>2]=g;c[u>>2]=h;c[G>>2]=j;c[E>>2]=0;c[w>>2]=c[c[s>>2]>>2];c[A>>2]=0;if(!(vE(c[w>>2]|0,c[k>>2]|0,c[G>>2]|0,q)|0)){c[r>>2]=0;G=c[r>>2]|0;i=F;return G|0}c[n>>2]=c[(c[k>>2]|0)+20>>2];c[m>>2]=c[(c[(c[n>>2]|0)+4>>2]|0)+20>>2];if(((d[c[m>>2]>>0]|0)==152?((Nx(c[m>>2]|0)|0)<<24>>24|0)==66:0)?(d[(c[(c[m>>2]|0)+44>>2]|0)+42>>0]&16|0)==0:0){c[z>>2]=Tx(c[c[(c[n>>2]|0)+4>>2]>>2]|0)|0;c[x>>2]=d[c[z>>2]>>0];if((c[x>>2]|0)!=135){if((c[x>>2]|0)==97)c[E>>2]=c[(c[z>>2]|0)+8>>2]}else{c[o>>2]=c[(c[s>>2]|0)+480>>2];c[l>>2]=b[(c[z>>2]|0)+32>>1];c[A>>2]=wE(c[o>>2]|0,c[l>>2]|0,65)|0;if((c[A>>2]|0)!=0?(fe(c[A>>2]|0)|0)==3:0)c[E>>2]=ae(c[A>>2]|0)|0;xE(c[(c[s>>2]|0)+8>>2]|0,c[l>>2]|0)}do if(c[E>>2]|0){c[v>>2]=0;while(1){G=a[(c[E>>2]|0)+(c[v>>2]|0)>>0]|0;c[p>>2]=G;if(((G|0)!=0?(c[p>>2]|0)!=(a[q>>0]|0):0)?(c[p>>2]|0)!=(a[q+1>>0]|0):0)k=(c[p>>2]|0)!=(a[q+2>>0]|0);else k=0;l=c[v>>2]|0;if(!k)break;c[v>>2]=l+1}if((l|0)!=0?255!=(d[(c[E>>2]|0)+((c[v>>2]|0)-1)>>0]|0):0){if((c[p>>2]|0)==(a[q>>0]|0))k=(a[(c[E>>2]|0)+((c[v>>2]|0)+1)>>0]|0)==0;else k=0;c[c[u>>2]>>2]=k&1;c[y>>2]=Jv(c[w>>2]|0,97,c[E>>2]|0)|0;if(c[y>>2]|0)a[(c[(c[y>>2]|0)+8>>2]|0)+(c[v>>2]|0)>>0]=0;c[c[t>>2]>>2]=c[y>>2];if((c[x>>2]|0)!=135)break;c[D>>2]=c[(c[s>>2]|0)+8>>2];xE(c[D>>2]|0,b[(c[z>>2]|0)+32>>1]|0);if(!(c[c[u>>2]>>2]|0))break;if(!(a[(c[(c[z>>2]|0)+8>>2]|0)+1>>0]|0))break;c[B>>2]=Wz(c[s>>2]|0)|0;yA(c[s>>2]|0,c[z>>2]|0,c[B>>2]|0)|0;G=c[D>>2]|0;yE(G,(Bz(c[D>>2]|0)|0)-1|0,0);_z(c[s>>2]|0,c[B>>2]|0);break}c[E>>2]=0}while(0);c[C>>2]=(c[E>>2]|0)!=0&1;$g(c[A>>2]|0);c[r>>2]=c[C>>2];G=c[r>>2]|0;i=F;return G|0}c[r>>2]=0;G=c[r>>2]|0;i=F;return G|0; -}function uE(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+64|0;k=n+56|0;h=n+52|0;l=n+48|0;m=n+16|0;g=n+8|0;f=n+4|0;j=n;c[h>>2]=b;c[l>>2]=e;c[m>>2]=c[1570];c[m+4>>2]=c[1571];c[m+8>>2]=c[1572];c[m+12>>2]=c[1573];c[m+16>>2]=c[1574];c[m+20>>2]=c[1575];c[m+24>>2]=c[1576];c[m+28>>2]=c[1577];if((d[c[h>>2]>>0]|0|0)!=151){c[k>>2]=0;m=c[k>>2]|0;i=n;return m|0}c[g>>2]=c[(c[h>>2]|0)+20>>2];if((c[g>>2]|0)!=0?(c[c[g>>2]>>2]|0)==2:0){c[f>>2]=c[(c[(c[g>>2]|0)+4>>2]|0)+20>>2];if((d[c[f>>2]>>0]|0|0)==152?((d[(c[(c[f>>2]|0)+44>>2]|0)+42>>0]|0)&16|0)!=0:0){c[j>>2]=0;while(1){if((c[j>>2]|0)>=4){f=14;break}e=(Td(c[(c[h>>2]|0)+8>>2]|0,c[m+(c[j>>2]<<3)>>2]|0)|0)==0;b=c[j>>2]|0;if(e){f=12;break}c[j>>2]=b+1}if((f|0)==12){a[c[l>>2]>>0]=a[m+(b<<3)+4>>0]|0;c[k>>2]=1;m=c[k>>2]|0;i=n;return m|0}else if((f|0)==14){c[k>>2]=0;m=c[k>>2]|0;i=n;return m|0}}c[k>>2]=0;m=c[k>>2]|0;i=n;return m|0}c[k>>2]=0;m=c[k>>2]|0;i=n;return m|0}function vE(b,f,g,h){b=b|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;j=p+20|0;k=p+16|0;l=p+12|0;m=p+8|0;n=p+4|0;o=p;c[k>>2]=b;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;if(((d[c[l>>2]>>0]|0|0)==151?(c[(c[l>>2]|0)+20>>2]|0)!=0:0)?(c[c[(c[l>>2]|0)+20>>2]>>2]|0)==2:0){f=c[k>>2]|0;g=c[(c[l>>2]|0)+8>>2]|0;c[o>>2]=gi(f,g,If(c[(c[l>>2]|0)+8>>2]|0)|0,2,1,0)|0;if((c[o>>2]|0)!=0?((e[(c[o>>2]|0)+2>>1]|0)&4|0)!=0:0){g=c[n>>2]|0;f=c[(c[o>>2]|0)+4>>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;c[c[m>>2]>>2]=((e[(c[o>>2]|0)+2>>1]|0)&8|0)==0&1;c[j>>2]=1;g=c[j>>2]|0;i=p;return g|0}c[j>>2]=0;g=c[j>>2]|0;i=p;return g|0}c[j>>2]=0;g=c[j>>2]|0;i=p;return g|0}function wE(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+16|0;h=n+12|0;j=n+8|0;k=n+20|0;l=n+4|0;m=n;c[h>>2]=b;c[j>>2]=d;a[k>>0]=f;if((c[h>>2]|0)!=0?(c[l>>2]=(c[(c[h>>2]|0)+60>>2]|0)+(((c[j>>2]|0)-1|0)*40|0),0==((e[(c[l>>2]|0)+8>>1]|0)&1|0)):0){c[m>>2]=Vh(c[c[h>>2]>>2]|0)|0;if(c[m>>2]|0){gh(c[m>>2]|0,c[l>>2]|0)|0;lx(c[m>>2]|0,a[k>>0]|0,1)}c[g>>2]=c[m>>2];b=c[g>>2]|0;i=n;return b|0}c[g>>2]=0;b=c[g>>2]|0;i=n;return b|0}function xE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if((c[e>>2]|0)>32){c[(c[d>>2]|0)+188>>2]=-1;i=f;return}else{a=(c[d>>2]|0)+188|0;c[a>>2]=c[a>>2]|1<<(c[e>>2]|0)-1;i=f;return}}function yE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;h=e;c[g>>2]=a;c[f>>2]=b;c[h>>2]=d;d=c[h>>2]|0;c[(Mz(c[g>>2]|0,c[f>>2]|0)|0)+12>>2]=d;i=e;return}function zE(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+8|0;f=h+4|0;g=h;c[f>>2]=a;c[g>>2]=b;b=c[g>>2]|0;if((e[(c[f>>2]|0)+18>>1]|0|0)!=1024){c[d>>2]=(b|0)==0?c[f>>2]|0:0;g=c[d>>2]|0;i=h;return g|0}if((b|0)<(c[(c[(c[f>>2]|0)+12>>2]|0)+12>>2]|0)){c[d>>2]=(c[(c[(c[f>>2]|0)+12>>2]|0)+20>>2]|0)+((c[g>>2]|0)*48|0);g=c[d>>2]|0;i=h;return g|0}else{c[d>>2]=0;g=c[d>>2]|0;i=h;return g|0}return 0}function AE(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;m=s+28|0;n=s+24|0;j=s+20|0;k=s+16|0;o=s+32|0;l=s+12|0;r=s+8|0;q=s+4|0;p=s;c[m>>2]=d;c[n>>2]=f;c[j>>2]=g;c[k>>2]=h;b[o>>1]=e[(c[j>>2]|0)+18>>1]|0|(e[(c[k>>2]|0)+18>>1]|0);if(!((e[(c[j>>2]|0)+18>>1]|0)&62)){i=s;return}if(!((e[(c[k>>2]|0)+18>>1]|0)&62)){i=s;return}if(((e[o>>1]|0)&26|0)!=(e[o>>1]|0|0)?((e[o>>1]|0)&38|0)!=(e[o>>1]|0|0):0){i=s;return}if(py(c[(c[c[j>>2]>>2]|0)+12>>2]|0,c[(c[c[k>>2]>>2]|0)+12>>2]|0,-1)|0){i=s;return}if(py(c[(c[c[j>>2]>>2]|0)+16>>2]|0,c[(c[c[k>>2]>>2]|0)+16>>2]|0,-1)|0){i=s;return}do if((e[o>>1]|0)&(e[o>>1]|0)-1)if((e[o>>1]|0)&24){b[o>>1]=8;break}else{b[o>>1]=32;break}while(0);c[l>>2]=c[c[c[c[n>>2]>>2]>>2]>>2];c[r>>2]=ny(c[l>>2]|0,c[c[j>>2]>>2]|0,0)|0;if(!(c[r>>2]|0)){i=s;return}c[q>>2]=79;while(1){j=c[q>>2]|0;if((e[o>>1]|0|0)==(2<<(c[q>>2]|0)-79|0))break;c[q>>2]=j+1}a[c[r>>2]>>0]=j;c[p>>2]=nE(c[n>>2]|0,c[r>>2]|0,3)|0;jE(c[m>>2]|0,c[n>>2]|0,c[p>>2]|0);i=s;return}function BE(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;h=i;i=i+48|0;k=h+36|0;l=h+32|0;j=h+28|0;g=h;c[k>>2]=b;c[l>>2]=e;c[j>>2]=f;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;a[g+20>>0]=0;c[g+4>>2]=199;c[g+24>>2]=c[l>>2];by(g,c[k>>2]|0)|0;if(c[j>>2]|0){l=g+20|0;l=a[l>>0]|0;l=l<<24>>24!=0;l=l^1;l=l&1;i=h;return l|0}l=g+20|0;a[l>>0]=(d[l>>0]|0)&-3;l=g+20|0;l=a[l>>0]|0;l=l<<24>>24!=0;l=l^1;l=l&1;i=h;return l|0}function CE(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;l=n+8|0;k=n;f=n+28|0;g=n+24|0;h=n+20|0;m=n+16|0;j=n+12|0;c[f>>2]=a;c[g>>2]=d;c[h>>2]=e;a=c[c[f>>2]>>2]|0;d=c[c[h>>2]>>2]|0;if((b[(c[h>>2]|0)+32>>1]|0)>=0){h=c[(c[(c[h>>2]|0)+4>>2]|0)+((b[(c[h>>2]|0)+32>>1]|0)*24|0)>>2]|0;c[k>>2]=d;c[k+4>>2]=h;c[m>>2]=Bh(a,31016,k)|0;c[j>>2]=1555;h=c[f>>2]|0;k=c[j>>2]|0;l=c[g>>2]|0;m=c[m>>2]|0;bA(h,k,l,m,-1,2);i=n;return}else{c[l>>2]=d;c[m>>2]=Bh(a,36074,l)|0;c[j>>2]=2579;h=c[f>>2]|0;k=c[j>>2]|0;l=c[g>>2]|0;m=c[m>>2]|0;bA(h,k,l,m,-1,2);i=n;return}}function DE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;l=m+20|0;n=m+16|0;f=m+12|0;g=m+8|0;h=m+4|0;j=m;c[n>>2]=a;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;a:do if(c[(c[c[n>>2]>>2]|0)+24>>2]&524288){d=c[f>>2]|0;if(!(c[g>>2]|0)){if(Ex(d)|0)d=1;else d=(c[(c[f>>2]|0)+16>>2]|0)!=0;c[l>>2]=d&1;n=c[l>>2]|0;i=m;return n|0}c[j>>2]=c[d+16>>2];while(1){d=c[f>>2]|0;if(!(c[j>>2]|0))break;if(KC(d,c[j>>2]|0,c[g>>2]|0,c[h>>2]|0)|0){k=9;break}c[j>>2]=c[(c[j>>2]|0)+4>>2]}if((k|0)==9){c[l>>2]=1;n=c[l>>2]|0;i=m;return n|0}c[j>>2]=Ex(d)|0;while(1){if(!(c[j>>2]|0))break a;if(NC(c[f>>2]|0,c[j>>2]|0,c[g>>2]|0,c[h>>2]|0)|0)break;c[j>>2]=c[(c[j>>2]|0)+12>>2]}c[l>>2]=1;n=c[l>>2]|0;i=m;return n|0}while(0);c[l>>2]=0;n=c[l>>2]|0;i=m;return n|0}function EE(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;f=e+4|0;d=e;c[f>>2]=b;b=c[f>>2]|0;if(c[(c[f>>2]|0)+416>>2]|0)b=c[b+416>>2]|0;c[d>>2]=b;a[(c[d>>2]|0)+20>>0]=1;i=e;return}function FE(e,f,g,h,j,k,l,m,n,o,p){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;K=i;i=i+64|0;q=K+48|0;r=K+44|0;t=K+40|0;u=K+36|0;v=K+32|0;w=K+28|0;x=K+52|0;y=K+58|0;z=K+57|0;A=K+56|0;s=K+24|0;I=K+20|0;E=K+16|0;D=K+12|0;G=K+55|0;F=K+8|0;C=K+4|0;B=K;H=K+54|0;c[q>>2]=e;c[r>>2]=f;c[t>>2]=g;c[u>>2]=h;c[v>>2]=j;c[w>>2]=k;b[x>>1]=l;a[y>>0]=m;a[z>>0]=n;a[A>>0]=o;c[s>>2]=p;c[I>>2]=c[(c[q>>2]|0)+8>>2];c[E>>2]=0;c[D>>2]=Cz(c[I>>2]|0)|0;a[G>>0]=(d[(c[r>>2]|0)+42>>0]&32|0)==0?70:68;if(!(d[A>>0]|0))Eh(c[I>>2]|0,d[G>>0]|0,c[u>>2]|0,c[D>>2]|0,c[w>>2]|0,b[x>>1]|0)|0;g=(DE(c[q>>2]|0,c[r>>2]|0,0,0)|0)!=0;if(g|(c[t>>2]|0)!=0){c[F>>2]=HE(c[q>>2]|0,c[t>>2]|0,0,0,3,c[r>>2]|0,d[z>>0]|0)|0;g=IE(c[q>>2]|0,c[r>>2]|0)|0;c[F>>2]=c[F>>2]|g;c[E>>2]=(c[(c[q>>2]|0)+76>>2]|0)+1;g=(c[q>>2]|0)+76|0;c[g>>2]=(c[g>>2]|0)+(1+(b[(c[r>>2]|0)+34>>1]|0));Rw(c[I>>2]|0,30,c[w>>2]|0,c[E>>2]|0)|0;c[C>>2]=0;while(1){if((c[C>>2]|0)>=(b[(c[r>>2]|0)+34>>1]|0))break;if((c[F>>2]|0)!=-1){if((c[C>>2]|0)<=31?(c[F>>2]&1<>2]|0)!=0:0)J=9}else J=9;if((J|0)==9){J=0;tA(c[I>>2]|0,c[r>>2]|0,c[u>>2]|0,c[C>>2]|0,(c[E>>2]|0)+(c[C>>2]|0)+1|0)}c[C>>2]=(c[C>>2]|0)+1}c[B>>2]=Bz(c[I>>2]|0)|0;BC(c[q>>2]|0,c[t>>2]|0,109,0,1,c[r>>2]|0,c[E>>2]|0,d[z>>0]|0,c[D>>2]|0);J=c[B>>2]|0;if((J|0)<(Bz(c[I>>2]|0)|0))Eh(c[I>>2]|0,d[G>>0]|0,c[u>>2]|0,c[D>>2]|0,c[w>>2]|0,b[x>>1]|0)|0;GC(c[q>>2]|0,c[r>>2]|0,c[E>>2]|0,0,0,0)}if(c[(c[r>>2]|0)+12>>2]|0){e=c[q>>2]|0;H=c[r>>2]|0;G=c[E>>2]|0;JE(e,H,0,G,0,0);G=c[q>>2]|0;H=c[t>>2]|0;e=c[r>>2]|0;f=c[E>>2]|0;g=a[z>>0]|0;g=g&255;J=c[D>>2]|0;BC(G,H,109,0,2,e,f,g,J);I=c[I>>2]|0;J=c[D>>2]|0;Gz(I,J);i=K;return}a[H>>0]=0;GE(c[q>>2]|0,c[r>>2]|0,c[u>>2]|0,c[v>>2]|0,0,c[s>>2]|0);Rw(c[I>>2]|0,95,c[u>>2]|0,(d[y>>0]|0)!=0?1:0)|0;if(a[y>>0]|0)Ih(c[I>>2]|0,-1,c[c[r>>2]>>2]|0,0);if(d[A>>0]|0)Fh(c[I>>2]|0,4);if((c[s>>2]|0)>=0)xz(c[I>>2]|0,95,c[s>>2]|0)|0;if((d[A>>0]|0)==2)a[H>>0]=d[H>>0]|2;Fh(c[I>>2]|0,a[H>>0]|0);e=c[q>>2]|0;H=c[r>>2]|0;G=c[E>>2]|0;JE(e,H,0,G,0,0);G=c[q>>2]|0;H=c[t>>2]|0;e=c[r>>2]|0;f=c[E>>2]|0;g=a[z>>0]|0;g=g&255;J=c[D>>2]|0;BC(G,H,109,0,2,e,f,g,J);I=c[I>>2]|0;J=c[D>>2]|0;Gz(I,J);i=K;return}function GE(a,e,f,g,h,j){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;y=i;i=i+64|0;l=y+48|0;k=y+44|0;m=y+40|0;n=y+36|0;o=y+32|0;p=y+28|0;q=y+24|0;v=y+20|0;r=y+16|0;s=y+12|0;u=y+8|0;w=y+4|0;t=y;c[l>>2]=a;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=j;c[v>>2]=-1;c[u>>2]=0;c[w>>2]=c[(c[l>>2]|0)+8>>2];if(!((d[(c[k>>2]|0)+42>>0]|0)&32))h=0;else h=Ej(c[k>>2]|0)|0;c[t>>2]=h;c[q>>2]=0;c[s>>2]=c[(c[k>>2]|0)+8>>2];while(1){if(!(c[s>>2]|0))break;if(!((c[o>>2]|0)!=0?(c[(c[o>>2]|0)+(c[q>>2]<<2)>>2]|0)==0:0))x=7;if(((x|0)==7?(x=0,(c[s>>2]|0)!=(c[t>>2]|0)):0)?((c[n>>2]|0)+(c[q>>2]|0)|0)!=(c[p>>2]|0):0){c[v>>2]=Xz(c[l>>2]|0,c[s>>2]|0,c[m>>2]|0,0,1,r,c[u>>2]|0,c[v>>2]|0)|0;h=c[s>>2]|0;if((d[(c[s>>2]|0)+55>>0]|0)>>>3&1)h=b[h+50>>1]|0;else h=b[h+52>>1]|0;Vw(c[w>>2]|0,111,(c[n>>2]|0)+(c[q>>2]|0)|0,c[v>>2]|0,h&65535)|0;Yz(c[l>>2]|0,c[r>>2]|0);c[u>>2]=c[s>>2]}c[q>>2]=(c[q>>2]|0)+1;c[s>>2]=c[(c[s>>2]|0)+20>>2]}i=y;return}function HE(a,b,e,f,g,h,j){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=i;i=i+48|0;k=u+40|0;v=u+36|0;l=u+32|0;m=u+28|0;n=u+24|0;o=u+20|0;p=u+16|0;r=u+12|0;q=u+8|0;s=u+4|0;t=u;c[k>>2]=a;c[v>>2]=b;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=j;c[r>>2]=(c[l>>2]|0)!=0?110:109;c[q>>2]=0;c[s>>2]=c[v>>2];while(1){if(!(c[s>>2]|0))break;if((((d[(c[s>>2]|0)+8>>0]|0|0)==(c[r>>2]|0)?(c[n>>2]&(d[(c[s>>2]|0)+9>>0]|0)|0)!=0:0)?(MF(c[(c[s>>2]|0)+16>>2]|0,c[l>>2]|0)|0)!=0:0)?(c[t>>2]=ME(c[k>>2]|0,c[s>>2]|0,c[o>>2]|0,c[p>>2]|0)|0,(c[t>>2]|0)!=0):0)c[q>>2]=c[q>>2]|c[(c[t>>2]|0)+16+(c[m>>2]<<2)>>2];c[s>>2]=c[(c[s>>2]|0)+32>>2]}i=u;return c[q>>2]|0}function IE(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;j=m+12|0;k=m+8|0;h=m+4|0;l=m;c[f>>2]=a;c[g>>2]=d;c[j>>2]=0;if(!(c[(c[c[f>>2]>>2]|0)+24>>2]&524288)){l=c[j>>2]|0;i=m;return l|0}c[k>>2]=c[(c[g>>2]|0)+16>>2];while(1){if(!(c[k>>2]|0))break;c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[(c[k>>2]|0)+20>>2]|0))break;if((c[(c[k>>2]|0)+36+(c[h>>2]<<3)>>2]|0)>31)a=-1;else a=1<>2]|0)+36+(c[h>>2]<<3)>>2];c[j>>2]=c[j>>2]|a;c[h>>2]=(c[h>>2]|0)+1}c[k>>2]=c[(c[k>>2]|0)+4>>2]}c[k>>2]=Ex(c[g>>2]|0)|0;while(1){if(!(c[k>>2]|0))break;c[l>>2]=0;cC(c[f>>2]|0,c[g>>2]|0,c[k>>2]|0,l,0)|0;a:do if(c[l>>2]|0){c[h>>2]=0;while(1){if((c[h>>2]|0)>=(e[(c[l>>2]|0)+50>>1]|0))break a;if((b[(c[(c[l>>2]|0)+4>>2]|0)+(c[h>>2]<<1)>>1]|0)>31)a=-1;else a=1<>2]|0)+4>>2]|0)+(c[h>>2]<<1)>>1];c[j>>2]=c[j>>2]|a;c[h>>2]=(c[h>>2]|0)+1}}while(0);c[k>>2]=c[(c[k>>2]|0)+12>>2]}l=c[j>>2]|0;i=m;return l|0}function JE(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+32|0;h=r+28|0;j=r+24|0;k=r+20|0;l=r+16|0;m=r+12|0;n=r+8|0;p=r+4|0;o=r;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;if(!(c[(c[c[h>>2]>>2]|0)+24>>2]&524288)){i=r;return}c[p>>2]=Ex(c[j>>2]|0)|0;while(1){if(!(c[p>>2]|0))break;if(!((c[m>>2]|0)!=0?(NC(c[j>>2]|0,c[p>>2]|0,c[m>>2]|0,c[n>>2]|0)|0)==0:0))q=6;if((q|0)==6?(q=0,c[o>>2]=KE(c[h>>2]|0,c[j>>2]|0,c[p>>2]|0,c[k>>2]|0)|0,(c[o>>2]|0)!=0):0)LE(c[h>>2]|0,c[o>>2]|0,c[j>>2]|0,c[l>>2]|0,2,0);c[p>>2]=c[(c[p>>2]|0)+12>>2]}i=r;return}function KE(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var 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,J=0,K=0,L=0,M=0,N=0;N=i;i=i+144|0;j=N+136|0;k=N+132|0;l=N+128|0;m=N+124|0;n=N+120|0;q=N+116|0;o=N+112|0;D=N+108|0;s=N+104|0;L=N+100|0;u=N+96|0;x=N+92|0;p=N+88|0;C=N+84|0;F=N+80|0;y=N+76|0;B=N+72|0;r=N+68|0;E=N+64|0;J=N+56|0;I=N+48|0;H=N+40|0;K=N+32|0;t=N+28|0;w=N+24|0;z=N+20|0;v=N+16|0;G=N+8|0;A=N;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;c[q>>2]=c[c[k>>2]>>2];c[s>>2]=(c[n>>2]|0)!=0&1;c[o>>2]=d[(c[m>>2]|0)+25+(c[s>>2]|0)>>0];c[D>>2]=c[(c[m>>2]|0)+28+(c[s>>2]<<2)>>2];if(!((c[o>>2]|0)==0|(c[D>>2]|0)!=0)){c[x>>2]=0;c[p>>2]=0;c[C>>2]=0;c[F>>2]=0;c[y>>2]=0;c[B>>2]=0;c[E>>2]=0;if(cC(c[k>>2]|0,c[l>>2]|0,c[m>>2]|0,x,p)|0){c[j>>2]=0;M=c[j>>2]|0;i=N;return M|0}c[r>>2]=0;while(1){if((c[r>>2]|0)>=(c[(c[m>>2]|0)+20>>2]|0))break;c[J>>2]=c[1578];c[J+4>>2]=c[1579];c[I>>2]=c[1580];c[I+4>>2]=c[1581];if(c[p>>2]|0)h=c[(c[p>>2]|0)+(c[r>>2]<<2)>>2]|0;else h=c[(c[m>>2]|0)+36>>2]|0;c[t>>2]=h;if(c[x>>2]|0)h=b[(c[(c[x>>2]|0)+4>>2]|0)+(c[r>>2]<<1)>>1]|0;else h=b[(c[l>>2]|0)+32>>1]|0;Cy(K,c[(c[(c[l>>2]|0)+4>>2]|0)+((h<<16>>16)*24|0)>>2]|0);Cy(H,c[(c[(c[c[m>>2]>>2]|0)+4>>2]|0)+((c[t>>2]|0)*24|0)>>2]|0);e=c[k>>2]|0;g=c[k>>2]|0;f=cz(c[q>>2]|0,27,J,0)|0;f=rv(g,122,f,cz(c[q>>2]|0,27,K,0)|0,0)|0;c[w>>2]=rv(e,79,f,cz(c[q>>2]|0,27,H,0)|0,0)|0;c[F>>2]=az(c[q>>2]|0,c[F>>2]|0,c[w>>2]|0)|0;if(c[n>>2]|0){h=c[k>>2]|0;e=c[k>>2]|0;g=cz(c[q>>2]|0,27,J,0)|0;g=rv(e,122,g,cz(c[q>>2]|0,27,K,0)|0,0)|0;e=c[k>>2]|0;f=cz(c[q>>2]|0,27,I,0)|0;c[w>>2]=rv(h,73,g,rv(e,122,f,cz(c[q>>2]|0,27,K,0)|0,0)|0,0)|0;c[E>>2]=az(c[q>>2]|0,c[E>>2]|0,c[w>>2]|0)|0}if((c[o>>2]|0)!=6?(c[o>>2]|0)!=9|(c[n>>2]|0)!=0:0){do if((c[o>>2]|0)!=9){if((c[o>>2]|0)!=8){c[z>>2]=rv(c[k>>2]|0,101,0,0,0)|0;break}c[v>>2]=c[(c[(c[c[m>>2]>>2]|0)+4>>2]|0)+((c[t>>2]|0)*24|0)+4>>2];if(c[v>>2]|0){c[z>>2]=ny(c[q>>2]|0,c[v>>2]|0,0)|0;break}else{c[z>>2]=rv(c[k>>2]|0,101,0,0,0)|0;break}}else{e=c[k>>2]|0;f=cz(c[q>>2]|0,27,I,0)|0;c[z>>2]=rv(e,122,f,cz(c[q>>2]|0,27,K,0)|0,0)|0}while(0);c[y>>2]=Gv(c[k>>2]|0,c[y>>2]|0,c[z>>2]|0)|0;Hv(c[k>>2]|0,c[y>>2]|0,H,0)}c[r>>2]=(c[r>>2]|0)+1}Sf(c[q>>2]|0,c[p>>2]|0);c[L>>2]=c[c[c[m>>2]>>2]>>2];c[u>>2]=If(c[L>>2]|0)|0;if((c[o>>2]|0)==6){c[G>>2]=c[L>>2];c[G+4>>2]=c[u>>2];c[A>>2]=Jv(c[q>>2]|0,57,36044)|0;if(c[A>>2]|0)a[(c[A>>2]|0)+1>>0]=2;I=c[k>>2]|0;J=Gv(c[k>>2]|0,0,c[A>>2]|0)|0;K=Nv(c[q>>2]|0,0,G,0)|0;c[B>>2]=Fv(I,J,K,c[F>>2]|0,0,0,0,0,0,0)|0;c[F>>2]=0}K=(c[q>>2]|0)+248|0;c[K>>2]=(c[K>>2]|0)+1;c[D>>2]=ph(c[q>>2]|0,72+(c[u>>2]|0)+1|0,0)|0;if((c[D>>2]|0)!=0?(K=(c[D>>2]|0)+36|0,c[(c[D>>2]|0)+28>>2]=K,c[C>>2]=K,c[(c[C>>2]|0)+12>>2]=(c[C>>2]|0)+36,iR(c[(c[C>>2]|0)+12>>2]|0,c[L>>2]|0,c[u>>2]|0)|0,L=ny(c[q>>2]|0,c[F>>2]|0,1)|0,c[(c[C>>2]|0)+16>>2]=L,L=vy(c[q>>2]|0,c[y>>2]|0,1)|0,c[(c[C>>2]|0)+20>>2]=L,L=Hx(c[q>>2]|0,c[B>>2]|0,1)|0,c[(c[C>>2]|0)+8>>2]=L,(c[E>>2]|0)!=0):0){c[E>>2]=rv(c[k>>2]|0,19,c[E>>2]|0,0,0)|0;L=ny(c[q>>2]|0,c[E>>2]|0,1)|0;c[(c[D>>2]|0)+12>>2]=L}L=(c[q>>2]|0)+248|0;c[L>>2]=(c[L>>2]|0)+-1;Zu(c[q>>2]|0,c[F>>2]|0);Zu(c[q>>2]|0,c[E>>2]|0);Vu(c[q>>2]|0,c[y>>2]|0);Wu(c[q>>2]|0,c[B>>2]|0);if((d[(c[q>>2]|0)+65>>0]|0|0)==1){LF(c[q>>2]|0,c[D>>2]|0);c[j>>2]=0;M=c[j>>2]|0;i=N;return M|0}switch(c[o>>2]|0){case 6:{a[c[C>>2]>>0]=119;break}case 9:{if(c[n>>2]|0)M=38;else a[c[C>>2]>>0]=109;break}default:M=38}if((M|0)==38)a[c[C>>2]>>0]=110;c[(c[C>>2]|0)+4>>2]=c[D>>2];c[(c[D>>2]|0)+20>>2]=c[(c[l>>2]|0)+64>>2];c[(c[D>>2]|0)+24>>2]=c[(c[l>>2]|0)+64>>2];c[(c[m>>2]|0)+28+(c[s>>2]<<2)>>2]=c[D>>2];a[(c[D>>2]|0)+8>>0]=(c[n>>2]|0)!=0?110:109}c[j>>2]=c[D>>2];M=c[j>>2]|0;i=N;return M|0}function LE(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=i;i=i+48|0;j=p+32|0;h=p+28|0;r=p+24|0;k=p+20|0;q=p+16|0;l=p+12|0;o=p+8|0;n=p+4|0;m=p;c[j>>2]=a;c[h>>2]=b;c[r>>2]=d;c[k>>2]=e;c[q>>2]=f;c[l>>2]=g;c[o>>2]=Pw(c[j>>2]|0)|0;c[n>>2]=ME(c[j>>2]|0,c[h>>2]|0,c[r>>2]|0,c[q>>2]|0)|0;if(!(c[n>>2]|0)){i=p;return}if(c[c[h>>2]>>2]|0)h=0==(c[(c[c[j>>2]>>2]|0)+24>>2]&262144|0);else h=0;c[m>>2]=h&1;e=c[o>>2]|0;k=c[k>>2]|0;q=c[l>>2]|0;l=(c[j>>2]|0)+76|0;r=(c[l>>2]|0)+1|0;c[l>>2]=r;Uw(e,132,k,q,r,c[(c[n>>2]|0)+8>>2]|0,-18)|0;Fh(c[o>>2]|0,c[m>>2]&255);i=p;return}function ME(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;j=m+8|0;l=m+4|0;k=m;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;e=c[f>>2]|0;if(c[(c[f>>2]|0)+416>>2]|0)e=c[e+416>>2]|0;c[l>>2]=e;c[k>>2]=c[(c[l>>2]|0)+532>>2];while(1){if(!(c[k>>2]|0))break;if((c[c[k>>2]>>2]|0)==(c[g>>2]|0)?(c[(c[k>>2]|0)+12>>2]|0)==(c[j>>2]|0):0)break;c[k>>2]=c[(c[k>>2]|0)+4>>2]}if(c[k>>2]|0){l=c[k>>2]|0;i=m;return l|0}c[k>>2]=NE(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;l=c[k>>2]|0;i=m;return l|0}function NE(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=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;x=i;i=i+96|0;w=x;h=x+84|0;j=x+80|0;k=x+76|0;l=x+72|0;m=x+68|0;s=x+64|0;n=x+60|0;p=x+56|0;t=x+52|0;v=x+48|0;u=x+16|0;q=x+12|0;r=x+8|0;o=x+4|0;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;g=c[j>>2]|0;if(c[(c[j>>2]|0)+416>>2]|0)g=c[g+416>>2]|0;c[s>>2]=g;c[n>>2]=c[c[j>>2]>>2];c[t>>2]=0;c[q>>2]=0;c[o>>2]=0;c[p>>2]=ph(c[n>>2]|0,24,0)|0;if(!(c[p>>2]|0)){c[h>>2]=0;w=c[h>>2]|0;i=x;return w|0}c[(c[p>>2]|0)+4>>2]=c[(c[s>>2]|0)+532>>2];c[(c[s>>2]|0)+532>>2]=c[p>>2];e=ph(c[n>>2]|0,28,0)|0;c[q>>2]=e;c[(c[p>>2]|0)+8>>2]=e;if(!(c[q>>2]|0)){c[h>>2]=0;w=c[h>>2]|0;i=x;return w|0}OE(c[(c[s>>2]|0)+8>>2]|0,c[q>>2]|0);c[c[p>>2]>>2]=c[k>>2];c[(c[p>>2]|0)+12>>2]=c[m>>2];c[(c[p>>2]|0)+16>>2]=-1;c[(c[p>>2]|0)+16+4>>2]=-1;c[r>>2]=ph(c[n>>2]|0,544,0)|0;if(!(c[r>>2]|0)){c[h>>2]=0;w=c[h>>2]|0;i=x;return w|0}c[u>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;c[u+12>>2]=0;c[u+16>>2]=0;c[u+20>>2]=0;c[u+24>>2]=0;c[u+28>>2]=0;c[u>>2]=c[r>>2];c[c[r>>2]>>2]=c[n>>2];c[(c[r>>2]|0)+420>>2]=c[l>>2];c[(c[r>>2]|0)+416>>2]=c[s>>2];c[(c[r>>2]|0)+496>>2]=c[c[k>>2]>>2];a[(c[r>>2]|0)+440>>0]=a[(c[k>>2]|0)+8>>0]|0;c[(c[r>>2]|0)+428>>2]=c[(c[j>>2]|0)+428>>2];c[v>>2]=Pw(c[r>>2]|0)|0;if(c[v>>2]|0){e=c[v>>2]|0;l=c[n>>2]|0;c[w>>2]=c[c[k>>2]>>2];Ih(e,-1,Bh(l,35740,w)|0,-1);if(c[(c[k>>2]|0)+12>>2]|0){c[t>>2]=ny(c[n>>2]|0,c[(c[k>>2]|0)+12>>2]|0,0)|0;if(0==(fy(u,c[t>>2]|0)|0)?(d[(c[n>>2]|0)+65>>0]|0|0)==0:0){c[o>>2]=Cz(c[v>>2]|0)|0;LA(c[r>>2]|0,c[t>>2]|0,c[o>>2]|0,16)}Zu(c[n>>2]|0,c[t>>2]|0)}PE(c[r>>2]|0,c[(c[k>>2]|0)+28>>2]|0,c[m>>2]|0)|0;if(c[o>>2]|0)Gz(c[v>>2]|0,c[o>>2]|0);Yw(c[v>>2]|0,21)|0;QE(c[j>>2]|0,c[r>>2]|0);if(!(d[(c[n>>2]|0)+65>>0]|0)){w=RE(c[v>>2]|0,(c[q>>2]|0)+4|0,(c[s>>2]|0)+400|0)|0;c[c[q>>2]>>2]=w}c[(c[q>>2]|0)+8>>2]=c[(c[r>>2]|0)+76>>2];c[(c[q>>2]|0)+12>>2]=c[(c[r>>2]|0)+72>>2];c[(c[q>>2]|0)+16>>2]=c[(c[r>>2]|0)+84>>2];c[(c[q>>2]|0)+20>>2]=c[k>>2];c[(c[p>>2]|0)+16>>2]=c[(c[r>>2]|0)+432>>2];c[(c[p>>2]|0)+16+4>>2]=c[(c[r>>2]|0)+436>>2];Tu(c[v>>2]|0)}Lh(c[r>>2]|0);Sf(c[n>>2]|0,c[r>>2]|0);c[h>>2]=c[p>>2];w=c[h>>2]|0;i=x;return w|0}function OE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;c[(c[f>>2]|0)+24>>2]=c[(c[e>>2]|0)+192>>2];c[(c[e>>2]|0)+192>>2]=c[f>>2];i=d;return}function PE(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+48|0;g=o+44|0;p=o+40|0;h=o+36|0;l=o+32|0;n=o+28|0;j=o+24|0;m=o+4|0;k=o;c[g>>2]=b;c[p>>2]=e;c[h>>2]=f;c[n>>2]=c[(c[g>>2]|0)+8>>2];c[j>>2]=c[c[g>>2]>>2];c[l>>2]=c[p>>2];while(1){if(!(c[l>>2]|0))break;if((c[h>>2]|0)==10)f=a[(c[l>>2]|0)+1>>0]|0;else f=c[h>>2]&255;a[(c[g>>2]|0)+441>>0]=f;switch(d[c[l>>2]>>0]|0|0){case 110:{b=c[g>>2]|0;e=KF(c[g>>2]|0,c[l>>2]|0)|0;p=vy(c[j>>2]|0,c[(c[l>>2]|0)+20>>2]|0,0)|0;Tv(b,e,p,ny(c[j>>2]|0,c[(c[l>>2]|0)+16>>2]|0,0)|0,d[(c[g>>2]|0)+441>>0]|0);break}case 108:{b=c[g>>2]|0;e=KF(c[g>>2]|0,c[l>>2]|0)|0;p=Hx(c[j>>2]|0,c[(c[l>>2]|0)+8>>2]|0,0)|0;Uv(b,e,p,nz(c[j>>2]|0,c[(c[l>>2]|0)+24>>2]|0)|0,d[(c[g>>2]|0)+441>>0]|0);break}case 109:{p=c[g>>2]|0;Rv(p,KF(c[g>>2]|0,c[l>>2]|0)|0,ny(c[j>>2]|0,c[(c[l>>2]|0)+16>>2]|0,0)|0);break}default:{c[k>>2]=Hx(c[j>>2]|0,c[(c[l>>2]|0)+8>>2]|0,0)|0;ZA(m,4,0);Cv(c[g>>2]|0,c[k>>2]|0,m)|0;Wu(c[j>>2]|0,c[k>>2]|0)}}if((d[c[l>>2]>>0]|0|0)!=119)Yw(c[n>>2]|0,98)|0;c[l>>2]=c[(c[l>>2]|0)+28>>2]}i=o;return 0}function QE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;b=c[e>>2]|0;if(!(c[(c[d>>2]|0)+68>>2]|0)){c[(c[d>>2]|0)+4>>2]=c[b+4>>2];c[(c[d>>2]|0)+68>>2]=c[(c[e>>2]|0)+68>>2];c[(c[d>>2]|0)+12>>2]=c[(c[e>>2]|0)+12>>2];i=f;return}else{Sf(c[b>>2]|0,c[(c[e>>2]|0)+4>>2]|0);i=f;return}}function RE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+12|0;h=f+8|0;j=f+4|0;e=f;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[e>>2]=c[(c[g>>2]|0)+4>>2];SE(c[g>>2]|0,c[j>>2]|0);c[c[h>>2]>>2]=c[(c[g>>2]|0)+32>>2];c[(c[g>>2]|0)+4>>2]=0;i=f;return c[e>>2]|0}function SE(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;g=r+28|0;h=r+24|0;k=r+20|0;m=r+16|0;o=r+12|0;p=r+8|0;j=r+4|0;n=r+32|0;l=r;c[g>>2]=e;c[h>>2]=f;c[m>>2]=c[c[h>>2]>>2];c[p>>2]=c[(c[g>>2]|0)+24>>2];c[j>>2]=c[(c[p>>2]|0)+120>>2];f=(c[g>>2]|0)+88|0;b[f>>1]=b[f>>1]&-65|64;f=(c[g>>2]|0)+88|0;b[f>>1]=b[f>>1]&-129;c[o>>2]=c[(c[g>>2]|0)+4>>2];c[k>>2]=(c[(c[g>>2]|0)+32>>2]|0)-1;while(1){if((c[k>>2]|0)<0)break;a[n>>0]=a[c[o>>2]>>0]|0;switch(d[n>>0]|0|0){case 2:{if(c[(c[o>>2]|0)+8>>2]|0){q=(c[g>>2]|0)+88|0;b[q>>1]=b[q>>1]&-65;q=6}else q=6;break}case 0:case 1:{q=6;break}case 9:case 10:case 8:{f=(c[g>>2]|0)+88|0;b[f>>1]=b[f>>1]&-65;f=(c[g>>2]|0)+88|0;b[f>>1]=b[f>>1]&-129|128;break}case 12:{if((c[(c[o>>2]|0)+8>>2]|0)>(c[m>>2]|0))c[m>>2]=c[(c[o>>2]|0)+8>>2];break}case 11:{c[l>>2]=c[(c[o>>2]|0)+-20+4>>2];if((c[l>>2]|0)>(c[m>>2]|0))c[m>>2]=c[l>>2];break}case 3:case 5:case 7:{c[(c[o>>2]|0)+16>>2]=200;a[(c[o>>2]|0)+1>>0]=-19;break}case 4:case 6:{c[(c[o>>2]|0)+16>>2]=201;a[(c[o>>2]|0)+1>>0]=-19;break}default:{}}if((q|0)==6){q=0;f=(c[g>>2]|0)+88|0;b[f>>1]=b[f>>1]&-129|128}a[(c[o>>2]|0)+2>>0]=a[35754+(d[n>>0]|0)>>0]|0;if(((d[(c[o>>2]|0)+2>>0]|0)&1|0)!=0?(c[(c[o>>2]|0)+8>>2]|0)<0:0)c[(c[o>>2]|0)+8>>2]=c[(c[j>>2]|0)+(-1-(c[(c[o>>2]|0)+8>>2]|0)<<2)>>2];c[k>>2]=(c[k>>2]|0)+-1;c[o>>2]=(c[o>>2]|0)+20}Sf(c[c[g>>2]>>2]|0,c[(c[p>>2]|0)+120>>2]|0);c[(c[p>>2]|0)+120>>2]=0;c[(c[p>>2]|0)+116>>2]=0;c[c[h>>2]>>2]=c[m>>2];i=r;return}function TE(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[j>>2]=f;c[k>>2]=g;b[(c[j>>2]|0)+16+18>>1]=0;f=(c[j>>2]|0)+64|0;a[f>>0]=d[f>>0]&-7;c[c[k>>2]>>2]=0;f=c[j>>2]|0;if((d[(c[j>>2]|0)+66>>0]|0)!=1){c[h>>2]=IF(f,c[k>>2]|0)|0;l=c[h>>2]|0;i=m;return l|0}c[l>>2]=c[(c[j>>2]|0)+120+(a[f+68>>0]<<2)>>2];f=(c[j>>2]|0)+80+(a[(c[j>>2]|0)+68>>0]<<1)|0;g=(b[f>>1]|0)+1<<16>>16;b[f>>1]=g;if((g&65535|0)>=(e[(c[l>>2]|0)+18>>1]|0)){l=(c[j>>2]|0)+80+(a[(c[j>>2]|0)+68>>0]<<1)|0;b[l>>1]=(b[l>>1]|0)+-1<<16>>16;c[h>>2]=IF(c[j>>2]|0,c[k>>2]|0)|0;l=c[h>>2]|0;i=m;return l|0}if(a[(c[l>>2]|0)+4>>0]|0){c[h>>2]=0;l=c[h>>2]|0;i=m;return l|0}else{c[h>>2]=JF(c[j>>2]|0)|0;l=c[h>>2]|0;i=m;return l|0}return 0}function UE(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;i=i+16|0;h=l+8|0;j=l+4|0;k=l;c[j>>2]=f;c[k>>2]=g;c[c[k>>2]>>2]=0;g=(c[j>>2]|0)+64|0;a[g>>0]=d[g>>0]&-15;b[(c[j>>2]|0)+16+18>>1]=0;if(((d[(c[j>>2]|0)+66>>0]|0)==1?(e[(c[j>>2]|0)+80+(a[(c[j>>2]|0)+68>>0]<<1)>>1]|0)!=0:0)?(d[(c[(c[j>>2]|0)+120+(a[(c[j>>2]|0)+68>>0]<<2)>>2]|0)+4>>0]|0)!=0:0){g=(c[j>>2]|0)+80+(a[(c[j>>2]|0)+68>>0]<<1)|0;b[g>>1]=(b[g>>1]|0)+-1<<16>>16;c[h>>2]=0;g=c[h>>2]|0;i=l;return g|0}c[h>>2]=VE(c[j>>2]|0,c[k>>2]|0)|0;g=c[h>>2]|0;i=l;return g|0}function VE(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;j=p+20|0;k=p+16|0;l=p+12|0;n=p+8|0;m=p+4|0;h=p;c[k>>2]=f;c[l>>2]=g;if((d[(c[k>>2]|0)+66>>0]|0)!=1){if((d[(c[k>>2]|0)+66>>0]|0)>=3)f=WE(c[k>>2]|0)|0;else f=0;c[n>>2]=f;if(c[n>>2]|0){c[j>>2]=c[n>>2];o=c[j>>2]|0;i=p;return o|0}if(!(d[(c[k>>2]|0)+66>>0]|0)){c[c[l>>2]>>2]=1;c[j>>2]=0;o=c[j>>2]|0;i=p;return o|0}if((c[(c[k>>2]|0)+60>>2]|0)!=0?(a[(c[k>>2]|0)+66>>0]=1,g=(c[(c[k>>2]|0)+60>>2]|0)<0,c[(c[k>>2]|0)+60>>2]=0,g):0){c[j>>2]=0;o=c[j>>2]|0;i=p;return o|0}}c[m>>2]=c[(c[k>>2]|0)+120+(a[(c[k>>2]|0)+68>>0]<<2)>>2];do if(a[(c[m>>2]|0)+4>>0]|0){while(1){f=a[(c[k>>2]|0)+68>>0]|0;if(e[(c[k>>2]|0)+80+(a[(c[k>>2]|0)+68>>0]<<1)>>1]|0)break;g=c[k>>2]|0;if(!f){o=17;break}ZE(g)}if((o|0)==17){a[g+66>>0]=0;c[c[l>>2]>>2]=1;c[j>>2]=0;o=c[j>>2]|0;i=p;return o|0}o=(c[k>>2]|0)+80+(f<<1)|0;b[o>>1]=(b[o>>1]|0)+-1<<16>>16;c[m>>2]=c[(c[k>>2]|0)+120+(a[(c[k>>2]|0)+68>>0]<<2)>>2];if((d[(c[m>>2]|0)+2>>0]|0)!=0?(a[(c[m>>2]|0)+4>>0]|0)==0:0){c[n>>2]=UE(c[k>>2]|0,c[l>>2]|0)|0;break}c[n>>2]=0}else{c[h>>2]=e[(c[k>>2]|0)+80+(a[(c[k>>2]|0)+68>>0]<<1)>>1];o=c[k>>2]|0;c[n>>2]=XE(o,$q((c[(c[m>>2]|0)+56>>2]|0)+(e[(c[m>>2]|0)+20>>1]&(d[(c[(c[m>>2]|0)+64>>2]|0)+(c[h>>2]<<1)>>0]<<8|d[(c[(c[m>>2]|0)+64>>2]|0)+(c[h>>2]<<1)+1>>0]))|0)|0)|0;if(!(c[n>>2]|0)){c[n>>2]=YE(c[k>>2]|0)|0;break}c[j>>2]=c[n>>2];o=c[j>>2]|0;i=p;return o|0}while(0);c[j>>2]=c[n>>2];o=c[j>>2]|0;i=p;return o|0}function WE(b){b=b|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;b=c[f>>2]|0;if((d[(c[f>>2]|0)+66>>0]|0|0)==4){c[e>>2]=c[b+60>>2];h=c[e>>2]|0;i=j;return h|0}a[b+66>>0]=0;b=(c[f>>2]|0)+40|0;c[g>>2]=bF(c[f>>2]|0,c[(c[f>>2]|0)+48>>2]|0,c[b>>2]|0,c[b+4>>2]|0,0,h)|0;if(((c[g>>2]|0)==0?(Kd(c[(c[f>>2]|0)+48>>2]|0),c[(c[f>>2]|0)+48>>2]=0,b=(c[f>>2]|0)+60|0,c[b>>2]=c[b>>2]|c[h>>2],(c[(c[f>>2]|0)+60>>2]|0)!=0):0)?(d[(c[f>>2]|0)+66>>0]|0|0)==1:0)a[(c[f>>2]|0)+66>>0]=2;c[e>>2]=c[g>>2];h=c[e>>2]|0;i=j;return h|0}function XE(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[h>>2]=e;c[j>>2]=f;c[k>>2]=c[(c[h>>2]|0)+4>>2];if((a[(c[h>>2]|0)+68>>0]|0)>=19){c[g>>2]=Lj(60332)|0;e=c[g>>2]|0;i=l;return e|0}else{b[(c[h>>2]|0)+16+18>>1]=0;e=(c[h>>2]|0)+64|0;a[e>>0]=d[e>>0]&-7;e=(c[h>>2]|0)+68|0;a[e>>0]=(a[e>>0]|0)+1<<24>>24;b[(c[h>>2]|0)+80+(a[(c[h>>2]|0)+68>>0]<<1)>>1]=0;c[g>>2]=_E(c[k>>2]|0,c[j>>2]|0,(c[h>>2]|0)+120+(a[(c[h>>2]|0)+68>>0]<<2)|0,c[h>>2]|0,d[(c[h>>2]|0)+65>>0]|0)|0;e=c[g>>2]|0;i=l;return e|0}return 0}function YE(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;k=n+16|0;l=n+12|0;j=n+8|0;m=n+4|0;h=n;c[l>>2]=f;c[m>>2]=0;c[h>>2]=0;while(1){f=c[(c[l>>2]|0)+120+(a[(c[l>>2]|0)+68>>0]<<2)>>2]|0;c[h>>2]=f;g=c[h>>2]|0;if(!((a[f+4>>0]|0)!=0^1)){f=5;break}c[j>>2]=$q((c[(c[h>>2]|0)+56>>2]|0)+((d[g+5>>0]|0)+8)|0)|0;b[(c[l>>2]|0)+80+(a[(c[l>>2]|0)+68>>0]<<1)>>1]=b[(c[h>>2]|0)+18>>1]|0;c[m>>2]=XE(c[l>>2]|0,c[j>>2]|0)|0;if(c[m>>2]|0){f=4;break}}if((f|0)==4){c[k>>2]=c[m>>2];m=c[k>>2]|0;i=n;return m|0}else if((f|0)==5){b[(c[l>>2]|0)+80+(a[(c[l>>2]|0)+68>>0]<<1)>>1]=(e[g+18>>1]|0)-1;c[k>>2]=0;m=c[k>>2]|0;i=n;return m|0}return 0}function ZE(e){e=e|0;var f=0,g=0,h=0;f=i;i=i+16|0;g=f;c[g>>2]=e;b[(c[g>>2]|0)+16+18>>1]=0;h=(c[g>>2]|0)+64|0;a[h>>0]=(d[h>>0]|0)&-7;h=(c[g>>2]|0)+68|0;e=a[h>>0]|0;a[h>>0]=e+-1<<24>>24;sB(c[(c[g>>2]|0)+120+(e<<24>>24<<2)>>2]|0);i=f;return}function _E(b,f,g,h,j){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+32|0;k=s+28|0;l=s+24|0;m=s+20|0;n=s+16|0;o=s+12|0;p=s+8|0;r=s+4|0;q=s;c[l>>2]=b;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=j;g=c[m>>2]|0;a:do if(g>>>0<=($E(c[l>>2]|0)|0)>>>0){c[r>>2]=sg(c[c[l>>2]>>2]|0,c[m>>2]|0,q,c[p>>2]|0)|0;if(!(c[r>>2]|0)){g=It(c[q>>2]|0)|0;c[c[n>>2]>>2]=g;if((d[c[c[n>>2]>>2]>>0]|0|0)==0?(aF(c[q>>2]|0,c[m>>2]|0,c[l>>2]|0)|0,c[r>>2]=Kt(c[c[n>>2]>>2]|0)|0,(c[r>>2]|0)!=0):0){qB(c[c[n>>2]>>2]|0);break}do if(c[o>>2]|0){if((e[(c[c[n>>2]>>2]|0)+18>>1]|0|0)>=1?(d[(c[c[n>>2]>>2]|0)+2>>0]|0|0)==(d[(c[o>>2]|0)+69>>0]|0|0):0)break;c[r>>2]=Lj(57580)|0;qB(c[c[n>>2]>>2]|0);break a}while(0);c[k>>2]=0;r=c[k>>2]|0;i=s;return r|0}}else c[r>>2]=Lj(57558)|0;while(0);if(c[o>>2]|0){g=(c[o>>2]|0)+68|0;a[g>>0]=(a[g>>0]|0)+-1<<24>>24}c[k>>2]=c[r>>2];r=c[k>>2]|0;i=s;return r|0}function $E(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+44>>2]|0}function aF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;c[j>>2]=It(c[f>>2]|0)|0;if((c[g>>2]|0)==(c[(c[j>>2]|0)+84>>2]|0)){d=c[j>>2]|0;i=k;return d|0}d=tg(c[f>>2]|0)|0;c[(c[j>>2]|0)+56>>2]=d;c[(c[j>>2]|0)+72>>2]=c[f>>2];c[(c[j>>2]|0)+52>>2]=c[h>>2];c[(c[j>>2]|0)+84>>2]=c[g>>2];a[(c[j>>2]|0)+5>>0]=(c[g>>2]|0)==1?100:0;d=c[j>>2]|0;i=k;return d|0}function bF(a,b,d,f,g,h){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+240|0;j=s+36|0;k=s+32|0;l=s+28|0;m=s;n=s+24|0;o=s+20|0;r=s+16|0;q=s+12|0;p=s+8|0;c[k>>2]=a;c[l>>2]=b;b=m;c[b>>2]=d;c[b+4>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=0;if(c[l>>2]|0){c[q>>2]=cF(c[(c[k>>2]|0)+72>>2]|0,s+40|0,200,p)|0;if(!(c[q>>2]|0)){c[j>>2]=7;r=c[j>>2]|0;i=s;return r|0}dF(c[(c[k>>2]|0)+72>>2]|0,c[m>>2]|0,c[l>>2]|0,c[q>>2]|0);if(!(e[(c[q>>2]|0)+8>>1]|0)){Sf(c[(c[(c[k>>2]|0)+72>>2]|0)+12>>2]|0,c[p>>2]|0);c[j>>2]=Lj(56338)|0;r=c[j>>2]|0;i=s;return r|0}}else c[q>>2]=0;h=m;c[r>>2]=eF(c[k>>2]|0,c[q>>2]|0,c[h>>2]|0,c[h+4>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;if(c[p>>2]|0)Sf(c[(c[(c[k>>2]|0)+72>>2]|0)+12>>2]|0,c[p>>2]|0);c[j>>2]=c[r>>2];r=c[j>>2]|0;i=s;return r|0}function cF(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+32|0;h=p+28|0;j=p+24|0;k=p+20|0;q=p+16|0;l=p+12|0;o=p+8|0;n=p+4|0;m=p;c[j>>2]=a;c[k>>2]=d;c[q>>2]=f;c[l>>2]=g;c[n>>2]=8-(c[k>>2]&7)&7;c[m>>2]=16+(((e[(c[j>>2]|0)+6>>1]|0)+1|0)*40|0);if((c[m>>2]|0)>((c[q>>2]|0)+(c[n>>2]|0)|0)){q=c[m>>2]|0;c[o>>2]=yh(c[(c[j>>2]|0)+12>>2]|0,q,((q|0)<0)<<31>>31)|0;c[c[l>>2]>>2]=c[o>>2];if(!(c[o>>2]|0)){c[h>>2]=0;q=c[h>>2]|0;i=p;return q|0}}else{c[o>>2]=(c[k>>2]|0)+(c[n>>2]|0);c[c[l>>2]>>2]=0}c[(c[o>>2]|0)+4>>2]=(c[o>>2]|0)+16;c[c[o>>2]>>2]=c[j>>2];b[(c[o>>2]|0)+8>>1]=(e[(c[j>>2]|0)+6>>1]|0)+1;c[h>>2]=c[o>>2];q=c[h>>2]|0;i=p;return q|0}function dF(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=i;i=i+48|0;k=u+36|0;l=u+32|0;v=u+28|0;s=u+24|0;m=u+20|0;n=u+16|0;o=u+12|0;t=u+40|0;r=u+8|0;p=u+4|0;q=u;c[k>>2]=f;c[l>>2]=g;c[v>>2]=h;c[s>>2]=j;c[m>>2]=c[v>>2];c[p>>2]=c[(c[s>>2]|0)+4>>2];a[(c[s>>2]|0)+10>>0]=0;g=c[m>>2]|0;if((d[c[m>>2]>>0]|0|0)<128){c[r>>2]=d[g>>0];g=1}else g=(tF(g,r)|0)&255;c[o>>2]=g&255;c[n>>2]=c[r>>2];b[t>>1]=0;while(1){if((c[o>>2]|0)>>>0>=(c[r>>2]|0)>>>0){g=11;break}if((c[n>>2]|0)>(c[l>>2]|0)){g=11;break}g=(c[m>>2]|0)+(c[o>>2]|0)|0;if((d[(c[m>>2]|0)+(c[o>>2]|0)>>0]|0|0)<128){c[q>>2]=d[g>>0];g=1}else g=(tF(g,q)|0)&255;c[o>>2]=(c[o>>2]|0)+(g&255);a[(c[p>>2]|0)+10>>0]=a[(c[k>>2]|0)+4>>0]|0;c[(c[p>>2]|0)+32>>2]=c[(c[k>>2]|0)+12>>2];c[(c[p>>2]|0)+24>>2]=0;v=vF((c[m>>2]|0)+(c[n>>2]|0)|0,c[q>>2]|0,c[p>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+v;c[p>>2]=(c[p>>2]|0)+40;v=(b[t>>1]|0)+1<<16>>16;b[t>>1]=v;if((v&65535|0)>=(e[(c[s>>2]|0)+8>>1]|0|0)){g=11;break}}if((g|0)==11){b[(c[s>>2]|0)+8>>1]=b[t>>1]|0;i=u;return}}function eF(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;F=i;i=i+96|0;m=F+80|0;n=F+76|0;o=F+72|0;p=F+8|0;q=F+68|0;r=F+64|0;C=F+60|0;E=F+56|0;v=F+52|0;D=F+48|0;u=F+44|0;s=F+40|0;t=F+36|0;B=F+32|0;y=F+28|0;x=F;w=F+24|0;A=F+20|0;z=F+16|0;c[n>>2]=f;c[o>>2]=g;g=p;c[g>>2]=h;c[g+4>>2]=j;c[q>>2]=k;c[r>>2]=l;if(((d[(c[n>>2]|0)+66>>0]|0)==1?(d[(c[n>>2]|0)+64>>0]&2|0)!=0:0)?(d[(c[n>>2]|0)+69>>0]|0)!=0:0){g=(c[n>>2]|0)+16|0;l=p;if((c[g>>2]|0)==(c[l>>2]|0)?(c[g+4>>2]|0)==(c[l+4>>2]|0):0){c[c[r>>2]>>2]=0;c[m>>2]=0;E=c[m>>2]|0;i=F;return E|0}if((d[(c[n>>2]|0)+64>>0]&8|0)!=0?(g=(c[n>>2]|0)+16|0,k=c[g+4>>2]|0,l=p,f=c[l+4>>2]|0,(k|0)<(f|0)|((k|0)==(f|0)?(c[g>>2]|0)>>>0<(c[l>>2]|0)>>>0:0)):0){c[c[r>>2]>>2]=-1;c[m>>2]=0;E=c[m>>2]|0;i=F;return E|0}}if(c[o>>2]|0){c[E>>2]=fF(c[o>>2]|0)|0;a[(c[o>>2]|0)+11>>0]=0}else c[E>>2]=0;c[C>>2]=gF(c[n>>2]|0)|0;if(c[C>>2]|0){c[m>>2]=c[C>>2];E=c[m>>2]|0;i=F;return E|0}if(!(d[(c[n>>2]|0)+66>>0]|0)){c[c[r>>2]>>2]=-1;c[m>>2]=0;E=c[m>>2]|0;i=F;return E|0}a:do{c[B>>2]=c[(c[n>>2]|0)+120+(a[(c[n>>2]|0)+68>>0]<<2)>>2];c[v>>2]=0;c[D>>2]=(e[(c[B>>2]|0)+18>>1]|0)-1;c[u>>2]=c[D>>2]>>1-(c[q>>2]|0);b[(c[n>>2]|0)+80+(a[(c[n>>2]|0)+68>>0]<<1)>>1]=c[u>>2];b:do if(!(c[E>>2]|0)){while(1){c[y>>2]=(c[(c[B>>2]|0)+68>>2]|0)+(e[(c[B>>2]|0)+20>>1]&(d[(c[(c[B>>2]|0)+64>>2]|0)+(c[u>>2]<<1)>>0]<<8|d[(c[(c[B>>2]|0)+64>>2]|0)+(c[u>>2]<<1)+1>>0]));c:do if(a[(c[B>>2]|0)+3>>0]|0)while(1){l=c[y>>2]|0;c[y>>2]=l+1;if(128>(d[l>>0]|0))break c;if((c[y>>2]|0)>>>0>=(c[(c[B>>2]|0)+60>>2]|0)>>>0){j=20;break a}}while(0);St(c[y>>2]|0,x)|0;g=x;k=c[g+4>>2]|0;l=p;f=c[l+4>>2]|0;if((k|0)<(f|0)|((k|0)==(f|0)?(c[g>>2]|0)>>>0<(c[l>>2]|0)>>>0:0)){c[v>>2]=(c[u>>2]|0)+1;if((c[v>>2]|0)>(c[D>>2]|0)){j=23;break}}else{g=x;k=c[g+4>>2]|0;l=p;f=c[l+4>>2]|0;if(!((k|0)>(f|0)|((k|0)==(f|0)?(c[g>>2]|0)>>>0>(c[l>>2]|0)>>>0:0))){j=27;break}c[D>>2]=(c[u>>2]|0)-1;if((c[v>>2]|0)>(c[D>>2]|0)){j=26;break}}c[u>>2]=(c[v>>2]|0)+(c[D>>2]|0)>>1}if((j|0)==23){c[s>>2]=-1;j=51;break}else if((j|0)==26){c[s>>2]=1;j=51;break}else if((j|0)==27){j=0;f=(c[n>>2]|0)+64|0;a[f>>0]=d[f>>0]|2;f=x;g=c[f+4>>2]|0;l=(c[n>>2]|0)+16|0;c[l>>2]=c[f>>2];c[l+4>>2]=g;b[(c[n>>2]|0)+80+(a[(c[n>>2]|0)+68>>0]<<1)>>1]=c[u>>2]; -if(a[(c[B>>2]|0)+4>>0]|0){j=29;break a}c[v>>2]=c[u>>2];break}}else while(1){c[y>>2]=(c[(c[B>>2]|0)+68>>2]|0)+(e[(c[B>>2]|0)+20>>1]&(d[(c[(c[B>>2]|0)+64>>2]|0)+(c[u>>2]<<1)>>0]<<8|d[(c[(c[B>>2]|0)+64>>2]|0)+(c[u>>2]<<1)+1>>0]));c[w>>2]=d[c[y>>2]>>0];do if((c[w>>2]|0)<=(d[(c[B>>2]|0)+7>>0]|0))c[s>>2]=Ob[c[E>>2]&255](c[w>>2]|0,(c[y>>2]|0)+1|0,c[o>>2]|0)|0;else{if((d[(c[y>>2]|0)+1>>0]&128|0)==0?(l=((c[w>>2]&127)<<7)+(d[(c[y>>2]|0)+1>>0]|0)|0,c[w>>2]=l,(l|0)<=(e[(c[B>>2]|0)+10>>1]|0)):0){c[s>>2]=Ob[c[E>>2]&255](c[w>>2]|0,(c[y>>2]|0)+2|0,c[o>>2]|0)|0;break}c[z>>2]=(c[y>>2]|0)+(0-(d[(c[B>>2]|0)+6>>0]|0));Ub[c[(c[B>>2]|0)+80>>2]&255](c[B>>2]|0,c[z>>2]|0,(c[n>>2]|0)+16|0);c[w>>2]=c[(c[n>>2]|0)+16>>2];if((c[w>>2]|0)<2){j=37;break a}l=(c[w>>2]|0)+18|0;c[A>>2]=_f(l,((l|0)<0)<<31>>31)|0;if(!(c[A>>2]|0)){j=39;break a}b[(c[n>>2]|0)+80+(a[(c[n>>2]|0)+68>>0]<<1)>>1]=c[u>>2];c[C>>2]=hF(c[n>>2]|0,0,c[w>>2]|0,c[A>>2]|0,2)|0;if(c[C>>2]|0){j=41;break a}c[s>>2]=Ob[c[E>>2]&255](c[w>>2]|0,c[A>>2]|0,c[o>>2]|0)|0;Kd(c[A>>2]|0)}while(0);if((c[s>>2]|0)<0)c[v>>2]=(c[u>>2]|0)+1;else{if((c[s>>2]|0)<=0){j=47;break a}c[D>>2]=(c[u>>2]|0)-1}if((c[v>>2]|0)>(c[D>>2]|0)){j=51;break b}c[u>>2]=(c[v>>2]|0)+(c[D>>2]|0)>>1}while(0);if((j|0)==51?(j=0,(a[(c[B>>2]|0)+4>>0]|0)!=0):0){j=52;break}h=c[B>>2]|0;if((c[v>>2]|0)>=(e[(c[B>>2]|0)+18>>1]|0))c[t>>2]=$q((c[(c[B>>2]|0)+56>>2]|0)+((d[h+5>>0]|0)+8)|0)|0;else c[t>>2]=$q((c[h+56>>2]|0)+(e[(c[B>>2]|0)+20>>1]&(d[(c[(c[B>>2]|0)+64>>2]|0)+(c[v>>2]<<1)>>0]<<8|d[(c[(c[B>>2]|0)+64>>2]|0)+(c[v>>2]<<1)+1>>0]))|0)|0;b[(c[n>>2]|0)+80+(a[(c[n>>2]|0)+68>>0]<<1)>>1]=c[v>>2];c[C>>2]=XE(c[n>>2]|0,c[t>>2]|0)|0}while((c[C>>2]|0)==0);if((j|0)==20){c[m>>2]=Lj(60709)|0;E=c[m>>2]|0;i=F;return E|0}else if((j|0)==29){c[c[r>>2]>>2]=0;c[C>>2]=0}else if((j|0)==37)c[C>>2]=Lj(60782)|0;else if((j|0)==39)c[C>>2]=7;else if((j|0)==41)Kd(c[A>>2]|0);else if((j|0)==47){c[c[r>>2]>>2]=0;c[C>>2]=0;b[(c[n>>2]|0)+80+(a[(c[n>>2]|0)+68>>0]<<1)>>1]=c[u>>2];if(a[(c[o>>2]|0)+11>>0]|0)c[C>>2]=11}else if((j|0)==52){b[(c[n>>2]|0)+80+(a[(c[n>>2]|0)+68>>0]<<1)>>1]=c[u>>2];c[c[r>>2]>>2]=c[s>>2];c[C>>2]=0}b[(c[n>>2]|0)+16+18>>1]=0;E=(c[n>>2]|0)+64|0;a[E>>0]=d[E>>0]&-7;c[m>>2]=c[C>>2];E=c[m>>2]|0;i=F;return E|0}function fF(b){b=b|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+8|0;f=h+4|0;g=h;c[f>>2]=b;if(((e[(c[c[f>>2]>>2]|0)+6>>1]|0)+(e[(c[c[f>>2]>>2]|0)+8>>1]|0)|0)<=13){c[g>>2]=e[(c[(c[f>>2]|0)+4>>2]|0)+8>>1];b=(c[f>>2]|0)+12|0;if(a[c[(c[c[f>>2]>>2]|0)+16>>2]>>0]|0){a[b>>0]=1;a[(c[f>>2]|0)+13>>0]=-1}else{a[b>>0]=-1;a[(c[f>>2]|0)+13>>0]=1}if(c[g>>2]&4){c[d>>2]=160;g=c[d>>2]|0;i=h;return g|0}if((c[g>>2]&25|0)==0?(c[(c[c[f>>2]>>2]|0)+20>>2]|0)==0:0){c[d>>2]=161;g=c[d>>2]|0;i=h;return g|0}}c[d>>2]=162;g=c[d>>2]|0;i=h;return g|0}function gF(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[h>>2]=f;c[k>>2]=0;do if((d[(c[h>>2]|0)+66>>0]|0)>=3){f=c[h>>2]|0;if((d[(c[h>>2]|0)+66>>0]|0)!=4){pB(f);break}c[g>>2]=c[f+60>>2];l=c[g>>2]|0;i=m;return l|0}while(0);a:do if((a[(c[h>>2]|0)+68>>0]|0)>=0)while(1){if(!(a[(c[h>>2]|0)+68>>0]|0))break a;n=(c[h>>2]|0)+68|0;f=a[n>>0]|0;a[n>>0]=f+-1<<24>>24;sB(c[(c[h>>2]|0)+120+(f<<24>>24<<2)>>2]|0)}else{f=c[h>>2]|0;if(!(c[(c[h>>2]|0)+52>>2]|0)){a[f+66>>0]=0;c[g>>2]=0;n=c[g>>2]|0;i=m;return n|0}c[k>>2]=_E(c[(c[f>>2]|0)+4>>2]|0,c[(c[h>>2]|0)+52>>2]|0,(c[h>>2]|0)+120|0,0,d[(c[h>>2]|0)+65>>0]|0)|0;f=c[h>>2]|0;if(!(c[k>>2]|0)){a[f+68>>0]=0;a[(c[h>>2]|0)+69>>0]=a[(c[(c[h>>2]|0)+120>>2]|0)+2>>0]|0;break}a[f+66>>0]=0;c[g>>2]=c[k>>2];n=c[g>>2]|0;i=m;return n|0}while(0);c[j>>2]=c[(c[h>>2]|0)+120>>2];if((d[c[j>>2]>>0]|0)!=0?((c[(c[h>>2]|0)+72>>2]|0)==0|0)==(d[(c[j>>2]|0)+2>>0]|0):0){b[(c[h>>2]|0)+80>>1]=0;b[(c[h>>2]|0)+16+18>>1]=0;n=(c[h>>2]|0)+64|0;a[n>>0]=d[n>>0]&-15;do if((e[(c[j>>2]|0)+18>>1]|0)>0)a[(c[h>>2]|0)+66>>0]=1;else{if(a[(c[j>>2]|0)+4>>0]|0){a[(c[h>>2]|0)+66>>0]=0;break}if((c[(c[j>>2]|0)+84>>2]|0)==1){c[l>>2]=$q((c[(c[j>>2]|0)+56>>2]|0)+((d[(c[j>>2]|0)+5>>0]|0)+8)|0)|0;a[(c[h>>2]|0)+66>>0]=1;c[k>>2]=XE(c[h>>2]|0,c[l>>2]|0)|0;break}c[g>>2]=Lj(60470)|0;n=c[g>>2]|0;i=m;return n|0}while(0);c[g>>2]=c[k>>2];n=c[g>>2]|0;i=m;return n|0}c[g>>2]=Lj(60459)|0;n=c[g>>2]|0;i=m;return n|0}function hF(b,f,g,h,j){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;C=i;i=i+80|0;k=C+68|0;l=C+64|0;m=C+60|0;n=C+56|0;o=C+52|0;p=C+48|0;t=C+44|0;B=C+40|0;u=C+36|0;A=C+32|0;y=C+28|0;q=C+24|0;x=C+20|0;w=C+16|0;v=C+12|0;s=C+8|0;r=C+4|0;z=C;c[l>>2]=b;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=j;c[B>>2]=0;c[u>>2]=0;c[A>>2]=c[(c[l>>2]|0)+120+(a[(c[l>>2]|0)+68>>0]<<2)>>2];c[y>>2]=c[(c[l>>2]|0)+4>>2];iF(c[l>>2]|0);c[t>>2]=c[(c[l>>2]|0)+16+8>>2];if(((c[t>>2]|0)+(e[(c[l>>2]|0)+16+16>>1]|0)|0)>>>0>((c[(c[A>>2]|0)+56>>2]|0)+(c[(c[y>>2]|0)+36>>2]|0)|0)>>>0){c[k>>2]=Lj(60043)|0;B=c[k>>2]|0;i=C;return B|0}if((c[m>>2]|0)>>>0<(e[(c[l>>2]|0)+16+16>>1]|0)>>>0){c[q>>2]=c[n>>2];if(((c[q>>2]|0)+(c[m>>2]|0)|0)>>>0>(e[(c[l>>2]|0)+16+16>>1]|0)>>>0)c[q>>2]=(e[(c[l>>2]|0)+16+16>>1]|0)-(c[m>>2]|0);c[B>>2]=jF((c[t>>2]|0)+(c[m>>2]|0)|0,c[o>>2]|0,c[q>>2]|0,c[p>>2]&1,c[(c[A>>2]|0)+72>>2]|0)|0;c[m>>2]=0;c[o>>2]=(c[o>>2]|0)+(c[q>>2]|0);c[n>>2]=(c[n>>2]|0)-(c[q>>2]|0)}else c[m>>2]=(c[m>>2]|0)-(e[(c[l>>2]|0)+16+16>>1]|0);a:do if((c[B>>2]|0)==0&(c[n>>2]|0)>>>0>0){c[x>>2]=(c[(c[y>>2]|0)+36>>2]|0)-4;c[w>>2]=$q((c[t>>2]|0)+(e[(c[l>>2]|0)+16+16>>1]|0)|0)|0;if((c[p>>2]|0)!=2?(d[(c[l>>2]|0)+64>>0]&4|0)==0:0){c[v>>2]=(((c[(c[l>>2]|0)+16+12>>2]|0)-(e[(c[l>>2]|0)+16+16>>1]|0)+(c[x>>2]|0)-1|0)>>>0)/((c[x>>2]|0)>>>0)|0;do if((c[v>>2]|0)>(c[(c[l>>2]|0)+56>>2]|0)){c[s>>2]=bg(c[(c[l>>2]|0)+12>>2]|0,c[v>>2]<<1<<2,0)|0;if(!(c[s>>2]|0)){c[B>>2]=7;break}else{c[(c[l>>2]|0)+56>>2]=c[v>>2]<<1;c[(c[l>>2]|0)+12>>2]=c[s>>2];break}}while(0);if(!(c[B>>2]|0)){kR(c[(c[l>>2]|0)+12>>2]|0,0,c[v>>2]<<2|0)|0;A=(c[l>>2]|0)+64|0;a[A>>0]=d[A>>0]|4}}if((d[(c[l>>2]|0)+64>>0]&4|0)!=0?(c[(c[(c[l>>2]|0)+12>>2]|0)+((((c[m>>2]|0)>>>0)/((c[x>>2]|0)>>>0)|0)<<2)>>2]|0)!=0:0){c[u>>2]=((c[m>>2]|0)>>>0)/((c[x>>2]|0)>>>0)|0;c[w>>2]=c[(c[(c[l>>2]|0)+12>>2]|0)+(c[u>>2]<<2)>>2];c[m>>2]=((c[m>>2]|0)>>>0)%((c[x>>2]|0)>>>0)|0}while(1){if(!((c[B>>2]|0)==0&(c[n>>2]|0)>>>0>0&(c[w>>2]|0)!=0))break a;if(d[(c[l>>2]|0)+64>>0]&4)c[(c[(c[l>>2]|0)+12>>2]|0)+(c[u>>2]<<2)>>2]=c[w>>2];if((c[m>>2]|0)>>>0>=(c[x>>2]|0)>>>0){if(c[(c[(c[l>>2]|0)+12>>2]|0)+((c[u>>2]|0)+1<<2)>>2]|0)c[w>>2]=c[(c[(c[l>>2]|0)+12>>2]|0)+((c[u>>2]|0)+1<<2)>>2];else c[B>>2]=kF(c[y>>2]|0,c[w>>2]|0,0,w)|0;c[m>>2]=(c[m>>2]|0)-(c[x>>2]|0)}else{c[r>>2]=c[n>>2];if(((c[r>>2]|0)+(c[m>>2]|0)|0)>>>0>(c[x>>2]|0)>>>0)c[r>>2]=(c[x>>2]|0)-(c[m>>2]|0);c[B>>2]=sg(c[c[y>>2]>>2]|0,c[w>>2]|0,z,(c[p>>2]&1|0)==0?2:0)|0;if(!(c[B>>2]|0)){c[t>>2]=tg(c[z>>2]|0)|0;c[w>>2]=$q(c[t>>2]|0)|0;c[B>>2]=jF((c[t>>2]|0)+((c[m>>2]|0)+4)|0,c[o>>2]|0,c[r>>2]|0,c[p>>2]&1,c[z>>2]|0)|0;vg(c[z>>2]|0);c[m>>2]=0}c[n>>2]=(c[n>>2]|0)-(c[r>>2]|0);c[o>>2]=(c[o>>2]|0)+(c[r>>2]|0)}c[u>>2]=(c[u>>2]|0)+1}}while(0);if((c[B>>2]|0)==0&(c[n>>2]|0)>>>0>0){c[k>>2]=Lj(60200)|0;B=c[k>>2]|0;i=C;return B|0}else{c[k>>2]=c[B>>2];B=c[k>>2]|0;i=C;return B|0}return 0}function iF(b){b=b|0;var f=0,g=0,h=0;h=i;i=i+16|0;f=h+4|0;g=h;c[f>>2]=b;if(e[(c[f>>2]|0)+16+18>>1]|0){i=h;return}c[g>>2]=a[(c[f>>2]|0)+68>>0];b=(c[f>>2]|0)+64|0;a[b>>0]=d[b>>0]|2;oF(c[(c[f>>2]|0)+120+(c[g>>2]<<2)>>2]|0,e[(c[f>>2]|0)+80+(c[g>>2]<<1)>>1]|0,(c[f>>2]|0)+16|0);i=h;return}function jF(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,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;g=n+24|0;h=n+20|0;j=n+16|0;k=n+12|0;o=n+8|0;l=n+4|0;m=n;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[o>>2]=e;c[l>>2]=f;do if(c[o>>2]|0){c[m>>2]=Dg(c[l>>2]|0)|0;if(!(c[m>>2]|0)){iR(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;break}c[g>>2]=c[m>>2];o=c[g>>2]|0;i=n;return o|0}else iR(c[j>>2]|0,c[h>>2]|0,c[k>>2]|0)|0;while(0);c[g>>2]=0;o=c[g>>2]|0;i=n;return o|0}function kF(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;h=s+32|0;j=s+28|0;q=s+24|0;k=s+20|0;n=s+16|0;o=s+12|0;r=s+8|0;p=s+4|0;m=s;l=s+36|0;c[h>>2]=b;c[j>>2]=e;c[q>>2]=f;c[k>>2]=g;c[n>>2]=0;c[o>>2]=0;c[r>>2]=0;if(a[(c[h>>2]|0)+17>>0]|0){c[m>>2]=(c[j>>2]|0)+1;while(1){f=lF(c[h>>2]|0,c[m>>2]|0)|0;if((f|0)==(c[m>>2]|0))b=1;else b=(c[m>>2]|0)==((((c[381]|0)>>>0)/((c[(c[h>>2]|0)+32>>2]|0)>>>0)|0)+1|0);e=c[m>>2]|0;if(!b)break;c[m>>2]=e+1}if(((e>>>0<=($E(c[h>>2]|0)|0)>>>0?(c[r>>2]=mF(c[h>>2]|0,c[m>>2]|0,l,p)|0,(c[r>>2]|0)==0):0)?(d[l>>0]|0)==4:0)?(c[p>>2]|0)==(c[j>>2]|0):0){c[n>>2]=c[m>>2];c[r>>2]=101}}if((c[r>>2]|0)==0?(c[r>>2]=nF(c[h>>2]|0,c[j>>2]|0,o,(c[q>>2]|0)==0?2:0)|0,(c[r>>2]|0)==0):0)c[n>>2]=$q(c[(c[o>>2]|0)+56>>2]|0)|0;c[c[k>>2]>>2]=c[n>>2];e=c[o>>2]|0;if(c[q>>2]|0){c[c[q>>2]>>2]=e;q=c[r>>2]|0;q=(q|0)==101;r=c[r>>2]|0;r=q?0:r;i=s;return r|0}else{qB(e);q=c[r>>2]|0;q=(q|0)==101;r=c[r>>2]|0;r=q?0:r;i=s;return r|0}return 0}function lF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;d=k+20|0;e=k+16|0;f=k+12|0;h=k+8|0;g=k+4|0;j=k;c[e>>2]=a;c[f>>2]=b;if((c[f>>2]|0)>>>0<2){c[d>>2]=0;j=c[d>>2]|0;i=k;return j|0}c[h>>2]=(((c[(c[e>>2]|0)+36>>2]|0)>>>0)/5|0)+1;c[g>>2]=(((c[f>>2]|0)-2|0)>>>0)/((c[h>>2]|0)>>>0)|0;c[j>>2]=(_(c[g>>2]|0,c[h>>2]|0)|0)+2;if((c[j>>2]|0)==((((c[381]|0)>>>0)/((c[(c[e>>2]|0)+32>>2]|0)>>>0)|0)+1|0))c[j>>2]=(c[j>>2]|0)+1;c[d>>2]=c[j>>2];j=c[d>>2]|0;i=k;return j|0}function mF(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+48|0;h=r+36|0;s=r+32|0;j=r+28|0;k=r+24|0;l=r+20|0;o=r+16|0;m=r+12|0;p=r+8|0;n=r+4|0;q=r;c[s>>2]=b;c[j>>2]=e;c[k>>2]=f;c[l>>2]=g;c[m>>2]=lF(c[s>>2]|0,c[j>>2]|0)|0;c[q>>2]=sg(c[c[s>>2]>>2]|0,c[m>>2]|0,o,0)|0;if(c[q>>2]|0){c[h>>2]=c[q>>2];s=c[h>>2]|0;i=r;return s|0}c[p>>2]=tg(c[o>>2]|0)|0;c[n>>2]=((c[j>>2]|0)-(c[m>>2]|0)-1|0)*5;if((c[n>>2]|0)<0){vg(c[o>>2]|0);c[h>>2]=Lj(56557)|0;s=c[h>>2]|0;i=r;return s|0}a[c[k>>2]>>0]=a[(c[p>>2]|0)+(c[n>>2]|0)>>0]|0;if(c[l>>2]|0){s=$q((c[p>>2]|0)+((c[n>>2]|0)+1)|0)|0;c[c[l>>2]>>2]=s}vg(c[o>>2]|0);if((d[c[k>>2]>>0]|0|0)>=1?(d[c[k>>2]>>0]|0|0)<=5:0){c[h>>2]=0;s=c[h>>2]|0;i=r;return s|0}c[h>>2]=Lj(56565)|0;s=c[h>>2]|0;i=r;return s|0}function nF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;f=m+24|0;g=m+20|0;h=m+16|0;j=m+12|0;n=m+8|0;l=m+4|0;k=m;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[n>>2]=e;c[l>>2]=sg(c[c[g>>2]>>2]|0,c[h>>2]|0,k,c[n>>2]|0)|0;if(c[l>>2]|0){c[f>>2]=c[l>>2];n=c[f>>2]|0;i=m;return n|0}else{n=aF(c[k>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;c[c[j>>2]>>2]=n;c[f>>2]=0;n=c[f>>2]|0;i=m;return n|0}return 0}function oF(a,b,f){a=a|0;b=b|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;i=i+16|0;k=g+8|0;j=g+4|0;h=g;c[k>>2]=a;c[j>>2]=b;c[h>>2]=f;Ub[c[(c[k>>2]|0)+80>>2]&255](c[k>>2]|0,(c[(c[k>>2]|0)+56>>2]|0)+((e[(c[k>>2]|0)+20>>1]|0)&((d[(c[(c[k>>2]|0)+64>>2]|0)+(c[j>>2]<<1)>>0]|0)<<8|(d[(c[(c[k>>2]|0)+64>>2]|0)+(c[j>>2]<<1)+1>>0]|0)))|0,c[h>>2]|0);i=g;return}function pF(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+64|0;n=s+52|0;o=s+48|0;p=s+44|0;q=s+40|0;h=s+36|0;t=s+32|0;r=s+28|0;m=s+24|0;l=s+16|0;k=s+8|0;j=s;c[o>>2]=b;c[p>>2]=f;c[q>>2]=g;c[h>>2]=(c[p>>2]|0)+(d[c[p>>2]>>0]&63);c[t>>2]=d[(c[p>>2]|0)+1>>0];b=c[(c[q>>2]|0)+4>>2]|0;f=c[b+4>>2]|0;g=k;c[g>>2]=c[b>>2];c[g+4>>2]=f;do switch(c[t>>2]|0){case 1:{m=a[c[h>>2]>>0]|0;t=j;c[t>>2]=m;c[t+4>>2]=((m|0)<0)<<31>>31;break}case 2:{m=a[c[h>>2]>>0]<<8|d[(c[h>>2]|0)+1>>0];t=j;c[t>>2]=m;c[t+4>>2]=((m|0)<0)<<31>>31;break}case 3:{m=a[c[h>>2]>>0]<<16|d[(c[h>>2]|0)+1>>0]<<8|d[(c[h>>2]|0)+2>>0];t=j;c[t>>2]=m;c[t+4>>2]=((m|0)<0)<<31>>31;break}case 4:{c[m>>2]=d[c[h>>2]>>0]<<24|d[(c[h>>2]|0)+1>>0]<<16|d[(c[h>>2]|0)+2>>0]<<8|d[(c[h>>2]|0)+3>>0];m=c[m>>2]|0;t=j;c[t>>2]=m;c[t+4>>2]=((m|0)<0)<<31>>31;break}case 5:{m=a[c[h>>2]>>0]<<8|d[(c[h>>2]|0)+1>>0];t=j;c[t>>2]=gR(d[(c[h>>2]|0)+2>>0]<<24|d[(c[h>>2]|0)+2+1>>0]<<16|d[(c[h>>2]|0)+2+2>>0]<<8|d[(c[h>>2]|0)+2+3>>0]|0,0,rR(0,1,m|0,((m|0)<0)<<31>>31|0)|0,C|0)|0;c[t+4>>2]=C;break}case 6:{t=l;c[t>>2]=d[c[h>>2]>>0]<<24|d[(c[h>>2]|0)+1>>0]<<16|d[(c[h>>2]|0)+2>>0]<<8|d[(c[h>>2]|0)+3>>0];c[t+4>>2]=0;t=c[l>>2]|0;m=l;c[m>>2]=d[(c[h>>2]|0)+4>>0]<<24|d[(c[h>>2]|0)+4+1>>0]<<16|d[(c[h>>2]|0)+4+2>>0]<<8|d[(c[h>>2]|0)+4+3>>0];c[m+4>>2]=t;m=c[l+4>>2]|0;t=j;c[t>>2]=c[l>>2];c[t+4>>2]=m;break}case 8:{t=j;c[t>>2]=0;c[t+4>>2]=0;break}case 9:{t=j;c[t>>2]=1;c[t+4>>2]=0;break}case 7:case 0:{c[n>>2]=rF(c[o>>2]|0,c[p>>2]|0,c[q>>2]|0)|0;t=c[n>>2]|0;i=s;return t|0}default:{c[n>>2]=rF(c[o>>2]|0,c[p>>2]|0,c[q>>2]|0)|0;t=c[n>>2]|0;i=s;return t|0}}while(0);m=k;g=c[m+4>>2]|0;t=j;l=c[t+4>>2]|0;do if(!((g|0)>(l|0)|((g|0)==(l|0)?(c[m>>2]|0)>>>0>(c[t>>2]|0)>>>0:0))){m=k;k=c[m+4>>2]|0;t=j;l=c[t+4>>2]|0;h=c[q>>2]|0;if((k|0)<(l|0)|((k|0)==(l|0)?(c[m>>2]|0)>>>0<(c[t>>2]|0)>>>0:0)){c[r>>2]=a[h+13>>0];break}if((e[h+8>>1]|0)>1){c[r>>2]=sF(c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,1)|0;break}else{c[r>>2]=a[(c[q>>2]|0)+10>>0];a[(c[q>>2]|0)+14>>0]=1;break}}else c[r>>2]=a[(c[q>>2]|0)+12>>0];while(0);c[n>>2]=c[r>>2];t=c[n>>2]|0;i=s;return t|0}function qF(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;q=s+36|0;j=s+32|0;k=s+28|0;l=s+24|0;m=s+20|0;h=s+16|0;r=s+12|0;n=s+8|0;o=s+4|0;p=s;c[j>>2]=b;c[k>>2]=f;c[l>>2]=g;c[m>>2]=c[k>>2];b=(c[m>>2]|0)+1|0;if((d[(c[m>>2]|0)+1>>0]|0)<128)c[h>>2]=d[b>>0];else tF(b,h)|0;do if((c[h>>2]|0)>=12){if(!(c[h>>2]&1)){c[r>>2]=a[(c[l>>2]|0)+13>>0];break}c[p>>2]=d[c[m>>2]>>0];c[o>>2]=((c[h>>2]|0)-12|0)/2|0;if(((c[p>>2]|0)+(c[o>>2]|0)|0)>(c[j>>2]|0)){r=(Lj(71970)|0)&255;a[(c[l>>2]|0)+11>>0]=r;c[q>>2]=0;r=c[q>>2]|0;i=s;return r|0}if((c[(c[(c[l>>2]|0)+4>>2]|0)+12>>2]|0)<(c[o>>2]|0))b=c[(c[(c[l>>2]|0)+4>>2]|0)+12>>2]|0;else b=c[o>>2]|0;c[n>>2]=b;c[r>>2]=vQ((c[m>>2]|0)+(c[p>>2]|0)|0,c[(c[(c[l>>2]|0)+4>>2]|0)+16>>2]|0,c[n>>2]|0)|0;if(c[r>>2]|0){b=c[l>>2]|0;if((c[r>>2]|0)>0){c[r>>2]=a[b+13>>0];break}else{c[r>>2]=a[b+12>>0];break}}c[r>>2]=(c[o>>2]|0)-(c[(c[(c[l>>2]|0)+4>>2]|0)+12>>2]|0);if(!(c[r>>2]|0))if((e[(c[l>>2]|0)+8>>1]|0)>1){c[r>>2]=sF(c[j>>2]|0,c[k>>2]|0,c[l>>2]|0,1)|0;break}else{c[r>>2]=a[(c[l>>2]|0)+10>>0];a[(c[l>>2]|0)+14>>0]=1;break}else{b=c[l>>2]|0;if((c[r>>2]|0)>0){c[r>>2]=a[b+13>>0];break}else{c[r>>2]=a[b+12>>0];break}}}else c[r>>2]=a[(c[l>>2]|0)+12>>0];while(0);c[q>>2]=c[r>>2];r=c[q>>2]|0;i=s;return r|0}function rF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;d=sF(c[h>>2]|0,c[g>>2]|0,c[f>>2]|0,0)|0;i=e;return d|0}function sF(f,g,j,k){f=f|0;g=g|0;j=j|0;k=k|0;var 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,D=0,E=0,F=0,G=0,H=0;F=i;i=i+128|0;A=F+124|0;m=F+120|0;H=F+116|0;B=F+112|0;G=F+108|0;o=F+104|0;p=F+100|0;z=F+96|0;q=F+92|0;E=F+88|0;w=F+84|0;D=F+80|0;n=F+76|0;s=F+16|0;l=F+72|0;y=F+68|0;r=F+8|0;x=F;t=F+64|0;v=F+60|0;u=F+56|0;c[m>>2]=f;c[H>>2]=g;c[B>>2]=j;c[G>>2]=k;c[E>>2]=0;c[w>>2]=c[(c[B>>2]|0)+4>>2];c[D>>2]=c[c[B>>2]>>2];c[n>>2]=c[H>>2];f=c[n>>2]|0;do if(c[G>>2]|0){k=(c[n>>2]|0)+1|0;if((d[f+1>>0]|0)<128){c[l>>2]=d[k>>0];k=1}else k=(tF(k,l)|0)&255;c[q>>2]=1+(k&255);c[z>>2]=d[c[n>>2]>>0];H=c[z>>2]|0;c[o>>2]=H+(uF(c[l>>2]|0)|0);c[p>>2]=1;c[w>>2]=(c[w>>2]|0)+40}else{k=c[n>>2]|0;if((d[f>>0]|0)<128){c[z>>2]=d[k>>0];k=1}else k=(tF(k,z)|0)&255;c[q>>2]=k&255;c[o>>2]=c[z>>2];if((c[o>>2]|0)>>>0<=(c[m>>2]|0)>>>0){c[p>>2]=0;break}H=(Lj(71688)|0)&255;a[(c[B>>2]|0)+11>>0]=H;c[A>>2]=0;H=c[A>>2]|0;i=F;return H|0}while(0);a:while(1){do if(e[(c[w>>2]|0)+8>>1]&4){c[y>>2]=d[(c[n>>2]|0)+(c[q>>2]|0)>>0];if((c[y>>2]|0)>>>0>=10){c[E>>2]=1;break}if(!(c[y>>2]|0)){c[E>>2]=-1;break}if((c[y>>2]|0)==7){vF((c[n>>2]|0)+(c[o>>2]|0)|0,c[y>>2]|0,s)|0;H=c[w>>2]|0;c[E>>2]=0-(wF(c[H>>2]|0,c[H+4>>2]|0,+h[s>>3])|0);break}j=xF(c[y>>2]|0,(c[n>>2]|0)+(c[o>>2]|0)|0)|0;H=r;c[H>>2]=j;c[H+4>>2]=C;H=c[w>>2]|0;j=c[H+4>>2]|0;G=x;c[G>>2]=c[H>>2];c[G+4>>2]=j;G=r;j=c[G+4>>2]|0;H=x;l=c[H+4>>2]|0;if((j|0)<(l|0)|((j|0)==(l|0)?(c[G>>2]|0)>>>0<(c[H>>2]|0)>>>0:0)){c[E>>2]=-1;break}G=r;j=c[G+4>>2]|0;H=x;l=c[H+4>>2]|0;if((j|0)>(l|0)|((j|0)==(l|0)?(c[G>>2]|0)>>>0>(c[H>>2]|0)>>>0:0))c[E>>2]=1}else{if(e[(c[w>>2]|0)+8>>1]&8){c[y>>2]=d[(c[n>>2]|0)+(c[q>>2]|0)>>0];if((c[y>>2]|0)>>>0>=10){c[E>>2]=1;break}if(!(c[y>>2]|0)){c[E>>2]=-1;break}vF((c[n>>2]|0)+(c[o>>2]|0)|0,c[y>>2]|0,s)|0;if((c[y>>2]|0)!=7){H=s;c[E>>2]=wF(c[H>>2]|0,c[H+4>>2]|0,+h[c[w>>2]>>3])|0;break}if(+h[s>>3]<+h[c[w>>2]>>3]){c[E>>2]=-1;break}if(!(+h[s>>3]>+h[c[w>>2]>>3]))break;c[E>>2]=1;break}if(!(e[(c[w>>2]|0)+8>>1]&2)){k=d[(c[n>>2]|0)+(c[q>>2]|0)>>0]|0;if(!(e[(c[w>>2]|0)+8>>1]&16)){c[y>>2]=k;c[E>>2]=(c[y>>2]|0)!=0&1;break}f=(c[n>>2]|0)+(c[q>>2]|0)|0;if((k|0)<128)c[y>>2]=d[f>>0];else tF(f,y)|0;if((c[y>>2]|0)>>>0>=12?(c[y>>2]&1|0)==0:0){c[v>>2]=(((c[y>>2]|0)-12|0)>>>0)/2|0;if(((c[o>>2]|0)+(c[v>>2]|0)|0)>>>0>(c[m>>2]|0)>>>0){k=59;break a}if((c[v>>2]|0)<(c[(c[w>>2]|0)+12>>2]|0))k=c[v>>2]|0;else k=c[(c[w>>2]|0)+12>>2]|0;c[u>>2]=k;c[E>>2]=vQ((c[n>>2]|0)+(c[o>>2]|0)|0,c[(c[w>>2]|0)+16>>2]|0,c[u>>2]|0)|0;if(c[E>>2]|0)break;c[E>>2]=(c[v>>2]|0)-(c[(c[w>>2]|0)+12>>2]|0);break}c[E>>2]=-1;break}k=(c[n>>2]|0)+(c[q>>2]|0)|0;if((d[(c[n>>2]|0)+(c[q>>2]|0)>>0]|0)<128)c[y>>2]=d[k>>0];else tF(k,y)|0;if((c[y>>2]|0)>>>0<12){c[E>>2]=-1;break}if(!(c[y>>2]&1)){c[E>>2]=1;break}c[s+12>>2]=(((c[y>>2]|0)-12|0)>>>0)/2|0;if(((c[o>>2]|0)+(c[s+12>>2]|0)|0)>>>0>(c[m>>2]|0)>>>0){k=43;break a}if(c[(c[D>>2]|0)+20+(c[p>>2]<<2)>>2]|0){a[s+10>>0]=a[(c[D>>2]|0)+4>>0]|0;c[s+32>>2]=c[(c[D>>2]|0)+12>>2];b[s+8>>1]=2;c[s+16>>2]=(c[n>>2]|0)+(c[o>>2]|0);c[E>>2]=yF(s,c[w>>2]|0,c[(c[D>>2]|0)+20+(c[p>>2]<<2)>>2]|0,(c[B>>2]|0)+11|0)|0;break}if((c[s+12>>2]|0)<(c[(c[w>>2]|0)+12>>2]|0))k=c[s+12>>2]|0;else k=c[(c[w>>2]|0)+12>>2]|0;c[t>>2]=k;c[E>>2]=vQ((c[n>>2]|0)+(c[o>>2]|0)|0,c[(c[w>>2]|0)+16>>2]|0,c[t>>2]|0)|0;if(!(c[E>>2]|0))c[E>>2]=(c[s+12>>2]|0)-(c[(c[w>>2]|0)+12>>2]|0)}while(0);f=c[p>>2]|0;if(c[E>>2]|0){k=67;break}c[p>>2]=f+1;c[w>>2]=(c[w>>2]|0)+40;H=uF(c[y>>2]|0)|0;c[o>>2]=(c[o>>2]|0)+H;H=zF(c[y>>2]|0,0)|0;c[q>>2]=(c[q>>2]|0)+H;if((c[q>>2]|0)>>>0>=(c[z>>2]|0)>>>0){k=73;break}if((c[p>>2]|0)>=(e[(c[B>>2]|0)+8>>1]|0)){k=73;break}if((c[o>>2]|0)>>>0>(c[m>>2]|0)>>>0){k=73;break}}if((k|0)==43){H=(Lj(71763)|0)&255;a[(c[B>>2]|0)+11>>0]=H;c[A>>2]=0;H=c[A>>2]|0;i=F;return H|0}else if((k|0)==59){H=(Lj(71792)|0)&255;a[(c[B>>2]|0)+11>>0]=H;c[A>>2]=0;H=c[A>>2]|0;i=F;return H|0}else if((k|0)==67){if(a[(c[(c[D>>2]|0)+16>>2]|0)+f>>0]|0)c[E>>2]=0-(c[E>>2]|0);c[A>>2]=c[E>>2];H=c[A>>2]|0;i=F;return H|0}else if((k|0)==73){a[(c[B>>2]|0)+14>>0]=1;c[A>>2]=a[(c[B>>2]|0)+10>>0];H=c[A>>2]|0;i=F;return H|0}return 0}function tF(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;f=n+25|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;m=n;l=n+24|0;c[g>>2]=b;c[h>>2]=e;c[j>>2]=d[c[g>>2]>>0];c[g>>2]=(c[g>>2]|0)+1;c[k>>2]=d[c[g>>2]>>0];if(!(c[k>>2]&128)){c[j>>2]=c[j>>2]&127;c[j>>2]=c[j>>2]<<7;c[c[h>>2]>>2]=c[j>>2]|c[k>>2];a[f>>0]=2;m=a[f>>0]|0;i=n;return m|0}c[g>>2]=(c[g>>2]|0)+1;c[j>>2]=c[j>>2]<<14;c[j>>2]=c[j>>2]|(d[c[g>>2]>>0]|0);if(!(c[j>>2]&128)){c[j>>2]=c[j>>2]&2080895;c[k>>2]=c[k>>2]&127;c[k>>2]=c[k>>2]<<7;c[c[h>>2]>>2]=c[j>>2]|c[k>>2];a[f>>0]=3;m=a[f>>0]|0;i=n;return m|0}c[g>>2]=(c[g>>2]|0)+-2;a[l>>0]=St(c[g>>2]|0,m)|0;e=m;if(0!=(c[e+4>>2]|0)?1:(c[m>>2]|0)!=(c[e>>2]|0))c[c[h>>2]>>2]=-1;else c[c[h>>2]>>2]=c[m>>2];a[f>>0]=a[l>>0]|0;m=a[f>>0]|0;i=n;return m|0}function uF(a){a=a|0;var b=0,e=0,f=0;e=i;i=i+16|0;b=e+4|0;f=e;c[f>>2]=a;a=c[f>>2]|0;if((c[f>>2]|0)>>>0>=128){c[b>>2]=((a-12|0)>>>0)/2|0;f=c[b>>2]|0;i=e;return f|0}else{c[b>>2]=d[35916+a>>0];f=c[b>>2]|0;i=e;return f|0}return 0}function vF(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[j>>2]=e;c[k>>2]=f;c[l>>2]=g;switch(c[k>>2]|0){case 0:case 11:case 10:{b[(c[l>>2]|0)+8>>1]=1;c[h>>2]=0;f=c[h>>2]|0;i=m;return f|0}case 1:{g=a[c[j>>2]>>0]|0;f=c[l>>2]|0;c[f>>2]=g;c[f+4>>2]=((g|0)<0)<<31>>31;b[(c[l>>2]|0)+8>>1]=4;c[h>>2]=1;f=c[h>>2]|0;i=m;return f|0}case 2:{g=a[c[j>>2]>>0]<<8|d[(c[j>>2]|0)+1>>0];f=c[l>>2]|0;c[f>>2]=g;c[f+4>>2]=((g|0)<0)<<31>>31;b[(c[l>>2]|0)+8>>1]=4;c[h>>2]=2;f=c[h>>2]|0;i=m;return f|0}case 3:{g=a[c[j>>2]>>0]<<16|d[(c[j>>2]|0)+1>>0]<<8|d[(c[j>>2]|0)+2>>0];f=c[l>>2]|0;c[f>>2]=g;c[f+4>>2]=((g|0)<0)<<31>>31;b[(c[l>>2]|0)+8>>1]=4;c[h>>2]=3;f=c[h>>2]|0;i=m;return f|0}case 4:{g=a[c[j>>2]>>0]<<24|d[(c[j>>2]|0)+1>>0]<<16|d[(c[j>>2]|0)+2>>0]<<8|d[(c[j>>2]|0)+3>>0];f=c[l>>2]|0;c[f>>2]=g;c[f+4>>2]=((g|0)<0)<<31>>31;b[(c[l>>2]|0)+8>>1]=4;c[h>>2]=4;f=c[h>>2]|0;i=m;return f|0}case 5:{f=d[(c[j>>2]|0)+2>>0]<<24|d[(c[j>>2]|0)+2+1>>0]<<16|d[(c[j>>2]|0)+2+2>>0]<<8|d[(c[j>>2]|0)+2+3>>0];g=a[c[j>>2]>>0]<<8|d[(c[j>>2]|0)+1>>0];g=gR(f|0,0,rR(0,1,g|0,((g|0)<0)<<31>>31|0)|0,C|0)|0;f=c[l>>2]|0;c[f>>2]=g;c[f+4>>2]=C;b[(c[l>>2]|0)+8>>1]=4;c[h>>2]=6;f=c[h>>2]|0;i=m;return f|0}case 7:case 6:{c[h>>2]=GF(c[j>>2]|0,c[k>>2]|0,c[l>>2]|0)|0;f=c[h>>2]|0;i=m;return f|0}case 9:case 8:{f=c[l>>2]|0;c[f>>2]=(c[k>>2]|0)-8;c[f+4>>2]=0;b[(c[l>>2]|0)+8>>1]=4;c[h>>2]=0;f=c[h>>2]|0;i=m;return f|0}default:{c[(c[l>>2]|0)+16>>2]=c[j>>2];c[(c[l>>2]|0)+12>>2]=(((c[k>>2]|0)-12|0)>>>0)/2|0;b[(c[l>>2]|0)+8>>1]=b[15534+((c[k>>2]&1)<<1)>>1]|0;c[h>>2]=c[(c[l>>2]|0)+12>>2];f=c[h>>2]|0;i=m;return f|0}}return 0}function wF(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+48|0;e=l+32|0;f=l+24|0;g=l+16|0;k=l+8|0;j=l;m=f;c[m>>2]=a;c[m+4>>2]=b;h[g>>3]=d;if(+h[g>>3]<-9223372036854775808.0){c[e>>2]=1;m=c[e>>2]|0;i=l;return m|0}if(+h[g>>3]>9223372036854775808.0){c[e>>2]=-1;m=c[e>>2]|0;i=l;return m|0}d=+h[g>>3];n=+N(d)>=1.0?d>0.0?~~+$(+M(d/4294967296.0),4294967295.0)>>>0:~~+Z((d-+(~~d>>>0))/4294967296.0)>>>0:0;b=k;c[b>>2]=~~d>>>0;c[b+4>>2]=n;b=f;n=c[b+4>>2]|0;m=k;a=c[m+4>>2]|0;if((n|0)<(a|0)|((n|0)==(a|0)?(c[b>>2]|0)>>>0<(c[m>>2]|0)>>>0:0)){c[e>>2]=-1;n=c[e>>2]|0;i=l;return n|0}m=f;a=c[m+4>>2]|0;n=k;b=c[n+4>>2]|0;if((a|0)>(b|0)|((a|0)==(b|0)?(c[m>>2]|0)>>>0>(c[n>>2]|0)>>>0:0)){n=k;if(((c[n>>2]|0)==0?(c[n+4>>2]|0)==-2147483648:0)&+h[g>>3]>0.0){c[e>>2]=-1;n=c[e>>2]|0;i=l;return n|0}else{c[e>>2]=1;n=c[e>>2]|0;i=l;return n|0}}n=f;h[j>>3]=+((c[n>>2]|0)>>>0)+4294967296.0*+(c[n+4>>2]|0);if(+h[j>>3]<+h[g>>3]){c[e>>2]=-1;n=c[e>>2]|0;i=l;return n|0}if(+h[j>>3]>+h[g>>3]){c[e>>2]=1;n=c[e>>2]|0;i=l;return n|0}else{c[e>>2]=0;n=c[e>>2]|0;i=l;return n|0}return 0}function xF(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+8|0;g=l+24|0;h=l+20|0;k=l+16|0;j=l;c[g>>2]=b;c[h>>2]=e;switch(c[g>>2]|0){case 1:case 0:{j=a[c[h>>2]>>0]|0;k=f;c[k>>2]=j;c[k+4>>2]=((j|0)<0)<<31>>31;break}case 2:{j=a[c[h>>2]>>0]<<8|d[(c[h>>2]|0)+1>>0];k=f;c[k>>2]=j;c[k+4>>2]=((j|0)<0)<<31>>31;break}case 3:{j=a[c[h>>2]>>0]<<16|d[(c[h>>2]|0)+1>>0]<<8|d[(c[h>>2]|0)+2>>0];k=f;c[k>>2]=j;c[k+4>>2]=((j|0)<0)<<31>>31;break}case 4:{c[k>>2]=d[c[h>>2]>>0]<<24|d[(c[h>>2]|0)+1>>0]<<16|d[(c[h>>2]|0)+2>>0]<<8|d[(c[h>>2]|0)+3>>0];j=c[k>>2]|0;k=f;c[k>>2]=j;c[k+4>>2]=((j|0)<0)<<31>>31;break}case 5:{b=d[(c[h>>2]|0)+2>>0]<<24|d[(c[h>>2]|0)+2+1>>0]<<16|d[(c[h>>2]|0)+2+2>>0]<<8|d[(c[h>>2]|0)+2+3>>0];j=a[c[h>>2]>>0]<<8|d[(c[h>>2]|0)+1>>0];k=f;c[k>>2]=gR(b|0,0,rR(0,1,j|0,((j|0)<0)<<31>>31|0)|0,C|0)|0;c[k+4>>2]=C;break}case 6:{k=j;c[k>>2]=d[c[h>>2]>>0]<<24|d[(c[h>>2]|0)+1>>0]<<16|d[(c[h>>2]|0)+2>>0]<<8|d[(c[h>>2]|0)+3>>0];c[k+4>>2]=0;k=c[j>>2]|0;b=j;c[b>>2]=d[(c[h>>2]|0)+4>>0]<<24|d[(c[h>>2]|0)+4+1>>0]<<16|d[(c[h>>2]|0)+4+2>>0]<<8|d[(c[h>>2]|0)+4+3>>0];c[b+4>>2]=k;b=j;j=c[b+4>>2]|0;k=f;c[k>>2]=c[b>>2];c[k+4>>2]=j;break}default:{k=f;c[k>>2]=(c[g>>2]|0)-8;c[k+4>>2]=0}}k=f;C=c[k+4>>2]|0;i=l;return c[k>>2]|0}function yF(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=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;u=i;i=i+128|0;h=u+116|0;j=u+112|0;k=u+108|0;l=u+104|0;m=u+100|0;r=u+96|0;s=u+92|0;t=u+88|0;p=u+84|0;q=u+80|0;n=u+40|0;o=u;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;if((d[(c[j>>2]|0)+10>>0]|0|0)==(d[(c[l>>2]|0)+4>>0]|0|0)){c[h>>2]=Zb[c[(c[l>>2]|0)+12>>2]&255](c[(c[l>>2]|0)+8>>2]|0,c[(c[j>>2]|0)+12>>2]|0,c[(c[j>>2]|0)+16>>2]|0,c[(c[k>>2]|0)+12>>2]|0,c[(c[k>>2]|0)+16>>2]|0)|0;t=c[h>>2]|0;i=u;return t|0}AF(n,c[(c[j>>2]|0)+32>>2]|0,1);AF(o,c[(c[j>>2]|0)+32>>2]|0,1);BF(n,c[j>>2]|0,4096);BF(o,c[k>>2]|0,4096);c[s>>2]=Wg(n,a[(c[l>>2]|0)+4>>0]|0)|0;c[p>>2]=(c[s>>2]|0)==0?0:c[n+12>>2]|0;c[t>>2]=Wg(o,a[(c[l>>2]|0)+4>>0]|0)|0;c[q>>2]=(c[t>>2]|0)==0?0:c[o+12>>2]|0;c[r>>2]=Zb[c[(c[l>>2]|0)+12>>2]&255](c[(c[l>>2]|0)+8>>2]|0,c[p>>2]|0,c[s>>2]|0,c[q>>2]|0,c[t>>2]|0)|0;if(((c[s>>2]|0)==0|(c[t>>2]|0)==0)&(c[m>>2]|0)!=0)a[c[m>>2]>>0]=7;Ug(n);Ug(o);c[h>>2]=c[r>>2];t=c[h>>2]|0;i=u;return t|0}function zF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f;e=f+8|0;g=d;c[g>>2]=a;c[g+4>>2]=b;c[e>>2]=1;while(1){b=d;b=hR(c[b>>2]|0,c[b+4>>2]|0,7)|0;g=C;a=d;c[a>>2]=b;c[a+4>>2]=g;a=c[e>>2]|0;if(!((b|0)!=0|(g|0)!=0))break;c[e>>2]=a+1}i=f;return a|0}function AF(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+4|0;h=f;j=f+8|0;c[g>>2]=a;c[h>>2]=d;b[j>>1]=e;b[(c[g>>2]|0)+8>>1]=b[j>>1]|0;c[(c[g>>2]|0)+32>>2]=c[h>>2];c[(c[g>>2]|0)+24>>2]=0;i=f;return}function BF(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k+8|0;h=k+4|0;j=k;c[g>>2]=a;c[h>>2]=d;c[j>>2]=f;d=c[g>>2]|0;if((e[(c[g>>2]|0)+8>>1]|0)&9312){CF(d,c[h>>2]|0,c[j>>2]|0);i=k;return}f=c[h>>2]|0;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];c[d+16>>2]=c[f+16>>2];if((e[(c[h>>2]|0)+8>>1]|0)&2048){i=k;return}h=(c[g>>2]|0)+8|0;b[h>>1]=(e[h>>1]|0)&-7169;h=(c[g>>2]|0)+8|0;b[h>>1]=e[h>>1]|0|c[j>>2];i=k;return}function CF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;DF(c[h>>2]|0);BF(c[h>>2]|0,c[g>>2]|0,c[f>>2]|0);i=e;return}function DF(a){a=a|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;f=h+4|0;g=h;c[f>>2]=a;if((e[(c[f>>2]|0)+8>>1]|0)&8192)EF(c[f>>2]|0,c[c[f>>2]>>2]|0)|0;a=c[f>>2]|0;do if(!((e[(c[f>>2]|0)+8>>1]|0)&1024)){d=c[f>>2]|0;if((e[a+8>>1]|0)&32){FF(c[d>>2]|0);break}if((e[d+8>>1]|0)&64){c[g>>2]=c[c[f>>2]>>2];c[(c[g>>2]|0)+4>>2]=c[(c[c[g>>2]>>2]|0)+180>>2];c[(c[c[g>>2]>>2]|0)+180>>2]=c[g>>2]}}else Qb[c[a+36>>2]&255](c[(c[f>>2]|0)+16>>2]|0);while(0);b[(c[f>>2]|0)+8>>1]=1;i=h;return}function EF(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+96|0;f=k+80|0;g=k+76|0;j=k+72|0;h=k+40|0;e=k;c[f>>2]=a;c[g>>2]=d;c[j>>2]=0;if(!(c[g>>2]|0)){j=c[j>>2]|0;i=k;return j|0}if(!(c[(c[g>>2]|0)+16>>2]|0)){j=c[j>>2]|0;i=k;return j|0}c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;c[h+24>>2]=0;c[h+28>>2]=0;d=e;a=d+40|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(a|0));b[e+8>>1]=1;c[e+32>>2]=c[(c[f>>2]|0)+32>>2];c[h>>2]=e;c[h+8>>2]=c[f>>2];c[h+4>>2]=c[g>>2];Qb[c[(c[g>>2]|0)+16>>2]&255](h);if((c[(c[f>>2]|0)+24>>2]|0)>0)Sf(c[(c[f>>2]|0)+32>>2]|0,c[(c[f>>2]|0)+20>>2]|0);d=c[f>>2]|0;a=d+40|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(a|0));c[j>>2]=c[h+20>>2];j=c[j>>2]|0;i=k;return j|0}function FF(a){a=a|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=c[c[d>>2]>>2];while(1){if(!(c[e>>2]|0))break;c[f>>2]=c[c[e>>2]>>2];Sf(c[(c[d>>2]|0)+4>>2]|0,c[e>>2]|0);c[e>>2]=c[f>>2]}c[c[d>>2]>>2]=0;b[(c[d>>2]|0)+24>>1]=0;c[(c[d>>2]|0)+8>>2]=0;c[(c[d>>2]|0)+12>>2]=0;c[(c[d>>2]|0)+20>>2]=0;b[(c[d>>2]|0)+26>>1]=1;i=g;return}function GF(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0;k=i;i=i+32|0;n=k+20|0;l=k+16|0;g=k+12|0;j=k;m=k+8|0;c[n>>2]=a;c[l>>2]=e;c[g>>2]=f;f=j;c[f>>2]=(d[c[n>>2]>>0]|0)<<24|(d[(c[n>>2]|0)+1>>0]|0)<<16|(d[(c[n>>2]|0)+2>>0]|0)<<8|(d[(c[n>>2]|0)+3>>0]|0);c[f+4>>2]=0;c[m>>2]=(d[(c[n>>2]|0)+4>>0]|0)<<24|(d[(c[n>>2]|0)+4+1>>0]|0)<<16|(d[(c[n>>2]|0)+4+2>>0]|0)<<8|(d[(c[n>>2]|0)+4+3>>0]|0);f=gR(0,c[j>>2]|0,c[m>>2]|0,0)|0;e=j;c[e>>2]=f;c[e+4>>2]=C;if((c[l>>2]|0)==6){l=j;m=c[l+4>>2]|0;n=c[g>>2]|0;c[n>>2]=c[l>>2];c[n+4>>2]=m;b[(c[g>>2]|0)+8>>1]=4;i=k;return 8}else{n=c[g>>2]|0;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];n=(HF(+h[c[g>>2]>>3])|0)!=0;b[(c[g>>2]|0)+8>>1]=n?1:8;i=k;return 8}return 0}function HF(a){a=+a;var b=0,d=0,e=0,f=0,g=0;d=i;i=i+32|0;g=d+16|0;b=d+24|0;f=d+8|0;e=d;h[g>>3]=a;h[f>>3]=+h[g>>3];h[e>>3]=+h[f>>3];c[b>>2]=+h[f>>3]!=+h[e>>3]&1;i=d;return c[b>>2]|0}function IF(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;h=p+20|0;j=p+16|0;k=p+12|0;n=p+8|0;l=p+4|0;m=p;c[j>>2]=f;c[k>>2]=g;if((d[(c[j>>2]|0)+66>>0]|0)!=1){if((d[(c[j>>2]|0)+66>>0]|0)>=3)f=WE(c[j>>2]|0)|0;else f=0;c[n>>2]=f;if(c[n>>2]|0){c[h>>2]=c[n>>2];o=c[h>>2]|0;i=p;return o|0}if(!(d[(c[j>>2]|0)+66>>0]|0)){c[c[k>>2]>>2]=1;c[h>>2]=0;o=c[h>>2]|0;i=p;return o|0}if((c[(c[j>>2]|0)+60>>2]|0)!=0?(a[(c[j>>2]|0)+66>>0]=1,g=(c[(c[j>>2]|0)+60>>2]|0)>0,c[(c[j>>2]|0)+60>>2]=0,g):0){c[h>>2]=0;o=c[h>>2]|0;i=p;return o|0}}c[m>>2]=c[(c[j>>2]|0)+120+(a[(c[j>>2]|0)+68>>0]<<2)>>2];g=(c[j>>2]|0)+80+(a[(c[j>>2]|0)+68>>0]<<1)|0;f=(b[g>>1]|0)+1<<16>>16;b[g>>1]=f;c[l>>2]=f&65535;f=(a[(c[m>>2]|0)+4>>0]|0)!=0;if((c[l>>2]|0)<(e[(c[m>>2]|0)+18>>1]|0))if(f){c[h>>2]=0;o=c[h>>2]|0;i=p;return o|0}else{c[h>>2]=JF(c[j>>2]|0)|0;o=c[h>>2]|0;i=p;return o|0}if(!f){o=c[j>>2]|0;c[n>>2]=XE(o,$q((c[(c[m>>2]|0)+56>>2]|0)+((d[(c[m>>2]|0)+5>>0]|0)+8)|0)|0)|0;if(c[n>>2]|0){c[h>>2]=c[n>>2];o=c[h>>2]|0;i=p;return o|0}else{c[h>>2]=JF(c[j>>2]|0)|0;o=c[h>>2]|0;i=p;return o|0}}do{if(!(a[(c[j>>2]|0)+68>>0]|0)){o=17;break}ZE(c[j>>2]|0);c[m>>2]=c[(c[j>>2]|0)+120+(a[(c[j>>2]|0)+68>>0]<<2)>>2]}while((e[(c[j>>2]|0)+80+(a[(c[j>>2]|0)+68>>0]<<1)>>1]|0)>=(e[(c[m>>2]|0)+18>>1]|0));if((o|0)==17){c[c[k>>2]>>2]=1;a[(c[j>>2]|0)+66>>0]=0;c[h>>2]=0;o=c[h>>2]|0;i=p;return o|0}if(a[(c[m>>2]|0)+2>>0]|0){c[h>>2]=TE(c[j>>2]|0,c[k>>2]|0)|0;o=c[h>>2]|0;i=p;return o|0}else{c[h>>2]=0;o=c[h>>2]|0;i=p;return o|0}return 0}function JF(b){b=b|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;h=k+8|0;j=k+4|0;g=k;c[f>>2]=b;c[j>>2]=0;while(1){if(c[j>>2]|0){f=5;break}b=c[(c[f>>2]|0)+120+(a[(c[f>>2]|0)+68>>0]<<2)>>2]|0;c[g>>2]=b;if(!((a[b+4>>0]|0)!=0^1)){f=5;break}c[h>>2]=$q((c[(c[g>>2]|0)+56>>2]|0)+(e[(c[g>>2]|0)+20>>1]&(d[(c[(c[g>>2]|0)+64>>2]|0)+(e[(c[f>>2]|0)+80+(a[(c[f>>2]|0)+68>>0]<<1)>>1]<<1)>>0]<<8|d[(c[(c[g>>2]|0)+64>>2]|0)+(e[(c[f>>2]|0)+80+(a[(c[f>>2]|0)+68>>0]<<1)>>1]<<1)+1>>0]))|0)|0;c[j>>2]=XE(c[f>>2]|0,c[h>>2]|0)|0}if((f|0)==5){i=k;return c[j>>2]|0}return 0}function KF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;j=h+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[j>>2]=a;c[d>>2]=b;c[e>>2]=c[c[j>>2]>>2];c[g>>2]=Nv(c[e>>2]|0,0,0,0)|0;if(!(c[g>>2]|0)){j=c[g>>2]|0;i=h;return j|0}j=nh(c[e>>2]|0,c[(c[d>>2]|0)+12>>2]|0)|0;c[(c[g>>2]|0)+8+(((c[c[g>>2]>>2]|0)-1|0)*72|0)+8>>2]=j;c[f>>2]=Dh(c[e>>2]|0,c[(c[(c[d>>2]|0)+4>>2]|0)+20>>2]|0)|0;if(!((c[f>>2]|0)==0|(c[f>>2]|0)>=2)){j=c[g>>2]|0;i=h;return j|0}j=nh(c[e>>2]|0,c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)>>2]|0)|0;c[(c[g>>2]|0)+8+(((c[c[g>>2]>>2]|0)-1|0)*72|0)+4>>2]=j;j=c[g>>2]|0;i=h;return j|0}function LF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=g;return}c[f>>2]=c[(c[e>>2]|0)+28>>2];Zu(c[d>>2]|0,c[(c[f>>2]|0)+16>>2]|0);Vu(c[d>>2]|0,c[(c[f>>2]|0)+20>>2]|0);Wu(c[d>>2]|0,c[(c[f>>2]|0)+8>>2]|0);Zu(c[d>>2]|0,c[(c[e>>2]|0)+12>>2]|0);Sf(c[d>>2]|0,c[e>>2]|0);i=g;return}function MF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h+12|0;d=h+8|0;e=h+4|0;f=h;c[d>>2]=a;c[e>>2]=b;if((c[d>>2]|0)==0|(c[e>>2]|0)==0){c[g>>2]=1;g=c[g>>2]|0;i=h;return g|0}c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[e>>2]>>2]|0)){d=8;break}if((Yy(c[d>>2]|0,c[(c[(c[e>>2]|0)+4>>2]|0)+((c[f>>2]|0)*20|0)+4>>2]|0)|0)>=0){d=6;break}c[f>>2]=(c[f>>2]|0)+1}if((d|0)==6){c[g>>2]=1;g=c[g>>2]|0;i=h;return g|0}else if((d|0)==8){c[g>>2]=0;g=c[g>>2]|0;i=h;return g|0}return 0}function NF(e,f){e=e|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+16|0;g=j+4|0;h=j;c[g>>2]=e;c[h>>2]=f;if((d[c[h>>2]>>0]|0)!=152){i=j;return 0}if((b[(c[h>>2]|0)+32>>1]|0)<0){e=(c[g>>2]|0)+20|0;a[e>>0]=d[e>>0]|2;i=j;return 0}if((c[(c[(c[g>>2]|0)+24>>2]|0)+(b[(c[h>>2]|0)+32>>1]<<2)>>2]|0)<0){i=j;return 0}e=(c[g>>2]|0)+20|0;a[e>>0]=d[e>>0]|1;i=j;return 0}function OF(a,f){a=a|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;h=l+12|0;j=l+8|0;k=l+4|0;g=l;c[j>>2]=a;c[k>>2]=f;if((e[(c[j>>2]|0)+50>>1]|0)!=(e[(c[k>>2]|0)+50>>1]|0)){c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}if((d[(c[j>>2]|0)+54>>0]|0)!=(d[(c[k>>2]|0)+54>>0]|0)){c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}c[g>>2]=0;while(1){if((c[g>>2]|0)>=(e[(c[k>>2]|0)+50>>1]|0)){g=17;break}if((b[(c[(c[k>>2]|0)+4>>2]|0)+(c[g>>2]<<1)>>1]|0)!=(b[(c[(c[j>>2]|0)+4>>2]|0)+(c[g>>2]<<1)>>1]|0)){g=8;break}if((b[(c[(c[k>>2]|0)+4>>2]|0)+(c[g>>2]<<1)>>1]|0)==-2?(py(c[(c[(c[(c[k>>2]|0)+40>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0)>>2]|0,c[(c[(c[(c[j>>2]|0)+40>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0)>>2]|0,-1)|0)!=0:0){ -g=11;break}if((d[(c[(c[k>>2]|0)+28>>2]|0)+(c[g>>2]|0)>>0]|0)!=(d[(c[(c[j>>2]|0)+28>>2]|0)+(c[g>>2]|0)>>0]|0)){g=13;break}if(Td(c[(c[(c[k>>2]|0)+32>>2]|0)+(c[g>>2]<<2)>>2]|0,c[(c[(c[j>>2]|0)+32>>2]|0)+(c[g>>2]<<2)>>2]|0)|0){g=15;break}c[g>>2]=(c[g>>2]|0)+1}if((g|0)==8){c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}else if((g|0)==11){c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}else if((g|0)==13){c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}else if((g|0)==15){c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}else if((g|0)==17)if(py(c[(c[k>>2]|0)+36>>2]|0,c[(c[j>>2]|0)+36>>2]|0,-1)|0){c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}else{c[h>>2]=1;k=c[h>>2]|0;i=l;return k|0}return 0}function PF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;h=e+4|0;g=e;c[f>>2]=a;c[h>>2]=b;c[g>>2]=d;c[(c[h>>2]|0)+4>>2]=c[f>>2];c[c[h>>2]>>2]=c[(c[f>>2]|0)+496>>2];c[(c[f>>2]|0)+496>>2]=c[g>>2];i=e;return}function QF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+64|0;f=p+48|0;g=p+44|0;h=p+40|0;j=p+36|0;l=p+16|0;o=p+12|0;n=p+8|0;k=p+4|0;m=p;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=c[c[f>>2]>>2];c[m>>2]=Dh(c[k>>2]|0,c[(c[g>>2]|0)+64>>2]|0)|0;c[h>>2]=ny(c[k>>2]|0,c[h>>2]|0,0)|0;c[n>>2]=Nv(c[k>>2]|0,0,0,0)|0;if(c[n>>2]|0){d=nh(c[k>>2]|0,c[c[g>>2]>>2]|0)|0;c[(c[n>>2]|0)+8+8>>2]=d;d=nh(c[k>>2]|0,c[(c[(c[k>>2]|0)+16>>2]|0)+(c[m>>2]<<4)>>2]|0)|0;c[(c[n>>2]|0)+8+4>>2]=d}c[o>>2]=Fv(c[f>>2]|0,0,c[n>>2]|0,c[h>>2]|0,0,0,0,-32768,0,0)|0;ZA(l,12,c[j>>2]|0);Cv(c[f>>2]|0,c[o>>2]|0,l)|0;Wu(c[k>>2]|0,c[o>>2]|0);i=p;return}function RF(d,e,f,g,h,j,k,l){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;F=i;i=i+96|0;r=F+88|0;H=F+84|0;s=F+80|0;m=F+76|0;n=F+72|0;o=F+68|0;G=F+64|0;t=F+60|0;E=F+56|0;w=F+52|0;x=F+48|0;I=F+44|0;z=F+40|0;A=F+36|0;y=F+32|0;B=F+28|0;C=F+24|0;D=F+20|0;q=F+16|0;p=F+8|0;v=F+4|0;u=F;c[r>>2]=d;c[H>>2]=e;c[s>>2]=f;c[m>>2]=g;c[n>>2]=h;c[o>>2]=j;c[G>>2]=k;c[t>>2]=l;c[E>>2]=c[(c[r>>2]|0)+8>>2];c[I>>2]=c[c[r>>2]>>2];c[z>>2]=Ax(c[I>>2]|0,c[s>>2]|0)|0;c[y>>2]=2+(b[(c[s>>2]|0)+34>>1]|0);c[q>>2]=c[(c[H>>2]|0)+8+44>>2];f=(c[r>>2]|0)+72|0;k=c[f>>2]|0;c[f>>2]=k+1;c[w>>2]=k;c[u>>2]=Rw(c[E>>2]|0,57,c[w>>2]|0,c[y>>2]|0)|0;c[B>>2]=(c[(c[r>>2]|0)+76>>2]|0)+1;k=(c[r>>2]|0)+76|0;c[k>>2]=(c[k>>2]|0)+(c[y>>2]|0);k=(c[r>>2]|0)+76|0;f=(c[k>>2]|0)+1|0;c[k>>2]=f;c[C>>2]=f;f=(c[r>>2]|0)+76|0;k=(c[f>>2]|0)+1|0;c[f>>2]=k;c[D>>2]=k;c[A>>2]=RC(c[r>>2]|0,c[H>>2]|0,c[G>>2]|0,0,0,4,0)|0;if(!(c[A>>2]|0)){i=F;return}Rw(c[E>>2]|0,103,c[q>>2]|0,c[B>>2]|0)|0;if(c[n>>2]|0)xA(c[r>>2]|0,c[n>>2]|0,(c[B>>2]|0)+1|0);else Rw(c[E>>2]|0,103,c[q>>2]|0,(c[B>>2]|0)+1|0)|0;c[x>>2]=0;while(1){if((c[x>>2]|0)>=(b[(c[s>>2]|0)+34>>1]|0))break;if((c[(c[o>>2]|0)+(c[x>>2]<<2)>>2]|0)>=0)xA(c[r>>2]|0,c[(c[(c[m>>2]|0)+4>>2]|0)+((c[(c[o>>2]|0)+(c[x>>2]<<2)>>2]|0)*20|0)>>2]|0,(c[B>>2]|0)+2+(c[x>>2]|0)|0);else Vw(c[E>>2]|0,153,c[q>>2]|0,c[x>>2]|0,(c[B>>2]|0)+2+(c[x>>2]|0)|0)|0;c[x>>2]=(c[x>>2]|0)+1}c[v>>2]=SF(c[A>>2]|0,p)|0;m=c[E>>2]|0;if(c[v>>2]|0){pA(m,c[u>>2]|0)|0;if(!(c[(c[r>>2]|0)+416>>2]|0))a[(c[r>>2]|0)+20>>0]=0}else{Vw(m,49,c[B>>2]|0,c[y>>2]|0,c[C>>2]|0)|0;Rw(c[E>>2]|0,74,c[w>>2]|0,c[D>>2]|0)|0;Vw(c[E>>2]|0,75,c[w>>2]|0,c[C>>2]|0,c[D>>2]|0)|0}a:do if(!(c[v>>2]|0)){SC(c[A>>2]|0);c[u>>2]=xz(c[E>>2]|0,108,c[w>>2]|0)|0;c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[y>>2]|0))break a;Vw(c[E>>2]|0,47,c[w>>2]|0,c[x>>2]|0,(c[B>>2]|0)+(c[x>>2]|0)|0)|0;c[x>>2]=(c[x>>2]|0)+1}}while(0);EC(c[r>>2]|0,c[s>>2]|0);Uw(c[E>>2]|0,12,0,c[y>>2]|0,c[B>>2]|0,c[z>>2]|0,-10)|0;Fh(c[E>>2]|0,((c[t>>2]|0)==10?2:c[t>>2]|0)&255);Bx(c[r>>2]|0);if(!(c[v>>2]|0)){Rw(c[E>>2]|0,7,c[w>>2]|0,(c[u>>2]|0)+1|0)|0;Fz(c[E>>2]|0,c[u>>2]|0);Rw(c[E>>2]|0,61,c[w>>2]|0,0)|0;i=F;return}else{SC(c[A>>2]|0);i=F;return}}function SF(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;f=i;i=i+16|0;e=f+4|0;g=f;c[e>>2]=a;c[g>>2]=b;a=c[g>>2]|0;b=(c[e>>2]|0)+60|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];i=f;return d[(c[e>>2]|0)+38>>0]|0|0}function TF(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[(c[b>>2]|0)+4>>2]|0)){i=d;return}c[(c[(c[b>>2]|0)+4>>2]|0)+496>>2]=c[c[b>>2]>>2];c[(c[b>>2]|0)+4>>2]=0;i=d;return}function UF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;k=p+32|0;f=p+28|0;l=p+24|0;m=p+20|0;n=p+16|0;o=p+12|0;j=p+8|0;g=p+4|0;h=p;c[f>>2]=a;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;do if(((c[c[l>>2]>>2]|0)+(c[m>>2]|0)|0)>>>0>(c[(c[l>>2]|0)+4>>2]|0)>>>0){c[g>>2]=(c[c[l>>2]>>2]|0)+(c[m>>2]|0);c[j>>2]=Ew(c[f>>2]|0,c[l>>2]|0,80+(((c[g>>2]|0)-1|0)*72|0)|0,0)|0;if(c[j>>2]|0){c[l>>2]=c[j>>2];c[h>>2]=(((($t(c[f>>2]|0,c[j>>2]|0)|0)-80|0)>>>0)/72|0)+1;c[(c[l>>2]|0)+4>>2]=c[h>>2];break}c[k>>2]=c[l>>2];o=c[k>>2]|0;i=p;return o|0}while(0);c[o>>2]=(c[c[l>>2]>>2]|0)-1;while(1){if((c[o>>2]|0)<(c[n>>2]|0))break;f=(c[l>>2]|0)+8+(((c[o>>2]|0)+(c[m>>2]|0)|0)*72|0)|0;a=(c[l>>2]|0)+8+((c[o>>2]|0)*72|0)|0;e=f+72|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(e|0));c[o>>2]=(c[o>>2]|0)+-1}b=c[l>>2]|0;c[b>>2]=(c[b>>2]|0)+(c[m>>2]|0);kR((c[l>>2]|0)+8+((c[n>>2]|0)*72|0)|0,0,(c[m>>2]|0)*72|0)|0;c[o>>2]=c[n>>2];while(1){if((c[o>>2]|0)>=((c[n>>2]|0)+(c[m>>2]|0)|0))break;c[(c[l>>2]|0)+8+((c[o>>2]|0)*72|0)+44>>2]=-1;c[o>>2]=(c[o>>2]|0)+1}c[k>>2]=c[l>>2];o=c[k>>2]|0;i=p;return o|0}function VF(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;j=i;i=i+32|0;h=j;f=j+20|0;g=j+16|0;m=j+12|0;l=j+8|0;k=j+4|0;c[g>>2]=a;c[m>>2]=b;c[l>>2]=e;c[k>>2]=d[c[m>>2]>>0];if((c[l>>2]|0)>1?(c[k>>2]|0)==10|(c[k>>2]|0)==11:0){Ah(c[g>>2]|0,36847,h);c[f>>2]=1;m=c[f>>2]|0;i=j;return m|0}c[f>>2]=0;m=c[f>>2]|0;i=j;return m|0}function WF(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=i;i=i+128|0;y=Q+112|0;u=Q+108|0;v=Q+104|0;z=Q+100|0;l=Q+96|0;A=Q+92|0;n=Q+88|0;I=Q+84|0;K=Q+80|0;L=Q+76|0;J=Q+72|0;M=Q+68|0;G=Q+64|0;D=Q+60|0;C=Q+56|0;O=Q+52|0;N=Q+48|0;B=Q+44|0;m=Q+40|0;p=Q+36|0;r=Q+32|0;o=Q+28|0;q=Q+24|0;s=Q+20|0;w=Q+16|0;x=Q+12|0;F=Q+8|0;E=Q+116|0;P=Q+4|0;H=Q;c[u>>2]=f;c[v>>2]=g;c[z>>2]=h;c[l>>2]=j;c[A>>2]=k;c[n>>2]=c[(c[u>>2]|0)+496>>2];c[B>>2]=c[c[u>>2]>>2];if(e[(c[B>>2]|0)+60>>1]&1){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}c[J>>2]=c[(c[v>>2]|0)+32>>2];c[N>>2]=(c[J>>2]|0)+8+((c[z>>2]|0)*72|0);c[D>>2]=c[(c[N>>2]|0)+44>>2];c[K>>2]=c[(c[N>>2]|0)+20>>2];do if(c[A>>2]|0){if(c[l>>2]|0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if((c[c[J>>2]>>2]|0)>1){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if(!((c[(c[v>>2]|0)+36>>2]|0)!=0?(c[(c[(c[v>>2]|0)+36>>2]|0)+4>>2]&2097152|0)!=0:0))t=10;if(((t|0)==10?((iz(c[c[v>>2]>>2]|0)|0)&2097152|0)==0:0)?((iz(c[(c[v>>2]|0)+48>>2]|0)|0)&2097152|0)==0:0)break;c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}while(0);c[M>>2]=c[(c[K>>2]|0)+32>>2];if((c[(c[K>>2]|0)+60>>2]|0)!=0?(c[(c[v>>2]|0)+60>>2]|0)!=0:0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if(c[(c[K>>2]|0)+64>>2]|0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if((e[(c[v>>2]|0)+6>>1]&128|0)!=0?(c[(c[K>>2]|0)+60>>2]|0)!=0:0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if(!(c[c[M>>2]>>2]|0)){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if(e[(c[K>>2]|0)+6>>1]&1){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if((c[(c[K>>2]|0)+60>>2]|0)!=0?(c[l>>2]|0)!=0?1:(c[c[J>>2]>>2]|0)>1:0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if((c[A>>2]|0)!=0?(e[(c[v>>2]|0)+6>>1]&1|0)!=0:0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if((c[(c[v>>2]|0)+48>>2]|0)!=0?(c[(c[K>>2]|0)+48>>2]|0)!=0:0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if((c[l>>2]|0)!=0?(c[(c[K>>2]|0)+48>>2]|0)!=0:0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if((c[(c[K>>2]|0)+60>>2]|0)!=0?(c[(c[v>>2]|0)+36>>2]|0)!=0:0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if((c[(c[K>>2]|0)+60>>2]|0)!=0?(e[(c[v>>2]|0)+6>>1]&1|0)!=0:0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if(e[(c[K>>2]|0)+6>>1]&12288){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if((e[(c[v>>2]|0)+6>>1]&8192|0)!=0?(c[(c[K>>2]|0)+52>>2]|0)!=0:0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if(d[(c[N>>2]|0)+36>>0]&32){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}a:do if(c[(c[K>>2]|0)+52>>2]|0){if(c[(c[K>>2]|0)+48>>2]|0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}do if(!(c[l>>2]|0)){if(e[(c[v>>2]|0)+6>>1]&1)break;if((c[c[J>>2]>>2]|0)!=1)break;c[L>>2]=c[K>>2];while(1){if(!(c[L>>2]|0))break;if(e[(c[L>>2]|0)+6>>1]&9){t=62;break}if((c[(c[L>>2]|0)+52>>2]|0)!=0?(d[(c[L>>2]|0)+4>>0]|0)!=116:0){t=62;break}if((c[c[(c[L>>2]|0)+32>>2]>>2]|0)<1){t=62;break}c[L>>2]=c[(c[L>>2]|0)+52>>2]}if((t|0)==62){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if(!(c[(c[v>>2]|0)+48>>2]|0))break a;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[c[(c[v>>2]|0)+48>>2]>>2]|0))break a;if(!(e[(c[(c[(c[v>>2]|0)+48>>2]|0)+4>>2]|0)+((c[m>>2]|0)*20|0)+16>>1]|0))break;c[m>>2]=(c[m>>2]|0)+1}c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}while(0);c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}while(0);c[(c[u>>2]|0)+496>>2]=c[(c[N>>2]|0)+8>>2];Mw(c[u>>2]|0,21,0,0,0)|0;c[(c[u>>2]|0)+496>>2]=c[n>>2];c[K>>2]=c[(c[K>>2]|0)+52>>2];while(1){if(!(c[K>>2]|0))break;c[r>>2]=c[(c[v>>2]|0)+48>>2];c[o>>2]=c[(c[v>>2]|0)+60>>2];c[q>>2]=c[(c[v>>2]|0)+64>>2];c[s>>2]=c[(c[v>>2]|0)+52>>2];c[(c[v>>2]|0)+48>>2]=0;c[(c[v>>2]|0)+32>>2]=0;c[(c[v>>2]|0)+52>>2]=0;c[(c[v>>2]|0)+60>>2]=0;c[(c[v>>2]|0)+64>>2]=0;c[p>>2]=Hx(c[B>>2]|0,c[v>>2]|0,0)|0;c[(c[v>>2]|0)+64>>2]=c[q>>2];c[(c[v>>2]|0)+60>>2]=c[o>>2];c[(c[v>>2]|0)+48>>2]=c[r>>2];c[(c[v>>2]|0)+32>>2]=c[J>>2];a[(c[v>>2]|0)+4>>0]=116;l=c[s>>2]|0;if(!(c[p>>2]|0))c[(c[v>>2]|0)+52>>2]=l;else{c[(c[p>>2]|0)+52>>2]=l;if(c[s>>2]|0)c[(c[s>>2]|0)+56>>2]=c[p>>2];c[(c[p>>2]|0)+56>>2]=c[v>>2];c[(c[v>>2]|0)+52>>2]=c[p>>2]}if(a[(c[B>>2]|0)+65>>0]|0){t=78;break}c[K>>2]=c[(c[K>>2]|0)+52>>2]}if((t|0)==78){c[y>>2]=1;P=c[y>>2]|0;i=Q;return P|0}t=c[(c[N>>2]|0)+20>>2]|0;c[L>>2]=t;c[K>>2]=t;Sf(c[B>>2]|0,c[(c[N>>2]|0)+4>>2]|0);Sf(c[B>>2]|0,c[(c[N>>2]|0)+8>>2]|0);Sf(c[B>>2]|0,c[(c[N>>2]|0)+12>>2]|0);c[(c[N>>2]|0)+4>>2]=0;c[(c[N>>2]|0)+8>>2]=0;c[(c[N>>2]|0)+12>>2]=0;c[(c[N>>2]|0)+20>>2]=0;if(c[(c[N>>2]|0)+16>>2]|0){c[w>>2]=c[(c[N>>2]|0)+16>>2];if((e[(c[w>>2]|0)+36>>1]|0)==1){l=c[u>>2]|0;if(c[(c[u>>2]|0)+416>>2]|0)l=c[l+416>>2]|0;c[x>>2]=l;c[(c[w>>2]|0)+68>>2]=c[(c[x>>2]|0)+528>>2];c[(c[x>>2]|0)+528>>2]=c[w>>2]}else{x=(c[w>>2]|0)+36|0;b[x>>1]=(b[x>>1]|0)+-1<<16>>16}c[(c[N>>2]|0)+16>>2]=0}c[I>>2]=c[v>>2];while(1){if(!(c[I>>2]|0))break;a[E>>0]=0;c[M>>2]=c[(c[K>>2]|0)+32>>2];c[F>>2]=c[c[M>>2]>>2];c[J>>2]=c[(c[I>>2]|0)+32>>2];if(!(c[J>>2]|0)){x=Nv(c[B>>2]|0,0,0,0)|0;c[(c[I>>2]|0)+32>>2]=x;c[J>>2]=x;if(!(c[J>>2]|0))break}else a[E>>0]=a[(c[N>>2]|0)+36>>0]|0;if((c[F>>2]|0)>1?(x=UF(c[B>>2]|0,c[J>>2]|0,(c[F>>2]|0)-1|0,(c[z>>2]|0)+1|0)|0,c[J>>2]=x,c[(c[I>>2]|0)+32>>2]=x,(a[(c[B>>2]|0)+65>>0]|0)!=0):0)break;c[C>>2]=0;while(1){if((c[C>>2]|0)>=(c[F>>2]|0))break;_u(c[B>>2]|0,c[(c[J>>2]|0)+8+(((c[C>>2]|0)+(c[z>>2]|0)|0)*72|0)+52>>2]|0);l=(c[J>>2]|0)+8+(((c[C>>2]|0)+(c[z>>2]|0)|0)*72|0)|0;h=(c[M>>2]|0)+8+((c[C>>2]|0)*72|0)|0;m=l+72|0;do{c[l>>2]=c[h>>2];l=l+4|0;h=h+4|0}while((l|0)<(m|0));l=(c[M>>2]|0)+8+((c[C>>2]|0)*72|0)|0;m=l+72|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));c[C>>2]=(c[C>>2]|0)+1}a[(c[J>>2]|0)+8+((c[z>>2]|0)*72|0)+36>>0]=a[E>>0]|0;c[G>>2]=c[c[I>>2]>>2];c[C>>2]=0;while(1){if((c[C>>2]|0)>=(c[c[G>>2]>>2]|0))break;if(!(c[(c[(c[G>>2]|0)+4>>2]|0)+((c[C>>2]|0)*20|0)+4>>2]|0)){c[P>>2]=nh(c[B>>2]|0,c[(c[(c[G>>2]|0)+4>>2]|0)+((c[C>>2]|0)*20|0)+8>>2]|0)|0;Jw(c[P>>2]|0)|0;c[(c[(c[G>>2]|0)+4>>2]|0)+((c[C>>2]|0)*20|0)+4>>2]=c[P>>2]}c[C>>2]=(c[C>>2]|0)+1}if(c[(c[K>>2]|0)+48>>2]|0){c[H>>2]=c[(c[K>>2]|0)+48>>2];c[C>>2]=0;while(1){if((c[C>>2]|0)>=(c[c[H>>2]>>2]|0))break;b[(c[(c[H>>2]|0)+4>>2]|0)+((c[C>>2]|0)*20|0)+16>>1]=0;c[C>>2]=(c[C>>2]|0)+1}c[(c[I>>2]|0)+48>>2]=c[H>>2];c[(c[K>>2]|0)+48>>2]=0}c[O>>2]=ny(c[B>>2]|0,c[(c[K>>2]|0)+36>>2]|0,0)|0;if(c[A>>2]|0){c[(c[I>>2]|0)+44>>2]=c[(c[I>>2]|0)+36>>2];c[(c[I>>2]|0)+36>>2]=c[O>>2];w=c[B>>2]|0;x=c[(c[I>>2]|0)+44>>2]|0;x=az(w,x,ny(c[B>>2]|0,c[(c[K>>2]|0)+44>>2]|0,0)|0)|0;c[(c[I>>2]|0)+44>>2]=x;x=vy(c[B>>2]|0,c[(c[K>>2]|0)+40>>2]|0,0)|0;c[(c[I>>2]|0)+40>>2]=x}else{x=az(c[B>>2]|0,c[(c[I>>2]|0)+36>>2]|0,c[O>>2]|0)|0;c[(c[I>>2]|0)+36>>2]=x}EG(c[B>>2]|0,c[I>>2]|0,c[D>>2]|0,c[c[K>>2]>>2]|0,0);x=(c[I>>2]|0)+6|0;b[x>>1]=e[x>>1]|e[(c[K>>2]|0)+6>>1]&1;if(c[(c[K>>2]|0)+60>>2]|0){c[(c[I>>2]|0)+60>>2]=c[(c[K>>2]|0)+60>>2];c[(c[K>>2]|0)+60>>2]=0}c[I>>2]=c[(c[I>>2]|0)+52>>2];c[K>>2]=c[(c[K>>2]|0)+52>>2]}Wu(c[B>>2]|0,c[L>>2]|0);c[y>>2]=1;P=c[y>>2]|0;i=Q;return P|0}function XF(f,g,h){f=f|0;g=g|0;h=h|0;var 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,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;aa=i;i=i+240|0;$=aa+8|0;j=aa;k=aa+220|0;l=aa+216|0;m=aa+212|0;n=aa+208|0;V=aa+204|0;S=aa+200|0;_=aa+196|0;u=aa+176|0;J=aa+172|0;t=aa+168|0;D=aa+164|0;E=aa+160|0;o=aa+156|0;H=aa+152|0;Y=aa+148|0;I=aa+224|0;T=aa+144|0;N=aa+140|0;Q=aa+136|0;p=aa+132|0;Z=aa+112|0;y=aa+108|0;w=aa+104|0;A=aa+100|0;K=aa+96|0;W=aa+92|0;X=aa+88|0;z=aa+84|0;x=aa+80|0;B=aa+76|0;O=aa+72|0;R=aa+68|0;q=aa+64|0;F=aa+44|0;U=aa+40|0;L=aa+36|0;v=aa+32|0;M=aa+28|0;P=aa+24|0;s=aa+20|0;G=aa+16|0;r=aa+12|0;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;c[V>>2]=0;c[J>>2]=0;c[D>>2]=0;c[E>>2]=0;c[t>>2]=c[c[l>>2]>>2];c[S>>2]=c[(c[m>>2]|0)+52>>2];f=c[n>>2]|0;c[u>>2]=c[f>>2];c[u+4>>2]=c[f+4>>2];c[u+8>>2]=c[f+8>>2];c[u+12>>2]=c[f+12>>2];c[u+16>>2]=c[f+16>>2];a:do if(!(c[(c[S>>2]|0)+48>>2]|0)){g=c[l>>2]|0;if(c[(c[S>>2]|0)+60>>2]|0){c[$>>2]=xy(d[(c[m>>2]|0)+4>>0]|0)|0;Ah(g,36704,$);c[V>>2]=1;break}c[_>>2]=Pw(g)|0;if((d[u>>0]|0|0)==12){Rw(c[_>>2]|0,57,c[u+4>>2]|0,c[c[c[m>>2]>>2]>>2]|0)|0;Fh(c[_>>2]|0,8);a[u>>0]=14}if((e[(c[m>>2]|0)+6>>1]|0)&512){c[V>>2]=GG(c[l>>2]|0,c[m>>2]|0,u)|0;break}b:do if((e[(c[m>>2]|0)+6>>1]|0)&8192)HG(c[l>>2]|0,c[m>>2]|0,u);else{if(c[(c[m>>2]|0)+48>>2]|0){c[k>>2]=IG(c[l>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;$=c[k>>2]|0;i=aa;return $|0}switch(d[(c[m>>2]|0)+4>>0]|0|0){case 116:{c[o>>2]=0;c[(c[S>>2]|0)+8>>2]=c[(c[m>>2]|0)+8>>2];c[(c[S>>2]|0)+12>>2]=c[(c[m>>2]|0)+12>>2];c[(c[S>>2]|0)+60>>2]=c[(c[m>>2]|0)+60>>2];c[(c[S>>2]|0)+64>>2]=c[(c[m>>2]|0)+64>>2];c[D>>2]=c[(c[l>>2]|0)+472>>2];c[V>>2]=Cv(c[l>>2]|0,c[S>>2]|0,u)|0;c[(c[m>>2]|0)+60>>2]=0;c[(c[m>>2]|0)+64>>2]=0;if(c[V>>2]|0)break a;c[(c[m>>2]|0)+52>>2]=0;c[(c[m>>2]|0)+8>>2]=c[(c[S>>2]|0)+8>>2];c[(c[m>>2]|0)+12>>2]=c[(c[S>>2]|0)+12>>2];if((c[(c[m>>2]|0)+8>>2]|0)!=0?(c[o>>2]=xz(c[_>>2]|0,46,c[(c[m>>2]|0)+8>>2]|0)|0,(c[(c[m>>2]|0)+12>>2]|0)!=0):0)Vw(c[_>>2]|0,139,c[(c[m>>2]|0)+8>>2]|0,(c[(c[m>>2]|0)+12>>2]|0)+1|0,c[(c[m>>2]|0)+12>>2]|0)|0;c[E>>2]=c[(c[l>>2]|0)+472>>2];c[V>>2]=Cv(c[l>>2]|0,c[m>>2]|0,u)|0;c[J>>2]=c[(c[m>>2]|0)+52>>2];c[(c[m>>2]|0)+52>>2]=c[S>>2];Z=(c[S>>2]|0)+24|0;$=(c[m>>2]|0)+24|0;Y=$;c[$>>2]=gR(c[Y>>2]|0,c[Y+4>>2]|0,c[Z>>2]|0,c[Z+4>>2]|0)|0;c[$+4>>2]=C;if(((c[(c[S>>2]|0)+60>>2]|0)!=0?($=(ky(c[(c[S>>2]|0)+60>>2]|0,H)|0)!=0,$&(c[H>>2]|0)>0):0)?(Z=(c[m>>2]|0)+24|0,X=c[Z+4>>2]|0,$=c[H>>2]|0,Y=(($|0)<0)<<31>>31,X>>>0>Y>>>0|((X|0)==(Y|0)?(c[Z>>2]|0)>>>0>$>>>0:0)):0){Z=c[H>>2]|0;$=(c[m>>2]|0)+24|0;c[$>>2]=Z;c[$+4>>2]=((Z|0)<0)<<31>>31}if(!(c[o>>2]|0))break b;Fz(c[_>>2]|0,c[o>>2]|0);break b}case 115:case 117:{a[I>>0]=0;c[T>>2]=1;if((d[u>>0]|0|0)==(c[T>>2]|0))c[Y>>2]=c[u+4>>2];else{X=(c[l>>2]|0)+72|0;$=c[X>>2]|0;c[X>>2]=$+1;c[Y>>2]=$;c[p>>2]=Rw(c[_>>2]|0,57,c[Y>>2]|0,0)|0;c[(c[m>>2]|0)+16>>2]=c[p>>2];$=(Sy(c[m>>2]|0)|0)+6|0;b[$>>1]=e[$>>1]|0|16}ZA(Z,c[T>>2]|0,c[Y>>2]|0);c[D>>2]=c[(c[l>>2]|0)+472>>2];c[V>>2]=Cv(c[l>>2]|0,c[S>>2]|0,Z)|0;if(c[V>>2]|0)break a;if((d[(c[m>>2]|0)+4>>0]|0|0)==117)a[I>>0]=2;else a[I>>0]=1;c[(c[m>>2]|0)+52>>2]=0;c[N>>2]=c[(c[m>>2]|0)+60>>2];c[(c[m>>2]|0)+60>>2]=0;c[Q>>2]=c[(c[m>>2]|0)+64>>2];c[(c[m>>2]|0)+64>>2]=0;a[Z>>0]=a[I>>0]|0;c[E>>2]=c[(c[l>>2]|0)+472>>2];c[V>>2]=Cv(c[l>>2]|0,c[m>>2]|0,Z)|0;Vu(c[t>>2]|0,c[(c[m>>2]|0)+48>>2]|0);c[J>>2]=c[(c[m>>2]|0)+52>>2];c[(c[m>>2]|0)+52>>2]=c[S>>2];c[(c[m>>2]|0)+48>>2]=0;if((d[(c[m>>2]|0)+4>>0]|0|0)==115){Z=(c[S>>2]|0)+24|0;$=(c[m>>2]|0)+24|0;X=$;Z=gR(c[X>>2]|0,c[X+4>>2]|0,c[Z>>2]|0,c[Z+4>>2]|0)|0;c[$>>2]=Z;c[$+4>>2]=C}Zu(c[t>>2]|0,c[(c[m>>2]|0)+60>>2]|0);c[(c[m>>2]|0)+60>>2]=c[N>>2];c[(c[m>>2]|0)+64>>2]=c[Q>>2];c[(c[m>>2]|0)+8>>2]=0;c[(c[m>>2]|0)+12>>2]=0;if((d[u>>0]|0|0)==(c[T>>2]|0))break b;if((d[u>>0]|0|0)==9){c[K>>2]=c[m>>2];while(1){if(!(c[(c[K>>2]|0)+52>>2]|0))break;c[K>>2]=c[(c[K>>2]|0)+52>>2]}uG(c[l>>2]|0,c[(c[K>>2]|0)+32>>2]|0,c[c[K>>2]>>2]|0)}c[w>>2]=Cz(c[_>>2]|0)|0;c[y>>2]=Cz(c[_>>2]|0)|0;aG(c[l>>2]|0,c[m>>2]|0,c[w>>2]|0);Rw(c[_>>2]|0,108,c[Y>>2]|0,c[w>>2]|0)|0;c[A>>2]=Bz(c[_>>2]|0)|0;hG(c[l>>2]|0,c[m>>2]|0,c[c[m>>2]>>2]|0,c[Y>>2]|0,0,0,u,c[y>>2]|0,c[w>>2]|0);Gz(c[_>>2]|0,c[y>>2]|0);Rw(c[_>>2]|0,7,c[Y>>2]|0,c[A>>2]|0)|0;Gz(c[_>>2]|0,c[w>>2]|0);Rw(c[_>>2]|0,61,c[Y>>2]|0,0)|0;break b}default:{$=(c[l>>2]|0)+72|0;Z=c[$>>2]|0;c[$>>2]=Z+1;c[W>>2]=Z;Z=(c[l>>2]|0)+72|0;$=c[Z>>2]|0;c[Z>>2]=$+1;c[X>>2]=$;c[q>>2]=Rw(c[_>>2]|0,57,c[W>>2]|0,0)|0;c[(c[m>>2]|0)+16>>2]=c[q>>2];$=(Sy(c[m>>2]|0)|0)+6|0;b[$>>1]=e[$>>1]|0|16;ZA(F,1,c[W>>2]|0);c[D>>2]=c[(c[l>>2]|0)+472>>2];c[V>>2]=Cv(c[l>>2]|0,c[S>>2]|0,F)|0;if(c[V>>2]|0)break a;c[q>>2]=Rw(c[_>>2]|0,57,c[X>>2]|0,0)|0;c[(c[m>>2]|0)+16+4>>2]=c[q>>2];c[(c[m>>2]|0)+52>>2]=0;c[O>>2]=c[(c[m>>2]|0)+60>>2];c[(c[m>>2]|0)+60>>2]=0;c[R>>2]=c[(c[m>>2]|0)+64>>2];c[(c[m>>2]|0)+64>>2]=0;c[F+4>>2]=c[X>>2];c[E>>2]=c[(c[l>>2]|0)+472>>2];c[V>>2]=Cv(c[l>>2]|0,c[m>>2]|0,F)|0;c[J>>2]=c[(c[m>>2]|0)+52>>2];c[(c[m>>2]|0)+52>>2]=c[S>>2];Z=(c[m>>2]|0)+24|0;T=c[Z+4>>2]|0;$=(c[S>>2]|0)+24|0;Y=c[$+4>>2]|0;if(T>>>0>Y>>>0|((T|0)==(Y|0)?(c[Z>>2]|0)>>>0>(c[$>>2]|0)>>>0:0)){Y=(c[S>>2]|0)+24|0;Z=c[Y+4>>2]|0;$=(c[m>>2]|0)+24|0;c[$>>2]=c[Y>>2];c[$+4>>2]=Z}Zu(c[t>>2]|0,c[(c[m>>2]|0)+60>>2]|0);c[(c[m>>2]|0)+60>>2]=c[O>>2];c[(c[m>>2]|0)+64>>2]=c[R>>2];if((d[u>>0]|0|0)==9){c[L>>2]=c[m>>2];while(1){if(!(c[(c[L>>2]|0)+52>>2]|0))break;c[L>>2]=c[(c[L>>2]|0)+52>>2]}uG(c[l>>2]|0,c[(c[L>>2]|0)+32>>2]|0,c[c[L>>2]>>2]|0)}c[x>>2]=Cz(c[_>>2]|0)|0;c[z>>2]=Cz(c[_>>2]|0)|0;aG(c[l>>2]|0,c[m>>2]|0,c[x>>2]|0);Rw(c[_>>2]|0,108,c[W>>2]|0,c[x>>2]|0)|0;c[U>>2]=Wz(c[l>>2]|0)|0;c[B>>2]=Rw(c[_>>2]|0,101,c[W>>2]|0,c[U>>2]|0)|0;Eh(c[_>>2]|0,68,c[X>>2]|0,c[z>>2]|0,c[U>>2]|0,0)|0;_z(c[l>>2]|0,c[U>>2]|0);hG(c[l>>2]|0,c[m>>2]|0,c[c[m>>2]>>2]|0,c[W>>2]|0,0,0,u,c[z>>2]|0,c[x>>2]|0);Gz(c[_>>2]|0,c[z>>2]|0);Rw(c[_>>2]|0,7,c[W>>2]|0,c[B>>2]|0)|0;Gz(c[_>>2]|0,c[x>>2]|0);Rw(c[_>>2]|0,61,c[X>>2]|0,0)|0;Rw(c[_>>2]|0,61,c[W>>2]|0,0)|0;break b}}}while(0);JG(c[l>>2]|0,d[(c[m>>2]|0)+4>>0]|0,c[D>>2]|0,c[E>>2]|0,(d[(c[m>>2]|0)+4>>0]|0|0)!=116&1);if((e[(c[m>>2]|0)+6>>1]|0)&16){c[G>>2]=c[c[c[m>>2]>>2]>>2];c[M>>2]=Qz(c[t>>2]|0,c[G>>2]|0,1)|0;if(!(c[M>>2]|0)){c[V>>2]=7;break}c[v>>2]=0;c[s>>2]=(c[M>>2]|0)+20;while(1){if((c[v>>2]|0)>=(c[G>>2]|0))break;$=KG(c[l>>2]|0,c[m>>2]|0,c[v>>2]|0)|0;c[c[s>>2]>>2]=$;if(!(c[c[s>>2]>>2]|0))c[c[s>>2]>>2]=c[(c[t>>2]|0)+8>>2];c[v>>2]=(c[v>>2]|0)+1;c[s>>2]=(c[s>>2]|0)+4}c[P>>2]=c[m>>2];while(1){if(!(c[P>>2]|0))break;c[v>>2]=0;while(1){if((c[v>>2]|0)>=2)break;c[r>>2]=c[(c[P>>2]|0)+16+(c[v>>2]<<2)>>2];if((c[r>>2]|0)<0)break;Lz(c[_>>2]|0,c[r>>2]|0,c[G>>2]|0);Z=c[_>>2]|0;$=c[r>>2]|0;Ih(Z,$,Vz(c[M>>2]|0)|0,-6);c[(c[P>>2]|0)+16+(c[v>>2]<<2)>>2]=-1;c[v>>2]=(c[v>>2]|0)+1}c[P>>2]=c[(c[P>>2]|0)+52>>2]}Rz(c[M>>2]|0)}}else{$=c[l>>2]|0;c[j>>2]=xy(d[(c[m>>2]|0)+4>>0]|0)|0;Ah($,36656,j);c[V>>2]=1}while(0);c[(c[n>>2]|0)+8>>2]=c[u+8>>2];c[(c[n>>2]|0)+12>>2]=c[u+12>>2];Wu(c[t>>2]|0,c[J>>2]|0);c[k>>2]=c[V>>2];$=c[k>>2]|0;i=aa;return $|0}function YF(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=0;gz(c[e>>2]|0,b);i=d;return c[b>>2]|0}function ZF(a,b,f,g){a=a|0;b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;h=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;m=p+8|0;o=p+4|0;n=p;c[j>>2]=a;c[k>>2]=b;c[l>>2]=f;c[m>>2]=g;c[n>>2]=0;if(!(c[l>>2]|0)){c[h>>2]=0;f=c[h>>2]|0;i=p;return f|0}if((e[(c[k>>2]|0)+6>>1]|0)&8200){c[h>>2]=0;f=c[h>>2]|0;i=p;return f|0}if(c[(c[k>>2]|0)+60>>2]|0){c[h>>2]=0;f=c[h>>2]|0;i=p;return f|0}while(1){if((d[c[l>>2]>>0]|0|0)!=72)break;f=ZF(c[j>>2]|0,c[k>>2]|0,c[(c[l>>2]|0)+16>>2]|0,c[m>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+f;c[l>>2]=c[(c[l>>2]|0)+12>>2]}if(c[(c[l>>2]|0)+4>>2]&1){c[h>>2]=0;f=c[h>>2]|0;i=p;return f|0}a:do if(ED(c[l>>2]|0,c[m>>2]|0)|0){c[n>>2]=(c[n>>2]|0)+1;while(1){if(!(c[k>>2]|0))break a;c[o>>2]=ny(c[j>>2]|0,c[l>>2]|0,0)|0;c[o>>2]=DG(c[j>>2]|0,c[o>>2]|0,c[m>>2]|0,c[c[k>>2]>>2]|0)|0;f=az(c[j>>2]|0,c[(c[k>>2]|0)+36>>2]|0,c[o>>2]|0)|0;c[(c[k>>2]|0)+36>>2]=f;c[k>>2]=c[(c[k>>2]|0)+52>>2]}}while(0);c[h>>2]=c[n>>2];f=c[h>>2]|0;i=p;return f|0}function _F(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;a[(c[e>>2]|0)+19>>0]=0;c[(c[e>>2]|0)+60>>2]=0;i=d;return}function $F(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+48|0;g=q+36|0;h=q+32|0;j=q+28|0;r=q+24|0;m=q+20|0;o=q+16|0;p=q+12|0;k=q+8|0;l=q+4|0;n=q;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[r>>2]=f;c[k>>2]=c[c[g>>2]>>2];c[m>>2]=c[c[h>>2]>>2];c[o>>2]=Qz(c[k>>2]|0,(c[m>>2]|0)-(c[j>>2]|0)|0,(c[r>>2]|0)+1|0)|0;if(!(c[o>>2]|0)){r=c[o>>2]|0;i=q;return r|0}c[l>>2]=c[j>>2];c[p>>2]=(c[(c[h>>2]|0)+4>>2]|0)+((c[j>>2]|0)*20|0);while(1){if((c[l>>2]|0)>=(c[m>>2]|0))break;c[n>>2]=Ox(c[g>>2]|0,c[c[p>>2]>>2]|0)|0;if(!(c[n>>2]|0))c[n>>2]=c[(c[k>>2]|0)+8>>2];c[(c[o>>2]|0)+20+((c[l>>2]|0)-(c[j>>2]|0)<<2)>>2]=c[n>>2];a[(c[(c[o>>2]|0)+16>>2]|0)+((c[l>>2]|0)-(c[j>>2]|0))>>0]=a[(c[p>>2]|0)+12>>0]|0;c[l>>2]=(c[l>>2]|0)+1;c[p>>2]=(c[p>>2]|0)+20}r=c[o>>2]|0;i=q;return r|0}function aG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;e=m+24|0;f=m+20|0;g=m+16|0;l=m+12|0;h=m+8|0;j=m+4|0;k=m;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[l>>2]=0;c[h>>2]=0;if(c[(c[f>>2]|0)+8>>2]|0){i=m;return}fC(c[e>>2]|0);if(!(c[(c[f>>2]|0)+60>>2]|0)){i=m;return}b=(c[e>>2]|0)+76|0;a=(c[b>>2]|0)+1|0;c[b>>2]=a;c[h>>2]=a;c[(c[f>>2]|0)+8>>2]=a;c[l>>2]=Pw(c[e>>2]|0)|0;do if(ky(c[(c[f>>2]|0)+60>>2]|0,k)|0){Rw(c[l>>2]|0,22,c[k>>2]|0,c[h>>2]|0)|0;if(!(c[k>>2]|0)){Ez(c[l>>2]|0,c[g>>2]|0)|0;break}if((c[k>>2]|0)>=0?(b=(c[f>>2]|0)+24|0,g=c[b+4>>2]|0,a=c[k>>2]|0,d=((a|0)<0)<<31>>31,g>>>0>d>>>0|((g|0)==(d|0)?(c[b>>2]|0)>>>0>a>>>0:0)):0){b=c[k>>2]|0;a=(c[f>>2]|0)+24|0;c[a>>2]=b;c[a+4>>2]=((b|0)<0)<<31>>31}}else{xA(c[e>>2]|0,c[(c[f>>2]|0)+60>>2]|0,c[h>>2]|0);xz(c[l>>2]|0,38,c[h>>2]|0)|0;Rw(c[l>>2]|0,46,c[h>>2]|0,c[g>>2]|0)|0}while(0);if(!(c[(c[f>>2]|0)+64>>2]|0)){i=m;return}b=(c[e>>2]|0)+76|0;a=(c[b>>2]|0)+1|0;c[b>>2]=a;c[j>>2]=a;c[(c[f>>2]|0)+12>>2]=a;a=(c[e>>2]|0)+76|0;c[a>>2]=(c[a>>2]|0)+1;xA(c[e>>2]|0,c[(c[f>>2]|0)+64>>2]|0,c[j>>2]|0);xz(c[l>>2]|0,38,c[j>>2]|0)|0;Vw(c[l>>2]|0,139,c[h>>2]|0,(c[j>>2]|0)+1|0,c[j>>2]|0)|0;i=m;return}function bG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;h=f+4|0;g=f;j=f+8|0;c[h>>2]=b;c[g>>2]=d;a[j>>0]=e;b=a[j>>0]|0;a[(Mz(c[h>>2]|0,c[g>>2]|0)|0)>>0]=b;i=f;return}function cG(a){a=a|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;a=aC(b[(c[e>>2]|0)+32>>1]|0)|0;i=d;return a|0}function dG(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return d[(c[b>>2]|0)+40>>0]|0|0}function eG(b){b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=b;i=e;return a[(c[d>>2]|0)+36>>0]|0}function fG(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+48>>2]|0}function gG(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+52>>2]|0}function hG(b,f,g,h,j,k,l,m,n){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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,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;V=i;i=i+144|0;P=V+124|0;Q=V+120|0;t=V+116|0;o=V+112|0;R=V+108|0;p=V+104|0;M=V+100|0;u=V+96|0;S=V+92|0;U=V+88|0;D=V+84|0;r=V+80|0;T=V+76|0;C=V+72|0;O=V+68|0;F=V+64|0;N=V+60|0;q=V+128|0;s=V+56|0;w=V+52|0;A=V+48|0;x=V+44|0;y=V+40|0;H=V+36|0;v=V+32|0;K=V+28|0;I=V+24|0;E=V+20|0;J=V+16|0;L=V+12|0;z=V+8|0;B=V+4|0;G=V;c[P>>2]=b;c[Q>>2]=f;c[t>>2]=g;c[o>>2]=h;c[R>>2]=j;c[p>>2]=k;c[M>>2]=l;c[u>>2]=m;c[S>>2]=n;c[U>>2]=c[(c[P>>2]|0)+8>>2];c[C>>2]=d[c[M>>2]>>0];c[O>>2]=c[(c[M>>2]|0)+4>>2];c[N>>2]=0;if(c[p>>2]|0)n=d[(c[p>>2]|0)+1>>0]|0;else n=0;c[r>>2]=n;if((c[R>>2]|0)!=0?(c[c[R>>2]>>2]|0)==0:0)c[R>>2]=0;if(!((c[R>>2]|0)!=0|(c[r>>2]|0)!=0))wG(c[U>>2]|0,c[(c[Q>>2]|0)+12>>2]|0,c[u>>2]|0);c[F>>2]=c[c[t>>2]>>2];if(c[(c[M>>2]|0)+8>>2]|0){if(((c[(c[M>>2]|0)+8>>2]|0)+(c[F>>2]|0)|0)>(c[(c[P>>2]|0)+76>>2]|0)){h=(c[P>>2]|0)+76|0;c[h>>2]=(c[h>>2]|0)+(c[F>>2]|0)}}else{if(c[R>>2]|0){c[N>>2]=c[c[c[R>>2]>>2]>>2];if(!((d[(c[R>>2]|0)+28>>0]|0)&1))c[N>>2]=(c[N>>2]|0)+1;h=(c[P>>2]|0)+76|0;c[h>>2]=(c[h>>2]|0)+(c[N>>2]|0)}c[(c[M>>2]|0)+8>>2]=(c[(c[P>>2]|0)+76>>2]|0)+1;h=(c[P>>2]|0)+76|0;c[h>>2]=(c[h>>2]|0)+(c[F>>2]|0)}c[(c[M>>2]|0)+12>>2]=c[F>>2];c[T>>2]=c[(c[M>>2]|0)+8>>2];a:do if((c[o>>2]|0)<0){if((c[C>>2]|0)!=3){if((c[C>>2]|0)==10|(c[C>>2]|0)==9|(c[C>>2]|0)==13)a[q>>0]=1;else a[q>>0]=0;GA(c[P>>2]|0,c[t>>2]|0,c[T>>2]|0,0,a[q>>0]|0)|0}}else{c[D>>2]=0;while(1){if((c[D>>2]|0)>=(c[F>>2]|0))break a;Vw(c[U>>2]|0,47,c[o>>2]|0,c[D>>2]|0,(c[T>>2]|0)+(c[D>>2]|0)|0)|0;c[D>>2]=(c[D>>2]|0)+1}}while(0);if(c[r>>2]|0){switch(d[(c[p>>2]|0)+1>>0]|0|0){case 2:{c[A>>2]=(c[(c[P>>2]|0)+76>>2]|0)+1;r=(c[P>>2]|0)+76|0;c[r>>2]=(c[r>>2]|0)+(c[F>>2]|0);pA(c[U>>2]|0,c[(c[p>>2]|0)+8>>2]|0)|0;c[s>>2]=Mz(c[U>>2]|0,c[(c[p>>2]|0)+8>>2]|0)|0;a[c[s>>2]>>0]=25;c[(c[s>>2]|0)+4>>2]=1;c[(c[s>>2]|0)+8>>2]=c[A>>2];c[w>>2]=(Bz(c[U>>2]|0)|0)+(c[F>>2]|0);c[D>>2]=0;while(1){if((c[D>>2]|0)>=(c[F>>2]|0))break;c[x>>2]=Ox(c[P>>2]|0,c[(c[(c[t>>2]|0)+4>>2]|0)+((c[D>>2]|0)*20|0)>>2]|0)|0;n=c[U>>2]|0;m=(c[T>>2]|0)+(c[D>>2]|0)|0;if((c[D>>2]|0)<((c[F>>2]|0)-1|0))Vw(n,78,m,c[w>>2]|0,(c[A>>2]|0)+(c[D>>2]|0)|0)|0;else Vw(n,79,m,c[u>>2]|0,(c[A>>2]|0)+(c[D>>2]|0)|0)|0;Ih(c[U>>2]|0,-1,c[x>>2]|0,-4);Fh(c[U>>2]|0,-128);c[D>>2]=(c[D>>2]|0)+1}Vw(c[U>>2]|0,30,c[T>>2]|0,c[A>>2]|0,(c[F>>2]|0)-1|0)|0;break}case 1:{pA(c[U>>2]|0,c[(c[p>>2]|0)+8>>2]|0)|0;break}default:xG(c[P>>2]|0,c[(c[p>>2]|0)+4>>2]|0,c[u>>2]|0,c[F>>2]|0,c[T>>2]|0)}if(!(c[R>>2]|0))wG(c[U>>2]|0,c[(c[Q>>2]|0)+12>>2]|0,c[u>>2]|0)}b:do switch(c[C>>2]|0){case 1:{c[y>>2]=Wz(c[P>>2]|0)|0;Vw(c[U>>2]|0,49,c[T>>2]|0,c[F>>2]|0,c[y>>2]|0)|0;Rw(c[U>>2]|0,110,c[O>>2]|0,c[y>>2]|0)|0;_z(c[P>>2]|0,c[y>>2]|0);break}case 2:{Vw(c[U>>2]|0,111,c[O>>2]|0,c[T>>2]|0,c[F>>2]|0)|0;break}case 12:case 14:case 6:case 5:{c[H>>2]=kA(c[P>>2]|0,(c[N>>2]|0)+1|0)|0;Vw(c[U>>2]|0,49,c[T>>2]|0,c[F>>2]|0,(c[H>>2]|0)+(c[N>>2]|0)|0)|0;if((c[C>>2]|0)==6){c[v>>2]=(Bz(c[U>>2]|0)|0)+4;Eh(c[U>>2]|0,69,(c[O>>2]|0)+1|0,c[v>>2]|0,c[H>>2]|0,0)|0;Rw(c[U>>2]|0,110,(c[O>>2]|0)+1|0,c[H>>2]|0)|0}n=c[P>>2]|0;if(c[R>>2]|0)CG(n,c[R>>2]|0,c[Q>>2]|0,(c[H>>2]|0)+(c[N>>2]|0)|0,c[T>>2]|0,1,c[N>>2]|0);else{c[K>>2]=Wz(n)|0;Rw(c[U>>2]|0,74,c[O>>2]|0,c[K>>2]|0)|0;Vw(c[U>>2]|0,75,c[O>>2]|0,c[H>>2]|0,c[K>>2]|0)|0;Fh(c[U>>2]|0,8);_z(c[P>>2]|0,c[K>>2]|0)}nA(c[P>>2]|0,c[H>>2]|0,(c[N>>2]|0)+1|0);break}case 11:{n=SA(c[c[(c[t>>2]|0)+4>>2]>>2]|0,a[(c[M>>2]|0)+1>>0]|0)|0;a[(c[M>>2]|0)+1>>0]=n;n=c[P>>2]|0;if(c[R>>2]|0){CG(n,c[R>>2]|0,c[Q>>2]|0,c[T>>2]|0,c[T>>2]|0,1,c[N>>2]|0);break b}else{c[I>>2]=Wz(n)|0;Uw(c[U>>2]|0,49,c[T>>2]|0,1,c[I>>2]|0,(c[M>>2]|0)+1|0,1)|0;CA(c[P>>2]|0,c[T>>2]|0,1);Rw(c[U>>2]|0,110,c[O>>2]|0,c[I>>2]|0)|0;_z(c[P>>2]|0,c[I>>2]|0);break b}}case 3:{Rw(c[U>>2]|0,22,1,c[O>>2]|0)|0;break}case 10:{if(c[R>>2]|0)CG(c[P>>2]|0,c[R>>2]|0,c[Q>>2]|0,c[T>>2]|0,c[T>>2]|0,1,c[N>>2]|0);break}case 9:case 13:{if(c[R>>2]|0){CG(c[P>>2]|0,c[R>>2]|0,c[Q>>2]|0,c[T>>2]|0,c[T>>2]|0,c[F>>2]|0,c[N>>2]|0);break b}n=c[U>>2]|0;if((c[C>>2]|0)==13){xz(n,18,c[(c[M>>2]|0)+4>>2]|0)|0;break b}else{Rw(n,33,c[T>>2]|0,c[F>>2]|0)|0;CA(c[P>>2]|0,c[T>>2]|0,c[F>>2]|0);break b}}case 7:case 8:{c[B>>2]=0;c[G>>2]=c[(c[M>>2]|0)+16>>2];c[E>>2]=c[c[G>>2]>>2];c[J>>2]=Wz(c[P>>2]|0)|0;c[L>>2]=kA(c[P>>2]|0,(c[E>>2]|0)+2|0)|0;c[z>>2]=(c[L>>2]|0)+(c[E>>2]|0)+1;if((c[C>>2]|0)==8)c[B>>2]=Eh(c[U>>2]|0,69,(c[O>>2]|0)+1|0,0,c[T>>2]|0,c[F>>2]|0)|0;Vw(c[U>>2]|0,49,c[T>>2]|0,c[F>>2]|0,c[z>>2]|0)|0;if((c[C>>2]|0)==8){Rw(c[U>>2]|0,110,(c[O>>2]|0)+1|0,c[z>>2]|0)|0;Fh(c[U>>2]|0,16)}c[D>>2]=0;while(1){n=c[U>>2]|0;if((c[D>>2]|0)>=(c[E>>2]|0))break;Rw(n,31,(c[T>>2]|0)+(e[(c[(c[G>>2]|0)+4>>2]|0)+((c[D>>2]|0)*20|0)+16>>1]|0)-1|0,(c[L>>2]|0)+(c[D>>2]|0)|0)|0;c[D>>2]=(c[D>>2]|0)+1}Rw(n,73,c[O>>2]|0,(c[L>>2]|0)+(c[E>>2]|0)|0)|0;Vw(c[U>>2]|0,49,c[L>>2]|0,(c[E>>2]|0)+2|0,c[J>>2]|0)|0;Rw(c[U>>2]|0,110,c[O>>2]|0,c[J>>2]|0)|0;if(c[B>>2]|0)Fz(c[U>>2]|0,c[B>>2]|0);_z(c[P>>2]|0,c[J>>2]|0);nA(c[P>>2]|0,c[L>>2]|0,(c[E>>2]|0)+2|0);break}default:{}}while(0);if(c[R>>2]|0){i=V;return}if(!(c[(c[Q>>2]|0)+8>>2]|0)){i=V;return}Rw(c[U>>2]|0,141,c[(c[Q>>2]|0)+8>>2]|0,c[S>>2]|0)|0;i=V;return}function iG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;g=h+4|0;f=h;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=h;return}c[g>>2]=c[(c[e>>2]|0)+4>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[e>>2]>>2]|0))break;jG(c[d>>2]|0,c[c[g>>2]>>2]|0);c[f>>2]=(c[f>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+20}i=h;return}function jG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+48|0;g=d+32|0;e=d+28|0;f=d;c[g>>2]=a;c[e>>2]=b;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;c[f+24>>2]=0;c[f+4>>2]=202;c[f+8>>2]=203;c[f+24>>2]=c[g>>2];by(f,c[e>>2]|0)|0;i=d;return}function kG(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;h=k;e=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;c[e>>2]=a;c[f>>2]=b;if((d[(c[e>>2]|0)+453>>0]|0|0)!=2){i=k;return}c[g>>2]=c[(c[e>>2]|0)+8>>2];b=c[c[e>>2]>>2]|0;c[h>>2]=c[f>>2];c[j>>2]=Bh(b,36633,h)|0;Uw(c[g>>2]|0,161,c[(c[e>>2]|0)+468>>2]|0,0,0,c[j>>2]|0,-1)|0;i=k;return}function lG(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return d[(c[b>>2]|0)+37>>0]|0|0}function mG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;j=f+12|0;h=f+8|0;k=f+4|0;g=f;c[j>>2]=a;c[h>>2]=b;c[k>>2]=d;c[g>>2]=e;Vw(c[(c[j>>2]|0)+8>>2]|0,29,c[h>>2]|0,c[k>>2]|0,c[g>>2]|0)|0;oA(c[j>>2]|0,c[h>>2]|0,c[g>>2]|0);i=f;return}function nG(b,d){b=b|0;d=d|0;var f=0,g=0,h=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;v=i;i=i+64|0;f=v+56|0;g=v+52|0;u=v+48|0;k=v+44|0;t=v+40|0;h=v+36|0;p=v+32|0;n=v+28|0;m=v+24|0;j=v+20|0;s=v+16|0;r=v+12|0;o=v+8|0;q=v+4|0;l=v;c[f>>2]=b;c[g>>2]=d;c[u>>2]=c[(c[f>>2]|0)+8>>2];c[t>>2]=0;c[h>>2]=0;a[c[g>>2]>>0]=1;c[k>>2]=0;c[p>>2]=c[(c[g>>2]|0)+40>>2];while(1){if((c[k>>2]|0)>=(c[(c[g>>2]|0)+44>>2]|0))break;c[j>>2]=0;c[r>>2]=c[(c[c[p>>2]>>2]|0)+20>>2];if(c[r>>2]|0){c[m>>2]=c[c[r>>2]>>2];c[s>>2]=kA(c[f>>2]|0,c[m>>2]|0)|0;GA(c[f>>2]|0,c[r>>2]|0,c[s>>2]|0,0,1)|0}else{c[m>>2]=0;c[s>>2]=0}if((c[(c[p>>2]|0)+12>>2]|0)>=0){c[j>>2]=Cz(c[u>>2]|0)|0;xG(c[f>>2]|0,c[(c[p>>2]|0)+12>>2]|0,c[j>>2]|0,1,c[s>>2]|0)}if((e[(c[(c[p>>2]|0)+4>>2]|0)+2>>1]|0)&32){c[o>>2]=0;c[l>>2]=0;c[q>>2]=c[(c[r>>2]|0)+4>>2];while(1){if(c[o>>2]|0)break;if((c[l>>2]|0)>=(c[m>>2]|0))break;c[o>>2]=Ox(c[f>>2]|0,c[c[q>>2]>>2]|0)|0;c[l>>2]=(c[l>>2]|0)+1;c[q>>2]=(c[q>>2]|0)+20}if(!(c[o>>2]|0))c[o>>2]=c[(c[c[f>>2]>>2]|0)+8>>2];if((c[t>>2]|0)==0?(c[(c[g>>2]|0)+36>>2]|0)!=0:0){d=(c[f>>2]|0)+76|0;b=(c[d>>2]|0)+1|0;c[d>>2]=b;c[t>>2]=b}Uw(c[u>>2]|0,34,c[t>>2]|0,0,0,c[o>>2]|0,-4)|0}Uw(c[u>>2]|0,143,0,c[s>>2]|0,c[(c[p>>2]|0)+8>>2]|0,c[(c[p>>2]|0)+4>>2]|0,-5)|0;Fh(c[u>>2]|0,c[m>>2]&255);CA(c[f>>2]|0,c[s>>2]|0,c[m>>2]|0);nA(c[f>>2]|0,c[s>>2]|0,c[m>>2]|0);if(c[j>>2]|0){Gz(c[u>>2]|0,c[j>>2]|0);fC(c[f>>2]|0)}c[k>>2]=(c[k>>2]|0)+1;c[p>>2]=(c[p>>2]|0)+16}if(c[t>>2]|0)c[h>>2]=xz(c[u>>2]|0,45,c[t>>2]|0)|0;fC(c[f>>2]|0);c[k>>2]=0;c[n>>2]=c[(c[g>>2]|0)+28>>2];while(1){if((c[k>>2]|0)>=(c[(c[g>>2]|0)+36>>2]|0))break;xA(c[f>>2]|0,c[(c[n>>2]|0)+20>>2]|0,c[(c[n>>2]|0)+16>>2]|0);c[k>>2]=(c[k>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+24}a[c[g>>2]>>0]=0;fC(c[f>>2]|0);if(!(c[h>>2]|0)){i=v;return}Fz(c[u>>2]|0,c[h>>2]|0);i=v;return}function oG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;k=j+20|0;d=j+16|0;h=j+12|0;e=j+8|0;f=j+4|0;g=j;c[k>>2]=a;c[d>>2]=b;c[h>>2]=c[(c[k>>2]|0)+8>>2];c[e>>2]=0;c[f>>2]=c[(c[d>>2]|0)+40>>2];while(1){if((c[e>>2]|0)>=(c[(c[d>>2]|0)+44>>2]|0))break;c[g>>2]=c[(c[c[f>>2]>>2]|0)+20>>2];if(c[g>>2]|0)b=c[c[g>>2]>>2]|0;else b=0;Uw(c[h>>2]|0,145,c[(c[f>>2]|0)+8>>2]|0,b,0,c[(c[f>>2]|0)+4>>2]|0,-5)|0;c[e>>2]=(c[e>>2]|0)+1;c[f>>2]=(c[f>>2]|0)+16}i=j;return}function pG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+48|0;l=m;d=m+32|0;e=m+28|0;k=m+24|0;f=m+20|0;h=m+16|0;n=m+12|0;g=m+8|0;j=m+4|0;c[d>>2]=a;c[e>>2]=b;c[k>>2]=c[(c[d>>2]|0)+8>>2];c[n>>2]=(c[(c[e>>2]|0)+44>>2]|0)+(c[(c[e>>2]|0)+32>>2]|0);if(!(c[n>>2]|0)){i=m;return}Vw(c[k>>2]|0,25,0,c[(c[e>>2]|0)+16>>2]|0,c[(c[e>>2]|0)+20>>2]|0)|0; -c[h>>2]=c[(c[e>>2]|0)+40>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[e>>2]|0)+44>>2]|0))break;do if((c[(c[h>>2]|0)+12>>2]|0)>=0){c[g>>2]=c[c[h>>2]>>2];if((c[(c[g>>2]|0)+20>>2]|0)!=0?(c[c[(c[g>>2]|0)+20>>2]>>2]|0)==1:0){c[j>>2]=$F(c[d>>2]|0,c[(c[g>>2]|0)+20>>2]|0,0,0)|0;Uw(c[k>>2]|0,57,c[(c[h>>2]|0)+12>>2]|0,0,0,c[j>>2]|0,-6)|0;break}Ah(c[d>>2]|0,36582,l);c[(c[h>>2]|0)+12>>2]=-1}while(0);c[f>>2]=(c[f>>2]|0)+1;c[h>>2]=(c[h>>2]|0)+16}i=m;return}function qG(a,b){a=a|0;b=b|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;g=l+12|0;h=l+8|0;k=l+4|0;j=l;c[g>>2]=a;c[h>>2]=b;if((((c[(c[g>>2]|0)+36>>2]|0)==0?(c[c[c[g>>2]>>2]>>2]|0)==1:0)?(c[c[(c[g>>2]|0)+32>>2]>>2]|0)==1:0)?(c[(c[(c[g>>2]|0)+32>>2]|0)+8+20>>2]|0)==0:0){c[k>>2]=c[(c[(c[g>>2]|0)+32>>2]|0)+8+16>>2];c[j>>2]=c[c[(c[c[g>>2]>>2]|0)+4>>2]>>2];if((d[(c[k>>2]|0)+42>>0]|0)&16){c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}if((d[c[j>>2]>>0]|0|0)!=153){c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}if(!(c[(c[h>>2]|0)+44>>2]|0)){c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}if(!((e[(c[(c[(c[h>>2]|0)+40>>2]|0)+4>>2]|0)+2>>1]|0)&256)){c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}if(c[(c[j>>2]|0)+4>>2]&16){c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}else{c[f>>2]=c[k>>2];k=c[f>>2]|0;i=l;return k|0}}c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}function rG(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;l=n;j=n+28|0;k=n+24|0;g=n+20|0;h=n+16|0;m=n+12|0;c[j>>2]=b;c[k>>2]=e;c[g>>2]=f;if((d[(c[j>>2]|0)+453>>0]|0|0)!=2){i=n;return}if(c[g>>2]|0)if(!((d[(c[k>>2]|0)+42>>0]|0)&32))f=1;else f=(a[(c[g>>2]|0)+55>>0]&3|0)==2^1;else f=0;c[h>>2]=f&1;b=c[c[j>>2]>>2]|0;e=(c[h>>2]|0)!=0?36541:19266;if(c[h>>2]|0)f=c[c[g>>2]>>2]|0;else f=19266;c[l>>2]=c[c[k>>2]>>2];c[l+4>>2]=e;c[l+8>>2]=f;c[m>>2]=Bh(b,36564,l)|0;Uw(c[(c[j>>2]|0)+8>>2]|0,161,c[(c[j>>2]|0)+468>>2]|0,0,0,c[m>>2]|0,-1)|0;i=n;return}function sG(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+20|0;f=l+16|0;g=l+12|0;j=l+8|0;h=l+4|0;k=l;c[e>>2]=a;c[f>>2]=b;c[g>>2]=0;c[c[f>>2]>>2]=0;do if((((c[(c[e>>2]|0)+44>>2]|0)==1?(c[j>>2]=c[c[(c[e>>2]|0)+40>>2]>>2],c[h>>2]=c[(c[j>>2]|0)+20>>2],(c[h>>2]|0)!=0):0)?(c[c[h>>2]>>2]|0)==1:0)?(d[c[c[(c[h>>2]|0)+4>>2]>>2]>>0]|0|0)==154:0){c[k>>2]=c[(c[j>>2]|0)+8>>2];if(!(Td(c[k>>2]|0,36533)|0)){c[g>>2]=1;c[c[f>>2]>>2]=c[h>>2];break}if(!(Td(c[k>>2]|0,36537)|0)){c[g>>2]=2;c[c[f>>2]>>2]=c[h>>2]}}while(0);i=l;return c[g>>2]&255|0}function tG(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=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;E=i;i=i+96|0;s=E+84|0;h=E+80|0;B=E+76|0;t=E+72|0;u=E+68|0;D=E+64|0;C=E+60|0;v=E+56|0;A=E+52|0;j=E+48|0;z=E+44|0;q=E+40|0;w=E+36|0;m=E+32|0;x=E+28|0;y=E+24|0;o=E+20|0;n=E+16|0;p=E+12|0;l=E+8|0;k=E+4|0;r=E;c[s>>2]=a;c[h>>2]=b;c[B>>2]=e;c[t>>2]=f;c[u>>2]=g;c[D>>2]=c[(c[s>>2]|0)+8>>2];c[C>>2]=c[(c[B>>2]|0)+24>>2];c[v>>2]=Cz(c[D>>2]|0)|0;c[j>>2]=0;c[q>>2]=c[c[B>>2]>>2];c[w>>2]=d[c[u>>2]>>0];c[m>>2]=c[(c[u>>2]|0)+4>>2];if(c[(c[B>>2]|0)+16>>2]|0){Rw(c[D>>2]|0,14,c[(c[B>>2]|0)+12>>2]|0,c[(c[B>>2]|0)+16>>2]|0)|0;Ez(c[D>>2]|0,c[C>>2]|0)|0;Gz(c[D>>2]|0,c[(c[B>>2]|0)+16>>2]|0)}c[z>>2]=c[(c[B>>2]|0)+8>>2];if((c[w>>2]|0)==9|(c[w>>2]|0)==13){c[y>>2]=0;c[x>>2]=c[(c[u>>2]|0)+8>>2];c[p>>2]=c[t>>2]}else{c[y>>2]=Wz(c[s>>2]|0)|0;c[x>>2]=Wz(c[s>>2]|0)|0;c[p>>2]=1}c[o>>2]=(c[c[q>>2]>>2]|0)-(c[(c[B>>2]|0)+4>>2]|0);if((d[(c[B>>2]|0)+28>>0]|0)&1){e=(c[s>>2]|0)+76|0;a=(c[e>>2]|0)+1|0;c[e>>2]=a;c[r>>2]=a;a=(c[s>>2]|0)+72|0;e=c[a>>2]|0;c[a>>2]=e+1;c[n>>2]=e;if(c[(c[B>>2]|0)+16>>2]|0)c[j>>2]=UA(c[s>>2]|0)|0;Vw(c[D>>2]|0,60,c[n>>2]|0,c[r>>2]|0,(c[o>>2]|0)+1+(c[p>>2]|0)|0)|0;if(c[j>>2]|0)Fz(c[D>>2]|0,c[j>>2]|0);c[A>>2]=1+(Rw(c[D>>2]|0,106,c[z>>2]|0,c[C>>2]|0)|0);wG(c[D>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[v>>2]|0);Vw(c[D>>2]|0,100,c[z>>2]|0,c[r>>2]|0,c[n>>2]|0)|0;c[k>>2]=0}else{c[A>>2]=1+(Rw(c[D>>2]|0,107,c[z>>2]|0,c[C>>2]|0)|0);wG(c[D>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[v>>2]|0);c[n>>2]=c[z>>2];c[k>>2]=1}c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[p>>2]|0))break;Vw(c[D>>2]|0,47,c[n>>2]|0,(c[o>>2]|0)+(c[k>>2]|0)+(c[l>>2]|0)|0,(c[x>>2]|0)+(c[l>>2]|0)|0)|0;c[l>>2]=(c[l>>2]|0)+1}a:do switch(c[w>>2]|0){case 12:{Rw(c[D>>2]|0,74,c[m>>2]|0,c[y>>2]|0)|0;Vw(c[D>>2]|0,75,c[m>>2]|0,c[x>>2]|0,c[y>>2]|0)|0;Fh(c[D>>2]|0,8);break}case 11:{Uw(c[D>>2]|0,49,c[x>>2]|0,1,c[y>>2]|0,(c[u>>2]|0)+1|0,1)|0;CA(c[s>>2]|0,c[x>>2]|0,1);Rw(c[D>>2]|0,110,c[m>>2]|0,c[y>>2]|0)|0;break}case 10:{mG(c[s>>2]|0,c[x>>2]|0,c[m>>2]|0,1);break}default:{h=c[D>>2]|0;j=c[u>>2]|0;if((c[w>>2]|0)==9){Rw(h,33,c[j+8>>2]|0,c[t>>2]|0)|0;CA(c[s>>2]|0,c[(c[u>>2]|0)+8>>2]|0,c[t>>2]|0);break a}else{xz(h,18,c[j+4>>2]|0)|0;break a}}}while(0);if(c[y>>2]|0){_z(c[s>>2]|0,c[x>>2]|0);_z(c[s>>2]|0,c[y>>2]|0)}Gz(c[D>>2]|0,c[v>>2]|0);k=c[D>>2]|0;j=c[z>>2]|0;h=c[A>>2]|0;if((d[(c[B>>2]|0)+28>>0]|0)&1)Rw(k,3,j,h)|0;else Rw(k,7,j,h)|0;if(!(c[(c[B>>2]|0)+12>>2]|0)){B=c[D>>2]|0;D=c[C>>2]|0;Gz(B,D);i=E;return}xz(c[D>>2]|0,15,c[(c[B>>2]|0)+12>>2]|0)|0;B=c[D>>2]|0;D=c[C>>2]|0;Gz(B,D);i=E;return}function uG(e,f,g){e=e|0;f=f|0;g=g|0;var h=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;A=i;i=i+80|0;v=A+8|0;u=A;h=A+72|0;j=A+68|0;k=A+64|0;t=A+60|0;n=A+56|0;p=A+52|0;l=A+48|0;m=A+44|0;s=A+40|0;q=A+36|0;y=A+32|0;r=A+28|0;x=A+24|0;o=A+20|0;z=A+16|0;w=A+12|0;c[h>>2]=e;c[j>>2]=f;c[k>>2]=g;c[t>>2]=c[(c[h>>2]|0)+8>>2];c[l>>2]=c[c[h>>2]>>2];if(a[(c[h>>2]|0)+453>>0]|0){i=A;return}if(d[(c[h>>2]|0)+16>>0]|0){i=A;return}if(d[(c[l>>2]|0)+65>>0]|0){i=A;return}a[(c[h>>2]|0)+16>>0]=1;c[m>>2]=(c[(c[l>>2]|0)+24>>2]&4|0)!=0&1;c[s>>2]=(c[(c[l>>2]|0)+24>>2]&64|0)!=0&1;OB(c[t>>2]|0,c[c[k>>2]>>2]|0);c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[c[k>>2]>>2]|0))break;c[q>>2]=c[(c[(c[k>>2]|0)+4>>2]|0)+((c[n>>2]|0)*20|0)>>2];do if(c[q>>2]|0){if(c[(c[(c[k>>2]|0)+4>>2]|0)+((c[n>>2]|0)*20|0)+4>>2]|0){c[y>>2]=c[(c[(c[k>>2]|0)+4>>2]|0)+((c[n>>2]|0)*20|0)+4>>2];PB(c[t>>2]|0,c[n>>2]|0,0,c[y>>2]|0,-1)|0;break}if((d[c[q>>2]>>0]|0)!=152?(d[c[q>>2]>>0]|0)!=154:0){c[w>>2]=c[(c[(c[k>>2]|0)+4>>2]|0)+((c[n>>2]|0)*20|0)+8>>2];g=c[l>>2]|0;if(!(c[w>>2]|0)){c[v>>2]=(c[n>>2]|0)+1;g=Bh(g,36524,v)|0}else g=nh(g,c[w>>2]|0)|0;c[w>>2]=g;PB(c[t>>2]|0,c[n>>2]|0,0,c[w>>2]|0,170)|0;break}c[o>>2]=b[(c[q>>2]|0)+32>>1];c[p>>2]=0;while(1){if((c[p>>2]|0)>=(c[c[j>>2]>>2]|0))break;if((c[(c[j>>2]|0)+8+((c[p>>2]|0)*72|0)+44>>2]|0)==(c[(c[q>>2]|0)+28>>2]|0))break;c[p>>2]=(c[p>>2]|0)+1}c[r>>2]=c[(c[j>>2]|0)+8+((c[p>>2]|0)*72|0)+16>>2];if((c[o>>2]|0)<0)c[o>>2]=b[(c[r>>2]|0)+32>>1];if((c[o>>2]|0)<0)c[x>>2]=25592;else c[x>>2]=c[(c[(c[r>>2]|0)+4>>2]|0)+((c[o>>2]|0)*24|0)>>2];if(!((c[s>>2]|0)!=0|(c[m>>2]|0)!=0)){e=c[t>>2]|0;f=c[n>>2]|0;PB(e,f,0,nh(c[l>>2]|0,c[(c[(c[k>>2]|0)+4>>2]|0)+((c[n>>2]|0)*20|0)+8>>2]|0)|0,170)|0;break}if(c[m>>2]|0){c[z>>2]=0;f=c[l>>2]|0;e=c[x>>2]|0;c[u>>2]=c[c[r>>2]>>2];c[u+4>>2]=e;c[z>>2]=Bh(f,31016,u)|0;PB(c[t>>2]|0,c[n>>2]|0,0,c[z>>2]|0,170)|0;break}else{PB(c[t>>2]|0,c[n>>2]|0,0,c[x>>2]|0,-1)|0;break}}while(0);c[n>>2]=(c[n>>2]|0)+1}vG(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0);i=A;return}function vG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+64|0;m=l+56|0;n=l+52|0;e=l+48|0;j=l+44|0;f=l+40|0;h=l+8|0;g=l+4|0;k=l;c[m>>2]=a;c[n>>2]=b;c[e>>2]=d;c[j>>2]=c[(c[m>>2]|0)+8>>2];c[h+4>>2]=c[n>>2];c[h>>2]=c[m>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[e>>2]>>2]|0))break;c[g>>2]=c[(c[(c[e>>2]|0)+4>>2]|0)+((c[f>>2]|0)*20|0)>>2];c[k>>2]=Mx(h,c[g>>2]|0,0)|0;PB(c[j>>2]|0,c[f>>2]|0,1,c[k>>2]|0,-1)|0;c[f>>2]=(c[f>>2]|0)+1}i=l;return}function wG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if((c[f>>2]|0)<=0){i=h;return}Vw(c[e>>2]|0,138,c[f>>2]|0,c[g>>2]|0,1)|0;i=h;return}function xG(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,j=0,k=0,l=0,m=0,n=0,o=0;g=i;i=i+32|0;j=g+24|0;k=g+20|0;o=g+16|0;m=g+12|0;n=g+8|0;l=g+4|0;h=g;c[j>>2]=a;c[k>>2]=b;c[o>>2]=d;c[m>>2]=e;c[n>>2]=f;c[l>>2]=c[(c[j>>2]|0)+8>>2];c[h>>2]=Wz(c[j>>2]|0)|0;Eh(c[l>>2]|0,69,c[k>>2]|0,c[o>>2]|0,c[n>>2]|0,c[m>>2]|0)|0;Vw(c[l>>2]|0,49,c[n>>2]|0,c[m>>2]|0,c[h>>2]|0)|0;Rw(c[l>>2]|0,110,c[k>>2]|0,c[h>>2]|0)|0;_z(c[j>>2]|0,c[h>>2]|0);i=g;return}function yG(f,g){f=f|0;g=g|0;var h=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;A=i;i=i+80|0;t=A+64|0;h=A+60|0;u=A+56|0;w=A+52|0;q=A+48|0;z=A+44|0;r=A+40|0;x=A+36|0;p=A+32|0;m=A+28|0;k=A+24|0;j=A+20|0;l=A+16|0;o=A+12|0;s=A+8|0;n=A+4|0;y=A;v=A+68|0;c[h>>2]=f;c[u>>2]=g;c[q>>2]=c[(c[h>>2]|0)+24>>2];c[z>>2]=c[c[q>>2]>>2];c[r>>2]=c[(c[q>>2]|0)+4>>2];c[x>>2]=c[(c[q>>2]|0)+12>>2];switch(d[c[u>>2]>>0]|0){case 152:case 154:{a:do if(c[r>>2]|0){c[p>>2]=(c[r>>2]|0)+8;c[w>>2]=0;while(1){if((c[w>>2]|0)>=(c[c[r>>2]>>2]|0))break a;if((c[(c[u>>2]|0)+28>>2]|0)==(c[(c[p>>2]|0)+44>>2]|0))break;c[w>>2]=(c[w>>2]|0)+1;c[p>>2]=(c[p>>2]|0)+72}c[m>>2]=c[(c[x>>2]|0)+28>>2];c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[(c[x>>2]|0)+32>>2]|0))break;if((c[(c[m>>2]|0)+4>>2]|0)==(c[(c[u>>2]|0)+28>>2]|0)?(c[(c[m>>2]|0)+8>>2]|0)==(b[(c[u>>2]|0)+32>>1]|0):0)break;c[k>>2]=(c[k>>2]|0)+1;c[m>>2]=(c[m>>2]|0)+24}if((c[k>>2]|0)>=(c[(c[x>>2]|0)+32>>2]|0)?(y=AG(c[c[z>>2]>>2]|0,c[x>>2]|0)|0,c[k>>2]=y,(y|0)>=0):0){c[m>>2]=(c[(c[x>>2]|0)+28>>2]|0)+((c[k>>2]|0)*24|0);c[c[m>>2]>>2]=c[(c[u>>2]|0)+44>>2];c[(c[m>>2]|0)+4>>2]=c[(c[u>>2]|0)+28>>2];c[(c[m>>2]|0)+8>>2]=b[(c[u>>2]|0)+32>>1];y=(c[z>>2]|0)+76|0;z=(c[y>>2]|0)+1|0;c[y>>2]=z;c[(c[m>>2]|0)+16>>2]=z;c[(c[m>>2]|0)+12>>2]=-1;c[(c[m>>2]|0)+20>>2]=c[u>>2];b:do if(c[(c[x>>2]|0)+24>>2]|0){c[o>>2]=c[(c[x>>2]|0)+24>>2];c[s>>2]=c[(c[o>>2]|0)+4>>2];c[l>>2]=c[c[o>>2]>>2];c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[l>>2]|0))break b;c[n>>2]=c[c[s>>2]>>2];if(((d[c[n>>2]>>0]|0)==152?(c[(c[n>>2]|0)+28>>2]|0)==(c[(c[u>>2]|0)+28>>2]|0):0)?(b[(c[n>>2]|0)+32>>1]|0)==(b[(c[u>>2]|0)+32>>1]|0):0)break;c[j>>2]=(c[j>>2]|0)+1;c[s>>2]=(c[s>>2]|0)+20}c[(c[m>>2]|0)+12>>2]=c[j>>2]}while(0);if((c[(c[m>>2]|0)+12>>2]|0)<0){y=(c[x>>2]|0)+12|0;z=c[y>>2]|0;c[y>>2]=z+1;c[(c[m>>2]|0)+12>>2]=z}}c[(c[u>>2]|0)+40>>2]=c[x>>2];a[c[u>>2]>>0]=-102;b[(c[u>>2]|0)+34>>1]=c[k>>2]}while(0);c[t>>2]=1;z=c[t>>2]|0;i=A;return z|0}case 153:{if((e[(c[q>>2]|0)+28>>1]&8|0)==0?(c[(c[h>>2]|0)+16>>2]|0)==(d[(c[u>>2]|0)+38>>0]|0):0){c[y>>2]=c[(c[x>>2]|0)+40>>2];c[w>>2]=0;while(1){if((c[w>>2]|0)>=(c[(c[x>>2]|0)+44>>2]|0))break;if(!(py(c[c[y>>2]>>2]|0,c[u>>2]|0,-1)|0))break;c[w>>2]=(c[w>>2]|0)+1;c[y>>2]=(c[y>>2]|0)+16}do if((c[w>>2]|0)>=(c[(c[x>>2]|0)+44>>2]|0)?(a[v>>0]=a[(c[c[z>>2]>>2]|0)+62>>0]|0,c[w>>2]=BG(c[c[z>>2]>>2]|0,c[x>>2]|0)|0,(c[w>>2]|0)>=0):0){c[y>>2]=(c[(c[x>>2]|0)+40>>2]|0)+(c[w>>2]<<4);c[c[y>>2]>>2]=c[u>>2];j=(c[z>>2]|0)+76|0;h=(c[j>>2]|0)+1|0;c[j>>2]=h;c[(c[y>>2]|0)+8>>2]=h;h=c[c[z>>2]>>2]|0;j=c[(c[u>>2]|0)+8>>2]|0;k=If(c[(c[u>>2]|0)+8>>2]|0)|0;if(c[(c[u>>2]|0)+20>>2]|0)l=c[c[(c[u>>2]|0)+20>>2]>>2]|0;else l=0;v=gi(h,j,k,l,a[v>>0]|0,0)|0;c[(c[y>>2]|0)+4>>2]=v;if(c[(c[u>>2]|0)+4>>2]&16){v=(c[z>>2]|0)+72|0;z=c[v>>2]|0;c[v>>2]=z+1;c[(c[y>>2]|0)+12>>2]=z;break}else{c[(c[y>>2]|0)+12>>2]=-1;break}}while(0);b[(c[u>>2]|0)+34>>1]=c[w>>2];c[(c[u>>2]|0)+40>>2]=c[x>>2];c[t>>2]=1;z=c[t>>2]|0;i=A;return z|0}c[t>>2]=0;z=c[t>>2]|0;i=A;return z|0}default:{c[t>>2]=0;z=c[t>>2]|0;i=A;return z|0}}return 0}function zG(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 0}function AG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;d=e;c[g>>2]=a;c[f>>2]=b;b=rC(c[g>>2]|0,c[(c[f>>2]|0)+28>>2]|0,24,(c[f>>2]|0)+32|0,d)|0;c[(c[f>>2]|0)+28>>2]=b;i=e;return c[d>>2]|0}function BG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;d=e;c[g>>2]=a;c[f>>2]=b;b=rC(c[g>>2]|0,c[(c[f>>2]|0)+40>>2]|0,16,(c[f>>2]|0)+44|0,d)|0;c[(c[f>>2]|0)+40>>2]=b;i=e;return c[d>>2]|0}function CG(b,f,g,h,j,k,l){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;J=i;i=i+96|0;r=J+88|0;s=J+84|0;m=J+80|0;n=J+76|0;o=J+72|0;t=J+68|0;p=J+64|0;I=J+60|0;x=J+56|0;z=J+52|0;q=J+48|0;F=J+44|0;H=J+40|0;B=J+36|0;C=J+32|0;y=J+28|0;G=J+24|0;v=J+20|0;w=J+16|0;E=J+12|0;A=J+8|0;D=J+4|0;u=J;c[r>>2]=b;c[s>>2]=f;c[m>>2]=g;c[n>>2]=h;c[o>>2]=j;c[t>>2]=k;c[p>>2]=l;c[I>>2]=c[(c[r>>2]|0)+8>>2];c[x>>2]=(d[(c[s>>2]|0)+28>>0]&1|0)==0&1;c[z>>2]=c[c[c[s>>2]>>2]>>2];c[q>>2]=(c[z>>2]|0)+(c[x>>2]|0)+(c[t>>2]|0);h=(c[r>>2]|0)+76|0;j=(c[h>>2]|0)+1|0;c[h>>2]=j;c[H>>2]=j;c[B>>2]=c[(c[s>>2]|0)+4>>2];if(c[p>>2]|0)c[F>>2]=(c[n>>2]|0)-(c[z>>2]|0)-(c[x>>2]|0);else{c[F>>2]=(c[(c[r>>2]|0)+76>>2]|0)+1;j=(c[r>>2]|0)+76|0;c[j>>2]=(c[j>>2]|0)+(c[q>>2]|0)}k=c[m>>2]|0;if(c[(c[m>>2]|0)+12>>2]|0)k=(c[k+12>>2]|0)+1|0;else k=c[k+8>>2]|0;c[y>>2]=k;m=Cz(c[I>>2]|0)|0;c[(c[s>>2]|0)+24>>2]=m;GA(c[r>>2]|0,c[c[s>>2]>>2]|0,c[F>>2]|0,c[o>>2]|0,5)|0;if(c[x>>2]|0)Rw(c[I>>2]|0,73,c[(c[s>>2]|0)+8>>2]|0,(c[F>>2]|0)+(c[z>>2]|0)|0)|0;if(!(c[p>>2]|0))mG(c[r>>2]|0,c[n>>2]|0,(c[F>>2]|0)+(c[z>>2]|0)+(c[x>>2]|0)|0,c[t>>2]|0);Vw(c[I>>2]|0,49,(c[F>>2]|0)+(c[B>>2]|0)|0,(c[q>>2]|0)-(c[B>>2]|0)|0,c[H>>2]|0)|0;if((c[B>>2]|0)>0){c[G>>2]=(c[(c[r>>2]|0)+76>>2]|0)+1;k=(c[r>>2]|0)+76|0;c[k>>2]=(c[k>>2]|0)+(c[(c[s>>2]|0)+4>>2]|0);c[A>>2]=(c[z>>2]|0)-(c[(c[s>>2]|0)+4>>2]|0)+(c[x>>2]|0);k=c[I>>2]|0;if(c[x>>2]|0)c[v>>2]=xz(k,46,(c[F>>2]|0)+(c[z>>2]|0)|0)|0;else c[v>>2]=xz(k,59,c[(c[s>>2]|0)+8>>2]|0)|0;Vw(c[I>>2]|0,42,c[G>>2]|0,c[F>>2]|0,c[(c[s>>2]|0)+4>>2]|0)|0;c[E>>2]=Mz(c[I>>2]|0,c[(c[s>>2]|0)+20>>2]|0)|0;if(a[(c[c[r>>2]>>2]|0)+65>>0]|0){i=J;return}c[(c[E>>2]|0)+8>>2]=(c[A>>2]|0)+(c[t>>2]|0);c[D>>2]=c[(c[E>>2]|0)+16>>2];kR(c[(c[D>>2]|0)+16>>2]|0,0,e[(c[D>>2]|0)+6>>1]|0)|0;Ih(c[I>>2]|0,-1,c[D>>2]|0,-6);D=$F(c[r>>2]|0,c[c[s>>2]>>2]|0,c[B>>2]|0,(e[(c[D>>2]|0)+8>>1]|0)-1|0)|0;c[(c[E>>2]|0)+16>>2]=D;c[w>>2]=Bz(c[I>>2]|0)|0;Vw(c[I>>2]|0,43,(c[w>>2]|0)+1|0,0,(c[w>>2]|0)+1|0)|0;D=Cz(c[I>>2]|0)|0;c[(c[s>>2]|0)+16>>2]=D;D=(c[r>>2]|0)+76|0;E=(c[D>>2]|0)+1|0;c[D>>2]=E;c[(c[s>>2]|0)+12>>2]=E;Rw(c[I>>2]|0,14,c[(c[s>>2]|0)+12>>2]|0,c[(c[s>>2]|0)+16>>2]|0)|0;xz(c[I>>2]|0,120,c[(c[s>>2]|0)+8>>2]|0)|0;if(c[y>>2]|0)Rw(c[I>>2]|0,46,c[y>>2]|0,c[(c[s>>2]|0)+24>>2]|0)|0;Fz(c[I>>2]|0,c[v>>2]|0);mG(c[r>>2]|0,c[F>>2]|0,c[G>>2]|0,c[(c[s>>2]|0)+4>>2]|0);Fz(c[I>>2]|0,c[w>>2]|0)}if(d[(c[s>>2]|0)+28>>0]&1)c[C>>2]=109;else c[C>>2]=110;Rw(c[I>>2]|0,c[C>>2]|0,c[(c[s>>2]|0)+8>>2]|0,c[H>>2]|0)|0;if(!(c[y>>2]|0)){i=J;return}c[u>>2]=Vw(c[I>>2]|0,140,c[y>>2]|0,0,1)|0;xz(c[I>>2]|0,105,c[(c[s>>2]|0)+8>>2]|0)|0;xz(c[I>>2]|0,95,c[(c[s>>2]|0)+8>>2]|0)|0;Fz(c[I>>2]|0,c[u>>2]|0);i=J;return}function DG(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;m=q+20|0;j=q+16|0;n=q+12|0;o=q+8|0;p=q+4|0;k=q;c[j>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;if(!(c[n>>2]|0)){c[m>>2]=0;p=c[m>>2]|0;i=q;return p|0}do if((d[c[n>>2]>>0]|0)==152?(c[(c[n>>2]|0)+28>>2]|0)==(c[o>>2]|0):0)if((b[(c[n>>2]|0)+32>>1]|0)<0){a[c[n>>2]>>0]=101;break}else{c[k>>2]=ny(c[j>>2]|0,c[(c[(c[p>>2]|0)+4>>2]|0)+((b[(c[n>>2]|0)+32>>1]|0)*20|0)>>2]|0,0)|0;Zu(c[j>>2]|0,c[n>>2]|0);c[n>>2]=c[k>>2];break}else l=8;while(0);do if((l|0)==8){e=DG(c[j>>2]|0,c[(c[n>>2]|0)+12>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;c[(c[n>>2]|0)+12>>2]=e;e=DG(c[j>>2]|0,c[(c[n>>2]|0)+16>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;c[(c[n>>2]|0)+16>>2]=e;j=c[j>>2]|0;e=(c[n>>2]|0)+20|0;if(c[(c[n>>2]|0)+4>>2]&2048){EG(j,c[e>>2]|0,c[o>>2]|0,c[p>>2]|0,1);break}else{FG(j,c[e>>2]|0,c[o>>2]|0,c[p>>2]|0);break}}while(0);c[m>>2]=c[n>>2];p=c[m>>2]|0;i=q;return p|0}function EG(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;h=q+28|0;j=q+24|0;k=q+20|0;l=q+16|0;m=q+12|0;p=q+8|0;o=q+4|0;n=q;c[h>>2]=a;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;if(!(c[j>>2]|0)){i=q;return}while(1){FG(c[h>>2]|0,c[c[j>>2]>>2]|0,c[k>>2]|0,c[l>>2]|0);FG(c[h>>2]|0,c[(c[j>>2]|0)+40>>2]|0,c[k>>2]|0,c[l>>2]|0);FG(c[h>>2]|0,c[(c[j>>2]|0)+48>>2]|0,c[k>>2]|0,c[l>>2]|0);f=DG(c[h>>2]|0,c[(c[j>>2]|0)+44>>2]|0,c[k>>2]|0,c[l>>2]|0)|0;c[(c[j>>2]|0)+44>>2]=f;f=DG(c[h>>2]|0,c[(c[j>>2]|0)+36>>2]|0,c[k>>2]|0,c[l>>2]|0)|0;c[(c[j>>2]|0)+36>>2]=f;c[p>>2]=c[(c[j>>2]|0)+32>>2];c[n>>2]=c[c[p>>2]>>2];c[o>>2]=(c[p>>2]|0)+8;while(1){if((c[n>>2]|0)<=0)break;EG(c[h>>2]|0,c[(c[o>>2]|0)+20>>2]|0,c[k>>2]|0,c[l>>2]|0,1);if((d[(c[o>>2]|0)+36+1>>0]|0)>>>2&1)FG(c[h>>2]|0,c[(c[o>>2]|0)+64>>2]|0,c[k>>2]|0,c[l>>2]|0);c[n>>2]=(c[n>>2]|0)+-1;c[o>>2]=(c[o>>2]|0)+72}if(!(c[m>>2]|0)){h=9;break}f=c[(c[j>>2]|0)+52>>2]|0;c[j>>2]=f;if(!f){h=9;break}}if((h|0)==9){i=q;return}}function FG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;if(!(c[g>>2]|0)){i=l;return}c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[c[g>>2]>>2]|0))break;b=DG(c[f>>2]|0,c[(c[(c[g>>2]|0)+4>>2]|0)+((c[k>>2]|0)*20|0)>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;c[(c[(c[g>>2]|0)+4>>2]|0)+((c[k>>2]|0)*20|0)>>2]=b;c[k>>2]=(c[k>>2]|0)+1}i=l;return}function GG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+20|0;f=l+16|0;g=l+12|0;j=l+8|0;h=l+4|0;k=l;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[h>>2]=1;c[k>>2]=0;while(1){if(!(c[(c[f>>2]|0)+52>>2]|0))break;c[f>>2]=c[(c[f>>2]|0)+52>>2];c[h>>2]=(c[h>>2]|0)+1}while(1){if(!(c[f>>2]|0)){e=7;break}c[j>>2]=c[(c[f>>2]|0)+52>>2];c[(c[f>>2]|0)+52>>2]=0;c[k>>2]=Cv(c[e>>2]|0,c[f>>2]|0,c[g>>2]|0)|0;c[(c[f>>2]|0)+52>>2]=c[j>>2];if(c[k>>2]|0){e=7;break}d=c[h>>2]|0;a=(c[f>>2]|0)+24|0;c[a>>2]=d;c[a+4>>2]=((d|0)<0)<<31>>31;c[f>>2]=c[(c[f>>2]|0)+56>>2]}if((e|0)==7){i=l;return c[k>>2]|0}return 0}function HG(a,f,g){a=a|0;f=f|0;g=g|0;var h=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;I=i;i=i+128|0;H=I;q=I+112|0;r=I+108|0;s=I+104|0;j=I+100|0;n=I+96|0;G=I+92|0;C=I+88|0;v=I+84|0;u=I+80|0;t=I+76|0;x=I+72|0;D=I+68|0;y=I+64|0;m=I+60|0;l=I+56|0;w=I+36|0;h=I+32|0;p=I+28|0;B=I+24|0;z=I+20|0;A=I+16|0;E=I+12|0;F=I+8|0;o=I+4|0;c[q>>2]=a;c[r>>2]=f;c[s>>2]=g;c[j>>2]=c[(c[r>>2]|0)+32>>2];c[n>>2]=c[c[c[r>>2]>>2]>>2];c[G>>2]=c[(c[q>>2]|0)+8>>2];c[C>>2]=c[(c[r>>2]|0)+52>>2];c[x>>2]=0;c[m>>2]=0;c[l>>2]=5;if(Mw(c[q>>2]|0,33,0,0,0)|0){i=I;return}c[t>>2]=Cz(c[G>>2]|0)|0;aG(c[q>>2]|0,c[r>>2]|0,c[t>>2]|0);c[z>>2]=c[(c[r>>2]|0)+60>>2];c[A>>2]=c[(c[r>>2]|0)+64>>2];c[E>>2]=c[(c[r>>2]|0)+8>>2];c[F>>2]=c[(c[r>>2]|0)+12>>2];c[(c[r>>2]|0)+64>>2]=0;c[(c[r>>2]|0)+60>>2]=0;c[(c[r>>2]|0)+12>>2]=0;c[(c[r>>2]|0)+8>>2]=0;c[B>>2]=c[(c[r>>2]|0)+48>>2];c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[c[j>>2]>>2]|0))break;f=c[h>>2]|0;if((d[(c[j>>2]|0)+8+((c[h>>2]|0)*72|0)+36+1>>0]|0)>>>5&1){k=5;break}c[h>>2]=f+1}if((k|0)==5)c[x>>2]=c[(c[j>>2]|0)+8+(f*72|0)+44>>2];k=(c[q>>2]|0)+72|0;f=c[k>>2]|0;c[k>>2]=f+1;c[y>>2]=f;f=(c[B>>2]|0)!=0;if((d[(c[r>>2]|0)+4>>0]|0|0)==115){c[l>>2]=f?8:6;j=(c[q>>2]|0)+72|0;k=c[j>>2]|0;c[j>>2]=k+1;c[m>>2]=k}else c[l>>2]=f?7:5;ZA(w,c[l>>2]|0,c[y>>2]|0);k=(c[q>>2]|0)+76|0;l=(c[k>>2]|0)+1|0;c[k>>2]=l;c[D>>2]=l;Vw(c[G>>2]|0,60,c[x>>2]|0,c[D>>2]|0,c[n>>2]|0)|0;if(c[B>>2]|0){c[o>>2]=LG(c[q>>2]|0,c[r>>2]|0,1)|0;Uw(c[G>>2]|0,57,c[y>>2]|0,(c[c[B>>2]>>2]|0)+2|0,0,c[o>>2]|0,-6)|0;c[w+16>>2]=c[B>>2]}else Rw(c[G>>2]|0,57,c[y>>2]|0,c[n>>2]|0)|0;if(c[m>>2]|0){o=Rw(c[G>>2]|0,57,c[m>>2]|0,0)|0;c[(c[r>>2]|0)+16>>2]=o;o=(c[r>>2]|0)+6|0;b[o>>1]=e[o>>1]|0|16}c[(c[r>>2]|0)+48>>2]=0;c[(c[C>>2]|0)+56>>2]=0;c[p>>2]=Cv(c[q>>2]|0,c[C>>2]|0,w)|0;c[(c[C>>2]|0)+56>>2]=c[r>>2];if(!(c[p>>2]|0)){c[v>>2]=Rw(c[G>>2]|0,108,c[y>>2]|0,c[t>>2]|0)|0;xz(c[G>>2]|0,104,c[x>>2]|0)|0;f=c[G>>2]|0;g=c[y>>2]|0;if(c[B>>2]|0)Vw(f,47,g,(c[c[B>>2]>>2]|0)+1|0,c[D>>2]|0)|0;else Rw(f,102,g,c[D>>2]|0)|0;xz(c[G>>2]|0,95,c[y>>2]|0)|0;c[u>>2]=Cz(c[G>>2]|0)|0;wG(c[G>>2]|0,c[F>>2]|0,c[u>>2]|0);hG(c[q>>2]|0,c[r>>2]|0,c[c[r>>2]>>2]|0,c[x>>2]|0,0,0,c[s>>2]|0,c[u>>2]|0,c[t>>2]|0);if(c[E>>2]|0)Rw(c[G>>2]|0,141,c[E>>2]|0,c[t>>2]|0)|0;Gz(c[G>>2]|0,c[u>>2]|0);if((e[(c[r>>2]|0)+6>>1]|0)&8)Ah(c[q>>2]|0,36805,H);else{c[(c[r>>2]|0)+52>>2]=0;Cv(c[q>>2]|0,c[r>>2]|0,w)|0;c[(c[r>>2]|0)+52>>2]=c[C>>2]}Ez(c[G>>2]|0,c[v>>2]|0)|0;Gz(c[G>>2]|0,c[t>>2]|0)}Vu(c[c[q>>2]>>2]|0,c[(c[r>>2]|0)+48>>2]|0);c[(c[r>>2]|0)+48>>2]=c[B>>2];c[(c[r>>2]|0)+60>>2]=c[z>>2];c[(c[r>>2]|0)+64>>2]=c[A>>2];i=I;return}function IG(f,g,h){f=f|0;g=g|0;h=h|0;var 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,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;ca=i;i=i+224|0;q=ca+212|0;r=ca+208|0;s=ca+204|0;t=ca+200|0;j=ca+196|0;k=ca+192|0;T=ca+188|0;ba=ca+184|0;I=ca+164|0;J=ca+144|0;U=ca+140|0;V=ca+136|0;F=ca+132|0;G=ca+128|0;Y=ca+124|0;Z=ca+120|0;D=ca+116|0;E=ca+112|0;z=ca+108|0;A=ca+104|0;B=ca+100|0;y=ca+96|0;w=ca+92|0;x=ca+88|0;W=ca+84|0;X=ca+80|0;_=ca+76|0;$=ca+72|0;aa=ca+68|0;M=ca+64|0;N=ca+60|0;v=ca+56|0;P=ca+52|0;R=ca+48|0;S=ca+44|0;H=ca+40|0;p=ca+36|0;O=ca+32|0;u=ca+28|0;K=ca+24|0;L=ca+20|0;m=ca+16|0;o=ca+12|0;n=ca+8|0;l=ca+4|0;Q=ca;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;c[E>>2]=0;c[R>>2]=0;c[H>>2]=c[c[r>>2]>>2];c[ba>>2]=c[(c[r>>2]|0)+8>>2];c[N>>2]=Cz(c[ba>>2]|0)|0;c[M>>2]=Cz(c[ba>>2]|0)|0;c[P>>2]=d[(c[s>>2]|0)+4>>0];c[T>>2]=c[(c[s>>2]|0)+52>>2];c[p>>2]=c[(c[s>>2]|0)+48>>2];c[O>>2]=c[c[p>>2]>>2];a:do if((c[P>>2]|0)!=116){c[j>>2]=1;while(1){if(d[(c[H>>2]|0)+65>>0]|0)break a;if((c[j>>2]|0)>(c[c[c[s>>2]>>2]>>2]|0))break a;c[k>>2]=0;c[m>>2]=c[(c[p>>2]|0)+4>>2];while(1){if((c[k>>2]|0)>=(c[O>>2]|0))break;if((e[(c[m>>2]|0)+16>>1]|0|0)==(c[j>>2]|0))break;c[k>>2]=(c[k>>2]|0)+1;c[m>>2]=(c[m>>2]|0)+20}if((c[k>>2]|0)==(c[O>>2]|0)){c[o>>2]=Jv(c[H>>2]|0,132,0)|0;if(!(c[o>>2]|0))break;f=(c[o>>2]|0)+4|0;c[f>>2]=c[f>>2]|1024;c[(c[o>>2]|0)+8>>2]=c[j>>2];c[p>>2]=Gv(c[r>>2]|0,c[p>>2]|0,c[o>>2]|0)|0;if(c[p>>2]|0){h=c[j>>2]&65535;f=c[O>>2]|0;c[O>>2]=f+1;b[(c[(c[p>>2]|0)+4>>2]|0)+(f*20|0)+16>>1]=h}}c[j>>2]=(c[j>>2]|0)+1}c[q>>2]=7;ba=c[q>>2]|0;i=ca;return ba|0}while(0);c[u>>2]=Fw(c[H>>2]|0,(c[O>>2]|0)+1<<2,0)|0;if(c[u>>2]|0){c[c[u>>2]>>2]=c[O>>2];c[j>>2]=1;c[n>>2]=c[(c[p>>2]|0)+4>>2];while(1){if((c[j>>2]|0)>(c[O>>2]|0))break;c[(c[u>>2]|0)+(c[j>>2]<<2)>>2]=(e[(c[n>>2]|0)+16>>1]|0)-1;c[j>>2]=(c[j>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+20}c[S>>2]=LG(c[r>>2]|0,c[s>>2]|0,1)|0}else c[S>>2]=0;c[(c[s>>2]|0)+48>>2]=c[p>>2];f=vy(c[c[r>>2]>>2]|0,c[p>>2]|0,0)|0;c[(c[T>>2]|0)+48>>2]=f;b:do if((c[P>>2]|0)!=116){c[l>>2]=c[c[c[s>>2]>>2]>>2];c[_>>2]=(c[(c[r>>2]|0)+76>>2]|0)+1;f=(c[r>>2]|0)+76|0;c[f>>2]=(c[f>>2]|0)+((c[l>>2]|0)+1);Rw(c[ba>>2]|0,22,0,c[_>>2]|0)|0;c[R>>2]=Qz(c[H>>2]|0,c[l>>2]|0,1)|0;if(c[R>>2]|0){c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[l>>2]|0))break b;f=KG(c[r>>2]|0,c[s>>2]|0,c[j>>2]|0)|0;c[(c[R>>2]|0)+20+(c[j>>2]<<2)>>2]=f;a[(c[(c[R>>2]|0)+16>>2]|0)+(c[j>>2]|0)>>0]=0;c[j>>2]=(c[j>>2]|0)+1}}}else c[_>>2]=0;while(0);c[(c[s>>2]|0)+52>>2]=0;c[(c[T>>2]|0)+56>>2]=0;yy(c[r>>2]|0,c[s>>2]|0,c[(c[s>>2]|0)+48>>2]|0,29962)|0;if(!(c[(c[T>>2]|0)+52>>2]|0))yy(c[r>>2]|0,c[T>>2]|0,c[(c[T>>2]|0)+48>>2]|0,29962)|0;aG(c[r>>2]|0,c[s>>2]|0,c[N>>2]|0);if((c[P>>2]|0)==116?(c[(c[s>>2]|0)+8>>2]|0)!=0:0){j=(c[r>>2]|0)+76|0;f=(c[j>>2]|0)+1|0;c[j>>2]=f;c[W>>2]=f;f=(c[r>>2]|0)+76|0;j=(c[f>>2]|0)+1|0;c[f>>2]=j;c[X>>2]=j;j=c[s>>2]|0;if(c[(c[s>>2]|0)+12>>2]|0)j=(c[j+12>>2]|0)+1|0;else j=c[j+8>>2]|0;Rw(c[ba>>2]|0,30,j,c[W>>2]|0)|0;Rw(c[ba>>2]|0,30,c[W>>2]|0,c[X>>2]|0)|0}else{c[X>>2]=0;c[W>>2]=0}Zu(c[H>>2]|0,c[(c[s>>2]|0)+60>>2]|0);c[(c[s>>2]|0)+60>>2]=0;Zu(c[H>>2]|0,c[(c[s>>2]|0)+64>>2]|0);c[(c[s>>2]|0)+64>>2]=0;f=(c[r>>2]|0)+76|0;p=(c[f>>2]|0)+1|0;c[f>>2]=p;c[U>>2]=p;p=(c[r>>2]|0)+76|0;f=(c[p>>2]|0)+1|0;c[p>>2]=f;c[V>>2]=f;f=(c[r>>2]|0)+76|0;p=(c[f>>2]|0)+1|0;c[f>>2]=p;c[Y>>2]=p;p=(c[r>>2]|0)+76|0;f=(c[p>>2]|0)+1|0;c[p>>2]=f;c[Z>>2]=f;ZA(I,13,c[U>>2]|0);ZA(J,13,c[V>>2]|0);c[F>>2]=(Bz(c[ba>>2]|0)|0)+1;c[v>>2]=Vw(c[ba>>2]|0,16,c[U>>2]|0,0,c[F>>2]|0)|0;c[(c[T>>2]|0)+8>>2]=c[W>>2];c[K>>2]=c[(c[r>>2]|0)+472>>2];Cv(c[r>>2]|0,c[T>>2]|0,I)|0;xC(c[ba>>2]|0,c[U>>2]|0);Fz(c[ba>>2]|0,c[v>>2]|0);c[G>>2]=(Bz(c[ba>>2]|0)|0)+1;c[v>>2]=Vw(c[ba>>2]|0,16,c[V>>2]|0,0,c[G>>2]|0)|0;c[$>>2]=c[(c[s>>2]|0)+8>>2];c[aa>>2]=c[(c[s>>2]|0)+12>>2];c[(c[s>>2]|0)+8>>2]=c[X>>2];c[(c[s>>2]|0)+12>>2]=0;c[L>>2]=c[(c[r>>2]|0)+472>>2];Cv(c[r>>2]|0,c[s>>2]|0,J)|0;c[(c[s>>2]|0)+8>>2]=c[$>>2];c[(c[s>>2]|0)+12>>2]=c[aa>>2];xC(c[ba>>2]|0,c[V>>2]|0);c[D>>2]=MG(c[r>>2]|0,c[s>>2]|0,I,c[t>>2]|0,c[Y>>2]|0,c[_>>2]|0,c[R>>2]|0,c[N>>2]|0)|0;if((c[P>>2]|0)==116|(c[P>>2]|0)==115)c[E>>2]=MG(c[r>>2]|0,c[s>>2]|0,J,c[t>>2]|0,c[Z>>2]|0,c[_>>2]|0,c[R>>2]|0,c[N>>2]|0)|0;Rz(c[R>>2]|0);if((c[P>>2]|0)==117|(c[P>>2]|0)==118){aa=c[N>>2]|0;c[z>>2]=aa;c[A>>2]=aa}else{c[z>>2]=Rw(c[ba>>2]|0,14,c[Z>>2]|0,c[E>>2]|0)|0;c[A>>2]=Rw(c[ba>>2]|0,18,c[V>>2]|0,c[N>>2]|0)|0;Ez(c[ba>>2]|0,c[z>>2]|0)|0;$=(c[T>>2]|0)+24|0;aa=(c[s>>2]|0)+24|0;_=aa;$=gR(c[_>>2]|0,c[_+4>>2]|0,c[$>>2]|0,c[$+4>>2]|0)|0;c[aa>>2]=$;c[aa+4>>2]=C}if((c[P>>2]|0)==118){c[B>>2]=c[z>>2];$=(c[s>>2]|0)+24|0;X=c[$+4>>2]|0;aa=(c[T>>2]|0)+24|0;_=c[aa+4>>2]|0;if(X>>>0>_>>>0|((X|0)==(_|0)?(c[$>>2]|0)>>>0>(c[aa>>2]|0)>>>0:0)){_=(c[T>>2]|0)+24|0;$=c[_+4>>2]|0;aa=(c[s>>2]|0)+24|0;c[aa>>2]=c[_>>2];c[aa+4>>2]=$}}else{c[B>>2]=Rw(c[ba>>2]|0,14,c[Y>>2]|0,c[D>>2]|0)|0;Rw(c[ba>>2]|0,18,c[U>>2]|0,c[N>>2]|0)|0;Ez(c[ba>>2]|0,c[B>>2]|0)|0}c[y>>2]=Rw(c[ba>>2]|0,14,c[Y>>2]|0,c[D>>2]|0)|0;Rw(c[ba>>2]|0,18,c[U>>2]|0,c[z>>2]|0)|0;Ez(c[ba>>2]|0,c[M>>2]|0)|0;do if((c[P>>2]|0)!=116)if((c[P>>2]|0)==118){c[w>>2]=c[y>>2];c[y>>2]=(c[y>>2]|0)+1;break}else{c[w>>2]=Rw(c[ba>>2]|0,18,c[U>>2]|0,c[z>>2]|0)|0;Ez(c[ba>>2]|0,c[M>>2]|0)|0;break}else c[w>>2]=c[y>>2];while(0);c[x>>2]=Bz(c[ba>>2]|0)|0;if((c[P>>2]|0)==116|(c[P>>2]|0)==115)Rw(c[ba>>2]|0,14,c[Z>>2]|0,c[E>>2]|0)|0;Rw(c[ba>>2]|0,18,c[V>>2]|0,c[B>>2]|0)|0;Ez(c[ba>>2]|0,c[M>>2]|0)|0;Fz(c[ba>>2]|0,c[v>>2]|0);Rw(c[ba>>2]|0,18,c[U>>2]|0,c[A>>2]|0)|0;Rw(c[ba>>2]|0,18,c[V>>2]|0,c[B>>2]|0)|0;Gz(c[ba>>2]|0,c[M>>2]|0);Uw(c[ba>>2]|0,41,0,0,0,c[u>>2]|0,-15)|0;Uw(c[ba>>2]|0,42,c[I+8>>2]|0,c[J+8>>2]|0,c[O>>2]|0,c[S>>2]|0,-6)|0;Fh(c[ba>>2]|0,1);Vw(c[ba>>2]|0,43,c[y>>2]|0,c[w>>2]|0,c[x>>2]|0)|0;Gz(c[ba>>2]|0,c[N>>2]|0);if((d[c[t>>2]>>0]|0|0)==9){c[Q>>2]=c[T>>2];while(1){if(!(c[(c[Q>>2]|0)+52>>2]|0))break;c[Q>>2]=c[(c[Q>>2]|0)+52>>2]}uG(c[r>>2]|0,c[(c[Q>>2]|0)+32>>2]|0,c[c[Q>>2]>>2]|0)}if(c[(c[s>>2]|0)+52>>2]|0)Wu(c[H>>2]|0,c[(c[s>>2]|0)+52>>2]|0);c[(c[s>>2]|0)+52>>2]=c[T>>2];c[(c[T>>2]|0)+56>>2]=c[s>>2];JG(c[r>>2]|0,d[(c[s>>2]|0)+4>>0]|0,c[K>>2]|0,c[L>>2]|0,0);c[q>>2]=(c[(c[r>>2]|0)+68>>2]|0)!=0&1;ba=c[q>>2]|0;i=ca;return ba|0}function JG(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;o=q;h=q+40|0;j=q+36|0;k=q+32|0;l=q+28|0;m=q+24|0;n=q+20|0;p=q+16|0;c[h>>2]=a;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;if((d[(c[h>>2]|0)+453>>0]|0|0)!=2){i=q;return}c[n>>2]=c[(c[h>>2]|0)+8>>2];a=c[c[h>>2]>>2]|0;g=c[k>>2]|0;e=c[l>>2]|0;f=(c[m>>2]|0)!=0?36749:19266;b=xy(c[j>>2]|0)|0;c[o>>2]=g;c[o+4>>2]=e;c[o+8>>2]=f;c[o+12>>2]=b;c[p>>2]=Bh(a,36768,o)|0;Uw(c[n>>2]|0,161,c[(c[h>>2]|0)+468>>2]|0,0,0,c[p>>2]|0,-1)|0;i=q;return}function KG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(c[(c[f>>2]|0)+52>>2]|0)c[h>>2]=KG(c[e>>2]|0,c[(c[f>>2]|0)+52>>2]|0,c[g>>2]|0)|0;else c[h>>2]=0;if(c[h>>2]|0){h=c[h>>2]|0;i=j;return h|0}if((c[g>>2]|0)>=(c[c[c[f>>2]>>2]>>2]|0)){h=c[h>>2]|0;i=j;return h|0}c[h>>2]=Ox(c[e>>2]|0,c[(c[(c[c[f>>2]>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0)>>2]|0)|0;h=c[h>>2]|0;i=j;return h|0}function LG(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+48|0;g=r+40|0;h=r+36|0;s=r+32|0;o=r+28|0;l=r+24|0;j=r+20|0;p=r+16|0;k=r+12|0;n=r+8|0;q=r+4|0;m=r;c[g>>2]=b;c[h>>2]=d;c[s>>2]=f;c[o>>2]=c[(c[h>>2]|0)+48>>2];c[l>>2]=c[c[(c[h>>2]|0)+48>>2]>>2];c[j>>2]=c[c[g>>2]>>2];c[p>>2]=Qz(c[j>>2]|0,(c[l>>2]|0)+(c[s>>2]|0)|0,1)|0;if(!(c[p>>2]|0)){s=c[p>>2]|0;i=r;return s|0}c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[l>>2]|0))break;c[n>>2]=(c[(c[o>>2]|0)+4>>2]|0)+((c[k>>2]|0)*20|0);c[q>>2]=c[c[n>>2]>>2];f=c[g>>2]|0;if(c[(c[q>>2]|0)+4>>2]&256)c[m>>2]=Ox(f,c[q>>2]|0)|0;else{c[m>>2]=KG(f,c[h>>2]|0,(e[(c[n>>2]|0)+16>>1]|0)-1|0)|0;if(!(c[m>>2]|0))c[m>>2]=c[(c[j>>2]|0)+8>>2];s=By(c[g>>2]|0,c[q>>2]|0,c[c[m>>2]>>2]|0)|0;c[(c[(c[o>>2]|0)+4>>2]|0)+((c[k>>2]|0)*20|0)>>2]=s}c[(c[p>>2]|0)+20+(c[k>>2]<<2)>>2]=c[m>>2];a[(c[(c[p>>2]|0)+16>>2]|0)+(c[k>>2]|0)>>0]=a[(c[(c[o>>2]|0)+4>>2]|0)+((c[k>>2]|0)*20|0)+12>>0]|0;c[k>>2]=(c[k>>2]|0)+1}s=c[p>>2]|0;i=r;return s|0}function MG(b,e,f,g,h,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;D=i;i=i+80|0;m=D+64|0;n=D+60|0;o=D+56|0;p=D+52|0;q=D+48|0;r=D+44|0;s=D+40|0;t=D+36|0;u=D+32|0;C=D+28|0;y=D+24|0;v=D+20|0;w=D+16|0;x=D+12|0;z=D+8|0;B=D+4|0;A=D;c[n>>2]=b;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=j;c[t>>2]=k;c[u>>2]=l;c[C>>2]=c[(c[n>>2]|0)+8>>2];c[v>>2]=Bz(c[C>>2]|0)|0;c[y>>2]=Cz(c[C>>2]|0)|0;if(c[s>>2]|0){c[w>>2]=xz(c[C>>2]|0,46,c[s>>2]|0)|0;k=c[C>>2]|0;b=c[(c[p>>2]|0)+8>>2]|0;j=(c[s>>2]|0)+1|0;h=c[(c[p>>2]|0)+12>>2]|0;c[x>>2]=Uw(k,42,b,j,h,Vz(c[t>>2]|0)|0,-6)|0;Vw(c[C>>2]|0,43,(c[x>>2]|0)+2|0,c[y>>2]|0,(c[x>>2]|0)+2|0)|0;Fz(c[C>>2]|0,c[w>>2]|0);Vw(c[C>>2]|0,30,c[(c[p>>2]|0)+8>>2]|0,(c[s>>2]|0)+1|0,(c[(c[p>>2]|0)+12>>2]|0)-1|0)|0;Rw(c[C>>2]|0,22,1,c[s>>2]|0)|0}if(a[(c[c[n>>2]>>2]|0)+65>>0]|0){c[m>>2]=0;C=c[m>>2]|0;i=D;return C|0}wG(c[C>>2]|0,c[(c[o>>2]|0)+12>>2]|0,c[y>>2]|0);switch(d[c[q>>2]>>0]|0){case 12:{c[z>>2]=Wz(c[n>>2]|0)|0;c[B>>2]=Wz(c[n>>2]|0)|0;Vw(c[C>>2]|0,49,c[(c[p>>2]|0)+8>>2]|0,c[(c[p>>2]|0)+12>>2]|0,c[z>>2]|0)|0;Rw(c[C>>2]|0,74,c[(c[q>>2]|0)+4>>2]|0,c[B>>2]|0)|0;Vw(c[C>>2]|0,75,c[(c[q>>2]|0)+4>>2]|0,c[z>>2]|0,c[B>>2]|0)|0;Fh(c[C>>2]|0,8);_z(c[n>>2]|0,c[B>>2]|0);_z(c[n>>2]|0,c[z>>2]|0);break}case 11:{h=SA(c[c[(c[c[o>>2]>>2]|0)+4>>2]>>2]|0,a[(c[q>>2]|0)+1>>0]|0)|0;a[(c[q>>2]|0)+1>>0]=h;c[A>>2]=Wz(c[n>>2]|0)|0;Uw(c[C>>2]|0,49,c[(c[p>>2]|0)+8>>2]|0,1,c[A>>2]|0,(c[q>>2]|0)+1|0,1)|0;CA(c[n>>2]|0,c[(c[p>>2]|0)+8>>2]|0,1);Rw(c[C>>2]|0,110,c[(c[q>>2]|0)+4>>2]|0,c[A>>2]|0)|0;_z(c[n>>2]|0,c[A>>2]|0);break}case 10:{mG(c[n>>2]|0,c[(c[p>>2]|0)+8>>2]|0,c[(c[q>>2]|0)+4>>2]|0,1);break}case 13:{if(!(c[(c[q>>2]|0)+8>>2]|0)){h=kA(c[n>>2]|0,c[(c[p>>2]|0)+12>>2]|0)|0;c[(c[q>>2]|0)+8>>2]=h;c[(c[q>>2]|0)+12>>2]=c[(c[p>>2]|0)+12>>2]}mG(c[n>>2]|0,c[(c[p>>2]|0)+8>>2]|0,c[(c[q>>2]|0)+8>>2]|0,c[(c[p>>2]|0)+12>>2]|0);xz(c[C>>2]|0,18,c[(c[q>>2]|0)+4>>2]|0)|0;break}default:{Rw(c[C>>2]|0,33,c[(c[p>>2]|0)+8>>2]|0,c[(c[p>>2]|0)+12>>2]|0)|0;CA(c[n>>2]|0,c[(c[p>>2]|0)+8>>2]|0,c[(c[p>>2]|0)+12>>2]|0)}}if(c[(c[o>>2]|0)+8>>2]|0)Rw(c[C>>2]|0,141,c[(c[o>>2]|0)+8>>2]|0,c[u>>2]|0)|0;Gz(c[C>>2]|0,c[y>>2]|0);xz(c[C>>2]|0,15,c[r>>2]|0)|0;c[m>>2]=c[v>>2];C=c[m>>2]|0;i=D;return C|0}function NG(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+24|0;h=o+20|0;j=o+16|0;k=o+12|0;l=o+8|0;n=o+4|0;m=o;c[g>>2]=b;c[h>>2]=e;c[j>>2]=f;c[k>>2]=c[c[g>>2]>>2];if(!(c[(c[k>>2]|0)+24>>2]&524288)){i=o;return}if((d[(c[j>>2]|0)+42>>0]|0)&16){i=o;return}if(c[(c[j>>2]|0)+12>>2]|0){i=o;return}c[l>>2]=0;c[n>>2]=Pw(c[g>>2]|0)|0;do if(!(Ex(c[j>>2]|0)|0)){c[m>>2]=c[(c[j>>2]|0)+16>>2];while(1){if(!(c[m>>2]|0))break;if(d[(c[m>>2]|0)+24>>0]|0)break;if(c[(c[k>>2]|0)+24>>2]&16777216)break;c[m>>2]=c[(c[m>>2]|0)+4>>2]}if(c[m>>2]|0){c[l>>2]=Cz(c[n>>2]|0)|0;Rw(c[n>>2]|0,136,1,c[l>>2]|0)|0;break}else{i=o;return}}while(0);a[(c[g>>2]|0)+442>>0]=1;f=c[g>>2]|0;Rv(f,lz(c[k>>2]|0,c[h>>2]|0,0)|0,0);a[(c[g>>2]|0)+442>>0]=0;if(!(c[(c[k>>2]|0)+24>>2]&16777216)){f=c[n>>2]|0;Rw(f,136,0,(Bz(c[n>>2]|0)|0)+2|0)|0;bA(c[g>>2]|0,787,2,0,-2,4)}if(!(c[l>>2]|0)){i=o;return}Gz(c[n>>2]|0,c[l>>2]|0);i=o;return}function OG(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+64|0;q=r+8|0;p=r;g=r+48|0;h=r+44|0;j=r+40|0;k=r+36|0;o=r+32|0;l=r+28|0;n=r+24|0;m=r+20|0;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[l>>2]=c[c[g>>2]>>2];c[m>>2]=(c[(c[l>>2]|0)+16>>2]|0)+(c[j>>2]<<4);c[o>>2]=Pw(c[g>>2]|0)|0;ax(c[g>>2]|0,1,c[j>>2]|0);if((d[(c[h>>2]|0)+42>>0]|0)&16)Yw(c[o>>2]|0,149)|0;c[n>>2]=fx(c[g>>2]|0,c[h>>2]|0)|0;while(1){if(!(c[n>>2]|0))break;AB(c[g>>2]|0,c[n>>2]|0);c[n>>2]=c[(c[n>>2]|0)+32>>2]}if((d[(c[h>>2]|0)+42>>0]|0)&8){n=c[g>>2]|0;b=c[c[h>>2]>>2]|0;c[p>>2]=c[c[m>>2]>>2];c[p+4>>2]=b;Ow(n,37066,p)}p=c[g>>2]|0;b=(c[j>>2]|0)==1?20769:20788;n=c[c[h>>2]>>2]|0;c[q>>2]=c[c[m>>2]>>2];c[q+4>>2]=b;c[q+8>>2]=n;Ow(p,37111,q);if((c[k>>2]|0)==0?((d[(c[h>>2]|0)+42>>0]|0)&16|0)==0:0)PG(c[g>>2]|0,c[h>>2]|0);if(!((d[(c[h>>2]|0)+42>>0]|0)&16)){o=c[o>>2]|0;p=c[j>>2]|0;q=c[h>>2]|0;q=c[q>>2]|0;Uw(o,125,p,0,0,q,0)|0;q=c[g>>2]|0;p=c[j>>2]|0; -Qw(q,p);p=c[l>>2]|0;q=c[j>>2]|0;QG(p,q);i=r;return}Uw(c[o>>2]|0,151,c[j>>2]|0,0,0,c[c[h>>2]>>2]|0,0)|0;o=c[o>>2]|0;p=c[j>>2]|0;q=c[h>>2]|0;q=c[q>>2]|0;Uw(o,125,p,0,0,q,0)|0;q=c[g>>2]|0;p=c[j>>2]|0;Qw(q,p);p=c[l>>2]|0;q=c[j>>2]|0;QG(p,q);i=r;return}function PG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;d=n+28|0;e=n+24|0;k=n+20|0;g=n+16|0;l=n+12|0;j=n+8|0;h=n+4|0;f=n;c[d>>2]=a;c[e>>2]=b;c[k>>2]=c[(c[e>>2]|0)+28>>2];c[g>>2]=0;while(1){c[j>>2]=0;if(!((c[g>>2]|0)!=0?(c[k>>2]|0)>=(c[g>>2]|0):0))c[j>>2]=c[k>>2];c[l>>2]=c[(c[e>>2]|0)+8>>2];while(1){if(!(c[l>>2]|0))break;c[h>>2]=c[(c[l>>2]|0)+44>>2];if(!((c[g>>2]|0)!=0?(c[h>>2]|0)>=(c[g>>2]|0):0))m=9;if((m|0)==9?(m=0,(c[h>>2]|0)>(c[j>>2]|0)):0)c[j>>2]=c[h>>2];c[l>>2]=c[(c[l>>2]|0)+20>>2]}if(!(c[j>>2]|0))break;c[f>>2]=Dh(c[c[d>>2]>>2]|0,c[(c[e>>2]|0)+64>>2]|0)|0;qC(c[d>>2]|0,c[j>>2]|0,c[f>>2]|0);c[g>>2]=c[j>>2]}i=n;return}function QG(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=d;if(((e[(c[(c[(c[f>>2]|0)+16>>2]|0)+(c[g>>2]<<4)+12>>2]|0)+78>>1]|0)&2|0)!=2){i=k;return}c[h>>2]=c[(c[(c[(c[f>>2]|0)+16>>2]|0)+(c[g>>2]<<4)+12>>2]|0)+8+8>>2];while(1){if(!(c[h>>2]|0))break;c[j>>2]=c[(c[h>>2]|0)+8>>2];if(c[(c[j>>2]|0)+12>>2]|0){RG(c[f>>2]|0,c[j>>2]|0);c[(c[j>>2]|0)+4>>2]=0;b[(c[j>>2]|0)+34>>1]=0}c[h>>2]=c[c[h>>2]>>2]}j=(c[(c[(c[f>>2]|0)+16>>2]|0)+(c[g>>2]<<4)+12>>2]|0)+78|0;b[j>>1]=(e[j>>1]|0)&-3;i=k;return}function RG(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=d;d=c[(c[f>>2]|0)+4>>2]|0;c[h>>2]=d;if(!d){i=j;return}c[g>>2]=0;while(1){a=c[e>>2]|0;if((c[g>>2]|0)>=(b[(c[f>>2]|0)+34>>1]|0))break;Sf(a,c[c[h>>2]>>2]|0);Zu(c[e>>2]|0,c[(c[h>>2]|0)+4>>2]|0);Sf(c[e>>2]|0,c[(c[h>>2]|0)+8>>2]|0);Sf(c[e>>2]|0,c[(c[h>>2]|0)+12>>2]|0);Sf(c[e>>2]|0,c[(c[h>>2]|0)+16>>2]|0);c[g>>2]=(c[g>>2]|0)+1;c[h>>2]=(c[h>>2]|0)+24}Sf(a,c[(c[f>>2]|0)+4>>2]|0);i=j;return}function SG(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+144|0;h=p+128|0;j=p+124|0;k=p+120|0;l=p+116|0;m=p+112|0;o=p;n=p+80|0;c[h>>2]=a;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;c[n+16>>2]=0;c[n+20>>2]=0;c[n+24>>2]=0;c[n+28>>2]=0;f=o;g=f+80|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[o>>2]=1;c[o+8+8>>2]=c[c[j>>2]>>2];c[o+8+16>>2]=c[j>>2];c[o+8+44>>2]=-1;c[n>>2]=c[h>>2];c[n+4>>2]=o;b[n+28>>1]=c[k>>2];o=(fy(n,c[l>>2]|0)|0)==0;if(!(o&(c[m>>2]|0)!=0)){i=p;return}gy(n,c[m>>2]|0)|0;i=p;return}function TG(b){b=b|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=b;b=c[e>>2]|0;if((d[c[e>>2]>>0]|0|0)==97){a[b>>0]=27;i=f;return}if((d[b>>0]|0|0)!=95){i=f;return}if((d[c[(c[e>>2]|0)+12>>2]>>0]|0|0)!=97){i=f;return}a[c[(c[e>>2]|0)+12>>2]>>0]=27;i=f;return}function UG(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k+12|0;f=k+8|0;g=k+4|0;h=k;c[f>>2]=a;c[g>>2]=d;c[h>>2]=e;while(1){e=c[g>>2]|0;c[g>>2]=e+-1;if((e|0)<=0){f=5;break}d=c[h>>2]|0;e=c[f>>2]|0;c[f>>2]=e+2;if((d|0)==(b[e>>1]|0)){f=4;break}}if((f|0)==4){c[j>>2]=1;j=c[j>>2]|0;i=k;return j|0}else if((f|0)==5){c[j>>2]=0;j=c[j>>2]|0;i=k;return j|0}return 0}function VG(a){a=a|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+12|0;j=l+8|0;h=l+4|0;g=l;k=l+16|0;c[f>>2]=a;c[j>>2]=0;c[g>>2]=c[(c[(c[f>>2]|0)+12>>2]|0)+4>>2];c[h>>2]=0;while(1){if((c[h>>2]|0)>=(e[(c[f>>2]|0)+52>>1]|0))break;b[k>>1]=b[(c[(c[f>>2]|0)+4>>2]|0)+(c[h>>2]<<1)>>1]|0;if((b[k>>1]|0)<0)a=1;else a=d[(c[g>>2]|0)+((b[(c[(c[f>>2]|0)+4>>2]|0)+(c[h>>2]<<1)>>1]|0)*24|0)+22>>0]|0;c[j>>2]=(c[j>>2]|0)+a;c[h>>2]=(c[h>>2]|0)+1}k=Hj(c[j>>2]<<2,0)|0;b[(c[f>>2]|0)+48>>1]=k;i=l;return}function WG(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=a;c[f>>2]=b;XG(c[e>>2]|0,c[f>>2]|0);Zu(c[e>>2]|0,c[(c[f>>2]|0)+36>>2]|0);Vu(c[e>>2]|0,c[(c[f>>2]|0)+40>>2]|0);Sf(c[e>>2]|0,c[(c[f>>2]|0)+16>>2]|0);if(!((d[(c[f>>2]|0)+55>>0]|0)>>>4&1)){a=c[e>>2]|0;b=c[f>>2]|0;Sf(a,b);i=g;return}Sf(c[e>>2]|0,c[(c[f>>2]|0)+32>>2]|0);a=c[e>>2]|0;b=c[f>>2]|0;Sf(a,b);i=g;return}function XG(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return}function YG(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+16|0;h=f;g=f+4|0;c[h>>2]=b;a[g>>0]=e;b=$A(c[h>>2]|0,4+(d[g>>0]|0)|0,0)|0;i=f;return b|0}function ZG(f,g){f=f|0;g=g|0;var h=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;v=i;i=i+64|0;h=v+52|0;j=v+48|0;q=v+44|0;s=v+40|0;p=v+36|0;l=v+32|0;n=v+28|0;k=v+24|0;t=v+20|0;r=v+16|0;m=v+8|0;o=v;c[h>>2]=f;c[j>>2]=g;c[k>>2]=c[c[h>>2]>>2];c[t>>2]=c[(c[h>>2]|0)+8>>2];if(c[(c[h>>2]|0)+424>>2]|0)bG(c[t>>2]|0,c[(c[h>>2]|0)+424>>2]|0,121);f=c[j>>2]|0;do if((b[(c[j>>2]|0)+32>>1]|0)>=0){Cy(m,c[(c[(c[j>>2]|0)+4>>2]|0)+((b[f+32>>1]|0)*24|0)>>2]|0);t=c[h>>2]|0;c[r>>2]=Gv(t,0,cz(c[k>>2]|0,27,m,0)|0)|0;if(!(c[r>>2]|0)){i=v;return}a[(c[(c[r>>2]|0)+4>>2]|0)+12>>0]=a[(c[h>>2]|0)+452>>0]|0;c[s>>2]=vv(c[h>>2]|0,0,0,0,c[r>>2]|0,d[(c[j>>2]|0)+43>>0]|0,0,0,0,0)|0;if(!(c[s>>2]|0)){i=v;return}else{t=(c[s>>2]|0)+55|0;a[t>>0]=a[t>>0]&-4|2;b[(c[j>>2]|0)+32>>1]=-1;break}}else{c[s>>2]=Ej(f)|0;if(c[t>>2]|0)bG(c[t>>2]|0,c[(c[s>>2]|0)+44>>2]|0,13);c[n>>2]=1;c[l>>2]=1;while(1){if((c[l>>2]|0)>=(e[(c[s>>2]|0)+50>>1]|0))break;if(UG(c[(c[s>>2]|0)+4>>2]|0,c[n>>2]|0,b[(c[(c[s>>2]|0)+4>>2]|0)+(c[l>>2]<<1)>>1]|0)|0){t=(c[s>>2]|0)+52|0;b[t>>1]=(b[t>>1]|0)+-1<<16>>16}else{r=b[(c[(c[s>>2]|0)+4>>2]|0)+(c[l>>2]<<1)>>1]|0;t=c[n>>2]|0;c[n>>2]=t+1;b[(c[(c[s>>2]|0)+4>>2]|0)+(t<<1)>>1]=r}c[l>>2]=(c[l>>2]|0)+1}b[(c[s>>2]|0)+50>>1]=c[n>>2]}while(0);t=(c[s>>2]|0)+55|0;a[t>>0]=a[t>>0]&-33|32;c[p>>2]=e[(c[s>>2]|0)+50>>1];if(!(a[(c[k>>2]|0)+140+7>>0]|0)){c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[p>>2]|0))break;a[(c[(c[j>>2]|0)+4>>2]|0)+((b[(c[(c[s>>2]|0)+4>>2]|0)+(c[l>>2]<<1)>>1]|0)*24|0)+20>>0]=2;c[l>>2]=(c[l>>2]|0)+1}t=(c[s>>2]|0)+55|0;a[t>>0]=a[t>>0]&-9|8}c[(c[s>>2]|0)+44>>2]=c[(c[j>>2]|0)+28>>2];c[q>>2]=c[(c[j>>2]|0)+8>>2];a:while(1){if(!(c[q>>2]|0))break;b:do if((a[(c[q>>2]|0)+55>>0]&3|0)!=2){c[o>>2]=0;c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[p>>2]|0))break;if(!(UG(c[(c[q>>2]|0)+4>>2]|0,e[(c[q>>2]|0)+50>>1]|0,b[(c[(c[s>>2]|0)+4>>2]|0)+(c[l>>2]<<1)>>1]|0)|0))c[o>>2]=(c[o>>2]|0)+1;c[l>>2]=(c[l>>2]|0)+1}if(!(c[o>>2]|0)){b[(c[q>>2]|0)+52>>1]=b[(c[q>>2]|0)+50>>1]|0;break}if(cH(c[k>>2]|0,c[q>>2]|0,(e[(c[q>>2]|0)+50>>1]|0)+(c[o>>2]|0)|0)|0){u=46;break a}c[l>>2]=0;c[n>>2]=e[(c[q>>2]|0)+50>>1];while(1){if((c[l>>2]|0)>=(c[p>>2]|0))break b;if(!(UG(c[(c[q>>2]|0)+4>>2]|0,e[(c[q>>2]|0)+50>>1]|0,b[(c[(c[s>>2]|0)+4>>2]|0)+(c[l>>2]<<1)>>1]|0)|0)){b[(c[(c[q>>2]|0)+4>>2]|0)+(c[n>>2]<<1)>>1]=b[(c[(c[s>>2]|0)+4>>2]|0)+(c[l>>2]<<1)>>1]|0;c[(c[(c[q>>2]|0)+32>>2]|0)+(c[n>>2]<<2)>>2]=c[(c[(c[s>>2]|0)+32>>2]|0)+(c[l>>2]<<2)>>2];c[n>>2]=(c[n>>2]|0)+1}c[l>>2]=(c[l>>2]|0)+1}}while(0);c[q>>2]=c[(c[q>>2]|0)+20>>2]}if((u|0)==46){i=v;return}if((c[p>>2]|0)>=(b[(c[j>>2]|0)+34>>1]|0)){b[(c[s>>2]|0)+52>>1]=b[(c[j>>2]|0)+34>>1]|0;i=v;return}if(cH(c[k>>2]|0,c[s>>2]|0,b[(c[j>>2]|0)+34>>1]|0)|0){i=v;return}c[l>>2]=0;c[n>>2]=c[p>>2];while(1){if((c[l>>2]|0)>=(b[(c[j>>2]|0)+34>>1]|0))break;if(!(UG(c[(c[s>>2]|0)+4>>2]|0,c[n>>2]|0,c[l>>2]|0)|0)){b[(c[(c[s>>2]|0)+4>>2]|0)+(c[n>>2]<<1)>>1]=c[l>>2];c[(c[(c[s>>2]|0)+32>>2]|0)+(c[n>>2]<<2)>>2]=35690;c[n>>2]=(c[n>>2]|0)+1}c[l>>2]=(c[l>>2]|0)+1}i=v;return}function _G(a){a=a|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;h=j+8|0;g=j+4|0;f=j;c[e>>2]=a;c[h>>2]=0;c[f>>2]=b[(c[e>>2]|0)+34>>1];c[g>>2]=c[(c[e>>2]|0)+4>>2];while(1){if((c[f>>2]|0)<=0)break;c[h>>2]=(c[h>>2]|0)+(d[(c[g>>2]|0)+22>>0]|0);c[f>>2]=(c[f>>2]|0)+-1;c[g>>2]=(c[g>>2]|0)+24}if((b[(c[e>>2]|0)+32>>1]|0)>=0){g=c[h>>2]|0;g=g<<2;g=Hj(g,0)|0;h=c[e>>2]|0;h=h+40|0;b[h>>1]=g;i=j;return}c[h>>2]=(c[h>>2]|0)+1;g=c[h>>2]|0;g=g<<2;g=Hj(g,0)|0;h=c[e>>2]|0;h=h+40|0;b[h>>1]=g;i=j;return}function $G(d,e){d=d|0;e=e|0;var f=0,g=0,h=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;w=i;i=i+80|0;q=w+16|0;p=w+8|0;g=w;h=w+68|0;f=w+64|0;j=w+60|0;k=w+56|0;l=w+52|0;n=w+48|0;u=w+44|0;s=w+40|0;t=w+36|0;r=w+32|0;o=w+28|0;m=w+24|0;v=w+20|0;c[f>>2]=d;c[j>>2]=e;c[n>>2]=0;c[o>>2]=c[(c[j>>2]|0)+4>>2];c[k>>2]=0;while(1){if((c[k>>2]|0)>=(b[(c[j>>2]|0)+34>>1]|0))break;e=(aH(c[c[o>>2]>>2]|0)|0)+5|0;c[n>>2]=(c[n>>2]|0)+e;c[k>>2]=(c[k>>2]|0)+1;c[o>>2]=(c[o>>2]|0)+24}e=aH(c[c[j>>2]>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+e;if((c[n>>2]|0)<50){c[s>>2]=19266;c[t>>2]=38266;c[r>>2]=35518}else{c[s>>2]=38268;c[t>>2]=38272;c[r>>2]=38277}c[n>>2]=(c[n>>2]|0)+(35+((b[(c[j>>2]|0)+34>>1]|0)*6|0));e=c[n>>2]|0;c[u>>2]=yh(0,e,((e|0)<0)<<31>>31)|0;if(!(c[u>>2]|0)){jh(c[f>>2]|0);c[h>>2]=0;v=c[h>>2]|0;i=w;return v|0}Qd(c[n>>2]|0,c[u>>2]|0,38280,g)|0;c[l>>2]=If(c[u>>2]|0)|0;bH(c[u>>2]|0,l,c[c[j>>2]>>2]|0);g=c[l>>2]|0;c[l>>2]=g+1;a[(c[u>>2]|0)+g>>0]=40;c[o>>2]=c[(c[j>>2]|0)+4>>2];c[k>>2]=0;while(1){f=(c[n>>2]|0)-(c[l>>2]|0)|0;d=(c[u>>2]|0)+(c[l>>2]|0)|0;if((c[k>>2]|0)>=(b[(c[j>>2]|0)+34>>1]|0))break;Qd(f,d,c[s>>2]|0,p)|0;g=If((c[u>>2]|0)+(c[l>>2]|0)|0)|0;c[l>>2]=(c[l>>2]|0)+g;c[s>>2]=c[t>>2];bH(c[u>>2]|0,l,c[c[o>>2]>>2]|0);c[v>>2]=c[6328+((a[(c[o>>2]|0)+21>>0]|0)-65<<2)>>2];c[m>>2]=If(c[v>>2]|0)|0;iR((c[u>>2]|0)+(c[l>>2]|0)|0,c[v>>2]|0,c[m>>2]|0)|0;c[l>>2]=(c[l>>2]|0)+(c[m>>2]|0);c[k>>2]=(c[k>>2]|0)+1;c[o>>2]=(c[o>>2]|0)+24}c[q>>2]=c[r>>2];Qd(f,d,19255,q)|0;c[h>>2]=c[u>>2];v=c[h>>2]|0;i=w;return v|0}function aH(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;c[e>>2]=0;while(1){if(!(a[c[d>>2]>>0]|0))break;if((a[c[d>>2]>>0]|0)==34)c[e>>2]=(c[e>>2]|0)+1;c[e>>2]=(c[e>>2]|0)+1;c[d>>2]=(c[d>>2]|0)+1}i=f;return(c[e>>2]|0)+2|0}function bH(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;g=n+24|0;h=n+20|0;o=n+16|0;m=n+12|0;j=n+8|0;k=n+4|0;l=n;c[g>>2]=b;c[h>>2]=e;c[o>>2]=f;c[m>>2]=c[o>>2];c[j>>2]=c[c[h>>2]>>2];c[k>>2]=0;while(1){if(!(a[(c[m>>2]|0)+(c[k>>2]|0)>>0]|0))break;if((d[19267+(d[(c[m>>2]|0)+(c[k>>2]|0)>>0]|0)>>0]&6|0)==0?(d[(c[m>>2]|0)+(c[k>>2]|0)>>0]|0)!=95:0)break;c[k>>2]=(c[k>>2]|0)+1}if(((d[19267+(d[c[m>>2]>>0]|0)>>0]&4|0)==0?(yi(c[m>>2]|0,c[k>>2]|0)|0)==27:0)?(d[(c[m>>2]|0)+(c[k>>2]|0)>>0]|0)==0:0)e=(c[k>>2]|0)==0;else e=1;c[l>>2]=e&1;if(c[l>>2]|0){o=c[j>>2]|0;c[j>>2]=o+1;a[(c[g>>2]|0)+o>>0]=34}c[k>>2]=0;while(1){if(!(a[(c[m>>2]|0)+(c[k>>2]|0)>>0]|0))break;f=a[(c[m>>2]|0)+(c[k>>2]|0)>>0]|0;o=c[j>>2]|0;c[j>>2]=o+1;a[(c[g>>2]|0)+o>>0]=f;if((d[(c[m>>2]|0)+(c[k>>2]|0)>>0]|0)==34){o=c[j>>2]|0;c[j>>2]=o+1;a[(c[g>>2]|0)+o>>0]=34}c[k>>2]=(c[k>>2]|0)+1}if(!(c[l>>2]|0)){m=c[j>>2]|0;o=c[g>>2]|0;m=o+m|0;a[m>>0]=0;m=c[j>>2]|0;o=c[h>>2]|0;c[o>>2]=m;i=n;return}m=c[j>>2]|0;c[j>>2]=m+1;a[(c[g>>2]|0)+m>>0]=34;m=c[j>>2]|0;o=c[g>>2]|0;m=o+m|0;a[m>>0]=0;m=c[j>>2]|0;o=c[h>>2]|0;c[o>>2]=m;i=n;return}function cH(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;h=o+20|0;j=o+16|0;k=o+12|0;l=o+8|0;n=o+4|0;m=o;c[j>>2]=d;c[k>>2]=f;c[l>>2]=g;if((e[(c[k>>2]|0)+52>>1]|0|0)>=(c[l>>2]|0)){c[h>>2]=0;n=c[h>>2]|0;i=o;return n|0}c[m>>2]=(c[l>>2]|0)*7;f=c[m>>2]|0;c[n>>2]=ph(c[j>>2]|0,f,((f|0)<0)<<31>>31)|0;if(!(c[n>>2]|0)){c[h>>2]=7;n=c[h>>2]|0;i=o;return n|0}else{iR(c[n>>2]|0,c[(c[k>>2]|0)+32>>2]|0,(e[(c[k>>2]|0)+52>>1]|0)<<2|0)|0;c[(c[k>>2]|0)+32>>2]=c[n>>2];c[n>>2]=(c[n>>2]|0)+(c[l>>2]<<2);iR(c[n>>2]|0,c[(c[k>>2]|0)+4>>2]|0,(e[(c[k>>2]|0)+52>>1]|0)<<1|0)|0;c[(c[k>>2]|0)+4>>2]=c[n>>2];c[n>>2]=(c[n>>2]|0)+(c[l>>2]<<1);iR(c[n>>2]|0,c[(c[k>>2]|0)+28>>2]|0,e[(c[k>>2]|0)+52>>1]|0|0)|0;c[(c[k>>2]|0)+28>>2]=c[n>>2];b[(c[k>>2]|0)+52>>1]=c[l>>2];n=(c[k>>2]|0)+55|0;a[n>>0]=a[n>>0]&-17|16;c[h>>2]=0;n=c[h>>2]|0;i=o;return n|0}return 0}function dH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;d=e+8|0;f=e+4|0;g=e;c[d>>2]=a;c[f>>2]=b;c[g>>2]=Pw(c[d>>2]|0)|0;yz(c[d>>2]|0,c[f>>2]|0,1,1,(c[f>>2]|0)==1?20769:20788);Eh(c[g>>2]|0,55,0,1,c[f>>2]|0,5)|0;if(c[(c[d>>2]|0)+72>>2]|0){i=e;return}c[(c[d>>2]|0)+72>>2]=1;i=e;return}function eH(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;b=j+16|0;e=j+12|0;h=j+8|0;f=j+4|0;g=j;c[b>>2]=a;c[h>>2]=Pw(c[b>>2]|0)|0;c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[b>>2]|0)+404>>2]|0))break;c[f>>2]=(c[(c[b>>2]|0)+408>>2]|0)+(c[e>>2]<<4);c[g>>2]=c[c[f>>2]>>2];Uw(c[h>>2]|0,148,c[g>>2]|0,c[(c[f>>2]|0)+4>>2]|0,d[(c[f>>2]|0)+8>>0]|0,c[(c[f>>2]|0)+12>>2]|0,-2)|0;c[e>>2]=(c[e>>2]|0)+1}i=j;return}function fH(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;d=l+24|0;h=l+20|0;f=l+16|0;j=l+12|0;g=l+8|0;k=l+4|0;e=l;c[d>>2]=b;c[f>>2]=c[c[d>>2]>>2];c[k>>2]=c[(c[d>>2]|0)+8>>2];c[h>>2]=c[(c[d>>2]|0)+412>>2];while(1){if(!(c[h>>2]|0)){d=5;break}c[j>>2]=(c[(c[f>>2]|0)+16>>2]|0)+(c[(c[h>>2]|0)+8>>2]<<4);c[g>>2]=c[(c[h>>2]|0)+12>>2];zz(c[d>>2]|0,0,c[(c[h>>2]|0)+8>>2]|0,c[(c[(c[j>>2]|0)+12>>2]|0)+72>>2]|0,54);Tw(c[k>>2]|0,(c[g>>2]|0)-1|0,c[c[(c[h>>2]|0)+4>>2]>>2]|0)|0;c[e>>2]=Gh(c[k>>2]|0,10,38456,0)|0;if(!(c[e>>2]|0)){d=5;break}c[(c[e>>2]|0)+8>>2]=c[g>>2];c[(c[e>>2]|0)+12>>2]=(c[g>>2]|0)+1;c[(c[e>>2]|0)+40+12>>2]=c[g>>2];c[(c[e>>2]|0)+60+4>>2]=(c[g>>2]|0)-1;c[(c[e>>2]|0)+60+12>>2]=c[g>>2];a[(c[e>>2]|0)+60+3>>0]=16;c[(c[e>>2]|0)+80+8>>2]=(c[g>>2]|0)+1;c[(c[e>>2]|0)+100+12>>2]=c[g>>2];c[(c[e>>2]|0)+160+8>>2]=c[g>>2];c[h>>2]=c[c[h>>2]>>2]}if((d|0)==5){i=l;return}}function gH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g;d=g+12|0;e=g+4|0;c[d>>2]=a;c[g+8>>2]=b;c[e>>2]=c[(c[d>>2]|0)+8>>2];a=c[d>>2]|0;c[a>>2]=(c[a>>2]|0)+-1;while(1){if((c[c[d>>2]>>2]|0)<0)break;$u(c[d>>2]|0)}Ah(c[e>>2]|0,38496,f);c[(c[d>>2]|0)+8>>2]=c[e>>2];i=g;return}function hH(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b;e=b+4|0;c[e>>2]=a;c[d>>2]=c[e>>2];Rd(21,40353,d);i=b;return}function iH(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;I=i;i=i+96|0;G=I+16|0;s=I+8|0;n=I;C=I+92|0;u=I+88|0;p=I+84|0;v=I+80|0;l=I+76|0;w=I+72|0;q=I+68|0;D=I+64|0;H=I+60|0;F=I+56|0;x=I+52|0;m=I+48|0;o=I+44|0;t=I+40|0;r=I+36|0;y=I+32|0;z=I+28|0;A=I+24|0;E=I+20|0;c[C>>2]=b;c[u>>2]=e;c[p>>2]=f;c[v>>2]=g;c[l>>2]=h;c[w>>2]=j;c[q>>2]=k;c[H>>2]=0;c[F>>2]=0;c[D>>2]=ph(c[C>>2]|0,544,0)|0;if(!(c[D>>2]|0)){c[F>>2]=7;H=c[D>>2]|0;Lh(H);H=c[C>>2]|0;G=c[D>>2]|0;Sf(H,G);G=c[C>>2]|0;H=c[F>>2]|0;H=Rg(G,H)|0;c[F>>2]=H;H=c[F>>2]|0;i=I;return H|0}c[(c[D>>2]|0)+480>>2]=c[l>>2];c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[(c[C>>2]|0)+20>>2]|0))break;c[m>>2]=c[(c[(c[C>>2]|0)+16>>2]|0)+(c[x>>2]<<4)+4>>2];if((c[m>>2]|0)!=0?(c[F>>2]=jH(c[m>>2]|0)|0,(c[F>>2]|0)!=0):0){B=7;break}c[x>>2]=(c[x>>2]|0)+1}if((B|0)==7){c[o>>2]=c[(c[(c[C>>2]|0)+16>>2]|0)+(c[x>>2]<<4)>>2];G=c[C>>2]|0;H=c[F>>2]|0;c[n>>2]=c[o>>2];hg(G,H,40398,n);H=c[D>>2]|0;Lh(H);H=c[C>>2]|0;G=c[D>>2]|0;Sf(H,G);G=c[C>>2]|0;H=c[F>>2]|0;H=Rg(G,H)|0;c[F>>2]=H;H=c[F>>2]|0;i=I;return H|0}ju(c[C>>2]|0);c[c[D>>2]>>2]=c[C>>2];c[(c[D>>2]|0)+428>>2]=0;do if((c[p>>2]|0)>=0){if((c[p>>2]|0)!=0?(a[(c[u>>2]|0)+((c[p>>2]|0)-1)>>0]|0)==0:0){B=17;break}c[r>>2]=c[(c[C>>2]|0)+88+4>>2];l=c[C>>2]|0;if((c[p>>2]|0)>(c[r>>2]|0)){hg(l,18,40428,s);c[F>>2]=Rg(c[C>>2]|0,18)|0;H=c[D>>2]|0;Lh(H);H=c[C>>2]|0;G=c[D>>2]|0;Sf(H,G);G=c[C>>2]|0;H=c[F>>2]|0;H=Rg(G,H)|0;c[F>>2]=H;H=c[F>>2]|0;i=I;return H|0}s=c[p>>2]|0;c[t>>2]=Iw(l,c[u>>2]|0,s,((s|0)<0)<<31>>31)|0;if(c[t>>2]|0){Uh(c[D>>2]|0,c[t>>2]|0,H)|0;c[(c[D>>2]|0)+484>>2]=(c[u>>2]|0)+((c[(c[D>>2]|0)+484>>2]|0)-(c[t>>2]|0));Sf(c[C>>2]|0,c[t>>2]|0);break}else{c[(c[D>>2]|0)+484>>2]=(c[u>>2]|0)+(c[p>>2]|0);break}}else B=17;while(0);if((B|0)==17)Uh(c[D>>2]|0,c[u>>2]|0,H)|0;if((c[(c[D>>2]|0)+12>>2]|0)==101)c[(c[D>>2]|0)+12>>2]=0;if(a[(c[D>>2]|0)+17>>0]|0)kH(c[D>>2]|0);if(a[(c[C>>2]|0)+65>>0]|0)c[(c[D>>2]|0)+12>>2]=7;if(c[q>>2]|0)c[c[q>>2]>>2]=c[(c[D>>2]|0)+484>>2];c[F>>2]=c[(c[D>>2]|0)+12>>2];a:do if(((c[F>>2]|0)==0?(c[(c[D>>2]|0)+8>>2]|0)!=0:0)?(d[(c[D>>2]|0)+453>>0]|0)!=0:0){l=c[(c[D>>2]|0)+8>>2]|0;if((d[(c[D>>2]|0)+453>>0]|0)==2){OB(l,4);c[y>>2]=8;c[z>>2]=12}else{OB(l,8);c[y>>2]=0;c[z>>2]=8}c[x>>2]=c[y>>2];while(1){if((c[x>>2]|0)>=(c[z>>2]|0))break a;PB(c[(c[D>>2]|0)+8>>2]|0,(c[x>>2]|0)-(c[y>>2]|0)|0,0,c[6360+(c[x>>2]<<2)>>2]|0,0)|0;c[x>>2]=(c[x>>2]|0)+1}}while(0);if(!(d[(c[C>>2]|0)+140+5>>0]|0)){c[A>>2]=c[(c[D>>2]|0)+8>>2];lH(c[A>>2]|0,c[u>>2]|0,(c[(c[D>>2]|0)+484>>2]|0)-(c[u>>2]|0)|0,c[v>>2]|0)}do if(c[(c[D>>2]|0)+8>>2]|0){if((c[F>>2]|0)==0?(d[(c[C>>2]|0)+65>>0]|0)==0:0){B=41;break}Qg(c[(c[D>>2]|0)+8>>2]|0)|0}else B=41;while(0);if((B|0)==41)c[c[w>>2]>>2]=c[(c[D>>2]|0)+8>>2];l=c[C>>2]|0;b=c[F>>2]|0;if(c[H>>2]|0){c[G>>2]=c[H>>2];hg(l,b,19255,G);Sf(c[C>>2]|0,c[H>>2]|0)}else jg(l,b);while(1){if(!(c[(c[D>>2]|0)+532>>2]|0))break;c[E>>2]=c[(c[D>>2]|0)+532>>2];c[(c[D>>2]|0)+532>>2]=c[(c[E>>2]|0)+4>>2];Sf(c[C>>2]|0,c[E>>2]|0)}H=c[D>>2]|0;Lh(H);H=c[C>>2]|0;G=c[D>>2]|0;Sf(H,G);G=c[C>>2]|0;H=c[F>>2]|0;H=Rg(G,H)|0;c[F>>2]=H;H=c[F>>2]|0;i=I;return H|0}function jH(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;kg(c[e>>2]|0);c[b>>2]=mH(c[e>>2]|0,1,1)|0;i=d;return c[b>>2]|0}function kH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;b=k+24|0;e=k+20|0;f=k+16|0;j=k+12|0;d=k+8|0;g=k+4|0;h=k;c[b>>2]=a;c[e>>2]=c[c[b>>2]>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[e>>2]|0)+20>>2]|0)){b=14;break}c[g>>2]=0;c[h>>2]=c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+4>>2];if(c[h>>2]|0){if(!(og(c[h>>2]|0)|0)){c[j>>2]=mg(c[h>>2]|0,0)|0;if((c[j>>2]|0)==7|(c[j>>2]|0)==3082)jh(c[e>>2]|0);if(c[j>>2]|0){b=14;break}c[g>>2]=1}ng(c[h>>2]|0,1,d);if((c[d>>2]|0)!=(c[c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+12>>2]>>2]|0)){rj(c[e>>2]|0,c[f>>2]|0);c[(c[b>>2]|0)+12>>2]=17}if(c[g>>2]|0)Bj(c[h>>2]|0)|0}c[f>>2]=(c[f>>2]|0)+1}if((b|0)==14){i=k;return}}function lH(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[g>>2]=a;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;if(!(c[g>>2]|0)){i=l;return}d=c[j>>2]|0;d=Iw(c[c[g>>2]>>2]|0,c[h>>2]|0,d,((d|0)<0)<<31>>31)|0;c[(c[g>>2]|0)+168>>2]=d;d=(c[g>>2]|0)+88|0;b[d>>1]=b[d>>1]&-257|(c[k>>2]&1)<<8&65535;i=l;return}function mH(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;j=q+16|0;k=q+12|0;l=q+8|0;m=q+20|0;n=q+4|0;o=q;c[k>>2]=f;c[l>>2]=g;a[m>>0]=h;c[n>>2]=c[(c[k>>2]|0)+4>>2];if(!(a[(c[k>>2]|0)+9>>0]|0)){c[j>>2]=0;p=c[j>>2]|0;i=q;return p|0}if((c[(c[n>>2]|0)+76>>2]|0)!=(c[k>>2]|0)?(e[(c[n>>2]|0)+22>>1]&32|0)!=0:0){c[j>>2]=262;p=c[j>>2]|0;i=q;return p|0}c[o>>2]=c[(c[n>>2]|0)+72>>2];while(1){if(!(c[o>>2]|0)){p=15;break}if(((c[c[o>>2]>>2]|0)!=(c[k>>2]|0)?(c[(c[o>>2]|0)+4>>2]|0)==(c[l>>2]|0):0)?(d[(c[o>>2]|0)+8>>0]|0)!=(d[m>>0]|0):0)break;c[o>>2]=c[(c[o>>2]|0)+12>>2]}if((p|0)==15){c[j>>2]=0;p=c[j>>2]|0;i=q;return p|0}if((d[m>>0]|0)==2){p=(c[n>>2]|0)+22|0;b[p>>1]=e[p>>1]|64}c[j>>2]=262;p=c[j>>2]|0;i=q;return p|0}function nH(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;g=l+16|0;m=l+12|0;h=l+8|0;j=l+4|0;k=l;c[m>>2]=b;c[h>>2]=e;c[j>>2]=f;c[k>>2]=c[(c[m>>2]|0)+8>>2];while(1){if(!(c[k>>2]|0))break;if((c[k>>2]|0)!=(c[j>>2]|0)){if(!(c[h>>2]|0))break;if((c[(c[k>>2]|0)+52>>2]|0)==(c[h>>2]|0))break}c[k>>2]=c[(c[k>>2]|0)+8>>2]}if(c[k>>2]|0){c[g>>2]=oH(c[k>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;m=c[g>>2]|0;i=l;return m|0}if(c[j>>2]|0){m=(c[j>>2]|0)+64|0;a[m>>0]=(d[m>>0]|0)&-33}c[g>>2]=0;m=c[g>>2]|0;i=l;return m|0}function oH(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;j=l+16|0;f=l+12|0;g=l+8|0;h=l+4|0;k=l;c[f>>2]=a;c[g>>2]=b;c[h>>2]=e;a:while(1){do if((c[f>>2]|0)!=(c[h>>2]|0)){if(0!=(c[g>>2]|0)?(c[(c[f>>2]|0)+52>>2]|0)!=(c[g>>2]|0):0)break;if((d[(c[f>>2]|0)+66>>0]|0|0)!=1?(d[(c[f>>2]|0)+66>>0]|0|0)!=2:0){qH(c[f>>2]|0);break}c[k>>2]=pH(c[f>>2]|0)|0;if(c[k>>2]|0){f=8;break a}}while(0);c[f>>2]=c[(c[f>>2]|0)+8>>2];if(!(c[f>>2]|0)){f=11;break}}if((f|0)==8){c[j>>2]=c[k>>2];k=c[j>>2]|0;i=l;return k|0}else if((f|0)==11){c[j>>2]=0;k=c[j>>2]|0;i=l;return k|0}return 0}function pH(b){b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=b;b=c[e>>2]|0;if((d[(c[e>>2]|0)+66>>0]|0|0)==2)a[b+66>>0]=1;else c[b+60>>2]=0;c[f>>2]=rH(c[e>>2]|0)|0;if(!(c[f>>2]|0)){qH(c[e>>2]|0);a[(c[e>>2]|0)+66>>0]=3}e=(c[e>>2]|0)+64|0;a[e>>0]=(d[e>>0]|0)&-15;i=g;return c[f>>2]|0}function qH(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;c[e>>2]=0;while(1){if((c[e>>2]|0)>(a[(c[d>>2]|0)+68>>0]|0))break;qB(c[(c[d>>2]|0)+120+(c[e>>2]<<2)>>2]|0);c[(c[d>>2]|0)+120+(c[e>>2]<<2)>>2]=0;c[e>>2]=(c[e>>2]|0)+1}a[(c[d>>2]|0)+68>>0]=-1;i=f;return}function rH(a){a=a|0;var b=0,e=0,f=0,g=0;g=i;i=i+16|0;e=g+8|0;f=g+4|0;b=g;c[e>>2]=a;c[f>>2]=sH(c[e>>2]|0,(c[e>>2]|0)+40|0)|0;if(d[(c[e>>2]|0)+69>>0]|0){f=c[f>>2]|0;i=g;return f|0}a=(c[e>>2]|0)+40|0;c[b>>2]=_f(c[a>>2]|0,c[a+4>>2]|0)|0;if(!(c[b>>2]|0)){c[f>>2]=7;f=c[f>>2]|0;i=g;return f|0}c[f>>2]=tH(c[e>>2]|0,0,c[(c[e>>2]|0)+40>>2]|0,c[b>>2]|0)|0;a=c[b>>2]|0;if(!(c[f>>2]|0)){c[(c[e>>2]|0)+48>>2]=a;f=c[f>>2]|0;i=g;return f|0}else{Kd(a);f=c[f>>2]|0;i=g;return f|0}return 0}function sH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;iF(c[e>>2]|0);e=(c[e>>2]|0)+16|0;a=c[e+4>>2]|0;b=c[f>>2]|0;c[b>>2]=c[e>>2];c[b+4>>2]=a;i=d;return 0}function tH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;a=hF(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[g>>2]|0,0)|0;i=f;return a|0}function uH(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;kg(c[c[d>>2]>>2]|0);i=b;return}function vH(b){b=b|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=b;b=(c[f>>2]|0)+64|0;a[b>>0]=d[b>>0]|0|16;a[(c[c[f>>2]>>2]|0)+11>>0]=1;i=e;return}function wH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(c[f>>2]|0){g=c[f>>2]|0;i=h;return g|0}c[g>>2]=(c[g>>2]|0)+7&-8;d=c[g>>2]|0;a=c[e>>2]|0;if((c[g>>2]|0)<=(c[(c[e>>2]|0)+4>>2]|0)){g=a+4|0;c[g>>2]=(c[g>>2]|0)-d;c[f>>2]=(c[c[e>>2]>>2]|0)+(c[(c[e>>2]|0)+4>>2]|0);g=c[f>>2]|0;i=h;return g|0}else{g=a+8|0;c[g>>2]=(c[g>>2]|0)+d;g=c[f>>2]|0;i=h;return g|0}return 0}function xH(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;if(a[(c[h>>2]|0)+1>>0]|0){qA(c[c[g>>2]>>2]|0,a[(c[h>>2]|0)+1>>0]|0,c[(c[h>>2]|0)+16>>2]|0);a[(c[h>>2]|0)+1>>0]=0;c[(c[h>>2]|0)+16>>2]=0}if((c[k>>2]|0)<0){Ih(c[g>>2]|0,((c[h>>2]|0)-(c[(c[g>>2]|0)+4>>2]|0)|0)/20|0,c[j>>2]|0,c[k>>2]|0);i=l;return}if(!(c[k>>2]|0))c[k>>2]=If(c[j>>2]|0)|0;e=c[k>>2]|0;e=Iw(c[c[g>>2]>>2]|0,c[j>>2]|0,e,((e|0)<0)<<31>>31)|0;c[(c[h>>2]|0)+16>>2]=e;a[(c[h>>2]|0)+1>>0]=-1;i=l;return}function yH(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=(c[d>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+1;i=b;return}function zH(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return d[(c[b>>2]|0)+9>>0]|0|0}function AH(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;p=r;g=r+36|0;h=r+32|0;j=r+28|0;m=r+24|0;n=r+20|0;q=r+16|0;l=r+12|0;o=r+8|0;k=r+4|0;c[h>>2]=e;c[j>>2]=f;c[m>>2]=c[c[j>>2]>>2];c[q>>2]=0;c[k>>2]=c[c[h>>2]>>2];if(c[(c[j>>2]|0)+16>>2]|0){c[g>>2]=1;q=c[g>>2]|0;i=r;return q|0}if((c[(c[m>>2]|0)+4>>2]|0)!=0?(c[(c[m>>2]|0)+4>>2]|0)!=(c[(c[m>>2]|0)+8>>2]|0):0){c[g>>2]=0;q=c[g>>2]|0;i=r;return q|0}c[l>>2]=(If(c[(c[j>>2]|0)+4>>2]|0)|0)+1;c[n>>2]=ph(c[k>>2]|0,72+(c[l>>2]|0)|0,0)|0;if(!(c[n>>2]|0)){c[g>>2]=0;q=c[g>>2]|0;i=r;return q|0}c[(c[j>>2]|0)+16>>2]=c[n>>2];c[c[n>>2]>>2]=(c[n>>2]|0)+72;iR(c[c[n>>2]>>2]|0,c[(c[j>>2]|0)+4>>2]|0,c[l>>2]|0)|0;b[(c[n>>2]|0)+36>>1]=1;c[(c[n>>2]|0)+64>>2]=c[(c[(c[k>>2]|0)+16>>2]|0)+12>>2];e=(c[n>>2]|0)+42|0;a[e>>0]=d[e>>0]|0|16;c[(c[n>>2]|0)+48>>2]=0;b[(c[n>>2]|0)+32>>1]=-1;e=c[k>>2]|0;f=c[n>>2]|0;Lw(e,f,nh(c[k>>2]|0,c[c[n>>2]>>2]|0)|0);Lw(c[k>>2]|0,c[n>>2]|0,0);f=c[k>>2]|0;e=c[n>>2]|0;Lw(f,e,nh(c[k>>2]|0,c[c[n>>2]>>2]|0)|0);c[o>>2]=oz(c[k>>2]|0,c[n>>2]|0,c[j>>2]|0,c[(c[m>>2]|0)+8>>2]|0,q)|0;if(c[o>>2]|0){o=c[h>>2]|0;c[p>>2]=c[q>>2];Ah(o,19255,p);Sf(c[k>>2]|0,c[q>>2]|0);BH(c[k>>2]|0,c[j>>2]|0);c[g>>2]=0;q=c[g>>2]|0;i=r;return q|0}else{c[g>>2]=1;q=c[g>>2]|0;i=r;return q|0}return 0}function BH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=c[(c[e>>2]|0)+16>>2];if(!(c[f>>2]|0)){i=g;return}RG(c[d>>2]|0,c[f>>2]|0);CH(c[d>>2]|0,c[f>>2]|0);Sf(c[d>>2]|0,c[f>>2]|0);c[(c[e>>2]|0)+16>>2]=0;i=g;return}function CH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;if(!((c[d>>2]|0)!=0?(c[(c[d>>2]|0)+528>>2]|0)!=0:0))DH(0,c[e>>2]|0)|0;if(!(c[(c[e>>2]|0)+52>>2]|0)){i=g;return}c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[e>>2]|0)+48>>2]|0))break;if((c[f>>2]|0)!=1)Sf(c[d>>2]|0,c[(c[(c[e>>2]|0)+52>>2]|0)+(c[f>>2]<<2)>>2]|0);c[f>>2]=(c[f>>2]|0)+1}Sf(c[d>>2]|0,c[(c[e>>2]|0)+52>>2]|0);i=g;return}function DH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;d=k+20|0;e=k+16|0;h=k+12|0;j=k+8|0;f=k+4|0;g=k;c[d>>2]=a;c[e>>2]=b;c[h>>2]=0;c[j>>2]=c[(c[e>>2]|0)+56>>2];c[(c[e>>2]|0)+56>>2]=0;while(1){if(!(c[j>>2]|0))break;c[f>>2]=c[c[j>>2]>>2];c[g>>2]=c[(c[j>>2]|0)+24>>2];if((c[f>>2]|0)==(c[d>>2]|0)){c[h>>2]=c[j>>2];c[(c[e>>2]|0)+56>>2]=c[h>>2];c[(c[h>>2]|0)+24>>2]=0}else{c[(c[j>>2]|0)+24>>2]=c[(c[f>>2]|0)+336>>2];c[(c[f>>2]|0)+336>>2]=c[j>>2]}c[j>>2]=c[g>>2]}i=k;return c[h>>2]|0}function EH(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=a;c[f>>2]=d;Ug(c[e>>2]|0);d=c[e>>2]|0;a=c[f>>2]|0;e=d+40|0;do{c[d>>2]=c[a>>2];d=d+4|0;a=a+4|0}while((d|0)<(e|0));b[(c[f>>2]|0)+8>>1]=1;c[(c[f>>2]|0)+24>>2]=0;i=g;return}function FH(){return 312}function GH(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+224|0;g=f+220|0;h=f+216|0;l=f;k=f+212|0;j=f+208|0;c[g>>2]=a;c[h>>2]=d;iR(l|0,c[g>>2]|0,208)|0;iR(c[g>>2]|0,c[h>>2]|0,208)|0;iR(c[h>>2]|0,l|0,208)|0;c[k>>2]=c[(c[g>>2]|0)+52>>2];c[(c[g>>2]|0)+52>>2]=c[(c[h>>2]|0)+52>>2];c[(c[h>>2]|0)+52>>2]=c[k>>2];c[k>>2]=c[(c[g>>2]|0)+48>>2];c[(c[g>>2]|0)+48>>2]=c[(c[h>>2]|0)+48>>2];c[(c[h>>2]|0)+48>>2]=c[k>>2];c[j>>2]=c[(c[g>>2]|0)+168>>2];c[(c[g>>2]|0)+168>>2]=c[(c[h>>2]|0)+168>>2];c[(c[h>>2]|0)+168>>2]=c[j>>2];d=(c[h>>2]|0)+88|0;b[d>>1]=b[d>>1]&-257|((e[(c[g>>2]|0)+88>>1]|0)>>>8&1)<<8&65535;i=f;return}function HH(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+80>>2]=0;i=b;return}function IH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0.0;j=i;i=i+32|0;d=j+16|0;e=j+12|0;g=j+8|0;f=j;c[d>>2]=a;c[e>>2]=b;if((c[c[d>>2]>>2]|0)>=2?(c[(c[d>>2]|0)+72>>2]|0)!=0:0){c[g>>2]=Yb[c[(c[d>>2]|0)+72>>2]&255](c[d>>2]|0,c[e>>2]|0)|0;g=c[g>>2]|0;i=j;return g|0}c[g>>2]=Yb[c[(c[d>>2]|0)+64>>2]&255](c[d>>2]|0,f)|0;k=+h[f>>3]*864.0e5;a=+N(k)>=1.0?k>0.0?~~+$(+M(k/4294967296.0),4294967295.0)>>>0:~~+Z((k-+(~~k>>>0))/4294967296.0)>>>0:0;f=c[e>>2]|0;c[f>>2]=~~k>>>0;c[f+4>>2]=a;g=c[g>>2]|0;i=j;return g|0}function JH(f){f=f|0;var g=0,h=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;y=i;i=i+80|0;w=y+8|0;q=y;r=y+68|0;s=y+64|0;n=y+60|0;o=y+56|0;g=y+52|0;p=y+48|0;h=y+44|0;j=y+40|0;v=y+36|0;t=y+32|0;x=y+28|0;u=y+24|0;k=y+20|0;m=y+16|0;l=y+12|0;c[s>>2]=f;c[o>>2]=0;c[g>>2]=0;c[p>>2]=0;c[h>>2]=c[c[s>>2]>>2];c[v>>2]=0;c[t>>2]=(c[(c[s>>2]|0)+8>>2]|0)+40;oC(c[t>>2]|0,8);c[(c[s>>2]|0)+20>>2]=0;if((c[(c[s>>2]|0)+80>>2]|0)==7){jh(c[h>>2]|0);c[r>>2]=1;x=c[r>>2]|0;i=y;return x|0}c[n>>2]=c[(c[s>>2]|0)+32>>2];a:do if((b[(c[s>>2]|0)+88>>1]&3|0)==1){c[p>>2]=(c[(c[s>>2]|0)+8>>2]|0)+360;if(e[(c[p>>2]|0)+8>>1]&16){c[o>>2]=((c[(c[p>>2]|0)+12>>2]|0)>>>0)/4|0;c[g>>2]=c[(c[p>>2]|0)+16>>2]}c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[o>>2]|0))break a;c[n>>2]=(c[n>>2]|0)+(c[(c[(c[g>>2]|0)+(c[j>>2]<<2)>>2]|0)+4>>2]|0);c[j>>2]=(c[j>>2]|0)+1}}while(0);do{z=(c[s>>2]|0)+76|0;f=c[z>>2]|0;c[z>>2]=f+1;c[j>>2]=f;if((c[j>>2]|0)>=(c[n>>2]|0))break;if((b[(c[s>>2]|0)+88>>1]&3|0)!=2)break}while((d[(c[(c[s>>2]|0)+4>>2]|0)+((c[j>>2]|0)*20|0)>>0]|0)!=161);do if((c[j>>2]|0)>=(c[n>>2]|0)){c[(c[s>>2]|0)+80>>2]=0;c[v>>2]=101}else{if(c[(c[h>>2]|0)+240>>2]|0){c[(c[s>>2]|0)+80>>2]=9;c[v>>2]=1;z=c[s>>2]|0;SH(z,ih(c[(c[s>>2]|0)+80>>2]|0)|0,q);break}if((c[j>>2]|0)<(c[(c[s>>2]|0)+32>>2]|0))c[u>>2]=(c[(c[s>>2]|0)+4>>2]|0)+((c[j>>2]|0)*20|0);else{c[j>>2]=(c[j>>2]|0)-(c[(c[s>>2]|0)+32>>2]|0);c[k>>2]=0;while(1){if((c[j>>2]|0)<(c[(c[(c[g>>2]|0)+(c[k>>2]<<2)>>2]|0)+4>>2]|0))break;c[j>>2]=(c[j>>2]|0)-(c[(c[(c[g>>2]|0)+(c[k>>2]<<2)>>2]|0)+4>>2]|0);c[k>>2]=(c[k>>2]|0)+1}c[u>>2]=(c[c[(c[g>>2]|0)+(c[k>>2]<<2)>>2]>>2]|0)+((c[j>>2]|0)*20|0)}if((b[(c[s>>2]|0)+88>>1]&3|0)==1?(b[(c[t>>2]|0)+8>>1]=4,q=c[j>>2]|0,z=c[t>>2]|0,c[z>>2]=q,c[z+4>>2]=((q|0)<0)<<31>>31,c[t>>2]=(c[t>>2]|0)+40,b[(c[t>>2]|0)+8>>1]=2562,z=mM(d[c[u>>2]>>0]|0)|0,c[(c[t>>2]|0)+16>>2]=z,z=If(c[(c[t>>2]|0)+16>>2]|0)|0,c[(c[t>>2]|0)+12>>2]=z,a[(c[t>>2]|0)+10>>0]=1,c[t>>2]=(c[t>>2]|0)+40,(a[(c[u>>2]|0)+1>>0]|0)==-18):0){c[m>>2]=(c[o>>2]|0)+1<<2;c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[o>>2]|0))break;if((c[(c[g>>2]|0)+(c[l>>2]<<2)>>2]|0)==(c[(c[u>>2]|0)+16>>2]|0))break;c[l>>2]=(c[l>>2]|0)+1}if((c[l>>2]|0)==(c[o>>2]|0)?0==(ux(c[p>>2]|0,c[m>>2]|0,(c[o>>2]|0)!=0&1)|0):0){c[g>>2]=c[(c[p>>2]|0)+16>>2];q=c[(c[u>>2]|0)+16>>2]|0;z=c[o>>2]|0;c[o>>2]=z+1;c[(c[g>>2]|0)+(z<<2)>>2]=q;z=(c[p>>2]|0)+8|0;b[z>>1]=e[z>>1]|16;c[(c[p>>2]|0)+12>>2]=c[o>>2]<<2}}b[(c[t>>2]|0)+8>>1]=4;q=c[(c[u>>2]|0)+4>>2]|0;z=c[t>>2]|0;c[z>>2]=q;c[z+4>>2]=((q|0)<0)<<31>>31;c[t>>2]=(c[t>>2]|0)+40;b[(c[t>>2]|0)+8>>1]=4;z=c[(c[u>>2]|0)+8>>2]|0;q=c[t>>2]|0;c[q>>2]=z;c[q+4>>2]=((z|0)<0)<<31>>31;c[t>>2]=(c[t>>2]|0)+40;b[(c[t>>2]|0)+8>>1]=4;q=c[(c[u>>2]|0)+12>>2]|0;z=c[t>>2]|0;c[z>>2]=q;c[z+4>>2]=((q|0)<0)<<31>>31;c[t>>2]=(c[t>>2]|0)+40;if(tx(c[t>>2]|0,100)|0){c[r>>2]=1;z=c[r>>2]|0;i=y;return z|0}b[(c[t>>2]|0)+8>>1]=514;c[x>>2]=nM(c[u>>2]|0,c[(c[t>>2]|0)+16>>2]|0,c[(c[t>>2]|0)+24>>2]|0)|0;g=c[t>>2]|0;if((c[x>>2]|0)!=(c[(c[t>>2]|0)+16>>2]|0))dh(g,c[x>>2]|0,-1,1,0)|0;else{z=If(c[g+16>>2]|0)|0;c[(c[t>>2]|0)+12>>2]=z;a[(c[t>>2]|0)+10>>0]=1}c[t>>2]=(c[t>>2]|0)+40;do if((b[(c[s>>2]|0)+88>>1]&3|0)==1){if(!(tx(c[t>>2]|0,4)|0)){b[(c[t>>2]|0)+8>>1]=514;c[(c[t>>2]|0)+12>>2]=2;z=c[(c[t>>2]|0)+16>>2]|0;c[w>>2]=d[(c[u>>2]|0)+3>>0];Qd(3,z,43360,w)|0;a[(c[t>>2]|0)+10>>0]=1;c[t>>2]=(c[t>>2]|0)+40;b[(c[t>>2]|0)+8>>1]=1;break}c[r>>2]=1;z=c[r>>2]|0;i=y;return z|0}while(0);b[(c[s>>2]|0)+84>>1]=8-((b[(c[s>>2]|0)+88>>1]&3)-1<<2);c[(c[s>>2]|0)+20>>2]=(c[(c[s>>2]|0)+8>>2]|0)+40;c[(c[s>>2]|0)+80>>2]=0;c[v>>2]=100}while(0);c[r>>2]=c[v>>2];z=c[r>>2]|0;i=y;return z|0}function dJ(b,e){b=b|0;e=e|0;var f=0,g=0,h=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;x=i;i=i+80|0;k=x+64|0;j=x+60|0;l=x+56|0;s=x+52|0;q=x+48|0;r=x+44|0;h=x+40|0;t=x+36|0;u=x+32|0;v=x+28|0;w=x+24|0;p=x+20|0;f=x+16|0;o=x+12|0;g=x+8|0;n=x+4|0;m=x;c[j>>2]=b;c[l>>2]=e;c[s>>2]=0;c[h>>2]=0;c[p>>2]=0;if(!(a[(c[l>>2]|0)+63>>0]|0)){xj(c[j>>2]|0,c[l>>2]|0,41344);c[k>>2]=1;w=c[k>>2]|0;i=x;return w|0}if((c[(c[l>>2]|0)+148>>2]|0)>1){xj(c[j>>2]|0,c[l>>2]|0,41384);c[k>>2]=1;w=c[k>>2]|0;i=x;return w|0}c[t>>2]=c[(c[l>>2]|0)+24>>2];c[u>>2]=c[(c[l>>2]|0)+80>>2];c[v>>2]=c[(c[l>>2]|0)+84>>2];c[w>>2]=c[(c[l>>2]|0)+176>>2];b=(c[l>>2]|0)+24|0;c[b>>2]=c[b>>2]|2107392;b=(c[l>>2]|0)+24|0;c[b>>2]=c[b>>2]&-655361;c[(c[l>>2]|0)+176>>2]=0;c[q>>2]=c[(c[(c[l>>2]|0)+16>>2]|0)+4>>2];c[f>>2]=DJ(Of(c[q>>2]|0)|0)|0;c[g>>2]=c[(c[l>>2]|0)+20>>2];if(Sq(c[l>>2]|0)|0)c[h>>2]=41427;else c[h>>2]=41459;c[s>>2]=EJ(c[l>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;if((c[(c[l>>2]|0)+20>>2]|0)>(c[g>>2]|0))c[p>>2]=(c[(c[l>>2]|0)+16>>2]|0)+((c[(c[l>>2]|0)+20>>2]|0)-1<<4);a:do if((((c[s>>2]|0)==0?(c[r>>2]=c[(c[(c[l>>2]|0)+16>>2]|0)+((c[(c[l>>2]|0)+20>>2]|0)-1<<4)+4>>2],Bj(c[r>>2]|0)|0,c[o>>2]=FJ(c[q>>2]|0)|0,c[s>>2]=EJ(c[l>>2]|0,c[j>>2]|0,41483)|0,(c[s>>2]|0)==0):0)?(c[s>>2]=EJ(c[l>>2]|0,c[j>>2]|0,41516)|0,(c[s>>2]|0)==0):0)?(c[s>>2]=mg(c[q>>2]|0,2)|0,(c[s>>2]|0)==0):0){if((qg(Of(c[q>>2]|0)|0)|0)==5)c[(c[l>>2]|0)+72>>2]=0;b=c[r>>2]|0;h=pg(c[q>>2]|0)|0;do if(!(xi(b,h,c[o>>2]|0,0)|0)){if((c[f>>2]|0)==0?(xi(c[r>>2]|0,c[(c[l>>2]|0)+72>>2]|0,c[o>>2]|0,0)|0)!=0:0)break;if(!(d[(c[l>>2]|0)+65>>0]|0)){e=c[r>>2]|0;if((a[(c[l>>2]|0)+68>>0]|0)>=0)f=a[(c[l>>2]|0)+68>>0]|0;else f=TB(c[q>>2]|0)|0;VB(e,f)|0;c[s>>2]=GJ(c[l>>2]|0,c[j>>2]|0,41523)|0;if(c[s>>2]|0)break a;c[s>>2]=GJ(c[l>>2]|0,c[j>>2]|0,41671)|0;if(c[s>>2]|0)break a;c[s>>2]=GJ(c[l>>2]|0,c[j>>2]|0,41775)|0;if(c[s>>2]|0)break a;h=(c[l>>2]|0)+24|0;c[h>>2]=c[h>>2]|134217728;c[s>>2]=GJ(c[l>>2]|0,c[j>>2]|0,41893)|0;h=(c[l>>2]|0)+24|0;c[h>>2]=c[h>>2]&-134217729;if(c[s>>2]|0)break a;c[s>>2]=GJ(c[l>>2]|0,c[j>>2]|0,42089)|0;if(c[s>>2]|0)break a;c[s>>2]=GJ(c[l>>2]|0,c[j>>2]|0,42202)|0;if(c[s>>2]|0)break a;c[s>>2]=EJ(c[l>>2]|0,c[j>>2]|0,42357)|0;if(c[s>>2]|0)break a;c[m>>2]=0;while(1){e=c[q>>2]|0;if((c[m>>2]|0)>=10)break; -ng(e,d[42541+(c[m>>2]|0)>>0]|0,n);c[s>>2]=yg(c[r>>2]|0,d[42541+(c[m>>2]|0)>>0]|0,(c[n>>2]|0)+(d[42541+((c[m>>2]|0)+1)>>0]|0)|0)|0;if(c[s>>2]|0)break a;c[m>>2]=(c[m>>2]|0)+2}c[s>>2]=HJ(e,c[r>>2]|0)|0;if(c[s>>2]|0)break a;c[s>>2]=Bj(c[r>>2]|0)|0;if(c[s>>2]|0)break a;n=c[q>>2]|0;VB(n,TB(c[r>>2]|0)|0)|0;n=c[q>>2]|0;r=pg(c[r>>2]|0)|0;c[s>>2]=xi(n,r,c[o>>2]|0,1)|0;break a}}while(0);c[s>>2]=7}while(0);c[(c[l>>2]|0)+24>>2]=c[t>>2];c[(c[l>>2]|0)+80>>2]=c[u>>2];c[(c[l>>2]|0)+84>>2]=c[v>>2];c[(c[l>>2]|0)+176>>2]=c[w>>2];xi(c[q>>2]|0,-1,-1,1)|0;a[(c[l>>2]|0)+63>>0]=1;if(c[p>>2]|0){lB(c[(c[p>>2]|0)+4>>2]|0)|0;c[(c[p>>2]|0)+4>>2]=0;c[(c[p>>2]|0)+12>>2]=0}zg(c[l>>2]|0);c[k>>2]=c[s>>2];w=c[k>>2]|0;i=x;return w|0}function eJ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;k=j+20|0;h=j+16|0;g=j+12|0;f=j+8|0;e=j+4|0;d=j;c[k>>2]=b;c[g>>2]=c[(c[k>>2]|0)+4>>2];kg(c[k>>2]|0);if(!(a[(c[g>>2]|0)+17>>0]|0)){c[h>>2]=101;k=c[h>>2]|0;i=j;return k|0}c[f>>2]=$E(c[g>>2]|0)|0;c[e>>2]=$q((c[(c[(c[g>>2]|0)+12>>2]|0)+56>>2]|0)+36|0)|0;c[d>>2]=qJ(c[g>>2]|0,c[f>>2]|0,c[e>>2]|0)|0;if((c[f>>2]|0)>>>0<(c[d>>2]|0)>>>0){c[h>>2]=Lj(59178)|0;k=c[h>>2]|0;i=j;return k|0}if((c[e>>2]|0)>>>0<=0){c[h>>2]=101;k=c[h>>2]|0;i=j;return k|0}c[h>>2]=nH(c[g>>2]|0,0,0)|0;if(!(c[h>>2]|0)){rJ(c[g>>2]|0);c[h>>2]=sJ(c[g>>2]|0,c[d>>2]|0,c[f>>2]|0,0)|0}if(c[h>>2]|0){k=c[h>>2]|0;i=j;return k|0}c[h>>2]=Dg(c[(c[(c[g>>2]|0)+12>>2]|0)+72>>2]|0)|0;Xs((c[(c[(c[g>>2]|0)+12>>2]|0)+56>>2]|0)+28|0,c[(c[g>>2]|0)+44>>2]|0);k=c[h>>2]|0;i=j;return k|0}function fJ(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;g=m+8|0;h=m+4|0;j=m+13|0;l=m;k=m+12|0;c[g>>2]=b;c[h>>2]=e;a[j>>0]=f;c[l>>2]=0;if(!(a[(c[g>>2]|0)+9>>0]|0)){l=c[l>>2]|0;i=m;return l|0}a[k>>0]=1+(d[j>>0]|0);kg(c[g>>2]|0);c[l>>2]=mH(c[g>>2]|0,c[h>>2]|0,a[k>>0]|0)|0;if(c[l>>2]|0){l=c[l>>2]|0;i=m;return l|0}c[l>>2]=pJ(c[g>>2]|0,c[h>>2]|0,a[k>>0]|0)|0;l=c[l>>2]|0;i=m;return l|0}function gJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;d=m+24|0;e=m+20|0;f=m+16|0;k=m+12|0;j=m+8|0;g=m+4|0;h=m;c[e>>2]=a;c[f>>2]=b;c[k>>2]=0;if((c[(c[e>>2]|0)+308>>2]|0)>0?(c[(c[e>>2]|0)+332>>2]|0)==0:0){c[d>>2]=6;l=c[d>>2]|0;i=m;return l|0}if(!(c[f>>2]|0)){c[d>>2]=0;l=c[d>>2]|0;i=m;return l|0}c[j>>2]=c[c[(c[f>>2]|0)+8>>2]>>2];if(c[(c[j>>2]|0)+56>>2]|0){c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[e>>2]|0)+308>>2]|0))break;if((c[(c[(c[e>>2]|0)+332>>2]|0)+(c[g>>2]<<2)>>2]|0)==(c[f>>2]|0)){l=10;break}c[g>>2]=(c[g>>2]|0)+1}if((l|0)==10){c[d>>2]=0;l=c[d>>2]|0;i=m;return l|0}c[k>>2]=nJ(c[e>>2]|0)|0;if(((c[k>>2]|0)==0?(c[k>>2]=Tb[c[(c[j>>2]|0)+56>>2]&255](c[(c[f>>2]|0)+8>>2]|0)|0,(c[k>>2]|0)==0):0)?(c[h>>2]=(c[(c[e>>2]|0)+504>>2]|0)+(c[(c[e>>2]|0)+500>>2]|0),oJ(c[e>>2]|0,c[f>>2]|0),(c[h>>2]|0)!=0):0)c[k>>2]=nI(c[e>>2]|0,0,(c[h>>2]|0)-1|0)|0}c[d>>2]=c[k>>2];l=c[d>>2]|0;i=m;return l|0}function hJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+48|0;l=n;f=n+32|0;o=n+28|0;p=n+24|0;g=n+20|0;k=n+16|0;j=n+12|0;h=n+8|0;m=n+4|0;c[f>>2]=a;c[o>>2]=b;c[p>>2]=d;c[g>>2]=e;c[k>>2]=0;c[j>>2]=pi(c[f>>2]|0,c[p>>2]|0,c[(c[(c[f>>2]|0)+16>>2]|0)+(c[o>>2]<<4)>>2]|0)|0;c[m>>2]=c[c[(c[j>>2]|0)+52>>2]>>2];c[h>>2]=nj((c[f>>2]|0)+312|0,c[m>>2]|0)|0;if(((c[h>>2]|0)!=0?(c[(c[c[h>>2]>>2]|0)+4>>2]|0)!=0:0)?(c[(c[c[h>>2]>>2]|0)+20>>2]|0)!=0:0)c[k>>2]=oz(c[f>>2]|0,c[j>>2]|0,c[h>>2]|0,c[(c[c[h>>2]>>2]|0)+4>>2]|0,c[g>>2]|0)|0;else{p=c[f>>2]|0;c[l>>2]=c[m>>2];p=Bh(p,31494,l)|0;c[c[g>>2]>>2]=p;c[k>>2]=1}if(c[k>>2]|0){p=c[k>>2]|0;i=n;return p|0}if(!(Ax(c[f>>2]|0,c[j>>2]|0)|0)){p=c[k>>2]|0;i=n;return p|0}c[k>>2]=nJ(c[f>>2]|0)|0;if(c[k>>2]|0){p=c[k>>2]|0;i=n;return p|0}p=c[f>>2]|0;oJ(p,Ax(c[f>>2]|0,c[j>>2]|0)|0);p=c[k>>2]|0;i=n;return p|0}function iJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+32|0;e=l+28|0;f=l+24|0;m=l+20|0;n=l+16|0;j=l+12|0;h=l+8|0;g=l+4|0;k=l;c[f>>2]=a;c[m>>2]=b;c[n>>2]=d;c[j>>2]=0;c[h>>2]=pi(c[f>>2]|0,c[n>>2]|0,c[(c[(c[f>>2]|0)+16>>2]|0)+(c[m>>2]<<4)>>2]|0)|0;do if((c[h>>2]|0)!=0?(c[(c[h>>2]|0)+56>>2]|0)!=0:0){c[g>>2]=c[(c[h>>2]|0)+56>>2];while(1){if(!(c[g>>2]|0)){a=8;break}if((c[(c[(c[g>>2]|0)+8>>2]|0)+4>>2]|0)>0){a=6;break}c[g>>2]=c[(c[g>>2]|0)+24>>2]}if((a|0)==6){c[e>>2]=6;n=c[e>>2]|0;i=l;return n|0}else if((a|0)==8){c[g>>2]=DH(c[f>>2]|0,c[h>>2]|0)|0;c[k>>2]=c[(c[c[(c[g>>2]|0)+4>>2]>>2]|0)+20>>2];c[j>>2]=Tb[c[k>>2]&255](c[(c[g>>2]|0)+8>>2]|0)|0;if(c[j>>2]|0)break;c[(c[g>>2]|0)+8>>2]=0;c[(c[h>>2]|0)+56>>2]=0;hu(c[g>>2]|0);break}}while(0);c[e>>2]=c[j>>2];n=c[e>>2]|0;i=l;return n|0}function jJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;d=e;c[g>>2]=a;c[f>>2]=b;kg(c[g>>2]|0);c[d>>2]=mJ(c[c[(c[g>>2]|0)+4>>2]>>2]|0,c[f>>2]|0)|0;i=e;return c[d>>2]|0}function kJ(f,g){f=f|0;g=g|0;var 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;D=i;i=i+256|0;z=D+72|0;B=D+64|0;A=D+56|0;y=D+48|0;x=D+40|0;k=D+148|0;l=D+144|0;m=D+140|0;p=D+136|0;u=D+132|0;q=D+128|0;t=D+124|0;o=D+120|0;v=D+116|0;C=D+88|0;j=D+84|0;r=D+80|0;n=D+152|0;w=D;s=D+76|0;c[k>>2]=f;c[l>>2]=g;c[p>>2]=0;c[u>>2]=1;c[m>>2]=c[c[k>>2]>>2];cg(C,c[m>>2]|0,D+156|0,100,c[(c[m>>2]|0)+88>>2]|0);if((c[(c[m>>2]|0)+160>>2]|0)>1){while(1){if(!(a[c[l>>2]>>0]|0))break;c[j>>2]=c[l>>2];do{B=c[l>>2]|0;c[l>>2]=B+1;if((a[B>>0]|0)==10)break}while((a[c[l>>2]>>0]|0)!=0);aA(C,41310,3);aA(C,c[j>>2]|0,(c[l>>2]|0)-(c[j>>2]|0)|0)}C=eg(C)|0;i=D;return C|0}if(!(b[(c[k>>2]|0)+68>>1]|0)){B=c[l>>2]|0;aA(C,B,If(c[l>>2]|0)|0);C=eg(C)|0;i=D;return C|0}while(1){if(!(a[c[l>>2]>>0]|0)){f=33;break}c[q>>2]=lJ(c[l>>2]|0,t)|0;aA(C,c[l>>2]|0,c[q>>2]|0);c[l>>2]=(c[l>>2]|0)+(c[q>>2]|0);if(!(c[t>>2]|0)){f=33;break}do if((a[c[l>>2]>>0]|0)==63)if((c[t>>2]|0)>1){Li((c[l>>2]|0)+1|0,p)|0;break}else{c[p>>2]=c[u>>2];break}else c[p>>2]=vh(c[k>>2]|0,c[l>>2]|0,c[t>>2]|0)|0;while(0);c[l>>2]=(c[l>>2]|0)+(c[t>>2]|0);c[u>>2]=(c[p>>2]|0)+1;c[v>>2]=(c[(c[k>>2]|0)+60>>2]|0)+(((c[p>>2]|0)-1|0)*40|0);if(e[(c[v>>2]|0)+8>>1]&1){aA(C,40498,4);continue}g=c[v>>2]|0;if(e[(c[v>>2]|0)+8>>1]&4){f=g;g=c[f+4>>2]|0;j=x;c[j>>2]=c[f>>2];c[j+4>>2]=g;$z(C,29137,x);continue}f=c[v>>2]|0;if(e[g+8>>1]&8){h[y>>3]=+h[f>>3];$z(C,29142,y);continue}if(e[f+8>>1]&2){a[n>>0]=a[(c[m>>2]|0)+62>>0]|0;if((d[n>>0]|0)!=1){f=w;g=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[w+32>>2]=c[m>>2];dh(w,c[(c[v>>2]|0)+16>>2]|0,c[(c[v>>2]|0)+12>>2]|0,a[n>>0]|0,0)|0;Zt(w,1)|0;c[v>>2]=w}c[r>>2]=c[(c[v>>2]|0)+12>>2];j=c[(c[v>>2]|0)+16>>2]|0;c[A>>2]=c[r>>2];c[A+4>>2]=j;$z(C,41314,A);if((d[n>>0]|0)==1)continue;Ug(w);continue}if(e[(c[v>>2]|0)+8>>1]&16384){c[B>>2]=c[c[v>>2]>>2];$z(C,41321,B);continue}aA(C,41334,2);c[s>>2]=c[(c[v>>2]|0)+12>>2];c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[s>>2]|0))break;c[z>>2]=a[(c[(c[v>>2]|0)+16>>2]|0)+(c[o>>2]|0)>>0]&255;$z(C,41337,z);c[o>>2]=(c[o>>2]|0)+1}aA(C,41342,1)}if((f|0)==33){C=eg(C)|0;i=D;return C|0}return 0}function lJ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+16|0;f=l+12|0;j=l+8|0;h=l+4|0;g=l;c[e>>2]=b;c[f>>2]=d;c[h>>2]=0;c[c[f>>2]>>2]=0;while(1){if(!(a[c[e>>2]>>0]|0)){k=6;break}c[g>>2]=Qu(c[e>>2]|0,j)|0;d=c[g>>2]|0;if((c[j>>2]|0)==135)break;c[h>>2]=(c[h>>2]|0)+d;c[e>>2]=(c[e>>2]|0)+(c[g>>2]|0)}if((k|0)==6){k=c[h>>2]|0;i=l;return k|0}c[c[f>>2]>>2]=d;k=c[h>>2]|0;i=l;return k|0}function mJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if((c[e>>2]|0)>0)c[(c[d>>2]|0)+164>>2]=c[e>>2];i=f;return c[(c[d>>2]|0)+164>>2]|0}function nJ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+32|0;b=g+16|0;d=g+12|0;e=g+4|0;f=g;c[d>>2]=a;c[g+8>>2]=5;do if(!((c[(c[d>>2]|0)+308>>2]|0)%5|0)){c[f>>2]=(c[(c[d>>2]|0)+308>>2]|0)+5<<2;f=c[f>>2]|0;c[e>>2]=Ew(c[d>>2]|0,c[(c[d>>2]|0)+332>>2]|0,f,((f|0)<0)<<31>>31)|0;if(c[e>>2]|0){f=(c[e>>2]|0)+(c[(c[d>>2]|0)+308>>2]<<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[(c[d>>2]|0)+332>>2]=c[e>>2];break}c[b>>2]=7;f=c[b>>2]|0;i=g;return f|0}while(0);c[b>>2]=0;f=c[b>>2]|0;i=g;return f|0}function oJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=c[e>>2]|0;g=(c[f>>2]|0)+308|0;b=c[g>>2]|0;c[g>>2]=b+1;c[(c[(c[f>>2]|0)+332>>2]|0)+(b<<2)>>2]=a;yH(c[e>>2]|0);i=d;return}function pJ(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;g=p+20|0;h=p+16|0;j=p+12|0;k=p+24|0;l=p+8|0;n=p+4|0;m=p;c[h>>2]=b;c[j>>2]=e;a[k>>0]=f;c[l>>2]=c[(c[h>>2]|0)+4>>2];c[n>>2]=0;c[m>>2]=c[(c[l>>2]|0)+72>>2];while(1){if(!(c[m>>2]|0))break;if((c[(c[m>>2]|0)+4>>2]|0)==(c[j>>2]|0)?(c[c[m>>2]>>2]|0)==(c[h>>2]|0):0){o=5;break}c[m>>2]=c[(c[m>>2]|0)+12>>2]}if((o|0)==5)c[n>>2]=c[m>>2];do if(!(c[n>>2]|0)){c[n>>2]=ig(16,0)|0;if(c[n>>2]|0){c[(c[n>>2]|0)+4>>2]=c[j>>2];c[c[n>>2]>>2]=c[h>>2];c[(c[n>>2]|0)+12>>2]=c[(c[l>>2]|0)+72>>2];c[(c[l>>2]|0)+72>>2]=c[n>>2];break}c[g>>2]=7;o=c[g>>2]|0;i=p;return o|0}while(0);if((d[k>>0]|0|0)>(d[(c[n>>2]|0)+8>>0]|0|0))a[(c[n>>2]|0)+8>>0]=a[k>>0]|0;c[g>>2]=0;o=c[g>>2]|0;i=p;return o|0}function qJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;g=i;i=i+32|0;e=g+20|0;h=g+16|0;k=g+12|0;l=g+8|0;j=g+4|0;f=g;c[e>>2]=a;c[h>>2]=b;c[k>>2]=d;c[l>>2]=((c[(c[e>>2]|0)+36>>2]|0)>>>0)/5|0;a=(c[k>>2]|0)-(c[h>>2]|0)|0;a=a+(lF(c[e>>2]|0,c[h>>2]|0)|0)|0;c[j>>2]=((a+(c[l>>2]|0)|0)>>>0)/((c[l>>2]|0)>>>0)|0;c[f>>2]=(c[h>>2]|0)-(c[k>>2]|0)-(c[j>>2]|0);if((c[h>>2]|0)>>>0>((((c[381]|0)>>>0)/((c[(c[e>>2]|0)+32>>2]|0)>>>0)|0)+1|0)>>>0?(c[f>>2]|0)>>>0<((((c[381]|0)>>>0)/((c[(c[e>>2]|0)+32>>2]|0)>>>0)|0)+1|0)>>>0:0)c[f>>2]=(c[f>>2]|0)+-1;while(1){l=lF(c[e>>2]|0,c[f>>2]|0)|0;if((l|0)==(c[f>>2]|0))b=1;else b=(c[f>>2]|0)==((((c[381]|0)>>>0)/((c[(c[e>>2]|0)+32>>2]|0)>>>0)|0)+1|0);d=c[f>>2]|0;if(!b)break;c[f>>2]=d+-1}i=g;return d|0}function rJ(b){b=b|0;var e=0,f=0,g=0;f=i;i=i+16|0;g=f+4|0;e=f;c[g>>2]=b;c[e>>2]=c[(c[g>>2]|0)+8>>2];while(1){if(!(c[e>>2]|0))break;g=(c[e>>2]|0)+64|0;a[g>>0]=(d[g>>0]|0)&-5;c[e>>2]=c[(c[e>>2]|0)+8>>2]}i=f;return}function sJ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=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;z=i;i=i+64|0;h=z+52|0;j=z+48|0;k=z+44|0;l=z+40|0;m=z+36|0;t=z+32|0;x=z+28|0;o=z+57|0;s=z+24|0;p=z+20|0;u=z+16|0;q=z+12|0;w=z+8|0;n=z+56|0;r=z+4|0;v=z;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;b=lF(c[j>>2]|0,c[l>>2]|0)|0;do if((b|0)!=(c[l>>2]|0)?(c[l>>2]|0)!=((((c[381]|0)>>>0)/((c[(c[j>>2]|0)+32>>2]|0)>>>0)|0)+1|0):0){c[t>>2]=$q((c[(c[(c[j>>2]|0)+12>>2]|0)+56>>2]|0)+36|0)|0;if(!(c[t>>2]|0)){c[h>>2]=101;y=c[h>>2]|0;i=z;return y|0}c[x>>2]=mF(c[j>>2]|0,c[l>>2]|0,o,s)|0;if(c[x>>2]|0){c[h>>2]=c[x>>2];y=c[h>>2]|0;i=z;return y|0}if((d[o>>0]|0|0)==1){c[h>>2]=Lj(59063)|0;y=c[h>>2]|0;i=z;return y|0}if((d[o>>0]|0|0)==2){if(c[m>>2]|0)break;c[x>>2]=tJ(c[j>>2]|0,u,p,c[l>>2]|0,1)|0;if(!(c[x>>2]|0)){qB(c[u>>2]|0);break}c[h>>2]=c[x>>2];y=c[h>>2]|0;i=z;return y|0}a[n>>0]=0;c[r>>2]=0;c[x>>2]=nF(c[j>>2]|0,c[l>>2]|0,w,0)|0;if(c[x>>2]|0){c[h>>2]=c[x>>2];y=c[h>>2]|0;i=z;return y|0}if(!(c[m>>2]|0)){a[n>>0]=2;c[r>>2]=c[k>>2]}do{c[x>>2]=tJ(c[j>>2]|0,v,q,c[r>>2]|0,a[n>>0]|0)|0;if(c[x>>2]|0){y=19;break}qB(c[v>>2]|0);if(!(c[m>>2]|0))break}while((c[q>>2]|0)>>>0>(c[k>>2]|0)>>>0);if((y|0)==19){qB(c[w>>2]|0);c[h>>2]=c[x>>2];y=c[h>>2]|0;i=z;return y|0}c[x>>2]=uJ(c[j>>2]|0,c[w>>2]|0,a[o>>0]|0,c[s>>2]|0,c[q>>2]|0,c[m>>2]|0)|0;qB(c[w>>2]|0);if(c[x>>2]|0){c[h>>2]=c[x>>2];y=c[h>>2]|0;i=z;return y|0}}while(0);if(!(c[m>>2]|0)){while(1){c[l>>2]=(c[l>>2]|0)+-1;if((c[l>>2]|0)==((((c[381]|0)>>>0)/((c[(c[j>>2]|0)+32>>2]|0)>>>0)|0)+1|0))continue;y=lF(c[j>>2]|0,c[l>>2]|0)|0;if((y|0)!=(c[l>>2]|0))break}a[(c[j>>2]|0)+19>>0]=1;c[(c[j>>2]|0)+44>>2]=c[l>>2]}c[h>>2]=0;y=c[h>>2]|0;i=z;return y|0}function tJ(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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,J=0,K=0,L=0;L=i;i=i+112|0;H=L+96|0;m=L+92|0;n=L+88|0;o=L+84|0;p=L+80|0;q=L+102|0;F=L+76|0;K=L+72|0;B=L+68|0;z=L+64|0;J=L+60|0;I=L+56|0;A=L+52|0;y=L+48|0;G=L+101|0;C=L+44|0;k=L+100|0;E=L+40|0;w=L+36|0;s=L+32|0;x=L+28|0;r=L+24|0;v=L+20|0;u=L+16|0;t=L+12|0;D=L+8|0;j=L+4|0;l=L;c[m>>2]=b;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;a[q>>0]=h;c[J>>2]=0;c[I>>2]=0;c[F>>2]=c[(c[m>>2]|0)+12>>2];c[A>>2]=$E(c[m>>2]|0)|0;c[B>>2]=$q((c[(c[F>>2]|0)+56>>2]|0)+36|0)|0;if((c[B>>2]|0)>>>0>=(c[A>>2]|0)>>>0){c[H>>2]=Lj(61115)|0;K=c[H>>2]|0;i=L;return K|0}a:do if((c[B>>2]|0)>>>0>0){a[G>>0]=0;c[C>>2]=0;do if((d[q>>0]|0)==1){if((c[p>>2]|0)>>>0<=(c[A>>2]|0)>>>0){c[K>>2]=mF(c[m>>2]|0,c[p>>2]|0,k,0)|0;if(c[K>>2]|0){c[H>>2]=c[K>>2];K=c[H>>2]|0;i=L;return K|0}else{if((d[k>>0]|0)!=2)break;a[G>>0]=1;break}}}else if((d[q>>0]|0)==2)a[G>>0]=1;while(0);c[K>>2]=Dg(c[(c[F>>2]|0)+72>>2]|0)|0;if(c[K>>2]|0){c[H>>2]=c[K>>2];K=c[H>>2]|0;i=L;return K|0}Xs((c[(c[F>>2]|0)+56>>2]|0)+36|0,(c[B>>2]|0)-1|0);b:while(1){c[I>>2]=c[J>>2];if(c[I>>2]|0)c[y>>2]=$q(c[(c[I>>2]|0)+56>>2]|0)|0;else c[y>>2]=$q((c[(c[F>>2]|0)+56>>2]|0)+32|0)|0;if((c[y>>2]|0)>>>0<=(c[A>>2]|0)>>>0?(e=c[C>>2]|0,c[C>>2]=e+1,e>>>0<=(c[B>>2]|0)>>>0):0)c[K>>2]=BJ(c[m>>2]|0,c[y>>2]|0,J,0)|0;else c[K>>2]=Lj(61171)|0;if(c[K>>2]|0){j=23;break}c[z>>2]=$q((c[(c[J>>2]|0)+56>>2]|0)+4|0)|0;c:do if((c[z>>2]|0)!=0|(a[G>>0]|0)!=0){if((c[z>>2]|0)>>>0>((((c[(c[m>>2]|0)+36>>2]|0)>>>0)/4|0)-2|0)>>>0){j=28;break b}do if(d[G>>0]|0){if((c[p>>2]|0)!=(c[y>>2]|0)){if((c[y>>2]|0)>>>0>=(c[p>>2]|0)>>>0)break;if((d[q>>0]|0)!=2)break}c[c[o>>2]>>2]=c[y>>2];c[c[n>>2]>>2]=c[J>>2];a[G>>0]=0;c[K>>2]=Dg(c[(c[J>>2]|0)+72>>2]|0)|0;if(c[K>>2]|0)break a;do if(!(c[z>>2]|0)){if(!(c[I>>2]|0)){e=(c[(c[F>>2]|0)+56>>2]|0)+32|0;f=c[(c[J>>2]|0)+56>>2]|0;a[e>>0]=a[f>>0]|0;a[e+1>>0]=a[f+1>>0]|0;a[e+2>>0]=a[f+2>>0]|0;a[e+3>>0]=a[f+3>>0]|0;break}c[K>>2]=Dg(c[(c[I>>2]|0)+72>>2]|0)|0;if(c[K>>2]|0)break a;e=c[(c[I>>2]|0)+56>>2]|0;f=c[(c[J>>2]|0)+56>>2]|0;a[e>>0]=a[f>>0]|0;a[e+1>>0]=a[f+1>>0]|0;a[e+2>>0]=a[f+2>>0]|0;a[e+3>>0]=a[f+3>>0]|0}else{c[w>>2]=$q((c[(c[J>>2]|0)+56>>2]|0)+8|0)|0;if((c[w>>2]|0)>>>0>(c[A>>2]|0)>>>0){j=40;break b}c[K>>2]=BJ(c[m>>2]|0,c[w>>2]|0,E,0)|0;if(c[K>>2]|0)break a;c[K>>2]=Dg(c[(c[E>>2]|0)+72>>2]|0)|0;h=c[E>>2]|0;if(c[K>>2]|0){j=43;break b}e=c[h+56>>2]|0;f=c[(c[J>>2]|0)+56>>2]|0;a[e>>0]=a[f>>0]|0;a[e+1>>0]=a[f+1>>0]|0;a[e+2>>0]=a[f+2>>0]|0;a[e+3>>0]=a[f+3>>0]|0;Xs((c[(c[E>>2]|0)+56>>2]|0)+4|0,(c[z>>2]|0)-1|0);iR((c[(c[E>>2]|0)+56>>2]|0)+8|0,(c[(c[J>>2]|0)+56>>2]|0)+12|0,(c[z>>2]|0)-1<<2|0)|0;qB(c[E>>2]|0);if(!(c[I>>2]|0)){Xs((c[(c[F>>2]|0)+56>>2]|0)+32|0,c[w>>2]|0);break}c[K>>2]=Dg(c[(c[I>>2]|0)+72>>2]|0)|0;if(c[K>>2]|0)break a;Xs(c[(c[I>>2]|0)+56>>2]|0,c[w>>2]|0)}while(0);c[J>>2]=0;break c}while(0);if((c[z>>2]|0)>>>0>0){c[r>>2]=c[(c[J>>2]|0)+56>>2];e=(c[p>>2]|0)>>>0>0;c[s>>2]=0;d:do if(e)if((d[q>>0]|0)==2){c[v>>2]=0;while(1){if((c[v>>2]|0)>>>0>=(c[z>>2]|0)>>>0)break d;c[x>>2]=$q((c[r>>2]|0)+(8+(c[v>>2]<<2))|0)|0;j=c[v>>2]|0;if((c[x>>2]|0)>>>0<=(c[p>>2]|0)>>>0)break;c[v>>2]=j+1}c[s>>2]=j;break}else{e=$q((c[r>>2]|0)+8|0)|0;c[u>>2]=yj(e-(c[p>>2]|0)|0)|0;c[v>>2]=1;while(1){if((c[v>>2]|0)>>>0>=(c[z>>2]|0)>>>0)break d;e=$q((c[r>>2]|0)+(8+(c[v>>2]<<2))|0)|0;c[t>>2]=yj(e-(c[p>>2]|0)|0)|0;if((c[t>>2]|0)<(c[u>>2]|0)){c[s>>2]=c[v>>2];c[u>>2]=c[t>>2]}c[v>>2]=(c[v>>2]|0)+1}}while(0);c[x>>2]=$q((c[r>>2]|0)+(8+(c[s>>2]<<2))|0)|0;if((c[x>>2]|0)>>>0>(c[A>>2]|0)>>>0){j=63;break b}if((a[G>>0]|0)!=0?(c[x>>2]|0)!=(c[p>>2]|0):0){if((c[x>>2]|0)>>>0>=(c[p>>2]|0)>>>0)break;if((d[q>>0]|0)!=2)break}c[c[o>>2]>>2]=c[x>>2];c[K>>2]=Dg(c[(c[J>>2]|0)+72>>2]|0)|0;if(c[K>>2]|0)break a;if((c[s>>2]|0)>>>0<((c[z>>2]|0)-1|0)>>>0){e=(c[r>>2]|0)+(8+(c[s>>2]<<2))|0;f=(c[r>>2]|0)+(4+(c[z>>2]<<2))|0;a[e>>0]=a[f>>0]|0;a[e+1>>0]=a[f+1>>0]|0;a[e+2>>0]=a[f+2>>0]|0;a[e+3>>0]=a[f+3>>0]|0}Xs((c[r>>2]|0)+4|0,(c[z>>2]|0)-1|0);e=(CJ(c[m>>2]|0,c[c[o>>2]>>2]|0)|0)!=0^1;c[D>>2]=e?1:0;c[K>>2]=BJ(c[m>>2]|0,c[c[o>>2]>>2]|0,c[n>>2]|0,c[D>>2]|0)|0;do if(!(c[K>>2]|0)){c[K>>2]=Dg(c[(c[c[n>>2]>>2]|0)+72>>2]|0)|0;if(!(c[K>>2]|0))break;qB(c[c[n>>2]>>2]|0);c[c[n>>2]>>2]=0}while(0);a[G>>0]=0}}else{c[K>>2]=Dg(c[(c[J>>2]|0)+72>>2]|0)|0;if(c[K>>2]|0)break a;c[c[o>>2]>>2]=c[y>>2];e=(c[(c[F>>2]|0)+56>>2]|0)+32|0;f=c[(c[J>>2]|0)+56>>2]|0;a[e>>0]=a[f>>0]|0;a[e+1>>0]=a[f+1>>0]|0;a[e+2>>0]=a[f+2>>0]|0;a[e+3>>0]=a[f+3>>0]|0;c[c[n>>2]>>2]=c[J>>2];c[J>>2]=0}while(0);qB(c[I>>2]|0);c[I>>2]=0;if(!(a[G>>0]|0))break a}if((j|0)==23){c[J>>2]=0;break}else if((j|0)==28){c[K>>2]=Lj(61200)|0;break}else if((j|0)==40){c[K>>2]=Lj(61234)|0;break}else if((j|0)==43){qB(h);break}else if((j|0)==63){c[K>>2]=Lj(61299)|0;break}}else{c[j>>2]=0==(d[(c[m>>2]|0)+19>>0]|0)?1:0;c[K>>2]=Dg(c[(c[(c[m>>2]|0)+12>>2]|0)+72>>2]|0)|0;if(c[K>>2]|0){c[H>>2]=c[K>>2];K=c[H>>2]|0;i=L;return K|0}G=(c[m>>2]|0)+44|0;c[G>>2]=(c[G>>2]|0)+1;if((c[(c[m>>2]|0)+44>>2]|0)==((((c[381]|0)>>>0)/((c[(c[m>>2]|0)+32>>2]|0)>>>0)|0)+1|0)){G=(c[m>>2]|0)+44|0;c[G>>2]=(c[G>>2]|0)+1}do if((d[(c[m>>2]|0)+17>>0]|0)!=0?(G=lF(c[m>>2]|0,c[(c[m>>2]|0)+44>>2]|0)|0,(G|0)==(c[(c[m>>2]|0)+44>>2]|0)):0){c[l>>2]=0;c[K>>2]=BJ(c[m>>2]|0,c[(c[m>>2]|0)+44>>2]|0,l,c[j>>2]|0)|0;if(!(c[K>>2]|0)){c[K>>2]=Dg(c[(c[l>>2]|0)+72>>2]|0)|0;qB(c[l>>2]|0)}if(c[K>>2]|0){c[H>>2]=c[K>>2];K=c[H>>2]|0;i=L;return K|0}else{G=(c[m>>2]|0)+44|0;c[G>>2]=(c[G>>2]|0)+1;if((c[(c[m>>2]|0)+44>>2]|0)!=((((c[381]|0)>>>0)/((c[(c[m>>2]|0)+32>>2]|0)>>>0)|0)+1|0))break;G=(c[m>>2]|0)+44|0;c[G>>2]=(c[G>>2]|0)+1;break}}while(0);Xs((c[(c[(c[m>>2]|0)+12>>2]|0)+56>>2]|0)+28|0,c[(c[m>>2]|0)+44>>2]|0);c[c[o>>2]>>2]=c[(c[m>>2]|0)+44>>2];c[K>>2]=BJ(c[m>>2]|0,c[c[o>>2]>>2]|0,c[n>>2]|0,c[j>>2]|0)|0;if(c[K>>2]|0){c[H>>2]=c[K>>2];K=c[H>>2]|0;i=L;return K|0}else{c[K>>2]=Dg(c[(c[c[n>>2]>>2]|0)+72>>2]|0)|0;if(!(c[K>>2]|0))break;qB(c[c[n>>2]>>2]|0);c[c[n>>2]>>2]=0;break}}while(0);qB(c[J>>2]|0);qB(c[I>>2]|0);c[H>>2]=c[K>>2];K=c[H>>2]|0;i=L;return K|0}function uJ(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;v=i;i=i+48|0;n=v+40|0;o=v+36|0;k=v+32|0;p=v+44|0;q=v+28|0;r=v+24|0;w=v+20|0;t=v+16|0;s=v+12|0;x=v+8|0;u=v+4|0;l=v;c[o>>2]=b;c[k>>2]=e;a[p>>0]=f;c[q>>2]=g;c[r>>2]=h;c[w>>2]=j;c[s>>2]=c[(c[k>>2]|0)+84>>2];c[x>>2]=c[c[o>>2]>>2];c[u>>2]=vJ(c[x>>2]|0,c[(c[k>>2]|0)+72>>2]|0,c[r>>2]|0,c[w>>2]|0)|0;if(c[u>>2]|0){c[n>>2]=c[u>>2];x=c[n>>2]|0;i=v;return x|0}c[(c[k>>2]|0)+84>>2]=c[r>>2];if((d[p>>0]|0|0)!=5?(d[p>>0]|0|0)!=1:0){c[l>>2]=$q(c[(c[k>>2]|0)+56>>2]|0)|0;if((c[l>>2]|0)!=0?(xJ(c[o>>2]|0,c[l>>2]|0,4,c[r>>2]|0,u),(c[u>>2]|0)!=0):0){c[n>>2]=c[u>>2];x=c[n>>2]|0;i=v;return x|0}}else m=5;if((m|0)==5?(c[u>>2]=wJ(c[k>>2]|0)|0,(c[u>>2]|0)!=0):0){c[n>>2]=c[u>>2];x=c[n>>2]|0;i=v;return x|0}do if((d[p>>0]|0|0)!=1){c[u>>2]=nF(c[o>>2]|0,c[q>>2]|0,t,0)|0;if(c[u>>2]|0){c[n>>2]=c[u>>2];x=c[n>>2]|0;i=v;return x|0}c[u>>2]=Dg(c[(c[t>>2]|0)+72>>2]|0)|0;k=c[t>>2]|0;if(c[u>>2]|0){qB(k);c[n>>2]=c[u>>2];x=c[n>>2]|0;i=v;return x|0}else{c[u>>2]=yJ(k,c[s>>2]|0,c[r>>2]|0,a[p>>0]|0)|0;qB(c[t>>2]|0);if(c[u>>2]|0)break;xJ(c[o>>2]|0,c[r>>2]|0,a[p>>0]|0,c[q>>2]|0,u);break}}while(0);c[n>>2]=c[u>>2];x=c[n>>2]|0;i=v;return x|0}function vJ(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;k=t+36|0;l=t+32|0;m=t+28|0;n=t+24|0;j=t+20|0;r=t+16|0;o=t+12|0;s=t+8|0;p=t+4|0;q=t;c[l>>2]=d;c[m>>2]=f;c[n>>2]=g;c[j>>2]=h;c[o>>2]=0;if((a[(c[l>>2]|0)+16>>0]|0)!=0?(c[s>>2]=Dg(c[m>>2]|0)|0,(c[s>>2]|0)!=0):0){c[k>>2]=c[s>>2];s=c[k>>2]|0;i=t;return s|0}if((e[(c[m>>2]|0)+24>>1]&2|0)!=0?(g=lt(c[m>>2]|0)|0,c[s>>2]=g,0!=(g|0)):0){c[k>>2]=c[s>>2];s=c[k>>2]|0;i=t;return s|0}if(!((c[j>>2]|0)!=0?1:(e[(c[m>>2]|0)+24>>1]&8|0)==0))c[o>>2]=c[(c[m>>2]|0)+20>>2];g=(c[m>>2]|0)+24|0;b[g>>1]=e[g>>1]&-9;c[r>>2]=Zr(c[l>>2]|0,c[n>>2]|0)|0;do if(c[r>>2]|0){j=(c[m>>2]|0)+24|0;b[j>>1]=e[j>>1]|e[(c[r>>2]|0)+24>>1]&8;j=c[r>>2]|0;if(a[(c[l>>2]|0)+16>>0]|0){AJ(j,(c[(c[l>>2]|0)+28>>2]|0)+1|0);break}else{ws(j);break}}while(0);c[p>>2]=c[(c[m>>2]|0)+20>>2];AJ(c[m>>2]|0,c[n>>2]|0);$r(c[m>>2]|0);if(a[(c[l>>2]|0)+16>>0]|0){AJ(c[r>>2]|0,c[p>>2]|0);zs(c[r>>2]|0)}do if(c[o>>2]|0){c[s>>2]=sg(c[l>>2]|0,c[o>>2]|0,q,0)|0;if(!(c[s>>2]|0)){s=(c[q>>2]|0)+24|0;b[s>>1]=e[s>>1]|8;$r(c[q>>2]|0);zs(c[q>>2]|0);break}if((c[o>>2]|0)>>>0<=(c[(c[l>>2]|0)+32>>2]|0)>>>0)hj(c[(c[l>>2]|0)+60>>2]|0,c[o>>2]|0,c[(c[l>>2]|0)+208>>2]|0);c[k>>2]=c[s>>2];s=c[k>>2]|0;i=t;return s|0}while(0);c[k>>2]=0;s=c[k>>2]|0;i=t;return s|0}function wJ(b){b=b|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;f=q+32|0;j=q+28|0;l=q+24|0;p=q+20|0;m=q+16|0;k=q+36|0;o=q+12|0;n=q+8|0;g=q+4|0;h=q;c[f>>2]=b;c[m>>2]=c[(c[f>>2]|0)+52>>2];a[k>>0]=a[c[f>>2]>>0]|0;c[o>>2]=c[(c[f>>2]|0)+84>>2];c[p>>2]=Kt(c[f>>2]|0)|0;if(c[p>>2]|0){n=a[k>>0]|0;o=c[f>>2]|0;a[o>>0]=n;p=c[p>>2]|0;i=q;return p|0}c[l>>2]=e[(c[f>>2]|0)+18>>1];c[j>>2]=0;while(1){b=c[f>>2]|0;if((c[j>>2]|0)>=(c[l>>2]|0))break;c[n>>2]=(c[b+56>>2]|0)+(e[(c[f>>2]|0)+20>>1]&(d[(c[(c[f>>2]|0)+64>>2]|0)+(c[j>>2]<<1)>>0]<<8|d[(c[(c[f>>2]|0)+64>>2]|0)+(c[j>>2]<<1)+1>>0]));zJ(c[f>>2]|0,c[n>>2]|0,p);if(!(a[(c[f>>2]|0)+4>>0]|0)){c[g>>2]=$q(c[n>>2]|0)|0;xJ(c[m>>2]|0,c[g>>2]|0,5,c[o>>2]|0,p)}c[j>>2]=(c[j>>2]|0)+1}if(a[b+4>>0]|0){n=a[k>>0]|0;o=c[f>>2]|0;a[o>>0]=n;p=c[p>>2]|0;i=q;return p|0}c[h>>2]=$q((c[(c[f>>2]|0)+56>>2]|0)+((d[(c[f>>2]|0)+5>>0]|0)+8)|0)|0;xJ(c[m>>2]|0,c[h>>2]|0,5,c[o>>2]|0,p);n=a[k>>0]|0;o=c[f>>2]|0;a[o>>0]=n;p=c[p>>2]|0;i=q;return p|0}function xJ(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;j=t+32|0;k=t+28|0;l=t+36|0;m=t+24|0;n=t+20|0;q=t+16|0;r=t+12|0;o=t+8|0;p=t+4|0;s=t;c[j>>2]=b;c[k>>2]=e;a[l>>0]=f;c[m>>2]=g;c[n>>2]=h;if(c[c[n>>2]>>2]|0){i=t;return}if(!(c[k>>2]|0)){s=Lj(56501)|0;c[c[n>>2]>>2]=s;i=t;return}c[o>>2]=lF(c[j>>2]|0,c[k>>2]|0)|0;c[s>>2]=sg(c[c[j>>2]>>2]|0,c[o>>2]|0,q,0)|0;if(c[s>>2]|0){c[c[n>>2]>>2]=c[s>>2];i=t;return}c[p>>2]=((c[k>>2]|0)-(c[o>>2]|0)-1|0)*5;do if((c[p>>2]|0)>=0){c[r>>2]=tg(c[q>>2]|0)|0;if((d[l>>0]|0|0)==(d[(c[r>>2]|0)+(c[p>>2]|0)>>0]|0|0)?(g=$q((c[r>>2]|0)+((c[p>>2]|0)+1)|0)|0,(g|0)==(c[m>>2]|0)):0)break;g=Dg(c[q>>2]|0)|0;c[s>>2]=g;c[c[n>>2]>>2]=g;if(!(c[s>>2]|0)){a[(c[r>>2]|0)+(c[p>>2]|0)>>0]=a[l>>0]|0;Xs((c[r>>2]|0)+((c[p>>2]|0)+1)|0,c[m>>2]|0)}}else{s=Lj(56512)|0;c[c[n>>2]>>2]=s}while(0);vg(c[q>>2]|0);i=t;return}function yJ(b,f,g,h){b=b|0;f=f|0;g=g|0;h=h|0;var 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;v=i;i=i+64|0;j=v+52|0;k=v+48|0;l=v+44|0;m=v+40|0;n=v+57|0;q=v+56|0;o=v+36|0;r=v+32|0;t=v+28|0;s=v+24|0;p=v;c[k>>2]=b;c[l>>2]=f;c[m>>2]=g;a[n>>0]=h;h=c[k>>2]|0;do if((d[n>>0]|0|0)==4){u=$q(c[h+56>>2]|0)|0;if((u|0)==(c[l>>2]|0)){Xs(c[(c[k>>2]|0)+56>>2]|0,c[m>>2]|0);break}c[j>>2]=Lj(58893)|0;u=c[j>>2]|0;i=v;return u|0}else{a[q>>0]=a[h>>0]|0;c[t>>2]=Kt(c[k>>2]|0)|0;if(c[t>>2]|0){c[j>>2]=c[t>>2];u=c[j>>2]|0;i=v;return u|0}c[r>>2]=e[(c[k>>2]|0)+18>>1];c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[r>>2]|0))break;c[s>>2]=(c[(c[k>>2]|0)+56>>2]|0)+((e[(c[k>>2]|0)+20>>1]|0)&((d[(c[(c[k>>2]|0)+64>>2]|0)+(c[o>>2]<<1)>>0]|0)<<8|(d[(c[(c[k>>2]|0)+64>>2]|0)+(c[o>>2]<<1)+1>>0]|0)));if((d[n>>0]|0|0)==3){Ub[c[(c[k>>2]|0)+80>>2]&255](c[k>>2]|0,c[s>>2]|0,p);if(((e[p+16>>1]|0)>>>0<(c[p+12>>2]|0)>>>0?((c[s>>2]|0)+(e[p+18>>1]|0)+-1|0)>>>0<=((c[(c[k>>2]|0)+56>>2]|0)+(e[(c[k>>2]|0)+20>>1]|0)|0)>>>0:0)?(t=c[l>>2]|0,(t|0)==($q((c[s>>2]|0)+(e[p+18>>1]|0)+-4|0)|0)):0){u=13;break}}else{t=$q(c[s>>2]|0)|0;if((t|0)==(c[l>>2]|0)){u=15;break}}c[o>>2]=(c[o>>2]|0)+1}if((u|0)==13)Xs((c[s>>2]|0)+(e[p+18>>1]|0)+-4|0,c[m>>2]|0);else if((u|0)==15)Xs(c[s>>2]|0,c[m>>2]|0);do if((c[o>>2]|0)==(c[r>>2]|0)){if((d[n>>0]|0|0)==5?(u=$q((c[(c[k>>2]|0)+56>>2]|0)+((d[(c[k>>2]|0)+5>>0]|0)+8)|0)|0,(u|0)==(c[l>>2]|0)):0){Xs((c[(c[k>>2]|0)+56>>2]|0)+((d[(c[k>>2]|0)+5>>0]|0)+8)|0,c[m>>2]|0);break}c[j>>2]=Lj(58929)|0;u=c[j>>2]|0;i=v;return u|0}while(0);a[c[k>>2]>>0]=a[q>>0]|0}while(0);c[j>>2]=0;u=c[j>>2]|0;i=v;return u|0}function zJ(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+48|0;f=l+36|0;g=l+32|0;h=l+28|0;j=l;k=l+24|0;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;if(c[c[h>>2]>>2]|0){i=l;return}Ub[c[(c[f>>2]|0)+80>>2]&255](c[f>>2]|0,c[g>>2]|0,j);if((e[j+16>>1]|0)>>>0>=(c[j+12>>2]|0)>>>0){i=l;return}c[k>>2]=$q((c[g>>2]|0)+((e[j+18>>1]|0)-4)|0)|0;xJ(c[(c[f>>2]|0)+52>>2]|0,c[k>>2]|0,3,c[(c[f>>2]|0)+84>>2]|0,c[h>>2]|0);i=l;return}function AJ(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0;f=i;i=i+16|0;d=f+8|0;g=f+4|0;h=f;c[d>>2]=a;c[g>>2]=b;c[h>>2]=c[(c[d>>2]|0)+28>>2];_b[c[148>>2]&255](c[(c[h>>2]|0)+44>>2]|0,c[c[d>>2]>>2]|0,c[(c[d>>2]|0)+20>>2]|0,c[g>>2]|0);c[(c[d>>2]|0)+20>>2]=c[g>>2];if(!((e[(c[d>>2]|0)+24>>1]|0)&2)){i=f;return}if(!((e[(c[d>>2]|0)+24>>1]|0)&8)){i=f;return}cj(c[d>>2]|0,3);i=f;return}function BJ(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;k=i;i=i+32|0;g=k+20|0;n=k+16|0;m=k+12|0;h=k+8|0;l=k+4|0;j=k;c[n>>2]=b;c[m>>2]=d;c[h>>2]=e;c[l>>2]=f;c[j>>2]=nF(c[n>>2]|0,c[m>>2]|0,c[h>>2]|0,c[l>>2]|0)|0;f=c[h>>2]|0;do if(!(c[j>>2]|0)){n=(Jt(c[(c[f>>2]|0)+72>>2]|0)|0)>1;f=c[c[h>>2]>>2]|0;if(!n){a[f>>0]=0;break}qB(f);c[c[h>>2]>>2]=0;c[g>>2]=Lj(57630)|0;n=c[g>>2]|0;i=k;return n|0}else c[f>>2]=0;while(0);c[g>>2]=c[j>>2];n=c[g>>2]|0;i=k;return n|0}function CJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;g=f+8|0;d=f+4|0;e=f;c[g>>2]=a;c[d>>2]=b;c[e>>2]=c[(c[g>>2]|0)+60>>2];if(!(c[e>>2]|0)){g=0;g=g&1;i=f;return g|0}g=c[d>>2]|0;if(g>>>0>(jj(c[e>>2]|0)|0)>>>0){g=1;g=g&1;i=f;return g|0}g=(ij(c[e>>2]|0,c[d>>2]|0)|0)!=0;g=g&1;i=f;return g|0}function DJ(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return d[(c[b>>2]|0)+16>>0]|0|0}function EJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;if(!(c[h>>2]|0)){c[e>>2]=7;d=c[e>>2]|0;i=k;return d|0}if(cf(c[f>>2]|0,c[h>>2]|0,-1,j,0)|0){b=c[g>>2]|0;d=c[f>>2]|0;xj(b,d,bf(c[f>>2]|0)|0);c[e>>2]=Cf(c[f>>2]|0)|0;d=c[e>>2]|0;i=k;return d|0}else{ue(c[j>>2]|0)|0;c[e>>2]=JJ(c[f>>2]|0,c[j>>2]|0,c[g>>2]|0)|0;d=c[e>>2]|0;i=k;return d|0}return 0}function FJ(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;kg(c[e>>2]|0);c[b>>2]=KJ(c[e>>2]|0)|0;i=d;return c[b>>2]|0}function GJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+20|0;f=k+16|0;g=k+12|0;l=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=b;c[l>>2]=d;c[j>>2]=cf(c[f>>2]|0,c[l>>2]|0,-1,h,0)|0;if(c[j>>2]|0){c[e>>2]=c[j>>2];l=c[e>>2]|0;i=k;return l|0}while(1){l=100==(ue(c[h>>2]|0)|0);a=c[f>>2]|0;if(!l){b=6;break}l=c[g>>2]|0;c[j>>2]=EJ(a,l,Fe(c[h>>2]|0,0)|0)|0;if(c[j>>2]|0){b=5;break}}if((b|0)==5){JJ(c[f>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;c[e>>2]=c[j>>2];l=c[e>>2]|0;i=k;return l|0}else if((b|0)==6){c[e>>2]=JJ(a,c[h>>2]|0,c[g>>2]|0)|0;l=c[e>>2]|0;i=k;return l|0}return 0}function HJ(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+80|0;h=m+68|0;j=m+64|0;l=m+60|0;g=m+56|0;k=m+8|0;f=m;c[h>>2]=a;c[j>>2]=d;kg(c[h>>2]|0);kg(c[j>>2]|0);c[g>>2]=Bg(Of(c[h>>2]|0)|0)|0;if((c[c[g>>2]>>2]|0)!=0?(d=pg(c[j>>2]|0)|0,d=rR(d|0,((d|0)<0)<<31>>31|0,rg(c[j>>2]|0)|0,0)|0,a=f,c[a>>2]=d,c[a+4>>2]=C,a=vi(c[g>>2]|0,11,f)|0,c[l>>2]=a,c[l>>2]=(c[l>>2]|0)==12?0:a,(c[l>>2]|0)!=0):0){l=c[l>>2]|0;i=m;return l|0}f=k;g=f+48|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[k+20>>2]=c[c[j>>2]>>2];c[k+24>>2]=c[j>>2];c[k+4>>2]=c[h>>2];c[k+16>>2]=1;Vd(k,2147483647)|0;c[l>>2]=Wd(k)|0;if(!(c[l>>2]|0)){k=(c[(c[h>>2]|0)+4>>2]|0)+22|0;b[k>>1]=(e[k>>1]|0)&-3;l=c[l>>2]|0;i=m;return l|0}else{IJ(Of(c[k+4>>2]|0)|0);l=c[l>>2]|0;i=m;return l|0}return 0}function IJ(b){b=b|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=b;if(a[(c[e>>2]|0)+16>>0]|0){i=f;return}if(d[(c[e>>2]|0)+13>>0]|0){i=f;return}Ui(c[e>>2]|0);i=f;return}function JJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;e=h+12|0;j=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[j>>2]=b;c[f>>2]=d;c[g>>2]=Qg(c[j>>2]|0)|0;if(!(c[g>>2]|0)){j=c[g>>2]|0;i=h;return j|0}d=c[f>>2]|0;j=c[e>>2]|0;xj(d,j,bf(c[e>>2]|0)|0);j=c[g>>2]|0;i=h;return j|0}function KJ(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=(c[(c[(c[e>>2]|0)+4>>2]|0)+32>>2]|0)-(c[(c[(c[e>>2]|0)+4>>2]|0)+36>>2]|0);i=d;return c[b>>2]|0}function LJ(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+64|0;n=q+32|0;o=q+28|0;p=q+24|0;f=q+20|0;j=q+16|0;e=q+12|0;h=q+8|0;g=q+4|0;k=q;m=q+40|0;c[o>>2]=b;c[p>>2]=0;if((d[(c[o>>2]|0)+16>>0]|0)!=0?(c[(c[o>>2]|0)+44>>2]|0)!=0:0){c[n>>2]=c[(c[o>>2]|0)+44>>2];p=c[n>>2]|0;i=q;return p|0}do if((sr(c[o>>2]|0)|0)==0?(d[(c[o>>2]|0)+17>>0]|0)==0:0){c[f>>2]=1;c[p>>2]=ut(c[o>>2]|0,1)|0;if(!(c[p>>2]|0)){if((d[(c[o>>2]|0)+18>>0]|0)<=1)c[p>>2]=MJ(c[o>>2]|0,f)|0;if(!(c[p>>2]|0)){if(c[f>>2]|0){if(a[(c[o>>2]|0)+15>>0]|0){c[p>>2]=776;break}c[p>>2]=vt(c[o>>2]|0,4)|0;if(c[p>>2]|0)break;if((((c[c[(c[o>>2]|0)+68>>2]>>2]|0)==0?(c[j>>2]=c[c[o>>2]>>2],c[p>>2]=Nr(c[j>>2]|0,c[(c[o>>2]|0)+180>>2]|0,0,e)|0,(c[p>>2]|0)==0&(c[e>>2]|0)!=0):0)?(c[h>>2]=0,c[g>>2]=2050,c[p>>2]=Vr(c[j>>2]|0,c[(c[o>>2]|0)+180>>2]|0,c[(c[o>>2]|0)+68>>2]|0,c[g>>2]|0,h)|0,(c[p>>2]|0)==0):0)?(c[h>>2]&1|0)!=0:0){c[p>>2]=et(48855)|0;hr(c[(c[o>>2]|0)+68>>2]|0)|0}e=c[o>>2]|0;if(c[c[(c[o>>2]|0)+68>>2]>>2]|0){c[p>>2]=er(e)|0;if(!(c[p>>2]|0)){c[p>>2]=Lr(c[o>>2]|0,1)|0;a[(c[o>>2]|0)+17>>0]=0}}else if(!(a[e+4>>0]|0))wr(c[o>>2]|0,1)|0;if(c[p>>2]|0){fr(c[o>>2]|0,c[p>>2]|0)|0;break}}if((a[(c[o>>2]|0)+13>>0]|0)==0?(d[(c[o>>2]|0)+24>>0]|0)!=0:0){c[k>>2]=0;c[p>>2]=NJ(c[o>>2]|0,k)|0;if(c[p>>2]|0)break;if((c[k>>2]|0)>>>0>0){c[p>>2]=Wr(c[(c[o>>2]|0)+64>>2]|0,m,16,24,0)|0;if((c[p>>2]|0)!=0&(c[p>>2]|0)!=522)break}else{e=m;f=e+16|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(f|0))}if(vQ((c[o>>2]|0)+112|0,m,16)|0)Ui(c[o>>2]|0)}c[p>>2]=OJ(c[o>>2]|0)|0;l=35}}}else l=35;while(0);if((l|0)==35){if(sr(c[o>>2]|0)|0)c[p>>2]=PJ(c[o>>2]|0)|0;if((c[p>>2]|0)==0?(d[(c[o>>2]|0)+17>>0]|0)==0:0)c[p>>2]=NJ(c[o>>2]|0,(c[o>>2]|0)+28|0)|0}e=c[o>>2]|0;if(c[p>>2]|0)dr(e);else{a[e+17>>0]=1;a[(c[o>>2]|0)+24>>0]=1}c[n>>2]=c[p>>2];p=c[n>>2]|0;i=q;return p|0}function MJ(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;f=q+32|0;g=q+28|0;o=q+24|0;p=q+20|0;h=q+16|0;l=q+12|0;m=q+8|0;n=q+4|0;j=q;k=q+36|0;c[f>>2]=b;c[g>>2]=e;c[o>>2]=c[c[f>>2]>>2];c[p>>2]=0;c[h>>2]=1;c[l>>2]=((c[c[(c[f>>2]|0)+68>>2]>>2]|0)!=0^1^1)&1;c[c[g>>2]>>2]=0;if(!(c[l>>2]|0))c[p>>2]=Nr(c[o>>2]|0,c[(c[f>>2]|0)+180>>2]|0,0,h)|0;if(!((c[p>>2]|0)==0&(c[h>>2]|0)!=0)){p=c[p>>2]|0;i=q;return p|0}c[m>>2]=0;c[p>>2]=WJ(c[(c[f>>2]|0)+64>>2]|0,m)|0;if((c[p>>2]|0)!=0|(c[m>>2]|0)!=0){p=c[p>>2]|0;i=q;return p|0}c[p>>2]=NJ(c[f>>2]|0,n)|0;if(c[p>>2]|0){p=c[p>>2]|0;i=q;return p|0}if(!((c[n>>2]|0)!=0|(c[l>>2]|0)!=0)){Sj();if((vt(c[f>>2]|0,2)|0)==0?(qr(c[o>>2]|0,c[(c[f>>2]|0)+180>>2]|0,0)|0,(a[(c[f>>2]|0)+4>>0]|0)==0):0)wr(c[f>>2]|0,1)|0;Tj();p=c[p>>2]|0;i=q;return p|0}if(!(c[l>>2]|0)){c[j>>2]=2049;c[p>>2]=Vr(c[o>>2]|0,c[(c[f>>2]|0)+180>>2]|0,c[(c[f>>2]|0)+68>>2]|0,c[j>>2]|0,j)|0}if(!(c[p>>2]|0)){a[k>>0]=0;o=Wr(c[(c[f>>2]|0)+68>>2]|0,k,1,0,0)|0;c[p>>2]=o;c[p>>2]=(c[p>>2]|0)==522?0:o;if(!(c[l>>2]|0))hr(c[(c[f>>2]|0)+68>>2]|0)|0;c[c[g>>2]>>2]=(d[k>>0]|0)!=0&1;p=c[p>>2]|0;i=q;return p|0}else{if((c[p>>2]|0)!=14){p=c[p>>2]|0;i=q;return p|0}c[c[g>>2]>>2]=1;c[p>>2]=0;p=c[p>>2]|0;i=q;return p|0}return 0}function NJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;d=k+24|0;e=k+20|0;f=k+16|0;h=k+12|0;g=k;j=k+8|0;c[e>>2]=a;c[f>>2]=b;c[h>>2]=VJ(c[(c[e>>2]|0)+216>>2]|0)|0;if(!(c[h>>2]|0)){b=g;c[b>>2]=0;c[b+4>>2]=0;if((c[c[(c[e>>2]|0)+64>>2]>>2]|0)!=0?(c[j>>2]=Si(c[(c[e>>2]|0)+64>>2]|0,g)|0,(c[j>>2]|0)!=0):0){c[d>>2]=c[j>>2];j=c[d>>2]|0;i=k;return j|0}j=g;b=c[(c[e>>2]|0)+160>>2]|0;b=gR(c[j>>2]|0,c[j+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;b=fR(b|0,C|0,1,0)|0;j=c[(c[e>>2]|0)+160>>2]|0;j=pR(b|0,C|0,j|0,((j|0)<0)<<31>>31|0)|0;c[h>>2]=j}if((c[h>>2]|0)>>>0>(c[(c[e>>2]|0)+164>>2]|0)>>>0)c[(c[e>>2]|0)+164>>2]=c[h>>2];c[c[f>>2]>>2]=c[h>>2];c[d>>2]=0;j=c[d>>2]|0;i=k;return j|0}function OJ(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;h=l+12|0;k=l+8|0;j=l+4|0;f=l;c[h>>2]=b;c[k>>2]=0;do if(!(a[(c[h>>2]|0)+13>>0]|0)){c[k>>2]=NJ(c[h>>2]|0,f)|0;if(c[k>>2]|0){c[g>>2]=c[k>>2];k=c[g>>2]|0;i=l;return k|0}b=c[c[h>>2]>>2]|0;e=c[(c[h>>2]|0)+220>>2]|0;if(!(c[f>>2]|0)){f=qr(b,e,0)|0;c[k>>2]=f;c[k>>2]=(c[k>>2]|0)==5898?0:f;c[j>>2]=0}else c[k>>2]=Nr(b,e,0,j)|0;if(!(c[k>>2]|0)){b=c[h>>2]|0;if(c[j>>2]|0){c[k>>2]=RJ(b,0)|0;break}if((d[b+5>>0]|0)==5)a[(c[h>>2]|0)+5>>0]=0}}while(0);c[g>>2]=c[k>>2];k=c[g>>2]|0;i=l;return k|0}function PJ(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;b=e+8|0;d=e+4|0;f=e;c[b>>2]=a;c[f>>2]=0;Gs(c[(c[b>>2]|0)+216>>2]|0);c[d>>2]=QJ(c[(c[b>>2]|0)+216>>2]|0,f)|0;if(!((c[d>>2]|0)!=0|(c[f>>2]|0)!=0)){ -f=c[d>>2]|0;i=e;return f|0}Ui(c[b>>2]|0);f=c[d>>2]|0;i=e;return f|0}function QJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;g=h+4|0;f=h;c[d>>2]=a;c[e>>2]=b;c[f>>2]=0;do{j=c[d>>2]|0;b=c[e>>2]|0;a=(c[f>>2]|0)+1|0;c[f>>2]=a;c[g>>2]=Ct(j,b,0,a)|0}while((c[g>>2]|0)==-1);i=h;return c[g>>2]|0}function RJ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;e=k+12|0;f=k+8|0;g=k+4|0;h=k;c[f>>2]=b;c[g>>2]=d;c[h>>2]=0;do if((a[(c[f>>2]|0)+13>>0]|0)==0?(c[(c[f>>2]|0)+216>>2]|0)==0:0)if(aJ(c[f>>2]|0)|0){hr(c[(c[f>>2]|0)+68>>2]|0)|0;c[h>>2]=SJ(c[f>>2]|0)|0;if(c[h>>2]|0)break;a[(c[f>>2]|0)+5>>0]=5;a[(c[f>>2]|0)+17>>0]=0;break}else{c[e>>2]=14;j=c[e>>2]|0;i=k;return j|0}else j=7;while(0);if((j|0)==7)c[c[g>>2]>>2]=1;c[e>>2]=c[h>>2];j=c[e>>2]|0;i=k;return j|0}function SJ(b){b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=b;c[f>>2]=0;if(a[(c[e>>2]|0)+4>>0]|0)c[f>>2]=TJ(c[e>>2]|0)|0;if(c[f>>2]|0){b=c[e>>2]|0;Xi(b);f=c[f>>2]|0;i=g;return f|0}b=(c[e>>2]|0)+168|0;c[f>>2]=UJ(c[c[e>>2]>>2]|0,c[(c[e>>2]|0)+64>>2]|0,c[(c[e>>2]|0)+220>>2]|0,d[(c[e>>2]|0)+4>>0]|0,c[b>>2]|0,c[b+4>>2]|0,(c[e>>2]|0)+216|0)|0;b=c[e>>2]|0;Xi(b);f=c[f>>2]|0;i=g;return f|0}function TJ(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=vt(c[b>>2]|0,4)|0;if(!(c[d>>2]|0)){d=c[d>>2]|0;i=e;return d|0}wr(c[b>>2]|0,1)|0;d=c[d>>2]|0;i=e;return d|0}function UJ(d,e,f,g,h,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+48|0;l=w+44|0;m=w+40|0;n=w+36|0;o=w+32|0;p=w+28|0;q=w;r=w+24|0;v=w+20|0;u=w+16|0;s=w+12|0;t=w+8|0;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;f=q;c[f>>2]=h;c[f+4>>2]=j;c[r>>2]=k;c[c[r>>2]>>2]=0;c[u>>2]=ig(120+(c[(c[m>>2]|0)+4>>2]|0)|0,0)|0;if(!(c[u>>2]|0)){c[l>>2]=7;f=c[l>>2]|0;i=w;return f|0}c[c[u>>2]>>2]=c[m>>2];c[(c[u>>2]|0)+8>>2]=(c[u>>2]|0)+120;c[(c[u>>2]|0)+4>>2]=c[n>>2];b[(c[u>>2]|0)+40>>1]=-1;d=q;k=c[d+4>>2]|0;f=(c[u>>2]|0)+16|0;c[f>>2]=c[d>>2];c[f+4>>2]=k;c[(c[u>>2]|0)+108>>2]=c[o>>2];a[(c[u>>2]|0)+48>>0]=1;a[(c[u>>2]|0)+49>>0]=1;a[(c[u>>2]|0)+43>>0]=(c[p>>2]|0)!=0?2:0;c[s>>2]=524294;c[v>>2]=Vr(c[m>>2]|0,c[o>>2]|0,c[(c[u>>2]|0)+8>>2]|0,c[s>>2]|0,s)|0;if((c[v>>2]|0)==0?(c[s>>2]&1|0)!=0:0)a[(c[u>>2]|0)+46>>0]=1;if(c[v>>2]|0){Ls(c[u>>2]|0,0);hr(c[(c[u>>2]|0)+8>>2]|0)|0;Kd(c[u>>2]|0)}else{c[t>>2]=Sr(c[n>>2]|0)|0;if(c[t>>2]&1024)a[(c[u>>2]|0)+48>>0]=0;if(c[t>>2]&4096)a[(c[u>>2]|0)+49>>0]=0;c[c[r>>2]>>2]=c[u>>2]}c[l>>2]=c[v>>2];f=c[l>>2]|0;i=w;return f|0}function VJ(a){a=a|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[e>>2]=a;if((c[e>>2]|0)!=0?(b[(c[e>>2]|0)+40>>1]|0)>=0:0){c[d>>2]=c[(c[e>>2]|0)+52+20>>2];a=c[d>>2]|0;i=f;return a|0}c[d>>2]=0;a=c[d>>2]|0;i=f;return a|0}function WJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;b=Yb[c[(c[c[f>>2]>>2]|0)+36>>2]&255](c[f>>2]|0,c[e>>2]|0)|0;i=d;return b|0}function XJ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+176|0;d=g+168|0;f=g+164|0;b=g+160|0;e=g;c[d>>2]=a;kR(e|0,0,160)|0;while(1){if(!(c[d>>2]|0))break;c[b>>2]=c[(c[d>>2]|0)+8>>2];c[(c[d>>2]|0)+8>>2]=0;c[f>>2]=0;while(1){if(!(c[e+(c[f>>2]<<2)>>2]|0))break;c[d>>2]=_J(c[e+(c[f>>2]<<2)>>2]|0,c[d>>2]|0)|0;c[e+(c[f>>2]<<2)>>2]=0;c[f>>2]=(c[f>>2]|0)+1}c[e+(c[f>>2]<<2)>>2]=c[d>>2];c[d>>2]=c[b>>2]}c[d>>2]=0;c[f>>2]=0;while(1){a=c[d>>2]|0;if((c[f>>2]|0)>>>0>=40)break;c[d>>2]=_J(a,c[e+(c[f>>2]<<2)>>2]|0)|0;c[f>>2]=(c[f>>2]|0)+1}i=g;return a|0}function YJ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;d=g+8|0;e=g+4|0;f=g;c[b>>2]=a;c[e>>2]=c[b>>2];c[b>>2]=c[(c[e>>2]|0)+8>>2];c[(c[e>>2]|0)+8>>2]=0;c[(c[e>>2]|0)+12>>2]=0;c[d>>2]=1;while(1){a=c[e>>2]|0;if(!(c[b>>2]|0))break;c[f>>2]=a;c[e>>2]=c[b>>2];c[b>>2]=c[(c[e>>2]|0)+8>>2];c[(c[e>>2]|0)+12>>2]=c[f>>2];a=aK(b,c[d>>2]|0)|0;c[(c[e>>2]|0)+8>>2]=a;c[d>>2]=(c[d>>2]|0)+1}i=g;return a|0}function ZJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;g=j+12|0;e=j+8|0;h=j+4|0;f=j;c[g>>2]=a;c[e>>2]=b;c[h>>2]=d;a=c[g>>2]|0;if(c[(c[g>>2]|0)+12>>2]|0){ZJ(c[a+12>>2]|0,c[e>>2]|0,f);c[(c[f>>2]|0)+8>>2]=c[g>>2]}else c[c[e>>2]>>2]=a;a=c[g>>2]|0;if(c[(c[g>>2]|0)+8>>2]|0){ZJ(c[a+8>>2]|0,(c[g>>2]|0)+8|0,c[h>>2]|0);i=j;return}else{c[c[h>>2]>>2]=a;i=j;return}}function _J(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;h=i;i=i+32|0;d=h+24|0;e=h+20|0;f=h;g=h+16|0;c[d>>2]=a;c[e>>2]=b;c[g>>2]=f;while(1){a=c[d>>2]|0;if(!((c[d>>2]|0)!=0?(c[e>>2]|0)!=0:0))break;k=c[a+4>>2]|0;b=c[e>>2]|0;j=c[b+4>>2]|0;if((k|0)<(j|0)|((k|0)==(j|0)?(c[a>>2]|0)>>>0<(c[b>>2]|0)>>>0:0)){c[(c[g>>2]|0)+8>>2]=c[d>>2];c[d>>2]=c[(c[d>>2]|0)+8>>2];c[g>>2]=c[(c[g>>2]|0)+8>>2];continue}j=c[e>>2]|0;a=c[j+4>>2]|0;k=c[d>>2]|0;b=c[k+4>>2]|0;if((a|0)<(b|0)|((a|0)==(b|0)?(c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0:0)){c[(c[g>>2]|0)+8>>2]=c[e>>2];c[e>>2]=c[(c[e>>2]|0)+8>>2];c[g>>2]=c[(c[g>>2]|0)+8>>2];continue}else{c[d>>2]=c[(c[d>>2]|0)+8>>2];continue}}if(a){c[(c[g>>2]|0)+8>>2]=c[d>>2];k=f+8|0;k=c[k>>2]|0;i=h;return k|0}else{c[(c[g>>2]|0)+8>>2]=c[e>>2];k=f+8|0;k=c[k>>2]|0;i=h;return k|0}return 0}function $J(a){a=a|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+8|0;f=h+4|0;g=h;c[f>>2]=a;do if(!(e[(c[f>>2]|0)+24>>1]|0)){c[g>>2]=Fw(c[(c[f>>2]|0)+4>>2]|0,1016,0)|0;if(c[g>>2]|0){c[c[g>>2]>>2]=c[c[f>>2]>>2];c[c[f>>2]>>2]=c[g>>2];c[(c[f>>2]|0)+16>>2]=(c[g>>2]|0)+8;b[(c[f>>2]|0)+24>>1]=63;break}c[d>>2]=0;g=c[d>>2]|0;i=h;return g|0}while(0);a=(c[f>>2]|0)+24|0;b[a>>1]=(b[a>>1]|0)+-1<<16>>16;a=(c[f>>2]|0)+16|0;g=c[a>>2]|0;c[a>>2]=g+16;c[d>>2]=g;g=c[d>>2]|0;i=h;return g|0}function aK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;e=j+16|0;f=j+12|0;g=j+8|0;h=j+4|0;d=j;c[f>>2]=a;c[g>>2]=b;if(!(c[c[f>>2]>>2]|0)){c[e>>2]=0;h=c[e>>2]|0;i=j;return h|0}b=c[f>>2]|0;if((c[g>>2]|0)==1){c[h>>2]=c[b>>2];c[c[f>>2]>>2]=c[(c[h>>2]|0)+8>>2];c[(c[h>>2]|0)+8>>2]=0;c[(c[h>>2]|0)+12>>2]=0;c[e>>2]=c[h>>2];h=c[e>>2]|0;i=j;return h|0}c[d>>2]=aK(b,(c[g>>2]|0)-1|0)|0;c[h>>2]=c[c[f>>2]>>2];b=c[d>>2]|0;if(!(c[h>>2]|0)){c[e>>2]=b;h=c[e>>2]|0;i=j;return h|0}else{c[(c[h>>2]|0)+12>>2]=b;c[c[f>>2]>>2]=c[(c[h>>2]|0)+8>>2];g=aK(c[f>>2]|0,(c[g>>2]|0)-1|0)|0;c[(c[h>>2]|0)+8>>2]=g;c[e>>2]=c[h>>2];h=c[e>>2]|0;i=j;return h|0}return 0}function bK(a){a=a|0;var d=0,f=0;f=i;i=i+16|0;d=f;c[d>>2]=a;if(!((e[(c[d>>2]|0)+26>>1]|0)&1)){a=XJ(c[(c[d>>2]|0)+8>>2]|0)|0;c[(c[d>>2]|0)+8>>2]=a}a=(c[d>>2]|0)+26|0;b[a>>1]=e[a>>1]|0|2;i=f;return}function cK(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;g=i;i=i+16|0;j=g+12|0;k=g+8|0;h=g+4|0;f=g;c[j>>2]=a;c[k>>2]=d;c[h>>2]=e;c[f>>2]=c[k>>2];c[c[f>>2]>>2]=0;c[(c[f>>2]|0)+4>>2]=c[j>>2];c[(c[f>>2]|0)+8>>2]=0;c[(c[f>>2]|0)+12>>2]=0;c[(c[f>>2]|0)+20>>2]=0;c[(c[f>>2]|0)+16>>2]=(c[f>>2]|0)+32;b[(c[f>>2]|0)+24>>1]=(((c[h>>2]|0)-32|0)>>>0)/16|0;b[(c[f>>2]|0)+26>>1]=1;c[(c[f>>2]|0)+28>>2]=0;i=g;return c[f>>2]|0}function dK(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+16|0;h=f+4|0;g=f;c[h>>2]=b;c[g>>2]=e;b=(c[(c[h>>2]|0)+8>>2]|0)+(((c[g>>2]|0)>>>0)/8|0)|0;a[b>>0]=d[b>>0]|0|1<<(c[g>>2]&7);i=f;return}function eK(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=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;x=i;i=i+80|0;o=x+32|0;p=x+24|0;w=x+16|0;v=x;q=x+76|0;h=x+72|0;r=x+68|0;s=x+64|0;j=x+60|0;t=x+56|0;u=x+52|0;n=x+48|0;m=x+44|0;l=x+40|0;k=x+36|0;c[q>>2]=b;c[h>>2]=e;c[r>>2]=f;c[s>>2]=g;c[t>>2]=c[s>>2];c[u>>2]=c[r>>2];while(1){b=c[s>>2]|0;c[s>>2]=b+-1;if((b|0)<=0){g=25;break}if(!(c[(c[q>>2]|0)+16>>2]|0)){g=25;break}f=c[q>>2]|0;if((c[r>>2]|0)<1){g=5;break}if(jK(f,c[r>>2]|0)|0){g=25;break}if(sg(c[(c[q>>2]|0)+4>>2]|0,c[r>>2]|0,n,0)|0){g=8;break}c[m>>2]=tg(c[n>>2]|0)|0;do if(!(c[h>>2]|0)){if((c[s>>2]|0)>0?(d[(c[c[q>>2]>>2]|0)+17>>0]|0)!=0:0){c[j>>2]=$q(c[m>>2]|0)|0;fK(c[q>>2]|0,c[j>>2]|0,4,c[r>>2]|0)}}else{c[l>>2]=$q((c[m>>2]|0)+4|0)|0;if(a[(c[c[q>>2]>>2]|0)+17>>0]|0)fK(c[q>>2]|0,c[r>>2]|0,2,0);if((c[l>>2]|0)>(((c[(c[c[q>>2]>>2]|0)+36>>2]|0)/4|0)-2|0)){b=c[q>>2]|0;c[p>>2]=c[r>>2];iK(b,43167,p);c[s>>2]=(c[s>>2]|0)+-1;break}c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[l>>2]|0))break;c[k>>2]=$q((c[m>>2]|0)+(8+(c[j>>2]<<2))|0)|0;if(a[(c[c[q>>2]>>2]|0)+17>>0]|0)fK(c[q>>2]|0,c[k>>2]|0,2,0);jK(c[q>>2]|0,c[k>>2]|0)|0;c[j>>2]=(c[j>>2]|0)+1}c[s>>2]=(c[s>>2]|0)-(c[l>>2]|0)}while(0);c[r>>2]=$q(c[m>>2]|0)|0;vg(c[n>>2]|0);if(!(c[h>>2]|0))continue;if((c[s>>2]|0)>=((c[r>>2]|0)!=0|0))continue;iK(c[q>>2]|0,43206,o)}if((g|0)==5){t=c[t>>2]|0;w=c[u>>2]|0;c[v>>2]=(c[s>>2]|0)+1;c[v+4>>2]=t;c[v+8>>2]=w;iK(f,43088,v);i=x;return}else if((g|0)==8){v=c[q>>2]|0;c[w>>2]=c[r>>2];iK(v,43145,w);i=x;return}else if((g|0)==25){i=x;return}}function fK(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+64|0;q=r+8|0;p=r;h=r+44|0;j=r+40|0;k=r+49|0;l=r+36|0;o=r+32|0;m=r+48|0;n=r+28|0;c[h>>2]=b;c[j>>2]=e;a[k>>0]=f;c[l>>2]=g;c[o>>2]=mF(c[c[h>>2]>>2]|0,c[j>>2]|0,m,n)|0;if(c[o>>2]|0){if((c[o>>2]|0)==7|(c[o>>2]|0)==3082)c[(c[h>>2]|0)+24>>2]=1;q=c[h>>2]|0;c[p>>2]=c[j>>2];iK(q,43005,p);i=r;return}if((d[m>>0]|0|0)==(d[k>>0]|0|0)?(c[n>>2]|0)==(c[l>>2]|0):0){i=r;return}p=c[h>>2]|0;e=d[k>>0]|0;g=c[l>>2]|0;b=d[m>>0]|0;o=c[n>>2]|0;c[q>>2]=c[j>>2];c[q+4>>2]=e;c[q+8>>2]=g;c[q+12>>2]=b;c[q+16>>2]=o;iK(p,43034,q);i=r;return}function gK(b,f,g,h,j){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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,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;ca=i;i=i+256|0;Z=ca+96|0;Y=ca+88|0;X=ca+80|0;W=ca+72|0;$=ca+64|0;_=ca+48|0;m=ca+40|0;l=ca+32|0;n=ca+240|0;o=ca+236|0;p=ca+232|0;q=ca+228|0;r=ca+24|0;K=ca+224|0;A=ca+220|0;k=ca+216|0;w=ca+212|0;u=ca+208|0;M=ca+204|0;F=ca+200|0;y=ca+196|0;s=ca+192|0;E=ca+188|0;x=ca+184|0;D=ca+180|0;v=ca+176|0;I=ca+172|0;J=ca+168|0;H=ca+164|0;L=ca+160|0;V=ca+156|0;t=ca+152|0;z=ca+148|0;aa=ca+144|0;O=ca+140|0;S=ca+136|0;Q=ca+132|0;R=ca+128|0;P=ca+244|0;B=ca;G=ca+124|0;N=ca+120|0;T=ca+116|0;U=ca+112|0;C=ca+108|0;c[o>>2]=b;c[p>>2]=f;c[q>>2]=g;g=r;c[g>>2]=h;c[g+4>>2]=j;c[K>>2]=0;c[w>>2]=-1;c[x>>2]=1;c[D>>2]=1;c[z>>2]=0;c[O>>2]=0;c[S>>2]=c[(c[o>>2]|0)+28>>2];c[Q>>2]=c[(c[o>>2]|0)+32>>2];c[R>>2]=c[(c[o>>2]|0)+36>>2];a[P>>0]=0;c[H>>2]=c[c[o>>2]>>2];c[V>>2]=c[(c[H>>2]|0)+36>>2];if(!(c[p>>2]|0)){c[n>>2]=0;ba=c[n>>2]|0;i=ca;return ba|0}if(jK(c[o>>2]|0,c[p>>2]|0)|0){c[n>>2]=0;ba=c[n>>2]|0;i=ca;return ba|0}c[(c[o>>2]|0)+28>>2]=42625;c[(c[o>>2]|0)+32>>2]=c[p>>2];g=nF(c[H>>2]|0,c[p>>2]|0,K,0)|0;c[k>>2]=g;do if(!g){a[P>>0]=a[c[K>>2]>>0]|0;a[c[K>>2]>>0]=0;l=Kt(c[K>>2]|0)|0;c[k>>2]=l;if(l){ba=c[o>>2]|0;c[m>>2]=c[k>>2];iK(ba,42673,m);break}c[v>>2]=c[(c[K>>2]|0)+56>>2];c[y>>2]=d[(c[K>>2]|0)+5>>0];c[(c[o>>2]|0)+28>>2]=42711;c[t>>2]=((d[(c[v>>2]|0)+((c[y>>2]|0)+5)>>0]<<8|d[(c[v>>2]|0)+((c[y>>2]|0)+5)+1>>0])-1&65535)+1;c[E>>2]=d[(c[v>>2]|0)+((c[y>>2]|0)+3)>>0]<<8|d[(c[v>>2]|0)+((c[y>>2]|0)+3)+1>>0];c[s>>2]=(c[y>>2]|0)+12-(d[(c[K>>2]|0)+4>>0]<<2);c[J>>2]=(c[v>>2]|0)+((c[s>>2]|0)+((c[E>>2]|0)-1<<1));if(a[(c[K>>2]|0)+4>>0]|0){c[z>>2]=c[(c[o>>2]|0)+68>>2];c[c[z>>2]>>2]=0}else{c[M>>2]=$q((c[v>>2]|0)+((c[y>>2]|0)+8)|0)|0;if(a[(c[H>>2]|0)+17>>0]|0){c[(c[o>>2]|0)+28>>2]=42737;fK(c[o>>2]|0,c[M>>2]|0,5,c[p>>2]|0)}m=r;c[w>>2]=gK(c[o>>2]|0,c[M>>2]|0,r,c[m>>2]|0,c[m+4>>2]|0)|0;c[D>>2]=0}c[A>>2]=(c[E>>2]|0)-1;while(1){if((c[A>>2]|0)<0)break;if(!(c[(c[o>>2]|0)+16>>2]|0))break;c[(c[o>>2]|0)+36>>2]=c[A>>2];c[L>>2]=d[c[J>>2]>>0]<<8|d[(c[J>>2]|0)+1>>0];c[J>>2]=(c[J>>2]|0)+-2;do if((c[L>>2]|0)>>>0>=(c[t>>2]|0)>>>0?(c[L>>2]|0)>>>0<=((c[V>>2]|0)-4|0)>>>0:0){c[I>>2]=(c[v>>2]|0)+(c[L>>2]|0);Ub[c[(c[K>>2]|0)+80>>2]&255](c[K>>2]|0,c[I>>2]|0,B);if(((c[L>>2]|0)+(e[B+18>>1]|0)|0)>>>0>(c[V>>2]|0)>>>0){iK(c[o>>2]|0,42795,$);c[x>>2]=0;break}if(a[(c[K>>2]|0)+2>>0]|0){j=B;h=c[j>>2]|0;j=c[j+4>>2]|0;b=r;f=c[b>>2]|0;b=c[b+4>>2]|0;if(c[D>>2]|0){if((j|0)>(b|0)|(j|0)==(b|0)&h>>>0>f>>>0)ba=26}else if((j|0)>(b|0)|(j|0)==(b|0)&h>>>0>=f>>>0)ba=26;if((ba|0)==26){ba=0;m=c[o>>2]|0;g=B;k=c[g+4>>2]|0;l=W;c[l>>2]=c[g>>2];c[l+4>>2]=k;iK(m,42819,W)}k=B;l=c[k+4>>2]|0;m=r;c[m>>2]=c[k>>2];c[m+4>>2]=l}if((c[B+12>>2]|0)>>>0>(e[B+16>>1]|0)>>>0){c[G>>2]=(((c[B+12>>2]|0)-(e[B+16>>1]|0)+(c[V>>2]|0)-5|0)>>>0)/(((c[V>>2]|0)-4|0)>>>0)|0;c[N>>2]=$q((c[I>>2]|0)+((e[B+18>>1]|0)-4)|0)|0;if(a[(c[H>>2]|0)+17>>0]|0)fK(c[o>>2]|0,c[N>>2]|0,3,c[p>>2]|0);eK(c[o>>2]|0,0,c[N>>2]|0,c[G>>2]|0)}if(a[(c[K>>2]|0)+4>>0]|0){kK(c[z>>2]|0,c[L>>2]<<16|(c[L>>2]|0)+(e[B+18>>1]|0)-1);break}c[M>>2]=$q(c[I>>2]|0)|0;if(a[(c[H>>2]|0)+17>>0]|0)fK(c[o>>2]|0,c[M>>2]|0,5,c[p>>2]|0);m=r;c[u>>2]=gK(c[o>>2]|0,c[M>>2]|0,r,c[m>>2]|0,c[m+4>>2]|0)|0;c[D>>2]=0;if((c[u>>2]|0)!=(c[w>>2]|0)){iK(c[o>>2]|0,42843,X);c[w>>2]=c[u>>2]}}else ba=19;while(0);if((ba|0)==19){ba=0;m=c[o>>2]|0;k=c[t>>2]|0;l=(c[V>>2]|0)-4|0;c[_>>2]=c[L>>2];c[_+4>>2]=k;c[_+8>>2]=l;iK(m,42765,_);c[x>>2]=0}c[A>>2]=(c[A>>2]|0)+-1}X=r;_=c[X+4>>2]|0;$=c[q>>2]|0;c[$>>2]=c[X>>2];c[$+4>>2]=_;c[(c[o>>2]|0)+28>>2]=0;if((c[x>>2]|0)!=0?(c[(c[o>>2]|0)+16>>2]|0)>0:0){a:do if(!(a[(c[K>>2]|0)+4>>0]|0)){c[z>>2]=c[(c[o>>2]|0)+68>>2];c[c[z>>2]>>2]=0;c[A>>2]=(c[E>>2]|0)-1;while(1){if((c[A>>2]|0)<0)break a;c[L>>2]=d[(c[v>>2]|0)+((c[s>>2]|0)+(c[A>>2]<<1))>>0]<<8|d[(c[v>>2]|0)+((c[s>>2]|0)+(c[A>>2]<<1))+1>>0];c[T>>2]=(Yb[c[(c[K>>2]|0)+76>>2]&255](c[K>>2]|0,(c[v>>2]|0)+(c[L>>2]|0)|0)|0)&65535;kK(c[z>>2]|0,c[L>>2]<<16|(c[L>>2]|0)+(c[T>>2]|0)-1);c[A>>2]=(c[A>>2]|0)+-1}}while(0);c[A>>2]=d[(c[v>>2]|0)+((c[y>>2]|0)+1)>>0]<<8|d[(c[v>>2]|0)+((c[y>>2]|0)+1)+1>>0];while(1){if((c[A>>2]|0)<=0)break;c[U>>2]=d[(c[v>>2]|0)+((c[A>>2]|0)+2)>>0]<<8|d[(c[v>>2]|0)+((c[A>>2]|0)+2)+1>>0];kK(c[z>>2]|0,c[A>>2]<<16|(c[A>>2]|0)+(c[U>>2]|0)-1);c[C>>2]=d[(c[v>>2]|0)+(c[A>>2]|0)>>0]<<8|d[(c[v>>2]|0)+(c[A>>2]|0)+1>>0];c[A>>2]=c[C>>2]}c[F>>2]=0;c[O>>2]=(c[t>>2]|0)-1;while(1){if(!(lK(c[z>>2]|0,aa)|0))break;if((c[O>>2]&65535)>>>0>=(c[aa>>2]|0)>>>16>>>0){ba=51;break}c[F>>2]=(c[F>>2]|0)+(((c[aa>>2]|0)>>>16)-(c[O>>2]&65535)-1);c[O>>2]=c[aa>>2]}if((ba|0)==51){ba=c[o>>2]|0;$=c[p>>2]|0;c[Y>>2]=(c[aa>>2]|0)>>>16;c[Y+4>>2]=$;iK(ba,42868,Y)}c[F>>2]=(c[F>>2]|0)+((c[V>>2]|0)-(c[O>>2]&65535)-1);if((c[c[z>>2]>>2]|0)==0?(c[F>>2]|0)!=(d[(c[v>>2]|0)+((c[y>>2]|0)+7)>>0]|0):0){ba=c[o>>2]|0;$=d[(c[v>>2]|0)+((c[y>>2]|0)+7)>>0]|0;aa=c[p>>2]|0;c[Z>>2]=c[F>>2];c[Z+4>>2]=$;c[Z+8>>2]=aa;iK(ba,42905,Z)}}}else{ba=c[o>>2]|0;c[l>>2]=c[k>>2];iK(ba,42635,l)}while(0);if(!(c[x>>2]|0))a[c[K>>2]>>0]=a[P>>0]|0;qB(c[K>>2]|0);c[(c[o>>2]|0)+28>>2]=c[S>>2];c[(c[o>>2]|0)+32>>2]=c[Q>>2];c[(c[o>>2]|0)+36>>2]=c[R>>2];c[n>>2]=(c[w>>2]|0)+1;ba=c[n>>2]|0;i=ca;return ba|0}function hK(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;f=g+4|0;e=g;c[f>>2]=a;c[e>>2]=b;i=g;return(d[(c[(c[f>>2]|0)+8>>2]|0)+(((c[e>>2]|0)>>>0)/8|0)>>0]|0)&1<<(c[e>>2]&7)|0}function iK(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;j=k;f=k+28|0;g=k+24|0;h=k+8|0;c[f>>2]=a;c[g>>2]=b;if(!(c[(c[f>>2]|0)+16>>2]|0)){i=k;return}b=(c[f>>2]|0)+16|0;c[b>>2]=(c[b>>2]|0)+-1;b=(c[f>>2]|0)+20|0;c[b>>2]=(c[b>>2]|0)+1;c[h>>2]=e;if(c[(c[f>>2]|0)+40+12>>2]|0)aA((c[f>>2]|0)+40|0,42623,1);if(c[(c[f>>2]|0)+28>>2]|0){e=(c[f>>2]|0)+40|0;b=c[(c[f>>2]|0)+28>>2]|0;a=c[(c[f>>2]|0)+36>>2]|0;c[j>>2]=c[(c[f>>2]|0)+32>>2];c[j+4>>2]=a;$z(e,b,j)}dg((c[f>>2]|0)+40|0,c[g>>2]|0,h);if((d[(c[f>>2]|0)+40+24>>0]|0|0)!=1){i=k;return}c[(c[f>>2]|0)+24>>2]=1;i=k;return}function jK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;h=j+8|0;e=j;g=j+20|0;d=j+16|0;f=j+12|0;c[d>>2]=a;c[f>>2]=b;do if(c[f>>2]|0){b=c[d>>2]|0;a=c[f>>2]|0;if((c[f>>2]|0)>>>0>(c[(c[d>>2]|0)+12>>2]|0)>>>0){c[e>>2]=a;iK(b,42957,e);c[g>>2]=1;break}e=(hK(b,a)|0)!=0;a=c[d>>2]|0;b=c[f>>2]|0;if(e){c[h>>2]=b;iK(a,42980,h);c[g>>2]=1;break}else{dK(a,b);c[g>>2]=0;break}}else c[g>>2]=1;while(0);i=j;return c[g>>2]|0}function kK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;g=h+4|0;f=h;c[d>>2]=a;c[e>>2]=b;a=c[d>>2]|0;b=(c[a>>2]|0)+1|0;c[a>>2]=b;c[f>>2]=b;c[(c[d>>2]|0)+(c[f>>2]<<2)>>2]=c[e>>2];while(1){b=((c[f>>2]|0)>>>0)/2|0;c[g>>2]=b;if(b>>>0<=0){d=5;break}if((c[(c[d>>2]|0)+(c[g>>2]<<2)>>2]|0)>>>0<=(c[(c[d>>2]|0)+(c[f>>2]<<2)>>2]|0)>>>0){d=5;break}c[e>>2]=c[(c[d>>2]|0)+(c[g>>2]<<2)>>2];c[(c[d>>2]|0)+(c[g>>2]<<2)>>2]=c[(c[d>>2]|0)+(c[f>>2]<<2)>>2];c[(c[d>>2]|0)+(c[f>>2]<<2)>>2]=c[e>>2];c[f>>2]=c[g>>2]}if((d|0)==5){i=h;return}}function lK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;d=k+20|0;e=k+16|0;f=k+12|0;h=k+8|0;g=k+4|0;j=k;c[e>>2]=a;c[f>>2]=b;b=c[c[e>>2]>>2]|0;c[j>>2]=b;if(!b){c[d>>2]=0;j=c[d>>2]|0;i=k;return j|0}c[c[f>>2]>>2]=c[(c[e>>2]|0)+4>>2];c[(c[e>>2]|0)+4>>2]=c[(c[e>>2]|0)+(c[j>>2]<<2)>>2];c[(c[e>>2]|0)+(c[j>>2]<<2)>>2]=-1;b=c[e>>2]|0;c[b>>2]=(c[b>>2]|0)+-1;c[g>>2]=1;while(1){b=c[g>>2]<<1;c[h>>2]=b;if(b>>>0>(c[c[e>>2]>>2]|0)>>>0)break;if((c[(c[e>>2]|0)+(c[h>>2]<<2)>>2]|0)>>>0>(c[(c[e>>2]|0)+((c[h>>2]|0)+1<<2)>>2]|0)>>>0)c[h>>2]=(c[h>>2]|0)+1;if((c[(c[e>>2]|0)+(c[g>>2]<<2)>>2]|0)>>>0<(c[(c[e>>2]|0)+(c[h>>2]<<2)>>2]|0)>>>0)break;c[j>>2]=c[(c[e>>2]|0)+(c[g>>2]<<2)>>2];c[(c[e>>2]|0)+(c[g>>2]<<2)>>2]=c[(c[e>>2]|0)+(c[h>>2]<<2)>>2];c[(c[e>>2]|0)+(c[h>>2]<<2)>>2]=c[j>>2];c[g>>2]=c[h>>2]}c[d>>2]=1;j=c[d>>2]|0;i=k;return j|0}function mK(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(c[b>>2]|0)){a=c[b>>2]|0;Kd(a);i=e;return}c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[c[b>>2]>>2]|0))break;qK((c[(c[b>>2]|0)+12>>2]|0)+((c[d>>2]|0)*56|0)|0);c[d>>2]=(c[d>>2]|0)+1}a=c[b>>2]|0;Kd(a);i=e;return}function nK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;f=e+4|0;d=e;c[f>>2]=a;c[d>>2]=b;Sf(c[f>>2]|0,c[(c[d>>2]|0)+12>>2]|0);oK(0,c[(c[d>>2]|0)+16>>2]|0);if(c[(c[d>>2]|0)+40>>2]|0)pK(c[(c[d>>2]|0)+40>>2]|0)|0;if(!(c[(c[d>>2]|0)+56>>2]|0)){d=c[d>>2]|0;a=d+72|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(a|0));i=e;return}pK(c[(c[d>>2]|0)+56>>2]|0)|0;d=c[d>>2]|0;a=d+72|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(a|0));i=e;return}function oK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;d=g+12|0;h=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[h>>2]=b;c[e>>2]=c[h>>2];while(1){if(!(c[e>>2]|0))break;c[f>>2]=c[(c[e>>2]|0)+4>>2];Sf(c[d>>2]|0,c[e>>2]|0);c[e>>2]=c[f>>2]}i=g;return}function pK(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=0;c[b>>2]=hr(c[e>>2]|0)|0;Kd(c[e>>2]|0);i=d;return c[b>>2]|0}function qK(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;Kd(c[(c[b>>2]|0)+28>>2]|0);Kd(c[(c[b>>2]|0)+36>>2]|0);if(c[(c[b>>2]|0)+44>>2]|0)Cs(c[(c[b>>2]|0)+24>>2]|0,0,0,c[(c[b>>2]|0)+44>>2]|0)|0;rK(c[(c[b>>2]|0)+48>>2]|0);b=c[b>>2]|0;a=b+56|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(a|0));i=d;return}function rK(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[b>>2]|0)){i=d;return}mK(c[(c[b>>2]|0)+4>>2]|0);Kd(c[b>>2]|0);i=d;return}function sK(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;h=m+16|0;j=m;k=m+12|0;l=m+8|0;c[h>>2]=b;b=j;c[b>>2]=e;c[b+4>>2]=f;c[k>>2]=g;if(!(d[(c[h>>2]|0)+11>>0]|0)){i=m;return}a[(c[h>>2]|0)+11>>0]=0;c[l>>2]=c[(c[(c[h>>2]|0)+4>>2]|0)+8>>2];while(1){if(!(c[l>>2]|0))break;do if((d[(c[l>>2]|0)+64>>0]|0)&16){a[(c[h>>2]|0)+11>>0]=1;if((c[k>>2]|0)==0?(g=(c[l>>2]|0)+16|0,b=j,!((c[g>>2]|0)==(c[b>>2]|0)?(c[g+4>>2]|0)==(c[b+4>>2]|0):0)):0)break;a[(c[l>>2]|0)+66>>0]=0}while(0);c[l>>2]=c[(c[l>>2]|0)+8>>2]}i=m;return}function tK(b,f,g,h){b=b|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+48|0;p=u+36|0;k=u+32|0;j=u+28|0;q=u+24|0;l=u+20|0;s=u+16|0;t=u+12|0;n=u+8|0;m=u+4|0;r=u;o=u+40|0;c[k>>2]=b;c[j>>2]=f;c[q>>2]=g;c[l>>2]=h;h=c[j>>2]|0;if(h>>>0>($E(c[k>>2]|0)|0)>>>0){c[p>>2]=Lj(64010)|0;t=c[p>>2]|0;i=u;return t|0}c[t>>2]=_E(c[k>>2]|0,c[j>>2]|0,s,0,0)|0;if(c[t>>2]|0){c[p>>2]=c[t>>2];t=c[p>>2]|0;i=u;return t|0}a:do if(!(a[(c[s>>2]|0)+8>>0]|0)){a[(c[s>>2]|0)+8>>0]=1;c[r>>2]=d[(c[s>>2]|0)+5>>0];c[m>>2]=0;while(1){j=c[s>>2]|0;if((c[m>>2]|0)>=(e[(c[s>>2]|0)+18>>1]|0))break;c[n>>2]=(c[j+56>>2]|0)+(e[(c[s>>2]|0)+20>>1]&(d[(c[(c[s>>2]|0)+64>>2]|0)+(c[m>>2]<<1)>>0]<<8|d[(c[(c[s>>2]|0)+64>>2]|0)+(c[m>>2]<<1)+1>>0]));if((a[(c[s>>2]|0)+4>>0]|0)==0?(f=c[k>>2]|0,h=$q(c[n>>2]|0)|0,c[t>>2]=tK(f,h,1,c[l>>2]|0)|0,(c[t>>2]|0)!=0):0)break a;c[t>>2]=uK(c[s>>2]|0,c[n>>2]|0,o)|0;if(c[t>>2]|0)break a;c[m>>2]=(c[m>>2]|0)+1}if(a[j+4>>0]|0){if(c[l>>2]|0){o=c[l>>2]|0;c[o>>2]=(c[o>>2]|0)+(e[(c[s>>2]|0)+18>>1]|0)}}else{n=c[k>>2]|0;o=$q((c[(c[s>>2]|0)+56>>2]|0)+((c[r>>2]|0)+8)|0)|0;c[t>>2]=tK(n,o,1,c[l>>2]|0)|0;if(c[t>>2]|0)break}j=c[s>>2]|0;if(c[q>>2]|0){vK(j,t);break}q=Dg(c[j+72>>2]|0)|0;c[t>>2]=q;if(!q)wK(c[s>>2]|0,d[(c[(c[s>>2]|0)+56>>2]|0)+(c[r>>2]|0)>>0]|8)}else c[t>>2]=Lj(64015)|0;while(0);a[(c[s>>2]|0)+8>>0]=0;qB(c[s>>2]|0);c[p>>2]=c[t>>2];t=c[p>>2]|0;i=u;return t|0}function uK(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=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;t=i;i=i+80|0;g=t+64|0;h=t+60|0;j=t+56|0;u=t+52|0;p=t+48|0;l=t;o=t+44|0;r=t+40|0;m=t+36|0;n=t+32|0;k=t+28|0;q=t+24|0;c[h>>2]=a;c[j>>2]=d;c[u>>2]=f;c[p>>2]=c[(c[h>>2]|0)+52>>2];Ub[c[(c[h>>2]|0)+80>>2]&255](c[h>>2]|0,c[j>>2]|0,l);b[c[u>>2]>>1]=b[l+18>>1]|0;if((e[l+16>>1]|0|0)==(c[l+12>>2]|0)){c[g>>2]=0;u=c[g>>2]|0;i=t;return u|0}if(((c[j>>2]|0)+(e[l+18>>1]|0)+-1|0)>>>0>((c[(c[h>>2]|0)+56>>2]|0)+(e[(c[h>>2]|0)+20>>1]|0)|0)>>>0){c[g>>2]=Lj(61571)|0;u=c[g>>2]|0;i=t;return u|0}c[o>>2]=$q((c[j>>2]|0)+(e[l+18>>1]|0)+-4|0)|0;c[n>>2]=(c[(c[p>>2]|0)+36>>2]|0)-4;c[m>>2]=(((c[l+12>>2]|0)-(e[l+16>>1]|0)+(c[n>>2]|0)-1|0)>>>0)/((c[n>>2]|0)>>>0)|0;while(1){u=c[m>>2]|0;c[m>>2]=u+-1;if(!u){s=23;break}c[k>>2]=0;c[q>>2]=0;if((c[o>>2]|0)>>>0<2){s=9;break}u=c[o>>2]|0;if(u>>>0>($E(c[p>>2]|0)|0)>>>0){s=9;break}if((c[m>>2]|0)!=0?(c[r>>2]=kF(c[p>>2]|0,c[o>>2]|0,q,k)|0,(c[r>>2]|0)!=0):0){s=12;break}if((c[q>>2]|0)==0?(u=zK(c[p>>2]|0,c[o>>2]|0)|0,c[q>>2]=u,(u|0)==0):0)s=17;else if((Jt(c[(c[q>>2]|0)+72>>2]|0)|0)!=1)c[r>>2]=Lj(61607)|0;else s=17;if((s|0)==17){s=0;c[r>>2]=xK(c[p>>2]|0,c[q>>2]|0,c[o>>2]|0)|0}if(c[q>>2]|0)vg(c[(c[q>>2]|0)+72>>2]|0);if(c[r>>2]|0){s=21;break}c[o>>2]=c[k>>2]}if((s|0)==9){c[g>>2]=Lj(61587)|0;u=c[g>>2]|0;i=t;return u|0}else if((s|0)==12){c[g>>2]=c[r>>2];u=c[g>>2]|0;i=t;return u|0}else if((s|0)==21){c[g>>2]=c[r>>2];u=c[g>>2]|0;i=t;return u|0}else if((s|0)==23){c[g>>2]=0;u=c[g>>2]|0;i=t;return u|0}return 0}function vK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if(c[c[e>>2]>>2]|0){i=f;return}b=xK(c[(c[d>>2]|0)+52>>2]|0,c[d>>2]|0,c[(c[d>>2]|0)+84>>2]|0)|0;c[c[e>>2]>>2]=b;i=f;return}function wK(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;h=o+12|0;j=o+8|0;k=o+4|0;n=o;m=o+18|0;l=o+16|0;c[h>>2]=f;c[j>>2]=g;c[k>>2]=c[(c[h>>2]|0)+56>>2];c[n>>2]=c[(c[h>>2]|0)+52>>2];a[m>>0]=a[(c[h>>2]|0)+5>>0]|0;if((e[(c[n>>2]|0)+22>>1]|0)&4)kR((c[k>>2]|0)+(d[m>>0]|0)|0,0,(c[(c[n>>2]|0)+36>>2]|0)-(d[m>>0]|0)|0)|0;a[(c[k>>2]|0)+(d[m>>0]|0)>>0]=c[j>>2];b[l>>1]=(d[m>>0]|0)+((c[j>>2]&8|0)==0?12:8);f=(c[k>>2]|0)+((d[m>>0]|0)+1)|0;a[f>>0]=0;a[f+1>>0]=0;a[f+2>>0]=0;a[f+3>>0]=0;a[(c[k>>2]|0)+((d[m>>0]|0)+7)>>0]=0;a[(c[k>>2]|0)+((d[m>>0]|0)+5)>>0]=(c[(c[n>>2]|0)+36>>2]|0)>>>8;a[(c[k>>2]|0)+((d[m>>0]|0)+5)+1>>0]=c[(c[n>>2]|0)+36>>2];b[(c[h>>2]|0)+16>>1]=(c[(c[n>>2]|0)+36>>2]|0)-(e[l>>1]|0);Lt(c[h>>2]|0,c[j>>2]|0)|0;b[(c[h>>2]|0)+14>>1]=b[l>>1]|0;c[(c[h>>2]|0)+60>>2]=(c[k>>2]|0)+(c[(c[n>>2]|0)+36>>2]|0);c[(c[h>>2]|0)+64>>2]=(c[k>>2]|0)+(e[l>>1]|0);c[(c[h>>2]|0)+68>>2]=(c[k>>2]|0)+(d[(c[h>>2]|0)+6>>0]|0);a[(c[h>>2]|0)+1>>0]=0;b[(c[h>>2]|0)+20>>1]=(c[(c[n>>2]|0)+32>>2]|0)-1;b[(c[h>>2]|0)+18>>1]=0;a[c[h>>2]>>0]=1;i=o;return}function xK(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;g=s+40|0;h=s+36|0;j=s+32|0;k=s+28|0;q=s+24|0;l=s+20|0;p=s+16|0;o=s+12|0;r=s+8|0;m=s+4|0;n=s;c[h>>2]=b;c[j>>2]=d;c[k>>2]=f;c[q>>2]=0;c[l>>2]=0;c[p>>2]=c[(c[h>>2]|0)+12>>2];if((c[k>>2]|0)>>>0<2){c[g>>2]=Lj(61425)|0;r=c[g>>2]|0;i=s;return r|0}if(c[j>>2]|0){c[o>>2]=c[j>>2];yK(c[(c[o>>2]|0)+72>>2]|0)}else c[o>>2]=zK(c[h>>2]|0,c[k>>2]|0)|0;c[r>>2]=Dg(c[(c[p>>2]|0)+72>>2]|0)|0;do if(!(c[r>>2]|0)){c[m>>2]=$q((c[(c[p>>2]|0)+56>>2]|0)+36|0)|0;Xs((c[(c[p>>2]|0)+56>>2]|0)+36|0,(c[m>>2]|0)+1|0);if(e[(c[h>>2]|0)+22>>1]&4){if((c[o>>2]|0)==0?(d=nF(c[h>>2]|0,c[k>>2]|0,o,0)|0,c[r>>2]=d,(d|0)!=0):0)break;d=Dg(c[(c[o>>2]|0)+72>>2]|0)|0;c[r>>2]=d;if(d)break;kR(c[(c[o>>2]|0)+56>>2]|0,0,c[(c[(c[o>>2]|0)+52>>2]|0)+32>>2]|0)|0}if((a[(c[h>>2]|0)+17>>0]|0)!=0?(xJ(c[h>>2]|0,c[k>>2]|0,2,0,r),(c[r>>2]|0)!=0):0)break;if(c[m>>2]|0){c[l>>2]=$q((c[(c[p>>2]|0)+56>>2]|0)+32|0)|0;c[r>>2]=nF(c[h>>2]|0,c[l>>2]|0,q,0)|0;if(c[r>>2]|0)break;c[n>>2]=$q((c[(c[q>>2]|0)+56>>2]|0)+4|0)|0;if((c[n>>2]|0)>>>0>((((c[(c[h>>2]|0)+36>>2]|0)>>>0)/4|0)-2|0)>>>0){c[r>>2]=Lj(61478)|0;break}if((c[n>>2]|0)>>>0<((((c[(c[h>>2]|0)+36>>2]|0)>>>0)/4|0)-8|0)>>>0){c[r>>2]=Dg(c[(c[q>>2]|0)+72>>2]|0)|0;if(c[r>>2]|0)break;Xs((c[(c[q>>2]|0)+56>>2]|0)+4|0,(c[n>>2]|0)+1|0);Xs((c[(c[q>>2]|0)+56>>2]|0)+(8+(c[n>>2]<<2))|0,c[k>>2]|0);if((c[o>>2]|0)!=0?(e[(c[h>>2]|0)+22>>1]&4|0)==0:0)AK(c[(c[o>>2]|0)+72>>2]|0);c[r>>2]=BK(c[h>>2]|0,c[k>>2]|0)|0;break}}if((c[o>>2]|0)==0?(d=nF(c[h>>2]|0,c[k>>2]|0,o,0)|0,c[r>>2]=d,0!=(d|0)):0)break;c[r>>2]=Dg(c[(c[o>>2]|0)+72>>2]|0)|0;if(!(c[r>>2]|0)){Xs(c[(c[o>>2]|0)+56>>2]|0,c[l>>2]|0);Xs((c[(c[o>>2]|0)+56>>2]|0)+4|0,0);Xs((c[(c[p>>2]|0)+56>>2]|0)+32|0,c[k>>2]|0)}}while(0);if(c[o>>2]|0)a[c[o>>2]>>0]=0;qB(c[o>>2]|0);qB(c[q>>2]|0);c[g>>2]=c[r>>2];r=c[g>>2]|0;i=s;return r|0}function yK(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;CK(c[d>>2]|0);i=b;return}function zK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=Zr(c[c[e>>2]>>2]|0,c[f>>2]|0)|0;if(c[g>>2]|0){c[d>>2]=aF(c[g>>2]|0,c[f>>2]|0,c[e>>2]|0)|0;b=c[d>>2]|0;i=h;return b|0}else{c[d>>2]=0;b=c[d>>2]|0;i=h;return b|0}return 0}function AK(a){a=a|0;var d=0,f=0,g=0;g=i;i=i+16|0;d=g+4|0;f=g;c[d>>2]=a;c[f>>2]=c[(c[d>>2]|0)+16>>2];if(!((e[(c[d>>2]|0)+24>>1]|0)&2)){i=g;return}if(c[(c[f>>2]|0)+104>>2]|0){i=g;return}a=(c[d>>2]|0)+24|0;b[a>>1]=e[a>>1]|0|32;a=(c[d>>2]|0)+24|0;b[a>>1]=(e[a>>1]|0)&-5;i=g;return}function BK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=0;if((c[(c[d>>2]|0)+60>>2]|0)==0?(b=fj(c[(c[d>>2]|0)+44>>2]|0)|0,c[(c[d>>2]|0)+60>>2]=b,(c[(c[d>>2]|0)+60>>2]|0)==0):0)c[f>>2]=7;if(c[f>>2]|0){f=c[f>>2]|0;i=g;return f|0}b=c[e>>2]|0;if(b>>>0>(jj(c[(c[d>>2]|0)+60>>2]|0)|0)>>>0){f=c[f>>2]|0;i=g;return f|0}c[f>>2]=gj(c[(c[d>>2]|0)+60>>2]|0,c[e>>2]|0)|0;f=c[f>>2]|0;i=g;return f|0}function CK(a){a=a|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;a=(c[e>>2]|0)+26|0;b[a>>1]=(b[a>>1]|0)+1<<16>>16;a=(c[(c[e>>2]|0)+28>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+1;i=d;return}function DK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;f=p+32|0;g=p+28|0;h=p+24|0;j=p+20|0;o=p+16|0;n=p+12|0;l=p+8|0;k=p+4|0;m=p;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[n>>2]=0;c[l>>2]=c[(c[g>>2]|0)+4>>2];if(c[(c[l>>2]|0)+8>>2]|0){c[f>>2]=262;o=c[f>>2]|0;i=p;return o|0}if((c[h>>2]|0)>>>0<2){c[f>>2]=Lj(64136)|0;o=c[f>>2]|0;i=p;return o|0}c[o>>2]=nF(c[l>>2]|0,c[h>>2]|0,n,0)|0;if(c[o>>2]|0){c[f>>2]=c[o>>2];o=c[f>>2]|0;i=p;return o|0}c[o>>2]=QI(c[g>>2]|0,c[h>>2]|0,0)|0;if(c[o>>2]|0){qB(c[n>>2]|0);c[f>>2]=c[o>>2];o=c[f>>2]|0;i=p;return o|0}c[c[j>>2]>>2]=0;if(a[(c[l>>2]|0)+17>>0]|0){ng(c[g>>2]|0,4,k);d=c[n>>2]|0;do if((c[h>>2]|0)==(c[k>>2]|0)){vK(d,o);qB(c[n>>2]|0);if(c[o>>2]|0){c[f>>2]=c[o>>2];o=c[f>>2]|0;i=p;return o|0}}else{qB(d);c[o>>2]=nF(c[l>>2]|0,c[k>>2]|0,m,0)|0;if(c[o>>2]|0){c[f>>2]=c[o>>2];o=c[f>>2]|0;i=p;return o|0}c[o>>2]=uJ(c[l>>2]|0,c[m>>2]|0,1,0,c[h>>2]|0,0)|0;qB(c[m>>2]|0);if(c[o>>2]|0){c[f>>2]=c[o>>2];o=c[f>>2]|0;i=p;return o|0}c[m>>2]=0;c[o>>2]=nF(c[l>>2]|0,c[k>>2]|0,m,0)|0;vK(c[m>>2]|0,o);qB(c[m>>2]|0);if(!(c[o>>2]|0)){c[c[j>>2]>>2]=c[k>>2];break}c[f>>2]=c[o>>2];o=c[f>>2]|0;i=p;return o|0}while(0);c[k>>2]=(c[k>>2]|0)+-1;while(1){if((c[k>>2]|0)!=((((c[381]|0)>>>0)/((c[(c[l>>2]|0)+32>>2]|0)>>>0)|0)+1|0)?(n=lF(c[l>>2]|0,c[k>>2]|0)|0,(n|0)!=(c[k>>2]|0)):0)break;c[k>>2]=(c[k>>2]|0)+-1}c[o>>2]=yg(c[g>>2]|0,4,c[k>>2]|0)|0}else{vK(c[n>>2]|0,o);qB(c[n>>2]|0)}c[f>>2]=c[o>>2];o=c[f>>2]|0;i=p;return o|0}function EK(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;a[(c[e>>2]|0)+56>>0]=1;b=FK((c[e>>2]|0)+64|0,(c[e>>2]|0)+36|0)|0;i=d;return b|0}function FK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+64|0;e=l+60|0;f=l+56|0;d=l+52|0;j=l+48|0;k=l;g=l+44|0;h=l+40|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=c[(c[(c[e>>2]|0)+8>>2]|0)+24>>2];c[j>>2]=0;b=k;a=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(a|0));if(!(c[(c[e>>2]|0)+40>>2]|0))c[j>>2]=GK(c[d>>2]|0,0,0,(c[e>>2]|0)+40|0)|0;if(!(c[j>>2]|0))c[j>>2]=HK(c[e>>2]|0,c[f>>2]|0)|0;if(c[j>>2]|0){k=c[j>>2]|0;i=l;return k|0}c[h>>2]=0;d=(c[e>>2]|0)+40+8|0;IK(c[(c[e>>2]|0)+40>>2]|0,k,c[(c[(c[e>>2]|0)+8>>2]|0)+12>>2]|0,c[d>>2]|0,c[d+4>>2]|0);d=(c[e>>2]|0)+28|0;c[d>>2]=(c[d>>2]|0)+1;d=c[(c[f>>2]|0)+8>>2]|0;JK(k,d,((d|0)<0)<<31>>31);c[g>>2]=c[c[f>>2]>>2];while(1){b=c[g>>2]|0;if(!(c[g>>2]|0))break;c[h>>2]=c[b+4>>2];d=c[c[g>>2]>>2]|0;JK(k,d,((d|0)<0)<<31>>31);KK(k,(c[g>>2]|0)+8|0,c[c[g>>2]>>2]|0);if(!(c[(c[f>>2]|0)+4>>2]|0))Kd(c[g>>2]|0);c[g>>2]=c[h>>2]}c[c[f>>2]>>2]=b;c[j>>2]=LK(k,(c[e>>2]|0)+40+8|0)|0;k=c[j>>2]|0;i=l;return k|0}function GK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+28|0;g=l+24|0;h=l+20|0;k=l+16|0;j=l;c[g>>2]=a;a=l+8|0;c[a>>2]=b;c[a+4>>2]=d;c[h>>2]=e;if(wi(202)|0){c[f>>2]=3338;k=c[f>>2]|0;i=l;return k|0}c[k>>2]=TK(c[c[g>>2]>>2]|0,0,c[h>>2]|0,4126,k)|0;if(!(c[k>>2]|0)){e=j;c[e>>2]=0;c[e+4>>2]=0;Js(c[c[h>>2]>>2]|0,18,j)}c[f>>2]=c[k>>2];k=c[f>>2]|0;i=l;return k|0}function HK(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;f=n+28|0;g=n+24|0;h=n+20|0;k=n+16|0;j=n+12|0;l=n+8|0;e=n+4|0;m=n;c[g>>2]=a;c[h>>2]=b;c[e>>2]=MK(c[g>>2]|0)|0;if(c[e>>2]|0){c[f>>2]=c[e>>2];m=c[f>>2]|0;i=n;return m|0}c[l>>2]=c[c[h>>2]>>2];e=NK(c[(c[g>>2]|0)+8>>2]|0)|0;c[(c[g>>2]|0)+32>>2]=e;c[j>>2]=ig(256,0)|0;if(!(c[j>>2]|0)){c[f>>2]=7;m=c[f>>2]|0;i=n;return m|0}while(1){if(!(c[l>>2]|0))break;b=c[l>>2]|0;do if(c[(c[h>>2]|0)+4>>2]|0)if((b|0)==(c[(c[h>>2]|0)+4>>2]|0)){c[m>>2]=0;break}else{c[m>>2]=(c[(c[h>>2]|0)+4>>2]|0)+(c[(c[l>>2]|0)+4>>2]|0);break}else c[m>>2]=c[b+4>>2];while(0);c[(c[l>>2]|0)+4>>2]=0;c[k>>2]=0;while(1){if(!(c[(c[j>>2]|0)+(c[k>>2]<<2)>>2]|0))break;OK(c[g>>2]|0,c[l>>2]|0,c[(c[j>>2]|0)+(c[k>>2]<<2)>>2]|0,l);c[(c[j>>2]|0)+(c[k>>2]<<2)>>2]=0;c[k>>2]=(c[k>>2]|0)+1}c[(c[j>>2]|0)+(c[k>>2]<<2)>>2]=c[l>>2];c[l>>2]=c[m>>2]}c[l>>2]=0;c[k>>2]=0;while(1){if((c[k>>2]|0)>=64)break;OK(c[g>>2]|0,c[l>>2]|0,c[(c[j>>2]|0)+(c[k>>2]<<2)>>2]|0,l);c[k>>2]=(c[k>>2]|0)+1}c[c[h>>2]>>2]=c[l>>2];Kd(c[j>>2]|0);c[f>>2]=d[(c[(c[g>>2]|0)+12>>2]|0)+11>>0];m=c[f>>2]|0;i=n;return m|0}function IK(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,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;h=l+12|0;j=l+8|0;k=l;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;a=k;c[a>>2]=e;c[a+4>>2]=f;e=c[h>>2]|0;f=e+40|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));a=c[j>>2]|0;a=_f(a,((a|0)<0)<<31>>31)|0;c[(c[h>>2]|0)+4>>2]=a;if(c[(c[h>>2]|0)+4>>2]|0){b=k;a=c[j>>2]|0;a=qR(c[b>>2]|0,c[b+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;c[(c[h>>2]|0)+12>>2]=a;c[(c[h>>2]|0)+16>>2]=a;a=c[(c[h>>2]|0)+12>>2]|0;a=fR(c[k>>2]|0,c[k+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;k=(c[h>>2]|0)+24|0;c[k>>2]=a;c[k+4>>2]=C;c[(c[h>>2]|0)+8>>2]=c[j>>2];c[(c[h>>2]|0)+32>>2]=c[g>>2];i=l;return}else{c[c[h>>2]>>2]=7;i=l;return}}function JK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;h=e+12|0;j=e;f=e+8|0;g=e+16|0;c[h>>2]=a;a=j;c[a>>2]=b;c[a+4>>2]=d;a=j;c[f>>2]=kI(g,c[a>>2]|0,c[a+4>>2]|0)|0;KK(c[h>>2]|0,g,c[f>>2]|0);i=e;return}function KK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[j>>2]=c[g>>2];while(1){if((c[j>>2]|0)<=0){e=9;break}if(c[c[e>>2]>>2]|0){e=9;break}c[h>>2]=c[j>>2];if((c[h>>2]|0)>((c[(c[e>>2]|0)+8>>2]|0)-(c[(c[e>>2]|0)+16>>2]|0)|0))c[h>>2]=(c[(c[e>>2]|0)+8>>2]|0)-(c[(c[e>>2]|0)+16>>2]|0);iR((c[(c[e>>2]|0)+4>>2]|0)+(c[(c[e>>2]|0)+16>>2]|0)|0,(c[f>>2]|0)+((c[g>>2]|0)-(c[j>>2]|0))|0,c[h>>2]|0)|0;b=(c[e>>2]|0)+16|0;c[b>>2]=(c[b>>2]|0)+(c[h>>2]|0);if((c[(c[e>>2]|0)+16>>2]|0)==(c[(c[e>>2]|0)+8>>2]|0)){l=c[(c[e>>2]|0)+32>>2]|0;d=(c[(c[e>>2]|0)+4>>2]|0)+(c[(c[e>>2]|0)+12>>2]|0)|0;b=(c[(c[e>>2]|0)+16>>2]|0)-(c[(c[e>>2]|0)+12>>2]|0)|0;m=(c[e>>2]|0)+24|0;a=c[(c[e>>2]|0)+12>>2]|0;a=gR(c[m>>2]|0,c[m+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;a=Fg(l,d,b,a,C)|0;c[c[e>>2]>>2]=a;c[(c[e>>2]|0)+16>>2]=0;c[(c[e>>2]|0)+12>>2]=0;a=c[(c[e>>2]|0)+8>>2]|0;b=(c[e>>2]|0)+24|0;d=b;a=gR(c[d>>2]|0,c[d+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0; -c[b>>2]=a;c[b+4>>2]=C}c[j>>2]=(c[j>>2]|0)-(c[h>>2]|0)}if((e|0)==9){i=k;return}}function LK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;if(((c[c[d>>2]>>2]|0)==0?(c[(c[d>>2]|0)+4>>2]|0)!=0:0)?(c[(c[d>>2]|0)+16>>2]|0)>(c[(c[d>>2]|0)+12>>2]|0):0){j=c[(c[d>>2]|0)+32>>2]|0;h=(c[(c[d>>2]|0)+4>>2]|0)+(c[(c[d>>2]|0)+12>>2]|0)|0;a=(c[(c[d>>2]|0)+16>>2]|0)-(c[(c[d>>2]|0)+12>>2]|0)|0;k=(c[d>>2]|0)+24|0;b=c[(c[d>>2]|0)+12>>2]|0;b=gR(c[k>>2]|0,c[k+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;b=Fg(j,h,a,b,C)|0;c[c[d>>2]>>2]=b}j=(c[d>>2]|0)+24|0;k=c[(c[d>>2]|0)+16>>2]|0;k=gR(c[j>>2]|0,c[j+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0;e=c[e>>2]|0;c[e>>2]=k;c[e+4>>2]=C;Kd(c[(c[d>>2]|0)+4>>2]|0);c[f>>2]=c[c[d>>2]>>2];d=c[d>>2]|0;e=d+40|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));i=g;return c[f>>2]|0}function MK(d){d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[f>>2]=d;do if(!(c[(c[f>>2]|0)+12>>2]|0)){d=cF(c[(c[(c[f>>2]|0)+8>>2]|0)+28>>2]|0,0,0,g)|0;c[(c[f>>2]|0)+12>>2]=d;if(c[g>>2]|0){b[(c[(c[f>>2]|0)+12>>2]|0)+8>>1]=b[(c[(c[(c[f>>2]|0)+8>>2]|0)+28>>2]|0)+6>>1]|0;a[(c[(c[f>>2]|0)+12>>2]|0)+11>>0]=0;break}c[e>>2]=7;d=c[e>>2]|0;i=h;return d|0}while(0);c[e>>2]=0;d=c[e>>2]|0;i=h;return d|0}function NK(a){a=a|0;var b=0,e=0,f=0;f=i;i=i+16|0;b=f+4|0;e=f;c[e>>2]=a;do if((d[(c[e>>2]|0)+60>>0]|0|0)!=1)if((d[(c[e>>2]|0)+60>>0]|0|0)==2){c[b>>2]=139;break}else{c[b>>2]=140;break}else c[b>>2]=138;while(0);i=f;return c[b>>2]|0}function OK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;f=o+28|0;g=o+24|0;h=o+20|0;j=o+16|0;l=o+12|0;m=o+8|0;k=o+4|0;n=o;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[l>>2]=0;c[m>>2]=l;c[k>>2]=0;while(1){if(!((c[g>>2]|0)!=0?(c[h>>2]|0)!=0:0))break;c[n>>2]=Sb[c[(c[f>>2]|0)+32>>2]&255](c[f>>2]|0,k,(c[g>>2]|0)+8|0,c[c[g>>2]>>2]|0,(c[h>>2]|0)+8|0,c[c[h>>2]>>2]|0)|0;if((c[n>>2]|0)<=0){c[c[m>>2]>>2]=c[g>>2];c[m>>2]=(c[g>>2]|0)+4;c[g>>2]=c[(c[g>>2]|0)+4>>2];continue}else{c[c[m>>2]>>2]=c[h>>2];c[m>>2]=(c[h>>2]|0)+4;c[h>>2]=c[(c[h>>2]|0)+4>>2];c[k>>2]=0;continue}}c[c[m>>2]>>2]=(c[g>>2]|0)!=0?c[g>>2]|0:c[h>>2]|0;c[c[j>>2]>>2]=c[l>>2];i=o;return}function PK(b,f,g,h,j,k){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;x=i;i=i+64|0;q=x+52|0;r=x+48|0;s=x+44|0;t=x+40|0;u=x+36|0;v=x+32|0;z=x+28|0;y=x+24|0;m=x+20|0;n=x+16|0;o=x+12|0;p=x+8|0;w=x+4|0;l=x;c[q>>2]=b;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;c[u>>2]=j;c[v>>2]=k;c[z>>2]=c[s>>2];c[y>>2]=c[u>>2];c[m>>2]=d[(c[z>>2]|0)+1>>0];c[n>>2]=d[(c[y>>2]|0)+1>>0];c[o>>2]=(c[z>>2]|0)+(d[c[z>>2]>>0]|0);c[p>>2]=(c[y>>2]|0)+(d[c[y>>2]>>0]|0);h=c[m>>2]|0;k=c[n>>2]|0;a:do if(!((c[m>>2]|0)>7&(c[n>>2]|0)>7)){if((h|0)==(k|0)){if((d[c[o>>2]>>0]^d[c[p>>2]>>0])&128){c[w>>2]=(d[c[o>>2]>>0]&128|0)!=0?-1:1;break}c[w>>2]=0;c[l>>2]=0;while(1){if((c[l>>2]|0)>=(d[43245+(c[m>>2]|0)>>0]|0))break a;z=(d[(c[o>>2]|0)+(c[l>>2]|0)>>0]|0)-(d[(c[p>>2]|0)+(c[l>>2]|0)>>0]|0)|0;c[w>>2]=z;if(z)break a;c[l>>2]=(c[l>>2]|0)+1}}do if((c[n>>2]|0)<=7)if((c[m>>2]|0)>7){c[w>>2]=-1;break}else{c[w>>2]=(c[m>>2]|0)-(c[n>>2]|0);break}else c[w>>2]=1;while(0);if((c[w>>2]|0)>0){if(!(d[c[o>>2]>>0]&128))break;c[w>>2]=-1;break}else{if(!(d[c[p>>2]>>0]&128))break;c[w>>2]=1;break}}else c[w>>2]=h-k;while(0);h=c[(c[(c[q>>2]|0)+8>>2]|0)+28>>2]|0;if(!(c[w>>2]|0)){if((e[h+6>>1]|0)<=1){z=c[w>>2]|0;i=x;return z|0}c[w>>2]=SK(c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[t>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;z=c[w>>2]|0;i=x;return z|0}else{if(!(a[c[h+16>>2]>>0]|0)){z=c[w>>2]|0;i=x;return z|0}c[w>>2]=_(c[w>>2]|0,-1)|0;z=c[w>>2]|0;i=x;return z|0}return 0}function QK(b,f,g,h,j,k){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;x=i;i=i+64|0;q=x+48|0;r=x+44|0;s=x+40|0;t=x+36|0;u=x+32|0;v=x+28|0;y=x+24|0;n=x+20|0;o=x+16|0;p=x+12|0;l=x+8|0;m=x+4|0;w=x;c[q>>2]=b;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;c[u>>2]=j;c[v>>2]=k;c[y>>2]=c[s>>2];c[n>>2]=c[u>>2];c[o>>2]=(c[y>>2]|0)+(d[c[y>>2]>>0]|0);c[p>>2]=(c[n>>2]|0)+(d[c[n>>2]>>0]|0);h=(c[y>>2]|0)+1|0;if((d[(c[y>>2]|0)+1>>0]|0)<128)c[l>>2]=d[h>>0];else tF(h,l)|0;c[l>>2]=((c[l>>2]|0)-13|0)/2|0;h=(c[n>>2]|0)+1|0;if((d[(c[n>>2]|0)+1>>0]|0)<128)c[m>>2]=d[h>>0];else tF(h,m)|0;c[m>>2]=((c[m>>2]|0)-13|0)/2|0;c[w>>2]=vQ(c[o>>2]|0,c[p>>2]|0,(c[l>>2]|0)<(c[m>>2]|0)?c[l>>2]|0:c[m>>2]|0)|0;if(!(c[w>>2]|0))c[w>>2]=(c[l>>2]|0)-(c[m>>2]|0);h=c[(c[(c[q>>2]|0)+8>>2]|0)+28>>2]|0;if(!(c[w>>2]|0)){if((e[h+6>>1]|0)<=1){y=c[w>>2]|0;i=x;return y|0}c[w>>2]=SK(c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[t>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;y=c[w>>2]|0;i=x;return y|0}else{if(!(a[c[h+16>>2]>>0]|0)){y=c[w>>2]|0;i=x;return y|0}c[w>>2]=_(c[w>>2]|0,-1)|0;y=c[w>>2]|0;i=x;return y|0}return 0}function RK(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;h=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;m=p+8|0;n=p+4|0;o=p;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=c[(c[h>>2]|0)+12>>2];if(c[c[j>>2]>>2]|0){a=c[l>>2]|0;b=c[k>>2]|0;o=c[o>>2]|0;o=rF(a,b,o)|0;i=p;return o|0}dF(c[(c[(c[h>>2]|0)+8>>2]|0)+28>>2]|0,c[n>>2]|0,c[m>>2]|0,c[o>>2]|0);c[c[j>>2]>>2]=1;a=c[l>>2]|0;b=c[k>>2]|0;o=c[o>>2]|0;o=rF(a,b,o)|0;i=p;return o|0}function SK(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;h=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;m=p+8|0;n=p+4|0;o=p;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=c[(c[h>>2]|0)+12>>2];if(c[c[j>>2]>>2]|0){a=c[l>>2]|0;b=c[k>>2]|0;o=c[o>>2]|0;o=sF(a,b,o,1)|0;i=p;return o|0}dF(c[(c[(c[h>>2]|0)+8>>2]|0)+28>>2]|0,c[n>>2]|0,c[m>>2]|0,c[o>>2]|0);c[c[j>>2]>>2]=1;a=c[l>>2]|0;b=c[k>>2]|0;o=c[o>>2]|0;o=sF(a,b,o,1)|0;i=p;return o|0}function TK(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,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+24|0;h=o+20|0;m=o+16|0;j=o+12|0;k=o+8|0;n=o+4|0;l=o;c[g>>2]=a;c[h>>2]=b;c[m>>2]=d;c[j>>2]=e;c[k>>2]=f;c[n>>2]=7;b=c[(c[g>>2]|0)+4>>2]|0;c[l>>2]=ig(b,((b|0)<0)<<31>>31)|0;if(!(c[l>>2]|0)){n=c[n>>2]|0;i=o;return n|0}c[n>>2]=Vr(c[g>>2]|0,c[h>>2]|0,c[l>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;g=c[l>>2]|0;if(c[n>>2]|0){Kd(g);n=c[n>>2]|0;i=o;return n|0}else{c[c[m>>2]>>2]=g;n=c[n>>2]|0;i=o;return n|0}return 0}function UK(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;e=q+36|0;f=q+32|0;o=q+28|0;j=q+24|0;n=q+20|0;h=q+16|0;l=q+12|0;m=q+8|0;g=q+4|0;k=q;c[e>>2]=a;c[f>>2]=b;c[j>>2]=c[(c[(c[e>>2]|0)+8>>2]|0)+4>>2];c[n>>2]=c[(c[e>>2]|0)+4>>2];c[o>>2]=VK((c[(c[e>>2]|0)+12>>2]|0)+((c[j>>2]|0)*56|0)|0)|0;if(!(c[o>>2]|0)){c[g>>2]=0;c[l>>2]=(c[(c[e>>2]|0)+12>>2]|0)+((c[j>>2]&65534)*56|0);c[m>>2]=(c[(c[e>>2]|0)+12>>2]|0)+((c[j>>2]|1)*56|0);c[h>>2]=((c[c[e>>2]>>2]|0)+(c[j>>2]|0)|0)/2|0;while(1){if((c[h>>2]|0)<=0)break;do if(c[(c[l>>2]|0)+24>>2]|0)if(!(c[(c[m>>2]|0)+24>>2]|0)){c[k>>2]=-1;break}else{c[k>>2]=Sb[c[(c[n>>2]|0)+32>>2]&255](c[n>>2]|0,g,c[(c[l>>2]|0)+32>>2]|0,c[(c[l>>2]|0)+20>>2]|0,c[(c[m>>2]|0)+32>>2]|0,c[(c[m>>2]|0)+20>>2]|0)|0;break}else c[k>>2]=1;while(0);do if((c[k>>2]|0)<0)p=12;else{if((c[k>>2]|0)==0?(c[l>>2]|0)>>>0<(c[m>>2]|0)>>>0:0){p=12;break}if(c[(c[l>>2]|0)+24>>2]|0)c[g>>2]=0;c[(c[(c[e>>2]|0)+8>>2]|0)+(c[h>>2]<<2)>>2]=((c[m>>2]|0)-(c[(c[e>>2]|0)+12>>2]|0)|0)/56|0;c[l>>2]=(c[(c[e>>2]|0)+12>>2]|0)+((c[(c[(c[e>>2]|0)+8>>2]|0)+((c[h>>2]^1)<<2)>>2]|0)*56|0)}while(0);if((p|0)==12){p=0;c[(c[(c[e>>2]|0)+8>>2]|0)+(c[h>>2]<<2)>>2]=((c[l>>2]|0)-(c[(c[e>>2]|0)+12>>2]|0)|0)/56|0;c[m>>2]=(c[(c[e>>2]|0)+12>>2]|0)+((c[(c[(c[e>>2]|0)+8>>2]|0)+((c[h>>2]^1)<<2)>>2]|0)*56|0);c[g>>2]=0}c[h>>2]=(c[h>>2]|0)/2|0}c[c[f>>2]>>2]=(c[(c[(c[e>>2]|0)+12>>2]|0)+((c[(c[(c[e>>2]|0)+8>>2]|0)+4>>2]|0)*56|0)+24>>2]|0)==0&1}if(!(c[o>>2]|0)){p=d[(c[(c[n>>2]|0)+12>>2]|0)+11>>0]|0;i=q;return p|0}else{p=c[o>>2]|0;i=q;return p|0}return 0}function VK(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;j=i;i=i+32|0;b=j+24|0;d=j+20|0;h=j+16|0;f=j;g=j+12|0;e=j+8|0;c[d>>2]=a;c[h>>2]=0;k=f;c[k>>2]=0;c[k+4>>2]=0;k=c[d>>2]|0;m=c[k+4>>2]|0;a=(c[d>>2]|0)+8|0;l=c[a+4>>2]|0;if((m|0)>(l|0)|((m|0)==(l|0)?(c[k>>2]|0)>>>0>=(c[a>>2]|0)>>>0:0)){c[g>>2]=c[(c[d>>2]|0)+48>>2];c[e>>2]=1;if(((c[g>>2]|0)!=0?(c[h>>2]=WK(c[g>>2]|0)|0,(c[h>>2]|0)==0):0)?(c[(c[g>>2]|0)+20>>2]|0)==0:0){m=(c[g>>2]|0)+8|0;c[h>>2]=XK(c[c[g>>2]>>2]|0,c[d>>2]|0,(c[g>>2]|0)+32|0,c[m>>2]|0,c[m+4>>2]|0)|0;c[e>>2]=0}if(c[e>>2]|0){qK(c[d>>2]|0);c[b>>2]=c[h>>2];m=c[b>>2]|0;i=j;return m|0}}if(!(c[h>>2]|0))c[h>>2]=YK(c[d>>2]|0,f)|0;if(!(c[h>>2]|0)){c[(c[d>>2]|0)+20>>2]=c[f>>2];c[h>>2]=ZK(c[d>>2]|0,c[f>>2]|0,(c[d>>2]|0)+32|0)|0}c[b>>2]=c[h>>2];m=c[b>>2]|0;i=j;return m|0}function WK(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=0;c[d>>2]=aL(c[b>>2]|0)|0;f=(c[b>>2]|0)+32|0;a=(c[b>>2]|0)+32+16|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];f=(c[b>>2]|0)+32+8|0;a=(c[b>>2]|0)+8|0;if(!((c[f>>2]|0)==(c[a>>2]|0)?(c[f+4>>2]|0)==(c[a+4>>2]|0):0)){f=c[d>>2]|0;i=e;return f|0}c[(c[b>>2]|0)+20>>2]=1;f=c[d>>2]|0;i=e;return f|0}function XK(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;g=q+36|0;h=q+32|0;j=q+28|0;k=q+24|0;l=q;p=q+20|0;o=q+16|0;m=q+12|0;n=q+8|0;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;a=l;c[a>>2]=e;c[a+4>>2]=f;c[p>>2]=0;if(wi(201)|0){c[g>>2]=266;p=c[g>>2]|0;i=q;return p|0}if(c[(c[j>>2]|0)+44>>2]|0){Cs(c[(c[j>>2]|0)+24>>2]|0,0,0,c[(c[j>>2]|0)+44>>2]|0)|0;c[(c[j>>2]|0)+44>>2]=0}a=l;b=c[a+4>>2]|0;d=c[j>>2]|0;c[d>>2]=c[a>>2];c[d+4>>2]=b;d=(c[k>>2]|0)+8|0;b=c[d+4>>2]|0;a=(c[j>>2]|0)+8|0;c[a>>2]=c[d>>2];c[a+4>>2]=b;c[(c[j>>2]|0)+24>>2]=c[c[k>>2]>>2];c[p>>2]=_K(c[h>>2]|0,c[k>>2]|0,(c[j>>2]|0)+44|0)|0;if((c[p>>2]|0)==0?(c[(c[j>>2]|0)+44>>2]|0)==0:0){c[o>>2]=c[(c[(c[h>>2]|0)+8>>2]|0)+12>>2];b=c[j>>2]|0;a=c[o>>2]|0;a=qR(c[b>>2]|0,c[b+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;c[m>>2]=a;if(!(c[(c[j>>2]|0)+36>>2]|0)){a=c[o>>2]|0;a=_f(a,((a|0)<0)<<31>>31)|0;c[(c[j>>2]|0)+36>>2]=a;if(!(c[(c[j>>2]|0)+36>>2]|0))c[p>>2]=7;c[(c[j>>2]|0)+40>>2]=c[o>>2]}if((c[p>>2]|0)==0&(c[m>>2]|0)!=0){c[n>>2]=(c[o>>2]|0)-(c[m>>2]|0);d=c[j>>2]|0;a=c[n>>2]|0;a=gR(c[d>>2]|0,c[d+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;d=C;o=(c[j>>2]|0)+8|0;b=c[o+4>>2]|0;if((d|0)>(b|0)|((d|0)==(b|0)?a>>>0>(c[o>>2]|0)>>>0:0)){a=(c[j>>2]|0)+8|0;o=c[j>>2]|0;o=fR(c[a>>2]|0,c[a+4>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0;c[n>>2]=o}o=c[j>>2]|0;c[p>>2]=Wr(c[(c[j>>2]|0)+24>>2]|0,(c[(c[j>>2]|0)+36>>2]|0)+(c[m>>2]|0)|0,c[n>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0}}c[g>>2]=c[p>>2];p=c[g>>2]|0;i=q;return p|0}function YK(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+48|0;f=p+24|0;g=p+20|0;h=p+16|0;m=p+12|0;k=p+32|0;j=p+8|0;l=p+4|0;n=p;c[g>>2]=b;c[h>>2]=e;e=c[g>>2]|0;b=c[e>>2]|0;e=c[e+4>>2]|0;do if(c[(c[g>>2]|0)+44>>2]|0){n=(St((c[(c[g>>2]|0)+44>>2]|0)+b|0,c[h>>2]|0)|0)&255;o=c[g>>2]|0;m=o;n=gR(c[m>>2]|0,c[m+4>>2]|0,n|0,0)|0;c[o>>2]=n;c[o+4>>2]=C}else{q=c[(c[g>>2]|0)+40>>2]|0;e=qR(b|0,e|0,q|0,((q|0)<0)<<31>>31|0)|0;c[m>>2]=e;if((c[m>>2]|0)!=0?((c[(c[g>>2]|0)+40>>2]|0)-(c[m>>2]|0)|0)>=9:0){o=(St((c[(c[g>>2]|0)+36>>2]|0)+(c[m>>2]|0)|0,c[h>>2]|0)|0)&255;q=c[g>>2]|0;n=q;o=gR(c[n>>2]|0,c[n+4>>2]|0,o|0,0)|0;c[q>>2]=o;c[q+4>>2]=C;break}c[l>>2]=0;while(1){c[n>>2]=ZK(c[g>>2]|0,1,j)|0;if(c[n>>2]|0)break;m=a[c[j>>2]>>0]|0;q=c[l>>2]|0;c[l>>2]=q+1;a[k+(q&15)>>0]=m;if(!((d[c[j>>2]>>0]|0)&128)){o=10;break}}if((o|0)==10){St(k,c[h>>2]|0)|0;break}c[f>>2]=c[n>>2];q=c[f>>2]|0;i=p;return q|0}while(0);c[f>>2]=0;q=c[f>>2]|0;i=p;return q|0}function ZK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=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=i;i=i+64|0;g=u+52|0;h=u+48|0;j=u+44|0;k=u+40|0;n=u+36|0;o=u+32|0;e=u+28|0;f=u+24|0;r=u+20|0;l=u+16|0;q=u+12|0;s=u+8|0;p=u+4|0;m=u;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;a=c[h>>2]|0;b=c[a>>2]|0;a=c[a+4>>2]|0;if(c[(c[h>>2]|0)+44>>2]|0){c[c[k>>2]>>2]=(c[(c[h>>2]|0)+44>>2]|0)+b;s=c[j>>2]|0;t=c[h>>2]|0;r=t;s=gR(c[r>>2]|0,c[r+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;c[t>>2]=s;c[t+4>>2]=C;c[g>>2]=0;t=c[g>>2]|0;i=u;return t|0}d=c[(c[h>>2]|0)+40>>2]|0;d=qR(b|0,a|0,d|0,((d|0)<0)<<31>>31|0)|0;c[n>>2]=d;if(!(c[n>>2]|0)){w=(c[h>>2]|0)+8|0;a=c[h>>2]|0;a=fR(c[w>>2]|0,c[w+4>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;w=C;d=c[(c[h>>2]|0)+40>>2]|0;v=((d|0)<0)<<31>>31;b=c[h>>2]|0;if((w|0)>(v|0)|(w|0)==(v|0)&a>>>0>d>>>0)c[e>>2]=c[b+40>>2];else{v=b+8|0;w=c[h>>2]|0;w=fR(c[v>>2]|0,c[v+4>>2]|0,c[w>>2]|0,c[w+4>>2]|0)|0;c[e>>2]=w}w=c[h>>2]|0;c[f>>2]=Wr(c[(c[h>>2]|0)+24>>2]|0,c[(c[h>>2]|0)+36>>2]|0,c[e>>2]|0,c[w>>2]|0,c[w+4>>2]|0)|0;if(c[f>>2]|0){c[g>>2]=c[f>>2];w=c[g>>2]|0;i=u;return w|0}}c[o>>2]=(c[(c[h>>2]|0)+40>>2]|0)-(c[n>>2]|0);do if((c[j>>2]|0)<=(c[o>>2]|0)){c[c[k>>2]>>2]=(c[(c[h>>2]|0)+36>>2]|0)+(c[n>>2]|0);v=c[j>>2]|0;w=c[h>>2]|0;t=w;v=gR(c[t>>2]|0,c[t+4>>2]|0,v|0,((v|0)<0)<<31>>31|0)|0;c[w>>2]=v;c[w+4>>2]=C}else{do if((c[(c[h>>2]|0)+16>>2]|0)<(c[j>>2]|0)){if(128>(c[(c[h>>2]|0)+16>>2]<<1|0))b=128;else b=c[(c[h>>2]|0)+16>>2]<<1;c[q>>2]=b;while(1){if((c[j>>2]|0)<=(c[q>>2]|0))break;c[q>>2]=c[q>>2]<<1}w=c[q>>2]|0;c[l>>2]=bg(c[(c[h>>2]|0)+28>>2]|0,w,((w|0)<0)<<31>>31)|0;if(c[l>>2]|0){c[(c[h>>2]|0)+16>>2]=c[q>>2];c[(c[h>>2]|0)+28>>2]=c[l>>2];break}c[g>>2]=7;w=c[g>>2]|0;i=u;return w|0}while(0);iR(c[(c[h>>2]|0)+28>>2]|0,(c[(c[h>>2]|0)+36>>2]|0)+(c[n>>2]|0)|0,c[o>>2]|0)|0;v=c[o>>2]|0;w=c[h>>2]|0;q=w;v=gR(c[q>>2]|0,c[q+4>>2]|0,v|0,((v|0)<0)<<31>>31|0)|0;c[w>>2]=v;c[w+4>>2]=C;c[r>>2]=(c[j>>2]|0)-(c[o>>2]|0);while(1){if((c[r>>2]|0)<=0){t=27;break}c[p>>2]=c[r>>2];if((c[r>>2]|0)>(c[(c[h>>2]|0)+40>>2]|0))c[p>>2]=c[(c[h>>2]|0)+40>>2];c[s>>2]=ZK(c[h>>2]|0,c[p>>2]|0,m)|0;if(c[s>>2]|0)break;iR((c[(c[h>>2]|0)+28>>2]|0)+((c[j>>2]|0)-(c[r>>2]|0))|0,c[m>>2]|0,c[p>>2]|0)|0;c[r>>2]=(c[r>>2]|0)-(c[p>>2]|0)}if((t|0)==27){c[c[k>>2]>>2]=c[(c[h>>2]|0)+28>>2];break}c[g>>2]=c[s>>2];w=c[g>>2]|0;i=u;return w|0}while(0);c[g>>2]=0;w=c[g>>2]|0;i=u;return w|0}function _K(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;j=i;i=i+32|0;l=j+16|0;e=j+12|0;f=j+8|0;h=j+4|0;g=j;c[l>>2]=a;c[e>>2]=b;c[f>>2]=d;c[h>>2]=0;a=(c[e>>2]|0)+8|0;k=c[a+4>>2]|0;d=c[(c[(c[(c[l>>2]|0)+8>>2]|0)+24>>2]|0)+136>>2]|0;b=((d|0)<0)<<31>>31;if(!((k|0)<(b|0)|((k|0)==(b|0)?(c[a>>2]|0)>>>0<=d>>>0:0))){l=c[h>>2]|0;i=j;return l|0}c[g>>2]=c[c[e>>2]>>2];if((c[c[c[g>>2]>>2]>>2]|0)<3){l=c[h>>2]|0;i=j;return l|0}c[h>>2]=$K(c[g>>2]|0,0,0,c[(c[e>>2]|0)+8>>2]|0,c[f>>2]|0)|0;l=c[h>>2]|0;i=j;return l|0}function $K(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;g=i;i=i+32|0;h=g+8|0;c[g+16>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;c[g+12>>2]=e;c[h>>2]=f;c[c[h>>2]>>2]=0;i=g;return 0}function aL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=i;i=i+96|0;b=o+88|0;l=o+84|0;m=o+80|0;f=o+48|0;j=o+76|0;p=o+72|0;h=o+68|0;n=o+8|0;d=o+64|0;k=o+60|0;g=o+56|0;e=o;c[b>>2]=a;c[l>>2]=0;r=(c[b>>2]|0)+8|0;q=c[r+4>>2]|0;a=f;c[a>>2]=c[r>>2];c[a+4>>2]=q;c[j>>2]=(c[b>>2]|0)+32+16;c[p>>2]=c[c[b>>2]>>2];c[h>>2]=c[(c[b>>2]|0)+4>>2];a=f;IK(c[c[j>>2]>>2]|0,n,c[(c[(c[p>>2]|0)+8>>2]|0)+12>>2]|0,c[a>>2]|0,c[a+4>>2]|0);while(1){if(c[l>>2]|0)break;c[k>>2]=(c[(c[h>>2]|0)+12>>2]|0)+((c[(c[(c[h>>2]|0)+8>>2]|0)+4>>2]|0)*56|0);c[g>>2]=c[(c[k>>2]|0)+20>>2];r=n+24|0;q=c[n+16>>2]|0;q=gR(c[r>>2]|0,c[r+4>>2]|0,q|0,((q|0)<0)<<31>>31|0)|0;r=e;c[r>>2]=q;c[r+4>>2]=C;if(!(c[(c[k>>2]|0)+24>>2]|0))break;a=e;p=c[g>>2]|0;p=gR(c[a>>2]|0,c[a+4>>2]|0,p|0,((p|0)<0)<<31>>31|0)|0;a=C;q=c[g>>2]|0;q=zF(q,((q|0)<0)<<31>>31)|0;q=gR(p|0,a|0,q|0,((q|0)<0)<<31>>31|0)|0;a=C;p=f;r=c[(c[b>>2]|0)+16>>2]|0;r=gR(c[p>>2]|0,c[p+4>>2]|0,r|0,((r|0)<0)<<31>>31|0)|0;p=C;if((a|0)>(p|0)|(a|0)==(p|0)&q>>>0>r>>>0)break;r=c[g>>2]|0;JK(n,r,((r|0)<0)<<31>>31);KK(n,c[(c[k>>2]|0)+32>>2]|0,c[g>>2]|0);c[l>>2]=UK(c[(c[b>>2]|0)+4>>2]|0,d)|0}c[m>>2]=LK(n,(c[j>>2]|0)+8|0)|0;if(c[l>>2]|0){r=c[l>>2]|0;i=o;return r|0}c[l>>2]=c[m>>2];r=c[l>>2]|0;i=o;return r|0}function bL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;f=g+8|0;e=g+4|0;d=g;c[b>>2]=a;c[e>>2]=(c[b>>2]|0)+64;c[d>>2]=0;c[f>>2]=cL(c[b>>2]|0,d)|0;if(!(c[f>>2]|0)){c[f>>2]=dL(c[e>>2]|0,c[d>>2]|0,0)|0;c[(c[b>>2]|0)+20>>2]=c[d>>2];c[d>>2]=0}if(!(c[f>>2]|0)){f=c[f>>2]|0;i=g;return f|0}mK(c[d>>2]|0);f=c[f>>2]|0;i=g;return f|0}function cL(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+64|0;e=s+52|0;f=s+48|0;n=s+44|0;r=s+40|0;k=s+36|0;q=s+32|0;p=s+28|0;l=s+24|0;h=s;g=s+20|0;j=s+16|0;o=s+12|0;m=s+8|0;c[e>>2]=a;c[f>>2]=b;c[n>>2]=0;c[r>>2]=0;c[k>>2]=0;while(1){if(c[r>>2]|0)break;if((c[k>>2]|0)>=(d[(c[e>>2]|0)+59>>0]|0|0))break;c[q>>2]=(c[e>>2]|0)+64+((c[k>>2]|0)*72|0);c[p>>2]=0;c[l>>2]=hL(c[(c[q>>2]|0)+28>>2]|0)|0;b=h;c[b>>2]=0;c[b+4>>2]=0;a:do if((c[(c[q>>2]|0)+28>>2]|0)<=16)c[r>>2]=iL(c[q>>2]|0,c[(c[q>>2]|0)+28>>2]|0,h,p)|0;else{c[j>>2]=0;c[p>>2]=jL(16)|0;if(!(c[p>>2]|0))c[r>>2]=7;c[g>>2]=0;while(1){if(!((c[g>>2]|0)<(c[(c[q>>2]|0)+28>>2]|0)?(c[r>>2]|0)==0:0))break a;c[o>>2]=0;if(((c[(c[q>>2]|0)+28>>2]|0)-(c[g>>2]|0)|0)<16)a=(c[(c[q>>2]|0)+28>>2]|0)-(c[g>>2]|0)|0;else a=16;c[m>>2]=a;c[r>>2]=iL(c[q>>2]|0,c[m>>2]|0,h,o)|0;if(!(c[r>>2]|0)){t=c[q>>2]|0;a=c[l>>2]|0;b=c[j>>2]|0;c[j>>2]=b+1;c[r>>2]=kL(t,a,b,c[p>>2]|0,c[o>>2]|0)|0}c[g>>2]=(c[g>>2]|0)+16}}while(0);a=c[p>>2]|0;if(!(c[r>>2]|0))c[n>>2]=a;else mK(a);c[k>>2]=(c[k>>2]|0)+1}if(!(c[r>>2]|0)){q=c[n>>2]|0;t=c[f>>2]|0;c[t>>2]=q;t=c[r>>2]|0;i=s;return t|0}mK(c[n>>2]|0);c[n>>2]=0;q=c[n>>2]|0;t=c[f>>2]|0;c[t>>2]=q;t=c[r>>2]|0;i=s;return t|0}function dL(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;f=n+24|0;g=n+20|0;h=n+16|0;l=n+8|0;j=n+4|0;k=n;c[g>>2]=a;c[h>>2]=b;c[n+12>>2]=e;c[l>>2]=0;c[k>>2]=c[c[h>>2]>>2];c[(c[h>>2]|0)+4>>2]=c[g>>2];c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[k>>2]|0))break;c[l>>2]=eL((c[(c[h>>2]|0)+12>>2]|0)+((c[j>>2]|0)*56|0)|0,0)|0;if(c[l>>2]|0){m=4;break}c[j>>2]=(c[j>>2]|0)+1}if((m|0)==4){c[f>>2]=c[l>>2];m=c[f>>2]|0;i=n;return m|0}c[j>>2]=(c[c[h>>2]>>2]|0)-1;while(1){if((c[j>>2]|0)<=0)break;fL(c[h>>2]|0,c[j>>2]|0);c[j>>2]=(c[j>>2]|0)+-1}c[f>>2]=d[(c[(c[g>>2]|0)+12>>2]|0)+11>>0];m=c[f>>2]|0;i=n;return m|0}function eL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;d=g+12|0;e=g+8|0;h=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[h>>2]=c[(c[d>>2]|0)+48>>2];c[f>>2]=0;if(!(c[h>>2]|0)){h=c[f>>2]|0;i=g;return h|0}c[f>>2]=gL(c[d>>2]|0,c[e>>2]|0)|0;h=c[f>>2]|0;i=g;return h|0}function fL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;d=o+36|0;e=o+32|0;g=o+28|0;h=o+24|0;j=o+20|0;k=o+16|0;l=o+12|0;m=o+8|0;f=o+4|0;n=o;c[d>>2]=a;c[e>>2]=b;b=c[e>>2]|0;if((c[e>>2]|0)>=((c[c[d>>2]>>2]|0)/2|0|0)){c[g>>2]=b-((c[c[d>>2]>>2]|0)/2|0)<<1;c[h>>2]=(c[g>>2]|0)+1}else{c[g>>2]=c[(c[(c[d>>2]|0)+8>>2]|0)+(b<<1<<2)>>2];c[h>>2]=c[(c[(c[d>>2]|0)+8>>2]|0)+((c[e>>2]<<1)+1<<2)>>2]}c[k>>2]=(c[(c[d>>2]|0)+12>>2]|0)+((c[g>>2]|0)*56|0);c[l>>2]=(c[(c[d>>2]|0)+12>>2]|0)+((c[h>>2]|0)*56|0);do if(c[(c[k>>2]|0)+24>>2]|0){if(!(c[(c[l>>2]|0)+24>>2]|0)){c[j>>2]=c[g>>2];break}c[m>>2]=c[(c[d>>2]|0)+4>>2];c[f>>2]=0;c[n>>2]=Sb[c[(c[m>>2]|0)+32>>2]&255](c[m>>2]|0,f,c[(c[k>>2]|0)+32>>2]|0,c[(c[k>>2]|0)+20>>2]|0,c[(c[l>>2]|0)+32>>2]|0,c[(c[l>>2]|0)+20>>2]|0)|0;if((c[n>>2]|0)<=0){c[j>>2]=c[g>>2];break}else{c[j>>2]=c[h>>2];break}}else c[j>>2]=c[h>>2];while(0);c[(c[(c[d>>2]|0)+8>>2]|0)+(c[e>>2]<<2)>>2]=c[j>>2];i=o;return}function gL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;d=k+24|0;l=k+20|0;j=k+16|0;g=k+12|0;h=k+8|0;e=k+4|0;f=k;c[d>>2]=a;c[l>>2]=b;c[j>>2]=0;c[g>>2]=c[(c[d>>2]|0)+48>>2];c[h>>2]=c[c[g>>2]>>2];c[e>>2]=c[(c[(c[h>>2]|0)+8>>2]|0)+24>>2];c[j>>2]=dL(c[h>>2]|0,c[(c[g>>2]|0)+4>>2]|0,c[l>>2]|0)|0;if(!(c[j>>2]|0)){c[f>>2]=c[(c[g>>2]|0)+16>>2];if(!(c[(c[h>>2]|0)+56>>2]|0)){l=(c[h>>2]|0)+56+8|0;c[j>>2]=GK(c[e>>2]|0,c[l>>2]|0,c[l+4>>2]|0,(c[h>>2]|0)+56|0)|0;l=(c[h>>2]|0)+56+8|0;c[l>>2]=0;c[l+4>>2]=0}if(!(c[j>>2]|0)){c[(c[g>>2]|0)+32+16>>2]=c[(c[h>>2]|0)+56>>2];b=(c[h>>2]|0)+56+8|0;l=c[b+4>>2]|0;a=(c[g>>2]|0)+8|0;c[a>>2]=c[b>>2];c[a+4>>2]=l;a=c[f>>2]|0;l=(c[h>>2]|0)+56+8|0;h=l;h=gR(c[h>>2]|0,c[h+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;c[l>>2]=h;c[l+4>>2]=C}}if(c[j>>2]|0){l=c[j>>2]|0;i=k;return l|0}c[j>>2]=VK(c[d>>2]|0)|0;l=c[j>>2]|0;i=k;return l|0}function hL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;b=f+12|0;d=f+8|0;e=f;c[b>>2]=a;c[d>>2]=0;a=e;c[a>>2]=16;c[a+4>>2]=0;while(1){g=e;j=c[g+4>>2]|0;a=c[b>>2]|0;h=((a|0)<0)<<31>>31;if(!((j|0)<(h|0)|((j|0)==(h|0)?(c[g>>2]|0)>>>0>>0:0)))break;h=e;h=rR(c[h>>2]|0,c[h+4>>2]|0,16,0)|0;j=e;c[j>>2]=h;c[j+4>>2]=C;c[d>>2]=(c[d>>2]|0)+1}i=f;return c[d>>2]|0}function iL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;f=q+44|0;g=q+40|0;h=q+36|0;j=q+32|0;n=q+28|0;l=q+8|0;k=q+24|0;p=q+20|0;m=q;o=q+16|0;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;a=c[h>>2]|0;d=c[a+4>>2]|0;e=l;c[e>>2]=c[a>>2];c[e+4>>2]=d;c[p>>2]=0;e=jL(c[g>>2]|0)|0;c[n>>2]=e;c[c[j>>2]>>2]=e;if(!(c[n>>2]|0))c[p>>2]=7;c[k>>2]=0;while(1){if(!((c[k>>2]|0)<(c[g>>2]|0)?(c[p>>2]|0)==0:0))break;c[o>>2]=(c[(c[n>>2]|0)+12>>2]|0)+((c[k>>2]|0)*56|0);a=l;c[p>>2]=mL(c[f>>2]|0,(c[f>>2]|0)+40|0,c[a>>2]|0,c[a+4>>2]|0,c[o>>2]|0,m)|0;a=(c[o>>2]|0)+8|0;d=c[a+4>>2]|0;e=l;c[e>>2]=c[a>>2];c[e+4>>2]=d;c[k>>2]=(c[k>>2]|0)+1}if(!(c[p>>2]|0)){d=l;o=d;o=c[o>>2]|0;d=d+4|0;d=c[d>>2]|0;e=c[h>>2]|0;a=e;c[a>>2]=o;e=e+4|0;c[e>>2]=d;p=c[p>>2]|0;i=q;return p|0}mK(c[n>>2]|0);c[c[j>>2]>>2]=0;d=l;o=d;o=c[o>>2]|0;d=d+4|0;d=c[d>>2]|0;e=c[h>>2]|0;a=e;c[a>>2]=o;e=e+4|0;c[e>>2]=d;p=c[p>>2]|0;i=q;return p|0}function jL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;e=g+8|0;d=g+4|0;f=g;c[b>>2]=a;c[e>>2]=2;while(1){a=c[e>>2]|0;if((c[e>>2]|0)>=(c[b>>2]|0))break;c[e>>2]=(c[e>>2]|0)+a}c[d>>2]=16+(a*60|0);if(wi(100)|0)a=0;else{a=c[d>>2]|0;a=ig(a,((a|0)<0)<<31>>31)|0}c[f>>2]=a;if(!(c[f>>2]|0)){f=c[f>>2]|0;i=g;return f|0}c[c[f>>2]>>2]=c[e>>2];c[(c[f>>2]|0)+4>>2]=0;c[(c[f>>2]|0)+12>>2]=(c[f>>2]|0)+16;c[(c[f>>2]|0)+8>>2]=(c[(c[f>>2]|0)+12>>2]|0)+((c[e>>2]|0)*56|0);f=c[f>>2]|0;i=g;return f|0}function kL(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=i;i=i+64|0;g=s+48|0;h=s+44|0;p=s+40|0;u=s+36|0;t=s+32|0;r=s+28|0;l=s+24|0;j=s+20|0;q=s+16|0;m=s+12|0;k=s+8|0;o=s+4|0;n=s;c[g>>2]=a;c[h>>2]=b;c[p>>2]=d;c[u>>2]=e;c[t>>2]=f;c[r>>2]=0;c[l>>2]=1;c[q>>2]=c[u>>2];c[r>>2]=lL(c[g>>2]|0,c[t>>2]|0,m)|0;c[j>>2]=1;while(1){if((c[j>>2]|0)>=(c[h>>2]|0))break;c[l>>2]=c[l>>2]<<4;c[j>>2]=(c[j>>2]|0)+1}c[j>>2]=1;while(1){if(!((c[j>>2]|0)<(c[h>>2]|0)?(c[r>>2]|0)==0:0))break;c[k>>2]=((c[p>>2]|0)/(c[l>>2]|0)|0|0)%16|0;c[o>>2]=(c[(c[q>>2]|0)+12>>2]|0)+((c[k>>2]|0)*56|0);do if(!(c[(c[o>>2]|0)+48>>2]|0)){c[n>>2]=jL(16)|0;if(!(c[n>>2]|0)){c[r>>2]=7;break}else{c[r>>2]=lL(c[g>>2]|0,c[n>>2]|0,(c[o>>2]|0)+48|0)|0;break}}while(0);if(!(c[r>>2]|0)){c[q>>2]=c[(c[(c[o>>2]|0)+48>>2]|0)+4>>2];c[l>>2]=(c[l>>2]|0)/16|0}c[j>>2]=(c[j>>2]|0)+1}g=c[m>>2]|0;if(!(c[r>>2]|0)){c[(c[(c[q>>2]|0)+12>>2]|0)+(((c[p>>2]|0)%16|0)*56|0)+48>>2]=g;u=c[r>>2]|0;i=s;return u|0}else{rK(g);u=c[r>>2]|0;i=s;return u|0}return 0}function lL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;g=k+16|0;e=k+12|0;f=k+8|0;j=k+4|0;h=k;c[g>>2]=a;c[e>>2]=b;c[f>>2]=d;c[j>>2]=0;if(wi(100)|0)b=0;else b=ig(64,0)|0;c[c[f>>2]>>2]=b;c[h>>2]=b;b=c[e>>2]|0;if(!(c[h>>2]|0)){mK(b);c[j>>2]=7;j=c[j>>2]|0;i=k;return j|0}c[(c[h>>2]|0)+4>>2]=b;c[c[h>>2]>>2]=c[g>>2];b=c[(c[g>>2]|0)+8>>2]|0;if(((c[(c[(c[g>>2]|0)+8>>2]|0)+8>>2]|0)+9|0)>((c[(c[(c[g>>2]|0)+8>>2]|0)+4>>2]|0)/2|0|0))b=(c[b+8>>2]|0)+9|0;else b=(c[b+4>>2]|0)/2|0;c[(c[h>>2]|0)+16>>2]=b;f=c[(c[h>>2]|0)+16>>2]|0;h=(c[g>>2]|0)+56+8|0;g=h;g=gR(c[g>>2]|0,c[g+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0;c[h>>2]=g;c[h+4>>2]=C;j=c[j>>2]|0;i=k;return j|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,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=i;i=i+48|0;o=m+32|0;n=m+28|0;p=m+8|0;h=m+24|0;j=m+20|0;l=m+16|0;k=m;c[o>>2]=a;c[n>>2]=b;a=p;c[a>>2]=d;c[a+4>>2]=e;c[h>>2]=f;c[j>>2]=g;g=p;c[l>>2]=XK(c[o>>2]|0,c[h>>2]|0,c[n>>2]|0,c[g>>2]|0,c[g+4>>2]|0)|0;if(!(c[l>>2]|0)){o=k;c[o>>2]=0;c[o+4>>2]=0;c[l>>2]=YK(c[h>>2]|0,k)|0;o=c[h>>2]|0;p=k;p=gR(c[o>>2]|0,c[o+4>>2]|0,c[p>>2]|0,c[p+4>>2]|0)|0;o=(c[h>>2]|0)+8|0;c[o>>2]=p;c[o+4>>2]=C;o=k;p=c[j>>2]|0;n=p;o=gR(c[n>>2]|0,c[n+4>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0;c[p>>2]=o;c[p+4>>2]=C}if(c[l>>2]|0){p=c[l>>2]|0;i=m;return p|0}c[l>>2]=VK(c[h>>2]|0)|0;p=c[l>>2]|0;i=m;return p|0}function nL(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return(d[(c[b>>2]|0)+66>>0]|0|0)!=1|0}function oL(b){b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+8|0;g=f+4|0;e=f;c[d>>2]=b;c[e>>2]=pL(c[(c[d>>2]|0)+16>>2]|0,g)|0;c[(c[d>>2]|0)+56>>2]=0;if(!(c[g>>2]|0)){g=c[e>>2]|0;i=f;return g|0}a[(c[d>>2]|0)+2>>0]=1;g=c[e>>2]|0;i=f;return g|0}function pL(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;g=j+12|0;h=j+8|0;e=j+4|0;f=j;c[h>>2]=a;c[e>>2]=b;if((d[(c[h>>2]|0)+66>>0]|0|0)>=3)a=WE(c[h>>2]|0)|0;else a=0;c[f>>2]=a;if(c[f>>2]|0){c[c[e>>2]>>2]=1;c[g>>2]=c[f>>2];h=c[g>>2]|0;i=j;return h|0}a=c[e>>2]|0;if((d[(c[h>>2]|0)+66>>0]|0|0)!=1)c[a>>2]=1;else c[a>>2]=0;c[g>>2]=0;h=c[g>>2]|0;i=j;return h|0}function qL(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=b;c[f>>2]=d;b=c[e>>2]|0;if(a[(c[e>>2]|0)+56>>0]|0){c[h>>2]=(c[(c[(c[e>>2]|0)+20>>2]|0)+12>>2]|0)+((c[(c[(c[b+20>>2]|0)+8>>2]|0)+4>>2]|0)*56|0);c[c[f>>2]>>2]=c[(c[h>>2]|0)+20>>2];c[g>>2]=c[(c[h>>2]|0)+32>>2];h=c[g>>2]|0;i=j;return h|0}else{c[c[f>>2]>>2]=c[c[b+36>>2]>>2];c[g>>2]=(c[(c[e>>2]|0)+36>>2]|0)+8;h=c[g>>2]|0;i=j;return h|0}return 0}function rL(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;k=t+32|0;l=t+28|0;m=t+24|0;n=t+20|0;q=t+16|0;o=t+12|0;r=t+8|0;s=t+4|0;p=t;c[k>>2]=f;c[l>>2]=g;c[m>>2]=h;c[n>>2]=j;if(c[c[n>>2]>>2]|0){i=t;return}c[o>>2]=c[(c[k>>2]|0)+56>>2];c[r>>2]=(c[(c[k>>2]|0)+64>>2]|0)+(c[l>>2]<<1);c[q>>2]=(d[c[r>>2]>>0]|0)<<8|(d[(c[r>>2]|0)+1>>0]|0);c[p>>2]=d[(c[k>>2]|0)+5>>0];if((c[q>>2]|0)>>>0>=((d[(c[o>>2]|0)+((c[p>>2]|0)+5)>>0]|0)<<8|(d[(c[o>>2]|0)+((c[p>>2]|0)+5)+1>>0]|0))>>>0?((c[q>>2]|0)+(c[m>>2]|0)|0)>>>0<=(c[(c[(c[k>>2]|0)+52>>2]|0)+36>>2]|0)>>>0:0){c[s>>2]=IL(c[k>>2]|0,c[q>>2]&65535,c[m>>2]&65535)|0;if(c[s>>2]|0){c[c[n>>2]>>2]=c[s>>2];i=t;return}h=(c[k>>2]|0)+18|0;b[h>>1]=(b[h>>1]|0)+-1<<16>>16;if(!(e[(c[k>>2]|0)+18>>1]|0)){h=(c[o>>2]|0)+((c[p>>2]|0)+1)|0;a[h>>0]=0;a[h+1>>0]=0;a[h+2>>0]=0;a[h+3>>0]=0;a[(c[o>>2]|0)+((c[p>>2]|0)+7)>>0]=0;a[(c[o>>2]|0)+((c[p>>2]|0)+5)>>0]=(c[(c[(c[k>>2]|0)+52>>2]|0)+36>>2]|0)>>>8;a[(c[o>>2]|0)+((c[p>>2]|0)+5)+1>>0]=c[(c[(c[k>>2]|0)+52>>2]|0)+36>>2];b[(c[k>>2]|0)+16>>1]=(c[(c[(c[k>>2]|0)+52>>2]|0)+36>>2]|0)-(d[(c[k>>2]|0)+5>>0]|0)-(d[(c[k>>2]|0)+6>>0]|0)-8;i=t;return}else{jR(c[r>>2]|0,(c[r>>2]|0)+2|0,(e[(c[k>>2]|0)+18>>1]|0)-(c[l>>2]|0)<<1|0)|0;a[(c[o>>2]|0)+((c[p>>2]|0)+3)>>0]=(e[(c[k>>2]|0)+18>>1]|0)>>8;a[(c[o>>2]|0)+((c[p>>2]|0)+3)+1>>0]=b[(c[k>>2]|0)+18>>1];h=(c[k>>2]|0)+16|0;b[h>>1]=(e[h>>1]|0)+2;i=t;return}}h=Lj(61841)|0;c[c[n>>2]>>2]=h;i=t;return}function sL(f,g,h,j,k,l,m){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;z=i;i=i+48|0;n=z+44|0;o=z+40|0;p=z+36|0;q=z+32|0;r=z+28|0;s=z+24|0;t=z+20|0;v=z+16|0;w=z+12|0;u=z+8|0;x=z+4|0;y=z;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=j;c[r>>2]=k;c[s>>2]=l;c[t>>2]=m;c[v>>2]=0;if(c[c[t>>2]>>2]|0){i=z;return}if((d[(c[n>>2]|0)+1>>0]|0)==0?((c[q>>2]|0)+2|0)<=(e[(c[n>>2]|0)+16>>1]|0):0){c[y>>2]=Dg(c[(c[n>>2]|0)+72>>2]|0)|0;if(c[y>>2]|0){c[c[t>>2]>>2]=c[y>>2];i=z;return}c[u>>2]=c[(c[n>>2]|0)+56>>2];c[y>>2]=KL(c[n>>2]|0,c[q>>2]|0,v)|0;if(c[y>>2]|0){c[c[t>>2]>>2]=c[y>>2];i=z;return}j=(c[n>>2]|0)+16|0;b[j>>1]=(e[j>>1]|0)-(2+(c[q>>2]|0)&65535);iR((c[u>>2]|0)+(c[v>>2]|0)|0,c[p>>2]|0,c[q>>2]|0)|0;if(c[s>>2]|0)Xs((c[u>>2]|0)+(c[v>>2]|0)|0,c[s>>2]|0);c[x>>2]=(c[(c[n>>2]|0)+64>>2]|0)+(c[o>>2]<<1);jR((c[x>>2]|0)+2|0,c[x>>2]|0,(e[(c[n>>2]|0)+18>>1]|0)-(c[o>>2]|0)<<1|0)|0;a[c[x>>2]>>0]=c[v>>2]>>8;a[(c[x>>2]|0)+1>>0]=c[v>>2];y=(c[n>>2]|0)+18|0;b[y>>1]=(b[y>>1]|0)+1<<16>>16;y=(c[u>>2]|0)+((d[(c[n>>2]|0)+5>>0]|0)+4)|0;j=(a[y>>0]|0)+1<<24>>24;a[y>>0]=j;if(!(j&255)){j=(c[u>>2]|0)+((d[(c[n>>2]|0)+5>>0]|0)+3)|0;a[j>>0]=(a[j>>0]|0)+1<<24>>24}if(!(a[(c[(c[n>>2]|0)+52>>2]|0)+17>>0]|0)){i=z;return}zJ(c[n>>2]|0,c[p>>2]|0,c[t>>2]|0);i=z;return}if(c[r>>2]|0){iR(c[r>>2]|0,c[p>>2]|0,c[q>>2]|0)|0;c[p>>2]=c[r>>2]}if(c[s>>2]|0)Xs(c[p>>2]|0,c[s>>2]|0);y=(c[n>>2]|0)+1|0;j=a[y>>0]|0;a[y>>0]=j+1<<24>>24;c[w>>2]=j&255;c[(c[n>>2]|0)+32+(c[w>>2]<<2)>>2]=c[p>>2];b[(c[n>>2]|0)+22+(c[w>>2]<<1)>>1]=c[o>>2];i=z;return}function tL(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+64|0;g=r+32|0;q=r+28|0;l=r+24|0;h=r+36|0;m=r+20|0;k=r+16|0;n=r+12|0;o=r+8|0;j=r+4|0;p=r;c[g>>2]=f;c[q>>2]=0;c[l>>2]=(c[(c[(c[g>>2]|0)+4>>2]|0)+36>>2]<<1>>>0)/3|0;c[m>>2]=0;do{c[k>>2]=a[(c[g>>2]|0)+68>>0];c[n>>2]=c[(c[g>>2]|0)+120+(c[k>>2]<<2)>>2];f=a[(c[n>>2]|0)+1>>0]|0;if(!(c[k>>2]|0)){if(!(f<<24>>24))break;c[q>>2]=uL(c[n>>2]|0,(c[g>>2]|0)+120+4|0)|0;if(!(c[q>>2]|0)){a[(c[g>>2]|0)+68>>0]=1;b[(c[g>>2]|0)+80>>1]=0;b[(c[g>>2]|0)+80+2>>1]=0}}else{if((f&255|0)==0?(e[(c[n>>2]|0)+16>>1]|0)<=(c[l>>2]|0):0)break;c[o>>2]=c[(c[g>>2]|0)+120+((c[k>>2]|0)-1<<2)>>2];c[j>>2]=e[(c[g>>2]|0)+80+((c[k>>2]|0)-1<<1)>>1];c[q>>2]=Dg(c[(c[o>>2]|0)+72>>2]|0)|0;do if(!(c[q>>2]|0)){if(((((d[(c[n>>2]|0)+3>>0]|0)!=0?(d[(c[n>>2]|0)+1>>0]|0)==1:0)?(e[(c[n>>2]|0)+22>>1]|0)==(e[(c[n>>2]|0)+18>>1]|0):0)?(c[(c[o>>2]|0)+84>>2]|0)!=1:0)?(e[(c[o>>2]|0)+18>>1]|0)==(c[j>>2]|0):0){c[q>>2]=vL(c[o>>2]|0,c[n>>2]|0,h)|0;break}c[p>>2]=Ti(c[(c[(c[g>>2]|0)+4>>2]|0)+32>>2]|0)|0;c[q>>2]=wL(c[o>>2]|0,c[j>>2]|0,c[p>>2]|0,(c[k>>2]|0)==1&1,d[(c[g>>2]|0)+67>>0]&1)|0;if(c[m>>2]|0)Wi(c[m>>2]|0);c[m>>2]=c[p>>2]}while(0);a[(c[n>>2]|0)+1>>0]=0;qB(c[n>>2]|0);f=(c[g>>2]|0)+68|0;a[f>>0]=(a[f>>0]|0)+-1<<24>>24}}while((c[q>>2]|0)==0);if(!(c[m>>2]|0)){q=c[q>>2]|0;i=r;return q|0}Wi(c[m>>2]|0);q=c[q>>2]|0;i=r;return q|0}function uL(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;f=n+24|0;g=n+20|0;h=n+16|0;m=n+12|0;k=n+8|0;l=n+4|0;j=n;c[g>>2]=b;c[h>>2]=e;c[k>>2]=0;c[l>>2]=0;c[j>>2]=c[(c[g>>2]|0)+52>>2];c[m>>2]=Dg(c[(c[g>>2]|0)+72>>2]|0)|0;if((c[m>>2]|0)==0?(c[m>>2]=tJ(c[j>>2]|0,k,l,c[(c[g>>2]|0)+84>>2]|0,0)|0,BL(c[g>>2]|0,c[k>>2]|0,m),(a[(c[j>>2]|0)+17>>0]|0)!=0):0)xJ(c[j>>2]|0,c[l>>2]|0,5,c[(c[g>>2]|0)+84>>2]|0,m);if(c[m>>2]|0){c[c[h>>2]>>2]=0;qB(c[k>>2]|0);c[f>>2]=c[m>>2];m=c[f>>2]|0;i=n;return m|0}else{iR((c[k>>2]|0)+22|0,(c[g>>2]|0)+22|0,d[(c[g>>2]|0)+1>>0]<<1|0)|0;iR((c[k>>2]|0)+32|0,(c[g>>2]|0)+32|0,d[(c[g>>2]|0)+1>>0]<<2|0)|0;a[(c[k>>2]|0)+1>>0]=a[(c[g>>2]|0)+1>>0]|0;wK(c[g>>2]|0,d[c[(c[k>>2]|0)+56>>2]>>0]&-9);Xs((c[(c[g>>2]|0)+56>>2]|0)+((d[(c[g>>2]|0)+5>>0]|0)+8)|0,c[l>>2]|0);c[c[h>>2]>>2]=c[k>>2];c[f>>2]=0;m=c[f>>2]|0;i=n;return m|0}return 0}function vL(f,g,h){f=f|0;g=g|0;h=h|0;var 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;v=i;i=i+48|0;j=v+40|0;k=v+36|0;l=v+32|0;m=v+28|0;n=v+24|0;p=v+20|0;t=v+16|0;s=v+12|0;q=v+8|0;o=v+4|0;u=v+44|0;r=v;c[k>>2]=f;c[l>>2]=g;c[m>>2]=h;c[n>>2]=c[(c[l>>2]|0)+52>>2];if(!(e[(c[l>>2]|0)+18>>1]|0)){c[j>>2]=Lj(62338)|0;u=c[j>>2]|0;i=v;return u|0}c[t>>2]=tJ(c[n>>2]|0,p,s,0,0)|0;if(!(c[t>>2]|0)){c[q>>2]=(c[m>>2]|0)+4;c[o>>2]=c[(c[l>>2]|0)+32>>2];b[u>>1]=Yb[c[(c[l>>2]|0)+76>>2]&255](c[l>>2]|0,c[o>>2]|0)|0;wK(c[p>>2]|0,13);c[t>>2]=GL(c[p>>2]|0,1,o,u)|0;if(c[t>>2]|0){c[j>>2]=c[t>>2];u=c[j>>2]|0;i=v;return u|0}b[(c[p>>2]|0)+16>>1]=(c[(c[n>>2]|0)+36>>2]|0)-(e[(c[p>>2]|0)+14>>1]|0)-2-(e[u>>1]|0);if((a[(c[n>>2]|0)+17>>0]|0)!=0?(xJ(c[n>>2]|0,c[s>>2]|0,5,c[(c[k>>2]|0)+84>>2]|0,t),(e[u>>1]|0)>(e[(c[p>>2]|0)+12>>1]|0)):0)zJ(c[p>>2]|0,c[o>>2]|0,t);c[o>>2]=(c[(c[l>>2]|0)+56>>2]|0)+(e[(c[l>>2]|0)+20>>1]&(d[(c[(c[l>>2]|0)+64>>2]|0)+((e[(c[l>>2]|0)+18>>1]|0)-1<<1)>>0]<<8|d[(c[(c[l>>2]|0)+64>>2]|0)+((e[(c[l>>2]|0)+18>>1]|0)-1<<1)+1>>0]));c[r>>2]=(c[o>>2]|0)+9;do{u=c[o>>2]|0;c[o>>2]=u+1;if(!(d[u>>0]&128))break}while((c[o>>2]|0)>>>0<(c[r>>2]|0)>>>0);c[r>>2]=(c[o>>2]|0)+9;do{u=c[o>>2]|0;c[o>>2]=u+1;u=a[u>>0]|0;h=c[q>>2]|0;c[q>>2]=h+1;a[h>>0]=u;if(!(u&128))break}while((c[o>>2]|0)>>>0<(c[r>>2]|0)>>>0);sL(c[k>>2]|0,e[(c[k>>2]|0)+18>>1]|0,c[m>>2]|0,(c[q>>2]|0)-(c[m>>2]|0)|0,0,c[(c[l>>2]|0)+84>>2]|0,t);Xs((c[(c[k>>2]|0)+56>>2]|0)+((d[(c[k>>2]|0)+5>>0]|0)+8)|0,c[s>>2]|0);qB(c[p>>2]|0)}c[j>>2]=c[t>>2];u=c[j>>2]|0;i=v;return u|0}function wL(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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,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; -Da=i;i=i+448|0;ga=Da+412|0;ha=Da+408|0;l=Da+404|0;Q=Da+400|0;ia=Da+396|0;C=Da+392|0;za=Da+388|0;t=Da+384|0;wa=Da+380|0;ya=Da+376|0;pa=Da+372|0;Y=Da+368|0;H=Da+364|0;Z=Da+360|0;Aa=Da+356|0;ua=Da+430|0;va=Da+352|0;Ca=Da+348|0;L=Da+344|0;q=Da+340|0;W=Da+336|0;A=Da+332|0;la=Da+320|0;ka=Da+300|0;K=Da+296|0;p=Da+288|0;na=Da+264|0;oa=Da+244|0;Ba=Da+224|0;o=Da+220|0;M=Da+216|0;ja=Da+432|0;S=Da+196|0;E=Da+176|0;D=Da+420|0;ma=Da+160|0;m=Da+152|0;v=Da+148|0;r=Da+144|0;n=Da+140|0;s=Da+418|0;x=Da+136|0;y=Da+132|0;z=Da+416|0;w=Da+128|0;u=Da+124|0;B=Da+120|0;P=Da+116|0;O=Da+112|0;N=Da+108|0;F=Da+104|0;I=Da+100|0;G=Da+96|0;J=Da+92|0;aa=Da+88|0;R=Da+84|0;T=Da+80|0;fa=Da+76|0;U=Da+72|0;V=Da+68|0;_=Da+64|0;ca=Da+60|0;$=Da+56|0;da=Da+52|0;ea=Da+48|0;ba=Da+44|0;X=Da;sa=Da+40|0;qa=Da+36|0;ra=Da+32|0;xa=Da+28|0;ta=Da+24|0;c[ha>>2]=f;c[l>>2]=g;c[Q>>2]=h;c[ia>>2]=j;c[C>>2]=k;c[t>>2]=0;c[wa>>2]=0;c[Aa>>2]=0;c[q>>2]=0;c[W>>2]=0;a[ja>>0]=0;a[ja+1>>0]=0;a[ja+2>>0]=0;a[ja+3>>0]=0;a[ja+4>>0]=0;c[ma>>2]=0;c[ma+8>>2]=0;c[za>>2]=c[(c[ha>>2]|0)+52>>2];if(!(c[Q>>2]|0)){c[ga>>2]=7;Ca=c[ga>>2]|0;i=Da;return Ca|0}c[pa>>2]=(d[(c[ha>>2]|0)+1>>0]|0)+(e[(c[ha>>2]|0)+18>>1]|0);if((c[pa>>2]|0)<2)c[Z>>2]=0;else{do if(c[l>>2]|0)if((c[l>>2]|0)==(c[pa>>2]|0)){c[Z>>2]=(c[pa>>2]|0)-2+(c[C>>2]|0);break}else{c[Z>>2]=(c[l>>2]|0)-1;break}else c[Z>>2]=0;while(0);c[pa>>2]=2-(c[C>>2]|0)}c[ya>>2]=(c[pa>>2]|0)+1;l=c[ha>>2]|0;if(((c[pa>>2]|0)+(c[Z>>2]|0)-(d[(c[ha>>2]|0)+1>>0]|0)|0)==(e[(c[ha>>2]|0)+18>>1]|0))c[K>>2]=(c[(c[ha>>2]|0)+56>>2]|0)+((d[l+5>>0]|0)+8);else c[K>>2]=(c[l+56>>2]|0)+(e[(c[ha>>2]|0)+20>>1]&(d[(c[(c[ha>>2]|0)+64>>2]|0)+((c[pa>>2]|0)+(c[Z>>2]|0)-(d[(c[ha>>2]|0)+1>>0]|0)<<1)>>0]<<8|d[(c[(c[ha>>2]|0)+64>>2]|0)+((c[pa>>2]|0)+(c[Z>>2]|0)-(d[(c[ha>>2]|0)+1>>0]|0)<<1)+1>>0]));c[M>>2]=$q(c[K>>2]|0)|0;while(1){c[Aa>>2]=_E(c[za>>2]|0,c[M>>2]|0,la+(c[pa>>2]<<2)|0,0,0)|0;if(c[Aa>>2]|0){h=16;break}c[t>>2]=(c[t>>2]|0)+(1+(e[(c[la+(c[pa>>2]<<2)>>2]|0)+18>>1]|0)+(d[(c[la+(c[pa>>2]<<2)>>2]|0)+1>>0]|0));f=c[pa>>2]|0;c[pa>>2]=f+-1;if(!f){h=26;break}if(((c[pa>>2]|0)+(c[Z>>2]|0)|0)==(e[(c[ha>>2]|0)+22>>1]|0)?(d[(c[ha>>2]|0)+1>>0]|0)!=0:0){c[p+(c[pa>>2]<<2)>>2]=c[(c[ha>>2]|0)+32>>2];c[M>>2]=$q(c[p+(c[pa>>2]<<2)>>2]|0)|0;f=(Yb[c[(c[ha>>2]|0)+76>>2]&255](c[ha>>2]|0,c[p+(c[pa>>2]<<2)>>2]|0)|0)&65535;c[Ba+(c[pa>>2]<<2)>>2]=f;a[(c[ha>>2]|0)+1>>0]=0;continue}c[p+(c[pa>>2]<<2)>>2]=(c[(c[ha>>2]|0)+56>>2]|0)+(e[(c[ha>>2]|0)+20>>1]&(d[(c[(c[ha>>2]|0)+64>>2]|0)+((c[pa>>2]|0)+(c[Z>>2]|0)-(d[(c[ha>>2]|0)+1>>0]|0)<<1)>>0]<<8|d[(c[(c[ha>>2]|0)+64>>2]|0)+((c[pa>>2]|0)+(c[Z>>2]|0)-(d[(c[ha>>2]|0)+1>>0]|0)<<1)+1>>0]));c[M>>2]=$q(c[p+(c[pa>>2]<<2)>>2]|0)|0;f=(Yb[c[(c[ha>>2]|0)+76>>2]&255](c[ha>>2]|0,c[p+(c[pa>>2]<<2)>>2]|0)|0)&65535;c[Ba+(c[pa>>2]<<2)>>2]=f;if(e[(c[za>>2]|0)+22>>1]&4){c[m>>2]=(c[p+(c[pa>>2]<<2)>>2]|0)-(c[(c[ha>>2]|0)+56>>2]|0);if(((c[m>>2]|0)+(c[Ba+(c[pa>>2]<<2)>>2]|0)|0)>(c[(c[za>>2]|0)+36>>2]|0)){h=23;break}iR((c[Q>>2]|0)+(c[m>>2]|0)|0,c[p+(c[pa>>2]<<2)>>2]|0,c[Ba+(c[pa>>2]<<2)>>2]|0)|0;c[p+(c[pa>>2]<<2)>>2]=(c[Q>>2]|0)+((c[p+(c[pa>>2]<<2)>>2]|0)-(c[(c[ha>>2]|0)+56>>2]|0))}rL(c[ha>>2]|0,(c[pa>>2]|0)+(c[Z>>2]|0)-(d[(c[ha>>2]|0)+1>>0]|0)|0,c[Ba+(c[pa>>2]<<2)>>2]|0,Aa)}a:do if((h|0)==16)kR(la|0,0,(c[pa>>2]|0)+1<<2|0)|0;else if((h|0)==23){c[Aa>>2]=Lj(62677)|0;kR(la|0,0,(c[pa>>2]|0)+1<<2|0)|0}else if((h|0)==26){c[t>>2]=(c[t>>2]|0)+3&-4;c[A>>2]=(c[t>>2]<<2)+(c[t>>2]<<1)+(c[(c[za>>2]|0)+32>>2]|0);c[ma+8>>2]=zi(c[A>>2]|0)|0;if(!(c[ma+8>>2]|0)){c[Aa>>2]=7;break}c[ma+12>>2]=(c[ma+8>>2]|0)+(c[t>>2]<<2);c[o>>2]=(c[ma+12>>2]|0)+(c[t>>2]<<1);c[ma+4>>2]=c[la>>2];b[ua>>1]=d[(c[ma+4>>2]|0)+4>>0]<<2;c[va>>2]=d[(c[ma+4>>2]|0)+3>>0];c[pa>>2]=0;while(1){if((c[pa>>2]|0)>=(c[ya>>2]|0))break;c[v>>2]=c[la+(c[pa>>2]<<2)>>2];c[r>>2]=e[(c[v>>2]|0)+18>>1];c[n>>2]=c[(c[v>>2]|0)+56>>2];b[s>>1]=b[(c[v>>2]|0)+20>>1]|0;c[x>>2]=(c[n>>2]|0)+(e[(c[v>>2]|0)+14>>1]|0);if((d[c[(c[v>>2]|0)+56>>2]>>0]|0)!=(d[c[(c[la>>2]|0)+56>>2]>>0]|0)){h=31;break}kR((c[ma+12>>2]|0)+(c[ma>>2]<<1)|0,0,(c[r>>2]|0)+(d[(c[v>>2]|0)+1>>0]|0)<<1|0)|0;b:do if((d[(c[v>>2]|0)+1>>0]|0)>0){c[r>>2]=e[(c[v>>2]|0)+22>>1];c[Y>>2]=0;while(1){if((c[Y>>2]|0)>=(c[r>>2]|0))break;c[(c[ma+8>>2]|0)+(c[ma>>2]<<2)>>2]=(c[n>>2]|0)+(e[s>>1]&(d[c[x>>2]>>0]<<8|d[(c[x>>2]|0)+1>>0]));c[x>>2]=(c[x>>2]|0)+2;c[ma>>2]=(c[ma>>2]|0)+1;c[Y>>2]=(c[Y>>2]|0)+1}c[H>>2]=0;while(1){if((c[H>>2]|0)>=(d[(c[v>>2]|0)+1>>0]|0))break b;c[(c[ma+8>>2]|0)+(c[ma>>2]<<2)>>2]=c[(c[v>>2]|0)+32+(c[H>>2]<<2)>>2];c[ma>>2]=(c[ma>>2]|0)+1;c[H>>2]=(c[H>>2]|0)+1}}while(0);c[y>>2]=(c[n>>2]|0)+(e[(c[v>>2]|0)+14>>1]|0)+(e[(c[v>>2]|0)+18>>1]<<1);while(1){if((c[x>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break;c[(c[ma+8>>2]|0)+(c[ma>>2]<<2)>>2]=(c[n>>2]|0)+(e[s>>1]&(d[c[x>>2]>>0]<<8|d[(c[x>>2]|0)+1>>0]));c[x>>2]=(c[x>>2]|0)+2;c[ma>>2]=(c[ma>>2]|0)+1}c[oa+(c[pa>>2]<<2)>>2]=c[ma>>2];if(!((c[va>>2]|0)!=0?1:(c[pa>>2]|0)>=((c[ya>>2]|0)-1|0))){b[z>>1]=c[Ba+(c[pa>>2]<<2)>>2];b[(c[ma+12>>2]|0)+(c[ma>>2]<<1)>>1]=b[z>>1]|0;c[w>>2]=(c[o>>2]|0)+(c[q>>2]|0);c[q>>2]=(c[q>>2]|0)+(e[z>>1]|0);iR(c[w>>2]|0,c[p+(c[pa>>2]<<2)>>2]|0,e[z>>1]|0)|0;c[(c[ma+8>>2]|0)+(c[ma>>2]<<2)>>2]=(c[w>>2]|0)+(e[ua>>1]|0);b[(c[ma+12>>2]|0)+(c[ma>>2]<<1)>>1]=(e[(c[ma+12>>2]|0)+(c[ma>>2]<<1)>>1]|0)-(e[ua>>1]|0);c:do if(a[(c[v>>2]|0)+4>>0]|0)while(1){if((e[(c[ma+12>>2]|0)+(c[ma>>2]<<1)>>1]|0)>=4)break c;A=c[q>>2]|0;c[q>>2]=A+1;a[(c[o>>2]|0)+A>>0]=0;A=(c[ma+12>>2]|0)+(c[ma>>2]<<1)|0;b[A>>1]=(b[A>>1]|0)+1<<16>>16}else{A=c[(c[ma+8>>2]|0)+(c[ma>>2]<<2)>>2]|0;t=(c[(c[v>>2]|0)+56>>2]|0)+8|0;a[A>>0]=a[t>>0]|0;a[A+1>>0]=a[t+1>>0]|0;a[A+2>>0]=a[t+2>>0]|0;a[A+3>>0]=a[t+3>>0]|0}while(0);c[ma>>2]=(c[ma>>2]|0)+1}c[pa>>2]=(c[pa>>2]|0)+1}if((h|0)==31){c[Aa>>2]=Lj(62744)|0;break}c[Ca>>2]=(c[(c[za>>2]|0)+36>>2]|0)-12+(e[ua>>1]|0);c[pa>>2]=0;while(1){if((c[pa>>2]|0)>=(c[ya>>2]|0))break;c[u>>2]=c[la+(c[pa>>2]<<2)>>2];c[Ba+(c[pa>>2]<<2)>>2]=(c[Ca>>2]|0)-(e[(c[u>>2]|0)+16>>1]|0);if((c[Ba+(c[pa>>2]<<2)>>2]|0)<0){h=52;break}c[Y>>2]=0;while(1){if((c[Y>>2]|0)>=(d[(c[u>>2]|0)+1>>0]|0))break;z=2+((Yb[c[(c[u>>2]|0)+76>>2]&255](c[u>>2]|0,c[(c[u>>2]|0)+32+(c[Y>>2]<<2)>>2]|0)|0)&65535)|0;A=Ba+(c[pa>>2]<<2)|0;c[A>>2]=(c[A>>2]|0)+z;c[Y>>2]=(c[Y>>2]|0)+1}c[na+(c[pa>>2]<<2)>>2]=c[oa+(c[pa>>2]<<2)>>2];c[pa>>2]=(c[pa>>2]|0)+1}if((h|0)==52){c[Aa>>2]=Lj(62842)|0;break}c[H>>2]=c[ya>>2];c[pa>>2]=0;d:while(1){if((c[pa>>2]|0)>=(c[H>>2]|0)){h=83;break}while(1){if((c[Ba+(c[pa>>2]<<2)>>2]|0)<=(c[Ca>>2]|0))break;if(((c[pa>>2]|0)+1|0)>=(c[H>>2]|0)){c[H>>2]=(c[pa>>2]|0)+2;if((c[H>>2]|0)>5){h=62;break d}c[Ba+((c[H>>2]|0)-1<<2)>>2]=0;c[na+((c[H>>2]|0)-1<<2)>>2]=c[ma>>2]}c[B>>2]=2+((xL(ma,(c[na+(c[pa>>2]<<2)>>2]|0)-1|0)|0)&65535);A=Ba+(c[pa>>2]<<2)|0;c[A>>2]=(c[A>>2]|0)-(c[B>>2]|0);do if(!(c[va>>2]|0))if((c[na+(c[pa>>2]<<2)>>2]|0)<(c[ma>>2]|0)){c[B>>2]=2+((xL(ma,c[na+(c[pa>>2]<<2)>>2]|0)|0)&65535);break}else{c[B>>2]=0;break}while(0);A=Ba+((c[pa>>2]|0)+1<<2)|0;c[A>>2]=(c[A>>2]|0)+(c[B>>2]|0);A=na+(c[pa>>2]<<2)|0;c[A>>2]=(c[A>>2]|0)+-1}while(1){if((c[na+(c[pa>>2]<<2)>>2]|0)>=(c[ma>>2]|0))break;c[B>>2]=2+((xL(ma,c[na+(c[pa>>2]<<2)>>2]|0)|0)&65535);if(((c[Ba+(c[pa>>2]<<2)>>2]|0)+(c[B>>2]|0)|0)>(c[Ca>>2]|0))break;A=Ba+(c[pa>>2]<<2)|0;c[A>>2]=(c[A>>2]|0)+(c[B>>2]|0);A=na+(c[pa>>2]<<2)|0;c[A>>2]=(c[A>>2]|0)+1;do if(!(c[va>>2]|0))if((c[na+(c[pa>>2]<<2)>>2]|0)<(c[ma>>2]|0)){c[B>>2]=2+((xL(ma,c[na+(c[pa>>2]<<2)>>2]|0)|0)&65535);break}else{c[B>>2]=0;break}while(0);A=Ba+((c[pa>>2]|0)+1<<2)|0;c[A>>2]=(c[A>>2]|0)-(c[B>>2]|0)}l=c[pa>>2]|0;if((c[na+(c[pa>>2]<<2)>>2]|0)<(c[ma>>2]|0)){if((c[pa>>2]|0)>0)h=c[na+((c[pa>>2]|0)-1<<2)>>2]|0;else h=0;if((c[na+(l<<2)>>2]|0)<=(h|0)){h=81;break}}else c[H>>2]=l+1;c[pa>>2]=(c[pa>>2]|0)+1}if((h|0)==62){c[Aa>>2]=Lj(62854)|0;break}else if((h|0)==81){c[Aa>>2]=Lj(62887)|0;break}else if((h|0)==83){c[pa>>2]=(c[H>>2]|0)-1;while(1){if((c[pa>>2]|0)<=0)break;c[P>>2]=c[Ba+(c[pa>>2]<<2)>>2];c[O>>2]=c[Ba+((c[pa>>2]|0)-1<<2)>>2];c[N>>2]=(c[na+((c[pa>>2]|0)-1<<2)>>2]|0)-1;c[F>>2]=(c[N>>2]|0)+1-(c[va>>2]|0);xL(ma,c[F>>2]|0)|0;do{xL(ma,c[N>>2]|0)|0;if(c[P>>2]|0){if(c[C>>2]|0)break;if(((c[P>>2]|0)+(e[(c[ma+12>>2]|0)+(c[F>>2]<<1)>>1]|0)+2|0)>((c[O>>2]|0)-((e[(c[ma+12>>2]|0)+(c[N>>2]<<1)>>1]|0)+2)|0))break}c[P>>2]=(c[P>>2]|0)+((e[(c[ma+12>>2]|0)+(c[F>>2]<<1)>>1]|0)+2);c[O>>2]=(c[O>>2]|0)-((e[(c[ma+12>>2]|0)+(c[N>>2]<<1)>>1]|0)+2);c[na+((c[pa>>2]|0)-1<<2)>>2]=c[N>>2];c[N>>2]=(c[N>>2]|0)+-1;c[F>>2]=(c[F>>2]|0)+-1}while((c[N>>2]|0)>=0);c[Ba+(c[pa>>2]<<2)>>2]=c[P>>2];c[Ba+((c[pa>>2]|0)-1<<2)>>2]=c[O>>2];if((c[pa>>2]|0)>1)l=c[na+((c[pa>>2]|0)-2<<2)>>2]|0;else l=0;if((c[na+((c[pa>>2]|0)-1<<2)>>2]|0)<=(l|0)){h=93;break}c[pa>>2]=(c[pa>>2]|0)+-1}if((h|0)==93){c[Aa>>2]=Lj(62929)|0;break}c[L>>2]=d[c[(c[la>>2]|0)+56>>2]>>0];c[pa>>2]=0;while(1){if((c[pa>>2]|0)>=(c[H>>2]|0))break;if((c[pa>>2]|0)<(c[ya>>2]|0)){P=c[la+(c[pa>>2]<<2)>>2]|0;c[ka+(c[pa>>2]<<2)>>2]=P;c[I>>2]=P;c[la+(c[pa>>2]<<2)>>2]=0;c[Aa>>2]=Dg(c[(c[I>>2]|0)+72>>2]|0)|0;c[wa>>2]=(c[wa>>2]|0)+1;if(c[Aa>>2]|0)break a}else{c[Aa>>2]=tJ(c[za>>2]|0,I,M,(c[C>>2]|0)!=0?1:c[M>>2]|0,0)|0;if(c[Aa>>2]|0)break a;wK(c[I>>2]|0,c[L>>2]|0);c[ka+(c[pa>>2]<<2)>>2]=c[I>>2];c[wa>>2]=(c[wa>>2]|0)+1;c[oa+(c[pa>>2]<<2)>>2]=c[ma>>2];if((a[(c[za>>2]|0)+17>>0]|0)!=0?(xJ(c[za>>2]|0,c[(c[I>>2]|0)+84>>2]|0,5,c[(c[ha>>2]|0)+84>>2]|0,Aa),(c[Aa>>2]|0)!=0):0)break a}c[pa>>2]=(c[pa>>2]|0)+1}c[pa>>2]=0;e:while(1){if((c[pa>>2]|0)>=(c[wa>>2]|0))break;P=c[(c[ka+(c[pa>>2]<<2)>>2]|0)+84>>2]|0;c[S+(c[pa>>2]<<2)>>2]=P;c[E+(c[pa>>2]<<2)>>2]=P;b[D+(c[pa>>2]<<1)>>1]=b[(c[(c[ka+(c[pa>>2]<<2)>>2]|0)+72>>2]|0)+24>>1]|0;c[Y>>2]=0;while(1){if((c[Y>>2]|0)>=(c[pa>>2]|0))break;if((c[S+(c[Y>>2]<<2)>>2]|0)==(c[S+(c[pa>>2]<<2)>>2]|0)){h=108;break e}c[Y>>2]=(c[Y>>2]|0)+1}c[pa>>2]=(c[pa>>2]|0)+1}if((h|0)==108){c[Aa>>2]=Lj(63003)|0;break}c[pa>>2]=0;while(1){if((c[pa>>2]|0)>=(c[wa>>2]|0))break;c[G>>2]=0;c[Y>>2]=1;while(1){if((c[Y>>2]|0)>=(c[wa>>2]|0))break;if((c[E+(c[Y>>2]<<2)>>2]|0)>>>0<(c[E+(c[G>>2]<<2)>>2]|0)>>>0)c[G>>2]=c[Y>>2];c[Y>>2]=(c[Y>>2]|0)+1}c[M>>2]=c[E+(c[G>>2]<<2)>>2];c[E+(c[G>>2]<<2)>>2]=-1;if((c[G>>2]|0)!=(c[pa>>2]|0)){if((c[G>>2]|0)>(c[pa>>2]|0))yL(c[(c[ka+(c[G>>2]<<2)>>2]|0)+72>>2]|0,(c[(c[za>>2]|0)+44>>2]|0)+(c[G>>2]|0)+1|0,0);yL(c[(c[ka+(c[pa>>2]<<2)>>2]|0)+72>>2]|0,c[M>>2]|0,b[D+(c[G>>2]<<1)>>1]|0);c[(c[ka+(c[pa>>2]<<2)>>2]|0)+84>>2]=c[M>>2]}c[pa>>2]=(c[pa>>2]|0)+1}Xs(c[K>>2]|0,c[(c[ka+((c[wa>>2]|0)-1<<2)>>2]|0)+84>>2]|0);if((c[L>>2]&8|0)==0?(c[ya>>2]|0)!=(c[wa>>2]|0):0){c[J>>2]=c[((c[wa>>2]|0)>(c[ya>>2]|0)?ka:la)+((c[ya>>2]|0)-1<<2)>>2];P=(c[(c[ka+((c[wa>>2]|0)-1<<2)>>2]|0)+56>>2]|0)+8|0;O=(c[(c[J>>2]|0)+56>>2]|0)+8|0;a[P>>0]=a[O>>0]|0;a[P+1>>0]=a[O+1>>0]|0;a[P+2>>0]=a[O+2>>0]|0;a[P+3>>0]=a[O+3>>0]|0}f:do if(a[(c[za>>2]|0)+17>>0]|0){c[aa>>2]=c[ka>>2];c[R>>2]=c[(c[aa>>2]|0)+56>>2];c[T>>2]=(e[(c[aa>>2]|0)+18>>1]|0)+(d[(c[aa>>2]|0)+1>>0]|0);c[fa>>2]=c[(c[za>>2]|0)+36>>2];c[U>>2]=0;c[V>>2]=0;c[pa>>2]=0;while(1){if((c[pa>>2]|0)>=(c[ma>>2]|0))break f;c[_>>2]=c[(c[ma+8>>2]|0)+(c[pa>>2]<<2)>>2];if((c[pa>>2]|0)==(c[T>>2]|0)){P=(c[V>>2]|0)+1|0;c[V>>2]=P;l=c[V>>2]|0;if((P|0)<(c[wa>>2]|0))l=c[ka+(l<<2)>>2]|0;else l=c[la+(l<<2)>>2]|0;c[ca>>2]=l;c[T>>2]=(c[T>>2]|0)+((e[(c[ca>>2]|0)+18>>1]|0)+(d[(c[ca>>2]|0)+1>>0]|0)+(((c[va>>2]|0)!=0^1)&1));c[R>>2]=c[(c[ca>>2]|0)+56>>2]}if(!((c[pa>>2]|0)==(c[na+(c[U>>2]<<2)>>2]|0)?(P=(c[U>>2]|0)+1|0,c[U>>2]=P,c[aa>>2]=c[ka+(P<<2)>>2],(c[va>>2]|0)==0):0))h=136;do if((h|0)==136){h=0;if((((c[V>>2]|0)<(c[wa>>2]|0)?(c[(c[aa>>2]|0)+84>>2]|0)==(c[S+(c[V>>2]<<2)>>2]|0):0)?(c[_>>2]|0)>>>0>=(c[R>>2]|0)>>>0:0)?(c[_>>2]|0)>>>0<((c[R>>2]|0)+(c[fa>>2]|0)|0)>>>0:0)break;if(!(b[ua>>1]|0)){O=c[za>>2]|0;P=$q(c[_>>2]|0)|0;xJ(O,P,5,c[(c[aa>>2]|0)+84>>2]|0,Aa)}P=(xL(ma,c[pa>>2]|0)|0)&65535;if((P|0)>(e[(c[aa>>2]|0)+12>>1]|0))zJ(c[aa>>2]|0,c[_>>2]|0,Aa);if(c[Aa>>2]|0)break a}while(0);c[pa>>2]=(c[pa>>2]|0)+1}}while(0);c[pa>>2]=0;while(1){if((c[pa>>2]|0)>=((c[wa>>2]|0)-1|0))break;c[ba>>2]=c[ka+(c[pa>>2]<<2)>>2];c[Y>>2]=c[na+(c[pa>>2]<<2)>>2];c[$>>2]=c[(c[ma+8>>2]|0)+(c[Y>>2]<<2)>>2];c[ea>>2]=(e[(c[ma+12>>2]|0)+(c[Y>>2]<<1)>>1]|0)+(e[ua>>1]|0);c[da>>2]=(c[Q>>2]|0)+(c[W>>2]|0);do if(a[(c[ba>>2]|0)+4>>0]|0){if(c[va>>2]|0){c[Y>>2]=(c[Y>>2]|0)+-1;Ub[c[(c[ba>>2]|0)+80>>2]&255](c[ba>>2]|0,c[(c[ma+8>>2]|0)+(c[Y>>2]<<2)>>2]|0,X);c[$>>2]=c[da>>2];fa=X;c[ea>>2]=4+(kI((c[$>>2]|0)+4|0,c[fa>>2]|0,c[fa+4>>2]|0)|0);c[da>>2]=0;break}c[$>>2]=(c[$>>2]|0)+-4;if((e[(c[ma+12>>2]|0)+(c[Y>>2]<<1)>>1]|0)==4)c[ea>>2]=(Yb[c[(c[ha>>2]|0)+76>>2]&255](c[ha>>2]|0,c[$>>2]|0)|0)&65535}else{fa=(c[(c[ba>>2]|0)+56>>2]|0)+8|0;ca=c[$>>2]|0;a[fa>>0]=a[ca>>0]|0;a[fa+1>>0]=a[ca+1>>0]|0;a[fa+2>>0]=a[ca+2>>0]|0;a[fa+3>>0]=a[ca+3>>0]|0}while(0);c[W>>2]=(c[W>>2]|0)+(c[ea>>2]|0);sL(c[ha>>2]|0,(c[Z>>2]|0)+(c[pa>>2]|0)|0,c[$>>2]|0,c[ea>>2]|0,c[da>>2]|0,c[(c[ba>>2]|0)+84>>2]|0,Aa);if(c[Aa>>2]|0)break a;c[pa>>2]=(c[pa>>2]|0)+1}c[pa>>2]=1-(c[wa>>2]|0);while(1){if((c[pa>>2]|0)>=(c[wa>>2]|0))break;fa=c[pa>>2]|0;c[sa>>2]=(c[pa>>2]|0)<0?0-fa|0:fa;do if(!(a[ja+(c[sa>>2]|0)>>0]|0)){if((c[pa>>2]|0)<0?(c[oa+((c[sa>>2]|0)-1<<2)>>2]|0)<(c[na+((c[sa>>2]|0)-1<<2)>>2]|0):0)break;if(!(c[sa>>2]|0)){c[ra>>2]=0;c[qa>>2]=0;c[xa>>2]=c[na>>2]}else{if((c[sa>>2]|0)<(c[ya>>2]|0))l=(c[oa+((c[sa>>2]|0)-1<<2)>>2]|0)+(((c[va>>2]|0)!=0^1)&1)|0;else l=c[ma>>2]|0;c[ra>>2]=l;c[qa>>2]=(c[na+((c[sa>>2]|0)-1<<2)>>2]|0)+(((c[va>>2]|0)!=0^1)&1);c[xa>>2]=(c[na+(c[sa>>2]<<2)>>2]|0)-(c[qa>>2]|0)}c[Aa>>2]=zL(c[ka+(c[sa>>2]<<2)>>2]|0,c[ra>>2]|0,c[qa>>2]|0,c[xa>>2]|0,ma)|0;if(c[Aa>>2]|0)break a;fa=ja+(c[sa>>2]|0)|0;a[fa>>0]=(a[fa>>0]|0)+1<<24>>24;b[(c[ka+(c[sa>>2]<<2)>>2]|0)+16>>1]=(c[Ca>>2]|0)-(c[Ba+(c[sa>>2]<<2)>>2]|0)}while(0);c[pa>>2]=(c[pa>>2]|0)+1}if(((c[ia>>2]|0)!=0?(e[(c[ha>>2]|0)+18>>1]|0)==0:0)?(d[(c[ha>>2]|0)+5>>0]|0)<=(e[(c[ka>>2]|0)+16>>1]|0):0){c[Aa>>2]=AL(c[ka>>2]|0)|0;BL(c[ka>>2]|0,c[ha>>2]|0,Aa);vK(c[ka>>2]|0,Aa)}else h=174;g:do if((h|0)==174?!((b[ua>>1]|0)!=0?1:(d[(c[za>>2]|0)+17>>0]|0)==0):0){c[pa>>2]=0;while(1){if((c[pa>>2]|0)>=(c[wa>>2]|0))break g;c[ta>>2]=$q((c[(c[ka+(c[pa>>2]<<2)>>2]|0)+56>>2]|0)+8|0)|0;xJ(c[za>>2]|0,c[ta>>2]|0,5,c[(c[ka+(c[pa>>2]<<2)>>2]|0)+84>>2]|0,Aa);c[pa>>2]=(c[pa>>2]|0)+1}}while(0);c[pa>>2]=c[wa>>2];while(1){if((c[pa>>2]|0)>=(c[ya>>2]|0))break a;vK(c[la+(c[pa>>2]<<2)>>2]|0,Aa);c[pa>>2]=(c[pa>>2]|0)+1}}}while(0);Ai(c[ma+8>>2]|0);c[pa>>2]=0;while(1){if((c[pa>>2]|0)>=(c[ya>>2]|0))break;qB(c[la+(c[pa>>2]<<2)>>2]|0);c[pa>>2]=(c[pa>>2]|0)+1}c[pa>>2]=0;while(1){if((c[pa>>2]|0)>=(c[wa>>2]|0))break;qB(c[ka+(c[pa>>2]<<2)>>2]|0);c[pa>>2]=(c[pa>>2]|0)+1}c[ga>>2]=c[Aa>>2];Ca=c[ga>>2]|0;i=Da;return Ca|0}function xL(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[f>>2]=a;c[g>>2]=d;if(b[(c[(c[f>>2]|0)+12>>2]|0)+(c[g>>2]<<1)>>1]|0){b[e>>1]=b[(c[(c[f>>2]|0)+12>>2]|0)+(c[g>>2]<<1)>>1]|0;a=b[e>>1]|0;i=h;return a|0}else{b[e>>1]=JL(c[f>>2]|0,c[g>>2]|0)|0;a=b[e>>1]|0;i=h;return a|0}return 0}function yL(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;h=f+4|0;g=f;j=f+8|0;c[h>>2]=a;c[g>>2]=d;b[j>>1]=e;b[(c[h>>2]|0)+24>>1]=b[j>>1]|0;AJ(c[h>>2]|0,c[g>>2]|0);i=f;return}function zL(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;D=i;i=i+80|0;o=D+68|0;p=D+64|0;q=D+60|0;r=D+56|0;s=D+52|0;t=D+48|0;u=D+44|0;v=D+40|0;A=D+36|0;z=D+32|0;C=D+28|0;B=D+24|0;w=D+20|0;m=D+16|0;l=D+12|0;n=D+8|0;y=D+4|0;x=D;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=j;c[t>>2]=k;c[u>>2]=c[(c[p>>2]|0)+56>>2];c[v>>2]=d[(c[p>>2]|0)+5>>0];c[A>>2]=(c[(c[p>>2]|0)+64>>2]|0)+(c[s>>2]<<1);c[z>>2]=e[(c[p>>2]|0)+18>>1];c[m>>2]=(c[q>>2]|0)+(e[(c[p>>2]|0)+18>>1]|0)+(d[(c[p>>2]|0)+1>>0]|0);c[l>>2]=(c[r>>2]|0)+(c[s>>2]|0);if((c[q>>2]|0)<(c[r>>2]|0)){c[n>>2]=DL(c[p>>2]|0,c[q>>2]|0,(c[r>>2]|0)-(c[q>>2]|0)|0,c[t>>2]|0)|0;jR(c[(c[p>>2]|0)+64>>2]|0,(c[(c[p>>2]|0)+64>>2]|0)+(c[n>>2]<<1)|0,c[z>>2]<<1|0)|0;c[z>>2]=(c[z>>2]|0)-(c[n>>2]|0)}if((c[l>>2]|0)<(c[m>>2]|0)){f=DL(c[p>>2]|0,c[l>>2]|0,(c[m>>2]|0)-(c[l>>2]|0)|0,c[t>>2]|0)|0;c[z>>2]=(c[z>>2]|0)-f}c[C>>2]=(c[u>>2]|0)+((((d[(c[u>>2]|0)+((c[v>>2]|0)+5)>>0]|0)<<8|(d[(c[u>>2]|0)+((c[v>>2]|0)+5)+1>>0]|0))-1&65535)+1);a:do if((c[C>>2]|0)>>>0>=(c[A>>2]|0)>>>0){if((c[r>>2]|0)<(c[q>>2]|0)){if((c[s>>2]|0)<((c[q>>2]|0)-(c[r>>2]|0)|0))h=c[s>>2]|0;else h=(c[q>>2]|0)-(c[r>>2]|0)|0;c[y>>2]=h;c[B>>2]=c[(c[p>>2]|0)+64>>2];jR((c[B>>2]|0)+(c[y>>2]<<1)|0,c[B>>2]|0,c[z>>2]<<1|0)|0;if(EL(c[p>>2]|0,c[A>>2]|0,C,c[B>>2]|0,c[r>>2]|0,c[y>>2]|0,c[t>>2]|0)|0)break;c[z>>2]=(c[z>>2]|0)+(c[y>>2]|0)}c[w>>2]=0;while(1){if((c[w>>2]|0)>=(d[(c[p>>2]|0)+1>>0]|0|0))break;c[x>>2]=(c[q>>2]|0)+(e[(c[p>>2]|0)+22+(c[w>>2]<<1)>>1]|0)-(c[r>>2]|0);if(((c[x>>2]|0)>=0?(c[x>>2]|0)<(c[s>>2]|0):0)?(c[B>>2]=(c[(c[p>>2]|0)+64>>2]|0)+(c[x>>2]<<1),jR((c[B>>2]|0)+2|0,c[B>>2]|0,(c[z>>2]|0)-(c[x>>2]|0)<<1|0)|0,c[z>>2]=(c[z>>2]|0)+1,(EL(c[p>>2]|0,c[A>>2]|0,C,c[B>>2]|0,(c[x>>2]|0)+(c[r>>2]|0)|0,1,c[t>>2]|0)|0)!=0):0)break a;c[w>>2]=(c[w>>2]|0)+1}c[B>>2]=(c[(c[p>>2]|0)+64>>2]|0)+(c[z>>2]<<1);if(!(EL(c[p>>2]|0,c[A>>2]|0,C,c[B>>2]|0,(c[r>>2]|0)+(c[z>>2]|0)|0,(c[s>>2]|0)-(c[z>>2]|0)|0,c[t>>2]|0)|0)){b[(c[p>>2]|0)+18>>1]=c[s>>2];a[(c[p>>2]|0)+1>>0]=0;a[(c[u>>2]|0)+((c[v>>2]|0)+3)>>0]=(e[(c[p>>2]|0)+18>>1]|0)>>8;a[(c[u>>2]|0)+((c[v>>2]|0)+3)+1>>0]=b[(c[p>>2]|0)+18>>1];a[(c[u>>2]|0)+((c[v>>2]|0)+5)>>0]=(c[C>>2]|0)-(c[u>>2]|0)>>8;a[(c[u>>2]|0)+((c[v>>2]|0)+5)+1>>0]=(c[C>>2]|0)-(c[u>>2]|0);c[o>>2]=0;C=c[o>>2]|0;i=D;return C|0}}while(0);FL(c[t>>2]|0,c[r>>2]|0,c[s>>2]|0);c[o>>2]=GL(c[p>>2]|0,c[s>>2]|0,(c[(c[t>>2]|0)+8>>2]|0)+(c[r>>2]<<2)|0,(c[(c[t>>2]|0)+12>>2]|0)+(c[r>>2]<<1)|0)|0;C=c[o>>2]|0;i=D;return C|0}function AL(b){b=b|0;var f=0,g=0,h=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;y=i;i=i+80|0;f=y+64|0;g=y+60|0;m=y+56|0;r=y+52|0;l=y+48|0;s=y+44|0;v=y+40|0;j=y+36|0;h=y+32|0;p=y+28|0;k=y+24|0;u=y+20|0;t=y+16|0;n=y+12|0;o=y+8|0;q=y+4|0;w=y;c[g>>2]=b;c[u>>2]=0;b=c[(c[g>>2]|0)+56>>2]|0;c[k>>2]=b;c[t>>2]=b;c[l>>2]=d[(c[g>>2]|0)+5>>0];c[j>>2]=e[(c[g>>2]|0)+14>>1];c[p>>2]=e[(c[g>>2]|0)+18>>1];c[v>>2]=c[(c[(c[g>>2]|0)+52>>2]|0)+36>>2];c[h>>2]=c[v>>2];c[n>>2]=(c[j>>2]|0)+(c[p>>2]<<1);c[o>>2]=(c[v>>2]|0)-4;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[p>>2]|0)){x=14;break}c[q>>2]=(c[k>>2]|0)+((c[j>>2]|0)+(c[m>>2]<<1));c[r>>2]=(d[c[q>>2]>>0]|0)<<8|(d[(c[q>>2]|0)+1>>0]|0);if((c[r>>2]|0)<(c[n>>2]|0)){x=5;break}if((c[r>>2]|0)>(c[o>>2]|0)){x=5;break}c[s>>2]=(Yb[c[(c[g>>2]|0)+76>>2]&255](c[g>>2]|0,(c[t>>2]|0)+(c[r>>2]|0)|0)|0)&65535;c[h>>2]=(c[h>>2]|0)-(c[s>>2]|0);if((c[h>>2]|0)<(c[n>>2]|0)){x=8;break}if(((c[r>>2]|0)+(c[s>>2]|0)|0)>(c[v>>2]|0)){x=8;break}a[c[q>>2]>>0]=c[h>>2]>>8;a[(c[q>>2]|0)+1>>0]=c[h>>2];if(!(c[u>>2]|0)){if((c[h>>2]|0)!=(c[r>>2]|0)){c[u>>2]=CL(c[c[(c[g>>2]|0)+52>>2]>>2]|0)|0;c[w>>2]=(d[(c[k>>2]|0)+((c[l>>2]|0)+5)>>0]|0)<<8|(d[(c[k>>2]|0)+((c[l>>2]|0)+5)+1>>0]|0);iR((c[u>>2]|0)+(c[w>>2]|0)|0,(c[k>>2]|0)+(c[w>>2]|0)|0,(c[h>>2]|0)+(c[s>>2]|0)-(c[w>>2]|0)|0)|0;c[t>>2]=c[u>>2];x=12}}else x=12;if((x|0)==12){x=0;iR((c[k>>2]|0)+(c[h>>2]|0)|0,(c[t>>2]|0)+(c[r>>2]|0)|0,c[s>>2]|0)|0}c[m>>2]=(c[m>>2]|0)+1}if((x|0)==5){c[f>>2]=Lj(56934)|0;x=c[f>>2]|0;i=y;return x|0}else if((x|0)==8){c[f>>2]=Lj(56940)|0;x=c[f>>2]|0;i=y;return x|0}else if((x|0)==14){a[(c[k>>2]|0)+((c[l>>2]|0)+5)>>0]=c[h>>2]>>8;a[(c[k>>2]|0)+((c[l>>2]|0)+5)+1>>0]=c[h>>2];a[(c[k>>2]|0)+((c[l>>2]|0)+1)>>0]=0;a[(c[k>>2]|0)+((c[l>>2]|0)+2)>>0]=0;a[(c[k>>2]|0)+((c[l>>2]|0)+7)>>0]=0;kR((c[k>>2]|0)+(c[n>>2]|0)|0,0,(c[h>>2]|0)-(c[n>>2]|0)|0)|0;if(((c[h>>2]|0)-(c[n>>2]|0)|0)!=(e[(c[g>>2]|0)+16>>1]|0|0)){c[f>>2]=Lj(56964)|0;x=c[f>>2]|0;i=y;return x|0}else{c[f>>2]=0;x=c[f>>2]|0;i=y;return x|0}}return 0}function BL(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;h=s+36|0;j=s+32|0;k=s+28|0;q=s+24|0;l=s+20|0;m=s+16|0;o=s+12|0;p=s+8|0;r=s+4|0;n=s;c[h>>2]=b;c[j>>2]=f;c[k>>2]=g;if(c[c[k>>2]>>2]|0){i=s;return}c[q>>2]=c[(c[h>>2]|0)+52>>2];c[l>>2]=c[(c[h>>2]|0)+56>>2];c[m>>2]=c[(c[j>>2]|0)+56>>2];c[o>>2]=d[(c[h>>2]|0)+5>>0];c[p>>2]=(c[(c[j>>2]|0)+84>>2]|0)==1?100:0;c[n>>2]=d[(c[l>>2]|0)+((c[o>>2]|0)+5)>>0]<<8|d[(c[l>>2]|0)+((c[o>>2]|0)+5)+1>>0];iR((c[m>>2]|0)+(c[n>>2]|0)|0,(c[l>>2]|0)+(c[n>>2]|0)|0,(c[(c[q>>2]|0)+36>>2]|0)-(c[n>>2]|0)|0)|0;iR((c[m>>2]|0)+(c[p>>2]|0)|0,(c[l>>2]|0)+(c[o>>2]|0)|0,(e[(c[h>>2]|0)+14>>1]|0)+(e[(c[h>>2]|0)+18>>1]<<1)|0)|0;a[c[j>>2]>>0]=0;c[r>>2]=Kt(c[j>>2]|0)|0;if(c[r>>2]|0){c[c[k>>2]>>2]=c[r>>2];i=s;return}if(!(a[(c[q>>2]|0)+17>>0]|0)){i=s;return}r=wJ(c[j>>2]|0)|0;c[c[k>>2]>>2]=r;i=s;return}function CL(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+208>>2]|0}function DL(a,b,f,g){a=a|0;b=b|0;f=f|0;g=g|0;var h=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;w=i;i=i+64|0;h=w+56|0;j=w+52|0;x=w+48|0;y=w+44|0;k=w+40|0;l=w+36|0;q=w+32|0;s=w+28|0;o=w+24|0;m=w+20|0;n=w+16|0;r=w+12|0;u=w+8|0;p=w+4|0;t=w;c[j>>2]=a;c[x>>2]=b;c[y>>2]=f;c[k>>2]=g;c[l>>2]=c[(c[j>>2]|0)+56>>2];c[q>>2]=(c[l>>2]|0)+(c[(c[(c[j>>2]|0)+52>>2]|0)+36>>2]|0);c[s>>2]=(c[l>>2]|0)+((d[(c[j>>2]|0)+5>>0]|0)+8+(d[(c[j>>2]|0)+6>>0]|0));c[o>>2]=0;c[n>>2]=(c[x>>2]|0)+(c[y>>2]|0);c[r>>2]=0;c[u>>2]=0;c[m>>2]=c[x>>2];while(1){if((c[m>>2]|0)>=(c[n>>2]|0))break;c[p>>2]=c[(c[(c[k>>2]|0)+8>>2]|0)+(c[m>>2]<<2)>>2];if((c[p>>2]|0)>>>0>=(c[s>>2]|0)>>>0?(c[p>>2]|0)>>>0<(c[q>>2]|0)>>>0:0){c[t>>2]=e[(c[(c[k>>2]|0)+12>>2]|0)+(c[m>>2]<<1)>>1];if((c[r>>2]|0)!=((c[p>>2]|0)+(c[t>>2]|0)|0)){if(c[r>>2]|0)IL(c[j>>2]|0,(c[r>>2]|0)-(c[l>>2]|0)&65535,c[u>>2]&65535)|0;c[r>>2]=c[p>>2];c[u>>2]=c[t>>2];if(((c[r>>2]|0)+(c[t>>2]|0)|0)>>>0>(c[q>>2]|0)>>>0){v=9;break}}else{c[r>>2]=c[p>>2];c[u>>2]=(c[u>>2]|0)+(c[t>>2]|0)}c[o>>2]=(c[o>>2]|0)+1}c[m>>2]=(c[m>>2]|0)+1}if((v|0)==9){c[h>>2]=0;y=c[h>>2]|0;i=w;return y|0}if(c[r>>2]|0)IL(c[j>>2]|0,(c[r>>2]|0)-(c[l>>2]|0)&65535,c[u>>2]&65535)|0;c[h>>2]=c[o>>2];y=c[h>>2]|0;i=w;return y|0}function EL(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;y=i;i=i+64|0;l=y+56|0;m=y+52|0;n=y+48|0;o=y+44|0;p=y+40|0;z=y+36|0;A=y+32|0;q=y+28|0;s=y+24|0;r=y+20|0;u=y+16|0;t=y+12|0;x=y+8|0;w=y+4|0;v=y;c[m>>2]=b;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[z>>2]=h;c[A>>2]=j;c[q>>2]=k;c[r>>2]=c[(c[m>>2]|0)+56>>2];c[u>>2]=c[c[o>>2]>>2];c[t>>2]=(c[z>>2]|0)+(c[A>>2]|0);c[s>>2]=c[z>>2];while(1){if((c[s>>2]|0)>=(c[t>>2]|0)){h=10;break}c[x>>2]=(xL(c[q>>2]|0,c[s>>2]|0)|0)&65535;if((d[(c[r>>2]|0)+1>>0]|0|0)==0?(d[(c[r>>2]|0)+2>>0]|0|0)==0:0)h=6;else h=5;if((h|0)==5?(h=0,A=HL(c[m>>2]|0,c[x>>2]|0,w)|0,c[v>>2]=A,(A|0)==0):0)h=6;if((h|0)==6){c[u>>2]=(c[u>>2]|0)+(0-(c[x>>2]|0));if((c[u>>2]|0)>>>0<(c[n>>2]|0)>>>0){h=7;break}c[v>>2]=c[u>>2]}jR(c[v>>2]|0,c[(c[(c[q>>2]|0)+8>>2]|0)+(c[s>>2]<<2)>>2]|0,c[x>>2]|0)|0;a[c[p>>2]>>0]=(c[v>>2]|0)-(c[r>>2]|0)>>8;a[(c[p>>2]|0)+1>>0]=(c[v>>2]|0)-(c[r>>2]|0);c[p>>2]=(c[p>>2]|0)+2;c[s>>2]=(c[s>>2]|0)+1}if((h|0)==7){c[l>>2]=1;A=c[l>>2]|0;i=y;return A|0}else if((h|0)==10){c[c[o>>2]>>2]=c[u>>2];c[l>>2]=0;A=c[l>>2]|0;i=y;return A|0}return 0}function FL(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k+8|0;h=k+4|0;j=k;c[g>>2]=a;c[h>>2]=d;c[j>>2]=f;while(1){if((c[j>>2]|0)<=0)break;if(!(e[(c[(c[g>>2]|0)+12>>2]|0)+(c[h>>2]<<1)>>1]|0)){a=Yb[c[(c[(c[g>>2]|0)+4>>2]|0)+76>>2]&255](c[(c[g>>2]|0)+4>>2]|0,c[(c[(c[g>>2]|0)+8>>2]|0)+(c[h>>2]<<2)>>2]|0)|0;b[(c[(c[g>>2]|0)+12>>2]|0)+(c[h>>2]<<1)>>1]=a}c[h>>2]=(c[h>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+-1}i=k;return}function GL(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var 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;x=i;i=i+64|0;r=x+52|0;s=x+48|0;t=x+44|0;k=x+40|0;l=x+36|0;v=x+32|0;u=x+28|0;y=x+24|0;p=x+20|0;m=x+16|0;o=x+12|0;q=x+8|0;w=x+4|0;n=x;c[s>>2]=f;c[t>>2]=g;c[k>>2]=h;c[l>>2]=j;c[v>>2]=d[(c[s>>2]|0)+5>>0];c[u>>2]=c[(c[s>>2]|0)+56>>2];c[y>>2]=c[(c[(c[s>>2]|0)+52>>2]|0)+36>>2];c[p>>2]=(c[u>>2]|0)+(c[y>>2]|0);c[o>>2]=c[(c[s>>2]|0)+64>>2];c[q>>2]=CL(c[c[(c[s>>2]|0)+52>>2]>>2]|0)|0;c[m>>2]=(d[(c[u>>2]|0)+((c[v>>2]|0)+5)>>0]|0)<<8|(d[(c[u>>2]|0)+((c[v>>2]|0)+5)+1>>0]|0);iR((c[q>>2]|0)+(c[m>>2]|0)|0,(c[u>>2]|0)+(c[m>>2]|0)|0,(c[y>>2]|0)-(c[m>>2]|0)|0)|0;c[w>>2]=c[p>>2];c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[t>>2]|0)){k=9;break}c[n>>2]=c[(c[k>>2]|0)+(c[m>>2]<<2)>>2];if((c[n>>2]|0)>>>0>=(c[u>>2]|0)>>>0?(c[n>>2]|0)>>>0<(c[p>>2]|0)>>>0:0)c[n>>2]=(c[q>>2]|0)+((c[n>>2]|0)-(c[u>>2]|0));c[w>>2]=(c[w>>2]|0)+(0-(e[(c[l>>2]|0)+(c[m>>2]<<1)>>1]|0));a[c[o>>2]>>0]=(c[w>>2]|0)-(c[u>>2]|0)>>8;a[(c[o>>2]|0)+1>>0]=(c[w>>2]|0)-(c[u>>2]|0);c[o>>2]=(c[o>>2]|0)+2;if((c[w>>2]|0)>>>0<(c[o>>2]|0)>>>0){k=7;break}iR(c[w>>2]|0,c[n>>2]|0,e[(c[l>>2]|0)+(c[m>>2]<<1)>>1]|0|0)|0;c[m>>2]=(c[m>>2]|0)+1}if((k|0)==7){c[r>>2]=Lj(62048)|0;y=c[r>>2]|0;i=x;return y|0}else if((k|0)==9){b[(c[s>>2]|0)+18>>1]=c[t>>2];a[(c[s>>2]|0)+1>>0]=0;a[(c[u>>2]|0)+((c[v>>2]|0)+1)>>0]=0;a[(c[u>>2]|0)+((c[v>>2]|0)+1)+1>>0]=0;a[(c[u>>2]|0)+((c[v>>2]|0)+3)>>0]=(e[(c[s>>2]|0)+18>>1]|0)>>8;a[(c[u>>2]|0)+((c[v>>2]|0)+3)+1>>0]=b[(c[s>>2]|0)+18>>1];a[(c[u>>2]|0)+((c[v>>2]|0)+5)>>0]=(c[w>>2]|0)-(c[u>>2]|0)>>8;a[(c[u>>2]|0)+((c[v>>2]|0)+5)+1>>0]=(c[w>>2]|0)-(c[u>>2]|0);a[(c[u>>2]|0)+((c[v>>2]|0)+7)>>0]=0;c[r>>2]=0;y=c[r>>2]|0;i=x;return y|0}return 0}function HL(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;j=t+40|0;k=t+36|0;h=t+32|0;l=t+28|0;n=t+24|0;m=t+20|0;o=t+16|0;p=t+12|0;s=t+8|0;r=t+4|0;q=t;c[k>>2]=b;c[h>>2]=f;c[l>>2]=g;c[n>>2]=d[(c[k>>2]|0)+5>>0];c[m>>2]=c[(c[k>>2]|0)+56>>2];c[o>>2]=(c[n>>2]|0)+1;c[p>>2]=(d[(c[m>>2]|0)+(c[o>>2]|0)>>0]|0)<<8|(d[(c[m>>2]|0)+(c[o>>2]|0)+1>>0]|0);c[r>>2]=c[(c[(c[k>>2]|0)+52>>2]|0)+36>>2];while(1){if((c[p>>2]|0)>((c[r>>2]|0)-4|0)){f=4;break}if((c[p>>2]|0)<((c[o>>2]|0)+4|0)){f=4;break}c[q>>2]=(d[(c[m>>2]|0)+((c[p>>2]|0)+2)>>0]|0)<<8|(d[(c[m>>2]|0)+((c[p>>2]|0)+2)+1>>0]|0);g=(c[q>>2]|0)-(c[h>>2]|0)|0;c[s>>2]=g;b=c[p>>2]|0;if((g|0)>=0){f=6;break}c[o>>2]=b;c[p>>2]=(d[(c[m>>2]|0)+(c[p>>2]|0)>>0]|0)<<8|(d[(c[m>>2]|0)+(c[p>>2]|0)+1>>0]|0);if(!(c[p>>2]|0)){f=16;break}}if((f|0)==4){s=Lj(56997)|0;c[c[l>>2]>>2]=s;c[j>>2]=0;s=c[j>>2]|0;i=t;return s|0}else if((f|0)==6){if((b|0)>=((e[(c[k>>2]|0)+14>>1]|0)+((e[(c[k>>2]|0)+18>>1]|0)<<1)|0)?((c[q>>2]|0)+(c[p>>2]|0)|0)<=(c[r>>2]|0):0){do if((c[s>>2]|0)<4){if((d[(c[m>>2]|0)+((c[n>>2]|0)+7)>>0]|0|0)<=57){r=(c[m>>2]|0)+(c[o>>2]|0)|0;q=(c[m>>2]|0)+(c[p>>2]|0)|0;a[r>>0]=a[q>>0]|0;a[r+1>>0]=a[q+1>>0]|0;r=(c[m>>2]|0)+((c[n>>2]|0)+7)|0;a[r>>0]=(d[r>>0]|0)+(c[s>>2]&255);break}c[j>>2]=0;s=c[j>>2]|0;i=t;return s|0}else{a[(c[m>>2]|0)+((c[p>>2]|0)+2)>>0]=c[s>>2]>>8;a[(c[m>>2]|0)+((c[p>>2]|0)+2)+1>>0]=c[s>>2]}while(0);c[j>>2]=(c[m>>2]|0)+((c[p>>2]|0)+(c[s>>2]|0));s=c[j>>2]|0;i=t;return s|0}s=Lj(57008)|0;c[c[l>>2]>>2]=s;c[j>>2]=0;s=c[j>>2]|0;i=t;return s|0}else if((f|0)==16){c[j>>2]=0;s=c[j>>2]|0;i=t;return s|0}return 0}function IL(f,g,h){f=f|0;g=g|0;h=h|0;var 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;x=i;i=i+48|0;j=x+20|0;k=x+16|0;l=x+32|0;m=x+30|0;t=x+28|0;q=x+26|0;o=x+35|0;v=x+34|0;s=x+24|0;r=x+12|0;p=x+8|0;n=x+4|0;u=x;c[k>>2]=f;b[l>>1]=g;b[m>>1]=h;a[v>>0]=0;b[s>>1]=b[m>>1]|0;c[r>>2]=(c[(c[(c[k>>2]|0)+52>>2]|0)+36>>2]|0)-4;c[p>>2]=(e[l>>1]|0)+(e[m>>1]|0);c[n>>2]=c[(c[k>>2]|0)+56>>2];if((e[(c[(c[k>>2]|0)+52>>2]|0)+22>>1]|0)&4)kR((c[n>>2]|0)+(e[l>>1]|0)|0,0,e[m>>1]|0|0)|0;a[o>>0]=a[(c[k>>2]|0)+5>>0]|0;b[t>>1]=(d[o>>0]|0)+1;if((d[(c[n>>2]|0)+((e[t>>1]|0)+1)>>0]|0|0)==0?(d[(c[n>>2]|0)+(e[t>>1]|0)>>0]|0|0)==0:0)b[q>>1]=0;else w=6;do if((w|0)==6){while(1){w=0;f=((d[(c[n>>2]|0)+(e[t>>1]|0)>>0]|0)<<8|(d[(c[n>>2]|0)+(e[t>>1]|0)+1>>0]|0))&65535;b[q>>1]=f;if((f&65535|0)>0)h=(e[q>>1]|0|0)<(e[l>>1]|0|0);else h=0;g=e[q>>1]|0;if(!h)break;if((g|0)<((e[t>>1]|0)+4|0)){w=10;break}b[t>>1]=b[q>>1]|0;w=6}if((w|0)==10){c[j>>2]=Lj(57169)|0;w=c[j>>2]|0;i=x;return w|0}if(g>>>0>(c[r>>2]|0)>>>0){c[j>>2]=Lj(57172)|0;w=c[j>>2]|0;i=x;return w|0}do if((e[q>>1]|0|0)!=0?((c[p>>2]|0)+3|0)>>>0>=(e[q>>1]|0)>>>0:0){a[v>>0]=(e[q>>1]|0)-(c[p>>2]|0);if((c[p>>2]|0)>>>0>(e[q>>1]|0)>>>0){c[j>>2]=Lj(57183)|0;w=c[j>>2]|0;i=x;return w|0}c[p>>2]=(e[q>>1]|0)+((d[(c[n>>2]|0)+((e[q>>1]|0)+2)>>0]|0)<<8|(d[(c[n>>2]|0)+((e[q>>1]|0)+2)+1>>0]|0));if((c[p>>2]|0)>>>0<=(c[(c[(c[k>>2]|0)+52>>2]|0)+36>>2]|0)>>>0){b[m>>1]=(c[p>>2]|0)-(e[l>>1]|0);b[q>>1]=(d[(c[n>>2]|0)+(e[q>>1]|0)>>0]|0)<<8|(d[(c[n>>2]|0)+(e[q>>1]|0)+1>>0]|0);break}c[j>>2]=Lj(57185)|0;w=c[j>>2]|0;i=x;return w|0}while(0);do if((e[t>>1]|0|0)>((d[o>>0]|0)+1|0)?(c[u>>2]=(e[t>>1]|0)+((d[(c[n>>2]|0)+((e[t>>1]|0)+2)>>0]|0)<<8|(d[(c[n>>2]|0)+((e[t>>1]|0)+2)+1>>0]|0)),((c[u>>2]|0)+3|0)>=(e[l>>1]|0|0)):0){if((c[u>>2]|0)<=(e[l>>1]|0|0)){a[v>>0]=(d[v>>0]|0)+((e[l>>1]|0)-(c[u>>2]|0));b[m>>1]=(c[p>>2]|0)-(e[t>>1]|0);b[l>>1]=b[t>>1]|0;break}c[j>>2]=Lj(57197)|0;w=c[j>>2]|0;i=x;return w|0}while(0);if((d[v>>0]|0|0)<=(d[(c[n>>2]|0)+((d[o>>0]|0)+7)>>0]|0|0)){w=(c[n>>2]|0)+((d[o>>0]|0)+7)|0;a[w>>0]=(d[w>>0]|0)-(d[v>>0]|0);break}c[j>>2]=Lj(57203)|0;w=c[j>>2]|0;i=x;return w|0}while(0);do if((e[l>>1]|0|0)==((d[(c[n>>2]|0)+((d[o>>0]|0)+5)>>0]|0)<<8|(d[(c[n>>2]|0)+((d[o>>0]|0)+5)+1>>0]|0)|0)){if((e[t>>1]|0|0)==((d[o>>0]|0)+1|0)){a[(c[n>>2]|0)+((d[o>>0]|0)+1)>>0]=(e[q>>1]|0)>>8;a[(c[n>>2]|0)+((d[o>>0]|0)+1)+1>>0]=b[q>>1];a[(c[n>>2]|0)+((d[o>>0]|0)+5)>>0]=(c[p>>2]|0)>>>8;a[(c[n>>2]|0)+((d[o>>0]|0)+5)+1>>0]=c[p>>2];break}c[j>>2]=Lj(57210)|0;w=c[j>>2]|0;i=x;return w|0}else{a[(c[n>>2]|0)+(e[t>>1]|0)>>0]=(e[l>>1]|0)>>8;a[(c[n>>2]|0)+(e[t>>1]|0)+1>>0]=b[l>>1];a[(c[n>>2]|0)+(e[l>>1]|0)>>0]=(e[q>>1]|0)>>8;a[(c[n>>2]|0)+(e[l>>1]|0)+1>>0]=b[q>>1];a[(c[n>>2]|0)+((e[l>>1]|0)+2)>>0]=(e[m>>1]|0)>>8;a[(c[n>>2]|0)+((e[l>>1]|0)+2)+1>>0]=b[m>>1]}while(0);w=(c[k>>2]|0)+16|0;b[w>>1]=(e[w>>1]|0)+(e[s>>1]|0);c[j>>2]=0;w=c[j>>2]|0;i=x;return w|0}function JL(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;f=g+4|0;e=g;c[f>>2]=a;c[e>>2]=d;a=Yb[c[(c[(c[f>>2]|0)+4>>2]|0)+76>>2]&255](c[(c[f>>2]|0)+4>>2]|0,c[(c[(c[f>>2]|0)+8>>2]|0)+(c[e>>2]<<2)>>2]|0)|0;b[(c[(c[f>>2]|0)+12>>2]|0)+(c[e>>2]<<1)>>1]=a;i=g;return b[(c[(c[f>>2]|0)+12>>2]|0)+(c[e>>2]<<1)>>1]|0}function KL(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;h=t+36|0;j=t+32|0;k=t+28|0;l=t+24|0;o=t+20|0;m=t+16|0;r=t+12|0;q=t+8|0;n=t+4|0;p=t;c[j>>2]=b;c[k>>2]=f;c[l>>2]=g;c[o>>2]=d[(c[j>>2]|0)+5>>0];c[m>>2]=c[(c[j>>2]|0)+56>>2];c[q>>2]=0;c[n>>2]=(e[(c[j>>2]|0)+14>>1]|0)+((e[(c[j>>2]|0)+18>>1]|0)<<1);c[r>>2]=(d[(c[m>>2]|0)+((c[o>>2]|0)+5)>>0]|0)<<8|(d[(c[m>>2]|0)+((c[o>>2]|0)+5)+1>>0]|0);do if((c[n>>2]|0)>(c[r>>2]|0)){if((c[r>>2]|0)==0?(c[(c[(c[j>>2]|0)+52>>2]|0)+36>>2]|0)==65536:0){c[r>>2]=65536;break}c[h>>2]=Lj(57075)|0;s=c[h>>2]|0;i=t;return s|0}while(0);if(!((d[(c[m>>2]|0)+((c[o>>2]|0)+2)>>0]|0|0)==0?(d[(c[m>>2]|0)+((c[o>>2]|0)+1)>>0]|0|0)==0:0))s=8;if((s|0)==8?((c[n>>2]|0)+2|0)<=(c[r>>2]|0):0){c[p>>2]=HL(c[j>>2]|0,c[k>>2]|0,q)|0;if(c[p>>2]|0){c[c[l>>2]>>2]=(c[p>>2]|0)-(c[m>>2]|0);c[h>>2]=0;s=c[h>>2]|0;i=t;return s|0}if(c[q>>2]|0){c[h>>2]=c[q>>2];s=c[h>>2]|0;i=t;return s|0}}do if(((c[n>>2]|0)+2+(c[k>>2]|0)|0)>(c[r>>2]|0)){c[q>>2]=AL(c[j>>2]|0)|0;if(!(c[q>>2]|0)){c[r>>2]=(((d[(c[m>>2]|0)+((c[o>>2]|0)+5)>>0]|0)<<8|(d[(c[m>>2]|0)+((c[o>>2]|0)+5)+1>>0]|0))-1&65535)+1;break}c[h>>2]=c[q>>2];s=c[h>>2]|0;i=t;return s|0}while(0);c[r>>2]=(c[r>>2]|0)-(c[k>>2]|0);a[(c[m>>2]|0)+((c[o>>2]|0)+5)>>0]=c[r>>2]>>8;a[(c[m>>2]|0)+((c[o>>2]|0)+5)+1>>0]=c[r>>2];c[c[l>>2]>>2]=c[r>>2];c[h>>2]=0;s=c[h>>2]|0;i=t;return s|0}function LL(b,f,g,h,j,k,l,m,n){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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,H=0,I=0,J=0,K=0,L=0,M=0,N=0;M=i;i=i+112|0;J=M+96|0;p=M+92|0;q=M+88|0;r=M+84|0;s=M;t=M+80|0;u=M+76|0;N=M+72|0;o=M+68|0;z=M+64|0;F=M+60|0;A=M+56|0;x=M+52|0;L=M+48|0;I=M+44|0;C=M+40|0;K=M+36|0;E=M+32|0;D=M+28|0;B=M+24|0;G=M+20|0;y=M+16|0;w=M+12|0;H=M+8|0;v=M+100|0;c[p>>2]=b;c[q>>2]=f;c[r>>2]=g;b=s;c[b>>2]=h;c[b+4>>2]=j;c[t>>2]=k;c[u>>2]=l;c[N>>2]=m;c[o>>2]=n;c[C>>2]=0;c[K>>2]=0;c[B>>2]=c[(c[p>>2]|0)+52>>2];c[G>>2]=0;c[y>>2]=d[(c[p>>2]|0)+6>>0];c[z>>2]=(c[u>>2]|0)+(c[N>>2]|0);if(a[(c[p>>2]|0)+3>>0]|0){if((c[z>>2]|0)>>>0<128){a[(c[q>>2]|0)+(c[y>>2]|0)>>0]=c[z>>2];h=1}else{h=c[z>>2]|0;h=kI((c[q>>2]|0)+(c[y>>2]|0)|0,h,((h|0)<0)<<31>>31)|0}c[y>>2]=(c[y>>2]|0)+(h&255)}N=s;N=kI((c[q>>2]|0)+(c[y>>2]|0)|0,c[N>>2]|0,c[N+4>>2]|0)|0;c[y>>2]=(c[y>>2]|0)+N;if(a[(c[p>>2]|0)+2>>0]|0){c[F>>2]=c[t>>2];c[A>>2]=c[u>>2];c[u>>2]=0}else{c[z>>2]=c[s>>2];c[F>>2]=c[r>>2];c[A>>2]=c[s>>2]}if((c[z>>2]|0)<=(e[(c[p>>2]|0)+10>>1]|0)){N=(c[y>>2]|0)+(c[z>>2]|0)|0;c[x>>2]=N;c[x>>2]=(c[x>>2]|0)<4?4:N; -c[c[o>>2]>>2]=c[x>>2];c[I>>2]=c[z>>2];c[E>>2]=c[q>>2]}else{c[w>>2]=e[(c[p>>2]|0)+12>>1];c[x>>2]=(c[w>>2]|0)+((((c[z>>2]|0)-(c[w>>2]|0)|0)>>>0)%(((c[(c[(c[p>>2]|0)+52>>2]|0)+36>>2]|0)-4|0)>>>0)|0);if((c[x>>2]|0)>(e[(c[p>>2]|0)+10>>1]|0))c[x>>2]=c[w>>2];c[I>>2]=c[x>>2];c[c[o>>2]>>2]=(c[x>>2]|0)+(c[y>>2]|0)+4;c[E>>2]=(c[q>>2]|0)+((c[y>>2]|0)+(c[x>>2]|0))}c[D>>2]=(c[q>>2]|0)+(c[y>>2]|0);while(1){if((c[z>>2]|0)<=0){h=35;break}if(!(c[I>>2]|0)){c[H>>2]=c[G>>2];if(a[(c[B>>2]|0)+17>>0]|0)while(1){c[G>>2]=(c[G>>2]|0)+1;N=lF(c[B>>2]|0,c[G>>2]|0)|0;if((N|0)==(c[G>>2]|0))continue;if((c[G>>2]|0)!=((((c[381]|0)>>>0)/((c[(c[B>>2]|0)+32>>2]|0)>>>0)|0)+1|0))break}c[L>>2]=tJ(c[B>>2]|0,C,G,c[G>>2]|0,0)|0;if(((c[L>>2]|0)==0?(d[(c[B>>2]|0)+17>>0]|0)!=0:0)?(a[v>>0]=(c[H>>2]|0)!=0?4:3,xJ(c[B>>2]|0,c[G>>2]|0,a[v>>0]|0,c[H>>2]|0,L),(c[L>>2]|0)!=0):0)qB(c[C>>2]|0);if(c[L>>2]|0){h=24;break}Xs(c[E>>2]|0,c[G>>2]|0);qB(c[K>>2]|0);c[K>>2]=c[C>>2];c[E>>2]=c[(c[C>>2]|0)+56>>2];Xs(c[E>>2]|0,0);c[D>>2]=(c[(c[C>>2]|0)+56>>2]|0)+4;c[I>>2]=(c[(c[B>>2]|0)+36>>2]|0)-4}c[x>>2]=c[z>>2];if((c[x>>2]|0)>(c[I>>2]|0))c[x>>2]=c[I>>2];if((c[A>>2]|0)>0){if((c[x>>2]|0)>(c[A>>2]|0))c[x>>2]=c[A>>2];iR(c[D>>2]|0,c[F>>2]|0,c[x>>2]|0)|0}else kR(c[D>>2]|0,0,c[x>>2]|0)|0;c[z>>2]=(c[z>>2]|0)-(c[x>>2]|0);c[D>>2]=(c[D>>2]|0)+(c[x>>2]|0);c[F>>2]=(c[F>>2]|0)+(c[x>>2]|0);c[A>>2]=(c[A>>2]|0)-(c[x>>2]|0);c[I>>2]=(c[I>>2]|0)-(c[x>>2]|0);if(c[A>>2]|0)continue;c[A>>2]=c[u>>2];c[F>>2]=c[t>>2]}if((h|0)==24){qB(c[K>>2]|0);c[J>>2]=c[L>>2];N=c[J>>2]|0;i=M;return N|0}else if((h|0)==35){qB(c[K>>2]|0);c[J>>2]=0;N=c[J>>2]|0;i=M;return N|0}return 0}function ML(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=c[(c[e>>2]|0)+16>>2];if(!(c[f>>2]|0)){i=g;return}RI(c[d>>2]|0,c[f>>2]|0);Kd(c[(c[f>>2]|0)+36+4>>2]|0);Sf(c[d>>2]|0,c[f>>2]|0);c[(c[e>>2]|0)+16>>2]=0;i=g;return}function NL(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=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;u=i;i=i+64|0;g=u+44|0;h=u+40|0;j=u+36|0;k=u+32|0;n=u+28|0;p=u+24|0;r=u+20|0;t=u+16|0;s=u+12|0;q=u+8|0;o=u+4|0;l=u+48|0;m=u;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[n>>2]=c[(c[h>>2]|0)+4>>2];f=c[n>>2]|0;if(a[(c[n>>2]|0)+17>>0]|0){rJ(f);ng(c[h>>2]|0,4,r);c[r>>2]=(c[r>>2]|0)+1;while(1){e=c[r>>2]|0;if((e|0)!=(lF(c[n>>2]|0,c[r>>2]|0)|0)?(c[r>>2]|0)!=((((c[381]|0)>>>0)/((c[(c[n>>2]|0)+32>>2]|0)>>>0)|0)+1|0):0)break;c[r>>2]=(c[r>>2]|0)+1}c[t>>2]=tJ(c[n>>2]|0,o,q,c[r>>2]|0,1)|0;if(c[t>>2]|0){c[g>>2]=c[t>>2];t=c[g>>2]|0;i=u;return t|0}if((c[q>>2]|0)!=(c[r>>2]|0)){a[l>>0]=0;c[m>>2]=0;c[t>>2]=nH(c[n>>2]|0,0,0)|0;qB(c[o>>2]|0);if(c[t>>2]|0){c[g>>2]=c[t>>2];t=c[g>>2]|0;i=u;return t|0}c[t>>2]=nF(c[n>>2]|0,c[r>>2]|0,p,0)|0;if(c[t>>2]|0){c[g>>2]=c[t>>2];t=c[g>>2]|0;i=u;return t|0}c[t>>2]=mF(c[n>>2]|0,c[r>>2]|0,l,m)|0;if(!((d[l>>0]|0)!=1?(d[l>>0]|0)!=2:0))c[t>>2]=Lj(63920)|0;if(c[t>>2]|0){qB(c[p>>2]|0);c[g>>2]=c[t>>2];t=c[g>>2]|0;i=u;return t|0}c[t>>2]=uJ(c[n>>2]|0,c[p>>2]|0,a[l>>0]|0,c[m>>2]|0,c[q>>2]|0,0)|0;qB(c[p>>2]|0);if(c[t>>2]|0){c[g>>2]=c[t>>2];t=c[g>>2]|0;i=u;return t|0}c[t>>2]=nF(c[n>>2]|0,c[r>>2]|0,p,0)|0;if(c[t>>2]|0){c[g>>2]=c[t>>2];t=c[g>>2]|0;i=u;return t|0}c[t>>2]=Dg(c[(c[p>>2]|0)+72>>2]|0)|0;if(c[t>>2]|0){qB(c[p>>2]|0);c[g>>2]=c[t>>2];t=c[g>>2]|0;i=u;return t|0}}else c[p>>2]=c[o>>2];xJ(c[n>>2]|0,c[r>>2]|0,1,0,t);if(c[t>>2]|0){qB(c[p>>2]|0);c[g>>2]=c[t>>2];t=c[g>>2]|0;i=u;return t|0}c[t>>2]=yg(c[h>>2]|0,4,c[r>>2]|0)|0;if(c[t>>2]|0){qB(c[p>>2]|0);c[g>>2]=c[t>>2];t=c[g>>2]|0;i=u;return t|0}}else{c[t>>2]=tJ(f,p,r,1,0)|0;if(c[t>>2]|0){c[g>>2]=c[t>>2];t=c[g>>2]|0;i=u;return t|0}}if(c[k>>2]&1)c[s>>2]=13;else c[s>>2]=10;wK(c[p>>2]|0,c[s>>2]|0);vg(c[(c[p>>2]|0)+72>>2]|0);c[c[j>>2]>>2]=c[r>>2];c[g>>2]=0;t=c[g>>2]|0;i=u;return t|0}function OL(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+32|0;j=r+28|0;k=r+24|0;l=r+20|0;m=r+16|0;n=r+12|0;o=r+8|0;p=r+4|0;q=r;c[k>>2]=b;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=c[(c[k>>2]|0)+4>>2];if((c[m>>2]|0)!=0?(PL(c[p>>2]|0),(c[(c[p>>2]|0)+80>>2]|0)==0):0){c[j>>2]=7;f=c[j>>2]|0;i=r;return f|0}if((c[l>>2]|0)==1?($E(c[p>>2]|0)|0)==0:0)c[l>>2]=0;c[(c[o>>2]|0)+52>>2]=c[l>>2];a[(c[o>>2]|0)+68>>0]=-1;c[(c[o>>2]|0)+72>>2]=c[n>>2];c[c[o>>2]>>2]=c[k>>2];c[(c[o>>2]|0)+4>>2]=c[p>>2];a[(c[o>>2]|0)+64>>0]=(c[m>>2]|0)!=0?1:0;a[(c[o>>2]|0)+65>>0]=(c[m>>2]|0)!=0?0:2;c[q>>2]=c[(c[p>>2]|0)+8>>2];while(1){if(!(c[q>>2]|0))break;if((c[(c[q>>2]|0)+52>>2]|0)==(c[l>>2]|0)){f=(c[q>>2]|0)+64|0;a[f>>0]=d[f>>0]|0|32;f=(c[o>>2]|0)+64|0;a[f>>0]=d[f>>0]|0|32}c[q>>2]=c[(c[q>>2]|0)+8>>2]}c[(c[o>>2]|0)+8>>2]=c[(c[p>>2]|0)+8>>2];c[(c[p>>2]|0)+8>>2]=c[o>>2];a[(c[o>>2]|0)+66>>0]=0;c[j>>2]=0;f=c[j>>2]|0;i=r;return f|0}function PL(b){b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=b;if(c[(c[d>>2]|0)+80>>2]|0){i=e;return}b=Ti(c[(c[d>>2]|0)+32>>2]|0)|0;c[(c[d>>2]|0)+80>>2]=b;if(!(c[(c[d>>2]|0)+80>>2]|0)){i=e;return}b=c[(c[d>>2]|0)+80>>2]|0;a[b>>0]=0;a[b+1>>0]=0;a[b+2>>0]=0;a[b+3>>0]=0;a[b+4>>0]=0;a[b+5>>0]=0;a[b+6>>0]=0;a[b+7>>0]=0;b=(c[d>>2]|0)+80|0;c[b>>2]=(c[b>>2]|0)+4;i=e;return}function QL(){return 200}function RL(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;a=c[b>>2]|0;b=a+68|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));i=d;return}function SL(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[f>>2]=a;c[g>>2]=b;if((c[g>>2]|0)>(c[(c[f>>2]|0)+104>>2]|0)?(d[(c[f>>2]|0)+6>>0]|0|0)!=0:0){c[e>>2]=TL(c[f>>2]|0,c[g>>2]|0)|0;a=c[e>>2]|0;i=h;return a|0}c[e>>2]=0;a=c[e>>2]|0;i=h;return a|0}function TL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;j=l+24|0;d=l+20|0;e=l+16|0;k=l+12|0;h=l+8|0;g=l+4|0;f=l;c[d>>2]=a;c[e>>2]=b;c[k>>2]=0;c[h>>2]=c[(c[d>>2]|0)+104>>2];c[f>>2]=bg(c[(c[d>>2]|0)+100>>2]|0,(c[e>>2]|0)*48|0,0)|0;if(!(c[f>>2]|0)){c[j>>2]=7;k=c[j>>2]|0;i=l;return k|0}kR((c[f>>2]|0)+((c[h>>2]|0)*48|0)|0,0,((c[e>>2]|0)-(c[h>>2]|0)|0)*48|0)|0;c[(c[d>>2]|0)+100>>2]=c[f>>2];c[g>>2]=c[h>>2];while(1){if((c[g>>2]|0)>=(c[e>>2]|0)){d=14;break}c[(c[f>>2]|0)+((c[g>>2]|0)*48|0)+20>>2]=c[(c[d>>2]|0)+28>>2];if((c[c[(c[d>>2]|0)+68>>2]>>2]|0)!=0?(a=(c[d>>2]|0)+80|0,b=c[a+4>>2]|0,(b|0)>0|(b|0)==0&(c[a>>2]|0)>>>0>0):0){h=(c[d>>2]|0)+80|0;b=c[h+4>>2]|0;a=(c[f>>2]|0)+((c[g>>2]|0)*48|0)|0;c[a>>2]=c[h>>2];c[a+4>>2]=b}else{a=(c[f>>2]|0)+((c[g>>2]|0)*48|0)|0;c[a>>2]=c[(c[d>>2]|0)+156>>2];c[a+4>>2]=0}c[(c[f>>2]|0)+((c[g>>2]|0)*48|0)+24>>2]=c[(c[d>>2]|0)+56>>2];a=fj(c[(c[d>>2]|0)+28>>2]|0)|0;c[(c[f>>2]|0)+((c[g>>2]|0)*48|0)+16>>2]=a;if(!(c[(c[f>>2]|0)+((c[g>>2]|0)*48|0)+16>>2]|0)){d=10;break}if(sr(c[d>>2]|0)|0)UL(c[(c[d>>2]|0)+216>>2]|0,(c[f>>2]|0)+((c[g>>2]|0)*48|0)+28|0);c[(c[d>>2]|0)+104>>2]=(c[g>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+1}if((d|0)==10){c[j>>2]=7;k=c[j>>2]|0;i=l;return k|0}else if((d|0)==14){c[j>>2]=c[k>>2];k=c[j>>2]|0;i=l;return k|0}return 0}function UL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;c[c[e>>2]>>2]=c[(c[f>>2]|0)+52+16>>2];c[(c[e>>2]|0)+4>>2]=c[(c[f>>2]|0)+52+24>>2];c[(c[e>>2]|0)+8>>2]=c[(c[f>>2]|0)+52+24+4>>2];c[(c[e>>2]|0)+12>>2]=c[(c[f>>2]|0)+112>>2];i=d;return}function VL(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;j=n+16|0;k=n+12|0;m=n+8|0;l=n+4|0;g=n;c[k>>2]=f;if((c[(c[k>>2]|0)+44>>2]|0)>>>0>0){c[j>>2]=0;m=c[j>>2]|0;i=n;return m|0}c[m>>2]=c[(c[k>>2]|0)+12>>2];c[l>>2]=c[(c[m>>2]|0)+56>>2];c[g>>2]=Dg(c[(c[m>>2]|0)+72>>2]|0)|0;if(c[g>>2]|0){c[j>>2]=c[g>>2];m=c[j>>2]|0;i=n;return m|0}else{f=c[l>>2]|0;g=43252;h=f+16|0;do{a[f>>0]=a[g>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));a[(c[l>>2]|0)+16>>0]=(c[(c[k>>2]|0)+32>>2]|0)>>>8;a[(c[l>>2]|0)+17>>0]=(c[(c[k>>2]|0)+32>>2]|0)>>>16;a[(c[l>>2]|0)+18>>0]=1;a[(c[l>>2]|0)+19>>0]=1;a[(c[l>>2]|0)+20>>0]=(c[(c[k>>2]|0)+32>>2]|0)-(c[(c[k>>2]|0)+36>>2]|0);a[(c[l>>2]|0)+21>>0]=64;a[(c[l>>2]|0)+22>>0]=32;a[(c[l>>2]|0)+23>>0]=32;f=(c[l>>2]|0)+24|0;h=f+76|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(h|0));wK(c[m>>2]|0,13);m=(c[k>>2]|0)+22|0;b[m>>1]=e[m>>1]|0|2;Xs((c[l>>2]|0)+52|0,d[(c[k>>2]|0)+17>>0]|0);Xs((c[l>>2]|0)+64|0,d[(c[k>>2]|0)+18>>0]|0);c[(c[k>>2]|0)+44>>2]=1;a[(c[l>>2]|0)+31>>0]=1;c[j>>2]=0;m=c[j>>2]|0;i=n;return m|0}return 0}function WL(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;g=o+24|0;h=o+20|0;j=o;l=o+16|0;m=o+12|0;n=o+8|0;k=o+28|0;c[h>>2]=b;b=j;c[b>>2]=e;c[b+4>>2]=f;if(0!=0?1:(c[j+4>>2]&-16777216|0)!=0){a[(c[h>>2]|0)+8>>0]=c[j>>2];n=j;n=hR(c[n>>2]|0,c[n+4>>2]|0,8)|0;b=j;c[b>>2]=n;c[b+4>>2]=C;c[l>>2]=7;while(1){if((c[l>>2]|0)<0)break;a[(c[h>>2]|0)+(c[l>>2]|0)>>0]=c[j>>2]&127|128;n=j;n=hR(c[n>>2]|0,c[n+4>>2]|0,7)|0;b=j;c[b>>2]=n;c[b+4>>2]=C;c[l>>2]=(c[l>>2]|0)+-1}c[g>>2]=9;b=c[g>>2]|0;i=o;return b|0}c[n>>2]=0;do{b=(c[j>>2]&127|128)&255;f=c[n>>2]|0;c[n>>2]=f+1;a[k+f>>0]=b;f=j;f=hR(c[f>>2]|0,c[f+4>>2]|0,7)|0;b=j;c[b>>2]=f;c[b+4>>2]=C;b=j}while((c[b>>2]|0)!=0|(c[b+4>>2]|0)!=0);a[k>>0]=(d[k>>0]|0)&127;c[l>>2]=0;c[m>>2]=(c[n>>2]|0)-1;while(1){if((c[m>>2]|0)<0)break;a[(c[h>>2]|0)+(c[l>>2]|0)>>0]=a[k+(c[m>>2]|0)>>0]|0;c[m>>2]=(c[m>>2]|0)+-1;c[l>>2]=(c[l>>2]|0)+1}c[g>>2]=c[n>>2];b=c[g>>2]|0;i=o;return b|0}function XL(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;j=p+20|0;k=p+16|0;l=p+12|0;m=p+8|0;n=p+4|0;o=p;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;b[(c[n>>2]|0)+8>>1]=1;h=tx(c[n>>2]|0,(c[l>>2]|0)+2|0)|0;c[o>>2]=h;if(h){o=c[o>>2]|0;i=p;return o|0}e=c[j>>2]|0;j=c[k>>2]|0;f=c[l>>2]|0;g=c[(c[n>>2]|0)+16>>2]|0;if(c[m>>2]|0)c[o>>2]=tH(e,j,f,g)|0;else c[o>>2]=Mh(e,j,f,g)|0;if(!(c[o>>2]|0)){a[(c[(c[n>>2]|0)+16>>2]|0)+(c[l>>2]|0)>>0]=0;a[(c[(c[n>>2]|0)+16>>2]|0)+((c[l>>2]|0)+1)>>0]=0;b[(c[n>>2]|0)+8>>1]=528;c[(c[n>>2]|0)+12>>2]=c[l>>2];o=c[o>>2]|0;i=p;return o|0}else{Ug(c[n>>2]|0);o=c[o>>2]|0;i=p;return o|0}return 0}function YL(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[g>>2]=d;c[h>>2]=(c[(c[(c[f>>2]|0)+120+(a[(c[f>>2]|0)+68>>0]<<2)>>2]|0)+60>>2]|0)-(c[(c[f>>2]|0)+16+8>>2]|0);if((e[(c[f>>2]|0)+16+16>>1]|0)>>>0<(c[h>>2]|0)>>>0)c[h>>2]=e[(c[f>>2]|0)+16+16>>1];c[c[g>>2]>>2]=c[h>>2];i=j;return c[(c[f>>2]|0)+16+8>>2]|0}function ZL(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;g=h+4|0;f=h;c[e>>2]=b;b=(c[e>>2]|0)+40|0;c[f>>2]=eF(c[(c[e>>2]|0)+16>>2]|0,0,c[b>>2]|0,c[b+4>>2]|0,0,g)|0;if(c[f>>2]|0){c[d>>2]=c[f>>2];g=c[d>>2]|0;i=h;return g|0}if(c[g>>2]|0){c[d>>2]=Lj(70762)|0;g=c[d>>2]|0;i=h;return g|0}else{a[(c[e>>2]|0)+3>>0]=0;c[(c[e>>2]|0)+56>>2]=0;c[d>>2]=0;g=c[d>>2]|0;i=h;return g|0}return 0}function _L(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;if((c[(c[e>>2]|0)+12>>2]|0)>(c[(c[f>>2]|0)+12>>2]|0))a=c[(c[f>>2]|0)+12>>2]|0;else a=c[(c[e>>2]|0)+12>>2]|0;c[g>>2]=vQ(c[(c[e>>2]|0)+16>>2]|0,c[(c[f>>2]|0)+16>>2]|0,a)|0;if(c[g>>2]|0){c[d>>2]=c[g>>2];g=c[d>>2]|0;i=h;return g|0}else{c[d>>2]=(c[(c[e>>2]|0)+12>>2]|0)-(c[(c[f>>2]|0)+12>>2]|0);g=c[d>>2]|0;i=h;return g|0}return 0}function $L(d){d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[f>>2]=d;if(!(Ky(c[(c[f>>2]|0)+16>>2]|0,c[f>>2]|0,c[(c[f>>2]|0)+12>>2]|0,a[(c[f>>2]|0)+10>>0]|0)|0)){b[e>>1]=0;d=b[e>>1]|0;i=g;return d|0}if(!(Hi(c[(c[f>>2]|0)+16>>2]|0,c[f>>2]|0,c[(c[f>>2]|0)+12>>2]|0,a[(c[f>>2]|0)+10>>0]|0)|0)){b[e>>1]=4;d=b[e>>1]|0;i=g;return d|0}else{b[e>>1]=8;d=b[e>>1]|0;i=g;return d|0}return 0}function aM(d){d=d|0;var f=0,g=0,h=0;h=i;i=i+16|0;f=h+4|0;g=h;c[g>>2]=d;if(ux(c[g>>2]|0,(c[(c[g>>2]|0)+12>>2]|0)+2|0,1)|0){c[f>>2]=7;d=c[f>>2]|0;i=h;return d|0}else{a[(c[(c[g>>2]|0)+16>>2]|0)+(c[(c[g>>2]|0)+12>>2]|0)>>0]=0;a[(c[(c[g>>2]|0)+16>>2]|0)+((c[(c[g>>2]|0)+12>>2]|0)+1)>>0]=0;d=(c[g>>2]|0)+8|0;b[d>>1]=e[d>>1]|0|512;c[f>>2]=0;d=c[f>>2]|0;i=h;return d|0}return 0}function bM(a){a=a|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;fh(c[d>>2]|0);b[(c[d>>2]|0)+8>>1]=4;i=e;return c[d>>2]|0}function cM(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;d=f+8|0;b=f+4|0;e=f;c[d>>2]=a;if(c[(c[d>>2]|0)+176>>2]|0){c[b>>2]=c[(c[d>>2]|0)+176>>2];while(1){a=c[b>>2]|0;if(!(c[(c[b>>2]|0)+4>>2]|0))break;c[b>>2]=c[a+4>>2]}RH(a)|0;c[(c[d>>2]|0)+176>>2]=0;c[(c[d>>2]|0)+184>>2]=0}kM(c[d>>2]|0);if(c[(c[d>>2]|0)+8>>2]|0)oC((c[(c[d>>2]|0)+8>>2]|0)+40|0,c[(c[d>>2]|0)+28>>2]|0);while(1){a=c[d>>2]|0;if(!(c[(c[d>>2]|0)+180>>2]|0))break;c[e>>2]=c[a+180>>2];c[(c[d>>2]|0)+180>>2]=c[(c[e>>2]|0)+4>>2];lM(c[e>>2]|0)}if(!(c[a+204>>2]|0)){i=f;return}bI(c[d>>2]|0,-1,0);i=f;return}function dM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=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,D=0,E=0,F=0,G=0,H=0,I=0;H=i;i=i+144|0;z=H+32|0;B=H+24|0;A=H+16|0;y=H+8|0;d=H+128|0;e=H+124|0;I=H+120|0;f=H+116|0;j=H+112|0;v=H+108|0;l=H+104|0;n=H+100|0;o=H+96|0;p=H+92|0;u=H+88|0;k=H+84|0;F=H+80|0;E=H+76|0;t=H+72|0;m=H;w=H+68|0;x=H+64|0;h=H+60|0;g=H+56|0;q=H+52|0;D=H+48|0;r=H+44|0;s=H+40|0;c[e>>2]=a;c[I>>2]=b;c[j>>2]=0;c[v>>2]=0;c[l>>2]=0;c[v>>2]=eM(c[e>>2]|0,c[I>>2]|0)|0;c[f>>2]=0;while(1){if(c[v>>2]|0)break;if((c[f>>2]|0)>=(c[(c[e>>2]|0)+20>>2]|0))break;c[n>>2]=c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+4>>2];if(bi(c[n>>2]|0)|0){c[l>>2]=1;if((c[f>>2]|0)!=1)c[j>>2]=(c[j>>2]|0)+1;kg(c[n>>2]|0);c[v>>2]=rt(Of(c[n>>2]|0)|0)|0}c[f>>2]=(c[f>>2]|0)+1}if(c[v>>2]|0){c[d>>2]=c[v>>2];I=c[d>>2]|0;i=H;return I|0}if(((c[l>>2]|0)!=0?(c[(c[e>>2]|0)+196>>2]|0)!=0:0)?(c[v>>2]=Tb[c[(c[e>>2]|0)+196>>2]&255](c[(c[e>>2]|0)+192>>2]|0)|0,(c[v>>2]|0)!=0):0){c[d>>2]=531;I=c[d>>2]|0;i=H;return I|0}I=0==(If(Di(c[(c[(c[e>>2]|0)+16>>2]|0)+4>>2]|0)|0)|0);if(I|(c[j>>2]|0)<=1){c[f>>2]=0;while(1){if(c[v>>2]|0)break;if((c[f>>2]|0)>=(c[(c[e>>2]|0)+20>>2]|0))break;c[o>>2]=c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+4>>2];if(c[o>>2]|0)c[v>>2]=Kg(c[o>>2]|0,0)|0;c[f>>2]=(c[f>>2]|0)+1}c[f>>2]=0;while(1){if(c[v>>2]|0)break;if((c[f>>2]|0)>=(c[(c[e>>2]|0)+20>>2]|0))break;c[p>>2]=c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+4>>2];if(c[p>>2]|0)c[v>>2]=Jg(c[p>>2]|0,0)|0;c[f>>2]=(c[f>>2]|0)+1}if(!(c[v>>2]|0))fM(c[e>>2]|0)|0}else{c[u>>2]=c[c[e>>2]>>2];c[k>>2]=0;c[F>>2]=0;c[E>>2]=Di(c[(c[(c[e>>2]|0)+16>>2]|0)+4>>2]|0)|0;c[t>>2]=0;I=m;c[I>>2]=0;c[I+4>>2]=0;c[x>>2]=0;c[h>>2]=If(c[E>>2]|0)|0;I=c[e>>2]|0;c[y>>2]=c[E>>2];c[F>>2]=Bh(I,43268,y)|0;if(!(c[F>>2]|0)){c[d>>2]=7;I=c[d>>2]|0;i=H;return I|0}do{if(c[x>>2]|0){if((c[x>>2]|0)>100){G=34;break}if((c[x>>2]|0)==1){c[B>>2]=c[F>>2];Rd(13,43298,B)}}c[x>>2]=(c[x>>2]|0)+1;Sd(4,g);I=(c[F>>2]|0)+(c[h>>2]|0)|0;E=c[g>>2]&255;c[z>>2]=(c[g>>2]|0)>>>8&16777215;c[z+4>>2]=E;Qd(13,I,43313,z)|0;c[v>>2]=Nr(c[u>>2]|0,c[F>>2]|0,0,w)|0}while((c[v>>2]|0)==0?(c[w>>2]|0)!=0:0);if((G|0)==34){c[A>>2]=c[F>>2];Rd(13,43284,A);qr(c[u>>2]|0,c[F>>2]|0,0)|0}if(!(c[v>>2]|0))c[v>>2]=TK(c[u>>2]|0,c[F>>2]|0,t,16406,0)|0;if(c[v>>2]|0){Sf(c[e>>2]|0,c[F>>2]|0);c[d>>2]=c[v>>2];I=c[d>>2]|0;i=H;return I|0}c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[e>>2]|0)+20>>2]|0))break;c[q>>2]=c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+4>>2];if((bi(c[q>>2]|0)|0)!=0?(c[D>>2]=gM(c[q>>2]|0)|0,(c[D>>2]|0)!=0):0){if((c[k>>2]|0)==0?(hM(c[q>>2]|0)|0)==0:0)c[k>>2]=1;A=c[t>>2]|0;B=c[D>>2]|0;I=(If(c[D>>2]|0)|0)+1|0;E=m;c[v>>2]=Fg(A,B,I,c[E>>2]|0,c[E+4>>2]|0)|0;E=(If(c[D>>2]|0)|0)+1|0;I=m;E=gR(c[I>>2]|0,c[I+4>>2]|0,E|0,((E|0)<0)<<31>>31|0)|0;I=m;c[I>>2]=E;c[I+4>>2]=C;if(c[v>>2]|0){G=50;break}}c[f>>2]=(c[f>>2]|0)+1}if((G|0)==50){pK(c[t>>2]|0)|0;qr(c[u>>2]|0,c[F>>2]|0,0)|0;Sf(c[e>>2]|0,c[F>>2]|0);c[d>>2]=c[v>>2];I=c[d>>2]|0;i=H;return I|0}if(((c[k>>2]|0)!=0?0==((Sr(c[t>>2]|0)|0)&1024|0):0)?(I=or(c[t>>2]|0,2)|0,c[v>>2]=I,0!=(I|0)):0){pK(c[t>>2]|0)|0;qr(c[u>>2]|0,c[F>>2]|0,0)|0;Sf(c[e>>2]|0,c[F>>2]|0);c[d>>2]=c[v>>2];I=c[d>>2]|0;i=H;return I|0}c[f>>2]=0;while(1){if(c[v>>2]|0)break;if((c[f>>2]|0)>=(c[(c[e>>2]|0)+20>>2]|0))break;c[r>>2]=c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+4>>2];if(c[r>>2]|0)c[v>>2]=Kg(c[r>>2]|0,c[F>>2]|0)|0;c[f>>2]=(c[f>>2]|0)+1}pK(c[t>>2]|0)|0;if(c[v>>2]|0){Sf(c[e>>2]|0,c[F>>2]|0);c[d>>2]=c[v>>2];I=c[d>>2]|0;i=H;return I|0}c[v>>2]=qr(c[u>>2]|0,c[F>>2]|0,c[k>>2]|0)|0;Sf(c[e>>2]|0,c[F>>2]|0);c[F>>2]=0;if(c[v>>2]|0){c[d>>2]=c[v>>2];I=c[d>>2]|0;i=H;return I|0}Sj();c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[e>>2]|0)+20>>2]|0))break;c[s>>2]=c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+4>>2];if(c[s>>2]|0)Jg(c[s>>2]|0,1)|0;c[f>>2]=(c[f>>2]|0)+1}Tj();fM(c[e>>2]|0)|0}c[d>>2]=c[v>>2];I=c[d>>2]|0;i=H;return I|0}function eM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;h=l+24|0;d=l+20|0;e=l+16|0;k=l+12|0;j=l+8|0;g=l+4|0;f=l;c[h>>2]=a;c[d>>2]=b;c[k>>2]=0;c[j>>2]=c[(c[h>>2]|0)+332>>2];c[(c[h>>2]|0)+332>>2]=0;c[e>>2]=0;while(1){if(c[k>>2]|0){d=8;break}if((c[e>>2]|0)>=(c[(c[h>>2]|0)+308>>2]|0)){d=8;break}c[f>>2]=c[(c[(c[j>>2]|0)+(c[e>>2]<<2)>>2]|0)+8>>2];if((c[f>>2]|0)!=0?(b=c[(c[c[f>>2]>>2]|0)+60>>2]|0,c[g>>2]=b,(b|0)!=0):0){c[k>>2]=Tb[c[g>>2]&255](c[f>>2]|0)|0;GI(c[d>>2]|0,c[f>>2]|0)}c[e>>2]=(c[e>>2]|0)+1}if((d|0)==8){c[(c[h>>2]|0)+332>>2]=c[j>>2];i=l;return c[k>>2]|0}return 0}function fM(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;gu(c[d>>2]|0,64);i=b;return 0}function gM(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=jM(c[c[(c[d>>2]|0)+4>>2]>>2]|0)|0;i=b;return a|0}function hM(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;f=d+8|0;e=d+4|0;b=d;c[f>>2]=a;c[e>>2]=c[(c[f>>2]|0)+4>>2];kg(c[f>>2]|0);c[b>>2]=iM(c[c[e>>2]>>2]|0)|0;i=d;return c[b>>2]|0}function iM(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return d[(c[b>>2]|0)+7>>0]|0|0}function jM(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+180>>2]|0}function kM(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;if(!(c[(c[b>>2]|0)+56>>2]|0)){i=f;return}c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[(c[b>>2]|0)+36>>2]|0))break;c[e>>2]=c[(c[(c[b>>2]|0)+56>>2]|0)+(c[d>>2]<<2)>>2];if(c[e>>2]|0){yI(c[b>>2]|0,c[e>>2]|0);c[(c[(c[b>>2]|0)+56>>2]|0)+(c[d>>2]<<2)>>2]=0}c[d>>2]=(c[d>>2]|0)+1}i=f;return}function lM(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;f=g+8|0;d=g+4|0;e=g;c[b>>2]=a;c[d>>2]=(c[b>>2]|0)+80;c[e>>2]=(c[d>>2]|0)+((c[(c[b>>2]|0)+60>>2]|0)*40|0);c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[b>>2]|0)+64>>2]|0))break;yI(c[c[b>>2]>>2]|0,c[(c[e>>2]|0)+(c[f>>2]<<2)>>2]|0);c[f>>2]=(c[f>>2]|0)+1}oC(c[d>>2]|0,c[(c[b>>2]|0)+60>>2]|0);Sf(c[c[c[b>>2]>>2]>>2]|0,c[b>>2]|0);i=g;return}function mM(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[6424+(c[b>>2]<<2)>>2]|0}function nM(f,g,j){f=f|0;g=g|0;j=j|0;var 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,J=0,K=0,L=0,M=0;L=i;i=i+192|0;y=L+88|0;x=L+80|0;w=L+72|0;I=L+64|0;H=L+56|0;v=L+48|0;u=L+40|0;t=L+32|0;A=L+24|0;z=L+16|0;E=L+8|0;s=L;k=L+176|0;l=L+172|0;M=L+168|0;K=L+164|0;J=L+136|0;B=L+132|0;D=L+128|0;C=L+124|0;F=L+120|0;p=L+116|0;q=L+112|0;G=L+108|0;r=L+104|0;n=L+100|0;m=L+96|0;o=L+92|0;c[k>>2]=f;c[l>>2]=g;c[M>>2]=j;c[K>>2]=c[l>>2];cg(J,0,c[l>>2]|0,c[M>>2]|0,0);a:do switch(a[(c[k>>2]|0)+1>>0]|0){case-6:{c[D>>2]=c[(c[k>>2]|0)+16>>2];c[s>>2]=e[(c[D>>2]|0)+6>>1];$z(J,43365,s);c[B>>2]=0;while(1){if((c[B>>2]|0)>=(e[(c[D>>2]|0)+6>>1]|0))break;c[C>>2]=c[(c[D>>2]|0)+20+(c[B>>2]<<2)>>2];if(c[C>>2]|0)k=c[c[C>>2]>>2]|0;else k=19266;c[F>>2]=k;M=(yQ(c[F>>2]|0,35690)|0)==0;c[F>>2]=M?43370:k;M=c[F>>2]|0;c[E>>2]=(d[(c[(c[D>>2]|0)+16>>2]|0)+(c[B>>2]|0)>>0]|0)!=0?29135:19266;c[E+4>>2]=M;$z(J,43372,E);c[B>>2]=(c[B>>2]|0)+1}aA(J,35518,1);break}case-4:{c[p>>2]=c[(c[k>>2]|0)+16>>2];c[z>>2]=c[c[p>>2]>>2];$z(J,43378,z);break}case-5:{c[q>>2]=c[(c[k>>2]|0)+16>>2];M=b[c[q>>2]>>1]|0;c[A>>2]=c[(c[q>>2]|0)+20>>2];c[A+4>>2]=M;$z(J,43386,A);break}case-13:{H=c[(c[k>>2]|0)+16>>2]|0;I=c[H+4>>2]|0;M=t;c[M>>2]=c[H>>2];c[M+4>>2]=I;$z(J,29137,t);break}case-14:{c[u>>2]=c[(c[k>>2]|0)+16>>2];$z(J,43393,u);break}case-12:{h[v>>3]=+h[c[(c[k>>2]|0)+16>>2]>>3];$z(J,43396,v);break}case-8:{c[G>>2]=c[(c[k>>2]|0)+16>>2];k=c[G>>2]|0;if(e[(c[G>>2]|0)+8>>1]&2){c[K>>2]=c[k+16>>2];break a}l=c[G>>2]|0;if(e[k+8>>1]&4){G=l;I=c[G+4>>2]|0;M=H;c[M>>2]=c[G>>2];c[M+4>>2]=I;$z(J,29137,H);break a}k=c[G>>2]|0;if(e[l+8>>1]&8){h[I>>3]=+h[k>>3];$z(J,43396,I);break a}if(e[k+8>>1]&1){c[K>>2]=40498;break a}else{c[K>>2]=43402;break a}}case-10:{c[r>>2]=c[(c[(c[k>>2]|0)+16>>2]|0)+8>>2];c[w>>2]=c[r>>2];$z(J,43409,w);break}case-15:{c[m>>2]=c[(c[k>>2]|0)+16>>2];c[o>>2]=c[c[m>>2]>>2];c[n>>2]=1;while(1){if((c[n>>2]|0)>=(c[o>>2]|0))break;c[x>>2]=c[(c[m>>2]|0)+(c[n>>2]<<2)>>2];$z(J,43417,x);c[n>>2]=(c[n>>2]|0)+1}a[c[l>>2]>>0]=91;aA(J,43421,1);break}case-18:{$z(J,43423,y);break}case-19:{a[c[l>>2]>>0]=0;break}default:{c[K>>2]=c[(c[k>>2]|0)+16>>2];if(!(c[K>>2]|0)){c[K>>2]=c[l>>2];a[c[l>>2]>>0]=0}}}while(0);eg(J)|0;i=L;return c[K>>2]|0}function oM(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+16|0;g=f+8|0;h=f;c[g>>2]=a;a=h;c[a>>2]=d;c[a+4>>2]=e;fh(c[g>>2]|0);d=h;e=c[d+4>>2]|0;a=c[g>>2]|0;c[a>>2]=c[d>>2];c[a+4>>2]=e;b[(c[g>>2]|0)+8>>1]=4;i=f;return}function pM(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;g=m+4|0;l=m;k=m+10|0;h=m+9|0;j=m+8|0;c[g>>2]=f;c[l>>2]=0;a[k>>0]=0;if((c[(c[g>>2]|0)+12>>2]|0)>1){a[h>>0]=a[c[(c[g>>2]|0)+16>>2]>>0]|0;a[j>>0]=a[(c[(c[g>>2]|0)+16>>2]|0)+1>>0]|0;if((d[h>>0]|0)==254?(d[j>>0]|0)==255:0)a[k>>0]=3;if((d[h>>0]|0)==255?(d[j>>0]|0)==254:0)a[k>>0]=2}if(!(a[k>>0]|0)){l=c[l>>2]|0;i=m;return l|0}c[l>>2]=_g(c[g>>2]|0)|0;if(c[l>>2]|0){l=c[l>>2]|0;i=m;return l|0}f=(c[g>>2]|0)+12|0;c[f>>2]=(c[f>>2]|0)-2;jR(c[(c[g>>2]|0)+16>>2]|0,(c[(c[g>>2]|0)+16>>2]|0)+2|0,c[(c[g>>2]|0)+12>>2]|0)|0;a[(c[(c[g>>2]|0)+16>>2]|0)+(c[(c[g>>2]|0)+12>>2]|0)>>0]=0;a[(c[(c[g>>2]|0)+16>>2]|0)+((c[(c[g>>2]|0)+12>>2]|0)+1)>>0]=0;f=(c[g>>2]|0)+8|0;b[f>>1]=e[f>>1]|512;a[(c[g>>2]|0)+10>>0]=a[k>>0]|0;l=c[l>>2]|0;i=m;return l|0}function qM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=i;i=i+16|0;e=f;g=f+4|0;c[e>>2]=b;a[g>>0]=d;if(!(rM(c[e>>2]|0,a[g>>0]|0)|0)){g=0;i=f;return g|0}g=c[(c[e>>2]|0)+12>>2]|0;i=f;return g|0}function rM(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;i=i+16|0;h=l+4|0;j=l;k=l+8|0;c[j>>2]=f;a[k>>0]=g;g=c[j>>2]|0;if((e[(c[j>>2]|0)+8>>1]|0)&18){f=g+8|0;b[f>>1]=e[f>>1]|0|2;if((e[(c[j>>2]|0)+8>>1]|0)&16384)Vg(c[j>>2]|0)|0;if((d[(c[j>>2]|0)+10>>0]|0|0)!=((d[k>>0]|0)&-9|0))Zt(c[j>>2]|0,(d[k>>0]|0)&-9)|0;if((((d[k>>0]|0)&8|0)!=0?1==(1&c[(c[j>>2]|0)+16>>2]|0):0)?(_g(c[j>>2]|0)|0)!=0:0){c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}YH(c[j>>2]|0)|0}else sx(g,a[k>>0]|0,0)|0;if((d[(c[j>>2]|0)+10>>0]|0|0)==((d[k>>0]|0)&-9|0)){c[h>>2]=c[(c[j>>2]|0)+16>>2];k=c[h>>2]|0;i=l;return k|0}else{c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}return 0}function sM(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if((e[(c[b>>2]|0)+8>>1]|0)&9312)DF(c[b>>2]|0);if(!(c[(c[b>>2]|0)+24>>2]|0)){a=c[b>>2]|0;a=a+16|0;c[a>>2]=0;i=d;return}Sf(c[(c[b>>2]|0)+32>>2]|0,c[(c[b>>2]|0)+20>>2]|0);c[(c[b>>2]|0)+24>>2]=0;a=c[b>>2]|0;a=a+16|0;c[a>>2]=0;i=d;return}function tM(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=c[c[d>>2]>>2];Sf(c[e>>2]|0,c[(c[d>>2]|0)+44>>2]|0);c[(c[d>>2]|0)+44>>2]=0;c[(c[d>>2]|0)+20>>2]=0;i=b;return}function uM(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;li(c[d>>2]|0);jg(c[d>>2]|0,7);i=b;return 7}function vM(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;kj(c[(c[d>>2]|0)+60>>2]|0);c[(c[d>>2]|0)+60>>2]=0;i=b;return}function wM(b){b=b|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+8|0;f=g+4|0;h=g;c[e>>2]=b;c[f>>2]=c[(c[e>>2]|0)+4>>2];c[h>>2]=c[c[e>>2]>>2];a[(c[f>>2]|0)+19>>0]=0;if((d[(c[e>>2]|0)+8>>0]|0|0)>0?(c[(c[h>>2]|0)+152>>2]|0)>1:0){xM(c[e>>2]|0);a[(c[e>>2]|0)+8>>0]=1;i=g;return}if((d[(c[e>>2]|0)+8>>0]|0|0)!=0?(yM(c[e>>2]|0),h=(c[f>>2]|0)+40|0,c[h>>2]=(c[h>>2]|0)+-1,0==(c[(c[f>>2]|0)+40>>2]|0)):0)a[(c[f>>2]|0)+20>>0]=0;a[(c[e>>2]|0)+8>>0]=0;rB(c[f>>2]|0);i=g;return}function xM(d){d=d|0;var f=0,g=0,h=0,j=0;h=i;i=i+16|0;j=h+8|0;f=h+4|0;g=h;c[j>>2]=d;c[f>>2]=c[(c[j>>2]|0)+4>>2];if((c[(c[f>>2]|0)+76>>2]|0)!=(c[j>>2]|0)){i=h;return}c[(c[f>>2]|0)+76>>2]=0;j=(c[f>>2]|0)+22|0;b[j>>1]=(e[j>>1]|0)&-97;c[g>>2]=c[(c[f>>2]|0)+72>>2];while(1){if(!(c[g>>2]|0))break;a[(c[g>>2]|0)+8>>0]=1;c[g>>2]=c[(c[g>>2]|0)+12>>2]}i=h;return}function yM(a){a=a|0;var d=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;g=j+12|0;h=j+8|0;f=j+4|0;d=j;c[g>>2]=a;c[h>>2]=c[(c[g>>2]|0)+4>>2];c[f>>2]=(c[h>>2]|0)+72;while(1){if(!(c[c[f>>2]>>2]|0))break;c[d>>2]=c[c[f>>2]>>2];a=(c[d>>2]|0)+12|0;if((c[c[d>>2]>>2]|0)!=(c[g>>2]|0)){c[f>>2]=a;continue}c[c[f>>2]>>2]=c[a>>2];if((c[(c[d>>2]|0)+4>>2]|0)==1)continue;Kd(c[d>>2]|0)}a=c[h>>2]|0;if((c[(c[h>>2]|0)+76>>2]|0)==(c[g>>2]|0)){c[a+76>>2]=0;h=(c[h>>2]|0)+22|0;b[h>>1]=(e[h>>1]|0)&-97;i=j;return}if((c[a+40>>2]|0)!=2){i=j;return}h=(c[h>>2]|0)+22|0;b[h>>1]=(e[h>>1]|0)&-65;i=j;return}function zM(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;d=m+28|0;e=m+24|0;l=m+20|0;k=m+16|0;g=m+12|0;h=m+8|0;f=m+4|0;j=m;c[e>>2]=b;c[l>>2]=0;c[k>>2]=c[c[e>>2]>>2];rJ(c[e>>2]|0);do if(!(a[(c[e>>2]|0)+18>>0]|0)){c[j>>2]=$E(c[e>>2]|0)|0;b=lF(c[e>>2]|0,c[j>>2]|0)|0;if((b|0)!=(c[j>>2]|0)?(c[j>>2]|0)!=((((c[381]|0)>>>0)/((c[(c[e>>2]|0)+32>>2]|0)>>>0)|0)+1|0):0){c[h>>2]=$q((c[(c[(c[e>>2]|0)+12>>2]|0)+56>>2]|0)+36|0)|0;c[g>>2]=qJ(c[e>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;if((c[g>>2]|0)>>>0>(c[j>>2]|0)>>>0){c[d>>2]=Lj(59231)|0;l=c[d>>2]|0;i=m;return l|0}if((c[g>>2]|0)>>>0<(c[j>>2]|0)>>>0)c[l>>2]=nH(c[e>>2]|0,0,0)|0;c[f>>2]=c[j>>2];while(1){if(!((c[f>>2]|0)>>>0>(c[g>>2]|0)>>>0?(c[l>>2]|0)==0:0))break;c[l>>2]=sJ(c[e>>2]|0,c[g>>2]|0,c[f>>2]|0,1)|0;c[f>>2]=(c[f>>2]|0)+-1}if(((c[l>>2]|0)==101|(c[l>>2]|0)==0)&(c[h>>2]|0)>>>0>0){c[l>>2]=Dg(c[(c[(c[e>>2]|0)+12>>2]|0)+72>>2]|0)|0;Xs((c[(c[(c[e>>2]|0)+12>>2]|0)+56>>2]|0)+32|0,0);Xs((c[(c[(c[e>>2]|0)+12>>2]|0)+56>>2]|0)+36|0,0);Xs((c[(c[(c[e>>2]|0)+12>>2]|0)+56>>2]|0)+28|0,c[g>>2]|0);a[(c[e>>2]|0)+19>>0]=1;c[(c[e>>2]|0)+44>>2]=c[g>>2]}if(!(c[l>>2]|0))break;jr(c[k>>2]|0)|0;break}c[d>>2]=Lj(59226)|0;l=c[d>>2]|0;i=m;return l|0}while(0);c[d>>2]=c[l>>2];l=c[d>>2]|0;i=m;return l|0}function AM(b){b=b|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[f>>2]=b;c[g>>2]=0;b=c[f>>2]|0;if(c[(c[f>>2]|0)+44>>2]|0){c[e>>2]=c[b+44>>2];g=c[e>>2]|0;i=h;return g|0}if(((d[b+17>>0]|0|0)==2?(d[(c[f>>2]|0)+4>>0]|0|0)!=0:0)?(d[(c[f>>2]|0)+5>>0]|0|0)==1:0){a[(c[f>>2]|0)+17>>0]=1;c[e>>2]=0;g=c[e>>2]|0;i=h;return g|0}b=(c[f>>2]|0)+108|0;c[b>>2]=(c[b>>2]|0)+1;c[g>>2]=kr(c[f>>2]|0,d[(c[f>>2]|0)+20>>0]|0,1)|0;c[e>>2]=fr(c[f>>2]|0,c[g>>2]|0)|0;g=c[e>>2]|0;i=h;return g|0}function BM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+12|0;g=h+4|0;f=h;c[e>>2]=b;c[h+8>>2]=d;c[g>>2]=0;if(a[(c[e>>2]|0)+19>>0]|0){g=c[g>>2]|0;i=h;return g|0}if((c[(c[e>>2]|0)+28>>2]|0)>>>0<=0){g=c[g>>2]|0;i=h;return g|0}c[g>>2]=sg(c[e>>2]|0,1,f,0)|0;if(!(c[g>>2]|0))c[g>>2]=Dg(c[f>>2]|0)|0;if(!(c[g>>2]|0)){qt(c[f>>2]|0);a[(c[e>>2]|0)+19>>0]=1}vg(c[f>>2]|0);g=c[g>>2]|0;i=h;return g|0}function CM(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;i=i+48|0;f=o+36|0;g=o+32|0;h=o+28|0;n=o+24|0;m=o+20|0;k=o+8|0;l=o;j=o+16|0;c[g>>2]=b;c[h>>2]=e;c[j>>2]=0;if(((c[h>>2]|0)!=0?(d[(c[g>>2]|0)+5>>0]|0)!=4:0)?(c[c[(c[g>>2]|0)+68>>2]>>2]|0)!=0:0){a[(c[g>>2]|0)+20>>0]=1;c[m>>2]=0;while(1){if(!(a[(c[h>>2]|0)+(c[m>>2]|0)>>0]|0))break;c[j>>2]=(c[j>>2]|0)+(a[(c[h>>2]|0)+(c[m>>2]|0)>>0]|0);c[m>>2]=(c[m>>2]|0)+1}if(a[(c[g>>2]|0)+8>>0]|0){b=fs(c[g>>2]|0)|0;e=(c[g>>2]|0)+80|0;c[e>>2]=b;c[e+4>>2]=C}p=(c[g>>2]|0)+80|0;b=c[p+4>>2]|0;e=k;c[e>>2]=c[p>>2];c[e+4>>2]=b;e=k;e=Gt(c[(c[g>>2]|0)+68>>2]|0,c[e>>2]|0,c[e+4>>2]|0,((c[381]|0)/(c[(c[g>>2]|0)+160>>2]|0)|0)+1|0)|0;c[n>>2]=e;if((((0==(e|0)?(q=c[(c[g>>2]|0)+68>>2]|0,b=c[h>>2]|0,e=c[m>>2]|0,p=k,p=gR(c[p>>2]|0,c[p+4>>2]|0,4,0)|0,p=Fg(q,b,e,p,C)|0,c[n>>2]=p,0==(p|0)):0)?(p=c[(c[g>>2]|0)+68>>2]|0,e=k,e=gR(c[e>>2]|0,c[e+4>>2]|0,4,0)|0,q=c[m>>2]|0,q=gR(e|0,C|0,q|0,((q|0)<0)<<31>>31|0)|0,q=Gt(p,q,C,c[m>>2]|0)|0,c[n>>2]=q,0==(q|0)):0)?(p=c[(c[g>>2]|0)+68>>2]|0,e=k,e=gR(c[e>>2]|0,c[e+4>>2]|0,4,0)|0,q=c[m>>2]|0,q=gR(e|0,C|0,q|0,((q|0)<0)<<31>>31|0)|0,q=gR(q|0,C|0,4,0)|0,q=Gt(p,q,C,c[j>>2]|0)|0,c[n>>2]=q,0==(q|0)):0)?(p=c[(c[g>>2]|0)+68>>2]|0,e=k,e=gR(c[e>>2]|0,c[e+4>>2]|0,4,0)|0,q=c[m>>2]|0,q=gR(e|0,C|0,q|0,((q|0)<0)<<31>>31|0)|0,q=gR(q|0,C|0,8,0)|0,q=Fg(p,26758,8,q,C)|0,c[n>>2]=q,0==(q|0)):0){p=(c[m>>2]|0)+20|0;q=(c[g>>2]|0)+80|0;e=q;p=gR(c[e>>2]|0,c[e+4>>2]|0,p|0,((p|0)<0)<<31>>31|0)|0;c[q>>2]=p;c[q+4>>2]=C;q=Si(c[(c[g>>2]|0)+68>>2]|0,l)|0;c[n>>2]=q;if(0==(q|0)?(p=l,b=c[p+4>>2]|0,q=(c[g>>2]|0)+80|0,e=c[q+4>>2]|0,(b|0)>(e|0)|((b|0)==(e|0)?(c[p>>2]|0)>>>0>(c[q>>2]|0)>>>0:0)):0){q=(c[g>>2]|0)+80|0;c[n>>2]=nr(c[(c[g>>2]|0)+68>>2]|0,c[q>>2]|0,c[q+4>>2]|0)|0}c[f>>2]=c[n>>2];q=c[f>>2]|0;i=o;return q|0}c[f>>2]=c[n>>2];q=c[f>>2]|0;i=o;return q|0}c[f>>2]=0;q=c[f>>2]|0;i=o;return q|0}function DM(f){f=f|0;var g=0,h=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;u=i;i=i+48|0;g=u+44|0;s=u+40|0;k=u+36|0;r=u+32|0;j=u+28|0;h=u+24|0;m=u+20|0;p=u+16|0;l=u+12|0;q=u+8|0;n=u+4|0;o=u;c[g>>2]=f;c[s>>2]=0;c[j>>2]=0;c[m>>2]=0;c[p>>2]=c[(c[g>>2]|0)+16>>2];c[l>>2]=((c[(c[p>>2]|0)+156>>2]|0)>>>0)/((c[(c[p>>2]|0)+160>>2]|0)>>>0)|0;f=(c[p>>2]|0)+21|0;a[f>>0]=d[f>>0]|0|4;c[r>>2]=((c[(c[g>>2]|0)+20>>2]|0)-1&~((c[l>>2]|0)-1))+1;c[k>>2]=c[(c[p>>2]|0)+28>>2];do if((c[(c[g>>2]|0)+20>>2]|0)>>>0<=(c[k>>2]|0)>>>0)if(((c[r>>2]|0)+(c[l>>2]|0)-1|0)>>>0>(c[k>>2]|0)>>>0){c[j>>2]=(c[k>>2]|0)+1-(c[r>>2]|0);break}else{c[j>>2]=c[l>>2];break}else c[j>>2]=(c[(c[g>>2]|0)+20>>2]|0)-(c[r>>2]|0)+1;while(0);c[h>>2]=0;while(1){if(!((c[h>>2]|0)<(c[j>>2]|0)?(c[s>>2]|0)==0:0))break;c[q>>2]=(c[r>>2]|0)+(c[h>>2]|0);if((c[q>>2]|0)!=(c[(c[g>>2]|0)+20>>2]|0)?(ij(c[(c[p>>2]|0)+60>>2]|0,c[q>>2]|0)|0)!=0:0){f=Zr(c[p>>2]|0,c[q>>2]|0)|0;c[n>>2]=f;if(f){if((e[(c[n>>2]|0)+24>>1]|0)&8)c[m>>2]=1;zs(c[n>>2]|0)}}else t=10;if(((t|0)==10?(t=0,(c[q>>2]|0)!=(((c[381]|0)/(c[(c[p>>2]|0)+160>>2]|0)|0)+1|0)):0)?(c[s>>2]=sg(c[p>>2]|0,c[q>>2]|0,n,0)|0,(c[s>>2]|0)==0):0){c[s>>2]=EM(c[n>>2]|0)|0;if((e[(c[n>>2]|0)+24>>1]|0)&8)c[m>>2]=1;zs(c[n>>2]|0)}c[h>>2]=(c[h>>2]|0)+1}if(!((c[s>>2]|0)==0&(c[m>>2]|0)!=0)){t=c[p>>2]|0;t=t+21|0;r=a[t>>0]|0;r=r&255;r=r&-5;r=r&255;a[t>>0]=r;t=c[s>>2]|0;i=u;return t|0}c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[j>>2]|0))break;c[o>>2]=Zr(c[p>>2]|0,(c[r>>2]|0)+(c[h>>2]|0)|0)|0;if(c[o>>2]|0){t=(c[o>>2]|0)+24|0;b[t>>1]=e[t>>1]|0|8;zs(c[o>>2]|0)}c[h>>2]=(c[h>>2]|0)+1}t=c[p>>2]|0;t=t+21|0;r=a[t>>0]|0;r=r&255;r=r&-5;r=r&255;a[t>>0]=r;t=c[s>>2]|0;i=u;return t|0}function EM(a){a=a|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[g>>2]=a;c[h>>2]=c[(c[g>>2]|0)+16>>2];c[j>>2]=0;if((d[(c[h>>2]|0)+17>>0]|0|0)==2?(c[j>>2]=FM(c[h>>2]|0)|0,(c[j>>2]|0)!=0):0){c[f>>2]=c[j>>2];j=c[f>>2]|0;i=k;return j|0}$r(c[g>>2]|0);do if((c[(c[h>>2]|0)+60>>2]|0)!=0?(lj(c[(c[h>>2]|0)+60>>2]|0,c[(c[g>>2]|0)+20>>2]|0)|0)==0:0){if((c[(c[g>>2]|0)+20>>2]|0)>>>0>(c[(c[h>>2]|0)+32>>2]|0)>>>0){if((d[(c[h>>2]|0)+17>>0]|0|0)==4)break;a=(c[g>>2]|0)+24|0;b[a>>1]=e[a>>1]|0|8;break}c[j>>2]=GM(c[g>>2]|0)|0;if(c[j>>2]|0){c[f>>2]=c[j>>2];j=c[f>>2]|0;i=k;return j|0}}while(0);a=(c[g>>2]|0)+24|0;b[a>>1]=e[a>>1]|0|4;if((c[(c[h>>2]|0)+104>>2]|0)>0)c[j>>2]=lt(c[g>>2]|0)|0;if((c[(c[h>>2]|0)+28>>2]|0)>>>0<(c[(c[g>>2]|0)+20>>2]|0)>>>0)c[(c[h>>2]|0)+28>>2]=c[(c[g>>2]|0)+20>>2];c[f>>2]=c[j>>2];j=c[f>>2]|0;i=k;return j|0}function FM(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;g=k+16|0;h=k+12|0;j=k+8|0;f=k+4|0;e=k;c[h>>2]=b;c[j>>2]=0;c[f>>2]=c[c[h>>2]>>2];b=c[h>>2]|0;if(c[(c[h>>2]|0)+44>>2]|0){c[g>>2]=c[b+44>>2];j=c[g>>2]|0;i=k;return j|0}if((sr(b)|0)==0?(d[(c[h>>2]|0)+5>>0]|0|0)!=2:0){b=fj(c[(c[h>>2]|0)+28>>2]|0)|0;c[(c[h>>2]|0)+60>>2]=b;if(!(c[(c[h>>2]|0)+60>>2]|0)){c[g>>2]=7;j=c[g>>2]|0;i=k;return j|0}do if(!(c[c[(c[h>>2]|0)+68>>2]>>2]|0)){b=c[h>>2]|0;if((d[(c[h>>2]|0)+5>>0]|0|0)==4){Ir(c[b+68>>2]|0);break}c[e>>2]=6|((d[b+13>>0]|0|0)!=0?4104:2048);c[j>>2]=HM(c[h>>2]|0)|0;if(!(c[j>>2]|0))c[j>>2]=Vr(c[f>>2]|0,c[(c[h>>2]|0)+180>>2]|0,c[(c[h>>2]|0)+68>>2]|0,c[e>>2]|0,0)|0}while(0);if(!(c[j>>2]|0)){c[(c[h>>2]|0)+48>>2]=0;f=(c[h>>2]|0)+80|0;c[f>>2]=0;c[f+4>>2]=0;a[(c[h>>2]|0)+20>>0]=0;f=(c[h>>2]|0)+88|0;c[f>>2]=0;c[f+4>>2]=0;c[j>>2]=st(c[h>>2]|0)|0}}b=c[h>>2]|0;if(c[j>>2]|0){kj(c[b+60>>2]|0);c[(c[h>>2]|0)+60>>2]=0}else a[b+17>>0]=3;c[g>>2]=c[j>>2];j=c[g>>2]|0;i=k;return j|0}function GM(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=i;i=i+32|0;d=m+28|0;f=m+24|0;k=m+20|0;l=m+16|0;g=m+12|0;j=m+8|0;h=m;c[f>>2]=a;c[k>>2]=c[(c[f>>2]|0)+16>>2];o=(c[k>>2]|0)+80|0;n=c[o+4>>2]|0;a=h;c[a>>2]=c[o>>2];c[a+4>>2]=n;c[j>>2]=c[(c[f>>2]|0)+4>>2];c[g>>2]=Yr(c[k>>2]|0,c[j>>2]|0)|0;a=(c[f>>2]|0)+24|0;b[a>>1]=e[a>>1]|0|8;a=h;c[l>>2]=Gt(c[(c[k>>2]|0)+68>>2]|0,c[a>>2]|0,c[a+4>>2]|0,c[(c[f>>2]|0)+20>>2]|0)|0; -if(c[l>>2]|0){c[d>>2]=c[l>>2];o=c[d>>2]|0;i=m;return o|0}p=c[(c[k>>2]|0)+68>>2]|0;a=c[j>>2]|0;n=c[(c[k>>2]|0)+160>>2]|0;o=h;o=gR(c[o>>2]|0,c[o+4>>2]|0,4,0)|0;c[l>>2]=Fg(p,a,n,o,C)|0;if(c[l>>2]|0){c[d>>2]=c[l>>2];p=c[d>>2]|0;i=m;return p|0}o=c[(c[k>>2]|0)+68>>2]|0;n=h;p=c[(c[k>>2]|0)+160>>2]|0;p=gR(c[n>>2]|0,c[n+4>>2]|0,p|0,((p|0)<0)<<31>>31|0)|0;p=gR(p|0,C|0,4,0)|0;c[l>>2]=Gt(o,p,C,c[g>>2]|0)|0;if(c[l>>2]|0){c[d>>2]=c[l>>2];p=c[d>>2]|0;i=m;return p|0}else{o=8+(c[(c[k>>2]|0)+160>>2]|0)|0;p=(c[k>>2]|0)+80|0;n=p;o=gR(c[n>>2]|0,c[n+4>>2]|0,o|0,((o|0)<0)<<31>>31|0)|0;c[p>>2]=o;c[p+4>>2]=C;p=(c[k>>2]|0)+48|0;c[p>>2]=(c[p>>2]|0)+1;c[l>>2]=gj(c[(c[k>>2]|0)+60>>2]|0,c[(c[f>>2]|0)+20>>2]|0)|0;p=Ht(c[k>>2]|0,c[(c[f>>2]|0)+20>>2]|0)|0;c[l>>2]=c[l>>2]|p;c[d>>2]=c[l>>2];p=c[d>>2]|0;i=m;return p|0}return 0}function HM(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=b;c[f>>2]=0;if(a[(c[e>>2]|0)+13>>0]|0){c[d>>2]=0;g=c[d>>2]|0;i=h;return g|0}if(!(c[(c[e>>2]|0)+28>>2]|0)){c[d>>2]=0;g=c[d>>2]|0;i=h;return g|0}c[g>>2]=vi(c[(c[e>>2]|0)+64>>2]|0,20,f)|0;if((c[g>>2]|0)!=12){if((c[g>>2]|0)==0&(c[f>>2]|0)!=0)c[g>>2]=1032}else c[g>>2]=0;c[d>>2]=c[g>>2];g=c[d>>2]|0;i=h;return g|0}function IM(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;h=o+20|0;j=o+16|0;k=o+12|0;l=o+8|0;m=o+4|0;n=o;c[j>>2]=a;c[k>>2]=d;c[l>>2]=f;c[m>>2]=g;f=c[j>>2]|0;do if(c[(c[j>>2]|0)+144>>2]|0){g=c[f+144>>2]|0;c[n>>2]=g;c[c[m>>2]>>2]=g;c[(c[j>>2]|0)+144>>2]=c[(c[n>>2]|0)+12>>2];c[(c[n>>2]|0)+12>>2]=0;kR(c[(c[n>>2]|0)+8>>2]|0,0,e[(c[j>>2]|0)+148>>1]|0|0)|0}else{g=ig(40+(e[f+148>>1]|0)|0,0)|0;c[n>>2]=g;c[c[m>>2]>>2]=g;if(c[n>>2]|0){c[(c[n>>2]|0)+8>>2]=(c[n>>2]|0)+40;b[(c[n>>2]|0)+24>>1]=64;b[(c[n>>2]|0)+26>>1]=1;c[(c[n>>2]|0)+16>>2]=c[j>>2];break}m=c[(c[j>>2]|0)+64>>2]|0;n=c[(c[j>>2]|0)+160>>2]|0;n=rR((c[k>>2]|0)-1|0,0,n|0,((n|0)<0)<<31>>31|0)|0;Cs(m,n,C,c[l>>2]|0)|0;c[h>>2]=7;n=c[h>>2]|0;i=o;return n|0}while(0);c[(c[n>>2]|0)+20>>2]=c[k>>2];c[(c[n>>2]|0)+4>>2]=c[l>>2];n=(c[j>>2]|0)+128|0;c[n>>2]=(c[n>>2]|0)+1;c[h>>2]=0;n=c[h>>2]|0;i=o;return n|0}function JM(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;h=o+20|0;j=o+16|0;k=o+12|0;l=o+8|0;m=o+4|0;n=o;c[j>>2]=a;c[k>>2]=f;c[l>>2]=g;if((d[(c[j>>2]|0)+33>>0]|0)==2){c[h>>2]=0;n=c[h>>2]|0;i=o;return n|0}g=KM(c[j>>2]|0)|0;if((g|0)>(c[(c[j>>2]|0)+20>>2]|0)){c[m>>2]=c[(c[j>>2]|0)+8>>2];while(1){if(!(c[m>>2]|0))break;if((b[(c[m>>2]|0)+26>>1]|0)==0?(e[(c[m>>2]|0)+24>>1]&8|0)==0:0)break;c[m>>2]=c[(c[m>>2]|0)+36>>2]}c[(c[j>>2]|0)+8>>2]=c[m>>2];a:do if(!(c[m>>2]|0)){c[m>>2]=c[(c[j>>2]|0)+4>>2];while(1){if(!(c[m>>2]|0))break a;if(!(b[(c[m>>2]|0)+26>>1]|0))break a;c[m>>2]=c[(c[m>>2]|0)+36>>2]}}while(0);if((c[m>>2]|0)!=0?(c[n>>2]=Yb[c[(c[j>>2]|0)+36>>2]&255](c[(c[j>>2]|0)+40>>2]|0,c[m>>2]|0)|0,(c[n>>2]|0)!=0&(c[n>>2]|0)!=5):0){c[h>>2]=c[n>>2];n=c[h>>2]|0;i=o;return n|0}}n=Ob[c[140>>2]&255](c[(c[j>>2]|0)+44>>2]|0,c[k>>2]|0,2)|0;c[c[l>>2]>>2]=n;c[h>>2]=(c[c[l>>2]>>2]|0)==0?7:0;n=c[h>>2]|0;i=o;return n|0}function KM(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Tb[c[136>>2]&255](c[(c[d>>2]|0)+44>>2]|0)|0;i=b;return a|0}function LM(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+108>>2]|0}function MM(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;n=r+40|0;o=r+36|0;l=r+32|0;q=r+28|0;p=r+24|0;h=r+20|0;k=r+12|0;m=r+8|0;j=r+4|0;g=r;c[o>>2]=f;c[h>>2]=0;c[l>>2]=LJ(c[c[o>>2]>>2]|0)|0;if(c[l>>2]|0){c[n>>2]=c[l>>2];q=c[n>>2]|0;i=r;return q|0}c[l>>2]=nF(c[o>>2]|0,1,q,0)|0;if(c[l>>2]|0){c[n>>2]=c[l>>2];q=c[n>>2]|0;i=r;return q|0}f=$q((c[(c[q>>2]|0)+56>>2]|0)+28|0)|0;c[r+16>>2]=f;c[p>>2]=f;Cg(c[c[o>>2]>>2]|0,h);if(!((c[p>>2]|0)!=0?(vQ((c[(c[q>>2]|0)+56>>2]|0)+24|0,(c[(c[q>>2]|0)+56>>2]|0)+92|0,4)|0)==0:0))c[p>>2]=c[h>>2];a:do if((c[p>>2]|0)>0){c[j>>2]=c[(c[q>>2]|0)+56>>2];c[l>>2]=26;b:do if(!(vQ(c[j>>2]|0,43252,16)|0)){if((d[(c[j>>2]|0)+18>>0]|0|0)>2){f=(c[o>>2]|0)+22|0;b[f>>1]=e[f>>1]|0|1}if((d[(c[j>>2]|0)+19>>0]|0|0)<=2){do if((d[(c[j>>2]|0)+19>>0]|0|0)==2?((e[(c[o>>2]|0)+22>>1]|0)&16|0)==0:0){c[g>>2]=0;c[l>>2]=RJ(c[c[o>>2]>>2]|0,g)|0;if(c[l>>2]|0)break b;if(c[g>>2]|0){c[l>>2]=26;break}qB(c[q>>2]|0);c[n>>2]=0;q=c[n>>2]|0;i=r;return q|0}while(0);if((vQ((c[j>>2]|0)+21|0,45492,3)|0)==0?(c[k>>2]=(d[(c[j>>2]|0)+16>>0]|0)<<8|(d[(c[j>>2]|0)+17>>0]|0)<<16,!(((c[k>>2]|0)>>>0>65536?1:((c[k>>2]|0)-1&c[k>>2]|0)!=0)|(c[k>>2]|0)>>>0<=256)):0){c[m>>2]=(c[k>>2]|0)-(d[(c[j>>2]|0)+20>>0]|0);if((c[k>>2]|0)!=(c[(c[o>>2]|0)+32>>2]|0)){qB(c[q>>2]|0);c[(c[o>>2]|0)+36>>2]=c[m>>2];c[(c[o>>2]|0)+32>>2]=c[k>>2];Pi(c[o>>2]|0);c[l>>2]=Qi(c[c[o>>2]>>2]|0,(c[o>>2]|0)+32|0,(c[k>>2]|0)-(c[m>>2]|0)|0)|0;c[n>>2]=c[l>>2];q=c[n>>2]|0;i=r;return q|0}if((c[(c[(c[o>>2]|0)+4>>2]|0)+24>>2]&65536|0)==0?(c[p>>2]|0)>(c[h>>2]|0):0){c[l>>2]=Lj(58503)|0;break}if((c[m>>2]|0)>>>0>=480){c[(c[o>>2]|0)+32>>2]=c[k>>2];c[(c[o>>2]|0)+36>>2]=c[m>>2];m=($q((c[j>>2]|0)+52|0)|0)!=0;a[(c[o>>2]|0)+17>>0]=m?1:0;m=($q((c[j>>2]|0)+64|0)|0)!=0;a[(c[o>>2]|0)+18>>0]=m?1:0;break a}}}}while(0);qB(c[q>>2]|0);c[(c[o>>2]|0)+12>>2]=0;c[n>>2]=c[l>>2];q=c[n>>2]|0;i=r;return q|0}while(0);b[(c[o>>2]|0)+24>>1]=(((c[(c[o>>2]|0)+36>>2]|0)-12<<6>>>0)/255|0)-23;b[(c[o>>2]|0)+26>>1]=(((c[(c[o>>2]|0)+36>>2]|0)-12<<5>>>0)/255|0)-23;b[(c[o>>2]|0)+28>>1]=(c[(c[o>>2]|0)+36>>2]|0)-35;b[(c[o>>2]|0)+30>>1]=(((c[(c[o>>2]|0)+36>>2]|0)-12<<5>>>0)/255|0)-23;g=c[o>>2]|0;if((e[(c[o>>2]|0)+24>>1]|0|0)>127)a[g+21>>0]=127;else a[(c[o>>2]|0)+21>>0]=b[g+24>>1];c[(c[o>>2]|0)+12>>2]=c[q>>2];c[(c[o>>2]|0)+44>>2]=c[p>>2];c[n>>2]=0;q=c[n>>2]|0;i=r;return q|0}function NM(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;h=m+16|0;j=m+12|0;k=m+8|0;g=m+4|0;l=m;c[j>>2]=b;c[k>>2]=e;c[g>>2]=f;c[l>>2]=0;if(c[(c[j>>2]|0)+44>>2]|0){c[h>>2]=c[(c[j>>2]|0)+44>>2];l=c[h>>2]|0;i=m;return l|0}a[(c[j>>2]|0)+22>>0]=c[g>>2];if((d[(c[j>>2]|0)+17>>0]|0|0)==1){f=(sr(c[j>>2]|0)|0)!=0;g=c[j>>2]|0;if(!f){c[l>>2]=vt(g,2)|0;if((c[l>>2]|0)==0&(c[k>>2]|0)!=0)c[l>>2]=ut(c[j>>2]|0,4)|0}else{do if((d[g+4>>0]|0|0)!=0?(vr(c[(c[j>>2]|0)+216>>2]|0,-1)|0)!=0:0){c[l>>2]=vt(c[j>>2]|0,4)|0;if(!(c[l>>2]|0)){vr(c[(c[j>>2]|0)+216>>2]|0,1)|0;break}c[h>>2]=c[l>>2];l=c[h>>2]|0;i=m;return l|0}while(0);c[l>>2]=OM(c[(c[j>>2]|0)+216>>2]|0)|0}if(!(c[l>>2]|0)){a[(c[j>>2]|0)+17>>0]=2;c[(c[j>>2]|0)+40>>2]=c[(c[j>>2]|0)+28>>2];c[(c[j>>2]|0)+36>>2]=c[(c[j>>2]|0)+28>>2];c[(c[j>>2]|0)+32>>2]=c[(c[j>>2]|0)+28>>2];k=(c[j>>2]|0)+80|0;c[k>>2]=0;c[k+4>>2]=0}}c[h>>2]=c[l>>2];l=c[h>>2]|0;i=m;return l|0}function OM(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[e>>2]=b;if(a[(c[e>>2]|0)+46>>0]|0){c[d>>2]=8;f=c[d>>2]|0;i=g;return f|0}c[f>>2]=Ns(c[e>>2]|0,0,1)|0;if(c[f>>2]|0){c[d>>2]=c[f>>2];f=c[d>>2]|0;i=g;return f|0}a[(c[e>>2]|0)+44>>0]=1;b=(c[e>>2]|0)+52|0;if(vQ(b,ts(c[e>>2]|0)|0,48)|0){Br(c[e>>2]|0,0,1);a[(c[e>>2]|0)+44>>0]=0;c[f>>2]=517}c[d>>2]=c[f>>2];f=c[d>>2]|0;i=g;return f|0}function PM(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;fh(c[d>>2]|0);i=b;return}function QM(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,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;H=i;i=i+624|0;g=H+92|0;h=H+88|0;j=H+84|0;k=H+80|0;l=H+76|0;m=H+72|0;z=H+68|0;p=H+64|0;x=H+60|0;o=H+56|0;w=H+52|0;B=H+48|0;n=H+44|0;t=H+40|0;s=H+36|0;r=H+32|0;v=H+28|0;u=H+24|0;C=H+20|0;F=H+96|0;E=H+16|0;A=H+12|0;y=H+8|0;D=H+4|0;q=H;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[z>>2]=c[k>>2];c[p>>2]=-1;c[x>>2]=0;c[o>>2]=c[l>>2]&-256;c[B>>2]=0;c[n>>2]=0;c[t>>2]=c[l>>2]&16;c[s>>2]=c[l>>2]&8;c[r>>2]=c[l>>2]&4;c[v>>2]=c[l>>2]&1;c[u>>2]=c[l>>2]&2;if(c[r>>2]|0)if((c[o>>2]|0)==16384|(c[o>>2]|0)==2048)e=1;else e=(c[o>>2]|0)==524288;else e=0;c[C>>2]=e&1;c[E>>2]=c[j>>2];b=c[1926]|0;if((b|0)!=(LQ()|0)){c[1926]=LQ()|0;Sd(0,0)}e=c[z>>2]|0;d=e+44|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(d|0));e=c[E>>2]|0;do if((c[o>>2]|0)!=256){if(!e){c[B>>2]=FN(c[(c[h>>2]|0)+8>>2]|0,F)|0;if(!(c[B>>2]|0)){c[E>>2]=F;break}c[g>>2]=c[B>>2];G=c[g>>2]|0;i=H;return G|0}}else{c[A>>2]=WN(e,c[l>>2]|0)|0;if(!(c[A>>2]|0)){c[A>>2]=Jd(12,0)|0;if(!(c[A>>2]|0)){c[g>>2]=7;G=c[g>>2]|0;i=H;return G|0}}else c[p>>2]=c[c[A>>2]>>2];c[(c[z>>2]|0)+28>>2]=c[A>>2]}while(0);if(c[v>>2]|0)c[x>>2]=c[x>>2];if(c[u>>2]|0)c[x>>2]=c[x>>2]|2;if(c[r>>2]|0)c[x>>2]=c[x>>2]|64;if(c[t>>2]|0)c[x>>2]=c[x>>2]|131200;c[x>>2]=c[x>>2];do if((c[p>>2]|0)<0){c[B>>2]=XN(c[E>>2]|0,c[l>>2]|0,y,D,q)|0;if(c[B>>2]|0){c[g>>2]=c[B>>2];G=c[g>>2]|0;i=H;return G|0}c[p>>2]=BN(c[E>>2]|0,c[x>>2]|0,c[y>>2]|0)|0;if((c[p>>2]|0)<0?(F=(c[(SP()|0)>>2]|0)!=21,F&(c[u>>2]|0)!=0):0){c[l>>2]=c[l>>2]&-7;c[x>>2]=c[x>>2]&-67;c[l>>2]=c[l>>2]|1;c[x>>2]=c[x>>2];c[v>>2]=1;c[p>>2]=BN(c[E>>2]|0,c[x>>2]|0,c[y>>2]|0)|0}if((c[p>>2]|0)<0){F=et(33050)|0;c[B>>2]=xN(F,45571,c[E>>2]|0,33050)|0;break}if(c[l>>2]&526336){YN(c[p>>2]|0,c[D>>2]|0,c[q>>2]|0)|0;G=34}else G=34}else G=34;while(0);if((G|0)==34){if(c[m>>2]|0)c[c[m>>2]>>2]=c[l>>2];if(c[(c[z>>2]|0)+28>>2]|0){c[c[(c[z>>2]|0)+28>>2]>>2]=c[p>>2];c[(c[(c[z>>2]|0)+28>>2]|0)+4>>2]=c[l>>2]}if(c[s>>2]|0)Tb[c[7464>>2]&255](c[E>>2]|0)|0;c[w>>2]=(c[o>>2]|0)!=256&1;if(c[s>>2]|0)c[n>>2]=c[n>>2]|32;if(c[v>>2]|0)c[n>>2]=c[n>>2]|2;if(c[w>>2]|0)c[n>>2]=c[n>>2]|128;if(c[C>>2]|0)c[n>>2]=c[n>>2]|8;if(c[l>>2]&64)c[n>>2]=c[n>>2]|64;c[B>>2]=ZN(c[h>>2]|0,c[p>>2]|0,c[k>>2]|0,c[j>>2]|0,c[n>>2]|0)|0}if(c[B>>2]|0)Kd(c[(c[z>>2]|0)+28>>2]|0);c[g>>2]=c[B>>2];G=c[g>>2]|0;i=H;return G|0}function RM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+20|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[k+16>>2]=a;c[f>>2]=b;c[g>>2]=d;c[j>>2]=0;if((Tb[c[7464>>2]&255](c[f>>2]|0)|0)==-1){if((c[(SP()|0)>>2]|0)==2)c[j>>2]=5898;else c[j>>2]=xN(2570,45668,c[f>>2]|0,33178)|0;c[e>>2]=c[j>>2];b=c[e>>2]|0;i=k;return b|0}do if(c[g>>2]&1){c[j>>2]=Yb[c[7476>>2]&255](c[f>>2]|0,h)|0;if(c[j>>2]|0){c[j>>2]=0;break}if(MN(c[h>>2]|0,0,0)|0)c[j>>2]=xN(1290,45902,c[f>>2]|0,33188)|0;wN(0,c[h>>2]|0,33190)}while(0);c[e>>2]=c[j>>2];b=c[e>>2]|0;i=k;return b|0}function SM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;j=i;i=i+96|0;f=j+84|0;k=j+80|0;g=j+76|0;h=j;c[j+88>>2]=a;c[f>>2]=b;c[k>>2]=d;c[g>>2]=e;if(!(c[k>>2]|0)){k=0==(Yb[c[7320>>2]&255](c[f>>2]|0,h)|0);c[c[g>>2]>>2]=(k?(c[h+36>>2]|0)>0:0)&1;i=j;return 0}else{k=(Yb[c[7296>>2]&255](c[f>>2]|0,6)|0)==0&1;c[c[g>>2]>>2]=k;i=j;return 0}return 0}function TM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+128|0;s=r+112|0;g=r+108|0;h=r+104|0;p=r+100|0;m=r+96|0;n=r+92|0;o=r+88|0;q=r+84|0;j=r+80|0;k=r+4|0;l=r;c[r+116>>2]=b;c[s>>2]=d;c[g>>2]=e;c[h>>2]=f;c[p>>2]=0;c[n>>2]=1;c[o>>2]=c[s>>2];c[q>>2]=0;while(1){c[j>>2]=0;if(Yb[c[7596>>2]&255](c[o>>2]|0,k)|0){if((c[(SP()|0)>>2]|0)!=2){s=et(33302)|0;c[p>>2]=xN(s,45756,c[o>>2]|0,33302)|0}}else c[j>>2]=(c[k+12>>2]&61440|0)==40960&1;if(c[j>>2]|0){if(!(c[q>>2]|0)){c[q>>2]=Id(c[g>>2]|0)|0;if(!(c[q>>2]|0))c[p>>2]=7}else{s=(c[n>>2]|0)+1|0;c[n>>2]=s;if((s|0)>100)c[p>>2]=et(33313)|0}do if(!(c[p>>2]|0)){c[m>>2]=Ob[c[7584>>2]&255](c[o>>2]|0,c[q>>2]|0,(c[g>>2]|0)-1|0)|0;if((c[m>>2]|0)<0){s=et(33319)|0;c[p>>2]=xN(s,45747,c[o>>2]|0,33319)|0;break}do if((a[c[q>>2]>>0]|0)!=47){c[l>>2]=If(c[o>>2]|0)|0;while(1){if((c[l>>2]|0)<=0)break;if((a[(c[o>>2]|0)+((c[l>>2]|0)-1)>>0]|0)==47)break;c[l>>2]=(c[l>>2]|0)+-1}if(((c[m>>2]|0)+(c[l>>2]|0)+1|0)>(c[g>>2]|0)){c[p>>2]=et(33325)|0;break}else{jR((c[q>>2]|0)+(c[l>>2]|0)|0,c[q>>2]|0,(c[m>>2]|0)+1|0)|0;iR(c[q>>2]|0,c[o>>2]|0,c[l>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+(c[l>>2]|0);break}}while(0);a[(c[q>>2]|0)+(c[m>>2]|0)>>0]=0}while(0);c[o>>2]=c[q>>2]}if((c[p>>2]|0)==0?(c[o>>2]|0)!=(c[h>>2]|0):0)c[p>>2]=VN(c[o>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;if(!(c[j>>2]|0)){g=30;break}c[o>>2]=c[h>>2];if(c[p>>2]|0){g=30;break}}if((g|0)==30){Kd(c[q>>2]|0);i=r;return c[p>>2]|0}return 0}function UM(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[l+20>>2]=b;c[f>>2]=d;c[g>>2]=e;kR(c[g>>2]|0,0,c[f>>2]|0)|0;c[1926]=LQ()|0;c[h>>2]=BN(45889,0,0)|0;if((c[h>>2]|0)<0){Fb(k|0)|0;e=c[g>>2]|0;a[e>>0]=a[k>>0]|0;a[e+1>>0]=a[k+1>>0]|0;a[e+2>>0]=a[k+2>>0]|0;a[e+3>>0]=a[k+3>>0]|0;e=(c[g>>2]|0)+4|0;a[e>>0]=a[7704]|0;a[e+1>>0]=a[7705]|0;a[e+2>>0]=a[7706]|0;a[e+3>>0]=a[7707]|0;c[f>>2]=8;e=c[f>>2]|0;i=l;return e|0}do{c[j>>2]=Ob[c[7368>>2]&255](c[h>>2]|0,c[g>>2]|0,c[f>>2]|0)|0;if((c[j>>2]|0)>=0)break}while((c[(SP()|0)>>2]|0)==4);wN(0,c[h>>2]|0,33449);e=c[f>>2]|0;i=l;return e|0}function VM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;f=e+4|0;d=e;c[e+8>>2]=a;c[f>>2]=b;c[d>>2]=((c[f>>2]|0)+999999|0)/1e6|0;QQ(c[d>>2]|0)|0;i=e;return(c[d>>2]|0)*1e6|0}function WM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+32|0;f=e+12|0;g=e;d=e+8|0;c[e+16>>2]=a;c[f>>2]=b;b=g;c[b>>2]=0;c[b+4>>2]=0;c[d>>2]=YM(0,g)|0;b=g;h[c[f>>2]>>3]=(+((c[b>>2]|0)>>>0)+4294967296.0*+(c[b+4>>2]|0))/864.0e5;i=e;return c[d>>2]|0}function XM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;i=i+16|0;c[e+8>>2]=a;c[e+4>>2]=b;c[e>>2]=d;i=e;return 0}function YM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+32|0;f=e+12|0;d=e+8|0;g=e;c[e+16>>2]=a;c[f>>2]=b;c[d>>2]=0;Hb(g|0,0)|0;b=c[g>>2]|0;b=rR(1e3,0,b|0,((b|0)<0)<<31>>31|0)|0;b=gR(1045635584,49096,b|0,C|0)|0;a=(c[g+4>>2]|0)/1e3|0;a=gR(b|0,C|0,a|0,((a|0)<0)<<31>>31|0)|0;b=c[f>>2]|0;c[b>>2]=a;c[b+4>>2]=C;i=e;return c[d>>2]|0}function ZM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+12|0;f=k+8|0;g=k+4|0;h=k;c[k+16>>2]=a;c[e>>2]=b;c[f>>2]=d;c[h>>2]=12;if(!(c[e>>2]|0)){c[h>>2]=0;c[g>>2]=0;while(1){if((c[g>>2]|0)>>>0>=28)break;if(c[7268+((c[g>>2]|0)*12|0)+8>>2]|0)c[7268+((c[g>>2]|0)*12|0)+4>>2]=c[7268+((c[g>>2]|0)*12|0)+8>>2];c[g>>2]=(c[g>>2]|0)+1}j=c[h>>2]|0;i=k;return j|0}c[g>>2]=0;while(1){if((c[g>>2]|0)>>>0>=28){j=16;break}b=(yQ(c[e>>2]|0,c[7268+((c[g>>2]|0)*12|0)>>2]|0)|0)==0;d=c[g>>2]|0;if(b)break;c[g>>2]=d+1}if((j|0)==16){j=c[h>>2]|0;i=k;return j|0}if(!(c[7268+(d*12|0)+8>>2]|0))c[7268+((c[g>>2]|0)*12|0)+8>>2]=c[7268+((c[g>>2]|0)*12|0)+4>>2];c[h>>2]=0;if(!(c[f>>2]|0))c[f>>2]=c[7268+((c[g>>2]|0)*12|0)+8>>2];c[7268+((c[g>>2]|0)*12|0)+4>>2]=c[f>>2];j=c[h>>2]|0;i=k;return j|0}function _M(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g+12|0;d=g+4|0;e=g;c[g+8>>2]=a;c[d>>2]=b;c[e>>2]=0;while(1){if((c[e>>2]|0)>>>0>=28){a=6;break}a=(yQ(c[d>>2]|0,c[7268+((c[e>>2]|0)*12|0)>>2]|0)|0)==0;b=c[e>>2]|0;if(a){a=4;break}c[e>>2]=b+1}if((a|0)==4){c[f>>2]=c[7268+(b*12|0)+4>>2];f=c[f>>2]|0;i=g;return f|0}else if((a|0)==6){c[f>>2]=0;f=c[f>>2]|0;i=g;return f|0}return 0}function $M(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g+12|0;d=g+4|0;e=g;c[g+8>>2]=a;c[d>>2]=b;c[e>>2]=-1;a:do if(c[d>>2]|0){c[e>>2]=0;while(1){if((c[e>>2]|0)>=27)break a;if(!(yQ(c[d>>2]|0,c[7268+((c[e>>2]|0)*12|0)>>2]|0)|0))break a;c[e>>2]=(c[e>>2]|0)+1}}while(0);c[e>>2]=(c[e>>2]|0)+1;while(1){if((c[e>>2]|0)>=28){d=11;break}a=c[e>>2]|0;if(c[7268+((c[e>>2]|0)*12|0)+4>>2]|0){d=9;break}c[e>>2]=a+1}if((d|0)==9){c[f>>2]=c[7268+(a*12|0)>>2];f=c[f>>2]|0;i=g;return f|0}else if((d|0)==11){c[f>>2]=0;f=c[f>>2]|0;i=g;return f|0}return 0}function aN(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 7192}function bN(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=c[d>>2];iN(c[d>>2]|0,0)|0;Kd(c[(c[e>>2]|0)+24>>2]|0);a=PN(c[d>>2]|0)|0;i=b;return a|0}function cN(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,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+32|0;g=m+28|0;o=m+24|0;h=m+20|0;j=m+16|0;n=m;l=m+12|0;k=m+8|0;c[o>>2]=a;c[h>>2]=b;c[j>>2]=d;b=n;c[b>>2]=e;c[b+4>>2]=f;c[l>>2]=c[o>>2];b=n;c[k>>2]=ON(c[l>>2]|0,c[b>>2]|0,c[b+4>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;if((c[k>>2]|0)==(c[j>>2]|0)){c[g>>2]=0;o=c[g>>2]|0;i=m;return o|0}if((c[k>>2]|0)<0){c[g>>2]=266;o=c[g>>2]|0;i=m;return o|0}else{KN(c[l>>2]|0,0);kR((c[h>>2]|0)+(c[k>>2]|0)|0,0,(c[j>>2]|0)-(c[k>>2]|0)|0)|0;c[g>>2]=522;o=c[g>>2]|0;i=m;return o|0}return 0}function dN(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,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;g=n+28|0;o=n+24|0;h=n+20|0;j=n+16|0;k=n;l=n+12|0;m=n+8|0;c[o>>2]=a;c[h>>2]=b;c[j>>2]=d;b=k;c[b>>2]=e;c[b+4>>2]=f;c[l>>2]=c[o>>2];c[m>>2]=0;while(1){o=k;o=IN(c[l>>2]|0,c[o>>2]|0,c[o+4>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;c[m>>2]=o;if(!((o|0)<(c[j>>2]|0)?(c[m>>2]|0)>0:0))break;c[j>>2]=(c[j>>2]|0)-(c[m>>2]|0);b=c[m>>2]|0;o=k;b=gR(c[o>>2]|0,c[o+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;o=k;c[o>>2]=b;c[o+4>>2]=C;c[h>>2]=(c[h>>2]|0)+(c[m>>2]|0)}if((c[j>>2]|0)<=(c[m>>2]|0)){c[g>>2]=0;o=c[g>>2]|0;i=n;return o|0}if((c[m>>2]|0)<0?(c[(c[l>>2]|0)+20>>2]|0)!=28:0){c[g>>2]=778;o=c[g>>2]|0;i=n;return o|0}KN(c[l>>2]|0,0);c[g>>2]=13;o=c[g>>2]|0;i=n;return o|0}function eN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;e=j+20|0;k=j+16|0;f=j;g=j+12|0;h=j+8|0;c[k>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[g>>2]=c[k>>2];if((c[(c[g>>2]|0)+40>>2]|0)>0){k=f;a=c[(c[g>>2]|0)+40>>2]|0;a=gR(c[k>>2]|0,c[k+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;a=fR(a|0,C|0,1,0)|0;k=c[(c[g>>2]|0)+40>>2]|0;k=pR(a|0,C|0,k|0,((k|0)<0)<<31>>31|0)|0;a=c[(c[g>>2]|0)+40>>2]|0;a=rR(k|0,C|0,a|0,((a|0)<0)<<31>>31|0)|0;k=f;c[k>>2]=a;c[k+4>>2]=C}k=f;c[h>>2]=NN(c[(c[g>>2]|0)+12>>2]|0,c[k>>2]|0,c[k+4>>2]|0)|0;if(c[h>>2]|0){k=c[g>>2]|0;KN(k,c[(SP()|0)>>2]|0);c[e>>2]=xN(1546,45594,c[(c[g>>2]|0)+32>>2]|0,30893)|0;k=c[e>>2]|0;i=j;return k|0}else{c[e>>2]=0;k=c[e>>2]|0;i=j;return k|0}return 0}function fN(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;k=i;i=i+32|0;f=k+28|0;o=k+24|0;n=k+20|0;j=k+16|0;h=k+12|0;l=k+8|0;m=k+4|0;g=k;c[o>>2]=a;c[n>>2]=d;c[h>>2]=c[o>>2];c[l>>2]=c[n>>2]&16;c[m>>2]=(c[n>>2]&15|0)==3&1;c[j>>2]=MN(c[(c[h>>2]|0)+12>>2]|0,c[m>>2]|0,c[l>>2]|0)|0;d=c[h>>2]|0;if(c[j>>2]|0){KN(d,c[(SP()|0)>>2]|0);c[f>>2]=xN(1034,45878,c[(c[h>>2]|0)+32>>2]|0,30848)|0;o=c[f>>2]|0;i=k;return o|0}if((e[d+18>>1]|0)&8){c[j>>2]=Yb[c[7476>>2]&255](c[(c[h>>2]|0)+32>>2]|0,g)|0;if(!(c[j>>2]|0)){MN(c[g>>2]|0,0,0)|0;wN(c[h>>2]|0,c[g>>2]|0,30862)}else c[j>>2]=0;o=(c[h>>2]|0)+18|0;b[o>>1]=(e[o>>1]|0)&-9}c[f>>2]=c[j>>2];o=c[f>>2]|0;i=k;return o|0}function gN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+96|0;d=h+88|0;e=h+84|0;f=h+80|0;j=h+76|0;g=h;c[e>>2]=a;c[f>>2]=b;c[j>>2]=Yb[c[7332>>2]&255](c[(c[e>>2]|0)+12>>2]|0,g)|0;if(c[j>>2]|0){j=c[e>>2]|0;KN(j,c[(SP()|0)>>2]|0);c[d>>2]=1802;j=c[d>>2]|0;i=h;return j|0}b=c[g+36>>2]|0;j=c[f>>2]|0;c[j>>2]=b;c[j+4>>2]=((b|0)<0)<<31>>31;j=c[f>>2]|0;if((c[j>>2]|0)==1&(c[j+4>>2]|0)==0){j=c[f>>2]|0;c[j>>2]=0;c[j+4>>2]=0}c[d>>2]=0;j=c[d>>2]|0;i=h;return j|0}function hN(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;f=m+24|0;n=m+20|0;g=m+16|0;h=m+12|0;l=m+8|0;j=m+4|0;k=m;c[n>>2]=b;c[g>>2]=e;c[h>>2]=c[n>>2];c[l>>2]=c[(c[h>>2]|0)+24>>2];c[j>>2]=0;if((d[(c[h>>2]|0)+16>>0]|0|0)>0){a[(c[h>>2]|0)+16>>0]=c[g>>2];Ha(c[l>>2]|0,0)|0;c[f>>2]=0;n=c[f>>2]|0;i=m;return n|0}c[j>>2]=Yb[c[7488>>2]&255](c[l>>2]|0,511)|0;if((c[j>>2]|0)>=0){a[(c[h>>2]|0)+16>>0]=c[g>>2];c[f>>2]=c[j>>2];n=c[f>>2]|0;i=m;return n|0}c[k>>2]=c[(SP()|0)>>2];if(17!=(c[k>>2]|0)){c[j>>2]=LN(c[k>>2]|0,3850)|0;if((c[j>>2]|0)!=5)KN(c[h>>2]|0,c[k>>2]|0)}else c[j>>2]=5;c[f>>2]=c[j>>2];n=c[f>>2]|0;i=m;return n|0}function iN(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;f=m+24|0;n=m+20|0;g=m+16|0;h=m+12|0;l=m+8|0;j=m+4|0;k=m;c[n>>2]=b;c[g>>2]=e;c[h>>2]=c[n>>2];c[l>>2]=c[(c[h>>2]|0)+24>>2];if((d[(c[h>>2]|0)+16>>0]|0|0)==(c[g>>2]|0)){c[f>>2]=0;n=c[f>>2]|0;i=m;return n|0}if((c[g>>2]|0)==1){a[(c[h>>2]|0)+16>>0]=1;c[f>>2]=0;n=c[f>>2]|0;i=m;return n|0}c[j>>2]=Tb[c[7500>>2]&255](c[l>>2]|0)|0;if((c[j>>2]|0)>=0){a[(c[h>>2]|0)+16>>0]=0;c[f>>2]=0;n=c[f>>2]|0;i=m;return n|0}c[k>>2]=c[(SP()|0)>>2];if((c[k>>2]|0)==2)c[j>>2]=0;else{c[j>>2]=2058;KN(c[h>>2]|0,c[k>>2]|0)}c[f>>2]=c[j>>2];n=c[f>>2]|0;i=m;return n|0}function jN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;j=e+16|0;f=e+12|0;d=e+8|0;g=e+4|0;h=e;c[j>>2]=a;c[f>>2]=b;c[d>>2]=0;c[g>>2]=0;c[h>>2]=c[j>>2];c[g>>2]=(Yb[c[7296>>2]&255](c[(c[h>>2]|0)+24>>2]|0,0)|0)==0&1;c[c[f>>2]>>2]=c[g>>2];i=e;return c[d>>2]|0}function kN(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+32|0;k=m;f=m+28|0;o=m+24|0;n=m+20|0;g=m+16|0;h=m+12|0;j=m+8|0;l=m+4|0;c[o>>2]=a;c[n>>2]=b;c[g>>2]=e;c[h>>2]=c[o>>2];do switch(c[n>>2]|0){case 1:{c[c[g>>2]>>2]=d[(c[h>>2]|0)+16>>0];c[f>>2]=0;break}case 4:{c[c[g>>2]>>2]=c[(c[h>>2]|0)+20>>2];c[f>>2]=0;break}case 6:{c[(c[h>>2]|0)+40>>2]=c[c[g>>2]>>2];c[f>>2]=0;break}case 5:{o=c[g>>2]|0;c[j>>2]=DN(c[h>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0;c[f>>2]=c[j>>2];break}case 10:{EN(c[h>>2]|0,4,c[g>>2]|0);c[f>>2]=0;break}case 13:{EN(c[h>>2]|0,16,c[g>>2]|0);c[f>>2]=0;break}case 12:{c[k>>2]=c[(c[(c[h>>2]|0)+4>>2]|0)+16>>2];o=Od(19255,k)|0;c[c[g>>2]>>2]=o;c[f>>2]=0;break}case 16:{o=c[(c[(c[h>>2]|0)+4>>2]|0)+8>>2]|0;c[l>>2]=Jd(o,((o|0)<0)<<31>>31)|0;if(c[l>>2]|0){FN(c[(c[(c[h>>2]|0)+4>>2]|0)+8>>2]|0,c[l>>2]|0)|0;c[c[g>>2]>>2]=c[l>>2]}c[f>>2]=0;break}case 20:{o=GN(c[h>>2]|0)|0;c[c[g>>2]>>2]=o;c[f>>2]=0;break}default:c[f>>2]=12}while(0);i=m;return c[f>>2]|0}function lN(a){a=a|0;var b=0;b=i;i=i+16|0;c[b>>2]=a;i=b;return 4096}function mN(a){a=a|0;var b=0,d=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;f=d+4|0;b=d;c[g>>2]=a;c[f>>2]=c[g>>2];c[b>>2]=0;if(!((e[(c[f>>2]|0)+18>>1]|0)&16)){g=c[b>>2]|0;i=d;return g|0}c[b>>2]=c[b>>2]|4096;g=c[b>>2]|0;i=d;return g|0}function nN(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=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;u=i;i=i+48|0;v=u+32|0;h=u+28|0;j=u+24|0;k=u+20|0;p=u+16|0;o=u+12|0;r=u+8|0;q=u+4|0;s=u;n=u+40|0;l=u+38|0;m=u+36|0;c[v>>2]=a;c[h>>2]=d;c[j>>2]=f;c[k>>2]=g;c[p>>2]=c[v>>2];c[o>>2]=c[(c[p>>2]|0)+36>>2];c[q>>2]=c[c[o>>2]>>2];c[s>>2]=0;b[n>>1]=(1<<(c[h>>2]|0)+(c[j>>2]|0))-(1<>2]);if(c[k>>2]&1){b[l>>1]=0;c[r>>2]=c[(c[q>>2]|0)+32>>2];while(1){if(!(c[r>>2]|0))break;if((c[r>>2]|0)!=(c[o>>2]|0))b[l>>1]=e[l>>1]|0|(e[(c[r>>2]|0)+10>>1]|0);c[r>>2]=c[(c[r>>2]|0)+4>>2]}if(!((e[n>>1]|0)&(e[l>>1]|0)))c[s>>2]=CN(c[p>>2]|0,2,(c[h>>2]|0)+120|0,c[j>>2]|0)|0;else c[s>>2]=0;if(c[s>>2]|0){v=c[s>>2]|0;i=u;return v|0}v=(c[o>>2]|0)+12|0;b[v>>1]=(e[v>>1]|0)&~(e[n>>1]|0);v=(c[o>>2]|0)+10|0;b[v>>1]=(e[v>>1]|0)&~(e[n>>1]|0);v=c[s>>2]|0;i=u;return v|0}if(!(c[k>>2]&4)){c[r>>2]=c[(c[q>>2]|0)+32>>2];while(1){if(!(c[r>>2]|0))break;if((e[(c[r>>2]|0)+12>>1]|0)&(e[n>>1]|0)){t=28;break}if((e[(c[r>>2]|0)+10>>1]|0)&(e[n>>1]|0)){t=28;break}c[r>>2]=c[(c[r>>2]|0)+4>>2]}if((t|0)==28)c[s>>2]=5;if(c[s>>2]|0){v=c[s>>2]|0;i=u;return v|0}c[s>>2]=CN(c[p>>2]|0,1,(c[h>>2]|0)+120|0,c[j>>2]|0)|0;if(c[s>>2]|0){v=c[s>>2]|0;i=u;return v|0}v=(c[o>>2]|0)+12|0;b[v>>1]=e[v>>1]|0|(e[n>>1]|0);v=c[s>>2]|0;i=u;return v|0}b[m>>1]=0;c[r>>2]=c[(c[q>>2]|0)+32>>2];while(1){if(!(c[r>>2]|0))break;if((e[(c[r>>2]|0)+12>>1]|0)&(e[n>>1]|0)){t=16;break}b[m>>1]=e[m>>1]|0|(e[(c[r>>2]|0)+10>>1]|0);c[r>>2]=c[(c[r>>2]|0)+4>>2]}if((t|0)==16)c[s>>2]=5;do if(!(c[s>>2]|0))if(!((e[m>>1]|0)&(e[n>>1]|0))){c[s>>2]=CN(c[p>>2]|0,0,(c[h>>2]|0)+120|0,c[j>>2]|0)|0;break}else{c[s>>2]=0;break}while(0);if(c[s>>2]|0){v=c[s>>2]|0;i=u;return v|0}v=(c[o>>2]|0)+10|0;b[v>>1]=e[v>>1]|0|(e[n>>1]|0);v=c[s>>2]|0;i=u;return v|0}function oN(a){a=a|0;var b=0;b=i;i=i+16|0;c[b>>2]=a;sN();uN();i=b;return}function pN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;d=k+24|0;l=k+20|0;e=k+16|0;f=k+12|0;h=k+8|0;j=k+4|0;g=k;c[l>>2]=a;c[e>>2]=b;c[g>>2]=c[l>>2];c[f>>2]=c[(c[g>>2]|0)+36>>2];if(!(c[f>>2]|0)){c[d>>2]=0;l=c[d>>2]|0;i=k;return l|0}c[h>>2]=c[c[f>>2]>>2];c[j>>2]=(c[h>>2]|0)+32;while(1){if((c[c[j>>2]>>2]|0)==(c[f>>2]|0))break;c[j>>2]=(c[c[j>>2]>>2]|0)+4}c[c[j>>2]>>2]=c[(c[f>>2]|0)+4>>2];Kd(c[f>>2]|0);c[(c[g>>2]|0)+36>>2]=0;sN();l=(c[h>>2]|0)+28|0;c[l>>2]=(c[l>>2]|0)+-1;if(!(c[(c[h>>2]|0)+28>>2]|0)){if((c[e>>2]|0)!=0?(c[(c[h>>2]|0)+12>>2]|0)>=0:0)Tb[c[7464>>2]&255](c[(c[h>>2]|0)+8>>2]|0)|0;tN(c[g>>2]|0)}uN();c[d>>2]=0;l=c[d>>2]|0;i=k;return l|0}function qN(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;g=i;i=i+32|0;h=g+8|0;c[g+16>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;c[g+12>>2]=e;c[h>>2]=f;c[c[h>>2]>>2]=0;i=g;return 0}function rN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;i=i+16|0;c[f+12>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[f+8>>2]=e;i=f;return 0}function sN(){return}function tN(a){a=a|0;var b=0,d=0,f=0,g=0,h=0;h=i;i=i+16|0;b=h+12|0;g=h+8|0;f=h+4|0;d=h;c[b>>2]=a;c[g>>2]=c[(c[(c[b>>2]|0)+8>>2]|0)+20>>2];if(!(c[g>>2]|0)){i=h;return}if(c[(c[g>>2]|0)+28>>2]|0){i=h;return}c[f>>2]=vN()|0;c[d>>2]=0;while(1){a=c[g>>2]|0;if((c[d>>2]|0)>=(e[(c[g>>2]|0)+20>>1]|0|0))break;if((c[a+12>>2]|0)>=0)Yb[c[7548>>2]&255](c[(c[(c[g>>2]|0)+24>>2]|0)+(c[d>>2]<<2)>>2]|0,c[(c[g>>2]|0)+16>>2]|0)|0;else Kd(c[(c[(c[g>>2]|0)+24>>2]|0)+(c[d>>2]<<2)>>2]|0);c[d>>2]=(c[d>>2]|0)+(c[f>>2]|0)}Kd(c[a+24>>2]|0);if((c[(c[g>>2]|0)+12>>2]|0)>=0){wN(c[b>>2]|0,c[(c[g>>2]|0)+12>>2]|0,31469);c[(c[g>>2]|0)+12>>2]=-1}c[(c[c[g>>2]>>2]|0)+20>>2]=0;Kd(c[g>>2]|0);i=h;return}function uN(){return}function vN(){var a=0,b=0,d=0,e=0;e=i;i=i+16|0;a=e+8|0;d=e+4|0;b=e;c[d>>2]=32768;c[b>>2]=Pb[c[7572>>2]&255]()|0;if((c[b>>2]|0)<(c[d>>2]|0)){c[a>>2]=1;d=c[a>>2]|0;i=e;return d|0}else{c[a>>2]=(c[b>>2]|0)/(c[d>>2]|0)|0;d=c[a>>2]|0;i=e;return d|0}return 0}function wN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+8|0;h=g+4|0;f=g;c[e>>2]=a;c[h>>2]=b;c[f>>2]=d;if(!(Tb[c[7284>>2]&255](c[h>>2]|0)|0)){i=g;return}if(c[e>>2]|0)e=c[(c[e>>2]|0)+32>>2]|0;else e=0;xN(4106,45534,e,c[f>>2]|0)|0;i=g;return}function xN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+48|0;l=n;f=n+40|0;g=n+36|0;h=n+32|0;j=n+28|0;m=n+24|0;k=n+20|0;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=c[(SP()|0)>>2];c[m>>2]=TP(c[k>>2]|0)|0;if(!(c[h>>2]|0))c[h>>2]=19266;d=c[f>>2]|0;a=c[k>>2]|0;k=c[g>>2]|0;e=c[h>>2]|0;b=c[m>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=a;c[l+8>>2]=k;c[l+12>>2]=e;c[l+16>>2]=b;Rd(d,45540,l);i=n;return c[f>>2]|0}function yN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e;j=e+12|0;h=e+8|0;g=e+4|0;c[j>>2]=a;c[h>>2]=b;c[g>>2]=d;d=c[j>>2]|0;a=c[h>>2]|0;c[f>>2]=c[g>>2];a=VP(d,a,f)|0;i=e;return a|0}function zN(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+544|0;l=k;e=k+20|0;m=k+16|0;f=k+12|0;h=k+8|0;g=k+4|0;j=k+24|0;c[m>>2]=b;c[f>>2]=d;c[g>>2]=-1;c[l>>2]=c[m>>2];Qd(512,j,19255,l)|0;c[h>>2]=BQ(j)|0;while(1){if((c[h>>2]|0)<=0)break;if((a[j+(c[h>>2]|0)>>0]|0)==47)break;c[h>>2]=(c[h>>2]|0)+-1}if((c[h>>2]|0)>0)a[j+(c[h>>2]|0)>>0]=0;else{if((a[j>>0]|0)!=47)a[j>>0]=46;a[j+1>>0]=0}c[g>>2]=BN(j,0,0)|0;c[c[f>>2]>>2]=c[g>>2];if((c[g>>2]|0)>=0){c[e>>2]=0;m=c[e>>2]|0;i=k;return m|0}else{c[e>>2]=xN(et(30807)|0,45675,j,30807)|0;m=c[e>>2]|0;i=k;return m|0}return 0}function AN(){return ib(30)|0}function BN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+112|0;l=m;e=m+100|0;f=m+96|0;g=m+92|0;h=m+88|0;j=m+84|0;k=m+8|0;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[j>>2]=(c[g>>2]|0)!=0?c[g>>2]|0:420;while(1){c[h>>2]=Ob[c[7272>>2]&255](c[e>>2]|0,c[f>>2]|524288,c[j>>2]|0)|0;if((c[h>>2]|0)<0)if((c[(SP()|0)>>2]|0)==4)continue;else break;if((c[h>>2]|0)>=3)break;Tb[c[7284>>2]&255](c[h>>2]|0)|0;a=c[h>>2]|0;c[l>>2]=c[e>>2];c[l+4>>2]=a;Rd(28,45762,l);c[h>>2]=-1;if((Ob[c[7272>>2]&255](45805,c[f>>2]|0,c[g>>2]|0)|0)<0)break}if(!((c[h>>2]|0)>=0&(c[g>>2]|0)!=0)){a=c[h>>2]|0;i=m;return a|0}if(Yb[c[7332>>2]&255](c[h>>2]|0,k)|0){a=c[h>>2]|0;i=m;return a|0}if(c[k+36>>2]|0){a=c[h>>2]|0;i=m;return a|0}if((c[k+12>>2]&511|0)==(c[g>>2]|0)){a=c[h>>2]|0;i=m;return a|0}Yb[c[7440>>2]&255](c[h>>2]|0,c[g>>2]|0)|0;a=c[h>>2]|0;i=m;return a|0}function CN(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+48|0;n=o;p=o+40|0;g=o+36|0;h=o+32|0;j=o+28|0;l=o+24|0;k=o+8|0;m=o+4|0;c[p>>2]=a;c[g>>2]=d;c[h>>2]=e;c[j>>2]=f;c[m>>2]=0;c[l>>2]=c[(c[(c[p>>2]|0)+8>>2]|0)+20>>2];if((c[(c[l>>2]|0)+12>>2]|0)<0){p=c[m>>2]|0;i=o;return p|0}c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;b[k>>1]=c[g>>2];b[k+2>>1]=0;c[k+4>>2]=c[h>>2];c[k+8>>2]=c[j>>2];a=c[1839]|0;p=c[(c[l>>2]|0)+12>>2]|0;c[n>>2]=k;c[m>>2]=Ob[a&255](p,13,n)|0;c[m>>2]=(c[m>>2]|0)!=-1?0:5;p=c[m>>2]|0;i=o;return p|0}function DN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+128|0;e=n+112|0;f=n+108|0;g=n+16|0;l=n+8|0;h=n+32|0;k=n+28|0;m=n+24|0;j=n;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;a:do if((c[(c[f>>2]|0)+40>>2]|0)>0){if(Yb[c[7332>>2]&255](c[(c[f>>2]|0)+12>>2]|0,h)|0){c[e>>2]=1802;a=c[e>>2]|0;i=n;return a|0}b=c[(c[f>>2]|0)+40>>2]|0;b=gR(c[g>>2]|0,c[g+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;b=fR(b|0,C|0,1,0)|0;g=c[(c[f>>2]|0)+40>>2]|0;g=pR(b|0,C|0,g|0,((g|0)<0)<<31>>31|0)|0;b=c[(c[f>>2]|0)+40>>2]|0;b=rR(g|0,C|0,b|0,((b|0)<0)<<31>>31|0)|0;g=l;c[g>>2]=b;c[g+4>>2]=C;g=l;b=c[g+4>>2]|0;a=c[h+36>>2]|0;d=((a|0)<0)<<31>>31;if((b|0)>(d|0)|((b|0)==(d|0)?(c[g>>2]|0)>>>0>a>>>0:0)){c[k>>2]=c[h+40>>2];c[m>>2]=0;h=_((c[h+36>>2]|0)/(c[k>>2]|0)|0,c[k>>2]|0)|0;h=h+(c[k>>2]|0)-1|0;a=j;c[a>>2]=h;c[a+4>>2]=((h|0)<0)<<31>>31;while(1){d=j;h=c[d>>2]|0;d=c[d+4>>2]|0;g=l;a=c[k>>2]|0;a=gR(c[g>>2]|0,c[g+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;a=fR(a|0,C|0,1,0)|0;g=C;if(!((d|0)<(g|0)|(d|0)==(g|0)&h>>>0>>0))break a;h=j;d=c[h+4>>2]|0;a=l;g=c[a+4>>2]|0;if((d|0)>(g|0)|((d|0)==(g|0)?(c[h>>2]|0)>>>0>=(c[a>>2]|0)>>>0:0)){h=l;h=fR(c[h>>2]|0,c[h+4>>2]|0,1,0)|0;a=j;c[a>>2]=h;c[a+4>>2]=C}a=j;c[m>>2]=IN(c[f>>2]|0,c[a>>2]|0,c[a+4>>2]|0,19266,1)|0;if((c[m>>2]|0)!=1)break;h=c[k>>2]|0;a=j;h=gR(c[a>>2]|0,c[a+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0;a=j;c[a>>2]=h;c[a+4>>2]=C}c[e>>2]=778;a=c[e>>2]|0;i=n;return a|0}}while(0);c[e>>2]=0;a=c[e>>2]|0;i=n;return a|0}function EN(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;m=i;i=i+16|0;k=m+4|0;j=m+8|0;l=m;c[k>>2]=f;a[j>>0]=g;c[l>>2]=h;if((c[c[l>>2]>>2]|0)<0){c[c[l>>2]>>2]=((e[(c[k>>2]|0)+18>>1]|0)&(d[j>>0]|0)|0)!=0&1;i=m;return}j=d[j>>0]|0;if(!(c[c[l>>2]>>2]|0)){l=(c[k>>2]|0)+18|0;b[l>>1]=(e[l>>1]|0)&~j;i=m;return}else{l=(c[k>>2]|0)+18|0;b[l>>1]=e[l>>1]|0|j;i=m;return}}function FN(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=i;i=i+64|0;j=m+8|0;l=m+48|0;e=m+44|0;f=m+40|0;k=m+36|0;g=m+32|0;h=m;c[e>>2]=b;c[f>>2]=d;c[g>>2]=0;c[k>>2]=HN()|0;while(1){Sd(8,h);a[(c[f>>2]|0)+((c[e>>2]|0)-2)>>0]=0;b=c[e>>2]|0;d=c[f>>2]|0;o=h;p=c[o>>2]|0;o=c[o+4>>2]|0;c[j>>2]=c[k>>2];n=j+8|0;c[n>>2]=p;c[n+4>>2]=o;c[j+16>>2]=0;Qd(b,d,45815,j)|0;if(a[(c[f>>2]|0)+((c[e>>2]|0)-2)>>0]|0){e=4;break}p=c[g>>2]|0;c[g>>2]=p+1;if((p|0)>10){e=4;break}if(Yb[c[7296>>2]&255](c[f>>2]|0,0)|0){e=6;break}}if((e|0)==4){c[l>>2]=1;p=c[l>>2]|0;i=m;return p|0}else if((e|0)==6){c[l>>2]=0;p=c[l>>2]|0;i=m;return p|0}return 0}function GN(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+80|0;b=e+76|0;d=e;c[b>>2]=a;if(!(c[(c[b>>2]|0)+8>>2]|0)){a=0;a=a&1;i=e;return a|0}if(Yb[c[7320>>2]&255](c[(c[b>>2]|0)+32>>2]|0,d)|0){a=1;a=a&1;i=e;return a|0}a=(c[d+72>>2]|0)!=(c[(c[(c[b>>2]|0)+8>>2]|0)+4>>2]|0);a=a&1;i=e;return a|0}function HN(){var a=0,b=0,d=0,e=0,f=0;e=i;i=i+96|0;b=e+80|0;a=e+4|0;d=e;c[d>>2]=c[241];if(!(c[1901]|0))c[1901]=rb(45832)|0;if(!(c[1902]|0))c[1902]=rb(45846)|0;c[b>>2]=0;while(1){if((c[b>>2]|0)>>>0>=6){a=12;break}if((((c[d>>2]|0)!=0?(Yb[c[7320>>2]&255](c[d>>2]|0,a)|0)==0:0)?(c[a+12>>2]&61440|0)==16384:0)?(Yb[c[7296>>2]&255](c[d>>2]|0,7)|0)==0:0){a=12;break}f=c[b>>2]|0;c[b>>2]=f+1;c[d>>2]=c[7604+(f<<2)>>2]}if((a|0)==12){i=e;return c[d>>2]|0}return 0}function IN(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,j=0,k=0,l=0;g=i;i=i+32|0;h=g+16|0;l=g;k=g+12|0;j=g+8|0;c[h>>2]=a;a=l;c[a>>2]=b;c[a+4>>2]=d;c[k>>2]=e;c[j>>2]=f;e=l;e=JN(c[(c[h>>2]|0)+12>>2]|0,c[e>>2]|0,c[e+4>>2]|0,c[k>>2]|0,c[j>>2]|0,(c[h>>2]|0)+20|0)|0;i=g;return e|0}function JN(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;h=q+32|0;j=q+8|0;k=q+28|0;l=q+24|0;m=q+20|0;o=q+16|0;n=q;c[h>>2]=a;a=j;c[a>>2]=b;c[a+4>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[o>>2]=0;c[l>>2]=c[l>>2]&131071;do{e=MQ(c[h>>2]|0,c[j>>2]|0,0)|0;g=n;c[g>>2]=e;c[g+4>>2]=((e|0)<0)<<31>>31;if((c[n+4>>2]|0)<0){p=3;break}c[o>>2]=Ob[c[7404>>2]&255](c[h>>2]|0,c[k>>2]|0,c[l>>2]|0)|0;if((c[o>>2]|0)>=0)break}while((c[(SP()|0)>>2]|0)==4);if((p|0)==3)c[o>>2]=-1;if((c[o>>2]|0)>=0){p=c[o>>2]|0;i=q;return p|0}p=c[(SP()|0)>>2]|0;c[c[m>>2]>>2]=p;p=c[o>>2]|0;i=q;return p|0}function KN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;c[(c[e>>2]|0)+20>>2]=c[f>>2];i=d;return}function LN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+8|0;g=f+4|0;e=f;c[g>>2]=a;c[e>>2]=b;switch(c[g>>2]|0){ -case 37:case 4:case 16:case 110:case 11:case 13:{c[d>>2]=5;break}case 1:{c[d>>2]=3;break}default:c[d>>2]=c[e>>2]}i=f;return c[d>>2]|0}function MN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=i;i=i+16|0;g=f+12|0;e=f;c[g>>2]=a;c[f+8>>2]=b;c[f+4>>2]=d;c[e>>2]=HQ(c[g>>2]|0)|0;i=f;return c[e>>2]|0}function NN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+12|0;f=h;g=h+8|0;c[e>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;while(1){c[g>>2]=Yb[c[7344>>2]&255](c[e>>2]|0,c[f>>2]|0)|0;if((c[g>>2]|0)>=0){b=4;break}if((c[(SP()|0)>>2]|0)!=4){b=4;break}}if((b|0)==4){i=h;return c[g>>2]|0}return 0}function ON(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;g=q+36|0;h=q+32|0;j=q+8|0;k=q+28|0;l=q+24|0;m=q+20|0;o=q+16|0;n=q;c[h>>2]=a;a=j;c[a>>2]=b;c[a+4>>2]=d;c[k>>2]=e;c[l>>2]=f;c[o>>2]=0;do{a=MQ(c[(c[h>>2]|0)+12>>2]|0,c[j>>2]|0,0)|0;e=n;c[e>>2]=a;c[e+4>>2]=((a|0)<0)<<31>>31;if((c[n+4>>2]|0)<0){p=3;break}c[m>>2]=Ob[c[7368>>2]&255](c[(c[h>>2]|0)+12>>2]|0,c[k>>2]|0,c[l>>2]|0)|0;if((c[m>>2]|0)==(c[l>>2]|0))break;if((c[m>>2]|0)>=0){if((c[m>>2]|0)>0){c[l>>2]=(c[l>>2]|0)-(c[m>>2]|0);a=c[m>>2]|0;e=j;a=gR(c[e>>2]|0,c[e+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;e=j;c[e>>2]=a;c[e+4>>2]=C;c[o>>2]=(c[o>>2]|0)+(c[m>>2]|0);c[k>>2]=(c[k>>2]|0)+(c[m>>2]|0)}}else{if((c[(SP()|0)>>2]|0)!=4){p=8;break}c[m>>2]=1}}while((c[m>>2]|0)>0);if((p|0)==3){p=c[h>>2]|0;KN(p,c[(SP()|0)>>2]|0);c[g>>2]=-1;p=c[g>>2]|0;i=q;return p|0}else if((p|0)==8){c[o>>2]=0;p=c[h>>2]|0;KN(p,c[(SP()|0)>>2]|0)}c[g>>2]=(c[m>>2]|0)+(c[o>>2]|0);p=c[g>>2]|0;i=q;return p|0}function PN(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=c[e>>2];if((c[(c[b>>2]|0)+12>>2]|0)>=0){wN(c[b>>2]|0,c[(c[b>>2]|0)+12>>2]|0,29216);c[(c[b>>2]|0)+12>>2]=-1}Kd(c[(c[b>>2]|0)+28>>2]|0);a=c[b>>2]|0;b=a+44|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));i=d;return 0}function QN(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 7628}function RN(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=PN(c[d>>2]|0)|0;i=b;return a|0}function SN(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 0}function TN(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 0}function UN(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[d+4>>2]=a;c[e>>2]=b;c[c[e>>2]>>2]=0;i=d;return 0}function VN(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;m=n;f=n+24|0;g=n+20|0;h=n+16|0;j=n+12|0;l=n+8|0;k=n+4|0;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[l>>2]=If(c[g>>2]|0)|0;c[k>>2]=0;do if((a[c[g>>2]>>0]|0)!=47){if(Yb[c[7308>>2]&255](c[h>>2]|0,(c[j>>2]|0)-2|0)|0){c[k>>2]=If(c[h>>2]|0)|0;b=c[k>>2]|0;c[k>>2]=b+1;a[(c[h>>2]|0)+b>>0]=47;break}b=et(33245)|0;c[f>>2]=xN(b,45576,c[g>>2]|0,33245)|0;b=c[f>>2]|0;i=n;return b|0}while(0);if(((c[k>>2]|0)+(c[l>>2]|0)+1|0)>(c[j>>2]|0)){a[(c[h>>2]|0)+(c[k>>2]|0)>>0]=0;c[f>>2]=et(33254)|0;b=c[f>>2]|0;i=n;return b|0}else{d=(c[j>>2]|0)-(c[k>>2]|0)|0;b=(c[h>>2]|0)+(c[k>>2]|0)|0;c[m>>2]=c[g>>2];Qd(d,b,19255,m)|0;c[f>>2]=0;b=c[f>>2]|0;i=n;return b|0}return 0}function WN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+96|0;k=j+92|0;d=j+88|0;f=j+84|0;h=j+8|0;e=j+4|0;g=j;c[k>>2]=a;c[d>>2]=b;c[f>>2]=0;if(Yb[c[7320>>2]&255](c[k>>2]|0,h)|0){k=c[f>>2]|0;i=j;return k|0}sN();c[e>>2]=c[1946];while(1){if(c[e>>2]|0)if((c[c[e>>2]>>2]|0)!=(c[h>>2]|0))a=1;else a=(c[(c[e>>2]|0)+4>>2]|0)!=(c[h+72>>2]|0);else a=0;b=c[e>>2]|0;if(!a)break;c[e>>2]=c[b+32>>2]}if(b){c[g>>2]=(c[e>>2]|0)+28;while(1){if(!(c[c[g>>2]>>2]|0))break;if((c[(c[c[g>>2]>>2]|0)+4>>2]|0)==(c[d>>2]|0))break;c[g>>2]=(c[c[g>>2]>>2]|0)+8}c[f>>2]=c[c[g>>2]>>2];if(c[f>>2]|0)c[c[g>>2]>>2]=c[(c[f>>2]|0)+8>>2]}uN();k=c[f>>2]|0;i=j;return k|0}function XN(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+624|0;h=r+100|0;j=r+96|0;k=r+92|0;l=r+88|0;m=r+84|0;o=r+80|0;q=r+104|0;n=r+76|0;p=r;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[o>>2]=0;c[c[k>>2]>>2]=0;c[c[l>>2]>>2]=0;c[c[m>>2]>>2]=0;if(!(c[j>>2]&526336)){if(!(c[j>>2]&8)){b=c[o>>2]|0;i=r;return b|0}c[c[k>>2]>>2]=384;b=c[o>>2]|0;i=r;return b|0}c[n>>2]=(If(c[h>>2]|0)|0)-1;while(1){if((a[(c[h>>2]|0)+(c[n>>2]|0)>>0]|0)==45)break;c[n>>2]=(c[n>>2]|0)+-1}iR(q|0,c[h>>2]|0,c[n>>2]|0)|0;a[q+(c[n>>2]|0)>>0]=0;if(!(Yb[c[7320>>2]&255](q,p)|0)){c[c[k>>2]>>2]=c[p+12>>2]&511;c[c[l>>2]>>2]=c[p+20>>2];c[c[m>>2]>>2]=c[p+24>>2];b=c[o>>2]|0;i=r;return b|0}else{c[o>>2]=1802;b=c[o>>2]|0;i=r;return b|0}return 0}function YN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(Pb[c[7524>>2]&255]()|0){b=0;i=h;return b|0}b=Ob[c[7512>>2]&255](c[e>>2]|0,c[f>>2]|0,c[g>>2]|0)|0;i=h;return b|0}function ZN(a,d,f,g,h){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+48|0;r=t;j=t+40|0;k=t+36|0;u=t+32|0;l=t+28|0;m=t+24|0;o=t+20|0;p=t+16|0;q=t+12|0;s=t+8|0;n=t+4|0;c[j>>2]=a;c[k>>2]=d;c[u>>2]=f;c[l>>2]=g;c[m>>2]=h;c[p>>2]=c[u>>2];c[q>>2]=0;c[(c[p>>2]|0)+12>>2]=c[k>>2];c[(c[p>>2]|0)+4>>2]=c[j>>2];c[(c[p>>2]|0)+32>>2]=c[l>>2];b[(c[p>>2]|0)+18>>1]=c[m>>2]&255;if(Hf((c[m>>2]&64|0)!=0?c[l>>2]|0:0,45908,1)|0){u=(c[p>>2]|0)+18|0;b[u>>1]=e[u>>1]|0|16}if(!(yQ(c[(c[j>>2]|0)+16>>2]|0,45524)|0)){u=(c[p>>2]|0)+18|0;b[u>>1]=e[u>>1]|0|1}if(c[m>>2]&128)c[o>>2]=7628;else c[o>>2]=Yb[c[c[(c[j>>2]|0)+20>>2]>>2]&255](c[l>>2]|0,c[p>>2]|0)|0;if((c[o>>2]|0)!=7708){if((c[o>>2]|0)==7192){c[n>>2]=(BQ(c[l>>2]|0)|0)+6;u=c[n>>2]|0;c[s>>2]=Jd(u,((u|0)<0)<<31>>31)|0;if(!(c[s>>2]|0))c[q>>2]=7;else{g=c[n>>2]|0;u=c[s>>2]|0;c[r>>2]=c[l>>2];Qd(g,u,45913,r)|0}c[(c[p>>2]|0)+24>>2]=c[s>>2]}}else{sN();c[q>>2]=_N(c[p>>2]|0,(c[p>>2]|0)+8|0)|0;if(c[q>>2]|0){wN(c[p>>2]|0,c[k>>2]|0,32585);c[k>>2]=-1}uN()}KN(c[p>>2]|0,0);if(!(c[q>>2]|0)){c[c[p>>2]>>2]=c[o>>2];$N(c[p>>2]|0);u=c[q>>2]|0;i=t;return u|0}if((c[k>>2]|0)<0){u=c[q>>2]|0;i=t;return u|0}wN(c[p>>2]|0,c[k>>2]|0,32670);u=c[q>>2]|0;i=t;return u|0}function _N(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+112|0;f=k+104|0;d=k+100|0;g=k+96|0;l=k+92|0;m=k+88|0;h=k+80|0;e=k+4|0;j=k;c[d>>2]=a;c[g>>2]=b;c[j>>2]=0;c[m>>2]=c[(c[d>>2]|0)+12>>2];c[l>>2]=Yb[c[7332>>2]&255](c[m>>2]|0,e)|0;if(c[l>>2]|0){m=c[d>>2]|0;KN(m,c[(SP()|0)>>2]|0);if((c[(c[d>>2]|0)+20>>2]|0)==75){c[f>>2]=22;m=c[f>>2]|0;i=k;return m|0}else{c[f>>2]=10;m=c[f>>2]|0;i=k;return m|0}}c[h>>2]=0;c[h+4>>2]=0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+72>>2];c[j>>2]=c[1946];while(1){if(c[j>>2]|0)a=(vQ(h,c[j>>2]|0,8)|0)!=0;else a=0;d=c[j>>2]|0;if(!a)break;c[j>>2]=c[d+32>>2]}if(!d){c[j>>2]=Jd(40,0)|0;if(!(c[j>>2]|0)){c[f>>2]=7;m=c[f>>2]|0;i=k;return m|0}d=c[j>>2]|0;a=d+40|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(a|0));m=c[j>>2]|0;c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[(c[j>>2]|0)+16>>2]=1;c[(c[j>>2]|0)+32>>2]=c[1946];c[(c[j>>2]|0)+36>>2]=0;if(c[1946]|0)c[(c[1946]|0)+36>>2]=c[j>>2];c[1946]=c[j>>2]}else{m=(c[j>>2]|0)+16|0;c[m>>2]=(c[m>>2]|0)+1}c[c[g>>2]>>2]=c[j>>2];c[f>>2]=0;m=c[f>>2]|0;i=k;return m|0}function $N(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+112|0;j=k+24|0;h=k+16|0;d=k+8|0;b=k;f=k+108|0;g=k+32|0;l=k+28|0;c[f>>2]=a;c[l>>2]=Yb[c[7332>>2]&255](c[(c[f>>2]|0)+12>>2]|0,g)|0;if(c[l>>2]|0){c[b>>2]=c[(c[f>>2]|0)+32>>2];Rd(28,45921,b);i=k;return}if((c[g+16>>2]|0)==0?((e[(c[f>>2]|0)+18>>1]|0)&32|0)==0:0){c[d>>2]=c[(c[f>>2]|0)+32>>2];Rd(28,45945,d);i=k;return}a=c[f>>2]|0;if((c[g+16>>2]|0)>>>0>1){c[h>>2]=c[a+32>>2];Rd(28,45974,h);i=k;return}if(!(GN(a)|0)){i=k;return}c[j>>2]=c[(c[f>>2]|0)+32>>2];Rd(28,46001,j);i=k;return}function aO(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;e=f+4|0;d=f;c[b>>2]=a;c[e>>2]=0;c[d>>2]=c[b>>2];$N(c[d>>2]|0);cO(c[b>>2]|0,0)|0;sN();if((c[(c[d>>2]|0)+8>>2]|0)!=0?(c[(c[(c[d>>2]|0)+8>>2]|0)+24>>2]|0)!=0:0)jO(c[d>>2]|0);kO(c[d>>2]|0);c[e>>2]=PN(c[b>>2]|0)|0;uN();i=f;return c[e>>2]|0}function bO(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+48|0;k=p+44|0;q=p+40|0;l=p+36|0;o=p+32|0;m=p+28|0;n=p+24|0;h=p+8|0;j=p;c[q>>2]=e;c[l>>2]=f;c[o>>2]=0;c[m>>2]=c[q>>2];c[j>>2]=0;if((d[(c[m>>2]|0)+16>>0]|0|0)>=(c[l>>2]|0)){c[k>>2]=0;q=c[k>>2]|0;i=p;return q|0}sN();c[n>>2]=c[(c[m>>2]|0)+8>>2];if((d[(c[m>>2]|0)+16>>0]|0|0)!=(d[(c[n>>2]|0)+12>>0]|0|0)?(c[l>>2]|0)>1?1:(d[(c[n>>2]|0)+12>>0]|0|0)>=3:0)c[o>>2]=5;else g=6;a:do if((g|0)==6){do if((c[l>>2]|0)==1){if((d[(c[n>>2]|0)+12>>0]|0|0)!=1?(d[(c[n>>2]|0)+12>>0]|0|0)!=2:0)break;a[(c[m>>2]|0)+16>>0]=1;q=(c[n>>2]|0)+8|0;c[q>>2]=(c[q>>2]|0)+1;q=(c[n>>2]|0)+24|0;c[q>>2]=(c[q>>2]|0)+1;break a}while(0);c[h+8>>2]=1;b[h+2>>1]=0;if((c[l>>2]|0)!=1){if((c[l>>2]|0)==4?(d[(c[m>>2]|0)+16>>0]|0|0)<3:0)g=13}else g=13;if((g|0)==13?(b[h>>1]=(c[l>>2]|0)==1?0:1,c[h+4>>2]=c[381],(hO(c[m>>2]|0,h)|0)!=0):0){c[j>>2]=c[(SP()|0)>>2];c[o>>2]=LN(c[j>>2]|0,3850)|0;if((c[o>>2]|0)==5)break;KN(c[m>>2]|0,c[j>>2]|0);break}do if((c[l>>2]|0)!=1){if((c[l>>2]|0)==4?(c[(c[n>>2]|0)+8>>2]|0)>1:0){c[o>>2]=5;break}b[h>>1]=1;f=c[381]|0;if((c[l>>2]|0)==2){c[h+4>>2]=f+1;c[h+8>>2]=1}else{c[h+4>>2]=f+2;c[h+8>>2]=510}if((hO(c[m>>2]|0,h)|0)!=0?(c[j>>2]=c[(SP()|0)>>2],c[o>>2]=LN(c[j>>2]|0,3850)|0,(c[o>>2]|0)!=5):0)KN(c[m>>2]|0,c[j>>2]|0)}else{c[h+4>>2]=(c[381]|0)+2;c[h+8>>2]=510;if(hO(c[m>>2]|0,h)|0){c[j>>2]=c[(SP()|0)>>2];c[o>>2]=LN(c[j>>2]|0,3850)|0}c[h+4>>2]=c[381];c[h+8>>2]=1;b[h>>1]=2;q=(hO(c[m>>2]|0,h)|0)!=0;if(q&(c[o>>2]|0)==0){c[j>>2]=c[(SP()|0)>>2];c[o>>2]=2058}if(!(c[o>>2]|0)){a[(c[m>>2]|0)+16>>0]=1;q=(c[n>>2]|0)+24|0;c[q>>2]=(c[q>>2]|0)+1;c[(c[n>>2]|0)+8>>2]=1;break}if((c[o>>2]|0)==5)break a;KN(c[m>>2]|0,c[j>>2]|0);break a}while(0);f=c[l>>2]|0;if(!(c[o>>2]|0)){a[(c[m>>2]|0)+16>>0]=f;a[(c[n>>2]|0)+12>>0]=c[l>>2];break}if((f|0)==4){a[(c[m>>2]|0)+16>>0]=3;a[(c[n>>2]|0)+12>>0]=3}}while(0);uN();c[k>>2]=c[o>>2];q=c[k>>2]|0;i=p;return q|0}function cO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=gO(c[f>>2]|0,c[e>>2]|0,0)|0;i=d;return a|0}function dO(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+48|0;m=n;o=n+40|0;g=n+36|0;k=n+32|0;l=n+28|0;j=n+24|0;h=n+8|0;c[o>>2]=e;c[g>>2]=f;c[k>>2]=0;c[l>>2]=0;c[j>>2]=c[o>>2];sN();if((d[(c[(c[j>>2]|0)+8>>2]|0)+12>>0]|0)>1)c[l>>2]=1;do if((c[l>>2]|0)==0?(a[(c[(c[j>>2]|0)+8>>2]|0)+13>>0]|0)==0:0){b[h+2>>1]=0;c[h+4>>2]=(c[381]|0)+1;c[h+8>>2]=1;b[h>>1]=1;f=c[1839]|0;o=c[(c[j>>2]|0)+12>>2]|0;c[m>>2]=h;if(Ob[f&255](o,12,m)|0){c[k>>2]=3594;o=c[j>>2]|0;KN(o,c[(SP()|0)>>2]|0);break}if((b[h>>1]|0)!=2)c[l>>2]=1}while(0);uN();c[c[g>>2]>>2]=c[l>>2];i=n;return c[k>>2]|0}function eO(a,f,g,h,j){a=a|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;E=i;i=i+160|0;z=E+152|0;F=E+148|0;A=E+144|0;k=E+140|0;l=E+136|0;B=E+132|0;u=E+128|0;t=E+124|0;C=E+120|0;D=E+116|0;s=E+112|0;r=E+108|0;m=E+104|0;p=E+100|0;w=E+24|0;o=E+20|0;x=E+16|0;y=E+12|0;q=E+8|0;n=E+4|0;v=E;c[F>>2]=a;c[A>>2]=f;c[k>>2]=g;c[l>>2]=h;c[B>>2]=j;c[u>>2]=c[F>>2];c[D>>2]=0;c[s>>2]=vN()|0;if((c[(c[u>>2]|0)+36>>2]|0)==0?(c[D>>2]=fO(c[u>>2]|0)|0,(c[D>>2]|0)!=0):0){c[z>>2]=c[D>>2];F=c[z>>2]|0;i=E;return F|0}c[t>>2]=c[(c[u>>2]|0)+36>>2];c[C>>2]=c[c[t>>2]>>2];c[r>>2]=_(((c[A>>2]|0)+(c[s>>2]|0)|0)/(c[s>>2]|0)|0,c[s>>2]|0)|0;a:do if((e[(c[C>>2]|0)+20>>1]|0|0)<(c[r>>2]|0)){c[p>>2]=_(c[r>>2]|0,c[k>>2]|0)|0;c[(c[C>>2]|0)+16>>2]=c[k>>2];b:do if((c[(c[C>>2]|0)+12>>2]|0)>=0){if(Yb[c[7332>>2]&255](c[(c[C>>2]|0)+12>>2]|0,w)|0){c[D>>2]=4874;break a}if((c[w+36>>2]|0)<(c[p>>2]|0)){if(!(c[l>>2]|0))break a;c[o>>2]=(c[w+36>>2]|0)/4096|0;while(1){if((c[o>>2]|0)>=((c[p>>2]|0)/4096|0|0))break b;c[x>>2]=0;F=(c[o>>2]<<12)+4096-1|0;if((JN(c[(c[C>>2]|0)+12>>2]|0,F,((F|0)<0)<<31>>31,19266,1,x)|0)!=1)break;c[o>>2]=(c[o>>2]|0)+1}c[y>>2]=c[(c[C>>2]|0)+8>>2];c[D>>2]=xN(4874,45629,c[y>>2]|0,31732)|0;break a}}while(0);c[m>>2]=Ld(c[(c[C>>2]|0)+24>>2]|0,c[r>>2]<<2)|0;if(!(c[m>>2]|0)){c[D>>2]=3082;break}c[(c[C>>2]|0)+24>>2]=c[m>>2];while(1){if((e[(c[C>>2]|0)+20>>1]|0|0)>=(c[r>>2]|0))break a;c[q>>2]=_(c[k>>2]|0,c[s>>2]|0)|0;if((c[(c[C>>2]|0)+12>>2]|0)>=0){w=c[1884]|0;g=c[q>>2]|0;x=(d[(c[C>>2]|0)+22>>0]|0|0)!=0?1:3;y=c[(c[C>>2]|0)+12>>2]|0;F=c[k>>2]|0;F=rR(F|0,((F|0)<0)<<31>>31|0,e[(c[C>>2]|0)+20>>1]|0|0,0)|0;c[v>>2]=Sb[w&255](0,g,x,1,y,F)|0;if((c[v>>2]|0)==(-1|0)){k=21;break}}else{F=c[k>>2]|0;c[v>>2]=Jd(F,((F|0)<0)<<31>>31)|0;if(!(c[v>>2]|0)){k=23;break}kR(c[v>>2]|0,0,c[k>>2]|0)|0}c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[s>>2]|0))break;F=_(c[k>>2]|0,c[n>>2]|0)|0;c[(c[(c[C>>2]|0)+24>>2]|0)+((e[(c[C>>2]|0)+20>>1]|0)+(c[n>>2]|0)<<2)>>2]=(c[v>>2]|0)+F;c[n>>2]=(c[n>>2]|0)+1}F=(c[C>>2]|0)+20|0;b[F>>1]=(e[F>>1]|0)+(c[s>>2]|0)}if((k|0)==21){c[D>>2]=xN(5386,45716,c[(c[C>>2]|0)+8>>2]|0,31759)|0;break}else if((k|0)==23){c[D>>2]=7;break}}while(0);if((e[(c[C>>2]|0)+20>>1]|0|0)>(c[A>>2]|0))c[c[B>>2]>>2]=c[(c[(c[C>>2]|0)+24>>2]|0)+(c[A>>2]<<2)>>2];else c[c[B>>2]>>2]=0;if((c[D>>2]|0)==0?(d[(c[C>>2]|0)+22>>0]|0|0)!=0:0)c[D>>2]=8;c[z>>2]=c[D>>2];F=c[z>>2]|0;i=E;return F|0}function fO(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+128|0;o=r;e=r+116|0;f=r+112|0;j=r+108|0;l=r+104|0;m=r+100|0;k=r+96|0;q=r+92|0;g=r+88|0;n=r+12|0;p=r+8|0;h=r+4|0;c[f>>2]=b;c[j>>2]=0;c[j>>2]=Jd(16,0)|0;if(!(c[j>>2]|0)){c[e>>2]=7;q=c[e>>2]|0;i=r;return q|0}b=c[j>>2]|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;sN();c[k>>2]=c[(c[f>>2]|0)+8>>2];c[l>>2]=c[(c[k>>2]|0)+20>>2];a:do if(!(c[l>>2]|0)){c[p>>2]=c[(c[f>>2]|0)+32>>2];do if(!(Yb[c[7332>>2]&255](c[(c[f>>2]|0)+12>>2]|0,n)|0)){c[g>>2]=6+(BQ(c[p>>2]|0)|0);c[l>>2]=Jd(36+(c[g>>2]|0)|0,0)|0;if(!(c[l>>2]|0)){c[m>>2]=7;break}kR(c[l>>2]|0,0,36+(c[g>>2]|0)|0)|0;b=(c[l>>2]|0)+36|0;c[(c[l>>2]|0)+8>>2]=b;c[q>>2]=b;g=c[g>>2]|0;b=c[q>>2]|0;c[o>>2]=c[p>>2];Qd(g,b,46029,o)|0;c[(c[l>>2]|0)+12>>2]=-1;c[(c[(c[f>>2]|0)+8>>2]|0)+20>>2]=c[l>>2];c[c[l>>2]>>2]=c[(c[f>>2]|0)+8>>2];c[(c[l>>2]|0)+4>>2]=8;if(!(c[(c[l>>2]|0)+4>>2]|0)){c[m>>2]=7;break}if(d[(c[k>>2]|0)+13>>0]|0)break a;c[h>>2]=66;if(Hf(c[(c[f>>2]|0)+32>>2]|0,46036,0)|0){c[h>>2]=0;a[(c[l>>2]|0)+22>>0]=1}p=BN(c[q>>2]|0,c[h>>2]|0,c[n+12>>2]&511)|0;c[(c[l>>2]|0)+12>>2]=p;if((c[(c[l>>2]|0)+12>>2]|0)<0){p=et(31584)|0;c[m>>2]=xN(p,45571,c[q>>2]|0,31584)|0;break}YN(c[(c[l>>2]|0)+12>>2]|0,c[n+20>>2]|0,c[n+24>>2]|0)|0;c[m>>2]=0;if((CN(c[f>>2]|0,1,128,1)|0)==0?(NN(c[(c[l>>2]|0)+12>>2]|0,0,0)|0)!=0:0)c[m>>2]=xN(4618,45594,c[q>>2]|0,31600)|0;if(!(c[m>>2]|0))c[m>>2]=CN(c[f>>2]|0,0,128,1)|0;if(!(c[m>>2]|0))break a}else c[m>>2]=1802;while(0);tN(c[f>>2]|0);Kd(c[j>>2]|0);uN();c[e>>2]=c[m>>2];q=c[e>>2]|0;i=r;return q|0}while(0);c[c[j>>2]>>2]=c[l>>2];q=(c[l>>2]|0)+28|0;c[q>>2]=(c[q>>2]|0)+1;c[(c[f>>2]|0)+36>>2]=c[j>>2];uN();c[(c[j>>2]|0)+4>>2]=c[(c[l>>2]|0)+32>>2];c[(c[l>>2]|0)+32>>2]=c[j>>2];c[e>>2]=0;q=c[e>>2]|0;i=r;return q|0}function gO(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+48|0;h=p+44|0;q=p+40|0;j=p+36|0;l=p+28|0;m=p+24|0;k=p+8|0;n=p;c[q>>2]=e;c[j>>2]=f;c[p+32>>2]=g;c[l>>2]=c[q>>2];c[n>>2]=0;if((d[(c[l>>2]|0)+16>>0]|0|0)<=(c[j>>2]|0)){c[h>>2]=0;q=c[h>>2]|0;i=p;return q|0}sN();c[m>>2]=c[(c[l>>2]|0)+8>>2];do if((d[(c[l>>2]|0)+16>>0]|0|0)>1){if((c[j>>2]|0)==1?(b[k>>1]=0,b[k+2>>1]=0,c[k+4>>2]=(c[381]|0)+2,c[k+8>>2]=510,(hO(c[l>>2]|0,k)|0)!=0):0){c[n>>2]=2314;q=c[l>>2]|0;KN(q,c[(SP()|0)>>2]|0);break}b[k>>1]=2;b[k+2>>1]=0;c[k+4>>2]=c[381];c[k+8>>2]=2;if(!(hO(c[l>>2]|0,k)|0)){a[(c[m>>2]|0)+12>>0]=1;o=10;break}else{c[n>>2]=2058;q=c[l>>2]|0;KN(q,c[(SP()|0)>>2]|0);break}}else o=10;while(0);if((o|0)==10?(c[j>>2]|0)==0:0){q=(c[m>>2]|0)+8|0;c[q>>2]=(c[q>>2]|0)+-1;do if(!(c[(c[m>>2]|0)+8>>2]|0)){b[k>>1]=2;b[k+2>>1]=0;c[k+8>>2]=0;c[k+4>>2]=0;if(!(hO(c[l>>2]|0,k)|0)){a[(c[m>>2]|0)+12>>0]=0;break}else{c[n>>2]=2058;q=c[l>>2]|0;KN(q,c[(SP()|0)>>2]|0);a[(c[m>>2]|0)+12>>0]=0;a[(c[l>>2]|0)+16>>0]=0;break}}while(0);q=(c[m>>2]|0)+24|0;c[q>>2]=(c[q>>2]|0)+-1;if(!(c[(c[m>>2]|0)+24>>2]|0))iO(c[l>>2]|0)}uN();if(!(c[n>>2]|0))a[(c[l>>2]|0)+16>>0]=c[j>>2];c[h>>2]=c[n>>2];q=c[h>>2]|0;i=p;return q|0}function hO(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+64|0;p=q+8|0;o=q;h=q+48|0;j=q+44|0;k=q+40|0;n=q+36|0;m=q+32|0;l=q+16|0;c[j>>2]=f;c[k>>2]=g;c[m>>2]=c[(c[j>>2]|0)+8>>2];do if(((e[(c[j>>2]|0)+18>>1]|0)&3|0)==1){if(d[(c[m>>2]|0)+13>>0]|0){c[n>>2]=0;break}b[l+2>>1]=0;c[l+4>>2]=(c[381]|0)+2;c[l+8>>2]=510;b[l>>1]=1;g=c[1839]|0;p=c[(c[j>>2]|0)+12>>2]|0;c[o>>2]=l;c[n>>2]=Ob[g&255](p,13,o)|0;if((c[n>>2]|0)>=0){a[(c[m>>2]|0)+13>>0]=1;p=(c[m>>2]|0)+24|0;c[p>>2]=(c[p>>2]|0)+1;break}c[h>>2]=c[n>>2];p=c[h>>2]|0;i=q;return p|0}else{g=c[1839]|0;o=c[(c[j>>2]|0)+12>>2]|0;c[p>>2]=c[k>>2];c[n>>2]=Ob[g&255](o,13,p)|0}while(0);c[h>>2]=c[n>>2];p=c[h>>2]|0;i=q;return p|0}function iO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;e=g+8|0;d=g+4|0;f=g;c[b>>2]=a;c[e>>2]=c[(c[b>>2]|0)+8>>2];c[d>>2]=c[(c[e>>2]|0)+28>>2];while(1){if(!(c[d>>2]|0))break;c[f>>2]=c[(c[d>>2]|0)+8>>2];wN(c[b>>2]|0,c[c[d>>2]>>2]|0,28492);Kd(c[d>>2]|0);c[d>>2]=c[f>>2]}c[(c[e>>2]|0)+28>>2]=0;i=g;return}function jO(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b+8|0;e=b+4|0;f=b;c[d>>2]=a;c[e>>2]=c[(c[d>>2]|0)+8>>2];c[f>>2]=c[(c[d>>2]|0)+28>>2];c[(c[f>>2]|0)+8>>2]=c[(c[e>>2]|0)+28>>2];c[(c[e>>2]|0)+28>>2]=c[f>>2];c[(c[d>>2]|0)+12>>2]=-1;c[(c[d>>2]|0)+28>>2]=0;i=b;return}function kO(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=c[(c[b>>2]|0)+8>>2];if(!(c[d>>2]|0)){i=e;return}a=(c[d>>2]|0)+16|0;c[a>>2]=(c[a>>2]|0)+-1;if(c[(c[d>>2]|0)+16>>2]|0){i=e;return}iO(c[b>>2]|0);b=c[(c[d>>2]|0)+32>>2]|0;if(c[(c[d>>2]|0)+36>>2]|0)c[(c[(c[d>>2]|0)+36>>2]|0)+32>>2]=b;else c[1946]=b;if(c[(c[d>>2]|0)+32>>2]|0)c[(c[(c[d>>2]|0)+32>>2]|0)+36>>2]=c[(c[d>>2]|0)+36>>2];Kd(c[d>>2]|0);i=e;return}function lO(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 7708}function mO(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;b=e;d=e+8|0;c[d>>2]=a;if((c[c[d>>2]>>2]|0)<=(c[(c[d>>2]|0)+4>>2]|0)){d=b;c[d>>2]=0;c[d+4>>2]=0;d=b;a=d;a=c[a>>2]|0;d=d+4|0;d=c[d>>2]|0;C=d;i=e;return a|0}else{f=(c[d>>2]|0)+4|0;a=c[f>>2]|0;c[f>>2]=a+1;a=ee(c[(c[(c[d>>2]|0)+8>>2]|0)+(a<<2)>>2]|0)|0;d=b;c[d>>2]=a;c[d+4>>2]=C;d=b;a=d;a=c[a>>2]|0;d=d+4|0;d=c[d>>2]|0;C=d;i=e;return a|0}return 0}function nO(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0;e=i;i=i+16|0;b=e;d=e+8|0;c[d>>2]=a;if((c[c[d>>2]>>2]|0)<=(c[(c[d>>2]|0)+4>>2]|0)){h[b>>3]=0.0;f=+h[b>>3];i=e;return+f}else{g=(c[d>>2]|0)+4|0;a=c[g>>2]|0;c[g>>2]=a+1;h[b>>3]=+ce(c[(c[(c[d>>2]|0)+8>>2]|0)+(a<<2)>>2]|0);f=+h[b>>3];i=e;return+f}return 0.0}function oO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+20|0;f=l+16|0;g=l+12|0;k=l+8|0;j=l;c[f>>2]=b;c[g>>2]=d;if((c[c[g>>2]>>2]|0)<=0){a[e>>0]=48;b=a[e>>0]|0;i=l;return b|0}else{b=c[g>>2]|0;c[b>>2]=(c[b>>2]|0)+-1;c[k>>2]=~~+h[c[f>>2]>>3];h[j>>3]=+(c[k>>2]|0);c[k>>2]=(c[k>>2]|0)+48;h[c[f>>2]>>3]=(+h[c[f>>2]>>3]-+h[j>>3])*10.0;a[e>>0]=c[k>>2];b=a[e>>0]|0;i=l;return b|0}return 0}function pO(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;b=e+4|0;d=e;c[d>>2]=a;if((c[c[d>>2]>>2]|0)<=(c[(c[d>>2]|0)+4>>2]|0)){c[b>>2]=0;a=c[b>>2]|0;i=e;return a|0}else{f=(c[d>>2]|0)+4|0;a=c[f>>2]|0;c[f>>2]=a+1;c[b>>2]=ae(c[(c[(c[d>>2]|0)+8>>2]|0)+(a<<2)>>2]|0)|0;a=c[b>>2]|0;i=e;return a|0}return 0}function qO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+4|0;g=j;h=j+8|0;c[f>>2]=b;c[g>>2]=d;a[h>>0]=e;b=c[g>>2]|0;b=gR(c[(c[f>>2]|0)+12>>2]|0,0,b|0,((b|0)<0)<<31>>31|0)|0;e=C;if((e|0)>0|((e|0)==0?b>>>0>=(c[(c[f>>2]|0)+16>>2]|0)>>>0:0)?(b=dA(c[f>>2]|0,c[g>>2]|0)|0,c[g>>2]=b,(b|0)<=0):0){i=j;return}while(1){b=c[g>>2]|0;c[g>>2]=b+-1;if((b|0)<=0)break;e=a[h>>0]|0;d=(c[f>>2]|0)+12|0;b=c[d>>2]|0;c[d>>2]=b+1;a[(c[(c[f>>2]|0)+8>>2]|0)+b>>0]=e}i=j;return}function rO(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=d;c[b>>2]=a;a=288;e=c[a+4>>2]|0;if((e|0)<0|(e|0)==0&(c[a>>2]|0)>>>0<=0){i=d;return}Fd(c[b>>2]|0)|0;i=d;return}function sO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;j=h+20|0;d=h+16|0;e=h+12|0;g=h+8|0;f=h;c[j>>2]=a;c[d>>2]=b;c[e>>2]=Tb[c[60>>2]&255](c[j>>2]|0)|0;Mi(5,c[j>>2]|0);b=288;a=c[b+4>>2]|0;do if((a|0)>0|(a|0)==0&(c[b>>2]|0)>>>0>0){b=Zf(0)|0;a=f;c[a>>2]=b;c[a+4>>2]=C;a=f;b=c[a>>2]|0;a=c[a+4>>2]|0;f=288;j=c[e>>2]|0;j=fR(c[f>>2]|0,c[f+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0;f=C;if((a|0)>(f|0)|(a|0)==(f|0)&b>>>0>=j>>>0){c[77]=1;rO(c[e>>2]|0);break}else{c[77]=0;break}}while(0);c[g>>2]=Tb[c[44>>2]&255](c[e>>2]|0)|0;if(!(c[g>>2]|0)){b=c[g>>2]|0;j=c[d>>2]|0;c[j>>2]=b;j=c[e>>2]|0;i=h;return j|0}c[e>>2]=$f(c[g>>2]|0)|0;Ni(0,c[e>>2]|0);Ni(9,1);b=c[g>>2]|0;j=c[d>>2]|0;c[j>>2]=b;j=c[e>>2]|0;i=h;return j|0}function tO(){var a=0,b=0,d=0,e=0;e=i;i=i+16|0;b=e+8|0;d=e+4|0;a=e;c[d>>2]=1080;c[a>>2]=9708;c[b>>2]=0;while(1){if((c[b>>2]|0)>=8)break;Yt(c[d>>2]|0,(c[a>>2]|0)+(c[b>>2]<<5)|0);c[b>>2]=(c[b>>2]|0)+1}i=e;return}function uO(){var a=0,b=0,d=0,e=0;e=i;i=i+16|0;b=e+8|0;d=e+4|0;a=e;c[d>>2]=1080;c[a>>2]=9612;c[b>>2]=0;while(1){if((c[b>>2]|0)>=3)break;Yt(c[d>>2]|0,(c[a>>2]|0)+(c[b>>2]<<5)|0);c[b>>2]=(c[b>>2]|0)+1}i=e;return}function vO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+64|0;l=r;f=r+60|0;s=r+52|0;o=r+48|0;p=r+44|0;k=r+40|0;j=r+32|0;m=r+28|0;h=r+24|0;n=r+20|0;g=r+16|0;c[f>>2]=b;c[r+56>>2]=d;c[s>>2]=e;c[o>>2]=ae(c[c[s>>2]>>2]|0)|0;c[p>>2]=ae(c[(c[s>>2]|0)+4>>2]|0)|0;c[m>>2]=c[o>>2];c[h>>2]=0;c[g>>2]=we(c[f>>2]|0)|0;if(!(c[o>>2]|0)){i=r;return}do{if(!(a[c[m>>2]>>0]|0)){q=7;break}c[j>>2]=c[m>>2];c[j+4>>2]=c[h>>2];do{c[m>>2]=(c[m>>2]|0)+(c[h>>2]|0);c[h>>2]=Qu(c[m>>2]|0,k)|0}while((c[k>>2]|0)==159)}while((c[k>>2]|0)!=22?(c[k>>2]|0)!=125:0);if((q|0)==7){i=r;return}s=c[g>>2]|0;m=c[o>>2]|0;p=c[p>>2]|0;q=(c[j>>2]|0)+(c[j+4>>2]|0)|0;c[l>>2]=(c[j>>2]|0)-(c[o>>2]|0);c[l+4>>2]=m;c[l+8>>2]=p;c[l+12>>2]=q;c[n>>2]=Bh(s,46327,l)|0;ne(c[f>>2]|0,c[n>>2]|0,-1,170);i=r;return}function wO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+80|0;m=s;f=s+68|0;t=s+60|0;p=s+56|0;q=s+52|0;l=s+48|0;k=s+40|0;h=s+32|0;n=s+28|0;j=s+24|0;o=s+20|0;g=s+16|0;c[f>>2]=b;c[s+64>>2]=d;c[t>>2]=e;c[p>>2]=ae(c[c[t>>2]>>2]|0)|0;c[q>>2]=ae(c[(c[t>>2]|0)+4>>2]|0)|0;c[h>>2]=3;c[n>>2]=c[p>>2];c[j>>2]=0;c[g>>2]=we(c[f>>2]|0)|0;if(!(c[p>>2]|0)){i=s;return}while(1){if(!(a[c[n>>2]>>0]|0)){r=8;break}c[k>>2]=c[n>>2];c[k+4>>2]=c[j>>2];do{c[n>>2]=(c[n>>2]|0)+(c[j>>2]|0);c[j>>2]=Qu(c[n>>2]|0,l)|0}while((c[l>>2]|0)==159);t=(c[h>>2]|0)+1|0;c[h>>2]=t;c[h>>2]=(c[l>>2]|0)==122|(c[l>>2]|0)==107?0:t;if((c[h>>2]|0)!=2)continue;if(!((c[l>>2]|0)!=137&(c[l>>2]|0)!=46&(c[l>>2]|0)!=5))break}if((r|0)==8){i=s;return}t=c[g>>2]|0;n=c[p>>2]|0;q=c[q>>2]|0;r=(c[k>>2]|0)+(c[k+4>>2]|0)|0;c[m>>2]=(c[k>>2]|0)-(c[p>>2]|0);c[m+4>>2]=n;c[m+8>>2]=q;c[m+12>>2]=r;c[o>>2]=Bh(t,46327,m)|0;ne(c[f>>2]|0,c[o>>2]|0,-1,170);i=s;return}function xO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=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;u=i;i=i+80|0;l=u+16|0;k=u;f=u+76|0;v=u+68|0;g=u+64|0;r=u+60|0;t=u+56|0;n=u+52|0;p=u+48|0;o=u+44|0;m=u+40|0;h=u+36|0;j=u+32|0;s=u+28|0;q=u+24|0;c[f>>2]=b;c[u+72>>2]=d;c[v>>2]=e;c[g>>2]=we(c[f>>2]|0)|0;c[r>>2]=0;c[n>>2]=ae(c[c[v>>2]>>2]|0)|0;c[p>>2]=ae(c[(c[v>>2]|0)+4>>2]|0)|0;c[o>>2]=ae(c[(c[v>>2]|0)+8>>2]|0)|0;if((c[n>>2]|0)==0|(c[p>>2]|0)==0){i=u;return}c[m>>2]=c[n>>2];while(1){if(!(a[c[m>>2]>>0]|0))break;c[h>>2]=Qu(c[m>>2]|0,j)|0;if((c[j>>2]|0)==105){do{c[m>>2]=(c[m>>2]|0)+(c[h>>2]|0);c[h>>2]=Qu(c[m>>2]|0,j)|0}while((c[j>>2]|0)==159);if((c[j>>2]|0)==160)break;v=c[h>>2]|0;c[s>>2]=Iw(c[g>>2]|0,c[m>>2]|0,v,((v|0)<0)<<31>>31)|0;if(!(c[s>>2]|0))break;Jw(c[s>>2]|0)|0;if(!(Td(c[p>>2]|0,c[s>>2]|0)|0)){v=c[g>>2]|0;d=(c[m>>2]|0)-(c[n>>2]|0)|0;e=c[n>>2]|0;b=c[o>>2]|0;c[k>>2]=(c[r>>2]|0)!=0?c[r>>2]|0:19266;c[k+4>>2]=d;c[k+8>>2]=e;c[k+12>>2]=b;c[q>>2]=Bh(v,46316,k)|0;Sf(c[g>>2]|0,c[r>>2]|0);c[r>>2]=c[q>>2];c[n>>2]=(c[m>>2]|0)+(c[h>>2]|0)}Sf(c[g>>2]|0,c[s>>2]|0)}c[m>>2]=(c[m>>2]|0)+(c[h>>2]|0)}v=c[g>>2]|0;s=c[n>>2]|0;c[l>>2]=(c[r>>2]|0)!=0?c[r>>2]|0:19266;c[l+4>>2]=s;c[t>>2]=Bh(v,25552,l)|0;ne(c[f>>2]|0,c[t>>2]|0,-1,170);Sf(c[g>>2]|0,c[r>>2]|0);i=u;return}function yO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+64|0;e=g+56|0;j=g+52|0;h=g+48|0;f=g;c[e>>2]=a;c[j>>2]=b;c[h>>2]=d;if(GO(c[e>>2]|0,c[j>>2]|0,c[h>>2]|0,f)|0){i=g;return}HO(f);j=f;ie(c[e>>2]|0,(+((c[j>>2]|0)>>>0)+4294967296.0*+(c[j+4>>2]|0))/864.0e5);i=g;return}function zO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;j=i;i=i+176|0;f=j+48|0;e=j+68|0;l=j+64|0;k=j+60|0;g=j;h=j+72|0;c[e>>2]=a;c[l>>2]=b;c[k>>2]=d;if(GO(c[e>>2]|0,c[l>>2]|0,c[k>>2]|0,g)|0){i=j;return}JO(g);k=c[g+12>>2]|0;l=c[g+16>>2]|0;c[f>>2]=c[g+8>>2];c[f+4>>2]=k;c[f+8>>2]=l;Qd(100,h,46623,f)|0;ne(c[e>>2]|0,h,-1,-1);i=j;return}function AO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0;k=i;i=i+176|0;f=k+48|0;e=k+68|0;m=k+64|0;l=k+60|0;g=k;j=k+72|0;c[e>>2]=a;c[m>>2]=b;c[l>>2]=d;if(GO(c[e>>2]|0,c[m>>2]|0,c[l>>2]|0,g)|0){i=k;return}KO(g);l=c[g+24>>2]|0;m=~~+h[g+32>>3];c[f>>2]=c[g+20>>2];c[f+4>>2]=l;c[f+8>>2]=m;Qd(100,j,46608,f)|0;ne(c[e>>2]|0,j,-1,-1);i=k;return}function BO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0;k=i;i=i+192|0;f=k+48|0;e=k+80|0;m=k+76|0;l=k+72|0;g=k;j=k+84|0;c[e>>2]=a;c[m>>2]=b;c[l>>2]=d;if(GO(c[e>>2]|0,c[m>>2]|0,c[l>>2]|0,g)|0){i=k;return}IO(g);b=c[g+12>>2]|0;d=c[g+16>>2]|0;a=c[g+20>>2]|0;l=c[g+24>>2]|0;m=~~+h[g+32>>3];c[f>>2]=c[g+8>>2];c[f+4>>2]=b;c[f+8>>2]=d;c[f+12>>2]=a;c[f+16>>2]=l;c[f+20>>2]=m;Qd(100,j,46578,f)|0;ne(c[e>>2]|0,j,-1,-1);i=k;return}function CO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=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,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=i;i=i+336|0;z=J+192|0;y=J+184|0;x=J+176|0;w=J+168|0;v=J+160|0;u=J+152|0;t=J+144|0;B=J+136|0;A=J+128|0;s=J+120|0;r=J+112|0;m=J+232|0;f=J+228|0;g=J+224|0;E=J+64|0;k=J+56|0;n=J+220|0;o=J+216|0;G=J+212|0;j=J+208|0;I=J+204|0;H=J+236|0;q=J+48|0;p=J+200|0;F=J;D=J+196|0;c[m>>2]=b;c[f>>2]=d;c[g>>2]=e;if(!(c[f>>2]|0)){i=J;return}c[I>>2]=ae(c[c[g>>2]>>2]|0)|0;if(!(c[I>>2]|0)){i=J;return}if(GO(c[m>>2]|0,(c[f>>2]|0)-1|0,(c[g>>2]|0)+4|0,E)|0){i=J;return}c[j>>2]=we(c[m>>2]|0)|0;c[n>>2]=0;b=k;c[b>>2]=1;c[b+4>>2]=0;a:while(1){if(!(a[(c[I>>2]|0)+(c[n>>2]|0)>>0]|0))break;if((a[(c[I>>2]|0)+(c[n>>2]|0)>>0]|0)==37){switch(a[(c[I>>2]|0)+((c[n>>2]|0)+1)>>0]|0){case 87:case 83:case 77:case 109:case 72:case 100:{e=k;b=k;c[b>>2]=gR(c[e>>2]|0,c[e+4>>2]|0,1,0)|0;c[b+4>>2]=C;break}case 37:case 119:break;case 102:{e=k;b=k;c[b>>2]=gR(c[e>>2]|0,c[e+4>>2]|0,8,0)|0;c[b+4>>2]=C;break}case 106:{e=k;b=k;c[b>>2]=gR(c[e>>2]|0,c[e+4>>2]|0,3,0)|0;c[b+4>>2]=C;break}case 89:{e=k;b=k;c[b>>2]=gR(c[e>>2]|0,c[e+4>>2]|0,8,0)|0;c[b+4>>2]=C;break}case 74:case 115:{e=k;b=k;c[b>>2]=gR(c[e>>2]|0,c[e+4>>2]|0,50,0)|0;c[b+4>>2]=C;break}default:{l=44;break a}}c[n>>2]=(c[n>>2]|0)+1}c[n>>2]=(c[n>>2]|0)+1;e=k;e=gR(c[e>>2]|0,c[e+4>>2]|0,1,0)|0;b=k;c[b>>2]=e;c[b+4>>2]=C}if((l|0)==44){i=J;return}l=k;b=c[l+4>>2]|0;if(!(b>>>0<0|(b|0)==0&(c[l>>2]|0)>>>0<100)){b=k;d=c[b+4>>2]|0;l=c[(c[j>>2]|0)+88>>2]|0;e=((l|0)<0)<<31>>31;if(d>>>0>e>>>0|((d|0)==(e|0)?(c[b>>2]|0)>>>0>l>>>0:0)){se(c[m>>2]|0);i=J;return}l=c[k>>2]|0;c[G>>2]=Fw(c[j>>2]|0,l,((l|0)<0)<<31>>31)|0;if(!(c[G>>2]|0)){te(c[m>>2]|0);i=J;return}}else c[G>>2]=H;HO(E);IO(E);c[o>>2]=0;c[n>>2]=0;while(1){if(!(a[(c[I>>2]|0)+(c[n>>2]|0)>>0]|0))break;f=c[n>>2]|0;b:do if((a[(c[I>>2]|0)+(c[n>>2]|0)>>0]|0)!=37){k=a[(c[I>>2]|0)+f>>0]|0;l=c[o>>2]|0;c[o>>2]=l+1;a[(c[G>>2]|0)+l>>0]=k}else{c[n>>2]=f+1;do switch(a[(c[I>>2]|0)+(c[n>>2]|0)>>0]|0){case 100:{l=(c[G>>2]|0)+(c[o>>2]|0)|0;c[r>>2]=c[E+16>>2];Qd(3,l,46420,r)|0;c[o>>2]=(c[o>>2]|0)+2;break b}case 102:{h[q>>3]=+h[E+32>>3];if(+h[q>>3]>59.999)h[q>>3]=59.999;l=(c[G>>2]|0)+(c[o>>2]|0)|0;h[s>>3]=+h[q>>3];Qd(7,l,46425,s)|0;c[o>>2]=(If((c[G>>2]|0)+(c[o>>2]|0)|0)|0)+(c[o>>2]|0);break b}case 72:{l=(c[G>>2]|0)+(c[o>>2]|0)|0;c[A>>2]=c[E+20>>2];Qd(3,l,46420,A)|0;c[o>>2]=(c[o>>2]|0)+2;break b}case 106:case 87:{f=F;g=E;d=f+48|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(d|0));a[F+42>>0]=0;c[F+12>>2]=1;c[F+16>>2]=1;HO(F);k=E;l=F;c[p>>2]=pR(gR(fR(c[k>>2]|0,c[k+4>>2]|0,c[l>>2]|0,c[l+4>>2]|0)|0,C|0,432e5,0)|0,C|0,864e5,0)|0;if((a[(c[I>>2]|0)+(c[n>>2]|0)>>0]|0)==87){l=E;l=gR(c[l>>2]|0,c[l+4>>2]|0,432e5,0)|0;l=pR(l|0,C|0,864e5,0)|0;l=qR(l|0,C|0,7,0)|0;c[D>>2]=l;l=(c[G>>2]|0)+(c[o>>2]|0)|0;c[B>>2]=((c[p>>2]|0)+7-(c[D>>2]|0)|0)/7|0;Qd(3,l,46420,B)|0;c[o>>2]=(c[o>>2]|0)+2;break b}else{l=(c[G>>2]|0)+(c[o>>2]|0)|0;c[t>>2]=(c[p>>2]|0)+1;Qd(4,l,46432,t)|0;c[o>>2]=(c[o>>2]|0)+3;break b}}case 74:{l=(c[G>>2]|0)+(c[o>>2]|0)|0;k=E;h[u>>3]=(+((c[k>>2]|0)>>>0)+4294967296.0*+(c[k+4>>2]|0))/864.0e5;Qd(20,l,43396,u)|0;c[o>>2]=(If((c[G>>2]|0)+(c[o>>2]|0)|0)|0)+(c[o>>2]|0);break b}case 109:{l=(c[G>>2]|0)+(c[o>>2]|0)|0;c[v>>2]=c[E+12>>2];Qd(3,l,46420,v)|0;c[o>>2]=(c[o>>2]|0)+2;break b}case 77:{l=(c[G>>2]|0)+(c[o>>2]|0)|0;c[w>>2]=c[E+24>>2];Qd(3,l,46420,w)|0;c[o>>2]=(c[o>>2]|0)+2;break b}case 115:{l=(c[G>>2]|0)+(c[o>>2]|0)|0;j=E;k=x;c[k>>2]=fR(pR(c[j>>2]|0,c[j+4>>2]|0,1e3,0)|0,C|0,413362496,49)|0;c[k+4>>2]=C;Qd(30,l,29137,x)|0;c[o>>2]=(If((c[G>>2]|0)+(c[o>>2]|0)|0)|0)+(c[o>>2]|0);break b}case 83:{l=(c[G>>2]|0)+(c[o>>2]|0)|0;c[y>>2]=~~+h[E+32>>3];Qd(3,l,46420,y)|0;c[o>>2]=(c[o>>2]|0)+2;break b}case 119:{k=E;k=qR(pR(gR(c[k>>2]|0,c[k+4>>2]|0,1296e5,0)|0,C|0,864e5,0)|0,C|0,7,0)|0;l=c[o>>2]|0;c[o>>2]=l+1;a[(c[G>>2]|0)+l>>0]=((k&255)<<24>>24)+48;break b}case 89:{l=(c[G>>2]|0)+(c[o>>2]|0)|0;c[z>>2]=c[E+8>>2];Qd(5,l,46437,z)|0;c[o>>2]=(If((c[G>>2]|0)+(c[o>>2]|0)|0)|0)+(c[o>>2]|0);break b}default:{l=c[o>>2]|0;c[o>>2]=l+1;a[(c[G>>2]|0)+l>>0]=37;break b}}while(0)}while(0);c[n>>2]=(c[n>>2]|0)+1}a[(c[G>>2]|0)+(c[o>>2]|0)>>0]=0;ne(c[m>>2]|0,c[G>>2]|0,-1,(c[G>>2]|0)==(H|0)?-1:170);i=J;return}function DO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e+8|0;c[f>>2]=a;c[e+4>>2]=b;c[e>>2]=d;AO(c[f>>2]|0,0,0);i=e;return}function EO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e+8|0;c[f>>2]=a;c[e+4>>2]=b;c[e>>2]=d;BO(c[f>>2]|0,0,0);i=e;return}function FO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e+8|0;c[f>>2]=a;c[e+4>>2]=b;c[e>>2]=d;zO(c[f>>2]|0,0,0);i=e;return}function GO(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0;p=i;i=i+32|0;o=p+28|0;g=p+24|0;h=p+20|0;j=p+16|0;k=p+12|0;m=p+8|0;n=p+4|0;l=p;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;d=c[k>>2]|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));if(!(c[h>>2]|0)){c[o>>2]=LO(c[g>>2]|0,c[k>>2]|0)|0;o=c[o>>2]|0;i=p;return o|0}f=fe(c[c[j>>2]>>2]|0)|0;c[l>>2]=f;d=c[c[j>>2]>>2]|0;do if((f|0)==2|(c[l>>2]|0)==1){q=+ce(d)*864.0e5+.5;f=+N(q)>=1.0?q>0.0?~~+$(+M(q/4294967296.0),4294967295.0)>>>0:~~+Z((q-+(~~q>>>0))/4294967296.0)>>>0:0;l=c[k>>2]|0;c[l>>2]=~~q>>>0;c[l+4>>2]=f;a[(c[k>>2]|0)+42>>0]=1}else{c[n>>2]=ae(d)|0;if((c[n>>2]|0)!=0?(MO(c[g>>2]|0,c[n>>2]|0,c[k>>2]|0)|0)==0:0)break;c[o>>2]=1;o=c[o>>2]|0;i=p;return o|0}while(0);c[m>>2]=1;while(1){if((c[m>>2]|0)>=(c[h>>2]|0)){d=14;break}c[n>>2]=ae(c[(c[j>>2]|0)+(c[m>>2]<<2)>>2]|0)|0;if(!(c[n>>2]|0)){d=12;break}if(NO(c[g>>2]|0,c[n>>2]|0,c[k>>2]|0)|0){d=12;break}c[m>>2]=(c[m>>2]|0)+1}if((d|0)==12){c[o>>2]=1;o=c[o>>2]|0;i=p;return o|0}else if((d|0)==14){c[o>>2]=0;o=c[o>>2]|0;i=p;return o|0}return 0}function HO(b){b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0.0;n=i;i=i+32|0;d=n+28|0;m=n+24|0;j=n+20|0;g=n+16|0;e=n+12|0;f=n+8|0;k=n+4|0;l=n;c[d>>2]=b;if(a[(c[d>>2]|0)+42>>0]|0){i=n;return}if(a[(c[d>>2]|0)+40>>0]|0){c[m>>2]=c[(c[d>>2]|0)+8>>2];c[j>>2]=c[(c[d>>2]|0)+12>>2];c[g>>2]=c[(c[d>>2]|0)+16>>2]}else{c[m>>2]=2e3;c[j>>2]=1;c[g>>2]=1}if((c[j>>2]|0)<=2){c[m>>2]=(c[m>>2]|0)+-1;c[j>>2]=(c[j>>2]|0)+12}c[e>>2]=(c[m>>2]|0)/100|0;c[f>>2]=2-(c[e>>2]|0)+((c[e>>2]|0)/4|0);c[k>>2]=(((c[m>>2]|0)+4716|0)*36525|0)/100|0;c[l>>2]=(((c[j>>2]|0)+1|0)*306001|0)/1e4|0;o=(+((c[k>>2]|0)+(c[l>>2]|0)+(c[g>>2]|0)+(c[f>>2]|0)|0)-1524.5)*864.0e5;m=+N(o)>=1.0?o>0.0?~~+$(+M(o/4294967296.0),4294967295.0)>>>0:~~+Z((o-+(~~o>>>0))/4294967296.0)>>>0:0;b=c[d>>2]|0;c[b>>2]=~~o>>>0;c[b+4>>2]=m;a[(c[d>>2]|0)+42>>0]=1;if(!(a[(c[d>>2]|0)+41>>0]|0)){i=n;return}m=_(c[(c[d>>2]|0)+20>>2]|0,36e5)|0;m=m+((c[(c[d>>2]|0)+24>>2]|0)*6e4|0)|0;o=+h[(c[d>>2]|0)+32>>3]*1.0e3;m=gR(m|0,((m|0)<0)<<31>>31|0,~~o>>>0|0,(+N(o)>=1.0?o>0.0?~~+$(+M(o/4294967296.0),4294967295.0)>>>0:~~+Z((o-+(~~o>>>0))/4294967296.0)>>>0:0)|0)|0;b=c[d>>2]|0;l=b;m=gR(c[l>>2]|0,c[l+4>>2]|0,m|0,C|0)|0;c[b>>2]=m;c[b+4>>2]=C;if(!(a[(c[d>>2]|0)+43>>0]|0)){i=n;return}m=(c[(c[d>>2]|0)+28>>2]|0)*6e4|0;b=c[d>>2]|0;l=b;m=fR(c[l>>2]|0,c[l+4>>2]|0,m|0,((m|0)<0)<<31>>31|0)|0; -c[b>>2]=m;c[b+4>>2]=C;a[(c[d>>2]|0)+40>>0]=0;a[(c[d>>2]|0)+41>>0]=0;a[(c[d>>2]|0)+43>>0]=0;i=n;return}function IO(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;JO(c[d>>2]|0);KO(c[d>>2]|0);i=b;return}function JO(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;d=m+28|0;l=m+24|0;e=m+20|0;f=m+16|0;g=m+12|0;h=m+8|0;j=m+4|0;k=m;c[d>>2]=b;if(a[(c[d>>2]|0)+40>>0]|0){i=m;return}b=c[d>>2]|0;if(a[(c[d>>2]|0)+42>>0]|0){b=gR(c[b>>2]|0,c[b+4>>2]|0,432e5,0)|0;b=pR(b|0,C|0,864e5,0)|0;c[l>>2]=b;c[e>>2]=~~((+(c[l>>2]|0)-1867216.25)/36524.25);c[e>>2]=(c[l>>2]|0)+1+(c[e>>2]|0)-((c[e>>2]|0)/4|0);c[f>>2]=(c[e>>2]|0)+1524;c[g>>2]=~~((+(c[f>>2]|0)-122.1)/365.25);c[h>>2]=((c[g>>2]&32767)*36525|0)/100|0;c[j>>2]=~~(+((c[f>>2]|0)-(c[h>>2]|0)|0)/30.6001);c[k>>2]=~~(+(c[j>>2]|0)*30.6001);c[(c[d>>2]|0)+16>>2]=(c[f>>2]|0)-(c[h>>2]|0)-(c[k>>2]|0);l=c[j>>2]|0;c[(c[d>>2]|0)+12>>2]=(c[j>>2]|0)<14?l-1|0:l-13|0;l=c[g>>2]|0;c[(c[d>>2]|0)+8>>2]=(c[(c[d>>2]|0)+12>>2]|0)>2?l-4716|0:l-4715|0}else{c[b+8>>2]=2e3;c[(c[d>>2]|0)+12>>2]=1;c[(c[d>>2]|0)+16>>2]=1}a[(c[d>>2]|0)+40>>0]=1;i=m;return}function KO(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;if(a[(c[d>>2]|0)+41>>0]|0){i=f;return}HO(c[d>>2]|0);b=c[d>>2]|0;b=gR(c[b>>2]|0,c[b+4>>2]|0,432e5,0)|0;b=qR(b|0,C|0,864e5,0)|0;c[e>>2]=b;h[(c[d>>2]|0)+32>>3]=+(c[e>>2]|0)/1.0e3;c[e>>2]=~~+h[(c[d>>2]|0)+32>>3];b=(c[d>>2]|0)+32|0;h[b>>3]=+h[b>>3]-+(c[e>>2]|0);c[(c[d>>2]|0)+20>>2]=(c[e>>2]|0)/3600|0;c[e>>2]=(c[e>>2]|0)-((c[(c[d>>2]|0)+20>>2]|0)*3600|0);c[(c[d>>2]|0)+24>>2]=(c[e>>2]|0)/60|0;b=(c[d>>2]|0)+32|0;h[b>>3]=+h[b>>3]+ +((c[e>>2]|0)-((c[(c[d>>2]|0)+24>>2]|0)*60|0)|0);a[(c[d>>2]|0)+41>>0]=1;i=f;return}function LO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+8|0;h=g+4|0;f=g;c[h>>2]=b;c[f>>2]=d;b=VO(c[h>>2]|0)|0;d=c[f>>2]|0;c[d>>2]=b;c[d+4>>2]=C;d=c[f>>2]|0;b=c[d+4>>2]|0;if((b|0)>0|(b|0)==0&(c[d>>2]|0)>>>0>0){a[(c[f>>2]|0)+42>>0]=1;c[e>>2]=0;h=c[e>>2]|0;i=g;return h|0}else{c[e>>2]=1;h=c[e>>2]|0;i=g;return h|0}return 0}function MO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0.0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;j=m+12|0;k=m+8|0;l=m;c[g>>2]=b;c[j>>2]=d;c[k>>2]=e;if(!(UO(c[j>>2]|0,c[k>>2]|0)|0)){c[f>>2]=0;d=c[f>>2]|0;i=m;return d|0}if(!(QO(c[j>>2]|0,c[k>>2]|0)|0)){c[f>>2]=0;d=c[f>>2]|0;i=m;return d|0}if(!(Td(c[j>>2]|0,46562)|0)){c[f>>2]=LO(c[g>>2]|0,c[k>>2]|0)|0;d=c[f>>2]|0;i=m;return d|0}d=c[j>>2]|0;if(Ky(d,l,If(c[j>>2]|0)|0,1)|0){n=+h[l>>3]*864.0e5+.5;l=+N(n)>=1.0?n>0.0?~~+$(+M(n/4294967296.0),4294967295.0)>>>0:~~+Z((n-+(~~n>>>0))/4294967296.0)>>>0:0;d=c[k>>2]|0;c[d>>2]=~~n>>>0;c[d+4>>2]=l;a[(c[k>>2]|0)+42>>0]=1;c[f>>2]=0;d=c[f>>2]|0;i=m;return d|0}else{c[f>>2]=1;d=c[f>>2]|0;i=m;return d|0}return 0}function NO(b,e,f){b=b|0;e=e|0;f=f|0;var g=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.0;z=i;i=i+160|0;g=z+124|0;j=z+120|0;w=z+116|0;x=z+112|0;m=z+108|0;n=z+80|0;y=z+104|0;l=z+72|0;k=z+64|0;o=z+56|0;v=z+100|0;u=z+8|0;t=z;p=z+96|0;q=z+92|0;r=z+88|0;c[g>>2]=b;c[j>>2]=e;c[w>>2]=f;c[x>>2]=1;c[y>>2]=z+128;c[m>>2]=0;while(1){if((c[m>>2]|0)<29)b=(a[(c[j>>2]|0)+(c[m>>2]|0)>>0]|0)!=0;else b=0;f=c[m>>2]|0;if(!b)break;a[(c[y>>2]|0)+(c[m>>2]|0)>>0]=a[18477+(d[(c[j>>2]|0)+f>>0]|0)>>0]|0;c[m>>2]=(c[m>>2]|0)+1}a[(c[y>>2]|0)+f>>0]=0;switch(a[c[y>>2]>>0]|0){case 108:{if(yQ(c[y>>2]|0,46442)|0){y=c[x>>2]|0;i=z;return y|0}HO(c[w>>2]|0);v=OO(c[w>>2]|0,c[g>>2]|0,x)|0;y=c[w>>2]|0;u=y;c[y>>2]=gR(c[u>>2]|0,c[u+4>>2]|0,v|0,C|0)|0;c[y+4>>2]=C;PO(c[w>>2]|0);y=c[x>>2]|0;i=z;return y|0}case 117:{if((yQ(c[y>>2]|0,46452)|0)==0?(a[(c[w>>2]|0)+42>>0]|0)!=0:0){v=c[w>>2]|0;v=gR(c[v>>2]|0,c[v+4>>2]|0,43200,0)|0;v=pR(v|0,C|0,86400,0)|0;v=gR(v|0,C|0,1045635584,49096)|0;y=c[w>>2]|0;c[y>>2]=v;c[y+4>>2]=C;PO(c[w>>2]|0);c[x>>2]=0;y=c[x>>2]|0;i=z;return y|0}if(yQ(c[y>>2]|0,46462)|0){y=c[x>>2]|0;i=z;return y|0}if(a[(c[w>>2]|0)+44>>0]|0){c[x>>2]=0;y=c[x>>2]|0;i=z;return y|0}HO(c[w>>2]|0);y=l;c[y>>2]=OO(c[w>>2]|0,c[g>>2]|0,x)|0;c[y+4>>2]=C;if(!(c[x>>2]|0)){u=l;y=c[w>>2]|0;v=y;u=fR(c[v>>2]|0,c[v+4>>2]|0,c[u>>2]|0,c[u+4>>2]|0)|0;c[y>>2]=u;c[y+4>>2]=C;PO(c[w>>2]|0);y=l;u=c[y>>2]|0;y=c[y+4>>2]|0;v=OO(c[w>>2]|0,c[g>>2]|0,x)|0;v=fR(u|0,y|0,v|0,C|0)|0;y=c[w>>2]|0;u=y;v=gR(c[u>>2]|0,c[u+4>>2]|0,v|0,C|0)|0;c[y>>2]=v;c[y+4>>2]=C}a[(c[w>>2]|0)+44>>0]=1;y=c[x>>2]|0;i=z;return y|0}case 119:{if(CQ(c[y>>2]|0,46466,8)|0){y=c[x>>2]|0;i=z;return y|0}if(!(Ky((c[y>>2]|0)+8|0,n,If((c[y>>2]|0)+8|0)|0,1)|0)){y=c[x>>2]|0;i=z;return y|0}y=~~+h[n>>3];c[m>>2]=y;if(!(((c[m>>2]|0)>=0?+(y|0)==+h[n>>3]:0)&+h[n>>3]<7.0)){y=c[x>>2]|0;i=z;return y|0}IO(c[w>>2]|0);a[(c[w>>2]|0)+43>>0]=0;a[(c[w>>2]|0)+42>>0]=0;HO(c[w>>2]|0);t=c[w>>2]|0;v=k;c[v>>2]=qR(pR(gR(c[t>>2]|0,c[t+4>>2]|0,1296e5,0)|0,C|0,864e5,0)|0,C|0,7,0)|0;c[v+4>>2]=C;v=k;t=c[v+4>>2]|0;y=c[m>>2]|0;u=((y|0)<0)<<31>>31;if((t|0)>(u|0)|((t|0)==(u|0)?(c[v>>2]|0)>>>0>y>>>0:0)){v=k;v=fR(c[v>>2]|0,c[v+4>>2]|0,7,0)|0;y=k;c[y>>2]=v;c[y+4>>2]=C}y=c[m>>2]|0;v=k;v=rR(fR(y|0,((y|0)<0)<<31>>31|0,c[v>>2]|0,c[v+4>>2]|0)|0,C|0,864e5,0)|0;y=c[w>>2]|0;u=y;c[y>>2]=gR(c[u>>2]|0,c[u+4>>2]|0,v|0,C|0)|0;c[y+4>>2]=C;PO(c[w>>2]|0);c[x>>2]=0;y=c[x>>2]|0;i=z;return y|0}case 115:{if(CQ(c[y>>2]|0,46475,9)|0){y=c[x>>2]|0;i=z;return y|0}c[y>>2]=(c[y>>2]|0)+9;JO(c[w>>2]|0);a[(c[w>>2]|0)+41>>0]=1;c[(c[w>>2]|0)+24>>2]=0;c[(c[w>>2]|0)+20>>2]=0;h[(c[w>>2]|0)+32>>3]=0.0;a[(c[w>>2]|0)+43>>0]=0;a[(c[w>>2]|0)+42>>0]=0;if(!(yQ(c[y>>2]|0,46485)|0)){c[(c[w>>2]|0)+16>>2]=1;c[x>>2]=0;y=c[x>>2]|0;i=z;return y|0}if(!(yQ(c[y>>2]|0,46491)|0)){JO(c[w>>2]|0);c[(c[w>>2]|0)+12>>2]=1;c[(c[w>>2]|0)+16>>2]=1;c[x>>2]=0;y=c[x>>2]|0;i=z;return y|0}if(yQ(c[y>>2]|0,46496)|0){y=c[x>>2]|0;i=z;return y|0}c[x>>2]=0;y=c[x>>2]|0;i=z;return y|0}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:case 45:case 43:{c[m>>2]=1;while(1){if(!(a[(c[y>>2]|0)+(c[m>>2]|0)>>0]|0))break;if((a[(c[y>>2]|0)+(c[m>>2]|0)>>0]|0)==58)break;if(!((d[19267+(d[(c[y>>2]|0)+(c[m>>2]|0)>>0]|0)>>0]&1|0)!=0^1))break;c[m>>2]=(c[m>>2]|0)+1}if(!(Ky(c[y>>2]|0,n,c[m>>2]|0,1)|0)){c[x>>2]=1;y=c[x>>2]|0;i=z;return y|0}if((a[(c[y>>2]|0)+(c[m>>2]|0)>>0]|0)==58){c[v>>2]=c[y>>2];if(!(d[19267+(d[c[v>>2]>>0]|0)>>0]&4))c[v>>2]=(c[v>>2]|0)+1;f=u;b=f+48|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(b|0));if(QO(c[v>>2]|0,u)|0){y=c[x>>2]|0;i=z;return y|0}HO(u);v=u;v=fR(c[v>>2]|0,c[v+4>>2]|0,432e5,0)|0;s=u;c[s>>2]=v;c[s+4>>2]=C;s=u;s=pR(c[s>>2]|0,c[s+4>>2]|0,864e5,0)|0;v=t;c[v>>2]=s;c[v+4>>2]=C;t=rR(c[t>>2]|0,c[t+4>>2]|0,864e5,0)|0;v=u;t=fR(c[v>>2]|0,c[v+4>>2]|0,t|0,C|0)|0;v=u;c[v>>2]=t;c[v+4>>2]=C;if((a[c[y>>2]>>0]|0)==45){v=u;v=fR(0,0,c[v>>2]|0,c[v+4>>2]|0)|0;y=u;c[y>>2]=v;c[y+4>>2]=C}HO(c[w>>2]|0);PO(c[w>>2]|0);v=u;y=c[w>>2]|0;w=y;w=gR(c[w>>2]|0,c[w+4>>2]|0,c[v>>2]|0,c[v+4>>2]|0)|0;c[y>>2]=w;c[y+4>>2]=C;c[x>>2]=0;y=c[x>>2]|0;i=z;return y|0}c[y>>2]=(c[y>>2]|0)+(c[m>>2]|0);while(1){f=c[y>>2]|0;if(!(d[19267+(d[c[y>>2]>>0]|0)>>0]&1))break;c[y>>2]=f+1}c[m>>2]=If(f)|0;if((c[m>>2]|0)>10|(c[m>>2]|0)<3){y=c[x>>2]|0;i=z;return y|0}if((a[(c[y>>2]|0)+((c[m>>2]|0)-1)>>0]|0)==115){a[(c[y>>2]|0)+((c[m>>2]|0)-1)>>0]=0;c[m>>2]=(c[m>>2]|0)+-1}HO(c[w>>2]|0);c[x>>2]=0;h[o>>3]=+h[n>>3]<0.0?-.5:.5;if((c[m>>2]|0)==3?(yQ(c[y>>2]|0,46496)|0)==0:0){A=+h[n>>3]*864.0e5+ +h[o>>3];v=+N(A)>=1.0?A>0.0?~~+$(+M(A/4294967296.0),4294967295.0)>>>0:~~+Z((A-+(~~A>>>0))/4294967296.0)>>>0:0;y=c[w>>2]|0;u=y;v=gR(c[u>>2]|0,c[u+4>>2]|0,~~A>>>0|0,v|0)|0;c[y>>2]=v;c[y+4>>2]=C}else s=54;do if((s|0)==54){if((c[m>>2]|0)==4?(yQ(c[y>>2]|0,46500)|0)==0:0){A=+h[n>>3]*36.0e5+ +h[o>>3];v=+N(A)>=1.0?A>0.0?~~+$(+M(A/4294967296.0),4294967295.0)>>>0:~~+Z((A-+(~~A>>>0))/4294967296.0)>>>0:0;y=c[w>>2]|0;u=y;v=gR(c[u>>2]|0,c[u+4>>2]|0,~~A>>>0|0,v|0)|0;c[y>>2]=v;c[y+4>>2]=C;break}if((c[m>>2]|0)==6?(yQ(c[y>>2]|0,46505)|0)==0:0){A=+h[n>>3]*6.0e4+ +h[o>>3];v=+N(A)>=1.0?A>0.0?~~+$(+M(A/4294967296.0),4294967295.0)>>>0:~~+Z((A-+(~~A>>>0))/4294967296.0)>>>0:0;y=c[w>>2]|0;u=y;v=gR(c[u>>2]|0,c[u+4>>2]|0,~~A>>>0|0,v|0)|0;c[y>>2]=v;c[y+4>>2]=C;break}if((c[m>>2]|0)==6?(yQ(c[y>>2]|0,46512)|0)==0:0){A=+h[n>>3]*1.0e3+ +h[o>>3];v=+N(A)>=1.0?A>0.0?~~+$(+M(A/4294967296.0),4294967295.0)>>>0:~~+Z((A-+(~~A>>>0))/4294967296.0)>>>0:0;y=c[w>>2]|0;u=y;v=gR(c[u>>2]|0,c[u+4>>2]|0,~~A>>>0|0,v|0)|0;c[y>>2]=v;c[y+4>>2]=C;break}if((c[m>>2]|0)==5?(yQ(c[y>>2]|0,46485)|0)==0:0){IO(c[w>>2]|0);y=(c[w>>2]|0)+12|0;c[y>>2]=(c[y>>2]|0)+~~+h[n>>3];y=c[(c[w>>2]|0)+12>>2]|0;c[p>>2]=(((c[(c[w>>2]|0)+12>>2]|0)>0?y-1|0:y-12|0)|0)/12|0;y=(c[w>>2]|0)+8|0;c[y>>2]=(c[y>>2]|0)+(c[p>>2]|0);y=(c[w>>2]|0)+12|0;c[y>>2]=(c[y>>2]|0)-((c[p>>2]|0)*12|0);a[(c[w>>2]|0)+42>>0]=0;HO(c[w>>2]|0);c[q>>2]=~~+h[n>>3];if(!(+(c[q>>2]|0)!=+h[n>>3]))break;A=(+h[n>>3]-+(c[q>>2]|0))*30.0*864.0e5+ +h[o>>3];v=+N(A)>=1.0?A>0.0?~~+$(+M(A/4294967296.0),4294967295.0)>>>0:~~+Z((A-+(~~A>>>0))/4294967296.0)>>>0:0;y=c[w>>2]|0;u=y;v=gR(c[u>>2]|0,c[u+4>>2]|0,~~A>>>0|0,v|0)|0;c[y>>2]=v;c[y+4>>2]=C;break}if((c[m>>2]|0)==4?(yQ(c[y>>2]|0,46491)|0)==0:0){c[r>>2]=~~+h[n>>3];IO(c[w>>2]|0);y=(c[w>>2]|0)+8|0;c[y>>2]=(c[y>>2]|0)+(c[r>>2]|0);a[(c[w>>2]|0)+42>>0]=0;HO(c[w>>2]|0);if(!(+(c[r>>2]|0)!=+h[n>>3]))break;A=(+h[n>>3]-+(c[r>>2]|0))*365.0*864.0e5+ +h[o>>3];v=+N(A)>=1.0?A>0.0?~~+$(+M(A/4294967296.0),4294967295.0)>>>0:~~+Z((A-+(~~A>>>0))/4294967296.0)>>>0:0;y=c[w>>2]|0;u=y;v=gR(c[u>>2]|0,c[u+4>>2]|0,~~A>>>0|0,v|0)|0;c[y>>2]=v;c[y+4>>2]=C;break}c[x>>2]=1}while(0);PO(c[w>>2]|0);y=c[x>>2]|0;i=z;return y|0}default:{y=c[x>>2]|0;i=z;return y|0}}return 0}function OO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+176|0;g=q+96|0;f=q+164|0;j=q+160|0;k=q+156|0;o=q+48|0;p=q;n=q+152|0;m=q+108|0;l=q+104|0;c[f>>2]=b;c[j>>2]=d;c[k>>2]=e;d=m;e=d+44|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));d=o;b=c[f>>2]|0;e=d+48|0;do{c[d>>2]=c[b>>2];d=d+4|0;b=b+4|0}while((d|0)<(e|0));IO(o);if((c[o+8>>2]|0)>=1971?(c[o+8>>2]|0)<2038:0){c[l>>2]=~~(+h[o+32>>3]+.5);h[o+32>>3]=+(c[l>>2]|0)}else{c[o+8>>2]=2e3;c[o+12>>2]=1;c[o+16>>2]=1;c[o+20>>2]=0;c[o+24>>2]=0;h[o+32>>3]=0.0}c[o+28>>2]=0;a[o+42>>0]=0;HO(o);l=o;l=pR(c[l>>2]|0,c[l+4>>2]|0,1e3,0)|0;l=fR(l|0,C|0,413362496,49)|0;c[n>>2]=l;if(TO(n,m)|0){je(c[j>>2]|0,46539,-1);c[c[k>>2]>>2]=1;o=g;c[o>>2]=0;c[o+4>>2]=0;o=g;p=o;p=c[p>>2]|0;o=o+4|0;o=c[o>>2]|0;C=o;i=q;return p|0}else{c[p+8>>2]=(c[m+20>>2]|0)+1900;c[p+12>>2]=(c[m+16>>2]|0)+1;c[p+16>>2]=c[m+12>>2];c[p+20>>2]=c[m+8>>2];c[p+24>>2]=c[m+4>>2];h[p+32>>3]=+(c[m>>2]|0);a[p+40>>0]=1;a[p+41>>0]=1;a[p+42>>0]=0;a[p+43>>0]=0;HO(p);c[c[k>>2]>>2]=0;n=p;p=o;p=fR(c[n>>2]|0,c[n+4>>2]|0,c[p>>2]|0,c[p+4>>2]|0)|0;o=g;c[o>>2]=p;c[o+4>>2]=C;o=g;p=o;p=c[p>>2]|0;o=o+4|0;o=c[o>>2]|0;C=o;i=q;return p|0}return 0}function PO(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;a[(c[e>>2]|0)+40>>0]=0;a[(c[e>>2]|0)+41>>0]=0;a[(c[e>>2]|0)+43>>0]=0;i=d;return}function QO(b,e){b=b|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+64|0;p=q+24|0;r=q+16|0;f=q+48|0;g=q+44|0;j=q+40|0;k=q+36|0;l=q+32|0;o=q+28|0;m=q+8|0;n=q;c[g>>2]=b;c[j>>2]=e;h[m>>3]=0.0;b=c[g>>2]|0;c[r>>2]=k;c[r+4>>2]=l;if((RO(b,46519,r)|0)!=2){c[f>>2]=1;r=c[f>>2]|0;i=q;return r|0}c[g>>2]=(c[g>>2]|0)+5;if((a[c[g>>2]>>0]|0)==58){c[g>>2]=(c[g>>2]|0)+1;r=c[g>>2]|0;c[p>>2]=o;if((RO(r,46527,p)|0)!=1){c[f>>2]=1;r=c[f>>2]|0;i=q;return r|0}c[g>>2]=(c[g>>2]|0)+2;if((a[c[g>>2]>>0]|0)==46?(d[19267+(d[(c[g>>2]|0)+1>>0]|0)>>0]&4|0)!=0:0){h[n>>3]=1.0;c[g>>2]=(c[g>>2]|0)+1;while(1){if(!(d[19267+(d[c[g>>2]>>0]|0)>>0]&4))break;h[m>>3]=+h[m>>3]*10.0+ +(a[c[g>>2]>>0]|0)-48.0;h[n>>3]=+h[n>>3]*10.0;c[g>>2]=(c[g>>2]|0)+1}h[m>>3]=+h[m>>3]/+h[n>>3]}}else c[o>>2]=0;a[(c[j>>2]|0)+42>>0]=0;a[(c[j>>2]|0)+41>>0]=1;c[(c[j>>2]|0)+20>>2]=c[k>>2];c[(c[j>>2]|0)+24>>2]=c[l>>2];h[(c[j>>2]|0)+32>>3]=+(c[o>>2]|0)+ +h[m>>3];if(SO(c[g>>2]|0,c[j>>2]|0)|0){c[f>>2]=1;r=c[f>>2]|0;i=q;return r|0}else{a[(c[j>>2]|0)+43>>0]=(c[(c[j>>2]|0)+28>>2]|0)!=0?1:0;c[f>>2]=0;r=c[f>>2]|0;i=q;return r|0}return 0}function RO(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;j=s+28|0;k=s+24|0;m=s+8|0;r=s+4|0;p=s+36|0;l=s+35|0;o=s+34|0;q=s;n=s+32|0;c[j>>2]=f;c[k>>2]=g;c[r>>2]=0;c[m>>2]=h;a:while(1){a[l>>0]=(a[c[k>>2]>>0]|0)-48;a[o>>0]=(a[(c[k>>2]|0)+1>>0]|0)-48;c[q>>2]=0;b[n>>1]=b[17286+((a[(c[k>>2]|0)+2>>0]|0)-97<<1)>>1]|0;a[p>>0]=a[(c[k>>2]|0)+3>>0]|0;c[q>>2]=0;while(1){g=a[l>>0]|0;a[l>>0]=g+-1<<24>>24;if(!(g<<24>>24))break;if(!(d[19267+(d[c[j>>2]>>0]|0)>>0]&4)){j=11;break a}c[q>>2]=((c[q>>2]|0)*10|0)+(a[c[j>>2]>>0]|0)-48;c[j>>2]=(c[j>>2]|0)+1}if((c[q>>2]|0)<(a[o>>0]|0)){j=11;break}if((c[q>>2]|0)>(e[n>>1]|0)){j=11;break}if((a[p>>0]|0)!=0?(a[p>>0]|0)!=(a[c[j>>2]>>0]|0):0){j=11;break}f=c[q>>2]|0;h=(c[m>>2]|0)+(4-1)&~(4-1);g=c[h>>2]|0;c[m>>2]=h+4;c[g>>2]=f;c[j>>2]=(c[j>>2]|0)+1;c[r>>2]=(c[r>>2]|0)+1;c[k>>2]=(c[k>>2]|0)+4;if(!(a[p>>0]|0)){j=11;break}}if((j|0)==11){i=s;return c[r>>2]|0}return 0}function SO(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;n=p;f=p+32|0;g=p+28|0;h=p+24|0;m=p+20|0;k=p+16|0;l=p+12|0;j=p+8|0;c[g>>2]=b;c[h>>2]=e;c[m>>2]=0;while(1){if(!(d[19267+(d[c[g>>2]>>0]|0)>>0]&1))break;c[g>>2]=(c[g>>2]|0)+1}c[(c[h>>2]|0)+28>>2]=0;c[j>>2]=a[c[g>>2]>>0];do if((c[j>>2]|0)==45){c[m>>2]=-1;o=11}else{if((c[j>>2]|0)==43){c[m>>2]=1;o=11;break}if((c[j>>2]|0)==90|(c[j>>2]|0)==122){c[g>>2]=(c[g>>2]|0)+1;break}c[f>>2]=(c[j>>2]|0)!=0&1;o=c[f>>2]|0;i=p;return o|0}while(0);do if((o|0)==11){c[g>>2]=(c[g>>2]|0)+1;o=c[g>>2]|0;c[n>>2]=k;c[n+4>>2]=l;if((RO(o,46531,n)|0)==2){c[g>>2]=(c[g>>2]|0)+5;o=_(c[m>>2]|0,(c[l>>2]|0)+((c[k>>2]|0)*60|0)|0)|0;c[(c[h>>2]|0)+28>>2]=o;break}c[f>>2]=1;o=c[f>>2]|0;i=p;return o|0}while(0);while(1){if(!(d[19267+(d[c[g>>2]>>0]|0)>>0]&1))break;c[g>>2]=(c[g>>2]|0)+1}a[(c[h>>2]|0)+44>>0]=1;c[f>>2]=(a[c[g>>2]>>0]|0)!=0&1;o=c[f>>2]|0;i=p;return o|0}function TO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;h=g+12|0;d=g+8|0;f=g+4|0;e=g;c[h>>2]=a;c[d>>2]=b;a=Kb(c[h>>2]|0)|0;c[e>>2]=a;c[e>>2]=(c[69]|0)!=0?0:a;if(c[e>>2]|0){d=c[d>>2]|0;b=c[e>>2]|0;a=d+44|0;do{c[d>>2]=c[b>>2];d=d+4|0;b=b+4|0}while((d|0)<(a|0))}c[f>>2]=(c[e>>2]|0)==0&1;i=g;return c[f>>2]|0}function UO(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;f=o;g=o+36|0;h=o+32|0;j=o+28|0;m=o+24|0;l=o+20|0;k=o+16|0;n=o+12|0;c[h>>2]=b;c[j>>2]=e;if((a[c[h>>2]>>0]|0)==45){c[h>>2]=(c[h>>2]|0)+1;c[n>>2]=1}else c[n>>2]=0;b=c[h>>2]|0;c[f>>2]=m;c[f+4>>2]=l;c[f+8>>2]=k;if((RO(b,46566,f)|0)!=3){c[g>>2]=1;n=c[g>>2]|0;i=o;return n|0}c[h>>2]=(c[h>>2]|0)+10;while(1){if(d[19267+(d[c[h>>2]>>0]|0)>>0]&1)f=1;else f=84==(d[c[h>>2]>>0]|0);e=c[h>>2]|0;if(!f)break;c[h>>2]=e+1}do if(QO(e,c[j>>2]|0)|0){if(!(a[c[h>>2]>>0]|0)){a[(c[j>>2]|0)+41>>0]=0;break}c[g>>2]=1;n=c[g>>2]|0;i=o;return n|0}while(0);a[(c[j>>2]|0)+42>>0]=0;a[(c[j>>2]|0)+40>>0]=1;m=c[m>>2]|0;c[(c[j>>2]|0)+8>>2]=(c[n>>2]|0)!=0?0-m|0:m;c[(c[j>>2]|0)+12>>2]=c[l>>2];c[(c[j>>2]|0)+16>>2]=c[k>>2];if(a[(c[j>>2]|0)+43>>0]|0)HO(c[j>>2]|0);c[g>>2]=0;n=c[g>>2]|0;i=o;return n|0}function VO(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;e=f+4|0;d=f;c[b>>2]=a;c[d>>2]=(c[(c[b>>2]|0)+12>>2]|0)+136;a=c[d>>2]|0;if((c[a>>2]|0)==0&(c[a+4>>2]|0)==0?(c[e>>2]=IH(c[c[(c[c[b>>2]>>2]|0)+32>>2]>>2]|0,c[d>>2]|0)|0,(c[e>>2]|0)!=0):0){e=c[d>>2]|0;c[e>>2]=0;c[e+4>>2]=0}e=c[d>>2]|0;C=c[e+4>>2]|0;i=f;return c[e>>2]|0}function WO(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=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;v=i;i=i+64|0;g=v+52|0;h=v+48|0;j=v+44|0;u=v+40|0;t=v+36|0;r=v+32|0;m=v+28|0;n=v+24|0;k=v+20|0;l=v+16|0;q=v+12|0;s=v+8|0;o=v+4|0;p=v;c[g>>2]=b;c[h>>2]=e;c[j>>2]=f;c[k>>2]=0;c[l>>2]=0;if((fe(c[c[j>>2]>>2]|0)|0)==5){i=v;return}c[u>>2]=ae(c[c[j>>2]>>2]|0)|0;if(!(c[u>>2]|0)){i=v;return}c[r>>2]=be(c[c[j>>2]>>2]|0)|0;a:do if((c[h>>2]|0)!=1){b=ae(c[(c[j>>2]|0)+4>>2]|0)|0;c[t>>2]=b;if(!b){i=v;return}c[s>>2]=c[t>>2];c[q>>2]=0;while(1){if(!(a[c[s>>2]>>0]|0))break;b=c[s>>2]|0;c[s>>2]=b+1;b:do if((d[b>>0]|0)>=192)while(1){if((d[c[s>>2]>>0]&192|0)!=128)break b;c[s>>2]=(c[s>>2]|0)+1}while(0);c[q>>2]=(c[q>>2]|0)+1}if((c[q>>2]|0)>0){f=c[g>>2]|0;b=c[q>>2]|0;b=rR(b|0,((b|0)<0)<<31>>31|0,5,0)|0;c[l>>2]=GP(f,b,C)|0;if(!(c[l>>2]|0)){i=v;return}c[k>>2]=(c[l>>2]|0)+(c[q>>2]<<2);c[s>>2]=c[t>>2];c[q>>2]=0;while(1){if(!(a[c[s>>2]>>0]|0))break a;c[(c[l>>2]|0)+(c[q>>2]<<2)>>2]=c[s>>2];b=c[s>>2]|0;c[s>>2]=b+1;c:do if((d[b>>0]|0)>=192)while(1){if((d[c[s>>2]>>0]&192|0)!=128)break c;c[s>>2]=(c[s>>2]|0)+1}while(0);a[(c[k>>2]|0)+(c[q>>2]|0)>>0]=(c[s>>2]|0)-(c[(c[l>>2]|0)+(c[q>>2]<<2)>>2]|0);c[q>>2]=(c[q>>2]|0)+1}}}else{c[q>>2]=1;c[k>>2]=47041;c[l>>2]=9964;c[t>>2]=0}while(0);if((c[q>>2]|0)>0){c[m>>2]=ve(c[g>>2]|0)|0;d:do if((c[m>>2]&1|0)!=0&(c[r>>2]|0)>0)do{c[o>>2]=0;c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[q>>2]|0))break;c[o>>2]=d[(c[k>>2]|0)+(c[n>>2]|0)>>0];if((c[o>>2]|0)<=(c[r>>2]|0)?(vQ(c[u>>2]|0,c[(c[l>>2]|0)+(c[n>>2]<<2)>>2]|0,c[o>>2]|0)|0)==0:0)break;c[n>>2]=(c[n>>2]|0)+1}if((c[n>>2]|0)>=(c[q>>2]|0))break d;c[u>>2]=(c[u>>2]|0)+(c[o>>2]|0);c[r>>2]=(c[r>>2]|0)-(c[o>>2]|0)}while((c[r>>2]|0)>0);while(0);e:do if((c[m>>2]&2|0)!=0&(c[r>>2]|0)>0)do{c[p>>2]=0;c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[q>>2]|0))break;c[p>>2]=d[(c[k>>2]|0)+(c[n>>2]|0)>>0];if((c[p>>2]|0)<=(c[r>>2]|0)?(vQ((c[u>>2]|0)+((c[r>>2]|0)-(c[p>>2]|0))|0,c[(c[l>>2]|0)+(c[n>>2]<<2)>>2]|0,c[p>>2]|0)|0)==0:0)break;c[n>>2]=(c[n>>2]|0)+1}if((c[n>>2]|0)>=(c[q>>2]|0))break e;c[r>>2]=(c[r>>2]|0)-(c[p>>2]|0)}while((c[r>>2]|0)>0);while(0);if(c[t>>2]|0)Kd(c[l>>2]|0)}ne(c[g>>2]|0,c[u>>2]|0,c[r>>2]|0,-1);i=v;return}function XO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;e=n+24|0;f=n+20|0;g=n+16|0;h=n+12|0;k=n+8|0;j=n+4|0;l=n;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;a=(ve(c[e>>2]|0)|0)==0;c[k>>2]=a?0:-1;c[l>>2]=HP(c[e>>2]|0)|0;c[j>>2]=0;if((fe(c[c[g>>2]>>2]|0)|0)==5){i=n;return}c[h>>2]=1;while(1){if((c[h>>2]|0)>=(c[f>>2]|0))break;if((fe(c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0)|0)==5){m=9;break}a=cI(c[(c[g>>2]|0)+(c[j>>2]<<2)>>2]|0,c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,c[l>>2]|0)|0;if((a^c[k>>2]|0)>=0)c[j>>2]=c[h>>2];c[h>>2]=(c[h>>2]|0)+1}if((m|0)==9){i=n;return}pe(c[e>>2]|0,c[(c[g>>2]|0)+(c[j>>2]<<2)>>2]|0);i=n;return}function YO(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+28|0;f=n+20|0;k=n+16|0;l=n+12|0;j=n+8|0;h=n+4|0;m=n;c[g>>2]=a;c[n+24>>2]=d;c[f>>2]=e;c[k>>2]=c[c[f>>2]>>2];c[l>>2]=xe(c[g>>2]|0,40)|0;if(!(c[l>>2]|0)){i=n;return}a=(fe(c[c[f>>2]>>2]|0)|0)==5;f=(b[(c[l>>2]|0)+8>>1]|0)!=0;if(a){if(!f){i=n;return}IP(c[g>>2]|0);i=n;return}d=c[g>>2]|0;if(!f){m=we(d)|0;c[(c[l>>2]|0)+32>>2]=m;gh(c[l>>2]|0,c[k>>2]|0)|0;i=n;return}c[m>>2]=HP(d)|0;c[j>>2]=(ve(c[g>>2]|0)|0)!=0&1;c[h>>2]=cI(c[l>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;if(!((c[j>>2]|0)!=0&(c[h>>2]|0)<0)?!((c[j>>2]|0)==0&(c[h>>2]|0)>0):0){IP(c[g>>2]|0);i=n;return}gh(c[l>>2]|0,c[k>>2]|0)|0;i=n;return}function ZO(a){a=a|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=xe(c[d>>2]|0,0)|0;if(!(c[e>>2]|0)){i=f;return}if(b[(c[e>>2]|0)+8>>1]|0)pe(c[d>>2]|0,c[e>>2]|0);Ug(c[e>>2]|0);i=f;return}function _O(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+12|0;h=g+4|0;f=g;c[e>>2]=a;c[g+8>>2]=b;c[h>>2]=d;c[f>>2]=0;switch(fe(c[c[h>>2]>>2]|0)|0){case 1:{c[f>>2]=40517;break}case 3:{c[f>>2]=47031;break}case 2:{c[f>>2]=40512;break}case 4:{c[f>>2]=47036;break}default:c[f>>2]=40525}ne(c[e>>2]|0,c[f>>2]|0,-1,0);i=g;return}function $O(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;h=l+8|0;j=l+4|0;k=l;c[g>>2]=b;c[l+12>>2]=e;c[h>>2]=f;switch(fe(c[c[h>>2]>>2]|0)|0){case 2:case 1:case 4:{ke(c[g>>2]|0,be(c[c[h>>2]>>2]|0)|0);i=l;return}case 3:{c[k>>2]=ae(c[c[h>>2]>>2]|0)|0;if(!(c[k>>2]|0)){i=l;return}c[j>>2]=0;a:while(1){if(!(a[c[k>>2]>>0]|0))break;c[j>>2]=(c[j>>2]|0)+1;b=c[k>>2]|0;c[k>>2]=b+1;if((d[b>>0]|0)<192)continue;while(1){if((d[c[k>>2]>>0]&192|0)!=128)continue a;c[k>>2]=(c[k>>2]|0)+1}}ke(c[g>>2]|0,c[j>>2]|0);i=l;return}default:{me(c[g>>2]|0);i=l;return}}}function aP(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;f=q+40|0;g=q+32|0;o=q+28|0;p=q+24|0;k=q+20|0;l=q+16|0;m=q+12|0;n=q+8|0;h=q+4|0;j=q;c[f>>2]=a;c[q+36>>2]=b;c[g>>2]=e;c[h>>2]=1;c[m>>2]=fe(c[c[g>>2]>>2]|0)|0;c[n>>2]=fe(c[(c[g>>2]|0)+4>>2]|0)|0;if((c[m>>2]|0)==5|(c[n>>2]|0)==5){i=q;return}c[k>>2]=be(c[c[g>>2]>>2]|0)|0;c[l>>2]=be(c[(c[g>>2]|0)+4>>2]|0)|0;b=c[c[g>>2]>>2]|0;if((c[m>>2]|0)==4&(c[n>>2]|0)==4){c[o>>2]=$d(b)|0;c[p>>2]=$d(c[(c[g>>2]|0)+4>>2]|0)|0;c[j>>2]=0}else{c[o>>2]=ae(b)|0;c[p>>2]=ae(c[(c[g>>2]|0)+4>>2]|0)|0;c[j>>2]=1}a:while(1){if((c[l>>2]|0)>(c[k>>2]|0))break;if(!(vQ(c[o>>2]|0,c[p>>2]|0,c[l>>2]|0)|0))break;c[h>>2]=(c[h>>2]|0)+1;while(1){c[k>>2]=(c[k>>2]|0)+-1;c[o>>2]=(c[o>>2]|0)+1;if(!(c[j>>2]|0))continue a;if(((d[c[o>>2]>>0]|0)&192|0)!=128)continue a}}if((c[l>>2]|0)>(c[k>>2]|0))c[h>>2]=0;ke(c[f>>2]|0,c[h>>2]|0);i=q;return}function bP(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;m=r+44|0;g=r+40|0;h=r+36|0;p=r+32|0;q=r+28|0;j=r+24|0;l=r+20|0;n=r+8|0;o=r;k=r+16|0;c[m>>2]=b;c[g>>2]=e;c[h>>2]=f;c[k>>2]=0;if((fe(c[(c[h>>2]|0)+4>>2]|0)|0)==5){i=r;return}if((c[g>>2]|0)==3?(fe(c[(c[h>>2]|0)+8>>2]|0)|0)==5:0){i=r;return}c[l>>2]=fe(c[c[h>>2]>>2]|0)|0;b=de(c[(c[h>>2]|0)+4>>2]|0)|0;e=n;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;e=c[c[h>>2]>>2]|0;a:do if((c[l>>2]|0)==4){c[j>>2]=be(e)|0;c[p>>2]=$d(c[c[h>>2]>>2]|0)|0;if(!(c[p>>2]|0)){i=r;return}}else{c[p>>2]=ae(e)|0;if(!(c[p>>2]|0)){i=r;return}c[j>>2]=0;if((c[n+4>>2]|0)<0){c[q>>2]=c[p>>2];while(1){if(!(a[c[q>>2]>>0]|0))break a;b=c[q>>2]|0;c[q>>2]=b+1;b:do if((d[b>>0]|0)>=192)while(1){if((d[c[q>>2]>>0]&192|0)!=128)break b;c[q>>2]=(c[q>>2]|0)+1}while(0);c[j>>2]=(c[j>>2]|0)+1}}}while(0);if((c[g>>2]|0)==3){g=de(c[(c[h>>2]|0)+8>>2]|0)|0;h=o;c[h>>2]=g;c[h+4>>2]=((g|0)<0)<<31>>31;if((c[o+4>>2]|0)<0){g=o;g=fR(0,0,c[g>>2]|0,c[g+4>>2]|0)|0;h=o;c[h>>2]=g;c[h+4>>2]=C;c[k>>2]=1}}else{g=c[(we(c[m>>2]|0)|0)+88>>2]|0;h=o;c[h>>2]=g;c[h+4>>2]=((g|0)<0)<<31>>31}do if((c[n+4>>2]|0)<0){g=c[j>>2]|0;h=n;g=gR(c[h>>2]|0,c[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0;h=n;c[h>>2]=g;c[h+4>>2]=C;if((c[n+4>>2]|0)<0){f=n;g=o;f=gR(c[g>>2]|0,c[g+4>>2]|0,c[f>>2]|0,c[f+4>>2]|0)|0;g=C;b=o;c[b>>2]=f;c[b+4>>2]=g;b=(c[o+4>>2]|0)<0;h=o;c[h>>2]=b?0:f;c[h+4>>2]=b?0:g;h=n;c[h>>2]=0;c[h+4>>2]=0}}else{h=n;g=c[h+4>>2]|0;if((g|0)>0|(g|0)==0&(c[h>>2]|0)>>>0>0){g=n;g=gR(c[g>>2]|0,c[g+4>>2]|0,-1,-1)|0;h=n;c[h>>2]=g;c[h+4>>2]=C;break}h=o;g=c[h+4>>2]|0;if((g|0)>0|(g|0)==0&(c[h>>2]|0)>>>0>0){g=o;g=gR(c[g>>2]|0,c[g+4>>2]|0,-1,-1)|0;h=o;c[h>>2]=g;c[h+4>>2]=C}}while(0);if((c[k>>2]|0)!=0?(h=o,k=n,h=fR(c[k>>2]|0,c[k+4>>2]|0,c[h>>2]|0,c[h+4>>2]|0)|0,k=n,c[k>>2]=h,c[k+4>>2]=C,(c[n+4>>2]|0)<0):0){h=n;k=o;h=gR(c[k>>2]|0,c[k+4>>2]|0,c[h>>2]|0,c[h+4>>2]|0)|0;k=o;c[k>>2]=h;c[k+4>>2]=C;k=n;c[k>>2]=0;c[k+4>>2]=0}if((c[l>>2]|0)==4){h=n;l=o;l=gR(c[h>>2]|0,c[h+4>>2]|0,c[l>>2]|0,c[l+4>>2]|0)|0;h=C;q=c[j>>2]|0;k=((q|0)<0)<<31>>31;if((h|0)>(k|0)|(h|0)==(k|0)&l>>>0>q>>>0){l=c[j>>2]|0;j=n;j=fR(l|0,((l|0)<0)<<31>>31|0,c[j>>2]|0,c[j+4>>2]|0)|0;l=C;k=o;c[k>>2]=j;c[k+4>>2]=l;k=(c[o+4>>2]|0)<0;q=o;c[q>>2]=k?0:j;c[q+4>>2]=k?0:l}q=o;he(c[m>>2]|0,(c[p>>2]|0)+(c[n>>2]|0)|0,c[q>>2]|0,c[q+4>>2]|0,-1);i=r;return}while(1){l=n;e=c[p>>2]|0;if(!((d[c[p>>2]>>0]|0)!=0?(c[l>>2]|0)!=0|(c[l+4>>2]|0)!=0:0))break;c[p>>2]=e+1;c:do if((d[e>>0]|0)>=192)while(1){if((d[c[p>>2]>>0]&192|0)!=128)break c;c[p>>2]=(c[p>>2]|0)+1}while(0);k=n;k=gR(c[k>>2]|0,c[k+4>>2]|0,-1,-1)|0;l=n;c[l>>2]=k;c[l+4>>2]=C}c[q>>2]=e;while(1){n=o;if(!((d[c[q>>2]>>0]|0)!=0?(c[n>>2]|0)!=0|(c[n+4>>2]|0)!=0:0))break;n=c[q>>2]|0;c[q>>2]=n+1;d:do if((d[n>>0]|0)>=192)while(1){if((d[c[q>>2]>>0]&192|0)!=128)break d;c[q>>2]=(c[q>>2]|0)+1}while(0);l=o;l=gR(c[l>>2]|0,c[l+4>>2]|0,-1,-1)|0;n=o;c[n>>2]=l;c[n+4>>2]=C}q=(c[q>>2]|0)-(c[p>>2]|0)|0;oe(c[m>>2]|0,c[p>>2]|0,q,((q|0)<0)<<31>>31,-1,1);i=r;return}function cP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+80|0;m=p;f=p+64|0;g=p+60|0;h=p+56|0;n=p+44|0;l=p+16|0;o=p+12|0;k=p+8|0;j=p+4|0;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;c[j>>2]=we(c[f>>2]|0)|0;if((c[g>>2]|0)<1){i=p;return}b=ae(c[c[h>>2]>>2]|0)|0;c[o>>2]=b;if(!b){i=p;return}c[n>>2]=(c[g>>2]|0)-1;c[n+4>>2]=0;c[n+8>>2]=(c[h>>2]|0)+4;cg(l,c[j>>2]|0,0,0,c[(c[j>>2]|0)+88>>2]|0);a[l+25>>0]=2;o=c[o>>2]|0;c[m>>2]=n;$z(l,o,m);c[k>>2]=c[l+12>>2];n=c[f>>2]|0;o=eg(l)|0;ne(n,o,c[k>>2]|0,170);i=p;return}function dP(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0;h=i;i=i+16|0;f=h+12|0;j=h+4|0;g=h;c[f>>2]=a;c[h+8>>2]=b;c[j>>2]=e;c[g>>2]=ae(c[c[j>>2]>>2]|0)|0;if(!(c[g>>2]|0)){i=h;return}if(!(d[c[g>>2]>>0]|0)){i=h;return}j=c[f>>2]|0;ke(j,jC(g)|0);i=h;return}function eP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+48|0;f=o+32|0;g=o+28|0;h=o+24|0;m=o+20|0;n=o+16|0;k=o+12|0;l=o;j=o+8|0;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;b=(c[g>>2]<<2)+1|0;b=Jd(b,((b|0)<0)<<31>>31)|0;c[m>>2]=b;c[n>>2]=b;if(!(c[m>>2]|0)){te(c[f>>2]|0);i=o;return}c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[g>>2]|0))break;p=ee(c[(c[h>>2]|0)+(c[k>>2]<<2)>>2]|0)|0;b=C;e=l;c[e>>2]=p;c[e+4>>2]=b;e=l;d=c[e+4>>2]|0;e=(c[l+4>>2]|0)<0|((d|0)>0|(d|0)==0&(c[e>>2]|0)>>>0>1114111);d=l;c[d>>2]=e?65533:p;c[d+4>>2]=e?0:b;c[j>>2]=c[l>>2]&2097151;d=c[j>>2]|0;do if((c[j>>2]|0)>>>0>=128){e=c[j>>2]|0;if(d>>>0<2048){b=c[n>>2]|0;c[n>>2]=b+1;a[b>>0]=192+(e>>>6&31);b=128+(c[j>>2]&63)&255;p=c[n>>2]|0;c[n>>2]=p+1;a[p>>0]=b;break}d=c[j>>2]|0;if(e>>>0<65536){p=c[n>>2]|0;c[n>>2]=p+1;a[p>>0]=224+(d>>>12&15);p=128+((c[j>>2]|0)>>>6&63)&255;b=c[n>>2]|0;c[n>>2]=b+1;a[b>>0]=p;b=128+(c[j>>2]&63)&255;p=c[n>>2]|0;c[n>>2]=p+1;a[p>>0]=b;break}else{b=c[n>>2]|0;c[n>>2]=b+1;a[b>>0]=240+(d>>>18&7);b=128+((c[j>>2]|0)>>>12&63)&255;p=c[n>>2]|0;c[n>>2]=p+1;a[p>>0]=b;p=128+((c[j>>2]|0)>>>6&63)&255;b=c[n>>2]|0;c[n>>2]=b+1;a[b>>0]=p;b=128+(c[j>>2]&63)&255;p=c[n>>2]|0;c[n>>2]=p+1;a[p>>0]=b;break}}else{p=c[n>>2]|0;c[n>>2]=p+1;a[p>>0]=d}while(0);c[k>>2]=(c[k>>2]|0)+1}p=(c[n>>2]|0)-(c[m>>2]|0)|0;oe(c[f>>2]|0,c[m>>2]|0,p,((p|0)<0)<<31>>31,148,1);i=o;return}function fP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0;k=i;i=i+32|0;e=k+24|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[k+20>>2]=b;c[f>>2]=d;switch(fe(c[c[f>>2]>>2]|0)|0){case 1:{j=g;c[j>>2]=ee(c[c[f>>2]>>2]|0)|0;c[j+4>>2]=C;do if((c[g+4>>2]|0)<0){j=g;if(!((c[j>>2]|0)==0?(c[j+4>>2]|0)==-2147483648:0)){a=g;a=fR(0,0,c[a>>2]|0,c[a+4>>2]|0)|0;j=g;c[j>>2]=a;c[j+4>>2]=C;break}je(c[e>>2]|0,46986,-1);i=k;return}while(0);j=g;le(c[e>>2]|0,c[j>>2]|0,c[j+4>>2]|0);i=k;return}case 5:{me(c[e>>2]|0);i=k;return}default:{h[j>>3]=+ce(c[c[f>>2]>>2]|0);if(+h[j>>3]<0.0)h[j>>3]=-+h[j>>3];ie(c[e>>2]|0,+h[j>>3]);i=k;return}}}function gP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0.0;m=i;i=i+48|0;k=m+8|0;e=m+40|0;n=m+36|0;f=m+32|0;g=m+28|0;j=m;l=m+24|0;c[e>>2]=a;c[n>>2]=b;c[f>>2]=d;c[g>>2]=0;do if((c[n>>2]|0)==2)if(5==(fe(c[(c[f>>2]|0)+4>>2]|0)|0)){i=m;return}else{n=de(c[(c[f>>2]|0)+4>>2]|0)|0;c[g>>2]=n;n=(c[g>>2]|0)>30?30:n;c[g>>2]=n;c[g>>2]=(c[g>>2]|0)<0?0:n;break}while(0);if((fe(c[c[f>>2]>>2]|0)|0)==5){i=m;return}h[j>>3]=+ce(c[c[f>>2]>>2]|0);do if((c[g>>2]|0)==0&+h[j>>3]>=0.0&+h[j>>3]<9223372036854775808.0){o=+h[j>>3]+.5;h[j>>3]=+(~~o>>>0>>>0)+4294967296.0*+((+N(o)>=1.0?o>0.0?~~+$(+M(o/4294967296.0),4294967295.0)>>>0:~~+Z((o-+(~~o>>>0))/4294967296.0)>>>0:0)|0)}else{if((c[g>>2]|0)==0&+h[j>>3]<0.0?-+h[j>>3]<9223372036854775808.0:0){o=-+h[j>>3]+.5;h[j>>3]=-(+(~~o>>>0>>>0)+4294967296.0*+((+N(o)>=1.0?o>0.0?~~+$(+M(o/4294967296.0),4294967295.0)>>>0:~~+Z((o-+(~~o>>>0))/4294967296.0)>>>0:0)|0));break}o=+h[j>>3];c[k>>2]=c[g>>2];h[k+8>>3]=o;c[l>>2]=Od(47026,k)|0;if(c[l>>2]|0){n=c[l>>2]|0;Ky(n,j,If(c[l>>2]|0)|0,1)|0;Kd(c[l>>2]|0);break}te(c[e>>2]|0);i=m;return}while(0);ie(c[e>>2]|0,+h[j>>3]);i=m;return}function hP(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;g=m+24|0;n=m+16|0;k=m+12|0;l=m+8|0;h=m+4|0;j=m;c[g>>2]=b;c[m+20>>2]=e;c[n>>2]=f;c[l>>2]=ae(c[c[n>>2]>>2]|0)|0;c[j>>2]=be(c[c[n>>2]>>2]|0)|0;if(!(c[l>>2]|0)){i=m;return}b=c[g>>2]|0;n=c[j>>2]|0;n=gR(n|0,((n|0)<0)<<31>>31|0,1,0)|0;c[k>>2]=GP(b,n,C)|0;if(!(c[k>>2]|0)){i=m;return}c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[j>>2]|0))break;a[(c[k>>2]|0)+(c[h>>2]|0)>>0]=a[(c[l>>2]|0)+(c[h>>2]|0)>>0]&~(d[19267+(d[(c[l>>2]|0)+(c[h>>2]|0)>>0]|0)>>0]&32);c[h>>2]=(c[h>>2]|0)+1}ne(c[g>>2]|0,c[k>>2]|0,c[j>>2]|0,148);i=m;return}function iP(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;g=m+24|0;n=m+16|0;k=m+12|0;l=m+8|0;h=m+4|0;j=m;c[g>>2]=b;c[m+20>>2]=e;c[n>>2]=f;c[l>>2]=ae(c[c[n>>2]>>2]|0)|0;c[j>>2]=be(c[c[n>>2]>>2]|0)|0;if(!(c[l>>2]|0)){i=m;return}b=c[g>>2]|0;n=c[j>>2]|0;n=gR(n|0,((n|0)<0)<<31>>31|0,1,0)|0;c[k>>2]=GP(b,n,C)|0;if(!(c[k>>2]|0)){i=m;return}c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[j>>2]|0))break;a[(c[k>>2]|0)+(c[h>>2]|0)>>0]=a[18477+(d[(c[l>>2]|0)+(c[h>>2]|0)>>0]|0)>>0]|0;c[h>>2]=(c[h>>2]|0)+1}ne(c[g>>2]|0,c[k>>2]|0,c[j>>2]|0,148);i=m;return}function jP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e+8|0;c[f>>2]=a;c[e+4>>2]=b;c[e>>2]=d;a=c[f>>2]|0;ne(a,jf()|0,-1,0);i=e;return}function kP(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+48|0;g=o+28|0;p=o+20|0;j=o+16|0;k=o+12|0;l=o+8|0;n=o+4|0;m=o;h=o+32|0;c[g>>2]=b;c[o+24>>2]=e;c[p>>2]=f;c[l>>2]=$d(c[c[p>>2]>>2]|0)|0;c[k>>2]=be(c[c[p>>2]>>2]|0)|0;f=c[g>>2]|0;b=c[k>>2]|0;b=rR(b|0,((b|0)<0)<<31>>31|0,2,0)|0;b=gR(b|0,C|0,1,0)|0;b=GP(f,b,C)|0;c[n>>2]=b;c[m>>2]=b;if(!(c[n>>2]|0)){i=o;return}c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[k>>2]|0))break;a[h>>0]=a[c[l>>2]>>0]|0;p=a[47010+((d[h>>0]|0)>>4&15)>>0]|0;b=c[m>>2]|0;c[m>>2]=b+1;a[b>>0]=p;b=a[47010+((d[h>>0]|0)&15)>>0]|0;p=c[m>>2]|0;c[m>>2]=p+1;a[p>>0]=b;c[j>>2]=(c[j>>2]|0)+1;c[l>>2]=(c[l>>2]|0)+1}a[c[m>>2]>>0]=0;ne(c[g>>2]|0,c[n>>2]|0,c[k>>2]<<1,148);i=o;return}function lP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+32|0;e=g+16|0;f=g;c[e>>2]=a;c[g+12>>2]=b;c[g+8>>2]=d;Sd(8,f);if((c[f+4>>2]|0)<0){d=f;d=fR(0,0,c[d>>2]|0,c[d+4>>2]&2147483647|0)|0;a=f;c[a>>2]=d;c[a+4>>2]=C}le(c[e>>2]|0,c[f>>2]|0,c[f+4>>2]|0);i=g;return}function mP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;e=h+16|0;j=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[h+12>>2]=b;c[j>>2]=d;a=de(c[c[j>>2]>>2]|0)|0;c[f>>2]=a;c[f>>2]=(c[f>>2]|0)<1?1:a;a=c[f>>2]|0;c[g>>2]=GP(c[e>>2]|0,a,((a|0)<0)<<31>>31)|0;if(!(c[g>>2]|0)){i=h;return}Sd(c[f>>2]|0,c[g>>2]|0);ge(c[e>>2]|0,c[g>>2]|0,c[f>>2]|0,148);i=h;return}function nP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+12|0;f=g+4|0;h=g;c[e>>2]=a;c[g+8>>2]=b;c[f>>2]=d;c[h>>2]=HP(c[e>>2]|0)|0;if(!(cI(c[c[f>>2]>>2]|0,c[(c[f>>2]|0)+4>>2]|0,c[h>>2]|0)|0)){i=g;return}pe(c[e>>2]|0,c[c[f>>2]>>2]|0);i=g;return}function oP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e+8|0;c[f>>2]=a;c[e+4>>2]=b;c[e>>2]=d;a=c[f>>2]|0;ne(a,kf()|0,-1,0);i=e;return}function pP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e;g=e+4|0;c[e+12>>2]=a;c[e+8>>2]=b;c[g>>2]=d;a=de(c[c[g>>2]>>2]|0)|0;c[f>>2]=ae(c[(c[g>>2]|0)+4>>2]|0)|0;Rd(a,19255,f);i=e;return}function qP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+12|0;h=g+4|0;f=g;c[e>>2]=a;c[g+8>>2]=b;c[h>>2]=d;a=ae(c[c[h>>2]>>2]|0)|0;c[f>>2]=a;if(!a){i=g;return}h=c[e>>2]|0;ke(h,yd(c[f>>2]|0)|0);i=g;return}function rP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+12|0;h=e+4|0;f=e;c[g>>2]=a;c[e+8>>2]=b;c[h>>2]=d;c[f>>2]=de(c[c[h>>2]>>2]|0)|0;a=c[g>>2]|0;ne(a,Ad(c[f>>2]|0)|0,-1,0);i=e;return}function sP(b,e,f){b=b|0;e=e|0;f=f|0;var g=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;y=i;i=i+144|0;s=y+32|0;r=y+24|0;g=y+80|0;j=y+72|0;p=y+16|0;q=y+8|0;w=y+84|0;x=y+68|0;v=y+64|0;o=y+60|0;k=y+56|0;l=y+52|0;m=y+48|0;n=y;u=y+44|0;t=y+40|0;c[g>>2]=b;c[y+76>>2]=e;c[j>>2]=f;switch(fe(c[c[j>>2]>>2]|0)|0){case 2:{h[p>>3]=+ce(c[c[j>>2]>>2]|0);h[r>>3]=+h[p>>3];Qd(50,w,29142,r)|0;Ky(w,q,20,1)|0;if(+h[p>>3]!=+h[q>>3]){h[s>>3]=+h[p>>3];Qd(50,w,47003,s)|0}ne(c[g>>2]|0,w,-1,-1);i=y;return}case 1:{pe(c[g>>2]|0,c[c[j>>2]>>2]|0);i=y;return}case 4:{c[x>>2]=0;c[v>>2]=$d(c[c[j>>2]>>2]|0)|0;c[o>>2]=be(c[c[j>>2]>>2]|0)|0;u=c[g>>2]|0;w=c[o>>2]|0;c[x>>2]=GP(u,gR(rR(2,0,w|0,((w|0)<0)<<31>>31|0)|0,C|0,4,0)|0,C)|0;if(!(c[x>>2]|0)){i=y;return}c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[o>>2]|0))break;a[(c[x>>2]|0)+((c[k>>2]<<1)+2)>>0]=a[47010+(a[(c[v>>2]|0)+(c[k>>2]|0)>>0]>>4&15)>>0]|0;a[(c[x>>2]|0)+((c[k>>2]<<1)+3)>>0]=a[47010+(a[(c[v>>2]|0)+(c[k>>2]|0)>>0]&15)>>0]|0;c[k>>2]=(c[k>>2]|0)+1}a[(c[x>>2]|0)+((c[o>>2]<<1)+2)>>0]=39;a[(c[x>>2]|0)+((c[o>>2]<<1)+3)>>0]=0; -a[c[x>>2]>>0]=88;a[(c[x>>2]|0)+1>>0]=39;ne(c[g>>2]|0,c[x>>2]|0,-1,-1);Kd(c[x>>2]|0);i=y;return}case 3:{c[u>>2]=ae(c[c[j>>2]>>2]|0)|0;if(!(c[u>>2]|0)){i=y;return}c[l>>2]=0;x=n;c[x>>2]=0;c[x+4>>2]=0;while(1){if(!(a[(c[u>>2]|0)+(c[l>>2]|0)>>0]|0))break;if((d[(c[u>>2]|0)+(c[l>>2]|0)>>0]|0)==39){w=n;w=gR(c[w>>2]|0,c[w+4>>2]|0,1,0)|0;x=n;c[x>>2]=w;c[x+4>>2]=C}c[l>>2]=(c[l>>2]|0)+1}w=c[g>>2]|0;v=c[l>>2]|0;x=n;x=gR(v|0,((v|0)<0)<<31>>31|0,c[x>>2]|0,c[x+4>>2]|0)|0;x=gR(x|0,C|0,3,0)|0;c[t>>2]=GP(w,x,C)|0;if(!(c[t>>2]|0)){i=y;return}a[c[t>>2]>>0]=39;c[l>>2]=0;c[m>>2]=1;while(1){if(!(a[(c[u>>2]|0)+(c[l>>2]|0)>>0]|0))break;w=a[(c[u>>2]|0)+(c[l>>2]|0)>>0]|0;x=c[m>>2]|0;c[m>>2]=x+1;a[(c[t>>2]|0)+x>>0]=w;if((d[(c[u>>2]|0)+(c[l>>2]|0)>>0]|0)==39){x=c[m>>2]|0;c[m>>2]=x+1;a[(c[t>>2]|0)+x>>0]=39}c[l>>2]=(c[l>>2]|0)+1}x=c[m>>2]|0;c[m>>2]=x+1;a[(c[t>>2]|0)+x>>0]=39;a[(c[t>>2]|0)+(c[m>>2]|0)>>0]=0;ne(c[g>>2]|0,c[t>>2]|0,c[m>>2]|0,148);i=y;return}default:{ne(c[g>>2]|0,40498,4,0);i=y;return}}}function tP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+12|0;f=e;c[g>>2]=a;c[e+8>>2]=b;c[e+4>>2]=d;c[f>>2]=we(c[g>>2]|0)|0;d=c[g>>2]|0;a=of(c[f>>2]|0)|0;le(d,a,C);i=e;return}function uP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+12|0;f=e;c[g>>2]=a;c[e+8>>2]=b;c[e+4>>2]=d;c[f>>2]=we(c[g>>2]|0)|0;a=c[g>>2]|0;ke(a,pf(c[f>>2]|0)|0);i=e;return}function vP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+12|0;f=e;c[g>>2]=a;c[e+8>>2]=b;c[e+4>>2]=d;c[f>>2]=we(c[g>>2]|0)|0;a=c[g>>2]|0;ke(a,qf(c[f>>2]|0)|0);i=e;return}function wP(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=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;w=i;i=i+80|0;p=w+64|0;g=w+56|0;v=w+52|0;n=w+48|0;o=w+44|0;u=w+40|0;s=w+36|0;l=w+32|0;m=w+28|0;k=w;j=w+24|0;q=w+20|0;r=w+16|0;t=w+12|0;h=w+8|0;c[p>>2]=b;c[w+60>>2]=e;c[g>>2]=f;c[v>>2]=ae(c[c[g>>2]>>2]|0)|0;if(!(c[v>>2]|0)){i=w;return}c[s>>2]=be(c[c[g>>2]>>2]|0)|0;c[n>>2]=ae(c[(c[g>>2]|0)+4>>2]|0)|0;if(!(c[n>>2]|0)){i=w;return}if(!(d[c[n>>2]>>0]|0)){pe(c[p>>2]|0,c[c[g>>2]>>2]|0);i=w;return}c[l>>2]=be(c[(c[g>>2]|0)+4>>2]|0)|0;c[o>>2]=ae(c[(c[g>>2]|0)+8>>2]|0)|0;if(!(c[o>>2]|0)){i=w;return}c[m>>2]=be(c[(c[g>>2]|0)+8>>2]|0)|0;f=(c[s>>2]|0)+1|0;b=k;c[b>>2]=f;c[b+4>>2]=((f|0)<0)<<31>>31;b=k;c[u>>2]=GP(c[p>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;if(!(c[u>>2]|0)){i=w;return}c[j>>2]=(c[s>>2]|0)-(c[l>>2]|0);c[r>>2]=0;c[q>>2]=0;while(1){if((c[q>>2]|0)>(c[j>>2]|0)){g=18;break}if((d[(c[v>>2]|0)+(c[q>>2]|0)>>0]|0|0)==(d[c[n>>2]>>0]|0|0)?(vQ((c[v>>2]|0)+(c[q>>2]|0)|0,c[n>>2]|0,c[l>>2]|0)|0)==0:0){c[h>>2]=we(c[p>>2]|0)|0;g=(c[m>>2]|0)-(c[l>>2]|0)|0;f=k;g=gR(c[f>>2]|0,c[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0;f=k;c[f>>2]=g;c[f+4>>2]=C;f=k;f=fR(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;g=C;b=c[(c[h>>2]|0)+88>>2]|0;e=((b|0)<0)<<31>>31;if((g|0)>(e|0)|(g|0)==(e|0)&f>>>0>b>>>0){g=13;break}c[t>>2]=c[u>>2];b=c[k>>2]|0;c[u>>2]=Md(c[u>>2]|0,b,((b|0)<0)<<31>>31)|0;if(!(c[u>>2]|0)){g=15;break}iR((c[u>>2]|0)+(c[r>>2]|0)|0,c[o>>2]|0,c[m>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+(c[m>>2]|0);c[q>>2]=(c[q>>2]|0)+((c[l>>2]|0)-1)}else{f=a[(c[v>>2]|0)+(c[q>>2]|0)>>0]|0;b=c[r>>2]|0;c[r>>2]=b+1;a[(c[u>>2]|0)+b>>0]=f}c[q>>2]=(c[q>>2]|0)+1}if((g|0)==13){se(c[p>>2]|0);Kd(c[u>>2]|0);i=w;return}else if((g|0)==15){te(c[p>>2]|0);Kd(c[t>>2]|0);i=w;return}else if((g|0)==18){iR((c[u>>2]|0)+(c[r>>2]|0)|0,(c[v>>2]|0)+(c[q>>2]|0)|0,(c[s>>2]|0)-(c[q>>2]|0)|0)|0;c[r>>2]=(c[r>>2]|0)+((c[s>>2]|0)-(c[q>>2]|0));a[(c[u>>2]|0)+(c[r>>2]|0)>>0]=0;ne(c[p>>2]|0,c[u>>2]|0,c[r>>2]|0,148);i=w;return}}function xP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+32|0;e=g+20|0;j=g+12|0;h=g;f=g+8|0;c[e>>2]=a;c[g+16>>2]=b;c[j>>2]=d;j=ee(c[c[j>>2]>>2]|0)|0;d=C;b=h;c[b>>2]=j;c[b+4>>2]=d;b=(c[h+4>>2]|0)<0;a=h;c[a>>2]=b?0:j;c[a+4>>2]=b?0:d;a=h;c[f>>2]=qe(c[e>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;if(!(c[f>>2]|0)){i=g;return}re(c[e>>2]|0,c[f>>2]|0);i=g;return}function yP(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0,o=0.0;m=i;i=i+32|0;n=m+24|0;g=m+16|0;j=m+12|0;k=m+8|0;l=m;c[n>>2]=b;c[m+20>>2]=e;c[g>>2]=f;c[j>>2]=xe(c[n>>2]|0,32)|0;c[k>>2]=Te(c[c[g>>2]>>2]|0)|0;if(!((c[j>>2]|0)!=0&(c[k>>2]|0)!=5)){i=m;return}n=(c[j>>2]|0)+16|0;b=n;b=gR(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;c[n>>2]=b;c[n+4>>2]=C;g=c[c[g>>2]>>2]|0;if((c[k>>2]|0)!=1){o=+ce(g);n=c[j>>2]|0;h[n>>3]=+h[n>>3]+o;a[(c[j>>2]|0)+25>>0]=1;i=m;return}n=ee(g)|0;k=l;c[k>>2]=n;c[k+4>>2]=C;k=l;n=c[j>>2]|0;h[n>>3]=+h[n>>3]+(+((c[k>>2]|0)>>>0)+4294967296.0*+(c[k+4>>2]|0));if(d[(c[j>>2]|0)+25>>0]|0|(d[(c[j>>2]|0)+24>>0]|0)){i=m;return}n=l;if(!(_H((c[j>>2]|0)+8|0,c[n>>2]|0,c[n+4>>2]|0)|0)){i=m;return}a[(c[j>>2]|0)+24>>0]=1;i=m;return}function zP(b){b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;c[e>>2]=xe(c[d>>2]|0,0)|0;if(!(c[e>>2]|0)){i=f;return}b=(c[e>>2]|0)+16|0;g=c[b+4>>2]|0;if(!((g|0)>0|(g|0)==0&(c[b>>2]|0)>>>0>0)){i=f;return}if(a[(c[e>>2]|0)+24>>0]|0){je(c[d>>2]|0,46986,-1);i=f;return}d=c[d>>2]|0;b=c[e>>2]|0;if(a[(c[e>>2]|0)+25>>0]|0){ie(d,+h[b>>3]);i=f;return}else{g=b+8|0;le(d,c[g>>2]|0,c[g+4>>2]|0);i=f;return}}function AP(a){a=a|0;var b=0,d=0,e=0,f=0.0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=xe(c[e>>2]|0,0)|0;a=c[e>>2]|0;if(!(c[b>>2]|0)){f=0.0;ie(a,f);i=d;return}f=+h[c[b>>2]>>3];ie(a,f);i=d;return}function BP(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=xe(c[b>>2]|0,0)|0;if(!(c[d>>2]|0)){i=e;return}a=(c[d>>2]|0)+16|0;f=c[a+4>>2]|0;if(!((f|0)>0|(f|0)==0&(c[a>>2]|0)>>>0>0)){i=e;return}f=(c[d>>2]|0)+16|0;ie(c[b>>2]|0,+h[c[d>>2]>>3]/(+((c[f>>2]|0)>>>0)+4294967296.0*+(c[f+4>>2]|0)));i=e;return}function CP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+16|0;j=g+12|0;h=g+8|0;e=g+4|0;f=g;c[j>>2]=a;c[h>>2]=b;c[e>>2]=d;c[f>>2]=xe(c[j>>2]|0,8)|0;if(!(c[h>>2]|0)){if(!(c[f>>2]|0)){i=g;return}}else{j=5!=(fe(c[c[e>>2]>>2]|0)|0);if(!(j&(c[f>>2]|0)!=0)){i=g;return}}j=c[f>>2]|0;h=j;h=gR(c[h>>2]|0,c[h+4>>2]|0,1,0)|0;c[j>>2]=h;c[j+4>>2]=C;i=g;return}function DP(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=xe(c[e>>2]|0,0)|0;a=c[e>>2]|0;if(!(c[b>>2]|0)){b=0;e=0;le(a,b,e);i=d;return}e=c[b>>2]|0;b=c[e>>2]|0;e=c[e+4>>2]|0;le(a,b,e);i=d;return}function EP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;e=p+36|0;f=p+32|0;g=p+28|0;o=p+24|0;m=p+20|0;n=p+16|0;l=p+12|0;k=p+8|0;h=p+4|0;j=p;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if((fe(c[c[g>>2]>>2]|0)|0)==5){i=p;return}c[m>>2]=xe(c[e>>2]|0,28)|0;if(!(c[m>>2]|0)){i=p;return}c[h>>2]=we(c[e>>2]|0)|0;c[j>>2]=(c[(c[m>>2]|0)+20>>2]|0)==0&1;c[(c[m>>2]|0)+20>>2]=c[(c[h>>2]|0)+88>>2];if(!(c[j>>2]|0)){if((c[f>>2]|0)==2){c[n>>2]=ae(c[(c[g>>2]|0)+4>>2]|0)|0;c[k>>2]=be(c[(c[g>>2]|0)+4>>2]|0)|0}else{c[n>>2]=38266;c[k>>2]=1}if(c[k>>2]|0)aA(c[m>>2]|0,c[n>>2]|0,c[k>>2]|0)}c[o>>2]=ae(c[c[g>>2]>>2]|0)|0;c[l>>2]=be(c[c[g>>2]>>2]|0)|0;if(!(c[o>>2]|0)){i=p;return}aA(c[m>>2]|0,c[o>>2]|0,c[l>>2]|0);i=p;return}function FP(a){a=a|0;var b=0,e=0,f=0;f=i;i=i+16|0;b=f+4|0;e=f;c[b>>2]=a;c[e>>2]=xe(c[b>>2]|0,0)|0;if(!(c[e>>2]|0)){i=f;return}if((d[(c[e>>2]|0)+24>>0]|0|0)==2){se(c[b>>2]|0);i=f;return}b=c[b>>2]|0;if((d[(c[e>>2]|0)+24>>0]|0|0)==1){te(b);i=f;return}else{ne(b,eg(c[e>>2]|0)|0,-1,148);i=f;return}}function GP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;h=i;i=i+32|0;e=h+16|0;f=h;g=h+12|0;k=h+8|0;c[e>>2]=a;j=f;c[j>>2]=b;c[j+4>>2]=d;c[k>>2]=we(c[e>>2]|0)|0;d=f;j=c[d+4>>2]|0;a=c[(c[k>>2]|0)+88>>2]|0;b=((a|0)<0)<<31>>31;if((j|0)>(b|0)|((j|0)==(b|0)?(c[d>>2]|0)>>>0>a>>>0:0)){se(c[e>>2]|0);c[g>>2]=0;k=c[g>>2]|0;i=h;return k|0}k=f;c[g>>2]=_f(c[k>>2]|0,c[k+4>>2]|0)|0;if(c[g>>2]|0){k=c[g>>2]|0;i=h;return k|0}te(c[e>>2]|0);k=c[g>>2]|0;i=h;return k|0}function HP(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=(c[(c[(c[e>>2]|0)+12>>2]|0)+4>>2]|0)+(((c[(c[e>>2]|0)+16>>2]|0)-1|0)*20|0);i=d;return c[(c[b>>2]|0)+16>>2]|0}function IP(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;a[(c[e>>2]|0)+24>>0]=1;i=d;return}function JP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;a=$t(c[e>>2]|0,c[f>>2]|0)|0;b=c[(c[e>>2]|0)+528>>2]|0;c[b>>2]=(c[b>>2]|0)+a;i=d;return}function KP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;if(!(c[g>>2]|0)){e=c[f>>2]|0;j=c[g>>2]|0;Sf(e,j);i=k;return}c[j>>2]=c[g>>2];while(1){if((c[j>>2]|0)>>>0>=((c[g>>2]|0)+((c[h>>2]|0)*20|0)|0)>>>0)break;if(a[(c[j>>2]|0)+1>>0]|0)qA(c[f>>2]|0,a[(c[j>>2]|0)+1>>0]|0,c[(c[j>>2]|0)+16>>2]|0);c[j>>2]=(c[j>>2]|0)+20}e=c[f>>2]|0;j=c[g>>2]|0;Sf(e,j);i=k;return}function LP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;d=k+20|0;e=k+16|0;g=k+12|0;h=k+8|0;f=k+4|0;j=k;c[d>>2]=a;c[e>>2]=b;c[g>>2]=c[(c[e>>2]|0)+16>>2];while(1){if(!(c[g>>2]|0))break;if(!((c[d>>2]|0)!=0?(c[(c[d>>2]|0)+528>>2]|0)!=0:0)){a=c[(c[g>>2]|0)+12>>2]|0;if(c[(c[g>>2]|0)+16>>2]|0)c[(c[(c[g>>2]|0)+16>>2]|0)+12>>2]=a;else{c[f>>2]=a;a=c[g>>2]|0;if(c[f>>2]|0)a=c[(c[a+12>>2]|0)+8>>2]|0;else a=c[a+8>>2]|0;c[j>>2]=a;Oj((c[(c[e>>2]|0)+64>>2]|0)+56|0,c[j>>2]|0,c[f>>2]|0)|0}if(c[(c[g>>2]|0)+12>>2]|0)c[(c[(c[g>>2]|0)+12>>2]|0)+16>>2]=c[(c[g>>2]|0)+16>>2]}LF(c[d>>2]|0,c[(c[g>>2]|0)+28>>2]|0);LF(c[d>>2]|0,c[(c[g>>2]|0)+28+4>>2]|0);c[h>>2]=c[(c[g>>2]|0)+4>>2];Sf(c[d>>2]|0,c[g>>2]|0);c[g>>2]=c[h>>2]}i=k;return}function MP(a){a=a|0;return((a|32)+-97|0)>>>0<26|0}function NP(a){a=a|0;return((a|0)==32|(a|0)==9)&1|0}function OP(a){a=a|0;return(a+-97|0)>>>0<26|0}function PP(a){a=a|0;return(a+-65|0)>>>0<26|0}function QP(a){a=a|0;var b=0;b=(PP(a)|0)==0;return(b?a:a|32)|0}function RP(a){a=a|0;var b=0;b=(OP(a)|0)==0;return(b?a:a&95)|0}function SP(){var a=0;if(!(c[2492]|0))a=10016;else a=c[(qb()|0)+60>>2]|0;return a|0}function TP(b){b=b|0;var c=0,e=0;c=0;while(1){if((d[47177+c>>0]|0)==(b|0)){e=2;break}c=c+1|0;if((c|0)==87){c=87;b=47265;e=5;break}}if((e|0)==2)if(!c)b=47265;else{b=47265;e=5}if((e|0)==5)while(1){e=b;while(1){b=e+1|0;if(!(a[e>>0]|0))break;else e=b}c=c+-1|0;if(!c)break;else e=5}return b|0}function UP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+192|0;j=s+152|0;h=s+136|0;r=s+120|0;q=s+104|0;p=s+96|0;m=s+80|0;l=s+64|0;f=s+48|0;n=s+32|0;g=s+16|0;e=s;t=s+176|0;k=s+168|0;c[t>>2]=d;d=(c[t>>2]|0)+(4-1)&~(4-1);o=c[d>>2]|0;c[t>>2]=d+4;o=(b|0)==4?o|32768:o;a:do switch(b|0){case 14:{c[e>>2]=a;c[e+4>>2]=14;c[e+8>>2]=o;d=XP(mb(221,e|0)|0)|0;break}case 9:{c[g>>2]=a;c[g+4>>2]=16;c[g+8>>2]=k;d=mb(221,g|0)|0;switch(d|0){case-22:{c[n>>2]=a;c[n+4>>2]=9;c[n+8>>2]=o;d=mb(221,n|0)|0;break a}case 0:{d=c[k+4>>2]|0;d=(c[k>>2]|0)==2?0-d|0:d;break a}default:{d=XP(d)|0;break a}}}case 1030:{c[f>>2]=a;c[f+4>>2]=1030;c[f+8>>2]=o;d=mb(221,f|0)|0;if((d|0)!=-22){if((d|0)>-1){c[l>>2]=d;c[l+4>>2]=2;c[l+8>>2]=1;mb(221,l|0)|0}d=XP(d)|0;break a}c[m>>2]=a;c[m+4>>2]=1030;c[m+8>>2]=0;d=mb(221,m|0)|0;if((d|0)==-22){c[q>>2]=a;c[q+4>>2]=0;c[q+8>>2]=o;d=mb(221,q|0)|0;if((d|0)>-1){c[r>>2]=d;c[r+4>>2]=2;c[r+8>>2]=1;mb(221,r|0)|0}d=XP(d)|0;break a}else{if((d|0)>-1){c[p>>2]=d;Cb(6,p|0)|0}d=XP(-22)|0;break a}}default:if((b+-12|0)>>>0<5){c[h>>2]=a;c[h+4>>2]=b;c[h+8>>2]=o;d=XP(mb(221,h|0)|0)|0;break a}else{c[j>>2]=a;c[j+4>>2]=b;c[j+8>>2]=o;d=XP(mb(221,j|0)|0)|0;break a}}while(0);i=s;return d|0}function VP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+32|0;f=e;g=e+16|0;c[g>>2]=d;h=(c[g>>2]|0)+(4-1)&~(4-1);d=c[h>>2]|0;c[g>>2]=h+4;c[f>>2]=a;c[f+4>>2]=b|32768;c[f+8>>2]=d;d=XP(Db(5,f|0)|0)|0;i=e;return d|0}function WP(b,c){b=b|0;c=c|0;var d=0,e=0;d=0;while(1){a[b+d>>0]=a[49069+d>>0]|0;if((d|0)==14)break;else d=d+1|0}if(!c){a[b+14>>0]=48;a[b+15>>0]=0}else{d=14;e=c;while(1){d=d+1|0;if(e>>>0<10)break;else e=(e>>>0)/10|0}a[b+d>>0]=0;while(1){d=d+-1|0;a[b+d>>0]=(c>>>0)%10|0|48;if(c>>>0<10)break;else c=(c>>>0)/10|0}}return}function XP(a){a=a|0;if(a>>>0>4294963200){c[(SP()|0)>>2]=0-a;a=-1}return a|0}function YP(a){a=+a;return+(+X(+(a+-1416.0996898839683))*2247116418577894884661631.0e283*2247116418577894884661631.0e283)}function ZP(a){a=+a;var b=0;h[k>>3]=a;b=hR(c[k>>2]|0,c[k+4>>2]|0,52)|0;b=b&2047;do if(b>>>0>=1024)if(b>>>0<1049){a=+Y(+(a*2.0-1.0/(+O(+(a*a+-1.0))+a)));break}else{a=+Y(+a)+.6931471805599453;break}else{a=a+-1.0;a=+dQ(a+ +O(+(a*a+a*2.0)))}while(0);return+a}function _P(a){a=+a;var b=0,d=0,e=0,f=0.0;h[k>>3]=a;e=c[k>>2]|0;d=c[k+4>>2]|0;b=hR(e|0,d|0,52)|0;b=b&2047;c[k>>2]=e;c[k+4>>2]=d&2147483647;a=+h[k>>3];do if(b>>>0<=1048){if(b>>>0>1023){a=+Y(+(a*2.0+1.0/(a+ +O(+(a*a+1.0)))));break}if(b>>>0>996){f=a*a;a=+dQ(a+f/(+O(+(f+1.0))+1.0))}}else a=+Y(+a)+.6931471805599453;while(0);return+((d|0)<0?-a:a)}function $P(a){a=+a;var b=0,d=0,e=0,f=0.0;h[k>>3]=a;e=c[k>>2]|0;d=c[k+4>>2]|0;b=hR(e|0,d|0,52)|0;b=b&2047;c[k>>2]=e;c[k+4>>2]=d&2147483647;a=+h[k>>3];if(b>>>0<1022){if(b>>>0>=991){f=a*2.0;a=+dQ(f+a*f/(1.0-a))*.5}}else a=+dQ(a/(1.0-a)*2.0)*.5;return+((d|0)<0?-a:a)}function aQ(a){a=+a;var b=0;h[k>>3]=a;b=c[k+4>>2]&2147483647;c[k>>2]=c[k>>2];c[k+4>>2]=b;a=+h[k>>3];do if(b>>>0<1072049730)if(b>>>0<1045430272)a=1.0;else{a=+bQ(a);a=a*a/((a+1.0)*2.0)+1.0}else if(b>>>0<1082535490){a=+X(+a);a=(a+1.0/a)*.5;break}else{a=+YP(a);break}while(0);return+a}function bQ(a){a=+a;var b=0.0,d=0.0,e=0,f=0,g=0,i=0,j=0.0,l=0,m=0.0;h[k>>3]=a;e=c[k>>2]|0;f=c[k+4>>2]|0;g=f&2147483647;i=hR(e|0,f|0,63)|0;do if(g>>>0>1078159481){g=f&2147483647;if(!(g>>>0>2146435072|(g|0)==2146435072&e>>>0>0))if(!i)if(a>709.782712893384)a=a*8988465674311579538646525.0e283;else l=11;else a=-1.0}else{if(g>>>0<=1071001154)if(g>>>0<1016070144)break;else{j=0.0;g=0;l=14;break}if(g>>>0<1072734898)if(!i){b=a+-.6931471803691238;e=1;d=1.9082149292705877e-10;l=12;break}else{b=a+.6931471803691238;e=-1;d=-1.9082149292705877e-10;l=12;break}else l=11}while(0);if((l|0)==11){e=~~(a*1.4426950408889634+((i|0)!=0?-.5:.5));d=+(e|0);b=a-d*.6931471803691238;d=d*1.9082149292705877e-10;l=12}if((l|0)==12){j=b-d;a=j;j=b-j-d;g=e;l=14}a:do if((l|0)==14){d=a*.5;b=a*d;m=b*(b*(b*(b*(4.008217827329362e-06-b*2.0109921818362437e-07)+-7.93650757867488e-05)+1.5873015872548146e-03)+-.03333333333333313)+1.0;d=3.0-d*m;d=b*((m-d)/(6.0-a*d));if(!g){a=a-(a*d-b);break}b=a*(d-j)-j-b;switch(g|0){case-1:{a=(a-b)*.5+-.5;break a}case 1:if(a<-.25){a=(b-(a+.5))*-2.0;break a}else{a=(a-b)*2.0+1.0;break a}default:{i=lR(g+1023|0,0,52)|0;l=C;c[k>>2]=i;c[k+4>>2]=l;d=+h[k>>3];if(g>>>0>56){a=a-b+1.0;a=((g|0)==1024?a*2.0*8988465674311579538646525.0e283:d*a)+-1.0;break a}e=lR(1023-g|0,0,52)|0;f=C;if((g|0)<20){c[k>>2]=e;c[k+4>>2]=f;a=1.0-+h[k>>3]+(a-b)}else{c[k>>2]=e;c[k+4>>2]=f;a=a-(+h[k>>3]+b)+1.0}a=d*a;break a}}}while(0);return+a}function cQ(a){a=+a;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,j=0.0,l=0.0,m=0.0;h[k>>3]=a;d=c[k>>2]|0;b=c[k+4>>2]|0;e=(b|0)<0;do if(e|b>>>0<1048576){if((d|0)==0&(b&2147483647|0)==0){a=-1.0/(a*a);break}if(e){a=(a-a)/0.0;break}else{h[k>>3]=a*18014398509481984.0;b=c[k+4>>2]|0;e=c[k>>2]|0;d=-1077;f=9;break}}else if(b>>>0<=2146435071)if((d|0)==0&0==0&(b|0)==1072693248)a=0.0;else{e=d;d=-1023;f=9}while(0);if((f|0)==9){f=b+614242|0;c[k>>2]=e;c[k+4>>2]=(f&1048575)+1072079006;m=+h[k>>3]+-1.0;a=m*(m*.5);j=m/(m+2.0);l=j*j;i=l*l;h[k>>3]=m-a;e=c[k+4>>2]|0;c[k>>2]=0;c[k+4>>2]=e;g=+h[k>>3];a=j*(a+(i*(i*(i*.15313837699209373+.22222198432149784)+.3999999999940942)+l*(i*(i*(i*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)))+(m-g-a);m=g*.4342944818781689;i=+(d+(f>>>20)|0);l=i*.30102999566361177;j=l+m;a=j+(m+(l-j)+(a*.4342944818781689+(i*3.694239077158931e-13+(g+a)*2.5082946711645275e-11)))}return+a}function dQ(a){a=+a;var b=0,d=0.0,e=0.0,f=0,g=0,i=0.0,j=0.0,l=0.0,m=0.0;h[k>>3]=a;b=c[k+4>>2]|0;do if((b|0)<0|b>>>0<1071284858)if(b>>>0<=3220176895){g=lR(b|0,0,1)|0;if(g>>>0<2034237440)break;if(b>>>0<3218259653){e=0.0;d=0.0;f=11;break}else{f=8;break}}else{if(a==-1.0){a=-s;break}a=(a-a)/0.0;break}else if(b>>>0<=2146435071)f=8;while(0);if((f|0)==8){d=a+1.0;h[k>>3]=d;b=(c[k+4>>2]|0)+614242|0;f=(b>>>20)+-1023|0;if((f|0)<54)a=((f|0)>1?1.0-(d-a):a-(d+-1.0))/d;else a=0.0;c[k>>2]=c[k>>2];c[k+4>>2]=(b&1048575)+1072079006;e=a;a=+h[k>>3]+-1.0;d=+(f|0);f=11}if((f|0)==11){i=a*(a*.5);m=a/(a+2.0);l=m*m;j=l*l;a=d*.6931471803691238+(a+(e+d*1.9082149292705877e-10+m*(i+(j*(j*(j*.15313837699209373+.22222198432149784)+.3999999999940942)+l*(j*(j*(j*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)))-i))}return+a}function eQ(a){a=+a;var b=0.0,d=0.0,e=0;h[k>>3]=a;e=c[k+4>>2]|0;d=(e|0)<0?-.5:.5;e=e&2147483647;c[k>>2]=c[k>>2];c[k+4>>2]=e;b=+h[k>>3];do if(e>>>0<1082535490){b=+bQ(b);if(e>>>0>=1072693248){a=d*(b+b/(b+1.0));break}if(e>>>0>=1045430272)a=d*(b*2.0-b*b/(b+1.0))}else a=d*2.0*+YP(b);while(0);return+a}function fQ(a){a=+a;var b=0,d=0;h[k>>3]=a;d=c[k+4>>2]|0;b=d&2147483647;c[k>>2]=c[k>>2];c[k+4>>2]=b;a=+h[k>>3];do if(b>>>0>1071748074)if(b>>>0>1077149696){a=1.0-0.0/a;break}else{a=1.0-2.0/(+bQ(a*2.0)+2.0);break}else{if(b>>>0>1070618798){a=+bQ(a*2.0);a=a/(a+2.0);break}if(b>>>0>1048575){a=+bQ(a*-2.0);a=-a/(a+2.0)}}while(0);return+((d|0)<0?-a:a)}function gQ(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,j=0,k=0;k=i;i=i+32|0;h=k;do if((g&4095|0)==0&(((g|0)<0)<<31>>31&-4096|0)==0){if(b>>>0>2147483646){c[(SP()|0)>>2]=12;f=-1;break}j=(e&16|0)!=0;if(j)XQ(-1);c[h>>2]=a;c[h+4>>2]=b;c[h+8>>2]=d;c[h+12>>2]=e;c[h+16>>2]=f;c[h+20>>2]=g>>12;f=XP(cb(192,h|0)|0)|0;if(j)YQ()}else{c[(SP()|0)>>2]=22;f=-1}while(0);i=k;return f|0}function hQ(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;XQ(-1);c[e>>2]=a;c[e+4>>2]=b;a=XP(Xa(91,e|0)|0)|0;YQ();i=d;return a|0}function iQ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+64|0;g=h+16|0;f=h+8|0;d=h;e=h+24|0;c[d>>2]=a;c[d+4>>2]=b;d=jb(94,d|0)|0;if((d|0)==-9?(c[f>>2]=a,c[f+4>>2]=1,(mb(221,f|0)|0)>=0):0){WP(e,a);c[g>>2]=e;c[g+4>>2]=b;d=XP(wb(15,g|0)|0)|0}else d=XP(d)|0;i=h;return d|0}function jQ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+64|0;g=h+16|0;f=h+8|0;d=h;e=h+24|0;c[d>>2]=a;c[d+4>>2]=b;d=db(197,d|0)|0;if((d|0)==-9?(c[f>>2]=a,c[f+4>>2]=1,(mb(221,f|0)|0)>=0):0){WP(e,a);c[g>>2]=e;c[g+4>>2]=b;d=XP(fb(195,g|0)|0)|0}else d=XP(d)|0;i=h;return d|0}function kQ(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;a=XP(eb(196,e|0)|0)|0;i=d;return a|0}function lQ(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;a=XP(Za(39,e|0)|0)|0;i=d;return a|0}function mQ(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;a=XP(fb(195,e|0)|0)|0;i=d;return a|0}function nQ(a){a=a|0;return 0}function oQ(a){a=a|0;return}function pQ(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=c[a+60>>2];a=XP(Cb(6,d|0)|0)|0;i=b;return a|0}function qQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=i;i=i+32|0;g=f;e=f+20|0;c[g>>2]=c[a+60>>2];c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;if((XP(vb(140,g|0)|0)|0)<0){c[e>>2]=-1;a=-1}else a=c[e>>2]|0;i=f;return a|0}function rQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;n=q+16|0;m=q;e=q+32|0;o=a+28|0;f=c[o>>2]|0;c[e>>2]=f;p=a+20|0;f=(c[p>>2]|0)-f|0;c[e+4>>2]=f;c[e+8>>2]=b;c[e+12>>2]=d;k=a+60|0;l=a+44|0;b=2;f=f+d|0;while(1){if(!(c[2492]|0)){c[n>>2]=c[k>>2];c[n+4>>2]=e;c[n+8>>2]=b;h=XP(Mb(146,n|0)|0)|0}else{La(154,a|0);c[m>>2]=c[k>>2];c[m+4>>2]=e;c[m+8>>2]=b;h=XP(Mb(146,m|0)|0)|0;Da(0)}if((f|0)==(h|0)){f=6;break}if((h|0)<0){f=8;break}f=f-h|0;g=c[e+4>>2]|0;if(h>>>0<=g>>>0)if((b|0)==2){c[o>>2]=(c[o>>2]|0)+h;j=g;b=2}else j=g;else{j=c[l>>2]|0;c[o>>2]=j;c[p>>2]=j;j=c[e+12>>2]|0;h=h-g|0;e=e+8|0;b=b+-1|0}c[e>>2]=(c[e>>2]|0)+h;c[e+4>>2]=j-h}if((f|0)==6){n=c[l>>2]|0;c[a+16>>2]=n+(c[a+48>>2]|0);a=n;c[o>>2]=a;c[p>>2]=a}else if((f|0)==8){c[a+16>>2]=0;c[o>>2]=0;c[p>>2]=0;c[a>>2]=c[a>>2]|32;if((b|0)==2)d=0;else d=d-(c[e+4>>2]|0)|0}i=q;return d|0}function sQ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+80|0;f=g;c[b+36>>2]=163;if((c[b>>2]&64|0)==0?(c[f>>2]=c[b+60>>2],c[f+4>>2]=21505,c[f+8>>2]=g+12,(Ka(54,f|0)|0)!=0):0)a[b+75>>0]=-1;f=rQ(b,d,e)|0;i=g;return f|0}function tQ(a){a=a|0;var b=0,d=0;do if(a){if((c[a+76>>2]|0)<=-1){b=UQ(a)|0;break}d=(nQ(a)|0)==0;b=UQ(a)|0;if(!d)oQ(a)}else{if(!(c[2503]|0))b=0;else b=tQ(c[2503]|0)|0;Bb(9996);a=c[2498]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=nQ(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=UQ(a)|0|b;if(d)oQ(a);a=c[a+56>>2]|0}while((a|0)!=0);ub(9996)}while(0);return b|0}function uQ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+208|0;o=r+8|0;p=r;f=_(d,b)|0;n=p;c[n>>2]=1;c[n+4>>2]=0;if(f){j=f-d|0;c[o+4>>2]=d;c[o>>2]=d;g=d;b=d;h=2;while(1){b=b+d+g|0;c[o+(h<<2)>>2]=b;if(b>>>0>>0){n=g;g=b;h=h+1|0;b=n}else break}n=0-d|0;k=a+j|0;m=p+4|0;if((j|0)>0){j=k;f=1;h=1;while(1){do if((f&3|0)==3){VQ(a,d,e,h,o);l=c[m>>2]|0;b=l<<30|(c[p>>2]|0)>>>2;c[p>>2]=b;c[m>>2]=l>>>2;h=h+2|0}else{b=h+-1|0;if((c[o+(b<<2)>>2]|0)>>>0<(j-a|0)>>>0)VQ(a,d,e,h,o);else WQ(a,d,e,p,h,0,o);if((h|0)==1){b=c[p>>2]|0;c[m>>2]=b>>>31|c[m>>2]<<1;b=b<<1;c[p>>2]=b;h=0;break}if(b>>>0>31){f=c[p>>2]|0;c[m>>2]=f;c[p>>2]=0;b=h+-33|0;g=0}else{f=c[m>>2]|0;g=c[p>>2]|0}c[m>>2]=g>>>(32-b|0)|f<>2]=b;h=1}while(0);f=b|1;c[p>>2]=f;b=a+d|0;if(b>>>0>=k>>>0){f=b;break}else a=b}}else{f=a;h=1}WQ(f,d,e,p,h,0,o);l=p+4|0;b=c[p>>2]|0;if(!((h|0)==1&(b|0)==1&(c[l>>2]|0)==0)){g=f;while(1){if((h|0)<2){f=b+-1|0;do if(f){if(!(f&1)){j=f;f=0;do{f=f+1|0;j=j>>>1}while((j&1|0)==0);if(!f)q=24}else q=24;if((q|0)==24){q=0;k=c[m>>2]|0;if(!k){f=64;q=30;break}if(!(k&1)){j=k;f=0}else{a=0;j=k;f=0;break}while(1){a=f+1|0;j=j>>>1;if(j&1){j=a;break}else f=a}if(!j){a=0;j=k;f=0;break}else f=f+33|0}if(f>>>0>31)q=30;else{a=f;j=c[m>>2]|0}}else{f=32;q=30}while(0);if((q|0)==30){q=0;b=c[m>>2]|0;c[p>>2]=b;c[m>>2]=0;a=f+-32|0;j=0}c[p>>2]=j<<32-a|b>>>a;c[m>>2]=j>>>a;g=g+n|0;f=f+h|0}else{a=b>>>30;k=a|c[m>>2]<<2;f=h+-2|0;c[p>>2]=(b<<1&2147483646|a<<31)^3;c[m>>2]=k>>>1;WQ(g+(0-((c[o+(f<<2)>>2]|0)+d))|0,d,e,p,h+-1|0,1,o);k=c[p>>2]|0;c[m>>2]=k>>>31|c[m>>2]<<1;c[p>>2]=k<<1|1;g=g+n|0;WQ(g,d,e,p,f,1,o)}b=c[p>>2]|0;if((f|0)==1&(b|0)==1&(c[l>>2]|0)==0)break;else h=f}}}i=r;return}function vQ(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)d=0;else{f=d;e=b;while(1){b=a[e>>0]|0;d=a[c>>0]|0;if(b<<24>>24!=d<<24>>24)break;f=f+-1|0;if(!f){d=0;break a}else{e=e+1|0;c=c+1|0}}d=(b&255)-(d&255)|0}while(0);return d|0}function wQ(b,d){b=b|0;d=d|0;var e=0,f=0;e=d;a:do if(!((e^b)&3)){if(e&3)do{e=a[d>>0]|0;a[b>>0]=e;if(!(e<<24>>24))break a;d=d+1|0;b=b+1|0}while((d&3|0)!=0);e=c[d>>2]|0;if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){d=d+4|0;b=f+4|0;c[f>>2]=e;e=c[d>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009)break;else f=b}}f=8}else f=8;while(0);if((f|0)==8){f=a[d>>0]|0;a[b>>0]=f;if(f<<24>>24)do{d=d+1|0;b=b+1|0;f=a[d>>0]|0;a[b>>0]=f}while(f<<24>>24!=0)}return b|0}function xQ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d;do if(!((g^b)&3)){f=(e|0)!=0;a:do if(f&(g&3|0)!=0)while(1){g=a[d>>0]|0;a[b>>0]=g;if(!(g<<24>>24))break a;e=e+-1|0;d=d+1|0;b=b+1|0;f=(e|0)!=0;if(!(f&(d&3|0)!=0)){h=5;break}}else h=5;while(0);if((h|0)==5)if(!f){e=0;break}if(a[d>>0]|0){b:do if(e>>>0>3)do{f=c[d>>2]|0;if((f&-2139062144^-2139062144)&f+-16843009)break b;c[b>>2]=f;e=e+-4|0;d=d+4|0;b=b+4|0}while(e>>>0>3);while(0);h=11}}else h=11;while(0);c:do if((h|0)==11)if(!e)e=0;else while(1){h=a[d>>0]|0;a[b>>0]=h;if(!(h<<24>>24))break c;e=e+-1|0;b=b+1|0;if(!e){e=0;break}else d=d+1|0}while(0);kR(b|0,0,e|0)|0;return b|0}function yQ(b,c){b=b|0;c=c|0;var d=0,e=0;e=a[b>>0]|0;d=a[c>>0]|0;if(e<<24>>24==0?1:e<<24>>24!=d<<24>>24)c=e;else{do{b=b+1|0;c=c+1|0;e=a[b>>0]|0;d=a[c>>0]|0}while(!(e<<24>>24==0?1:e<<24>>24!=d<<24>>24));c=e}return(c&255)-(d&255)|0}function zQ(a,b){a=a|0;b=b|0;wQ(a,b)|0;return a|0}function AQ(a){a=a|0;var b=0,c=0;c=(BQ(a)|0)+1|0;b=_Q(c)|0;if(!b)b=0;else iR(b|0,a|0,c|0)|0;return b|0}function BQ(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=4;else{d=b;b=f;while(1){if(!(a[d>>0]|0))break a;d=d+1|0;b=d;if(!(b&3)){b=d;e=4;break}}}while(0);if((e|0)==4){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do b=b+1|0;while((a[b>>0]|0)!=0)}return b-f|0}function CQ(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0;if(!e)c=0;else{f=a[b>>0]|0;a:do if(!(f<<24>>24))f=0;else while(1){e=e+-1|0;g=a[c>>0]|0;if(!(f<<24>>24==g<<24>>24&((e|0)!=0&g<<24>>24!=0)))break a;b=b+1|0;c=c+1|0;f=a[b>>0]|0;if(!(f<<24>>24)){f=0;break}}while(0);c=(f&255)-(d[c>>0]|0)|0}return c|0}function DQ(a,b,c){a=a|0;b=b|0;c=c|0;xQ(a,b,c)|0;return a|0}function EQ(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;a=XP(sb(33,e|0)|0)|0;i=d;return a|0}function FQ(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Cb(6,d|0)|0;a=XP((a|0)==-4?-115:a)|0;i=b;return a|0}function GQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+64|0;h=j+24|0;g=j+16|0;e=j;f=j+36|0;c[e>>2]=a;c[e+4>>2]=b;c[e+8>>2]=d;e=Lb(207,e|0)|0;if((e|0)==-9?(c[g>>2]=a,c[g+4>>2]=1,(mb(221,g|0)|0)>=0):0){WP(f,a);c[h>>2]=f;c[h+4>>2]=b;c[h+8>>2]=d;e=XP(hb(212,h|0)|0)|0}else e=XP(e)|0;i=j;return e|0}function HQ(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=XP(Oa(118,d|0)|0)|0;i=b;return a|0}function IQ(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;c[e+4>>2]=0;c[e+8>>2]=b;c[e+12>>2]=((b|0)<0)<<31>>31;b=XP(gb(194,e|0)|0)|0;i=d;return b|0}function JQ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+4112|0;e=g;d=g+8|0;if(a)if(!b){c[(SP()|0)>>2]=22;a=0}else f=4;else{b=4096;a=d;f=4}if((f|0)==4){c[e>>2]=a;c[e+4>>2]=b;if((XP(Ra(183,e|0)|0)|0)>=0){if((a|0)==(d|0))a=AQ(d)|0}else a=0}i=g;return a|0}function KQ(){var a=0,b=0;b=i;i=i+16|0;a=pb(201,b|0)|0;i=b;return a|0}function LQ(){var a=0,b=0;b=i;i=i+16|0;a=Qa(20,b|0)|0;i=b;return a|0}function MQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=i;i=i+32|0;g=f;e=f+20|0;c[g>>2]=a;c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;d=(XP(vb(140,g|0)|0)|0)!=0;i=f;return(d?-1:c[e>>2]|0)|0}function NQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=a;c[f+4>>2]=b;c[f+8>>2]=d;a=XP(Ab(3,f|0)|0)|0;i=e;return a|0}function OQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=a;c[f+4>>2]=b;c[f+8>>2]=d;a=XP(Ea(85,f|0)|0)|0;i=e;return a|0}function PQ(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=XP(Na(40,d|0)|0)|0;i=b;return a|0}function QQ(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;c[b+4>>2]=0;a=(kb(b|0,b|0)|0)==0;i=d;return(a?0:c[b>>2]|0)|0}function RQ(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=XP(yb(10,d|0)|0)|0;i=b;return a|0}function SQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=a;c[f+4>>2]=b;c[f+8>>2]=d;a=XP(Eb(4,f|0)|0)|0;i=e;return a|0}function TQ(a){a=a|0;if(!(c[a+68>>2]|0))oQ(a);return}function UQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;g=a+28|0;if((c[b>>2]|0)>>>0>(c[g>>2]|0)>>>0?(Ob[c[a+36>>2]&255](a,0,0)|0,(c[b>>2]|0)==0):0)b=-1;else{h=a+4|0;d=c[h>>2]|0;e=a+8|0;f=c[e>>2]|0;if(d>>>0>>0)Ob[c[a+40>>2]&255](a,d-f|0,1)|0;c[a+16>>2]=0;c[g>>2]=0;c[b>>2]=0;c[e>>2]=0;c[h>>2]=0;b=0}return b|0}function VQ(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+240|0;o=p;c[o>>2]=a;a:do if((e|0)>1){n=0-b|0;g=e;h=a;k=a;l=1;while(1){a=h+n|0;m=g+-2|0;j=h+(0-((c[f+(m<<2)>>2]|0)+b))|0;if((Yb[d&255](k,j)|0)>-1?(Yb[d&255](k,a)|0)>-1:0){e=l;break a}e=l+1|0;h=o+(l<<2)|0;if((Yb[d&255](j,a)|0)>-1){c[h>>2]=j;a=j;g=g+-1|0}else{c[h>>2]=a;g=m}if((g|0)<=1)break a;h=a;k=c[o>>2]|0;l=e}}else e=1;while(0);ZQ(b,o,e);i=p;return}function WQ(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 j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+240|0;p=r;k=c[e>>2]|0;e=c[e+4>>2]|0;c[p>>2]=a;o=0-b|0;a:do if((e|0)!=0|(k|0)!=1?(j=a+(0-(c[h+(f<<2)>>2]|0))|0,(Yb[d&255](j,a)|0)>=1):0){g=(g|0)==0;n=j;l=k;m=e;j=1;while(1){if(g&(f|0)>1){e=c[h+(f+-2<<2)>>2]|0;if((Yb[d&255](a+o|0,n)|0)>-1){g=f;e=j;q=20;break a}if((Yb[d&255](a+(0-(e+b))|0,n)|0)>-1){g=f;e=j;q=20;break a}}e=j+1|0;c[p+(j<<2)>>2]=n;g=l+-1|0;do if(g){if(!(g&1)){a=g;g=0;do{g=g+1|0;a=a>>>1}while((a&1|0)==0);if(!g)q=11}else q=11;if((q|0)==11){q=0;if(!m){g=64;q=16;break}if(!(m&1)){a=m;g=0}else{k=0;a=l;j=m;g=0;break}while(1){j=g+1|0;a=a>>>1;if(a&1){a=j;break}else g=j}if(!a){k=0;a=l;j=m;g=0;break}else g=g+33|0}if(g>>>0>31)q=16;else{k=g;a=l;j=m}}else{g=32;q=16}while(0);if((q|0)==16){q=0;k=g+-32|0;a=m;j=0}l=j<<32-k|a>>>k;m=j>>>k;g=g+f|0;if(!((m|0)!=0|(l|0)!=1)){a=n;q=20;break a}a=n+(0-(c[h+(g<<2)>>2]|0))|0;if((Yb[d&255](a,c[p>>2]|0)|0)<1){a=n;f=g;g=0;q=19;break}else{k=n;f=g;g=1;n=a;j=e;a=k}}}else{e=1;q=19}while(0);if((q|0)==19?(g|0)==0:0){g=f;q=20}if((q|0)==20){ZQ(b,p,e);VQ(a,b,d,g,h)}i=r;return}function XQ(a){a=a|0;return}function YQ(){return}function ZQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+256|0;e=h;a:do if((d|0)>=2?(g=b+(d<<2)|0,c[g>>2]=e,(a|0)!=0):0)while(1){f=a>>>0>256?256:a;iR(e|0,c[b>>2]|0,f|0)|0;e=0;do{j=b+(e<<2)|0;e=e+1|0;iR(c[j>>2]|0,c[b+(e<<2)>>2]|0,f|0)|0;c[j>>2]=(c[j>>2]|0)+f}while((e|0)!=(d|0));if((a|0)==(f|0))break a;a=a-f|0;e=c[g>>2]|0}while(0);i=h;return}function _Q(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,J=0,K=0,L=0,M=0;do if(a>>>0<245){o=a>>>0<11?16:a+11&-8;a=o>>>3;i=c[2533]|0;d=i>>>a;if(d&3){a=(d&1^1)+a|0;e=a<<1;d=10172+(e<<2)|0;e=10172+(e+2<<2)|0;f=c[e>>2]|0;g=f+8|0;h=c[g>>2]|0;do if((d|0)!=(h|0)){if(h>>>0<(c[2537]|0)>>>0)Ma();b=h+12|0;if((c[b>>2]|0)==(f|0)){c[b>>2]=d;c[e>>2]=h;break}else Ma()}else c[2533]=i&~(1<>2]=M|3;M=f+(M|4)|0;c[M>>2]=c[M>>2]|1;M=g;return M|0}h=c[2535]|0;if(o>>>0>h>>>0){if(d){e=2<>>12&16;e=e>>>j;f=e>>>5&8;e=e>>>f;g=e>>>2&4;e=e>>>g;d=e>>>1&2;e=e>>>d;a=e>>>1&1;a=(f|j|g|d|a)+(e>>>a)|0;e=a<<1;d=10172+(e<<2)|0;e=10172+(e+2<<2)|0;g=c[e>>2]|0;j=g+8|0;f=c[j>>2]|0;do if((d|0)!=(f|0)){if(f>>>0<(c[2537]|0)>>>0)Ma();b=f+12|0;if((c[b>>2]|0)==(g|0)){c[b>>2]=d;c[e>>2]=f;k=c[2535]|0;break}else Ma()}else{c[2533]=i&~(1<>2]=o|3;i=g+o|0;c[g+(o|4)>>2]=h|1;c[g+M>>2]=h;if(k){f=c[2538]|0;d=k>>>3;b=d<<1;e=10172+(b<<2)|0;a=c[2533]|0;d=1<>2]|0;if(b>>>0<(c[2537]|0)>>>0)Ma();else{l=a;m=b}}else{c[2533]=a|d;l=10172+(b+2<<2)|0;m=e}c[l>>2]=f;c[m+12>>2]=f;c[f+8>>2]=m;c[f+12>>2]=e}c[2535]=h;c[2538]=i;M=j;return M|0}a=c[2534]|0;if(a){d=(a&0-a)+-1|0;L=d>>>12&16;d=d>>>L;K=d>>>5&8;d=d>>>K;M=d>>>2&4;d=d>>>M;a=d>>>1&2;d=d>>>a;e=d>>>1&1;e=c[10436+((K|L|M|a|e)+(d>>>e)<<2)>>2]|0;d=(c[e+4>>2]&-8)-o|0;a=e;while(1){b=c[a+16>>2]|0;if(!b){b=c[a+20>>2]|0;if(!b){j=d;break}}a=(c[b+4>>2]&-8)-o|0;M=a>>>0>>0;d=M?a:d;a=b;e=M?b:e}g=c[2537]|0;if(e>>>0>>0)Ma();i=e+o|0;if(e>>>0>=i>>>0)Ma();h=c[e+24>>2]|0;d=c[e+12>>2]|0;do if((d|0)==(e|0)){a=e+20|0;b=c[a>>2]|0;if(!b){a=e+16|0;b=c[a>>2]|0;if(!b){n=0;break}}while(1){d=b+20|0;f=c[d>>2]|0;if(f){b=f;a=d;continue}d=b+16|0;f=c[d>>2]|0;if(!f)break;else{b=f;a=d}}if(a>>>0>>0)Ma();else{c[a>>2]=0;n=b;break}}else{f=c[e+8>>2]|0;if(f>>>0>>0)Ma();b=f+12|0;if((c[b>>2]|0)!=(e|0))Ma();a=d+8|0;if((c[a>>2]|0)==(e|0)){c[b>>2]=d;c[a>>2]=f;n=d;break}else Ma()}while(0);do if(h){b=c[e+28>>2]|0;a=10436+(b<<2)|0;if((e|0)==(c[a>>2]|0)){c[a>>2]=n;if(!n){c[2534]=c[2534]&~(1<>>0<(c[2537]|0)>>>0)Ma();b=h+16|0;if((c[b>>2]|0)==(e|0))c[b>>2]=n;else c[h+20>>2]=n;if(!n)break}a=c[2537]|0;if(n>>>0>>0)Ma();c[n+24>>2]=h;b=c[e+16>>2]|0;do if(b)if(b>>>0>>0)Ma();else{c[n+16>>2]=b;c[b+24>>2]=n;break}while(0);b=c[e+20>>2]|0;if(b)if(b>>>0<(c[2537]|0)>>>0)Ma();else{c[n+20>>2]=b;c[b+24>>2]=n;break}}while(0);if(j>>>0<16){M=j+o|0;c[e+4>>2]=M|3;M=e+(M+4)|0;c[M>>2]=c[M>>2]|1}else{c[e+4>>2]=o|3;c[e+(o|4)>>2]=j|1;c[e+(j+o)>>2]=j;b=c[2535]|0;if(b){g=c[2538]|0;d=b>>>3;b=d<<1;f=10172+(b<<2)|0;a=c[2533]|0;d=1<>2]|0;if(a>>>0<(c[2537]|0)>>>0)Ma();else{p=b;q=a}}else{c[2533]=a|d;p=10172+(b+2<<2)|0;q=f}c[p>>2]=g;c[q+12>>2]=g;c[g+8>>2]=q;c[g+12>>2]=f}c[2535]=j;c[2538]=i}M=e+8|0;return M|0}else q=o}else q=o}else if(a>>>0<=4294967231){a=a+11|0;m=a&-8;l=c[2534]|0;if(l){d=0-m|0;a=a>>>8;if(a)if(m>>>0>16777215)k=31;else{q=(a+1048320|0)>>>16&8;v=a<>>16&4;v=v<>>16&2;k=14-(p|q|k)+(v<>>15)|0;k=m>>>(k+7|0)&1|k<<1}else k=0;a=c[10436+(k<<2)>>2]|0;a:do if(!a){f=0;a=0;v=86}else{h=d;f=0;i=m<<((k|0)==31?0:25-(k>>>1)|0);j=a;a=0;while(1){g=c[j+4>>2]&-8;d=g-m|0;if(d>>>0>>0)if((g|0)==(m|0)){g=j;a=j;v=90;break a}else a=j;else d=h;v=c[j+20>>2]|0;j=c[j+16+(i>>>31<<2)>>2]|0;f=(v|0)==0|(v|0)==(j|0)?f:v; -if(!j){v=86;break}else{h=d;i=i<<1}}}while(0);if((v|0)==86){if((f|0)==0&(a|0)==0){a=2<>>12&16;a=a>>>n;l=a>>>5&8;a=a>>>l;p=a>>>2&4;a=a>>>p;q=a>>>1&2;a=a>>>q;f=a>>>1&1;f=c[10436+((l|n|p|q|f)+(a>>>f)<<2)>>2]|0;a=0}if(!f){i=d;j=a}else{g=f;v=90}}if((v|0)==90)while(1){v=0;q=(c[g+4>>2]&-8)-m|0;f=q>>>0>>0;d=f?q:d;a=f?g:a;f=c[g+16>>2]|0;if(f){g=f;v=90;continue}g=c[g+20>>2]|0;if(!g){i=d;j=a;break}else v=90}if((j|0)!=0?i>>>0<((c[2535]|0)-m|0)>>>0:0){f=c[2537]|0;if(j>>>0>>0)Ma();h=j+m|0;if(j>>>0>=h>>>0)Ma();g=c[j+24>>2]|0;d=c[j+12>>2]|0;do if((d|0)==(j|0)){a=j+20|0;b=c[a>>2]|0;if(!b){a=j+16|0;b=c[a>>2]|0;if(!b){o=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}if(a>>>0>>0)Ma();else{c[a>>2]=0;o=b;break}}else{e=c[j+8>>2]|0;if(e>>>0>>0)Ma();b=e+12|0;if((c[b>>2]|0)!=(j|0))Ma();a=d+8|0;if((c[a>>2]|0)==(j|0)){c[b>>2]=d;c[a>>2]=e;o=d;break}else Ma()}while(0);do if(g){b=c[j+28>>2]|0;a=10436+(b<<2)|0;if((j|0)==(c[a>>2]|0)){c[a>>2]=o;if(!o){c[2534]=c[2534]&~(1<>>0<(c[2537]|0)>>>0)Ma();b=g+16|0;if((c[b>>2]|0)==(j|0))c[b>>2]=o;else c[g+20>>2]=o;if(!o)break}a=c[2537]|0;if(o>>>0>>0)Ma();c[o+24>>2]=g;b=c[j+16>>2]|0;do if(b)if(b>>>0>>0)Ma();else{c[o+16>>2]=b;c[b+24>>2]=o;break}while(0);b=c[j+20>>2]|0;if(b)if(b>>>0<(c[2537]|0)>>>0)Ma();else{c[o+20>>2]=b;c[b+24>>2]=o;break}}while(0);b:do if(i>>>0>=16){c[j+4>>2]=m|3;c[j+(m|4)>>2]=i|1;c[j+(i+m)>>2]=i;b=i>>>3;if(i>>>0<256){a=b<<1;e=10172+(a<<2)|0;d=c[2533]|0;b=1<>2]|0;if(a>>>0<(c[2537]|0)>>>0)Ma();else{s=b;t=a}}else{c[2533]=d|b;s=10172+(a+2<<2)|0;t=e}c[s>>2]=h;c[t+12>>2]=h;c[j+(m+8)>>2]=t;c[j+(m+12)>>2]=e;break}b=i>>>8;if(b)if(i>>>0>16777215)e=31;else{L=(b+1048320|0)>>>16&8;M=b<>>16&4;M=M<>>16&2;e=14-(K|L|e)+(M<>>15)|0;e=i>>>(e+7|0)&1|e<<1}else e=0;b=10436+(e<<2)|0;c[j+(m+28)>>2]=e;c[j+(m+20)>>2]=0;c[j+(m+16)>>2]=0;a=c[2534]|0;d=1<>2]=h;c[j+(m+24)>>2]=b;c[j+(m+12)>>2]=h;c[j+(m+8)>>2]=h;break}b=c[b>>2]|0;c:do if((c[b+4>>2]&-8|0)!=(i|0)){e=i<<((e|0)==31?0:25-(e>>>1)|0);while(1){a=b+16+(e>>>31<<2)|0;d=c[a>>2]|0;if(!d)break;if((c[d+4>>2]&-8|0)==(i|0)){y=d;break c}else{e=e<<1;b=d}}if(a>>>0<(c[2537]|0)>>>0)Ma();else{c[a>>2]=h;c[j+(m+24)>>2]=b;c[j+(m+12)>>2]=h;c[j+(m+8)>>2]=h;break b}}else y=b;while(0);b=y+8|0;a=c[b>>2]|0;M=c[2537]|0;if(a>>>0>=M>>>0&y>>>0>=M>>>0){c[a+12>>2]=h;c[b>>2]=h;c[j+(m+8)>>2]=a;c[j+(m+12)>>2]=y;c[j+(m+24)>>2]=0;break}else Ma()}else{M=i+m|0;c[j+4>>2]=M|3;M=j+(M+4)|0;c[M>>2]=c[M>>2]|1}while(0);M=j+8|0;return M|0}else q=m}else q=m}else q=-1;while(0);d=c[2535]|0;if(d>>>0>=q>>>0){b=d-q|0;a=c[2538]|0;if(b>>>0>15){c[2538]=a+q;c[2535]=b;c[a+(q+4)>>2]=b|1;c[a+d>>2]=b;c[a+4>>2]=q|3}else{c[2535]=0;c[2538]=0;c[a+4>>2]=d|3;M=a+(d+4)|0;c[M>>2]=c[M>>2]|1}M=a+8|0;return M|0}a=c[2536]|0;if(a>>>0>q>>>0){L=a-q|0;c[2536]=L;M=c[2539]|0;c[2539]=M+q;c[M+(q+4)>>2]=L|1;c[M+4>>2]=q|3;M=M+8|0;return M|0}do if(!(c[2651]|0)){a=ib(30)|0;if(!(a+-1&a)){c[2653]=a;c[2652]=a;c[2654]=-1;c[2655]=-1;c[2656]=0;c[2644]=0;c[2651]=(Fb(0)|0)&-16^1431655768;break}else Ma()}while(0);j=q+48|0;i=c[2653]|0;k=q+47|0;h=i+k|0;i=0-i|0;l=h&i;if(l>>>0<=q>>>0){M=0;return M|0}a=c[2643]|0;if((a|0)!=0?(t=c[2641]|0,y=t+l|0,y>>>0<=t>>>0|y>>>0>a>>>0):0){M=0;return M|0}d:do if(!(c[2644]&4)){a=c[2539]|0;e:do if(a){f=10580;while(1){d=c[f>>2]|0;if(d>>>0<=a>>>0?(r=f+4|0,(d+(c[r>>2]|0)|0)>>>0>a>>>0):0){g=f;a=r;break}f=c[f+8>>2]|0;if(!f){v=174;break e}}d=h-(c[2536]|0)&i;if(d>>>0<2147483647){f=bb(d|0)|0;y=(f|0)==((c[g>>2]|0)+(c[a>>2]|0)|0);a=y?d:0;if(y){if((f|0)!=(-1|0)){w=f;p=a;v=194;break d}}else v=184}else a=0}else v=174;while(0);do if((v|0)==174){g=bb(0)|0;if((g|0)!=(-1|0)){a=g;d=c[2652]|0;f=d+-1|0;if(!(f&a))d=l;else d=l-a+(f+a&0-d)|0;a=c[2641]|0;f=a+d|0;if(d>>>0>q>>>0&d>>>0<2147483647){y=c[2643]|0;if((y|0)!=0?f>>>0<=a>>>0|f>>>0>y>>>0:0){a=0;break}f=bb(d|0)|0;y=(f|0)==(g|0);a=y?d:0;if(y){w=g;p=a;v=194;break d}else v=184}else a=0}else a=0}while(0);f:do if((v|0)==184){g=0-d|0;do if(j>>>0>d>>>0&(d>>>0<2147483647&(f|0)!=(-1|0))?(u=c[2653]|0,u=k-d+u&0-u,u>>>0<2147483647):0)if((bb(u|0)|0)==(-1|0)){bb(g|0)|0;break f}else{d=u+d|0;break}while(0);if((f|0)!=(-1|0)){w=f;p=d;v=194;break d}}while(0);c[2644]=c[2644]|4;v=191}else{a=0;v=191}while(0);if((((v|0)==191?l>>>0<2147483647:0)?(w=bb(l|0)|0,x=bb(0)|0,w>>>0>>0&((w|0)!=(-1|0)&(x|0)!=(-1|0))):0)?(z=x-w|0,A=z>>>0>(q+40|0)>>>0,A):0){p=A?z:a;v=194}if((v|0)==194){a=(c[2641]|0)+p|0;c[2641]=a;if(a>>>0>(c[2642]|0)>>>0)c[2642]=a;h=c[2539]|0;g:do if(h){g=10580;do{a=c[g>>2]|0;d=g+4|0;f=c[d>>2]|0;if((w|0)==(a+f|0)){B=a;C=d;D=f;E=g;v=204;break}g=c[g+8>>2]|0}while((g|0)!=0);if(((v|0)==204?(c[E+12>>2]&8|0)==0:0)?h>>>0>>0&h>>>0>=B>>>0:0){c[C>>2]=D+p;M=(c[2536]|0)+p|0;L=h+8|0;L=(L&7|0)==0?0:0-L&7;K=M-L|0;c[2539]=h+L;c[2536]=K;c[h+(L+4)>>2]=K|1;c[h+(M+4)>>2]=40;c[2540]=c[2655];break}a=c[2537]|0;if(w>>>0>>0){c[2537]=w;a=w}d=w+p|0;g=10580;while(1){if((c[g>>2]|0)==(d|0)){f=g;d=g;v=212;break}g=c[g+8>>2]|0;if(!g){d=10580;break}}if((v|0)==212)if(!(c[d+12>>2]&8)){c[f>>2]=w;n=d+4|0;c[n>>2]=(c[n>>2]|0)+p;n=w+8|0;n=(n&7|0)==0?0:0-n&7;k=w+(p+8)|0;k=(k&7|0)==0?0:0-k&7;b=w+(k+p)|0;m=n+q|0;o=w+m|0;l=b-(w+n)-q|0;c[w+(n+4)>>2]=q|3;h:do if((b|0)!=(h|0)){if((b|0)==(c[2538]|0)){M=(c[2535]|0)+l|0;c[2535]=M;c[2538]=o;c[w+(m+4)>>2]=M|1;c[w+(M+m)>>2]=M;break}i=p+4|0;d=c[w+(i+k)>>2]|0;if((d&3|0)==1){j=d&-8;g=d>>>3;i:do if(d>>>0>=256){h=c[w+((k|24)+p)>>2]|0;e=c[w+(p+12+k)>>2]|0;do if((e|0)==(b|0)){f=k|16;e=w+(i+f)|0;d=c[e>>2]|0;if(!d){e=w+(f+p)|0;d=c[e>>2]|0;if(!d){J=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Ma();else{c[e>>2]=0;J=d;break}}else{f=c[w+((k|8)+p)>>2]|0;if(f>>>0>>0)Ma();a=f+12|0;if((c[a>>2]|0)!=(b|0))Ma();d=e+8|0;if((c[d>>2]|0)==(b|0)){c[a>>2]=e;c[d>>2]=f;J=e;break}else Ma()}while(0);if(!h)break;a=c[w+(p+28+k)>>2]|0;d=10436+(a<<2)|0;do if((b|0)!=(c[d>>2]|0)){if(h>>>0<(c[2537]|0)>>>0)Ma();a=h+16|0;if((c[a>>2]|0)==(b|0))c[a>>2]=J;else c[h+20>>2]=J;if(!J)break i}else{c[d>>2]=J;if(J)break;c[2534]=c[2534]&~(1<>>0>>0)Ma();c[J+24>>2]=h;b=k|16;a=c[w+(b+p)>>2]|0;do if(a)if(a>>>0>>0)Ma();else{c[J+16>>2]=a;c[a+24>>2]=J;break}while(0);b=c[w+(i+b)>>2]|0;if(!b)break;if(b>>>0<(c[2537]|0)>>>0)Ma();else{c[J+20>>2]=b;c[b+24>>2]=J;break}}else{e=c[w+((k|8)+p)>>2]|0;f=c[w+(p+12+k)>>2]|0;d=10172+(g<<1<<2)|0;do if((e|0)!=(d|0)){if(e>>>0>>0)Ma();if((c[e+12>>2]|0)==(b|0))break;Ma()}while(0);if((f|0)==(e|0)){c[2533]=c[2533]&~(1<>>0>>0)Ma();a=f+8|0;if((c[a>>2]|0)==(b|0)){F=a;break}Ma()}while(0);c[e+12>>2]=f;c[F>>2]=e}while(0);b=w+((j|k)+p)|0;f=j+l|0}else f=l;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[w+(m+4)>>2]=f|1;c[w+(f+m)>>2]=f;b=f>>>3;if(f>>>0<256){a=b<<1;e=10172+(a<<2)|0;d=c[2533]|0;b=1<>2]|0;if(a>>>0>=(c[2537]|0)>>>0){K=b;L=a;break}Ma()}while(0);c[K>>2]=o;c[L+12>>2]=o;c[w+(m+8)>>2]=L;c[w+(m+12)>>2]=e;break}b=f>>>8;do if(!b)e=0;else{if(f>>>0>16777215){e=31;break}K=(b+1048320|0)>>>16&8;L=b<>>16&4;L=L<>>16&2;e=14-(J|K|e)+(L<>>15)|0;e=f>>>(e+7|0)&1|e<<1}while(0);b=10436+(e<<2)|0;c[w+(m+28)>>2]=e;c[w+(m+20)>>2]=0;c[w+(m+16)>>2]=0;a=c[2534]|0;d=1<>2]=o;c[w+(m+24)>>2]=b;c[w+(m+12)>>2]=o;c[w+(m+8)>>2]=o;break}b=c[b>>2]|0;j:do if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){a=b+16+(e>>>31<<2)|0;d=c[a>>2]|0;if(!d)break;if((c[d+4>>2]&-8|0)==(f|0)){M=d;break j}else{e=e<<1;b=d}}if(a>>>0<(c[2537]|0)>>>0)Ma();else{c[a>>2]=o;c[w+(m+24)>>2]=b;c[w+(m+12)>>2]=o;c[w+(m+8)>>2]=o;break h}}else M=b;while(0);b=M+8|0;a=c[b>>2]|0;L=c[2537]|0;if(a>>>0>=L>>>0&M>>>0>=L>>>0){c[a+12>>2]=o;c[b>>2]=o;c[w+(m+8)>>2]=a;c[w+(m+12)>>2]=M;c[w+(m+24)>>2]=0;break}else Ma()}else{M=(c[2536]|0)+l|0;c[2536]=M;c[2539]=o;c[w+(m+4)>>2]=M|1}while(0);M=w+(n|8)|0;return M|0}else d=10580;while(1){a=c[d>>2]|0;if(a>>>0<=h>>>0?(b=c[d+4>>2]|0,e=a+b|0,e>>>0>h>>>0):0)break;d=c[d+8>>2]|0}f=a+(b+-39)|0;a=a+(b+-47+((f&7|0)==0?0:0-f&7))|0;f=h+16|0;a=a>>>0>>0?h:a;b=a+8|0;d=w+8|0;d=(d&7|0)==0?0:0-d&7;M=p+-40-d|0;c[2539]=w+d;c[2536]=M;c[w+(d+4)>>2]=M|1;c[w+(p+-36)>>2]=40;c[2540]=c[2655];d=a+4|0;c[d>>2]=27;c[b>>2]=c[2645];c[b+4>>2]=c[2646];c[b+8>>2]=c[2647];c[b+12>>2]=c[2648];c[2645]=w;c[2646]=p;c[2648]=0;c[2647]=b;b=a+28|0;c[b>>2]=7;if((a+32|0)>>>0>>0)do{M=b;b=b+4|0;c[b>>2]=7}while((M+8|0)>>>0>>0);if((a|0)!=(h|0)){g=a-h|0;c[d>>2]=c[d>>2]&-2;c[h+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){a=b<<1;e=10172+(a<<2)|0;d=c[2533]|0;b=1<>2]|0;if(a>>>0<(c[2537]|0)>>>0)Ma();else{G=b;H=a}}else{c[2533]=d|b;G=10172+(a+2<<2)|0;H=e}c[G>>2]=h;c[H+12>>2]=h;c[h+8>>2]=H;c[h+12>>2]=e;break}b=g>>>8;if(b)if(g>>>0>16777215)e=31;else{L=(b+1048320|0)>>>16&8;M=b<>>16&4;M=M<>>16&2;e=14-(K|L|e)+(M<>>15)|0;e=g>>>(e+7|0)&1|e<<1}else e=0;d=10436+(e<<2)|0;c[h+28>>2]=e;c[h+20>>2]=0;c[f>>2]=0;b=c[2534]|0;a=1<>2]=h;c[h+24>>2]=d;c[h+12>>2]=h;c[h+8>>2]=h;break}b=c[d>>2]|0;k:do if((c[b+4>>2]&-8|0)!=(g|0)){e=g<<((e|0)==31?0:25-(e>>>1)|0);while(1){a=b+16+(e>>>31<<2)|0;d=c[a>>2]|0;if(!d)break;if((c[d+4>>2]&-8|0)==(g|0)){I=d;break k}else{e=e<<1;b=d}}if(a>>>0<(c[2537]|0)>>>0)Ma();else{c[a>>2]=h;c[h+24>>2]=b;c[h+12>>2]=h;c[h+8>>2]=h;break g}}else I=b;while(0);b=I+8|0;a=c[b>>2]|0;M=c[2537]|0;if(a>>>0>=M>>>0&I>>>0>=M>>>0){c[a+12>>2]=h;c[b>>2]=h;c[h+8>>2]=a;c[h+12>>2]=I;c[h+24>>2]=0;break}else Ma()}}else{M=c[2537]|0;if((M|0)==0|w>>>0>>0)c[2537]=w;c[2645]=w;c[2646]=p;c[2648]=0;c[2542]=c[2651];c[2541]=-1;b=0;do{M=b<<1;L=10172+(M<<2)|0;c[10172+(M+3<<2)>>2]=L;c[10172+(M+2<<2)>>2]=L;b=b+1|0}while((b|0)!=32);M=w+8|0;M=(M&7|0)==0?0:0-M&7;L=p+-40-M|0;c[2539]=w+M;c[2536]=L;c[w+(M+4)>>2]=L|1;c[w+(p+-36)>>2]=40;c[2540]=c[2655]}while(0);b=c[2536]|0;if(b>>>0>q>>>0){L=b-q|0;c[2536]=L;M=c[2539]|0;c[2539]=M+q;c[M+(q+4)>>2]=L|1;c[M+4>>2]=q|3;M=M+8|0;return M|0}}c[(SP()|0)>>2]=12;M=0;return M|0}function $Q(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;if(!a)return;b=a+-8|0;i=c[2537]|0;if(b>>>0>>0)Ma();d=c[a+-4>>2]|0;e=d&3;if((e|0)==1)Ma();o=d&-8;q=a+(o+-8)|0;do if(!(d&1)){b=c[b>>2]|0;if(!e)return;j=-8-b|0;l=a+j|0;m=b+o|0;if(l>>>0>>0)Ma();if((l|0)==(c[2538]|0)){b=a+(o+-4)|0;d=c[b>>2]|0;if((d&3|0)!=3){u=l;g=m;break}c[2535]=m;c[b>>2]=d&-2;c[a+(j+4)>>2]=m|1;c[q>>2]=m;return}f=b>>>3;if(b>>>0<256){e=c[a+(j+8)>>2]|0;d=c[a+(j+12)>>2]|0;b=10172+(f<<1<<2)|0;if((e|0)!=(b|0)){if(e>>>0>>0)Ma();if((c[e+12>>2]|0)!=(l|0))Ma()}if((d|0)==(e|0)){c[2533]=c[2533]&~(1<>>0>>0)Ma();b=d+8|0;if((c[b>>2]|0)==(l|0))h=b;else Ma()}else h=d+8|0;c[e+12>>2]=d;c[h>>2]=e;u=l;g=m;break}h=c[a+(j+24)>>2]|0;e=c[a+(j+12)>>2]|0;do if((e|0)==(l|0)){d=a+(j+20)|0;b=c[d>>2]|0;if(!b){d=a+(j+16)|0;b=c[d>>2]|0;if(!b){k=0;break}}while(1){e=b+20|0;f=c[e>>2]|0;if(f){b=f;d=e;continue}e=b+16|0;f=c[e>>2]|0;if(!f)break;else{b=f;d=e}}if(d>>>0>>0)Ma();else{c[d>>2]=0;k=b;break}}else{f=c[a+(j+8)>>2]|0;if(f>>>0>>0)Ma();b=f+12|0;if((c[b>>2]|0)!=(l|0))Ma();d=e+8|0;if((c[d>>2]|0)==(l|0)){c[b>>2]=e;c[d>>2]=f;k=e;break}else Ma()}while(0);if(h){b=c[a+(j+28)>>2]|0;d=10436+(b<<2)|0;if((l|0)==(c[d>>2]|0)){c[d>>2]=k;if(!k){c[2534]=c[2534]&~(1<>>0<(c[2537]|0)>>>0)Ma();b=h+16|0;if((c[b>>2]|0)==(l|0))c[b>>2]=k;else c[h+20>>2]=k;if(!k){u=l;g=m;break}}d=c[2537]|0;if(k>>>0>>0)Ma();c[k+24>>2]=h;b=c[a+(j+16)>>2]|0;do if(b)if(b>>>0>>0)Ma();else{c[k+16>>2]=b;c[b+24>>2]=k;break}while(0);b=c[a+(j+20)>>2]|0;if(b)if(b>>>0<(c[2537]|0)>>>0)Ma();else{c[k+20>>2]=b;c[b+24>>2]=k;u=l;g=m;break}else{u=l;g=m}}else{u=l;g=m}}else{u=b;g=o}while(0);if(u>>>0>=q>>>0)Ma();b=a+(o+-4)|0;d=c[b>>2]|0;if(!(d&1))Ma();if(!(d&2)){if((q|0)==(c[2539]|0)){t=(c[2536]|0)+g|0;c[2536]=t;c[2539]=u;c[u+4>>2]=t|1;if((u|0)!=(c[2538]|0))return;c[2538]=0;c[2535]=0;return}if((q|0)==(c[2538]|0)){t=(c[2535]|0)+g|0;c[2535]=t;c[2538]=u;c[u+4>>2]=t|1;c[u+t>>2]=t;return}g=(d&-8)+g|0;f=d>>>3;do if(d>>>0>=256){h=c[a+(o+16)>>2]|0;b=c[a+(o|4)>>2]|0;do if((b|0)==(q|0)){d=a+(o+12)|0;b=c[d>>2]|0;if(!b){d=a+(o+8)|0;b=c[d>>2]|0;if(!b){p=0;break}}while(1){e=b+20|0;f=c[e>>2]|0;if(f){b=f;d=e;continue}e=b+16|0;f=c[e>>2]|0;if(!f)break;else{b=f;d=e}}if(d>>>0<(c[2537]|0)>>>0)Ma();else{c[d>>2]=0;p=b;break}}else{d=c[a+o>>2]|0;if(d>>>0<(c[2537]|0)>>>0)Ma();e=d+12|0;if((c[e>>2]|0)!=(q|0))Ma();f=b+8|0;if((c[f>>2]|0)==(q|0)){c[e>>2]=b;c[f>>2]=d;p=b;break}else Ma()}while(0);if(h){b=c[a+(o+20)>>2]|0;d=10436+(b<<2)|0;if((q|0)==(c[d>>2]|0)){c[d>>2]=p;if(!p){c[2534]=c[2534]&~(1<>>0<(c[2537]|0)>>>0)Ma();b=h+16|0;if((c[b>>2]|0)==(q|0))c[b>>2]=p;else c[h+20>>2]=p;if(!p)break}d=c[2537]|0;if(p>>>0>>0)Ma();c[p+24>>2]=h;b=c[a+(o+8)>>2]|0;do if(b)if(b>>>0>>0)Ma();else{c[p+16>>2]=b;c[b+24>>2]=p;break}while(0);b=c[a+(o+12)>>2]|0;if(b)if(b>>>0<(c[2537]|0)>>>0)Ma();else{c[p+20>>2]=b;c[b+24>>2]=p;break}}}else{e=c[a+o>>2]|0;d=c[a+(o|4)>>2]|0;b=10172+(f<<1<<2)|0;if((e|0)!=(b|0)){if(e>>>0<(c[2537]|0)>>>0)Ma();if((c[e+12>>2]|0)!=(q|0))Ma()}if((d|0)==(e|0)){c[2533]=c[2533]&~(1<>>0<(c[2537]|0)>>>0)Ma();b=d+8|0;if((c[b>>2]|0)==(q|0))n=b;else Ma()}else n=d+8|0;c[e+12>>2]=d;c[n>>2]=e}while(0);c[u+4>>2]=g|1;c[u+g>>2]=g;if((u|0)==(c[2538]|0)){c[2535]=g;return}}else{c[b>>2]=d&-2;c[u+4>>2]=g|1;c[u+g>>2]=g}b=g>>>3;if(g>>>0<256){d=b<<1;f=10172+(d<<2)|0;e=c[2533]|0;b=1<>2]|0;if(d>>>0<(c[2537]|0)>>>0)Ma();else{r=b;s=d}}else{c[2533]=e|b;r=10172+(d+2<<2)|0;s=f}c[r>>2]=u;c[s+12>>2]=u;c[u+8>>2]=s;c[u+12>>2]=f;return}b=g>>>8;if(b)if(g>>>0>16777215)f=31;else{r=(b+1048320|0)>>>16&8;s=b<>>16&4;s=s<>>16&2;f=14-(q|r|f)+(s<>>15)|0;f=g>>>(f+7|0)&1|f<<1}else f=0;b=10436+(f<<2)|0;c[u+28>>2]=f;c[u+20>>2]=0;c[u+16>>2]=0;d=c[2534]|0;e=1<>2]|0;b:do if((c[b+4>>2]&-8|0)!=(g|0)){f=g<<((f|0)==31?0:25-(f>>>1)|0);while(1){d=b+16+(f>>>31<<2)|0;e=c[d>>2]|0;if(!e)break;if((c[e+4>>2]&-8|0)==(g|0)){t=e;break b}else{f=f<<1;b=e}}if(d>>>0<(c[2537]|0)>>>0)Ma();else{c[d>>2]=u;c[u+24>>2]=b;c[u+12>>2]=u;c[u+8>>2]=u;break a}}else t=b;while(0);b=t+8|0;d=c[b>>2]|0;s=c[2537]|0;if(d>>>0>=s>>>0&t>>>0>=s>>>0){c[d+12>>2]=u;c[b>>2]=u;c[u+8>>2]=d;c[u+12>>2]=t;c[u+24>>2]=0;break}else Ma()}else{c[2534]=d|e;c[b>>2]=u;c[u+24>>2]=b;c[u+12>>2]=u;c[u+8>>2]=u}while(0);u=(c[2541]|0)+-1|0;c[2541]=u;if(!u)b=10588;else return;while(1){b=c[b>>2]|0;if(!b)break;else b=b+8|0}c[2541]=-1;return}function aR(a,b){a=a|0;b=b|0;var d=0;if(a){d=_(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;b=_Q(d)|0;if(!b)return b|0;if(!(c[b+-4>>2]&3))return b|0;kR(b|0,0,d|0)|0;return b|0}function bR(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){a=_Q(b)|0;return a|0}if(b>>>0>4294967231){c[(SP()|0)>>2]=12;a=0;return a|0}d=cR(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d){a=d+8|0;return a|0}d=_Q(b)|0;if(!d){a=0;return a|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;iR(d|0,a|0,(e>>>0>>0?e:b)|0)|0;$Q(a);a=d;return a|0}function cR(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;o=a+4|0;p=c[o>>2]|0;j=p&-8;l=a+j|0;i=c[2537]|0;d=p&3;if(!((d|0)!=1&a>>>0>=i>>>0&a>>>0>>0))Ma();e=a+(j|4)|0;f=c[e>>2]|0;if(!(f&1))Ma();if(!d){if(b>>>0<256){a=0;return a|0}if(j>>>0>=(b+4|0)>>>0?(j-b|0)>>>0<=c[2653]<<1>>>0:0)return a|0;a=0;return a|0}if(j>>>0>=b>>>0){d=j-b|0;if(d>>>0<=15)return a|0;c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=d|3;c[e>>2]=c[e>>2]|1;dR(a+b|0,d);return a|0}if((l|0)==(c[2539]|0)){d=(c[2536]|0)+j|0;if(d>>>0<=b>>>0){a=0;return a|0}n=d-b|0;c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=n|1;c[2539]=a+b;c[2536]=n;return a|0}if((l|0)==(c[2538]|0)){e=(c[2535]|0)+j|0;if(e>>>0>>0){a=0;return a|0}d=e-b|0;if(d>>>0>15){c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=d|1;c[a+e>>2]=d;e=a+(e+4)|0;c[e>>2]=c[e>>2]&-2;e=a+b|0}else{c[o>>2]=p&1|e|2;e=a+(e+4)|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[2535]=d;c[2538]=e;return a|0}if(f&2){a=0;return a|0}m=(f&-8)+j|0;if(m>>>0>>0){a=0;return a|0}n=m-b|0;g=f>>>3;do if(f>>>0>=256){h=c[a+(j+24)>>2]|0;g=c[a+(j+12)>>2]|0;do if((g|0)==(l|0)){e=a+(j+20)|0;d=c[e>>2]|0;if(!d){e=a+(j+16)|0;d=c[e>>2]|0;if(!d){k=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Ma();else{c[e>>2]=0;k=d;break}}else{f=c[a+(j+8)>>2]|0;if(f>>>0>>0)Ma();d=f+12|0;if((c[d>>2]|0)!=(l|0))Ma();e=g+8|0;if((c[e>>2]|0)==(l|0)){c[d>>2]=g;c[e>>2]=f;k=g;break}else Ma()}while(0);if(h){d=c[a+(j+28)>>2]|0;e=10436+(d<<2)|0;if((l|0)==(c[e>>2]|0)){c[e>>2]=k;if(!k){c[2534]=c[2534]&~(1<>>0<(c[2537]|0)>>>0)Ma();d=h+16|0;if((c[d>>2]|0)==(l|0))c[d>>2]=k;else c[h+20>>2]=k;if(!k)break}e=c[2537]|0;if(k>>>0>>0)Ma();c[k+24>>2]=h;d=c[a+(j+16)>>2]|0;do if(d)if(d>>>0>>0)Ma();else{c[k+16>>2]=d;c[d+24>>2]=k;break}while(0);d=c[a+(j+20)>>2]|0;if(d)if(d>>>0<(c[2537]|0)>>>0)Ma();else{c[k+20>>2]=d;c[d+24>>2]=k;break}}}else{f=c[a+(j+8)>>2]|0;e=c[a+(j+12)>>2]|0;d=10172+(g<<1<<2)|0;if((f|0)!=(d|0)){if(f>>>0>>0)Ma();if((c[f+12>>2]|0)!=(l|0))Ma()}if((e|0)==(f|0)){c[2533]=c[2533]&~(1<>>0>>0)Ma();d=e+8|0;if((c[d>>2]|0)==(l|0))h=d;else Ma()}else h=e+8|0;c[f+12>>2]=e;c[h>>2]=f}while(0);if(n>>>0<16){c[o>>2]=m|p&1|2;b=a+(m|4)|0;c[b>>2]=c[b>>2]|1;return a|0}else{c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=n|3;p=a+(m|4)|0;c[p>>2]=c[p>>2]|1;dR(a+b|0,n);return a|0}return 0}function dR(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;q=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){k=c[a>>2]|0;if(!(d&3))return;n=a+(0-k)|0;m=k+b|0;j=c[2537]|0;if(n>>>0>>0)Ma();if((n|0)==(c[2538]|0)){e=a+(b+4)|0;d=c[e>>2]|0;if((d&3|0)!=3){t=n;h=m;break}c[2535]=m;c[e>>2]=d&-2;c[a+(4-k)>>2]=m|1;c[q>>2]=m;return}g=k>>>3;if(k>>>0<256){f=c[a+(8-k)>>2]|0;e=c[a+(12-k)>>2]|0;d=10172+(g<<1<<2)|0;if((f|0)!=(d|0)){if(f>>>0>>0)Ma();if((c[f+12>>2]|0)!=(n|0))Ma()}if((e|0)==(f|0)){c[2533]=c[2533]&~(1<>>0>>0)Ma();d=e+8|0;if((c[d>>2]|0)==(n|0))i=d;else Ma()}else i=e+8|0;c[f+12>>2]=e;c[i>>2]=f;t=n;h=m;break}i=c[a+(24-k)>>2]|0;f=c[a+(12-k)>>2]|0;do if((f|0)==(n|0)){f=16-k|0;e=a+(f+4)|0;d=c[e>>2]|0;if(!d){e=a+f|0;d=c[e>>2]|0;if(!d){l=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Ma();else{c[e>>2]=0;l=d;break}}else{g=c[a+(8-k)>>2]|0;if(g>>>0>>0)Ma();d=g+12|0;if((c[d>>2]|0)!=(n|0))Ma();e=f+8|0;if((c[e>>2]|0)==(n|0)){c[d>>2]=f;c[e>>2]=g;l=f;break}else Ma()}while(0);if(i){d=c[a+(28-k)>>2]|0;e=10436+(d<<2)|0;if((n|0)==(c[e>>2]|0)){c[e>>2]=l;if(!l){c[2534]=c[2534]&~(1<>>0<(c[2537]|0)>>>0)Ma();d=i+16|0;if((c[d>>2]|0)==(n|0))c[d>>2]=l;else c[i+20>>2]=l;if(!l){t=n;h=m;break}}f=c[2537]|0;if(l>>>0>>0)Ma();c[l+24>>2]=i;d=16-k|0;e=c[a+d>>2]|0;do if(e)if(e>>>0>>0)Ma();else{c[l+16>>2]=e;c[e+24>>2]=l;break}while(0);d=c[a+(d+4)>>2]|0;if(d)if(d>>>0<(c[2537]|0)>>>0)Ma();else{c[l+20>>2]=d;c[d+24>>2]=l;t=n;h=m;break}else{t=n;h=m}}else{t=n;h=m}}else{t=a;h=b}while(0);j=c[2537]|0;if(q>>>0>>0)Ma();d=a+(b+4)|0;e=c[d>>2]|0;if(!(e&2)){if((q|0)==(c[2539]|0)){s=(c[2536]|0)+h|0;c[2536]=s;c[2539]=t;c[t+4>>2]=s|1;if((t|0)!=(c[2538]|0))return;c[2538]=0;c[2535]=0;return}if((q|0)==(c[2538]|0)){s=(c[2535]|0)+h|0;c[2535]=s;c[2538]=t;c[t+4>>2]=s|1;c[t+s>>2]=s;return}h=(e&-8)+h|0;g=e>>>3;do if(e>>>0>=256){i=c[a+(b+24)>>2]|0;f=c[a+(b+12)>>2]|0;do if((f|0)==(q|0)){e=a+(b+20)|0;d=c[e>>2]|0;if(!d){e=a+(b+16)|0;d=c[e>>2]|0;if(!d){p=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Ma();else{c[e>>2]=0;p=d;break}}else{g=c[a+(b+8)>>2]|0;if(g>>>0>>0)Ma();d=g+12|0;if((c[d>>2]|0)!=(q|0))Ma();e=f+8|0;if((c[e>>2]|0)==(q|0)){c[d>>2]=f;c[e>>2]=g;p=f;break}else Ma()}while(0);if(i){d=c[a+(b+28)>>2]|0;e=10436+(d<<2)|0;if((q|0)==(c[e>>2]|0)){c[e>>2]=p;if(!p){c[2534]=c[2534]&~(1<>>0<(c[2537]|0)>>>0)Ma();d=i+16|0;if((c[d>>2]|0)==(q|0))c[d>>2]=p;else c[i+20>>2]=p;if(!p)break}e=c[2537]|0;if(p>>>0>>0)Ma();c[p+24>>2]=i;d=c[a+(b+16)>>2]|0;do if(d)if(d>>>0>>0)Ma();else{c[p+16>>2]=d;c[d+24>>2]=p;break}while(0);d=c[a+(b+20)>>2]|0;if(d)if(d>>>0<(c[2537]|0)>>>0)Ma();else{c[p+20>>2]=d;c[d+24>>2]=p;break}}}else{f=c[a+(b+8)>>2]|0;e=c[a+(b+12)>>2]|0;d=10172+(g<<1<<2)|0;if((f|0)!=(d|0)){if(f>>>0>>0)Ma();if((c[f+12>>2]|0)!=(q|0))Ma()}if((e|0)==(f|0)){c[2533]=c[2533]&~(1<>>0>>0)Ma();d=e+8|0;if((c[d>>2]|0)==(q|0))o=d;else Ma()}else o=e+8|0;c[f+12>>2]=e;c[o>>2]=f}while(0);c[t+4>>2]=h|1;c[t+h>>2]=h;if((t|0)==(c[2538]|0)){c[2535]=h;return}}else{c[d>>2]=e&-2;c[t+4>>2]=h|1;c[t+h>>2]=h}d=h>>>3;if(h>>>0<256){e=d<<1;g=10172+(e<<2)|0;f=c[2533]|0;d=1<>2]|0;if(e>>>0<(c[2537]|0)>>>0)Ma();else{r=d;s=e}}else{c[2533]=f|d;r=10172+(e+2<<2)|0;s=g}c[r>>2]=t;c[s+12>>2]=t;c[t+8>>2]=s;c[t+12>>2]=g;return}d=h>>>8;if(d)if(h>>>0>16777215)g=31;else{r=(d+1048320|0)>>>16&8;s=d<>>16&4;s=s<>>16&2;g=14-(q|r|g)+(s<>>15)|0;g=h>>>(g+7|0)&1|g<<1}else g=0;d=10436+(g<<2)|0;c[t+28>>2]=g;c[t+20>>2]=0;c[t+16>>2]=0;e=c[2534]|0;f=1<>2]=t;c[t+24>>2]=d;c[t+12>>2]=t;c[t+8>>2]=t;return}d=c[d>>2]|0;a:do if((c[d+4>>2]&-8|0)!=(h|0)){g=h<<((g|0)==31?0:25-(g>>>1)|0);while(1){e=d+16+(g>>>31<<2)|0;f=c[e>>2]|0;if(!f)break;if((c[f+4>>2]&-8|0)==(h|0)){d=f;break a}else{g=g<<1;d=f}}if(e>>>0<(c[2537]|0)>>>0)Ma();c[e>>2]=t;c[t+24>>2]=d;c[t+12>>2]=t;c[t+8>>2]=t;return}while(0);e=d+8|0;f=c[e>>2]|0;s=c[2537]|0;if(!(f>>>0>=s>>>0&d>>>0>=s>>>0))Ma();c[f+12>>2]=t;c[e>>2]=t;c[t+8>>2]=f;c[t+12>>2]=d;c[t+24>>2]=0;return}function eR(){}function fR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return(C=d,a-c>>>0|0)|0}function gR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return(C=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function hR(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b>>>c;return a>>>c|(b&(1<>>c-32|0}function iR(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((e|0)>=4096)return lb(b|0,d|0,e|0)|0;f=b|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}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function jR(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 iR(b,c,d)|0;return b|0}function kR(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;if((e|0)>=20){d=d&255;h=b&3;i=d|d<<8|d<<16|d<<24;g=f&~3;if(h){h=b+4-h|0;while((b|0)<(h|0)){a[b>>0]=d;b=b+1|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 b-e|0}function lR(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b<>>32-c;return a<>c;return a>>>c|(b&(1<>c-32|0}function nR(b){b=b|0;var c=0;c=a[m+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return(a[m+(b>>>24)>>0]|0)+24|0}function oR(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=_(e,f)|0;d=a>>>16;a=(c>>>16)+(_(e,d)|0)|0;e=b>>>16;b=_(e,f)|0;return(C=(a>>>16)+(_(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function pR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=fR(j^a,i^b,j,i)|0;g=C;a=f^j;b=e^i;return fR((uR(h,g,fR(f^c,e^d,f,e)|0,C,0)|0)^a,C^b,a,b)|0}function qR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+16|0;j=f|0;h=b>>31|((b|0)<0?-1:0)<<1;g=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;l=e>>31|((e|0)<0?-1:0)<<1;k=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;a=fR(h^a,g^b,h,g)|0;b=C;uR(a,b,fR(l^d,k^e,l,k)|0,C,j)|0;e=fR(c[j>>2]^h,c[j+4>>2]^g,h,g)|0;d=C;i=f;return(C=d,e)|0}function rR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=oR(e,f)|0;a=C;return(C=(_(b,f)|0)+(_(d,e)|0)+a|a&0,c|0|0)|0}function sR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return uR(a,b,c,d,0)|0}function tR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;f=g|0;uR(a,b,d,e,f)|0;i=g;return(C=c[f+4>>2]|0,c[f>>2]|0)|0}function Km(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=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,D=0,E=0,F=0,G=0;G=i;i=i+96|0;z=G+80|0;p=G+76|0;h=G+72|0;A=G+68|0;B=G+64|0;x=G+60|0;n=G+56|0;E=G+52|0;D=G+48|0;u=G;o=G+44|0;q=G+40|0;k=G+36|0;l=G+85|0;v=G+32|0;m=G+28|0;s=G+24|0;j=G+20|0;r=G+84|0;y=G+16|0;w=G+12|0;t=G+8|0;c[p>>2]=b;c[h>>2]=e;c[A>>2]=f;c[B>>2]=g;c[x>>2]=c[(c[h>>2]|0)+20>>2];c[n>>2]=c[c[p>>2]>>2];c[c[B>>2]>>2]=0;if((c[(c[x>>2]|0)+68>>2]|0)<(c[(c[n>>2]|0)+24>>2]|0)?(c[(c[x>>2]|0)+68>>2]|0)!=(c[A>>2]|0):0){c[z>>2]=0;F=c[z>>2]|0;i=G;return F|0}b=(c[h>>2]|0)+24|0;g=c[b+4>>2]|0;e=u;c[e>>2]=c[b>>2];c[e+4>>2]=g;c[E>>2]=c[(c[x>>2]|0)+28>>2];e=u;g=(c[p>>2]|0)+32|0;if(!(!((c[e>>2]|0)!=(c[g>>2]|0)?1:(c[e+4>>2]|0)!=(c[g+4>>2]|0))?(d[(c[h>>2]|0)+32>>0]|0)==0:0))F=6;do if((F|0)==6){c[o>>2]=0;c[q>>2]=d[(c[n>>2]|0)+231>>0];c[k>>2]=0;a[l>>0]=0;c[m>>2]=c[h>>2];c[v>>2]=c[(c[h>>2]|0)+8>>2];while(1){if(!(c[v>>2]|0))break;if((c[c[v>>2]>>2]|0)==4)c[k>>2]=1;if((c[c[v>>2]>>2]|0)==1)c[m>>2]=c[v>>2];if(a[(c[v>>2]|0)+32>>0]|0)a[l>>0]=1;c[v>>2]=c[(c[v>>2]|0)+8>>2]}if(!(c[k>>2]|0)){c[z>>2]=0;F=c[z>>2]|0;i=G;return F|0}a:do if(c[(c[x>>2]|0)+40>>2]|0){c[j>>2]=d[(c[m>>2]|0)+32>>0];Mm(c[p>>2]|0,c[m>>2]|0,o);b:while(1){if(c[o>>2]|0)break a;while(1){if(!((a[(c[m>>2]|0)+32>>0]|0)!=0^1))break a;Nm(c[p>>2]|0,c[m>>2]|0,o);if(c[j>>2]|0)continue b;n=(c[m>>2]|0)+24|0;g=u;if(!(((c[n>>2]|0)!=(c[g>>2]|0)?1:(c[n+4>>2]|0)!=(c[g+4>>2]|0))&(c[o>>2]|0)==0))break a}}}while(0);c:do if((a[l>>0]|0)!=0&(c[o>>2]|0)==0)do{if(!((a[(c[m>>2]|0)+32>>0]|0)!=0^1))break c;Nm(c[p>>2]|0,c[m>>2]|0,o)}while((c[o>>2]|0)==0);while(0);if(c[o>>2]|0){c[z>>2]=c[o>>2];F=c[z>>2]|0;i=G;return F|0}c[s>>2]=1;c[v>>2]=c[m>>2];while(1){if(!(c[v>>2]|0))break;a[r>>0]=0;c[y>>2]=c[v>>2];if((c[c[y>>2]>>2]|0)==1)c[y>>2]=c[(c[y>>2]|0)+16>>2];c[w>>2]=c[(c[y>>2]|0)+20>>2];c[E>>2]=c[(c[w>>2]|0)+48>>2];g=(c[w>>2]|0)+56|0;o=c[g+4>>2]|0;h=u;c[h>>2]=c[g>>2];c[h+4>>2]=o;h=(c[(c[w>>2]|0)+4>>2]|0)!=0;d:do if((d[(c[p>>2]|0)+52>>0]|0)==(c[q>>2]|0)){if(h)h=(c[E>>2]|0)>>>0>=((c[c[w>>2]>>2]|0)+(c[(c[w>>2]|0)+4>>2]|0)|0)>>>0;else h=1;a[r>>0]=h&1;while(1){if((c[E>>2]|0)!=0?(g=(c[q>>2]|0)!=0?-1:1,n=u,o=(c[p>>2]|0)+32|0,o=fR(c[n>>2]|0,c[n+4>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0,rR(g|0,((g|0)<0)<<31>>31|0,o|0,C|0)|0,(C|0)>=0):0)break d;if(d[r>>0]|0)break d;Om(c[q>>2]|0,c[c[w>>2]>>2]|0,c[(c[w>>2]|0)+4>>2]|0,E,u,r)}}else{if(h)if(c[E>>2]|0)h=(c[E>>2]|0)>>>0<=(c[c[w>>2]>>2]|0)>>>0;else h=0;else h=1;a[r>>0]=h&1;while(1){if((c[E>>2]|0)!=0?(g=(c[q>>2]|0)!=0?-1:1,n=u,o=(c[p>>2]|0)+32|0,o=fR(c[n>>2]|0,c[n+4>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0,o=rR(g|0,((g|0)<0)<<31>>31|0,o|0,C|0)|0,g=C,!((g|0)>0|(g|0)==0&o>>>0>0)):0)break d;if(d[r>>0]|0)break d;Wl(c[q>>2]|0,c[c[w>>2]>>2]|0,c[(c[w>>2]|0)+4>>2]|0,E,u,t,r)}}while(0);c[(c[w>>2]|0)+48>>2]=c[E>>2];n=u;g=c[n+4>>2]|0;o=(c[w>>2]|0)+56|0;c[o>>2]=c[n>>2];c[o+4>>2]=g;if(!((d[r>>0]|0)==0?(g=u,o=(c[p>>2]|0)+32|0,!((c[g>>2]|0)!=(c[o>>2]|0)?1:(c[g+4>>2]|0)!=(c[o+4>>2]|0))):0))c[s>>2]=0;c[v>>2]=c[(c[v>>2]|0)+12>>2]}if(c[s>>2]|0){c[E>>2]=c[(c[x>>2]|0)+48>>2];break}else{c[E>>2]=0;break}}while(0);if(!(c[E>>2]|0)){c[z>>2]=0;F=c[z>>2]|0;i=G;return F|0}if((a[c[E>>2]>>0]|0)==1){c[E>>2]=(c[E>>2]|0)+1;h=c[E>>2]|0;if(d[c[E>>2]>>0]&128)h=Vl(h,D)|0;else{c[D>>2]=d[h>>0];h=1}c[E>>2]=(c[E>>2]|0)+h}else c[D>>2]=0;while(1){if((c[D>>2]|0)>=(c[A>>2]|0))break;Tl(0,E);if(!(a[c[E>>2]>>0]|0)){F=65;break}c[E>>2]=(c[E>>2]|0)+1;h=c[E>>2]|0;if(d[c[E>>2]>>0]&128)h=Vl(h,D)|0;else{c[D>>2]=d[h>>0];h=1}c[E>>2]=(c[E>>2]|0)+h}if((F|0)==65){c[z>>2]=0;F=c[z>>2]|0;i=G;return F|0}if(!(a[c[E>>2]>>0]|0))c[E>>2]=0;c[c[B>>2]>>2]=(c[A>>2]|0)==(c[D>>2]|0)?c[E>>2]|0:0;c[z>>2]=0;F=c[z>>2]|0;i=G;return F|0}function Lm(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+8|0;g=h+4|0;e=h+12|0;f=h;c[d>>2]=b;c[g>>2]=c[c[d>>2]>>2];a[e>>0]=0;c[f>>2]=0;while(1){b=c[g>>2]|0;if(!(254&(a[c[g>>2]>>0]|a[e>>0])))break;c[g>>2]=b+1;a[e>>0]=a[b>>0]&128;if(a[e>>0]|0)continue;c[f>>2]=(c[f>>2]|0)+1}c[c[d>>2]>>2]=b;i=h;return c[f>>2]|0}function Mm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;k=m+8|0;j=m+4|0;l=m;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;if(!(c[g>>2]|0)){i=m;return}if(c[c[h>>2]>>2]|0){i=m;return}c[k>>2]=c[(c[g>>2]|0)+20>>2];if(c[k>>2]|0){Pm(c[k>>2]|0);if(c[(c[k>>2]|0)+40>>2]|0){c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[(c[k>>2]|0)+64>>2]|0))break;c[l>>2]=(c[k>>2]|0)+72+((c[j>>2]|0)*24|0);if(c[(c[l>>2]|0)+20>>2]|0)Ym(c[(c[l>>2]|0)+20>>2]|0)|0;c[j>>2]=(c[j>>2]|0)+1}l=Zm(c[f>>2]|0,0,c[k>>2]|0)|0;c[c[h>>2]>>2]=l}c[(c[k>>2]|0)+8>>2]=0;l=(c[k>>2]|0)+16|0;c[l>>2]=0;c[l+4>>2]=0;c[(c[k>>2]|0)+48>>2]=0}l=(c[g>>2]|0)+24|0;c[l>>2]=0;c[l+4>>2]=0;a[(c[g>>2]|0)+32>>0]=0;a[(c[g>>2]|0)+33>>0]=0;Mm(c[f>>2]|0,c[(c[g>>2]|0)+12>>2]|0,c[h>>2]|0);Mm(c[f>>2]|0,c[(c[g>>2]|0)+16>>2]|0,c[h>>2]|0);i=m;return}function Nm(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=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;x=i;i=i+80|0;p=x+64|0;w=x+60|0;q=x+56|0;r=x+52|0;u=x+48|0;v=x+44|0;m=x+8|0;s=x+40|0;t=x+36|0;n=x+32|0;o=x+28|0;l=x;g=x+24|0;j=x+20|0;h=x+16|0;c[p>>2]=b;c[w>>2]=e;c[q>>2]=f;if(c[c[q>>2]>>2]|0){i=x;return}c[r>>2]=d[(c[p>>2]|0)+52>>0];a[(c[w>>2]|0)+33>>0]=1;switch(c[c[w>>2]>>2]|0){case 3:case 1:{c[u>>2]=c[(c[w>>2]|0)+12>>2];c[v>>2]=c[(c[w>>2]|0)+16>>2];if(a[(c[u>>2]|0)+34>>0]|0){Nm(c[p>>2]|0,c[v>>2]|0,c[q>>2]|0);s=(c[v>>2]|0)+24|0;t=c[s+4>>2]|0;u=(c[w>>2]|0)+24|0;c[u>>2]=c[s>>2];c[u+4>>2]=t;a[(c[w>>2]|0)+32>>0]=a[(c[v>>2]|0)+32>>0]|0;i=x;return}o=(a[(c[v>>2]|0)+34>>0]|0)!=0;Nm(c[p>>2]|0,c[u>>2]|0,c[q>>2]|0);if(o){s=(c[u>>2]|0)+24|0;t=c[s+4>>2]|0;v=(c[w>>2]|0)+24|0;c[v>>2]=c[s>>2];c[v+4>>2]=t;a[(c[w>>2]|0)+32>>0]=a[(c[u>>2]|0)+32>>0]|0;i=x;return}Nm(c[p>>2]|0,c[v>>2]|0,c[q>>2]|0);while(1){if(a[(c[u>>2]|0)+32>>0]|0)break;if(a[(c[v>>2]|0)+32>>0]|0)break;if(c[c[q>>2]>>2]|0)break;o=(c[r>>2]|0)!=0?-1:1;l=(c[u>>2]|0)+24|0;n=(c[v>>2]|0)+24|0;n=fR(c[l>>2]|0,c[l+4>>2]|0,c[n>>2]|0,c[n+4>>2]|0)|0;n=rR(o|0,((o|0)<0)<<31>>31|0,n|0,C|0)|0;o=m;c[o>>2]=n;c[o+4>>2]=C;o=m;if((c[o>>2]|0)==0&(c[o+4>>2]|0)==0)break;b=c[p>>2]|0;if((c[m+4>>2]|0)<0){Nm(b,c[u>>2]|0,c[q>>2]|0);continue}else{Nm(b,c[v>>2]|0,c[q>>2]|0);continue}}n=(c[u>>2]|0)+24|0;o=c[n+4>>2]|0;r=(c[w>>2]|0)+24|0;c[r>>2]=c[n>>2];c[r+4>>2]=o;if(d[(c[u>>2]|0)+32>>0]|0)b=1;else b=(d[(c[v>>2]|0)+32>>0]|0)!=0;a[(c[w>>2]|0)+32>>0]=b&1;if((c[c[w>>2]>>2]|0)!=1){i=x;return}if(!(d[(c[w>>2]|0)+32>>0]|0)){i=x;return}a:do if((c[(c[v>>2]|0)+20>>2]|0)!=0?(c[c[(c[v>>2]|0)+20>>2]>>2]|0)!=0:0){c[s>>2]=c[(c[v>>2]|0)+20>>2];while(1){if(c[c[q>>2]>>2]|0)break a;if(d[(c[v>>2]|0)+32>>0]|0)break a;kR(c[(c[s>>2]|0)+28>>2]|0,0,c[(c[s>>2]|0)+32>>2]|0)|0;Nm(c[p>>2]|0,c[v>>2]|0,c[q>>2]|0)}}while(0);if(!(c[(c[u>>2]|0)+20>>2]|0)){i=x;return}if(!(c[c[(c[u>>2]|0)+20>>2]>>2]|0)){i=x;return}c[t>>2]=c[(c[u>>2]|0)+20>>2];while(1){if(c[c[q>>2]>>2]|0){k=53;break}if(d[(c[u>>2]|0)+32>>0]|0){k=53;break}kR(c[(c[t>>2]|0)+28>>2]|0,0,c[(c[t>>2]|0)+32>>2]|0)|0;Nm(c[p>>2]|0,c[u>>2]|0,c[q>>2]|0)}if((k|0)==53){i=x;return}break}case 4:{c[n>>2]=c[(c[w>>2]|0)+12>>2];c[o>>2]=c[(c[w>>2]|0)+16>>2];v=(c[r>>2]|0)!=0?-1:1;t=(c[n>>2]|0)+24|0;u=(c[o>>2]|0)+24|0;u=fR(c[t>>2]|0,c[t+4>>2]|0,c[u>>2]|0,c[u+4>>2]|0)|0;u=rR(v|0,((v|0)<0)<<31>>31|0,u|0,C|0)|0;v=l;c[v>>2]=u;c[v+4>>2]=C;do if((d[(c[o>>2]|0)+32>>0]|0)==0?!((c[l+4>>2]|0)<0?(d[(c[n>>2]|0)+32>>0]|0)==0:0):0){if((d[(c[n>>2]|0)+32>>0]|0)==0?(v=l,u=c[v+4>>2]|0,!((d[(c[o>>2]|0)+32>>0]|0)==0&((u|0)>0|(u|0)==0&(c[v>>2]|0)>>>0>0))):0){Nm(c[p>>2]|0,c[n>>2]|0,c[q>>2]|0);Nm(c[p>>2]|0,c[o>>2]|0,c[q>>2]|0);break}Nm(c[p>>2]|0,c[o>>2]|0,c[q>>2]|0)}else k=33;while(0);if((k|0)==33)Nm(c[p>>2]|0,c[n>>2]|0,c[q>>2]|0); -if(d[(c[n>>2]|0)+32>>0]|0)b=(d[(c[o>>2]|0)+32>>0]|0)!=0;else b=0;a[(c[w>>2]|0)+32>>0]=b&1;v=(c[r>>2]|0)!=0?-1:1;t=(c[n>>2]|0)+24|0;u=(c[o>>2]|0)+24|0;u=fR(c[t>>2]|0,c[t+4>>2]|0,c[u>>2]|0,c[u+4>>2]|0)|0;u=rR(v|0,((v|0)<0)<<31>>31|0,u|0,C|0)|0;v=l;c[v>>2]=u;c[v+4>>2]=C;if((d[(c[o>>2]|0)+32>>0]|0)==0?!((c[l+4>>2]|0)<0?(d[(c[n>>2]|0)+32>>0]|0)==0:0):0){u=(c[o>>2]|0)+24|0;v=c[u+4>>2]|0;w=(c[w>>2]|0)+24|0;c[w>>2]=c[u>>2];c[w+4>>2]=v;i=x;return}u=(c[n>>2]|0)+24|0;v=c[u+4>>2]|0;w=(c[w>>2]|0)+24|0;c[w>>2]=c[u>>2];c[w+4>>2]=v;i=x;return}case 2:{c[g>>2]=c[(c[w>>2]|0)+12>>2];c[j>>2]=c[(c[w>>2]|0)+16>>2];if(!(d[(c[j>>2]|0)+33>>0]|0))Nm(c[p>>2]|0,c[j>>2]|0,c[q>>2]|0);Nm(c[p>>2]|0,c[g>>2]|0,c[q>>2]|0);b:do if(!(d[(c[g>>2]|0)+32>>0]|0))while(1){if(c[c[q>>2]>>2]|0)break b;if(a[(c[j>>2]|0)+32>>0]|0)break b;u=(c[r>>2]|0)!=0?-1:1;t=(c[g>>2]|0)+24|0;v=(c[j>>2]|0)+24|0;v=fR(c[t>>2]|0,c[t+4>>2]|0,c[v>>2]|0,c[v+4>>2]|0)|0;v=rR(u|0,((u|0)<0)<<31>>31|0,v|0,C|0)|0;u=C;if(!((u|0)>0|(u|0)==0&v>>>0>0))break b;Nm(c[p>>2]|0,c[j>>2]|0,c[q>>2]|0)}while(0);t=(c[g>>2]|0)+24|0;u=c[t+4>>2]|0;v=(c[w>>2]|0)+24|0;c[v>>2]=c[t>>2];c[v+4>>2]=u;a[(c[w>>2]|0)+32>>0]=a[(c[g>>2]|0)+32>>0]|0;i=x;return}default:{c[h>>2]=c[(c[w>>2]|0)+20>>2];Pm(c[h>>2]|0);u=Qm(c[p>>2]|0,c[h>>2]|0,(c[w>>2]|0)+32|0)|0;c[c[q>>2]>>2]=u;u=(c[h>>2]|0)+16|0;v=c[u+4>>2]|0;w=(c[w>>2]|0)+24|0;c[w>>2]=c[u>>2];c[w+4>>2]=v;i=x;return}}}function Om(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 j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;j=r+32|0;k=r+28|0;l=r+24|0;m=r+20|0;n=r+16|0;o=r+12|0;q=r+8|0;p=r;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[q>>2]=c[c[m>>2]>>2];if(!(c[q>>2]|0)){c[q>>2]=c[k>>2];p=Ul(c[q>>2]|0,c[n>>2]|0)|0;c[q>>2]=(c[q>>2]|0)+p;p=c[q>>2]|0;q=c[m>>2]|0;c[q>>2]=p;i=r;return}Zl(0,q);while(1){if((c[q>>2]|0)>>>0<((c[k>>2]|0)+(c[l>>2]|0)|0)>>>0)b=(a[c[q>>2]>>0]|0)==0;else b=0;d=c[q>>2]|0;if(!b)break;c[q>>2]=d+1}if(d>>>0>=((c[k>>2]|0)+(c[l>>2]|0)|0)>>>0){a[c[o>>2]>>0]=1;p=c[q>>2]|0;q=c[m>>2]|0;c[q>>2]=p;i=r;return}else{l=Ul(c[q>>2]|0,p)|0;c[q>>2]=(c[q>>2]|0)+l;l=(c[j>>2]|0)!=0?-1:1;o=p;o=rR(l|0,((l|0)<0)<<31>>31|0,c[o>>2]|0,c[o+4>>2]|0)|0;p=c[n>>2]|0;n=p;o=gR(c[n>>2]|0,c[n+4>>2]|0,o|0,C|0)|0;c[p>>2]=o;c[p+4>>2]=C;p=c[q>>2]|0;q=c[m>>2]|0;c[q>>2]=p;i=r;return}}function Pm(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(c[(c[b>>2]|0)+24>>2]|0)Kd(c[(c[b>>2]|0)+28>>2]|0);c[(c[b>>2]|0)+28>>2]=0;c[(c[b>>2]|0)+32>>2]=0;c[(c[b>>2]|0)+24>>2]=0;i=d;return}function Qm(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;m=l+20|0;f=l+16|0;g=l+12|0;k=l+8|0;h=l+4|0;j=l;c[m>>2]=a;c[f>>2]=b;c[g>>2]=e;c[k>>2]=0;c[h>>2]=c[f>>2];c[j>>2]=c[c[m>>2]>>2];b=c[m>>2]|0;if(c[(c[f>>2]|0)+40>>2]|0){c[k>>2]=Rm(b,c[f>>2]|0,c[g>>2]|0)|0;m=c[k>>2]|0;i=l;return m|0}if((d[b+52>>0]|0|0)!=(d[(c[j>>2]|0)+231>>0]|0|0)?(c[(c[h>>2]|0)+4>>2]|0)!=0:0){Wl(d[(c[j>>2]|0)+231>>0]|0,c[c[h>>2]>>2]|0,c[(c[h>>2]|0)+4>>2]|0,(c[h>>2]|0)+8|0,(c[h>>2]|0)+16|0,(c[h>>2]|0)+32|0,c[g>>2]|0);c[(c[h>>2]|0)+28>>2]=c[(c[h>>2]|0)+8>>2];m=c[k>>2]|0;i=l;return m|0}Sm(c[j>>2]|0,c[h>>2]|0,c[g>>2]|0);m=c[k>>2]|0;i=l;return m|0}function Rm(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=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,D=0,E=0;E=i;i=i+192|0;h=E+172|0;g=E+168|0;j=E+164|0;k=E+160|0;A=E+156|0;v=E+152|0;z=E+148|0;o=E+176|0;n=E+144|0;l=E+8|0;p=E+140|0;r=E;q=E+136|0;u=E+132|0;s=E+128|0;m=E+124|0;w=E+120|0;y=E+116|0;x=E+112|0;t=E+108|0;B=E+104|0;c[g>>2]=b;c[j>>2]=e;c[k>>2]=f;c[A>>2]=0;c[v>>2]=c[j>>2];c[z>>2]=c[c[g>>2]>>2];a[o>>0]=0;if((c[(c[j>>2]|0)+64>>2]|0)==1?(c[(c[j>>2]|0)+40>>2]|0)!=0:0){c[A>>2]=Tm(c[z>>2]|0,c[(c[j>>2]|0)+72+20>>2]|0,(c[v>>2]|0)+16|0,(c[v>>2]|0)+28|0,(c[v>>2]|0)+32|0)|0;if(!(c[(c[v>>2]|0)+28>>2]|0))a[o>>0]=1}else D=5;a:do if((D|0)==5){c[n>>2]=d[(c[g>>2]|0)+52>>0];g=l;e=g+96|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(e|0));while(1){if(d[o>>0]|0)break a;c[p>>2]=0;f=r;c[f>>2]=0;c[f+4>>2]=0;c[q>>2]=0;while(1){if(c[A>>2]|0)break;if((c[q>>2]|0)>=(c[(c[j>>2]|0)+64>>2]|0))break;if(d[o>>0]|0)break;c[A>>2]=Um(c[z>>2]|0,c[j>>2]|0,c[q>>2]|0,l+((c[q>>2]|0)*24|0)|0,o)|0;do if(!(c[l+((c[q>>2]|0)*24|0)>>2]|0)){if((c[p>>2]|0)!=0?(b=(c[n>>2]|0)!=0?-1:1,e=r,f=l+((c[q>>2]|0)*24|0)+8|0,f=fR(c[e>>2]|0,c[e+4>>2]|0,c[f>>2]|0,c[f+4>>2]|0)|0,rR(b|0,((b|0)<0)<<31>>31|0,f|0,C|0)|0,(C|0)>=0):0)break;e=l+((c[q>>2]|0)*24|0)+8|0;b=c[e+4>>2]|0;f=r;c[f>>2]=c[e>>2];c[f+4>>2]=b;c[p>>2]=1}while(0);c[q>>2]=(c[q>>2]|0)+1}c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[(c[j>>2]|0)+64>>2]|0))break;while(1){if(c[A>>2]|0)break;if(d[o>>0]|0)break;if(c[l+((c[q>>2]|0)*24|0)>>2]|0)break;b=(c[n>>2]|0)!=0?-1:1;e=l+((c[q>>2]|0)*24|0)+8|0;f=r;f=fR(c[e>>2]|0,c[e+4>>2]|0,c[f>>2]|0,c[f+4>>2]|0)|0;rR(b|0,((b|0)<0)<<31>>31|0,f|0,C|0)|0;if((C|0)>=0)break;c[A>>2]=Um(c[z>>2]|0,c[j>>2]|0,c[q>>2]|0,l+((c[q>>2]|0)*24|0)|0,o)|0;b=(c[n>>2]|0)!=0?-1:1;e=l+((c[q>>2]|0)*24|0)+8|0;f=r;f=fR(c[e>>2]|0,c[e+4>>2]|0,c[f>>2]|0,c[f+4>>2]|0)|0;f=rR(b|0,((b|0)<0)<<31>>31|0,f|0,C|0)|0;b=C;if(!((b|0)>0|(b|0)==0&f>>>0>0))continue;e=l+((c[q>>2]|0)*24|0)+8|0;b=c[e+4>>2]|0;f=r;c[f>>2]=c[e>>2];c[f+4>>2]=b;c[q>>2]=0}c[q>>2]=(c[q>>2]|0)+1}if(d[o>>0]|0)continue;c[u>>2]=0;c[s>>2]=c[l+(((c[(c[j>>2]|0)+64>>2]|0)-1|0)*24|0)+20>>2];c[m>>2]=Id((c[s>>2]|0)+1|0)|0;if(!(c[m>>2]|0))break;iR(c[m>>2]|0,c[l+(((c[(c[j>>2]|0)+64>>2]|0)-1|0)*24|0)+16>>2]|0,(c[s>>2]|0)+1|0)|0;c[q>>2]=0;while(1){if((c[q>>2]|0)>=((c[(c[j>>2]|0)+64>>2]|0)-1|0))break;if(!(c[l+((c[q>>2]|0)*24|0)>>2]|0)){c[w>>2]=c[l+((c[q>>2]|0)*24|0)+16>>2];c[y>>2]=c[m>>2];c[x>>2]=c[m>>2];c[t>>2]=(c[(c[j>>2]|0)+64>>2]|0)-1-(c[q>>2]|0);c[B>>2]=Vm(x,c[t>>2]|0,0,1,w,y)|0;if(!(c[B>>2]|0))break;c[u>>2]=(c[x>>2]|0)-(c[m>>2]|0)}c[q>>2]=(c[q>>2]|0)+1}if((c[q>>2]|0)==((c[(c[j>>2]|0)+64>>2]|0)-1|0)){D=35;break}Kd(c[m>>2]|0)}if((D|0)==35){z=r;B=c[z+4>>2]|0;D=(c[v>>2]|0)+16|0;c[D>>2]=c[z>>2];c[D+4>>2]=B;c[(c[v>>2]|0)+28>>2]=c[m>>2];c[(c[v>>2]|0)+32>>2]=c[u>>2];c[(c[v>>2]|0)+24>>2]=1;break}c[h>>2]=7;D=c[h>>2]|0;i=E;return D|0}while(0);a[c[k>>2]>>0]=a[o>>0]|0;c[h>>2]=c[A>>2];D=c[h>>2]|0;i=E;return D|0}function Sm(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+24|0;j=n+20|0;k=n+16|0;m=n+12|0;l=n+8|0;h=n;c[g>>2]=b;c[j>>2]=e;c[k>>2]=f;c[l>>2]=(c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+4>>2]|0);e=c[j>>2]|0;if(c[(c[j>>2]|0)+8>>2]|0)c[m>>2]=c[e+8>>2];else c[m>>2]=c[e>>2];if((c[m>>2]|0)>>>0>=(c[l>>2]|0)>>>0){a[c[k>>2]>>0]=1;i=n;return}f=Ul(c[m>>2]|0,h)|0;c[m>>2]=(c[m>>2]|0)+f;if((d[(c[g>>2]|0)+231>>0]|0)!=0?(c[(c[j>>2]|0)+8>>2]|0)!=0:0){g=h;h=(c[j>>2]|0)+16|0;f=h;g=fR(c[f>>2]|0,c[f+4>>2]|0,c[g>>2]|0,c[g+4>>2]|0)|0;c[h>>2]=g;c[h+4>>2]=C}else{g=h;h=(c[j>>2]|0)+16|0;f=h;g=gR(c[f>>2]|0,c[f+4>>2]|0,c[g>>2]|0,c[g+4>>2]|0)|0;c[h>>2]=g;c[h+4>>2]=C}c[(c[j>>2]|0)+28>>2]=c[m>>2];Zl(0,m);c[(c[j>>2]|0)+32>>2]=(c[m>>2]|0)-(c[(c[j>>2]|0)+28>>2]|0);while(1){if((c[m>>2]|0)>>>0<(c[l>>2]|0)>>>0)b=(a[c[m>>2]>>0]|0)==0;else b=0;e=c[m>>2]|0;if(!b)break;c[m>>2]=e+1}c[(c[j>>2]|0)+8>>2]=e;a[c[k>>2]>>0]=0;i=n;return}function Tm(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=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;x=i;i=i+64|0;p=x+60|0;h=x+56|0;j=x+52|0;q=x+48|0;r=x+44|0;s=x+40|0;m=x+36|0;k=x+32|0;o=x+28|0;n=x+24|0;w=x+20|0;v=x+16|0;u=x+12|0;l=x+8|0;t=x;c[h>>2]=a;c[j>>2]=b;c[q>>2]=e;c[r>>2]=f;c[s>>2]=g;c[m>>2]=c[(c[j>>2]|0)+8>>2];c[k>>2]=c[c[j>>2]>>2];c[o>>2]=(d[(c[h>>2]|0)+231>>0]|0|0)!=0?182:183;if(!(c[m>>2]|0)){c[c[r>>2]>>2]=0;c[p>>2]=0;w=c[p>>2]|0;i=x;return w|0}while(1){c[n>>2]=c[c[c[j>>2]>>2]>>2];if(!(c[(c[n>>2]|0)+80>>2]|0)){h=4;break}f=(c[c[k>>2]>>2]|0)+88|0;e=c[f+4>>2]|0;g=t;c[g>>2]=c[f>>2];c[g+4>>2]=e;c[w>>2]=Ql(c[h>>2]|0,c[c[k>>2]>>2]|0,v,u)|0;c[l>>2]=1;while(1){if(c[w>>2]|0)break;if((c[l>>2]|0)>=(c[m>>2]|0))break;if(!(c[(c[(c[k>>2]|0)+(c[l>>2]<<2)>>2]|0)+80>>2]|0))break;e=(c[(c[k>>2]|0)+(c[l>>2]<<2)>>2]|0)+88|0;g=t;if(!((c[e>>2]|0)==(c[g>>2]|0)?(c[e+4>>2]|0)==(c[g+4>>2]|0):0))break;c[w>>2]=Ql(c[h>>2]|0,c[(c[k>>2]|0)+(c[l>>2]<<2)>>2]|0,0,0)|0;c[l>>2]=(c[l>>2]|0)+1}if(c[w>>2]|0){h=12;break}Nl(c[c[j>>2]>>2]|0,c[m>>2]|0,c[l>>2]|0,c[o>>2]|0);if((c[u>>2]|0)>0?(c[(c[c[k>>2]>>2]|0)+56>>2]|0)!=0:0){c[w>>2]=Ol(c[j>>2]|0,c[v>>2]|0,(c[u>>2]|0)+1|0)|0;if(c[w>>2]|0){h=16;break}c[v>>2]=c[(c[j>>2]|0)+16>>2]}if((c[(c[j>>2]|0)+24>>2]|0)>=0)Rl(c[(c[j>>2]|0)+24>>2]|0,1,v,u);if((c[u>>2]|0)>0){h=21;break}}if((h|0)==4)c[c[r>>2]>>2]=0;else if((h|0)==12){c[p>>2]=c[w>>2];w=c[p>>2]|0;i=x;return w|0}else if((h|0)==16){c[p>>2]=c[w>>2];w=c[p>>2]|0;i=x;return w|0}else if((h|0)==21){c[c[r>>2]>>2]=c[v>>2];v=c[t+4>>2]|0;w=c[q>>2]|0;c[w>>2]=c[t>>2];c[w+4>>2]=v;c[c[s>>2]>>2]=c[u>>2]}c[p>>2]=0;w=c[p>>2]|0;i=x;return w|0}function Um(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;h=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;m=p+8|0;o=p+4|0;n=p;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[o>>2]=0;if((c[(c[j>>2]|0)+44>>2]|0)==(c[k>>2]|0)){Sm(c[h>>2]|0,c[j>>2]|0,c[m>>2]|0);c[(c[l>>2]|0)+16>>2]=c[(c[j>>2]|0)+28>>2];c[(c[l>>2]|0)+20>>2]=c[(c[j>>2]|0)+32>>2];b=(c[j>>2]|0)+16|0;n=c[b+4>>2]|0;g=(c[l>>2]|0)+8|0;c[g>>2]=c[b>>2];c[g+4>>2]=n;o=c[o>>2]|0;i=p;return o|0}c[n>>2]=(c[j>>2]|0)+72+((c[k>>2]|0)*24|0);if(!(c[(c[n>>2]|0)+20>>2]|0)){c[c[l>>2]>>2]=1;o=c[o>>2]|0;i=p;return o|0}c[o>>2]=Tm(c[h>>2]|0,c[(c[n>>2]|0)+20>>2]|0,(c[l>>2]|0)+8|0,(c[l>>2]|0)+16|0,(c[l>>2]|0)+20|0)|0;if(c[(c[l>>2]|0)+16>>2]|0){o=c[o>>2]|0;i=p;return o|0}a[c[m>>2]>>0]=1;o=c[o>>2]|0;i=p;return o|0}function Vm(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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,D=0;D=i;i=i+96|0;k=D+80|0;l=D+76|0;m=D+72|0;n=D+68|0;o=D+64|0;p=D+60|0;q=D+56|0;x=D+52|0;y=D+48|0;z=D+44|0;r=D+40|0;s=D+36|0;A=D+32|0;v=D+24|0;t=D+16|0;u=D+8|0;w=D;c[l>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=j;c[x>>2]=c[c[l>>2]>>2];c[y>>2]=c[c[p>>2]>>2];c[z>>2]=c[c[q>>2]>>2];c[r>>2]=0;c[s>>2]=0;if((a[c[y>>2]>>0]|0)==1){c[y>>2]=(c[y>>2]|0)+1;g=c[y>>2]|0;if(d[c[y>>2]>>0]&128)g=Vl(g,r)|0;else{c[r>>2]=d[g>>0];g=1}c[y>>2]=(c[y>>2]|0)+g}if((a[c[z>>2]>>0]|0)==1){c[z>>2]=(c[z>>2]|0)+1;g=c[z>>2]|0;if(d[c[z>>2]>>0]&128)g=Vl(g,s)|0;else{c[s>>2]=d[g>>0];g=1}c[z>>2]=(c[z>>2]|0)+g}while(1){if((c[r>>2]|0)!=(c[s>>2]|0))if((c[r>>2]|0)<(c[s>>2]|0)){Tl(0,y);if(!(a[c[y>>2]>>0]|0))break;c[y>>2]=(c[y>>2]|0)+1;g=c[y>>2]|0;if(d[c[y>>2]>>0]&128)g=Vl(g,r)|0;else{c[r>>2]=d[g>>0];g=1}c[y>>2]=(c[y>>2]|0)+g;continue}else{Tl(0,z);if(!(a[c[z>>2]>>0]|0))break;c[z>>2]=(c[z>>2]|0)+1;g=c[z>>2]|0;if(d[c[z>>2]>>0]&128)g=Vl(g,s)|0;else{c[s>>2]=d[g>>0];g=1}c[z>>2]=(c[z>>2]|0)+g;continue}c[A>>2]=c[x>>2];j=v;c[j>>2]=0;c[j+4>>2]=0;j=t;c[j>>2]=0;c[j+4>>2]=0;j=u;c[j>>2]=0;c[j+4>>2]=0;if(c[r>>2]|0){j=c[x>>2]|0;c[x>>2]=j+1;a[j>>0]=1;j=c[r>>2]|0;j=El(c[x>>2]|0,j,((j|0)<0)<<31>>31)|0;c[x>>2]=(c[x>>2]|0)+j}Wm(y,t);j=t;j=fR(c[j>>2]|0,c[j+4>>2]|0,2,0)|0;h=t;c[h>>2]=j;c[h+4>>2]=C;Wm(z,u);h=u;h=fR(c[h>>2]|0,c[h+4>>2]|0,2,0)|0;j=u;c[j>>2]=h;c[j+4>>2]=C;while(1){j=u;b=c[j>>2]|0;j=c[j+4>>2]|0;e=t;h=c[m>>2]|0;h=gR(c[e>>2]|0,c[e+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0;if(!((b|0)==(h|0)&(j|0)==(C|0))){if(((c[o>>2]|0)==0?(h=u,e=c[h+4>>2]|0,j=t,b=c[j+4>>2]|0,(e|0)>(b|0)|((e|0)==(b|0)?(c[h>>2]|0)>>>0>(c[j>>2]|0)>>>0:0)):0)?(e=u,h=c[e>>2]|0,e=c[e+4>>2]|0,b=t,j=c[m>>2]|0,j=gR(c[b>>2]|0,c[b+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,b=C,(e|0)<(b|0)|(e|0)==(b|0)&h>>>0<=j>>>0):0)B=19}else B=19;if((B|0)==19){B=0;f=(c[n>>2]|0)!=0;e=t;b=u;j=f?c[e+4>>2]|0:c[b+4>>2]|0;h=w;c[h>>2]=f?c[e>>2]|0:c[b>>2]|0;c[h+4>>2]=j;h=w;h=gR(c[h>>2]|0,c[h+4>>2]|0,2,0)|0;Xm(x,v,h,C);h=v;h=fR(c[h>>2]|0,c[h+4>>2]|0,2,0)|0;j=v;c[j>>2]=h;c[j+4>>2]=C;c[A>>2]=0}if(!((c[n>>2]|0)==0?(e=u,h=c[e>>2]|0,e=c[e+4>>2]|0,b=t,j=c[m>>2]|0,j=gR(c[b>>2]|0,c[b+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,b=C,(e|0)<(b|0)|(e|0)==(b|0)&h>>>0<=j>>>0):0))B=22;if((B|0)==22?(B=0,h=u,e=c[h+4>>2]|0,j=t,b=c[j+4>>2]|0,!((e|0)<(b|0)|((e|0)==(b|0)?(c[h>>2]|0)>>>0<=(c[j>>2]|0)>>>0:0))):0){if(!(a[c[y>>2]>>0]&254))break;Wm(y,t);h=t;h=fR(c[h>>2]|0,c[h+4>>2]|0,2,0)|0;j=t;c[j>>2]=h;c[j+4>>2]=C;continue}if(!(a[c[z>>2]>>0]&254))break;Wm(z,u);h=u;h=fR(c[h>>2]|0,c[h+4>>2]|0,2,0)|0;j=u;c[j>>2]=h;c[j+4>>2]=C}if(c[A>>2]|0)c[x>>2]=c[A>>2];Tl(0,y);Tl(0,z);if(!(a[c[y>>2]>>0]|0))break;if(!(a[c[z>>2]>>0]|0))break;c[y>>2]=(c[y>>2]|0)+1;g=c[y>>2]|0;if(d[c[y>>2]>>0]&128)g=Vl(g,r)|0;else{c[r>>2]=d[g>>0];g=1}c[y>>2]=(c[y>>2]|0)+g;c[z>>2]=(c[z>>2]|0)+1;g=c[z>>2]|0;if(d[c[z>>2]>>0]&128)g=Vl(g,s)|0;else{c[s>>2]=d[g>>0];g=1}c[z>>2]=(c[z>>2]|0)+g}Zl(0,z);Zl(0,y);c[c[p>>2]>>2]=c[y>>2];c[c[q>>2]>>2]=c[z>>2];if((c[c[l>>2]>>2]|0)==(c[x>>2]|0)){c[k>>2]=0;B=c[k>>2]|0;i=D;return B|0}else{B=c[x>>2]|0;c[x>>2]=B+1;a[B>>0]=0;c[c[l>>2]>>2]=c[x>>2];c[k>>2]=1;B=c[k>>2]|0;i=D;return B|0}return 0}function Wm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+12|0;e=d+8|0;f=d;c[g>>2]=a;c[e>>2]=b;a=Ul(c[c[g>>2]>>2]|0,f)|0;b=c[g>>2]|0;c[b>>2]=(c[b>>2]|0)+a;b=f;a=c[e>>2]|0;e=a;b=gR(c[e>>2]|0,c[e+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;c[a>>2]=b;c[a+4>>2]=C;i=d;return}function Xm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f+12|0;g=f+8|0;h=f;c[j>>2]=a;c[g>>2]=b;a=h;c[a>>2]=d;c[a+4>>2]=e;e=c[c[j>>2]>>2]|0;a=h;b=c[g>>2]|0;b=fR(c[a>>2]|0,c[a+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;b=El(e,b,C)|0;e=c[j>>2]|0;c[e>>2]=(c[e>>2]|0)+b;e=h;b=c[e+4>>2]|0;a=c[g>>2]|0;c[a>>2]=c[e>>2];c[a+4>>2]=b;i=f;return}function Ym(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[(c[b>>2]|0)+8>>2]=0;c[(c[b>>2]|0)+28>>2]=1;c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[(c[b>>2]|0)+4>>2]|0))break;c[(c[(c[c[b>>2]>>2]|0)+(c[d>>2]<<2)>>2]|0)+80>>2]=0;c[(c[(c[c[b>>2]>>2]|0)+(c[d>>2]<<2)>>2]|0)+84>>2]=0;a=(c[(c[c[b>>2]>>2]|0)+(c[d>>2]<<2)>>2]|0)+88|0;c[a>>2]=0;c[a+4>>2]=0;c[d>>2]=(c[d>>2]|0)+1}i=e;return 0}function Zm(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+48|0;f=s+44|0;t=s+40|0;l=s+36|0;p=s+32|0;r=s+28|0;m=s+24|0;g=s+20|0;h=s+16|0;j=s+12|0;n=s+8|0;q=s+4|0;o=s;c[f>>2]=a;c[t>>2]=b;c[l>>2]=e;c[p>>2]=c[c[f>>2]>>2];c[r>>2]=0;c[g>>2]=0;if(((c[t>>2]|0)!=0?(d[(c[f>>2]|0)+52>>0]|0|0)==(d[(c[p>>2]|0)+231>>0]|0|0):0)?(c[(c[l>>2]|0)+64>>2]|0)<=4:0)b=(c[(c[l>>2]|0)+64>>2]|0)>0;else b=0;c[h>>2]=b&1;c[m>>2]=0;while(1){if((c[h>>2]|0)!=1)break;if((c[m>>2]|0)>=(c[(c[l>>2]|0)+64>>2]|0))break;c[j>>2]=(c[l>>2]|0)+72+((c[m>>2]|0)*24|0);if(!(c[(c[j>>2]|0)+12>>2]|0)){if((c[(c[j>>2]|0)+20>>2]|0)!=0?(c[(c[(c[j>>2]|0)+20>>2]|0)+36>>2]|0)==0:0)k=11}else k=11;if((k|0)==11){k=0;c[h>>2]=0}if(c[(c[j>>2]|0)+20>>2]|0)c[g>>2]=1;c[m>>2]=(c[m>>2]|0)+1}if(!((c[h>>2]|0)!=0&(c[g>>2]|0)!=0)){c[r>>2]=$m(c[f>>2]|0,c[l>>2]|0)|0;c[(c[l>>2]|0)+40>>2]=0;t=c[r>>2]|0;i=s;return t|0}if((c[(c[l>>2]|0)+68>>2]|0)>=(c[(c[p>>2]|0)+24>>2]|0))b=-1;else b=c[(c[l>>2]|0)+68>>2]|0;c[n>>2]=b;c[m>>2]=0;while(1){if(c[r>>2]|0)break;if((c[m>>2]|0)>=(c[(c[l>>2]|0)+64>>2]|0))break;c[q>>2]=(c[l>>2]|0)+72+((c[m>>2]|0)*24|0);c[o>>2]=c[(c[q>>2]|0)+20>>2];if(c[o>>2]|0)c[r>>2]=_m(c[p>>2]|0,c[o>>2]|0,c[n>>2]|0,c[c[q>>2]>>2]|0,c[(c[q>>2]|0)+4>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+1}c[(c[l>>2]|0)+40>>2]=1;t=c[r>>2]|0;i=s;return t|0}function _m(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;n=t+40|0;h=t+36|0;o=t+32|0;p=t+28|0;j=t+24|0;k=t+20|0;q=t+16|0;r=t+12|0;l=t+8|0;s=t+4|0;m=t;c[h>>2]=a;c[o>>2]=b;c[p>>2]=e;c[j>>2]=f;c[k>>2]=g;c[l>>2]=c[(c[o>>2]|0)+4>>2];c[s>>2]=(d[(c[h>>2]|0)+231>>0]|0|0)!=0?182:183;c[r>>2]=bm(c[h>>2]|0,c[o>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;if(c[r>>2]|0){c[n>>2]=c[r>>2];s=c[n>>2]|0;i=t;return s|0}c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[l>>2]|0))break;c[m>>2]=c[(c[c[o>>2]>>2]|0)+(c[q>>2]<<2)>>2];if(!(c[(c[m>>2]|0)+40>>2]|0))break;if(cm(c[m>>2]|0,c[j>>2]|0,c[k>>2]|0)|0)break;c[q>>2]=(c[q>>2]|0)+1}c[(c[o>>2]|0)+8>>2]=c[q>>2];c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[(c[o>>2]|0)+8>>2]|0)){h=13;break}c[r>>2]=Pl(c[h>>2]|0,c[(c[c[o>>2]>>2]|0)+(c[q>>2]<<2)>>2]|0)|0;if(c[r>>2]|0){h=11;break}c[q>>2]=(c[q>>2]|0)+1}if((h|0)==11){c[n>>2]=c[r>>2];s=c[n>>2]|0;i=t;return s|0}else if((h|0)==13){Nl(c[c[o>>2]>>2]|0,c[q>>2]|0,c[q>>2]|0,c[s>>2]|0);c[(c[o>>2]|0)+24>>2]=c[p>>2];c[n>>2]=0;s=c[n>>2]|0;i=t;return s|0}return 0}function $m(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;m=l+28|0;d=l+24|0;g=l+20|0;e=l+16|0;k=l+12|0;j=l+8|0;f=l+4|0;h=l;c[m>>2]=a;c[d>>2]=b;c[g>>2]=c[c[m>>2]>>2];c[k>>2]=0;c[e>>2]=0;while(1){if(c[k>>2]|0){d=8;break}if((c[e>>2]|0)>=(c[(c[d>>2]|0)+64>>2]|0)){d=8;break}c[j>>2]=(c[d>>2]|0)+72+((c[e>>2]|0)*24|0);if((c[(c[j>>2]|0)+20>>2]|0)!=0?(c[f>>2]=0,c[h>>2]=0,c[k>>2]=an(c[g>>2]|0,c[j>>2]|0,c[(c[d>>2]|0)+68>>2]|0,f,h)|0,(c[k>>2]|0)==0):0)c[k>>2]=bn(c[g>>2]|0,c[d>>2]|0,c[e>>2]|0,c[h>>2]|0,c[f>>2]|0)|0;c[e>>2]=(c[e>>2]|0)+1}if((d|0)==8){i=l;return c[k>>2]|0}return 0}function an(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+192|0;g=r+176|0;h=r+172|0;j=r+168|0;k=r+164|0;l=r+160|0;p=r+156|0;o=r+152|0;q=r+24|0;m=r+8|0;n=r;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[o>>2]=c[(c[h>>2]|0)+20>>2];d=q;a=d+128|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(a|0));c[m+12>>2]=3|((c[(c[h>>2]|0)+8>>2]|0)!=0?8:0)|((c[(c[h>>2]|0)+12>>2]|0)!=0?32:0)|((c[j>>2]|0)<(c[(c[g>>2]|0)+24>>2]|0)?4:0);c[m+8>>2]=c[j>>2];c[m>>2]=c[c[h>>2]>>2];c[m+4>>2]=c[(c[h>>2]|0)+4>>2];c[p>>2]=ol(c[g>>2]|0,c[o>>2]|0,m)|0;while(1){if(c[p>>2]|0)break;m=pl(c[g>>2]|0,c[o>>2]|0)|0;c[p>>2]=m;if(100!=(m|0))break;c[p>>2]=fn(c[g>>2]|0,q,c[(c[o>>2]|0)+48>>2]|0,c[(c[o>>2]|0)+52>>2]|0)|0}if(!(c[p>>2]|0))c[p>>2]=gn(c[g>>2]|0,q)|0;if(!(c[p>>2]|0)){c[c[l>>2]>>2]=c[q>>2];c[c[k>>2]>>2]=c[q+64>>2];q=c[o>>2]|0;hn(q);q=c[h>>2]|0;q=q+20|0;c[q>>2]=0;q=c[p>>2]|0;i=r;return q|0}c[n>>2]=0;while(1){if((c[n>>2]|0)>=16)break;Kd(c[q+(c[n>>2]<<2)>>2]|0);c[n>>2]=(c[n>>2]|0)+1}q=c[o>>2]|0;hn(q);q=c[h>>2]|0;q=q+20|0;c[q>>2]=0;q=c[p>>2]|0;i=r;return q|0}function bn(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;h=t+40|0;j=t+36|0;k=t+32|0;l=t+28|0;m=t+24|0;s=t+20|0;q=t+16|0;r=t+12|0;o=t+8|0;p=t+4|0;n=t;c[h>>2]=a;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[s>>2]=0;e=c[j>>2]|0;do if(!(c[l>>2]|0)){Kd(c[e>>2]|0);c[c[j>>2]>>2]=0;c[(c[j>>2]|0)+4>>2]=0}else{if((c[e+44>>2]|0)<0){c[c[j>>2]>>2]=c[l>>2];c[(c[j>>2]|0)+4>>2]=c[m>>2];break}if(!(c[c[j>>2]>>2]|0)){Kd(c[l>>2]|0);break}e=c[c[j>>2]>>2]|0;if((c[(c[j>>2]|0)+44>>2]|0)<(c[k>>2]|0)){c[q>>2]=e;c[o>>2]=c[(c[j>>2]|0)+4>>2];c[r>>2]=c[l>>2];c[p>>2]=c[m>>2];c[n>>2]=(c[k>>2]|0)-(c[(c[j>>2]|0)+44>>2]|0)}else{c[r>>2]=e;c[p>>2]=c[(c[j>>2]|0)+4>>2];c[q>>2]=c[l>>2];c[o>>2]=c[m>>2];c[n>>2]=(c[(c[j>>2]|0)+44>>2]|0)-(c[k>>2]|0)}c[s>>2]=cn(d[(c[h>>2]|0)+231>>0]|0,c[n>>2]|0,c[q>>2]|0,c[o>>2]|0,r,p)|0;Kd(c[q>>2]|0);c[c[j>>2]>>2]=c[r>>2];c[(c[j>>2]|0)+4>>2]=c[p>>2]}while(0);if((c[k>>2]|0)<=(c[(c[j>>2]|0)+44>>2]|0)){s=c[s>>2]|0;i=t;return s|0}c[(c[j>>2]|0)+44>>2]=c[k>>2];s=c[s>>2]|0;i=t;return s|0}function cn(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,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,D=0,E=0,F=0;D=i;i=i+112|0;h=D+104|0;j=D+100|0;k=D+96|0;E=D+92|0;F=D+88|0;l=D+84|0;m=D+80|0;r=D+32|0;s=D+24|0;u=D+16|0;o=D+76|0;z=D+72|0;A=D+68|0;x=D+64|0;y=D+60|0;w=D+56|0;p=D+52|0;n=D+48|0;t=D+8|0;B=D+44|0;v=D;q=D+40|0;c[j>>2]=a;c[k>>2]=b;c[E>>2]=d;c[F>>2]=e;c[l>>2]=f;c[m>>2]=g;g=r;c[g>>2]=0;c[g+4>>2]=0;g=s;c[g>>2]=0;c[g+4>>2]=0;g=u;c[g>>2]=0;c[g+4>>2]=0;c[o>>2]=c[c[l>>2]>>2];c[z>>2]=(c[E>>2]|0)+(c[F>>2]|0);c[A>>2]=(c[o>>2]|0)+(c[c[m>>2]>>2]|0);c[x>>2]=c[E>>2];c[y>>2]=c[o>>2];c[p>>2]=0;if(c[j>>2]|0){c[n>>2]=Id((c[c[m>>2]>>2]|0)+10|0)|0;if(!(c[n>>2]|0)){c[h>>2]=7;F=c[h>>2]|0;i=D;return F|0}}else c[n>>2]=c[o>>2];c[w>>2]=c[n>>2];dn(x,c[z>>2]|0,0,r);dn(y,c[A>>2]|0,0,s);while(1){if(!((c[x>>2]|0)!=0?(c[y>>2]|0)!=0:0))break;F=(c[j>>2]|0)!=0?-1:1;g=r;E=s;E=fR(c[g>>2]|0,c[g+4>>2]|0,c[E>>2]|0,c[E+4>>2]|0)|0;E=rR(F|0,((F|0)<0)<<31>>31|0,E|0,C|0)|0;F=t;c[F>>2]=E;c[F+4>>2]=C;F=t;if(!((c[F>>2]|0)==0&(c[F+4>>2]|0)==0))if((c[t+4>>2]|0)<0){Zl(0,x);dn(x,c[z>>2]|0,c[j>>2]|0,r);continue}else{Zl(0,y);dn(y,c[A>>2]|0,c[j>>2]|0,s);continue}else{c[B>>2]=c[w>>2];g=u;E=c[g+4>>2]|0;F=v;c[F>>2]=c[g>>2];c[F+4>>2]=E;c[q>>2]=c[p>>2];F=r;en(w,c[j>>2]|0,u,p,c[F>>2]|0,c[F+4>>2]|0);if(!(Vm(w,c[k>>2]|0,0,1,x,y)|0)){c[w>>2]=c[B>>2];g=v;E=c[g+4>>2]|0;F=u;c[F>>2]=c[g>>2];c[F+4>>2]=E;c[p>>2]=c[q>>2]}dn(x,c[z>>2]|0,c[j>>2]|0,r);dn(y,c[A>>2]|0,c[j>>2]|0,s);continue}}c[c[m>>2]>>2]=(c[w>>2]|0)-(c[n>>2]|0);if(c[j>>2]|0){Kd(c[o>>2]|0);c[c[l>>2]>>2]=c[n>>2]}c[h>>2]=0;F=c[h>>2]|0;i=D;return F|0}function dn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;f=k+20|0;l=k+16|0;j=k+12|0;h=k+8|0;g=k;c[f>>2]=a;c[l>>2]=b;c[j>>2]=d;c[h>>2]=e;d=c[f>>2]|0;if((c[c[f>>2]>>2]|0)>>>0>=(c[l>>2]|0)>>>0){c[d>>2]=0;i=k;return}a=Ul(c[d>>2]|0,g)|0;f=c[f>>2]|0;c[f>>2]=(c[f>>2]|0)+a;f=g;a=c[f>>2]|0;f=c[f+4>>2]|0;d=c[h>>2]|0;e=d;b=c[e>>2]|0;e=c[e+4>>2]|0;if(c[j>>2]|0){j=fR(b|0,e|0,a|0,f|0)|0;l=d;c[l>>2]=j;c[l+4>>2]=C;i=k;return}else{j=gR(b|0,e|0,a|0,f|0)|0;l=d;c[l>>2]=j;c[l+4>>2]=C;i=k;return}}function en(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,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;h=n+28|0;o=n+24|0;j=n+20|0;k=n+16|0;l=n+8|0;m=n;c[h>>2]=a;c[o>>2]=b;c[j>>2]=d;c[k>>2]=e;a=l;c[a>>2]=f;c[a+4>>2]=g;if((c[o>>2]|0)!=0?(c[c[k>>2]>>2]|0)!=0:0){o=c[j>>2]|0;a=l;a=fR(c[o>>2]|0,c[o+4>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;o=m;c[o>>2]=a;c[o+4>>2]=C}else{o=l;a=c[j>>2]|0;a=fR(c[o>>2]|0,c[o+4>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;o=m;c[o>>2]=a;c[o+4>>2]=C}a=m;a=El(c[c[h>>2]>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;d=c[h>>2]|0;c[d>>2]=(c[d>>2]|0)+a;d=l;a=c[d+4>>2]|0;o=c[j>>2]|0;c[o>>2]=c[d>>2];c[o+4>>2]=a;c[c[k>>2]>>2]=1;i=n;return}function fn(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;h=t+40|0;j=t+36|0;k=t+32|0;l=t+28|0;g=t+24|0;m=t+20|0;p=t+16|0;o=t+12|0;n=t+8|0;q=t+4|0;r=t;c[j>>2]=a;c[k>>2]=b;c[l>>2]=e;c[g>>2]=f;a:do if(!(c[c[k>>2]>>2]|0)){s=Id((c[g>>2]|0)+10+1|0)|0;c[c[k>>2]>>2]=s;c[(c[k>>2]|0)+64>>2]=c[g>>2];if(c[c[k>>2]>>2]|0){iR(c[c[k>>2]>>2]|0,c[l>>2]|0,c[g>>2]|0)|0;break}c[h>>2]=7;s=c[h>>2]|0;i=t;return s|0}else{c[m>>2]=c[l>>2];c[p>>2]=c[g>>2];c[o>>2]=0;while(1){if((c[o>>2]|0)>=16)break a;if(!(c[(c[k>>2]|0)+(c[o>>2]<<2)>>2]|0)){s=8;break}c[r>>2]=jn(d[(c[j>>2]|0)+231>>0]|0,c[m>>2]|0,c[p>>2]|0,c[(c[k>>2]|0)+(c[o>>2]<<2)>>2]|0,c[(c[k>>2]|0)+64+(c[o>>2]<<2)>>2]|0,n,q)|0;g=(c[m>>2]|0)!=(c[l>>2]|0);if(c[r>>2]|0)break;if(g)Kd(c[m>>2]|0);Kd(c[(c[k>>2]|0)+(c[o>>2]<<2)>>2]|0);c[(c[k>>2]|0)+(c[o>>2]<<2)>>2]=0;c[m>>2]=c[n>>2];c[p>>2]=c[q>>2];if(((c[o>>2]|0)+1|0)==16){c[(c[k>>2]|0)+(c[o>>2]<<2)>>2]=c[m>>2];c[(c[k>>2]|0)+64+(c[o>>2]<<2)>>2]=c[p>>2]}c[o>>2]=(c[o>>2]|0)+1}if((s|0)==8){c[(c[k>>2]|0)+(c[o>>2]<<2)>>2]=c[m>>2];c[(c[k>>2]|0)+64+(c[o>>2]<<2)>>2]=c[p>>2];break}if(g)Kd(c[m>>2]|0);c[h>>2]=c[r>>2];s=c[h>>2]|0;i=t;return s|0}while(0);c[h>>2]=0;s=c[h>>2]|0;i=t;return s|0}function gn(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;j=o+32|0;e=o+28|0;k=o+24|0;l=o+20|0;m=o+16|0;g=o+12|0;h=o+8|0;f=o+4|0;n=o;c[e>>2]=a;c[k>>2]=b;c[l>>2]=0;c[m>>2]=0;c[g>>2]=0;a:while(1){if((c[g>>2]|0)>=16){e=10;break}do if(c[(c[k>>2]|0)+(c[g>>2]<<2)>>2]|0){if(!(c[l>>2]|0)){c[l>>2]=c[(c[k>>2]|0)+(c[g>>2]<<2)>>2];c[m>>2]=c[(c[k>>2]|0)+64+(c[g>>2]<<2)>>2];c[(c[k>>2]|0)+(c[g>>2]<<2)>>2]=0;break}c[n>>2]=jn(d[(c[e>>2]|0)+231>>0]|0,c[(c[k>>2]|0)+(c[g>>2]<<2)>>2]|0,c[(c[k>>2]|0)+64+(c[g>>2]<<2)>>2]|0,c[l>>2]|0,c[m>>2]|0,f,h)|0;if(c[n>>2]|0){e=7;break a}Kd(c[(c[k>>2]|0)+(c[g>>2]<<2)>>2]|0);Kd(c[l>>2]|0);c[(c[k>>2]|0)+(c[g>>2]<<2)>>2]=0;c[l>>2]=c[f>>2];c[m>>2]=c[h>>2]}while(0);c[g>>2]=(c[g>>2]|0)+1}if((e|0)==7){Kd(c[l>>2]|0);c[j>>2]=c[n>>2];n=c[j>>2]|0;i=o;return n|0}else if((e|0)==10){c[c[k>>2]>>2]=c[l>>2];c[(c[k>>2]|0)+64>>2]=c[m>>2];c[j>>2]=0;n=c[j>>2]|0;i=o;return n|0}return 0}function hn(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;vl(c[d>>2]|0);Kd(c[d>>2]|0);i=b;return}function jn(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 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,D=0;y=i;i=i+96|0;j=y+88|0;k=y+84|0;D=y+80|0;A=y+76|0;B=y+72|0;z=y+68|0;l=y+64|0;m=y+60|0;p=y+24|0;q=y+16|0;s=y+8|0;w=y+56|0;x=y+52|0;u=y+48|0;v=y+44|0;t=y+40|0;n=y+36|0;o=y+32|0;r=y;c[k>>2]=a;c[D>>2]=b;c[A>>2]=d;c[B>>2]=e;c[z>>2]=f;c[l>>2]=g;c[m>>2]=h;h=p;c[h>>2]=0;c[h+4>>2]=0;h=q;c[h>>2]=0;c[h+4>>2]=0;h=s;c[h>>2]=0;c[h+4>>2]=0;c[w>>2]=(c[D>>2]|0)+(c[A>>2]|0);c[x>>2]=(c[B>>2]|0)+(c[z>>2]|0);c[u>>2]=c[D>>2];c[v>>2]=c[B>>2];c[o>>2]=0;c[c[l>>2]>>2]=0;c[c[m>>2]>>2]=0;c[n>>2]=Id((c[A>>2]|0)+(c[z>>2]|0)+10-1|0)|0;if(!(c[n>>2]|0)){c[j>>2]=7;D=c[j>>2]|0;i=y;return D|0}c[t>>2]=c[n>>2];dn(u,c[w>>2]|0,0,p);dn(v,c[x>>2]|0,0,q);while(1){if(!((c[u>>2]|0)!=0?1:(c[v>>2]|0)!=0))break;D=(c[k>>2]|0)!=0?-1:1;A=p;B=q;B=fR(c[A>>2]|0,c[A+4>>2]|0,c[B>>2]|0,c[B+4>>2]|0)|0;B=rR(D|0,((D|0)<0)<<31>>31|0,B|0,C|0)|0;D=r;c[D>>2]=B;c[D+4>>2]=C;D=r;if((c[v>>2]|0)!=0&(c[u>>2]|0)!=0&((c[D>>2]|0)==0&(c[D+4>>2]|0)==0)){D=p;en(t,c[k>>2]|0,s,o,c[D>>2]|0,c[D+4>>2]|0);kn(t,u,v);dn(u,c[w>>2]|0,c[k>>2]|0,p);dn(v,c[x>>2]|0,c[k>>2]|0,q);continue}if((c[v>>2]|0)!=0?!((c[u>>2]|0)!=0&(c[r+4>>2]|0)<0):0){D=q;en(t,c[k>>2]|0,s,o,c[D>>2]|0,c[D+4>>2]|0);Zl(t,v);dn(v,c[x>>2]|0,c[k>>2]|0,q);continue}D=p;en(t,c[k>>2]|0,s,o,c[D>>2]|0,c[D+4>>2]|0);Zl(t,u);dn(u,c[w>>2]|0,c[k>>2]|0,p)}c[c[l>>2]>>2]=c[n>>2];c[c[m>>2]>>2]=(c[t>>2]|0)-(c[n>>2]|0);c[j>>2]=0;D=c[j>>2]|0;i=y;return D|0}function kn(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=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;t=i;i=i+64|0;g=t+56|0;h=t+52|0;j=t+48|0;q=t+44|0;r=t+40|0;s=t+36|0;m=t+32|0;n=t+28|0;k=t+16|0;l=t+8|0;o=t;p=t+24|0;c[g>>2]=b;c[h>>2]=e;c[j>>2]=f;c[q>>2]=c[c[g>>2]>>2];c[r>>2]=c[c[h>>2]>>2];c[s>>2]=c[c[j>>2]>>2];a:while(1){if((a[c[r>>2]>>0]|0)==0?(a[c[s>>2]>>0]|0)==0:0)break;b=c[r>>2]|0;do if((a[c[r>>2]>>0]|0)==1){e=(c[r>>2]|0)+1|0;if(d[b+1>>0]&128){Vl(e,m)|0;break}else{c[m>>2]=d[e>>0];break}}else if(!(a[b>>0]|0)){c[m>>2]=2147483647;break}else{c[m>>2]=0;break}while(0);b=c[s>>2]|0;do if((a[c[s>>2]>>0]|0)==1){e=(c[s>>2]|0)+1|0;if(d[b+1>>0]&128){Vl(e,n)|0;break}else{c[n>>2]=d[e>>0];break}}else if(!(a[b>>0]|0)){c[n>>2]=2147483647;break}else{c[n>>2]=0;break}while(0);if((c[m>>2]|0)!=(c[n>>2]|0))if((c[m>>2]|0)<(c[n>>2]|0)){f=ln(q,c[m>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+f;Tl(q,r);continue}else{f=ln(q,c[n>>2]|0)|0;c[s>>2]=(c[s>>2]|0)+f;Tl(q,s);continue}f=k;c[f>>2]=0;c[f+4>>2]=0;f=l;c[f>>2]=0;c[f+4>>2]=0;f=o;c[f>>2]=0;c[f+4>>2]=0;c[p>>2]=ln(q,c[m>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+(c[p>>2]|0);c[s>>2]=(c[s>>2]|0)+(c[p>>2]|0);Wm(r,k);Wm(s,l);while(1){e=k;u=c[e+4>>2]|0;b=l;f=c[b+4>>2]|0;b=(u|0)<(f|0)|((u|0)==(f|0)?(c[e>>2]|0)>>>0<(c[b>>2]|0)>>>0:0);e=k;f=l;Xm(q,o,b?c[e>>2]|0:c[f>>2]|0,b?c[e+4>>2]|0:c[f+4>>2]|0);f=o;f=fR(c[f>>2]|0,c[f+4>>2]|0,2,0)|0;e=o;c[e>>2]=f;c[e+4>>2]=C;e=k;f=l;do if(!((c[e>>2]|0)==(c[f>>2]|0)?(c[e+4>>2]|0)==(c[f+4>>2]|0):0)){f=k;b=c[f+4>>2]|0;u=l;e=c[u+4>>2]|0;if((b|0)<(e|0)|((b|0)==(e|0)?(c[f>>2]|0)>>>0<(c[u>>2]|0)>>>0:0)){mn(r,k);break}else{mn(s,l);break}}else{mn(r,k);mn(s,l)}while(0);f=k;u=l;if(!((c[f>>2]|0)!=2147483647|(c[f+4>>2]|0)!=0?1:(c[u>>2]|0)!=2147483647|(c[u+4>>2]|0)!=0))continue a}}u=c[q>>2]|0;c[q>>2]=u+1;a[u>>0]=0;c[c[g>>2]>>2]=c[q>>2];c[c[h>>2]>>2]=(c[r>>2]|0)+1;c[c[j>>2]>>2]=(c[s>>2]|0)+1;i=t;return}function ln(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=b;c[f>>2]=d;c[g>>2]=0;if(!(c[f>>2]|0)){b=c[g>>2]|0;i=j;return b|0}c[h>>2]=c[c[e>>2]>>2];b=c[f>>2]|0;c[g>>2]=1+(El((c[h>>2]|0)+1|0,b,((b|0)<0)<<31>>31)|0);a[c[h>>2]>>0]=1;c[c[e>>2]>>2]=(c[h>>2]|0)+(c[g>>2]|0);b=c[g>>2]|0;i=j;return b|0}function mn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=b;c[f>>2]=d;if(a[c[c[e>>2]>>2]>>0]&254){Wm(c[e>>2]|0,c[f>>2]|0);b=c[f>>2]|0;d=b;d=fR(c[d>>2]|0,c[d+4>>2]|0,2,0)|0;c[b>>2]=d;c[b+4>>2]=C;i=g;return}else{b=c[f>>2]|0;c[b>>2]=2147483647;c[b+4>>2]=0;i=g;return}}function nn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[f>>2]=b;c[g>>2]=d;c[j>>2]=0;if((a[(c[g>>2]|0)+7>>0]|0)!=0?(c[h>>2]=0,c[j>>2]=zn(c[g>>2]|0,h)|0,(c[j>>2]|0)==0):0){h=(c[g>>2]|0)+32|0;Me(c[(c[g>>2]|0)+8>>2]|0,1,c[h>>2]|0,c[h+4>>2]|0)|0;a[(c[g>>2]|0)+7>>0]=0;if(100==(ue(c[(c[g>>2]|0)+8>>2]|0)|0)){c[e>>2]=0;j=c[e>>2]|0;i=k;return j|0}c[j>>2]=Zd(c[(c[g>>2]|0)+8>>2]|0)|0;if((c[j>>2]|0)==0?(c[(c[c[g>>2]>>2]|0)+40>>2]|0)==0:0){c[j>>2]=267;a[(c[g>>2]|0)+6>>0]=1}}if((c[j>>2]|0)!=0&(c[f>>2]|0)!=0)re(c[f>>2]|0,c[j>>2]|0);c[e>>2]=c[j>>2];j=c[e>>2]|0;i=k;return j|0}function on(a){a=a|0;var b=0,e=0,f=0,g=0,h=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;v=i;i=i+80|0;b=v+64|0;r=v+60|0;e=v+56|0;f=v;m=v+52|0;l=v+48|0;p=v+44|0;n=v+40|0;s=v+36|0;q=v+32|0;t=v+28|0;k=v+24|0;g=v+20|0;h=v+16|0;j=v+12|0;o=v+8|0;c[b>>2]=a;c[r>>2]=0;if(!(c[(c[b>>2]|0)+24>>2]|0)){u=c[r>>2]|0;i=v;return u|0}c[l>>2]=c[c[b>>2]>>2];c[p>>2]=c[(c[l>>2]|0)+36>>2];c[n>>2]=c[c[p>>2]>>2];w=Ee(c[(c[b>>2]|0)+8>>2]|0,0)|0;a=f;c[a>>2]=w;c[a+4>>2]=C;c[e>>2]=0;while(1){if(!((c[e>>2]|0)<(c[(c[l>>2]|0)+24>>2]|0)?(c[r>>2]|0)==0:0))break;if(!(d[(c[(c[l>>2]|0)+32>>2]|0)+(c[e>>2]|0)>>0]|0)){c[s>>2]=Fe(c[(c[b>>2]|0)+8>>2]|0,(c[e>>2]|0)+1|0)|0;c[q>>2]=0;c[r>>2]=wn(c[p>>2]|0,c[(c[b>>2]|0)+16>>2]|0,c[s>>2]|0,-1,q)|0;a:while(1){if(c[r>>2]|0)break;c[k>>2]=0;c[g>>2]=0;c[h>>2]=0;c[j>>2]=0;c[r>>2]=Sb[c[(c[n>>2]|0)+20>>2]&255](c[q>>2]|0,t,k,g,h,j)|0;c[m>>2]=c[(c[b>>2]|0)+24>>2];while(1){if(!((c[m>>2]|0)!=0?(c[r>>2]|0)==0:0))continue a;c[o>>2]=c[c[m>>2]>>2];if(!((c[(c[m>>2]|0)+4>>2]|0)<(c[(c[l>>2]|0)+24>>2]|0)?(c[(c[m>>2]|0)+4>>2]|0)!=(c[e>>2]|0):0))u=11;do if((u|0)==11?(u=0,(c[j>>2]|0)==0?1:(c[(c[o>>2]|0)+12>>2]|0)==0):0){if((c[(c[o>>2]|0)+4>>2]|0)!=(c[k>>2]|0)){if(!(c[(c[o>>2]|0)+8>>2]|0))break;if((c[(c[o>>2]|0)+4>>2]|0)>=(c[k>>2]|0))break}if(!(vQ(c[t>>2]|0,c[c[o>>2]>>2]|0,c[(c[o>>2]|0)+4>>2]|0)|0)){x=f;a=c[e>>2]|0;w=c[j>>2]|0;xn((c[m>>2]|0)+12|0,c[x>>2]|0,c[x+4>>2]|0,a,((a|0)<0)<<31>>31,w,((w|0)<0)<<31>>31,r)|0}}while(0);c[m>>2]=c[(c[m>>2]|0)+8>>2]}}if(c[q>>2]|0)Tb[c[(c[n>>2]|0)+16>>2]&255](c[q>>2]|0)|0;if((c[r>>2]|0)==101)c[r>>2]=0}c[e>>2]=(c[e>>2]|0)+1}c[m>>2]=c[(c[b>>2]|0)+24>>2];while(1){if(!((c[m>>2]|0)!=0?(c[r>>2]|0)==0:0))break;if(c[(c[m>>2]|0)+12>>2]|0)c[r>>2]=yn((c[m>>2]|0)+12|0,0,0)|0;c[m>>2]=c[(c[m>>2]|0)+8>>2]}x=c[r>>2]|0;i=v;return x|0}function pn(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;m=p+28|0;l=p+24|0;g=p+20|0;o=p+16|0;n=p+12|0;h=p+8|0;j=p+4|0;k=p;c[m>>2]=b;c[l>>2]=e;c[g>>2]=f;c[o>>2]=1;if(c[c[g>>2]>>2]|0){o=c[o>>2]|0;i=p;return o|0}switch(c[c[l>>2]>>2]|0){case 3:case 1:{if((pn(c[m>>2]|0,c[(c[l>>2]|0)+12>>2]|0,c[g>>2]|0)|0)!=0?(pn(c[m>>2]|0,c[(c[l>>2]|0)+16>>2]|0,c[g>>2]|0)|0)!=0:0)g=(rn(c[l>>2]|0,c[g>>2]|0)|0)!=0;else g=0;c[o>>2]=g&1;if(c[o>>2]|0){o=c[o>>2]|0;i=p;return o|0}if((c[c[l>>2]>>2]|0)!=1){o=c[o>>2]|0;i=p;return o|0}if((c[(c[l>>2]|0)+8>>2]|0)!=0?(c[c[(c[l>>2]|0)+8>>2]>>2]|0)==1:0){o=c[o>>2]|0;i=p;return o|0}c[n>>2]=c[l>>2];while(1){g=c[n>>2]|0;if(c[(c[n>>2]|0)+20>>2]|0)break;f=(c[g+16>>2]|0)+24|0;l=(c[m>>2]|0)+32|0;if((c[f>>2]|0)==(c[l>>2]|0)?(c[f+4>>2]|0)==(c[l+4>>2]|0):0)Pm(c[(c[(c[n>>2]|0)+16>>2]|0)+20>>2]|0);c[n>>2]=c[(c[n>>2]|0)+12>>2]}l=g+24|0;m=(c[m>>2]|0)+32|0;if(!((c[l>>2]|0)==(c[m>>2]|0)?(c[l+4>>2]|0)==(c[m+4>>2]|0):0)){o=c[o>>2]|0;i=p;return o|0}Pm(c[(c[n>>2]|0)+20>>2]|0);o=c[o>>2]|0;i=p;return o|0}case 4:{c[h>>2]=pn(c[m>>2]|0,c[(c[l>>2]|0)+12>>2]|0,c[g>>2]|0)|0;c[j>>2]=pn(c[m>>2]|0,c[(c[l>>2]|0)+16>>2]|0,c[g>>2]|0)|0;c[o>>2]=((c[h>>2]|0)!=0?1:(c[j>>2]|0)!=0)&1;o=c[o>>2]|0;i=p;return o|0}case 2:{if(pn(c[m>>2]|0,c[(c[l>>2]|0)+12>>2]|0,c[g>>2]|0)|0)g=(pn(c[m>>2]|0,c[(c[l>>2]|0)+16>>2]|0,c[g>>2]|0)|0)!=0^1;else g=0;c[o>>2]=g&1;o=c[o>>2]|0;i=p;return o|0}default:{do if(c[(c[m>>2]|0)+24>>2]|0){f=(c[l>>2]|0)+24|0;n=(c[m>>2]|0)+32|0;if(!((c[f>>2]|0)==(c[n>>2]|0)?(c[f+4>>2]|0)==(c[n+4>>2]|0):0)?(d[(c[l>>2]|0)+34>>0]|0)==0:0)break;c[k>>2]=c[(c[l>>2]|0)+20>>2];if(a[(c[l>>2]|0)+34>>0]|0)Pm(c[k>>2]|0);f=sn(c[m>>2]|0,c[k>>2]|0)|0;c[c[g>>2]>>2]=f;c[o>>2]=(c[(c[k>>2]|0)+28>>2]|0)!=0&1;f=(c[m>>2]|0)+32|0;m=c[f+4>>2]|0;n=(c[l>>2]|0)+24|0;c[n>>2]=c[f>>2];c[n+4>>2]=m;o=c[o>>2]|0;i=p;return o|0}while(0);if(!(d[(c[l>>2]|0)+32>>0]|0)){n=(c[l>>2]|0)+24|0;g=(c[m>>2]|0)+32|0;g=(c[n>>2]|0)==(c[g>>2]|0)?(c[n+4>>2]|0)==(c[g+4>>2]|0):0}else g=0;c[o>>2]=g&1;o=c[o>>2]|0;i=p;return o|0; -}}return 0}function qn(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=c[(c[e>>2]|0)+24>>2];while(1){if(!(c[b>>2]|0))break;el(c[(c[b>>2]|0)+12>>2]|0);c[(c[b>>2]|0)+12>>2]=0;c[b>>2]=c[(c[b>>2]|0)+8>>2]}i=d;return}function rn(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;e=r+44|0;f=r+40|0;q=r+36|0;o=r+32|0;h=r+28|0;l=r+24|0;k=r+20|0;n=r+16|0;j=r+12|0;g=r+8|0;m=r+4|0;p=r;c[e>>2]=a;c[f>>2]=b;c[q>>2]=1;if(c[c[f>>2]>>2]|0){q=c[q>>2]|0;i=r;return q|0}if((c[c[e>>2]>>2]|0)!=1){q=c[q>>2]|0;i=r;return q|0}if(d[(c[e>>2]|0)+32>>0]|0){q=c[q>>2]|0;i=r;return q|0}if((c[(c[e>>2]|0)+8>>2]|0)!=0?(c[c[(c[e>>2]|0)+8>>2]>>2]|0)==1:0){q=c[q>>2]|0;i=r;return q|0}c[h>>2]=0;c[o>>2]=c[e>>2];while(1){a=c[o>>2]|0;if(!(c[(c[o>>2]|0)+12>>2]|0))break;c[h>>2]=(c[h>>2]|0)+(c[(c[(c[a+16>>2]|0)+20>>2]|0)+32>>2]|0);c[o>>2]=c[(c[o>>2]|0)+12>>2]}c[h>>2]=(c[h>>2]|0)+(c[(c[a+20>>2]|0)+32>>2]|0);if(!(c[h>>2]|0)){c[q>>2]=0;q=c[q>>2]|0;i=r;return q|0}c[l>>2]=Id(c[h>>2]<<1)|0;a:do if(c[l>>2]|0){c[k>>2]=c[(c[(c[o>>2]|0)+20>>2]|0)+28>>2];c[n>>2]=c[(c[(c[o>>2]|0)+20>>2]|0)+64>>2];c[o>>2]=c[(c[o>>2]|0)+8>>2];while(1){if(!((c[q>>2]|0)!=0&(c[o>>2]|0)!=0))break;if((c[c[o>>2]>>2]|0)!=1)break;c[j>>2]=c[(c[(c[o>>2]|0)+16>>2]|0)+20>>2];c[g>>2]=c[(c[o>>2]|0)+4>>2];c[q>>2]=un(c[g>>2]|0,c[l>>2]|0,k,n,c[j>>2]|0)|0;c[o>>2]=c[(c[o>>2]|0)+8>>2]}c[k>>2]=c[(c[(c[(c[e>>2]|0)+16>>2]|0)+20>>2]|0)+28>>2];c[n>>2]=c[(c[(c[(c[e>>2]|0)+16>>2]|0)+20>>2]|0)+64>>2];c[o>>2]=c[(c[e>>2]|0)+12>>2];while(1){if(!((c[o>>2]|0)!=0?(c[q>>2]|0)!=0:0))break a;c[m>>2]=c[(c[(c[o>>2]|0)+8>>2]|0)+4>>2];a=c[o>>2]|0;if((c[c[o>>2]>>2]|0)==1)a=c[(c[a+16>>2]|0)+20>>2]|0;else a=c[a+20>>2]|0;c[p>>2]=a;c[q>>2]=un(c[m>>2]|0,c[l>>2]|0,k,n,c[p>>2]|0)|0;c[o>>2]=c[(c[o>>2]|0)+12>>2]}}else{c[c[f>>2]>>2]=7;c[q>>2]=0}while(0);Kd(c[l>>2]|0);q=c[q>>2]|0;i=r;return q|0}function sn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=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;y=i;i=i+80|0;m=y+76|0;n=y+72|0;o=y+68|0;e=y+64|0;q=y+60|0;u=y+56|0;r=y+52|0;l=y+48|0;j=y+44|0;k=y+40|0;f=y+36|0;x=y+32|0;d=y+28|0;g=y+24|0;h=y+20|0;t=y+16|0;s=y+12|0;v=y+8|0;w=y+4|0;p=y;c[n>>2]=a;c[o>>2]=b;c[q>>2]=0;c[u>>2]=0;c[r>>2]=-1;c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[o>>2]|0)+64>>2]|0)){a=14;break}c[l>>2]=(c[o>>2]|0)+72+((c[e>>2]|0)*24|0);c[j>>2]=c[(c[l>>2]|0)+16>>2];if(c[j>>2]|0){c[x>>2]=tn(c[j>>2]|0,k,f)|0;if(c[x>>2]|0){a=5;break}b=c[q>>2]|0;if(!(c[k>>2]|0)){a=7;break}a=c[k>>2]|0;if(b){c[d>>2]=a;c[g>>2]=c[q>>2];c[h>>2]=c[d>>2];Vm(d,(c[e>>2]|0)-(c[r>>2]|0)|0,0,1,g,h)|0;Kd(c[q>>2]|0);c[q>>2]=c[k>>2];c[u>>2]=(c[d>>2]|0)-(c[q>>2]|0);if(!(c[u>>2]|0)){a=11;break}}else{c[q>>2]=a;c[u>>2]=c[f>>2]}c[r>>2]=c[e>>2]}c[e>>2]=(c[e>>2]|0)+1}if((a|0)==5){c[m>>2]=c[x>>2];x=c[m>>2]|0;i=y;return x|0}else if((a|0)==7){Kd(b);c[(c[o>>2]|0)+28>>2]=0;c[(c[o>>2]|0)+32>>2]=0;c[m>>2]=0;x=c[m>>2]|0;i=y;return x|0}else if((a|0)==11){Kd(c[q>>2]|0);c[(c[o>>2]|0)+28>>2]=0;c[(c[o>>2]|0)+32>>2]=0;c[m>>2]=0;x=c[m>>2]|0;i=y;return x|0}else if((a|0)==14){do if((c[r>>2]|0)>=0){c[t>>2]=c[(c[o>>2]|0)+44>>2];if((c[t>>2]|0)<0){c[(c[o>>2]|0)+28>>2]=c[q>>2];c[(c[o>>2]|0)+32>>2]=c[u>>2];v=(c[n>>2]|0)+32|0;w=c[v+4>>2]|0;x=(c[o>>2]|0)+16|0;c[x>>2]=c[v>>2];c[x+4>>2]=w;c[(c[o>>2]|0)+24>>2]=1;break}if((c[t>>2]|0)>(c[r>>2]|0)){c[v>>2]=c[q>>2];c[w>>2]=c[(c[o>>2]|0)+28>>2];c[s>>2]=(c[t>>2]|0)-(c[r>>2]|0)}else{c[v>>2]=c[(c[o>>2]|0)+28>>2];c[w>>2]=c[q>>2];c[s>>2]=(c[r>>2]|0)-(c[t>>2]|0)}c[p>>2]=Id((c[u>>2]|0)+8|0)|0;if(!(c[p>>2]|0)){Kd(c[q>>2]|0);c[m>>2]=7;x=c[m>>2]|0;i=y;return x|0}c[(c[o>>2]|0)+28>>2]=c[p>>2];if(Vm(p,c[s>>2]|0,0,1,v,w)|0){c[(c[o>>2]|0)+24>>2]=1;c[(c[o>>2]|0)+32>>2]=(c[p>>2]|0)-(c[(c[o>>2]|0)+28>>2]|0)}else{Kd(c[p>>2]|0);c[(c[o>>2]|0)+28>>2]=0;c[(c[o>>2]|0)+32>>2]=0}Kd(c[q>>2]|0)}while(0);c[m>>2]=0;x=c[m>>2]|0;i=y;return x|0}return 0}function tn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+28|0;f=l+24|0;g=l+20|0;h=l+16|0;k=l+12|0;j=l+8|0;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[c[g>>2]>>2]=0;c[c[h>>2]>>2]=0;if(!(c[(c[f>>2]|0)+12>>2]|0)){c[e>>2]=0;b=c[e>>2]|0;i=l;return b|0}c[k>>2]=Id(c[c[(c[f>>2]|0)+12>>2]>>2]|0)|0;if(c[k>>2]|0){c[j>>2]=Ul(c[(c[(c[f>>2]|0)+12>>2]|0)+4>>2]|0,l)|0;c[c[h>>2]>>2]=(c[c[(c[f>>2]|0)+12>>2]>>2]|0)-(c[j>>2]|0);c[c[g>>2]>>2]=c[k>>2];iR(c[k>>2]|0,(c[(c[(c[f>>2]|0)+12>>2]|0)+4>>2]|0)+(c[j>>2]|0)|0,c[c[h>>2]>>2]|0)|0;c[e>>2]=0;b=c[e>>2]|0;i=l;return b|0}else{c[e>>2]=7;b=c[e>>2]|0;i=l;return b|0}return 0}function un(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;n=i;i=i+48|0;s=n+40|0;r=n+36|0;g=n+32|0;h=n+28|0;j=n+24|0;q=n+20|0;p=n+16|0;k=n+12|0;o=n+8|0;l=n+4|0;m=n;c[s>>2]=a;c[r>>2]=b;c[g>>2]=d;c[h>>2]=e;c[j>>2]=f;c[q>>2]=(c[s>>2]|0)+(c[(c[j>>2]|0)+64>>2]|0);c[p>>2]=(c[s>>2]|0)+(c[c[h>>2]>>2]|0);e=c[(c[j>>2]|0)+28>>2]|0;c[l>>2]=e;c[o>>2]=e;c[m>>2]=vn(l,c[r>>2]|0,c[q>>2]|0,c[p>>2]|0,c[g>>2]|0,o)|0;if(!(c[m>>2]|0)){s=c[m>>2]|0;i=n;return s|0}c[k>>2]=(c[l>>2]|0)-(c[(c[j>>2]|0)+28>>2]|0)-1;kR((c[(c[j>>2]|0)+28>>2]|0)+(c[k>>2]|0)|0,0,(c[(c[j>>2]|0)+32>>2]|0)-(c[k>>2]|0)|0)|0;c[(c[j>>2]|0)+32>>2]=c[k>>2];c[c[g>>2]>>2]=c[(c[j>>2]|0)+28>>2];c[c[h>>2]>>2]=c[(c[j>>2]|0)+64>>2];s=c[m>>2]|0;i=n;return s|0}function vn(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;o=i;i=i+48|0;h=o+44|0;j=o+40|0;u=o+36|0;r=o+32|0;p=o+28|0;q=o+24|0;t=o+20|0;s=o+16|0;l=o+12|0;m=o+8|0;k=o+4|0;n=o;c[h>>2]=a;c[j>>2]=b;c[u>>2]=d;c[r>>2]=e;c[p>>2]=f;c[q>>2]=g;c[t>>2]=c[c[p>>2]>>2];c[s>>2]=c[c[q>>2]>>2];c[l>>2]=c[j>>2];c[n>>2]=1;Vm(l,c[u>>2]|0,0,0,c[p>>2]|0,c[q>>2]|0)|0;g=c[l>>2]|0;c[m>>2]=g;c[k>>2]=g;c[c[p>>2]>>2]=c[t>>2];c[c[q>>2]>>2]=c[s>>2];Vm(m,c[r>>2]|0,1,0,c[q>>2]|0,c[p>>2]|0)|0;if((c[l>>2]|0)!=(c[j>>2]|0)?(c[m>>2]|0)!=(c[k>>2]|0):0){kn(c[h>>2]|0,j,k);u=c[n>>2]|0;i=o;return u|0}if((c[l>>2]|0)!=(c[j>>2]|0)){Zl(c[h>>2]|0,j);u=c[n>>2]|0;i=o;return u|0}if((c[m>>2]|0)!=(c[k>>2]|0)){Zl(c[h>>2]|0,k);u=c[n>>2]|0;i=o;return u|0}else{c[n>>2]=0;u=c[n>>2]|0;i=o;return u|0}return 0}function wn(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+32|0;g=n+28|0;h=n+24|0;p=n+20|0;o=n+16|0;j=n+12|0;l=n+8|0;k=n+4|0;m=n;c[g>>2]=a;c[h>>2]=b;c[p>>2]=d;c[o>>2]=e;c[j>>2]=f;c[l>>2]=c[c[g>>2]>>2];c[k>>2]=0;c[m>>2]=Wb[c[(c[l>>2]|0)+12>>2]&255](c[g>>2]|0,c[p>>2]|0,c[o>>2]|0,k)|0;if(((c[m>>2]|0)==0?(c[c[k>>2]>>2]=c[g>>2],(c[c[l>>2]>>2]|0)>=1):0)?(c[m>>2]=Yb[c[(c[l>>2]|0)+24>>2]&255](c[k>>2]|0,c[h>>2]|0)|0,(c[m>>2]|0)!=0):0){Tb[c[(c[l>>2]|0)+16>>2]&255](c[k>>2]|0)|0;c[k>>2]=0}c[c[j>>2]>>2]=c[k>>2];i=n;return c[m>>2]|0}function xn(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+64|0;m=u+48|0;n=u+44|0;o=u+24|0;p=u+16|0;k=u+8|0;l=u+40|0;r=u+36|0;s=u+32|0;q=u;c[n>>2]=a;a=o;c[a>>2]=b;c[a+4>>2]=d;a=p;c[a>>2]=e;c[a+4>>2]=f;a=k;c[a>>2]=g;c[a+4>>2]=h;c[l>>2]=j;c[r>>2]=c[c[n>>2]>>2];c[s>>2]=0;if((c[r>>2]|0)!=0?(j=(c[r>>2]|0)+16|0,a=o,!((c[j>>2]|0)!=(c[a>>2]|0)?1:(c[j+4>>2]|0)!=(c[a+4>>2]|0))):0)t=9;else{b=o;if(c[r>>2]|0){e=(c[r>>2]|0)+16|0;d=c[e>>2]|0;e=c[e+4>>2]|0}else{d=0;e=0}j=fR(c[b>>2]|0,c[b+4>>2]|0,d|0,e|0)|0;a=q;c[a>>2]=j;c[a+4>>2]=C;if(c[r>>2]|0){a=c[r>>2]|0;c[a>>2]=(c[a>>2]|0)+1}q=yn(r,c[q>>2]|0,c[q+4>>2]|0)|0;c[s>>2]=q;if(!q){q=(c[r>>2]|0)+24|0;c[q>>2]=-1;c[q+4>>2]=-1;q=(c[r>>2]|0)+32|0;c[q>>2]=0;c[q+4>>2]=0;q=c[o+4>>2]|0;t=(c[r>>2]|0)+16|0;c[t>>2]=c[o>>2];c[t+4>>2]=q;t=9}}do if((t|0)==9){t=p;q=c[t+4>>2]|0;if((q|0)>0|(q|0)==0&(c[t>>2]|0)>>>0>0?(q=(c[r>>2]|0)+24|0,t=p,(c[q>>2]|0)!=(c[t>>2]|0)?1:(c[q+4>>2]|0)!=(c[t+4>>2]|0)):0){t=yn(r,1,0)|0;c[s>>2]=t;if(t)break;t=p;t=yn(r,c[t>>2]|0,c[t+4>>2]|0)|0;c[s>>2]=t;if(t)break;o=p;q=c[o+4>>2]|0;t=(c[r>>2]|0)+24|0;c[t>>2]=c[o>>2];c[t+4>>2]=q;t=(c[r>>2]|0)+32|0;c[t>>2]=0;c[t+4>>2]=0}t=p;q=c[t+4>>2]|0;if((q|0)>0|(q|0)==0&(c[t>>2]|0)>>>0>=0?(q=k,q=gR(2,0,c[q>>2]|0,c[q+4>>2]|0)|0,t=(c[r>>2]|0)+32|0,t=fR(q|0,C|0,c[t>>2]|0,c[t+4>>2]|0)|0,c[s>>2]=yn(r,t,C)|0,(c[s>>2]|0)==0):0){p=k;q=c[p+4>>2]|0;t=(c[r>>2]|0)+32|0;c[t>>2]=c[p>>2];c[t+4>>2]=q}}while(0);c[c[l>>2]>>2]=c[s>>2];if((c[r>>2]|0)!=(c[c[n>>2]>>2]|0)){c[c[n>>2]>>2]=c[r>>2];c[m>>2]=1;t=c[m>>2]|0;i=u;return t|0}else{c[m>>2]=0;t=c[m>>2]|0;i=u;return t|0}return 0}function yn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+20|0;g=l+16|0;h=l;k=l+12|0;j=l+8|0;c[g>>2]=b;b=h;c[b>>2]=d;c[b+4>>2]=e;c[k>>2]=c[c[g>>2]>>2];do if(c[k>>2]|0){if(((c[c[k>>2]>>2]|0)+10+1|0)>(c[(c[k>>2]|0)+8>>2]|0)){c[j>>2]=c[(c[k>>2]|0)+8>>2]<<1;c[k>>2]=Ld(c[k>>2]|0,40+(c[j>>2]|0)|0)|0;if(c[k>>2]|0){c[(c[k>>2]|0)+8>>2]=c[j>>2];c[(c[k>>2]|0)+4>>2]=(c[k>>2]|0)+40;break}Kd(c[c[g>>2]>>2]|0);c[c[g>>2]>>2]=0;c[f>>2]=7;b=c[f>>2]|0;i=l;return b|0}}else{c[k>>2]=Id(140)|0;if(c[k>>2]|0){c[(c[k>>2]|0)+8>>2]=100;c[(c[k>>2]|0)+4>>2]=(c[k>>2]|0)+40;c[c[k>>2]>>2]=0;break}c[f>>2]=7;b=c[f>>2]|0;i=l;return b|0}while(0);j=h;j=El((c[(c[k>>2]|0)+4>>2]|0)+(c[c[k>>2]>>2]|0)|0,c[j>>2]|0,c[j+4>>2]|0)|0;b=c[k>>2]|0;c[b>>2]=(c[b>>2]|0)+j;a[(c[(c[k>>2]|0)+4>>2]|0)+(c[c[k>>2]>>2]|0)>>0]=0;c[c[g>>2]>>2]=c[k>>2];c[f>>2]=0;b=c[f>>2]|0;i=l;return b|0}function zn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;j=l;d=l+24|0;e=l+20|0;f=l+16|0;h=l+12|0;g=l+8|0;k=l+4|0;c[e>>2]=a;c[f>>2]=b;c[h>>2]=0;do if(!(c[(c[e>>2]|0)+8>>2]|0)){c[g>>2]=c[c[e>>2]>>2];c[j>>2]=c[(c[g>>2]|0)+216>>2];c[k>>2]=Od(24088,j)|0;if(c[k>>2]|0){c[h>>2]=af(c[(c[g>>2]|0)+12>>2]|0,c[k>>2]|0,-1,(c[e>>2]|0)+8|0,0)|0;Kd(c[k>>2]|0);break}c[d>>2]=7;k=c[d>>2]|0;i=l;return k|0}while(0);c[c[f>>2]>>2]=c[(c[e>>2]|0)+8>>2];c[d>>2]=c[h>>2];k=c[d>>2]|0;i=l;return k|0}function An(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;j=m+8|0;l=m+4|0;k=m;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=c[c[f>>2]>>2];if((c[k>>2]|0)==5){c[l>>2]=Ob[c[h>>2]&255](c[f>>2]|0,c[c[g>>2]>>2]|0,c[j>>2]|0)|0;d=c[g>>2]|0;c[d>>2]=(c[d>>2]|0)+1;d=c[l>>2]|0;i=m;return d|0}c[l>>2]=An(c[(c[f>>2]|0)+12>>2]|0,c[g>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;if(!((c[l>>2]|0)==0&(c[k>>2]|0)!=2)){d=c[l>>2]|0;i=m;return d|0}c[l>>2]=An(c[(c[f>>2]|0)+16>>2]|0,c[g>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;d=c[l>>2]|0;i=m;return d|0}function Bn(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;k=m+8|0;l=m+4|0;j=m;c[f>>2]=a;c[g>>2]=b;c[h>>2]=e;c[k>>2]=c[c[f>>2]>>2];c[l>>2]=0;if((d[(c[g>>2]|0)+34>>0]|0|0)!=0?(c[c[(c[g>>2]|0)+8>>2]>>2]|0)!=1:0){c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[(c[k>>2]|0)+24>>2]|0))break;c[(c[h>>2]|0)+(((c[j>>2]|0)*3|0)+1<<2)>>2]=c[(c[f>>2]|0)+64>>2];c[(c[h>>2]|0)+(((c[j>>2]|0)*3|0)+2<<2)>>2]=c[(c[f>>2]|0)+64>>2];c[j>>2]=(c[j>>2]|0)+1}l=c[l>>2]|0;i=m;return l|0}c[l>>2]=Cn(c[f>>2]|0,c[g>>2]|0)|0;if(c[l>>2]|0){l=c[l>>2]|0;i=m;return l|0}c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[(c[k>>2]|0)+24>>2]|0))break;c[(c[h>>2]|0)+(((c[j>>2]|0)*3|0)+1<<2)>>2]=c[(c[(c[g>>2]|0)+40>>2]|0)+(((c[j>>2]|0)*3|0)+1<<2)>>2];c[(c[h>>2]|0)+(((c[j>>2]|0)*3|0)+2<<2)>>2]=c[(c[(c[g>>2]|0)+40>>2]|0)+(((c[j>>2]|0)*3|0)+2<<2)>>2];c[j>>2]=(c[j>>2]|0)+1}l=c[l>>2]|0;i=m;return l|0}function Cn(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+64|0;g=s+44|0;h=s+40|0;f=s+36|0;q=s+32|0;p=s+28|0;o=s+24|0;m=s+20|0;l=s+8|0;k=s;j=s+48|0;n=s+16|0;c[h>>2]=b;c[f>>2]=e;c[q>>2]=0;do if(!(c[(c[f>>2]|0)+40>>2]|0)){c[p>>2]=c[c[h>>2]>>2];t=(c[h>>2]|0)+32|0;b=c[t+4>>2]|0;e=l;c[e>>2]=c[t>>2];c[e+4>>2]=b;c[o>>2]=c[f>>2];while(1){if(c[(c[o>>2]|0)+8>>2]|0)f=(c[c[(c[o>>2]|0)+8>>2]>>2]|0)==1;else f=0;b=c[o>>2]|0;if(!f)break;c[o>>2]=c[b+8>>2]}b=b+24|0;e=c[b+4>>2]|0;t=k;c[t>>2]=c[b>>2];c[t+4>>2]=e;a[j>>0]=a[(c[o>>2]|0)+32>>0]|0;c[m>>2]=c[o>>2];while(1){if(!(c[m>>2]|0))break;f=c[m>>2]|0;if((c[c[m>>2]>>2]|0)!=5)f=c[f+16>>2]|0;c[n>>2]=f;t=Id((c[(c[p>>2]|0)+24>>2]|0)*3<<2)|0;c[(c[n>>2]|0)+40>>2]=t;if(!(c[(c[n>>2]|0)+40>>2]|0)){r=12;break}kR(c[(c[n>>2]|0)+40>>2]|0,0,(c[(c[p>>2]|0)+24>>2]|0)*3<<2|0)|0;c[m>>2]=c[(c[m>>2]|0)+12>>2]}if((r|0)==12){c[g>>2]=7;t=c[g>>2]|0;i=s;return t|0}Mm(c[h>>2]|0,c[o>>2]|0,q);while(1){if(!((d[(c[h>>2]|0)+6>>0]|0)==0?(c[q>>2]|0)==0:0))break;do{if(!(d[(c[h>>2]|0)+7>>0]|0))Zd(c[(c[h>>2]|0)+8>>2]|0)|0;Nm(c[h>>2]|0,c[o>>2]|0,q);a[(c[h>>2]|0)+6>>0]=a[(c[o>>2]|0)+32>>0]|0;a[(c[h>>2]|0)+7>>0]=1;c[(c[h>>2]|0)+88>>2]=1;p=(c[o>>2]|0)+24|0;r=c[p+4>>2]|0;t=(c[h>>2]|0)+32|0;c[t>>2]=c[p>>2];c[t+4>>2]=r;if(d[(c[h>>2]|0)+6>>0]|0)break;if((c[c[o>>2]>>2]|0)!=1)break}while((Im(c[h>>2]|0,q)|0)!=0);if(c[q>>2]|0)continue;if(d[(c[h>>2]|0)+6>>0]|0)continue;Dn(c[o>>2]|0)}a[(c[h>>2]|0)+6>>0]=0;p=l;r=c[p+4>>2]|0;t=(c[h>>2]|0)+32|0;c[t>>2]=c[p>>2];c[t+4>>2]=r;if(a[j>>0]|0){a[(c[o>>2]|0)+32>>0]=a[j>>0]|0;break}Mm(c[h>>2]|0,c[o>>2]|0,q);do{Nm(c[h>>2]|0,c[o>>2]|0,q);r=(c[o>>2]|0)+24|0;t=k}while(((c[r>>2]|0)!=(c[t>>2]|0)?1:(c[r+4>>2]|0)!=(c[t+4>>2]|0))?(c[q>>2]|0)==0:0)}while(0);c[g>>2]=c[q>>2];t=c[g>>2]|0;i=s;return t|0}function Dn(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;e=l+12|0;j=l+8|0;k=l+4|0;g=l+20|0;h=l;c[f>>2]=b;if(!(c[f>>2]|0)){i=l;return}c[e>>2]=c[(c[f>>2]|0)+20>>2];a:do if((c[e>>2]|0)!=0?(c[(c[e>>2]|0)+28>>2]|0)!=0:0){c[j>>2]=0;c[k>>2]=c[(c[e>>2]|0)+28>>2];while(1){a[g>>0]=0;c[h>>2]=0;while(1){if(!(254&(a[c[k>>2]>>0]|d[g>>0])))break;if(!(d[g>>0]&128))c[h>>2]=(c[h>>2]|0)+1;e=c[k>>2]|0;c[k>>2]=e+1;a[g>>0]=a[e>>0]&128}e=(c[(c[f>>2]|0)+40>>2]|0)+(((c[j>>2]|0)*3|0)+1<<2)|0;c[e>>2]=(c[e>>2]|0)+(c[h>>2]|0);e=(c[(c[f>>2]|0)+40>>2]|0)+(((c[j>>2]|0)*3|0)+2<<2)|0;c[e>>2]=(c[e>>2]|0)+((c[h>>2]|0)>0&1);if(!(a[c[k>>2]>>0]|0))break a;c[k>>2]=(c[k>>2]|0)+1;b=c[k>>2]|0;if(d[c[k>>2]>>0]&128)b=Vl(b,j)|0;else{c[j>>2]=d[b>>0];b=1}c[k>>2]=(c[k>>2]|0)+b}}while(0);Dn(c[(c[f>>2]|0)+12>>2]|0);Dn(c[(c[f>>2]|0)+16>>2]|0);i=l;return}function En(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+32|0;p=o+28|0;f=o+24|0;m=o+20|0;h=o+16|0;l=o+12|0;k=o+8|0;g=o+4|0;j=o;c[p>>2]=b;c[f>>2]=e;c[m>>2]=c[c[c[f>>2]>>2]>>2];c[l>>2]=c[(c[p>>2]|0)+20>>2];c[k>>2]=c[(c[l>>2]|0)+28>>2];c[g>>2]=0;e=c[(c[p>>2]|0)+36>>2]|0;b=c[(c[f>>2]|0)+4>>2]|0;if((a[(c[f>>2]|0)+24>>0]|0)==121)c[h>>2]=_(e,b)|0;else c[h>>2]=_(e,(b+31|0)/32|0)|0;while(1){c[j>>2]=Lm(k)|0;if(!((c[(c[l>>2]|0)+68>>2]|0)<(c[(c[m>>2]|0)+24>>2]|0)?(c[(c[l>>2]|0)+68>>2]|0)!=(c[g>>2]|0):0))n=6;do if((n|0)==6){n=0;e=c[j>>2]|0;if((a[(c[f>>2]|0)+24>>0]|0)==121){c[(c[(c[f>>2]|0)+28>>2]|0)+((c[h>>2]|0)+(c[g>>2]|0)<<2)>>2]=e;break}if(e){p=(c[(c[f>>2]|0)+28>>2]|0)+((c[h>>2]|0)+(((c[g>>2]|0)+1|0)/32|0)<<2)|0;c[p>>2]=c[p>>2]|1<<(c[g>>2]&31)}}while(0);if((a[c[k>>2]>>0]|0)!=1)break;c[k>>2]=(c[k>>2]|0)+1;e=c[k>>2]|0;if(d[c[k>>2]>>0]&128)e=Vl(e,g)|0;else{c[g>>2]=d[e>>0];e=1}c[k>>2]=(c[k>>2]|0)+e}i=o;return}function Fn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;h=e+12|0;f=e+8|0;j=e+4|0;g=e;c[h>>2]=a;c[f>>2]=b;c[j>>2]=d;c[g>>2]=c[j>>2];c[(c[g>>2]|0)+(c[f>>2]<<4)>>2]=c[h>>2];i=e;return 0}function Gn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=i;i=i+32|0;b=g+16|0;e=g+12|0;d=g;f=g+8|0;c[b>>2]=a;c[e>>2]=c[(c[b>>2]|0)+8>>2];c[f>>2]=0;h=Ul(c[e>>2]|0,d)|0;c[e>>2]=(c[e>>2]|0)+h;h=d;a=d;if((c[h>>2]|0)==0&(c[h+4>>2]|0)==0|(c[a>>2]|0)==1&(c[a+4>>2]|0)==0){c[e>>2]=0;c[f>>2]=1;e=c[e>>2]|0;h=c[b>>2]|0;h=h+8|0;c[h>>2]=e;h=c[f>>2]|0;i=g;return h|0}else{a=d;a=fR(c[a>>2]|0,c[a+4>>2]|0,2,0)|0;h=(c[b>>2]|0)+12|0;c[h>>2]=(c[h>>2]|0)+a;e=c[e>>2]|0;h=c[b>>2]|0;h=h+8|0;c[h>>2]=e;h=c[f>>2]|0;i=g;return h|0}return 0}function Hn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;f=i;i=i+32|0;k=f+20|0;j=f+12|0;e=f+8|0;g=f+4|0;h=f;c[k>>2]=a;c[f+16>>2]=b;c[j>>2]=d;c[e>>2]=0;c[g>>2]=c[(c[k>>2]|0)+20>>2];c[h>>2]=c[j>>2];a=(c[h>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)+1;a=(c[h>>2]|0)+8|0;c[a>>2]=(c[a>>2]|0)+(c[(c[g>>2]|0)+64>>2]|0);i=f;return c[e>>2]|0}function In(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;l=k+20|0;f=k;g=k+16|0;h=k+12|0;j=k+8|0;c[l>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[g>>2]=e;c[h>>2]=0;c[j>>2]=jl(c[l>>2]|0,21,h,0)|0;do if(!(c[j>>2]|0)){l=f;Me(c[h>>2]|0,1,c[l>>2]|0,c[l+4>>2]|0)|0;c[j>>2]=ue(c[h>>2]|0)|0;if((c[j>>2]|0)==100?(He(c[h>>2]|0,0)|0)==4:0){c[j>>2]=0;break}l=Zd(c[h>>2]|0)|0;c[j>>2]=l;c[j>>2]=(c[j>>2]|0)==0?267:l;c[h>>2]=0}while(0);c[c[g>>2]>>2]=c[h>>2];i=k;return c[j>>2]|0}function Jn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;h=g+12|0;d=g+8|0;e=g+4|0;f=g;c[h>>2]=a;c[d>>2]=b;c[e>>2]=0;c[f>>2]=jl(c[h>>2]|0,22,e,0)|0;do if(!(c[f>>2]|0)){Le(c[e>>2]|0,1,0)|0;if((ue(c[e>>2]|0)|0)==100?(He(c[e>>2]|0,0)|0)==4:0)break;h=Zd(c[e>>2]|0)|0;c[f>>2]=h;c[f>>2]=(c[f>>2]|0)==0?267:h;c[e>>2]=0}while(0);c[c[d>>2]>>2]=c[e>>2];i=g;return c[f>>2]|0}function Kn(b){b=b|0;var e=0,f=0,g=0;f=i;i=i+16|0;g=f+4|0;e=f;c[g>>2]=b;c[e>>2]=(c[g>>2]|0)+(0-(c[(c[g>>2]|0)+-4>>2]|0));b=c[e>>2]|0;if((c[g>>2]|0)==((c[e>>2]|0)+16+4|0))a[b+1>>0]=0;else a[b+2>>0]=0;if(d[c[e>>2]>>0]|0){i=f;return}if(d[(c[e>>2]|0)+1>>0]|0){i=f;return}if(d[(c[e>>2]|0)+2>>0]|0){i=f;return}Kd(c[e>>2]|0);i=f;return}function Ln(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;a=c[h>>2]|0;c[a>>2]=(c[a>>2]|0)+1;c[(c[f>>2]|0)+36>>2]=c[g>>2];i=e;return 0}function Mn(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;c[d>>2]=$e(c[(c[b>>2]|0)+12>>2]|0,24216,0,0,0)|0;do if(!(c[d>>2]|0)){c[d>>2]=Nn(c[b>>2]|0,1)|0;a=c[(c[b>>2]|0)+12>>2]|0;if(!((c[d>>2]|0)==0|(c[d>>2]|0)==101)){$e(a,24244,0,0,0)|0;$e(c[(c[b>>2]|0)+12>>2]|0,24231,0,0,0)|0;break}c[e>>2]=$e(a,24231,0,0,0)|0;if(c[e>>2]|0)c[d>>2]=c[e>>2]}while(0);sm(c[b>>2]|0);i=f;return c[d>>2]|0}function Nn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;d=m+28|0;e=m+24|0;f=m+20|0;k=m+16|0;j=m+12|0;l=m+8|0;g=m+4|0;h=m;c[d>>2]=a;c[e>>2]=b;c[f>>2]=0;c[j>>2]=0;c[k>>2]=jl(c[d>>2]|0,27,j,0)|0;if(!(c[k>>2]|0)){Le(c[j>>2]|0,1,c[(c[d>>2]|0)+272>>2]|0)|0;Le(c[j>>2]|0,2,c[(c[d>>2]|0)+248>>2]|0)|0;a:while(1){a=(ue(c[j>>2]|0)|0)==100;b=c[j>>2]|0;if(!a)break;c[h>>2]=De(b,0)|0;c[g>>2]=0;while(1){if(c[k>>2]|0)continue a;if((c[g>>2]|0)>=(c[(c[d>>2]|0)+248>>2]|0))continue a;c[k>>2]=il(c[d>>2]|0,c[h>>2]|0,c[g>>2]|0,-2)|0;if((c[k>>2]|0)==101){c[f>>2]=1;c[k>>2]=0}c[g>>2]=(c[g>>2]|0)+1}}c[l>>2]=Zd(b)|0;if(!(c[k>>2]|0))c[k>>2]=c[l>>2]}sm(c[d>>2]|0);dl(c[d>>2]|0);i=m;return((c[k>>2]|0)==0&(c[e>>2]|0)!=0&(c[f>>2]|0)!=0?101:c[k>>2]|0)|0}function On(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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;C=i;i=i+208|0;y=C+32|0;e=C+132|0;f=C+128|0;v=C+124|0;t=C+120|0;A=C+116|0;r=C+112|0;l=C+108|0;B=C+96|0;x=C;s=C+92|0;h=C+88|0;g=C+84|0;p=C+80|0;n=C+76|0;m=C+72|0;z=C+68|0;q=C+64|0;k=C+60|0;o=C+56|0;w=C+52|0;u=C+48|0;j=C+136|0;c[e>>2]=b;c[f>>2]=d;c[v>>2]=c[c[f>>2]>>2];c[t>>2]=c[c[(c[v>>2]|0)+36>>2]>>2];c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;if(!(c[(c[f>>2]|0)+12>>2]|0)){ne(c[e>>2]|0,19266,0,0);i=C;return}c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;c[x+16>>2]=0;c[x+20>>2]=0;c[x+24>>2]=0;c[x+28>>2]=0;c[A>>2]=Dm(c[f>>2]|0,0,r)|0;a:do if(!(c[A>>2]|0)){c[x+24>>2]=Id((c[r>>2]|0)*12|0)|0;if(!(c[x+24>>2]|0)){c[A>>2]=7;break}D=(c[f>>2]|0)+32|0;d=c[D+4>>2]|0;b=x+16|0;c[b>>2]=c[D>>2];c[b+4>>2]=d;c[x>>2]=c[f>>2];c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[(c[v>>2]|0)+24>>2]|0))break a;c[g>>2]=0;c[p>>2]=0;c[n>>2]=0;c[m>>2]=0;c[x+4>>2]=c[l>>2];c[x+8>>2]=0;Hm(c[(c[f>>2]|0)+12>>2]|0,158,x)|0;c[z>>2]=Fe(c[(c[f>>2]|0)+8>>2]|0,(c[l>>2]|0)+1|0)|0;c[q>>2]=Be(c[(c[f>>2]|0)+8>>2]|0,(c[l>>2]|0)+1|0)|0;if(!(c[z>>2]|0)){if((He(c[(c[f>>2]|0)+8>>2]|0,(c[l>>2]|0)+1|0)|0)!=5)break}else{c[A>>2]=wn(c[(c[v>>2]|0)+36>>2]|0,c[(c[f>>2]|0)+16>>2]|0,c[z>>2]|0,c[q>>2]|0,s)|0;if(c[A>>2]|0)break a;c[A>>2]=Sb[c[(c[t>>2]|0)+20>>2]&255](c[s>>2]|0,h,g,p,n,m)|0;while(1){if(c[A>>2]|0)break;c[o>>2]=2147483647;c[w>>2]=0;c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[r>>2]|0))break;c[u>>2]=(c[x+24>>2]|0)+((c[k>>2]|0)*12|0);if((c[c[u>>2]>>2]|0)!=0?((c[(c[u>>2]|0)+4>>2]|0)-(c[(c[u>>2]|0)+8>>2]|0)|0)<(c[o>>2]|0):0){c[o>>2]=(c[(c[u>>2]|0)+4>>2]|0)-(c[(c[u>>2]|0)+8>>2]|0);c[w>>2]=c[u>>2]}c[k>>2]=(c[k>>2]|0)+1}if(!(c[w>>2]|0)){c[A>>2]=101;continue}d=c[w>>2]|0;if(!(254&a[c[c[w>>2]>>2]>>0]))c[d>>2]=0;else Qn(d,(c[w>>2]|0)+4|0);while(1){if(c[A>>2]|0)break;if((c[m>>2]|0)>=(c[o>>2]|0))break;c[A>>2]=Sb[c[(c[t>>2]|0)+20>>2]&255](c[s>>2]|0,h,g,p,n,m)|0}if(!(c[A>>2]|0)){d=((c[w>>2]|0)-(c[x+24>>2]|0)|0)/12|0;b=c[p>>2]|0;D=(c[n>>2]|0)-(c[p>>2]|0)|0;c[y>>2]=c[l>>2];c[y+4>>2]=d;c[y+8>>2]=b;c[y+12>>2]=D;Qd(64,j,24261,y)|0;c[A>>2]=Rn(B,j,-1)|0;continue}if((c[A>>2]|0)!=101)continue;if(c[(c[v>>2]|0)+40>>2]|0)continue;c[A>>2]=267}if((c[A>>2]|0)==101)c[A>>2]=0;Tb[c[(c[t>>2]|0)+16>>2]&255](c[s>>2]|0)|0;if(c[A>>2]|0)break a}c[l>>2]=(c[l>>2]|0)+1}c[A>>2]=7}while(0);Kd(c[x+24>>2]|0);sm(c[v>>2]|0);d=c[e>>2]|0;if(c[A>>2]|0){re(d,c[A>>2]|0);Kd(c[B>>2]|0);i=C;return}else{ne(d,c[B>>2]|0,(c[B+4>>2]|0)-1|0,148);i=C;return}}function Pn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+48|0;n=m+36|0;o=m+28|0;h=m+24|0;g=m+20|0;f=m+16|0;j=m+12|0;e=m+8|0;l=m+4|0;k=m;c[n>>2]=a;c[m+32>>2]=b;c[o>>2]=d;c[h>>2]=c[o>>2];c[e>>2]=0;c[l>>2]=Km(c[c[h>>2]>>2]|0,c[n>>2]|0,c[(c[h>>2]|0)+4>>2]|0,j)|0;c[g>>2]=c[(c[(c[n>>2]|0)+20>>2]|0)+64>>2];if(c[j>>2]|0)Qn(j,e);c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[g>>2]|0))break;n=(c[h>>2]|0)+8|0;o=c[n>>2]|0;c[n>>2]=o+1;c[k>>2]=(c[(c[h>>2]|0)+24>>2]|0)+(o*12|0);c[(c[k>>2]|0)+8>>2]=(c[g>>2]|0)-(c[f>>2]|0)-1;c[c[k>>2]>>2]=c[j>>2];c[(c[k>>2]|0)+4>>2]=c[e>>2];c[f>>2]=(c[f>>2]|0)+1}i=m;return c[l>>2]|0}function Qn(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;b=c[c[e>>2]>>2]|0;if((d[c[c[e>>2]>>2]>>0]|0)&128)b=Vl(b,g)|0;else{c[g>>2]=d[b>>0];b=1}e=c[e>>2]|0;c[e>>2]=(c[e>>2]|0)+b;f=c[f>>2]|0;c[f>>2]=(c[f>>2]|0)+((c[g>>2]|0)-2);i=h;return}function Rn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;if((c[j>>2]|0)<0)c[j>>2]=BQ(c[h>>2]|0)|0;do if(((c[(c[g>>2]|0)+4>>2]|0)+(c[j>>2]|0)+1|0)>=(c[(c[g>>2]|0)+8>>2]|0)){c[k>>2]=(c[(c[g>>2]|0)+8>>2]|0)+(c[j>>2]|0)+100;c[l>>2]=Ld(c[c[g>>2]>>2]|0,c[k>>2]|0)|0;if(c[l>>2]|0){c[c[g>>2]>>2]=c[l>>2];c[(c[g>>2]|0)+8>>2]=c[k>>2];break}c[f>>2]=7;l=c[f>>2]|0;i=m;return l|0}while(0);iR((c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+4>>2]|0)|0,c[h>>2]|0,c[j>>2]|0)|0;l=(c[g>>2]|0)+4|0;c[l>>2]=(c[l>>2]|0)+(c[j>>2]|0);a[(c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+4>>2]|0)>>0]=0;c[f>>2]=0;l=c[f>>2]|0;i=m;return l|0}function Sn(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 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;G=i;i=i+224|0;j=G+212|0;k=G+208|0;l=G+204|0;m=G+200|0;n=G+196|0;o=G+192|0;p=G+188|0;B=G+184|0;E=G+180|0;r=G+176|0;F=G+164|0;z=G+160|0;q=G+40|0;y=G+156|0;v=G+152|0;w=G+32|0;x=G+24|0;s=G+148|0;t=G+144|0;A=G+140|0;C=G;u=G+136|0;c[j>>2]=a;c[k>>2]=b;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[B>>2]=c[c[k>>2]>>2];c[E>>2]=0;c[F>>2]=0;c[F+4>>2]=0;c[F+8>>2]=0;c[z>>2]=0;c[y>>2]=-1;if(!(c[(c[k>>2]|0)+12>>2]|0)){ne(c[j>>2]|0,19266,0,0);i=G;return}c[z>>2]=1;a:while(1){g=w;c[g>>2]=0;c[g+4>>2]=0;g=x;c[g>>2]=0;c[g+4>>2]=0;g=c[p>>2]|0;if((c[p>>2]|0)>=0)c[y>>2]=(g+(c[z>>2]|0)-1|0)/(c[z>>2]|0)|0;else c[y>>2]=_(-1,g)|0;c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[z>>2]|0))break;c[s>>2]=-1;c[A>>2]=q+((c[v>>2]|0)*24|0);d=c[A>>2]|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[t>>2]=0;while(1){if((c[t>>2]|0)>=(c[(c[B>>2]|0)+24>>2]|0))break;c[C>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;c[C+12>>2]=0;c[C+16>>2]=0;c[C+20>>2]=0;c[u>>2]=0;if(!((c[o>>2]|0)>=0?(c[t>>2]|0)!=(c[o>>2]|0):0)){d=w;c[E>>2]=Tn(c[y>>2]|0,c[k>>2]|0,c[t>>2]|0,c[d>>2]|0,c[d+4>>2]|0,x,C,u)|0;if(c[E>>2]|0)break a;if((c[u>>2]|0)>(c[s>>2]|0)){d=c[A>>2]|0;c[d>>2]=c[C>>2];c[d+4>>2]=c[C+4>>2];c[d+8>>2]=c[C+8>>2];c[d+12>>2]=c[C+12>>2];c[d+16>>2]=c[C+16>>2];c[d+20>>2]=c[C+20>>2];c[s>>2]=c[u>>2]}}c[t>>2]=(c[t>>2]|0)+1}f=(c[A>>2]|0)+8|0;a=w;e=c[a+4>>2]|c[f+4>>2];d=w;c[d>>2]=c[a>>2]|c[f>>2];c[d+4>>2]=e;c[v>>2]=(c[v>>2]|0)+1}e=x;d=w;if(((c[e>>2]|0)==(c[d>>2]|0)?(c[e+4>>2]|0)==(c[d+4>>2]|0):0)|(c[z>>2]|0)==4){D=20;break}c[z>>2]=(c[z>>2]|0)+1}b:do if((D|0)==20){c[r>>2]=0;while(1){if(!((c[r>>2]|0)<(c[z>>2]|0)?(c[E>>2]|0)==0:0))break b;c[E>>2]=Un(c[k>>2]|0,q+((c[r>>2]|0)*24|0)|0,c[r>>2]|0,(c[r>>2]|0)==((c[z>>2]|0)-1|0)&1,c[y>>2]|0,c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,F)|0;c[r>>2]=(c[r>>2]|0)+1}}while(0);sm(c[B>>2]|0);g=c[j>>2]|0;if(c[E>>2]|0){re(g,c[E>>2]|0);Kd(c[F>>2]|0);i=G;return}else{ne(g,c[F>>2]|0,-1,148);i=G;return}}function Tn(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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,D=0;D=i;i=i+112|0;k=D+104|0;l=D+100|0;m=D+96|0;n=D+92|0;o=D+16|0;p=D+88|0;q=D+84|0;r=D+80|0;A=D+76|0;z=D+72|0;B=D+48|0;y=D+40|0;t=D+36|0;s=D+32|0;u=D+28|0;v=D+24|0;w=D+8|0;x=D;c[l>>2]=a;c[m>>2]=b;c[n>>2]=d;b=o;c[b>>2]=e;c[b+4>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=j;c[t>>2]=-1;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[A>>2]=Dm(c[m>>2]|0,z,0)|0;if(c[A>>2]|0){c[k>>2]=c[A>>2];B=c[k>>2]|0;i=D;return B|0}c[y>>2]=(c[z>>2]|0)*24;c[B+16>>2]=Id(c[y>>2]|0)|0;if(!(c[B+16>>2]|0)){c[k>>2]=7;B=c[k>>2]|0;i=D;return B|0}kR(c[B+16>>2]|0,0,c[y>>2]|0)|0;c[B>>2]=c[m>>2];c[B+4>>2]=c[n>>2];c[B+8>>2]=c[l>>2];c[B+12>>2]=c[z>>2];c[B+20>>2]=-1;c[A>>2]=Hm(c[(c[m>>2]|0)+12>>2]|0,159,B)|0;if(!(c[A>>2]|0)){c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[z>>2]|0))break;if(c[(c[B+16>>2]|0)+((c[s>>2]|0)*24|0)+12>>2]|0){h=lR(1,0,c[s>>2]|0)|0;g=c[p>>2]|0;b=g;j=c[b+4>>2]|C;c[g>>2]=c[b>>2]|h;c[g+4>>2]=j}c[s>>2]=(c[s>>2]|0)+1}c[c[q>>2]>>2]=c[n>>2];while(1){if(!((Xn(B)|0)!=0^1))break;g=o;Yn(B,c[g>>2]|0,c[g+4>>2]|0,u,v,w,x);if((c[v>>2]|0)<=(c[t>>2]|0))continue;c[(c[q>>2]|0)+4>>2]=c[u>>2];g=x;j=c[g+4>>2]|0;h=(c[q>>2]|0)+16|0;c[h>>2]=c[g>>2];c[h+4>>2]=j;h=w;j=c[h+4>>2]|0;g=(c[q>>2]|0)+8|0;c[g>>2]=c[h>>2];c[g+4>>2]=j;c[t>>2]=c[v>>2]}c[c[r>>2]>>2]=c[t>>2]}Kd(c[B+16>>2]|0);c[k>>2]=c[A>>2];B=c[k>>2]|0;i=D;return B|0}function Un(a,b,d,e,f,g,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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,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;N=i;i=i+128|0;l=N+112|0;m=N+108|0;P=N+104|0;n=N+100|0;o=N+96|0;p=N+92|0;q=N+88|0;r=N+84|0;s=N+80|0;t=N+76|0;J=N+72|0;K=N+68|0;L=N+64|0;G=N+60|0;y=N+56|0;z=N+52|0;E=N+48|0;B=N+44|0;w=N;O=N+40|0;I=N+36|0;H=N+32|0;v=N+28|0;u=N+24|0;x=N+20|0;A=N+16|0;D=N+12|0;F=N+8|0;c[m>>2]=a;c[P>>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]=j;c[t>>2]=k;c[J>>2]=c[c[m>>2]>>2];c[y>>2]=0;c[z>>2]=0;c[E>>2]=0;c[B>>2]=c[(c[P>>2]|0)+4>>2];g=(c[P>>2]|0)+16|0;e=c[g+4>>2]|0;d=w;c[d>>2]=c[g>>2];c[d+4>>2]=e;c[O>>2]=(c[c[P>>2]>>2]|0)+1;c[L>>2]=Fe(c[(c[m>>2]|0)+8>>2]|0,c[O>>2]|0)|0;d=c[(c[m>>2]|0)+8>>2]|0;e=c[O>>2]|0;if(!(c[L>>2]|0))if((He(d,e)|0)!=5){c[l>>2]=7;P=c[l>>2]|0;i=N;return P|0}else{c[l>>2]=0;P=c[l>>2]|0;i=N;return P|0}c[G>>2]=Be(d,e)|0;c[I>>2]=c[c[(c[J>>2]|0)+36>>2]>>2];c[K>>2]=wn(c[(c[J>>2]|0)+36>>2]|0,c[(c[m>>2]|0)+16>>2]|0,c[L>>2]|0,c[G>>2]|0,H)|0;if(c[K>>2]|0){c[l>>2]=c[K>>2];P=c[l>>2]|0;i=N;return P|0}while(1){if(c[K>>2]|0)break;c[u>>2]=-1;c[x>>2]=0;c[A>>2]=0;c[D>>2]=0;c[K>>2]=Sb[c[(c[I>>2]|0)+20>>2]&255](c[H>>2]|0,v,u,x,A,y)|0;if(c[K>>2]|0){M=9;break}if((c[y>>2]|0)<(c[B>>2]|0))continue;if(!(c[E>>2]|0)){c[F>>2]=(c[G>>2]|0)-(c[x>>2]|0);c[K>>2]=Vn(c[J>>2]|0,c[(c[m>>2]|0)+16>>2]|0,c[p>>2]|0,(c[L>>2]|0)+(c[x>>2]|0)|0,c[F>>2]|0,B,w)|0;c[E>>2]=1;do if(!(c[K>>2]|0)){if((c[B>>2]|0)>0|(c[n>>2]|0)>0){c[K>>2]=Rn(c[t>>2]|0,c[s>>2]|0,-1)|0;break}if(c[x>>2]|0)c[K>>2]=Rn(c[t>>2]|0,c[L>>2]|0,c[x>>2]|0)|0}while(0);if(c[K>>2]|0)continue;if((c[y>>2]|0)<(c[B>>2]|0))continue}if((c[y>>2]|0)>=((c[B>>2]|0)+(c[p>>2]|0)|0)){M=21;break}P=w;g=c[P>>2]|0;P=c[P+4>>2]|0;O=lR(1,0,(c[y>>2]|0)-(c[B>>2]|0)|0)|0;c[D>>2]=((g&O|0)!=0|(P&C|0)!=0)&1;if((c[y>>2]|0)>(c[B>>2]|0))c[K>>2]=Rn(c[t>>2]|0,(c[L>>2]|0)+(c[z>>2]|0)|0,(c[x>>2]|0)-(c[z>>2]|0)|0)|0;if((c[K>>2]|0)==0&(c[D>>2]|0)!=0)c[K>>2]=Rn(c[t>>2]|0,c[q>>2]|0,-1)|0;if(!(c[K>>2]|0))c[K>>2]=Rn(c[t>>2]|0,(c[L>>2]|0)+(c[x>>2]|0)|0,(c[A>>2]|0)-(c[x>>2]|0)|0)|0;if((c[K>>2]|0)==0&(c[D>>2]|0)!=0)c[K>>2]=Rn(c[t>>2]|0,c[r>>2]|0,-1)|0;c[z>>2]=c[A>>2]}if((M|0)==9){if((c[K>>2]|0)==101)c[K>>2]=Rn(c[t>>2]|0,(c[L>>2]|0)+(c[z>>2]|0)|0,-1)|0}else if((M|0)==21?(c[o>>2]|0)!=0:0)c[K>>2]=Rn(c[t>>2]|0,c[s>>2]|0,-1)|0;Tb[c[(c[I>>2]|0)+16>>2]&255](c[H>>2]|0)|0;c[l>>2]=c[K>>2];P=c[l>>2]|0;i=N;return P|0}function Vn(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 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,D=0,E=0,F=0;F=i;i=i+96|0;w=F+84|0;j=F+80|0;k=F+76|0;x=F+72|0;l=F+68|0;m=F+64|0;y=F+60|0;z=F+56|0;A=F;s=F+52|0;t=F+48|0;r=F+44|0;D=F+40|0;B=F+36|0;E=F+32|0;v=F+28|0;u=F+24|0;q=F+20|0;n=F+16|0;o=F+12|0;p=F+8|0;c[j>>2]=a;c[k>>2]=b;c[x>>2]=d;c[l>>2]=e;c[m>>2]=f;c[y>>2]=g;c[z>>2]=h;a=c[z>>2]|0;g=c[a+4>>2]|0;e=A;c[e>>2]=c[a>>2];c[e+4>>2]=g;e=A;do if((c[e>>2]|0)!=0|(c[e+4>>2]|0)!=0){c[s>>2]=0;while(1){e=A;a=c[e>>2]|0;e=c[e+4>>2]|0;g=lR(1,0,c[s>>2]|0)|0;if(!(((a&g|0)!=0|(e&C|0)!=0)^1))break;c[s>>2]=(c[s>>2]|0)+1}c[t>>2]=0;while(1){e=A;a=c[e>>2]|0;e=c[e+4>>2]|0;g=lR(1,0,(c[x>>2]|0)-1-(c[t>>2]|0)|0)|0;if(!(((a&g|0)!=0|(e&C|0)!=0)^1))break;c[t>>2]=(c[t>>2]|0)+1}c[r>>2]=((c[s>>2]|0)-(c[t>>2]|0)|0)/2|0;if((c[r>>2]|0)>0){c[B>>2]=0;c[v>>2]=c[c[(c[j>>2]|0)+36>>2]>>2];c[E>>2]=wn(c[(c[j>>2]|0)+36>>2]|0,c[k>>2]|0,c[l>>2]|0,c[m>>2]|0,u)|0;if(c[E>>2]|0){c[w>>2]=c[E>>2];E=c[w>>2]|0;i=F;return E|0}while(1){if(c[E>>2]|0)break;if((c[B>>2]|0)>=((c[x>>2]|0)+(c[r>>2]|0)|0))break;c[n>>2]=0;c[o>>2]=0;c[p>>2]=0;c[E>>2]=Sb[c[(c[v>>2]|0)+20>>2]&255](c[u>>2]|0,q,n,o,p,B)|0}Tb[c[(c[v>>2]|0)+16>>2]&255](c[u>>2]|0)|0;j=c[E>>2]|0;if((c[E>>2]|0)!=0&(c[E>>2]|0)!=101){c[w>>2]=j;E=c[w>>2]|0;i=F;return E|0}else{c[D>>2]=((j|0)==101&1)+(c[B>>2]|0)-(c[x>>2]|0);if((c[D>>2]|0)<=0)break;E=c[y>>2]|0;c[E>>2]=(c[E>>2]|0)+(c[D>>2]|0);E=A;D=hR(c[E>>2]|0,c[E+4>>2]|0,c[D>>2]|0)|0;E=c[z>>2]|0;c[E>>2]=D;c[E+4>>2]=C;break}}}while(0);c[w>>2]=0;E=c[w>>2]|0;i=F;return E|0}function Wn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;j=i;i=i+32|0;l=j+28|0;m=j+24|0;n=j+20|0;k=j+16|0;g=j+12|0;f=j+8|0;h=j+4|0;e=j;c[l>>2]=a;c[m>>2]=b;c[n>>2]=d;c[k>>2]=c[n>>2];c[g>>2]=(c[(c[k>>2]|0)+16>>2]|0)+((c[m>>2]|0)*24|0);c[c[g>>2]>>2]=c[(c[(c[l>>2]|0)+20>>2]|0)+64>>2];c[h>>2]=Km(c[c[k>>2]>>2]|0,c[l>>2]|0,c[(c[k>>2]|0)+4>>2]|0,f)|0;if(!(c[f>>2]|0)){n=c[h>>2]|0;i=j;return n|0}c[e>>2]=0;c[(c[g>>2]|0)+4>>2]=c[f>>2];Qn(f,e);c[(c[g>>2]|0)+12>>2]=c[f>>2];c[(c[g>>2]|0)+20>>2]=c[f>>2];c[(c[g>>2]|0)+8>>2]=c[e>>2];c[(c[g>>2]|0)+16>>2]=c[e>>2];n=c[h>>2]|0;i=j;return n|0}function Xn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;b=l+28|0;d=l+24|0;e=l+20|0;h=l+16|0;g=l+12|0;f=l+8|0;j=l+4|0;k=l;c[d>>2]=a;a:do if((c[(c[d>>2]|0)+20>>2]|0)<0){c[(c[d>>2]|0)+20>>2]=0;c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[d>>2]|0)+12>>2]|0))break a;c[h>>2]=(c[(c[d>>2]|0)+16>>2]|0)+((c[e>>2]|0)*24|0);Zn((c[h>>2]|0)+12|0,(c[h>>2]|0)+8|0,c[(c[d>>2]|0)+8>>2]|0);c[e>>2]=(c[e>>2]|0)+1}}else{c[f>>2]=2147483647;c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[d>>2]|0)+12>>2]|0))break;c[j>>2]=(c[(c[d>>2]|0)+16>>2]|0)+((c[e>>2]|0)*24|0);if((c[(c[j>>2]|0)+12>>2]|0)!=0?(c[(c[j>>2]|0)+8>>2]|0)<(c[f>>2]|0):0)c[f>>2]=c[(c[j>>2]|0)+8>>2];c[e>>2]=(c[e>>2]|0)+1}if((c[f>>2]|0)==2147483647){c[b>>2]=1;k=c[b>>2]|0;i=l;return k|0}j=(c[f>>2]|0)-(c[(c[d>>2]|0)+8>>2]|0)+1|0;c[g>>2]=j;c[(c[d>>2]|0)+20>>2]=j;c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[d>>2]|0)+12>>2]|0))break a;c[k>>2]=(c[(c[d>>2]|0)+16>>2]|0)+((c[e>>2]|0)*24|0);Zn((c[k>>2]|0)+12|0,(c[k>>2]|0)+8|0,(c[f>>2]|0)+1|0);Zn((c[k>>2]|0)+20|0,(c[k>>2]|0)+16|0,c[g>>2]|0);c[e>>2]=(c[e>>2]|0)+1}}while(0);c[b>>2]=0;k=c[b>>2]|0;i=l;return k|0}function Yn(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;B=i;i=i+96|0;k=B+84|0;l=B+32|0;m=B+80|0;n=B+76|0;o=B+72|0;p=B+68|0;t=B+64|0;s=B+60|0;q=B+56|0;v=B+24|0;w=B+16|0;A=B+52|0;z=B+48|0;r=B+44|0;u=B+40|0;x=B+8|0;y=B;c[k>>2]=b;b=l;c[b>>2]=d;c[b+4>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=j;c[t>>2]=c[(c[k>>2]|0)+20>>2];c[s>>2]=0;j=v;c[j>>2]=0;c[j+4>>2]=0;j=w;c[j>>2]=0;c[j+4>>2]=0;c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[(c[k>>2]|0)+12>>2]|0))break;c[A>>2]=(c[(c[k>>2]|0)+16>>2]|0)+((c[q>>2]|0)*24|0); -a:do if(c[(c[A>>2]|0)+20>>2]|0){c[z>>2]=c[(c[A>>2]|0)+20>>2];c[r>>2]=c[(c[A>>2]|0)+16>>2];while(1){if((c[r>>2]|0)>=((c[t>>2]|0)+(c[(c[k>>2]|0)+8>>2]|0)|0))break a;f=lR(1,0,c[q>>2]|0)|0;h=x;c[h>>2]=f;c[h+4>>2]=C;h=lR(1,0,(c[r>>2]|0)-(c[t>>2]|0)|0)|0;f=y;c[f>>2]=h;c[f+4>>2]=C;f=v;h=l;j=x;d=c[s>>2]|0;if(((c[f>>2]|c[h>>2])&c[j>>2]|0)!=0?1:((c[f+4>>2]|c[h+4>>2])&c[j+4>>2]|0)!=0)c[s>>2]=d+1;else c[s>>2]=d+1e3;f=x;g=v;h=c[g+4>>2]|c[f+4>>2];j=v;c[j>>2]=c[g>>2]|c[f>>2];c[j+4>>2]=h;c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[c[A>>2]>>2]|0))break;f=y;f=hR(c[f>>2]|0,c[f+4>>2]|0,c[u>>2]|0)|0;g=w;h=c[g+4>>2]|C;j=w;c[j>>2]=c[g>>2]|f;c[j+4>>2]=h;c[u>>2]=(c[u>>2]|0)+1}if(!(a[c[z>>2]>>0]&254))break a;Qn(z,r)}}while(0);c[q>>2]=(c[q>>2]|0)+1}c[c[m>>2]>>2]=c[t>>2];c[c[n>>2]>>2]=c[s>>2];A=v;z=c[A+4>>2]|0;y=c[o>>2]|0;c[y>>2]=c[A>>2];c[y+4>>2]=z;y=w;z=c[y+4>>2]|0;A=c[p>>2]|0;c[A>>2]=c[y>>2];c[A+4>>2]=z;i=B;return}function Zn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+16|0;g=m+12|0;h=m+8|0;k=m+4|0;j=m;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;c[k>>2]=c[c[f>>2]>>2];if(!(c[k>>2]|0)){i=m;return}c[j>>2]=c[c[g>>2]>>2];while(1){if((c[j>>2]|0)>=(c[h>>2]|0))break;if(!(a[c[k>>2]>>0]&254)){l=5;break}Qn(k,j)}if((l|0)==5){c[j>>2]=-1;c[k>>2]=0}c[c[g>>2]>>2]=c[j>>2];c[c[f>>2]>>2]=c[k>>2];i=m;return}function _n(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;j=h+16|0;d=h+12|0;g=h+8|0;e=h+4|0;f=h;c[j>>2]=a;c[d>>2]=b;c[e>>2]=0;c[f>>2]=0;c[g>>2]=jl(c[j>>2]|0,36,f,0)|0;if(c[g>>2]|0){b=c[e>>2]|0;j=c[d>>2]|0;c[j>>2]=b;j=c[g>>2]|0;i=h;return j|0}if(100==(ue(c[f>>2]|0)|0))c[e>>2]=De(c[f>>2]|0,0)|0;c[g>>2]=Zd(c[f>>2]|0)|0;b=c[e>>2]|0;j=c[d>>2]|0;c[j>>2]=b;j=c[g>>2]|0;i=h;return j|0}function $n(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=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,D=0,E=0;D=i;i=i+128|0;f=D+112|0;g=D+108|0;E=D+104|0;h=D+100|0;A=D+96|0;u=D+92|0;w=D+88|0;x=D+84|0;z=D+80|0;v=D+76|0;n=D+16|0;m=D+64|0;j=D+60|0;t=D+8|0;y=D+52|0;l=D+48|0;p=D+44|0;q=D+40|0;o=D;r=D+36|0;k=D+32|0;B=D+28|0;s=D+24|0;c[g>>2]=a;c[E>>2]=b;c[h>>2]=e;c[u>>2]=c[E>>2];c[v>>2]=0;a=n;c[a>>2]=0;c[a+4>>2]=0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[j>>2]=0;c[D+56>>2]=640;c[z>>2]=Id(640)|0;if(!(c[z>>2]|0)){c[f>>2]=7;E=c[f>>2]|0;i=D;return E|0}c[x>>2]=(c[z>>2]|0)+568;c[w>>2]=(c[x>>2]|0)+16;c[A>>2]=ao(c[g>>2]|0,m)|0;while(1){if(!((c[A>>2]|0)==0?(c[u>>2]|0)>0:0))break;a=c[(c[g>>2]|0)+248>>2]<<10;E=t;c[E>>2]=a;c[E+4>>2]=((a|0)<0)<<31>>31;c[y>>2]=0;c[l>>2]=0;c[p>>2]=0;c[A>>2]=jl(c[g>>2]|0,28,y,0)|0;Le(c[y>>2]|0,1,c[h>>2]|0)|0;if((ue(c[y>>2]|0)|0)==100){a=Ee(c[y>>2]|0,0)|0;E=n;c[E>>2]=a;c[E+4>>2]=C;c[v>>2]=c[h>>2]}else c[v>>2]=-1;c[A>>2]=Zd(c[y>>2]|0)|0;do if((c[A>>2]|0)==0?(c[m+4>>2]|0)!=0:0){c[q>>2]=c[m+4>>2];E=o;c[E>>2]=0;c[E+4>>2]=0;c[r>>2]=0;c[A>>2]=bo(m,o,r)|0;if((c[v>>2]|0)>=0?(b=n,a=t,a=qR(c[b>>2]|0,c[b+4>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0,b=C,e=o,E=t,E=qR(c[e>>2]|0,c[e+4>>2]|0,c[E>>2]|0,c[E+4>>2]|0)|0,e=C,!((b|0)>(e|0)|(b|0)==(e|0)&a>>>0>=E>>>0)):0){c[m+4>>2]=c[q>>2];break}e=o;a=c[e+4>>2]|0;E=n;c[E>>2]=c[e>>2];c[E+4>>2]=a;c[v>>2]=c[r>>2];c[l>>2]=1;c[j>>2]=1}while(0);if((c[v>>2]|0)<0)break;kR(c[z>>2]|0,0,640)|0;c[(c[x>>2]|0)+12>>2]=1;do if(!(c[A>>2]|0)){E=n;c[A>>2]=co(c[g>>2]|0,c[E>>2]|0,c[E+4>>2]|0,p)|0;if((c[p>>2]|0)!=0?!((c[l>>2]|0)!=0&(c[p>>2]|0)==1):0)break;c[k>>2]=0;a=c[g>>2]|0;E=n;E=gR(c[E>>2]|0,c[E+4>>2]|0,1,0)|0;c[A>>2]=eo(a,E,C,k)|0;if(c[k>>2]|0){E=(c[x>>2]|0)+12|0;c[E>>2]=c[E>>2]|2}}while(0);if(!(c[A>>2]|0)){E=n;c[A>>2]=fo(c[g>>2]|0,c[E>>2]|0,c[E+4>>2]|0,c[v>>2]|0,c[w>>2]|0)|0}if(((0==(c[A>>2]|0)?(c[(c[w>>2]|0)+4>>2]|0)==(c[v>>2]|0):0)?(E=ol(c[g>>2]|0,c[w>>2]|0,c[x>>2]|0)|0,c[A>>2]=E,0==(E|0)):0)?(E=pl(c[g>>2]|0,c[w>>2]|0)|0,c[A>>2]=E,100==(E|0)):0){if((c[l>>2]|0)!=0&(c[p>>2]|0)>0){c[B>>2]=c[(c[w>>2]|0)+40>>2];c[s>>2]=c[(c[w>>2]|0)+44>>2];E=n;c[A>>2]=go(c[g>>2]|0,c[E>>2]|0,c[E+4>>2]|0,(c[p>>2]|0)-1|0,c[B>>2]|0,c[s>>2]|0,c[z>>2]|0)|0}else{E=n;c[A>>2]=ho(c[g>>2]|0,c[E>>2]|0,c[E+4>>2]|0,c[p>>2]|0,c[w>>2]|0,c[z>>2]|0)|0}if((c[A>>2]|0)==0?(c[c[z>>2]>>2]|0)!=0:0){do{c[A>>2]=io(c[g>>2]|0,c[z>>2]|0,c[w>>2]|0)|0;if(!(c[A>>2]|0))c[A>>2]=pl(c[g>>2]|0,c[w>>2]|0)|0;if((c[A>>2]|0)==100?(c[(c[z>>2]|0)+4>>2]|0)>=(c[u>>2]|0):0)c[A>>2]=0}while((c[A>>2]|0)==100);if((c[A>>2]|0)==0?(c[u>>2]=(c[u>>2]|0)-(1+(c[(c[z>>2]|0)+4>>2]|0)),E=n,c[A>>2]=jo(c[g>>2]|0,c[E>>2]|0,c[E+4>>2]|0,c[w>>2]|0,v)|0,(c[v>>2]|0)!=0):0){c[j>>2]=1;E=n;ko(m,c[E>>2]|0,c[E+4>>2]|0,c[v>>2]|0,A)}}if(c[v>>2]|0){a=(c[z>>2]|0)+40|0;a=rR(c[a>>2]|0,c[a+4>>2]|0,-1,-1)|0;E=(c[z>>2]|0)+40|0;c[E>>2]=a;c[E+4>>2]=C}lo(c[g>>2]|0,c[z>>2]|0,A);if((c[v>>2]|0)==0?(d[(c[z>>2]|0)+48>>0]|0|0)==0:0){e=c[g>>2]|0;a=n;a=gR(c[a>>2]|0,c[a+4>>2]|0,1,0)|0;E=(c[z>>2]|0)+40|0;tl(e,a,C,c[E>>2]|0,c[E+4>>2]|0)|0}}vl(c[w>>2]|0)}if((c[j>>2]|0)!=0&(c[A>>2]|0)==0)c[A>>2]=mo(c[g>>2]|0,m)|0;Kd(c[z>>2]|0);Kd(c[m>>2]|0);c[f>>2]=c[A>>2];E=c[f>>2]|0;i=D;return E|0}function ao(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;l=k+24|0;d=k+20|0;g=k+16|0;h=k+12|0;j=k+8|0;e=k+4|0;f=k;c[l>>2]=a;c[d>>2]=b;c[g>>2]=0;c[(c[d>>2]|0)+4>>2]=0;c[h>>2]=jl(c[l>>2]|0,22,g,0)|0;if(c[h>>2]|0){l=c[h>>2]|0;i=k;return l|0}Le(c[g>>2]|0,1,1)|0;if((100==(ue(c[g>>2]|0)|0)?(c[e>>2]=Ae(c[g>>2]|0,0)|0,c[f>>2]=Be(c[g>>2]|0,0)|0,(c[e>>2]|0)!=0):0)?(no(c[d>>2]|0,c[f>>2]|0,h),(c[h>>2]|0)==0):0){iR(c[c[d>>2]>>2]|0,c[e>>2]|0,c[f>>2]|0)|0;c[(c[d>>2]|0)+4>>2]=c[f>>2]}c[j>>2]=Zd(c[g>>2]|0)|0;if(c[h>>2]|0){l=c[h>>2]|0;i=k;return l|0}c[h>>2]=c[j>>2];l=c[h>>2]|0;i=k;return l|0}function bo(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;k=n+20|0;h=n+16|0;g=n+12|0;j=n+8|0;m=n+4|0;l=n;c[h>>2]=b;c[g>>2]=e;c[j>>2]=f;c[m>>2]=c[(c[h>>2]|0)+4>>2];c[l>>2]=(c[(c[h>>2]|0)+4>>2]|0)-2;while(1){if((c[l>>2]|0)<=0)break;if(!(a[(c[c[h>>2]>>2]|0)+((c[l>>2]|0)-1)>>0]&128))break;c[l>>2]=(c[l>>2]|0)+-1}while(1){if((c[l>>2]|0)>0)e=(a[(c[c[h>>2]>>2]|0)+((c[l>>2]|0)-1)>>0]&128|0)!=0;else e=0;b=c[l>>2]|0;if(!e)break;c[l>>2]=b+-1}c[(c[h>>2]|0)+4>>2]=b;b=Ul((c[c[h>>2]>>2]|0)+(c[l>>2]|0)|0,c[g>>2]|0)|0;c[l>>2]=(c[l>>2]|0)+b;b=(c[c[h>>2]>>2]|0)+(c[l>>2]|0)|0;if(d[(c[c[h>>2]>>2]|0)+(c[l>>2]|0)>>0]&128)b=Vl(b,c[j>>2]|0)|0;else{c[c[j>>2]>>2]=d[b>>0];b=1}c[l>>2]=(c[l>>2]|0)+b;if((c[l>>2]|0)!=(c[m>>2]|0)){c[k>>2]=267;m=c[k>>2]|0;i=n;return m|0}else{c[k>>2]=0;m=c[k>>2]|0;i=n;return m|0}return 0}function co(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;l=k+20|0;f=k;g=k+16|0;j=k+12|0;h=k+8|0;c[l>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[g>>2]=e;c[h>>2]=0;c[j>>2]=jl(c[l>>2]|0,8,h,0)|0;if(c[j>>2]|0){l=c[j>>2]|0;i=k;return l|0}e=c[h>>2]|0;l=f;l=gR(c[l>>2]|0,c[l+4>>2]|0,1,0)|0;Me(e,1,l,C)|0;ue(c[h>>2]|0)|0;l=De(c[h>>2]|0,0)|0;c[c[g>>2]>>2]=l;c[j>>2]=Zd(c[h>>2]|0)|0;l=c[j>>2]|0;i=k;return l|0}function eo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;f=l+24|0;m=l+20|0;g=l;h=l+16|0;j=l+12|0;k=l+8|0;c[m>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;c[h>>2]=e;c[k>>2]=jl(c[m>>2]|0,15,j,0)|0;if(c[k>>2]|0){c[f>>2]=c[k>>2];m=c[f>>2]|0;i=l;return m|0}m=c[j>>2]|0;k=g;k=gR(c[k>>2]|0,c[k+4>>2]|0,1,0)|0;Me(m,1,k,C)|0;k=c[j>>2]|0;m=g;m=pR(c[m>>2]|0,c[m+4>>2]|0,1024,0)|0;m=gR(m|0,C|0,1,0)|0;m=rR(m|0,C|0,1024,0)|0;Me(k,2,m,C)|0;c[c[h>>2]>>2]=0;if(100==(ue(c[j>>2]|0)|0)){m=(He(c[j>>2]|0,0)|0)==5&1;c[c[h>>2]>>2]=m}c[f>>2]=Zd(c[j>>2]|0)|0;m=c[f>>2]|0;i=l;return m|0}function fo(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+48|0;g=q+36|0;h=q;j=q+32|0;k=q+28|0;o=q+24|0;n=q+20|0;m=q+16|0;l=q+12|0;p=q+8|0;c[g>>2]=a;a=h;c[a>>2]=b;c[a+4>>2]=d;c[j>>2]=e;c[k>>2]=f;c[n>>2]=0;b=c[k>>2]|0;d=b+56|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));c[m>>2]=c[j>>2]<<2;f=Id(c[m>>2]|0)|0;c[c[k>>2]>>2]=f;if(!(c[c[k>>2]>>2]|0))c[o>>2]=7;else{kR(c[c[k>>2]>>2]|0,0,c[m>>2]|0)|0;c[o>>2]=jl(c[g>>2]|0,12,n,0)|0}if(c[o>>2]|0){p=c[o>>2]|0;i=q;return p|0}m=h;Me(c[n>>2]|0,1,c[m>>2]|0,c[m+4>>2]|0)|0;c[l>>2]=0;while(1){if(c[o>>2]|0)break;if((ue(c[n>>2]|0)|0)!=100)break;if((c[l>>2]|0)>=(c[j>>2]|0))break;r=c[l>>2]|0;b=Ee(c[n>>2]|0,1)|0;d=C;e=Ee(c[n>>2]|0,2)|0;a=C;f=Ee(c[n>>2]|0,3)|0;g=C;h=Ae(c[n>>2]|0,4)|0;m=Be(c[n>>2]|0,4)|0;c[o>>2]=im(r,0,b,d,e,a,f,g,h,m,(c[c[k>>2]>>2]|0)+(c[l>>2]<<2)|0)|0;m=(c[k>>2]|0)+4|0;c[m>>2]=(c[m>>2]|0)+1;c[l>>2]=(c[l>>2]|0)+1}c[p>>2]=Zd(c[n>>2]|0)|0;if(c[o>>2]|0){r=c[o>>2]|0;i=q;return r|0}c[o>>2]=c[p>>2];r=c[o>>2]|0;i=q;return r|0}function go(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=i;i=i+208|0;y=K+200|0;z=K+196|0;k=K+120|0;l=K+192|0;m=K+188|0;n=K+184|0;A=K+180|0;H=K+176|0;G=K+172|0;s=K+112|0;r=K+104|0;q=K+96|0;v=K+168|0;x=K+164|0;I=K+160|0;p=K+156|0;o=K+152|0;t=K+148|0;u=K+48|0;D=K+144|0;w=K+140|0;F=K+136|0;J=K;B=K+132|0;E=K+128|0;c[z>>2]=b;b=k;c[b>>2]=d;c[b+4>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;c[A>>2]=j;c[G>>2]=0;c[H>>2]=jl(c[z>>2]|0,32,G,0)|0;if(!(c[H>>2]|0)){d=s;c[d>>2]=0;c[d+4>>2]=0;d=r;c[d>>2]=0;c[d+4>>2]=0;d=q;c[d>>2]=0;c[d+4>>2]=0;c[v>>2]=0;c[x>>2]=0;c[p>>2]=0;d=c[G>>2]|0;g=k;g=gR(c[g>>2]|0,c[g+4>>2]|0,1,0)|0;Me(d,1,g,C)|0;Le(c[G>>2]|0,2,c[l>>2]|0)|0;g=(ue(c[G>>2]|0)|0)==100;d=c[G>>2]|0;if(!g){c[y>>2]=Zd(d)|0;J=c[y>>2]|0;i=K;return J|0}g=Ee(d,1)|0;j=s;c[j>>2]=g;c[j+4>>2]=C;j=Ee(c[G>>2]|0,2)|0;g=r;c[g>>2]=j;c[g+4>>2]=C;yl(c[G>>2]|0,3,q,(c[A>>2]|0)+40|0);if((c[(c[A>>2]|0)+40+4>>2]|0)<0){j=(c[A>>2]|0)+40|0;j=rR(c[j>>2]|0,c[j+4>>2]|0,-1,-1)|0;g=(c[A>>2]|0)+40|0;c[g>>2]=j;c[g+4>>2]=C}g=(c[A>>2]|0)+40|0;a[(c[A>>2]|0)+48>>0]=(c[g>>2]|0)==0&(c[g+4>>2]|0)==0&1;c[x>>2]=Be(c[G>>2]|0,4)|0;c[v>>2]=Ae(c[G>>2]|0,4)|0;g=q;c[H>>2]=zo(c[z>>2]|0,c[g>>2]|0,c[g+4>>2]|0,p)|0;if((c[H>>2]|0)==0&(c[p>>2]|0)!=0){c[o>>2]=0;c[t>>2]=0;c[H>>2]=am(c[z>>2]|0,c[r>>2]|0,c[r+4>>2]|0,o,t,0)|0;if(!(c[H>>2]|0)){c[H>>2]=so(u,c[o>>2]|0,c[t>>2]|0)|0;while(1){if(!((c[H>>2]|0)==0?(c[u>>2]|0)!=0:0))break;c[H>>2]=wo(u)|0}if((to(c[m>>2]|0,c[n>>2]|0,c[u+24>>2]|0,c[u+24+4>>2]|0)|0)<=0)c[p>>2]=0;xo(u)}Kd(c[o>>2]|0)}a:do if((c[H>>2]|0)==0&(c[p>>2]|0)!=0){c[w>>2]=a[c[v>>2]>>0];u=q;t=s;t=fR(c[u>>2]|0,c[u+4>>2]|0,c[t>>2]|0,c[t+4>>2]|0)|0;t=gR(t|0,C|0,1,0)|0;c[c[A>>2]>>2]=(t|0)/16|0;t=c[s+4>>2]|0;u=(c[A>>2]|0)+24|0;c[u>>2]=c[s>>2];c[u+4>>2]=t;u=q;t=c[u+4>>2]|0;s=(c[A>>2]|0)+32|0;c[s>>2]=c[u>>2];c[s+4>>2]=t;s=k;t=c[s+4>>2]|0;u=(c[A>>2]|0)+8|0;c[u>>2]=c[s>>2];c[u+4>>2]=t;c[(c[A>>2]|0)+16>>2]=c[l>>2];c[D>>2]=(c[w>>2]|0)+1;while(1){if((c[D>>2]|0)>=16)break;u=(c[A>>2]|0)+24|0;t=_(c[D>>2]|0,c[c[A>>2]>>2]|0)|0;t=gR(c[u>>2]|0,c[u+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;u=(c[A>>2]|0)+56+(c[D>>2]<<5)|0;c[u>>2]=t;c[u+4>>2]=C;c[D>>2]=(c[D>>2]|0)+1}c[F>>2]=(c[A>>2]|0)+56+(c[w>>2]<<5);u=(c[A>>2]|0)+24|0;t=_(c[c[A>>2]>>2]|0,c[w>>2]|0)|0;t=gR(c[u>>2]|0,c[u+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;u=c[F>>2]|0;c[u>>2]=t;c[u+4>>2]=C;if((c[x>>2]|0)>(c[(c[z>>2]|0)+224>>2]|0))d=c[x>>2]|0;else d=c[(c[z>>2]|0)+224>>2]|0;no((c[F>>2]|0)+20|0,d,H);if(!(c[H>>2]|0)){iR(c[(c[F>>2]|0)+20>>2]|0,c[v>>2]|0,c[x>>2]|0)|0;c[(c[F>>2]|0)+20+4>>2]=c[x>>2]}c[D>>2]=c[w>>2];while(1){if(!((c[D>>2]|0)>=0?(c[H>>2]|0)==0:0))break a;c[F>>2]=(c[A>>2]|0)+56+(c[D>>2]<<5);c[H>>2]=so(J,c[(c[F>>2]|0)+20>>2]|0,c[(c[F>>2]|0)+20+4>>2]|0)|0;while(1){if(!((c[J>>2]|0)!=0?(c[H>>2]|0)==0:0))break;c[H>>2]=wo(J)|0}no((c[F>>2]|0)+8|0,c[J+24+4>>2]|0,H);if((c[H>>2]|0)==0?(iR(c[(c[F>>2]|0)+8>>2]|0,c[J+24>>2]|0,c[J+24+4>>2]|0)|0,c[(c[F>>2]|0)+8+4>>2]=c[J+24+4>>2],(c[D>>2]|0)>0):0){c[B>>2]=0;c[E>>2]=0;c[F>>2]=(c[A>>2]|0)+56+((c[D>>2]|0)-1<<5);v=J+16|0;w=c[v+4>>2]|0;x=c[F>>2]|0;c[x>>2]=c[v>>2];c[x+4>>2]=w;x=J+16|0;c[H>>2]=am(c[z>>2]|0,c[x>>2]|0,c[x+4>>2]|0,B,E,0)|0;if((c[E>>2]|0)>(c[(c[z>>2]|0)+224>>2]|0))d=c[E>>2]|0;else d=c[(c[z>>2]|0)+224>>2]|0;no((c[F>>2]|0)+20|0,d,H);if(!(c[H>>2]|0)){iR(c[(c[F>>2]|0)+20>>2]|0,c[B>>2]|0,c[E>>2]|0)|0;c[(c[F>>2]|0)+20+4>>2]=c[E>>2]}Kd(c[B>>2]|0)}xo(J);c[D>>2]=(c[D>>2]|0)+-1}}while(0);c[I>>2]=Zd(c[G>>2]|0)|0;if(!(c[H>>2]|0))c[H>>2]=c[I>>2]}c[y>>2]=c[H>>2];J=c[y>>2]|0;i=K;return J|0}function ho(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;h=t+44|0;j=t+40|0;k=t;l=t+36|0;m=t+32|0;n=t+28|0;s=t+24|0;o=t+20|0;p=t+16|0;r=t+12|0;q=t+8|0;c[j>>2]=a;a=k;c[a>>2]=b;c[a+4>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[p>>2]=0;c[r>>2]=0;c[q>>2]=0;c[s>>2]=jl(c[j>>2]|0,29,r,0)|0;if(!(c[s>>2]|0)){g=k;Me(c[r>>2]|0,1,c[g>>2]|0,c[g+4>>2]|0)|0;g=c[(c[m>>2]|0)+4>>2]|0;Me(c[r>>2]|0,2,g,((g|0)<0)<<31>>31)|0;if(100==(ue(c[r>>2]|0)|0))c[p>>2]=De(c[r>>2]|0,0)|0;c[s>>2]=Zd(c[r>>2]|0)|0}if(c[s>>2]|0){c[h>>2]=c[s>>2];s=c[h>>2]|0;i=t;return s|0}c[s>>2]=jl(c[j>>2]|0,10,q,0)|0;if(!(c[s>>2]|0)){if(100==(ue(c[q>>2]|0)|0)){r=Ee(c[q>>2]|0,0)|0;g=(c[n>>2]|0)+24|0;c[g>>2]=r;c[g+4>>2]=C;g=(c[n>>2]|0)+24|0;g=fR(c[g>>2]|0,c[g+4>>2]|0,1,0)|0;r=(c[n>>2]|0)+32|0;c[r>>2]=g;c[r+4>>2]=C;r=c[p>>2]<<4;g=(c[n>>2]|0)+32|0;f=g;r=gR(c[f>>2]|0,c[f+4>>2]|0,r|0,((r|0)<0)<<31>>31|0)|0;c[g>>2]=r;c[g+4>>2]=C}c[s>>2]=Zd(c[q>>2]|0)|0}if(c[s>>2]|0){c[h>>2]=c[s>>2];s=c[h>>2]|0;i=t;return s|0}g=(c[n>>2]|0)+32|0;c[s>>2]=zl(c[j>>2]|0,c[g>>2]|0,c[g+4>>2]|0,0,0)|0;if(c[s>>2]|0){c[h>>2]=c[s>>2];s=c[h>>2]|0;i=t;return s|0}r=k;g=c[r+4>>2]|0;s=(c[n>>2]|0)+8|0;c[s>>2]=c[r>>2];c[s+4>>2]=g;c[c[n>>2]>>2]=c[p>>2];c[(c[n>>2]|0)+16>>2]=c[l>>2];c[o>>2]=0;while(1){if((c[o>>2]|0)>=16)break;s=(c[n>>2]|0)+24|0;g=_(c[o>>2]|0,c[c[n>>2]>>2]|0)|0;g=gR(c[s>>2]|0,c[s+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0;s=(c[n>>2]|0)+56+(c[o>>2]<<5)|0;c[s>>2]=g;c[s+4>>2]=C;c[o>>2]=(c[o>>2]|0)+1}c[h>>2]=0;s=c[h>>2]|0;i=t;return s|0}function io(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+48|0;f=r+44|0;g=r+40|0;s=r+36|0;q=r+32|0;n=r+28|0;h=r+24|0;j=r+20|0;p=r+16|0;l=r+12|0;k=r+8|0;m=r+4|0;o=r;c[f>>2]=b;c[g>>2]=d;c[s>>2]=e;c[q>>2]=c[(c[s>>2]|0)+40>>2];c[n>>2]=c[(c[s>>2]|0)+44>>2];c[h>>2]=c[(c[s>>2]|0)+48>>2];c[j>>2]=c[(c[s>>2]|0)+52>>2];c[p>>2]=0;c[o>>2]=(c[g>>2]|0)+56;c[k>>2]=Gl(c[(c[o>>2]|0)+8>>2]|0,c[(c[o>>2]|0)+8+4>>2]|0,c[q>>2]|0,c[n>>2]|0)|0;c[m>>2]=(c[n>>2]|0)-(c[k>>2]|0);d=c[k>>2]|0;c[l>>2]=Dl(d,((d|0)<0)<<31>>31)|0;d=c[m>>2]|0;d=Dl(d,((d|0)<0)<<31>>31)|0;c[l>>2]=(c[l>>2]|0)+(d+(c[m>>2]|0));d=c[j>>2]|0;d=Dl(d,((d|0)<0)<<31>>31)|0;c[l>>2]=(c[l>>2]|0)+(d+(c[j>>2]|0));if((c[(c[o>>2]|0)+20+4>>2]|0)>0?((c[(c[o>>2]|0)+20+4>>2]|0)+(c[l>>2]|0)|0)>(c[(c[f>>2]|0)+224>>2]|0):0){s=c[o>>2]|0;c[p>>2]=zl(c[f>>2]|0,c[s>>2]|0,c[s+4>>2]|0,c[(c[o>>2]|0)+20>>2]|0,c[(c[o>>2]|0)+20+4>>2]|0)|0;s=(c[g>>2]|0)+4|0;c[s>>2]=(c[s>>2]|0)+1;if(!(c[p>>2]|0))c[p>>2]=yo(c[f>>2]|0,c[g>>2]|0,c[q>>2]|0,(c[k>>2]|0)+1|0)|0;s=c[o>>2]|0;d=s;d=gR(c[d>>2]|0,c[d+4>>2]|0,1,0)|0;c[s>>2]=d;c[s+4>>2]=C;c[(c[o>>2]|0)+8+4>>2]=0;c[(c[o>>2]|0)+20+4>>2]=0;c[m>>2]=c[n>>2];c[l>>2]=1;s=c[m>>2]|0;s=Dl(s,((s|0)<0)<<31>>31)|0;c[l>>2]=(c[l>>2]|0)+(s+(c[m>>2]|0));s=c[j>>2]|0;s=Dl(s,((s|0)<0)<<31>>31)|0;c[l>>2]=(c[l>>2]|0)+(s+(c[j>>2]|0))}d=c[l>>2]|0;s=(c[g>>2]|0)+40|0;e=s;d=gR(c[e>>2]|0,c[e+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0;c[s>>2]=d;c[s+4>>2]=C;no((c[o>>2]|0)+20|0,(c[(c[o>>2]|0)+20+4>>2]|0)+(c[l>>2]|0)|0,p);if(c[p>>2]|0){s=c[p>>2]|0;i=r;return s|0}if(!(c[(c[o>>2]|0)+20+4>>2]|0)){c[(c[o>>2]|0)+20+4>>2]=1;a[c[(c[o>>2]|0)+20>>2]>>0]=0}c[p>>2]=vo((c[o>>2]|0)+20|0,(c[o>>2]|0)+8|0,c[q>>2]|0,c[n>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;s=c[p>>2]|0;i=r;return s|0}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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;g=s+44|0;h=s;j=s+40|0;k=s+36|0;l=s+32|0;n=s+28|0;q=s+24|0;p=s+20|0;m=s+16|0;r=s+12|0;o=s+8|0;c[g>>2]=a;a=h;c[a>>2]=b;c[a+4>>2]=d;c[j>>2]=e;c[k>>2]=f;c[n>>2]=0;c[q>>2]=0;c[l>>2]=(c[(c[j>>2]|0)+4>>2]|0)-1;while(1){if(!((c[l>>2]|0)>=0?(c[q>>2]|0)==0:0))break;c[p>>2]=0;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[(c[j>>2]|0)+4>>2]|0))break;c[p>>2]=c[(c[c[j>>2]>>2]|0)+(c[m>>2]<<2)>>2];if((c[c[p>>2]>>2]|0)==(c[l>>2]|0))break;c[m>>2]=(c[m>>2]|0)+1}if(!(c[(c[p>>2]|0)+40>>2]|0)){c[q>>2]=Fl(c[g>>2]|0,c[p>>2]|0)|0;if(!(c[q>>2]|0)){f=h;c[q>>2]=oo(c[g>>2]|0,c[f>>2]|0,c[f+4>>2]|0,c[c[p>>2]>>2]|0)|0}c[c[k>>2]>>2]=0}else{c[r>>2]=c[(c[p>>2]|0)+64>>2];c[o>>2]=c[(c[p>>2]|0)+60>>2];f=h;c[q>>2]=po(c[g>>2]|0,c[f>>2]|0,c[f+4>>2]|0,c[c[p>>2]>>2]|0,c[r>>2]|0,c[o>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+1}c[l>>2]=(c[l>>2]|0)+-1}if(c[q>>2]|0){f=c[n>>2]|0;r=c[k>>2]|0;c[r>>2]=f;r=c[q>>2]|0;i=s;return r|0}if((c[n>>2]|0)==(c[(c[j>>2]|0)+4>>2]|0)){f=c[n>>2]|0;r=c[k>>2]|0;c[r>>2]=f;r=c[q>>2]|0;i=s;return r|0}f=h;c[q>>2]=qo(c[g>>2]|0,c[f>>2]|0,c[f+4>>2]|0)|0;f=c[n>>2]|0;r=c[k>>2]|0;c[r>>2]=f;r=c[q>>2]|0;i=s;return r|0}function ko(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,j=0,k=0,l=0;k=i;i=i+32|0;g=k+16|0;h=k;j=k+12|0;l=k+8|0;c[g>>2]=a;a=h;c[a>>2]=b;c[a+4>>2]=d;c[j>>2]=e;c[l>>2]=f;no(c[g>>2]|0,(c[(c[g>>2]|0)+4>>2]|0)+20|0,c[l>>2]|0);if(c[c[l>>2]>>2]|0){i=k;return}l=h;l=El((c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+4>>2]|0)|0,c[l>>2]|0,c[l+4>>2]|0)|0;f=(c[g>>2]|0)+4|0;c[f>>2]=(c[f>>2]|0)+l;f=c[j>>2]|0;f=El((c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+4>>2]|0)|0,f,((f|0)<0)<<31>>31)|0;l=(c[g>>2]|0)+4|0;c[l>>2]=(c[l>>2]|0)+f;i=k;return}function lo(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;g=r+36|0;n=r+32|0;o=r+28|0;h=r+24|0;j=r+20|0;p=r+16|0;q=r+12|0;l=r+8|0;k=r+4|0;m=r;c[g>>2]=b;c[n>>2]=e;c[o>>2]=f;c[q>>2]=c[c[o>>2]>>2];c[j>>2]=15;while(1){if((c[j>>2]|0)<0)break;c[l>>2]=(c[n>>2]|0)+56+(c[j>>2]<<5);if((c[(c[l>>2]|0)+20+4>>2]|0)>0)break;Kd(c[(c[l>>2]|0)+20>>2]|0);Kd(c[(c[l>>2]|0)+8>>2]|0);c[j>>2]=(c[j>>2]|0)+-1}if((c[j>>2]|0)<0){i=r;return}if(!(c[j>>2]|0)){c[k>>2]=(c[n>>2]|0)+56+32+20;no(c[k>>2]|0,11,q);if(!(c[q>>2]|0)){a[c[c[k>>2]>>2]>>0]=1;e=(c[n>>2]|0)+56|0;e=1+(El((c[c[k>>2]>>2]|0)+1|0,c[e>>2]|0,c[e+4>>2]|0)|0)|0;c[(c[k>>2]|0)+4>>2]=e}c[j>>2]=1}c[p>>2]=(c[n>>2]|0)+56+(c[j>>2]<<5);c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[j>>2]|0))break;c[m>>2]=(c[n>>2]|0)+56+(c[h>>2]<<5);if((c[q>>2]|0)==0?(c[(c[m>>2]|0)+20+4>>2]|0)>0:0){e=c[m>>2]|0;c[q>>2]=zl(c[g>>2]|0,c[e>>2]|0,c[e+4>>2]|0,c[(c[m>>2]|0)+20>>2]|0,c[(c[m>>2]|0)+20+4>>2]|0)|0}Kd(c[(c[m>>2]|0)+20>>2]|0);Kd(c[(c[m>>2]|0)+8>>2]|0);c[h>>2]=(c[h>>2]|0)+1}if(!(c[q>>2]|0)){m=c[g>>2]|0;g=(c[n>>2]|0)+8|0;g=gR(c[g>>2]|0,c[g+4>>2]|0,1,0)|0;h=(c[n>>2]|0)+24|0;j=(c[n>>2]|0)+56|0;b=(c[n>>2]|0)+32|0;if(!(d[(c[n>>2]|0)+48>>0]|0)){l=(c[n>>2]|0)+40|0;k=c[l>>2]|0;l=c[l+4>>2]|0}else{k=0;l=0}c[q>>2]=Bl(m,g,C,c[(c[n>>2]|0)+16>>2]|0,c[h>>2]|0,c[h+4>>2]|0,c[j>>2]|0,c[j+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0,k,l,c[(c[p>>2]|0)+20>>2]|0,c[(c[p>>2]|0)+20+4>>2]|0)|0}Kd(c[(c[p>>2]|0)+20>>2]|0);Kd(c[(c[p>>2]|0)+8>>2]|0);c[c[o>>2]>>2]=c[q>>2];i=r;return}function mo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;h=g+12|0;d=g+8|0;e=g+4|0;f=g;c[h>>2]=a;c[d>>2]=b;c[e>>2]=0;c[f>>2]=jl(c[h>>2]|0,23,e,0)|0;if(c[f>>2]|0){h=c[f>>2]|0;i=g;return h|0}Le(c[e>>2]|0,1,1)|0;Je(c[e>>2]|0,2,c[c[d>>2]>>2]|0,c[(c[d>>2]|0)+4>>2]|0,0)|0;ue(c[e>>2]|0)|0;c[f>>2]=Zd(c[e>>2]|0)|0;h=c[f>>2]|0;i=g;return h|0}function no(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(c[c[g>>2]>>2]|0){i=k;return}if((c[f>>2]|0)<=(c[(c[e>>2]|0)+8>>2]|0)){i=k;return}c[j>>2]=c[f>>2];c[h>>2]=Ld(c[c[e>>2]>>2]|0,c[j>>2]|0)|0;if(c[h>>2]|0){c[(c[e>>2]|0)+8>>2]=c[j>>2];c[c[e>>2]>>2]=c[h>>2];i=k;return}else{c[c[g>>2]>>2]=7;i=k;return}}function oo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;l=k+20|0;f=k;g=k+16|0;j=k+12|0;h=k+8|0;c[l>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[g>>2]=e;c[h>>2]=0;c[j>>2]=jl(c[l>>2]|0,30,h,0)|0;if(c[j>>2]|0){l=c[j>>2]|0;i=k;return l|0}l=f;Me(c[h>>2]|0,1,c[l>>2]|0,c[l+4>>2]|0)|0;Le(c[h>>2]|0,2,c[g>>2]|0)|0;ue(c[h>>2]|0)|0;c[j>>2]=Zd(c[h>>2]|0)|0;l=c[j>>2]|0;i=k;return l|0}function po(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,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;B=i;i=i+112|0;h=B+104|0;j=B+24|0;k=B+100|0;l=B+96|0;m=B+92|0;y=B+88|0;A=B+76|0;p=B+64|0;q=B+16|0;r=B+8|0;s=B;x=B+60|0;z=B+56|0;o=B+52|0;u=B+48|0;n=B+44|0;t=B+40|0;w=B+36|0;v=B+32|0;c[h>>2]=a;a=j;c[a>>2]=b;c[a+4>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[y>>2]=0;c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;c[p>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;f=q;c[f>>2]=0;c[f+4>>2]=0;f=r;c[f>>2]=0;c[f+4>>2]=0;f=s;c[f>>2]=0;c[f+4>>2]=0;c[x>>2]=0;c[y>>2]=jl(c[h>>2]|0,32,x,0)|0;if(!(c[y>>2]|0)){f=j;Me(c[x>>2]|0,1,c[f>>2]|0,c[f+4>>2]|0)|0;Le(c[x>>2]|0,2,c[k>>2]|0)|0;if(100==(ue(c[x>>2]|0)|0)){c[o>>2]=Ae(c[x>>2]|0,4)|0;c[u>>2]=Be(c[x>>2]|0,4)|0;a=Ee(c[x>>2]|0,1)|0;f=s;c[f>>2]=a;c[f+4>>2]=C;c[y>>2]=ro(c[o>>2]|0,c[u>>2]|0,A,c[l>>2]|0,c[m>>2]|0,q)|0}c[z>>2]=Zd(c[x>>2]|0)|0;if(!(c[y>>2]|0))c[y>>2]=c[z>>2]}while(1){f=q;if(!((c[y>>2]|0)==0?(c[f>>2]|0)!=0|(c[f+4>>2]|0)!=0:0))break;c[n>>2]=0;c[t>>2]=0;x=q;z=c[x+4>>2]|0;f=r;c[f>>2]=c[x>>2];c[f+4>>2]=z;f=q;c[y>>2]=am(c[h>>2]|0,c[f>>2]|0,c[f+4>>2]|0,n,t,0)|0;if(!(c[y>>2]|0))c[y>>2]=ro(c[n>>2]|0,c[t>>2]|0,p,c[l>>2]|0,c[m>>2]|0,q)|0;if(!(c[y>>2]|0)){f=r;c[y>>2]=zl(c[h>>2]|0,c[f>>2]|0,c[f+4>>2]|0,c[p>>2]|0,c[p+4>>2]|0)|0}Kd(c[n>>2]|0)}f=r;if((c[y>>2]|0)==0&((c[f>>2]|0)!=0|(c[f+4>>2]|0)!=0)?(c[w>>2]=0,c[y>>2]=jl(c[h>>2]|0,17,w,0)|0,(c[y>>2]|0)==0):0){z=s;Me(c[w>>2]|0,1,c[z>>2]|0,c[z+4>>2]|0)|0;z=c[w>>2]|0;f=r;f=fR(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;Me(z,2,f,C)|0;ue(c[w>>2]|0)|0;c[y>>2]=Zd(c[w>>2]|0)|0}if(c[y>>2]|0){f=c[A>>2]|0;Kd(f);f=c[p>>2]|0;Kd(f);f=c[y>>2]|0;i=B;return f|0}c[v>>2]=0;c[y>>2]=jl(c[h>>2]|0,33,v,0)|0;if(c[y>>2]|0){f=c[A>>2]|0;Kd(f);f=c[p>>2]|0;Kd(f);f=c[y>>2]|0;i=B;return f|0}f=r;Me(c[v>>2]|0,1,c[f>>2]|0,c[f+4>>2]|0)|0;Je(c[v>>2]|0,2,c[A>>2]|0,c[A+4>>2]|0,0)|0;f=j;Me(c[v>>2]|0,3,c[f>>2]|0,c[f+4>>2]|0)|0;Le(c[v>>2]|0,4,c[k>>2]|0)|0;ue(c[v>>2]|0)|0;c[y>>2]=Zd(c[v>>2]|0)|0;f=c[A>>2]|0;Kd(f);f=c[p>>2]|0;Kd(f);f=c[y>>2]|0;i=B;return f|0}function qo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;f=s+44|0;g=s;p=s+40|0;h=s+36|0;m=s+32|0;l=s+28|0;k=s+24|0;n=s+20|0;o=s+16|0;q=s+12|0;j=s+8|0;c[f>>2]=b;b=g;c[b>>2]=d;c[b+4>>2]=e;c[h>>2]=0;c[m>>2]=0;c[l>>2]=0;c[n>>2]=0;c[o>>2]=0;c[p>>2]=jl(c[f>>2]|0,35,n,0)|0;if(!(c[p>>2]|0)){b=g;Me(c[n>>2]|0,1,c[b>>2]|0,c[b+4>>2]|0)|0;while(1){if(100!=(ue(c[n>>2]|0)|0))break;if((c[m>>2]|0)>=(c[l>>2]|0)){c[l>>2]=(c[l>>2]|0)+16;c[j>>2]=Ld(c[h>>2]|0,c[l>>2]<<2)|0;if(!(c[j>>2]|0)){r=6;break}c[h>>2]=c[j>>2]}e=De(c[n>>2]|0,0)|0;b=c[m>>2]|0;c[m>>2]=b+1;c[(c[h>>2]|0)+(b<<2)>>2]=e}if((r|0)==6)c[p>>2]=7;c[q>>2]=Zd(c[n>>2]|0)|0;if(!(c[p>>2]|0))c[p>>2]=c[q>>2]}if(!(c[p>>2]|0))c[p>>2]=jl(c[f>>2]|0,31,o,0)|0;if(!(c[p>>2]|0)){r=g;Me(c[o>>2]|0,2,c[r>>2]|0,c[r+4>>2]|0)|0}a[(c[f>>2]|0)+232>>0]=1;c[k>>2]=0;while(1){if(c[p>>2]|0){r=21;break}if((c[k>>2]|0)>=(c[m>>2]|0)){r=21;break}if((c[(c[h>>2]|0)+(c[k>>2]<<2)>>2]|0)!=(c[k>>2]|0)){Le(c[o>>2]|0,3,c[(c[h>>2]|0)+(c[k>>2]<<2)>>2]|0)|0;Le(c[o>>2]|0,1,c[k>>2]|0)|0;ue(c[o>>2]|0)|0;c[p>>2]=Zd(c[o>>2]|0)|0}c[k>>2]=(c[k>>2]|0)+1}if((r|0)==21){a[(c[f>>2]|0)+232>>0]=0;Kd(c[h>>2]|0);i=s;return c[p>>2]|0}return 0}function ro(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 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;w=i;i=i+112|0;j=w+96|0;k=w+92|0;l=w+88|0;m=w+84|0;n=w+80|0;o=w+76|0;p=w+72|0;t=w;r=w+60|0;s=w+56|0;q=w+52|0;u=w+48|0;c[k>>2]=b;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[r>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[s>>2]=0;c[q>>2]=(a[c[k>>2]>>0]|0)==0&1;no(c[m>>2]|0,c[l>>2]|0,s);if(c[s>>2]|0){c[j>>2]=c[s>>2];v=c[j>>2]|0;i=w;return v|0}c[(c[m>>2]|0)+4>>2]=0;c[s>>2]=so(t,c[k>>2]|0,c[l>>2]|0)|0;while(1){if(!((c[s>>2]|0)==0?(c[t>>2]|0)!=0:0))break;if(!(c[(c[m>>2]|0)+4>>2]|0)){c[u>>2]=to(c[t+24>>2]|0,c[t+24+4>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;if((c[u>>2]|0)>=0?!((c[q>>2]|0)==0&(c[u>>2]|0)==0):0){h=t+16|0;uo(c[m>>2]|0,a[c[k>>2]>>0]|0,c[h>>2]|0,c[h+4>>2]|0);h=t+16|0;f=c[h+4>>2]|0;v=c[p>>2]|0;c[v>>2]=c[h>>2];c[v+4>>2]=f;v=9}}else v=9;if((v|0)==9?(v=0,c[s>>2]=vo(c[m>>2]|0,r,c[t+24>>2]|0,c[t+24+4>>2]|0,c[t+36>>2]|0,c[t+40>>2]|0)|0,(c[s>>2]|0)!=0):0)break;c[s>>2]=wo(t)|0}if(!(c[(c[m>>2]|0)+4>>2]|0)){u=t+16|0;uo(c[m>>2]|0,a[c[k>>2]>>0]|0,c[u>>2]|0,c[u+4>>2]|0);u=t+16|0;f=c[u+4>>2]|0;v=c[p>>2]|0;c[v>>2]=c[u>>2];c[v+4>>2]=f}xo(t);Kd(c[r>>2]|0);c[j>>2]=c[s>>2];v=c[j>>2]|0;i=w;return v|0}function so(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j+8|0;f=j+4|0;g=j;c[h>>2]=b;c[f>>2]=d;c[g>>2]=e;d=c[h>>2]|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));c[c[h>>2]>>2]=c[f>>2];c[(c[h>>2]|0)+4>>2]=c[g>>2];d=c[h>>2]|0;if(a[c[c[h>>2]>>2]>>0]|0){g=1+(Ul((c[d>>2]|0)+1|0,(c[h>>2]|0)+16|0)|0)|0;c[(c[h>>2]|0)+8>>2]=g;h=c[h>>2]|0;h=wo(h)|0;i=j;return h|0}else{c[d+8>>2]=1;h=c[h>>2]|0;h=wo(h)|0;i=j;return h|0}return 0}function to(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;j=i;i=i+32|0;m=j+20|0;f=j+16|0;l=j+12|0;g=j+8|0;k=j+4|0;h=j;c[m>>2]=a;c[f>>2]=b;c[l>>2]=d;c[g>>2]=e;c[k>>2]=(c[f>>2]|0)<(c[g>>2]|0)?c[f>>2]|0:c[g>>2]|0;c[h>>2]=vQ(c[m>>2]|0,c[l>>2]|0,c[k>>2]|0)|0;if(c[h>>2]|0){m=c[h>>2]|0;i=j;return m|0}c[h>>2]=(c[f>>2]|0)-(c[g>>2]|0);m=c[h>>2]|0;i=j;return m|0}function uo(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;j=i;i=i+16|0;g=j+12|0;k=j+8|0;h=j;c[g>>2]=b;c[k>>2]=d;b=h;c[b>>2]=e;c[b+4>>2]=f;a[c[c[g>>2]>>2]>>0]=c[k>>2];b=h;e=c[g>>2]|0;if((c[b>>2]|0)!=0|(c[b+4>>2]|0)!=0){k=h;k=1+(El((c[e>>2]|0)+1|0,c[k>>2]|0,c[k+4>>2]|0)|0)|0;c[(c[g>>2]|0)+4>>2]=k;i=j;return}else{c[e+4>>2]=1;i=j;return}}function vo(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;h=t+40|0;j=t+36|0;k=t+32|0;l=t+28|0;m=t+24|0;n=t+20|0;o=t+16|0;s=t+12|0;p=t+8|0;q=t+4|0;r=t;c[j>>2]=a;c[k>>2]=b;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[s>>2]=0;c[p>>2]=(c[(c[k>>2]|0)+4>>2]|0)==0&1;no(c[k>>2]|0,c[m>>2]|0,s);if(c[s>>2]|0){c[h>>2]=c[s>>2];d=c[h>>2]|0;i=t;return d|0}c[q>>2]=Gl(c[c[k>>2]>>2]|0,c[(c[k>>2]|0)+4>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;c[r>>2]=(c[m>>2]|0)-(c[q>>2]|0);iR(c[c[k>>2]>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;c[(c[k>>2]|0)+4>>2]=c[m>>2];if(!(c[p>>2]|0)){s=c[q>>2]|0;s=El((c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+4>>2]|0)|0,s,((s|0)<0)<<31>>31)|0;d=(c[j>>2]|0)+4|0;c[d>>2]=(c[d>>2]|0)+s}s=c[r>>2]|0;s=El((c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+4>>2]|0)|0,s,((s|0)<0)<<31>>31)|0;d=(c[j>>2]|0)+4|0;c[d>>2]=(c[d>>2]|0)+s;iR((c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+4>>2]|0)|0,(c[l>>2]|0)+(c[q>>2]|0)|0,c[r>>2]|0)|0;d=(c[j>>2]|0)+4|0;c[d>>2]=(c[d>>2]|0)+(c[r>>2]|0);if(c[n>>2]|0){s=c[o>>2]|0;s=El((c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+4>>2]|0)|0,s,((s|0)<0)<<31>>31)|0;d=(c[j>>2]|0)+4|0;c[d>>2]=(c[d>>2]|0)+s;iR((c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+4>>2]|0)|0,c[n>>2]|0,c[o>>2]|0)|0;d=(c[j>>2]|0)+4|0;c[d>>2]=(c[d>>2]|0)+(c[o>>2]|0)}c[h>>2]=0;d=c[h>>2]|0;i=t;return d|0}function wo(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;g=j+16|0;b=j+12|0;e=j+8|0;f=j+4|0;h=j;c[g>>2]=a;c[b>>2]=(c[(c[g>>2]|0)+24+4>>2]|0)==0&1;c[e>>2]=0;c[f>>2]=0;c[h>>2]=0;a=(c[g>>2]|0)+16|0;if(((c[a>>2]|0)!=0|(c[a+4>>2]|0)!=0)&(c[b>>2]|0)==0){a=(c[g>>2]|0)+16|0;k=a;k=gR(c[k>>2]|0,c[k+4>>2]|0,1,0)|0;c[a>>2]=k;c[a+4>>2]=C}if((c[(c[g>>2]|0)+8>>2]|0)>=(c[(c[g>>2]|0)+4>>2]|0)){c[c[g>>2]>>2]=0;k=c[h>>2]|0;i=j;return k|0}if(!(c[b>>2]|0)){b=(c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+8>>2]|0)|0;if((d[(c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+8>>2]|0)>>0]|0)&128)b=Vl(b,e)|0;else{c[e>>2]=d[b>>0];b=1}k=(c[g>>2]|0)+8|0;c[k>>2]=(c[k>>2]|0)+b}b=(c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+8>>2]|0)|0;if((d[(c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+8>>2]|0)>>0]|0)&128)b=Vl(b,f)|0;else{c[f>>2]=d[b>>0];b=1}k=(c[g>>2]|0)+8|0;c[k>>2]=(c[k>>2]|0)+b;no((c[g>>2]|0)+24|0,(c[e>>2]|0)+(c[f>>2]|0)|0,h);if(c[h>>2]|0){k=c[h>>2]|0;i=j;return k|0}iR((c[(c[g>>2]|0)+24>>2]|0)+(c[e>>2]|0)|0,(c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+8>>2]|0)|0,c[f>>2]|0)|0;c[(c[g>>2]|0)+24+4>>2]=(c[e>>2]|0)+(c[f>>2]|0);k=(c[g>>2]|0)+8|0;c[k>>2]=(c[k>>2]|0)+(c[f>>2]|0);k=(c[g>>2]|0)+16|0;if(!((c[k>>2]|0)==0&(c[k+4>>2]|0)==0)){k=c[h>>2]|0;i=j;return k|0}b=(c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+8>>2]|0)|0;if((d[(c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+8>>2]|0)>>0]|0)&128)b=Vl(b,(c[g>>2]|0)+40|0)|0;else{c[(c[g>>2]|0)+40>>2]=d[b>>0];b=1}k=(c[g>>2]|0)+8|0;c[k>>2]=(c[k>>2]|0)+b;c[(c[g>>2]|0)+36>>2]=(c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+8>>2]|0);k=(c[g>>2]|0)+8|0;c[k>>2]=(c[k>>2]|0)+(c[(c[g>>2]|0)+40>>2]|0);k=c[h>>2]|0;i=j;return k|0}function xo(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Kd(c[(c[d>>2]|0)+24>>2]|0);i=b;return}function yo(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=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;v=i;i=i+64|0;t=v+60|0;g=v+56|0;h=v+52|0;j=v+48|0;k=v+44|0;n=v+8|0;l=v+40|0;m=v;s=v+36|0;u=v+32|0;o=v+28|0;q=v+24|0;p=v+20|0;r=v+16|0;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;b=(c[h>>2]|0)+56|0;d=c[b+4>>2]|0;e=n;c[e>>2]=c[b>>2];c[e+4>>2]=d;c[l>>2]=1;while(1){if((c[l>>2]|0)>=16){g=16;break}e=m;c[e>>2]=0;c[e+4>>2]=0;c[s>>2]=(c[h>>2]|0)+56+(c[l>>2]<<5);c[u>>2]=0;c[o>>2]=Gl(c[(c[s>>2]|0)+8>>2]|0,c[(c[s>>2]|0)+8+4>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;c[q>>2]=(c[k>>2]|0)-(c[o>>2]|0);e=c[o>>2]|0;c[p>>2]=Dl(e,((e|0)<0)<<31>>31)|0;e=c[q>>2]|0;e=Dl(e,((e|0)<0)<<31>>31)|0;c[p>>2]=(c[p>>2]|0)+(e+(c[q>>2]|0));if((c[(c[s>>2]|0)+8+4>>2]|0)!=0?((c[(c[s>>2]|0)+20+4>>2]|0)+(c[p>>2]|0)|0)>(c[(c[g>>2]|0)+224>>2]|0):0){d=c[s>>2]|0;c[u>>2]=zl(c[g>>2]|0,c[d>>2]|0,c[d+4>>2]|0,c[(c[s>>2]|0)+20>>2]|0,c[(c[s>>2]|0)+20+4>>2]|0)|0;a[c[(c[s>>2]|0)+20>>2]>>0]=c[l>>2];d=(c[(c[s>>2]|0)+20>>2]|0)+1|0;b=n;b=gR(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;b=1+(El(d,b,C)|0)|0;c[(c[s>>2]|0)+20+4>>2]=b;b=c[s>>2]|0;d=c[b+4>>2]|0;e=m;c[e>>2]=c[b>>2];c[e+4>>2]=d;e=c[s>>2]|0;d=e;d=gR(c[d>>2]|0,c[d+4>>2]|0,1,0)|0;c[e>>2]=d;c[e+4>>2]=C;c[(c[s>>2]|0)+8+4>>2]=0}else{c[r>>2]=(c[s>>2]|0)+20;if((c[(c[r>>2]|0)+4>>2]|0)==0?(no(c[r>>2]|0,c[(c[g>>2]|0)+224>>2]|0,u),(c[u>>2]|0)==0):0){a[c[c[r>>2]>>2]>>0]=c[l>>2];e=n;e=1+(El((c[c[r>>2]>>2]|0)+1|0,c[e>>2]|0,c[e+4>>2]|0)|0)|0;c[(c[r>>2]|0)+4>>2]=e}no(c[r>>2]|0,(c[(c[r>>2]|0)+4>>2]|0)+(c[p>>2]|0)|0,u);no((c[s>>2]|0)+8|0,c[k>>2]|0,u);if(!(c[u>>2]|0)){if(c[(c[s>>2]|0)+8+4>>2]|0){d=c[o>>2]|0;d=El((c[c[r>>2]>>2]|0)+(c[(c[r>>2]|0)+4>>2]|0)|0,d,((d|0)<0)<<31>>31)|0;e=(c[r>>2]|0)+4|0;c[e>>2]=(c[e>>2]|0)+d}d=c[q>>2]|0;d=El((c[c[r>>2]>>2]|0)+(c[(c[r>>2]|0)+4>>2]|0)|0,d,((d|0)<0)<<31>>31)|0;e=(c[r>>2]|0)+4|0;c[e>>2]=(c[e>>2]|0)+d;iR((c[c[r>>2]>>2]|0)+(c[(c[r>>2]|0)+4>>2]|0)|0,(c[j>>2]|0)+(c[o>>2]|0)|0,c[q>>2]|0)|0;e=(c[r>>2]|0)+4|0;c[e>>2]=(c[e>>2]|0)+(c[q>>2]|0);iR(c[(c[s>>2]|0)+8>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;c[(c[s>>2]|0)+8+4>>2]=c[k>>2]}}e=m;if((c[u>>2]|0)!=0|(c[e>>2]|0)==0&(c[e+4>>2]|0)==0){g=14;break}b=m;d=c[b+4>>2]|0;e=n;c[e>>2]=c[b>>2];c[e+4>>2]=d;c[l>>2]=(c[l>>2]|0)+1}if((g|0)==14){c[t>>2]=c[u>>2];u=c[t>>2]|0;i=v;return u|0}else if((g|0)==16){c[t>>2]=0;u=c[t>>2]|0;i=v;return u|0}return 0}function zo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;m=l+24|0;f=l;g=l+20|0;h=l+16|0;j=l+12|0;k=l+8|0;c[m>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[g>>2]=e;c[h>>2]=0;c[j>>2]=0;c[k>>2]=jl(c[m>>2]|0,34,j,0)|0;if(c[k>>2]|0){e=c[h>>2]|0;m=c[g>>2]|0;c[m>>2]=e;m=c[k>>2]|0;i=l;return m|0}m=f;Me(c[j>>2]|0,1,c[m>>2]|0,c[m+4>>2]|0)|0;if(100==(ue(c[j>>2]|0)|0))c[h>>2]=1;c[k>>2]=Zd(c[j>>2]|0)|0;e=c[h>>2]|0;m=c[g>>2]|0;c[m>>2]=e;m=c[k>>2]|0;i=l;return m|0}function Ao(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=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;t=i;i=i+64|0;u=t+48|0;g=t+44|0;h=t+40|0;j=t+36|0;q=t+32|0;s=t+28|0;o=t+24|0;l=t+20|0;k=t+16|0;p=t+12|0;m=t+8|0;r=t+4|0;n=t;c[u>>2]=b;c[g>>2]=d;c[h>>2]=e;c[j>>2]=f;c[q>>2]=c[u>>2];c[s>>2]=0;c[o>>2]=0;c[l>>2]=0;c[k>>2]=0;c[p>>2]=0;c[m>>2]=0;if(((c[g>>2]|0)>1?(fe(c[c[h>>2]>>2]|0)|0)==5:0)?(fe(c[(c[h>>2]|0)+((c[(c[q>>2]|0)+24>>2]|0)+2<<2)>>2]|0)|0)!=5:0){c[s>>2]=Bo(c[q>>2]|0,c[(c[h>>2]|0)+((c[(c[q>>2]|0)+24>>2]|0)+2<<2)>>2]|0)|0;u=c[k>>2]|0;Kd(u);u=c[q>>2]|0;sm(u);u=c[s>>2]|0;i=t;return u|0}if((c[g>>2]|0)>1?(de(c[(c[h>>2]|0)+(2+(c[(c[q>>2]|0)+24>>2]|0)+2<<2)>>2]|0)|0)<0:0){c[s>>2]=19;u=c[k>>2]|0;Kd(u);u=c[q>>2]|0;sm(u);u=c[s>>2]|0;i=t;return u|0}c[k>>2]=Id((c[(c[q>>2]|0)+24>>2]|0)+1<<2<<1)|0;if(!(c[k>>2]|0)){c[s>>2]=7;u=c[k>>2]|0;Kd(u);u=c[q>>2]|0;sm(u);u=c[s>>2]|0;i=t;return u|0}c[l>>2]=(c[k>>2]|0)+((c[(c[q>>2]|0)+24>>2]|0)+1<<2);kR(c[k>>2]|0,0,(c[(c[q>>2]|0)+24>>2]|0)+1<<2<<1|0)|0;c[s>>2]=Co(c[q>>2]|0)|0;if(c[s>>2]|0){u=c[k>>2]|0;Kd(u);u=c[q>>2]|0;sm(u);u=c[s>>2]|0;i=t;return u|0}do if((c[g>>2]|0)>1?(c[(c[q>>2]|0)+40>>2]|0)==0:0){c[r>>2]=c[(c[h>>2]|0)+(3+(c[(c[q>>2]|0)+24>>2]|0)<<2)>>2];if((fe(c[r>>2]|0)|0)==5)c[r>>2]=c[(c[h>>2]|0)+4>>2];if((fe(c[r>>2]|0)|0)!=5){if((fe(c[c[h>>2]>>2]|0)|0)!=5?(f=ee(c[c[h>>2]>>2]|0)|0, -u=C,b=ee(c[r>>2]|0)|0,!((f|0)!=(b|0)|(u|0)!=(C|0))):0)break;u=(gf(c[(c[q>>2]|0)+12>>2]|0)|0)==5;e=c[q>>2]|0;if(u){c[s>>2]=Do(e,c[r>>2]|0,p,c[k>>2]|0)|0;break}else{c[s>>2]=Eo(e,c[h>>2]|0,c[j>>2]|0)|0;c[m>>2]=1;break}}}while(0);if(c[s>>2]|0){u=c[k>>2]|0;Kd(u);u=c[q>>2]|0;sm(u);u=c[s>>2]|0;i=t;return u|0}if((fe(c[c[h>>2]>>2]|0)|0)!=5){c[s>>2]=Do(c[q>>2]|0,c[c[h>>2]>>2]|0,p,c[k>>2]|0)|0;c[o>>2]=1}if((c[g>>2]|0)>1&(c[s>>2]|0)==0){c[n>>2]=de(c[(c[h>>2]|0)+(2+(c[(c[q>>2]|0)+24>>2]|0)+2<<2)>>2]|0)|0;if(((c[m>>2]|0)==0?(c[s>>2]=Eo(c[q>>2]|0,c[h>>2]|0,c[j>>2]|0)|0,(c[s>>2]|0)==19):0)?(c[(c[q>>2]|0)+40>>2]|0)==0:0)c[s>>2]=267;do if(!(c[s>>2]|0)){if((c[o>>2]|0)!=0?(r=c[j>>2]|0,u=(c[q>>2]|0)+264|0,!((c[r>>2]|0)!=(c[u>>2]|0)?1:(c[r+4>>2]|0)!=(c[u+4>>2]|0))):0)break;u=c[j>>2]|0;c[s>>2]=Fo(c[q>>2]|0,0,c[n>>2]|0,c[u>>2]|0,c[u+4>>2]|0)|0}while(0);if(!(c[s>>2]|0))c[s>>2]=Go(c[q>>2]|0,c[n>>2]|0,c[h>>2]|0,c[l>>2]|0)|0;if(a[(c[q>>2]|0)+230>>0]|0)Ho(s,c[q>>2]|0,c[l>>2]|0);c[p>>2]=(c[p>>2]|0)+1}if(!(a[(c[q>>2]|0)+228>>0]|0)){u=c[k>>2]|0;Kd(u);u=c[q>>2]|0;sm(u);u=c[s>>2]|0;i=t;return u|0}Io(s,c[q>>2]|0,c[l>>2]|0,c[k>>2]|0,c[p>>2]|0);u=c[k>>2]|0;Kd(u);u=c[q>>2]|0;sm(u);u=c[s>>2]|0;i=t;return u|0}function Bo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;d=k+20|0;e=k+16|0;l=k+12|0;g=k+8|0;h=k+4|0;f=k;c[e>>2]=a;c[l>>2]=b;c[h>>2]=ae(c[l>>2]|0)|0;c[f>>2]=be(c[l>>2]|0)|0;if(!(c[h>>2]|0)){c[d>>2]=7;l=c[d>>2]|0;i=k;return l|0}if((c[f>>2]|0)==8?0==(zd(c[h>>2]|0,21373,8)|0):0)c[g>>2]=Nn(c[e>>2]|0,0)|0;else j=6;do if((j|0)==6){if((c[f>>2]|0)==7?0==(zd(c[h>>2]|0,24342,7)|0):0){c[g>>2]=So(c[e>>2]|0)|0;break}if((c[f>>2]|0)==15?0==(zd(c[h>>2]|0,24350,15)|0):0){c[g>>2]=To(c[e>>2]|0)|0;break}if((c[f>>2]|0)>6?0==(zd(c[h>>2]|0,24366,6)|0):0){c[g>>2]=Uo(c[e>>2]|0,(c[h>>2]|0)+6|0)|0;break}if((c[f>>2]|0)>10?0==(zd(c[h>>2]|0,24373,10)|0):0){c[g>>2]=Vo(c[e>>2]|0,(c[h>>2]|0)+10|0)|0;break}c[g>>2]=1}while(0);c[d>>2]=c[g>>2];l=c[d>>2]|0;i=k;return l|0}function Co(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;e=f+4|0;d=f;c[b>>2]=a;c[e>>2]=0;if((c[(c[b>>2]|0)+260>>2]|0)==0?(c[e>>2]=jl(c[b>>2]|0,16,d,0)|0,(c[e>>2]|0)==0):0){Ne(c[d>>2]|0,1)|0;ue(c[d>>2]|0)|0;c[e>>2]=Zd(c[d>>2]|0)|0}i=f;return c[e>>2]|0}function Do(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;g=n+24|0;h=n+20|0;j=n+16|0;k=n+12|0;m=n+8|0;o=n+4|0;l=n;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;c[m>>2]=0;c[o>>2]=0;No(m,c[g>>2]|0,c[h>>2]|0,c[k>>2]|0,o);if(!((c[o>>2]|0)!=0&(c[m>>2]|0)==0)){o=c[m>>2]|0;i=n;return o|0}c[l>>2]=0;c[m>>2]=Oo(c[g>>2]|0,c[h>>2]|0,l)|0;if(c[m>>2]|0){o=c[m>>2]|0;i=n;return o|0}if(c[l>>2]|0){c[m>>2]=Po(c[g>>2]|0,1)|0;c[c[j>>2]>>2]=0;kR(c[k>>2]|0,0,(c[(c[g>>2]|0)+24>>2]|0)+1<<2<<1|0)|0;o=c[m>>2]|0;i=n;return o|0}c[c[j>>2]>>2]=(c[c[j>>2]>>2]|0)-1;if(!(c[(c[g>>2]|0)+40>>2]|0))Qo(m,c[g>>2]|0,0,h);if(!(a[(c[g>>2]|0)+230>>0]|0)){o=c[m>>2]|0;i=n;return o|0}Qo(m,c[g>>2]|0,19,h);o=c[m>>2]|0;i=n;return o|0}function Eo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;e=m+24|0;f=m+20|0;g=m+16|0;h=m+12|0;l=m+8|0;j=m+4|0;k=m;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;b=c[f>>2]|0;if(c[(c[f>>2]|0)+40>>2]|0){c[k>>2]=c[(c[g>>2]|0)+((c[b+24>>2]|0)+3<<2)>>2];if((fe(c[k>>2]|0)|0)==5)c[k>>2]=c[(c[g>>2]|0)+4>>2];if((fe(c[k>>2]|0)|0)!=1){c[e>>2]=19;l=c[e>>2]|0;i=m;return l|0}else{k=ee(c[k>>2]|0)|0;l=c[h>>2]|0;c[l>>2]=k;c[l+4>>2]=C;c[e>>2]=0;l=c[e>>2]|0;i=m;return l|0}}c[l>>2]=jl(b,18,j,(c[g>>2]|0)+4|0)|0;if((c[l>>2]|0)==0?(c[(c[f>>2]|0)+44>>2]|0)!=0:0){d=c[j>>2]|0;k=(c[(c[f>>2]|0)+24>>2]|0)+2|0;c[l>>2]=Le(d,k,de(c[(c[g>>2]|0)+((c[(c[f>>2]|0)+24>>2]|0)+4<<2)>>2]|0)|0)|0}if(c[l>>2]|0){c[e>>2]=c[l>>2];l=c[e>>2]|0;i=m;return l|0}if(5!=(fe(c[(c[g>>2]|0)+(3+(c[(c[f>>2]|0)+24>>2]|0)<<2)>>2]|0)|0)){if(5==(fe(c[c[g>>2]>>2]|0)|0)?5!=(fe(c[(c[g>>2]|0)+4>>2]|0)|0):0){c[e>>2]=1;l=c[e>>2]|0;i=m;return l|0}c[l>>2]=Pe(c[j>>2]|0,1,c[(c[g>>2]|0)+(3+(c[(c[f>>2]|0)+24>>2]|0)<<2)>>2]|0)|0;if(c[l>>2]|0){c[e>>2]=c[l>>2];l=c[e>>2]|0;i=m;return l|0}}ue(c[j>>2]|0)|0;c[l>>2]=Zd(c[j>>2]|0)|0;j=of(c[(c[f>>2]|0)+12>>2]|0)|0;k=c[h>>2]|0;c[k>>2]=j;c[k+4>>2]=C;c[e>>2]=c[l>>2];l=c[e>>2]|0;i=m;return l|0}function Fo(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,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+24|0;h=o+20|0;j=o+16|0;k=o+12|0;l=o;m=o+8|0;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;d=l;c[d>>2]=e;c[d+4>>2]=f;d=l;f=c[d+4>>2]|0;a=(c[h>>2]|0)+264|0;b=c[a+4>>2]|0;do if(!((f|0)<(b|0)|((f|0)==(b|0)?(c[d>>2]|0)>>>0<(c[a>>2]|0)>>>0:0))){d=l;a=(c[h>>2]|0)+264|0;if(((c[d>>2]|0)==(c[a>>2]|0)?(c[d+4>>2]|0)==(c[a+4>>2]|0):0)?(c[(c[h>>2]|0)+276>>2]|0)==0:0){n=6;break}if(!((c[(c[h>>2]|0)+272>>2]|0)==(c[k>>2]|0)?(c[(c[h>>2]|0)+260>>2]|0)<=(c[(c[h>>2]|0)+256>>2]|0):0))n=6}else n=6;while(0);if((n|0)==6?(c[m>>2]=gl(c[h>>2]|0)|0,(c[m>>2]|0)!=0):0){c[g>>2]=c[m>>2];n=c[g>>2]|0;i=o;return n|0}a=l;m=c[a+4>>2]|0;n=(c[h>>2]|0)+264|0;c[n>>2]=c[a>>2];c[n+4>>2]=m;c[(c[h>>2]|0)+272>>2]=c[k>>2];c[(c[h>>2]|0)+276>>2]=c[j>>2];c[g>>2]=0;n=c[g>>2]|0;i=o;return n|0}function Go(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;o=q+32|0;g=q+28|0;h=q+24|0;j=q+20|0;k=q+16|0;l=q+12|0;m=q+8|0;n=q+4|0;p=q;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[l>>2]=2;while(1){if((c[l>>2]|0)>=((c[(c[g>>2]|0)+24>>2]|0)+2|0)){g=8;break}c[m>>2]=(c[l>>2]|0)-2;if(!(d[(c[(c[g>>2]|0)+32>>2]|0)+(c[m>>2]|0)>>0]|0)){c[n>>2]=ae(c[(c[j>>2]|0)+(c[l>>2]<<2)>>2]|0)|0;c[p>>2]=Lo(c[g>>2]|0,c[h>>2]|0,c[n>>2]|0,c[m>>2]|0,(c[k>>2]|0)+(c[m>>2]<<2)|0)|0;if(c[p>>2]|0){g=5;break}b=be(c[(c[j>>2]|0)+(c[l>>2]<<2)>>2]|0)|0;a=(c[k>>2]|0)+(c[(c[g>>2]|0)+24>>2]<<2)|0;c[a>>2]=(c[a>>2]|0)+b}c[l>>2]=(c[l>>2]|0)+1}if((g|0)==5){c[o>>2]=c[p>>2];p=c[o>>2]|0;i=q;return p|0}else if((g|0)==8){c[o>>2]=0;p=c[o>>2]|0;i=q;return p|0}return 0}function Ho(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;e=m+24|0;f=m+20|0;g=m+16|0;j=m+12|0;h=m+8|0;k=m+4|0;l=m;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(c[c[e>>2]>>2]|0){i=m;return}c[j>>2]=Id((c[(c[f>>2]|0)+24>>2]|0)*10|0)|0;if(!(c[j>>2]|0)){c[c[e>>2]>>2]=7;i=m;return}Ko(c[(c[f>>2]|0)+24>>2]|0,c[g>>2]|0,c[j>>2]|0,h);c[l>>2]=jl(c[f>>2]|0,20,k,0)|0;if(c[l>>2]|0){Kd(c[j>>2]|0);c[c[e>>2]>>2]=c[l>>2];i=m;return}else{l=(c[f>>2]|0)+264|0;Me(c[k>>2]|0,1,c[l>>2]|0,c[l+4>>2]|0)|0;Je(c[k>>2]|0,2,c[j>>2]|0,c[h>>2]|0,148)|0;ue(c[k>>2]|0)|0;l=Zd(c[k>>2]|0)|0;c[c[e>>2]>>2]=l;i=m;return}}function Io(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+64|0;g=u+48|0;h=u+44|0;j=u+40|0;k=u+36|0;l=u+32|0;q=u+28|0;o=u+24|0;m=u+20|0;r=u+16|0;n=u+12|0;s=u+8|0;p=u+4|0;t=u;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[p>>2]=(c[(c[h>>2]|0)+24>>2]|0)+2;if(c[c[g>>2]>>2]|0){i=u;return}c[m>>2]=Id((c[p>>2]|0)*14|0)|0;if(!(c[m>>2]|0)){c[c[g>>2]>>2]=7;i=u;return}c[q>>2]=(c[m>>2]|0)+(c[p>>2]<<2);c[s>>2]=jl(c[h>>2]|0,22,r,0)|0;if(c[s>>2]|0){Kd(c[m>>2]|0);c[c[g>>2]>>2]=c[s>>2];i=u;return}Le(c[r>>2]|0,1,0)|0;if((ue(c[r>>2]|0)|0)==100){f=c[p>>2]|0;b=c[m>>2]|0;a=Ae(c[r>>2]|0,0)|0;Jo(f,b,a,Be(c[r>>2]|0,0)|0)}else kR(c[m>>2]|0,0,c[p>>2]<<2|0)|0;c[s>>2]=Zd(c[r>>2]|0)|0;if(c[s>>2]|0){Kd(c[m>>2]|0);c[c[g>>2]>>2]=c[s>>2];i=u;return}if((c[l>>2]|0)<0?(c[c[m>>2]>>2]|0)>>>0<(0-(c[l>>2]|0)|0)>>>0:0)c[c[m>>2]>>2]=0;else{a=c[m>>2]|0;c[a>>2]=(c[a>>2]|0)+(c[l>>2]|0)}c[n>>2]=0;while(1){if((c[n>>2]|0)>=((c[(c[h>>2]|0)+24>>2]|0)+1|0))break;c[t>>2]=c[(c[m>>2]|0)+((c[n>>2]|0)+1<<2)>>2];if(((c[t>>2]|0)+(c[(c[j>>2]|0)+(c[n>>2]<<2)>>2]|0)|0)>>>0<(c[(c[k>>2]|0)+(c[n>>2]<<2)>>2]|0)>>>0)c[t>>2]=0;else c[t>>2]=(c[t>>2]|0)+(c[(c[j>>2]|0)+(c[n>>2]<<2)>>2]|0)-(c[(c[k>>2]|0)+(c[n>>2]<<2)>>2]|0);c[(c[m>>2]|0)+((c[n>>2]|0)+1<<2)>>2]=c[t>>2];c[n>>2]=(c[n>>2]|0)+1}Ko(c[p>>2]|0,c[m>>2]|0,c[q>>2]|0,o);c[s>>2]=jl(c[h>>2]|0,23,r,0)|0;if(c[s>>2]|0){Kd(c[m>>2]|0);c[c[g>>2]>>2]=c[s>>2];i=u;return}else{Le(c[r>>2]|0,1,0)|0;Je(c[r>>2]|0,2,c[q>>2]|0,c[o>>2]|0,0)|0;ue(c[r>>2]|0)|0;t=Zd(c[r>>2]|0)|0;c[c[g>>2]>>2]=t;Kd(c[m>>2]|0);i=u;return}}function Jo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+28|0;g=m+24|0;h=m+20|0;j=m+12|0;k=m+8|0;l=m;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[m+16>>2]=e;c[k>>2]=0;c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[f>>2]|0))break;d=Ul((c[h>>2]|0)+(c[k>>2]|0)|0,l)|0;c[k>>2]=(c[k>>2]|0)+d;c[(c[g>>2]|0)+(c[j>>2]<<2)>>2]=c[l>>2];c[j>>2]=(c[j>>2]|0)+1}i=m;return}function Ko(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[l>>2]=0;c[k>>2]=0;while(1){a=c[l>>2]|0;if((c[k>>2]|0)>=(c[f>>2]|0))break;d=El((c[h>>2]|0)+a|0,c[(c[g>>2]|0)+(c[k>>2]<<2)>>2]|0,0)|0;c[l>>2]=(c[l>>2]|0)+d;c[k>>2]=(c[k>>2]|0)+1}c[c[j>>2]>>2]=a;i=m;return}function Lo(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,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;B=i;i=i+80|0;g=B+72|0;h=B+68|0;j=B+64|0;k=B+60|0;l=B+56|0;m=B+52|0;x=B+48|0;q=B+44|0;o=B+40|0;p=B+36|0;s=B+32|0;z=B+28|0;r=B+24|0;w=B+20|0;v=B+16|0;t=B+12|0;y=B+8|0;n=B+4|0;u=B;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[q>>2]=0;c[o>>2]=0;c[p>>2]=0;c[s>>2]=0;c[r>>2]=0;c[w>>2]=c[(c[h>>2]|0)+36>>2];c[v>>2]=c[c[w>>2]>>2];if(!(c[k>>2]|0)){c[c[m>>2]>>2]=0;c[g>>2]=0;A=c[g>>2]|0;i=B;return A|0}c[x>>2]=wn(c[w>>2]|0,c[j>>2]|0,c[k>>2]|0,-1,t)|0;if(c[x>>2]|0){c[g>>2]=c[x>>2];A=c[g>>2]|0;i=B;return A|0}c[y>>2]=c[(c[v>>2]|0)+20>>2];a:while(1){if(c[x>>2]|0)break;d=Sb[c[y>>2]&255](c[t>>2]|0,z,r,q,o,p)|0;c[x>>2]=d;if(d)break;if((c[p>>2]|0)>=(c[s>>2]|0))c[s>>2]=(c[p>>2]|0)+1;if((c[p>>2]|0)>=0&(c[z>>2]|0)!=0^1|(c[r>>2]|0)<=0){A=11;break}c[x>>2]=Mo(c[h>>2]|0,c[l>>2]|0,c[p>>2]|0,(c[(c[h>>2]|0)+252>>2]|0)+4|0,c[z>>2]|0,c[r>>2]|0)|0;c[n>>2]=1;while(1){if(c[x>>2]|0)continue a;if((c[n>>2]|0)>=(c[(c[h>>2]|0)+248>>2]|0))continue a;c[u>>2]=(c[(c[h>>2]|0)+252>>2]|0)+((c[n>>2]|0)*24|0);if((c[r>>2]|0)>=(c[c[u>>2]>>2]|0))c[x>>2]=Mo(c[h>>2]|0,c[l>>2]|0,c[p>>2]|0,(c[u>>2]|0)+4|0,c[z>>2]|0,c[c[u>>2]>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+1}}if((A|0)==11)c[x>>2]=1;Tb[c[(c[v>>2]|0)+16>>2]&255](c[t>>2]|0)|0;A=c[m>>2]|0;c[A>>2]=(c[A>>2]|0)+(c[s>>2]|0);c[g>>2]=(c[x>>2]|0)==101?0:c[x>>2]|0;A=c[g>>2]|0;i=B;return A|0}function Mo(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;h=q+28|0;j=q+24|0;k=q+20|0;l=q+16|0;m=q+12|0;n=q+8|0;o=q+4|0;p=q;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[p>>2]=0;c[o>>2]=yk(c[l>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;if(c[o>>2]|0){f=(c[h>>2]|0)+260|0;c[f>>2]=(c[f>>2]|0)-((c[c[o>>2]>>2]|0)+(c[n>>2]|0)+20)}a=(c[h>>2]|0)+264|0;e=c[j>>2]|0;f=c[k>>2]|0;if((xn(o,c[a>>2]|0,c[a+4>>2]|0,e,((e|0)<0)<<31>>31,f,((f|0)<0)<<31>>31,p)|0)!=0?(f=c[o>>2]|0,(f|0)==(fk(c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0)):0){Kd(c[o>>2]|0);c[p>>2]=7}if(c[p>>2]|0){f=c[p>>2]|0;i=q;return f|0}f=(c[h>>2]|0)+260|0;c[f>>2]=(c[f>>2]|0)+((c[c[o>>2]>>2]|0)+(c[n>>2]|0)+20);f=c[p>>2]|0;i=q;return f|0}function No(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=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;u=i;i=i+64|0;j=u+48|0;k=u+44|0;h=u+40|0;l=u+36|0;m=u+32|0;s=u+28|0;r=u+24|0;n=u+20|0;q=u+16|0;p=u;o=u+12|0;t=u+8|0;c[j>>2]=a;c[k>>2]=b;c[h>>2]=e;c[l>>2]=f;c[m>>2]=g;if(c[c[j>>2]>>2]|0){i=u;return}c[s>>2]=jl(c[k>>2]|0,7,r,h)|0;h=c[r>>2]|0;if(!(c[s>>2]|0)){do if(100==(ue(h)|0)){c[q>>2]=Ro(c[k>>2]|0,c[r>>2]|0)|0;e=Ee(c[r>>2]|0,0)|0;g=p;c[g>>2]=e;c[g+4>>2]=C;c[s>>2]=Fo(c[k>>2]|0,1,c[q>>2]|0,c[p>>2]|0,c[p+4>>2]|0)|0;c[n>>2]=1;while(1){if(c[s>>2]|0)break;if((c[n>>2]|0)>(c[(c[k>>2]|0)+24>>2]|0))break;c[o>>2]=(c[n>>2]|0)-1;if(!(d[(c[(c[k>>2]|0)+32>>2]|0)+(c[o>>2]|0)>>0]|0)){c[t>>2]=Fe(c[r>>2]|0,c[n>>2]|0)|0;c[s>>2]=Lo(c[k>>2]|0,c[q>>2]|0,c[t>>2]|0,-1,(c[l>>2]|0)+(c[o>>2]<<2)|0)|0;g=Be(c[r>>2]|0,c[n>>2]|0)|0;p=(c[l>>2]|0)+(c[(c[k>>2]|0)+24>>2]<<2)|0;c[p>>2]=(c[p>>2]|0)+g}c[n>>2]=(c[n>>2]|0)+1}if(!(c[s>>2]|0)){c[c[m>>2]>>2]=1;break}Zd(c[r>>2]|0)|0;c[c[j>>2]>>2]=c[s>>2];i=u;return}while(0);c[s>>2]=Zd(c[r>>2]|0)|0}else Zd(h)|0;c[c[j>>2]>>2]=c[s>>2];i=u;return}function Oo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(c[(c[e>>2]|0)+40>>2]|0){c[c[g>>2]>>2]=0;c[j>>2]=0;j=c[j>>2]|0;i=k;return j|0}c[j>>2]=jl(c[e>>2]|0,1,h,f)|0;if(c[j>>2]|0){j=c[j>>2]|0;i=k;return j|0}if(100==(ue(c[h>>2]|0)|0)){d=De(c[h>>2]|0,0)|0;c[c[g>>2]>>2]=d}c[j>>2]=Zd(c[h>>2]|0)|0;j=c[j>>2]|0;i=k;return j|0}function Po(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+8|0;h=g+4|0;f=g;c[e>>2]=b;c[h>>2]=d;c[f>>2]=0;dl(c[e>>2]|0);if(c[h>>2]|0)Qo(f,c[e>>2]|0,2,0);Qo(f,c[e>>2]|0,3,0);Qo(f,c[e>>2]|0,4,0);if(a[(c[e>>2]|0)+230>>0]|0)Qo(f,c[e>>2]|0,5,0);if(!(a[(c[e>>2]|0)+229>>0]|0)){h=c[f>>2]|0;i=g;return h|0}Qo(f,c[e>>2]|0,6,0);h=c[f>>2]|0;i=g;return h|0}function Qo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;if(c[c[f>>2]>>2]|0){i=m;return}c[l>>2]=jl(c[g>>2]|0,c[h>>2]|0,k,c[j>>2]|0)|0;if(!(c[l>>2]|0)){ue(c[k>>2]|0)|0;c[l>>2]=Zd(c[k>>2]|0)|0}c[c[f>>2]>>2]=c[l>>2];i=m;return}function Ro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=0;if(!(c[(c[d>>2]|0)+44>>2]|0)){b=c[f>>2]|0;i=g;return b|0}c[f>>2]=De(c[e>>2]|0,(c[(c[d>>2]|0)+24>>2]|0)+1|0)|0;b=c[f>>2]|0;i=g;return b|0}function So(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+64|0;f=t;h=t+52|0;q=t+48|0;j=t+44|0;l=t+40|0;k=t+36|0;p=t+32|0;o=t+28|0;g=t+24|0;e=t+20|0;m=t+16|0;n=t+12|0;s=t+8|0;r=t+4|0;c[h>>2]=b;c[q>>2]=Po(c[h>>2]|0,0)|0;if(c[q>>2]|0){s=c[q>>2]|0;i=t;return s|0}c[j>>2]=0;c[l>>2]=0;c[k>>2]=0;c[p>>2]=0;c[o>>2]=0;c[f>>2]=c[(c[h>>2]|0)+216>>2];c[g>>2]=Od(24461,f)|0;if(c[g>>2]|0){c[q>>2]=af(c[(c[h>>2]|0)+12>>2]|0,c[g>>2]|0,-1,p,0)|0;Kd(c[g>>2]|0)}else c[q>>2]=7;do if(!(c[q>>2]|0)){c[e>>2]=((c[(c[h>>2]|0)+24>>2]|0)+1<<2)*3;c[j>>2]=Id(c[e>>2]|0)|0;if(!(c[j>>2]|0)){c[q>>2]=7;break}else{kR(c[j>>2]|0,0,c[e>>2]|0)|0;c[l>>2]=(c[j>>2]|0)+((c[(c[h>>2]|0)+24>>2]|0)+1<<2);c[k>>2]=(c[l>>2]|0)+((c[(c[h>>2]|0)+24>>2]|0)+1<<2);break}}while(0);a:while(1){if(!(c[q>>2]|0))e=100==(ue(c[p>>2]|0)|0);else e=0;b=c[h>>2]|0;if(!e)break;c[n>>2]=Ro(b,c[p>>2]|0)|0;b=c[h>>2]|0;f=c[n>>2]|0;g=Ee(c[p>>2]|0,0)|0;c[q>>2]=Fo(b,0,f,g,C)|0;kR(c[j>>2]|0,0,(c[(c[h>>2]|0)+24>>2]|0)+1<<2|0)|0;c[m>>2]=0;while(1){if(c[q>>2]|0)break;if((c[m>>2]|0)>=(c[(c[h>>2]|0)+24>>2]|0))break;if(!(d[(c[(c[h>>2]|0)+32>>2]|0)+(c[m>>2]|0)>>0]|0)){c[s>>2]=Fe(c[p>>2]|0,(c[m>>2]|0)+1|0)|0;c[q>>2]=Lo(c[h>>2]|0,c[n>>2]|0,c[s>>2]|0,c[m>>2]|0,(c[j>>2]|0)+(c[m>>2]<<2)|0)|0;f=Be(c[p>>2]|0,(c[m>>2]|0)+1|0)|0;g=(c[j>>2]|0)+(c[(c[h>>2]|0)+24>>2]<<2)|0;c[g>>2]=(c[g>>2]|0)+f}c[m>>2]=(c[m>>2]|0)+1}if(a[(c[h>>2]|0)+230>>0]|0)Ho(q,c[h>>2]|0,c[j>>2]|0);if(c[q>>2]|0){Yd(c[p>>2]|0)|0;c[p>>2]=0;continue}c[o>>2]=(c[o>>2]|0)+1;c[m>>2]=0;while(1){if((c[m>>2]|0)>(c[(c[h>>2]|0)+24>>2]|0))continue a;g=(c[l>>2]|0)+(c[m>>2]<<2)|0;c[g>>2]=(c[g>>2]|0)+(c[(c[j>>2]|0)+(c[m>>2]<<2)>>2]|0);c[m>>2]=(c[m>>2]|0)+1}}if(a[b+228>>0]|0)Io(q,c[h>>2]|0,c[l>>2]|0,c[k>>2]|0,c[o>>2]|0);Kd(c[j>>2]|0);if(!(c[p>>2]|0)){s=c[q>>2]|0;i=t;return s|0}c[r>>2]=Yd(c[p>>2]|0)|0;if(c[q>>2]|0){s=c[q>>2]|0;i=t;return s|0}c[q>>2]=c[r>>2];s=c[q>>2]|0;i=t;return s|0}function To(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;f=d+8|0;b=d+4|0;e=d;c[f>>2]=a;c[e>>2]=0;a=Yo(c[f>>2]|0,e)|0;c[b>>2]=a;c[b>>2]=(c[b>>2]|0)==0&(c[e>>2]|0)==0?267:a;i=d;return c[b>>2]|0}function Uo(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+20|0;l=k+16|0;h=k+12|0;g=k+8|0;f=k+4|0;j=k;c[e>>2]=b;c[l>>2]=d;c[g>>2]=8;c[f>>2]=0;c[j>>2]=c[l>>2];c[f>>2]=Wo(j)|0;if((a[c[j>>2]>>0]|0)==44?(a[(c[j>>2]|0)+1>>0]|0)!=0:0){c[j>>2]=(c[j>>2]|0)+1;c[g>>2]=Wo(j)|0}if((c[g>>2]|0)<2?1:(a[c[j>>2]>>0]|0)!=0){c[h>>2]=1;l=c[h>>2]|0;i=k;return l|0}c[h>>2]=0;if(!(a[(c[e>>2]|0)+229>>0]|0))Xo(h,c[e>>2]|0);if(!(c[h>>2]|0))c[h>>2]=$n(c[e>>2]|0,c[f>>2]|0,c[g>>2]|0)|0;sm(c[e>>2]|0);l=c[h>>2]|0;i=k;return l|0}function Vo(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;e=j+16|0;f=j+12|0;k=j+8|0;h=j+4|0;g=j;c[f>>2]=b;c[k>>2]=d;c[h>>2]=0;c[g>>2]=0;d=Wo(k)|0;c[(c[f>>2]|0)+48>>2]=d;if(!((c[(c[f>>2]|0)+48>>2]|0)!=1?(c[(c[f>>2]|0)+48>>2]|0)<=16:0))c[(c[f>>2]|0)+48>>2]=8;if((a[(c[f>>2]|0)+229>>0]|0)==0?(Xo(h,c[f>>2]|0),(c[h>>2]|0)!=0):0){c[e>>2]=c[h>>2];k=c[e>>2]|0;i=j;return k|0}c[h>>2]=jl(c[f>>2]|0,23,g,0)|0;if(c[h>>2]|0){c[e>>2]=c[h>>2];k=c[e>>2]|0;i=j;return k|0}else{Le(c[g>>2]|0,1,2)|0;Le(c[g>>2]|0,2,c[(c[f>>2]|0)+48>>2]|0)|0;ue(c[g>>2]|0)|0;c[h>>2]=Zd(c[g>>2]|0)|0;c[e>>2]=c[h>>2];k=c[e>>2]|0;i=j;return k|0}return 0}function Wo(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;d=g+8|0;f=g+4|0;e=g;c[d>>2]=b;c[f>>2]=c[c[d>>2]>>2];c[e>>2]=0;while(1){if((a[c[f>>2]>>0]|0)<48){b=5;break}if((a[c[f>>2]>>0]|0)>57){b=5;break}h=(c[e>>2]|0)*10|0;b=c[f>>2]|0;c[f>>2]=b+1;c[e>>2]=h+(a[b>>0]|0)-48}if((b|0)==5){c[c[d>>2]>>2]=c[f>>2];i=g;return c[e>>2]|0}return 0}function Xo(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;h=f;g=f+12|0;e=f+8|0;c[g>>2]=b;c[e>>2]=d;d=c[g>>2]|0;b=c[(c[e>>2]|0)+12>>2]|0;j=c[(c[e>>2]|0)+20>>2]|0;c[h>>2]=c[(c[e>>2]|0)+16>>2];c[h+4>>2]=j;hl(d,b,24384,h);if(c[c[g>>2]>>2]|0){i=f;return}a[(c[e>>2]|0)+229>>0]=1;i=f;return}function Yo(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=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,D=0,E=0,F=0,G=0,H=0;F=i;i=i+112|0;j=F+24|0;l=F+108|0;m=F+104|0;B=F+100|0;n=F+16|0;o=F+8|0;g=F+96|0;h=F+92|0;f=F+88|0;e=F+84|0;y=F+80|0;z=F+76|0;k=F+72|0;r=F;u=F+68|0;q=F+64|0;D=F+60|0;w=F+56|0;A=F+52|0;E=F+48|0;x=F+44|0;s=F+40|0;t=F+36|0;v=F+32|0;p=F+28|0;c[l>>2]=a;c[m>>2]=b;c[B>>2]=0;b=n;c[b>>2]=0;c[b+4>>2]=0;b=o;c[b>>2]=0;c[b+4>>2]=0;c[g>>2]=0;c[B>>2]=jl(c[l>>2]|0,27,g,0)|0;if(!(c[B>>2]|0)){Le(c[g>>2]|0,1,c[(c[l>>2]|0)+272>>2]|0)|0;Le(c[g>>2]|0,2,c[(c[l>>2]|0)+248>>2]|0)|0;a:while(1){if(!(c[B>>2]|0))a=(ue(c[g>>2]|0)|0)==100;else a=0;b=c[g>>2]|0;if(!a)break;c[f>>2]=De(b,0)|0;c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[l>>2]|0)+248>>2]|0))continue a;a=n;H=c[a>>2]|0;a=c[a+4>>2]|0;G=Zo(c[l>>2]|0,c[f>>2]|0,c[e>>2]|0,B)|0;b=n;c[b>>2]=H^G;c[b+4>>2]=a^C;c[e>>2]=(c[e>>2]|0)+1}}c[h>>2]=Zd(b)|0;if(!(c[B>>2]|0))c[B>>2]=c[h>>2]}if(c[B>>2]|0){E=n;D=E;D=c[D>>2]|0;E=E+4|0;E=c[E>>2]|0;G=o;H=G;H=c[H>>2]|0;G=G+4|0;G=c[G>>2]|0;H=(D|0)==(H|0);G=(E|0)==(G|0);G=H&G;G=G&1;H=c[m>>2]|0;c[H>>2]=G;H=c[B>>2]|0;i=F;return H|0}c[y>>2]=c[c[(c[l>>2]|0)+36>>2]>>2];c[z>>2]=0;c[j>>2]=c[(c[l>>2]|0)+216>>2];c[k>>2]=Od(24461,j)|0;if(c[k>>2]|0){c[B>>2]=af(c[(c[l>>2]|0)+12>>2]|0,c[k>>2]|0,-1,z,0)|0;Kd(c[k>>2]|0)}else c[B>>2]=7;b:while(1){if(!(c[B>>2]|0))a=100==(ue(c[z>>2]|0)|0);else a=0;b=c[z>>2]|0;if(!a)break;G=Ee(b,0)|0;H=r;c[H>>2]=G;c[H+4>>2]=C;c[u>>2]=Ro(c[l>>2]|0,c[z>>2]|0)|0;c[q>>2]=0;while(1){if(c[B>>2]|0)continue b;if((c[q>>2]|0)>=(c[(c[l>>2]|0)+24>>2]|0))continue b;if(!(d[(c[(c[l>>2]|0)+32>>2]|0)+(c[q>>2]|0)>>0]|0)){c[D>>2]=Fe(c[z>>2]|0,(c[q>>2]|0)+1|0)|0;c[w>>2]=Be(c[z>>2]|0,(c[q>>2]|0)+1|0)|0;c[A>>2]=0;c[B>>2]=wn(c[(c[l>>2]|0)+36>>2]|0,c[u>>2]|0,c[D>>2]|0,c[w>>2]|0,A)|0;c:while(1){if(c[B>>2]|0)break;c[x>>2]=0;c[s>>2]=0;c[t>>2]=0;c[v>>2]=0;c[B>>2]=Sb[c[(c[y>>2]|0)+20>>2]&255](c[A>>2]|0,E,x,s,t,v)|0;if(c[B>>2]|0)continue;G=o;j=c[G>>2]|0;G=c[G+4>>2]|0;k=r;k=_o(c[E>>2]|0,c[x>>2]|0,c[u>>2]|0,0,c[k>>2]|0,c[k+4>>2]|0,c[q>>2]|0,c[v>>2]|0)|0;H=o;c[H>>2]=j^k;c[H+4>>2]=G^C;c[p>>2]=1;while(1){if((c[p>>2]|0)>=(c[(c[l>>2]|0)+248>>2]|0))continue c;if((c[(c[(c[l>>2]|0)+252>>2]|0)+((c[p>>2]|0)*24|0)>>2]|0)<=(c[x>>2]|0)){G=o;j=c[G>>2]|0;G=c[G+4>>2]|0;k=r;k=_o(c[E>>2]|0,c[(c[(c[l>>2]|0)+252>>2]|0)+((c[p>>2]|0)*24|0)>>2]|0,c[u>>2]|0,c[p>>2]|0,c[k>>2]|0,c[k+4>>2]|0,c[q>>2]|0,c[v>>2]|0)|0;H=o;c[H>>2]=j^k;c[H+4>>2]=G^C}c[p>>2]=(c[p>>2]|0)+1}}if(c[A>>2]|0)Tb[c[(c[y>>2]|0)+16>>2]&255](c[A>>2]|0)|0;if((c[B>>2]|0)==101)c[B>>2]=0}c[q>>2]=(c[q>>2]|0)+1}}Yd(b)|0;E=n;D=E;D=c[D>>2]|0;E=E+4|0;E=c[E>>2]|0;G=o;H=G;H=c[H>>2]|0;G=G+4|0;G=c[G>>2]|0;H=(D|0)==(H|0);G=(E|0)==(G|0);G=H&G;G=G&1;H=c[m>>2]|0;c[H>>2]=G;H=c[B>>2]|0;i=F;return H|0}function Zo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=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;u=i;i=i+144|0;g=u+140|0;h=u+136|0;j=u+132|0;k=u+128|0;f=u+112|0;m=u+56|0;t=u+48|0;l=u+32|0;r=u+44|0;s=u+40|0;o=u+24|0;n=u+16|0;p=u+8|0;q=u;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;d=l;c[d>>2]=0;c[d+4>>2]=0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;d=m;b=d+56|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(b|0));c[f+12>>2]=3;e=f+12|0;c[e>>2]=c[e>>2]|16;c[t>>2]=kl(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,-2,0,0,0,1,m)|0;if(!(c[t>>2]|0))c[t>>2]=ol(c[g>>2]|0,m,f)|0;if(c[t>>2]|0){vl(m);t=c[t>>2]|0;s=c[k>>2]|0;c[s>>2]=t;s=l;t=s;t=c[t>>2]|0;s=s+4|0;s=c[s>>2]|0;C=s;i=u;return t|0}a:while(1){f=pl(c[g>>2]|0,m)|0;c[t>>2]=f;if(100!=(f|0))break;c[r>>2]=c[m+48>>2];c[s>>2]=(c[r>>2]|0)+(c[m+52>>2]|0);f=o;c[f>>2]=0;c[f+4>>2]=0;f=n;c[f>>2]=0;c[f+4>>2]=0;f=p;c[f>>2]=0;c[f+4>>2]=0;f=Ul(c[r>>2]|0,o)|0;c[r>>2]=(c[r>>2]|0)+f;while(1){if((c[r>>2]|0)>>>0>=(c[s>>2]|0)>>>0)continue a;f=q;c[f>>2]=0;c[f+4>>2]=0;f=Ul(c[r>>2]|0,q)|0;c[r>>2]=(c[r>>2]|0)+f;if((c[r>>2]|0)>>>0>=(c[s>>2]|0)>>>0)continue;e=q;f=q;if(!((c[e>>2]|0)==0&(c[e+4>>2]|0)==0|(c[f>>2]|0)==1&(c[f+4>>2]|0)==0)){b=q;b=fR(c[b>>2]|0,c[b+4>>2]|0,2,0)|0;e=p;b=gR(c[e>>2]|0,c[e+4>>2]|0,b|0,C|0)|0;e=p;c[e>>2]=b;c[e+4>>2]=C;e=l;b=c[e>>2]|0;e=c[e+4>>2]|0;a=o;a=_o(c[m+40>>2]|0,c[m+44>>2]|0,c[h>>2]|0,c[j>>2]|0,c[a>>2]|0,c[a+4>>2]|0,c[n>>2]|0,c[p>>2]|0)|0;f=l;c[f>>2]=b^a;c[f+4>>2]=e^C;continue}f=n;c[f>>2]=0;c[f+4>>2]=0;f=p;c[f>>2]=0;c[f+4>>2]=0;f=q;d=c[r>>2]|0;if((c[f>>2]|0)!=0|(c[f+4>>2]|0)!=0){f=Ul(d,n)|0;c[r>>2]=(c[r>>2]|0)+f;continue}else{e=Ul(d,q)|0;c[r>>2]=(c[r>>2]|0)+e;e=q;f=o;e=gR(c[f>>2]|0,c[f+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;f=o;c[f>>2]=e;c[f+4>>2]=C;continue}}}vl(m);t=c[t>>2]|0;s=c[k>>2]|0;c[s>>2]=t;s=l;t=s;t=c[t>>2]|0;s=s+4|0;s=c[s>>2]|0;C=s;i=u;return t|0}function _o(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;p=i;i=i+48|0;l=p+40|0;m=p+36|0;t=p+32|0;s=p+28|0;u=p+8|0;r=p+24|0;q=p+20|0;n=p+16|0;o=p;c[l>>2]=b;c[m>>2]=d;c[t>>2]=e;c[s>>2]=f;d=u;c[d>>2]=g;c[d+4>>2]=h;c[r>>2]=j;c[q>>2]=k;k=u;d=c[k+4>>2]|0;b=o;c[b>>2]=c[k>>2];c[b+4>>2]=d;b=o;b=lR(c[b>>2]|0,c[b+4>>2]|0,3)|0;d=c[t>>2]|0;d=gR(b|0,C|0,d|0,((d|0)<0)<<31>>31|0)|0;b=o;d=gR(c[b>>2]|0,c[b+4>>2]|0,d|0,C|0)|0;b=o;c[b>>2]=d;c[b+4>>2]=C;b=o;b=lR(c[b>>2]|0,c[b+4>>2]|0,3)|0;d=c[s>>2]|0;d=gR(b|0,C|0,d|0,((d|0)<0)<<31>>31|0)|0;b=o;d=gR(c[b>>2]|0,c[b+4>>2]|0,d|0,C|0)|0;b=o;c[b>>2]=d;c[b+4>>2]=C;b=o;b=lR(c[b>>2]|0,c[b+4>>2]|0,3)|0;d=c[r>>2]|0;d=gR(b|0,C|0,d|0,((d|0)<0)<<31>>31|0)|0;b=o;d=gR(c[b>>2]|0,c[b+4>>2]|0,d|0,C|0)|0;b=o;c[b>>2]=d;c[b+4>>2]=C;b=o;b=lR(c[b>>2]|0,c[b+4>>2]|0,3)|0;d=c[q>>2]|0;d=gR(b|0,C|0,d|0,((d|0)<0)<<31>>31|0)|0;b=o;d=gR(c[b>>2]|0,c[b+4>>2]|0,d|0,C|0)|0;b=o;c[b>>2]=d;c[b+4>>2]=C;c[n>>2]=0;while(1){h=o;g=c[h>>2]|0;h=c[h+4>>2]|0;if((c[n>>2]|0)>=(c[m>>2]|0))break;u=lR(g|0,h|0,3)|0;t=a[(c[l>>2]|0)+(c[n>>2]|0)>>0]|0;t=gR(u|0,C|0,t|0,((t|0)<0)<<31>>31|0)|0;u=o;t=gR(c[u>>2]|0,c[u+4>>2]|0,t|0,C|0)|0;u=o;c[u>>2]=t;c[u+4>>2]=C;c[n>>2]=(c[n>>2]|0)+1}C=h;i=p;return g|0}function $o(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;h=i;i=i+16|0;e=h+8|0;g=h+4|0;f=h;c[e>>2]=b;c[g>>2]=0;c[f>>2]=c[(c[e>>2]|0)+12>>2];a:do if(!(c[f>>2]|0))a[(c[e>>2]|0)+6>>0]=1;else do{if(!(d[(c[e>>2]|0)+7>>0]|0))Zd(c[(c[e>>2]|0)+8>>2]|0)|0;Nm(c[e>>2]|0,c[f>>2]|0,g);a[(c[e>>2]|0)+6>>0]=a[(c[f>>2]|0)+32>>0]|0;a[(c[e>>2]|0)+7>>0]=1;c[(c[e>>2]|0)+88>>2]=1;k=(c[f>>2]|0)+24|0;j=c[k+4>>2]|0;b=(c[e>>2]|0)+32|0;c[b>>2]=c[k>>2];c[b+4>>2]=j;if(d[(c[e>>2]|0)+6>>0]|0)break a}while((Im(c[e>>2]|0,g)|0)!=0);while(0);if(c[g>>2]|0){k=c[g>>2]|0;i=h;return k|0}if(!((d[(c[e>>2]|0)+52>>0]|0|0)==0?(j=(c[e>>2]|0)+32|0,b=c[j+4>>2]|0,k=(c[e>>2]|0)+80|0,f=c[k+4>>2]|0,(b|0)>(f|0)|((b|0)==(f|0)?(c[j>>2]|0)>>>0>(c[k>>2]|0)>>>0:0)):0)){if(!(d[(c[e>>2]|0)+52>>0]|0)){k=c[g>>2]|0;i=h;return k|0}j=(c[e>>2]|0)+32|0;b=c[j+4>>2]|0;k=(c[e>>2]|0)+72|0;f=c[k+4>>2]|0;if(!((b|0)<(f|0)|((b|0)==(f|0)?(c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0:0))){k=c[g>>2]|0;i=h;return k|0}}a[(c[e>>2]|0)+6>>0]=1;k=c[g>>2]|0;i=h;return k|0}function ap(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;f=e+8|0;b=e+4|0;d=e;c[f>>2]=a;c[b>>2]=c[f>>2];while(1){if(!(c[b>>2]|0))break;if((c[(c[b>>2]|0)+12>>2]|0)==0?(c[(c[b>>2]|0)+16>>2]|0)==0:0)break;a=c[b>>2]|0;if(c[(c[b>>2]|0)+12>>2]|0)a=c[a+12>>2]|0;else a=c[a+16>>2]|0;c[b>>2]=a}a:while(1){if(!(c[b>>2]|0))break;c[d>>2]=c[(c[b>>2]|0)+8>>2];Ap(c[b>>2]|0);if(((c[d>>2]|0)!=0?(c[b>>2]|0)==(c[(c[d>>2]|0)+12>>2]|0):0)?(c[(c[d>>2]|0)+16>>2]|0)!=0:0){c[b>>2]=c[(c[d>>2]|0)+16>>2];while(1){if(!(c[b>>2]|0))continue a;if((c[(c[b>>2]|0)+12>>2]|0)==0?(c[(c[b>>2]|0)+16>>2]|0)==0:0)continue a;a=c[b>>2]|0;if(c[(c[b>>2]|0)+12>>2]|0)a=c[a+12>>2]|0;else a=c[a+16>>2]|0;c[b>>2]=a}}c[b>>2]=c[d>>2]}i=e;return}function bp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;e=j+8|0;f=j+20|0;g=j;h=j+16|0;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;if((c[f>>2]|0)!=0?(c[h>>2]=Te(c[f>>2]|0)|0,(c[h>>2]|0)==1):0){a=ee(c[f>>2]|0)|0;h=e;c[h>>2]=a;c[h+4>>2]=C;h=e;a=h;a=c[a>>2]|0;h=h+4|0;h=c[h>>2]|0;C=h;i=j;return a|0}a=c[g+4>>2]|0;h=e;c[h>>2]=c[g>>2];c[h+4>>2]=a;h=e;a=h;a=c[a>>2]|0;h=h+4|0;h=c[h>>2]|0;C=h;i=j;return a|0}function cp(a,b,d,e,f,g,h,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;s=i;i=i+64|0;r=s+8|0;q=s;z=s+52|0;y=s+48|0;x=s+44|0;w=s+40|0;v=s+36|0;u=s+32|0;m=s+28|0;t=s+24|0;n=s+20|0;o=s+16|0;p=s+12|0;c[z>>2]=a;c[y>>2]=b;c[x>>2]=d;c[w>>2]=e;c[v>>2]=f;c[u>>2]=g;c[m>>2]=h;c[t>>2]=j;c[n>>2]=k;c[o>>2]=l;c[p>>2]=op(c[z>>2]|0,c[y>>2]|0,c[x>>2]|0,c[w>>2]|0,c[v>>2]|0,c[u>>2]|0,c[m>>2]|0,c[t>>2]|0,c[n>>2]|0)|0;if(((c[p>>2]|0)==0?(c[c[n>>2]>>2]|0)!=0:0)?(c[p>>2]=pp(c[n>>2]|0,12)|0,(c[p>>2]|0)==0):0)c[p>>2]=qp(c[c[n>>2]>>2]|0,12)|0;if(!(c[p>>2]|0)){z=c[p>>2]|0;i=s;return z|0}ap(c[c[n>>2]>>2]|0);c[c[n>>2]>>2]=0;if((c[p>>2]|0)==18){z=c[o>>2]|0;c[q>>2]=12;zk(z,24570,q);c[p>>2]=1;z=c[p>>2]|0;i=s;return z|0}if((c[p>>2]|0)!=1){z=c[p>>2]|0;i=s;return z|0}z=c[o>>2]|0;c[r>>2]=c[m>>2];zk(z,24622,r);z=c[p>>2]|0;i=s;return z|0}function dp(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+48|0;b=n+36|0;o=n+32|0;m=n+28|0;j=n+24|0;h=n+20|0;e=n+16|0;f=n+12|0;g=n+8|0;k=n+4|0;l=n;c[b>>2]=a;c[o>>2]=c[c[b>>2]>>2];c[m>>2]=0;c[j>>2]=0;c[h>>2]=0;ep(c[b>>2]|0,c[(c[b>>2]|0)+12>>2]|0,j,h,m);do if((c[m>>2]|0)==0&(c[j>>2]|0)>1?(d[(c[o>>2]|0)+228>>0]|0|0)!=0:0){c[e>>2]=Id(((c[j>>2]|0)*24|0)+(c[h>>2]<<2<<1)|0)|0;c[f>>2]=(c[e>>2]|0)+((c[j>>2]|0)*24|0);if(!(c[e>>2]|0)){c[m>>2]=7;break}c[k>>2]=c[e>>2];c[l>>2]=c[f>>2];fp(c[b>>2]|0,0,c[(c[b>>2]|0)+12>>2]|0,k,l,m);c[j>>2]=((c[k>>2]|0)-(c[e>>2]|0)|0)/24|0;c[h>>2]=((c[l>>2]|0)-(c[f>>2]|0)|0)/4|0;a:do if(!(c[m>>2]|0)){c[m>>2]=gp(c[b>>2]|0,0,c[e>>2]|0,c[j>>2]|0)|0;c[g>>2]=0;while(1){if(c[m>>2]|0)break a;if((c[g>>2]|0)>=(c[h>>2]|0))break a;c[m>>2]=gp(c[b>>2]|0,c[(c[f>>2]|0)+(c[g>>2]<<2)>>2]|0,c[e>>2]|0,c[j>>2]|0)|0;c[g>>2]=(c[g>>2]|0)+1}}while(0);Kd(c[e>>2]|0)}while(0);hp(c[b>>2]|0,c[(c[b>>2]|0)+12>>2]|0,m);i=n;return c[m>>2]|0}function ep(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;g=q+32|0;n=q+28|0;h=q+24|0;j=q+20|0;o=q+16|0;k=q+12|0;l=q+8|0;m=q+4|0;p=q;c[g>>2]=a;c[n>>2]=b;c[h>>2]=d;c[j>>2]=e;c[o>>2]=f;if(!(c[n>>2]|0)){i=q;return}if(c[c[o>>2]>>2]|0){i=q;return}a=c[n>>2]|0;if((c[c[n>>2]>>2]|0)!=5){p=c[j>>2]|0;c[p>>2]=(c[p>>2]|0)+((c[a>>2]|0)==4&1);ep(c[g>>2]|0,c[(c[n>>2]|0)+12>>2]|0,c[h>>2]|0,c[j>>2]|0,c[o>>2]|0);ep(c[g>>2]|0,c[(c[n>>2]|0)+16>>2]|0,c[h>>2]|0,c[j>>2]|0,c[o>>2]|0);i=q;return}c[l>>2]=c[(c[a+20>>2]|0)+64>>2];j=c[h>>2]|0;c[j>>2]=(c[j>>2]|0)+(c[l>>2]|0);c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[l>>2]|0)){a=9;break}c[m>>2]=(c[(c[n>>2]|0)+20>>2]|0)+72+((c[k>>2]|0)*24|0);c[p>>2]=mp(c[g>>2]|0,c[c[m>>2]>>2]|0,c[(c[m>>2]|0)+4>>2]|0,c[(c[m>>2]|0)+8>>2]|0,(c[m>>2]|0)+20|0)|0;if(c[p>>2]|0){a=7;break}c[k>>2]=(c[k>>2]|0)+1}if((a|0)==7){c[c[o>>2]>>2]=c[p>>2];i=q;return}else if((a|0)==9){c[(c[(c[n>>2]|0)+20>>2]|0)+44>>2]=-1;i=q;return}}function fp(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;l=r+32|0;m=r+28|0;n=r+24|0;o=r+20|0;p=r+16|0;q=r+12|0;j=r+8|0;h=r+4|0;k=r;c[l>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;if(c[c[q>>2]>>2]|0){i=r;return}d=c[n>>2]|0;if((c[c[n>>2]>>2]|0)==5){c[j>>2]=c[d+20>>2];c[h>>2]=0;while(1){if(c[c[q>>2]>>2]|0){a=13;break}if((c[h>>2]|0)>=(c[(c[j>>2]|0)+64>>2]|0)){a=13;break}n=c[o>>2]|0;p=c[n>>2]|0;c[n>>2]=p+24;c[k>>2]=p;c[c[k>>2]>>2]=c[j>>2];c[(c[k>>2]|0)+4>>2]=c[h>>2];c[(c[k>>2]|0)+12>>2]=c[m>>2];c[(c[k>>2]|0)+8>>2]=(c[j>>2]|0)+72+((c[h>>2]|0)*24|0);c[(c[k>>2]|0)+20>>2]=c[(c[j>>2]|0)+68>>2];p=lp(c[l>>2]|0,c[(c[(c[k>>2]|0)+8>>2]|0)+20>>2]|0,(c[k>>2]|0)+16|0)|0;c[c[q>>2]>>2]=p;c[h>>2]=(c[h>>2]|0)+1}if((a|0)==13){i=r;return}}if((c[d>>2]|0)==2){i=r;return}if((c[c[n>>2]>>2]|0)==4){c[m>>2]=c[(c[n>>2]|0)+12>>2];c[c[c[p>>2]>>2]>>2]=c[m>>2];k=c[p>>2]|0;c[k>>2]=(c[k>>2]|0)+4}fp(c[l>>2]|0,c[m>>2]|0,c[(c[n>>2]|0)+12>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0);if((c[c[n>>2]>>2]|0)==4){c[m>>2]=c[(c[n>>2]|0)+16>>2];c[c[c[p>>2]>>2]>>2]=c[m>>2];k=c[p>>2]|0;c[k>>2]=(c[k>>2]|0)+4}fp(c[l>>2]|0,c[m>>2]|0,c[(c[n>>2]|0)+16>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0);i=r;return}function gp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=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;B=i;i=i+80|0;f=B+76|0;g=B+72|0;h=B+68|0;j=B+64|0;k=B+60|0;w=B+56|0;o=B+52|0;z=B+48|0;m=B+44|0;s=B+40|0;t=B+36|0;r=B+32|0;q=B+28|0;l=B+24|0;v=B+20|0;x=B+16|0;y=B+12|0;p=B+8|0;u=B+4|0;n=B;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[w>>2]=c[c[g>>2]>>2];c[o>>2]=0;c[z>>2]=0;c[s>>2]=0;c[t>>2]=0;c[r>>2]=0;c[q>>2]=1;if(c[(c[w>>2]|0)+40>>2]|0){c[f>>2]=0;A=c[f>>2]|0;i=B;return A|0}c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[k>>2]|0))break;if((c[(c[j>>2]|0)+((c[m>>2]|0)*24|0)+12>>2]|0)==(c[h>>2]|0)){c[s>>2]=(c[s>>2]|0)+(c[(c[j>>2]|0)+((c[m>>2]|0)*24|0)+16>>2]|0);c[t>>2]=(c[t>>2]|0)+1}c[m>>2]=(c[m>>2]|0)+1}if((c[s>>2]|0)==0|(c[t>>2]|0)<2){c[f>>2]=0;A=c[f>>2]|0;i=B;return A|0}c[z>>2]=ip(c[g>>2]|0,o)|0;c[m>>2]=0;while(1){if(!((c[m>>2]|0)<(c[t>>2]|0)?(c[z>>2]|0)==0:0))break;c[v>>2]=0;c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[k>>2]|0))break;do if((c[(c[j>>2]|0)+((c[l>>2]|0)*24|0)+8>>2]|0)!=0?(c[(c[j>>2]|0)+((c[l>>2]|0)*24|0)+12>>2]|0)==(c[h>>2]|0):0){if((c[v>>2]|0)!=0?(c[(c[j>>2]|0)+((c[l>>2]|0)*24|0)+16>>2]|0)>=(c[(c[v>>2]|0)+16>>2]|0):0)break;c[v>>2]=(c[j>>2]|0)+((c[l>>2]|0)*24|0)}while(0);c[l>>2]=(c[l>>2]|0)+1}if((c[m>>2]|0)!=0?(c[(c[v>>2]|0)+16>>2]|0)>=(_(((c[r>>2]|0)+((c[q>>2]|0)/4|0)-1|0)/((c[q>>2]|0)/4|0|0)|0,c[o>>2]|0)|0):0){c[x>>2]=c[(c[v>>2]|0)+8>>2];c[z>>2]=jp(c[g>>2]|0,c[x>>2]|0,c[(c[v>>2]|0)+20>>2]|0)|0;hn(c[(c[x>>2]|0)+20>>2]|0);c[(c[x>>2]|0)+20>>2]=0}else A=23;do if((A|0)==23){A=0;if((c[m>>2]|0)<12)c[q>>2]=c[q>>2]<<2;if(c[m>>2]|0){if((c[(c[c[v>>2]>>2]|0)+64>>2]|0)<=1)break;if((c[m>>2]|0)==((c[t>>2]|0)-1|0))break}c[y>>2]=c[(c[v>>2]|0)+8>>2];c[p>>2]=0;c[u>>2]=0;c[z>>2]=an(c[w>>2]|0,c[y>>2]|0,c[(c[v>>2]|0)+20>>2]|0,p,u)|0;if(!(c[z>>2]|0))c[z>>2]=bn(c[w>>2]|0,c[c[v>>2]>>2]|0,c[(c[v>>2]|0)+4>>2]|0,c[u>>2]|0,c[p>>2]|0)|0;if(!(c[z>>2]|0)){c[n>>2]=kp(c[c[c[v>>2]>>2]>>2]|0,c[(c[c[v>>2]>>2]|0)+4>>2]|0)|0;if((c[m>>2]|0)!=0?(c[n>>2]|0)>=(c[r>>2]|0):0)break;c[r>>2]=c[n>>2]}}while(0);c[(c[v>>2]|0)+8>>2]=0;c[m>>2]=(c[m>>2]|0)+1}c[f>>2]=c[z>>2];A=c[f>>2]|0;i=B;return A|0}function hp(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;g=m+16|0;l=m+12|0;h=m+8|0;k=m+4|0;j=m;c[g>>2]=b;c[l>>2]=e;c[h>>2]=f;if(!(c[l>>2]|0)){i=m;return}if(c[c[h>>2]>>2]|0){i=m;return}if((c[c[l>>2]>>2]|0)!=5){hp(c[g>>2]|0,c[(c[l>>2]|0)+12>>2]|0,c[h>>2]|0);hp(c[g>>2]|0,c[(c[l>>2]|0)+16>>2]|0,c[h>>2]|0);if(d[(c[(c[l>>2]|0)+12>>2]|0)+34>>0]|0)g=(d[(c[(c[l>>2]|0)+16>>2]|0)+34>>0]|0|0)!=0;else g=0;a[(c[l>>2]|0)+34>>0]=g&1;i=m;return}c[k>>2]=c[(c[(c[l>>2]|0)+20>>2]|0)+64>>2];if(c[k>>2]|0){c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[k>>2]|0))break;if(!(c[(c[(c[l>>2]|0)+20>>2]|0)+72+((c[j>>2]|0)*24|0)+16>>2]|0))break;c[j>>2]=(c[j>>2]|0)+1}a[(c[l>>2]|0)+34>>0]=(c[j>>2]|0)==(c[k>>2]|0)}l=Zm(c[g>>2]|0,1,c[(c[l>>2]|0)+20>>2]|0)|0;c[c[h>>2]>>2]=l;i=m;return}function ip(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0; -o=i;i=i+48|0;d=o+44|0;e=o+40|0;f=o+36|0;n=o+32|0;k=o+28|0;m=o+24|0;j=o+8|0;h=o;l=o+20|0;g=o+16|0;c[e>>2]=a;c[f>>2]=b;if(!(c[(c[e>>2]|0)+60>>2]|0)){c[k>>2]=c[c[e>>2]>>2];b=j;c[b>>2]=0;c[b+4>>2]=0;b=h;c[b>>2]=0;c[b+4>>2]=0;c[n>>2]=Jn(c[k>>2]|0,m)|0;if(c[n>>2]|0){c[d>>2]=c[n>>2];n=c[d>>2]|0;i=o;return n|0}c[g>>2]=Ae(c[m>>2]|0,0)|0;b=Be(c[m>>2]|0,0)|0;c[l>>2]=(c[g>>2]|0)+b;b=Ul(c[g>>2]|0,j)|0;c[g>>2]=(c[g>>2]|0)+b;while(1){if((c[g>>2]|0)>>>0>=(c[l>>2]|0)>>>0)break;b=Ul(c[g>>2]|0,h)|0;c[g>>2]=(c[g>>2]|0)+b}l=j;b=h;if((c[l>>2]|0)==0&(c[l+4>>2]|0)==0|(c[b>>2]|0)==0&(c[b+4>>2]|0)==0){Zd(c[m>>2]|0)|0;c[d>>2]=267;n=c[d>>2]|0;i=o;return n|0}a=j;b=c[a+4>>2]|0;l=(c[e>>2]|0)+64|0;c[l>>2]=c[a>>2];c[l+4>>2]=b;l=h;b=j;b=pR(c[l>>2]|0,c[l+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;l=c[(c[k>>2]|0)+236>>2]|0;l=gR(b|0,C|0,l|0,((l|0)<0)<<31>>31|0)|0;b=c[(c[k>>2]|0)+236>>2]|0;b=pR(l|0,C|0,b|0,((b|0)<0)<<31>>31|0)|0;c[(c[e>>2]|0)+60>>2]=b;c[n>>2]=Zd(c[m>>2]|0)|0;if(c[n>>2]|0){c[d>>2]=c[n>>2];n=c[d>>2]|0;i=o;return n|0}}c[c[f>>2]>>2]=c[(c[e>>2]|0)+60>>2];c[d>>2]=0;n=c[d>>2]|0;i=o;return n|0}function jp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=Id(16)|0;if(c[j>>2]|0){b=c[j>>2]|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[c[j>>2]>>2]=c[g>>2];c[(c[j>>2]|0)+8>>2]=c[(c[f>>2]|0)+24>>2];c[(c[j>>2]|0)+4>>2]=c[h>>2];c[(c[f>>2]|0)+24>>2]=c[j>>2];c[(c[g>>2]|0)+16>>2]=c[j>>2];c[e>>2]=0;b=c[e>>2]|0;i=k;return b|0}else{c[e>>2]=7;b=c[e>>2]|0;i=k;return b|0}return 0}function kp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;h=k+8|0;g=k+4|0;j=k;c[e>>2]=b;c[f>>2]=d;c[h>>2]=0;if(!(c[e>>2]|0)){j=c[h>>2]|0;i=k;return j|0}c[g>>2]=(c[e>>2]|0)+(c[f>>2]|0);c[j>>2]=c[e>>2];while(1){if((c[j>>2]|0)>>>0>=(c[g>>2]|0)>>>0)break;c[h>>2]=(c[h>>2]|0)+1;do{d=c[j>>2]|0;c[j>>2]=d+1}while((a[d>>0]&128|0)!=0);Zl(0,j)}j=c[h>>2]|0;i=k;return j|0}function lp(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+48|0;r=q+44|0;f=q+40|0;n=q+36|0;k=q+32|0;o=q+28|0;g=q+24|0;p=q+20|0;m=q+16|0;l=q+12|0;h=q;j=q+8|0;c[r>>2]=a;c[f>>2]=b;c[n>>2]=e;c[k>>2]=c[c[r>>2]>>2];c[o>>2]=0;c[p>>2]=0;c[m>>2]=c[(c[k>>2]|0)+236>>2];c[g>>2]=0;while(1){if(c[p>>2]|0){f=13;break}if((c[g>>2]|0)>=(c[(c[f>>2]|0)+4>>2]|0)){f=13;break}c[l>>2]=c[(c[c[f>>2]>>2]|0)+(c[g>>2]<<2)>>2];a:do if((c[(c[l>>2]|0)+56>>2]|0)==0?(d[(c[l>>2]|0)+5>>0]|0|0)==0:0){b=(c[l>>2]|0)+8|0;e=c[b+4>>2]|0;r=h;c[r>>2]=c[b>>2];c[r+4>>2]=e;while(1){e=h;a=c[e+4>>2]|0;r=(c[l>>2]|0)+16|0;b=c[r+4>>2]|0;if(!((a|0)<(b|0)|((a|0)==(b|0)?(c[e>>2]|0)>>>0<=(c[r>>2]|0)>>>0:0)))break a;r=h;c[p>>2]=am(c[k>>2]|0,c[r>>2]|0,c[r+4>>2]|0,0,j,0)|0;if(c[p>>2]|0)break a;if(((c[j>>2]|0)+35|0)>(c[m>>2]|0))c[o>>2]=(c[o>>2]|0)+(((c[j>>2]|0)+34|0)/(c[m>>2]|0)|0);e=h;e=gR(c[e>>2]|0,c[e+4>>2]|0,1,0)|0;r=h;c[r>>2]=e;c[r+4>>2]=C}}while(0);c[g>>2]=(c[g>>2]|0)+1}if((f|0)==13){c[c[n>>2]>>2]=c[o>>2];i=q;return c[p>>2]|0}return 0}function mp(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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;g=r+36|0;h=r+32|0;j=r+28|0;k=r+24|0;l=r+20|0;p=r+16|0;q=r+12|0;n=r+8|0;m=r+4|0;o=r;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[q>>2]=7;c[p>>2]=Id(56)|0;if(!(c[p>>2]|0)){f=c[p>>2]|0;b=c[l>>2]|0;c[b>>2]=f;b=c[q>>2]|0;i=r;return b|0}c[m>>2]=0;c[o>>2]=c[c[g>>2]>>2];a:do if(c[k>>2]|0){c[n>>2]=1;while(1){if(c[m>>2]|0)break;if((c[n>>2]|0)>=(c[(c[o>>2]|0)+248>>2]|0))break;if((c[(c[(c[o>>2]|0)+252>>2]|0)+((c[n>>2]|0)*24|0)>>2]|0)==(c[j>>2]|0)){c[m>>2]=1;c[q>>2]=kl(c[o>>2]|0,c[(c[g>>2]|0)+16>>2]|0,c[n>>2]|0,-2,c[h>>2]|0,c[j>>2]|0,0,0,c[p>>2]|0)|0;c[(c[p>>2]|0)+36>>2]=1}c[n>>2]=(c[n>>2]|0)+1}c[n>>2]=1;while(1){if(c[m>>2]|0)break a;if((c[n>>2]|0)>=(c[(c[o>>2]|0)+248>>2]|0))break a;if((c[(c[(c[o>>2]|0)+252>>2]|0)+((c[n>>2]|0)*24|0)>>2]|0)==((c[j>>2]|0)+1|0)?(c[m>>2]=1,c[q>>2]=kl(c[o>>2]|0,c[(c[g>>2]|0)+16>>2]|0,c[n>>2]|0,-2,c[h>>2]|0,c[j>>2]|0,1,0,c[p>>2]|0)|0,(c[q>>2]|0)==0):0)c[q>>2]=np(c[o>>2]|0,c[(c[g>>2]|0)+16>>2]|0,c[h>>2]|0,c[j>>2]|0,c[p>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+1}}while(0);if(c[m>>2]|0){f=c[p>>2]|0;b=c[l>>2]|0;c[b>>2]=f;b=c[q>>2]|0;i=r;return b|0}c[q>>2]=kl(c[o>>2]|0,c[(c[g>>2]|0)+16>>2]|0,0,-2,c[h>>2]|0,c[j>>2]|0,c[k>>2]|0,0,c[p>>2]|0)|0;c[(c[p>>2]|0)+36>>2]=((c[k>>2]|0)!=0^1)&1;f=c[p>>2]|0;b=c[l>>2]|0;c[b>>2]=f;b=c[q>>2]|0;i=r;return b|0}function np(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,j=0,k=0,l=0,m=0;g=i;i=i+32|0;m=g+16|0;l=g+12|0;k=g+8|0;j=g+4|0;h=g;c[m>>2]=a;c[l>>2]=b;c[k>>2]=d;c[j>>2]=e;c[h>>2]=f;d=dm(c[m>>2]|0,c[l>>2]|0,0,-2,c[k>>2]|0,c[j>>2]|0,0,0,c[h>>2]|0)|0;i=g;return d|0}function op(a,b,d,e,f,g,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;y=i;i=i+96|0;l=y+80|0;m=y+76|0;n=y+72|0;o=y+68|0;p=y+64|0;q=y+60|0;r=y+56|0;s=y+52|0;t=y+48|0;u=y+44|0;v=y+40|0;w=y+36|0;x=y;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]=j;c[u>>2]=k;d=x;e=d+36|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));c[x>>2]=c[m>>2];c[x+4>>2]=c[n>>2];c[x+8>>2]=c[o>>2];c[x+16>>2]=c[q>>2];c[x+20>>2]=c[r>>2];c[x+12>>2]=c[p>>2];if(!(c[s>>2]|0)){c[c[u>>2]>>2]=0;c[l>>2]=0;x=c[l>>2]|0;i=y;return x|0}if((c[t>>2]|0)<0)c[t>>2]=BQ(c[s>>2]|0)|0;c[w>>2]=rp(x,c[s>>2]|0,c[t>>2]|0,c[u>>2]|0,v)|0;if((c[w>>2]|0)==0?(c[x+32>>2]|0)!=0:0)c[w>>2]=1;c[l>>2]=c[w>>2];x=c[l>>2]|0;i=y;return x|0}function pp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+64|0;f=t+52|0;g=t+48|0;r=t+44|0;q=t+40|0;o=t+36|0;j=t+32|0;h=t+28|0;k=t+24|0;m=t+20|0;l=t+16|0;p=t+12|0;n=t+8|0;d=t+4|0;e=t;c[f>>2]=a;c[g>>2]=b;c[r>>2]=0;c[q>>2]=c[c[f>>2]>>2];c[o>>2]=0;c[j>>2]=c[c[q>>2]>>2];if(!(c[g>>2]|0))c[r>>2]=1;do if(!(c[r>>2]|0)){if(!((c[j>>2]|0)==3|(c[j>>2]|0)==4)){if((c[j>>2]|0)!=2)break;c[d>>2]=c[(c[q>>2]|0)+12>>2];c[e>>2]=c[(c[q>>2]|0)+16>>2];c[(c[q>>2]|0)+12>>2]=0;c[(c[q>>2]|0)+16>>2]=0;c[(c[d>>2]|0)+8>>2]=0;c[(c[e>>2]|0)+8>>2]=0;c[r>>2]=pp(d,(c[g>>2]|0)-1|0)|0;if(!(c[r>>2]|0))c[r>>2]=pp(e,(c[g>>2]|0)-1|0)|0;if(c[r>>2]|0){ap(c[e>>2]|0);ap(c[d>>2]|0);break}else{c[(c[q>>2]|0)+12>>2]=c[d>>2];c[(c[d>>2]|0)+8>>2]=c[q>>2];c[(c[q>>2]|0)+16>>2]=c[e>>2];c[(c[e>>2]|0)+8>>2]=c[q>>2];break}}c[h>>2]=Id(c[g>>2]<<2)|0;if(!(c[h>>2]|0))c[r>>2]=7;else kR(c[h>>2]|0,0,c[g>>2]<<2|0)|0;if(!(c[r>>2]|0)){c[m>>2]=c[q>>2];while(1){if((c[c[m>>2]>>2]|0)!=(c[j>>2]|0))break;c[m>>2]=c[(c[m>>2]|0)+12>>2]}while(1){c[p>>2]=c[(c[m>>2]|0)+8>>2];c[(c[m>>2]|0)+8>>2]=0;if(c[p>>2]|0)c[(c[p>>2]|0)+12>>2]=0;else c[q>>2]=0;c[r>>2]=pp(m,(c[g>>2]|0)-1|0)|0;if(c[r>>2]|0)break;c[l>>2]=0;while(1){if(!(c[m>>2]|0))break;if((c[l>>2]|0)>=(c[g>>2]|0))break;if(!(c[(c[h>>2]|0)+(c[l>>2]<<2)>>2]|0)){c[(c[h>>2]|0)+(c[l>>2]<<2)>>2]=c[m>>2];c[m>>2]=0}else{c[(c[o>>2]|0)+12>>2]=c[(c[h>>2]|0)+(c[l>>2]<<2)>>2];c[(c[o>>2]|0)+16>>2]=c[m>>2];c[(c[(c[o>>2]|0)+12>>2]|0)+8>>2]=c[o>>2];c[(c[(c[o>>2]|0)+16>>2]|0)+8>>2]=c[o>>2];c[m>>2]=c[o>>2];c[o>>2]=c[(c[o>>2]|0)+8>>2];c[(c[m>>2]|0)+8>>2]=0;c[(c[h>>2]|0)+(c[l>>2]<<2)>>2]=0}c[l>>2]=(c[l>>2]|0)+1}if(c[m>>2]|0){s=24;break}if(!(c[p>>2]|0))break;c[m>>2]=c[(c[p>>2]|0)+16>>2];while(1){if((c[c[m>>2]>>2]|0)!=(c[j>>2]|0))break;c[m>>2]=c[(c[m>>2]|0)+12>>2]}c[(c[(c[p>>2]|0)+16>>2]|0)+8>>2]=c[(c[p>>2]|0)+8>>2];b=c[(c[p>>2]|0)+16>>2]|0;if(c[(c[p>>2]|0)+8>>2]|0)c[(c[(c[p>>2]|0)+8>>2]|0)+12>>2]=b;else c[q>>2]=b;c[(c[p>>2]|0)+8>>2]=c[o>>2];c[o>>2]=c[p>>2]}if((s|0)==24){ap(c[m>>2]|0);c[r>>2]=18}a:do if(!(c[r>>2]|0)){c[m>>2]=0;c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[g>>2]|0))break;do if(c[(c[h>>2]|0)+(c[k>>2]<<2)>>2]|0)if(!(c[m>>2]|0)){c[m>>2]=c[(c[h>>2]|0)+(c[k>>2]<<2)>>2];c[(c[m>>2]|0)+8>>2]=0;break}else{c[(c[o>>2]|0)+16>>2]=c[m>>2];c[(c[o>>2]|0)+12>>2]=c[(c[h>>2]|0)+(c[k>>2]<<2)>>2];c[(c[(c[o>>2]|0)+12>>2]|0)+8>>2]=c[o>>2];c[(c[(c[o>>2]|0)+16>>2]|0)+8>>2]=c[o>>2];c[m>>2]=c[o>>2];c[o>>2]=c[(c[o>>2]|0)+8>>2];c[(c[m>>2]|0)+8>>2]=0;break}while(0);c[k>>2]=(c[k>>2]|0)+1}c[q>>2]=c[m>>2]}else{c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[g>>2]|0))break;ap(c[(c[h>>2]|0)+(c[k>>2]<<2)>>2]|0);c[k>>2]=(c[k>>2]|0)+1}while(1){s=c[o>>2]|0;c[n>>2]=s;if(!s)break a;c[o>>2]=c[(c[n>>2]|0)+8>>2];Kd(c[n>>2]|0)}}while(0);Kd(c[h>>2]|0)}}while(0);if(!(c[r>>2]|0)){q=c[q>>2]|0;s=c[f>>2]|0;c[s>>2]=q;s=c[r>>2]|0;i=t;return s|0}ap(c[q>>2]|0);c[q>>2]=0;q=c[q>>2]|0;s=c[f>>2]|0;c[s>>2]=q;s=c[r>>2]|0;i=t;return s|0}function qp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=0;do if(c[d>>2]|0){if((c[e>>2]|0)<0){c[f>>2]=18;break}c[f>>2]=qp(c[(c[d>>2]|0)+12>>2]|0,(c[e>>2]|0)-1|0)|0;if(!(c[f>>2]|0))c[f>>2]=qp(c[(c[d>>2]|0)+16>>2]|0,(c[e>>2]|0)-1|0)|0}while(0);i=g;return c[f>>2]|0}function rp(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,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;x=i;i=i+80|0;g=x+64|0;y=x+60|0;o=x+56|0;p=x+52|0;q=x+48|0;v=x+44|0;m=x+40|0;u=x+36|0;s=x+32|0;n=x+28|0;w=x+24|0;r=x+20|0;t=x+16|0;k=x+12|0;j=x+8|0;h=x+4|0;l=x;c[g>>2]=a;c[y>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[v>>2]=0;c[m>>2]=0;c[u>>2]=0;c[s>>2]=c[o>>2];c[n>>2]=c[y>>2];c[w>>2]=0;c[r>>2]=1;while(1){if(c[w>>2]|0){d=25;break}c[t>>2]=0;c[k>>2]=0;c[w>>2]=sp(c[g>>2]|0,c[n>>2]|0,c[s>>2]|0,t,k)|0;if((c[w>>2]|0)==0&(c[t>>2]|0)!=0){c[h>>2]=c[c[t>>2]>>2];if((c[h>>2]|0)==5)d=1;else d=(c[(c[t>>2]|0)+12>>2]|0)!=0;c[j>>2]=d&1;if((c[j>>2]|0)==0&(c[r>>2]|0)!=0){d=7;break}if(!((c[j>>2]|0)==0|(c[r>>2]|0)!=0)){c[l>>2]=tp(48)|0;if(!(c[l>>2]|0)){d=10;break}c[c[l>>2]>>2]=3;up(v,c[m>>2]|0,c[l>>2]|0);c[m>>2]=c[l>>2]}if(c[m>>2]|0){if(!((c[h>>2]|0)!=1|(c[j>>2]|0)!=0)?(c[c[m>>2]>>2]|0)!=5:0){d=17;break}if((c[h>>2]|0)!=5&(c[j>>2]|0)!=0?(c[c[m>>2]>>2]|0)==1:0){d=17;break}}do if(c[j>>2]|0){d=c[t>>2]|0;if(c[v>>2]|0){c[(c[m>>2]|0)+16>>2]=d;c[(c[t>>2]|0)+8>>2]=c[m>>2];break}else{c[v>>2]=d;break}}else up(v,c[m>>2]|0,c[t>>2]|0);while(0);c[r>>2]=((c[j>>2]|0)!=0^1)&1;c[m>>2]=c[t>>2]}c[s>>2]=(c[s>>2]|0)-(c[k>>2]|0);c[n>>2]=(c[n>>2]|0)+(c[k>>2]|0)}if((d|0)==7){ap(c[t>>2]|0);c[w>>2]=1}else if((d|0)==10){ap(c[t>>2]|0);c[w>>2]=7}else if((d|0)==17){ap(c[t>>2]|0);c[w>>2]=1}else if((d|0)==25){if((c[w>>2]|0)==101&(c[v>>2]|0)!=0&(c[r>>2]|0)!=0)c[w>>2]=1;if((c[w>>2]|0)==101)c[w>>2]=0;c[c[q>>2]>>2]=(c[o>>2]|0)-(c[s>>2]|0)}if(!(c[w>>2]|0)){v=c[v>>2]|0;y=c[p>>2]|0;c[y>>2]=v;y=c[w>>2]|0;i=x;return y|0}ap(c[v>>2]|0);ap(c[u>>2]|0);c[v>>2]=0;v=c[v>>2]|0;y=c[p>>2]|0;c[y>>2]=v;y=c[w>>2]|0;i=x;return y|0}function sp(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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;E=i;i=i+80|0;p=E+72|0;q=E+68|0;r=E+64|0;s=E+60|0;t=E+56|0;u=E+52|0;x=E+48|0;v=E+44|0;w=E+40|0;A=E+36|0;o=E+32|0;B=E+28|0;y=E+24|0;n=E+20|0;m=E+16|0;l=E+12|0;j=E+76|0;k=E+8|0;C=E+4|0;z=E;c[q>>2]=b;c[r>>2]=e;c[s>>2]=f;c[t>>2]=g;c[u>>2]=h;c[o>>2]=0;c[B>>2]=c[r>>2];c[y>>2]=c[s>>2];c[(c[q>>2]|0)+24>>2]=0;while(1){if((c[y>>2]|0)>0)b=(wp(a[c[B>>2]>>0]|0)|0)!=0;else b=0;f=c[y>>2]|0;if(!b)break;c[y>>2]=f+-1;c[B>>2]=(c[B>>2]|0)+1}if(!f){c[p>>2]=101;D=c[p>>2]|0;i=E;return D|0}c[x>>2]=0;while(1){if((c[x>>2]|0)>=4)break;c[n>>2]=2068+(c[x>>2]<<3);if(((d[(c[n>>2]|0)+5>>0]&-2|0)==0?(c[y>>2]|0)>=(d[(c[n>>2]|0)+4>>0]|0):0)?0==(vQ(c[B>>2]|0,c[c[n>>2]>>2]|0,d[(c[n>>2]|0)+4>>0]|0)|0):0){c[m>>2]=10;c[l>>2]=d[(c[n>>2]|0)+4>>0];a:do if((((d[(c[n>>2]|0)+6>>0]|0)==1?(a[(c[B>>2]|0)+4>>0]|0)==47:0)?(a[(c[B>>2]|0)+5>>0]|0)>=48:0)?(a[(c[B>>2]|0)+5>>0]|0)<=57:0){c[m>>2]=0;c[l>>2]=5;while(1){if((a[(c[B>>2]|0)+(c[l>>2]|0)>>0]|0)<48)break a;if((a[(c[B>>2]|0)+(c[l>>2]|0)>>0]|0)>57)break a;c[m>>2]=((c[m>>2]|0)*10|0)+((a[(c[B>>2]|0)+(c[l>>2]|0)>>0]|0)-48);c[l>>2]=(c[l>>2]|0)+1}}while(0);a[j>>0]=a[(c[B>>2]|0)+(c[l>>2]|0)>>0]|0;if(wp(a[j>>0]|0)|0){D=26;break}if((a[j>>0]|0)==34){D=26;break}if((a[j>>0]|0)==40){D=26;break}if((a[j>>0]|0)==41){D=26;break}if(!(a[j>>0]|0)){D=26;break}}c[x>>2]=(c[x>>2]|0)+1}if((D|0)==26){c[o>>2]=tp(48)|0;if(c[o>>2]|0){c[c[o>>2]>>2]=d[(c[n>>2]|0)+6>>0];c[(c[o>>2]|0)+4>>2]=c[m>>2];c[c[t>>2]>>2]=c[o>>2];c[c[u>>2]>>2]=(c[B>>2]|0)-(c[r>>2]|0)+(c[l>>2]|0);c[p>>2]=0;D=c[p>>2]|0;i=E;return D|0}else{c[p>>2]=7;D=c[p>>2]|0;i=E;return D|0}}if((a[c[B>>2]>>0]|0)==34){c[x>>2]=1;while(1){if((c[x>>2]|0)>=(c[y>>2]|0))break;if((a[(c[B>>2]|0)+(c[x>>2]|0)>>0]|0)==34)break;c[x>>2]=(c[x>>2]|0)+1}c[c[u>>2]>>2]=(c[B>>2]|0)-(c[r>>2]|0)+(c[x>>2]|0)+1;if((c[x>>2]|0)==(c[y>>2]|0)){c[p>>2]=1;D=c[p>>2]|0;i=E;return D|0}else{c[p>>2]=xp(c[q>>2]|0,(c[B>>2]|0)+1|0,(c[x>>2]|0)-1|0,c[t>>2]|0)|0;D=c[p>>2]|0;i=E;return D|0}}if((a[c[B>>2]>>0]|0)==40){c[k>>2]=0;D=(c[q>>2]|0)+32|0;c[D>>2]=(c[D>>2]|0)+1;c[A>>2]=rp(c[q>>2]|0,(c[B>>2]|0)+1|0,(c[y>>2]|0)-1|0,c[t>>2]|0,k)|0;if((c[A>>2]|0)==0?(c[c[t>>2]>>2]|0)==0:0)c[A>>2]=101;c[c[u>>2]>>2]=(c[B>>2]|0)-(c[r>>2]|0)+1+(c[k>>2]|0);c[p>>2]=c[A>>2];D=c[p>>2]|0;i=E;return D|0}f=c[q>>2]|0;if((a[c[B>>2]>>0]|0)==41){D=f+32|0;c[D>>2]=(c[D>>2]|0)+-1;c[c[u>>2]>>2]=(c[B>>2]|0)-(c[r>>2]|0)+1;c[c[t>>2]>>2]=0;c[p>>2]=101;D=c[p>>2]|0;i=E;return D|0}c[v>>2]=c[f+20>>2];c[w>>2]=0;c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[(c[q>>2]|0)+16>>2]|0))break;c[C>>2]=c[(c[(c[q>>2]|0)+8>>2]|0)+(c[x>>2]<<2)>>2];c[z>>2]=BQ(c[C>>2]|0)|0;if(((c[y>>2]|0)>(c[z>>2]|0)?(a[(c[B>>2]|0)+(c[z>>2]|0)>>0]|0)==58:0)?(zd(c[C>>2]|0,c[B>>2]|0,c[z>>2]|0)|0)==0:0){D=50;break}c[x>>2]=(c[x>>2]|0)+1}if((D|0)==50){c[v>>2]=c[x>>2];c[w>>2]=(c[B>>2]|0)-(c[r>>2]|0)+(c[z>>2]|0)+1}c[A>>2]=yp(c[q>>2]|0,c[v>>2]|0,(c[r>>2]|0)+(c[w>>2]|0)|0,(c[s>>2]|0)-(c[w>>2]|0)|0,c[t>>2]|0,c[u>>2]|0)|0;D=c[u>>2]|0;c[D>>2]=(c[D>>2]|0)+(c[w>>2]|0);c[p>>2]=c[A>>2];D=c[p>>2]|0;i=E;return D|0}function tp(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=Id(c[b>>2]|0)|0;if(!(c[d>>2]|0)){d=c[d>>2]|0;i=e;return d|0}kR(c[d>>2]|0,0,c[b>>2]|0)|0;d=c[d>>2]|0;i=e;return d|0}function up(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;e=h+12|0;j=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[j>>2]=b;c[f>>2]=d;c[g>>2]=c[j>>2];while(1){if(c[(c[g>>2]|0)+8>>2]|0){d=vp(c[(c[g>>2]|0)+8>>2]|0)|0;d=(d|0)<=(vp(c[f>>2]|0)|0)}else d=0;b=c[(c[g>>2]|0)+8>>2]|0;if(!d)break;c[g>>2]=b}d=c[f>>2]|0;if(b){c[(c[(c[g>>2]|0)+8>>2]|0)+16>>2]=d;c[(c[f>>2]|0)+8>>2]=c[(c[g>>2]|0)+8>>2];e=c[g>>2]|0;j=c[f>>2]|0;j=j+12|0;c[j>>2]=e;f=c[f>>2]|0;j=c[g>>2]|0;j=j+8|0;c[j>>2]=f;i=h;return}else{c[c[e>>2]>>2]=d;e=c[g>>2]|0;j=c[f>>2]|0;j=j+12|0;c[j>>2]=e;f=c[f>>2]|0;j=c[g>>2]|0;j=j+8|0;c[j>>2]=f;i=h;return}}function vp(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[c[b>>2]>>2]|0}function wp(b){b=b|0;var c=0,d=0;d=i;i=i+16|0;c=d;a[c>>0]=b;if(((((a[c>>0]|0)!=32?(a[c>>0]|0)!=9:0)?(a[c>>0]|0)!=10:0)?(a[c>>0]|0)!=13:0)?(a[c>>0]|0)!=11:0)c=(a[c>>0]|0)==12;else c=1;i=d;return c&1|0}function xp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=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;D=i;i=i+96|0;g=D+88|0;h=D+84|0;j=D+80|0;k=D+76|0;l=D+72|0;E=D+68|0;w=D+64|0;y=D+60|0;u=D+56|0;v=D+52|0;B=D+48|0;s=D+44|0;t=D+36|0;p=D+32|0;A=D+28|0;r=D+24|0;m=D+20|0;n=D+16|0;o=D+12|0;x=D+8|0;q=D+4|0;z=D;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[E>>2]=c[c[h>>2]>>2];c[w>>2]=c[c[E>>2]>>2];c[u>>2]=0;c[v>>2]=0;c[B>>2]=0;c[s>>2]=0;c[D+40>>2]=144;c[t>>2]=0;c[y>>2]=wn(c[E>>2]|0,c[(c[h>>2]|0)+4>>2]|0,c[j>>2]|0,c[k>>2]|0,v)|0;a:do if(!(c[y>>2]|0)){c[p>>2]=0;while(1){if(c[y>>2]|0)break;c[r>>2]=0;c[m>>2]=0;c[n>>2]=0;c[o>>2]=0;c[y>>2]=Sb[c[(c[w>>2]|0)+20>>2]&255](c[v>>2]|0,A,r,m,n,o)|0;if(!(c[y>>2]|0)){c[u>>2]=zp(c[u>>2]|0,144+((c[p>>2]|0)*24|0)|0)|0;if(!(c[u>>2]|0))break a;c[B>>2]=zp(c[B>>2]|0,(c[s>>2]|0)+(c[r>>2]|0)|0)|0;if(!(c[B>>2]|0))break a;c[x>>2]=(c[u>>2]|0)+48+72+((c[p>>2]|0)*24|0);E=c[x>>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;iR((c[B>>2]|0)+(c[s>>2]|0)|0,c[A>>2]|0,c[r>>2]|0)|0;c[s>>2]=(c[s>>2]|0)+(c[r>>2]|0);c[(c[x>>2]|0)+4>>2]=c[r>>2];if((c[n>>2]|0)<(c[k>>2]|0))e=(a[(c[j>>2]|0)+(c[n>>2]|0)>>0]|0)==42;else e=0;c[(c[x>>2]|0)+8>>2]=e&1;if((c[m>>2]|0)>0)e=(a[(c[j>>2]|0)+((c[m>>2]|0)-1)>>0]|0)==94;else e=0;c[(c[x>>2]|0)+12>>2]=e&1;c[t>>2]=(c[p>>2]|0)+1}c[p>>2]=(c[p>>2]|0)+1}Tb[c[(c[w>>2]|0)+16>>2]&255](c[v>>2]|0)|0;c[v>>2]=0;C=14}else C=14;while(0);do if((C|0)==14){if((c[y>>2]|0)==101){c[z>>2]=0;c[u>>2]=zp(c[u>>2]|0,144+((c[t>>2]|0)*24|0)+(c[s>>2]|0)|0)|0;if(!(c[u>>2]|0))break;kR(c[u>>2]|0,0,(c[u>>2]|0)+48+72-(c[u>>2]|0)|0)|0;c[c[u>>2]>>2]=5;c[(c[u>>2]|0)+20>>2]=(c[u>>2]|0)+48;c[(c[(c[u>>2]|0)+20>>2]|0)+68>>2]=c[(c[h>>2]|0)+20>>2];c[(c[(c[u>>2]|0)+20>>2]|0)+64>>2]=c[t>>2];c[z>>2]=(c[(c[u>>2]|0)+20>>2]|0)+72+((c[t>>2]|0)*24|0);if(c[B>>2]|0){iR(c[z>>2]|0,c[B>>2]|0,c[s>>2]|0)|0;Kd(c[B>>2]|0)}c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[(c[(c[u>>2]|0)+20>>2]|0)+64>>2]|0))break;c[(c[(c[u>>2]|0)+20>>2]|0)+72+((c[q>>2]|0)*24|0)>>2]=c[z>>2];c[z>>2]=(c[z>>2]|0)+(c[(c[(c[u>>2]|0)+20>>2]|0)+72+((c[q>>2]|0)*24|0)+4>>2]|0);c[q>>2]=(c[q>>2]|0)+1}c[y>>2]=0}c[c[l>>2]>>2]=c[u>>2];c[g>>2]=c[y>>2];E=c[g>>2]|0;i=D;return E|0}while(0);if(c[v>>2]|0)Tb[c[(c[w>>2]|0)+16>>2]&255](c[v>>2]|0)|0;Kd(c[B>>2]|0);Kd(c[u>>2]|0);c[c[l>>2]>>2]=0;c[g>>2]=7;E=c[g>>2]|0;i=D;return E|0}function yp(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 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;B=i;i=i+80|0;j=B+68|0;k=B+64|0;l=B+60|0;m=B+56|0;n=B+52|0;o=B+48|0;y=B+44|0;w=B+40|0;z=B+36|0;v=B+32|0;x=B+28|0;p=B+24|0;A=B+20|0;u=B+16|0;s=B+12|0;q=B+8|0;r=B+4|0;t=B;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[y>>2]=c[c[j>>2]>>2];c[w>>2]=c[c[y>>2]>>2];c[x>>2]=0;c[p>>2]=0;c[p>>2]=0;while(1){if((c[p>>2]|0)>=(c[m>>2]|0))break;if((a[(c[l>>2]|0)+(c[p>>2]|0)>>0]|0)==40)break;if((a[(c[l>>2]|0)+(c[p>>2]|0)>>0]|0)==41)break;if((a[(c[l>>2]|0)+(c[p>>2]|0)>>0]|0)==34)break;c[p>>2]=(c[p>>2]|0)+1}c[c[o>>2]>>2]=c[p>>2];c[z>>2]=wn(c[y>>2]|0,c[(c[j>>2]|0)+4>>2]|0,c[l>>2]|0,c[p>>2]|0,v)|0;if(c[z>>2]|0){e=c[x>>2]|0;A=c[n>>2]|0;c[A>>2]=e;A=c[z>>2]|0;i=B;return A|0}c[u>>2]=0;c[s>>2]=0;c[q>>2]=0;c[r>>2]=0;c[z>>2]=Sb[c[(c[w>>2]|0)+20>>2]&255](c[v>>2]|0,A,u,s,q,r)|0;if(c[z>>2]|0){if((c[p>>2]|0)!=0&(c[z>>2]|0)==101)c[z>>2]=0}else{c[t>>2]=144+(c[u>>2]|0);c[x>>2]=tp(c[t>>2]|0)|0;a:do if(c[x>>2]|0){c[c[x>>2]>>2]=5;c[(c[x>>2]|0)+20>>2]=(c[x>>2]|0)+48;c[(c[(c[x>>2]|0)+20>>2]|0)+64>>2]=1;c[(c[(c[x>>2]|0)+20>>2]|0)+68>>2]=c[k>>2];c[(c[(c[x>>2]|0)+20>>2]|0)+72+4>>2]=c[u>>2];c[(c[(c[x>>2]|0)+20>>2]|0)+72>>2]=(c[(c[x>>2]|0)+20>>2]|0)+96;iR(c[(c[(c[x>>2]|0)+20>>2]|0)+72>>2]|0,c[A>>2]|0,c[u>>2]|0)|0;if((c[q>>2]|0)<(c[m>>2]|0)?(a[(c[l>>2]|0)+(c[q>>2]|0)>>0]|0)==42:0){c[(c[(c[x>>2]|0)+20>>2]|0)+72+8>>2]=1;c[q>>2]=(c[q>>2]|0)+1}while(1){if(!((c[s>>2]|0)>0?(c[(c[j>>2]|0)+12>>2]|0)!=0:0))break a;if((a[(c[l>>2]|0)+((c[s>>2]|0)-1)>>0]|0)!=94)break a;c[(c[(c[x>>2]|0)+20>>2]|0)+72+12>>2]=1;c[s>>2]=(c[s>>2]|0)+-1}}else c[z>>2]=7;while(0);c[c[o>>2]>>2]=c[q>>2]}Tb[c[(c[w>>2]|0)+16>>2]&255](c[v>>2]|0)|0;e=c[x>>2]|0;A=c[n>>2]|0;c[A>>2]=e;A=c[z>>2]|0;i=B;return A|0}function zp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+8|0;g=f+4|0;e=f;c[d>>2]=a;c[g>>2]=b;c[e>>2]=Ld(c[d>>2]|0,c[g>>2]|0)|0;if(c[e>>2]|0){g=c[e>>2]|0;i=f;return g|0}Kd(c[d>>2]|0);g=c[e>>2]|0;i=f;return g|0}function Ap(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Bp(c[(c[d>>2]|0)+20>>2]|0);Kd(c[(c[d>>2]|0)+40>>2]|0);Kd(c[d>>2]|0);i=b;return}function Bp(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;if(!(c[d>>2]|0)){i=f;return}Kd(c[c[d>>2]>>2]|0);Pm(c[d>>2]|0);a=c[d>>2]|0;b=a+40|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[d>>2]|0)+64>>2]|0))break;hn(c[(c[d>>2]|0)+72+((c[e>>2]|0)*24|0)+20>>2]|0);c[(c[d>>2]|0)+72+((c[e>>2]|0)*24|0)+20>>2]=0;c[e>>2]=(c[e>>2]|0)+1}i=f;return}function Cp(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;c[d>>2]=c[(c[b>>2]|0)+24>>2];while(1){if(!(c[d>>2]|0))break;c[e>>2]=c[(c[d>>2]|0)+8>>2];el(c[(c[d>>2]|0)+12>>2]|0);Kd(c[d>>2]|0);c[d>>2]=c[e>>2]}c[(c[b>>2]|0)+24>>2]=0;i=f;return}function Dp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+8|0;f=g;c[e>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;if((lf()|0)<3008002){i=g;return}d=f;f=c[d+4>>2]|0;a=(c[e>>2]|0)+48|0;c[a>>2]=c[d>>2];c[a+4>>2]=f;i=g;return}function Ep(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if((lf()|0)<3008012){i=d;return}a=(c[b>>2]|0)+56|0;c[a>>2]=c[a>>2]|1;i=d;return}function Uv(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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,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;ra=i;i=i+304|0;F=ra+32|0;E=ra+16|0;D=ra;I=ra+288|0;J=ra+284|0;K=ra+280|0;L=ra+276|0;M=ra+272|0;S=ra+268|0;fa=ra+264|0;n=ra+260|0;m=ra+256|0;U=ra+252|0;aa=ra+248|0;Y=ra+244|0;qa=ra+240|0;da=ra+236|0;ba=ra+232|0;ca=ra+228|0;V=ra+224|0;W=ra+220|0;Z=ra+216|0;T=ra+212|0;oa=ra+208|0;Q=ra+204|0;P=ra+200|0;s=ra+180|0;t=ra+176|0;l=ra+172|0;pa=ra+295|0;R=ra+294|0;G=ra+293|0;r=ra+292|0;ea=ra+168|0;ka=ra+164|0;ia=ra+160|0;ma=ra+156|0;la=ra+152|0;na=ra+148|0;ja=ra+144|0;N=ra+140|0;$=ra+136|0;ga=ra+132|0;C=ra+128|0;A=ra+124|0;q=ra+120|0;w=ra+116|0;y=ra+112|0;z=ra+108|0;p=ra+104|0;B=ra+72|0;u=ra+68|0;x=ra+64|0;o=ra+60|0;v=ra+56|0;O=ra+52|0;X=ra+48|0;ha=ra+44|0;_=ra+40|0;c[I>>2]=f;c[J>>2]=g;c[K>>2]=h;c[L>>2]=j;c[M>>2]=k;c[ca>>2]=0;c[V>>2]=0;c[W>>2]=0;c[Z>>2]=-1;c[oa>>2]=0;c[Q>>2]=0;c[P>>2]=0;a[pa>>0]=0;a[R>>0]=0;c[ea>>2]=0;c[ka>>2]=0;c[ia>>2]=0;c[ma>>2]=0;c[N>>2]=0;c[S>>2]=c[c[I>>2]>>2];c[s>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;c[s+16>>2]=0;a:do if((c[(c[I>>2]|0)+68>>2]|0)==0?(d[(c[S>>2]|0)+65>>0]|0)==0:0){if(((c[K>>2]|0)!=0?(e[(c[K>>2]|0)+6>>1]&256|0)!=0:0)?(c[(c[K>>2]|0)+52>>2]|0)==0:0){c[ea>>2]=c[c[K>>2]>>2];c[c[K>>2]>>2]=0;Wu(c[S>>2]|0,c[K>>2]|0);c[K>>2]=0}c[n>>2]=c[(c[J>>2]|0)+8+8>>2];if((((((c[n>>2]|0)!=0?(c[fa>>2]=DB(c[I>>2]|0,c[J>>2]|0)|0,(c[fa>>2]|0)!=0):0)?(c[t>>2]=Dh(c[S>>2]|0,c[(c[fa>>2]|0)+64>>2]|0)|0,c[l>>2]=(c[(c[S>>2]|0)+16>>2]|0)+(c[t>>2]<<4),c[m>>2]=c[c[l>>2]>>2],(Mw(c[I>>2]|0,18,c[c[fa>>2]>>2]|0,0,c[m>>2]|0)|0)==0):0)?(a[G>>0]=((d[(c[fa>>2]|0)+42>>0]&32|0)==0^1)&1,c[ga>>2]=sC(c[I>>2]|0,c[fa>>2]|0,108,0,C)|0,c[$>>2]=(c[(c[fa>>2]|0)+12>>2]|0)!=0&1,(zx(c[I>>2]|0,c[fa>>2]|0)|0)==0):0)?(tC(c[I>>2]|0,c[fa>>2]|0,c[C>>2]|0)|0)==0:0)?(c[qa>>2]=Pw(c[I>>2]|0)|0,(c[qa>>2]|0)!=0):0){if(!(d[(c[I>>2]|0)+18>>0]|0))uC(c[qa>>2]|0);ax(c[I>>2]|0,((c[K>>2]|0)!=0?1:(c[ga>>2]|0)!=0)&1,c[t>>2]|0);if(!((c[L>>2]|0)==0?(vC(c[I>>2]|0,c[fa>>2]|0,c[K>>2]|0,c[M>>2]|0,c[t>>2]|0)|0)!=0:0))H=17;b:do if((H|0)==17){c[ia>>2]=wC(c[I>>2]|0,c[t>>2]|0,c[fa>>2]|0)|0;n=(c[(c[I>>2]|0)+76>>2]|0)+1|0;c[la>>2]=n;c[na>>2]=n;n=(c[I>>2]|0)+76|0;c[n>>2]=(c[n>>2]|0)+((b[(c[fa>>2]|0)+34>>1]|0)+1);if(d[(c[fa>>2]|0)+42>>0]&16){c[na>>2]=(c[na>>2]|0)+1;n=(c[I>>2]|0)+76|0;c[n>>2]=(c[n>>2]|0)+1}c[ja>>2]=(c[na>>2]|0)+1;a[r>>0]=(d[(c[fa>>2]|0)+42>>0]&128|0)==0;c:do if(c[L>>2]|0){c[U>>2]=0;while(1){if((c[U>>2]|0)>=(c[(c[L>>2]|0)+4>>2]|0))break;c[(c[c[L>>2]>>2]|0)+(c[U>>2]<<3)+4>>2]=-1;c[U>>2]=(c[U>>2]|0)+1}c[U>>2]=0;while(1){if((c[U>>2]|0)>=(c[(c[L>>2]|0)+4>>2]|0))break c;c[aa>>2]=0;while(1){if((c[aa>>2]|0)>=(b[(c[fa>>2]|0)+34>>1]|0))break;n=(Td(c[(c[c[L>>2]>>2]|0)+(c[U>>2]<<3)>>2]|0,c[(c[(c[fa>>2]|0)+4>>2]|0)+((c[aa>>2]|0)*24|0)>>2]|0)|0)==0;k=c[aa>>2]|0;if(n){H=28;break}c[aa>>2]=k+1}do if((H|0)==28){H=0;c[(c[c[L>>2]>>2]|0)+(c[U>>2]<<3)+4>>2]=k;if((c[U>>2]|0)!=(c[aa>>2]|0))a[r>>0]=0;if((c[aa>>2]|0)!=(b[(c[fa>>2]|0)+32>>1]|0))break;c[Z>>2]=c[U>>2]}while(0);if((c[aa>>2]|0)>=(b[(c[fa>>2]|0)+34>>1]|0)){n=(qi(c[(c[c[L>>2]>>2]|0)+(c[U>>2]<<3)>>2]|0)|0)==0;if(n|(a[G>>0]|0)!=0)break;c[Z>>2]=c[U>>2];a[r>>0]=0}c[U>>2]=(c[U>>2]|0)+1}qa=c[I>>2]|0;pa=c[(c[c[L>>2]>>2]|0)+(c[U>>2]<<3)>>2]|0;c[D>>2]=c[J>>2];c[D+4>>2]=0;c[D+8>>2]=pa;Ah(qa,35073,D);a[(c[I>>2]|0)+17>>0]=1;break a}while(0);do if(!(c[K>>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[B+28>>2]=0;c[B>>2]=c[I>>2];c[oa>>2]=-1;if(c[ea>>2]|0){c[ba>>2]=c[c[ea>>2]>>2];if(gy(B,c[ea>>2]|0)|0)break a;else break}else{c[ba>>2]=0;break}}else{B=(c[I>>2]|0)+76|0;D=(c[B>>2]|0)+1|0;c[B>>2]=D;c[A>>2]=D;c[q>>2]=(Bz(c[qa>>2]|0)|0)+1;Vw(c[qa>>2]|0,16,c[A>>2]|0,0,c[q>>2]|0)|0;ZA(s,13,c[A>>2]|0);c[s+8>>2]=(d[r>>0]|0)!=0?c[ja>>2]|0:0;c[s+12>>2]=b[(c[fa>>2]|0)+34>>1];c[w>>2]=Cv(c[I>>2]|0,c[K>>2]|0,s)|0;c[ka>>2]=c[s+8>>2];if(c[w>>2]|0)break a;if(d[(c[S>>2]|0)+65>>0]|0)break a;if(c[(c[I>>2]|0)+68>>2]|0)break a;xC(c[qa>>2]|0,c[A>>2]|0);Fz(c[qa>>2]|0,(c[q>>2]|0)-1|0);c[ba>>2]=c[c[c[K>>2]>>2]>>2];if(!((c[ga>>2]|0)==0?(yC(c[I>>2]|0,c[t>>2]|0,c[fa>>2]|0)|0)==0:0))a[pa>>0]=1;if(!(a[pa>>0]|0))break;B=(c[I>>2]|0)+72|0;D=c[B>>2]|0;c[B>>2]=D+1;c[oa>>2]=D;c[y>>2]=Wz(c[I>>2]|0)|0;c[z>>2]=Wz(c[I>>2]|0)|0;Rw(c[qa>>2]|0,57,c[oa>>2]|0,c[ba>>2]|0)|0;c[p>>2]=xz(c[qa>>2]|0,18,c[s+4>>2]|0)|0;Vw(c[qa>>2]|0,49,c[ka>>2]|0,c[ba>>2]|0,c[y>>2]|0)|0;Rw(c[qa>>2]|0,74,c[oa>>2]|0,c[z>>2]|0)|0;Vw(c[qa>>2]|0,75,c[oa>>2]|0,c[y>>2]|0,c[z>>2]|0)|0;Ez(c[qa>>2]|0,c[p>>2]|0)|0;Fz(c[qa>>2]|0,c[p>>2]|0);_z(c[I>>2]|0,c[y>>2]|0);_z(c[I>>2]|0,c[z>>2]|0)}while(0);if((c[L>>2]|0)==0&(c[ba>>2]|0)>0)c[Z>>2]=b[(c[fa>>2]|0)+32>>1];c[U>>2]=0;while(1){if((c[U>>2]|0)>=(b[(c[fa>>2]|0)+34>>1]|0))break;c[ca>>2]=(c[ca>>2]|0)+((d[(c[(c[fa>>2]|0)+4>>2]|0)+((c[U>>2]|0)*24|0)+23>>0]&2|0)!=0?1:0);c[U>>2]=(c[U>>2]|0)+1}if((c[L>>2]|0)==0&(c[ba>>2]|0)!=0?(c[ba>>2]|0)!=((b[(c[fa>>2]|0)+34>>1]|0)-(c[ca>>2]|0)|0):0){qa=c[I>>2]|0;oa=(b[(c[fa>>2]|0)+34>>1]|0)-(c[ca>>2]|0)|0;pa=c[ba>>2]|0;c[E>>2]=c[J>>2];c[E+4>>2]=0;c[E+8>>2]=oa;c[E+12>>2]=pa;Ah(qa,35105,E);break a}do if(c[L>>2]|0){if((c[ba>>2]|0)==(c[(c[L>>2]|0)+4>>2]|0))break;qa=c[I>>2]|0;pa=c[(c[L>>2]|0)+4>>2]|0;c[F>>2]=c[ba>>2];c[F+4>>2]=pa;Ah(qa,35157,F);break a}while(0);if(c[(c[S>>2]|0)+24>>2]&128){E=(c[I>>2]|0)+76|0;F=(c[E>>2]|0)+1|0;c[E>>2]=F;c[ma>>2]=F;Rw(c[qa>>2]|0,22,0,c[ma>>2]|0)|0}d:do if(!(c[$>>2]|0)){c[u>>2]=gC(c[I>>2]|0,c[fa>>2]|0,55,0,-1,0,V,W)|0;c[N>>2]=Fw(c[S>>2]|0,(c[u>>2]|0)+1<<2,0)|0;if(!(c[N>>2]|0))break a;c[U>>2]=0;while(1){if((c[U>>2]|0)>=(c[u>>2]|0))break d;E=(c[I>>2]|0)+76|0;F=(c[E>>2]|0)+1|0;c[E>>2]=F;c[(c[N>>2]|0)+(c[U>>2]<<2)>>2]=F;c[U>>2]=(c[U>>2]|0)+1}}while(0);do if(a[pa>>0]|0){c[Q>>2]=xz(c[qa>>2]|0,108,c[oa>>2]|0)|0;c[P>>2]=Bz(c[qa>>2]|0)|0}else{if(!(c[K>>2]|0))break;F=xz(c[qa>>2]|0,18,c[s+4>>2]|0)|0;c[P>>2]=F;c[Q>>2]=F}while(0);c[T>>2]=Cz(c[qa>>2]|0)|0;if(c[C>>2]&1){c[x>>2]=kA(c[I>>2]|0,(b[(c[fa>>2]|0)+34>>1]|0)+1|0)|0;if((c[Z>>2]|0)<0)Rw(c[qa>>2]|0,22,-1,c[x>>2]|0)|0;else{if(a[pa>>0]|0)Vw(c[qa>>2]|0,47,c[oa>>2]|0,c[Z>>2]|0,c[x>>2]|0)|0;else xA(c[I>>2]|0,c[(c[(c[ea>>2]|0)+4>>2]|0)+((c[Z>>2]|0)*20|0)>>2]|0,c[x>>2]|0);c[o>>2]=xz(c[qa>>2]|0,77,c[x>>2]|0)|0;Rw(c[qa>>2]|0,22,-1,c[x>>2]|0)|0;Fz(c[qa>>2]|0,c[o>>2]|0);xz(c[qa>>2]|0,38,c[x>>2]|0)|0}c[aa>>2]=0;c[U>>2]=0;while(1){if((c[U>>2]|0)>=(b[(c[fa>>2]|0)+34>>1]|0))break;e:do if(c[L>>2]|0){c[aa>>2]=0;while(1){if((c[aa>>2]|0)>=(c[(c[L>>2]|0)+4>>2]|0))break e;if((c[(c[c[L>>2]>>2]|0)+(c[aa>>2]<<3)+4>>2]|0)==(c[U>>2]|0))break e;c[aa>>2]=(c[aa>>2]|0)+1}}while(0);do if((a[pa>>0]|0)!=0|(c[ea>>2]|0)!=0){if((c[L>>2]|0)!=0?(c[aa>>2]|0)>=(c[(c[L>>2]|0)+4>>2]|0):0){H=90;break}if(a[pa>>0]|0){Vw(c[qa>>2]|0,47,c[oa>>2]|0,c[aa>>2]|0,(c[x>>2]|0)+(c[U>>2]|0)+1|0)|0;break}else{zC(c[I>>2]|0,c[(c[(c[ea>>2]|0)+4>>2]|0)+((c[aa>>2]|0)*20|0)>>2]|0,(c[x>>2]|0)+(c[U>>2]|0)+1|0);break}}else H=90;while(0);if((H|0)==90){H=0;xA(c[I>>2]|0,c[(c[(c[fa>>2]|0)+4>>2]|0)+((c[U>>2]|0)*24|0)+4>>2]|0,(c[x>>2]|0)+(c[U>>2]|0)+1|0)}if(!(c[L>>2]|0))c[aa>>2]=(c[aa>>2]|0)+1;c[U>>2]=(c[U>>2]|0)+1}if(!(c[$>>2]|0))AC(c[qa>>2]|0,c[fa>>2]|0,(c[x>>2]|0)+1|0);BC(c[I>>2]|0,c[ga>>2]|0,108,0,1,c[fa>>2]|0,(c[x>>2]|0)-(b[(c[fa>>2]|0)+34>>1]|0)-1|0,c[M>>2]|0,c[T>>2]|0);nA(c[I>>2]|0,c[x>>2]|0,(b[(c[fa>>2]|0)+34>>1]|0)+1|0)}do if(!(c[$>>2]|0)){if(d[(c[fa>>2]|0)+42>>0]&16)Rw(c[qa>>2]|0,25,0,c[la>>2]|0)|0;f:do if((c[Z>>2]|0)>=0){do if(a[pa>>0]|0)Vw(c[qa>>2]|0,47,c[oa>>2]|0,c[Z>>2]|0,c[na>>2]|0)|0;else{if(c[K>>2]|0){Rw(c[qa>>2]|0,30,(c[ka>>2]|0)+(c[Z>>2]|0)|0,c[na>>2]|0)|0;break}xA(c[I>>2]|0,c[(c[(c[ea>>2]|0)+4>>2]|0)+((c[Z>>2]|0)*20|0)>>2]|0,c[na>>2]|0);c[v>>2]=Mz(c[qa>>2]|0,-1)|0;if(!(c[v>>2]|0))break;if((d[c[v>>2]>>0]|0)!=25)break;if(d[(c[fa>>2]|0)+42>>0]&16)break;a[R>>0]=1;a[c[v>>2]>>0]=74;c[(c[v>>2]|0)+4>>2]=c[V>>2];c[(c[v>>2]|0)+8>>2]=c[na>>2];c[(c[v>>2]|0)+12>>2]=c[ia>>2]}while(0);if(a[R>>0]|0)break;k=c[qa>>2]|0;if(d[(c[fa>>2]|0)+42>>0]&16){c[O>>2]=Bz(k)|0;Rw(c[qa>>2]|0,76,c[na>>2]|0,(c[O>>2]|0)+2|0)|0}else{c[O>>2]=xz(k,77,c[na>>2]|0)|0;Vw(c[qa>>2]|0,74,c[V>>2]|0,c[na>>2]|0,c[ia>>2]|0)|0;Fz(c[qa>>2]|0,c[O>>2]|0)}xz(c[qa>>2]|0,38,c[na>>2]|0)|0}else{do if(!(d[(c[fa>>2]|0)+42>>0]&16)){if(d[G>>0]|0)break;Vw(c[qa>>2]|0,74,c[V>>2]|0,c[na>>2]|0,c[ia>>2]|0)|0;a[R>>0]=1;break f}while(0);Rw(c[qa>>2]|0,25,0,c[na>>2]|0)|0}while(0);CC(c[I>>2]|0,c[ia>>2]|0,c[na>>2]|0);c[ca>>2]=0;c[U>>2]=0;while(1){if((c[U>>2]|0)>=(b[(c[fa>>2]|0)+34>>1]|0))break;c[X>>2]=(c[na>>2]|0)+1+(c[U>>2]|0);g:do if((c[U>>2]|0)==(b[(c[fa>>2]|0)+32>>1]|0))xz(c[qa>>2]|0,26,c[X>>2]|0)|0;else{h:do if(!(c[L>>2]|0))if(d[(c[(c[fa>>2]|0)+4>>2]|0)+((c[U>>2]|0)*24|0)+23>>0]&2){c[aa>>2]=-1;c[ca>>2]=(c[ca>>2]|0)+1;break}else{c[aa>>2]=(c[U>>2]|0)-(c[ca>>2]|0);break}else{c[aa>>2]=0;while(1){if((c[aa>>2]|0)>=(c[(c[L>>2]|0)+4>>2]|0))break h;if((c[(c[c[L>>2]>>2]|0)+(c[aa>>2]<<3)+4>>2]|0)==(c[U>>2]|0))break h;c[aa>>2]=(c[aa>>2]|0)+1}}while(0);do if(!((c[aa>>2]|0)<0|(c[ba>>2]|0)==0)){if((c[L>>2]|0)!=0?(c[aa>>2]|0)>=(c[(c[L>>2]|0)+4>>2]|0):0)break;if(a[pa>>0]|0){Vw(c[qa>>2]|0,47,c[oa>>2]|0,c[aa>>2]|0,c[X>>2]|0)|0;break g}if(!(c[K>>2]|0)){xA(c[I>>2]|0,c[(c[(c[ea>>2]|0)+4>>2]|0)+((c[aa>>2]|0)*20|0)>>2]|0,c[X>>2]|0);break g}if((c[ka>>2]|0)==(c[ja>>2]|0))break g;Rw(c[qa>>2]|0,31,(c[ka>>2]|0)+(c[aa>>2]|0)|0,c[X>>2]|0)|0;break g}while(0);DC(c[I>>2]|0,c[(c[(c[fa>>2]|0)+4>>2]|0)+((c[U>>2]|0)*24|0)+4>>2]|0,c[X>>2]|0)}while(0);c[U>>2]=(c[U>>2]|0)+1}if(d[(c[fa>>2]|0)+42>>0]&16){c[ha>>2]=Ax(c[S>>2]|0,c[fa>>2]|0)|0;EC(c[I>>2]|0,c[fa>>2]|0);Uw(c[qa>>2]|0,12,1,(b[(c[fa>>2]|0)+34>>1]|0)+2|0,c[la>>2]|0,c[ha>>2]|0,-10)|0;Fh(c[qa>>2]|0,((c[M>>2]|0)==10?2:c[M>>2]|0)&255);Bx(c[I>>2]|0);break}else{FC(c[I>>2]|0,c[fa>>2]|0,c[N>>2]|0,c[V>>2]|0,c[W>>2]|0,c[la>>2]|0,0,(c[Z>>2]|0)>=0&255,c[M>>2]&255,c[T>>2]|0,_,0);GC(c[I>>2]|0,c[fa>>2]|0,0,c[la>>2]|0,0,0);HC(c[I>>2]|0,c[fa>>2]|0,c[V>>2]|0,c[W>>2]|0,c[la>>2]|0,c[N>>2]|0,0,d[R>>0]|0,(c[_>>2]|0)==0&1);break}}while(0);if(c[(c[S>>2]|0)+24>>2]&128)Rw(c[qa>>2]|0,37,c[ma>>2]|0,1)|0;if(c[ga>>2]|0)BC(c[I>>2]|0,c[ga>>2]|0,108,0,2,c[fa>>2]|0,(c[ja>>2]|0)-2-(b[(c[fa>>2]|0)+34>>1]|0)|0,c[M>>2]|0,c[T>>2]|0);Gz(c[qa>>2]|0,c[T>>2]|0);do if(a[pa>>0]|0){Rw(c[qa>>2]|0,7,c[oa>>2]|0,c[P>>2]|0)|0;Fz(c[qa>>2]|0,c[Q>>2]|0);xz(c[qa>>2]|0,61,c[oa>>2]|0)|0}else{if(!(c[K>>2]|0))break;Ez(c[qa>>2]|0,c[P>>2]|0)|0;Fz(c[qa>>2]|0,c[Q>>2]|0)}while(0);if((c[$>>2]|0)!=0?1:(d[(c[fa>>2]|0)+42>>0]&16|0)!=0)break;if((c[V>>2]|0)<(c[W>>2]|0))xz(c[qa>>2]|0,61,c[V>>2]|0)|0;c[Y>>2]=0;c[da>>2]=c[(c[fa>>2]|0)+8>>2];while(1){if(!(c[da>>2]|0))break b;xz(c[qa>>2]|0,61,(c[Y>>2]|0)+(c[W>>2]|0)|0)|0;c[da>>2]=c[(c[da>>2]|0)+20>>2];c[Y>>2]=(c[Y>>2]|0)+1}}while(0);if((d[(c[I>>2]|0)+18>>0]|0)==0?(c[(c[I>>2]|0)+420>>2]|0)==0:0)IC(c[I>>2]|0);if(((c[(c[S>>2]|0)+24>>2]&128|0)!=0?(a[(c[I>>2]|0)+18>>0]|0)==0:0)?(c[(c[I>>2]|0)+420>>2]|0)==0:0){Rw(c[qa>>2]|0,33,c[ma>>2]|0,1)|0;OB(c[qa>>2]|0,1);PB(c[qa>>2]|0,0,0,35182,0)|0}}}while(0);Yu(c[S>>2]|0,c[J>>2]|0);Vu(c[S>>2]|0,c[ea>>2]|0);Wu(c[S>>2]|0,c[K>>2]|0);_u(c[S>>2]|0,c[L>>2]|0);Sf(c[S>>2]|0,c[N>>2]|0);i=ra;return}function Vv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;f=k+16|0;e=k+12|0;g=k+8|0;h=k+4|0;j=k;c[e>>2]=a;c[g>>2]=b;c[h>>2]=d;if((c[g>>2]|0)==0?(c[g>>2]=ph(c[e>>2]|0,8,0)|0,(c[g>>2]|0)==0):0){c[f>>2]=0;j=c[f>>2]|0;i=k;return j|0}d=rC(c[e>>2]|0,c[c[g>>2]>>2]|0,8,(c[g>>2]|0)+4|0,j)|0;c[c[g>>2]>>2]=d;e=c[e>>2]|0;if((c[j>>2]|0)<0){_u(e,c[g>>2]|0);c[f>>2]=0;j=c[f>>2]|0;i=k;return j|0}else{h=Dw(e,c[h>>2]|0)|0;c[(c[c[g>>2]>>2]|0)+(c[j>>2]<<3)>>2]=h;c[f>>2]=c[g>>2];j=c[f>>2]|0;i=k;return j|0}return 0}function Wv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;h=e+4|0;g=e;c[f>>2]=a;c[h>>2]=b;c[g>>2]=d;c[(c[f>>2]|0)+4>>2]=c[c[h>>2]>>2];c[(c[f>>2]|0)+8>>2]=(c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+4>>2]|0);i=e;return}function Xv(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+64|0;p=t+16|0;o=t+8|0; -f=t+44|0;g=t+40|0;k=t+36|0;r=t+32|0;q=t+50|0;n=t+28|0;l=t;j=t+24|0;m=t+48|0;h=t+20|0;c[f>>2]=d;c[g>>2]=e;c[k>>2]=c[c[f>>2]>>2];if(!(c[g>>2]|0)){i=t;return}c[r>>2]=c[(c[g>>2]|0)+8>>2];do if(a[(c[r>>2]|0)+1>>0]|0){b[q>>1]=0;c[n>>2]=If(c[r>>2]|0)|0;if((a[c[r>>2]>>0]|0)==63){c[j>>2]=0==(Hi((c[r>>2]|0)+1|0,l,(c[n>>2]|0)-1|0,1)|0)&1;s=c[l>>2]&65535;b[q>>1]=s;b[(c[g>>2]|0)+32>>1]=s;s=l;d=c[s+4>>2]|0;if(!(!((c[j>>2]|0)==0|((d|0)<0|(d|0)==0&(c[s>>2]|0)>>>0<1))?(d=l,m=c[d+4>>2]|0,s=c[(c[k>>2]|0)+88+36>>2]|0,e=((s|0)<0)<<31>>31,!((m|0)>(e|0)|((m|0)==(e|0)?(c[d>>2]|0)>>>0>s>>>0:0))):0)){s=c[f>>2]|0;c[o>>2]=c[(c[k>>2]|0)+88+36>>2];Ah(s,35007,o);b[q>>1]=0}o=l;e=c[o+4>>2]|0;s=b[(c[f>>2]|0)+444>>1]|0;d=((s|0)<0)<<31>>31;if((e|0)>(d|0)|((e|0)==(d|0)?(c[o>>2]|0)>>>0>s>>>0:0))b[(c[f>>2]|0)+444>>1]=c[l>>2]}else{b[m>>1]=0;while(1){if((b[m>>1]|0)>=(c[(c[f>>2]|0)+448>>2]|0))break;if((c[(c[(c[f>>2]|0)+476>>2]|0)+(b[m>>1]<<2)>>2]|0)!=0?(yQ(c[(c[(c[f>>2]|0)+476>>2]|0)+(b[m>>1]<<2)>>2]|0,c[r>>2]|0)|0)==0:0){s=14;break}b[m>>1]=(b[m>>1]|0)+1<<16>>16}if((s|0)==14){s=(b[m>>1]|0)+1&65535;b[q>>1]=s;b[(c[g>>2]|0)+32>>1]=s}if(!(b[q>>1]|0)){o=(c[f>>2]|0)+444|0;s=(b[o>>1]|0)+1<<16>>16;b[o>>1]=s;b[(c[g>>2]|0)+32>>1]=s;b[q>>1]=s}}if((b[q>>1]|0)>0){do if((b[q>>1]|0)>(c[(c[f>>2]|0)+448>>2]|0)){c[h>>2]=Ew(c[k>>2]|0,c[(c[f>>2]|0)+476>>2]|0,b[q>>1]<<2,0)|0;if(!(c[h>>2]|0)){i=t;return}else{c[(c[f>>2]|0)+476>>2]=c[h>>2];kR((c[h>>2]|0)+(c[(c[f>>2]|0)+448>>2]<<2)|0,0,(b[q>>1]|0)-(c[(c[f>>2]|0)+448>>2]|0)<<2|0)|0;c[(c[f>>2]|0)+448>>2]=b[q>>1];break}}while(0);if((a[c[r>>2]>>0]|0)==63?(c[(c[(c[f>>2]|0)+476>>2]|0)+((b[q>>1]|0)-1<<2)>>2]|0)!=0:0)break;Sf(c[k>>2]|0,c[(c[(c[f>>2]|0)+476>>2]|0)+((b[q>>1]|0)-1<<2)>>2]|0);s=Iw(c[k>>2]|0,c[r>>2]|0,c[n>>2]|0,0)|0;c[(c[(c[f>>2]|0)+476>>2]|0)+((b[q>>1]|0)-1<<2)>>2]=s}}else{r=(c[f>>2]|0)+444|0;s=(b[r>>1]|0)+1<<16>>16;b[r>>1]=s;b[(c[g>>2]|0)+32>>1]=s}while(0);if(c[(c[f>>2]|0)+68>>2]|0){i=t;return}if((b[(c[f>>2]|0)+444>>1]|0)<=(c[(c[k>>2]|0)+88+36>>2]|0)){i=t;return}Ah(c[f>>2]|0,35050,p);i=t;return}function Yv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;if((c[(c[h>>2]|0)+4>>2]|0)>>>0<=0){a=c[g>>2]|0;i=l;return a|0}c[k>>2]=cz(c[c[f>>2]>>2]|0,95,c[h>>2]|0,c[j>>2]|0)|0;if(!(c[k>>2]|0)){a=c[g>>2]|0;i=l;return a|0}c[(c[k>>2]|0)+12>>2]=c[g>>2];a=(c[k>>2]|0)+4|0;c[a>>2]=c[a>>2]|4352;c[g>>2]=c[k>>2];a=c[g>>2]|0;i=l;return a|0}function Zv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+20|0;f=k+16|0;g=k+12|0;l=k+8|0;j=k+4|0;h=k;c[f>>2]=a;c[g>>2]=b;c[l>>2]=d;c[h>>2]=c[c[f>>2]>>2];c[j>>2]=cz(c[h>>2]|0,151,c[l>>2]|0,1)|0;if(!(c[j>>2]|0)){Vu(c[h>>2]|0,c[g>>2]|0);c[e>>2]=0;l=c[e>>2]|0;i=k;return l|0}else{c[(c[j>>2]|0)+20>>2]=c[g>>2];dw(c[f>>2]|0,c[j>>2]|0);c[e>>2]=c[j>>2];l=c[e>>2]|0;i=k;return l|0}return 0}function _v(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,j=0,k=0,l=0,m=0;g=i;i=i+32|0;h=g+16|0;m=g+12|0;l=g+8|0;k=g+4|0;j=g;c[h>>2]=a;c[m>>2]=b;c[l>>2]=d;c[k>>2]=e;c[j>>2]=f;f=rv(c[m>>2]|0,c[l>>2]|0,c[c[k>>2]>>2]|0,c[c[j>>2]>>2]|0,0)|0;c[c[h>>2]>>2]=f;c[(c[h>>2]|0)+4>>2]=c[(c[k>>2]|0)+4>>2];c[(c[h>>2]|0)+8>>2]=c[(c[j>>2]|0)+8>>2];i=g;return}function $v(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+8|0;h=g+4|0;f=g;c[e>>2]=a;c[h>>2]=b;c[f>>2]=d;if(!(c[h>>2]|0)){i=g;return}h=rv(c[e>>2]|0,19,c[c[f>>2]>>2]|0,0,0)|0;c[c[f>>2]>>2]=h;i=g;return}function aw(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,j=0,k=0,l=0,m=0;g=i;i=i+32|0;h=g+16|0;m=g+12|0;l=g+8|0;k=g+4|0;j=g;c[h>>2]=a;c[m>>2]=b;c[l>>2]=d;c[k>>2]=e;c[j>>2]=f;f=rv(c[m>>2]|0,c[l>>2]|0,c[c[k>>2]>>2]|0,0,0)|0;c[c[h>>2]>>2]=f;c[(c[h>>2]|0)+4>>2]=c[(c[k>>2]|0)+4>>2];c[(c[h>>2]|0)+8>>2]=(c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+4>>2]|0);i=g;return}function bw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;n=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[n>>2]=b;c[h>>2]=e;c[j>>2]=f;c[k>>2]=g;c[l>>2]=c[c[n>>2]>>2];if(!((c[j>>2]|0)!=0&(c[h>>2]|0)!=0)){i=m;return}if((d[c[h>>2]>>0]|0|0)!=101){i=m;return}a[c[j>>2]>>0]=c[k>>2];Zu(c[l>>2]|0,c[(c[j>>2]|0)+16>>2]|0);c[(c[j>>2]|0)+16>>2]=0;i=m;return}function cw(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,j=0,k=0,l=0,m=0;g=i;i=i+32|0;h=g+16|0;m=g+12|0;l=g+8|0;j=g+4|0;k=g;c[h>>2]=a;c[m>>2]=b;c[l>>2]=d;c[j>>2]=e;c[k>>2]=f;f=rv(c[m>>2]|0,c[l>>2]|0,c[c[j>>2]>>2]|0,0,0)|0;c[c[h>>2]>>2]=f;c[(c[h>>2]|0)+4>>2]=c[c[k>>2]>>2];c[(c[h>>2]|0)+8>>2]=c[(c[j>>2]|0)+8>>2];i=g;return}function dw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if(c[(c[d>>2]|0)+68>>2]|0){i=f;return}ez(c[e>>2]|0);Ey(c[d>>2]|0,c[(c[e>>2]|0)+24>>2]|0)|0;i=f;return}function ew(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=i;i=i+32|0;l=m;h=m+28|0;p=m+24|0;j=m+20|0;o=m+16|0;n=m+12|0;k=m+8|0;c[h>>2]=a;c[p>>2]=b;c[j>>2]=e;c[o>>2]=f;c[n>>2]=g;c[k>>2]=Gv(c[h>>2]|0,c[p>>2]|0,0)|0;if((c[o>>2]|0)!=0|(c[n>>2]|0)!=-1?(d[(c[c[h>>2]>>2]|0)+140+5>>0]|0|0)==0:0){p=c[h>>2]|0;o=c[c[j>>2]>>2]|0;c[l>>2]=c[(c[j>>2]|0)+4>>2];c[l+4>>2]=o;Ah(p,34967,l)}Hv(c[h>>2]|0,c[k>>2]|0,c[j>>2]|0,1);i=m;return c[k>>2]|0}function fw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=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;u=i;i=i+80|0;m=u+16|0;l=u+8|0;t=u;p=u+68|0;q=u+64|0;r=u+60|0;h=u+56|0;k=u+52|0;s=u+48|0;g=u+44|0;f=u+40|0;j=u+36|0;n=u+32|0;o=u+28|0;c[p>>2]=b;c[q>>2]=d;c[r>>2]=e;c[s>>2]=c[c[p>>2]>>2];if(a[(c[s>>2]|0)+65>>0]|0){s=c[s>>2]|0;t=c[q>>2]|0;Yu(s,t);i=u;return}if(pz(c[p>>2]|0)|0){s=c[s>>2]|0;t=c[q>>2]|0;Yu(s,t);i=u;return}c[h>>2]=Fj(c[s>>2]|0,c[(c[q>>2]|0)+8+8>>2]|0,c[(c[q>>2]|0)+8+4>>2]|0)|0;if(!(c[h>>2]|0)){f=c[p>>2]|0;g=c[q>>2]|0;if(c[r>>2]|0)zB(f,c[g+8+4>>2]|0);else{c[t>>2]=g;c[t+4>>2]=0;Ah(f,34757,t)}a[(c[p>>2]|0)+17>>0]=1;s=c[s>>2]|0;t=c[q>>2]|0;Yu(s,t);i=u;return}if(a[(c[h>>2]|0)+55>>0]&3){t=c[p>>2]|0;c[l>>2]=0;Ah(t,34775,l);s=c[s>>2]|0;t=c[q>>2]|0;Yu(s,t);i=u;return}c[g>>2]=Dh(c[s>>2]|0,c[(c[h>>2]|0)+24>>2]|0)|0;c[f>>2]=10;c[j>>2]=c[(c[h>>2]|0)+12>>2];c[n>>2]=c[(c[(c[s>>2]|0)+16>>2]|0)+(c[g>>2]<<4)>>2];c[o>>2]=(c[g>>2]|0)==1?20769:20788;if(Mw(c[p>>2]|0,9,c[o>>2]|0,0,c[n>>2]|0)|0){s=c[s>>2]|0;t=c[q>>2]|0;Yu(s,t);i=u;return}if(c[g>>2]|0)c[f>>2]=12;if(Mw(c[p>>2]|0,c[f>>2]|0,c[c[h>>2]>>2]|0,c[c[j>>2]>>2]|0,c[n>>2]|0)|0){s=c[s>>2]|0;t=c[q>>2]|0;Yu(s,t);i=u;return}c[k>>2]=Pw(c[p>>2]|0)|0;if(!(c[k>>2]|0)){s=c[s>>2]|0;t=c[q>>2]|0;Yu(s,t);i=u;return}ax(c[p>>2]|0,1,c[g>>2]|0);t=c[p>>2]|0;o=(c[g>>2]|0)==1?20769:20788;r=c[c[h>>2]>>2]|0;c[m>>2]=c[(c[(c[s>>2]|0)+16>>2]|0)+(c[g>>2]<<4)>>2];c[m+4>>2]=o;c[m+8>>2]=r;Ow(t,34848,m);pC(c[p>>2]|0,c[g>>2]|0,31725,c[c[h>>2]>>2]|0);Qw(c[p>>2]|0,c[g>>2]|0);qC(c[p>>2]|0,c[(c[h>>2]|0)+44>>2]|0,c[g>>2]|0);Uw(c[k>>2]|0,126,c[g>>2]|0,0,0,c[c[h>>2]>>2]|0,0)|0;s=c[s>>2]|0;t=c[q>>2]|0;Yu(s,t);i=u;return}function gw(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=Pw(c[e>>2]|0)|0;if(!(c[b>>2]|0)){i=d;return}Rw(c[b>>2]|0,10,0,0)|0;Hh(c[b>>2]|0,0);i=d;return}function hw(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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,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;ac=i;i=i+800|0;Ia=ac+264|0;Sb=ac+256|0;Rb=ac+248|0;db=ac+240|0;Aa=ac+208|0;za=ac+200|0;ya=ac+184|0;xa=ac+160|0;Qb=ac+144|0;Pb=ac+128|0;wa=ac+112|0;va=ac+96|0;cb=ac+72|0;ua=ac+64|0;ta=ac+56|0;sa=ac+48|0;r=ac+40|0;p=ac+32|0;Xb=ac+792|0;l=ac+788|0;s=ac+784|0;n=ac+780|0;o=ac+776|0;_b=ac+772|0;$b=ac+768|0;fb=ac+764|0;m=ac+760|0;q=ac+744|0;Wb=ac+736|0;X=ac+732|0;ra=ac+728|0;Y=ac+724|0;la=ac+720|0;Zb=ac+716|0;Fa=ac+712|0;Yb=ac+708|0;Hb=ac+704|0;v=ac+700|0;na=ac+696|0;$=ac+692|0;Ga=ac+688|0;aa=ac+684|0;B=ac+680|0;T=ac+676|0;Pa=ac+672|0;Da=ac+668|0;E=ac+664|0;ga=ac+660|0;U=ac+656|0;F=ac+652|0;V=ac+648|0;Ba=ac+644|0;Z=ac+640|0;ha=ac+636|0;R=ac+24|0;ba=ac+632|0;D=ac+628|0;y=ac+624|0;N=ac+620|0;S=ac+616|0;z=ac+612|0;oa=ac+608|0;pa=ac+604|0;qa=ac+16|0;ma=ac+600|0;Q=ac+596|0;Ea=ac+592|0;Za=ac+588|0;Ma=ac+584|0;Ra=ac+580|0;Ta=ac+576|0;Ua=ac+572|0;Ya=ac+568|0;ea=ac+564|0;H=ac+560|0;ia=ac+556|0;Db=ac+552|0;Jb=ac+548|0;lb=ac+544|0;Bb=ac+540|0;kb=ac+796|0;fa=ac+536|0;ja=ac+532|0;I=ac+528|0;A=ac+516|0;J=ac+512|0;K=ac+508|0;_=ac+504|0;ca=ac+500|0;da=ac+496|0;ka=ac+492|0;L=ac+488|0;W=ac+484|0;Va=ac+480|0;_a=ac+476|0;Xa=ac+472|0;Wa=ac+468|0;Na=ac+464|0;Qa=ac+460|0;Sa=ac+456|0;eb=ac+452|0;ab=ac+448|0;$a=ac+444|0;bb=ac+440|0;Ka=ac+436|0;Ja=ac+432|0;La=ac+428|0;Oa=ac+424|0;mb=ac+420|0;rb=ac+416|0;hb=ac+412|0;Cb=ac+408|0;qb=ac+404|0;Tb=ac+400|0;Mb=ac+396|0;jb=ac+392|0;Kb=ac+388|0;Eb=ac+384|0;Lb=ac+380|0;Fb=ac+376|0;Gb=ac+372|0;Ib=ac+368|0;Ab=ac+364|0;ob=ac+360|0;pb=ac+356|0;Nb=ac+352|0;Ub=ac+348|0;sb=ac+344|0;ub=ac+340|0;tb=ac+336|0;vb=ac+332|0;wb=ac+328|0;xb=ac+324|0;ib=ac+320|0;Ob=ac+316|0;yb=ac+312|0;zb=ac+308|0;nb=ac+304|0;gb=ac+300|0;Ha=ac+296|0;P=ac+292|0;w=ac+288|0;x=ac+284|0;M=ac+280|0;Ca=ac+276|0;O=ac+272|0;G=ac+268|0;t=ac+8|0;u=ac;c[Xb>>2]=f;c[l>>2]=g;c[s>>2]=h;c[n>>2]=j;c[o>>2]=k;c[_b>>2]=0;c[$b>>2]=0;c[fb>>2]=0;c[Y>>2]=0;c[Zb>>2]=c[c[Xb>>2]>>2];c[Yb>>2]=Pw(c[Xb>>2]|0)|0;if(!(c[Yb>>2]|0)){i=ac;return}KB(c[Yb>>2]|0);c[(c[Xb>>2]|0)+76>>2]=2;c[Wb>>2]=tz(c[Xb>>2]|0,c[l>>2]|0,c[s>>2]|0,m)|0;if((c[Wb>>2]|0)<0){i=ac;return}c[Fa>>2]=(c[(c[Zb>>2]|0)+16>>2]|0)+(c[Wb>>2]<<4);if((c[Wb>>2]|0)==1?(cx(c[Xb>>2]|0)|0)!=0:0){i=ac;return}c[_b>>2]=Dw(c[Zb>>2]|0,c[m>>2]|0)|0;if(!(c[_b>>2]|0)){i=ac;return}k=c[Zb>>2]|0;l=c[n>>2]|0;if(c[o>>2]|0){c[p>>2]=l;c[$b>>2]=Bh(k,32915,p)|0}else c[$b>>2]=Dw(k,l)|0;if((c[(c[s>>2]|0)+4>>2]|0)>>>0>0)l=c[c[Fa>>2]>>2]|0;else l=0;c[fb>>2]=l;a:do if(!(Mw(c[Xb>>2]|0,19,c[_b>>2]|0,c[$b>>2]|0,c[fb>>2]|0)|0)){c[q>>2]=0;c[q+4>>2]=c[_b>>2];c[q+8>>2]=c[$b>>2];c[q+12>>2]=0;c[(c[Zb>>2]|0)+448+8>>2]=0;c[la>>2]=Ff(c[Zb>>2]|0,c[fb>>2]|0,14,q)|0;if(!(c[la>>2]|0)){LB(c[Yb>>2]|0,32919,c[q>>2]|0);Kd(c[q>>2]|0);break}if((c[la>>2]|0)!=12){if(c[q>>2]|0){Yb=c[Xb>>2]|0;c[r>>2]=c[q>>2];Ah(Yb,19255,r);Kd(c[q>>2]|0)}Yb=(c[Xb>>2]|0)+68|0;c[Yb>>2]=(c[Yb>>2]|0)+1;c[(c[Xb>>2]|0)+12>>2]=c[la>>2];break}c[X>>2]=0;c[ra>>2]=57;while(1){if((c[X>>2]|0)>(c[ra>>2]|0))break;c[Y>>2]=((c[X>>2]|0)+(c[ra>>2]|0)|0)/2|0;c[la>>2]=Td(c[_b>>2]|0,c[5312+((c[Y>>2]|0)*12|0)>>2]|0)|0;if(!(c[la>>2]|0))break;l=c[Y>>2]|0;if((c[la>>2]|0)<0){c[ra>>2]=l-1;continue}else{c[X>>2]=l+1;continue}}if((c[X>>2]|0)<=(c[ra>>2]|0)){c[Hb>>2]=5312+((c[Y>>2]|0)*12|0);if((d[(c[Hb>>2]|0)+5>>0]&1|0)!=0?(pz(c[Xb>>2]|0)|0)!=0:0)break;do switch(d[(c[Hb>>2]|0)+4>>0]|0){case 11:{Hh(c[Yb>>2]|0,c[Wb>>2]|0);if(c[$b>>2]|0){c[na>>2]=yj(Ki(c[$b>>2]|0)|0)|0;ax(c[Xb>>2]|0,0,c[Wb>>2]|0);Vw(c[Yb>>2]|0,52,c[Wb>>2]|0,3,c[na>>2]|0)|0;c[(c[(c[Fa>>2]|0)+12>>2]|0)+80>>2]=c[na>>2];zj(c[(c[Fa>>2]|0)+4>>2]|0,c[(c[(c[Fa>>2]|0)+12>>2]|0)+80>>2]|0)|0;break a}else{MB(c[Yb>>2]|0,32926);Xb=(c[Xb>>2]|0)+76|0;c[Xb>>2]=(c[Xb>>2]|0)+2;c[v>>2]=Gh(c[Yb>>2]|0,9,32937,0)|0;c[(c[v>>2]|0)+4>>2]=c[Wb>>2];c[(c[v>>2]|0)+20+4>>2]=c[Wb>>2];c[(c[v>>2]|0)+120+4>>2]=2e3;break a}}case 25:{c[$>>2]=c[(c[Fa>>2]|0)+4>>2];if(c[$b>>2]|0){Yb=Ki(c[$b>>2]|0)|0;c[(c[Zb>>2]|0)+72>>2]=Yb;if(7!=(xi(c[$>>2]|0,c[(c[Zb>>2]|0)+72>>2]|0,-1,0)|0))break a;jh(c[Zb>>2]|0);break a}if(c[$>>2]|0)l=pg(c[$>>2]|0)|0;else l=0;c[Ga>>2]=l;Xb=c[Ga>>2]|0;NB(c[Yb>>2]|0,32973,Xb,((Xb|0)<0)<<31>>31);break a}case 26:{c[aa>>2]=c[(c[Fa>>2]|0)+4>>2];c[B>>2]=-1;if(c[$b>>2]|0)c[B>>2]=(Bi(c[$b>>2]|0,0)|0)&255;b:do if((c[B>>2]|0)>=0?(c[(c[s>>2]|0)+4>>2]|0)==0:0){c[T>>2]=0;while(1){if((c[T>>2]|0)>=(c[(c[Zb>>2]|0)+20>>2]|0))break b;vB(c[(c[(c[Zb>>2]|0)+16>>2]|0)+(c[T>>2]<<4)+4>>2]|0,c[B>>2]|0)|0;c[T>>2]=(c[T>>2]|0)+1}}while(0);c[B>>2]=vB(c[aa>>2]|0,c[B>>2]|0)|0;Xb=c[B>>2]|0;NB(c[Yb>>2]|0,32983,Xb,((Xb|0)<0)<<31>>31);break a}case 23:{bx(c[Xb>>2]|0,c[Wb>>2]|0);l=(c[Xb>>2]|0)+76|0;m=(c[l>>2]|0)+1|0;c[l>>2]=m;c[Pa>>2]=m;m=c[Yb>>2]|0;l=c[Wb>>2]|0;k=c[Pa>>2]|0;if((d[18477+(d[c[_b>>2]>>0]|0)>>0]|0)==112)Rw(m,156,l,k)|0;else Vw(m,157,l,k,yj(Ki(c[$b>>2]|0)|0)|0)|0;Rw(c[Yb>>2]|0,33,c[Pa>>2]|0,1)|0;OB(c[Yb>>2]|0,1);PB(c[Yb>>2]|0,0,0,c[_b>>2]|0,-1)|0;break a}case 22:{c[Da>>2]=32997;c[E>>2]=QB(c[$b>>2]|0)|0;if((c[E>>2]|0)==-1?(c[(c[s>>2]|0)+4>>2]|0)==0:0)c[E>>2]=d[(c[Zb>>2]|0)+67>>0];else{if(!(c[(c[s>>2]|0)+4>>2]|0)){c[U>>2]=2;while(1){if((c[U>>2]|0)>=(c[(c[Zb>>2]|0)+20>>2]|0))break;c[ga>>2]=Of(c[(c[(c[Zb>>2]|0)+16>>2]|0)+(c[U>>2]<<4)+4>>2]|0)|0;uB(c[ga>>2]|0,c[E>>2]|0)|0;c[U>>2]=(c[U>>2]|0)+1}a[(c[Zb>>2]|0)+67>>0]=c[E>>2]}c[ga>>2]=Of(c[(c[Fa>>2]|0)+4>>2]|0)|0;c[E>>2]=uB(c[ga>>2]|0,c[E>>2]|0)|0}if((c[E>>2]|0)==1)c[Da>>2]=33004;LB(c[Yb>>2]|0,33014,c[Da>>2]|0);break a}case 19:{MB(c[Yb>>2]|0,33027);if(c[$b>>2]|0){c[Z>>2]=If(c[$b>>2]|0)|0;c[F>>2]=0;while(1){Xb=RB(c[F>>2]|0)|0;c[Ba>>2]=Xb;if(!Xb)break;if(!(zd(c[$b>>2]|0,c[Ba>>2]|0,c[Z>>2]|0)|0))break;c[F>>2]=(c[F>>2]|0)+1}if(!(c[Ba>>2]|0))c[F>>2]=-1}else c[F>>2]=-1;if((c[F>>2]|0)==-1?(c[(c[s>>2]|0)+4>>2]|0)==0:0){c[Wb>>2]=0;c[(c[s>>2]|0)+4>>2]=1}c[V>>2]=(c[(c[Zb>>2]|0)+20>>2]|0)-1;while(1){if((c[V>>2]|0)<0)break;do if(c[(c[(c[Zb>>2]|0)+16>>2]|0)+(c[V>>2]<<4)+4>>2]|0){if((c[V>>2]|0)!=(c[Wb>>2]|0)?(c[(c[s>>2]|0)+4>>2]|0)!=0:0)break;Hh(c[Yb>>2]|0,c[V>>2]|0);Vw(c[Yb>>2]|0,9,c[V>>2]|0,1,c[F>>2]|0)|0}while(0);c[V>>2]=(c[V>>2]|0)+-1}Rw(c[Yb>>2]|0,33,1,1)|0;break a}case 20:{c[ha>>2]=Of(c[(c[Fa>>2]|0)+4>>2]|0)|0;Xb=R;c[Xb>>2]=-2;c[Xb+4>>2]=-1;if((c[$b>>2]|0)!=0?(Ci(c[$b>>2]|0,R)|0,Xb=R,Wb=c[Xb+4>>2]|0,(Wb|0)<-1|(Wb|0)==-1&(c[Xb>>2]|0)>>>0<4294967295):0){Xb=R;c[Xb>>2]=-1;c[Xb+4>>2]=-1}Wb=R;Wb=SB(c[ha>>2]|0,c[Wb>>2]|0,c[Wb+4>>2]|0)|0;Xb=R;c[Xb>>2]=Wb;c[Xb+4>>2]=C;Xb=R;NB(c[Yb>>2]|0,33040,c[Xb>>2]|0,c[Xb+4>>2]|0);break a}case 1:{c[ba>>2]=c[(c[Fa>>2]|0)+4>>2];if(!(c[$b>>2]|0)){Xb=c[Yb>>2]|0;Yb=TB(c[ba>>2]|0)|0;NB(Xb,33059,Yb,((Yb|0)<0)<<31>>31);break a}c[D>>2]=UB(c[$b>>2]|0)|0;a[(c[Zb>>2]|0)+68>>0]=c[D>>2];c[la>>2]=VB(c[ba>>2]|0,c[D>>2]|0)|0;if(c[la>>2]|0)break a;if(!((c[D>>2]|0)==1|(c[D>>2]|0)==2))break a;c[N>>2]=Bz(c[Yb>>2]|0)|0;c[y>>2]=Gh(c[Yb>>2]|0,5,33071,0)|0;c[(c[y>>2]|0)+4>>2]=c[Wb>>2];c[(c[y>>2]|0)+20+4>>2]=c[Wb>>2];c[(c[y>>2]|0)+40+8>>2]=(c[N>>2]|0)+4;c[(c[y>>2]|0)+80+4>>2]=c[Wb>>2];c[(c[y>>2]|0)+80+12>>2]=(c[D>>2]|0)-1;Hh(c[Yb>>2]|0,c[Wb>>2]|0);break a}case 15:{if(!((c[$b>>2]|0)!=0?(Vb=(Li(c[$b>>2]|0,S)|0)==0,!(Vb|(c[S>>2]|0)<=0)):0))c[S>>2]=2147483647;ax(c[Xb>>2]|0,0,c[Wb>>2]|0);Rw(c[Yb>>2]|0,22,c[S>>2]|0,1)|0;c[z>>2]=xz(c[Yb>>2]|0,146,c[Wb>>2]|0)|0;xz(c[Yb>>2]|0,33,1)|0;Rw(c[Yb>>2]|0,37,1,-1)|0;Rw(c[Yb>>2]|0,138,1,c[z>>2]|0)|0;Fz(c[Yb>>2]|0,c[z>>2]|0);break a}case 4:if(c[$b>>2]|0){c[oa>>2]=Ki(c[$b>>2]|0)|0;c[(c[(c[Fa>>2]|0)+12>>2]|0)+80>>2]=c[oa>>2];zj(c[(c[Fa>>2]|0)+4>>2]|0,c[(c[(c[Fa>>2]|0)+12>>2]|0)+80>>2]|0)|0;break a}else{Xb=c[(c[(c[Fa>>2]|0)+12>>2]|0)+80>>2]|0;NB(c[Yb>>2]|0,32926,Xb,((Xb|0)<0)<<31>>31);break a}case 5:{if(!(c[$b>>2]|0)){k=c[Yb>>2]|0;if(!(c[(c[Zb>>2]|0)+24>>2]&32))l=0;else l=WB(c[(c[Fa>>2]|0)+4>>2]|0,0)|0;NB(k,33091,l,((l|0)<0)<<31>>31);break a}c[pa>>2]=1;if(Li(c[$b>>2]|0,pa)|0)WB(c[(c[Fa>>2]|0)+4>>2]|0,c[pa>>2]|0)|0;Yb=(Bi(c[$b>>2]|0,(c[pa>>2]|0)!=0&255)|0)<<24>>24!=0;l=(c[Zb>>2]|0)+24|0;k=c[l>>2]|0;if(Yb)c[l>>2]=k|32;else c[l>>2]=k&-33;XB(c[Zb>>2]|0);break a}case 24:{Wb=qa;c[Wb>>2]=0;c[Wb+4>>2]=0;c[la>>2]=0;if(!(c[la>>2]|0)){Xb=qa;NB(c[Yb>>2]|0,33103,c[Xb>>2]|0,c[Xb+4>>2]|0);break a}if((c[la>>2]|0)==12)break a;Yb=(c[Xb>>2]|0)+68|0;c[Yb>>2]=(c[Yb>>2]|0)+1;c[(c[Xb>>2]|0)+12>>2]=c[la>>2];break a}case 32:if(c[$b>>2]|0){YB(c[Xb>>2]|0,c[$b>>2]|0)|0;break a}else{NB(c[Yb>>2]|0,33113,d[(c[Zb>>2]|0)+64>>0]|0,0);break a}case 33:{if(!(c[$b>>2]|0)){LB(c[Yb>>2]|0,33124,c[241]|0);break a}if((a[c[$b>>2]>>0]|0)!=0?(c[la>>2]=Nr(c[c[Zb>>2]>>2]|0,c[$b>>2]|0,1,ma)|0,(c[la>>2]|0)!=0|(c[ma>>2]|0)==0):0){Ah(c[Xb>>2]|0,33145,sa);break a}if((d[(c[Zb>>2]|0)+64>>0]|0)<=1)ZB(c[Xb>>2]|0)|0;Kd(c[241]|0);if(a[c[$b>>2]>>0]|0){c[ta>>2]=c[$b>>2];c[241]=Od(19255,ta)|0;break a}else{c[241]=0;break a}}case 30:{if(!(c[$b>>2]|0)){Xb=(d[(c[Fa>>2]|0)+8>>0]|0)-1|0;NB(c[Yb>>2]|0,33170,Xb,((Xb|0)<0)<<31>>31);break a}if(a[(c[Zb>>2]|0)+63>>0]|0){Yb=((Ji(c[$b>>2]|0,0,1)|0)&255)+1&7;c[Q>>2]=Yb;c[Q>>2]=(c[Q>>2]|0)==0?1:Yb;a[(c[Fa>>2]|0)+8>>0]=c[Q>>2];XB(c[Zb>>2]|0);break a}else{Ah(c[Xb>>2]|0,33182,ua);break a}}case 2:{if(!(c[$b>>2]|0)){Xb=(c[(c[Zb>>2]|0)+24>>2]&c[(c[Hb>>2]|0)+8>>2]|0)!=0&1;NB(c[Yb>>2]|0,c[c[Hb>>2]>>2]|0,Xb,((Xb|0)<0)<<31>>31);break a}c[Ea>>2]=c[(c[Hb>>2]|0)+8>>2];if(!(d[(c[Zb>>2]|0)+63>>0]|0))c[Ea>>2]=c[Ea>>2]&-524289;Xb=(Bi(c[$b>>2]|0,0)|0)<<24>>24!=0;l=c[Ea>>2]|0;if(!Xb){Xb=(c[Zb>>2]|0)+24|0;c[Xb>>2]=c[Xb>>2]&~l;if((c[Ea>>2]|0)==16777216){Xb=(c[Zb>>2]|0)+520|0;c[Xb>>2]=0;c[Xb+4>>2]=0}}else{Xb=(c[Zb>>2]|0)+24|0;c[Xb>>2]=c[Xb>>2]|l}Rw(c[Yb>>2]|0,147,0,0)|0;XB(c[Zb>>2]|0);break a}case 31:{if(!(c[$b>>2]|0))break a;c[Za>>2]=pi(c[Zb>>2]|0,c[$b>>2]|0,c[fb>>2]|0)|0;if(!(c[Za>>2]|0))break a;c[Ta>>2]=0;c[Ya>>2]=Ej(c[Za>>2]|0)|0;c[(c[Xb>>2]|0)+76>>2]=6;bx(c[Xb>>2]|0,c[Wb>>2]|0);_B(c[Yb>>2]|0,6,6008);zx(c[Xb>>2]|0,c[Za>>2]|0)|0;c[Ma>>2]=0;c[Ua>>2]=c[(c[Za>>2]|0)+4>>2];while(1){if((c[Ma>>2]|0)>=(b[(c[Za>>2]|0)+34>>1]|0))break a;if(d[(c[Ua>>2]|0)+23>>0]&2)c[Ta>>2]=(c[Ta>>2]|0)+1;else{c:do if(!(d[(c[Ua>>2]|0)+23>>0]&1))c[Ra>>2]=0;else{Xb=(c[Ya>>2]|0)==0;c[Ra>>2]=1;if(Xb)break;while(1){if((c[Ra>>2]|0)>(b[(c[Za>>2]|0)+34>>1]|0))break c;if((b[(c[(c[Ya>>2]|0)+4>>2]|0)+((c[Ra>>2]|0)-1<<1)>>1]|0)==(c[Ma>>2]|0))break c;c[Ra>>2]=(c[Ra>>2]|0)+1}}while(0);l=c[Yb>>2]|0;k=c[c[Ua>>2]>>2]|0;if(c[(c[Ua>>2]|0)+12>>2]|0)m=c[(c[Ua>>2]|0)+12>>2]|0;else m=19266;Vb=(d[(c[Ua>>2]|0)+20>>0]|0)!=0?1:0;Wb=c[(c[Ua>>2]|0)+8>>2]|0;Xb=c[Ra>>2]|0;c[cb>>2]=(c[Ma>>2]|0)-(c[Ta>>2]|0);c[cb+4>>2]=k;c[cb+8>>2]=m;c[cb+12>>2]=Vb;c[cb+16>>2]=Wb;c[cb+20>>2]=Xb;$B(l,1,33235,cb);Rw(c[Yb>>2]|0,33,1,6)|0}c[Ma>>2]=(c[Ma>>2]|0)+1;c[Ua>>2]=(c[Ua>>2]|0)+24}}case 29:{c[Yb>>2]=Pw(c[Xb>>2]|0)|0;c[(c[Xb>>2]|0)+76>>2]=4;bx(c[Xb>>2]|0,c[Wb>>2]|0);_B(c[Yb>>2]|0,4,6032);c[H>>2]=c[(c[(c[Fa>>2]|0)+12>>2]|0)+8+8>>2];while(1){if(!(c[H>>2]|0))break a;c[ia>>2]=c[(c[H>>2]|0)+8>>2];Xb=c[Yb>>2]|0;Ub=c[c[ia>>2]>>2]|0;Vb=aC(b[(c[ia>>2]|0)+40>>1]|0)|0;Wb=aC(b[(c[ia>>2]|0)+38>>1]|0)|0;c[va>>2]=Ub;c[va+4>>2]=0;c[va+8>>2]=Vb;c[va+12>>2]=Wb;$B(Xb,1,33242,va);Rw(c[Yb>>2]|0,33,1,4)|0;c[ea>>2]=c[(c[ia>>2]|0)+8>>2];while(1){if(!(c[ea>>2]|0))break;Xb=c[Yb>>2]|0;Ub=c[c[ea>>2]>>2]|0;Vb=aC(b[(c[ea>>2]|0)+48>>1]|0)|0;Wb=aC(b[c[(c[ea>>2]|0)+8>>2]>>1]|0)|0;c[wa>>2]=Ub;c[wa+4>>2]=Vb;c[wa+8>>2]=Wb;$B(Xb,2,33247,wa);Rw(c[Yb>>2]|0,33,1,4)|0;c[ea>>2]=c[(c[ea>>2]|0)+20>>2]}c[H>>2]=c[c[H>>2]>>2]}}case 16:{if(!(c[$b>>2]|0))break a;c[Db>>2]=Fj(c[Zb>>2]|0,c[$b>>2]|0,c[fb>>2]|0)|0;if(!(c[Db>>2]|0))break a;l=c[Db>>2]|0;if(c[(c[Hb>>2]|0)+8>>2]|0){c[Bb>>2]=e[l+52>>1];c[(c[Xb>>2]|0)+76>>2]=6}else{c[Bb>>2]=e[l+50>>1];c[(c[Xb>>2]|0)+76>>2]=3}c[Jb>>2]=c[(c[Db>>2]|0)+12>>2];bx(c[Xb>>2]|0,c[Wb>>2]|0);_B(c[Yb>>2]|0,c[(c[Xb>>2]|0)+76>>2]|0,6048);c[lb>>2]=0;while(1){if((c[lb>>2]|0)>=(c[Bb>>2]|0))break a;b[kb>>1]=b[(c[(c[Db>>2]|0)+4>>2]|0)+(c[lb>>2]<<1)>>1]|0;l=c[Yb>>2]|0;k=b[kb>>1]|0;if((b[kb>>1]|0)<0)m=0;else m=c[(c[(c[Jb>>2]|0)+4>>2]|0)+((b[kb>>1]|0)*24|0)>>2]|0;c[Pb>>2]=c[lb>>2];c[Pb+4>>2]=k;c[Pb+8>>2]=m;$B(l,1,33251,Pb);if(c[(c[Hb>>2]|0)+8>>2]|0){Wb=c[Yb>>2]|0;Ub=c[(c[(c[Db>>2]|0)+32>>2]|0)+(c[lb>>2]<<2)>>2]|0;Vb=(c[lb>>2]|0)<(e[(c[Db>>2]|0)+50>>1]|0)&1;c[Qb>>2]=d[(c[(c[Db>>2]|0)+28>>2]|0)+(c[lb>>2]|0)>>0];c[Qb+4>>2]=Ub;c[Qb+8>>2]=Vb;$B(Wb,4,33255,Qb)}Rw(c[Yb>>2]|0,33,1,c[(c[Xb>>2]|0)+76>>2]|0)|0;c[lb>>2]=(c[lb>>2]|0)+1}}case 17:{if(!(c[$b>>2]|0))break a;c[ja>>2]=pi(c[Zb>>2]|0,c[$b>>2]|0,c[fb>>2]|0)|0;if(!(c[ja>>2]|0))break a;c[Yb>>2]=Pw(c[Xb>>2]|0)|0;c[(c[Xb>>2]|0)+76>>2]=5;bx(c[Xb>>2]|0,c[Wb>>2]|0);_B(c[Yb>>2]|0,5,6072);c[fa>>2]=c[(c[ja>>2]|0)+8>>2];c[I>>2]=0;while(1){if(!(c[fa>>2]|0))break a;c[A>>2]=c[1523];c[A+4>>2]=c[1524];c[A+8>>2]=c[1525];Xb=c[Yb>>2]|0;Tb=c[c[fa>>2]>>2]|0;Ub=(d[(c[fa>>2]|0)+54>>0]|0)!=0&1;Vb=c[A+((a[(c[fa>>2]|0)+55>>0]&3)<<2)>>2]|0;Wb=(c[(c[fa>>2]|0)+36>>2]|0)!=0&1;c[xa>>2]=c[I>>2];c[xa+4>>2]=Tb;c[xa+8>>2]=Ub;c[xa+12>>2]=Vb;c[xa+16>>2]=Wb;$B(Xb,1,33259,xa);Rw(c[Yb>>2]|0,33,1,5)|0;c[fa>>2]=c[(c[fa>>2]|0)+20>>2];c[I>>2]=(c[I>>2]|0)+1}}case 10:{c[(c[Xb>>2]|0)+76>>2]=3;_B(c[Yb>>2]|0,3,6104);c[J>>2]=0;while(1){if((c[J>>2]|0)>=(c[(c[Zb>>2]|0)+20>>2]|0))break a;if(c[(c[(c[Zb>>2]|0)+16>>2]|0)+(c[J>>2]<<4)+4>>2]|0){Xb=c[Yb>>2]|0;Ub=c[J>>2]|0;Vb=c[(c[(c[Zb>>2]|0)+16>>2]|0)+(c[J>>2]<<4)>>2]|0;Wb=Di(c[(c[(c[Zb>>2]|0)+16>>2]|0)+(c[J>>2]<<4)+4>>2]|0)|0;c[ya>>2]=Ub;c[ya+4>>2]=Vb;c[ya+8>>2]=Wb;$B(Xb,1,33265,ya);Rw(c[Yb>>2]|0,33,1,3)|0}c[J>>2]=(c[J>>2]|0)+1}}case 7:{c[K>>2]=0;c[(c[Xb>>2]|0)+76>>2]=2;_B(c[Yb>>2]|0,2,6116);c[_>>2]=c[(c[Zb>>2]|0)+432+8>>2];while(1){if(!(c[_>>2]|0))break a;c[ca>>2]=c[(c[_>>2]|0)+8>>2];Xb=c[Yb>>2]|0;Vb=c[K>>2]|0;c[K>>2]=Vb+1;Wb=c[c[ca>>2]>>2]|0;c[za>>2]=Vb;c[za+4>>2]=Wb;$B(Xb,1,33269,za);Rw(c[Yb>>2]|0,33,1,2)|0;c[_>>2]=c[c[_>>2]>>2]}}case 14:{if(!(c[$b>>2]|0))break a;c[ka>>2]=pi(c[Zb>>2]|0,c[$b>>2]|0,c[fb>>2]|0)|0;if(!(c[ka>>2]|0))break a;c[Yb>>2]=Pw(c[Xb>>2]|0)|0;c[da>>2]=c[(c[ka>>2]|0)+16>>2];if(!(c[da>>2]|0))break a;c[L>>2]=0;c[(c[Xb>>2]|0)+76>>2]=8;bx(c[Xb>>2]|0,c[Wb>>2]|0);_B(c[Yb>>2]|0,8,6124);while(1){if(!(c[da>>2]|0))break a;c[W>>2]=0;while(1){if((c[W>>2]|0)>=(c[(c[da>>2]|0)+20>>2]|0))break;Xb=c[Yb>>2]|0;Qb=c[L>>2]|0;Rb=c[W>>2]|0;Sb=c[(c[da>>2]|0)+8>>2]|0;Tb=c[(c[(c[ka>>2]|0)+4>>2]|0)+((c[(c[da>>2]|0)+36+(c[W>>2]<<3)>>2]|0)*24|0)>>2]|0;Ub=c[(c[da>>2]|0)+36+(c[W>>2]<<3)+4>>2]|0;Vb=bC(a[(c[da>>2]|0)+25+1>>0]|0)|0;Wb=bC(a[(c[da>>2]|0)+25>>0]|0)|0;c[Aa>>2]=Qb;c[Aa+4>>2]=Rb;c[Aa+8>>2]=Sb;c[Aa+12>>2]=Tb;c[Aa+16>>2]=Ub;c[Aa+20>>2]=Vb;c[Aa+24>>2]=Wb;c[Aa+28>>2]=33281;$B(Xb,1,33272,Aa);Rw(c[Yb>>2]|0,33,1,8)|0;c[W>>2]=(c[W>>2]|0)+1}c[L>>2]=(c[L>>2]|0)+1;c[da>>2]=c[(c[da>>2]|0)+4>>2]}}case 13:{c[ab>>2]=(c[(c[Xb>>2]|0)+76>>2]|0)+1;Ub=(c[Xb>>2]|0)+76|0;c[Ub>>2]=(c[Ub>>2]|0)+4;Ub=(c[Xb>>2]|0)+76|0;Tb=(c[Ub>>2]|0)+1|0;c[Ub>>2]=Tb;c[$a>>2]=Tb;Tb=(c[Xb>>2]|0)+76|0;Ub=(c[Tb>>2]|0)+1|0;c[Tb>>2]=Ub;c[bb>>2]=Ub;c[Yb>>2]=Pw(c[Xb>>2]|0)|0;_B(c[Yb>>2]|0,4,6156);bx(c[Xb>>2]|0,c[Wb>>2]|0);c[Sa>>2]=c[(c[(c[(c[Zb>>2]|0)+16>>2]|0)+(c[Wb>>2]<<4)+12>>2]|0)+8+8>>2];while(1){if(!(c[Sa>>2]|0))break a;if(c[$b>>2]|0){c[_a>>2]=zh(c[Xb>>2]|0,0,c[$b>>2]|0,c[fb>>2]|0)|0;c[Sa>>2]=0}else{c[_a>>2]=c[(c[Sa>>2]|0)+8>>2];c[Sa>>2]=c[c[Sa>>2]>>2]}if(!(c[_a>>2]|0))continue;if(!(c[(c[_a>>2]|0)+16>>2]|0))continue;yz(c[Xb>>2]|0,c[Wb>>2]|0,c[(c[_a>>2]|0)+28>>2]|0,0,c[c[_a>>2]>>2]|0);if(((b[(c[_a>>2]|0)+34>>1]|0)+(c[bb>>2]|0)|0)>(c[(c[Xb>>2]|0)+76>>2]|0))c[(c[Xb>>2]|0)+76>>2]=(b[(c[_a>>2]|0)+34>>1]|0)+(c[bb>>2]|0);zz(c[Xb>>2]|0,0,c[Wb>>2]|0,c[_a>>2]|0,54);Tw(c[Yb>>2]|0,c[ab>>2]|0,c[c[_a>>2]>>2]|0)|0;c[Na>>2]=1;c[Va>>2]=c[(c[_a>>2]|0)+16>>2];d:while(1){if(!(c[Va>>2]|0))break;c[Xa>>2]=pi(c[Zb>>2]|0,c[(c[Va>>2]|0)+8>>2]|0,c[fb>>2]|0)|0;do if(c[Xa>>2]|0){c[Wa>>2]=0;yz(c[Xb>>2]|0,c[Wb>>2]|0,c[(c[Xa>>2]|0)+28>>2]|0,0,c[c[Xa>>2]>>2]|0);c[eb>>2]=cC(c[Xb>>2]|0,c[Xa>>2]|0,c[Va>>2]|0,Wa,0)|0;if(c[eb>>2]|0){Vb=207;break d}if(!(c[Wa>>2]|0)){zz(c[Xb>>2]|0,c[Na>>2]|0,c[Wb>>2]|0,c[Xa>>2]|0,54);break}else{Vw(c[Yb>>2]|0,54,c[Na>>2]|0,c[(c[Wa>>2]|0)+44>>2]|0,c[Wb>>2]|0)|0;Az(c[Xb>>2]|0,c[Wa>>2]|0);break}}while(0);c[Na>>2]=(c[Na>>2]|0)+1;c[Va>>2]=c[(c[Va>>2]|0)+4>>2]}if((Vb|0)==207){Vb=0;c[Sa>>2]=0}if(c[Va>>2]|0)break a;if((c[(c[Xb>>2]|0)+72>>2]|0)<(c[Na>>2]|0))c[(c[Xb>>2]|0)+72>>2]=c[Na>>2];c[Ka>>2]=xz(c[Yb>>2]|0,108,0)|0;c[Na>>2]=1;c[Va>>2]=c[(c[_a>>2]|0)+16>>2];while(1){if(!(c[Va>>2]|0))break;c[Xa>>2]=pi(c[Zb>>2]|0,c[(c[Va>>2]|0)+8>>2]|0,c[fb>>2]|0)|0;c[Wa>>2]=0;c[La>>2]=0;if(c[Xa>>2]|0)c[eb>>2]=cC(c[Xb>>2]|0,c[Xa>>2]|0,c[Va>>2]|0,Wa,La)|0;c[Ja>>2]=Cz(c[Yb>>2]|0)|0;do if((c[Xa>>2]|0)!=0&(c[Wa>>2]|0)==0){c[Oa>>2]=c[(c[Va>>2]|0)+36>>2];l=c[Yb>>2]|0;if((c[Oa>>2]|0)!=(b[(c[_a>>2]|0)+32>>1]|0)){Vw(l,47,0,c[Oa>>2]|0,c[bb>>2]|0)|0;vA(c[Yb>>2]|0,c[_a>>2]|0,c[Oa>>2]|0,c[bb>>2]|0);Rw(c[Yb>>2]|0,76,c[bb>>2]|0,c[Ja>>2]|0)|0;Tb=c[Yb>>2]|0;Ub=c[bb>>2]|0;Rw(Tb,38,Ub,(Bz(c[Yb>>2]|0)|0)+3|0)|0}else Rw(l,103,0,c[bb>>2]|0)|0;Vw(c[Yb>>2]|0,70,c[Na>>2]|0,0,c[bb>>2]|0)|0;Ez(c[Yb>>2]|0,c[Ja>>2]|0)|0;Ub=c[Yb>>2]|0;Fz(Ub,(Bz(c[Yb>>2]|0)|0)-2|0)}else{c[Qa>>2]=0;while(1){if((c[Qa>>2]|0)>=(c[(c[Va>>2]|0)+20>>2]|0))break;l=c[Qa>>2]|0;if(c[La>>2]|0)l=c[(c[La>>2]|0)+(l<<2)>>2]|0;else l=c[(c[Va>>2]|0)+36+(l<<3)>>2]|0;tA(c[Yb>>2]|0,c[_a>>2]|0,0,l,(c[bb>>2]|0)+(c[Qa>>2]|0)|0);Rw(c[Yb>>2]|0,76,(c[bb>>2]|0)+(c[Qa>>2]|0)|0,c[Ja>>2]|0)|0;c[Qa>>2]=(c[Qa>>2]|0)+1}if(!(c[Xa>>2]|0))break;Qb=c[Yb>>2]|0;Rb=c[bb>>2]|0;Sb=c[(c[Va>>2]|0)+20>>2]|0;Tb=c[$a>>2]|0;Ub=dC(c[Zb>>2]|0,c[Wa>>2]|0)|0;Uw(Qb,49,Rb,Sb,Tb,Ub,c[(c[Va>>2]|0)+20>>2]|0)|0;Eh(c[Yb>>2]|0,69,c[Na>>2]|0,c[Ja>>2]|0,c[$a>>2]|0,0)|0}while(0);Rw(c[Yb>>2]|0,103,0,(c[ab>>2]|0)+1|0)|0;Tb=c[Yb>>2]|0;Ub=(c[ab>>2]|0)+2|0;Sb=(c[Na>>2]|0)-1|0;c[db>>2]=c[(c[Va>>2]|0)+8>>2];c[db+4>>2]=Sb;$B(Tb,Ub,33286,db);Rw(c[Yb>>2]|0,33,c[ab>>2]|0,4)|0;Gz(c[Yb>>2]|0,c[Ja>>2]|0);Sf(c[Zb>>2]|0,c[La>>2]|0);c[Na>>2]=(c[Na>>2]|0)+1;c[Va>>2]=c[(c[Va>>2]|0)+4>>2]}Rw(c[Yb>>2]|0,7,0,(c[Ka>>2]|0)+1|0)|0;Fz(c[Yb>>2]|0,c[Ka>>2]|0)}}case 6:{if(!(c[$b>>2]|0))break a;Yb=c[Zb>>2]|0;eC(Yb,(Bi(c[$b>>2]|0,0)|0)&255);break a}case 18:{c[qb>>2]=(d[18477+(d[c[_b>>2]>>0]|0)>>0]|0)==113&1;if(!(c[c[s>>2]>>2]|0))c[Wb>>2]=-1;c[(c[Xb>>2]|0)+76>>2]=6;MB(c[Yb>>2]|0,33289);c[Cb>>2]=100;if((c[$b>>2]|0)!=0?(Li(c[$b>>2]|0,Cb)|0,(c[Cb>>2]|0)<=0):0)c[Cb>>2]=100;Rw(c[Yb>>2]|0,22,c[Cb>>2]|0,1)|0;c[mb>>2]=0;while(1){if((c[mb>>2]|0)>=(c[(c[Zb>>2]|0)+20>>2]|0))break;c[jb>>2]=0;if(!((c[Wb>>2]|0)>=0?(c[mb>>2]|0)!=(c[Wb>>2]|0):0))Vb=242;e:do if((Vb|0)==242){Vb=0;bx(c[Xb>>2]|0,c[mb>>2]|0);c[hb>>2]=xz(c[Yb>>2]|0,138,1)|0;Rw(c[Yb>>2]|0,21,0,0)|0;Fz(c[Yb>>2]|0,c[hb>>2]|0);c[Mb>>2]=(c[(c[(c[Zb>>2]|0)+16>>2]|0)+(c[mb>>2]<<4)+12>>2]|0)+8;c[Tb>>2]=c[(c[Mb>>2]|0)+8>>2];while(1){if(!(c[Tb>>2]|0))break;c[Kb>>2]=c[(c[Tb>>2]|0)+8>>2];if(!(d[(c[Kb>>2]|0)+42>>0]&32)){Rw(c[Yb>>2]|0,22,c[(c[Kb>>2]|0)+28>>2]|0,2+(c[jb>>2]|0)|0)|0;c[jb>>2]=(c[jb>>2]|0)+1}c[Eb>>2]=c[(c[Kb>>2]|0)+8>>2];while(1){if(!(c[Eb>>2]|0))break;Rw(c[Yb>>2]|0,22,c[(c[Eb>>2]|0)+44>>2]|0,2+(c[jb>>2]|0)|0)|0;c[jb>>2]=(c[jb>>2]|0)+1;c[Eb>>2]=c[(c[Eb>>2]|0)+20>>2]}c[Tb>>2]=c[c[Tb>>2]>>2]}if((c[(c[Xb>>2]|0)+76>>2]|0)>((c[jb>>2]|0)+8|0))l=c[(c[Xb>>2]|0)+76>>2]|0;else l=(c[jb>>2]|0)+8|0;c[(c[Xb>>2]|0)+76>>2]=l;Vw(c[Yb>>2]|0,128,2,c[jb>>2]|0,1)|0;Fh(c[Yb>>2]|0,c[mb>>2]&255);c[hb>>2]=xz(c[Yb>>2]|0,76,2)|0;Pb=c[Yb>>2]|0;Qb=c[Zb>>2]|0;c[Rb>>2]=c[(c[(c[Zb>>2]|0)+16>>2]|0)+(c[mb>>2]<<4)>>2];Uw(Pb,97,0,3,0,Bh(Qb,33305,Rb)|0,-1)|0;Vw(c[Yb>>2]|0,29,2,4,1)|0;Vw(c[Yb>>2]|0,94,4,3,2)|0;Rw(c[Yb>>2]|0,33,2,1)|0;Fz(c[Yb>>2]|0,c[hb>>2]|0);c[Tb>>2]=c[(c[Mb>>2]|0)+8>>2];while(1){if(!(c[Tb>>2]|0))break e;if(!((c[qb>>2]|0)!=0^1))break e;c[Lb>>2]=c[(c[Tb>>2]|0)+8>>2];c[Ib>>2]=0;c[Nb>>2]=-1;f:do if(c[(c[Lb>>2]|0)+8>>2]|0){if(!(d[(c[Lb>>2]|0)+42>>0]&32))l=0;else l=Ej(c[Lb>>2]|0)|0;c[Gb>>2]=l;c[hb>>2]=xz(c[Yb>>2]|0,138,1)|0;Rw(c[Yb>>2]|0,21,0,0)|0;Fz(c[Yb>>2]|0,c[hb>>2]|0);fC(c[Xb>>2]|0);gC(c[Xb>>2]|0,c[Lb>>2]|0,54,0,1,0,ob,pb)|0;Rw(c[Yb>>2]|0,22,0,7)|0;c[rb>>2]=0;c[Fb>>2]=c[(c[Lb>>2]|0)+8>>2];while(1){if(!(c[Fb>>2]|0))break;Rw(c[Yb>>2]|0,22,0,8+(c[rb>>2]|0)|0)|0;c[Fb>>2]=c[(c[Fb>>2]|0)+20>>2];c[rb>>2]=(c[rb>>2]|0)+1}if((c[(c[Xb>>2]|0)+76>>2]|0)>(8+(c[rb>>2]|0)|0))l=c[(c[Xb>>2]|0)+76>>2]|0;else l=8+(c[rb>>2]|0)|0;c[(c[Xb>>2]|0)+76>>2]=l;Rw(c[Yb>>2]|0,108,c[ob>>2]|0,0)|0;c[Ab>>2]=Rw(c[Yb>>2]|0,37,7,1)|0;c[rb>>2]=0;while(1){if((c[rb>>2]|0)>=(b[(c[Lb>>2]|0)+34>>1]|0))break;do if((c[rb>>2]|0)!=(b[(c[Lb>>2]|0)+32>>1]|0)){if(!(d[(c[(c[Lb>>2]|0)+4>>2]|0)+((c[rb>>2]|0)*24|0)+20>>0]|0))break;tA(c[Yb>>2]|0,c[Lb>>2]|0,c[ob>>2]|0,c[rb>>2]|0,3);Fh(c[Yb>>2]|0,-128);c[sb>>2]=xz(c[Yb>>2]|0,77,3)|0;Rw(c[Yb>>2]|0,37,1,-1)|0;Qb=c[Zb>>2]|0;Pb=c[(c[(c[Lb>>2]|0)+4>>2]|0)+((c[rb>>2]|0)*24|0)>>2]|0;c[Sb>>2]=c[c[Lb>>2]>>2];c[Sb+4>>2]=Pb;c[Ub>>2]=Bh(Qb,33329,Sb)|0;Uw(c[Yb>>2]|0,97,0,3,0,c[Ub>>2]|0,-1)|0;Rw(c[Yb>>2]|0,33,3,1)|0;c[ub>>2]=xz(c[Yb>>2]|0,138,1)|0;Yw(c[Yb>>2]|0,21)|0;Fz(c[Yb>>2]|0,c[sb>>2]|0);Fz(c[Yb>>2]|0,c[ub>>2]|0)}while(0);c[rb>>2]=(c[rb>>2]|0)+1}c[rb>>2]=0;c[Fb>>2]=c[(c[Lb>>2]|0)+8>>2];while(1){l=c[Yb>>2]|0;if(!(c[Fb>>2]|0))break;c[ib>>2]=Cz(l)|0;if((c[Gb>>2]|0)!=(c[Fb>>2]|0)){c[Nb>>2]=Xz(c[Xb>>2]|0,c[Fb>>2]|0,c[ob>>2]|0,0,0,vb,c[Ib>>2]|0,c[Nb>>2]|0)|0;c[Ib>>2]=c[Fb>>2];Rw(c[Yb>>2]|0,37,8+(c[rb>>2]|0)|0,1)|0;c[tb>>2]=Eh(c[Yb>>2]|0,69,(c[pb>>2]|0)+(c[rb>>2]|0)|0,c[ib>>2]|0,c[Nb>>2]|0,e[(c[Fb>>2]|0)+52>>1]|0)|0;Rw(c[Yb>>2]|0,37,1,-1)|0;Tw(c[Yb>>2]|0,3,33349)|0;Vw(c[Yb>>2]|0,94,7,3,3)|0;Tw(c[Yb>>2]|0,4,33354)|0;Vw(c[Yb>>2]|0,94,4,3,3)|0;c[xb>>2]=Tw(c[Yb>>2]|0,4,c[c[Fb>>2]>>2]|0)|0;Vw(c[Yb>>2]|0,94,4,3,3)|0;Rw(c[Yb>>2]|0,33,3,1)|0;c[wb>>2]=xz(c[Yb>>2]|0,138,1)|0;Yw(c[Yb>>2]|0,21)|0;Fz(c[Yb>>2]|0,c[tb>>2]|0);if(d[(c[Fb>>2]|0)+54>>0]|0){c[Ob>>2]=Cz(c[Yb>>2]|0)|0;c[zb>>2]=0;while(1){if((c[zb>>2]|0)>=(e[(c[Fb>>2]|0)+50>>1]|0))break;c[nb>>2]=b[(c[(c[Fb>>2]|0)+4>>2]|0)+(c[zb>>2]<<1)>>1];if(!((c[nb>>2]|0)>=0?(d[(c[(c[Lb>>2]|0)+4>>2]|0)+((c[nb>>2]|0)*24|0)+20>>0]|0)!=0:0))Rw(c[Yb>>2]|0,76,(c[Nb>>2]|0)+(c[zb>>2]|0)|0,c[Ob>>2]|0)|0;c[zb>>2]=(c[zb>>2]|0)+1}c[yb>>2]=xz(c[Yb>>2]|0,7,(c[pb>>2]|0)+(c[rb>>2]|0)|0)|0;Ez(c[Yb>>2]|0,c[Ob>>2]|0)|0;Fz(c[Yb>>2]|0,c[yb>>2]|0);Eh(c[Yb>>2]|0,115,(c[pb>>2]|0)+(c[rb>>2]|0)|0,c[Ob>>2]|0,c[Nb>>2]|0,e[(c[Fb>>2]|0)+50>>1]|0)|0;Rw(c[Yb>>2]|0,37,1,-1)|0;Tw(c[Yb>>2]|0,3,33375)|0;Ez(c[Yb>>2]|0,c[xb>>2]|0)|0;Gz(c[Yb>>2]|0,c[Ob>>2]|0)}Fz(c[Yb>>2]|0,c[wb>>2]|0);Yz(c[Xb>>2]|0,c[vb>>2]|0)}c[Fb>>2]=c[(c[Fb>>2]|0)+20>>2];c[rb>>2]=(c[rb>>2]|0)+1}Rw(l,7,c[ob>>2]|0,c[Ab>>2]|0)|0;Fz(c[Yb>>2]|0,(c[Ab>>2]|0)-1|0);Tw(c[Yb>>2]|0,2,33402)|0;c[rb>>2]=0;c[Fb>>2]=c[(c[Lb>>2]|0)+8>>2];while(1){if(!(c[Fb>>2]|0))break f;if((c[Gb>>2]|0)!=(c[Fb>>2]|0)){c[hb>>2]=Bz(c[Yb>>2]|0)|0;Rw(c[Yb>>2]|0,138,1,(c[hb>>2]|0)+2|0)|0;Rw(c[Yb>>2]|0,21,0,0)|0;Rw(c[Yb>>2]|0,50,(c[pb>>2]|0)+(c[rb>>2]|0)|0,3)|0;Vw(c[Yb>>2]|0,79,8+(c[rb>>2]|0)|0,(c[hb>>2]|0)+8|0,3)|0;Fh(c[Yb>>2]|0,-112);Rw(c[Yb>>2]|0,37,1,-1)|0;Tw(c[Yb>>2]|0,3,c[c[Fb>>2]>>2]|0)|0;Vw(c[Yb>>2]|0,94,3,2,7)|0;Rw(c[Yb>>2]|0,33,7,1)|0}c[Fb>>2]=c[(c[Fb>>2]|0)+20>>2];c[rb>>2]=(c[rb>>2]|0)+1}}while(0);c[Tb>>2]=c[c[Tb>>2]>>2]}}while(0);c[mb>>2]=(c[mb>>2]|0)+1}c[gb>>2]=Gh(c[Yb>>2]|0,4,33431,0)|0;if(!(c[gb>>2]|0))break a;c[(c[gb>>2]|0)+8>>2]=0-(c[Cb>>2]|0);a[(c[gb>>2]|0)+40+1>>0]=-2;c[(c[gb>>2]|0)+40+16>>2]=33447;break a}case 12:{if(!(c[$b>>2]|0)){if(pz(c[Xb>>2]|0)|0)break a;LB(c[Yb>>2]|0,33450,c[6172+(d[(c[c[Xb>>2]>>2]|0)+62>>0]<<3)>>2]|0);break a}if((e[(c[(c[(c[Zb>>2]|0)+16>>2]|0)+12>>2]|0)+78>>1]&1|0)==1?(e[(c[(c[(c[Zb>>2]|0)+16>>2]|0)+12>>2]|0)+78>>1]&4|0)!=4:0)break a;c[Ha>>2]=6172;while(1){if(!(c[c[Ha>>2]>>2]|0))break;Yb=0==(Td(c[$b>>2]|0,c[c[Ha>>2]>>2]|0)|0);l=c[Ha>>2]|0;if(Yb){Vb=301;break}c[Ha>>2]=l+8}if((Vb|0)==301){if(d[l+4>>0]|0)l=d[(c[Ha>>2]|0)+4>>0]|0;else l=(a[960]|0)==0?3:2;Yb=l&255;a[(c[Zb>>2]|0)+62>>0]=Yb;a[(c[(c[(c[Zb>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]=Yb}if(c[c[Ha>>2]>>2]|0)break a;Yb=c[Xb>>2]|0;c[Ia>>2]=c[$b>>2];Ah(Yb,33459,Ia);break a}case 0:{c[P>>2]=c[(c[Hb>>2]|0)+8>>2];Hh(c[Yb>>2]|0,c[Wb>>2]|0);if((c[$b>>2]|0)!=0?(d[(c[Hb>>2]|0)+5>>0]&2|0)==0:0){c[w>>2]=Gh(c[Yb>>2]|0,2,33484,0)|0;c[(c[w>>2]|0)+4>>2]=c[Wb>>2];c[(c[w>>2]|0)+20+4>>2]=c[Wb>>2];c[(c[w>>2]|0)+20+8>>2]=c[P>>2];Yb=Ki(c[$b>>2]|0)|0;c[(c[w>>2]|0)+20+12>>2]=Yb;break a}c[x>>2]=Gh(c[Yb>>2]|0,3,33492,0)|0;c[(c[x>>2]|0)+4>>2]=c[Wb>>2];c[(c[x>>2]|0)+20+4>>2]=c[Wb>>2];c[(c[x>>2]|0)+20+12>>2]=c[P>>2];OB(c[Yb>>2]|0,1);PB(c[Yb>>2]|0,0,0,c[_b>>2]|0,-1)|0;break a}case 8:{c[M>>2]=0;c[(c[Xb>>2]|0)+76>>2]=1;MB(c[Yb>>2]|0,33504);while(1){Xb=c[M>>2]|0;c[M>>2]=Xb+1;Xb=Ad(Xb)|0;c[Ca>>2]=Xb;if(!Xb)break a;Tw(c[Yb>>2]|0,1,c[Ca>>2]|0)|0;Rw(c[Yb>>2]|0,33,1,1)|0}}case 36:{c[O>>2]=(c[c[s>>2]>>2]|0)!=0?c[Wb>>2]|0:10;c[G>>2]=0;do if(c[$b>>2]|0){if(!(Td(c[$b>>2]|0,33519)|0)){c[G>>2]=1;break}if(!(Td(c[$b>>2]|0,33524)|0)){c[G>>2]=2;break}if(!(Td(c[$b>>2]|0,33532)|0))c[G>>2]=3}while(0);_B(c[Yb>>2]|0,3,6244);c[(c[Xb>>2]|0)+76>>2]=3;Vw(c[Yb>>2]|0,8,c[O>>2]|0,c[G>>2]|0,1)|0; -Rw(c[Yb>>2]|0,33,1,3)|0;break a}case 35:{if(c[$b>>2]|0){Xb=c[Zb>>2]|0;yf(Xb,Ki(c[$b>>2]|0)|0)|0}if((c[(c[Zb>>2]|0)+216>>2]|0)==139)l=c[(c[Zb>>2]|0)+220>>2]|0;else l=0;NB(c[Yb>>2]|0,33541,l,((l|0)<0)<<31>>31);break a}case 27:{nf(c[Zb>>2]|0)|0;break a}case 28:{if((c[$b>>2]|0)!=0?(Ci(c[$b>>2]|0,t)|0)==0:0){Xb=t;Gd(c[Xb>>2]|0,c[Xb+4>>2]|0)|0}Xb=c[Yb>>2]|0;Yb=Gd(-1,-1)|0;NB(Xb,33568,Yb,C);break a}case 34:{if((c[$b>>2]|0)!=0?(Vb=(Ci(c[$b>>2]|0,u)|0)==0,Xb=u,Wb=c[Xb+4>>2]|0,Vb&((Wb|0)>0|(Wb|0)==0&(c[Xb>>2]|0)>>>0>=0)):0)Df(c[Zb>>2]|0,11,c[u>>2]&2147483647)|0;Xb=c[Yb>>2]|0;Yb=Df(c[Zb>>2]|0,11,-1)|0;NB(Xb,33584,Yb,((Yb|0)<0)<<31>>31);break a}default:{if(c[$b>>2]|0){Xb=c[Zb>>2]|0;uf(Xb,Ki(c[$b>>2]|0)|0)|0}Xb=c[(c[Zb>>2]|0)+496>>2]|0;NB(c[Yb>>2]|0,33560,Xb,((Xb|0)<0)<<31>>31);break a}}while(0)}}while(0);Sf(c[Zb>>2]|0,c[_b>>2]|0);Sf(c[Zb>>2]|0,c[$b>>2]|0);i=ac;return}function iw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=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;w=i;i=i+112|0;t=w+24|0;s=w;f=w+108|0;g=w+104|0;h=w+100|0;p=w+96|0;v=w+92|0;j=w+88|0;q=w+64|0;k=w+56|0;l=w+48|0;r=w+44|0;u=w+40|0;n=w+36|0;m=w+32|0;o=w+28|0;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;c[p>>2]=c[(c[f>>2]|0)+492>>2];c[j>>2]=c[c[f>>2]>>2];c[(c[f>>2]|0)+492>>2]=0;do if((c[p>>2]|0)!=0?(c[(c[f>>2]|0)+68>>2]|0)==0:0){c[v>>2]=c[c[p>>2]>>2];c[k>>2]=Dh(c[c[f>>2]>>2]|0,c[(c[p>>2]|0)+20>>2]|0)|0;c[(c[p>>2]|0)+28>>2]=c[g>>2];while(1){e=c[p>>2]|0;if(!(c[g>>2]|0))break;c[(c[g>>2]|0)+4>>2]=e;c[g>>2]=c[(c[g>>2]|0)+28>>2]}Cy(l,c[e>>2]|0);EB(q,c[f>>2]|0,c[k>>2]|0,19528,l);if((JB(q,c[(c[p>>2]|0)+28>>2]|0)|0)==0?(HB(q,c[(c[p>>2]|0)+12>>2]|0)|0)==0:0){if(!(a[(c[j>>2]|0)+140+5>>0]|0)){c[r>>2]=Pw(c[f>>2]|0)|0;if(!(c[r>>2]|0))break;ax(c[f>>2]|0,0,c[k>>2]|0);c[u>>2]=Iw(c[j>>2]|0,c[c[h>>2]>>2]|0,c[(c[h>>2]|0)+4>>2]|0,0)|0;q=c[f>>2]|0;b=(c[k>>2]|0)==1?20769:20788;d=c[v>>2]|0;h=c[(c[p>>2]|0)+4>>2]|0;l=c[u>>2]|0;c[s>>2]=c[(c[(c[j>>2]|0)+16>>2]|0)+(c[k>>2]<<4)>>2];c[s+4>>2]=b;c[s+8>>2]=d;c[s+12>>2]=h;c[s+16>>2]=l;Ow(q,32822,s);Sf(c[j>>2]|0,c[u>>2]|0);Qw(c[f>>2]|0,c[k>>2]|0);r=c[r>>2]|0;s=c[k>>2]|0;u=c[j>>2]|0;c[t>>2]=c[v>>2];Sw(r,s,Bh(u,32886,t)|0)}if(a[(c[j>>2]|0)+140+5>>0]|0){c[n>>2]=c[p>>2];c[m>>2]=(c[(c[(c[j>>2]|0)+16>>2]|0)+(c[k>>2]<<4)+12>>2]|0)+40;c[p>>2]=Oj(c[m>>2]|0,c[v>>2]|0,c[p>>2]|0)|0;if(c[p>>2]|0){jh(c[j>>2]|0);break}if((c[(c[n>>2]|0)+20>>2]|0)==(c[(c[n>>2]|0)+24>>2]|0)){c[o>>2]=nj((c[(c[n>>2]|0)+24>>2]|0)+8|0,c[(c[n>>2]|0)+4>>2]|0)|0;c[(c[n>>2]|0)+32>>2]=c[(c[o>>2]|0)+60>>2];c[(c[o>>2]|0)+60>>2]=c[n>>2]}}}}while(0);Pf(c[j>>2]|0,c[p>>2]|0);bv(c[j>>2]|0,c[g>>2]|0);i=w;return}function jw(b,e,f,g,h,j,k,l,m,n){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=i;i=i+160|0;v=Q+48|0;u=Q+32|0;t=Q+24|0;F=Q+16|0;s=Q+8|0;r=Q;I=Q+156|0;o=Q+152|0;p=Q+148|0;x=Q+144|0;y=Q+140|0;J=Q+136|0;K=Q+132|0;L=Q+128|0;z=Q+124|0;A=Q+120|0;O=Q+116|0;E=Q+112|0;P=Q+108|0;M=Q+104|0;N=Q+100|0;D=Q+96|0;q=Q+72|0;C=Q+68|0;B=Q+64|0;G=Q+60|0;H=Q+56|0;c[I>>2]=b;c[o>>2]=e;c[p>>2]=f;c[x>>2]=g;c[y>>2]=h;c[J>>2]=j;c[K>>2]=k;c[L>>2]=l;c[z>>2]=m;c[A>>2]=n;c[O>>2]=0;c[P>>2]=0;c[M>>2]=c[c[I>>2]>>2];do if(c[z>>2]|0)if((c[(c[p>>2]|0)+4>>2]|0)>>>0<=0){c[N>>2]=1;c[D>>2]=c[o>>2];if(c[K>>2]|0){w=6;break}else break}else{Ah(c[I>>2]|0,32505,r);break}else{c[N>>2]=tz(c[I>>2]|0,c[o>>2]|0,c[p>>2]|0,D)|0;if((c[N>>2]|0)>=0&(c[K>>2]|0)!=0)w=6}while(0);do if((w|0)==6?(d[(c[M>>2]|0)+65>>0]|0)==0:0){if((c[N>>2]|0)!=1?(d[(c[M>>2]|0)+140+5>>0]|0)!=0:0){Sf(c[M>>2]|0,c[(c[K>>2]|0)+8+4>>2]|0);c[(c[K>>2]|0)+8+4>>2]=0}c[E>>2]=DB(c[I>>2]|0,c[K>>2]|0)|0;if(((d[(c[M>>2]|0)+140+5>>0]|0)==0?(c[E>>2]|0)!=0?(c[(c[p>>2]|0)+4>>2]|0)==0:0:0)?(c[(c[E>>2]|0)+64>>2]|0)==(c[(c[(c[M>>2]|0)+16>>2]|0)+16+12>>2]|0):0)c[N>>2]=1;if((a[(c[M>>2]|0)+65>>0]|0)==0?(EB(q,c[I>>2]|0,c[N>>2]|0,19528,c[D>>2]|0),(FB(q,c[K>>2]|0)|0)==0):0){c[E>>2]=DB(c[I>>2]|0,c[K>>2]|0)|0;if(!(c[E>>2]|0)){if((d[(c[M>>2]|0)+140+4>>0]|0)!=1)break;a[(c[M>>2]|0)+140+6>>0]=1;break}if(d[(c[E>>2]|0)+42>>0]&16){Ah(c[I>>2]|0,32551,s);break}c[P>>2]=Dw(c[M>>2]|0,c[D>>2]|0)|0;if((c[P>>2]|0)!=0?0==(yx(c[I>>2]|0,c[P>>2]|0)|0):0){if(nj((c[(c[(c[M>>2]|0)+16>>2]|0)+(c[N>>2]<<4)+12>>2]|0)+40|0,c[P>>2]|0)|0){o=c[I>>2]|0;if(c[A>>2]|0){bx(o,c[N>>2]|0);break}else{c[F>>2]=c[D>>2];Ah(o,32592,F);break}}if(!(zd(c[c[E>>2]>>2]|0,28715,7)|0)){Ah(c[I>>2]|0,32618,t);break}if((c[x>>2]|0)!=49?(c[(c[E>>2]|0)+12>>2]|0)!=0:0){N=c[I>>2]|0;H=c[K>>2]|0;c[u>>2]=(c[x>>2]|0)==35?32656:32663;c[u+4>>2]=H;c[u+8>>2]=0;Ah(N,32669,u);break}if((c[x>>2]|0)==49?(c[(c[E>>2]|0)+12>>2]|0)==0:0){N=c[I>>2]|0;c[v>>2]=c[K>>2];c[v+4>>2]=0;Ah(N,32706,v);break}c[C>>2]=Dh(c[M>>2]|0,c[(c[E>>2]|0)+64>>2]|0)|0;c[B>>2]=7;c[G>>2]=c[(c[(c[M>>2]|0)+16>>2]|0)+(c[C>>2]<<4)>>2];if(c[z>>2]|0)o=c[(c[(c[M>>2]|0)+16>>2]|0)+16>>2]|0;else o=c[G>>2]|0;c[H>>2]=o;if((c[C>>2]|0)==1|(c[z>>2]|0)!=0)c[B>>2]=5;if((Mw(c[I>>2]|0,c[B>>2]|0,c[P>>2]|0,c[c[E>>2]>>2]|0,c[H>>2]|0)|0)==0?(Mw(c[I>>2]|0,18,(c[C>>2]|0)==1?20769:20788,0,c[G>>2]|0)|0)==0:0){if((c[x>>2]|0)==49)c[x>>2]=35;c[O>>2]=ph(c[M>>2]|0,36,0)|0;if(!(c[O>>2]|0))break;c[c[O>>2]>>2]=c[P>>2];c[P>>2]=0;H=nh(c[M>>2]|0,c[(c[K>>2]|0)+8+8>>2]|0)|0;c[(c[O>>2]|0)+4>>2]=H;c[(c[O>>2]|0)+20>>2]=c[(c[(c[M>>2]|0)+16>>2]|0)+(c[N>>2]<<4)+12>>2];c[(c[O>>2]|0)+24>>2]=c[(c[E>>2]|0)+64>>2];a[(c[O>>2]|0)+8>>0]=c[y>>2];a[(c[O>>2]|0)+9>>0]=(c[x>>2]|0)==35?1:2;N=ny(c[M>>2]|0,c[L>>2]|0,1)|0;c[(c[O>>2]|0)+12>>2]=N;N=nz(c[M>>2]|0,c[J>>2]|0)|0;c[(c[O>>2]|0)+16>>2]=N;c[(c[I>>2]|0)+492>>2]=c[O>>2]}}}}while(0);Sf(c[M>>2]|0,c[P>>2]|0);Yu(c[M>>2]|0,c[K>>2]|0);_u(c[M>>2]|0,c[J>>2]|0);Zu(c[M>>2]|0,c[L>>2]|0);if(c[(c[I>>2]|0)+492>>2]|0){i=Q;return}Pf(c[M>>2]|0,c[O>>2]|0);i=Q;return}function kw(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;h=n+16|0;o=n+12|0;j=n+8|0;k=n+4|0;l=n+20|0;m=n;c[h>>2]=b;c[o>>2]=d;c[j>>2]=e;c[k>>2]=f;a[l>>0]=g;c[m>>2]=CB(c[h>>2]|0,110,c[o>>2]|0)|0;if(c[m>>2]|0){o=vy(c[h>>2]|0,c[j>>2]|0,1)|0;c[(c[m>>2]|0)+20>>2]=o;o=ny(c[h>>2]|0,c[k>>2]|0,1)|0;c[(c[m>>2]|0)+16>>2]=o;a[(c[m>>2]|0)+1>>0]=a[l>>0]|0}Vu(c[h>>2]|0,c[j>>2]|0);Zu(c[h>>2]|0,c[k>>2]|0);i=n;return c[m>>2]|0}function lw(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;h=n+16|0;o=n+12|0;j=n+8|0;k=n+4|0;l=n+20|0;m=n;c[h>>2]=b;c[o>>2]=d;c[j>>2]=e;c[k>>2]=f;a[l>>0]=g;c[m>>2]=CB(c[h>>2]|0,108,c[o>>2]|0)|0;b=c[h>>2]|0;if(c[m>>2]|0){o=Hx(b,c[k>>2]|0,1)|0;c[(c[m>>2]|0)+8>>2]=o;c[(c[m>>2]|0)+24>>2]=c[j>>2];a[(c[m>>2]|0)+1>>0]=a[l>>0]|0;l=c[h>>2]|0;o=c[k>>2]|0;Wu(l,o);o=c[m>>2]|0;i=n;return o|0}else{_u(b,c[j>>2]|0);l=c[h>>2]|0;o=c[k>>2]|0;Wu(l,o);o=c[m>>2]|0;i=n;return o|0}return 0}function mw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;j=i;i=i+16|0;f=j+12|0;k=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[k>>2]=d;c[g>>2]=e;c[h>>2]=CB(c[f>>2]|0,109,c[k>>2]|0)|0;if(c[h>>2]|0){k=ny(c[f>>2]|0,c[g>>2]|0,1)|0;c[(c[h>>2]|0)+16>>2]=k;a[(c[h>>2]|0)+1>>0]=10}Zu(c[f>>2]|0,c[g>>2]|0);i=j;return c[h>>2]|0}function nw(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[g>>2]=d;c[h>>2]=ph(c[f>>2]|0,36,0)|0;if(!(c[h>>2]|0)){Wu(c[f>>2]|0,c[g>>2]|0);c[e>>2]=0;h=c[e>>2]|0;i=j;return h|0}else{a[c[h>>2]>>0]=119;c[(c[h>>2]|0)+8>>2]=c[g>>2];a[(c[h>>2]|0)+1>>0]=10;c[e>>2]=c[h>>2];h=c[e>>2]|0;i=j;return h|0}return 0}function ow(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;p=r;l=r+40|0;m=r+36|0;n=r+32|0;h=r+28|0;f=r+24|0;q=r+20|0;j=r+16|0;o=r+12|0;g=r+8|0;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;c[h>>2]=0;c[o>>2]=c[c[l>>2]>>2];if(a[(c[o>>2]|0)+65>>0]|0){p=c[o>>2]|0;q=c[m>>2]|0;Yu(p,q);i=r;return}if(pz(c[l>>2]|0)|0){p=c[o>>2]|0;q=c[m>>2]|0;Yu(p,q);i=r;return}c[q>>2]=c[(c[m>>2]|0)+8+4>>2];c[j>>2]=c[(c[m>>2]|0)+8+8>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[o>>2]|0)+20>>2]|0))break;b=c[f>>2]|0;c[g>>2]=(c[f>>2]|0)<2?b^1:b;if(!((c[q>>2]|0)!=0?(Td(c[(c[(c[o>>2]|0)+16>>2]|0)+(c[g>>2]<<4)>>2]|0,c[q>>2]|0)|0)!=0:0))k=7;if((k|0)==7?(k=0,c[h>>2]=nj((c[(c[(c[o>>2]|0)+16>>2]|0)+(c[g>>2]<<4)+12>>2]|0)+40|0,c[j>>2]|0)|0,(c[h>>2]|0)!=0):0)break;c[f>>2]=(c[f>>2]|0)+1}if(c[h>>2]|0){AB(c[l>>2]|0,c[h>>2]|0);p=c[o>>2]|0;q=c[m>>2]|0;Yu(p,q);i=r;return}f=c[l>>2]|0;if(c[n>>2]|0)zB(f,c[q>>2]|0);else{c[p>>2]=c[m>>2];c[p+4>>2]=0;Ah(f,32434,p)}a[(c[l>>2]|0)+17>>0]=1;p=c[o>>2]|0;q=c[m>>2]|0;Yu(p,q);i=r;return}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,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;iB(c[k>>2]|0,24,5280,c[j>>2]|0,c[j>>2]|0,c[h>>2]|0,c[g>>2]|0);i=f;return}function qw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;iB(c[f>>2]|0,25,5248,c[e>>2]|0,0,0,c[e>>2]|0);i=d;return}function rw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=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;u=i;i=i+64|0;t=u;q=u+48|0;f=u+44|0;g=u+40|0;j=u+36|0;m=u+32|0;o=u+28|0;l=u+24|0;s=u+20|0;r=u+16|0;h=u+12|0;k=u+8|0;n=u+4|0;c[q>>2]=b;c[f>>2]=d;c[g>>2]=e;c[h>>2]=c[c[q>>2]>>2];if(pz(c[q>>2]|0)|0){i=u;return}if(!(c[f>>2]|0)){Sz(c[q>>2]|0,0);i=u;return}if(!((c[g>>2]|0)!=0?(c[c[g>>2]>>2]|0)!=0:0))p=6;do if((p|0)==6){c[n>>2]=Dw(c[c[q>>2]>>2]|0,c[f>>2]|0)|0;if(!(c[n>>2]|0)){i=u;return}c[j>>2]=Mj(c[h>>2]|0,a[(c[h>>2]|0)+62>>0]|0,c[n>>2]|0,0)|0;if(!(c[j>>2]|0)){Sf(c[h>>2]|0,c[n>>2]|0);break}Sz(c[q>>2]|0,c[n>>2]|0);Sf(c[h>>2]|0,c[n>>2]|0);i=u;return}while(0);c[r>>2]=tz(c[q>>2]|0,c[f>>2]|0,c[g>>2]|0,k)|0;if((c[r>>2]|0)<0){i=u;return}c[m>>2]=Dw(c[h>>2]|0,c[k>>2]|0)|0;if(!(c[m>>2]|0)){i=u;return}c[o>>2]=c[(c[(c[h>>2]|0)+16>>2]|0)+(c[r>>2]<<4)>>2];c[l>>2]=pi(c[h>>2]|0,c[m>>2]|0,c[o>>2]|0)|0;if(c[l>>2]|0){Tz(c[q>>2]|0,c[l>>2]|0,0);Sf(c[h>>2]|0,c[m>>2]|0);i=u;return}c[s>>2]=Fj(c[h>>2]|0,c[m>>2]|0,c[o>>2]|0)|0;Sf(c[h>>2]|0,c[m>>2]|0);f=c[q>>2]|0;if(c[s>>2]|0){ax(f,0,c[r>>2]|0);Uz(c[q>>2]|0,c[s>>2]|0,-1);i=u;return}else{Ah(f,31878,t);i=u;return}}function sw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;l=r+44|0;e=r+40|0;f=r+36|0;m=r+32|0;h=r+28|0;g=r+24|0;q=r+20|0;k=r+16|0;o=r+12|0;n=r+8|0;j=r+4|0;p=r;c[l>>2]=a;c[e>>2]=b;c[f>>2]=d;c[m>>2]=c[c[l>>2]>>2];if(pz(c[l>>2]|0)|0){i=r;return}a:do if(c[e>>2]|0){if(c[(c[f>>2]|0)+4>>2]|0){c[h>>2]=tz(c[l>>2]|0,c[e>>2]|0,c[f>>2]|0,j)|0;if((c[h>>2]|0)<0)break;c[k>>2]=c[(c[(c[m>>2]|0)+16>>2]|0)+(c[h>>2]<<4)>>2];c[q>>2]=Dw(c[m>>2]|0,c[j>>2]|0)|0;if(!(c[q>>2]|0))break;j=Fj(c[m>>2]|0,c[q>>2]|0,c[k>>2]|0)|0;c[n>>2]=j;e=c[l>>2]|0;if(!j){n=zh(e,0,c[q>>2]|0,c[k>>2]|0)|0;c[o>>2]=n;if(n)sz(c[l>>2]|0,c[o>>2]|0,0)}else sz(e,c[(c[n>>2]|0)+12>>2]|0,c[n>>2]|0);Sf(c[m>>2]|0,c[q>>2]|0);break}c[h>>2]=rz(c[m>>2]|0,c[e>>2]|0)|0;if((c[h>>2]|0)>=0){qz(c[l>>2]|0,c[h>>2]|0);break}c[q>>2]=Dw(c[m>>2]|0,c[e>>2]|0)|0;if(c[q>>2]|0){k=Fj(c[m>>2]|0,c[q>>2]|0,0)|0;c[n>>2]=k;e=c[l>>2]|0;if(!k){n=zh(e,0,c[q>>2]|0,0)|0;c[o>>2]=n;if(n)sz(c[l>>2]|0,c[o>>2]|0,0)}else sz(e,c[(c[n>>2]|0)+12>>2]|0,c[n>>2]|0);Sf(c[m>>2]|0,c[q>>2]|0)}}else{c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[m>>2]|0)+20>>2]|0))break a;if((c[g>>2]|0)!=1)qz(c[l>>2]|0,c[g>>2]|0);c[g>>2]=(c[g>>2]|0)+1}}while(0);c[p>>2]=Pw(c[l>>2]|0)|0;if(!(c[p>>2]|0)){i=r;return}Yw(c[p>>2]|0,147)|0;i=r;return}function tw(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=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;E=i;i=i+176|0;y=E+96|0;x=E+80|0;w=E+40|0;z=E+16|0;v=E+8|0;h=E;j=E+172|0;k=E+168|0;g=E+164|0;n=E+160|0;A=E+156|0;r=E+152|0;B=E+148|0;l=E+144|0;o=E+140|0;C=E+136|0;u=E+132|0;D=E+128|0;s=E+124|0;t=E+120|0;m=E+116|0;p=E+112|0;q=E+108|0;c[j>>2]=b;c[k>>2]=e;c[g>>2]=f;c[B>>2]=0;c[l>>2]=c[c[j>>2]>>2];c[D>>2]=0;c[s>>2]=0;c[t>>2]=c[(c[l>>2]|0)+24>>2];do if(((a[(c[l>>2]|0)+65>>0]|0)==0?(c[r>>2]=_w(c[j>>2]|0,0,(c[k>>2]|0)+8|0)|0,(c[r>>2]|0)!=0):0)?(c[n>>2]=Dh(c[c[j>>2]>>2]|0,c[(c[r>>2]|0)+64>>2]|0)|0,c[A>>2]=c[(c[(c[l>>2]|0)+16>>2]|0)+(c[n>>2]<<4)>>2],e=(c[l>>2]|0)+24|0,c[e>>2]=c[e>>2]|2097152,c[B>>2]=Dw(c[l>>2]|0,c[g>>2]|0)|0,(c[B>>2]|0)!=0):0){if((pi(c[l>>2]|0,c[B>>2]|0,c[A>>2]|0)|0)==0?(Fj(c[l>>2]|0,c[B>>2]|0,c[A>>2]|0)|0)==0:0){if($w(c[j>>2]|0,c[c[r>>2]>>2]|0)|0)break;if(yx(c[j>>2]|0,c[B>>2]|0)|0)break;g=c[j>>2]|0;if(c[(c[r>>2]|0)+12>>2]|0){c[v>>2]=c[c[r>>2]>>2];Ah(g,29208,v);break}if(Mw(g,26,c[A>>2]|0,c[c[r>>2]>>2]|0,0)|0)break;if(zx(c[j>>2]|0,c[r>>2]|0)|0)break;if((d[(c[r>>2]|0)+42>>0]&16|0)!=0?(c[s>>2]=Ax(c[l>>2]|0,c[r>>2]|0)|0,(c[(c[c[(c[s>>2]|0)+8>>2]>>2]|0)+76>>2]|0)==0):0)c[s>>2]=0;c[u>>2]=Pw(c[j>>2]|0)|0;if(!(c[u>>2]|0))break;ax(c[j>>2]|0,(c[s>>2]|0)!=0&1,c[n>>2]|0);Qw(c[j>>2]|0,c[n>>2]|0);if(c[s>>2]|0){h=(c[j>>2]|0)+76|0;v=(c[h>>2]|0)+1|0;c[h>>2]=v;c[m>>2]=v;Tw(c[u>>2]|0,c[m>>2]|0,c[B>>2]|0)|0;Uw(c[u>>2]|0,155,c[m>>2]|0,0,0,c[s>>2]|0,-10)|0;Bx(c[j>>2]|0)}c[C>>2]=c[c[r>>2]>>2];c[o>>2]=Cx(c[C>>2]|0,-1)|0;if((c[(c[l>>2]|0)+24>>2]&524288|0)!=0?(v=Dx(c[j>>2]|0,c[r>>2]|0)|0,c[D>>2]=v,(v|0)!=0):0){v=c[j>>2]|0;h=(c[n>>2]|0)==1?20769:20788;m=c[C>>2]|0;s=c[B>>2]|0;u=c[D>>2]|0;c[z>>2]=c[A>>2];c[z+4>>2]=h;c[z+8>>2]=m;c[z+12>>2]=s;c[z+16>>2]=u;Ow(v,29235,z);Sf(c[l>>2]|0,c[D>>2]|0)}z=c[j>>2]|0;e=(c[n>>2]|0)==1?20769:20788;h=c[B>>2]|0;m=c[B>>2]|0;n=c[B>>2]|0;s=c[B>>2]|0;u=c[B>>2]|0;v=c[o>>2]|0;C=c[C>>2]|0;c[w>>2]=c[A>>2];c[w+4>>2]=e;c[w+8>>2]=h;c[w+12>>2]=m;c[w+16>>2]=n;c[w+20>>2]=s;c[w+24>>2]=u;c[w+28>>2]=v;c[w+32>>2]=C;Ow(z,29304,w);if(pi(c[l>>2]|0,29688,c[A>>2]|0)|0){C=c[j>>2]|0;w=c[B>>2]|0;z=c[c[r>>2]>>2]|0;c[x>>2]=c[A>>2];c[x+4>>2]=w;c[x+8>>2]=z;Ow(C,29704,x)}C=gx(c[j>>2]|0,c[r>>2]|0)|0;c[D>>2]=C;if(C){C=c[j>>2]|0;z=c[B>>2]|0;A=c[D>>2]|0;c[y>>2]=c[B>>2];c[y+4>>2]=z;c[y+8>>2]=A;Ow(C,29762,y);Sf(c[l>>2]|0,c[D>>2]|0)}a:do if(c[(c[l>>2]|0)+24>>2]&524288){c[p>>2]=Ex(c[r>>2]|0)|0;while(1){if(!(c[p>>2]|0))break a;c[q>>2]=c[c[p>>2]>>2];if((c[q>>2]|0)!=(c[r>>2]|0))ex(c[j>>2]|0,c[c[p>>2]>>2]|0,c[c[q>>2]>>2]|0);c[p>>2]=c[(c[p>>2]|0)+12>>2]}}while(0);ex(c[j>>2]|0,c[r>>2]|0,c[B>>2]|0);break}D=c[j>>2]|0;c[h>>2]=c[B>>2];Ah(D,29149,h)}while(0);Yu(c[l>>2]|0,c[k>>2]|0);Sf(c[l>>2]|0,c[B>>2]|0);c[(c[l>>2]|0)+24>>2]=c[t>>2];i=E;return}function uw(e,f){e=e|0;f=f|0;var g=0,h=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;D=i;i=i+128|0;v=D+40|0;u=D+32|0;y=D+24|0;x=D+16|0;w=D+8|0;t=D;g=D+124|0;h=D+120|0;n=D+116|0;o=D+112|0;k=D+108|0;A=D+104|0;C=D+100|0;z=D+96|0;l=D+92|0;m=D+88|0;j=D+84|0;s=D+80|0;p=D+76|0;q=D+72|0;B=D+68|0;r=D+64|0;c[g>>2]=e;c[h>>2]=f;c[s>>2]=c[(c[g>>2]|0)+8>>2];c[j>>2]=c[c[g>>2]>>2];if(c[(c[g>>2]|0)+68>>2]|0){i=D;return}if(d[(c[j>>2]|0)+65>>0]|0){i=D;return}c[n>>2]=c[(c[g>>2]|0)+488>>2];c[k>>2]=Dh(c[j>>2]|0,c[(c[n>>2]|0)+64>>2]|0)|0;c[A>>2]=c[(c[(c[j>>2]|0)+16>>2]|0)+(c[k>>2]<<4)>>2];c[C>>2]=(c[c[n>>2]>>2]|0)+16;c[l>>2]=(c[(c[n>>2]|0)+4>>2]|0)+(((b[(c[n>>2]|0)+34>>1]|0)-1|0)*24|0);c[m>>2]=c[(c[l>>2]|0)+4>>2];c[o>>2]=pi(c[j>>2]|0,c[C>>2]|0,c[A>>2]|0)|0;if(Mw(c[g>>2]|0,26,c[A>>2]|0,c[c[o>>2]>>2]|0,0)|0){i=D;return}if((c[m>>2]|0)!=0?(d[c[m>>2]>>0]|0)==101:0)c[m>>2]=0;if(d[(c[l>>2]|0)+23>>0]&1){Ah(c[g>>2]|0,28751,t);i=D;return}if(c[(c[n>>2]|0)+8>>2]|0){Ah(c[g>>2]|0,28783,w);i=D;return}if((c[(c[j>>2]|0)+24>>2]&524288|0)!=0?(c[m>>2]|0)!=0?(c[(c[n>>2]|0)+16>>2]|0)!=0:0:0){Ah(c[g>>2]|0,28810,x);i=D;return}if(!((c[m>>2]|0)!=0?1:(d[(c[l>>2]|0)+20>>0]|0)==0)){Ah(c[g>>2]|0,28869,y);i=D;return}do if(c[m>>2]|0){c[p>>2]=0;c[q>>2]=dx(c[j>>2]|0,c[m>>2]|0,1,65,p)|0;if(c[q>>2]|0){i=D;return}if(c[p>>2]|0){$g(c[p>>2]|0);break}Ah(c[g>>2]|0,28922,u);i=D;return}while(0);c[z>>2]=Iw(c[j>>2]|0,c[c[h>>2]>>2]|0,c[(c[h>>2]|0)+4>>2]|0,0)|0;if(c[z>>2]|0){c[B>>2]=(c[z>>2]|0)+((c[(c[h>>2]|0)+4>>2]|0)-1);c[r>>2]=c[(c[j>>2]|0)+24>>2];while(1){if((c[B>>2]|0)>>>0<=(c[z>>2]|0)>>>0)break;if((a[c[B>>2]>>0]|0)!=59?(d[19267+(d[c[B>>2]>>0]|0)>>0]&1|0)==0:0)break;y=c[B>>2]|0;c[B>>2]=y+-1;a[y>>0]=0}B=(c[j>>2]|0)+24|0;c[B>>2]=c[B>>2]|2097152;B=c[g>>2]|0;u=(c[k>>2]|0)==1?20769:20788;w=c[(c[n>>2]|0)+44>>2]|0;x=c[z>>2]|0;y=(c[(c[n>>2]|0)+44>>2]|0)+1|0;C=c[C>>2]|0;c[v>>2]=c[A>>2];c[v+4>>2]=u;c[v+8>>2]=w;c[v+12>>2]=x;c[v+16>>2]=y;c[v+20>>2]=C;Ow(B,28968,v);Sf(c[j>>2]|0,c[z>>2]|0);c[(c[j>>2]|0)+24>>2]=c[r>>2]}Vw(c[s>>2]|0,52,c[k>>2]|0,2,4)|0;ex(c[g>>2]|0,c[o>>2]|0,c[c[o>>2]>>2]|0);i=D;return}function vw(e,f){e=e|0;f=f|0;var g=0,h=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;u=i;i=i+64|0;t=u+16|0;s=u+8|0;g=u;h=u+56|0;j=u+52|0;p=u+48|0;q=u+44|0;r=u+40|0;m=u+36|0;l=u+32|0;n=u+28|0;k=u+24|0;o=u+20|0;c[h>>2]=e;c[j>>2]=f;c[k>>2]=c[c[h>>2]>>2];do if((a[(c[k>>2]|0)+65>>0]|0)==0?(c[q>>2]=_w(c[h>>2]|0,0,(c[j>>2]|0)+8|0)|0,(c[q>>2]|0)!=0):0){if(d[(c[q>>2]|0)+42>>0]&16){Ah(c[h>>2]|0,28562,g);break}e=c[h>>2]|0;if(c[(c[q>>2]|0)+12>>2]|0){Ah(e,28596,s);break}if(((0==($w(e,c[c[q>>2]>>2]|0)|0)?(c[m>>2]=Dh(c[k>>2]|0,c[(c[q>>2]|0)+64>>2]|0)|0,c[p>>2]=ph(c[k>>2]|0,72,0)|0,(c[p>>2]|0)!=0):0)?(c[(c[h>>2]|0)+488>>2]=c[p>>2],b[(c[p>>2]|0)+36>>1]=1,b[(c[p>>2]|0)+34>>1]=b[(c[q>>2]|0)+34>>1]|0,c[n>>2]=((((b[(c[p>>2]|0)+34>>1]|0)-1|0)/8|0)<<3)+8,s=ph(c[k>>2]|0,(c[n>>2]|0)*24|0,0)|0,c[(c[p>>2]|0)+4>>2]=s,s=c[k>>2]|0,c[t>>2]=c[c[q>>2]>>2],t=Bh(s,28626,t)|0,c[c[p>>2]>>2]=t,(c[(c[p>>2]|0)+4>>2]|0)!=0):0)?(c[c[p>>2]>>2]|0)!=0:0){iR(c[(c[p>>2]|0)+4>>2]|0,c[(c[q>>2]|0)+4>>2]|0,(b[(c[p>>2]|0)+34>>1]|0)*24|0)|0;c[l>>2]=0;while(1){if((c[l>>2]|0)>=(b[(c[p>>2]|0)+34>>1]|0))break;c[o>>2]=(c[(c[p>>2]|0)+4>>2]|0)+((c[l>>2]|0)*24|0);t=nh(c[k>>2]|0,c[c[o>>2]>>2]|0)|0;c[c[o>>2]>>2]=t;c[(c[o>>2]|0)+16>>2]=0;c[(c[o>>2]|0)+12>>2]=0;c[(c[o>>2]|0)+4>>2]=0;c[(c[o>>2]|0)+8>>2]=0;c[l>>2]=(c[l>>2]|0)+1}c[(c[p>>2]|0)+64>>2]=c[(c[(c[k>>2]|0)+16>>2]|0)+(c[m>>2]<<4)+12>>2];c[(c[p>>2]|0)+44>>2]=c[(c[q>>2]|0)+44>>2];b[(c[p>>2]|0)+36>>1]=1;ax(c[h>>2]|0,0,c[m>>2]|0);c[r>>2]=Pw(c[h>>2]|0)|0;if(c[r>>2]|0)Qw(c[h>>2]|0,c[m>>2]|0)}}while(0);Yu(c[k>>2]|0,c[j>>2]|0);i=u;return}function ww(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=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;u=i;i=i+96|0;q=u+32|0;p=u+8|0;o=u;e=u+80|0;f=u+76|0;m=u+72|0;g=u+68|0;s=u+64|0;t=u+60|0;h=u+56|0;j=u+52|0;n=u+48|0;k=u+44|0;l=u+40|0;r=u+36|0;c[e>>2]=b;c[f>>2]=d;c[m>>2]=c[(c[e>>2]|0)+488>>2];c[g>>2]=c[c[e>>2]>>2];if(!(c[m>>2]|0)){i=u;return}Kw(c[e>>2]|0);c[(c[e>>2]|0)+516>>2]=0;if((c[(c[m>>2]|0)+48>>2]|0)<1){i=u;return}if(!(a[(c[g>>2]|0)+140+5>>0]|0)){if(c[f>>2]|0)c[(c[e>>2]|0)+500+4>>2]=(c[c[f>>2]>>2]|0)-(c[(c[e>>2]|0)+500>>2]|0)+(c[(c[f>>2]|0)+4>>2]|0);r=c[g>>2]|0;c[o>>2]=(c[e>>2]|0)+500;c[s>>2]=Bh(r,28423,o)|0;c[h>>2]=Dh(c[g>>2]|0,c[(c[m>>2]|0)+64>>2]|0)|0;r=c[e>>2]|0;d=(c[h>>2]|0)==1?20769:20788;k=c[c[m>>2]>>2]|0;b=c[c[m>>2]>>2]|0;l=c[s>>2]|0;o=c[(c[e>>2]|0)+392>>2]|0;c[p>>2]=c[(c[(c[g>>2]|0)+16>>2]|0)+(c[h>>2]<<4)>>2];c[p+4>>2]=d;c[p+8>>2]=k;c[p+12>>2]=b;c[p+16>>2]=l;c[p+20>>2]=o;Ow(r,28447,p);Sf(c[g>>2]|0,c[s>>2]|0);c[n>>2]=Pw(c[e>>2]|0)|0;Qw(c[e>>2]|0,c[h>>2]|0);Rw(c[n>>2]|0,147,0,0)|0;s=c[g>>2]|0;c[q>>2]=c[c[m>>2]>>2];c[t>>2]=Bh(s,28535,q)|0;Sw(c[n>>2]|0,c[h>>2]|0,c[t>>2]|0);s=(c[e>>2]|0)+76|0;t=(c[s>>2]|0)+1|0;c[s>>2]=t;c[j>>2]=t;Tw(c[n>>2]|0,c[j>>2]|0,c[c[m>>2]>>2]|0)|0;Rw(c[n>>2]|0,150,c[h>>2]|0,c[j>>2]|0)|0;i=u;return}c[l>>2]=c[(c[m>>2]|0)+64>>2];c[r>>2]=c[c[m>>2]>>2];c[k>>2]=Oj((c[l>>2]|0)+8|0,c[r>>2]|0,c[m>>2]|0)|0;if(c[k>>2]|0){jh(c[g>>2]|0);i=u;return}else{c[(c[e>>2]|0)+488>>2]=0;i=u;return}}function xw(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=i;i=i+32|0;j=o+28|0;r=o+24|0;q=o+20|0;k=o+16|0;p=o+12|0;m=o+8|0;n=o+4|0;l=o;c[j>>2]=b;c[r>>2]=e;c[q>>2]=f;c[k>>2]=g;c[p>>2]=h;lv(c[j>>2]|0,c[r>>2]|0,c[q>>2]|0,0,0,1,c[p>>2]|0);c[n>>2]=c[(c[j>>2]|0)+488>>2];if(!(c[n>>2]|0)){i=o;return}c[l>>2]=c[c[j>>2]>>2];c[m>>2]=Dh(c[l>>2]|0,c[(c[n>>2]|0)+64>>2]|0)|0;r=(c[n>>2]|0)+42|0;a[r>>0]=d[r>>0]|0|16;c[(c[n>>2]|0)+48>>2]=0;r=c[l>>2]|0;q=c[n>>2]|0;Lw(r,q,Dw(c[l>>2]|0,c[k>>2]|0)|0);Lw(c[l>>2]|0,c[n>>2]|0,0);q=c[l>>2]|0;r=c[n>>2]|0;Lw(q,r,nh(c[l>>2]|0,c[c[n>>2]>>2]|0)|0);c[(c[j>>2]|0)+500+4>>2]=(c[c[k>>2]>>2]|0)+(c[(c[k>>2]|0)+4>>2]|0)-(c[(c[j>>2]|0)+500>>2]|0);if(!(c[(c[n>>2]|0)+52>>2]|0)){i=o;return}Mw(c[j>>2]|0,29,c[c[n>>2]>>2]|0,c[c[(c[n>>2]|0)+52>>2]>>2]|0,c[(c[(c[c[j>>2]>>2]|0)+16>>2]|0)+(c[m>>2]<<4)>>2]|0)|0;i=o;return}function yw(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Kw(c[d>>2]|0);c[(c[d>>2]|0)+516>>2]=0;c[(c[d>>2]|0)+516+4>>2]=0;i=b;return}function zw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;g=f+8|0;d=f+4|0;e=f;c[g>>2]=a;c[d>>2]=b;c[e>>2]=(c[g>>2]|0)+516;b=c[d>>2]|0;if(!(c[c[e>>2]>>2]|0)){c[c[e>>2]>>2]=c[b>>2];c[(c[e>>2]|0)+4>>2]=c[(c[d>>2]|0)+4>>2];i=f;return}else{c[(c[e>>2]|0)+4>>2]=(c[c[d>>2]>>2]|0)+(c[b+4>>2]|0)-(c[c[e>>2]>>2]|0);i=f;return}}function Aw(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+48|0;q=s;h=s+40|0;j=s+36|0;t=s+32|0;k=s+28|0;l=s+24|0;m=s+20|0;p=s+16|0;r=s+12|0;n=s+8|0;o=s+4|0;c[h>>2]=b;c[j>>2]=d;c[t>>2]=e;c[k>>2]=f;c[l>>2]=g;c[m>>2]=c[c[h>>2]>>2];c[r>>2]=Dw(c[c[h>>2]>>2]|0,c[t>>2]|0)|0;a:do if((c[r>>2]|0)!=0&(c[j>>2]|0)!=0){c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[c[j>>2]>>2]|0))break a;if(!(Td(c[r>>2]|0,c[(c[j>>2]|0)+8+(c[n>>2]<<4)>>2]|0)|0)){t=c[h>>2]|0;c[q>>2]=c[r>>2];Ah(t,28355,q)}c[n>>2]=(c[n>>2]|0)+1}}while(0);if(c[j>>2]|0){c[o>>2]=24+(c[c[j>>2]>>2]<<4);t=c[o>>2]|0;c[p>>2]=Ew(c[m>>2]|0,c[j>>2]|0,t,((t|0)<0)<<31>>31)|0}else c[p>>2]=ph(c[m>>2]|0,24,0)|0;if(a[(c[m>>2]|0)+65>>0]|0){Vu(c[m>>2]|0,c[k>>2]|0);Wu(c[m>>2]|0,c[l>>2]|0);Sf(c[m>>2]|0,c[r>>2]|0);c[p>>2]=c[j>>2];t=c[p>>2]|0;i=s;return t|0}else{c[(c[p>>2]|0)+8+(c[c[p>>2]>>2]<<4)+8>>2]=c[l>>2];c[(c[p>>2]|0)+8+(c[c[p>>2]>>2]<<4)+4>>2]=c[k>>2];c[(c[p>>2]|0)+8+(c[c[p>>2]>>2]<<4)>>2]=c[r>>2];c[(c[p>>2]|0)+8+(c[c[p>>2]>>2]<<4)+12>>2]=0;t=c[p>>2]|0;c[t>>2]=(c[t>>2]|0)+1;t=c[p>>2]|0;i=s;return t|0}return 0}function Bw(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0;j=i;i=i+16|0;l=j+4|0;k=j+8|0;h=j;c[l>>2]=f;a[k>>0]=g;c[h>>2]=b[11910+(c[l>>2]<<1)>>1];c[h>>2]=(c[h>>2]|0)+(d[k>>0]|0);i=j;return e[12532+(c[h>>2]<<1)>>1]|0}function Cw(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=c[(c[b>>2]|0)+8>>2];while(1){if((c[c[b>>2]>>2]|0)<0)break;$u(c[b>>2]|0)}c[(c[b>>2]|0)+8>>2]=c[d>>2];i=e;return}function Dw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;if(c[e>>2]|0){c[f>>2]=Iw(c[d>>2]|0,c[c[e>>2]>>2]|0,c[(c[e>>2]|0)+4>>2]|0,0)|0;Jw(c[f>>2]|0)|0;f=c[f>>2]|0;i=g;return f|0}else{c[f>>2]=0;f=c[f>>2]|0;i=g;return f|0}return 0}function Ew(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;h=l+12|0;j=l+8|0;k=l;c[h>>2]=a;c[j>>2]=b;b=k;c[b>>2]=d;c[b+4>>2]=f;d=c[h>>2]|0;if(!(c[j>>2]|0)){c[g>>2]=Fw(d,c[k>>2]|0,c[k+4>>2]|0)|0;k=c[g>>2]|0;i=l;return k|0}if((au(d,c[j>>2]|0)|0)!=0?(b=k,a=c[b+4>>2]|0,a>>>0<0|((a|0)==0?(c[b>>2]|0)>>>0<=(e[(c[h>>2]|0)+248+4>>1]|0)>>>0:0)):0){c[g>>2]=c[j>>2];k=c[g>>2]|0;i=l;return k|0}c[g>>2]=Gw(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0,c[k+4>>2]|0)|0;k=c[g>>2]|0;i=l;return k|0}function Fw(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;h=l+12|0;j=l;k=l+8|0;c[h>>2]=b;b=j;c[b>>2]=d;c[b+4>>2]=f;do if(c[(c[h>>2]|0)+248>>2]|0){if(a[(c[h>>2]|0)+65>>0]|0){c[g>>2]=0;k=c[g>>2]|0;i=l;return k|0}}else{b=j;f=c[b+4>>2]|0;d=(c[h>>2]|0)+248|0;if(f>>>0>0|((f|0)==0?(c[b>>2]|0)>>>0>(e[(c[h>>2]|0)+248+4>>1]|0)>>>0:0)){k=d+16+4|0;c[k>>2]=(c[k>>2]|0)+1;break}b=c[d+28>>2]|0;c[k>>2]=b;if(!b){k=(c[h>>2]|0)+248+16+8|0;c[k>>2]=(c[k>>2]|0)+1;break}c[(c[h>>2]|0)+248+28>>2]=c[c[k>>2]>>2];j=(c[h>>2]|0)+248+8|0;c[j>>2]=(c[j>>2]|0)+1;j=(c[h>>2]|0)+248+16|0;c[j>>2]=(c[j>>2]|0)+1;if((c[(c[h>>2]|0)+248+8>>2]|0)>(c[(c[h>>2]|0)+248+12>>2]|0))c[(c[h>>2]|0)+248+12>>2]=c[(c[h>>2]|0)+248+8>>2];c[g>>2]=c[k>>2];k=c[g>>2]|0;i=l;return k|0}while(0);k=j;c[g>>2]=Hw(c[h>>2]|0,c[k>>2]|0,c[k+4>>2]|0)|0;k=c[g>>2]|0;i=l;return k|0}function Gw(a,b,f,g){a=a|0;b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;h=m+16|0;j=m+12|0;k=m;l=m+8|0;c[h>>2]=a;c[j>>2]=b;b=k;c[b>>2]=f;c[b+4>>2]=g;c[l>>2]=0;if(d[(c[h>>2]|0)+65>>0]|0){l=c[l>>2]|0;i=m;return l|0}if(au(c[h>>2]|0,c[j>>2]|0)|0){b=k;c[l>>2]=Fw(c[h>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;if(!(c[l>>2]|0)){l=c[l>>2]|0;i=m;return l|0}iR(c[l>>2]|0,c[j>>2]|0,e[(c[h>>2]|0)+248+4>>1]|0|0)|0;Sf(c[h>>2]|0,c[j>>2]|0);l=c[l>>2]|0;i=m;return l|0}else{b=k;c[l>>2]=Md(c[j>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;if(c[l>>2]|0){l=c[l>>2]|0;i=m;return l|0}jh(c[h>>2]|0);l=c[l>>2]|0;i=m;return l|0}return 0}function Hw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+12|0;h=g;f=g+8|0;c[e>>2]=a;a=h;c[a>>2]=b;c[a+4>>2]=d;a=h;c[f>>2]=_f(c[a>>2]|0,c[a+4>>2]|0)|0;if(c[f>>2]|0){h=c[f>>2]|0;i=g;return h|0}jh(c[e>>2]|0);h=c[f>>2]|0;i=g;return h|0}function Iw(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;g=m+20|0;h=m+16|0;j=m+12|0;k=m;l=m+8|0;c[h>>2]=b;c[j>>2]=d;d=k;c[d>>2]=e;c[d+4>>2]=f;if(!(c[j>>2]|0)){c[g>>2]=0;l=c[g>>2]|0;i=m;return l|0}b=c[h>>2]|0;d=k;d=gR(c[d>>2]|0,c[d+4>>2]|0,1,0)|0;c[l>>2]=Fw(b,d,C)|0;if(c[l>>2]|0){iR(c[l>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;a[(c[l>>2]|0)+(c[k>>2]|0)>>0]=0}c[g>>2]=c[l>>2];l=c[g>>2]|0;i=m;return l|0}function Jw(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;d=j+12|0;e=j+8|0;h=j+16|0;f=j+4|0;g=j;c[e>>2]=b;if(!(c[e>>2]|0)){c[d>>2]=-1;h=c[d>>2]|0;i=j;return h|0}a[h>>0]=a[c[e>>2]>>0]|0;switch(a[h>>0]|0){case 96:case 34:case 39:break;case 91:{a[h>>0]=93;break}default:{c[d>>2]=-1;h=c[d>>2]|0;i=j;return h|0}}c[f>>2]=1;c[g>>2]=0;while(1){b=c[f>>2]|0;if((a[(c[e>>2]|0)+(c[f>>2]|0)>>0]|0)==(a[h>>0]|0)){if((a[(c[e>>2]|0)+(b+1)>>0]|0)!=(a[h>>0]|0))break;k=a[h>>0]|0;b=c[g>>2]|0;c[g>>2]=b+1;a[(c[e>>2]|0)+b>>0]=k;c[f>>2]=(c[f>>2]|0)+1}else{b=a[(c[e>>2]|0)+b>>0]|0;k=c[g>>2]|0;c[g>>2]=k+1;a[(c[e>>2]|0)+k>>0]=b}c[f>>2]=(c[f>>2]|0)+1}a[(c[e>>2]|0)+(c[g>>2]|0)>>0]=0;c[d>>2]=c[g>>2];k=c[d>>2]|0;i=j;return k|0}function Kw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;b=g+12|0;f=g+8|0;e=g+4|0;d=g;c[b>>2]=a;if(!(c[(c[b>>2]|0)+516>>2]|0)){i=g;return}if(!(c[(c[b>>2]|0)+488>>2]|0)){i=g;return}c[f>>2]=c[(c[b>>2]|0)+516>>2];c[e>>2]=c[(c[b>>2]|0)+516+4>>2];c[d>>2]=c[c[b>>2]>>2];h=c[d>>2]|0;b=c[(c[b>>2]|0)+488>>2]|0;a=c[e>>2]|0;Lw(h,b,Iw(c[d>>2]|0,c[f>>2]|0,a,((a|0)<0)<<31>>31)|0);i=g;return}function Lw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+20|0;f=k+16|0;g=k+12|0;l=k+8|0;h=k+4|0;j=k;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[l>>2]=2+(c[(c[f>>2]|0)+48>>2]|0)<<2;d=c[l>>2]|0;c[h>>2]=Ew(c[e>>2]|0,c[(c[f>>2]|0)+52>>2]|0,d,((d|0)<0)<<31>>31)|0;if(!(c[h>>2]|0)){Sf(c[e>>2]|0,c[g>>2]|0);i=k;return}else{d=(c[f>>2]|0)+48|0;l=c[d>>2]|0;c[d>>2]=l+1;c[j>>2]=l;c[(c[h>>2]|0)+(c[j>>2]<<2)>>2]=c[g>>2];c[(c[h>>2]|0)+((c[j>>2]|0)+1<<2)>>2]=0;c[(c[f>>2]|0)+52>>2]=c[h>>2];i=k;return}}function Mw(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;q=r;h=r+32|0;j=r+28|0;k=r+24|0;l=r+20|0;m=r+16|0;n=r+12|0;o=r+8|0;p=r+4|0;c[j>>2]=a;c[k>>2]=b;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=c[c[j>>2]>>2];if((d[(c[o>>2]|0)+140+5>>0]|0|0)==0?(d[(c[j>>2]|0)+454>>0]|0|0)==0:0){if(!(c[(c[o>>2]|0)+288>>2]|0)){c[h>>2]=0;g=c[h>>2]|0;i=r;return g|0}c[p>>2]=Sb[c[(c[o>>2]|0)+288>>2]&255](c[(c[o>>2]|0)+292>>2]|0,c[k>>2]|0,c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,c[(c[j>>2]|0)+496>>2]|0)|0;if((c[p>>2]|0)!=1){if((c[p>>2]|0)!=0&(c[p>>2]|0)!=2){c[p>>2]=1;Nw(c[j>>2]|0)}}else{Ah(c[j>>2]|0,28385,q);c[(c[j>>2]|0)+12>>2]=23}c[h>>2]=c[p>>2];g=c[h>>2]|0;i=r;return g|0}c[h>>2]=0;g=c[h>>2]|0;i=r;return g|0}function Nw(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b+4|0;c[d>>2]=a;Ah(c[d>>2]|0,28400,b);c[(c[d>>2]|0)+12>>2]=1;i=b;return}function Ow(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+144|0;j=o+36|0;g=o+32|0;h=o+16|0;n=o+8|0;m=o+4|0;k=o;l=o+40|0;c[j>>2]=d;c[g>>2]=e;c[m>>2]=0;c[k>>2]=c[c[j>>2]>>2];if(c[(c[j>>2]|0)+68>>2]|0){i=o;return}c[h>>2]=f;c[n>>2]=Zw(c[k>>2]|0,c[g>>2]|0,h)|0;if(!(c[n>>2]|0)){i=o;return}g=(c[j>>2]|0)+18|0;a[g>>0]=(a[g>>0]|0)+1<<24>>24;g=l;h=(c[j>>2]|0)+444|0;d=g+100|0;do{a[g>>0]=a[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(d|0));g=(c[j>>2]|0)+444|0;d=g+100|0;do{b[g>>1]=0;g=g+2|0}while((g|0)<(d|0));Uh(c[j>>2]|0,c[n>>2]|0,m)|0;Sf(c[k>>2]|0,c[m>>2]|0);Sf(c[k>>2]|0,c[n>>2]|0);g=(c[j>>2]|0)+444|0;h=l;d=g+100|0;do{a[g>>0]=a[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(d|0));n=(c[j>>2]|0)+18|0;a[n>>0]=(a[n>>0]|0)+-1<<24>>24;i=o;return}function Pw(b){b=b|0;var d=0,f=0,g=0;g=i;i=i+16|0;d=g+4|0;f=g;c[d>>2]=b;c[f>>2]=c[(c[d>>2]|0)+8>>2];if(!(c[f>>2]|0)){b=Ch(c[d>>2]|0)|0;c[(c[d>>2]|0)+8>>2]=b;c[f>>2]=b;if(c[f>>2]|0)Yw(c[f>>2]|0,158)|0;if((c[(c[d>>2]|0)+416>>2]|0)==0?((e[(c[c[d>>2]>>2]|0)+60>>1]|0)&8|0)==0:0)a[(c[d>>2]|0)+23>>0]=1}i=g;return c[f>>2]|0}function Qw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;h=d+12|0;e=d+8|0;f=d+4|0;g=d;c[h>>2]=a;c[e>>2]=b;c[f>>2]=c[c[h>>2]>>2];c[g>>2]=c[(c[h>>2]|0)+8>>2];Vw(c[g>>2]|0,52,c[e>>2]|0,1,(c[c[(c[(c[f>>2]|0)+16>>2]|0)+(c[e>>2]<<4)+12>>2]>>2]|0)+1|0)|0;i=d;return}function Rw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;e=Vw(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[g>>2]|0,0)|0;i=f;return e|0}function Sw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+16|0;e=g+12|0;j=g+8|0;h=g+4|0;f=g;c[e>>2]=a;c[j>>2]=b;c[h>>2]=d;Uw(c[e>>2]|0,123,c[j>>2]|0,0,0,c[h>>2]|0,-1)|0;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[c[e>>2]>>2]|0)+20>>2]|0))break;Hh(c[e>>2]|0,c[f>>2]|0);c[f>>2]=(c[f>>2]|0)+1}i=g;return}function Tw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;d=Uw(c[h>>2]|0,97,0,c[g>>2]|0,0,c[f>>2]|0,0)|0;i=e;return d|0}function Uw(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 j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=i;i=i+32|0;n=k+28|0;r=k+24|0;q=k+20|0;p=k+16|0;o=k+12|0;m=k+8|0;l=k+4|0;j=k;c[n>>2]=a;c[r>>2]=b;c[q>>2]=d;c[p>>2]=e;c[o>>2]=f;c[m>>2]=g;c[l>>2]=h;c[j>>2]=Vw(c[n>>2]|0,c[r>>2]|0,c[q>>2]|0,c[p>>2]|0,c[o>>2]|0)|0;Ih(c[n>>2]|0,c[j>>2]|0,c[m>>2]|0,c[l>>2]|0);i=k;return c[j>>2]|0}function Vw(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;h=q+28|0;j=q+24|0;k=q+20|0;l=q+16|0;m=q+12|0;n=q+8|0;o=q+4|0;p=q;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=c[(c[j>>2]|0)+32>>2];d=c[j>>2]|0;if((c[(c[(c[j>>2]|0)+24>>2]|0)+88>>2]|0)<=(c[o>>2]|0)){c[h>>2]=Ww(d,c[k>>2]|0,c[l>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;p=c[h>>2]|0;i=q;return p|0}else{g=d+32|0;c[g>>2]=(c[g>>2]|0)+1;c[p>>2]=(c[(c[j>>2]|0)+4>>2]|0)+((c[o>>2]|0)*20|0);a[c[p>>2]>>0]=c[k>>2];a[(c[p>>2]|0)+3>>0]=0;c[(c[p>>2]|0)+4>>2]=c[l>>2];c[(c[p>>2]|0)+8>>2]=c[m>>2];c[(c[p>>2]|0)+12>>2]=c[n>>2];c[(c[p>>2]|0)+16>>2]=0;a[(c[p>>2]|0)+1>>0]=0;c[h>>2]=c[o>>2];p=c[h>>2]|0;i=q;return p|0}return 0}function Ww(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,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;if(Xw(c[h>>2]|0,1)|0){c[g>>2]=1;f=c[g>>2]|0;i=n;return f|0}else{c[g>>2]=Vw(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;f=c[g>>2]|0;i=n;return f|0}return 0}function Xw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;d=h+16|0;g=h+8|0;f=h+4|0;e=h;c[d>>2]=a;c[h+12>>2]=b;c[f>>2]=c[(c[d>>2]|0)+24>>2];if(c[(c[f>>2]|0)+88>>2]|0)b=c[(c[f>>2]|0)+88>>2]<<1;else b=51;c[e>>2]=b;c[g>>2]=Ew(c[c[f>>2]>>2]|0,c[(c[d>>2]|0)+4>>2]|0,(c[e>>2]|0)*20|0,0)|0;if(!(c[g>>2]|0)){g=c[g>>2]|0;g=(g|0)!=0;g=g?0:7;i=h;return g|0}e=$t(c[c[f>>2]>>2]|0,c[g>>2]|0)|0;c[(c[f>>2]|0)+92>>2]=e;c[(c[f>>2]|0)+88>>2]=((c[(c[f>>2]|0)+92>>2]|0)>>>0)/20|0;c[(c[d>>2]|0)+4>>2]=c[g>>2];g=c[g>>2]|0;g=(g|0)!=0;g=g?0:7;i=h;return g|0}function Yw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=Vw(c[f>>2]|0,c[e>>2]|0,0,0,0)|0;i=d;return a|0}function Zw(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;j=i;i=i+128|0;g=j+40|0;m=j+36|0;l=j+32|0;h=j+28|0;k=j;c[g>>2]=b;c[m>>2]=e;c[l>>2]=f;cg(k,c[g>>2]|0,j+44|0,70,c[(c[g>>2]|0)+88>>2]|0);a[k+25>>0]=1;dg(k,c[m>>2]|0,c[l>>2]|0);c[h>>2]=eg(k)|0;if((d[k+24>>0]|0|0)!=1){m=c[h>>2]|0;i=j;return m|0}jh(c[g>>2]|0);m=c[h>>2]|0;i=j;return m|0}function _w(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(c[c[g>>2]>>2]|0){c[h>>2]=Dh(c[c[e>>2]>>2]|0,c[c[g>>2]>>2]|0)|0;c[j>>2]=c[(c[(c[c[e>>2]>>2]|0)+16>>2]|0)+(c[h>>2]<<4)>>2]}else c[j>>2]=c[(c[g>>2]|0)+4>>2];j=zh(c[e>>2]|0,c[f>>2]|0,c[(c[g>>2]|0)+8>>2]|0,c[j>>2]|0)|0; -i=k;return j|0}function $w(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;d=h+12|0;e=h+8|0;f=h+4|0;c[e>>2]=a;c[f>>2]=b;if((If(c[f>>2]|0)|0)>6?0==(zd(c[f>>2]|0,28715,7)|0):0){b=c[e>>2]|0;c[g>>2]=c[f>>2];Ah(b,28723,g);c[d>>2]=1;b=c[d>>2]|0;i=h;return b|0}c[d>>2]=0;b=c[d>>2]|0;i=h;return b|0}function ax(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[g>>2]=b;c[h>>2]=e;c[j>>2]=f;f=c[g>>2]|0;if(c[(c[g>>2]|0)+416>>2]|0)f=c[f+416>>2]|0;c[k>>2]=f;bx(c[g>>2]|0,c[j>>2]|0);g=(c[k>>2]|0)+336|0;c[g>>2]=c[g>>2]|1<>2];k=(c[k>>2]|0)+20|0;a[k>>0]=d[k>>0]|0|c[h>>2];i=l;return}function bx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;h=g+12|0;d=g+8|0;f=g+4|0;e=g;c[h>>2]=a;c[d>>2]=b;b=c[h>>2]|0;if(c[(c[h>>2]|0)+416>>2]|0)b=c[b+416>>2]|0;c[f>>2]=b;c[e>>2]=c[c[f>>2]>>2];if((c[(c[f>>2]|0)+340>>2]&1<>2]|0)!=0|0){i=g;return}h=(c[f>>2]|0)+340|0;c[h>>2]=c[h>>2]|1<>2];c[(c[f>>2]|0)+344+(c[d>>2]<<2)>>2]=c[c[(c[(c[e>>2]|0)+16>>2]|0)+(c[d>>2]<<4)+12>>2]>>2];if((c[d>>2]|0)!=1){i=g;return}cx(c[f>>2]|0)|0;i=g;return}function cx(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;j=k;d=k+20|0;e=k+16|0;f=k+12|0;h=k+8|0;g=k+4|0;c[e>>2]=b;c[f>>2]=c[c[e>>2]>>2];if((c[(c[(c[f>>2]|0)+16>>2]|0)+16+4>>2]|0)==0?(a[(c[e>>2]|0)+453>>0]|0)==0:0){c[h>>2]=Xj(c[c[f>>2]>>2]|0,0,c[f>>2]|0,g,0,542)|0;if(c[h>>2]|0){Ah(c[e>>2]|0,28645,j);c[(c[e>>2]|0)+12>>2]=c[h>>2];c[d>>2]=1;j=c[d>>2]|0;i=k;return j|0}c[(c[(c[f>>2]|0)+16>>2]|0)+16+4>>2]=c[g>>2];if(7==(xi(c[g>>2]|0,c[(c[f>>2]|0)+72>>2]|0,-1,0)|0)){jh(c[f>>2]|0);c[d>>2]=1;j=c[d>>2]|0;i=k;return j|0}}c[d>>2]=0;j=c[d>>2]|0;i=k;return j|0}function dx(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+16|0;n=h+8|0;m=h+4|0;l=h+13|0;k=h+12|0;j=h;c[n>>2]=b;c[m>>2]=d;a[l>>0]=e;a[k>>0]=f;c[j>>2]=g;g=ix(c[n>>2]|0,c[m>>2]|0,a[l>>0]|0,a[k>>0]|0,c[j>>2]|0,0)|0;i=h;return g|0}function ex(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;m=o;e=o+32|0;f=o+28|0;g=o+24|0;l=o+20|0;n=o+16|0;h=o+12|0;k=o+8|0;j=o+4|0;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[l>>2]=Pw(c[e>>2]|0)|0;if(!(c[l>>2]|0)){i=o;return}c[h>>2]=Dh(c[c[e>>2]>>2]|0,c[(c[f>>2]|0)+64>>2]|0)|0;c[k>>2]=fx(c[e>>2]|0,c[f>>2]|0)|0;while(1){if(!(c[k>>2]|0))break;c[j>>2]=Dh(c[c[e>>2]>>2]|0,c[(c[k>>2]|0)+20>>2]|0)|0;Uw(c[l>>2]|0,127,c[j>>2]|0,0,0,c[c[k>>2]>>2]|0,0)|0;c[k>>2]=c[(c[k>>2]|0)+32>>2]}Uw(c[l>>2]|0,125,c[h>>2]|0,0,0,c[c[f>>2]>>2]|0,0)|0;d=c[c[e>>2]>>2]|0;c[m>>2]=c[g>>2];c[n>>2]=Bh(d,29077,m)|0;if(!(c[n>>2]|0)){i=o;return}Sw(c[l>>2]|0,c[h>>2]|0,c[n>>2]|0);d=gx(c[e>>2]|0,c[f>>2]|0)|0;c[n>>2]=d;if(!d){i=o;return}Sw(c[l>>2]|0,1,c[n>>2]|0);i=o;return}function fx(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;k=l+24|0;m=l+20|0;f=l+16|0;e=l+12|0;h=l+8|0;g=l+4|0;j=l;c[m>>2]=b;c[f>>2]=d;c[e>>2]=c[(c[(c[c[m>>2]>>2]|0)+16>>2]|0)+16+12>>2];c[h>>2]=0;if(a[(c[m>>2]|0)+442>>0]|0){c[k>>2]=0;m=c[k>>2]|0;i=l;return m|0}a:do if((c[e>>2]|0)!=(c[(c[f>>2]|0)+64>>2]|0)){c[g>>2]=c[(c[e>>2]|0)+40+8>>2];while(1){if(!(c[g>>2]|0))break a;c[j>>2]=c[(c[g>>2]|0)+8>>2];if((c[(c[j>>2]|0)+24>>2]|0)==(c[(c[f>>2]|0)+64>>2]|0)?0==(Td(c[(c[j>>2]|0)+4>>2]|0,c[c[f>>2]>>2]|0)|0):0){if(c[h>>2]|0)b=c[h>>2]|0;else b=c[(c[f>>2]|0)+60>>2]|0;c[(c[j>>2]|0)+32>>2]=b;c[h>>2]=c[j>>2]}c[g>>2]=c[c[g>>2]>>2]}}while(0);if(c[h>>2]|0)b=c[h>>2]|0;else b=c[(c[f>>2]|0)+60>>2]|0;c[k>>2]=b;m=c[k>>2]|0;i=l;return m|0}function gx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;j=m;d=m+28|0;e=m+24|0;h=m+20|0;l=m+16|0;g=m+12|0;f=m+8|0;k=m+4|0;c[d>>2]=a;c[e>>2]=b;c[l>>2]=0;c[g>>2]=c[(c[(c[c[d>>2]>>2]|0)+16>>2]|0)+16+12>>2];a:do if((c[(c[e>>2]|0)+64>>2]|0)!=(c[g>>2]|0)){c[f>>2]=c[c[d>>2]>>2];c[h>>2]=fx(c[d>>2]|0,c[e>>2]|0)|0;while(1){if(!(c[h>>2]|0))break a;if((c[(c[h>>2]|0)+20>>2]|0)==(c[g>>2]|0))c[l>>2]=hx(c[f>>2]|0,c[l>>2]|0,c[c[h>>2]>>2]|0)|0;c[h>>2]=c[(c[h>>2]|0)+32>>2]}}while(0);if(!(c[l>>2]|0)){l=c[l>>2]|0;i=m;return l|0}h=c[c[d>>2]>>2]|0;c[j>>2]=c[l>>2];c[k>>2]=Bh(h,29089,j)|0;Sf(c[c[d>>2]>>2]|0,c[l>>2]|0);c[l>>2]=c[k>>2];l=c[l>>2]|0;i=m;return l|0}function hx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;j=l+8|0;h=l;e=l+28|0;f=l+24|0;g=l+20|0;k=l+16|0;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;a=c[e>>2]|0;if(c[f>>2]|0){h=c[g>>2]|0;c[j>>2]=c[f>>2];c[j+4>>2]=h;c[k>>2]=Bh(a,29121,j)|0;Sf(c[e>>2]|0,c[f>>2]|0);k=c[k>>2]|0;i=l;return k|0}else{c[h>>2]=c[g>>2];c[k>>2]=Bh(a,29113,h)|0;k=c[k>>2]|0;i=l;return k|0}return 0}function ix(f,g,j,k,l,m){f=f|0;g=g|0;j=j|0;k=k|0;l=l|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,D=0,E=0;E=i;i=i+64|0;t=E;z=E+52|0;v=E+48|0;n=E+44|0;x=E+58|0;y=E+57|0;A=E+40|0;o=E+36|0;s=E+32|0;w=E+28|0;B=E+24|0;r=E+20|0;u=E+16|0;D=E+12|0;p=E+56|0;q=E+8|0;c[v>>2]=f;c[n>>2]=g;a[x>>0]=j;a[y>>0]=k;c[A>>2]=l;c[o>>2]=m;c[w>>2]=0;c[B>>2]=0;c[r>>2]=1;c[u>>2]=19266;c[D>>2]=0;if(!(c[n>>2]|0)){c[c[A>>2]>>2]=0;c[z>>2]=0;D=c[z>>2]|0;i=E;return D|0}while(1){l=d[c[n>>2]>>0]|0;c[s>>2]=l;if((l|0)!=156)break;c[n>>2]=c[(c[n>>2]|0)+12>>2]}if((c[s>>2]|0)==157)c[s>>2]=d[(c[n>>2]|0)+38>>0];if((c[s>>2]|0)==38){a[p>>0]=jx(c[(c[n>>2]|0)+8>>2]|0,0)|0;c[D>>2]=ix(c[v>>2]|0,c[(c[n>>2]|0)+12>>2]|0,a[x>>0]|0,a[p>>0]|0,c[A>>2]|0,c[o>>2]|0)|0;if(c[c[A>>2]>>2]|0){kx(c[c[A>>2]>>2]|0,a[p>>0]|0,1);lx(c[c[A>>2]>>2]|0,a[y>>0]|0,1)}c[z>>2]=c[D>>2];D=c[z>>2]|0;i=E;return D|0}do if((c[s>>2]|0)==155){if((d[c[(c[n>>2]|0)+12>>2]>>0]|0|0)!=132?(d[c[(c[n>>2]|0)+12>>2]>>0]|0|0)!=133:0)break;c[n>>2]=c[(c[n>>2]|0)+12>>2];c[s>>2]=d[c[n>>2]>>0];c[r>>2]=-1;c[u>>2]=29135}while(0);do if((c[s>>2]|0)==97|(c[s>>2]|0)==133|(c[s>>2]|0)==132){c[B>>2]=mx(c[v>>2]|0,c[o>>2]|0)|0;if(c[B>>2]|0){if(c[(c[n>>2]|0)+4>>2]&1024){v=c[B>>2]|0;u=c[(c[n>>2]|0)+8>>2]|0;w=c[r>>2]|0;w=rR(u|0,((u|0)<0)<<31>>31|0,w|0,((w|0)<0)<<31>>31|0)|0;eh(v,w,C)}else{l=c[v>>2]|0;g=c[(c[n>>2]|0)+8>>2]|0;c[t>>2]=c[u>>2];c[t+4>>2]=g;c[w>>2]=Bh(l,25552,t)|0;if(!(c[w>>2]|0)){n=43;break}Wh(c[B>>2]|0,-1,c[w>>2]|0,1,170)}if((c[s>>2]|0)==132|(c[s>>2]|0)==133?(d[y>>0]|0|0)==65:0)lx(c[B>>2]|0,67,1);else lx(c[B>>2]|0,a[y>>0]|0,1);if((e[(c[B>>2]|0)+8>>1]|0)&12){y=(c[B>>2]|0)+8|0;b[y>>1]=(e[y>>1]|0)&-3}if((d[x>>0]|0|0)!=1){c[D>>2]=Zt(c[B>>2]|0,d[x>>0]|0)|0;n=42}else n=42}else n=43}else{if((c[s>>2]|0)!=155){if((c[s>>2]|0)==101){c[B>>2]=mx(c[v>>2]|0,c[o>>2]|0)|0;if(!(c[B>>2]|0)){n=43;break}else{n=42;break}}if((c[s>>2]|0)!=134){n=42;break}c[B>>2]=mx(c[v>>2]|0,c[o>>2]|0)|0;if(!(c[B>>2]|0)){n=43;break}c[w>>2]=(c[(c[n>>2]|0)+8>>2]|0)+2;c[q>>2]=(If(c[w>>2]|0)|0)-1;y=c[B>>2]|0;n=ox(c[v>>2]|0,c[w>>2]|0,c[q>>2]|0)|0;dh(y,n,(c[q>>2]|0)/2|0,0,170)|0;n=42;break}w=0==(dx(c[v>>2]|0,c[(c[n>>2]|0)+12>>2]|0,a[x>>0]|0,a[y>>0]|0,B)|0);if(w&(c[B>>2]|0)!=0){nx(c[B>>2]|0)|0;n=c[B>>2]|0;do if(!((e[(c[B>>2]|0)+8>>1]|0)&8)){w=n;n=c[B>>2]|0;if((c[w>>2]|0)==0?(c[w+4>>2]|0)==-2147483648:0){h[n>>3]=9223372036854775808.0;b[(c[B>>2]|0)+8>>1]=(e[(c[B>>2]|0)+8>>1]|0)&-49664|8;break}else{v=n;v=fR(0,0,c[v>>2]|0,c[v+4>>2]|0)|0;w=c[B>>2]|0;c[w>>2]=v;c[w+4>>2]=C;break}}else h[c[B>>2]>>3]=-+h[n>>3];while(0);lx(c[B>>2]|0,a[y>>0]|0,a[x>>0]|0);n=42}else n=42}while(0);if((n|0)==42){c[c[A>>2]>>2]=c[B>>2];c[z>>2]=c[D>>2];D=c[z>>2]|0;i=E;return D|0}else if((n|0)==43){jh(c[v>>2]|0);Sf(c[v>>2]|0,c[w>>2]|0);$g(c[B>>2]|0);c[z>>2]=7;D=c[z>>2]|0;i=E;return D|0}return 0}function jx(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;f=o+21|0;g=o+16|0;h=o+12|0;k=o+8|0;j=o+20|0;m=o+4|0;l=o;c[g>>2]=b;c[h>>2]=e;c[k>>2]=0;a[j>>0]=67;c[m>>2]=0;if(!(c[g>>2]|0)){a[f>>0]=a[j>>0]|0;n=a[f>>0]|0;i=o;return n|0}a:while(1){if(!(a[c[g>>2]>>0]|0))break;c[k>>2]=(c[k>>2]<<8)+(d[18477+(a[c[g>>2]>>0]&255)>>0]|0);c[g>>2]=(c[g>>2]|0)+1;if((c[k>>2]|0)==1667785074){a[j>>0]=66;c[m>>2]=c[g>>2];continue}if((c[k>>2]|0)==1668050786){a[j>>0]=66;continue}if((c[k>>2]|0)==1952807028){a[j>>0]=66;continue}do if((c[k>>2]|0)==1651273570){if((a[j>>0]|0)!=67?(a[j>>0]|0)!=69:0)break;a[j>>0]=65;if((a[c[g>>2]>>0]|0)!=40)continue a;c[m>>2]=c[g>>2];continue a}while(0);if((c[k>>2]|0)==1919246700?(a[j>>0]|0)==67:0){a[j>>0]=69;continue}if((c[k>>2]|0)==1718382433?(a[j>>0]|0)==67:0){a[j>>0]=69;continue}if((c[k>>2]|0)==1685026146?(a[j>>0]|0)==67:0){a[j>>0]=69;continue}if((c[k>>2]&16777215|0)==6909556){n=25;break}}if((n|0)==25)a[j>>0]=68;b:do if((c[h>>2]|0)!=0?(a[c[h>>2]>>0]=1,(a[j>>0]|0)<67):0){if(!(c[m>>2]|0)){a[c[h>>2]>>0]=5;break}while(1){if(!(a[c[m>>2]>>0]|0))break b;if(d[19267+(d[c[m>>2]>>0]|0)>>0]&4)break;c[m>>2]=(c[m>>2]|0)+1}c[l>>2]=0;Li(c[m>>2]|0,l)|0;n=((c[l>>2]|0)/4|0)+1|0;c[l>>2]=n;c[l>>2]=(c[l>>2]|0)>255?255:n;a[c[h>>2]>>0]=c[l>>2]}while(0);a[f>>0]=a[j>>0]|0;n=a[f>>0]|0;i=o;return n|0}function kx(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;m=i;i=i+16|0;k=m;j=m+5|0;l=m+4|0;c[k>>2]=f;a[j>>0]=g;a[l>>0]=h;if((e[(c[k>>2]|0)+8>>1]|0)&1){i=m;return}switch(d[j>>0]|0|0){case 65:{j=c[k>>2]|0;if(!((e[(c[k>>2]|0)+8>>1]|0)&16)){lx(j,66,a[l>>0]|0);b[(c[k>>2]|0)+8>>1]=(e[(c[k>>2]|0)+8>>1]|0)&-49664|16;i=m;return}else{l=j+8|0;b[l>>1]=(e[l>>1]|0)&-33264;i=m;return}}case 67:{nx(c[k>>2]|0)|0;i=m;return}case 68:{wx(c[k>>2]|0)|0;i=m;return}case 69:{xx(c[k>>2]|0)|0;i=m;return}default:{f=(c[k>>2]|0)+8|0;b[f>>1]=e[f>>1]|0|((e[(c[k>>2]|0)+8>>1]|0)&16)>>3;lx(c[k>>2]|0,66,a[l>>0]|0);l=(c[k>>2]|0)+8|0;b[l>>1]=(e[l>>1]|0)&-16413;i=m;return}}}function lx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f;h=f+5|0;g=f+4|0;c[j>>2]=b;a[h>>0]=d;a[g>>0]=e;rx(c[j>>2]|0,a[h>>0]|0,a[g>>0]|0);i=f;return}function mx(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d+4|0;c[e>>2]=a;c[d>>2]=b;b=Vh(c[e>>2]|0)|0;i=d;return b|0}function nx(d){d=d|0;var f=0,g=0,j=0,k=0.0;g=i;i=i+16|0;f=g;c[f>>2]=d;do if(!((e[(c[f>>2]|0)+8>>1]|0)&13)){j=0==(Hi(c[(c[f>>2]|0)+16>>2]|0,c[f>>2]|0,c[(c[f>>2]|0)+12>>2]|0,a[(c[f>>2]|0)+10>>0]|0)|0);d=c[f>>2]|0;if(j){b[(c[f>>2]|0)+8>>1]=(e[d+8>>1]|0)&-49664|4;break}else{k=+Yg(d);h[c[f>>2]>>3]=k;b[(c[f>>2]|0)+8>>1]=(e[(c[f>>2]|0)+8>>1]|0)&-49664|8;px(c[f>>2]|0);break}}while(0);j=(c[f>>2]|0)+8|0;b[j>>1]=(e[j>>1]|0)&-19;i=g;return 0}function ox(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;l=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[l>>2]=b;c[f>>2]=d;c[g>>2]=e;d=((c[g>>2]|0)/2|0)+1|0;c[j>>2]=Fw(c[l>>2]|0,d,((d|0)<0)<<31>>31)|0;c[g>>2]=(c[g>>2]|0)+-1;if(!(c[j>>2]|0)){l=c[j>>2]|0;i=k;return l|0}c[h>>2]=0;while(1){b=c[h>>2]|0;if((c[h>>2]|0)>=(c[g>>2]|0))break;l=((Gi(a[(c[f>>2]|0)+b>>0]|0)|0)&255)<<4;l=(l|(Gi(a[(c[f>>2]|0)+((c[h>>2]|0)+1)>>0]|0)|0)&255)&255;a[(c[j>>2]|0)+((c[h>>2]|0)/2|0)>>0]=l;c[h>>2]=(c[h>>2]|0)+2}a[(c[j>>2]|0)+((b|0)/2|0)>>0]=0;l=c[j>>2]|0;i=k;return l|0}function px(a){a=a|0;var d=0,f=0,g=0,j=0,k=0,l=0,m=0;g=i;i=i+16|0;d=g+8|0;f=g;c[d>>2]=a;k=qx(+h[c[d>>2]>>3])|0;m=f;c[m>>2]=k;c[m+4>>2]=C;m=f;k=f;l=c[k+4>>2]|0;a=f;j=c[a+4>>2]|0;if(!(+h[c[d>>2]>>3]==+((c[m>>2]|0)>>>0)+4294967296.0*+(c[m+4>>2]|0)&((l|0)>-2147483648|(l|0)==-2147483648&(c[k>>2]|0)>>>0>0)&((j|0)<2147483647|(j|0)==2147483647&(c[a>>2]|0)>>>0<4294967295))){i=g;return}k=f;l=c[k+4>>2]|0;m=c[d>>2]|0;c[m>>2]=c[k>>2];c[m+4>>2]=l;b[(c[d>>2]|0)+8>>1]=(e[(c[d>>2]|0)+8>>1]|0)&-49664|4;i=g;return}function qx(a){a=+a;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;b=e+8|0;d=e;h[d>>3]=a;do if(!(+h[d>>3]<=-9223372036854775808.0))if(+h[d>>3]>=9223372036854775808.0){d=b;c[d>>2]=-1;c[d+4>>2]=2147483647;break}else{a=+h[d>>3];f=+N(a)>=1.0?a>0.0?~~+$(+M(a/4294967296.0),4294967295.0)>>>0:~~+Z((a-+(~~a>>>0))/4294967296.0)>>>0:0;d=b;c[d>>2]=~~a>>>0;c[d+4>>2]=f;break}else{f=b;c[f>>2]=0;c[f+4>>2]=-2147483648}while(0);f=b;C=c[f+4>>2]|0;i=e;return c[f>>2]|0}function rx(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;h=l+5|0;j=l+4|0;c[k>>2]=d;a[h>>0]=f;a[j>>0]=g;if((a[h>>0]|0)<67){if((a[h>>0]|0)!=66){i=l;return}if(0==(e[(c[k>>2]|0)+8>>1]&2|0)?(e[(c[k>>2]|0)+8>>1]&12|0)!=0:0)sx(c[k>>2]|0,a[j>>0]|0,1)|0;k=(c[k>>2]|0)+8|0;b[k>>1]=e[k>>1]&-13;i=l;return}if(e[(c[k>>2]|0)+8>>1]&4){i=l;return}h=c[k>>2]|0;if(e[(c[k>>2]|0)+8>>1]&8){px(h);i=l;return}if(!(e[h+8>>1]&2)){i=l;return}xh(c[k>>2]|0,1);i=l;return}function sx(f,g,j){f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;q=r+8|0;p=r;k=r+28|0;l=r+24|0;m=r+33|0;n=r+32|0;o=r+20|0;c[l>>2]=f;a[m>>0]=g;a[n>>0]=j;c[o>>2]=e[(c[l>>2]|0)+8>>1];c[r+16>>2]=32;if(tx(c[l>>2]|0,32)|0){c[k>>2]=7;q=c[k>>2]|0;i=r;return q|0}j=c[(c[l>>2]|0)+16>>2]|0;g=c[l>>2]|0;if(c[o>>2]&4){f=g;o=c[f+4>>2]|0;q=p;c[q>>2]=c[f>>2];c[q+4>>2]=o;Qd(32,j,29137,p)|0}else{h[q>>3]=+h[g>>3];Qd(32,j,29142,q)|0}q=If(c[(c[l>>2]|0)+16>>2]|0)|0;c[(c[l>>2]|0)+12>>2]=q;a[(c[l>>2]|0)+10>>0]=1;q=(c[l>>2]|0)+8|0;b[q>>1]=e[q>>1]|514;if(a[n>>0]|0){q=(c[l>>2]|0)+8|0;b[q>>1]=e[q>>1]&-13}Zt(c[l>>2]|0,d[m>>0]|0)|0;c[k>>2]=0;q=c[k>>2]|0;i=r;return q|0}function tx(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[g>>2]=a;c[h>>2]=d;a=c[g>>2]|0;if((c[(c[g>>2]|0)+24>>2]|0)<(c[h>>2]|0)){c[f>>2]=ux(a,c[h>>2]|0,0)|0;h=c[f>>2]|0;i=j;return h|0}else{c[(c[g>>2]|0)+16>>2]=c[a+20>>2];h=(c[g>>2]|0)+8|0;b[h>>1]=(e[h>>1]|0)&13;c[f>>2]=0;h=c[f>>2]|0;i=j;return h|0}return 0}function ux(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;h=l+12|0;j=l+8|0;g=l+4|0;k=l;c[j>>2]=a;c[g>>2]=d;c[k>>2]=f;do if((c[(c[j>>2]|0)+24>>2]|0)<(c[g>>2]|0)){if((c[g>>2]|0)<32)c[g>>2]=32;if(((c[k>>2]|0)!=0?(c[(c[j>>2]|0)+24>>2]|0)>0:0)?(c[(c[j>>2]|0)+16>>2]|0)==(c[(c[j>>2]|0)+20>>2]|0):0){a=c[g>>2]|0;a=vx(c[(c[j>>2]|0)+32>>2]|0,c[(c[j>>2]|0)+16>>2]|0,a,((a|0)<0)<<31>>31)|0;c[(c[j>>2]|0)+20>>2]=a;c[(c[j>>2]|0)+16>>2]=a;c[k>>2]=0}else{if((c[(c[j>>2]|0)+24>>2]|0)>0)Sf(c[(c[j>>2]|0)+32>>2]|0,c[(c[j>>2]|0)+20>>2]|0);a=c[g>>2]|0;a=yh(c[(c[j>>2]|0)+32>>2]|0,a,((a|0)<0)<<31>>31)|0;c[(c[j>>2]|0)+20>>2]=a}g=c[j>>2]|0;if(c[(c[j>>2]|0)+20>>2]|0){a=$t(c[g+32>>2]|0,c[(c[j>>2]|0)+20>>2]|0)|0;c[(c[j>>2]|0)+24>>2]=a;break}fh(g);c[(c[j>>2]|0)+16>>2]=0;c[(c[j>>2]|0)+24>>2]=0;c[h>>2]=7;k=c[h>>2]|0;i=l;return k|0}while(0);if(((c[k>>2]|0)!=0?(c[(c[j>>2]|0)+16>>2]|0)!=0:0)?(c[(c[j>>2]|0)+16>>2]|0)!=(c[(c[j>>2]|0)+20>>2]|0):0)iR(c[(c[j>>2]|0)+20>>2]|0,c[(c[j>>2]|0)+16>>2]|0,c[(c[j>>2]|0)+12>>2]|0)|0;if((e[(c[j>>2]|0)+8>>1]|0)&1024)Qb[c[(c[j>>2]|0)+36>>2]&255](c[(c[j>>2]|0)+16>>2]|0);c[(c[j>>2]|0)+16>>2]=c[(c[j>>2]|0)+20>>2];k=(c[j>>2]|0)+8|0;b[k>>1]=(e[k>>1]|0)&-7169;c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}function vx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;f=j+16|0;g=j+12|0;k=j;h=j+8|0;c[f>>2]=a;c[g>>2]=b;b=k;c[b>>2]=d;c[b+4>>2]=e;b=k;c[h>>2]=Ew(c[f>>2]|0,c[g>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;if(c[h>>2]|0){k=c[h>>2]|0;i=j;return k|0}Sf(c[f>>2]|0,c[g>>2]|0);k=c[h>>2]|0;i=j;return k|0}function wx(a){a=a|0;var d=0,f=0,g=0;d=i;i=i+16|0;f=d;c[f>>2]=a;g=Zg(c[f>>2]|0)|0;a=c[f>>2]|0;c[a>>2]=g;c[a+4>>2]=C;b[(c[f>>2]|0)+8>>1]=(e[(c[f>>2]|0)+8>>1]|0)&-49664|4;i=d;return 0}function xx(a){a=a|0;var d=0,f=0,g=0.0;d=i;i=i+16|0;f=d;c[f>>2]=a;g=+Yg(c[f>>2]|0);h[c[f>>2]>>3]=g;b[(c[f>>2]|0)+8>>1]=(e[(c[f>>2]|0)+8>>1]|0)&-49664|8;i=d;return 0}function yx(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;f=k+12|0;g=k+8|0;h=k+4|0;c[g>>2]=b;c[h>>2]=e;if((((a[(c[c[g>>2]>>2]|0)+140+5>>0]|0)==0?(d[(c[g>>2]|0)+18>>0]|0)==0:0)?(c[(c[c[g>>2]>>2]|0)+24>>2]&2048|0)==0:0)?0==(zd(c[h>>2]|0,28715,7)|0):0){e=c[g>>2]|0;c[j>>2]=c[h>>2];Ah(e,31646,j);c[f>>2]=1;e=c[f>>2]|0;i=k;return e|0}c[f>>2]=0;e=c[f>>2]|0;i=k;return e|0}function zx(a,f){a=a|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;g=r;h=r+36|0;j=r+32|0;k=r+28|0;p=r+24|0;o=r+20|0;n=r+16|0;m=r+12|0;l=r+8|0;q=r+4|0;c[j>>2]=a;c[k>>2]=f;c[n>>2]=0;c[l>>2]=c[c[j>>2]>>2];if(Fx(c[j>>2]|0,c[k>>2]|0)|0){c[h>>2]=1;q=c[h>>2]|0;i=r;return q|0}if(d[(c[k>>2]|0)+42>>0]&16){c[h>>2]=0;q=c[h>>2]|0;i=r;return q|0}if((b[(c[k>>2]|0)+34>>1]|0)>0){c[h>>2]=0;q=c[h>>2]|0;i=r;return q|0}if((b[(c[k>>2]|0)+34>>1]|0)<0){q=c[j>>2]|0;c[g>>2]=c[c[k>>2]>>2];Ah(q,29854,g);c[h>>2]=1;q=c[h>>2]|0;i=r;return q|0}a=c[l>>2]|0;do if(c[(c[k>>2]|0)+24>>2]|0){q=a+248|0;c[q>>2]=(c[q>>2]|0)+1;Gx(c[j>>2]|0,c[(c[k>>2]|0)+24>>2]|0,(c[k>>2]|0)+34|0,(c[k>>2]|0)+4|0)|0;q=(c[l>>2]|0)+248|0;c[q>>2]=(c[q>>2]|0)+-1}else{c[o>>2]=Hx(a,c[(c[k>>2]|0)+12>>2]|0,0)|0;if(!(c[o>>2]|0)){c[n>>2]=(c[n>>2]|0)+1;break}c[m>>2]=c[(c[j>>2]|0)+72>>2];Ix(c[j>>2]|0,c[(c[o>>2]|0)+32>>2]|0);b[(c[k>>2]|0)+34>>1]=-1;g=(c[l>>2]|0)+248|0;c[g>>2]=(c[g>>2]|0)+1;c[q>>2]=c[(c[l>>2]|0)+288>>2];c[(c[l>>2]|0)+288>>2]=0;c[p>>2]=Jx(c[j>>2]|0,c[o>>2]|0)|0;c[(c[l>>2]|0)+288>>2]=c[q>>2];q=(c[l>>2]|0)+248|0;c[q>>2]=(c[q>>2]|0)+-1;c[(c[j>>2]|0)+72>>2]=c[m>>2];if(c[p>>2]|0){b[(c[k>>2]|0)+34>>1]=b[(c[p>>2]|0)+34>>1]|0;c[(c[k>>2]|0)+4>>2]=c[(c[p>>2]|0)+4>>2];b[(c[p>>2]|0)+34>>1]=0;c[(c[p>>2]|0)+4>>2]=0;Qf(c[l>>2]|0,c[p>>2]|0)}else{b[(c[k>>2]|0)+34>>1]=0;c[n>>2]=(c[n>>2]|0)+1}Wu(c[l>>2]|0,c[o>>2]|0)}while(0);q=(c[(c[k>>2]|0)+64>>2]|0)+78|0;b[q>>1]=e[q>>1]|2;c[h>>2]=c[n>>2];q=c[h>>2]|0;i=r;return q|0}function Ax(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+8|0;g=f+4|0;e=f;c[d>>2]=a;c[g>>2]=b;c[e>>2]=c[(c[g>>2]|0)+56>>2];while(1){if(!(c[e>>2]|0)){d=5;break}if((c[c[e>>2]>>2]|0)==(c[d>>2]|0)){d=5;break}c[e>>2]=c[(c[e>>2]|0)+24>>2]}if((d|0)==5){i=f;return c[e>>2]|0}return 0}function Bx(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;f=e+4|0;d=e;c[f>>2]=b;b=c[f>>2]|0;if(c[(c[f>>2]|0)+416>>2]|0)b=c[b+416>>2]|0;c[d>>2]=b;a[(c[d>>2]|0)+21>>0]=1;i=e;return}function Cx(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;k=j+16|0;e=j+12|0;h=j+8|0;f=j+4|0;g=j;c[k>>2]=a;c[e>>2]=b;c[h>>2]=0;c[f>>2]=c[k>>2];if((c[e>>2]|0)>=0)c[g>>2]=(c[f>>2]|0)+(c[e>>2]|0);else c[g>>2]=-1;while(1){if(!(d[c[f>>2]>>0]|0)){e=10;break}if((c[f>>2]|0)>>>0>=(c[g>>2]|0)>>>0){e=10;break}k=c[f>>2]|0;c[f>>2]=k+1;a:do if((d[k>>0]|0|0)>=192)while(1){if(((d[c[f>>2]>>0]|0)&192|0)!=128)break a;c[f>>2]=(c[f>>2]|0)+1}while(0);c[h>>2]=(c[h>>2]|0)+1}if((e|0)==10){i=j;return c[h>>2]|0}return 0}function Dx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;d=g+12|0;h=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[h>>2]=b;c[f>>2]=0;c[e>>2]=Ex(c[h>>2]|0)|0;while(1){if(!(c[e>>2]|0))break;c[f>>2]=hx(c[c[d>>2]>>2]|0,c[f>>2]|0,c[c[c[e>>2]>>2]>>2]|0)|0;c[e>>2]=c[(c[e>>2]|0)+12>>2]}i=g;return c[f>>2]|0}function Ex(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=nj((c[(c[d>>2]|0)+64>>2]|0)+56|0,c[c[d>>2]>>2]|0)|0;i=b;return a|0}function Fx(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;m=q+8|0;l=q;e=q+44|0;f=q+40|0;g=q+36|0;h=q+32|0;o=q+28|0;j=q+24|0;k=q+20|0;p=q+16|0;n=q+12|0;c[f>>2]=a;c[g>>2]=b;c[h>>2]=c[c[f>>2]>>2];if(((d[(c[g>>2]|0)+42>>0]|0)&16|0)!=0?(Ax(c[h>>2]|0,c[g>>2]|0)|0)==0:0){c[o>>2]=c[c[(c[g>>2]|0)+52>>2]>>2];c[j>>2]=nj((c[h>>2]|0)+312|0,c[o>>2]|0)|0;if(c[j>>2]|0){c[n>>2]=0;c[k>>2]=oz(c[h>>2]|0,c[g>>2]|0,c[j>>2]|0,c[(c[c[j>>2]>>2]|0)+8>>2]|0,n)|0;if(c[k>>2]|0){p=c[f>>2]|0;c[m>>2]=c[n>>2];Ah(p,19255,m)}Sf(c[h>>2]|0,c[n>>2]|0)}else{c[p>>2]=c[c[(c[g>>2]|0)+52>>2]>>2];o=c[f>>2]|0;c[l>>2]=c[p>>2];Ah(o,31494,l);c[k>>2]=1}c[e>>2]=c[k>>2];p=c[e>>2]|0;i=q;return p|0}c[e>>2]=0;p=c[e>>2]|0;i=q;return p|0}function Gx(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var 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;D=i;i=i+112|0;u=D+8|0;t=D;w=D+104|0;E=D+100|0;j=D+96|0;x=D+92|0;y=D+88|0;A=D+84|0;B=D+80|0;C=D+76|0;k=D+72|0;z=D+68|0;q=D+64|0;n=D+60|0;p=D+56|0;v=D+52|0;o=D+48|0;l=D+32|0;r=D+28|0;s=D+24|0;m=D+20|0;c[E>>2]=e;c[j>>2]=f;c[x>>2]=g;c[y>>2]=h;c[A>>2]=c[c[E>>2]>>2];uj(l);if(c[j>>2]|0){c[n>>2]=c[c[j>>2]>>2];c[z>>2]=ph(c[A>>2]|0,(c[n>>2]|0)*24|0,0)|0}else{c[n>>2]=0;c[z>>2]=0}b[c[x>>2]>>1]=c[n>>2];c[c[y>>2]>>2]=c[z>>2];c[B>>2]=0;c[q>>2]=c[z>>2];while(1){if((c[B>>2]|0)>=(c[n>>2]|0))break;if(!((a[(c[A>>2]|0)+65>>0]|0)!=0^1))break;c[p>>2]=Tx(c[(c[(c[j>>2]|0)+4>>2]|0)+((c[B>>2]|0)*20|0)>>2]|0)|0;E=c[(c[(c[j>>2]|0)+4>>2]|0)+((c[B>>2]|0)*20|0)+4>>2]|0;c[v>>2]=E;do if(!E){c[r>>2]=c[p>>2];while(1){f=c[r>>2]|0;if((d[c[r>>2]>>0]|0)!=122)break;c[r>>2]=c[f+16>>2]}if((d[f>>0]|0)==152?(c[(c[r>>2]|0)+44>>2]|0)!=0:0){c[m>>2]=b[(c[r>>2]|0)+32>>1];c[s>>2]=c[(c[r>>2]|0)+44>>2];if((c[m>>2]|0)<0)c[m>>2]=b[(c[s>>2]|0)+32>>1];if((c[m>>2]|0)>=0)f=c[(c[(c[s>>2]|0)+4>>2]|0)+((c[m>>2]|0)*24|0)>>2]|0;else f=25592;c[v>>2]=f;break}if((d[c[r>>2]>>0]|0)==27){c[v>>2]=c[(c[r>>2]|0)+8>>2];break}else{c[v>>2]=c[(c[(c[j>>2]|0)+4>>2]|0)+((c[B>>2]|0)*20|0)+8>>2];break}}while(0);E=c[A>>2]|0;c[t>>2]=c[v>>2];c[v>>2]=Bh(E,19255,t)|0;c[k>>2]=0;while(1){if(c[v>>2]|0)e=(nj(l,c[v>>2]|0)|0)!=0;else e=0;f=c[v>>2]|0;if(!e)break;c[o>>2]=If(f)|0;if((c[o>>2]|0)>0){c[C>>2]=(c[o>>2]|0)-1;while(1){if((c[C>>2]|0)<=0)break;if(!(d[19267+(d[(c[v>>2]|0)+(c[C>>2]|0)>>0]|0)>>0]&4))break;c[C>>2]=(c[C>>2]|0)+-1}if((a[(c[v>>2]|0)+(c[C>>2]|0)>>0]|0)==58)c[o>>2]=c[C>>2]}E=c[A>>2]|0;e=c[o>>2]|0;h=c[v>>2]|0;g=(c[k>>2]|0)+1|0;c[k>>2]=g;c[u>>2]=e;c[u+4>>2]=h;c[u+8>>2]=g;c[v>>2]=Bh(E,31486,u)|0;if((c[k>>2]|0)>>>0<=3)continue;Sd(4,k)}c[c[q>>2]>>2]=f;if((c[v>>2]|0)!=0?(E=Oj(l,c[v>>2]|0,c[q>>2]|0)|0,(E|0)==(c[q>>2]|0)):0)jh(c[A>>2]|0);c[B>>2]=(c[B>>2]|0)+1;c[q>>2]=(c[q>>2]|0)+24}vj(l);if(!(a[(c[A>>2]|0)+65>>0]|0)){c[w>>2]=0;E=c[w>>2]|0;i=D;return E|0}c[C>>2]=0;while(1){f=c[A>>2]|0;if((c[C>>2]|0)>=(c[B>>2]|0))break;Sf(f,c[(c[z>>2]|0)+((c[C>>2]|0)*24|0)>>2]|0);c[C>>2]=(c[C>>2]|0)+1}Sf(f,c[z>>2]|0);c[c[y>>2]>>2]=0;b[c[x>>2]>>1]=0;c[w>>2]=7;E=c[w>>2]|0;i=D;return E|0}function Hx(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;h=o+20|0;j=o+16|0;k=o+12|0;l=o+8|0;m=o+4|0;n=o;c[j>>2]=d;c[k>>2]=f;c[l>>2]=g;if(!(c[k>>2]|0)){c[h>>2]=0;n=c[h>>2]|0;i=o;return n|0}c[m>>2]=Fw(c[j>>2]|0,72,0)|0;if(!(c[m>>2]|0)){c[h>>2]=0;n=c[h>>2]|0;i=o;return n|0}f=vy(c[j>>2]|0,c[c[k>>2]>>2]|0,c[l>>2]|0)|0;c[c[m>>2]>>2]=f;f=lz(c[j>>2]|0,c[(c[k>>2]|0)+32>>2]|0,c[l>>2]|0)|0;c[(c[m>>2]|0)+32>>2]=f;f=ny(c[j>>2]|0,c[(c[k>>2]|0)+36>>2]|0,c[l>>2]|0)|0;c[(c[m>>2]|0)+36>>2]=f;f=vy(c[j>>2]|0,c[(c[k>>2]|0)+40>>2]|0,c[l>>2]|0)|0;c[(c[m>>2]|0)+40>>2]=f;f=ny(c[j>>2]|0,c[(c[k>>2]|0)+44>>2]|0,c[l>>2]|0)|0;c[(c[m>>2]|0)+44>>2]=f;f=vy(c[j>>2]|0,c[(c[k>>2]|0)+48>>2]|0,c[l>>2]|0)|0;c[(c[m>>2]|0)+48>>2]=f;a[(c[m>>2]|0)+4>>0]=a[(c[k>>2]|0)+4>>0]|0;f=Hx(c[j>>2]|0,c[(c[k>>2]|0)+52>>2]|0,c[l>>2]|0)|0;c[n>>2]=f;c[(c[m>>2]|0)+52>>2]=f;if(c[n>>2]|0)c[(c[n>>2]|0)+56>>2]=c[m>>2];c[(c[m>>2]|0)+56>>2]=0;g=ny(c[j>>2]|0,c[(c[k>>2]|0)+60>>2]|0,c[l>>2]|0)|0;c[(c[m>>2]|0)+60>>2]=g;g=ny(c[j>>2]|0,c[(c[k>>2]|0)+64>>2]|0,c[l>>2]|0)|0;c[(c[m>>2]|0)+64>>2]=g;c[(c[m>>2]|0)+8>>2]=0;c[(c[m>>2]|0)+12>>2]=0;b[(c[m>>2]|0)+6>>1]=(e[(c[k>>2]|0)+6>>1]|0)&-17;c[(c[m>>2]|0)+16>>2]=-1;c[(c[m>>2]|0)+16+4>>2]=-1;g=(c[k>>2]|0)+24|0;f=c[g+4>>2]|0;n=(c[m>>2]|0)+24|0;c[n>>2]=c[g>>2];c[n+4>>2]=f;n=mz(c[j>>2]|0,c[(c[k>>2]|0)+68>>2]|0)|0;c[(c[m>>2]|0)+68>>2]=n;c[h>>2]=c[m>>2];n=c[h>>2]|0;i=o;return n|0}function Ix(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=h;return}c[f>>2]=0;c[g>>2]=(c[e>>2]|0)+8;while(1){if((c[f>>2]|0)>=(c[c[e>>2]>>2]|0)){d=8;break}if((c[(c[g>>2]|0)+44>>2]|0)>=0){d=8;break}b=(c[d>>2]|0)+72|0;a=c[b>>2]|0;c[b>>2]=a+1;c[(c[g>>2]|0)+44>>2]=a;if(c[(c[g>>2]|0)+20>>2]|0)Ix(c[d>>2]|0,c[(c[(c[g>>2]|0)+20>>2]|0)+32>>2]|0);c[f>>2]=(c[f>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+72}if((d|0)==8){i=h;return}}function Jx(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;k=m+8|0;j=m+4|0;l=m;c[g>>2]=d;c[h>>2]=e;c[j>>2]=c[c[g>>2]>>2];c[l>>2]=c[(c[j>>2]|0)+24>>2];e=(c[j>>2]|0)+24|0;c[e>>2]=c[e>>2]&-5;e=(c[j>>2]|0)+24|0;c[e>>2]=c[e>>2]|64;Kx(c[g>>2]|0,c[h>>2]|0,0);if(c[(c[g>>2]|0)+68>>2]|0){c[f>>2]=0;l=c[f>>2]|0;i=m;return l|0}while(1){if(!(c[(c[h>>2]|0)+52>>2]|0))break;c[h>>2]=c[(c[h>>2]|0)+52>>2]}c[(c[j>>2]|0)+24>>2]=c[l>>2];c[k>>2]=ph(c[j>>2]|0,72,0)|0;if(!(c[k>>2]|0)){c[f>>2]=0;l=c[f>>2]|0;i=m;return l|0}b[(c[k>>2]|0)+36>>1]=1;c[c[k>>2]>>2]=0;b[(c[k>>2]|0)+38>>1]=200;Gx(c[g>>2]|0,c[c[h>>2]>>2]|0,(c[k>>2]|0)+34|0,(c[k>>2]|0)+4|0)|0;Lx(c[g>>2]|0,c[k>>2]|0,c[h>>2]|0);b[(c[k>>2]|0)+32>>1]=-1;if(a[(c[j>>2]|0)+65>>0]|0){Qf(c[j>>2]|0,c[k>>2]|0);c[f>>2]=0;l=c[f>>2]|0;i=m;return l|0}else{c[f>>2]=c[k>>2];l=c[f>>2]|0;i=m;return l|0}return 0}function Kx(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[h>>2]=b;c[j>>2]=f;c[k>>2]=g;if(!(c[j>>2]|0)){i=m;return}c[l>>2]=c[c[h>>2]>>2];if(a[(c[l>>2]|0)+65>>0]|0){i=m;return}if(e[(c[j>>2]|0)+6>>1]&64){i=m;return}Ux(c[h>>2]|0,c[j>>2]|0);if(c[(c[h>>2]|0)+68>>2]|0){i=m;return}if(d[(c[l>>2]|0)+65>>0]|0){i=m;return}Vx(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0);if(c[(c[h>>2]|0)+68>>2]|0){i=m;return}if(d[(c[l>>2]|0)+65>>0]|0){i=m;return}Wx(c[h>>2]|0,c[j>>2]|0);i=m;return}function Lx(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+80|0;h=t+76|0;j=t+72|0;k=t+68|0;m=t+64|0;r=t+32|0;p=t+24|0;q=t+20|0;n=t+16|0;o=t+12|0;l=t+8|0;s=t;c[h>>2]=e;c[j>>2]=f;c[k>>2]=g;c[m>>2]=c[c[h>>2]>>2];f=s;c[f>>2]=0;c[f+4>>2]=0;if(a[(c[m>>2]|0)+65>>0]|0){i=t;return}c[r>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[r+12>>2]=0;c[r+16>>2]=0;c[r+20>>2]=0;c[r+24>>2]=0;c[r+28>>2]=0;c[r+4>>2]=c[(c[k>>2]|0)+32>>2];c[l>>2]=c[(c[c[k>>2]>>2]|0)+4>>2];c[n>>2]=0;c[p>>2]=c[(c[j>>2]|0)+4>>2];while(1){if((c[n>>2]|0)>=(b[(c[j>>2]|0)+34>>1]|0))break;c[o>>2]=c[(c[l>>2]|0)+((c[n>>2]|0)*20|0)>>2];if(!(c[(c[p>>2]|0)+12>>2]|0)){f=c[m>>2]|0;f=nh(f,Mx(r,c[o>>2]|0,(c[p>>2]|0)+22|0)|0)|0;c[(c[p>>2]|0)+12>>2]=f}g=s;g=gR(c[g>>2]|0,c[g+4>>2]|0,d[(c[p>>2]|0)+22>>0]|0,0)|0;f=s;c[f>>2]=g;c[f+4>>2]=C;f=Nx(c[o>>2]|0)|0;a[(c[p>>2]|0)+21>>0]=f;if(!(a[(c[p>>2]|0)+21>>0]|0))a[(c[p>>2]|0)+21>>0]=65;c[q>>2]=Ox(c[h>>2]|0,c[o>>2]|0)|0;if((c[q>>2]|0)!=0?(c[(c[p>>2]|0)+16>>2]|0)==0:0){f=nh(c[m>>2]|0,c[c[q>>2]>>2]|0)|0;c[(c[p>>2]|0)+16>>2]=f}c[n>>2]=(c[n>>2]|0)+1;c[p>>2]=(c[p>>2]|0)+24}s=rR(c[s>>2]|0,c[s+4>>2]|0,4,0)|0;s=Hj(s,C)|0;b[(c[j>>2]|0)+40>>1]=s;i=t;return}function Mx(e,f,g){e=e|0;f=f|0;g=g|0;var h=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;x=i;i=i+128|0;h=x+112|0;j=x+108|0;k=x+104|0;w=x+100|0;n=x+96|0;l=x+116|0;s=x+92|0;q=x+88|0;m=x+84|0;t=x+80|0;u=x+48|0;o=x+40|0;v=x+8|0;r=x+4|0;p=x;c[h>>2]=e;c[j>>2]=f;c[k>>2]=g;c[w>>2]=0;a[l>>0]=1;a:do switch(d[c[j>>2]>>0]|0){case 152:case 154:{c[s>>2]=0;c[q>>2]=0;c[m>>2]=b[(c[j>>2]|0)+32>>1];while(1){if(!(c[h>>2]|0))break;if(!((c[s>>2]|0)!=0^1))break;c[t>>2]=c[(c[h>>2]|0)+4>>2];c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[c[t>>2]>>2]|0))break;if((c[(c[t>>2]|0)+8+((c[n>>2]|0)*72|0)+44>>2]|0)==(c[(c[j>>2]|0)+28>>2]|0))break;c[n>>2]=(c[n>>2]|0)+1}if((c[n>>2]|0)<(c[c[t>>2]>>2]|0)){c[s>>2]=c[(c[t>>2]|0)+8+((c[n>>2]|0)*72|0)+16>>2];c[q>>2]=c[(c[t>>2]|0)+8+((c[n>>2]|0)*72|0)+20>>2];continue}else{c[h>>2]=c[(c[h>>2]|0)+16>>2];continue}}if(c[s>>2]|0){if(c[q>>2]|0){if((c[m>>2]|0)<0)break a;if((c[m>>2]|0)>=(c[c[c[q>>2]>>2]>>2]|0))break a;c[o>>2]=c[(c[(c[c[q>>2]>>2]|0)+4>>2]|0)+((c[m>>2]|0)*20|0)>>2];c[u+4>>2]=c[(c[q>>2]|0)+32>>2];c[u+16>>2]=c[h>>2];c[u>>2]=c[c[h>>2]>>2];c[w>>2]=Mx(u,c[o>>2]|0,l)|0;break a}if(c[(c[s>>2]|0)+64>>2]|0){if((c[m>>2]|0)<0)c[m>>2]=b[(c[s>>2]|0)+32>>1];if((c[m>>2]|0)<0){c[w>>2]=19623;break a}else{c[w>>2]=c[(c[(c[s>>2]|0)+4>>2]|0)+((c[m>>2]|0)*24|0)+12>>2];a[l>>0]=a[(c[(c[s>>2]|0)+4>>2]|0)+((c[m>>2]|0)*24|0)+22>>0]|0;break a}}}break}case 119:{c[r>>2]=c[(c[j>>2]|0)+20>>2];c[p>>2]=c[c[(c[c[r>>2]>>2]|0)+4>>2]>>2];c[v+4>>2]=c[(c[r>>2]|0)+32>>2];c[v+16>>2]=c[h>>2];c[v>>2]=c[c[h>>2]>>2];c[w>>2]=Mx(v,c[p>>2]|0,l)|0;break}default:{}}while(0);if(!(c[k>>2]|0)){w=c[w>>2]|0;i=x;return w|0}a[c[k>>2]>>0]=a[l>>0]|0;w=c[w>>2]|0;i=x;return w|0}function Nx(e){e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[g>>2]=e;c[g>>2]=Tx(c[g>>2]|0)|0;if(c[(c[g>>2]|0)+4>>2]&512){a[f>>0]=0;e=a[f>>0]|0;i=k;return e|0}c[j>>2]=d[c[g>>2]>>0];if((c[j>>2]|0)==119){a[f>>0]=Nx(c[c[(c[c[(c[g>>2]|0)+20>>2]>>2]|0)+4>>2]>>2]|0)|0;e=a[f>>0]|0;i=k;return e|0}if((c[j>>2]|0)==38){a[f>>0]=jx(c[(c[g>>2]|0)+8>>2]|0,0)|0;e=a[f>>0]|0;i=k;return e|0}if((c[j>>2]|0)==154|(c[j>>2]|0)==152|(c[j>>2]|0)==157?(c[(c[g>>2]|0)+44>>2]|0)!=0:0){c[h>>2]=b[(c[g>>2]|0)+32>>1];if((c[h>>2]|0)<0){a[f>>0]=68;e=a[f>>0]|0;i=k;return e|0}else{a[f>>0]=a[(c[(c[(c[g>>2]|0)+44>>2]|0)+4>>2]|0)+((c[h>>2]|0)*24|0)+21>>0]|0;e=a[f>>0]|0;i=k;return e|0}}a[f>>0]=a[(c[g>>2]|0)+1>>0]|0;e=a[f>>0]|0;i=k;return e|0}function Ox(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+48|0;g=r+36|0;s=r+32|0;h=r+28|0;n=r+24|0;m=r+20|0;l=r+16|0;k=r+12|0;p=r+8|0;o=r+4|0;j=r;c[g>>2]=e;c[s>>2]=f;c[h>>2]=c[c[g>>2]>>2];c[n>>2]=0;c[m>>2]=c[s>>2];while(1){if(!(c[m>>2]|0))break;c[l>>2]=d[c[m>>2]>>0];if(c[(c[m>>2]|0)+4>>2]&512)break;if((c[l>>2]|0)==38|(c[l>>2]|0)==156){c[m>>2]=c[(c[m>>2]|0)+12>>2];continue}if((c[l>>2]|0)==95){q=9;break}if((c[l>>2]|0)==157?(d[(c[m>>2]|0)+38>>0]|0)==95:0){q=9;break}if((c[l>>2]|0)==154|(c[l>>2]|0)==152|(c[l>>2]|0)==157|(c[l>>2]|0)==62?(c[(c[m>>2]|0)+44>>2]|0)!=0:0){q=12;break}if(!(c[(c[m>>2]|0)+4>>2]&256))break;if((c[(c[m>>2]|0)+12>>2]|0)!=0?(c[(c[(c[m>>2]|0)+12>>2]|0)+4>>2]&256|0)!=0:0){c[m>>2]=c[(c[m>>2]|0)+12>>2];continue}c[o>>2]=c[(c[m>>2]|0)+16>>2];a:do if((c[(c[m>>2]|0)+20>>2]|0)!=0?(c[(c[m>>2]|0)+4>>2]&2048|0)==0:0){c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[c[(c[m>>2]|0)+20>>2]>>2]|0))break a;f=c[j>>2]|0;if(c[(c[(c[(c[(c[m>>2]|0)+20>>2]|0)+4>>2]|0)+((c[j>>2]|0)*20|0)>>2]|0)+4>>2]&256)break;c[j>>2]=f+1}c[o>>2]=c[(c[(c[(c[m>>2]|0)+20>>2]|0)+4>>2]|0)+(f*20|0)>>2]}while(0);c[m>>2]=c[o>>2]}if((q|0)==9)c[n>>2]=Px(c[g>>2]|0,a[(c[h>>2]|0)+62>>0]|0,0,c[(c[m>>2]|0)+8>>2]|0)|0;else if((q|0)==12?(c[k>>2]=b[(c[m>>2]|0)+32>>1],(c[k>>2]|0)>=0):0){c[p>>2]=c[(c[(c[(c[m>>2]|0)+44>>2]|0)+4>>2]|0)+((c[k>>2]|0)*24|0)+16>>2];c[n>>2]=Mj(c[h>>2]|0,a[(c[h>>2]|0)+62>>0]|0,c[p>>2]|0,0)|0}if(!(Qx(c[g>>2]|0,c[n>>2]|0)|0)){s=c[n>>2]|0;i=r;return s|0}c[n>>2]=0;s=c[n>>2]|0;i=r;return s|0}function Px(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+32|0;n=o;h=o+20|0;j=o+24|0;p=o+16|0;k=o+12|0;m=o+8|0;l=o+4|0;c[h>>2]=b;a[j>>0]=e;c[p>>2]=f;c[k>>2]=g;c[l>>2]=c[c[h>>2]>>2];c[m>>2]=c[p>>2];if(!(c[m>>2]|0))c[m>>2]=Mj(c[l>>2]|0,a[j>>0]|0,c[k>>2]|0,0)|0;if(!((c[m>>2]|0)!=0?(c[(c[m>>2]|0)+12>>2]|0)!=0:0)){Rx(c[l>>2]|0,d[j>>0]|0,c[k>>2]|0);c[m>>2]=Mj(c[l>>2]|0,a[j>>0]|0,c[k>>2]|0,0)|0}if(((c[m>>2]|0)!=0?(c[(c[m>>2]|0)+12>>2]|0)==0:0)?(Sx(c[l>>2]|0,c[m>>2]|0)|0)!=0:0)c[m>>2]=0;if(c[m>>2]|0){p=c[m>>2]|0;i=o;return p|0}p=c[h>>2]|0;c[n>>2]=c[k>>2];Ah(p,29884,n);p=c[m>>2]|0;i=o;return p|0}function Qx(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+20|0;f=l+16|0;g=l+12|0;k=l+8|0;h=l+4|0;j=l;c[f>>2]=b;c[g>>2]=d;if((c[g>>2]|0)!=0?(c[k>>2]=c[c[g>>2]>>2],c[h>>2]=c[c[f>>2]>>2],c[j>>2]=Px(c[f>>2]|0,a[(c[h>>2]|0)+62>>0]|0,c[g>>2]|0,c[k>>2]|0)|0,(c[j>>2]|0)==0):0){c[e>>2]=1;k=c[e>>2]|0;i=l;return k|0}c[e>>2]=0;k=c[e>>2]|0;i=l;return k|0}function Rx(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;j=n+12|0;l=n+8|0;m=n+4|0;k=n;c[g>>2]=b;c[h>>2]=e;c[j>>2]=f;do if(c[(c[g>>2]|0)+224>>2]|0){c[l>>2]=nh(c[g>>2]|0,c[j>>2]|0)|0;if(c[l>>2]|0){_b[c[(c[g>>2]|0)+224>>2]&255](c[(c[g>>2]|0)+232>>2]|0,c[g>>2]|0,c[h>>2]|0,c[l>>2]|0);Sf(c[g>>2]|0,c[l>>2]|0);break}else{i=n;return}}while(0);if(!(c[(c[g>>2]|0)+228>>2]|0)){i=n;return}c[k>>2]=Vh(c[g>>2]|0)|0;Wh(c[k>>2]|0,-1,c[j>>2]|0,1,0);c[m>>2]=Wg(c[k>>2]|0,((a[960]|0)==0?3:2)&255)|0;if(c[m>>2]|0)_b[c[(c[g>>2]|0)+228>>2]&255](c[(c[g>>2]|0)+232>>2]|0,c[g>>2]|0,d[(c[g>>2]|0)+62>>0]|0,c[m>>2]|0);$g(c[k>>2]|0);i=n;return}function Sx(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;h=l+20|0;e=l+16|0;j=l+12|0;k=l+8|0;g=l+4|0;f=l;c[e>>2]=b;c[j>>2]=d;c[g>>2]=c[c[j>>2]>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=3){e=6;break}c[k>>2]=Mj(c[e>>2]|0,a[29915+(c[f>>2]|0)>>0]|0,c[g>>2]|0,0)|0;if(c[(c[k>>2]|0)+12>>2]|0){e=4;break}c[f>>2]=(c[f>>2]|0)+1}if((e|0)==4){g=c[j>>2]|0;k=c[k>>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[(c[j>>2]|0)+16>>2]=0;c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}else if((e|0)==6){c[h>>2]=1;k=c[h>>2]|0;i=l;return k|0}return 0}function Tx(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;while(1){if(c[d>>2]|0)a=(c[(c[d>>2]|0)+4>>2]&4096|0)!=0;else a=0;b=c[d>>2]|0;if(!a)break;a=c[d>>2]|0;if(c[b+4>>2]&262144){c[d>>2]=c[c[(c[a+20>>2]|0)+4>>2]>>2];continue}else{c[d>>2]=c[a+12>>2];continue}}i=e;return b|0}function Ux(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0;h=i;i=i+48|0;j=h+32|0;f=h+28|0;g=h;c[j>>2]=b;c[f>>2]=d;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0; -c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;c[g+4>>2]=190;c[g>>2]=c[j>>2];if(a[(c[j>>2]|0)+22>>0]|0){c[g+8>>2]=191;Zx(g,c[f>>2]|0)|0}c[g+8>>2]=192;if(e[(c[f>>2]|0)+6>>1]&512){j=c[f>>2]|0;Zx(g,j)|0;i=h;return}c[g+12>>2]=132;j=c[f>>2]|0;Zx(g,j)|0;i=h;return}function Vx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+48|0;j=e+36|0;f=e+32|0;h=e+28|0;g=e;c[j>>2]=a;c[f>>2]=b;c[h>>2]=d;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;c[g+4>>2]=193;c[g+8>>2]=194;c[g>>2]=c[j>>2];c[g+24>>2]=c[h>>2];Zx(g,c[f>>2]|0)|0;i=e;return}function Wx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+48|0;g=d+32|0;e=d+28|0;f=d;c[g>>2]=a;c[e>>2]=b;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;c[f+24>>2]=0;c[f+12>>2]=133;c[f+4>>2]=190;c[f>>2]=c[g>>2];Zx(f,c[e>>2]|0)|0;i=d;return}function Xx(a,f){a=a|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+32|0;p=n+28|0;o=n+24|0;j=n+20|0;g=n+16|0;m=n+12|0;h=n+8|0;l=n+4|0;k=n;c[p>>2]=a;c[o>>2]=f;a=(c[o>>2]|0)+6|0;b[a>>1]=e[a>>1]|0|64;c[j>>2]=c[c[p>>2]>>2];c[m>>2]=c[(c[o>>2]|0)+32>>2];c[g>>2]=0;c[h>>2]=(c[m>>2]|0)+8;while(1){if((c[g>>2]|0)>=(c[c[m>>2]>>2]|0))break;c[l>>2]=c[(c[h>>2]|0)+16>>2];if(((d[(c[l>>2]|0)+42>>0]|0)&2|0)!=0?(c[k>>2]=c[(c[h>>2]|0)+20>>2],(c[k>>2]|0)!=0):0){while(1){if(!(c[(c[k>>2]|0)+52>>2]|0))break;c[k>>2]=c[(c[k>>2]|0)+52>>2]}Lx(c[j>>2]|0,c[l>>2]|0,c[k>>2]|0)}c[g>>2]=(c[g>>2]|0)+1;c[h>>2]=(c[h>>2]|0)+72}i=n;return}function Yx(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 0}function Zx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+12|0;f=h+8|0;d=h+4|0;g=h;c[f>>2]=a;c[d>>2]=b;do if(c[d>>2]|0){if((c[(c[f>>2]|0)+8>>2]|0)==0?(c[(c[f>>2]|0)+12>>2]|0)==0:0)break;c[g>>2]=0;a=(c[f>>2]|0)+16|0;c[a>>2]=(c[a>>2]|0)+1;while(1){if(!(c[d>>2]|0)){d=15;break}if((c[(c[f>>2]|0)+8>>2]|0)!=0?(c[g>>2]=Yb[c[(c[f>>2]|0)+8>>2]&255](c[f>>2]|0,c[d>>2]|0)|0,(c[g>>2]|0)!=0):0){d=15;break}if(_x(c[f>>2]|0,c[d>>2]|0)|0){d=11;break}if($x(c[f>>2]|0,c[d>>2]|0)|0){d=11;break}if(c[(c[f>>2]|0)+12>>2]|0)Rb[c[(c[f>>2]|0)+12>>2]&255](c[f>>2]|0,c[d>>2]|0);c[d>>2]=c[(c[d>>2]|0)+52>>2]}if((d|0)==11){g=(c[f>>2]|0)+16|0;c[g>>2]=(c[g>>2]|0)+-1;c[e>>2]=2;g=c[e>>2]|0;i=h;return g|0}else if((d|0)==15){f=(c[f>>2]|0)+16|0;c[f>>2]=(c[f>>2]|0)+-1;c[e>>2]=c[g>>2]&2;g=c[e>>2]|0;i=h;return g|0}}while(0);c[e>>2]=0;g=c[e>>2]|0;i=h;return g|0}function _x(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[e>>2]=a;c[f>>2]=b;do if(!(ay(c[e>>2]|0,c[c[f>>2]>>2]|0)|0)){if(by(c[e>>2]|0,c[(c[f>>2]|0)+36>>2]|0)|0){c[d>>2]=2;break}if(ay(c[e>>2]|0,c[(c[f>>2]|0)+40>>2]|0)|0){c[d>>2]=2;break}if(by(c[e>>2]|0,c[(c[f>>2]|0)+44>>2]|0)|0){c[d>>2]=2;break}if(ay(c[e>>2]|0,c[(c[f>>2]|0)+48>>2]|0)|0){c[d>>2]=2;break}if(by(c[e>>2]|0,c[(c[f>>2]|0)+60>>2]|0)|0){c[d>>2]=2;break}if(by(c[e>>2]|0,c[(c[f>>2]|0)+64>>2]|0)|0){c[d>>2]=2;break}else{c[d>>2]=0;break}}else c[d>>2]=2;while(0);i=g;return c[d>>2]|0}function $x(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;j=k+20|0;e=k+16|0;l=k+12|0;h=k+8|0;f=k+4|0;g=k;c[e>>2]=a;c[l>>2]=b;c[h>>2]=c[(c[l>>2]|0)+32>>2];a:do if(c[h>>2]|0){c[f>>2]=c[c[h>>2]>>2];c[g>>2]=(c[h>>2]|0)+8;while(1){if((c[f>>2]|0)<=0)break a;if(Zx(c[e>>2]|0,c[(c[g>>2]|0)+20>>2]|0)|0){e=5;break}if(((d[(c[g>>2]|0)+36+1>>0]|0)>>>2&1|0)!=0?(ay(c[e>>2]|0,c[(c[g>>2]|0)+64>>2]|0)|0)!=0:0){e=8;break}c[f>>2]=(c[f>>2]|0)+-1;c[g>>2]=(c[g>>2]|0)+72}if((e|0)==5){c[j>>2]=2;l=c[j>>2]|0;i=k;return l|0}else if((e|0)==8){c[j>>2]=2;l=c[j>>2]|0;i=k;return l|0}}while(0);c[j>>2]=0;l=c[j>>2]|0;i=k;return l|0}function ay(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;d=j+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;a:do if(c[f>>2]|0){c[g>>2]=c[c[f>>2]>>2];c[h>>2]=c[(c[f>>2]|0)+4>>2];while(1){if((c[g>>2]|0)<=0)break a;if(by(c[e>>2]|0,c[c[h>>2]>>2]|0)|0)break;c[g>>2]=(c[g>>2]|0)+-1;c[h>>2]=(c[h>>2]|0)+20}c[d>>2]=2;a=c[d>>2]|0;i=j;return a|0}while(0);c[d>>2]=0;a=c[d>>2]|0;i=j;return a|0}function by(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){a=0;i=f;return a|0}a=cy(c[d>>2]|0,c[e>>2]|0)|0;i=f;return a|0}function cy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+12|0;d=h+8|0;f=h+4|0;g=h;c[d>>2]=a;c[f>>2]=b;c[g>>2]=Yb[c[(c[d>>2]|0)+4>>2]&255](c[d>>2]|0,c[f>>2]|0)|0;do if((c[g>>2]|0)==0?(c[(c[f>>2]|0)+4>>2]&16384|0)==0:0){if(by(c[d>>2]|0,c[(c[f>>2]|0)+12>>2]|0)|0){c[e>>2]=2;g=c[e>>2]|0;i=h;return g|0}if(by(c[d>>2]|0,c[(c[f>>2]|0)+16>>2]|0)|0){c[e>>2]=2;g=c[e>>2]|0;i=h;return g|0}d=c[d>>2]|0;b=(c[f>>2]|0)+20|0;if(c[(c[f>>2]|0)+4>>2]&2048){if(!(Zx(d,c[b>>2]|0)|0))break;c[e>>2]=2;g=c[e>>2]|0;i=h;return g|0}else{if(!(ay(d,c[b>>2]|0)|0))break;c[e>>2]=2;g=c[e>>2]|0;i=h;return g|0}}while(0);c[e>>2]=c[g>>2]&2;g=c[e>>2]|0;i=h;return g|0}function dy(f,g){f=f|0;g=g|0;var h=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,J=0;J=i;i=i+128|0;C=J+32|0;E=J+24|0;D=J+16|0;B=J+8|0;A=J;I=J+116|0;n=J+112|0;o=J+108|0;x=J+104|0;z=J+100|0;k=J+96|0;m=J+92|0;l=J+88|0;j=J+84|0;w=J+80|0;s=J+76|0;u=J+72|0;F=J+68|0;r=J+64|0;p=J+60|0;t=J+56|0;G=J+52|0;v=J+48|0;q=J+120|0;y=J+44|0;h=J+40|0;c[n>>2]=f;c[o>>2]=g;c[x>>2]=c[(c[n>>2]|0)+24>>2];c[z>>2]=c[c[x>>2]>>2];if(c[(c[o>>2]|0)+4>>2]&4){c[I>>2]=1;I=c[I>>2]|0;i=J;return I|0}f=(c[o>>2]|0)+4|0;c[f>>2]=c[f>>2]|4;switch(d[c[o>>2]>>0]|0){case 27:{c[I>>2]=Fy(c[z>>2]|0,0,0,c[(c[o>>2]|0)+8>>2]|0,c[x>>2]|0,c[o>>2]|0)|0;I=c[I>>2]|0;i=J;return I|0}case 122:{Gy(c[z>>2]|0,c[x>>2]|0,30424,32);c[j>>2]=c[(c[o>>2]|0)+16>>2];if((d[c[j>>2]>>0]|0)==27){c[l>>2]=0;c[m>>2]=c[(c[(c[o>>2]|0)+12>>2]|0)+8>>2];c[k>>2]=c[(c[j>>2]|0)+8>>2]}else{c[l>>2]=c[(c[(c[o>>2]|0)+12>>2]|0)+8>>2];c[m>>2]=c[(c[(c[j>>2]|0)+12>>2]|0)+8>>2];c[k>>2]=c[(c[(c[j>>2]|0)+16>>2]|0)+8>>2]}c[I>>2]=Fy(c[z>>2]|0,c[l>>2]|0,c[m>>2]|0,c[k>>2]|0,c[x>>2]|0,c[o>>2]|0)|0;I=c[I>>2]|0;i=J;return I|0}case 151:{c[w>>2]=c[(c[o>>2]|0)+20>>2];if(c[w>>2]|0)h=c[c[w>>2]>>2]|0;else h=0;c[s>>2]=h;c[u>>2]=0;c[F>>2]=0;c[r>>2]=0;a[q>>0]=a[(c[c[z>>2]>>2]|0)+62>>0]|0;Gy(c[z>>2]|0,c[x>>2]|0,30441,16);c[G>>2]=c[(c[o>>2]|0)+8>>2];c[t>>2]=If(c[G>>2]|0)|0;c[v>>2]=gi(c[c[z>>2]>>2]|0,c[G>>2]|0,c[t>>2]|0,c[s>>2]|0,a[q>>0]|0,0)|0;do if(!(c[v>>2]|0)){c[v>>2]=gi(c[c[z>>2]>>2]|0,c[G>>2]|0,c[t>>2]|0,-2,a[q>>0]|0,0)|0;if(!(c[v>>2]|0)){c[u>>2]=1;break}else{c[F>>2]=1;break}}else{c[r>>2]=(c[(c[v>>2]|0)+16>>2]|0)!=0&1;do if(e[(c[v>>2]|0)+2>>1]&1024){q=(c[o>>2]|0)+4|0;c[q>>2]=c[q>>2]|266240;if((c[s>>2]|0)!=2){c[(c[o>>2]|0)+28>>2]=(a[c[(c[v>>2]|0)+20>>2]>>0]|0)==117?8388608:125829120;break}s=Hy(c[(c[(c[w>>2]|0)+4>>2]|0)+20>>2]|0)|0;c[(c[o>>2]|0)+28>>2]=s;if((c[(c[o>>2]|0)+28>>2]|0)<0){Ah(c[z>>2]|0,30451,A);A=(c[x>>2]|0)+24|0;c[A>>2]=(c[A>>2]|0)+1}}while(0);c[p>>2]=Mw(c[z>>2]|0,31,0,c[(c[v>>2]|0)+20>>2]|0,0)|0;if(c[p>>2]|0){if((c[p>>2]|0)==1){H=c[z>>2]|0;c[B>>2]=c[(c[v>>2]|0)+20>>2];Ah(H,30522,B);H=(c[x>>2]|0)+24|0;c[H>>2]=(c[H>>2]|0)+1}a[c[o>>2]>>0]=101;c[I>>2]=1;I=c[I>>2]|0;i=J;return I|0}else{if(e[(c[v>>2]|0)+2>>1]&10240){B=(c[o>>2]|0)+4|0;c[B>>2]=c[B>>2]|524288}if(e[(c[v>>2]|0)+2>>1]&2048)break;Gy(c[z>>2]|0,c[x>>2]|0,30557,32);break}}while(0);if((c[r>>2]|0)!=0?(e[(c[x>>2]|0)+28>>1]&1|0)==0:0){F=c[z>>2]|0;G=c[G>>2]|0;c[D>>2]=c[t>>2];c[D+4>>2]=G;Ah(F,30585,D);G=(c[x>>2]|0)+24|0;c[G>>2]=(c[G>>2]|0)+1;c[r>>2]=0}else H=31;do if((H|0)==31){if((c[u>>2]|0)!=0?(d[(c[c[z>>2]>>2]|0)+140+5>>0]|0)==0:0){H=c[z>>2]|0;G=c[G>>2]|0;c[E>>2]=c[t>>2];c[E+4>>2]=G;Ah(H,30621,E);H=(c[x>>2]|0)+24|0;c[H>>2]=(c[H>>2]|0)+1;break}if(c[F>>2]|0){H=c[z>>2]|0;G=c[G>>2]|0;c[C>>2]=c[t>>2];c[C+4>>2]=G;Ah(H,30644,C);H=(c[x>>2]|0)+24|0;c[H>>2]=(c[H>>2]|0)+1}}while(0);if(c[r>>2]|0){H=(c[x>>2]|0)+28|0;b[H>>1]=e[H>>1]&-2}ay(c[n>>2]|0,c[w>>2]|0)|0;if(c[r>>2]|0){c[y>>2]=c[x>>2];a[c[o>>2]>>0]=-103;a[(c[o>>2]|0)+38>>0]=0;while(1){if(!(c[y>>2]|0))break;if(!((Iy(c[o>>2]|0,c[(c[y>>2]|0)+4>>2]|0)|0)!=0^1))break;H=(c[o>>2]|0)+38|0;a[H>>0]=(a[H>>0]|0)+1<<24>>24;c[y>>2]=c[(c[y>>2]|0)+16>>2]}if(c[y>>2]|0){H=(c[y>>2]|0)+28|0;b[H>>1]=e[H>>1]|(2|e[(c[v>>2]|0)+2>>1]&4096)}H=(c[x>>2]|0)+28|0;b[H>>1]=e[H>>1]|1}c[I>>2]=1;I=c[I>>2]|0;i=J;return I|0}case 75:case 20:case 119:{if((c[(c[o>>2]|0)+4>>2]&2048|0)!=0?(c[h>>2]=c[(c[x>>2]|0)+20>>2],Gy(c[z>>2]|0,c[x>>2]|0,30689,52),Zx(c[n>>2]|0,c[(c[o>>2]|0)+20>>2]|0)|0,(c[h>>2]|0)!=(c[(c[x>>2]|0)+20>>2]|0)):0){H=(c[o>>2]|0)+4|0;c[H>>2]=c[H>>2]|32}break}case 135:{Gy(c[z>>2]|0,c[x>>2]|0,30700,52);break}default:{}}if(c[(c[z>>2]|0)+68>>2]|0)h=1;else h=(d[(c[c[z>>2]>>2]|0)+65>>0]|0)!=0;c[I>>2]=h?2:0;I=c[I>>2]|0;i=J;return I|0}function ey(f,g){f=f|0;g=g|0;var h=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;E=i;i=i+128|0;C=E+8|0;B=E;D=E+116|0;h=E+112|0;x=E+108|0;s=E+104|0;v=E+72|0;y=E+68|0;l=E+64|0;A=E+60|0;k=E+56|0;n=E+52|0;z=E+48|0;j=E+44|0;t=E+40|0;o=E+36|0;r=E+32|0;m=E+28|0;w=E+24|0;p=E+20|0;u=E+16|0;q=E+12|0;c[h>>2]=f;c[x>>2]=g;if(e[(c[x>>2]|0)+6>>1]&4){c[D>>2]=1;D=c[D>>2]|0;i=E;return D|0}c[s>>2]=c[(c[h>>2]|0)+24>>2];c[A>>2]=c[c[h>>2]>>2];c[j>>2]=c[c[A>>2]>>2];if(!(e[(c[x>>2]|0)+6>>1]&32)){Kx(c[A>>2]|0,c[x>>2]|0,c[s>>2]|0);if(c[(c[A>>2]|0)+68>>2]|0)h=1;else h=(d[(c[j>>2]|0)+65>>0]|0)!=0;c[D>>2]=h?2:1;D=c[D>>2]|0;i=E;return D|0}c[y>>2]=(c[(c[x>>2]|0)+52>>2]|0)!=0&1;c[l>>2]=0;c[z>>2]=c[x>>2];a:while(1){if(!(c[x>>2]|0)){h=68;break}f=(c[x>>2]|0)+6|0;b[f>>1]=e[f>>1]|4;c[v>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[v+12>>2]=0;c[v+16>>2]=0;c[v+20>>2]=0;c[v+24>>2]=0;c[v+28>>2]=0;c[v>>2]=c[A>>2];if(fy(v,c[(c[x>>2]|0)+60>>2]|0)|0){h=11;break}if(fy(v,c[(c[x>>2]|0)+64>>2]|0)|0){h=11;break}if(e[(c[x>>2]|0)+6>>1]&16384){c[t>>2]=c[(c[(c[x>>2]|0)+32>>2]|0)+8+20>>2];c[(c[t>>2]|0)+48>>2]=c[(c[x>>2]|0)+48>>2];c[(c[x>>2]|0)+48>>2]=0}c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[c[(c[x>>2]|0)+32>>2]>>2]|0))break;c[o>>2]=(c[(c[x>>2]|0)+32>>2]|0)+8+((c[k>>2]|0)*72|0);if(c[(c[o>>2]|0)+20>>2]|0){c[m>>2]=0;c[w>>2]=c[(c[A>>2]|0)+496>>2];c[r>>2]=c[s>>2];while(1){if(!(c[r>>2]|0))break;c[m>>2]=(c[m>>2]|0)+(c[(c[r>>2]|0)+20>>2]|0);c[r>>2]=c[(c[r>>2]|0)+16>>2]}if(c[(c[o>>2]|0)+8>>2]|0)c[(c[A>>2]|0)+496>>2]=c[(c[o>>2]|0)+8>>2];Vx(c[A>>2]|0,c[(c[o>>2]|0)+20>>2]|0,c[s>>2]|0);c[(c[A>>2]|0)+496>>2]=c[w>>2];if(c[(c[A>>2]|0)+68>>2]|0){h=24;break a}if(d[(c[j>>2]|0)+65>>0]|0){h=24;break a}c[r>>2]=c[s>>2];while(1){if(!(c[r>>2]|0))break;c[m>>2]=(c[m>>2]|0)-(c[(c[r>>2]|0)+20>>2]|0);c[r>>2]=c[(c[r>>2]|0)+16>>2]}f=(c[o>>2]|0)+36+1|0;a[f>>0]=a[f>>0]&-9|((c[m>>2]|0)!=0&1)<<3&255}c[k>>2]=(c[k>>2]|0)+1}b[v+28>>1]=1;c[v+4>>2]=c[(c[x>>2]|0)+32>>2];c[v+16>>2]=c[s>>2];if(gy(v,c[c[x>>2]>>2]|0)|0){h=31;break}c[n>>2]=c[(c[x>>2]|0)+40>>2];if((c[n>>2]|0)==0?(e[v+28>>1]&2|0)==0:0){f=v+28|0;b[f>>1]=e[f>>1]&-2}else{f=(c[x>>2]|0)+6|0;b[f>>1]=e[f>>1]|(8|e[v+28>>1]&4096)}if(!((c[n>>2]|0)!=0?1:(c[(c[x>>2]|0)+44>>2]|0)==0)){h=37;break}c[v+8>>2]=c[c[x>>2]>>2];if(fy(v,c[(c[x>>2]|0)+44>>2]|0)|0){h=39;break}if(fy(v,c[(c[x>>2]|0)+36>>2]|0)|0){h=41;break}c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[c[(c[x>>2]|0)+32>>2]>>2]|0))break;c[p>>2]=(c[(c[x>>2]|0)+32>>2]|0)+8+((c[k>>2]|0)*72|0);if(((d[(c[p>>2]|0)+36+1>>0]|0)>>>2&1|0)!=0?(gy(v,c[(c[p>>2]|0)+64>>2]|0)|0)!=0:0){h=46;break a}c[k>>2]=(c[k>>2]|0)+1}c[v+16>>2]=0;f=v+28|0;b[f>>1]=e[f>>1]|1;if(e[(c[x>>2]|0)+6>>1]&16384){c[u>>2]=c[(c[(c[x>>2]|0)+32>>2]|0)+8+20>>2];c[(c[x>>2]|0)+48>>2]=c[(c[u>>2]|0)+48>>2];c[(c[u>>2]|0)+48>>2]=0}if((c[y>>2]|0)<=(c[l>>2]|0)?(hy(v,c[x>>2]|0,c[(c[x>>2]|0)+48>>2]|0,29962)|0)!=0:0){h=52;break}if(a[(c[j>>2]|0)+65>>0]|0){h=54;break}b:do if(c[n>>2]|0){if(hy(v,c[x>>2]|0,c[n>>2]|0,29968)|0){h=58;break a}if(d[(c[j>>2]|0)+65>>0]|0){h=58;break a}c[k>>2]=0;c[q>>2]=c[(c[n>>2]|0)+4>>2];while(1){if((c[k>>2]|0)>=(c[c[n>>2]>>2]|0))break b;if(c[(c[c[q>>2]>>2]|0)+4>>2]&2){h=62;break a}c[k>>2]=(c[k>>2]|0)+1;c[q>>2]=(c[q>>2]|0)+20}}while(0);if((c[(c[x>>2]|0)+56>>2]|0)!=0?(c[c[c[x>>2]>>2]>>2]|0)!=(c[c[c[(c[x>>2]|0)+56>>2]>>2]>>2]|0):0){h=66;break}c[x>>2]=c[(c[x>>2]|0)+52>>2];c[l>>2]=(c[l>>2]|0)+1}switch(h|0){case 11:{c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 24:{c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 31:{c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 37:{Ah(c[A>>2]|0,29918,B);c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 39:{c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 41:{c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 46:{c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 52:{c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 54:{c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 58:{c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 62:{Ah(c[A>>2]|0,29974,C);c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 66:{iy(c[A>>2]|0,c[(c[x>>2]|0)+56>>2]|0);c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 68:{if((c[y>>2]|0)!=0?(jy(c[A>>2]|0,c[z>>2]|0)|0)!=0:0){c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}c[D>>2]=1;D=c[D>>2]|0;i=E;return D|0}}return 0}function fy(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+48|0;g=n+40|0;h=n+36|0;j=n+32|0;l=n+44|0;m=n+4|0;k=n;c[h>>2]=d;c[j>>2]=f;if(!(c[j>>2]|0)){c[g>>2]=0;m=c[g>>2]|0;i=n;return m|0}c[k>>2]=c[c[h>>2]>>2];if(Ey(c[k>>2]|0,(c[(c[j>>2]|0)+24>>2]|0)+(c[(c[c[h>>2]>>2]|0)+464>>2]|0)|0)|0){c[g>>2]=1;m=c[g>>2]|0;i=n;return m|0}k=(c[k>>2]|0)+464|0;c[k>>2]=(c[k>>2]|0)+(c[(c[j>>2]|0)+24>>2]|0);b[l>>1]=(e[(c[h>>2]|0)+28>>1]|0)&4098;k=(c[h>>2]|0)+28|0;b[k>>1]=(e[k>>1]|0)&-4099;c[m>>2]=c[c[h>>2]>>2];c[m+4>>2]=193;c[m+8>>2]=194;c[m+12>>2]=0;c[m+16>>2]=0;a[m+20>>0]=0;c[m+24>>2]=c[h>>2];by(m,c[j>>2]|0)|0;k=(c[c[h>>2]>>2]|0)+464|0;c[k>>2]=(c[k>>2]|0)-(c[(c[j>>2]|0)+24>>2]|0);if(!((c[(c[h>>2]|0)+24>>2]|0)<=0?(c[(c[m>>2]|0)+68>>2]|0)<=0:0)){m=(c[j>>2]|0)+4|0;c[m>>2]=c[m>>2]|8}if((e[(c[h>>2]|0)+28>>1]|0)&2){m=(c[j>>2]|0)+4|0;c[m>>2]=c[m>>2]|2}m=(c[h>>2]|0)+28|0;b[m>>1]=e[m>>1]|0|(e[l>>1]|0);c[g>>2]=(c[(c[j>>2]|0)+4>>2]&8|0)!=0&1;m=c[g>>2]|0;i=n;return m|0}function gy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;a:do if(c[f>>2]|0){c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[c[f>>2]>>2]|0))break a;if(fy(c[e>>2]|0,c[(c[(c[f>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0)>>2]|0)|0)break;c[g>>2]=(c[g>>2]|0)+1}c[d>>2]=2;a=c[d>>2]|0;i=h;return a|0}while(0);c[d>>2]=0;a=c[d>>2]|0;i=h;return a|0}function hy(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=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;w=i;i=i+64|0;h=w+48|0;j=w+44|0;k=w+40|0;l=w+36|0;m=w+32|0;n=w+28|0;p=w+24|0;o=w+20|0;t=w+16|0;u=w+12|0;q=w+8|0;r=w+4|0;s=w;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;if(!(c[l>>2]|0)){c[h>>2]=0;v=c[h>>2]|0;i=w;return v|0}c[q>>2]=c[c[c[k>>2]>>2]>>2];c[u>>2]=c[c[j>>2]>>2];c[n>>2]=0;c[t>>2]=c[(c[l>>2]|0)+4>>2];a:while(1){if((c[n>>2]|0)>=(c[c[l>>2]>>2]|0)){v=20;break}c[r>>2]=c[c[t>>2]>>2];c[s>>2]=Tx(c[r>>2]|0)|0;if((a[c[m>>2]>>0]|0)!=71?(c[o>>2]=my(c[u>>2]|0,c[c[k>>2]>>2]|0,c[s>>2]|0)|0,(c[o>>2]|0)>0):0)b[(c[t>>2]|0)+16>>1]=c[o>>2];else v=8;b:do if((v|0)==8){v=0;if(ky(c[s>>2]|0,o)|0){if((c[o>>2]|0)<1|(c[o>>2]|0)>65535){v=10;break a}b[(c[t>>2]|0)+16>>1]=c[o>>2];break}b[(c[t>>2]|0)+16>>1]=0;if(fy(c[j>>2]|0,c[r>>2]|0)|0){v=13;break a}c[p>>2]=0;while(1){if((c[p>>2]|0)>=(c[c[c[k>>2]>>2]>>2]|0))break b;if(!(py(c[r>>2]|0,c[(c[(c[c[k>>2]>>2]|0)+4>>2]|0)+((c[p>>2]|0)*20|0)>>2]|0,-1)|0))b[(c[t>>2]|0)+16>>1]=(c[p>>2]|0)+1;c[p>>2]=(c[p>>2]|0)+1}}while(0);c[n>>2]=(c[n>>2]|0)+1;c[t>>2]=(c[t>>2]|0)+20}if((v|0)==10){ly(c[u>>2]|0,c[m>>2]|0,(c[n>>2]|0)+1|0,c[q>>2]|0);c[h>>2]=1;v=c[h>>2]|0;i=w;return v|0}else if((v|0)==13){c[h>>2]=1;v=c[h>>2]|0;i=w;return v|0}else if((v|0)==20){c[h>>2]=yy(c[u>>2]|0,c[k>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;v=c[h>>2]|0;i=w;return v|0}return 0}function iy(a,b){a=a|0;b=b|0;var f=0,g=0,h=0,j=0;h=i;i=i+32|0;g=h+8|0;j=h+16|0;f=h+12|0;c[j>>2]=a;c[f>>2]=b;b=c[j>>2]|0;if((e[(c[f>>2]|0)+6>>1]|0)&256){Ah(b,30184,h);i=h;return}else{c[g>>2]=xy(d[(c[f>>2]|0)+4>>0]|0)|0;Ah(b,30230,g);i=h;return}}function jy(e,f){e=e|0;f=f|0;var g=0,h=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;w=i;i=i+80|0;v=w+8|0;q=w+64|0;r=w+60|0;g=w+56|0;s=w+52|0;u=w+48|0;t=w+44|0;h=w+40|0;k=w+36|0;n=w+32|0;j=w+28|0;m=w+24|0;l=w+20|0;o=w+16|0;p=w+12|0;c[r>>2]=e;c[g>>2]=f;c[k>>2]=1;c[u>>2]=c[(c[g>>2]|0)+48>>2];if(!(c[u>>2]|0)){c[q>>2]=0;v=c[q>>2]|0;i=w;return v|0}c[h>>2]=c[c[r>>2]>>2];if((c[c[u>>2]>>2]|0)>(c[(c[h>>2]|0)+88+8>>2]|0)){Ah(c[r>>2]|0,30033,w);c[q>>2]=1;v=c[q>>2]|0;i=w;return v|0}c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[c[u>>2]>>2]|0))break;f=(c[(c[u>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)+13|0;a[f>>0]=a[f>>0]&-2;c[s>>2]=(c[s>>2]|0)+1}c[(c[g>>2]|0)+56>>2]=0;while(1){if(!(c[(c[g>>2]|0)+52>>2]|0))break;c[(c[(c[g>>2]|0)+52>>2]|0)+56>>2]=c[g>>2];c[g>>2]=c[(c[g>>2]|0)+52>>2]}a:while(1){if(!((c[g>>2]|0)!=0?(c[k>>2]|0)!=0:0)){g=36;break}c[k>>2]=0;c[t>>2]=c[c[g>>2]>>2];c[s>>2]=0;c[n>>2]=c[(c[u>>2]|0)+4>>2];while(1){if((c[s>>2]|0)>=(c[c[u>>2]>>2]|0))break;c[j>>2]=-1;do if(!(a[(c[n>>2]|0)+13>>0]&1)){c[m>>2]=Tx(c[c[n>>2]>>2]|0)|0;if(ky(c[m>>2]|0,j)|0){if((c[j>>2]|0)<=0){g=18;break a}if((c[j>>2]|0)>(c[c[t>>2]>>2]|0)){g=18;break a}}else{c[j>>2]=my(c[r>>2]|0,c[t>>2]|0,c[m>>2]|0)|0;if(!(c[j>>2]|0)){c[l>>2]=ny(c[h>>2]|0,c[m>>2]|0,0)|0;if(!(a[(c[h>>2]|0)+65>>0]|0))c[j>>2]=oy(c[r>>2]|0,c[g>>2]|0,c[l>>2]|0)|0;Zu(c[h>>2]|0,c[l>>2]|0)}}if((c[j>>2]|0)<=0){c[k>>2]=1;break}c[o>>2]=Jv(c[h>>2]|0,132,0)|0;if(!(c[o>>2]|0)){g=25;break a}f=(c[o>>2]|0)+4|0;c[f>>2]=c[f>>2]|1024;c[(c[o>>2]|0)+8>>2]=c[j>>2];if((c[c[n>>2]>>2]|0)==(c[m>>2]|0))c[c[n>>2]>>2]=c[o>>2];else{c[p>>2]=c[c[n>>2]>>2];while(1){if((d[c[(c[p>>2]|0)+12>>2]>>0]|0)!=95)break;c[p>>2]=c[(c[p>>2]|0)+12>>2]}c[(c[p>>2]|0)+12>>2]=c[o>>2]}Zu(c[h>>2]|0,c[m>>2]|0);b[(c[n>>2]|0)+16>>1]=c[j>>2];f=(c[n>>2]|0)+13|0;a[f>>0]=a[f>>0]&-2|1}while(0);c[s>>2]=(c[s>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+20}c[g>>2]=c[(c[g>>2]|0)+56>>2]}if((g|0)==18){ly(c[r>>2]|0,29962,(c[s>>2]|0)+1|0,c[c[t>>2]>>2]|0);c[q>>2]=1;v=c[q>>2]|0;i=w;return v|0}else if((g|0)==25){c[q>>2]=1;v=c[q>>2]|0;i=w;return v|0}else if((g|0)==36){c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[c[u>>2]>>2]|0)){g=41;break}if(!(a[(c[(c[u>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)+13>>0]&1)){g=39;break}c[s>>2]=(c[s>>2]|0)+1}if((g|0)==39){u=c[r>>2]|0;c[v>>2]=(c[s>>2]|0)+1;Ah(u,30067,v);c[q>>2]=1;v=c[q>>2]|0;i=w;return v|0}else if((g|0)==41){c[q>>2]=0;v=c[q>>2]|0;i=w;return v|0}}return 0}function ky(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=b;c[h>>2]=0;a=c[f>>2]|0;if(c[(c[f>>2]|0)+4>>2]&1024){c[c[g>>2]>>2]=c[a+8>>2];c[e>>2]=1;j=c[e>>2]|0;i=k;return j|0}switch(d[a>>0]|0|0){case 156:{c[h>>2]=ky(c[(c[f>>2]|0)+12>>2]|0,c[g>>2]|0)|0;break}case 155:{if(ky(c[(c[f>>2]|0)+12>>2]|0,j)|0){c[c[g>>2]>>2]=0-(c[j>>2]|0);c[h>>2]=1}break}default:{}}c[e>>2]=c[h>>2];j=c[e>>2]|0;i=k;return j|0}function ly(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;g=f;l=f+24|0;k=f+20|0;h=f+16|0;j=f+12|0;c[l>>2]=a;c[k>>2]=b;c[h>>2]=d;c[j>>2]=e;b=c[l>>2]|0;e=c[k>>2]|0;a=c[j>>2]|0;c[g>>2]=c[h>>2];c[g+4>>2]=e;c[g+8>>2]=a;Ah(b,30128,g);i=f;return}function my(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+24|0;g=m+16|0;h=m+12|0;j=m+8|0;l=m+4|0;k=m;c[m+20>>2]=a;c[g>>2]=b;c[h>>2]=e;a:do if((d[c[h>>2]>>0]|0|0)==27){c[l>>2]=c[(c[h>>2]|0)+8>>2];c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[c[g>>2]>>2]|0))break a;c[k>>2]=c[(c[(c[g>>2]|0)+4>>2]|0)+((c[j>>2]|0)*20|0)+4>>2];if((c[k>>2]|0)!=0?(Td(c[k>>2]|0,c[l>>2]|0)|0)==0:0)break;c[j>>2]=(c[j>>2]|0)+1}c[f>>2]=(c[j>>2]|0)+1;l=c[f>>2]|0;i=m;return l|0}while(0);c[f>>2]=0;l=c[f>>2]|0;i=m;return l|0}function ny(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;b=ry(c[h>>2]|0,c[g>>2]|0,c[f>>2]|0,0)|0;i=e;return b|0}function oy(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;l=i;i=i+80|0;k=l+60|0;q=l+56|0;r=l+52|0;g=l+48|0;h=l+44|0;j=l+40|0;p=l+8|0;n=l+4|0;m=l;o=l+64|0;c[q>>2]=d;c[r>>2]=e;c[g>>2]=f;c[j>>2]=c[c[r>>2]>>2];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;c[p+24>>2]=0;c[p+28>>2]=0;c[p>>2]=c[q>>2];c[p+4>>2]=c[(c[r>>2]|0)+32>>2];c[p+8>>2]=c[j>>2];b[p+28>>1]=1;c[p+24>>2]=0;c[n>>2]=c[c[q>>2]>>2];a[o>>0]=a[(c[n>>2]|0)+69>>0]|0;a[(c[n>>2]|0)+69>>0]=1;c[m>>2]=fy(p,c[g>>2]|0)|0;a[(c[n>>2]|0)+69>>0]=a[o>>0]|0;if(c[m>>2]|0){c[k>>2]=0;r=c[k>>2]|0;i=l;return r|0}c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[c[j>>2]>>2]|0)){f=8;break}r=(py(c[(c[(c[j>>2]|0)+4>>2]|0)+((c[h>>2]|0)*20|0)>>2]|0,c[g>>2]|0,-1)|0)<2;d=(c[h>>2]|0)+1|0;if(r){f=6;break}c[h>>2]=d}if((f|0)==6){c[k>>2]=d;r=c[k>>2]|0;i=l;return r|0}else if((f|0)==8){c[k>>2]=0;r=c[k>>2]|0;i=l;return r|0}return 0}function py(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[h>>2]=a;c[j>>2]=e;c[k>>2]=f;if((c[h>>2]|0)==0|(c[j>>2]|0)==0){c[g>>2]=(c[j>>2]|0)==(c[h>>2]|0)?0:2;l=c[g>>2]|0;i=m;return l|0}c[l>>2]=c[(c[h>>2]|0)+4>>2]|c[(c[j>>2]|0)+4>>2];f=c[h>>2]|0;if(c[l>>2]&1024){if((c[f+4>>2]&c[(c[j>>2]|0)+4>>2]&1024|0)!=0?(c[(c[h>>2]|0)+8>>2]|0)==(c[(c[j>>2]|0)+8>>2]|0):0){c[g>>2]=0;l=c[g>>2]|0;i=m;return l|0}c[g>>2]=2;l=c[g>>2]|0;i=m;return l|0}a=d[c[h>>2]>>0]|0;if((d[f>>0]|0)!=(d[c[j>>2]>>0]|0)){if((a|0)==95?(py(c[(c[h>>2]|0)+12>>2]|0,c[j>>2]|0,c[k>>2]|0)|0)<2:0){c[g>>2]=1;l=c[g>>2]|0;i=m;return l|0}if((d[c[j>>2]>>0]|0)==95?(py(c[h>>2]|0,c[(c[j>>2]|0)+12>>2]|0,c[k>>2]|0)|0)<2:0){c[g>>2]=1;l=c[g>>2]|0;i=m;return l|0}c[g>>2]=2;l=c[g>>2]|0;i=m;return l|0}do if(((a|0)!=152?(d[c[h>>2]>>0]|0)!=154:0)?(c[(c[h>>2]|0)+8>>2]|0)!=0:0){f=c[(c[h>>2]|0)+8>>2]|0;a=c[(c[j>>2]|0)+8>>2]|0;if((d[c[h>>2]>>0]|0)==151){if(!(Td(f,a)|0))break;c[g>>2]=2;l=c[g>>2]|0;i=m;return l|0}else{if(!(yQ(f,a)|0))break;c[g>>2]=(d[c[h>>2]>>0]|0)==95?1:2;l=c[g>>2]|0;i=m;return l|0}}while(0);if((c[(c[h>>2]|0)+4>>2]&16|0)!=(c[(c[j>>2]|0)+4>>2]&16|0)){c[g>>2]=2;l=c[g>>2]|0;i=m;return l|0}do if(!(c[l>>2]&16384)){if(c[l>>2]&2048){c[g>>2]=2;l=c[g>>2]|0;i=m;return l|0}if(py(c[(c[h>>2]|0)+12>>2]|0,c[(c[j>>2]|0)+12>>2]|0,c[k>>2]|0)|0){c[g>>2]=2;l=c[g>>2]|0;i=m;return l|0}if(py(c[(c[h>>2]|0)+16>>2]|0,c[(c[j>>2]|0)+16>>2]|0,c[k>>2]|0)|0){c[g>>2]=2;l=c[g>>2]|0;i=m;return l|0}if(qy(c[(c[h>>2]|0)+20>>2]|0,c[(c[j>>2]|0)+20>>2]|0,c[k>>2]|0)|0){c[g>>2]=2;l=c[g>>2]|0;i=m;return l|0}if((c[l>>2]&8192|0)==0?(d[c[h>>2]>>0]|0)!=97:0){if((b[(c[h>>2]|0)+32>>1]|0)!=(b[(c[j>>2]|0)+32>>1]|0)){c[g>>2]=2;l=c[g>>2]|0;i=m;return l|0}if((c[(c[h>>2]|0)+28>>2]|0)!=(c[(c[j>>2]|0)+28>>2]|0)){if((c[(c[h>>2]|0)+28>>2]|0)==(c[k>>2]|0)?(c[(c[j>>2]|0)+28>>2]|0)<0:0)break;c[g>>2]=2;l=c[g>>2]|0;i=m;return l|0}}}while(0);c[g>>2]=0;l=c[g>>2]|0;i=m;return l|0}function qy(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;m=n+24|0;f=n+20|0;g=n+16|0;h=n+12|0;j=n+8|0;k=n+4|0;l=n;c[f>>2]=a;c[g>>2]=b;c[h>>2]=e;if((c[f>>2]|0)==0&(c[g>>2]|0)==0){c[m>>2]=0;m=c[m>>2]|0;i=n;return m|0}if((c[f>>2]|0)==0|(c[g>>2]|0)==0){c[m>>2]=1;m=c[m>>2]|0;i=n;return m|0}if((c[c[f>>2]>>2]|0)!=(c[c[g>>2]>>2]|0)){c[m>>2]=1;m=c[m>>2]|0;i=n;return m|0}c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[c[f>>2]>>2]|0)){f=14;break}c[k>>2]=c[(c[(c[f>>2]|0)+4>>2]|0)+((c[j>>2]|0)*20|0)>>2];c[l>>2]=c[(c[(c[g>>2]|0)+4>>2]|0)+((c[j>>2]|0)*20|0)>>2];if((d[(c[(c[f>>2]|0)+4>>2]|0)+((c[j>>2]|0)*20|0)+12>>0]|0|0)!=(d[(c[(c[g>>2]|0)+4>>2]|0)+((c[j>>2]|0)*20|0)+12>>0]|0|0)){f=10;break}if(py(c[k>>2]|0,c[l>>2]|0,c[h>>2]|0)|0){f=12;break}c[j>>2]=(c[j>>2]|0)+1}if((f|0)==10){c[m>>2]=1;m=c[m>>2]|0;i=n;return m|0}else if((f|0)==12){c[m>>2]=1;m=c[m>>2]|0;i=n;return m|0}else if((f|0)==14){c[m>>2]=0;m=c[m>>2]|0;i=n;return m|0}return 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,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+64|0;n=t+48|0;o=t+44|0;p=t+40|0;q=t+36|0;r=t+32|0;m=t+28|0;s=t+24|0;k=t+20|0;h=t+16|0;f=t+12|0;j=t+8|0;g=t+4|0;l=t;c[n>>2]=a;c[o>>2]=b;c[p>>2]=d;c[q>>2]=e;c[r>>2]=0;if(!(c[o>>2]|0)){s=c[r>>2]|0;i=t;return s|0}c[m>>2]=c[p>>2]&1;c[k>>2]=0;if(c[q>>2]|0){c[s>>2]=c[c[q>>2]>>2];c[k>>2]=32768}else{b=c[n>>2]|0;e=sy(c[o>>2]|0,c[p>>2]|0)|0;c[s>>2]=Fw(b,e,((e|0)<0)<<31>>31)|0}c[r>>2]=c[s>>2];if(!(c[r>>2]|0)){s=c[r>>2]|0;i=t;return s|0}c[h>>2]=ty(c[o>>2]|0,c[p>>2]|0)|0;c[f>>2]=c[h>>2]&4095;if((c[(c[o>>2]|0)+4>>2]&1024|0)==0?(c[(c[o>>2]|0)+8>>2]|0)!=0:0)c[j>>2]=(If(c[(c[o>>2]|0)+8>>2]|0)|0)+1;else c[j>>2]=0;if(!(c[m>>2]|0)){c[g>>2]=uy(c[o>>2]|0)|0;iR(c[s>>2]|0,c[o>>2]|0,c[g>>2]|0)|0;if((c[g>>2]|0)>>>0<48)kR((c[s>>2]|0)+(c[g>>2]|0)|0,0,48-(c[g>>2]|0)|0)|0}else iR(c[s>>2]|0,c[o>>2]|0,c[f>>2]|0)|0;e=(c[r>>2]|0)+4|0;c[e>>2]=c[e>>2]&-122881;e=(c[r>>2]|0)+4|0;c[e>>2]=c[e>>2]|c[h>>2]&24576;e=(c[r>>2]|0)+4|0;c[e>>2]=c[e>>2]|c[k>>2];if(c[j>>2]|0){k=(c[s>>2]|0)+(c[f>>2]|0)|0;c[(c[r>>2]|0)+8>>2]=k;c[l>>2]=k;iR(c[l>>2]|0,c[(c[o>>2]|0)+8>>2]|0,c[j>>2]|0)|0}do if(!((c[(c[o>>2]|0)+4>>2]|c[(c[r>>2]|0)+4>>2])&16384)){d=c[n>>2]|0;a=(c[o>>2]|0)+20|0;if(c[(c[o>>2]|0)+4>>2]&2048){m=Hx(d,c[a>>2]|0,c[m>>2]|0)|0;c[(c[r>>2]|0)+20>>2]=m;break}else{m=vy(d,c[a>>2]|0,c[m>>2]|0)|0;c[(c[r>>2]|0)+20>>2]=m;break}}while(0);a=c[o>>2]|0;if(!(c[(c[r>>2]|0)+4>>2]&24576)){if(c[a+4>>2]&16384){s=c[r>>2]|0;i=t;return s|0}s=ny(c[n>>2]|0,c[(c[o>>2]|0)+12>>2]|0,0)|0;c[(c[r>>2]|0)+12>>2]=s;s=ny(c[n>>2]|0,c[(c[o>>2]|0)+16>>2]|0,0)|0;c[(c[r>>2]|0)+16>>2]=s;s=c[r>>2]|0;i=t;return s|0}p=wy(a,c[p>>2]|0)|0;c[s>>2]=(c[s>>2]|0)+p;if(c[(c[r>>2]|0)+4>>2]&8192){p=ry(c[n>>2]|0,c[(c[o>>2]|0)+12>>2]|0,1,s)|0;c[(c[r>>2]|0)+12>>2]=p;p=ry(c[n>>2]|0,c[(c[o>>2]|0)+16>>2]|0,1,s)|0;c[(c[r>>2]|0)+16>>2]=p}if(!(c[q>>2]|0)){s=c[r>>2]|0;i=t;return s|0}c[c[q>>2]>>2]=c[s>>2];s=c[r>>2]|0;i=t;return s|0}function sy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=0;if(!(c[d>>2]|0)){a=c[f>>2]|0;i=g;return a|0}c[f>>2]=wy(c[d>>2]|0,c[e>>2]|0)|0;if(!(c[e>>2]&1)){a=c[f>>2]|0;i=g;return a|0}a=sy(c[(c[d>>2]|0)+12>>2]|0,c[e>>2]|0)|0;a=a+(sy(c[(c[d>>2]|0)+16>>2]|0,c[e>>2]|0)|0)|0;c[f>>2]=(c[f>>2]|0)+a;a=c[f>>2]|0;i=g;return a|0}function ty(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+8|0;g=f+4|0;e=f;c[d>>2]=a;c[g>>2]=b;do if(!(c[g>>2]&1))c[e>>2]=48;else{if((c[(c[d>>2]|0)+12>>2]|0)==0?(c[(c[d>>2]|0)+20>>2]|0)==0:0){c[e>>2]=16396;break}c[e>>2]=8220}while(0);i=f;return c[e>>2]|0}function uy(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[d>>2]=a;do if(!(c[(c[d>>2]|0)+4>>2]&16384))if(c[(c[d>>2]|0)+4>>2]&8192){c[b>>2]=28;break}else{c[b>>2]=48;break}else c[b>>2]=12;while(0);i=e;return c[b>>2]|0}function vy(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;g=q+32|0;h=q+28|0;j=q+24|0;k=q+20|0;n=q+16|0;m=q+12|0;p=q+8|0;l=q+4|0;o=q;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;if(!(c[j>>2]|0)){c[g>>2]=0;p=c[g>>2]|0;i=q;return p|0}c[n>>2]=Fw(c[h>>2]|0,8,0)|0;if(!(c[n>>2]|0)){c[g>>2]=0;p=c[g>>2]|0;i=q;return p|0}e=c[c[j>>2]>>2]|0;c[l>>2]=e;c[c[n>>2]>>2]=e;a:do if(!(c[k>>2]&1)){c[l>>2]=1;while(1){if((c[l>>2]|0)>=(c[c[j>>2]>>2]|0))break a;c[l>>2]=(c[l>>2]|0)+(c[l>>2]|0)}}while(0);e=Fw(c[h>>2]|0,(c[l>>2]|0)*20|0,0)|0;c[m>>2]=e;c[(c[n>>2]|0)+4>>2]=e;if(!(c[m>>2]|0)){Sf(c[h>>2]|0,c[n>>2]|0);c[g>>2]=0;p=c[g>>2]|0;i=q;return p|0}c[p>>2]=c[(c[j>>2]|0)+4>>2];c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[c[j>>2]>>2]|0))break;c[o>>2]=c[c[p>>2]>>2];e=ny(c[h>>2]|0,c[o>>2]|0,c[k>>2]|0)|0;c[c[m>>2]>>2]=e;e=nh(c[h>>2]|0,c[(c[p>>2]|0)+4>>2]|0)|0;c[(c[m>>2]|0)+4>>2]=e;e=nh(c[h>>2]|0,c[(c[p>>2]|0)+8>>2]|0)|0;c[(c[m>>2]|0)+8>>2]=e;a[(c[m>>2]|0)+12>>0]=a[(c[p>>2]|0)+12>>0]|0;e=(c[m>>2]|0)+13|0;a[e>>0]=a[e>>0]&-2;e=(c[m>>2]|0)+13|0;a[e>>0]=a[e>>0]&-3|((d[(c[p>>2]|0)+13>>0]|0)>>>1&1)<<1&255;c[(c[m>>2]|0)+16>>2]=c[(c[p>>2]|0)+16>>2];c[l>>2]=(c[l>>2]|0)+1;c[m>>2]=(c[m>>2]|0)+20;c[p>>2]=(c[p>>2]|0)+20}c[g>>2]=c[n>>2];p=c[g>>2]|0;i=q;return p|0}function wy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+8|0;g=f+4|0;e=f;c[d>>2]=a;c[g>>2]=b;c[e>>2]=(ty(c[d>>2]|0,c[g>>2]|0)|0)&4095;if((c[(c[d>>2]|0)+4>>2]&1024|0)==0?(c[(c[d>>2]|0)+8>>2]|0)!=0:0){g=(If(c[(c[d>>2]|0)+8>>2]|0)|0)+1|0;c[e>>2]=(c[e>>2]|0)+g}i=f;return(c[e>>2]|0)+7&-8|0}function xy(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;switch(c[e>>2]|0){case 116:{c[b>>2]=30312;break}case 118:{c[b>>2]=30322;break}case 117:{c[b>>2]=30332;break}default:c[b>>2]=30339}i=d;return c[b>>2]|0}function yy(a,f,g,h){a=a|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;l=t;p=t+36|0;m=t+32|0;j=t+28|0;n=t+24|0;q=t+20|0;r=t+16|0;k=t+12|0;s=t+8|0;o=t+4|0;c[m>>2]=a;c[j>>2]=f;c[n>>2]=g;c[q>>2]=h;c[k>>2]=c[c[m>>2]>>2];if((c[n>>2]|0)!=0?(d[(c[c[m>>2]>>2]|0)+65>>0]|0)==0:0){if((c[c[n>>2]>>2]|0)>(c[(c[k>>2]|0)+88+8>>2]|0)){s=c[m>>2]|0;c[l>>2]=c[q>>2];Ah(s,30345,l);c[p>>2]=1;s=c[p>>2]|0;i=t;return s|0}c[s>>2]=c[c[j>>2]>>2];c[r>>2]=0;c[o>>2]=c[(c[n>>2]|0)+4>>2];while(1){if((c[r>>2]|0)>=(c[c[n>>2]>>2]|0)){j=13;break}if(b[(c[o>>2]|0)+16>>1]|0){k=c[m>>2]|0;if((e[(c[o>>2]|0)+16>>1]|0)>(c[c[s>>2]>>2]|0)){j=10;break}zy(k,c[s>>2]|0,(e[(c[o>>2]|0)+16>>1]|0)-1|0,c[c[o>>2]>>2]|0,c[q>>2]|0,0)}c[r>>2]=(c[r>>2]|0)+1;c[o>>2]=(c[o>>2]|0)+20}if((j|0)==10){ly(k,c[q>>2]|0,(c[r>>2]|0)+1|0,c[c[s>>2]>>2]|0);c[p>>2]=1;s=c[p>>2]|0;i=t;return s|0}else if((j|0)==13){c[p>>2]=0;s=c[p>>2]|0;i=t;return s|0}}c[p>>2]=0;s=c[p>>2]|0;i=t;return s|0}function zy(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=i;i=i+48|0;k=q+32|0;t=q+28|0;s=q+24|0;n=q+20|0;l=q+16|0;m=q+12|0;r=q+8|0;p=q+4|0;o=q;c[k>>2]=b;c[t>>2]=e;c[s>>2]=f;c[n>>2]=g;c[l>>2]=h;c[m>>2]=j;c[r>>2]=c[(c[(c[t>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)>>2];c[o>>2]=c[c[k>>2]>>2];c[p>>2]=ny(c[o>>2]|0,c[r>>2]|0,0)|0;if(!(c[p>>2]|0)){i=q;return}if((a[c[l>>2]>>0]|0)!=71)Ay(c[p>>2]|0,c[m>>2]|0);if((d[c[n>>2]>>0]|0)==95)c[p>>2]=By(c[k>>2]|0,c[p>>2]|0,c[(c[n>>2]|0)+8>>2]|0)|0;k=(c[p>>2]|0)+4|0;c[k>>2]=c[k>>2]|4194304;k=(c[n>>2]|0)+4|0;c[k>>2]=c[k>>2]|32768;Zu(c[o>>2]|0,c[n>>2]|0);k=c[n>>2]|0;l=c[p>>2]|0;m=k+48|0;do{c[k>>2]=c[l>>2];k=k+4|0;l=l+4|0}while((k|0)<(m|0));if((c[(c[n>>2]|0)+4>>2]&1024|0)==0?(c[(c[n>>2]|0)+8>>2]|0)!=0:0){t=nh(c[o>>2]|0,c[(c[n>>2]|0)+8>>2]|0)|0;c[(c[n>>2]|0)+8>>2]=t;t=(c[n>>2]|0)+4|0;c[t>>2]=c[t>>2]|65536}Sf(c[o>>2]|0,c[p>>2]|0);i=q;return}function Ay(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+48|0;d=g+32|0;e=g+28|0;f=g;c[d>>2]=a;c[e>>2]=b;if((c[e>>2]|0)<=0){i=g;return}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;c[f+24>>2]=0;c[f+4>>2]=195;c[f+24>>2]=c[e>>2];by(f,c[d>>2]|0)|0;i=g;return}function By(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;h=e+16|0;g=e+12|0;j=e+8|0;f=e;c[h>>2]=a;c[g>>2]=b;c[j>>2]=d;Cy(f,c[j>>2]|0);d=Yv(c[h>>2]|0,c[g>>2]|0,f,0)|0;i=e;return d|0}function Cy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;c[c[e>>2]>>2]=c[f>>2];b=If(c[f>>2]|0)|0;c[(c[e>>2]|0)+4>>2]=b;i=d;return}function Dy(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;f=h+4|0;g=h;c[f>>2]=b;c[g>>2]=e;if((d[c[g>>2]>>0]|0|0)!=153){i=h;return 0}b=(c[g>>2]|0)+38|0;a[b>>0]=(d[b>>0]|0)+(c[(c[f>>2]|0)+24>>2]|0);i=h;return 0}function Ey(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;g=h;d=h+16|0;j=h+12|0;f=h+8|0;e=h+4|0;c[d>>2]=a;c[j>>2]=b;c[f>>2]=0;c[e>>2]=c[(c[c[d>>2]>>2]|0)+88+12>>2];if((c[j>>2]|0)<=(c[e>>2]|0)){j=c[f>>2]|0;i=h;return j|0}j=c[d>>2]|0;c[g>>2]=c[e>>2];Ah(j,30376,g);c[f>>2]=1;j=c[f>>2]|0;i=h;return j|0}function Fy(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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,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;X=i;i=i+176|0;W=X+40|0;V=X+24|0;D=X+8|0;B=X;I=X+164|0;J=X+160|0;m=X+156|0;K=X+152|0;L=X+148|0;M=X+144|0;N=X+140|0;q=X+136|0;s=X+132|0;O=X+128|0;o=X+124|0;t=X+120|0;P=X+116|0;x=X+112|0;S=X+108|0;U=X+104|0;T=X+100|0;Q=X+96|0;A=X+92|0;v=X+88|0;w=X+84|0;z=X+80|0;p=X+76|0;F=X+72|0;u=X+68|0;r=X+64|0;E=X+60|0;y=X+56|0;H=X+52|0;R=X+48|0;c[J>>2]=f;c[m>>2]=g;c[K>>2]=h;c[L>>2]=j;c[M>>2]=k;c[N>>2]=l;c[O>>2]=0;c[o>>2]=0;c[t>>2]=0;c[P>>2]=c[c[J>>2]>>2];c[S>>2]=0;c[U>>2]=c[M>>2];c[T>>2]=0;c[Q>>2]=0;c[A>>2]=0;c[(c[N>>2]|0)+28>>2]=-1;c[(c[N>>2]|0)+44>>2]=0;a:do if(c[m>>2]|0){if(e[(c[M>>2]|0)+28>>1]&20){c[m>>2]=0;break}c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[(c[P>>2]|0)+20>>2]|0))break a;h=(Td(c[(c[(c[P>>2]|0)+16>>2]|0)+(c[q>>2]<<4)>>2]|0,c[m>>2]|0)|0)==0;l=c[q>>2]|0;if(h)break;c[q>>2]=l+1}c[T>>2]=c[(c[(c[P>>2]|0)+16>>2]|0)+(l<<4)+12>>2]}while(0);b:while(1){if(!((c[M>>2]|0)!=0?(c[O>>2]|0)==0:0)){G=89;break}c[z>>2]=c[(c[M>>2]|0)+4>>2];if(c[z>>2]|0){c[q>>2]=0;c[x>>2]=(c[z>>2]|0)+8;while(1){if((c[q>>2]|0)>=(c[c[z>>2]>>2]|0))break; -c[A>>2]=c[(c[x>>2]|0)+16>>2];if((c[(c[x>>2]|0)+20>>2]|0)!=0?(e[(c[(c[x>>2]|0)+20>>2]|0)+6>>1]&1024|0)!=0:0){c[p>>2]=0;c[w>>2]=c[c[(c[x>>2]|0)+20>>2]>>2];c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[c[w>>2]>>2]|0))break;if(Ly(c[(c[(c[w>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)+8>>2]|0,c[L>>2]|0,c[K>>2]|0,c[m>>2]|0)|0){c[O>>2]=(c[O>>2]|0)+1;c[o>>2]=2;c[S>>2]=c[x>>2];b[(c[N>>2]|0)+32>>1]=c[s>>2];c[p>>2]=1}c[s>>2]=(c[s>>2]|0)+1}if(!((c[p>>2]|0)!=0|(c[K>>2]|0)==0))G=21}else G=21;c:do if((G|0)==21){G=0;if((c[m>>2]|0)!=0?(c[(c[A>>2]|0)+64>>2]|0)!=(c[T>>2]|0):0)break;if(c[K>>2]|0){if(c[(c[x>>2]|0)+12>>2]|0)l=c[(c[x>>2]|0)+12>>2]|0;else l=c[c[A>>2]>>2]|0;c[F>>2]=l;if(Td(c[F>>2]|0,c[K>>2]|0)|0)break}h=c[o>>2]|0;c[o>>2]=h+1;if(!h)c[S>>2]=c[x>>2];c[s>>2]=0;c[v>>2]=c[(c[A>>2]|0)+4>>2];while(1){if((c[s>>2]|0)>=(b[(c[A>>2]|0)+34>>1]|0))break c;if(!(Td(c[c[v>>2]>>2]|0,c[L>>2]|0)|0)){if((c[O>>2]|0)!=1)break;if((d[(c[x>>2]|0)+36>>0]&4|0)==0?(My(c[(c[x>>2]|0)+52>>2]|0,c[L>>2]|0)|0)==0:0)break}c[s>>2]=(c[s>>2]|0)+1;c[v>>2]=(c[v>>2]|0)+24}c[O>>2]=(c[O>>2]|0)+1;c[S>>2]=c[x>>2];if((c[s>>2]|0)==(b[(c[A>>2]|0)+32>>1]|0))l=-1;else l=(c[s>>2]&65535)<<16>>16;b[(c[N>>2]|0)+32>>1]=l}while(0);c[q>>2]=(c[q>>2]|0)+1;c[x>>2]=(c[x>>2]|0)+72}if(c[S>>2]|0){c[(c[N>>2]|0)+28>>2]=c[(c[S>>2]|0)+44>>2];c[(c[N>>2]|0)+44>>2]=c[(c[S>>2]|0)+16>>2];if(d[(c[S>>2]|0)+36>>0]&8){h=(c[N>>2]|0)+4|0;c[h>>2]=c[h>>2]|1048576}c[T>>2]=c[(c[(c[N>>2]|0)+44>>2]|0)+64>>2]}}if((c[m>>2]|0)==0&(c[K>>2]|0)!=0&(c[o>>2]|0)==0?(c[(c[J>>2]|0)+420>>2]|0)!=0:0){c[u>>2]=d[(c[J>>2]|0)+440>>0];if((c[u>>2]|0)!=109?(Td(30795,c[K>>2]|0)|0)==0:0){c[(c[N>>2]|0)+28>>2]=1;c[A>>2]=c[(c[J>>2]|0)+420>>2]}else G=50;do if((G|0)==50){G=0;if((c[u>>2]|0)!=108?(Td(30799,c[K>>2]|0)|0)==0:0){c[(c[N>>2]|0)+28>>2]=0;c[A>>2]=c[(c[J>>2]|0)+420>>2];break}c[A>>2]=0}while(0);if(c[A>>2]|0){c[T>>2]=c[(c[A>>2]|0)+64>>2];c[o>>2]=(c[o>>2]|0)+1;c[r>>2]=0;c[v>>2]=c[(c[A>>2]|0)+4>>2];while(1){if((c[r>>2]|0)>=(b[(c[A>>2]|0)+34>>1]|0))break;h=(Td(c[c[v>>2]>>2]|0,c[L>>2]|0)|0)==0;n=c[r>>2]|0;if(h){G=58;break}c[r>>2]=n+1;c[v>>2]=(c[v>>2]|0)+24}if((G|0)==58?(G=0,(n|0)==(b[(c[A>>2]|0)+32>>1]|0)):0)c[r>>2]=-1;if(((c[r>>2]|0)>=(b[(c[A>>2]|0)+34>>1]|0)?(qi(c[L>>2]|0)|0)!=0:0)?(d[(c[A>>2]|0)+42>>0]&64|0)==0:0)c[r>>2]=-1;if((c[r>>2]|0)<(b[(c[A>>2]|0)+34>>1]|0)){c[O>>2]=(c[O>>2]|0)+1;l=c[N>>2]|0;do if((c[r>>2]|0)>=0){k=(c[r>>2]|0)>=32?-1:1<>2];f=c[J>>2]|0;if(!(c[l+28>>2]|0)){h=f+432|0;c[h>>2]=c[h>>2]|k;break}else{h=f+436|0;c[h>>2]=c[h>>2]|k;break}}else a[l+1>>0]=68;while(0);b[(c[N>>2]|0)+32>>1]=c[r>>2];c[(c[N>>2]|0)+44>>2]=c[A>>2];c[Q>>2]=1}}}if((((c[O>>2]|0)==0&(c[o>>2]|0)==1&(c[S>>2]|0)!=0?(e[(c[M>>2]|0)+28>>1]&32|0)==0:0)?(qi(c[L>>2]|0)|0)!=0:0)?(d[(c[(c[S>>2]|0)+16>>2]|0)+42>>0]&64|0)==0:0){c[O>>2]=1;b[(c[N>>2]|0)+32>>1]=-1;a[(c[N>>2]|0)+1>>0]=68}h=c[(c[M>>2]|0)+8>>2]|0;c[w>>2]=h;d:do if((h|0)!=0&(c[K>>2]|0)==0&(c[O>>2]|0)==0){c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[c[w>>2]>>2]|0))break d;c[E>>2]=c[(c[(c[w>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)+4>>2];if((c[E>>2]|0)!=0?(Td(c[E>>2]|0,c[L>>2]|0)|0)==0:0){G=82;break b}c[s>>2]=(c[s>>2]|0)+1}}while(0);if(c[O>>2]|0)continue;c[M>>2]=c[(c[M>>2]|0)+16>>2];c[t>>2]=(c[t>>2]|0)+1}if((G|0)==82){c[y>>2]=c[(c[(c[w>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)>>2];if((e[(c[M>>2]|0)+28>>1]&1|0)==0?(c[(c[y>>2]|0)+4>>2]&2|0)!=0:0){W=c[J>>2]|0;c[B>>2]=c[E>>2];Ah(W,30803,B);c[I>>2]=2;W=c[I>>2]|0;i=X;return W|0}zy(c[J>>2]|0,c[w>>2]|0,c[s>>2]|0,c[N>>2]|0,19266,c[t>>2]|0);c[O>>2]=1;c[S>>2]=0}else if((G|0)==89){if((c[O>>2]|0)==0&(c[K>>2]|0)==0?(c[(c[N>>2]|0)+4>>2]&64|0)!=0:0){a[c[N>>2]>>0]=97;c[(c[N>>2]|0)+44>>2]=0;c[I>>2]=1;W=c[I>>2]|0;i=X;return W|0}if((c[O>>2]|0)!=1){c[H>>2]=(c[O>>2]|0)==0?30834:30849;do if(!(c[m>>2]|0)){k=c[J>>2]|0;l=c[H>>2]|0;if(c[K>>2]|0){K=c[K>>2]|0;W=c[L>>2]|0;c[V>>2]=l;c[V+4>>2]=K;c[V+8>>2]=W;Ah(k,30884,V);break}else{V=c[L>>2]|0;c[W>>2]=l;c[W+4>>2]=V;Ah(k,30894,W);break}}else{W=c[J>>2]|0;G=c[m>>2]|0;K=c[K>>2]|0;V=c[L>>2]|0;c[D>>2]=c[H>>2];c[D+4>>2]=G;c[D+8>>2]=K;c[D+12>>2]=V;Ah(W,30871,D)}while(0);a[(c[J>>2]|0)+17>>0]=1;W=(c[U>>2]|0)+24|0;c[W>>2]=(c[W>>2]|0)+1}if((c[S>>2]|0)!=0?(b[(c[N>>2]|0)+32>>1]|0)>=0:0){W=b[(c[N>>2]|0)+32>>1]|0;c[R>>2]=W;c[R>>2]=(c[R>>2]|0)>=64?63:W;R=lR(1,0,c[R>>2]|0)|0;W=(c[S>>2]|0)+56|0;S=W;V=c[S+4>>2]|C;c[W>>2]=c[S>>2]|R;c[W+4>>2]=V}Zu(c[P>>2]|0,c[(c[N>>2]|0)+12>>2]|0);c[(c[N>>2]|0)+12>>2]=0;Zu(c[P>>2]|0,c[(c[N>>2]|0)+16>>2]|0);c[(c[N>>2]|0)+16>>2]=0;a[c[N>>2]>>0]=(c[Q>>2]|0)!=0?62:152}if((c[O>>2]|0)!=1){c[I>>2]=2;W=c[I>>2]|0;i=X;return W|0}if(!(c[(c[N>>2]|0)+4>>2]&4194304))Ny(c[J>>2]|0,c[N>>2]|0,c[T>>2]|0,c[(c[M>>2]|0)+4>>2]|0);while(1){W=(c[U>>2]|0)+20|0;c[W>>2]=(c[W>>2]|0)+1;if((c[U>>2]|0)==(c[M>>2]|0))break;c[U>>2]=c[(c[U>>2]|0)+16>>2]}c[I>>2]=1;W=c[I>>2]|0;i=X;return W|0}function Gy(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;k=m;g=m+24|0;h=m+20|0;j=m+16|0;n=m+12|0;l=m+8|0;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[n>>2]=f;if(!((e[(c[h>>2]|0)+28>>1]|0)&c[n>>2])){i=m;return}c[l>>2]=30711;if(!((e[(c[h>>2]|0)+28>>1]|0)&32)){if((e[(c[h>>2]|0)+28>>1]|0)&4)c[l>>2]=30757}else c[l>>2]=30739;n=c[g>>2]|0;d=c[l>>2]|0;c[k>>2]=c[j>>2];c[k+4>>2]=d;Ah(n,30775,k);i=m;return}function Hy(a){a=a|0;var b=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;e=g+8|0;f=g;c[e>>2]=a;h[f>>3]=-1.0;if((d[c[e>>2]>>0]|0|0)!=133){c[b>>2]=-1;f=c[b>>2]|0;i=g;return f|0}a=c[(c[e>>2]|0)+8>>2]|0;Ky(a,f,If(c[(c[e>>2]|0)+8>>2]|0)|0,1)|0;if(+h[f>>3]>1.0){c[b>>2]=-1;f=c[b>>2]|0;i=g;return f|0}else{c[b>>2]=~~(+h[f>>3]*134217728.0);f=c[b>>2]|0;i=g;return f|0}return 0}function Iy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;i=i+48|0;f=e+44|0;h=e+40|0;g=e+12|0;d=e;c[f>>2]=a;c[h>>2]=b;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;c[g+4>>2]=196;c[g+24>>2]=d;c[d>>2]=c[h>>2];c[d+4>>2]=0;c[d+8>>2]=0;ay(g,c[(c[f>>2]|0)+20>>2]|0)|0;i=e;return((c[d+4>>2]|0)>0?1:(c[d+8>>2]|0)==0)&1|0}function Jy(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+20|0;f=l+16|0;j=l+12|0;g=l+8|0;h=l+4|0;k=l;c[e>>2]=a;c[f>>2]=b;if((d[c[f>>2]>>0]|0|0)!=152?(d[c[f>>2]>>0]|0|0)!=154:0){i=l;return 0}c[g>>2]=c[(c[e>>2]|0)+24>>2];c[h>>2]=c[c[g>>2]>>2];if(c[h>>2]|0)e=c[c[h>>2]>>2]|0;else e=0;c[k>>2]=e;c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[k>>2]|0))break;if((c[(c[f>>2]|0)+28>>2]|0)==(c[(c[h>>2]|0)+8+((c[j>>2]|0)*72|0)+44>>2]|0))break;c[j>>2]=(c[j>>2]|0)+1}e=c[g>>2]|0;if((c[j>>2]|0)<(c[k>>2]|0)){k=e+4|0;c[k>>2]=(c[k>>2]|0)+1;i=l;return 0}else{k=e+8|0;c[k>>2]=(c[k>>2]|0)+1;i=l;return 0}return 0}function Ky(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var j=0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0;G=i;i=i+96|0;F=G+76|0;w=G+72|0;x=G+68|0;j=G+64|0;m=G+80|0;r=G+60|0;E=G+56|0;u=G+52|0;t=G+16|0;p=G+48|0;z=G+44|0;q=G+40|0;y=G+36|0;D=G+8|0;A=G+32|0;B=G+28|0;n=G+24|0;v=G;c[w>>2]=b;c[x>>2]=e;c[j>>2]=f;a[m>>0]=g;c[E>>2]=(c[w>>2]|0)+(c[j>>2]|0);c[u>>2]=1;b=t;c[b>>2]=0;c[b+4>>2]=0;c[p>>2]=0;c[z>>2]=1;c[q>>2]=0;c[y>>2]=1;c[A>>2]=0;c[B>>2]=0;h[c[x>>2]>>3]=0.0;if((d[m>>0]|0)==1)c[r>>2]=1;else{c[r>>2]=2;c[n>>2]=3-(d[m>>0]|0);while(1){if((c[n>>2]|0)>=(c[j>>2]|0))break;if(a[(c[w>>2]|0)+(c[n>>2]|0)>>0]|0)break;c[n>>2]=(c[n>>2]|0)+2}c[B>>2]=(c[n>>2]|0)<(c[j>>2]|0)&1;c[E>>2]=(c[w>>2]|0)+(c[n>>2]|0)+(d[m>>0]|0)+-3;c[w>>2]=(c[w>>2]|0)+(d[m>>0]&1)}while(1){if((c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0)break;if(!(d[19267+(d[c[w>>2]>>0]|0)>>0]&1))break;c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0)}if((c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0){c[F>>2]=0;F=c[F>>2]|0;i=G;return F|0}if((a[c[w>>2]>>0]|0)!=45){if((a[c[w>>2]>>0]|0)==43)c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0)}else{c[u>>2]=-1;c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0)}while(1){if((c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0)break;if((a[c[w>>2]>>0]|0)!=48)break;c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0);c[A>>2]=(c[A>>2]|0)+1}while(1){if((c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0)break;b=t;e=c[b+4>>2]|0;if(!((d[19267+(d[c[w>>2]>>0]|0)>>0]&4|0)!=0&((e|0)<214748364|(e|0)==214748364&(c[b>>2]|0)>>>0<3435973835)))break;b=t;b=rR(c[b>>2]|0,c[b+4>>2]|0,10,0)|0;e=(a[c[w>>2]>>0]|0)-48|0;e=gR(b|0,C|0,e|0,((e|0)<0)<<31>>31|0)|0;b=t;c[b>>2]=e;c[b+4>>2]=C;c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0);c[A>>2]=(c[A>>2]|0)+1}while(1){if((c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0)break;if(!(d[19267+(d[c[w>>2]>>0]|0)>>0]&4))break;c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0);c[A>>2]=(c[A>>2]|0)+1;c[p>>2]=(c[p>>2]|0)+1}a:do if((c[w>>2]|0)>>>0<(c[E>>2]|0)>>>0){b:do if((a[c[w>>2]>>0]|0)==46){c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0);while(1){if((c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0)break;b=t;e=c[b+4>>2]|0;if(!((d[19267+(d[c[w>>2]>>0]|0)>>0]&4|0)!=0&((e|0)<214748364|(e|0)==214748364&(c[b>>2]|0)>>>0<3435973835)))break;b=t;b=rR(c[b>>2]|0,c[b+4>>2]|0,10,0)|0;e=(a[c[w>>2]>>0]|0)-48|0;e=gR(b|0,C|0,e|0,((e|0)<0)<<31>>31|0)|0;b=t;c[b>>2]=e;c[b+4>>2]=C;c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0);c[A>>2]=(c[A>>2]|0)+1;c[p>>2]=(c[p>>2]|0)+-1}while(1){if((c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0)break b;if(!(d[19267+(d[c[w>>2]>>0]|0)>>0]&4))break b;c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0);c[A>>2]=(c[A>>2]|0)+1}}while(0);if((c[w>>2]|0)>>>0<(c[E>>2]|0)>>>0){if(!((a[c[w>>2]>>0]|0)!=101?(a[c[w>>2]>>0]|0)!=69:0))o=38;c:do if((o|0)==38){c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0);c[y>>2]=0;if((c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0)break a;if((a[c[w>>2]>>0]|0)!=45){if((a[c[w>>2]>>0]|0)==43)c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0)}else{c[z>>2]=-1;c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0)}while(1){if((c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0)break c;if(!(d[19267+(d[c[w>>2]>>0]|0)>>0]&4))break c;if((c[q>>2]|0)<1e4)j=((c[q>>2]|0)*10|0)+((a[c[w>>2]>>0]|0)-48)|0;else j=1e4;c[q>>2]=j;c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0);c[y>>2]=1}}while(0);if((c[A>>2]|0)!=0&(c[y>>2]|0)!=0)while(1){if((c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0)break a;if(!(d[19267+(d[c[w>>2]>>0]|0)>>0]&1))break a;c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0)}}}while(0);r=_(c[q>>2]|0,c[z>>2]|0)|0;c[q>>2]=r+(c[p>>2]|0);if((c[q>>2]|0)<0){c[z>>2]=-1;c[q>>2]=_(c[q>>2]|0,-1)|0}else c[z>>2]=1;r=t;do if((c[r>>2]|0)!=0|(c[r+4>>2]|0)!=0){d:do if((c[z>>2]|0)>0)while(1){r=t;p=c[r+4>>2]|0;if(!((p|0)<214748364|(p|0)==214748364&(c[r>>2]|0)>>>0<3435973836?(c[q>>2]|0)>0:0))break d;c[q>>2]=(c[q>>2]|0)+-1;p=t;p=rR(c[p>>2]|0,c[p+4>>2]|0,10,0)|0;r=t;c[r>>2]=p;c[r+4>>2]=C}else while(1){r=t;r=qR(c[r>>2]|0,c[r+4>>2]|0,10,0)|0;if(!((r|0)!=0|(C|0)!=0?0:(c[q>>2]|0)>0))break d;c[q>>2]=(c[q>>2]|0)+-1;p=t;p=pR(c[p>>2]|0,c[p+4>>2]|0,10,0)|0;r=t;c[r>>2]=p;c[r+4>>2]=C}while(0);p=(c[u>>2]|0)<0;r=t;o=c[r>>2]|0;r=c[r+4>>2]|0;b=fR(0,0,o|0,r|0)|0;u=t;c[u>>2]=p?b:o;c[u+4>>2]=p?C:r;if(!(c[q>>2]|0)){z=t;h[D>>3]=+((c[z>>2]|0)>>>0)+4294967296.0*+(c[z+4>>2]|0);break}h[v>>3]=1.0;if((c[q>>2]|0)>307&(c[q>>2]|0)<342){while(1){if(!((c[q>>2]|0)%308|0))break;h[v>>3]=+h[v>>3]*10.0;c[q>>2]=(c[q>>2]|0)-1}u=t;l=+((c[u>>2]|0)>>>0)+4294967296.0*+(c[u+4>>2]|0);k=+h[v>>3];if((c[z>>2]|0)<0){h[D>>3]=l/k;h[D>>3]=+h[D>>3]/1.e+308;break}else{h[D>>3]=l*k;h[D>>3]=+h[D>>3]*1.e+308;break}}if((c[q>>2]|0)>=342){v=t;k=+((c[v>>2]|0)>>>0)+4294967296.0*+(c[v+4>>2]|0);if((c[z>>2]|0)<0){h[D>>3]=0.0*k;break}else{h[D>>3]=s*k;break}}while(1){if(!((c[q>>2]|0)%22|0))break;h[v>>3]=+h[v>>3]*10.0;c[q>>2]=(c[q>>2]|0)-1}while(1){if((c[q>>2]|0)<=0)break;h[v>>3]=+h[v>>3]*1.0e22;c[q>>2]=(c[q>>2]|0)-22}u=t;l=+((c[u>>2]|0)>>>0)+4294967296.0*+(c[u+4>>2]|0);k=+h[v>>3];if((c[z>>2]|0)<0){h[D>>3]=l/k;break}else{h[D>>3]=l*k;break}}else h[D>>3]=((c[u>>2]|0)<0?(c[A>>2]|0)!=0:0)?-0.0:0.0;while(0);h[c[x>>2]>>3]=+h[D>>3];if(((c[A>>2]|0)>0?(c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0:0)&(c[y>>2]|0)!=0)j=(c[B>>2]|0)==0;else j=0;c[F>>2]=j&1;F=c[F>>2]|0;i=G;return F|0}function Ly(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=0;while(1){if(!(a[(c[h>>2]|0)+(c[m>>2]|0)>>0]|0))break;if((a[(c[h>>2]|0)+(c[m>>2]|0)>>0]|0)==46)break;c[m>>2]=(c[m>>2]|0)+1}do if(c[l>>2]|0){if((zd(c[h>>2]|0,c[l>>2]|0,c[m>>2]|0)|0)==0?(a[(c[l>>2]|0)+(c[m>>2]|0)>>0]|0)==0:0)break;c[g>>2]=0;e=c[g>>2]|0;i=n;return e|0}while(0);c[h>>2]=(c[h>>2]|0)+((c[m>>2]|0)+1);c[m>>2]=0;while(1){if(!(a[(c[h>>2]|0)+(c[m>>2]|0)>>0]|0))break;if((a[(c[h>>2]|0)+(c[m>>2]|0)>>0]|0)==46)break;c[m>>2]=(c[m>>2]|0)+1}do if(c[k>>2]|0){if((zd(c[h>>2]|0,c[k>>2]|0,c[m>>2]|0)|0)==0?(a[(c[k>>2]|0)+(c[m>>2]|0)>>0]|0)==0:0)break;c[g>>2]=0;e=c[g>>2]|0;i=n;return e|0}while(0);c[h>>2]=(c[h>>2]|0)+((c[m>>2]|0)+1);if((c[j>>2]|0)!=0?(Td(c[h>>2]|0,c[j>>2]|0)|0)!=0:0){c[g>>2]=0;e=c[g>>2]|0;i=n;return e|0}c[g>>2]=1;e=c[g>>2]|0;i=n;return e|0}function My(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;a:do if(c[e>>2]|0){c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[e>>2]|0)+4>>2]|0))break a;if(!(Td(c[(c[c[e>>2]>>2]|0)+(c[g>>2]<<3)>>2]|0,c[f>>2]|0)|0))break;c[g>>2]=(c[g>>2]|0)+1}c[d>>2]=1;b=c[d>>2]|0;i=h;return b|0}while(0);c[d>>2]=0;b=c[d>>2]|0;i=h;return b|0}function Ny(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+48|0;k=s+36|0;l=s+32|0;j=s+28|0;m=s+24|0;t=s+20|0;q=s+16|0;r=s+12|0;p=s+8|0;o=s+4|0;n=s;c[k>>2]=e;c[l>>2]=f;c[j>>2]=g;c[m>>2]=h;c[t>>2]=c[c[k>>2]>>2];c[q>>2]=0;if(!(c[(c[t>>2]|0)+288>>2]|0)){i=s;return}c[o>>2]=Dh(c[c[k>>2]>>2]|0,c[j>>2]|0)|0;if((c[o>>2]|0)<0){i=s;return}a:do if((d[c[l>>2]>>0]|0)==62)c[q>>2]=c[(c[k>>2]|0)+420>>2];else{c[p>>2]=0;while(1){if((c[p>>2]|0)>=(c[c[m>>2]>>2]|0))break a;j=c[p>>2]|0;if((c[(c[l>>2]|0)+28>>2]|0)==(c[(c[m>>2]|0)+8+((c[p>>2]|0)*72|0)+44>>2]|0))break;c[p>>2]=j+1}c[q>>2]=c[(c[m>>2]|0)+8+(j*72|0)+16>>2]}while(0);c[n>>2]=b[(c[l>>2]|0)+32>>1];if(!(c[q>>2]|0)){i=s;return}do if((c[n>>2]|0)<0)if((b[(c[q>>2]|0)+32>>1]|0)>=0){c[r>>2]=c[(c[(c[q>>2]|0)+4>>2]|0)+((b[(c[q>>2]|0)+32>>1]|0)*24|0)>>2];break}else{c[r>>2]=20759;break}else c[r>>2]=c[(c[(c[q>>2]|0)+4>>2]|0)+((c[n>>2]|0)*24|0)>>2];while(0);if(2!=(Oy(c[k>>2]|0,c[c[q>>2]>>2]|0,c[r>>2]|0,c[o>>2]|0)|0)){i=s;return}a[c[l>>2]>>0]=101;i=s;return}function Oy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+64|0;n=p+16|0;m=p;f=p+48|0;g=p+44|0;h=p+40|0;j=p+36|0;k=p+32|0;o=p+28|0;l=p+24|0;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=c[c[f>>2]>>2];c[o>>2]=c[(c[(c[k>>2]|0)+16>>2]|0)+(c[j>>2]<<4)>>2];c[l>>2]=Sb[c[(c[k>>2]|0)+288>>2]&255](c[(c[k>>2]|0)+292>>2]|0,20,c[g>>2]|0,c[h>>2]|0,c[o>>2]|0,c[(c[f>>2]|0)+496>>2]|0)|0;if((c[l>>2]|0)!=1){if(!((c[l>>2]|0)!=2&(c[l>>2]|0)!=0)){o=c[l>>2]|0;i=p;return o|0}Nw(c[f>>2]|0);o=c[l>>2]|0;i=p;return o|0}e=c[f>>2]|0;if((c[j>>2]|0)!=0?1:(c[(c[k>>2]|0)+20>>2]|0)>2){k=c[g>>2]|0;n=c[h>>2]|0;c[m>>2]=c[o>>2];c[m+4>>2]=k;c[m+8>>2]=n;Ah(e,30901,m)}else{o=c[h>>2]|0;c[n>>2]=c[g>>2];c[n+4>>2]=o;Ah(e,30934,n)}c[(c[f>>2]|0)+12>>2]=23;o=c[l>>2]|0;i=p;return o|0}function St(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[g>>2]=b;c[h>>2]=e;c[j>>2]=d[c[g>>2]>>0];if(!(c[j>>2]&128)){l=c[h>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=0;a[f>>0]=1;l=a[f>>0]|0;i=m;return l|0}c[g>>2]=(c[g>>2]|0)+1;c[k>>2]=d[c[g>>2]>>0];if(!(c[k>>2]&128)){c[j>>2]=c[j>>2]&127;c[j>>2]=c[j>>2]<<7;c[j>>2]=c[j>>2]|c[k>>2];l=c[h>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=0;a[f>>0]=2;l=a[f>>0]|0;i=m;return l|0}c[g>>2]=(c[g>>2]|0)+1;c[j>>2]=c[j>>2]<<14;c[j>>2]=c[j>>2]|(d[c[g>>2]>>0]|0);e=(c[j>>2]&128|0)!=0;c[j>>2]=c[j>>2]&2080895;if(!e){c[k>>2]=c[k>>2]&127;c[k>>2]=c[k>>2]<<7;c[j>>2]=c[j>>2]|c[k>>2];l=c[h>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=0;a[f>>0]=3;l=a[f>>0]|0;i=m;return l|0}c[g>>2]=(c[g>>2]|0)+1;c[k>>2]=c[k>>2]<<14;c[k>>2]=c[k>>2]|(d[c[g>>2]>>0]|0);e=(c[k>>2]&128|0)!=0;c[k>>2]=c[k>>2]&2080895;b=c[j>>2]|0;if(!e){c[j>>2]=b<<7;c[j>>2]=c[j>>2]|c[k>>2];l=c[h>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=0;a[f>>0]=4;l=a[f>>0]|0;i=m;return l|0}c[l>>2]=b;c[g>>2]=(c[g>>2]|0)+1;c[j>>2]=c[j>>2]<<14;c[j>>2]=c[j>>2]|(d[c[g>>2]>>0]|0);if(!(c[j>>2]&128)){c[k>>2]=c[k>>2]<<7;c[j>>2]=c[j>>2]|c[k>>2];c[l>>2]=(c[l>>2]|0)>>>18;k=c[l>>2]|0;l=c[h>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=k;a[f>>0]=5;l=a[f>>0]|0;i=m;return l|0}c[l>>2]=c[l>>2]<<7;c[l>>2]=c[l>>2]|c[k>>2];c[g>>2]=(c[g>>2]|0)+1;c[k>>2]=c[k>>2]<<14;c[k>>2]=c[k>>2]|(d[c[g>>2]>>0]|0);if(!(c[k>>2]&128)){c[j>>2]=c[j>>2]&2080895;c[j>>2]=c[j>>2]<<7;c[j>>2]=c[j>>2]|c[k>>2];c[l>>2]=(c[l>>2]|0)>>>18;k=c[l>>2]|0;l=c[h>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=k;a[f>>0]=6;l=a[f>>0]|0;i=m;return l|0}c[g>>2]=(c[g>>2]|0)+1;c[j>>2]=c[j>>2]<<14;c[j>>2]=c[j>>2]|(d[c[g>>2]>>0]|0);b=c[j>>2]|0;if(!(c[j>>2]&128)){c[j>>2]=b&-266354561;c[k>>2]=c[k>>2]&2080895;c[k>>2]=c[k>>2]<<7;c[j>>2]=c[j>>2]|c[k>>2];c[l>>2]=(c[l>>2]|0)>>>11;k=c[l>>2]|0;l=c[h>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=k;a[f>>0]=7;l=a[f>>0]|0;i=m;return l|0}c[j>>2]=b&2080895;c[g>>2]=(c[g>>2]|0)+1;c[k>>2]=c[k>>2]<<14;c[k>>2]=c[k>>2]|(d[c[g>>2]>>0]|0);if(c[k>>2]&128){c[g>>2]=(c[g>>2]|0)+1;c[j>>2]=c[j>>2]<<15;c[j>>2]=c[j>>2]|(d[c[g>>2]>>0]|0);c[k>>2]=c[k>>2]&2080895;c[k>>2]=c[k>>2]<<8;c[j>>2]=c[j>>2]|c[k>>2];c[l>>2]=c[l>>2]<<4;c[k>>2]=d[(c[g>>2]|0)+-4>>0];c[k>>2]=c[k>>2]&127;c[k>>2]=(c[k>>2]|0)>>>3;c[l>>2]=c[l>>2]|c[k>>2];k=c[l>>2]|0;l=c[h>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=k;a[f>>0]=9;l=a[f>>0]|0;i=m;return l|0}else{c[k>>2]=c[k>>2]&-266354561;c[j>>2]=c[j>>2]<<7;c[j>>2]=c[j>>2]|c[k>>2];c[l>>2]=(c[l>>2]|0)>>>4;k=c[l>>2]|0;l=c[h>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=k;a[f>>0]=8;l=a[f>>0]|0;i=m;return l|0}return 0}function Tt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=b;c[f>>2]=d;while(1){if((c[f>>2]|0)>0)b=(a[(c[e>>2]|0)+((c[f>>2]|0)-1)>>0]|0)==32;else b=0;d=c[f>>2]|0;if(!b)break;c[f>>2]=d+-1}i=g;return(d|0)==0|0}function Ut(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;m=n+4|0;l=n;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=0;if(!(c[g>>2]|0)){m=c[m>>2]|0;i=n;return m|0}c[l>>2]=c[(c[g>>2]|0)+4>>2];kg(c[g>>2]|0);if(d[(c[l>>2]|0)+20>>0]|0){c[m>>2]=6;m=c[m>>2]|0;i=n;return m|0}else{c[m>>2]=Vt(c[c[l>>2]>>2]|0,c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;m=c[m>>2]|0;i=n;return m|0}return 0}function Vt(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[l>>2]=0;if(!(c[(c[g>>2]|0)+216>>2]|0)){l=c[l>>2]|0;i=m;return l|0}if(!(c[h>>2]|0))b=0;else b=c[(c[g>>2]|0)+184>>2]|0;c[l>>2]=Is(c[(c[g>>2]|0)+216>>2]|0,c[h>>2]|0,b,c[(c[g>>2]|0)+188>>2]|0,d[(c[g>>2]|0)+10>>0]|0,c[(c[g>>2]|0)+160>>2]|0,c[(c[g>>2]|0)+208>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;l=c[l>>2]|0;i=m;return l|0}function Wt(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+32|0;j=l+20|0;n=l+16|0;m=l+12|0;g=l+8|0;h=l+4|0;k=l;c[n>>2]=b;c[m>>2]=d;c[g>>2]=e;c[h>>2]=f;c[k>>2]=c[(c[n>>2]|0)+(c[m>>2]<<2)>>2];while(1){if(!(c[k>>2]|0)){g=7;break}if((zd(c[(c[k>>2]|0)+20>>2]|0,c[g>>2]|0,c[h>>2]|0)|0)==0?(a[(c[(c[k>>2]|0)+20>>2]|0)+(c[h>>2]|0)>>0]|0)==0:0){g=5;break}c[k>>2]=c[(c[k>>2]|0)+24>>2]}if((g|0)==5){c[j>>2]=c[k>>2];n=c[j>>2]|0;i=l;return n|0}else if((g|0)==7){c[j>>2]=0;n=c[j>>2]|0;i=l;return n|0}return 0}function Xt(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;j=o+12|0;k=o+8|0;l=o+4|0;m=o+16|0;n=o;c[k>>2]=f;c[l>>2]=g;a[m>>0]=h;h=c[k>>2]|0;if((c[l>>2]|0)==-2){c[j>>2]=(c[h+12>>2]|0)==0?0:6;n=c[j>>2]|0;i=o;return n|0}if((b[h>>1]|0)!=(c[l>>2]|0)?(b[c[k>>2]>>1]|0)>=0:0){c[j>>2]=0;n=c[j>>2]|0;i=o;return n|0}if((b[c[k>>2]>>1]|0)==(c[l>>2]|0))c[n>>2]=4;else c[n>>2]=1;if((d[m>>0]|0)!=(e[(c[k>>2]|0)+2>>1]&3|0)){if(d[m>>0]&e[(c[k>>2]|0)+2>>1]&2)c[n>>2]=(c[n>>2]|0)+1}else c[n>>2]=(c[n>>2]|0)+2;c[j>>2]=c[n>>2];n=c[j>>2]|0;i=o;return n|0}function Yt(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+32|0;f=k+16|0;g=k+12|0;j=k+8|0;l=k+4|0;m=k+20|0;h=k;c[f>>2]=b;c[g>>2]=e;c[l>>2]=If(c[(c[g>>2]|0)+20>>2]|0)|0;a[m>>0]=a[c[(c[g>>2]|0)+20>>2]>>0]|0;c[h>>2]=((d[18477+(d[m>>0]|0)>>0]|0)+(c[l>>2]|0)|0)%23|0;c[j>>2]=Wt(c[f>>2]|0,c[h>>2]|0,c[(c[g>>2]|0)+20>>2]|0,c[l>>2]|0)|0;if(c[j>>2]|0){c[(c[g>>2]|0)+8>>2]=c[(c[j>>2]|0)+8>>2];c[(c[j>>2]|0)+8>>2]=c[g>>2];i=k;return}else{c[(c[g>>2]|0)+8>>2]=0;c[(c[g>>2]|0)+24>>2]=c[(c[f>>2]|0)+(c[h>>2]<<2)>>2];c[(c[f>>2]|0)+(c[h>>2]<<2)>>2]=c[g>>2];i=k;return}}function Zt(a,b){a=a|0;b=b|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[g>>2]=a;c[h>>2]=b;if(((e[(c[g>>2]|0)+8>>1]|0)&2|0)!=0?(d[(c[g>>2]|0)+10>>0]|0|0)!=(c[h>>2]|0):0){c[j>>2]=_t(c[g>>2]|0,c[h>>2]&255)|0;c[f>>2]=c[j>>2];j=c[f>>2]|0;i=k;return j|0}c[f>>2]=0;j=c[f>>2]|0;i=k;return j|0}function _t(f,g){f=f|0;g=g|0;var h=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;v=i;i=i+48|0;n=v+40|0;o=v+36|0;p=v+45|0;k=v+32|0;t=v+28|0;s=v+24|0;u=v+20|0;r=v+16|0;q=v+12|0;j=v+44|0;h=v+8|0;l=v+4|0;m=v;c[o>>2]=f;a[p>>0]=g;if((d[(c[o>>2]|0)+10>>0]|0|0)!=1?(d[p>>0]|0|0)!=1:0){c[h>>2]=_g(c[o>>2]|0)|0;if(c[h>>2]|0){c[n>>2]=7;u=c[n>>2]|0;i=v;return u|0}c[s>>2]=c[(c[o>>2]|0)+16>>2];c[u>>2]=(c[s>>2]|0)+(c[(c[o>>2]|0)+12>>2]&-2);while(1){if((c[s>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break;a[j>>0]=a[c[s>>2]>>0]|0;a[c[s>>2]>>0]=a[(c[s>>2]|0)+1>>0]|0;c[s>>2]=(c[s>>2]|0)+1;r=a[j>>0]|0;t=c[s>>2]|0;c[s>>2]=t+1;a[t>>0]=r}a[(c[o>>2]|0)+10>>0]=a[p>>0]|0}else{g=(c[o>>2]|0)+12|0;f=c[g>>2]|0;if((d[p>>0]|0|0)==1){c[g>>2]=f&-2;c[k>>2]=(c[(c[o>>2]|0)+12>>2]<<1)+1}else c[k>>2]=(f<<1)+2;c[s>>2]=c[(c[o>>2]|0)+16>>2];c[u>>2]=(c[s>>2]|0)+(c[(c[o>>2]|0)+12>>2]|0);k=c[k>>2]|0;c[t>>2]=yh(c[(c[o>>2]|0)+32>>2]|0,k,((k|0)<0)<<31>>31)|0;if(!(c[t>>2]|0)){c[n>>2]=7;u=c[n>>2]|0;i=v;return u|0}c[r>>2]=c[t>>2];if((d[(c[o>>2]|0)+10>>0]|0|0)==1){a:do if((d[p>>0]|0|0)==2)while(1){if((c[s>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break a;m=c[s>>2]|0;c[s>>2]=m+1;c[q>>2]=d[m>>0];do if((c[q>>2]|0)>>>0>=192){c[q>>2]=d[26420+((c[q>>2]|0)-192)>>0];while(1){if((c[s>>2]|0)!=(c[u>>2]|0))f=((d[c[s>>2]>>0]|0)&192|0)==128;else f=0;g=c[q>>2]|0;if(!f)break;m=c[s>>2]|0;c[s>>2]=m+1;c[q>>2]=(g<<6)+(63&(d[m>>0]|0))}if((g>>>0>=128?(c[q>>2]&-2048|0)!=55296:0)?(c[q>>2]&-2|0)!=65534:0)break;c[q>>2]=65533}while(0);g=c[q>>2]|0;if((c[q>>2]|0)>>>0<=65535){l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=g;l=(c[q>>2]|0)>>>8&255;m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=l;continue}else{m=(g>>>10&63)+(((c[q>>2]|0)-65536|0)>>>10&192)&255;l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=m;l=216+(((c[q>>2]|0)-65536|0)>>>18&3)&255;m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=l;m=c[q>>2]&255;l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=m;l=220+((c[q>>2]|0)>>>8&3)&255;m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=l;continue}}else while(1){if((c[s>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break a;m=c[s>>2]|0;c[s>>2]=m+1;c[q>>2]=d[m>>0];do if((c[q>>2]|0)>>>0>=192){c[q>>2]=d[26420+((c[q>>2]|0)-192)>>0];while(1){if((c[s>>2]|0)!=(c[u>>2]|0))f=((d[c[s>>2]>>0]|0)&192|0)==128;else f=0;g=c[q>>2]|0;if(!f)break;m=c[s>>2]|0;c[s>>2]=m+1;c[q>>2]=(g<<6)+(63&(d[m>>0]|0))}if((g>>>0>=128?(c[q>>2]&-2048|0)!=55296:0)?(c[q>>2]&-2|0)!=65534:0)break;c[q>>2]=65533}while(0);g=c[q>>2]|0;if((c[q>>2]|0)>>>0<=65535){l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=g>>>8;l=c[q>>2]&255;m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=l;continue}else{l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=216+((g-65536|0)>>>18&3);l=((c[q>>2]|0)>>>10&63)+(((c[q>>2]|0)-65536|0)>>>10&192)&255;m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=l;m=220+((c[q>>2]|0)>>>8&3)&255;l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=m;l=c[q>>2]&255;m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=l;continue}}while(0);c[(c[o>>2]|0)+12>>2]=(c[r>>2]|0)-(c[t>>2]|0);u=c[r>>2]|0;c[r>>2]=u+1;a[u>>0]=0}else{b:do if((d[(c[o>>2]|0)+10>>0]|0|0)==2)while(1){if((c[s>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break b;m=c[s>>2]|0;c[s>>2]=m+1;c[q>>2]=d[m>>0];m=c[s>>2]|0;c[s>>2]=m+1;c[q>>2]=(c[q>>2]|0)+((d[m>>0]|0)<<8);if((c[q>>2]|0)>>>0>=55296&(c[q>>2]|0)>>>0<57344?(c[s>>2]|0)>>>0<(c[u>>2]|0)>>>0:0){m=c[s>>2]|0;c[s>>2]=m+1;c[l>>2]=d[m>>0];m=c[s>>2]|0;c[s>>2]=m+1;c[l>>2]=(c[l>>2]|0)+((d[m>>0]|0)<<8);c[q>>2]=(c[l>>2]&1023)+((c[q>>2]&63)<<10)+((c[q>>2]&960)+64<<10)}g=c[q>>2]|0;if((c[q>>2]|0)>>>0<128){m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=g;continue}f=c[q>>2]|0;if(g>>>0<2048){k=c[r>>2]|0;c[r>>2]=k+1;a[k>>0]=192+(f>>>6&31);k=128+(c[q>>2]&63)&255;m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=k;continue}g=c[q>>2]|0;if(f>>>0<65536){m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=224+(g>>>12&15);m=128+((c[q>>2]|0)>>>6&63)&255;k=c[r>>2]|0;c[r>>2]=k+1;a[k>>0]=m;k=128+(c[q>>2]&63)&255;m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=k;continue}else{k=c[r>>2]|0;c[r>>2]=k+1;a[k>>0]=240+(g>>>18&7);k=128+((c[q>>2]|0)>>>12&63)&255;m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=k;m=128+((c[q>>2]|0)>>>6&63)&255;k=c[r>>2]|0;c[r>>2]=k+1;a[k>>0]=m;k=128+(c[q>>2]&63)&255;m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=k;continue}}else while(1){if((c[s>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break b;l=c[s>>2]|0;c[s>>2]=l+1;c[q>>2]=(d[l>>0]|0)<<8;l=c[s>>2]|0;c[s>>2]=l+1;c[q>>2]=(c[q>>2]|0)+(d[l>>0]|0);if((c[q>>2]|0)>>>0>=55296&(c[q>>2]|0)>>>0<57344?(c[s>>2]|0)>>>0<(c[u>>2]|0)>>>0:0){l=c[s>>2]|0;c[s>>2]=l+1;c[m>>2]=(d[l>>0]|0)<<8;l=c[s>>2]|0;c[s>>2]=l+1;c[m>>2]=(c[m>>2]|0)+(d[l>>0]|0);c[q>>2]=(c[m>>2]&1023)+((c[q>>2]&63)<<10)+((c[q>>2]&960)+64<<10)}g=c[q>>2]|0;if((c[q>>2]|0)>>>0<128){l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=g;continue}f=c[q>>2]|0;if(g>>>0<2048){k=c[r>>2]|0;c[r>>2]=k+1;a[k>>0]=192+(f>>>6&31);k=128+(c[q>>2]&63)&255;l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=k;continue}g=c[q>>2]|0;if(f>>>0<65536){l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=224+(g>>>12&15);l=128+((c[q>>2]|0)>>>6&63)&255;k=c[r>>2]|0;c[r>>2]=k+1;a[k>>0]=l;k=128+(c[q>>2]&63)&255;l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=k;continue}else{k=c[r>>2]|0;c[r>>2]=k+1;a[k>>0]=240+(g>>>18&7);k=128+((c[q>>2]|0)>>>12&63)&255;l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=k;l=128+((c[q>>2]|0)>>>6&63)&255;k=c[r>>2]|0;c[r>>2]=k+1;a[k>>0]=l;k=128+(c[q>>2]&63)&255;l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=k;continue}}while(0);c[(c[o>>2]|0)+12>>2]=(c[r>>2]|0)-(c[t>>2]|0)}a[c[r>>2]>>0]=0;c[q>>2]=e[(c[o>>2]|0)+8>>1];Ug(c[o>>2]|0);b[(c[o>>2]|0)+8>>1]=514|c[q>>2]&32799;a[(c[o>>2]|0)+10>>0]=a[p>>0]|0;c[(c[o>>2]|0)+16>>2]=c[t>>2];c[(c[o>>2]|0)+20>>2]=c[(c[o>>2]|0)+16>>2];u=$t(c[(c[o>>2]|0)+32>>2]|0,c[(c[o>>2]|0)+16>>2]|0)|0;c[(c[o>>2]|0)+24>>2]=u}c[n>>2]=0;u=c[n>>2]|0;i=v;return u|0}function $t(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+8|0;f=h+4|0;g=h;c[f>>2]=a;c[g>>2]=b;if((c[f>>2]|0)!=0?(au(c[f>>2]|0,c[g>>2]|0)|0)!=0:0){c[d>>2]=e[(c[f>>2]|0)+248+4>>1];b=c[d>>2]|0;i=h;return b|0}c[d>>2]=Tb[c[56>>2]&255](c[g>>2]|0)|0;b=c[d>>2]|0;i=h;return b|0}function au(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if((c[e>>2]|0)>>>0<(c[(c[d>>2]|0)+248+32>>2]|0)>>>0){b=0;b=b&1;i=f;return b|0}b=(c[e>>2]|0)>>>0<(c[(c[d>>2]|0)+248+36>>2]|0)>>>0;b=b&1;i=f;return b|0}function bu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+8|0;g=f+4|0;e=f;c[d>>2]=a;c[g>>2]=b;c[e>>2]=c[(c[g>>2]|0)+28>>2];if(!(c[e>>2]|0)){i=f;return}g=c[e>>2]|0;c[g>>2]=(c[g>>2]|0)+-1;if(c[c[e>>2]>>2]|0){i=f;return}Qb[c[(c[e>>2]|0)+4>>2]&255](c[(c[e>>2]|0)+8>>2]|0);Sf(c[d>>2]|0,c[e>>2]|0);i=f;return}function cu(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;b=k+20|0;e=k+16|0;f=k+12|0;h=k+8|0;j=k+4|0;g=k;c[b>>2]=a;Nf(c[b>>2]|0);c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[b>>2]|0)+20>>2]|0))break;c[h>>2]=c[(c[(c[b>>2]|0)+16>>2]|0)+(c[e>>2]<<4)+12>>2];a:do if(c[(c[(c[b>>2]|0)+16>>2]|0)+(c[e>>2]<<4)+12>>2]|0){c[f>>2]=c[(c[h>>2]|0)+8+8>>2];while(1){if(!(c[f>>2]|0))break a;c[j>>2]=c[(c[f>>2]|0)+8>>2];if((d[(c[j>>2]|0)+42>>0]|0)&16)iu(c[b>>2]|0,c[j>>2]|0);c[f>>2]=c[c[f>>2]>>2]}}while(0);c[e>>2]=(c[e>>2]|0)+1}c[f>>2]=c[(c[b>>2]|0)+312+8>>2];while(1){if(!(c[f>>2]|0))break;c[g>>2]=c[(c[f>>2]|0)+8>>2];if(c[(c[g>>2]|0)+16>>2]|0)iu(c[b>>2]|0,c[(c[g>>2]|0)+16>>2]|0);c[f>>2]=c[c[f>>2]>>2]}ju(c[b>>2]|0);i=k;return}function du(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;gu(c[d>>2]|0,68);i=b;return 0}function eu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g+12|0;b=g+8|0;d=g+4|0;e=g;c[b>>2]=a;if(c[(c[b>>2]|0)+4>>2]|0){c[f>>2]=1;f=c[f>>2]|0;i=g;return f|0}c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[(c[b>>2]|0)+20>>2]|0)){b=9;break}c[e>>2]=c[(c[(c[b>>2]|0)+16>>2]|0)+(c[d>>2]<<4)+4>>2];if((c[e>>2]|0)!=0?(fu(c[e>>2]|0)|0)!=0:0){b=7;break}c[d>>2]=(c[d>>2]|0)+1}if((b|0)==7){c[f>>2]=1;f=c[f>>2]|0;i=g;return f|0}else if((b|0)==9){c[f>>2]=0;f=c[f>>2]|0;i=g;return f|0}return 0}function fu(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[(c[b>>2]|0)+16>>2]|0)!=0|0}function gu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;d=l+24|0;e=l+20|0;g=l+16|0;f=l+12|0;j=l+8|0;h=l+4|0;k=l;c[d>>2]=a;c[e>>2]=b;if(!(c[(c[d>>2]|0)+332>>2]|0)){i=l;return}c[f>>2]=c[(c[d>>2]|0)+332>>2];c[(c[d>>2]|0)+332>>2]=0;c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[d>>2]|0)+308>>2]|0))break;c[j>>2]=c[(c[f>>2]|0)+(c[g>>2]<<2)>>2];c[h>>2]=c[(c[j>>2]|0)+8>>2];if((c[h>>2]|0)!=0?(c[k>>2]=c[(c[c[h>>2]>>2]|0)+(c[e>>2]|0)>>2],(c[k>>2]|0)!=0):0)Tb[c[k>>2]&255](c[h>>2]|0)|0;c[(c[j>>2]|0)+20>>2]=0;hu(c[j>>2]|0);c[g>>2]=(c[g>>2]|0)+1}Sf(c[d>>2]|0,c[f>>2]|0);c[(c[d>>2]|0)+308>>2]=0;i=l;return}function hu(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;c[d>>2]=c[c[b>>2]>>2];a=(c[b>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+-1;if(c[(c[b>>2]|0)+12>>2]|0){i=f;return}c[e>>2]=c[(c[b>>2]|0)+8>>2];if(c[e>>2]|0)Tb[c[(c[c[e>>2]>>2]|0)+16>>2]&255](c[e>>2]|0)|0;Sf(c[d>>2]|0,c[b>>2]|0);i=f;return}function iu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;d=h+12|0;j=h+8|0;f=h+4|0;e=h;c[d>>2]=a;c[j>>2]=b;c[f>>2]=(c[j>>2]|0)+56;while(1){if(!(c[c[f>>2]>>2]|0)){g=6;break}a=c[c[f>>2]>>2]|0;if((c[c[c[f>>2]>>2]>>2]|0)==(c[d>>2]|0))break;c[f>>2]=a+24}if((g|0)==6){i=h;return}c[e>>2]=a;c[c[f>>2]>>2]=c[(c[e>>2]|0)+24>>2];hu(c[e>>2]|0);i=h;return}function ju(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;c[d>>2]=c[(c[b>>2]|0)+336>>2];c[(c[b>>2]|0)+336>>2]=0;if(!(c[d>>2]|0)){i=f;return}Oh(c[b>>2]|0);do{c[e>>2]=c[(c[d>>2]|0)+24>>2];hu(c[d>>2]|0);c[d>>2]=c[e>>2]}while((c[d>>2]|0)!=0);i=f;return}function ku(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Qb[c[160>>2]&255](c[(c[d>>2]|0)+44>>2]|0);i=b;return}function lu(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;c[d>>2]=a;a=1584;b=a+100|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));c[410]=(c[53]|0)==0&1;if((c[410]|0)!=0&(c[55]|0)!=0&(c[53]|0)==0){c[411]=c[55];c[399]=10;c[409]=1;i=d;return 0}else{c[411]=0;c[399]=10;c[409]=1;i=d;return 0}return 0}function mu(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;c[d>>2]=a;a=1584;b=a+100|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));i=d;return}function nu(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;g=m+20|0;h=m+16|0;j=m+12|0;k=m+8|0;l=m+4|0;n=m;c[g>>2]=b;c[h>>2]=e;c[j>>2]=f;c[n>>2]=60+((c[410]|0)*52|0);b=c[n>>2]|0;c[k>>2]=ig(b,((b|0)<0)<<31>>31)|0;if(!(c[k>>2]|0)){n=c[k>>2]|0;i=m;return n|0}if(c[410]|0){c[l>>2]=(c[k>>2]|0)+60;c[(c[l>>2]|0)+12>>2]=10}else c[l>>2]=1584;if(!(d[(c[l>>2]|0)+20+14>>0]|0)){a[(c[l>>2]|0)+20+14>>0]=1;n=(c[l>>2]|0)+20|0;c[(c[l>>2]|0)+20+24>>2]=n;c[(c[l>>2]|0)+20+28>>2]=n}c[c[k>>2]>>2]=c[l>>2];c[(c[k>>2]|0)+4>>2]=c[g>>2];c[(c[k>>2]|0)+8>>2]=c[h>>2];c[(c[k>>2]|0)+12>>2]=(c[g>>2]|0)+(c[h>>2]|0)+32;c[(c[k>>2]|0)+16>>2]=(c[j>>2]|0)!=0?1:0;Eu(c[k>>2]|0);if(c[j>>2]|0){c[(c[k>>2]|0)+20>>2]=10;n=(c[l>>2]|0)+8|0;c[n>>2]=(c[n>>2]|0)+(c[(c[k>>2]|0)+20>>2]|0);c[(c[l>>2]|0)+12>>2]=(c[(c[l>>2]|0)+4>>2]|0)+10-(c[(c[l>>2]|0)+8>>2]|0)}if(c[(c[k>>2]|0)+44>>2]|0){n=c[k>>2]|0;i=m;return n|0}uu(c[k>>2]|0);c[k>>2]=0;n=c[k>>2]|0;i=m;return n|0}function ou(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;h=g+12|0;d=g+8|0;e=g+4|0;f=g;c[h>>2]=a;c[d>>2]=b;c[e>>2]=c[h>>2];if(!(c[(c[e>>2]|0)+16>>2]|0)){i=g;return}c[f>>2]=c[c[e>>2]>>2];h=(c[f>>2]|0)+4|0;c[h>>2]=(c[h>>2]|0)+((c[d>>2]|0)-(c[(c[e>>2]|0)+24>>2]|0));c[(c[f>>2]|0)+12>>2]=(c[(c[f>>2]|0)+4>>2]|0)+10-(c[(c[f>>2]|0)+8>>2]|0);c[(c[e>>2]|0)+24>>2]=c[d>>2];c[(c[e>>2]|0)+28>>2]=(((c[(c[e>>2]|0)+24>>2]|0)*9|0)>>>0)/10|0;wu(c[e>>2]|0);i=g;return}function pu(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;f=d+8|0;b=d+4|0;e=d;c[f>>2]=a;c[e>>2]=c[f>>2];c[b>>2]=c[(c[e>>2]|0)+40>>2];i=d;return c[b>>2]|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=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;a=Bu(c[h>>2]|0,c[g>>2]|0,c[f>>2]|0)|0;i=e;return a|0}function ru(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;k=i;i=i+32|0;n=k+24|0;m=k+20|0;l=k+16|0;f=k+12|0;h=k+8|0;g=k+4|0;j=k;c[n>>2]=b;c[m>>2]=d;c[l>>2]=e;c[f>>2]=c[n>>2];c[h>>2]=c[m>>2];c[g>>2]=c[c[f>>2]>>2];if((c[l>>2]|0)==0?(c[(c[g>>2]|0)+16>>2]|0)>>>0<=(c[(c[g>>2]|0)+4>>2]|0)>>>0:0){c[j>>2]=(c[g>>2]|0)+20+24;c[(c[h>>2]|0)+28>>2]=(c[g>>2]|0)+20;m=c[h>>2]|0;n=c[c[j>>2]>>2]|0;c[(c[h>>2]|0)+24>>2]=n;c[n+28>>2]=m;c[c[j>>2]>>2]=c[h>>2];n=(c[f>>2]|0)+36|0;c[n>>2]=(c[n>>2]|0)+1;a[(c[h>>2]|0)+12>>0]=0;i=k;return}yu(c[h>>2]|0,1); -i=k;return}function su(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;l=i;i=i+32|0;o=l+28|0;n=l+24|0;m=l+20|0;f=l+16|0;h=l+12|0;j=l+8|0;k=l+4|0;g=l;c[o>>2]=a;c[n>>2]=b;c[m>>2]=d;c[f>>2]=e;c[h>>2]=c[o>>2];c[j>>2]=c[n>>2];c[g>>2]=((c[m>>2]|0)>>>0)%((c[(c[h>>2]|0)+44>>2]|0)>>>0)|0;c[k>>2]=(c[(c[h>>2]|0)+48>>2]|0)+(c[g>>2]<<2);while(1){if((c[c[k>>2]>>2]|0)==(c[j>>2]|0))break;c[k>>2]=(c[c[k>>2]>>2]|0)+16}c[c[k>>2]>>2]=c[(c[j>>2]|0)+16>>2];c[g>>2]=((c[f>>2]|0)>>>0)%((c[(c[h>>2]|0)+44>>2]|0)>>>0)|0;c[(c[j>>2]|0)+8>>2]=c[f>>2];c[(c[j>>2]|0)+16>>2]=c[(c[(c[h>>2]|0)+48>>2]|0)+(c[g>>2]<<2)>>2];c[(c[(c[h>>2]|0)+48>>2]|0)+(c[g>>2]<<2)>>2]=c[j>>2];if((c[f>>2]|0)>>>0<=(c[(c[h>>2]|0)+32>>2]|0)>>>0){i=l;return}c[(c[h>>2]|0)+32>>2]=c[f>>2];i=l;return}function tu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;g=f+8|0;d=f+4|0;e=f;c[g>>2]=a;c[d>>2]=b;c[e>>2]=c[g>>2];if((c[d>>2]|0)>>>0>(c[(c[e>>2]|0)+32>>2]|0)>>>0){i=f;return}Au(c[e>>2]|0,c[d>>2]|0);c[(c[e>>2]|0)+32>>2]=(c[d>>2]|0)-1;i=f;return}function uu(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;f=b+8|0;d=b+4|0;e=b;c[f>>2]=a;c[d>>2]=c[f>>2];c[e>>2]=c[c[d>>2]>>2];Au(c[d>>2]|0,0);a=(c[e>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)-(c[(c[d>>2]|0)+24>>2]|0);a=(c[e>>2]|0)+8|0;c[a>>2]=(c[a>>2]|0)-(c[(c[d>>2]|0)+20>>2]|0);c[(c[e>>2]|0)+12>>2]=(c[(c[e>>2]|0)+4>>2]|0)+10-(c[(c[e>>2]|0)+8>>2]|0);wu(c[d>>2]|0);Kd(c[(c[d>>2]|0)+56>>2]|0);Kd(c[(c[d>>2]|0)+48>>2]|0);Kd(c[d>>2]|0);i=b;return}function vu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=i;i=i+16|0;g=f+12|0;b=f+8|0;d=f+4|0;e=f;c[g>>2]=a;c[b>>2]=c[g>>2];if(!(c[(c[b>>2]|0)+16>>2]|0)){i=f;return}c[d>>2]=c[c[b>>2]>>2];c[e>>2]=c[(c[d>>2]|0)+4>>2];c[(c[d>>2]|0)+4>>2]=0;wu(c[b>>2]|0);c[(c[d>>2]|0)+4>>2]=c[e>>2];i=f;return}function wu(a){a=a|0;var b=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+8|0;f=g+4|0;e=g;c[b>>2]=a;c[f>>2]=c[c[b>>2]>>2];while(1){if((c[(c[f>>2]|0)+16>>2]|0)>>>0<=(c[(c[f>>2]|0)+4>>2]|0)>>>0)break;a=c[(c[f>>2]|0)+20+28>>2]|0;c[e>>2]=a;if(d[a+14>>0]|0)break;xu(c[e>>2]|0)|0;yu(c[e>>2]|0,1)}if(c[(c[b>>2]|0)+40>>2]|0){i=g;return}if(!(c[(c[b>>2]|0)+56>>2]|0)){i=g;return}Kd(c[(c[b>>2]|0)+56>>2]|0);c[(c[b>>2]|0)+52>>2]=0;c[(c[b>>2]|0)+56>>2]=0;i=g;return}function xu(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;d=e+4|0;f=e;c[d>>2]=b;c[f>>2]=c[(c[d>>2]|0)+20>>2];c[(c[(c[d>>2]|0)+28>>2]|0)+24>>2]=c[(c[d>>2]|0)+24>>2];c[(c[(c[d>>2]|0)+24>>2]|0)+28>>2]=c[(c[d>>2]|0)+28>>2];c[(c[d>>2]|0)+24>>2]=0;c[(c[d>>2]|0)+28>>2]=0;a[(c[d>>2]|0)+12>>0]=1;b=(c[f>>2]|0)+36|0;c[b>>2]=(c[b>>2]|0)+-1;i=e;return c[d>>2]|0}function yu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;d=h+16|0;e=h+12|0;j=h+8|0;f=h+4|0;g=h;c[d>>2]=a;c[e>>2]=b;c[f>>2]=c[(c[d>>2]|0)+20>>2];c[j>>2]=((c[(c[d>>2]|0)+8>>2]|0)>>>0)%((c[(c[f>>2]|0)+44>>2]|0)>>>0)|0;c[g>>2]=(c[(c[f>>2]|0)+48>>2]|0)+(c[j>>2]<<2);while(1){b=(c[c[g>>2]>>2]|0)+16|0;if((c[c[g>>2]>>2]|0)==(c[d>>2]|0))break;c[g>>2]=b}c[c[g>>2]>>2]=c[b>>2];j=(c[f>>2]|0)+40|0;c[j>>2]=(c[j>>2]|0)+-1;if(!(c[e>>2]|0)){i=h;return}zu(c[d>>2]|0);i=h;return}function zu(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;c[e>>2]=c[(c[d>>2]|0)+20>>2];if(a[(c[d>>2]|0)+13>>0]|0){c[(c[d>>2]|0)+16>>2]=c[(c[e>>2]|0)+52>>2];c[(c[e>>2]|0)+52>>2]=c[d>>2]}else Yi(c[c[d>>2]>>2]|0);if(!(c[(c[e>>2]|0)+16>>2]|0)){i=f;return}e=(c[c[e>>2]>>2]|0)+16|0;c[e>>2]=(c[e>>2]|0)+-1;i=f;return}function Au(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[e>>2]=b;c[f>>2]=d;c[g>>2]=0;while(1){if((c[g>>2]|0)>>>0>=(c[(c[e>>2]|0)+44>>2]|0)>>>0)break;c[j>>2]=(c[(c[e>>2]|0)+48>>2]|0)+(c[g>>2]<<2);while(1){b=c[c[j>>2]>>2]|0;c[h>>2]=b;if(!b)break;if((c[(c[h>>2]|0)+8>>2]|0)>>>0<(c[f>>2]|0)>>>0){c[j>>2]=(c[h>>2]|0)+16;continue}b=(c[e>>2]|0)+40|0;c[b>>2]=(c[b>>2]|0)+-1;c[c[j>>2]>>2]=c[(c[h>>2]|0)+16>>2];if(!(a[(c[h>>2]|0)+12>>0]|0))xu(c[h>>2]|0)|0;zu(c[h>>2]|0)}c[g>>2]=(c[g>>2]|0)+1}i=k;return}function Bu(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;j=l+20|0;m=l+16|0;f=l+12|0;g=l+8|0;h=l+4|0;k=l;c[m>>2]=b;c[f>>2]=d;c[g>>2]=e;c[h>>2]=c[m>>2];c[k>>2]=0;c[k>>2]=c[(c[(c[h>>2]|0)+48>>2]|0)+((((c[f>>2]|0)>>>0)%((c[(c[h>>2]|0)+44>>2]|0)>>>0)|0)<<2)>>2];while(1){if(c[k>>2]|0)d=(c[(c[k>>2]|0)+8>>2]|0)!=(c[f>>2]|0);else d=0;e=c[k>>2]|0;if(!d)break;c[k>>2]=c[e+16>>2]}if(e){e=c[k>>2]|0;if(a[(c[k>>2]|0)+12>>0]|0){c[j>>2]=e;m=c[j>>2]|0;i=l;return m|0}else{c[j>>2]=xu(e)|0;m=c[j>>2]|0;i=l;return m|0}}else if(c[g>>2]|0){c[j>>2]=Cu(c[h>>2]|0,c[f>>2]|0,c[g>>2]|0)|0;m=c[j>>2]|0;i=l;return m|0}else{c[j>>2]=0;m=c[j>>2]|0;i=l;return m|0}return 0}function Cu(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;f=p+32|0;g=p+28|0;h=p+24|0;j=p+20|0;l=p+16|0;m=p+12|0;o=p+8|0;n=p+4|0;k=p;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[m>>2]=c[c[g>>2]>>2];c[o>>2]=0;c[l>>2]=(c[(c[g>>2]|0)+40>>2]|0)-(c[(c[g>>2]|0)+36>>2]|0);do if((c[j>>2]|0)==1){if((c[l>>2]|0)>>>0<(c[(c[m>>2]|0)+12>>2]|0)>>>0?(c[l>>2]|0)>>>0<(c[(c[g>>2]|0)+28>>2]|0)>>>0:0){if(!(Du(c[g>>2]|0)|0))break;if((c[(c[g>>2]|0)+36>>2]|0)>>>0>=(c[l>>2]|0)>>>0)break}c[f>>2]=0;o=c[f>>2]|0;i=p;return o|0}while(0);if((c[(c[g>>2]|0)+40>>2]|0)>>>0>=(c[(c[g>>2]|0)+44>>2]|0)>>>0)Eu(c[g>>2]|0);do if((c[(c[g>>2]|0)+16>>2]|0)!=0?(a[(c[(c[m>>2]|0)+20+28>>2]|0)+14>>0]|0)==0:0){if(((c[(c[g>>2]|0)+40>>2]|0)+1|0)>>>0<(c[(c[g>>2]|0)+24>>2]|0)>>>0?(Du(c[g>>2]|0)|0)==0:0)break;c[o>>2]=c[(c[m>>2]|0)+20+28>>2];yu(c[o>>2]|0,0);xu(c[o>>2]|0)|0;c[n>>2]=c[(c[o>>2]|0)+20>>2];if((c[(c[n>>2]|0)+12>>2]|0)!=(c[(c[g>>2]|0)+12>>2]|0)){zu(c[o>>2]|0);c[o>>2]=0;break}else{m=(c[m>>2]|0)+16|0;c[m>>2]=(c[m>>2]|0)-((c[(c[n>>2]|0)+16>>2]|0)-(c[(c[g>>2]|0)+16>>2]|0));break}}while(0);if(!(c[o>>2]|0))c[o>>2]=Fu(c[g>>2]|0,(c[j>>2]|0)==1&1)|0;if((c[o>>2]|0)!=0?(c[k>>2]=((c[h>>2]|0)>>>0)%((c[(c[g>>2]|0)+44>>2]|0)>>>0)|0,n=(c[g>>2]|0)+40|0,c[n>>2]=(c[n>>2]|0)+1,c[(c[o>>2]|0)+8>>2]=c[h>>2],c[(c[o>>2]|0)+16>>2]=c[(c[(c[g>>2]|0)+48>>2]|0)+(c[k>>2]<<2)>>2],c[(c[o>>2]|0)+20>>2]=c[g>>2],c[(c[o>>2]|0)+28>>2]=0,c[(c[o>>2]|0)+24>>2]=0,a[(c[o>>2]|0)+12>>0]=1,c[c[(c[o>>2]|0)+4>>2]>>2]=0,c[(c[(c[g>>2]|0)+48>>2]|0)+(c[k>>2]<<2)>>2]=c[o>>2],(c[h>>2]|0)>>>0>(c[(c[g>>2]|0)+32>>2]|0)>>>0):0)c[(c[g>>2]|0)+32>>2]=c[h>>2];c[f>>2]=c[o>>2];o=c[f>>2]|0;i=p;return o|0}function Du(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=d+4|0;e=d;c[e>>2]=a;if((c[413]|0)!=0?((c[(c[e>>2]|0)+4>>2]|0)+(c[(c[e>>2]|0)+8>>2]|0)|0)<=(c[412]|0):0){c[b>>2]=c[420];e=c[b>>2]|0;i=d;return e|0}c[b>>2]=Hu()|0;e=c[b>>2]|0;i=d;return e|0}function Eu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;b=k+24|0;d=k+20|0;g=k+16|0;f=k+12|0;j=k+8|0;h=k+4|0;e=k;c[b>>2]=a;a=c[(c[b>>2]|0)+44>>2]<<1;c[g>>2]=a;c[g>>2]=(c[g>>2]|0)>>>0<256?256:a;if(c[(c[b>>2]|0)+44>>2]|0)Sj();c[d>>2]=ig(c[g>>2]<<2,0)|0;if(c[(c[b>>2]|0)+44>>2]|0)Tj();if(!(c[d>>2]|0)){i=k;return}c[f>>2]=0;while(1){if((c[f>>2]|0)>>>0>=(c[(c[b>>2]|0)+44>>2]|0)>>>0)break;c[h>>2]=c[(c[(c[b>>2]|0)+48>>2]|0)+(c[f>>2]<<2)>>2];while(1){a=c[h>>2]|0;c[j>>2]=a;if(!a)break;c[e>>2]=((c[(c[j>>2]|0)+8>>2]|0)>>>0)%((c[g>>2]|0)>>>0)|0;c[h>>2]=c[(c[j>>2]|0)+16>>2];c[(c[j>>2]|0)+16>>2]=c[(c[d>>2]|0)+(c[e>>2]<<2)>>2];c[(c[d>>2]|0)+(c[e>>2]<<2)>>2]=c[j>>2]}c[f>>2]=(c[f>>2]|0)+1}Kd(c[(c[b>>2]|0)+48>>2]|0);c[(c[b>>2]|0)+48>>2]=c[d>>2];c[(c[b>>2]|0)+44>>2]=c[g>>2];i=k;return}function Fu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+16|0;f=l+12|0;g=l+8|0;h=l+4|0;j=l;c[f>>2]=b;c[g>>2]=d;c[h>>2]=0;do if(c[(c[f>>2]|0)+52>>2]|0)k=4;else{if((c[(c[f>>2]|0)+40>>2]|0)==0?(Gu(c[f>>2]|0)|0)!=0:0){k=4;break}if(c[g>>2]|0)Sj();c[j>>2]=ej(c[(c[f>>2]|0)+12>>2]|0)|0;c[h>>2]=(c[j>>2]|0)+(c[(c[f>>2]|0)+4>>2]|0);if(c[g>>2]|0)Tj();if(c[j>>2]|0){c[c[h>>2]>>2]=c[j>>2];c[(c[h>>2]|0)+4>>2]=(c[h>>2]|0)+32;a[(c[h>>2]|0)+13>>0]=0;a[(c[h>>2]|0)+14>>0]=0;break}c[e>>2]=0;k=c[e>>2]|0;i=l;return k|0}while(0);if((k|0)==4){c[h>>2]=c[(c[f>>2]|0)+52>>2];c[(c[f>>2]|0)+52>>2]=c[(c[h>>2]|0)+16>>2];c[(c[h>>2]|0)+16>>2]=0}if(c[(c[f>>2]|0)+16>>2]|0){k=(c[c[f>>2]>>2]|0)+16|0;c[k>>2]=(c[k>>2]|0)+1}c[e>>2]=c[h>>2];k=c[e>>2]|0;i=l;return k|0}function Gu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;l=i;i=i+32|0;d=l+28|0;e=l+24|0;j=l;k=l+20|0;g=l+16|0;f=l+12|0;h=l+8|0;c[e>>2]=b;if(!(c[411]|0)){c[d>>2]=0;k=c[d>>2]|0;i=l;return k|0}if((c[(c[e>>2]|0)+24>>2]|0)>>>0<3){c[d>>2]=0;k=c[d>>2]|0;i=l;return k|0}Sj();if((c[411]|0)>0){b=c[(c[e>>2]|0)+12>>2]|0;m=c[411]|0;m=rR(b|0,((b|0)<0)<<31>>31|0,m|0,((m|0)<0)<<31>>31|0)|0;b=j;c[b>>2]=m;c[b+4>>2]=C}else{b=c[411]|0;b=rR(-1024,-1,b|0,((b|0)<0)<<31>>31|0)|0;m=j;c[m>>2]=b;c[m+4>>2]=C}o=j;b=c[o>>2]|0;o=c[o+4>>2]|0;m=c[(c[e>>2]|0)+12>>2]|0;m=rR(m|0,((m|0)<0)<<31>>31|0,c[(c[e>>2]|0)+24>>2]|0,0)|0;n=C;if((o|0)>(n|0)|(o|0)==(n|0)&b>>>0>m>>>0){o=j;c[o>>2]=_(c[(c[e>>2]|0)+12>>2]|0,c[(c[e>>2]|0)+24>>2]|0)|0;c[o+4>>2]=0}o=j;o=_f(c[o>>2]|0,c[o+4>>2]|0)|0;c[(c[e>>2]|0)+56>>2]=o;c[k>>2]=o;Tj();a:do if(c[k>>2]|0){o=$f(c[k>>2]|0)|0;c[g>>2]=(o|0)/(c[(c[e>>2]|0)+12>>2]|0)|0;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[g>>2]|0))break a;c[h>>2]=(c[k>>2]|0)+(c[(c[e>>2]|0)+4>>2]|0);c[c[h>>2]>>2]=c[k>>2];c[(c[h>>2]|0)+4>>2]=(c[h>>2]|0)+32;a[(c[h>>2]|0)+13>>0]=1;a[(c[h>>2]|0)+14>>0]=0;c[(c[h>>2]|0)+16>>2]=c[(c[e>>2]|0)+52>>2];c[(c[e>>2]|0)+52>>2]=c[h>>2];c[k>>2]=(c[k>>2]|0)+(c[(c[e>>2]|0)+12>>2]|0);c[f>>2]=(c[f>>2]|0)+1}}while(0);c[d>>2]=(c[(c[e>>2]|0)+52>>2]|0)!=0&1;o=c[d>>2]|0;i=l;return o|0}function Hu(){return c[77]|0}function Iu(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;d=e;f=e+8|0;b=e+4|0;c[f>>2]=a;c[f>>2]=(c[f>>2]|0)+7&-8;c[b>>2]=_Q((c[f>>2]|0)+8|0)|0;a=c[f>>2]|0;if(c[b>>2]|0){f=c[b>>2]|0;c[f>>2]=a;c[f+4>>2]=((a|0)<0)<<31>>31;c[b>>2]=(c[b>>2]|0)+8;f=c[b>>2]|0;i=e;return f|0}else{c[d>>2]=a;Rd(7,27278,d);f=c[b>>2]|0;i=e;return f|0}return 0}function Ju(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];c[d>>2]=(c[d>>2]|0)+-8;$Q(c[d>>2]|0);i=b;return}function Ku(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;g=h;d=h+16|0;e=h+12|0;f=h+8|0;c[d>>2]=a;c[e>>2]=b;c[f>>2]=c[d>>2];c[f>>2]=(c[f>>2]|0)+-8;c[f>>2]=bR(c[f>>2]|0,(c[e>>2]|0)+8|0)|0;if(c[f>>2]|0){a=c[e>>2]|0;g=c[f>>2]|0;c[g>>2]=a;c[g+4>>2]=((a|0)<0)<<31>>31;c[f>>2]=(c[f>>2]|0)+8;g=c[f>>2]|0;i=h;return g|0}else{b=Lu(c[d>>2]|0)|0;a=c[e>>2]|0;c[g>>2]=b;c[g+4>>2]=a;Rd(7,27242,g);g=c[f>>2]|0;i=h;return g|0}return 0}function Lu(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=c[e>>2];c[b>>2]=(c[b>>2]|0)+-8;i=d;return c[c[b>>2]>>2]|0}function Mu(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[b>>2]|0)+7&-8|0}function Nu(a){a=a|0;var b=0;b=i;i=i+16|0;c[b>>2]=a;i=b;return 0}function Ou(a){a=a|0;var b=0;b=i;i=i+16|0;c[b>>2]=a;i=b;return}function Pu(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=Yb[c[e>>2]&255](1612,0)|0;if(!(c[b>>2]|0)){e=c[b>>2]|0;i=d;return e|0}c[c[b>>2]>>2]=-1;e=c[b>>2]|0;i=d;return e|0}function Qu(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;n=o+24|0;m=o+20|0;h=o+16|0;l=o+12|0;j=o+8|0;f=o+4|0;g=o;c[m>>2]=b;c[h>>2]=e;a:do switch(d[40089+(d[c[m>>2]>>0]|0)>>0]|0){case 7:{c[l>>2]=1;while(1){if(!(d[19267+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]&1))break;c[l>>2]=(c[l>>2]|0)+1}c[c[h>>2]>>2]=159;c[n>>2]=c[l>>2];n=c[n>>2]|0;i=o;return n|0}case 11:{if((d[(c[m>>2]|0)+1>>0]|0)!=45){c[c[h>>2]>>2]=90;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}c[l>>2]=2;while(1){k=d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0;c[j>>2]=k;if(!((k|0)!=0?(c[j>>2]|0)!=10:0))break;c[l>>2]=(c[l>>2]|0)+1}c[c[h>>2]>>2]=159;c[n>>2]=c[l>>2];n=c[n>>2]|0;i=o;return n|0}case 17:{c[c[h>>2]>>2]=22;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}case 18:{c[c[h>>2]>>2]=23;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}case 19:{c[c[h>>2]>>2]=1;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}case 20:{c[c[h>>2]>>2]=89;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}case 21:{c[c[h>>2]>>2]=91;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}case 16:{if((d[(c[m>>2]|0)+1>>0]|0)==42?(d[(c[m>>2]|0)+2>>0]|0)!=0:0){c[l>>2]=3;c[j>>2]=d[(c[m>>2]|0)+2>>0];while(1){if((c[j>>2]|0)==42?(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)==47:0)break;k=d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0;c[j>>2]=k;if(!k)break;c[l>>2]=(c[l>>2]|0)+1}if(c[j>>2]|0)c[l>>2]=(c[l>>2]|0)+1;c[c[h>>2]>>2]=159;c[n>>2]=c[l>>2];n=c[n>>2]|0;i=o;return n|0}c[c[h>>2]>>2]=92;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}case 22:{c[c[h>>2]>>2]=93;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}case 14:{c[c[h>>2]>>2]=79;c[n>>2]=1+((d[(c[m>>2]|0)+1>>0]|0)==61&1);n=c[n>>2]|0;i=o;return n|0}case 12:{m=d[(c[m>>2]|0)+1>>0]|0;c[j>>2]=m;if((m|0)==61){c[c[h>>2]>>2]=81;c[n>>2]=2;n=c[n>>2]|0;i=o;return n|0}if((c[j>>2]|0)==62){c[c[h>>2]>>2]=78;c[n>>2]=2;n=c[n>>2]|0;i=o;return n|0}f=c[h>>2]|0;if((c[j>>2]|0)==60){c[f>>2]=87;c[n>>2]=2;n=c[n>>2]|0;i=o;return n|0}else{c[f>>2]=82;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}}case 13:{m=d[(c[m>>2]|0)+1>>0]|0;c[j>>2]=m;if((m|0)==61){c[c[h>>2]>>2]=83;c[n>>2]=2;n=c[n>>2]|0;i=o;return n|0}f=c[h>>2]|0;if((c[j>>2]|0)==62){c[f>>2]=88;c[n>>2]=2;n=c[n>>2]|0;i=o;return n|0}else{c[f>>2]=80;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}}case 15:{f=c[h>>2]|0;if((d[(c[m>>2]|0)+1>>0]|0)!=61){c[f>>2]=160;c[n>>2]=2;n=c[n>>2]|0;i=o;return n|0}else{c[f>>2]=78;c[n>>2]=2;n=c[n>>2]|0;i=o;return n|0}}case 10:{f=c[h>>2]|0;if((d[(c[m>>2]|0)+1>>0]|0)!=124){c[f>>2]=86;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}else{c[f>>2]=94;c[n>>2]=2;n=c[n>>2]|0;i=o;return n|0}}case 23:{c[c[h>>2]>>2]=26;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}case 24:{c[c[h>>2]>>2]=85;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}case 25:{c[c[h>>2]>>2]=96;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}case 8:{c[f>>2]=d[c[m>>2]>>0];c[l>>2]=1;while(1){k=d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0;c[j>>2]=k;if(!k)break;if((c[j>>2]|0)==(c[f>>2]|0)){if((d[(c[m>>2]|0)+((c[l>>2]|0)+1)>>0]|0)!=(c[f>>2]|0))break;c[l>>2]=(c[l>>2]|0)+1}c[l>>2]=(c[l>>2]|0)+1}if((c[j>>2]|0)==39){c[c[h>>2]>>2]=97;c[n>>2]=(c[l>>2]|0)+1;n=c[n>>2]|0;i=o;return n|0}f=c[h>>2]|0;if(c[j>>2]|0){c[f>>2]=27;c[n>>2]=(c[l>>2]|0)+1;n=c[n>>2]|0;i=o;return n|0}else{c[f>>2]=160;c[n>>2]=c[l>>2];n=c[n>>2]|0;i=o;return n|0}}case 26:{if(d[19267+(d[(c[m>>2]|0)+1>>0]|0)>>0]&4)k=64;else{c[c[h>>2]>>2]=122;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}break}case 3:{k=64;break}case 9:{c[l>>2]=1;c[j>>2]=d[c[m>>2]>>0];while(1){if((c[j>>2]|0)==93)break;k=d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0;c[j>>2]=k;if(!k)break;c[l>>2]=(c[l>>2]|0)+1}c[c[h>>2]>>2]=(c[j>>2]|0)==93?27:160;c[n>>2]=c[l>>2];n=c[n>>2]|0;i=o;return n|0}case 6:{c[c[h>>2]>>2]=135;c[l>>2]=1;while(1){f=c[l>>2]|0;if(!(d[19267+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]&4))break;c[l>>2]=f+1}c[n>>2]=f;n=c[n>>2]|0;i=o;return n|0}case 5:case 4:{c[g>>2]=0;c[c[h>>2]>>2]=135;c[l>>2]=1;while(1){b=d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0;c[j>>2]=b;if(!b)break;if(d[19267+(c[j>>2]&255)>>0]&70)c[g>>2]=(c[g>>2]|0)+1;else{if((c[j>>2]|0)==40&(c[g>>2]|0)>0){k=107;break}if((c[j>>2]|0)!=58)break;if((d[(c[m>>2]|0)+((c[l>>2]|0)+1)>>0]|0)!=58)break;c[l>>2]=(c[l>>2]|0)+1}c[l>>2]=(c[l>>2]|0)+1}do if((k|0)==107){while(1){c[l>>2]=(c[l>>2]|0)+1;k=d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0;c[j>>2]=k;if(!k)break;if((c[j>>2]|0)!=41?(d[19267+(c[j>>2]&255)>>0]&1|0)==0:0)k=107;else break}if((c[j>>2]|0)==41){c[l>>2]=(c[l>>2]|0)+1;break}else{c[c[h>>2]>>2]=160;break}}while(0);if(!(c[g>>2]|0))c[c[h>>2]>>2]=160;c[n>>2]=c[l>>2];n=c[n>>2]|0;i=o;return n|0}case 1:{c[l>>2]=1;while(1){f=c[l>>2]|0;if((d[40089+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]|0)>1)break;c[l>>2]=f+1}if(d[19267+(d[(c[m>>2]|0)+f>>0]|0)>>0]&70){c[l>>2]=(c[l>>2]|0)+1;break a}c[c[h>>2]>>2]=27;c[n>>2]=Oi(c[m>>2]|0,c[l>>2]|0,c[h>>2]|0)|0;n=c[n>>2]|0;i=o;return n|0}case 0:{if((d[(c[m>>2]|0)+1>>0]|0)==39){c[c[h>>2]>>2]=134;c[l>>2]=2;while(1){f=c[l>>2]|0;if(!(d[19267+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]&8))break;c[l>>2]=f+1}if(!((d[(c[m>>2]|0)+f>>0]|0)==39?((c[l>>2]|0)%2|0|0)==0:0))k=131;b:do if((k|0)==131){c[c[h>>2]>>2]=160;while(1){if(!(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0))break b;if((d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)==39)break b;c[l>>2]=(c[l>>2]|0)+1}}while(0);if(a[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)c[l>>2]=(c[l>>2]|0)+1;c[n>>2]=c[l>>2];n=c[n>>2]|0;i=o;return n|0}else k=138;break}case 2:{k=138;break}default:{c[c[h>>2]>>2]=160;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}}while(0);if((k|0)==64){c[c[h>>2]>>2]=132;do if((d[c[m>>2]>>0]|0)==48){if((d[(c[m>>2]|0)+1>>0]|0)!=120?(d[(c[m>>2]|0)+1>>0]|0)!=88:0)break;if(d[19267+(d[(c[m>>2]|0)+2>>0]|0)>>0]&8){c[l>>2]=3;while(1){f=c[l>>2]|0;if(!(d[19267+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]&8))break;c[l>>2]=f+1}c[n>>2]=f;n=c[n>>2]|0;i=o;return n|0}}while(0);c[l>>2]=0;while(1){f=c[l>>2]|0;if(!(d[19267+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]&4))break;c[l>>2]=f+1}if((d[(c[m>>2]|0)+f>>0]|0)==46){c[l>>2]=(c[l>>2]|0)+1;while(1){if(!(d[19267+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]&4))break;c[l>>2]=(c[l>>2]|0)+1}c[c[h>>2]>>2]=133}if(!((d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)!=101?(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)!=69:0))k=82;do if((k|0)==82){if(!(d[19267+(d[(c[m>>2]|0)+((c[l>>2]|0)+1)>>0]|0)>>0]&4)){if((d[(c[m>>2]|0)+((c[l>>2]|0)+1)>>0]|0)!=43?(d[(c[m>>2]|0)+((c[l>>2]|0)+1)>>0]|0)!=45:0)break;if(!(d[19267+(d[(c[m>>2]|0)+((c[l>>2]|0)+2)>>0]|0)>>0]&4))break}c[l>>2]=(c[l>>2]|0)+2;while(1){if(!(d[19267+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]&4))break;c[l>>2]=(c[l>>2]|0)+1}c[c[h>>2]>>2]=133}while(0);while(1){if(!(d[19267+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]&70))break;c[c[h>>2]>>2]=160;c[l>>2]=(c[l>>2]|0)+1}c[n>>2]=c[l>>2];n=c[n>>2]|0;i=o;return n|0}else if((k|0)==138)c[l>>2]=1;while(1){if(!(d[19267+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]&70))break;c[l>>2]=(c[l>>2]|0)+1}c[c[h>>2]>>2]=27;c[n>>2]=c[l>>2];n=c[n>>2]|0;i=o;return n|0}function Ru(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+48|0;m=o+32|0;p=o+28|0;j=o+24|0;h=o+20|0;l=o+8|0;k=o+4|0;n=o;c[p>>2]=d;c[j>>2]=e;c[h>>2]=g;c[n>>2]=c[p>>2];if((c[c[n>>2]>>2]|0)<0){c[c[n>>2]>>2]=0;c[(c[n>>2]|0)+4>>2]=-1;b[(c[n>>2]|0)+12>>1]=0;a[(c[n>>2]|0)+12+2>>0]=0}c[l>>2]=c[f>>2];c[l+4>>2]=c[f+4>>2];c[(c[n>>2]|0)+8>>2]=c[h>>2];while(1){c[k>>2]=cv(c[n>>2]|0,c[j>>2]&255)|0;h=c[k>>2]|0;do if((c[k>>2]|0)>976){g=c[n>>2]|0;if((h|0)<=1304){ev(g,(c[k>>2]|0)-977|0);break}else{p=c[j>>2]|0;c[m>>2]=c[l>>2];c[m+4>>2]=c[l+4>>2];c[m+8>>2]=c[l+8>>2];fv(g,p,m);av(c[n>>2]|0,c[j>>2]&255,l);c[j>>2]=253;break}}else{if((h|0)>435)c[k>>2]=(c[k>>2]|0)+328;dv(c[n>>2]|0,c[k>>2]|0,c[j>>2]|0,l);p=(c[n>>2]|0)+4|0;c[p>>2]=(c[p>>2]|0)+-1;c[j>>2]=253}while(0);if((c[j>>2]|0)==253){h=13;break}if((c[c[n>>2]>>2]|0)<0){h=13;break}}if((h|0)==13){i=o;return}}function Su(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;g=f+8|0;d=f+4|0;e=f;c[g>>2]=a;c[d>>2]=b;c[e>>2]=c[g>>2];while(1){if((c[c[e>>2]>>2]|0)<0)break;$u(c[e>>2]|0)}Qb[c[d>>2]&255](c[e>>2]|0);i=f;return}function Tu(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(c[b>>2]|0)){i=e;return}c[d>>2]=c[c[b>>2]>>2];Rf(c[d>>2]|0,c[b>>2]|0);a=c[(c[b>>2]|0)+52>>2]|0;if(c[(c[b>>2]|0)+48>>2]|0)c[(c[(c[b>>2]|0)+48>>2]|0)+52>>2]=a;else c[(c[d>>2]|0)+4>>2]=a;if(c[(c[b>>2]|0)+52>>2]|0)c[(c[(c[b>>2]|0)+52>>2]|0)+48>>2]=c[(c[b>>2]|0)+48>>2];c[(c[b>>2]|0)+40>>2]=-1241070648;c[c[b>>2]>>2]=0;Sf(c[d>>2]|0,c[b>>2]|0);i=e;return}function Uu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=h;return}c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[e>>2]>>2]|0))break;c[g>>2]=(c[e>>2]|0)+8+(c[f>>2]<<4);Vu(c[d>>2]|0,c[(c[g>>2]|0)+4>>2]|0);Wu(c[d>>2]|0,c[(c[g>>2]|0)+8>>2]|0);Sf(c[d>>2]|0,c[c[g>>2]>>2]|0);c[f>>2]=(c[f>>2]|0)+1}Sf(c[d>>2]|0,c[e>>2]|0);i=h;return}function Vu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=h;return}c[g>>2]=c[(c[e>>2]|0)+4>>2];c[f>>2]=0;while(1){a=c[d>>2]|0;if((c[f>>2]|0)>=(c[c[e>>2]>>2]|0))break;Zu(a,c[c[g>>2]>>2]|0);Sf(c[d>>2]|0,c[(c[g>>2]|0)+4>>2]|0);Sf(c[d>>2]|0,c[(c[g>>2]|0)+8>>2]|0);c[f>>2]=(c[f>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+20}Sf(a,c[(c[e>>2]|0)+4>>2]|0);Sf(c[d>>2]|0,c[e>>2]|0);i=h;return}function Wu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;Xu(c[f>>2]|0,c[e>>2]|0,1);i=d;return}function Xu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;while(1){if(!(c[f>>2]|0))break;c[h>>2]=c[(c[f>>2]|0)+52>>2];Vu(c[e>>2]|0,c[c[f>>2]>>2]|0);Yu(c[e>>2]|0,c[(c[f>>2]|0)+32>>2]|0);Zu(c[e>>2]|0,c[(c[f>>2]|0)+36>>2]|0);Vu(c[e>>2]|0,c[(c[f>>2]|0)+40>>2]|0);Zu(c[e>>2]|0,c[(c[f>>2]|0)+44>>2]|0);Vu(c[e>>2]|0,c[(c[f>>2]|0)+48>>2]|0);Zu(c[e>>2]|0,c[(c[f>>2]|0)+60>>2]|0);Zu(c[e>>2]|0,c[(c[f>>2]|0)+64>>2]|0);Uu(c[e>>2]|0,c[(c[f>>2]|0)+68>>2]|0);if(c[g>>2]|0)Sf(c[e>>2]|0,c[f>>2]|0);c[f>>2]=c[h>>2];c[g>>2]=1}i=j;return}function Yu(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;if(!(c[f>>2]|0)){i=j;return}c[h>>2]=(c[f>>2]|0)+8;c[g>>2]=0;while(1){a=c[e>>2]|0;if((c[g>>2]|0)>=(c[c[f>>2]>>2]|0))break;Sf(a,c[(c[h>>2]|0)+4>>2]|0);Sf(c[e>>2]|0,c[(c[h>>2]|0)+8>>2]|0);Sf(c[e>>2]|0,c[(c[h>>2]|0)+12>>2]|0);if((d[(c[h>>2]|0)+36+1>>0]|0)>>>1&1)Sf(c[e>>2]|0,c[(c[h>>2]|0)+64>>2]|0);if((d[(c[h>>2]|0)+36+1>>0]|0)>>>2&1)Vu(c[e>>2]|0,c[(c[h>>2]|0)+64>>2]|0);Qf(c[e>>2]|0,c[(c[h>>2]|0)+16>>2]|0);Wu(c[e>>2]|0,c[(c[h>>2]|0)+20>>2]|0);Zu(c[e>>2]|0,c[(c[h>>2]|0)+48>>2]|0);_u(c[e>>2]|0,c[(c[h>>2]|0)+52>>2]|0);c[g>>2]=(c[g>>2]|0)+1;c[h>>2]=(c[h>>2]|0)+72}Sf(a,c[f>>2]|0);i=j;return}function Zu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=f;return}do if(!(c[(c[e>>2]|0)+4>>2]&16384)){Zu(c[d>>2]|0,c[(c[e>>2]|0)+12>>2]|0);Zu(c[d>>2]|0,c[(c[e>>2]|0)+16>>2]|0);if(c[(c[e>>2]|0)+4>>2]&65536)Sf(c[d>>2]|0,c[(c[e>>2]|0)+8>>2]|0);a=c[d>>2]|0;b=(c[e>>2]|0)+20|0;if(c[(c[e>>2]|0)+4>>2]&2048){Wu(a,c[b>>2]|0);break}else{Vu(a,c[b>>2]|0);break}}while(0);if(c[(c[e>>2]|0)+4>>2]&32768){i=f;return}Sf(c[d>>2]|0,c[e>>2]|0);i=f;return}function _u(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=g;return}c[f>>2]=0;while(1){a=c[d>>2]|0;if((c[f>>2]|0)>=(c[(c[e>>2]|0)+4>>2]|0))break;Sf(a,c[(c[c[e>>2]>>2]|0)+(c[f>>2]<<3)>>2]|0);c[f>>2]=(c[f>>2]|0)+1}Sf(a,c[c[e>>2]>>2]|0);Sf(c[d>>2]|0,c[e>>2]|0);i=g;return}function $u(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=b;g=c[f>>2]|0;b=c[g>>2]|0;c[g>>2]=b+-1;c[e>>2]=(c[f>>2]|0)+12+(b<<4);av(c[f>>2]|0,a[(c[e>>2]|0)+2>>0]|0,(c[e>>2]|0)+4|0);i=d;return}function av(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;j=i;i=i+16|0;l=j+8|0;k=j+12|0;g=j+4|0;h=j;c[l>>2]=b;a[k>>0]=e;c[g>>2]=f;c[h>>2]=c[(c[l>>2]|0)+8>>2];do switch(d[k>>0]|0|0){case 208:case 197:case 196:case 163:{Wu(c[c[h>>2]>>2]|0,c[c[g>>2]>>2]|0);i=j;return}case 175:case 174:{Zu(c[c[h>>2]>>2]|0,c[c[g>>2]>>2]|0);i=j;return}case 227:case 220:case 211:case 210:case 209:case 206:case 204:case 201:case 189:case 188:case 179:{Vu(c[c[h>>2]>>2]|0,c[c[g>>2]>>2]|0);i=j;return}case 214:case 213:case 202:case 195:{Yu(c[c[h>>2]>>2]|0,c[c[g>>2]>>2]|0);i=j;return}case 251:case 198:{Uu(c[c[h>>2]>>2]|0,c[c[g>>2]>>2]|0);i=j;return}case 242:case 237:case 228:case 226:case 217:case 205:case 203:{Zu(c[c[h>>2]>>2]|0,c[c[g>>2]>>2]|0);i=j;return}case 222:case 219:case 218:{_u(c[c[h>>2]>>2]|0,c[c[g>>2]>>2]|0);i=j;return}case 238:case 233:{bv(c[c[h>>2]>>2]|0,c[c[g>>2]>>2]|0);i=j;return}case 235:{_u(c[c[h>>2]>>2]|0,c[(c[g>>2]|0)+4>>2]|0);i=j;return}default:{i=j;return}}while(0)}function bv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;while(1){if(!(c[e>>2]|0))break;c[f>>2]=c[e>>2];c[e>>2]=c[(c[e>>2]|0)+28>>2];Zu(c[d>>2]|0,c[(c[f>>2]|0)+16>>2]|0);Vu(c[d>>2]|0,c[(c[f>>2]|0)+20>>2]|0);Wu(c[d>>2]|0,c[(c[f>>2]|0)+8>>2]|0);_u(c[d>>2]|0,c[(c[f>>2]|0)+24>>2]|0);Sf(c[d>>2]|0,c[f>>2]|0)}i=g;return}function cv(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+32|0;h=p+16|0;q=p+12|0;j=p+21|0;k=p+8|0;n=p+4|0;l=p+20|0;m=p;c[q>>2]=f;a[j>>0]=g;c[n>>2]=e[(c[q>>2]|0)+12+(c[c[q>>2]>>2]<<4)>>1];if((c[n>>2]|0)>=977){c[h>>2]=c[n>>2];q=c[h>>2]|0;i=p;return q|0}while(1){c[k>>2]=b[15538+(c[n>>2]<<1)>>1];if((c[k>>2]|0)==-89){o=4;break}c[k>>2]=(c[k>>2]|0)+(d[j>>0]|0);if(!((c[k>>2]|0)<0|(c[k>>2]|0)>=1501)?(d[38518+(c[k>>2]|0)>>0]|0)==(d[j>>0]|0):0){o=15;break}if((d[j>>0]|0)<=0)break;if((d[j>>0]|0)>>>0>=70){o=11;break}q=a[40019+(d[j>>0]|0)>>0]|0;a[l>>0]=q;if(!(q&255)){o=11;break}a[j>>0]=a[l>>0]|0}if((o|0)==4){c[h>>2]=e[16410+(c[n>>2]<<1)>>1];q=c[h>>2]|0;i=p;return q|0}else if((o|0)==11){c[m>>2]=(c[k>>2]|0)-(d[j>>0]|0)+70;if((c[m>>2]|0)>=0&(c[m>>2]|0)<1501?(d[38518+(c[m>>2]|0)>>0]|0)==70:0){c[h>>2]=e[12532+(c[m>>2]<<1)>>1];q=c[h>>2]|0;i=p;return q|0}}else if((o|0)==15){c[h>>2]=e[12532+(c[k>>2]<<1)>>1];q=c[h>>2]|0;i=p;return q|0}c[h>>2]=e[16410+(c[n>>2]<<1)>>1];q=c[h>>2]|0;i=p;return q|0}function dv(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;c[l>>2]=g;f=c[h>>2]|0;c[f>>2]=(c[f>>2]|0)+1;f=c[h>>2]|0;if((c[c[h>>2]>>2]|0)>=100){gH(f,c[l>>2]|0);i=n;return}else{c[m>>2]=(c[h>>2]|0)+12+(c[f>>2]<<4);b[c[m>>2]>>1]=c[j>>2];a[(c[m>>2]|0)+2>>0]=c[k>>2];m=(c[m>>2]|0)+4|0;l=c[l>>2]|0;c[m>>2]=c[l>>2];c[m+4>>2]=c[l+4>>2];c[m+8>>2]=c[l+8>>2];i=n;return}}function ev(f,g){f=f|0;g=g|0;var h=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,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;$=i;i=i+256|0;M=$+40|0;L=$+32|0;O=$+24|0;N=$+16|0;R=$+8|0;K=$;U=$+248|0;V=$+244|0;X=$+240|0;W=$+236|0;Y=$+224|0;Z=$+220|0;_=$+216|0;T=$+212|0;I=$+200|0;J=$+188|0;j=$+168|0;k=$+164|0;y=$+160|0;r=$+156|0;o=$+152|0;P=$+144|0;z=$+136|0;p=$+132|0;l=$+128|0;A=$+124|0;q=$+120|0;n=$+116|0;v=$+112|0;w=$+108|0;B=$+104|0;C=$+100|0;E=$+96|0;D=$+92|0;F=$+88|0;G=$+84|0;H=$+80|0;s=$+76|0;t=$+72|0;u=$+68|0;x=$+64|0;Q=$+60|0;m=$+56|0;h=$+48|0;c[U>>2]=f;c[V>>2]=g;c[T>>2]=c[(c[U>>2]|0)+8>>2];c[Z>>2]=(c[U>>2]|0)+12+(c[c[U>>2]>>2]<<4);c[Y>>2]=c[1265];c[Y+4>>2]=c[1266];c[Y+8>>2]=c[1267];a:do switch(c[V>>2]|0){case 6:{a[(c[T>>2]|0)+453>>0]=1;break}case 7:{a[(c[T>>2]|0)+453>>0]=2;break}case 8:{gv(c[T>>2]|0);break}case 9:{hv(c[T>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);break}case 13:{c[Y>>2]=7;break}case 117:case 115:case 16:case 15:case 14:{c[Y>>2]=d[(c[Z>>2]|0)+2>>0];break}case 18:case 17:{iv(c[T>>2]|0);break}case 19:{jv(c[T>>2]|0);break}case 22:{kv(c[T>>2]|0,0,(c[Z>>2]|0)+4|0);break}case 23:{kv(c[T>>2]|0,1,(c[Z>>2]|0)+4|0);break}case 24:{kv(c[T>>2]|0,2,(c[Z>>2]|0)+4|0);break}case 26:{lv(c[T>>2]|0,(c[Z>>2]|0)+-16+4|0,(c[Z>>2]|0)+4|0,c[(c[Z>>2]|0)+-64+4>>2]|0,0,0,c[(c[Z>>2]|0)+-32+4>>2]|0);break}case 27:{mv(c[T>>2]|0);T=(c[Z>>2]|0)+4|0;c[Y>>2]=c[T>>2];c[Y+4>>2]=c[T+4>>2];break}case 247:case 222:case 219:case 124:case 108:case 97:case 85:case 83:case 81:case 68:case 34:case 31:case 28:{c[Y>>2]=0;break}case 248:case 223:case 220:case 107:case 84:case 69:case 30:case 29:{c[Y>>2]=1;break}case 32:{nv(c[T>>2]|0,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+-16+4|0,c[(c[Z>>2]|0)+4>>2]&255,0);break}case 33:{nv(c[T>>2]|0,0,0,0,c[(c[Z>>2]|0)+4>>2]|0);Wu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 35:{if((c[(c[Z>>2]|0)+4+4>>2]|0)==5?(zd(c[(c[Z>>2]|0)+4>>2]|0,25592,5)|0)==0:0){c[Y>>2]=96;break a}c[Y>>2]=0;T=c[T>>2]|0;S=c[(c[Z>>2]|0)+4>>2]|0;c[K>>2]=c[(c[Z>>2]|0)+4+4>>2];c[K+4>>2]=S;Ah(T,27365,K);break}case 38:{c[Y>>2]=c[(c[Z>>2]|0)+-32+4>>2];c[Y+4>>2]=(c[(c[T>>2]|0)+508>>2]|0)-(c[(c[Z>>2]|0)+-32+4>>2]|0)+(c[(c[T>>2]|0)+508+4>>2]|0);break}case 39:{ov(c[T>>2]|0,(c[Z>>2]|0)+4|0);S=(c[Z>>2]|0)+4|0;c[Y>>2]=c[S>>2];c[Y+4>>2]=c[S+4>>2];c[(c[T>>2]|0)+328+4>>2]=0;break}case 280:case 264:case 263:case 262:case 261:case 260:case 259:case 258:case 257:case 151:case 142:case 131:case 130:case 48:case 45:case 42:case 41:case 40:{T=(c[Z>>2]|0)+4|0;c[Y>>2]=c[T>>2];c[Y+4>>2]=c[T+4>>2];break}case 44:{pv(c[T>>2]|0,(c[Z>>2]|0)+4|0);break}case 46:{c[Y>>2]=c[(c[Z>>2]|0)+-48+4>>2];c[Y+4>>2]=(c[(c[Z>>2]|0)+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0)-(c[(c[Z>>2]|0)+-48+4>>2]|0);break}case 47:{c[Y>>2]=c[(c[Z>>2]|0)+-80+4>>2];c[Y+4>>2]=(c[(c[Z>>2]|0)+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0)-(c[(c[Z>>2]|0)+-80+4>>2]|0);break}case 49:{c[Y>>2]=c[(c[Z>>2]|0)+-16+4>>2];c[Y+4>>2]=(c[(c[Z>>2]|0)+4+4>>2]|0)+((c[(c[Z>>2]|0)+4>>2]|0)-(c[(c[Z>>2]|0)+-16+4>>2]|0));break}case 92:case 54:{T=(c[T>>2]|0)+328|0;S=(c[Z>>2]|0)+4|0;c[T>>2]=c[S>>2];c[T+4>>2]=c[S+4>>2];break}case 57:case 55:{qv(c[T>>2]|0,(c[Z>>2]|0)+4|0);break}case 56:{qv(c[T>>2]|0,(c[Z>>2]|0)+-16+4|0);break}case 58:{c[I>>2]=rv(c[T>>2]|0,155,c[(c[Z>>2]|0)+4>>2]|0,0,0)|0;c[I+4>>2]=c[(c[Z>>2]|0)+-16+4>>2];c[I+8>>2]=c[(c[Z>>2]|0)+4+8>>2];qv(c[T>>2]|0,I);break}case 59:{sv(J,c[T>>2]|0,97,(c[Z>>2]|0)+4|0);qv(c[T>>2]|0,J);break}case 61:{tv(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 62:{uv(c[T>>2]|0,0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0);break}case 63:{vv(c[T>>2]|0,0,0,0,0,c[(c[Z>>2]|0)+4>>2]|0,0,0,0,0)|0;break}case 64:{wv(c[T>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);break}case 65:{xv(c[T>>2]|0,0,(c[Z>>2]|0)+-32+4|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 66:{yv(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 67:{zv(c[T>>2]|0,(c[Z>>2]|0)+4|0);break}case 70:{c[Y>>2]=0;break}case 71:{c[Y>>2]=c[(c[Z>>2]|0)+-16+4>>2]&~c[(c[Z>>2]|0)+4+4>>2]|c[(c[Z>>2]|0)+4>>2];break}case 73:case 72:{c[Y>>2]=0;c[Y+4>>2]=0;break}case 74:{c[Y>>2]=c[(c[Z>>2]|0)+4>>2];c[Y+4>>2]=255;break}case 75:{c[Y>>2]=c[(c[Z>>2]|0)+4>>2]<<8;c[Y+4>>2]=65280;break}case 76:{c[Y>>2]=7;break}case 77:{c[Y>>2]=8;break}case 78:{c[Y>>2]=9;break}case 79:{c[Y>>2]=6;break}case 80:{c[Y>>2]=0;break}case 178:case 103:case 102:case 100:case 98:case 82:{c[Y>>2]=c[(c[Z>>2]|0)+4>>2];break}case 86:{c[Y+4>>2]=0;c[Y>>2]=0;break}case 87:{T=(c[Z>>2]|0)+-16+4|0;c[Y>>2]=c[T>>2];c[Y+4>>2]=c[T+4>>2];break}case 90:{c[(c[T>>2]|0)+328+4>>2]=0;break}case 93:{uv(c[T>>2]|0,c[(c[Z>>2]|0)+-48+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,0);break}case 94:{vv(c[T>>2]|0,0,0,0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,0,0,0,0)|0;break}case 95:{wv(c[T>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0);break}case 96:{xv(c[T>>2]|0,c[(c[Z>>2]|0)+-96+4>>2]|0,(c[Z>>2]|0)+-48+4|0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);yv(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 101:case 99:{c[Y>>2]=10;break}case 104:{c[Y>>2]=4;break}case 179:case 105:{c[Y>>2]=5;break}case 106:{Av(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,0,c[(c[Z>>2]|0)+-16+4>>2]|0);break}case 109:{Bv(c[T>>2]|0,(c[Z>>2]|0)+-128+4|0,(c[Z>>2]|0)+-64+4|0,(c[Z>>2]|0)+-48+4|0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+-112+4>>2]|0,c[(c[Z>>2]|0)+-80+4>>2]|0);break}case 110:{Av(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,1,c[(c[Z>>2]|0)+-16+4>>2]|0);break}case 111:{c[j>>2]=c[1268];c[j+4>>2]=c[1269];c[j+8>>2]=c[1270];c[j+12>>2]=c[1271];c[j+16>>2]=c[1272];Cv(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,j)|0;Wu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 112:{c[k>>2]=c[(c[Z>>2]|0)+4>>2];if(c[k>>2]|0){c[(c[k>>2]|0)+68>>2]=c[(c[Z>>2]|0)+-16+4>>2];Dv(c[T>>2]|0,c[k>>2]|0)}else Uu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);c[Y>>2]=c[k>>2];break}case 119:case 113:{c[Y>>2]=c[(c[Z>>2]|0)+4>>2];break}case 114:{c[y>>2]=c[(c[Z>>2]|0)+4>>2];c[r>>2]=c[(c[Z>>2]|0)+-32+4>>2];if((c[y>>2]|0)!=0?(c[(c[y>>2]|0)+52>>2]|0)!=0:0){c[P+4>>2]=0;Dv(c[T>>2]|0,c[y>>2]|0);c[o>>2]=Ev(c[T>>2]|0,0,0,0,P,c[y>>2]|0,0,0)|0;c[y>>2]=Fv(c[T>>2]|0,0,c[o>>2]|0,0,0,0,0,0,0,0)|0}if(c[y>>2]|0){a[(c[y>>2]|0)+4>>0]=c[(c[Z>>2]|0)+-16+4>>2];c[(c[y>>2]|0)+52>>2]=c[r>>2];if(c[r>>2]|0){S=(c[r>>2]|0)+6|0;b[S>>1]=e[S>>1]&-513}S=(c[y>>2]|0)+6|0;b[S>>1]=e[S>>1]&-513;if((c[(c[Z>>2]|0)+-16+4>>2]|0)!=116)a[(c[T>>2]|0)+22>>0]=1}else Wu(c[c[T>>2]>>2]|0,c[r>>2]|0);c[Y>>2]=c[y>>2];break}case 116:{c[Y>>2]=116;break}case 118:{c[Y>>2]=Fv(c[T>>2]|0,c[(c[Z>>2]|0)+-96+4>>2]|0,c[(c[Z>>2]|0)+-80+4>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0,c[(c[Z>>2]|0)+-48+4>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+-112+4>>2]&65535,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+4+4>>2]|0)|0;break}case 120:{c[Y>>2]=Fv(c[T>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,0,0,0,0,0,256,0,0)|0;break}case 121:{c[p>>2]=c[(c[Z>>2]|0)+-64+4>>2];c[z>>2]=Fv(c[T>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,0,0,0,0,0,768,0,0)|0;if(c[p>>2]|0){T=(c[p>>2]|0)+6|0;b[T>>1]=e[T>>1]&-513}if(c[z>>2]|0){a[(c[z>>2]|0)+4>>0]=116;c[p>>2]=c[(c[Z>>2]|0)+-64+4>>2];c[(c[z>>2]|0)+52>>2]=c[p>>2];c[Y>>2]=c[z>>2];break a}else{c[Y>>2]=c[p>>2];break a}}case 122:{c[Y>>2]=1;break}case 123: -{c[Y>>2]=2;break}case 244:case 125:{c[Y>>2]=c[(c[Z>>2]|0)+-16+4>>2];break}case 243:case 237:case 162:case 155:case 126:{c[Y>>2]=0;break}case 127:{c[Y>>2]=Gv(c[T>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0)|0;if((c[(c[Z>>2]|0)+4+4>>2]|0)>>>0>0)Hv(c[T>>2]|0,c[Y>>2]|0,(c[Z>>2]|0)+4|0,1);Iv(c[T>>2]|0,c[Y>>2]|0,(c[Z>>2]|0)+-16+4|0);break}case 128:{c[l>>2]=Jv(c[c[T>>2]>>2]|0,158,0)|0;c[Y>>2]=Gv(c[T>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[l>>2]|0)|0;break}case 129:{c[A>>2]=rv(c[T>>2]|0,158,0,0,(c[Z>>2]|0)+4|0)|0;c[q>>2]=rv(c[T>>2]|0,27,0,0,(c[Z>>2]|0)+-32+4|0)|0;c[n>>2]=rv(c[T>>2]|0,122,c[q>>2]|0,c[A>>2]|0,0)|0;c[Y>>2]=Gv(c[T>>2]|0,c[(c[Z>>2]|0)+-48+4>>2]|0,c[n>>2]|0)|0;break}case 132:{c[Y+4>>2]=0;break}case 133:{c[Y>>2]=ph(c[c[T>>2]>>2]|0,80,0)|0;break}case 134:{c[Y>>2]=c[(c[Z>>2]|0)+4>>2];Kv(c[Y>>2]|0);break}case 135:{c[Y>>2]=c[(c[Z>>2]|0)+-16+4>>2];if((c[Y>>2]|0)!=0?(c[c[Y>>2]>>2]|0)>0:0)a[(c[Y>>2]|0)+8+(((c[c[Y>>2]>>2]|0)-1|0)*72|0)+36>>0]=c[(c[Z>>2]|0)+4>>2];break}case 136:{c[Y>>2]=0;break}case 137:{c[Y>>2]=Ev(c[T>>2]|0,c[(c[Z>>2]|0)+-96+4>>2]|0,(c[Z>>2]|0)+-80+4|0,(c[Z>>2]|0)+-64+4|0,(c[Z>>2]|0)+-48+4|0,0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;Lv(c[T>>2]|0,c[Y>>2]|0,(c[Z>>2]|0)+-32+4|0);break}case 138:{c[Y>>2]=Ev(c[T>>2]|0,c[(c[Z>>2]|0)+-128+4>>2]|0,(c[Z>>2]|0)+-112+4|0,(c[Z>>2]|0)+-96+4|0,(c[Z>>2]|0)+-32+4|0,0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;Mv(c[T>>2]|0,c[Y>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0);break}case 139:{c[Y>>2]=Ev(c[T>>2]|0,c[(c[Z>>2]|0)+-96+4>>2]|0,0,0,(c[Z>>2]|0)+-32+4|0,c[(c[Z>>2]|0)+-64+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;break}case 140:{if((((c[(c[Z>>2]|0)+-96+4>>2]|0)==0?(c[(c[Z>>2]|0)+-32+4+4>>2]|0)==0:0)?(c[(c[Z>>2]|0)+-16+4>>2]|0)==0:0)?(c[(c[Z>>2]|0)+4>>2]|0)==0:0){c[Y>>2]=c[(c[Z>>2]|0)+-64+4>>2];break a}if((c[c[(c[Z>>2]|0)+-64+4>>2]>>2]|0)!=1){Kv(c[(c[Z>>2]|0)+-64+4>>2]|0);c[B>>2]=Fv(c[T>>2]|0,0,c[(c[Z>>2]|0)+-64+4>>2]|0,0,0,0,0,1024,0,0)|0;c[Y>>2]=Ev(c[T>>2]|0,c[(c[Z>>2]|0)+-96+4>>2]|0,0,0,(c[Z>>2]|0)+-32+4|0,c[B>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;break a}c[Y>>2]=Ev(c[T>>2]|0,c[(c[Z>>2]|0)+-96+4>>2]|0,0,0,(c[Z>>2]|0)+-32+4|0,0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;if(c[Y>>2]|0){c[v>>2]=(c[Y>>2]|0)+8+(((c[c[Y>>2]>>2]|0)-1|0)*72|0);c[w>>2]=(c[(c[Z>>2]|0)+-64+4>>2]|0)+8;c[(c[v>>2]|0)+8>>2]=c[(c[w>>2]|0)+8>>2];c[(c[v>>2]|0)+4>>2]=c[(c[w>>2]|0)+4>>2];c[(c[v>>2]|0)+20>>2]=c[(c[w>>2]|0)+20>>2];c[(c[w>>2]|0)+4>>2]=0;c[(c[w>>2]|0)+8>>2]=0;c[(c[w>>2]|0)+20>>2]=0}Yu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0);break}case 150:case 141:{c[Y>>2]=0;c[Y+4>>2]=0;break}case 143:{c[Y>>2]=Nv(c[c[T>>2]>>2]|0,0,(c[Z>>2]|0)+-16+4|0,(c[Z>>2]|0)+4|0)|0;break}case 144:{c[Y>>2]=1;break}case 145:{c[Y>>2]=Ov(c[T>>2]|0,(c[Z>>2]|0)+-16+4|0,0,0)|0;break}case 146:{c[Y>>2]=Ov(c[T>>2]|0,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+-16+4|0,0)|0;break}case 147:{c[Y>>2]=Ov(c[T>>2]|0,(c[Z>>2]|0)+-48+4|0,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+-16+4|0)|0;break}case 234:case 232:case 172:case 165:case 148:{c[Y>>2]=c[(c[Z>>2]|0)+4>>2];break}case 235:case 233:case 171:case 164:case 149:{c[Y>>2]=0;break}case 152:{c[Y>>2]=0;c[Y+4>>2]=1;break}case 181:case 153:{c[Y>>2]=c[(c[Z>>2]|0)+-16+4>>2];break}case 180:case 154:{c[Y>>2]=0;break}case 236:case 163:case 156:{c[Y>>2]=c[(c[Z>>2]|0)+4>>2];break}case 157:{c[Y>>2]=Gv(c[T>>2]|0,c[(c[Z>>2]|0)+-48+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0)|0;Pv(c[Y>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 158:{c[Y>>2]=Gv(c[T>>2]|0,0,c[(c[Z>>2]|0)+-16+4>>2]|0)|0;Pv(c[Y>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 159:{c[Y>>2]=0;break}case 160:{c[Y>>2]=1;break}case 161:{c[Y>>2]=-1;break}case 166:{c[Y>>2]=0;c[Y+4>>2]=0;break}case 167:{c[Y>>2]=c[(c[Z>>2]|0)+4>>2];c[Y+4>>2]=0;break}case 168:{c[Y>>2]=c[(c[Z>>2]|0)+-32+4>>2];c[Y+4>>2]=c[(c[Z>>2]|0)+4>>2];break}case 169:{c[Y+4>>2]=c[(c[Z>>2]|0)+-32+4>>2];c[Y>>2]=c[(c[Z>>2]|0)+4>>2];break}case 170:{Qv(c[T>>2]|0,c[(c[Z>>2]|0)+-80+4>>2]|0,1);Lv(c[T>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,(c[Z>>2]|0)+-16+4|0);Rv(c[T>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 173:{Qv(c[T>>2]|0,c[(c[Z>>2]|0)+-112+4>>2]|0,1);Lv(c[T>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0,(c[Z>>2]|0)+-48+4|0);Sv(c[T>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,27392);Tv(c[T>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+-80+4>>2]|0);break}case 174:{c[Y>>2]=Gv(c[T>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;Hv(c[T>>2]|0,c[Y>>2]|0,(c[Z>>2]|0)+-32+4|0,1);break}case 175:{c[Y>>2]=Gv(c[T>>2]|0,0,c[(c[Z>>2]|0)+4>>2]|0)|0;Hv(c[T>>2]|0,c[Y>>2]|0,(c[Z>>2]|0)+-32+4|0,1);break}case 176:{Qv(c[T>>2]|0,c[(c[Z>>2]|0)+-80+4>>2]|0,1);Uv(c[T>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0);break}case 177:{Qv(c[T>>2]|0,c[(c[Z>>2]|0)+-96+4>>2]|0,1);Uv(c[T>>2]|0,c[(c[Z>>2]|0)+-48+4>>2]|0,0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+-80+4>>2]|0);break}case 182:{c[Y>>2]=Vv(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,(c[Z>>2]|0)+4|0)|0;break}case 183:{c[Y>>2]=Vv(c[c[T>>2]>>2]|0,0,(c[Z>>2]|0)+4|0)|0;break}case 184:{T=(c[Z>>2]|0)+4|0;c[Y>>2]=c[T>>2];c[Y+4>>2]=c[T+4>>2];c[Y+8>>2]=c[T+8>>2];break}case 185:{c[Y>>2]=c[(c[Z>>2]|0)+-16+4>>2];Wv(Y,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+4|0);break}case 192:case 191:case 186:{sv(Y,c[T>>2]|0,d[(c[Z>>2]|0)+2>>0]|0,(c[Z>>2]|0)+4|0);break}case 188:case 187:{sv(Y,c[T>>2]|0,27,(c[Z>>2]|0)+4|0);break}case 189:{c[C>>2]=rv(c[T>>2]|0,27,0,0,(c[Z>>2]|0)+-32+4|0)|0;c[E>>2]=rv(c[T>>2]|0,27,0,0,(c[Z>>2]|0)+4|0)|0;c[Y>>2]=rv(c[T>>2]|0,122,c[C>>2]|0,c[E>>2]|0,0)|0;Wv(Y,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+4|0);break}case 190:{c[D>>2]=rv(c[T>>2]|0,27,0,0,(c[Z>>2]|0)+-64+4|0)|0;c[F>>2]=rv(c[T>>2]|0,27,0,0,(c[Z>>2]|0)+-32+4|0)|0;c[G>>2]=rv(c[T>>2]|0,27,0,0,(c[Z>>2]|0)+4|0)|0;c[H>>2]=rv(c[T>>2]|0,122,c[F>>2]|0,c[G>>2]|0,0)|0;c[Y>>2]=rv(c[T>>2]|0,122,c[D>>2]|0,c[H>>2]|0,0)|0;Wv(Y,(c[Z>>2]|0)+-64+4|0,(c[Z>>2]|0)+4|0);break}case 193:{do if(((c[(c[Z>>2]|0)+4+4>>2]|0)>>>0>=2?(a[c[(c[Z>>2]|0)+4>>2]>>0]|0)==35:0)?(d[19267+(d[(c[(c[Z>>2]|0)+4>>2]|0)+1>>0]|0)>>0]&4|0)!=0:0){h=c[T>>2]|0;j=(c[Z>>2]|0)+4|0;if(!(d[(c[T>>2]|0)+18>>0]|0)){c[R>>2]=j;Ah(h,27341,R);c[Y>>2]=0;break}c[Y>>2]=rv(h,157,0,0,j)|0;if(c[Y>>2]|0)Li((c[(c[Z>>2]|0)+4>>2]|0)+1|0,(c[Y>>2]|0)+28|0)|0}else S=161;while(0);if((S|0)==161){sv(Y,c[T>>2]|0,135,(c[Z>>2]|0)+4|0);Xv(c[T>>2]|0,c[Y>>2]|0)}Wv(Y,(c[Z>>2]|0)+4|0,(c[Z>>2]|0)+4|0);break}case 194:{c[Y>>2]=Yv(c[T>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,(c[Z>>2]|0)+4|0,1)|0;c[Y+4>>2]=c[(c[Z>>2]|0)+-32+4+4>>2];c[Y+8>>2]=(c[(c[Z>>2]|0)+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0);break}case 195:{c[Y>>2]=rv(c[T>>2]|0,38,c[(c[Z>>2]|0)+-48+4>>2]|0,0,(c[Z>>2]|0)+-16+4|0)|0;Wv(Y,(c[Z>>2]|0)+-80+4|0,(c[Z>>2]|0)+4|0);break}case 196:{if((c[(c[Z>>2]|0)+-16+4>>2]|0)!=0?(c[c[(c[Z>>2]|0)+-16+4>>2]>>2]|0)>(c[(c[c[T>>2]>>2]|0)+88+24>>2]|0):0){S=c[T>>2]|0;c[N>>2]=(c[Z>>2]|0)+-64+4;Ah(S,27401,N)}c[Y>>2]=Zv(c[T>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,(c[Z>>2]|0)+-64+4|0)|0;Wv(Y,(c[Z>>2]|0)+-64+4|0,(c[Z>>2]|0)+4|0);if((c[(c[Z>>2]|0)+-32+4>>2]|0)==1?(c[Y>>2]|0)!=0:0){T=(c[Y>>2]|0)+4|0;c[T>>2]=c[T>>2]|16}break}case 197:{c[Y>>2]=Zv(c[T>>2]|0,0,(c[Z>>2]|0)+-48+4|0)|0;Wv(Y,(c[Z>>2]|0)+-48+4|0,(c[Z>>2]|0)+4|0);break}case 198:{c[Y>>2]=Zv(c[T>>2]|0,0,(c[Z>>2]|0)+4|0)|0;Wv(Y,(c[Z>>2]|0)+4|0,(c[Z>>2]|0)+4|0);break}case 206:case 205:case 204:case 203:case 202:case 201:case 200:case 199:{_v(Y,c[T>>2]|0,d[(c[Z>>2]|0)+-16+2>>0]|0,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+4|0);break}case 207:{T=(c[Z>>2]|0)+4|0;c[Y>>2]=c[T>>2];c[Y+4>>2]=c[T+4>>2];c[Y+8>>2]=0;break}case 208:{T=(c[Z>>2]|0)+4|0;c[Y>>2]=c[T>>2];c[Y+4>>2]=c[T+4>>2];c[Y+8>>2]=1;break}case 209:{c[s>>2]=Gv(c[T>>2]|0,0,c[(c[Z>>2]|0)+4>>2]|0)|0;c[s>>2]=Gv(c[T>>2]|0,c[s>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0)|0;c[Y>>2]=Zv(c[T>>2]|0,c[s>>2]|0,(c[Z>>2]|0)+-16+4|0)|0;$v(c[T>>2]|0,c[(c[Z>>2]|0)+-16+4+8>>2]|0,Y);c[Y+4>>2]=c[(c[Z>>2]|0)+-32+4+4>>2];c[Y+8>>2]=c[(c[Z>>2]|0)+4+8>>2];if(c[Y>>2]|0){T=(c[Y>>2]|0)+4|0;c[T>>2]=c[T>>2]|128}break}case 210:{c[t>>2]=Gv(c[T>>2]|0,0,c[(c[Z>>2]|0)+-32+4>>2]|0)|0;c[t>>2]=Gv(c[T>>2]|0,c[t>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0)|0;c[t>>2]=Gv(c[T>>2]|0,c[t>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;c[Y>>2]=Zv(c[T>>2]|0,c[t>>2]|0,(c[Z>>2]|0)+-48+4|0)|0;$v(c[T>>2]|0,c[(c[Z>>2]|0)+-48+4+8>>2]|0,Y);c[Y+4>>2]=c[(c[Z>>2]|0)+-64+4+4>>2];c[Y+8>>2]=c[(c[Z>>2]|0)+4+8>>2];if(c[Y>>2]|0){T=(c[Y>>2]|0)+4|0;c[T>>2]=c[T>>2]|128}break}case 211:{aw(Y,c[T>>2]|0,d[(c[Z>>2]|0)+2>>0]|0,(c[Z>>2]|0)+-16+4|0,(c[Z>>2]|0)+4|0);break}case 212:{aw(Y,c[T>>2]|0,77,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+4|0);break}case 213:{_v(Y,c[T>>2]|0,73,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+4|0);bw(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[Y>>2]|0,76);break}case 214:{_v(Y,c[T>>2]|0,148,(c[Z>>2]|0)+-48+4|0,(c[Z>>2]|0)+4|0);bw(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[Y>>2]|0,77);break}case 216:case 215:{cw(Y,c[T>>2]|0,d[(c[Z>>2]|0)+-16+2>>0]|0,(c[Z>>2]|0)+4|0,(c[Z>>2]|0)+-16+4|0);break}case 217:{cw(Y,c[T>>2]|0,155,(c[Z>>2]|0)+4|0,(c[Z>>2]|0)+-16+4|0);break}case 218:{cw(Y,c[T>>2]|0,156,(c[Z>>2]|0)+4|0,(c[Z>>2]|0)+-16+4|0);break}case 221:{c[u>>2]=Gv(c[T>>2]|0,0,c[(c[Z>>2]|0)+-32+4>>2]|0)|0;c[u>>2]=Gv(c[T>>2]|0,c[u>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;c[Y>>2]=rv(c[T>>2]|0,74,c[(c[Z>>2]|0)+-64+4>>2]|0,0,0)|0;if(c[Y>>2]|0)c[(c[Y>>2]|0)+20>>2]=c[u>>2];else Vu(c[c[T>>2]>>2]|0,c[u>>2]|0);$v(c[T>>2]|0,c[(c[Z>>2]|0)+-48+4>>2]|0,Y);c[Y+4>>2]=c[(c[Z>>2]|0)+-64+4+4>>2];c[Y+8>>2]=c[(c[Z>>2]|0)+4+8>>2];break}case 224:{do if(!(c[(c[Z>>2]|0)+-16+4>>2]|0)){c[Y>>2]=rv(c[T>>2]|0,132,0,0,5092+(c[(c[Z>>2]|0)+-48+4>>2]<<3)|0)|0;Zu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0)}else{if((c[c[(c[Z>>2]|0)+-16+4>>2]>>2]|0)==1){c[x>>2]=c[c[(c[(c[Z>>2]|0)+-16+4>>2]|0)+4>>2]>>2];c[c[(c[(c[Z>>2]|0)+-16+4>>2]|0)+4>>2]>>2]=0;Vu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);if(c[x>>2]|0){S=(c[x>>2]|0)+4|0;c[S>>2]=c[S>>2]&-257;S=(c[x>>2]|0)+4|0;c[S>>2]=c[S>>2]|512}c[Y>>2]=rv(c[T>>2]|0,(c[(c[Z>>2]|0)+-48+4>>2]|0)!=0?78:79,c[(c[Z>>2]|0)+-64+4>>2]|0,c[x>>2]|0,0)|0;break}c[Y>>2]=rv(c[T>>2]|0,75,c[(c[Z>>2]|0)+-64+4>>2]|0,0,0)|0;if(c[Y>>2]|0){c[(c[Y>>2]|0)+20>>2]=c[(c[Z>>2]|0)+-16+4>>2];dw(c[T>>2]|0,c[Y>>2]|0)}else Vu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);$v(c[T>>2]|0,c[(c[Z>>2]|0)+-48+4>>2]|0,Y)}while(0);c[Y+4>>2]=c[(c[Z>>2]|0)+-64+4+4>>2];c[Y+8>>2]=(c[(c[Z>>2]|0)+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0);break}case 225:{c[Y>>2]=rv(c[T>>2]|0,119,0,0,0)|0;if(c[Y>>2]|0){c[(c[Y>>2]|0)+20>>2]=c[(c[Z>>2]|0)+-16+4>>2];S=(c[Y>>2]|0)+4|0;c[S>>2]=c[S>>2]|2099200;dw(c[T>>2]|0,c[Y>>2]|0)}else Wu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);c[Y+4>>2]=c[(c[Z>>2]|0)+-32+4>>2];c[Y+8>>2]=(c[(c[Z>>2]|0)+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0);break}case 226:{c[Y>>2]=rv(c[T>>2]|0,75,c[(c[Z>>2]|0)+-64+4>>2]|0,0,0)|0;if(c[Y>>2]|0){c[(c[Y>>2]|0)+20>>2]=c[(c[Z>>2]|0)+-16+4>>2];S=(c[Y>>2]|0)+4|0;c[S>>2]=c[S>>2]|2099200;dw(c[T>>2]|0,c[Y>>2]|0)}else Wu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);$v(c[T>>2]|0,c[(c[Z>>2]|0)+-48+4>>2]|0,Y);c[Y+4>>2]=c[(c[Z>>2]|0)+-64+4+4>>2];c[Y+8>>2]=(c[(c[Z>>2]|0)+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0);break}case 227:{c[Q>>2]=Nv(c[c[T>>2]>>2]|0,0,(c[Z>>2]|0)+-16+4|0,(c[Z>>2]|0)+4|0)|0;c[Y>>2]=rv(c[T>>2]|0,75,c[(c[Z>>2]|0)+-48+4>>2]|0,0,0)|0;h=c[T>>2]|0;if(c[Y>>2]|0){S=Fv(h,0,c[Q>>2]|0,0,0,0,0,0,0,0)|0;c[(c[Y>>2]|0)+20>>2]=S;S=(c[Y>>2]|0)+4|0;c[S>>2]=c[S>>2]|2099200;dw(c[T>>2]|0,c[Y>>2]|0)}else Yu(c[h>>2]|0,c[Q>>2]|0);$v(c[T>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,Y);c[Y+4>>2]=c[(c[Z>>2]|0)+-48+4+4>>2];h=c[Z>>2]|0;if(c[(c[Z>>2]|0)+4>>2]|0)h=(c[(c[Z>>2]|0)+4>>2]|0)+(c[h+4+4>>2]|0)|0;else h=(c[(c[Z>>2]|0)+-16+4>>2]|0)+(c[h+-16+4+4>>2]|0)|0;c[Y+8>>2]=h;break}case 228:{S=rv(c[T>>2]|0,20,0,0,0)|0;c[Y>>2]=S;c[m>>2]=S;if(c[m>>2]|0){c[(c[m>>2]|0)+20>>2]=c[(c[Z>>2]|0)+-16+4>>2];S=(c[m>>2]|0)+4|0;c[S>>2]=c[S>>2]|2099200;dw(c[T>>2]|0,c[m>>2]|0)}else Wu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);c[Y+4>>2]=c[(c[Z>>2]|0)+-48+4>>2];c[Y+8>>2]=(c[(c[Z>>2]|0)+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0);break}case 229:{c[Y>>2]=rv(c[T>>2]|0,136,c[(c[Z>>2]|0)+-48+4>>2]|0,0,0)|0;if(c[Y>>2]|0){if(c[(c[Z>>2]|0)+-16+4>>2]|0)h=Gv(c[T>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0)|0;else h=c[(c[Z>>2]|0)+-32+4>>2]|0;c[(c[Y>>2]|0)+20>>2]=h;dw(c[T>>2]|0,c[Y>>2]|0)}else{Vu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0);Zu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0)}c[Y+4>>2]=c[(c[Z>>2]|0)+-64+4>>2];c[Y+8>>2]=(c[(c[Z>>2]|0)+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0);break}case 230:{c[Y>>2]=Gv(c[T>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0)|0;c[Y>>2]=Gv(c[T>>2]|0,c[Y>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;break}case 231:{c[Y>>2]=Gv(c[T>>2]|0,0,c[(c[Z>>2]|0)+-32+4>>2]|0)|0;c[Y>>2]=Gv(c[T>>2]|0,c[Y>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;break}case 238:{c[Y>>2]=Gv(c[T>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;break}case 239:{c[Y>>2]=Gv(c[T>>2]|0,0,c[(c[Z>>2]|0)+4>>2]|0)|0;break}case 240:{vv(c[T>>2]|0,(c[Z>>2]|0)+-112+4|0,(c[Z>>2]|0)+-96+4|0,Nv(c[c[T>>2]>>2]|0,0,(c[Z>>2]|0)+-64+4|0,0)|0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+-160+4>>2]|0,(c[Z>>2]|0)+-176+4|0,c[(c[Z>>2]|0)+4>>2]|0,0,c[(c[Z>>2]|0)+-128+4>>2]|0)|0;break}case 292:case 241:{c[Y>>2]=2;break}case 242:{c[Y>>2]=0;break}case 245:{c[Y>>2]=ew(c[T>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0,(c[Z>>2]|0)+-32+4|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;break}case 246:{c[Y>>2]=ew(c[T>>2]|0,0,(c[Z>>2]|0)+-32+4|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;break}case 249:{fw(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);break}case 251:case 250:{gw(c[T>>2]|0);break}case 252:{hw(c[T>>2]|0,(c[Z>>2]|0)+-16+4|0,(c[Z>>2]|0)+4|0,0,0);break}case 253:{hw(c[T>>2]|0,(c[Z>>2]|0)+-48+4|0,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+4|0,0);break}case 254:{hw(c[T>>2]|0,(c[Z>>2]|0)+-64+4|0,(c[Z>>2]|0)+-48+4|0,(c[Z>>2]|0)+-16+4|0,0);break}case 255:{hw(c[T>>2]|0,(c[Z>>2]|0)+-48+4|0,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+4|0,1);break}case 256:{hw(c[T>>2]|0,(c[Z>>2]|0)+-64+4|0,(c[Z>>2]|0)+-48+4|0,(c[Z>>2]|0)+-16+4|0,1);break}case 265:{c[h>>2]=c[(c[Z>>2]|0)+-48+4>>2];c[h+4>>2]=(c[(c[Z>>2]|0)+4>>2]|0)-(c[(c[Z>>2]|0)+-48+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0);iw(c[T>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,h);break}case 266:{jw(c[T>>2]|0,(c[Z>>2]|0)+-112+4|0,(c[Z>>2]|0)+-96+4|0,c[(c[Z>>2]|0)+-80+4>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0,c[(c[Z>>2]|0)+-64+4+4>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+-160+4>>2]|0,c[(c[Z>>2]|0)+-128+4>>2]|0);h=c[Z>>2]|0;if(!(c[(c[Z>>2]|0)+-96+4+4>>2]|0)){T=h+-112+4|0;c[Y>>2]=c[T>>2];c[Y+4>>2]=c[T+4>>2];break a}else{T=h+-96+4|0;c[Y>>2]=c[T>>2];c[Y+4>>2]=c[T+4>>2];break a}}case 270:case 267:{c[Y>>2]=35;break}case 268:{c[Y>>2]=31;break}case 269:{c[Y>>2]=49;break}case 272:case 271:{c[Y>>2]=d[(c[Z>>2]|0)+2>>0];c[Y+4>>2]=0;break}case 273:{c[Y>>2]=110;c[Y+4>>2]=c[(c[Z>>2]|0)+4>>2];break}case 297:case 276:{c[Y>>2]=0;break}case 298:case 277:{c[Y>>2]=c[(c[Z>>2]|0)+4>>2];break}case 278:{c[(c[(c[(c[Z>>2]|0)+-32+4>>2]|0)+32>>2]|0)+28>>2]=c[(c[Z>>2]|0)+-16+4>>2];c[(c[(c[Z>>2]|0)+-32+4>>2]|0)+32>>2]=c[(c[Z>>2]|0)+-16+4>>2];c[Y>>2]=c[(c[Z>>2]|0)+-32+4>>2];break}case 279:{c[(c[(c[Z>>2]|0)+-16+4>>2]|0)+32>>2]=c[(c[Z>>2]|0)+-16+4>>2];c[Y>>2]=c[(c[Z>>2]|0)+-16+4>>2];break}case 281:{S=(c[Z>>2]|0)+4|0;c[Y>>2]=c[S>>2];c[Y+4>>2]=c[S+4>>2];Ah(c[T>>2]|0,27435,O);break}case 283:{Ah(c[T>>2]|0,27530,L);break}case 284:{Ah(c[T>>2]|0,27614,M);break}case 285:{c[Y>>2]=kw(c[c[T>>2]>>2]|0,(c[Z>>2]|0)+-64+4|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+-80+4>>2]&255)|0;break}case 286:{c[Y>>2]=lw(c[c[T>>2]>>2]|0,(c[Z>>2]|0)+-32+4|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]&255)|0;break}case 287:{c[Y>>2]=mw(c[c[T>>2]>>2]|0,(c[Z>>2]|0)+-32+4|0,c[(c[Z>>2]|0)+4>>2]|0)|0;break}case 288:{c[Y>>2]=nw(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;break}case 289:{c[Y>>2]=rv(c[T>>2]|0,57,0,0,0)|0;if(c[Y>>2]|0)a[(c[Y>>2]|0)+1>>0]=4;c[Y+4>>2]=c[(c[Z>>2]|0)+-48+4>>2];c[Y+8>>2]=(c[(c[Z>>2]|0)+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0);break}case 290:{c[Y>>2]=rv(c[T>>2]|0,57,0,0,(c[Z>>2]|0)+-16+4|0)|0;if(c[Y>>2]|0)a[(c[Y>>2]|0)+1>>0]=c[(c[Z>>2]|0)+-48+4>>2];c[Y+4>>2]=c[(c[Z>>2]|0)+-80+4>>2];c[Y+8>>2]=(c[(c[Z>>2]|0)+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0);break}case 291:{c[Y>>2]=1;break}case 293:{c[Y>>2]=3;break}case 294:{ow(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);break}case 295:{pw(c[T>>2]|0,c[(c[Z>>2]|0)+-48+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 296:{qw(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 301:{rw(c[T>>2]|0,0,0);break}case 302:{rw(c[T>>2]|0,(c[Z>>2]|0)+-16+4|0,(c[Z>>2]|0)+4|0);break}case 303:{sw(c[T>>2]|0,0,0);break}case 304:{sw(c[T>>2]|0,(c[Z>>2]|0)+-16+4|0,(c[Z>>2]|0)+4|0);break}case 305:{tw(c[T>>2]|0,c[(c[Z>>2]|0)+-48+4>>2]|0,(c[Z>>2]|0)+4|0);break}case 306:{uw(c[T>>2]|0,(c[Z>>2]|0)+4|0);break}case 307:{mv(c[T>>2]|0);vw(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 310:{ww(c[T>>2]|0,0);break}case 311:{ww(c[T>>2]|0,(c[Z>>2]|0)+4|0);break}case 312:{xw(c[T>>2]|0,(c[Z>>2]|0)+-48+4|0,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+4|0,c[(c[Z>>2]|0)+-64+4>>2]|0);break}case 315:{yw(c[T>>2]|0);break}case 319:case 318:case 317:{zw(c[T>>2]|0,(c[Z>>2]|0)+4|0);break}case 323:{c[Y>>2]=0;break}case 325:case 324:{c[Y>>2]=c[(c[Z>>2]|0)+4>>2];break}case 326:{c[Y>>2]=Aw(c[T>>2]|0,0,(c[Z>>2]|0)+-80+4|0,c[(c[Z>>2]|0)+-64+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0)|0;break}case 327:{c[Y>>2]=Aw(c[T>>2]|0,c[(c[Z>>2]|0)+-112+4>>2]|0,(c[Z>>2]|0)+-80+4|0,c[(c[Z>>2]|0)+-64+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0)|0;break}default:{}}while(0);c[X>>2]=d[27699+(c[V>>2]<<1)>>0];c[_>>2]=d[27699+(c[V>>2]<<1)+1>>0];V=c[U>>2]|0;c[V>>2]=(c[V>>2]|0)-(c[_>>2]|0);c[W>>2]=Bw(e[(c[Z>>2]|0)+(0-(c[_>>2]|0)<<4)>>1]|0,c[X>>2]&255)|0;if((c[W>>2]|0)>976){Cw(c[U>>2]|0);i=$;return}if((c[W>>2]|0)>435)c[W>>2]=(c[W>>2]|0)+328;h=c[U>>2]|0;if(c[_>>2]|0){c[h>>2]=(c[h>>2]|0)+1;c[Z>>2]=(c[Z>>2]|0)+(0-((c[_>>2]|0)-1)<<4);b[c[Z>>2]>>1]=c[W>>2];a[(c[Z>>2]|0)+2>>0]=c[X>>2];_=(c[Z>>2]|0)+4|0;c[_>>2]=c[Y>>2];c[_+4>>2]=c[Y+4>>2];c[_+8>>2]=c[Y+8>>2];i=$;return}else{dv(h,c[W>>2]|0,c[X>>2]|0,Y);i=$;return}}function fv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e;f=e+12|0;g=e+4|0;c[f>>2]=a;c[e+8>>2]=b;c[g>>2]=c[(c[f>>2]|0)+8>>2];a=c[g>>2]|0;c[h>>2]=d;Ah(a,27341,h);c[(c[f>>2]|0)+8>>2]=c[g>>2];i=e;return}function gv(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;e=m+24|0;f=m+20|0;k=m+16|0;h=m+12|0;g=m+8|0;l=m+4|0;j=m;c[e>>2]=b;c[f>>2]=c[c[e>>2]>>2];if(a[(c[e>>2]|0)+18>>0]|0){i=m;return}if((d[(c[f>>2]|0)+65>>0]|0)==0?(c[(c[e>>2]|0)+68>>2]|0)==0:0){c[k>>2]=Pw(c[e>>2]|0)|0;do if(c[k>>2]|0){do{}while((mA(c[k>>2]|0,61)|0)!=0);Yw(c[k>>2]|0,21)|0;if(!(d[(c[f>>2]|0)+65>>0]|0)){if((c[(c[e>>2]|0)+340>>2]|0)==0?(c[(c[e>>2]|0)+324>>2]|0)==0:0)break;Fz(c[k>>2]|0,0);c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0))break;if(((c[(c[e>>2]|0)+340>>2]&1<>2]|0)!=0|0)!=0?(Hh(c[k>>2]|0,c[h>>2]|0),Eh(c[k>>2]|0,2,c[h>>2]|0,(c[(c[e>>2]|0)+336>>2]&1<>2]|0)!=0&1,c[(c[e>>2]|0)+344+(c[h>>2]<<2)>>2]|0,c[(c[(c[(c[f>>2]|0)+16>>2]|0)+(c[h>>2]<<4)+12>>2]|0)+4>>2]|0)|0,(d[(c[f>>2]|0)+140+5>>0]|0)==0):0)Fh(c[k>>2]|0,1);c[h>>2]=(c[h>>2]|0)+1}c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[e>>2]|0)+456>>2]|0))break;c[l>>2]=Ax(c[f>>2]|0,c[(c[(c[e>>2]|0)+524>>2]|0)+(c[g>>2]<<2)>>2]|0)|0;Uw(c[k>>2]|0,149,0,0,0,c[l>>2]|0,-10)|0;c[g>>2]=(c[g>>2]|0)+1}c[(c[e>>2]|0)+456>>2]=0;eH(c[e>>2]|0);fH(c[e>>2]|0);a:do if(c[(c[e>>2]|0)+324>>2]|0){c[j>>2]=c[(c[e>>2]|0)+324>>2];a[(c[e>>2]|0)+23>>0]=0;c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[c[j>>2]>>2]|0))break a;xA(c[e>>2]|0,c[(c[(c[j>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0)>>2]|0,c[(c[(c[j>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0)+16>>2]|0);c[g>>2]=(c[g>>2]|0)+1}}while(0);Ez(c[k>>2]|0,1)|0}}while(0);if(((c[k>>2]|0)!=0?(c[(c[e>>2]|0)+68>>2]|0)==0:0)?(a[(c[f>>2]|0)+65>>0]|0)==0:0){if((c[(c[e>>2]|0)+412>>2]|0)!=0?(c[(c[e>>2]|0)+72>>2]|0)==0:0)c[(c[e>>2]|0)+72>>2]=1;Jh(c[k>>2]|0,c[e>>2]|0);c[(c[e>>2]|0)+12>>2]=101;i=m;return}c[(c[e>>2]|0)+12>>2]=1;i=m;return}if(c[(c[e>>2]|0)+12>>2]|0){i=m;return}c[(c[e>>2]|0)+12>>2]=1;i=m;return}function hv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;d=j+16|0;e=j+12|0;f=j+8|0;h=j+4|0;g=j;c[d>>2]=a;c[e>>2]=b;c[f>>2]=c[c[d>>2]>>2];if(Mw(c[d>>2]|0,22,38426,0,0)|0){i=j;return}c[h>>2]=Pw(c[d>>2]|0)|0;if(!(c[h>>2]|0)){i=j;return}a:do if((c[e>>2]|0)!=7){c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0))break a;Rw(c[h>>2]|0,2,c[g>>2]|0,((c[e>>2]|0)==9&1)+1|0)|0;Hh(c[h>>2]|0,c[g>>2]|0);c[g>>2]=(c[g>>2]|0)+1}}while(0);Yw(c[h>>2]|0,1)|0;i=j;return}function iv(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(Mw(c[b>>2]|0,22,38449,0,0)|0){i=e;return}c[d>>2]=Pw(c[b>>2]|0)|0;if(!(c[d>>2]|0)){i=e;return}xz(c[d>>2]|0,1,1)|0;i=e;return}function jv(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(Mw(c[b>>2]|0,22,38440,0,0)|0){i=e;return}c[d>>2]=Pw(c[b>>2]|0)|0;if(!(c[d>>2]|0)){i=e;return}Rw(c[d>>2]|0,1,1,1)|0;i=e;return}function kv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;e=j+16|0;f=j+12|0;k=j+8|0;h=j+4|0;g=j;c[e>>2]=a;c[f>>2]=b;c[k>>2]=d;c[h>>2]=Dw(c[c[e>>2]>>2]|0,c[k>>2]|0)|0;if(!(c[h>>2]|0)){i=j;return}c[g>>2]=Pw(c[e>>2]|0)|0;if((c[g>>2]|0)!=0?(Mw(c[e>>2]|0,32,c[6348+(c[f>>2]<<2)>>2]|0,c[h>>2]|0,0)|0)==0:0){Uw(c[g>>2]|0,0,c[f>>2]|0,0,0,c[h>>2]|0,-1)|0;i=j;return}Sf(c[c[e>>2]>>2]|0,c[h>>2]|0);i=j;return}function lv(e,f,g,h,j,k,l){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;J=i;i=i+112|0;t=J+16|0;G=J+8|0;s=J;w=J+96|0;m=J+92|0;n=J+88|0;o=J+84|0;x=J+80|0;y=J+76|0;z=J+72|0;r=J+68|0;H=J+64|0;A=J+60|0;F=J+56|0;I=J+52|0;B=J+48|0;u=J+44|0;v=J+40|0;p=J+36|0;q=J+32|0;C=J+28|0;D=J+24|0;E=J+20|0;c[w>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[x>>2]=j;c[y>>2]=k;c[z>>2]=l;c[H>>2]=0;c[A>>2]=c[c[w>>2]>>2];if((d[(c[A>>2]|0)+140+5>>0]|0)!=0?(c[(c[A>>2]|0)+140>>2]|0)==1:0){c[I>>2]=d[(c[A>>2]|0)+140+4>>0];c[H>>2]=nh(c[A>>2]|0,(c[I>>2]|0)==1?20769:20788)|0;c[B>>2]=c[m>>2]}else{c[I>>2]=tz(c[w>>2]|0,c[m>>2]|0,c[n>>2]|0,B)|0;if((c[I>>2]|0)<0){i=J;return}if((c[o>>2]|0)!=0?(c[I>>2]|0)!=1?(c[(c[n>>2]|0)+4>>2]|0)>>>0>0:0:0){Ah(c[w>>2]|0,38316,s);i=J;return}if(c[o>>2]|0)c[I>>2]=1;c[H>>2]=Dw(c[A>>2]|0,c[B>>2]|0)|0}s=(c[w>>2]|0)+500|0;e=c[B>>2]|0;c[s>>2]=c[e>>2];c[s+4>>2]=c[e+4>>2];if(!(c[H>>2]|0)){i=J;return}a:do if(!(yx(c[w>>2]|0,c[H>>2]|0)|0)){if((d[(c[A>>2]|0)+140+4>>0]|0)==1)c[o>>2]=1;c[u>>2]=c[(c[(c[A>>2]|0)+16>>2]|0)+(c[I>>2]<<4)>>2];if(!(Mw(c[w>>2]|0,18,(c[o>>2]|0)==1?20769:20788,0,c[u>>2]|0)|0)){if((c[y>>2]|0)==0?(Mw(c[w>>2]|0,d[38357+((c[o>>2]|0)+(c[x>>2]<<1))>>0]|0,c[H>>2]|0,0,c[u>>2]|0)|0)!=0:0)break;do if(!(a[(c[w>>2]|0)+454>>0]|0)){c[v>>2]=c[(c[(c[A>>2]|0)+16>>2]|0)+(c[I>>2]<<4)>>2];if(pz(c[w>>2]|0)|0)break a;c[r>>2]=pi(c[A>>2]|0,c[H>>2]|0,c[v>>2]|0)|0;if(!(c[r>>2]|0)){if(!(Fj(c[A>>2]|0,c[H>>2]|0,c[v>>2]|0)|0))break;I=c[w>>2]|0;c[t>>2]=c[H>>2];Ah(I,38385,t);break a}m=c[w>>2]|0;if(c[z>>2]|0){bx(m,c[I>>2]|0);break a}else{c[G>>2]=c[B>>2];Ah(m,38361,G);break a}}while(0);c[r>>2]=ph(c[A>>2]|0,72,0)|0;if(!(c[r>>2]|0)){c[(c[w>>2]|0)+12>>2]=7;I=(c[w>>2]|0)+68|0;c[I>>2]=(c[I>>2]|0)+1;break}c[c[r>>2]>>2]=c[H>>2];b[(c[r>>2]|0)+32>>1]=-1;c[(c[r>>2]|0)+64>>2]=c[(c[(c[A>>2]|0)+16>>2]|0)+(c[I>>2]<<4)+12>>2];b[(c[r>>2]|0)+36>>1]=1;b[(c[r>>2]|0)+38>>1]=200;c[(c[w>>2]|0)+488>>2]=c[r>>2];if((a[(c[w>>2]|0)+18>>0]|0)==0?(yQ(c[H>>2]|0,29688)|0)==0:0)c[(c[(c[r>>2]|0)+64>>2]|0)+72>>2]=c[r>>2];if(a[(c[A>>2]|0)+140+5>>0]|0){i=J;return}H=Pw(c[w>>2]|0)|0;c[F>>2]=H;if(!H){i=J;return}ax(c[w>>2]|0,1,c[I>>2]|0);if(c[y>>2]|0)Yw(c[F>>2]|0,149)|0;H=(c[w>>2]|0)+76|0;m=(c[H>>2]|0)+1|0;c[H>>2]=m;c[(c[w>>2]|0)+392>>2]=m;c[C>>2]=m;m=(c[w>>2]|0)+76|0;H=(c[m>>2]|0)+1|0;c[m>>2]=H;c[(c[w>>2]|0)+396>>2]=H;c[D>>2]=H;H=(c[w>>2]|0)+76|0;m=(c[H>>2]|0)+1|0;c[H>>2]=m;c[E>>2]=m;Vw(c[F>>2]|0,51,c[I>>2]|0,c[E>>2]|0,2)|0;Hh(c[F>>2]|0,c[I>>2]|0);c[p>>2]=xz(c[F>>2]|0,45,c[E>>2]|0)|0;c[q>>2]=(c[(c[A>>2]|0)+24>>2]&32768|0)!=0?1:4;Vw(c[F>>2]|0,52,c[I>>2]|0,2,c[q>>2]|0)|0;Vw(c[F>>2]|0,52,c[I>>2]|0,5,d[(c[A>>2]|0)+62>>0]|0)|0;Fz(c[F>>2]|0,c[p>>2]|0);m=c[F>>2]|0;if((c[x>>2]|0)!=0|(c[y>>2]|0)!=0)Rw(m,22,0,c[D>>2]|0)|0;else{H=Rw(m,122,c[I>>2]|0,c[D>>2]|0)|0;c[(c[w>>2]|0)+424>>2]=H}dH(c[w>>2]|0,c[I>>2]|0);Rw(c[F>>2]|0,74,0,c[C>>2]|0)|0;Uw(c[F>>2]|0,27,6,c[E>>2]|0,0,38420,-2)|0;Vw(c[F>>2]|0,75,0,c[E>>2]|0,c[C>>2]|0)|0;Fh(c[F>>2]|0,8);Yw(c[F>>2]|0,61)|0;i=J;return}}while(0);Sf(c[A>>2]|0,c[H>>2]|0);i=J;return}function mv(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;b=(c[e>>2]|0)+24|0;a[b>>0]=(a[b>>0]|0)+1<<24>>24;b=(c[c[e>>2]>>2]|0)+248|0;c[b>>2]=(c[b>>2]|0)+1;i=d;return}function nv(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;R=i;i=i+208|0;K=R+72|0;I=R+64|0;M=R+32|0;L=R+16|0;J=R+8|0;H=R;k=R+192|0;l=R+188|0;m=R+184|0;n=R+196|0;o=R+180|0;w=R+176|0;r=R+172|0;t=R+168|0;z=R+164|0;u=R+160|0;G=R+156|0;P=R+152|0;Q=R+148|0;O=R+144|0;s=R+124|0;F=R+120|0;q=R+116|0;D=R+112|0;E=R+108|0;p=R+104|0;C=R+100|0;y=R+96|0;x=R+92|0;A=R+88|0;B=R+84|0;N=R+80|0;v=R+76|0;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;a[n>>0]=h;c[o>>2]=j;c[r>>2]=c[c[k>>2]>>2];if((c[m>>2]|0)==0&(c[o>>2]|0)==0){i=R;return}c[w>>2]=c[(c[k>>2]|0)+488>>2];if(!(c[w>>2]|0)){i=R;return}if((a[(c[r>>2]|0)+140+5>>0]|0)!=0?(c[(c[w>>2]|0)+28>>2]=c[(c[r>>2]|0)+140>>2],(c[(c[w>>2]|0)+28>>2]|0)==1):0){h=(c[w>>2]|0)+42|0;a[h>>0]=d[h>>0]|1}do if(d[n>>0]&32){if(d[(c[w>>2]|0)+42>>0]&8){Ah(c[k>>2]|0,37995,H);i=R;return}if(!(d[(c[w>>2]|0)+42>>0]&4)){H=c[k>>2]|0;c[J>>2]=c[c[w>>2]>>2];Ah(H,38045,J);break}else{J=(c[w>>2]|0)+42|0;a[J>>0]=d[J>>0]|96;ZG(c[k>>2]|0,c[w>>2]|0);break}}while(0);c[t>>2]=Dh(c[r>>2]|0,c[(c[w>>2]|0)+64>>2]|0)|0;if(c[(c[w>>2]|0)+24>>2]|0)SG(c[k>>2]|0,c[w>>2]|0,4,0,c[(c[w>>2]|0)+24>>2]|0);_G(c[w>>2]|0);c[z>>2]=c[(c[w>>2]|0)+8>>2];while(1){if(!(c[z>>2]|0))break;VG(c[z>>2]|0);c[z>>2]=c[(c[z>>2]|0)+20>>2]}if(!(a[(c[r>>2]|0)+140+5>>0]|0)){c[G>>2]=Pw(c[k>>2]|0)|0;if(!(c[G>>2]|0)){i=R;return}xz(c[G>>2]|0,61,0)|0;if(!(c[(c[w>>2]|0)+12>>2]|0)){c[P>>2]=33805;c[Q>>2]=38077}else{c[P>>2]=36955;c[Q>>2]=38083}do if(c[o>>2]|0){H=(c[k>>2]|0)+76|0;J=(c[H>>2]|0)+1|0;c[H>>2]=J;c[F>>2]=J;J=(c[k>>2]|0)+76|0;H=(c[J>>2]|0)+1|0;c[J>>2]=H;c[D>>2]=H;H=(c[k>>2]|0)+76|0;J=(c[H>>2]|0)+1|0;c[H>>2]=J;c[E>>2]=J;Bx(c[k>>2]|0);Vw(c[G>>2]|0,55,1,c[(c[k>>2]|0)+396>>2]|0,c[t>>2]|0)|0;Fh(c[G>>2]|0,16);c[(c[k>>2]|0)+72>>2]=2;c[q>>2]=(Bz(c[G>>2]|0)|0)+1;Vw(c[G>>2]|0,16,c[F>>2]|0,0,c[q>>2]|0)|0;ZA(s,13,c[F>>2]|0);Cv(c[k>>2]|0,c[o>>2]|0,s)|0;xC(c[G>>2]|0,c[F>>2]|0);Fz(c[G>>2]|0,(c[q>>2]|0)-1|0);if(c[(c[k>>2]|0)+68>>2]|0){i=R;return}c[C>>2]=Jx(c[k>>2]|0,c[o>>2]|0)|0;if(!(c[C>>2]|0)){i=R;return}else{b[(c[w>>2]|0)+34>>1]=b[(c[C>>2]|0)+34>>1]|0;c[(c[w>>2]|0)+4>>2]=c[(c[C>>2]|0)+4>>2];b[(c[C>>2]|0)+34>>1]=0;c[(c[C>>2]|0)+4>>2]=0;Qf(c[r>>2]|0,c[C>>2]|0);c[p>>2]=xz(c[G>>2]|0,18,c[s+4>>2]|0)|0;Vw(c[G>>2]|0,49,c[s+8>>2]|0,c[s+12>>2]|0,c[D>>2]|0)|0;AC(c[G>>2]|0,c[w>>2]|0,0);Rw(c[G>>2]|0,74,1,c[E>>2]|0)|0;Vw(c[G>>2]|0,75,1,c[D>>2]|0,c[E>>2]|0)|0;Ez(c[G>>2]|0,c[p>>2]|0)|0;Fz(c[G>>2]|0,c[p>>2]|0);xz(c[G>>2]|0,61,1)|0;break}}while(0);if(c[o>>2]|0)c[O>>2]=$G(c[r>>2]|0,c[w>>2]|0)|0;else{c[y>>2]=(d[n>>0]|0)!=0?(c[k>>2]|0)+508|0:c[m>>2]|0;c[u>>2]=(c[c[y>>2]>>2]|0)-(c[(c[k>>2]|0)+500>>2]|0);if((a[c[c[y>>2]>>2]>>0]|0)!=59)c[u>>2]=(c[u>>2]|0)+(c[(c[y>>2]|0)+4>>2]|0);J=c[r>>2]|0;h=c[u>>2]|0;H=c[(c[k>>2]|0)+500>>2]|0;c[L>>2]=c[Q>>2];c[L+4>>2]=h;c[L+8>>2]=H;c[O>>2]=Bh(J,38088,L)|0}Q=c[k>>2]|0;E=(c[t>>2]|0)==1?20769:20788;F=c[P>>2]|0;h=c[c[w>>2]>>2]|0;H=c[c[w>>2]>>2]|0;J=c[(c[k>>2]|0)+396>>2]|0;L=c[O>>2]|0;P=c[(c[k>>2]|0)+392>>2]|0;c[M>>2]=c[(c[(c[r>>2]|0)+16>>2]|0)+(c[t>>2]<<4)>>2];c[M+4>>2]=E;c[M+8>>2]=F;c[M+12>>2]=h;c[M+16>>2]=H;c[M+20>>2]=J;c[M+24>>2]=L;c[M+28>>2]=P;Ow(Q,38103,M);Sf(c[r>>2]|0,c[O>>2]|0);Qw(c[k>>2]|0,c[t>>2]|0);if((d[(c[w>>2]|0)+42>>0]&8|0)!=0?(c[x>>2]=(c[(c[r>>2]|0)+16>>2]|0)+(c[t>>2]<<4),(c[(c[(c[x>>2]|0)+12>>2]|0)+72>>2]|0)==0):0){Q=c[k>>2]|0;c[I>>2]=c[c[x>>2]>>2];Ow(Q,38190,I)}O=c[G>>2]|0;P=c[t>>2]|0;Q=c[r>>2]|0;c[K>>2]=c[c[w>>2]>>2];Sw(O,P,Bh(Q,38232,K)|0)}if(!(a[(c[r>>2]|0)+140+5>>0]|0)){i=R;return}c[B>>2]=c[(c[w>>2]|0)+64>>2];c[A>>2]=Oj((c[B>>2]|0)+8|0,c[c[w>>2]>>2]|0,c[w>>2]|0)|0;if(c[A>>2]|0){jh(c[r>>2]|0);i=R;return}c[(c[k>>2]|0)+488>>2]=0;Q=(c[r>>2]|0)+24|0;c[Q>>2]=c[Q>>2]|2;if(c[(c[w>>2]|0)+12>>2]|0){i=R;return}c[N>>2]=c[(c[k>>2]|0)+500>>2];if(!(c[c[l>>2]>>2]|0))c[l>>2]=c[m>>2];c[v>>2]=(c[c[l>>2]>>2]|0)-(c[N>>2]|0);Q=13+(Cx(c[N>>2]|0,c[v>>2]|0)|0)|0;c[(c[w>>2]|0)+44>>2]=Q;i=R;return}function ov(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;o=r+8|0;n=r;f=r+40|0;g=r+36|0;l=r+32|0;k=r+28|0;p=r+24|0;m=r+20|0;j=r+16|0;h=r+12|0;c[f>>2]=d;c[g>>2]=e;c[j>>2]=c[c[f>>2]>>2];d=c[(c[f>>2]|0)+488>>2]|0;c[l>>2]=d;if(!d){i=r;return}if(((b[(c[l>>2]|0)+34>>1]|0)+1|0)>(c[(c[j>>2]|0)+88+8>>2]|0)){q=c[f>>2]|0;c[n>>2]=c[c[l>>2]>>2];Ah(q,37946,n);i=r;return}c[p>>2]=Dw(c[j>>2]|0,c[g>>2]|0)|0;if(!(c[p>>2]|0)){i=r;return}c[k>>2]=0;while(1){if((c[k>>2]|0)>=(b[(c[l>>2]|0)+34>>1]|0))break;if(!(Td(c[p>>2]|0,c[(c[(c[l>>2]|0)+4>>2]|0)+((c[k>>2]|0)*24|0)>>2]|0)|0)){q=8;break}c[k>>2]=(c[k>>2]|0)+1}if((q|0)==8){q=c[f>>2]|0;c[o>>2]=c[p>>2];Ah(q,37969,o);Sf(c[j>>2]|0,c[p>>2]|0);i=r;return}do if(!(b[(c[l>>2]|0)+34>>1]&7)){c[h>>2]=Ew(c[j>>2]|0,c[(c[l>>2]|0)+4>>2]|0,((b[(c[l>>2]|0)+34>>1]|0)+8|0)*24|0,0)|0;if(c[h>>2]|0){c[(c[l>>2]|0)+4>>2]=c[h>>2];break}Sf(c[j>>2]|0,c[p>>2]|0);i=r;return}while(0);c[m>>2]=(c[(c[l>>2]|0)+4>>2]|0)+((b[(c[l>>2]|0)+34>>1]|0)*24|0);q=c[m>>2]|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;c[c[m>>2]>>2]=c[p>>2];a[(c[m>>2]|0)+21>>0]=65;a[(c[m>>2]|0)+22>>0]=1;q=(c[l>>2]|0)+34|0;b[q>>1]=(b[q>>1]|0)+1<<16>>16;i=r;return}function pv(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=d;c[g>>2]=e;c[h>>2]=c[(c[f>>2]|0)+488>>2];if(!(c[h>>2]|0)){i=k;return}if((b[(c[h>>2]|0)+34>>1]|0)<1){i=k;return}c[j>>2]=(c[(c[h>>2]|0)+4>>2]|0)+(((b[(c[h>>2]|0)+34>>1]|0)-1|0)*24|0);Sf(c[c[f>>2]>>2]|0,c[(c[j>>2]|0)+12>>2]|0);e=Dw(c[c[f>>2]>>2]|0,c[g>>2]|0)|0;c[(c[j>>2]|0)+12>>2]=e;e=jx(c[(c[j>>2]|0)+12>>2]|0,(c[j>>2]|0)+22|0)|0;a[(c[j>>2]|0)+21>>0]=e;i=k;return}function qv(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;l=m;f=m+20|0;g=m+16|0;j=m+12|0;k=m+8|0;h=m+4|0;c[f>>2]=d;c[g>>2]=e;c[h>>2]=c[c[f>>2]>>2];c[j>>2]=c[(c[f>>2]|0)+488>>2];if(!(c[j>>2]|0)){e=c[h>>2]|0;l=c[g>>2]|0;l=c[l>>2]|0;Zu(e,l);i=m;return}c[k>>2]=(c[(c[j>>2]|0)+4>>2]|0)+(((b[(c[j>>2]|0)+34>>1]|0)-1|0)*24|0);if(YG(c[c[g>>2]>>2]|0,a[(c[h>>2]|0)+140+5>>0]|0)|0){Zu(c[h>>2]|0,c[(c[k>>2]|0)+4>>2]|0);e=ny(c[h>>2]|0,c[c[g>>2]>>2]|0,1)|0;c[(c[k>>2]|0)+4>>2]=e;Sf(c[h>>2]|0,c[(c[k>>2]|0)+8>>2]|0);e=(c[(c[g>>2]|0)+8>>2]|0)-(c[(c[g>>2]|0)+4>>2]|0)|0;e=Iw(c[h>>2]|0,c[(c[g>>2]|0)+4>>2]|0,e,((e|0)<0)<<31>>31)|0;c[(c[k>>2]|0)+8>>2]=e;e=c[h>>2]|0;l=c[g>>2]|0;l=c[l>>2]|0;Zu(e,l);i=m;return}else{e=c[f>>2]|0;c[l>>2]=c[c[k>>2]>>2];Ah(e,37901,l);e=c[h>>2]|0;l=c[g>>2]|0;l=c[l>>2]|0;Zu(e,l);i=m;return}}function rv(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,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;if((c[h>>2]|0)==72?(c[(c[g>>2]|0)+68>>2]|0)==0:0)c[m>>2]=az(c[c[g>>2]>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;else{c[m>>2]=cz(c[c[g>>2]>>2]|0,c[h>>2]&255,c[l>>2]|0,1)|0;dz(c[c[g>>2]>>2]|0,c[m>>2]|0,c[j>>2]|0,c[k>>2]|0)}if(!(c[m>>2]|0)){f=c[m>>2]|0;i=n;return f|0}Ey(c[g>>2]|0,c[(c[m>>2]|0)+24>>2]|0)|0;f=c[m>>2]|0;i=n;return f|0}function sv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;g=f+12|0;k=f+8|0;j=f+4|0;h=f;c[g>>2]=a;c[k>>2]=b;c[j>>2]=d;c[h>>2]=e;e=rv(c[k>>2]|0,c[j>>2]|0,0,0,c[h>>2]|0)|0;c[c[g>>2]>>2]=e;c[(c[g>>2]|0)+4>>2]=c[c[h>>2]>>2];c[(c[g>>2]|0)+8>>2]=(c[c[h>>2]>>2]|0)+(c[(c[h>>2]|0)+4>>2]|0);i=f;return}function tv(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0;h=i;i=i+16|0;j=h+8|0;f=h+4|0;g=h;c[j>>2]=d;c[f>>2]=e;c[g>>2]=c[(c[j>>2]|0)+488>>2];if(!(c[g>>2]|0)){i=h;return}if((b[(c[g>>2]|0)+34>>1]|0)<1){i=h;return}a[(c[(c[g>>2]|0)+4>>2]|0)+(((b[(c[g>>2]|0)+34>>1]|0)-1|0)*24|0)+20>>0]=c[f>>2];i=h;return}function uv(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;z=i;i=i+64|0;y=z+8|0;k=z;s=z+60|0;t=z+56|0; -u=z+52|0;v=z+48|0;w=z+44|0;p=z+40|0;r=z+36|0;m=z+32|0;l=z+28|0;n=z+24|0;o=z+20|0;q=z+16|0;x=z+12|0;c[s>>2]=e;c[t>>2]=f;c[u>>2]=g;c[v>>2]=h;c[w>>2]=j;c[p>>2]=c[(c[s>>2]|0)+488>>2];c[r>>2]=0;c[m>>2]=-1;if(!(c[p>>2]|0)){x=c[s>>2]|0;x=c[x>>2]|0;y=c[t>>2]|0;Vu(x,y);i=z;return}if(d[(c[s>>2]|0)+454>>0]|0){x=c[s>>2]|0;x=c[x>>2]|0;y=c[t>>2]|0;Vu(x,y);i=z;return}if(d[(c[p>>2]|0)+42>>0]&4){x=c[s>>2]|0;c[k>>2]=c[c[p>>2]>>2];Ah(x,37804,k);x=c[s>>2]|0;x=c[x>>2]|0;y=c[t>>2]|0;Vu(x,y);i=z;return}k=(c[p>>2]|0)+42|0;a[k>>0]=d[k>>0]|4;a:do if(!(c[t>>2]|0)){c[m>>2]=(b[(c[p>>2]|0)+34>>1]|0)-1;q=(c[(c[p>>2]|0)+4>>2]|0)+((c[m>>2]|0)*24|0)+23|0;a[q>>0]=d[q>>0]|1;c[r>>2]=c[(c[(c[p>>2]|0)+4>>2]|0)+((c[m>>2]|0)*24|0)+12>>2];c[n>>2]=1}else{c[n>>2]=c[c[t>>2]>>2];c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[n>>2]|0))break a;c[o>>2]=Tx(c[(c[(c[t>>2]|0)+4>>2]|0)+((c[l>>2]|0)*20|0)>>2]|0)|0;TG(c[o>>2]|0);b:do if((d[c[o>>2]>>0]|0)==27){c[q>>2]=c[(c[o>>2]|0)+8>>2];c[m>>2]=0;while(1){if((c[m>>2]|0)>=(b[(c[p>>2]|0)+34>>1]|0))break b;k=(Td(c[q>>2]|0,c[(c[(c[p>>2]|0)+4>>2]|0)+((c[m>>2]|0)*24|0)>>2]|0)|0)==0;h=c[m>>2]|0;if(k)break;c[m>>2]=h+1}k=(c[(c[p>>2]|0)+4>>2]|0)+(h*24|0)+23|0;a[k>>0]=d[k>>0]|1;c[r>>2]=c[(c[(c[p>>2]|0)+4>>2]|0)+((c[m>>2]|0)*24|0)+12>>2]}while(0);c[l>>2]=(c[l>>2]|0)+1}}while(0);if((c[n>>2]|0)==1&(c[r>>2]|0)!=0?(r=(Td(c[r>>2]|0,19623)|0)==0,r&(c[w>>2]|0)!=1):0){b[(c[p>>2]|0)+32>>1]=c[m>>2];a[(c[p>>2]|0)+43>>0]=c[u>>2];y=(c[p>>2]|0)+42|0;a[y>>0]=d[y>>0]|c[v>>2]<<3;if(!(c[t>>2]|0)){x=c[s>>2]|0;x=c[x>>2]|0;y=c[t>>2]|0;Vu(x,y);i=z;return}a[(c[s>>2]|0)+452>>0]=a[(c[(c[t>>2]|0)+4>>2]|0)+12>>0]|0;x=c[s>>2]|0;x=c[x>>2]|0;y=c[t>>2]|0;Vu(x,y);i=z;return}h=c[s>>2]|0;if(c[v>>2]|0){Ah(h,37845,y);x=c[s>>2]|0;x=c[x>>2]|0;y=c[t>>2]|0;Vu(x,y);i=z;return}c[x>>2]=vv(h,0,0,0,c[t>>2]|0,c[u>>2]|0,0,0,c[w>>2]|0,0)|0;if(c[x>>2]|0){y=(c[x>>2]|0)+55|0;a[y>>0]=a[y>>0]&-4|2}c[t>>2]=0;x=c[s>>2]|0;x=c[x>>2]|0;y=c[t>>2]|0;Vu(x,y);i=z;return}function vv(f,g,h,j,k,l,m,n,o,p){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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,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;ya=i;i=i+352|0;ea=ya+112|0;da=ya+88|0;ca=ya+72|0;ba=ya+64|0;aa=ya+56|0;B=ya+48|0;$=ya+40|0;A=ya+32|0;z=ya+24|0;D=ya+16|0;C=ya+8|0;y=ya;F=ya+336|0;q=ya+332|0;r=ya+328|0;ra=ya+324|0;sa=ya+320|0;la=ya+316|0;G=ya+312|0;ta=ya+308|0;s=ya+304|0;H=ya+300|0;wa=ya+296|0;oa=ya+292|0;va=ya+288|0;xa=ya+284|0;Q=ya+280|0;I=ya+276|0;K=ya+272|0;x=ya+248|0;Z=ya+240|0;ua=ya+236|0;T=ya+232|0;ma=ya+228|0;W=ya+224|0;V=ya+220|0;O=ya+216|0;P=ya+212|0;ja=ya+208|0;X=ya+204|0;t=ya+200|0;v=ya+196|0;E=ya+192|0;w=ya+184|0;u=ya+180|0;R=ya+176|0;Y=ya+172|0;ia=ya+168|0;S=ya+164|0;N=ya+160|0;fa=ya+156|0;U=ya+152|0;L=ya+148|0;ga=ya+144|0;ha=ya+140|0;na=ya+136|0;_=ya+132|0;ka=ya+128|0;J=ya+124|0;M=ya+120|0;pa=ya+116|0;c[F>>2]=f;c[q>>2]=g;c[r>>2]=h;c[ra>>2]=j;c[sa>>2]=k;c[la>>2]=l;c[G>>2]=m;c[ta>>2]=n;c[s>>2]=o;c[H>>2]=p;c[wa>>2]=0;c[oa>>2]=0;c[va>>2]=0;c[xa>>2]=0;c[ua>>2]=c[c[F>>2]>>2];c[W>>2]=0;c[O>>2]=0;c[ja>>2]=0;c[X>>2]=0;a:do if((((d[(c[ua>>2]|0)+65>>0]|0)==0?(d[(c[F>>2]|0)+454>>0]|0)==0:0)?(c[(c[F>>2]|0)+68>>2]|0)<=0:0)?0==(pz(c[F>>2]|0)|0):0){p=c[F>>2]|0;if(c[ra>>2]|0){c[ma>>2]=tz(p,c[q>>2]|0,c[r>>2]|0,W)|0;if((c[ma>>2]|0)<0)break;if(((a[(c[ua>>2]|0)+140+5>>0]|0)==0?(c[oa>>2]=DB(c[F>>2]|0,c[ra>>2]|0)|0,(c[oa>>2]|0)!=0?(c[(c[r>>2]|0)+4>>2]|0)==0:0):0)?(c[(c[oa>>2]|0)+64>>2]|0)==(c[(c[(c[ua>>2]|0)+16>>2]|0)+16+12>>2]|0):0)c[ma>>2]=1;EB(x,c[F>>2]|0,c[ma>>2]|0,33970,c[W>>2]|0);FB(x,c[ra>>2]|0)|0;c[oa>>2]=_w(c[F>>2]|0,0,(c[ra>>2]|0)+8|0)|0;if(!(c[oa>>2]|0))break;if((c[ma>>2]|0)==1?(c[(c[(c[ua>>2]|0)+16>>2]|0)+(c[ma>>2]<<4)+12>>2]|0)!=(c[(c[oa>>2]|0)+64>>2]|0):0){qa=c[F>>2]|0;c[y>>2]=c[c[oa>>2]>>2];Ah(qa,37370,y);break}if(d[(c[oa>>2]|0)+42>>0]&32)c[X>>2]=Ej(c[oa>>2]|0)|0}else{c[oa>>2]=c[p+488>>2];if(!(c[oa>>2]|0))break;c[ma>>2]=Dh(c[ua>>2]|0,c[(c[oa>>2]|0)+64>>2]|0)|0}c[T>>2]=(c[(c[ua>>2]|0)+16>>2]|0)+(c[ma>>2]<<4);if(((zd(c[c[oa>>2]>>2]|0,28715,7)|0)==0?(d[(c[ua>>2]|0)+140+5>>0]|0)==0:0)?(zd((c[c[oa>>2]>>2]|0)+7|0,37420,9)|0)!=0:0){qa=c[F>>2]|0;c[C>>2]=c[c[oa>>2]>>2];Ah(qa,37430,C);break}if(c[(c[oa>>2]|0)+12>>2]|0){Ah(c[F>>2]|0,37458,D);break}if(d[(c[oa>>2]|0)+42>>0]&16){Ah(c[F>>2]|0,37483,z);break}if(c[W>>2]|0){c[xa>>2]=Dw(c[ua>>2]|0,c[W>>2]|0)|0;if(!(c[xa>>2]|0))break;if(yx(c[F>>2]|0,c[xa>>2]|0)|0)break;if((a[(c[ua>>2]|0)+140+5>>0]|0)==0?(pi(c[ua>>2]|0,c[xa>>2]|0,0)|0)!=0:0){qa=c[F>>2]|0;c[A>>2]=c[xa>>2];Ah(qa,37517,A);break}if(Fj(c[ua>>2]|0,c[xa>>2]|0,c[c[T>>2]>>2]|0)|0){p=c[F>>2]|0;if(c[H>>2]|0){bx(p,c[ma>>2]|0);break}else{c[$>>2]=c[xa>>2];Ah(p,37551,$);break}}}else{c[v>>2]=c[(c[oa>>2]|0)+8>>2];c[t>>2]=1;while(1){if(!(c[v>>2]|0))break;c[v>>2]=c[(c[v>>2]|0)+20>>2];c[t>>2]=(c[t>>2]|0)+1}$=c[ua>>2]|0;H=c[t>>2]|0;c[B>>2]=c[c[oa>>2]>>2];c[B+4>>2]=H;c[xa>>2]=Bh($,37575,B)|0;if(!(c[xa>>2]|0))break}c[E>>2]=c[c[T>>2]>>2];if((Mw(c[F>>2]|0,18,(c[ma>>2]|0)==1?20769:20788,0,c[E>>2]|0)|0)==0?(c[I>>2]=1,c[I>>2]=(c[ma>>2]|0)==1?3:1,(Mw(c[F>>2]|0,c[I>>2]|0,c[xa>>2]|0,c[c[oa>>2]>>2]|0,c[E>>2]|0)|0)==0):0){if(!(c[sa>>2]|0)){Cy(w,c[(c[(c[oa>>2]|0)+4>>2]|0)+(((b[(c[oa>>2]|0)+34>>1]|0)-1|0)*24|0)>>2]|0);$=c[F>>2]|0;c[sa>>2]=Gv($,0,cz(c[ua>>2]|0,27,w,0)|0)|0;if(!(c[sa>>2]|0))break;Pv(c[sa>>2]|0,c[s>>2]|0)}else Sv(c[F>>2]|0,c[sa>>2]|0,33970);c[I>>2]=0;while(1){if((c[I>>2]|0)>=(c[c[sa>>2]>>2]|0))break;c[u>>2]=c[(c[(c[sa>>2]|0)+4>>2]|0)+((c[I>>2]|0)*20|0)>>2];if((d[c[u>>2]>>0]|0)==95){$=1+(If(c[(c[u>>2]|0)+8>>2]|0)|0)|0;c[O>>2]=(c[O>>2]|0)+$}c[I>>2]=(c[I>>2]|0)+1}c[Q>>2]=If(c[xa>>2]|0)|0;if(c[X>>2]|0)p=e[(c[X>>2]|0)+50>>1]|0;else p=1;c[P>>2]=p;c[va>>2]=HD(c[ua>>2]|0,(c[c[sa>>2]>>2]|0)+(c[P>>2]|0)&65535,(c[Q>>2]|0)+(c[O>>2]|0)+1|0,ja)|0;if(!(a[(c[ua>>2]|0)+65>>0]|0)){c[c[va>>2]>>2]=c[ja>>2];c[ja>>2]=(c[ja>>2]|0)+((c[Q>>2]|0)+1);iR(c[c[va>>2]>>2]|0,c[xa>>2]|0,(c[Q>>2]|0)+1|0)|0;c[(c[va>>2]|0)+12>>2]=c[oa>>2];a[(c[va>>2]|0)+54>>0]=c[la>>2];$=(c[va>>2]|0)+55|0;a[$>>0]=a[$>>0]&-9|((c[la>>2]|0)!=0&1)<<3&255;$=(c[va>>2]|0)+55|0;a[$>>0]=a[$>>0]&-4|((c[W>>2]|0)!=0?0:1)&3;c[(c[va>>2]|0)+24>>2]=c[(c[(c[ua>>2]|0)+16>>2]|0)+(c[ma>>2]<<4)+12>>2];b[(c[va>>2]|0)+50>>1]=c[c[sa>>2]>>2];if(c[ta>>2]|0){SG(c[F>>2]|0,c[oa>>2]|0,16,c[ta>>2]|0,0);c[(c[va>>2]|0)+36>>2]=c[ta>>2];c[ta>>2]=0}if((d[(c[(c[T>>2]|0)+12>>2]|0)+76>>0]|0)>=4)c[Z>>2]=-1;else c[Z>>2]=0;c[I>>2]=0;c[V>>2]=c[(c[sa>>2]|0)+4>>2];while(1){if((c[I>>2]|0)>=(c[c[sa>>2]>>2]|0))break;TG(c[c[V>>2]>>2]|0);SG(c[F>>2]|0,c[oa>>2]|0,32,c[c[V>>2]>>2]|0,0);if(c[(c[F>>2]|0)+68>>2]|0)break a;c[R>>2]=Tx(c[c[V>>2]>>2]|0)|0;if((d[c[R>>2]>>0]|0)!=152){if((c[oa>>2]|0)==(c[(c[F>>2]|0)+488>>2]|0)){qa=65;break}do if(!(c[(c[va>>2]|0)+40>>2]|0)){c[S>>2]=vy(c[ua>>2]|0,c[sa>>2]|0,0)|0;c[(c[va>>2]|0)+40>>2]=c[S>>2];if(a[(c[ua>>2]|0)+65>>0]|0)break;c[V>>2]=(c[(c[S>>2]|0)+4>>2]|0)+((c[I>>2]|0)*20|0)}while(0);c[K>>2]=-2;b[(c[(c[va>>2]|0)+4>>2]|0)+(c[I>>2]<<1)>>1]=-2;$=(c[va>>2]|0)+55|0;a[$>>0]=a[$>>0]&-9}else{c[K>>2]=b[(c[R>>2]|0)+32>>1];do if((c[K>>2]|0)<0)c[K>>2]=b[(c[oa>>2]|0)+32>>1];else{if(d[(c[(c[oa>>2]|0)+4>>2]|0)+((c[K>>2]|0)*24|0)+20>>0]|0)break;$=(c[va>>2]|0)+55|0;a[$>>0]=a[$>>0]&-9}while(0);b[(c[(c[va>>2]|0)+4>>2]|0)+(c[I>>2]<<1)>>1]=c[K>>2]}c[ia>>2]=0;do if((d[c[c[V>>2]>>2]>>0]|0)==95){c[ia>>2]=c[(c[c[V>>2]>>2]|0)+8>>2];c[N>>2]=(If(c[ia>>2]|0)|0)+1;iR(c[ja>>2]|0,c[ia>>2]|0,c[N>>2]|0)|0;c[ia>>2]=c[ja>>2];c[ja>>2]=(c[ja>>2]|0)+(c[N>>2]|0);c[O>>2]=(c[O>>2]|0)-(c[N>>2]|0)}else{if((c[K>>2]|0)<0)break;c[ia>>2]=c[(c[(c[oa>>2]|0)+4>>2]|0)+((c[K>>2]|0)*24|0)+16>>2]}while(0);if(!(c[ia>>2]|0))c[ia>>2]=35690;if((a[(c[ua>>2]|0)+140+5>>0]|0)==0?(Dz(c[F>>2]|0,c[ia>>2]|0)|0)==0:0)break a;c[(c[(c[va>>2]|0)+32>>2]|0)+(c[I>>2]<<2)>>2]=c[ia>>2];c[Y>>2]=d[(c[V>>2]|0)+12>>0]&c[Z>>2];a[(c[(c[va>>2]|0)+28>>2]|0)+(c[I>>2]|0)>>0]=c[Y>>2];c[I>>2]=(c[I>>2]|0)+1;c[V>>2]=(c[V>>2]|0)+20}if((qa|0)==65){Ah(c[F>>2]|0,37598,aa);break}b:do if(c[X>>2]|0){c[K>>2]=0;while(1){if((c[K>>2]|0)>=(e[(c[X>>2]|0)+50>>1]|0))break b;c[fa>>2]=b[(c[(c[X>>2]|0)+4>>2]|0)+(c[K>>2]<<1)>>1];if(UG(c[(c[va>>2]|0)+4>>2]|0,e[(c[va>>2]|0)+50>>1]|0,c[fa>>2]|0)|0){ja=(c[va>>2]|0)+52|0;b[ja>>1]=(b[ja>>1]|0)+-1<<16>>16}else{b[(c[(c[va>>2]|0)+4>>2]|0)+(c[I>>2]<<1)>>1]=c[fa>>2];c[(c[(c[va>>2]|0)+32>>2]|0)+(c[I>>2]<<2)>>2]=c[(c[(c[X>>2]|0)+32>>2]|0)+(c[K>>2]<<2)>>2];a[(c[(c[va>>2]|0)+28>>2]|0)+(c[I>>2]|0)>>0]=a[(c[(c[X>>2]|0)+28>>2]|0)+(c[K>>2]|0)>>0]|0;c[I>>2]=(c[I>>2]|0)+1}c[K>>2]=(c[K>>2]|0)+1}}else{b[(c[(c[va>>2]|0)+4>>2]|0)+(c[I>>2]<<1)>>1]=-1;c[(c[(c[va>>2]|0)+32>>2]|0)+(c[I>>2]<<2)>>2]=35690}while(0);Cj(c[va>>2]|0);if(!(c[(c[F>>2]|0)+488>>2]|0))VG(c[va>>2]|0);c:do if((c[oa>>2]|0)==(c[(c[F>>2]|0)+488>>2]|0)){c[U>>2]=c[(c[oa>>2]|0)+8>>2];while(1){if(!(c[U>>2]|0))break c;if((e[(c[U>>2]|0)+50>>1]|0)==(e[(c[va>>2]|0)+50>>1]|0)){c[L>>2]=0;while(1){if((c[L>>2]|0)>=(e[(c[U>>2]|0)+50>>1]|0))break;if((b[(c[(c[U>>2]|0)+4>>2]|0)+(c[L>>2]<<1)>>1]|0)!=(b[(c[(c[va>>2]|0)+4>>2]|0)+(c[L>>2]<<1)>>1]|0))break;c[ga>>2]=c[(c[(c[U>>2]|0)+32>>2]|0)+(c[L>>2]<<2)>>2];c[ha>>2]=c[(c[(c[va>>2]|0)+32>>2]|0)+(c[L>>2]<<2)>>2];if((c[ga>>2]|0)!=(c[ha>>2]|0)?(Td(c[ga>>2]|0,c[ha>>2]|0)|0)!=0:0)break;c[L>>2]=(c[L>>2]|0)+1}if((c[L>>2]|0)==(e[(c[U>>2]|0)+50>>1]|0))break}c[U>>2]=c[(c[U>>2]|0)+20>>2]}do if((d[(c[U>>2]|0)+54>>0]|0)!=(d[(c[va>>2]|0)+54>>0]|0)){do if((d[(c[U>>2]|0)+54>>0]|0)!=10){if((d[(c[va>>2]|0)+54>>0]|0)==10)break;qa=c[F>>2]|0;c[ba>>2]=0;Ah(qa,37659,ba)}while(0);if((d[(c[U>>2]|0)+54>>0]|0)!=10)break;a[(c[U>>2]|0)+54>>0]=a[(c[va>>2]|0)+54>>0]|0}while(0);c[wa>>2]=c[U>>2];break a}while(0);do if(a[(c[ua>>2]|0)+140+5>>0]|0){c[na>>2]=Oj((c[(c[va>>2]|0)+24>>2]|0)+24|0,c[c[va>>2]>>2]|0,c[va>>2]|0)|0;p=c[ua>>2]|0;if(c[na>>2]|0){jh(p);break a}na=p+24|0;c[na>>2]=c[na>>2]|2;if(!(c[ra>>2]|0))break;c[(c[va>>2]|0)+44>>2]=c[(c[ua>>2]|0)+140>>2]}else{if(!((c[ra>>2]|0)!=0?1:(d[(c[oa>>2]|0)+42>>0]&32|0)==0))break;ja=(c[F>>2]|0)+76|0;na=(c[ja>>2]|0)+1|0;c[ja>>2]=na;c[J>>2]=na;c[_>>2]=Pw(c[F>>2]|0)|0;if(!(c[_>>2]|0))break a;ax(c[F>>2]|0,1,c[ma>>2]|0);na=Yw(c[_>>2]|0,160)|0;c[(c[va>>2]|0)+44>>2]=na;Rw(c[_>>2]|0,121,c[ma>>2]|0,c[J>>2]|0)|0;if(c[G>>2]|0){c[M>>2]=(c[(c[F>>2]|0)+508>>2]|0)-(c[c[W>>2]>>2]|0)+(c[(c[F>>2]|0)+508+4>>2]|0);if((a[(c[c[W>>2]>>2]|0)+((c[M>>2]|0)-1)>>0]|0)==59)c[M>>2]=(c[M>>2]|0)+-1;na=c[ua>>2]|0;ia=c[M>>2]|0;ja=c[c[W>>2]>>2]|0;c[ca>>2]=(c[la>>2]|0)==0?19266:37701;c[ca+4>>2]=ia;c[ca+8>>2]=ja;c[ka>>2]=Bh(na,37709,ca)|0}else c[ka>>2]=0;na=c[F>>2]|0;fa=(c[ma>>2]|0)==1?20769:20788;ga=c[c[va>>2]>>2]|0;ha=c[c[oa>>2]>>2]|0;ia=c[J>>2]|0;ja=c[ka>>2]|0;c[da>>2]=c[(c[(c[ua>>2]|0)+16>>2]|0)+(c[ma>>2]<<4)>>2];c[da+4>>2]=fa;c[da+8>>2]=ga;c[da+12>>2]=ha;c[da+16>>2]=ia;c[da+20>>2]=ja;Ow(na,37729,da);Sf(c[ua>>2]|0,c[ka>>2]|0);if(c[ra>>2]|0){Uz(c[F>>2]|0,c[va>>2]|0,c[J>>2]|0);Qw(c[F>>2]|0,c[ma>>2]|0);ka=c[_>>2]|0;ma=c[ma>>2]|0;na=c[ua>>2]|0;c[ea>>2]=c[c[va>>2]>>2];Sw(ka,ma,Bh(na,37777,ea)|0);xz(c[_>>2]|0,147,0)|0}Fz(c[_>>2]|0,c[(c[va>>2]|0)+44>>2]|0)}while(0);if(!((c[ra>>2]|0)==0?1:(d[(c[ua>>2]|0)+140+5>>0]|0)!=0))break;do if((c[la>>2]|0)!=5)qa=132;else{if(!(c[(c[oa>>2]|0)+8>>2]|0)){qa=132;break}if((d[(c[(c[oa>>2]|0)+8>>2]|0)+54>>0]|0)==5){qa=132;break}c[pa>>2]=c[(c[oa>>2]|0)+8>>2];while(1){if(c[(c[pa>>2]|0)+20>>2]|0)l=(d[(c[(c[pa>>2]|0)+20>>2]|0)+54>>0]|0)!=5;else l=0;p=c[(c[pa>>2]|0)+20>>2]|0;if(!l)break;c[pa>>2]=p}c[(c[va>>2]|0)+20>>2]=p;c[(c[pa>>2]|0)+20>>2]=c[va>>2]}while(0);if((qa|0)==132){c[(c[va>>2]|0)+20>>2]=c[(c[oa>>2]|0)+8>>2];c[(c[oa>>2]|0)+8>>2]=c[va>>2]}c[wa>>2]=c[va>>2];c[va>>2]=0}}}while(0);if(!(c[va>>2]|0)){qa=c[ua>>2]|0;va=c[ta>>2]|0;Zu(qa,va);va=c[ua>>2]|0;ta=c[sa>>2]|0;Vu(va,ta);ta=c[ua>>2]|0;va=c[ra>>2]|0;Yu(ta,va);va=c[ua>>2]|0;xa=c[xa>>2]|0;Sf(va,xa);xa=c[wa>>2]|0;i=ya;return xa|0}WG(c[ua>>2]|0,c[va>>2]|0);qa=c[ua>>2]|0;va=c[ta>>2]|0;Zu(qa,va);va=c[ua>>2]|0;ta=c[sa>>2]|0;Vu(va,ta);ta=c[ua>>2]|0;va=c[ra>>2]|0;Yu(ta,va);va=c[ua>>2]|0;xa=c[xa>>2]|0;Sf(va,xa);xa=c[wa>>2]|0;i=ya;return xa|0}function wv(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[f>>2]=b;c[g>>2]=e;c[j>>2]=c[(c[f>>2]|0)+488>>2];c[h>>2]=c[c[f>>2]>>2];if(((c[j>>2]|0)!=0?(a[(c[f>>2]|0)+454>>0]|0)==0:0)?(Ei(c[(c[(c[h>>2]|0)+16>>2]|0)+(d[(c[h>>2]|0)+140+4>>0]<<4)+4>>2]|0)|0)==0:0){b=Gv(c[f>>2]|0,c[(c[j>>2]|0)+24>>2]|0,c[g>>2]|0)|0;c[(c[j>>2]|0)+24>>2]=b;if(!(c[(c[f>>2]|0)+328+4>>2]|0)){i=k;return}Hv(c[f>>2]|0,c[(c[j>>2]|0)+24>>2]|0,(c[f>>2]|0)+328|0,1);i=k;return}Zu(c[c[f>>2]>>2]|0,c[g>>2]|0);i=k;return}function xv(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;E=i;i=i+96|0;B=E+16|0;o=E+8|0;n=E;p=E+80|0;q=E+76|0;k=E+72|0;r=E+68|0;s=E+64|0;t=E+60|0;z=E+56|0;A=E+52|0;y=E+48|0;m=E+44|0;u=E+40|0;x=E+36|0;C=E+32|0;l=E+28|0;v=E+24|0;w=E+20|0;c[p>>2]=e;c[q>>2]=f;c[k>>2]=g;c[r>>2]=h;c[s>>2]=j;c[t>>2]=c[c[p>>2]>>2];c[z>>2]=0;c[y>>2]=c[(c[p>>2]|0)+488>>2];a:do if((c[y>>2]|0)!=0?(d[(c[p>>2]|0)+454>>0]|0)==0:0){if(!(c[q>>2]|0)){c[l>>2]=(b[(c[y>>2]|0)+34>>1]|0)-1;if((c[l>>2]|0)<0)break;if((c[r>>2]|0)!=0?(c[c[r>>2]>>2]|0)!=1:0){D=c[p>>2]|0;C=c[k>>2]|0;c[n>>2]=c[(c[(c[y>>2]|0)+4>>2]|0)+((c[l>>2]|0)*24|0)>>2];c[n+4>>2]=C;Ah(D,37167,n);break}c[x>>2]=1}else{if((c[r>>2]|0)!=0?(c[c[r>>2]>>2]|0)!=(c[c[q>>2]>>2]|0):0){Ah(c[p>>2]|0,37230,o);break}c[x>>2]=c[c[q>>2]>>2]}c[m>>2]=44+((c[x>>2]|0)-1<<3)+(c[(c[k>>2]|0)+4>>2]|0)+1;b:do if(c[r>>2]|0){c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[c[r>>2]>>2]|0))break b;o=(If(c[(c[(c[r>>2]|0)+4>>2]|0)+((c[u>>2]|0)*20|0)+4>>2]|0)|0)+1|0;c[m>>2]=(c[m>>2]|0)+o;c[u>>2]=(c[u>>2]|0)+1}}while(0);o=c[m>>2]|0;c[z>>2]=ph(c[t>>2]|0,o,((o|0)<0)<<31>>31)|0;if(c[z>>2]|0){c[c[z>>2]>>2]=c[y>>2];c[(c[z>>2]|0)+4>>2]=c[(c[y>>2]|0)+16>>2];c[C>>2]=(c[z>>2]|0)+36+(c[x>>2]<<3);c[(c[z>>2]|0)+8>>2]=c[C>>2];iR(c[C>>2]|0,c[c[k>>2]>>2]|0,c[(c[k>>2]|0)+4>>2]|0)|0;a[(c[C>>2]|0)+(c[(c[k>>2]|0)+4>>2]|0)>>0]=0;Jw(c[C>>2]|0)|0;c[C>>2]=(c[C>>2]|0)+((c[(c[k>>2]|0)+4>>2]|0)+1);c[(c[z>>2]|0)+20>>2]=c[x>>2];c:do if(!(c[q>>2]|0))c[(c[z>>2]|0)+36>>2]=(b[(c[y>>2]|0)+34>>1]|0)-1;else{c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[x>>2]|0))break c;c[v>>2]=0;while(1){if((c[v>>2]|0)>=(b[(c[y>>2]|0)+34>>1]|0))break;o=(Td(c[(c[(c[y>>2]|0)+4>>2]|0)+((c[v>>2]|0)*24|0)>>2]|0,c[(c[(c[q>>2]|0)+4>>2]|0)+((c[u>>2]|0)*20|0)+4>>2]|0)|0)==0;k=c[v>>2]|0;if(o){D=25;break}c[v>>2]=k+1}if((D|0)==25){D=0;c[(c[z>>2]|0)+36+(c[u>>2]<<3)>>2]=k}if((c[v>>2]|0)>=(b[(c[y>>2]|0)+34>>1]|0))break;c[u>>2]=(c[u>>2]|0)+1}D=c[p>>2]|0;c[B>>2]=c[(c[(c[q>>2]|0)+4>>2]|0)+((c[u>>2]|0)*20|0)+4>>2];Ah(D,37324,B);break a}while(0);d:do if(c[r>>2]|0){c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[x>>2]|0))break d;c[w>>2]=If(c[(c[(c[r>>2]|0)+4>>2]|0)+((c[u>>2]|0)*20|0)+4>>2]|0)|0;c[(c[z>>2]|0)+36+(c[u>>2]<<3)+4>>2]=c[C>>2];iR(c[C>>2]|0,c[(c[(c[r>>2]|0)+4>>2]|0)+((c[u>>2]|0)*20|0)+4>>2]|0,c[w>>2]|0)|0;a[(c[C>>2]|0)+(c[w>>2]|0)>>0]=0;c[C>>2]=(c[C>>2]|0)+((c[w>>2]|0)+1);c[u>>2]=(c[u>>2]|0)+1}}while(0);a[(c[z>>2]|0)+24>>0]=0;a[(c[z>>2]|0)+25>>0]=c[s>>2];a[(c[z>>2]|0)+25+1>>0]=c[s>>2]>>8;c[A>>2]=Oj((c[(c[y>>2]|0)+64>>2]|0)+56|0,c[(c[z>>2]|0)+8>>2]|0,c[z>>2]|0)|0;if((c[A>>2]|0)==(c[z>>2]|0)){jh(c[t>>2]|0);break}if(c[A>>2]|0){c[(c[z>>2]|0)+12>>2]=c[A>>2];c[(c[A>>2]|0)+16>>2]=c[z>>2]}c[(c[y>>2]|0)+16>>2]=c[z>>2];c[z>>2]=0}}while(0);Sf(c[t>>2]|0,c[z>>2]|0);Vu(c[t>>2]|0,c[q>>2]|0);Vu(c[t>>2]|0,c[r>>2]|0);i=E;return}function yv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;j=h+12|0;e=h+8|0;g=h+4|0;f=h;c[j>>2]=b;c[e>>2]=d;b=c[(c[j>>2]|0)+488>>2]|0;c[g>>2]=b;if(!b){i=h;return}j=c[(c[g>>2]|0)+16>>2]|0;c[f>>2]=j;if(!j){i=h;return}a[(c[f>>2]|0)+24>>0]=c[e>>2];i=h;return}function zv(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;e=m+24|0;f=m+20|0;j=m+16|0;h=m+12|0;l=m+8|0;g=m+4|0;k=m;c[e>>2]=a;c[f>>2]=d;d=c[(c[e>>2]|0)+488>>2]|0;c[j>>2]=d;if(!d){i=m;return}c[h>>2]=(b[(c[j>>2]|0)+34>>1]|0)-1;c[g>>2]=c[c[e>>2]>>2];c[l>>2]=Dw(c[g>>2]|0,c[f>>2]|0)|0;if(!(c[l>>2]|0)){i=m;return}d=(Dz(c[e>>2]|0,c[l>>2]|0)|0)!=0;e=c[g>>2]|0;if(!d){Sf(e,c[l>>2]|0);i=m;return}Sf(e,c[(c[(c[j>>2]|0)+4>>2]|0)+((c[h>>2]|0)*24|0)+16>>2]|0);c[(c[(c[j>>2]|0)+4>>2]|0)+((c[h>>2]|0)*24|0)+16>>2]=c[l>>2];c[k>>2]=c[(c[j>>2]|0)+8>>2];while(1){if(!(c[k>>2]|0))break;if((b[c[(c[k>>2]|0)+4>>2]>>1]|0)==(c[h>>2]|0))c[c[(c[k>>2]|0)+32>>2]>>2]=c[(c[(c[j>>2]|0)+4>>2]|0)+((c[h>>2]|0)*24|0)+16>>2];c[k>>2]=c[(c[k>>2]|0)+20>>2]}i=m;return}function Av(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=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;x=i;i=i+80|0;t=x+16|0;s=x+8|0;r=x;h=x+64|0;j=x+60|0;k=x+56|0;l=x+52|0;p=x+48|0;q=x+44|0;n=x+40|0;o=x+36|0;m=x+32|0;w=x+28|0;v=x+24|0;u=x+20|0;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[l>>2]=g;c[n>>2]=c[c[h>>2]>>2];do if((a[(c[n>>2]|0)+65>>0]|0)==0?(pz(c[h>>2]|0)|0)==0:0){if(c[l>>2]|0){b=(c[n>>2]|0)+69|0;a[b>>0]=(a[b>>0]|0)+1<<24>>24}c[p>>2]=_w(c[h>>2]|0,c[k>>2]|0,(c[j>>2]|0)+8|0)|0;if(c[l>>2]|0){b=(c[n>>2]|0)+69|0;a[b>>0]=(a[b>>0]|0)+-1<<24>>24}if(!(c[p>>2]|0)){if(!(c[l>>2]|0))break;zB(c[h>>2]|0,c[(c[j>>2]|0)+8+4>>2]|0);break}c[o>>2]=Dh(c[n>>2]|0,c[(c[p>>2]|0)+64>>2]|0)|0;if((d[(c[p>>2]|0)+42>>0]&16|0)!=0?(zx(c[h>>2]|0,c[p>>2]|0)|0)!=0:0)break;c[w>>2]=(c[o>>2]|0)==1?20769:20788;c[v>>2]=c[(c[(c[n>>2]|0)+16>>2]|0)+(c[o>>2]<<4)>>2];c[u>>2]=0;if(!(Mw(c[h>>2]|0,9,c[w>>2]|0,0,c[v>>2]|0)|0)){do if(c[k>>2]|0)if((c[o>>2]|0)==1){c[m>>2]=15;break}else{c[m>>2]=17;break}else{if(d[(c[p>>2]|0)+42>>0]&16){c[m>>2]=30;c[u>>2]=c[(c[(Ax(c[n>>2]|0,c[p>>2]|0)|0)+4>>2]|0)+4>>2];break}if((c[o>>2]|0)==1){c[m>>2]=13;break}else{c[m>>2]=11;break}}while(0);if((Mw(c[h>>2]|0,c[m>>2]|0,c[c[p>>2]>>2]|0,c[u>>2]|0,c[v>>2]|0)|0)==0?(Mw(c[h>>2]|0,9,c[c[p>>2]>>2]|0,0,c[v>>2]|0)|0)==0:0){if((zd(c[c[p>>2]>>2]|0,28715,7)|0)==0?(zd(c[c[p>>2]>>2]|0,36960,11)|0)!=0:0){w=c[h>>2]|0;c[r>>2]=c[c[p>>2]>>2];Ah(w,36972,r);break}if((c[k>>2]|0)!=0?(c[(c[p>>2]|0)+12>>2]|0)==0:0){w=c[h>>2]|0;c[s>>2]=c[c[p>>2]>>2];Ah(w,37e3,s);break}if((c[k>>2]|0)==0?(c[(c[p>>2]|0)+12>>2]|0)!=0:0){w=c[h>>2]|0;c[t>>2]=c[c[p>>2]>>2];Ah(w,37034,t);break}c[q>>2]=Pw(c[h>>2]|0)|0;if(c[q>>2]|0){ax(c[h>>2]|0,1,c[o>>2]|0);pC(c[h>>2]|0,c[o>>2]|0,31729,c[c[p>>2]>>2]|0);NG(c[h>>2]|0,c[j>>2]|0,c[p>>2]|0);OG(c[h>>2]|0,c[p>>2]|0,c[o>>2]|0,c[k>>2]|0)}}}}while(0);Yu(c[n>>2]|0,c[j>>2]|0);i=x;return}function Bv(e,f,g,h,j,k,l,m){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;D=i;i=i+96|0;w=D+88|0;n=D+84|0;o=D+80|0;p=D+76|0;x=D+72|0;y=D+68|0;q=D+64|0;r=D+60|0;t=D+56|0;A=D+52|0;C=D+48|0;B=D+40|0;v=D+16|0;u=D+12|0;s=D+8|0;z=D+4|0;c[w>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[x>>2]=j;c[y>>2]=k;c[q>>2]=l;c[r>>2]=m;c[u>>2]=0;c[z>>2]=c[c[w>>2]>>2];l=c[w>>2]|0;if((b[(c[w>>2]|0)+444>>1]|0)<=0){lv(l,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,1,0,c[r>>2]|0);c[t>>2]=c[(c[w>>2]|0)+488>>2];if((((c[t>>2]|0)!=0?(c[(c[w>>2]|0)+68>>2]|0)==0:0)?(tz(c[w>>2]|0,c[o>>2]|0,c[p>>2]|0,u)|0,c[s>>2]=Dh(c[z>>2]|0,c[(c[t>>2]|0)+64>>2]|0)|0,EB(v,c[w>>2]|0,c[s>>2]|0,36955,c[u>>2]|0),(GB(v,c[y>>2]|0)|0)==0):0)?(v=Hx(c[z>>2]|0,c[y>>2]|0,1)|0,c[(c[t>>2]|0)+12>>2]=v,v=vy(c[z>>2]|0,c[x>>2]|0,1)|0,c[(c[t>>2]|0)+24>>2]=v,(a[(c[z>>2]|0)+65>>0]|0)==0):0){v=(c[w>>2]|0)+508|0;c[B>>2]=c[v>>2];c[B+4>>2]=c[v+4>>2];if((a[c[B>>2]>>0]|0)!=59)c[B>>2]=(c[B>>2]|0)+(c[B+4>>2]|0);c[B+4>>2]=0;c[A>>2]=(c[B>>2]|0)-(c[c[n>>2]>>2]|0);c[C>>2]=c[c[n>>2]>>2];while(1){l=c[A>>2]|0;if(!(d[19267+(d[(c[C>>2]|0)+((c[A>>2]|0)-1)>>0]|0)>>0]&1))break;c[A>>2]=l+-1}c[B>>2]=(c[C>>2]|0)+(l-1);c[B+4>>2]=1;nv(c[w>>2]|0,0,B,0,0)}}else Ah(l,36919,D);Wu(c[z>>2]|0,c[y>>2]|0);Vu(c[z>>2]|0,c[x>>2]|0);i=D;return}function Cv(f,g,h){f=f|0;g=g|0;h=h|0;var 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,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;Da=i;i=i+432|0;w=Da;O=Da+412|0;P=Da+408|0;Q=Da+404|0;R=Da+400|0;$=Da+396|0;ga=Da+392|0;qa=Da+388|0;Ca=Da+384|0;l=Da+380|0;la=Da+376|0;pa=Da+372|0;M=Da+368|0;ma=Da+364|0;na=Da+360|0;sa=Da+356|0;ya=Da+344|0;za=Da+312|0;xa=Da+264|0;da=Da+256|0;Z=Da+252|0;ea=Da+248|0;o=Da+244|0;r=Da+240|0;m=Da+236|0;t=Da+232|0;p=Da+228|0;k=Da+208|0;s=Da+204|0;j=Da+200|0;v=Da+196|0;n=Da+192|0;u=Da+188|0;q=Da+184|0;x=Da+416|0;N=Da+152|0;aa=Da+148|0;ca=Da+144|0;fa=Da+140|0;ba=Da+136|0;_=Da+132|0;T=Da+128|0;Ba=Da+124|0;Aa=Da+120|0;ja=Da+116|0;z=Da+112|0;A=Da+108|0;oa=Da+104|0;S=Da+100|0;U=Da+96|0;ua=Da+92|0;W=Da+88|0;Y=Da+84|0;X=Da+80|0;V=Da+76|0;wa=Da+72|0;ta=Da+68|0;va=Da+64|0;ha=Da+60|0;ia=Da+56|0;ka=Da+52|0;ra=Da+48|0;H=Da+44|0;L=Da+40|0;E=Da+36|0;D=Da+32|0;I=Da+28|0;J=Da+24|0;G=Da+20|0;F=Da+16|0;K=Da+12|0;B=Da+418|0;c[P>>2]=f;c[Q>>2]=g;c[R>>2]=h;c[la>>2]=0;c[sa>>2]=1;c[ea>>2]=c[(c[P>>2]|0)+468>>2];h=(c[P>>2]|0)+472|0;f=c[h>>2]|0;c[h>>2]=f+1;c[(c[P>>2]|0)+468>>2]=f;c[Z>>2]=c[c[P>>2]>>2];if(((c[Q>>2]|0)!=0?(d[(c[Z>>2]|0)+65>>0]|0)==0:0)?(c[(c[P>>2]|0)+68>>2]|0)==0:0){if(Mw(c[P>>2]|0,21,0,0,0)|0){c[O>>2]=1;Ca=c[O>>2]|0;i=Da;return Ca|0}g=xa;h=g+48|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));if((d[c[R>>2]>>0]|0)<=8){Vu(c[Z>>2]|0,c[(c[Q>>2]|0)+48>>2]|0);c[(c[Q>>2]|0)+48>>2]=0;f=(c[Q>>2]|0)+6|0;b[f>>1]=e[f>>1]&-2}Kx(c[P>>2]|0,c[Q>>2]|0,0);c[za>>2]=0;c[za+4>>2]=0;c[za+8>>2]=0;c[za+12>>2]=0;c[za+16>>2]=0;c[za+20>>2]=0;c[za+24>>2]=0;c[za+28>>2]=0;c[za>>2]=c[(c[Q>>2]|0)+48>>2];c[pa>>2]=c[(c[Q>>2]|0)+32>>2];a:do if(((c[(c[P>>2]|0)+68>>2]|0)==0?(d[(c[Z>>2]|0)+65>>0]|0)==0:0)?(c[l>>2]=(e[(c[Q>>2]|0)+6>>1]&8|0)!=0&1,(VF(c[P>>2]|0,c[R>>2]|0,c[c[c[Q>>2]>>2]>>2]|0)|0)==0):0){c[$>>2]=0;while(1){if(c[(c[Q>>2]|0)+52>>2]|0)break;if((c[$>>2]|0)>=(c[c[pa>>2]>>2]|0))break;c[o>>2]=(c[pa>>2]|0)+8+((c[$>>2]|0)*72|0);c[r>>2]=c[(c[o>>2]|0)+20>>2];c[t>>2]=c[(c[o>>2]|0)+16>>2];if(c[r>>2]|0){if((b[(c[t>>2]|0)+34>>1]|0)!=(c[c[c[r>>2]>>2]>>2]|0)){y=17;break}c[m>>2]=(e[(c[r>>2]|0)+6>>1]&8|0)!=0&1;if(WF(c[P>>2]|0,c[Q>>2]|0,c[$>>2]|0,c[l>>2]|0,c[m>>2]|0)|0){if(c[m>>2]|0){c[l>>2]=1;f=(c[Q>>2]|0)+6|0;b[f>>1]=e[f>>1]|8}c[$>>2]=-1}c[pa>>2]=c[(c[Q>>2]|0)+32>>2];if(a[(c[Z>>2]|0)+65>>0]|0)break a;if((d[c[R>>2]>>0]|0)>8)c[za>>2]=c[(c[Q>>2]|0)+48>>2]}c[$>>2]=(c[$>>2]|0)+1}if((y|0)==17){Ca=c[P>>2]|0;Aa=c[c[t>>2]>>2]|0;Ba=c[c[c[r>>2]>>2]>>2]|0;c[w>>2]=b[(c[t>>2]|0)+34>>1];c[w+4>>2]=Aa;c[w+8>>2]=Ba;Ah(Ca,36434,w);break}c[Ca>>2]=Pw(c[P>>2]|0)|0;if(c[Ca>>2]|0){if(c[(c[Q>>2]|0)+52>>2]|0){c[sa>>2]=XF(c[P>>2]|0,c[Q>>2]|0,c[R>>2]|0)|0;c[(c[P>>2]|0)+468>>2]=c[ea>>2];c[O>>2]=c[sa>>2];Ca=c[O>>2]|0;i=Da;return Ca|0}c[$>>2]=0;while(1){if((c[$>>2]|0)>=(c[c[pa>>2]>>2]|0))break;c[p>>2]=(c[pa>>2]|0)+8+((c[$>>2]|0)*72|0);c[s>>2]=c[(c[p>>2]|0)+20>>2];do if(c[s>>2]|0){if(c[(c[p>>2]|0)+24>>2]|0){if((d[(c[p>>2]|0)+36+1>>0]|0)>>>4&1)break;Rw(c[Ca>>2]|0,14,c[(c[p>>2]|0)+28>>2]|0,c[(c[p>>2]|0)+24>>2]|0)|0;break}t=YF(c[Q>>2]|0)|0;w=(c[P>>2]|0)+464|0;c[w>>2]=(c[w>>2]|0)+t;if(!(d[(c[p>>2]|0)+36>>0]&32))ZF(c[Z>>2]|0,c[s>>2]|0,c[(c[Q>>2]|0)+36>>2]|0,c[(c[p>>2]|0)+44>>2]|0)|0;do if((c[c[pa>>2]>>2]|0)==1){if(e[(c[Q>>2]|0)+6>>1]&2){y=41;break}if(e[(c[Z>>2]|0)+60>>1]&256){y=41;break}c[j>>2]=(Bz(c[Ca>>2]|0)|0)+1;t=(c[P>>2]|0)+76|0;w=(c[t>>2]|0)+1|0;c[t>>2]=w;c[(c[p>>2]|0)+28>>2]=w;Vw(c[Ca>>2]|0,16,c[(c[p>>2]|0)+28>>2]|0,0,c[j>>2]|0)|0;c[(c[p>>2]|0)+24>>2]=c[j>>2];ZA(k,13,c[(c[p>>2]|0)+28>>2]|0);a[(c[p>>2]|0)+40>>0]=c[(c[P>>2]|0)+472>>2];Cv(c[P>>2]|0,c[s>>2]|0,k)|0;w=(c[s>>2]|0)+24|0;w=Hj(c[w>>2]|0,c[w+4>>2]|0)|0;b[(c[(c[p>>2]|0)+16>>2]|0)+38>>1]=w;w=(c[p>>2]|0)+36+1|0;a[w>>0]=a[w>>0]&-17|16;c[(c[p>>2]|0)+32>>2]=c[k+8>>2];xC(c[Ca>>2]|0,c[(c[p>>2]|0)+28>>2]|0);Fz(c[Ca>>2]|0,(c[j>>2]|0)-1|0);_F(c[P>>2]|0)}else y=41;while(0);if((y|0)==41){y=0;c[n>>2]=0;t=(c[P>>2]|0)+76|0;w=(c[t>>2]|0)+1|0;c[t>>2]=w;c[(c[p>>2]|0)+28>>2]=w;c[v>>2]=Rw(c[Ca>>2]|0,22,0,c[(c[p>>2]|0)+28>>2]|0)|0;c[(c[p>>2]|0)+24>>2]=(c[v>>2]|0)+1;if(!((d[(c[p>>2]|0)+36+1>>0]|0)>>>3&1))c[n>>2]=UA(c[P>>2]|0)|0;ZA(k,12,c[(c[p>>2]|0)+44>>2]|0);a[(c[p>>2]|0)+40>>0]=c[(c[P>>2]|0)+472>>2];Cv(c[P>>2]|0,c[s>>2]|0,k)|0;w=(c[s>>2]|0)+24|0;w=Hj(c[w>>2]|0,c[w+4>>2]|0)|0;b[(c[(c[p>>2]|0)+16>>2]|0)+38>>1]=w;if(c[n>>2]|0)Fz(c[Ca>>2]|0,c[n>>2]|0);c[u>>2]=xz(c[Ca>>2]|0,15,c[(c[p>>2]|0)+28>>2]|0)|0;wD(c[Ca>>2]|0,c[v>>2]|0,c[u>>2]|0);_F(c[P>>2]|0)}if(a[(c[Z>>2]|0)+65>>0]|0)break a;t=YF(c[Q>>2]|0)|0;w=(c[P>>2]|0)+464|0;c[w>>2]=(c[w>>2]|0)-t}while(0);c[$>>2]=(c[$>>2]|0)+1}c[la>>2]=c[c[Q>>2]>>2];c[M>>2]=c[(c[Q>>2]|0)+36>>2];c[ma>>2]=c[(c[Q>>2]|0)+40>>2];c[na>>2]=c[(c[Q>>2]|0)+44>>2];a[ya>>0]=(e[(c[Q>>2]|0)+6>>1]&1|0)!=0;if((e[(c[Q>>2]|0)+6>>1]&9|0)==1?(qy(c[za>>2]|0,c[la>>2]|0,-1)|0)==0:0){y=(c[Q>>2]|0)+6|0;b[y>>1]=e[y>>1]&-2;y=vy(c[Z>>2]|0,c[la>>2]|0,0)|0;c[(c[Q>>2]|0)+40>>2]=y;c[ma>>2]=y}if(c[za>>2]|0){c[q>>2]=$F(c[P>>2]|0,c[za>>2]|0,0,c[c[la>>2]>>2]|0)|0;w=(c[P>>2]|0)+72|0;y=c[w>>2]|0;c[w>>2]=y+1;c[za+8>>2]=y;c[za+20>>2]=Uw(c[Ca>>2]|0,57,c[za+8>>2]|0,(c[c[za>>2]>>2]|0)+1+(c[c[la>>2]>>2]|0)|0,0,c[q>>2]|0,-6)|0}else c[za+20>>2]=-1;if((d[c[R>>2]>>0]|0)==12)Rw(c[Ca>>2]|0,57,c[(c[R>>2]|0)+4>>2]|0,c[c[la>>2]>>2]|0)|0;c[da>>2]=Cz(c[Ca>>2]|0)|0;y=(c[Q>>2]|0)+24|0;c[y>>2]=-1;c[y+4>>2]=2147483647;aG(c[P>>2]|0,c[Q>>2]|0,c[da>>2]|0);if((c[(c[Q>>2]|0)+8>>2]|0)==0?(c[za+20>>2]|0)>=0:0){bG(c[Ca>>2]|0,c[za+20>>2]|0,58);y=za+28|0;a[y>>0]=d[y>>0]|1}if(e[(c[Q>>2]|0)+6>>1]&1){y=(c[P>>2]|0)+72|0;w=c[y>>2]|0;c[y>>2]=w+1;c[ya+4>>2]=w;w=c[Ca>>2]|0;y=c[ya+4>>2]|0;c[ya+8>>2]=Uw(w,57,y,0,0,$F(c[P>>2]|0,c[c[Q>>2]>>2]|0,0,0)|0,-6)|0;Fh(c[Ca>>2]|0,8);a[ya+1>>0]=3}else a[ya+1>>0]=0;if((c[l>>2]|0)==0&(c[ma>>2]|0)==0){b[x>>1]=(d[ya>>0]|0)!=0?1024:0;c[qa>>2]=RC(c[P>>2]|0,c[pa>>2]|0,c[M>>2]|0,c[za>>2]|0,c[c[Q>>2]>>2]|0,b[x>>1]|0,0)|0;if(!(c[qa>>2]|0))break;Aa=cG(c[qa>>2]|0)|0;va=C;Ba=(c[Q>>2]|0)+24|0;wa=c[Ba+4>>2]|0;if(va>>>0>>0|((va|0)==(wa|0)?Aa>>>0<(c[Ba>>2]|0)>>>0:0)){Aa=cG(c[qa>>2]|0)|0;Ba=(c[Q>>2]|0)+24|0;c[Ba>>2]=Aa;c[Ba+4>>2]=C}do if(d[ya>>0]|0){if(!(dG(c[qa>>2]|0)|0))break;a[ya+1>>0]=dG(c[qa>>2]|0)|0}while(0);do if(c[za>>2]|0){c[za+4>>2]=eG(c[qa>>2]|0)|0;if((c[za+4>>2]|0)!=(c[c[za>>2]>>2]|0))break;c[za>>2]=0}while(0);do if((c[za+20>>2]|0)>=0){if(c[za>>2]|0)break;pA(c[Ca>>2]|0,c[za+20>>2]|0)|0}while(0);ua=c[P>>2]|0;va=c[Q>>2]|0;wa=c[la>>2]|0;Aa=c[R>>2]|0;Ba=fG(c[qa>>2]|0)|0;hG(ua,va,wa,-1,za,ya,Aa,Ba,gG(c[qa>>2]|0)|0);SC(c[qa>>2]|0)}else{c[Ba>>2]=0;c[Aa>>2]=0;c[ja>>2]=0;g=c[Q>>2]|0;do if(c[ma>>2]|0){c[z>>2]=c[c[g>>2]>>2];c[A>>2]=c[(c[c[Q>>2]>>2]|0)+4>>2];while(1){if((c[z>>2]|0)<=0)break;b[(c[A>>2]|0)+16+2>>1]=0;c[z>>2]=(c[z>>2]|0)+-1;c[A>>2]=(c[A>>2]|0)+20}c[z>>2]=c[c[ma>>2]>>2];c[A>>2]=c[(c[ma>>2]|0)+4>>2];while(1){if((c[z>>2]|0)<=0)break;b[(c[A>>2]|0)+16+2>>1]=0;c[z>>2]=(c[z>>2]|0)+-1;c[A>>2]=(c[A>>2]|0)+20}A=(c[Q>>2]|0)+24|0;z=c[A+4>>2]|0;if(!(z>>>0>0|(z|0)==0&(c[A>>2]|0)>>>0>100))break;A=(c[Q>>2]|0)+24|0;c[A>>2]=100;c[A+4>>2]=0}else{A=g+24|0;c[A>>2]=1;c[A+4>>2]=0}while(0);if(!(qy(c[ma>>2]|0,c[za>>2]|0,-1)|0))c[ja>>2]=1;c[T>>2]=Cz(c[Ca>>2]|0)|0;c[N>>2]=0;c[N+4>>2]=0;c[N+8>>2]=0;c[N+12>>2]=0;c[N+16>>2]=0;c[N+20>>2]=0;c[N+24>>2]=0;c[N+28>>2]=0;c[N>>2]=c[P>>2];c[N+4>>2]=c[pa>>2];c[N+12>>2]=xa;c[xa+16>>2]=(c[(c[P>>2]|0)+76>>2]|0)+1;if(c[ma>>2]|0)g=c[c[ma>>2]>>2]|0;else g=0;c[xa+12>>2]=g;c[xa+24>>2]=c[ma>>2];iG(N,c[la>>2]|0);iG(N,c[za>>2]|0);if(c[na>>2]|0)jG(N,c[na>>2]|0);c[xa+36>>2]=c[xa+32>>2];c[$>>2]=0;while(1){if((c[$>>2]|0)>=(c[xa+44>>2]|0))break;A=N+28|0;b[A>>1]=e[A>>1]|8;iG(N,c[(c[(c[xa+40>>2]|0)+(c[$>>2]<<4)>>2]|0)+20>>2]|0);A=N+28|0;b[A>>1]=e[A>>1]&-9;c[$>>2]=(c[$>>2]|0)+1}c[xa+20>>2]=c[(c[P>>2]|0)+76>>2];if(a[(c[Z>>2]|0)+65>>0]|0)break;if(c[ma>>2]|0){L=(c[P>>2]|0)+72|0;N=c[L>>2]|0;c[L>>2]=N+1;c[xa+4>>2]=N;c[oa>>2]=$F(c[P>>2]|0,c[ma>>2]|0,0,c[xa+32>>2]|0)|0;c[X>>2]=Uw(c[Ca>>2]|0,58,c[xa+4>>2]|0,c[xa+12>>2]|0,0,c[oa>>2]|0,-6)|0;N=(c[P>>2]|0)+76|0;L=(c[N>>2]|0)+1|0;c[N>>2]=L;c[fa>>2]=L;L=(c[P>>2]|0)+76|0;N=(c[L>>2]|0)+1|0;c[L>>2]=N;c[ba>>2]=N;N=(c[P>>2]|0)+76|0;L=(c[N>>2]|0)+1|0;c[N>>2]=L;c[ua>>2]=L;c[U>>2]=Cz(c[Ca>>2]|0)|0;L=(c[P>>2]|0)+76|0;N=(c[L>>2]|0)+1|0;c[L>>2]=N;c[wa>>2]=N;c[V>>2]=Cz(c[Ca>>2]|0)|0;c[aa>>2]=(c[(c[P>>2]|0)+76>>2]|0)+1;N=(c[P>>2]|0)+76|0;c[N>>2]=(c[N>>2]|0)+(c[c[ma>>2]>>2]|0);c[ca>>2]=(c[(c[P>>2]|0)+76>>2]|0)+1;N=(c[P>>2]|0)+76|0;c[N>>2]=(c[N>>2]|0)+(c[c[ma>>2]>>2]|0);Rw(c[Ca>>2]|0,22,0,c[ba>>2]|0)|0;Rw(c[Ca>>2]|0,22,0,c[fa>>2]|0)|0;Vw(c[Ca>>2]|0,25,0,c[aa>>2]|0,(c[aa>>2]|0)+(c[c[ma>>2]>>2]|0)-1|0)|0;Rw(c[Ca>>2]|0,14,c[wa>>2]|0,c[V>>2]|0)|0;c[qa>>2]=RC(c[P>>2]|0,c[pa>>2]|0,c[M>>2]|0,c[ma>>2]|0,0,(256|((c[ja>>2]|0)!=0?2048:0))&65535,0)|0;if(!(c[qa>>2]|0))break;N=eG(c[qa>>2]|0)|0;if((N|0)==(c[c[ma>>2]>>2]|0))c[_>>2]=0;else{if(d[ya>>0]|0)g=(e[(c[Q>>2]|0)+6>>1]&1|0)==0;else g=0;kG(c[P>>2]|0,g?36474:36483);c[_>>2]=1;c[ia>>2]=c[c[ma>>2]>>2];c[ha>>2]=c[ia>>2];c[ga>>2]=c[ia>>2];c[$>>2]=0;while(1){if((c[$>>2]|0)>=(c[xa+32>>2]|0))break;if((c[(c[xa+28>>2]|0)+((c[$>>2]|0)*24|0)+12>>2]|0)>=(c[ga>>2]|0)){c[ha>>2]=(c[ha>>2]|0)+1;c[ga>>2]=(c[ga>>2]|0)+1}c[$>>2]=(c[$>>2]|0)+1}c[ta>>2]=kA(c[P>>2]|0,c[ha>>2]|0)|0;fC(c[P>>2]|0);GA(c[P>>2]|0,c[ma>>2]|0,c[ta>>2]|0,0,0)|0;c[ga>>2]=c[ia>>2];c[$>>2]=0;while(1){if((c[$>>2]|0)>=(c[xa+32>>2]|0))break;c[ka>>2]=(c[xa+28>>2]|0)+((c[$>>2]|0)*24|0);if((c[(c[ka>>2]|0)+12>>2]|0)>=(c[ga>>2]|0)){c[ra>>2]=(c[ga>>2]|0)+(c[ta>>2]|0);vD(c[P>>2]|0,c[c[ka>>2]>>2]|0,c[(c[ka>>2]|0)+8>>2]|0,c[(c[ka>>2]|0)+4>>2]|0,c[ra>>2]|0);c[ga>>2]=(c[ga>>2]|0)+1}c[$>>2]=(c[$>>2]|0)+1}c[va>>2]=Wz(c[P>>2]|0)|0;Vw(c[Ca>>2]|0,49,c[ta>>2]|0,c[ha>>2]|0,c[va>>2]|0)|0;Rw(c[Ca>>2]|0,109,c[xa+4>>2]|0,c[va>>2]|0)|0;_z(c[P>>2]|0,c[va>>2]|0);nA(c[P>>2]|0,c[ta>>2]|0,c[ha>>2]|0);SC(c[qa>>2]|0);ta=(c[P>>2]|0)+72|0;va=c[ta>>2]|0;c[ta>>2]=va+1;c[Ba>>2]=va;c[xa+8>>2]=va;c[Aa>>2]=Wz(c[P>>2]|0)|0;Vw(c[Ca>>2]|0,60,c[Ba>>2]|0,c[Aa>>2]|0,c[ha>>2]|0)|0;Rw(c[Ca>>2]|0,106,c[xa+4>>2]|0,c[T>>2]|0)|0;a[xa+1>>0]=1;fC(c[P>>2]|0)}do if(c[ja>>2]|0){if(e[(c[Z>>2]|0)+60>>1]&4)break;if((c[_>>2]|0)==0?(lG(c[qa>>2]|0)|0)==0:0)break;c[za>>2]=0;pA(c[Ca>>2]|0,c[za+20>>2]|0)|0}while(0);c[Y>>2]=Bz(c[Ca>>2]|0)|0;fC(c[P>>2]|0);if(c[_>>2]|0)Vw(c[Ca>>2]|0,100,c[xa+4>>2]|0,c[Aa>>2]|0,c[Ba>>2]|0)|0;c[ga>>2]=0;while(1){if((c[ga>>2]|0)>=(c[c[ma>>2]>>2]|0))break;if(c[_>>2]|0)Vw(c[Ca>>2]|0,47,c[Ba>>2]|0,c[ga>>2]|0,(c[ca>>2]|0)+(c[ga>>2]|0)|0)|0;else{a[xa>>0]=1;xA(c[P>>2]|0,c[(c[(c[ma>>2]|0)+4>>2]|0)+((c[ga>>2]|0)*20|0)>>2]|0,(c[ca>>2]|0)+(c[ga>>2]|0)|0)}c[ga>>2]=(c[ga>>2]|0)+1}ta=c[Ca>>2]|0;va=c[aa>>2]|0;Aa=c[ca>>2]|0;Ba=c[c[ma>>2]>>2]|0;Uw(ta,42,va,Aa,Ba,Vz(c[oa>>2]|0)|0,-6)|0;c[S>>2]=Bz(c[Ca>>2]|0)|0;Vw(c[Ca>>2]|0,43,(c[S>>2]|0)+1|0,0,(c[S>>2]|0)+1|0)|0;mG(c[P>>2]|0,c[ca>>2]|0,c[aa>>2]|0,c[c[ma>>2]>>2]|0);Rw(c[Ca>>2]|0,14,c[ua>>2]|0,c[U>>2]|0)|0;Rw(c[Ca>>2]|0,138,c[ba>>2]|0,c[T>>2]|0)|0;Rw(c[Ca>>2]|0,14,c[wa>>2]|0,c[V>>2]|0)|0;Fz(c[Ca>>2]|0,c[S>>2]|0);nG(c[P>>2]|0,xa);Rw(c[Ca>>2]|0,22,1,c[fa>>2]|0)|0;if(c[_>>2]|0)Rw(c[Ca>>2]|0,3,c[xa+4>>2]|0,c[Y>>2]|0)|0;else{SC(c[qa>>2]|0);pA(c[Ca>>2]|0,c[X>>2]|0)|0}Rw(c[Ca>>2]|0,14,c[ua>>2]|0,c[U>>2]|0)|0;Ez(c[Ca>>2]|0,c[T>>2]|0)|0;c[W>>2]=Bz(c[Ca>>2]|0)|0;Rw(c[Ca>>2]|0,22,1,c[ba>>2]|0)|0;xz(c[Ca>>2]|0,15,c[ua>>2]|0)|0;Gz(c[Ca>>2]|0,c[U>>2]|0);c[U>>2]=Bz(c[Ca>>2]|0)|0;Rw(c[Ca>>2]|0,138,c[fa>>2]|0,(c[U>>2]|0)+2|0)|0;xz(c[Ca>>2]|0,15,c[ua>>2]|0)|0;oG(c[P>>2]|0,xa);LA(c[P>>2]|0,c[na>>2]|0,(c[U>>2]|0)+1|0,16);hG(c[P>>2]|0,c[Q>>2]|0,c[c[Q>>2]>>2]|0,-1,za,ya,c[R>>2]|0,(c[U>>2]|0)+1|0,c[W>>2]|0);xz(c[Ca>>2]|0,15,c[ua>>2]|0)|0;Gz(c[Ca>>2]|0,c[V>>2]|0);pG(c[P>>2]|0,xa);xz(c[Ca>>2]|0,15,c[wa>>2]|0)|0}else{c[H>>2]=0;Ba=qG(c[Q>>2]|0,xa)|0;c[L>>2]=Ba;if(Ba){c[E>>2]=Dh(c[c[P>>2]>>2]|0,c[(c[L>>2]|0)+64>>2]|0)|0;Aa=(c[P>>2]|0)+72|0;Ba=c[Aa>>2]|0;c[Aa>>2]=Ba+1;c[D>>2]=Ba;c[J>>2]=0;c[G>>2]=0;c[F>>2]=c[(c[L>>2]|0)+28>>2];bx(c[P>>2]|0,c[E>>2]|0);yz(c[P>>2]|0,c[E>>2]|0,c[(c[L>>2]|0)+28>>2]|0,0,c[c[L>>2]>>2]|0);if(d[(c[L>>2]|0)+42>>0]&32)c[G>>2]=Ej(c[L>>2]|0)|0;c[I>>2]=c[(c[L>>2]|0)+8>>2];while(1){if(!(c[I>>2]|0))break;do if(!((d[(c[I>>2]|0)+55>>0]|0)>>>2&1)){if((b[(c[I>>2]|0)+48>>1]|0)>=(b[(c[L>>2]|0)+40>>1]|0))break;if(c[(c[I>>2]|0)+36>>2]|0)break;if((c[G>>2]|0)!=0?(b[(c[I>>2]|0)+48>>1]|0)>=(b[(c[G>>2]|0)+48>>1]|0):0)break;c[G>>2]=c[I>>2]}while(0);c[I>>2]=c[(c[I>>2]|0)+20>>2]}if(c[G>>2]|0){c[F>>2]=c[(c[G>>2]|0)+44>>2];c[J>>2]=Pz(c[P>>2]|0,c[G>>2]|0)|0}Eh(c[Ca>>2]|0,54,c[D>>2]|0,c[F>>2]|0,c[E>>2]|0,1)|0;if(c[J>>2]|0)Ih(c[Ca>>2]|0,-1,c[J>>2]|0,-6); -Rw(c[Ca>>2]|0,50,c[D>>2]|0,c[(c[xa+40>>2]|0)+8>>2]|0)|0;xz(c[Ca>>2]|0,61,c[D>>2]|0)|0;rG(c[P>>2]|0,c[L>>2]|0,c[G>>2]|0)}else{c[K>>2]=0;a[B>>0]=0;if(!(c[(c[Q>>2]|0)+44>>2]|0))a[B>>0]=sG(xa,K)|0;do if(a[B>>0]|0){c[K>>2]=vy(c[Z>>2]|0,c[K>>2]|0,0)|0;c[H>>2]=c[K>>2];if(a[(c[Z>>2]|0)+65>>0]|0)break;a[(c[(c[K>>2]|0)+4>>2]|0)+12>>0]=(d[B>>0]|0)!=1?1:0;a[c[c[(c[K>>2]|0)+4>>2]>>2]>>0]=-104}while(0);pG(c[P>>2]|0,xa);c[qa>>2]=RC(c[P>>2]|0,c[pa>>2]|0,c[M>>2]|0,c[K>>2]|0,0,d[B>>0]|0,0)|0;if(!(c[qa>>2]|0)){Vu(c[Z>>2]|0,c[H>>2]|0);break}nG(c[P>>2]|0,xa);if((eG(c[qa>>2]|0)|0)>0){Ba=c[Ca>>2]|0;Ez(Ba,gG(c[qa>>2]|0)|0)|0}SC(c[qa>>2]|0);oG(c[P>>2]|0,xa)}c[za>>2]=0;LA(c[P>>2]|0,c[na>>2]|0,c[T>>2]|0,16);hG(c[P>>2]|0,c[Q>>2]|0,c[c[Q>>2]>>2]|0,-1,0,0,c[R>>2]|0,c[T>>2]|0,c[T>>2]|0);Vu(c[Z>>2]|0,c[H>>2]|0)}Gz(c[Ca>>2]|0,c[T>>2]|0)}if((d[ya+1>>0]|0)==3)kG(c[P>>2]|0,36474);if(c[za>>2]|0){kG(c[P>>2]|0,(c[za+4>>2]|0)>0?36492:36515);tG(c[P>>2]|0,c[Q>>2]|0,za,c[c[la>>2]>>2]|0,c[R>>2]|0)}Gz(c[Ca>>2]|0,c[da>>2]|0);c[sa>>2]=(c[(c[P>>2]|0)+68>>2]|0)>0&1}}while(0);c[(c[P>>2]|0)+468>>2]=c[ea>>2];if((c[sa>>2]|0)==0?(d[c[R>>2]>>0]|0)==9:0)uG(c[P>>2]|0,c[pa>>2]|0,c[la>>2]|0);Sf(c[Z>>2]|0,c[xa+28>>2]|0);Sf(c[Z>>2]|0,c[xa+40>>2]|0);c[O>>2]=c[sa>>2];Ca=c[O>>2]|0;i=Da;return Ca|0}c[O>>2]=1;Ca=c[O>>2]|0;i=Da;return Ca|0}function Dv(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;m=n;f=n+24|0;g=n+20|0;l=n+16|0;k=n+12|0;j=n+8|0;h=n+4|0;c[f>>2]=a;c[g>>2]=d;if(!(c[(c[g>>2]|0)+52>>2]|0)){i=n;return}c[l>>2]=0;c[h>>2]=0;c[k>>2]=c[g>>2];while(1){if(!(c[k>>2]|0))break;c[(c[k>>2]|0)+56>>2]=c[l>>2];a=(c[k>>2]|0)+6|0;b[a>>1]=e[a>>1]|0|128;c[l>>2]=c[k>>2];c[k>>2]=c[(c[k>>2]|0)+52>>2];c[h>>2]=(c[h>>2]|0)+1}if((e[(c[g>>2]|0)+6>>1]|0)&512){i=n;return}a=c[(c[c[f>>2]>>2]|0)+88+16>>2]|0;c[j>>2]=a;if((a|0)<=0){i=n;return}if((c[h>>2]|0)<=(c[j>>2]|0)){i=n;return}Ah(c[f>>2]|0,36400,m);i=n;return}function Ev(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;x=i;i=i+48|0;v=x;k=x+44|0;l=x+40|0;m=x+36|0;n=x+32|0;o=x+28|0;p=x+24|0;q=x+20|0;r=x+16|0;s=x+12|0;u=x+8|0;t=x+4|0;c[l>>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]=j;c[t>>2]=c[c[l>>2]>>2];if((c[m>>2]|0)==0?(c[r>>2]|0)!=0|(c[s>>2]|0)!=0:0){j=c[l>>2]|0;c[v>>2]=(c[r>>2]|0)!=0?36355:36358;Ah(j,36364,v)}else w=4;if(((w|0)==4?(c[m>>2]=Nv(c[t>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0,(c[m>>2]|0)!=0):0)?(c[c[m>>2]>>2]|0)!=0:0){c[u>>2]=(c[m>>2]|0)+8+(((c[c[m>>2]>>2]|0)-1|0)*72|0);if(c[(c[p>>2]|0)+4>>2]|0){w=Dw(c[t>>2]|0,c[p>>2]|0)|0;c[(c[u>>2]|0)+12>>2]=w}c[(c[u>>2]|0)+20>>2]=c[q>>2];c[(c[u>>2]|0)+48>>2]=c[r>>2];c[(c[u>>2]|0)+52>>2]=c[s>>2];c[k>>2]=c[m>>2];w=c[k>>2]|0;i=x;return w|0}Zu(c[t>>2]|0,c[r>>2]|0);_u(c[t>>2]|0,c[s>>2]|0);Wu(c[t>>2]|0,c[q>>2]|0);c[k>>2]=0;w=c[k>>2]|0;i=x;return w|0}function Fv(d,e,f,g,h,j,k,l,m,n){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;B=i;i=i+128|0;o=B+112|0;p=B+108|0;q=B+104|0;r=B+100|0;s=B+96|0;t=B+92|0;u=B+88|0;v=B+116|0;w=B+84|0;x=B+80|0;z=B+76|0;A=B;y=B+72|0;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=j;c[u>>2]=k;b[v>>1]=l;c[w>>2]=m;c[x>>2]=n;c[y>>2]=c[c[o>>2]>>2];l=Fw(c[y>>2]|0,72,0)|0;c[z>>2]=l;c[z>>2]=(c[z>>2]|0)==0?A:l;if(!(c[p>>2]|0)){l=c[o>>2]|0;c[p>>2]=Gv(l,0,Jv(c[y>>2]|0,158,0)|0)|0}c[c[z>>2]>>2]=c[p>>2];a[(c[z>>2]|0)+4>>0]=119;b[(c[z>>2]|0)+6>>1]=b[v>>1]|0;c[(c[z>>2]|0)+8>>2]=0;c[(c[z>>2]|0)+12>>2]=0;c[(c[z>>2]|0)+16>>2]=-1;c[(c[z>>2]|0)+16+4>>2]=-1;l=(c[z>>2]|0)+24|0;c[l>>2]=0;c[l+4>>2]=0;if(!(c[q>>2]|0))c[q>>2]=ph(c[y>>2]|0,80,0)|0;c[(c[z>>2]|0)+32>>2]=c[q>>2];c[(c[z>>2]|0)+36>>2]=c[r>>2];c[(c[z>>2]|0)+40>>2]=c[s>>2];c[(c[z>>2]|0)+44>>2]=c[t>>2];c[(c[z>>2]|0)+48>>2]=c[u>>2];c[(c[z>>2]|0)+52>>2]=0;c[(c[z>>2]|0)+56>>2]=0;c[(c[z>>2]|0)+60>>2]=c[w>>2];c[(c[z>>2]|0)+64>>2]=c[x>>2];c[(c[z>>2]|0)+68>>2]=0;if(!(a[(c[y>>2]|0)+65>>0]|0)){A=c[z>>2]|0;i=B;return A|0}Xu(c[y>>2]|0,c[z>>2]|0,(c[z>>2]|0)!=(A|0)&1);c[z>>2]=0;A=c[z>>2]|0;i=B;return A|0}function Gv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;f=l+24|0;m=l+20|0;g=l+16|0;h=l+12|0;j=l+8|0;e=l+4|0;k=l;c[m>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=c[c[m>>2]>>2];if(!(c[g>>2]|0)){c[g>>2]=Fw(c[j>>2]|0,8,0)|0;if((c[g>>2]|0)!=0?(c[c[g>>2]>>2]=0,m=Fw(c[j>>2]|0,20,0)|0,c[(c[g>>2]|0)+4>>2]=m,(c[(c[g>>2]|0)+4>>2]|0)!=0):0)e=7;else e=8}else if(!(c[c[g>>2]>>2]&(c[c[g>>2]>>2]|0)-1)){c[e>>2]=Ew(c[j>>2]|0,c[(c[g>>2]|0)+4>>2]|0,(c[c[g>>2]>>2]<<1)*20|0,0)|0;if(!(c[e>>2]|0))e=8;else{c[(c[g>>2]|0)+4>>2]=c[e>>2];e=7}}else e=7;if((e|0)==7){j=c[g>>2]|0;m=c[j>>2]|0;c[j>>2]=m+1;c[k>>2]=(c[(c[g>>2]|0)+4>>2]|0)+(m*20|0);m=c[k>>2]|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[c[k>>2]>>2]=c[h>>2];c[f>>2]=c[g>>2];m=c[f>>2]|0;i=l;return m|0}else if((e|0)==8){Zu(c[j>>2]|0,c[h>>2]|0);Vu(c[j>>2]|0,c[g>>2]|0);c[f>>2]=0;m=c[f>>2]|0;i=l;return m|0}return 0}function Hv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;if(!(c[g>>2]|0)){i=l;return}c[k>>2]=(c[(c[g>>2]|0)+4>>2]|0)+(((c[c[g>>2]>>2]|0)-1|0)*20|0);a=Iw(c[c[f>>2]>>2]|0,c[c[h>>2]>>2]|0,c[(c[h>>2]|0)+4>>2]|0,0)|0;c[(c[k>>2]|0)+4>>2]=a;if(!(c[j>>2]|0)){i=l;return}if(!(c[(c[k>>2]|0)+4>>2]|0)){i=l;return}Jw(c[(c[k>>2]|0)+4>>2]|0)|0;i=l;return}function Iv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;k=j+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[k>>2]=a;c[e>>2]=b;c[f>>2]=d;c[g>>2]=c[c[k>>2]>>2];if(!(c[e>>2]|0)){i=j;return}c[h>>2]=(c[(c[e>>2]|0)+4>>2]|0)+(((c[c[e>>2]>>2]|0)-1|0)*20|0);Sf(c[g>>2]|0,c[(c[h>>2]|0)+8>>2]|0);k=(c[(c[f>>2]|0)+8>>2]|0)-(c[(c[f>>2]|0)+4>>2]|0)|0;k=Iw(c[g>>2]|0,c[(c[f>>2]|0)+4>>2]|0,k,((k|0)<0)<<31>>31)|0;c[(c[h>>2]|0)+8>>2]=k;i=j;return}function Jv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;f=j+16|0;g=j+12|0;e=j+8|0;h=j;c[f>>2]=a;c[g>>2]=b;c[e>>2]=d;c[h>>2]=c[e>>2];if(c[e>>2]|0)e=If(c[e>>2]|0)|0;else e=0;c[h+4>>2]=e;h=cz(c[f>>2]|0,c[g>>2]|0,h,0)|0;i=j;return h|0}function Kv(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;if(!(c[d>>2]|0)){i=f;return}c[e>>2]=(c[c[d>>2]>>2]|0)-1;while(1){if((c[e>>2]|0)<=0)break;a[(c[d>>2]|0)+8+((c[e>>2]|0)*72|0)+36>>0]=a[(c[d>>2]|0)+8+(((c[e>>2]|0)-1|0)*72|0)+36>>0]|0;c[e>>2]=(c[e>>2]|0)+-1}a[(c[d>>2]|0)+8+36>>0]=0;i=f;return}function Lv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;if(!(c[g>>2]|0)){i=k;return}if((c[c[g>>2]>>2]|0)<=0){i=k;return}c[j>>2]=(c[g>>2]|0)+8+(((c[c[g>>2]>>2]|0)-1|0)*72|0);if((c[(c[h>>2]|0)+4>>2]|0)==1?(c[c[h>>2]>>2]|0)==0:0){b=(c[j>>2]|0)+36+1|0;a[b>>0]=a[b>>0]&-2|1;i=k;return}b=Dw(c[c[f>>2]>>2]|0,c[h>>2]|0)|0;c[(c[j>>2]|0)+64>>2]=b;b=(c[j>>2]|0)+36+1|0;a[b>>0]=a[b>>0]&-3|((c[(c[j>>2]|0)+64>>2]|0)!=0&1)<<1&255;i=k;return}function Mv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;if(c[g>>2]|0){c[j>>2]=(c[g>>2]|0)+8+(((c[c[g>>2]>>2]|0)-1|0)*72|0);c[(c[j>>2]|0)+64>>2]=c[h>>2];b=(c[j>>2]|0)+36+1|0;a[b>>0]=a[b>>0]&-5|4;i=k;return}else{Vu(c[c[f>>2]>>2]|0,c[h>>2]|0);i=k;return}}function Nv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+24|0;h=o+20|0;j=o+16|0;k=o+12|0;l=o+8|0;m=o+4|0;n=o;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;do if(!(c[j>>2]|0)){c[j>>2]=Fw(c[h>>2]|0,80,0)|0;if(c[j>>2]|0){c[(c[j>>2]|0)+4>>2]=1;c[c[j>>2]>>2]=0;break}c[g>>2]=0;n=c[g>>2]|0;i=o;return n|0}while(0);c[j>>2]=UF(c[h>>2]|0,c[j>>2]|0,1,c[c[j>>2]>>2]|0)|0;if(a[(c[h>>2]|0)+65>>0]|0){Yu(c[h>>2]|0,c[j>>2]|0);c[g>>2]=0;n=c[g>>2]|0;i=o;return n|0}c[m>>2]=(c[j>>2]|0)+8+(((c[c[j>>2]>>2]|0)-1|0)*72|0);if((c[l>>2]|0)!=0?(c[c[l>>2]>>2]|0)==0:0)c[l>>2]=0;if(c[l>>2]|0){c[n>>2]=c[l>>2];c[l>>2]=c[k>>2];c[k>>2]=c[n>>2]}n=Dw(c[h>>2]|0,c[k>>2]|0)|0;c[(c[m>>2]|0)+8>>2]=n;n=Dw(c[h>>2]|0,c[l>>2]|0)|0;c[(c[m>>2]|0)+4>>2]=n;c[g>>2]=c[j>>2];n=c[g>>2]|0;i=o;return n|0}function Ov(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=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;u=i;i=i+80|0;r=u+16|0;q=u;g=u+64|0;h=u+60|0;j=u+56|0;k=u+52|0;o=u+48|0;l=u+36|0;p=u+32|0;m=u+28|0;n=u+24|0;s=u+20|0;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[o>>2]=0;c[l>>2]=c[h>>2];c[l+4>>2]=c[j>>2];c[l+8>>2]=c[k>>2];c[m>>2]=0;while(1){if((c[m>>2]|0)>=3)break;if(!(c[l+(c[m>>2]<<2)>>2]|0))break;c[p>>2]=c[l+(c[m>>2]<<2)>>2];c[n>>2]=0;while(1){if((c[n>>2]|0)>=7)break;if((c[(c[p>>2]|0)+4>>2]|0)==(d[36199+((c[n>>2]|0)*3|0)+1>>0]|0|0)?(zd(c[c[p>>2]>>2]|0,36220+(d[36199+((c[n>>2]|0)*3|0)>>0]|0)|0,c[(c[p>>2]|0)+4>>2]|0)|0)==0:0){t=8;break}c[n>>2]=(c[n>>2]|0)+1}if((t|0)==8){t=0;c[o>>2]=c[o>>2]|(d[36199+((c[n>>2]|0)*3|0)+2>>0]|0)}if((c[n>>2]|0)>=7){t=11;break}c[m>>2]=(c[m>>2]|0)+1}if((t|0)==11)c[o>>2]=c[o>>2]|64;if((c[o>>2]&33|0)!=33?(c[o>>2]&64|0)==0:0){if(!(c[o>>2]&32)){t=c[o>>2]|0;i=u;return t|0}if((c[o>>2]&24|0)==8){t=c[o>>2]|0;i=u;return t|0}Ah(c[g>>2]|0,36300,r);c[o>>2]=1;t=c[o>>2]|0;i=u;return t|0}c[s>>2]=36254;if(!(c[k>>2]|0))c[s>>2]=(c[s>>2]|0)+1;t=c[g>>2]|0;a=c[j>>2]|0;r=c[s>>2]|0;s=c[k>>2]|0;c[q>>2]=c[h>>2];c[q+4>>2]=a;c[q+8>>2]=r;c[q+12>>2]=s;Ah(t,36256,q);c[o>>2]=1;t=c[o>>2]|0;i=u;return t|0}function Pv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=b;c[f>>2]=d;if((c[e>>2]|0)==0|(c[f>>2]|0)<0){i=g;return}a[(c[(c[e>>2]|0)+4>>2]|0)+(((c[c[e>>2]>>2]|0)-1|0)*20|0)+12>>0]=c[f>>2];i=g;return}function Qv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+4|0;g=j;h=j+8|0;c[f>>2]=b;c[g>>2]=d;a[h>>0]=e;if(!(c[g>>2]|0)){i=j;return}c[(c[g>>2]|0)+4>>2]=c[(c[f>>2]|0)+536>>2];c[(c[f>>2]|0)+536>>2]=c[g>>2];if(!(a[h>>0]|0)){i=j;return}c[(c[f>>2]|0)+540>>2]=c[g>>2];i=j;return}function Rv(f,g,h){f=f|0;g=g|0;h=h|0;var 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,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;Y=i;i=i+192|0;H=Y+180|0;I=Y+176|0;J=Y+172|0;X=Y+168|0;V=Y+164|0;t=Y+160|0;N=Y+156|0;G=Y+152|0;T=Y+148|0;n=Y+144|0;O=Y+140|0;Q=Y+136|0;o=Y+132|0;M=Y+128|0;W=Y+120|0;r=Y+88|0;l=Y+84|0;S=Y+80|0;q=Y+76|0;z=Y+72|0;w=Y+64|0;K=Y+60|0;U=Y+56|0;m=Y+52|0;p=Y+188|0;B=Y+48|0;D=Y+186|0;P=Y+44|0;C=Y+40|0;v=Y+36|0;L=Y+32|0;j=Y+28|0;R=Y+24|0;E=Y+20|0;x=Y+16|0;s=Y+184|0;k=Y+12|0;F=Y+8|0;y=Y+4|0;A=Y;c[H>>2]=f;c[I>>2]=g;c[J>>2]=h;c[O>>2]=0;c[Q>>2]=0;c[S>>2]=-1;c[K>>2]=0;c[m>>2]=0;b[p>>1]=1;c[P>>2]=0;c[C>>2]=0;c[v>>2]=0;c[L>>2]=0;c[j>>2]=0;c[W>>2]=0;c[W+4>>2]=0;c[M>>2]=c[c[H>>2]>>2];a:do if(((c[(c[H>>2]|0)+68>>2]|0)==0?(d[(c[M>>2]|0)+65>>0]|0)==0:0)?(c[V>>2]=DB(c[H>>2]|0,c[I>>2]|0)|0,(c[V>>2]|0)!=0):0){c[E>>2]=sC(c[H>>2]|0,c[V>>2]|0,109,0,0)|0;c[R>>2]=(c[(c[V>>2]|0)+12>>2]|0)!=0&1;if(c[E>>2]|0)f=1;else f=(DE(c[H>>2]|0,c[V>>2]|0,0,0)|0)!=0;c[x>>2]=f&1;if(((zx(c[H>>2]|0,c[V>>2]|0)|0)==0?(tC(c[H>>2]|0,c[V>>2]|0,(c[E>>2]|0)!=0?1:0)|0)==0:0)?(c[l>>2]=Dh(c[M>>2]|0,c[(c[V>>2]|0)+64>>2]|0)|0,c[t>>2]=c[(c[(c[M>>2]|0)+16>>2]|0)+(c[l>>2]<<4)>>2],c[q>>2]=Mw(c[H>>2]|0,9,c[c[V>>2]>>2]|0,0,c[t>>2]|0)|0,(c[q>>2]|0)!=1):0){h=(c[H>>2]|0)+72|0;t=c[h>>2]|0;c[h>>2]=t+1;c[(c[I>>2]|0)+8+44>>2]=t;c[n>>2]=t;c[o>>2]=0;c[T>>2]=c[(c[V>>2]|0)+8>>2];while(1){if(!(c[T>>2]|0))break;t=(c[H>>2]|0)+72|0;c[t>>2]=(c[t>>2]|0)+1;c[T>>2]=c[(c[T>>2]|0)+20>>2];c[o>>2]=(c[o>>2]|0)+1}if(c[R>>2]|0)PF(c[H>>2]|0,W,c[c[V>>2]>>2]|0);c[X>>2]=Pw(c[H>>2]|0)|0;if(c[X>>2]|0){if(!(d[(c[H>>2]|0)+18>>0]|0))uC(c[X>>2]|0);ax(c[H>>2]|0,1,c[l>>2]|0);if(c[R>>2]|0){QF(c[H>>2]|0,c[V>>2]|0,c[J>>2]|0,c[n>>2]|0);t=c[n>>2]|0;c[Q>>2]=t;c[O>>2]=t}c[r>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[r+12>>2]=0;c[r+16>>2]=0;c[r+20>>2]=0;c[r+24>>2]=0;c[r+28>>2]=0;c[r>>2]=c[H>>2];c[r+4>>2]=c[I>>2];if(!(fy(r,c[J>>2]|0)|0)){if(c[(c[M>>2]|0)+24>>2]&128){r=(c[H>>2]|0)+76|0;t=(c[r>>2]|0)+1|0;c[r>>2]=t;c[S>>2]=t;Rw(c[X>>2]|0,22,0,c[S>>2]|0)|0}b:do if(!((c[q>>2]|0)==0&(c[J>>2]|0)==0^1|(c[x>>2]|0)!=0)?(d[(c[V>>2]|0)+42>>0]&16|0)==0:0){yz(c[H>>2]|0,c[l>>2]|0,c[(c[V>>2]|0)+28>>2]|0,1,c[c[V>>2]>>2]|0);if(!(d[(c[V>>2]|0)+42>>0]&32))Uw(c[X>>2]|0,119,c[(c[V>>2]|0)+28>>2]|0,c[l>>2]|0,c[S>>2]|0,c[c[V>>2]>>2]|0,-2)|0;c[T>>2]=c[(c[V>>2]|0)+8>>2];while(1){if(!(c[T>>2]|0))break b;Rw(c[X>>2]|0,119,c[(c[T>>2]|0)+44>>2]|0,c[l>>2]|0)|0;c[T>>2]=c[(c[T>>2]|0)+20>>2]}}else u=29;while(0);c:do if((u|0)==29){b[s>>1]=12;b[s>>1]=e[s>>1]|((c[x>>2]|0)!=0?0:8192);if(!(d[(c[V>>2]|0)+42>>0]&32)){c[U>>2]=0;b[p>>1]=1;t=(c[H>>2]|0)+76|0;u=(c[t>>2]|0)+1|0;c[t>>2]=u;c[C>>2]=u;Rw(c[X>>2]|0,25,0,c[C>>2]|0)|0}else{c[U>>2]=Ej(c[V>>2]|0)|0;b[p>>1]=b[(c[U>>2]|0)+50>>1]|0;c[m>>2]=(c[(c[H>>2]|0)+76>>2]|0)+1;t=(c[H>>2]|0)+76|0;c[t>>2]=(c[t>>2]|0)+(b[p>>1]|0);t=(c[H>>2]|0)+72|0;u=c[t>>2]|0;c[t>>2]=u+1;c[P>>2]=u;c[j>>2]=Rw(c[X>>2]|0,57,c[P>>2]|0,b[p>>1]|0)|0;Az(c[H>>2]|0,c[U>>2]|0)}c[G>>2]=RC(c[H>>2]|0,c[I>>2]|0,c[J>>2]|0,0,0,b[s>>1]|0,(c[n>>2]|0)+1|0)|0;if(!(c[G>>2]|0))break a;c[z>>2]=SF(c[G>>2]|0,w)|0;if(c[(c[M>>2]|0)+24>>2]&128)Rw(c[X>>2]|0,37,c[S>>2]|0,1)|0;do if(c[U>>2]|0){c[N>>2]=0;while(1){if((c[N>>2]|0)>=(b[p>>1]|0))break;tA(c[X>>2]|0,c[V>>2]|0,c[n>>2]|0,b[(c[(c[U>>2]|0)+4>>2]|0)+(c[N>>2]<<1)>>1]|0,(c[m>>2]|0)+(c[N>>2]|0)|0);c[N>>2]=(c[N>>2]|0)+1}c[B>>2]=c[m>>2]}else{c[B>>2]=(c[(c[H>>2]|0)+76>>2]|0)+1;c[B>>2]=zA(c[H>>2]|0,c[V>>2]|0,-1,c[n>>2]|0,c[B>>2]|0,0)|0;if((c[B>>2]|0)<=(c[(c[H>>2]|0)+76>>2]|0))break;c[(c[H>>2]|0)+76>>2]=c[B>>2]}while(0);do if(!(c[z>>2]|0))if(c[U>>2]|0){r=(c[H>>2]|0)+76|0;q=(c[r>>2]|0)+1|0;c[r>>2]=q;c[B>>2]=q;b[D>>1]=0;q=c[X>>2]|0;r=c[m>>2]|0;s=b[p>>1]|0;t=c[B>>2]|0;u=dC(c[c[H>>2]>>2]|0,c[U>>2]|0)|0;Uw(q,49,r,s,t,u,b[p>>1]|0)|0;Rw(c[X>>2]|0,110,c[P>>2]|0,c[B>>2]|0)|0;break}else{b[D>>1]=1;Rw(c[X>>2]|0,129,c[C>>2]|0,c[B>>2]|0)|0;break}else{b[D>>1]=b[p>>1]|0;u=(c[o>>2]|0)+2|0;c[K>>2]=Fw(c[M>>2]|0,u,((u|0)<0)<<31>>31)|0;if(!(c[K>>2]|0)){SC(c[G>>2]|0);break a}kR(c[K>>2]|0,1,(c[o>>2]|0)+1|0)|0;a[(c[K>>2]|0)+((c[o>>2]|0)+1)>>0]=0;if((c[w>>2]|0)>=0)a[(c[K>>2]|0)+((c[w>>2]|0)-(c[n>>2]|0))>>0]=0;if((c[w+4>>2]|0)>=0)a[(c[K>>2]|0)+((c[w+4>>2]|0)-(c[n>>2]|0))>>0]=0;if(!(c[j>>2]|0))break;pA(c[X>>2]|0,c[j>>2]|0)|0}while(0);if(c[z>>2]|0)c[v>>2]=Cz(c[X>>2]|0)|0;else SC(c[G>>2]|0);do if(!(c[R>>2]|0)){c[k>>2]=0;if((c[z>>2]|0)==2)c[k>>2]=UA(c[H>>2]|0)|0;gC(c[H>>2]|0,c[V>>2]|0,55,8,c[n>>2]|0,c[K>>2]|0,O,Q)|0;if((c[z>>2]|0)!=2)break;Fz(c[X>>2]|0,c[k>>2]|0)}while(0);do if(!(c[z>>2]|0)){f=c[X>>2]|0;if(c[U>>2]|0){c[L>>2]=xz(f,108,c[P>>2]|0)|0;Rw(c[X>>2]|0,101,c[P>>2]|0,c[B>>2]|0)|0;break}else{c[L>>2]=Vw(f,130,c[C>>2]|0,0,c[B>>2]|0)|0;break}}else{if(d[(c[V>>2]|0)+42>>0]&16)break;if(!(d[(c[K>>2]|0)+((c[O>>2]|0)-(c[n>>2]|0))>>0]|0))break;Eh(c[X>>2]|0,68,c[O>>2]|0,c[v>>2]|0,c[B>>2]|0,b[D>>1]|0)|0}while(0);do if(d[(c[V>>2]|0)+42>>0]&16){c[F>>2]=Ax(c[M>>2]|0,c[V>>2]|0)|0;EC(c[H>>2]|0,c[V>>2]|0);Uw(c[X>>2]|0,12,0,1,c[B>>2]|0,c[F>>2]|0,-10)|0;Fh(c[X>>2]|0,2);Bx(c[H>>2]|0);if((c[z>>2]|0)!=1)break;if(c[(c[H>>2]|0)+416>>2]|0)break;a[(c[H>>2]|0)+20>>0]=0}else{c[y>>2]=(d[(c[H>>2]|0)+18>>0]|0)==0&1;c[A>>2]=-1;do if(!(c[x>>2]|0)){if((c[w+4>>2]|0)==(c[O>>2]|0))break;c[A>>2]=c[w+4>>2]}while(0);FE(c[H>>2]|0,c[V>>2]|0,c[E>>2]|0,c[O>>2]|0,c[Q>>2]|0,c[B>>2]|0,b[D>>1]|0,c[y>>2]&255,10,c[z>>2]&255,c[A>>2]|0)}while(0);do if(!(c[z>>2]|0)){f=c[X>>2]|0;if(c[U>>2]|0){Rw(f,7,c[P>>2]|0,(c[L>>2]|0)+1|0)|0;Fz(c[X>>2]|0,c[L>>2]|0);break}else{Ez(f,c[L>>2]|0)|0;Fz(c[X>>2]|0,c[L>>2]|0);break}}else{Gz(c[X>>2]|0,c[v>>2]|0);SC(c[G>>2]|0)}while(0);if(c[R>>2]|0)break;if(d[(c[V>>2]|0)+42>>0]&16)break;if(!(c[U>>2]|0))xz(c[X>>2]|0,61,c[O>>2]|0)|0;c[N>>2]=0;c[T>>2]=c[(c[V>>2]|0)+8>>2];while(1){if(!(c[T>>2]|0))break c;xz(c[X>>2]|0,61,(c[Q>>2]|0)+(c[N>>2]|0)|0)|0;c[N>>2]=(c[N>>2]|0)+1;c[T>>2]=c[(c[T>>2]|0)+20>>2]}}while(0);if((d[(c[H>>2]|0)+18>>0]|0)==0?(c[(c[H>>2]|0)+420>>2]|0)==0:0)IC(c[H>>2]|0);if(((c[(c[M>>2]|0)+24>>2]&128|0)!=0?(a[(c[H>>2]|0)+18>>0]|0)==0:0)?(c[(c[H>>2]|0)+420>>2]|0)==0:0){Rw(c[X>>2]|0,33,c[S>>2]|0,1)|0;OB(c[X>>2]|0,1);PB(c[X>>2]|0,0,0,36186,0)|0}}}}}while(0);TF(W);Yu(c[M>>2]|0,c[I>>2]|0);Zu(c[M>>2]|0,c[J>>2]|0);Sf(c[M>>2]|0,c[K>>2]|0);i=Y;return}function Sv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;j=k;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[h>>2]=c[(c[c[e>>2]>>2]|0)+88+8>>2];if(!(c[f>>2]|0)){i=k;return}if((c[c[f>>2]>>2]|0)<=(c[h>>2]|0)){i=k;return}d=c[e>>2]|0;c[j>>2]=c[g>>2];Ah(d,36163,j);i=k;return}function Tv(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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,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;oa=i;i=i+256|0;q=oa;X=oa+244|0;Y=oa+240|0;Z=oa+236|0;_=oa+232|0;K=oa+228|0;da=oa+224|0;C=oa+220|0;ka=oa+216|0;ba=oa+212|0;x=oa+208|0;na=oa+204|0;ia=oa+200|0;ja=oa+196|0;v=oa+192|0;t=oa+188|0;ea=oa+184|0;ga=oa+180|0;ca=oa+176|0;L=oa+172|0;aa=oa+168|0;$=oa+164|0;y=oa+254|0;B=oa+253|0;O=oa+252|0;z=oa+160|0;ma=oa+152|0;p=oa+120|0;l=oa+112|0;R=oa+108|0;P=oa+104|0;ha=oa+100|0;W=oa+96|0;H=oa+92|0;S=oa+88|0;G=oa+84|0;D=oa+80|0;fa=oa+76|0;Q=oa+72|0;s=oa+64|0;la=oa+56|0;V=oa+52|0;U=oa+48|0;I=oa+44|0;F=oa+40|0;A=oa+36|0;T=oa+32|0;n=oa+28|0;o=oa+24|0;m=oa+250|0;u=oa+20|0;w=oa+248|0;r=oa+16|0;E=oa+12|0;M=oa+8|0;N=oa+4|0;c[X>>2]=f;c[Y>>2]=g;c[Z>>2]=h;c[_>>2]=j;c[K>>2]=k;c[ba>>2]=0;c[L>>2]=0;c[aa>>2]=0;c[z>>2]=0;c[fa>>2]=0;c[Q>>2]=0;c[la>>2]=0;c[V>>2]=0;c[U>>2]=0;c[I>>2]=0;c[F>>2]=0;c[A>>2]=0;c[T>>2]=0;c[ma>>2]=0;c[ma+4>>2]=0;c[ca>>2]=c[c[X>>2]>>2];if(c[(c[X>>2]|0)+68>>2]|0){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}if(d[(c[ca>>2]|0)+65>>0]|0){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}c[ka>>2]=DB(c[X>>2]|0,c[Y>>2]|0)|0;if(!(c[ka>>2]|0)){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}c[l>>2]=Dh(c[c[X>>2]>>2]|0,c[(c[ka>>2]|0)+64>>2]|0)|0;c[S>>2]=sC(c[X>>2]|0,c[ka>>2]|0,110,c[Z>>2]|0,G)|0;c[H>>2]=(c[(c[ka>>2]|0)+12>>2]|0)!=0&1;if(zx(c[X>>2]|0,c[ka>>2]|0)|0){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}if(tC(c[X>>2]|0,c[ka>>2]|0,c[G>>2]|0)|0){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}g=(c[X>>2]|0)+72|0;j=c[g>>2]|0;c[g>>2]=j+1;c[ea>>2]=j;c[t>>2]=j;c[(c[Y>>2]|0)+8+44>>2]=j;c[ga>>2]=(c[ea>>2]|0)+1;if(!(d[(c[ka>>2]|0)+42>>0]&32))k=0;else k=Ej(c[ka>>2]|0)|0;c[ja>>2]=k;c[v>>2]=0;c[ia>>2]=c[(c[ka>>2]|0)+8>>2];while(1){if(!(c[ia>>2]|0))break;if((c[ja>>2]|0)!=0?(a[(c[ia>>2]|0)+55>>0]&3|0)==2:0){c[ea>>2]=c[(c[X>>2]|0)+72>>2];c[(c[Y>>2]|0)+8+44>>2]=c[ea>>2]}j=(c[X>>2]|0)+72|0;c[j>>2]=(c[j>>2]|0)+1;c[ia>>2]=c[(c[ia>>2]|0)+20>>2];c[v>>2]=(c[v>>2]|0)+1}c[aa>>2]=Fw(c[ca>>2]|0,((b[(c[ka>>2]|0)+34>>1]|0)+(c[v>>2]|0)<<2)+(c[v>>2]|0)+2|0,0)|0;if(!(c[aa>>2]|0)){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}c[L>>2]=(c[aa>>2]|0)+(b[(c[ka>>2]|0)+34>>1]<<2);c[$>>2]=(c[L>>2]|0)+(c[v>>2]<<2);kR(c[$>>2]|0,1,(c[v>>2]|0)+1|0)|0;a[(c[$>>2]|0)+((c[v>>2]|0)+1)>>0]=0;c[da>>2]=0;while(1){if((c[da>>2]|0)>=(b[(c[ka>>2]|0)+34>>1]|0))break;c[(c[aa>>2]|0)+(c[da>>2]<<2)>>2]=-1;c[da>>2]=(c[da>>2]|0)+1}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;c[p+24>>2]=0;c[p+28>>2]=0;c[p>>2]=c[X>>2];c[p+4>>2]=c[Y>>2];a[y>>0]=0;a[B>>0]=0;c[da>>2]=0;while(1){if((c[da>>2]|0)>=(c[c[Z>>2]>>2]|0)){J=41;break}if(fy(p,c[(c[(c[Z>>2]|0)+4>>2]|0)+((c[da>>2]|0)*20|0)>>2]|0)|0){J=185;break}c[C>>2]=0;while(1){if((c[C>>2]|0)>=(b[(c[ka>>2]|0)+34>>1]|0))break;j=(Td(c[(c[(c[ka>>2]|0)+4>>2]|0)+((c[C>>2]|0)*24|0)>>2]|0,c[(c[(c[Z>>2]|0)+4>>2]|0)+((c[da>>2]|0)*20|0)+4>>2]|0)|0)==0;k=c[C>>2]|0;if(j){J=23;break}c[C>>2]=k+1}if((J|0)==23){J=0;if((k|0)!=(b[(c[ka>>2]|0)+32>>1]|0)){if((c[ja>>2]|0)!=0?(d[(c[(c[ka>>2]|0)+4>>2]|0)+((c[C>>2]|0)*24|0)+23>>0]&1|0)!=0:0)a[y>>0]=1}else{a[B>>0]=1;c[z>>2]=c[(c[(c[Z>>2]|0)+4>>2]|0)+((c[da>>2]|0)*20|0)>>2]}c[(c[aa>>2]|0)+(c[C>>2]<<2)>>2]=c[da>>2]}if((c[C>>2]|0)>=(b[(c[ka>>2]|0)+34>>1]|0)){if(c[ja>>2]|0){J=34;break}if(!(qi(c[(c[(c[Z>>2]|0)+4>>2]|0)+((c[da>>2]|0)*20|0)+4>>2]|0)|0)){J=34;break}c[C>>2]=-1;a[B>>0]=1;c[z>>2]=c[(c[(c[Z>>2]|0)+4>>2]|0)+((c[da>>2]|0)*20|0)>>2]}if((c[C>>2]|0)<0)k=20759;else k=c[(c[(c[ka>>2]|0)+4>>2]|0)+((c[C>>2]|0)*24|0)>>2]|0;c[n>>2]=Mw(c[X>>2]|0,23,c[c[ka>>2]>>2]|0,k,c[(c[(c[ca>>2]|0)+16>>2]|0)+(c[l>>2]<<4)>>2]|0)|0;if((c[n>>2]|0)==1){J=185;break}if((c[n>>2]|0)==2)c[(c[aa>>2]|0)+(c[C>>2]<<2)>>2]=-1;c[da>>2]=(c[da>>2]|0)+1}if((J|0)==34){na=c[X>>2]|0;c[q>>2]=c[(c[(c[Z>>2]|0)+4>>2]|0)+((c[da>>2]|0)*20|0)+4>>2];Ah(na,24991,q);a[(c[X>>2]|0)+17>>0]=1;TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}else if((J|0)==41){a[O>>0]=(d[B>>0]|0)+(d[y>>0]|0);n=(d[(c[ka>>2]|0)+42>>0]&16|0)!=0;q=(c[Y>>2]|0)+8+56|0;c[q>>2]=n?-1:0;c[q+4>>2]=n?-1:0;c[P>>2]=DE(c[X>>2]|0,c[ka>>2]|0,c[aa>>2]|0,d[O>>0]|0)|0;c[C>>2]=0;c[ia>>2]=c[(c[ka>>2]|0)+8>>2];while(1){if(!(c[ia>>2]|0))break;a:do if((!((d[O>>0]|0)!=0|(c[P>>2]|0)!=0)?(c[(c[ia>>2]|0)+36>>2]|0)==0:0)?(c[ia>>2]|0)!=(c[ja>>2]|0):0){c[o>>2]=0;c[da>>2]=0;while(1){if((c[da>>2]|0)>=(e[(c[ia>>2]|0)+50>>1]|0))break a;b[m>>1]=b[(c[(c[ia>>2]|0)+4>>2]|0)+(c[da>>2]<<1)>>1]|0;if((b[m>>1]|0)<0)break;if((c[(c[aa>>2]|0)+(b[m>>1]<<2)>>2]|0)>=0)break;c[da>>2]=(c[da>>2]|0)+1}n=(c[X>>2]|0)+76|0;q=(c[n>>2]|0)+1|0;c[n>>2]=q;c[o>>2]=q}else J=46;while(0);if((J|0)==46){J=0;n=(c[X>>2]|0)+76|0;q=(c[n>>2]|0)+1|0;c[n>>2]=q;c[o>>2]=q}if(!(c[o>>2]|0))a[(c[$>>2]|0)+((c[C>>2]|0)+1)>>0]=0;c[(c[L>>2]|0)+(c[C>>2]<<2)>>2]=c[o>>2];c[ia>>2]=c[(c[ia>>2]|0)+20>>2];c[C>>2]=(c[C>>2]|0)+1}c[na>>2]=Pw(c[X>>2]|0)|0;if(!(c[na>>2]|0)){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}if(!(d[(c[X>>2]|0)+18>>0]|0))uC(c[na>>2]|0);ax(c[X>>2]|0,1,c[l>>2]|0);if(!(d[(c[ka>>2]|0)+42>>0]&16)){q=(c[X>>2]|0)+76|0;o=(c[q>>2]|0)+1|0;c[q>>2]=o;c[A>>2]=o;o=(c[X>>2]|0)+76|0;q=(c[o>>2]|0)+1|0;c[o>>2]=q;c[U>>2]=q;c[V>>2]=q;if((d[y>>0]|0)!=0|(c[S>>2]|0)!=0|(c[P>>2]|0)!=0){c[F>>2]=(c[(c[X>>2]|0)+76>>2]|0)+1;q=(c[X>>2]|0)+76|0;c[q>>2]=(c[q>>2]|0)+(b[(c[ka>>2]|0)+34>>1]|0)}if((d[O>>0]|0)!=0|(c[S>>2]|0)!=0|(c[P>>2]|0)!=0){o=(c[X>>2]|0)+76|0;q=(c[o>>2]|0)+1|0;c[o>>2]=q;c[U>>2]=q}c[I>>2]=(c[(c[X>>2]|0)+76>>2]|0)+1;q=(c[X>>2]|0)+76|0;c[q>>2]=(c[q>>2]|0)+(b[(c[ka>>2]|0)+34>>1]|0)}if(c[H>>2]|0)PF(c[X>>2]|0,ma,c[c[ka>>2]>>2]|0);if(c[H>>2]|0)QF(c[X>>2]|0,c[ka>>2]|0,c[_>>2]|0,c[ea>>2]|0);if(fy(p,c[_>>2]|0)|0){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}if(d[(c[ka>>2]|0)+42>>0]&16){RF(c[X>>2]|0,c[Y>>2]|0,c[ka>>2]|0,c[Z>>2]|0,c[z>>2]|0,c[aa>>2]|0,c[_>>2]|0,c[K>>2]|0);TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}if(!(d[(c[ka>>2]|0)+42>>0]&32)){Vw(c[na>>2]|0,25,0,c[A>>2]|0,c[V>>2]|0)|0;c[x>>2]=RC(c[X>>2]|0,c[Y>>2]|0,c[_>>2]|0,0,0,4,c[ga>>2]|0)|0;if(!(c[x>>2]|0)){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}c[R>>2]=SF(c[x>>2]|0,s)|0;Rw(c[na>>2]|0,103,c[ea>>2]|0,c[V>>2]|0)|0;if(!(c[R>>2]|0))Rw(c[na>>2]|0,129,c[A>>2]|0,c[V>>2]|0)|0;SC(c[x>>2]|0)}else{b[w>>1]=b[(c[ja>>2]|0)+50>>1]|0;c[u>>2]=(c[(c[X>>2]|0)+76>>2]|0)+1;q=(c[X>>2]|0)+76|0;c[q>>2]=(c[q>>2]|0)+(b[w>>1]|0);q=(c[X>>2]|0)+76|0;p=(c[q>>2]|0)+1|0;c[q>>2]=p;c[T>>2]=p;p=(c[X>>2]|0)+72|0;q=c[p>>2]|0;c[p>>2]=q+1;c[fa>>2]=q;Rw(c[na>>2]|0,25,0,c[u>>2]|0)|0;c[r>>2]=Rw(c[na>>2]|0,57,c[fa>>2]|0,b[w>>1]|0)|0;Az(c[X>>2]|0,c[ja>>2]|0);c[x>>2]=RC(c[X>>2]|0,c[Y>>2]|0,c[_>>2]|0,0,0,4,c[ga>>2]|0)|0;if(!(c[x>>2]|0)){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}c[R>>2]=SF(c[x>>2]|0,s)|0;c[da>>2]=0;while(1){if((c[da>>2]|0)>=(b[w>>1]|0))break;tA(c[na>>2]|0,c[ka>>2]|0,c[ea>>2]|0,b[(c[(c[ja>>2]|0)+4>>2]|0)+(c[da>>2]<<1)>>1]|0,(c[u>>2]|0)+(c[da>>2]|0)|0);c[da>>2]=(c[da>>2]|0)+1}k=c[na>>2]|0;if(c[R>>2]|0){pA(k,c[r>>2]|0)|0;c[Q>>2]=b[w>>1];c[T>>2]=c[u>>2]}else{p=c[u>>2]|0;q=b[w>>1]|0;r=c[T>>2]|0;u=dC(c[ca>>2]|0,c[ja>>2]|0)|0;Uw(k,49,p,q,r,u,b[w>>1]|0)|0;Rw(c[na>>2]|0,110,c[fa>>2]|0,c[T>>2]|0)|0}SC(c[x>>2]|0)}if((c[(c[ca>>2]|0)+24>>2]&128|0)!=0?(c[(c[X>>2]|0)+420>>2]|0)==0:0){w=(c[X>>2]|0)+76|0;x=(c[w>>2]|0)+1|0;c[w>>2]=x;c[la>>2]=x;Rw(c[na>>2]|0,22,0,c[la>>2]|0)|0}c[ha>>2]=Cz(c[na>>2]|0)|0;if(!(c[H>>2]|0)){b:do if((c[K>>2]|0)==5)kR(c[$>>2]|0,1,(c[v>>2]|0)+1|0)|0;else{c[ia>>2]=c[(c[ka>>2]|0)+8>>2];while(1){if(!(c[ia>>2]|0))break b;if((d[(c[ia>>2]|0)+54>>0]|0)==5)break;c[ia>>2]=c[(c[ia>>2]|0)+20>>2]}kR(c[$>>2]|0,1,(c[v>>2]|0)+1|0)|0}while(0);do if(c[R>>2]|0){if((c[s>>2]|0)>=0)a[(c[$>>2]|0)+((c[s>>2]|0)-(c[t>>2]|0))>>0]=0;if((c[s+4>>2]|0)<0)break;a[(c[$>>2]|0)+((c[s+4>>2]|0)-(c[t>>2]|0))>>0]=0}while(0);gC(c[X>>2]|0,c[ka>>2]|0,55,0,c[t>>2]|0,c[$>>2]|0,0,0)|0}do if(!(c[R>>2]|0)){k=c[na>>2]|0;if(c[ja>>2]|0){c[W>>2]=Cz(k)|0;Rw(c[na>>2]|0,108,c[fa>>2]|0,c[ha>>2]|0)|0;c[ba>>2]=Rw(c[na>>2]|0,101,c[fa>>2]|0,c[T>>2]|0)|0;Eh(c[na>>2]|0,68,c[ea>>2]|0,c[W>>2]|0,c[T>>2]|0,0)|0;break}else{c[W>>2]=Vw(k,130,c[A>>2]|0,c[ha>>2]|0,c[V>>2]|0)|0;Vw(c[na>>2]|0,70,c[ea>>2]|0,c[W>>2]|0,c[V>>2]|0)|0;break}}else{if(!((c[H>>2]|0)!=0?1:(d[(c[$>>2]|0)+((c[ea>>2]|0)-(c[t>>2]|0))>>0]|0)==0))Eh(c[na>>2]|0,68,c[ea>>2]|0,c[ha>>2]|0,c[T>>2]|0,c[Q>>2]|0)|0;c[W>>2]=c[ha>>2];Rw(c[na>>2]|0,76,(c[ja>>2]|0)!=0?c[T>>2]|0:c[V>>2]|0,c[ha>>2]|0)|0}while(0);if(a[B>>0]|0){xA(c[X>>2]|0,c[z>>2]|0,c[U>>2]|0);xz(c[na>>2]|0,38,c[U>>2]|0)|0}do if((d[y>>0]|0)!=0|(c[P>>2]|0)!=0|(c[S>>2]|0)!=0){if(c[P>>2]|0)k=IE(c[X>>2]|0,c[ka>>2]|0)|0;else k=0;c[E>>2]=k;A=HE(c[X>>2]|0,c[S>>2]|0,c[Z>>2]|0,0,3,c[ka>>2]|0,c[K>>2]|0)|0;c[E>>2]=c[E>>2]|A;c[da>>2]=0;while(1){if((c[da>>2]|0)>=(b[(c[ka>>2]|0)+34>>1]|0))break;do if((c[E>>2]|0)==-1)J=120;else{if((c[da>>2]|0)<32?(c[E>>2]&1<>2]|0)!=0:0){J=120;break}if(d[(c[(c[ka>>2]|0)+4>>2]|0)+((c[da>>2]|0)*24|0)+23>>0]&1){J=120;break}Rw(c[na>>2]|0,25,0,(c[F>>2]|0)+(c[da>>2]|0)|0)|0}while(0);if((J|0)==120){J=0;tA(c[na>>2]|0,c[ka>>2]|0,c[ea>>2]|0,c[da>>2]|0,(c[F>>2]|0)+(c[da>>2]|0)|0)}c[da>>2]=(c[da>>2]|0)+1}if(!((d[B>>0]|0)==0&(c[ja>>2]|0)==0))break;Rw(c[na>>2]|0,30,c[V>>2]|0,c[U>>2]|0)|0}while(0);c[D>>2]=HE(c[X>>2]|0,c[S>>2]|0,c[Z>>2]|0,1,1,c[ka>>2]|0,c[K>>2]|0)|0;c[da>>2]=0;while(1){if((c[da>>2]|0)>=(b[(c[ka>>2]|0)+34>>1]|0))break;c:do if((c[da>>2]|0)==(b[(c[ka>>2]|0)+32>>1]|0))Rw(c[na>>2]|0,25,0,(c[I>>2]|0)+(c[da>>2]|0)|0)|0;else{c[C>>2]=c[(c[aa>>2]|0)+(c[da>>2]<<2)>>2];if((c[C>>2]|0)>=0){xA(c[X>>2]|0,c[(c[(c[Z>>2]|0)+4>>2]|0)+((c[C>>2]|0)*20|0)>>2]|0,(c[I>>2]|0)+(c[da>>2]|0)|0);break}do if(!((c[da>>2]|0)>31?1:0==(c[G>>2]&1|0))){if(c[D>>2]&1<>2])break;Rw(c[na>>2]|0,25,0,(c[I>>2]|0)+(c[da>>2]|0)|0)|0;break c}while(0);vD(c[X>>2]|0,c[ka>>2]|0,c[da>>2]|0,c[ea>>2]|0,(c[I>>2]|0)+(c[da>>2]|0)|0)}while(0);c[da>>2]=(c[da>>2]|0)+1}d:do if(c[G>>2]&1){AC(c[na>>2]|0,c[ka>>2]|0,c[I>>2]|0);BC(c[X>>2]|0,c[S>>2]|0,110,c[Z>>2]|0,1,c[ka>>2]|0,c[V>>2]|0,c[K>>2]|0,c[W>>2]|0);k=c[na>>2]|0;h=c[ea>>2]|0;f=c[W>>2]|0;if(c[ja>>2]|0)Eh(k,68,h,f,c[T>>2]|0,c[Q>>2]|0)|0;else Vw(k,70,h,f,c[V>>2]|0)|0;c[da>>2]=0;while(1){if((c[da>>2]|0)>=(b[(c[ka>>2]|0)+34>>1]|0))break d;do if((c[(c[aa>>2]|0)+(c[da>>2]<<2)>>2]|0)<0){if((c[da>>2]|0)==(b[(c[ka>>2]|0)+32>>1]|0))break;tA(c[na>>2]|0,c[ka>>2]|0,c[ea>>2]|0,c[da>>2]|0,(c[I>>2]|0)+(c[da>>2]|0)|0)}while(0);c[da>>2]=(c[da>>2]|0)+1}}while(0);do if(!(c[H>>2]|0)){c[M>>2]=0;c[N>>2]=0;FC(c[X>>2]|0,c[ka>>2]|0,c[L>>2]|0,c[ea>>2]|0,c[ga>>2]|0,c[U>>2]|0,c[V>>2]|0,a[O>>0]|0,c[K>>2]&255,c[W>>2]|0,N,c[aa>>2]|0);if(c[P>>2]|0)GC(c[X>>2]|0,c[ka>>2]|0,c[V>>2]|0,0,c[aa>>2]|0,d[O>>0]|0);if(!((c[N>>2]|0)==0?(d[O>>0]|0)==0:0))J=151;do if((J|0)==151){k=c[na>>2]|0;h=c[ea>>2]|0;if(c[ja>>2]|0){c[M>>2]=Eh(k,68,h,0,c[T>>2]|0,c[Q>>2]|0)|0;break}else{c[M>>2]=Vw(k,70,h,0,c[V>>2]|0)|0;break}}while(0);GE(c[X>>2]|0,c[ka>>2]|0,c[ea>>2]|0,c[ga>>2]|0,c[L>>2]|0,-1);if(!((c[P>>2]|0)==0?!((d[O>>0]|0)!=0|(c[ja>>2]|0)!=0):0))Rw(c[na>>2]|0,95,c[ea>>2]|0,0)|0;if(!((c[N>>2]|0)==0?(d[O>>0]|0)==0:0))Fz(c[na>>2]|0,c[M>>2]|0);if(c[P>>2]|0)GC(c[X>>2]|0,c[ka>>2]|0,0,c[U>>2]|0,c[aa>>2]|0,d[O>>0]|0);HC(c[X>>2]|0,c[ka>>2]|0,c[ea>>2]|0,c[ga>>2]|0,c[U>>2]|0,c[L>>2]|0,1,0,0);if(!(c[P>>2]|0))break;JE(c[X>>2]|0,c[ka>>2]|0,c[Z>>2]|0,c[V>>2]|0,c[aa>>2]|0,d[O>>0]|0)}while(0);do if(c[(c[ca>>2]|0)+24>>2]&128){if(c[(c[X>>2]|0)+420>>2]|0)break;Rw(c[na>>2]|0,37,c[la>>2]|0,1)|0}while(0);BC(c[X>>2]|0,c[S>>2]|0,110,c[Z>>2]|0,2,c[ka>>2]|0,c[V>>2]|0,c[K>>2]|0,c[W>>2]|0);do if(!(c[R>>2]|0)){h=c[na>>2]|0;k=c[W>>2]|0;if(c[ja>>2]|0){Gz(h,k);Rw(c[na>>2]|0,7,c[fa>>2]|0,c[ba>>2]|0)|0;break}else{Ez(h,k)|0;break}}while(0);Gz(c[na>>2]|0,c[ha>>2]|0);c[da>>2]=0;c[ia>>2]=c[(c[ka>>2]|0)+8>>2];while(1){if(!(c[ia>>2]|0))break;if(a[(c[$>>2]|0)+((c[da>>2]|0)+1)>>0]|0)Rw(c[na>>2]|0,61,(c[ga>>2]|0)+(c[da>>2]|0)|0,0)|0;c[ia>>2]=c[(c[ia>>2]|0)+20>>2];c[da>>2]=(c[da>>2]|0)+1}if((c[ea>>2]|0)<(c[ga>>2]|0))Rw(c[na>>2]|0,61,c[ea>>2]|0,0)|0;do if(!(d[(c[X>>2]|0)+18>>0]|0)){if(c[(c[X>>2]|0)+420>>2]|0)break;IC(c[X>>2]|0)}while(0);if(!(c[(c[ca>>2]|0)+24>>2]&128)){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}if(c[(c[X>>2]|0)+420>>2]|0){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}if(a[(c[X>>2]|0)+18>>0]|0){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}Rw(c[na>>2]|0,33,c[la>>2]|0,1)|0;OB(c[na>>2]|0,1);PB(c[na>>2]|0,0,0,36150,0)|0;TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}else if((J|0)==185){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}}function LC(e,f,g,h,j,k,l,m,n){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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,H=0,I=0,J=0,K=0;K=i;i=i+96|0;o=K+84|0;p=K+80|0;q=K+76|0;r=K+72|0;s=K+68|0;t=K+64|0;u=K+60|0;v=K+56|0;w=K+52|0;x=K+48|0;J=K+44|0;z=K+40|0;C=K+36|0;E=K+32|0;B=K+28|0;H=K+24|0;F=K+20|0;I=K+16|0;G=K+12|0;A=K+8|0;y=K+4|0;D=K;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=j;c[t>>2]=k;c[u>>2]=l;c[v>>2]=m;c[w>>2]=n;c[J>>2]=Pw(c[o>>2]|0)|0;c[z>>2]=(c[(c[o>>2]|0)+72>>2]|0)-1;c[C>>2]=Cz(c[J>>2]|0)|0;if((c[v>>2]|0)<0)Rw(c[J>>2]|0,136,d[(c[s>>2]|0)+24>>0]|0,c[C>>2]|0)|0;c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[(c[s>>2]|0)+20>>2]|0))break;c[E>>2]=(c[(c[t>>2]|0)+(c[x>>2]<<2)>>2]|0)+(c[u>>2]|0)+1;Rw(c[J>>2]|0,76,c[E>>2]|0,c[C>>2]|0)|0;c[x>>2]=(c[x>>2]|0)+1}do if(!(c[w>>2]|0)){if(!(c[r>>2]|0)){c[H>>2]=Wz(c[o>>2]|0)|0;Rw(c[J>>2]|0,31,(c[c[t>>2]>>2]|0)+1+(c[u>>2]|0)|0,c[H>>2]|0)|0;c[B>>2]=Rw(c[J>>2]|0,38,c[H>>2]|0,0)|0;if((c[v>>2]|0)==1?(c[q>>2]|0)==(c[c[s>>2]>>2]|0):0){Vw(c[J>>2]|0,79,c[u>>2]|0,c[C>>2]|0,c[H>>2]|0)|0;Fh(c[J>>2]|0,-112)}zz(c[o>>2]|0,c[z>>2]|0,c[p>>2]|0,c[q>>2]|0,54);Vw(c[J>>2]|0,70,c[z>>2]|0,0,c[H>>2]|0)|0;Ez(c[J>>2]|0,c[C>>2]|0)|0;I=c[J>>2]|0;Fz(I,(Bz(c[J>>2]|0)|0)-2|0);Fz(c[J>>2]|0,c[B>>2]|0); -_z(c[o>>2]|0,c[H>>2]|0);break}c[F>>2]=c[(c[s>>2]|0)+20>>2];c[I>>2]=kA(c[o>>2]|0,c[F>>2]|0)|0;c[G>>2]=Wz(c[o>>2]|0)|0;Vw(c[J>>2]|0,54,c[z>>2]|0,c[(c[r>>2]|0)+44>>2]|0,c[p>>2]|0)|0;Az(c[o>>2]|0,c[r>>2]|0);c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[F>>2]|0))break;Rw(c[J>>2]|0,30,(c[(c[t>>2]|0)+(c[x>>2]<<2)>>2]|0)+1+(c[u>>2]|0)|0,(c[I>>2]|0)+(c[x>>2]|0)|0)|0;c[x>>2]=(c[x>>2]|0)+1}if((c[v>>2]|0)==1?(c[q>>2]|0)==(c[c[s>>2]>>2]|0):0){H=Bz(c[J>>2]|0)|0;c[A>>2]=H+(c[F>>2]|0)+1;c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[F>>2]|0))break;c[y>>2]=(c[(c[t>>2]|0)+(c[x>>2]<<2)>>2]|0)+1+(c[u>>2]|0);c[D>>2]=(b[(c[(c[r>>2]|0)+4>>2]|0)+(c[x>>2]<<1)>>1]|0)+1+(c[u>>2]|0);if((b[(c[(c[r>>2]|0)+4>>2]|0)+(c[x>>2]<<1)>>1]|0)==(b[(c[q>>2]|0)+32>>1]|0))c[D>>2]=c[u>>2];Vw(c[J>>2]|0,78,c[y>>2]|0,c[A>>2]|0,c[D>>2]|0)|0;Fh(c[J>>2]|0,16);c[x>>2]=(c[x>>2]|0)+1}Ez(c[J>>2]|0,c[C>>2]|0)|0}h=c[J>>2]|0;e=c[I>>2]|0;g=c[F>>2]|0;l=c[G>>2]|0;H=dC(c[c[o>>2]>>2]|0,c[r>>2]|0)|0;Uw(h,49,e,g,l,H,c[F>>2]|0)|0;Eh(c[J>>2]|0,69,c[z>>2]|0,c[C>>2]|0,c[G>>2]|0,0)|0;_z(c[o>>2]|0,c[G>>2]|0);nA(c[o>>2]|0,c[I>>2]|0,c[F>>2]|0)}while(0);if((((a[(c[s>>2]|0)+24>>0]|0)==0?(c[(c[c[o>>2]>>2]|0)+24>>2]&16777216|0)==0:0)?(c[(c[o>>2]|0)+416>>2]|0)==0:0)?(a[(c[o>>2]|0)+20>>0]|0)==0:0){bA(c[o>>2]|0,787,2,0,-2,4);H=c[J>>2]|0;I=c[C>>2]|0;Gz(H,I);I=c[J>>2]|0;J=c[z>>2]|0;xz(I,61,J)|0;i=K;return}if((c[v>>2]|0)>0?(d[(c[s>>2]|0)+24>>0]|0)==0:0)Bx(c[o>>2]|0);Rw(c[J>>2]|0,135,d[(c[s>>2]|0)+24>>0]|0,c[v>>2]|0)|0;H=c[J>>2]|0;I=c[C>>2]|0;Gz(H,I);I=c[J>>2]|0;J=c[z>>2]|0;xz(I,61,J)|0;i=K;return}function MC(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;e=j+16|0;k=j+12|0;f=j+8|0;h=j+4|0;g=j;c[k>>2]=a;c[f>>2]=b;b=c[k>>2]|0;if(c[(c[k>>2]|0)+416>>2]|0)b=c[b+416>>2]|0;c[h>>2]=b;do if(c[(c[h>>2]|0)+532>>2]|0){c[g>>2]=c[c[(c[h>>2]|0)+532>>2]>>2];if(!((c[g>>2]|0)==(c[(c[f>>2]|0)+28>>2]|0)?(d[(c[f>>2]|0)+25>>0]|0|0)==7:0)){if((c[g>>2]|0)!=(c[(c[f>>2]|0)+28+4>>2]|0))break;if((d[(c[f>>2]|0)+25+1>>0]|0|0)!=7)break}c[e>>2]=1;k=c[e>>2]|0;i=j;return k|0}while(0);c[e>>2]=0;k=c[e>>2]|0;i=j;return k|0}function NC(a,e,f,g){a=a|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;h=s+32|0;j=s+28|0;k=s+24|0;l=s+20|0;m=s+16|0;n=s+12|0;q=s+8|0;o=s+4|0;p=s;c[j>>2]=a;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=0;a:while(1){if((c[n>>2]|0)>=(c[(c[k>>2]|0)+20>>2]|0)){r=14;break}c[q>>2]=c[(c[k>>2]|0)+36+(c[n>>2]<<3)+4>>2];c[o>>2]=0;while(1){if((c[o>>2]|0)>=(b[(c[j>>2]|0)+34>>1]|0))break;if(!((c[(c[l>>2]|0)+(c[o>>2]<<2)>>2]|0)<0?!((c[m>>2]|0)!=0?(c[o>>2]|0)==(b[(c[j>>2]|0)+32>>1]|0):0):0))r=7;do if((r|0)==7){r=0;c[p>>2]=(c[(c[j>>2]|0)+4>>2]|0)+((c[o>>2]|0)*24|0);f=c[p>>2]|0;if(c[q>>2]|0)if(!(Td(c[f>>2]|0,c[q>>2]|0)|0)){r=9;break a}else break;else if(d[f+23>>0]&1){r=11;break a}else break}while(0);c[o>>2]=(c[o>>2]|0)+1}c[n>>2]=(c[n>>2]|0)+1}if((r|0)==9){c[h>>2]=1;r=c[h>>2]|0;i=s;return r|0}else if((r|0)==11){c[h>>2]=1;r=c[h>>2]|0;i=s;return r|0}else if((r|0)==14){c[h>>2]=0;r=c[h>>2]|0;i=s;return r|0}return 0}function OC(a,f,g,h,j,k,l,m){a=a|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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,O=0;O=i;i=i+144|0;n=O+128|0;o=O+124|0;p=O+120|0;q=O+116|0;r=O+112|0;s=O+108|0;t=O+104|0;u=O+100|0;v=O+96|0;w=O+92|0;K=O+88|0;L=O+56|0;J=O+48|0;z=O+44|0;M=O+40|0;D=O+36|0;H=O+32|0;B=O+28|0;x=O+134|0;N=O+24|0;F=O+20|0;E=O+16|0;I=O+12|0;C=O+8|0;A=O+4|0;G=O;y=O+132|0;c[n>>2]=a;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=j;c[s>>2]=k;c[t>>2]=l;c[u>>2]=m;c[v>>2]=c[c[n>>2]>>2];c[K>>2]=0;c[z>>2]=0;c[M>>2]=Pw(c[n>>2]|0)|0;if((c[u>>2]|0)<0)c[z>>2]=Rw(c[M>>2]|0,136,d[(c[r>>2]|0)+24>>0]|0,0)|0;c[w>>2]=0;while(1){if((c[w>>2]|0)>=(c[(c[r>>2]|0)+20>>2]|0))break;if(c[q>>2]|0)k=b[(c[(c[q>>2]|0)+4>>2]|0)+(c[w>>2]<<1)>>1]|0;else k=-1;b[x>>1]=k;c[D>>2]=PC(c[n>>2]|0,c[p>>2]|0,c[t>>2]|0,b[x>>1]|0)|0;if(c[s>>2]|0)k=c[(c[s>>2]|0)+(c[w>>2]<<2)>>2]|0;else k=c[(c[r>>2]|0)+36>>2]|0;b[x>>1]=k;c[N>>2]=c[(c[(c[c[r>>2]>>2]|0)+4>>2]|0)+((b[x>>1]|0)*24|0)>>2];c[H>>2]=Jv(c[v>>2]|0,27,c[N>>2]|0)|0;c[B>>2]=rv(c[n>>2]|0,79,c[D>>2]|0,c[H>>2]|0,0)|0;c[K>>2]=az(c[v>>2]|0,c[K>>2]|0,c[B>>2]|0)|0;c[w>>2]=(c[w>>2]|0)+1}if((c[u>>2]|0)>0?(c[p>>2]|0)==(c[c[r>>2]>>2]|0):0){if(!(d[(c[p>>2]|0)+42>>0]&32)){c[E>>2]=PC(c[n>>2]|0,c[p>>2]|0,c[t>>2]|0,-1)|0;c[I>>2]=QC(c[v>>2]|0,c[p>>2]|0,c[(c[o>>2]|0)+8+44>>2]|0,-1)|0;c[F>>2]=rv(c[n>>2]|0,78,c[E>>2]|0,c[I>>2]|0,0)|0}else{c[A>>2]=0;c[G>>2]=Ej(c[p>>2]|0)|0;c[w>>2]=0;while(1){if((c[w>>2]|0)>=(e[(c[G>>2]|0)+50>>1]|0))break;b[y>>1]=b[(c[(c[q>>2]|0)+4>>2]|0)+(c[w>>2]<<1)>>1]|0;c[E>>2]=PC(c[n>>2]|0,c[p>>2]|0,c[t>>2]|0,b[y>>1]|0)|0;c[I>>2]=QC(c[v>>2]|0,c[p>>2]|0,c[(c[o>>2]|0)+8+44>>2]|0,b[y>>1]|0)|0;c[C>>2]=rv(c[n>>2]|0,79,c[E>>2]|0,c[I>>2]|0,0)|0;c[A>>2]=az(c[v>>2]|0,c[A>>2]|0,c[C>>2]|0)|0;c[w>>2]=(c[w>>2]|0)+1}c[F>>2]=rv(c[n>>2]|0,19,c[A>>2]|0,0,0)|0}c[K>>2]=az(c[v>>2]|0,c[K>>2]|0,c[F>>2]|0)|0}c[L>>2]=0;c[L+4>>2]=0;c[L+8>>2]=0;c[L+12>>2]=0;c[L+16>>2]=0;c[L+20>>2]=0;c[L+24>>2]=0;c[L+28>>2]=0;c[L+4>>2]=c[o>>2];c[L>>2]=c[n>>2];fy(L,c[K>>2]|0)|0;c[J>>2]=RC(c[n>>2]|0,c[o>>2]|0,c[K>>2]|0,0,0,0,0)|0;Rw(c[M>>2]|0,135,d[(c[r>>2]|0)+24>>0]|0,c[u>>2]|0)|0;if(c[J>>2]|0)SC(c[J>>2]|0);Zu(c[v>>2]|0,c[K>>2]|0);if(!(c[z>>2]|0)){i=O;return}Fz(c[M>>2]|0,c[z>>2]|0);i=O;return}function PC(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;h=q+24|0;j=q+20|0;k=q+16|0;l=q+28|0;o=q+12|0;n=q+8|0;p=q+4|0;m=q;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;b[l>>1]=g;c[m>>2]=c[c[h>>2]>>2];c[o>>2]=Jv(c[m>>2]|0,157,0)|0;if(!(c[o>>2]|0)){p=c[o>>2]|0;i=q;return p|0}if((b[l>>1]|0)>=0?(b[l>>1]|0)!=(b[(c[j>>2]|0)+32>>1]|0):0){c[n>>2]=(c[(c[j>>2]|0)+4>>2]|0)+((b[l>>1]|0)*24|0);c[(c[o>>2]|0)+28>>2]=(c[k>>2]|0)+(b[l>>1]|0)+1;a[(c[o>>2]|0)+1>>0]=a[(c[n>>2]|0)+21>>0]|0;c[p>>2]=c[(c[n>>2]|0)+16>>2];if(!(c[p>>2]|0))c[p>>2]=c[c[(c[m>>2]|0)+8>>2]>>2];c[o>>2]=By(c[h>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;p=c[o>>2]|0;i=q;return p|0}c[(c[o>>2]|0)+28>>2]=c[k>>2];a[(c[o>>2]|0)+1>>0]=68;p=c[o>>2]|0;i=q;return p|0}function QC(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;m=l+12|0;g=l+8|0;h=l+4|0;j=l+16|0;k=l;c[m>>2]=a;c[g>>2]=d;c[h>>2]=e;b[j>>1]=f;c[k>>2]=Jv(c[m>>2]|0,152,0)|0;if(!(c[k>>2]|0)){m=c[k>>2]|0;i=l;return m|0}c[(c[k>>2]|0)+44>>2]=c[g>>2];c[(c[k>>2]|0)+28>>2]=c[h>>2];b[(c[k>>2]|0)+32>>1]=b[j>>1]|0;m=c[k>>2]|0;i=l;return m|0}function RC(f,g,h,j,k,l,m){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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,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;ca=i;i=i+192|0;n=ca+24|0;q=ca+180|0;r=ca+176|0;s=ca+172|0;o=ca+168|0;t=ca+164|0;u=ca+160|0;v=ca+184|0;w=ca+156|0;p=ca+152|0;I=ca+148|0;W=ca+144|0;_=ca+140|0;J=ca+16|0;Y=ca+120|0;R=ca+116|0;P=ca+112|0;Q=ca+108|0;G=ca+104|0;B=ca+100|0;X=ca+96|0;z=ca+186|0;Z=ca+8|0;U=ca+92|0;M=ca+88|0;$=ca+84|0;A=ca+80|0;S=ca+76|0;E=ca+72|0;T=ca+68|0;V=ca+64|0;D=ca+60|0;K=ca+56|0;y=ca;H=ca+52|0;N=ca+48|0;F=ca+44|0;L=ca+40|0;O=ca+36|0;x=ca+32|0;aa=ca+28|0;c[r>>2]=f;c[s>>2]=g;c[o>>2]=h;c[t>>2]=j;c[u>>2]=k;b[v>>1]=l;c[w>>2]=m;c[_>>2]=c[(c[r>>2]|0)+8>>2];a[z>>0]=0;c[B>>2]=c[c[r>>2]>>2];c[Y>>2]=0;c[Y+4>>2]=0;c[Y+8>>2]=0;c[Y+12>>2]=0;c[Y+16>>2]=0;if((c[t>>2]|0)!=0?(c[c[t>>2]>>2]|0)>=64:0)c[t>>2]=0;c[Y+8>>2]=c[t>>2];if(e[(c[B>>2]|0)+60>>1]&32)b[v>>1]=e[v>>1]&-1025;if((c[c[s>>2]>>2]|0)>64){ba=c[r>>2]|0;c[n>>2]=64;Ah(ba,35216,n);c[q>>2]=0;ba=c[q>>2]|0;i=ca;return ba|0}if(e[v>>1]&64)m=1;else m=c[c[s>>2]>>2]|0;c[I>>2]=m;c[p>>2]=816+(((c[I>>2]|0)-1|0)*80|0)+7&-8;c[W>>2]=ph(c[B>>2]|0,(c[p>>2]|0)+72|0,0)|0;a:do if(!(a[(c[B>>2]|0)+65>>0]|0)){c[(c[W>>2]|0)+60+4>>2]=-1;c[(c[W>>2]|0)+60>>2]=-1;a[(c[W>>2]|0)+41>>0]=c[I>>2];c[c[W>>2]>>2]=c[r>>2];c[(c[W>>2]|0)+4>>2]=c[s>>2];c[(c[W>>2]|0)+8>>2]=c[t>>2];c[(c[W>>2]|0)+12>>2]=c[u>>2];l=Cz(c[_>>2]|0)|0;c[(c[W>>2]|0)+48>>2]=l;c[(c[W>>2]|0)+52>>2]=l;b[(c[W>>2]|0)+34>>1]=b[v>>1]|0;c[(c[W>>2]|0)+56>>2]=c[(c[r>>2]|0)+428>>2];c[R>>2]=(c[W>>2]|0)+68;c[Y>>2]=c[W>>2];c[Y+4>>2]=(c[W>>2]|0)+328;c[Y+12>>2]=(c[W>>2]|0)+(c[p>>2]|0);ZC(c[Y+12>>2]|0);c[c[R>>2]>>2]=0;aD((c[W>>2]|0)+328|0,c[W>>2]|0);bD((c[W>>2]|0)+328|0,c[o>>2]|0,72);c[G>>2]=0;while(1){m=(c[I>>2]|0)==0;if((c[G>>2]|0)>=(c[(c[Y+4>>2]|0)+12>>2]|0))break;if(!(!m?(dB(c[(c[(c[Y+4>>2]|0)+20>>2]|0)+((c[G>>2]|0)*48|0)>>2]|0)|0)==0:0)){LA(c[r>>2]|0,c[(c[(c[Y+4>>2]|0)+20>>2]|0)+((c[G>>2]|0)*48|0)>>2]|0,c[(c[W>>2]|0)+52>>2]|0,16);p=(c[(c[Y+4>>2]|0)+20>>2]|0)+((c[G>>2]|0)*48|0)+20|0;b[p>>1]=e[p>>1]|4}c[G>>2]=(c[G>>2]|0)+1}if(m){if(c[t>>2]|0)a[(c[W>>2]|0)+36>>0]=c[c[t>>2]>>2];if(e[v>>1]&1024)a[(c[W>>2]|0)+40>>0]=1}c[G>>2]=0;while(1){if((c[G>>2]|0)>=(c[c[s>>2]>>2]|0))break;cD(c[R>>2]|0,c[(c[s>>2]|0)+8+((c[G>>2]|0)*72|0)+44>>2]|0);dD(c[r>>2]|0,(c[s>>2]|0)+8+((c[G>>2]|0)*72|0)|0,(c[W>>2]|0)+328|0);c[G>>2]=(c[G>>2]|0)+1}eD(c[s>>2]|0,(c[W>>2]|0)+328|0);if(!(a[(c[B>>2]|0)+65>>0]|0)){do if(e[v>>1]&1024){if(fD(c[r>>2]|0,c[s>>2]|0,(c[W>>2]|0)+328|0,c[u>>2]|0)|0){a[(c[W>>2]|0)+40>>0]=1;break}if(!(c[t>>2]|0)){t=(c[W>>2]|0)+34|0;b[t>>1]=e[t>>1]|512;c[(c[W>>2]|0)+8>>2]=c[u>>2]}}while(0);if(!((c[I>>2]|0)==1?(gD(Y)|0)!=0:0)){c[X>>2]=hD(Y)|0;if(c[X>>2]|0)break;iD(c[W>>2]|0,0)|0;if(a[(c[B>>2]|0)+65>>0]|0)break;if((c[(c[W>>2]|0)+8>>2]|0)!=0?(iD(c[W>>2]|0,(b[(c[W>>2]|0)+32>>1]|0)+1&65535)|0,(a[(c[B>>2]|0)+65>>0]|0)!=0):0)break}if((c[(c[W>>2]|0)+8>>2]|0)==0?(c[(c[B>>2]|0)+24>>2]&131072|0)!=0:0){X=(c[W>>2]|0)+24|0;c[X>>2]=-1;c[X+4>>2]=-1}if((c[(c[r>>2]|0)+68>>2]|0)==0?(d[(c[B>>2]|0)+65>>0]|0)==0:0){b:do if(((c[u>>2]|0)!=0?(d[(c[W>>2]|0)+41>>0]|0)>=2:0)?(e[(c[B>>2]|0)+60>>1]&1024|0)==0:0){u=jD(c[R>>2]|0,c[u>>2]|0)|0;X=Z;c[X>>2]=u;c[X+4>>2]=C;if(c[Y+8>>2]|0){u=jD(c[R>>2]|0,c[Y+8>>2]|0)|0;t=Z;R=c[t+4>>2]|C;X=Z;c[X>>2]=c[t>>2]|u;c[X+4>>2]=R}while(1){if((d[(c[W>>2]|0)+41>>0]|0)<2)break b;c[Q>>2]=c[(c[W>>2]|0)+736+(((d[(c[W>>2]|0)+41>>0]|0)-1|0)*80|0)+64>>2];if(!(d[(c[(c[W>>2]|0)+4>>2]|0)+8+((d[(c[Q>>2]|0)+16>>0]|0)*72|0)+36>>0]&8))break b;if((e[v>>1]&1024|0)==0?(c[(c[Q>>2]|0)+36>>2]&4096|0)==0:0)break b;R=Z;X=(c[Q>>2]|0)+8|0;if((c[R>>2]&c[X>>2]|0)!=0?1:(c[R+4>>2]&c[X+4>>2]|0)!=0)break b;c[M>>2]=(c[(c[Y+4>>2]|0)+20>>2]|0)+((c[(c[Y+4>>2]|0)+12>>2]|0)*48|0);c[U>>2]=c[(c[Y+4>>2]|0)+20>>2];while(1){if((c[U>>2]|0)>>>0>=(c[M>>2]|0)>>>0)break;R=(c[U>>2]|0)+40|0;X=(c[Q>>2]|0)+8|0;if(((c[R>>2]&c[X>>2]|0)!=0?1:(c[R+4>>2]&c[X+4>>2]|0)!=0)?(c[(c[c[U>>2]>>2]|0)+4>>2]&1|0)==0:0)break;c[U>>2]=(c[U>>2]|0)+48}if((c[U>>2]|0)>>>0<(c[M>>2]|0)>>>0)break b;X=(c[W>>2]|0)+41|0;a[X>>0]=(a[X>>0]|0)+-1<<24>>24;c[I>>2]=(c[I>>2]|0)+-1}}while(0);Z=(c[c[W>>2]>>2]|0)+428|0;c[Z>>2]=(c[Z>>2]|0)+(b[(c[W>>2]|0)+32>>1]|0);do if(e[v>>1]&4){c[$>>2]=c[(c[(c[W>>2]|0)+736+64>>2]|0)+36>>2];c[A>>2]=(c[$>>2]&4096|0)!=0&1;if(!(c[A>>2]|0)){if(!(e[v>>1]&8192))break;if(c[$>>2]&1024)break}a[(c[W>>2]|0)+38>>0]=(c[A>>2]|0)!=0?1:2;if((d[(c[(c[s>>2]|0)+8+16>>2]|0)+42>>0]&32|0)==0?(c[$>>2]&64|0)!=0:0){if(e[v>>1]&8192)a[z>>0]=8;c[(c[(c[W>>2]|0)+736+64>>2]|0)+36>>2]=c[$>>2]&-65}}while(0);c[G>>2]=0;c[P>>2]=(c[W>>2]|0)+736;while(1){if((c[G>>2]|0)>=(c[I>>2]|0))break;c[T>>2]=(c[s>>2]|0)+8+((d[(c[P>>2]|0)+44>>0]|0)*72|0);c[S>>2]=c[(c[T>>2]|0)+16>>2];c[E>>2]=Dh(c[B>>2]|0,c[(c[S>>2]|0)+64>>2]|0)|0;c[Q>>2]=c[(c[P>>2]|0)+64>>2];c:do if((d[(c[S>>2]|0)+42>>0]&2|0)==0?(c[(c[S>>2]|0)+12>>2]|0)==0:0){if(c[(c[Q>>2]|0)+36>>2]&1024){c[V>>2]=Ax(c[B>>2]|0,c[S>>2]|0)|0;c[D>>2]=c[(c[T>>2]|0)+44>>2];Uw(c[_>>2]|0,152,c[D>>2]|0,0,0,c[V>>2]|0,-10)|0;break}if(d[(c[S>>2]|0)+42>>0]&16)break;do if(!(c[(c[Q>>2]|0)+36>>2]&64)){if(e[v>>1]&16)break;c[K>>2]=54;if(d[(c[W>>2]|0)+38>>0]|0){c[K>>2]=55;c[(c[W>>2]|0)+60>>2]=c[(c[T>>2]|0)+44>>2]}zz(c[r>>2]|0,c[(c[T>>2]|0)+44>>2]|0,c[E>>2]|0,c[S>>2]|0,c[K>>2]|0);do if(!(d[(c[W>>2]|0)+38>>0]|0)){if((b[(c[S>>2]|0)+34>>1]|0)>=64)break;if(d[(c[S>>2]|0)+42>>0]&32)break;Y=(c[T>>2]|0)+56|0;Z=c[Y+4>>2]|0;$=y;c[$>>2]=c[Y>>2];c[$+4>>2]=Z;c[H>>2]=0;while(1){$=y;if(!((c[$>>2]|0)!=0|(c[$+4>>2]|0)!=0))break;Z=y;Z=hR(c[Z>>2]|0,c[Z+4>>2]|0,1)|0;$=y;c[$>>2]=Z;c[$+4>>2]=C;c[H>>2]=(c[H>>2]|0)+1}Ih(c[_>>2]|0,-1,c[H>>2]|0,-14)}while(0);Fh(c[_>>2]|0,a[z>>0]|0);break c}while(0);yz(c[r>>2]|0,c[E>>2]|0,c[(c[S>>2]|0)+28>>2]|0,0,c[c[S>>2]>>2]|0)}while(0);do if(c[(c[Q>>2]|0)+36>>2]&512){c[N>>2]=c[(c[Q>>2]|0)+24+4>>2];c[L>>2]=54;do if(!(d[(c[S>>2]|0)+42>>0]&32))ba=93;else{if((a[(c[N>>2]|0)+55>>0]&3|0)!=2){ba=93;break}if(!(e[v>>1]&64)){ba=93;break}c[F>>2]=c[(c[P>>2]|0)+4>>2];c[L>>2]=0}while(0);d:do if((ba|0)==93){ba=0;if(d[(c[W>>2]|0)+38>>0]|0){c[O>>2]=c[(c[(c[T>>2]|0)+16>>2]|0)+8>>2];c[F>>2]=c[w>>2];while(1){if(!(c[O>>2]|0))break;if((c[O>>2]|0)==(c[N>>2]|0))break;c[F>>2]=(c[F>>2]|0)+1;c[O>>2]=c[(c[O>>2]|0)+20>>2]}c[L>>2]=55;c[(c[W>>2]|0)+60+4>>2]=c[F>>2];break}else{do if(c[w>>2]|0){if(!(e[v>>1]&64))break;c[F>>2]=c[w>>2];if(!(e[v>>1]&4096))break d;c[L>>2]=53;break d}while(0);Z=(c[r>>2]|0)+72|0;$=c[Z>>2]|0;c[Z>>2]=$+1;c[F>>2]=$;break}}while(0);c[(c[P>>2]|0)+8>>2]=c[F>>2];if(!(c[L>>2]|0))break;Vw(c[_>>2]|0,c[L>>2]|0,c[F>>2]|0,c[(c[N>>2]|0)+44>>2]|0,c[E>>2]|0)|0;Az(c[r>>2]|0,c[N>>2]|0);if(!(c[(c[Q>>2]|0)+36>>2]&15))break;if(c[(c[Q>>2]|0)+36>>2]&32770)break;if(e[(c[W>>2]|0)+34>>1]&1)break;Fh(c[_>>2]|0,2)}while(0);if((c[E>>2]|0)>=0)bx(c[r>>2]|0,c[E>>2]|0);c[G>>2]=(c[G>>2]|0)+1;c[P>>2]=(c[P>>2]|0)+80}ba=Bz(c[_>>2]|0)|0;c[(c[W>>2]|0)+44>>2]=ba;if(!(a[(c[B>>2]|0)+65>>0]|0)){ba=J;c[ba>>2]=-1;c[ba+4>>2]=-1;c[G>>2]=0;while(1){if((c[G>>2]|0)>=(c[I>>2]|0))break;c[P>>2]=(c[W>>2]|0)+736+((c[G>>2]|0)*80|0);c[aa>>2]=c[(c[(c[P>>2]|0)+64>>2]|0)+36>>2];if((c[(c[(c[P>>2]|0)+64>>2]|0)+36>>2]&16384|0)!=0?(ba=J,kD(c[r>>2]|0,(c[W>>2]|0)+328|0,(c[s>>2]|0)+8+((d[(c[P>>2]|0)+44>>0]|0)*72|0)|0,c[ba>>2]|0,c[ba+4>>2]|0,c[P>>2]|0),(a[(c[B>>2]|0)+65>>0]|0)!=0):0)break a;c[x>>2]=lD(c[r>>2]|0,c[s>>2]|0,c[P>>2]|0,c[G>>2]|0,d[(c[P>>2]|0)+44>>0]|0,b[v>>1]|0)|0;$=Bz(c[_>>2]|0)|0;c[(c[P>>2]|0)+32>>2]=$;$=J;$=mD(c[W>>2]|0,c[G>>2]|0,c[$>>2]|0,c[$+4>>2]|0)|0;ba=J;c[ba>>2]=$;c[ba+4>>2]=C;c[(c[W>>2]|0)+48>>2]=c[(c[P>>2]|0)+24>>2];do if((c[aa>>2]&8192|0)==0?(e[v>>1]&64|0)!=0:0)break;while(0);c[G>>2]=(c[G>>2]|0)+1}c[q>>2]=c[W>>2];ba=c[q>>2]|0;i=ca;return ba|0}}}}else{Sf(c[B>>2]|0,c[W>>2]|0);c[W>>2]=0}while(0);if(c[W>>2]|0){c[(c[r>>2]|0)+428>>2]=c[(c[W>>2]|0)+56>>2];UC(c[B>>2]|0,c[W>>2]|0)}c[q>>2]=0;ba=c[q>>2]|0;i=ca;return ba|0}function SC(f){f=f|0;var g=0,h=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;E=i;i=i+96|0;m=E+80|0;v=E+76|0;A=E+72|0;o=E+68|0;s=E+64|0;t=E+60|0;z=E+56|0;n=E+52|0;h=E+48|0;l=E+44|0;j=E+40|0;k=E+36|0;p=E+32|0;q=E+28|0;u=E+24|0;r=E+20|0;y=E+16|0;x=E+12|0;B=E+8|0;C=E+4|0;w=E;c[m>>2]=f;c[v>>2]=c[c[m>>2]>>2];c[A>>2]=c[(c[v>>2]|0)+8>>2];c[z>>2]=c[(c[m>>2]|0)+4>>2];c[n>>2]=c[c[v>>2]>>2];fC(c[v>>2]|0);c[o>>2]=(d[(c[m>>2]|0)+41>>0]|0)-1;while(1){if((c[o>>2]|0)<0)break;c[s>>2]=(c[m>>2]|0)+736+((c[o>>2]|0)*80|0);c[t>>2]=c[(c[s>>2]|0)+64>>2];Gz(c[A>>2]|0,c[(c[s>>2]|0)+24>>2]|0);if((d[(c[s>>2]|0)+45>>0]|0)!=160){Vw(c[A>>2]|0,d[(c[s>>2]|0)+45>>0]|0,c[(c[s>>2]|0)+48>>2]|0,c[(c[s>>2]|0)+52>>2]|0,d[(c[s>>2]|0)+46>>0]|0)|0;Fh(c[A>>2]|0,a[(c[s>>2]|0)+47>>0]|0)}a:do if((c[(c[t>>2]|0)+36>>2]&2048|0)!=0?(c[(c[s>>2]|0)+56>>2]|0)>0:0){Gz(c[A>>2]|0,c[(c[s>>2]|0)+16>>2]|0);c[j>>2]=c[(c[s>>2]|0)+56>>2];c[l>>2]=(c[(c[s>>2]|0)+56+4>>2]|0)+(((c[j>>2]|0)-1|0)*12|0);while(1){if((c[j>>2]|0)<=0)break a;Fz(c[A>>2]|0,(c[(c[l>>2]|0)+4>>2]|0)+1|0);Rw(c[A>>2]|0,d[(c[l>>2]|0)+8>>0]|0,c[c[l>>2]>>2]|0,c[(c[l>>2]|0)+4>>2]|0)|0;Fz(c[A>>2]|0,(c[(c[l>>2]|0)+4>>2]|0)-1|0);c[j>>2]=(c[j>>2]|0)+-1;c[l>>2]=(c[l>>2]|0)+-12}}while(0);Gz(c[A>>2]|0,c[(c[s>>2]|0)+12>>2]|0);if(c[(c[s>>2]|0)+20>>2]|0){Ez(c[A>>2]|0,c[(c[s>>2]|0)+20>>2]|0)|0;Fz(c[A>>2]|0,c[(c[s>>2]|0)+20>>2]|0);Fz(c[A>>2]|0,(c[(c[s>>2]|0)+20>>2]|0)-2|0)}if(c[(c[s>>2]|0)+40>>2]|0){if(c[(Mz(c[A>>2]|0,(c[(c[s>>2]|0)+40>>2]|0)-1|0)|0)+4>>2]|0)c[k>>2]=141;else c[k>>2]=142;Rw(c[A>>2]|0,c[k>>2]|0,c[(c[s>>2]|0)+36>>2]|0,c[(c[s>>2]|0)+40>>2]|0)|0}if(c[c[s>>2]>>2]|0){c[h>>2]=xz(c[A>>2]|0,138,c[c[s>>2]>>2]|0)|0;if(!(c[(c[t>>2]|0)+36>>2]&64))xz(c[A>>2]|0,104,c[(c[z>>2]|0)+8+((c[o>>2]|0)*72|0)+44>>2]|0)|0;if(c[(c[t>>2]|0)+36>>2]&512)xz(c[A>>2]|0,104,c[(c[s>>2]|0)+8>>2]|0)|0;f=c[A>>2]|0;g=c[s>>2]|0;if((d[(c[s>>2]|0)+45>>0]|0)==15)Rw(f,14,c[g+48>>2]|0,c[(c[s>>2]|0)+28>>2]|0)|0;else Ez(f,c[g+28>>2]|0)|0;Fz(c[A>>2]|0,c[h>>2]|0)}c[o>>2]=(c[o>>2]|0)+-1}Gz(c[A>>2]|0,c[(c[m>>2]|0)+52>>2]|0);c[o>>2]=0;c[s>>2]=(c[m>>2]|0)+736;while(1){if((c[o>>2]|0)>=(d[(c[m>>2]|0)+41>>0]|0))break;c[r>>2]=0;c[y>>2]=(c[z>>2]|0)+8+((d[(c[s>>2]|0)+44>>0]|0)*72|0);c[x>>2]=c[(c[y>>2]|0)+16>>2];c[t>>2]=c[(c[s>>2]|0)+64>>2];if(((d[(c[y>>2]|0)+36+1>>0]|0)>>>4&1|0)!=0?(a[(c[n>>2]|0)+65>>0]|0)==0:0)TC(c[A>>2]|0,c[(c[s>>2]|0)+32>>2]|0,c[(c[s>>2]|0)+4>>2]|0,c[(c[y>>2]|0)+32>>2]|0,0);else D=32;b:do if((D|0)==32){D=0;if(((d[(c[x>>2]|0)+42>>0]&2|0)==0?(c[(c[x>>2]|0)+12>>2]|0)==0:0)?(e[(c[m>>2]|0)+34>>1]&16|0)==0:0){c[B>>2]=c[(c[t>>2]|0)+36>>2];if((d[(c[m>>2]|0)+38>>0]|0)==0?(c[B>>2]&64|0)==0:0)xz(c[A>>2]|0,61,c[(c[y>>2]|0)+44>>2]|0)|0;if(((c[B>>2]&512|0)!=0?(c[B>>2]&16640|0)==0:0)?(c[(c[s>>2]|0)+8>>2]|0)!=(c[(c[m>>2]|0)+60+4>>2]|0):0)xz(c[A>>2]|0,61,c[(c[s>>2]|0)+8>>2]|0)|0}f=c[t>>2]|0;if(!(c[(c[t>>2]|0)+36>>2]&576)){if(c[f+36>>2]&8192)c[r>>2]=c[(c[s>>2]|0)+56>>2]}else c[r>>2]=c[f+24+4>>2];if(c[r>>2]|0){if((d[(c[m>>2]|0)+38>>0]|0)!=0?(d[(c[(c[r>>2]|0)+12>>2]|0)+42>>0]&32|0)==0:0)break;if(!(a[(c[n>>2]|0)+65>>0]|0)){c[q>>2]=Bz(c[A>>2]|0)|0;c[p>>2]=c[(c[s>>2]|0)+32>>2];c[u>>2]=Mz(c[A>>2]|0,c[p>>2]|0)|0;while(1){if((c[p>>2]|0)>=(c[q>>2]|0))break b;do if((c[(c[u>>2]|0)+4>>2]|0)==(c[(c[s>>2]|0)+4>>2]|0)){f=c[u>>2]|0;if((d[c[u>>2]>>0]|0)!=47){if((d[f>>0]|0)!=103)break;c[(c[u>>2]|0)+4>>2]=c[(c[s>>2]|0)+8>>2];a[c[u>>2]>>0]=113;break}c[C>>2]=c[f+8>>2];if(d[(c[x>>2]|0)+42>>0]&32){c[w>>2]=Ej(c[x>>2]|0)|0;c[C>>2]=b[(c[(c[w>>2]|0)+4>>2]|0)+(c[C>>2]<<1)>>1]}c[C>>2]=(uA(c[r>>2]|0,c[C>>2]&65535)|0)<<16>>16;if((c[C>>2]|0)>=0){c[(c[u>>2]|0)+8>>2]=c[C>>2];c[(c[u>>2]|0)+4>>2]=c[(c[s>>2]|0)+8>>2]}}while(0);c[p>>2]=(c[p>>2]|0)+1;c[u>>2]=(c[u>>2]|0)+20}}}}while(0);c[o>>2]=(c[o>>2]|0)+1;c[s>>2]=(c[s>>2]|0)+80}c[(c[v>>2]|0)+428>>2]=c[(c[m>>2]|0)+56>>2];UC(c[n>>2]|0,c[m>>2]|0);i=E;return}function TC(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+32|0;q=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;m=p+8|0;o=p+4|0;n=p;c[q>>2]=b;c[j>>2]=e;c[k>>2]=f;c[l>>2]=g;c[m>>2]=h;c[o>>2]=Mz(c[q>>2]|0,c[j>>2]|0)|0;c[n>>2]=Bz(c[q>>2]|0)|0;while(1){if((c[j>>2]|0)>=(c[n>>2]|0))break;do if((c[(c[o>>2]|0)+4>>2]|0)==(c[k>>2]|0)){h=c[o>>2]|0;if((d[c[o>>2]>>0]|0|0)==47){a[h>>0]=30;c[(c[o>>2]|0)+4>>2]=(c[(c[o>>2]|0)+8>>2]|0)+(c[l>>2]|0);c[(c[o>>2]|0)+8>>2]=c[(c[o>>2]|0)+12>>2];c[(c[o>>2]|0)+12>>2]=0;break}if((d[h>>0]|0|0)==103){h=c[o>>2]|0;if(c[m>>2]|0){a[h>>0]=37;c[(c[o>>2]|0)+4>>2]=c[(c[o>>2]|0)+8>>2];c[(c[o>>2]|0)+8>>2]=1;break}else{a[h>>0]=25;c[(c[o>>2]|0)+4>>2]=0;c[(c[o>>2]|0)+12>>2]=0;break}}}while(0);c[j>>2]=(c[j>>2]|0)+1;c[o>>2]=(c[o>>2]|0)+20}i=p;return}function UC(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[e>>2]=a;c[f>>2]=b;if(!(c[f>>2]|0)){i=k;return}c[g>>2]=0;while(1){if((c[g>>2]|0)>=(d[(c[f>>2]|0)+41>>0]|0|0))break;c[j>>2]=(c[f>>2]|0)+736+((c[g>>2]|0)*80|0);if((c[(c[j>>2]|0)+64>>2]|0)!=0?(c[(c[(c[j>>2]|0)+64>>2]|0)+36>>2]&2048|0)!=0:0)Sf(c[e>>2]|0,c[(c[j>>2]|0)+56+4>>2]|0);c[g>>2]=(c[g>>2]|0)+1}VC((c[f>>2]|0)+328|0);while(1){if(!(c[(c[f>>2]|0)+16>>2]|0))break;c[h>>2]=c[(c[f>>2]|0)+16>>2];c[(c[f>>2]|0)+16>>2]=c[(c[h>>2]|0)+52>>2];WC(c[e>>2]|0,c[h>>2]|0)}Sf(c[e>>2]|0,c[f>>2]|0);i=k;return}function VC(a){a=a|0;var b=0,d=0,f=0,g=0,h=0;h=i;i=i+16|0;b=h+12|0;g=h+8|0;d=h+4|0;f=h;c[b>>2]=a;c[f>>2]=c[c[c[c[b>>2]>>2]>>2]>>2];c[g>>2]=(c[(c[b>>2]|0)+12>>2]|0)-1;c[d>>2]=c[(c[b>>2]|0)+20>>2];while(1){if((c[g>>2]|0)<0)break;if((e[(c[d>>2]|0)+20>>1]|0)&1)Zu(c[f>>2]|0,c[c[d>>2]>>2]|0);if(!((e[(c[d>>2]|0)+20>>1]|0)&16)){if((e[(c[d>>2]|0)+20>>1]|0)&32)$C(c[f>>2]|0,c[(c[d>>2]|0)+12>>2]|0)}else _C(c[f>>2]|0,c[(c[d>>2]|0)+12>>2]|0);c[g>>2]=(c[g>>2]|0)+-1;c[d>>2]=(c[d>>2]|0)+48}if((c[(c[b>>2]|0)+20>>2]|0)==((c[b>>2]|0)+24|0)){i=h;return}Sf(c[f>>2]|0,c[(c[b>>2]|0)+20>>2]|0);i=h;return}function WC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;XC(c[f>>2]|0,c[e>>2]|0);Sf(c[f>>2]|0,c[e>>2]|0);i=d;return}function XC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if((c[(c[e>>2]|0)+48>>2]|0)!=((c[e>>2]|0)+56|0))Sf(c[d>>2]|0,c[(c[e>>2]|0)+48>>2]|0);YC(c[d>>2]|0,c[e>>2]|0);ZC(c[e>>2]|0);i=f;return}function YC(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;f=h+4|0;g=h;c[f>>2]=b;c[g>>2]=e;if(!(c[(c[g>>2]|0)+36>>2]&17408)){i=h;return}if((c[(c[g>>2]|0)+36>>2]&1024|0)!=0?(d[(c[g>>2]|0)+24+4>>0]|0|0)!=0:0){Kd(c[(c[g>>2]|0)+24+8>>2]|0);a[(c[g>>2]|0)+24+4>>0]=0;c[(c[g>>2]|0)+24+8>>2]=0;i=h;return}if(!(c[(c[g>>2]|0)+36>>2]&16384)){i=h;return}if(!(c[(c[g>>2]|0)+24+4>>2]|0)){i=h;return}Sf(c[f>>2]|0,c[(c[(c[g>>2]|0)+24+4>>2]|0)+16>>2]|0);Sf(c[f>>2]|0,c[(c[g>>2]|0)+24+4>>2]|0);c[(c[g>>2]|0)+24+4>>2]=0;i=h;return}function ZC(a){a=a|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;c[(c[e>>2]|0)+48>>2]=(c[e>>2]|0)+56;b[(c[e>>2]|0)+40>>1]=0;b[(c[e>>2]|0)+44>>1]=3;c[(c[e>>2]|0)+36>>2]=0;i=d;return}function _C(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;VC(c[e>>2]|0);Sf(c[f>>2]|0,c[e>>2]|0);i=d;return}function $C(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;VC(c[e>>2]|0);Sf(c[f>>2]|0,c[e>>2]|0);i=d;return}function aD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;c[c[e>>2]>>2]=c[f>>2];c[(c[e>>2]|0)+4>>2]=0;c[(c[e>>2]|0)+12>>2]=0;c[(c[e>>2]|0)+16>>2]=8;c[(c[e>>2]|0)+20>>2]=(c[e>>2]|0)+24;i=d;return}function bD(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;g=l+8|0;h=l+4|0;j=l+12|0;k=l;c[g>>2]=b;c[h>>2]=e;a[j>>0]=f;c[k>>2]=Tx(c[h>>2]|0)|0;a[(c[g>>2]|0)+8>>0]=a[j>>0]|0;if(!(c[k>>2]|0)){i=l;return}f=c[g>>2]|0;if((d[c[k>>2]>>0]|0|0)!=(d[j>>0]|0|0)){nE(f,c[h>>2]|0,0)|0;i=l;return}else{bD(f,c[(c[k>>2]|0)+12>>2]|0,a[j>>0]|0);bD(c[g>>2]|0,c[(c[k>>2]|0)+16>>2]|0,a[j>>0]|0);i=l;return}}function cD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=c[f>>2]|0;f=c[e>>2]|0;a=c[f>>2]|0;c[f>>2]=a+1;c[(c[e>>2]|0)+4+(a<<2)>>2]=b;i=d;return}function dD(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;q=r;g=r+40|0;h=r+36|0;j=r+32|0;p=r+28|0;o=r+24|0;k=r+20|0;l=r+16|0;m=r+12|0;n=r+8|0;c[g>>2]=a;c[h>>2]=e;c[j>>2]=f;if(!((d[(c[h>>2]|0)+36+1>>0]|0)>>>2&1)){i=r;return}c[p>>2]=c[(c[h>>2]|0)+16>>2];c[l>>2]=c[(c[h>>2]|0)+64>>2];if(!(c[l>>2]|0)){i=r;return}c[k>>2]=0;c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[c[l>>2]>>2]|0)){e=13;break}while(1){if((c[k>>2]|0)<(b[(c[p>>2]|0)+34>>1]|0))e=(d[(c[(c[p>>2]|0)+4>>2]|0)+((c[k>>2]|0)*24|0)+23>>0]&2|0)==0;else e=0;a=c[k>>2]|0;if(!e)break;c[k>>2]=a+1}f=c[g>>2]|0;if((a|0)>=(b[(c[p>>2]|0)+34>>1]|0)){e=10;break}c[m>>2]=rv(f,152,0,0,0)|0;if(!(c[m>>2]|0)){e=13;break}c[(c[m>>2]|0)+28>>2]=c[(c[h>>2]|0)+44>>2];a=c[k>>2]|0;c[k>>2]=a+1;b[(c[m>>2]|0)+32>>1]=a;c[(c[m>>2]|0)+44>>2]=c[p>>2];a=c[g>>2]|0;f=c[m>>2]|0;c[n>>2]=rv(a,79,f,ny(c[c[g>>2]>>2]|0,c[(c[(c[l>>2]|0)+4>>2]|0)+((c[o>>2]|0)*20|0)>>2]|0,0)|0,0)|0;nE(c[j>>2]|0,c[n>>2]|0,1)|0;c[o>>2]=(c[o>>2]|0)+1}if((e|0)==10){o=c[o>>2]|0;c[q>>2]=c[c[p>>2]>>2];c[q+4>>2]=o;Ah(f,35704,q);i=r;return}else if((e|0)==13){i=r;return}}function eD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=(c[(c[e>>2]|0)+12>>2]|0)-1;while(1){if((c[f>>2]|0)<0)break;jE(c[d>>2]|0,c[e>>2]|0,c[f>>2]|0);c[f>>2]=(c[f>>2]|0)+-1}i=g;return}function fD(a,f,g,h){a=a|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+48|0;j=u+36|0;k=u+32|0;l=u+28|0;m=u+24|0;n=u+20|0;s=u+16|0;r=u+12|0;o=u+8|0;p=u+4|0;q=u;c[k>>2]=a;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;if((c[c[l>>2]>>2]|0)!=1){c[j>>2]=0;t=c[j>>2]|0;i=u;return t|0}c[p>>2]=c[(c[l>>2]|0)+8+44>>2];c[s>>2]=c[(c[l>>2]|0)+8+16>>2];c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[c[n>>2]>>2]|0))break;c[q>>2]=Tx(c[(c[(c[n>>2]|0)+4>>2]|0)+((c[o>>2]|0)*20|0)>>2]|0)|0;if(((d[c[q>>2]>>0]|0)==152?(c[(c[q>>2]|0)+28>>2]|0)==(c[p>>2]|0):0)?(b[(c[q>>2]|0)+32>>1]|0)<0:0){t=8;break}c[o>>2]=(c[o>>2]|0)+1}if((t|0)==8){c[j>>2]=1;t=c[j>>2]|0;i=u;return t|0}c[r>>2]=c[(c[s>>2]|0)+8>>2];while(1){if(!(c[r>>2]|0)){t=22;break}if(d[(c[r>>2]|0)+54>>0]|0){c[o>>2]=0;while(1){if((c[o>>2]|0)>=(e[(c[r>>2]|0)+50>>1]|0))break;if(!(xD(c[m>>2]|0,c[p>>2]|0,c[o>>2]|0,-1,-1,2,c[r>>2]|0)|0)){if((iE(c[k>>2]|0,c[n>>2]|0,c[p>>2]|0,c[r>>2]|0,c[o>>2]|0)|0)<0)break;if(!(bE(c[r>>2]|0,c[o>>2]|0)|0))break}c[o>>2]=(c[o>>2]|0)+1}if((c[o>>2]|0)==(e[(c[r>>2]|0)+50>>1]|0)){t=20;break}}c[r>>2]=c[(c[r>>2]|0)+20>>2]}if((t|0)==20){c[j>>2]=1;t=c[j>>2]|0;i=u;return t|0}else if((t|0)==22){c[j>>2]=0;t=c[j>>2]|0;i=u;return t|0}return 0}function gD(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;g=t+44|0;h=t+40|0;s=t+36|0;n=t+32|0;r=t+28|0;q=t+24|0;o=t+20|0;j=t+16|0;k=t+12|0;p=t+8|0;m=t+4|0;l=t;c[h>>2]=f;c[s>>2]=c[c[h>>2]>>2];if((e[(c[s>>2]|0)+34>>1]|0)&32){c[g>>2]=0;s=c[g>>2]|0;i=t;return s|0}c[n>>2]=(c[(c[s>>2]|0)+4>>2]|0)+8;c[p>>2]=c[(c[n>>2]|0)+16>>2];if((d[(c[p>>2]|0)+42>>0]|0)&16){c[g>>2]=0;s=c[g>>2]|0;i=t;return s|0}if((d[(c[n>>2]|0)+36+1>>0]|0)>>>1&1){c[g>>2]=0;s=c[g>>2]|0;i=t;return s|0}c[j>>2]=c[(c[n>>2]|0)+44>>2];c[r>>2]=(c[s>>2]|0)+328;c[o>>2]=c[(c[h>>2]|0)+12>>2];c[(c[o>>2]|0)+36>>2]=0;b[(c[o>>2]|0)+42>>1]=0;c[q>>2]=xD(c[r>>2]|0,c[j>>2]|0,-1,0,0,130,0)|0;a:do if(c[q>>2]|0){c[(c[o>>2]|0)+36>>2]=4353;c[c[(c[o>>2]|0)+48>>2]>>2]=c[q>>2];b[(c[o>>2]|0)+40>>1]=1;b[(c[o>>2]|0)+24>>1]=1;b[(c[o>>2]|0)+20>>1]=33}else{c[m>>2]=c[(c[p>>2]|0)+8>>2];while(1){if(!(c[m>>2]|0))break a;if(((d[(c[m>>2]|0)+54>>0]|0|0)!=0?(c[(c[m>>2]|0)+36>>2]|0)==0:0)?(e[(c[m>>2]|0)+50>>1]|0|0)<=3:0){c[l>>2]=((d[(c[m>>2]|0)+55>>0]|0)>>>3&1|0)!=0?130:2;c[k>>2]=0;while(1){if((c[k>>2]|0)>=(e[(c[m>>2]|0)+50>>1]|0|0))break;c[q>>2]=xD(c[r>>2]|0,c[j>>2]|0,c[k>>2]|0,0,0,c[l>>2]|0,c[m>>2]|0)|0;if(!(c[q>>2]|0))break;c[(c[(c[o>>2]|0)+48>>2]|0)+(c[k>>2]<<2)>>2]=c[q>>2];c[k>>2]=(c[k>>2]|0)+1}if((c[k>>2]|0)==(e[(c[m>>2]|0)+50>>1]|0|0))break}c[m>>2]=c[(c[m>>2]|0)+20>>2]}c[(c[o>>2]|0)+36>>2]=4609;if(!(((d[(c[m>>2]|0)+55>>0]|0)>>>5&1|0)==0?(r=(c[n>>2]|0)+56|0,p=c[r>>2]|0,r=c[r+4>>2]|0,q=$D(c[m>>2]|0)|0,!((p&~q|0)==0&(r&~C|0)==0)):0)){r=(c[o>>2]|0)+36|0;c[r>>2]=c[r>>2]|64}b[(c[o>>2]|0)+40>>1]=c[k>>2];b[(c[o>>2]|0)+24>>1]=c[k>>2];c[(c[o>>2]|0)+24+4>>2]=c[m>>2];b[(c[o>>2]|0)+20>>1]=39}while(0);if(!(c[(c[o>>2]|0)+36>>2]|0)){c[g>>2]=0;s=c[g>>2]|0;i=t;return s|0}b[(c[o>>2]|0)+22>>1]=1;c[(c[s>>2]|0)+736+64>>2]=c[o>>2];q=nD((c[s>>2]|0)+68|0,c[j>>2]|0)|0;r=(c[o>>2]|0)+8|0;c[r>>2]=q;c[r+4>>2]=C;c[(c[s>>2]|0)+736+4>>2]=c[j>>2];b[(c[s>>2]|0)+32>>1]=1;if(c[(c[s>>2]|0)+8>>2]|0)a[(c[s>>2]|0)+36>>0]=c[c[(c[s>>2]|0)+8>>2]>>2];if((e[(c[s>>2]|0)+34>>1]|0)&1024)a[(c[s>>2]|0)+40>>0]=1;c[g>>2]=1;s=c[g>>2]|0;i=t;return s|0}function hD(b){b=b|0;var e=0,f=0,g=0,h=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;s=i;i=i+80|0;e=s+60|0;n=s+56|0;g=s+16|0;h=s+8|0;f=s+52|0;t=s+48|0;m=s+44|0;l=s+40|0;p=s+36|0;r=s+32|0;q=s+28|0;o=s+64|0;j=s;k=s+24|0;c[e>>2]=b;c[n>>2]=c[c[e>>2]>>2];b=g;c[b>>2]=0;c[b+4>>2]=0;b=h;c[b>>2]=0;c[b+4>>2]=0;c[t>>2]=c[(c[n>>2]|0)+4>>2];c[l>>2]=(c[t>>2]|0)+8+((d[(c[n>>2]|0)+41>>0]|0)*72|0);c[p>>2]=c[c[c[n>>2]>>2]>>2];c[r>>2]=0;a[o>>0]=0;c[q>>2]=c[(c[e>>2]|0)+12>>2];ZC(c[q>>2]|0);c[f>>2]=0;c[m>>2]=(c[t>>2]|0)+8;while(1){if((c[m>>2]|0)>>>0>=(c[l>>2]|0)>>>0){e=19;break}b=j;c[b>>2]=0;c[b+4>>2]=0;a[(c[q>>2]|0)+16>>0]=c[f>>2];b=nD((c[n>>2]|0)+68|0,c[(c[m>>2]|0)+44>>2]|0)|0;t=(c[q>>2]|0)+8|0;c[t>>2]=b;c[t+4>>2]=C;if((d[(c[m>>2]|0)+36>>0]|0|(d[o>>0]|0))&10){u=h;b=c[u+4>>2]|0;t=g;c[t>>2]=c[u>>2];c[t+4>>2]=b}a[o>>0]=a[(c[m>>2]|0)+36>>0]|0;if((d[(c[(c[m>>2]|0)+16>>2]|0)+42>>0]|0)&16){c[k>>2]=(c[m>>2]|0)+72;while(1){if((c[k>>2]|0)>>>0>=(c[l>>2]|0)>>>0)break;u=j;if(!(!((c[u>>2]|0)!=0|(c[u+4>>2]|0)!=0)?((d[(c[k>>2]|0)+36>>0]|0)&10|0)==0:0)){b=nD((c[n>>2]|0)+68|0,c[(c[k>>2]|0)+44>>2]|0)|0;v=j;t=c[v+4>>2]|C;u=j;c[u>>2]=c[v>>2]|b;c[u+4>>2]=t}c[k>>2]=(c[k>>2]|0)+72}u=g;v=j;c[r>>2]=OD(c[e>>2]|0,c[u>>2]|0,c[u+4>>2]|0,c[v>>2]|0,c[v+4>>2]|0)|0}else{v=g;c[r>>2]=PD(c[e>>2]|0,c[v>>2]|0,c[v+4>>2]|0)|0}if(!(c[r>>2]|0)){u=g;v=j;c[r>>2]=QD(c[e>>2]|0,c[u>>2]|0,c[u+4>>2]|0,c[v>>2]|0,c[v+4>>2]|0)|0}t=(c[q>>2]|0)+8|0;b=h;u=c[b+4>>2]|c[t+4>>2];v=h;c[v>>2]=c[b>>2]|c[t>>2];c[v+4>>2]=u;if(c[r>>2]|0){e=19;break}if(d[(c[p>>2]|0)+65>>0]|0){e=19;break}c[f>>2]=(c[f>>2]|0)+1;c[m>>2]=(c[m>>2]|0)+72}if((e|0)==19){XC(c[p>>2]|0,c[q>>2]|0);i=s;return c[r>>2]|0}return 0}function iD(f,g){f=f|0;g=g|0;var h=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;U=i;i=i+160|0;E=U+32|0;M=U+132|0;N=U+128|0;G=U+146|0;r=U+124|0;P=U+120|0;z=U+116|0;O=U+112|0;H=U+108|0;n=U+104|0;p=U+100|0;t=U+96|0;w=U+92|0;s=U+144|0;u=U+142|0;y=U+88|0;v=U+84|0;k=U+80|0;m=U+76|0;R=U+72|0;A=U+68|0;K=U+64|0;j=U+60|0;l=U+56|0;S=U+52|0;h=U+48|0;x=U+140|0;B=U+138|0;C=U+136|0;o=U+148|0;q=U+24|0;D=U+16|0;J=U+44|0;I=U+8|0;L=U+40|0;T=U;Q=U+36|0;c[N>>2]=f;b[G>>1]=g;c[t>>2]=0;b[s>>1]=0;b[u>>1]=0;c[l>>2]=0;c[z>>2]=c[c[N>>2]>>2];c[O>>2]=c[c[z>>2]>>2];c[P>>2]=d[(c[N>>2]|0)+41>>0];if((c[P>>2]|0)<=1)g=1;else g=(c[P>>2]|0)==2?5:10;c[r>>2]=g;if((c[(c[N>>2]|0)+8>>2]|0)!=0?(b[G>>1]|0)!=0:0)c[w>>2]=c[c[(c[N>>2]|0)+8>>2]>>2];else c[w>>2]=0;c[h>>2]=(_(32+(c[P>>2]<<2)|0,c[r>>2]|0)|0)<<1;c[h>>2]=(c[h>>2]|0)+(c[w>>2]<<1);h=c[h>>2]|0;c[S>>2]=Fw(c[O>>2]|0,h,((h|0)<0)<<31>>31)|0;if(!(c[S>>2]|0)){c[M>>2]=7;T=c[M>>2]|0;i=U;return T|0}c[m>>2]=c[S>>2];c[k>>2]=(c[m>>2]|0)+(c[r>>2]<<5);h=c[k>>2]|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;c[h+24>>2]=0;c[h+28>>2]=0;c[j>>2]=(c[k>>2]|0)+(c[r>>2]<<5);c[n>>2]=c[r>>2]<<1;c[R>>2]=c[m>>2];while(1){if((c[n>>2]|0)<=0)break;c[(c[R>>2]|0)+24>>2]=c[j>>2];c[n>>2]=(c[n>>2]|0)+-1;c[R>>2]=(c[R>>2]|0)+32;c[j>>2]=(c[j>>2]|0)+(c[P>>2]<<2)}if(c[w>>2]|0){c[l>>2]=c[j>>2];kR(c[l>>2]|0,0,c[w>>2]<<1|0)|0}if((c[(c[z>>2]|0)+428>>2]|0)>>>0<48)g=c[(c[z>>2]|0)+428>>2]|0;else g=48;b[(c[k>>2]|0)+16>>1]=g;c[v>>2]=1;if(c[w>>2]|0)a[(c[k>>2]|0)+22>>0]=(c[P>>2]|0)>0?-1:c[w>>2]|0;c[H>>2]=0;while(1){if((c[H>>2]|0)>=(c[P>>2]|0))break;c[y>>2]=0;c[n>>2]=0;c[R>>2]=c[k>>2];while(1){if((c[n>>2]|0)>=(c[v>>2]|0))break;c[K>>2]=c[(c[N>>2]|0)+16>>2];while(1){if(!(c[K>>2]|0))break;a[o>>0]=a[(c[R>>2]|0)+22>>0]|0;h=D;c[h>>2]=0;c[h+4>>2]=0;h=c[K>>2]|0;j=c[R>>2]|0;a:do if(!((c[h>>2]&~c[j>>2]|0)!=0?1:(c[h+4>>2]&~c[j+4>>2]|0)!=0)?(h=(c[K>>2]|0)+8|0,j=c[R>>2]|0,!((c[h>>2]&c[j>>2]|0)!=0?1:(c[h+4>>2]&c[j+4>>2]|0)!=0)):0){b[C>>1]=KD(b[(c[K>>2]|0)+18>>1]|0,(b[(c[K>>2]|0)+20>>1]|0)+(b[(c[R>>2]|0)+16>>1]|0)&65535)|0;b[C>>1]=KD(b[C>>1]|0,b[(c[R>>2]|0)+20>>1]|0)|0;b[x>>1]=(b[(c[R>>2]|0)+16>>1]|0)+(b[(c[K>>2]|0)+22>>1]|0);g=c[R>>2]|0;f=(c[K>>2]|0)+8|0;h=c[g+4>>2]|c[f+4>>2];j=q;c[j>>2]=c[g>>2]|c[f>>2];c[j+4>>2]=h;if((a[o>>0]|0)<0)a[o>>0]=LD(c[N>>2]|0,c[(c[N>>2]|0)+8>>2]|0,c[R>>2]|0,b[(c[N>>2]|0)+34>>1]|0,c[H>>2]&65535,c[K>>2]|0,D)|0;else{f=(c[R>>2]|0)+8|0;h=c[f+4>>2]|0;j=D;c[j>>2]=c[f>>2];c[j+4>>2]=h}if((a[o>>0]|0)>=0?(a[o>>0]|0)<(c[w>>2]|0):0){if(!(b[(c[l>>2]|0)+(a[o>>0]<<1)>>1]|0)){j=MD(b[G>>1]|0,c[w>>2]|0,a[o>>0]|0)|0;b[(c[l>>2]|0)+(a[o>>0]<<1)>>1]=j}b[B>>1]=KD(b[C>>1]|0,b[(c[l>>2]|0)+(a[o>>0]<<1)>>1]|0)|0}else b[B>>1]=b[C>>1]|0;c[p>>2]=0;c[A>>2]=c[m>>2];while(1){if((c[p>>2]|0)>=(c[y>>2]|0))break;h=c[A>>2]|0;j=q;if(((c[h>>2]|0)==(c[j>>2]|0)?(c[h+4>>2]|0)==(c[j+4>>2]|0):0)?((a[(c[A>>2]|0)+22>>0]^a[o>>0])&128|0)==0:0)break;c[p>>2]=(c[p>>2]|0)+1;c[A>>2]=(c[A>>2]|0)+32}do if((c[p>>2]|0)<(c[y>>2]|0)){if((b[(c[A>>2]|0)+18>>1]|0)<(b[B>>1]|0))break a;if((b[(c[A>>2]|0)+18>>1]|0)!=(b[B>>1]|0))break;if((b[(c[A>>2]|0)+16>>1]|0)<=(b[x>>1]|0))break a}else{do if((c[y>>2]|0)>=(c[r>>2]|0)){if((b[B>>1]|0)>(b[s>>1]|0))break a;if((b[B>>1]|0)!=(b[s>>1]|0))break;if((b[C>>1]|0)>=(b[u>>1]|0))break a}while(0);if((c[y>>2]|0)<(c[r>>2]|0)){j=c[y>>2]|0;c[y>>2]=j+1;c[p>>2]=j}else c[p>>2]=c[t>>2];c[A>>2]=(c[m>>2]|0)+(c[p>>2]<<5)}while(0);g=c[R>>2]|0;j=(c[K>>2]|0)+8|0;h=c[g+4>>2]|c[j+4>>2];f=c[A>>2]|0;c[f>>2]=c[g>>2]|c[j>>2];c[f+4>>2]=h;f=D;h=c[f+4>>2]|0;j=(c[A>>2]|0)+8|0;c[j>>2]=c[f>>2];c[j+4>>2]=h;b[(c[A>>2]|0)+16>>1]=b[x>>1]|0; -b[(c[A>>2]|0)+18>>1]=b[B>>1]|0;b[(c[A>>2]|0)+20>>1]=b[C>>1]|0;a[(c[A>>2]|0)+22>>0]=a[o>>0]|0;iR(c[(c[A>>2]|0)+24>>2]|0,c[(c[R>>2]|0)+24>>2]|0,c[H>>2]<<2|0)|0;c[(c[(c[A>>2]|0)+24>>2]|0)+(c[H>>2]<<2)>>2]=c[K>>2];if((c[y>>2]|0)>=(c[r>>2]|0)){c[t>>2]=0;b[s>>1]=b[(c[m>>2]|0)+18>>1]|0;b[u>>1]=b[(c[m>>2]|0)+16>>1]|0;c[p>>2]=1;c[A>>2]=(c[m>>2]|0)+32;while(1){if((c[p>>2]|0)>=(c[r>>2]|0))break a;do if((b[(c[A>>2]|0)+18>>1]|0)<=(b[s>>1]|0)){if((b[(c[A>>2]|0)+18>>1]|0)!=(b[s>>1]|0))break;if((b[(c[A>>2]|0)+20>>1]|0)>(b[u>>1]|0))F=58}else F=58;while(0);if((F|0)==58){F=0;b[s>>1]=b[(c[A>>2]|0)+18>>1]|0;b[u>>1]=b[(c[A>>2]|0)+20>>1]|0;c[t>>2]=c[p>>2]}c[p>>2]=(c[p>>2]|0)+1;c[A>>2]=(c[A>>2]|0)+32}}}while(0);c[K>>2]=c[(c[K>>2]|0)+52>>2]}c[n>>2]=(c[n>>2]|0)+1;c[R>>2]=(c[R>>2]|0)+32}c[R>>2]=c[m>>2];c[m>>2]=c[k>>2];c[k>>2]=c[R>>2];c[v>>2]=c[y>>2];c[H>>2]=(c[H>>2]|0)+1}if(!(c[v>>2]|0)){Ah(c[z>>2]|0,35564,E);Sf(c[O>>2]|0,c[S>>2]|0);c[M>>2]=1;T=c[M>>2]|0;i=U;return T|0}c[R>>2]=c[k>>2];c[n>>2]=1;while(1){if((c[n>>2]|0)>=(c[v>>2]|0))break;if((b[(c[R>>2]|0)+18>>1]|0)>(b[(c[k>>2]|0)+(c[n>>2]<<5)+18>>1]|0))c[R>>2]=(c[k>>2]|0)+(c[n>>2]<<5);c[n>>2]=(c[n>>2]|0)+1}c[H>>2]=0;while(1){g=c[N>>2]|0;if((c[H>>2]|0)>=(c[P>>2]|0))break;c[J>>2]=g+736+((c[H>>2]|0)*80|0);F=c[(c[(c[R>>2]|0)+24>>2]|0)+(c[H>>2]<<2)>>2]|0;c[K>>2]=F;c[(c[J>>2]|0)+64>>2]=F;a[(c[J>>2]|0)+44>>0]=a[(c[K>>2]|0)+16>>0]|0;c[(c[J>>2]|0)+4>>2]=c[(c[(c[N>>2]|0)+4>>2]|0)+8+((d[(c[J>>2]|0)+44>>0]|0)*72|0)+44>>2];c[H>>2]=(c[H>>2]|0)+1}if(((((e[g+34>>1]&1024|0)!=0?(e[(c[N>>2]|0)+34>>1]&512|0)==0:0)?(d[(c[N>>2]|0)+40>>0]|0)==0:0)?(b[G>>1]|0)!=0:0)?(c[L>>2]=(LD(c[N>>2]|0,c[(c[N>>2]|0)+12>>2]|0,c[R>>2]|0,512,(c[P>>2]|0)-1&65535,c[(c[(c[R>>2]|0)+24>>2]|0)+((c[P>>2]|0)-1<<2)>>2]|0,I)|0)<<24>>24,(c[L>>2]|0)==(c[c[(c[N>>2]|0)+12>>2]>>2]|0)):0)a[(c[N>>2]|0)+40>>0]=2;if(c[(c[N>>2]|0)+8>>2]|0){g=a[(c[R>>2]|0)+22>>0]|0;if(e[(c[N>>2]|0)+34>>1]&512){if((g<<24>>24|0)==(c[c[(c[N>>2]|0)+8>>2]>>2]|0))a[(c[N>>2]|0)+40>>0]=2}else{a[(c[N>>2]|0)+36>>0]=g;if((a[(c[N>>2]|0)+36>>0]|0)<0)a[(c[N>>2]|0)+36>>0]=0;J=(c[R>>2]|0)+8|0;K=c[J+4>>2]|0;L=(c[N>>2]|0)+24|0;c[L>>2]=c[J>>2];c[L+4>>2]=K}if(((e[(c[N>>2]|0)+34>>1]&2048|0)!=0?(c[P>>2]|0)>0?(a[(c[N>>2]|0)+36>>0]|0)==(c[c[(c[N>>2]|0)+8>>2]>>2]|0):0:0)?(L=T,c[L>>2]=0,c[L+4>>2]=0,c[Q>>2]=(LD(c[N>>2]|0,c[(c[N>>2]|0)+8>>2]|0,c[R>>2]|0,0,(c[P>>2]|0)-1&65535,c[(c[(c[R>>2]|0)+24>>2]|0)+((c[P>>2]|0)-1<<2)>>2]|0,T)|0)<<24>>24,(c[Q>>2]|0)==(c[c[(c[N>>2]|0)+8>>2]>>2]|0)):0){a[(c[N>>2]|0)+37>>0]=1;P=T;Q=c[P+4>>2]|0;T=(c[N>>2]|0)+24|0;c[T>>2]=c[P>>2];c[T+4>>2]=Q}}b[(c[N>>2]|0)+32>>1]=b[(c[R>>2]|0)+16>>1]|0;Sf(c[O>>2]|0,c[S>>2]|0);c[M>>2]=0;T=c[M>>2]|0;i=U;return T|0}function jD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;h=i;i=i+32|0;d=h+16|0;e=h+12|0;f=h+8|0;g=h;c[d>>2]=a;c[e>>2]=b;a=g;c[a>>2]=0;c[a+4>>2]=0;if(!(c[e>>2]|0)){b=g;a=b;a=c[a>>2]|0;b=b+4|0;b=c[b>>2]|0;C=b;i=h;return a|0}c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[e>>2]>>2]|0))break;j=ID(c[d>>2]|0,c[(c[(c[e>>2]|0)+4>>2]|0)+((c[f>>2]|0)*20|0)>>2]|0)|0;k=g;b=c[k+4>>2]|C;a=g;c[a>>2]=c[k>>2]|j;c[a+4>>2]=b;c[f>>2]=(c[f>>2]|0)+1}j=g;k=j;k=c[k>>2]|0;j=j+4|0;j=c[j>>2]|0;C=j;i=h;return k|0}function kD(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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,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;Y=i;i=i+176|0;q=Y+40|0;N=Y+160|0;t=Y+156|0;u=Y+152|0;v=Y+32|0;O=Y+148|0;E=Y+144|0;J=Y+140|0;K=Y+136|0;G=Y+132|0;X=Y+128|0;Q=Y+124|0;I=Y+120|0;R=Y+116|0;W=Y+112|0;S=Y+108|0;y=Y+104|0;D=Y+100|0;F=Y+96|0;H=Y+92|0;s=Y+88|0;B=Y+24|0;x=Y+16|0;p=Y+164|0;T=Y+84|0;A=Y+80|0;U=Y+76|0;P=Y+72|0;V=Y+68|0;o=Y+64|0;n=Y+60|0;m=Y+8|0;z=Y+56|0;w=Y;L=Y+52|0;M=Y+48|0;c[N>>2]=f;c[t>>2]=g;c[u>>2]=h;g=v;c[g>>2]=j;c[g+4>>2]=k;c[O>>2]=l;a[p>>0]=0;c[T>>2]=0;c[A>>2]=0;c[P>>2]=0;c[X>>2]=c[(c[N>>2]|0)+8>>2];c[Q>>2]=UA(c[N>>2]|0)|0;c[E>>2]=0;c[I>>2]=c[(c[u>>2]|0)+16>>2];c[K>>2]=(c[(c[t>>2]|0)+20>>2]|0)+((c[(c[t>>2]|0)+12>>2]|0)*48|0);c[H>>2]=c[(c[O>>2]|0)+64>>2];g=B;c[g>>2]=0;c[g+4>>2]=0;c[J>>2]=c[(c[t>>2]|0)+20>>2];while(1){if((c[J>>2]|0)>>>0>=(c[K>>2]|0)>>>0)break;c[o>>2]=c[c[J>>2]>>2];g=c[H>>2]|0;if((((c[g>>2]|0)==0&(c[g+4>>2]|0)==0?(e[(c[J>>2]|0)+20>>1]&2|0)==0:0)?(c[(c[o>>2]|0)+4>>2]&1|0)==0:0)?(ED(c[o>>2]|0,c[(c[u>>2]|0)+44>>2]|0)|0)!=0:0){h=c[c[N>>2]>>2]|0;g=c[T>>2]|0;c[T>>2]=az(h,g,ny(c[c[N>>2]>>2]|0,c[o>>2]|0,0)|0)|0}g=v;if(FD(c[J>>2]|0,c[u>>2]|0,c[g>>2]|0,c[g+4>>2]|0)|0){c[n>>2]=c[(c[J>>2]|0)+12>>2];if((c[n>>2]|0)>=64){j=0;k=-2147483648}else{j=lR(1,0,c[n>>2]|0)|0;k=C}g=m;c[g>>2]=j;c[g+4>>2]=k;if(!(a[p>>0]|0)){g=c[(c[(c[I>>2]|0)+4>>2]|0)+((c[n>>2]|0)*24|0)>>2]|0;c[q>>2]=c[c[I>>2]>>2];c[q+4>>2]=g;Rd(284,35527,q);a[p>>0]=1}h=B;g=m;if((c[h>>2]&c[g>>2]|0)==0?(c[h+4>>2]&c[g+4>>2]|0)==0:0){if(GD(c[c[N>>2]>>2]|0,c[H>>2]|0,(c[E>>2]|0)+1|0)|0){r=57;break}l=c[J>>2]|0;f=c[E>>2]|0;c[E>>2]=f+1;c[(c[(c[H>>2]|0)+48>>2]|0)+(f<<2)>>2]=l;f=m;l=B;h=c[l+4>>2]|c[f+4>>2];g=B;c[g>>2]=c[l>>2]|c[f>>2];c[g+4>>2]=h}}c[J>>2]=(c[J>>2]|0)+48}if((r|0)==57){W=c[N>>2]|0;W=c[W>>2]|0;X=c[T>>2]|0;Zu(W,X);i=Y;return}o=c[E>>2]&65535;b[(c[H>>2]|0)+40>>1]=o;b[(c[H>>2]|0)+24>>1]=o;c[(c[H>>2]|0)+36>>2]=16961;o=(c[u>>2]|0)+56|0;p=B;q=c[o+4>>2]&(~c[p+4>>2]|-2147483648);r=x;c[r>>2]=c[o>>2]&~c[p>>2];c[r+4>>2]=q;if(63<(b[(c[I>>2]|0)+34>>1]|0))j=63;else j=b[(c[I>>2]|0)+34>>1]|0;c[D>>2]=j;c[y>>2]=0;while(1){if((c[y>>2]|0)>=(c[D>>2]|0))break;r=x;p=c[r>>2]|0;r=c[r+4>>2]|0;q=lR(1,0,c[y>>2]|0)|0;if((p&q|0)!=0|(r&C|0)!=0)c[E>>2]=(c[E>>2]|0)+1;c[y>>2]=(c[y>>2]|0)+1}if(0!=0?1:(c[(c[u>>2]|0)+56+4>>2]&-2147483648|0)!=0)c[E>>2]=(c[E>>2]|0)+((b[(c[I>>2]|0)+34>>1]|0)-64+1);c[G>>2]=HD(c[c[N>>2]>>2]|0,(c[E>>2]|0)+1&65535,0,s)|0;if(!(c[G>>2]|0)){W=c[N>>2]|0;W=c[W>>2]|0;X=c[T>>2]|0;Zu(W,X);i=Y;return}c[(c[H>>2]|0)+24+4>>2]=c[G>>2];c[c[G>>2]>>2]=35553;c[(c[G>>2]|0)+12>>2]=c[I>>2];c[S>>2]=0;s=B;c[s>>2]=0;c[s+4>>2]=0;c[J>>2]=c[(c[t>>2]|0)+20>>2];while(1){if((c[J>>2]|0)>>>0>=(c[K>>2]|0)>>>0)break;s=v;if(FD(c[J>>2]|0,c[u>>2]|0,c[s>>2]|0,c[s+4>>2]|0)|0){c[z>>2]=c[(c[J>>2]|0)+12>>2];if((c[z>>2]|0)>=64){j=0;k=-2147483648}else{j=lR(1,0,c[z>>2]|0)|0;k=C}r=w;c[r>>2]=j;c[r+4>>2]=k;r=B;s=w;if((c[r>>2]&c[s>>2]|0)==0?(c[r+4>>2]&c[s+4>>2]|0)==0:0){c[L>>2]=c[c[J>>2]>>2];q=w;p=B;r=c[p+4>>2]|c[q+4>>2];s=B;c[s>>2]=c[p>>2]|c[q>>2];c[s+4>>2]=r;b[(c[(c[G>>2]|0)+4>>2]|0)+(c[S>>2]<<1)>>1]=c[(c[J>>2]|0)+12>>2];c[F>>2]=VA(c[N>>2]|0,c[(c[L>>2]|0)+12>>2]|0,c[(c[L>>2]|0)+16>>2]|0)|0;if(c[F>>2]|0)j=c[c[F>>2]>>2]|0;else j=35690;c[(c[(c[G>>2]|0)+32>>2]|0)+(c[S>>2]<<2)>>2]=j;c[S>>2]=(c[S>>2]|0)+1}}c[J>>2]=(c[J>>2]|0)+48}c[y>>2]=0;while(1){if((c[y>>2]|0)>=(c[D>>2]|0))break;L=x;J=c[L>>2]|0;L=c[L+4>>2]|0;K=lR(1,0,c[y>>2]|0)|0;if((J&K|0)!=0|(L&C|0)!=0){b[(c[(c[G>>2]|0)+4>>2]|0)+(c[S>>2]<<1)>>1]=c[y>>2];c[(c[(c[G>>2]|0)+32>>2]|0)+(c[S>>2]<<2)>>2]=35690;c[S>>2]=(c[S>>2]|0)+1}c[y>>2]=(c[y>>2]|0)+1}a:do if(0!=0?1:(c[(c[u>>2]|0)+56+4>>2]&-2147483648|0)!=0){c[y>>2]=63;while(1){if((c[y>>2]|0)>=(b[(c[I>>2]|0)+34>>1]|0))break a;b[(c[(c[G>>2]|0)+4>>2]|0)+(c[S>>2]<<1)>>1]=c[y>>2];c[(c[(c[G>>2]|0)+32>>2]|0)+(c[S>>2]<<2)>>2]=35690;c[S>>2]=(c[S>>2]|0)+1;c[y>>2]=(c[y>>2]|0)+1}}while(0);b[(c[(c[G>>2]|0)+4>>2]|0)+(c[S>>2]<<1)>>1]=-1;c[(c[(c[G>>2]|0)+32>>2]|0)+(c[S>>2]<<2)>>2]=35690;K=(c[N>>2]|0)+72|0;L=c[K>>2]|0;c[K>>2]=L+1;c[(c[O>>2]|0)+8>>2]=L;Rw(c[X>>2]|0,56,c[(c[O>>2]|0)+8>>2]|0,(c[E>>2]|0)+1|0)|0;Az(c[N>>2]|0,c[G>>2]|0);iA(c[N>>2]|0);c[U>>2]=(c[(c[c[t>>2]>>2]|0)+4>>2]|0)+8+((d[(c[O>>2]|0)+44>>0]|0)*72|0);if((d[(c[U>>2]|0)+36+1>>0]|0)>>>4&1){c[M>>2]=c[(c[U>>2]|0)+28>>2];c[P>>2]=Rw(c[X>>2]|0,22,0,0)|0;Vw(c[X>>2]|0,16,c[M>>2]|0,0,c[(c[U>>2]|0)+24>>2]|0)|0;c[R>>2]=xz(c[X>>2]|0,18,c[M>>2]|0)|0}else c[R>>2]=xz(c[X>>2]|0,108,c[(c[O>>2]|0)+4>>2]|0)|0;if(c[T>>2]|0){c[A>>2]=Cz(c[X>>2]|0)|0;LA(c[N>>2]|0,c[T>>2]|0,c[A>>2]|0,16);M=(c[H>>2]|0)+36|0;c[M>>2]=c[M>>2]|131072}c[W>>2]=Wz(c[N>>2]|0)|0;c[V>>2]=Xz(c[N>>2]|0,c[G>>2]|0,c[(c[O>>2]|0)+4>>2]|0,c[W>>2]|0,0,0,0,0)|0;Rw(c[X>>2]|0,110,c[(c[O>>2]|0)+8>>2]|0,c[W>>2]|0)|0;Fh(c[X>>2]|0,16);if(c[T>>2]|0)Gz(c[X>>2]|0,c[A>>2]|0);j=c[X>>2]|0;if((d[(c[U>>2]|0)+36+1>>0]|0)>>>4&1){Lz(j,c[P>>2]|0,(c[V>>2]|0)+(c[S>>2]|0)|0);TC(c[X>>2]|0,c[R>>2]|0,c[(c[O>>2]|0)+4>>2]|0,c[(c[U>>2]|0)+32>>2]|0,1);Ez(c[X>>2]|0,c[R>>2]|0)|0;V=(c[U>>2]|0)+36+1|0;a[V>>0]=a[V>>0]&-17}else Rw(j,7,c[(c[O>>2]|0)+4>>2]|0,(c[R>>2]|0)+1|0)|0;Fh(c[X>>2]|0,3);Fz(c[X>>2]|0,c[R>>2]|0);_z(c[N>>2]|0,c[W>>2]|0);gA(c[N>>2]|0);Fz(c[X>>2]|0,c[Q>>2]|0);W=c[N>>2]|0;W=c[W>>2]|0;X=c[T>>2]|0;Zu(W,X);i=Y;return}function lD(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;O=i;i=i+256|0;H=O+40|0;G=O+32|0;J=O+24|0;I=O+16|0;F=O+8|0;E=O;s=O+144|0;m=O+140|0;n=O+136|0;o=O+132|0;t=O+128|0;u=O+124|0;p=O+148|0;B=O+120|0;z=O+116|0;D=O+112|0;q=O+108|0;w=O+104|0;x=O+100|0;A=O+96|0;v=O+92|0;L=O+88|0;C=O+60|0;r=O+152|0;K=O+56|0;y=O+52|0;M=O+48|0;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[t>>2]=j;c[u>>2]=k;b[p>>1]=l;c[B>>2]=0;do if((d[(c[m>>2]|0)+453>>0]|0|0)==2){c[z>>2]=(c[n>>2]|0)+8+((d[(c[o>>2]|0)+44>>0]|0)*72|0);c[D>>2]=c[(c[m>>2]|0)+8>>2];c[q>>2]=c[c[m>>2]>>2];c[w>>2]=c[(c[m>>2]|0)+468>>2];c[A>>2]=c[(c[o>>2]|0)+64>>2];c[v>>2]=c[(c[A>>2]|0)+36>>2];if((c[v>>2]&8192|0)==0?((e[p>>1]|0)&64|0)==0:0){do if(c[v>>2]&48)m=1;else{if((c[v>>2]&1024|0)==0?(e[(c[A>>2]|0)+24>>1]|0|0)>0:0){m=1;break}m=((e[p>>1]|0)&3|0)!=0}while(0);c[x>>2]=m&1;cg(C,c[q>>2]|0,r,100,1e9);AD(C,(c[x>>2]|0)!=0?35264:35271);m=c[z>>2]|0;if(c[(c[z>>2]|0)+20>>2]|0){c[E>>2]=d[m+40>>0];$z(C,35276,E)}else{c[F>>2]=c[m+8>>2];$z(C,35289,F)}if(c[(c[z>>2]|0)+12>>2]|0){c[I>>2]=c[(c[z>>2]|0)+12>>2];$z(C,35299,I)}do if(!(c[v>>2]&1280)){c[K>>2]=0;c[y>>2]=c[(c[A>>2]|0)+24+4>>2];if(((d[(c[(c[z>>2]|0)+16>>2]|0)+42>>0]|0)&32|0)!=0?(a[(c[y>>2]|0)+55>>0]&3|0)==2:0){if(c[x>>2]|0)c[K>>2]=35306}else N=19;do if((N|0)==19){if(c[v>>2]&131072){c[K>>2]=35318;break}if(c[v>>2]&16384){c[K>>2]=35351;break}if(c[v>>2]&64){c[K>>2]=35376;break}else{c[K>>2]=35394;break}}while(0);if(c[K>>2]|0){aA(C,35403,7);N=c[K>>2]|0;c[J>>2]=c[c[y>>2]>>2];$z(C,N,J);BD(C,c[A>>2]|0)}}else{if((c[v>>2]&256|0)!=0?(c[v>>2]&15|0)!=0:0){do if(!(c[v>>2]&5)){if((c[v>>2]&48|0)==48){c[M>>2]=35413;break}if(c[v>>2]&32){c[M>>2]=35427;break}else{c[M>>2]=35429;break}}else c[M>>2]=35411;while(0);c[G>>2]=c[M>>2];$z(C,35431,G);break}if(c[v>>2]&1024){N=c[(c[A>>2]|0)+24+8>>2]|0;c[H>>2]=c[(c[A>>2]|0)+24>>2];c[H+4>>2]=N;$z(C,35469,H)}}while(0);c[L>>2]=eg(C)|0;c[B>>2]=Uw(c[D>>2]|0,161,c[w>>2]|0,c[t>>2]|0,c[u>>2]|0,c[L>>2]|0,-1)|0;break}c[s>>2]=0;N=c[s>>2]|0;i=O;return N|0}while(0);c[s>>2]=c[B>>2];N=c[s>>2]|0;i=O;return N|0}function mD(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var 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,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;Za=i;i=i+368|0;Ia=Za+8|0;Ja=Za+352|0;Z=Za+348|0;Ka=Za;Oa=Za+344|0;Ha=Za+340|0;Na=Za+336|0;F=Za+332|0;N=Za+328|0;Fa=Za+324|0;Ta=Za+320|0;Ga=Za+316|0;Wa=Za+312|0;Va=Za+308|0;Ua=Za+304|0;Ma=Za+300|0;Ya=Za+296|0;E=Za+292|0;v=Za+288|0;La=Za+284|0;K=Za+280|0;l=Za+276|0;k=Za+272|0;A=Za+268|0;z=Za+264|0;D=Za+260|0;B=Za+256|0;u=Za+252|0;t=Za+248|0;m=Za+244|0;o=Za+240|0;n=Za+236|0;p=Za+232|0;r=Za+228|0;s=Za+224|0;q=Za+220|0;M=Za+358|0;V=Za+216|0;S=Za+212|0;R=Za+208|0;W=Za+204|0;J=Za+200|0;X=Za+196|0;L=Za+192|0;P=Za+188|0;ba=Za+184|0;w=Za+180|0;O=Za+176|0;Y=Za+172|0;I=Za+363|0;G=Za+362|0;H=Za+361|0;x=Za+168|0;y=Za+360|0;T=Za+164|0;U=Za+160|0;Q=Za+156|0;sa=Za+152|0;qa=Za+148|0;na=Za+144|0;aa=Za+140|0;za=Za+136|0;Ba=Za+132|0;Aa=Za+128|0;ca=Za+124|0;ea=Za+120|0;Ca=Za+116|0;ha=Za+112|0;Da=Za+356|0;ma=Za+108|0;xa=Za+104|0;ja=Za+100|0;la=Za+96|0;ta=Za+92|0;ga=Za+88|0;oa=Za+84|0;ra=Za+80|0;wa=Za+76|0;pa=Za+72|0;ia=Za+68|0;va=Za+64|0;_=Za+60|0;ya=Za+56|0;fa=Za+52|0;ua=Za+48|0;ka=Za+44|0;da=Za+40|0;$=Za+36|0;Qa=Za+32|0;Xa=Za+28|0;Ra=Za+24|0;Sa=Za+20|0;Pa=Za+16|0;c[Ja>>2]=f;c[Z>>2]=g;g=Ka;c[g>>2]=h;c[g+4>>2]=j;c[K>>2]=0;c[l>>2]=0;c[Ua>>2]=c[c[Ja>>2]>>2];c[Ya>>2]=c[(c[Ua>>2]|0)+8>>2];c[Wa>>2]=(c[Ja>>2]|0)+328;c[Ma>>2]=c[c[Ua>>2]>>2];c[Ta>>2]=(c[Ja>>2]|0)+736+((c[Z>>2]|0)*80|0);c[Ga>>2]=c[(c[Ta>>2]|0)+64>>2];c[E>>2]=(c[(c[Ja>>2]|0)+4>>2]|0)+8+((d[(c[Ta>>2]|0)+44>>0]|0)*72|0);c[Na>>2]=c[(c[E>>2]|0)+44>>2];g=Ka;h=c[g>>2]|0;g=c[g+4>>2]|0;j=nD((c[Ja>>2]|0)+68|0,c[Na>>2]|0)|0;f=(c[Ta>>2]|0)+72|0;c[f>>2]=h&~j;c[f+4>>2]=g&~C;f=(c[Ja>>2]|0)+24|0;f=hR(c[f>>2]|0,c[f+4>>2]|0,c[Z>>2]|0)|0;c[Fa>>2]=f&1;if(c[(c[Ga>>2]|0)+36>>2]&64)h=(e[(c[Ja>>2]|0)+34>>1]&32|0)==0;else h=0;c[N>>2]=h&1;f=Cz(c[Ya>>2]|0)|0;c[(c[Ta>>2]|0)+16>>2]=f;c[(c[Ta>>2]|0)+12>>2]=f;c[v>>2]=f;f=Cz(c[Ya>>2]|0)|0;c[(c[Ta>>2]|0)+24>>2]=f;c[La>>2]=f;if((d[(c[Ta>>2]|0)+44>>0]|0)>0?(d[(c[E>>2]|0)+36>>0]&8|0)!=0:0){g=(c[Ua>>2]|0)+76|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[c[Ta>>2]>>2]=f;Rw(c[Ya>>2]|0,22,0,c[c[Ta>>2]>>2]|0)|0}do if(!((d[(c[E>>2]|0)+36+1>>0]|0)>>>4&1)){h=c[Ga>>2]|0;if(c[(c[Ga>>2]|0)+36>>2]&1024){c[D>>2]=e[h+40>>1];iA(c[Ua>>2]|0);c[A>>2]=kA(c[Ua>>2]|0,(c[D>>2]|0)+2|0)|0;c[z>>2]=c[(c[Ta>>2]|0)+12>>2];c[Oa>>2]=0;while(1){if((c[Oa>>2]|0)>=(c[D>>2]|0))break;c[B>>2]=(c[A>>2]|0)+(c[Oa>>2]|0)+2;c[Va>>2]=c[(c[(c[Ga>>2]|0)+48>>2]|0)+(c[Oa>>2]<<2)>>2];do if(c[Va>>2]|0){h=c[Ua>>2]|0;j=c[Va>>2]|0;if(e[(c[Va>>2]|0)+18>>1]&1){oD(h,j,c[Ta>>2]|0,c[Oa>>2]|0,c[Fa>>2]|0,c[B>>2]|0)|0;c[z>>2]=c[(c[Ta>>2]|0)+16>>2];break}else{xA(h,c[(c[j>>2]|0)+16>>2]|0,c[B>>2]|0);break}}while(0);c[Oa>>2]=(c[Oa>>2]|0)+1}Rw(c[Ya>>2]|0,22,c[(c[Ga>>2]|0)+24>>2]|0,c[A>>2]|0)|0;Rw(c[Ya>>2]|0,22,c[D>>2]|0,(c[A>>2]|0)+1|0)|0;Uw(c[Ya>>2]|0,11,c[Na>>2]|0,c[z>>2]|0,c[A>>2]|0,c[(c[Ga>>2]|0)+24+8>>2]|0,(d[(c[Ga>>2]|0)+24+4>>0]|0)!=0?-11:-2)|0;a[(c[Ga>>2]|0)+24+4>>0]=0;c[Oa>>2]=0;while(1){if(!((c[Oa>>2]|0)<(c[D>>2]|0)?(c[Oa>>2]|0)<16:0))break;if(e[(c[Ga>>2]|0)+24+6>>1]>>c[Oa>>2]&1)pD(c[Ta>>2]|0,c[(c[(c[Ga>>2]|0)+48>>2]|0)+(c[Oa>>2]<<2)>>2]|0);c[Oa>>2]=(c[Oa>>2]|0)+1}c[(c[Ta>>2]|0)+48>>2]=c[Na>>2];a[(c[Ta>>2]|0)+45>>0]=(d[(c[Ja>>2]|0)+38>>0]|0)!=0?160:154;Ha=Bz(c[Ya>>2]|0)|0;c[(c[Ta>>2]|0)+52>>2]=Ha;nA(c[Ua>>2]|0,c[A>>2]|0,(c[D>>2]|0)+2|0);gA(c[Ua>>2]|0);break}if((c[h+36>>2]&256|0)!=0?(c[(c[Ga>>2]|0)+36>>2]&5|0)!=0:0){c[Va>>2]=c[c[(c[Ga>>2]|0)+48>>2]>>2];Ga=(c[Ua>>2]|0)+76|0;Ha=(c[Ga>>2]|0)+1|0;c[Ga>>2]=Ha;c[l>>2]=Ha;c[K>>2]=oD(c[Ua>>2]|0,c[Va>>2]|0,c[Ta>>2]|0,0,c[Fa>>2]|0,c[l>>2]|0)|0;if((c[K>>2]|0)!=(c[l>>2]|0))_z(c[Ua>>2]|0,c[l>>2]|0);c[F>>2]=c[(c[Ta>>2]|0)+16>>2];Rw(c[Ya>>2]|0,38,c[K>>2]|0,c[F>>2]|0)|0;Vw(c[Ya>>2]|0,70,c[Na>>2]|0,c[F>>2]|0,c[K>>2]|0)|0;CA(c[Ua>>2]|0,c[K>>2]|0,1);gB(c[Ua>>2]|0,c[Na>>2]|0,-1,c[K>>2]|0);a[(c[Ta>>2]|0)+45>>0]=-96;break}if((c[(c[Ga>>2]|0)+36>>2]&256|0)!=0?(c[(c[Ga>>2]|0)+36>>2]&2|0)!=0:0){c[u>>2]=160;c[m>>2]=0;c[Oa>>2]=0;c[n>>2]=0;c[o>>2]=0;if(c[(c[Ga>>2]|0)+36>>2]&32){Ha=c[Oa>>2]|0;c[Oa>>2]=Ha+1;c[o>>2]=c[(c[(c[Ga>>2]|0)+48>>2]|0)+(Ha<<2)>>2]}if(c[(c[Ga>>2]|0)+36>>2]&16){Ha=c[Oa>>2]|0;c[Oa>>2]=Ha+1;c[n>>2]=c[(c[(c[Ga>>2]|0)+48>>2]|0)+(Ha<<2)>>2]}if(c[Fa>>2]|0){c[Va>>2]=c[o>>2];c[o>>2]=c[n>>2];c[n>>2]=c[Va>>2]}if(c[o>>2]|0){c[p>>2]=c[c[o>>2]>>2];c[r>>2]=DA(c[Ua>>2]|0,c[(c[p>>2]|0)+16>>2]|0,s)|0;Vw(c[Ya>>2]|0,d[35244+((d[c[p>>2]>>0]|0)-80)>>0]|0,c[Na>>2]|0,c[v>>2]|0,c[r>>2]|0)|0;CA(c[Ua>>2]|0,c[r>>2]|0,1);_z(c[Ua>>2]|0,c[s>>2]|0);pD(c[Ta>>2]|0,c[o>>2]|0)}else Rw(c[Ya>>2]|0,(c[Fa>>2]|0)!=0?105:108,c[Na>>2]|0,c[v>>2]|0)|0;if(c[n>>2]|0){c[q>>2]=c[c[n>>2]>>2];Ga=(c[Ua>>2]|0)+76|0;Ha=(c[Ga>>2]|0)+1|0;c[Ga>>2]=Ha;c[m>>2]=Ha;xA(c[Ua>>2]|0,c[(c[q>>2]|0)+16>>2]|0,c[m>>2]|0);if((d[c[q>>2]>>0]|0)!=82?(d[c[q>>2]>>0]|0)!=80:0)c[u>>2]=(c[Fa>>2]|0)!=0?82:80;else c[u>>2]=(c[Fa>>2]|0)!=0?81:83;pD(c[Ta>>2]|0,c[n>>2]|0)}c[t>>2]=Bz(c[Ya>>2]|0)|0;a[(c[Ta>>2]|0)+45>>0]=(c[Fa>>2]|0)!=0?6:7;c[(c[Ta>>2]|0)+48>>2]=c[Na>>2];c[(c[Ta>>2]|0)+52>>2]=c[t>>2];if((c[u>>2]|0)==160)break;Ga=(c[Ua>>2]|0)+76|0;Ha=(c[Ga>>2]|0)+1|0;c[Ga>>2]=Ha;c[K>>2]=Ha;Rw(c[Ya>>2]|0,103,c[Na>>2]|0,c[K>>2]|0)|0;gB(c[Ua>>2]|0,c[Na>>2]|0,-1,c[K>>2]|0);Vw(c[Ya>>2]|0,c[u>>2]|0,c[m>>2]|0,c[v>>2]|0,c[K>>2]|0)|0;Fh(c[Ya>>2]|0,83);break}h=c[Ga>>2]|0;if(c[(c[Ga>>2]|0)+36>>2]&512){b[M>>1]=b[h+24>>1]|0;c[S>>2]=0;c[R>>2]=0;c[w>>2]=0;a[I>>0]=0;a[G>>0]=0;a[H>>0]=0;c[P>>2]=c[(c[Ga>>2]|0)+24+4>>2];c[ba>>2]=c[(c[Ta>>2]|0)+8>>2];if(((e[(c[Ja>>2]|0)+34>>1]&1|0)!=0?(a[(c[Ja>>2]|0)+36>>0]|0)>0:0)?(e[(c[P>>2]|0)+50>>1]|0)>(e[M>>1]|0):0){a[G>>0]=1;c[w>>2]=1}c[Oa>>2]=e[M>>1];if(c[(c[Ga>>2]|0)+36>>2]&32){Ea=c[Oa>>2]|0;c[Oa>>2]=Ea+1;c[S>>2]=c[(c[(c[Ga>>2]|0)+48>>2]|0)+(Ea<<2)>>2];c[w>>2]=1}if(c[(c[Ga>>2]|0)+36>>2]&16){Ea=c[Oa>>2]|0;c[Oa>>2]=Ea+1;c[R>>2]=c[(c[(c[Ga>>2]|0)+48>>2]|0)+(Ea<<2)>>2];c[w>>2]=1;if(e[(c[R>>2]|0)+20>>1]&256){Da=(c[Ua>>2]|0)+76|0;Ea=(c[Da>>2]|0)+1|0;c[Da>>2]=Ea;c[(c[Ta>>2]|0)+36>>2]=Ea;Rw(c[Ya>>2]|0,22,c[Fa>>2]^(d[(c[(c[P>>2]|0)+28>>2]|0)+(e[M>>1]|0)>>0]|0)==1,c[(c[Ta>>2]|0)+36>>2]|0)|0;Ea=Bz(c[Ya>>2]|0)|0;c[(c[Ta>>2]|0)+40>>2]=Ea}if(((c[S>>2]|0)==0?(Ea=b[(c[(c[P>>2]|0)+4>>2]|0)+(e[M>>1]<<1)>>1]|0,c[Oa>>2]=Ea,(Ea|0)>=0):0)?(d[(c[(c[(c[P>>2]|0)+12>>2]|0)+4>>2]|0)+((c[Oa>>2]|0)*24|0)+20>>0]|0)==0:0)a[G>>0]=1}if((e[M>>1]|0)<(e[(c[P>>2]|0)+50>>1]|0)?(c[Fa>>2]|0)==((d[(c[(c[P>>2]|0)+28>>2]|0)+(e[M>>1]|0)>>0]|0)==0|0):0)Ea=64;else Ea=62;if(((Ea|0)==62?(c[Fa>>2]|0)!=0:0)?(e[(c[P>>2]|0)+50>>1]|0)==(e[M>>1]|0):0)Ea=64;if((Ea|0)==64){c[x>>2]=c[R>>2];c[R>>2]=c[S>>2];c[S>>2]=c[x>>2];a[y>>0]=a[G>>0]|0;a[G>>0]=a[H>>0]|0;a[H>>0]=a[y>>0]|0}c[V>>2]=qD(c[Ua>>2]|0,c[Ta>>2]|0,c[Fa>>2]|0,c[w>>2]|0,Y)|0;if(c[Y>>2]|0)a[I>>0]=a[(c[Y>>2]|0)+(e[M>>1]|0)>>0]|0;c[F>>2]=c[(c[Ta>>2]|0)+16>>2];if(c[S>>2]|0)h=(e[(c[S>>2]|0)+18>>1]&40|0)!=0;else h=1;c[W>>2]=h&1;if(c[R>>2]|0)h=(e[(c[R>>2]|0)+18>>1]&40|0)!=0;else h=1;c[J>>2]=h&1;if(c[S>>2]|0)h=1;else h=(e[M>>1]|0)>0;c[X>>2]=h&1;c[L>>2]=e[M>>1];if(!(c[S>>2]|0)){if(a[G>>0]|0){Rw(c[Ya>>2]|0,25,0,(c[V>>2]|0)+(e[M>>1]|0)|0)|0;c[L>>2]=(c[L>>2]|0)+1;c[W>>2]=0;c[X>>2]=1}}else{c[T>>2]=c[(c[c[S>>2]>>2]|0)+16>>2];xA(c[Ua>>2]|0,c[T>>2]|0,(c[V>>2]|0)+(e[M>>1]|0)|0);rD(c[Ya>>2]|0,c[Ta>>2]|0,c[S>>2]|0);do if(!(e[(c[S>>2]|0)+20>>1]&0)){if(!(RA(c[T>>2]|0)|0))break;Rw(c[Ya>>2]|0,76,(c[V>>2]|0)+(e[M>>1]|0)|0,c[F>>2]|0)|0}while(0);do if(c[Y>>2]|0){if(((SA(c[T>>2]|0,a[(c[Y>>2]|0)+(e[M>>1]|0)>>0]|0)|0)<<24>>24|0)==65)a[(c[Y>>2]|0)+(e[M>>1]|0)>>0]=65;if(!(sD(c[T>>2]|0,a[(c[Y>>2]|0)+(e[M>>1]|0)>>0]|0)|0))break;a[(c[Y>>2]|0)+(e[M>>1]|0)>>0]=65}while(0);c[L>>2]=(c[L>>2]|0)+1}tD(c[Ua>>2]|0,c[V>>2]|0,(c[L>>2]|0)-(d[G>>0]|0)|0,c[Y>>2]|0);c[O>>2]=d[35248+((c[X>>2]<<2)+(c[W>>2]<<1)+(c[Fa>>2]|0))>>0];Eh(c[Ya>>2]|0,c[O>>2]|0,c[ba>>2]|0,c[F>>2]|0,c[V>>2]|0,c[L>>2]|0)|0;c[L>>2]=e[M>>1];do if(c[R>>2]|0){c[U>>2]=c[(c[c[R>>2]>>2]|0)+16>>2];oA(c[Ua>>2]|0,(c[V>>2]|0)+(e[M>>1]|0)|0,1);xA(c[Ua>>2]|0,c[U>>2]|0,(c[V>>2]|0)+(e[M>>1]|0)|0);rD(c[Ya>>2]|0,c[Ta>>2]|0,c[R>>2]|0);do if(!(e[(c[R>>2]|0)+20>>1]&0)){if(!(RA(c[U>>2]|0)|0))break;Rw(c[Ya>>2]|0,76,(c[V>>2]|0)+(e[M>>1]|0)|0,c[F>>2]|0)|0}while(0);do if(((SA(c[U>>2]|0,a[I>>0]|0)|0)<<24>>24|0)!=65){if(sD(c[U>>2]|0,a[I>>0]|0)|0)break;tD(c[Ua>>2]|0,(c[V>>2]|0)+(e[M>>1]|0)|0,1,I)}while(0);c[L>>2]=(c[L>>2]|0)+1}else{if(!(a[H>>0]|0))break;Rw(c[Ya>>2]|0,25,0,(c[V>>2]|0)+(e[M>>1]|0)|0)|0;c[J>>2]=0;c[L>>2]=(c[L>>2]|0)+1}while(0);Sf(c[Ma>>2]|0,c[Y>>2]|0);Ea=Bz(c[Ya>>2]|0)|0;c[(c[Ta>>2]|0)+52>>2]=Ea;if(c[L>>2]|0){c[O>>2]=d[35256+((c[Fa>>2]<<1)+(c[J>>2]|0))>>0];Eh(c[Ya>>2]|0,c[O>>2]|0,c[ba>>2]|0,c[F>>2]|0,c[V>>2]|0,c[L>>2]|0)|0}pD(c[Ta>>2]|0,c[S>>2]|0);pD(c[Ta>>2]|0,c[R>>2]|0);do if(!(c[N>>2]|0)){if(!(d[(c[(c[P>>2]|0)+12>>2]|0)+42>>0]&32))if(d[(c[Ja>>2]|0)+38>>0]|0){Ea=(c[Ua>>2]|0)+76|0;Ha=(c[Ea>>2]|0)+1|0;c[Ea>>2]=Ha;c[K>>2]=Ha;Rw(c[Ya>>2]|0,113,c[ba>>2]|0,c[K>>2]|0)|0;gB(c[Ua>>2]|0,c[Na>>2]|0,-1,c[K>>2]|0);Vw(c[Ya>>2]|0,70,c[Na>>2]|0,0,c[K>>2]|0)|0;break}else{uD(c[Ja>>2]|0,c[P>>2]|0,c[Na>>2]|0,c[ba>>2]|0);break}if((c[Na>>2]|0)==(c[ba>>2]|0))break;c[Q>>2]=Ej(c[(c[P>>2]|0)+12>>2]|0)|0;c[K>>2]=kA(c[Ua>>2]|0,e[(c[Q>>2]|0)+50>>1]|0)|0;c[Oa>>2]=0;while(1){if((c[Oa>>2]|0)>=(e[(c[Q>>2]|0)+50>>1]|0))break;c[Ha>>2]=(uA(c[P>>2]|0,b[(c[(c[Q>>2]|0)+4>>2]|0)+(c[Oa>>2]<<1)>>1]|0)|0)<<16>>16;Vw(c[Ya>>2]|0,47,c[ba>>2]|0,c[Ha>>2]|0,(c[K>>2]|0)+(c[Oa>>2]|0)|0)|0;c[Oa>>2]=(c[Oa>>2]|0)+1}Eh(c[Ya>>2]|0,68,c[Na>>2]|0,c[La>>2]|0,c[K>>2]|0,e[(c[Q>>2]|0)+50>>1]|0)|0}while(0);do if(!(c[(c[Ga>>2]|0)+36>>2]&4096)){h=(c[Ta>>2]|0)+45|0;if(c[Fa>>2]|0){a[h>>0]=6;break}else{a[h>>0]=7;break}}else a[(c[Ta>>2]|0)+45>>0]=-96;while(0);c[(c[Ta>>2]|0)+48>>2]=c[ba>>2];a[(c[Ta>>2]|0)+46>>0]=(c[(c[Ga>>2]|0)+36>>2]&65536|0)!=0?1:0;if(c[(c[Ga>>2]|0)+36>>2]&15)break;a[(c[Ta>>2]|0)+47>>0]=1;break}if(!(c[h+36>>2]&8192))if((d[(c[E>>2]|0)+36+1>>0]|0)>>>5&1){a[(c[Ta>>2]|0)+45>>0]=-96;break}else{a[(c[Ta>>2]|0)+45>>0]=a[35260+(c[Fa>>2]|0)>>0]|0;c[(c[Ta>>2]|0)+48>>2]=c[Na>>2];Ha=1+(Rw(c[Ya>>2]|0,d[35262+(c[Fa>>2]|0)>>0]|0,c[Na>>2]|0,c[v>>2]|0)|0)|0;c[(c[Ta>>2]|0)+52>>2]=Ha;a[(c[Ta>>2]|0)+47>>0]=1;break}c[na>>2]=0;h=(c[Ua>>2]|0)+72|0;Fa=c[h>>2]|0;c[h>>2]=Fa+1;c[aa>>2]=Fa;Fa=(c[Ua>>2]|0)+76|0;h=(c[Fa>>2]|0)+1|0;c[Fa>>2]=h;c[za>>2]=h;c[Ba>>2]=0;c[Aa>>2]=0;c[ca>>2]=Cz(c[Ya>>2]|0)|0;c[Ca>>2]=0;c[ma>>2]=0;c[xa>>2]=c[(c[E>>2]|0)+16>>2];c[Va>>2]=c[c[(c[Ga>>2]|0)+48>>2]>>2];c[sa>>2]=c[(c[Va>>2]|0)+12>>2];a[(c[Ta>>2]|0)+45>>0]=15;c[(c[Ta>>2]|0)+48>>2]=c[za>>2];h=c[Ja>>2]|0;a:do if((d[(c[Ja>>2]|0)+41>>0]|0)>1){c[ja>>2]=(d[h+41>>0]|0)-(c[Z>>2]|0)-1;c[qa>>2]=yh(c[Ma>>2]|0,80+((c[ja>>2]|0)*72|0)|0,0)|0;if(!(c[qa>>2]|0)){Wa=Ka;Ya=c[Wa+4>>2]|0;Xa=Ia;c[Xa>>2]=c[Wa>>2];c[Xa+4>>2]=Ya;Xa=Ia;Ya=Xa;Ya=c[Ya>>2]|0;Xa=Xa+4|0;Xa=c[Xa>>2]|0;C=Xa;i=Za;return Ya|0}c[(c[qa>>2]|0)+4>>2]=(c[ja>>2]|0)+1&255;c[c[qa>>2]>>2]=c[(c[qa>>2]|0)+4>>2];g=(c[qa>>2]|0)+8|0;h=c[E>>2]|0;j=g+72|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0));c[la>>2]=(c[(c[Ja>>2]|0)+4>>2]|0)+8;c[Ha>>2]=1;while(1){if((c[Ha>>2]|0)>(c[ja>>2]|0))break a;g=(c[qa>>2]|0)+8+((c[Ha>>2]|0)*72|0)|0;h=(c[la>>2]|0)+((d[(c[Ta>>2]|0)+((c[Ha>>2]|0)*80|0)+44>>0]|0)*72|0)|0;j=g+72|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0));c[Ha>>2]=(c[Ha>>2]|0)+1}}else c[qa>>2]=c[h+4>>2];while(0);if(!(e[(c[Ja>>2]|0)+34>>1]&8)){if(!(d[(c[xa>>2]|0)+42>>0]&32)){Ga=(c[Ua>>2]|0)+76|0;Ha=(c[Ga>>2]|0)+1|0;c[Ga>>2]=Ha;c[Ba>>2]=Ha;Rw(c[Ya>>2]|0,25,0,c[Ba>>2]|0)|0}else{c[ta>>2]=Ej(c[xa>>2]|0)|0;Ga=(c[Ua>>2]|0)+72|0;Ha=c[Ga>>2]|0;c[Ga>>2]=Ha+1;c[Ba>>2]=Ha;Rw(c[Ya>>2]|0,57,c[Ba>>2]|0,e[(c[ta>>2]|0)+50>>1]|0)|0;Az(c[Ua>>2]|0,c[ta>>2]|0)}Ga=(c[Ua>>2]|0)+76|0;Ha=(c[Ga>>2]|0)+1|0;c[Ga>>2]=Ha;c[Aa>>2]=Ha}c[ea>>2]=Rw(c[Ya>>2]|0,22,0,c[za>>2]|0)|0;if((c[(c[Wa>>2]|0)+12>>2]|0)>1){c[ga>>2]=0;while(1){if((c[ga>>2]|0)>=(c[(c[Wa>>2]|0)+12>>2]|0))break;c[oa>>2]=c[(c[(c[Wa>>2]|0)+20>>2]|0)+((c[ga>>2]|0)*48|0)>>2];if(((((c[(c[Wa>>2]|0)+20>>2]|0)+((c[ga>>2]|0)*48|0)|0)!=(c[Va>>2]|0)?(c[(c[oa>>2]|0)+4>>2]&1|0)==0:0)?(e[(c[(c[Wa>>2]|0)+20>>2]|0)+((c[ga>>2]|0)*48|0)+20>>1]&6|0)==0:0)?(e[(c[(c[Wa>>2]|0)+20>>2]|0)+((c[ga>>2]|0)*48|0)+18>>1]&8191|0)!=0:0){c[oa>>2]=ny(c[Ma>>2]|0,c[oa>>2]|0,0)|0;c[ma>>2]=az(c[Ma>>2]|0,c[ma>>2]|0,c[oa>>2]|0)|0}c[ga>>2]=(c[ga>>2]|0)+1}if(c[ma>>2]|0)c[ma>>2]=rv(c[Ua>>2]|0,328,0,c[ma>>2]|0,0)|0}b[Da>>1]=240;c[ha>>2]=0;while(1){if((c[ha>>2]|0)>=(c[(c[sa>>2]|0)+12>>2]|0))break;c[ra>>2]=(c[(c[sa>>2]|0)+20>>2]|0)+((c[ha>>2]|0)*48|0);if(!((c[(c[ra>>2]|0)+8>>2]|0)!=(c[Na>>2]|0)?(e[(c[ra>>2]|0)+18>>1]&1024|0)==0:0)){c[pa>>2]=c[c[ra>>2]>>2];c[ia>>2]=0;if((c[ma>>2]|0)!=0?(c[(c[pa>>2]|0)+4>>2]&1|0)==0:0){c[(c[ma>>2]|0)+12>>2]=c[pa>>2];c[pa>>2]=c[ma>>2]}c[wa>>2]=RC(c[Ua>>2]|0,c[qa>>2]|0,c[pa>>2]|0,0,0,b[Da>>1]|0,c[aa>>2]|0)|0;if(c[wa>>2]|0){c[_>>2]=lD(c[Ua>>2]|0,c[qa>>2]|0,(c[wa>>2]|0)+736|0,c[Z>>2]|0,d[(c[Ta>>2]|0)+44>>0]|0,0)|0;do if(!(e[(c[Ja>>2]|0)+34>>1]&8)){c[fa>>2]=(c[ha>>2]|0)==((c[(c[sa>>2]|0)+12>>2]|0)-1|0)?-1:c[ha>>2]|0;if(!(d[(c[xa>>2]|0)+42>>0]&32)){c[ya>>2]=zA(c[Ua>>2]|0,c[xa>>2]|0,-1,c[Na>>2]|0,c[Aa>>2]|0,0)|0;c[ia>>2]=Eh(c[Ya>>2]|0,131,c[Ba>>2]|0,0,c[ya>>2]|0,c[fa>>2]|0)|0;break}c[ua>>2]=Ej(c[xa>>2]|0)|0;c[ka>>2]=e[(c[ua>>2]|0)+50>>1];c[ya>>2]=kA(c[Ua>>2]|0,c[ka>>2]|0)|0;c[da>>2]=0;while(1){if((c[da>>2]|0)>=(c[ka>>2]|0))break;c[$>>2]=b[(c[(c[ua>>2]|0)+4>>2]|0)+(c[da>>2]<<1)>>1];vD(c[Ua>>2]|0,c[xa>>2]|0,c[$>>2]|0,c[Na>>2]|0,(c[ya>>2]|0)+(c[da>>2]|0)|0);c[da>>2]=(c[da>>2]|0)+1}if(c[fa>>2]|0)c[ia>>2]=Eh(c[Ya>>2]|0,69,c[Ba>>2]|0,0,c[ya>>2]|0,c[ka>>2]|0)|0;do if((c[fa>>2]|0)>=0){Vw(c[Ya>>2]|0,49,c[ya>>2]|0,c[ka>>2]|0,c[Aa>>2]|0)|0;Vw(c[Ya>>2]|0,110,c[Ba>>2]|0,c[Aa>>2]|0,0)|0;if(!(c[fa>>2]|0))break;Fh(c[Ya>>2]|0,16)}while(0);nA(c[Ua>>2]|0,c[ya>>2]|0,c[ka>>2]|0)}while(0);Rw(c[Ya>>2]|0,14,c[za>>2]|0,c[ca>>2]|0)|0;if(c[ia>>2]|0)Fz(c[Ya>>2]|0,c[ia>>2]|0);if(a[(c[wa>>2]|0)+39>>0]|0)c[Ca>>2]=1;c[va>>2]=c[(c[wa>>2]|0)+736+64>>2];do if(c[(c[va>>2]|0)+36>>2]&512){if((c[ha>>2]|0)!=0?(c[(c[va>>2]|0)+24+4>>2]|0)!=(c[na>>2]|0):0){Ea=168;break}if((d[(c[xa>>2]|0)+42>>0]&32|0)!=0?(a[(c[(c[va>>2]|0)+24+4>>2]|0)+55>>0]&3|0)==2:0){Ea=168;break}c[na>>2]=c[(c[va>>2]|0)+24+4>>2];b[Da>>1]=e[Da>>1]|4096}else Ea=168;while(0);if((Ea|0)==168){Ea=0;c[na>>2]=0}SC(c[wa>>2]|0)}}c[ha>>2]=(c[ha>>2]|0)+1}c[(c[Ta>>2]|0)+56>>2]=c[na>>2];if(c[na>>2]|0)c[(c[Ta>>2]|0)+8>>2]=c[aa>>2];if(c[ma>>2]|0){c[(c[ma>>2]|0)+12>>2]=0;Zu(c[Ma>>2]|0,c[ma>>2]|0)}Ga=c[Ya>>2]|0;Ha=c[ea>>2]|0;wD(Ga,Ha,Bz(c[Ya>>2]|0)|0);Ez(c[Ya>>2]|0,c[(c[Ta>>2]|0)+12>>2]|0)|0;Gz(c[Ya>>2]|0,c[ca>>2]|0);if((d[(c[Ja>>2]|0)+41>>0]|0)>1)Sf(c[Ma>>2]|0,c[qa>>2]|0);if(!(c[Ca>>2]|0))pD(c[Ta>>2]|0,c[Va>>2]|0)}else{c[k>>2]=c[(c[E>>2]|0)+28>>2];Vw(c[Ya>>2]|0,16,c[k>>2]|0,0,c[(c[E>>2]|0)+24>>2]|0)|0;Ha=Rw(c[Ya>>2]|0,18,c[k>>2]|0,c[v>>2]|0)|0;c[(c[Ta>>2]|0)+52>>2]=Ha;a[(c[Ta>>2]|0)+45>>0]=13}while(0);c[Va>>2]=c[(c[Wa>>2]|0)+20>>2];c[Oa>>2]=c[(c[Wa>>2]|0)+12>>2];while(1){if((c[Oa>>2]|0)<=0)break;c[Xa>>2]=0;do if(!(e[(c[Va>>2]|0)+20>>1]&6)){Ga=(c[Va>>2]|0)+40|0;Ha=(c[Ta>>2]|0)+72|0;if((c[Ga>>2]&c[Ha>>2]|0)!=0?1:(c[Ga+4>>2]&c[Ha+4>>2]|0)!=0){a[(c[Ja>>2]|0)+39>>0]=1;break}c[Qa>>2]=c[c[Va>>2]>>2];if((c[c[Ta>>2]>>2]|0)!=0?(c[(c[Qa>>2]|0)+4>>2]&1|0)==0:0)break;if(e[(c[Va>>2]|0)+20>>1]&512)c[Xa>>2]=xz(c[Ya>>2]|0,46,c[(c[Ta>>2]|0)+36>>2]|0)|0;LA(c[Ua>>2]|0,c[Qa>>2]|0,c[La>>2]|0,16);if(c[Xa>>2]|0)Fz(c[Ya>>2]|0,c[Xa>>2]|0);Ha=(c[Va>>2]|0)+20|0;b[Ha>>1]=e[Ha>>1]|4}while(0);c[Oa>>2]=(c[Oa>>2]|0)+-1;c[Va>>2]=(c[Va>>2]|0)+48}c[Va>>2]=c[(c[Wa>>2]|0)+20>>2];c[Oa>>2]=c[(c[Wa>>2]|0)+12>>2];while(1){if((c[Oa>>2]|0)<=0)break;if((((((((e[(c[Va>>2]|0)+20>>1]&6|0)==0?(e[(c[Va>>2]|0)+18>>1]&130|0)!=0:0)?(e[(c[Va>>2]|0)+18>>1]&2048|0)!=0:0)?(c[(c[Va>>2]|0)+8>>2]|0)==(c[Na>>2]|0):0)?(c[c[Ta>>2]>>2]|0)==0:0)?(c[Ra>>2]=c[c[Va>>2]>>2],Xa=Ka,c[Pa>>2]=xD(c[Wa>>2]|0,c[Na>>2]|0,c[(c[Va>>2]|0)+12>>2]|0,c[Xa>>2]|0,c[Xa+4>>2]|0,131,0)|0,(c[Pa>>2]|0)!=0):0)?(e[(c[Pa>>2]|0)+20>>1]&4|0)==0:0)?(c[Sa>>2]=yh(c[Ma>>2]|0,48,0)|0,(c[Sa>>2]|0)!=0):0){g=c[Sa>>2]|0;h=c[c[Pa>>2]>>2]|0;j=g+48|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0));c[(c[Sa>>2]|0)+12>>2]=c[(c[Ra>>2]|0)+12>>2];LA(c[Ua>>2]|0,c[Sa>>2]|0,c[La>>2]|0,16);Sf(c[Ma>>2]|0,c[Sa>>2]|0)}c[Oa>>2]=(c[Oa>>2]|0)+-1;c[Va>>2]=(c[Va>>2]|0)+48}b:do if(c[c[Ta>>2]>>2]|0){Xa=Bz(c[Ya>>2]|0)|0;c[(c[Ta>>2]|0)+28>>2]=Xa;Rw(c[Ya>>2]|0,22,1,c[c[Ta>>2]>>2]|0)|0;fC(c[Ua>>2]|0);c[Va>>2]=c[(c[Wa>>2]|0)+20>>2];c[Oa>>2]=0;while(1){if((c[Oa>>2]|0)>=(c[(c[Wa>>2]|0)+12>>2]|0))break b;if((e[(c[Va>>2]|0)+20>>1]&6|0)==0?(Xa=(c[Va>>2]|0)+40|0,Ya=(c[Ta>>2]|0)+72|0,!((c[Xa>>2]&c[Ya>>2]|0)!=0?1:(c[Xa+4>>2]&c[Ya+4>>2]|0)!=0)):0){LA(c[Ua>>2]|0,c[c[Va>>2]>>2]|0,c[La>>2]|0,16);Ya=(c[Va>>2]|0)+20|0;b[Ya>>1]=e[Ya>>1]|4}c[Oa>>2]=(c[Oa>>2]|0)+1;c[Va>>2]=(c[Va>>2]|0)+48}}while(0);Wa=(c[Ta>>2]|0)+72|0;Ya=c[Wa+4>>2]|0;Xa=Ia;c[Xa>>2]=c[Wa>>2];c[Xa+4>>2]=Ya;Xa=Ia;Ya=Xa;Ya=c[Ya>>2]|0;Xa=Xa+4|0;Xa=c[Xa>>2]|0;C=Xa;i=Za;return Ya|0}function nD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;g=h;d=h+16|0;e=h+12|0;f=h+8|0;c[d>>2]=a;c[e>>2]=b;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[d>>2]>>2]|0)){b=6;break}a=c[f>>2]|0;if((c[(c[d>>2]|0)+4+(c[f>>2]<<2)>>2]|0)==(c[e>>2]|0)){b=4;break}c[f>>2]=a+1}if((b|0)==4){e=lR(1,0,a|0)|0;f=g;c[f>>2]=e;c[f+4>>2]=C;f=g;g=f;g=c[g>>2]|0;f=f+4|0;f=c[f>>2]|0;C=f;i=h;return g|0}else if((b|0)==6){f=g;c[f>>2]=0;c[f+4>>2]=0;f=g;g=f;g=c[g>>2]|0;f=f+4|0;f=c[f>>2]|0;C=f;i=h;return g|0}return 0}function oD(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;x=i;i=i+64|0;k=x+48|0;q=x+44|0;r=x+40|0;l=x+36|0;s=x+32|0;m=x+28|0;o=x+24|0;w=x+20|0;u=x+16|0;t=x+12|0;p=x+8|0;v=x+4|0;n=x;c[k>>2]=b;c[q>>2]=e;c[r>>2]=f;c[l>>2]=g;c[s>>2]=h;c[m>>2]=j;c[o>>2]=c[c[q>>2]>>2];c[w>>2]=c[(c[k>>2]|0)+8>>2];if((d[c[o>>2]>>0]|0|0)!=79?(d[c[o>>2]>>0]|0|0)!=73:0){if((d[c[o>>2]>>0]|0|0)==76){c[u>>2]=c[m>>2];Rw(c[w>>2]|0,25,0,c[u>>2]|0)|0;v=c[r>>2]|0;w=c[q>>2]|0;pD(v,w);w=c[u>>2]|0;i=x;return w|0}c[n>>2]=c[(c[r>>2]|0)+64>>2];if(((c[(c[n>>2]|0)+36>>2]&1024|0)==0?(c[(c[n>>2]|0)+24+4>>2]|0)!=0:0)?(d[(c[(c[(c[n>>2]|0)+24+4>>2]|0)+28>>2]|0)+(c[l>>2]|0)>>0]|0|0)!=0:0)c[s>>2]=((c[s>>2]|0)!=0^1)&1;c[u>>2]=c[m>>2];c[t>>2]=PA(c[k>>2]|0,c[o>>2]|0,4,0)|0;if((c[t>>2]|0)==4)c[s>>2]=((c[s>>2]|0)!=0^1)&1;c[p>>2]=c[(c[o>>2]|0)+28>>2];Rw(c[w>>2]|0,(c[s>>2]|0)!=0?105:108,c[p>>2]|0,0)|0;o=(c[n>>2]|0)+36|0;c[o>>2]=c[o>>2]|2048;if(!(c[(c[r>>2]|0)+56>>2]|0)){o=Cz(c[w>>2]|0)|0;c[(c[r>>2]|0)+16>>2]=o}o=(c[r>>2]|0)+56|0;c[o>>2]=(c[o>>2]|0)+1;k=vx(c[c[k>>2]>>2]|0,c[(c[r>>2]|0)+56+4>>2]|0,(c[(c[r>>2]|0)+56>>2]|0)*12|0,0)|0;c[(c[r>>2]|0)+56+4>>2]=k;c[v>>2]=c[(c[r>>2]|0)+56+4>>2];k=(c[r>>2]|0)+56|0;if(!(c[v>>2]|0)){c[k>>2]=0;v=c[r>>2]|0;w=c[q>>2]|0;pD(v,w);w=c[u>>2]|0;i=x;return w|0}c[v>>2]=(c[v>>2]|0)+(((c[k>>2]|0)-1|0)*12|0);c[c[v>>2]>>2]=c[p>>2];m=c[w>>2]|0;k=c[p>>2]|0;l=c[u>>2]|0;if((c[t>>2]|0)==1){t=Rw(m,103,k,l)|0;c[(c[v>>2]|0)+4>>2]=t}else{t=Vw(m,47,k,0,l)|0;c[(c[v>>2]|0)+4>>2]=t}a[(c[v>>2]|0)+8>>0]=(c[s>>2]|0)!=0?4:5;xz(c[w>>2]|0,76,c[u>>2]|0)|0;v=c[r>>2]|0;w=c[q>>2]|0;pD(v,w);w=c[u>>2]|0;i=x;return w|0}c[u>>2]=yA(c[k>>2]|0,c[(c[o>>2]|0)+16>>2]|0,c[m>>2]|0)|0;v=c[r>>2]|0;w=c[q>>2]|0;pD(v,w);w=c[u>>2]|0;i=x;return w|0}function pD(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;i=i+16|0;h=l+8|0;j=l+4|0;k=l;c[h>>2]=f;c[j>>2]=g;c[k>>2]=0;while(1){if(!(c[j>>2]|0)){h=14;break}if((e[(c[j>>2]|0)+20>>1]|0)&4){h=14;break}if((c[c[h>>2]>>2]|0)!=0?(c[(c[c[j>>2]>>2]|0)+4>>2]&1|0)==0:0){h=14;break}f=(c[h>>2]|0)+72|0;g=(c[j>>2]|0)+40|0;if(!((c[f>>2]&c[g>>2]|0)==0?(c[f+4>>2]&c[g+4>>2]|0)==0:0)){h=14;break}if((c[k>>2]|0)!=0?((e[(c[j>>2]|0)+20>>1]|0)&1024|0)!=0:0){g=(c[j>>2]|0)+20|0;b[g>>1]=e[g>>1]|0|512}else{g=(c[j>>2]|0)+20|0;b[g>>1]=e[g>>1]|0|4}if((c[(c[j>>2]|0)+4>>2]|0)<0){h=14;break}c[j>>2]=(c[(c[(c[j>>2]|0)+24>>2]|0)+20>>2]|0)+((c[(c[j>>2]|0)+4>>2]|0)*48|0);g=(c[j>>2]|0)+22|0;a[g>>0]=(a[g>>0]|0)+-1<<24>>24;if(d[(c[j>>2]|0)+22>>0]|0){h=14;break}c[k>>2]=(c[k>>2]|0)+1}if((h|0)==14){i=l;return}}function qD(d,f,g,h,j){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var 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;A=i;i=i+80|0;k=A+60|0;l=A+56|0;m=A+52|0;C=A+48|0;n=A+44|0;q=A+66|0;s=A+64|0;y=A+40|0;B=A+36|0;v=A+32|0;t=A+28|0;p=A+24|0;x=A+20|0;r=A+16|0;z=A+12|0;o=A+8|0;w=A+4|0;u=A;c[k>>2]=d;c[l>>2]=f;c[m>>2]=g;c[C>>2]=h;c[n>>2]=j;c[y>>2]=c[(c[k>>2]|0)+8>>2];c[t>>2]=c[(c[l>>2]|0)+64>>2];b[q>>1]=b[(c[t>>2]|0)+24>>1]|0;b[s>>1]=b[(c[t>>2]|0)+42>>1]|0;c[B>>2]=c[(c[t>>2]|0)+24+4>>2];c[x>>2]=(c[(c[k>>2]|0)+76>>2]|0)+1;c[r>>2]=(e[(c[t>>2]|0)+24>>1]|0)+(c[C>>2]|0);j=(c[k>>2]|0)+76|0;c[j>>2]=(c[j>>2]|0)+(c[r>>2]|0);j=c[c[k>>2]>>2]|0;c[z>>2]=nh(j,dC(c[c[k>>2]>>2]|0,c[B>>2]|0)|0)|0;a:do if(b[s>>1]|0){c[o>>2]=c[(c[l>>2]|0)+8>>2];xz(c[y>>2]|0,(c[m>>2]|0)!=0?105:108,c[o>>2]|0)|0;c[p>>2]=Yw(c[y>>2]|0,13)|0;C=Eh(c[y>>2]|0,(c[m>>2]|0)!=0?63:66,c[o>>2]|0,0,c[x>>2]|0,e[s>>1]|0)|0;c[(c[l>>2]|0)+20>>2]=C;Fz(c[y>>2]|0,c[p>>2]|0);c[p>>2]=0;while(1){if((c[p>>2]|0)>=(e[s>>1]|0))break a;Vw(c[y>>2]|0,47,c[o>>2]|0,c[p>>2]|0,(c[x>>2]|0)+(c[p>>2]|0)|0)|0;c[p>>2]=(c[p>>2]|0)+1}}while(0);c[p>>2]=e[s>>1];while(1){if((c[p>>2]|0)>=(e[q>>1]|0))break;c[v>>2]=c[(c[(c[t>>2]|0)+48>>2]|0)+(c[p>>2]<<2)>>2];c[w>>2]=oD(c[k>>2]|0,c[v>>2]|0,c[l>>2]|0,c[p>>2]|0,c[m>>2]|0,(c[x>>2]|0)+(c[p>>2]|0)|0)|0;do if((c[w>>2]|0)!=((c[x>>2]|0)+(c[p>>2]|0)|0))if((c[r>>2]|0)==1){_z(c[k>>2]|0,c[x>>2]|0);c[x>>2]=c[w>>2];break}else{Rw(c[y>>2]|0,31,c[w>>2]|0,(c[x>>2]|0)+(c[p>>2]|0)|0)|0;break}while(0);if(!(e[(c[v>>2]|0)+18>>1]&257)){ -c[u>>2]=c[(c[c[v>>2]>>2]|0)+16>>2];if((e[(c[v>>2]|0)+20>>1]&2048|0)==0?(RA(c[u>>2]|0)|0)!=0:0)Rw(c[y>>2]|0,76,(c[x>>2]|0)+(c[p>>2]|0)|0,c[(c[l>>2]|0)+12>>2]|0)|0;if(c[z>>2]|0){if(((SA(c[u>>2]|0,a[(c[z>>2]|0)+(c[p>>2]|0)>>0]|0)|0)<<24>>24|0)==65)a[(c[z>>2]|0)+(c[p>>2]|0)>>0]=65;if(sD(c[u>>2]|0,a[(c[z>>2]|0)+(c[p>>2]|0)>>0]|0)|0)a[(c[z>>2]|0)+(c[p>>2]|0)>>0]=65}}c[p>>2]=(c[p>>2]|0)+1}c[c[n>>2]>>2]=c[z>>2];i=A;return c[x>>2]|0}function rD(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;g=k+12|0;h=k+8|0;l=k+4|0;j=k;c[g>>2]=b;c[h>>2]=d;c[l>>2]=f;if(!((e[(c[l>>2]|0)+20>>1]|0)&256)){i=k;return}c[j>>2]=Mz(c[g>>2]|0,-1)|0;c[(c[j>>2]|0)+12>>2]=c[(c[h>>2]|0)+36>>2];a[(c[j>>2]|0)+3>>0]=1;i=k;return}function sD(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l+4|0;g=l;h=l+9|0;j=l+8|0;c[g>>2]=e;a[h>>0]=f;a:do if((a[h>>0]|0)==65)c[k>>2]=1;else{while(1){if((d[c[g>>2]>>0]|0)==156)e=1;else e=(d[c[g>>2]>>0]|0)==155;f=c[g>>2]|0;if(!e)break;c[g>>2]=c[f+12>>2]}a[j>>0]=a[f>>0]|0;if((d[j>>0]|0)==157)a[j>>0]=a[(c[g>>2]|0)+38>>0]|0;switch(d[j>>0]|0){case 132:{if((a[h>>0]|0)==68)f=1;else f=(a[h>>0]|0)==67;c[k>>2]=f&1;break a}case 133:{if((a[h>>0]|0)==69)f=1;else f=(a[h>>0]|0)==67;c[k>>2]=f&1;break a}case 97:{c[k>>2]=(a[h>>0]|0)==66&1;break a}case 134:{c[k>>2]=1;break a}case 152:{if((b[(c[g>>2]|0)+32>>1]|0)<0)if((a[h>>0]|0)==68)f=1;else f=(a[h>>0]|0)==67;else f=0;c[k>>2]=f&1;break a}default:{c[k>>2]=0;break a}}}while(0);i=l;return c[k>>2]|0}function tD(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;c[l>>2]=c[(c[g>>2]|0)+8>>2];if(!(c[k>>2]|0)){i=m;return}while(1){if((c[j>>2]|0)<=0)break;if((a[c[k>>2]>>0]|0)!=65)break;c[j>>2]=(c[j>>2]|0)+-1;c[h>>2]=(c[h>>2]|0)+1;c[k>>2]=(c[k>>2]|0)+1}while(1){if((c[j>>2]|0)>1)e=(a[(c[k>>2]|0)+((c[j>>2]|0)-1)>>0]|0)==65;else e=0;d=c[j>>2]|0;if(!e)break;c[j>>2]=d+-1}if((d|0)<=0){i=m;return}Uw(c[l>>2]|0,48,c[h>>2]|0,c[j>>2]|0,0,c[k>>2]|0,c[j>>2]|0)|0;CA(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0);i=m;return}function uD(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=i;i=i+48|0;p=o+32|0;h=o+28|0;q=o+24|0;r=o+20|0;l=o+16|0;n=o+12|0;k=o+8|0;m=o+4|0;j=o;c[p>>2]=a;c[h>>2]=d;c[q>>2]=f;c[r>>2]=g;c[l>>2]=c[c[p>>2]>>2];c[n>>2]=c[(c[l>>2]|0)+8>>2];Vw(c[n>>2]|0,112,c[r>>2]|0,0,c[q>>2]|0)|0;if(!(e[(c[p>>2]|0)+34>>1]&32)){i=o;return}f=c[l>>2]|0;if(c[(c[l>>2]|0)+416>>2]|0)f=c[f+416>>2]|0;if(c[f+336>>2]|0){i=o;return}c[m>>2]=c[(c[h>>2]|0)+12>>2];c[j>>2]=ph(c[c[l>>2]>>2]|0,(b[(c[m>>2]|0)+34>>1]|0)+1<<2,0)|0;if(!(c[j>>2]|0)){i=o;return}c[c[j>>2]>>2]=b[(c[m>>2]|0)+34>>1];c[k>>2]=0;while(1){if((c[k>>2]|0)>=((e[(c[h>>2]|0)+52>>1]|0)-1|0))break;if((b[(c[(c[h>>2]|0)+4>>2]|0)+(c[k>>2]<<1)>>1]|0)>=0)c[(c[j>>2]|0)+((b[(c[(c[h>>2]|0)+4>>2]|0)+(c[k>>2]<<1)>>1]|0)+1<<2)>>2]=(c[k>>2]|0)+1;c[k>>2]=(c[k>>2]|0)+1}Ih(c[n>>2]|0,-1,c[j>>2]|0,-15);i=o;return}function vD(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,j=0,k=0,l=0,m=0,n=0;k=i;i=i+32|0;g=k+20|0;n=k+16|0;m=k+12|0;l=k+8|0;h=k+4|0;j=k;c[g>>2]=a;c[n>>2]=b;c[m>>2]=d;c[l>>2]=e;c[h>>2]=f;c[j>>2]=zA(c[g>>2]|0,c[n>>2]|0,c[m>>2]|0,c[l>>2]|0,c[h>>2]|0,0)|0;if((c[j>>2]|0)==(c[h>>2]|0)){i=k;return}Rw(c[(c[g>>2]|0)+8>>2]|0,31,c[j>>2]|0,c[h>>2]|0)|0;i=k;return}function wD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;h=e;c[g>>2]=a;c[f>>2]=b;c[h>>2]=d;d=c[h>>2]|0;c[(Mz(c[g>>2]|0,c[f>>2]|0)|0)+4>>2]=d;i=e;return}function xD(a,b,d,f,g,h,j){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;q=i;i=i+144|0;n=q+132|0;u=q+128|0;t=q+124|0;s=q+120|0;k=q;l=q+116|0;r=q+112|0;p=q+108|0;o=q+104|0;m=q+8|0;c[u>>2]=a;c[t>>2]=b;c[s>>2]=d;a=k;c[a>>2]=f;c[a+4>>2]=g;c[l>>2]=h;c[r>>2]=j;c[p>>2]=0;c[o>>2]=yD(m,c[u>>2]|0,c[t>>2]|0,c[s>>2]|0,c[l>>2]|0,c[r>>2]|0)|0;c[l>>2]=c[l>>2]&130;while(1){if(!(c[o>>2]|0)){f=10;break}t=(c[o>>2]|0)+32|0;u=k;if((c[t>>2]&c[u>>2]|0)==0?(c[t+4>>2]&c[u+4>>2]|0)==0:0){u=(c[o>>2]|0)+32|0;if((c[u>>2]|0)==0&(c[u+4>>2]|0)==0?((e[(c[o>>2]|0)+18>>1]|0)&c[l>>2]|0)!=0:0){f=6;break}if(!(c[p>>2]|0))c[p>>2]=c[o>>2]}c[o>>2]=zD(m)|0}if((f|0)==6){c[n>>2]=c[o>>2];u=c[n>>2]|0;i=q;return u|0}else if((f|0)==10){c[n>>2]=c[p>>2];u=c[n>>2]|0;i=q;return u|0}return 0}function yD(d,e,f,g,h,j){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+32|0;k=q+24|0;r=q+20|0;l=q+16|0;m=q+12|0;n=q+8|0;o=q+4|0;p=q;c[k>>2]=d;c[r>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;c[o>>2]=j;c[p>>2]=0;c[c[k>>2]>>2]=c[r>>2];c[(c[k>>2]|0)+4>>2]=c[r>>2];c[(c[k>>2]|0)+12>>2]=0;if((c[o>>2]|0)!=0?(c[p>>2]=c[m>>2],c[m>>2]=b[(c[(c[o>>2]|0)+4>>2]|0)+(c[p>>2]<<1)>>1],(c[m>>2]|0)==-2):0)c[(c[k>>2]|0)+12>>2]=c[(c[(c[(c[o>>2]|0)+40>>2]|0)+4>>2]|0)+((c[p>>2]|0)*20|0)>>2];if((c[o>>2]|0)!=0&(c[m>>2]|0)>=0){a[(c[k>>2]|0)+16>>0]=a[(c[(c[(c[o>>2]|0)+12>>2]|0)+4>>2]|0)+((c[m>>2]|0)*24|0)+21>>0]|0;c[(c[k>>2]|0)+8>>2]=c[(c[(c[o>>2]|0)+32>>2]|0)+(c[p>>2]<<2)>>2]}else{a[(c[k>>2]|0)+16>>0]=0;c[(c[k>>2]|0)+8>>2]=0}c[(c[k>>2]|0)+20>>2]=c[n>>2];c[(c[k>>2]|0)+24>>2]=0;c[(c[k>>2]|0)+28>>2]=c[l>>2];b[(c[k>>2]|0)+72>>1]=c[m>>2];a[(c[k>>2]|0)+17>>0]=1;a[(c[k>>2]|0)+18>>0]=1;r=zD(c[k>>2]|0)|0;i=q;return r|0}function zD(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;o=s+36|0;p=s+32|0;h=s+28|0;g=s+40|0;n=s+24|0;m=s+20|0;r=s+16|0;q=s+12|0;j=s+8|0;k=s+4|0;l=s;c[p>>2]=f;c[q>>2]=c[(c[p>>2]|0)+24>>2];a:while(1){if((d[(c[p>>2]|0)+18>>0]|0)>(d[(c[p>>2]|0)+17>>0]|0)){g=40;break}c[h>>2]=c[(c[p>>2]|0)+28+((d[(c[p>>2]|0)+18>>0]|0)-1<<2)>>2];b[g>>1]=b[(c[p>>2]|0)+72+((d[(c[p>>2]|0)+18>>0]|0)-1<<1)>>1]|0;if((b[g>>1]|0)==-2?(c[(c[p>>2]|0)+12>>2]|0)==0:0){g=5;break}while(1){f=c[(c[p>>2]|0)+4>>2]|0;c[m>>2]=f;if(!f)break;c[r>>2]=(c[(c[m>>2]|0)+20>>2]|0)+((c[q>>2]|0)*48|0);while(1){if((c[q>>2]|0)>=(c[(c[m>>2]|0)+12>>2]|0))break;do if((c[(c[r>>2]|0)+8>>2]|0)==(c[h>>2]|0)?(c[(c[r>>2]|0)+12>>2]|0)==(b[g>>1]|0):0){if((b[g>>1]|0)==-2?(py(c[(c[c[r>>2]>>2]|0)+12>>2]|0,c[(c[p>>2]|0)+12>>2]|0,c[h>>2]|0)|0)!=0:0)break;if((d[(c[p>>2]|0)+18>>0]|0)>1?(c[(c[c[r>>2]>>2]|0)+4>>2]&1|0)!=0:0)break;if(((e[(c[r>>2]|0)+18>>1]&2048|0)!=0?(d[(c[p>>2]|0)+17>>0]|0)<11:0)?(f=Tx(c[(c[c[r>>2]>>2]|0)+16>>2]|0)|0,c[n>>2]=f,(d[f>>0]|0)==152):0){c[j>>2]=0;while(1){if((c[j>>2]|0)>=(d[(c[p>>2]|0)+17>>0]|0))break;if((c[(c[p>>2]|0)+28+(c[j>>2]<<2)>>2]|0)==(c[(c[n>>2]|0)+28>>2]|0)?(b[(c[p>>2]|0)+72+(c[j>>2]<<1)>>1]|0)==(b[(c[n>>2]|0)+32>>1]|0):0)break;c[j>>2]=(c[j>>2]|0)+1}if((c[j>>2]|0)==(d[(c[p>>2]|0)+17>>0]|0)){c[(c[p>>2]|0)+28+(c[j>>2]<<2)>>2]=c[(c[n>>2]|0)+28>>2];b[(c[p>>2]|0)+72+(c[j>>2]<<1)>>1]=b[(c[n>>2]|0)+32>>1]|0;f=(c[p>>2]|0)+17|0;a[f>>0]=(a[f>>0]|0)+1<<24>>24}}if(e[(c[r>>2]|0)+18>>1]&c[(c[p>>2]|0)+20>>2]){if((c[(c[p>>2]|0)+8>>2]|0)!=0?(e[(c[r>>2]|0)+18>>1]&256|0)==0:0){c[l>>2]=c[c[c[m>>2]>>2]>>2];c[n>>2]=c[c[r>>2]>>2];if(!(WA(c[n>>2]|0,a[(c[p>>2]|0)+16>>0]|0)|0))break;c[k>>2]=VA(c[l>>2]|0,c[(c[n>>2]|0)+12>>2]|0,c[(c[n>>2]|0)+16>>2]|0)|0;if(!(c[k>>2]|0))c[k>>2]=c[(c[c[l>>2]>>2]|0)+8>>2];if(Td(c[c[k>>2]>>2]|0,c[(c[p>>2]|0)+8>>2]|0)|0)break}if(!(e[(c[r>>2]|0)+18>>1]&130)){g=36;break a}f=c[(c[c[r>>2]>>2]|0)+16>>2]|0;c[n>>2]=f;if((d[f>>0]|0)!=152){g=36;break a}if((c[(c[n>>2]|0)+28>>2]|0)!=(c[(c[p>>2]|0)+28>>2]|0)){g=36;break a}if((b[(c[n>>2]|0)+32>>1]|0)!=(b[(c[p>>2]|0)+72>>1]|0)){g=36;break a}}}while(0);c[q>>2]=(c[q>>2]|0)+1;c[r>>2]=(c[r>>2]|0)+48}c[(c[p>>2]|0)+4>>2]=c[(c[(c[p>>2]|0)+4>>2]|0)+4>>2];c[q>>2]=0}c[(c[p>>2]|0)+4>>2]=c[c[p>>2]>>2];c[q>>2]=0;f=(c[p>>2]|0)+18|0;a[f>>0]=(a[f>>0]|0)+1<<24>>24}if((g|0)==5){c[o>>2]=0;r=c[o>>2]|0;i=s;return r|0}else if((g|0)==36){c[(c[p>>2]|0)+24>>2]=(c[q>>2]|0)+1;c[o>>2]=c[r>>2];r=c[o>>2]|0;i=s;return r|0}else if((g|0)==40){c[o>>2]=0;r=c[o>>2]|0;i=s;return r|0}return 0}function AD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=c[f>>2]|0;b=c[e>>2]|0;aA(a,b,If(c[e>>2]|0)|0);i=d;return}function BD(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;n=r;f=r+32|0;g=r+28|0;m=r+24|0;k=r+38|0;l=r+36|0;h=r+20|0;j=r+16|0;o=r+12|0;p=r+8|0;q=r+4|0;c[f>>2]=a;c[g>>2]=d;c[m>>2]=c[(c[g>>2]|0)+24+4>>2];b[k>>1]=b[(c[g>>2]|0)+24>>1]|0;b[l>>1]=b[(c[g>>2]|0)+42>>1]|0;if((e[k>>1]|0|0)==0?(c[(c[g>>2]|0)+36>>2]&48|0)==0:0){i=r;return}aA(c[f>>2]|0,35496,2);c[h>>2]=0;while(1){if((c[h>>2]|0)>=(e[k>>1]|0|0))break;c[o>>2]=CD(c[m>>2]|0,c[h>>2]|0)|0;if(c[h>>2]|0)aA(c[f>>2]|0,35499,5);d=c[f>>2]|0;a=(c[h>>2]|0)>=(e[l>>1]|0|0)?35505:35510;c[n>>2]=c[o>>2];$z(d,a,n);c[h>>2]=(c[h>>2]|0)+1}c[j>>2]=c[h>>2];if(c[(c[g>>2]|0)+36>>2]&32){c[p>>2]=CD(c[m>>2]|0,c[h>>2]|0)|0;n=c[f>>2]|0;o=c[h>>2]|0;c[h>>2]=o+1;DD(n,o,c[p>>2]|0,35427)}if(c[(c[g>>2]|0)+36>>2]&16){c[q>>2]=CD(c[m>>2]|0,c[j>>2]|0)|0;DD(c[f>>2]|0,c[h>>2]|0,c[q>>2]|0,35429)}aA(c[f>>2]|0,35518,1);i=r;return}function CD(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[f>>2]=a;c[g>>2]=d;c[g>>2]=b[(c[(c[f>>2]|0)+4>>2]|0)+(c[g>>2]<<1)>>1];if((c[g>>2]|0)==-2){c[e>>2]=35520;a=c[e>>2]|0;i=h;return a|0}if((c[g>>2]|0)==-1){c[e>>2]=25592;a=c[e>>2]|0;i=h;return a|0}else{c[e>>2]=c[(c[(c[(c[f>>2]|0)+12>>2]|0)+4>>2]|0)+((c[g>>2]|0)*24|0)>>2];a=c[e>>2]|0;i=h;return a|0}return 0}function DD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;j=i;i=i+16|0;f=j+12|0;k=j+8|0;g=j+4|0;h=j;c[f>>2]=a;c[k>>2]=b;c[g>>2]=d;c[h>>2]=e;if(c[k>>2]|0)aA(c[f>>2]|0,35499,5);AD(c[f>>2]|0,c[g>>2]|0);aA(c[f>>2]|0,c[h>>2]|0,1);aA(c[f>>2]|0,21139,1);i=j;return}function ED(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=$A(c[f>>2]|0,3,c[e>>2]|0)|0;i=d;return a|0}function FD(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n;m=n+20|0;c[j>>2]=b;c[k>>2]=d;b=l;c[b>>2]=f;c[b+4>>2]=g;if((c[(c[j>>2]|0)+8>>2]|0)!=(c[(c[k>>2]|0)+44>>2]|0)){c[h>>2]=0;b=c[h>>2]|0;i=n;return b|0}if(!((e[(c[j>>2]|0)+18>>1]|0)&130)){c[h>>2]=0;b=c[h>>2]|0;i=n;return b|0}d=(c[j>>2]|0)+32|0;b=l;if((c[d>>2]&c[b>>2]|0)!=0?1:(c[d+4>>2]&c[b+4>>2]|0)!=0){c[h>>2]=0;b=c[h>>2]|0;i=n;return b|0}if((c[(c[j>>2]|0)+12>>2]|0)<0){c[h>>2]=0;b=c[h>>2]|0;i=n;return b|0}a[m>>0]=a[(c[(c[(c[k>>2]|0)+16>>2]|0)+4>>2]|0)+((c[(c[j>>2]|0)+12>>2]|0)*24|0)+21>>0]|0;if(WA(c[c[j>>2]>>2]|0,a[m>>0]|0)|0){c[h>>2]=1;b=c[h>>2]|0;i=n;return b|0}else{c[h>>2]=0;b=c[h>>2]|0;i=n;return b|0}return 0}function GD(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[h>>2]=a;c[j>>2]=d;c[k>>2]=f;if((e[(c[j>>2]|0)+44>>1]|0|0)>=(c[k>>2]|0)){c[g>>2]=0;l=c[g>>2]|0;i=m;return l|0}c[k>>2]=(c[k>>2]|0)+7&-8;c[l>>2]=Fw(c[h>>2]|0,c[k>>2]<<2,0)|0;if(!(c[l>>2]|0)){c[g>>2]=7;l=c[g>>2]|0;i=m;return l|0}iR(c[l>>2]|0,c[(c[j>>2]|0)+48>>2]|0,(e[(c[j>>2]|0)+44>>1]|0)<<2|0)|0;if((c[(c[j>>2]|0)+48>>2]|0)!=((c[j>>2]|0)+56|0))Sf(c[h>>2]|0,c[(c[j>>2]|0)+48>>2]|0);c[(c[j>>2]|0)+48>>2]=c[l>>2];b[(c[j>>2]|0)+44>>1]=c[k>>2];c[g>>2]=0;l=c[g>>2]|0;i=m;return l|0}function HD(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+32|0;n=m+20|0;g=m+24|0;o=m+16|0;h=m+12|0;k=m+8|0;j=m+4|0;l=m;c[n>>2]=a;b[g>>1]=d;c[o>>2]=e;c[h>>2]=f;c[j>>2]=56+((b[g>>1]<<2)+7&-8)+(((b[g>>1]|0)+1<<1)+(b[g>>1]<<1)+(b[g>>1]|0)+7&-8);f=(c[j>>2]|0)+(c[o>>2]|0)|0;c[k>>2]=ph(c[n>>2]|0,f,((f|0)<0)<<31>>31)|0;if(!(c[k>>2]|0)){o=c[k>>2]|0;i=m;return o|0}c[l>>2]=(c[k>>2]|0)+56;c[(c[k>>2]|0)+32>>2]=c[l>>2];c[l>>2]=(c[l>>2]|0)+((b[g>>1]<<2)+7&-8);c[(c[k>>2]|0)+8>>2]=c[l>>2];c[l>>2]=(c[l>>2]|0)+((b[g>>1]|0)+1<<1);c[(c[k>>2]|0)+4>>2]=c[l>>2];c[l>>2]=(c[l>>2]|0)+(b[g>>1]<<1);c[(c[k>>2]|0)+28>>2]=c[l>>2];b[(c[k>>2]|0)+52>>1]=b[g>>1]|0;b[(c[k>>2]|0)+50>>1]=(b[g>>1]|0)-1;c[c[h>>2]>>2]=(c[k>>2]|0)+(c[j>>2]|0);o=c[k>>2]|0;i=m;return o|0}function ID(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;j=i;i=i+32|0;f=j+8|0;e=j+20|0;g=j+16|0;h=j;c[e>>2]=a;c[g>>2]=b;a=h;c[a>>2]=0;c[a+4>>2]=0;if(!(c[g>>2]|0)){g=f;c[g>>2]=0;c[g+4>>2]=0;g=f;h=g;h=c[h>>2]|0;g=g+4|0;g=c[g>>2]|0;C=g;i=j;return h|0}b=c[e>>2]|0;a=c[g>>2]|0;if((d[c[g>>2]>>0]|0|0)==152){g=nD(b,c[a+28>>2]|0)|0;e=h;c[e>>2]=g;c[e+4>>2]=C;e=h;h=c[e+4>>2]|0;g=f;c[g>>2]=c[e>>2];c[g+4>>2]=h;g=f;h=g;h=c[h>>2]|0;g=g+4|0;g=c[g>>2]|0;C=g;i=j;return h|0}l=ID(b,c[a+16>>2]|0)|0;k=h;c[k>>2]=l;c[k+4>>2]=C;k=ID(c[e>>2]|0,c[(c[g>>2]|0)+12>>2]|0)|0;l=h;a=c[l+4>>2]|C;b=h;c[b>>2]=c[l>>2]|k;c[b+4>>2]=a;b=c[e>>2]|0;a=(c[g>>2]|0)+20|0;if(c[(c[g>>2]|0)+4>>2]&2048){g=JD(b,c[a>>2]|0)|0;e=h;k=c[e+4>>2]|C;l=h;c[l>>2]=c[e>>2]|g;c[l+4>>2]=k}else{g=jD(b,c[a>>2]|0)|0;e=h;k=c[e+4>>2]|C;l=h;c[l>>2]=c[e>>2]|g;c[l+4>>2]=k}l=c[h+4>>2]|0;k=f;c[k>>2]=c[h>>2];c[k+4>>2]=l;k=f;l=k;l=c[l>>2]|0;k=k+4|0;k=c[k>>2]|0;C=k;i=j;return l|0}function JD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;j=i;i=i+32|0;d=j+20|0;e=j+16|0;g=j;h=j+12|0;f=j+8|0;c[d>>2]=a;c[e>>2]=b;b=g;c[b>>2]=0;c[b+4>>2]=0;while(1){if(!(c[e>>2]|0))break;c[h>>2]=c[(c[e>>2]|0)+32>>2];k=jD(c[d>>2]|0,c[c[e>>2]>>2]|0)|0;l=g;a=c[l+4>>2]|C;b=g;c[b>>2]=c[l>>2]|k;c[b+4>>2]=a;b=jD(c[d>>2]|0,c[(c[e>>2]|0)+40>>2]|0)|0;a=g;k=c[a+4>>2]|C;l=g;c[l>>2]=c[a>>2]|b;c[l+4>>2]=k;l=jD(c[d>>2]|0,c[(c[e>>2]|0)+48>>2]|0)|0;k=g;b=c[k+4>>2]|C;a=g;c[a>>2]=c[k>>2]|l;c[a+4>>2]=b;a=ID(c[d>>2]|0,c[(c[e>>2]|0)+36>>2]|0)|0;b=g;l=c[b+4>>2]|C;k=g;c[k>>2]=c[b>>2]|a;c[k+4>>2]=l;k=ID(c[d>>2]|0,c[(c[e>>2]|0)+44>>2]|0)|0;l=g;a=c[l+4>>2]|C;b=g;c[b>>2]=c[l>>2]|k;c[b+4>>2]=a;a:do if(c[h>>2]|0){c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[h>>2]>>2]|0))break a;k=JD(c[d>>2]|0,c[(c[h>>2]|0)+8+((c[f>>2]|0)*72|0)+20>>2]|0)|0;l=g;a=c[l+4>>2]|C;b=g;c[b>>2]=c[l>>2]|k;c[b+4>>2]=a;b=ID(c[d>>2]|0,c[(c[h>>2]|0)+8+((c[f>>2]|0)*72|0)+48>>2]|0)|0;a=g;k=c[a+4>>2]|C;l=g;c[l>>2]=c[a>>2]|b;c[l+4>>2]=k;c[f>>2]=(c[f>>2]|0)+1}}while(0);c[e>>2]=c[(c[e>>2]|0)+52>>2]}l=g;C=c[l+4>>2]|0;i=j;return c[l>>2]|0}function KD(a,c){a=a|0;c=c|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+4|0;f=h+2|0;g=h;b[f>>1]=a;b[g>>1]=c;if((b[f>>1]|0)>=(b[g>>1]|0)){a=b[f>>1]|0;if((b[f>>1]|0)>((b[g>>1]|0)+49|0)){b[e>>1]=a;g=b[e>>1]|0;i=h;return g|0}c=b[f>>1]|0;if((a<<16>>16|0)>((b[g>>1]|0)+31|0)){b[e>>1]=c+1;g=b[e>>1]|0;i=h;return g|0}else{b[e>>1]=c+(d[35582+((b[f>>1]|0)-(b[g>>1]|0))>>0]|0);g=b[e>>1]|0;i=h;return g|0}}else{a=b[g>>1]|0;if((b[g>>1]|0)>((b[f>>1]|0)+49|0)){b[e>>1]=a;g=b[e>>1]|0;i=h;return g|0}c=b[g>>1]|0;if((a<<16>>16|0)>((b[f>>1]|0)+31|0)){b[e>>1]=c+1;g=b[e>>1]|0;i=h;return g|0}else{b[e>>1]=c+(d[35582+((b[g>>1]|0)-(b[f>>1]|0))>>0]|0);g=b[e>>1]|0;i=h;return g|0}}return 0}function LD(f,g,h,j,k,l,m){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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,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;$=i;i=i+144|0;W=$+141|0;n=$+120|0;o=$+116|0;p=$+112|0;q=$+132|0;r=$+130|0;s=$+108|0;t=$+104|0;T=$+140|0;R=$+139|0;S=$+138|0;B=$+137|0;w=$+136|0;A=$+135|0;G=$+128|0;F=$+126|0;H=$+124|0;z=$+100|0;X=$+96|0;D=$+92|0;y=$+88|0;x=$+84|0;N=$+80|0;P=$+76|0;O=$+72|0;L=$+68|0;M=$+64|0;v=$+60|0;Z=$+40|0;I=$+32|0;J=$+24|0;Q=$+16|0;U=$+56|0;V=$+52|0;u=$+134|0;K=$+48|0;E=$+8|0;Y=$;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;b[q>>1]=j;b[r>>1]=k;c[s>>2]=l;c[t>>2]=m;c[N>>2]=0;c[v>>2]=c[c[c[n>>2]>>2]>>2];j=Z;c[j>>2]=0;c[j+4>>2]=0;if((e[r>>1]|0)!=0?(e[(c[v>>2]|0)+60>>1]&128|0)!=0:0){a[W>>0]=0;_=a[W>>0]|0;i=$;return _|0}b[H>>1]=c[c[o>>2]>>2];if((e[H>>1]|0)>63){a[W>>0]=0;_=a[W>>0]|0;i=$;return _|0}a[B>>0]=1;f=lR(1,0,e[H>>1]|0)|0;f=fR(f|0,C|0,1,0)|0;j=I;c[j>>2]=f;c[j+4>>2]=C;j=J;c[j>>2]=0;c[j+4>>2]=0;j=Q;c[j>>2]=0;c[j+4>>2]=0;c[z>>2]=0;while(1){if(!(d[B>>0]|0))break;f=Z;h=c[f+4>>2]|0;j=I;m=c[j+4>>2]|0;if(!(h>>>0>>0|((h|0)==(m|0)?(c[f>>2]|0)>>>0<(c[j>>2]|0)>>>0:0)))break;if((c[z>>2]|0)>(e[r>>1]|0))break;if((c[z>>2]|0)>0){m=(c[N>>2]|0)+8|0;h=Q;f=c[h+4>>2]|c[m+4>>2];j=Q;c[j>>2]=c[h>>2]|c[m>>2];c[j+4>>2]=f}if((c[z>>2]|0)<(e[r>>1]|0))k=c[(c[(c[p>>2]|0)+24>>2]|0)+(c[z>>2]<<2)>>2]|0;else k=c[s>>2]|0;c[N>>2]=k;k=c[N>>2]|0;if(c[(c[N>>2]|0)+36>>2]&1024){_=16;break}c[y>>2]=c[(c[(c[n>>2]|0)+4>>2]|0)+8+((d[k+16>>0]|0)*72|0)+44>>2];c[X>>2]=0;while(1){if((c[X>>2]|0)>=(e[H>>1]|0))break;f=lR(1,0,c[X>>2]|0)|0;j=Z;do if(((!((f&c[j>>2]|0)!=0?1:(C&c[j+4>>2]|0)!=0)?(c[O>>2]=Tx(c[(c[(c[o>>2]|0)+4>>2]|0)+((c[X>>2]|0)*20|0)>>2]|0)|0,(d[c[O>>2]>>0]|0)==152):0)?(c[(c[O>>2]|0)+28>>2]|0)==(c[y>>2]|0):0)?(j=Q,c[P>>2]=xD((c[n>>2]|0)+328|0,c[y>>2]|0,b[(c[O>>2]|0)+32>>1]|0,~c[j>>2],~c[j+4>>2],386,0)|0,(c[P>>2]|0)!=0):0){if((e[(c[P>>2]|0)+18>>1]&130|0)!=0?(b[(c[O>>2]|0)+32>>1]|0)>=0:0){c[L>>2]=Ox(c[c[n>>2]>>2]|0,c[(c[(c[o>>2]|0)+4>>2]|0)+((c[X>>2]|0)*20|0)>>2]|0)|0;if(!(c[L>>2]|0))c[L>>2]=c[(c[v>>2]|0)+8>>2];c[U>>2]=c[c[L>>2]>>2];c[L>>2]=Ox(c[c[n>>2]>>2]|0,c[c[P>>2]>>2]|0)|0;if(!(c[L>>2]|0))c[L>>2]=c[(c[v>>2]|0)+8>>2];c[V>>2]=c[c[L>>2]>>2];if(Td(c[U>>2]|0,c[V>>2]|0)|0)break}m=lR(1,0,c[X>>2]|0)|0;h=Z;f=c[h+4>>2]|C;j=Z;c[j>>2]=c[h>>2]|m;c[j+4>>2]=f}while(0);c[X>>2]=(c[X>>2]|0)+1}if(!(c[(c[N>>2]|0)+36>>2]&4096)){if(c[(c[N>>2]|0)+36>>2]&256){c[M>>2]=0;b[G>>1]=0;b[F>>1]=1}else{j=c[(c[N>>2]|0)+24+4>>2]|0;c[M>>2]=j;if(!j){_=38;break}if((d[(c[M>>2]|0)+55>>0]|0)>>>2&1){_=38;break}b[G>>1]=b[(c[M>>2]|0)+50>>1]|0;b[F>>1]=b[(c[M>>2]|0)+52>>1]|0;a[B>>0]=(d[(c[M>>2]|0)+54>>0]|0)!=0}a[T>>0]=0;a[R>>0]=0;a[w>>0]=0;c[D>>2]=0;while(1){if((c[D>>2]|0)>=(e[F>>1]|0))break;if(((c[D>>2]|0)<(e[(c[N>>2]|0)+24>>1]|0)?(e[(c[N>>2]|0)+42>>1]|0)==0:0)?(j=e[(c[(c[(c[N>>2]|0)+48>>2]|0)+(c[D>>2]<<2)>>2]|0)+18>>1]|0,c[X>>2]=j,(j&386|0)!=0):0){if(c[X>>2]&256)a[B>>0]=0}else{if(c[M>>2]|0){c[x>>2]=b[(c[(c[M>>2]|0)+4>>2]|0)+(c[D>>2]<<1)>>1];a[S>>0]=a[(c[(c[M>>2]|0)+28>>2]|0)+(c[D>>2]|0)>>0]|0;if((c[x>>2]|0)==(b[(c[(c[M>>2]|0)+12>>2]|0)+32>>1]|0))c[x>>2]=-1}else{c[x>>2]=-1;a[S>>0]=0}do if((d[B>>0]|0)!=0&(c[x>>2]|0)>=0?(c[D>>2]|0)>=(e[(c[N>>2]|0)+24>>1]|0):0){if(d[(c[(c[(c[M>>2]|0)+12>>2]|0)+4>>2]|0)+((c[x>>2]|0)*24|0)+20>>0]|0)break;a[B>>0]=0}while(0);a[u>>0]=1;a[A>>0]=0;c[X>>2]=0;a:while(1){if(!(d[u>>0]|0))break;if((c[X>>2]|0)>=(e[H>>1]|0))break;f=lR(1,0,c[X>>2]|0)|0;j=Z;do if(!((f&c[j>>2]|0)!=0?1:(C&c[j+4>>2]|0)!=0)){c[O>>2]=Tx(c[(c[(c[o>>2]|0)+4>>2]|0)+((c[X>>2]|0)*20|0)>>2]|0)|0;if(!(e[q>>1]&768))a[u>>0]=0;k=c[O>>2]|0;if((c[x>>2]|0)>=-1){if((d[k>>0]|0)!=152)break;if((c[(c[O>>2]|0)+28>>2]|0)!=(c[y>>2]|0))break;if((b[(c[O>>2]|0)+32>>1]|0)!=(c[x>>2]|0))break}else if(py(k,c[(c[(c[(c[M>>2]|0)+40>>2]|0)+4>>2]|0)+((c[D>>2]|0)*20|0)>>2]|0,c[y>>2]|0)|0)break;if((c[x>>2]|0)<0){_=70;break a}c[L>>2]=Ox(c[c[n>>2]>>2]|0,c[(c[(c[o>>2]|0)+4>>2]|0)+((c[X>>2]|0)*20|0)>>2]|0)|0;if(!(c[L>>2]|0))c[L>>2]=c[(c[v>>2]|0)+8>>2];if(!(Td(c[c[L>>2]>>2]|0,c[(c[(c[M>>2]|0)+32>>2]|0)+(c[D>>2]<<2)>>2]|0)|0)){_=70;break a}}while(0);c[X>>2]=(c[X>>2]|0)+1}if((_|0)==70){_=0;a[A>>0]=1}do if(d[A>>0]|0){if(e[q>>1]&256)break;if(a[T>>0]|0){if((d[R>>0]^d[S>>0]|0)==(d[(c[(c[o>>2]|0)+4>>2]|0)+((c[X>>2]|0)*20|0)+12>>0]|0))break;a[A>>0]=0;break}a[R>>0]=d[S>>0]^d[(c[(c[o>>2]|0)+4>>2]|0)+((c[X>>2]|0)*20|0)+12>>0];if(a[R>>0]|0){m=lR(1,0,c[z>>2]|0)|0;j=c[t>>2]|0;h=j;f=c[h+4>>2]|C;c[j>>2]=c[h>>2]|m;c[j+4>>2]=f}a[T>>0]=1}while(0);if(!(a[A>>0]|0)){_=84;break}if((c[x>>2]|0)<0)a[w>>0]=1;m=lR(1,0,c[X>>2]|0)|0;h=Z;f=c[h+4>>2]|C;j=Z;c[j>>2]=c[h>>2]|m;c[j+4>>2]=f}c[D>>2]=(c[D>>2]|0)+1}do if((_|0)==84){_=0;if((c[D>>2]|0)!=0?(c[D>>2]|0)>=(e[G>>1]|0):0)break;a[B>>0]=0}while(0);if(a[w>>0]|0)a[B>>0]=1}b:do if(a[B>>0]|0){m=(c[N>>2]|0)+8|0;h=J;f=c[h+4>>2]|c[m+4>>2];j=J;c[j>>2]=c[h>>2]|c[m>>2];c[j+4>>2]=f;c[X>>2]=0;while(1){if((c[X>>2]|0)>=(e[H>>1]|0))break b;f=lR(1,0,c[X>>2]|0)|0;j=Z;do if(!((f&c[j>>2]|0)!=0?1:(C&c[j+4>>2]|0)!=0)){c[K>>2]=c[(c[(c[o>>2]|0)+4>>2]|0)+((c[X>>2]|0)*20|0)>>2];f=ID((c[n>>2]|0)+68|0,c[K>>2]|0)|0;j=E;c[j>>2]=f;c[j+4>>2]=C;j=E;if((c[j>>2]|0)==0&(c[j+4>>2]|0)==0?(FA(c[K>>2]|0)|0)==0:0)break;f=E;j=J;if((c[f>>2]&~c[j>>2]|0)==0?(c[f+4>>2]&~c[j+4>>2]|0)==0:0){m=lR(1,0,c[X>>2]|0)|0;h=Z;f=c[h+4>>2]|C;j=Z;c[j>>2]=c[h>>2]|m;c[j+4>>2]=f}}while(0);c[X>>2]=(c[X>>2]|0)+1}}while(0);c[z>>2]=(c[z>>2]|0)+1}if((_|0)==16){if(a[k+24+5>>0]|0){U=I;V=c[U+4>>2]|0;_=Z;c[_>>2]=c[U>>2];c[_+4>>2]=V}}else if((_|0)==38){a[W>>0]=0;_=a[W>>0]|0;i=$;return _|0}V=Z;_=I;if((c[V>>2]|0)==(c[_>>2]|0)?(c[V+4>>2]|0)==(c[_+4>>2]|0):0){a[W>>0]=b[H>>1];_=a[W>>0]|0;i=$;return _|0}if(a[B>>0]|0){a[W>>0]=-1;_=a[W>>0]|0;i=$;return _|0}c[X>>2]=(e[H>>1]|0)-1;while(1){if((c[X>>2]|0)<=0){_=108;break}V=lR(1,0,c[X>>2]|0)|0;V=fR(V|0,C|0,1,0)|0;U=Y;c[U>>2]=V;c[U+4>>2]=C;U=Z;V=Y;_=Y;k=c[X>>2]|0;if((c[U>>2]&c[V>>2]|0)==(c[_>>2]|0)?(c[U+4>>2]&c[V+4>>2]|0)==(c[_+4>>2]|0):0){_=106;break}c[X>>2]=k+-1}if((_|0)==106){a[W>>0]=k;_=a[W>>0]|0;i=$;return _|0}else if((_|0)==108){a[W>>0]=0;_=a[W>>0]|0;i=$;return _|0}return 0}function MD(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;g=i;i=i+16|0;j=g+12|0;k=g+4|0;l=g;h=g+10|0;f=g+8|0;b[j>>1]=a;c[k>>2]=d;c[l>>2]=e;e=(((c[k>>2]|0)-(c[l>>2]|0)|0)*100|0)/(c[k>>2]|0)|0;b[h>>1]=((Hj(e,((e|0)<0)<<31>>31)|0)<<16>>16)-66;e=b[j>>1]|0;e=e+((ND(b[j>>1]|0)|0)<<16>>16)|0;b[f>>1]=e+(b[h>>1]|0)+16;i=g;return b[f>>1]|0}function ND(a){a=a|0;var c=0,d=0;d=i;i=i+16|0;c=d;b[c>>1]=a;if((b[c>>1]|0)<=10){a=0;a=a&65535;i=d;return a|0}a=b[c>>1]|0;a=((Hj(a,((a|0)<0)<<31>>31)|0)<<16>>16)-33|0;a=a&65535;i=d;return a|0}function OD(f,g,j,k,l){f=f|0;g=g|0;j=j|0;k=k|0;l=l|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;K=i;i=i+112|0;I=K+16|0;m=K+104|0;n=K+100|0;o=K+8|0;L=K;M=K+96|0;z=K+92|0;E=K+88|0;A=K+84|0;B=K+80|0;p=K+76|0;x=K+72|0;w=K+68|0;D=K+64|0;C=K+60|0;q=K+56|0;t=K+52|0;s=K+48|0;u=K+44|0;v=K+40|0;G=K+36|0;H=K+32|0;r=K+28|0;y=K+24|0;F=K+20|0;c[n>>2]=f;f=o;c[f>>2]=g;c[f+4>>2]=j;f=L;c[f>>2]=k;c[f+4>>2]=l;c[G>>2]=0;c[H>>2]=0;c[F>>2]=0;c[M>>2]=c[c[n>>2]>>2];c[z>>2]=c[c[M>>2]>>2];c[p>>2]=c[c[z>>2]>>2];c[E>>2]=c[(c[n>>2]|0)+4>>2];c[y>>2]=c[(c[n>>2]|0)+12>>2];c[A>>2]=(c[(c[M>>2]|0)+4>>2]|0)+8+((d[(c[y>>2]|0)+16>>0]|0)*72|0);c[B>>2]=c[(c[A>>2]|0)+16>>2];f=L;c[x>>2]=fE(c[z>>2]|0,c[E>>2]|0,c[f>>2]|0,c[f+4>>2]|0,c[A>>2]|0,c[(c[n>>2]|0)+8>>2]|0)|0;if(!(c[x>>2]|0)){c[m>>2]=7;M=c[m>>2]|0;i=K;return M|0}M=c[y>>2]|0;c[M>>2]=0;c[M+4>>2]=0;b[(c[y>>2]|0)+18>>1]=0;c[(c[y>>2]|0)+36>>2]=1024;b[(c[y>>2]|0)+40>>1]=0;a[(c[y>>2]|0)+24+4>>0]=0;c[D>>2]=c[(c[x>>2]|0)+16>>2];c[v>>2]=c[c[x>>2]>>2];if(GD(c[p>>2]|0,c[y>>2]|0,c[v>>2]|0)|0){Sf(c[p>>2]|0,c[x>>2]|0);c[m>>2]=7;M=c[m>>2]|0;i=K;return M|0}c[r>>2]=0;a:while(1){if((c[r>>2]|0)>3)break;if(((c[G>>2]|0)==0?(c[r>>2]&1|0)!=0:0)?(c[r>>2]=(c[r>>2]|0)+1,(c[r>>2]|0)>3):0)break;if((c[H>>2]|0)==0&(c[r>>2]|0)>1)break;c[w>>2]=c[(c[x>>2]|0)+4>>2];c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[c[x>>2]>>2]|0))break;c[t>>2]=c[(c[w>>2]|0)+8>>2];c[C>>2]=(c[(c[E>>2]|0)+20>>2]|0)+((c[t>>2]|0)*48|0);b:do switch(c[r>>2]|0){case 0:{a[(c[w>>2]|0)+5>>0]=0;if(e[(c[C>>2]|0)+18>>1]&1)c[G>>2]=1;L=(c[C>>2]|0)+32|0;M=o;if((c[L>>2]&~c[M>>2]|0)!=0?1:(c[L+4>>2]&~c[M+4>>2]|0)!=0){c[H>>2]=1;break b}if(!(e[(c[C>>2]|0)+18>>1]&1))a[(c[w>>2]|0)+5>>0]=1;break}case 1:{L=(c[C>>2]|0)+32|0;M=o;a[(c[w>>2]|0)+5>>0]=((c[L>>2]&~c[M>>2]|0)==0?(c[L+4>>2]&~c[M+4>>2]|0)==0:0)&1;break}case 2:{a[(c[w>>2]|0)+5>>0]=(e[(c[C>>2]|0)+18>>1]&1|0)==0;break}default:a[(c[w>>2]|0)+5>>0]=1}while(0);c[q>>2]=(c[q>>2]|0)+1;c[w>>2]=(c[w>>2]|0)+12}kR(c[D>>2]|0,0,c[c[x>>2]>>2]<<3|0)|0;if(c[(c[x>>2]|0)+28>>2]|0)Kd(c[(c[x>>2]|0)+24>>2]|0);c[(c[x>>2]|0)+24>>2]=0;c[(c[x>>2]|0)+20>>2]=0;c[(c[x>>2]|0)+28>>2]=0;c[(c[x>>2]|0)+32>>2]=0;h[(c[x>>2]|0)+40>>3]=5.e+98;f=(c[x>>2]|0)+48|0;c[f>>2]=25;c[f+4>>2]=0;c[(c[x>>2]|0)+56>>2]=0;f=(c[A>>2]|0)+56|0;L=c[f+4>>2]|0;M=(c[x>>2]|0)+64|0;c[M>>2]=c[f>>2];c[M+4>>2]=L;c[F>>2]=gE(c[z>>2]|0,c[B>>2]|0,c[x>>2]|0)|0;if(c[F>>2]|0)break;c[w>>2]=c[(c[x>>2]|0)+4>>2];f=o;L=c[f+4>>2]|0;M=c[y>>2]|0;c[M>>2]=c[f>>2];c[M+4>>2]=L;c[u>>2]=-1;c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[v>>2]|0))break;c[(c[(c[y>>2]|0)+48>>2]|0)+(c[q>>2]<<2)>>2]=0;c[q>>2]=(c[q>>2]|0)+1}b[(c[y>>2]|0)+24+6>>1]=0;c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[v>>2]|0))break;M=(c[(c[D>>2]|0)+(c[q>>2]<<3)>>2]|0)-1|0;c[s>>2]=M;if((M|0)>=0){c[t>>2]=c[(c[w>>2]|0)+8>>2];if((c[t>>2]|0)<0?1:(c[s>>2]|0)>=(c[v>>2]|0)){J=36;break a}if((c[t>>2]|0)>=(c[(c[E>>2]|0)+12>>2]|0)){J=36;break a}if(c[(c[(c[y>>2]|0)+48>>2]|0)+(c[s>>2]<<2)>>2]|0){J=36;break a}c[C>>2]=(c[(c[E>>2]|0)+20>>2]|0)+((c[t>>2]|0)*48|0);f=(c[C>>2]|0)+32|0;M=c[y>>2]|0;l=M;L=c[l+4>>2]|c[f+4>>2];c[M>>2]=c[l>>2]|c[f>>2];c[M+4>>2]=L;c[(c[(c[y>>2]|0)+48>>2]|0)+(c[s>>2]<<2)>>2]=c[C>>2];if((c[s>>2]|0)>(c[u>>2]|0))c[u>>2]=c[s>>2];if((c[s>>2]|0)<16?(d[(c[D>>2]|0)+(c[q>>2]<<3)+4>>0]|0)!=0:0){M=(c[y>>2]|0)+24+6|0;b[M>>1]=e[M>>1]|1<>2]}if(e[(c[C>>2]|0)+18>>1]&1){if(!(d[(c[D>>2]|0)+(c[q>>2]<<3)+4>>0]|0))break;c[(c[x>>2]|0)+32>>2]=0;M=(c[x>>2]|0)+56|0;c[M>>2]=c[M>>2]&-2}}c[q>>2]=(c[q>>2]|0)+1;c[w>>2]=(c[w>>2]|0)+12}if((c[q>>2]|0)>=(c[v>>2]|0)){b[(c[y>>2]|0)+40>>1]=(c[u>>2]|0)+1;c[(c[y>>2]|0)+24>>2]=c[(c[x>>2]|0)+20>>2];a[(c[y>>2]|0)+24+4>>0]=c[(c[x>>2]|0)+28>>2];c[(c[x>>2]|0)+28>>2]=0;c[(c[y>>2]|0)+24+8>>2]=c[(c[x>>2]|0)+24>>2];if(c[(c[x>>2]|0)+32>>2]|0)g=c[(c[x>>2]|0)+8>>2]|0;else g=0;a[(c[y>>2]|0)+24+5>>0]=g;b[(c[y>>2]|0)+18>>1]=0;g=hE(+h[(c[x>>2]|0)+40>>3])|0;b[(c[y>>2]|0)+20>>1]=g;g=(c[x>>2]|0)+48|0;g=Hj(c[g>>2]|0,c[g+4>>2]|0)|0;b[(c[y>>2]|0)+22>>1]=g;g=(c[y>>2]|0)+36|0;j=c[g>>2]|0;if(c[(c[x>>2]|0)+56>>2]&1)c[g>>2]=j|4096;else c[g>>2]=j&-4097;TD(c[n>>2]|0,c[y>>2]|0)|0;if(a[(c[y>>2]|0)+24+4>>0]|0){Kd(c[(c[y>>2]|0)+24+8>>2]|0);a[(c[y>>2]|0)+24+4>>0]=0}}c[r>>2]=(c[r>>2]|0)+1}if((J|0)==36){c[F>>2]=1;M=c[z>>2]|0;c[I>>2]=c[c[B>>2]>>2];Ah(M,35614,I)}if(c[(c[x>>2]|0)+28>>2]|0)Kd(c[(c[x>>2]|0)+24>>2]|0);Sf(c[p>>2]|0,c[x>>2]|0);c[m>>2]=c[F>>2];M=c[m>>2]|0;i=K;return M|0}function PD(f,g,h){f=f|0;g=g|0;h=h|0;var 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,D=0,E=0,F=0;E=i;i=i+144|0;j=E+128|0;k=E+8|0;y=E+124|0;s=E+120|0;B=E+64|0;m=E+140|0;l=E+136|0;F=E+56|0;t=E+52|0;r=E+48|0;D=E+44|0;o=E+40|0;n=E+36|0;A=E+134|0;z=E+132|0;w=E+32|0;u=E+28|0;q=E+24|0;v=E+20|0;x=E+16|0;p=E;c[j>>2]=f;f=k;c[f>>2]=g;c[f+4>>2]=h;b[l>>1]=-1;c[D>>2]=0;c[o>>2]=1;c[r>>2]=c[(c[j>>2]|0)+12>>2];c[y>>2]=c[c[j>>2]>>2];c[F>>2]=c[(c[y>>2]|0)+4>>2];c[t>>2]=(c[F>>2]|0)+8+((d[(c[r>>2]|0)+16>>0]|0)*72|0);c[u>>2]=c[(c[t>>2]|0)+16>>2];c[w>>2]=c[(c[j>>2]|0)+4>>2];do if(c[(c[t>>2]|0)+68>>2]|0)c[s>>2]=c[(c[t>>2]|0)+68>>2];else{if(d[(c[u>>2]|0)+42>>0]&32){c[s>>2]=c[(c[u>>2]|0)+8>>2];break}g=B;h=g+56|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));b[B+50>>1]=1;b[B+52>>1]=1;c[B+4>>2]=l;c[B+8>>2]=m;a[B+54>>0]=5;c[B+12>>2]=c[u>>2];b[B+48>>1]=b[(c[u>>2]|0)+40>>1]|0;b[m>>1]=b[(c[u>>2]|0)+38>>1]|0;b[m+2>>1]=0;c[q>>2]=c[(c[(c[t>>2]|0)+16>>2]|0)+8>>2];if(!(a[(c[t>>2]|0)+36+1>>0]&1))c[B+20>>2]=c[q>>2];c[s>>2]=B}while(0);b[A>>1]=b[(c[u>>2]|0)+38>>1]|0;b[z>>1]=ND(b[A>>1]|0)|0;a:do if((((((((c[(c[j>>2]|0)+16>>2]|0)==0?(e[(c[y>>2]|0)+34>>1]&128|0)==0:0)?(c[(c[c[c[y>>2]>>2]>>2]|0)+24>>2]&1048576|0)!=0:0)?(c[(c[t>>2]|0)+68>>2]|0)==0:0)?(a[(c[t>>2]|0)+36+1>>0]&1|0)==0:0)?(d[(c[u>>2]|0)+42>>0]&32|0)==0:0)?((d[(c[t>>2]|0)+36+1>>0]|0)>>>3&1|0)==0:0)?((d[(c[t>>2]|0)+36+1>>0]|0)>>>5&1|0)==0:0){c[x>>2]=(c[(c[w>>2]|0)+20>>2]|0)+((c[(c[w>>2]|0)+12>>2]|0)*48|0);c[v>>2]=c[(c[w>>2]|0)+20>>2];while(1){if(c[D>>2]|0)break a;if((c[v>>2]|0)>>>0>=(c[x>>2]|0)>>>0)break a;B=(c[v>>2]|0)+32|0;F=(c[r>>2]|0)+8|0;if(!((c[B>>2]&c[F>>2]|0)!=0?1:(c[B+4>>2]&c[F+4>>2]|0)!=0)?(FD(c[v>>2]|0,c[t>>2]|0,0,0)|0)!=0:0){b[(c[r>>2]|0)+24>>1]=1;b[(c[r>>2]|0)+42>>1]=0;c[(c[r>>2]|0)+24+4>>2]=0;b[(c[r>>2]|0)+40>>1]=1;c[c[(c[r>>2]|0)+48>>2]>>2]=c[v>>2];b[(c[r>>2]|0)+18>>1]=(b[z>>1]|0)+(b[A>>1]|0)+4;if((c[(c[u>>2]|0)+12>>2]|0)==0?(d[(c[u>>2]|0)+42>>0]&2|0)==0:0){F=(c[r>>2]|0)+18|0;b[F>>1]=(b[F>>1]|0)+24}b[(c[r>>2]|0)+22>>1]=43;m=KD(b[z>>1]|0,b[(c[r>>2]|0)+22>>1]|0)|0;b[(c[r>>2]|0)+20>>1]=m;c[(c[r>>2]|0)+36>>2]=16384;m=k;q=(c[v>>2]|0)+32|0;B=c[m+4>>2]|c[q+4>>2];F=c[r>>2]|0;c[F>>2]=c[m>>2]|c[q>>2];c[F+4>>2]=B;c[D>>2]=TD(c[j>>2]|0,c[r>>2]|0)|0}c[v>>2]=(c[v>>2]|0)+48}}while(0);b:while(1){if(!((c[D>>2]|0)==0?(c[s>>2]|0)!=0:0)){g=46;break}if(!((c[(c[s>>2]|0)+36>>2]|0)!=0?(YD(c[(c[t>>2]|0)+44>>2]|0,c[w>>2]|0,c[(c[s>>2]|0)+36>>2]|0)|0)==0:0)){b[A>>1]=b[c[(c[s>>2]|0)+8>>2]>>1]|0;b[(c[r>>2]|0)+24>>1]=0;b[(c[r>>2]|0)+42>>1]=0;b[(c[r>>2]|0)+40>>1]=0;a[(c[r>>2]|0)+17>>0]=0;b[(c[r>>2]|0)+18>>1]=0;z=k;B=c[z+4>>2]|0;F=c[r>>2]|0;c[F>>2]=c[z>>2];c[F+4>>2]=B;b[(c[r>>2]|0)+22>>1]=b[A>>1]|0;c[(c[r>>2]|0)+24+4>>2]=c[s>>2];c[n>>2]=ZD(c[j>>2]|0,c[s>>2]|0,c[(c[t>>2]|0)+44>>2]|0)|0;do if((c[(c[s>>2]|0)+44>>2]|0)<=0){c[(c[r>>2]|0)+36>>2]=256;a[(c[r>>2]|0)+17>>0]=(c[n>>2]|0)!=0?c[o>>2]|0:0;b[(c[r>>2]|0)+20>>1]=(b[A>>1]|0)+16;_D(c[w>>2]|0,c[r>>2]|0,b[A>>1]|0);c[D>>2]=TD(c[j>>2]|0,c[r>>2]|0)|0;b[(c[r>>2]|0)+22>>1]=b[A>>1]|0;if(c[D>>2]|0){g=46;break b}}else{if((d[(c[s>>2]|0)+55>>0]|0)>>>5&1){c[(c[r>>2]|0)+36>>2]=576;F=p;c[F>>2]=0;c[F+4>>2]=0}else{B=(c[t>>2]|0)+56|0;x=c[B>>2]|0;B=c[B+4>>2]|0;z=$D(c[s>>2]|0)|0;F=p;c[F>>2]=x&~z;c[F+4>>2]=B&~C;F=p;c[(c[r>>2]|0)+36>>2]=(c[F>>2]|0)==0&(c[F+4>>2]|0)==0?576:512}if((c[n>>2]|0)==0?(d[(c[u>>2]|0)+42>>0]&32|0)==0:0){F=p;if(!((c[F>>2]|0)==0&(c[F+4>>2]|0)==0))break;if((d[(c[s>>2]|0)+55>>0]|0)>>>2&1)break;if((b[(c[s>>2]|0)+48>>1]|0)>=(b[(c[u>>2]|0)+40>>1]|0))break;if(!((c[6]|0)!=0?(e[(c[y>>2]|0)+34>>1]&4|0)==0:0))break;if(e[(c[c[c[y>>2]>>2]>>2]|0)+60>>1]&64)break}a[(c[r>>2]|0)+17>>0]=(c[n>>2]|0)!=0?c[o>>2]|0:0;b[(c[r>>2]|0)+20>>1]=(b[A>>1]|0)+1+(((b[(c[s>>2]|0)+48>>1]|0)*15|0)/(b[(c[u>>2]|0)+40>>1]|0)|0);F=p;if((c[F>>2]|0)!=0|(c[F+4>>2]|0)!=0){F=KD(b[(c[r>>2]|0)+20>>1]|0,(b[A>>1]|0)+16&65535)|0;b[(c[r>>2]|0)+20>>1]=F}_D(c[w>>2]|0,c[r>>2]|0,b[A>>1]|0);c[D>>2]=TD(c[j>>2]|0,c[r>>2]|0)|0;b[(c[r>>2]|0)+22>>1]=b[A>>1]|0;if(c[D>>2]|0){g=46;break b}}while(0);c[D>>2]=aE(c[j>>2]|0,c[t>>2]|0,c[s>>2]|0,0)|0;if(c[(c[t>>2]|0)+68>>2]|0){g=46;break}}c[s>>2]=c[(c[s>>2]|0)+20>>2];c[o>>2]=(c[o>>2]|0)+1}if((g|0)==46){i=E;return c[D>>2]|0}return 0}function QD(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var 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;I=i;i=i+672|0;m=I+668|0;n=I+584|0;o=I+576|0;l=I+664|0;z=I+660|0;u=I+656|0;y=I+652|0;A=I+648|0;B=I+644|0;q=I+640|0;G=I+168|0;E=I+620|0;F=I+112|0;C=I+56|0;t=I+616|0;w=I+612|0;x=I+608|0;v=I+604|0;s=I+600|0;p=I+596|0;r=I+592|0;D=I;c[m>>2]=f;f=n;c[f>>2]=g;c[f+4>>2]=h;g=o;c[g>>2]=j;c[g+4>>2]=k;c[l>>2]=c[c[m>>2]>>2];c[B>>2]=0;c[z>>2]=c[(c[m>>2]|0)+4>>2];c[A>>2]=(c[(c[z>>2]|0)+20>>2]|0)+((c[(c[z>>2]|0)+12>>2]|0)*48|0);c[u>>2]=c[(c[m>>2]|0)+12>>2];g=F;h=g+56|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));c[t>>2]=(c[(c[l>>2]|0)+4>>2]|0)+8+((d[(c[u>>2]|0)+16>>0]|0)*72|0);c[q>>2]=c[(c[t>>2]|0)+44>>2];c[y>>2]=c[(c[z>>2]|0)+20>>2];while(1){if(!((c[y>>2]|0)>>>0<(c[A>>2]|0)>>>0?(c[B>>2]|0)==0:0))break;a:do if((e[(c[y>>2]|0)+18>>1]&512|0)!=0?(f=(c[(c[y>>2]|0)+12>>2]|0)+408|0,l=(c[u>>2]|0)+8|0,(c[f>>2]&c[l>>2]|0)!=0?1:(c[f+4>>2]&c[l+4>>2]|0)!=0):0){c[w>>2]=c[(c[y>>2]|0)+12>>2];c[x>>2]=(c[(c[w>>2]|0)+20>>2]|0)+((c[(c[w>>2]|0)+12>>2]|0)*48|0);c[s>>2]=1;l=c[m>>2]|0;c[E>>2]=c[l>>2];c[E+4>>2]=c[l+4>>2];c[E+8>>2]=c[l+8>>2];c[E+12>>2]=c[l+12>>2];c[E+16>>2]=c[l+16>>2];c[E+8>>2]=0;c[E+16>>2]=C;c[v>>2]=c[(c[w>>2]|0)+20>>2];b:while(1){if((c[v>>2]|0)>>>0>=(c[x>>2]|0)>>>0)break;g=c[v>>2]|0;if(!(e[(c[v>>2]|0)+18>>1]&1024)){if((c[g+8>>2]|0)==(c[q>>2]|0)){c[G>>2]=c[c[z>>2]>>2];c[G+4>>2]=c[z>>2];a[G+8>>0]=72;c[G+12>>2]=1;c[G+20>>2]=c[v>>2];c[E+4>>2]=G;H=11}}else{c[E+4>>2]=c[g+12>>2];H=11}c:do if((H|0)==11){H=0;b[C>>1]=0;h=n;g=c[h>>2]|0;h=c[h+4>>2]|0;if(d[(c[(c[t>>2]|0)+16>>2]|0)+42>>0]&16){l=o;c[B>>2]=OD(E,g,h,c[l>>2]|0,c[l+4>>2]|0)|0}else c[B>>2]=PD(E,g,h)|0;if(!(c[B>>2]|0)){f=n;l=o;c[B>>2]=QD(E,c[f>>2]|0,c[f+4>>2]|0,c[l>>2]|0,c[l+4>>2]|0)|0}if(!(e[C>>1]|0)){H=17;break b}if(c[s>>2]|0){RD(F,C);c[s>>2]=0;break}RD(D,F);b[F>>1]=0;c[p>>2]=0;while(1){if((c[p>>2]|0)>=(e[D>>1]|0))break c;c[r>>2]=0;while(1){g=c[p>>2]|0;if((c[r>>2]|0)>=(e[C>>1]|0))break;l=D+8+(g<<4)|0;f=C+8+(c[r>>2]<<4)|0;k=c[l>>2]|c[f>>2];f=c[l+4>>2]|c[f+4>>2];l=KD(b[D+8+(c[p>>2]<<4)+8>>1]|0,b[C+8+(c[r>>2]<<4)+8>>1]|0)|0;SD(F,k,f,l,KD(b[D+8+(c[p>>2]<<4)+10>>1]|0,b[C+8+(c[r>>2]<<4)+10>>1]|0)|0)|0;c[r>>2]=(c[r>>2]|0)+1}c[p>>2]=g+1}}while(0);c[v>>2]=(c[v>>2]|0)+48}if((H|0)==17){H=0;b[F>>1]=0}b[(c[u>>2]|0)+40>>1]=1;c[c[(c[u>>2]|0)+48>>2]>>2]=c[y>>2];c[(c[u>>2]|0)+36>>2]=8192;b[(c[u>>2]|0)+18>>1]=0;a[(c[u>>2]|0)+17>>0]=0;l=(c[u>>2]|0)+24|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[p>>2]=0;while(1){if(c[B>>2]|0)break a;if((c[p>>2]|0)>=(e[F>>1]|0))break a;b[(c[u>>2]|0)+20>>1]=(b[F+8+(c[p>>2]<<4)+8>>1]|0)+1;b[(c[u>>2]|0)+22>>1]=b[F+8+(c[p>>2]<<4)+10>>1]|0; -k=F+8+(c[p>>2]<<4)|0;f=c[k+4>>2]|0;l=c[u>>2]|0;c[l>>2]=c[k>>2];c[l+4>>2]=f;c[B>>2]=TD(c[m>>2]|0,c[u>>2]|0)|0;c[p>>2]=(c[p>>2]|0)+1}}while(0);c[y>>2]=(c[y>>2]|0)+48}i=I;return c[B>>2]|0}function RD(a,d){a=a|0;d=d|0;var f=0,g=0,h=0;f=i;i=i+16|0;g=f+4|0;h=f;c[g>>2]=a;c[h>>2]=d;b[c[g>>2]>>1]=b[c[h>>2]>>1]|0;iR((c[g>>2]|0)+8|0,(c[h>>2]|0)+8|0,(e[c[g>>2]>>1]|0)<<4|0)|0;i=f;return}function SD(a,d,f,g,h){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+32|0;k=r+16|0;l=r+12|0;m=r;n=r+24|0;o=r+22|0;p=r+20|0;q=r+8|0;c[l>>2]=a;a=m;c[a>>2]=d;c[a+4>>2]=f;b[n>>1]=g;b[o>>1]=h;b[p>>1]=b[c[l>>2]>>1]|0;c[q>>2]=(c[l>>2]|0)+8;while(1){if((e[p>>1]|0)<=0){j=9;break}if((b[n>>1]|0)<=(b[(c[q>>2]|0)+8>>1]|0)?(h=m,a=c[q>>2]|0,g=m,(c[h>>2]&c[a>>2]|0)==(c[g>>2]|0)?(c[h+4>>2]&c[a+4>>2]|0)==(c[g+4>>2]|0):0):0)break;if((b[(c[q>>2]|0)+8>>1]|0)<=(b[n>>1]|0)?(h=c[q>>2]|0,a=m,g=c[q>>2]|0,(c[h>>2]&c[a>>2]|0)==(c[g>>2]|0)?(c[h+4>>2]&c[a+4>>2]|0)==(c[g+4>>2]|0):0):0){j=7;break}b[p>>1]=(b[p>>1]|0)+-1<<16>>16;c[q>>2]=(c[q>>2]|0)+16}if((j|0)==7){c[k>>2]=0;q=c[k>>2]|0;i=r;return q|0}do if((j|0)==9){d=c[l>>2]|0;if((e[c[l>>2]>>1]|0)<3){p=b[d>>1]|0;b[d>>1]=p+1<<16>>16;c[q>>2]=(c[l>>2]|0)+8+((p&65535)<<4);b[(c[q>>2]|0)+10>>1]=b[o>>1]|0;break}c[q>>2]=d+8;b[p>>1]=1;while(1){d=b[(c[q>>2]|0)+8>>1]|0;if((e[p>>1]|0)>=(e[c[l>>2]>>1]|0))break;if((d|0)>(b[(c[l>>2]|0)+8+(e[p>>1]<<4)+8>>1]|0))c[q>>2]=(c[l>>2]|0)+8+(e[p>>1]<<4);b[p>>1]=(b[p>>1]|0)+1<<16>>16}if((d|0)<=(b[n>>1]|0)){c[k>>2]=0;q=c[k>>2]|0;i=r;return q|0}}while(0);l=m;m=c[l+4>>2]|0;p=c[q>>2]|0;c[p>>2]=c[l>>2];c[p+4>>2]=m;b[(c[q>>2]|0)+8>>1]=b[n>>1]|0;if((b[(c[q>>2]|0)+10>>1]|0)>(b[o>>1]|0))b[(c[q>>2]|0)+10>>1]=b[o>>1]|0;c[k>>2]=1;q=c[k>>2]|0;i=r;return q|0}function TD(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;e=p+36|0;f=p+32|0;g=p+28|0;n=p+24|0;j=p+20|0;m=p+16|0;h=p+12|0;o=p+8|0;l=p+4|0;k=p;c[f>>2]=a;c[g>>2]=d;c[m>>2]=c[c[f>>2]>>2];c[h>>2]=c[c[c[m>>2]>>2]>>2];if(c[(c[f>>2]|0)+16>>2]|0){if(b[(c[g>>2]|0)+40>>1]|0){o=c[g>>2]|0;SD(c[(c[f>>2]|0)+16>>2]|0,c[o>>2]|0,c[o+4>>2]|0,b[(c[g>>2]|0)+20>>1]|0,b[(c[g>>2]|0)+22>>1]|0)|0}c[e>>2]=0;o=c[e>>2]|0;i=p;return o|0}UD(c[(c[m>>2]|0)+16>>2]|0,c[g>>2]|0);c[n>>2]=VD((c[m>>2]|0)+16|0,c[g>>2]|0)|0;if(!(c[n>>2]|0)){c[e>>2]=0;o=c[e>>2]|0;i=p;return o|0}c[j>>2]=c[c[n>>2]>>2];a:do if(!(c[j>>2]|0)){o=Fw(c[h>>2]|0,72,0)|0;c[j>>2]=o;c[c[n>>2]>>2]=o;if(c[j>>2]|0){ZC(c[j>>2]|0);c[(c[j>>2]|0)+52>>2]=0;break}c[e>>2]=7;o=c[e>>2]|0;i=p;return o|0}else{c[o>>2]=(c[j>>2]|0)+52;while(1){if(!(c[c[o>>2]>>2]|0))break a;c[o>>2]=VD(c[o>>2]|0,c[g>>2]|0)|0;if(!(c[o>>2]|0))break a;c[l>>2]=c[c[o>>2]>>2];if(!(c[l>>2]|0))break a;c[c[o>>2]>>2]=c[(c[l>>2]|0)+52>>2];WC(c[h>>2]|0,c[l>>2]|0)}}while(0);WD(c[h>>2]|0,c[j>>2]|0,c[g>>2]|0)|0;if(((c[(c[j>>2]|0)+36>>2]&1024|0)==0?(c[k>>2]=c[(c[j>>2]|0)+24+4>>2],(c[k>>2]|0)!=0):0)?(c[(c[k>>2]|0)+44>>2]|0)==0:0)c[(c[j>>2]|0)+24+4>>2]=0;c[e>>2]=0;o=c[e>>2]|0;i=p;return o|0}function UD(a,e){a=a|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;f=h+4|0;g=h;c[f>>2]=a;c[g>>2]=e;if(!((c[f>>2]|0)!=0?(c[(c[g>>2]|0)+36>>2]&512|0)!=0:0)){i=h;return}do{do if((d[(c[f>>2]|0)+16>>0]|0)==(d[(c[g>>2]|0)+16>>0]|0)?(c[(c[f>>2]|0)+36>>2]&512|0)!=0:0){if(XD(c[f>>2]|0,c[g>>2]|0)|0){b[(c[g>>2]|0)+20>>1]=b[(c[f>>2]|0)+20>>1]|0;b[(c[g>>2]|0)+22>>1]=(b[(c[f>>2]|0)+22>>1]|0)-1;break}if(XD(c[g>>2]|0,c[f>>2]|0)|0){b[(c[g>>2]|0)+20>>1]=b[(c[f>>2]|0)+20>>1]|0;b[(c[g>>2]|0)+22>>1]=(b[(c[f>>2]|0)+22>>1]|0)+1}}while(0);c[f>>2]=c[(c[f>>2]|0)+52>>2]}while((c[f>>2]|0)!=0);i=h;return}function VD(a,f){a=a|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+16|0;j=l+12|0;k=l+8|0;g=l+4|0;h=l;c[k>>2]=a;c[g>>2]=f;c[h>>2]=c[c[k>>2]>>2];while(1){if(!(c[h>>2]|0)){g=19;break}if((d[(c[h>>2]|0)+16>>0]|0)==(d[(c[g>>2]|0)+16>>0]|0)?(d[(c[h>>2]|0)+17>>0]|0)==(d[(c[g>>2]|0)+17>>0]|0):0){if(((((c[(c[h>>2]|0)+36>>2]&16384|0)!=0?(e[(c[g>>2]|0)+42>>1]|0)==0:0)?(c[(c[g>>2]|0)+36>>2]&512|0)!=0:0)?(c[(c[g>>2]|0)+36>>2]&1|0)!=0:0)?(m=c[h>>2]|0,f=c[g>>2]|0,a=c[g>>2]|0,(c[m>>2]&c[f>>2]|0)==(c[a>>2]|0)?(c[m+4>>2]&c[f+4>>2]|0)==(c[a+4>>2]|0):0):0){g=19;break}f=c[h>>2]|0;a=c[g>>2]|0;m=c[h>>2]|0;if(((((c[f>>2]&c[a>>2]|0)==(c[m>>2]|0)?(c[f+4>>2]&c[a+4>>2]|0)==(c[m+4>>2]|0):0)?(b[(c[h>>2]|0)+18>>1]|0)<=(b[(c[g>>2]|0)+18>>1]|0):0)?(b[(c[h>>2]|0)+20>>1]|0)<=(b[(c[g>>2]|0)+20>>1]|0):0)?(b[(c[h>>2]|0)+22>>1]|0)<=(b[(c[g>>2]|0)+22>>1]|0):0){g=14;break}f=c[h>>2]|0;a=c[g>>2]|0;m=c[g>>2]|0;if((((c[f>>2]&c[a>>2]|0)==(c[m>>2]|0)?(c[f+4>>2]&c[a+4>>2]|0)==(c[m+4>>2]|0):0)?(b[(c[h>>2]|0)+20>>1]|0)>=(b[(c[g>>2]|0)+20>>1]|0):0)?(b[(c[h>>2]|0)+22>>1]|0)>=(b[(c[g>>2]|0)+22>>1]|0):0){g=19;break}}c[k>>2]=(c[h>>2]|0)+52;c[h>>2]=c[c[k>>2]>>2]}if((g|0)==14){c[j>>2]=0;m=c[j>>2]|0;i=l;return m|0}else if((g|0)==19){c[j>>2]=c[k>>2];m=c[j>>2]|0;i=l;return m|0}return 0}function WD(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;h=k+12|0;l=k+8|0;g=k+4|0;j=k;c[l>>2]=b;c[g>>2]=d;c[j>>2]=f;YC(c[l>>2]|0,c[g>>2]|0);d=(GD(c[l>>2]|0,c[g>>2]|0,e[(c[j>>2]|0)+40>>1]|0)|0)!=0;b=c[g>>2]|0;if(d){l=b+24|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[h>>2]=7;l=c[h>>2]|0;i=k;return l|0}f=c[j>>2]|0;d=b+44|0;do{c[b>>2]=c[f>>2];b=b+4|0;f=f+4|0}while((b|0)<(d|0));iR(c[(c[g>>2]|0)+48>>2]|0,c[(c[j>>2]|0)+48>>2]|0,(e[(c[g>>2]|0)+40>>1]|0)<<2|0)|0;b=c[j>>2]|0;if(!(c[(c[j>>2]|0)+36>>2]&1024)){if(c[b+36>>2]&16384)c[(c[j>>2]|0)+24+4>>2]=0}else a[b+24+4>>0]=0;c[h>>2]=0;l=c[h>>2]|0;i=k;return l|0}function XD(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;k=l+16|0;f=l+12|0;g=l+8|0;h=l+4|0;j=l;c[f>>2]=a;c[g>>2]=d;if(((e[(c[f>>2]|0)+40>>1]|0)-(e[(c[f>>2]|0)+42>>1]|0)|0)>=((e[(c[g>>2]|0)+40>>1]|0)-(e[(c[g>>2]|0)+42>>1]|0)|0)){c[k>>2]=0;k=c[k>>2]|0;i=l;return k|0}if((e[(c[g>>2]|0)+42>>1]|0)>(e[(c[f>>2]|0)+42>>1]|0)){c[k>>2]=0;k=c[k>>2]|0;i=l;return k|0}if((b[(c[f>>2]|0)+20>>1]|0)>=(b[(c[g>>2]|0)+20>>1]|0)){if((b[(c[f>>2]|0)+20>>1]|0)>(b[(c[g>>2]|0)+20>>1]|0)){c[k>>2]=0;k=c[k>>2]|0;i=l;return k|0}if((b[(c[f>>2]|0)+22>>1]|0)>(b[(c[g>>2]|0)+22>>1]|0)){c[k>>2]=0;k=c[k>>2]|0;i=l;return k|0}}c[h>>2]=(e[(c[f>>2]|0)+40>>1]|0)-1;while(1){if((c[h>>2]|0)<0){f=20;break}if(c[(c[(c[f>>2]|0)+48>>2]|0)+(c[h>>2]<<2)>>2]|0){c[j>>2]=(e[(c[g>>2]|0)+40>>1]|0)-1;while(1){if((c[j>>2]|0)<0)break;if((c[(c[(c[g>>2]|0)+48>>2]|0)+(c[j>>2]<<2)>>2]|0)==(c[(c[(c[f>>2]|0)+48>>2]|0)+(c[h>>2]<<2)>>2]|0))break;c[j>>2]=(c[j>>2]|0)+-1}if((c[j>>2]|0)<0){f=18;break}}c[h>>2]=(c[h>>2]|0)+-1}if((f|0)==18){c[k>>2]=0;k=c[k>>2]|0;i=l;return k|0}else if((f|0)==20){c[k>>2]=1;k=c[k>>2]|0;i=l;return k|0}return 0}function YD(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;g=p+24|0;h=p+20|0;j=p+16|0;k=p+12|0;l=p+8|0;n=p+4|0;m=p;c[h>>2]=a;c[j>>2]=e;c[k>>2]=f;while(1){if((d[c[k>>2]>>0]|0)!=72)break;if(!(YD(c[h>>2]|0,c[j>>2]|0,c[(c[k>>2]|0)+12>>2]|0)|0)){o=4;break}c[k>>2]=c[(c[k>>2]|0)+16>>2]}if((o|0)==4){c[g>>2]=0;o=c[g>>2]|0;i=p;return o|0}c[l>>2]=0;c[n>>2]=c[(c[j>>2]|0)+20>>2];while(1){if((c[l>>2]|0)>=(c[(c[j>>2]|0)+12>>2]|0)){o=13;break}c[m>>2]=c[c[n>>2]>>2];if(eE(c[m>>2]|0,c[k>>2]|0,c[h>>2]|0)|0){if(!(c[(c[m>>2]|0)+4>>2]&1)){o=11;break}if((b[(c[m>>2]|0)+36>>1]|0)==(c[h>>2]|0)){o=11;break}}c[l>>2]=(c[l>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+48}if((o|0)==11){c[g>>2]=1;o=c[g>>2]|0;i=p;return o|0}else if((o|0)==13){c[g>>2]=0;o=c[g>>2]|0;i=p;return o|0}return 0}function ZD(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;h=s+32|0;j=s+28|0;k=s+24|0;l=s+20|0;q=s+16|0;m=s+12|0;n=s+8|0;o=s+4|0;p=s;c[j>>2]=a;c[k>>2]=f;c[l>>2]=g;if((d[(c[k>>2]|0)+55>>0]|0)>>>2&1){c[h>>2]=0;r=c[h>>2]|0;i=s;return r|0}f=c[(c[c[j>>2]>>2]|0)+8>>2]|0;c[q>>2]=f;if(!f){c[h>>2]=0;r=c[h>>2]|0;i=s;return r|0}c[n>>2]=0;a:while(1){if((c[n>>2]|0)>=(c[c[q>>2]>>2]|0)){r=24;break}c[p>>2]=Tx(c[(c[(c[q>>2]|0)+4>>2]|0)+((c[n>>2]|0)*20|0)>>2]|0)|0;b:do if((d[c[p>>2]>>0]|0)==152?(c[(c[p>>2]|0)+28>>2]|0)==(c[l>>2]|0):0){if((b[(c[p>>2]|0)+32>>1]|0)<0){r=10;break a}c[o>>2]=0;while(1){if((c[o>>2]|0)>=(e[(c[k>>2]|0)+50>>1]|0))break b;if((b[(c[p>>2]|0)+32>>1]|0)==(b[(c[(c[k>>2]|0)+4>>2]|0)+(c[o>>2]<<1)>>1]|0)){r=14;break a}c[o>>2]=(c[o>>2]|0)+1}}else r=16;while(0);c:do if((r|0)==16?(r=0,f=c[(c[k>>2]|0)+40>>2]|0,c[m>>2]=f,(f|0)!=0):0){c[o>>2]=0;while(1){if((c[o>>2]|0)>=(e[(c[k>>2]|0)+50>>1]|0))break c;if((b[(c[(c[k>>2]|0)+4>>2]|0)+(c[o>>2]<<1)>>1]|0)==-2?(py(c[p>>2]|0,c[(c[(c[m>>2]|0)+4>>2]|0)+((c[o>>2]|0)*20|0)>>2]|0,c[l>>2]|0)|0)==0:0){r=21;break a}c[o>>2]=(c[o>>2]|0)+1}}while(0);c[n>>2]=(c[n>>2]|0)+1}if((r|0)==10){c[h>>2]=1;r=c[h>>2]|0;i=s;return r|0}else if((r|0)==14){c[h>>2]=1;r=c[h>>2]|0;i=s;return r|0}else if((r|0)==21){c[h>>2]=1;r=c[h>>2]|0;i=s;return r|0}else if((r|0)==24){c[h>>2]=0;r=c[h>>2]|0;i=s;return r|0}return 0}function _D(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+48|0;g=s+36|0;h=s+32|0;j=s+42|0;q=s+28|0;r=s+24|0;o=s;k=s+20|0;m=s+16|0;n=s+12|0;l=s+40|0;p=s+8|0;c[g>>2]=a;c[h>>2]=d;b[j>>1]=f;t=c[h>>2]|0;f=(c[h>>2]|0)+8|0;d=~(c[t+4>>2]|c[f+4>>2]);a=o;c[a>>2]=~(c[t>>2]|c[f>>2]);c[a+4>>2]=d;b[l>>1]=0;c[k>>2]=c[(c[g>>2]|0)+12>>2];c[q>>2]=c[(c[g>>2]|0)+20>>2];while(1){if((c[k>>2]|0)<=0)break;if(e[(c[q>>2]|0)+20>>1]&2)break;a=(c[q>>2]|0)+40|0;t=(c[h>>2]|0)+8|0;do if(!((c[a>>2]&c[t>>2]|0)==0?(c[a+4>>2]&c[t+4>>2]|0)==0:0)?(a=(c[q>>2]|0)+40|0,t=o,!((c[a>>2]&c[t>>2]|0)!=0?1:(c[a+4>>2]&c[t+4>>2]|0)!=0)):0){c[m>>2]=(e[(c[h>>2]|0)+40>>1]|0)-1;while(1){if((c[m>>2]|0)<0)break;c[r>>2]=c[(c[(c[h>>2]|0)+48>>2]|0)+(c[m>>2]<<2)>>2];if(c[r>>2]|0){if((c[r>>2]|0)==(c[q>>2]|0))break;if((c[(c[r>>2]|0)+4>>2]|0)>=0?((c[(c[g>>2]|0)+20>>2]|0)+((c[(c[r>>2]|0)+4>>2]|0)*48|0)|0)==(c[q>>2]|0):0)break}c[m>>2]=(c[m>>2]|0)+-1}if((c[m>>2]|0)<0){if((b[(c[q>>2]|0)+16>>1]|0)<=0){t=(c[h>>2]|0)+22|0;b[t>>1]=(b[t>>1]|0)+(b[(c[q>>2]|0)+16>>1]|0);break}t=(c[h>>2]|0)+22|0;b[t>>1]=(b[t>>1]|0)+-1<<16>>16;if(e[(c[q>>2]|0)+18>>1]&130){c[p>>2]=c[(c[c[q>>2]>>2]|0)+16>>2];t=(ky(c[p>>2]|0,n)|0)!=0;if(t&(c[n>>2]|0)>=-1&(c[n>>2]|0)<=1)c[n>>2]=10;else c[n>>2]=20;if((b[l>>1]|0)<(c[n>>2]|0))b[l>>1]=c[n>>2]}}}while(0);c[k>>2]=(c[k>>2]|0)+-1;c[q>>2]=(c[q>>2]|0)+48}if((b[(c[h>>2]|0)+22>>1]|0)<=((b[j>>1]|0)-(b[l>>1]|0)|0)){i=s;return}b[(c[h>>2]|0)+22>>1]=(b[j>>1]|0)-(b[l>>1]|0);i=s;return}function $D(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;j=i;i=i+32|0;d=j+16|0;g=j;f=j+12|0;h=j+8|0;c[d>>2]=a;a=g;c[a>>2]=0;c[a+4>>2]=0;c[f>>2]=(e[(c[d>>2]|0)+52>>1]|0)-1;while(1){if((c[f>>2]|0)<0)break;c[h>>2]=b[(c[(c[d>>2]|0)+4>>2]|0)+(c[f>>2]<<1)>>1];if((c[h>>2]|0)>=0&(c[h>>2]|0)<63){l=lR(1,0,c[h>>2]|0)|0;m=g;k=c[m+4>>2]|C;a=g;c[a>>2]=c[m>>2]|l;c[a+4>>2]=k}c[f>>2]=(c[f>>2]|0)+-1}m=g;C=c[m+4>>2]|0;i=j;return c[m>>2]|0}function aE(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var 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,J=0,K=0,L=0,M=0,N=0,O=0,P=0;O=i;i=i+208|0;l=O+172|0;m=O+168|0;n=O+164|0;o=O+160|0;p=O+196|0;P=O+156|0;A=O+152|0;q=O+148|0;z=O+144|0;B=O+140|0;k=O+136|0;N=O+40|0;L=O;I=O+194|0;H=O+192|0;K=O+190|0;M=O+36|0;J=O+188|0;G=O+32|0;F=O+186|0;E=O+184|0;C=O+28|0;x=O+24|0;r=O+182|0;D=O+180|0;w=O+178|0;u=O+20|0;y=O+16|0;s=O+12|0;t=O+8|0;v=O+176|0;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;b[p>>1]=j;c[P>>2]=c[c[m>>2]>>2];c[A>>2]=c[c[P>>2]>>2];c[q>>2]=c[c[A>>2]>>2];c[G>>2]=0;c[C>>2]=0;c[x>>2]=0;c[z>>2]=c[(c[m>>2]|0)+12>>2];if(a[(c[q>>2]|0)+65>>0]|0){c[l>>2]=7;P=c[l>>2]|0;i=O;return P|0}do if(!(c[(c[z>>2]|0)+36>>2]&32))if(d[(c[n>>2]|0)+36>>0]&8){c[k>>2]=63;break}else{c[k>>2]=447;break}else c[k>>2]=24;while(0);if((d[(c[o>>2]|0)+55>>0]|0)>>>2&1)c[k>>2]=c[k>>2]&-61;b[H>>1]=b[(c[z>>2]|0)+24>>1]|0;b[K>>1]=b[(c[z>>2]|0)+42>>1]|0;b[I>>1]=b[(c[z>>2]|0)+40>>1]|0;c[M>>2]=c[(c[z>>2]|0)+36>>2];h=c[z>>2]|0;g=c[h+4>>2]|0;P=L;c[P>>2]=c[h>>2];c[P+4>>2]=g;b[J>>1]=b[(c[z>>2]|0)+22>>1]|0;c[B>>2]=yD(N,c[(c[m>>2]|0)+4>>2]|0,c[(c[n>>2]|0)+44>>2]|0,e[H>>1]|0,c[k>>2]|0,c[o>>2]|0)|0;b[(c[z>>2]|0)+18>>1]=0;b[F>>1]=b[c[(c[o>>2]|0)+8>>2]>>1]|0;b[E>>1]=ND(b[F>>1]|0)|0;a:while(1){if(!((c[G>>2]|0)==0?(c[B>>2]|0)!=0:0))break;b[r>>1]=b[(c[B>>2]|0)+18>>1]|0;c[u>>2]=0;if((e[r>>1]|0)!=256?(e[(c[B>>2]|0)+20>>1]&0|0)==0:0)j=15;else j=14;if((j|0)==14?(j=0,(bE(c[o>>2]|0,e[H>>1]|0)|0)==0):0)j=15;do if((j|0)==15?(0,g=(c[B>>2]|0)+32|0,P=(c[z>>2]|0)+8|0,!((c[g>>2]&c[P>>2]|0)!=0?1:(c[g+4>>2]&c[P+4>>2]|0)!=0)):0){if((e[(c[B>>2]|0)+20>>1]&256|0)!=0?(e[(c[B>>2]|0)+18>>1]|0)==16:0)break;c[(c[z>>2]|0)+36>>2]=c[M>>2];b[(c[z>>2]|0)+24>>1]=b[H>>1]|0;b[(c[z>>2]|0)+40>>1]=b[I>>1]|0;if(GD(c[q>>2]|0,c[z>>2]|0,(e[(c[z>>2]|0)+40>>1]|0)+1|0)|0)break a;f=c[B>>2]|0;h=(c[z>>2]|0)+40|0;k=b[h>>1]|0;b[h>>1]=k+1<<16>>16;c[(c[(c[z>>2]|0)+48>>2]|0)+((k&65535)<<2)>>2]=f;k=L;f=(c[B>>2]|0)+32|0;h=(c[z>>2]|0)+8|0;g=(c[k+4>>2]|c[f+4>>2])&~c[h+4>>2];P=c[z>>2]|0;c[P>>2]=(c[k>>2]|c[f>>2])&~c[h>>2];c[P+4>>2]=g;do if(e[r>>1]&1){c[y>>2]=c[c[B>>2]>>2];P=(c[z>>2]|0)+36|0;c[P>>2]=c[P>>2]|4;if(c[(c[y>>2]|0)+4>>2]&2048){c[u>>2]=46;break}if((c[(c[y>>2]|0)+20>>2]|0)!=0?(c[c[(c[y>>2]|0)+20>>2]>>2]|0)!=0:0){P=c[c[(c[y>>2]|0)+20>>2]>>2]|0;c[u>>2]=(Hj(P,((P|0)<0)<<31>>31)|0)<<16>>16}}else{if(e[r>>1]&130){c[s>>2]=b[(c[(c[o>>2]|0)+4>>2]|0)+(e[H>>1]<<1)>>1];P=(c[z>>2]|0)+36|0;c[P>>2]=c[P>>2]|1;if((c[s>>2]|0)!=-1){if((c[s>>2]|0)<=0)break;if(b[p>>1]|0)break;if((e[H>>1]|0)!=((e[(c[o>>2]|0)+50>>1]|0)-1|0))break}if((c[s>>2]|0)>=0?((d[(c[o>>2]|0)+55>>0]|0)>>>3&1|0)==0:0){P=(c[z>>2]|0)+36|0;c[P>>2]=c[P>>2]|65536;break}P=(c[z>>2]|0)+36|0;c[P>>2]=c[P>>2]|4096;break}if(e[r>>1]&256){P=(c[z>>2]|0)+36|0;c[P>>2]=c[P>>2]|8;break}j=(c[z>>2]|0)+36|0;k=c[j>>2]|0;if(e[r>>1]&36){c[j>>2]=k|34;c[x>>2]=c[B>>2];c[C>>2]=0;if(!(e[(c[B>>2]|0)+20>>1]&256))break;c[C>>2]=(c[B>>2]|0)+48;if(GD(c[q>>2]|0,c[z>>2]|0,(e[(c[z>>2]|0)+40>>1]|0)+1|0)|0)break a;g=c[C>>2]|0;h=(c[z>>2]|0)+40|0;P=b[h>>1]|0;b[h>>1]=P+1<<16>>16;c[(c[(c[z>>2]|0)+48>>2]|0)+((P&65535)<<2)>>2]=g;P=(c[z>>2]|0)+36|0;c[P>>2]=c[P>>2]|16;break}else{c[j>>2]=k|18;c[C>>2]=c[B>>2];if(c[(c[z>>2]|0)+36>>2]&32)j=c[(c[(c[z>>2]|0)+48>>2]|0)+((e[(c[z>>2]|0)+40>>1]|0)-2<<2)>>2]|0;else j=0;c[x>>2]=j;break}}while(0);do if(!(c[(c[z>>2]|0)+36>>2]&2)){g=(c[z>>2]|0)+24|0;P=(b[g>>1]|0)+1<<16>>16;b[g>>1]=P;c[t>>2]=P&65535;if((b[(c[B>>2]|0)+16>>1]|0)<=0?(b[(c[(c[o>>2]|0)+4>>2]|0)+(e[H>>1]<<1)>>1]|0)>=0:0){P=(c[z>>2]|0)+22|0;b[P>>1]=(b[P>>1]|0)+(b[(c[B>>2]|0)+16>>1]|0);P=(c[z>>2]|0)+22|0;b[P>>1]=(b[P>>1]|0)-(c[u>>2]|0);break}P=(c[z>>2]|0)+22|0;b[P>>1]=(b[P>>1]|0)+((b[(c[(c[o>>2]|0)+8>>2]|0)+(c[t>>2]<<1)>>1]|0)-(b[(c[(c[o>>2]|0)+8>>2]|0)+((c[t>>2]|0)-1<<1)>>1]|0));if(e[r>>1]&256){P=(c[z>>2]|0)+22|0;b[P>>1]=(b[P>>1]|0)+10}}else cE(c[A>>2]|0,c[m>>2]|0,c[x>>2]|0,c[C>>2]|0,c[z>>2]|0)|0;while(0);b[D>>1]=(b[(c[z>>2]|0)+22>>1]|0)+1+(((b[(c[o>>2]|0)+48>>1]|0)*15|0)/(b[(c[(c[n>>2]|0)+16>>2]|0)+40>>1]|0)|0);P=KD(b[E>>1]|0,b[D>>1]|0)|0;b[(c[z>>2]|0)+20>>1]=P;if(!(c[(c[z>>2]|0)+36>>2]&320)){P=KD(b[(c[z>>2]|0)+20>>1]|0,(b[(c[z>>2]|0)+22>>1]|0)+16&65535)|0;b[(c[z>>2]|0)+20>>1]=P}b[w>>1]=b[(c[z>>2]|0)+22>>1]|0;P=(c[z>>2]|0)+20|0;b[P>>1]=(b[P>>1]|0)+((b[p>>1]|0)+(c[u>>2]|0));P=(c[z>>2]|0)+22|0;b[P>>1]=(b[P>>1]|0)+((b[p>>1]|0)+(c[u>>2]|0));_D(c[(c[m>>2]|0)+4>>2]|0,c[z>>2]|0,b[F>>1]|0);c[G>>2]=TD(c[m>>2]|0,c[z>>2]|0)|0;if(c[(c[z>>2]|0)+36>>2]&2)b[(c[z>>2]|0)+22>>1]=b[J>>1]|0;else b[(c[z>>2]|0)+22>>1]=b[w>>1]|0;if((c[(c[z>>2]|0)+36>>2]&16|0)==0?(e[(c[z>>2]|0)+24>>1]|0)<(e[(c[o>>2]|0)+52>>1]|0):0)aE(c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,(b[p>>1]|0)+(c[u>>2]|0)&65535)|0;b[(c[z>>2]|0)+22>>1]=b[J>>1]|0}while(0);c[B>>2]=zD(N)|0}N=c[L+4>>2]|0;P=c[z>>2]|0;c[P>>2]=c[L>>2];c[P+4>>2]=N;b[(c[z>>2]|0)+24>>1]=b[H>>1]|0;b[(c[z>>2]|0)+42>>1]=b[K>>1]|0;c[(c[z>>2]|0)+36>>2]=c[M>>2];b[(c[z>>2]|0)+22>>1]=b[J>>1]|0;b[(c[z>>2]|0)+40>>1]=b[I>>1]|0;if(((((e[H>>1]|0)==(e[K>>1]|0)?((e[H>>1]|0)+1|0)<(e[(c[o>>2]|0)+50>>1]|0):0)?((d[(c[o>>2]|0)+55>>0]|0)>>>6&1|0)==0:0)?(b[(c[(c[o>>2]|0)+8>>2]|0)+((e[H>>1]|0)+1<<1)>>1]|0)>=42:0)?(P=GD(c[q>>2]|0,c[z>>2]|0,(e[(c[z>>2]|0)+40>>1]|0)+1|0)|0,c[G>>2]=P,(P|0)==0):0){N=(c[z>>2]|0)+24|0;b[N>>1]=(b[N>>1]|0)+1<<16>>16;N=(c[z>>2]|0)+42|0;b[N>>1]=(b[N>>1]|0)+1<<16>>16;N=(c[z>>2]|0)+40|0;P=b[N>>1]|0;b[N>>1]=P+1<<16>>16;c[(c[(c[z>>2]|0)+48>>2]|0)+((P&65535)<<2)>>2]=0;P=(c[z>>2]|0)+36|0;c[P>>2]=c[P>>2]|32768;b[v>>1]=(b[(c[(c[o>>2]|0)+8>>2]|0)+(e[H>>1]<<1)>>1]|0)-(b[(c[(c[o>>2]|0)+8>>2]|0)+((e[H>>1]|0)+1<<1)>>1]|0);P=(c[z>>2]|0)+22|0;b[P>>1]=(b[P>>1]|0)-(b[v>>1]|0);b[v>>1]=(b[v>>1]|0)+5;aE(c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,(b[v>>1]|0)+(b[p>>1]|0)&65535)|0;b[(c[z>>2]|0)+22>>1]=b[J>>1]|0;b[(c[z>>2]|0)+24>>1]=b[H>>1]|0;b[(c[z>>2]|0)+42>>1]=b[K>>1]|0;c[(c[z>>2]|0)+36>>2]=c[M>>2]}c[l>>2]=c[G>>2];P=c[l>>2]|0;i=O;return P|0}function bE(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;h=i;i=i+16|0;f=h+12|0;g=h+8|0;k=h+4|0;j=h;c[g>>2]=a;c[k>>2]=e;c[j>>2]=b[(c[(c[g>>2]|0)+4>>2]|0)+(c[k>>2]<<1)>>1];e=c[j>>2]|0;if((c[j>>2]|0)>=0){c[f>>2]=d[(c[(c[(c[g>>2]|0)+12>>2]|0)+4>>2]|0)+(e*24|0)+20>>0];k=c[f>>2]|0;i=h;return k|0}if((e|0)==-1){c[f>>2]=1;k=c[f>>2]|0;i=h;return k|0}else{c[f>>2]=0;k=c[f>>2]|0;i=h;return k|0}return 0}function cE(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;h=o+16|0;j=o+12|0;k=o+8|0;n=o+4|0;m=o;l=o+28|0;c[o+24>>2]=a;c[o+20>>2]=d;c[h>>2]=e;c[j>>2]=f;c[k>>2]=g;c[n>>2]=0;c[m>>2]=b[(c[k>>2]|0)+22>>1];b[l>>1]=dE(c[h>>2]|0,c[m>>2]&65535)|0;b[l>>1]=dE(c[j>>2]|0,b[l>>1]|0)|0;if(((c[h>>2]|0)!=0?(c[j>>2]|0)!=0?(b[(c[h>>2]|0)+16>>1]|0)>0:0:0)?(b[(c[j>>2]|0)+16>>1]|0)>0:0)b[l>>1]=(b[l>>1]|0)-20;c[m>>2]=(c[m>>2]|0)-(((c[h>>2]|0)!=0&1)+((c[j>>2]|0)!=0&1));if((b[l>>1]|0)<10)b[l>>1]=10;if((b[l>>1]|0)>=(c[m>>2]|0)){a=c[m>>2]|0;a=a&65535;f=c[k>>2]|0;f=f+22|0;b[f>>1]=a;n=c[n>>2]|0;i=o;return n|0}c[m>>2]=b[l>>1];a=c[m>>2]|0;a=a&65535;f=c[k>>2]|0;f=f+22|0;b[f>>1]=a;n=c[n>>2]|0;i=o;return n|0}function dE(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0;h=i;i=i+16|0;f=h;j=h+6|0;g=h+4|0;c[f>>2]=a;b[j>>1]=d;b[g>>1]=b[j>>1]|0;do if(c[f>>2]|0){d=c[f>>2]|0;if((b[(c[f>>2]|0)+16>>1]|0)<=0){b[g>>1]=(b[g>>1]|0)+(b[d+16>>1]|0);break}if(!(e[d+20>>1]&0))b[g>>1]=(b[g>>1]|0)-20}while(0);i=h;return b[g>>1]|0}function eE(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;if(!(py(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0)|0)){c[f>>2]=1;b=c[f>>2]|0;i=k;return b|0}do if((d[c[h>>2]>>0]|0|0)==71){if((eE(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[j>>2]|0)|0)==0?(eE(c[g>>2]|0,c[(c[h>>2]|0)+16>>2]|0,c[j>>2]|0)|0)==0:0)break;c[f>>2]=1;b=c[f>>2]|0;i=k;return b|0}while(0);if((((d[c[h>>2]>>0]|0|0)==77?(py(c[(c[g>>2]|0)+12>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[j>>2]|0)|0)==0:0)?(d[c[g>>2]>>0]|0|0)!=76:0)?(d[c[g>>2]>>0]|0|0)!=73:0){c[f>>2]=1;b=c[f>>2]|0;i=k;return b|0}c[f>>2]=0;b=c[f>>2]|0;i=k;return b|0}function fE(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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;G=i;i=i+96|0;F=G+8|0;m=G+76|0;n=G+72|0;o=G+68|0;p=G;q=G+64|0;r=G+60|0;s=G+56|0;t=G+52|0;w=G+48|0;A=G+44|0;C=G+40|0;E=G+36|0;D=G+32|0;v=G+28|0;B=G+24|0;u=G+20|0;y=G+16|0;x=G+80|0;z=G+12|0;c[n>>2]=f;c[o>>2]=g;g=p;c[g>>2]=h;c[g+4>>2]=j;c[q>>2]=k;c[r>>2]=l;c[w>>2]=0;c[s>>2]=0;c[D>>2]=c[(c[o>>2]|0)+20>>2];while(1){if((c[s>>2]|0)>=(c[(c[o>>2]|0)+12>>2]|0))break;if((((c[(c[D>>2]|0)+8>>2]|0)==(c[(c[q>>2]|0)+44>>2]|0)?(k=(c[D>>2]|0)+32|0,g=p,!((c[k>>2]&c[g>>2]|0)!=0?1:(c[k+4>>2]&c[g+4>>2]|0)!=0)):0)?(e[(c[D>>2]|0)+18>>1]&-2433|0)!=0:0)?(e[(c[D>>2]|0)+20>>1]&0|0)==0:0)c[w>>2]=(c[w>>2]|0)+1;c[s>>2]=(c[s>>2]|0)+1;c[D>>2]=(c[D>>2]|0)+48}c[v>>2]=0;if(c[r>>2]|0){c[u>>2]=c[c[r>>2]>>2];c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[u>>2]|0))break;c[y>>2]=c[(c[(c[r>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)>>2];if((d[c[y>>2]>>0]|0)!=152)break;if((c[(c[y>>2]|0)+28>>2]|0)!=(c[(c[q>>2]|0)+44>>2]|0))break;c[s>>2]=(c[s>>2]|0)+1}if((c[s>>2]|0)==(c[u>>2]|0))c[v>>2]=c[u>>2]}c[B>>2]=ph(c[c[n>>2]>>2]|0,72+((c[w>>2]|0)*20|0)+(c[v>>2]<<3)|0,0)|0;if(!(c[B>>2]|0)){Ah(c[n>>2]|0,32392,F);c[m>>2]=0;F=c[m>>2]|0;i=G;return F|0}c[A>>2]=(c[B>>2]|0)+72;c[C>>2]=(c[A>>2]|0)+((c[w>>2]|0)*12|0);c[E>>2]=(c[C>>2]|0)+(c[v>>2]<<3);c[c[B>>2]>>2]=c[w>>2];c[(c[B>>2]|0)+8>>2]=c[v>>2];c[(c[B>>2]|0)+4>>2]=c[A>>2];c[(c[B>>2]|0)+12>>2]=c[C>>2];c[(c[B>>2]|0)+16>>2]=c[E>>2];c[t>>2]=0;c[s>>2]=0;c[D>>2]=c[(c[o>>2]|0)+20>>2];while(1){if((c[s>>2]|0)>=(c[(c[o>>2]|0)+12>>2]|0))break;if((((c[(c[D>>2]|0)+8>>2]|0)==(c[(c[q>>2]|0)+44>>2]|0)?(g=(c[D>>2]|0)+32|0,F=p,!((c[g>>2]&c[F>>2]|0)!=0?1:(c[g+4>>2]&c[F+4>>2]|0)!=0)):0)?(e[(c[D>>2]|0)+18>>1]&-2433|0)!=0:0)?(e[(c[D>>2]|0)+20>>1]&0|0)==0:0){c[(c[A>>2]|0)+((c[t>>2]|0)*12|0)>>2]=c[(c[D>>2]|0)+12>>2];c[(c[A>>2]|0)+((c[t>>2]|0)*12|0)+8>>2]=c[s>>2];F=b[(c[D>>2]|0)+18>>1]&255;a[x>>0]=F;a[x>>0]=(d[x>>0]|0)==1?2:F;if((d[x>>0]|0)==64)a[x>>0]=a[(c[D>>2]|0)+23>>0]|0;a[(c[A>>2]|0)+((c[t>>2]|0)*12|0)+4>>0]=a[x>>0]|0;c[t>>2]=(c[t>>2]|0)+1}c[s>>2]=(c[s>>2]|0)+1;c[D>>2]=(c[D>>2]|0)+48}c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[v>>2]|0))break;c[z>>2]=c[(c[(c[r>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)>>2];c[(c[C>>2]|0)+(c[s>>2]<<3)>>2]=b[(c[z>>2]|0)+32>>1];a[(c[C>>2]|0)+(c[s>>2]<<3)+4>>0]=a[(c[(c[r>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)+12>>0]|0;c[s>>2]=(c[s>>2]|0)+1}c[m>>2]=c[B>>2];F=c[m>>2]|0;i=G;return F|0}function gE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;o=p+16|0;n=p+8|0;m=p;f=p+40|0;g=p+36|0;h=p+32|0;k=p+28|0;j=p+24|0;l=p+20|0;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;c[k>>2]=c[(Ax(c[c[f>>2]>>2]|0,c[g>>2]|0)|0)+8>>2];c[l>>2]=Yb[c[(c[c[k>>2]>>2]|0)+12>>2]&255](c[k>>2]|0,c[h>>2]|0)|0;do if(c[l>>2]|0){if((c[l>>2]|0)==7){jh(c[c[f>>2]>>2]|0);break}e=c[f>>2]|0;if(c[(c[k>>2]|0)+8>>2]|0){c[n>>2]=c[(c[k>>2]|0)+8>>2];Ah(e,19255,n);break}else{c[m>>2]=ih(c[l>>2]|0)|0;Ah(e,19255,m);break}}while(0);Kd(c[(c[k>>2]|0)+8>>2]|0);c[(c[k>>2]|0)+8>>2]=0;c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[c[h>>2]>>2]|0))break;if((a[(c[(c[h>>2]|0)+4>>2]|0)+((c[j>>2]|0)*12|0)+5>>0]|0)==0?(c[(c[(c[h>>2]|0)+16>>2]|0)+(c[j>>2]<<3)>>2]|0)>0:0){n=c[f>>2]|0;c[o>>2]=c[c[g>>2]>>2];Ah(n,35642,o)}c[j>>2]=(c[j>>2]|0)+1}i=p;return c[(c[f>>2]|0)+68>>2]|0}function hE(a){a=+a;var d=0,e=0,f=0,g=0,j=0;j=i;i=i+32|0;d=j+18|0;e=j+8|0;f=j;g=j+16|0;h[e>>3]=a;if(+h[e>>3]<=1.0){b[d>>1]=0;g=b[d>>1]|0;i=j;return g|0}if(+h[e>>3]<=2.0e9){a=+h[e>>3];b[d>>1]=Hj(~~a>>>0,+N(a)>=1.0?a>0.0?~~+$(+M(a/4294967296.0),4294967295.0)>>>0:~~+Z((a-+(~~a>>>0))/4294967296.0)>>>0:0)|0;g=b[d>>1]|0;i=j;return g|0}else{c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];f=hR(c[f>>2]|0,c[f+4>>2]|0,52)|0;f=fR(f|0,C|0,1022,0)|0;b[g>>1]=f;b[d>>1]=(b[g>>1]|0)*10;g=b[d>>1]|0;i=j;return g|0}return 0}function iE(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;r=t+36|0;j=t+32|0;k=t+28|0;l=t+24|0;m=t+20|0;n=t+16|0;s=t+12|0;q=t+8|0;o=t+4|0;p=t;c[j>>2]=a;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;c[q>>2]=c[(c[(c[m>>2]|0)+32>>2]|0)+(c[n>>2]<<2)>>2];c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[c[k>>2]>>2]|0)){j=10;break}c[o>>2]=Tx(c[(c[(c[k>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)>>2]|0)|0;if(((((d[c[o>>2]>>0]|0)==152?(b[(c[o>>2]|0)+32>>1]|0)==(b[(c[(c[m>>2]|0)+4>>2]|0)+(c[n>>2]<<1)>>1]|0):0)?(c[(c[o>>2]|0)+28>>2]|0)==(c[l>>2]|0):0)?(c[p>>2]=Ox(c[j>>2]|0,c[(c[(c[k>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)>>2]|0)|0,(c[p>>2]|0)!=0):0)?0==(Td(c[c[p>>2]>>2]|0,c[q>>2]|0)|0):0){j=8;break}c[s>>2]=(c[s>>2]|0)+1}if((j|0)==8){c[r>>2]=c[s>>2];s=c[r>>2]|0;i=t;return s|0}else if((j|0)==10){c[r>>2]=-1;s=c[r>>2]|0;i=t;return s|0}return 0}function jE(f,g,h){f=f|0;g=g|0;h=h|0;var 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,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;ga=i;i=i+224|0;l=ga+196|0;m=ga+192|0;n=ga+188|0;j=ga+184|0;$=ga+180|0;P=ga+176|0;K=ga+172|0;da=ga+40|0;aa=ga+32|0;t=ga+24|0;Z=ga+168|0;E=ga+164|0;F=ga+160|0;G=ga+156|0;W=ga+152|0;q=ga+148|0;s=ga+208|0;k=ga+16|0;x=ga+144|0;w=ga+140|0;L=ga+136|0;X=ga+132|0;H=ga+204|0;Q=ga+128|0;J=ga+124|0;r=ga+202|0;y=ga+120|0;O=ga+116|0;u=ga+112|0;R=ga+108|0;z=ga+104|0;M=ga+100|0;_=ga+96|0;S=ga+92|0;T=ga+88|0;A=ga+84|0;B=ga+80|0;fa=ga+76|0;ea=ga+200|0;v=ga+72|0;o=ga+207|0;p=ga+206|0;I=ga+68|0;D=ga+64|0;Y=ga+60|0;N=ga+56|0;V=ga+52|0;ba=ga+8|0;ca=ga;U=ga+48|0;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;c[j>>2]=c[c[m>>2]>>2];g=t;c[g>>2]=0;c[g+4>>2]=0;c[Z>>2]=0;c[E>>2]=0;c[F>>2]=0;c[W>>2]=c[c[j>>2]>>2];c[q>>2]=c[c[W>>2]>>2];if(a[(c[q>>2]|0)+65>>0]|0){i=ga;return}c[$>>2]=(c[(c[m>>2]|0)+20>>2]|0)+((c[n>>2]|0)*48|0);c[P>>2]=(c[j>>2]|0)+68;c[K>>2]=c[c[$>>2]>>2];g=ID(c[P>>2]|0,c[(c[K>>2]|0)+12>>2]|0)|0;j=da;c[j>>2]=g;c[j+4>>2]=C;c[G>>2]=d[c[K>>2]>>0];do if((c[G>>2]|0)==75){h=c[P>>2]|0;f=(c[K>>2]|0)+20|0;if(c[(c[K>>2]|0)+4>>2]&2048){g=JD(h,c[f>>2]|0)|0;j=(c[$>>2]|0)+32|0;c[j>>2]=g;c[j+4>>2]=C;break}else{g=jD(h,c[f>>2]|0)|0;j=(c[$>>2]|0)+32|0;c[j>>2]=g;c[j+4>>2]=C;break}}else if((c[G>>2]|0)==76){j=(c[$>>2]|0)+32|0;c[j>>2]=0;c[j+4>>2]=0;break}else{g=ID(c[P>>2]|0,c[(c[K>>2]|0)+16>>2]|0)|0;j=(c[$>>2]|0)+32|0;c[j>>2]=g;c[j+4>>2]=C;break}while(0);g=ID(c[P>>2]|0,c[K>>2]|0)|0;j=aa;c[j>>2]=g;c[j+4>>2]=C;if(c[(c[K>>2]|0)+4>>2]&1){h=nD(c[P>>2]|0,b[(c[K>>2]|0)+36>>1]|0)|0;f=k;c[f>>2]=h;c[f+4>>2]=C;f=k;h=aa;g=c[h+4>>2]|c[f+4>>2];j=aa;c[j>>2]=c[h>>2]|c[f>>2];c[j+4>>2]=g;j=k;j=fR(c[j>>2]|0,c[j+4>>2]|0,1,0)|0;k=t;c[k>>2]=j;c[k+4>>2]=C}j=aa;h=c[j+4>>2]|0;k=(c[$>>2]|0)+40|0;c[k>>2]=c[j>>2];c[k+4>>2]=h;c[(c[$>>2]|0)+8>>2]=-1;c[(c[$>>2]|0)+4>>2]=-1;b[(c[$>>2]|0)+18>>1]=0;k=(kE(c[G>>2]|0)|0)!=0;h=c[K>>2]|0;a:do if(k){c[L>>2]=Tx(c[h+12>>2]|0)|0;c[X>>2]=Tx(c[(c[K>>2]|0)+16>>2]|0)|0;O=(c[$>>2]|0)+32|0;R=da;b[H>>1]=((c[O>>2]&c[R>>2]|0)==0?(c[O+4>>2]&c[R+4>>2]|0)==0:0)?8191:2048;R=da;if(lE(c[l>>2]|0,c[R>>2]|0,c[R+4>>2]|0,c[L>>2]|0,x,w)|0){c[(c[$>>2]|0)+8>>2]=c[x>>2];c[(c[$>>2]|0)+12>>2]=c[w>>2];R=(mE(c[G>>2]|0)|0)&65535;b[(c[$>>2]|0)+18>>1]=R&e[H>>1]}if((c[G>>2]|0)==73){R=(c[$>>2]|0)+20|0;b[R>>1]=e[R>>1]|2048}if((c[X>>2]|0)!=0?(R=(c[$>>2]|0)+32|0,(lE(c[l>>2]|0,c[R>>2]|0,c[R+4>>2]|0,c[X>>2]|0,x,w)|0)!=0):0){b[r>>1]=0;if((c[(c[$>>2]|0)+8>>2]|0)>=0){c[J>>2]=ny(c[q>>2]|0,c[K>>2]|0,0)|0;if(a[(c[q>>2]|0)+65>>0]|0){Zu(c[q>>2]|0,c[J>>2]|0);i=ga;return}c[y>>2]=nE(c[m>>2]|0,c[J>>2]|0,3)|0;if(!(c[y>>2]|0)){i=ga;return}c[Q>>2]=(c[(c[m>>2]|0)+20>>2]|0)+((c[y>>2]|0)*48|0);oE(c[m>>2]|0,c[y>>2]|0,c[n>>2]|0);if((c[G>>2]|0)==73){X=(c[Q>>2]|0)+20|0;b[X>>1]=e[X>>1]|2048}c[$>>2]=(c[(c[m>>2]|0)+20>>2]|0)+((c[n>>2]|0)*48|0);X=(c[$>>2]|0)+20|0;b[X>>1]=e[X>>1]|8;if(pE(c[W>>2]|0,c[J>>2]|0)|0){X=(c[$>>2]|0)+18|0;b[X>>1]=e[X>>1]|2048;b[r>>1]=2048}}else{c[J>>2]=c[K>>2];c[Q>>2]=c[$>>2]}qE(c[W>>2]|0,c[J>>2]|0);c[(c[Q>>2]|0)+8>>2]=c[x>>2];c[(c[Q>>2]|0)+12>>2]=c[w>>2];O=da;R=t;da=c[O+4>>2]|c[R+4>>2];X=(c[Q>>2]|0)+32|0;c[X>>2]=c[O>>2]|c[R>>2];c[X+4>>2]=da;X=aa;aa=c[X+4>>2]|0;da=(c[Q>>2]|0)+40|0;c[da>>2]=c[X>>2];c[da+4>>2]=aa;da=(mE(d[c[J>>2]>>0]|0)|0)&65535;b[(c[Q>>2]|0)+18>>1]=da+(e[r>>1]|0)&e[H>>1]}}else{if((d[h>>0]|0)==74?(d[(c[m>>2]|0)+8>>0]|0)==72:0){c[O>>2]=c[(c[K>>2]|0)+20>>2];c[u>>2]=0;while(1){if((c[u>>2]|0)>=2)break a;X=c[W>>2]|0;aa=d[35688+(c[u>>2]|0)>>0]|0;da=ny(c[q>>2]|0,c[(c[K>>2]|0)+12>>2]|0,0)|0;c[R>>2]=rv(X,aa,da,ny(c[q>>2]|0,c[(c[(c[O>>2]|0)+4>>2]|0)+((c[u>>2]|0)*20|0)>>2]|0,0)|0,0)|0;rE(c[R>>2]|0,c[K>>2]|0);c[z>>2]=nE(c[m>>2]|0,c[R>>2]|0,3)|0;jE(c[l>>2]|0,c[m>>2]|0,c[z>>2]|0);c[$>>2]=(c[(c[m>>2]|0)+20>>2]|0)+((c[n>>2]|0)*48|0);oE(c[m>>2]|0,c[z>>2]|0,c[n>>2]|0);c[u>>2]=(c[u>>2]|0)+1}}if((d[c[K>>2]>>0]|0)==71){sE(c[l>>2]|0,c[m>>2]|0,c[n>>2]|0);c[$>>2]=(c[(c[m>>2]|0)+20>>2]|0)+((c[n>>2]|0)*48|0)}}while(0);if((d[(c[m>>2]|0)+8>>0]|0)==72?(tE(c[W>>2]|0,c[K>>2]|0,Z,E,F)|0)!=0:0){b[ea>>1]=259;c[M>>2]=c[(c[(c[(c[K>>2]|0)+20>>2]|0)+4>>2]|0)+20>>2];c[_>>2]=ny(c[q>>2]|0,c[Z>>2]|0,0)|0;b:do if((c[F>>2]|0)!=0?(a[(c[c[W>>2]>>2]|0)+65>>0]|0)==0:0){ea=(c[$>>2]|0)+20|0;b[ea>>1]=e[ea>>1]|1024;c[v>>2]=0;while(1){ea=a[(c[(c[Z>>2]|0)+8>>2]|0)+(c[v>>2]|0)>>0]|0;a[o>>0]=ea;if(!(ea<<24>>24))break b;a[(c[(c[Z>>2]|0)+8>>2]|0)+(c[v>>2]|0)>>0]=a[o>>0]&~(d[19267+(d[o>>0]|0)>>0]&32);a[(c[(c[_>>2]|0)+8>>2]|0)+(c[v>>2]|0)>>0]=a[18477+(d[o>>0]|0)>>0]|0;c[v>>2]=(c[v>>2]|0)+1}}while(0);if(!(a[(c[q>>2]|0)+65>>0]|0)){ea=(If(c[(c[_>>2]|0)+8>>2]|0)|0)-1|0;c[I>>2]=(c[(c[_>>2]|0)+8>>2]|0)+ea;a[p>>0]=a[c[I>>2]>>0]|0;if(c[F>>2]|0){if((d[p>>0]|0)==64)c[E>>2]=0;a[p>>0]=a[18477+(d[p>>0]|0)>>0]|0}a[c[I>>2]>>0]=(d[p>>0]|0)+1}c[fa>>2]=(c[F>>2]|0)!=0?21290:35690;c[S>>2]=ny(c[q>>2]|0,c[M>>2]|0,0)|0;da=c[W>>2]|0;ea=By(c[W>>2]|0,c[S>>2]|0,c[fa>>2]|0)|0;c[S>>2]=rv(da,83,ea,c[Z>>2]|0,0)|0;rE(c[S>>2]|0,c[K>>2]|0);c[A>>2]=nE(c[m>>2]|0,c[S>>2]|0,259)|0;jE(c[l>>2]|0,c[m>>2]|0,c[A>>2]|0);c[T>>2]=ny(c[q>>2]|0,c[M>>2]|0,0)|0;ea=c[W>>2]|0;fa=By(c[W>>2]|0,c[T>>2]|0,c[fa>>2]|0)|0;c[T>>2]=rv(ea,82,fa,c[_>>2]|0,0)|0;rE(c[T>>2]|0,c[K>>2]|0);c[B>>2]=nE(c[m>>2]|0,c[T>>2]|0,259)|0;jE(c[l>>2]|0,c[m>>2]|0,c[B>>2]|0);c[$>>2]=(c[(c[m>>2]|0)+20>>2]|0)+((c[n>>2]|0)*48|0);if(c[E>>2]|0){oE(c[m>>2]|0,c[A>>2]|0,c[n>>2]|0);oE(c[m>>2]|0,c[B>>2]|0,c[n>>2]|0)}}if((uE(c[K>>2]|0,s)|0)!=0?(c[Y>>2]=c[c[(c[(c[K>>2]|0)+20>>2]|0)+4>>2]>>2],c[N>>2]=c[(c[(c[(c[K>>2]|0)+20>>2]|0)+4>>2]|0)+20>>2],ea=ID(c[P>>2]|0,c[Y>>2]|0)|0,fa=ca,c[fa>>2]=ea,c[fa+4>>2]=C,fa=ID(c[P>>2]|0,c[N>>2]|0)|0,ea=ba,c[ea>>2]=fa,c[ea+4>>2]=C,ea=ca,fa=ba,(c[ea>>2]&c[fa>>2]|0)==0?(c[ea+4>>2]&c[fa+4>>2]|0)==0:0):0){fa=c[W>>2]|0;c[U>>2]=rv(fa,51,0,ny(c[q>>2]|0,c[Y>>2]|0,0)|0,0)|0;c[D>>2]=nE(c[m>>2]|0,c[U>>2]|0,3)|0;c[V>>2]=(c[(c[m>>2]|0)+20>>2]|0)+((c[D>>2]|0)*48|0);fa=ca;ea=c[fa+4>>2]|0;da=(c[V>>2]|0)+32|0;c[da>>2]=c[fa>>2];c[da+4>>2]=ea;c[(c[V>>2]|0)+8>>2]=c[(c[N>>2]|0)+28>>2];c[(c[V>>2]|0)+12>>2]=b[(c[N>>2]|0)+32>>1];b[(c[V>>2]|0)+18>>1]=64;a[(c[V>>2]|0)+23>>0]=a[s>>0]|0;oE(c[m>>2]|0,c[D>>2]|0,c[n>>2]|0);c[$>>2]=(c[(c[m>>2]|0)+20>>2]|0)+((c[n>>2]|0)*48|0);da=(c[$>>2]|0)+20|0;b[da>>1]=e[da>>1]|8;da=(c[$>>2]|0)+40|0;ea=c[da+4>>2]|0;fa=(c[V>>2]|0)+40|0;c[fa>>2]=c[da>>2];c[fa+4>>2]=ea}da=t;fa=(c[$>>2]|0)+32|0;ca=fa;ea=c[ca+4>>2]|c[da+4>>2];c[fa>>2]=c[ca>>2]|c[da>>2];c[fa+4>>2]=ea;i=ga;return}function kE(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if((c[b>>2]|0)!=75?!((c[b>>2]|0)>=79&(c[b>>2]|0)<=83|(c[b>>2]|0)==76):0)b=(c[b>>2]|0)==73;else b=1;i=d;return b&1|0}function lE(a,f,g,h,j,k){a=a|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+48|0;q=u+36|0;l=u+32|0;m=u;n=u+28|0;r=u+24|0;s=u+20|0;p=u+16|0;o=u+12|0;t=u+8|0;c[l>>2]=a;a=m;c[a>>2]=f;c[a+4>>2]=g;c[n>>2]=h;c[r>>2]=j;c[s>>2]=k;if((d[c[n>>2]>>0]|0)==152){c[c[r>>2]>>2]=c[(c[n>>2]|0)+28>>2];c[c[s>>2]>>2]=b[(c[n>>2]|0)+32>>1];c[q>>2]=1;t=c[q>>2]|0;i=u;return t|0}j=m;if((c[j>>2]|0)==0&(c[j+4>>2]|0)==0){c[q>>2]=0;t=c[q>>2]|0;i=u;return t|0}j=m;a=c[j>>2]|0;j=c[j+4>>2]|0;k=m;k=fR(c[k>>2]|0,c[k+4>>2]|0,1,0)|0;if((a&k|0)!=0|(j&C|0)!=0){c[q>>2]=0;t=c[q>>2]|0;i=u;return t|0}c[o>>2]=0;while(1){j=m;k=c[j+4>>2]|0;f=c[o>>2]|0;if(!(k>>>0>0|(k|0)==0&(c[j>>2]|0)>>>0>1))break;c[o>>2]=f+1;k=m;k=hR(c[k>>2]|0,c[k+4>>2]|0,1)|0;j=m;c[j>>2]=k;c[j+4>>2]=C}c[t>>2]=c[(c[l>>2]|0)+8+(f*72|0)+44>>2];c[p>>2]=c[(c[(c[l>>2]|0)+8+((c[o>>2]|0)*72|0)+16>>2]|0)+8>>2];a:while(1){if(!(c[p>>2]|0)){f=20;break}b:do if(c[(c[p>>2]|0)+40>>2]|0){c[o>>2]=0;while(1){if((c[o>>2]|0)>=(e[(c[p>>2]|0)+50>>1]|0))break b;if((b[(c[(c[p>>2]|0)+4>>2]|0)+(c[o>>2]<<1)>>1]|0)==-2?(py(c[n>>2]|0,c[(c[(c[(c[p>>2]|0)+40>>2]|0)+4>>2]|0)+((c[o>>2]|0)*20|0)>>2]|0,c[t>>2]|0)|0)==0:0){f=17;break a}c[o>>2]=(c[o>>2]|0)+1}}while(0);c[p>>2]=c[(c[p>>2]|0)+20>>2]}if((f|0)==17){c[c[r>>2]>>2]=c[t>>2];c[c[s>>2]>>2]=-2;c[q>>2]=1;t=c[q>>2]|0;i=u;return t|0}else if((f|0)==20){c[q>>2]=0;t=c[q>>2]|0;i=u;return t|0}return 0}function mE(a){a=a|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f;e=f+4|0;c[d>>2]=a;do if((c[d>>2]|0)!=75){if((c[d>>2]|0)==76){b[e>>1]=256;break}if((c[d>>2]|0)==73){b[e>>1]=128;break}else{b[e>>1]=2<<(c[d>>2]|0)-79;break}}else b[e>>1]=1;while(0);i=f;return b[e>>1]|0}function nE(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;g=p+24|0;h=p+20|0;j=p+16|0;k=p+28|0;o=p+12|0;m=p+8|0;n=p+4|0;l=p;c[h>>2]=a;c[j>>2]=d;b[k>>1]=f;do if((c[(c[h>>2]|0)+12>>2]|0)>=(c[(c[h>>2]|0)+16>>2]|0)){c[n>>2]=c[(c[h>>2]|0)+20>>2];c[l>>2]=c[c[c[c[h>>2]>>2]>>2]>>2];f=Fw(c[l>>2]|0,(c[(c[h>>2]|0)+16>>2]|0)*48<<1,0)|0;c[(c[h>>2]|0)+20>>2]=f;if(c[(c[h>>2]|0)+20>>2]|0){iR(c[(c[h>>2]|0)+20>>2]|0,c[n>>2]|0,(c[(c[h>>2]|0)+12>>2]|0)*48|0)|0;if((c[n>>2]|0)!=((c[h>>2]|0)+24|0))Sf(c[l>>2]|0,c[n>>2]|0);f=(($t(c[l>>2]|0,c[(c[h>>2]|0)+20>>2]|0)|0)>>>0)/48|0;c[(c[h>>2]|0)+16>>2]=f;kR((c[(c[h>>2]|0)+20>>2]|0)+((c[(c[h>>2]|0)+12>>2]|0)*48|0)|0,0,((c[(c[h>>2]|0)+16>>2]|0)-(c[(c[h>>2]|0)+12>>2]|0)|0)*48|0)|0; -break}if((e[k>>1]|0)&1)Zu(c[l>>2]|0,c[j>>2]|0);c[(c[h>>2]|0)+20>>2]=c[n>>2];c[g>>2]=0;f=c[g>>2]|0;i=p;return f|0}while(0);a=(c[h>>2]|0)+12|0;f=c[a>>2]|0;c[a>>2]=f+1;c[m>>2]=f;c[o>>2]=(c[(c[h>>2]|0)+20>>2]|0)+(f*48|0);if((c[j>>2]|0)!=0?(c[(c[j>>2]|0)+4>>2]&262144|0)!=0:0){f=c[(c[j>>2]|0)+28>>2]|0;f=((Hj(f,((f|0)<0)<<31>>31)|0)<<16>>16)-270&65535;b[(c[o>>2]|0)+16>>1]=f}else b[(c[o>>2]|0)+16>>1]=1;f=Tx(c[j>>2]|0)|0;c[c[o>>2]>>2]=f;b[(c[o>>2]|0)+20>>1]=b[k>>1]|0;c[(c[o>>2]|0)+24>>2]=c[h>>2];c[(c[o>>2]|0)+4>>2]=-1;c[g>>2]=c[m>>2];f=c[g>>2]|0;i=p;return f|0}function oE(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;i=i+16|0;j=g+8|0;k=g+4|0;h=g;c[j>>2]=d;c[k>>2]=e;c[h>>2]=f;c[(c[(c[j>>2]|0)+20>>2]|0)+((c[k>>2]|0)*48|0)+4>>2]=c[h>>2];b[(c[(c[j>>2]|0)+20>>2]|0)+((c[k>>2]|0)*48|0)+16>>1]=b[(c[(c[j>>2]|0)+20>>2]|0)+((c[h>>2]|0)*48|0)+16>>1]|0;d=(c[(c[j>>2]|0)+20>>2]|0)+((c[h>>2]|0)*48|0)+22|0;a[d>>0]=(a[d>>0]|0)+1<<24>>24;i=g;return}function pE(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;m=p+20|0;j=p+16|0;k=p+12|0;g=p+25|0;h=p+24|0;l=p+8|0;n=p+4|0;o=p;c[j>>2]=b;c[k>>2]=f;if(e[(c[c[j>>2]>>2]|0)+60>>1]&512){c[m>>2]=0;o=c[m>>2]|0;i=p;return o|0}if((d[c[k>>2]>>0]|0)!=79?(d[c[k>>2]>>0]|0)!=73:0){c[m>>2]=0;o=c[m>>2]|0;i=p;return o|0}if(c[(c[k>>2]|0)+4>>2]&1){c[m>>2]=0;o=c[m>>2]|0;i=p;return o|0}a[g>>0]=Nx(c[(c[k>>2]|0)+12>>2]|0)|0;a[h>>0]=Nx(c[(c[k>>2]|0)+16>>2]|0)|0;do if((a[g>>0]|0)!=(a[h>>0]|0)){if((a[g>>0]|0)>=67?(a[h>>0]|0)>=67:0)break;c[m>>2]=0;o=c[m>>2]|0;i=p;return o|0}while(0);c[l>>2]=VA(c[j>>2]|0,c[(c[k>>2]|0)+12>>2]|0,c[(c[k>>2]|0)+16>>2]|0)|0;if((c[l>>2]|0)!=0?(Td(c[c[l>>2]>>2]|0,35690)|0)!=0:0){c[l>>2]=Ox(c[j>>2]|0,c[(c[k>>2]|0)+12>>2]|0)|0;if(c[l>>2]|0)g=c[c[l>>2]>>2]|0;else g=0;c[n>>2]=g;c[l>>2]=Ox(c[j>>2]|0,c[(c[k>>2]|0)+16>>2]|0)|0;if(c[l>>2]|0)g=c[c[l>>2]>>2]|0;else g=0;c[o>>2]=g;c[m>>2]=(Td(c[n>>2]|0,c[o>>2]|0)|0)==0&1;o=c[m>>2]|0;i=p;return o|0}c[m>>2]=1;o=c[m>>2]|0;i=p;return o|0}function qE(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+16|0;h=m+8|0;j=m+4|0;k=m+14|0;n=m+12|0;l=m;c[h>>2]=f;c[j>>2]=g;b[k>>1]=c[(c[(c[j>>2]|0)+16>>2]|0)+4>>2]&256;b[n>>1]=c[(c[(c[j>>2]|0)+12>>2]|0)+4>>2]&256;do if((e[k>>1]|0)==(e[n>>1]|0)){if(b[k>>1]|0){n=(c[(c[j>>2]|0)+16>>2]|0)+4|0;c[n>>2]=c[n>>2]&-257;break}if(Ox(c[h>>2]|0,c[(c[j>>2]|0)+12>>2]|0)|0){n=(c[(c[j>>2]|0)+12>>2]|0)+4|0;c[n>>2]=c[n>>2]|256}}while(0);c[l>>2]=c[(c[j>>2]|0)+16>>2];c[(c[j>>2]|0)+16>>2]=c[(c[j>>2]|0)+12>>2];c[(c[j>>2]|0)+12>>2]=c[l>>2];if((d[c[j>>2]>>0]|0)<80){i=m;return}a[c[j>>2]>>0]=((d[c[j>>2]>>0]|0)-80^2)+80;i=m;return}function rE(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=a;c[f>>2]=d;if(!(c[e>>2]|0)){i=g;return}a=(c[e>>2]|0)+4|0;c[a>>2]=c[a>>2]|c[(c[f>>2]|0)+4>>2]&1;b[(c[e>>2]|0)+36>>1]=b[(c[f>>2]|0)+36>>1]|0;i=g;return}function sE(f,g,h){f=f|0;g=g|0;h=h|0;var 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,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;V=i;i=i+160|0;w=V+156|0;x=V+152|0;y=V+148|0;T=V+144|0;R=V+140|0;D=V+136|0;S=V+132|0;L=V+128|0;E=V+124|0;Q=V+120|0;P=V+116|0;t=V+112|0;B=V+24|0;n=V+16|0;p=V+108|0;r=V+104|0;q=V+100|0;o=V+96|0;j=V+8|0;k=V;u=V+92|0;l=V+88|0;s=V+84|0;m=V+80|0;v=V+76|0;J=V+72|0;F=V+68|0;G=V+64|0;I=V+60|0;z=V+56|0;A=V+52|0;K=V+48|0;N=V+44|0;M=V+40|0;O=V+36|0;H=V+32|0;c[w>>2]=f;c[x>>2]=g;c[y>>2]=h;c[T>>2]=c[c[x>>2]>>2];c[R>>2]=c[c[T>>2]>>2];c[D>>2]=c[c[R>>2]>>2];c[S>>2]=(c[(c[x>>2]|0)+20>>2]|0)+((c[y>>2]|0)*48|0);c[L>>2]=c[c[S>>2]>>2];g=ph(c[D>>2]|0,416,0)|0;c[t>>2]=g;c[(c[S>>2]|0)+12>>2]=g;if(!(c[t>>2]|0)){i=V;return}g=(c[S>>2]|0)+20|0;b[g>>1]=e[g>>1]|16;c[Q>>2]=c[t>>2];aD(c[Q>>2]|0,c[T>>2]|0);bD(c[Q>>2]|0,c[L>>2]|0,71);eD(c[w>>2]|0,c[Q>>2]|0);if(a[(c[D>>2]|0)+65>>0]|0){i=V;return}g=n;c[g>>2]=-1;c[g+4>>2]=-1;g=B;c[g>>2]=-1;c[g+4>>2]=-1;c[E>>2]=(c[(c[Q>>2]|0)+12>>2]|0)-1;c[P>>2]=c[(c[Q>>2]|0)+20>>2];while(1){g=n;if(!((c[E>>2]|0)>=0?(c[g>>2]|0)!=0|(c[g+4>>2]|0)!=0:0))break;do if(!(e[(c[P>>2]|0)+18>>1]&511)){g=B;c[g>>2]=0;c[g+4>>2]=0;c[p>>2]=Fw(c[D>>2]|0,408,0)|0;if(c[p>>2]|0){g=j;c[g>>2]=0;c[g+4>>2]=0;c[(c[P>>2]|0)+12>>2]=c[p>>2];g=(c[P>>2]|0)+20|0;b[g>>1]=e[g>>1]|32;b[(c[P>>2]|0)+18>>1]=1024;c[r>>2]=c[p>>2];aD(c[r>>2]|0,c[c[x>>2]>>2]|0);bD(c[r>>2]|0,c[c[P>>2]>>2]|0,72);eD(c[w>>2]|0,c[r>>2]|0);c[(c[r>>2]|0)+4>>2]=c[x>>2];a:do if(!(a[(c[D>>2]|0)+65>>0]|0)){c[o>>2]=0;c[q>>2]=c[(c[r>>2]|0)+20>>2];while(1){if((c[o>>2]|0)>=(c[(c[r>>2]|0)+12>>2]|0))break a;if(kE(d[c[c[q>>2]>>2]>>0]|0)|0){h=nD((c[T>>2]|0)+68|0,c[(c[q>>2]|0)+8>>2]|0)|0;W=j;f=c[W+4>>2]|C;g=j;c[g>>2]=c[W>>2]|h;c[g+4>>2]=f}c[o>>2]=(c[o>>2]|0)+1;c[q>>2]=(c[q>>2]|0)+48}}while(0);f=j;h=n;g=c[h+4>>2]&c[f+4>>2];W=n;c[W>>2]=c[h>>2]&c[f>>2];c[W+4>>2]=g}}else if(!(e[(c[P>>2]|0)+20>>1]&8)){g=nD((c[T>>2]|0)+68|0,c[(c[P>>2]|0)+8>>2]|0)|0;W=k;c[W>>2]=g;c[W+4>>2]=C;if(e[(c[P>>2]|0)+20>>1]&2){c[u>>2]=(c[(c[Q>>2]|0)+20>>2]|0)+((c[(c[P>>2]|0)+4>>2]|0)*48|0);f=nD((c[T>>2]|0)+68|0,c[(c[u>>2]|0)+8>>2]|0)|0;h=k;g=c[h+4>>2]|C;W=k;c[W>>2]=c[h>>2]|f;c[W+4>>2]=g}f=k;h=n;g=c[h+4>>2]&c[f+4>>2];W=n;c[W>>2]=c[h>>2]&c[f>>2];c[W+4>>2]=g;if(!(e[(c[P>>2]|0)+18>>1]&2)){W=B;c[W>>2]=0;c[W+4>>2]=0;break}else{f=k;h=B;g=c[h+4>>2]&c[f+4>>2];W=B;c[W>>2]=c[h>>2]&c[f>>2];c[W+4>>2]=g;break}}while(0);c[E>>2]=(c[E>>2]|0)+-1;c[P>>2]=(c[P>>2]|0)+48}f=n;g=c[f+4>>2]|0;W=(c[t>>2]|0)+408|0;c[W>>2]=c[f>>2];c[W+4>>2]=g;W=n;b[(c[S>>2]|0)+18>>1]=(c[W>>2]|0)==0&(c[W+4>>2]|0)==0?0:512;W=n;b:do if((c[W>>2]|0)!=0|(c[W+4>>2]|0)!=0?(c[(c[Q>>2]|0)+12>>2]|0)==2:0){c[l>>2]=0;c:while(1){g=c[(c[Q>>2]|0)+20>>2]|0;W=c[l>>2]|0;c[l>>2]=W+1;W=zE(g,W)|0;c[s>>2]=W;if(!W)break b;c[m>>2]=0;while(1){g=(c[(c[Q>>2]|0)+20>>2]|0)+48|0;W=c[m>>2]|0;c[m>>2]=W+1;W=zE(g,W)|0;c[v>>2]=W;if(!W)continue c;AE(c[w>>2]|0,c[x>>2]|0,c[s>>2]|0,c[v>>2]|0)}}}while(0);W=B;if(!((c[W>>2]|0)!=0|(c[W+4>>2]|0)!=0)){i=V;return}c[J>>2]=0;c[F>>2]=-1;c[G>>2]=-1;c[I>>2]=0;c[I>>2]=0;while(1){if((c[I>>2]|0)>=2)break;if(!((c[J>>2]|0)!=0^1))break;c[P>>2]=c[(c[Q>>2]|0)+20>>2];c[E>>2]=(c[(c[Q>>2]|0)+12>>2]|0)-1;while(1){if((c[E>>2]|0)<0)break;W=(c[P>>2]|0)+20|0;b[W>>1]=e[W>>1]&-65;if((c[(c[P>>2]|0)+8>>2]|0)!=(c[G>>2]|0)?(W=B,v=c[W>>2]|0,W=c[W+4>>2]|0,g=nD((c[T>>2]|0)+68|0,c[(c[P>>2]|0)+8>>2]|0)|0,!((v&g|0)==0&(W&C|0)==0)):0){U=36;break}c[E>>2]=(c[E>>2]|0)+-1;c[P>>2]=(c[P>>2]|0)+48}if((U|0)==36){U=0;c[F>>2]=c[(c[P>>2]|0)+12>>2];c[G>>2]=c[(c[P>>2]|0)+8>>2]}if((c[E>>2]|0)<0)break;c[J>>2]=1;while(1){if(!((c[E>>2]|0)>=0?(c[J>>2]|0)!=0:0))break;j=c[P>>2]|0;do if((c[(c[P>>2]|0)+8>>2]|0)!=(c[G>>2]|0)){W=j+20|0;b[W>>1]=e[W>>1]&-65}else{if((c[j+12>>2]|0)!=(c[F>>2]|0)){c[J>>2]=0;break}c[A>>2]=(Nx(c[(c[c[P>>2]>>2]|0)+16>>2]|0)|0)<<24>>24;c[z>>2]=(Nx(c[(c[c[P>>2]>>2]|0)+12>>2]|0)|0)<<24>>24;if((c[A>>2]|0)!=0?(c[A>>2]|0)!=(c[z>>2]|0):0){c[J>>2]=0;break}W=(c[P>>2]|0)+20|0;b[W>>1]=e[W>>1]|64}while(0);c[E>>2]=(c[E>>2]|0)+-1;c[P>>2]=(c[P>>2]|0)+48}c[I>>2]=(c[I>>2]|0)+1}if(!(c[J>>2]|0)){i=V;return}c[N>>2]=0;c[M>>2]=0;c[E>>2]=(c[(c[Q>>2]|0)+12>>2]|0)-1;c[P>>2]=c[(c[Q>>2]|0)+20>>2];while(1){if((c[E>>2]|0)<0)break;if(e[(c[P>>2]|0)+20>>1]&64){c[K>>2]=ny(c[D>>2]|0,c[(c[c[P>>2]>>2]|0)+16>>2]|0,0)|0;c[N>>2]=Gv(c[c[T>>2]>>2]|0,c[N>>2]|0,c[K>>2]|0)|0;c[M>>2]=c[(c[c[P>>2]>>2]|0)+12>>2]}c[E>>2]=(c[E>>2]|0)+-1;c[P>>2]=(c[P>>2]|0)+48}c[K>>2]=ny(c[D>>2]|0,c[M>>2]|0,0)|0;c[O>>2]=rv(c[R>>2]|0,75,c[K>>2]|0,0,0)|0;if(c[O>>2]|0){rE(c[O>>2]|0,c[L>>2]|0);c[(c[O>>2]|0)+20>>2]=c[N>>2];c[H>>2]=nE(c[x>>2]|0,c[O>>2]|0,3)|0;jE(c[w>>2]|0,c[x>>2]|0,c[H>>2]|0);c[S>>2]=(c[(c[x>>2]|0)+20>>2]|0)+((c[y>>2]|0)*48|0);oE(c[x>>2]|0,c[H>>2]|0,c[y>>2]|0)}else Vu(c[D>>2]|0,c[N>>2]|0);b[(c[S>>2]|0)+18>>1]=4096;i=V;return}function KH(f){f=f|0;var g=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,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=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,Pb=0,Qb=0,Sb=0,Vb=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,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=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,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.0,Af=0;xf=i;i=i+1824|0;Qe=xf+496|0;Pe=xf+488|0;Oe=xf+480|0;Ne=xf+472|0;Me=xf+456|0;Le=xf+448|0;Ke=xf+440|0;Je=xf+432|0;Ie=xf+424|0;He=xf+416|0;Ge=xf+400|0;Fe=xf+392|0;Ee=xf+384|0;De=xf+376|0;Ce=xf+368|0;Be=xf+360|0;Ae=xf+352|0;uf=xf+336|0;tf=xf+328|0;sf=xf+320|0;ze=xf+312|0;lf=xf+1612|0;n=xf+1608|0;pf=xf+1604|0;rf=xf+1600|0;mf=xf+1596|0;fe=xf+1819|0;H=xf+1818|0;fa=xf+1592|0;of=xf+1588|0;db=xf+1584|0;l=xf+1580|0;Oc=xf+1576|0;Pc=xf+1572|0;Qc=xf+1568|0;id=xf+1564|0;o=xf+1560|0;nf=xf+304|0;g=xf+1556|0;dc=xf+1552|0;Gd=xf+1548|0;wf=xf+1544|0;vf=xf+1540|0;Gc=xf+1536|0;qf=xf+1532|0;B=xf+1528|0;jb=xf+1626|0;vd=xf+1524|0;Ha=xf+1520|0;pb=xf+1516|0;tb=xf+1512|0;Ia=xf+1508|0;Wc=xf+1504|0;S=xf+1500|0;Qa=xf+296|0;x=xf+1817|0;L=xf+1624|0;re=xf+1622|0;se=xf+1620|0;ba=xf+288|0;da=xf+280|0;Od=xf+272|0;Pd=xf+264|0;Ja=xf+1496|0;mc=xf+1492|0;X=xf+1488|0;nc=xf+1484|0;ca=xf+256|0;te=xf+248|0;ea=xf+240|0;nb=xf+1816|0;Qd=xf+1480|0;s=xf+1815|0;O=xf+1618|0;P=xf+1616|0;Ma=xf+1476|0;Y=xf+1472|0;sb=xf+1468|0;ub=xf+1464|0;Sc=xf+1460|0;wa=xf+1456|0;ec=xf+1452|0;y=xf+1448|0;ve=xf+1444|0;we=xf+1440|0;z=xf+1436|0;Fd=xf+232|0;vb=xf+1432|0;Cb=xf+1428|0;fc=xf+1424|0;m=xf+1420|0;Fa=xf+1416|0;U=xf+1412|0;Dc=xf+1408|0;je=xf+192|0;Ye=xf+1404|0;bf=xf+1400|0;_e=xf+1396|0;lb=xf+1392|0;mb=xf+184|0;w=xf+1388|0;ne=xf+1384|0;nd=xf+1380|0;We=xf+1376|0;A=xf+1814|0;ff=xf+1372|0;md=xf+1368|0;Ua=xf+176|0;_a=xf+1364|0;Ra=xf+168|0;gb=xf+160|0;fb=xf+1360|0;me=xf+1356|0;zc=xf+1352|0;Vc=xf+1348|0;Xa=xf+1344|0;Xe=xf+1340|0;K=xf+1336|0;W=xf+1332|0;Da=xf+1328|0;Ga=xf+1324|0;Va=xf+152|0;gc=xf+1320|0;rb=xf+1316|0;ef=xf+1312|0;cb=xf+1308|0;hd=xf+1304|0;pd=xf+1300|0;rd=xf+1296|0;ua=xf+1292|0;xa=xf+1288|0;Ba=xf+1284|0;Aa=xf+1280|0;E=xf+1276|0;ta=xf+1272|0;yb=xf+1268|0;pa=xf+1264|0;la=xf+1260|0;qa=xf+1256|0;ha=xf+1252|0;ga=xf+1248|0;Ac=xf+1244|0;Ya=xf+1240|0;Tc=xf+1236|0;wb=xf+1232|0;ia=xf+1228|0;Se=xf+1224|0;Dd=xf+1220|0;qc=xf+1216|0;Bc=xf+1212|0;vc=xf+1208|0;Uc=xf+1204|0;Hd=xf+1200|0;wc=xf+1196|0;Db=xf+1192|0;xc=xf+1188|0;Wd=xf+1184|0;kb=xf+1180|0;Eb=xf+1176|0;Kd=xf+1160|0;Za=xf+1152|0;ma=xf+144|0;I=xf+1148|0;t=xf+1144|0;qe=xf+1140|0;ya=xf+1136|0;Fb=xf+1132|0;Xd=xf+1128|0;Lc=xf+1124|0;Mc=xf+1120|0;Ld=xf+1104|0;r=xf+1631|0;Gb=xf+1100|0;hc=xf+1096|0;Yd=xf+1092|0;na=xf+136|0;ue=xf+128|0;Hb=xf+1088|0;Zd=xf+1084|0;D=xf+1080|0;Xc=xf+1076|0;Hc=xf+1072|0;yc=xf+1068|0;Rc=xf+1064|0;oa=xf+120|0;Ib=xf+1060|0;hb=xf+1056|0;le=xf+1052|0;Ze=xf+1048|0;jf=xf+1044|0;ob=xf+1040|0;Jb=xf+1036|0;R=xf+1630|0;Kb=xf+1032|0;_d=xf+1028|0;ab=xf+1024|0;Lb=xf+1020|0;Mb=xf+1016|0;ic=xf+1012|0;Ka=xf+1008|0;La=xf+112|0;Nb=xf+1004|0;xe=xf+104|0;wd=xf+1e3|0;ad=xf+996|0;Pb=xf+992|0;Qb=xf+988|0;jc=xf+984|0;$d=xf+980|0;Sb=xf+976|0;kc=xf+972|0;be=xf+968|0;Vb=xf+964|0;ce=xf+960|0;_b=xf+956|0;$a=xf+952|0;cf=xf+948|0;$b=xf+944|0;lc=xf+940|0;de=xf+936|0;Md=xf+920|0;ac=xf+916|0;qd=xf+912|0;ge=xf+96|0;bc=xf+908|0;ee=xf+904|0;Nd=xf+888|0;ra=xf+884|0;ja=xf+880|0;Ta=xf+876|0;cc=xf+872|0;Id=xf+868|0;Q=xf+864|0;Cc=xf+860|0;ka=xf+856|0;df=xf+852|0;gf=xf+848|0;za=xf+832|0;eb=xf+828|0;q=xf+824|0;Ea=xf+820|0;Wa=xf+816|0;Te=xf+812|0;Jd=xf+808|0;ye=xf+88|0;va=xf+804|0;J=xf+800|0;bb=xf+796|0;Sa=xf+792|0;od=xf+788|0;Yc=xf+784|0;Fc=xf+780|0;Ic=xf+776|0;kd=xf+772|0;oe=xf+768|0;Jc=xf+764|0;Nc=xf+760|0;Kc=xf+756|0;Na=xf+752|0;oc=xf+748|0;_=xf+744|0;pc=xf+740|0;Zc=xf+736|0;pe=xf+48|0;_c=xf+732|0;aa=xf+728|0;p=xf+716|0;$c=xf+712|0;Ab=xf+708|0;jd=xf+704|0;F=xf+700|0;G=xf+696|0;af=xf+692|0;Bb=xf+688|0;Ca=xf+1629|0;qb=xf+684|0;Ue=xf+680|0;ud=xf+676|0;ke=xf+8|0;hf=xf+672|0;rc=xf+668|0;sd=xf+664|0;xd=xf+660|0;bd=xf+656|0;Oa=xf+652|0;sa=xf+648|0;cd=xf+644|0;ld=xf+640|0;xb=xf+636|0;td=xf+632|0;yd=xf+628|0;sc=xf+624|0;Ud=xf+620|0;T=xf+616|0;u=xf+612|0;zd=xf+608|0;dd=xf+604|0;Ec=xf+600|0;ie=xf+568|0;tc=xf+564|0;Ad=xf+560|0;ed=xf+556|0;Vd=xf+552|0;uc=xf+548|0;Bd=xf+544|0;gd=xf+540|0;Cd=xf+536|0;fd=xf+532|0;Pa=xf+528|0;V=xf+524|0;he=xf;v=xf+520|0;Ed=xf+516|0;Re=xf+1628|0;ib=xf+512|0;zb=xf+508|0;kf=xf+504|0;Ve=xf+500|0;c[lf>>2]=f;c[n>>2]=c[(c[lf>>2]|0)+4>>2];c[pf>>2]=c[n>>2];c[rf>>2]=0;c[mf>>2]=c[c[lf>>2]>>2];a[fe>>0]=0;a[H>>0]=a[(c[mf>>2]|0)+62>>0]|0;c[fa>>2]=0;c[of>>2]=0;c[db>>2]=0;c[l>>2]=c[(c[lf>>2]|0)+8>>2];c[Oc>>2]=0;c[Pc>>2]=0;c[Qc>>2]=0;c[id>>2]=0;c[o>>2]=0;yf=(c[mf>>2]|0)+32|0;f=c[yf+4>>2]|0;j=nf;c[j>>2]=c[yf>>2];c[j+4>>2]=f;PH(c[lf>>2]|0);a:do if((c[(c[lf>>2]|0)+80>>2]|0)==7)k=860;else{c[(c[lf>>2]|0)+80>>2]=0;yf=(c[lf>>2]|0)+136|0;c[yf>>2]=0;c[yf+4>>2]=0;c[(c[lf>>2]|0)+20>>2]=0;c[(c[mf>>2]|0)+448+8>>2]=0;b:do if(!(c[(c[mf>>2]|0)+240>>2]|0)){if(c[(c[mf>>2]|0)+296>>2]|0){c[g>>2]=c[(c[lf>>2]|0)+108+16>>2];c[db>>2]=(c[(c[mf>>2]|0)+304>>2]|0)-(((c[g>>2]|0)>>>0)%((c[(c[mf>>2]|0)+304>>2]|0)>>>0)|0)}c[pf>>2]=(c[n>>2]|0)+((c[(c[lf>>2]|0)+76>>2]|0)*20|0);c:while(1){if(c[rf>>2]|0)break a;c[of>>2]=(c[of>>2]|0)+1;d:do switch(d[c[pf>>2]>>0]|0){case 13:{k=8;break}case 14:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);b[(c[Oc>>2]|0)+8>>1]=4;yf=((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0;k=c[Oc>>2]|0;c[k>>2]=yf;c[k+4>>2]=((yf|0)<0)<<31>>31;k=15;break}case 15:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[pf>>2]=(c[n>>2]|0)+((c[c[Oc>>2]>>2]|0)*20|0);b[(c[Oc>>2]|0)+8>>1]=128;break}case 16:{c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);j=(c[(c[pf>>2]|0)+12>>2]|0)-1|0;yf=c[id>>2]|0;c[yf>>2]=j;c[yf+4>>2]=((j|0)<0)<<31>>31;b[(c[id>>2]|0)+8>>1]=4;if(c[(c[pf>>2]|0)+8>>2]|0)k=15;break}case 17:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[dc>>2]=(c[n>>2]|0)+((c[c[Oc>>2]>>2]|0)*20|0);c[pf>>2]=(c[n>>2]|0)+(((c[(c[dc>>2]|0)+8>>2]|0)-1|0)*20|0);b[(c[Oc>>2]|0)+8>>1]=128;break}case 18:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);b[(c[Oc>>2]|0)+8>>1]=4;c[Gd>>2]=c[c[Oc>>2]>>2];j=((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0;yf=c[Oc>>2]|0;c[yf>>2]=j;c[yf+4>>2]=((j|0)<0)<<31>>31;c[pf>>2]=(c[n>>2]|0)+((c[Gd>>2]|0)*20|0);break}case 20:{c[Qc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);if(e[(c[Qc>>2]|0)+8>>1]&1)k=21;break}case 21:{k=21;break}case 22:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;j=c[(c[pf>>2]|0)+4>>2]|0;yf=c[id>>2]|0;c[yf>>2]=j;c[yf+4>>2]=((j|0)<0)<<31>>31;break}case 23:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;f=c[(c[pf>>2]|0)+16>>2]|0;j=c[f+4>>2]|0;yf=c[id>>2]|0;c[yf>>2]=c[f>>2];c[yf+4>>2]=j;break}case 133:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;b[(c[id>>2]|0)+8>>1]=8;h[c[id>>2]>>3]=+h[c[(c[pf>>2]|0)+16>>2]>>3];break}case 97:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;a[c[pf>>2]>>0]=24;yf=If(c[(c[pf>>2]|0)+16>>2]|0)|0;c[(c[pf>>2]|0)+4>>2]=yf;if((d[H>>0]|0)!=1){c[rf>>2]=dh(c[id>>2]|0,c[(c[pf>>2]|0)+16>>2]|0,-1,1,0)|0;if((c[rf>>2]|0)==18){k=859;break c}if(Zt(c[id>>2]|0,d[H>>0]|0)|0){k=860;break a}c[(c[id>>2]|0)+24>>2]=0;yf=(c[id>>2]|0)+8|0;b[yf>>1]=e[yf>>1]|2048;if((a[(c[pf>>2]|0)+1>>0]|0)==-1)Sf(c[mf>>2]|0,c[(c[pf>>2]|0)+16>>2]|0);a[(c[pf>>2]|0)+1>>0]=-1;c[(c[pf>>2]|0)+16>>2]=c[(c[id>>2]|0)+16>>2];c[(c[pf>>2]|0)+4>>2]=c[(c[id>>2]|0)+12>>2]}if((c[(c[pf>>2]|0)+4>>2]|0)>(c[(c[mf>>2]|0)+88>>2]|0)){k=859;break c}else k=50;break}case 24:{k=50;break}case 25:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;c[B>>2]=(c[(c[pf>>2]|0)+12>>2]|0)-(c[(c[pf>>2]|0)+8>>2]|0);yf=((c[(c[pf>>2]|0)+4>>2]|0)!=0?257:1)&65535;b[jb>>1]=yf;b[(c[id>>2]|0)+8>>1]=yf;while(1){if((c[B>>2]|0)<=0)break d;c[id>>2]=(c[id>>2]|0)+40;fh(c[id>>2]|0);b[(c[id>>2]|0)+8>>1]=b[jb>>1]|0;c[B>>2]=(c[B>>2]|0)+-1}}case 26:{c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);b[(c[id>>2]|0)+8>>1]=(e[(c[id>>2]|0)+8>>1]|1)&-129;break}case 27:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;dh(c[id>>2]|0,c[(c[pf>>2]|0)+16>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,0,0)|0;a[(c[id>>2]|0)+10>>0]=a[H>>0]|0;break}case 28:{c[vd>>2]=(c[(c[lf>>2]|0)+60>>2]|0)+(((c[(c[pf>>2]|0)+4>>2]|0)-1|0)*40|0);if(VH(c[vd>>2]|0)|0){k=859;break c}c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;BF(c[id>>2]|0,c[vd>>2]|0,2048);break}case 29:{c[Ha>>2]=c[(c[pf>>2]|0)+12>>2];c[pb>>2]=c[(c[pf>>2]|0)+4>>2];c[tb>>2]=c[(c[pf>>2]|0)+8>>2];c[Oc>>2]=(c[l>>2]|0)+((c[pb>>2]|0)*40|0);c[id>>2]=(c[l>>2]|0)+((c[tb>>2]|0)*40|0);do{EH(c[id>>2]|0,c[Oc>>2]|0);if((e[(c[id>>2]|0)+8>>1]&4096|0)!=0?(_g(c[id>>2]|0)|0)!=0:0){k=860;break a}c[Oc>>2]=(c[Oc>>2]|0)+40;c[id>>2]=(c[id>>2]|0)+40;yf=(c[Ha>>2]|0)+-1|0;c[Ha>>2]=yf}while((yf|0)!=0);break}case 30:{c[Ia>>2]=c[(c[pf>>2]|0)+12>>2];c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);while(1){BF(c[id>>2]|0,c[Oc>>2]|0,4096);if((e[(c[id>>2]|0)+8>>1]&4096|0)!=0?(_g(c[id>>2]|0)|0)!=0:0){k=860;break a}yf=c[Ia>>2]|0;c[Ia>>2]=yf+-1;if(!yf)break d;c[id>>2]=(c[id>>2]|0)+40;c[Oc>>2]=(c[Oc>>2]|0)+40}}case 31:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);BF(c[id>>2]|0,c[Oc>>2]|0,4096);break}case 32:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);yf=c[Oc>>2]|0;eh(c[id>>2]|0,c[yf>>2]|0,c[yf+4>>2]|0);break}case 33:{if(((c[(c[mf>>2]|0)+296>>2]|0)!=0?(c[of>>2]|0)>>>0>=(c[db>>2]|0)>>>0:0)?(Tb[c[(c[mf>>2]|0)+296>>2]&255](c[(c[mf>>2]|0)+300>>2]|0)|0)!=0:0){k=74;break c}yf=WH(c[lf>>2]|0,0)|0;c[rf>>2]=yf;if(0==(yf|0)?(c[rf>>2]=XH(c[lf>>2]|0,1)|0,(c[rf>>2]|0)==0):0){k=77;break c}break}case 94:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[Pc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);if((e[(c[Oc>>2]|0)+8>>1]|e[(c[Pc>>2]|0)+8>>1])&1){fh(c[id>>2]|0);break d}if((e[(c[Oc>>2]|0)+8>>1]&16384|0)!=0?(Vg(c[Oc>>2]|0)|0)!=0:0){k=860;break a}if((e[(c[Pc>>2]|0)+8>>1]&16384|0)!=0?(Vg(c[Pc>>2]|0)|0)!=0:0){k=860;break a}if((e[(c[Oc>>2]|0)+8>>1]&18|0)==0?(sx(c[Oc>>2]|0,a[H>>0]|0,0)|0)!=0:0){k=860;break a}if((e[(c[Pc>>2]|0)+8>>1]&18|0)==0?(sx(c[Pc>>2]|0,a[H>>0]|0,0)|0)!=0:0){k=860;break a}g=(c[(c[Oc>>2]|0)+12>>2]|0)+(c[(c[Pc>>2]|0)+12>>2]|0)|0;j=Qa;c[j>>2]=g;c[j+4>>2]=((g|0)<0)<<31>>31;j=Qa;g=c[j+4>>2]|0;yf=c[(c[mf>>2]|0)+88>>2]|0;f=((yf|0)<0)<<31>>31;if((g|0)>(f|0)|((g|0)==(f|0)?(c[j>>2]|0)>>>0>yf>>>0:0)){k=859;break c}if(ux(c[id>>2]|0,(c[Qa>>2]|0)+2|0,(c[id>>2]|0)==(c[Pc>>2]|0)&1)|0){k=860;break a}b[(c[id>>2]|0)+8>>1]=e[(c[id>>2]|0)+8>>1]&-49664|2;if((c[id>>2]|0)!=(c[Pc>>2]|0))iR(c[(c[id>>2]|0)+16>>2]|0,c[(c[Pc>>2]|0)+16>>2]|0,c[(c[Pc>>2]|0)+12>>2]|0)|0;iR((c[(c[id>>2]|0)+16>>2]|0)+(c[(c[Pc>>2]|0)+12>>2]|0)|0,c[(c[Oc>>2]|0)+16>>2]|0,c[(c[Oc>>2]|0)+12>>2]|0)|0;a[(c[(c[id>>2]|0)+16>>2]|0)+(c[Qa>>2]|0)>>0]=0;yf=Qa;yf=gR(c[yf>>2]|0,c[yf+4>>2]|0,1,0)|0;a[(c[(c[id>>2]|0)+16>>2]|0)+yf>>0]=0;yf=(c[id>>2]|0)+8|0;b[yf>>1]=e[yf>>1]|512;c[(c[id>>2]|0)+12>>2]=c[Qa>>2];a[(c[id>>2]|0)+10>>0]=a[H>>0]|0;break}case 93:case 92:case 91:case 90:case 89:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);b[re>>1]=ZH(c[Oc>>2]|0)|0;c[Pc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);b[se>>1]=ZH(c[Pc>>2]|0)|0;c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);b[L>>1]=e[(c[Oc>>2]|0)+8>>1]|e[(c[Pc>>2]|0)+8>>1];e:do if(!(e[L>>1]&1)){f:do if(e[re>>1]&e[se>>1]&4){yf=c[Oc>>2]|0;j=c[yf+4>>2]|0;f=ba;c[f>>2]=c[yf>>2];c[f+4>>2]=j;f=c[Pc>>2]|0;j=c[f+4>>2]|0;yf=da;c[yf>>2]=c[f>>2];c[yf+4>>2]=j;a[x>>0]=1;switch(d[c[pf>>2]>>0]|0){case 89:{yf=ba;if(_H(da,c[yf>>2]|0,c[yf+4>>2]|0)|0)break f;break}case 90:{yf=ba;if($H(da,c[yf>>2]|0,c[yf+4>>2]|0)|0)break f;break}case 91:{yf=ba;if(aI(da,c[yf>>2]|0,c[yf+4>>2]|0)|0)break f;break}case 92:{yf=ba;if((c[yf>>2]|0)==0&(c[yf+4>>2]|0)==0)break e;j=ba;yf=da;if(((c[j>>2]|0)==-1?(c[j+4>>2]|0)==-1:0)&((c[yf>>2]|0)==0?(c[yf+4>>2]|0)==-2147483648:0))break f;j=ba;f=da;yf=da;c[yf>>2]=pR(c[f>>2]|0,c[f+4>>2]|0,c[j>>2]|0,c[j+4>>2]|0)|0;c[yf+4>>2]=C;break}default:{yf=ba;if((c[yf>>2]|0)==0&(c[yf+4>>2]|0)==0)break e;yf=ba;if((c[yf>>2]|0)==-1?(c[yf+4>>2]|0)==-1:0){yf=ba;c[yf>>2]=1;c[yf+4>>2]=0}j=ba;f=da;yf=da;c[yf>>2]=qR(c[f>>2]|0,c[f+4>>2]|0,c[j>>2]|0,c[j+4>>2]|0)|0;c[yf+4>>2]=C}}f=da;j=c[f+4>>2]|0;yf=c[id>>2]|0;c[yf>>2]=c[f>>2];c[yf+4>>2]=j;b[(c[id>>2]|0)+8>>1]=e[(c[id>>2]|0)+8>>1]&-49664|4;break d}else a[x>>0]=0;while(0);h[Od>>3]=+Yg(c[Oc>>2]|0);h[Pd>>3]=+Yg(c[Pc>>2]|0);switch(d[c[pf>>2]>>0]|0){case 89:{h[Pd>>3]=+h[Pd>>3]+ +h[Od>>3];break}case 90:{h[Pd>>3]=+h[Pd>>3]-+h[Od>>3];break}case 91:{h[Pd>>3]=+h[Pd>>3]*+h[Od>>3];break}case 92:{if(+h[Od>>3]==0.0)break e;h[Pd>>3]=+h[Pd>>3]/+h[Od>>3];break}default:{zf=+h[Od>>3];yf=+N(zf)>=1.0?zf>0.0?~~+$(+M(zf/4294967296.0),4294967295.0)>>>0:~~+Z((zf-+(~~zf>>>0))/4294967296.0)>>>0:0;j=ba;c[j>>2]=~~zf>>>0;c[j+4>>2]=yf;zf=+h[Pd>>3];j=+N(zf)>=1.0?zf>0.0?~~+$(+M(zf/4294967296.0),4294967295.0)>>>0:~~+Z((zf-+(~~zf>>>0))/4294967296.0)>>>0:0;yf=da;c[yf>>2]=~~zf>>>0;c[yf+4>>2]=j;yf=ba;if((c[yf>>2]|0)==0&(c[yf+4>>2]|0)==0)break e;yf=ba;if((c[yf>>2]|0)==-1?(c[yf+4>>2]|0)==-1:0){yf=ba;c[yf>>2]=1;c[yf+4>>2]=0}j=da;yf=ba;h[Pd>>3]=+((qR(c[j>>2]|0,c[j+4>>2]|0,c[yf>>2]|0,c[yf+4>>2]|0)|0)>>>0)+4294967296.0*+(C|0)}}if(!(HF(+h[Pd>>3])|0)){h[c[id>>2]>>3]=+h[Pd>>3];b[(c[id>>2]|0)+8>>1]=e[(c[id>>2]|0)+8>>1]&-49664|8;if((a[x>>0]|0)!=0?1:((e[re>>1]|e[se>>1])&8|0)!=0)break d;px(c[id>>2]|0);break d}}while(0);fh(c[id>>2]|0);break}case 34:{if(c[(c[pf>>2]|0)+4>>2]|0)eh((c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0)|0,0,0);break}case 35:{c[Ja>>2]=d[(c[pf>>2]|0)+3>>0];c[mc>>2]=Fw(c[mf>>2]|0,32+((c[Ja>>2]|0)-1<<2)|0,0)|0;if(!(c[mc>>2]|0)){k=860;break a}c[c[mc>>2]>>2]=0;c[(c[mc>>2]|0)+4>>2]=c[(c[pf>>2]|0)+16>>2];c[(c[mc>>2]|0)+16>>2]=((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0;c[(c[mc>>2]|0)+12>>2]=c[lf>>2];a[(c[mc>>2]|0)+26>>0]=c[Ja>>2];a[(c[pf>>2]|0)+1>>0]=-20;c[(c[pf>>2]|0)+16>>2]=c[mc>>2];a[c[pf>>2]>>0]=36;k=132;break}case 36:{k=132;break}case 88:case 87:case 86:case 85:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[Pc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);if((e[(c[Oc>>2]|0)+8>>1]|e[(c[Pc>>2]|0)+8>>1])&1){fh(c[id>>2]|0);break d}yf=Zg(c[Pc>>2]|0)|0;j=ca;c[j>>2]=yf;c[j+4>>2]=C;j=Zg(c[Oc>>2]|0)|0;yf=ea;c[yf>>2]=j;c[yf+4>>2]=C;a[nb>>0]=a[c[pf>>2]>>0]|0;do if((d[nb>>0]|0)!=85){f=ea;g=c[f>>2]|0;f=c[f+4>>2]|0;if((d[nb>>0]|0)==86){Af=ca;j=c[Af+4>>2]|f;yf=ca;c[yf>>2]=c[Af>>2]|g;c[yf+4>>2]=j;break}if((g|0)!=0|(f|0)!=0){if((c[ea+4>>2]|0)<0){a[nb>>0]=175-(d[nb>>0]|0);yf=ea;j=c[yf+4>>2]|0;yf=(j|0)>-1|(j|0)==-1&(c[yf>>2]|0)>>>0>4294967232;j=ea;j=fR(0,0,c[j>>2]|0,c[j+4>>2]|0)|0;Af=ea;c[Af>>2]=yf?j:64;c[Af+4>>2]=yf?C:0}Af=ea;yf=c[Af+4>>2]|0;if((yf|0)>0|(yf|0)==0&(c[Af>>2]|0)>>>0>=64){Af=ca;yf=c[Af+4>>2]|0;if((yf|0)>0|(yf|0)==0&(c[Af>>2]|0)>>>0>=0)g=1;else g=(d[nb>>0]|0)==87;yf=g?0:-1;Af=ca;c[Af>>2]=yf;c[Af+4>>2]=((yf|0)<0)<<31>>31;break}c[te>>2]=c[ca>>2];c[te+4>>2]=c[ca+4>>2];g=c[ea>>2]|0;j=te;f=c[j>>2]|0;j=c[j+4>>2]|0;if((d[nb>>0]|0)!=87){yf=hR(f|0,j|0,g|0)|0;Af=te;c[Af>>2]=yf;c[Af+4>>2]=C;if((c[ca+4>>2]|0)<0){j=ea;j=fR(64,0,c[j>>2]|0,c[j+4>>2]|0)|0;j=lR(-1,-1,j|0)|0;f=te;yf=c[f+4>>2]|C;Af=te;c[Af>>2]=c[f>>2]|j;c[Af+4>>2]=yf}}else{yf=lR(f|0,j|0,g|0)|0;Af=te;c[Af>>2]=yf;c[Af+4>>2]=C}c[ca>>2]=c[te>>2];c[ca+4>>2]=c[te+4>>2]}}else{j=ea;f=ca;yf=c[f+4>>2]&c[j+4>>2];Af=ca;c[Af>>2]=c[f>>2]&c[j>>2];c[Af+4>>2]=yf}while(0);j=ca;yf=c[j+4>>2]|0;Af=c[id>>2]|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;b[(c[id>>2]|0)+8>>1]=e[(c[id>>2]|0)+8>>1]&-49664|4;break}case 37:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);wx(c[Oc>>2]|0)|0;yf=c[(c[pf>>2]|0)+8>>2]|0;Af=c[Oc>>2]|0;j=Af;yf=gR(c[j>>2]|0,c[j+4>>2]|0,yf|0,((yf|0)<0)<<31>>31|0)|0;c[Af>>2]=yf;c[Af+4>>2]=C;break}case 38:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);if((e[(c[Oc>>2]|0)+8>>1]&4|0)==0?(rx(c[Oc>>2]|0,67,a[H>>0]|0),(e[(c[Oc>>2]|0)+8>>1]&4|0)==0):0)if(!(c[(c[pf>>2]|0)+8>>2]|0)){k=165;break c}else{k=15;break d}b[(c[Oc>>2]|0)+8>>1]=e[(c[Oc>>2]|0)+8>>1]&-49664|4;break}case 39:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);if(e[(c[Oc>>2]|0)+8>>1]&4)xx(c[Oc>>2]|0)|0;break}case 40:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);if(e[(c[Oc>>2]|0)+8>>1]&16384)g=Vg(c[Oc>>2]|0)|0;else g=0;c[rf>>2]=g;kx(c[Oc>>2]|0,c[(c[pf>>2]|0)+8>>2]&255,a[H>>0]|0);break}case 83:case 80:case 81:case 82:case 78:case 79:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[Qc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);b[O>>1]=b[(c[Oc>>2]|0)+8>>1]|0;b[P>>1]=b[(c[Qc>>2]|0)+8>>1]|0;g=d[(c[pf>>2]|0)+3>>0]|0;do if((e[O>>1]|e[P>>1])&1){if(!(g&128)){g=c[pf>>2]|0;if(!(d[(c[pf>>2]|0)+3>>0]&32))if(d[g+3>>0]&16){k=15;break d}else break d;else{c[id>>2]=(c[l>>2]|0)+((c[g+8>>2]|0)*40|0);b[(c[id>>2]|0)+8>>1]=e[(c[id>>2]|0)+8>>1]&-49664|1;break d}}if(((e[O>>1]&1|0)!=0?(e[P>>1]&1|0)!=0:0)?(e[P>>1]&256|0)==0:0){c[Qd>>2]=0;break}c[Qd>>2]=1}else{a[s>>0]=g&71;if((a[s>>0]|0)>=67){if((e[O>>1]&14|0)==2)xh(c[Oc>>2]|0,0);if((e[P>>1]&14|0)==2)xh(c[Qc>>2]|0,0)}else if((a[s>>0]|0)==66){if((e[O>>1]&2|0)==0?(e[O>>1]&12|0)!=0:0){sx(c[Oc>>2]|0,a[H>>0]|0,1)|0;b[O>>1]=e[(c[Oc>>2]|0)+8>>1]&-33280|e[O>>1]&33279}if((e[P>>1]&2|0)==0?(e[P>>1]&12|0)!=0:0){sx(c[Qc>>2]|0,a[H>>0]|0,1)|0;b[P>>1]=e[(c[Qc>>2]|0)+8>>1]&-33280|e[P>>1]&33279}}if(e[O>>1]&16384){Vg(c[Oc>>2]|0)|0;b[O>>1]=e[O>>1]&-16385}if(e[P>>1]&16384){Vg(c[Qc>>2]|0)|0;b[P>>1]=e[P>>1]&-16385}c[Qd>>2]=cI(c[Qc>>2]|0,c[Oc>>2]|0,c[(c[pf>>2]|0)+16>>2]|0)|0}while(0);switch(d[c[pf>>2]>>0]|0){case 79:{c[Qd>>2]=(c[Qd>>2]|0)==0&1;break}case 78:{c[Qd>>2]=(c[Qd>>2]|0)!=0&1;break}case 82:{c[Qd>>2]=(c[Qd>>2]|0)<0&1;break}case 81:{c[Qd>>2]=(c[Qd>>2]|0)<=0&1;break}case 80:{c[Qd>>2]=(c[Qd>>2]|0)>0&1;break}default:c[Qd>>2]=(c[Qd>>2]|0)>=0&1}b[(c[Oc>>2]|0)+8>>1]=b[O>>1]|0;b[(c[Qc>>2]|0)+8>>1]=b[P>>1]|0;if(!(d[(c[pf>>2]|0)+3>>0]&32))if(c[Qd>>2]|0){k=15;break d}else break d;else{c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);b[(c[id>>2]|0)+8>>1]=e[(c[id>>2]|0)+8>>1]&-49664|4;yf=c[Qd>>2]|0;Af=c[id>>2]|0;c[Af>>2]=yf;c[Af+4>>2]=((yf|0)<0)<<31>>31;break d}}case 41:{c[o>>2]=(c[(c[pf>>2]|0)+16>>2]|0)+4;break}case 42:{if(!(d[(c[pf>>2]|0)+3>>0]&1))c[o>>2]=0;c[Ma>>2]=c[(c[pf>>2]|0)+12>>2];c[Sc>>2]=c[(c[pf>>2]|0)+16>>2];c[sb>>2]=c[(c[pf>>2]|0)+4>>2];c[ub>>2]=c[(c[pf>>2]|0)+8>>2];c[Y>>2]=0;while(1){if((c[Y>>2]|0)>=(c[Ma>>2]|0))break;g=c[Y>>2]|0;if(c[o>>2]|0)g=c[(c[o>>2]|0)+(g<<2)>>2]|0;c[wa>>2]=g;c[ec>>2]=c[(c[Sc>>2]|0)+20+(c[Y>>2]<<2)>>2];c[y>>2]=d[(c[(c[Sc>>2]|0)+16>>2]|0)+(c[Y>>2]|0)>>0];c[fa>>2]=cI((c[l>>2]|0)+(((c[sb>>2]|0)+(c[wa>>2]|0)|0)*40|0)|0,(c[l>>2]|0)+(((c[ub>>2]|0)+(c[wa>>2]|0)|0)*40|0)|0,c[ec>>2]|0)|0;if(c[fa>>2]|0){k=217;break}c[Y>>2]=(c[Y>>2]|0)+1}if((k|0)==217?(k=0,(c[y>>2]|0)!=0):0)c[fa>>2]=0-(c[fa>>2]|0);c[o>>2]=0;break}case 43:{if((c[fa>>2]|0)<0){c[pf>>2]=(c[n>>2]|0)+(((c[(c[pf>>2]|0)+4>>2]|0)-1|0)*20|0);break d}g=c[pf>>2]|0;if(!(c[fa>>2]|0)){c[pf>>2]=(c[n>>2]|0)+(((c[g+8>>2]|0)-1|0)*20|0);break d}else{c[pf>>2]=(c[n>>2]|0)+(((c[g+12>>2]|0)-1|0)*20|0);break d}}case 71:case 72:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);if(e[(c[Oc>>2]|0)+8>>1]&1)c[ve>>2]=2;else{Af=Zg(c[Oc>>2]|0)|0;c[ve>>2]=((Af|0)!=0|(C|0)!=0)&1}c[Pc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);if(e[(c[Pc>>2]|0)+8>>1]&1)c[we>>2]=2;else{Af=Zg(c[Pc>>2]|0)|0;c[we>>2]=((Af|0)!=0|(C|0)!=0)&1}g=((c[ve>>2]|0)*3|0)+(c[we>>2]|0)|0;if((d[c[pf>>2]>>0]|0)==72)c[ve>>2]=d[40716+g>>0];else c[ve>>2]=d[40725+g>>0];c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);if((c[ve>>2]|0)==2){b[(c[id>>2]|0)+8>>1]=e[(c[id>>2]|0)+8>>1]&-49664|1;break d}else{yf=c[ve>>2]|0;Af=c[id>>2]|0;c[Af>>2]=yf;c[Af+4>>2]=((yf|0)<0)<<31>>31;b[(c[id>>2]|0)+8>>1]=e[(c[id>>2]|0)+8>>1]&-49664|4;break d}}case 19:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);fh(c[id>>2]|0);if(!(e[(c[Oc>>2]|0)+8>>1]&1)){b[(c[id>>2]|0)+8>>1]=4;yf=Zg(c[Oc>>2]|0)|0;yf=(((yf|0)!=0|(C|0)!=0)^1)&1;Af=c[id>>2]|0;c[Af>>2]=yf;c[Af+4>>2]=((yf|0)<0)<<31>>31}break}case 96:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);fh(c[id>>2]|0);if(!(e[(c[Oc>>2]|0)+8>>1]&1)){b[(c[id>>2]|0)+8>>1]=4;yf=Zg(c[Oc>>2]|0)|0;Af=c[id>>2]|0;c[Af>>2]=~yf;c[Af+4>>2]=~C}break}case 44:{if(a[(c[(c[lf>>2]|0)+200>>2]|0)+(c[(c[pf>>2]|0)+4>>2]|0)>>0]|0)k=15;else a[(c[(c[lf>>2]|0)+200>>2]|0)+(c[(c[pf>>2]|0)+4>>2]|0)>>0]=1;break}case 46:case 45:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);if(!(e[(c[Oc>>2]|0)+8>>1]&1)){c[z>>2]=+Yg(c[Oc>>2]|0)!=0.0&1;if((d[c[pf>>2]>>0]|0)==46)c[z>>2]=((c[z>>2]|0)!=0^1)&1}else c[z>>2]=c[(c[pf>>2]|0)+12>>2];if(c[z>>2]|0)k=15;break}case 76:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);if(e[(c[Oc>>2]|0)+8>>1]&1)k=15;break}case 77:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);if(!(e[(c[Oc>>2]|0)+8>>1]&1))k=15;break}case 47:{c[Cb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[vb>>2]=c[(c[pf>>2]|0)+8>>2];c[rf>>2]=dI(Cb,vb)|0;c[Dc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);c[m>>2]=c[(c[Cb>>2]|0)+76>>2];c[fc>>2]=c[(c[Cb>>2]|0)+16>>2];if(c[rf>>2]|0){k=861;break c}g=c[Cb>>2]|0;do if((c[(c[Cb>>2]|0)+56>>2]|0)!=(c[(c[lf>>2]|0)+72>>2]|0)){f=c[Cb>>2]|0;do if(a[g+2>>0]|0)if((d[f>>0]|0)==3){c[nd>>2]=(c[l>>2]|0)+((c[(c[Cb>>2]|0)+16>>2]|0)*40|0);Af=c[(c[nd>>2]|0)+12>>2]|0;c[w>>2]=Af;c[(c[Cb>>2]|0)+64>>2]=Af;c[(c[Cb>>2]|0)+60>>2]=Af;c[(c[Cb>>2]|0)+72>>2]=c[(c[nd>>2]|0)+16>>2];break}else{fh(c[Dc>>2]|0);break d}else{g=c[fc>>2]|0;if(!(d[f+4>>0]|0)){sH(g,Fd)|0;Af=eI(c[fc>>2]|0,w)|0;c[(c[Cb>>2]|0)+72>>2]=Af;c[(c[Cb>>2]|0)+60>>2]=c[Fd>>2]}else{fI(g,(c[Cb>>2]|0)+60|0)|0;Af=gI(c[fc>>2]|0,w)|0;c[(c[Cb>>2]|0)+72>>2]=Af}g=c[(c[Cb>>2]|0)+60>>2]|0;if((c[(c[Cb>>2]|0)+60>>2]|0)>>>0<=(c[w>>2]|0)>>>0){c[(c[Cb>>2]|0)+64>>2]=g;break}if(g>>>0>(c[(c[mf>>2]|0)+88>>2]|0)>>>0){k=859;break c}c[(c[Cb>>2]|0)+64>>2]=c[w>>2]}while(0);c[(c[Cb>>2]|0)+56>>2]=c[(c[lf>>2]|0)+72>>2];g=c[(c[Cb>>2]|0)+72>>2]|0;if((d[c[(c[Cb>>2]|0)+72>>2]>>0]|0)<128){c[lb>>2]=d[g>>0];g=1}else g=(tF(g,lb)|0)&255;c[(c[Cb>>2]|0)+68>>2]=g&255;b[(c[Cb>>2]|0)+14>>1]=0;c[c[m>>2]>>2]=c[lb>>2];if((c[w>>2]|0)>>>0<(c[lb>>2]|0)>>>0){c[(c[Cb>>2]|0)+72>>2]=0;c[(c[Cb>>2]|0)+64>>2]=0;if((c[lb>>2]|0)>>>0<=98307?(c[lb>>2]|0)>>>0<=(c[(c[Cb>>2]|0)+60>>2]|0)>>>0:0){k=272;break}c[rf>>2]=Lj(76686)|0;break d}else k=272}else if((e[g+14>>1]|0)<=(c[vb>>2]|0))k=272;else c[ne>>2]=c[(c[Cb>>2]|0)+80+(c[vb>>2]<<2)>>2];while(0);if((k|0)==272){k=0;do if((c[(c[Cb>>2]|0)+68>>2]|0)>>>0<(c[c[m>>2]>>2]|0)>>>0){if(!(c[(c[Cb>>2]|0)+72>>2]|0)){g=je;f=g+40|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(f|0));c[rf>>2]=hI(c[fc>>2]|0,0,c[c[m>>2]>>2]|0,((a[(c[Cb>>2]|0)+4>>0]|0)!=0^1)&1,je)|0;if(c[rf>>2]|0)break d;c[Ye>>2]=c[je+16>>2]}else c[Ye>>2]=c[(c[Cb>>2]|0)+72>>2];c[U>>2]=e[(c[Cb>>2]|0)+14>>1];Af=mb;c[Af>>2]=c[(c[m>>2]|0)+(c[U>>2]<<2)>>2];c[Af+4>>2]=0;c[bf>>2]=(c[Ye>>2]|0)+(c[(c[Cb>>2]|0)+68>>2]|0);c[_e>>2]=(c[Ye>>2]|0)+(c[c[m>>2]>>2]|0);do{Af=d[c[bf>>2]>>0]|0;c[ne>>2]=Af;g=c[bf>>2]|0;if(Af>>>0<128){c[bf>>2]=g+1;yf=(iI(c[ne>>2]&255)|0)&255;Af=mb;yf=gR(c[Af>>2]|0,c[Af+4>>2]|0,yf|0,0)|0;Af=mb;c[Af>>2]=yf;c[Af+4>>2]=C}else{yf=(tF(g,ne)|0)&255;c[bf>>2]=(c[bf>>2]|0)+yf;yf=uF(c[ne>>2]|0)|0;Af=mb;yf=gR(c[Af>>2]|0,c[Af+4>>2]|0,yf|0,0)|0;Af=mb;c[Af>>2]=yf;c[Af+4>>2]=C}yf=c[ne>>2]|0;Af=c[U>>2]|0;c[U>>2]=Af+1;c[(c[Cb>>2]|0)+80+(Af<<2)>>2]=yf;c[(c[m>>2]|0)+(c[U>>2]<<2)>>2]=c[mb>>2];if((c[U>>2]|0)>(c[vb>>2]|0))break}while((c[bf>>2]|0)>>>0<(c[_e>>2]|0)>>>0);b[(c[Cb>>2]|0)+14>>1]=c[U>>2];c[(c[Cb>>2]|0)+68>>2]=(c[bf>>2]|0)-(c[Ye>>2]|0);if(!(c[(c[Cb>>2]|0)+72>>2]|0))Ug(je); -if((c[bf>>2]|0)>>>0>=(c[_e>>2]|0)>>>0){if((c[bf>>2]|0)>>>0<=(c[_e>>2]|0)>>>0?(Af=mb,!((c[Af+4>>2]|0)!=0?1:(c[Af>>2]|0)!=(c[(c[Cb>>2]|0)+60>>2]|0))):0)k=288}else k=288;if((k|0)==288?(k=0,Af=mb,yf=c[Af+4>>2]|0,!(yf>>>0>0|((yf|0)==0?(c[Af>>2]|0)>>>0>(c[(c[Cb>>2]|0)+60>>2]|0)>>>0:0))):0)break;c[rf>>2]=Lj(76747)|0;break d}else c[ne>>2]=0;while(0);if((e[(c[Cb>>2]|0)+14>>1]|0)<=(c[vb>>2]|0)){g=c[Dc>>2]|0;if((a[(c[pf>>2]|0)+1>>0]|0)==-8){BF(g,c[(c[pf>>2]|0)+16>>2]|0,2048);break d}else{fh(g);break d}}}if(e[(c[Dc>>2]|0)+8>>1]&9312)fh(c[Dc>>2]|0);a[(c[Dc>>2]|0)+10>>0]=a[H>>0]|0;if((c[(c[Cb>>2]|0)+64>>2]|0)>>>0>=(c[(c[m>>2]|0)+((c[vb>>2]|0)+1<<2)>>2]|0)>>>0){c[Ye>>2]=(c[(c[Cb>>2]|0)+72>>2]|0)+(c[(c[m>>2]|0)+(c[vb>>2]<<2)>>2]|0);if((c[ne>>2]|0)>>>0<12){vF(c[Ye>>2]|0,c[ne>>2]|0,c[Dc>>2]|0)|0;break d}g=(((c[ne>>2]|0)-12|0)>>>0)/2|0;c[Fa>>2]=g;c[(c[Dc>>2]|0)+12>>2]=g;g=c[Dc>>2]|0;if((c[(c[Dc>>2]|0)+24>>2]|0)<((c[Fa>>2]|0)+2|0)){b[g+8>>1]=1;if(ux(c[Dc>>2]|0,(c[Fa>>2]|0)+2|0,0)|0){k=860;break a}}else c[(c[Dc>>2]|0)+16>>2]=c[g+20>>2];iR(c[(c[Dc>>2]|0)+16>>2]|0,c[Ye>>2]|0,c[Fa>>2]|0)|0;a[(c[(c[Dc>>2]|0)+16>>2]|0)+(c[Fa>>2]|0)>>0]=0;a[(c[(c[Dc>>2]|0)+16>>2]|0)+((c[Fa>>2]|0)+1)>>0]=0;b[(c[Dc>>2]|0)+8>>1]=b[17282+((c[ne>>2]&1)<<1)>>1]|0;break d}do if(d[(c[pf>>2]|0)+3>>0]&192){if((c[ne>>2]|0)>>>0>=12?(c[ne>>2]&1|0)==0:0)break;if(!(d[(c[pf>>2]|0)+3>>0]&128))k=309}else k=309;while(0);if((k|0)==309?(k=0,Af=uF(c[ne>>2]|0)|0,c[Fa>>2]=Af,(Af|0)!=0):0){c[rf>>2]=hI(c[fc>>2]|0,c[(c[m>>2]|0)+(c[vb>>2]<<2)>>2]|0,c[Fa>>2]|0,((a[(c[Cb>>2]|0)+4>>0]|0)!=0^1)&1,c[Dc>>2]|0)|0;if(c[rf>>2]|0)break d;vF(c[(c[Dc>>2]|0)+16>>2]|0,c[ne>>2]|0,c[Dc>>2]|0)|0;Af=(c[Dc>>2]|0)+8|0;b[Af>>1]=e[Af>>1]&-4097;break d}vF(40734,c[ne>>2]|0,c[Dc>>2]|0)|0;break}case 48:{c[We>>2]=c[(c[pf>>2]|0)+16>>2];c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);while(1){Af=c[We>>2]|0;c[We>>2]=Af+1;Af=a[Af>>0]|0;a[A>>0]=Af;if(!(Af<<24>>24))break d;rx(c[Oc>>2]|0,a[A>>0]|0,a[H>>0]|0);c[Oc>>2]=(c[Oc>>2]|0)+40}}case 49:{Af=Ua;c[Af>>2]=0;c[Af+4>>2]=0;c[_a>>2]=0;Af=gb;c[Af>>2]=0;c[Af+4>>2]=0;c[Xa>>2]=c[(c[pf>>2]|0)+4>>2];c[Xe>>2]=c[(c[pf>>2]|0)+16>>2];c[zc>>2]=(c[l>>2]|0)+((c[Xa>>2]|0)*40|0);c[Xa>>2]=c[(c[pf>>2]|0)+8>>2];c[Vc>>2]=(c[zc>>2]|0)+(((c[Xa>>2]|0)-1|0)*40|0);c[K>>2]=d[(c[lf>>2]|0)+87>>0];c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);if(c[Xe>>2]|0){c[md>>2]=c[zc>>2];do{yf=c[md>>2]|0;c[md>>2]=yf+40;Af=c[Xe>>2]|0;c[Xe>>2]=Af+1;rx(yf,a[Af>>0]|0,a[H>>0]|0)}while((a[c[Xe>>2]>>0]|0)!=0)}c[md>>2]=c[Vc>>2];do{Af=jI(c[md>>2]|0,c[K>>2]|0,Ga)|0;c[me>>2]=Af;c[(c[md>>2]|0)+28>>2]=Af;do if(e[(c[md>>2]|0)+8>>1]&16384){Af=Ua;g=c[md>>2]|0;if((c[Af>>2]|0)!=0|(c[Af+4>>2]|0)!=0)if(Vg(g)|0){k=860;break a}else break;else{yf=c[g>>2]|0;Af=gb;yf=gR(c[Af>>2]|0,c[Af+4>>2]|0,yf|0,((yf|0)<0)<<31>>31|0)|0;Af=gb;c[Af>>2]=yf;c[Af+4>>2]=C;c[Ga>>2]=(c[Ga>>2]|0)-(c[c[md>>2]>>2]|0);break}}while(0);yf=Ua;yf=gR(c[yf>>2]|0,c[yf+4>>2]|0,c[Ga>>2]|0,0)|0;Af=Ua;c[Af>>2]=yf;c[Af+4>>2]=C;if((c[me>>2]|0)>>>0<=127)g=1;else g=zF(c[me>>2]|0,0)|0;c[_a>>2]=(c[_a>>2]|0)+g;Af=(c[md>>2]|0)+-40|0;c[md>>2]=Af}while(Af>>>0>=(c[zc>>2]|0)>>>0);g=c[_a>>2]|0;if((c[_a>>2]|0)>126){c[fb>>2]=zF(g,((g|0)<0)<<31>>31)|0;c[_a>>2]=(c[_a>>2]|0)+(c[fb>>2]|0);yf=c[fb>>2]|0;Af=c[_a>>2]|0;if((yf|0)<(zF(Af,((Af|0)<0)<<31>>31)|0))c[_a>>2]=(c[_a>>2]|0)+1}else c[_a>>2]=g+1;f=c[_a>>2]|0;yf=Ua;yf=gR(f|0,((f|0)<0)<<31>>31|0,c[yf>>2]|0,c[yf+4>>2]|0)|0;f=Ra;c[f>>2]=yf;c[f+4>>2]=C;f=Ra;yf=gb;yf=gR(c[f>>2]|0,c[f+4>>2]|0,c[yf>>2]|0,c[yf+4>>2]|0)|0;f=C;Af=c[(c[mf>>2]|0)+88>>2]|0;j=((Af|0)<0)<<31>>31;if((f|0)>(j|0)|(f|0)==(j|0)&yf>>>0>Af>>>0){k=859;break c}if(tx(c[id>>2]|0,c[Ra>>2]|0)|0){k=860;break a}c[ff>>2]=c[(c[id>>2]|0)+16>>2];if((c[_a>>2]|0)>>>0<128){a[c[ff>>2]>>0]=c[_a>>2];g=1}else{g=c[_a>>2]|0;g=kI(c[ff>>2]|0,g,((g|0)<0)<<31>>31)|0}c[W>>2]=g&255;c[Da>>2]=c[_a>>2];c[md>>2]=c[zc>>2];do{c[me>>2]=c[(c[md>>2]|0)+28>>2];if((c[me>>2]|0)>>>0<128){a[(c[ff>>2]|0)+(c[W>>2]|0)>>0]=c[me>>2];g=1}else g=kI((c[ff>>2]|0)+(c[W>>2]|0)|0,c[me>>2]|0,0)|0;c[W>>2]=(c[W>>2]|0)+(g&255);Af=lI((c[ff>>2]|0)+(c[Da>>2]|0)|0,c[md>>2]|0,c[me>>2]|0)|0;c[Da>>2]=(c[Da>>2]|0)+Af;Af=(c[md>>2]|0)+40|0;c[md>>2]=Af}while(Af>>>0<=(c[Vc>>2]|0)>>>0);c[(c[id>>2]|0)+12>>2]=c[Ra>>2];b[(c[id>>2]|0)+8>>1]=16;Af=gb;if((c[Af>>2]|0)!=0|(c[Af+4>>2]|0)!=0){c[c[id>>2]>>2]=c[gb>>2];Af=(c[id>>2]|0)+8|0;b[Af>>1]=e[Af>>1]|16384}a[(c[id>>2]|0)+10>>0]=1;break}case 50:{c[gc>>2]=c[(c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2]|0)+16>>2];j=Va;c[j>>2]=0;c[j+4>>2]=0;c[rf>>2]=mI(c[gc>>2]|0,Va)|0;c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;j=Va;yf=c[j+4>>2]|0;Af=c[id>>2]|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;break}case 0:{c[rb>>2]=c[(c[pf>>2]|0)+4>>2];c[ef>>2]=c[(c[pf>>2]|0)+16>>2];if(!(c[rb>>2]|0)){if((c[(c[mf>>2]|0)+156>>2]|0)>0){SH(c[lf>>2]|0,40742,Be);c[rf>>2]=5;break d}c[cb>>2]=If(c[ef>>2]|0)|0;c[rf>>2]=nI(c[mf>>2]|0,0,(c[(c[mf>>2]|0)+504>>2]|0)+(c[(c[mf>>2]|0)+500>>2]|0)|0)|0;if(c[rf>>2]|0){k=861;break c}c[hd>>2]=Fw(c[mf>>2]|0,32+(c[cb>>2]|0)+1|0,0)|0;if(!(c[hd>>2]|0))break d;c[c[hd>>2]>>2]=(c[hd>>2]|0)+32;iR(c[c[hd>>2]>>2]|0,c[ef>>2]|0,(c[cb>>2]|0)+1|0)|0;g=c[mf>>2]|0;if(a[(c[mf>>2]|0)+63>>0]|0){a[g+63>>0]=0;a[(c[mf>>2]|0)+71>>0]=1}else{Af=g+500|0;c[Af>>2]=(c[Af>>2]|0)+1}c[(c[hd>>2]|0)+24>>2]=c[(c[mf>>2]|0)+492>>2];c[(c[mf>>2]|0)+492>>2]=c[hd>>2];Af=(c[mf>>2]|0)+512|0;yf=c[Af+4>>2]|0;j=(c[hd>>2]|0)+8|0;c[j>>2]=c[Af>>2];c[j+4>>2]=yf;j=(c[mf>>2]|0)+520|0;yf=c[j+4>>2]|0;Af=(c[hd>>2]|0)+16|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;break d}c[ua>>2]=0;c[pd>>2]=c[(c[mf>>2]|0)+492>>2];while(1){if(!(c[pd>>2]|0))break;if(!(Td(c[c[pd>>2]>>2]|0,c[ef>>2]|0)|0))break;c[ua>>2]=(c[ua>>2]|0)+1;c[pd>>2]=c[(c[pd>>2]|0)+24>>2]}if(!(c[pd>>2]|0)){Af=c[lf>>2]|0;c[Ce>>2]=c[ef>>2];SH(Af,40793,Ce);c[rf>>2]=1;break d}if((c[rb>>2]|0)==1?(c[(c[mf>>2]|0)+156>>2]|0)>0:0){SH(c[lf>>2]|0,40815,De);c[rf>>2]=5;break d}if(!(c[(c[pd>>2]|0)+24>>2]|0))g=(d[(c[mf>>2]|0)+71>>0]|0)!=0;else g=0;c[Ba>>2]=g&1;if(!((c[Ba>>2]|0)!=0&(c[rb>>2]|0)==1)){c[ua>>2]=(c[(c[mf>>2]|0)+500>>2]|0)-(c[ua>>2]|0)-1;g:do if((c[rb>>2]|0)==2){c[Aa>>2]=(c[(c[mf>>2]|0)+24>>2]&2|0)!=0&1;c[xa>>2]=0;while(1){if((c[xa>>2]|0)>=(c[(c[mf>>2]|0)+20>>2]|0))break g;c[rf>>2]=oI(c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[xa>>2]<<4)+4>>2]|0,516,(c[Aa>>2]|0)==0&1)|0;if(c[rf>>2]|0){k=861;break c}c[xa>>2]=(c[xa>>2]|0)+1}}else c[Aa>>2]=0;while(0);c[xa>>2]=0;while(1){if((c[xa>>2]|0)>=(c[(c[mf>>2]|0)+20>>2]|0))break;c[rf>>2]=pI(c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[xa>>2]<<4)+4>>2]|0,c[rb>>2]|0,c[ua>>2]|0)|0;if(c[rf>>2]|0){k=861;break c}c[xa>>2]=(c[xa>>2]|0)+1}if(c[Aa>>2]|0){Oh(c[mf>>2]|0);zg(c[mf>>2]|0);c[(c[mf>>2]|0)+24>>2]=c[(c[mf>>2]|0)+24>>2]|2}}else{Af=WH(c[lf>>2]|0,1)|0;c[rf>>2]=Af;if(Af){k=858;break c}a[(c[mf>>2]|0)+63>>0]=1;if((TH(c[lf>>2]|0)|0)==5){k=367;break c}a[(c[mf>>2]|0)+71>>0]=0;c[rf>>2]=c[(c[lf>>2]|0)+80>>2]}while(1){if((c[(c[mf>>2]|0)+492>>2]|0)==(c[pd>>2]|0))break;c[rd>>2]=c[(c[mf>>2]|0)+492>>2];c[(c[mf>>2]|0)+492>>2]=c[(c[rd>>2]|0)+24>>2];Sf(c[mf>>2]|0,c[rd>>2]|0);Af=(c[mf>>2]|0)+500|0;c[Af>>2]=(c[Af>>2]|0)+-1}g=c[pd>>2]|0;if((c[rb>>2]|0)==1){c[(c[mf>>2]|0)+492>>2]=c[g+24>>2];Sf(c[mf>>2]|0,c[pd>>2]|0);if(!(c[Ba>>2]|0)){Af=(c[mf>>2]|0)+500|0;c[Af>>2]=(c[Af>>2]|0)+-1}}else{Af=g+8|0;yf=c[Af+4>>2]|0;j=(c[mf>>2]|0)+512|0;c[j>>2]=c[Af>>2];c[j+4>>2]=yf;j=(c[pd>>2]|0)+16|0;yf=c[j+4>>2]|0;Af=(c[mf>>2]|0)+520|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf}if((c[Ba>>2]|0)==0|(c[rb>>2]|0)==2?(c[rf>>2]=nI(c[mf>>2]|0,c[rb>>2]|0,c[ua>>2]|0)|0,(c[rf>>2]|0)!=0):0){k=861;break c}break}case 1:{c[E>>2]=c[(c[pf>>2]|0)+4>>2];c[ta>>2]=c[(c[pf>>2]|0)+8>>2];if((c[E>>2]|0)==(d[(c[mf>>2]|0)+63>>0]|0)){if(c[E>>2]|0)g=(c[ta>>2]|0)!=0?40924:40967;else g=41008;SH(c[lf>>2]|0,g,Fe);c[rf>>2]=1;break d}if(c[ta>>2]|0){k=391;break c}if(!(c[E>>2]|0)){k=395;break c}if((c[(c[mf>>2]|0)+156>>2]|0)<=0){k=395;break c}SH(c[lf>>2]|0,40869,Ee);c[rf>>2]=5;break}case 2:{if((c[(c[pf>>2]|0)+8>>2]|0)!=0?(c[(c[mf>>2]|0)+24>>2]&33554432|0)!=0:0){k=407;break c}c[yb>>2]=c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<4)+4>>2];if(c[yb>>2]|0){c[rf>>2]=mg(c[yb>>2]|0,c[(c[pf>>2]|0)+8>>2]|0)|0;if((c[rf>>2]&255|0)==5){k=410;break c}if(c[rf>>2]|0){k=861;break c}do if((c[(c[pf>>2]|0)+8>>2]|0)!=0?((e[(c[lf>>2]|0)+88>>1]|0)>>>5&1|0)!=0:0){if((d[(c[mf>>2]|0)+63>>0]|0)!=0?(c[(c[mf>>2]|0)+152>>2]|0)<=1:0)break;if(!(c[(c[lf>>2]|0)+104>>2]|0)){Af=(c[mf>>2]|0)+504|0;c[Af>>2]=(c[Af>>2]|0)+1;c[(c[lf>>2]|0)+104>>2]=(c[(c[mf>>2]|0)+500>>2]|0)+(c[(c[mf>>2]|0)+504>>2]|0)}c[rf>>2]=nI(c[mf>>2]|0,0,(c[(c[lf>>2]|0)+104>>2]|0)-1|0)|0;if(!(c[rf>>2]|0))c[rf>>2]=sI(c[yb>>2]|0,c[(c[lf>>2]|0)+104>>2]|0)|0;Af=(c[mf>>2]|0)+512|0;yf=c[Af+4>>2]|0;j=(c[lf>>2]|0)+152|0;c[j>>2]=c[Af>>2];c[j+4>>2]=yf;j=(c[mf>>2]|0)+520|0;yf=c[j+4>>2]|0;Af=(c[lf>>2]|0)+160|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf}while(0);ng(c[yb>>2]|0,1,pa);c[la>>2]=c[(c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<4)+12>>2]|0)+4>>2]}else{c[pa>>2]=0;c[la>>2]=0}if(d[(c[pf>>2]|0)+3>>0]|0){if((c[pa>>2]|0)==(c[(c[pf>>2]|0)+12>>2]|0)?(c[la>>2]|0)==(c[(c[pf>>2]|0)+16>>2]|0):0)break d;Sf(c[mf>>2]|0,c[(c[lf>>2]|0)+44>>2]|0);Af=nh(c[mf>>2]|0,41056)|0;c[(c[lf>>2]|0)+44>>2]=Af;if((c[c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<4)+12>>2]>>2]|0)!=(c[pa>>2]|0))rj(c[mf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0);Af=(c[lf>>2]|0)+88|0;b[Af>>1]=b[Af>>1]&-9|8;c[rf>>2]=17}break}case 51:{c[ha>>2]=c[(c[pf>>2]|0)+4>>2];c[ga>>2]=c[(c[pf>>2]|0)+12>>2];ng(c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[ha>>2]<<4)+4>>2]|0,c[ga>>2]|0,qa);c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;yf=c[qa>>2]|0;Af=c[id>>2]|0;c[Af>>2]=yf;c[Af+4>>2]=((yf|0)<0)<<31>>31;break}case 52:{c[Ac>>2]=(c[(c[mf>>2]|0)+16>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<4);c[rf>>2]=yg(c[(c[Ac>>2]|0)+4>>2]|0,c[(c[pf>>2]|0)+8>>2]|0,c[(c[pf>>2]|0)+12>>2]|0)|0;g=c[pf>>2]|0;if((c[(c[pf>>2]|0)+8>>2]|0)!=1){if((c[g+8>>2]|0)==2)a[(c[(c[Ac>>2]|0)+12>>2]|0)+76>>0]=c[(c[pf>>2]|0)+12>>2]}else{c[c[(c[Ac>>2]|0)+12>>2]>>2]=c[g+12>>2];Af=(c[mf>>2]|0)+24|0;c[Af>>2]=c[Af>>2]|2}if((c[(c[pf>>2]|0)+4>>2]|0)==1){Oh(c[mf>>2]|0);Af=(c[lf>>2]|0)+88|0;b[Af>>1]=b[Af>>1]&-9}break}case 53:{c[qc>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];if((c[qc>>2]|0)!=0?(c[(c[qc>>2]|0)+8>>2]|0)==(c[(c[pf>>2]|0)+8>>2]|0):0)k=453;else k=438;break}case 55:case 54:{k=438;break}case 57:case 56:{c[vc>>2]=tI(c[lf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,c[(c[pf>>2]|0)+8>>2]|0,-1,0)|0;if(!(c[vc>>2]|0)){k=860;break a}a[(c[vc>>2]|0)+2>>0]=1;Af=(c[vc>>2]|0)+5|0;a[Af>>0]=a[Af>>0]&-2|1;c[rf>>2]=Xj(c[c[mf>>2]>>2]|0,0,c[mf>>2]|0,(c[vc>>2]|0)+20|0,5|d[(c[pf>>2]|0)+3>>0],1054)|0;if(!(c[rf>>2]|0))c[rf>>2]=mg(c[(c[vc>>2]|0)+20>>2]|0,1)|0;do if(!(c[rf>>2]|0)){Af=c[(c[pf>>2]|0)+16>>2]|0;c[Uc>>2]=Af;g=c[(c[vc>>2]|0)+20>>2]|0;if(!Af){c[rf>>2]=uI(g,1,4,0,c[(c[vc>>2]|0)+16>>2]|0)|0;a[(c[vc>>2]|0)+4>>0]=1;break}c[rf>>2]=wI(g,Hd,2|d[(c[pf>>2]|0)+3>>0])|0;if(!(c[rf>>2]|0)){c[(c[vc>>2]|0)+24>>2]=c[Uc>>2];c[rf>>2]=uI(c[(c[vc>>2]|0)+20>>2]|0,c[Hd>>2]|0,4,c[Uc>>2]|0,c[(c[vc>>2]|0)+16>>2]|0)|0}a[(c[vc>>2]|0)+4>>0]=0}while(0);Af=(c[vc>>2]|0)+5|0;a[Af>>0]=a[Af>>0]&-5|((d[(c[pf>>2]|0)+3>>0]|0)!=8&1)<<2&255;break}case 58:{c[wc>>2]=tI(c[lf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,c[(c[pf>>2]|0)+8>>2]|0,-1,1)|0;if(!(c[wc>>2]|0)){k=860;break a}c[(c[wc>>2]|0)+24>>2]=c[(c[pf>>2]|0)+16>>2];c[rf>>2]=xI(c[mf>>2]|0,c[(c[pf>>2]|0)+12>>2]|0,c[wc>>2]|0)|0;break}case 59:{c[Db>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];j=(c[Db>>2]|0)+32|0;Af=j;yf=c[Af>>2]|0;Af=c[Af+4>>2]|0;f=gR(yf|0,Af|0,1,0)|0;c[j>>2]=f;c[j+4>>2]=C;if((yf|0)==0&(Af|0)==0)k=15;break}case 60:{c[xc>>2]=tI(c[lf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,c[(c[pf>>2]|0)+12>>2]|0,-1,3)|0;if(!(c[xc>>2]|0)){k=860;break a}a[(c[xc>>2]|0)+2>>0]=1;c[(c[xc>>2]|0)+16>>2]=c[(c[pf>>2]|0)+8>>2];a[(c[xc>>2]|0)+4>>0]=1;break}case 61:{yI(c[lf>>2]|0,c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2]|0);c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2]=0;break}case 66:case 65:case 64:case 63:{c[Eb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[kb>>2]=d[c[pf>>2]>>0];c[I>>2]=0;a[(c[Eb>>2]|0)+2>>0]=0;if(a[(c[Eb>>2]|0)+4>>0]|0){c[Qc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);if((e[(c[Qc>>2]|0)+8>>1]&14|0)==2)xh(c[Qc>>2]|0,0);yf=Zg(c[Qc>>2]|0)|0;Af=ma;c[Af>>2]=yf;c[Af+4>>2]=C;do if(!(e[(c[Qc>>2]|0)+8>>1]&4)){if(!(e[(c[Qc>>2]|0)+8>>1]&8)){k=15;break d}Af=ma;if(+h[c[Qc>>2]>>3]<+((c[Af>>2]|0)>>>0)+4294967296.0*+(c[Af+4>>2]|0)){if(c[kb>>2]&1)break;c[kb>>2]=(c[kb>>2]|0)+-1;break}Af=ma;if(+h[c[Qc>>2]>>3]>+((c[Af>>2]|0)>>>0)+4294967296.0*+(c[Af+4>>2]|0)?(c[kb>>2]&1|0)==1:0)c[kb>>2]=(c[kb>>2]|0)+1}while(0);k=ma;c[rf>>2]=eF(c[(c[Eb>>2]|0)+16>>2]|0,0,c[k>>2]|0,c[k+4>>2]|0,0,Wd)|0;k=ma;yf=c[k+4>>2]|0;Af=(c[Eb>>2]|0)+40|0;c[Af>>2]=c[k>>2];c[Af+4>>2]=yf;if(c[rf>>2]|0){k=861;break c}else k=489}else{if(zI(c[(c[Eb>>2]|0)+16>>2]|0,2)|0)c[I>>2]=1;c[Za>>2]=c[(c[pf>>2]|0)+16>>2];c[Kd>>2]=c[(c[Eb>>2]|0)+24>>2];b[Kd+8>>1]=c[Za>>2];a[Kd+10>>0]=(1&(c[kb>>2]|0)-63|0)!=0?-1:1;c[Kd+4>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);if(e[(c[Kd+4>>2]|0)+8>>1]&16384)Vg(c[Kd+4>>2]|0)|0;a[Kd+14>>0]=0;c[rf>>2]=eF(c[(c[Eb>>2]|0)+16>>2]|0,Kd,0,0,0,Wd)|0;if(c[rf>>2]|0){k=861;break c}if(!((c[I>>2]|0)!=0?(d[Kd+14>>0]|0)==0:0))k=489}do if((k|0)==489){k=0;a[(c[Eb>>2]|0)+3>>0]=0;c[(c[Eb>>2]|0)+56>>2]=0;g=c[Wd>>2]|0;if((c[kb>>2]|0)>=65){if((g|0)>=0?!((c[Wd>>2]|0)==0&(c[kb>>2]|0)==66):0){c[Wd>>2]=0;break}c[Wd>>2]=0;c[rf>>2]=TE(c[(c[Eb>>2]|0)+16>>2]|0,Wd)|0;if(c[rf>>2]|0){k=861;break c}else break}else{if((g|0)<=0?!((c[Wd>>2]|0)==0&(c[kb>>2]|0)==63):0){c[Wd>>2]=AI(c[(c[Eb>>2]|0)+16>>2]|0)|0;break}c[Wd>>2]=0;c[rf>>2]=UE(c[(c[Eb>>2]|0)+16>>2]|0,Wd)|0;if(c[rf>>2]|0){k=861;break c}else break}}while(0);if(!(c[Wd>>2]|0)){if(c[I>>2]|0)c[pf>>2]=(c[pf>>2]|0)+20}else k=15;break}case 69:case 68:case 67:{c[Fb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[Qc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);c[Lc>>2]=0;g=c[(c[Fb>>2]|0)+24>>2]|0;if((c[(c[pf>>2]|0)+16>>2]|0)>0){c[Ld>>2]=g;b[Ld+8>>1]=c[(c[pf>>2]|0)+16>>2];c[Ld+4>>2]=c[Qc>>2];c[ya>>2]=0;while(1){if((c[ya>>2]|0)>=(e[Ld+8>>1]|0))break;if(e[(c[Ld+4>>2]|0)+((c[ya>>2]|0)*40|0)+8>>1]&16384)Vg((c[Ld+4>>2]|0)+((c[ya>>2]|0)*40|0)|0)|0;c[ya>>2]=(c[ya>>2]|0)+1}c[Mc>>2]=Ld}else{c[Mc>>2]=cF(g,r,183,Lc)|0;if(!(c[Mc>>2]|0)){k=860;break a}if(e[(c[Qc>>2]|0)+8>>1]&16384)Vg(c[Qc>>2]|0)|0;dF(c[(c[Fb>>2]|0)+24>>2]|0,c[(c[Qc>>2]|0)+12>>2]|0,c[(c[Qc>>2]|0)+16>>2]|0,c[Mc>>2]|0)}a[(c[Mc>>2]|0)+10>>0]=0;c[qe>>2]=0;h:do if((d[c[pf>>2]>>0]|0)==67){c[ya>>2]=0;while(1){if((c[ya>>2]|0)>=(e[(c[Mc>>2]|0)+8>>1]|0))break h;if(e[(c[(c[Mc>>2]|0)+4>>2]|0)+((c[ya>>2]|0)*40|0)+8>>1]&1)break;c[ya>>2]=(c[ya>>2]|0)+1}c[qe>>2]=1}while(0);c[rf>>2]=eF(c[(c[Fb>>2]|0)+16>>2]|0,c[Mc>>2]|0,0,0,0,Xd)|0;Sf(c[mf>>2]|0,c[Lc>>2]|0);if(!(c[rf>>2]|0)){c[(c[Fb>>2]|0)+28>>2]=c[Xd>>2];c[t>>2]=(c[Xd>>2]|0)==0&1;a[(c[Fb>>2]|0)+2>>0]=1-(c[t>>2]|0);a[(c[Fb>>2]|0)+3>>0]=0;c[(c[Fb>>2]|0)+56>>2]=0;if((d[c[pf>>2]>>0]|0)==69)if(c[t>>2]|0){k=15;break d}else break d;else if((c[qe>>2]|0)==0&(c[t>>2]|0)!=0)break d;else{k=15;break d}}break}case 70:{c[Qc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);c[Gb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[hc>>2]=c[(c[Gb>>2]|0)+16>>2];c[Yd>>2]=0;Af=c[Qc>>2]|0;yf=c[Af+4>>2]|0;j=na;c[j>>2]=c[Af>>2];c[j+4>>2]=yf;j=na;c[rf>>2]=eF(c[hc>>2]|0,0,c[j>>2]|0,c[j+4>>2]|0,0,Yd)|0;j=na;yf=c[j+4>>2]|0;Af=(c[Gb>>2]|0)+40|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;a[(c[Gb>>2]|0)+2>>0]=0;c[(c[Gb>>2]|0)+56>>2]=0;a[(c[Gb>>2]|0)+3>>0]=0;c[(c[Gb>>2]|0)+28>>2]=c[Yd>>2];if(c[Yd>>2]|0)if(!(c[(c[pf>>2]|0)+8>>2]|0))c[rf>>2]=Lj(78267)|0;else k=15;break}case 73:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;Af=(c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2]|0)+32|0;yf=Af;j=c[yf>>2]|0;yf=c[yf+4>>2]|0;f=gR(j|0,yf|0,1,0)|0;c[Af>>2]=f;c[Af+4>>2]=C;Af=c[id>>2]|0;c[Af>>2]=j;c[Af+4>>2]=yf;break}case 74:{Af=ue;c[Af>>2]=0;c[Af+4>>2]=0;c[Zd>>2]=0;c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;c[Hb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];do if(!((d[(c[Hb>>2]|0)+5>>0]|0)>>>1&1)){c[rf>>2]=BI(c[(c[Hb>>2]|0)+16>>2]|0,Zd)|0;if(c[rf>>2]|0){k=861;break c}if(c[Zd>>2]|0){Af=ue;c[Af>>2]=1;c[Af+4>>2]=0;break}c[rf>>2]=sH(c[(c[Hb>>2]|0)+16>>2]|0,ue)|0;Af=ue;yf=c[Af+4>>2]|0;if((yf|0)>2147483647|(yf|0)==2147483647&(c[Af>>2]|0)>>>0>=4294967295){Af=(c[Hb>>2]|0)+5|0;a[Af>>0]=a[Af>>0]&-3|2;break}else{yf=ue;yf=gR(c[yf>>2]|0,c[yf+4>>2]|0,1,0)|0;Af=ue;c[Af>>2]=yf;c[Af+4>>2]=C;break}}while(0);if(c[(c[pf>>2]|0)+12>>2]|0){if(c[(c[lf>>2]|0)+176>>2]|0){c[Hc>>2]=c[(c[lf>>2]|0)+176>>2];while(1){if(!(c[(c[Hc>>2]|0)+4>>2]|0))break;c[Hc>>2]=c[(c[Hc>>2]|0)+4>>2]}c[Xc>>2]=(c[(c[Hc>>2]|0)+16>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0)}else c[Xc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);wx(c[Xc>>2]|0)|0;Af=c[Xc>>2]|0;if((c[Af>>2]|0)==-1?(c[Af+4>>2]|0)==2147483647:0){k=542;break c}if((d[(c[Hb>>2]|0)+5>>0]|0)>>>1&1){k=542;break c}f=ue;yf=c[f>>2]|0;f=c[f+4>>2]|0;Af=c[Xc>>2]|0;Af=gR(c[Af>>2]|0,c[Af+4>>2]|0,1,0)|0;j=C;if((f|0)<(j|0)|(f|0)==(j|0)&yf>>>0>>0){yf=c[Xc>>2]|0;yf=gR(c[yf>>2]|0,c[yf+4>>2]|0,1,0)|0;Af=ue;c[Af>>2]=yf;c[Af+4>>2]=C}j=ue;yf=c[j+4>>2]|0;Af=c[Xc>>2]|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf}if((d[(c[Hb>>2]|0)+5>>0]|0)>>>1&1){c[D>>2]=0;do{Sd(8,ue);j=ue;Af=c[j+4>>2]&1073741823;yf=ue;c[yf>>2]=c[j>>2];c[yf+4>>2]=Af;yf=ue;yf=gR(c[yf>>2]|0,c[yf+4>>2]|0,1,0)|0;Af=ue;c[Af>>2]=yf;c[Af+4>>2]=C;Af=ue;Af=eF(c[(c[Hb>>2]|0)+16>>2]|0,0,c[Af>>2]|0,c[Af+4>>2]|0,0,Zd)|0;c[rf>>2]=Af;if(!((Af|0)==0&(c[Zd>>2]|0)==0))break;Af=(c[D>>2]|0)+1|0;c[D>>2]=Af}while((Af|0)<100);if((c[rf>>2]|0)==0&(c[Zd>>2]|0)==0){k=551;break c}}a[(c[Hb>>2]|0)+3>>0]=0;c[(c[Hb>>2]|0)+56>>2]=0;j=ue;yf=c[j+4>>2]|0;Af=c[id>>2]|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;break}case 84:case 75:{c[yc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);c[Ib>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];g=c[(c[pf>>2]|0)+12>>2]|0;if((d[c[pf>>2]>>0]|0)==75){c[Rc>>2]=(c[l>>2]|0)+(g*40|0);j=c[Rc>>2]|0;yf=c[j+4>>2]|0;Af=oa;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf}else{Af=oa;c[Af>>2]=g;c[Af+4>>2]=((g|0)<0)<<31>>31}if(d[(c[pf>>2]|0)+3>>0]&1){Af=(c[lf>>2]|0)+92|0;c[Af>>2]=(c[Af>>2]|0)+1}if(d[(c[pf>>2]|0)+3>>0]&2){yf=oa;j=c[yf>>2]|0;yf=c[yf+4>>2]|0;Af=nf;c[Af>>2]=j;c[Af+4>>2]=yf;Af=(c[mf>>2]|0)+32|0;c[Af>>2]=j;c[Af+4>>2]=yf}if(e[(c[yc>>2]|0)+8>>1]&1){c[(c[yc>>2]|0)+16>>2]=0;c[(c[yc>>2]|0)+12>>2]=0}if(d[(c[pf>>2]|0)+3>>0]&16)g=c[(c[Ib>>2]|0)+28>>2]|0;else g=0;c[le>>2]=g;if(e[(c[yc>>2]|0)+8>>1]&16384)c[hb>>2]=c[c[yc>>2]>>2];else c[hb>>2]=0;Af=oa;c[rf>>2]=CI(c[(c[Ib>>2]|0)+16>>2]|0,0,c[Af>>2]|0,c[Af+4>>2]|0,c[(c[yc>>2]|0)+16>>2]|0,c[(c[yc>>2]|0)+12>>2]|0,c[hb>>2]|0,(d[(c[pf>>2]|0)+3>>0]&8|0)!=0&1,c[le>>2]|0)|0;a[(c[Ib>>2]|0)+3>>0]=0;c[(c[Ib>>2]|0)+56>>2]=0;if(((c[rf>>2]|0)==0?(c[(c[mf>>2]|0)+212>>2]|0)!=0:0)?(c[(c[pf>>2]|0)+16>>2]|0)!=0:0){c[Ze>>2]=c[(c[(c[mf>>2]|0)+16>>2]|0)+(a[(c[Ib>>2]|0)+1>>0]<<4)>>2];c[jf>>2]=c[(c[pf>>2]|0)+16>>2];c[ob>>2]=(d[(c[pf>>2]|0)+3>>0]&4|0)!=0?23:18;Af=oa;Xb[c[(c[mf>>2]|0)+212>>2]&255](c[(c[mf>>2]|0)+208>>2]|0,c[ob>>2]|0,c[Ze>>2]|0,c[jf>>2]|0,c[Af>>2]|0,c[Af+4>>2]|0)}break}case 95:{c[Jb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];if((c[(c[mf>>2]|0)+212>>2]|0)!=0?(c[(c[pf>>2]|0)+16>>2]|0)!=0:0)g=(d[(c[Jb>>2]|0)+4>>0]|0)!=0;else g=0;a[R>>0]=g&1;if((d[(c[pf>>2]|0)+3>>0]|0)!=0?(d[R>>0]|0)!=0:0)sH(c[(c[Jb>>2]|0)+16>>2]|0,(c[Jb>>2]|0)+40|0)|0;c[rf>>2]=DI(c[(c[Jb>>2]|0)+16>>2]|0,a[(c[pf>>2]|0)+3>>0]|0)|0;c[(c[Jb>>2]|0)+56>>2]=0;if((c[rf>>2]|0)==0?(d[R>>0]|0)!=0:0){Af=(c[Jb>>2]|0)+40|0;Xb[c[(c[mf>>2]|0)+212>>2]&255](c[(c[mf>>2]|0)+208>>2]|0,9,c[(c[(c[mf>>2]|0)+16>>2]|0)+(a[(c[Jb>>2]|0)+1>>0]<<4)>>2]|0,c[(c[pf>>2]|0)+16>>2]|0,c[Af>>2]|0,c[Af+4>>2]|0)}if(c[(c[pf>>2]|0)+8>>2]&1){Af=(c[lf>>2]|0)+92|0;c[Af>>2]=(c[Af>>2]|0)+1}break}case 98:{QH(c[mf>>2]|0,c[(c[lf>>2]|0)+92>>2]|0);c[(c[lf>>2]|0)+92>>2]=0;break}case 99:{c[Kb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[Qc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);c[ab>>2]=c[(c[pf>>2]|0)+16>>2];c[_d>>2]=0;c[rf>>2]=EI(c[Kb>>2]|0,c[Qc>>2]|0,c[ab>>2]|0,_d)|0;if(c[_d>>2]|0)k=15;break}case 100:{c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);c[Lb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[rf>>2]=FI(c[Lb>>2]|0,c[id>>2]|0)|0;c[(c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+12>>2]<<2)>>2]|0)+56>>2]=0;break}case 102:case 101:{c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);c[Mb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[ic>>2]=c[(c[Mb>>2]|0)+16>>2];g=c[ic>>2]|0;if(d[(c[Mb>>2]|0)+4>>0]|0){fI(g,Ka)|0;if((c[Ka>>2]|0)>>>0>(c[(c[mf>>2]|0)+88>>2]|0)>>>0){k=859;break c}}else{sH(g,La)|0;yf=La;f=c[yf+4>>2]|0;Af=c[(c[mf>>2]|0)+88>>2]|0;j=((Af|0)<0)<<31>>31;if((f|0)>(j|0)|((f|0)==(j|0)?(c[yf>>2]|0)>>>0>Af>>>0:0)){k=859;break c}c[Ka>>2]=c[La>>2]}if(tx(c[id>>2]|0,(c[Ka>>2]|0)>>>0>32?c[Ka>>2]|0:32)|0){k=860;break a}c[(c[id>>2]|0)+12>>2]=c[Ka>>2];b[(c[id>>2]|0)+8>>1]=e[(c[id>>2]|0)+8>>1]&-49664|16;g=c[ic>>2]|0;f=c[Ka>>2]|0;j=c[(c[id>>2]|0)+16>>2]|0;if(!(d[(c[Mb>>2]|0)+4>>0]|0))c[rf>>2]=tH(g,0,f,j)|0;else c[rf>>2]=Mh(g,0,f,j)|0;a[(c[id>>2]|0)+10>>0]=1;break}case 103:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;c[Nb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];if(a[(c[Nb>>2]|0)+2>>0]|0){b[(c[id>>2]|0)+8>>1]=1;break d}g=c[Nb>>2]|0;do if(!(a[(c[Nb>>2]|0)+3>>0]|0)){f=c[Nb>>2]|0;if((d[g>>0]|0)==2){c[wd>>2]=c[c[f+16>>2]>>2];c[ad>>2]=c[c[wd>>2]>>2];c[rf>>2]=Yb[c[(c[ad>>2]|0)+48>>2]&255](c[(c[Nb>>2]|0)+16>>2]|0,xe)|0;GI(c[lf>>2]|0,c[wd>>2]|0);break}c[rf>>2]=HI(f)|0;if(c[rf>>2]|0){k=861;break c}if(a[(c[Nb>>2]|0)+2>>0]|0){b[(c[id>>2]|0)+8>>1]=1;break d}else{c[rf>>2]=sH(c[(c[Nb>>2]|0)+16>>2]|0,xe)|0;break}}else{j=g+40|0;yf=c[j+4>>2]|0;Af=xe;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf}while(0);j=xe;yf=c[j+4>>2]|0;Af=c[id>>2]|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;break}case 104:{c[Pb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];a[(c[Pb>>2]|0)+2>>0]=1;c[(c[Pb>>2]|0)+56>>2]=0;if(!(d[c[Pb>>2]>>0]|0))pB(c[(c[Pb>>2]|0)+16>>2]|0);break}case 105:{c[Qb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[jc>>2]=c[(c[Qb>>2]|0)+16>>2];c[$d>>2]=0;c[rf>>2]=BI(c[jc>>2]|0,$d)|0;a[(c[Qb>>2]|0)+2>>0]=c[$d>>2];a[(c[Qb>>2]|0)+3>>0]=0;c[(c[Qb>>2]|0)+56>>2]=0;c[(c[Qb>>2]|0)+28>>2]=c[(c[pf>>2]|0)+12>>2];if((c[$d>>2]|0)!=0?(c[(c[pf>>2]|0)+8>>2]|0)>0:0)k=15;break}case 107:case 106:{k=(c[lf>>2]|0)+108+8|0;c[k>>2]=(c[k>>2]|0)+1;k=609;break}case 108:{k=609;break}case 3:{c[Vb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[ce>>2]=0;c[rf>>2]=KI(c[mf>>2]|0,c[Vb>>2]|0,ce)|0;k=616;break}case 5:case 4:{if(c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2]|0)k=615;break}case 7:case 6:{k=615;break}case 110:case 109:{c[_b>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[Pc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);if(d[(c[pf>>2]|0)+3>>0]&1){Af=(c[lf>>2]|0)+92|0;c[Af>>2]=(c[Af>>2]|0)+1}if(e[(c[Pc>>2]|0)+8>>1]&16384)g=Vg(c[Pc>>2]|0)|0;else g=0;c[rf>>2]=g;if(!(c[rf>>2]|0)){if((d[c[pf>>2]>>0]|0)==109){c[rf>>2]=LI(c[_b>>2]|0,c[Pc>>2]|0)|0;break d}c[$a>>2]=c[(c[Pc>>2]|0)+12>>2];c[cf>>2]=c[(c[Pc>>2]|0)+16>>2];g=c[$a>>2]|0;if(d[(c[pf>>2]|0)+3>>0]&16)f=c[(c[_b>>2]|0)+28>>2]|0;else f=0;c[rf>>2]=CI(c[(c[_b>>2]|0)+16>>2]|0,c[cf>>2]|0,g,((g|0)<0)<<31>>31,19266,0,0,c[(c[pf>>2]|0)+12>>2]|0,f)|0;c[(c[_b>>2]|0)+56>>2]=0}break}case 111:{c[$b>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[lc>>2]=c[(c[$b>>2]|0)+16>>2];c[Md>>2]=c[(c[$b>>2]|0)+24>>2];b[Md+8>>1]=c[(c[pf>>2]|0)+12>>2];a[Md+10>>0]=0;c[Md+4>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);c[rf>>2]=eF(c[lc>>2]|0,Md,0,0,0,de)|0;if((c[rf>>2]|0)==0&(c[de>>2]|0)==0)c[rf>>2]=DI(c[lc>>2]|0,4)|0;c[(c[$b>>2]|0)+56>>2]=0;break}case 113:case 112:{c[ac>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[rf>>2]=HI(c[ac>>2]|0)|0;if(c[rf>>2]|0){k=861;break c}if(a[(c[ac>>2]|0)+2>>0]|0){fh((c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0)|0);break d}Af=ge;c[Af>>2]=0;c[Af+4>>2]=0;c[rf>>2]=MI(c[mf>>2]|0,c[(c[ac>>2]|0)+16>>2]|0,ge)|0;if(c[rf>>2]|0){k=861;break c}if((d[c[pf>>2]>>0]|0)==112){c[qd>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+12>>2]<<2)>>2];a[(c[qd>>2]|0)+2>>0]=0;j=ge;yf=c[j+4>>2]|0;Af=(c[qd>>2]|0)+40|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;a[(c[qd>>2]|0)+3>>0]=1;c[(c[qd>>2]|0)+52>>2]=c[(c[pf>>2]|0)+16>>2];c[(c[qd>>2]|0)+48>>2]=c[ac>>2];break d}else{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;j=ge;yf=c[j+4>>2]|0;Af=c[id>>2]|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;b[(c[id>>2]|0)+8>>1]=4;break d}}case 117:case 116:case 115:case 114:{c[bc>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[Nd>>2]=c[(c[bc>>2]|0)+24>>2];b[Nd+8>>1]=c[(c[pf>>2]|0)+16>>2];g=Nd+10|0;if((d[c[pf>>2]>>0]|0)<116)a[g>>0]=-1;else a[g>>0]=0;c[Nd+4>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);c[ee>>2]=0;c[rf>>2]=NI(c[mf>>2]|0,c[bc>>2]|0,Nd,ee)|0;g=c[ee>>2]|0;if(!(d[c[pf>>2]>>0]&1))c[ee>>2]=0-g;else c[ee>>2]=g+1;if((c[ee>>2]|0)>0)k=15;break}case 118:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;b[(c[id>>2]|0)+8>>1]=1;if((c[(c[mf>>2]|0)+152>>2]|0)>((c[(c[mf>>2]|0)+164>>2]|0)+1|0)){c[rf>>2]=6;a[(c[lf>>2]|0)+86>>0]=2;break d}c[ja>>2]=c[(c[pf>>2]|0)+12>>2];c[ra>>2]=0;c[rf>>2]=OI(c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[ja>>2]<<4)+4>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,ra)|0;b[(c[id>>2]|0)+8>>1]=4;yf=c[ra>>2]|0;Af=c[id>>2]|0;c[Af>>2]=yf;c[Af+4>>2]=((yf|0)<0)<<31>>31;if((c[rf>>2]|0)==0&(c[ra>>2]|0)!=0){PI(c[mf>>2]|0,c[ja>>2]|0,c[ra>>2]|0,c[(c[pf>>2]|0)+4>>2]|0);a[fe>>0]=(c[ja>>2]|0)+1}break}case 119:{c[Ta>>2]=0;c[rf>>2]=QI(c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[(c[pf>>2]|0)+8>>2]<<4)+4>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,(c[(c[pf>>2]|0)+12>>2]|0)!=0?Ta:0)|0;if((c[(c[pf>>2]|0)+12>>2]|0)!=0?(Af=(c[lf>>2]|0)+92|0,c[Af>>2]=(c[Af>>2]|0)+(c[Ta>>2]|0),(c[(c[pf>>2]|0)+12>>2]|0)>0):0){yf=c[Ta>>2]|0;Af=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0)|0;j=Af;yf=gR(c[j>>2]|0,c[j+4>>2]|0,yf|0,((yf|0)<0)<<31>>31|0)|0;c[Af>>2]=yf;c[Af+4>>2]=C}break}case 120:{c[cc>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];if((d[c[cc>>2]>>0]|0)==1){RI(c[mf>>2]|0,c[(c[cc>>2]|0)+16>>2]|0);break d}else{c[rf>>2]=SI(c[(c[cc>>2]|0)+16>>2]|0)|0;break d}}case 122:case 121:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;c[Id>>2]=0;c[Cc>>2]=(c[(c[mf>>2]|0)+16>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<4);if((d[c[pf>>2]>>0]|0)==122)c[Q>>2]=1;else c[Q>>2]=2;c[rf>>2]=wI(c[(c[Cc>>2]|0)+4>>2]|0,Id,c[Q>>2]|0)|0;yf=c[Id>>2]|0;Af=c[id>>2]|0;c[Af>>2]=yf;c[Af+4>>2]=((yf|0)<0)<<31>>31;break}case 123:{c[ka>>2]=c[(c[pf>>2]|0)+4>>2];c[df>>2]=(c[ka>>2]|0)==1?20769:20788;c[za>>2]=c[mf>>2];c[za+8>>2]=c[(c[pf>>2]|0)+4>>2];c[za+4>>2]=(c[lf>>2]|0)+44;Af=c[mf>>2]|0;j=c[df>>2]|0;yf=c[(c[pf>>2]|0)+16>>2]|0;c[Ge>>2]=c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[ka>>2]<<4)>>2];c[Ge+4>>2]=j;c[Ge+8>>2]=yf;c[gf>>2]=Bh(Af,41084,Ge)|0;if(!(c[gf>>2]|0))c[rf>>2]=7;else{a[(c[mf>>2]|0)+140+5>>0]=1;c[za+12>>2]=0;c[rf>>2]=$e(c[mf>>2]|0,c[gf>>2]|0,140,za,0)|0;if(!(c[rf>>2]|0))c[rf>>2]=c[za+12>>2];Sf(c[mf>>2]|0,c[gf>>2]|0);a[(c[mf>>2]|0)+140+5>>0]=0}if(c[rf>>2]|0)zg(c[mf>>2]|0);if((c[rf>>2]|0)==7){k=860;break a}break}case 124:{c[rf>>2]=Aj(c[mf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0)|0;break}case 125:{TI(c[mf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,c[(c[pf>>2]|0)+16>>2]|0);break}case 126:{UI(c[mf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,c[(c[pf>>2]|0)+16>>2]|0);break}case 127:{VI(c[mf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,c[(c[pf>>2]|0)+16>>2]|0);break}case 128:{c[eb>>2]=c[(c[pf>>2]|0)+8>>2];c[q>>2]=Fw(c[mf>>2]|0,(c[eb>>2]|0)+1<<2,0)|0;if(!(c[q>>2]|0)){k=860;break a}c[Jd>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[Ea>>2]=0;while(1){g=c[Ea>>2]|0;if((c[Ea>>2]|0)>=(c[eb>>2]|0))break;Af=Zg((c[Oc>>2]|0)+(g*40|0)|0)|0;c[(c[q>>2]|0)+(c[Ea>>2]<<2)>>2]=Af;c[Ea>>2]=(c[Ea>>2]|0)+1}c[(c[q>>2]|0)+(g<<2)>>2]=0;c[Te>>2]=WI(c[(c[(c[mf>>2]|0)+16>>2]|0)+(d[(c[pf>>2]|0)+3>>0]<<4)+4>>2]|0,c[q>>2]|0,c[eb>>2]|0,c[c[Jd>>2]>>2]|0,Wa)|0;Sf(c[mf>>2]|0,c[q>>2]|0);yf=c[Wa>>2]|0;Af=c[Jd>>2]|0;j=Af;yf=fR(c[j>>2]|0,c[j+4>>2]|0,yf|0,((yf|0)<0)<<31>>31|0)|0;c[Af>>2]=yf;c[Af+4>>2]=C;fh(c[Oc>>2]|0);if(c[Wa>>2]|0){if(!(c[Te>>2]|0)){k=860;break a}dh(c[Oc>>2]|0,c[Te>>2]|0,-1,1,148)|0}Zt(c[Oc>>2]|0,d[H>>0]|0)|0;break}case 129:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[Pc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);if((e[(c[Oc>>2]|0)+8>>1]&32|0)==0?(XI(c[Oc>>2]|0),(e[(c[Oc>>2]|0)+8>>1]&32|0)==0):0){k=860;break a}Af=c[Pc>>2]|0;YI(c[c[Oc>>2]>>2]|0,c[Af>>2]|0,c[Af+4>>2]|0);break}case 130:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);if((e[(c[Oc>>2]|0)+8>>1]&32|0)!=0?(ZI(c[c[Oc>>2]>>2]|0,ye)|0)!=0:0){k=ye;eh((c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0)|0,c[k>>2]|0,c[k+4>>2]|0);k=9;break d}fh(c[Oc>>2]|0);k=8;break}case 131:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[Qc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);c[va>>2]=c[(c[pf>>2]|0)+16>>2];if((e[(c[Oc>>2]|0)+8>>1]&32|0)==0?(XI(c[Oc>>2]|0),(e[(c[Oc>>2]|0)+8>>1]&32|0)==0):0){k=860;break a}if((c[va>>2]|0)!=0?(Af=c[Qc>>2]|0,c[J>>2]=_I(c[c[Oc>>2]>>2]|0,c[va>>2]|0,c[Af>>2]|0,c[Af+4>>2]|0)|0,(c[J>>2]|0)!=0):0){k=15;break d}if((c[va>>2]|0)>=0){Af=c[Qc>>2]|0;YI(c[c[Oc>>2]>>2]|0,c[Af>>2]|0,c[Af+4>>2]|0)}break}case 132:{c[kd>>2]=c[(c[pf>>2]|0)+16>>2];c[od>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);if(a[(c[pf>>2]|0)+3>>0]|0){c[oe>>2]=c[(c[kd>>2]|0)+20>>2];c[Ic>>2]=c[(c[lf>>2]|0)+176>>2];while(1){if(!(c[Ic>>2]|0))break;if((c[(c[Ic>>2]|0)+28>>2]|0)==(c[oe>>2]|0))break;c[Ic>>2]=c[(c[Ic>>2]|0)+4>>2]}if(c[Ic>>2]|0)break d}if((c[(c[lf>>2]|0)+184>>2]|0)>=(c[(c[mf>>2]|0)+88+40>>2]|0)){c[rf>>2]=1;SH(c[lf>>2]|0,41148,He);break d}i:do if(!(e[(c[od>>2]|0)+8>>1]&64)){c[bb>>2]=(c[(c[kd>>2]|0)+8>>2]|0)+(c[(c[kd>>2]|0)+12>>2]|0);c[Sa>>2]=80+((c[bb>>2]|0)*40|0)+(c[(c[kd>>2]|0)+12>>2]<<2)+(c[(c[kd>>2]|0)+16>>2]|0);Af=c[Sa>>2]|0;c[Ic>>2]=ph(c[mf>>2]|0,Af,((Af|0)<0)<<31>>31)|0;if(!(c[Ic>>2]|0)){k=860;break a}Ug(c[od>>2]|0);b[(c[od>>2]|0)+8>>1]=64;c[c[od>>2]>>2]=c[Ic>>2];c[c[Ic>>2]>>2]=c[lf>>2];c[(c[Ic>>2]|0)+60>>2]=c[bb>>2];c[(c[Ic>>2]|0)+64>>2]=c[(c[kd>>2]|0)+12>>2];c[(c[Ic>>2]|0)+44>>2]=((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0;c[(c[Ic>>2]|0)+16>>2]=c[(c[lf>>2]|0)+8>>2];c[(c[Ic>>2]|0)+52>>2]=c[(c[lf>>2]|0)+28>>2];c[(c[Ic>>2]|0)+24>>2]=c[(c[lf>>2]|0)+56>>2];c[(c[Ic>>2]|0)+40>>2]=c[(c[lf>>2]|0)+36>>2];c[(c[Ic>>2]|0)+8>>2]=c[(c[lf>>2]|0)+4>>2];c[(c[Ic>>2]|0)+48>>2]=c[(c[lf>>2]|0)+32>>2];c[(c[Ic>>2]|0)+28>>2]=c[(c[kd>>2]|0)+20>>2];c[(c[Ic>>2]|0)+20>>2]=c[(c[lf>>2]|0)+200>>2];c[(c[Ic>>2]|0)+56>>2]=c[(c[lf>>2]|0)+196>>2];c[Fc>>2]=(c[Ic>>2]|0)+80+((c[(c[Ic>>2]|0)+60>>2]|0)*40|0);c[Yc>>2]=(c[Ic>>2]|0)+80;while(1){if((c[Yc>>2]|0)==(c[Fc>>2]|0))break i;b[(c[Yc>>2]|0)+8>>1]=128;c[(c[Yc>>2]|0)+32>>2]=c[mf>>2];c[Yc>>2]=(c[Yc>>2]|0)+40}}else c[Ic>>2]=c[c[od>>2]>>2];while(0);j=(c[lf>>2]|0)+184|0;c[j>>2]=(c[j>>2]|0)+1;c[(c[Ic>>2]|0)+4>>2]=c[(c[lf>>2]|0)+176>>2];j=nf;yf=c[j+4>>2]|0;Af=(c[Ic>>2]|0)+32|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;c[(c[Ic>>2]|0)+68>>2]=c[(c[lf>>2]|0)+92>>2];c[(c[Ic>>2]|0)+72>>2]=c[(c[c[lf>>2]>>2]|0)+80>>2];c[(c[lf>>2]|0)+92>>2]=0;c[(c[lf>>2]|0)+176>>2]=c[Ic>>2];Af=(c[Ic>>2]|0)+80+-40|0;c[l>>2]=Af;c[(c[lf>>2]|0)+8>>2]=Af;c[(c[lf>>2]|0)+28>>2]=c[(c[Ic>>2]|0)+60>>2];c[(c[lf>>2]|0)+36>>2]=c[(c[Ic>>2]|0)+64>>2]&65535;c[(c[lf>>2]|0)+56>>2]=(c[l>>2]|0)+(((c[(c[lf>>2]|0)+28>>2]|0)+1|0)*40|0);Af=c[c[kd>>2]>>2]|0;c[n>>2]=Af;c[(c[lf>>2]|0)+4>>2]=Af;c[(c[lf>>2]|0)+32>>2]=c[(c[kd>>2]|0)+4>>2];c[(c[lf>>2]|0)+200>>2]=(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[lf>>2]|0)+36>>2]<<2);c[(c[lf>>2]|0)+196>>2]=c[(c[kd>>2]|0)+16>>2];c[pf>>2]=(c[n>>2]|0)+-20;kR(c[(c[lf>>2]|0)+200>>2]|0,0,c[(c[lf>>2]|0)+196>>2]|0)|0;break}case 134:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;c[Jc>>2]=c[(c[lf>>2]|0)+176>>2];c[Nc>>2]=(c[(c[Jc>>2]|0)+16>>2]|0)+(((c[(c[pf>>2]|0)+4>>2]|0)+(c[(c[(c[Jc>>2]|0)+8>>2]|0)+((c[(c[Jc>>2]|0)+44>>2]|0)*20|0)+4>>2]|0)|0)*40|0);BF(c[id>>2]|0,c[Nc>>2]|0,4096);break}case 135:{g=c[pf>>2]|0;if(c[(c[mf>>2]|0)+24>>2]&16777216){yf=c[g+8>>2]|0;Af=(c[mf>>2]|0)+520|0;j=Af;yf=gR(c[j>>2]|0,c[j+4>>2]|0,yf|0,((yf|0)<0)<<31>>31|0)|0;c[Af>>2]=yf;c[Af+4>>2]=C;break d}f=c[(c[pf>>2]|0)+8>>2]|0;j=((f|0)<0)<<31>>31;if(c[g+4>>2]|0){Af=(c[mf>>2]|0)+512|0;yf=Af;yf=gR(c[yf>>2]|0,c[yf+4>>2]|0,f|0,j|0)|0;c[Af>>2]=yf;c[Af+4>>2]=C;break d}else{Af=(c[lf>>2]|0)+144|0;yf=Af;yf=gR(c[yf>>2]|0,c[yf+4>>2]|0,f|0,j|0)|0;c[Af>>2]=yf;c[Af+4>>2]=C;break d}}case 136:if(c[(c[pf>>2]|0)+4>>2]|0){Af=(c[mf>>2]|0)+512|0;if(!((c[Af>>2]|0)==0&(c[Af+4>>2]|0)==0))break d;Af=(c[mf>>2]|0)+520|0; -if((c[Af>>2]|0)==0&(c[Af+4>>2]|0)==0){k=15;break d}else break d}else{Af=(c[lf>>2]|0)+144|0;if(!((c[Af>>2]|0)==0&(c[Af+4>>2]|0)==0))break d;Af=(c[mf>>2]|0)+520|0;if((c[Af>>2]|0)==0&(c[Af+4>>2]|0)==0){k=15;break d}else break d}case 137:{if(c[(c[lf>>2]|0)+176>>2]|0){c[Kc>>2]=c[(c[lf>>2]|0)+176>>2];while(1){if(!(c[(c[Kc>>2]|0)+4>>2]|0))break;c[Kc>>2]=c[(c[Kc>>2]|0)+4>>2]}c[Oc>>2]=(c[(c[Kc>>2]|0)+16>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0)}else c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);wx(c[Oc>>2]|0)|0;c[Pc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);wx(c[Pc>>2]|0)|0;yf=c[Oc>>2]|0;f=c[yf+4>>2]|0;Af=c[Pc>>2]|0;j=c[Af+4>>2]|0;if((f|0)<(j|0)|((f|0)==(j|0)?(c[yf>>2]|0)>>>0<(c[Af>>2]|0)>>>0:0)){j=c[Pc>>2]|0;yf=c[j+4>>2]|0;Af=c[Oc>>2]|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf}break}case 138:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);Af=c[Oc>>2]|0;yf=c[Af+4>>2]|0;if((yf|0)>0|(yf|0)==0&(c[Af>>2]|0)>>>0>0){Af=c[(c[pf>>2]|0)+12>>2]|0;k=c[Oc>>2]|0;yf=k;Af=fR(c[yf>>2]|0,c[yf+4>>2]|0,Af|0,((Af|0)<0)<<31>>31|0)|0;c[k>>2]=Af;c[k+4>>2]=C;k=15}break}case 139:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[Qc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;Af=c[Oc>>2]|0;yf=c[Af+4>>2]|0;if((yf|0)<0|(yf|0)==0&(c[Af>>2]|0)>>>0<=0){g=-1;f=-1}else{g=c[Oc>>2]|0;Af=c[Qc>>2]|0;yf=c[Af+4>>2]|0;if((yf|0)>0|(yf|0)==0&(c[Af>>2]|0)>>>0>0){j=c[Qc>>2]|0;f=c[j>>2]|0;j=c[j+4>>2]|0}else{f=0;j=0}g=gR(c[g>>2]|0,c[g+4>>2]|0,f|0,j|0)|0;f=C}Af=c[id>>2]|0;c[Af>>2]=g;c[Af+4>>2]=f;break}case 140:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);Af=c[Oc>>2]|0;if((c[Af>>2]|0)!=0|(c[Af+4>>2]|0)!=0){Af=c[(c[pf>>2]|0)+12>>2]|0;k=c[Oc>>2]|0;yf=k;Af=fR(c[yf>>2]|0,c[yf+4>>2]|0,Af|0,((Af|0)<0)<<31>>31|0)|0;c[k>>2]=Af;c[k+4>>2]=C;k=15}break}case 141:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);Af=c[Oc>>2]|0;yf=Af;yf=gR(c[yf>>2]|0,c[yf+4>>2]|0,-1,-1)|0;c[Af>>2]=yf;c[Af+4>>2]=C;Af=c[Oc>>2]|0;if((c[Af>>2]|0)==0&(c[Af+4>>2]|0)==0)k=15;break}case 142:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);j=c[Oc>>2]|0;Af=j;yf=c[Af>>2]|0;Af=c[Af+4>>2]|0;f=gR(yf|0,Af|0,1,0)|0;c[j>>2]=f;c[j+4>>2]=C;if((yf|0)==0&(Af|0)==0)k=15;break}case 143:{c[Na>>2]=d[(c[pf>>2]|0)+3>>0];c[oc>>2]=Fw(c[mf>>2]|0,32+((c[Na>>2]|0)-1<<2)|0,0)|0;if(!(c[oc>>2]|0)){k=860;break a}c[(c[oc>>2]|0)+8>>2]=0;c[(c[oc>>2]|0)+4>>2]=c[(c[pf>>2]|0)+16>>2];c[(c[oc>>2]|0)+16>>2]=((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0;c[(c[oc>>2]|0)+12>>2]=c[lf>>2];a[(c[oc>>2]|0)+26>>0]=c[Na>>2];a[(c[pf>>2]|0)+1>>0]=-20;c[(c[pf>>2]|0)+16>>2]=c[oc>>2];a[c[pf>>2]>>0]=-112;k=740;break}case 144:{k=740;break}case 145:{c[_c>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[rf>>2]=EF(c[_c>>2]|0,c[(c[pf>>2]|0)+16>>2]|0)|0;if(c[rf>>2]|0){Af=c[lf>>2]|0;c[Je>>2]=ae(c[_c>>2]|0)|0;SH(Af,19255,Je)}Zt(c[_c>>2]|0,d[H>>0]|0)|0;if(VH(c[_c>>2]|0)|0){k=859;break c}break}case 8:{c[p>>2]=0;c[p+8>>2]=-1;c[p+4>>2]=-1;c[rf>>2]=ki(c[mf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,c[(c[pf>>2]|0)+8>>2]|0,p+4|0,p+8|0)|0;if((c[rf>>2]|0)==5){c[rf>>2]=0;c[p>>2]=1}c[aa>>2]=0;c[$c>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);while(1){if((c[aa>>2]|0)>=3)break d;Af=c[p+(c[aa>>2]<<2)>>2]|0;eh(c[$c>>2]|0,Af,((Af|0)<0)<<31>>31);c[aa>>2]=(c[aa>>2]|0)+1;c[$c>>2]=(c[$c>>2]|0)+40}}case 9:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;c[F>>2]=c[(c[pf>>2]|0)+12>>2];c[Ab>>2]=c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<4)+4>>2];c[jd>>2]=Of(c[Ab>>2]|0)|0;c[G>>2]=qg(c[jd>>2]|0)|0;if((c[F>>2]|0)==-1)c[F>>2]=c[G>>2];if(!($I(c[jd>>2]|0)|0))c[F>>2]=c[G>>2];c[af>>2]=Fi(c[jd>>2]|0,1)|0;do if((c[F>>2]|0)==5){if((If(c[af>>2]|0)|0)!=0?(aJ(c[jd>>2]|0)|0)!=0:0)break;c[F>>2]=c[G>>2]}while(0);do if((c[F>>2]|0)!=(c[G>>2]|0)?(c[G>>2]|0)==5|(c[F>>2]|0)==5:0){if((a[(c[mf>>2]|0)+63>>0]|0)!=0?(c[(c[mf>>2]|0)+152>>2]|0)<=1:0){if((c[G>>2]|0)==5){c[rf>>2]=bJ(c[jd>>2]|0)|0;if(!(c[rf>>2]|0))cJ(c[jd>>2]|0,c[F>>2]|0)|0}else if((c[G>>2]|0)==4)cJ(c[jd>>2]|0,2)|0;if(c[rf>>2]|0)break;c[rf>>2]=Ag(c[Ab>>2]|0,(c[F>>2]|0)==5?2:1)|0;break}c[rf>>2]=1;Af=c[lf>>2]|0;c[Ke>>2]=(c[F>>2]|0)==5?41185:41190;SH(Af,41197,Ke);break d}while(0);if(c[rf>>2]|0)c[F>>2]=c[G>>2];c[F>>2]=cJ(c[jd>>2]|0,c[F>>2]|0)|0;b[(c[id>>2]|0)+8>>1]=2562;Af=RB(c[F>>2]|0)|0;c[(c[id>>2]|0)+16>>2]=Af;Af=If(c[(c[id>>2]|0)+16>>2]|0)|0;c[(c[id>>2]|0)+12>>2]=Af;a[(c[id>>2]|0)+10>>0]=1;Zt(c[id>>2]|0,d[H>>0]|0)|0;break}case 10:{c[rf>>2]=dJ((c[lf>>2]|0)+44|0,c[mf>>2]|0)|0;break}case 146:{c[Bb>>2]=c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<4)+4>>2];c[rf>>2]=eJ(c[Bb>>2]|0)|0;if((c[rf>>2]|0)==101){c[rf>>2]=0;k=15}break}case 147:if(c[(c[pf>>2]|0)+4>>2]|0){Af=(c[lf>>2]|0)+88|0;b[Af>>1]=b[Af>>1]&-9|8;break d}else{Oh(c[mf>>2]|0);break d}case 148:{a[Ca>>0]=c[(c[pf>>2]|0)+12>>2];if((d[Ca>>0]|0)==0?0!=(c[(c[mf>>2]|0)+24>>2]&16384|0):0)break d;c[qb>>2]=c[(c[pf>>2]|0)+4>>2];c[rf>>2]=fJ(c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[qb>>2]<<4)+4>>2]|0,c[(c[pf>>2]|0)+8>>2]|0,a[Ca>>0]|0)|0;if((c[rf>>2]&255|0)==6){c[Ue>>2]=c[(c[pf>>2]|0)+16>>2];Af=c[lf>>2]|0;c[Le>>2]=c[Ue>>2];SH(Af,41249,Le)}break}case 149:{c[ud>>2]=c[(c[pf>>2]|0)+16>>2];c[rf>>2]=gJ(c[mf>>2]|0,c[ud>>2]|0)|0;if(c[ud>>2]|0)GI(c[lf>>2]|0,c[(c[ud>>2]|0)+8>>2]|0);break}case 150:{g=ke;f=g+40|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(f|0));c[ke+32>>2]=c[mf>>2];c[rf>>2]=gh(ke,(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0)|0)|0;c[hf>>2]=ae(ke)|0;if(c[hf>>2]|0)c[rf>>2]=hJ(c[mf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,c[hf>>2]|0,(c[lf>>2]|0)+44|0)|0;Ug(ke);break}case 151:{Af=(c[mf>>2]|0)+164|0;c[Af>>2]=(c[Af>>2]|0)+1;c[rf>>2]=iJ(c[mf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,c[(c[pf>>2]|0)+16>>2]|0)|0;Af=(c[mf>>2]|0)+164|0;c[Af>>2]=(c[Af>>2]|0)+-1;break}case 152:{c[rc>>2]=0;c[sd>>2]=0;c[xd>>2]=c[(c[(c[pf>>2]|0)+16>>2]|0)+8>>2];if((c[xd>>2]|0)!=0?(c[c[xd>>2]>>2]|0)!=0:0){c[bd>>2]=c[c[xd>>2]>>2];c[rf>>2]=Yb[c[(c[bd>>2]|0)+24>>2]&255](c[xd>>2]|0,sd)|0;GI(c[lf>>2]|0,c[xd>>2]|0);if(c[rf>>2]|0)break d;c[c[sd>>2]>>2]=c[xd>>2];c[rc>>2]=tI(c[lf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,0,-1,2)|0;if(!(c[rc>>2]|0)){k=804;break c}c[(c[rc>>2]|0)+16>>2]=c[sd>>2];Af=(c[xd>>2]|0)+4|0;c[Af>>2]=(c[Af>>2]|0)+1;break d}c[rf>>2]=6;break}case 11:{c[ld>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);c[xb>>2]=(c[ld>>2]|0)+40;c[sc>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[td>>2]=c[(c[sc>>2]|0)+16>>2];c[yd>>2]=c[c[td>>2]>>2];c[cd>>2]=c[c[yd>>2]>>2];c[Oa>>2]=c[c[xb>>2]>>2];c[sa>>2]=c[c[ld>>2]>>2];c[Ud>>2]=0;c[u>>2]=c[(c[lf>>2]|0)+12>>2];c[T>>2]=0;while(1){if((c[T>>2]|0)>=(c[Oa>>2]|0))break;c[(c[u>>2]|0)+(c[T>>2]<<2)>>2]=(c[xb>>2]|0)+(((c[T>>2]|0)+1|0)*40|0);c[T>>2]=(c[T>>2]|0)+1}c[rf>>2]=Zb[c[(c[cd>>2]|0)+32>>2]&255](c[td>>2]|0,c[sa>>2]|0,c[(c[pf>>2]|0)+16>>2]|0,c[Oa>>2]|0,c[u>>2]|0)|0;GI(c[lf>>2]|0,c[yd>>2]|0);if(!(c[rf>>2]|0))c[Ud>>2]=Tb[c[(c[cd>>2]|0)+40>>2]&255](c[td>>2]|0)|0;a[(c[sc>>2]|0)+2>>0]=0;if(c[Ud>>2]|0)k=15;break}case 153:{c[tc>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[Ec>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);if(a[(c[tc>>2]|0)+2>>0]|0){fh(c[Ec>>2]|0);break d}c[zd>>2]=c[c[(c[tc>>2]|0)+16>>2]>>2];c[dd>>2]=c[c[zd>>2]>>2];c[ie>>2]=0;c[ie+4>>2]=0;c[ie+8>>2]=0;c[ie+12>>2]=0;c[ie+16>>2]=0;c[ie+20>>2]=0;c[ie+24>>2]=0;c[ie+28>>2]=0;c[ie>>2]=c[Ec>>2];b[(c[Ec>>2]|0)+8>>1]=e[(c[Ec>>2]|0)+8>>1]&-49664|1;c[rf>>2]=Ob[c[(c[dd>>2]|0)+44>>2]&255](c[(c[tc>>2]|0)+16>>2]|0,ie,c[(c[pf>>2]|0)+8>>2]|0)|0;GI(c[lf>>2]|0,c[zd>>2]|0);if(c[ie+20>>2]|0)c[rf>>2]=c[ie+20>>2];Zt(c[Ec>>2]|0,d[H>>0]|0)|0;if(VH(c[Ec>>2]|0)|0){k=859;break c}break}case 154:{c[Vd>>2]=0;c[uc>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];if(!(a[(c[uc>>2]|0)+2>>0]|0)){c[Ad>>2]=c[c[(c[uc>>2]|0)+16>>2]>>2];c[ed>>2]=c[c[Ad>>2]>>2];c[rf>>2]=Tb[c[(c[ed>>2]|0)+36>>2]&255](c[(c[uc>>2]|0)+16>>2]|0)|0;GI(c[lf>>2]|0,c[Ad>>2]|0);if(!(c[rf>>2]|0))c[Vd>>2]=Tb[c[(c[ed>>2]|0)+40>>2]&255](c[(c[uc>>2]|0)+16>>2]|0)|0;if(c[Vd>>2]|0)k=9;else k=8}break}case 155:{c[Bd>>2]=c[(c[(c[pf>>2]|0)+16>>2]|0)+8>>2];c[gd>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[rf>>2]=Zt(c[gd>>2]|0,1)|0;if(!(c[rf>>2]|0)){c[rf>>2]=Yb[c[(c[c[Bd>>2]>>2]|0)+76>>2]&255](c[Bd>>2]|0,c[(c[gd>>2]|0)+16>>2]|0)|0;GI(c[lf>>2]|0,c[Bd>>2]|0);Af=(c[lf>>2]|0)+88|0;b[Af>>1]=b[Af>>1]&-9}break}case 12:{c[Cd>>2]=c[(c[(c[pf>>2]|0)+16>>2]|0)+8>>2];if((c[Cd>>2]|0)!=0?(c[c[Cd>>2]>>2]|0)!=0:0){c[fd>>2]=c[c[Cd>>2]>>2];c[Pa>>2]=c[(c[pf>>2]|0)+8>>2];if(!(c[(c[fd>>2]|0)+52>>2]|0))break d;a[Re>>0]=a[(c[mf>>2]|0)+70>>0]|0;c[v>>2]=c[(c[lf>>2]|0)+12>>2];c[Ed>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);c[V>>2]=0;while(1){if((c[V>>2]|0)>=(c[Pa>>2]|0))break;c[(c[v>>2]|0)+(c[V>>2]<<2)>>2]=c[Ed>>2];c[Ed>>2]=(c[Ed>>2]|0)+40;c[V>>2]=(c[V>>2]|0)+1}a[(c[mf>>2]|0)+70>>0]=a[(c[pf>>2]|0)+3>>0]|0;c[rf>>2]=Wb[c[(c[fd>>2]|0)+52>>2]&255](c[Cd>>2]|0,c[Pa>>2]|0,c[v>>2]|0,he)|0;a[(c[mf>>2]|0)+70>>0]=a[Re>>0]|0;GI(c[lf>>2]|0,c[Cd>>2]|0);if((c[rf>>2]|0)==0?(c[(c[pf>>2]|0)+4>>2]|0)!=0:0){yf=he;j=c[yf>>2]|0;yf=c[yf+4>>2]|0;Af=nf;c[Af>>2]=j;c[Af+4>>2]=yf;Af=(c[mf>>2]|0)+32|0;c[Af>>2]=j;c[Af+4>>2]=yf}if((c[rf>>2]&255|0)==19?(d[(c[(c[pf>>2]|0)+16>>2]|0)+16>>0]|0)!=0:0){if((d[(c[pf>>2]|0)+3>>0]|0)==4){c[rf>>2]=0;break d}if((d[(c[pf>>2]|0)+3>>0]|0)==5)g=2;else g=d[(c[pf>>2]|0)+3>>0]|0;a[(c[lf>>2]|0)+86>>0]=g;break d}Af=(c[lf>>2]|0)+92|0;c[Af>>2]=(c[Af>>2]|0)+1;break d}c[rf>>2]=6;break}case 156:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;yf=rg(c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<4)+4>>2]|0)|0;Af=c[id>>2]|0;c[Af>>2]=yf;c[Af+4>>2]=0;break}case 157:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;c[zb>>2]=c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<4)+4>>2];c[ib>>2]=0;if((c[(c[pf>>2]|0)+12>>2]|0)!=0?(c[ib>>2]=rg(c[zb>>2]|0)|0,(c[ib>>2]|0)>>>0<(c[(c[pf>>2]|0)+12>>2]|0)>>>0):0)c[ib>>2]=c[(c[pf>>2]|0)+12>>2];yf=jJ(c[zb>>2]|0,c[ib>>2]|0)|0;Af=c[id>>2]|0;c[Af>>2]=yf;c[Af+4>>2]=((yf|0)<0)<<31>>31;break}case 158:{if((c[(c[mf>>2]|0)+176>>2]|0)!=0?((e[(c[lf>>2]|0)+88>>1]|0)>>>9&1|0)==0:0){if(c[(c[pf>>2]|0)+16>>2]|0)g=c[(c[pf>>2]|0)+16>>2]|0;else g=c[(c[lf>>2]|0)+168>>2]|0;c[kf>>2]=g;if(g){c[Ve>>2]=kJ(c[lf>>2]|0,c[kf>>2]|0)|0;Rb[c[(c[mf>>2]|0)+176>>2]&255](c[(c[mf>>2]|0)+180>>2]|0,c[Ve>>2]|0);Sf(c[mf>>2]|0,c[Ve>>2]|0)}}if(c[(c[pf>>2]|0)+8>>2]|0)k=15;break}default:{}}while(0);do if((k|0)==21){k=0;c[qf>>2]=((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0;if(c[(c[pf>>2]|0)+4>>2]|0){k=26;break c}if(!(c[(c[lf>>2]|0)+176>>2]|0)){k=26;break c}c[Gc>>2]=c[(c[lf>>2]|0)+176>>2];c[(c[lf>>2]|0)+176>>2]=c[(c[Gc>>2]|0)+4>>2];j=(c[lf>>2]|0)+184|0;c[j>>2]=(c[j>>2]|0)+-1;QH(c[mf>>2]|0,c[(c[lf>>2]|0)+92>>2]|0);c[qf>>2]=RH(c[Gc>>2]|0)|0;j=(c[mf>>2]|0)+32|0;yf=c[j+4>>2]|0;Af=nf;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;if((c[(c[pf>>2]|0)+8>>2]|0)==4)c[qf>>2]=(c[(c[(c[lf>>2]|0)+4>>2]|0)+((c[qf>>2]|0)*20|0)+8>>2]|0)-1;c[n>>2]=c[(c[lf>>2]|0)+4>>2];c[l>>2]=c[(c[lf>>2]|0)+8>>2];c[pf>>2]=(c[n>>2]|0)+((c[qf>>2]|0)*20|0)}else if((k|0)==50){k=0;c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;b[(c[id>>2]|0)+8>>1]=2562;c[(c[id>>2]|0)+16>>2]=c[(c[pf>>2]|0)+16>>2];c[(c[id>>2]|0)+12>>2]=c[(c[pf>>2]|0)+4>>2];a[(c[id>>2]|0)+10>>0]=a[H>>0]|0;if((a[(c[pf>>2]|0)+3>>0]|0)!=0?(c[Qc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0),Af=c[Qc>>2]|0,(c[Af>>2]|0)!=0|(c[Af+4>>2]|0)!=0):0)b[(c[id>>2]|0)+8>>1]=2576}else if((k|0)==132){k=0;c[nc>>2]=c[(c[pf>>2]|0)+16>>2];c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);j:do if((c[c[nc>>2]>>2]|0)!=(c[id>>2]|0)){c[c[nc>>2]>>2]=c[id>>2];c[X>>2]=(d[(c[nc>>2]|0)+26>>0]|0)-1;while(1){if((c[X>>2]|0)<0)break j;c[(c[nc>>2]|0)+28+(c[X>>2]<<2)>>2]=(c[l>>2]|0)+(((c[(c[pf>>2]|0)+8>>2]|0)+(c[X>>2]|0)|0)*40|0);c[X>>2]=(c[X>>2]|0)+-1}}while(0);b[(c[c[nc>>2]>>2]|0)+8>>1]=e[(c[c[nc>>2]>>2]|0)+8>>1]&-49664|1;a[(c[nc>>2]|0)+25>>0]=0;Af=nf;yf=c[Af+4>>2]|0;j=(c[mf>>2]|0)+32|0;c[j>>2]=c[Af>>2];c[j+4>>2]=yf;Ub[c[(c[(c[nc>>2]|0)+4>>2]|0)+12>>2]&255](c[nc>>2]|0,d[(c[nc>>2]|0)+26>>0]|0,(c[nc>>2]|0)+28|0);j=(c[mf>>2]|0)+32|0;yf=c[j+4>>2]|0;Af=nf;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;if(a[(c[nc>>2]|0)+25>>0]|0){if(c[(c[nc>>2]|0)+20>>2]|0){Af=c[lf>>2]|0;c[Ae>>2]=ae(c[c[nc>>2]>>2]|0)|0;SH(Af,19255,Ae);c[rf>>2]=c[(c[nc>>2]|0)+20>>2]}bI(c[lf>>2]|0,c[(c[nc>>2]|0)+16>>2]|0,c[(c[pf>>2]|0)+4>>2]|0)}if((e[(c[id>>2]|0)+8>>1]&18|0)!=0?(Zt(c[c[nc>>2]>>2]|0,d[H>>0]|0)|0,(VH(c[c[nc>>2]>>2]|0)|0)!=0):0){k=859;break c}}else if((k|0)==438){k=0;if((e[(c[lf>>2]|0)+88>>1]|0)>>>3&1){c[rf>>2]=516;break}c[Ya>>2]=0;c[Tc>>2]=0;c[wb>>2]=c[(c[pf>>2]|0)+8>>2];c[ia>>2]=c[(c[pf>>2]|0)+12>>2];c[Bc>>2]=(c[(c[mf>>2]|0)+16>>2]|0)+(c[ia>>2]<<4);c[Dd>>2]=c[(c[Bc>>2]|0)+4>>2];if((d[c[pf>>2]>>0]|0)==55){c[Se>>2]=4|d[(c[pf>>2]|0)+3>>0]&8;if((d[(c[(c[Bc>>2]|0)+12>>2]|0)+76>>0]|0)<(d[(c[lf>>2]|0)+87>>0]|0))a[(c[lf>>2]|0)+87>>0]=a[(c[(c[Bc>>2]|0)+12>>2]|0)+76>>0]|0}else c[Se>>2]=0;if((d[(c[pf>>2]|0)+3>>0]&16|0)!=0?(c[Pc>>2]=(c[l>>2]|0)+((c[wb>>2]|0)*40|0),wx(c[Pc>>2]|0)|0,c[wb>>2]=c[c[Pc>>2]>>2],(c[wb>>2]|0)<2):0){k=446;break c}g=c[pf>>2]|0;if((a[(c[pf>>2]|0)+1>>0]|0)!=-6){if((a[g+1>>0]|0)==-14)c[Ya>>2]=c[(c[pf>>2]|0)+16>>2]}else{c[Tc>>2]=c[g+16>>2];c[Ya>>2]=(e[(c[Tc>>2]|0)+6>>1]|0)+(e[(c[Tc>>2]|0)+8>>1]|0)}c[qc>>2]=tI(c[lf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,c[Ya>>2]|0,c[ia>>2]|0,0)|0;if(!(c[qc>>2]|0)){k=860;break a}a[(c[qc>>2]|0)+2>>0]=1;k=(c[qc>>2]|0)+5|0;a[k>>0]=a[k>>0]&-5|4;c[(c[qc>>2]|0)+8>>2]=c[wb>>2];c[rf>>2]=uI(c[Dd>>2]|0,c[wb>>2]|0,c[Se>>2]|0,c[Tc>>2]|0,c[(c[qc>>2]|0)+16>>2]|0)|0;c[(c[qc>>2]|0)+24>>2]=c[Tc>>2];a[(c[qc>>2]|0)+4>>0]=(a[(c[pf>>2]|0)+1>>0]|0)!=-6;k=453}else if((k|0)==609){k=0;c[Sb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[be>>2]=1;g=c[Sb>>2]|0;if((d[c[Sb>>2]>>0]|0)==1)c[rf>>2]=II(g,be)|0;else{c[kc>>2]=c[g+16>>2];c[rf>>2]=JI(c[kc>>2]|0,be)|0;a[(c[Sb>>2]|0)+3>>0]=0;c[(c[Sb>>2]|0)+56>>2]=0}a[(c[Sb>>2]|0)+2>>0]=c[be>>2];if(c[be>>2]|0)k=15}else if((k|0)==615){c[Vb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[ce>>2]=c[(c[pf>>2]|0)+12>>2];c[rf>>2]=Yb[c[(c[pf>>2]|0)+16>>2]&255](c[(c[Vb>>2]|0)+16>>2]|0,ce)|0;k=616}else if((k|0)==740){k=0;c[pc>>2]=c[(c[pf>>2]|0)+16>>2];c[Zc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);k:do if((c[(c[pc>>2]|0)+8>>2]|0)!=(c[Zc>>2]|0)){c[(c[pc>>2]|0)+8>>2]=c[Zc>>2];c[_>>2]=(d[(c[pc>>2]|0)+26>>0]|0)-1;while(1){if((c[_>>2]|0)<0)break k;c[(c[pc>>2]|0)+28+(c[_>>2]<<2)>>2]=(c[l>>2]|0)+(((c[(c[pf>>2]|0)+8>>2]|0)+(c[_>>2]|0)|0)*40|0);c[_>>2]=(c[_>>2]|0)+-1}}while(0);Af=(c[Zc>>2]|0)+12|0;c[Af>>2]=(c[Af>>2]|0)+1;AF(pe,c[mf>>2]|0,1);c[c[pc>>2]>>2]=pe;a[(c[pc>>2]|0)+25>>0]=0;a[(c[pc>>2]|0)+24>>0]=0;Ub[c[(c[(c[pc>>2]|0)+4>>2]|0)+12>>2]&255](c[pc>>2]|0,d[(c[pc>>2]|0)+26>>0]|0,(c[pc>>2]|0)+28|0);if(a[(c[pc>>2]|0)+25>>0]|0){if(c[(c[pc>>2]|0)+20>>2]|0){Af=c[lf>>2]|0;c[Ie>>2]=ae(pe)|0;SH(Af,19255,Ie);c[rf>>2]=c[(c[pc>>2]|0)+20>>2]}Ug(pe)}if((a[(c[pc>>2]|0)+24>>0]|0)!=0?(c[_>>2]=c[(c[pf>>2]|0)+-20+4>>2],(c[_>>2]|0)!=0):0)eh((c[l>>2]|0)+((c[_>>2]|0)*40|0)|0,1,0)}while(0);do if((k|0)==15){k=0;c[pf>>2]=(c[n>>2]|0)+(((c[(c[pf>>2]|0)+8>>2]|0)-1|0)*20|0)}else if((k|0)==453){k=0;vI(c[(c[qc>>2]|0)+16>>2]|0,d[(c[pf>>2]|0)+3>>0]&3)}else if((k|0)==616){c[(c[Vb>>2]|0)+56>>2]=0;g=(c[Vb>>2]|0)+2|0;if(!(c[ce>>2]|0)){a[g>>0]=0;k=(c[lf>>2]|0)+108+(d[(c[pf>>2]|0)+3>>0]<<2)|0;c[k>>2]=(c[k>>2]|0)+1;k=8;break}else{a[g>>0]=1;k=9;break}}while(0);if((k|0)==8){c[pf>>2]=(c[n>>2]|0)+(((c[(c[pf>>2]|0)+8>>2]|0)-1|0)*20|0);k=9}if((k|0)==9){k=0;if(c[(c[mf>>2]|0)+240>>2]|0)break b;if(((c[(c[mf>>2]|0)+296>>2]|0)!=0?(c[of>>2]|0)>>>0>=(c[db>>2]|0)>>>0:0)?(c[db>>2]=(c[of>>2]|0)+(c[(c[mf>>2]|0)+304>>2]|0)-(((c[of>>2]|0)>>>0)%((c[(c[mf>>2]|0)+304>>2]|0)>>>0)|0),(Tb[c[(c[mf>>2]|0)+296>>2]&255](c[(c[mf>>2]|0)+300>>2]|0)|0)!=0):0){k=13;break}}c[pf>>2]=(c[pf>>2]|0)+20}switch(k|0){case 13:{c[rf>>2]=9;break a}case 26:{c[(c[lf>>2]|0)+80>>2]=c[(c[pf>>2]|0)+4>>2];a[(c[lf>>2]|0)+86>>0]=c[(c[pf>>2]|0)+8>>2];c[(c[lf>>2]|0)+76>>2]=c[qf>>2];if(c[(c[lf>>2]|0)+80>>2]|0){if(a[(c[pf>>2]|0)+3>>0]|0)c[wf>>2]=c[6408+((d[(c[pf>>2]|0)+3>>0]|0)-1<<2)>>2];else c[wf>>2]=0;c[vf>>2]=40646;if((c[wf>>2]|0)!=0?(c[(c[pf>>2]|0)+16>>2]|0)!=0:0){Af=c[lf>>2]|0;yf=c[(c[pf>>2]|0)+16>>2]|0;c[ze>>2]=c[wf>>2];c[ze+4>>2]=yf;SH(Af,40670,ze)}else k=33;do if((k|0)==33){g=c[lf>>2]|0;if(c[(c[pf>>2]|0)+16>>2]|0){c[sf>>2]=c[(c[pf>>2]|0)+16>>2];SH(g,19255,sf);break}else{c[tf>>2]=c[wf>>2];SH(g,40695,tf);break}}while(0);yf=c[(c[pf>>2]|0)+4>>2]|0;Af=c[vf>>2]|0;vf=c[(c[lf>>2]|0)+168>>2]|0;wf=c[(c[lf>>2]|0)+44>>2]|0;c[uf>>2]=c[qf>>2];c[uf+4>>2]=vf;c[uf+8>>2]=wf;Rd(yf,Af,uf)}c[rf>>2]=TH(c[lf>>2]|0)|0;if((c[rf>>2]|0)==5){c[rf>>2]=5;c[(c[lf>>2]|0)+80>>2]=5;Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}else{c[rf>>2]=(c[(c[lf>>2]|0)+80>>2]|0)!=0?1:101;Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}}case 74:{c[rf>>2]=9;break a}case 77:{c[(c[lf>>2]|0)+72>>2]=(c[(c[lf>>2]|0)+72>>2]|0)+2|1;Af=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0)|0;c[(c[lf>>2]|0)+20>>2]=Af;c[Wc>>2]=Af;c[S>>2]=0;while(1){if((c[S>>2]|0)>=(c[(c[pf>>2]|0)+8>>2]|0))break;if((e[(c[Wc>>2]|0)+((c[S>>2]|0)*40|0)+8>>1]&4096|0)!=0?(_g((c[Wc>>2]|0)+((c[S>>2]|0)*40|0)|0)|0)!=0:0){k=860;break a}YH((c[Wc>>2]|0)+((c[S>>2]|0)*40|0)|0)|0;c[S>>2]=(c[S>>2]|0)+1}if(a[(c[mf>>2]|0)+65>>0]|0){k=860;break a}c[(c[lf>>2]|0)+76>>2]=(((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0)+1;c[rf>>2]=100;Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}case 165:{c[rf>>2]=20;k=861;break}case 367:{c[(c[lf>>2]|0)+76>>2]=((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0;a[(c[mf>>2]|0)+63>>0]=0;c[rf>>2]=5;c[(c[lf>>2]|0)+80>>2]=5;Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}case 391:{qI(c[mf>>2]|0,516);a[(c[mf>>2]|0)+63>>0]=1;break}case 395:{Af=WH(c[lf>>2]|0,1)|0;c[rf>>2]=Af;if(Af){Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}else{a[(c[mf>>2]|0)+63>>0]=c[E>>2];break}}case 407:{c[rf>>2]=8;k=861;break}case 410:{c[(c[lf>>2]|0)+76>>2]=((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0;c[(c[lf>>2]|0)+80>>2]=c[rf>>2];Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}case 446:{c[rf>>2]=Lj(77597)|0;k=861;break}case 542:{c[rf>>2]=13;k=861;break}case 551:{c[rf>>2]=13;k=861;break}case 804:{Tb[c[(c[bd>>2]|0)+28>>2]&255](c[sd>>2]|0)|0;k=860;break a}case 858:{Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}case 859:{SH(c[lf>>2]|0,19034,Ne);c[rf>>2]=18;break a}}if((k|0)==861){if(a[(c[mf>>2]|0)+65>>0]|0)c[rf>>2]=7;if((c[rf>>2]|0)==3082)break a;Af=c[lf>>2]|0;c[Pe>>2]=ih(c[rf>>2]|0)|0;SH(Af,19255,Pe);break a}if((TH(c[lf>>2]|0)|0)==5){c[(c[lf>>2]|0)+76>>2]=((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0;a[(c[mf>>2]|0)+63>>0]=1-(c[E>>2]|0);c[rf>>2]=5;c[(c[lf>>2]|0)+80>>2]=5;Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}rI(c[mf>>2]|0);if(!(c[(c[lf>>2]|0)+80>>2]|0)){c[rf>>2]=101;Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}else{c[rf>>2]=1;Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}}while(0);c[rf>>2]=(d[(c[mf>>2]|0)+65>>0]|0)!=0?7:9;c[(c[lf>>2]|0)+80>>2]=c[rf>>2];Af=c[lf>>2]|0;c[Qe>>2]=ih(c[rf>>2]|0)|0;SH(Af,19255,Qe)}while(0);if((k|0)==860){jh(c[mf>>2]|0);SH(c[lf>>2]|0,32392,Oe);c[rf>>2]=7}c[(c[lf>>2]|0)+80>>2]=c[rf>>2];Af=c[rf>>2]|0;wf=c[(c[lf>>2]|0)+168>>2]|0;yf=c[(c[lf>>2]|0)+44>>2]|0;c[Me>>2]=((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0;c[Me+4>>2]=wf;c[Me+8>>2]=yf;Rd(Af,41278,Me);TH(c[lf>>2]|0)|0;if((c[rf>>2]|0)==3082)jh(c[mf>>2]|0);c[rf>>2]=1;if((d[fe>>0]|0)<=0){Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}rj(c[mf>>2]|0,(d[fe>>0]|0)-1|0);Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}function LH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;b=h+16|0;g=h+12|0;d=h+8|0;f=h+4|0;e=h;c[b>>2]=a;c[g>>2]=0;c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[(c[b>>2]|0)+20>>2]|0))break;c[f>>2]=c[(c[(c[b>>2]|0)+16>>2]|0)+(c[d>>2]<<4)+4>>2];if((c[f>>2]|0)!=0?(kg(c[f>>2]|0),c[e>>2]=NH(Of(c[f>>2]|0)|0)|0,((c[e>>2]|0)>0?(c[(c[b>>2]|0)+216>>2]|0)!=0:0)&(c[g>>2]|0)==0):0)c[g>>2]=Wb[c[(c[b>>2]|0)+216>>2]&255](c[(c[b>>2]|0)+220>>2]|0,c[b>>2]|0,c[(c[(c[b>>2]|0)+16>>2]|0)+(c[d>>2]<<4)>>2]|0,c[e>>2]|0)|0;c[d>>2]=(c[d>>2]|0)+1}i=h;return c[g>>2]|0}function MH(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=b;c[e>>2]=c[c[d>>2]>>2];c[f>>2]=c[(c[d>>2]|0)+80>>2];b=c[e>>2]|0;if(!(c[(c[d>>2]|0)+44>>2]|0)){jg(b,c[f>>2]|0);f=c[f>>2]|0;i=g;return f|0}b=b+66|0;a[b>>0]=(a[b>>0]|0)+1<<24>>24;Sj();if(!(c[(c[e>>2]|0)+236>>2]|0)){b=Vh(c[e>>2]|0)|0;c[(c[e>>2]|0)+236>>2]=b}Wh(c[(c[e>>2]|0)+236>>2]|0,-1,c[(c[d>>2]|0)+44>>2]|0,1,-1);Tj();d=(c[e>>2]|0)+66|0;a[d>>0]=(a[d>>0]|0)+-1<<24>>24;c[(c[e>>2]|0)+52>>2]=c[f>>2];f=c[f>>2]|0;i=g;return f|0}function NH(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=OH(c[(c[d>>2]|0)+216>>2]|0)|0;i=b;return a|0}function OH(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=0;if(!(c[b>>2]|0)){d=c[d>>2]|0;i=e;return d|0}c[d>>2]=c[(c[b>>2]|0)+12>>2];c[(c[b>>2]|0)+12>>2]=0;d=c[d>>2]|0;i=e;return d|0}function PH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;b=h+16|0;f=h+12|0;e=h+8|0;d=h+4|0;g=h;c[b>>2]=a;if(!(c[(c[b>>2]|0)+100>>2]|0)){i=h;return}c[e>>2]=c[c[b>>2]>>2];c[d>>2]=c[(c[e>>2]|0)+16>>2];c[g>>2]=c[(c[e>>2]|0)+20>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[g>>2]|0))break;if(((c[f>>2]|0)!=1?(c[(c[b>>2]|0)+100>>2]&1<>2]|0)!=0:0)?(c[(c[d>>2]|0)+(c[f>>2]<<4)+4>>2]|0)!=0:0)kg(c[(c[d>>2]|0)+(c[f>>2]<<4)+4>>2]|0);c[f>>2]=(c[f>>2]|0)+1}i=h;return}function QH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;c[(c[f>>2]|0)+80>>2]=c[e>>2];b=(c[f>>2]|0)+84|0;c[b>>2]=(c[b>>2]|0)+(c[e>>2]|0);i=d;return}function RH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=i;i=i+16|0;b=d+4|0;e=d;c[b>>2]=a;c[e>>2]=c[c[b>>2]>>2];kM(c[e>>2]|0);c[(c[e>>2]|0)+200>>2]=c[(c[b>>2]|0)+20>>2];c[(c[e>>2]|0)+196>>2]=c[(c[b>>2]|0)+56>>2];c[(c[e>>2]|0)+4>>2]=c[(c[b>>2]|0)+8>>2];c[(c[e>>2]|0)+32>>2]=c[(c[b>>2]|0)+48>>2];c[(c[e>>2]|0)+8>>2]=c[(c[b>>2]|0)+16>>2];c[(c[e>>2]|0)+28>>2]=c[(c[b>>2]|0)+52>>2];c[(c[e>>2]|0)+56>>2]=c[(c[b>>2]|0)+24>>2];c[(c[e>>2]|0)+36>>2]=c[(c[b>>2]|0)+40>>2];g=(c[b>>2]|0)+32|0;f=c[g+4>>2]|0;a=(c[c[e>>2]>>2]|0)+32|0;c[a>>2]=c[g>>2];c[a+4>>2]=f;c[(c[e>>2]|0)+92>>2]=c[(c[b>>2]|0)+68>>2];c[(c[c[e>>2]>>2]|0)+80>>2]=c[(c[b>>2]|0)+72>>2];i=d;return c[(c[b>>2]|0)+44>>2]|0}function SH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+32|0;f=e+20|0;h=e+16|0;g=e;c[f>>2]=a;c[h>>2]=b;Sf(c[c[f>>2]>>2]|0,c[(c[f>>2]|0)+44>>2]|0);c[g>>2]=d;b=Zw(c[c[f>>2]>>2]|0,c[h>>2]|0,g)|0;c[(c[f>>2]|0)+44>>2]=b;i=e;return}function TH(b){b=b|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;k=o+24|0;l=o+20|0;h=o+16|0;m=o+12|0;g=o+8|0;n=o+4|0;f=o;c[l>>2]=b;c[m>>2]=c[c[l>>2]>>2];if(a[(c[m>>2]|0)+65>>0]|0)c[(c[l>>2]|0)+80>>2]=7;if(c[(c[l>>2]|0)+200>>2]|0)kR(c[(c[l>>2]|0)+200>>2]|0,0,c[(c[l>>2]|0)+196>>2]|0)|0;cM(c[l>>2]|0);if((c[(c[l>>2]|0)+40>>2]|0)!=-1108210269){c[k>>2]=0;n=c[k>>2]|0;i=o;return n|0}if((c[(c[l>>2]|0)+76>>2]|0)>=0?((e[(c[l>>2]|0)+88>>1]|0)>>>7&1|0)!=0:0){c[n>>2]=0;PH(c[l>>2]|0);c[g>>2]=c[(c[l>>2]|0)+80>>2]&255;if((c[g>>2]|0)==7|(c[g>>2]|0)==10|(c[g>>2]|0)==9)b=1;else b=(c[g>>2]|0)==13;c[f>>2]=b&1;do if((c[f>>2]|0)!=0?(c[g>>2]|0)!=9?1:((e[(c[l>>2]|0)+88>>1]|0)>>>6&1|0)==0:0){if((c[g>>2]|0)==7|(c[g>>2]|0)==13?((e[(c[l>>2]|0)+88>>1]|0)>>>5&1|0)!=0:0){c[n>>2]=2;break}qI(c[m>>2]|0,516);rI(c[m>>2]|0);a[(c[m>>2]|0)+63>>0]=1;c[(c[l>>2]|0)+92>>2]=0}while(0);if(!(c[(c[l>>2]|0)+80>>2]|0))WH(c[l>>2]|0,0)|0;if((c[(c[m>>2]|0)+308>>2]|0)>0?(c[(c[m>>2]|0)+332>>2]|0)==0:0)j=38;else if((d[(c[m>>2]|0)+63>>0]|0)!=0?(c[(c[m>>2]|0)+156>>2]|0)==(((e[(c[l>>2]|0)+88>>1]|0)>>>6&1|0)==0|0):0){if((c[(c[l>>2]|0)+80>>2]|0)!=0?(c[f>>2]|0)!=0?1:(d[(c[l>>2]|0)+86>>0]|0)!=3:0){qI(c[m>>2]|0,0);c[(c[l>>2]|0)+92>>2]=0}else j=25;do if((j|0)==25){c[h>>2]=WH(c[l>>2]|0,1)|0;do if(c[h>>2]|0){if(!((e[(c[l>>2]|0)+88>>1]|0)>>>6&1)){c[h>>2]=787;break}c[k>>2]=1;n=c[k>>2]|0;i=o;return n|0}else c[h>>2]=dM(c[m>>2]|0,c[l>>2]|0)|0;while(0);if((c[h>>2]|0)==5?((e[(c[l>>2]|0)+88>>1]|0)>>>6&1|0)!=0:0){c[k>>2]=5;n=c[k>>2]|0;i=o;return n|0}if(c[h>>2]|0){c[(c[l>>2]|0)+80>>2]=c[h>>2];qI(c[m>>2]|0,0);c[(c[l>>2]|0)+92>>2]=0;break}else{g=(c[m>>2]|0)+512|0;c[g>>2]=0;c[g+4>>2]=0;g=(c[m>>2]|0)+520|0;c[g>>2]=0;c[g+4>>2]=0;g=(c[m>>2]|0)+24|0;c[g>>2]=c[g>>2]&-16777217;sj(c[m>>2]|0);break}}while(0);c[(c[m>>2]|0)+504>>2]=0}else j=38;do if((j|0)==38?(c[n>>2]|0)==0:0){if((c[(c[l>>2]|0)+80>>2]|0)!=0?(d[(c[l>>2]|0)+86>>0]|0)!=3:0)if((d[(c[l>>2]|0)+86>>0]|0)==2){c[n>>2]=2;break}else{qI(c[m>>2]|0,516);rI(c[m>>2]|0);a[(c[m>>2]|0)+63>>0]=1;c[(c[l>>2]|0)+92>>2]=0;break}c[n>>2]=1}while(0);if((c[n>>2]|0)!=0?(c[h>>2]=XH(c[l>>2]|0,c[n>>2]|0)|0,(c[h>>2]|0)!=0):0){if(!((c[(c[l>>2]|0)+80>>2]|0)!=0?(c[(c[l>>2]|0)+80>>2]&255|0)!=19:0)){c[(c[l>>2]|0)+80>>2]=c[h>>2];Sf(c[m>>2]|0,c[(c[l>>2]|0)+44>>2]|0);c[(c[l>>2]|0)+44>>2]=0}qI(c[m>>2]|0,516);rI(c[m>>2]|0);a[(c[m>>2]|0)+63>>0]=1;c[(c[l>>2]|0)+92>>2]=0}if((e[(c[l>>2]|0)+88>>1]|0)>>>2&1){b=c[m>>2]|0;if((c[n>>2]|0)!=2)QH(b,c[(c[l>>2]|0)+92>>2]|0);else QH(b,0);c[(c[l>>2]|0)+92>>2]=0}}if((c[(c[l>>2]|0)+76>>2]|0)>=0){n=(c[m>>2]|0)+148|0;c[n>>2]=(c[n>>2]|0)+-1;if(!((e[(c[l>>2]|0)+88>>1]|0)>>>6&1)){n=(c[m>>2]|0)+156|0;c[n>>2]=(c[n>>2]|0)+-1}if((e[(c[l>>2]|0)+88>>1]|0)>>>7&1){n=(c[m>>2]|0)+152|0;c[n>>2]=(c[n>>2]|0)+-1}}c[(c[l>>2]|0)+40>>2]=1369188723;if(a[(c[m>>2]|0)+65>>0]|0)c[(c[l>>2]|0)+80>>2]=7;c[k>>2]=(c[(c[l>>2]|0)+80>>2]|0)==5?5:0;n=c[k>>2]|0;i=o;return n|0}function UH(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0;h=i;i=i+16|0;f=h+12|0;k=h+8|0;j=h+4|0;g=h;c[k>>2]=a;c[j>>2]=d;c[g>>2]=(c[(c[k>>2]|0)+8>>2]|0)+((c[(c[j>>2]|0)+8>>2]|0)*40|0);a=c[g>>2]|0;if((e[(c[g>>2]|0)+8>>1]|0)&9312){c[f>>2]=bM(a)|0;k=c[f>>2]|0;i=h;return k|0}else{b[a+8>>1]=4;c[f>>2]=c[g>>2];k=c[f>>2]|0;i=h;return k|0}return 0}function VH(a){a=a|0;var b=0,d=0,f=0,g=0;g=i;i=i+16|0;b=g+8|0;d=g+4|0;f=g;c[d>>2]=a;if(!((e[(c[d>>2]|0)+8>>1]|0)&18)){c[b>>2]=0;a=c[b>>2]|0;i=g;return a|0}c[f>>2]=c[(c[d>>2]|0)+12>>2];if((e[(c[d>>2]|0)+8>>1]|0)&16384)c[f>>2]=(c[f>>2]|0)+(c[c[d>>2]>>2]|0);c[b>>2]=(c[f>>2]|0)>(c[(c[(c[d>>2]|0)+32>>2]|0)+88>>2]|0)&1;a=c[b>>2]|0;i=g;return a|0}function WH(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;j=l;e=l+16|0;f=l+12|0;g=l+8|0;h=l+4|0;c[f>>2]=b;c[g>>2]=d;c[h>>2]=c[c[f>>2]>>2];if(!((c[g>>2]|0)!=0?(d=(c[h>>2]|0)+512|0,b=(c[h>>2]|0)+520|0,b=gR(c[d>>2]|0,c[d+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0,d=C,(d|0)>0|(d|0)==0&b>>>0>0):0))k=3;do if((k|0)==3){if((c[g>>2]|0)==0?(k=(c[f>>2]|0)+144|0,b=c[k+4>>2]|0,(b|0)>0|(b|0)==0&(c[k>>2]|0)>>>0>0):0)break;c[e>>2]=0;k=c[e>>2]|0;i=l;return k|0}while(0);c[(c[f>>2]|0)+80>>2]=787;a[(c[f>>2]|0)+86>>0]=2;SH(c[f>>2]|0,36044,j);c[e>>2]=1;k=c[e>>2]|0;i=l;return k|0}function XH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;d=m+28|0;e=m+24|0;f=m+20|0;k=m+16|0;g=m+12|0;h=m+8|0;l=m+4|0;j=m;c[d>>2]=a;c[e>>2]=b;c[f>>2]=c[c[d>>2]>>2];c[k>>2]=0;if(!(c[(c[f>>2]|0)+504>>2]|0)){l=c[k>>2]|0;i=m;return l|0}if(!(c[(c[d>>2]|0)+104>>2]|0)){l=c[k>>2]|0;i=m;return l|0}c[h>>2]=(c[(c[d>>2]|0)+104>>2]|0)-1;c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0))break;c[l>>2]=0;c[j>>2]=c[(c[(c[f>>2]|0)+16>>2]|0)+(c[g>>2]<<4)+4>>2];if(c[j>>2]|0){if((c[e>>2]|0)==2)c[l>>2]=pI(c[j>>2]|0,2,c[h>>2]|0)|0;if(!(c[l>>2]|0))c[l>>2]=pI(c[j>>2]|0,1,c[h>>2]|0)|0;if(!(c[k>>2]|0))c[k>>2]=c[l>>2]}c[g>>2]=(c[g>>2]|0)+1}l=(c[f>>2]|0)+504|0;c[l>>2]=(c[l>>2]|0)+-1;c[(c[d>>2]|0)+104>>2]=0;if(!(c[k>>2]|0)){if((c[e>>2]|0)==2)c[k>>2]=nI(c[f>>2]|0,2,c[h>>2]|0)|0;if(!(c[k>>2]|0))c[k>>2]=nI(c[f>>2]|0,1,c[h>>2]|0)|0}if((c[e>>2]|0)!=2){l=c[k>>2]|0;i=m;return l|0}l=(c[d>>2]|0)+152|0;j=c[l+4>>2]|0;a=(c[f>>2]|0)+512|0;c[a>>2]=c[l>>2];c[a+4>>2]=j;a=(c[d>>2]|0)+160|0;j=c[a+4>>2]|0;l=(c[f>>2]|0)+520|0;c[l>>2]=c[a>>2];c[l+4>>2]=j;l=c[k>>2]|0;i=m;return l|0}function YH(a){a=a|0;var b=0,d=0,f=0;f=i;i=i+16|0;b=f+4|0;d=f;c[d>>2]=a;if(((e[(c[d>>2]|0)+8>>1]|0)&514|0)!=2){c[b>>2]=0;a=c[b>>2]|0;i=f;return a|0}else{c[b>>2]=aM(c[d>>2]|0)|0;a=c[b>>2]|0;i=f;return a|0}return 0}function ZH(a){a=a|0;var d=0,f=0,g=0;g=i;i=i+16|0;d=g+4|0;f=g;c[f>>2]=a;a=e[(c[f>>2]|0)+8>>1]|0;do if(!((e[(c[f>>2]|0)+8>>1]|0)&12))if(a&18){b[d>>1]=$L(c[f>>2]|0)|0;break}else{b[d>>1]=0;break}else b[d>>1]=a&12;while(0);i=g;return b[d>>1]|0}function _H(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;e=j+20|0;f=j+16|0;g=j+8|0;h=j;c[f>>2]=a;k=g;c[k>>2]=b;c[k+4>>2]=d;b=c[f>>2]|0;k=c[b+4>>2]|0;a=h;c[a>>2]=c[b>>2];c[a+4>>2]=k;a=g;k=c[a+4>>2]|0;b=h;d=c[b+4>>2]|0;if((k|0)>0|(k|0)==0&(c[a>>2]|0)>>>0>=0){if((d|0)>0|(d|0)==0&(c[b>>2]|0)>>>0>0?(h,h=fR(-1,2147483647,c[h>>2]|0,c[h+4>>2]|0)|0,d=C,k=g,a=c[k+4>>2]|0,(d|0)<(a|0)|((d|0)==(a|0)?h>>>0<(c[k>>2]|0)>>>0:0)):0){c[e>>2]=1;k=c[e>>2]|0;i=j;return k|0}}else if((d|0)<0?(h,h=gR(c[h>>2]|0,c[h+4>>2]|0,-1,2147483647)|0,h=fR(0,0,h|0,C|0)|0,d=C,k=g,k=gR(c[k>>2]|0,c[k+4>>2]|0,1,0)|0,a=C,(d|0)>(a|0)|(d|0)==(a|0)&h>>>0>k>>>0):0){c[e>>2]=1;k=c[e>>2]|0;i=j;return k|0}h=g;k=c[f>>2]|0;g=k;h=gR(c[g>>2]|0,c[g+4>>2]|0,c[h>>2]|0,c[h+4>>2]|0)|0;c[k>>2]=h;c[k+4>>2]=C;c[e>>2]=0;k=c[e>>2]|0;i=j;return k|0}function $H(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+12|0;f=h+8|0;g=h;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;a=g;b=c[f>>2]|0;if(!((c[a>>2]|0)==0?(c[a+4>>2]|0)==-2147483648:0)){g=fR(0,0,c[g>>2]|0,c[g+4>>2]|0)|0;c[e>>2]=_H(b,g,C)|0;g=c[e>>2]|0;i=h;return g|0}a=b;d=c[a+4>>2]|0;if((d|0)>0|(d|0)==0&(c[a>>2]|0)>>>0>=0){c[e>>2]=1;g=c[e>>2]|0;i=h;return g|0}else{a=g;g=c[f>>2]|0;f=g;f=fR(c[f>>2]|0,c[f+4>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;c[g>>2]=f;c[g+4>>2]=C;c[e>>2]=0;g=c[e>>2]|0;i=h;return g|0}return 0}function aI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+64|0;e=n+60|0;f=n+56|0;g=n+48|0;o=n+40|0;j=n+32|0;h=n+24|0;l=n+16|0;k=n+8|0;m=n;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;d=c[f>>2]|0;b=c[d+4>>2]|0;a=o;c[a>>2]=c[d>>2];c[a+4>>2]=b;a=o;a=pR(c[a>>2]|0,c[a+4>>2]|0,0,1)|0;b=j;c[b>>2]=a;c[b+4>>2]=C;b=o;b=qR(c[b>>2]|0,c[b+4>>2]|0,0,1)|0;a=h;c[a>>2]=b;c[a+4>>2]=C;a=g;a=pR(c[a>>2]|0,c[a+4>>2]|0,0,1)|0;b=l;c[b>>2]=a;c[b+4>>2]=C;b=g;b=qR(c[b>>2]|0,c[b+4>>2]|0,0,1)|0;a=k;c[a>>2]=b;c[a+4>>2]=C;a=j;b=l;b=(c[b>>2]|0)==0&(c[b+4>>2]|0)==0;do if((c[a>>2]|0)==0&(c[a+4>>2]|0)==0){if(!b){o=h;l=rR(c[o>>2]|0,c[o+4>>2]|0,c[l>>2]|0,c[l+4>>2]|0)|0;o=m;c[o>>2]=l;c[o+4>>2]=C;break}m=g;o=c[f>>2]|0;l=o;m=rR(c[l>>2]|0,c[l+4>>2]|0,c[m>>2]|0,c[m+4>>2]|0)|0;c[o>>2]=m;c[o+4>>2]=C;c[e>>2]=0;o=c[e>>2]|0;i=n;return o|0}else{if(b){o=j;l=k;l=rR(c[o>>2]|0,c[o+4>>2]|0,c[l>>2]|0,c[l+4>>2]|0)|0;o=m;c[o>>2]=l;c[o+4>>2]=C;break}c[e>>2]=1; -o=c[e>>2]|0;i=n;return o|0}while(0);j=m;g=c[j+4>>2]|0;o=m;l=c[o+4>>2]|0;if((g|0)<-1|(g|0)==-1&(c[j>>2]|0)>>>0<2147483648|((l|0)>0|(l|0)==0&(c[o>>2]|0)>>>0>=2147483648)){c[e>>2]=1;o=c[e>>2]|0;i=n;return o|0}o=m;o=rR(c[o>>2]|0,c[o+4>>2]|0,0,1)|0;l=m;c[l>>2]=o;c[l+4>>2]=C;l=h;o=k;o=rR(c[l>>2]|0,c[l+4>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0;if(_H(m,o,C)|0){c[e>>2]=1;o=c[e>>2]|0;i=n;return o|0}else{l=m;m=c[l+4>>2]|0;o=c[f>>2]|0;c[o>>2]=c[l>>2];c[o+4>>2]=m;c[e>>2]=0;o=c[e>>2]|0;i=n;return o|0}return 0}function bI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[j>>2]=(c[e>>2]|0)+204;a:while(1){if(!(c[c[j>>2]>>2]|0))break;c[h>>2]=c[c[j>>2]>>2];do if((c[f>>2]|0)>=0){if((c[c[h>>2]>>2]|0)==(c[f>>2]|0)){if((c[(c[h>>2]|0)+4>>2]|0)>31)break;if(!(c[g>>2]&1<>2]|0)+4>>2]))break}c[j>>2]=(c[h>>2]|0)+16;continue a}while(0);if(c[(c[h>>2]|0)+12>>2]|0)Qb[c[(c[h>>2]|0)+12>>2]&255](c[(c[h>>2]|0)+8>>2]|0);c[c[j>>2]>>2]=c[(c[h>>2]|0)+16>>2];Sf(c[c[e>>2]>>2]|0,c[h>>2]|0)}i=k;return}function cI(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;f=o+24|0;g=o+20|0;j=o+16|0;k=o+12|0;m=o+8|0;n=o+4|0;l=o;c[g>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e[(c[g>>2]|0)+8>>1];c[n>>2]=e[(c[j>>2]|0)+8>>1];c[l>>2]=c[m>>2]|c[n>>2];do if(!(c[l>>2]&1)){if(!(c[l>>2]&12)){if(c[l>>2]&2){if(!(c[m>>2]&2)){c[f>>2]=1;break}if(!(c[n>>2]&2)){c[f>>2]=-1;break}if(c[k>>2]|0){c[f>>2]=yF(c[g>>2]|0,c[j>>2]|0,c[k>>2]|0,0)|0;break}}c[f>>2]=_L(c[g>>2]|0,c[j>>2]|0)|0;break}if(c[m>>2]&c[n>>2]&4){a=c[g>>2]|0;n=c[a+4>>2]|0;b=c[j>>2]|0;d=c[b+4>>2]|0;if((n|0)<(d|0)|((n|0)==(d|0)?(c[a>>2]|0)>>>0<(c[b>>2]|0)>>>0:0)){c[f>>2]=-1;break}a=c[g>>2]|0;n=c[a+4>>2]|0;b=c[j>>2]|0;d=c[b+4>>2]|0;if((n|0)>(d|0)|((n|0)==(d|0)?(c[a>>2]|0)>>>0>(c[b>>2]|0)>>>0:0)){c[f>>2]=1;break}else{c[f>>2]=0;break}}if(c[m>>2]&c[n>>2]&8){if(+h[c[g>>2]>>3]<+h[c[j>>2]>>3]){c[f>>2]=-1;break}if(+h[c[g>>2]>>3]>+h[c[j>>2]>>3]){c[f>>2]=1;break}else{c[f>>2]=0;break}}if(c[m>>2]&4)if(c[n>>2]&8){b=c[g>>2]|0;c[f>>2]=wF(c[b>>2]|0,c[b+4>>2]|0,+h[c[j>>2]>>3])|0;break}else{c[f>>2]=-1;break}if(!(c[m>>2]&8)){c[f>>2]=1;break}if(c[n>>2]&4){b=c[j>>2]|0;c[f>>2]=0-(wF(c[b>>2]|0,c[b+4>>2]|0,+h[c[g>>2]>>3])|0);break}else{c[f>>2]=-1;break}}else c[f>>2]=(c[n>>2]&1)-(c[m>>2]&1);while(0);i=o;return c[f>>2]|0}function dI(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;g=l+12|0;h=l+8|0;k=l+4|0;j=l;c[g>>2]=b;c[h>>2]=e;c[k>>2]=c[c[g>>2]>>2];do if(!(d[c[k>>2]>>0]|0)){e=c[k>>2]|0;if(!(a[(c[k>>2]|0)+3>>0]|0)){if(!(nL(c[e+16>>2]|0)|0))break;c[f>>2]=oL(c[k>>2]|0)|0;k=c[f>>2]|0;i=l;return k|0}if((c[e+52>>2]|0)!=0?(b=c[(c[(c[k>>2]|0)+52>>2]|0)+(1+(c[c[h>>2]>>2]|0)<<2)>>2]|0,c[j>>2]=b,(b|0)>0):0){c[c[g>>2]>>2]=c[(c[k>>2]|0)+48>>2];c[c[h>>2]>>2]=(c[j>>2]|0)-1;c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}c[f>>2]=ZL(c[k>>2]|0)|0;k=c[f>>2]|0;i=l;return k|0}while(0);c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}function eI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=YL(c[f>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function fI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;iF(c[f>>2]|0);c[c[e>>2]>>2]=c[(c[f>>2]|0)+16+12>>2];i=d;return 0}function gI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=YL(c[f>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function hI(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;h=q+28|0;j=q+24|0;k=q+20|0;l=q+16|0;m=q+12|0;p=q+8|0;n=q+4|0;o=q;c[h>>2]=a;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=0;c[o>>2]=0;e=c[h>>2]|0;if(c[l>>2]|0)c[p>>2]=eI(e,n)|0;else c[p>>2]=gI(e,n)|0;if(((c[j>>2]|0)+(c[k>>2]|0)|0)>>>0<=(c[n>>2]|0)>>>0){c[(c[m>>2]|0)+16>>2]=(c[p>>2]|0)+(c[j>>2]|0);b[(c[m>>2]|0)+8>>1]=4112;c[(c[m>>2]|0)+12>>2]=c[k>>2];p=c[o>>2]|0;i=q;return p|0}else{c[o>>2]=XL(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;p=c[o>>2]|0;i=q;return p|0}return 0}function iI(b){b=b|0;var c=0,e=0;e=i;i=i+16|0;c=e;a[c>>0]=b;i=e;return a[35916+(d[c>>0]|0)>>0]|0}function jI(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;n=o+36|0;f=o+32|0;k=o+28|0;j=o+24|0;g=o+20|0;h=o+16|0;l=o+8|0;m=o;c[f>>2]=a;c[k>>2]=b;c[j>>2]=d;c[g>>2]=e[(c[f>>2]|0)+8>>1];if(c[g>>2]&1){c[c[j>>2]>>2]=0;c[n>>2]=0;n=c[n>>2]|0;i=o;return n|0}if(!(c[g>>2]&4)){if(c[g>>2]&8){c[c[j>>2]>>2]=8;c[n>>2]=7;n=c[n>>2]|0;i=o;return n|0}c[h>>2]=c[(c[f>>2]|0)+12>>2];if(c[g>>2]&16384)c[h>>2]=(c[h>>2]|0)+(c[c[f>>2]>>2]|0);c[c[j>>2]>>2]=c[h>>2];c[n>>2]=(c[h>>2]<<1)+12+((c[g>>2]&2|0)!=0&1);n=c[n>>2]|0;i=o;return n|0}a=c[f>>2]|0;f=c[a+4>>2]|0;b=l;c[b>>2]=c[a>>2];c[b+4>>2]=f;b=l;f=c[b>>2]|0;b=c[b+4>>2]|0;if((c[l+4>>2]|0)<0){a=m;c[a>>2]=~f;c[a+4>>2]=~b}else{a=m;c[a>>2]=f;c[a+4>>2]=b}a=m;d=c[a+4>>2]|0;if(d>>>0<0|(d|0)==0&(c[a>>2]|0)>>>0<=127){a=l;f=c[j>>2]|0;if((0==(c[a+4>>2]|0)?(c[l>>2]&1|0)==(c[a>>2]|0):0)&(c[k>>2]|0)>=4){c[f>>2]=0;c[n>>2]=8+(c[m>>2]|0);n=c[n>>2]|0;i=o;return n|0}else{c[f>>2]=1;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}}l=m;k=c[l+4>>2]|0;if(k>>>0<0|(k|0)==0&(c[l>>2]|0)>>>0<=32767){c[c[j>>2]>>2]=2;c[n>>2]=2;n=c[n>>2]|0;i=o;return n|0}l=m;k=c[l+4>>2]|0;if(k>>>0<0|(k|0)==0&(c[l>>2]|0)>>>0<=8388607){c[c[j>>2]>>2]=3;c[n>>2]=3;n=c[n>>2]|0;i=o;return n|0}l=m;k=c[l+4>>2]|0;if(k>>>0<0|(k|0)==0&(c[l>>2]|0)>>>0<=2147483647){c[c[j>>2]>>2]=4;c[n>>2]=4;n=c[n>>2]|0;i=o;return n|0}l=c[m+4>>2]|0;f=c[j>>2]|0;if(l>>>0<32767|(l|0)==32767&(c[m>>2]|0)>>>0<=4294967295){c[f>>2]=6;c[n>>2]=5;n=c[n>>2]|0;i=o;return n|0}else{c[f>>2]=8;c[n>>2]=6;n=c[n>>2]|0;i=o;return n|0}return 0}function kI(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;j=i;i=i+16|0;f=j+12|0;g=j+8|0;h=j;c[g>>2]=b;b=h;c[b>>2]=d;c[b+4>>2]=e;b=h;k=c[b+4>>2]|0;e=h;d=c[e>>2]|0;e=c[e+4>>2]|0;if(k>>>0<0|(k|0)==0&(c[b>>2]|0)>>>0<=127){a[c[g>>2]>>0]=d&127;c[f>>2]=1;k=c[f>>2]|0;i=j;return k|0}if(e>>>0<0|(e|0)==0&d>>>0<=16383){k=h;k=hR(c[k>>2]|0,c[k+4>>2]|0,7)|0;a[c[g>>2]>>0]=k&127|128;a[(c[g>>2]|0)+1>>0]=c[h>>2]&127;c[f>>2]=2;k=c[f>>2]|0;i=j;return k|0}else{k=h;c[f>>2]=WL(c[g>>2]|0,c[k>>2]|0,c[k+4>>2]|0)|0;k=c[f>>2]|0;i=j;return k|0}return 0}function lI(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+28|0;h=o+24|0;j=o+20|0;k=o+16|0;m=o+12|0;n=o;l=o+8|0;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;b=c[k>>2]|0;if((c[k>>2]|0)>>>0<=7&(c[k>>2]|0)>>>0>0){if((b|0)==7){j=c[j>>2]|0;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2]}else{e=c[j>>2]|0;f=c[e+4>>2]|0;j=n;c[j>>2]=c[e>>2];c[j+4>>2]=f}k=d[35916+(c[k>>2]|0)>>0]|0;c[l>>2]=k;c[m>>2]=k;do{k=c[n>>2]&255;j=(c[l>>2]|0)+-1|0;c[l>>2]=j;a[(c[h>>2]|0)+j>>0]=k;j=n;j=hR(c[j>>2]|0,c[j+4>>2]|0,8)|0;k=n;c[k>>2]=j;c[k+4>>2]=C}while((c[l>>2]|0)!=0);c[g>>2]=c[m>>2];n=c[g>>2]|0;i=o;return n|0}else{if(b>>>0<12){c[g>>2]=0;n=c[g>>2]|0;i=o;return n|0}c[m>>2]=c[(c[j>>2]|0)+12>>2];if((c[m>>2]|0)>>>0>0)iR(c[h>>2]|0,c[(c[j>>2]|0)+16>>2]|0,c[m>>2]|0)|0;c[g>>2]=c[m>>2];n=c[g>>2]|0;i=o;return n|0}return 0}function mI(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;k=p+28|0;l=p+24|0;m=p+20|0;n=p;o=p+16|0;h=p+12|0;j=p+8|0;c[l>>2]=f;c[m>>2]=g;g=n;c[g>>2]=0;c[g+4>>2]=0;if(!(c[(c[l>>2]|0)+52>>2]|0)){o=c[m>>2]|0;c[o>>2]=0;c[o+4>>2]=0;c[k>>2]=0;o=c[k>>2]|0;i=p;return o|0}c[o>>2]=gF(c[l>>2]|0)|0;a:while(1){if(c[o>>2]|0){f=16;break}c[j>>2]=c[(c[l>>2]|0)+120+(a[(c[l>>2]|0)+68>>0]<<2)>>2];if(!((d[(c[j>>2]|0)+4>>0]|0)==0?(a[(c[j>>2]|0)+2>>0]|0)!=0:0)){f=n;f=gR(c[f>>2]|0,c[f+4>>2]|0,e[(c[j>>2]|0)+18>>1]|0,0)|0;g=n;c[g>>2]=f;c[g+4>>2]=C}if(a[(c[j>>2]|0)+4>>0]|0){do{if(!(a[(c[l>>2]|0)+68>>0]|0)){f=10;break a}ZE(c[l>>2]|0)}while((e[(c[l>>2]|0)+80+(a[(c[l>>2]|0)+68>>0]<<1)>>1]|0)>=(e[(c[(c[l>>2]|0)+120+(a[(c[l>>2]|0)+68>>0]<<2)>>2]|0)+18>>1]|0));g=(c[l>>2]|0)+80+(a[(c[l>>2]|0)+68>>0]<<1)|0;b[g>>1]=(b[g>>1]|0)+1<<16>>16;c[j>>2]=c[(c[l>>2]|0)+120+(a[(c[l>>2]|0)+68>>0]<<2)>>2]}c[h>>2]=e[(c[l>>2]|0)+80+(a[(c[l>>2]|0)+68>>0]<<1)>>1];f=c[l>>2]|0;g=c[j>>2]|0;if((c[h>>2]|0)==(e[(c[j>>2]|0)+18>>1]|0)){c[o>>2]=XE(f,$q((c[(c[j>>2]|0)+56>>2]|0)+((d[g+5>>0]|0)+8)|0)|0)|0;continue}else{c[o>>2]=XE(f,$q((c[g+56>>2]|0)+(e[(c[j>>2]|0)+20>>1]&(d[(c[(c[j>>2]|0)+64>>2]|0)+(c[h>>2]<<1)>>0]<<8|d[(c[(c[j>>2]|0)+64>>2]|0)+(c[h>>2]<<1)+1>>0]))|0)|0)|0;continue}}if((f|0)==10){j=n;n=c[j+4>>2]|0;o=c[m>>2]|0;c[o>>2]=c[j>>2];c[o+4>>2]=n;c[k>>2]=gF(c[l>>2]|0)|0;o=c[k>>2]|0;i=p;return o|0}else if((f|0)==16){c[k>>2]=c[o>>2];o=c[k>>2]|0;i=p;return o|0}return 0}function nI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;e=n+28|0;f=n+24|0;g=n+20|0;m=n+16|0;h=n+12|0;k=n+8|0;j=n+4|0;l=n;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[m>>2]=0;if(!(c[(c[e>>2]|0)+332>>2]|0)){m=c[m>>2]|0;i=n;return m|0}c[h>>2]=0;while(1){if(c[m>>2]|0){e=15;break}if((c[h>>2]|0)>=(c[(c[e>>2]|0)+308>>2]|0)){e=15;break}c[k>>2]=c[(c[(c[e>>2]|0)+332>>2]|0)+(c[h>>2]<<2)>>2];c[j>>2]=c[c[(c[k>>2]|0)+4>>2]>>2];if((c[(c[k>>2]|0)+8>>2]|0)!=0?(c[c[j>>2]>>2]|0)>=2:0){switch(c[f>>2]|0){case 0:{c[l>>2]=c[(c[j>>2]|0)+80>>2];c[(c[k>>2]|0)+20>>2]=(c[g>>2]|0)+1;break}case 2:{c[l>>2]=c[(c[j>>2]|0)+88>>2];break}default:c[l>>2]=c[(c[j>>2]|0)+84>>2]}if((c[l>>2]|0)!=0?(c[(c[k>>2]|0)+20>>2]|0)>(c[g>>2]|0):0)c[m>>2]=Yb[c[l>>2]&255](c[(c[k>>2]|0)+8>>2]|0,c[g>>2]|0)|0}c[h>>2]=(c[h>>2]|0)+1}if((e|0)==15){m=c[m>>2]|0;i=n;return m|0}return 0}function oI(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+20|0;h=o+16|0;j=o+12|0;l=o+8|0;m=o+4|0;k=o;c[g>>2]=b;c[h>>2]=e;c[j>>2]=f;c[m>>2]=0;if(!(c[g>>2]|0)){n=c[m>>2]|0;i=o;return n|0}kg(c[g>>2]|0);c[l>>2]=c[(c[(c[g>>2]|0)+4>>2]|0)+8>>2];a:while(1){if(!(c[l>>2]|0)){n=15;break}do if((c[j>>2]|0)!=0?(d[(c[l>>2]|0)+64>>0]&1|0)==0:0){if((d[(c[l>>2]|0)+66>>0]|0)!=1?(d[(c[l>>2]|0)+66>>0]|0)!=2:0)break;c[m>>2]=pH(c[l>>2]|0)|0;if(c[m>>2]|0)break a}else n=10;while(0);if((n|0)==10){n=0;pB(c[l>>2]|0);a[(c[l>>2]|0)+66>>0]=4;c[(c[l>>2]|0)+60>>2]=c[h>>2]}c[k>>2]=0;while(1){if((c[k>>2]|0)>(a[(c[l>>2]|0)+68>>0]|0))break;qB(c[(c[l>>2]|0)+120+(c[k>>2]<<2)>>2]|0);c[(c[l>>2]|0)+120+(c[k>>2]<<2)>>2]=0;c[k>>2]=(c[k>>2]|0)+1}c[l>>2]=c[(c[l>>2]|0)+8>>2]}if((n|0)==15){n=c[m>>2]|0;i=o;return n|0}oI(c[g>>2]|0,c[m>>2]|0,0)|0;n=c[m>>2]|0;i=o;return n|0}function pI(a,b,f){a=a|0;b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;g=m+16|0;h=m+12|0;j=m+8|0;l=m+4|0;k=m;c[g>>2]=a;c[h>>2]=b;c[j>>2]=f;c[l>>2]=0;if(!(c[g>>2]|0)){l=c[l>>2]|0;i=m;return l|0}if((d[(c[g>>2]|0)+8>>0]|0|0)!=2){l=c[l>>2]|0;i=m;return l|0}c[k>>2]=c[(c[g>>2]|0)+4>>2];kg(c[g>>2]|0);c[l>>2]=Kr(c[c[k>>2]>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;if(c[l>>2]|0){l=c[l>>2]|0;i=m;return l|0}if((c[j>>2]|0)<0?((e[(c[k>>2]|0)+22>>1]|0)&8|0)!=0:0)c[(c[k>>2]|0)+44>>2]=0;c[l>>2]=VL(c[k>>2]|0)|0;a=$q((c[(c[(c[k>>2]|0)+12>>2]|0)+56>>2]|0)+28|0)|0;c[(c[k>>2]|0)+44>>2]=a;l=c[l>>2]|0;i=m;return l|0}function qI(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;j=m+8|0;l=m+4|0;k=m;c[f>>2]=b;c[g>>2]=e;c[j>>2]=0;Sj();Nf(c[f>>2]|0);if(c[(c[f>>2]|0)+24>>2]&2)b=(d[(c[f>>2]|0)+140+5>>0]|0)==0;else b=0;c[l>>2]=b&1;c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0))break;c[k>>2]=c[(c[(c[f>>2]|0)+16>>2]|0)+(c[h>>2]<<4)+4>>2];if(c[k>>2]|0){if(bi(c[k>>2]|0)|0)c[j>>2]=1;Mg(c[k>>2]|0,c[g>>2]|0,((c[l>>2]|0)!=0^1)&1)|0}c[h>>2]=(c[h>>2]|0)+1}du(c[f>>2]|0)|0;Tj();if((c[(c[f>>2]|0)+24>>2]&2|0)!=0?(d[(c[f>>2]|0)+140+5>>0]|0)==0:0){Oh(c[f>>2]|0);zg(c[f>>2]|0)}l=(c[f>>2]|0)+512|0;c[l>>2]=0;c[l+4>>2]=0;l=(c[f>>2]|0)+520|0;c[l>>2]=0;c[l+4>>2]=0;l=(c[f>>2]|0)+24|0;c[l>>2]=c[l>>2]&-16777217;if(!(c[(c[f>>2]|0)+204>>2]|0)){i=m;return}if((c[j>>2]|0)==0?(a[(c[f>>2]|0)+63>>0]|0)!=0:0){i=m;return}Qb[c[(c[f>>2]|0)+204>>2]&255](c[(c[f>>2]|0)+200>>2]|0);i=m;return}function rI(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;while(1){b=c[d>>2]|0;if(!(c[(c[d>>2]|0)+492>>2]|0))break;c[e>>2]=c[b+492>>2];c[(c[d>>2]|0)+492>>2]=c[(c[e>>2]|0)+24>>2];Sf(c[d>>2]|0,c[e>>2]|0)}c[b+500>>2]=0;c[(c[d>>2]|0)+504>>2]=0;a[(c[d>>2]|0)+71>>0]=0;i=f;return}function sI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+12|0;f=e+8|0;d=e+4|0;g=e;c[h>>2]=a;c[f>>2]=b;c[g>>2]=c[(c[h>>2]|0)+4>>2];kg(c[h>>2]|0);c[d>>2]=SL(c[c[g>>2]>>2]|0,c[f>>2]|0)|0;i=e;return c[d>>2]|0}function tI(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+32|0;k=s+24|0;l=s+20|0;n=s+16|0;o=s+12|0;p=s+28|0;r=s+8|0;m=s+4|0;q=s;c[k>>2]=e;c[l>>2]=f;c[n>>2]=g;c[o>>2]=h;a[p>>0]=j;c[r>>2]=(c[(c[k>>2]|0)+8>>2]|0)+(((c[(c[k>>2]|0)+28>>2]|0)-(c[l>>2]|0)|0)*40|0);c[q>>2]=0;j=88+(c[n>>2]<<3)|0;if(!(d[p>>0]|0))f=QL()|0;else f=0;c[m>>2]=j+f;if(c[(c[(c[k>>2]|0)+56>>2]|0)+(c[l>>2]<<2)>>2]|0){yI(c[k>>2]|0,c[(c[(c[k>>2]|0)+56>>2]|0)+(c[l>>2]<<2)>>2]|0);c[(c[(c[k>>2]|0)+56>>2]|0)+(c[l>>2]<<2)>>2]=0}if(tx(c[r>>2]|0,c[m>>2]|0)|0){r=c[q>>2]|0;i=s;return r|0}j=c[(c[r>>2]|0)+16>>2]|0;c[q>>2]=j;c[(c[(c[k>>2]|0)+56>>2]|0)+(c[l>>2]<<2)>>2]=j;j=c[q>>2]|0;f=j+88|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(f|0));a[c[q>>2]>>0]=a[p>>0]|0;a[(c[q>>2]|0)+1>>0]=c[o>>2];b[(c[q>>2]|0)+12>>1]=c[n>>2];c[(c[q>>2]|0)+76>>2]=(c[q>>2]|0)+80+(c[n>>2]<<2);if(d[p>>0]|0){r=c[q>>2]|0;i=s;return r|0}c[(c[q>>2]|0)+16>>2]=(c[(c[r>>2]|0)+16>>2]|0)+(88+(c[n>>2]<<3));RL(c[(c[q>>2]|0)+16>>2]|0);r=c[q>>2]|0;i=s;return r|0}function uI(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,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;if((c[h>>2]|0)<1){c[m>>2]=Lj(59722)|0;d=c[m>>2]|0;i=n;return d|0}else{kg(c[g>>2]|0);c[m>>2]=OL(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,c[k>>2]|0,c[l>>2]|0)|0;d=c[m>>2]|0;i=n;return d|0}return 0}function vI(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;a[(c[f>>2]|0)+67>>0]=c[g>>2];i=e;return}function wI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f+12|0;h=f+8|0;g=f+4|0;e=f;c[j>>2]=a;c[h>>2]=b;c[g>>2]=d;kg(c[j>>2]|0);c[e>>2]=NL(c[j>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;i=f;return c[e>>2]|0}function xI(f,g,h){f=f|0;g=g|0;h=h|0;var 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;w=i;i=i+64|0;r=w+48|0;j=w+44|0;k=w+40|0;u=w+36|0;l=w+32|0;m=w+28|0;t=w+24|0;s=w+20|0;p=w+16|0;o=w+12|0;v=w+8|0;n=w+4|0;q=w;c[r>>2]=f;c[j>>2]=g;c[k>>2]=h;c[v>>2]=0;c[p>>2]=24+((e[(c[(c[k>>2]|0)+24>>2]|0)+6>>1]|0)-1<<2);c[o>>2]=136;h=(c[o>>2]|0)+(c[p>>2]|0)|0;c[t>>2]=ph(c[r>>2]|0,h,((h|0)<0)<<31>>31)|0;c[(c[k>>2]|0)+16>>2]=c[t>>2];if(!(c[t>>2]|0)){c[v>>2]=7;v=c[v>>2]|0;i=w;return v|0}o=(c[t>>2]|0)+(c[o>>2]|0)|0;c[s>>2]=o;c[(c[t>>2]|0)+28>>2]=o;iR(c[s>>2]|0,c[(c[k>>2]|0)+24>>2]|0,c[p>>2]|0)|0;c[(c[s>>2]|0)+12>>2]=0;if(c[j>>2]|0){p=(c[s>>2]|0)+8|0;b[p>>1]=(e[p>>1]|0)+((e[(c[s>>2]|0)+6>>1]|0)-(c[j>>2]|0));b[(c[s>>2]|0)+6>>1]=c[j>>2]}p=pg(c[(c[(c[r>>2]|0)+16>>2]|0)+4>>2]|0)|0;c[u>>2]=p;c[(c[t>>2]|0)+12>>2]=p;a[(c[t>>2]|0)+59>>0]=1;a[(c[t>>2]|0)+58>>0]=-1;a[(c[t>>2]|0)+57>>0]=(d[(c[t>>2]|0)+59>>0]|0|0)>1;c[(c[t>>2]|0)+24>>2]=c[r>>2];c[l>>2]=0;while(1){if((c[l>>2]|0)>=(d[(c[t>>2]|0)+59>>0]|0|0))break;c[n>>2]=(c[t>>2]|0)+64+((c[l>>2]|0)*72|0);c[(c[n>>2]|0)+8>>2]=c[t>>2];c[l>>2]=(c[l>>2]|0)+1}if(!(Sq(c[r>>2]|0)|0)){c[q>>2]=c[58];p=_(c[q>>2]|0,c[u>>2]|0)|0;c[c[t>>2]>>2]=p;c[m>>2]=c[(c[(c[(c[r>>2]|0)+16>>2]|0)+12>>2]|0)+80>>2];if((c[m>>2]|0)<(c[q>>2]|0))c[m>>2]=c[q>>2];p=c[m>>2]|0;q=c[u>>2]|0;q=rR(p|0,((p|0)<0)<<31>>31|0,q|0,((q|0)<0)<<31>>31|0)|0;p=C;if((p|0)<0|(p|0)==0&q>>>0<536870912){q=c[m>>2]|0;j=c[u>>2]|0;j=rR(q|0,((q|0)<0)<<31>>31|0,j|0,((j|0)<0)<<31>>31|0)|0}else j=536870912;c[(c[t>>2]|0)+4>>2]=j;if((c[50]|0)==0?(c[(c[t>>2]|0)+52>>2]=c[u>>2],u=c[u>>2]|0,u=_f(u,((u|0)<0)<<31>>31)|0,c[(c[t>>2]|0)+36+4>>2]=u,(c[(c[t>>2]|0)+36+4>>2]|0)==0):0)c[v>>2]=7}if(((e[(c[s>>2]|0)+6>>1]|0)+(e[(c[s>>2]|0)+8>>1]|0)|0)>=13){v=c[v>>2]|0;i=w;return v|0}if((c[(c[s>>2]|0)+20>>2]|0)!=0?(c[(c[s>>2]|0)+20>>2]|0)!=(c[(c[r>>2]|0)+8>>2]|0):0){v=c[v>>2]|0;i=w;return v|0}a[(c[t>>2]|0)+60>>0]=3;v=c[v>>2]|0;i=w;return v|0}function yI(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;h=j+8|0;g=j+4|0;f=j;c[e>>2]=a;c[h>>2]=b;if(!(c[h>>2]|0)){i=j;return}switch(d[c[h>>2]>>0]|0|0){case 1:{ML(c[c[e>>2]>>2]|0,c[h>>2]|0);i=j;return}case 0:{e=c[h>>2]|0;if(c[(c[h>>2]|0)+20>>2]|0){lB(c[e+20>>2]|0)|0;i=j;return}else{nB(c[e+16>>2]|0)|0;i=j;return}}case 2:{c[g>>2]=c[(c[h>>2]|0)+16>>2];c[f>>2]=c[c[c[g>>2]>>2]>>2];h=(c[c[g>>2]>>2]|0)+4|0;c[h>>2]=(c[h>>2]|0)+-1;Tb[c[(c[f>>2]|0)+28>>2]&255](c[g>>2]|0)|0;i=j;return}default:{i=j;return}}}function zI(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;f=g+4|0;e=g;c[f>>2]=a;c[e>>2]=b;i=g;return((d[(c[f>>2]|0)+67>>0]|0)&c[e>>2]|0)!=0|0}function AI(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return 1!=(d[(c[b>>2]|0)+66>>0]|0|0)|0}function BI(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;h=k+12|0;g=k+8|0;f=k+4|0;j=k;c[g>>2]=b;c[f>>2]=e;if(1==(d[(c[g>>2]|0)+66>>0]|0|0)?((d[(c[g>>2]|0)+64>>0]|0)&8|0)!=0:0){c[h>>2]=0;j=c[h>>2]|0;i=k;return j|0}c[j>>2]=gF(c[g>>2]|0)|0;do if(!(c[j>>2]|0)){f=c[f>>2]|0;if(!(d[(c[g>>2]|0)+66>>0]|0)){c[f>>2]=1;break}c[f>>2]=0;c[j>>2]=YE(c[g>>2]|0)|0;f=(c[g>>2]|0)+64|0;b=d[f>>0]|0;if(!(c[j>>2]|0)){a[f>>0]=b|8;break}else{a[f>>0]=b&-9;break}}while(0);c[h>>2]=c[j>>2];j=c[h>>2]|0;i=k;return j|0}function CI(f,g,h,j,k,l,m,n,o){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|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,D=0,E=0,F=0,G=0,H=0,I=0,J=0;I=i;i=i+80|0;p=I+72|0;q=I+68|0;r=I+64|0;s=I;t=I+60|0;u=I+56|0;v=I+52|0;w=I+48|0;J=I+44|0;F=I+40|0;y=I+36|0;G=I+32|0;x=I+28|0;E=I+24|0;B=I+20|0;D=I+16|0;A=I+12|0;z=I+8|0;H=I+76|0;c[q>>2]=f;c[r>>2]=g;g=s;c[g>>2]=h;c[g+4>>2]=j;c[t>>2]=k;c[u>>2]=l;c[v>>2]=m;c[w>>2]=n;c[J>>2]=o;c[y>>2]=c[J>>2];c[G>>2]=0;c[B>>2]=c[c[q>>2]>>2];c[D>>2]=c[(c[B>>2]|0)+4>>2];c[z>>2]=0;h=c[q>>2]|0;if((d[(c[q>>2]|0)+66>>0]|0)==4){c[p>>2]=c[h+60>>2];J=c[p>>2]|0;i=I;return J|0}if((d[h+64>>0]&32|0)!=0?(c[F>>2]=nH(c[D>>2]|0,c[(c[q>>2]|0)+52>>2]|0,c[q>>2]|0)|0,(c[F>>2]|0)!=0):0){c[p>>2]=c[F>>2];J=c[p>>2]|0;i=I;return J|0}do if(!(c[(c[q>>2]|0)+72>>2]|0)){J=s;sK(c[B>>2]|0,c[J>>2]|0,c[J+4>>2]|0,0);J=s;B=c[J+4>>2]|0;if((d[(c[q>>2]|0)+64>>0]&2|0)!=0&((B|0)>0|(B|0)==0&(c[J>>2]|0)>>>0>0)?(J=(c[q>>2]|0)+16|0,o=c[J>>2]|0,J=c[J+4>>2]|0,B=s,B=fR(c[B>>2]|0,c[B+4>>2]|0,1,0)|0,(o|0)==(B|0)&(J|0)==(C|0)):0){c[y>>2]=-1;break}if((c[y>>2]|0)==0?(J=s,c[F>>2]=eF(c[q>>2]|0,0,c[J>>2]|0,c[J+4>>2]|0,c[w>>2]|0,y)|0,(c[F>>2]|0)!=0):0){c[p>>2]=c[F>>2];J=c[p>>2]|0;i=I;return J|0}}else if((c[y>>2]|0)==0?(J=s,c[F>>2]=bF(c[q>>2]|0,c[r>>2]|0,c[J>>2]|0,c[J+4>>2]|0,c[w>>2]|0,y)|0,(c[F>>2]|0)!=0):0){c[p>>2]=c[F>>2];J=c[p>>2]|0;i=I;return J|0}while(0);c[E>>2]=c[(c[q>>2]|0)+120+(a[(c[q>>2]|0)+68>>0]<<2)>>2];c[z>>2]=c[(c[D>>2]|0)+80>>2];J=s;c[F>>2]=LL(c[E>>2]|0,c[z>>2]|0,c[r>>2]|0,c[J>>2]|0,c[J+4>>2]|0,c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,G)|0;do if(!(c[F>>2]|0)){c[x>>2]=e[(c[q>>2]|0)+80+(a[(c[q>>2]|0)+68>>0]<<1)>>1];if(!(c[y>>2]|0)){c[F>>2]=Dg(c[(c[E>>2]|0)+72>>2]|0)|0;if(c[F>>2]|0)break;c[A>>2]=(c[(c[E>>2]|0)+56>>2]|0)+(e[(c[E>>2]|0)+20>>1]&(d[(c[(c[E>>2]|0)+64>>2]|0)+(c[x>>2]<<1)>>0]<<8|d[(c[(c[E>>2]|0)+64>>2]|0)+(c[x>>2]<<1)+1>>0]));if(!(a[(c[E>>2]|0)+4>>0]|0)){J=c[z>>2]|0;D=c[A>>2]|0;a[J>>0]=a[D>>0]|0;a[J+1>>0]=a[D+1>>0]|0;a[J+2>>0]=a[D+2>>0]|0;a[J+3>>0]=a[D+3>>0]|0}c[F>>2]=uK(c[E>>2]|0,c[A>>2]|0,H)|0;rL(c[E>>2]|0,c[x>>2]|0,e[H>>1]|0,F);if(c[F>>2]|0)break}else if((c[y>>2]|0)<0?(e[(c[E>>2]|0)+18>>1]|0)>0:0){H=(c[q>>2]|0)+80+(a[(c[q>>2]|0)+68>>0]<<1)|0;J=(b[H>>1]|0)+1<<16>>16;b[H>>1]=J;c[x>>2]=J&65535}sL(c[E>>2]|0,c[x>>2]|0,c[z>>2]|0,c[G>>2]|0,0,0,F);b[(c[q>>2]|0)+16+18>>1]=0;if((c[F>>2]|0)==0?(d[(c[E>>2]|0)+1>>0]|0)!=0:0){J=(c[q>>2]|0)+64|0;a[J>>0]=d[J>>0]&-3;c[F>>2]=tL(c[q>>2]|0)|0;a[(c[(c[q>>2]|0)+120+(a[(c[q>>2]|0)+68>>0]<<2)>>2]|0)+1>>0]=0;a[(c[q>>2]|0)+66>>0]=0}}while(0);c[p>>2]=c[F>>2];J=c[p>>2]|0;i=I;return J|0}function DI(f,g){f=f|0;g=g|0;var h=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;z=i;i=i+64|0;t=z+56|0;u=z+52|0;A=z+63|0;l=z+48|0;m=z+44|0;y=z+40|0;x=z+36|0;n=z+32|0;w=z+28|0;v=z+24|0;q=z+60|0;s=z+20|0;r=z+62|0;k=z+16|0;o=z+12|0;j=z+8|0;h=z+4|0;p=z;c[u>>2]=f;a[A>>0]=g;c[l>>2]=c[c[u>>2]>>2];c[m>>2]=c[(c[l>>2]|0)+4>>2];c[s>>2]=0;a[r>>0]=d[A>>0]&2;c[v>>2]=a[(c[u>>2]|0)+68>>0];c[w>>2]=e[(c[u>>2]|0)+80+(c[v>>2]<<1)>>1];c[x>>2]=c[(c[u>>2]|0)+120+(c[v>>2]<<2)>>2];c[n>>2]=(c[(c[x>>2]|0)+56>>2]|0)+(e[(c[x>>2]|0)+20>>1]&(d[(c[(c[x>>2]|0)+64>>2]|0)+(c[w>>2]<<1)>>0]<<8|d[(c[(c[x>>2]|0)+64>>2]|0)+(c[w>>2]<<1)+1>>0]));if((a[(c[x>>2]|0)+4>>0]|0)==0?(c[k>>2]=0,c[y>>2]=UE(c[u>>2]|0,k)|0,(c[y>>2]|0)!=0):0){c[t>>2]=c[y>>2];A=c[t>>2]|0;i=z;return A|0}if((d[(c[u>>2]|0)+64>>0]&32|0)!=0?(c[y>>2]=nH(c[m>>2]|0,c[(c[u>>2]|0)+52>>2]|0,c[u>>2]|0)|0,(c[y>>2]|0)!=0):0){c[t>>2]=c[y>>2];A=c[t>>2]|0;i=z;return A|0}if(!(c[(c[u>>2]|0)+72>>2]|0)){A=(c[u>>2]|0)+16|0;sK(c[l>>2]|0,c[A>>2]|0,c[A+4>>2]|0,0)}do if(a[r>>0]|0){if((a[(c[x>>2]|0)+4>>0]|0)!=0?(A=e[(c[x>>2]|0)+16>>1]|0,A=A+((Mt(c[x>>2]|0,c[n>>2]|0)|0)&65535)+2|0,(A|0)<=((c[(c[m>>2]|0)+36>>2]<<1>>>0)/3|0|0)):0){c[s>>2]=1;break}c[y>>2]=rH(c[u>>2]|0)|0;if(c[y>>2]|0){c[t>>2]=c[y>>2];A=c[t>>2]|0;i=z;return A|0}}while(0);c[y>>2]=Dg(c[(c[x>>2]|0)+72>>2]|0)|0;if(c[y>>2]|0){c[t>>2]=c[y>>2];A=c[t>>2]|0;i=z;return A|0}c[y>>2]=uK(c[x>>2]|0,c[n>>2]|0,q)|0;rL(c[x>>2]|0,c[w>>2]|0,e[q>>1]|0,y);if(c[y>>2]|0){c[t>>2]=c[y>>2];A=c[t>>2]|0;i=z;return A|0}if(!(a[(c[x>>2]|0)+4>>0]|0)){c[o>>2]=c[(c[u>>2]|0)+120+(a[(c[u>>2]|0)+68>>0]<<2)>>2];c[h>>2]=c[(c[(c[u>>2]|0)+120+((c[v>>2]|0)+1<<2)>>2]|0)+84>>2];c[n>>2]=(c[(c[o>>2]|0)+56>>2]|0)+(e[(c[o>>2]|0)+20>>1]&(d[(c[(c[o>>2]|0)+64>>2]|0)+((e[(c[o>>2]|0)+18>>1]|0)-1<<1)>>0]<<8|d[(c[(c[o>>2]|0)+64>>2]|0)+((e[(c[o>>2]|0)+18>>1]|0)-1<<1)+1>>0]));if((c[n>>2]|0)>>>0<((c[(c[o>>2]|0)+56>>2]|0)+4|0)>>>0){c[t>>2]=Lj(63773)|0;A=c[t>>2]|0;i=z;return A|0}c[j>>2]=(Yb[c[(c[o>>2]|0)+76>>2]&255](c[o>>2]|0,c[n>>2]|0)|0)&65535;c[p>>2]=c[(c[m>>2]|0)+80>>2];c[y>>2]=Dg(c[(c[o>>2]|0)+72>>2]|0)|0;sL(c[x>>2]|0,c[w>>2]|0,(c[n>>2]|0)+-4|0,(c[j>>2]|0)+4|0,c[p>>2]|0,c[h>>2]|0,y);rL(c[o>>2]|0,(e[(c[o>>2]|0)+18>>1]|0)-1|0,c[j>>2]|0,y);if(c[y>>2]|0){c[t>>2]=c[y>>2];A=c[t>>2]|0;i=z;return A|0}}c[y>>2]=tL(c[u>>2]|0)|0;if((c[y>>2]|0)==0?(a[(c[u>>2]|0)+68>>0]|0)>(c[v>>2]|0):0){while(1){g=c[u>>2]|0;if((a[(c[u>>2]|0)+68>>0]|0)<=(c[v>>2]|0))break;q=g+68|0;A=a[q>>0]|0;a[q>>0]=A+-1<<24>>24;qB(c[(c[u>>2]|0)+120+(A<<24>>24<<2)>>2]|0)}c[y>>2]=tL(g)|0}do if(!(c[y>>2]|0)){g=c[u>>2]|0;if(!(c[s>>2]|0)){c[y>>2]=gF(g)|0;if(!(a[r>>0]|0))break;a[(c[u>>2]|0)+66>>0]=3;break}a[g+66>>0]=2;g=(c[u>>2]|0)+60|0;if((c[w>>2]|0)>=(e[(c[x>>2]|0)+18>>1]|0)){c[g>>2]=-1;b[(c[u>>2]|0)+80+(c[v>>2]<<1)>>1]=(e[(c[x>>2]|0)+18>>1]|0)-1;break}else{c[g>>2]=1;break}}while(0);c[t>>2]=c[y>>2];A=c[t>>2]|0;i=z;return A|0}function EI(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+48|0;o=s+44|0;t=s+40|0;p=s+36|0;h=s+32|0;q=s+28|0;n=s+24|0;r=s+20|0;m=s+16|0;j=s+12|0;l=s+8|0;k=s+4|0;c[t>>2]=a;c[p>>2]=d;c[h>>2]=f;c[q>>2]=g;c[n>>2]=c[(c[t>>2]|0)+16>>2];c[r>>2]=c[(c[n>>2]|0)+32>>2];c[m>>2]=c[(c[t>>2]|0)+24>>2];do if(!(c[r>>2]|0)){t=cF(c[m>>2]|0,0,0,s)|0;c[(c[n>>2]|0)+32>>2]=t;c[r>>2]=t;if(c[r>>2]|0){b[(c[r>>2]|0)+8>>1]=c[h>>2];break}c[o>>2]=7;t=c[o>>2]|0;i=s;return t|0}while(0);c[l>>2]=qL(c[n>>2]|0,k)|0;dF(c[m>>2]|0,c[k>>2]|0,c[l>>2]|0,c[r>>2]|0);c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[h>>2]|0)){h=10;break}if((e[(c[(c[r>>2]|0)+4>>2]|0)+((c[j>>2]|0)*40|0)+8>>1]|0)&1){h=8;break}c[j>>2]=(c[j>>2]|0)+1}if((h|0)==8){c[c[q>>2]>>2]=-1;c[o>>2]=0;t=c[o>>2]|0;i=s;return t|0}else if((h|0)==10){t=rF(c[(c[p>>2]|0)+12>>2]|0,c[(c[p>>2]|0)+16>>2]|0,c[r>>2]|0)|0;c[c[q>>2]>>2]=t;c[o>>2]=0;t=c[o>>2]|0;i=s;return t|0}return 0}function FI(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+32|0;f=k+20|0;m=k+16|0;g=k+12|0;l=k+8|0;j=k+4|0;h=k;c[m>>2]=a;c[g>>2]=d;c[l>>2]=c[(c[m>>2]|0)+16>>2];c[j>>2]=qL(c[l>>2]|0,h)|0;if(tx(c[g>>2]|0,c[h>>2]|0)|0){c[f>>2]=7;m=c[f>>2]|0;i=k;return m|0}else{c[(c[g>>2]|0)+12>>2]=c[h>>2];b[(c[g>>2]|0)+8>>1]=(e[(c[g>>2]|0)+8>>1]|0)&-49664|16;iR(c[(c[g>>2]|0)+16>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;c[f>>2]=0;m=c[f>>2]|0;i=k;return m|0}return 0}function GI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;if(!(c[(c[e>>2]|0)+8>>2]|0)){i=g;return}c[f>>2]=c[c[d>>2]>>2];Sf(c[f>>2]|0,c[(c[d>>2]|0)+44>>2]|0);b=nh(c[f>>2]|0,c[(c[e>>2]|0)+8>>2]|0)|0;c[(c[d>>2]|0)+44>>2]=b;Kd(c[(c[e>>2]|0)+8>>2]|0);c[(c[e>>2]|0)+8>>2]=0;i=g;return}function HI(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[d>>2]=a;if(nL(c[(c[d>>2]|0)+16>>2]|0)|0){c[b>>2]=oL(c[d>>2]|0)|0;a=c[b>>2]|0;i=e;return a|0}else{c[b>>2]=0;a=c[b>>2]|0;i=e;return a|0}return 0}function II(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;f=j+16|0;k=j+12|0;e=j+8|0;g=j+4|0;h=j;c[k>>2]=a;c[e>>2]=b;c[h>>2]=0;c[g>>2]=c[(c[k>>2]|0)+16>>2];b=c[g>>2]|0;if(d[(c[g>>2]|0)+56>>0]|0){c[h>>2]=EK(b)|0;c[h>>2]=c[h>>2];if(!(c[h>>2]|0)){c[h>>2]=bL(c[g>>2]|0)|0;c[c[e>>2]>>2]=0}c[f>>2]=c[h>>2];k=c[f>>2]|0;i=j;return k|0}a=c[e>>2]|0;if(c[b+36>>2]|0){c[a>>2]=0;c[h>>2]=HK((c[g>>2]|0)+64|0,(c[g>>2]|0)+36|0)|0}else c[a>>2]=1;c[f>>2]=c[h>>2];k=c[f>>2]|0;i=j;return k|0}function JI(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;f=h+8|0;e=h+4|0;g=h;c[f>>2]=a;c[e>>2]=b;c[g>>2]=gF(c[f>>2]|0)|0;do if(!(c[g>>2]|0)){e=c[e>>2]|0;if(!(d[(c[f>>2]|0)+66>>0]|0)){c[e>>2]=1;break}else{c[e>>2]=0;c[g>>2]=JF(c[f>>2]|0)|0;break}}while(0);i=h;return c[g>>2]|0}function KI(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;f=l+20|0;m=l+16|0;g=l+12|0;j=l+8|0;k=l+4|0;h=l;c[f>>2]=b;c[m>>2]=d;c[g>>2]=e;c[j>>2]=c[(c[m>>2]|0)+16>>2];b=c[j>>2]|0;if(a[(c[j>>2]|0)+56>>0]|0){c[k>>2]=UK(c[b+20>>2]|0,c[g>>2]|0)|0;m=c[k>>2]|0;i=l;return m|0}c[h>>2]=c[b+36>>2];c[(c[j>>2]|0)+36>>2]=c[(c[h>>2]|0)+4>>2];c[(c[h>>2]|0)+4>>2]=0;if(!(c[(c[j>>2]|0)+36+4>>2]|0))oK(c[f>>2]|0,c[h>>2]|0);c[c[g>>2]>>2]=((c[(c[j>>2]|0)+36>>2]|0)!=0^1)&1;c[k>>2]=0;m=c[k>>2]|0;i=l;return m|0}function LI(b,e){b=b|0;e=e|0;var f=0,g=0,h=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;t=i;i=i+64|0;j=t+52|0;u=t+48|0;k=t+44|0;r=t+40|0;s=t+36|0;q=t+32|0;g=t+28|0;p=t+24|0;h=t+20|0;f=t+16|0;n=t+12|0;l=t+8|0;m=t+4|0;o=t;c[u>>2]=b;c[k>>2]=e;c[s>>2]=0;c[r>>2]=c[(c[u>>2]|0)+16>>2];b=(c[(c[k>>2]|0)+16>>2]|0)+1|0;if((d[(c[(c[k>>2]|0)+16>>2]|0)+1>>0]|0|0)<128)c[f>>2]=d[b>>0];else tF(b,f)|0;do if((c[f>>2]|0)>0&(c[f>>2]|0)<10&(c[f>>2]|0)!=7){u=(c[r>>2]|0)+60|0;a[u>>0]=(d[u>>0]|0)&1}else{if((c[f>>2]|0)>10?(c[f>>2]&1|0)!=0:0){u=(c[r>>2]|0)+60|0;a[u>>0]=(d[u>>0]|0)&2;break}a[(c[r>>2]|0)+60>>0]=0}while(0);c[p>>2]=(c[(c[k>>2]|0)+12>>2]|0)+8;f=c[(c[k>>2]|0)+12>>2]|0;u=c[(c[k>>2]|0)+12>>2]|0;c[h>>2]=f+(zF(u,((u|0)<0)<<31>>31)|0);if(c[(c[r>>2]|0)+4>>2]|0){b=c[r>>2]|0;if(c[(c[r>>2]|0)+36+4>>2]|0){if(c[b+48>>2]|0)b=((c[(c[r>>2]|0)+48>>2]|0)+(c[p>>2]|0)|0)>(c[(c[r>>2]|0)+4>>2]|0);else b=0;c[g>>2]=b&1}else{if((c[b+36+8>>2]|0)<=(c[(c[r>>2]|0)+4>>2]|0))if((c[(c[r>>2]|0)+36+8>>2]|0)>(c[c[r>>2]>>2]|0))b=(Hu()|0)!=0;else b=0;else b=1;c[g>>2]=b&1}if(c[g>>2]|0){c[s>>2]=EK(c[r>>2]|0)|0;c[(c[r>>2]|0)+36+8>>2]=0;c[(c[r>>2]|0)+48>>2]=0}}u=(c[r>>2]|0)+36+8|0;c[u>>2]=(c[u>>2]|0)+(c[h>>2]|0);if((c[h>>2]|0)>(c[(c[r>>2]|0)+8>>2]|0))c[(c[r>>2]|0)+8>>2]=c[h>>2];do if(c[(c[r>>2]|0)+36+4>>2]|0){c[n>>2]=(c[(c[r>>2]|0)+48>>2]|0)+(c[p>>2]|0);do if((c[n>>2]|0)>(c[(c[r>>2]|0)+52>>2]|0)){c[m>>2]=(c[(c[r>>2]|0)+36>>2]|0)-(c[(c[r>>2]|0)+36+4>>2]|0);c[o>>2]=c[(c[r>>2]|0)+52>>2]<<1;while(1){b=c[o>>2]|0;if((c[o>>2]|0)>=(c[n>>2]|0))break;c[o>>2]=b<<1}if((b|0)>(c[(c[r>>2]|0)+4>>2]|0))c[o>>2]=c[(c[r>>2]|0)+4>>2];if((c[o>>2]|0)<(c[n>>2]|0))c[o>>2]=c[n>>2];u=c[o>>2]|0;c[l>>2]=bg(c[(c[r>>2]|0)+36+4>>2]|0,u,((u|0)<0)<<31>>31)|0;if(c[l>>2]|0){c[(c[r>>2]|0)+36>>2]=(c[l>>2]|0)+(c[m>>2]|0);c[(c[r>>2]|0)+36+4>>2]=c[l>>2];c[(c[r>>2]|0)+52>>2]=c[o>>2];break}c[j>>2]=7;u=c[j>>2]|0;i=t;return u|0}while(0);c[q>>2]=(c[(c[r>>2]|0)+36+4>>2]|0)+(c[(c[r>>2]|0)+48>>2]|0);u=(c[r>>2]|0)+48|0;c[u>>2]=(c[u>>2]|0)+((c[p>>2]|0)+7&-8);if(c[(c[r>>2]|0)+36>>2]|0)c[(c[q>>2]|0)+4>>2]=(c[(c[r>>2]|0)+36>>2]|0)-(c[(c[r>>2]|0)+36+4>>2]|0)}else{u=c[p>>2]|0;c[q>>2]=_f(u,((u|0)<0)<<31>>31)|0;if(c[q>>2]|0){c[(c[q>>2]|0)+4>>2]=c[(c[r>>2]|0)+36>>2];break}c[j>>2]=7;u=c[j>>2]|0;i=t;return u|0}while(0);iR((c[q>>2]|0)+8|0,c[(c[k>>2]|0)+16>>2]|0,c[(c[k>>2]|0)+12>>2]|0)|0;c[c[q>>2]>>2]=c[(c[k>>2]|0)+12>>2];c[(c[r>>2]|0)+36>>2]=c[q>>2];c[j>>2]=c[s>>2];u=c[j>>2]|0;i=t;return u|0}function MI(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=i;i=i+128|0;g=o+116|0;r=o+112|0;q=o+108|0;h=o+104|0;p=o+80|0;f=o+100|0;l=o+96|0;m=o+92|0;j=o+88|0;k=o+40|0;n=o;c[r>>2]=a;c[q>>2]=b;c[h>>2]=e;e=p;c[e>>2]=0;c[e+4>>2]=0;sH(c[q>>2]|0,p)|0;AF(k,c[r>>2]|0,0);c[f>>2]=hI(c[q>>2]|0,0,c[p>>2]|0,1,k)|0;if(c[f>>2]|0){c[g>>2]=c[f>>2];r=c[g>>2]|0;i=o;return r|0}a=c[k+16>>2]|0;if((d[c[k+16>>2]>>0]|0|0)<128)c[l>>2]=d[a>>0];else tF(a,l)|0;if((c[l>>2]|0)>>>0>=3?(c[l>>2]|0)<=(c[k+12>>2]|0):0){a=(c[k+16>>2]|0)+((c[l>>2]|0)-1)|0;if((d[(c[k+16>>2]|0)+((c[l>>2]|0)-1)>>0]|0|0)<128)c[m>>2]=d[a>>0];else tF(a,m)|0;if(!((c[m>>2]|0)>>>0<1|(c[m>>2]|0)>>>0>9|(c[m>>2]|0)==7)?(c[j>>2]=d[35916+(c[m>>2]|0)>>0],(c[k+12>>2]|0)>>>0>=((c[l>>2]|0)+(c[j>>2]|0)|0)>>>0):0){vF((c[k+16>>2]|0)+((c[k+12>>2]|0)-(c[j>>2]|0))|0,c[m>>2]|0,n)|0;p=n;q=c[p+4>>2]|0;r=c[h>>2]|0;c[r>>2]=c[p>>2];c[r+4>>2]=q;Ug(k);c[g>>2]=0;r=c[g>>2]|0;i=o;return r|0}}Ug(k);c[g>>2]=Lj(72119)|0;r=c[g>>2]|0;i=o;return r|0}function NI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+80|0;f=o+72|0;g=o+68|0;p=o+64|0;h=o+60|0;j=o+56|0;l=o+40|0;n=o+52|0;m=o+48|0;k=o;c[g>>2]=a;c[p>>2]=b;c[h>>2]=d;c[j>>2]=e;b=l;c[b>>2]=0;c[b+4>>2]=0;c[m>>2]=c[(c[p>>2]|0)+16>>2];sH(c[m>>2]|0,l)|0;b=l;a=c[b+4>>2]|0;e=l;d=c[e+4>>2]|0;if((a|0)<0|(a|0)==0&(c[b>>2]|0)>>>0<=0|((d|0)>0|(d|0)==0&(c[e>>2]|0)>>>0>2147483647)){c[c[j>>2]>>2]=0;c[f>>2]=Lj(72153)|0;p=c[f>>2]|0;i=o;return p|0}AF(k,c[g>>2]|0,0);c[n>>2]=hI(c[m>>2]|0,0,c[l>>2]|0,1,k)|0;if(c[n>>2]|0){c[f>>2]=c[n>>2];p=c[f>>2]|0;i=o;return p|0}else{p=rF(c[k+12>>2]|0,c[k+16>>2]|0,c[h>>2]|0)|0;c[c[j>>2]>>2]=p;Ug(k);c[f>>2]=0;p=c[f>>2]|0;i=o;return p|0}return 0}function OI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f+12|0;h=f+8|0;g=f+4|0;e=f;c[j>>2]=a;c[h>>2]=b;c[g>>2]=d;kg(c[j>>2]|0);c[e>>2]=DK(c[j>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;i=f;return c[e>>2]|0}function PI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+48|0;p=n+32|0;o=n+28|0;f=n+24|0;g=n+20|0;j=n+16|0;k=n+12|0;h=n+8|0;m=n+4|0;l=n;c[p>>2]=a;c[o>>2]=b;c[f>>2]=d;c[g>>2]=e;c[h>>2]=(c[(c[p>>2]|0)+16>>2]|0)+(c[o>>2]<<4);c[k>>2]=(c[(c[h>>2]|0)+12>>2]|0)+8;c[j>>2]=c[(c[k>>2]|0)+8>>2];while(1){if(!(c[j>>2]|0))break;c[m>>2]=c[(c[j>>2]|0)+8>>2];if((c[(c[m>>2]|0)+28>>2]|0)==(c[f>>2]|0))c[(c[m>>2]|0)+28>>2]=c[g>>2];c[j>>2]=c[c[j>>2]>>2]}c[k>>2]=(c[(c[h>>2]|0)+12>>2]|0)+24;c[j>>2]=c[(c[k>>2]|0)+8>>2];while(1){if(!(c[j>>2]|0))break;c[l>>2]=c[(c[j>>2]|0)+8>>2];if((c[(c[l>>2]|0)+44>>2]|0)==(c[f>>2]|0))c[(c[l>>2]|0)+44>>2]=c[g>>2];c[j>>2]=c[c[j>>2]>>2]}i=n;return}function QI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[h>>2]=c[(c[e>>2]|0)+4>>2];kg(c[e>>2]|0);c[j>>2]=nH(c[h>>2]|0,c[f>>2]|0,0)|0;if(c[j>>2]|0){j=c[j>>2]|0;i=k;return j|0}sK(c[e>>2]|0,0,0,1);c[j>>2]=tK(c[h>>2]|0,c[f>>2]|0,0,c[g>>2]|0)|0;j=c[j>>2]|0;i=k;return j|0}function RI(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=b;c[g>>2]=e;mK(c[(c[g>>2]|0)+20>>2]|0);c[(c[g>>2]|0)+20>>2]=0;c[h>>2]=0;while(1){if((c[h>>2]|0)>=(d[(c[g>>2]|0)+59>>0]|0|0))break;c[j>>2]=(c[g>>2]|0)+64+((c[h>>2]|0)*72|0);nK(c[f>>2]|0,c[j>>2]|0);c[(c[j>>2]|0)+8>>2]=c[g>>2];c[h>>2]=(c[h>>2]|0)+1}if(!(c[(c[g>>2]|0)+36+4>>2]|0))oK(0,c[(c[g>>2]|0)+36>>2]|0);c[(c[g>>2]|0)+36>>2]=0;c[(c[g>>2]|0)+36+8>>2]=0;a[(c[g>>2]|0)+56>>0]=0;c[(c[g>>2]|0)+48>>2]=0;c[(c[g>>2]|0)+8>>2]=0;Sf(c[f>>2]|0,c[(c[g>>2]|0)+32>>2]|0);c[(c[g>>2]|0)+32>>2]=0;i=k;return}function SI(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=QI(c[c[d>>2]>>2]|0,c[(c[d>>2]|0)+52>>2]|0,0)|0;i=b;return a|0}function TI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;f=e+16|0;k=e+12|0;h=e+8|0;g=e+4|0;j=e;c[f>>2]=a;c[k>>2]=b;c[h>>2]=d;c[j>>2]=(c[(c[f>>2]|0)+16>>2]|0)+(c[k>>2]<<4);c[g>>2]=Oj((c[(c[j>>2]|0)+12>>2]|0)+8|0,c[h>>2]|0,0)|0;Qf(c[f>>2]|0,c[g>>2]|0);d=(c[f>>2]|0)+24|0;c[d>>2]=c[d>>2]|2;i=e; -return}function UI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;h=i;i=i+32|0;e=h+20|0;l=h+16|0;j=h+12|0;g=h+8|0;k=h+4|0;f=h;c[e>>2]=a;c[l>>2]=b;c[j>>2]=d;c[k>>2]=(c[(c[(c[e>>2]|0)+16>>2]|0)+(c[l>>2]<<4)+12>>2]|0)+24;c[g>>2]=Oj(c[k>>2]|0,c[j>>2]|0,0)|0;if(!(c[g>>2]|0)){l=c[e>>2]|0;l=l+24|0;k=c[l>>2]|0;k=k|2;c[l>>2]=k;i=h;return}a=c[g>>2]|0;if((c[(c[(c[g>>2]|0)+12>>2]|0)+8>>2]|0)!=(c[g>>2]|0)){c[f>>2]=c[(c[a+12>>2]|0)+8>>2];while(1){if(c[f>>2]|0)b=(c[(c[f>>2]|0)+20>>2]|0)!=(c[g>>2]|0);else b=0;a=c[f>>2]|0;if(!b)break;c[f>>2]=c[a+20>>2]}if((a|0)!=0?(c[(c[f>>2]|0)+20>>2]|0)==(c[g>>2]|0):0)c[(c[f>>2]|0)+20>>2]=c[(c[g>>2]|0)+20>>2]}else c[(c[(c[g>>2]|0)+12>>2]|0)+8>>2]=c[a+20>>2];WG(c[e>>2]|0,c[g>>2]|0);l=c[e>>2]|0;l=l+24|0;k=c[l>>2]|0;k=k|2;c[l>>2]=k;i=h;return}function VI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;j=i;i=i+32|0;f=j+24|0;m=j+20|0;k=j+16|0;g=j+12|0;l=j+8|0;e=j+4|0;h=j;c[f>>2]=a;c[m>>2]=b;c[k>>2]=d;c[l>>2]=(c[(c[(c[f>>2]|0)+16>>2]|0)+(c[m>>2]<<4)+12>>2]|0)+40;c[g>>2]=Oj(c[l>>2]|0,c[k>>2]|0,0)|0;if(!(c[g>>2]|0)){i=j;return}if((c[(c[g>>2]|0)+20>>2]|0)==(c[(c[g>>2]|0)+24>>2]|0)){c[e>>2]=BB(c[g>>2]|0)|0;c[h>>2]=(c[e>>2]|0)+60;while(1){a=(c[c[h>>2]>>2]|0)+32|0;if((c[c[h>>2]>>2]|0)==(c[g>>2]|0))break;c[h>>2]=a}c[c[h>>2]>>2]=c[a>>2]}Pf(c[f>>2]|0,c[g>>2]|0);m=(c[f>>2]|0)+24|0;c[m>>2]=c[m>>2]|2;i=j;return}function WI(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var 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;t=i;i=i+240|0;s=t+16|0;r=t+8|0;v=t+124|0;j=t+120|0;k=t+116|0;u=t+112|0;l=t+108|0;m=t+104|0;p=t+32|0;o=t+24|0;q=t+20|0;n=t;c[v>>2]=b;c[j>>2]=e;c[k>>2]=f;c[u>>2]=g;c[l>>2]=h;c[o>>2]=c[(c[v>>2]|0)+4>>2];c[q>>2]=c[(c[(c[o>>2]|0)+4>>2]|0)+24>>2];kg(c[v>>2]|0);c[p>>2]=c[o>>2];c[p+4>>2]=c[c[o>>2]>>2];c[p+12>>2]=$E(c[p>>2]|0)|0;c[p+16>>2]=c[u>>2];c[p+20>>2]=0;c[p+24>>2]=0;c[p+28>>2]=0;c[p+32>>2]=0;c[p+36>>2]=0;c[p+8>>2]=0;c[p+68>>2]=0;cg(p+40|0,0,t+128|0,100,1e9);a[p+40+25>>0]=1;a:do if(c[p+12>>2]|0){c[p+8>>2]=ig((((c[p+12>>2]|0)>>>0)/8|0)+1|0,0)|0;if(!(c[p+8>>2]|0)){c[p+24>>2]=1;break}c[p+68>>2]=Ti(c[(c[o>>2]|0)+32>>2]|0)|0;if(!(c[p+68>>2]|0)){c[p+24>>2]=1;break}c[m>>2]=(((c[381]|0)>>>0)/((c[(c[o>>2]|0)+32>>2]|0)>>>0)|0)+1;if((c[m>>2]|0)>>>0<=(c[p+12>>2]|0)>>>0)dK(p,c[m>>2]|0);c[p+28>>2]=42551;v=$q((c[(c[(c[o>>2]|0)+12>>2]|0)+56>>2]|0)+32|0)|0;eK(p,1,v,$q((c[(c[(c[o>>2]|0)+12>>2]|0)+56>>2]|0)+36|0)|0);c[p+28>>2]=0;v=(c[(c[o>>2]|0)+4>>2]|0)+24|0;c[v>>2]=c[v>>2]&-268435457;c[m>>2]=0;while(1){if(!((c[m>>2]|0)<(c[k>>2]|0)?(c[p+16>>2]|0)!=0:0))break;if(c[(c[j>>2]|0)+(c[m>>2]<<2)>>2]|0){if((d[(c[o>>2]|0)+17>>0]|0)!=0?(c[(c[j>>2]|0)+(c[m>>2]<<2)>>2]|0)>1:0)fK(p,c[(c[j>>2]|0)+(c[m>>2]<<2)>>2]|0,1,0);gK(p,c[(c[j>>2]|0)+(c[m>>2]<<2)>>2]|0,n,-1,2147483647)|0}c[m>>2]=(c[m>>2]|0)+1}c[(c[(c[o>>2]|0)+4>>2]|0)+24>>2]=c[q>>2];c[m>>2]=1;while(1){if(!((c[m>>2]|0)>>>0<=(c[p+12>>2]|0)>>>0?(c[p+16>>2]|0)!=0:0))break a;do if(!(hK(p,c[m>>2]|0)|0)){v=lF(c[o>>2]|0,c[m>>2]|0)|0;if((v|0)==(c[m>>2]|0)?(a[(c[o>>2]|0)+17>>0]|0)!=0:0)break;c[r>>2]=c[m>>2];iK(p,42567,r)}while(0);if(((hK(p,c[m>>2]|0)|0)!=0?(v=lF(c[o>>2]|0,c[m>>2]|0)|0,(v|0)==(c[m>>2]|0)):0)?(d[(c[o>>2]|0)+17>>0]|0)!=0:0){c[s>>2]=c[m>>2];iK(p,42589,s)}c[m>>2]=(c[m>>2]|0)+1}}while(0);Wi(c[p+68>>2]|0);Kd(c[p+8>>2]|0);if(c[p+24>>2]|0){fA(p+40|0);v=p+20|0;c[v>>2]=(c[v>>2]|0)+1}c[c[l>>2]>>2]=c[p+20>>2];if(c[p+20>>2]|0){v=p+40|0;v=eg(v)|0;i=t;return v|0}fA(p+40|0);v=p+40|0;v=eg(v)|0;i=t;return v|0}function XI(d){d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=d;c[f>>2]=c[(c[e>>2]|0)+32>>2];Ug(c[e>>2]|0);d=Fw(c[f>>2]|0,64,0)|0;c[(c[e>>2]|0)+20>>2]=d;if(a[(c[f>>2]|0)+65>>0]|0){b[(c[e>>2]|0)+8>>1]=1;c[(c[e>>2]|0)+24>>2]=0;i=g;return}else{d=$t(c[f>>2]|0,c[(c[e>>2]|0)+20>>2]|0)|0;c[(c[e>>2]|0)+24>>2]=d;d=cK(c[f>>2]|0,c[(c[e>>2]|0)+20>>2]|0,c[(c[e>>2]|0)+24>>2]|0)|0;c[c[e>>2]>>2]=d;b[(c[e>>2]|0)+8>>1]=32;i=g;return}}function YI(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;h=l;j=l+12|0;k=l+8|0;c[g>>2]=a;a=h;c[a>>2]=d;c[a+4>>2]=f;c[j>>2]=$J(c[g>>2]|0)|0;if(!(c[j>>2]|0)){i=l;return}d=h;f=c[d+4>>2]|0;a=c[j>>2]|0;c[a>>2]=c[d>>2];c[a+4>>2]=f;c[(c[j>>2]|0)+8>>2]=0;c[k>>2]=c[(c[g>>2]|0)+12>>2];if(c[k>>2]|0){if(((e[(c[g>>2]|0)+26>>1]|0)&1|0)!=0?(h,d=c[h+4>>2]|0,a=c[k>>2]|0,f=c[a+4>>2]|0,(d|0)<(f|0)|((d|0)==(f|0)?(c[h>>2]|0)>>>0<=(c[a>>2]|0)>>>0:0)):0){a=(c[g>>2]|0)+26|0;b[a>>1]=(e[a>>1]|0)&-2}c[(c[k>>2]|0)+8>>2]=c[j>>2]}else c[(c[g>>2]|0)+8>>2]=c[j>>2];c[(c[g>>2]|0)+12>>2]=c[j>>2];i=l;return}function ZI(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;d=h+8|0;f=h+4|0;g=h;c[f>>2]=a;c[g>>2]=b;if(!((e[(c[f>>2]|0)+26>>1]|0)&2))bK(c[f>>2]|0);if(!(c[(c[f>>2]|0)+8>>2]|0)){c[d>>2]=0;b=c[d>>2]|0;i=h;return b|0}j=c[(c[f>>2]|0)+8>>2]|0;a=c[j+4>>2]|0;b=c[g>>2]|0;c[b>>2]=c[j>>2];c[b+4>>2]=a;c[(c[f>>2]|0)+8>>2]=c[(c[(c[f>>2]|0)+8>>2]|0)+8>>2];if(!(c[(c[f>>2]|0)+8>>2]|0))FF(c[f>>2]|0);c[d>>2]=1;j=c[d>>2]|0;i=h;return j|0}function _I(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;o=s+36|0;h=s+32|0;j=s+28|0;p=s;q=s+24|0;r=s+20|0;m=s+16|0;k=s+12|0;l=s+8|0;c[h>>2]=a;c[j>>2]=d;a=p;c[a>>2]=f;c[a+4>>2]=g;if((c[j>>2]|0)!=(c[(c[h>>2]|0)+28>>2]|0)){c[q>>2]=c[(c[h>>2]|0)+8>>2];if(c[q>>2]|0){c[m>>2]=(c[h>>2]|0)+20;if(!((e[(c[h>>2]|0)+26>>1]|0)&1))c[q>>2]=XJ(c[q>>2]|0)|0;c[r>>2]=c[(c[h>>2]|0)+20>>2];while(1){if(!(c[r>>2]|0))break;c[m>>2]=(c[r>>2]|0)+8;if(!(c[(c[r>>2]|0)+12>>2]|0)){n=8;break}ZJ(c[(c[r>>2]|0)+12>>2]|0,k,l);c[(c[r>>2]|0)+12>>2]=0;c[q>>2]=_J(c[k>>2]|0,c[q>>2]|0)|0;c[r>>2]=c[(c[r>>2]|0)+8>>2]}if((n|0)==8){n=YJ(c[q>>2]|0)|0;c[(c[r>>2]|0)+12>>2]=n}if((c[r>>2]|0)==0?(n=$J(c[h>>2]|0)|0,c[r>>2]=n,c[c[m>>2]>>2]=n,(c[r>>2]|0)!=0):0){n=c[r>>2]|0;c[n>>2]=0;c[n+4>>2]=0;c[(c[r>>2]|0)+8>>2]=0;n=YJ(c[q>>2]|0)|0;c[(c[r>>2]|0)+12>>2]=n}c[(c[h>>2]|0)+8>>2]=0;c[(c[h>>2]|0)+12>>2]=0;n=(c[h>>2]|0)+26|0;b[n>>1]=e[n>>1]|0|1}c[(c[h>>2]|0)+28>>2]=c[j>>2]}c[r>>2]=c[(c[h>>2]|0)+20>>2];a:while(1){if(!(c[r>>2]|0)){n=25;break}c[q>>2]=c[(c[r>>2]|0)+12>>2];while(1){if(!(c[q>>2]|0))break;m=c[q>>2]|0;a=c[m+4>>2]|0;n=p;l=c[n+4>>2]|0;f=c[q>>2]|0;if((a|0)<(l|0)|((a|0)==(l|0)?(c[m>>2]|0)>>>0<(c[n>>2]|0)>>>0:0)){c[q>>2]=c[f+8>>2];continue}m=f;a=c[m+4>>2]|0;n=p;l=c[n+4>>2]|0;if(!((a|0)>(l|0)|((a|0)==(l|0)?(c[m>>2]|0)>>>0>(c[n>>2]|0)>>>0:0))){n=23;break a}c[q>>2]=c[(c[q>>2]|0)+12>>2]}c[r>>2]=c[(c[r>>2]|0)+8>>2]}if((n|0)==23){c[o>>2]=1;r=c[o>>2]|0;i=s;return r|0}else if((n|0)==25){c[o>>2]=0;r=c[o>>2]|0;i=s;return r|0}return 0}function $I(a){a=a|0;var b=0,e=0,f=0;f=i;i=i+16|0;b=f+4|0;e=f;c[e>>2]=a;if((d[(c[e>>2]|0)+17>>0]|0|0)>=3){c[b>>2]=0;a=c[b>>2]|0;i=f;return a|0}if((c[c[(c[e>>2]|0)+68>>2]>>2]|0)!=0?(a=(c[e>>2]|0)+80|0,e=c[a+4>>2]|0,(e|0)>0|(e|0)==0&(c[a>>2]|0)>>>0>0):0){c[b>>2]=0;a=c[b>>2]|0;i=f;return a|0}c[b>>2]=1;a=c[b>>2]|0;i=f;return a|0}function aJ(a){a=a|0;var b=0,e=0,f=0;e=i;i=i+16|0;f=e+4|0;b=e;c[f>>2]=a;c[b>>2]=c[c[(c[f>>2]|0)+64>>2]>>2];if(d[(c[f>>2]|0)+4>>0]|0){f=1;f=f&1;i=e;return f|0}if((c[c[b>>2]>>2]|0)<2){f=0;f=f&1;i=e;return f|0}f=(c[(c[b>>2]|0)+52>>2]|0)!=0;f=f&1;i=e;return f|0}function bJ(a){a=a|0;var b=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+8|0;f=g+4|0;e=g;c[b>>2]=a;c[f>>2]=0;if(!(c[(c[b>>2]|0)+216>>2]|0)){c[e>>2]=0;c[f>>2]=vt(c[b>>2]|0,1)|0;if(!(c[f>>2]|0))c[f>>2]=Nr(c[c[b>>2]>>2]|0,c[(c[b>>2]|0)+220>>2]|0,0,e)|0;if((c[f>>2]|0)==0&(c[e>>2]|0)!=0)c[f>>2]=SJ(c[b>>2]|0)|0}if(c[f>>2]|0){f=c[f>>2]|0;i=g;return f|0}if(!(c[(c[b>>2]|0)+216>>2]|0)){f=c[f>>2]|0;i=g;return f|0}c[f>>2]=TJ(c[b>>2]|0)|0;if(c[f>>2]|0){f=c[f>>2]|0;i=g;return f|0}c[f>>2]=cr(c[(c[b>>2]|0)+216>>2]|0,d[(c[b>>2]|0)+10>>0]|0,c[(c[b>>2]|0)+160>>2]|0,c[(c[b>>2]|0)+208>>2]|0)|0;c[(c[b>>2]|0)+216>>2]=0;Xi(c[b>>2]|0);f=c[f>>2]|0;i=g;return f|0}function cJ(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+12|0;g=l+8|0;h=l+16|0;j=l+4|0;k=l;c[f>>2]=b;c[g>>2]=e;a[h>>0]=a[(c[f>>2]|0)+5>>0]|0;if((a[(c[f>>2]|0)+16>>0]|0)!=0?(c[g>>2]|0)!=4&(c[g>>2]|0)!=2:0)c[g>>2]=d[h>>0];do if((c[g>>2]|0)!=(d[h>>0]|0)){a[(c[f>>2]|0)+5>>0]=c[g>>2];if(((a[(c[f>>2]|0)+4>>0]|0)==0?(d[h>>0]&5|0)==1:0)?(c[g>>2]&1|0)==0:0){hr(c[(c[f>>2]|0)+68>>2]|0)|0;if((d[(c[f>>2]|0)+18>>0]|0)>=2){qr(c[c[f>>2]>>2]|0,c[(c[f>>2]|0)+180>>2]|0,0)|0;break}c[j>>2]=0;c[k>>2]=d[(c[f>>2]|0)+17>>0];if(!(c[k>>2]|0))c[j>>2]=LJ(c[f>>2]|0)|0;if((d[(c[f>>2]|0)+17>>0]|0)==1)c[j>>2]=vt(c[f>>2]|0,2)|0;if(!(c[j>>2]|0))qr(c[c[f>>2]>>2]|0,c[(c[f>>2]|0)+180>>2]|0,0)|0;if((c[j>>2]|0)==0&(c[k>>2]|0)==1){wr(c[f>>2]|0,1)|0;break}if(c[k>>2]|0)break;dr(c[f>>2]|0);break}if((c[g>>2]|0)==2)hr(c[(c[f>>2]|0)+68>>2]|0)|0}while(0);i=l;return d[(c[f>>2]|0)+5>>0]|0}function uR(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;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return(C=n,f)|0}else{if(!g){n=0;f=0;return(C=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return(C=n,f)|0}}g=(i|0)==0;do if(h){if(!g){g=(aa(i|0)|0)-(aa(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<>>(m>>>0)&b;g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return(C=n,f)|0}g=h-1|0;if(g&h){i=(aa(h|0)|0)+33-(aa(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(f){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return(C=o,p)|0}else{p=nR(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return(C=o,p)|0}}else{if(g){if(f){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return(C=o,p)|0}if(!l){if(f){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return(C=o,p)|0}g=i-1|0;if(!(g&i)){if(f){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((nR(i|0)|0)>>>0);return(C=o,p)|0}g=(aa(i|0)|0)-(aa(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return(C=o,p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=gR(m|0,l|0,-1,-1)|0;d=C;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;fR(k,d,e,n)|0;p=C;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=fR(e,n,o&m,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l)|0;b=C;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return(C=o,p)|0}function vR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ob[a&255](b|0,c|0,d|0)|0}function wR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(0,a|0,b|0,c|0)|0}function xR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(1,a|0,b|0,c|0)|0}function yR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(2,a|0,b|0,c|0)|0}function zR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(3,a|0,b|0,c|0)|0}function AR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(4,a|0,b|0,c|0)|0}function BR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(5,a|0,b|0,c|0)|0}function CR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(6,a|0,b|0,c|0)|0}function DR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(7,a|0,b|0,c|0)|0}function ER(a,b,c){a=a|0;b=b|0;c=c|0;return ea(8,a|0,b|0,c|0)|0}function FR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(9,a|0,b|0,c|0)|0}function GR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(10,a|0,b|0,c|0)|0}function HR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(11,a|0,b|0,c|0)|0}function IR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(12,a|0,b|0,c|0)|0}function JR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(13,a|0,b|0,c|0)|0}function KR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(14,a|0,b|0,c|0)|0}function LR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(15,a|0,b|0,c|0)|0}function MR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(16,a|0,b|0,c|0)|0}function NR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(17,a|0,b|0,c|0)|0}function OR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(18,a|0,b|0,c|0)|0}function PR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(19,a|0,b|0,c|0)|0}function QR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(20,a|0,b|0,c|0)|0}function RR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(21,a|0,b|0,c|0)|0}function SR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(22,a|0,b|0,c|0)|0}function TR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(23,a|0,b|0,c|0)|0}function UR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(24,a|0,b|0,c|0)|0}function VR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(25,a|0,b|0,c|0)|0}function WR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(26,a|0,b|0,c|0)|0}function XR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(27,a|0,b|0,c|0)|0}function YR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(28,a|0,b|0,c|0)|0}function ZR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(29,a|0,b|0,c|0)|0}function _R(a,b,c){a=a|0;b=b|0;c=c|0;return ea(30,a|0,b|0,c|0)|0}function $R(a,b,c){a=a|0;b=b|0;c=c|0;return ea(31,a|0,b|0,c|0)|0}function aS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(32,a|0,b|0,c|0)|0}function bS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(33,a|0,b|0,c|0)|0}function cS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(34,a|0,b|0,c|0)|0}function dS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(35,a|0,b|0,c|0)|0}function eS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(36,a|0,b|0,c|0)|0}function fS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(37,a|0,b|0,c|0)|0}function gS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(38,a|0,b|0,c|0)|0}function hS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(39,a|0,b|0,c|0)|0}function iS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(40,a|0,b|0,c|0)|0}function jS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(41,a|0,b|0,c|0)|0}function kS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(42,a|0,b|0,c|0)|0}function lS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(43,a|0,b|0,c|0)|0}function mS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(44,a|0,b|0,c|0)|0}function nS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(45,a|0,b|0,c|0)|0}function oS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(46,a|0,b|0,c|0)|0}function pS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(47,a|0,b|0,c|0)|0}function qS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(48,a|0,b|0,c|0)|0}function rS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(49,a|0,b|0,c|0)|0}function sS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(50,a|0,b|0,c|0)|0}function tS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(51,a|0,b|0,c|0)|0}function uS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(52,a|0,b|0,c|0)|0}function vS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(53,a|0,b|0,c|0)|0}function wS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(54,a|0,b|0,c|0)|0}function xS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(55,a|0,b|0,c|0)|0}function yS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(56,a|0,b|0,c|0)|0}function zS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(57,a|0,b|0,c|0)|0}function AS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(58,a|0,b|0,c|0)|0}function BS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(59,a|0,b|0,c|0)|0}function CS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(60,a|0,b|0,c|0)|0}function DS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(61,a|0,b|0,c|0)|0}function ES(a,b,c){a=a|0;b=b|0;c=c|0;return ea(62,a|0,b|0,c|0)|0}function FS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(63,a|0,b|0,c|0)|0}function GS(a){a=a|0;return Pb[a&255]()|0}function HS(){return ga(0)|0}function IS(){return ga(1)|0}function JS(){return ga(2)|0}function KS(){return ga(3)|0}function LS(){return ga(4)|0}function MS(){return ga(5)|0}function NS(){return ga(6)|0}function OS(){return ga(7)|0}function PS(){return ga(8)|0}function QS(){return ga(9)|0}function RS(){return ga(10)|0}function SS(){return ga(11)|0}function TS(){return ga(12)|0}function US(){return ga(13)|0}function VS(){return ga(14)|0}function WS(){return ga(15)|0}function XS(){return ga(16)|0}function YS(){return ga(17)|0}function ZS(){return ga(18)|0}function _S(){return ga(19)|0}function $S(){return ga(20)|0}function aT(){return ga(21)|0}function bT(){return ga(22)|0}function cT(){return ga(23)|0}function dT(){return ga(24)|0}function eT(){return ga(25)|0}function fT(){return ga(26)|0}function gT(){return ga(27)|0}function hT(){return ga(28)|0}function iT(){return ga(29)|0}function jT(){return ga(30)|0}function kT(){return ga(31)|0}function lT(){return ga(32)|0}function mT(){return ga(33)|0}function nT(){return ga(34)|0}function oT(){return ga(35)|0}function pT(){return ga(36)|0}function qT(){return ga(37)|0}function rT(){return ga(38)|0}function sT(){return ga(39)|0}function tT(){return ga(40)|0}function uT(){return ga(41)|0}function vT(){return ga(42)|0}function wT(){return ga(43)|0}function xT(){return ga(44)|0}function yT(){return ga(45)|0}function zT(){return ga(46)|0}function AT(){return ga(47)|0}function BT(){return ga(48)|0}function CT(){return ga(49)|0}function DT(){return ga(50)|0}function ET(){return ga(51)|0}function FT(){return ga(52)|0}function GT(){return ga(53)|0}function HT(){return ga(54)|0}function IT(){return ga(55)|0}function JT(){return ga(56)|0}function KT(){return ga(57)|0}function LT(){return ga(58)|0}function MT(){return ga(59)|0}function NT(){return ga(60)|0}function OT(){return ga(61)|0}function PT(){return ga(62)|0}function QT(){return ga(63)|0}function RT(a,b){a=a|0;b=b|0;Qb[a&255](b|0)}function ST(a){a=a|0;ia(0,a|0)}function TT(a){a=a|0;ia(1,a|0)}function UT(a){a=a|0;ia(2,a|0)}function VT(a){a=a|0;ia(3,a|0)}function WT(a){a=a|0;ia(4,a|0)}function XT(a){a=a|0;ia(5,a|0)}function YT(a){a=a|0;ia(6,a|0)}function ZT(a){a=a|0;ia(7,a|0)}function _T(a){a=a|0;ia(8,a|0)}function $T(a){a=a|0;ia(9,a|0)}function aU(a){a=a|0;ia(10,a|0)}function bU(a){a=a|0;ia(11,a|0)}function cU(a){a=a|0;ia(12,a|0)}function dU(a){a=a|0;ia(13,a|0)}function eU(a){a=a|0;ia(14,a|0)}function fU(a){a=a|0;ia(15,a|0)}function gU(a){a=a|0;ia(16,a|0)}function hU(a){a=a|0;ia(17,a|0)}function iU(a){a=a|0;ia(18,a|0)}function jU(a){a=a|0;ia(19,a|0)}function kU(a){a=a|0;ia(20,a|0)}function lU(a){a=a|0;ia(21,a|0)}function mU(a){a=a|0;ia(22,a|0)}function nU(a){a=a|0;ia(23,a|0)}function oU(a){a=a|0;ia(24,a|0)}function pU(a){a=a|0;ia(25,a|0)}function qU(a){a=a|0;ia(26,a|0)}function rU(a){a=a|0;ia(27,a|0)}function sU(a){a=a|0;ia(28,a|0)}function tU(a){a=a|0;ia(29,a|0)}function uU(a){a=a|0;ia(30,a|0)}function vU(a){a=a|0;ia(31,a|0)}function wU(a){a=a|0;ia(32,a|0)}function xU(a){a=a|0;ia(33,a|0)}function yU(a){a=a|0;ia(34,a|0)}function zU(a){a=a|0;ia(35,a|0)}function AU(a){a=a|0;ia(36,a|0)}function BU(a){a=a|0;ia(37,a|0)}function CU(a){a=a|0;ia(38,a|0)}function DU(a){a=a|0;ia(39,a|0)}function EU(a){a=a|0;ia(40,a|0)}function FU(a){a=a|0;ia(41,a|0)}function GU(a){a=a|0;ia(42,a|0)}function HU(a){a=a|0;ia(43,a|0)}function IU(a){a=a|0;ia(44,a|0)}function JU(a){a=a|0;ia(45,a|0)}function KU(a){a=a|0;ia(46,a|0)}function LU(a){a=a|0;ia(47,a|0)}function MU(a){a=a|0;ia(48,a|0)}function NU(a){a=a|0;ia(49,a|0)}function OU(a){a=a|0;ia(50,a|0)}function PU(a){a=a|0;ia(51,a|0)}function QU(a){a=a|0;ia(52,a|0)}function RU(a){a=a|0;ia(53,a|0)}function SU(a){a=a|0;ia(54,a|0)}function TU(a){a=a|0;ia(55,a|0)}function UU(a){a=a|0;ia(56,a|0)}function VU(a){a=a|0;ia(57,a|0)}function WU(a){a=a|0;ia(58,a|0)}function XU(a){a=a|0;ia(59,a|0)}function YU(a){a=a|0;ia(60,a|0)}function ZU(a){a=a|0;ia(61,a|0)}function _U(a){a=a|0;ia(62,a|0)}function $U(a){a=a|0;ia(63,a|0)}function aV(a,b,c){a=a|0;b=b|0;c=c|0;Rb[a&255](b|0,c|0)}function bV(a,b){a=a|0;b=b|0;ka(0,a|0,b|0)}function cV(a,b){a=a|0;b=b|0;ka(1,a|0,b|0)}function dV(a,b){a=a|0;b=b|0;ka(2,a|0,b|0)}function eV(a,b){a=a|0;b=b|0;ka(3,a|0,b|0)}function fV(a,b){a=a|0;b=b|0;ka(4,a|0,b|0)}function gV(a,b){a=a|0;b=b|0;ka(5,a|0,b|0)}function hV(a,b){a=a|0;b=b|0;ka(6,a|0,b|0)}function iV(a,b){a=a|0;b=b|0;ka(7,a|0,b|0)}function jV(a,b){a=a|0;b=b|0;ka(8,a|0,b|0)}function kV(a,b){a=a|0;b=b|0;ka(9,a|0,b|0)}function lV(a,b){a=a|0;b=b|0;ka(10,a|0,b|0)}function mV(a,b){a=a|0;b=b|0;ka(11,a|0,b|0)}function nV(a,b){a=a|0;b=b|0;ka(12,a|0,b|0)}function oV(a,b){a=a|0;b=b|0;ka(13,a|0,b|0)}function pV(a,b){a=a|0;b=b|0;ka(14,a|0,b|0)}function qV(a,b){a=a|0;b=b|0;ka(15,a|0,b|0)}function rV(a,b){a=a|0;b=b|0;ka(16,a|0,b|0)}function sV(a,b){a=a|0;b=b|0;ka(17,a|0,b|0)}function tV(a,b){a=a|0;b=b|0;ka(18,a|0,b|0)}function uV(a,b){a=a|0;b=b|0;ka(19,a|0,b|0)}function vV(a,b){a=a|0;b=b|0;ka(20,a|0,b|0)}function wV(a,b){a=a|0;b=b|0;ka(21,a|0,b|0)}function xV(a,b){a=a|0;b=b|0;ka(22,a|0,b|0)}function yV(a,b){a=a|0;b=b|0;ka(23,a|0,b|0)}function zV(a,b){a=a|0;b=b|0;ka(24,a|0,b|0)}function AV(a,b){a=a|0;b=b|0;ka(25,a|0,b|0)}function BV(a,b){a=a|0;b=b|0;ka(26,a|0,b|0)}function CV(a,b){a=a|0;b=b|0;ka(27,a|0,b|0)}function DV(a,b){a=a|0;b=b|0;ka(28,a|0,b|0)}function EV(a,b){a=a|0;b=b|0;ka(29,a|0,b|0)}function FV(a,b){a=a|0;b=b|0;ka(30,a|0,b|0)}function GV(a,b){a=a|0;b=b|0;ka(31,a|0,b|0)}function HV(a,b){a=a|0;b=b|0;ka(32,a|0,b|0)}function IV(a,b){a=a|0;b=b|0;ka(33,a|0,b|0)}function JV(a,b){a=a|0;b=b|0;ka(34,a|0,b|0)}function KV(a,b){a=a|0;b=b|0;ka(35,a|0,b|0)}function LV(a,b){a=a|0;b=b|0;ka(36,a|0,b|0)}function MV(a,b){a=a|0;b=b|0;ka(37,a|0,b|0)}function NV(a,b){a=a|0;b=b|0;ka(38,a|0,b|0)}function OV(a,b){a=a|0;b=b|0;ka(39,a|0,b|0)}function PV(a,b){a=a|0;b=b|0;ka(40,a|0,b|0)}function QV(a,b){a=a|0;b=b|0;ka(41,a|0,b|0)}function RV(a,b){a=a|0;b=b|0;ka(42,a|0,b|0)}function SV(a,b){a=a|0;b=b|0;ka(43,a|0,b|0)}function TV(a,b){a=a|0;b=b|0;ka(44,a|0,b|0)}function UV(a,b){a=a|0;b=b|0;ka(45,a|0,b|0)}function VV(a,b){a=a|0;b=b|0;ka(46,a|0,b|0)}function WV(a,b){a=a|0;b=b|0;ka(47,a|0,b|0)}function XV(a,b){a=a|0;b=b|0;ka(48,a|0,b|0)}function YV(a,b){a=a|0;b=b|0;ka(49,a|0,b|0)}function ZV(a,b){a=a|0;b=b|0;ka(50,a|0,b|0)}function _V(a,b){a=a|0;b=b|0;ka(51,a|0,b|0)}function $V(a,b){a=a|0;b=b|0;ka(52,a|0,b|0)}function aW(a,b){a=a|0;b=b|0;ka(53,a|0,b|0)}function bW(a,b){a=a|0;b=b|0;ka(54,a|0,b|0)}function cW(a,b){a=a|0;b=b|0;ka(55,a|0,b|0)}function dW(a,b){a=a|0;b=b|0;ka(56,a|0,b|0)}function eW(a,b){a=a|0;b=b|0;ka(57,a|0,b|0)}function fW(a,b){a=a|0;b=b|0;ka(58,a|0,b|0)}function gW(a,b){a=a|0;b=b|0;ka(59,a|0,b|0)}function hW(a,b){a=a|0;b=b|0;ka(60,a|0,b|0)}function iW(a,b){a=a|0;b=b|0;ka(61,a|0,b|0)}function jW(a,b){a=a|0;b=b|0;ka(62,a|0,b|0)}function kW(a,b){a=a|0;b=b|0;ka(63,a|0,b|0)}function lW(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 Sb[a&255](b|0,c|0,d|0,e|0,f|0,g|0)|0}function mW(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 ma(0,a|0,b|0,c|0,d|0,e|0,f|0)|0}function nW(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 ma(1,a|0,b|0,c|0,d|0,e|0,f|0)|0}function oW(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 ma(2,a|0,b|0,c|0,d|0,e|0,f|0)|0}function pW(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 ma(3,a|0,b|0,c|0,d|0,e|0,f|0)|0}function qW(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 ma(4,a|0,b|0,c|0,d|0,e|0,f|0)|0}function rW(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 ma(5,a|0,b|0,c|0,d|0,e|0,f|0)|0}function sW(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 ma(6,a|0,b|0,c|0,d|0,e|0,f|0)|0}function tW(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 ma(7,a|0,b|0,c|0,d|0,e|0,f|0)|0}function uW(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 ma(8,a|0,b|0,c|0,d|0,e|0,f|0)|0}function vW(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 ma(9,a|0,b|0,c|0,d|0,e|0,f|0)|0}function wW(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 ma(10,a|0,b|0,c|0,d|0,e|0,f|0)|0}function xW(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 ma(11,a|0,b|0,c|0,d|0,e|0,f|0)|0}function yW(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 ma(12,a|0,b|0,c|0,d|0,e|0,f|0)|0}function zW(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 ma(13,a|0,b|0,c|0,d|0,e|0,f|0)|0}function AW(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 ma(14,a|0,b|0,c|0,d|0,e|0,f|0)|0}function BW(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 ma(15,a|0,b|0,c|0,d|0,e|0,f|0)|0}function CW(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 ma(16,a|0,b|0,c|0,d|0,e|0,f|0)|0}function DW(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 ma(17,a|0,b|0,c|0,d|0,e|0,f|0)|0}function EW(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 ma(18,a|0,b|0,c|0,d|0,e|0,f|0)|0}function FW(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 ma(19,a|0,b|0,c|0,d|0,e|0,f|0)|0}function GW(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 ma(20,a|0,b|0,c|0,d|0,e|0,f|0)|0}function HW(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 ma(21,a|0,b|0,c|0,d|0,e|0,f|0)|0}function IW(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 ma(22,a|0,b|0,c|0,d|0,e|0,f|0)|0}function JW(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 ma(23,a|0,b|0,c|0,d|0,e|0,f|0)|0}function KW(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 ma(24,a|0,b|0,c|0,d|0,e|0,f|0)|0}function LW(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 ma(25,a|0,b|0,c|0,d|0,e|0,f|0)|0}function MW(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 ma(26,a|0,b|0,c|0,d|0,e|0,f|0)|0}function NW(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 ma(27,a|0,b|0,c|0,d|0,e|0,f|0)|0}function OW(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 ma(28,a|0,b|0,c|0,d|0,e|0,f|0)|0}function PW(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 ma(29,a|0,b|0,c|0,d|0,e|0,f|0)|0}function QW(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 ma(30,a|0,b|0,c|0,d|0,e|0,f|0)|0}function RW(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 ma(31,a|0,b|0,c|0,d|0,e|0,f|0)|0}function SW(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 ma(32,a|0,b|0,c|0,d|0,e|0,f|0)|0}function TW(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 ma(33,a|0,b|0,c|0,d|0,e|0,f|0)|0}function UW(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 ma(34,a|0,b|0,c|0,d|0,e|0,f|0)|0}function VW(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 ma(35,a|0,b|0,c|0,d|0,e|0,f|0)|0}function WW(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 ma(36,a|0,b|0,c|0,d|0,e|0,f|0)|0}function XW(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 ma(37,a|0,b|0,c|0,d|0,e|0,f|0)|0}function YW(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 ma(38,a|0,b|0,c|0,d|0,e|0,f|0)|0}function ZW(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 ma(39,a|0,b|0,c|0,d|0,e|0,f|0)|0}function _W(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 ma(40,a|0,b|0,c|0,d|0,e|0,f|0)|0}function $W(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 ma(41,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aX(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 ma(42,a|0,b|0,c|0,d|0,e|0,f|0)|0}function bX(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 ma(43,a|0,b|0,c|0,d|0,e|0,f|0)|0}function cX(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 ma(44,a|0,b|0,c|0,d|0,e|0,f|0)|0}function dX(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 ma(45,a|0,b|0,c|0,d|0,e|0,f|0)|0}function eX(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 ma(46,a|0,b|0,c|0,d|0,e|0,f|0)|0}function fX(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 ma(47,a|0,b|0,c|0,d|0,e|0,f|0)|0}function gX(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 ma(48,a|0,b|0,c|0,d|0,e|0,f|0)|0}function hX(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 ma(49,a|0,b|0,c|0,d|0,e|0,f|0)|0}function iX(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 ma(50,a|0,b|0,c|0,d|0,e|0,f|0)|0}function jX(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 ma(51,a|0,b|0,c|0,d|0,e|0,f|0)|0}function kX(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 ma(52,a|0,b|0,c|0,d|0,e|0,f|0)|0}function lX(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 ma(53,a|0,b|0,c|0,d|0,e|0,f|0)|0}function mX(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 ma(54,a|0,b|0,c|0,d|0,e|0,f|0)|0}function nX(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 ma(55,a|0,b|0,c|0,d|0,e|0,f|0)|0}function oX(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 ma(56,a|0,b|0,c|0,d|0,e|0,f|0)|0}function pX(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 ma(57,a|0,b|0,c|0,d|0,e|0,f|0)|0}function qX(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 ma(58,a|0,b|0,c|0,d|0,e|0,f|0)|0}function rX(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 ma(59,a|0,b|0,c|0,d|0,e|0,f|0)|0}function sX(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 ma(60,a|0,b|0,c|0,d|0,e|0,f|0)|0}function tX(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 ma(61,a|0,b|0,c|0,d|0,e|0,f|0)|0}function uX(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 ma(62,a|0,b|0,c|0,d|0,e|0,f|0)|0}function vX(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 ma(63,a|0,b|0,c|0,d|0,e|0,f|0)|0}function wX(a,b){a=a|0;b=b|0;return Tb[a&255](b|0)|0}function xX(a){a=a|0;return oa(0,a|0)|0}function yX(a){a=a|0;return oa(1,a|0)|0}function zX(a){a=a|0;return oa(2,a|0)|0}function AX(a){a=a|0;return oa(3,a|0)|0}function BX(a){a=a|0;return oa(4,a|0)|0}function CX(a){a=a|0;return oa(5,a|0)|0}function DX(a){a=a|0;return oa(6,a|0)|0}function EX(a){a=a|0;return oa(7,a|0)|0}function FX(a){a=a|0;return oa(8,a|0)|0}function GX(a){a=a|0;return oa(9,a|0)|0}function HX(a){a=a|0;return oa(10,a|0)|0}function IX(a){a=a|0;return oa(11,a|0)|0}function JX(a){a=a|0;return oa(12,a|0)|0}function KX(a){a=a|0;return oa(13,a|0)|0}function LX(a){a=a|0;return oa(14,a|0)|0}function MX(a){a=a|0;return oa(15,a|0)|0}function NX(a){a=a|0;return oa(16,a|0)|0}function OX(a){a=a|0;return oa(17,a|0)|0}function PX(a){a=a|0;return oa(18,a|0)|0}function QX(a){a=a|0;return oa(19,a|0)|0}function RX(a){a=a|0;return oa(20,a|0)|0}function SX(a){a=a|0;return oa(21,a|0)|0}function TX(a){a=a|0;return oa(22,a|0)|0}function UX(a){a=a|0;return oa(23,a|0)|0}function VX(a){a=a|0;return oa(24,a|0)|0}function WX(a){a=a|0;return oa(25,a|0)|0}function XX(a){a=a|0;return oa(26,a|0)|0}function YX(a){a=a|0;return oa(27,a|0)|0}function ZX(a){a=a|0;return oa(28,a|0)|0}function _X(a){a=a|0;return oa(29,a|0)|0}function $X(a){a=a|0;return oa(30,a|0)|0}function aY(a){a=a|0;return oa(31,a|0)|0}function bY(a){a=a|0;return oa(32,a|0)|0}function cY(a){a=a|0;return oa(33,a|0)|0}function dY(a){a=a|0;return oa(34,a|0)|0}function eY(a){a=a|0;return oa(35,a|0)|0}function fY(a){a=a|0;return oa(36,a|0)|0}function gY(a){a=a|0;return oa(37,a|0)|0}function hY(a){a=a|0;return oa(38,a|0)|0}function iY(a){a=a|0;return oa(39,a|0)|0}function jY(a){a=a|0;return oa(40,a|0)|0}function kY(a){a=a|0;return oa(41,a|0)|0}function lY(a){a=a|0;return oa(42,a|0)|0}function mY(a){a=a|0;return oa(43,a|0)|0}function nY(a){a=a|0;return oa(44,a|0)|0}function oY(a){a=a|0;return oa(45,a|0)|0}function pY(a){a=a|0;return oa(46,a|0)|0}function qY(a){a=a|0;return oa(47,a|0)|0}function rY(a){a=a|0;return oa(48,a|0)|0}function sY(a){a=a|0;return oa(49,a|0)|0}function tY(a){a=a|0;return oa(50,a|0)|0}function uY(a){a=a|0;return oa(51,a|0)|0}function vY(a){a=a|0;return oa(52,a|0)|0}function wY(a){a=a|0;return oa(53,a|0)|0}function xY(a){a=a|0;return oa(54,a|0)|0}function yY(a){a=a|0;return oa(55,a|0)|0}function zY(a){a=a|0;return oa(56,a|0)|0}function AY(a){a=a|0;return oa(57,a|0)|0}function BY(a){a=a|0;return oa(58,a|0)|0}function CY(a){a=a|0;return oa(59,a|0)|0}function DY(a){a=a|0;return oa(60,a|0)|0}function EY(a){a=a|0;return oa(61,a|0)|0}function FY(a){a=a|0;return oa(62,a|0)|0}function GY(a){a=a|0;return oa(63,a|0)|0}function HY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ub[a&255](b|0,c|0,d|0)}function IY(a,b,c){a=a|0;b=b|0;c=c|0;qa(0,a|0,b|0,c|0)}function JY(a,b,c){a=a|0;b=b|0;c=c|0;qa(1,a|0,b|0,c|0)}function KY(a,b,c){a=a|0;b=b|0;c=c|0;qa(2,a|0,b|0,c|0)}function LY(a,b,c){a=a|0;b=b|0;c=c|0;qa(3,a|0,b|0,c|0)}function MY(a,b,c){a=a|0;b=b|0;c=c|0;qa(4,a|0,b|0,c|0)}function NY(a,b,c){a=a|0;b=b|0;c=c|0;qa(5,a|0,b|0,c|0)}function OY(a,b,c){a=a|0;b=b|0;c=c|0;qa(6,a|0,b|0,c|0)}function PY(a,b,c){a=a|0;b=b|0;c=c|0;qa(7,a|0,b|0,c|0)}function QY(a,b,c){a=a|0;b=b|0;c=c|0;qa(8,a|0,b|0,c|0)}function RY(a,b,c){a=a|0;b=b|0;c=c|0;qa(9,a|0,b|0,c|0)}function SY(a,b,c){a=a|0;b=b|0;c=c|0;qa(10,a|0,b|0,c|0)}function TY(a,b,c){a=a|0;b=b|0;c=c|0;qa(11,a|0,b|0,c|0)}function UY(a,b,c){a=a|0;b=b|0;c=c|0;qa(12,a|0,b|0,c|0)}function VY(a,b,c){a=a|0;b=b|0;c=c|0;qa(13,a|0,b|0,c|0)}function WY(a,b,c){a=a|0;b=b|0;c=c|0;qa(14,a|0,b|0,c|0)}function XY(a,b,c){a=a|0;b=b|0;c=c|0;qa(15,a|0,b|0,c|0)}function YY(a,b,c){a=a|0;b=b|0;c=c|0;qa(16,a|0,b|0,c|0)}function ZY(a,b,c){a=a|0;b=b|0;c=c|0;qa(17,a|0,b|0,c|0)}function _Y(a,b,c){a=a|0;b=b|0;c=c|0;qa(18,a|0,b|0,c|0)}function $Y(a,b,c){a=a|0;b=b|0;c=c|0;qa(19,a|0,b|0,c|0)}function aZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(20,a|0,b|0,c|0)}function bZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(21,a|0,b|0,c|0)}function cZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(22,a|0,b|0,c|0)}function dZ(a,b,c){ -a=a|0;b=b|0;c=c|0;qa(23,a|0,b|0,c|0)}function eZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(24,a|0,b|0,c|0)}function fZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(25,a|0,b|0,c|0)}function gZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(26,a|0,b|0,c|0)}function hZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(27,a|0,b|0,c|0)}function iZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(28,a|0,b|0,c|0)}function jZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(29,a|0,b|0,c|0)}function kZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(30,a|0,b|0,c|0)}function lZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(31,a|0,b|0,c|0)}function mZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(32,a|0,b|0,c|0)}function nZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(33,a|0,b|0,c|0)}function oZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(34,a|0,b|0,c|0)}function pZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(35,a|0,b|0,c|0)}function qZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(36,a|0,b|0,c|0)}function rZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(37,a|0,b|0,c|0)}function sZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(38,a|0,b|0,c|0)}function tZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(39,a|0,b|0,c|0)}function uZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(40,a|0,b|0,c|0)}function vZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(41,a|0,b|0,c|0)}function wZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(42,a|0,b|0,c|0)}function xZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(43,a|0,b|0,c|0)}function yZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(44,a|0,b|0,c|0)}function zZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(45,a|0,b|0,c|0)}function AZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(46,a|0,b|0,c|0)}function BZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(47,a|0,b|0,c|0)}function CZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(48,a|0,b|0,c|0)}function DZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(49,a|0,b|0,c|0)}function EZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(50,a|0,b|0,c|0)}function FZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(51,a|0,b|0,c|0)}function GZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(52,a|0,b|0,c|0)}function HZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(53,a|0,b|0,c|0)}function IZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(54,a|0,b|0,c|0)}function JZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(55,a|0,b|0,c|0)}function KZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(56,a|0,b|0,c|0)}function LZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(57,a|0,b|0,c|0)}function MZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(58,a|0,b|0,c|0)}function NZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(59,a|0,b|0,c|0)}function OZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(60,a|0,b|0,c|0)}function PZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(61,a|0,b|0,c|0)}function QZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(62,a|0,b|0,c|0)}function RZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(63,a|0,b|0,c|0)}function SZ(a){a=a|0;Vb[a&255]()}function TZ(){sa(0)}function UZ(){sa(1)}function VZ(){sa(2)}function WZ(){sa(3)}function XZ(){sa(4)}function YZ(){sa(5)}function ZZ(){sa(6)}function _Z(){sa(7)}function $Z(){sa(8)}function a_(){sa(9)}function b_(){sa(10)}function c_(){sa(11)}function d_(){sa(12)}function e_(){sa(13)}function f_(){sa(14)}function g_(){sa(15)}function h_(){sa(16)}function i_(){sa(17)}function j_(){sa(18)}function k_(){sa(19)}function l_(){sa(20)}function m_(){sa(21)}function n_(){sa(22)}function o_(){sa(23)}function p_(){sa(24)}function q_(){sa(25)}function r_(){sa(26)}function s_(){sa(27)}function t_(){sa(28)}function u_(){sa(29)}function v_(){sa(30)}function w_(){sa(31)}function x_(){sa(32)}function y_(){sa(33)}function z_(){sa(34)}function A_(){sa(35)}function B_(){sa(36)}function C_(){sa(37)}function D_(){sa(38)}function E_(){sa(39)}function F_(){sa(40)}function G_(){sa(41)}function H_(){sa(42)}function I_(){sa(43)}function J_(){sa(44)}function K_(){sa(45)}function L_(){sa(46)}function M_(){sa(47)}function N_(){sa(48)}function O_(){sa(49)}function P_(){sa(50)}function Q_(){sa(51)}function R_(){sa(52)}function S_(){sa(53)}function T_(){sa(54)}function U_(){sa(55)}function V_(){sa(56)}function W_(){sa(57)}function X_(){sa(58)}function Y_(){sa(59)}function Z_(){sa(60)}function __(){sa(61)}function $_(){sa(62)}function a$(){sa(63)}function b$(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Wb[a&255](b|0,c|0,d|0,e|0)|0}function c$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(0,a|0,b|0,c|0,d|0)|0}function d$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(1,a|0,b|0,c|0,d|0)|0}function e$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(2,a|0,b|0,c|0,d|0)|0}function f$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(3,a|0,b|0,c|0,d|0)|0}function g$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(4,a|0,b|0,c|0,d|0)|0}function h$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(5,a|0,b|0,c|0,d|0)|0}function i$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(6,a|0,b|0,c|0,d|0)|0}function j$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(7,a|0,b|0,c|0,d|0)|0}function k$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(8,a|0,b|0,c|0,d|0)|0}function l$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(9,a|0,b|0,c|0,d|0)|0}function m$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(10,a|0,b|0,c|0,d|0)|0}function n$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(11,a|0,b|0,c|0,d|0)|0}function o$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(12,a|0,b|0,c|0,d|0)|0}function p$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(13,a|0,b|0,c|0,d|0)|0}function q$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(14,a|0,b|0,c|0,d|0)|0}function r$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(15,a|0,b|0,c|0,d|0)|0}function s$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(16,a|0,b|0,c|0,d|0)|0}function t$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(17,a|0,b|0,c|0,d|0)|0}function u$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(18,a|0,b|0,c|0,d|0)|0}function v$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(19,a|0,b|0,c|0,d|0)|0}function w$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(20,a|0,b|0,c|0,d|0)|0}function x$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(21,a|0,b|0,c|0,d|0)|0}function y$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(22,a|0,b|0,c|0,d|0)|0}function z$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(23,a|0,b|0,c|0,d|0)|0}function A$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(24,a|0,b|0,c|0,d|0)|0}function B$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(25,a|0,b|0,c|0,d|0)|0}function C$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(26,a|0,b|0,c|0,d|0)|0}function D$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(27,a|0,b|0,c|0,d|0)|0}function E$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(28,a|0,b|0,c|0,d|0)|0}function F$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(29,a|0,b|0,c|0,d|0)|0}function G$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(30,a|0,b|0,c|0,d|0)|0}function H$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(31,a|0,b|0,c|0,d|0)|0}function I$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(32,a|0,b|0,c|0,d|0)|0}function J$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(33,a|0,b|0,c|0,d|0)|0}function K$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(34,a|0,b|0,c|0,d|0)|0}function L$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(35,a|0,b|0,c|0,d|0)|0}function M$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(36,a|0,b|0,c|0,d|0)|0}function N$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(37,a|0,b|0,c|0,d|0)|0}function O$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(38,a|0,b|0,c|0,d|0)|0}function P$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(39,a|0,b|0,c|0,d|0)|0}function Q$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(40,a|0,b|0,c|0,d|0)|0}function R$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(41,a|0,b|0,c|0,d|0)|0}function S$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(42,a|0,b|0,c|0,d|0)|0}function T$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(43,a|0,b|0,c|0,d|0)|0}function U$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(44,a|0,b|0,c|0,d|0)|0}function V$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(45,a|0,b|0,c|0,d|0)|0}function W$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(46,a|0,b|0,c|0,d|0)|0}function X$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(47,a|0,b|0,c|0,d|0)|0}function Y$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(48,a|0,b|0,c|0,d|0)|0}function Z$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(49,a|0,b|0,c|0,d|0)|0}function _$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(50,a|0,b|0,c|0,d|0)|0}function $$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(51,a|0,b|0,c|0,d|0)|0}function a0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(52,a|0,b|0,c|0,d|0)|0}function b0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(53,a|0,b|0,c|0,d|0)|0}function c0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(54,a|0,b|0,c|0,d|0)|0}function d0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(55,a|0,b|0,c|0,d|0)|0}function e0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(56,a|0,b|0,c|0,d|0)|0}function f0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(57,a|0,b|0,c|0,d|0)|0}function g0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(58,a|0,b|0,c|0,d|0)|0}function h0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(59,a|0,b|0,c|0,d|0)|0}function i0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(60,a|0,b|0,c|0,d|0)|0}function j0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(61,a|0,b|0,c|0,d|0)|0}function k0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(62,a|0,b|0,c|0,d|0)|0}function l0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(63,a|0,b|0,c|0,d|0)|0}function m0(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;Xb[a&255](b|0,c|0,d|0,e|0,f|0,g|0)}function n0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(0,a|0,b|0,c|0,d|0,e|0,f|0)}function o0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(1,a|0,b|0,c|0,d|0,e|0,f|0)}function p0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(2,a|0,b|0,c|0,d|0,e|0,f|0)}function q0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(3,a|0,b|0,c|0,d|0,e|0,f|0)}function r0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(4,a|0,b|0,c|0,d|0,e|0,f|0)}function s0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(5,a|0,b|0,c|0,d|0,e|0,f|0)}function t0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(6,a|0,b|0,c|0,d|0,e|0,f|0)}function u0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(7,a|0,b|0,c|0,d|0,e|0,f|0)}function v0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(8,a|0,b|0,c|0,d|0,e|0,f|0)}function w0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(9,a|0,b|0,c|0,d|0,e|0,f|0)}function x0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(10,a|0,b|0,c|0,d|0,e|0,f|0)}function y0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(11,a|0,b|0,c|0,d|0,e|0,f|0)}function z0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(12,a|0,b|0,c|0,d|0,e|0,f|0)}function A0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(13,a|0,b|0,c|0,d|0,e|0,f|0)}function B0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(14,a|0,b|0,c|0,d|0,e|0,f|0)}function C0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(15,a|0,b|0,c|0,d|0,e|0,f|0)}function D0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(16,a|0,b|0,c|0,d|0,e|0,f|0)}function E0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(17,a|0,b|0,c|0,d|0,e|0,f|0)}function F0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(18,a|0,b|0,c|0,d|0,e|0,f|0)}function G0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(19,a|0,b|0,c|0,d|0,e|0,f|0)}function H0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(20,a|0,b|0,c|0,d|0,e|0,f|0)}function I0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(21,a|0,b|0,c|0,d|0,e|0,f|0)}function J0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(22,a|0,b|0,c|0,d|0,e|0,f|0)}function K0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(23,a|0,b|0,c|0,d|0,e|0,f|0)}function L0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(24,a|0,b|0,c|0,d|0,e|0,f|0)}function M0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(25,a|0,b|0,c|0,d|0,e|0,f|0)}function N0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(26,a|0,b|0,c|0,d|0,e|0,f|0)}function O0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(27,a|0,b|0,c|0,d|0,e|0,f|0)}function P0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(28,a|0,b|0,c|0,d|0,e|0,f|0)}function Q0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(29,a|0,b|0,c|0,d|0,e|0,f|0)}function R0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(30,a|0,b|0,c|0,d|0,e|0,f|0)}function S0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(31,a|0,b|0,c|0,d|0,e|0,f|0)}function T0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(32,a|0,b|0,c|0,d|0,e|0,f|0)}function U0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(33,a|0,b|0,c|0,d|0,e|0,f|0)}function V0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(34,a|0,b|0,c|0,d|0,e|0,f|0)}function W0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(35,a|0,b|0,c|0,d|0,e|0,f|0)}function X0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(36,a|0,b|0,c|0,d|0,e|0,f|0)}function Y0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(37,a|0,b|0,c|0,d|0,e|0,f|0)}function Z0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(38,a|0,b|0,c|0,d|0,e|0,f|0)}function _0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(39,a|0,b|0,c|0,d|0,e|0,f|0)}function $0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(40,a|0,b|0,c|0,d|0,e|0,f|0)}function a1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(41,a|0,b|0,c|0,d|0,e|0,f|0)}function b1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(42,a|0,b|0,c|0,d|0,e|0,f|0)}function c1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(43,a|0,b|0,c|0,d|0,e|0,f|0)}function d1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(44,a|0,b|0,c|0,d|0,e|0,f|0)}function e1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(45,a|0,b|0,c|0,d|0,e|0,f|0)}function f1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(46,a|0,b|0,c|0,d|0,e|0,f|0)}function g1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(47,a|0,b|0,c|0,d|0,e|0,f|0)}function h1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(48,a|0,b|0,c|0,d|0,e|0,f|0)}function i1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(49,a|0,b|0,c|0,d|0,e|0,f|0)}function j1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(50,a|0,b|0,c|0,d|0,e|0,f|0)}function k1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(51,a|0,b|0,c|0,d|0,e|0,f|0)}function l1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(52,a|0,b|0,c|0,d|0,e|0,f|0)}function m1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(53,a|0,b|0,c|0,d|0,e|0,f|0)}function n1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(54,a|0,b|0,c|0,d|0,e|0,f|0)}function o1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(55,a|0,b|0,c|0,d|0,e|0,f|0)}function p1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(56,a|0,b|0,c|0,d|0,e|0,f|0)}function q1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(57,a|0,b|0,c|0,d|0,e|0,f|0)}function r1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(58,a|0,b|0,c|0,d|0,e|0,f|0)}function s1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(59,a|0,b|0,c|0,d|0,e|0,f|0)}function t1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(60,a|0,b|0,c|0,d|0,e|0,f|0)}function u1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(61,a|0,b|0,c|0,d|0,e|0,f|0)}function v1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(62,a|0,b|0,c|0,d|0,e|0,f|0)}function w1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(63,a|0,b|0,c|0,d|0,e|0,f|0)}function x1(a,b,c){a=a|0;b=b|0;c=c|0;return Yb[a&255](b|0,c|0)|0}function y1(a,b){a=a|0;b=b|0;return ya(0,a|0,b|0)|0}function z1(a,b){a=a|0;b=b|0;return ya(1,a|0,b|0)|0}function A1(a,b){a=a|0;b=b|0;return ya(2,a|0,b|0)|0}function B1(a,b){a=a|0;b=b|0;return ya(3,a|0,b|0)|0}function C1(a,b){a=a|0;b=b|0;return ya(4,a|0,b|0)|0}function D1(a,b){a=a|0;b=b|0;return ya(5,a|0,b|0)|0}function E1(a,b){a=a|0;b=b|0;return ya(6,a|0,b|0)|0}function F1(a,b){a=a|0;b=b|0;return ya(7,a|0,b|0)|0}function G1(a,b){a=a|0;b=b|0;return ya(8,a|0,b|0)|0}function H1(a,b){a=a|0;b=b|0;return ya(9,a|0,b|0)|0}function I1(a,b){a=a|0;b=b|0;return ya(10,a|0,b|0)|0}function J1(a,b){a=a|0;b=b|0;return ya(11,a|0,b|0)|0}function K1(a,b){a=a|0;b=b|0;return ya(12,a|0,b|0)|0}function L1(a,b){a=a|0;b=b|0;return ya(13,a|0,b|0)|0}function M1(a,b){a=a|0;b=b|0;return ya(14,a|0,b|0)|0}function N1(a,b){a=a|0;b=b|0;return ya(15,a|0,b|0)|0}function O1(a,b){a=a|0;b=b|0;return ya(16,a|0,b|0)|0}function P1(a,b){a=a|0;b=b|0;return ya(17,a|0,b|0)|0}function Q1(a,b){a=a|0;b=b|0;return ya(18,a|0,b|0)|0}function R1(a,b){a=a|0;b=b|0;return ya(19,a|0,b|0)|0}function S1(a,b){a=a|0;b=b|0;return ya(20,a|0,b|0)|0}function T1(a,b){a=a|0;b=b|0;return ya(21,a|0,b|0)|0}function U1(a,b){a=a|0;b=b|0;return ya(22,a|0,b|0)|0}function V1(a,b){a=a|0;b=b|0;return ya(23,a|0,b|0)|0}function W1(a,b){a=a|0;b=b|0;return ya(24,a|0,b|0)|0}function X1(a,b){a=a|0;b=b|0;return ya(25,a|0,b|0)|0}function Y1(a,b){a=a|0;b=b|0;return ya(26,a|0,b|0)|0}function Z1(a,b){a=a|0;b=b|0;return ya(27,a|0,b|0)|0}function _1(a,b){a=a|0;b=b|0;return ya(28,a|0,b|0)|0}function $1(a,b){a=a|0;b=b|0;return ya(29,a|0,b|0)|0}function a2(a,b){a=a|0;b=b|0;return ya(30,a|0,b|0)|0}function b2(a,b){a=a|0;b=b|0;return ya(31,a|0,b|0)|0}function c2(a,b){a=a|0;b=b|0;return ya(32,a|0,b|0)|0}function d2(a,b){a=a|0;b=b|0;return ya(33,a|0,b|0)|0}function e2(a,b){a=a|0;b=b|0;return ya(34,a|0,b|0)|0}function f2(a,b){a=a|0;b=b|0;return ya(35,a|0,b|0)|0}function g2(a,b){a=a|0;b=b|0;return ya(36,a|0,b|0)|0}function h2(a,b){a=a|0;b=b|0;return ya(37,a|0,b|0)|0}function i2(a,b){a=a|0;b=b|0;return ya(38,a|0,b|0)|0}function j2(a,b){a=a|0;b=b|0;return ya(39,a|0,b|0)|0}function k2(a,b){a=a|0;b=b|0;return ya(40,a|0,b|0)|0}function l2(a,b){a=a|0;b=b|0;return ya(41,a|0,b|0)|0}function m2(a,b){a=a|0;b=b|0;return ya(42,a|0,b|0)|0}function n2(a,b){a=a|0;b=b|0;return ya(43,a|0,b|0)|0}function o2(a,b){a=a|0;b=b|0;return ya(44,a|0,b|0)|0}function p2(a,b){a=a|0;b=b|0;return ya(45,a|0,b|0)|0}function q2(a,b){a=a|0;b=b|0;return ya(46,a|0,b|0)|0}function r2(a,b){a=a|0;b=b|0;return ya(47,a|0,b|0)|0}function s2(a,b){a=a|0;b=b|0;return ya(48,a|0,b|0)|0}function t2(a,b){a=a|0;b=b|0;return ya(49,a|0,b|0)|0}function u2(a,b){a=a|0;b=b|0;return ya(50,a|0,b|0)|0}function v2(a,b){a=a|0;b=b|0;return ya(51,a|0,b|0)|0}function w2(a,b){a=a|0;b=b|0;return ya(52,a|0,b|0)|0}function x2(a,b){a=a|0;b=b|0;return ya(53,a|0,b|0)|0}function y2(a,b){a=a|0;b=b|0;return ya(54,a|0,b|0)|0}function z2(a,b){a=a|0;b=b|0;return ya(55,a|0,b|0)|0}function A2(a,b){a=a|0;b=b|0;return ya(56,a|0,b|0)|0}function B2(a,b){a=a|0;b=b|0;return ya(57,a|0,b|0)|0}function C2(a,b){a=a|0;b=b|0;return ya(58,a|0,b|0)|0}function D2(a,b){a=a|0;b=b|0;return ya(59,a|0,b|0)|0}function E2(a,b){a=a|0;b=b|0;return ya(60,a|0,b|0)|0}function F2(a,b){a=a|0;b=b|0;return ya(61,a|0,b|0)|0}function G2(a,b){a=a|0;b=b|0;return ya(62,a|0,b|0)|0}function H2(a,b){a=a|0;b=b|0;return ya(63,a|0,b|0)|0}function I2(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 Zb[a&255](b|0,c|0,d|0,e|0,f|0)|0}function J2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(0,a|0,b|0,c|0,d|0,e|0)|0}function K2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(1,a|0,b|0,c|0,d|0,e|0)|0}function L2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(2,a|0,b|0,c|0,d|0,e|0)|0}function M2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(3,a|0,b|0,c|0,d|0,e|0)|0}function N2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(4,a|0,b|0,c|0,d|0,e|0)|0}function O2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(5,a|0,b|0,c|0,d|0,e|0)|0}function P2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(6,a|0,b|0,c|0,d|0,e|0)|0}function Q2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(7,a|0,b|0,c|0,d|0,e|0)|0}function R2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(8,a|0,b|0,c|0,d|0,e|0)|0}function S2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(9,a|0,b|0,c|0,d|0,e|0)|0}function T2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(10,a|0,b|0,c|0,d|0,e|0)|0}function U2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(11,a|0,b|0,c|0,d|0,e|0)|0}function V2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(12,a|0,b|0,c|0,d|0,e|0)|0}function W2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(13,a|0,b|0,c|0,d|0,e|0)|0}function X2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(14,a|0,b|0,c|0,d|0,e|0)|0}function Y2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(15,a|0,b|0,c|0,d|0,e|0)|0}function Z2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(16,a|0,b|0,c|0,d|0,e|0)|0}function _2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(17,a|0,b|0,c|0,d|0,e|0)|0}function $2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(18,a|0,b|0,c|0,d|0,e|0)|0}function a3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(19,a|0,b|0,c|0,d|0,e|0)|0}function b3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(20,a|0,b|0,c|0,d|0,e|0)|0}function c3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(21,a|0,b|0,c|0,d|0,e|0)|0}function d3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(22,a|0,b|0,c|0,d|0,e|0)|0}function e3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(23,a|0,b|0,c|0,d|0,e|0)|0}function f3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(24,a|0,b|0,c|0,d|0,e|0)|0}function g3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(25,a|0,b|0,c|0,d|0,e|0)|0}function h3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(26,a|0,b|0,c|0,d|0,e|0)|0}function i3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(27,a|0,b|0,c|0,d|0,e|0)|0}function j3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(28,a|0,b|0,c|0,d|0,e|0)|0}function k3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(29,a|0,b|0,c|0,d|0,e|0)|0}function l3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(30,a|0,b|0,c|0,d|0,e|0)|0}function m3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(31,a|0,b|0,c|0,d|0,e|0)|0}function n3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(32,a|0,b|0,c|0,d|0,e|0)|0}function o3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(33,a|0,b|0,c|0,d|0,e|0)|0}function p3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(34,a|0,b|0,c|0,d|0,e|0)|0}function q3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(35,a|0,b|0,c|0,d|0,e|0)|0}function r3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(36,a|0,b|0,c|0,d|0,e|0)|0}function s3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(37,a|0,b|0,c|0,d|0,e|0)|0}function t3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(38,a|0,b|0,c|0,d|0,e|0)|0}function u3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(39,a|0,b|0,c|0,d|0,e|0)|0}function v3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(40,a|0,b|0,c|0,d|0,e|0)|0}function w3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(41,a|0,b|0,c|0,d|0,e|0)|0}function x3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(42,a|0,b|0,c|0,d|0,e|0)|0}function y3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(43,a|0,b|0,c|0,d|0,e|0)|0}function z3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(44,a|0,b|0,c|0,d|0,e|0)|0}function A3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(45,a|0,b|0,c|0,d|0,e|0)|0}function B3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(46,a|0,b|0,c|0,d|0,e|0)|0}function C3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(47,a|0,b|0,c|0,d|0,e|0)|0}function D3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(48,a|0,b|0,c|0,d|0,e|0)|0}function E3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(49,a|0,b|0,c|0,d|0,e|0)|0}function F3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(50,a|0,b|0,c|0,d|0,e|0)|0}function G3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(51,a|0,b|0,c|0,d|0,e|0)|0}function H3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(52,a|0,b|0,c|0,d|0,e|0)|0}function I3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(53,a|0,b|0,c|0,d|0,e|0)|0}function J3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(54,a|0,b|0,c|0,d|0,e|0)|0}function K3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(55,a|0,b|0,c|0,d|0,e|0)|0}function L3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(56,a|0,b|0,c|0,d|0,e|0)|0}function M3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(57,a|0,b|0,c|0,d|0,e|0)|0}function N3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(58,a|0,b|0,c|0,d|0,e|0)|0}function O3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(59,a|0,b|0,c|0,d|0,e|0)|0}function P3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(60,a|0,b|0,c|0,d|0,e|0)|0}function Q3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(61,a|0,b|0,c|0,d|0,e|0)|0}function R3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(62,a|0,b|0,c|0,d|0,e|0)|0}function S3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(63,a|0,b|0,c|0,d|0,e|0)|0}function T3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;_b[a&255](b|0,c|0,d|0,e|0)}function U3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(0,a|0,b|0,c|0,d|0)}function V3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(1,a|0,b|0,c|0,d|0)}function W3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(2,a|0,b|0,c|0,d|0)}function X3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(3,a|0,b|0,c|0,d|0)}function Y3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(4,a|0,b|0,c|0,d|0)}function Z3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(5,a|0,b|0,c|0,d|0)}function _3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(6,a|0,b|0,c|0,d|0)}function $3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(7,a|0,b|0,c|0,d|0)}function a4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(8,a|0,b|0,c|0,d|0)}function b4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(9,a|0,b|0,c|0,d|0)}function c4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(10,a|0,b|0,c|0,d|0)}function d4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(11,a|0,b|0,c|0,d|0)}function e4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(12,a|0,b|0,c|0,d|0)}function f4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(13,a|0,b|0,c|0,d|0)}function g4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(14,a|0,b|0,c|0,d|0)}function h4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(15,a|0,b|0,c|0,d|0)}function i4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(16,a|0,b|0,c|0,d|0)}function j4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(17,a|0,b|0,c|0,d|0)}function k4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(18,a|0,b|0,c|0,d|0)}function l4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(19,a|0,b|0,c|0,d|0)}function m4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(20,a|0,b|0,c|0,d|0)}function n4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(21,a|0,b|0,c|0,d|0)}function o4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(22,a|0,b|0,c|0,d|0)}function p4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(23,a|0,b|0,c|0,d|0)}function q4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(24,a|0,b|0,c|0,d|0)}function r4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(25,a|0,b|0,c|0,d|0)}function s4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(26,a|0,b|0,c|0,d|0)}function t4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(27,a|0,b|0,c|0,d|0)}function u4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(28,a|0,b|0,c|0,d|0)}function v4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(29,a|0,b|0,c|0,d|0)}function w4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(30,a|0,b|0,c|0,d|0)}function x4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(31,a|0,b|0,c|0,d|0)}function y4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(32,a|0,b|0,c|0,d|0)}function z4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(33,a|0,b|0,c|0,d|0)}function A4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(34,a|0,b|0,c|0,d|0)}function B4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(35,a|0,b|0,c|0,d|0)}function C4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(36,a|0,b|0,c|0,d|0)}function D4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(37,a|0,b|0,c|0,d|0)}function E4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(38,a|0,b|0,c|0,d|0)}function F4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(39,a|0,b|0,c|0,d|0)}function G4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(40,a|0,b|0,c|0,d|0)}function H4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(41,a|0,b|0,c|0,d|0)}function I4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(42,a|0,b|0,c|0,d|0)}function J4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(43,a|0,b|0,c|0,d|0)}function K4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(44,a|0,b|0,c|0,d|0)}function L4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(45,a|0,b|0,c|0,d|0)}function M4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(46,a|0,b|0,c|0,d|0)}function N4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(47,a|0,b|0,c|0,d|0)}function O4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(48,a|0,b|0,c|0,d|0)}function P4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(49,a|0,b|0,c|0,d|0)}function Q4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(50,a|0,b|0,c|0,d|0)}function R4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(51,a|0,b|0,c|0,d|0)}function S4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(52,a|0,b|0,c|0,d|0)}function T4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(53,a|0,b|0,c|0,d|0)}function U4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(54,a|0,b|0,c|0,d|0)}function V4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(55,a|0,b|0,c|0,d|0)}function W4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(56,a|0,b|0,c|0,d|0)}function X4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(57,a|0,b|0,c|0,d|0)}function Y4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(58,a|0,b|0,c|0,d|0)}function Z4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(59,a|0,b|0,c|0,d|0)}function _4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(60,a|0,b|0,c|0,d|0)}function $4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(61,a|0,b|0,c|0,d|0)}function a5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(62,a|0,b|0,c|0,d|0)}function b5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(63,a|0,b|0,c|0,d|0)}function c5(a,b,c){a=a|0;b=b|0;c=c|0;ba(0);return 0}function d5(){ba(1);return 0}function e5(a){a=a|0;ba(2)}function f5(a,b){a=a|0;b=b|0;ba(3)}function g5(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ba(4);return 0}function h5(a){a=a|0;ba(5);return 0}function i5(a,b,c){a=a|0;b=b|0;c=c|0;ba(6)}function j5(){ba(7)}function k5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ba(8);return 0}function l5(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ba(9)}function m5(a,b){a=a|0;b=b|0;ba(10);return 0}function n5(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ba(11);return 0}function o5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ba(12)}var Ob=[c5,c5,wR,c5,xR,c5,yR,c5,zR,c5,AR,c5,BR,c5,CR,c5,DR,c5,ER,c5,FR,c5,GR,c5,HR,c5,IR,c5,JR,c5,KR,c5,LR,c5,MR,c5,NR,c5,OR,c5,PR,c5,QR,c5,RR,c5,SR,c5,TR,c5,UR,c5,VR,c5,WR,c5,XR,c5,YR,c5,ZR,c5,_R,c5,$R,c5,aS,c5,bS,c5,cS,c5,dS,c5,eS,c5,fS,c5,gS,c5,hS,c5,iS,c5,jS,c5,kS,c5,lS,c5,mS,c5,nS,c5,oS,c5,pS,c5,qS,c5,rS,c5,sS,c5,tS,c5,uS,c5,vS,c5,wS,c5,xS,c5,yS,c5,zS,c5,AS,c5,BS,c5,CS,c5,DS,c5,ES,c5,FS,c5,RM,UM,XM,ZM,Tk,tk,Zp,nq,Cq,Fq,Fr,nu,qu,eN,kN,yN,UP,NQ,SQ,GQ,OQ,sQ,qQ,Ln,Gm,Jm,Hn,Fn,Pn,Wn,pF,qF,rF,rQ,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5];var Pb=[d5,d5,HS,d5,IS,d5,JS,d5,KS,d5,LS,d5,MS,d5,NS,d5,OS,d5,PS,d5,QS,d5,RS,d5,SS,d5,TS,d5,US,d5,VS,d5,WS,d5,XS,d5,YS,d5,ZS,d5,_S,d5,$S,d5,aT,d5,bT,d5,cT,d5,dT,d5,eT,d5,fT,d5,gT,d5,hT,d5,iT,d5,jT,d5,kT,d5,lT,d5,mT,d5,nT,d5,oT,d5,pT,d5,qT,d5,rT,d5,sT,d5,tT,d5,uT,d5,vT,d5,wT,d5,xT,d5,yT,d5,zT,d5,AT,d5,BT,d5,CT,d5,DT,d5,ET,d5,FT,d5,GT,d5,HT,d5,IT,d5,JT,d5,KT,d5,LT,d5,MT,d5,NT,d5,OT,d5,PT,d5,QT,d5,KQ,AN,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5];var Qb=[e5,e5,ST,e5,TT,e5,UT,e5,VT,e5,WT,e5,XT,e5,YT,e5,ZT,e5,_T,e5,$T,e5,aU,e5,bU,e5,cU,e5,dU,e5,eU,e5,fU,e5,gU,e5,hU,e5,iU,e5,jU,e5,kU,e5,lU,e5,mU,e5,nU,e5,oU,e5,pU,e5,qU,e5,rU,e5,sU,e5,tU,e5,uU,e5,vU,e5,wU,e5,xU,e5,yU,e5,zU,e5,AU,e5,BU,e5,CU,e5,DU,e5,EU,e5,FU,e5,GU,e5,HU,e5,IU,e5,JU,e5,KU,e5,LU,e5,MU,e5,NU,e5,OU,e5,PU,e5,QU,e5,RU,e5,SU,e5,TU,e5,UU,e5,VU,e5,WU,e5,XU,e5,YU,e5,ZU,e5,_U,e5,$U,e5,Wc,Xc,Zc,_c,$c,ad,mu,uu,vu,Ju,Ou,oN,ZO,zP,AP,BP,DP,FP,Kd,Uq,tj,hk,Kn,Oz,TQ,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5];var Rb=[f5,f5,bV,f5,cV,f5,dV,f5,eV,f5,fV,f5,gV,f5,hV,f5,iV,f5,jV,f5,kV,f5,lV,f5,mV,f5,nV,f5,oV,f5,pV,f5,qV,f5,rV,f5,sV,f5,tV,f5,uV,f5,vV,f5,wV,f5,xV,f5,yV,f5,zV,f5,AV,f5,BV,f5,CV,f5,DV,f5,EV,f5,FV,f5,GV,f5,HV,f5,IV,f5,JV,f5,KV,f5,LV,f5,MV,f5,NV,f5,OV,f5,PV,f5,QV,f5,RV,f5,SV,f5,TV,f5,UV,f5,VV,f5,WV,f5,XV,f5,YV,f5,ZV,f5,_V,f5,$V,f5,aW,f5,bW,f5,cW,f5,dW,f5,eW,f5,fW,f5,gW,f5,hW,f5,iW,f5,jW,f5,kW,f5,ou,tu,Ry,Xx,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5]; -var Sb=[g5,g5,mW,g5,nW,g5,oW,g5,pW,g5,qW,g5,rW,g5,sW,g5,tW,g5,uW,g5,vW,g5,wW,g5,xW,g5,yW,g5,zW,g5,AW,g5,BW,g5,CW,g5,DW,g5,EW,g5,FW,g5,GW,g5,HW,g5,IW,g5,JW,g5,KW,g5,LW,g5,MW,g5,NW,g5,OW,g5,PW,g5,QW,g5,RW,g5,SW,g5,TW,g5,UW,g5,VW,g5,WW,g5,XW,g5,YW,g5,ZW,g5,_W,g5,$W,g5,aX,g5,bX,g5,cX,g5,dX,g5,eX,g5,fX,g5,gX,g5,hX,g5,iX,g5,jX,g5,kX,g5,lX,g5,mX,g5,nX,g5,oX,g5,pX,g5,qX,g5,rX,g5,sX,g5,tX,g5,uX,g5,vX,g5,Jk,Kk,lk,bq,rq,uq,Jq,gQ,PK,QK,RK,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5];var Tb=[h5,h5,xX,h5,yX,h5,zX,h5,AX,h5,BX,h5,CX,h5,DX,h5,EX,h5,FX,h5,GX,h5,HX,h5,IX,h5,JX,h5,KX,h5,LX,h5,MX,h5,NX,h5,OX,h5,PX,h5,QX,h5,RX,h5,SX,h5,TX,h5,UX,h5,VX,h5,WX,h5,XX,h5,YX,h5,ZX,h5,_X,h5,$X,h5,aY,h5,bY,h5,cY,h5,dY,h5,eY,h5,fY,h5,gY,h5,hY,h5,iY,h5,jY,h5,kY,h5,lY,h5,mY,h5,nY,h5,oY,h5,pY,h5,qY,h5,rY,h5,sY,h5,tY,h5,uY,h5,vY,h5,wY,h5,xY,h5,yY,h5,zY,h5,AY,h5,BY,h5,CY,h5,DY,h5,EY,h5,FY,h5,GY,h5,Mk,Nk,Pk,Rk,Sk,Wk,Xk,Yk,Zk,nk,pk,rk,sk,_p,aq,oq,qq,wq,yq,Aq,Bq,Gq,Iq,Cr,lu,pu,Iu,Lu,Mu,Nu,bN,lN,mN,FQ,RQ,PQ,RN,aO,pQ,ae,$f,Yq,fq,gq,kq,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5];var Ub=[i5,i5,IY,i5,JY,i5,KY,i5,LY,i5,MY,i5,NY,i5,OY,i5,PY,i5,QY,i5,RY,i5,SY,i5,TY,i5,UY,i5,VY,i5,WY,i5,XY,i5,YY,i5,ZY,i5,_Y,i5,$Y,i5,aZ,i5,bZ,i5,cZ,i5,dZ,i5,eZ,i5,fZ,i5,gZ,i5,hZ,i5,iZ,i5,jZ,i5,kZ,i5,lZ,i5,mZ,i5,nZ,i5,oZ,i5,pZ,i5,qZ,i5,rZ,i5,sZ,i5,tZ,i5,uZ,i5,vZ,i5,wZ,i5,xZ,i5,yZ,i5,zZ,i5,AZ,i5,BZ,i5,CZ,i5,DZ,i5,EZ,i5,FZ,i5,GZ,i5,HZ,i5,IZ,i5,JZ,i5,KZ,i5,LZ,i5,MZ,i5,NZ,i5,OZ,i5,PZ,i5,QZ,i5,RZ,i5,jc,kc,lc,mc,nc,oc,pc,qc,rc,sc,tc,uc,vc,wc,xc,yc,zc,Ac,Bc,Cc,Dc,Ec,Fc,Gc,Hc,Ic,Jc,Kc,Lc,Mc,Nc,Oc,Pc,Qc,Rc,Sc,Tc,Uc,Vc,Yc,lm,mm,nm,om,ru,Nz,Jz,Iz,kB,tB,WO,XO,YO,_O,$O,aP,bP,cP,dP,eP,fP,gP,hP,iP,jP,kP,lP,mP,nP,oP,pP,qP,rP,sP,tP,uP,vP,wP,xP,yP,CP,EP,hC,vO,wO,xO,yO,zO,AO,BO,CO,DO,EO,FO,hi,Up,Nt,Pt,Qt,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5];var Vb=[j5,j5,TZ,j5,UZ,j5,VZ,j5,WZ,j5,XZ,j5,YZ,j5,ZZ,j5,_Z,j5,$Z,j5,a_,j5,b_,j5,c_,j5,d_,j5,e_,j5,f_,j5,g_,j5,h_,j5,i_,j5,j_,j5,k_,j5,l_,j5,m_,j5,n_,j5,o_,j5,p_,j5,q_,j5,r_,j5,s_,j5,t_,j5,u_,j5,v_,j5,w_,j5,x_,j5,y_,j5,z_,j5,A_,j5,B_,j5,C_,j5,D_,j5,E_,j5,F_,j5,G_,j5,H_,j5,I_,j5,J_,j5,K_,j5,L_,j5,M_,j5,N_,j5,O_,j5,P_,j5,Q_,j5,R_,j5,S_,j5,T_,j5,U_,j5,V_,j5,W_,j5,X_,j5,Y_,j5,Z_,j5,__,j5,$_,j5,a$,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5];var Wb=[k5,k5,c$,k5,d$,k5,e$,k5,f$,k5,g$,k5,h$,k5,i$,k5,j$,k5,k$,k5,l$,k5,m$,k5,n$,k5,o$,k5,p$,k5,q$,k5,r$,k5,s$,k5,t$,k5,u$,k5,v$,k5,w$,k5,x$,k5,y$,k5,z$,k5,A$,k5,B$,k5,C$,k5,D$,k5,E$,k5,F$,k5,G$,k5,H$,k5,I$,k5,J$,k5,K$,k5,L$,k5,M$,k5,N$,k5,O$,k5,P$,k5,Q$,k5,R$,k5,S$,k5,T$,k5,U$,k5,V$,k5,W$,k5,X$,k5,Y$,k5,Z$,k5,_$,k5,$$,k5,a0,k5,b0,k5,c0,k5,d0,k5,e0,k5,f0,k5,g0,k5,h0,k5,i0,k5,j0,k5,k0,k5,l0,k5,SM,TM,Vk,$p,pq,Hq,nN,rN,Mh,ii,wj,Dj,Ek,Fk,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5];var Xb=[l5,l5,n0,l5,o0,l5,p0,l5,q0,l5,r0,l5,s0,l5,t0,l5,u0,l5,v0,l5,w0,l5,x0,l5,y0,l5,z0,l5,A0,l5,B0,l5,C0,l5,D0,l5,E0,l5,F0,l5,G0,l5,H0,l5,I0,l5,J0,l5,K0,l5,L0,l5,M0,l5,N0,l5,O0,l5,P0,l5,Q0,l5,R0,l5,S0,l5,T0,l5,U0,l5,V0,l5,W0,l5,X0,l5,Y0,l5,Z0,l5,_0,l5,$0,l5,a1,l5,b1,l5,c1,l5,d1,l5,e1,l5,f1,l5,g1,l5,h1,l5,i1,l5,j1,l5,k1,l5,l1,l5,m1,l5,n1,l5,o1,l5,p1,l5,q1,l5,r1,l5,s1,l5,t1,l5,u1,l5,v1,l5,w1,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5];var Yb=[m5,m5,y1,m5,z1,m5,A1,m5,B1,m5,C1,m5,D1,m5,E1,m5,F1,m5,G1,m5,H1,m5,I1,m5,J1,m5,K1,m5,L1,m5,M1,m5,N1,m5,O1,m5,P1,m5,Q1,m5,R1,m5,S1,m5,T1,m5,U1,m5,V1,m5,W1,m5,X1,m5,Y1,m5,Z1,m5,_1,m5,$1,m5,a2,m5,b2,m5,c2,m5,d2,m5,e2,m5,f2,m5,g2,m5,h2,m5,i2,m5,j2,m5,k2,m5,l2,m5,m2,m5,n2,m5,o2,m5,p2,m5,q2,m5,r2,m5,s2,m5,t2,m5,u2,m5,v2,m5,w2,m5,x2,m5,y2,m5,z2,m5,A2,m5,B2,m5,C2,m5,D2,m5,E2,m5,F2,m5,G2,m5,H2,m5,VM,WM,YM,_M,$M,Lk,Ok,Uk,$k,al,bl,cl,mk,ok,uk,vq,xq,Dq,Gr,Hr,Ku,lO,QN,aN,fN,gN,hN,iN,jN,pN,EQ,JQ,mQ,jQ,IQ,iQ,zN,lQ,hQ,kQ,SN,TN,UN,bO,cO,dO,kd,ld,ei,_f,Gk,Hk,Il,Jl,Ml,km,jt,os,Mt,Ot,Yx,Py,Qy,dy,ey,Dy,Jy,aB,bB,NF,TE,UE,yG,zG,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5];var Zb=[n5,n5,J2,n5,K2,n5,L2,n5,M2,n5,N2,n5,O2,n5,P2,n5,Q2,n5,R2,n5,S2,n5,T2,n5,U2,n5,V2,n5,W2,n5,X2,n5,Y2,n5,Z2,n5,_2,n5,$2,n5,a3,n5,b3,n5,c3,n5,d3,n5,e3,n5,f3,n5,g3,n5,h3,n5,i3,n5,j3,n5,k3,n5,l3,n5,m3,n5,n3,n5,o3,n5,p3,n5,q3,n5,r3,n5,s3,n5,t3,n5,u3,n5,v3,n5,w3,n5,x3,n5,y3,n5,z3,n5,A3,n5,B3,n5,C3,n5,D3,n5,E3,n5,F3,n5,G3,n5,H3,n5,I3,n5,J3,n5,K3,n5,L3,n5,M3,n5,N3,n5,O3,n5,P3,n5,Q3,n5,R3,n5,S3,n5,QM,Qk,_k,qk,zq,Dr,Er,cN,dN,qN,eO,Uj,Vj,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5];var _b=[o5,o5,U3,o5,V3,o5,W3,o5,X3,o5,Y3,o5,Z3,o5,_3,o5,$3,o5,a4,o5,b4,o5,c4,o5,d4,o5,e4,o5,f4,o5,g4,o5,h4,o5,i4,o5,j4,o5,k4,o5,l4,o5,m4,o5,n4,o5,o4,o5,p4,o5,q4,o5,r4,o5,s4,o5,t4,o5,u4,o5,v4,o5,w4,o5,x4,o5,y4,o5,z4,o5,A4,o5,B4,o5,C4,o5,D4,o5,E4,o5,F4,o5,G4,o5,H4,o5,I4,o5,J4,o5,K4,o5,L4,o5,M4,o5,N4,o5,O4,o5,P4,o5,Q4,o5,R4,o5,S4,o5,T4,o5,U4,o5,V4,o5,W4,o5,X4,o5,Y4,o5,Z4,o5,_4,o5,$4,o5,a5,o5,b5,o5,su,vd,xd,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5];return{_sqlite3_value_blob:$d,_sqlite3_column_name:Ie,_sqlite3_reset:Zd,_sqlite3_column_type:He,_sqlite3_exec:$e,_sqlite3_result_null:me,_sqlite3_step:ue,_bitshift64Lshr:hR,_sqlite3_prepare_v2:af,_sqlite3_close_v2:sf,_sqlite3_open:Ef,_bitshift64Shl:lR,_sqlite3_result_text:ne,_fflush:tQ,_sqlite3_column_bytes:Be,_sqlite3_bind_int:Le,_sqlite3_bind_blob:Je,_memset:kR,_sqlite3_value_double:ce,_memcpy:iR,_sqlite3_result_double:ie,_sqlite3_value_text:ae,_sqlite3_changes:pf,_sqlite3_column_blob:Ae,_sqlite3_bind_parameter_index:Se,_sqlite3_value_type:fe,_i64Subtract:fR,_sqlite3_column_text:Fe,_i64Add:gR,_sqlite3_value_bytes:be,_sqlite3_finalize:Yd,_sqlite3_column_double:Ce,_sqlite3_create_function_v2:wf,_sqlite3_free:Kd,_sqlite3_value_int:de,_sqlite3_data_count:ze,_sqlite3_bind_text:Oe,_sqlite3_bind_double:Ke,___errno_location:SP,_RegisterExtensionFunctions:ic,_free:$Q,_memmove:jR,_sqlite3_errmsg:bf,_sqlite3_clear_bindings:_d,_malloc:_Q,runPostSets:eR,stackAlloc:$b,stackSave:ac,stackRestore:bc,establishStackSpace:cc,setThrew:dc,setTempRet0:gc,getTempRet0:hc,dynCall_iiii:vR,dynCall_i:GS,dynCall_vi:RT,dynCall_vii:aV,dynCall_iiiiiii:lW,dynCall_ii:wX,dynCall_viii:HY,dynCall_v:SZ,dynCall_iiiii:b$,dynCall_viiiiii:m0,dynCall_iii:x1,dynCall_iiiiii:I2,dynCall_viiii:T3}}(f.mb,f.nb,buffer);f._sqlite3_value_blob=W._sqlite3_value_blob;f._sqlite3_column_name=W._sqlite3_column_name;f._sqlite3_reset=W._sqlite3_reset;f._sqlite3_column_type=W._sqlite3_column_type;f._sqlite3_exec=W._sqlite3_exec;f._sqlite3_result_null=W._sqlite3_result_null;f._sqlite3_step=W._sqlite3_step;var Tc=f._bitshift64Lshr=W._bitshift64Lshr;f._sqlite3_prepare_v2=W._sqlite3_prepare_v2;f._sqlite3_close_v2=W._sqlite3_close_v2;f._sqlite3_open=W._sqlite3_open;var bd=f._bitshift64Shl=W._bitshift64Shl;f._sqlite3_result_text=W._sqlite3_result_text;f._fflush=W._fflush;f._sqlite3_column_bytes=W._sqlite3_column_bytes;f._sqlite3_bind_int=W._sqlite3_bind_int;f._sqlite3_bind_blob=W._sqlite3_bind_blob;var ad=f._memset=W._memset;f._sqlite3_value_double=W._sqlite3_value_double;var Yc=f._memcpy=W._memcpy;f._sqlite3_result_double=W._sqlite3_result_double;f._sqlite3_value_text=W._sqlite3_value_text;f._sqlite3_changes=W._sqlite3_changes;f._sqlite3_column_blob=W._sqlite3_column_blob;f._sqlite3_bind_parameter_index=W._sqlite3_bind_parameter_index;f._sqlite3_value_type=W._sqlite3_value_type;var zb=f._i64Subtract=W._i64Subtract;f._sqlite3_column_text=W._sqlite3_column_text;var Ab=f._i64Add=W._i64Add;f._sqlite3_value_bytes=W._sqlite3_value_bytes;f._sqlite3_finalize=W._sqlite3_finalize;f._sqlite3_column_double=W._sqlite3_column_double;f._sqlite3_create_function_v2=W._sqlite3_create_function_v2;f._sqlite3_free=W._sqlite3_free;f._sqlite3_value_int=W._sqlite3_value_int;f._sqlite3_data_count=W._sqlite3_data_count;f._sqlite3_bind_text=W._sqlite3_bind_text;f._sqlite3_bind_double=W._sqlite3_bind_double;f.___errno_location=W.___errno_location;f._RegisterExtensionFunctions=W._RegisterExtensionFunctions;var Pa=f._free=W._free;f.runPostSets=W.runPostSets;var Zc=f._memmove=W._memmove;f._sqlite3_errmsg=W._sqlite3_errmsg;f._sqlite3_clear_bindings=W._sqlite3_clear_bindings;var Ga=f._malloc=W._malloc;f.dynCall_iiii=W.dynCall_iiii;f.dynCall_i=W.dynCall_i;f.dynCall_vi=W.dynCall_vi;f.dynCall_vii=W.dynCall_vii;f.dynCall_iiiiiii=W.dynCall_iiiiiii;f.dynCall_ii=W.dynCall_ii;f.dynCall_viii=W.dynCall_viii;f.dynCall_v=W.dynCall_v;f.dynCall_iiiii=W.dynCall_iiiii;f.dynCall_viiiiii=W.dynCall_viiiiii;f.dynCall_iii=W.dynCall_iii;f.dynCall_iiiiii=W.dynCall_iiiiii;f.dynCall_viiii=W.dynCall_viiii;l.R=W.stackAlloc;l.qa=W.stackSave;l.ga=W.stackRestore;l.we=W.establishStackSpace;l.Qb=W.setTempRet0;l.Ab=W.getTempRet0;function ka(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}ka.prototype=Error();ka.prototype.constructor=ka;var Vd=null,vb=function Wd(){f.calledRun||Xd();f.calledRun||(vb=Wd)};f.callMain=f.te=function(a){function b(){for(var a=0;3>a;a++)d.push(0)}assert(0==tb,"cannot call main when async dependencies remain! (listen on __ATMAIN__)");assert(0==bb.length,"cannot call main when preRun functions remain to be called");a=a||[];Ja||(Ja=!0,ab(cb));var c=a.length+1,d=[z(B(f.thisProgram),"i8",0)];b();for(var e=0;eg;a=0<=g?++c:--c)e[a]=u[d+a];return e};a.prototype.get=function(a){var c,d,e;null!=a&&this.bind(a)&&this.step();e=[];a=c=0;for(d=te(this.u);0<=d?cd;a=0<=d?++c:--c)switch(re(this.u,a)){case X.gb:case X.FLOAT:e.push(this.yb(a));break;case X.ib:e.push(this.zb(a));break;case X.cb:e.push(this.getBlob(a));break;default:e.push(null)}return e};a.prototype.getColumnNames=function(){var a,c,d,e;e=[];a=c=0;for(d=te(this.u);0<=d?cd;a=0<=d?++c:--c)e.push(pe(this.u,a));return e};a.prototype.getAsObject=function(a){var c,d,e,g,h,m;m=this.get(a);g=this.getColumnNames();h={};a=c=0;for(d=g.length;c>>0);null!=a&&Gc("/",this.filename,a,!0,!0);this.handleError(xe(this.filename,Z));this.db=y(Z,"i32");be(this.db);this.ra={}}a.prototype.run=function(a,c){var d;if(!this.db)throw"Database closed";c?(d=this.prepare(a,c),d.step(),d.free()):this.handleError(ve(this.db,a,0,0,Z));return this};a.prototype.exec=function(a){var c,d,e,g,h;if(!this.db)throw"Database closed";g=l.qa();d=l.R(a.length<<3);wa(a,d);a=l.R(4);for(e=[];y(d,"i8")!==ae;)if(ya(Z,0,"i32"),ya(a,0,"i32"),this.handleError(ze(this.db,d,-1,Z,a)),c=y(Z,"i32"),d=y(a,"i32"),c!==ae){h=new ce(c,this);for(c=null;h.step();)null===c&&(c={columns:h.getColumnNames(),values:[]},e.push(c)),c.values.push(h.get());h.free()}l.ga(g);return e};a.prototype.each=function(a,c,d,e){"function"===typeof c&&(e=d,d=c,c=void 0);for(a=this.prepare(a,c);a.step();)d(a.getAsObject());a.free();if("function"===typeof e)return e()};a.prototype.prepare=function(a,c){var d,e;ya(Z,0,"i32");this.handleError(ye(this.db,a,-1,Z,ae));d=y(Z,"i32");if(d===ae)throw"Nothing to prepare";e=new ce(d,this);null!=c&&e.bind(c);return this.ra[d]=e};a.prototype["export"]=function(){var a,c,d,e;d=this.ra;for(a in d)e=d[a],e.free();this.handleError(le(this.db));e=this.filename;a=a={encoding:"binary"};a.flags=a.flags||"r";a.encoding=a.encoding||"binary";if("utf8"!==a.encoding&&"binary"!==a.encoding)throw Error('Invalid encoding type "'+a.encoding+'"');d=wc(e,a.flags);e=rc(e).size;var g=new Uint8Array(e);Ac(d,g,0,e,0);"utf8"===a.encoding?c=La(g,0):"binary"===a.encoding&&(c=g);yc(d);this.handleError(xe(this.filename,Z));this.db=y(Z,"i32");return c};a.prototype.close=function(){var a,c,d;c=this.ra;for(a in c)d=c[a],d.free();this.handleError(le(this.db));qc("/"+this.filename);return this.db=null};a.prototype.handleError=function(a){if(a===X.ka)return null;a=ue(this.db);throw Error(a)};a.prototype.getRowsModified=function(){return je(this.db)};a.prototype.create_function=function(a,c){var d;d=l.La(function(a,b,d){var m,t,r,x,v;t=[];for(m=r=0;0<=b?r<=b:r>=b;m=0<=b?++r:--r)x=y(d+4*m,"i32"),v=Ke(x),m=function(){switch(!1){case 1!==v:return Ie;case 2!==v:return He;case 3!==v:return Je;case 4!==v:return function(a){var b,c,d,e;e=Ge(a);b=Fe(a);a=new Uint8Array(e);for(c=d=0;0<=e?de;c=0<=e?++d:--d)a[c]=u[b+c];return a};default:return function(){return null}}}(),m=m(x),t.push(m);if(b=c.apply(null,t))switch(typeof b){case"number":return Be(a,b);case"string":return De(a,b,-1,-1)}else return Ce(a)});this.handleError(se(this.db,a,c.length,X.jb,0,d,0,0,0));return this};return a}();xe=f.cwrap("sqlite3_open","number",["string","number"]);le=f.cwrap("sqlite3_close_v2","number",["number"]);ve=f.cwrap("sqlite3_exec","number",["number","string","number","number","number"]);f.cwrap("sqlite3_free","",["number"]);je=f.cwrap("sqlite3_changes","number",["number"]);ye=f.cwrap("sqlite3_prepare_v2","number",["number","string","number","number","number"]);ze=f.cwrap("sqlite3_prepare_v2","number",["number","number","number","number","number"]);ie=f.cwrap("sqlite3_bind_text","number",["number","number","number","number","number"]);ee=f.cwrap("sqlite3_bind_blob","number",["number","number","number","number","number"]);fe=f.cwrap("sqlite3_bind_double","number",["number","number","number"]);ge=f.cwrap("sqlite3_bind_int","number",["number","number","number"]);he=f.cwrap("sqlite3_bind_parameter_index","number",["number","string"]);Ee=f.cwrap("sqlite3_step","number",["number"]);ue=f.cwrap("sqlite3_errmsg","string",["number"]);te=f.cwrap("sqlite3_data_count","number",["number"]);oe=f.cwrap("sqlite3_column_double","number",["number","number"]);qe=f.cwrap("sqlite3_column_text","string",["number","number"]);me=f.cwrap("sqlite3_column_blob","number",["number","number"]);ne=f.cwrap("sqlite3_column_bytes","number",["number","number"]);re=f.cwrap("sqlite3_column_type","number",["number","number"]);pe=f.cwrap("sqlite3_column_name","string",["number","number"]);Ae=f.cwrap("sqlite3_reset","number",["number"]);ke=f.cwrap("sqlite3_clear_bindings","number",["number"]);we=f.cwrap("sqlite3_finalize","number",["number"]);se=f.cwrap("sqlite3_create_function_v2","number","number string number number number number number number number".split(" "));Ke=f.cwrap("sqlite3_value_type","number",["number"]);Ge=f.cwrap("sqlite3_value_bytes","number",["number"]);Je=f.cwrap("sqlite3_value_text","string",["number"]);Ie=f.cwrap("sqlite3_value_int","number",["number"]);Fe=f.cwrap("sqlite3_value_blob","number",["number"]);He=f.cwrap("sqlite3_value_double","number",["number"]);Be=f.cwrap("sqlite3_result_double","",["number","number"]);Ce=f.cwrap("sqlite3_result_null","",["number"]);De=f.cwrap("sqlite3_result_text","",["number","string","number","number"]);be=f.cwrap("RegisterExtensionFunctions","number",["number"]);this.SQL={Database:Database};for(de in this.SQL)f[de]=this.SQL[de];ae=0;X.ka=0;X.ERROR=1;X.$d=2;X.je=3;X.Ub=4;X.Wb=5;X.ce=6;X.NOMEM=7;X.me=8;X.ae=9;X.be=10;X.Zb=11;X.NOTFOUND=12;X.Yd=13;X.Xb=14;X.ke=15;X.EMPTY=16;X.ne=17;X.pe=18;X.Yb=19;X.de=20;X.ee=21;X.fe=22;X.Vb=23;X.Xd=24;X.le=25;X.ge=26;X.he=27;X.qe=28;X.hb=100;X.DONE=101;X.gb=1;X.FLOAT=2;X.ib=3;X.cb=4;X.ie=5;X.jb=1;return this["SQL"]}();if(typeof module!=="undefined")module.exports=SQL;if(typeof define==="function")define(SQL)}).call(this,require("_process"),require("buffer").Buffer,"/node_modules/sql.js/js")},{_process:"/data/github/geopackage-node/node_modules/browserify/node_modules/process/browser.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",crypto:"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/index.js",fs:"/data/github/geopackage-node/node_modules/browserify/lib/_empty.js",path:"/data/github/geopackage-node/node_modules/browserify/node_modules/path-browserify/index.js"}],"/data/github/geopackage-node/node_modules/wkx/lib/binaryreader.js":[function(require,module,exports){(function(Buffer){module.exports=BinaryReader;function BinaryReader(buffer,isBigEndian){this.buffer=buffer;this.position=0;this.isBigEndian=isBigEndian||false}function _read(readLE,readBE,size){return function(){var value;if(this.isBigEndian)value=readBE.call(this.buffer,this.position);else value=readLE.call(this.buffer,this.position);this.position+=size;return value}}BinaryReader.prototype.readUInt8=_read(Buffer.prototype.readUInt8,Buffer.prototype.readUInt8,1);BinaryReader.prototype.readUInt16=_read(Buffer.prototype.readUInt16LE,Buffer.prototype.readUInt16BE,2);BinaryReader.prototype.readUInt32=_read(Buffer.prototype.readUInt32LE,Buffer.prototype.readUInt32BE,4);BinaryReader.prototype.readInt8=_read(Buffer.prototype.readInt8,Buffer.prototype.readInt8,1);BinaryReader.prototype.readInt16=_read(Buffer.prototype.readInt16LE,Buffer.prototype.readInt16BE,2);BinaryReader.prototype.readInt32=_read(Buffer.prototype.readInt32LE,Buffer.prototype.readInt32BE,4);BinaryReader.prototype.readFloat=_read(Buffer.prototype.readFloatLE,Buffer.prototype.readFloatBE,4);BinaryReader.prototype.readDouble=_read(Buffer.prototype.readDoubleLE,Buffer.prototype.readDoubleBE,8);BinaryReader.prototype.readVarInt=function(){var nextByte,result=0,bytesRead=0;do{nextByte=this.buffer[this.position+bytesRead];result+=(nextByte&127)<<7*bytesRead;bytesRead++}while(nextByte>=128);this.position+=bytesRead;return result}}).call(this,require("buffer").Buffer)},{buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js"}],"/data/github/geopackage-node/node_modules/wkx/lib/binarywriter.js":[function(require,module,exports){(function(Buffer){module.exports=BinaryWriter;function BinaryWriter(size,allowResize){this.buffer=new Buffer(size);this.position=0;this.allowResize=allowResize}function _write(write,size){return function(value,noAssert){this.ensureSize(size);write.call(this.buffer,value,this.position,noAssert);this.position+=size}}BinaryWriter.prototype.writeUInt8=_write(Buffer.prototype.writeUInt8,1);BinaryWriter.prototype.writeUInt16LE=_write(Buffer.prototype.writeUInt16LE,2);BinaryWriter.prototype.writeUInt16BE=_write(Buffer.prototype.writeUInt16BE,2);BinaryWriter.prototype.writeUInt32LE=_write(Buffer.prototype.writeUInt32LE,4);BinaryWriter.prototype.writeUInt32BE=_write(Buffer.prototype.writeUInt32BE,4);BinaryWriter.prototype.writeInt8=_write(Buffer.prototype.writeInt8,1);BinaryWriter.prototype.writeInt16LE=_write(Buffer.prototype.writeInt16LE,2);BinaryWriter.prototype.writeInt16BE=_write(Buffer.prototype.writeInt16BE,2);BinaryWriter.prototype.writeInt32LE=_write(Buffer.prototype.writeInt32LE,4);BinaryWriter.prototype.writeInt32BE=_write(Buffer.prototype.writeInt32BE,4);BinaryWriter.prototype.writeFloatLE=_write(Buffer.prototype.writeFloatLE,4);BinaryWriter.prototype.writeFloatBE=_write(Buffer.prototype.writeFloatBE,4);BinaryWriter.prototype.writeDoubleLE=_write(Buffer.prototype.writeDoubleLE,8);BinaryWriter.prototype.writeDoubleBE=_write(Buffer.prototype.writeDoubleBE,8);BinaryWriter.prototype.writeBuffer=function(buffer){this.ensureSize(buffer.length);buffer.copy(this.buffer,this.position,0,buffer.length);this.position+=buffer.length};BinaryWriter.prototype.writeVarInt=function(value){var length=1;while((value&4294967168)!==0){this.writeUInt8(value&127|128);value>>>=7;length++}this.writeUInt8(value&127);return length};BinaryWriter.prototype.ensureSize=function(size){if(this.buffer.length=1e3&&wkbType<2e3){options.hasZ=true;geometryType=wkbType-1e3}else if(wkbType>=2e3&&wkbType<3e3){options.hasM=true;geometryType=wkbType-2e3}else if(wkbType>=3e3&&wkbType<4e3){options.hasZ=true;options.hasM=true;geometryType=wkbType-3e3}else{geometryType=wkbType}}else{if(wkbType&2147483648)options.hasZ=true;if(wkbType&1073741824)options.hasM=true;geometryType=wkbType&15}switch(geometryType){case Types.wkb.Point:return Point._parseWkb(binaryReader,options);case Types.wkb.LineString:return LineString._parseWkb(binaryReader,options);case Types.wkb.Polygon:return Polygon._parseWkb(binaryReader,options);case Types.wkb.MultiPoint:return MultiPoint._parseWkb(binaryReader,options);case Types.wkb.MultiLineString:return MultiLineString._parseWkb(binaryReader,options);case Types.wkb.MultiPolygon:return MultiPolygon._parseWkb(binaryReader,options);case Types.wkb.GeometryCollection:return GeometryCollection._parseWkb(binaryReader,options);default:throw new Error("GeometryType "+geometryType+" not supported")}};Geometry.parseTwkb=function(value){var binaryReader,options={};if(value instanceof BinaryReader)binaryReader=value;else binaryReader=new BinaryReader(value);var type=binaryReader.readUInt8();var metadataHeader=binaryReader.readUInt8();var geometryType=type&15;options.precision=ZigZag.decode(type>>4);options.precisionFactor=Math.pow(10,options.precision);options.hasBoundingBox=metadataHeader>>0&1;options.hasSizeAttribute=metadataHeader>>1&1;options.hasIdList=metadataHeader>>2&1;options.hasExtendedPrecision=metadataHeader>>3&1;options.isEmpty=metadataHeader>>4&1;if(options.hasExtendedPrecision){var extendedPrecision=binaryReader.readUInt8();options.hasZ=(extendedPrecision&1)===1;options.hasM=(extendedPrecision&2)===2;options.zPrecision=ZigZag.decode((extendedPrecision&28)>>2);options.zPrecisionFactor=Math.pow(10,options.zPrecision);options.mPrecision=ZigZag.decode((extendedPrecision&224)>>5);options.mPrecisionFactor=Math.pow(10,options.mPrecision)}else{options.hasZ=false;options.hasM=false}if(options.hasSizeAttribute)binaryReader.readVarInt();if(options.hasBoundingBox){var dimensions=2;if(options.hasZ)dimensions++;if(options.hasM)dimensions++;for(var i=0;i0)geometryCollection.hasZ=geometryCollection.geometries[0].hasZ;return geometryCollection};GeometryCollection.prototype.toWkt=function(){if(this.geometries.length===0)return this._getWktType(Types.wkt.GeometryCollection,true);var wkt=this._getWktType(Types.wkt.GeometryCollection,false)+"(";for(var i=0;i0){twkb.writeVarInt(this.geometries.length);for(var i=0;i0){this.hasZ=this.points[0].hasZ;this.hasM=this.points[0].hasM}}util.inherits(LineString,Geometry);LineString.Z=function(points){var lineString=new LineString(points);lineString.hasZ=true;return lineString};LineString.M=function(points){var lineString=new LineString(points);lineString.hasM=true;return lineString};LineString.ZM=function(points){var lineString=new LineString(points);lineString.hasZ=true;lineString.hasM=true;return lineString};LineString._parseWkt=function(value,options){var lineString=new LineString;lineString.srid=options.srid;lineString.hasZ=options.hasZ;lineString.hasM=options.hasM;if(value.isMatch(["EMPTY"]))return lineString;value.expectGroupStart();lineString.points.push.apply(lineString.points,value.matchCoordinates(options));value.expectGroupEnd();return lineString};LineString._parseWkb=function(value,options){var lineString=new LineString;lineString.srid=options.srid;lineString.hasZ=options.hasZ;lineString.hasM=options.hasM;var pointCount=value.readUInt32();for(var i=0;i0)lineString.hasZ=value.coordinates[0].length>2;for(var i=0;i0){twkb.writeVarInt(this.points.length);var previousPoint=new Point(0,0,0,0);for(var i=0;i0&&value.coordinates[0].length>0)multiLineString.hasZ=value.coordinates[0][0].length>2;for(var i=0;i0){twkb.writeVarInt(this.lineStrings.length);var previousPoint=new Point(0,0,0,0);for(var i=0;i0)multiPoint.hasZ=value.coordinates[0].length>2;for(var i=0;i0){twkb.writeVarInt(this.points.length);var previousPoint=new Point(0,0,0,0);for(var i=0;i0&&value.coordinates[0].length>0&&value.coordinates[0][0].length>0)multiPolygon.hasZ=value.coordinates[0][0][0].length>2;for(var i=0;i0){twkb.writeVarInt(this.polygons.length);var previousPoint=new Point(0,0,0,0);for(var i=0;i2)return new Point(coordinates[0],coordinates[1],coordinates[2]);return new Point(coordinates[0],coordinates[1])};Point.prototype.toWkt=function(){if(typeof this.x==="undefined"&&typeof this.y==="undefined"&&typeof this.z==="undefined"&&typeof this.m==="undefined")return this._getWktType(Types.wkt.Point,true);return this._getWktType(Types.wkt.Point,false)+"("+this._getWktCoordinate(this)+")"};Point.prototype.toWkb=function(parentOptions){var wkb=new BinaryWriter(this._getWkbSize());wkb.writeInt8(1);if(typeof this.x==="undefined"&&typeof this.y==="undefined"){this._writeWkbType(wkb,Types.wkb.MultiPoint,parentOptions);wkb.writeUInt32LE(0)}else{this._writeWkbType(wkb,Types.wkb.Point,parentOptions);this._writeWkbPoint(wkb)}return wkb.buffer};Point.prototype._writeWkbPoint=function(wkb){wkb.writeDoubleLE(this.x);wkb.writeDoubleLE(this.y);if(this.hasZ)wkb.writeDoubleLE(this.z);if(this.hasM)wkb.writeDoubleLE(this.m)};Point.prototype.toTwkb=function(){var twkb=new BinaryWriter(0,true);var precision=Geometry.getTwkbPrecision(5,0,0);var isEmpty=typeof this.x==="undefined"&&typeof this.y==="undefined";this._writeTwkbHeader(twkb,Types.wkb.Point,precision,isEmpty);if(!isEmpty)this._writeTwkbPoint(twkb,precision,new Point(0,0,0,0));return twkb.buffer};Point.prototype._writeTwkbPoint=function(twkb,precision,previousPoint){var x=this.x*precision.xyFactor;var y=this.y*precision.xyFactor;var z=this.z*precision.zFactor;var m=this.m*precision.mFactor;twkb.writeVarInt(ZigZag.encode(x-previousPoint.x));twkb.writeVarInt(ZigZag.encode(y-previousPoint.y));if(this.hasZ)twkb.writeVarInt(ZigZag.encode(z-previousPoint.z));if(this.hasM)twkb.writeVarInt(ZigZag.encode(m-previousPoint.m));previousPoint.x=x;previousPoint.y=y;previousPoint.z=z;previousPoint.m=m};Point.prototype._getWkbSize=function(){if(typeof this.x==="undefined"&&typeof this.y==="undefined")return 1+4+4;var size=1+4+8+8;if(this.hasZ)size+=8;if(this.hasM)size+=8;return size};Point.prototype.toGeoJSON=function(options){var geoJSON=Geometry.prototype.toGeoJSON.call(this,options);geoJSON.type=Types.geoJSON.Point;if(typeof this.x==="undefined"&&typeof this.y==="undefined")geoJSON.coordinates=[];else if(typeof this.z!=="undefined")geoJSON.coordinates=[this.x,this.y,this.z];else geoJSON.coordinates=[this.x,this.y];return geoJSON}},{"./binarywriter":"/data/github/geopackage-node/node_modules/wkx/lib/binarywriter.js","./geometry":"/data/github/geopackage-node/node_modules/wkx/lib/geometry.js","./types":"/data/github/geopackage-node/node_modules/wkx/lib/types.js","./zigzag.js":"/data/github/geopackage-node/node_modules/wkx/lib/zigzag.js",util:"/data/github/geopackage-node/node_modules/browserify/node_modules/util/util.js"}],"/data/github/geopackage-node/node_modules/wkx/lib/polygon.js":[function(require,module,exports){module.exports=Polygon;var util=require("util"); -var Geometry=require("./geometry");var Types=require("./types");var Point=require("./point");var BinaryWriter=require("./binarywriter");var ZigZag=require("./zigzag");function Polygon(exteriorRing,interiorRings){Geometry.call(this);this.exteriorRing=exteriorRing||[];this.interiorRings=interiorRings||[];if(this.exteriorRing.length>0){this.hasZ=this.exteriorRing[0].hasZ;this.hasM=this.exteriorRing[0].hasM}}util.inherits(Polygon,Geometry);Polygon.Z=function(exteriorRing,interiorRings){var polygon=new Polygon(exteriorRing,interiorRings);polygon.hasZ=true;return polygon};Polygon.M=function(exteriorRing,interiorRings){var polygon=new Polygon(exteriorRing,interiorRings);polygon.hasM=true;return polygon};Polygon.ZM=function(exteriorRing,interiorRings){var polygon=new Polygon(exteriorRing,interiorRings);polygon.hasZ=true;polygon.hasM=true;return polygon};Polygon._parseWkt=function(value,options){var polygon=new Polygon;polygon.srid=options.srid;polygon.hasZ=options.hasZ;polygon.hasM=options.hasM;if(value.isMatch(["EMPTY"]))return polygon;value.expectGroupStart();value.expectGroupStart();polygon.exteriorRing.push.apply(polygon.exteriorRing,value.matchCoordinates(options));value.expectGroupEnd();while(value.isMatch([","])){value.expectGroupStart();polygon.interiorRings.push(value.matchCoordinates(options));value.expectGroupEnd()}value.expectGroupEnd();return polygon};Polygon._parseWkb=function(value,options){var polygon=new Polygon;polygon.srid=options.srid;polygon.hasZ=options.hasZ;polygon.hasM=options.hasM;var ringCount=value.readUInt32();if(ringCount>0){var exteriorRingCount=value.readUInt32();for(var i=0;i0&&value.coordinates[0].length>0)polygon.hasZ=value.coordinates[0][0].length>2;for(var i=0;i0)polygon.interiorRings.push([]);for(var j=0;j0){wkb.writeUInt32LE(1+this.interiorRings.length);wkb.writeUInt32LE(this.exteriorRing.length)}else{wkb.writeUInt32LE(0)}for(var i=0;i0){twkb.writeVarInt(1+this.interiorRings.length);twkb.writeVarInt(this.exteriorRing.length);var previousPoint=new Point(0,0,0,0);for(var i=0;i0)size+=4+this.exteriorRing.length*coordinateSize;for(var i=0;i0){var exteriorRing=[];for(var i=0;i>31},decode:function(value){return value>>1^-(value&1)}}},{}]},{},["/data/github/geopackage-node/index.js"])("/data/github/geopackage-node/index.js")}); \ No newline at end of file diff --git a/libs/potree/lazylibs/sql.js/AUTHORS b/libs/potree/lazylibs/sql.js/AUTHORS deleted file mode 100644 index ae6cbb6..0000000 --- a/libs/potree/lazylibs/sql.js/AUTHORS +++ /dev/null @@ -1,6 +0,0 @@ -Ophir LOJKINE (https://github.com/lovasoa) -@kripken -@hankinsoft -@firien -@dinedal -@taytay diff --git a/libs/potree/lazylibs/sql.js/LICENSE b/libs/potree/lazylibs/sql.js/LICENSE deleted file mode 100644 index d5c3c98..0000000 --- a/libs/potree/lazylibs/sql.js/LICENSE +++ /dev/null @@ -1,44 +0,0 @@ -MIT license -=========== - -Copyright (c) 2017 sql.js authors (see AUTHORS) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - - -# Some portions of the Makefile taken from: -Copyright 2017 Ryusei Yamaguchi - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/libs/potree/lazylibs/sql.js/README.md b/libs/potree/lazylibs/sql.js/README.md deleted file mode 100644 index 0824c93..0000000 --- a/libs/potree/lazylibs/sql.js/README.md +++ /dev/null @@ -1,283 +0,0 @@ -# SQLite compiled to javascript -[![Build Status](https://travis-ci.org/kripken/sql.js.svg?branch=master)](http://travis-ci.org/kripken/sql.js) [![CDNJS version](https://img.shields.io/cdnjs/v/sql.js.svg)](https://cdnjs.com/libraries/sql.js) - -For the impatients, try the demo here: http://kripken.github.io/sql.js/examples/GUI - -*sql.js* is a port of [SQLite](http://sqlite.org/about.html) to Webassembly, by compiling the SQLite C code with [Emscripten](http://kripken.github.io/emscripten-site/docs/introducing_emscripten/about_emscripten.html). It uses a [virtual database file stored in memory](https://kripken.github.io/emscripten-site/docs/porting/files/file_systems_overview.html), and thus **doesn't persist the changes** made to the database. However, it allows you to **import** any existing sqlite file, and to **export** the created database as a [javascript typed array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays). - -There are no C bindings or node-gyp compilation here, sql.js is a simple javascript file, that can be used like any traditional javascript library. If you are building a native application in javascript (using Electron for instance), or are working in node.js, you will likely prefer to use [a native binding of SQLite to javascript](https://www.npmjs.com/package/sqlite3). - -SQLite is public domain, sql.js is MIT licensed. - -Sql.js predates WebAssembly, and thus started as an [asm.js](https://en.wikipedia.org/wiki/Asm.js) project. It still supports asm.js for backwards compatability. - -## Version of binaries -Sql.js was last built with: -Emscripten version 1.38.30 (2019-04-16) [Release History](https://emscripten.org/docs/introducing_emscripten/release_notes.html) -SqlLite version: 3.28.0 (2019-04-16) [Release History](https://www.sqlite.org/changes.html) - -## Documentation -A [full documentation](http://kripken.github.io/sql.js/documentation/#http://kripken.github.io/sql.js/documentation/class/Database.html) generated from comments inside the source code, is available. - -## Usage - -```javascript -var initSqlJs = require('sql-wasm.js'); -// or if you are in a browser: -//var initSqlJs = window.initSqlJs; - -initSqlJs().then(function(SQL){ - - // Create a database - var db = new SQL.Database(); - // NOTE: You can also use new SQL.Database(data) where - // data is an Uint8Array representing an SQLite database file - - // Execute some sql - sqlstr = "CREATE TABLE hello (a int, b char);"; - sqlstr += "INSERT INTO hello VALUES (0, 'hello');" - sqlstr += "INSERT INTO hello VALUES (1, 'world');" - db.run(sqlstr); // Run the query without returning anything - - var res = db.exec("SELECT * FROM hello"); - /* - [ - {columns:['a','b'], values:[[0,'hello'],[1,'world']]} - ] - */ - - // Prepare an sql statement - var stmt = db.prepare("SELECT * FROM hello WHERE a=:aval AND b=:bval"); - - // Bind values to the parameters and fetch the results of the query - var result = stmt.getAsObject({':aval' : 1, ':bval' : 'world'}); - console.log(result); // Will print {a:1, b:'world'} - - // Bind other values - stmt.bind([0, 'hello']); - while (stmt.step()) console.log(stmt.get()); // Will print [0, 'hello'] - - // You can also use javascript functions inside your SQL code - // Create the js function you need - function add(a, b) {return a+b;} - // Specifies the SQL function's name, the number of it's arguments, and the js function to use - db.create_function("add_js", add); - // Run a query in which the function is used - db.run("INSERT INTO hello VALUES (add_js(7, 3), add_js('Hello ', 'world'));"); // Inserts 10 and 'Hello world' - - // free the memory used by the statement - stmt.free(); - // You can not use your statement anymore once it has been freed. - // But not freeing your statements causes memory leaks. You don't want that. - - // Export the database to an Uint8Array containing the SQLite database file - var binaryArray = db.export(); -}); - -``` - -## Demo -There are a few examples [available here](https://kripken.github.io/sql.js/index.html). The most full-featured is the [Sqlite Interpreter](https://kripken.github.io/sql.js/examples/GUI/index.html). - -## Examples -The test files provide up to date example of the use of the api. -### Inside the browser -#### Example **HTML** file: -```html - - - - - - Output is in Javscript console - - -``` - -#### Creating a database from a file choosen by the user -`SQL.Database` constructor takes an array of integer representing a database file as an optional parameter. -The following code uses an HTML input as the source for loading a database: -```javascript -dbFileElm.onchange = () => { - var f = dbFileElm.files[0]; - var r = new FileReader(); - r.onload = function() { - var Uints = new Uint8Array(r.result); - db = new SQL.Database(Uints); - } - r.readAsArrayBuffer(f); -} -``` -See : http://kripken.github.io/sql.js/examples/GUI/gui.js - -#### Loading a database from a server - -```javascript -var xhr = new XMLHttpRequest(); -// For example: https://github.com/lerocha/chinook-database/raw/master/ChinookDatabase/DataSources/Chinook_Sqlite.sqlite -xhr.open('GET', '/path/to/database.sqlite', true); -xhr.responseType = 'arraybuffer'; - -xhr.onload = e => { - var uInt8Array = new Uint8Array(this.response); - var db = new SQL.Database(uInt8Array); - var contents = db.exec("SELECT * FROM my_table"); - // contents is now [{columns:['col1','col2',...], values:[[first row], [second row], ...]}] -}; -xhr.send(); -``` -See: https://github.com/kripken/sql.js/wiki/Load-a-database-from-the-server - - -### Use from node.js - -`sql.js` is [hosted on npm](https://www.npmjs.org/package/sql.js). To install it, you can simply run `npm install sql.js`. -Alternatively, you can simply download `sql-wasm.js` and `sql-wasm.wasm`, from the download link below. - -#### read a database from the disk: -```javascript -var fs = require('fs'); -var initSqlJs = require('sql-wasm.js'); -var filebuffer = fs.readFileSync('test.sqlite'); - -initSqlJs().then(function(SQL){ - // Load the db - var db = new SQL.Database(filebuffer); -}); - -``` - -#### write a database to the disk -You need to convert the result of `db.export` to a buffer -```javascript -var fs = require("fs"); -// [...] (create the database) -var data = db.export(); -var buffer = new Buffer(data); -fs.writeFileSync("filename.sqlite", buffer); -``` - -See : https://github.com/kripken/sql.js/blob/master/test/test_node_file.js - -### Use as web worker -If you don't want to run CPU-intensive SQL queries in your main application thread, -you can use the *more limited* WebWorker API. - -You will need to download [dist/worker.sql-wasm.js](dist/worker.sql-wasm.js) [dist/worker.sql-wasm.wasm](dist/worker.sql-wasm.wasm). - -Example: -```html - -``` - -See [examples/GUI/gui.js](examples/GUI/gui.js) for a full working example. - -## Flavors/versions Targets/Downloads - -This library includes both WebAssembly and asm.js versions of Sqlite. (WebAssembly is the newer, preferred way to compile to Javascript, and has superceded asm.js. It produces smaller, faster code.) Asm.js versions are included for compatibility. - -## Upgrading from 0.x to 1.x - -Version 1.0 of sql.js must be loaded asynchronously, whereas asm.js was able to be loaded synchronously. - -So in the past, you would: -```html - - -``` -or: -```javascript -var SQL = require('sql.js'); -var db = new QL.Database(); -//... -``` - -Version 1.x: -```html - - -``` -or: -```javascript -var initSqlJs = require('sql-wasm.js'); -initSqlJs().then(function(SQL){ - var db = new SQL.Database(); - //... -}); -``` - -`NOTHING` is now a reserved word in SQLite, whereas previously it was not. This could cause errors like `Error: near "nothing": syntax error` - -### Downloading/Using: ### -Although asm.js files were distributed as a single Javascript file, WebAssembly libraries are most efficiently distributed as a pair of files, the `.js` loader and the `.wasm` file, like [dist/sql-wasm.js]([dist/sql-wasm.js]) and [dist/sql-wasm.wasm]([dist/sql-wasm.wasm]). The `.js` file is reponsible for wrapping/loading the `.wasm` file. - - - - -## Versions of sql.js included in `dist/` - - `sql-wasm.js` : The Web Assembly version of Sql.js. Minified and suitable for production. Use this. If you use this, you will need to include/ship `sql-wasm.wasm` as well. - - `sql-wasm-debug.js` : The Web Assembly, Debug version of Sql.js. Larger, with assertions turned on. Useful for local development. You will need to include/ship `sql-wasm-debug.wasm` if you use this. - - `sql-asm.js` : The older asm.js version of Sql.js. Slower and larger. Provided for compatiblity reasons. - - `sql-asm-memory-growth.js` : Asm.js doesn't allow for memory to grow by default, because it is slower and de-optimizes. If you are using sql-asm.js and you see this error (`Cannot enlarge memory arrays`), use this file. - - `sql-asm-debug.js` : The _Debug_ asm.js version of Sql.js. Use this for local development. - - `worker.*` - Web Worker versions of the above libraries. More limited API. See [examples/GUI/gui.js](examples/GUI/gui.js) for a good example of this. - -## Compiling - -- Install the EMSDK, [as described here](https://kripken.github.io/emscripten-site/docs/getting_started/downloads.html) -- Run `npm run rebuild` - diff --git a/libs/potree/lazylibs/sql.js/sql-wasm.js b/libs/potree/lazylibs/sql.js/sql-wasm.js deleted file mode 100644 index f75abd4..0000000 --- a/libs/potree/lazylibs/sql.js/sql-wasm.js +++ /dev/null @@ -1,209 +0,0 @@ - -// We are modularizing this manually because the current modularize setting in Emscripten has some issues: -// https://github.com/kripken/emscripten/issues/5820 -// In addition, When you use emcc's modularization, it still expects to export a global object called `Module`, -// which is able to be used/called before the WASM is loaded. -// The modularization below exports a promise that loads and resolves to the actual sql.js module. -// That way, this module can't be used before the WASM is finished loading. - -// We are going to define a function that a user will call to start loading initializing our Sql.js library -// However, that function might be called multiple times, and on subsequent calls, we don't actually want it to instantiate a new instance of the Module -// Instead, we want to return the previously loaded module - -// TODO: Make this not declare a global if used in the browser -var initSqlJsPromise = undefined; - -var initSqlJs = function (moduleConfig) { - - if (initSqlJsPromise){ - return initSqlJsPromise; - } - // If we're here, we've never called this function before - initSqlJsPromise = new Promise((resolveModule, reject) => { - - // We are modularizing this manually because the current modularize setting in Emscripten has some issues: - // https://github.com/kripken/emscripten/issues/5820 - - // The way to affect the loading of emcc compiled modules is to create a variable called `Module` and add - // properties to it, like `preRun`, `postRun`, etc - // We are using that to get notified when the WASM has finished loading. - // Only then will we return our promise - - // If they passed in a moduleConfig object, use that - // Otherwise, initialize Module to the empty object - var Module = typeof moduleConfig !== 'undefined' ? moduleConfig : {}; - - // EMCC only allows for a single onAbort function (not an array of functions) - // So if the user defined their own onAbort function, we remember it and call it - var originalOnAbortFunction = Module['onAbort']; - Module['onAbort'] = function (errorThatCausedAbort) { - reject(new Error(errorThatCausedAbort)); - if (originalOnAbortFunction){ - originalOnAbortFunction(errorThatCausedAbort); - } - }; - - Module['postRun'] = Module['postRun'] || []; - Module['postRun'].push(function () { - // When Emscripted calls postRun, this promise resolves with the built Module - resolveModule(Module); - }); - - // There is a section of code in the emcc-generated code below that looks like this: - // (Note that this is lowercase `module`) - // if (typeof module !== 'undefined') { - // module['exports'] = Module; - // } - // When that runs, it's going to overwrite our own modularization export efforts in shell-post.js! - // The only way to tell emcc not to emit it is to pass the MODULARIZE=1 or MODULARIZE_INSTANCE=1 flags, - // but that carries with it additional unnecessary baggage/bugs we don't want either. - // So, we have three options: - // 1) We undefine `module` - // 2) We remember what `module['exports']` was at the beginning of this function and we restore it later - // 3) We write a script to remove those lines of code as part of the Make process. - // - // Since those are the only lines of code that care about module, we will undefine it. It's the most straightforward - // of the options, and has the side effect of reducing emcc's efforts to modify the module if its output were to change in the future. - // That's a nice side effect since we're handling the modularization efforts ourselves - module = undefined; - - // The emcc-generated code and shell-post.js code goes below, - // meaning that all of it runs inside of this promise. If anything throws an exception, our promise will abort -var aa;var f;f||(f=typeof Module !== 'undefined' ? Module : {}); -var va=function(){var a;var b=h(4);var c={};var d=function(){function a(a,b){this.fb=a;this.db=b;this.nb=1;this.Eb=[]}a.prototype.bind=function(a){if(!this.fb)throw"Statement closed";this.reset();return Array.isArray(a)?this.lc(a):this.mc(a)};a.prototype.step=function(){var a;if(!this.fb)throw"Statement closed";this.nb=1;switch(a=Tb(this.fb)){case c.hc:return!0;case c.DONE:return!1;default:return this.db.handleError(a)}};a.prototype.sc=function(a){null==a&&(a=this.nb++);return Ub(this.fb,a)};a.prototype.tc= -function(a){null==a&&(a=this.nb++);return Vb(this.fb,a)};a.prototype.getBlob=function(a){var b;null==a&&(a=this.nb++);var c=Wb(this.fb,a);var d=Xb(this.fb,a);var e=new Uint8Array(c);for(a=b=0;0<=c?bc;a=0<=c?++b:--b)e[a]=l[d+a];return e};a.prototype.get=function(a){var b,d;null!=a&&this.bind(a)&&this.step();var e=[];a=b=0;for(d=ib(this.fb);0<=d?bd;a=0<=d?++b:--b)switch(Yb(this.fb,a)){case c.fc:case c.FLOAT:e.push(this.sc(a));break;case c.ic:e.push(this.tc(a));break;case c.Zb:e.push(this.getBlob(a)); -break;default:e.push(null)}return e};a.prototype.getColumnNames=function(){var a,b;var c=[];var d=a=0;for(b=ib(this.fb);0<=b?ab;d=0<=b?++a:--a)c.push(Zb(this.fb,d));return c};a.prototype.getAsObject=function(a){var b,c;var d=this.get(a);var e=this.getColumnNames();var g={};a=b=0;for(c=e.length;b>>0);if(null!=a){var c=this.filename,d=c?n("/",c):"/";c=ia(!0,!0);d=ja(d,(void 0!==c?c:438)&4095|32768,0);if(a){if("string"===typeof a){for(var e=Array(a.length),k=0,m=a.length;kc;e=0<=c?++g:--g){var m=q(d+4*e,"i32");var z=jc(m);e=function(){switch(!1){case 1!==z:return kc; -case 2!==z:return lc;case 3!==z:return mc;case 4!==z:return function(a){var b,c;var d=nc(a);var e=oc(a);a=new Uint8Array(d);for(b=c=0;0<=d?cd;b=0<=d?++c:--c)a[b]=l[e+b];return a};default:return function(){return null}}}();e=e(m);k.push(e)}if(c=b.apply(null,k))switch(typeof c){case "number":return pc(a,c);case "string":return qc(a,c,-1,-1)}else return rc(a)});this.handleError(sc(this.db,a,b.length,c.jc,0,d,0,0,0));return this};return a}();var g=f.cwrap("sqlite3_open","number",["string","number"]); -var k=f.cwrap("sqlite3_close_v2","number",["number"]);var m=f.cwrap("sqlite3_exec","number",["number","string","number","number","number"]);f.cwrap("sqlite3_free","",["number"]);var y=f.cwrap("sqlite3_changes","number",["number"]);var z=f.cwrap("sqlite3_prepare_v2","number",["number","string","number","number","number"]);var fa=f.cwrap("sqlite3_prepare_v2","number",["number","number","number","number","number"]);var ca=f.cwrap("sqlite3_bind_text","number",["number","number","number","number","number"]); -var Ia=f.cwrap("sqlite3_bind_blob","number",["number","number","number","number","number"]);var ac=f.cwrap("sqlite3_bind_double","number",["number","number","number"]);var $b=f.cwrap("sqlite3_bind_int","number",["number","number","number"]);var bc=f.cwrap("sqlite3_bind_parameter_index","number",["number","string"]);var Tb=f.cwrap("sqlite3_step","number",["number"]);var hc=f.cwrap("sqlite3_errmsg","string",["number"]);var ib=f.cwrap("sqlite3_data_count","number",["number"]);var Ub=f.cwrap("sqlite3_column_double", -"number",["number","number"]);var Vb=f.cwrap("sqlite3_column_text","string",["number","number"]);var Xb=f.cwrap("sqlite3_column_blob","number",["number","number"]);var Wb=f.cwrap("sqlite3_column_bytes","number",["number","number"]);var Yb=f.cwrap("sqlite3_column_type","number",["number","number"]);var Zb=f.cwrap("sqlite3_column_name","string",["number","number"]);var dc=f.cwrap("sqlite3_reset","number",["number"]);var cc=f.cwrap("sqlite3_clear_bindings","number",["number"]);var ec=f.cwrap("sqlite3_finalize", -"number",["number"]);var sc=f.cwrap("sqlite3_create_function_v2","number","number string number number number number number number number".split(" "));var jc=f.cwrap("sqlite3_value_type","number",["number"]);var nc=f.cwrap("sqlite3_value_bytes","number",["number"]);var mc=f.cwrap("sqlite3_value_text","string",["number"]);var kc=f.cwrap("sqlite3_value_int","number",["number"]);var oc=f.cwrap("sqlite3_value_blob","number",["number"]);var lc=f.cwrap("sqlite3_value_double","number",["number"]);var pc= -f.cwrap("sqlite3_result_double","",["number","number"]);var rc=f.cwrap("sqlite3_result_null","",["number"]);var qc=f.cwrap("sqlite3_result_text","",["number","string","number","number"]);var fc=f.cwrap("RegisterExtensionFunctions","number",["number"]);this.SQL={Database:e};for(a in this.SQL)f[a]=this.SQL[a];var da=0;c.xb=0;c.we=1;c.Pe=2;c.Ze=3;c.Cc=4;c.Ec=5;c.Se=6;c.NOMEM=7;c.bf=8;c.Qe=9;c.Re=10;c.Hc=11;c.NOTFOUND=12;c.Oe=13;c.Fc=14;c.$e=15;c.EMPTY=16;c.cf=17;c.df=18;c.Gc=19;c.Te=20;c.Ue=21;c.Ve= -22;c.Dc=23;c.Ne=24;c.af=25;c.We=26;c.Xe=27;c.ef=28;c.hc=100;c.DONE=101;c.fc=1;c.FLOAT=2;c.ic=3;c.Zb=4;c.Ye=5;c.jc=1}.bind(this);f.preRun=f.preRun||[];f.preRun.push(va);var wa={},u;for(u in f)f.hasOwnProperty(u)&&(wa[u]=f[u]);f.arguments=[];f.thisProgram="./this.program";f.quit=function(a,b){throw b;};f.preRun=[];f.postRun=[];var v=!1,w=!1,x=!1,xa=!1;v="object"===typeof window;w="function"===typeof importScripts;x="object"===typeof process&&"function"===typeof require&&!v&&!w;xa=!v&&!x&&!w;var A=""; -if(x){A=__dirname+"/";var ya,za;f.read=function(a,b){ya||(ya=require("fs"));za||(za=require("path"));a=za.normalize(a);a=ya.readFileSync(a);return b?a:a.toString()};f.readBinary=function(a){a=f.read(a,!0);a.buffer||(a=new Uint8Array(a));assert(a.buffer);return a};1>2];a=b+a+15&-16;if(a<=Da())D[Ca>>2]=a;else if(!Ea(a))return 0;return b} -var Fa={"f64-rem":function(a,b){return a%b},"debugger":function(){debugger}},Ga=1,E=Array(64);function ua(a){for(var b=0;64>b;b++)if(!E[b])return E[b]=a,Ga+b;throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.";}"object"!==typeof WebAssembly&&C("no native wasm support detected"); -function q(a,b){b=b||"i8";"*"===b.charAt(b.length-1)&&(b="i32");switch(b){case "i1":return l[a>>0];case "i8":return l[a>>0];case "i16":return Ha[a>>1];case "i32":return D[a>>2];case "i64":return D[a>>2];case "float":return Ja[a>>2];case "double":return Ka[a>>3];default:B("invalid type for getValue: "+b)}return null}var La,Ma=!1;function assert(a,b){a||B("Assertion failed: "+b)}function Na(a){var b=f["_"+a];assert(b,"Cannot call unknown function "+a+", make sure it is exported");return b} -function Oa(a,b,c,d){var e={string:function(a){var b=0;if(null!==a&&void 0!==a&&0!==a){var c=(a.length<<2)+1;b=h(c);r(a,F,b,c)}return b},array:function(a){var b=h(a.length);l.set(a,b);return b}},g=Na(a),k=[];a=0;if(d)for(var m=0;m>0]=0;break;case "i8":l[a>>0]=0;break;case "i16":Ha[a>>1]=0;break;case "i32":D[a>>2]=0;break;case "i64":aa=[0,1<=+Pa(0)?~~+Qa(0)>>>0:0];D[a>>2]=aa[0];D[a+4>>2]=aa[1];break;case "float":Ja[a>>2]=0;break;case "double":Ka[a>>3]=0;break;default:B("invalid type for setValue: "+b)}}var Ra=0,Sa=3; -function ea(a){var b=Ra;if("number"===typeof a){var c=!0;var d=a}else c=!1,d=a.length;b=b==Sa?e:[Ta,h,Ba][b](Math.max(d,1));if(c){var e=b;assert(0==(b&3));for(a=b+(d&-4);e>2]=0;for(a=b+d;e>0]=0;return b}a.subarray||a.slice?F.set(a,b):F.set(new Uint8Array(a),b);return b}var Ua="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0; -function t(a,b,c){var d=b+c;for(c=b;a[c]&&!(c>=d);)++c;if(16e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d}function G(a){return a?t(F,a,void 0):""} -function r(a,b,c,d){if(!(0=k){var m=a.charCodeAt(++g);k=65536+((k&1023)<<10)|m&1023}if(127>=k){if(c>=d)break;b[c++]=k}else{if(2047>=k){if(c+1>=d)break;b[c++]=192|k>>6}else{if(65535>=k){if(c+2>=d)break;b[c++]=224|k>>12}else{if(c+3>=d)break;b[c++]=240|k>>18;b[c++]=128|k>>12&63}b[c++]=128|k>>6&63}b[c++]=128|k&63}}b[c]=0;return c-e} -function oa(a){for(var b=0,c=0;c=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:b+4}return b}"undefined"!==typeof TextDecoder&&new TextDecoder("utf-16le");function Va(a){return a.replace(/__Z[\w\d_]+/g,function(a){return a===a?a:a+" ["+a+"]"})}function Wa(a){0Ya&&C("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+Ya+"! (TOTAL_STACK=5242880)"); -f.buffer?buffer=f.buffer:"object"===typeof WebAssembly&&"function"===typeof WebAssembly.Memory?(La=new WebAssembly.Memory({initial:Ya/65536}),buffer=La.buffer):buffer=new ArrayBuffer(Ya);Xa();D[Ca>>2]=5303264;function Za(a){for(;0>2];var c=D[b>>2]}else ob.rb=!0,J.USER=J.LOGNAME="web_user",J.PATH="/",J.PWD="/",J.HOME="/home/web_user",J.LANG="C.UTF-8",J._=f.thisProgram,c=db?Ta(1024):Ba(1024),b=db?Ta(256):Ba(256),D[b>>2]=c,D[a>>2]=b;a=[];var d=0,e;for(e in J)if("string"===typeof J[e]){var g=e+"="+J[e];a.push(g);d+=g.length}if(1024>0]=d.charCodeAt(m);l[k>>0]=0;D[b+ -4*e>>2]=c;c+=g.length+1}D[b+4*a.length>>2]=0}function pb(a){f.___errno_location&&(D[f.___errno_location()>>2]=a);return a}function qb(a,b){for(var c=0,d=a.length-1;0<=d;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift("..");return a}function rb(a){var b="/"===a.charAt(0),c="/"===a.substr(-1);(a=qb(a.split("/").filter(function(a){return!!a}),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b?"/":"")+a} -function sb(a){var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return".";b&&(b=b.substr(0,b.length-1));return a+b}function tb(a){if("/"===a)return"/";var b=a.lastIndexOf("/");return-1===b?a:a.substr(b+1)}function ub(){var a=Array.prototype.slice.call(arguments,0);return rb(a.join("/"))}function n(a,b){return rb(a+"/"+b)} -function vb(){for(var a="",b=!1,c=arguments.length-1;-1<=c&&!b;c--){b=0<=c?arguments[c]:"/";if("string"!==typeof b)throw new TypeError("Arguments to path.resolve must be strings");if(!b)return"";a=b+"/"+a;b="/"===b.charAt(0)}a=qb(a.split("/").filter(function(a){return!!a}),!b).join("/");return(b?"/":"")+a||"."}var wb=[];function xb(a,b){wb[a]={input:[],output:[],ub:b};yb(a,zb)} -var zb={open:function(a){var b=wb[a.node.rdev];if(!b)throw new K(L.Cb);a.tty=b;a.seekable=!1},close:function(a){a.tty.ub.flush(a.tty)},flush:function(a){a.tty.ub.flush(a.tty)},read:function(a,b,c,d){if(!a.tty||!a.tty.ub.Xb)throw new K(L.Ob);for(var e=0,g=0;g=b||(b=Math.max(b,c*(1048576>c?2:1.125)|0),0!=c&&(b=Math.max(b,256)),c=a.bb,a.bb=new Uint8Array(b),0b)a.bb.length=b;else for(;a.bb.length=a.node.gb)return 0;a=Math.min(a.node.gb-e,d);if(8b)throw new K(L.ib);return b},Pb:function(a,b,c){M.Tb(a.node,b+c);a.node.gb=Math.max(a.node.gb,b+c)},zb:function(a,b,c,d,e,g,k){if(32768!== -(a.node.mode&61440))throw new K(L.Cb);c=a.node.bb;if(k&2||c.buffer!==b&&c.buffer!==b.buffer){if(0>2)}catch(c){if(!c.code)throw c; -throw new K(L[c.code]);}return b.mode},kb:function(a){for(var b=[];a.parent!==a;)b.push(a.name),a=a.parent;b.push(a.jb.Hb.root);b.reverse();return ub.apply(null,b)},qc:function(a){a&=-2656257;var b=0,c;for(c in P.Ub)a&c&&(b|=P.Ub[c],a^=c);if(a)throw new K(L.ib);return b},ab:{lb:function(a){a=P.kb(a);try{var b=fs.lstatSync(a)}catch(c){if(!c.code)throw c;throw new K(L[c.code]);}P.yb&&!b.pb&&(b.pb=4096);P.yb&&!b.blocks&&(b.blocks=(b.size+b.pb-1)/b.pb|0);return{dev:b.dev,ino:b.ino,mode:b.mode,nlink:b.nlink, -uid:b.uid,gid:b.gid,rdev:b.rdev,size:b.size,atime:b.atime,mtime:b.mtime,ctime:b.ctime,pb:b.pb,blocks:b.blocks}},hb:function(a,b){var c=P.kb(a);try{void 0!==b.mode&&(fs.chmodSync(c,b.mode),a.mode=b.mode),void 0!==b.size&&fs.truncateSync(c,b.size)}catch(d){if(!d.code)throw d;throw new K(L[d.code]);}},lookup:function(a,b){var c=n(P.kb(a),b);c=P.Wb(c);return P.createNode(a,b,c)},vb:function(a,b,c,d){a=P.createNode(a,b,c,d);b=P.kb(a);try{N(a.mode)?fs.mkdirSync(b,a.mode):fs.writeFileSync(b,"",{mode:a.mode})}catch(e){if(!e.code)throw e; -throw new K(L[e.code]);}return a},rename:function(a,b,c){a=P.kb(a);b=n(P.kb(b),c);try{fs.renameSync(a,b)}catch(d){if(!d.code)throw d;throw new K(L[d.code]);}},unlink:function(a,b){a=n(P.kb(a),b);try{fs.unlinkSync(a)}catch(c){if(!c.code)throw c;throw new K(L[c.code]);}},rmdir:function(a,b){a=n(P.kb(a),b);try{fs.rmdirSync(a)}catch(c){if(!c.code)throw c;throw new K(L[c.code]);}},readdir:function(a){a=P.kb(a);try{return fs.readdirSync(a)}catch(b){if(!b.code)throw b;throw new K(L[b.code]);}},symlink:function(a, -b,c){a=n(P.kb(a),b);try{fs.symlinkSync(c,a)}catch(d){if(!d.code)throw d;throw new K(L[d.code]);}},readlink:function(a){var b=P.kb(a);try{return b=fs.readlinkSync(b),b=Fb.relative(Fb.resolve(a.jb.Hb.root),b)}catch(c){if(!c.code)throw c;throw new K(L[c.code]);}}},cb:{open:function(a){var b=P.kb(a.node);try{32768===(a.node.mode&61440)&&(a.wb=fs.openSync(b,P.qc(a.flags)))}catch(c){if(!c.code)throw c;throw new K(L[c.code]);}},close:function(a){try{32768===(a.node.mode&61440)&&a.wb&&fs.closeSync(a.wb)}catch(b){if(!b.code)throw b; -throw new K(L[b.code]);}},read:function(a,b,c,d,e){if(0===d)return 0;try{return fs.readSync(a.wb,P.Rb(b.buffer),c,d,e)}catch(g){throw new K(L[g.code]);}},write:function(a,b,c,d,e){try{return fs.writeSync(a.wb,P.Rb(b.buffer),c,d,e)}catch(g){throw new K(L[g.code]);}},ob:function(a,b,c){if(1===c)b+=a.position;else if(2===c&&32768===(a.node.mode&61440))try{b+=fs.fstatSync(a.wb).size}catch(d){throw new K(L[d.code]);}if(0>b)throw new K(L.ib);return b}}},Gb=null,Hb={},Q=[],Ib=1,R=null,Jb=!0,S={},K=null, -Eb={};function T(a,b){a=vb("/",a);b=b||{};if(!a)return{path:"",node:null};var c={Vb:!0,Jb:0},d;for(d in c)void 0===b[d]&&(b[d]=c[d]);if(8>>0)%R.length}function Nb(a){var b=Mb(a.parent.id,a.name);a.tb=R[b];R[b]=a}function Ob(a){var b=Mb(a.parent.id,a.name);if(R[b]===a)R[b]=a.tb;else for(b=R[b];b;){if(b.tb===a){b.tb=a.tb;break}b=b.tb}} -function O(a,b){var c;if(c=(c=Pb(a,"x"))?c:a.ab.lookup?0:13)throw new K(c,a);for(c=R[Mb(a.id,b)];c;c=c.tb){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.ab.lookup(a,b)} -function Db(a,b,c,d){Qb||(Qb=function(a,b,c,d){a||(a=this);this.parent=a;this.jb=a.jb;this.sb=null;this.id=Ib++;this.name=b;this.mode=c;this.ab={};this.cb={};this.rdev=d},Qb.prototype={},Object.defineProperties(Qb.prototype,{read:{get:function(){return 365===(this.mode&365)},set:function(a){a?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146===(this.mode&146)},set:function(a){a?this.mode|=146:this.mode&=-147}}}));a=new Qb(a,b,c,d);Nb(a);return a} -function N(a){return 16384===(a&61440)}var Rb={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};function ic(a){var b=["r","w","rw"][a&3];a&512&&(b+="w");return b}function Pb(a,b){if(Jb)return 0;if(-1===b.indexOf("r")||a.mode&292){if(-1!==b.indexOf("w")&&!(a.mode&146)||-1!==b.indexOf("x")&&!(a.mode&73))return 13}else return 13;return 0}function tc(a,b){try{return O(a,b),17}catch(c){}return Pb(a,"wx")} -function uc(a,b,c){try{var d=O(a,b)}catch(e){return e.eb}if(a=Pb(a,"wx"))return a;if(c){if(!N(d.mode))return 20;if(d===d.parent||"/"===Lb(d))return 16}else if(N(d.mode))return 21;return 0}function vc(a){var b=4096;for(a=a||0;a<=b;a++)if(!Q[a])return a;throw new K(24);} -function wc(a,b){xc||(xc=function(){},xc.prototype={},Object.defineProperties(xc.prototype,{object:{get:function(){return this.node},set:function(a){this.node=a}}}));var c=new xc,d;for(d in a)c[d]=a[d];a=c;b=vc(b);a.fd=b;return Q[b]=a}var Cb={open:function(a){a.cb=Hb[a.node.rdev].cb;a.cb.open&&a.cb.open(a)},ob:function(){throw new K(29);}};function yb(a,b){Hb[a]={cb:b}} -function yc(a,b){var c="/"===b,d=!b;if(c&&Gb)throw new K(16);if(!c&&!d){var e=T(b,{Vb:!1});b=e.path;e=e.node;if(e.sb)throw new K(16);if(!N(e.mode))throw new K(20);}b={type:a,Hb:{},Yb:b,wc:[]};a=a.jb(b);a.jb=b;b.root=a;c?Gb=a:e&&(e.sb=b,e.jb&&e.jb.wc.push(b))}function ja(a,b,c){var d=T(a,{parent:!0}).node;a=tb(a);if(!a||"."===a||".."===a)throw new K(22);var e=tc(d,a);if(e)throw new K(e);if(!d.ab.vb)throw new K(1);return d.ab.vb(d,a,b,c)}function U(a,b){ja(a,(void 0!==b?b:511)&1023|16384,0)} -function zc(a,b,c){"undefined"===typeof c&&(c=b,b=438);ja(a,b|8192,c)}function Ac(a,b){if(!vb(a))throw new K(2);var c=T(b,{parent:!0}).node;if(!c)throw new K(2);b=tb(b);var d=tc(c,b);if(d)throw new K(d);if(!c.ab.symlink)throw new K(1);c.ab.symlink(c,b,a)} -function ta(a){var b=T(a,{parent:!0}).node,c=tb(a),d=O(b,c),e=uc(b,c,!1);if(e)throw new K(e);if(!b.ab.unlink)throw new K(1);if(d.sb)throw new K(16);try{S.willDeletePath&&S.willDeletePath(a)}catch(g){console.log("FS.trackingDelegate['willDeletePath']('"+a+"') threw an exception: "+g.message)}b.ab.unlink(b,c);Ob(d);try{if(S.onDeletePath)S.onDeletePath(a)}catch(g){console.log("FS.trackingDelegate['onDeletePath']('"+a+"') threw an exception: "+g.message)}} -function Kb(a){a=T(a).node;if(!a)throw new K(2);if(!a.ab.readlink)throw new K(22);return vb(Lb(a.parent),a.ab.readlink(a))}function ra(a,b){a=T(a,{qb:!b}).node;if(!a)throw new K(2);if(!a.ab.lb)throw new K(1);return a.ab.lb(a)}function Bc(a){return ra(a,!0)}function ka(a,b){var c;"string"===typeof a?c=T(a,{qb:!0}).node:c=a;if(!c.ab.hb)throw new K(1);c.ab.hb(c,{mode:b&4095|c.mode&-4096,timestamp:Date.now()})} -function Cc(a){var b;"string"===typeof a?b=T(a,{qb:!0}).node:b=a;if(!b.ab.hb)throw new K(1);b.ab.hb(b,{timestamp:Date.now()})}function Dc(a,b){if(0>b)throw new K(22);var c;"string"===typeof a?c=T(a,{qb:!0}).node:c=a;if(!c.ab.hb)throw new K(1);if(N(c.mode))throw new K(21);if(32768!==(c.mode&61440))throw new K(22);if(a=Pb(c,"w"))throw new K(a);c.ab.hb(c,{size:b,timestamp:Date.now()})} -function p(a,b,c,d){if(""===a)throw new K(2);if("string"===typeof b){var e=Rb[b];if("undefined"===typeof e)throw Error("Unknown file open mode: "+b);b=e}c=b&64?("undefined"===typeof c?438:c)&4095|32768:0;if("object"===typeof a)var g=a;else{a=rb(a);try{g=T(a,{qb:!(b&131072)}).node}catch(k){}}e=!1;if(b&64)if(g){if(b&128)throw new K(17);}else g=ja(a,c,0),e=!0;if(!g)throw new K(2);8192===(g.mode&61440)&&(b&=-513);if(b&65536&&!N(g.mode))throw new K(20);if(!e&&(c=g?40960===(g.mode&61440)?40:N(g.mode)&& -("r"!==ic(b)||b&512)?21:Pb(g,ic(b)):2))throw new K(c);b&512&&Dc(g,0);b&=-641;d=wc({node:g,path:Lb(g),flags:b,seekable:!0,position:0,cb:g.cb,Bc:[],error:!1},d);d.cb.open&&d.cb.open(d);!f.logReadFiles||b&1||(Ec||(Ec={}),a in Ec||(Ec[a]=1,console.log("FS.trackingDelegate error on read file: "+a)));try{S.onOpenFile&&(g=0,1!==(b&2097155)&&(g|=1),0!==(b&2097155)&&(g|=2),S.onOpenFile(a,g))}catch(k){console.log("FS.trackingDelegate['onOpenFile']('"+a+"', flags) threw an exception: "+k.message)}return d} -function ma(a){if(null===a.fd)throw new K(9);a.Gb&&(a.Gb=null);try{a.cb.close&&a.cb.close(a)}catch(b){throw b;}finally{Q[a.fd]=null}a.fd=null}function Fc(a,b,c){if(null===a.fd)throw new K(9);if(!a.seekable||!a.cb.ob)throw new K(29);if(0!=c&&1!=c&&2!=c)throw new K(22);a.position=a.cb.ob(a,b,c);a.Bc=[]} -function sa(a,b,c,d,e){if(0>d||0>e)throw new K(22);if(null===a.fd)throw new K(9);if(1===(a.flags&2097155))throw new K(9);if(N(a.node.mode))throw new K(21);if(!a.cb.read)throw new K(22);var g="undefined"!==typeof e;if(!g)e=a.position;else if(!a.seekable)throw new K(29);b=a.cb.read(a,b,c,d,e);g||(a.position+=b);return b} -function la(a,b,c,d,e,g){if(0>d||0>e)throw new K(22);if(null===a.fd)throw new K(9);if(0===(a.flags&2097155))throw new K(9);if(N(a.node.mode))throw new K(21);if(!a.cb.write)throw new K(22);a.flags&1024&&Fc(a,0,2);var k="undefined"!==typeof e;if(!k)e=a.position;else if(!a.seekable)throw new K(29);b=a.cb.write(a,b,c,d,e,g);k||(a.position+=b);try{if(a.path&&S.onWriteToFile)S.onWriteToFile(a.path)}catch(m){console.log("FS.trackingDelegate['onWriteToFile']('"+a.path+"') threw an exception: "+m.message)}return b} -function Gc(){K||(K=function(a,b){this.node=b;this.zc=function(a){this.eb=a};this.zc(a);this.message="FS error";this.stack&&Object.defineProperty(this,"stack",{value:Error().stack,writable:!0})},K.prototype=Error(),K.prototype.constructor=K,[2].forEach(function(a){Eb[a]=new K(a);Eb[a].stack=""}))}var Hc;function ia(a,b){var c=0;a&&(c|=365);b&&(c|=146);return c} -function Ic(a,b,c){a=n("/dev",a);var d=ia(!!b,!!c);Jc||(Jc=64);var e=Jc++<<8|0;yb(e,{open:function(a){a.seekable=!1},close:function(){c&&c.buffer&&c.buffer.length&&c(10)},read:function(a,c,d,e){for(var g=0,k=0;k>2]=d.dev;D[c+4>>2]=0;D[c+8>>2]=d.ino;D[c+12>>2]=d.mode;D[c+16>>2]=d.nlink;D[c+20>>2]=d.uid;D[c+24>>2]=d.gid;D[c+28>>2]=d.rdev;D[c+32>>2]=0;D[c+36>>2]=d.size;D[c+40>>2]=4096;D[c+44>>2]=d.blocks;D[c+48>>2]=d.atime.getTime()/1E3|0;D[c+52>>2]=0;D[c+56>>2]=d.mtime.getTime()/1E3|0;D[c+60>>2]=0;D[c+64>>2]=d.ctime.getTime()/1E3|0;D[c+68>>2]=0;D[c+72>>2]=d.ino;return 0}var W=0; -function X(){W+=4;return D[W-4>>2]}function Y(){return G(X())}function Z(){var a=Q[X()];if(!a)throw new K(L.Kb);return a}function Da(){return l.length}function Ea(a){if(2147418112=b?b=Wa(2*b):b=Math.min(Wa((3*b+2147483648)/4),2147418112);a=Wa(b);var c=buffer.byteLength;try{var d=-1!==La.grow((a-c)/65536)?buffer=La.buffer:null}catch(e){d=null}if(!d||d.byteLength!=b)return!1;Xa();return!0} -function Mc(a){if(0===a)return 0;a=G(a);if(!J.hasOwnProperty(a))return 0;Mc.rb&&ha(Mc.rb);a=J[a];var b=oa(a)+1,c=Ta(b);c&&r(a,l,c,b);Mc.rb=c;return Mc.rb}r("GMT",F,60272,4); -function Nc(){function a(a){return(a=a.toTimeString().match(/\(([A-Za-z ]+)\)$/))?a[1]:"GMT"}if(!Oc){Oc=!0;D[Pc()>>2]=60*(new Date).getTimezoneOffset();var b=new Date(2E3,0,1),c=new Date(2E3,6,1);D[Qc()>>2]=Number(b.getTimezoneOffset()!=c.getTimezoneOffset());var d=a(b),e=a(c);d=ea(ba(d));e=ea(ba(e));c.getTimezoneOffset()>2]=d,D[Rc()+4>>2]=e):(D[Rc()>>2]=e,D[Rc()+4>>2]=d)}}var Oc; -function Sc(a){a/=1E3;if((v||w)&&self.performance&&self.performance.now)for(var b=self.performance.now();self.performance.now()-b>2]=c.position;c.Gb&&0===d&&0===g&&(c.Gb=null);return 0}catch(k){return"undefined"!==typeof V&&k instanceof K||B(k),-k.eb}},ca:function(a,b){W=b;try{var c=Y(),d=X();ka(c,d);return 0}catch(e){return"undefined"!==typeof V&&e instanceof K||B(e),-e.eb}},ba:function(a,b){W=b;try{var c=X(),d=X();if(0===d)return-L.ib;if(dd?-L.ib:p(c.path,c.flags,0,d).fd;case 1:case 2:return 0; -case 3:return c.flags;case 4:return d=X(),c.flags|=d,0;case 12:return d=X(),Ha[d+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-L.ib;case 9:return pb(L.ib),-1;default:return-L.ib}}catch(e){return"undefined"!==typeof V&&e instanceof K||B(e),-e.eb}},U:function(a,b){W=b;try{var c=Z(),d=X(),e=X();return sa(c,l,d,e)}catch(g){return"undefined"!==typeof V&&g instanceof K||B(g),-g.eb}},T:function(a,b){W=b;try{var c=Y();var d=X();if(d&-8)var e=-L.ib;else{var g=T(c,{qb:!0}).node;a="";d&4&&(a+="r"); -d&2&&(a+="w");d&1&&(a+="x");e=a&&Pb(g,a)?-L.$b:0}return e}catch(k){return"undefined"!==typeof V&&k instanceof K||B(k),-k.eb}},S:function(a,b){W=b;try{var c=Y(),d=X();a=c;a=rb(a);"/"===a[a.length-1]&&(a=a.substr(0,a.length-1));U(a,d);return 0}catch(e){return"undefined"!==typeof V&&e instanceof K||B(e),-e.eb}},R:function(a,b){W=b;try{var c=Z(),d=X(),e=X();return la(c,l,d,e)}catch(g){return"undefined"!==typeof V&&g instanceof K||B(g),-g.eb}},Q:function(a,b){W=b;try{var c=Y(),d=T(c,{parent:!0}).node, -e=tb(c),g=O(d,e),k=uc(d,e,!0);if(k)throw new K(k);if(!d.ab.rmdir)throw new K(1);if(g.sb)throw new K(16);try{S.willDeletePath&&S.willDeletePath(c)}catch(m){console.log("FS.trackingDelegate['willDeletePath']('"+c+"') threw an exception: "+m.message)}d.ab.rmdir(d,e);Ob(g);try{if(S.onDeletePath)S.onDeletePath(c)}catch(m){console.log("FS.trackingDelegate['onDeletePath']('"+c+"') threw an exception: "+m.message)}return 0}catch(m){return"undefined"!==typeof V&&m instanceof K||B(m),-m.eb}},P:function(a,b){W= -b;try{var c=Y(),d=X(),e=X();return p(c,d,e).fd}catch(g){return"undefined"!==typeof V&&g instanceof K||B(g),-g.eb}},s:function(a,b){W=b;try{var c=Z();ma(c);return 0}catch(d){return"undefined"!==typeof V&&d instanceof K||B(d),-d.eb}},O:function(a,b){W=b;try{var c=Y(),d=X();var e=X();if(0>=e)var g=-L.ib;else{var k=Kb(c),m=Math.min(e,oa(k)),y=l[d+m];r(k,F,d,e+1);l[d+m]=y;g=m}return g}catch(z){return"undefined"!==typeof V&&z instanceof K||B(z),-z.eb}},N:function(a,b){W=b;try{var c=X(),d=X(),e=Kc[c];if(!e)return 0; -if(d===e.uc){var g=Q[e.fd],k=e.flags,m=new Uint8Array(F.subarray(c,c+d));g&&g.cb.Ab&&g.cb.Ab(g,m,0,d,k);Kc[c]=null;e.Db&&ha(e.vc)}return 0}catch(y){return"undefined"!==typeof V&&y instanceof K||B(y),-y.eb}},M:function(a,b){W=b;try{var c=X(),d=X(),e=Q[c];if(!e)throw new K(9);ka(e.node,d);return 0}catch(g){return"undefined"!==typeof V&&g instanceof K||B(g),-g.eb}},L:Da,K:function(a,b,c){F.set(F.subarray(b,b+c),a)},J:Ea,r:Mc,q:function(a){var b=Date.now();D[a>>2]=b/1E3|0;D[a+4>>2]=b%1E3*1E3|0;return 0}, -I:function(a){return Math.log(a)/Math.LN10},p:function(){B("trap!")},H:function(a){Nc();a=new Date(1E3*D[a>>2]);D[15056]=a.getSeconds();D[15057]=a.getMinutes();D[15058]=a.getHours();D[15059]=a.getDate();D[15060]=a.getMonth();D[15061]=a.getFullYear()-1900;D[15062]=a.getDay();var b=new Date(a.getFullYear(),0,1);D[15063]=(a.getTime()-b.getTime())/864E5|0;D[15065]=-(60*a.getTimezoneOffset());var c=(new Date(2E3,6,1)).getTimezoneOffset();b=b.getTimezoneOffset();a=(c!=b&&a.getTimezoneOffset()==Math.min(b, -c))|0;D[15064]=a;a=D[Rc()+(a?4:0)>>2];D[15066]=a;return 60224},G:function(a,b){var c=D[a>>2];a=D[a+4>>2];0!==b&&(D[b>>2]=0,D[b+4>>2]=0);return Sc(1E6*c+a/1E3)},F:function(a){switch(a){case 30:return 16384;case 85:return 131068;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809; -case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32; -case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"===typeof navigator?navigator.hardwareConcurrency||1:1}pb(22);return-1}, -E:function(a){var b=Date.now()/1E3|0;a&&(D[a>>2]=b);return b},D:function(a,b){if(b){var c=1E3*D[b+8>>2];c+=D[b+12>>2]/1E3}else c=Date.now();a=G(a);try{b=c;var d=T(a,{qb:!0}).node;d.ab.hb(d,{timestamp:Math.max(b,c)});return 0}catch(e){a=e;if(!(a instanceof K)){a+=" : ";a:{d=Error();if(!d.stack){try{throw Error(0);}catch(g){d=g}if(!d.stack){d="(no stack trace available)";break a}}d=d.stack.toString()}f.extraStackTrace&&(d+="\n"+f.extraStackTrace());d=Va(d);throw a+d;}pb(a.eb);return-1}},C:function(){B("OOM")}, -a:Ca},buffer);f.asm=Vc;f._RegisterExtensionFunctions=function(){return f.asm.ha.apply(null,arguments)};var nb=f.___emscripten_environ_constructor=function(){return f.asm.ia.apply(null,arguments)};f.___errno_location=function(){return f.asm.ja.apply(null,arguments)}; -var Qc=f.__get_daylight=function(){return f.asm.ka.apply(null,arguments)},Pc=f.__get_timezone=function(){return f.asm.la.apply(null,arguments)},Rc=f.__get_tzname=function(){return f.asm.ma.apply(null,arguments)},ha=f._free=function(){return f.asm.na.apply(null,arguments)},Ta=f._malloc=function(){return f.asm.oa.apply(null,arguments)},Tc=f._memalign=function(){return f.asm.pa.apply(null,arguments)},Uc=f._memset=function(){return f.asm.qa.apply(null,arguments)}; -f._sqlite3_bind_blob=function(){return f.asm.ra.apply(null,arguments)};f._sqlite3_bind_double=function(){return f.asm.sa.apply(null,arguments)};f._sqlite3_bind_int=function(){return f.asm.ta.apply(null,arguments)};f._sqlite3_bind_parameter_index=function(){return f.asm.ua.apply(null,arguments)};f._sqlite3_bind_text=function(){return f.asm.va.apply(null,arguments)};f._sqlite3_changes=function(){return f.asm.wa.apply(null,arguments)};f._sqlite3_clear_bindings=function(){return f.asm.xa.apply(null,arguments)}; -f._sqlite3_close_v2=function(){return f.asm.ya.apply(null,arguments)};f._sqlite3_column_blob=function(){return f.asm.za.apply(null,arguments)};f._sqlite3_column_bytes=function(){return f.asm.Aa.apply(null,arguments)};f._sqlite3_column_double=function(){return f.asm.Ba.apply(null,arguments)};f._sqlite3_column_name=function(){return f.asm.Ca.apply(null,arguments)};f._sqlite3_column_text=function(){return f.asm.Da.apply(null,arguments)};f._sqlite3_column_type=function(){return f.asm.Ea.apply(null,arguments)}; -f._sqlite3_create_function_v2=function(){return f.asm.Fa.apply(null,arguments)};f._sqlite3_data_count=function(){return f.asm.Ga.apply(null,arguments)};f._sqlite3_errmsg=function(){return f.asm.Ha.apply(null,arguments)};f._sqlite3_exec=function(){return f.asm.Ia.apply(null,arguments)};f._sqlite3_finalize=function(){return f.asm.Ja.apply(null,arguments)};f._sqlite3_free=function(){return f.asm.Ka.apply(null,arguments)};f._sqlite3_open=function(){return f.asm.La.apply(null,arguments)}; -f._sqlite3_prepare_v2=function(){return f.asm.Ma.apply(null,arguments)};f._sqlite3_reset=function(){return f.asm.Na.apply(null,arguments)};f._sqlite3_result_double=function(){return f.asm.Oa.apply(null,arguments)};f._sqlite3_result_null=function(){return f.asm.Pa.apply(null,arguments)};f._sqlite3_result_text=function(){return f.asm.Qa.apply(null,arguments)};f._sqlite3_step=function(){return f.asm.Ra.apply(null,arguments)};f._sqlite3_value_blob=function(){return f.asm.Sa.apply(null,arguments)}; -f._sqlite3_value_bytes=function(){return f.asm.Ta.apply(null,arguments)};f._sqlite3_value_double=function(){return f.asm.Ua.apply(null,arguments)};f._sqlite3_value_int=function(){return f.asm.Va.apply(null,arguments)};f._sqlite3_value_text=function(){return f.asm.Wa.apply(null,arguments)};f._sqlite3_value_type=function(){return f.asm.Xa.apply(null,arguments)}; -var h=f.stackAlloc=function(){return f.asm.Za.apply(null,arguments)},qa=f.stackRestore=function(){return f.asm._a.apply(null,arguments)},na=f.stackSave=function(){return f.asm.$a.apply(null,arguments)};f.dynCall_vi=function(){return f.asm.Ya.apply(null,arguments)};f.asm=Vc;f.cwrap=function(a,b,c,d){c=c||[];var e=c.every(function(a){return"number"===a});return"string"!==b&&e&&!d?Na(a):function(){return Oa(a,b,c,arguments)}};f.stackSave=na;f.stackRestore=qa;f.stackAlloc=h; -function Wc(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}Wc.prototype=Error();Wc.prototype.constructor=Wc;gb=function Xc(){f.calledRun||Yc();f.calledRun||(gb=Xc)}; -function Yc(){function a(){if(!f.calledRun&&(f.calledRun=!0,!Ma)){db||(db=!0,f.noFSInit||Hc||(Hc=!0,Gc(),f.stdin=f.stdin,f.stdout=f.stdout,f.stderr=f.stderr,f.stdin?Ic("stdin",f.stdin):Ac("/dev/tty","/dev/stdin"),f.stdout?Ic("stdout",null,f.stdout):Ac("/dev/tty","/dev/stdout"),f.stderr?Ic("stderr",null,f.stderr):Ac("/dev/tty1","/dev/stderr"),p("/dev/stdin","r"),p("/dev/stdout","w"),p("/dev/stderr","w")),Za(ab));Jb=!1;Za(bb);if(f.onRuntimeInitialized)f.onRuntimeInitialized();if(f.postRun)for("function"== -typeof f.postRun&&(f.postRun=[f.postRun]);f.postRun.length;){var a=f.postRun.shift();cb.unshift(a)}Za(cb)}}if(!(0 *{ - margin: 4px 20px; -} - -.ui-slider { - margin-top: 5px; - margin-bottom: 10px; - background-color: var(--color-1) !important; - background: none; - border: 1px solid black; -} - -.ui-selectmenu-button.ui-button{ - width: 100% !important; -} - -.pv-menu-list > li > .ui-slider{ - background-color: var(--color-1) !important; - background: none; - border: 1px solid black; -} - -.pv-menu-list .ui-slider{ - background-color: var(--color-1) !important; - background: none; - border: 1px solid black !important; -} - -.ui-slider-handle{ - border: 1px solid black !important; -} - -.ui-widget{ - box-sizing:border-box -} - -.panel-body > li > .ui-slider{ - background-color: var(--color-1) !important; - background: none; - border: 1px solid black; -} - -.panel-body > div > li > .ui-slider{ - background-color: var(--color-1) !important; - background: none; - border: 1px solid black; -} - -.pv-select-label{ - margin: 1px; - font-size: 90%; - font-weight: 100; -} - -.button-icon:hover{ - /*background-color: #09181C;*/ - filter: drop-shadow(0px 0px 4px white); -} - -.ui-widget-content{ - /*color: var(--font-color) !important;*/ -} - -.accordion > h3{ - background-color: var(--bg-color-2) !important; - background: #f6f6f6 50% 50% repeat-x; - border: 1px solid black; - color: var(--font-color-2); - cursor: pointer; - margin: 2px 0 0 0; - padding: 4px 10px 4px 30px; - box-shadow: 0px 3px 3px #111; - text-shadow: 1px 1px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000; - font-size: 1em; -} - -.accordion > h3:hover{ - filter: brightness(125%); -} - -.accordion-content{ - padding: 0px 0px !important; - border: none !important; -} - -.icon-bar{ - height: 4px !important; - border: 1px solid black; - background-color: white; - border-radius: 2px; -} - -.canvas{ - -webkit-transition: top .35s, left .35s, bottom .35s, right .35s, width .35s; - transition: top .35s, left .35s, bottom .35s, right .35s, width .35s; -} - -#profile_window{ - background-color: var(--bg-color); -} - -#profile_titlebar{ - background-color: var(--bg-color-2); - color: var(--font-color-2); - text-shadow: 1px 1px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000; - font-size: 1em; - font-weight: bold; -} - -#profile_window_title{ - position: absolute; - margin: 5px; -} - -.profile-container-button{ - cursor: pointer; -} - -.profile-button:hover{ - background-color: #0000CC; -} - -.unselectable{ - user-select: none; -} - -.selectable{ - user-select: text; -} - - - -.divider { - display: block; - text-align: center; - overflow: hidden; - white-space: nowrap; - font-weight: bold; - font-size: 90%; - letter-spacing: 1px; - margin-left: 0px; - margin-right: 0px; - margin-top: 1px; - margin-bottom: 1px; - padding: 1px !important; -} - -.divider > span { - position: relative; - display: inline-block; -} - -.divider > span:before, -.divider > span:after { - content: ""; - position: absolute; - top: 50%; - width: 9999px; - height: 1px; - background: #b2b2b2; -} - -.divider > span:before { - right: 100%; - margin-right: 5px; -} - -.divider > span:after { - left: 100%; - margin-left: 5px; -} - - - - - - - - - - - -.ol-dragbox { - background-color: rgba(255,255,255,0.4); - border-color: rgba(100,150,0,1); - border: 1px solid red; -} - -.text-icon{ - opacity: 0.5; - height: 24px; -} - -.text-icon:hover{ - opacity: 1.0; -} - -.input-grid-cell{ - flex-grow: 1; margin: 0px 3px 0px 3px; -} - -.input-grid-label{ - flex-grow: 1; - margin: 0px 3px 0px 3px; - text-align:center; - font-weight: bold; -} - -.input-grid-cell > input{ - width: 100% -} - -.invalid_value{ - color: #e05e5e; -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** - * OVERRIDES - */ - - -.ui-spinner-input{ - color: black; -} - -.jstree-themeicon-custom{ - background-size: 16px !important; -} - -.jstree-default .jstree-clicked{ - /*background-color: #ffffff !important;*/ - background-color: #34494f !important; -} - -.jstree-default .jstree-hovered{ - background-color: #34494f !important; -} - -.jstree-anchor{ - width: 100% !important; -} - -.ui-state-default{ - background: #a6a9aa !important; - border: 1px solid black; - color: black; -} - -.ui-state-active{ - background: #c6c9ca !important; - color: black !important; -} - -.cesium-viewer .cesium-viewer-cesiumWidgetContainer{ - position: absolute; - height: 100%; - width: 100%; -} - - - - -.zs_widget{ - padding: 2px; - height: 4em; - user-select: none; -} -.zs_core{ - overflow: hidden; - position: relative; - height: 100%; -} -.zs_handle{ - position: absolute; - top: 0px; - bottom: 0px; - border: 1px solid black; - border-radius: 3px; - background-color: rgb(166, 169, 170); - width: 8px; - user-select: none; - width: 1.2em; - height: 1.2em; - top: calc(50% - 0.6em); -} -.zs_stretch{ - position: absolute; - top: 0px; - bottom: 0px; - border: 1px solid black; - border-radius: 3px; - background-color: rgb(166, 169, 170); - width: 8px; - user-select: none; - width: 1.2em; - height: 1.2em; - top: calc(50% - 0.6em); - color: black; - font-weight: bold; - font-size: 1.2em; - font-family: arial; -} -.zs_handle:hover{ - background-color: lightgreen; -} -.zs_inside{ - position: absolute !important; - width: 100%; - border: 1px solid black; - background-color: white; - top: calc(50% - 0.326em); - height: 0.652em; - cursor: zoom-in; -} -.zs_outside{ - position: absolute !important; - width: 100%; - background-color: var(--color-1) !important; - top: calc(50% - 0.326em); - height: 0.652em; - cursor: zoom-in; -} -.zs_visible_range_label{ - position: absolute; - bottom: 0px; - pointer-events:none; -} -.zs_visible_range_label_left{ - left: 0px; -} -.zs_visible_range_label_right{ - right: 0px; -} -.zs_chosen_range_label{ - position: absolute; - pointer-events:none; -} - -#potree_sidebar_container{ - scrollbar-color: var(--color-1) var(--bg-color); - scrollbar-width: thin; -} - - - -::-webkit-scrollbar { - width: 6px; - background-color: var(--bg-color); -} - -::-webkit-scrollbar-track { - -} - -::-webkit-scrollbar-thumb { - background-color: var(--color-1); -} - -.propertypanel_content .heading{ - font-weight: bold; - padding-top: 0.6em; - padding-bottom: 0.1em; -} \ No newline at end of file diff --git a/libs/potree/potree.js b/libs/potree/potree.js deleted file mode 100644 index b44b953..0000000 --- a/libs/potree/potree.js +++ /dev/null @@ -1,33293 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = global || self, factory(global.Potree = {})); -}(this, (function (exports) { 'use strict'; - - /** - * @author mrdoob / http://mrdoob.com/ https://github.com/mrdoob/eventdispatcher.js - * - * with slight modifications by mschuetz, http://potree.org - * - */ - - // The MIT License - // - // Copyright (c) 2011 Mr.doob - // - // Permission is hereby granted, free of charge, to any person obtaining a copy - // of this software and associated documentation files (the "Software"), to deal - // in the Software without restriction, including without limitation the rights - // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - // copies of the Software, and to permit persons to whom the Software is - // furnished to do so, subject to the following conditions: - // - // The above copyright notice and this permission notice shall be included in - // all copies or substantial portions of the Software. - // - // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - // THE SOFTWARE. - - - - - - class EventDispatcher{ - - constructor(){ - this._listeners = {}; - } - - addEventListener(type, listener){ - - const listeners = this._listeners; - - if(listeners[type] === undefined){ - listeners[type] = []; - } - - if(listeners[type].indexOf(listener) === - 1){ - listeners[type].push( listener ); - } - - } - - hasEventListener(type, listener){ - - const listeners = this._listeners; - - return listeners[type] !== undefined && listeners[type].indexOf(listener) !== - 1; - } - - removeEventListener(type, listener){ - - let listeners = this._listeners; - let listenerArray = listeners[type]; - - if (listenerArray !== undefined){ - - let index = listenerArray.indexOf(listener); - - if(index !== - 1){ - listenerArray.splice(index, 1); - } - } - - } - - removeEventListeners(type){ - if(this._listeners[type] !== undefined){ - delete this._listeners[type]; - } - }; - - dispatchEvent(event){ - - let listeners = this._listeners; - let listenerArray = listeners[event.type]; - - if ( listenerArray !== undefined ) { - event.target = this; - - for(let listener of listenerArray.slice(0)){ - listener.call(this, event); - } - } - - } - - } - - class Action extends EventDispatcher { - constructor (args = {}) { - super(); - - this.icon = args.icon || ''; - this.tooltip = args.tooltip; - - if (args.onclick !== undefined) { - this.onclick = args.onclick; - } - } - - onclick (event) { - - } - - pairWith (object) { - - } - - setIcon (newIcon) { - let oldIcon = this.icon; - - if (newIcon === oldIcon) { - return; - } - - this.icon = newIcon; - - this.dispatchEvent({ - type: 'icon_changed', - action: this, - icon: newIcon, - oldIcon: oldIcon - }); - } - }; - - //Potree.Actions = {}; - // - //Potree.Actions.ToggleAnnotationVisibility = class ToggleAnnotationVisibility extends Potree.Action { - // constructor (args = {}) { - // super(args); - // - // this.icon = Potree.resourcePath + '/icons/eye.svg'; - // this.showIn = 'sidebar'; - // this.tooltip = 'toggle visibility'; - // } - // - // pairWith (annotation) { - // if (annotation.visible) { - // this.setIcon(Potree.resourcePath + '/icons/eye.svg'); - // } else { - // this.setIcon(Potree.resourcePath + '/icons/eye_crossed.svg'); - // } - // - // annotation.addEventListener('visibility_changed', e => { - // let annotation = e.annotation; - // - // if (annotation.visible) { - // this.setIcon(Potree.resourcePath + '/icons/eye.svg'); - // } else { - // this.setIcon(Potree.resourcePath + '/icons/eye_crossed.svg'); - // } - // }); - // } - // - // onclick (event) { - // let annotation = event.annotation; - // - // annotation.visible = !annotation.visible; - // - // if (annotation.visible) { - // this.setIcon(Potree.resourcePath + '/icons/eye.svg'); - // } else { - // this.setIcon(Potree.resourcePath + '/icons/eye_crossed.svg'); - // } - // } - //}; - - class PathAnimation{ - - constructor(path, start, end, speed, callback){ - this.path = path; - this.length = this.path.spline.getLength(); - this.speed = speed; - this.callback = callback; - this.tween = null; - this.startPoint = Math.max(start, 0); - this.endPoint = Math.min(end, this.length); - this.t = 0.0; - } - - start(resume = false){ - if(this.tween){ - this.tween.stop(); - this.tween = null; - } - - let tStart; - if(resume){ - tStart = this.t; - }else { - tStart = this.startPoint / this.length; - } - let tEnd = this.endPoint / this.length; - let animationDuration = (tEnd - tStart) * this.length * 1000 / this.speed; - - let progress = {t: tStart}; - this.tween = new TWEEN.Tween(progress).to({t: tEnd}, animationDuration); - this.tween.easing(TWEEN.Easing.Linear.None); - this.tween.onUpdate((e) => { - this.t = progress.t; - this.callback(progress.t); - }); - this.tween.onComplete(() => { - if(this.repeat){ - this.start(); - } - }); - - setTimeout(() => { - this.tween.start(); - }, 0); - } - - stop(){ - if(!this.tween){ - return; - } - this.tween.stop(); - this.tween = null; - this.t = 0; - } - - pause(){ - if(!this.tween){ - return; - } - - this.tween.stop(); - TWEEN.remove(this.tween); - this.tween = null; - } - - resume(){ - this.start(true); - } - - getPoint(t){ - return this.path.spline.getPoint(t); - } - - } - - class AnimationPath{ - constructor (points = []) { - this.points = points; - this.spline = new THREE.CatmullRomCurve3(points); - //this.spline.reparametrizeByArcLength(1 / this.spline.getLength().total); - } - - get (t) { - return this.spline.getPoint(t); - } - - getLength () { - return this.spline.getLength(); - } - - animate (start, end, speed, callback) { - let animation = new PathAnimation(this, start, end, speed, callback); - animation.start(); - - return animation; - } - - pause () { - if (this.tween) { - this.tween.stop(); - } - } - - resume () { - if (this.tween) { - this.tween.start(); - } - } - - getGeometry () { - let geometry = new THREE.Geometry(); - - let samples = 500; - let i = 0; - for (let u = 0; u <= 1; u += 1 / samples) { - let position = this.spline.getPoint(u); - geometry.vertices[i] = new THREE.Vector3(position.x, position.y, position.z); - - i++; - } - - if(this.closed){ - let position = this.spline.getPoint(0); - geometry.vertices[i] = new THREE.Vector3(position.x, position.y, position.z); - } - - return geometry; - } - - get closed(){ - return this.spline.closed; - } - - set closed(value){ - this.spline.closed = value; - } - - } - - /* - { - let target = new THREE.Vector3(589854.34, 231411.19, 692.77); - let points = [ - new THREE.Vector3(589815.52, 231738.31, 959.48 ), - new THREE.Vector3(589604.73, 231615.00, 968.10 ), - new THREE.Vector3(589579.11, 231354.41, 1010.06), - new THREE.Vector3(589723.00, 231169.95, 1015.57), - new THREE.Vector3(589960.76, 231116.87, 978.60 ), - new THREE.Vector3(590139.29, 231268.71, 972.33 ) - ]; - - let path = new Potree.AnimationPath(points); - - let geometry = path.getGeometry(); - let material = new THREE.LineBasicMaterial(); - let line = new THREE.Line(geometry, material); - viewer.scene.scene.add(line); - - let [start, end, speed] = [0, path.getLength(), 10]; - path.animate(start, end, speed, t => { - viewer.scene.view.position.copy(path.spline.getPoint(t)); - }); - - } - */ - - const XHRFactory = { - config: { - withCredentials: false, - customHeaders: [ - { header: null, value: null } - ] - }, - - createXMLHttpRequest: function () { - let xhr = new XMLHttpRequest(); - - if (this.config.customHeaders && - Array.isArray(this.config.customHeaders) && - this.config.customHeaders.length > 0) { - let baseOpen = xhr.open; - let customHeaders = this.config.customHeaders; - xhr.open = function () { - baseOpen.apply(this, [].slice.call(arguments)); - customHeaders.forEach(function (customHeader) { - if (!!customHeader.header && !!customHeader.value) { - xhr.setRequestHeader(customHeader.header, customHeader.value); - } - }); - }; - } - - return xhr; - } - }; - - // /** - // * adapted from http://stemkoski.github.io/Three.js/Sprite-Text-Labels.html - // */ - - // let vs2D = ` - // // precision mediump float; - // // precision mediump int; - - // // attribute vec3 position; - // // attribute vec4 color; - // // attribute vec2 uv; - - // // uniform mat4 modelViewMatrix; - // // uniform mat4 projectionMatrix; - // // uniform mat3 uvTransform; - - // uniform vec2 uPosition; - // uniform vec2 uScale; - - // varying vec2 vUv; - - - // void main(){ - - // vec2 pos = position.xy * uScale; - - // gl_Position = vec4(pos, 0.0, 1.0); - - // vUv = uv; - - - - // } - - // `; - - // let fs2D = ` - // precision mediump float; - // precision mediump int; - - // uniform sampler2D map; - - // // varying vec3 vPosition; - // // varying vec4 vColor; - // varying vec2 vUv; - - - // void main() { - - // gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0); - - // gl_FragColor = vec4(vUv, 0.0, 1.0); - - // vec4 texelColor = texture2D( map, vUv ); - // //texelColor = mapTexelToLinear( texelColor ); - - // gl_FragColor = vec4(texelColor.xyz, 1.0); - - - // } - - // `; - - // function getRawMaterial(map){ - // let material = new THREE.ShaderMaterial( { - // uniforms: { - // map: { type: "t", value: map }, - // uPosition: {type: "vec2", value: [0, 0]}, - // uScale: {type: "vec2", value: [1, 1]}, - // }, - // vertexShader: vs2D, - // fragmentShader: fs2D, - // side: THREE.DoubleSide, - // transparent: false, - - // } ); - - // return material; - // } - - - class TextSprite extends THREE.Object3D{ - - constructor(text){ - super(); - - let texture = new THREE.Texture(); - texture.minFilter = THREE.LinearFilter; - texture.magFilter = THREE.LinearFilter; - let spriteMaterial = new THREE.SpriteMaterial({ - map: texture, - depthTest: false, - depthWrite: false}); - - this.texture = texture; - - this.material = spriteMaterial; - //this.material = getRawMaterial(texture); - this.sprite = new THREE.Sprite(this.material); - this.add(this.sprite); - - this.borderThickness = 4; - this.fontface = 'Arial'; - this.fontsize = 28; - this.borderColor = { r: 0, g: 0, b: 0, a: 1.0 }; - this.backgroundColor = { r: 255, g: 255, b: 255, a: 1.0 }; - this.textColor = {r: 255, g: 255, b: 255, a: 1.0}; - this.text = ''; - - this.setText(text); - } - - setText(text){ - if (this.text !== text){ - this.text = text; - - this.update(); - } - } - - setTextColor(color){ - this.textColor = color; - - this.update(); - } - - setBorderColor(color){ - this.borderColor = color; - - this.update(); - } - - setBackgroundColor(color){ - this.backgroundColor = color; - - this.update(); - } - - update(){ - let canvas = document.createElement('canvas'); - let context = canvas.getContext('2d'); - context.font = 'Bold ' + this.fontsize + 'px ' + this.fontface; - - // get size data (height depends only on font size) - let metrics = context.measureText(this.text); - let textWidth = metrics.width; - let margin = 5; - let spriteWidth = 2 * margin + textWidth + 2 * this.borderThickness; - let spriteHeight = this.fontsize * 1.4 + 2 * this.borderThickness; - - context.canvas.width = spriteWidth; - context.canvas.height = spriteHeight; - context.font = 'Bold ' + this.fontsize + 'px ' + this.fontface; - - // background color - context.fillStyle = 'rgba(' + this.backgroundColor.r + ',' + this.backgroundColor.g + ',' + - this.backgroundColor.b + ',' + this.backgroundColor.a + ')'; - // border color - context.strokeStyle = 'rgba(' + this.borderColor.r + ',' + this.borderColor.g + ',' + - this.borderColor.b + ',' + this.borderColor.a + ')'; - - context.lineWidth = this.borderThickness; - this.roundRect(context, this.borderThickness / 2, this.borderThickness / 2, - textWidth + this.borderThickness + 2 * margin, this.fontsize * 1.4 + this.borderThickness, 6); - - // text color - context.strokeStyle = 'rgba(0, 0, 0, 1.0)'; - context.strokeText(this.text, this.borderThickness + margin, this.fontsize + this.borderThickness); - - context.fillStyle = 'rgba(' + this.textColor.r + ',' + this.textColor.g + ',' + - this.textColor.b + ',' + this.textColor.a + ')'; - context.fillText(this.text, this.borderThickness + margin, this.fontsize + this.borderThickness); - - let texture = new THREE.Texture(canvas); - texture.minFilter = THREE.LinearFilter; - texture.magFilter = THREE.LinearFilter; - texture.needsUpdate = true; - //this.material.needsUpdate = true; - - // { // screen-space sprite - // let [screenWidth, screenHeight] = [1620, 937]; - - // let uniforms = this.sprite.material.uniforms; - // let aspect = spriteHeight / spriteWidth; - // let factor = 0.5; - - // let w = spriteWidth / screenWidth; - // let h = spriteHeight / screenHeight; - - // uniforms.uScale.value = [2 * w, 2 * h]; - // //uniforms.uScale.value = [factor * 1, factor * aspect]; - // this.sprite.material.uniforms.map.value = texture; - // } - - this.sprite.material.map = texture; - this.texture = texture; - - this.sprite.scale.set(spriteWidth * 0.01, spriteHeight * 0.01, 1.0); - } - - roundRect(ctx, x, y, w, h, r){ - ctx.beginPath(); - ctx.moveTo(x + r, y); - ctx.lineTo(x + w - r, y); - ctx.quadraticCurveTo(x + w, y, x + w, y + r); - ctx.lineTo(x + w, y + h - r); - ctx.quadraticCurveTo(x + w, y + h, x + w - r, y + h); - ctx.lineTo(x + r, y + h); - ctx.quadraticCurveTo(x, y + h, x, y + h - r); - ctx.lineTo(x, y + r); - ctx.quadraticCurveTo(x, y, x + r, y); - ctx.closePath(); - ctx.fill(); - ctx.stroke(); - } - - } - - class Volume extends THREE.Object3D { - constructor (args = {}) { - super(); - - if(this.constructor.name === "Volume"){ - console.warn("Can't create object of class Volume directly. Use classes BoxVolume or SphereVolume instead."); - } - - //console.log(this); - //console.log(this.constructor); - //console.log(this.constructor.name); - - this._clip = args.clip || false; - this._visible = true; - this.showVolumeLabel = true; - this._modifiable = args.modifiable || true; - - this.label = new TextSprite('0'); - this.label.setBorderColor({r: 0, g: 255, b: 0, a: 0.0}); - this.label.setBackgroundColor({r: 0, g: 255, b: 0, a: 0.0}); - this.label.material.depthTest = false; - this.label.material.depthWrite = false; - this.label.material.transparent = true; - this.label.position.y -= 0.5; - this.add(this.label); - - this.label.updateMatrixWorld = () => { - let volumeWorldPos = new THREE.Vector3(); - volumeWorldPos.setFromMatrixPosition(this.matrixWorld); - this.label.position.copy(volumeWorldPos); - this.label.updateMatrix(); - this.label.matrixWorld.copy(this.label.matrix); - this.label.matrixWorldNeedsUpdate = false; - - for (let i = 0, l = this.label.children.length; i < l; i++) { - this.label.children[ i ].updateMatrixWorld(true); - } - }; - - { // event listeners - this.addEventListener('select', e => {}); - this.addEventListener('deselect', e => {}); - } - - } - - get visible(){ - return this._visible; - } - - set visible(value){ - if(this._visible !== value){ - this._visible = value; - - this.dispatchEvent({type: "visibility_changed", object: this}); - } - } - - getVolume () { - console.warn("override this in subclass"); - } - - update () { - - }; - - raycast (raycaster, intersects) { - - } - - get clip () { - return this._clip; - } - - set clip (value) { - - if(this._clip !== value){ - this._clip = value; - - this.update(); - - this.dispatchEvent({ - type: "clip_changed", - object: this - }); - } - - } - - get modifieable () { - return this._modifiable; - } - - set modifieable (value) { - this._modifiable = value; - - this.update(); - } - }; - - - class BoxVolume extends Volume{ - - constructor(args = {}){ - super(args); - - this.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1; - this.name = 'box_' + this.constructor.counter; - - let boxGeometry = new THREE.BoxGeometry(1, 1, 1); - boxGeometry.computeBoundingBox(); - - let boxFrameGeometry = new THREE.Geometry(); - { - let Vector3 = THREE.Vector3; - - boxFrameGeometry.vertices.push( - - // bottom - new Vector3(-0.5, -0.5, 0.5), - new Vector3(0.5, -0.5, 0.5), - new Vector3(0.5, -0.5, 0.5), - new Vector3(0.5, -0.5, -0.5), - new Vector3(0.5, -0.5, -0.5), - new Vector3(-0.5, -0.5, -0.5), - new Vector3(-0.5, -0.5, -0.5), - new Vector3(-0.5, -0.5, 0.5), - // top - new Vector3(-0.5, 0.5, 0.5), - new Vector3(0.5, 0.5, 0.5), - new Vector3(0.5, 0.5, 0.5), - new Vector3(0.5, 0.5, -0.5), - new Vector3(0.5, 0.5, -0.5), - new Vector3(-0.5, 0.5, -0.5), - new Vector3(-0.5, 0.5, -0.5), - new Vector3(-0.5, 0.5, 0.5), - // sides - new Vector3(-0.5, -0.5, 0.5), - new Vector3(-0.5, 0.5, 0.5), - new Vector3(0.5, -0.5, 0.5), - new Vector3(0.5, 0.5, 0.5), - new Vector3(0.5, -0.5, -0.5), - new Vector3(0.5, 0.5, -0.5), - new Vector3(-0.5, -0.5, -0.5), - new Vector3(-0.5, 0.5, -0.5), - - ); - - } - - this.material = new THREE.MeshBasicMaterial({ - color: 0x00ff00, - transparent: true, - opacity: 0.3, - depthTest: true, - depthWrite: false}); - this.box = new THREE.Mesh(boxGeometry, this.material); - this.box.geometry.computeBoundingBox(); - this.boundingBox = this.box.geometry.boundingBox; - this.add(this.box); - - this.frame = new THREE.LineSegments(boxFrameGeometry, new THREE.LineBasicMaterial({color: 0x000000})); - // this.frame.mode = THREE.Lines; - this.add(this.frame); - - this.update(); - } - - update(){ - this.boundingBox = this.box.geometry.boundingBox; - this.boundingSphere = this.boundingBox.getBoundingSphere(new THREE.Sphere()); - - if (this._clip) { - this.box.visible = false; - this.label.visible = false; - } else { - this.box.visible = true; - this.label.visible = this.showVolumeLabel; - } - } - - raycast (raycaster, intersects) { - let is = []; - this.box.raycast(raycaster, is); - - if (is.length > 0) { - let I = is[0]; - intersects.push({ - distance: I.distance, - object: this, - point: I.point.clone() - }); - } - } - - getVolume(){ - return Math.abs(this.scale.x * this.scale.y * this.scale.z); - } - - }; - - class SphereVolume extends Volume{ - - constructor(args = {}){ - super(args); - - this.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1; - this.name = 'sphere_' + this.constructor.counter; - - let sphereGeometry = new THREE.SphereGeometry(1, 32, 32); - sphereGeometry.computeBoundingBox(); - - this.material = new THREE.MeshBasicMaterial({ - color: 0x00ff00, - transparent: true, - opacity: 0.3, - depthTest: true, - depthWrite: false}); - this.sphere = new THREE.Mesh(sphereGeometry, this.material); - this.sphere.visible = false; - this.sphere.geometry.computeBoundingBox(); - this.boundingBox = this.sphere.geometry.boundingBox; - this.add(this.sphere); - - this.label.visible = false; - - - let frameGeometry = new THREE.Geometry(); - { - let steps = 64; - let uSegments = 8; - let vSegments = 5; - let r = 1; - - for(let uSegment = 0; uSegment < uSegments; uSegment++){ - - let alpha = (uSegment / uSegments) * Math.PI * 2; - let dirx = Math.cos(alpha); - let diry = Math.sin(alpha); - - for(let i = 0; i <= steps; i++){ - let v = (i / steps) * Math.PI * 2; - let vNext = v + 2 * Math.PI / steps; - - let height = Math.sin(v); - let xyAmount = Math.cos(v); - - let heightNext = Math.sin(vNext); - let xyAmountNext = Math.cos(vNext); - - let vertex = new THREE.Vector3(dirx * xyAmount, diry * xyAmount, height); - frameGeometry.vertices.push(vertex); - - let vertexNext = new THREE.Vector3(dirx * xyAmountNext, diry * xyAmountNext, heightNext); - frameGeometry.vertices.push(vertexNext); - } - } - - // creates rings at poles, just because it's easier to implement - for(let vSegment = 0; vSegment <= vSegments + 1; vSegment++){ - - //let height = (vSegment / (vSegments + 1)) * 2 - 1; // -1 to 1 - let uh = (vSegment / (vSegments + 1)); // -1 to 1 - uh = (1 - uh) * (-Math.PI / 2) + uh *(Math.PI / 2); - let height = Math.sin(uh); - - console.log(uh, height); - - for(let i = 0; i <= steps; i++){ - let u = (i / steps) * Math.PI * 2; - let uNext = u + 2 * Math.PI / steps; - - let dirx = Math.cos(u); - let diry = Math.sin(u); - - let dirxNext = Math.cos(uNext); - let diryNext = Math.sin(uNext); - - let xyAmount = Math.sqrt(1 - height * height); - - let vertex = new THREE.Vector3(dirx * xyAmount, diry * xyAmount, height); - frameGeometry.vertices.push(vertex); - - let vertexNext = new THREE.Vector3(dirxNext * xyAmount, diryNext * xyAmount, height); - frameGeometry.vertices.push(vertexNext); - } - } - } - - this.frame = new THREE.LineSegments(frameGeometry, new THREE.LineBasicMaterial({color: 0x000000})); - this.add(this.frame); - - let frameMaterial = new THREE.MeshBasicMaterial({wireframe: true, color: 0x000000}); - this.frame = new THREE.Mesh(sphereGeometry, frameMaterial); - //this.add(this.frame); - - //this.frame = new THREE.LineSegments(boxFrameGeometry, new THREE.LineBasicMaterial({color: 0x000000})); - // this.frame.mode = THREE.Lines; - //this.add(this.frame); - - this.update(); - } - - update(){ - this.boundingBox = this.sphere.geometry.boundingBox; - this.boundingSphere = this.boundingBox.getBoundingSphere(new THREE.Sphere()); - - //if (this._clip) { - // this.sphere.visible = false; - // this.label.visible = false; - //} else { - // this.sphere.visible = true; - // this.label.visible = this.showVolumeLabel; - //} - } - - raycast (raycaster, intersects) { - let is = []; - this.sphere.raycast(raycaster, is); - - if (is.length > 0) { - let I = is[0]; - intersects.push({ - distance: I.distance, - object: this, - point: I.point.clone() - }); - } - } - - // see https://en.wikipedia.org/wiki/Ellipsoid#Volume - getVolume(){ - return (4 / 3) * Math.PI * this.scale.x * this.scale.y * this.scale.z; - } - - }; - - class Profile extends THREE.Object3D{ - - constructor () { - super(); - - this.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1; - - this.name = 'Profile_' + this.constructor.counter; - this.points = []; - this.spheres = []; - this.edges = []; - this.boxes = []; - this.width = 1; - this.height = 20; - this._modifiable = true; - - this.sphereGeometry = new THREE.SphereGeometry(0.4, 10, 10); - this.color = new THREE.Color(0xff0000); - this.lineColor = new THREE.Color(0xff0000); - } - - createSphereMaterial () { - let sphereMaterial = new THREE.MeshLambertMaterial({ - //shading: THREE.SmoothShading, - color: 0xff0000, - depthTest: false, - depthWrite: false} - ); - - return sphereMaterial; - }; - - getSegments () { - let segments = []; - - for (let i = 0; i < this.points.length - 1; i++) { - let start = this.points[i].clone(); - let end = this.points[i + 1].clone(); - segments.push({start: start, end: end}); - } - - return segments; - } - - getSegmentMatrices () { - let segments = this.getSegments(); - let matrices = []; - - for (let segment of segments) { - let {start, end} = segment; - - let box = new THREE.Object3D(); - - let length = start.clone().setZ(0).distanceTo(end.clone().setZ(0)); - box.scale.set(length, 10000, this.width); - box.up.set(0, 0, 1); - - let center = new THREE.Vector3().addVectors(start, end).multiplyScalar(0.5); - let diff = new THREE.Vector3().subVectors(end, start); - let target = new THREE.Vector3(diff.y, -diff.x, 0); - - box.position.set(0, 0, 0); - box.lookAt(target); - box.position.copy(center); - - box.updateMatrixWorld(); - matrices.push(box.matrixWorld); - } - - return matrices; - } - - addMarker (point) { - this.points.push(point); - - let sphere = new THREE.Mesh(this.sphereGeometry, this.createSphereMaterial()); - - this.add(sphere); - this.spheres.push(sphere); - - // edges & boxes - if (this.points.length > 1) { - let lineGeometry = new THREE.Geometry(); - lineGeometry.vertices.push(new THREE.Vector3(), new THREE.Vector3()); - lineGeometry.colors.push(this.lineColor, this.lineColor, this.lineColor); - let lineMaterial = new THREE.LineBasicMaterial({ - vertexColors: THREE.VertexColors, - linewidth: 2, - transparent: true, - opacity: 0.4 - }); - lineMaterial.depthTest = false; - let edge = new THREE.Line(lineGeometry, lineMaterial); - edge.visible = false; - - this.add(edge); - this.edges.push(edge); - - let boxGeometry = new THREE.BoxGeometry(1, 1, 1); - let boxMaterial = new THREE.MeshBasicMaterial({color: 0xff0000, transparent: true, opacity: 0.2}); - let box = new THREE.Mesh(boxGeometry, boxMaterial); - box.visible = false; - - this.add(box); - this.boxes.push(box); - } - - { // event listeners - let drag = (e) => { - let I = Utils.getMousePointCloudIntersection( - e.drag.end, - e.viewer.scene.getActiveCamera(), - e.viewer, - e.viewer.scene.pointclouds); - - if (I) { - let i = this.spheres.indexOf(e.drag.object); - if (i !== -1) { - this.setPosition(i, I.location); - //this.dispatchEvent({ - // 'type': 'marker_moved', - // 'profile': this, - // 'index': i - //}); - } - } - }; - - let drop = e => { - let i = this.spheres.indexOf(e.drag.object); - if (i !== -1) { - this.dispatchEvent({ - 'type': 'marker_dropped', - 'profile': this, - 'index': i - }); - } - }; - - let mouseover = (e) => e.object.material.emissive.setHex(0x888888); - let mouseleave = (e) => e.object.material.emissive.setHex(0x000000); - - sphere.addEventListener('drag', drag); - sphere.addEventListener('drop', drop); - sphere.addEventListener('mouseover', mouseover); - sphere.addEventListener('mouseleave', mouseleave); - } - - let event = { - type: 'marker_added', - profile: this, - sphere: sphere - }; - this.dispatchEvent(event); - - this.setPosition(this.points.length - 1, point); - } - - removeMarker (index) { - this.points.splice(index, 1); - - this.remove(this.spheres[index]); - - let edgeIndex = (index === 0) ? 0 : (index - 1); - this.remove(this.edges[edgeIndex]); - this.edges.splice(edgeIndex, 1); - this.remove(this.boxes[edgeIndex]); - this.boxes.splice(edgeIndex, 1); - - this.spheres.splice(index, 1); - - this.update(); - - this.dispatchEvent({ - 'type': 'marker_removed', - 'profile': this - }); - } - - setPosition (index, position) { - let point = this.points[index]; - point.copy(position); - - let event = { - type: 'marker_moved', - profile: this, - index: index, - position: point.clone() - }; - this.dispatchEvent(event); - - this.update(); - } - - setWidth (width) { - this.width = width; - - let event = { - type: 'width_changed', - profile: this, - width: width - }; - this.dispatchEvent(event); - - this.update(); - } - - getWidth () { - return this.width; - } - - update () { - if (this.points.length === 0) { - return; - } else if (this.points.length === 1) { - let point = this.points[0]; - this.spheres[0].position.copy(point); - - return; - } - - let min = this.points[0].clone(); - let max = this.points[0].clone(); - let centroid = new THREE.Vector3(); - let lastIndex = this.points.length - 1; - for (let i = 0; i <= lastIndex; i++) { - let point = this.points[i]; - let sphere = this.spheres[i]; - let leftIndex = (i === 0) ? lastIndex : i - 1; - // let rightIndex = (i === lastIndex) ? 0 : i + 1; - let leftVertex = this.points[leftIndex]; - // let rightVertex = this.points[rightIndex]; - let leftEdge = this.edges[leftIndex]; - let rightEdge = this.edges[i]; - let leftBox = this.boxes[leftIndex]; - // rightBox = this.boxes[i]; - - // let leftEdgeLength = point.distanceTo(leftVertex); - // let rightEdgeLength = point.distanceTo(rightVertex); - // let leftEdgeCenter = new THREE.Vector3().addVectors(leftVertex, point).multiplyScalar(0.5); - // let rightEdgeCenter = new THREE.Vector3().addVectors(point, rightVertex).multiplyScalar(0.5); - - sphere.position.copy(point); - - if (this._modifiable) { - sphere.visible = true; - } else { - sphere.visible = false; - } - - if (leftEdge) { - leftEdge.geometry.vertices[1].copy(point); - leftEdge.geometry.verticesNeedUpdate = true; - leftEdge.geometry.computeBoundingSphere(); - } - - if (rightEdge) { - rightEdge.geometry.vertices[0].copy(point); - rightEdge.geometry.verticesNeedUpdate = true; - rightEdge.geometry.computeBoundingSphere(); - } - - if (leftBox) { - let start = leftVertex; - let end = point; - let length = start.clone().setZ(0).distanceTo(end.clone().setZ(0)); - leftBox.scale.set(length, 1000000, this.width); - leftBox.up.set(0, 0, 1); - - let center = new THREE.Vector3().addVectors(start, end).multiplyScalar(0.5); - let diff = new THREE.Vector3().subVectors(end, start); - let target = new THREE.Vector3(diff.y, -diff.x, 0); - - leftBox.position.set(0, 0, 0); - leftBox.lookAt(target); - leftBox.position.copy(center); - } - - centroid.add(point); - min.min(point); - max.max(point); - } - centroid.multiplyScalar(1 / this.points.length); - - for (let i = 0; i < this.boxes.length; i++) { - let box = this.boxes[i]; - - box.position.z = min.z + (max.z - min.z) / 2; - } - } - - raycast (raycaster, intersects) { - for (let i = 0; i < this.points.length; i++) { - let sphere = this.spheres[i]; - - sphere.raycast(raycaster, intersects); - } - - // recalculate distances because they are not necessarely correct - // for scaled objects. - // see https://github.com/mrdoob/three.js/issues/5827 - // TODO: remove this once the bug has been fixed - for (let i = 0; i < intersects.length; i++) { - let I = intersects[i]; - I.distance = raycaster.ray.origin.distanceTo(I.point); - } - intersects.sort(function (a, b) { return a.distance - b.distance; }); - }; - - get modifiable () { - return this._modifiable; - } - - set modifiable (value) { - this._modifiable = value; - this.update(); - } - - } - - function createHeightLine(){ - let lineGeometry = new THREE.LineGeometry(); - - lineGeometry.setPositions([ - 0, 0, 0, - 0, 0, 0, - ]); - - let lineMaterial = new THREE.LineMaterial({ - color: 0x00ff00, - dashSize: 5, - gapSize: 2, - linewidth: 2, - resolution: new THREE.Vector2(1000, 1000), - }); - - lineMaterial.depthTest = false; - const heightEdge = new THREE.Line2(lineGeometry, lineMaterial); - heightEdge.visible = false; - - //this.add(this.heightEdge); - - return heightEdge; - } - - function createHeightLabel(){ - const heightLabel = new TextSprite(''); - - heightLabel.setTextColor({r: 140, g: 250, b: 140, a: 1.0}); - heightLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0}); - heightLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0}); - heightLabel.fontsize = 16; - heightLabel.material.depthTest = false; - heightLabel.material.opacity = 1; - heightLabel.visible = false; - - return heightLabel; - } - - function createAreaLabel(){ - const areaLabel = new TextSprite(''); - - areaLabel.setTextColor({r: 140, g: 250, b: 140, a: 1.0}); - areaLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0}); - areaLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0}); - areaLabel.fontsize = 16; - areaLabel.material.depthTest = false; - areaLabel.material.opacity = 1; - areaLabel.visible = false; - - return areaLabel; - } - - function createCircleRadiusLabel(){ - const circleRadiusLabel = new TextSprite(""); - - circleRadiusLabel.setTextColor({r: 140, g: 250, b: 140, a: 1.0}); - circleRadiusLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0}); - circleRadiusLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0}); - circleRadiusLabel.fontsize = 16; - circleRadiusLabel.material.depthTest = false; - circleRadiusLabel.material.opacity = 1; - circleRadiusLabel.visible = false; - - return circleRadiusLabel; - } - - function createCircleRadiusLine(){ - const lineGeometry = new THREE.LineGeometry(); - - lineGeometry.setPositions([ - 0, 0, 0, - 0, 0, 0, - ]); - - const lineMaterial = new THREE.LineMaterial({ - color: 0xff0000, - linewidth: 2, - resolution: new THREE.Vector2(1000, 1000), - gapSize: 1, - dashed: true, - }); - - lineMaterial.depthTest = false; - - const circleRadiusLine = new THREE.Line2(lineGeometry, lineMaterial); - circleRadiusLine.visible = false; - - return circleRadiusLine; - } - - function createCircleLine(){ - const coordinates = []; - - let n = 128; - for(let i = 0; i <= n; i++){ - let u0 = 2 * Math.PI * (i / n); - let u1 = 2 * Math.PI * (i + 1) / n; - - let p0 = new THREE.Vector3( - Math.cos(u0), - Math.sin(u0), - 0 - ); - - let p1 = new THREE.Vector3( - Math.cos(u1), - Math.sin(u1), - 0 - ); - - coordinates.push( - ...p0.toArray(), - ...p1.toArray(), - ); - } - - const geometry = new THREE.LineGeometry(); - geometry.setPositions(coordinates); - - const material = new THREE.LineMaterial({ - color: 0xff0000, - dashSize: 5, - gapSize: 2, - linewidth: 2, - resolution: new THREE.Vector2(1000, 1000), - }); - - material.depthTest = false; - - const circleLine = new THREE.Line2(geometry, material); - circleLine.visible = false; - circleLine.computeLineDistances(); - - return circleLine; - } - - function createCircleCenter(){ - const sg = new THREE.SphereGeometry(1, 32, 32); - const sm = new THREE.MeshNormalMaterial(); - - const circleCenter = new THREE.Mesh(sg, sm); - circleCenter.visible = false; - - return circleCenter; - } - - function createLine(){ - const geometry = new THREE.LineGeometry(); - - geometry.setPositions([ - 0, 0, 0, - 0, 0, 0, - ]); - - const material = new THREE.LineMaterial({ - color: 0xff0000, - linewidth: 2, - resolution: new THREE.Vector2(1000, 1000), - gapSize: 1, - dashed: true, - }); - - material.depthTest = false; - - const line = new THREE.Line2(geometry, material); - - return line; - } - - function createCircle(){ - - const coordinates = []; - - let n = 128; - for(let i = 0; i <= n; i++){ - let u0 = 2 * Math.PI * (i / n); - let u1 = 2 * Math.PI * (i + 1) / n; - - let p0 = new THREE.Vector3( - Math.cos(u0), - Math.sin(u0), - 0 - ); - - let p1 = new THREE.Vector3( - Math.cos(u1), - Math.sin(u1), - 0 - ); - - coordinates.push( - ...p0.toArray(), - ...p1.toArray(), - ); - } - - const geometry = new THREE.LineGeometry(); - geometry.setPositions(coordinates); - - const material = new THREE.LineMaterial({ - color: 0xff0000, - dashSize: 5, - gapSize: 2, - linewidth: 2, - resolution: new THREE.Vector2(1000, 1000), - }); - - material.depthTest = false; - - const line = new THREE.Line2(geometry, material); - line.computeLineDistances(); - - return line; - - } - - function createAzimuth(){ - - const azimuth = { - label: null, - center: null, - target: null, - north: null, - centerToNorth: null, - centerToTarget: null, - centerToTargetground: null, - targetgroundToTarget: null, - circle: null, - - node: null, - }; - - const sg = new THREE.SphereGeometry(1, 32, 32); - const sm = new THREE.MeshNormalMaterial(); - - { - const label = new TextSprite(""); - - label.setTextColor({r: 140, g: 250, b: 140, a: 1.0}); - label.setBorderColor({r: 0, g: 0, b: 0, a: 1.0}); - label.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0}); - label.fontsize = 16; - label.material.depthTest = false; - label.material.opacity = 1; - - azimuth.label = label; - } - - azimuth.center = new THREE.Mesh(sg, sm); - azimuth.target = new THREE.Mesh(sg, sm); - azimuth.north = new THREE.Mesh(sg, sm); - azimuth.centerToNorth = createLine(); - azimuth.centerToTarget = createLine(); - azimuth.centerToTargetground = createLine(); - azimuth.targetgroundToTarget = createLine(); - azimuth.circle = createCircle(); - - azimuth.node = new THREE.Object3D(); - azimuth.node.add( - azimuth.centerToNorth, - azimuth.centerToTarget, - azimuth.centerToTargetground, - azimuth.targetgroundToTarget, - azimuth.circle, - azimuth.label, - azimuth.center, - azimuth.target, - azimuth.north, - ); - - return azimuth; - } - - class Measure extends THREE.Object3D { - constructor () { - super(); - - this.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1; - - this.name = 'Measure_' + this.constructor.counter; - this.points = []; - this._showDistances = true; - this._showCoordinates = false; - this._showArea = false; - this._closed = true; - this._showAngles = false; - this._showCircle = false; - this._showHeight = false; - this._showEdges = true; - this._showAzimuth = false; - this.maxMarkers = Number.MAX_SAFE_INTEGER; - - this.sphereGeometry = new THREE.SphereGeometry(0.4, 10, 10); - this.color = new THREE.Color(0xff0000); - - this.spheres = []; - this.edges = []; - this.sphereLabels = []; - this.edgeLabels = []; - this.angleLabels = []; - this.coordinateLabels = []; - - this.heightEdge = createHeightLine(); - this.heightLabel = createHeightLabel(); - this.areaLabel = createAreaLabel(); - this.circleRadiusLabel = createCircleRadiusLabel(); - this.circleRadiusLine = createCircleRadiusLine(); - this.circleLine = createCircleLine(); - this.circleCenter = createCircleCenter(); - - this.azimuth = createAzimuth(); - - this.add(this.heightEdge); - this.add(this.heightLabel); - this.add(this.areaLabel); - this.add(this.circleRadiusLabel); - this.add(this.circleRadiusLine); - this.add(this.circleLine); - this.add(this.circleCenter); - - this.add(this.azimuth.node); - - } - - createSphereMaterial () { - let sphereMaterial = new THREE.MeshLambertMaterial({ - //shading: THREE.SmoothShading, - color: this.color, - depthTest: false, - depthWrite: false} - ); - - return sphereMaterial; - }; - - addMarker (point) { - if (point instanceof THREE.Vector3) { - point = {position: point}; - }else if(point instanceof Array){ - point = {position: new THREE.Vector3(...point)}; - } - this.points.push(point); - - // sphere - let sphere = new THREE.Mesh(this.sphereGeometry, this.createSphereMaterial()); - - this.add(sphere); - this.spheres.push(sphere); - - { // edges - let lineGeometry = new THREE.LineGeometry(); - lineGeometry.setPositions( [ - 0, 0, 0, - 0, 0, 0, - ]); - - let lineMaterial = new THREE.LineMaterial({ - color: 0xff0000, - linewidth: 2, - resolution: new THREE.Vector2(1000, 1000), - }); - - lineMaterial.depthTest = false; - - let edge = new THREE.Line2(lineGeometry, lineMaterial); - edge.visible = true; - - this.add(edge); - this.edges.push(edge); - } - - { // edge labels - let edgeLabel = new TextSprite(); - edgeLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0}); - edgeLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0}); - edgeLabel.material.depthTest = false; - edgeLabel.visible = false; - edgeLabel.fontsize = 16; - this.edgeLabels.push(edgeLabel); - this.add(edgeLabel); - } - - { // angle labels - let angleLabel = new TextSprite(); - angleLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0}); - angleLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0}); - angleLabel.fontsize = 16; - angleLabel.material.depthTest = false; - angleLabel.material.opacity = 1; - angleLabel.visible = false; - this.angleLabels.push(angleLabel); - this.add(angleLabel); - } - - { // coordinate labels - let coordinateLabel = new TextSprite(); - coordinateLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0}); - coordinateLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0}); - coordinateLabel.fontsize = 16; - coordinateLabel.material.depthTest = false; - coordinateLabel.material.opacity = 1; - coordinateLabel.visible = false; - this.coordinateLabels.push(coordinateLabel); - this.add(coordinateLabel); - } - - { // Event Listeners - let drag = (e) => { - let I = Utils.getMousePointCloudIntersection( - e.drag.end, - e.viewer.scene.getActiveCamera(), - e.viewer, - e.viewer.scene.pointclouds, - {pickClipped: true}); - - if (I) { - let i = this.spheres.indexOf(e.drag.object); - if (i !== -1) { - let point = this.points[i]; - for (let key of Object.keys(I.point).filter(e => e !== 'position')) { - point[key] = I.point[key]; - } - - this.setPosition(i, I.location); - } - } - }; - - let drop = e => { - let i = this.spheres.indexOf(e.drag.object); - if (i !== -1) { - this.dispatchEvent({ - 'type': 'marker_dropped', - 'measurement': this, - 'index': i - }); - } - }; - - let mouseover = (e) => e.object.material.emissive.setHex(0x888888); - let mouseleave = (e) => e.object.material.emissive.setHex(0x000000); - - sphere.addEventListener('drag', drag); - sphere.addEventListener('drop', drop); - sphere.addEventListener('mouseover', mouseover); - sphere.addEventListener('mouseleave', mouseleave); - } - - let event = { - type: 'marker_added', - measurement: this, - sphere: sphere - }; - this.dispatchEvent(event); - - this.setMarker(this.points.length - 1, point); - }; - - removeMarker (index) { - this.points.splice(index, 1); - - this.remove(this.spheres[index]); - - let edgeIndex = (index === 0) ? 0 : (index - 1); - this.remove(this.edges[edgeIndex]); - this.edges.splice(edgeIndex, 1); - - this.remove(this.edgeLabels[edgeIndex]); - this.edgeLabels.splice(edgeIndex, 1); - this.coordinateLabels.splice(index, 1); - - this.remove(this.angleLabels[index]); - this.angleLabels.splice(index, 1); - - this.spheres.splice(index, 1); - - this.update(); - - this.dispatchEvent({type: 'marker_removed', measurement: this}); - }; - - setMarker (index, point) { - this.points[index] = point; - - let event = { - type: 'marker_moved', - measure: this, - index: index, - position: point.position.clone() - }; - this.dispatchEvent(event); - - this.update(); - } - - setPosition (index, position) { - let point = this.points[index]; - point.position.copy(position); - - let event = { - type: 'marker_moved', - measure: this, - index: index, - position: position.clone() - }; - this.dispatchEvent(event); - - this.update(); - }; - - getArea () { - let area = 0; - let j = this.points.length - 1; - - for (let i = 0; i < this.points.length; i++) { - let p1 = this.points[i].position; - let p2 = this.points[j].position; - area += (p2.x + p1.x) * (p1.y - p2.y); - j = i; - } - - return Math.abs(area / 2); - }; - - getTotalDistance () { - if (this.points.length === 0) { - return 0; - } - - let distance = 0; - - for (let i = 1; i < this.points.length; i++) { - let prev = this.points[i - 1].position; - let curr = this.points[i].position; - let d = prev.distanceTo(curr); - - distance += d; - } - - if (this.closed && this.points.length > 1) { - let first = this.points[0].position; - let last = this.points[this.points.length - 1].position; - let d = last.distanceTo(first); - - distance += d; - } - - return distance; - } - - getAngleBetweenLines (cornerPoint, point1, point2) { - let v1 = new THREE.Vector3().subVectors(point1.position, cornerPoint.position); - let v2 = new THREE.Vector3().subVectors(point2.position, cornerPoint.position); - - // avoid the error printed by threejs if denominator is 0 - const denominator = Math.sqrt( v1.lengthSq() * v2.lengthSq() ); - if(denominator === 0){ - return 0; - }else { - return v1.angleTo(v2); - } - }; - - getAngle (index) { - if (this.points.length < 3 || index >= this.points.length) { - return 0; - } - - let previous = (index === 0) ? this.points[this.points.length - 1] : this.points[index - 1]; - let point = this.points[index]; - let next = this.points[(index + 1) % (this.points.length)]; - - return this.getAngleBetweenLines(point, previous, next); - } - - // updateAzimuth(){ - // // if(this.points.length !== 2){ - // // return; - // // } - - // // const azimuth = this.azimuth; - - // // const [p0, p1] = this.points; - - // // const r = p0.position.distanceTo(p1.position); - - // } - - update () { - if (this.points.length === 0) { - return; - } else if (this.points.length === 1) { - let point = this.points[0]; - let position = point.position; - this.spheres[0].position.copy(position); - - { // coordinate labels - let coordinateLabel = this.coordinateLabels[0]; - - let msg = position.toArray().map(p => Utils.addCommas(p.toFixed(2))).join(" / "); - coordinateLabel.setText(msg); - - coordinateLabel.visible = this.showCoordinates; - } - - return; - } - - let lastIndex = this.points.length - 1; - - let centroid = new THREE.Vector3(); - for (let i = 0; i <= lastIndex; i++) { - let point = this.points[i]; - centroid.add(point.position); - } - centroid.divideScalar(this.points.length); - - for (let i = 0; i <= lastIndex; i++) { - let index = i; - let nextIndex = (i + 1 > lastIndex) ? 0 : i + 1; - let previousIndex = (i === 0) ? lastIndex : i - 1; - - let point = this.points[index]; - let nextPoint = this.points[nextIndex]; - let previousPoint = this.points[previousIndex]; - - let sphere = this.spheres[index]; - - // spheres - sphere.position.copy(point.position); - sphere.material.color = this.color; - - { // edges - let edge = this.edges[index]; - - edge.material.color = this.color; - - edge.position.copy(point.position); - - edge.geometry.setPositions([ - 0, 0, 0, - ...nextPoint.position.clone().sub(point.position).toArray(), - ]); - - edge.geometry.verticesNeedUpdate = true; - edge.geometry.computeBoundingSphere(); - edge.computeLineDistances(); - edge.visible = index < lastIndex || this.closed; - - if(!this.showEdges){ - edge.visible = false; - } - } - - { // edge labels - let edgeLabel = this.edgeLabels[i]; - - let center = new THREE.Vector3().add(point.position); - center.add(nextPoint.position); - center = center.multiplyScalar(0.5); - let distance = point.position.distanceTo(nextPoint.position); - - edgeLabel.position.copy(center); - - let suffix = ""; - if(this.lengthUnit != null && this.lengthUnitDisplay != null){ - distance = distance / this.lengthUnit.unitspermeter * this.lengthUnitDisplay.unitspermeter; //convert to meters then to the display unit - suffix = this.lengthUnitDisplay.code; - } - - let txtLength = Utils.addCommas(distance.toFixed(2)); - edgeLabel.setText(`${txtLength} ${suffix}`); - edgeLabel.visible = this.showDistances && (index < lastIndex || this.closed) && this.points.length >= 2 && distance > 0; - } - - { // angle labels - let angleLabel = this.angleLabels[i]; - let angle = this.getAngleBetweenLines(point, previousPoint, nextPoint); - - let dir = nextPoint.position.clone().sub(previousPoint.position); - dir.multiplyScalar(0.5); - dir = previousPoint.position.clone().add(dir).sub(point.position).normalize(); - - let dist = Math.min(point.position.distanceTo(previousPoint.position), point.position.distanceTo(nextPoint.position)); - dist = dist / 9; - - let labelPos = point.position.clone().add(dir.multiplyScalar(dist)); - angleLabel.position.copy(labelPos); - - let msg = Utils.addCommas((angle * (180.0 / Math.PI)).toFixed(1)) + '\u00B0'; - angleLabel.setText(msg); - - angleLabel.visible = this.showAngles && (index < lastIndex || this.closed) && this.points.length >= 3 && angle > 0; - } - } - - { // update height stuff - let heightEdge = this.heightEdge; - heightEdge.visible = this.showHeight; - this.heightLabel.visible = this.showHeight; - - if (this.showHeight) { - let sorted = this.points.slice().sort((a, b) => a.position.z - b.position.z); - let lowPoint = sorted[0].position.clone(); - let highPoint = sorted[sorted.length - 1].position.clone(); - let min = lowPoint.z; - let max = highPoint.z; - let height = max - min; - - let start = new THREE.Vector3(highPoint.x, highPoint.y, min); - let end = new THREE.Vector3(highPoint.x, highPoint.y, max); - - heightEdge.position.copy(lowPoint); - - heightEdge.geometry.setPositions([ - 0, 0, 0, - ...start.clone().sub(lowPoint).toArray(), - ...start.clone().sub(lowPoint).toArray(), - ...end.clone().sub(lowPoint).toArray(), - ]); - - heightEdge.geometry.verticesNeedUpdate = true; - // heightEdge.geometry.computeLineDistances(); - // heightEdge.geometry.lineDistancesNeedUpdate = true; - heightEdge.geometry.computeBoundingSphere(); - heightEdge.computeLineDistances(); - - // heightEdge.material.dashSize = height / 40; - // heightEdge.material.gapSize = height / 40; - - let heightLabelPosition = start.clone().add(end).multiplyScalar(0.5); - this.heightLabel.position.copy(heightLabelPosition); - - let suffix = ""; - if(this.lengthUnit != null && this.lengthUnitDisplay != null){ - height = height / this.lengthUnit.unitspermeter * this.lengthUnitDisplay.unitspermeter; //convert to meters then to the display unit - suffix = this.lengthUnitDisplay.code; - } - - let txtHeight = Utils.addCommas(height.toFixed(2)); - let msg = `${txtHeight} ${suffix}`; - this.heightLabel.setText(msg); - } - } - - { // update circle stuff - const circleRadiusLabel = this.circleRadiusLabel; - const circleRadiusLine = this.circleRadiusLine; - const circleLine = this.circleLine; - const circleCenter = this.circleCenter; - - const circleOkay = this.points.length === 3; - - circleRadiusLabel.visible = this.showCircle && circleOkay; - circleRadiusLine.visible = this.showCircle && circleOkay; - circleLine.visible = this.showCircle && circleOkay; - circleCenter.visible = this.showCircle && circleOkay; - - if(this.showCircle && circleOkay){ - - const A = this.points[0].position; - const B = this.points[1].position; - const C = this.points[2].position; - const AB = B.clone().sub(A); - const AC = C.clone().sub(A); - const N = AC.clone().cross(AB).normalize(); - - const center = Potree.Utils.computeCircleCenter(A, B, C); - const radius = center.distanceTo(A); - - - const scale = radius / 20; - circleCenter.position.copy(center); - circleCenter.scale.set(scale, scale, scale); - - //circleRadiusLine.geometry.vertices[0].set(0, 0, 0); - //circleRadiusLine.geometry.vertices[1].copy(B.clone().sub(center)); - - circleRadiusLine.geometry.setPositions( [ - 0, 0, 0, - ...B.clone().sub(center).toArray() - ] ); - - circleRadiusLine.geometry.verticesNeedUpdate = true; - circleRadiusLine.geometry.computeBoundingSphere(); - circleRadiusLine.position.copy(center); - circleRadiusLine.computeLineDistances(); - - const target = center.clone().add(N); - circleLine.position.copy(center); - circleLine.scale.set(radius, radius, radius); - circleLine.lookAt(target); - - circleRadiusLabel.visible = true; - circleRadiusLabel.position.copy(center.clone().add(B).multiplyScalar(0.5)); - circleRadiusLabel.setText(`${radius.toFixed(3)}`); - - } - } - - { // update area label - this.areaLabel.position.copy(centroid); - this.areaLabel.visible = this.showArea && this.points.length >= 3; - let area = this.getArea(); - - let suffix = ""; - if(this.lengthUnit != null && this.lengthUnitDisplay != null){ - area = area / Math.pow(this.lengthUnit.unitspermeter, 2) * Math.pow(this.lengthUnitDisplay.unitspermeter, 2); //convert to square meters then to the square display unit - suffix = this.lengthUnitDisplay.code; - } - - let txtArea = Utils.addCommas(area.toFixed(1)); - let msg = `${txtArea} ${suffix}\u00B2`; - this.areaLabel.setText(msg); - } - - // this.updateAzimuth(); - }; - - raycast (raycaster, intersects) { - for (let i = 0; i < this.points.length; i++) { - let sphere = this.spheres[i]; - - sphere.raycast(raycaster, intersects); - } - - // recalculate distances because they are not necessarely correct - // for scaled objects. - // see https://github.com/mrdoob/three.js/issues/5827 - // TODO: remove this once the bug has been fixed - for (let i = 0; i < intersects.length; i++) { - let I = intersects[i]; - I.distance = raycaster.ray.origin.distanceTo(I.point); - } - intersects.sort(function (a, b) { return a.distance - b.distance; }); - }; - - get showCoordinates () { - return this._showCoordinates; - } - - set showCoordinates (value) { - this._showCoordinates = value; - this.update(); - } - - get showAngles () { - return this._showAngles; - } - - set showAngles (value) { - this._showAngles = value; - this.update(); - } - - get showCircle () { - return this._showCircle; - } - - set showCircle (value) { - this._showCircle = value; - this.update(); - } - - get showAzimuth(){ - return this._showAzimuth; - } - - set showAzimuth(value){ - this._showAzimuth = value; - this.update(); - } - - get showEdges () { - return this._showEdges; - } - - set showEdges (value) { - this._showEdges = value; - this.update(); - } - - get showHeight () { - return this._showHeight; - } - - set showHeight (value) { - this._showHeight = value; - this.update(); - } - - get showArea () { - return this._showArea; - } - - set showArea (value) { - this._showArea = value; - this.update(); - } - - get closed () { - return this._closed; - } - - set closed (value) { - this._closed = value; - this.update(); - } - - get showDistances () { - return this._showDistances; - } - - set showDistances (value) { - this._showDistances = value; - this.update(); - } - - } - - class PolygonClipVolume extends THREE.Object3D{ - - constructor(camera){ - super(); - - this.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1; - this.name = "polygon_clip_volume_" + this.constructor.counter; - - this.camera = camera.clone(); - this.camera.rotation.set(...camera.rotation.toArray()); // [r85] workaround because camera.clone() doesn't work on rotation - this.camera.rotation.order = camera.rotation.order; - this.camera.updateMatrixWorld(); - this.camera.updateProjectionMatrix(); - this.camera.matrixWorldInverse.getInverse(this.camera.matrixWorld); - - this.viewMatrix = this.camera.matrixWorldInverse.clone(); - this.projMatrix = this.camera.projectionMatrix.clone(); - - // projected markers - this.markers = []; - this.initialized = false; - } - - addMarker() { - - let marker = new THREE.Mesh(); - - let cancel; - - let drag = e => { - let size = e.viewer.renderer.getSize(new THREE.Vector2()); - let projectedPos = new THREE.Vector3( - 2.0 * (e.drag.end.x / size.width) - 1.0, - -2.0 * (e.drag.end.y / size.height) + 1.0, - 0 - ); - - marker.position.copy(projectedPos); - }; - - let drop = e => { - cancel(); - }; - - cancel = e => { - marker.removeEventListener("drag", drag); - marker.removeEventListener("drop", drop); - }; - - marker.addEventListener("drag", drag); - marker.addEventListener("drop", drop); - - - this.markers.push(marker); - } - - removeLastMarker() { - if(this.markers.length > 0) { - this.markers.splice(this.markers.length - 1, 1); - } - } - - }; - - class Utils { - static async loadShapefileFeatures (file, callback) { - let features = []; - - let handleFinish = () => { - callback(features); - }; - - let source = await shapefile.open(file); - - while(true){ - let result = await source.read(); - - if (result.done) { - handleFinish(); - break; - } - - if (result.value && result.value.type === 'Feature' && result.value.geometry !== undefined) { - features.push(result.value); - } - } - - } - - static toString (value) { - if (value instanceof THREE.Vector3) { - return value.x.toFixed(2) + ', ' + value.y.toFixed(2) + ', ' + value.z.toFixed(2); - } else { - return '' + value + ''; - } - } - - static normalizeURL (url) { - let u = new URL(url); - - return u.protocol + '//' + u.hostname + u.pathname.replace(/\/+/g, '/'); - }; - - static pathExists (url) { - let req = XHRFactory.createXMLHttpRequest(); - req.open('GET', url, false); - req.send(null); - if (req.status !== 200) { - return false; - } - return true; - }; - - static debugSphere(parent, position, scale, color){ - let geometry = new THREE.SphereGeometry(1, 8, 8); - let material; - - if(color !== undefined){ - material = new THREE.MeshBasicMaterial({color: color}); - }else { - material = new THREE.MeshNormalMaterial(); - } - let sphere = new THREE.Mesh(geometry, material); - sphere.position.copy(position); - sphere.scale.set(scale, scale, scale); - parent.add(sphere); - } - - static debugLine(parent, start, end, color){ - - let material = new THREE.LineBasicMaterial({ color: color }); - let geometry = new THREE.Geometry(); - - const p1 = new THREE.Vector3(0, 0, 0); - const p2 = end.clone().sub(start); - - geometry.vertices.push(p1, p2); - - let tl = new THREE.Line( geometry, material ); - tl.position.copy(start); - - parent.add(tl); - } - - static debugCircle(parent, center, radius, normal, color){ - let material = new THREE.LineBasicMaterial({ color: color }); - - let geometry = new THREE.Geometry(); - - let n = 32; - for(let i = 0; i <= n; i++){ - let u0 = 2 * Math.PI * (i / n); - let u1 = 2 * Math.PI * (i + 1) / n; - - let p0 = new THREE.Vector3( - Math.cos(u0), - Math.sin(u0), - 0 - ); - - let p1 = new THREE.Vector3( - Math.cos(u1), - Math.sin(u1), - 0 - ); - - geometry.vertices.push(p0, p1); - } - - let tl = new THREE.Line( geometry, material ); - tl.position.copy(center); - tl.scale.set(radius, radius, radius); - - parent.add(tl); - } - - static debugBox(parent, box, transform = new THREE.Matrix4(), color = 0xFFFF00){ - - let vertices = [ - [box.min.x, box.min.y, box.min.z], - [box.min.x, box.min.y, box.max.z], - [box.min.x, box.max.y, box.min.z], - [box.min.x, box.max.y, box.max.z], - - [box.max.x, box.min.y, box.min.z], - [box.max.x, box.min.y, box.max.z], - [box.max.x, box.max.y, box.min.z], - [box.max.x, box.max.y, box.max.z], - ].map(v => new THREE.Vector3(...v)); - - let edges = [ - [0, 4], [4, 5], [5, 1], [1, 0], - [2, 6], [6, 7], [7, 3], [3, 2], - [0, 2], [4, 6], [5, 7], [1, 3] - ]; - - let center = box.getCenter(new THREE.Vector3()); - - let centroids = [ - {position: [box.min.x, center.y, center.z], color: 0xFF0000}, - {position: [box.max.x, center.y, center.z], color: 0x880000}, - - {position: [center.x, box.min.y, center.z], color: 0x00FF00}, - {position: [center.x, box.max.y, center.z], color: 0x008800}, - - {position: [center.x, center.y, box.min.z], color: 0x0000FF}, - {position: [center.x, center.y, box.max.z], color: 0x000088}, - ]; - - for(let vertex of vertices){ - let pos = vertex.clone().applyMatrix4(transform); - - Utils.debugSphere(parent, pos, 0.1, 0xFF0000); - } - - for(let edge of edges){ - let start = vertices[edge[0]].clone().applyMatrix4(transform); - let end = vertices[edge[1]].clone().applyMatrix4(transform); - - Utils.debugLine(parent, start, end, color); - } - - for(let centroid of centroids){ - let pos = new THREE.Vector3(...centroid.position).applyMatrix4(transform); - - Utils.debugSphere(parent, pos, 0.1, centroid.color); - } - } - - static debugPlane(parent, plane, size = 1, color = 0x0000FF){ - - let planehelper = new THREE.PlaneHelper(plane, size, color); - - parent.add(planehelper); - - } - - /** - * adapted from mhluska at https://github.com/mrdoob/three.js/issues/1561 - */ - static computeTransformedBoundingBox (box, transform) { - let vertices = [ - new THREE.Vector3(box.min.x, box.min.y, box.min.z).applyMatrix4(transform), - new THREE.Vector3(box.min.x, box.min.y, box.min.z).applyMatrix4(transform), - new THREE.Vector3(box.max.x, box.min.y, box.min.z).applyMatrix4(transform), - new THREE.Vector3(box.min.x, box.max.y, box.min.z).applyMatrix4(transform), - new THREE.Vector3(box.min.x, box.min.y, box.max.z).applyMatrix4(transform), - new THREE.Vector3(box.min.x, box.max.y, box.max.z).applyMatrix4(transform), - new THREE.Vector3(box.max.x, box.max.y, box.min.z).applyMatrix4(transform), - new THREE.Vector3(box.max.x, box.min.y, box.max.z).applyMatrix4(transform), - new THREE.Vector3(box.max.x, box.max.y, box.max.z).applyMatrix4(transform) - ]; - - let boundingBox = new THREE.Box3(); - boundingBox.setFromPoints(vertices); - - return boundingBox; - }; - - /** - * add separators to large numbers - * - * @param nStr - * @returns - */ - static addCommas (nStr) { - nStr += ''; - let x = nStr.split('.'); - let x1 = x[0]; - let x2 = x.length > 1 ? '.' + x[1] : ''; - let rgx = /(\d+)(\d{3})/; - while (rgx.test(x1)) { - x1 = x1.replace(rgx, '$1' + ',' + '$2'); - } - return x1 + x2; - }; - - static removeCommas (str) { - return str.replace(/,/g, ''); - } - - /** - * create worker from a string - * - * code from http://stackoverflow.com/questions/10343913/how-to-create-a-web-worker-from-a-string - */ - static createWorker (code) { - let blob = new Blob([code], {type: 'application/javascript'}); - let worker = new Worker(URL.createObjectURL(blob)); - - return worker; - }; - - static moveTo(scene, endPosition, endTarget){ - - let view = scene.view; - let camera = scene.getActiveCamera(); - let animationDuration = 500; - let easing = TWEEN.Easing.Quartic.Out; - - { // animate camera position - let tween = new TWEEN.Tween(view.position).to(endPosition, animationDuration); - tween.easing(easing); - tween.start(); - } - - { // animate camera target - let camTargetDistance = camera.position.distanceTo(endTarget); - let target = new THREE.Vector3().addVectors( - camera.position, - camera.getWorldDirection(new THREE.Vector3()).clone().multiplyScalar(camTargetDistance) - ); - let tween = new TWEEN.Tween(target).to(endTarget, animationDuration); - tween.easing(easing); - tween.onUpdate(() => { - view.lookAt(target); - }); - tween.onComplete(() => { - view.lookAt(target); - }); - tween.start(); - } - - } - - static loadSkybox (path) { - let camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 100000); - camera.up.set(0, 0, 1); - let scene = new THREE.Scene(); - - let format = '.jpg'; - let urls = [ - path + 'px' + format, path + 'nx' + format, - path + 'py' + format, path + 'ny' + format, - path + 'pz' + format, path + 'nz' + format - ]; - - let materialArray = []; - { - for (let i = 0; i < 6; i++) { - let material = new THREE.MeshBasicMaterial({ - map: null, - side: THREE.BackSide, - depthTest: false, - depthWrite: false, - color: 0x424556 - }); - - materialArray.push(material); - - let loader = new THREE.TextureLoader(); - loader.load(urls[i], - function loaded (texture) { - material.map = texture; - material.needsUpdate = true; - material.color.setHex(0xffffff); - }, function progress (xhr) { - // console.log( (xhr.loaded / xhr.total * 100) + '% loaded' ); - }, function error (xhr) { - console.log('An error happened', xhr); - } - ); - } - } - - let skyGeometry = new THREE.CubeGeometry(5000, 5000, 5000); - let skybox = new THREE.Mesh(skyGeometry, materialArray); - - scene.add(skybox); - - // z up - scene.rotation.x = Math.PI / 2; - - return {'camera': camera, 'scene': scene}; - }; - - static createGrid (width, length, spacing, color) { - let material = new THREE.LineBasicMaterial({ - color: color || 0x888888 - }); - - let geometry = new THREE.Geometry(); - for (let i = 0; i <= length; i++) { - geometry.vertices.push(new THREE.Vector3(-(spacing * width) / 2, i * spacing - (spacing * length) / 2, 0)); - geometry.vertices.push(new THREE.Vector3(+(spacing * width) / 2, i * spacing - (spacing * length) / 2, 0)); - } - - for (let i = 0; i <= width; i++) { - geometry.vertices.push(new THREE.Vector3(i * spacing - (spacing * width) / 2, -(spacing * length) / 2, 0)); - geometry.vertices.push(new THREE.Vector3(i * spacing - (spacing * width) / 2, +(spacing * length) / 2, 0)); - } - - let line = new THREE.LineSegments(geometry, material, THREE.LinePieces); - line.receiveShadow = true; - return line; - } - - static createBackgroundTexture (width, height) { - function gauss (x, y) { - return (1 / (2 * Math.PI)) * Math.exp(-(x * x + y * y) / 2); - }; - - // map.magFilter = THREE.NearestFilter; - let size = width * height; - let data = new Uint8Array(3 * size); - - let chroma = [1, 1.5, 1.7]; - let max = gauss(0, 0); - - for (let x = 0; x < width; x++) { - for (let y = 0; y < height; y++) { - let u = 2 * (x / width) - 1; - let v = 2 * (y / height) - 1; - - let i = x + width * y; - let d = gauss(2 * u, 2 * v) / max; - let r = (Math.random() + Math.random() + Math.random()) / 3; - r = (d * 0.5 + 0.5) * r * 0.03; - r = r * 0.4; - - // d = Math.pow(d, 0.6); - - data[3 * i + 0] = 255 * (d / 15 + 0.05 + r) * chroma[0]; - data[3 * i + 1] = 255 * (d / 15 + 0.05 + r) * chroma[1]; - data[3 * i + 2] = 255 * (d / 15 + 0.05 + r) * chroma[2]; - } - } - - let texture = new THREE.DataTexture(data, width, height, THREE.RGBFormat); - texture.needsUpdate = true; - - return texture; - } - - static getMousePointCloudIntersection (mouse, camera, viewer, pointclouds, params = {}) { - - let renderer = viewer.renderer; - - let nmouse = { - x: (mouse.x / renderer.domElement.clientWidth) * 2 - 1, - y: -(mouse.y / renderer.domElement.clientHeight) * 2 + 1 - }; - - let pickParams = {}; - - if(params.pickClipped){ - pickParams.pickClipped = params.pickClipped; - } - - pickParams.x = mouse.x; - pickParams.y = renderer.domElement.clientHeight - mouse.y; - - let raycaster = new THREE.Raycaster(); - raycaster.setFromCamera(nmouse, camera); - let ray = raycaster.ray; - - let selectedPointcloud = null; - let closestDistance = Infinity; - let closestIntersection = null; - let closestPoint = null; - - for(let pointcloud of pointclouds){ - let point = pointcloud.pick(viewer, camera, ray, pickParams); - - if(!point){ - continue; - } - - let distance = camera.position.distanceTo(point.position); - - if (distance < closestDistance) { - closestDistance = distance; - selectedPointcloud = pointcloud; - closestIntersection = point.position; - closestPoint = point; - } - } - - if (selectedPointcloud) { - return { - location: closestIntersection, - distance: closestDistance, - pointcloud: selectedPointcloud, - point: closestPoint - }; - } else { - return null; - } - } - - static pixelsArrayToImage (pixels, width, height) { - let canvas = document.createElement('canvas'); - canvas.width = width; - canvas.height = height; - - let context = canvas.getContext('2d'); - - pixels = new pixels.constructor(pixels); - - for (let i = 0; i < pixels.length; i++) { - pixels[i * 4 + 3] = 255; - } - - let imageData = context.createImageData(width, height); - imageData.data.set(pixels); - context.putImageData(imageData, 0, 0); - - let img = new Image(); - img.src = canvas.toDataURL(); - // img.style.transform = "scaleY(-1)"; - - return img; - } - - static pixelsArrayToDataUrl(pixels, width, height) { - let canvas = document.createElement('canvas'); - canvas.width = width; - canvas.height = height; - - let context = canvas.getContext('2d'); - - pixels = new pixels.constructor(pixels); - - for (let i = 0; i < pixels.length; i++) { - pixels[i * 4 + 3] = 255; - } - - let imageData = context.createImageData(width, height); - imageData.data.set(pixels); - context.putImageData(imageData, 0, 0); - - let dataURL = canvas.toDataURL(); - - return dataURL; - } - - static pixelsArrayToCanvas(pixels, width, height){ - let canvas = document.createElement('canvas'); - canvas.width = width; - canvas.height = height; - - let context = canvas.getContext('2d'); - - pixels = new pixels.constructor(pixels); - - //for (let i = 0; i < pixels.length; i++) { - // pixels[i * 4 + 3] = 255; - //} - - // flip vertically - let bytesPerLine = width * 4; - for(let i = 0; i < parseInt(height / 2); i++){ - let j = height - i - 1; - - let lineI = pixels.slice(i * bytesPerLine, i * bytesPerLine + bytesPerLine); - let lineJ = pixels.slice(j * bytesPerLine, j * bytesPerLine + bytesPerLine); - pixels.set(lineJ, i * bytesPerLine); - pixels.set(lineI, j * bytesPerLine); - } - - let imageData = context.createImageData(width, height); - imageData.data.set(pixels); - context.putImageData(imageData, 0, 0); - - return canvas; - } - - static removeListeners(dispatcher, type){ - if (dispatcher._listeners === undefined) { - return; - } - - if (dispatcher._listeners[ type ]) { - delete dispatcher._listeners[ type ]; - } - } - - static mouseToRay(mouse, camera, width, height){ - - let normalizedMouse = { - x: (mouse.x / width) * 2 - 1, - y: -(mouse.y / height) * 2 + 1 - }; - - let vector = new THREE.Vector3(normalizedMouse.x, normalizedMouse.y, 0.5); - let origin = camera.position.clone(); - vector.unproject(camera); - let direction = new THREE.Vector3().subVectors(vector, origin).normalize(); - - let ray = new THREE.Ray(origin, direction); - - return ray; - } - - static projectedRadius(radius, camera, distance, screenWidth, screenHeight){ - if(camera instanceof THREE.OrthographicCamera){ - return Utils.projectedRadiusOrtho(radius, camera.projectionMatrix, screenWidth, screenHeight); - }else if(camera instanceof THREE.PerspectiveCamera){ - return Utils.projectedRadiusPerspective(radius, camera.fov * Math.PI / 180, distance, screenHeight); - }else { - throw new Error("invalid parameters"); - } - } - - static projectedRadiusPerspective(radius, fov, distance, screenHeight) { - let projFactor = (1 / Math.tan(fov / 2)) / distance; - projFactor = projFactor * screenHeight / 2; - - return radius * projFactor; - } - - static projectedRadiusOrtho(radius, proj, screenWidth, screenHeight) { - let p1 = new THREE.Vector4(0); - let p2 = new THREE.Vector4(radius); - - p1.applyMatrix4(proj); - p2.applyMatrix4(proj); - p1 = new THREE.Vector3(p1.x, p1.y, p1.z); - p2 = new THREE.Vector3(p2.x, p2.y, p2.z); - p1.x = (p1.x + 1.0) * 0.5 * screenWidth; - p1.y = (p1.y + 1.0) * 0.5 * screenHeight; - p2.x = (p2.x + 1.0) * 0.5 * screenWidth; - p2.y = (p2.y + 1.0) * 0.5 * screenHeight; - return p1.distanceTo(p2); - } - - - static topView(camera, node){ - camera.position.set(0, 1, 0); - camera.rotation.set(-Math.PI / 2, 0, 0); - camera.zoomTo(node, 1); - } - - static frontView (camera, node) { - camera.position.set(0, 0, 1); - camera.rotation.set(0, 0, 0); - camera.zoomTo(node, 1); - } - - static leftView (camera, node) { - camera.position.set(-1, 0, 0); - camera.rotation.set(0, -Math.PI / 2, 0); - camera.zoomTo(node, 1); - } - - static rightView (camera, node) { - camera.position.set(1, 0, 0); - camera.rotation.set(0, Math.PI / 2, 0); - camera.zoomTo(node, 1); - } - - - static findClosestGpsTime(target, viewer){ - const start = performance.now(); - - const nodes = []; - for(const pc of viewer.scene.pointclouds){ - nodes.push(pc.root); - - for(const child of pc.root.children){ - if(child){ - nodes.push(child); - } - } - } - - let closestNode = null; - let closestIndex = Infinity; - let closestDistance = Infinity; - let closestValue = 0; - - for(const node of nodes){ - - const isOkay = node.geometryNode != null - && node.geometryNode.geometry != null - && node.sceneNode != null; - - if(!isOkay){ - continue; - } - - let geometry = node.geometryNode.geometry; - let gpsTime = geometry.attributes["gps-time"]; - let range = gpsTime.potree.range; - - for(let i = 0; i < gpsTime.array.length; i++){ - let value = gpsTime.array[i]; - value = value * (range[1] - range[0]) + range[0]; - const distance = Math.abs(target - value); - - if(distance < closestDistance){ - closestIndex = i; - closestDistance = distance; - closestValue = value; - closestNode = node; - //console.log("found a closer one: " + value); - } - } - } - - const geometry = closestNode.geometryNode.geometry; - const position = new THREE.Vector3( - geometry.attributes.position.array[3 * closestIndex + 0], - geometry.attributes.position.array[3 * closestIndex + 1], - geometry.attributes.position.array[3 * closestIndex + 2], - ); - - position.applyMatrix4(closestNode.sceneNode.matrixWorld); - - const end = performance.now(); - const duration = (end - start); - console.log(`duration: ${duration.toFixed(3)}ms`); - - return { - node: closestNode, - index: closestIndex, - position: position, - }; - } - - /** - * - * 0: no intersection - * 1: intersection - * 2: fully inside - */ - static frustumSphereIntersection (frustum, sphere) { - let planes = frustum.planes; - let center = sphere.center; - let negRadius = -sphere.radius; - - let minDistance = Number.MAX_VALUE; - - for (let i = 0; i < 6; i++) { - let distance = planes[ i ].distanceToPoint(center); - - if (distance < negRadius) { - return 0; - } - - minDistance = Math.min(minDistance, distance); - } - - return (minDistance >= sphere.radius) ? 2 : 1; - } - - // code taken from three.js - // ImageUtils - generateDataTexture() - static generateDataTexture (width, height, color) { - let size = width * height; - let data = new Uint8Array(4 * width * height); - - let r = Math.floor(color.r * 255); - let g = Math.floor(color.g * 255); - let b = Math.floor(color.b * 255); - - for (let i = 0; i < size; i++) { - data[ i * 3 ] = r; - data[ i * 3 + 1 ] = g; - data[ i * 3 + 2 ] = b; - } - - let texture = new THREE.DataTexture(data, width, height, THREE.RGBAFormat); - texture.needsUpdate = true; - texture.magFilter = THREE.NearestFilter; - - return texture; - } - - // from http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript - static getParameterByName (name) { - name = name.replace(/[[]/, '\\[').replace(/[\]]/, '\\]'); - let regex = new RegExp('[\\?&]' + name + '=([^&#]*)'); - let results = regex.exec(document.location.search); - return results === null ? null : decodeURIComponent(results[1].replace(/\+/g, ' ')); - } - - static setParameter (name, value) { - // value = encodeURIComponent(value); - - name = name.replace(/[[]/, '\\[').replace(/[\]]/, '\\]'); - let regex = new RegExp('([\\?&])(' + name + '=([^&#]*))'); - let results = regex.exec(document.location.search); - - let url = window.location.href; - if (results === null) { - if (window.location.search.length === 0) { - url = url + '?'; - } else { - url = url + '&'; - } - - url = url + name + '=' + value; - } else { - let newValue = name + '=' + value; - url = url.replace(results[2], newValue); - } - window.history.replaceState({}, '', url); - } - - static createChildAABB(aabb, index){ - let min = aabb.min.clone(); - let max = aabb.max.clone(); - let size = new THREE.Vector3().subVectors(max, min); - - if ((index & 0b0001) > 0) { - min.z += size.z / 2; - } else { - max.z -= size.z / 2; - } - - if ((index & 0b0010) > 0) { - min.y += size.y / 2; - } else { - max.y -= size.y / 2; - } - - if ((index & 0b0100) > 0) { - min.x += size.x / 2; - } else { - max.x -= size.x / 2; - } - - return new THREE.Box3(min, max); - } - - // see https://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript - static clipboardCopy(text){ - let textArea = document.createElement("textarea"); - - textArea.style.position = 'fixed'; - textArea.style.top = 0; - textArea.style.left = 0; - - textArea.style.width = '2em'; - textArea.style.height = '2em'; - - textArea.style.padding = 0; - - textArea.style.border = 'none'; - textArea.style.outline = 'none'; - textArea.style.boxShadow = 'none'; - - textArea.style.background = 'transparent'; - - textArea.value = text; - - document.body.appendChild(textArea); - - textArea.select(); - - try { - let success = document.execCommand('copy'); - if(success){ - console.log("copied text to clipboard"); - }else { - console.log("copy to clipboard failed"); - } - } catch (err) { - console.log("error while trying to copy to clipboard"); - } - - document.body.removeChild(textArea); - - } - - static getMeasurementIcon(measurement){ - if (measurement instanceof Measure) { - if (measurement.showDistances && !measurement.showArea && !measurement.showAngles) { - return `${Potree.resourcePath}/icons/distance.svg`; - } else if (measurement.showDistances && measurement.showArea && !measurement.showAngles) { - return `${Potree.resourcePath}/icons/area.svg`; - } else if (measurement.maxMarkers === 1) { - return `${Potree.resourcePath}/icons/point.svg`; - } else if (!measurement.showDistances && !measurement.showArea && measurement.showAngles) { - return `${Potree.resourcePath}/icons/angle.png`; - } else if (measurement.showHeight) { - return `${Potree.resourcePath}/icons/height.svg`; - } else { - return `${Potree.resourcePath}/icons/distance.svg`; - } - } else if (measurement instanceof Profile) { - return `${Potree.resourcePath}/icons/profile.svg`; - } else if (measurement instanceof Volume) { - return `${Potree.resourcePath}/icons/volume.svg`; - } else if (measurement instanceof PolygonClipVolume) { - return `${Potree.resourcePath}/icons/clip-polygon.svg`; - } - } - - static lineToLineIntersection(P0, P1, P2, P3){ - - const P = [P0, P1, P2, P3]; - - const d = (m, n, o, p) => { - let result = - (P[m].x - P[n].x) * (P[o].x - P[p].x) - + (P[m].y - P[n].y) * (P[o].y - P[p].y) - + (P[m].z - P[n].z) * (P[o].z - P[p].z); - - return result; - }; - - - const mua = (d(0, 2, 3, 2) * d(3, 2, 1, 0) - d(0, 2, 1, 0) * d(3, 2, 3, 2)) - /**-----------------------------------------------------------------**/ / - (d(1, 0, 1, 0) * d(3, 2, 3, 2) - d(3, 2, 1, 0) * d(3, 2, 1, 0)); - - - const mub = (d(0, 2, 3, 2) + mua * d(3, 2, 1, 0)) - /**--------------------------------------**/ / - d(3, 2, 3, 2); - - - const P01 = P1.clone().sub(P0); - const P23 = P3.clone().sub(P2); - - const Pa = P0.clone().add(P01.multiplyScalar(mua)); - const Pb = P2.clone().add(P23.multiplyScalar(mub)); - - const center = Pa.clone().add(Pb).multiplyScalar(0.5); - - return center; - } - - static computeCircleCenter(A, B, C){ - const AB = B.clone().sub(A); - const AC = C.clone().sub(A); - - const N = AC.clone().cross(AB).normalize(); - - const ab_dir = AB.clone().cross(N).normalize(); - const ac_dir = AC.clone().cross(N).normalize(); - - const ab_origin = A.clone().add(B).multiplyScalar(0.5); - const ac_origin = A.clone().add(C).multiplyScalar(0.5); - - const P0 = ab_origin; - const P1 = ab_origin.clone().add(ab_dir); - - const P2 = ac_origin; - const P3 = ac_origin.clone().add(ac_dir); - - const center = Utils.lineToLineIntersection(P0, P1, P2, P3); - - return center; - - // Potree.Utils.debugLine(viewer.scene.scene, P0, P1, 0x00ff00); - // Potree.Utils.debugLine(viewer.scene.scene, P2, P3, 0x0000ff); - - // Potree.Utils.debugSphere(viewer.scene.scene, center, 0.03, 0xff00ff); - - // const radius = center.distanceTo(A); - // Potree.Utils.debugCircle(viewer.scene.scene, center, radius, new THREE.Vector3(0, 0, 1), 0xff00ff); - } - - static getNorthVec(p1, distance, projection){ - if(projection){ - // if there is a projection, transform coordinates to WGS84 - // and compute angle to north there - - proj4.defs("pointcloud", projection); - const transform = proj4("pointcloud", "WGS84"); - - const llP1 = transform.forward(p1.toArray()); - let llP2 = transform.forward([p1.x, p1.y + distance]); - const polarRadius = Math.sqrt((llP2[0] - llP1[0]) ** 2 + (llP2[1] - llP1[1]) ** 2); - llP2 = [llP1[0], llP1[1] + polarRadius]; - - const northVec = transform.inverse(llP2); - - return new THREE.Vector3(...northVec, p1.z).sub(p1); - }else { - // if there is no projection, assume [0, 1, 0] as north direction - - const vec = new THREE.Vector3(0, 1, 0).multiplyScalar(distance); - - return vec; - } - } - - static computeAzimuth(p1, p2, projection){ - - let azimuth = 0; - - if(projection){ - // if there is a projection, transform coordinates to WGS84 - // and compute angle to north there - - let transform; - - if (projection.includes('EPSG')) { - transform = proj4(projection, "WGS84"); - } else { - proj4.defs("pointcloud", projection); - transform = proj4("pointcloud", "WGS84"); - } - - const llP1 = transform.forward(p1.toArray()); - const llP2 = transform.forward(p2.toArray()); - const dir = [ - llP2[0] - llP1[0], - llP2[1] - llP1[1], - ]; - azimuth = Math.atan2(dir[1], dir[0]) - Math.PI / 2; - }else { - // if there is no projection, assume [0, 1, 0] as north direction - - const dir = [p2.x - p1.x, p2.y - p1.y]; - azimuth = Math.atan2(dir[1], dir[0]) - Math.PI / 2; - } - - // make clockwise - azimuth = -azimuth; - - return azimuth; - } - - static async loadScript(url){ - - return new Promise( resolve => { - - const element = document.getElementById(url); - - if(element){ - resolve(); - }else { - const script = document.createElement("script"); - - script.id = url; - - script.onload = () => { - resolve(); - }; - script.src = url; - - document.body.appendChild(script); - } - }); - } - - static createSvgGradient(scheme){ - - // this is what we are creating: - // - // - // - // - // - // ... - // - // - // - // - // - // - - - const gradientId = `${Math.random()}_${Date.now()}`; - - const svgn = "http://www.w3.org/2000/svg"; - const svg = document.createElementNS(svgn, "svg"); - svg.setAttributeNS(null, "width", "2em"); - svg.setAttributeNS(null, "height", "3em"); - - { // - const defs = document.createElementNS(svgn, "defs"); - - const linearGradient = document.createElementNS(svgn, "linearGradient"); - linearGradient.setAttributeNS(null, "id", gradientId); - linearGradient.setAttributeNS(null, "gradientTransform", "rotate(90)"); - - for(let i = scheme.length - 1; i >= 0; i--){ - const stopVal = scheme[i]; - const percent = parseInt(100 - stopVal[0] * 100); - const [r, g, b] = stopVal[1].toArray().map(v => parseInt(v * 255)); - - const stop = document.createElementNS(svgn, "stop"); - stop.setAttributeNS(null, "offset", `${percent}%`); - stop.setAttributeNS(null, "stop-color", `rgb(${r}, ${g}, ${b})`); - - linearGradient.appendChild(stop); - } - - defs.appendChild(linearGradient); - svg.appendChild(defs); - } - - const rect = document.createElementNS(svgn, "rect"); - rect.setAttributeNS(null, "width", `100%`); - rect.setAttributeNS(null, "height", `100%`); - rect.setAttributeNS(null, "fill", `url("#${gradientId}")`); - rect.setAttributeNS(null, "stroke", `black`); - rect.setAttributeNS(null, "stroke-width", `0.1em`); - - svg.appendChild(rect); - - return svg; - } - - static async waitAny(promises){ - - return new Promise( (resolve) => { - - promises.map( promise => { - promise.then( () => { - resolve(); - }); - }); - - }); - - } - - } - - Utils.screenPass = new function () { - this.screenScene = new THREE.Scene(); - this.screenQuad = new THREE.Mesh(new THREE.PlaneBufferGeometry(2, 2, 0)); - this.screenQuad.material.depthTest = true; - this.screenQuad.material.depthWrite = true; - this.screenQuad.material.transparent = true; - this.screenScene.add(this.screenQuad); - this.camera = new THREE.Camera(); - - this.render = function (renderer, material, target) { - this.screenQuad.material = material; - - if (typeof target === 'undefined') { - renderer.render(this.screenScene, this.camera); - } else { - renderer.render(this.screenScene, this.camera, target); - } - }; - }(); - - class Annotation extends EventDispatcher { - constructor (args = {}) { - super(); - - this.scene = null; - this._title = args.title || 'No Title'; - this._description = args.description || ''; - this.offset = new THREE.Vector3(); - this.uuid = THREE.Math.generateUUID(); - - if (!args.position) { - this.position = null; - } else if (args.position instanceof THREE.Vector3) { - this.position = args.position; - } else { - this.position = new THREE.Vector3(...args.position); - } - - this.cameraPosition = (args.cameraPosition instanceof Array) - ? new THREE.Vector3().fromArray(args.cameraPosition) : args.cameraPosition; - this.cameraTarget = (args.cameraTarget instanceof Array) - ? new THREE.Vector3().fromArray(args.cameraTarget) : args.cameraTarget; - this.radius = args.radius; - this.view = args.view || null; - this.keepOpen = false; - this.descriptionVisible = false; - this.showDescription = true; - this.actions = args.actions || []; - this.isHighlighted = false; - this._visible = true; - this.__visible = true; - this._display = true; - this._expand = false; - this.collapseThreshold = [args.collapseThreshold, 100].find(e => e !== undefined); - - this.children = []; - this.parent = null; - this.boundingBox = new THREE.Box3(); - - let iconClose = exports.resourcePath + '/icons/close.svg'; - - this.domElement = $(` -

        - `); - - this.elTitlebar = this.domElement.find('.annotation-titlebar'); - this.elTitle = this.elTitlebar.find('.annotation-label'); - this.elTitle.append(this._title); - this.elDescription = this.domElement.find('.annotation-description'); - this.elDescriptionClose = this.elDescription.find('.annotation-description-close'); - // this.elDescriptionContent = this.elDescription.find(".annotation-description-content"); - - this.clickTitle = () => { - if(this.hasView()){ - this.moveHere(this.scene.getActiveCamera()); - } - this.dispatchEvent({type: 'click', target: this}); - }; - - this.elTitle.click(this.clickTitle); - - this.actions = this.actions.map(a => { - if (a instanceof Action) { - return a; - } else { - return new Action(a); - } - }); - - for (let action of this.actions) { - action.pairWith(this); - } - - let actions = this.actions.filter( - a => a.showIn === undefined || a.showIn.includes('scene')); - - for (let action of actions) { - let elButton = $(``); - this.elTitlebar.append(elButton); - elButton.click(() => action.onclick({annotation: this})); - } - - this.elDescriptionClose.hover( - e => this.elDescriptionClose.css('opacity', '1'), - e => this.elDescriptionClose.css('opacity', '0.5') - ); - this.elDescriptionClose.click(e => this.setHighlighted(false)); - // this.elDescriptionContent.html(this._description); - - this.domElement.mouseenter(e => this.setHighlighted(true)); - this.domElement.mouseleave(e => this.setHighlighted(false)); - - this.domElement.on('touchstart', e => { - this.setHighlighted(!this.isHighlighted); - }); - - this.display = false; - //this.display = true; - - } - - installHandles(viewer){ - if(this.handles !== undefined){ - return; - } - - let domElement = $(` -
        - - - - - -
        - `); - - let svg = domElement.find("svg")[0]; - let elLine = domElement.find("line")[0]; - let elStart = domElement.find("circle")[0]; - let elEnd = domElement.find("circle")[1]; - - let setCoordinates = (start, end) => { - elStart.setAttribute("cx", `${start.x}`); - elStart.setAttribute("cy", `${start.y}`); - - elEnd.setAttribute("cx", `${end.x}`); - elEnd.setAttribute("cy", `${end.y}`); - - elLine.setAttribute("x1", start.x); - elLine.setAttribute("y1", start.y); - elLine.setAttribute("x2", end.x); - elLine.setAttribute("y2", end.y); - - let box = svg.getBBox(); - svg.setAttribute("width", `${box.width}`); - svg.setAttribute("height", `${box.height}`); - svg.setAttribute("viewBox", `${box.x} ${box.y} ${box.width} ${box.height}`); - - let ya = start.y - end.y; - let xa = start.x - end.x; - - if(ya > 0){ - start.y = start.y - ya; - } - if(xa > 0){ - start.x = start.x - xa; - } - - domElement.css("left", `${start.x}px`); - domElement.css("top", `${start.y}px`); - - }; - - $(viewer.renderArea).append(domElement); - - - let annotationStartPos = this.position.clone(); - let annotationStartOffset = this.offset.clone(); - - $(this.domElement).draggable({ - start: (event, ui) => { - annotationStartPos = this.position.clone(); - annotationStartOffset = this.offset.clone(); - $(this.domElement).find(".annotation-titlebar").css("pointer-events", "none"); - - console.log($(this.domElement).find(".annotation-titlebar")); - }, - stop: () => { - $(this.domElement).find(".annotation-titlebar").css("pointer-events", ""); - }, - drag: (event, ui ) => { - let renderAreaWidth = viewer.renderer.getSize(new THREE.Vector2()).width; - //let renderAreaHeight = viewer.renderer.getSize().height; - - let diff = { - x: ui.originalPosition.left - ui.position.left, - y: ui.originalPosition.top - ui.position.top - }; - - let nDiff = { - x: -(diff.x / renderAreaWidth) * 2, - y: (diff.y / renderAreaWidth) * 2 - }; - - let camera = viewer.scene.getActiveCamera(); - let oldScreenPos = new THREE.Vector3() - .addVectors(annotationStartPos, annotationStartOffset) - .project(camera); - - let newScreenPos = oldScreenPos.clone(); - newScreenPos.x += nDiff.x; - newScreenPos.y += nDiff.y; - - let newPos = newScreenPos.clone(); - newPos.unproject(camera); - - let newOffset = new THREE.Vector3().subVectors(newPos, this.position); - this.offset.copy(newOffset); - } - }); - - let updateCallback = () => { - let position = this.position; - let scene = viewer.scene; - - const renderAreaSize = viewer.renderer.getSize(new THREE.Vector2()); - let renderAreaWidth = renderAreaSize.width; - let renderAreaHeight = renderAreaSize.height; - - let start = this.position.clone(); - let end = new THREE.Vector3().addVectors(this.position, this.offset); - - let toScreen = (position) => { - let camera = scene.getActiveCamera(); - let screenPos = new THREE.Vector3(); - - let worldView = new THREE.Matrix4().multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse); - let ndc = new THREE.Vector4(position.x, position.y, position.z, 1.0).applyMatrix4(worldView); - // limit w to small positive value, in case position is behind the camera - ndc.w = Math.max(ndc.w, 0.1); - ndc.divideScalar(ndc.w); - - screenPos.copy(ndc); - screenPos.x = renderAreaWidth * (screenPos.x + 1) / 2; - screenPos.y = renderAreaHeight * (1 - (screenPos.y + 1) / 2); - - return screenPos; - }; - - start = toScreen(start); - end = toScreen(end); - - setCoordinates(start, end); - - }; - - viewer.addEventListener("update", updateCallback); - - this.handles = { - domElement: domElement, - setCoordinates: setCoordinates, - updateCallback: updateCallback - }; - } - - removeHandles(viewer){ - if(this.handles === undefined){ - return; - } - - //$(viewer.renderArea).remove(this.handles.domElement); - this.handles.domElement.remove(); - viewer.removeEventListener("update", this.handles.updateCallback); - - delete this.handles; - } - - get visible () { - return this._visible; - } - - set visible (value) { - if (this._visible === value) { - return; - } - - this._visible = value; - - //this.traverse(node => { - // node.display = value; - //}); - - this.dispatchEvent({ - type: 'visibility_changed', - annotation: this - }); - } - - get display () { - return this._display; - } - - set display (display) { - if (this._display === display) { - return; - } - - this._display = display; - - if (display) { - // this.domElement.fadeIn(200); - this.domElement.show(); - } else { - // this.domElement.fadeOut(200); - this.domElement.hide(); - } - } - - get expand () { - return this._expand; - } - - set expand (expand) { - if (this._expand === expand) { - return; - } - - if (expand) { - this.display = false; - } else { - this.display = true; - this.traverseDescendants(node => { - node.display = false; - }); - } - - this._expand = expand; - } - - get title () { - return this._title; - } - - set title (title) { - if (this._title === title) { - return; - } - - this._title = title; - this.elTitle.empty(); - this.elTitle.append(this._title); - - this.dispatchEvent({ - type: "annotation_changed", - annotation: this, - }); - } - - get description () { - return this._description; - } - - set description (description) { - if (this._description === description) { - return; - } - - this._description = description; - - const elDescriptionContent = this.elDescription.find(".annotation-description-content"); - elDescriptionContent.empty(); - elDescriptionContent.append(this._description); - - this.dispatchEvent({ - type: "annotation_changed", - annotation: this, - }); - } - - add (annotation) { - if (!this.children.includes(annotation)) { - this.children.push(annotation); - annotation.parent = this; - - let descendants = []; - annotation.traverse(a => { descendants.push(a); }); - - for (let descendant of descendants) { - let c = this; - while (c !== null) { - c.dispatchEvent({ - 'type': 'annotation_added', - 'annotation': descendant - }); - c = c.parent; - } - } - } - } - - level () { - if (this.parent === null) { - return 0; - } else { - return this.parent.level() + 1; - } - } - - hasChild(annotation) { - return this.children.includes(annotation); - } - - remove (annotation) { - if (this.hasChild(annotation)) { - annotation.removeAllChildren(); - annotation.dispose(); - this.children = this.children.filter(e => e !== annotation); - annotation.parent = null; - } - } - - removeAllChildren() { - this.children.forEach((child) => { - if (child.children.length > 0) { - child.removeAllChildren(); - } - - this.remove(child); - }); - } - - updateBounds () { - let box = new THREE.Box3(); - - if (this.position) { - box.expandByPoint(this.position); - } - - for (let child of this.children) { - child.updateBounds(); - - box.union(child.boundingBox); - } - - this.boundingBox.copy(box); - } - - traverse (handler) { - let expand = handler(this); - - if (expand === undefined || expand === true) { - for (let child of this.children) { - child.traverse(handler); - } - } - } - - traverseDescendants (handler) { - for (let child of this.children) { - child.traverse(handler); - } - } - - flatten () { - let annotations = []; - - this.traverse(annotation => { - annotations.push(annotation); - }); - - return annotations; - } - - descendants () { - let annotations = []; - - this.traverse(annotation => { - if (annotation !== this) { - annotations.push(annotation); - } - }); - - return annotations; - } - - setHighlighted (highlighted) { - if (highlighted) { - this.domElement.css('opacity', '0.8'); - this.elTitlebar.css('box-shadow', '0 0 5px #fff'); - this.domElement.css('z-index', '1000'); - - if (this._description) { - this.descriptionVisible = true; - this.elDescription.fadeIn(200); - this.elDescription.css('position', 'relative'); - } - } else { - this.domElement.css('opacity', '0.5'); - this.elTitlebar.css('box-shadow', ''); - this.domElement.css('z-index', '100'); - this.descriptionVisible = false; - this.elDescription.css('display', 'none'); - } - - this.isHighlighted = highlighted; - } - - hasView () { - let hasPosTargetView = this.cameraTarget instanceof THREE.Vector3; - hasPosTargetView = hasPosTargetView && this.cameraPosition instanceof THREE.Vector3; - - let hasRadiusView = this.radius !== undefined; - - let hasView = hasPosTargetView || hasRadiusView; - - return hasView; - }; - - moveHere (camera) { - if (!this.hasView()) { - return; - } - - let view = this.scene.view; - let animationDuration = 500; - let easing = TWEEN.Easing.Quartic.Out; - - let endTarget; - if (this.cameraTarget) { - endTarget = this.cameraTarget; - } else if (this.position) { - endTarget = this.position; - } else { - endTarget = this.boundingBox.getCenter(new THREE.Vector3()); - } - - if (this.cameraPosition) { - let endPosition = this.cameraPosition; - - Utils.moveTo(this.scene, endPosition, endTarget); - } else if (this.radius) { - let direction = view.direction; - let endPosition = endTarget.clone().add(direction.multiplyScalar(-this.radius)); - let startRadius = view.radius; - let endRadius = this.radius; - - { // animate camera position - let tween = new TWEEN.Tween(view.position).to(endPosition, animationDuration); - tween.easing(easing); - tween.start(); - } - - { // animate radius - let t = {x: 0}; - - let tween = new TWEEN.Tween(t) - .to({x: 1}, animationDuration) - .onUpdate(function () { - view.radius = this.x * endRadius + (1 - this.x) * startRadius; - }); - tween.easing(easing); - tween.start(); - } - } - }; - - dispose () { - if (this.domElement.parentElement) { - this.domElement.parentElement.removeChild(this.domElement); - } - }; - - toString () { - return 'Annotation: ' + this._title; - } - }; - - class EnumItem{ - constructor(object){ - for(let key of Object.keys(object)){ - this[key] = object[key]; - } - } - - inspect(){ - return `Enum(${this.name}: ${this.value})`; - } - }; - - class Enum{ - - constructor(object){ - this.object = object; - - for(let key of Object.keys(object)){ - let value = object[key]; - - if(typeof value === "object"){ - value.name = key; - }else { - value = {name: key, value: value}; - } - - this[key] = new EnumItem(value); - } - } - - fromValue(value){ - for(let key of Object.keys(this.object)){ - if(this[key].value === value){ - return this[key]; - } - } - - throw new Error(`No enum for value: ${value}`); - } - - }; - - const CameraMode = { - ORTHOGRAPHIC: 0, - PERSPECTIVE: 1, - VR: 2, - }; - - const ClipTask = { - NONE: 0, - HIGHLIGHT: 1, - SHOW_INSIDE: 2, - SHOW_OUTSIDE: 3 - }; - - const ClipMethod = { - INSIDE_ANY: 0, - INSIDE_ALL: 1 - }; - - const ElevationGradientRepeat = { - CLAMP: 0, - REPEAT: 1, - MIRRORED_REPEAT: 2, - }; - - const MOUSE = { - LEFT: 0b0001, - RIGHT: 0b0010, - MIDDLE: 0b0100 - }; - - const PointSizeType = { - FIXED: 0, - ATTENUATED: 1, - ADAPTIVE: 2 - }; - - const PointShape = { - SQUARE: 0, - CIRCLE: 1, - PARABOLOID: 2 - }; - - const TreeType = { - OCTREE: 0, - KDTREE: 1 - }; - - const LengthUnits = { - METER: {code: 'm', unitspermeter: 1.0}, - FEET: {code: 'ft', unitspermeter: 3.28084}, - INCH: {code: '\u2033', unitspermeter: 39.3701} - }; - - let ftCanvas = document.createElement('canvas'); - - const Features = (function () { - - let gl = ftCanvas.getContext('webgl') || ftCanvas.getContext('experimental-webgl'); - if (gl === null){ - return null; - } - - // -- code taken from THREE.WebGLRenderer -- - let _vertexShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT); - let _vertexShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT); - // Unused: let _vertexShaderPrecisionLowpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_FLOAT); - - let _fragmentShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT); - let _fragmentShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT); - // Unused: let _fragmentShaderPrecisionLowpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_FLOAT); - - let highpAvailable = _vertexShaderPrecisionHighpFloat.precision > 0 && _fragmentShaderPrecisionHighpFloat.precision > 0; - let mediumpAvailable = _vertexShaderPrecisionMediumpFloat.precision > 0 && _fragmentShaderPrecisionMediumpFloat.precision > 0; - // ----------------------------------------- - - let precision; - if (highpAvailable) { - precision = 'highp'; - } else if (mediumpAvailable) { - precision = 'mediump'; - } else { - precision = 'lowp'; - } - - return { - SHADER_INTERPOLATION: { - isSupported: function () { - let supported = true; - - supported = supported && gl.getExtension('EXT_frag_depth'); - supported = supported && gl.getParameter(gl.MAX_VARYING_VECTORS) >= 8; - - return supported; - } - }, - SHADER_SPLATS: { - isSupported: function () { - let supported = true; - - supported = supported && gl.getExtension('EXT_frag_depth'); - supported = supported && gl.getExtension('OES_texture_float'); - supported = supported && gl.getParameter(gl.MAX_VARYING_VECTORS) >= 8; - - return supported; - } - - }, - SHADER_EDL: { - isSupported: function () { - let supported = true; - - //supported = supported && gl.getExtension('EXT_frag_depth'); - supported = supported && gl.getExtension('OES_texture_float'); - supported = supported && gl.getParameter(gl.MAX_VARYING_VECTORS) >= 8; - - //supported = supported || (gl instanceof WebGL2RenderingContext); - - return supported; - } - - }, - //WEBGL2: { - // isSupported: function(){ - // return gl instanceof WebGL2RenderingContext; - // } - //}, - precision: precision - }; - }()); - - const KeyCodes = { - - LEFT: 37, - UP: 38, - RIGHT: 39, - BOTTOM: 40, - DELETE: 46, - - A: 'A'.charCodeAt(0), - S: 'S'.charCodeAt(0), - D: 'D'.charCodeAt(0), - W: 'W'.charCodeAt(0), - Q: 'Q'.charCodeAt(0), - E: 'E'.charCodeAt(0), - R: 'R'.charCodeAt(0), - F: 'F'.charCodeAt(0) - - }; - - class LRUItem{ - - constructor(node){ - this.previous = null; - this.next = null; - this.node = node; - } - - } - - /** - * - * @class A doubly-linked-list of the least recently used elements. - */ - class LRU{ - - constructor(){ - // the least recently used item - this.first = null; - // the most recently used item - this.last = null; - // a list of all items in the lru list - this.items = {}; - this.elements = 0; - this.numPoints = 0; - } - - size(){ - return this.elements; - } - - contains(node){ - return this.items[node.id] == null; - } - - touch(node){ - if (!node.loaded) { - return; - } - - let item; - if (this.items[node.id] == null) { - // add to list - item = new LRUItem(node); - item.previous = this.last; - this.last = item; - if (item.previous !== null) { - item.previous.next = item; - } - - this.items[node.id] = item; - this.elements++; - - if (this.first === null) { - this.first = item; - } - this.numPoints += node.numPoints; - } else { - // update in list - item = this.items[node.id]; - if (item.previous === null) { - // handle touch on first element - if (item.next !== null) { - this.first = item.next; - this.first.previous = null; - item.previous = this.last; - item.next = null; - this.last = item; - item.previous.next = item; - } - } else if (item.next === null) { - // handle touch on last element - } else { - // handle touch on any other element - item.previous.next = item.next; - item.next.previous = item.previous; - item.previous = this.last; - item.next = null; - this.last = item; - item.previous.next = item; - } - } - } - - remove(node){ - let lruItem = this.items[node.id]; - if (lruItem) { - if (this.elements === 1) { - this.first = null; - this.last = null; - } else { - if (!lruItem.previous) { - this.first = lruItem.next; - this.first.previous = null; - } - if (!lruItem.next) { - this.last = lruItem.previous; - this.last.next = null; - } - if (lruItem.previous && lruItem.next) { - lruItem.previous.next = lruItem.next; - lruItem.next.previous = lruItem.previous; - } - } - - delete this.items[node.id]; - this.elements--; - this.numPoints -= node.numPoints; - } - } - - getLRUItem(){ - if (this.first === null) { - return null; - } - let lru = this.first; - - return lru.node; - } - - toString(){ - let string = '{ '; - let curr = this.first; - while (curr !== null) { - string += curr.node.id; - if (curr.next !== null) { - string += ', '; - } - curr = curr.next; - } - string += '}'; - string += '(' + this.size() + ')'; - return string; - } - - freeMemory(){ - if (this.elements <= 1) { - return; - } - - while (this.numPoints > Potree.pointLoadLimit) { - let element = this.first; - let node = element.node; - this.disposeDescendants(node); - } - } - - disposeDescendants(node){ - let stack = []; - stack.push(node); - while (stack.length > 0) { - let current = stack.pop(); - - // console.log(current); - - current.dispose(); - this.remove(current); - - for (let key in current.children) { - if (current.children.hasOwnProperty(key)) { - let child = current.children[key]; - if (child.loaded) { - stack.push(current.children[key]); - } - } - } - } - } - - } - - class PointCloudTreeNode extends EventDispatcher{ - - constructor(){ - super(); - this.needsTransformUpdate = true; - } - - getChildren () { - throw new Error('override function'); - } - - getBoundingBox () { - throw new Error('override function'); - } - - isLoaded () { - throw new Error('override function'); - } - - isGeometryNode () { - throw new Error('override function'); - } - - isTreeNode () { - throw new Error('override function'); - } - - getLevel () { - throw new Error('override function'); - } - - getBoundingSphere () { - throw new Error('override function'); - } - }; - - class PointCloudTree extends THREE.Object3D { - constructor () { - super(); - } - - initialized () { - return this.root !== null; - } - }; - - /** - * Some types of possible point attribute data formats - * - * @class - */ - const PointAttributeTypes = { - DATA_TYPE_DOUBLE: {ordinal: 0, name: "double", size: 8}, - DATA_TYPE_FLOAT: {ordinal: 1, name: "float", size: 4}, - DATA_TYPE_INT8: {ordinal: 2, name: "int8", size: 1}, - DATA_TYPE_UINT8: {ordinal: 3, name: "uint8", size: 1}, - DATA_TYPE_INT16: {ordinal: 4, name: "int16", size: 2}, - DATA_TYPE_UINT16: {ordinal: 5, name: "uint16", size: 2}, - DATA_TYPE_INT32: {ordinal: 6, name: "int32", size: 4}, - DATA_TYPE_UINT32: {ordinal: 7, name: "uint32", size: 4}, - DATA_TYPE_INT64: {ordinal: 8, name: "int64", size: 8}, - DATA_TYPE_UINT64: {ordinal: 9, name: "uint64", size: 8} - }; - - let i = 0; - for (let obj in PointAttributeTypes) { - PointAttributeTypes[i] = PointAttributeTypes[obj]; - i++; - } - - - class PointAttribute{ - - constructor(name, type, numElements){ - this.name = name; - this.type = type; - this.numElements = numElements; - this.byteSize = this.numElements * this.type.size; - this.description = ""; - this.range = [Infinity, -Infinity]; - } - - }; - - PointAttribute.POSITION_CARTESIAN = new PointAttribute( - "POSITION_CARTESIAN", PointAttributeTypes.DATA_TYPE_FLOAT, 3); - - PointAttribute.RGBA_PACKED = new PointAttribute( - "COLOR_PACKED", PointAttributeTypes.DATA_TYPE_INT8, 4); - - PointAttribute.COLOR_PACKED = PointAttribute.RGBA_PACKED; - - PointAttribute.RGB_PACKED = new PointAttribute( - "COLOR_PACKED", PointAttributeTypes.DATA_TYPE_INT8, 3); - - PointAttribute.NORMAL_FLOATS = new PointAttribute( - "NORMAL_FLOATS", PointAttributeTypes.DATA_TYPE_FLOAT, 3); - - PointAttribute.INTENSITY = new PointAttribute( - "INTENSITY", PointAttributeTypes.DATA_TYPE_UINT16, 1); - - PointAttribute.CLASSIFICATION = new PointAttribute( - "CLASSIFICATION", PointAttributeTypes.DATA_TYPE_UINT8, 1); - - PointAttribute.NORMAL_SPHEREMAPPED = new PointAttribute( - "NORMAL_SPHEREMAPPED", PointAttributeTypes.DATA_TYPE_UINT8, 2); - - PointAttribute.NORMAL_OCT16 = new PointAttribute( - "NORMAL_OCT16", PointAttributeTypes.DATA_TYPE_UINT8, 2); - - PointAttribute.NORMAL = new PointAttribute( - "NORMAL", PointAttributeTypes.DATA_TYPE_FLOAT, 3); - - PointAttribute.RETURN_NUMBER = new PointAttribute( - "RETURN_NUMBER", PointAttributeTypes.DATA_TYPE_UINT8, 1); - - PointAttribute.NUMBER_OF_RETURNS = new PointAttribute( - "NUMBER_OF_RETURNS", PointAttributeTypes.DATA_TYPE_UINT8, 1); - - PointAttribute.SOURCE_ID = new PointAttribute( - "SOURCE_ID", PointAttributeTypes.DATA_TYPE_UINT16, 1); - - PointAttribute.INDICES = new PointAttribute( - "INDICES", PointAttributeTypes.DATA_TYPE_UINT32, 1); - - PointAttribute.SPACING = new PointAttribute( - "SPACING", PointAttributeTypes.DATA_TYPE_FLOAT, 1); - - PointAttribute.GPS_TIME = new PointAttribute( - "GPS_TIME", PointAttributeTypes.DATA_TYPE_DOUBLE, 1); - - class PointAttributes{ - - constructor(pointAttributes){ - this.attributes = []; - this.byteSize = 0; - this.size = 0; - this.vectors = []; - - if (pointAttributes != null) { - for (let i = 0; i < pointAttributes.length; i++) { - let pointAttributeName = pointAttributes[i]; - let pointAttribute = PointAttribute[pointAttributeName]; - this.attributes.push(pointAttribute); - this.byteSize += pointAttribute.byteSize; - this.size++; - } - } - } - - - add(pointAttribute){ - this.attributes.push(pointAttribute); - this.byteSize += pointAttribute.byteSize; - this.size++; - }; - - addVector(vector){ - this.vectors.push(vector); - } - - hasColors(){ - for (let name in this.attributes) { - let pointAttribute = this.attributes[name]; - if (pointAttribute.name === PointAttributeNames.COLOR_PACKED) { - return true; - } - } - - return false; - }; - - hasNormals(){ - for (let name in this.attributes) { - let pointAttribute = this.attributes[name]; - if ( - pointAttribute === PointAttribute.NORMAL_SPHEREMAPPED || - pointAttribute === PointAttribute.NORMAL_FLOATS || - pointAttribute === PointAttribute.NORMAL || - pointAttribute === PointAttribute.NORMAL_OCT16) { - return true; - } - } - - return false; - }; - - } - - class U { - static toVector3(v, offset) { - return new THREE.Vector3().fromArray(v, offset || 0); - } - - static toBox3(b) { - return new THREE.Box3(U.toVector3(b), U.toVector3(b, 3)); - }; - - static findDim(schema, name) { - var dim = schema.find((dim) => dim.name == name); - if (!dim) throw new Error('Failed to find ' + name + ' in schema'); - return dim; - } - - static sphereFrom(b) { - return b.getBoundingSphere(new THREE.Sphere()); - } - }; - - class PointCloudEptGeometry { - constructor(url, info) { - let version = info.version; - let schema = info.schema; - let bounds = info.bounds; - let boundsConforming = info.boundsConforming; - - let xyz = [ - U.findDim(schema, 'X'), - U.findDim(schema, 'Y'), - U.findDim(schema, 'Z') - ]; - let scale = xyz.map((d) => d.scale || 1); - let offset = xyz.map((d) => d.offset || 0); - this.eptScale = U.toVector3(scale); - this.eptOffset = U.toVector3(offset); - - this.url = url; - this.info = info; - this.type = 'ept'; - - this.schema = schema; - this.span = info.span || info.ticks; - this.boundingBox = U.toBox3(bounds); - this.tightBoundingBox = U.toBox3(boundsConforming); - this.offset = U.toVector3([0, 0, 0]); - this.boundingSphere = U.sphereFrom(this.boundingBox); - this.tightBoundingSphere = U.sphereFrom(this.tightBoundingBox); - this.version = new Potree.Version('1.7'); - - this.projection = null; - this.fallbackProjection = null; - - if (info.srs && info.srs.horizontal) { - this.projection = info.srs.authority + ':' + info.srs.horizontal; - } - - if (info.srs.wkt) { - if (!this.projection) this.projection = info.srs.wkt; - else this.fallbackProjection = info.srs.wkt; - } - - { - // TODO [mschuetz]: named projections that proj4 can't handle seem to cause problems. - // remove them for now - - try{ - proj4(this.projection); - }catch(e){ - this.projection = null; - } - - - - } - - - { - const attributes = new PointAttributes(); - - attributes.add(PointAttribute.POSITION_CARTESIAN); - attributes.add(new PointAttribute("rgba", PointAttributeTypes.DATA_TYPE_UINT8, 4)); - attributes.add(new PointAttribute("intensity", PointAttributeTypes.DATA_TYPE_UINT16, 1)); - attributes.add(new PointAttribute("classification", PointAttributeTypes.DATA_TYPE_UINT8, 1)); - attributes.add(new PointAttribute("gps-time", PointAttributeTypes.DATA_TYPE_DOUBLE, 1)); - attributes.add(new PointAttribute("returnNumber", PointAttributeTypes.DATA_TYPE_UINT8, 1)); - attributes.add(new PointAttribute("number of returns", PointAttributeTypes.DATA_TYPE_UINT8, 1)); - attributes.add(new PointAttribute("return number", PointAttributeTypes.DATA_TYPE_UINT8, 1)); - attributes.add(new PointAttribute("source id", PointAttributeTypes.DATA_TYPE_UINT16, 1)); - - this.pointAttributes = attributes; - } - - - - this.spacing = - (this.boundingBox.max.x - this.boundingBox.min.x) / this.span; - - let hierarchyType = info.hierarchyType || 'json'; - - const dataType = info.dataType; - if (dataType == 'laszip') { - this.loader = new Potree.EptLaszipLoader(); - } - else if (dataType == 'binary') { - this.loader = new Potree.EptBinaryLoader(); - } - else if (dataType == 'zstandard') { - this.loader = new Potree.EptZstandardLoader(); - } - else { - throw new Error('Could not read data type: ' + dataType); - } - } - }; - - class EptKey { - constructor(ept, b, d, x, y, z) { - this.ept = ept; - this.b = b; - this.d = d; - this.x = x || 0; - this.y = y || 0; - this.z = z || 0; - } - - name() { - return this.d + '-' + this.x + '-' + this.y + '-' + this.z; - } - - step(a, b, c) { - let min = this.b.min.clone(); - let max = this.b.max.clone(); - let dst = new THREE.Vector3().subVectors(max, min); - - if (a) min.x += dst.x / 2; - else max.x -= dst.x / 2; - - if (b) min.y += dst.y / 2; - else max.y -= dst.y / 2; - - if (c) min.z += dst.z / 2; - else max.z -= dst.z / 2; - - return new Potree.EptKey( - this.ept, - new THREE.Box3(min, max), - this.d + 1, - this.x * 2 + a, - this.y * 2 + b, - this.z * 2 + c); - } - - children() { - var result = []; - for (var a = 0; a < 2; ++a) { - for (var b = 0; b < 2; ++b) { - for (var c = 0; c < 2; ++c) { - var add = this.step(a, b, c).name(); - if (!result.includes(add)) result = result.concat(add); - } - } - } - return result; - } - } - - class PointCloudEptGeometryNode extends PointCloudTreeNode { - constructor(ept, b, d, x, y, z) { - super(); - - this.ept = ept; - this.key = new Potree.EptKey( - this.ept, - b || this.ept.boundingBox, - d || 0, - x, - y, - z); - - this.id = PointCloudEptGeometryNode.IDCount++; - this.geometry = null; - this.boundingBox = this.key.b; - this.tightBoundingBox = this.boundingBox; - this.spacing = this.ept.spacing / Math.pow(2, this.key.d); - this.boundingSphere = U.sphereFrom(this.boundingBox); - - // These are set during hierarchy loading. - this.hasChildren = false; - this.children = { }; - this.numPoints = -1; - - this.level = this.key.d; - this.loaded = false; - this.loading = false; - this.oneTimeDisposeHandlers = []; - - let k = this.key; - this.name = this.toPotreeName(k.d, k.x, k.y, k.z); - this.index = parseInt(this.name.charAt(this.name.length - 1)); - } - - isGeometryNode() { return true; } - getLevel() { return this.level; } - isTreeNode() { return false; } - isLoaded() { return this.loaded; } - getBoundingSphere() { return this.boundingSphere; } - getBoundingBox() { return this.boundingBox; } - url() { return this.ept.url + 'ept-data/' + this.filename(); } - getNumPoints() { return this.numPoints; } - - filename() { return this.key.name(); } - - getChildren() { - let children = []; - - for (let i = 0; i < 8; i++) { - if (this.children[i]) { - children.push(this.children[i]); - } - } - - return children; - } - - addChild(child) { - this.children[child.index] = child; - child.parent = this; - } - - load() { - if (this.loaded || this.loading) return; - if (Potree.numNodesLoading >= Potree.maxNodesLoading) return; - - this.loading = true; - ++Potree.numNodesLoading; - - if (this.numPoints == -1) this.loadHierarchy(); - this.loadPoints(); - } - - loadPoints(){ - this.ept.loader.load(this); - } - - async loadHierarchy() { - let nodes = { }; - nodes[this.filename()] = this; - this.hasChildren = false; - - let eptHierarchyFile = - `${this.ept.url}ept-hierarchy/${this.filename()}.json`; - - let response = await fetch(eptHierarchyFile); - let hier = await response.json(); - - // Since we want to traverse top-down, and 10 comes - // lexicographically before 9 (for example), do a deep sort. - var keys = Object.keys(hier).sort((a, b) => { - let [da, xa, ya, za] = a.split('-').map((n) => parseInt(n, 10)); - let [db, xb, yb, zb] = b.split('-').map((n) => parseInt(n, 10)); - if (da < db) return -1; if (da > db) return 1; - if (xa < xb) return -1; if (xa > xb) return 1; - if (ya < yb) return -1; if (ya > yb) return 1; - if (za < zb) return -1; if (za > zb) return 1; - return 0; - }); - - keys.forEach((v) => { - let [d, x, y, z] = v.split('-').map((n) => parseInt(n, 10)); - let a = x & 1, b = y & 1, c = z & 1; - let parentName = - (d - 1) + '-' + (x >> 1) + '-' + (y >> 1) + '-' + (z >> 1); - - let parentNode = nodes[parentName]; - if (!parentNode) return; - parentNode.hasChildren = true; - - let key = parentNode.key.step(a, b, c); - - let node = new Potree.PointCloudEptGeometryNode( - this.ept, - key.b, - key.d, - key.x, - key.y, - key.z); - - node.level = d; - node.numPoints = hier[v]; - - parentNode.addChild(node); - nodes[key.name()] = node; - }); - } - - doneLoading(bufferGeometry, tightBoundingBox, np, mean) { - bufferGeometry.boundingBox = this.boundingBox; - this.geometry = bufferGeometry; - this.tightBoundingBox = tightBoundingBox; - this.numPoints = np; - this.mean = mean; - this.loaded = true; - this.loading = false; - --Potree.numNodesLoading; - } - - toPotreeName(d, x, y, z) { - var name = 'r'; - - for (var i = 0; i < d; ++i) { - var shift = d - i - 1; - var mask = 1 << shift; - var step = 0; - - if (x & mask) step += 4; - if (y & mask) step += 2; - if (z & mask) step += 1; - - name += step; - } - - return name; - } - - dispose() { - if (this.geometry && this.parent != null) { - this.geometry.dispose(); - this.geometry = null; - this.loaded = false; - - // this.dispatchEvent( { type: 'dispose' } ); - for (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) { - let handler = this.oneTimeDisposeHandlers[i]; - handler(); - } - this.oneTimeDisposeHandlers = []; - } - } - } - - PointCloudEptGeometryNode.IDCount = 0; - - class PointCloudOctreeGeometry{ - - constructor(){ - this.url = null; - this.octreeDir = null; - this.spacing = 0; - this.boundingBox = null; - this.root = null; - this.nodes = null; - this.pointAttributes = null; - this.hierarchyStepSize = -1; - this.loader = null; - } - - } - - class PointCloudOctreeGeometryNode extends PointCloudTreeNode{ - - constructor(name, pcoGeometry, boundingBox){ - super(); - - this.id = PointCloudOctreeGeometryNode.IDCount++; - this.name = name; - this.index = parseInt(name.charAt(name.length - 1)); - this.pcoGeometry = pcoGeometry; - this.geometry = null; - this.boundingBox = boundingBox; - this.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere()); - this.children = {}; - this.numPoints = 0; - this.level = null; - this.loaded = false; - this.oneTimeDisposeHandlers = []; - } - - isGeometryNode(){ - return true; - } - - getLevel(){ - return this.level; - } - - isTreeNode(){ - return false; - } - - isLoaded(){ - return this.loaded; - } - - getBoundingSphere(){ - return this.boundingSphere; - } - - getBoundingBox(){ - return this.boundingBox; - } - - getChildren(){ - let children = []; - - for (let i = 0; i < 8; i++) { - if (this.children[i]) { - children.push(this.children[i]); - } - } - - return children; - } - - getBoundingBox(){ - return this.boundingBox; - } - - getURL(){ - let url = ''; - - let version = this.pcoGeometry.loader.version; - - if (version.equalOrHigher('1.5')) { - url = this.pcoGeometry.octreeDir + '/' + this.getHierarchyPath() + '/' + this.name; - } else if (version.equalOrHigher('1.4')) { - url = this.pcoGeometry.octreeDir + '/' + this.name; - } else if (version.upTo('1.3')) { - url = this.pcoGeometry.octreeDir + '/' + this.name; - } - - return url; - } - - getHierarchyPath(){ - let path = 'r/'; - - let hierarchyStepSize = this.pcoGeometry.hierarchyStepSize; - let indices = this.name.substr(1); - - let numParts = Math.floor(indices.length / hierarchyStepSize); - for (let i = 0; i < numParts; i++) { - path += indices.substr(i * hierarchyStepSize, hierarchyStepSize) + '/'; - } - - path = path.slice(0, -1); - - return path; - } - - addChild(child) { - this.children[child.index] = child; - child.parent = this; - } - - load(){ - if (this.loading === true || this.loaded === true || Potree.numNodesLoading >= Potree.maxNodesLoading) { - return; - } - - this.loading = true; - - Potree.numNodesLoading++; - - if (this.pcoGeometry.loader.version.equalOrHigher('1.5')) { - if ((this.level % this.pcoGeometry.hierarchyStepSize) === 0 && this.hasChildren) { - this.loadHierachyThenPoints(); - } else { - this.loadPoints(); - } - } else { - this.loadPoints(); - } - } - - loadPoints(){ - this.pcoGeometry.loader.load(this); - } - - loadHierachyThenPoints(){ - let node = this; - - // load hierarchy - let callback = function (node, hbuffer) { - - let tStart = performance.now(); - - let view = new DataView(hbuffer); - - let stack = []; - let children = view.getUint8(0); - let numPoints = view.getUint32(1, true); - node.numPoints = numPoints; - stack.push({children: children, numPoints: numPoints, name: node.name}); - - let decoded = []; - - let offset = 5; - while (stack.length > 0) { - let snode = stack.shift(); - let mask = 1; - for (let i = 0; i < 8; i++) { - if ((snode.children & mask) !== 0) { - let childName = snode.name + i; - - let childChildren = view.getUint8(offset); - let childNumPoints = view.getUint32(offset + 1, true); - - stack.push({children: childChildren, numPoints: childNumPoints, name: childName}); - - decoded.push({children: childChildren, numPoints: childNumPoints, name: childName}); - - offset += 5; - } - - mask = mask * 2; - } - - if (offset === hbuffer.byteLength) { - break; - } - } - - // console.log(decoded); - - let nodes = {}; - nodes[node.name] = node; - let pco = node.pcoGeometry; - - for (let i = 0; i < decoded.length; i++) { - let name = decoded[i].name; - let decodedNumPoints = decoded[i].numPoints; - let index = parseInt(name.charAt(name.length - 1)); - let parentName = name.substring(0, name.length - 1); - let parentNode = nodes[parentName]; - let level = name.length - 1; - let boundingBox = Utils.createChildAABB(parentNode.boundingBox, index); - - let currentNode = new PointCloudOctreeGeometryNode(name, pco, boundingBox); - currentNode.level = level; - currentNode.numPoints = decodedNumPoints; - currentNode.hasChildren = decoded[i].children > 0; - currentNode.spacing = pco.spacing / Math.pow(2, level); - parentNode.addChild(currentNode); - nodes[name] = currentNode; - } - - let duration = performance.now() - tStart; - if(duration > 5){ - let msg = `duration: ${duration}ms, numNodes: ${decoded.length}`; - console.log(msg); - } - - node.loadPoints(); - }; - if ((node.level % node.pcoGeometry.hierarchyStepSize) === 0) { - // let hurl = node.pcoGeometry.octreeDir + "/../hierarchy/" + node.name + ".hrc"; - let hurl = node.pcoGeometry.octreeDir + '/' + node.getHierarchyPath() + '/' + node.name + '.hrc'; - - let xhr = XHRFactory.createXMLHttpRequest(); - xhr.open('GET', hurl, true); - xhr.responseType = 'arraybuffer'; - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - xhr.onreadystatechange = () => { - if (xhr.readyState === 4) { - if (xhr.status === 200 || xhr.status === 0) { - let hbuffer = xhr.response; - callback(node, hbuffer); - } else { - console.log('Failed to load file! HTTP status: ' + xhr.status + ', file: ' + hurl); - Potree.numNodesLoading--; - } - } - }; - try { - xhr.send(null); - } catch (e) { - console.log('fehler beim laden der punktwolke: ' + e); - } - } - } - - getNumPoints(){ - return this.numPoints; - } - - dispose(){ - if (this.geometry && this.parent != null) { - this.geometry.dispose(); - this.geometry = null; - this.loaded = false; - - this.dispatchEvent( { type: 'dispose' } ); - - for (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) { - let handler = this.oneTimeDisposeHandlers[i]; - handler(); - } - this.oneTimeDisposeHandlers = []; - } - } - - } - - PointCloudOctreeGeometryNode.IDCount = 0; - - // ------------------------------------------- - // to get a ready to use gradient array from a chroma.js gradient: - // http://gka.github.io/chroma.js/ - // ------------------------------------------- - // - // let stops = []; - // for(let i = 0; i <= 10; i++){ - // let range = chroma.scale(['yellow', 'navy']).mode('lch').domain([10,0])(i)._rgb - // .slice(0, 3) - // .map(v => (v / 255).toFixed(4)) - // .join(", "); - // - // let line = `[${i / 10}, new THREE.Color(${range})],`; - // - // stops.push(line); - // } - // stops.join("\n"); - // - // - // - // ------------------------------------------- - // to get a ready to use gradient array from matplotlib: - // ------------------------------------------- - // import matplotlib.pyplot as plt - // import matplotlib.colors as colors - // - // norm = colors.Normalize(vmin=0,vmax=1) - // cmap = plt.cm.viridis - // - // for i in range(0,11): - // u = i / 10 - // rgb = cmap(norm(u))[0:3] - // rgb = ["{0:.3f}".format(v) for v in rgb] - // rgb = "[" + str(u) + ", new THREE.Color(" + ", ".join(rgb) + ")]," - // print(rgb) - - let Gradients = { - // From chroma spectral http://gka.github.io/chroma.js/ - SPECTRAL: [ - [0, new THREE.Color(0.3686, 0.3098, 0.6353)], - [0.1, new THREE.Color(0.1961, 0.5333, 0.7412)], - [0.2, new THREE.Color(0.4000, 0.7608, 0.6471)], - [0.3, new THREE.Color(0.6706, 0.8667, 0.6431)], - [0.4, new THREE.Color(0.9020, 0.9608, 0.5961)], - [0.5, new THREE.Color(1.0000, 1.0000, 0.7490)], - [0.6, new THREE.Color(0.9961, 0.8784, 0.5451)], - [0.7, new THREE.Color(0.9922, 0.6824, 0.3804)], - [0.8, new THREE.Color(0.9569, 0.4275, 0.2627)], - [0.9, new THREE.Color(0.8353, 0.2431, 0.3098)], - [1, new THREE.Color(0.6196, 0.0039, 0.2588)] - ], - PLASMA: [ - [0.0, new THREE.Color(0.241, 0.015, 0.610)], - [0.1, new THREE.Color(0.387, 0.001, 0.654)], - [0.2, new THREE.Color(0.524, 0.025, 0.653)], - [0.3, new THREE.Color(0.651, 0.125, 0.596)], - [0.4, new THREE.Color(0.752, 0.227, 0.513)], - [0.5, new THREE.Color(0.837, 0.329, 0.431)], - [0.6, new THREE.Color(0.907, 0.435, 0.353)], - [0.7, new THREE.Color(0.963, 0.554, 0.272)], - [0.8, new THREE.Color(0.992, 0.681, 0.195)], - [0.9, new THREE.Color(0.987, 0.822, 0.144)], - [1.0, new THREE.Color(0.940, 0.975, 0.131)] - ], - YELLOW_GREEN: [ - [0, new THREE.Color(0.1647, 0.2824, 0.3451)], - [0.1, new THREE.Color(0.1338, 0.3555, 0.4227)], - [0.2, new THREE.Color(0.0610, 0.4319, 0.4864)], - [0.3, new THREE.Color(0.0000, 0.5099, 0.5319)], - [0.4, new THREE.Color(0.0000, 0.5881, 0.5569)], - [0.5, new THREE.Color(0.1370, 0.6650, 0.5614)], - [0.6, new THREE.Color(0.2906, 0.7395, 0.5477)], - [0.7, new THREE.Color(0.4453, 0.8099, 0.5201)], - [0.8, new THREE.Color(0.6102, 0.8748, 0.4850)], - [0.9, new THREE.Color(0.7883, 0.9323, 0.4514)], - [1, new THREE.Color(0.9804, 0.9804, 0.4314)] - ], - VIRIDIS: [ - [0.0, new THREE.Color(0.267, 0.005, 0.329)], - [0.1, new THREE.Color(0.283, 0.141, 0.458)], - [0.2, new THREE.Color(0.254, 0.265, 0.530)], - [0.3, new THREE.Color(0.207, 0.372, 0.553)], - [0.4, new THREE.Color(0.164, 0.471, 0.558)], - [0.5, new THREE.Color(0.128, 0.567, 0.551)], - [0.6, new THREE.Color(0.135, 0.659, 0.518)], - [0.7, new THREE.Color(0.267, 0.749, 0.441)], - [0.8, new THREE.Color(0.478, 0.821, 0.318)], - [0.9, new THREE.Color(0.741, 0.873, 0.150)], - [1.0, new THREE.Color(0.993, 0.906, 0.144)] - ], - INFERNO: [ - [0.0, new THREE.Color(0.077, 0.042, 0.206)], - [0.1, new THREE.Color(0.225, 0.036, 0.388)], - [0.2, new THREE.Color(0.373, 0.074, 0.432)], - [0.3, new THREE.Color(0.522, 0.128, 0.420)], - [0.4, new THREE.Color(0.665, 0.182, 0.370)], - [0.5, new THREE.Color(0.797, 0.255, 0.287)], - [0.6, new THREE.Color(0.902, 0.364, 0.184)], - [0.7, new THREE.Color(0.969, 0.516, 0.063)], - [0.8, new THREE.Color(0.988, 0.683, 0.072)], - [0.9, new THREE.Color(0.961, 0.859, 0.298)], - [1.0, new THREE.Color(0.988, 0.998, 0.645)] - ], - GRAYSCALE: [ - [0, new THREE.Color(0, 0, 0)], - [1, new THREE.Color(1, 1, 1)] - ], - // 16 samples of the TURBU color scheme - // values taken from: https://gist.github.com/mikhailov-work/ee72ba4191942acecc03fe6da94fc73f - // original file licensed under Apache-2.0 - TURBO: [ - [0.00, new THREE.Color(0.18995, 0.07176, 0.23217)], - [0.07, new THREE.Color(0.25107, 0.25237, 0.63374)], - [0.13, new THREE.Color(0.27628, 0.42118, 0.89123)], - [0.20, new THREE.Color(0.25862, 0.57958, 0.99876)], - [0.27, new THREE.Color(0.15844, 0.73551, 0.92305)], - [0.33, new THREE.Color(0.09267, 0.86554, 0.7623)], - [0.40, new THREE.Color(0.19659, 0.94901, 0.59466)], - [0.47, new THREE.Color(0.42778, 0.99419, 0.38575)], - [0.53, new THREE.Color(0.64362, 0.98999, 0.23356)], - [0.60, new THREE.Color(0.80473, 0.92452, 0.20459)], - [0.67, new THREE.Color(0.93301, 0.81236, 0.22667)], - [0.73, new THREE.Color(0.99314, 0.67408, 0.20348)], - [0.80, new THREE.Color(0.9836, 0.49291, 0.12849)], - [0.87, new THREE.Color(0.92105, 0.31489, 0.05475)], - [0.93, new THREE.Color(0.81608, 0.18462, 0.01809)], - [1.00, new THREE.Color(0.66449, 0.08436, 0.00424)], - ], - RAINBOW: [ - [0, new THREE.Color(0.278, 0, 0.714)], - [1 / 6, new THREE.Color(0, 0, 1)], - [2 / 6, new THREE.Color(0, 1, 1)], - [3 / 6, new THREE.Color(0, 1, 0)], - [4 / 6, new THREE.Color(1, 1, 0)], - [5 / 6, new THREE.Color(1, 0.64, 0)], - [1, new THREE.Color(1, 0, 0)] - ], - CONTOUR: [ - [0.00, new THREE.Color(0, 0, 0)], - [0.03, new THREE.Color(0, 0, 0)], - [0.04, new THREE.Color(1, 1, 1)], - [1.00, new THREE.Color(1, 1, 1)] - ], - }; - - let Shaders = {}; - - Shaders["pointcloud.vs"] = ` -precision highp float; -precision highp int; - -#define max_clip_polygons 8 -#define PI 3.141592653589793 - -attribute vec3 position; -attribute vec3 color; -attribute float intensity; -attribute float classification; -attribute float returnNumber; -attribute float numberOfReturns; -attribute float pointSourceID; -attribute vec4 indices; -attribute float spacing; -attribute float gpsTime; -attribute vec3 normal; -attribute float aExtra; - -uniform mat4 modelMatrix; -uniform mat4 modelViewMatrix; -uniform mat4 projectionMatrix; -uniform mat4 viewMatrix; -uniform mat4 uViewInv; - -uniform float uScreenWidth; -uniform float uScreenHeight; -uniform float fov; -uniform float near; -uniform float far; - -uniform bool uDebug; - -uniform bool uUseOrthographicCamera; -uniform float uOrthoWidth; -uniform float uOrthoHeight; - -#define CLIPTASK_NONE 0 -#define CLIPTASK_HIGHLIGHT 1 -#define CLIPTASK_SHOW_INSIDE 2 -#define CLIPTASK_SHOW_OUTSIDE 3 - -#define CLIPMETHOD_INSIDE_ANY 0 -#define CLIPMETHOD_INSIDE_ALL 1 - -uniform int clipTask; -uniform int clipMethod; -#if defined(num_clipboxes) && num_clipboxes > 0 - uniform mat4 clipBoxes[num_clipboxes]; -#endif - -#if defined(num_clipspheres) && num_clipspheres > 0 - uniform mat4 uClipSpheres[num_clipspheres]; -#endif - -#if defined(num_clippolygons) && num_clippolygons > 0 - uniform int uClipPolygonVCount[num_clippolygons]; - uniform vec3 uClipPolygonVertices[num_clippolygons * 8]; - uniform mat4 uClipPolygonWVP[num_clippolygons]; -#endif - - -uniform float size; -uniform float minSize; -uniform float maxSize; - -uniform float uPCIndex; -uniform float uOctreeSpacing; -uniform float uNodeSpacing; -uniform float uOctreeSize; -uniform vec3 uBBSize; -uniform float uLevel; -uniform float uVNStart; -uniform bool uIsLeafNode; - -uniform vec3 uColor; -uniform float uOpacity; - -uniform vec2 elevationRange; -uniform vec2 intensityRange; - -uniform vec2 uFilterReturnNumberRange; -uniform vec2 uFilterNumberOfReturnsRange; -uniform vec2 uFilterPointSourceIDClipRange; -uniform vec2 uFilterGPSTimeClipRange; -uniform float uGpsScale; -uniform float uGpsOffset; - -uniform vec2 uNormalizedGpsBufferRange; - -uniform vec3 uIntensity_gbc; -uniform vec3 uRGB_gbc; -uniform vec3 uExtra_gbc; - -uniform float uTransition; -uniform float wRGB; -uniform float wIntensity; -uniform float wElevation; -uniform float wClassification; -uniform float wReturnNumber; -uniform float wSourceID; - -uniform vec2 uExtraNormalizedRange; -uniform vec2 uExtraRange; -uniform float uExtraScale; -uniform float uExtraOffset; - -uniform vec3 uShadowColor; - -uniform sampler2D visibleNodes; -uniform sampler2D gradient; -uniform sampler2D classificationLUT; - -#if defined(color_type_matcap) -uniform sampler2D matcapTextureUniform; -#endif -uniform bool backfaceCulling; - -#if defined(num_shadowmaps) && num_shadowmaps > 0 -uniform sampler2D uShadowMap[num_shadowmaps]; -uniform mat4 uShadowWorldView[num_shadowmaps]; -uniform mat4 uShadowProj[num_shadowmaps]; -#endif - -varying vec3 vColor; -varying float vLogDepth; -varying vec3 vViewPosition; -varying float vRadius; -varying float vPointSize; - - -float round(float number){ - return floor(number + 0.5); -} - -// -// ### ######## ### ######## ######## #### ## ## ######## ###### #### ######## ######## ###### -// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## -// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## -// ## ## ## ## ## ## ######## ## ## ## ## ###### ###### ## ## ###### ###### -// ######### ## ## ######### ## ## ## ## ## ## ## ## ## ## ## -// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## -// ## ## ######## ## ## ## ## #### ### ######## ###### #### ######## ######## ###### -// - - -// --------------------- -// OCTREE -// --------------------- - -#if (defined(adaptive_point_size) || defined(color_type_level_of_detail)) && defined(tree_type_octree) -/** - * number of 1-bits up to inclusive index position - * number is treated as if it were an integer in the range 0-255 - * - */ -int numberOfOnes(int number, int index){ - int numOnes = 0; - int tmp = 128; - for(int i = 7; i >= 0; i--){ - - if(number >= tmp){ - number = number - tmp; - - if(i <= index){ - numOnes++; - } - } - - tmp = tmp / 2; - } - - return numOnes; -} - - -/** - * checks whether the bit at index is 1 - * number is treated as if it were an integer in the range 0-255 - * - */ -bool isBitSet(int number, int index){ - - // weird multi else if due to lack of proper array, int and bitwise support in WebGL 1.0 - int powi = 1; - if(index == 0){ - powi = 1; - }else if(index == 1){ - powi = 2; - }else if(index == 2){ - powi = 4; - }else if(index == 3){ - powi = 8; - }else if(index == 4){ - powi = 16; - }else if(index == 5){ - powi = 32; - }else if(index == 6){ - powi = 64; - }else if(index == 7){ - powi = 128; - }else{ - return false; - } - - int ndp = number / powi; - - return mod(float(ndp), 2.0) != 0.0; -} - - -/** - * find the LOD at the point position - */ -float getLOD(){ - - vec3 offset = vec3(0.0, 0.0, 0.0); - int iOffset = int(uVNStart); - float depth = uLevel; - for(float i = 0.0; i <= 30.0; i++){ - float nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0); - - vec3 index3d = (position-offset) / nodeSizeAtLevel; - index3d = floor(index3d + 0.5); - int index = int(round(4.0 * index3d.x + 2.0 * index3d.y + index3d.z)); - - vec4 value = texture2D(visibleNodes, vec2(float(iOffset) / 2048.0, 0.0)); - int mask = int(round(value.r * 255.0)); - - if(isBitSet(mask, index)){ - // there are more visible child nodes at this position - int advanceG = int(round(value.g * 255.0)) * 256; - int advanceB = int(round(value.b * 255.0)); - int advanceChild = numberOfOnes(mask, index - 1); - int advance = advanceG + advanceB + advanceChild; - - iOffset = iOffset + advance; - - depth++; - }else{ - // no more visible child nodes at this position - //return value.a * 255.0; - - float lodOffset = (255.0 * value.a) / 10.0 - 10.0; - - return depth + lodOffset; - } - - offset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d; - } - - return depth; -} - -float getSpacing(){ - vec3 offset = vec3(0.0, 0.0, 0.0); - int iOffset = int(uVNStart); - float depth = uLevel; - float spacing = uNodeSpacing; - for(float i = 0.0; i <= 30.0; i++){ - float nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0); - - vec3 index3d = (position-offset) / nodeSizeAtLevel; - index3d = floor(index3d + 0.5); - int index = int(round(4.0 * index3d.x + 2.0 * index3d.y + index3d.z)); - - vec4 value = texture2D(visibleNodes, vec2(float(iOffset) / 2048.0, 0.0)); - int mask = int(round(value.r * 255.0)); - float spacingFactor = value.a; - - if(i > 0.0){ - spacing = spacing / (255.0 * spacingFactor); - } - - - if(isBitSet(mask, index)){ - // there are more visible child nodes at this position - int advanceG = int(round(value.g * 255.0)) * 256; - int advanceB = int(round(value.b * 255.0)); - int advanceChild = numberOfOnes(mask, index - 1); - int advance = advanceG + advanceB + advanceChild; - - iOffset = iOffset + advance; - - //spacing = spacing / (255.0 * spacingFactor); - //spacing = spacing / 3.0; - - depth++; - }else{ - // no more visible child nodes at this position - return spacing; - } - - offset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d; - } - - return spacing; -} - -float getPointSizeAttenuation(){ - return pow(2.0, getLOD()); -} - - -#endif - - -// --------------------- -// KD-TREE -// --------------------- - -#if (defined(adaptive_point_size) || defined(color_type_level_of_detail)) && defined(tree_type_kdtree) - -float getLOD(){ - vec3 offset = vec3(0.0, 0.0, 0.0); - float iOffset = 0.0; - float depth = 0.0; - - - vec3 size = uBBSize; - vec3 pos = position; - - for(float i = 0.0; i <= 1000.0; i++){ - - vec4 value = texture2D(visibleNodes, vec2(iOffset / 2048.0, 0.0)); - - int children = int(value.r * 255.0); - float next = value.g * 255.0; - int split = int(value.b * 255.0); - - if(next == 0.0){ - return depth; - } - - vec3 splitv = vec3(0.0, 0.0, 0.0); - if(split == 1){ - splitv.x = 1.0; - }else if(split == 2){ - splitv.y = 1.0; - }else if(split == 4){ - splitv.z = 1.0; - } - - iOffset = iOffset + next; - - float factor = length(pos * splitv / size); - if(factor < 0.5){ - // left - if(children == 0 || children == 2){ - return depth; - } - }else{ - // right - pos = pos - size * splitv * 0.5; - if(children == 0 || children == 1){ - return depth; - } - if(children == 3){ - iOffset = iOffset + 1.0; - } - } - size = size * ((1.0 - (splitv + 1.0) / 2.0) + 0.5); - - depth++; - } - - - return depth; -} - -float getPointSizeAttenuation(){ - return 0.5 * pow(1.3, getLOD()); -} - -#endif - - - -// -// ### ######## ######## ######## #### ######## ## ## ######## ######## ###### -// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## -// ## ## ## ## ## ## ## ## ## ## ## ## ## ## -// ## ## ## ## ######## ## ######## ## ## ## ###### ###### -// ######### ## ## ## ## ## ## ## ## ## ## ## ## -// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## -// ## ## ## ## ## ## #### ######## ####### ## ######## ###### -// - - - -// formula adapted from: http://www.dfstudios.co.uk/articles/programming/image-programming-algorithms/image-processing-algorithms-part-5-contrast-adjustment/ -float getContrastFactor(float contrast){ - return (1.0158730158730156 * (contrast + 1.0)) / (1.0158730158730156 - contrast); -} - -vec3 getRGB(){ - vec3 rgb = color; - - rgb = pow(rgb, vec3(uRGB_gbc.x)); - rgb = rgb + uRGB_gbc.y; - rgb = (rgb - 0.5) * getContrastFactor(uRGB_gbc.z) + 0.5; - rgb = clamp(rgb, 0.0, 1.0); - - return rgb; -} - -float getIntensity(){ - float w = (intensity - intensityRange.x) / (intensityRange.y - intensityRange.x); - w = pow(w, uIntensity_gbc.x); - w = w + uIntensity_gbc.y; - w = (w - 0.5) * getContrastFactor(uIntensity_gbc.z) + 0.5; - w = clamp(w, 0.0, 1.0); - - return w; -} - -vec3 getGpsTime(){ - - float w = (gpsTime + uGpsOffset) * uGpsScale; - - - vec3 c = texture2D(gradient, vec2(w, 1.0 - w)).rgb; - - - // vec2 r = uNormalizedGpsBufferRange; - // float w = gpsTime * (r.y - r.x) + r.x; - // w = clamp(w, 0.0, 1.0); - // vec3 c = texture2D(gradient, vec2(w,1.0-w)).rgb; - - return c; -} - -vec3 getElevation(){ - vec4 world = modelMatrix * vec4( position, 1.0 ); - float w = (world.z - elevationRange.x) / (elevationRange.y - elevationRange.x); - vec3 cElevation = texture2D(gradient, vec2(w,1.0-w)).rgb; - - return cElevation; -} - -vec4 getClassification(){ - vec2 uv = vec2(classification / 255.0, 0.5); - vec4 classColor = texture2D(classificationLUT, uv); - - return classColor; -} - -vec3 getReturns(){ - - // 0b 00_000_111 - float rn = mod(returnNumber, 8.0); - // 0b 00_111_000 - float nr = mod(returnNumber / 8.0, 8.0); - - if(nr <= 1.0){ - return vec3(1.0, 0.0, 0.0); - }else{ - return vec3(0.0, 1.0, 0.0); - } - - // return vec3(nr / 4.0, 0.0, 0.0); - - // if(nr == 1.0){ - // return vec3(1.0, 1.0, 0.0); - // }else{ - // if(rn == 1.0){ - // return vec3(1.0, 0.0, 0.0); - // }else if(rn == nr){ - // return vec3(0.0, 0.0, 1.0); - // }else{ - // return vec3(0.0, 1.0, 0.0); - // } - // } - - // if(numberOfReturns == 1.0){ - // return vec3(1.0, 1.0, 0.0); - // }else{ - // if(returnNumber == 1.0){ - // return vec3(1.0, 0.0, 0.0); - // }else if(returnNumber == numberOfReturns){ - // return vec3(0.0, 0.0, 1.0); - // }else{ - // return vec3(0.0, 1.0, 0.0); - // } - // } -} - -vec3 getReturnNumber(){ - if(numberOfReturns == 1.0){ - return vec3(1.0, 1.0, 0.0); - }else{ - if(returnNumber == 1.0){ - return vec3(1.0, 0.0, 0.0); - }else if(returnNumber == numberOfReturns){ - return vec3(0.0, 0.0, 1.0); - }else{ - return vec3(0.0, 1.0, 0.0); - } - } -} - -vec3 getNumberOfReturns(){ - float value = numberOfReturns; - - float w = value / 6.0; - - vec3 color = texture2D(gradient, vec2(w, 1.0 - w)).rgb; - - return color; -} - -vec3 getSourceID(){ - float w = mod(pointSourceID, 10.0) / 10.0; - return texture2D(gradient, vec2(w,1.0 - w)).rgb; -} - -vec3 getCompositeColor(){ - vec3 c; - float w; - - c += wRGB * getRGB(); - w += wRGB; - - c += wIntensity * getIntensity() * vec3(1.0, 1.0, 1.0); - w += wIntensity; - - c += wElevation * getElevation(); - w += wElevation; - - c += wReturnNumber * getReturnNumber(); - w += wReturnNumber; - - c += wSourceID * getSourceID(); - w += wSourceID; - - vec4 cl = wClassification * getClassification(); - c += cl.a * cl.rgb; - w += wClassification * cl.a; - - c = c / w; - - if(w == 0.0){ - //c = color; - gl_Position = vec4(100.0, 100.0, 100.0, 0.0); - } - - return c; -} - - -vec3 getNormal(){ - //vec3 n_hsv = vec3( modelMatrix * vec4( normal, 0.0 )) * 0.5 + 0.5; // (n_world.xyz + vec3(1.,1.,1.)) / 2.; - vec3 n_view = normalize( vec3(modelViewMatrix * vec4( normal, 0.0 )) ); - return n_view; -} -bool applyBackfaceCulling() { - // Black not facing vertices / Backface culling - vec3 e = normalize(vec3(modelViewMatrix * vec4( position, 1. ))); - vec3 n = getNormal(); // normalize( vec3(modelViewMatrix * vec4( normal, 0.0 )) ); - - if((uUseOrthographicCamera && n.z <= 0.) || (!uUseOrthographicCamera && dot( n, e ) >= 0.)) { - return true; - } else { - return false; - } -} - -#if defined(color_type_matcap) -// Matcap Material -vec3 getMatcap(){ - vec3 eye = normalize( vec3( modelViewMatrix * vec4( position, 1. ) ) ); - if(uUseOrthographicCamera) { - eye = vec3(0., 0., -1.); - } - vec3 r_en = reflect( eye, getNormal() ); // or r_en = e - 2. * dot( n, e ) * n; - float m = 2. * sqrt(pow( r_en.x, 2. ) + pow( r_en.y, 2. ) + pow( r_en.z + 1., 2. )); - vec2 vN = r_en.xy / m + .5; - return texture2D(matcapTextureUniform, vN).rgb; -} -#endif - -vec3 getExtra(){ - - float w = (aExtra + uExtraOffset) * uExtraScale; - w = clamp(w, 0.0, 1.0); - - vec3 color = texture2D(gradient, vec2(w,1.0-w)).rgb; - - // vec2 r = uExtraNormalizedRange; - - // float w = aExtra * (r.y - r.x) + r.x; - - // w = (w - uExtraRange.x) / (uExtraRange.y - uExtraRange.x); - - // w = clamp(w, 0.0, 1.0); - - // vec3 color = texture2D(gradient, vec2(w,1.0-w)).rgb; - - return color; -} - -vec3 getColor(){ - vec3 color; - - #ifdef color_type_rgba - color = getRGB(); - #elif defined color_type_height || defined color_type_elevation - color = getElevation(); - #elif defined color_type_rgb_height - vec3 cHeight = getElevation(); - color = (1.0 - uTransition) * getRGB() + uTransition * cHeight; - #elif defined color_type_depth - float linearDepth = gl_Position.w; - float expDepth = (gl_Position.z / gl_Position.w) * 0.5 + 0.5; - color = vec3(linearDepth, expDepth, 0.0); - //color = vec3(1.0, 0.5, 0.3); - #elif defined color_type_intensity - float w = getIntensity(); - color = vec3(w, w, w); - #elif defined color_type_gps_time - color = getGpsTime(); - #elif defined color_type_intensity_gradient - float w = getIntensity(); - color = texture2D(gradient, vec2(w,1.0-w)).rgb; - #elif defined color_type_color - color = uColor; - #elif defined color_type_level_of_detail - float depth = getLOD(); - float w = depth / 10.0; - color = texture2D(gradient, vec2(w,1.0-w)).rgb; - #elif defined color_type_indices - color = indices.rgb; - #elif defined color_type_classification - vec4 cl = getClassification(); - color = cl.rgb; - #elif defined color_type_return_number - color = getReturnNumber(); - #elif defined color_type_returns - color = getReturns(); - #elif defined color_type_number_of_returns - color = getNumberOfReturns(); - #elif defined color_type_source_id - color = getSourceID(); - #elif defined color_type_point_source_id - color = getSourceID(); - #elif defined color_type_normal - color = (modelMatrix * vec4(normal, 0.0)).xyz; - #elif defined color_type_phong - color = color; - #elif defined color_type_composite - color = getCompositeColor(); - #elif defined color_type_matcap - color = getMatcap(); - #else - color = getExtra(); - #endif - - if (backfaceCulling && applyBackfaceCulling()) { - color = vec3(0.); - } - - return color; -} - -float getPointSize(){ - float pointSize = 1.0; - - float slope = tan(fov / 2.0); - float projFactor = -0.5 * uScreenHeight / (slope * vViewPosition.z); - - float r = uOctreeSpacing * 1.7; - vRadius = r; - #if defined fixed_point_size - pointSize = size; - #elif defined attenuated_point_size - if(uUseOrthographicCamera){ - pointSize = size; - }else{ - pointSize = size * spacing * projFactor; - //pointSize = pointSize * projFactor; - } - #elif defined adaptive_point_size - if(uUseOrthographicCamera) { - float worldSpaceSize = 1.0 * size * r / getPointSizeAttenuation(); - pointSize = (worldSpaceSize / uOrthoWidth) * uScreenWidth; - } else { - - // float leafSpacing = 0.122069092 * 8.0; - - // bool isLeafNode = getLOD() == 1000.0; - // if(isLeafNode){ - // // pointSize = size * spacing * projFactor; - - // float worldSpaceSize = size * leafSpacing; - // pointSize = worldSpaceSize * projFactor; - // }else{ - float worldSpaceSize = 1.0 * size * r / getPointSizeAttenuation(); - - // minimum world space size - // worldSpaceSize = max(worldSpaceSize, leafSpacing); - - pointSize = worldSpaceSize * projFactor; - // } - } - #endif - - pointSize = max(minSize, pointSize); - pointSize = min(maxSize, pointSize); - - vRadius = pointSize / projFactor; - - return pointSize; -} - -#if defined(num_clippolygons) && num_clippolygons > 0 -bool pointInClipPolygon(vec3 point, int polyIdx) { - - mat4 wvp = uClipPolygonWVP[polyIdx]; - //vec4 screenClipPos = uClipPolygonVP[polyIdx] * modelMatrix * vec4(point, 1.0); - //screenClipPos.xy = screenClipPos.xy / screenClipPos.w * 0.5 + 0.5; - - vec4 pointNDC = wvp * vec4(point, 1.0); - pointNDC.xy = pointNDC.xy / pointNDC.w; - - int j = uClipPolygonVCount[polyIdx] - 1; - bool c = false; - for(int i = 0; i < 8; i++) { - if(i == uClipPolygonVCount[polyIdx]) { - break; - } - - //vec4 verti = wvp * vec4(uClipPolygonVertices[polyIdx * 8 + i], 1); - //vec4 vertj = wvp * vec4(uClipPolygonVertices[polyIdx * 8 + j], 1); - - //verti.xy = verti.xy / verti.w; - //vertj.xy = vertj.xy / vertj.w; - - //verti.xy = verti.xy / verti.w * 0.5 + 0.5; - //vertj.xy = vertj.xy / vertj.w * 0.5 + 0.5; - - vec3 verti = uClipPolygonVertices[polyIdx * 8 + i]; - vec3 vertj = uClipPolygonVertices[polyIdx * 8 + j]; - - if( ((verti.y > pointNDC.y) != (vertj.y > pointNDC.y)) && - (pointNDC.x < (vertj.x-verti.x) * (pointNDC.y-verti.y) / (vertj.y-verti.y) + verti.x) ) { - c = !c; - } - j = i; - } - - return c; -} -#endif - -void doClipping(){ - - { - vec4 cl = getClassification(); - if(cl.a == 0.0){ - gl_Position = vec4(100.0, 100.0, 100.0, 0.0); - - return; - } - } - - #if defined(clip_return_number_enabled) - { // return number filter - vec2 range = uFilterReturnNumberRange; - if(returnNumber < range.x || returnNumber > range.y){ - gl_Position = vec4(100.0, 100.0, 100.0, 0.0); - - return; - } - } - #endif - - #if defined(clip_number_of_returns_enabled) - { // number of return filter - vec2 range = uFilterNumberOfReturnsRange; - if(numberOfReturns < range.x || numberOfReturns > range.y){ - gl_Position = vec4(100.0, 100.0, 100.0, 0.0); - - return; - } - } - #endif - - #if defined(clip_gps_enabled) - { // GPS time filter - float time = (gpsTime + uGpsOffset) * uGpsScale; - vec2 range = uFilterGPSTimeClipRange; - - if(time < range.x || time > range.y){ - gl_Position = vec4(100.0, 100.0, 100.0, 0.0); - - return; - } - } - #endif - - #if defined(clip_point_source_id_enabled) - { // point source id filter - vec2 range = uFilterPointSourceIDClipRange; - if(pointSourceID < range.x || pointSourceID > range.y){ - gl_Position = vec4(100.0, 100.0, 100.0, 0.0); - - return; - } - } - #endif - - int clipVolumesCount = 0; - int insideCount = 0; - - #if defined(num_clipboxes) && num_clipboxes > 0 - for(int i = 0; i < num_clipboxes; i++){ - vec4 clipPosition = clipBoxes[i] * modelMatrix * vec4( position, 1.0 ); - bool inside = -0.5 <= clipPosition.x && clipPosition.x <= 0.5; - inside = inside && -0.5 <= clipPosition.y && clipPosition.y <= 0.5; - inside = inside && -0.5 <= clipPosition.z && clipPosition.z <= 0.5; - - insideCount = insideCount + (inside ? 1 : 0); - clipVolumesCount++; - } - #endif - - #if defined(num_clippolygons) && num_clippolygons > 0 - for(int i = 0; i < num_clippolygons; i++) { - bool inside = pointInClipPolygon(position, i); - - insideCount = insideCount + (inside ? 1 : 0); - clipVolumesCount++; - } - #endif - - bool insideAny = insideCount > 0; - bool insideAll = (clipVolumesCount > 0) && (clipVolumesCount == insideCount); - - if(clipMethod == CLIPMETHOD_INSIDE_ANY){ - if(insideAny && clipTask == CLIPTASK_HIGHLIGHT){ - vColor.r += 0.5; - }else if(!insideAny && clipTask == CLIPTASK_SHOW_INSIDE){ - gl_Position = vec4(100.0, 100.0, 100.0, 1.0); - }else if(insideAny && clipTask == CLIPTASK_SHOW_OUTSIDE){ - gl_Position = vec4(100.0, 100.0, 100.0, 1.0); - } - }else if(clipMethod == CLIPMETHOD_INSIDE_ALL){ - if(insideAll && clipTask == CLIPTASK_HIGHLIGHT){ - vColor.r += 0.5; - }else if(!insideAll && clipTask == CLIPTASK_SHOW_INSIDE){ - gl_Position = vec4(100.0, 100.0, 100.0, 1.0); - }else if(insideAll && clipTask == CLIPTASK_SHOW_OUTSIDE){ - gl_Position = vec4(100.0, 100.0, 100.0, 1.0); - } - } -} - - - -// -// ## ## ### #### ## ## -// ### ### ## ## ## ### ## -// #### #### ## ## ## #### ## -// ## ### ## ## ## ## ## ## ## -// ## ## ######### ## ## #### -// ## ## ## ## ## ## ### -// ## ## ## ## #### ## ## -// - -void main() { - vec4 mvPosition = modelViewMatrix * vec4(position, 1.0 ); - vViewPosition = mvPosition.xyz; - gl_Position = projectionMatrix * mvPosition; - vLogDepth = log2(-mvPosition.z); - - // POINT SIZE - float pointSize = getPointSize(); - gl_PointSize = pointSize; - vPointSize = pointSize; - - // COLOR - vColor = getColor(); - - //gl_Position = vec4(0.0, 0.0, 0.0, 1.0); - //gl_Position = vec4(position.xzy / 1000.0, 1.0 ); - - //gl_PointSize = 5.0; - //vColor = vec3(1.0, 1.0, 1.0); - - // only for "replacing" approaches - // if(getLOD() != uLevel){ - // gl_Position = vec4(10.0, 10.0, 10.0, 1.0); - // } - - - #if defined hq_depth_pass - float originalDepth = gl_Position.w; - float adjustedDepth = originalDepth + 2.0 * vRadius; - float adjust = adjustedDepth / originalDepth; - - mvPosition.xyz = mvPosition.xyz * adjust; - gl_Position = projectionMatrix * mvPosition; - #endif - - - // CLIPPING - doClipping(); - - #if defined(num_clipspheres) && num_clipspheres > 0 - for(int i = 0; i < num_clipspheres; i++){ - vec4 sphereLocal = uClipSpheres[i] * mvPosition; - - float distance = length(sphereLocal.xyz); - - if(distance < 1.0){ - float w = distance; - vec3 cGradient = texture2D(gradient, vec2(w, 1.0 - w)).rgb; - - vColor = cGradient; - //vColor = cGradient * 0.7 + vColor * 0.3; - } - } - #endif - - #if defined(num_shadowmaps) && num_shadowmaps > 0 - - const float sm_near = 0.1; - const float sm_far = 10000.0; - - for(int i = 0; i < num_shadowmaps; i++){ - vec3 viewPos = (uShadowWorldView[i] * vec4(position, 1.0)).xyz; - float distanceToLight = abs(viewPos.z); - - vec4 projPos = uShadowProj[i] * uShadowWorldView[i] * vec4(position, 1); - vec3 nc = projPos.xyz / projPos.w; - - float u = nc.x * 0.5 + 0.5; - float v = nc.y * 0.5 + 0.5; - - vec2 sampleStep = vec2(1.0 / (2.0*1024.0), 1.0 / (2.0*1024.0)) * 1.5; - vec2 sampleLocations[9]; - sampleLocations[0] = vec2(0.0, 0.0); - sampleLocations[1] = sampleStep; - sampleLocations[2] = -sampleStep; - sampleLocations[3] = vec2(sampleStep.x, -sampleStep.y); - sampleLocations[4] = vec2(-sampleStep.x, sampleStep.y); - - sampleLocations[5] = vec2(0.0, sampleStep.y); - sampleLocations[6] = vec2(0.0, -sampleStep.y); - sampleLocations[7] = vec2(sampleStep.x, 0.0); - sampleLocations[8] = vec2(-sampleStep.x, 0.0); - - float visibleSamples = 0.0; - float numSamples = 0.0; - - float bias = vRadius * 2.0; - - for(int j = 0; j < 9; j++){ - vec4 depthMapValue = texture2D(uShadowMap[i], vec2(u, v) + sampleLocations[j]); - - float linearDepthFromSM = depthMapValue.x + bias; - float linearDepthFromViewer = distanceToLight; - - if(linearDepthFromSM > linearDepthFromViewer){ - visibleSamples += 1.0; - } - - numSamples += 1.0; - } - - float visibility = visibleSamples / numSamples; - - if(u < 0.0 || u > 1.0 || v < 0.0 || v > 1.0 || nc.x < -1.0 || nc.x > 1.0 || nc.y < -1.0 || nc.y > 1.0 || nc.z < -1.0 || nc.z > 1.0){ - //vColor = vec3(0.0, 0.0, 0.2); - }else{ - //vColor = vec3(1.0, 1.0, 1.0) * visibility + vec3(1.0, 1.0, 1.0) * vec3(0.5, 0.0, 0.0) * (1.0 - visibility); - vColor = vColor * visibility + vColor * uShadowColor * (1.0 - visibility); - } - - - } - - #endif -} -`; - - Shaders["pointcloud.fs"] = ` -#if defined paraboloid_point_shape - #extension GL_EXT_frag_depth : enable -#endif - -precision highp float; -precision highp int; - -uniform mat4 viewMatrix; -uniform mat4 uViewInv; -uniform mat4 uProjInv; -uniform vec3 cameraPosition; - - -uniform mat4 projectionMatrix; -uniform float uOpacity; - -uniform float blendHardness; -uniform float blendDepthSupplement; -uniform float fov; -uniform float uSpacing; -uniform float near; -uniform float far; -uniform float uPCIndex; -uniform float uScreenWidth; -uniform float uScreenHeight; - -varying vec3 vColor; -varying float vLogDepth; -varying vec3 vViewPosition; -varying float vRadius; -varying float vPointSize; -varying vec3 vPosition; - - -float specularStrength = 1.0; - -void main() { - - vec3 color = vColor; - float depth = gl_FragCoord.z; - - #if defined(circle_point_shape) || defined(paraboloid_point_shape) - float u = 2.0 * gl_PointCoord.x - 1.0; - float v = 2.0 * gl_PointCoord.y - 1.0; - #endif - - #if defined(circle_point_shape) - float cc = u*u + v*v; - if(cc > 1.0){ - discard; - } - #endif - - #if defined color_type_indices - gl_FragColor = vec4(color, uPCIndex / 255.0); - #else - gl_FragColor = vec4(color, uOpacity); - #endif - - #if defined paraboloid_point_shape - float wi = 0.0 - ( u*u + v*v); - vec4 pos = vec4(vViewPosition, 1.0); - pos.z += wi * vRadius; - float linearDepth = -pos.z; - pos = projectionMatrix * pos; - pos = pos / pos.w; - float expDepth = pos.z; - depth = (pos.z + 1.0) / 2.0; - gl_FragDepthEXT = depth; - - #if defined(color_type_depth) - color.r = linearDepth; - color.g = expDepth; - #endif - - #if defined(use_edl) - gl_FragColor.a = log2(linearDepth); - #endif - - #else - #if defined(use_edl) - gl_FragColor.a = vLogDepth; - #endif - #endif - - #if defined(weighted_splats) - float distance = 2.0 * length(gl_PointCoord.xy - 0.5); - float weight = max(0.0, 1.0 - distance); - weight = pow(weight, 1.5); - - gl_FragColor.a = weight; - gl_FragColor.xyz = gl_FragColor.xyz * weight; - #endif - - //gl_FragColor = vec4(0.0, 0.7, 0.0, 1.0); - -} - - -`; - - Shaders["pointcloud_sm.vs"] = ` -precision mediump float; -precision mediump int; - -attribute vec3 position; -attribute vec3 color; - -uniform mat4 modelMatrix; -uniform mat4 modelViewMatrix; -uniform mat4 projectionMatrix; -uniform mat4 viewMatrix; - -uniform float uScreenWidth; -uniform float uScreenHeight; -uniform float near; -uniform float far; - -uniform float uSpacing; -uniform float uOctreeSize; -uniform float uLevel; -uniform float uVNStart; - -uniform sampler2D visibleNodes; - -varying float vLinearDepth; -varying vec3 vColor; - -#define PI 3.141592653589793 - - - -// --------------------- -// OCTREE -// --------------------- - -#if defined(adaptive_point_size) -/** - * number of 1-bits up to inclusive index position - * number is treated as if it were an integer in the range 0-255 - * - */ -float numberOfOnes(float number, float index){ - float tmp = mod(number, pow(2.0, index + 1.0)); - float numOnes = 0.0; - for(float i = 0.0; i < 8.0; i++){ - if(mod(tmp, 2.0) != 0.0){ - numOnes++; - } - tmp = floor(tmp / 2.0); - } - return numOnes; -} - - -/** - * checks whether the bit at index is 1 - * number is treated as if it were an integer in the range 0-255 - * - */ -bool isBitSet(float number, float index){ - return mod(floor(number / pow(2.0, index)), 2.0) != 0.0; -} - - -/** - * find the LOD at the point position - */ -float getLOD(){ - - vec3 offset = vec3(0.0, 0.0, 0.0); - float iOffset = uVNStart; - float depth = uLevel; - for(float i = 0.0; i <= 30.0; i++){ - float nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0); - - vec3 index3d = (position-offset) / nodeSizeAtLevel; - index3d = floor(index3d + 0.5); - float index = 4.0 * index3d.x + 2.0 * index3d.y + index3d.z; - - vec4 value = texture2D(visibleNodes, vec2(iOffset / 2048.0, 0.0)); - float mask = value.r * 255.0; - if(isBitSet(mask, index)){ - // there are more visible child nodes at this position - iOffset = iOffset + value.g * 255.0 * 256.0 + value.b * 255.0 + numberOfOnes(mask, index - 1.0); - depth++; - }else{ - // no more visible child nodes at this position - return depth; - } - - offset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d; - } - - return depth; -} - -#endif - -float getPointSize(){ - float pointSize = 1.0; - - float slope = tan(fov / 2.0); - float projFactor = -0.5 * uScreenHeight / (slope * vViewPosition.z); - - float r = uOctreeSpacing * 1.5; - vRadius = r; - #if defined fixed_point_size - pointSize = size; - #elif defined attenuated_point_size - if(uUseOrthographicCamera){ - pointSize = size; - }else{ - pointSize = pointSize * projFactor; - } - #elif defined adaptive_point_size - if(uUseOrthographicCamera) { - float worldSpaceSize = 1.5 * size * r / getPointSizeAttenuation(); - pointSize = (worldSpaceSize / uOrthoWidth) * uScreenWidth; - } else { - float worldSpaceSize = 1.5 * size * r / getPointSizeAttenuation(); - pointSize = worldSpaceSize * projFactor; - } - #endif - - pointSize = max(minSize, pointSize); - pointSize = min(maxSize, pointSize); - - vRadius = pointSize / projFactor; - - return pointSize; -} - - -void main() { - - vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 ); - vLinearDepth = gl_Position.w; - - float pointSize = getPointSize(); - gl_PointSize = pointSize; - -} -`; - - Shaders["pointcloud_sm.fs"] = ` -precision mediump float; -precision mediump int; - -varying vec3 vColor; -varying float vLinearDepth; - -void main() { - - //gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); - //gl_FragColor = vec4(vColor, 1.0); - //gl_FragColor = vec4(vLinearDepth, pow(vLinearDepth, 2.0), 0.0, 1.0); - gl_FragColor = vec4(vLinearDepth, vLinearDepth / 30.0, vLinearDepth / 30.0, 1.0); - -} - - -`; - - Shaders["normalize.vs"] = ` -precision mediump float; -precision mediump int; - -attribute vec3 position; -attribute vec2 uv; - -uniform mat4 projectionMatrix; -uniform mat4 modelViewMatrix; - -varying vec2 vUv; - -void main() { - vUv = uv; - gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0); -}`; - - Shaders["normalize.fs"] = ` -#extension GL_EXT_frag_depth : enable - -precision mediump float; -precision mediump int; - -uniform sampler2D uWeightMap; -uniform sampler2D uDepthMap; - -varying vec2 vUv; - -void main() { - float depth = texture2D(uDepthMap, vUv).r; - - if(depth >= 1.0){ - discard; - } - - gl_FragColor = vec4(depth, 1.0, 0.0, 1.0); - - vec4 color = texture2D(uWeightMap, vUv); - color = color / color.w; - - gl_FragColor = vec4(color.xyz, 1.0); - - gl_FragDepthEXT = depth; - - -}`; - - Shaders["normalize_and_edl.fs"] = ` -#extension GL_EXT_frag_depth : enable - -// -// adapted from the EDL shader code from Christian Boucheny in cloud compare: -// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL -// - -precision mediump float; -precision mediump int; - -uniform sampler2D uWeightMap; -uniform sampler2D uEDLMap; -uniform sampler2D uDepthMap; - -uniform float screenWidth; -uniform float screenHeight; -uniform vec2 neighbours[NEIGHBOUR_COUNT]; -uniform float edlStrength; -uniform float radius; - -varying vec2 vUv; - -float response(float depth){ - vec2 uvRadius = radius / vec2(screenWidth, screenHeight); - - float sum = 0.0; - - for(int i = 0; i < NEIGHBOUR_COUNT; i++){ - vec2 uvNeighbor = vUv + uvRadius * neighbours[i]; - - float neighbourDepth = texture2D(uEDLMap, uvNeighbor).a; - - if(neighbourDepth != 0.0){ - if(depth == 0.0){ - sum += 100.0; - }else{ - sum += max(0.0, depth - neighbourDepth); - } - } - } - - return sum / float(NEIGHBOUR_COUNT); -} - -void main() { - - float edlDepth = texture2D(uEDLMap, vUv).a; - float res = response(edlDepth); - float shade = exp(-res * 300.0 * edlStrength); - - float depth = texture2D(uDepthMap, vUv).r; - if(depth >= 1.0 && res == 0.0){ - discard; - } - - vec4 color = texture2D(uWeightMap, vUv); - color = color / color.w; - color = color * shade; - - gl_FragColor = vec4(color.xyz, 1.0); - - gl_FragDepthEXT = depth; -}`; - - Shaders["edl.vs"] = ` -precision mediump float; -precision mediump int; - -attribute vec3 position; -attribute vec2 uv; - -uniform mat4 projectionMatrix; -uniform mat4 modelViewMatrix; - -varying vec2 vUv; - -void main() { - vUv = uv; - - vec4 mvPosition = modelViewMatrix * vec4(position,1.0); - - gl_Position = projectionMatrix * mvPosition; -}`; - - Shaders["edl.fs"] = ` -#extension GL_EXT_frag_depth : enable - -// -// adapted from the EDL shader code from Christian Boucheny in cloud compare: -// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL -// - -precision mediump float; -precision mediump int; - -uniform float screenWidth; -uniform float screenHeight; -uniform vec2 neighbours[NEIGHBOUR_COUNT]; -uniform float edlStrength; -uniform float radius; -uniform float opacity; - -uniform float uNear; -uniform float uFar; - -uniform mat4 uProj; - -uniform sampler2D uEDLColor; -uniform sampler2D uEDLDepth; - -varying vec2 vUv; - -float response(float depth){ - vec2 uvRadius = radius / vec2(screenWidth, screenHeight); - - float sum = 0.0; - - for(int i = 0; i < NEIGHBOUR_COUNT; i++){ - vec2 uvNeighbor = vUv + uvRadius * neighbours[i]; - - float neighbourDepth = texture2D(uEDLColor, uvNeighbor).a; - neighbourDepth = (neighbourDepth == 1.0) ? 0.0 : neighbourDepth; - - if(neighbourDepth != 0.0){ - if(depth == 0.0){ - sum += 100.0; - }else{ - sum += max(0.0, depth - neighbourDepth); - } - } - } - - return sum / float(NEIGHBOUR_COUNT); -} - -void main(){ - vec4 cEDL = texture2D(uEDLColor, vUv); - - float depth = cEDL.a; - depth = (depth == 1.0) ? 0.0 : depth; - float res = response(depth); - float shade = exp(-res * 300.0 * edlStrength); - - gl_FragColor = vec4(cEDL.rgb * shade, opacity); - - { // write regular hyperbolic depth values to depth buffer - float dl = pow(2.0, depth); - - vec4 dp = uProj * vec4(0.0, 0.0, -dl, 1.0); - float pz = dp.z / dp.w; - float fragDepth = (pz + 1.0) / 2.0; - - gl_FragDepthEXT = fragDepth; - } - - if(depth == 0.0){ - discard; - } - -} -`; - - Shaders["blur.vs"] = ` -varying vec2 vUv; - -void main() { - vUv = uv; - - gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0); -}`; - - Shaders["blur.fs"] = ` -uniform mat4 projectionMatrix; - -uniform float screenWidth; -uniform float screenHeight; -uniform float near; -uniform float far; - -uniform sampler2D map; - -varying vec2 vUv; - -void main() { - - float dx = 1.0 / screenWidth; - float dy = 1.0 / screenHeight; - - vec3 color = vec3(0.0, 0.0, 0.0); - color += texture2D(map, vUv + vec2(-dx, -dy)).rgb; - color += texture2D(map, vUv + vec2( 0, -dy)).rgb; - color += texture2D(map, vUv + vec2(+dx, -dy)).rgb; - color += texture2D(map, vUv + vec2(-dx, 0)).rgb; - color += texture2D(map, vUv + vec2( 0, 0)).rgb; - color += texture2D(map, vUv + vec2(+dx, 0)).rgb; - color += texture2D(map, vUv + vec2(-dx, dy)).rgb; - color += texture2D(map, vUv + vec2( 0, dy)).rgb; - color += texture2D(map, vUv + vec2(+dx, dy)).rgb; - - color = color / 9.0; - - gl_FragColor = vec4(color, 1.0); -}`; - - const ClassificationScheme = { - - DEFAULT: { - 0: { visible: true, name: 'never classified' , color: [0.5, 0.5, 0.5, 1.0] }, - 1: { visible: true, name: 'unclassified' , color: [0.5, 0.5, 0.5, 1.0] }, - 2: { visible: true, name: 'ground' , color: [0.63, 0.32, 0.18, 1.0] }, - 3: { visible: true, name: 'low vegetation' , color: [0.0, 1.0, 0.0, 1.0] }, - 4: { visible: true, name: 'medium vegetation' , color: [0.0, 0.8, 0.0, 1.0] }, - 5: { visible: true, name: 'high vegetation' , color: [0.0, 0.6, 0.0, 1.0] }, - 6: { visible: true, name: 'building' , color: [1.0, 0.66, 0.0, 1.0] }, - 7: { visible: true, name: 'low point(noise)' , color: [1.0, 0.0, 1.0, 1.0] }, - 8: { visible: true, name: 'key-point' , color: [1.0, 0.0, 0.0, 1.0] }, - 9: { visible: true, name: 'water' , color: [0.0, 0.0, 1.0, 1.0] }, - 12: { visible: true, name: 'overlap' , color: [1.0, 1.0, 0.0, 1.0] }, - DEFAULT: { visible: true, name: 'default' , color: [0.3, 0.6, 0.6, 0.5] }, - } - }; - - Object.defineProperty(ClassificationScheme, 'RANDOM', { - get: function() { - - let scheme = {}; - - for(let i = 0; i <= 255; i++){ - scheme[i] = new THREE.Vector4(Math.random(), Math.random(), Math.random()); - } - - scheme["DEFAULT"] = new THREE.Vector4(Math.random(), Math.random(), Math.random()); - - return scheme; - } - }); - - // - // how to calculate the radius of a projected sphere in screen space - // http://stackoverflow.com/questions/21648630/radius-of-projected-sphere-in-screen-space - // http://stackoverflow.com/questions/3717226/radius-of-projected-sphere - // - - - class PointCloudMaterial extends THREE.RawShaderMaterial { - constructor (parameters = {}) { - super(); - - this.visibleNodesTexture = Utils.generateDataTexture(2048, 1, new THREE.Color(0xffffff)); - this.visibleNodesTexture.minFilter = THREE.NearestFilter; - this.visibleNodesTexture.magFilter = THREE.NearestFilter; - - let getValid = (a, b) => { - if(a !== undefined){ - return a; - }else { - return b; - } - }; - - let pointSize = getValid(parameters.size, 1.0); - let minSize = getValid(parameters.minSize, 2.0); - let maxSize = getValid(parameters.maxSize, 50.0); - let treeType = getValid(parameters.treeType, TreeType.OCTREE); - - this._pointSizeType = PointSizeType.FIXED; - this._shape = PointShape.SQUARE; - this._useClipBox = false; - this.clipBoxes = []; - this.clipPolygons = []; - this._weighted = false; - this._gradient = Gradients.SPECTRAL; - this.gradientTexture = PointCloudMaterial.generateGradientTexture(this._gradient); - this._matcap = "matcap.jpg"; - this.matcapTexture = Potree.PointCloudMaterial.generateMatcapTexture(this._matcap); - this.lights = false; - this.fog = false; - this._treeType = treeType; - this._useEDL = false; - this.defines = new Map(); - - this.ranges = new Map(); - - this._activeAttributeName = null; - - this._defaultIntensityRangeChanged = false; - this._defaultElevationRangeChanged = false; - - { - const [width, height] = [256, 1]; - let data = new Uint8Array(width * 4); - let texture = new THREE.DataTexture(data, width, height, THREE.RGBAFormat); - texture.magFilter = THREE.NearestFilter; - texture.needsUpdate = true; - - this.classificationTexture = texture; - } - - this.attributes = { - position: { type: 'fv', value: [] }, - color: { type: 'fv', value: [] }, - normal: { type: 'fv', value: [] }, - intensity: { type: 'f', value: [] }, - classification: { type: 'f', value: [] }, - returnNumber: { type: 'f', value: [] }, - numberOfReturns: { type: 'f', value: [] }, - pointSourceID: { type: 'f', value: [] }, - indices: { type: 'fv', value: [] } - }; - - this.uniforms = { - level: { type: "f", value: 0.0 }, - vnStart: { type: "f", value: 0.0 }, - spacing: { type: "f", value: 1.0 }, - blendHardness: { type: "f", value: 2.0 }, - blendDepthSupplement: { type: "f", value: 0.0 }, - fov: { type: "f", value: 1.0 }, - screenWidth: { type: "f", value: 1.0 }, - screenHeight: { type: "f", value: 1.0 }, - near: { type: "f", value: 0.1 }, - far: { type: "f", value: 1.0 }, - uColor: { type: "c", value: new THREE.Color( 0xffffff ) }, - uOpacity: { type: "f", value: 1.0 }, - size: { type: "f", value: pointSize }, - minSize: { type: "f", value: minSize }, - maxSize: { type: "f", value: maxSize }, - octreeSize: { type: "f", value: 0 }, - bbSize: { type: "fv", value: [0, 0, 0] }, - elevationRange: { type: "2fv", value: [0, 0] }, - - clipBoxCount: { type: "f", value: 0 }, - //clipSphereCount: { type: "f", value: 0 }, - clipPolygonCount: { type: "i", value: 0 }, - clipBoxes: { type: "Matrix4fv", value: [] }, - //clipSpheres: { type: "Matrix4fv", value: [] }, - clipPolygons: { type: "3fv", value: [] }, - clipPolygonVCount: { type: "iv", value: [] }, - clipPolygonVP: { type: "Matrix4fv", value: [] }, - - visibleNodes: { type: "t", value: this.visibleNodesTexture }, - pcIndex: { type: "f", value: 0 }, - gradient: { type: "t", value: this.gradientTexture }, - classificationLUT: { type: "t", value: this.classificationTexture }, - uHQDepthMap: { type: "t", value: null }, - toModel: { type: "Matrix4f", value: [] }, - diffuse: { type: "fv", value: [1, 1, 1] }, - transition: { type: "f", value: 0.5 }, - - intensityRange: { type: "fv", value: [Infinity, -Infinity] }, - - intensity_gbc: { type: "fv", value: [1, 0, 0]}, - uRGB_gbc: { type: "fv", value: [1, 0, 0]}, - // intensityGamma: { type: "f", value: 1 }, - // intensityContrast: { type: "f", value: 0 }, - // intensityBrightness:{ type: "f", value: 0 }, - // rgbGamma: { type: "f", value: 1 }, - // rgbContrast: { type: "f", value: 0 }, - // rgbBrightness: { type: "f", value: 0 }, - wRGB: { type: "f", value: 1 }, - wIntensity: { type: "f", value: 0 }, - wElevation: { type: "f", value: 0 }, - wClassification: { type: "f", value: 0 }, - wReturnNumber: { type: "f", value: 0 }, - wSourceID: { type: "f", value: 0 }, - useOrthographicCamera: { type: "b", value: false }, - elevationGradientRepat: { type: "i", value: ElevationGradientRepeat.CLAMP }, - clipTask: { type: "i", value: 1 }, - clipMethod: { type: "i", value: 1 }, - uShadowColor: { type: "3fv", value: [0, 0, 0] }, - - uExtraScale: { type: "f", value: 1}, - uExtraOffset: { type: "f", value: 0}, - uExtraRange: { type: "2fv", value: [0, 1] }, - uExtraGammaBrightContr: { type: "3fv", value: [1, 0, 0] }, - - uFilterReturnNumberRange: { type: "fv", value: [0, 7]}, - uFilterNumberOfReturnsRange: { type: "fv", value: [0, 7]}, - uFilterGPSTimeClipRange: { type: "fv", value: [0, 7]}, - uFilterPointSourceIDClipRange: { type: "fv", value: [0, 65535]}, - matcapTextureUniform: { type: "t", value: this.matcapTexture }, - backfaceCulling: { type: "b", value: false }, - }; - - this.classification = ClassificationScheme.DEFAULT; - - this.defaultAttributeValues.normal = [0, 0, 0]; - this.defaultAttributeValues.classification = [0, 0, 0]; - this.defaultAttributeValues.indices = [0, 0, 0, 0]; - - this.vertexShader = Shaders['pointcloud.vs']; - this.fragmentShader = Shaders['pointcloud.fs']; - - this.vertexColors = THREE.VertexColors; - - this.updateShaderSource(); - } - - setDefine(key, value){ - if(value !== undefined && value !== null){ - if(this.defines.get(key) !== value){ - this.defines.set(key, value); - this.updateShaderSource(); - } - }else { - this.removeDefine(key); - } - } - - removeDefine(key){ - this.defines.delete(key); - } - - updateShaderSource () { - - let vs = Shaders['pointcloud.vs']; - let fs = Shaders['pointcloud.fs']; - let definesString = this.getDefines(); - - let vsVersionIndex = vs.indexOf("#version "); - let fsVersionIndex = fs.indexOf("#version "); - - if(vsVersionIndex >= 0){ - vs = vs.replace(/(#version .*)/, `$1\n${definesString}`); - }else { - vs = `${definesString}\n${vs}`; - } - - if(fsVersionIndex >= 0){ - fs = fs.replace(/(#version .*)/, `$1\n${definesString}`); - }else { - fs = `${definesString}\n${fs}`; - } - - this.vertexShader = vs; - this.fragmentShader = fs; - - if (this.opacity === 1.0) { - this.blending = THREE.NoBlending; - this.transparent = false; - this.depthTest = true; - this.depthWrite = true; - this.depthFunc = THREE.LessEqualDepth; - } else if (this.opacity < 1.0 && !this.useEDL) { - this.blending = THREE.AdditiveBlending; - this.transparent = true; - this.depthTest = false; - this.depthWrite = true; - this.depthFunc = THREE.AlwaysDepth; - } - - if (this.weighted) { - this.blending = THREE.AdditiveBlending; - this.transparent = true; - this.depthTest = true; - this.depthWrite = false; - } - - this.needsUpdate = true; - } - - getDefines () { - let defines = []; - - if (this.pointSizeType === PointSizeType.FIXED) { - defines.push('#define fixed_point_size'); - } else if (this.pointSizeType === PointSizeType.ATTENUATED) { - defines.push('#define attenuated_point_size'); - } else if (this.pointSizeType === PointSizeType.ADAPTIVE) { - defines.push('#define adaptive_point_size'); - } - - if (this.shape === PointShape.SQUARE) { - defines.push('#define square_point_shape'); - } else if (this.shape === PointShape.CIRCLE) { - defines.push('#define circle_point_shape'); - } else if (this.shape === PointShape.PARABOLOID) { - defines.push('#define paraboloid_point_shape'); - } - - if (this._useEDL) { - defines.push('#define use_edl'); - } - - if(this.activeAttributeName){ - let attributeName = this.activeAttributeName.replace(/[^a-zA-Z0-9]/g, '_'); - - defines.push(`#define color_type_${attributeName}`); - } - - if(this._treeType === TreeType.OCTREE){ - defines.push('#define tree_type_octree'); - }else if(this._treeType === TreeType.KDTREE){ - defines.push('#define tree_type_kdtree'); - } - - if (this.weighted) { - defines.push('#define weighted_splats'); - } - - for(let [key, value] of this.defines){ - defines.push(value); - } - - return defines.join("\n"); - } - - setClipBoxes (clipBoxes) { - if (!clipBoxes) { - return; - } - - let doUpdate = (this.clipBoxes.length !== clipBoxes.length) && (clipBoxes.length === 0 || this.clipBoxes.length === 0); - - this.uniforms.clipBoxCount.value = this.clipBoxes.length; - this.clipBoxes = clipBoxes; - - if (doUpdate) { - this.updateShaderSource(); - } - - this.uniforms.clipBoxes.value = new Float32Array(this.clipBoxes.length * 16); - - for (let i = 0; i < this.clipBoxes.length; i++) { - let box = clipBoxes[i]; - - this.uniforms.clipBoxes.value.set(box.inverse.elements, 16 * i); - } - - for (let i = 0; i < this.uniforms.clipBoxes.value.length; i++) { - if (Number.isNaN(this.uniforms.clipBoxes.value[i])) { - this.uniforms.clipBoxes.value[i] = Infinity; - } - } - } - - setClipPolygons(clipPolygons, maxPolygonVertices) { - if(!clipPolygons){ - return; - } - - this.clipPolygons = clipPolygons; - - let doUpdate = (this.clipPolygons.length !== clipPolygons.length); - - if(doUpdate){ - this.updateShaderSource(); - } - } - - get gradient(){ - return this._gradient; - } - - set gradient (value) { - if (this._gradient !== value) { - this._gradient = value; - this.gradientTexture = PointCloudMaterial.generateGradientTexture(this._gradient); - this.uniforms.gradient.value = this.gradientTexture; - } - } - - get matcap(){ - return this._matcap; - } - - set matcap (value) { - if (this._matcap !== value) { - this._matcap = value; - this.matcapTexture = Potree.PointCloudMaterial.generateMatcapTexture(this._matcap); - this.uniforms.matcapTextureUniform.value = this.matcapTexture; - } - } - get useOrthographicCamera() { - return this.uniforms.useOrthographicCamera.value; - } - - set useOrthographicCamera(value) { - if(this.uniforms.useOrthographicCamera.value !== value){ - this.uniforms.useOrthographicCamera.value = value; - } - } - get backfaceCulling() { - return this.uniforms.backfaceCulling.value; - } - - set backfaceCulling(value) { - if(this.uniforms.backfaceCulling.value !== value){ - this.uniforms.backfaceCulling.value = value; - this.dispatchEvent({type: 'backface_changed', target: this}); - } - } - - recomputeClassification () { - const classification = this.classification; - const data = this.classificationTexture.image.data; - - let width = 256; - const black = [1, 1, 1, 1]; - - let valuesChanged = false; - - for (let i = 0; i < width; i++) { - - let color; - let visible = true; - - if (classification[i]) { - color = classification[i].color; - visible = classification[i].visible; - } else if (classification[i % 32]) { - color = classification[i % 32].color; - visible = classification[i % 32].visible; - } else if(classification.DEFAULT) { - color = classification.DEFAULT.color; - visible = classification.DEFAULT.visible; - }else { - color = black; - } - - const r = parseInt(255 * color[0]); - const g = parseInt(255 * color[1]); - const b = parseInt(255 * color[2]); - const a = visible ? parseInt(255 * color[3]) : 0; - - - if(data[4 * i + 0] !== r){ - data[4 * i + 0] = r; - valuesChanged = true; - } - - if(data[4 * i + 1] !== g){ - data[4 * i + 1] = g; - valuesChanged = true; - } - - if(data[4 * i + 2] !== b){ - data[4 * i + 2] = b; - valuesChanged = true; - } - - if(data[4 * i + 3] !== a){ - data[4 * i + 3] = a; - valuesChanged = true; - } - } - - if(valuesChanged){ - this.classificationTexture.needsUpdate = true; - - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get spacing () { - return this.uniforms.spacing.value; - } - - set spacing (value) { - if (this.uniforms.spacing.value !== value) { - this.uniforms.spacing.value = value; - } - } - - get useClipBox () { - return this._useClipBox; - } - - set useClipBox (value) { - if (this._useClipBox !== value) { - this._useClipBox = value; - this.updateShaderSource(); - } - } - - get clipTask(){ - return this.uniforms.clipTask.value; - } - - set clipTask(mode){ - this.uniforms.clipTask.value = mode; - } - - get elevationGradientRepat(){ - return this.uniforms.elevationGradientRepat.value; - } - - set elevationGradientRepat(mode){ - this.uniforms.elevationGradientRepat.value = mode; - } - - get clipMethod(){ - return this.uniforms.clipMethod.value; - } - - set clipMethod(mode){ - this.uniforms.clipMethod.value = mode; - } - - get weighted(){ - return this._weighted; - } - - set weighted (value) { - if (this._weighted !== value) { - this._weighted = value; - this.updateShaderSource(); - } - } - - get fov () { - return this.uniforms.fov.value; - } - - set fov (value) { - if (this.uniforms.fov.value !== value) { - this.uniforms.fov.value = value; - // this.updateShaderSource(); - } - } - - get screenWidth () { - return this.uniforms.screenWidth.value; - } - - set screenWidth (value) { - if (this.uniforms.screenWidth.value !== value) { - this.uniforms.screenWidth.value = value; - // this.updateShaderSource(); - } - } - - get screenHeight () { - return this.uniforms.screenHeight.value; - } - - set screenHeight (value) { - if (this.uniforms.screenHeight.value !== value) { - this.uniforms.screenHeight.value = value; - // this.updateShaderSource(); - } - } - - get near () { - return this.uniforms.near.value; - } - - set near (value) { - if (this.uniforms.near.value !== value) { - this.uniforms.near.value = value; - } - } - - get far () { - return this.uniforms.far.value; - } - - set far (value) { - if (this.uniforms.far.value !== value) { - this.uniforms.far.value = value; - } - } - - get opacity(){ - return this.uniforms.uOpacity.value; - } - - set opacity (value) { - if (this.uniforms && this.uniforms.uOpacity) { - if (this.uniforms.uOpacity.value !== value) { - this.uniforms.uOpacity.value = value; - this.updateShaderSource(); - this.dispatchEvent({ - type: 'opacity_changed', - target: this - }); - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - } - - get activeAttributeName(){ - return this._activeAttributeName; - } - - set activeAttributeName(value){ - if (this._activeAttributeName !== value) { - this._activeAttributeName = value; - - this.updateShaderSource(); - this.dispatchEvent({ - type: 'active_attribute_changed', - target: this - }); - - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get pointSizeType () { - return this._pointSizeType; - } - - set pointSizeType (value) { - if (this._pointSizeType !== value) { - this._pointSizeType = value; - this.updateShaderSource(); - this.dispatchEvent({ - type: 'point_size_type_changed', - target: this - }); - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get useEDL(){ - return this._useEDL; - } - - set useEDL (value) { - if (this._useEDL !== value) { - this._useEDL = value; - this.updateShaderSource(); - } - } - - get color () { - return this.uniforms.uColor.value; - } - - set color (value) { - if (!this.uniforms.uColor.value.equals(value)) { - this.uniforms.uColor.value.copy(value); - - this.dispatchEvent({ - type: 'color_changed', - target: this - }); - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get shape () { - return this._shape; - } - - set shape (value) { - if (this._shape !== value) { - this._shape = value; - this.updateShaderSource(); - this.dispatchEvent({type: 'point_shape_changed', target: this}); - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get treeType () { - return this._treeType; - } - - set treeType (value) { - if (this._treeType !== value) { - this._treeType = value; - this.updateShaderSource(); - } - } - - get bbSize () { - return this.uniforms.bbSize.value; - } - - set bbSize (value) { - this.uniforms.bbSize.value = value; - } - - get size () { - return this.uniforms.size.value; - } - - set size (value) { - if (this.uniforms.size.value !== value) { - this.uniforms.size.value = value; - - this.dispatchEvent({ - type: 'point_size_changed', - target: this - }); - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get minSize(){ - return this.uniforms.minSize.value; - } - - set minSize(value){ - if (this.uniforms.minSize.value !== value) { - this.uniforms.minSize.value = value; - - this.dispatchEvent({ - type: 'point_size_changed', - target: this - }); - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get elevationRange () { - return this.uniforms.elevationRange.value; - } - - set elevationRange (value) { - let changed = this.uniforms.elevationRange.value[0] !== value[0] - || this.uniforms.elevationRange.value[1] !== value[1]; - - if(changed){ - this.uniforms.elevationRange.value = value; - - this._defaultElevationRangeChanged = true; - - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get heightMin () { - return this.uniforms.elevationRange.value[0]; - } - - set heightMin (value) { - this.elevationRange = [value, this.elevationRange[1]]; - } - - get heightMax () { - return this.uniforms.elevationRange.value[1]; - } - - set heightMax (value) { - this.elevationRange = [this.elevationRange[0], value]; - } - - get transition () { - return this.uniforms.transition.value; - } - - set transition (value) { - this.uniforms.transition.value = value; - } - - get intensityRange () { - return this.uniforms.intensityRange.value; - } - - set intensityRange (value) { - if (!(value instanceof Array && value.length === 2)) { - return; - } - - if (value[0] === this.uniforms.intensityRange.value[0] && - value[1] === this.uniforms.intensityRange.value[1]) { - return; - } - - this.uniforms.intensityRange.value = value; - - this._defaultIntensityRangeChanged = true; - - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - - get intensityGamma () { - return this.uniforms.intensity_gbc.value[0]; - } - - set intensityGamma (value) { - if (this.uniforms.intensity_gbc.value[0] !== value) { - this.uniforms.intensity_gbc.value[0] = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get intensityContrast () { - return this.uniforms.intensity_gbc.value[2]; - } - - set intensityContrast (value) { - if (this.uniforms.intensity_gbc.value[2] !== value) { - this.uniforms.intensity_gbc.value[2] = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get intensityBrightness () { - return this.uniforms.intensity_gbc.value[1]; - } - - set intensityBrightness (value) { - if (this.uniforms.intensity_gbc.value[1] !== value) { - this.uniforms.intensity_gbc.value[1] = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get rgbGamma () { - return this.uniforms.uRGB_gbc.value[0]; - } - - set rgbGamma (value) { - if (this.uniforms.uRGB_gbc.value[0] !== value) { - this.uniforms.uRGB_gbc.value[0] = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get rgbContrast () { - return this.uniforms.uRGB_gbc.value[2]; - } - - set rgbContrast (value) { - if (this.uniforms.uRGB_gbc.value[2] !== value) { - this.uniforms.uRGB_gbc.value[2] = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get rgbBrightness () { - return this.uniforms.uRGB_gbc.value[1]; - } - - set rgbBrightness (value) { - if (this.uniforms.uRGB_gbc.value[1] !== value) { - this.uniforms.uRGB_gbc.value[1] = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - - get extraGamma () { - return this.uniforms.uExtraGammaBrightContr.value[0]; - } - - set extraGamma (value) { - if (this.uniforms.uExtraGammaBrightContr.value[0] !== value) { - this.uniforms.uExtraGammaBrightContr.value[0] = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get extraBrightness () { - return this.uniforms.uExtraGammaBrightContr.value[1]; - } - - set extraBrightness (value) { - if (this.uniforms.uExtraGammaBrightContr.value[1] !== value) { - this.uniforms.uExtraGammaBrightContr.value[1] = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get extraContrast () { - return this.uniforms.uExtraGammaBrightContr.value[2]; - } - - set extraContrast (value) { - if (this.uniforms.uExtraGammaBrightContr.value[2] !== value) { - this.uniforms.uExtraGammaBrightContr.value[2] = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - getRange(attributeName){ - return this.ranges.get(attributeName); - } - - setRange(attributeName, newRange){ - - let rangeChanged = false; - - let oldRange = this.ranges.get(attributeName); - - if(oldRange != null && newRange != null){ - rangeChanged = oldRange[0] !== newRange[0] || oldRange[1] !== newRange[1]; - }else { - rangeChanged = true; - } - - this.ranges.set(attributeName, newRange); - - if(rangeChanged){ - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get extraRange () { - return this.uniforms.uExtraRange.value; - } - - set extraRange (value) { - if (!(value instanceof Array && value.length === 2)) { - return; - } - - if (value[0] === this.uniforms.uExtraRange.value[0] && - value[1] === this.uniforms.uExtraRange.value[1]) { - return; - } - - this.uniforms.uExtraRange.value = value; - - this._defaultExtraRangeChanged = true; - - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - - get weightRGB () { - return this.uniforms.wRGB.value; - } - - set weightRGB (value) { - if(this.uniforms.wRGB.value !== value){ - this.uniforms.wRGB.value = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get weightIntensity () { - return this.uniforms.wIntensity.value; - } - - set weightIntensity (value) { - if(this.uniforms.wIntensity.value !== value){ - this.uniforms.wIntensity.value = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get weightElevation () { - return this.uniforms.wElevation.value; - } - - set weightElevation (value) { - if(this.uniforms.wElevation.value !== value){ - this.uniforms.wElevation.value = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get weightClassification () { - return this.uniforms.wClassification.value; - } - - set weightClassification (value) { - if(this.uniforms.wClassification.value !== value){ - this.uniforms.wClassification.value = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get weightReturnNumber () { - return this.uniforms.wReturnNumber.value; - } - - set weightReturnNumber (value) { - if(this.uniforms.wReturnNumber.value !== value){ - this.uniforms.wReturnNumber.value = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get weightSourceID () { - return this.uniforms.wSourceID.value; - } - - set weightSourceID (value) { - if(this.uniforms.wSourceID.value !== value){ - this.uniforms.wSourceID.value = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - static generateGradientTexture (gradient) { - let size = 64; - - // create canvas - let canvas = document.createElement('canvas'); - canvas.width = size; - canvas.height = size; - - // get context - let context = canvas.getContext('2d'); - - // draw gradient - context.rect(0, 0, size, size); - let ctxGradient = context.createLinearGradient(0, 0, size, size); - - for (let i = 0; i < gradient.length; i++) { - let step = gradient[i]; - - ctxGradient.addColorStop(step[0], '#' + step[1].getHexString()); - } - - context.fillStyle = ctxGradient; - context.fill(); - - //let texture = new THREE.Texture(canvas); - let texture = new THREE.CanvasTexture(canvas); - texture.needsUpdate = true; - - texture.minFilter = THREE.LinearFilter; - texture.wrap = THREE.RepeatWrapping; - texture.repeat = 2; - // textureImage = texture.image; - - return texture; - } - - static generateMatcapTexture (matcap) { - var url = new URL(Potree.resourcePath + "/textures/matcap/" + matcap).href; - let texture = new THREE.TextureLoader().load( url ); - texture.magFilter = texture.minFilter = THREE.LinearFilter; - texture.needsUpdate = true; - // PotreeConverter_1.6_2018_07_29_windows_x64\PotreeConverter.exe autzen_xyzrgbXYZ_ascii.xyz -f xyzrgbXYZ -a RGB NORMAL -o autzen_xyzrgbXYZ_ascii_a -p index --overwrite - // Switch matcap texture on the fly : viewer.scene.pointclouds[0].material.matcap = 'matcap1.jpg'; - // For non power of 2, use LinearFilter and dont generate mipmaps, For power of 2, use NearestFilter and generate mipmaps : matcap2.jpg 1 2 8 11 12 13 - return texture; - } - - static generateMatcapTexture (matcap) { - var url = new URL(Potree.resourcePath + "/textures/matcap/" + matcap).href; - let texture = new THREE.TextureLoader().load( url ); - texture.magFilter = texture.minFilter = THREE.LinearFilter; - texture.needsUpdate = true; - // PotreeConverter_1.6_2018_07_29_windows_x64\PotreeConverter.exe autzen_xyzrgbXYZ_ascii.xyz -f xyzrgbXYZ -a RGB NORMAL -o autzen_xyzrgbXYZ_ascii_a -p index --overwrite - // Switch matcap texture on the fly : viewer.scene.pointclouds[0].material.matcap = 'matcap1.jpg'; - // For non power of 2, use LinearFilter and dont generate mipmaps, For power of 2, use NearestFilter and generate mipmaps : matcap2.jpg 1 2 8 11 12 13 - return texture; - } - - disableEvents(){ - if(this._hiddenListeners === undefined){ - this._hiddenListeners = this._listeners; - this._listeners = {}; - } - }; - - enableEvents(){ - this._listeners = this._hiddenListeners; - this._hiddenListeners = undefined; - }; - - // copyFrom(from){ - - // var a = 10; - - // for(let name of Object.keys(this.uniforms)){ - // this.uniforms[name].value = from.uniforms[name].value; - // } - // } - - // copy(from){ - // this.copyFrom(from); - // } - - } - - class PointCloudOctreeNode extends PointCloudTreeNode { - constructor () { - super(); - - //this.children = {}; - this.children = []; - this.sceneNode = null; - this.octree = null; - } - - getNumPoints () { - return this.geometryNode.numPoints; - } - - isLoaded () { - return true; - } - - isTreeNode () { - return true; - } - - isGeometryNode () { - return false; - } - - getLevel () { - return this.geometryNode.level; - } - - getBoundingSphere () { - return this.geometryNode.boundingSphere; - } - - getBoundingBox () { - return this.geometryNode.boundingBox; - } - - getChildren () { - let children = []; - - for (let i = 0; i < 8; i++) { - if (this.children[i]) { - children.push(this.children[i]); - } - } - - return children; - } - - getPointsInBox(boxNode){ - - if(!this.sceneNode){ - return null; - } - - let buffer = this.geometryNode.buffer; - - let posOffset = buffer.offset("position"); - let stride = buffer.stride; - let view = new DataView(buffer.data); - - let worldToBox = new THREE.Matrix4().getInverse(boxNode.matrixWorld); - let objectToBox = new THREE.Matrix4().multiplyMatrices(worldToBox, this.sceneNode.matrixWorld); - - let inBox = []; - - let pos = new THREE.Vector4(); - for(let i = 0; i < buffer.numElements; i++){ - let x = view.getFloat32(i * stride + posOffset + 0, true); - let y = view.getFloat32(i * stride + posOffset + 4, true); - let z = view.getFloat32(i * stride + posOffset + 8, true); - - pos.set(x, y, z, 1); - pos.applyMatrix4(objectToBox); - - if(-0.5 < pos.x && pos.x < 0.5){ - if(-0.5 < pos.y && pos.y < 0.5){ - if(-0.5 < pos.z && pos.z < 0.5){ - pos.set(x, y, z, 1).applyMatrix4(this.sceneNode.matrixWorld); - inBox.push(new THREE.Vector3(pos.x, pos.y, pos.z)); - } - } - } - } - - return inBox; - } - - get name () { - return this.geometryNode.name; - } - }; - - class PointCloudOctree extends PointCloudTree { - constructor (geometry, material) { - super(); - - this.pointBudget = Infinity; - this.pcoGeometry = geometry; - this.boundingBox = this.pcoGeometry.boundingBox; - this.boundingSphere = this.boundingBox.getBoundingSphere(new THREE.Sphere()); - this.material = material || new PointCloudMaterial(); - this.visiblePointsTarget = 2 * 1000 * 1000; - this.minimumNodePixelSize = 150; - this.level = 0; - this.position.copy(geometry.offset); - this.updateMatrix(); - - { - let attributeName = "rgba"; - if(this.pcoGeometry.pointAttributes.attributes.length > 1){ - attributeName = this.pcoGeometry.pointAttributes.attributes[1].name; - } - this.material.activeAttributeName = attributeName; - } - - this.showBoundingBox = false; - this.boundingBoxNodes = []; - this.loadQueue = []; - this.visibleBounds = new THREE.Box3(); - this.visibleNodes = []; - this.visibleGeometry = []; - this.generateDEM = false; - this.profileRequests = []; - this.name = ''; - this._visible = true; - - { - let box = [this.pcoGeometry.tightBoundingBox, this.getBoundingBoxWorld()] - .find(v => v !== undefined); - - this.updateMatrixWorld(true); - box = Utils.computeTransformedBoundingBox(box, this.matrixWorld); - - let bMin = box.min.z; - let bMax = box.max.z; - this.material.heightMin = bMin; - this.material.heightMax = bMax; - } - - // TODO read projection from file instead - this.projection = geometry.projection; - this.fallbackProjection = geometry.fallbackProjection; - - this.root = this.pcoGeometry.root; - } - - setName (name) { - if (this.name !== name) { - this.name = name; - this.dispatchEvent({type: 'name_changed', name: name, pointcloud: this}); - } - } - - getName () { - return this.name; - } - - getAttribute(name){ - - const attribute = this.pcoGeometry.pointAttributes.attributes.find(a => a.name === name); - - if(attribute){ - return attribute; - }else { - return null; - } - } - - getAttributes(){ - return this.pcoGeometry.pointAttributes; - } - - toTreeNode (geometryNode, parent) { - let node = new PointCloudOctreeNode(); - - // if(geometryNode.name === "r40206"){ - // console.log("creating node for r40206"); - // } - let sceneNode = new THREE.Points(geometryNode.geometry, this.material); - sceneNode.name = geometryNode.name; - sceneNode.position.copy(geometryNode.boundingBox.min); - sceneNode.frustumCulled = false; - sceneNode.onBeforeRender = (_this, scene, camera, geometry, material, group) => { - if (material.program) { - _this.getContext().useProgram(material.program.program); - - if (material.program.getUniforms().map.level) { - let level = geometryNode.getLevel(); - material.uniforms.level.value = level; - material.program.getUniforms().map.level.setValue(_this.getContext(), level); - } - - if (this.visibleNodeTextureOffsets && material.program.getUniforms().map.vnStart) { - let vnStart = this.visibleNodeTextureOffsets.get(node); - material.uniforms.vnStart.value = vnStart; - material.program.getUniforms().map.vnStart.setValue(_this.getContext(), vnStart); - } - - if (material.program.getUniforms().map.pcIndex) { - let i = node.pcIndex ? node.pcIndex : this.visibleNodes.indexOf(node); - material.uniforms.pcIndex.value = i; - material.program.getUniforms().map.pcIndex.setValue(_this.getContext(), i); - } - } - }; - - // { // DEBUG - // let sg = new THREE.SphereGeometry(1, 16, 16); - // let sm = new THREE.MeshNormalMaterial(); - // let s = new THREE.Mesh(sg, sm); - // s.scale.set(5, 5, 5); - // s.position.copy(geometryNode.mean) - // .add(this.position) - // .add(geometryNode.boundingBox.min); - // - // viewer.scene.scene.add(s); - // } - - node.geometryNode = geometryNode; - node.sceneNode = sceneNode; - node.pointcloud = this; - node.children = []; - //for (let key in geometryNode.children) { - // node.children[key] = geometryNode.children[key]; - //} - for(let i = 0; i < 8; i++){ - node.children[i] = geometryNode.children[i]; - } - - if (!parent) { - this.root = node; - this.add(sceneNode); - } else { - let childIndex = parseInt(geometryNode.name[geometryNode.name.length - 1]); - parent.sceneNode.add(sceneNode); - parent.children[childIndex] = node; - } - - let disposeListener = function () { - let childIndex = parseInt(geometryNode.name[geometryNode.name.length - 1]); - parent.sceneNode.remove(node.sceneNode); - parent.children[childIndex] = geometryNode; - }; - geometryNode.oneTimeDisposeHandlers.push(disposeListener); - - return node; - } - - updateVisibleBounds () { - let leafNodes = []; - for (let i = 0; i < this.visibleNodes.length; i++) { - let node = this.visibleNodes[i]; - let isLeaf = true; - - for (let j = 0; j < node.children.length; j++) { - let child = node.children[j]; - if (child instanceof PointCloudOctreeNode) { - isLeaf = isLeaf && !child.sceneNode.visible; - } else if (child instanceof PointCloudOctreeGeometryNode) { - isLeaf = true; - } - } - - if (isLeaf) { - leafNodes.push(node); - } - } - - this.visibleBounds.min = new THREE.Vector3(Infinity, Infinity, Infinity); - this.visibleBounds.max = new THREE.Vector3(-Infinity, -Infinity, -Infinity); - for (let i = 0; i < leafNodes.length; i++) { - let node = leafNodes[i]; - - this.visibleBounds.expandByPoint(node.getBoundingBox().min); - this.visibleBounds.expandByPoint(node.getBoundingBox().max); - } - } - - updateMaterial (material, visibleNodes, camera, renderer) { - material.fov = camera.fov * (Math.PI / 180); - material.screenWidth = renderer.domElement.clientWidth; - material.screenHeight = renderer.domElement.clientHeight; - material.spacing = this.pcoGeometry.spacing * Math.max(this.scale.x, this.scale.y, this.scale.z); - material.near = camera.near; - material.far = camera.far; - material.uniforms.octreeSize.value = this.pcoGeometry.boundingBox.getSize(new THREE.Vector3()).x; - } - - computeVisibilityTextureData(nodes, camera){ - - if(Potree.measureTimings) performance.mark("computeVisibilityTextureData-start"); - - let data = new Uint8Array(nodes.length * 4); - let visibleNodeTextureOffsets = new Map(); - - // copy array - nodes = nodes.slice(); - - // sort by level and index, e.g. r, r0, r3, r4, r01, r07, r30, ... - let sort = function (a, b) { - let na = a.geometryNode.name; - let nb = b.geometryNode.name; - if (na.length !== nb.length) return na.length - nb.length; - if (na < nb) return -1; - if (na > nb) return 1; - return 0; - }; - nodes.sort(sort); - - // code sample taken from three.js src/math/Ray.js - let v1 = new THREE.Vector3(); - let intersectSphereBack = (ray, sphere) => { - v1.subVectors( sphere.center, ray.origin ); - let tca = v1.dot( ray.direction ); - let d2 = v1.dot( v1 ) - tca * tca; - let radius2 = sphere.radius * sphere.radius; - - if(d2 > radius2){ - return null; - } - - let thc = Math.sqrt( radius2 - d2 ); - - // t1 = second intersect point - exit point on back of sphere - let t1 = tca + thc; - - if(t1 < 0 ){ - return null; - } - - return t1; - }; - - let lodRanges = new Map(); - let leafNodeLodRanges = new Map(); - - let bBox = new THREE.Box3(); - let bSphere = new THREE.Sphere(); - let worldDir = new THREE.Vector3(); - let cameraRay = new THREE.Ray(camera.position, camera.getWorldDirection(worldDir)); - - let nodeMap = new Map(); - let offsetsToChild = new Array(nodes.length).fill(Infinity); - - for(let i = 0; i < nodes.length; i++){ - let node = nodes[i]; - - nodeMap.set(node.name, node); - visibleNodeTextureOffsets.set(node, i); - - if(i > 0){ - let index = parseInt(node.name.slice(-1)); - let parentName = node.name.slice(0, -1); - let parent = nodeMap.get(parentName); - let parentOffset = visibleNodeTextureOffsets.get(parent); - - let parentOffsetToChild = (i - parentOffset); - - offsetsToChild[parentOffset] = Math.min(offsetsToChild[parentOffset], parentOffsetToChild); - - data[parentOffset * 4 + 0] = data[parentOffset * 4 + 0] | (1 << index); - data[parentOffset * 4 + 1] = (offsetsToChild[parentOffset] >> 8); - data[parentOffset * 4 + 2] = (offsetsToChild[parentOffset] % 256); - } - - // data[i * 4 + 3] = node.geometryNode.nodeType === 1 ? 1 : 0; - // data[i * 4 + 3] = node.name.length - 1; - - let density = node.geometryNode.density; - - if(typeof density === "number"){ - let lodOffset = Math.log2(density) / 2 - 1.5; - - let offsetUint8 = (lodOffset + 10) * 10; - - data[i * 4 + 3] = offsetUint8; - }else { - data[i * 4 + 3] = 100; - } - - } - - var a = 10; - - if(Potree.measureTimings){ - performance.mark("computeVisibilityTextureData-end"); - performance.measure("render.computeVisibilityTextureData", "computeVisibilityTextureData-start", "computeVisibilityTextureData-end"); - } - - return { - data: data, - offsets: visibleNodeTextureOffsets - }; - } - - nodeIntersectsProfile (node, profile) { - let bbWorld = node.boundingBox.clone().applyMatrix4(this.matrixWorld); - let bsWorld = bbWorld.getBoundingSphere(new THREE.Sphere()); - - let intersects = false; - - for (let i = 0; i < profile.points.length - 1; i++) { - - let start = new THREE.Vector3(profile.points[i + 0].x, profile.points[i + 0].y, bsWorld.center.z); - let end = new THREE.Vector3(profile.points[i + 1].x, profile.points[i + 1].y, bsWorld.center.z); - - let closest = new THREE.Line3(start, end).closestPointToPoint(bsWorld.center, true, new THREE.Vector3()); - let distance = closest.distanceTo(bsWorld.center); - - intersects = intersects || (distance < (bsWorld.radius + profile.width)); - } - - //console.log(`${node.name}: ${intersects}`); - - return intersects; - } - - deepestNodeAt(position){ - - const toObjectSpace = new THREE.Matrix4().getInverse(this.matrixWorld); - - const objPos = position.clone().applyMatrix4(toObjectSpace); - - let current = this.root; - while(true){ - - let containingChild = null; - - for(const child of current.children){ - - if(child !== undefined){ - if(child.getBoundingBox().containsPoint(objPos)){ - containingChild = child; - } - } - } - - if(containingChild !== null && containingChild instanceof PointCloudOctreeNode){ - current = containingChild; - }else { - break; - } - } - - const deepest = current; - - return deepest; - } - - nodesOnRay (nodes, ray) { - let nodesOnRay = []; - - let _ray = ray.clone(); - for (let i = 0; i < nodes.length; i++) { - let node = nodes[i]; - // let inverseWorld = new THREE.Matrix4().getInverse(node.matrixWorld); - // let sphere = node.getBoundingSphere().clone().applyMatrix4(node.sceneNode.matrixWorld); - let sphere = node.getBoundingSphere().clone().applyMatrix4(this.matrixWorld); - - if (_ray.intersectsSphere(sphere)) { - nodesOnRay.push(node); - } - } - - return nodesOnRay; - } - - updateMatrixWorld (force) { - if (this.matrixAutoUpdate === true) this.updateMatrix(); - - if (this.matrixWorldNeedsUpdate === true || force === true) { - if (!this.parent) { - this.matrixWorld.copy(this.matrix); - } else { - this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix); - } - - this.matrixWorldNeedsUpdate = false; - - force = true; - } - } - - hideDescendants (object) { - let stack = []; - for (let i = 0; i < object.children.length; i++) { - let child = object.children[i]; - if (child.visible) { - stack.push(child); - } - } - - while (stack.length > 0) { - let object = stack.shift(); - - object.visible = false; - - for (let i = 0; i < object.children.length; i++) { - let child = object.children[i]; - if (child.visible) { - stack.push(child); - } - } - } - } - - moveToOrigin () { - this.position.set(0, 0, 0); - this.updateMatrixWorld(true); - let box = this.boundingBox; - let transform = this.matrixWorld; - let tBox = Utils.computeTransformedBoundingBox(box, transform); - this.position.set(0, 0, 0).sub(tBox.getCenter(new THREE.Vector3())); - }; - - moveToGroundPlane () { - this.updateMatrixWorld(true); - let box = this.boundingBox; - let transform = this.matrixWorld; - let tBox = Utils.computeTransformedBoundingBox(box, transform); - this.position.y += -tBox.min.y; - }; - - getBoundingBoxWorld () { - this.updateMatrixWorld(true); - let box = this.boundingBox; - let transform = this.matrixWorld; - let tBox = Utils.computeTransformedBoundingBox(box, transform); - - return tBox; - }; - - /** - * returns points inside the profile points - * - * maxDepth: search points up to the given octree depth - * - * - * The return value is an array with all segments of the profile path - * let segment = { - * start: THREE.Vector3, - * end: THREE.Vector3, - * points: {} - * project: function() - * }; - * - * The project() function inside each segment can be used to transform - * that segments point coordinates to line up along the x-axis. - * - * - */ - getPointsInProfile (profile, maxDepth, callback) { - if (callback) { - let request = new Potree.ProfileRequest(this, profile, maxDepth, callback); - this.profileRequests.push(request); - - return request; - } - - let points = { - segments: [], - boundingBox: new THREE.Box3(), - projectedBoundingBox: new THREE.Box2() - }; - - // evaluate segments - for (let i = 0; i < profile.points.length - 1; i++) { - let start = profile.points[i]; - let end = profile.points[i + 1]; - let ps = this.getProfile(start, end, profile.width, maxDepth); - - let segment = { - start: start, - end: end, - points: ps, - project: null - }; - - points.segments.push(segment); - - points.boundingBox.expandByPoint(ps.boundingBox.min); - points.boundingBox.expandByPoint(ps.boundingBox.max); - } - - // add projection functions to the segments - let mileage = new THREE.Vector3(); - for (let i = 0; i < points.segments.length; i++) { - let segment = points.segments[i]; - let start = segment.start; - let end = segment.end; - - let project = (function (_start, _end, _mileage, _boundingBox) { - let start = _start; - let end = _end; - let mileage = _mileage; - let boundingBox = _boundingBox; - - let xAxis = new THREE.Vector3(1, 0, 0); - let dir = new THREE.Vector3().subVectors(end, start); - dir.y = 0; - dir.normalize(); - let alpha = Math.acos(xAxis.dot(dir)); - if (dir.z > 0) { - alpha = -alpha; - } - - return function (position) { - let toOrigin = new THREE.Matrix4().makeTranslation(-start.x, -boundingBox.min.y, -start.z); - let alignWithX = new THREE.Matrix4().makeRotationY(-alpha); - let applyMileage = new THREE.Matrix4().makeTranslation(mileage.x, 0, 0); - - let pos = position.clone(); - pos.applyMatrix4(toOrigin); - pos.applyMatrix4(alignWithX); - pos.applyMatrix4(applyMileage); - - return pos; - }; - }(start, end, mileage.clone(), points.boundingBox.clone())); - - segment.project = project; - - mileage.x += new THREE.Vector3(start.x, 0, start.z).distanceTo(new THREE.Vector3(end.x, 0, end.z)); - mileage.y += end.y - start.y; - } - - points.projectedBoundingBox.min.x = 0; - points.projectedBoundingBox.min.y = points.boundingBox.min.y; - points.projectedBoundingBox.max.x = mileage.x; - points.projectedBoundingBox.max.y = points.boundingBox.max.y; - - return points; - } - - /** - * returns points inside the given profile bounds. - * - * start: - * end: - * width: - * depth: search points up to the given octree depth - * callback: if specified, points are loaded before searching - * - * - */ - getProfile (start, end, width, depth, callback) { - let request = new Potree.ProfileRequest(start, end, width, depth, callback); - this.profileRequests.push(request); - }; - - getVisibleExtent () { - return this.visibleBounds.applyMatrix4(this.matrixWorld); - }; - - intersectsPoint(position){ - - let rootAvailable = this.pcoGeometry.root && this.pcoGeometry.root.geometry; - - if(!rootAvailable){ - return false; - } - - if(typeof this.signedDistanceField === "undefined"){ - - const resolution = 32; - const field = new Float32Array(resolution ** 3).fill(Infinity); - - const positions = this.pcoGeometry.root.geometry.attributes.position; - const boundingBox = this.boundingBox; - - const n = positions.count; - - for(let i = 0; i < n; i = i + 3){ - const x = positions.array[3 * i + 0]; - const y = positions.array[3 * i + 1]; - const z = positions.array[3 * i + 2]; - - const ix = parseInt(Math.min(resolution * (x / boundingBox.max.x), resolution - 1)); - const iy = parseInt(Math.min(resolution * (y / boundingBox.max.y), resolution - 1)); - const iz = parseInt(Math.min(resolution * (z / boundingBox.max.z), resolution - 1)); - - const index = ix + iy * resolution + iz * resolution * resolution; - - field[index] = 0; - } - - const sdf = { - resolution: resolution, - field: field, - }; - - this.signedDistanceField = sdf; - } - - - { - const sdf = this.signedDistanceField; - const boundingBox = this.boundingBox; - - const toObjectSpace = new THREE.Matrix4().getInverse(this.matrixWorld); - - const objPos = position.clone().applyMatrix4(toObjectSpace); - - const resolution = sdf.resolution; - const ix = parseInt(resolution * (objPos.x / boundingBox.max.x)); - const iy = parseInt(resolution * (objPos.y / boundingBox.max.y)); - const iz = parseInt(resolution * (objPos.z / boundingBox.max.z)); - - if(ix < 0 || iy < 0 || iz < 0){ - return false; - } - if(ix >= resolution || iy >= resolution || iz >= resolution){ - return false; - } - - const index = ix + iy * resolution + iz * resolution * resolution; - - const value = sdf.field[index]; - - if(value === 0){ - return true; - } - - } - - return false; - - } - - /** - * - * - * - * params.pickWindowSize: Look for points inside a pixel window of this size. - * Use odd values: 1, 3, 5, ... - * - * - * TODO: only draw pixels that are actually read with readPixels(). - * - */ - pick(viewer, camera, ray, params = {}){ - - let renderer = viewer.renderer; - let pRenderer = viewer.pRenderer; - - performance.mark("pick-start"); - - let getVal = (a, b) => a !== undefined ? a : b; - - let pickWindowSize = getVal(params.pickWindowSize, 17); - let pickOutsideClipRegion = getVal(params.pickOutsideClipRegion, false); - - pickWindowSize = 65; - - let size = renderer.getSize(new THREE.Vector2()); - - let width = Math.ceil(getVal(params.width, size.width)); - let height = Math.ceil(getVal(params.height, size.height)); - - let pointSizeType = getVal(params.pointSizeType, this.material.pointSizeType); - let pointSize = getVal(params.pointSize, this.material.size); - - let nodes = this.nodesOnRay(this.visibleNodes, ray); - - if (nodes.length === 0) { - return null; - } - - if (!this.pickState) { - let scene = new THREE.Scene(); - - let material = new Potree.PointCloudMaterial(); - material.activeAttributeName = "indices"; - - let renderTarget = new THREE.WebGLRenderTarget( - 1, 1, - { minFilter: THREE.LinearFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat } - ); - - this.pickState = { - renderTarget: renderTarget, - material: material, - scene: scene - }; - }; - - let pickState = this.pickState; - let pickMaterial = pickState.material; - - { // update pick material - pickMaterial.pointSizeType = pointSizeType; - //pickMaterial.shape = this.material.shape; - pickMaterial.shape = Potree.PointShape.PARABOLOID; - - pickMaterial.uniforms.uFilterReturnNumberRange.value = this.material.uniforms.uFilterReturnNumberRange.value; - pickMaterial.uniforms.uFilterNumberOfReturnsRange.value = this.material.uniforms.uFilterNumberOfReturnsRange.value; - pickMaterial.uniforms.uFilterGPSTimeClipRange.value = this.material.uniforms.uFilterGPSTimeClipRange.value; - pickMaterial.uniforms.uFilterPointSourceIDClipRange.value = this.material.uniforms.uFilterPointSourceIDClipRange.value; - - pickMaterial.activeAttributeName = "indices"; - - pickMaterial.size = pointSize; - pickMaterial.uniforms.minSize.value = this.material.uniforms.minSize.value; - pickMaterial.uniforms.maxSize.value = this.material.uniforms.maxSize.value; - pickMaterial.classification = this.material.classification; - pickMaterial.recomputeClassification(); - - if(params.pickClipped){ - pickMaterial.clipBoxes = this.material.clipBoxes; - pickMaterial.uniforms.clipBoxes = this.material.uniforms.clipBoxes; - if(this.material.clipTask === Potree.ClipTask.HIGHLIGHT){ - pickMaterial.clipTask = Potree.ClipTask.NONE; - }else { - pickMaterial.clipTask = this.material.clipTask; - } - pickMaterial.clipMethod = this.material.clipMethod; - }else { - pickMaterial.clipBoxes = []; - } - - this.updateMaterial(pickMaterial, nodes, camera, renderer); - } - - pickState.renderTarget.setSize(width, height); - - let pixelPos = new THREE.Vector2(params.x, params.y); - - let gl = renderer.getContext(); - gl.enable(gl.SCISSOR_TEST); - gl.scissor( - parseInt(pixelPos.x - (pickWindowSize - 1) / 2), - parseInt(pixelPos.y - (pickWindowSize - 1) / 2), - parseInt(pickWindowSize), parseInt(pickWindowSize)); - - - renderer.state.buffers.depth.setTest(pickMaterial.depthTest); - renderer.state.buffers.depth.setMask(pickMaterial.depthWrite); - renderer.state.setBlending(THREE.NoBlending); - - { // RENDER - renderer.setRenderTarget(pickState.renderTarget); - gl.clearColor(0, 0, 0, 0); - renderer.clear(true, true, true); - - let tmp = this.material; - this.material = pickMaterial; - - pRenderer.renderOctree(this, nodes, camera, pickState.renderTarget); - - this.material = tmp; - } - - let clamp = (number, min, max) => Math.min(Math.max(min, number), max); - - let x = parseInt(clamp(pixelPos.x - (pickWindowSize - 1) / 2, 0, width)); - let y = parseInt(clamp(pixelPos.y - (pickWindowSize - 1) / 2, 0, height)); - let w = parseInt(Math.min(x + pickWindowSize, width) - x); - let h = parseInt(Math.min(y + pickWindowSize, height) - y); - - let pixelCount = w * h; - let buffer = new Uint8Array(4 * pixelCount); - - gl.readPixels(x, y, pickWindowSize, pickWindowSize, gl.RGBA, gl.UNSIGNED_BYTE, buffer); - - renderer.setRenderTarget(null); - renderer.state.reset(); - renderer.setScissorTest(false); - gl.disable(gl.SCISSOR_TEST); - - let pixels = buffer; - let ibuffer = new Uint32Array(buffer.buffer); - - // find closest hit inside pixelWindow boundaries - let min = Number.MAX_VALUE; - let hits = []; - for (let u = 0; u < pickWindowSize; u++) { - for (let v = 0; v < pickWindowSize; v++) { - let offset = (u + v * pickWindowSize); - let distance = Math.pow(u - (pickWindowSize - 1) / 2, 2) + Math.pow(v - (pickWindowSize - 1) / 2, 2); - - let pcIndex = pixels[4 * offset + 3]; - pixels[4 * offset + 3] = 0; - let pIndex = ibuffer[offset]; - - if(!(pcIndex === 0 && pIndex === 0) && (pcIndex !== undefined) && (pIndex !== undefined)){ - let hit = { - pIndex: pIndex, - pcIndex: pcIndex, - distanceToCenter: distance - }; - - if(params.all){ - hits.push(hit); - }else { - if(hits.length > 0){ - if(distance < hits[0].distanceToCenter){ - hits[0] = hit; - } - }else { - hits.push(hit); - } - } - - - } - } - } - - //DEBUG: show panel with pick image - // { - // let img = Utils.pixelsArrayToImage(buffer, w, h); - // let screenshot = img.src; - - // if(!this.debugDIV){ - // this.debugDIV = $(` - //
        `); - // $(document.body).append(this.debugDIV); - // } - - // this.debugDIV.empty(); - // this.debugDIV.append($(``)); - // //$(this.debugWindow.document).append($(``)); - // //this.debugWindow.document.write(''); - // } - - - for(let hit of hits){ - let point = {}; - - if (!nodes[hit.pcIndex]) { - return null; - } - - let node = nodes[hit.pcIndex]; - let pc = node.sceneNode; - let geometry = node.geometryNode.geometry; - - for(let attributeName in geometry.attributes){ - let attribute = geometry.attributes[attributeName]; - - if (attributeName === 'position') { - let x = attribute.array[3 * hit.pIndex + 0]; - let y = attribute.array[3 * hit.pIndex + 1]; - let z = attribute.array[3 * hit.pIndex + 2]; - - let position = new THREE.Vector3(x, y, z); - position.applyMatrix4(pc.matrixWorld); - - point[attributeName] = position; - } else if (attributeName === 'indices') { - - } else { - - let values = attribute.array.slice(attribute.itemSize * hit.pIndex, attribute.itemSize * (hit.pIndex + 1)) ; - - if(attribute.potree){ - const {scale, offset} = attribute.potree; - values = values.map(v => v / scale + offset); - } - - point[attributeName] = values; - - //debugger; - //if (values.itemSize === 1) { - // point[attribute.name] = values.array[hit.pIndex]; - //} else { - // let value = []; - // for (let j = 0; j < values.itemSize; j++) { - // value.push(values.array[values.itemSize * hit.pIndex + j]); - // } - // point[attribute.name] = value; - //} - } - - } - - hit.point = point; - } - - performance.mark("pick-end"); - performance.measure("pick", "pick-start", "pick-end"); - - if(params.all){ - return hits.map(hit => hit.point); - }else { - if(hits.length === 0){ - return null; - }else { - return hits[0].point; - //let sorted = hits.sort( (a, b) => a.distanceToCenter - b.distanceToCenter); - - //return sorted[0].point; - } - } - - }; - - * getFittedBoxGen(boxNode){ - let start = performance.now(); - - let shrinkedLocalBounds = new THREE.Box3(); - let worldToBox = new THREE.Matrix4().getInverse(boxNode.matrixWorld); - - for(let node of this.visibleNodes){ - if(!node.sceneNode){ - continue; - } - - let buffer = node.geometryNode.buffer; - - let posOffset = buffer.offset("position"); - let stride = buffer.stride; - let view = new DataView(buffer.data); - - let objectToBox = new THREE.Matrix4().multiplyMatrices(worldToBox, node.sceneNode.matrixWorld); - - let pos = new THREE.Vector4(); - for(let i = 0; i < buffer.numElements; i++){ - let x = view.getFloat32(i * stride + posOffset + 0, true); - let y = view.getFloat32(i * stride + posOffset + 4, true); - let z = view.getFloat32(i * stride + posOffset + 8, true); - - pos.set(x, y, z, 1); - pos.applyMatrix4(objectToBox); - - if(-0.5 < pos.x && pos.x < 0.5){ - if(-0.5 < pos.y && pos.y < 0.5){ - if(-0.5 < pos.z && pos.z < 0.5){ - shrinkedLocalBounds.expandByPoint(pos); - } - } - } - } - - yield; - } - - let fittedPosition = shrinkedLocalBounds.getCenter(new THREE.Vector3()).applyMatrix4(boxNode.matrixWorld); - - let fitted = new THREE.Object3D(); - fitted.position.copy(fittedPosition); - fitted.scale.copy(boxNode.scale); - fitted.rotation.copy(boxNode.rotation); - - let ds = new THREE.Vector3().subVectors(shrinkedLocalBounds.max, shrinkedLocalBounds.min); - fitted.scale.multiply(ds); - - let duration = performance.now() - start; - console.log("duration: ", duration); - - yield fitted; - } - - getFittedBox(boxNode, maxLevel = Infinity){ - - maxLevel = Infinity; - - let start = performance.now(); - - let shrinkedLocalBounds = new THREE.Box3(); - let worldToBox = new THREE.Matrix4().getInverse(boxNode.matrixWorld); - - for(let node of this.visibleNodes){ - if(!node.sceneNode || node.getLevel() > maxLevel){ - continue; - } - - let buffer = node.geometryNode.buffer; - - let posOffset = buffer.offset("position"); - let stride = buffer.stride; - let view = new DataView(buffer.data); - - let objectToBox = new THREE.Matrix4().multiplyMatrices(worldToBox, node.sceneNode.matrixWorld); - - let pos = new THREE.Vector4(); - for(let i = 0; i < buffer.numElements; i++){ - let x = view.getFloat32(i * stride + posOffset + 0, true); - let y = view.getFloat32(i * stride + posOffset + 4, true); - let z = view.getFloat32(i * stride + posOffset + 8, true); - - pos.set(x, y, z, 1); - pos.applyMatrix4(objectToBox); - - if(-0.5 < pos.x && pos.x < 0.5){ - if(-0.5 < pos.y && pos.y < 0.5){ - if(-0.5 < pos.z && pos.z < 0.5){ - shrinkedLocalBounds.expandByPoint(pos); - } - } - } - } - } - - let fittedPosition = shrinkedLocalBounds.getCenter(new THREE.Vector3()).applyMatrix4(boxNode.matrixWorld); - - let fitted = new THREE.Object3D(); - fitted.position.copy(fittedPosition); - fitted.scale.copy(boxNode.scale); - fitted.rotation.copy(boxNode.rotation); - - let ds = new THREE.Vector3().subVectors(shrinkedLocalBounds.max, shrinkedLocalBounds.min); - fitted.scale.multiply(ds); - - let duration = performance.now() - start; - console.log("duration: ", duration); - - return fitted; - } - - get progress () { - return this.visibleNodes.length / this.visibleGeometry.length; - } - - find(name){ - let node = null; - for(let char of name){ - if(char === "r"){ - node = this.root; - }else { - node = node.children[char]; - } - } - - return node; - } - - get visible(){ - return this._visible; - } - - set visible(value){ - - if(value !== this._visible){ - this._visible = value; - - this.dispatchEvent({type: 'visibility_changed', pointcloud: this}); - } - - } - - } - - class Points { - - constructor () { - this.boundingBox = new THREE.Box3(); - this.numPoints = 0; - this.data = {}; - } - - add (points) { - let currentSize = this.numPoints; - let additionalSize = points.numPoints; - let newSize = currentSize + additionalSize; - - let thisAttributes = Object.keys(this.data); - let otherAttributes = Object.keys(points.data); - let attributes = new Set([...thisAttributes, ...otherAttributes]); - - for (let attribute of attributes) { - if (thisAttributes.includes(attribute) && otherAttributes.includes(attribute)) { - // attribute in both, merge - let Type = this.data[attribute].constructor; - let merged = new Type(this.data[attribute].length + points.data[attribute].length); - merged.set(this.data[attribute], 0); - merged.set(points.data[attribute], this.data[attribute].length); - this.data[attribute] = merged; - } else if (thisAttributes.includes(attribute) && !otherAttributes.includes(attribute)) { - // attribute only in this; take over this and expand to new size - let elementsPerPoint = this.data[attribute].length / this.numPoints; - let Type = this.data[attribute].constructor; - let expanded = new Type(elementsPerPoint * newSize); - expanded.set(this.data[attribute], 0); - this.data[attribute] = expanded; - } else if (!thisAttributes.includes(attribute) && otherAttributes.includes(attribute)) { - // attribute only in points to be added; take over new points and expand to new size - let elementsPerPoint = points.data[attribute].length / points.numPoints; - let Type = points.data[attribute].constructor; - let expanded = new Type(elementsPerPoint * newSize); - expanded.set(points.data[attribute], elementsPerPoint * currentSize); - this.data[attribute] = expanded; - } - } - - this.numPoints = newSize; - - this.boundingBox.union(points.boundingBox); - } - } - - /** - * - * code adapted from three.js BoxHelper.js - * https://github.com/mrdoob/three.js/blob/dev/src/helpers/BoxHelper.js - * - * @author mrdoob / http://mrdoob.com/ - * @author Mugen87 / http://github.com/Mugen87 - * @author mschuetz / http://potree.org - */ - - class Box3Helper extends THREE.LineSegments { - constructor (box, color) { - if (color === undefined) color = 0xffff00; - - let indices = new Uint16Array([ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ]); - let positions = new Float32Array([ - box.min.x, box.min.y, box.min.z, - box.max.x, box.min.y, box.min.z, - box.max.x, box.min.y, box.max.z, - box.min.x, box.min.y, box.max.z, - box.min.x, box.max.y, box.min.z, - box.max.x, box.max.y, box.min.z, - box.max.x, box.max.y, box.max.z, - box.min.x, box.max.y, box.max.z - ]); - - let geometry = new THREE.BufferGeometry(); - geometry.setIndex(new THREE.BufferAttribute(indices, 1)); - geometry.addAttribute('position', new THREE.BufferAttribute(positions, 3)); - - let material = new THREE.LineBasicMaterial({ color: color }); - - super(geometry, material); - } - } - - function updatePointClouds(pointclouds, camera, renderer){ - - for (let pointcloud of pointclouds) { - let start = performance.now(); - - for (let profileRequest of pointcloud.profileRequests) { - profileRequest.update(); - - let duration = performance.now() - start; - if(duration > 5){ - break; - } - } - - let duration = performance.now() - start; - } - - let result = updateVisibility(pointclouds, camera, renderer); - - for (let pointcloud of pointclouds) { - pointcloud.updateMaterial(pointcloud.material, pointcloud.visibleNodes, camera, renderer); - pointcloud.updateVisibleBounds(); - } - - exports.lru.freeMemory(); - - return result; - }; - - - - function updateVisibilityStructures(pointclouds, camera, renderer) { - let frustums = []; - let camObjPositions = []; - let priorityQueue = new BinaryHeap(function (x) { return 1 / x.weight; }); - - for (let i = 0; i < pointclouds.length; i++) { - let pointcloud = pointclouds[i]; - - if (!pointcloud.initialized()) { - continue; - } - - pointcloud.numVisibleNodes = 0; - pointcloud.numVisiblePoints = 0; - pointcloud.deepestVisibleLevel = 0; - pointcloud.visibleNodes = []; - pointcloud.visibleGeometry = []; - - // frustum in object space - camera.updateMatrixWorld(); - let frustum = new THREE.Frustum(); - let viewI = camera.matrixWorldInverse; - let world = pointcloud.matrixWorld; - - // use close near plane for frustum intersection - let frustumCam = camera.clone(); - frustumCam.near = Math.min(camera.near, 0.1); - frustumCam.updateProjectionMatrix(); - let proj = camera.projectionMatrix; - - let fm = new THREE.Matrix4().multiply(proj).multiply(viewI).multiply(world); - frustum.setFromMatrix(fm); - frustums.push(frustum); - - // camera position in object space - let view = camera.matrixWorld; - let worldI = new THREE.Matrix4().getInverse(world); - let camMatrixObject = new THREE.Matrix4().multiply(worldI).multiply(view); - let camObjPos = new THREE.Vector3().setFromMatrixPosition(camMatrixObject); - camObjPositions.push(camObjPos); - - if (pointcloud.visible && pointcloud.root !== null) { - priorityQueue.push({pointcloud: i, node: pointcloud.root, weight: Number.MAX_VALUE}); - } - - // hide all previously visible nodes - // if(pointcloud.root instanceof PointCloudOctreeNode){ - // pointcloud.hideDescendants(pointcloud.root.sceneNode); - // } - if (pointcloud.root.isTreeNode()) { - pointcloud.hideDescendants(pointcloud.root.sceneNode); - } - - for (let j = 0; j < pointcloud.boundingBoxNodes.length; j++) { - pointcloud.boundingBoxNodes[j].visible = false; - } - } - - return { - 'frustums': frustums, - 'camObjPositions': camObjPositions, - 'priorityQueue': priorityQueue - }; - }; - - - function updateVisibility(pointclouds, camera, renderer){ - - let numVisibleNodes = 0; - let numVisiblePoints = 0; - - let numVisiblePointsInPointclouds = new Map(pointclouds.map(pc => [pc, 0])); - - let visibleNodes = []; - let visibleGeometry = []; - let unloadedGeometry = []; - - let lowestSpacing = Infinity; - - // calculate object space frustum and cam pos and setup priority queue - let s = updateVisibilityStructures(pointclouds, camera, renderer); - let frustums = s.frustums; - let camObjPositions = s.camObjPositions; - let priorityQueue = s.priorityQueue; - - let loadedToGPUThisFrame = 0; - - let domWidth = renderer.domElement.clientWidth; - let domHeight = renderer.domElement.clientHeight; - - // check if pointcloud has been transformed - // some code will only be executed if changes have been detected - if(!Potree._pointcloudTransformVersion){ - Potree._pointcloudTransformVersion = new Map(); - } - let pointcloudTransformVersion = Potree._pointcloudTransformVersion; - for(let pointcloud of pointclouds){ - - if(!pointcloud.visible){ - continue; - } - - pointcloud.updateMatrixWorld(); - - if(!pointcloudTransformVersion.has(pointcloud)){ - pointcloudTransformVersion.set(pointcloud, {number: 0, transform: pointcloud.matrixWorld.clone()}); - }else { - let version = pointcloudTransformVersion.get(pointcloud); - - if(!version.transform.equals(pointcloud.matrixWorld)){ - version.number++; - version.transform.copy(pointcloud.matrixWorld); - - pointcloud.dispatchEvent({ - type: "transformation_changed", - target: pointcloud - }); - } - } - } - - while (priorityQueue.size() > 0) { - let element = priorityQueue.pop(); - let node = element.node; - let parent = element.parent; - let pointcloud = pointclouds[element.pointcloud]; - - // { // restrict to certain nodes for debugging - // let allowedNodes = ["r", "r0", "r4"]; - // if(!allowedNodes.includes(node.name)){ - // continue; - // } - // } - - let box = node.getBoundingBox(); - let frustum = frustums[element.pointcloud]; - let camObjPos = camObjPositions[element.pointcloud]; - - let insideFrustum = frustum.intersectsBox(box); - let maxLevel = pointcloud.maxLevel || Infinity; - let level = node.getLevel(); - let visible = insideFrustum; - visible = visible && !(numVisiblePoints + node.getNumPoints() > Potree.pointBudget); - visible = visible && !(numVisiblePointsInPointclouds.get(pointcloud) + node.getNumPoints() > pointcloud.pointBudget); - visible = visible && level < maxLevel; - //visible = visible && node.name !== "r613"; - - let clipBoxes = pointcloud.material.clipBoxes; - if(true && clipBoxes.length > 0){ - - //node.debug = false; - - let numIntersecting = 0; - let numIntersectionVolumes = 0; - - //if(node.name === "r60"){ - // var a = 10; - //} - - for(let clipBox of clipBoxes){ - - let pcWorldInverse = new THREE.Matrix4().getInverse(pointcloud.matrixWorld); - let toPCObject = pcWorldInverse.multiply(clipBox.box.matrixWorld); - - let px = new THREE.Vector3(+0.5, 0, 0).applyMatrix4(pcWorldInverse); - let nx = new THREE.Vector3(-0.5, 0, 0).applyMatrix4(pcWorldInverse); - let py = new THREE.Vector3(0, +0.5, 0).applyMatrix4(pcWorldInverse); - let ny = new THREE.Vector3(0, -0.5, 0).applyMatrix4(pcWorldInverse); - let pz = new THREE.Vector3(0, 0, +0.5).applyMatrix4(pcWorldInverse); - let nz = new THREE.Vector3(0, 0, -0.5).applyMatrix4(pcWorldInverse); - - let pxN = new THREE.Vector3().subVectors(nx, px).normalize(); - let nxN = pxN.clone().multiplyScalar(-1); - let pyN = new THREE.Vector3().subVectors(ny, py).normalize(); - let nyN = pyN.clone().multiplyScalar(-1); - let pzN = new THREE.Vector3().subVectors(nz, pz).normalize(); - let nzN = pzN.clone().multiplyScalar(-1); - - let pxPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(pxN, px); - let nxPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(nxN, nx); - let pyPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(pyN, py); - let nyPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(nyN, ny); - let pzPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(pzN, pz); - let nzPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(nzN, nz); - - //if(window.debugdraw !== undefined && window.debugdraw === true && node.name === "r60"){ - - // Potree.utils.debugPlane(viewer.scene.scene, pxPlane, 1, 0xFF0000); - // Potree.utils.debugPlane(viewer.scene.scene, nxPlane, 1, 0x990000); - // Potree.utils.debugPlane(viewer.scene.scene, pyPlane, 1, 0x00FF00); - // Potree.utils.debugPlane(viewer.scene.scene, nyPlane, 1, 0x009900); - // Potree.utils.debugPlane(viewer.scene.scene, pzPlane, 1, 0x0000FF); - // Potree.utils.debugPlane(viewer.scene.scene, nzPlane, 1, 0x000099); - - // Potree.utils.debugBox(viewer.scene.scene, box, new THREE.Matrix4(), 0x00FF00); - // Potree.utils.debugBox(viewer.scene.scene, box, pointcloud.matrixWorld, 0xFF0000); - // Potree.utils.debugBox(viewer.scene.scene, clipBox.box.boundingBox, clipBox.box.matrixWorld, 0xFF0000); - - // window.debugdraw = false; - //} - - let frustum = new THREE.Frustum(pxPlane, nxPlane, pyPlane, nyPlane, pzPlane, nzPlane); - let intersects = frustum.intersectsBox(box); - - if(intersects){ - numIntersecting++; - } - numIntersectionVolumes++; - } - - let insideAny = numIntersecting > 0; - let insideAll = numIntersecting === numIntersectionVolumes; - - if(pointcloud.material.clipTask === ClipTask.SHOW_INSIDE){ - if(pointcloud.material.clipMethod === ClipMethod.INSIDE_ANY && insideAny){ - //node.debug = true - }else if(pointcloud.material.clipMethod === ClipMethod.INSIDE_ALL && insideAll){ - //node.debug = true; - }else { - visible = false; - } - } else if(pointcloud.material.clipTask === ClipTask.SHOW_OUTSIDE){ - //if(pointcloud.material.clipMethod === ClipMethod.INSIDE_ANY && !insideAny){ - // //visible = true; - // let a = 10; - //}else if(pointcloud.material.clipMethod === ClipMethod.INSIDE_ALL && !insideAll){ - // //visible = true; - // let a = 20; - //}else{ - // visible = false; - //} - } - - - } - - // visible = ["r", "r0", "r06", "r060"].includes(node.name); - // visible = ["r"].includes(node.name); - - if (node.spacing) { - lowestSpacing = Math.min(lowestSpacing, node.spacing); - } else if (node.geometryNode && node.geometryNode.spacing) { - lowestSpacing = Math.min(lowestSpacing, node.geometryNode.spacing); - } - - if (numVisiblePoints + node.getNumPoints() > Potree.pointBudget) { - break; - } - - if (!visible) { - continue; - } - - // TODO: not used, same as the declaration? - // numVisibleNodes++; - numVisiblePoints += node.getNumPoints(); - let numVisiblePointsInPointcloud = numVisiblePointsInPointclouds.get(pointcloud); - numVisiblePointsInPointclouds.set(pointcloud, numVisiblePointsInPointcloud + node.getNumPoints()); - - pointcloud.numVisibleNodes++; - pointcloud.numVisiblePoints += node.getNumPoints(); - - if (node.isGeometryNode() && (!parent || parent.isTreeNode())) { - if (node.isLoaded() && loadedToGPUThisFrame < 2) { - node = pointcloud.toTreeNode(node, parent); - loadedToGPUThisFrame++; - } else { - unloadedGeometry.push(node); - visibleGeometry.push(node); - } - } - - if (node.isTreeNode()) { - exports.lru.touch(node.geometryNode); - node.sceneNode.visible = true; - node.sceneNode.material = pointcloud.material; - - visibleNodes.push(node); - pointcloud.visibleNodes.push(node); - - if(node._transformVersion === undefined){ - node._transformVersion = -1; - } - let transformVersion = pointcloudTransformVersion.get(pointcloud); - if(node._transformVersion !== transformVersion.number){ - node.sceneNode.updateMatrix(); - node.sceneNode.matrixWorld.multiplyMatrices(pointcloud.matrixWorld, node.sceneNode.matrix); - node._transformVersion = transformVersion.number; - } - - if (pointcloud.showBoundingBox && !node.boundingBoxNode && node.getBoundingBox) { - let boxHelper = new Box3Helper(node.getBoundingBox()); - boxHelper.matrixAutoUpdate = false; - pointcloud.boundingBoxNodes.push(boxHelper); - node.boundingBoxNode = boxHelper; - node.boundingBoxNode.matrix.copy(pointcloud.matrixWorld); - } else if (pointcloud.showBoundingBox) { - node.boundingBoxNode.visible = true; - node.boundingBoxNode.matrix.copy(pointcloud.matrixWorld); - } else if (!pointcloud.showBoundingBox && node.boundingBoxNode) { - node.boundingBoxNode.visible = false; - } - - // if(node.boundingBoxNode !== undefined && exports.debug.allowedNodes !== undefined){ - // if(!exports.debug.allowedNodes.includes(node.name)){ - // node.boundingBoxNode.visible = false; - // } - // } - } - - // add child nodes to priorityQueue - let children = node.getChildren(); - for (let i = 0; i < children.length; i++) { - let child = children[i]; - - let weight = 0; - if(camera.isPerspectiveCamera){ - let sphere = child.getBoundingSphere(); - let center = sphere.center; - //let distance = sphere.center.distanceTo(camObjPos); - - let dx = camObjPos.x - center.x; - let dy = camObjPos.y - center.y; - let dz = camObjPos.z - center.z; - - let dd = dx * dx + dy * dy + dz * dz; - let distance = Math.sqrt(dd); - - - let radius = sphere.radius; - - let fov = (camera.fov * Math.PI) / 180; - let slope = Math.tan(fov / 2); - let projFactor = (0.5 * domHeight) / (slope * distance); - let screenPixelRadius = radius * projFactor; - - if(screenPixelRadius < pointcloud.minimumNodePixelSize){ - continue; - } - - weight = screenPixelRadius; - - if(distance - radius < 0){ - weight = Number.MAX_VALUE; - } - } else { - // TODO ortho visibility - let bb = child.getBoundingBox(); - let distance = child.getBoundingSphere().center.distanceTo(camObjPos); - let diagonal = bb.max.clone().sub(bb.min).length(); - //weight = diagonal / distance; - - weight = diagonal; - } - - priorityQueue.push({pointcloud: element.pointcloud, node: child, parent: node, weight: weight}); - } - }// end priority queue loop - - { // update DEM - let maxDEMLevel = 4; - let candidates = pointclouds - .filter(p => (p.generateDEM && p.dem instanceof Potree.DEM)); - for (let pointcloud of candidates) { - let updatingNodes = pointcloud.visibleNodes.filter(n => n.getLevel() <= maxDEMLevel); - pointcloud.dem.update(updatingNodes); - } - } - - for (let i = 0; i < Math.min(Potree.maxNodesLoading, unloadedGeometry.length); i++) { - unloadedGeometry[i].load(); - } - - return { - visibleNodes: visibleNodes, - numVisiblePoints: numVisiblePoints, - lowestSpacing: lowestSpacing - }; - }; - - class PointCloudArena4DNode extends PointCloudTreeNode { - constructor () { - super(); - - this.left = null; - this.right = null; - this.sceneNode = null; - this.kdtree = null; - } - - getNumPoints () { - return this.geometryNode.numPoints; - } - - isLoaded () { - return true; - } - - isTreeNode () { - return true; - } - - isGeometryNode () { - return false; - } - - getLevel () { - return this.geometryNode.level; - } - - getBoundingSphere () { - return this.geometryNode.boundingSphere; - } - - getBoundingBox () { - return this.geometryNode.boundingBox; - } - - toTreeNode (child) { - let geometryNode = null; - - if (this.left === child) { - geometryNode = this.left; - } else if (this.right === child) { - geometryNode = this.right; - } - - if (!geometryNode.loaded) { - return; - } - - let node = new PointCloudArena4DNode(); - let sceneNode = THREE.PointCloud(geometryNode.geometry, this.kdtree.material); - sceneNode.visible = false; - - node.kdtree = this.kdtree; - node.geometryNode = geometryNode; - node.sceneNode = sceneNode; - node.parent = this; - node.left = this.geometryNode.left; - node.right = this.geometryNode.right; - } - - getChildren () { - let children = []; - - if (this.left) { - children.push(this.left); - } - - if (this.right) { - children.push(this.right); - } - - return children; - } - }; - - class PointCloudArena4D$1 extends PointCloudTree{ - constructor (geometry) { - super(); - - this.root = null; - if (geometry.root) { - this.root = geometry.root; - } else { - geometry.addEventListener('hierarchy_loaded', () => { - this.root = geometry.root; - }); - } - - this.visiblePointsTarget = 2 * 1000 * 1000; - this.minimumNodePixelSize = 150; - - this.position.sub(geometry.offset); - this.updateMatrix(); - - this.numVisibleNodes = 0; - this.numVisiblePoints = 0; - - this.boundingBoxNodes = []; - this.loadQueue = []; - this.visibleNodes = []; - - this.pcoGeometry = geometry; - this.boundingBox = this.pcoGeometry.boundingBox; - this.boundingSphere = this.pcoGeometry.boundingSphere; - this.material = new PointCloudMaterial({vertexColors: THREE.VertexColors, size: 0.05, treeType: TreeType.KDTREE}); - this.material.sizeType = PointSizeType.ATTENUATED; - this.material.size = 0.05; - this.profileRequests = []; - this.name = ''; - } - - getBoundingBoxWorld () { - this.updateMatrixWorld(true); - let box = this.boundingBox; - let transform = this.matrixWorld; - let tBox = Utils.computeTransformedBoundingBox(box, transform); - - return tBox; - }; - - setName (name) { - if (this.name !== name) { - this.name = name; - this.dispatchEvent({type: 'name_changed', name: name, pointcloud: this}); - } - } - - getName () { - return this.name; - } - - getLevel () { - return this.level; - } - - toTreeNode (geometryNode, parent) { - let node = new PointCloudArena4DNode(); - let sceneNode = new THREE.Points(geometryNode.geometry, this.material); - - sceneNode.frustumCulled = false; - sceneNode.onBeforeRender = (_this, scene, camera, geometry, material, group) => { - if (material.program) { - _this.getContext().useProgram(material.program.program); - - if (material.program.getUniforms().map.level) { - let level = geometryNode.getLevel(); - material.uniforms.level.value = level; - material.program.getUniforms().map.level.setValue(_this.getContext(), level); - } - - if (this.visibleNodeTextureOffsets && material.program.getUniforms().map.vnStart) { - let vnStart = this.visibleNodeTextureOffsets.get(node); - material.uniforms.vnStart.value = vnStart; - material.program.getUniforms().map.vnStart.setValue(_this.getContext(), vnStart); - } - - if (material.program.getUniforms().map.pcIndex) { - let i = node.pcIndex ? node.pcIndex : this.visibleNodes.indexOf(node); - material.uniforms.pcIndex.value = i; - material.program.getUniforms().map.pcIndex.setValue(_this.getContext(), i); - } - } - }; - - node.geometryNode = geometryNode; - node.sceneNode = sceneNode; - node.pointcloud = this; - node.left = geometryNode.left; - node.right = geometryNode.right; - - if (!parent) { - this.root = node; - this.add(sceneNode); - } else { - parent.sceneNode.add(sceneNode); - - if (parent.left === geometryNode) { - parent.left = node; - } else if (parent.right === geometryNode) { - parent.right = node; - } - } - - let disposeListener = function () { - parent.sceneNode.remove(node.sceneNode); - - if (parent.left === node) { - parent.left = geometryNode; - } else if (parent.right === node) { - parent.right = geometryNode; - } - }; - geometryNode.oneTimeDisposeHandlers.push(disposeListener); - - return node; - } - - updateMaterial (material, visibleNodes, camera, renderer) { - material.fov = camera.fov * (Math.PI / 180); - material.screenWidth = renderer.domElement.clientWidth; - material.screenHeight = renderer.domElement.clientHeight; - material.spacing = this.pcoGeometry.spacing; - material.near = camera.near; - material.far = camera.far; - - // reduce shader source updates by setting maxLevel slightly higher than actually necessary - if (this.maxLevel > material.levels) { - material.levels = this.maxLevel + 2; - } - - // material.uniforms.octreeSize.value = this.boundingBox.size().x; - let bbSize = this.boundingBox.getSize(new THREE.Vector3()); - material.bbSize = [bbSize.x, bbSize.y, bbSize.z]; - } - - updateVisibleBounds () { - - } - - hideDescendants (object) { - let stack = []; - for (let i = 0; i < object.children.length; i++) { - let child = object.children[i]; - if (child.visible) { - stack.push(child); - } - } - - while (stack.length > 0) { - let child = stack.shift(); - - child.visible = false; - if (child.boundingBoxNode) { - child.boundingBoxNode.visible = false; - } - - for (let i = 0; i < child.children.length; i++) { - let childOfChild = child.children[i]; - if (childOfChild.visible) { - stack.push(childOfChild); - } - } - } - } - - updateMatrixWorld (force) { - // node.matrixWorld.multiplyMatrices( node.parent.matrixWorld, node.matrix ); - - if (this.matrixAutoUpdate === true) this.updateMatrix(); - - if (this.matrixWorldNeedsUpdate === true || force === true) { - if (this.parent === undefined) { - this.matrixWorld.copy(this.matrix); - } else { - this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix); - } - - this.matrixWorldNeedsUpdate = false; - - force = true; - } - } - - nodesOnRay (nodes, ray) { - let nodesOnRay = []; - - let _ray = ray.clone(); - for (let i = 0; i < nodes.length; i++) { - let node = nodes[i]; - let sphere = node.getBoundingSphere().clone().applyMatrix4(node.sceneNode.matrixWorld); - // TODO Unused: let box = node.getBoundingBox().clone().applyMatrix4(node.sceneNode.matrixWorld); - - if (_ray.intersectsSphere(sphere)) { - nodesOnRay.push(node); - } - // if(_ray.isIntersectionBox(box)){ - // nodesOnRay.push(node); - // } - } - - return nodesOnRay; - } - - pick(viewer, camera, ray, params = {}){ - - let renderer = viewer.renderer; - let pRenderer = viewer.pRenderer; - - performance.mark("pick-start"); - - let getVal = (a, b) => a !== undefined ? a : b; - - let pickWindowSize = getVal(params.pickWindowSize, 17); - let pickOutsideClipRegion = getVal(params.pickOutsideClipRegion, false); - - let size = renderer.getSize(new THREE.Vector2()); - - let width = Math.ceil(getVal(params.width, size.width)); - let height = Math.ceil(getVal(params.height, size.height)); - - let pointSizeType = getVal(params.pointSizeType, this.material.pointSizeType); - let pointSize = getVal(params.pointSize, this.material.size); - - let nodes = this.nodesOnRay(this.visibleNodes, ray); - - if (nodes.length === 0) { - return null; - } - - if (!this.pickState) { - let scene = new THREE.Scene(); - - let material = new PointCloudMaterial(); - material.activeAttributeName = "indices"; - - let renderTarget = new THREE.WebGLRenderTarget( - 1, 1, - { minFilter: THREE.LinearFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat } - ); - - this.pickState = { - renderTarget: renderTarget, - material: material, - scene: scene - }; - }; - - let pickState = this.pickState; - let pickMaterial = pickState.material; - - { // update pick material - pickMaterial.pointSizeType = pointSizeType; - pickMaterial.shape = this.material.shape; - - pickMaterial.size = pointSize; - pickMaterial.uniforms.minSize.value = this.material.uniforms.minSize.value; - pickMaterial.uniforms.maxSize.value = this.material.uniforms.maxSize.value; - pickMaterial.classification = this.material.classification; - if(params.pickClipped){ - pickMaterial.clipBoxes = this.material.clipBoxes; - if(this.material.clipTask === ClipTask.HIGHLIGHT){ - pickMaterial.clipTask = ClipTask.NONE; - }else { - pickMaterial.clipTask = this.material.clipTask; - } - }else { - pickMaterial.clipBoxes = []; - } - - this.updateMaterial(pickMaterial, nodes, camera, renderer); - } - - pickState.renderTarget.setSize(width, height); - - let pixelPos = new THREE.Vector2(params.x, params.y); - - let gl = renderer.getContext(); - gl.enable(gl.SCISSOR_TEST); - gl.scissor( - parseInt(pixelPos.x - (pickWindowSize - 1) / 2), - parseInt(pixelPos.y - (pickWindowSize - 1) / 2), - parseInt(pickWindowSize), parseInt(pickWindowSize)); - - - renderer.state.buffers.depth.setTest(pickMaterial.depthTest); - renderer.state.buffers.depth.setMask(pickMaterial.depthWrite); - renderer.state.setBlending(THREE.NoBlending); - - renderer.clearTarget(pickState.renderTarget, true, true, true); - - { // RENDER - renderer.setRenderTarget(pickState.renderTarget); - gl.clearColor(0, 0, 0, 0); - renderer.clearTarget( pickState.renderTarget, true, true, true ); - - let tmp = this.material; - this.material = pickMaterial; - - pRenderer.renderOctree(this, nodes, camera, pickState.renderTarget); - - this.material = tmp; - } - - let clamp = (number, min, max) => Math.min(Math.max(min, number), max); - - let x = parseInt(clamp(pixelPos.x - (pickWindowSize - 1) / 2, 0, width)); - let y = parseInt(clamp(pixelPos.y - (pickWindowSize - 1) / 2, 0, height)); - let w = parseInt(Math.min(x + pickWindowSize, width) - x); - let h = parseInt(Math.min(y + pickWindowSize, height) - y); - - let pixelCount = w * h; - let buffer = new Uint8Array(4 * pixelCount); - - gl.readPixels(x, y, pickWindowSize, pickWindowSize, gl.RGBA, gl.UNSIGNED_BYTE, buffer); - - renderer.setRenderTarget(null); - renderer.state.reset(); - renderer.setScissorTest(false); - gl.disable(gl.SCISSOR_TEST); - - let pixels = buffer; - let ibuffer = new Uint32Array(buffer.buffer); - - // find closest hit inside pixelWindow boundaries - let min = Number.MAX_VALUE; - let hits = []; - for (let u = 0; u < pickWindowSize; u++) { - for (let v = 0; v < pickWindowSize; v++) { - let offset = (u + v * pickWindowSize); - let distance = Math.pow(u - (pickWindowSize - 1) / 2, 2) + Math.pow(v - (pickWindowSize - 1) / 2, 2); - - let pcIndex = pixels[4 * offset + 3]; - pixels[4 * offset + 3] = 0; - let pIndex = ibuffer[offset]; - - if(!(pcIndex === 0 && pIndex === 0) && (pcIndex !== undefined) && (pIndex !== undefined)){ - let hit = { - pIndex: pIndex, - pcIndex: pcIndex, - distanceToCenter: distance - }; - - if(params.all){ - hits.push(hit); - }else { - if(hits.length > 0){ - if(distance < hits[0].distanceToCenter){ - hits[0] = hit; - } - }else { - hits.push(hit); - } - } - - - } - } - } - - - - for(let hit of hits){ - let point = {}; - - if (!nodes[hit.pcIndex]) { - return null; - } - - let node = nodes[hit.pcIndex]; - let pc = node.sceneNode; - let geometry = node.geometryNode.geometry; - - for(let attributeName in geometry.attributes){ - let attribute = geometry.attributes[attributeName]; - - if (attributeName === 'position') { - let x = attribute.array[3 * hit.pIndex + 0]; - let y = attribute.array[3 * hit.pIndex + 1]; - let z = attribute.array[3 * hit.pIndex + 2]; - - let position = new THREE.Vector3(x, y, z); - position.applyMatrix4(pc.matrixWorld); - - point[attributeName] = position; - } else if (attributeName === 'indices') { - - } else { - //if (values.itemSize === 1) { - // point[attribute.name] = values.array[hit.pIndex]; - //} else { - // let value = []; - // for (let j = 0; j < values.itemSize; j++) { - // value.push(values.array[values.itemSize * hit.pIndex + j]); - // } - // point[attribute.name] = value; - //} - } - - } - - hit.point = point; - } - - performance.mark("pick-end"); - performance.measure("pick", "pick-start", "pick-end"); - - if(params.all){ - return hits.map(hit => hit.point); - }else { - if(hits.length === 0){ - return null; - }else { - return hits[0].point; - } - } - } - - computeVisibilityTextureData(nodes){ - - if(exports.measureTimings) performance.mark("computeVisibilityTextureData-start"); - - let data = new Uint8Array(nodes.length * 3); - let visibleNodeTextureOffsets = new Map(); - - // copy array - nodes = nodes.slice(); - - // sort by level and number - let sort = function (a, b) { - let la = a.geometryNode.level; - let lb = b.geometryNode.level; - let na = a.geometryNode.number; - let nb = b.geometryNode.number; - if (la !== lb) return la - lb; - if (na < nb) return -1; - if (na > nb) return 1; - return 0; - }; - nodes.sort(sort); - - let visibleNodeNames = []; - for (let i = 0; i < nodes.length; i++) { - visibleNodeNames.push(nodes[i].geometryNode.number); - } - - for (let i = 0; i < nodes.length; i++) { - let node = nodes[i]; - - visibleNodeTextureOffsets.set(node, i); - - let b1 = 0; // children - let b2 = 0; // offset to first child - let b3 = 0; // split - - if (node.geometryNode.left && visibleNodeNames.indexOf(node.geometryNode.left.number) > 0) { - b1 += 1; - b2 = visibleNodeNames.indexOf(node.geometryNode.left.number) - i; - } - if (node.geometryNode.right && visibleNodeNames.indexOf(node.geometryNode.right.number) > 0) { - b1 += 2; - b2 = (b2 === 0) ? visibleNodeNames.indexOf(node.geometryNode.right.number) - i : b2; - } - - if (node.geometryNode.split === 'X') { - b3 = 1; - } else if (node.geometryNode.split === 'Y') { - b3 = 2; - } else if (node.geometryNode.split === 'Z') { - b3 = 4; - } - - data[i * 3 + 0] = b1; - data[i * 3 + 1] = b2; - data[i * 3 + 2] = b3; - } - - if(exports.measureTimings){ - performance.mark("computeVisibilityTextureData-end"); - performance.measure("render.computeVisibilityTextureData", "computeVisibilityTextureData-start", "computeVisibilityTextureData-end"); - } - - return { - data: data, - offsets: visibleNodeTextureOffsets - }; - } - - get progress () { - if (this.pcoGeometry.root) { - return exports.numNodesLoading > 0 ? 0 : 1; - } else { - return 0; - } - } - }; - - // Copied from three.js: WebGLRenderer.js - function paramThreeToGL(_gl, p) { - - let extension; - - if (p === THREE.RepeatWrapping) return _gl.REPEAT; - if (p === THREE.ClampToEdgeWrapping) return _gl.CLAMP_TO_EDGE; - if (p === THREE.MirroredRepeatWrapping) return _gl.MIRRORED_REPEAT; - - if (p === THREE.NearestFilter) return _gl.NEAREST; - if (p === THREE.NearestMipMapNearestFilter) return _gl.NEAREST_MIPMAP_NEAREST; - if (p === THREE.NearestMipMapLinearFilter) return _gl.NEAREST_MIPMAP_LINEAR; - - if (p === THREE.LinearFilter) return _gl.LINEAR; - if (p === THREE.LinearMipMapNearestFilter) return _gl.LINEAR_MIPMAP_NEAREST; - if (p === THREE.LinearMipMapLinearFilter) return _gl.LINEAR_MIPMAP_LINEAR; - - if (p === THREE.UnsignedByteType) return _gl.UNSIGNED_BYTE; - if (p === THREE.UnsignedShort4444Type) return _gl.UNSIGNED_SHORT_4_4_4_4; - if (p === THREE.UnsignedShort5551Type) return _gl.UNSIGNED_SHORT_5_5_5_1; - if (p === THREE.UnsignedShort565Type) return _gl.UNSIGNED_SHORT_5_6_5; - - if (p === THREE.ByteType) return _gl.BYTE; - if (p === THREE.ShortType) return _gl.SHORT; - if (p === THREE.UnsignedShortType) return _gl.UNSIGNED_SHORT; - if (p === THREE.IntType) return _gl.INT; - if (p === THREE.UnsignedIntType) return _gl.UNSIGNED_INT; - if (p === THREE.FloatType) return _gl.FLOAT; - - if (p === THREE.HalfFloatType) { - - extension = extensions.get('OES_texture_half_float'); - - if (extension !== null) return extension.HALF_FLOAT_OES; - - } - - if (p === THREE.AlphaFormat) return _gl.ALPHA; - if (p === THREE.RGBFormat) return _gl.RGB; - if (p === THREE.RGBAFormat) return _gl.RGBA; - if (p === THREE.LuminanceFormat) return _gl.LUMINANCE; - if (p === THREE.LuminanceAlphaFormat) return _gl.LUMINANCE_ALPHA; - if (p === THREE.DepthFormat) return _gl.DEPTH_COMPONENT; - if (p === THREE.DepthStencilFormat) return _gl.DEPTH_STENCIL; - - if (p === THREE.AddEquation) return _gl.FUNC_ADD; - if (p === THREE.SubtractEquation) return _gl.FUNC_SUBTRACT; - if (p === THREE.ReverseSubtractEquation) return _gl.FUNC_REVERSE_SUBTRACT; - - if (p === THREE.ZeroFactor) return _gl.ZERO; - if (p === THREE.OneFactor) return _gl.ONE; - if (p === THREE.SrcColorFactor) return _gl.SRC_COLOR; - if (p === THREE.OneMinusSrcColorFactor) return _gl.ONE_MINUS_SRC_COLOR; - if (p === THREE.SrcAlphaFactor) return _gl.SRC_ALPHA; - if (p === THREE.OneMinusSrcAlphaFactor) return _gl.ONE_MINUS_SRC_ALPHA; - if (p === THREE.DstAlphaFactor) return _gl.DST_ALPHA; - if (p === THREE.OneMinusDstAlphaFactor) return _gl.ONE_MINUS_DST_ALPHA; - - if (p === THREE.DstColorFactor) return _gl.DST_COLOR; - if (p === THREE.OneMinusDstColorFactor) return _gl.ONE_MINUS_DST_COLOR; - if (p === THREE.SrcAlphaSaturateFactor) return _gl.SRC_ALPHA_SATURATE; - - if (p === THREE.RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || - p === THREE.RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format) { - - extension = extensions.get('WEBGL_compressed_texture_s3tc'); - - if (extension !== null) { - - if (p === THREE.RGB_S3TC_DXT1_Format) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT; - if (p === THREE.RGBA_S3TC_DXT1_Format) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT; - if (p === THREE.RGBA_S3TC_DXT3_Format) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT; - if (p === THREE.RGBA_S3TC_DXT5_Format) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT; - - } - - } - - if (p === THREE.RGB_PVRTC_4BPPV1_Format || p === THREE.RGB_PVRTC_2BPPV1_Format || - p === THREE.RGBA_PVRTC_4BPPV1_Format || p === THREE.RGBA_PVRTC_2BPPV1_Format) { - - extension = extensions.get('WEBGL_compressed_texture_pvrtc'); - - if (extension !== null) { - - if (p === THREE.RGB_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG; - if (p === THREE.RGB_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG; - if (p === THREE.RGBA_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; - if (p === THREE.RGBA_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; - - } - - } - - if (p === THREE.RGB_ETC1_Format) { - - extension = extensions.get('WEBGL_compressed_texture_etc1'); - - if (extension !== null) return extension.COMPRESSED_RGB_ETC1_WEBGL; - - } - - if (p === THREE.MinEquation || p === THREE.MaxEquation) { - - extension = extensions.get('EXT_blend_minmax'); - - if (extension !== null) { - - if (p === THREE.MinEquation) return extension.MIN_EXT; - if (p === THREE.MaxEquation) return extension.MAX_EXT; - - } - - } - - if (p === UnsignedInt248Type) { - - extension = extensions.get('WEBGL_depth_texture'); - - if (extension !== null) return extension.UNSIGNED_INT_24_8_WEBGL; - - } - - return 0; - - }; - - let attributeLocations = { - "position": {name: "position", location: 0}, - "color": {name: "color", location: 1}, - "rgba": {name: "color", location: 1}, - "intensity": {name: "intensity", location: 2}, - "classification": {name: "classification", location: 3}, - "returnNumber": {name: "returnNumber", location: 4}, - "return number": {name: "returnNumber", location: 4}, - "returns": {name: "returnNumber", location: 4}, - "numberOfReturns": {name: "numberOfReturns", location: 5}, - "number of returns": {name: "numberOfReturns", location: 5}, - "pointSourceID": {name: "pointSourceID", location: 6}, - "source id": {name: "pointSourceID", location: 6}, - "point source id": {name: "pointSourceID", location: 6}, - "indices": {name: "indices", location: 7}, - "normal": {name: "normal", location: 8}, - "spacing": {name: "spacing", location: 9}, - "gps-time": {name: "gpsTime", location: 10}, - "aExtra": {name: "aExtra", location: 11}, - }; - - class Shader { - - constructor(gl, name, vsSource, fsSource) { - this.gl = gl; - this.name = name; - this.vsSource = vsSource; - this.fsSource = fsSource; - - this.cache = new Map(); - - this.vs = null; - this.fs = null; - this.program = null; - - this.uniformLocations = {}; - this.attributeLocations = {}; - this.uniformBlockIndices = {}; - this.uniformBlocks = {}; - this.uniforms = {}; - - this.update(vsSource, fsSource); - } - - update(vsSource, fsSource) { - this.vsSource = vsSource; - this.fsSource = fsSource; - - this.linkProgram(); - } - - compileShader(shader, source){ - let gl = this.gl; - - gl.shaderSource(shader, source); - - gl.compileShader(shader); - - let success = gl.getShaderParameter(shader, gl.COMPILE_STATUS); - if (!success) { - let info = gl.getShaderInfoLog(shader); - let numberedSource = source.split("\n").map((a, i) => `${i + 1}`.padEnd(5) + a).join("\n"); - throw `could not compile shader ${this.name}: ${info}, \n${numberedSource}`; - } - } - - linkProgram() { - - const tStart = performance.now(); - - let gl = this.gl; - - this.uniformLocations = {}; - this.attributeLocations = {}; - this.uniforms = {}; - - gl.useProgram(null); - - let cached = this.cache.get(`${this.vsSource}, ${this.fsSource}`); - if (cached) { - this.program = cached.program; - this.vs = cached.vs; - this.fs = cached.fs; - this.attributeLocations = cached.attributeLocations; - this.uniformLocations = cached.uniformLocations; - this.uniformBlocks = cached.uniformBlocks; - this.uniforms = cached.uniforms; - - return; - } else { - - this.vs = gl.createShader(gl.VERTEX_SHADER); - this.fs = gl.createShader(gl.FRAGMENT_SHADER); - this.program = gl.createProgram(); - - for(let name of Object.keys(attributeLocations)){ - let location = attributeLocations[name].location; - let glslName = attributeLocations[name].name; - gl.bindAttribLocation(this.program, location, glslName); - } - - this.compileShader(this.vs, this.vsSource); - this.compileShader(this.fs, this.fsSource); - - let program = this.program; - - gl.attachShader(program, this.vs); - gl.attachShader(program, this.fs); - - gl.linkProgram(program); - - gl.detachShader(program, this.vs); - gl.detachShader(program, this.fs); - - let success = gl.getProgramParameter(program, gl.LINK_STATUS); - if (!success) { - let info = gl.getProgramInfoLog(program); - throw `could not link program ${this.name}: ${info}`; - } - - { // attribute locations - let numAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES); - - for (let i = 0; i < numAttributes; i++) { - let attribute = gl.getActiveAttrib(program, i); - - let location = gl.getAttribLocation(program, attribute.name); - - this.attributeLocations[attribute.name] = location; - } - } - - { // uniform locations - let numUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS); - - for (let i = 0; i < numUniforms; i++) { - let uniform = gl.getActiveUniform(program, i); - - let location = gl.getUniformLocation(program, uniform.name); - - this.uniformLocations[uniform.name] = location; - this.uniforms[uniform.name] = { - location: location, - value: null, - }; - } - } - - // uniform blocks - if(gl instanceof WebGL2RenderingContext){ - let numBlocks = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS); - - for (let i = 0; i < numBlocks; i++) { - let blockName = gl.getActiveUniformBlockName(program, i); - - let blockIndex = gl.getUniformBlockIndex(program, blockName); - - this.uniformBlockIndices[blockName] = blockIndex; - - gl.uniformBlockBinding(program, blockIndex, blockIndex); - let dataSize = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE); - - let uBuffer = gl.createBuffer(); - gl.bindBuffer(gl.UNIFORM_BUFFER, uBuffer); - gl.bufferData(gl.UNIFORM_BUFFER, dataSize, gl.DYNAMIC_READ); - - gl.bindBufferBase(gl.UNIFORM_BUFFER, blockIndex, uBuffer); - - gl.bindBuffer(gl.UNIFORM_BUFFER, null); - - this.uniformBlocks[blockName] = { - name: blockName, - index: blockIndex, - dataSize: dataSize, - buffer: uBuffer - }; - - } - } - - let cached = { - program: this.program, - vs: this.vs, - fs: this.fs, - attributeLocations: this.attributeLocations, - uniformLocations: this.uniformLocations, - uniforms: this.uniforms, - uniformBlocks: this.uniformBlocks, - }; - - this.cache.set(`${this.vsSource}, ${this.fsSource}`, cached); - } - - const tEnd = performance.now(); - const duration = tEnd - tStart; - - console.log(`shader compile duration: ${duration.toFixed(3)}`); - - - } - - setUniformMatrix4(name, value) { - const gl = this.gl; - const location = this.uniformLocations[name]; - - if (location == null) { - return; - } - - let tmp = new Float32Array(value.elements); - gl.uniformMatrix4fv(location, false, tmp); - } - - setUniform1f(name, value) { - const gl = this.gl; - const uniform = this.uniforms[name]; - - if (uniform === undefined) { - return; - } - - if(uniform.value === value){ - return; - } - - uniform.value = value; - - gl.uniform1f(uniform.location, value); - } - - setUniformBoolean(name, value) { - const gl = this.gl; - const uniform = this.uniforms[name]; - - if (uniform === undefined) { - return; - } - - if(uniform.value === value){ - return; - } - - uniform.value = value; - - gl.uniform1i(uniform.location, value); - } - - setUniformTexture(name, value) { - const gl = this.gl; - const location = this.uniformLocations[name]; - - if (location == null) { - return; - } - - gl.uniform1i(location, value); - } - - setUniform2f(name, value) { - const gl = this.gl; - const location = this.uniformLocations[name]; - - if (location == null) { - return; - } - - gl.uniform2f(location, value[0], value[1]); - } - - setUniform3f(name, value) { - const gl = this.gl; - const location = this.uniformLocations[name]; - - if (location == null) { - return; - } - - gl.uniform3f(location, value[0], value[1], value[2]); - } - - setUniform(name, value) { - - if (value.constructor === THREE.Matrix4) { - this.setUniformMatrix4(name, value); - } else if (typeof value === "number") { - this.setUniform1f(name, value); - } else if (typeof value === "boolean") { - this.setUniformBoolean(name, value); - } else if (value instanceof WebGLTexture) { - this.setUniformTexture(name, value); - } else if (value instanceof Array) { - - if (value.length === 2) { - this.setUniform2f(name, value); - } else if (value.length === 3) { - this.setUniform3f(name, value); - } - - } else { - console.error("unhandled uniform type: ", name, value); - } - - } - - - setUniform1i(name, value) { - let gl = this.gl; - let location = this.uniformLocations[name]; - - if (location == null) { - return; - } - - gl.uniform1i(location, value); - } - - }; - - class WebGLTexture { - - constructor(gl, texture) { - this.gl = gl; - - this.texture = texture; - this.id = gl.createTexture(); - - this.target = gl.TEXTURE_2D; - this.version = -1; - - this.update(texture); - } - - update() { - - if (!this.texture.image) { - this.version = this.texture.version; - - return; - } - - let gl = this.gl; - let texture = this.texture; - - if (this.version === texture.version) { - return; - } - - this.target = gl.TEXTURE_2D; - - gl.bindTexture(this.target, this.id); - - let level = 0; - let internalFormat = paramThreeToGL(gl, texture.format); - let width = texture.image.width; - let height = texture.image.height; - let border = 0; - let srcFormat = internalFormat; - let srcType = paramThreeToGL(gl, texture.type); - let data; - - gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, texture.flipY); - gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha); - gl.pixelStorei(gl.UNPACK_ALIGNMENT, texture.unpackAlignment); - - if (texture instanceof THREE.DataTexture) { - data = texture.image.data; - - gl.texParameteri(this.target, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(this.target, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - - gl.texParameteri(this.target, gl.TEXTURE_MAG_FILTER, paramThreeToGL(gl, texture.magFilter)); - gl.texParameteri(this.target, gl.TEXTURE_MIN_FILTER, paramThreeToGL(gl, texture.minFilter)); - - gl.texImage2D(this.target, level, internalFormat, - width, height, border, srcFormat, srcType, - data); - } else if ((texture instanceof THREE.CanvasTexture) || (texture instanceof THREE.Texture)) { - data = texture.image; - - gl.texParameteri(this.target, gl.TEXTURE_WRAP_S, paramThreeToGL(gl, texture.wrapS)); - gl.texParameteri(this.target, gl.TEXTURE_WRAP_T, paramThreeToGL(gl, texture.wrapT)); - - gl.texParameteri(this.target, gl.TEXTURE_MAG_FILTER, paramThreeToGL(gl, texture.magFilter)); - gl.texParameteri(this.target, gl.TEXTURE_MIN_FILTER, paramThreeToGL(gl, texture.minFilter)); - - gl.texImage2D(this.target, level, internalFormat, - internalFormat, srcType, data); - - if (texture instanceof THREE.Texture) {gl.generateMipmap(gl.TEXTURE_2D);} - } - - gl.bindTexture(this.target, null); - - this.version = texture.version; - } - - }; - - class WebGLBuffer { - - constructor() { - this.numElements = 0; - this.vao = null; - this.vbos = new Map(); - } - - }; - - class Renderer { - - constructor(threeRenderer) { - this.threeRenderer = threeRenderer; - this.gl = this.threeRenderer.getContext(); - - this.buffers = new Map(); - this.shaders = new Map(); - this.textures = new Map(); - - this.glTypeMapping = new Map(); - this.glTypeMapping.set(Float32Array, this.gl.FLOAT); - this.glTypeMapping.set(Uint8Array, this.gl.UNSIGNED_BYTE); - this.glTypeMapping.set(Uint16Array, this.gl.UNSIGNED_SHORT); - - this.toggle = 0; - } - - deleteBuffer(geometry) { - - let gl = this.gl; - let webglBuffer = this.buffers.get(geometry); - if (webglBuffer != null) { - for (let attributeName in geometry.attributes) { - gl.deleteBuffer(webglBuffer.vbos.get(attributeName).handle); - } - this.buffers.delete(geometry); - } - } - - createBuffer(geometry){ - let gl = this.gl; - let webglBuffer = new WebGLBuffer(); - webglBuffer.vao = gl.createVertexArray(); - webglBuffer.numElements = geometry.attributes.position.count; - - gl.bindVertexArray(webglBuffer.vao); - - for(let attributeName in geometry.attributes){ - let bufferAttribute = geometry.attributes[attributeName]; - - let vbo = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, vbo); - gl.bufferData(gl.ARRAY_BUFFER, bufferAttribute.array, gl.STATIC_DRAW); - - let normalized = bufferAttribute.normalized; - let type = this.glTypeMapping.get(bufferAttribute.array.constructor); - - if(attributeLocations[attributeName] === undefined){ - //attributeLocation = attributeLocations["aExtra"]; - }else { - let attributeLocation = attributeLocations[attributeName].location; - - gl.vertexAttribPointer(attributeLocation, bufferAttribute.itemSize, type, normalized, 0, 0); - gl.enableVertexAttribArray(attributeLocation); - } - - - webglBuffer.vbos.set(attributeName, { - handle: vbo, - name: attributeName, - count: bufferAttribute.count, - itemSize: bufferAttribute.itemSize, - type: geometry.attributes.position.array.constructor, - version: 0 - }); - } - - gl.bindBuffer(gl.ARRAY_BUFFER, null); - gl.bindVertexArray(null); - - let disposeHandler = (event) => { - this.deleteBuffer(geometry); - geometry.removeEventListener("dispose", disposeHandler); - }; - geometry.addEventListener("dispose", disposeHandler); - - return webglBuffer; - } - - updateBuffer(geometry){ - let gl = this.gl; - - let webglBuffer = this.buffers.get(geometry); - - gl.bindVertexArray(webglBuffer.vao); - - for(let attributeName in geometry.attributes){ - let bufferAttribute = geometry.attributes[attributeName]; - - let normalized = bufferAttribute.normalized; - let type = this.glTypeMapping.get(bufferAttribute.array.constructor); - - let vbo = null; - if(!webglBuffer.vbos.has(attributeName)){ - vbo = gl.createBuffer(); - - webglBuffer.vbos.set(attributeName, { - handle: vbo, - name: attributeName, - count: bufferAttribute.count, - itemSize: bufferAttribute.itemSize, - type: geometry.attributes.position.array.constructor, - version: bufferAttribute.version - }); - }else { - vbo = webglBuffer.vbos.get(attributeName).handle; - webglBuffer.vbos.get(attributeName).version = bufferAttribute.version; - } - - gl.bindBuffer(gl.ARRAY_BUFFER, vbo); - gl.bufferData(gl.ARRAY_BUFFER, bufferAttribute.array, gl.STATIC_DRAW); - - if(attributeLocations[attributeName] === undefined){ - //attributeLocation = attributeLocations["aExtra"]; - }else { - let attributeLocation = attributeLocations[attributeName].location; - - gl.vertexAttribPointer(attributeLocation, bufferAttribute.itemSize, type, normalized, 0, 0); - gl.enableVertexAttribArray(attributeLocation); - } - } - - gl.bindBuffer(gl.ARRAY_BUFFER, null); - gl.bindVertexArray(null); - } - - traverse(scene) { - - let octrees = []; - - let stack = [scene]; - while (stack.length > 0) { - - let node = stack.pop(); - - if (node instanceof PointCloudTree) { - octrees.push(node); - continue; - } - - let visibleChildren = node.children.filter(c => c.visible); - stack.push(...visibleChildren); - - } - - let result = { - octrees: octrees - }; - - return result; - } - - - - renderNodes(octree, nodes, visibilityTextureData, camera, target, shader, params) { - - if (exports.measureTimings) performance.mark("renderNodes-start"); - - let gl = this.gl; - - let material = params.material ? params.material : octree.material; - let shadowMaps = params.shadowMaps == null ? [] : params.shadowMaps; - let view = camera.matrixWorldInverse; - let worldView = new THREE.Matrix4(); - - let mat4holder = new Float32Array(16); - - let i = 0; - for (let node of nodes) { - - if(exports.debug.allowedNodes !== undefined){ - if(!exports.debug.allowedNodes.includes(node.name)){ - continue; - } - } - - let world = node.sceneNode.matrixWorld; - worldView.multiplyMatrices(view, world); - - if (visibilityTextureData) { - let vnStart = visibilityTextureData.offsets.get(node); - shader.setUniform1f("uVNStart", vnStart); - } - - - let level = node.getLevel(); - - if(node.debug){ - shader.setUniform("uDebug", true); - }else { - shader.setUniform("uDebug", false); - } - - // let isLeaf = false; - // if(node instanceof PointCloudOctreeNode){ - // isLeaf = Object.keys(node.children).length === 0; - // }else if(node instanceof PointCloudArena4DNode){ - // isLeaf = node.geometryNode.isLeaf; - // } - // shader.setUniform("uIsLeafNode", isLeaf); - - // let isLeaf = node.children.filter(n => n != null).length === 0; - // if(!isLeaf){ - // continue; - // } - - - // TODO consider passing matrices in an array to avoid uniformMatrix4fv overhead - const lModel = shader.uniformLocations["modelMatrix"]; - if (lModel) { - mat4holder.set(world.elements); - gl.uniformMatrix4fv(lModel, false, mat4holder); - } - - const lModelView = shader.uniformLocations["modelViewMatrix"]; - //mat4holder.set(worldView.elements); - // faster then set in chrome 63 - for(let j = 0; j < 16; j++){ - mat4holder[j] = worldView.elements[j]; - } - gl.uniformMatrix4fv(lModelView, false, mat4holder); - - { // Clip Polygons - if(material.clipPolygons && material.clipPolygons.length > 0){ - - let clipPolygonVCount = []; - let worldViewProjMatrices = []; - - for(let clipPolygon of material.clipPolygons){ - - let view = clipPolygon.viewMatrix; - let proj = clipPolygon.projMatrix; - - let worldViewProj = proj.clone().multiply(view).multiply(world); - - clipPolygonVCount.push(clipPolygon.markers.length); - worldViewProjMatrices.push(worldViewProj); - } - - let flattenedMatrices = [].concat(...worldViewProjMatrices.map(m => m.elements)); - - let flattenedVertices = new Array(8 * 3 * material.clipPolygons.length); - for(let i = 0; i < material.clipPolygons.length; i++){ - let clipPolygon = material.clipPolygons[i]; - for(let j = 0; j < clipPolygon.markers.length; j++){ - flattenedVertices[i * 24 + (j * 3 + 0)] = clipPolygon.markers[j].position.x; - flattenedVertices[i * 24 + (j * 3 + 1)] = clipPolygon.markers[j].position.y; - flattenedVertices[i * 24 + (j * 3 + 2)] = clipPolygon.markers[j].position.z; - } - } - - const lClipPolygonVCount = shader.uniformLocations["uClipPolygonVCount[0]"]; - gl.uniform1iv(lClipPolygonVCount, clipPolygonVCount); - - const lClipPolygonVP = shader.uniformLocations["uClipPolygonWVP[0]"]; - gl.uniformMatrix4fv(lClipPolygonVP, false, flattenedMatrices); - - const lClipPolygons = shader.uniformLocations["uClipPolygonVertices[0]"]; - gl.uniform3fv(lClipPolygons, flattenedVertices); - - } - } - - - //shader.setUniformMatrix4("modelMatrix", world); - //shader.setUniformMatrix4("modelViewMatrix", worldView); - shader.setUniform1f("uLevel", level); - shader.setUniform1f("uNodeSpacing", node.geometryNode.estimatedSpacing); - - shader.setUniform1f("uPCIndex", i); - // uBBSize - - if (shadowMaps.length > 0) { - - const lShadowMap = shader.uniformLocations["uShadowMap[0]"]; - - shader.setUniform3f("uShadowColor", material.uniforms.uShadowColor.value); - - let bindingStart = 5; - let bindingPoints = new Array(shadowMaps.length).fill(bindingStart).map((a, i) => (a + i)); - gl.uniform1iv(lShadowMap, bindingPoints); - - for (let i = 0; i < shadowMaps.length; i++) { - let shadowMap = shadowMaps[i]; - let bindingPoint = bindingPoints[i]; - let glTexture = this.threeRenderer.properties.get(shadowMap.target.texture).__webglTexture; - - gl.activeTexture(gl[`TEXTURE${bindingPoint}`]); - gl.bindTexture(gl.TEXTURE_2D, glTexture); - } - - { - - let worldViewMatrices = shadowMaps - .map(sm => sm.camera.matrixWorldInverse) - .map(view => new THREE.Matrix4().multiplyMatrices(view, world)); - - let flattenedMatrices = [].concat(...worldViewMatrices.map(c => c.elements)); - const lWorldView = shader.uniformLocations["uShadowWorldView[0]"]; - gl.uniformMatrix4fv(lWorldView, false, flattenedMatrices); - } - - { - let flattenedMatrices = [].concat(...shadowMaps.map(sm => sm.camera.projectionMatrix.elements)); - const lProj = shader.uniformLocations["uShadowProj[0]"]; - gl.uniformMatrix4fv(lProj, false, flattenedMatrices); - } - } - - const geometry = node.geometryNode.geometry; - - if(geometry.attributes["gps-time"]){ - const bufferAttribute = geometry.attributes["gps-time"]; - const attGPS = octree.getAttribute("gps-time"); - - let initialRange = attGPS.initialRange; - let initialRangeSize = initialRange[1] - initialRange[0]; - - let globalRange = attGPS.range; - let globalRangeSize = globalRange[1] - globalRange[0]; - - let scale = initialRangeSize / globalRangeSize; - let offset = -(globalRange[0] - initialRange[0]) / initialRangeSize; - - shader.setUniform1f("uGpsScale", scale); - shader.setUniform1f("uGpsOffset", offset); - //shader.setUniform2f("uFilterGPSTimeClipRange", [-Infinity, Infinity]); - - let uFilterGPSTimeClipRange = material.uniforms.uFilterGPSTimeClipRange.value; - // let gpsCliPRangeMin = uFilterGPSTimeClipRange[0] - // let gpsCliPRangeMax = uFilterGPSTimeClipRange[1] - // shader.setUniform2f("uFilterGPSTimeClipRange", [gpsCliPRangeMin, gpsCliPRangeMax]); - - let normalizedClipRange = [ - (uFilterGPSTimeClipRange[0] - globalRange[0]) / globalRangeSize, - (uFilterGPSTimeClipRange[1] - globalRange[0]) / globalRangeSize, - ]; - - shader.setUniform2f("uFilterGPSTimeClipRange", normalizedClipRange); - - - - // // ranges in full gps coordinate system - // const globalRange = attGPS.range; - // const bufferRange = bufferAttribute.potree.range; - - // // ranges in [0, 1] - // // normalizedGlobalRange = [0, 1] - // // normalizedBufferRange: norm buffer within norm global range e.g. [0.2, 0.8] - // const globalWidth = globalRange[1] - globalRange[0]; - // const normalizedBufferRange = [ - // (bufferRange[0] - globalRange[0]) / globalWidth, - // (bufferRange[1] - globalRange[0]) / globalWidth, - // ]; - - // shader.setUniform2f("uNormalizedGpsBufferRange", normalizedBufferRange); - - // let uFilterGPSTimeClipRange = material.uniforms.uFilterGPSTimeClipRange.value; - // let gpsCliPRangeMin = uFilterGPSTimeClipRange[0] - // let gpsCliPRangeMax = uFilterGPSTimeClipRange[1] - // shader.setUniform2f("uFilterGPSTimeClipRange", [gpsCliPRangeMin, gpsCliPRangeMax]); - - // shader.setUniform1f("uGpsScale", bufferAttribute.potree.scale); - // shader.setUniform1f("uGpsOffset", bufferAttribute.potree.offset); - } - - { - let uFilterReturnNumberRange = material.uniforms.uFilterReturnNumberRange.value; - let uFilterNumberOfReturnsRange = material.uniforms.uFilterNumberOfReturnsRange.value; - let uFilterPointSourceIDClipRange = material.uniforms.uFilterPointSourceIDClipRange.value; - - - - shader.setUniform2f("uFilterReturnNumberRange", uFilterReturnNumberRange); - shader.setUniform2f("uFilterNumberOfReturnsRange", uFilterNumberOfReturnsRange); - shader.setUniform2f("uFilterPointSourceIDClipRange", uFilterPointSourceIDClipRange); - } - - let webglBuffer = null; - if(!this.buffers.has(geometry)){ - webglBuffer = this.createBuffer(geometry); - this.buffers.set(geometry, webglBuffer); - }else { - webglBuffer = this.buffers.get(geometry); - for(let attributeName in geometry.attributes){ - let attribute = geometry.attributes[attributeName]; - - if(attribute.version > webglBuffer.vbos.get(attributeName).version){ - this.updateBuffer(geometry); - } - } - } - - gl.bindVertexArray(webglBuffer.vao); - - let isExtraAttribute = - attributeLocations[material.activeAttributeName] === undefined - && Object.keys(geometry.attributes).includes(material.activeAttributeName); - - if(isExtraAttribute){ - - const attributeLocation = attributeLocations["aExtra"].location; - - for(const attributeName in geometry.attributes){ - const bufferAttribute = geometry.attributes[attributeName]; - const vbo = webglBuffer.vbos.get(attributeName); - - gl.bindBuffer(gl.ARRAY_BUFFER, vbo.handle); - gl.disableVertexAttribArray(attributeLocation); - } - - const attName = material.activeAttributeName; - const bufferAttribute = geometry.attributes[attName]; - const vbo = webglBuffer.vbos.get(attName); - - if(bufferAttribute !== undefined && vbo !== undefined){ - let type = this.glTypeMapping.get(bufferAttribute.array.constructor); - let normalized = bufferAttribute.normalized; - - gl.bindBuffer(gl.ARRAY_BUFFER, vbo.handle); - gl.vertexAttribPointer(attributeLocation, bufferAttribute.itemSize, type, normalized, 0, 0); - gl.enableVertexAttribArray(attributeLocation); - } - - - - - { - const attExtra = octree.pcoGeometry.pointAttributes.attributes - .find(a => a.name === attName); - - let range = material.getRange(attName); - if(!range){ - range = attExtra.range; - } - - if(!range){ - range = [0, 1]; - } - - let initialRange = attExtra.initialRange; - let initialRangeSize = initialRange[1] - initialRange[0]; - - let globalRange = range; - let globalRangeSize = globalRange[1] - globalRange[0]; - - let scale = initialRangeSize / globalRangeSize; - let offset = -(globalRange[0] - initialRange[0]) / initialRangeSize; - - shader.setUniform1f("uExtraScale", scale); - shader.setUniform1f("uExtraOffset", offset); - } - - }else { - - for(const attributeName in geometry.attributes){ - const bufferAttribute = geometry.attributes[attributeName]; - const vbo = webglBuffer.vbos.get(attributeName); - - - if(attributeLocations[attributeName] !== undefined){ - const attributeLocation = attributeLocations[attributeName].location; - - let type = this.glTypeMapping.get(bufferAttribute.array.constructor); - let normalized = bufferAttribute.normalized; - - gl.bindBuffer(gl.ARRAY_BUFFER, vbo.handle); - gl.vertexAttribPointer(attributeLocation, bufferAttribute.itemSize, type, normalized, 0, 0); - gl.enableVertexAttribArray(attributeLocation); - - } - } - } - - let numPoints = webglBuffer.numElements; - gl.drawArrays(gl.POINTS, 0, numPoints); - - i++; - } - - gl.bindVertexArray(null); - - if (exports.measureTimings) { - performance.mark("renderNodes-end"); - performance.measure("render.renderNodes", "renderNodes-start", "renderNodes-end"); - } - } - - renderOctree(octree, nodes, camera, target, params = {}){ - - let gl = this.gl; - - let material = params.material ? params.material : octree.material; - let shadowMaps = params.shadowMaps == null ? [] : params.shadowMaps; - let view = camera.matrixWorldInverse; - let viewInv = camera.matrixWorld; - let proj = camera.projectionMatrix; - let projInv = new THREE.Matrix4().getInverse(proj); - let worldView = new THREE.Matrix4(); - - let shader = null; - let visibilityTextureData = null; - - let currentTextureBindingPoint = 0; - - if (material.pointSizeType >= 0) { - if (material.pointSizeType === PointSizeType.ADAPTIVE || - material.activeAttributeName === "level of detail") { - - let vnNodes = (params.vnTextureNodes != null) ? params.vnTextureNodes : nodes; - visibilityTextureData = octree.computeVisibilityTextureData(vnNodes, camera); - - const vnt = material.visibleNodesTexture; - const data = vnt.image.data; - data.set(visibilityTextureData.data); - vnt.needsUpdate = true; - - } - } - - { // UPDATE SHADER AND TEXTURES - if (!this.shaders.has(material)) { - let [vs, fs] = [material.vertexShader, material.fragmentShader]; - let shader = new Shader(gl, "pointcloud", vs, fs); - - this.shaders.set(material, shader); - } - - shader = this.shaders.get(material); - - //if(material.needsUpdate){ - { - let [vs, fs] = [material.vertexShader, material.fragmentShader]; - - let numSnapshots = material.snapEnabled ? material.numSnapshots : 0; - let numClipBoxes = (material.clipBoxes && material.clipBoxes.length) ? material.clipBoxes.length : 0; - let numClipSpheres = (params.clipSpheres && params.clipSpheres.length) ? params.clipSpheres.length : 0; - let numClipPolygons = (material.clipPolygons && material.clipPolygons.length) ? material.clipPolygons.length : 0; - - let defines = [ - `#define num_shadowmaps ${shadowMaps.length}`, - `#define num_snapshots ${numSnapshots}`, - `#define num_clipboxes ${numClipBoxes}`, - `#define num_clipspheres ${numClipSpheres}`, - `#define num_clippolygons ${numClipPolygons}`, - ]; - - - if(octree.pcoGeometry.root.isLoaded()){ - let attributes = octree.pcoGeometry.root.geometry.attributes; - - if(attributes["gps-time"]){ - defines.push("#define clip_gps_enabled"); - } - - if(attributes["return number"]){ - defines.push("#define clip_return_number_enabled"); - } - - if(attributes["number of returns"]){ - defines.push("#define clip_number_of_returns_enabled"); - } - - if(attributes["source id"] || attributes["point source id"]){ - defines.push("#define clip_point_source_id_enabled"); - } - - } - - let definesString = defines.join("\n"); - - let vsVersionIndex = vs.indexOf("#version "); - let fsVersionIndex = fs.indexOf("#version "); - - if(vsVersionIndex >= 0){ - vs = vs.replace(/(#version .*)/, `$1\n${definesString}`); - }else { - vs = `${definesString}\n${vs}`; - } - - if(fsVersionIndex >= 0){ - fs = fs.replace(/(#version .*)/, `$1\n${definesString}`); - }else { - fs = `${definesString}\n${fs}`; - } - - - shader.update(vs, fs); - - material.needsUpdate = false; - } - - for (let uniformName of Object.keys(material.uniforms)) { - let uniform = material.uniforms[uniformName]; - - if (uniform.type == "t") { - - let texture = uniform.value; - - if (!texture) { - continue; - } - - if (!this.textures.has(texture)) { - let webglTexture = new WebGLTexture(gl, texture); - - this.textures.set(texture, webglTexture); - } - - let webGLTexture = this.textures.get(texture); - webGLTexture.update(); - - - } - } - } - - gl.useProgram(shader.program); - - let transparent = false; - if(params.transparent !== undefined){ - transparent = params.transparent && material.opacity < 1; - }else { - transparent = material.opacity < 1; - } - - if (transparent){ - gl.enable(gl.BLEND); - gl.blendFunc(gl.SRC_ALPHA, gl.ONE); - gl.depthMask(false); - gl.disable(gl.DEPTH_TEST); - } else { - gl.disable(gl.BLEND); - gl.depthMask(true); - gl.enable(gl.DEPTH_TEST); - } - - if(params.blendFunc !== undefined){ - gl.enable(gl.BLEND); - gl.blendFunc(...params.blendFunc); - } - - if(params.depthTest !== undefined){ - if(params.depthTest === true){ - gl.enable(gl.DEPTH_TEST); - }else { - gl.disable(gl.DEPTH_TEST); - } - } - - if(params.depthWrite !== undefined){ - if(params.depthWrite === true){ - gl.depthMask(true); - }else { - gl.depthMask(false); - } - - } - - - { // UPDATE UNIFORMS - shader.setUniformMatrix4("projectionMatrix", proj); - shader.setUniformMatrix4("viewMatrix", view); - shader.setUniformMatrix4("uViewInv", viewInv); - shader.setUniformMatrix4("uProjInv", projInv); - - let screenWidth = target ? target.width : material.screenWidth; - let screenHeight = target ? target.height : material.screenHeight; - - shader.setUniform1f("uScreenWidth", screenWidth); - shader.setUniform1f("uScreenHeight", screenHeight); - shader.setUniform1f("fov", Math.PI * camera.fov / 180); - shader.setUniform1f("near", camera.near); - shader.setUniform1f("far", camera.far); - - if(camera instanceof THREE.OrthographicCamera){ - shader.setUniform("uUseOrthographicCamera", true); - shader.setUniform("uOrthoWidth", camera.right - camera.left); - shader.setUniform("uOrthoHeight", camera.top - camera.bottom); - }else { - shader.setUniform("uUseOrthographicCamera", false); - } - - if(material.clipBoxes.length + material.clipPolygons.length === 0){ - shader.setUniform1i("clipTask", ClipTask.NONE); - }else { - shader.setUniform1i("clipTask", material.clipTask); - } - - shader.setUniform1i("clipMethod", material.clipMethod); - - if (material.clipBoxes && material.clipBoxes.length > 0) { - //let flattenedMatrices = [].concat(...material.clipBoxes.map(c => c.inverse.elements)); - - //const lClipBoxes = shader.uniformLocations["clipBoxes[0]"]; - //gl.uniformMatrix4fv(lClipBoxes, false, flattenedMatrices); - - const lClipBoxes = shader.uniformLocations["clipBoxes[0]"]; - gl.uniformMatrix4fv(lClipBoxes, false, material.uniforms.clipBoxes.value); - } - - // TODO CLIPSPHERES - if(params.clipSpheres && params.clipSpheres.length > 0){ - - let clipSpheres = params.clipSpheres; - - let matrices = []; - for(let clipSphere of clipSpheres){ - //let mScale = new THREE.Matrix4().makeScale(...clipSphere.scale.toArray()); - //let mTranslate = new THREE.Matrix4().makeTranslation(...clipSphere.position.toArray()); - - //let clipToWorld = new THREE.Matrix4().multiplyMatrices(mTranslate, mScale); - let clipToWorld = clipSphere.matrixWorld; - let viewToWorld = camera.matrixWorld; - let worldToClip = new THREE.Matrix4().getInverse(clipToWorld); - - let viewToClip = new THREE.Matrix4().multiplyMatrices(worldToClip, viewToWorld); - - matrices.push(viewToClip); - } - - let flattenedMatrices = [].concat(...matrices.map(matrix => matrix.elements)); - - const lClipSpheres = shader.uniformLocations["uClipSpheres[0]"]; - gl.uniformMatrix4fv(lClipSpheres, false, flattenedMatrices); - - //const lClipSpheres = shader.uniformLocations["uClipSpheres[0]"]; - //gl.uniformMatrix4fv(lClipSpheres, false, material.uniforms.clipSpheres.value); - } - - - shader.setUniform1f("size", material.size); - shader.setUniform1f("maxSize", material.uniforms.maxSize.value); - shader.setUniform1f("minSize", material.uniforms.minSize.value); - - - // uniform float uPCIndex - shader.setUniform1f("uOctreeSpacing", material.spacing); - shader.setUniform("uOctreeSize", material.uniforms.octreeSize.value); - - - //uniform vec3 uColor; - shader.setUniform3f("uColor", material.color.toArray()); - //uniform float opacity; - shader.setUniform1f("uOpacity", material.opacity); - - shader.setUniform2f("elevationRange", material.elevationRange); - shader.setUniform2f("intensityRange", material.intensityRange); - - - shader.setUniform3f("uIntensity_gbc", [ - material.intensityGamma, - material.intensityBrightness, - material.intensityContrast - ]); - - shader.setUniform3f("uRGB_gbc", [ - material.rgbGamma, - material.rgbBrightness, - material.rgbContrast - ]); - - shader.setUniform1f("uTransition", material.transition); - shader.setUniform1f("wRGB", material.weightRGB); - shader.setUniform1f("wIntensity", material.weightIntensity); - shader.setUniform1f("wElevation", material.weightElevation); - shader.setUniform1f("wClassification", material.weightClassification); - shader.setUniform1f("wReturnNumber", material.weightReturnNumber); - shader.setUniform1f("wSourceID", material.weightSourceID); - - shader.setUniform("backfaceCulling", material.uniforms.backfaceCulling.value); - - let vnWebGLTexture = this.textures.get(material.visibleNodesTexture); - if(vnWebGLTexture){ - shader.setUniform1i("visibleNodesTexture", currentTextureBindingPoint); - gl.activeTexture(gl.TEXTURE0 + currentTextureBindingPoint); - gl.bindTexture(vnWebGLTexture.target, vnWebGLTexture.id); - currentTextureBindingPoint++; - } - - let gradientTexture = this.textures.get(material.gradientTexture); - shader.setUniform1i("gradient", currentTextureBindingPoint); - gl.activeTexture(gl.TEXTURE0 + currentTextureBindingPoint); - gl.bindTexture(gradientTexture.target, gradientTexture.id); - - const repeat = material.elevationGradientRepeat; - if(repeat === ElevationGradientRepeat.REPEAT){ - gl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_S, gl.REPEAT); - gl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_T, gl.REPEAT); - }else if(repeat === ElevationGradientRepeat.MIRRORED_REPEAT){ - gl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_S, gl.MIRRORED_REPEAT); - gl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_T, gl.MIRRORED_REPEAT); - }else { - gl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - } - currentTextureBindingPoint++; - - let classificationTexture = this.textures.get(material.classificationTexture); - shader.setUniform1i("classificationLUT", currentTextureBindingPoint); - gl.activeTexture(gl.TEXTURE0 + currentTextureBindingPoint); - gl.bindTexture(classificationTexture.target, classificationTexture.id); - currentTextureBindingPoint++; - - let matcapTexture = this.textures.get(material.matcapTexture); - shader.setUniform1i("matcapTextureUniform", currentTextureBindingPoint); - gl.activeTexture(gl.TEXTURE0 + currentTextureBindingPoint); - gl.bindTexture(matcapTexture.target, matcapTexture.id); - currentTextureBindingPoint++; - - - if (material.snapEnabled === true) { - - { - const lSnapshot = shader.uniformLocations["uSnapshot[0]"]; - const lSnapshotDepth = shader.uniformLocations["uSnapshotDepth[0]"]; - - let bindingStart = currentTextureBindingPoint; - let lSnapshotBindingPoints = new Array(5).fill(bindingStart).map((a, i) => (a + i)); - let lSnapshotDepthBindingPoints = new Array(5) - .fill(1 + Math.max(...lSnapshotBindingPoints)) - .map((a, i) => (a + i)); - currentTextureBindingPoint = 1 + Math.max(...lSnapshotDepthBindingPoints); - - gl.uniform1iv(lSnapshot, lSnapshotBindingPoints); - gl.uniform1iv(lSnapshotDepth, lSnapshotDepthBindingPoints); - - for (let i = 0; i < 5; i++) { - let texture = material.uniforms[`uSnapshot`].value[i]; - let textureDepth = material.uniforms[`uSnapshotDepth`].value[i]; - - if (!texture) { - break; - } - - let snapTexture = this.threeRenderer.properties.get(texture).__webglTexture; - let snapTextureDepth = this.threeRenderer.properties.get(textureDepth).__webglTexture; - - let bindingPoint = lSnapshotBindingPoints[i]; - let depthBindingPoint = lSnapshotDepthBindingPoints[i]; - - gl.activeTexture(gl[`TEXTURE${bindingPoint}`]); - gl.bindTexture(gl.TEXTURE_2D, snapTexture); - - gl.activeTexture(gl[`TEXTURE${depthBindingPoint}`]); - gl.bindTexture(gl.TEXTURE_2D, snapTextureDepth); - } - } - - { - let flattenedMatrices = [].concat(...material.uniforms.uSnapView.value.map(c => c.elements)); - const lSnapView = shader.uniformLocations["uSnapView[0]"]; - gl.uniformMatrix4fv(lSnapView, false, flattenedMatrices); - } - { - let flattenedMatrices = [].concat(...material.uniforms.uSnapProj.value.map(c => c.elements)); - const lSnapProj = shader.uniformLocations["uSnapProj[0]"]; - gl.uniformMatrix4fv(lSnapProj, false, flattenedMatrices); - } - { - let flattenedMatrices = [].concat(...material.uniforms.uSnapProjInv.value.map(c => c.elements)); - const lSnapProjInv = shader.uniformLocations["uSnapProjInv[0]"]; - gl.uniformMatrix4fv(lSnapProjInv, false, flattenedMatrices); - } - { - let flattenedMatrices = [].concat(...material.uniforms.uSnapViewInv.value.map(c => c.elements)); - const lSnapViewInv = shader.uniformLocations["uSnapViewInv[0]"]; - gl.uniformMatrix4fv(lSnapViewInv, false, flattenedMatrices); - } - - } - } - - this.renderNodes(octree, nodes, visibilityTextureData, camera, target, shader, params); - - gl.activeTexture(gl.TEXTURE2); - gl.bindTexture(gl.TEXTURE_2D, null); - gl.activeTexture(gl.TEXTURE0); - } - - render(scene, camera, target = null, params = {}) { - - const gl = this.gl; - - // PREPARE - if (target != null) { - this.threeRenderer.setRenderTarget(target); - } - - camera.updateProjectionMatrix(); - - const traversalResult = this.traverse(scene); - - - // RENDER - for (const octree of traversalResult.octrees) { - let nodes = octree.visibleNodes; - this.renderOctree(octree, nodes, camera, target, params); - } - - - // CLEANUP - gl.activeTexture(gl.TEXTURE1); - gl.bindTexture(gl.TEXTURE_2D, null); - - this.threeRenderer.state.reset(); - } - - - - }; - - class ProfileData { - constructor (profile) { - this.profile = profile; - - this.segments = []; - this.boundingBox = new THREE.Box3(); - - for (let i = 0; i < profile.points.length - 1; i++) { - let start = profile.points[i]; - let end = profile.points[i + 1]; - - let startGround = new THREE.Vector3(start.x, start.y, 0); - let endGround = new THREE.Vector3(end.x, end.y, 0); - - let center = new THREE.Vector3().addVectors(endGround, startGround).multiplyScalar(0.5); - let length = startGround.distanceTo(endGround); - let side = new THREE.Vector3().subVectors(endGround, startGround).normalize(); - let up = new THREE.Vector3(0, 0, 1); - let forward = new THREE.Vector3().crossVectors(side, up).normalize(); - let N = forward; - let cutPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(N, startGround); - let halfPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(side, center); - - let segment = { - start: start, - end: end, - cutPlane: cutPlane, - halfPlane: halfPlane, - length: length, - points: new Points() - }; - - this.segments.push(segment); - } - } - - size () { - let size = 0; - for (let segment of this.segments) { - size += segment.points.numPoints; - } - - return size; - } - }; - - class ProfileRequest { - constructor (pointcloud, profile, maxDepth, callback) { - this.pointcloud = pointcloud; - this.profile = profile; - this.maxDepth = maxDepth || Number.MAX_VALUE; - this.callback = callback; - this.temporaryResult = new ProfileData(this.profile); - this.pointsServed = 0; - this.highestLevelServed = 0; - - this.priorityQueue = new BinaryHeap(function (x) { return 1 / x.weight; }); - - this.initialize(); - } - - initialize () { - this.priorityQueue.push({node: this.pointcloud.pcoGeometry.root, weight: Infinity}); - }; - - // traverse the node and add intersecting descendants to queue - traverse (node) { - let stack = []; - for (let i = 0; i < 8; i++) { - let child = node.children[i]; - if (child && this.pointcloud.nodeIntersectsProfile(child, this.profile)) { - stack.push(child); - } - } - - while (stack.length > 0) { - let node = stack.pop(); - let weight = node.boundingSphere.radius; - - this.priorityQueue.push({node: node, weight: weight}); - - // add children that intersect the cutting plane - if (node.level < this.maxDepth) { - for (let i = 0; i < 8; i++) { - let child = node.children[i]; - if (child && this.pointcloud.nodeIntersectsProfile(child, this.profile)) { - stack.push(child); - } - } - } - } - } - - update(){ - if(!this.updateGeneratorInstance){ - this.updateGeneratorInstance = this.updateGenerator(); - } - - let result = this.updateGeneratorInstance.next(); - if(result.done){ - this.updateGeneratorInstance = null; - } - } - - * updateGenerator(){ - // load nodes in queue - // if hierarchy expands, also load nodes from expanded hierarchy - // once loaded, add data to this.points and remove node from queue - // only evaluate 1-50 nodes per frame to maintain responsiveness - - let start = performance.now(); - - let maxNodesPerUpdate = 1; - let intersectedNodes = []; - - for (let i = 0; i < Math.min(maxNodesPerUpdate, this.priorityQueue.size()); i++) { - let element = this.priorityQueue.pop(); - let node = element.node; - - if(node.level > this.maxDepth){ - continue; - } - - if (node.loaded) { - // add points to result - intersectedNodes.push(node); - exports.lru.touch(node); - this.highestLevelServed = Math.max(node.getLevel(), this.highestLevelServed); - - var geom = node.pcoGeometry; - var hierarchyStepSize = geom ? geom.hierarchyStepSize : 1; - - var doTraverse = node.getLevel() === 0 || - (node.level % hierarchyStepSize === 0 && node.hasChildren); - - if (doTraverse) { - this.traverse(node); - } - } else { - node.load(); - this.priorityQueue.push(element); - } - } - - if (intersectedNodes.length > 0) { - - for(let done of this.getPointsInsideProfile(intersectedNodes, this.temporaryResult)){ - if(!done){ - //console.log("updateGenerator yields"); - yield false; - } - } - if (this.temporaryResult.size() > 100) { - this.pointsServed += this.temporaryResult.size(); - this.callback.onProgress({request: this, points: this.temporaryResult}); - this.temporaryResult = new ProfileData(this.profile); - } - } - - if (this.priorityQueue.size() === 0) { - // we're done! inform callback and remove from pending requests - - if (this.temporaryResult.size() > 0) { - this.pointsServed += this.temporaryResult.size(); - this.callback.onProgress({request: this, points: this.temporaryResult}); - this.temporaryResult = new ProfileData(this.profile); - } - - this.callback.onFinish({request: this}); - - let index = this.pointcloud.profileRequests.indexOf(this); - if (index >= 0) { - this.pointcloud.profileRequests.splice(index, 1); - } - } - - yield true; - }; - - * getAccepted(numPoints, node, matrix, segment, segmentDir, points, totalMileage){ - let checkpoint = performance.now(); - - let accepted = new Uint32Array(numPoints); - let mileage = new Float64Array(numPoints); - let acceptedPositions = new Float32Array(numPoints * 3); - let numAccepted = 0; - - let pos = new THREE.Vector3(); - let svp = new THREE.Vector3(); - - let view = new Float32Array(node.geometry.attributes.position.array); - - for (let i = 0; i < numPoints; i++) { - - pos.set( - view[i * 3 + 0], - view[i * 3 + 1], - view[i * 3 + 2]); - - pos.applyMatrix4(matrix); - let distance = Math.abs(segment.cutPlane.distanceToPoint(pos)); - let centerDistance = Math.abs(segment.halfPlane.distanceToPoint(pos)); - - if (distance < this.profile.width / 2 && centerDistance < segment.length / 2) { - svp.subVectors(pos, segment.start); - let localMileage = segmentDir.dot(svp); - - accepted[numAccepted] = i; - mileage[numAccepted] = localMileage + totalMileage; - points.boundingBox.expandByPoint(pos); - - pos.sub(this.pointcloud.position); - - acceptedPositions[3 * numAccepted + 0] = pos.x; - acceptedPositions[3 * numAccepted + 1] = pos.y; - acceptedPositions[3 * numAccepted + 2] = pos.z; - - numAccepted++; - } - - if((i % 1000) === 0){ - let duration = performance.now() - checkpoint; - if(duration > 4){ - //console.log(`getAccepted yield after ${duration}ms`); - yield false; - checkpoint = performance.now(); - } - } - } - - accepted = accepted.subarray(0, numAccepted); - mileage = mileage.subarray(0, numAccepted); - acceptedPositions = acceptedPositions.subarray(0, numAccepted * 3); - - //let end = performance.now(); - //let duration = end - start; - //console.log("accepted duration ", duration) - - //console.log(`getAccepted finished`); - - yield [accepted, mileage, acceptedPositions]; - } - - * getPointsInsideProfile(nodes, target){ - let checkpoint = performance.now(); - let totalMileage = 0; - - let pointsProcessed = 0; - - for (let segment of target.segments) { - for (let node of nodes) { - let numPoints = node.numPoints; - let geometry = node.geometry; - - if(!numPoints){ - continue; - } - - { // skip if current node doesn't intersect current segment - let bbWorld = node.boundingBox.clone().applyMatrix4(this.pointcloud.matrixWorld); - let bsWorld = bbWorld.getBoundingSphere(new THREE.Sphere()); - - let start = new THREE.Vector3(segment.start.x, segment.start.y, bsWorld.center.z); - let end = new THREE.Vector3(segment.end.x, segment.end.y, bsWorld.center.z); - - let closest = new THREE.Line3(start, end).closestPointToPoint(bsWorld.center, true, new THREE.Vector3()); - let distance = closest.distanceTo(bsWorld.center); - - let intersects = (distance < (bsWorld.radius + target.profile.width)); - - if(!intersects){ - continue; - } - } - - //{// DEBUG - // console.log(node.name); - // let boxHelper = new Potree.Box3Helper(node.getBoundingBox()); - // boxHelper.matrixAutoUpdate = false; - // boxHelper.matrix.copy(viewer.scene.pointclouds[0].matrixWorld); - // viewer.scene.scene.add(boxHelper); - //} - - let sv = new THREE.Vector3().subVectors(segment.end, segment.start).setZ(0); - let segmentDir = sv.clone().normalize(); - - let points = new Points(); - - let nodeMatrix = new THREE.Matrix4().makeTranslation(...node.boundingBox.min.toArray()); - - let matrix = new THREE.Matrix4().multiplyMatrices( - this.pointcloud.matrixWorld, nodeMatrix); - - pointsProcessed = pointsProcessed + numPoints; - - let accepted = null; - let mileage = null; - let acceptedPositions = null; - for(let result of this.getAccepted(numPoints, node, matrix, segment, segmentDir, points,totalMileage)){ - if(!result){ - let duration = performance.now() - checkpoint; - //console.log(`getPointsInsideProfile yield after ${duration}ms`); - yield false; - checkpoint = performance.now(); - }else { - [accepted, mileage, acceptedPositions] = result; - } - } - - let duration = performance.now() - checkpoint; - if(duration > 4){ - //console.log(`getPointsInsideProfile yield after ${duration}ms`); - yield false; - checkpoint = performance.now(); - } - - points.data.position = acceptedPositions; - - let relevantAttributes = Object.keys(geometry.attributes).filter(a => !["position", "indices"].includes(a)); - for(let attributeName of relevantAttributes){ - - let attribute = geometry.attributes[attributeName]; - let numElements = attribute.array.length / numPoints; - - if(numElements !== parseInt(numElements)){ - debugger; - } - - let Type = attribute.array.constructor; - - let filteredBuffer = new Type(numElements * accepted.length); - - let source = attribute.array; - let target = filteredBuffer; - - for(let i = 0; i < accepted.length; i++){ - - let index = accepted[i]; - - let start = index * numElements; - let end = start + numElements; - let sub = source.subarray(start, end); - - target.set(sub, i * numElements); - } - - points.data[attributeName] = filteredBuffer; - } - - points.data['mileage'] = mileage; - points.numPoints = accepted.length; - - segment.points.add(points); - } - - totalMileage += segment.length; - } - - for (let segment of target.segments) { - target.boundingBox.union(segment.points.boundingBox); - } - - //console.log(`getPointsInsideProfile finished`); - yield true; - }; - - finishLevelThenCancel () { - if (this.cancelRequested) { - return; - } - - this.maxDepth = this.highestLevelServed; - this.cancelRequested = true; - - //console.log(`maxDepth: ${this.maxDepth}`); - }; - - cancel () { - this.callback.onCancel(); - - this.priorityQueue = new BinaryHeap(function (x) { return 1 / x.weight; }); - - let index = this.pointcloud.profileRequests.indexOf(this); - if (index >= 0) { - this.pointcloud.profileRequests.splice(index, 1); - } - }; - } - - class Version{ - - constructor(version){ - this.version = version; - let vmLength = (version.indexOf('.') === -1) ? version.length : version.indexOf('.'); - this.versionMajor = parseInt(version.substr(0, vmLength)); - this.versionMinor = parseInt(version.substr(vmLength + 1)); - if (this.versionMinor.length === 0) { - this.versionMinor = 0; - } - } - - newerThan(version){ - let v = new Version(version); - - if (this.versionMajor > v.versionMajor) { - return true; - } else if (this.versionMajor === v.versionMajor && this.versionMinor > v.versionMinor) { - return true; - } else { - return false; - } - } - - equalOrHigher(version){ - let v = new Version(version); - - if (this.versionMajor > v.versionMajor) { - return true; - } else if (this.versionMajor === v.versionMajor && this.versionMinor >= v.versionMinor) { - return true; - } else { - return false; - } - } - - upTo(version){ - return !this.newerThan(version); - } - - } - - class WorkerPool{ - constructor(){ - this.workers = {}; - } - - getWorker(url){ - if (!this.workers[url]){ - this.workers[url] = []; - } - - if (this.workers[url].length === 0){ - let worker = new Worker(url); - this.workers[url].push(worker); - } - - let worker = this.workers[url].pop(); - - return worker; - } - - returnWorker(url, worker){ - this.workers[url].push(worker); - } - }; - - //Potree.workerPool = new Potree.WorkerPool(); - - function createPointcloudData(pointcloud) { - - let material = pointcloud.material; - - let ranges = []; - - for(let [name, value] of material.ranges){ - ranges.push({ - name: name, - value: value, - }); - } - - if(typeof material.elevationRange[0] === "number"){ - ranges.push({ - name: "elevationRange", - value: material.elevationRange, - }); - } - if(typeof material.intensityRange[0] === "number"){ - ranges.push({ - name: "intensityRange", - value: material.intensityRange, - }); - } - - let pointSizeTypeName = Object.entries(Potree.PointSizeType).find(e => e[1] === material.pointSizeType)[0]; - - let jsonMaterial = { - activeAttributeName: material.activeAttributeName, - ranges: ranges, - size: material.size, - minSize: material.minSize, - pointSizeType: pointSizeTypeName, - matcap: material.matcap, - }; - - const pcdata = { - name: pointcloud.name, - url: pointcloud.pcoGeometry.url, - position: pointcloud.position.toArray(), - rotation: pointcloud.rotation.toArray(), - scale: pointcloud.scale.toArray(), - material: jsonMaterial, - }; - - return pcdata; - } - - function createProfileData(profile){ - const data = { - uuid: profile.uuid, - name: profile.name, - points: profile.points.map(p => p.toArray()), - height: profile.height, - width: profile.width, - }; - - return data; - } - - function createVolumeData(volume){ - const data = { - uuid: volume.uuid, - type: volume.constructor.name, - name: volume.name, - position: volume.position.toArray(), - rotation: volume.rotation.toArray(), - scale: volume.scale.toArray(), - visible: volume.visible, - clip: volume.clip, - }; - - return data; - } - - function createCameraAnimationData(animation){ - - const controlPoints = animation.controlPoints.map( cp => { - const cpdata = { - position: cp.position.toArray(), - target: cp.target.toArray(), - }; - - return cpdata; - }); - - const data = { - uuid: animation.uuid, - name: animation.name, - duration: animation.duration, - t: animation.t, - curveType: animation.curveType, - visible: animation.visible, - controlPoints: controlPoints, - }; - - return data; - } - - function createMeasurementData(measurement){ - - const data = { - uuid: measurement.uuid, - name: measurement.name, - points: measurement.points.map(p => p.position.toArray()), - showDistances: measurement.showDistances, - showCoordinates: measurement.showCoordinates, - showArea: measurement.showArea, - closed: measurement.closed, - showAngles: measurement.showAngles, - showHeight: measurement.showHeight, - showCircle: measurement.showCircle, - showAzimuth: measurement.showAzimuth, - showEdges: measurement.showEdges, - color: measurement.color.toArray(), - }; - - return data; - } - - function createOrientedImagesData(images){ - const data = { - cameraParamsPath: images.cameraParamsPath, - imageParamsPath: images.imageParamsPath, - }; - - return data; - } - - function createGeopackageData(geopackage){ - const data = { - path: geopackage.path, - }; - - return data; - } - - function createAnnotationData(annotation){ - - const data = { - uuid: annotation.uuid, - title: annotation.title.toString(), - description: annotation.description, - position: annotation.position.toArray(), - offset: annotation.offset.toArray(), - children: [], - }; - - if(annotation.cameraPosition){ - data.cameraPosition = annotation.cameraPosition.toArray(); - } - - if(annotation.cameraTarget){ - data.cameraTarget = annotation.cameraTarget.toArray(); - } - - if(typeof annotation.radius !== "undefined"){ - data.radius = annotation.radius; - } - - return data; - } - - function createAnnotationsData(viewer){ - - const map = new Map(); - - viewer.scene.annotations.traverseDescendants(a => { - const aData = createAnnotationData(a); - - map.set(a, aData); - }); - - for(const [annotation, data] of map){ - for(const child of annotation.children){ - const childData = map.get(child); - data.children.push(childData); - } - } - - const annotations = viewer.scene.annotations.children.map(a => map.get(a)); - - return annotations; - } - - function createSettingsData(viewer){ - return { - pointBudget: viewer.getPointBudget(), - fov: viewer.getFOV(), - edlEnabled: viewer.getEDLEnabled(), - edlRadius: viewer.getEDLRadius(), - edlStrength: viewer.getEDLStrength(), - background: viewer.getBackground(), - minNodeSize: viewer.getMinNodeSize(), - showBoundingBoxes: viewer.getShowBoundingBox(), - }; - } - - function createSceneContentData(viewer){ - - const data = []; - - const potreeObjects = []; - - viewer.scene.scene.traverse(node => { - if(node.potree){ - potreeObjects.push(node); - } - }); - - for(const object of potreeObjects){ - - if(object.potree.file){ - const saveObject = { - file: object.potree.file, - }; - - data.push(saveObject); - } - - - } - - - return data; - } - - function createViewData(viewer){ - const view = viewer.scene.view; - - const data = { - position: view.position.toArray(), - target: view.getPivot().toArray(), - }; - - return data; - } - - function createClassificationData(viewer){ - const classifications = viewer.classifications; - - const data = classifications; - - return data; - } - - function saveProject(viewer) { - - const scene = viewer.scene; - - const data = { - type: "Potree", - version: 1.7, - settings: createSettingsData(viewer), - view: createViewData(viewer), - classification: createClassificationData(viewer), - pointclouds: scene.pointclouds.map(createPointcloudData), - measurements: scene.measurements.map(createMeasurementData), - volumes: scene.volumes.map(createVolumeData), - cameraAnimations: scene.cameraAnimations.map(createCameraAnimationData), - profiles: scene.profiles.map(createProfileData), - annotations: createAnnotationsData(viewer), - orientedImages: scene.orientedImages.map(createOrientedImagesData), - geopackages: scene.geopackages.map(createGeopackageData), - // objects: createSceneContentData(viewer), - }; - - return data; - } - - class ControlPoint{ - - constructor(){ - this.position = new THREE.Vector3(0, 0, 0); - this.target = new THREE.Vector3(0, 0, 0); - this.positionHandle = null; - this.targetHandle = null; - } - - }; - - - - class CameraAnimation extends EventDispatcher{ - - constructor(viewer){ - super(); - - this.viewer = viewer; - - this.selectedElement = null; - - this.controlPoints = []; - - this.uuid = THREE.Math.generateUUID(); - - this.node = new THREE.Object3D(); - this.node.name = "camera animation"; - this.viewer.scene.scene.add(this.node); - - this.frustum = this.createFrustum(); - this.node.add(this.frustum); - - this.name = "Camera Animation"; - this.duration = 5; - this.t = 0; - // "centripetal", "chordal", "catmullrom" - this.curveType = "centripetal"; - this.visible = true; - - this.createUpdateHook(); - this.createPath(); - } - - static defaultFromView(viewer){ - const animation = new CameraAnimation(viewer); - - const camera = viewer.scene.getActiveCamera(); - const target = viewer.scene.view.getPivot(); - - const cpCenter = new THREE.Vector3( - 0.3 * camera.position.x + 0.7 * target.x, - 0.3 * camera.position.y + 0.7 * target.y, - 0.3 * camera.position.z + 0.7 * target.z, - ); - - const targetCenter = new THREE.Vector3( - 0.05 * camera.position.x + 0.95 * target.x, - 0.05 * camera.position.y + 0.95 * target.y, - 0.05 * camera.position.z + 0.95 * target.z, - ); - - const r = camera.position.distanceTo(target) * 0.3; - - //const dir = target.clone().sub(camera.position).normalize(); - const angle = Utils.computeAzimuth(camera.position, target); - - const n = 5; - for(let i = 0; i < n; i++){ - let u = 1.5 * Math.PI * (i / n) + angle; - - const dx = r * Math.cos(u); - const dy = r * Math.sin(u); - - const cpPos = [ - cpCenter.x + dx, - cpCenter.y + dy, - cpCenter.z, - ]; - - const targetPos = [ - targetCenter.x + dx * 0.1, - targetCenter.y + dy * 0.1, - targetCenter.z, - ]; - - const cp = animation.createControlPoint(); - cp.position.set(...cpPos); - cp.target.set(...targetPos); - } - - return animation; - } - - createUpdateHook(){ - const viewer = this.viewer; - - viewer.addEventListener("update", () => { - - const camera = viewer.scene.getActiveCamera(); - const {width, height} = viewer.renderer.getSize(new THREE.Vector2()); - - this.node.visible = this.visible; - - for(const cp of this.controlPoints){ - - { // position - const projected = cp.position.clone().project(camera); - - const visible = this.visible && (projected.z < 1 && projected.z > -1); - - if(visible){ - const x = width * (projected.x * 0.5 + 0.5); - const y = height - height * (projected.y * 0.5 + 0.5); - - cp.positionHandle.svg.style.left = x - cp.positionHandle.svg.clientWidth / 2; - cp.positionHandle.svg.style.top = y - cp.positionHandle.svg.clientHeight / 2; - cp.positionHandle.svg.style.display = ""; - }else { - cp.positionHandle.svg.style.display = "none"; - } - } - - { // target - const projected = cp.target.clone().project(camera); - - const visible = this.visible && (projected.z < 1 && projected.z > -1); - - if(visible){ - const x = width * (projected.x * 0.5 + 0.5); - const y = height - height * (projected.y * 0.5 + 0.5); - - cp.targetHandle.svg.style.left = x - cp.targetHandle.svg.clientWidth / 2; - cp.targetHandle.svg.style.top = y - cp.targetHandle.svg.clientHeight / 2; - cp.targetHandle.svg.style.display = ""; - }else { - cp.targetHandle.svg.style.display = "none"; - } - } - - } - - this.line.material.resolution.set(width, height); - - this.updatePath(); - - { // frustum - const frame = this.at(this.t); - const frustum = this.frustum; - - frustum.position.copy(frame.position); - frustum.lookAt(...frame.target.toArray()); - frustum.scale.set(20, 20, 20); - - frustum.material.resolution.set(width, height); - } - - }); - } - - createControlPoint(index){ - - if(index === undefined){ - index = this.controlPoints.length; - } - - const cp = new ControlPoint(); - - - if(this.controlPoints.length >= 2 && index === 0){ - const cp1 = this.controlPoints[0]; - const cp2 = this.controlPoints[1]; - - const dir = cp1.position.clone().sub(cp2.position).multiplyScalar(0.5); - cp.position.copy(cp1.position).add(dir); - - const tDir = cp1.target.clone().sub(cp2.target).multiplyScalar(0.5); - cp.target.copy(cp1.target).add(tDir); - }else if(this.controlPoints.length >= 2 && index === this.controlPoints.length){ - const cp1 = this.controlPoints[this.controlPoints.length - 2]; - const cp2 = this.controlPoints[this.controlPoints.length - 1]; - - const dir = cp2.position.clone().sub(cp1.position).multiplyScalar(0.5); - cp.position.copy(cp1.position).add(dir); - - const tDir = cp2.target.clone().sub(cp1.target).multiplyScalar(0.5); - cp.target.copy(cp2.target).add(tDir); - }else if(this.controlPoints.length >= 2){ - const cp1 = this.controlPoints[index - 1]; - const cp2 = this.controlPoints[index]; - - cp.position.copy(cp1.position.clone().add(cp2.position).multiplyScalar(0.5)); - cp.target.copy(cp1.target.clone().add(cp2.target).multiplyScalar(0.5)); - } - - // cp.position.copy(viewer.scene.view.position); - // cp.target.copy(viewer.scene.view.getPivot()); - - cp.positionHandle = this.createHandle(cp.position); - cp.targetHandle = this.createHandle(cp.target); - - this.controlPoints.splice(index, 0, cp); - - this.dispatchEvent({ - type: "controlpoint_added", - controlpoint: cp, - }); - - return cp; - } - - removeControlPoint(cp){ - this.controlPoints = this.controlPoints.filter(_cp => _cp !== cp); - - this.dispatchEvent({ - type: "controlpoint_removed", - controlpoint: cp, - }); - - cp.positionHandle.svg.remove(); - cp.targetHandle.svg.remove(); - - // TODO destroy cp - } - - createPath(){ - - { // position - const geometry = new THREE.LineGeometry(); - - let material = new THREE.LineMaterial({ - color: 0x00ff00, - dashSize: 5, - gapSize: 2, - linewidth: 2, - resolution: new THREE.Vector2(1000, 1000), - }); - - const line = new THREE.Line2(geometry, material); - - this.line = line; - this.node.add(line); - } - - { // target - const geometry = new THREE.LineGeometry(); - - let material = new THREE.LineMaterial({ - color: 0x0000ff, - dashSize: 5, - gapSize: 2, - linewidth: 2, - resolution: new THREE.Vector2(1000, 1000), - }); - - const line = new THREE.Line2(geometry, material); - - this.targetLine = line; - this.node.add(line); - } - } - - createFrustum(){ - - const f = 0.3; - - const positions = [ - 0, 0, 0, - -f, -f, +1, - - 0, 0, 0, - f, -f, +1, - - 0, 0, 0, - f, f, +1, - - 0, 0, 0, - -f, f, +1, - - -f, -f, +1, - f, -f, +1, - - f, -f, +1, - f, f, +1, - - f, f, +1, - -f, f, +1, - - -f, f, +1, - -f, -f, +1, - ]; - - const geometry = new THREE.LineGeometry(); - - geometry.setPositions(positions); - geometry.verticesNeedUpdate = true; - geometry.computeBoundingSphere(); - - let material = new THREE.LineMaterial({ - color: 0xff0000, - linewidth: 2, - resolution: new THREE.Vector2(1000, 1000), - }); - - const line = new THREE.Line2(geometry, material); - line.computeLineDistances(); - - return line; - } - - updatePath(){ - - { // positions - const positions = this.controlPoints.map(cp => cp.position); - const first = positions[0]; - - const curve = new THREE.CatmullRomCurve3(positions); - curve.curveType = this.curveType; - - const n = 100; - - const curvePositions = []; - for(let k = 0; k <= n; k++){ - const t = k / n; - - const position = curve.getPoint(t).sub(first); - - curvePositions.push(position.x, position.y, position.z); - } - - this.line.geometry.setPositions(curvePositions); - this.line.geometry.verticesNeedUpdate = true; - this.line.geometry.computeBoundingSphere(); - this.line.position.copy(first); - this.line.computeLineDistances(); - - this.cameraCurve = curve; - } - - { // targets - const positions = this.controlPoints.map(cp => cp.target); - const first = positions[0]; - - const curve = new THREE.CatmullRomCurve3(positions); - curve.curveType = this.curveType; - - const n = 100; - - const curvePositions = []; - for(let k = 0; k <= n; k++){ - const t = k / n; - - const position = curve.getPoint(t).sub(first); - - curvePositions.push(position.x, position.y, position.z); - } - - this.targetLine.geometry.setPositions(curvePositions); - this.targetLine.geometry.verticesNeedUpdate = true; - this.targetLine.geometry.computeBoundingSphere(); - this.targetLine.position.copy(first); - this.targetLine.computeLineDistances(); - - this.targetCurve = curve; - } - } - - at(t){ - - if(t > 1){ - t = 1; - }else if(t < 0){ - t = 0; - } - - const camPos = this.cameraCurve.getPointAt(t); - const target = this.targetCurve.getPointAt(t); - - const frame = { - position: camPos, - target: target, - }; - - return frame; - } - - set(t){ - this.t = t; - } - - createHandle(vector){ - - const svgns = "http://www.w3.org/2000/svg"; - const svg = document.createElementNS(svgns, "svg"); - - svg.setAttribute("width", "2em"); - svg.setAttribute("height", "2em"); - svg.setAttribute("position", "absolute"); - - svg.style.left = "50px"; - svg.style.top = "50px"; - svg.style.position = "absolute"; - svg.style.zIndex = "10000"; - - const circle = document.createElementNS(svgns, 'circle'); - circle.setAttributeNS(null, 'cx', "1em"); - circle.setAttributeNS(null, 'cy', "1em"); - circle.setAttributeNS(null, 'r', "0.5em"); - circle.setAttributeNS(null, 'style', 'fill: red; stroke: black; stroke-width: 0.2em;' ); - svg.appendChild(circle); - - - const element = this.viewer.renderer.domElement.parentElement; - element.appendChild(svg); - - - const startDrag = (evt) => { - this.selectedElement = svg; - - document.addEventListener("mousemove", drag); - }; - - const endDrag = (evt) => { - this.selectedElement = null; - - document.removeEventListener("mousemove", drag); - }; - - const drag = (evt) => { - if (this.selectedElement) { - evt.preventDefault(); - - const rect = viewer.renderer.domElement.getBoundingClientRect(); - - const x = evt.clientX - rect.x; - const y = evt.clientY - rect.y; - - const {width, height} = this.viewer.renderer.getSize(new THREE.Vector2()); - const camera = this.viewer.scene.getActiveCamera(); - //const cp = this.controlPoints.find(cp => cp.handle.svg === svg); - const projected = vector.clone().project(camera); - - projected.x = ((x / width) - 0.5) / 0.5; - projected.y = (-(y - height) / height - 0.5) / 0.5; - - const unprojected = projected.clone().unproject(camera); - vector.set(unprojected.x, unprojected.y, unprojected.z); - - - } - }; - - svg.addEventListener('mousedown', startDrag); - svg.addEventListener('mouseup', endDrag); - - const handle = { - svg: svg, - }; - - return handle; - } - - setVisible(visible){ - this.node.visible = visible; - - const display = visible ? "" : "none"; - - for(const cp of this.controlPoints){ - cp.positionHandle.svg.style.display = display; - cp.targetHandle.svg.style.display = display; - } - - this.visible = visible; - } - - setDuration(duration){ - this.duration = duration; - } - - getDuration(duration){ - return this.duration; - } - - play(){ - - const tStart = performance.now(); - const duration = this.duration; - - const originalyVisible = this.visible; - this.setVisible(false); - - const onUpdate = (delta) => { - - let tNow = performance.now(); - let elapsed = (tNow - tStart) / 1000; - let t = elapsed / duration; - - this.set(t); - - const frame = this.at(t); - - viewer.scene.view.position.copy(frame.position); - viewer.scene.view.lookAt(frame.target); - - - if(t > 1){ - this.setVisible(originalyVisible); - - this.viewer.removeEventListener("update", onUpdate); - } - - }; - - this.viewer.addEventListener("update", onUpdate); - - } - - } - - function loadPointCloud(viewer, data){ - - let loadMaterial = (target) => { - - if(data.material){ - - if(data.material.activeAttributeName != null){ - target.activeAttributeName = data.material.activeAttributeName; - } - - if(data.material.ranges != null){ - for(let range of data.material.ranges){ - - if(range.name === "elevationRange"){ - target.elevationRange = range.value; - }else if(range.name === "intensityRange"){ - target.intensityRange = range.value; - }else { - target.setRange(range.name, range.value); - } - - } - } - - if(data.material.size != null){ - target.size = data.material.size; - } - - if(data.material.minSize != null){ - target.minSize = data.material.minSize; - } - - if(data.material.pointSizeType != null){ - target.pointSizeType = PointSizeType[data.material.pointSizeType]; - } - - if(data.material.matcap != null){ - target.matcap = data.material.matcap; - } - - }else if(data.activeAttributeName != null){ - target.activeAttributeName = data.activeAttributeName; - }else { - // no material data - } - - }; - - const promise = new Promise((resolve) => { - - const names = viewer.scene.pointclouds.map(p => p.name); - const alreadyExists = names.includes(data.name); - - if(alreadyExists){ - resolve(); - return; - } - - Potree.loadPointCloud(data.url, data.name, (e) => { - const {pointcloud} = e; - - pointcloud.position.set(...data.position); - pointcloud.rotation.set(...data.rotation); - pointcloud.scale.set(...data.scale); - - loadMaterial(pointcloud.material); - - viewer.scene.addPointCloud(pointcloud); - - resolve(pointcloud); - }); - }); - - return promise; - } - - function loadMeasurement(viewer, data){ - - const duplicate = viewer.scene.measurements.find(measure => measure.uuid === data.uuid); - if(duplicate){ - return; - } - - const measure = new Measure(); - - measure.uuid = data.uuid; - measure.name = data.name; - measure.showDistances = data.showDistances; - measure.showCoordinates = data.showCoordinates; - measure.showArea = data.showArea; - measure.closed = data.closed; - measure.showAngles = data.showAngles; - measure.showHeight = data.showHeight; - measure.showCircle = data.showCircle; - measure.showAzimuth = data.showAzimuth; - measure.showEdges = data.showEdges; - // color - - for(const point of data.points){ - const pos = new THREE.Vector3(...point); - measure.addMarker(pos); - } - - viewer.scene.addMeasurement(measure); - - } - - function loadVolume(viewer, data){ - - const duplicate = viewer.scene.volumes.find(volume => volume.uuid === data.uuid); - if(duplicate){ - return; - } - - let volume = new Potree[data.type]; - - volume.uuid = data.uuid; - volume.name = data.name; - volume.position.set(...data.position); - volume.rotation.set(...data.rotation); - volume.scale.set(...data.scale); - volume.visible = data.visible; - volume.clip = data.clip; - - viewer.scene.addVolume(volume); - } - - function loadCameraAnimation(viewer, data){ - - const duplicate = viewer.scene.cameraAnimations.find(a => a.uuid === data.uuid); - if(duplicate){ - return; - } - - const animation = new CameraAnimation(viewer); - - animation.uuid = data.uuid; - animation.name = data.name; - animation.duration = data.duration; - animation.t = data.t; - animation.curveType = data.curveType; - animation.visible = data.visible; - animation.controlPoints = []; - - for(const cpdata of data.controlPoints){ - const cp = animation.createControlPoint(); - - cp.position.set(...cpdata.position); - cp.target.set(...cpdata.target); - } - - viewer.scene.addCameraAnimation(animation); - } - - function loadOrientedImages(viewer, images){ - - const {cameraParamsPath, imageParamsPath} = images; - - const duplicate = viewer.scene.orientedImages.find(i => i.imageParamsPath === imageParamsPath); - if(duplicate){ - return; - } - - Potree.OrientedImageLoader.load(cameraParamsPath, imageParamsPath, viewer).then( images => { - viewer.scene.addOrientedImages(images); - }); - - } - - function loadGeopackage(viewer, geopackage){ - - const path = geopackage.path; - - const duplicate = viewer.scene.geopackages.find(i => i.path === path); - if(duplicate){ - return; - } - - const projection = viewer.getProjection(); - - proj4.defs("WGS84", "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"); - proj4.defs("pointcloud", projection); - const transform = proj4("WGS84", "pointcloud"); - const params = { - transform: transform, - }; - - Potree.GeoPackageLoader.loadUrl(path, params).then(data => { - viewer.scene.addGeopackage(data); - }); - - - } - - function loadSettings(viewer, data){ - if(!data){ - return; - } - - viewer.setPointBudget(data.pointBudget); - viewer.setFOV(data.fov); - viewer.setEDLEnabled(data.edlEnabled); - viewer.setEDLRadius(data.edlRadius); - viewer.setEDLStrength(data.edlStrength); - viewer.setBackground(data.background); - viewer.setMinNodeSize(data.minNodeSize); - viewer.setShowBoundingBox(data.showBoundingBoxes); - } - - function loadView(viewer, view){ - viewer.scene.view.position.set(...view.position); - viewer.scene.view.lookAt(...view.target); - } - - function loadAnnotationItem(item){ - - const annotation = new Annotation({ - position: item.position, - title: item.title, - cameraPosition: item.cameraPosition, - cameraTarget: item.cameraTarget, - }); - - - annotation.description = item.description; - annotation.uuid = item.uuid; - - if(item.offset){ - annotation.offset.set(...item.offset); - } - - return annotation; - } - - function loadAnnotations(viewer, data){ - - if(!data){ - return; - } - - const findDuplicate = (item) => { - - let duplicate = null; - - viewer.scene.annotations.traverse( a => { - if(a.uuid === item.uuid){ - duplicate = a; - } - }); - - return duplicate; - }; - - const traverse = (item, parent) => { - - const duplicate = findDuplicate(item); - if(duplicate){ - return; - } - - const annotation = loadAnnotationItem(item); - - for(const childItem of item.children){ - traverse(childItem, annotation); - } - - parent.add(annotation); - - }; - - for(const item of data){ - traverse(item, viewer.scene.annotations); - } - - } - - function loadProfile(viewer, data){ - - const {name, points} = data; - - const duplicate = viewer.scene.profiles.find(profile => profile.uuid === data.uuid); - if(duplicate){ - return; - } - - let profile = new Potree.Profile(); - profile.name = name; - profile.uuid = data.uuid; - - profile.setWidth(data.width); - - for(const point of points){ - profile.addMarker(new THREE.Vector3(...point)); - } - - viewer.scene.addProfile(profile); - } - - function loadClassification(viewer, data){ - if(!data){ - return; - } - - const classifications = data; - - viewer.setClassifications(classifications); - } - - async function loadProject(viewer, data){ - - if(data.type !== "Potree"){ - console.error("not a valid Potree project"); - return; - } - - loadSettings(viewer, data.settings); - - loadView(viewer, data.view); - - const pointcloudPromises = []; - for(const pointcloud of data.pointclouds){ - const promise = loadPointCloud(viewer, pointcloud); - pointcloudPromises.push(promise); - } - - for(const measure of data.measurements){ - loadMeasurement(viewer, measure); - } - - for(const volume of data.volumes){ - loadVolume(viewer, volume); - } - - for(const animation of data.cameraAnimations){ - loadCameraAnimation(viewer, animation); - } - - for(const profile of data.profiles){ - loadProfile(viewer, profile); - } - - if(data.orientedImages){ - for(const images of data.orientedImages){ - loadOrientedImages(viewer, images); - } - } - - loadAnnotations(viewer, data.annotations); - - loadClassification(viewer, data.classification); - - // need to load at least one point cloud that defines the scene projection, - // before we can load stuff in other projections such as geopackages - //await Promise.any(pointcloudPromises); // (not yet supported) - Utils.waitAny(pointcloudPromises).then( () => { - if(data.geopackages){ - for(const geopackage of data.geopackages){ - loadGeopackage(viewer, geopackage); - } - } - }); - - await Promise.all(pointcloudPromises); - } - - // - // Algorithm by Christian Boucheny - // shader code taken and adapted from CloudCompare - // - // see - // https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL - // http://www.kitware.com/source/home/post/9 - // https://tel.archives-ouvertes.fr/tel-00438464/document p. 115+ (french) - - class EyeDomeLightingMaterial extends THREE.RawShaderMaterial{ - - constructor(parameters = {}){ - super(); - - let uniforms = { - screenWidth: { type: 'f', value: 0 }, - screenHeight: { type: 'f', value: 0 }, - edlStrength: { type: 'f', value: 1.0 }, - uNear: { type: 'f', value: 1.0 }, - uFar: { type: 'f', value: 1.0 }, - radius: { type: 'f', value: 1.0 }, - neighbours: { type: '2fv', value: [] }, - depthMap: { type: 't', value: null }, - uEDLColor: { type: 't', value: null }, - uEDLDepth: { type: 't', value: null }, - opacity: { type: 'f', value: 1.0 }, - uProj: { type: "Matrix4fv", value: [] }, - }; - - this.setValues({ - uniforms: uniforms, - vertexShader: this.getDefines() + Shaders['edl.vs'], - fragmentShader: this.getDefines() + Shaders['edl.fs'], - lights: false - }); - - this.neighbourCount = 8; - } - - getDefines() { - let defines = ''; - - defines += '#define NEIGHBOUR_COUNT ' + this.neighbourCount + '\n'; - - return defines; - } - - updateShaderSource() { - - let vs = this.getDefines() + Shaders['edl.vs']; - let fs = this.getDefines() + Shaders['edl.fs']; - - this.setValues({ - vertexShader: vs, - fragmentShader: fs - }); - - this.uniforms.neighbours.value = this.neighbours; - - this.needsUpdate = true; - } - - get neighbourCount(){ - return this._neighbourCount; - } - - set neighbourCount(value){ - if (this._neighbourCount !== value) { - this._neighbourCount = value; - this.neighbours = new Float32Array(this._neighbourCount * 2); - for (let c = 0; c < this._neighbourCount; c++) { - this.neighbours[2 * c + 0] = Math.cos(2 * c * Math.PI / this._neighbourCount); - this.neighbours[2 * c + 1] = Math.sin(2 * c * Math.PI / this._neighbourCount); - } - - this.updateShaderSource(); - } - } - - - } - - class NormalizationEDLMaterial extends THREE.RawShaderMaterial{ - - constructor(parameters = {}){ - super(); - - let uniforms = { - screenWidth: { type: 'f', value: 0 }, - screenHeight: { type: 'f', value: 0 }, - edlStrength: { type: 'f', value: 1.0 }, - radius: { type: 'f', value: 1.0 }, - neighbours: { type: '2fv', value: [] }, - uEDLMap: { type: 't', value: null }, - uDepthMap: { type: 't', value: null }, - uWeightMap: { type: 't', value: null }, - }; - - this.setValues({ - uniforms: uniforms, - vertexShader: this.getDefines() + Shaders['normalize.vs'], - fragmentShader: this.getDefines() + Shaders['normalize_and_edl.fs'], - }); - - this.neighbourCount = 8; - } - - getDefines() { - let defines = ''; - - defines += '#define NEIGHBOUR_COUNT ' + this.neighbourCount + '\n'; - - return defines; - } - - updateShaderSource() { - - let vs = this.getDefines() + Shaders['normalize.vs']; - let fs = this.getDefines() + Shaders['normalize_and_edl.fs']; - - this.setValues({ - vertexShader: vs, - fragmentShader: fs - }); - - this.uniforms.neighbours.value = this.neighbours; - - this.needsUpdate = true; - } - - get neighbourCount(){ - return this._neighbourCount; - } - - set neighbourCount(value){ - if (this._neighbourCount !== value) { - this._neighbourCount = value; - this.neighbours = new Float32Array(this._neighbourCount * 2); - for (let c = 0; c < this._neighbourCount; c++) { - this.neighbours[2 * c + 0] = Math.cos(2 * c * Math.PI / this._neighbourCount); - this.neighbours[2 * c + 1] = Math.sin(2 * c * Math.PI / this._neighbourCount); - } - - this.updateShaderSource(); - } - } - - } - - class NormalizationMaterial extends THREE.RawShaderMaterial{ - - constructor(parameters = {}){ - super(); - - let uniforms = { - uDepthMap: { type: 't', value: null }, - uWeightMap: { type: 't', value: null }, - }; - - this.setValues({ - uniforms: uniforms, - vertexShader: this.getDefines() + Shaders['normalize.vs'], - fragmentShader: this.getDefines() + Shaders['normalize.fs'], - }); - } - - getDefines() { - let defines = ''; - - return defines; - } - - updateShaderSource() { - - let vs = this.getDefines() + Shaders['normalize.vs']; - let fs = this.getDefines() + Shaders['normalize.fs']; - - this.setValues({ - vertexShader: vs, - fragmentShader: fs - }); - - this.needsUpdate = true; - } - - } - - /** - * laslaz code taken and adapted from plas.io js-laslaz - * http://plas.io/ - * https://github.com/verma/plasio - * - * Thanks to Uday Verma and Howard Butler - * - */ - - class LasLazLoader { - - constructor (version, extension) { - if (typeof (version) === 'string') { - this.version = new Version(version); - } else { - this.version = version; - } - - this.extension = extension; - } - - static progressCB () { - - } - - load (node) { - if (node.loaded) { - return; - } - - let url = node.getURL(); - - if (this.version.equalOrHigher('1.4')) { - url += `.${this.extension}`; - } - - let xhr = XHRFactory.createXMLHttpRequest(); - xhr.open('GET', url, true); - xhr.responseType = 'arraybuffer'; - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - xhr.onreadystatechange = () => { - if (xhr.readyState === 4) { - if (xhr.status === 200 || xhr.status === 0) { - let buffer = xhr.response; - this.parse(node, buffer); - } else { - console.log('Failed to load file! HTTP status: ' + xhr.status + ', file: ' + url); - } - } - }; - - xhr.send(null); - } - - async parse(node, buffer){ - let lf = new LASFile(buffer); - let handler = new LasLazBatcher(node); - - try{ - await lf.open(); - lf.isOpen = true; - }catch(e){ - console.log("failed to open file. :("); - - return; - } - - let header = await lf.getHeader(); - - let skip = 1; - let totalRead = 0; - let totalToRead = (skip <= 1 ? header.pointsCount : header.pointsCount / skip); - - let hasMoreData = true; - - while(hasMoreData){ - let data = await lf.readData(1000 * 1000, 0, skip); - - handler.push(new LASDecoder(data.buffer, - header.pointsFormatId, - header.pointsStructSize, - data.count, - header.scale, - header.offset, - header.mins, header.maxs)); - - totalRead += data.count; - LasLazLoader.progressCB(totalRead / totalToRead); - - hasMoreData = data.hasMoreData; - } - - header.totalRead = totalRead; - header.versionAsString = lf.versionAsString; - header.isCompressed = lf.isCompressed; - - LasLazLoader.progressCB(1); - - try{ - await lf.close(); - - lf.isOpen = false; - }catch(e){ - console.error("failed to close las/laz file!!!"); - - throw e; - } - } - - handle (node, url) { - - } - }; - - class LasLazBatcher{ - - constructor (node) { - this.node = node; - } - - push (lasBuffer) { - const workerPath = Potree.scriptPath + '/workers/LASDecoderWorker.js'; - const worker = Potree.workerPool.getWorker(workerPath); - const node = this.node; - const pointAttributes = node.pcoGeometry.pointAttributes; - - worker.onmessage = (e) => { - let geometry = new THREE.BufferGeometry(); - let numPoints = lasBuffer.pointsCount; - - let positions = new Float32Array(e.data.position); - let colors = new Uint8Array(e.data.color); - let intensities = new Float32Array(e.data.intensity); - let classifications = new Uint8Array(e.data.classification); - let returnNumbers = new Uint8Array(e.data.returnNumber); - let numberOfReturns = new Uint8Array(e.data.numberOfReturns); - let pointSourceIDs = new Uint16Array(e.data.pointSourceID); - let indices = new Uint8Array(e.data.indices); - - geometry.addAttribute('position', new THREE.BufferAttribute(positions, 3)); - geometry.addAttribute('color', new THREE.BufferAttribute(colors, 4, true)); - geometry.addAttribute('intensity', new THREE.BufferAttribute(intensities, 1)); - geometry.addAttribute('classification', new THREE.BufferAttribute(classifications, 1)); - geometry.addAttribute('return number', new THREE.BufferAttribute(returnNumbers, 1)); - geometry.addAttribute('number of returns', new THREE.BufferAttribute(numberOfReturns, 1)); - geometry.addAttribute('source id', new THREE.BufferAttribute(pointSourceIDs, 1)); - geometry.addAttribute('indices', new THREE.BufferAttribute(indices, 4)); - geometry.attributes.indices.normalized = true; - - for(const key in e.data.ranges){ - const range = e.data.ranges[key]; - - const attribute = pointAttributes.attributes.find(a => a.name === key); - attribute.range[0] = Math.min(attribute.range[0], range[0]); - attribute.range[1] = Math.max(attribute.range[1], range[1]); - } - - let tightBoundingBox = new THREE.Box3( - new THREE.Vector3().fromArray(e.data.tightBoundingBox.min), - new THREE.Vector3().fromArray(e.data.tightBoundingBox.max) - ); - - geometry.boundingBox = this.node.boundingBox; - this.node.tightBoundingBox = tightBoundingBox; - - this.node.geometry = geometry; - this.node.numPoints = numPoints; - this.node.loaded = true; - this.node.loading = false; - Potree.numNodesLoading--; - this.node.mean = new THREE.Vector3(...e.data.mean); - - Potree.workerPool.returnWorker(workerPath, worker); - }; - - let message = { - buffer: lasBuffer.arrayb, - numPoints: lasBuffer.pointsCount, - pointSize: lasBuffer.pointSize, - pointFormatID: 2, - scale: lasBuffer.scale, - offset: lasBuffer.offset, - mins: lasBuffer.mins, - maxs: lasBuffer.maxs - }; - worker.postMessage(message, [message.buffer]); - }; - } - - class BinaryLoader{ - - constructor(version, boundingBox, scale){ - if (typeof (version) === 'string') { - this.version = new Version(version); - } else { - this.version = version; - } - - this.boundingBox = boundingBox; - this.scale = scale; - } - - load(node){ - if (node.loaded) { - return; - } - - let url = node.getURL(); - - if (this.version.equalOrHigher('1.4')) { - url += '.bin'; - } - - let xhr = XHRFactory.createXMLHttpRequest(); - xhr.open('GET', url, true); - xhr.responseType = 'arraybuffer'; - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - xhr.onreadystatechange = () => { - if (xhr.readyState === 4) { - if((xhr.status === 200 || xhr.status === 0) && xhr.response !== null){ - let buffer = xhr.response; - this.parse(node, buffer); - } else { - //console.error(`Failed to load file! HTTP status: ${xhr.status}, file: ${url}`); - throw new Error(`Failed to load file! HTTP status: ${xhr.status}, file: ${url}`); - } - } - }; - - try { - xhr.send(null); - } catch (e) { - console.log('fehler beim laden der punktwolke: ' + e); - } - }; - - parse(node, buffer){ - let pointAttributes = node.pcoGeometry.pointAttributes; - let numPoints = buffer.byteLength / node.pcoGeometry.pointAttributes.byteSize; - - if (this.version.upTo('1.5')) { - node.numPoints = numPoints; - } - - let workerPath = Potree.scriptPath + '/workers/BinaryDecoderWorker.js'; - let worker = Potree.workerPool.getWorker(workerPath); - - worker.onmessage = function (e) { - - let data = e.data; - let buffers = data.attributeBuffers; - let tightBoundingBox = new THREE.Box3( - new THREE.Vector3().fromArray(data.tightBoundingBox.min), - new THREE.Vector3().fromArray(data.tightBoundingBox.max) - ); - - Potree.workerPool.returnWorker(workerPath, worker); - - let geometry = new THREE.BufferGeometry(); - - for(let property in buffers){ - let buffer = buffers[property].buffer; - let batchAttribute = buffers[property].attribute; - - if (property === "POSITION_CARTESIAN") { - geometry.addAttribute('position', new THREE.BufferAttribute(new Float32Array(buffer), 3)); - } else if (property === "rgba") { - geometry.addAttribute("rgba", new THREE.BufferAttribute(new Uint8Array(buffer), 4, true)); - } else if (property === "NORMAL_SPHEREMAPPED") { - geometry.addAttribute('normal', new THREE.BufferAttribute(new Float32Array(buffer), 3)); - } else if (property === "NORMAL_OCT16") { - geometry.addAttribute('normal', new THREE.BufferAttribute(new Float32Array(buffer), 3)); - } else if (property === "NORMAL") { - geometry.addAttribute('normal', new THREE.BufferAttribute(new Float32Array(buffer), 3)); - } else if (property === "INDICES") { - let bufferAttribute = new THREE.BufferAttribute(new Uint8Array(buffer), 4); - bufferAttribute.normalized = true; - geometry.addAttribute('indices', bufferAttribute); - } else if (property === "SPACING") { - let bufferAttribute = new THREE.BufferAttribute(new Float32Array(buffer), 1); - geometry.addAttribute('spacing', bufferAttribute); - } else { - const bufferAttribute = new THREE.BufferAttribute(new Float32Array(buffer), 1); - - bufferAttribute.potree = { - offset: buffers[property].offset, - scale: buffers[property].scale, - preciseBuffer: buffers[property].preciseBuffer, - range: batchAttribute.range, - }; - - geometry.addAttribute(property, bufferAttribute); - - const attribute = pointAttributes.attributes.find(a => a.name === batchAttribute.name); - attribute.range[0] = Math.min(attribute.range[0], batchAttribute.range[0]); - attribute.range[1] = Math.max(attribute.range[1], batchAttribute.range[1]); - - if(node.getLevel() === 0){ - attribute.initialRange = batchAttribute.range; - } - - } - } - - tightBoundingBox.max.sub(tightBoundingBox.min); - tightBoundingBox.min.set(0, 0, 0); - - let numPoints = e.data.buffer.byteLength / pointAttributes.byteSize; - - node.numPoints = numPoints; - node.geometry = geometry; - node.mean = new THREE.Vector3(...data.mean); - node.tightBoundingBox = tightBoundingBox; - node.loaded = true; - node.loading = false; - node.estimatedSpacing = data.estimatedSpacing; - Potree.numNodesLoading--; - }; - - let message = { - buffer: buffer, - pointAttributes: pointAttributes, - version: this.version.version, - min: [ node.boundingBox.min.x, node.boundingBox.min.y, node.boundingBox.min.z ], - offset: [node.pcoGeometry.offset.x, node.pcoGeometry.offset.y, node.pcoGeometry.offset.z], - scale: this.scale, - spacing: node.spacing, - hasChildren: node.hasChildren, - name: node.name - }; - worker.postMessage(message, [message.buffer]); - }; - - - } - - function parseAttributes(cloudjs){ - - let version = new Version(cloudjs.version); - - const replacements = { - "COLOR_PACKED": "rgba", - "RGBA": "rgba", - "INTENSITY": "intensity", - "CLASSIFICATION": "classification", - }; - - const replaceOldNames = (old) => { - if(replacements[old]){ - return replacements[old]; - }else { - return old; - } - }; - - const pointAttributes = []; - if(version.upTo('1.7')){ - - for(let attributeName of cloudjs.pointAttributes){ - const oldAttribute = PointAttribute[attributeName]; - - const attribute = { - name: oldAttribute.name, - size: oldAttribute.byteSize, - elements: oldAttribute.numElements, - elementSize: oldAttribute.byteSize / oldAttribute.numElements, - type: oldAttribute.type.name, - description: "", - }; - - pointAttributes.push(attribute); - } - - }else { - pointAttributes.push(...cloudjs.pointAttributes); - } - - - { - const attributes = new PointAttributes(); - - const typeConversion = { - int8: PointAttributeTypes.DATA_TYPE_INT8, - int16: PointAttributeTypes.DATA_TYPE_INT16, - int32: PointAttributeTypes.DATA_TYPE_INT32, - int64: PointAttributeTypes.DATA_TYPE_INT64, - uint8: PointAttributeTypes.DATA_TYPE_UINT8, - uint16: PointAttributeTypes.DATA_TYPE_UINT16, - uint32: PointAttributeTypes.DATA_TYPE_UINT32, - uint64: PointAttributeTypes.DATA_TYPE_UINT64, - double: PointAttributeTypes.DATA_TYPE_DOUBLE, - float: PointAttributeTypes.DATA_TYPE_FLOAT, - }; - - for(const jsAttribute of pointAttributes){ - const name = replaceOldNames(jsAttribute.name); - const type = typeConversion[jsAttribute.type]; - const numElements = jsAttribute.elements; - const description = jsAttribute.description; - - const attribute = new PointAttribute(name, type, numElements); - - attributes.add(attribute); - } - - { - // check if it has normals - let hasNormals = - pointAttributes.find(a => a.name === "NormalX") !== undefined && - pointAttributes.find(a => a.name === "NormalY") !== undefined && - pointAttributes.find(a => a.name === "NormalZ") !== undefined; - - if(hasNormals){ - let vector = { - name: "NORMAL", - attributes: ["NormalX", "NormalY", "NormalZ"], - }; - attributes.addVector(vector); - } - } - - return attributes; - } - - } - - function lasLazAttributes(fMno){ - const attributes = new PointAttributes(); - - attributes.add(PointAttribute.POSITION_CARTESIAN); - attributes.add(new PointAttribute("rgba", PointAttributeTypes.DATA_TYPE_UINT8, 4)); - attributes.add(new PointAttribute("intensity", PointAttributeTypes.DATA_TYPE_UINT16, 1)); - attributes.add(new PointAttribute("classification", PointAttributeTypes.DATA_TYPE_UINT8, 1)); - attributes.add(new PointAttribute("gps-time", PointAttributeTypes.DATA_TYPE_DOUBLE, 1)); - attributes.add(new PointAttribute("number of returns", PointAttributeTypes.DATA_TYPE_UINT8, 1)); - attributes.add(new PointAttribute("return number", PointAttributeTypes.DATA_TYPE_UINT8, 1)); - attributes.add(new PointAttribute("source id", PointAttributeTypes.DATA_TYPE_UINT16, 1)); - //attributes.add(new PointAttribute("pointSourceID", PointAttributeTypes.DATA_TYPE_INT8, 4)); - - - return attributes; - } - - class POCLoader { - - static load(url, callback){ - try { - let pco = new PointCloudOctreeGeometry(); - pco.url = url; - let xhr = XHRFactory.createXMLHttpRequest(); - xhr.open('GET', url, true); - - xhr.onreadystatechange = function () { - if (xhr.readyState === 4 && (xhr.status === 200 || xhr.status === 0)) { - let fMno = JSON.parse(xhr.responseText); - - let version = new Version(fMno.version); - - // assume octreeDir is absolute if it starts with http - if (fMno.octreeDir.indexOf('http') === 0) { - pco.octreeDir = fMno.octreeDir; - } else { - pco.octreeDir = url + '/../' + fMno.octreeDir; - } - - pco.spacing = fMno.spacing; - pco.hierarchyStepSize = fMno.hierarchyStepSize; - - pco.pointAttributes = fMno.pointAttributes; - - let min = new THREE.Vector3(fMno.boundingBox.lx, fMno.boundingBox.ly, fMno.boundingBox.lz); - let max = new THREE.Vector3(fMno.boundingBox.ux, fMno.boundingBox.uy, fMno.boundingBox.uz); - let boundingBox = new THREE.Box3(min, max); - let tightBoundingBox = boundingBox.clone(); - - if (fMno.tightBoundingBox) { - tightBoundingBox.min.copy(new THREE.Vector3(fMno.tightBoundingBox.lx, fMno.tightBoundingBox.ly, fMno.tightBoundingBox.lz)); - tightBoundingBox.max.copy(new THREE.Vector3(fMno.tightBoundingBox.ux, fMno.tightBoundingBox.uy, fMno.tightBoundingBox.uz)); - } - - let offset = min.clone(); - - boundingBox.min.sub(offset); - boundingBox.max.sub(offset); - - tightBoundingBox.min.sub(offset); - tightBoundingBox.max.sub(offset); - - pco.projection = fMno.projection; - pco.boundingBox = boundingBox; - pco.tightBoundingBox = tightBoundingBox; - pco.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere()); - pco.tightBoundingSphere = tightBoundingBox.getBoundingSphere(new THREE.Sphere()); - pco.offset = offset; - if (fMno.pointAttributes === 'LAS') { - pco.loader = new LasLazLoader(fMno.version, "las"); - pco.pointAttributes = lasLazAttributes(fMno); - } else if (fMno.pointAttributes === 'LAZ') { - pco.loader = new LasLazLoader(fMno.version, "laz"); - pco.pointAttributes = lasLazAttributes(fMno); - } else { - pco.loader = new BinaryLoader(fMno.version, boundingBox, fMno.scale); - pco.pointAttributes = parseAttributes(fMno); - } - - let nodes = {}; - - { // load root - let name = 'r'; - - let root = new PointCloudOctreeGeometryNode(name, pco, boundingBox); - root.level = 0; - root.hasChildren = true; - root.spacing = pco.spacing; - if (version.upTo('1.5')) { - root.numPoints = fMno.hierarchy[0][1]; - } else { - root.numPoints = 0; - } - pco.root = root; - pco.root.load(); - nodes[name] = root; - } - - // load remaining hierarchy - if (version.upTo('1.4')) { - for (let i = 1; i < fMno.hierarchy.length; i++) { - let name = fMno.hierarchy[i][0]; - let numPoints = fMno.hierarchy[i][1]; - let index = parseInt(name.charAt(name.length - 1)); - let parentName = name.substring(0, name.length - 1); - let parentNode = nodes[parentName]; - let level = name.length - 1; - //let boundingBox = POCLoader.createChildAABB(parentNode.boundingBox, index); - let boundingBox = Utils.createChildAABB(parentNode.boundingBox, index); - - let node = new PointCloudOctreeGeometryNode(name, pco, boundingBox); - node.level = level; - node.numPoints = numPoints; - node.spacing = pco.spacing / Math.pow(2, level); - parentNode.addChild(node); - nodes[name] = node; - } - } - - pco.nodes = nodes; - - callback(pco); - } - }; - - xhr.send(null); - } catch (e) { - console.log("loading failed: '" + url + "'"); - console.log(e); - - callback(); - } - } - - loadPointAttributes(mno){ - let fpa = mno.pointAttributes; - let pa = new PointAttributes(); - - for (let i = 0; i < fpa.length; i++) { - let pointAttribute = PointAttribute[fpa[i]]; - pa.add(pointAttribute); - } - - return pa; - } - - createChildAABB(aabb, index){ - let min = aabb.min.clone(); - let max = aabb.max.clone(); - let size = new THREE.Vector3().subVectors(max, min); - - if ((index & 0b0001) > 0) { - min.z += size.z / 2; - } else { - max.z -= size.z / 2; - } - - if ((index & 0b0010) > 0) { - min.y += size.y / 2; - } else { - max.y -= size.y / 2; - } - - if ((index & 0b0100) > 0) { - min.x += size.x / 2; - } else { - max.x -= size.x / 2; - } - - return new THREE.Box3(min, max); - } - } - - class OctreeGeometry{ - - constructor(){ - this.url = null; - this.spacing = 0; - this.boundingBox = null; - this.root = null; - this.pointAttributes = null; - this.loader = null; - } - - }; - - class OctreeGeometryNode{ - - constructor(name, octreeGeometry, boundingBox){ - this.id = OctreeGeometryNode.IDCount++; - this.name = name; - this.index = parseInt(name.charAt(name.length - 1)); - this.octreeGeometry = octreeGeometry; - this.boundingBox = boundingBox; - this.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere()); - this.children = {}; - this.numPoints = 0; - this.level = null; - this.oneTimeDisposeHandlers = []; - } - - isGeometryNode(){ - return true; - } - - getLevel(){ - return this.level; - } - - isTreeNode(){ - return false; - } - - isLoaded(){ - return this.loaded; - } - - getBoundingSphere(){ - return this.boundingSphere; - } - - getBoundingBox(){ - return this.boundingBox; - } - - getChildren(){ - let children = []; - - for (let i = 0; i < 8; i++) { - if (this.children[i]) { - children.push(this.children[i]); - } - } - - return children; - } - - getBoundingBox(){ - return this.boundingBox; - } - - load(){ - - if (Potree.numNodesLoading >= Potree.maxNodesLoading) { - return; - } - - this.octreeGeometry.loader.load(this); - } - - getNumPoints(){ - return this.numPoints; - } - - dispose(){ - if (this.geometry && this.parent != null) { - this.geometry.dispose(); - this.geometry = null; - this.loaded = false; - - // this.dispatchEvent( { type: 'dispose' } ); - for (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) { - let handler = this.oneTimeDisposeHandlers[i]; - handler(); - } - this.oneTimeDisposeHandlers = []; - } - } - - }; - - OctreeGeometryNode.IDCount = 0; - - // let loadedNodes = new Set(); - - class NodeLoader{ - - constructor(url){ - this.url = url; - } - - async load(node){ - - if(node.loaded || node.loading){ - return; - } - - node.loading = true; - Potree.numNodesLoading++; - - // console.log(node.name, node.numPoints); - - // if(loadedNodes.has(node.name)){ - // // debugger; - // } - // loadedNodes.add(node.name); - - try{ - if(node.nodeType === 2){ - await this.loadHierarchy(node); - } - - let {byteOffset, byteSize} = node; - - - let urlOctree = `${this.url}/../octree.bin`; - - let first = byteOffset; - let last = byteOffset + byteSize - 1n; - - let buffer; - - if(byteSize === 0n){ - buffer = new ArrayBuffer(0); - console.warn(`loaded node with 0 bytes: ${node.name}`); - }else { - let response = await fetch(urlOctree, { - headers: { - 'content-type': 'multipart/byteranges', - 'Range': `bytes=${first}-${last}`, - }, - }); - - buffer = await response.arrayBuffer(); - } - - let workerPath; - if(this.metadata.encoding === "BROTLI"){ - workerPath = Potree.scriptPath + '/workers/2.0/DecoderWorker_brotli.js'; - }else { - workerPath = Potree.scriptPath + '/workers/2.0/DecoderWorker.js'; - } - - let worker = Potree.workerPool.getWorker(workerPath); - - worker.onmessage = function (e) { - - let data = e.data; - let buffers = data.attributeBuffers; - - Potree.workerPool.returnWorker(workerPath, worker); - - let geometry = new THREE.BufferGeometry(); - - for(let property in buffers){ - - let buffer = buffers[property].buffer; - - if(property === "position"){ - geometry.addAttribute('position', new THREE.BufferAttribute(new Float32Array(buffer), 3)); - }else if(property === "rgba"){ - geometry.addAttribute('rgba', new THREE.BufferAttribute(new Uint8Array(buffer), 4, true)); - }else if(property === "NORMAL"){ - //geometry.addAttribute('rgba', new THREE.BufferAttribute(new Uint8Array(buffer), 4, true)); - geometry.addAttribute('normal', new THREE.BufferAttribute(new Float32Array(buffer), 3)); - }else if (property === "INDICES") { - let bufferAttribute = new THREE.BufferAttribute(new Uint8Array(buffer), 4); - bufferAttribute.normalized = true; - geometry.addAttribute('indices', bufferAttribute); - }else { - const bufferAttribute = new THREE.BufferAttribute(new Float32Array(buffer), 1); - - let batchAttribute = buffers[property].attribute; - bufferAttribute.potree = { - offset: buffers[property].offset, - scale: buffers[property].scale, - preciseBuffer: buffers[property].preciseBuffer, - range: batchAttribute.range, - }; - - geometry.addAttribute(property, bufferAttribute); - } - - } - // indices ?? - - node.density = data.density; - node.geometry = geometry; - node.loaded = true; - node.loading = false; - Potree.numNodesLoading--; - }; - - let pointAttributes = node.octreeGeometry.pointAttributes; - let scale = node.octreeGeometry.scale; - - let box = node.boundingBox; - let min = node.octreeGeometry.offset.clone().add(box.min); - let size = box.max.clone().sub(box.min); - let max = min.clone().add(size); - let numPoints = node.numPoints; - - let offset = node.octreeGeometry.loader.offset; - - let message = { - name: node.name, - buffer: buffer, - pointAttributes: pointAttributes, - scale: scale, - min: min, - max: max, - size: size, - offset: offset, - numPoints: numPoints - }; - - worker.postMessage(message, [message.buffer]); - }catch(e){ - node.loaded = false; - node.loading = false; - Potree.numNodesLoading--; - - console.log(`failed to load ${node.name}`); - console.log(e); - console.log(`trying again!`); - } - } - - parseHierarchy(node, buffer){ - - let view = new DataView(buffer); - let tStart = performance.now(); - - let bytesPerNode = 22; - let numNodes = buffer.byteLength / bytesPerNode; - - let octree = node.octreeGeometry; - // let nodes = [node]; - let nodes = new Array(numNodes); - nodes[0] = node; - let nodePos = 1; - - for(let i = 0; i < numNodes; i++){ - let current = nodes[i]; - - let type = view.getUint8(i * bytesPerNode + 0); - let childMask = view.getUint8(i * bytesPerNode + 1); - let numPoints = view.getUint32(i * bytesPerNode + 2, true); - let byteOffset = view.getBigInt64(i * bytesPerNode + 6, true); - let byteSize = view.getBigInt64(i * bytesPerNode + 14, true); - - // if(byteSize === 0n){ - // // debugger; - // } - - - if(current.nodeType === 2){ - // replace proxy with real node - current.byteOffset = byteOffset; - current.byteSize = byteSize; - current.numPoints = numPoints; - }else if(type === 2){ - // load proxy - current.hierarchyByteOffset = byteOffset; - current.hierarchyByteSize = byteSize; - current.numPoints = numPoints; - }else { - // load real node - current.byteOffset = byteOffset; - current.byteSize = byteSize; - current.numPoints = numPoints; - } - - current.nodeType = type; - - if(current.nodeType === 2){ - continue; - } - - for(let childIndex = 0; childIndex < 8; childIndex++){ - let childExists = ((1 << childIndex) & childMask) !== 0; - - if(!childExists){ - continue; - } - - let childName = current.name + childIndex; - - let childAABB = createChildAABB(current.boundingBox, childIndex); - let child = new OctreeGeometryNode(childName, octree, childAABB); - child.name = childName; - child.spacing = current.spacing / 2; - child.level = current.level + 1; - - current.children[childIndex] = child; - child.parent = current; - - // nodes.push(child); - nodes[nodePos] = child; - nodePos++; - } - - // if((i % 500) === 0){ - // yield; - // } - } - - let duration = (performance.now() - tStart); - - // if(duration > 20){ - // let msg = `duration: ${duration}ms, numNodes: ${numNodes}`; - // console.log(msg); - // } - } - - async loadHierarchy(node){ - - let {hierarchyByteOffset, hierarchyByteSize} = node; - let hierarchyPath = `${this.url}/../hierarchy.bin`; - - let first = hierarchyByteOffset; - let last = first + hierarchyByteSize - 1n; - - let response = await fetch(hierarchyPath, { - headers: { - 'content-type': 'multipart/byteranges', - 'Range': `bytes=${first}-${last}`, - }, - }); - - - - let buffer = await response.arrayBuffer(); - - this.parseHierarchy(node, buffer); - - // let promise = new Promise((resolve) => { - // let generator = this.parseHierarchy(node, buffer); - - // let repeatUntilDone = () => { - // let result = generator.next(); - - // if(result.done){ - // resolve(); - // }else{ - // requestAnimationFrame(repeatUntilDone); - // } - // }; - - // repeatUntilDone(); - // }); - - // await promise; - - - - - - } - - } - - let tmpVec3 = new THREE.Vector3(); - function createChildAABB(aabb, index){ - let min = aabb.min.clone(); - let max = aabb.max.clone(); - let size = tmpVec3.subVectors(max, min); - - if ((index & 0b0001) > 0) { - min.z += size.z / 2; - } else { - max.z -= size.z / 2; - } - - if ((index & 0b0010) > 0) { - min.y += size.y / 2; - } else { - max.y -= size.y / 2; - } - - if ((index & 0b0100) > 0) { - min.x += size.x / 2; - } else { - max.x -= size.x / 2; - } - - return new THREE.Box3(min, max); - } - - let typenameTypeattributeMap = { - "double": PointAttributeTypes.DATA_TYPE_DOUBLE, - "float": PointAttributeTypes.DATA_TYPE_FLOAT, - "int8": PointAttributeTypes.DATA_TYPE_INT8, - "uint8": PointAttributeTypes.DATA_TYPE_UINT8, - "int16": PointAttributeTypes.DATA_TYPE_INT16, - "uint16": PointAttributeTypes.DATA_TYPE_UINT16, - "int32": PointAttributeTypes.DATA_TYPE_INT32, - "uint32": PointAttributeTypes.DATA_TYPE_UINT32, - "int64": PointAttributeTypes.DATA_TYPE_INT64, - "uint64": PointAttributeTypes.DATA_TYPE_UINT64, - }; - - class OctreeLoader{ - - static parseAttributes(jsonAttributes){ - - let attributes = new PointAttributes(); - - let replacements = { - "rgb": "rgba", - }; - - for(let jsonAttribute of jsonAttributes){ - let {name, description, size, numElements, elementSize, min, max} = jsonAttribute; - - let type = typenameTypeattributeMap[jsonAttribute.type]; - - let potreeAttributeName = replacements[name] ? replacements[name] : name; - - let attribute = new PointAttribute(potreeAttributeName, type, numElements); - - if(numElements === 1){ - attribute.range = [min[0], max[0]]; - }else { - attribute.range = [min, max]; - } - - attribute.initialRange = attribute.range; - - attributes.add(attribute); - } - - { - // check if it has normals - let hasNormals = - attributes.attributes.find(a => a.name === "NormalX") !== undefined && - attributes.attributes.find(a => a.name === "NormalY") !== undefined && - attributes.attributes.find(a => a.name === "NormalZ") !== undefined; - - if(hasNormals){ - let vector = { - name: "NORMAL", - attributes: ["NormalX", "NormalY", "NormalZ"], - }; - attributes.addVector(vector); - } - } - - return attributes; - } - - static async load(url){ - - let response = await fetch(url); - let metadata = await response.json(); - - let attributes = OctreeLoader.parseAttributes(metadata.attributes); - - let loader = new NodeLoader(url); - loader.metadata = metadata; - loader.attributes = attributes; - loader.scale = metadata.scale; - loader.offset = metadata.offset; - - let octree = new OctreeGeometry(); - octree.url = url; - octree.spacing = metadata.spacing; - octree.scale = metadata.scale; - - // let aPosition = metadata.attributes.find(a => a.name === "position"); - // octree - - let min = new THREE.Vector3(...metadata.boundingBox.min); - let max = new THREE.Vector3(...metadata.boundingBox.max); - let boundingBox = new THREE.Box3(min, max); - - let offset = min.clone(); - boundingBox.min.sub(offset); - boundingBox.max.sub(offset); - - octree.projection = metadata.projection; - octree.boundingBox = boundingBox; - octree.tightBoundingBox = boundingBox.clone(); - octree.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere()); - octree.tightBoundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere()); - octree.offset = offset; - octree.pointAttributes = OctreeLoader.parseAttributes(metadata.attributes); - octree.loader = loader; - - let root = new OctreeGeometryNode("r", octree, boundingBox); - root.level = 0; - root.nodeType = 2; - root.hierarchyByteOffset = 0n; - root.hierarchyByteSize = BigInt(metadata.hierarchy.firstChunkSize); - root.hasChildren = false; - root.spacing = octree.spacing; - root.byteOffset = 0; - - octree.root = root; - - loader.load(root); - - let result = { - geometry: octree, - }; - - return result; - - } - - }; - - /** - * @author Connor Manning - */ - - class EptLoader { - static async load(file, callback) { - - let response = await fetch(file); - let json = await response.json(); - - let url = file.substr(0, file.lastIndexOf('ept.json')); - let geometry = new Potree.PointCloudEptGeometry(url, json); - let root = new Potree.PointCloudEptGeometryNode(geometry); - - geometry.root = root; - geometry.root.load(); - - callback(geometry); - } - }; - - class EptBinaryLoader { - extension() { - return '.bin'; - } - - workerPath() { - return Potree.scriptPath + '/workers/EptBinaryDecoderWorker.js'; - } - - load(node) { - if (node.loaded) return; - - let url = node.url() + this.extension(); - - let xhr = XHRFactory.createXMLHttpRequest(); - xhr.open('GET', url, true); - xhr.responseType = 'arraybuffer'; - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - xhr.onreadystatechange = () => { - if (xhr.readyState === 4) { - if (xhr.status === 200) { - let buffer = xhr.response; - this.parse(node, buffer); - } else { - console.log('Failed ' + url + ': ' + xhr.status); - } - } - }; - - try { - xhr.send(null); - } - catch (e) { - console.log('Failed request: ' + e); - } - } - - parse(node, buffer) { - let workerPath = this.workerPath(); - let worker = Potree.workerPool.getWorker(workerPath); - - worker.onmessage = function(e) { - let g = new THREE.BufferGeometry(); - let numPoints = e.data.numPoints; - - let position = new Float32Array(e.data.position); - g.addAttribute('position', new THREE.BufferAttribute(position, 3)); - - let indices = new Uint8Array(e.data.indices); - g.addAttribute('indices', new THREE.BufferAttribute(indices, 4)); - - if (e.data.color) { - let color = new Uint8Array(e.data.color); - g.addAttribute('color', new THREE.BufferAttribute(color, 4, true)); - } - if (e.data.intensity) { - let intensity = new Float32Array(e.data.intensity); - g.addAttribute('intensity', - new THREE.BufferAttribute(intensity, 1)); - } - if (e.data.classification) { - let classification = new Uint8Array(e.data.classification); - g.addAttribute('classification', - new THREE.BufferAttribute(classification, 1)); - } - if (e.data.returnNumber) { - let returnNumber = new Uint8Array(e.data.returnNumber); - g.addAttribute('return number', - new THREE.BufferAttribute(returnNumber, 1)); - } - if (e.data.numberOfReturns) { - let numberOfReturns = new Uint8Array(e.data.numberOfReturns); - g.addAttribute('number of returns', - new THREE.BufferAttribute(numberOfReturns, 1)); - } - if (e.data.pointSourceId) { - let pointSourceId = new Uint16Array(e.data.pointSourceId); - g.addAttribute('source id', - new THREE.BufferAttribute(pointSourceId, 1)); - } - - g.attributes.indices.normalized = true; - - let tightBoundingBox = new THREE.Box3( - new THREE.Vector3().fromArray(e.data.tightBoundingBox.min), - new THREE.Vector3().fromArray(e.data.tightBoundingBox.max) - ); - - node.doneLoading( - g, - tightBoundingBox, - numPoints, - new THREE.Vector3(...e.data.mean)); - - Potree.workerPool.returnWorker(workerPath, worker); - }; - - let toArray = (v) => [v.x, v.y, v.z]; - let message = { - buffer: buffer, - schema: node.ept.schema, - scale: node.ept.eptScale, - offset: node.ept.eptOffset, - mins: toArray(node.key.b.min) - }; - - worker.postMessage(message, [message.buffer]); - } - }; - - /** - * laslaz code taken and adapted from plas.io js-laslaz - * http://plas.io/ - * https://github.com/verma/plasio - * - * Thanks to Uday Verma and Howard Butler - * - */ - - class EptLaszipLoader { - load(node) { - if (node.loaded) return; - - let url = node.url() + '.laz'; - - let xhr = XHRFactory.createXMLHttpRequest(); - xhr.open('GET', url, true); - xhr.responseType = 'arraybuffer'; - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - xhr.onreadystatechange = () => { - if (xhr.readyState === 4) { - if (xhr.status === 200) { - let buffer = xhr.response; - this.parse(node, buffer); - } else { - console.log('Failed ' + url + ': ' + xhr.status); - } - } - }; - - xhr.send(null); - } - - async parse(node, buffer){ - let lf = new LASFile(buffer); - let handler = new EptLazBatcher(node); - - try{ - await lf.open(); - - lf.isOpen = true; - - const header = await lf.getHeader(); - - { - let i = 0; - - let toArray = (v) => [v.x, v.y, v.z]; - let mins = toArray(node.key.b.min); - let maxs = toArray(node.key.b.max); - - let hasMoreData = true; - - while(hasMoreData){ - const data = await lf.readData(1000000, 0, 1); - - let d = new LASDecoder( - data.buffer, - header.pointsFormatId, - header.pointsStructSize, - data.count, - header.scale, - header.offset, - mins, - maxs); - - d.extraBytes = header.extraBytes; - d.pointsFormatId = header.pointsFormatId; - handler.push(d); - - i += data.count; - - hasMoreData = data.hasMoreData; - } - - header.totalRead = i; - header.versionAsString = lf.versionAsString; - header.isCompressed = lf.isCompressed; - - await lf.close(); - - lf.isOpen = false; - } - - }catch(err){ - console.error('Error reading LAZ:', err); - - if (lf.isOpen) { - await lf.close(); - - lf.isOpen = false; - } - - throw err; - } - } - }; - - class EptLazBatcher { - constructor(node) { this.node = node; } - - push(las) { - let workerPath = Potree.scriptPath + - '/workers/EptLaszipDecoderWorker.js'; - let worker = Potree.workerPool.getWorker(workerPath); - - worker.onmessage = (e) => { - let g = new THREE.BufferGeometry(); - let numPoints = las.pointsCount; - - let positions = new Float32Array(e.data.position); - let colors = new Uint8Array(e.data.color); - - let intensities = new Float32Array(e.data.intensity); - let classifications = new Uint8Array(e.data.classification); - let returnNumbers = new Uint8Array(e.data.returnNumber); - let numberOfReturns = new Uint8Array(e.data.numberOfReturns); - let pointSourceIDs = new Uint16Array(e.data.pointSourceID); - let indices = new Uint8Array(e.data.indices); - let gpsTime = new Float32Array(e.data.gpsTime); - - g.addAttribute('position', - new THREE.BufferAttribute(positions, 3)); - g.addAttribute('rgba', - new THREE.BufferAttribute(colors, 4, true)); - g.addAttribute('intensity', - new THREE.BufferAttribute(intensities, 1)); - g.addAttribute('classification', - new THREE.BufferAttribute(classifications, 1)); - g.addAttribute('return number', - new THREE.BufferAttribute(returnNumbers, 1)); - g.addAttribute('number of returns', - new THREE.BufferAttribute(numberOfReturns, 1)); - g.addAttribute('source id', - new THREE.BufferAttribute(pointSourceIDs, 1)); - g.addAttribute('indices', - new THREE.BufferAttribute(indices, 4)); - g.addAttribute('gpsTime', - new THREE.BufferAttribute(gpsTime, 1)); - this.node.gpsTime = e.data.gpsMeta; - - g.attributes.indices.normalized = true; - - let tightBoundingBox = new THREE.Box3( - new THREE.Vector3().fromArray(e.data.tightBoundingBox.min), - new THREE.Vector3().fromArray(e.data.tightBoundingBox.max) - ); - - this.node.doneLoading( - g, - tightBoundingBox, - numPoints, - new THREE.Vector3(...e.data.mean)); - - Potree.workerPool.returnWorker(workerPath, worker); - }; - - let message = { - buffer: las.arrayb, - numPoints: las.pointsCount, - pointSize: las.pointSize, - pointFormatID: las.pointsFormatId, - scale: las.scale, - offset: las.offset, - mins: las.mins, - maxs: las.maxs - }; - - worker.postMessage(message, [message.buffer]); - }; - }; - - class EptZstandardLoader extends EptBinaryLoader { - extension() { - return '.zst'; - } - - workerPath() { - return Potree.scriptPath + '/workers/EptZstandardDecoderWorker.js'; - } - }; - - class ShapefileLoader{ - - constructor(){ - this.transform = null; - } - - async load(path){ - - const matLine = new THREE.LineMaterial( { - color: 0xff0000, - linewidth: 3, // in pixels - resolution: new THREE.Vector2(1000, 1000), - dashed: false - } ); - - const features = await this.loadShapefileFeatures(path); - const node = new THREE.Object3D(); - - for(const feature of features){ - const fnode = this.featureToSceneNode(feature, matLine); - node.add(fnode); - } - - let setResolution = (x, y) => { - matLine.resolution.set(x, y); - }; - - const result = { - features: features, - node: node, - setResolution: setResolution, - }; - - return result; - } - - featureToSceneNode(feature, matLine){ - let geometry = feature.geometry; - - let color = new THREE.Color(1, 1, 1); - - let transform = this.transform; - if(transform === null){ - transform = {forward: (v) => v}; - } - - if(feature.geometry.type === "Point"){ - let sg = new THREE.SphereGeometry(1, 18, 18); - let sm = new THREE.MeshNormalMaterial(); - let s = new THREE.Mesh(sg, sm); - - let [long, lat] = geometry.coordinates; - let pos = transform.forward([long, lat]); - - s.position.set(...pos, 20); - - s.scale.set(10, 10, 10); - - return s; - }else if(geometry.type === "LineString"){ - let coordinates = []; - - let min = new THREE.Vector3(Infinity, Infinity, Infinity); - for(let i = 0; i < geometry.coordinates.length; i++){ - let [long, lat] = geometry.coordinates[i]; - let pos = transform.forward([long, lat]); - - min.x = Math.min(min.x, pos[0]); - min.y = Math.min(min.y, pos[1]); - min.z = Math.min(min.z, 20); - - coordinates.push(...pos, 20); - if(i > 0 && i < geometry.coordinates.length - 1){ - coordinates.push(...pos, 20); - } - } - - for(let i = 0; i < coordinates.length; i += 3){ - coordinates[i+0] -= min.x; - coordinates[i+1] -= min.y; - coordinates[i+2] -= min.z; - } - - const lineGeometry = new THREE.LineGeometry(); - lineGeometry.setPositions( coordinates ); - - const line = new THREE.Line2( lineGeometry, matLine ); - line.computeLineDistances(); - line.scale.set( 1, 1, 1 ); - line.position.copy(min); - - return line; - }else if(geometry.type === "Polygon"){ - for(let pc of geometry.coordinates){ - let coordinates = []; - - let min = new THREE.Vector3(Infinity, Infinity, Infinity); - for(let i = 0; i < pc.length; i++){ - let [long, lat] = pc[i]; - let pos = transform.forward([long, lat]); - - min.x = Math.min(min.x, pos[0]); - min.y = Math.min(min.y, pos[1]); - min.z = Math.min(min.z, 20); - - coordinates.push(...pos, 20); - if(i > 0 && i < pc.length - 1){ - coordinates.push(...pos, 20); - } - } - - for(let i = 0; i < coordinates.length; i += 3){ - coordinates[i+0] -= min.x; - coordinates[i+1] -= min.y; - coordinates[i+2] -= min.z; - } - - const lineGeometry = new THREE.LineGeometry(); - lineGeometry.setPositions( coordinates ); - - const line = new THREE.Line2( lineGeometry, matLine ); - line.computeLineDistances(); - line.scale.set( 1, 1, 1 ); - line.position.copy(min); - - return line; - } - }else { - console.log("unhandled feature: ", feature); - } - } - - async loadShapefileFeatures(file){ - let features = []; - - let source = await shapefile.open(file); - - while(true){ - let result = await source.read(); - - if (result.done) { - break; - } - - if (result.value && result.value.type === 'Feature' && result.value.geometry !== undefined) { - features.push(result.value); - } - } - - return features; - } - - }; - - const defaultColors = { - "landuse": [0.5, 0.5, 0.5], - "natural": [0.0, 1.0, 0.0], - "places": [1.0, 0.0, 1.0], - "points": [0.0, 1.0, 1.0], - "roads": [1.0, 1.0, 0.0], - "waterways": [0.0, 0.0, 1.0], - "default": [0.9, 0.6, 0.1], - }; - - function getColor(feature){ - let color = defaultColors[feature]; - - if(!color){ - color = defaultColors["default"]; - } - - return color; - } - - class Geopackage$1{ - constructor(){ - this.path = null; - this.node = null; - } - }; - - class GeoPackageLoader{ - - constructor(){ - - } - - static async loadUrl(url, params){ - - await Promise.all([ - Utils.loadScript(`${Potree.scriptPath}/lazylibs/geopackage/geopackage.js`), - Utils.loadScript(`${Potree.scriptPath}/lazylibs/sql.js/sql-wasm.js`), - ]); - - const result = await fetch(url); - const buffer = await result.arrayBuffer(); - - params = params || {}; - - params.source = url; - - return GeoPackageLoader.loadBuffer(buffer, params); - } - - static async loadBuffer(buffer, params){ - - await Promise.all([ - Utils.loadScript(`${Potree.scriptPath}/lazylibs/geopackage/geopackage.js`), - Utils.loadScript(`${Potree.scriptPath}/lazylibs/sql.js/sql-wasm.js`), - ]); - - params = params || {}; - - const resolver = async (resolve) => { - - let transform = params.transform; - if(!transform){ - transform = {forward: (arg) => arg}; - } - - const wasmPath = `${Potree.scriptPath}/lazylibs/sql.js/sql-wasm.wasm`; - const SQL = await initSqlJs({ locateFile: filename => wasmPath}); - - const u8 = new Uint8Array(buffer); - - const data = await geopackage.open(u8); - window.data = data; - - const geopackageNode = new THREE.Object3D(); - geopackageNode.name = params.source; - geopackageNode.potree = { - source: params.source, - }; - - const geo = new Geopackage$1(); - geo.path = params.source; - geo.node = geopackageNode; - - const tables = data.getTables(); - - for(const table of tables.features){ - const dao = data.getFeatureDao(table); - - let boundingBox = dao.getBoundingBox(); - boundingBox = boundingBox.projectBoundingBox(dao.projection, 'EPSG:4326'); - const geoJson = data.queryForGeoJSONFeaturesInTable(table, boundingBox); - - const matLine = new THREE.LineMaterial( { - color: new THREE.Color().setRGB(...getColor(table)), - linewidth: 2, - resolution: new THREE.Vector2(1000, 1000), - dashed: false - } ); - - const node = new THREE.Object3D(); - node.name = table; - geo.node.add(node); - - for(const [index, feature] of Object.entries(geoJson)){ - //const featureNode = GeoPackageLoader.featureToSceneNode(feature, matLine, transform); - const featureNode = GeoPackageLoader.featureToSceneNode(feature, matLine, dao.projection, transform); - node.add(featureNode); - } - } - - resolve(geo); - }; - - return new Promise(resolver); - } - - static featureToSceneNode(feature, matLine, geopackageProjection, transform){ - let geometry = feature.geometry; - - let color = new THREE.Color(1, 1, 1); - - if(feature.geometry.type === "Point"){ - let sg = new THREE.SphereGeometry(1, 18, 18); - let sm = new THREE.MeshNormalMaterial(); - let s = new THREE.Mesh(sg, sm); - - let [long, lat] = geometry.coordinates; - let pos = transform.forward(geopackageProjection.forward([long, lat])); - - s.position.set(...pos, 20); - - s.scale.set(10, 10, 10); - - return s; - }else if(geometry.type === "LineString"){ - let coordinates = []; - - let min = new THREE.Vector3(Infinity, Infinity, Infinity); - for(let i = 0; i < geometry.coordinates.length; i++){ - let [long, lat] = geometry.coordinates[i]; - let pos = transform.forward(geopackageProjection.forward([long, lat])); - - min.x = Math.min(min.x, pos[0]); - min.y = Math.min(min.y, pos[1]); - min.z = Math.min(min.z, 20); - - coordinates.push(...pos, 20); - if(i > 0 && i < geometry.coordinates.length - 1){ - coordinates.push(...pos, 20); - } - } - - for(let i = 0; i < coordinates.length; i += 3){ - coordinates[i+0] -= min.x; - coordinates[i+1] -= min.y; - coordinates[i+2] -= min.z; - } - - const lineGeometry = new THREE.LineGeometry(); - lineGeometry.setPositions( coordinates ); - - const line = new THREE.Line2( lineGeometry, matLine ); - line.computeLineDistances(); - line.scale.set( 1, 1, 1 ); - line.position.copy(min); - - return line; - }else if(geometry.type === "Polygon"){ - for(let pc of geometry.coordinates){ - let coordinates = []; - - let min = new THREE.Vector3(Infinity, Infinity, Infinity); - for(let i = 0; i < pc.length; i++){ - let [long, lat] = pc[i]; - - let pos = transform.forward(geopackageProjection.forward([long, lat])); - - min.x = Math.min(min.x, pos[0]); - min.y = Math.min(min.y, pos[1]); - min.z = Math.min(min.z, 20); - - coordinates.push(...pos, 20); - if(i > 0 && i < pc.length - 1){ - coordinates.push(...pos, 20); - } - } - - for(let i = 0; i < coordinates.length; i += 3){ - coordinates[i+0] -= min.x; - coordinates[i+1] -= min.y; - coordinates[i+2] -= min.z; - } - - const lineGeometry = new THREE.LineGeometry(); - lineGeometry.setPositions( coordinates ); - - const line = new THREE.Line2( lineGeometry, matLine ); - line.computeLineDistances(); - line.scale.set( 1, 1, 1 ); - line.position.copy(min); - - return line; - } - }else { - console.log("unhandled feature: ", feature); - } - } - - }; - - class ClipVolume extends THREE.Object3D{ - - constructor(args){ - super(); - - this.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1; - this.name = "clip_volume_" + this.constructor.counter; - - let alpha = args.alpha || 0; - let beta = args.beta || 0; - let gamma = args.gamma || 0; - - this.rotation.x = alpha; - this.rotation.y = beta; - this.rotation.z = gamma; - - this.clipOffset = 0.001; - this.clipRotOffset = 1; - - let boxGeometry = new THREE.BoxGeometry(1, 1, 1); - boxGeometry.computeBoundingBox(); - - let boxFrameGeometry = new THREE.Geometry(); - { - // bottom - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5)); - // top - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5)); - // sides - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5)); - - boxFrameGeometry.colors.push(new THREE.Vector3(1, 1, 1)); - } - - let planeFrameGeometry = new THREE.Geometry(); - { - // middle line - planeFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.0)); - planeFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.0)); - planeFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.0)); - planeFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.0)); - planeFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.0)); - planeFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.0)); - planeFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.0)); - planeFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.0)); - } - - this.dimension = new THREE.Vector3(1, 1, 1); - this.material = new THREE.MeshBasicMaterial( { - color: 0x00ff00, - transparent: true, - opacity: 0.3, - depthTest: true, - depthWrite: false} ); - this.box = new THREE.Mesh(boxGeometry, this.material); - this.box.geometry.computeBoundingBox(); - this.boundingBox = this.box.geometry.boundingBox; - this.add(this.box); - - this.frame = new THREE.LineSegments( boxFrameGeometry, new THREE.LineBasicMaterial({color: 0x000000})); - this.add(this.frame); - this.planeFrame = new THREE.LineSegments( planeFrameGeometry, new THREE.LineBasicMaterial({color: 0xff0000})); - this.add(this.planeFrame); - - // set default thickness - this.setScaleZ(0.1); - - // create local coordinate system - let createArrow = (name, direction, color) => { - let material = new THREE.MeshBasicMaterial({ - color: color, - depthTest: false, - depthWrite: false}); - - let shaftGeometry = new THREE.Geometry(); - shaftGeometry.vertices.push(new THREE.Vector3(0, 0, 0)); - shaftGeometry.vertices.push(new THREE.Vector3(0, 1, 0)); - - let shaftMaterial = new THREE.LineBasicMaterial({ - color: color, - depthTest: false, - depthWrite: false, - transparent: true - }); - let shaft = new THREE.Line(shaftGeometry, shaftMaterial); - shaft.name = name + "_shaft"; - - let headGeometry = new THREE.CylinderGeometry(0, 0.04, 0.1, 10, 1, false); - let headMaterial = material; - let head = new THREE.Mesh(headGeometry, headMaterial); - head.name = name + "_head"; - head.position.y = 1; - - let arrow = new THREE.Object3D(); - arrow.name = name; - arrow.add(shaft); - arrow.add(head); - - return arrow; - }; - - this.arrowX = createArrow("arrow_x", new THREE.Vector3(1, 0, 0), 0xFF0000); - this.arrowY = createArrow("arrow_y", new THREE.Vector3(0, 1, 0), 0x00FF00); - this.arrowZ = createArrow("arrow_z", new THREE.Vector3(0, 0, 1), 0x0000FF); - - this.arrowX.rotation.z = -Math.PI / 2; - this.arrowZ.rotation.x = Math.PI / 2; - - this.arrowX.visible = false; - this.arrowY.visible = false; - this.arrowZ.visible = false; - - this.add(this.arrowX); - this.add(this.arrowY); - this.add(this.arrowZ); - - { // event listeners - this.addEventListener("ui_select", e => { - this.arrowX.visible = true; - this.arrowY.visible = true; - this.arrowZ.visible = true; - }); - this.addEventListener("ui_deselect", e => { - this.arrowX.visible = false; - this.arrowY.visible = false; - this.arrowZ.visible = false; - }); - this.addEventListener("select", e => { - let scene_header = $("#" + this.name + " .scene_header"); - if(!scene_header.next().is(":visible")) { - scene_header.click(); - } - }); - this.addEventListener("deselect", e => { - let scene_header = $("#" + this.name + " .scene_header"); - if(scene_header.next().is(":visible")) { - scene_header.click(); - } - }); - } - - this.update(); - }; - - setClipOffset(offset) { - this.clipOffset = offset; - } - - setClipRotOffset(offset) { - this.clipRotOffset = offset; - } - - setScaleX(x) { - this.box.scale.x = x; - this.frame.scale.x = x; - this.planeFrame.scale.x = x; - } - - setScaleY(y) { - this.box.scale.y = y; - this.frame.scale.y = y; - this.planeFrame.scale.y = y; - } - - setScaleZ(z) { - this.box.scale.z = z; - this.frame.scale.z = z; - this.planeFrame.scale.z = z; - } - - offset(args) { - let cs = args.cs || null; - let axis = args.axis || null; - let dir = args.dir || null; - - if(!cs || !axis || !dir) return; - - if(axis === "x") { - if(cs === "local") { - this.position.add(this.localX.clone().multiplyScalar(dir * this.clipOffset)); - } else if(cs === "global") { - this.position.x = this.position.x + dir * this.clipOffset; - } - }else if(axis === "y") { - if(cs === "local") { - this.position.add(this.localY.clone().multiplyScalar(dir * this.clipOffset)); - } else if(cs === "global") { - this.position.y = this.position.y + dir * this.clipOffset; - } - }else if(axis === "z") { - if(cs === "local") { - this.position.add(this.localZ.clone().multiplyScalar(dir * this.clipOffset)); - } else if(cs === "global") { - this.position.z = this.position.z + dir * this.clipOffset; - } - } - - this.dispatchEvent({"type": "clip_volume_changed", "viewer": viewer, "volume": this}); - } - - rotate(args) { - let cs = args.cs || null; - let axis = args.axis || null; - let dir = args.dir || null; - - if(!cs || !axis || !dir) return; - - if(cs === "local") { - if(axis === "x") { - this.rotateOnAxis(new THREE.Vector3(1, 0, 0), dir * this.clipRotOffset * Math.PI / 180); - } else if(axis === "y") { - this.rotateOnAxis(new THREE.Vector3(0, 1, 0), dir * this.clipRotOffset * Math.PI / 180); - } else if(axis === "z") { - this.rotateOnAxis(new THREE.Vector3(0, 0, 1), dir * this.clipRotOffset * Math.PI / 180); - } - } else if(cs === "global") { - let rotaxis = new THREE.Vector4(1, 0, 0, 0); - if(axis === "y") { - rotaxis = new THREE.Vector4(0, 1, 0, 0); - } else if(axis === "z") { - rotaxis = new THREE.Vector4(0, 0, 1, 0); - } - this.updateMatrixWorld(); - let invM = new THREE.Matrix4().getInverse(this.matrixWorld); - rotaxis = rotaxis.applyMatrix4(invM).normalize(); - rotaxis = new THREE.Vector3(rotaxis.x, rotaxis.y, rotaxis.z); - this.rotateOnAxis(rotaxis, dir * this.clipRotOffset * Math.PI / 180); - } - - this.updateLocalSystem(); - - this.dispatchEvent({"type": "clip_volume_changed", "viewer": viewer, "volume": this}); - } - - update(){ - this.boundingBox = this.box.geometry.boundingBox; - this.boundingSphere = this.boundingBox.getBoundingSphere(new THREE.Sphere()); - - this.box.visible = false; - - this.updateLocalSystem(); - }; - - updateLocalSystem() { - // extract local coordinate axes - let rotQuat = this.getWorldQuaternion(); - this.localX = new THREE.Vector3(1, 0, 0).applyQuaternion(rotQuat).normalize(); - this.localY = new THREE.Vector3(0, 1, 0).applyQuaternion(rotQuat).normalize(); - this.localZ = new THREE.Vector3(0, 0, 1).applyQuaternion(rotQuat).normalize(); - } - - raycast(raycaster, intersects){ - - let is = []; - this.box.raycast(raycaster, is); - - if(is.length > 0){ - let I = is[0]; - intersects.push({ - distance: I.distance, - object: this, - point: I.point.clone() - }); - } - }; - }; - - class ClippingTool extends EventDispatcher{ - - constructor(viewer){ - super(); - - this.viewer = viewer; - - this.maxPolygonVertices = 8; - - this.addEventListener("start_inserting_clipping_volume", e => { - this.viewer.dispatchEvent({ - type: "cancel_insertions" - }); - }); - - this.sceneMarker = new THREE.Scene(); - this.sceneVolume = new THREE.Scene(); - this.sceneVolume.name = "scene_clip_volume"; - this.viewer.inputHandler.registerInteractiveScene(this.sceneVolume); - - this.onRemove = e => { - this.sceneVolume.remove(e.volume); - }; - - this.onAdd = e => { - this.sceneVolume.add(e.volume); - }; - - this.viewer.inputHandler.addEventListener("delete", e => { - let volumes = e.selection.filter(e => (e instanceof ClipVolume)); - volumes.forEach(e => this.viewer.scene.removeClipVolume(e)); - let polyVolumes = e.selection.filter(e => (e instanceof PolygonClipVolume)); - polyVolumes.forEach(e => this.viewer.scene.removePolygonClipVolume(e)); - }); - } - - setScene(scene){ - if(this.scene === scene){ - return; - } - - if(this.scene){ - this.scene.removeEventListeners("clip_volume_added", this.onAdd); - this.scene.removeEventListeners("clip_volume_removed", this.onRemove); - this.scene.removeEventListeners("polygon_clip_volume_added", this.onAdd); - this.scene.removeEventListeners("polygon_clip_volume_removed", this.onRemove); - } - - this.scene = scene; - - this.scene.addEventListener("clip_volume_added", this.onAdd); - this.scene.addEventListener("clip_volume_removed", this.onRemove); - this.scene.addEventListener("polygon_clip_volume_added", this.onAdd); - this.scene.addEventListener("polygon_clip_volume_removed", this.onRemove); - } - - startInsertion(args = {}) { - let type = args.type || null; - - if(!type) return null; - - let domElement = this.viewer.renderer.domElement; - let canvasSize = this.viewer.renderer.getSize(new THREE.Vector2()); - - let svg = $(` - - - - - - - - - - - - `); - $(domElement.parentElement).append(svg); - - let polyClipVol = new PolygonClipVolume(this.viewer.scene.getActiveCamera().clone()); - - this.dispatchEvent({"type": "start_inserting_clipping_volume"}); - - this.viewer.scene.addPolygonClipVolume(polyClipVol); - this.sceneMarker.add(polyClipVol); - - let cancel = { - callback: null - }; - - let insertionCallback = (e) => { - if(e.button === THREE.MOUSE.LEFT){ - - polyClipVol.addMarker(); - - // SVC Screen Line - svg.find("polyline").each((index, target) => { - let newPoint = svg[0].createSVGPoint(); - newPoint.x = e.offsetX; - newPoint.y = e.offsetY; - let polyline = target.points.appendItem(newPoint); - }); - - - if(polyClipVol.markers.length > this.maxPolygonVertices){ - cancel.callback(); - } - - this.viewer.inputHandler.startDragging( - polyClipVol.markers[polyClipVol.markers.length - 1]); - }else if(e.button === THREE.MOUSE.RIGHT){ - cancel.callback(e); - } - }; - - cancel.callback = e => { - - //let first = svg.find("polyline")[0].points[0]; - //svg.find("polyline").each((index, target) => { - // let newPoint = svg[0].createSVGPoint(); - // newPoint.x = first.x; - // newPoint.y = first.y; - // let polyline = target.points.appendItem(newPoint); - //}); - svg.remove(); - - if(polyClipVol.markers.length > 3) { - polyClipVol.removeLastMarker(); - polyClipVol.initialized = true; - } else { - this.viewer.scene.removePolygonClipVolume(polyClipVol); - } - - this.viewer.renderer.domElement.removeEventListener("mouseup", insertionCallback, true); - this.viewer.removeEventListener("cancel_insertions", cancel.callback); - this.viewer.inputHandler.enabled = true; - }; - - this.viewer.addEventListener("cancel_insertions", cancel.callback); - this.viewer.renderer.domElement.addEventListener("mouseup", insertionCallback , true); - this.viewer.inputHandler.enabled = false; - - polyClipVol.addMarker(); - this.viewer.inputHandler.startDragging( - polyClipVol.markers[polyClipVol.markers.length - 1]); - - return polyClipVol; - } - - update() { - - } - }; - - var GeoTIFF = (function (exports) { - 'use strict'; - - const Endianness = new Enum({ - LITTLE: "II", - BIG: "MM", - }); - - const Type = new Enum({ - BYTE: {value: 1, bytes: 1}, - ASCII: {value: 2, bytes: 1}, - SHORT: {value: 3, bytes: 2}, - LONG: {value: 4, bytes: 4}, - RATIONAL: {value: 5, bytes: 8}, - SBYTE: {value: 6, bytes: 1}, - UNDEFINED: {value: 7, bytes: 1}, - SSHORT: {value: 8, bytes: 2}, - SLONG: {value: 9, bytes: 4}, - SRATIONAL: {value: 10, bytes: 8}, - FLOAT: {value: 11, bytes: 4}, - DOUBLE: {value: 12, bytes: 8}, - }); - - const Tag = new Enum({ - IMAGE_WIDTH: 256, - IMAGE_HEIGHT: 257, - BITS_PER_SAMPLE: 258, - COMPRESSION: 259, - PHOTOMETRIC_INTERPRETATION: 262, - STRIP_OFFSETS: 273, - ORIENTATION: 274, - SAMPLES_PER_PIXEL: 277, - ROWS_PER_STRIP: 278, - STRIP_BYTE_COUNTS: 279, - X_RESOLUTION: 282, - Y_RESOLUTION: 283, - PLANAR_CONFIGURATION: 284, - RESOLUTION_UNIT: 296, - SOFTWARE: 305, - COLOR_MAP: 320, - SAMPLE_FORMAT: 339, - MODEL_PIXEL_SCALE: 33550, // [GeoTIFF] TYPE: double N: 3 - MODEL_TIEPOINT: 33922, // [GeoTIFF] TYPE: double N: 6 * NUM_TIEPOINTS - GEO_KEY_DIRECTORY: 34735, // [GeoTIFF] TYPE: short N: >= 4 - GEO_DOUBLE_PARAMS: 34736, // [GeoTIFF] TYPE: short N: variable - GEO_ASCII_PARAMS: 34737, // [GeoTIFF] TYPE: ascii N: variable - }); - - const typeMapping = new Map([ - [Type.BYTE, Uint8Array], - [Type.ASCII, Uint8Array], - [Type.SHORT, Uint16Array], - [Type.LONG, Uint32Array], - [Type.RATIONAL, Uint32Array], - [Type.SBYTE, Int8Array], - [Type.UNDEFINED, Uint8Array], - [Type.SSHORT, Int16Array], - [Type.SLONG, Int32Array], - [Type.SRATIONAL, Int32Array], - [Type.FLOAT, Float32Array], - [Type.DOUBLE, Float64Array], - ]); - - class IFDEntry{ - - constructor(tag, type, count, offset, value){ - this.tag = tag; - this.type = type; - this.count = count; - this.offset = offset; - this.value = value; - } - - } - - class Image{ - - constructor(){ - this.width = 0; - this.height = 0; - this.buffer = null; - this.metadata = []; - } - - } - - class Reader{ - - constructor(){ - - } - - static read(data){ - - let endiannessTag = String.fromCharCode(...Array.from(data.slice(0, 2))); - let endianness = Endianness.fromValue(endiannessTag); - - let tiffCheckTag = data.readUInt8(2); - - if(tiffCheckTag !== 42){ - throw new Error("not a valid tiff file"); - } - - let offsetToFirstIFD = data.readUInt32LE(4); - - console.log("offsetToFirstIFD", offsetToFirstIFD); - - let ifds = []; - let IFDsRead = false; - let currentIFDOffset = offsetToFirstIFD; - let i = 0; - while(IFDsRead || i < 100){ - - console.log("currentIFDOffset", currentIFDOffset); - let numEntries = data.readUInt16LE(currentIFDOffset); - let nextIFDOffset = data.readUInt32LE(currentIFDOffset + 2 + numEntries * 12); - - console.log("next offset: ", currentIFDOffset + 2 + numEntries * 12); - - let entryBuffer = data.slice(currentIFDOffset + 2, currentIFDOffset + 2 + 12 * numEntries); - - for(let i = 0; i < numEntries; i++){ - let tag = Tag.fromValue(entryBuffer.readUInt16LE(i * 12)); - let type = Type.fromValue(entryBuffer.readUInt16LE(i * 12 + 2)); - let count = entryBuffer.readUInt32LE(i * 12 + 4); - let offsetOrValue = entryBuffer.readUInt32LE(i * 12 + 8); - let valueBytes = type.bytes * count; - - let value; - if(valueBytes <= 4){ - value = offsetOrValue; - }else { - let valueBuffer = new Uint8Array(valueBytes); - valueBuffer.set(data.slice(offsetOrValue, offsetOrValue + valueBytes)); - - let ArrayType = typeMapping.get(type); - - value = new ArrayType(valueBuffer.buffer); - - if(type === Type.ASCII){ - value = String.fromCharCode(...value); - } - } - - let ifd = new IFDEntry(tag, type, count, offsetOrValue, value); - - ifds.push(ifd); - } - - console.log("nextIFDOffset", nextIFDOffset); - - if(nextIFDOffset === 0){ - break; - } - - currentIFDOffset = nextIFDOffset; - i++; - } - - let ifdForTag = (tag) => { - for(let entry of ifds){ - if(entry.tag === tag){ - return entry; - } - } - - return null; - }; - - let width = ifdForTag(Tag.IMAGE_WIDTH, ifds).value; - let height = ifdForTag(Tag.IMAGE_HEIGHT, ifds).value; - let compression = ifdForTag(Tag.COMPRESSION, ifds).value; - let rowsPerStrip = ifdForTag(Tag.ROWS_PER_STRIP, ifds).value; - let ifdStripOffsets = ifdForTag(Tag.STRIP_OFFSETS, ifds); - let ifdStripByteCounts = ifdForTag(Tag.STRIP_BYTE_COUNTS, ifds); - - let numStrips = Math.ceil(height / rowsPerStrip); - - let stripByteCounts = []; - for(let i = 0; i < ifdStripByteCounts.count; i++){ - let type = ifdStripByteCounts.type; - let offset = ifdStripByteCounts.offset + i * type.bytes; - - let value; - if(type === Type.SHORT){ - value = data.readUInt16LE(offset); - }else if(type === Type.LONG){ - value = data.readUInt32LE(offset); - } - - stripByteCounts.push(value); - } - - let stripOffsets = []; - for(let i = 0; i < ifdStripOffsets.count; i++){ - let type = ifdStripOffsets.type; - let offset = ifdStripOffsets.offset + i * type.bytes; - - let value; - if(type === Type.SHORT){ - value = data.readUInt16LE(offset); - }else if(type === Type.LONG){ - value = data.readUInt32LE(offset); - } - - stripOffsets.push(value); - } - - let imageBuffer = new Uint8Array(width * height * 3); - - let linesProcessed = 0; - for(let i = 0; i < numStrips; i++){ - let stripOffset = stripOffsets[i]; - let stripBytes = stripByteCounts[i]; - let stripData = data.slice(stripOffset, stripOffset + stripBytes); - let lineBytes = width * 3; - for(let y = 0; y < rowsPerStrip; y++){ - let line = stripData.slice(y * lineBytes, y * lineBytes + lineBytes); - imageBuffer.set(line, linesProcessed * lineBytes); - - if(line.length === lineBytes){ - linesProcessed++; - }else { - break; - } - } - } - - console.log(`width: ${width}`); - console.log(`height: ${height}`); - console.log(`numStrips: ${numStrips}`); - console.log("stripByteCounts", stripByteCounts.join(", ")); - console.log("stripOffsets", stripOffsets.join(", ")); - - let image = new Image(); - image.width = width; - image.height = height; - image.buffer = imageBuffer; - image.metadata = ifds; - - return image; - } - - } - - - class Exporter{ - - constructor(){ - - } - - static toTiffBuffer(image, params = {}){ - - let offsetToFirstIFD = 8; - - let headerBuffer = new Uint8Array([0x49, 0x49, 42, 0, offsetToFirstIFD, 0, 0, 0]); - - let [width, height] = [image.width, image.height]; - - let ifds = [ - new IFDEntry(Tag.IMAGE_WIDTH, Type.SHORT, 1, null, width), - new IFDEntry(Tag.IMAGE_HEIGHT, Type.SHORT, 1, null, height), - new IFDEntry(Tag.BITS_PER_SAMPLE, Type.SHORT, 4, null, new Uint16Array([8, 8, 8, 8])), - new IFDEntry(Tag.COMPRESSION, Type.SHORT, 1, null, 1), - new IFDEntry(Tag.PHOTOMETRIC_INTERPRETATION, Type.SHORT, 1, null, 2), - new IFDEntry(Tag.ORIENTATION, Type.SHORT, 1, null, 1), - new IFDEntry(Tag.SAMPLES_PER_PIXEL, Type.SHORT, 1, null, 4), - new IFDEntry(Tag.ROWS_PER_STRIP, Type.LONG, 1, null, height), - new IFDEntry(Tag.STRIP_BYTE_COUNTS, Type.LONG, 1, null, width * height * 3), - new IFDEntry(Tag.PLANAR_CONFIGURATION, Type.SHORT, 1, null, 1), - new IFDEntry(Tag.RESOLUTION_UNIT, Type.SHORT, 1, null, 1), - new IFDEntry(Tag.SOFTWARE, Type.ASCII, 6, null, "......"), - new IFDEntry(Tag.STRIP_OFFSETS, Type.LONG, 1, null, null), - new IFDEntry(Tag.X_RESOLUTION, Type.RATIONAL, 1, null, new Uint32Array([1, 1])), - new IFDEntry(Tag.Y_RESOLUTION, Type.RATIONAL, 1, null, new Uint32Array([1, 1])), - ]; - - if(params.ifdEntries){ - ifds.push(...params.ifdEntries); - } - - let valueOffset = offsetToFirstIFD + 2 + ifds.length * 12 + 4; - - // create 12 byte buffer for each ifd and variable length buffers for ifd values - let ifdEntryBuffers = new Map(); - let ifdValueBuffers = new Map(); - for(let ifd of ifds){ - let entryBuffer = new ArrayBuffer(12); - let entryView = new DataView(entryBuffer); - - let valueBytes = ifd.type.bytes * ifd.count; - - entryView.setUint16(0, ifd.tag.value, true); - entryView.setUint16(2, ifd.type.value, true); - entryView.setUint32(4, ifd.count, true); - - if(ifd.count === 1 && ifd.type.bytes <= 4){ - entryView.setUint32(8, ifd.value, true); - }else { - entryView.setUint32(8, valueOffset, true); - - let valueBuffer = new Uint8Array(ifd.count * ifd.type.bytes); - if(ifd.type === Type.ASCII){ - valueBuffer.set(new Uint8Array(ifd.value.split("").map(c => c.charCodeAt(0)))); - }else { - valueBuffer.set(new Uint8Array(ifd.value.buffer)); - } - ifdValueBuffers.set(ifd.tag, valueBuffer); - - valueOffset = valueOffset + valueBuffer.byteLength; - } - - ifdEntryBuffers.set(ifd.tag, entryBuffer); - } - - let imageBufferOffset = valueOffset; - - new DataView(ifdEntryBuffers.get(Tag.STRIP_OFFSETS)).setUint32(8, imageBufferOffset, true); - - let concatBuffers = (buffers) => { - - let totalLength = buffers.reduce( (sum, buffer) => (sum + buffer.byteLength), 0); - let merged = new Uint8Array(totalLength); - - let offset = 0; - for(let buffer of buffers){ - merged.set(new Uint8Array(buffer), offset); - offset += buffer.byteLength; - } - - return merged; - }; - - let ifdBuffer = concatBuffers([ - new Uint16Array([ifds.length]), - ...ifdEntryBuffers.values(), - new Uint32Array([0])]); - let ifdValueBuffer = concatBuffers([...ifdValueBuffers.values()]); - - let tiffBuffer = concatBuffers([ - headerBuffer, - ifdBuffer, - ifdValueBuffer, - image.buffer - ]); - - return {width: width, height: height, buffer: tiffBuffer}; - } - - } - - exports.Tag = Tag; - exports.Type = Type; - exports.IFDEntry = IFDEntry; - exports.Image = Image; - exports.Reader = Reader; - exports.Exporter = Exporter; - - return exports; - - }({})); - - function updateAzimuth(viewer, measure){ - - const azimuth = measure.azimuth; - - const isOkay = measure.points.length === 2; - - azimuth.node.visible = isOkay && measure.showAzimuth; - - if(!azimuth.node.visible){ - return; - } - - const camera = viewer.scene.getActiveCamera(); - const renderAreaSize = viewer.renderer.getSize(new THREE.Vector2()); - const width = renderAreaSize.width; - const height = renderAreaSize.height; - - const [p0, p1] = measure.points; - const r = p0.position.distanceTo(p1.position); - const northVec = Utils.getNorthVec(p0.position, r, viewer.getProjection()); - const northPos = p0.position.clone().add(northVec); - - azimuth.center.position.copy(p0.position); - azimuth.center.scale.set(2, 2, 2); - - azimuth.center.visible = false; - // azimuth.target.visible = false; - - - { // north - azimuth.north.position.copy(northPos); - azimuth.north.scale.set(2, 2, 2); - - let distance = azimuth.north.position.distanceTo(camera.position); - let pr = Utils.projectedRadius(1, camera, distance, width, height); - - let scale = (5 / pr); - azimuth.north.scale.set(scale, scale, scale); - } - - { // target - azimuth.target.position.copy(p1.position); - azimuth.target.position.z = azimuth.north.position.z; - - let distance = azimuth.target.position.distanceTo(camera.position); - let pr = Utils.projectedRadius(1, camera, distance, width, height); - - let scale = (5 / pr); - azimuth.target.scale.set(scale, scale, scale); - } - - - azimuth.circle.position.copy(p0.position); - azimuth.circle.scale.set(r, r, r); - azimuth.circle.material.resolution.set(width, height); - - // to target - azimuth.centerToTarget.geometry.setPositions([ - 0, 0, 0, - ...p1.position.clone().sub(p0.position).toArray(), - ]); - azimuth.centerToTarget.position.copy(p0.position); - azimuth.centerToTarget.geometry.verticesNeedUpdate = true; - azimuth.centerToTarget.geometry.computeBoundingSphere(); - azimuth.centerToTarget.computeLineDistances(); - azimuth.centerToTarget.material.resolution.set(width, height); - - // to target ground - azimuth.centerToTargetground.geometry.setPositions([ - 0, 0, 0, - p1.position.x - p0.position.x, - p1.position.y - p0.position.y, - 0, - ]); - azimuth.centerToTargetground.position.copy(p0.position); - azimuth.centerToTargetground.geometry.verticesNeedUpdate = true; - azimuth.centerToTargetground.geometry.computeBoundingSphere(); - azimuth.centerToTargetground.computeLineDistances(); - azimuth.centerToTargetground.material.resolution.set(width, height); - - // to north - azimuth.centerToNorth.geometry.setPositions([ - 0, 0, 0, - northPos.x - p0.position.x, - northPos.y - p0.position.y, - 0, - ]); - azimuth.centerToNorth.position.copy(p0.position); - azimuth.centerToNorth.geometry.verticesNeedUpdate = true; - azimuth.centerToNorth.geometry.computeBoundingSphere(); - azimuth.centerToNorth.computeLineDistances(); - azimuth.centerToNorth.material.resolution.set(width, height); - - // label - const radians = Utils.computeAzimuth(p0.position, p1.position, viewer.getProjection()); - let degrees = THREE.Math.radToDeg(radians); - if(degrees < 0){ - degrees = 360 + degrees; - } - const txtDegrees = `${degrees.toFixed(2)}°`; - const labelDir = northPos.clone().add(p1.position).multiplyScalar(0.5).sub(p0.position); - if(labelDir.length() > 0){ - labelDir.z = 0; - labelDir.normalize(); - const labelVec = labelDir.clone().multiplyScalar(r); - const labelPos = p0.position.clone().add(labelVec); - azimuth.label.position.copy(labelPos); - } - azimuth.label.setText(txtDegrees); - let distance = azimuth.label.position.distanceTo(camera.position); - let pr = Utils.projectedRadius(1, camera, distance, width, height); - let scale = (70 / pr); - azimuth.label.scale.set(scale, scale, scale); - } - - class MeasuringTool extends EventDispatcher{ - constructor (viewer) { - super(); - - this.viewer = viewer; - this.renderer = viewer.renderer; - - this.addEventListener('start_inserting_measurement', e => { - this.viewer.dispatchEvent({ - type: 'cancel_insertions' - }); - }); - - this.showLabels = true; - this.scene = new THREE.Scene(); - this.scene.name = 'scene_measurement'; - this.light = new THREE.PointLight(0xffffff, 1.0); - this.scene.add(this.light); - - this.viewer.inputHandler.registerInteractiveScene(this.scene); - - this.onRemove = (e) => { this.scene.remove(e.measurement);}; - this.onAdd = e => {this.scene.add(e.measurement);}; - - for(let measurement of viewer.scene.measurements){ - this.onAdd({measurement: measurement}); - } - - viewer.addEventListener("update", this.update.bind(this)); - viewer.addEventListener("render.pass.perspective_overlay", this.render.bind(this)); - viewer.addEventListener("scene_changed", this.onSceneChange.bind(this)); - - viewer.scene.addEventListener('measurement_added', this.onAdd); - viewer.scene.addEventListener('measurement_removed', this.onRemove); - } - - onSceneChange(e){ - if(e.oldScene){ - e.oldScene.removeEventListener('measurement_added', this.onAdd); - e.oldScene.removeEventListener('measurement_removed', this.onRemove); - } - - e.scene.addEventListener('measurement_added', this.onAdd); - e.scene.addEventListener('measurement_removed', this.onRemove); - } - - startInsertion (args = {}) { - let domElement = this.viewer.renderer.domElement; - - let measure = new Measure(); - - this.dispatchEvent({ - type: 'start_inserting_measurement', - measure: measure - }); - - const pick = (defaul, alternative) => { - if(defaul != null){ - return defaul; - }else { - return alternative; - } - }; - - measure.showDistances = (args.showDistances === null) ? true : args.showDistances; - - measure.showArea = pick(args.showArea, false); - measure.showAngles = pick(args.showAngles, false); - measure.showCoordinates = pick(args.showCoordinates, false); - measure.showHeight = pick(args.showHeight, false); - measure.showCircle = pick(args.showCircle, false); - measure.showAzimuth = pick(args.showAzimuth, false); - measure.showEdges = pick(args.showEdges, true); - measure.closed = pick(args.closed, false); - measure.maxMarkers = pick(args.maxMarkers, Infinity); - - measure.name = args.name || 'Measurement'; - - this.scene.add(measure); - - let cancel = { - removeLastMarker: measure.maxMarkers > 3, - callback: null - }; - - let insertionCallback = (e) => { - if (e.button === THREE.MOUSE.LEFT) { - measure.addMarker(measure.points[measure.points.length - 1].position.clone()); - - if (measure.points.length >= measure.maxMarkers) { - cancel.callback(); - } - - this.viewer.inputHandler.startDragging( - measure.spheres[measure.spheres.length - 1]); - } else if (e.button === THREE.MOUSE.RIGHT) { - cancel.callback(); - } - }; - - cancel.callback = e => { - if (cancel.removeLastMarker) { - measure.removeMarker(measure.points.length - 1); - } - domElement.removeEventListener('mouseup', insertionCallback, true); - this.viewer.removeEventListener('cancel_insertions', cancel.callback); - }; - - if (measure.maxMarkers > 1) { - this.viewer.addEventListener('cancel_insertions', cancel.callback); - domElement.addEventListener('mouseup', insertionCallback, true); - } - - measure.addMarker(new THREE.Vector3(0, 0, 0)); - this.viewer.inputHandler.startDragging( - measure.spheres[measure.spheres.length - 1]); - - this.viewer.scene.addMeasurement(measure); - - return measure; - } - - update(){ - let camera = this.viewer.scene.getActiveCamera(); - let domElement = this.renderer.domElement; - let measurements = this.viewer.scene.measurements; - - const renderAreaSize = this.renderer.getSize(new THREE.Vector2()); - let clientWidth = renderAreaSize.width; - let clientHeight = renderAreaSize.height; - - this.light.position.copy(camera.position); - - // make size independant of distance - for (let measure of measurements) { - measure.lengthUnit = this.viewer.lengthUnit; - measure.lengthUnitDisplay = this.viewer.lengthUnitDisplay; - measure.update(); - - updateAzimuth(viewer, measure); - - // spheres - for(let sphere of measure.spheres){ - let distance = camera.position.distanceTo(sphere.getWorldPosition(new THREE.Vector3())); - let pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight); - let scale = (15 / pr); - sphere.scale.set(scale, scale, scale); - } - - // labels - let labels = measure.edgeLabels.concat(measure.angleLabels); - for(let label of labels){ - let distance = camera.position.distanceTo(label.getWorldPosition(new THREE.Vector3())); - let pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight); - let scale = (70 / pr); - - if(Potree.debug.scale){ - scale = (Potree.debug.scale / pr); - } - - label.scale.set(scale, scale, scale); - } - - // coordinate labels - for (let j = 0; j < measure.coordinateLabels.length; j++) { - let label = measure.coordinateLabels[j]; - let sphere = measure.spheres[j]; - - let distance = camera.position.distanceTo(sphere.getWorldPosition(new THREE.Vector3())); - - let screenPos = sphere.getWorldPosition(new THREE.Vector3()).clone().project(camera); - screenPos.x = Math.round((screenPos.x + 1) * clientWidth / 2); - screenPos.y = Math.round((-screenPos.y + 1) * clientHeight / 2); - screenPos.z = 0; - screenPos.y -= 30; - - let labelPos = new THREE.Vector3( - (screenPos.x / clientWidth) * 2 - 1, - -(screenPos.y / clientHeight) * 2 + 1, - 0.5 ); - labelPos.unproject(camera); - if(this.viewer.scene.cameraMode == CameraMode.PERSPECTIVE) { - let direction = labelPos.sub(camera.position).normalize(); - labelPos = new THREE.Vector3().addVectors( - camera.position, direction.multiplyScalar(distance)); - - } - label.position.copy(labelPos); - let pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight); - let scale = (70 / pr); - label.scale.set(scale, scale, scale); - } - - // height label - if (measure.showHeight) { - let label = measure.heightLabel; - - { - let distance = label.position.distanceTo(camera.position); - let pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight); - let scale = (70 / pr); - label.scale.set(scale, scale, scale); - } - - { // height edge - let edge = measure.heightEdge; - - let sorted = measure.points.slice().sort((a, b) => a.position.z - b.position.z); - let lowPoint = sorted[0].position.clone(); - let highPoint = sorted[sorted.length - 1].position.clone(); - let min = lowPoint.z; - let max = highPoint.z; - - let start = new THREE.Vector3(highPoint.x, highPoint.y, min); - let end = new THREE.Vector3(highPoint.x, highPoint.y, max); - - let lowScreen = lowPoint.clone().project(camera); - let startScreen = start.clone().project(camera); - let endScreen = end.clone().project(camera); - - let toPixelCoordinates = v => { - let r = v.clone().addScalar(1).divideScalar(2); - r.x = r.x * clientWidth; - r.y = r.y * clientHeight; - r.z = 0; - - return r; - }; - - let lowEL = toPixelCoordinates(lowScreen); - let startEL = toPixelCoordinates(startScreen); - let endEL = toPixelCoordinates(endScreen); - - let lToS = lowEL.distanceTo(startEL); - let sToE = startEL.distanceTo(endEL); - - edge.geometry.lineDistances = [0, lToS, lToS, lToS + sToE]; - edge.geometry.lineDistancesNeedUpdate = true; - - edge.material.dashSize = 10; - edge.material.gapSize = 10; - } - } - - { // area label - let label = measure.areaLabel; - let distance = label.position.distanceTo(camera.position); - let pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight); - - let scale = (70 / pr); - label.scale.set(scale, scale, scale); - } - - { // radius label - let label = measure.circleRadiusLabel; - let distance = label.position.distanceTo(camera.position); - let pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight); - - let scale = (70 / pr); - label.scale.set(scale, scale, scale); - } - - { // edges - const materials = [ - measure.circleRadiusLine.material, - ...measure.edges.map( (e) => e.material), - measure.heightEdge.material, - measure.circleLine.material, - ]; - - for(const material of materials){ - material.resolution.set(clientWidth, clientHeight); - } - } - - if(!this.showLabels){ - - const labels = [ - ...measure.sphereLabels, - ...measure.edgeLabels, - ...measure.angleLabels, - ...measure.coordinateLabels, - measure.heightLabel, - measure.areaLabel, - measure.circleRadiusLabel, - ]; - - for(const label of labels){ - label.visible = false; - } - } - } - } - - render(){ - this.viewer.renderer.render(this.scene, this.viewer.scene.getActiveCamera()); - } - }; - - class Message{ - - constructor(content){ - this.content = content; - - let closeIcon = `${exports.resourcePath}/icons/close.svg`; - - this.element = $(` -
        - - -
        `); - - this.elClose = this.element.find("img[name=close]"); - - this.elContainer = this.element.find("span[name=content_container]"); - - if(typeof content === "string"){ - this.elContainer.append($(`${content}`)); - }else { - this.elContainer.append(content); - } - - } - - setMessage(content){ - this.elContainer.empty(); - if(typeof content === "string"){ - this.elContainer.append($(`${content}`)); - }else { - this.elContainer.append(content); - } - } - - } - - class PointCloudSM{ - - constructor(potreeRenderer){ - - this.potreeRenderer = potreeRenderer; - this.threeRenderer = this.potreeRenderer.threeRenderer; - - this.target = new THREE.WebGLRenderTarget(2 * 1024, 2 * 1024, { - minFilter: THREE.LinearFilter, - magFilter: THREE.LinearFilter, - format: THREE.RGBAFormat, - type: THREE.FloatType - }); - this.target.depthTexture = new THREE.DepthTexture(); - this.target.depthTexture.type = THREE.UnsignedIntType; - - //this.threeRenderer.setClearColor(0x000000, 1); - this.threeRenderer.setClearColor(0xff0000, 1); - - //HACK? removed while moving to three.js 109 - //this.threeRenderer.clearTarget(this.target, true, true, true); - { - const oldTarget = this.threeRenderer.getRenderTarget(); - - this.threeRenderer.setRenderTarget(this.target); - this.threeRenderer.clear(true, true, true); - - this.threeRenderer.setRenderTarget(oldTarget); - } - } - - setLight(light){ - this.light = light; - - let fov = (180 * light.angle) / Math.PI; - let aspect = light.shadow.mapSize.width / light.shadow.mapSize.height; - let near = 0.1; - let far = light.distance === 0 ? 10000 : light.distance; - this.camera = new THREE.PerspectiveCamera(fov, aspect, near, far); - this.camera.up.set(0, 0, 1); - this.camera.position.copy(light.position); - - let target = new THREE.Vector3().subVectors(light.position, light.getWorldDirection(new THREE.Vector3())); - this.camera.lookAt(target); - - this.camera.updateProjectionMatrix(); - this.camera.updateMatrix(); - this.camera.updateMatrixWorld(); - this.camera.matrixWorldInverse.getInverse(this.camera.matrixWorld); - } - - setSize(width, height){ - if(this.target.width !== width || this.target.height !== height){ - this.target.dispose(); - } - this.target.setSize(width, height); - } - - render(scene, camera){ - - this.threeRenderer.setClearColor(0x000000, 1); - - const oldTarget = this.threeRenderer.getRenderTarget(); - - this.threeRenderer.setRenderTarget(this.target); - this.threeRenderer.clear(true, true, true); - - this.potreeRenderer.render(scene, this.camera, this.target, {}); - - this.threeRenderer.setRenderTarget(oldTarget); - } - - - } - - class ProfileTool extends EventDispatcher { - constructor (viewer) { - super(); - - this.viewer = viewer; - this.renderer = viewer.renderer; - - this.addEventListener('start_inserting_profile', e => { - this.viewer.dispatchEvent({ - type: 'cancel_insertions' - }); - }); - - this.scene = new THREE.Scene(); - this.scene.name = 'scene_profile'; - this.light = new THREE.PointLight(0xffffff, 1.0); - this.scene.add(this.light); - - this.viewer.inputHandler.registerInteractiveScene(this.scene); - - this.onRemove = e => this.scene.remove(e.profile); - this.onAdd = e => this.scene.add(e.profile); - - for(let profile of viewer.scene.profiles){ - this.onAdd({profile: profile}); - } - - viewer.addEventListener("update", this.update.bind(this)); - viewer.addEventListener("render.pass.perspective_overlay", this.render.bind(this)); - viewer.addEventListener("scene_changed", this.onSceneChange.bind(this)); - - viewer.scene.addEventListener('profile_added', this.onAdd); - viewer.scene.addEventListener('profile_removed', this.onRemove); - } - - onSceneChange(e){ - if(e.oldScene){ - e.oldScene.removeEventListeners('profile_added', this.onAdd); - e.oldScene.removeEventListeners('profile_removed', this.onRemove); - } - - e.scene.addEventListener('profile_added', this.onAdd); - e.scene.addEventListener('profile_removed', this.onRemove); - } - - startInsertion (args = {}) { - let domElement = this.viewer.renderer.domElement; - - let profile = new Profile(); - profile.name = args.name || 'Profile'; - - this.dispatchEvent({ - type: 'start_inserting_profile', - profile: profile - }); - - this.scene.add(profile); - - let cancel = { - callback: null - }; - - let insertionCallback = (e) => { - if(e.button === THREE.MOUSE.LEFT){ - if(profile.points.length <= 1){ - let camera = this.viewer.scene.getActiveCamera(); - let distance = camera.position.distanceTo(profile.points[0]); - let clientSize = this.viewer.renderer.getSize(new THREE.Vector2()); - let pr = Utils.projectedRadius(1, camera, distance, clientSize.width, clientSize.height); - let width = (10 / pr); - - profile.setWidth(width); - } - - profile.addMarker(profile.points[profile.points.length - 1].clone()); - - this.viewer.inputHandler.startDragging( - profile.spheres[profile.spheres.length - 1]); - } else if (e.button === THREE.MOUSE.RIGHT) { - cancel.callback(); - } - }; - - cancel.callback = e => { - profile.removeMarker(profile.points.length - 1); - domElement.removeEventListener('mouseup', insertionCallback, true); - this.viewer.removeEventListener('cancel_insertions', cancel.callback); - }; - - this.viewer.addEventListener('cancel_insertions', cancel.callback); - domElement.addEventListener('mouseup', insertionCallback, true); - - profile.addMarker(new THREE.Vector3(0, 0, 0)); - this.viewer.inputHandler.startDragging( - profile.spheres[profile.spheres.length - 1]); - - this.viewer.scene.addProfile(profile); - - return profile; - } - - update(){ - let camera = this.viewer.scene.getActiveCamera(); - let profiles = this.viewer.scene.profiles; - let renderAreaSize = this.viewer.renderer.getSize(new THREE.Vector2()); - let clientWidth = renderAreaSize.width; - let clientHeight = renderAreaSize.height; - - this.light.position.copy(camera.position); - - // make size independant of distance - for(let profile of profiles){ - for(let sphere of profile.spheres){ - let distance = camera.position.distanceTo(sphere.getWorldPosition(new THREE.Vector3())); - let pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight); - let scale = (15 / pr); - sphere.scale.set(scale, scale, scale); - } - } - } - - render(){ - this.viewer.renderer.render(this.scene, this.viewer.scene.getActiveCamera()); - } - - } - - class ScreenBoxSelectTool extends EventDispatcher{ - - constructor(viewer){ - super(); - - this.viewer = viewer; - this.scene = new THREE.Scene(); - - viewer.addEventListener("update", this.update.bind(this)); - viewer.addEventListener("render.pass.perspective_overlay", this.render.bind(this)); - viewer.addEventListener("scene_changed", this.onSceneChange.bind(this)); - } - - onSceneChange(scene){ - console.log("scene changed"); - } - - startInsertion(){ - let domElement = this.viewer.renderer.domElement; - - let volume = new BoxVolume(); - volume.position.set(12345, 12345, 12345); - volume.showVolumeLabel = false; - volume.visible = false; - volume.update(); - this.viewer.scene.addVolume(volume); - - this.importance = 10; - - let selectionBox = $(`
        `); - $(domElement.parentElement).append(selectionBox); - selectionBox.css("right", "10px"); - selectionBox.css("bottom", "10px"); - - let drag = e =>{ - - volume.visible = true; - - let mStart = e.drag.start; - let mEnd = e.drag.end; - - let box2D = new THREE.Box2(); - box2D.expandByPoint(mStart); - box2D.expandByPoint(mEnd); - - selectionBox.css("left", `${box2D.min.x}px`); - selectionBox.css("top", `${box2D.min.y}px`); - selectionBox.css("width", `${box2D.max.x - box2D.min.x}px`); - selectionBox.css("height", `${box2D.max.y - box2D.min.y}px`); - - let camera = e.viewer.scene.getActiveCamera(); - let size = e.viewer.renderer.getSize(new THREE.Vector2()); - let frustumSize = new THREE.Vector2( - camera.right - camera.left, - camera.top - camera.bottom); - - let screenCentroid = new THREE.Vector2().addVectors(e.drag.end, e.drag.start).multiplyScalar(0.5); - let ray = Utils.mouseToRay(screenCentroid, camera, size.width, size.height); - - let diff = new THREE.Vector2().subVectors(e.drag.end, e.drag.start); - diff.divide(size).multiply(frustumSize); - - volume.position.copy(ray.origin); - volume.up.copy(camera.up); - volume.rotation.copy(camera.rotation); - volume.scale.set(diff.x, diff.y, 1000 * 100); - - e.consume(); - }; - - let drop = e => { - this.importance = 0; - - $(selectionBox).remove(); - - this.viewer.inputHandler.deselectAll(); - this.viewer.inputHandler.toggleSelection(volume); - - let camera = e.viewer.scene.getActiveCamera(); - let size = e.viewer.renderer.getSize(new THREE.Vector2()); - let screenCentroid = new THREE.Vector2().addVectors(e.drag.end, e.drag.start).multiplyScalar(0.5); - let ray = Utils.mouseToRay(screenCentroid, camera, size.width, size.height); - - let line = new THREE.Line3(ray.origin, new THREE.Vector3().addVectors(ray.origin, ray.direction)); - - this.removeEventListener("drag", drag); - this.removeEventListener("drop", drop); - - let allPointsNear = []; - let allPointsFar = []; - - // TODO support more than one point cloud - for(let pointcloud of this.viewer.scene.pointclouds){ - - if(!pointcloud.visible){ - continue; - } - - let volCam = camera.clone(); - volCam.left = -volume.scale.x / 2; - volCam.right = +volume.scale.x / 2; - volCam.top = +volume.scale.y / 2; - volCam.bottom = -volume.scale.y / 2; - volCam.near = -volume.scale.z / 2; - volCam.far = +volume.scale.z / 2; - volCam.rotation.copy(volume.rotation); - volCam.position.copy(volume.position); - - volCam.updateMatrix(); - volCam.updateMatrixWorld(); - volCam.updateProjectionMatrix(); - volCam.matrixWorldInverse.getInverse(volCam.matrixWorld); - - let ray = new THREE.Ray(volCam.getWorldPosition(new THREE.Vector3()), volCam.getWorldDirection(new THREE.Vector3())); - let rayInverse = new THREE.Ray( - ray.origin.clone().add(ray.direction.clone().multiplyScalar(volume.scale.z)), - ray.direction.clone().multiplyScalar(-1)); - - let pickerSettings = { - width: 8, - height: 8, - pickWindowSize: 8, - all: true, - pickClipped: true, - pointSizeType: PointSizeType.FIXED, - pointSize: 1}; - let pointsNear = pointcloud.pick(viewer, volCam, ray, pickerSettings); - - volCam.rotateX(Math.PI); - volCam.updateMatrix(); - volCam.updateMatrixWorld(); - volCam.updateProjectionMatrix(); - volCam.matrixWorldInverse.getInverse(volCam.matrixWorld); - let pointsFar = pointcloud.pick(viewer, volCam, rayInverse, pickerSettings); - - allPointsNear.push(...pointsNear); - allPointsFar.push(...pointsFar); - } - - if(allPointsNear.length > 0 && allPointsFar.length > 0){ - let viewLine = new THREE.Line3(ray.origin, new THREE.Vector3().addVectors(ray.origin, ray.direction)); - - let closestOnLine = allPointsNear.map(p => viewLine.closestPointToPoint(p.position, false, new THREE.Vector3())); - let closest = closestOnLine.sort( (a, b) => ray.origin.distanceTo(a) - ray.origin.distanceTo(b))[0]; - - let farthestOnLine = allPointsFar.map(p => viewLine.closestPointToPoint(p.position, false, new THREE.Vector3())); - let farthest = farthestOnLine.sort( (a, b) => ray.origin.distanceTo(b) - ray.origin.distanceTo(a))[0]; - - let distance = closest.distanceTo(farthest); - let centroid = new THREE.Vector3().addVectors(closest, farthest).multiplyScalar(0.5); - volume.scale.z = distance * 1.1; - volume.position.copy(centroid); - } - - volume.clip = true; - }; - - this.addEventListener("drag", drag); - this.addEventListener("drop", drop); - - viewer.inputHandler.addInputListener(this); - - return volume; - } - - update(e){ - //console.log(e.delta) - } - - render(){ - this.viewer.renderer.render(this.scene, this.viewer.scene.getActiveCamera()); - } - - } - - class SpotLightHelper extends THREE.Object3D{ - - constructor(light, color){ - super(); - - this.light = light; - this.color = color; - - //this.up.set(0, 0, 1); - this.updateMatrix(); - this.updateMatrixWorld(); - - { // SPHERE - let sg = new THREE.SphereGeometry(1, 32, 32); - let sm = new THREE.MeshNormalMaterial(); - this.sphere = new THREE.Mesh(sg, sm); - this.sphere.scale.set(0.5, 0.5, 0.5); - this.add(this.sphere); - } - - { // LINES - - - let positions = new Float32Array([ - +0, +0, +0, +0, +0, -1, - - +0, +0, +0, -1, -1, -1, - +0, +0, +0, +1, -1, -1, - +0, +0, +0, +1, +1, -1, - +0, +0, +0, -1, +1, -1, - - -1, -1, -1, +1, -1, -1, - +1, -1, -1, +1, +1, -1, - +1, +1, -1, -1, +1, -1, - -1, +1, -1, -1, -1, -1, - ]); - - let geometry = new THREE.BufferGeometry(); - geometry.addAttribute("position", new THREE.BufferAttribute(positions, 3)); - - let material = new THREE.LineBasicMaterial(); - - this.frustum = new THREE.LineSegments(geometry, material); - this.add(this.frustum); - - } - - this.update(); - } - - update(){ - - this.light.updateMatrix(); - this.light.updateMatrixWorld(); - - let position = this.light.position; - //let target = new THREE.Vector3().addVectors( - // light.position, - // new THREE.Vector3().subVectors(light.position, this.light.getWorldDirection(new THREE.Vector3()))); - let target = new THREE.Vector3().addVectors( - light.position, this.light.getWorldDirection(new THREE.Vector3()).multiplyScalar(-1)); - - let quat = new THREE.Quaternion().setFromRotationMatrix( - new THREE.Matrix4().lookAt( position, target, new THREE.Vector3( 0, 0, 1 ) ) - ); - - this.setRotationFromQuaternion(quat); - this.position.copy(position); - - - let coneLength = (this.light.distance > 0) ? this.light.distance : 1000; - let coneWidth = coneLength * Math.tan( this.light.angle * 0.5 ); - - this.frustum.scale.set(coneWidth, coneWidth, coneLength); - - - - //{ - // let fov = (180 * light.angle) / Math.PI; - // let aspect = light.shadow.mapSize.width / light.shadow.mapSize.height; - // let near = 0.1; - // let far = light.distance === 0 ? 10000 : light.distance; - // this.camera = new THREE.PerspectiveCamera(fov, aspect, near, far); - // this.camera.up.set(0, 0, 1); - // this.camera.position.copy(light.position); - - // let target = new THREE.Vector3().addVectors(light.position, light.getWorldDirection(new THREE.Vector3())); - // this.camera.lookAt(target); - - // this.camera.updateProjectionMatrix(); - // this.camera.updateMatrix(); - // this.camera.updateMatrixWorld(); - // this.camera.matrixWorldInverse.getInverse(this.camera.matrixWorld); - //} - - } - - } - - class TransformationTool { - constructor(viewer) { - this.viewer = viewer; - - this.scene = new THREE.Scene(); - - this.selection = []; - this.pivot = new THREE.Vector3(); - this.dragging = false; - this.showPickVolumes = false; - - this.viewer.inputHandler.registerInteractiveScene(this.scene); - this.viewer.inputHandler.addEventListener('selection_changed', (e) => { - for(let selected of this.selection){ - this.viewer.inputHandler.blacklist.delete(selected); - } - - this.selection = e.selection; - - for(let selected of this.selection){ - this.viewer.inputHandler.blacklist.add(selected); - } - - }); - - let red = 0xE73100; - let green = 0x44A24A; - let blue = 0x2669E7; - - this.activeHandle = null; - this.scaleHandles = { - "scale.x+": {name: "scale.x+", node: new THREE.Object3D(), color: red, alignment: [+1, +0, +0]}, - "scale.x-": {name: "scale.x-", node: new THREE.Object3D(), color: red, alignment: [-1, +0, +0]}, - "scale.y+": {name: "scale.y+", node: new THREE.Object3D(), color: green, alignment: [+0, +1, +0]}, - "scale.y-": {name: "scale.y-", node: new THREE.Object3D(), color: green, alignment: [+0, -1, +0]}, - "scale.z+": {name: "scale.z+", node: new THREE.Object3D(), color: blue, alignment: [+0, +0, +1]}, - "scale.z-": {name: "scale.z-", node: new THREE.Object3D(), color: blue, alignment: [+0, +0, -1]}, - }; - this.focusHandles = { - "focus.x+": {name: "focus.x+", node: new THREE.Object3D(), color: red, alignment: [+1, +0, +0]}, - "focus.x-": {name: "focus.x-", node: new THREE.Object3D(), color: red, alignment: [-1, +0, +0]}, - "focus.y+": {name: "focus.y+", node: new THREE.Object3D(), color: green, alignment: [+0, +1, +0]}, - "focus.y-": {name: "focus.y-", node: new THREE.Object3D(), color: green, alignment: [+0, -1, +0]}, - "focus.z+": {name: "focus.z+", node: new THREE.Object3D(), color: blue, alignment: [+0, +0, +1]}, - "focus.z-": {name: "focus.z-", node: new THREE.Object3D(), color: blue, alignment: [+0, +0, -1]}, - }; - this.translationHandles = { - "translation.x": {name: "translation.x", node: new THREE.Object3D(), color: red, alignment: [1, 0, 0]}, - "translation.y": {name: "translation.y", node: new THREE.Object3D(), color: green, alignment: [0, 1, 0]}, - "translation.z": {name: "translation.z", node: new THREE.Object3D(), color: blue, alignment: [0, 0, 1]}, - }; - this.rotationHandles = { - "rotation.x": {name: "rotation.x", node: new THREE.Object3D(), color: red, alignment: [1, 0, 0]}, - "rotation.y": {name: "rotation.y", node: new THREE.Object3D(), color: green, alignment: [0, 1, 0]}, - "rotation.z": {name: "rotation.z", node: new THREE.Object3D(), color: blue, alignment: [0, 0, 1]}, - }; - this.handles = Object.assign({}, this.scaleHandles, this.focusHandles, this.translationHandles, this.rotationHandles); - this.pickVolumes = []; - - this.initializeScaleHandles(); - this.initializeFocusHandles(); - this.initializeTranslationHandles(); - this.initializeRotationHandles(); - - - let boxFrameGeometry = new THREE.Geometry(); - { - // bottom - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5)); - // top - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5)); - // sides - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5)); - } - this.frame = new THREE.LineSegments(boxFrameGeometry, new THREE.LineBasicMaterial({color: 0xffff00})); - this.scene.add(this.frame); - - - } - - initializeScaleHandles(){ - let sgSphere = new THREE.SphereGeometry(1, 32, 32); - let sgLowPolySphere = new THREE.SphereGeometry(1, 16, 16); - - for(let handleName of Object.keys(this.scaleHandles)){ - let handle = this.scaleHandles[handleName]; - let node = handle.node; - this.scene.add(node); - node.position.set(...handle.alignment).multiplyScalar(0.5); - - let material = new THREE.MeshBasicMaterial({ - color: handle.color, - opacity: 0.4, - transparent: true - }); - - let outlineMaterial = new THREE.MeshBasicMaterial({ - color: 0x000000, - side: THREE.BackSide, - opacity: 0.4, - transparent: true}); - - let pickMaterial = new THREE.MeshNormalMaterial({ - opacity: 0.2, - transparent: true, - visible: this.showPickVolumes}); - - let sphere = new THREE.Mesh(sgSphere, material); - sphere.scale.set(1.3, 1.3, 1.3); - sphere.name = `${handleName}.handle`; - node.add(sphere); - - let outline = new THREE.Mesh(sgSphere, outlineMaterial); - outline.scale.set(1.4, 1.4, 1.4); - outline.name = `${handleName}.outline`; - sphere.add(outline); - - let pickSphere = new THREE.Mesh(sgLowPolySphere, pickMaterial); - pickSphere.name = `${handleName}.pick_volume`; - pickSphere.scale.set(3, 3, 3); - sphere.add(pickSphere); - pickSphere.handle = handleName; - this.pickVolumes.push(pickSphere); - - node.setOpacity = (target) => { - let opacity = {x: material.opacity}; - let t = new TWEEN.Tween(opacity).to({x: target}, 100); - t.onUpdate(() => { - sphere.visible = opacity.x > 0; - pickSphere.visible = opacity.x > 0; - material.opacity = opacity.x; - outlineMaterial.opacity = opacity.x; - pickSphere.material.opacity = opacity.x * 0.5; - }); - t.start(); - }; - - pickSphere.addEventListener("drag", (e) => this.dragScaleHandle(e)); - pickSphere.addEventListener("drop", (e) => this.dropScaleHandle(e)); - - pickSphere.addEventListener("mouseover", e => { - //node.setOpacity(1); - }); - - pickSphere.addEventListener("click", e => { - e.consume(); - }); - - pickSphere.addEventListener("mouseleave", e => { - //node.setOpacity(0.4); - }); - } - } - - initializeFocusHandles(){ - //let sgBox = new THREE.BoxGeometry(1, 1, 1); - let sgPlane = new THREE.PlaneGeometry(4, 4, 1, 1); - let sgLowPolySphere = new THREE.SphereGeometry(1, 16, 16); - - let texture = new THREE.TextureLoader().load(`${exports.resourcePath}/icons/eye_2.png`); - - for(let handleName of Object.keys(this.focusHandles)){ - let handle = this.focusHandles[handleName]; - let node = handle.node; - this.scene.add(node); - let align = handle.alignment; - - //node.lookAt(new THREE.Vector3().addVectors(node.position, new THREE.Vector3(...align))); - node.lookAt(new THREE.Vector3(...align)); - - let off = 0.8; - if(align[0] === 1){ - node.position.set(1, off, -off).multiplyScalar(0.5); - node.rotation.z = Math.PI / 2; - }else if(align[0] === -1){ - node.position.set(-1, -off, -off).multiplyScalar(0.5); - node.rotation.z = Math.PI / 2; - }else if(align[1] === 1){ - node.position.set(-off, 1, -off).multiplyScalar(0.5); - node.rotation.set(Math.PI / 2, Math.PI, 0.0); - }else if(align[1] === -1){ - node.position.set(off, -1, -off).multiplyScalar(0.5); - node.rotation.set(Math.PI / 2, 0.0, 0.0); - }else if(align[2] === 1){ - node.position.set(off, off, 1).multiplyScalar(0.5); - }else if(align[2] === -1){ - node.position.set(-off, off, -1).multiplyScalar(0.5); - } - - let material = new THREE.MeshBasicMaterial({ - color: handle.color, - opacity: 0, - transparent: true, - map: texture - }); - - //let outlineMaterial = new THREE.MeshBasicMaterial({ - // color: 0x000000, - // side: THREE.BackSide, - // opacity: 0, - // transparent: true}); - - let pickMaterial = new THREE.MeshNormalMaterial({ - //opacity: 0, - transparent: true, - visible: this.showPickVolumes}); - - let box = new THREE.Mesh(sgPlane, material); - box.name = `${handleName}.handle`; - box.scale.set(1.5, 1.5, 1.5); - box.position.set(0, 0, 0); - box.visible = false; - node.add(box); - //handle.focusNode = box; - - //let outline = new THREE.Mesh(sgPlane, outlineMaterial); - //outline.scale.set(1.4, 1.4, 1.4); - //outline.name = `${handleName}.outline`; - //box.add(outline); - - let pickSphere = new THREE.Mesh(sgLowPolySphere, pickMaterial); - pickSphere.name = `${handleName}.pick_volume`; - pickSphere.scale.set(3, 3, 3); - box.add(pickSphere); - pickSphere.handle = handleName; - this.pickVolumes.push(pickSphere); - - node.setOpacity = (target) => { - let opacity = {x: material.opacity}; - let t = new TWEEN.Tween(opacity).to({x: target}, 100); - t.onUpdate(() => { - pickSphere.visible = opacity.x > 0; - box.visible = opacity.x > 0; - material.opacity = opacity.x; - //outlineMaterial.opacity = opacity.x; - pickSphere.material.opacity = opacity.x * 0.5; - }); - t.start(); - }; - - pickSphere.addEventListener("drag", e => {}); - - pickSphere.addEventListener("mouseup", e => { - e.consume(); - }); - - pickSphere.addEventListener("mousedown", e => { - e.consume(); - }); - - pickSphere.addEventListener("click", e => { - e.consume(); - - let selected = this.selection[0]; - let maxScale = Math.max(...selected.scale.toArray()); - let minScale = Math.min(...selected.scale.toArray()); - let handleLength = Math.abs(selected.scale.dot(new THREE.Vector3(...handle.alignment))); - let alignment = new THREE.Vector3(...handle.alignment).multiplyScalar(2 * maxScale / handleLength); - alignment.applyMatrix4(selected.matrixWorld); - let newCamPos = alignment; - let newCamTarget = selected.getWorldPosition(new THREE.Vector3()); - - Utils.moveTo(this.viewer.scene, newCamPos, newCamTarget); - }); - - pickSphere.addEventListener("mouseover", e => { - //box.setOpacity(1); - }); - - pickSphere.addEventListener("mouseleave", e => { - //box.setOpacity(0.4); - }); - } - } - - initializeTranslationHandles(){ - let boxGeometry = new THREE.BoxGeometry(1, 1, 1); - - for(let handleName of Object.keys(this.translationHandles)){ - let handle = this.handles[handleName]; - let node = handle.node; - this.scene.add(node); - - let material = new THREE.MeshBasicMaterial({ - color: handle.color, - opacity: 0.4, - transparent: true}); - - let outlineMaterial = new THREE.MeshBasicMaterial({ - color: 0x000000, - side: THREE.BackSide, - opacity: 0.4, - transparent: true}); - - let pickMaterial = new THREE.MeshNormalMaterial({ - opacity: 0.2, - transparent: true, - visible: this.showPickVolumes - }); - - let box = new THREE.Mesh(boxGeometry, material); - box.name = `${handleName}.handle`; - box.scale.set(0.2, 0.2, 40); - box.lookAt(new THREE.Vector3(...handle.alignment)); - box.renderOrder = 10; - node.add(box); - handle.translateNode = box; - - let outline = new THREE.Mesh(boxGeometry, outlineMaterial); - outline.name = `${handleName}.outline`; - outline.scale.set(3, 3, 1.03); - outline.renderOrder = 0; - box.add(outline); - - let pickVolume = new THREE.Mesh(boxGeometry, pickMaterial); - pickVolume.name = `${handleName}.pick_volume`; - pickVolume.scale.set(12, 12, 1.1); - pickVolume.handle = handleName; - box.add(pickVolume); - this.pickVolumes.push(pickVolume); - - node.setOpacity = (target) => { - let opacity = {x: material.opacity}; - let t = new TWEEN.Tween(opacity).to({x: target}, 100); - t.onUpdate(() => { - box.visible = opacity.x > 0; - pickVolume.visible = opacity.x > 0; - material.opacity = opacity.x; - outlineMaterial.opacity = opacity.x; - pickMaterial.opacity = opacity.x * 0.5; - }); - t.start(); - }; - - pickVolume.addEventListener("drag", (e) => {this.dragTranslationHandle(e);}); - pickVolume.addEventListener("drop", (e) => {this.dropTranslationHandle(e);}); - } - } - - initializeRotationHandles(){ - let adjust = 0.5; - let torusGeometry = new THREE.TorusGeometry(1, adjust * 0.015, 8, 64, Math.PI / 2); - let outlineGeometry = new THREE.TorusGeometry(1, adjust * 0.04, 8, 64, Math.PI / 2); - let pickGeometry = new THREE.TorusGeometry(1, adjust * 0.1, 6, 4, Math.PI / 2); - - for(let handleName of Object.keys(this.rotationHandles)){ - let handle = this.handles[handleName]; - let node = handle.node; - this.scene.add(node); - - let material = new THREE.MeshBasicMaterial({ - color: handle.color, - opacity: 0.4, - transparent: true}); - - let outlineMaterial = new THREE.MeshBasicMaterial({ - color: 0x000000, - side: THREE.BackSide, - opacity: 0.4, - transparent: true}); - - let pickMaterial = new THREE.MeshNormalMaterial({ - opacity: 0.2, - transparent: true, - visible: this.showPickVolumes - }); - - let box = new THREE.Mesh(torusGeometry, material); - box.name = `${handleName}.handle`; - box.scale.set(20, 20, 20); - box.lookAt(new THREE.Vector3(...handle.alignment)); - node.add(box); - handle.translateNode = box; - - let outline = new THREE.Mesh(outlineGeometry, outlineMaterial); - outline.name = `${handleName}.outline`; - outline.scale.set(1, 1, 1); - outline.renderOrder = 0; - box.add(outline); - - let pickVolume = new THREE.Mesh(pickGeometry, pickMaterial); - pickVolume.name = `${handleName}.pick_volume`; - pickVolume.scale.set(1, 1, 1); - pickVolume.handle = handleName; - box.add(pickVolume); - this.pickVolumes.push(pickVolume); - - node.setOpacity = (target) => { - let opacity = {x: material.opacity}; - let t = new TWEEN.Tween(opacity).to({x: target}, 100); - t.onUpdate(() => { - box.visible = opacity.x > 0; - pickVolume.visible = opacity.x > 0; - material.opacity = opacity.x; - outlineMaterial.opacity = opacity.x; - pickMaterial.opacity = opacity.x * 0.5; - }); - t.start(); - }; - - - //pickVolume.addEventListener("mouseover", (e) => { - // //let a = this.viewer.scene.getActiveCamera().getWorldDirection(new THREE.Vector3()).dot(pickVolume.getWorldDirection(new THREE.Vector3())); - // console.log(pickVolume.getWorldDirection(new THREE.Vector3())); - //}); - - pickVolume.addEventListener("drag", (e) => {this.dragRotationHandle(e);}); - pickVolume.addEventListener("drop", (e) => {this.dropRotationHandle(e);}); - } - } - - dragRotationHandle(e){ - let drag = e.drag; - let handle = this.activeHandle; - let camera = this.viewer.scene.getActiveCamera(); - - if(!handle){ - return - }; - - let localNormal = new THREE.Vector3(...handle.alignment); - let n = new THREE.Vector3(); - n.copy(new THREE.Vector4(...localNormal.toArray(), 0).applyMatrix4(handle.node.matrixWorld)); - n.normalize(); - - if (!drag.intersectionStart){ - - //this.viewer.scene.scene.remove(this.debug); - //this.debug = new THREE.Object3D(); - //this.viewer.scene.scene.add(this.debug); - //Utils.debugSphere(this.debug, drag.location, 3, 0xaaaaaa); - //let debugEnd = drag.location.clone().add(n.clone().multiplyScalar(20)); - //Utils.debugLine(this.debug, drag.location, debugEnd, 0xff0000); - - drag.intersectionStart = drag.location; - drag.objectStart = drag.object.getWorldPosition(new THREE.Vector3()); - drag.handle = handle; - - let plane = new THREE.Plane().setFromNormalAndCoplanarPoint(n, drag.intersectionStart); - - drag.dragPlane = plane; - drag.pivot = drag.intersectionStart; - }else { - handle = drag.handle; - } - - this.dragging = true; - - let mouse = drag.end; - let domElement = this.viewer.renderer.domElement; - let ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight); - - let I = ray.intersectPlane(drag.dragPlane, new THREE.Vector3()); - - if (I) { - let center = this.scene.getWorldPosition(new THREE.Vector3()); - let from = drag.pivot; - let to = I; - - let v1 = from.clone().sub(center).normalize(); - let v2 = to.clone().sub(center).normalize(); - - let angle = Math.acos(v1.dot(v2)); - let sign = Math.sign(v1.cross(v2).dot(n)); - angle = angle * sign; - if (Number.isNaN(angle)) { - return; - } - - let normal = new THREE.Vector3(...handle.alignment); - for (let selection of this.selection) { - selection.rotateOnAxis(normal, angle); - selection.dispatchEvent({ - type: "orientation_changed", - object: selection - }); - } - - drag.pivot = I; - } - } - - dropRotationHandle(e){ - this.dragging = false; - this.setActiveHandle(null); - } - - dragTranslationHandle(e){ - let drag = e.drag; - let handle = this.activeHandle; - let camera = this.viewer.scene.getActiveCamera(); - - if(!drag.intersectionStart && handle){ - drag.intersectionStart = drag.location; - drag.objectStart = drag.object.getWorldPosition(new THREE.Vector3()); - - let start = drag.intersectionStart; - let dir = new THREE.Vector4(...handle.alignment, 0).applyMatrix4(this.scene.matrixWorld); - let end = new THREE.Vector3().addVectors(start, dir); - let line = new THREE.Line3(start.clone(), end.clone()); - drag.line = line; - - let camOnLine = line.closestPointToPoint(camera.position, false, new THREE.Vector3()); - let normal = new THREE.Vector3().subVectors(camera.position, camOnLine); - let plane = new THREE.Plane().setFromNormalAndCoplanarPoint(normal, drag.intersectionStart); - drag.dragPlane = plane; - drag.pivot = drag.intersectionStart; - }else { - handle = drag.handle; - } - - this.dragging = true; - - { - let mouse = drag.end; - let domElement = this.viewer.renderer.domElement; - let ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight); - let I = ray.intersectPlane(drag.dragPlane, new THREE.Vector3()); - - if (I) { - let iOnLine = drag.line.closestPointToPoint(I, false, new THREE.Vector3()); - - let diff = new THREE.Vector3().subVectors(iOnLine, drag.pivot); - - for (let selection of this.selection) { - selection.position.add(diff); - selection.dispatchEvent({ - type: "position_changed", - object: selection - }); - } - - drag.pivot = drag.pivot.add(diff); - } - } - } - - dropTranslationHandle(e){ - this.dragging = false; - this.setActiveHandle(null); - } - - dropScaleHandle(e){ - this.dragging = false; - this.setActiveHandle(null); - } - - dragScaleHandle(e){ - let drag = e.drag; - let handle = this.activeHandle; - let camera = this.viewer.scene.getActiveCamera(); - - if(!drag.intersectionStart){ - drag.intersectionStart = drag.location; - drag.objectStart = drag.object.getWorldPosition(new THREE.Vector3()); - drag.handle = handle; - - let start = drag.intersectionStart; - let dir = new THREE.Vector4(...handle.alignment, 0).applyMatrix4(this.scene.matrixWorld); - let end = new THREE.Vector3().addVectors(start, dir); - let line = new THREE.Line3(start.clone(), end.clone()); - drag.line = line; - - let camOnLine = line.closestPointToPoint(camera.position, false, new THREE.Vector3()); - let normal = new THREE.Vector3().subVectors(camera.position, camOnLine); - let plane = new THREE.Plane().setFromNormalAndCoplanarPoint(normal, drag.intersectionStart); - drag.dragPlane = plane; - drag.pivot = drag.intersectionStart; - - //Utils.debugSphere(viewer.scene.scene, drag.pivot, 0.05); - }else { - handle = drag.handle; - } - - this.dragging = true; - - { - let mouse = drag.end; - let domElement = this.viewer.renderer.domElement; - let ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight); - let I = ray.intersectPlane(drag.dragPlane, new THREE.Vector3()); - - if (I) { - let iOnLine = drag.line.closestPointToPoint(I, false, new THREE.Vector3()); - let direction = handle.alignment.reduce( (a, v) => a + v, 0); - - let toObjectSpace = new THREE.Matrix4().getInverse( this.selection[0].matrixWorld); - let iOnLineOS = iOnLine.clone().applyMatrix4(toObjectSpace); - let pivotOS = drag.pivot.clone().applyMatrix4(toObjectSpace); - let diffOS = new THREE.Vector3().subVectors(iOnLineOS, pivotOS); - let dragDirectionOS = diffOS.clone().normalize(); - if(iOnLine.distanceTo(drag.pivot) === 0){ - dragDirectionOS.set(0, 0, 0); - } - let dragDirection = dragDirectionOS.dot(new THREE.Vector3(...handle.alignment)); - - let diff = new THREE.Vector3().subVectors(iOnLine, drag.pivot); - let diffScale = new THREE.Vector3(...handle.alignment).multiplyScalar(diff.length() * direction * dragDirection); - let diffPosition = diff.clone().multiplyScalar(0.5); - - for (let selection of this.selection) { - selection.scale.add(diffScale); - selection.scale.x = Math.max(0.1, selection.scale.x); - selection.scale.y = Math.max(0.1, selection.scale.y); - selection.scale.z = Math.max(0.1, selection.scale.z); - selection.position.add(diffPosition); - selection.dispatchEvent({ - type: "position_changed", - object: selection - }); - selection.dispatchEvent({ - type: "scale_changed", - object: selection - }); - } - - drag.pivot.copy(iOnLine); - //Utils.debugSphere(viewer.scene.scene, drag.pivot, 0.05); - } - } - } - - setActiveHandle(handle){ - if(this.dragging){ - return; - } - - if(this.activeHandle === handle){ - return; - } - - this.activeHandle = handle; - - if(handle === null){ - for(let handleName of Object.keys(this.handles)){ - let handle = this.handles[handleName]; - handle.node.setOpacity(0); - } - } - - for(let handleName of Object.keys(this.focusHandles)){ - let handle = this.focusHandles[handleName]; - - if(this.activeHandle === handle){ - handle.node.setOpacity(1.0); - }else { - handle.node.setOpacity(0.4); - } - } - - for(let handleName of Object.keys(this.translationHandles)){ - let handle = this.translationHandles[handleName]; - - if(this.activeHandle === handle){ - handle.node.setOpacity(1.0); - }else { - handle.node.setOpacity(0.4); - } - } - - for(let handleName of Object.keys(this.rotationHandles)){ - let handle = this.rotationHandles[handleName]; - - //if(this.activeHandle === handle){ - // handle.node.setOpacity(1.0); - //}else{ - // handle.node.setOpacity(0.4) - //} - - handle.node.setOpacity(0.4); - } - - for(let handleName of Object.keys(this.scaleHandles)){ - let handle = this.scaleHandles[handleName]; - - if(this.activeHandle === handle){ - handle.node.setOpacity(1.0); - - let relatedFocusHandle = this.focusHandles[handle.name.replace("scale", "focus")]; - let relatedFocusNode = relatedFocusHandle.node; - relatedFocusNode.setOpacity(0.4); - - for(let translationHandleName of Object.keys(this.translationHandles)){ - let translationHandle = this.translationHandles[translationHandleName]; - translationHandle.node.setOpacity(0.4); - } - - //let relatedTranslationHandle = this.translationHandles[ - // handle.name.replace("scale", "translation").replace(/[+-]/g, "")]; - //let relatedTranslationNode = relatedTranslationHandle.node; - //relatedTranslationNode.setOpacity(0.4); - - - }else { - handle.node.setOpacity(0.4); - } - } - - - - - - if(handle){ - handle.node.setOpacity(1.0); - } - - - } - - update () { - - if(this.selection.length === 1){ - - this.scene.visible = true; - - this.scene.updateMatrix(); - this.scene.updateMatrixWorld(); - - let selected = this.selection[0]; - let world = selected.matrixWorld; - let camera = this.viewer.scene.getActiveCamera(); - let domElement = this.viewer.renderer.domElement; - let mouse = this.viewer.inputHandler.mouse; - - let center = selected.boundingBox.getCenter(new THREE.Vector3()).clone().applyMatrix4(selected.matrixWorld); - - this.scene.scale.copy(selected.boundingBox.getSize(new THREE.Vector3()).multiply(selected.scale)); - this.scene.position.copy(center); - this.scene.rotation.copy(selected.rotation); - - this.scene.updateMatrixWorld(); - - { - // adjust scale of components - for(let handleName of Object.keys(this.handles)){ - let handle = this.handles[handleName]; - let node = handle.node; - - let handlePos = node.getWorldPosition(new THREE.Vector3()); - let distance = handlePos.distanceTo(camera.position); - let pr = Utils.projectedRadius(1, camera, distance, domElement.clientWidth, domElement.clientHeight); - - let ws = node.parent.getWorldScale(new THREE.Vector3()); - - let s = (7 / pr); - let scale = new THREE.Vector3(s, s, s).divide(ws); - - let rot = new THREE.Matrix4().makeRotationFromEuler(node.rotation); - let rotInv = new THREE.Matrix4().getInverse(rot); - - scale.applyMatrix4(rotInv); - scale.x = Math.abs(scale.x); - scale.y = Math.abs(scale.y); - scale.z = Math.abs(scale.z); - - node.scale.copy(scale); - } - - // adjust rotation handles - if(!this.dragging){ - let tWorld = this.scene.matrixWorld; - let tObject = new THREE.Matrix4().getInverse(tWorld); - let camObjectPos = camera.getWorldPosition(new THREE.Vector3()).applyMatrix4(tObject); - - let x = this.rotationHandles["rotation.x"].node.rotation; - let y = this.rotationHandles["rotation.y"].node.rotation; - let z = this.rotationHandles["rotation.z"].node.rotation; - - x.order = "ZYX"; - y.order = "ZYX"; - - let above = camObjectPos.z > 0; - let below = !above; - let PI_HALF = Math.PI / 2; - - if(above){ - if(camObjectPos.x > 0 && camObjectPos.y > 0){ - x.x = 1 * PI_HALF; - y.y = 3 * PI_HALF; - z.z = 0 * PI_HALF; - }else if(camObjectPos.x < 0 && camObjectPos.y > 0){ - x.x = 1 * PI_HALF; - y.y = 2 * PI_HALF; - z.z = 1 * PI_HALF; - }else if(camObjectPos.x < 0 && camObjectPos.y < 0){ - x.x = 2 * PI_HALF; - y.y = 2 * PI_HALF; - z.z = 2 * PI_HALF; - }else if(camObjectPos.x > 0 && camObjectPos.y < 0){ - x.x = 2 * PI_HALF; - y.y = 3 * PI_HALF; - z.z = 3 * PI_HALF; - } - }else if(below){ - if(camObjectPos.x > 0 && camObjectPos.y > 0){ - x.x = 0 * PI_HALF; - y.y = 0 * PI_HALF; - z.z = 0 * PI_HALF; - }else if(camObjectPos.x < 0 && camObjectPos.y > 0){ - x.x = 0 * PI_HALF; - y.y = 1 * PI_HALF; - z.z = 1 * PI_HALF; - }else if(camObjectPos.x < 0 && camObjectPos.y < 0){ - x.x = 3 * PI_HALF; - y.y = 1 * PI_HALF; - z.z = 2 * PI_HALF; - }else if(camObjectPos.x > 0 && camObjectPos.y < 0){ - x.x = 3 * PI_HALF; - y.y = 0 * PI_HALF; - z.z = 3 * PI_HALF; - } - } - } - - { - let ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight); - let raycaster = new THREE.Raycaster(ray.origin, ray.direction); - let intersects = raycaster.intersectObjects(this.pickVolumes.filter(v => v.visible), true); - - if(intersects.length > 0){ - let I = intersects[0]; - let handleName = I.object.handle; - this.setActiveHandle(this.handles[handleName]); - }else { - this.setActiveHandle(null); - } - } - - // - for(let handleName of Object.keys(this.scaleHandles)){ - let handle = this.handles[handleName]; - let node = handle.node; - let alignment = handle.alignment; - - - - } - } - - - { - let axisScale = (alignment) => { - let transformed = new THREE.Vector3(...alignment).applyMatrix4(selected.matrixWorld); - let distance = transformed.distanceTo(selected.getWorldPosition(new THREE.Vector3())); - - return distance; - }; - - let scale = new THREE.Vector3( - axisScale([1, 0, 0]), - axisScale([0, 1, 0]), - axisScale([0, 0, 1]), - ); - - } - - }else { - this.scene.visible = false; - } - - } - - }; - - class VolumeTool extends EventDispatcher{ - constructor (viewer) { - super(); - - this.viewer = viewer; - this.renderer = viewer.renderer; - - this.addEventListener('start_inserting_volume', e => { - this.viewer.dispatchEvent({ - type: 'cancel_insertions' - }); - }); - - this.scene = new THREE.Scene(); - this.scene.name = 'scene_volume'; - - this.viewer.inputHandler.registerInteractiveScene(this.scene); - - this.onRemove = e => { - this.scene.remove(e.volume); - }; - - this.onAdd = e => { - this.scene.add(e.volume); - }; - - for(let volume of viewer.scene.volumes){ - this.onAdd({volume: volume}); - } - - this.viewer.inputHandler.addEventListener('delete', e => { - let volumes = e.selection.filter(e => (e instanceof Volume)); - volumes.forEach(e => this.viewer.scene.removeVolume(e)); - }); - - viewer.addEventListener("update", this.update.bind(this)); - viewer.addEventListener("render.pass.scene", e => this.render(e)); - viewer.addEventListener("scene_changed", this.onSceneChange.bind(this)); - - viewer.scene.addEventListener('volume_added', this.onAdd); - viewer.scene.addEventListener('volume_removed', this.onRemove); - } - - onSceneChange(e){ - if(e.oldScene){ - e.oldScene.removeEventListeners('volume_added', this.onAdd); - e.oldScene.removeEventListeners('volume_removed', this.onRemove); - } - - e.scene.addEventListener('volume_added', this.onAdd); - e.scene.addEventListener('volume_removed', this.onRemove); - } - - startInsertion (args = {}) { - let volume; - if(args.type){ - volume = new args.type(); - }else { - volume = new BoxVolume(); - } - - volume.clip = args.clip || false; - volume.name = args.name || 'Volume'; - - this.dispatchEvent({ - type: 'start_inserting_volume', - volume: volume - }); - - this.viewer.scene.addVolume(volume); - this.scene.add(volume); - - let cancel = { - callback: null - }; - - let drag = e => { - let camera = this.viewer.scene.getActiveCamera(); - - let I = Utils.getMousePointCloudIntersection( - e.drag.end, - this.viewer.scene.getActiveCamera(), - this.viewer, - this.viewer.scene.pointclouds, - {pickClipped: false}); - - if (I) { - volume.position.copy(I.location); - - let wp = volume.getWorldPosition(new THREE.Vector3()).applyMatrix4(camera.matrixWorldInverse); - // let pp = new THREE.Vector4(wp.x, wp.y, wp.z).applyMatrix4(camera.projectionMatrix); - let w = Math.abs((wp.z / 5)); - volume.scale.set(w, w, w); - } - }; - - let drop = e => { - volume.removeEventListener('drag', drag); - volume.removeEventListener('drop', drop); - - cancel.callback(); - }; - - cancel.callback = e => { - volume.removeEventListener('drag', drag); - volume.removeEventListener('drop', drop); - this.viewer.removeEventListener('cancel_insertions', cancel.callback); - }; - - volume.addEventListener('drag', drag); - volume.addEventListener('drop', drop); - this.viewer.addEventListener('cancel_insertions', cancel.callback); - - this.viewer.inputHandler.startDragging(volume); - - return volume; - } - - update(){ - if (!this.viewer.scene) { - return; - } - - let camera = this.viewer.scene.getActiveCamera(); - let renderAreaSize = this.viewer.renderer.getSize(new THREE.Vector2()); - let clientWidth = renderAreaSize.width; - let clientHeight = renderAreaSize.height; - - let volumes = this.viewer.scene.volumes; - for (let volume of volumes) { - let label = volume.label; - - { - - let distance = label.position.distanceTo(camera.position); - let pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight); - - let scale = (70 / pr); - label.scale.set(scale, scale, scale); - } - - let calculatedVolume = volume.getVolume(); - calculatedVolume = calculatedVolume / Math.pow(this.viewer.lengthUnit.unitspermeter, 3) * Math.pow(this.viewer.lengthUnitDisplay.unitspermeter, 3); //convert to cubic meters then to the cubic display unit - let text = Utils.addCommas(calculatedVolume.toFixed(3)) + ' ' + this.viewer.lengthUnitDisplay.code + '\u00B3'; - label.setText(text); - } - } - - render(params){ - const renderer = this.viewer.renderer; - - const oldTarget = renderer.getRenderTarget(); - - if(params.renderTarget){ - renderer.setRenderTarget(params.renderTarget); - } - renderer.render(this.scene, this.viewer.scene.getActiveCamera()); - renderer.setRenderTarget(oldTarget); - } - - } - - class Compass{ - - constructor(viewer){ - this.viewer = viewer; - - this.visible = false; - this.dom = this.createElement(); - - viewer.addEventListener("update", () => { - const direction = viewer.scene.view.direction.clone(); - direction.z = 0; - direction.normalize(); - - const camera = viewer.scene.getActiveCamera(); - - const p1 = camera.getWorldPosition(new THREE.Vector3()); - const p2 = p1.clone().add(direction); - - const projection = viewer.getProjection(); - const azimuth = Utils.computeAzimuth(p1, p2, projection); - - this.dom.css("transform", `rotateZ(${-azimuth}rad)`); - }); - - this.dom.click( () => { - viewer.setTopView(); - }); - - const renderArea = $(viewer.renderArea); - renderArea.append(this.dom); - - this.setVisible(this.visible); - } - - setVisible(visible){ - this.visible = visible; - - const value = visible ? "" : "none"; - this.dom.css("display", value); - } - - isVisible(){ - return this.visible; - } - - createElement(){ - const style = `style="position: absolute; top: 10px; right: 10px; z-index: 10000; width: 64px;"`; - const img = $(``); - - return img; - } - - }; - - class PotreeRenderer { - - constructor (viewer) { - this.viewer = viewer; - this.renderer = viewer.renderer; - } - - clearTargets(){ - - } - - clear(){ - let {viewer, renderer} = this; - - // render skybox - if(viewer.background === "skybox"){ - renderer.setClearColor(0x000000, 0); - renderer.clear(true, true, false); - }else if(viewer.background === "gradient"){ - renderer.setClearColor(0x000000, 0); - renderer.clear(true, true, false); - }else if(viewer.background === "black"){ - renderer.setClearColor(0x000000, 1); - renderer.clear(true, true, false); - }else if(viewer.background === "white"){ - renderer.setClearColor(0xFFFFFF, 1); - renderer.clear(true, true, false); - }else { - renderer.setClearColor(0x000000, 0); - renderer.clear(true, true, false); - } - } - - render(params){ - let {viewer, renderer} = this; - - const camera = params.camera ? params.camera : viewer.scene.getActiveCamera(); - - viewer.dispatchEvent({type: "render.pass.begin",viewer: viewer}); - - const renderAreaSize = renderer.getSize(new THREE.Vector2()); - const width = params.viewport ? params.viewport[2] : renderAreaSize.x; - const height = params.viewport ? params.viewport[3] : renderAreaSize.y; - - - // render skybox - if(viewer.background === "skybox"){ - viewer.skybox.camera.rotation.copy(viewer.scene.cameraP.rotation); - viewer.skybox.camera.fov = viewer.scene.cameraP.fov; - viewer.skybox.camera.aspect = viewer.scene.cameraP.aspect; - viewer.skybox.camera.updateProjectionMatrix(); - renderer.render(viewer.skybox.scene, viewer.skybox.camera); - }else if(viewer.background === "gradient"){ - renderer.render(viewer.scene.sceneBG, viewer.scene.cameraBG); - } - - for(let pointcloud of this.viewer.scene.pointclouds){ - const {material} = pointcloud; - material.useEDL = false; - //material.updateShaderSource(); - } - - viewer.pRenderer.render(viewer.scene.scenePointCloud, camera, null, { - clipSpheres: viewer.scene.volumes.filter(v => (v instanceof Potree.SphereVolume)), - }); - - // render scene - renderer.render(viewer.scene.scene, camera); - - viewer.dispatchEvent({type: "render.pass.scene",viewer: viewer}); - - viewer.clippingTool.update(); - renderer.render(viewer.clippingTool.sceneMarker, viewer.scene.cameraScreenSpace); //viewer.scene.cameraScreenSpace); - renderer.render(viewer.clippingTool.sceneVolume, camera); - - renderer.render(viewer.controls.sceneControls, camera); - - renderer.clearDepth(); - - viewer.transformationTool.update(); - - viewer.dispatchEvent({type: "render.pass.perspective_overlay",viewer: viewer}); - - renderer.render(viewer.controls.sceneControls, camera); - renderer.render(viewer.clippingTool.sceneVolume, camera); - renderer.render(viewer.transformationTool.scene, camera); - - renderer.setViewport(width - viewer.navigationCube.width, - height - viewer.navigationCube.width, - viewer.navigationCube.width, viewer.navigationCube.width); - renderer.render(viewer.navigationCube, viewer.navigationCube.camera); - renderer.setViewport(0, 0, width, height); - - // renderer.render(viewer.transformationTool.scene, camera); - - // renderer.setViewport(renderer.domElement.clientWidth - viewer.navigationCube.width, - // renderer.domElement.clientHeight - viewer.navigationCube.width, - // viewer.navigationCube.width, viewer.navigationCube.width); - // renderer.render(viewer.navigationCube, viewer.navigationCube.camera); - // renderer.setViewport(0, 0, renderer.domElement.clientWidth, renderer.domElement.clientHeight); - - viewer.dispatchEvent({type: "render.pass.end",viewer: viewer}); - } - - } - - class EDLRenderer{ - constructor(viewer){ - this.viewer = viewer; - - this.edlMaterial = null; - - this.rtRegular; - this.rtEDL; - - this.gl = viewer.renderer.getContext(); - - this.shadowMap = new PointCloudSM(this.viewer.pRenderer); - } - - initEDL(){ - if (this.edlMaterial != null) { - return; - } - - this.edlMaterial = new EyeDomeLightingMaterial(); - this.edlMaterial.depthTest = true; - this.edlMaterial.depthWrite = true; - this.edlMaterial.transparent = true; - - this.rtEDL = new THREE.WebGLRenderTarget(1024, 1024, { - minFilter: THREE.NearestFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat, - type: THREE.FloatType, - depthTexture: new THREE.DepthTexture(undefined, undefined, THREE.UnsignedIntType) - }); - - this.rtRegular = new THREE.WebGLRenderTarget(1024, 1024, { - minFilter: THREE.NearestFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat, - depthTexture: new THREE.DepthTexture(undefined, undefined, THREE.UnsignedIntType) - }); - }; - - resize(width, height){ - if(this.screenshot){ - width = this.screenshot.target.width; - height = this.screenshot.target.height; - } - - this.rtEDL.setSize(width , height); - this.rtRegular.setSize(width , height); - } - - makeScreenshot(camera, size, callback){ - - if(camera === undefined || camera === null){ - camera = this.viewer.scene.getActiveCamera(); - } - - if(size === undefined || size === null){ - size = this.viewer.renderer.getSize(new THREE.Vector2()); - } - - let {width, height} = size; - - //let maxTextureSize = viewer.renderer.capabilities.maxTextureSize; - //if(width * 4 < - width = 2 * width; - height = 2 * height; - - let target = new THREE.WebGLRenderTarget(width, height, { - format: THREE.RGBAFormat, - }); - - this.screenshot = { - target: target - }; - - // HACK? removed because of error, was this important? - //this.viewer.renderer.clearTarget(target, true, true, true); - - this.render(); - - let pixelCount = width * height; - let buffer = new Uint8Array(4 * pixelCount); - - this.viewer.renderer.readRenderTargetPixels(target, 0, 0, width, height, buffer); - - // flip vertically - let bytesPerLine = width * 4; - for(let i = 0; i < parseInt(height / 2); i++){ - let j = height - i - 1; - - let lineI = buffer.slice(i * bytesPerLine, i * bytesPerLine + bytesPerLine); - let lineJ = buffer.slice(j * bytesPerLine, j * bytesPerLine + bytesPerLine); - buffer.set(lineJ, i * bytesPerLine); - buffer.set(lineI, j * bytesPerLine); - } - - this.screenshot.target.dispose(); - delete this.screenshot; - - return { - width: width, - height: height, - buffer: buffer - }; - } - - clearTargets(){ - const viewer = this.viewer; - const {renderer} = viewer; - - const oldTarget = renderer.getRenderTarget(); - - renderer.setRenderTarget( this.rtEDL ); - renderer.clear( true, true, true ); - - renderer.setRenderTarget( this.rtRegular ); - renderer.clear( true, true, false ); - - renderer.setRenderTarget(oldTarget); - } - - clear(){ - this.initEDL(); - const viewer = this.viewer; - - const {renderer, background} = viewer; - - if(background === "skybox"){ - renderer.setClearColor(0x000000, 0); - } else if (background === 'gradient') { - renderer.setClearColor(0x000000, 0); - } else if (background === 'black') { - renderer.setClearColor(0x000000, 1); - } else if (background === 'white') { - renderer.setClearColor(0xFFFFFF, 1); - } else { - renderer.setClearColor(0x000000, 0); - } - - renderer.clear(); - - this.clearTargets(); - } - - renderShadowMap(visiblePointClouds, camera, lights){ - - const {viewer} = this; - - const doShadows = lights.length > 0 && !(lights[0].disableShadowUpdates); - if(doShadows){ - let light = lights[0]; - - this.shadowMap.setLight(light); - - let originalAttributes = new Map(); - for(let pointcloud of viewer.scene.pointclouds){ - // TODO IMPORTANT !!! check - originalAttributes.set(pointcloud, pointcloud.material.activeAttributeName); - pointcloud.material.disableEvents(); - pointcloud.material.activeAttributeName = "depth"; - //pointcloud.material.pointColorType = PointColorType.DEPTH; - } - - this.shadowMap.render(viewer.scene.scenePointCloud, camera); - - for(let pointcloud of visiblePointClouds){ - let originalAttribute = originalAttributes.get(pointcloud); - // TODO IMPORTANT !!! check - pointcloud.material.activeAttributeName = originalAttribute; - pointcloud.material.enableEvents(); - } - - viewer.shadowTestCam.updateMatrixWorld(); - viewer.shadowTestCam.matrixWorldInverse.getInverse(viewer.shadowTestCam.matrixWorld); - viewer.shadowTestCam.updateProjectionMatrix(); - } - - } - - render(params){ - this.initEDL(); - - const viewer = this.viewer; - const camera = params.camera ? params.camera : viewer.scene.getActiveCamera(); - const {width, height} = this.viewer.renderer.getSize(new THREE.Vector2()); - - viewer.dispatchEvent({type: "render.pass.begin",viewer: viewer}); - - this.resize(width, height); - - const visiblePointClouds = viewer.scene.pointclouds.filter(pc => pc.visible); - - if(this.screenshot){ - let oldBudget = Potree.pointBudget; - Potree.pointBudget = Math.max(10 * 1000 * 1000, 2 * oldBudget); - let result = Potree.updatePointClouds( - viewer.scene.pointclouds, - camera, - viewer.renderer); - Potree.pointBudget = oldBudget; - } - - let lights = []; - viewer.scene.scene.traverse(node => { - if(node instanceof THREE.SpotLight){ - lights.push(node); - } - }); - - if(viewer.background === "skybox"){ - viewer.skybox.camera.rotation.copy(viewer.scene.cameraP.rotation); - viewer.skybox.camera.fov = viewer.scene.cameraP.fov; - viewer.skybox.camera.aspect = viewer.scene.cameraP.aspect; - viewer.skybox.camera.updateProjectionMatrix(); - viewer.renderer.render(viewer.skybox.scene, viewer.skybox.camera); - } else if (viewer.background === 'gradient') { - viewer.renderer.render(viewer.scene.sceneBG, viewer.scene.cameraBG); - } - - //TODO adapt to multiple lights - this.renderShadowMap(visiblePointClouds, camera, lights); - - { // COLOR & DEPTH PASS - for (let pointcloud of visiblePointClouds) { - let octreeSize = pointcloud.pcoGeometry.boundingBox.getSize(new THREE.Vector3()).x; - - let material = pointcloud.material; - material.weighted = false; - material.useLogarithmicDepthBuffer = false; - material.useEDL = true; - - material.screenWidth = width; - material.screenHeight = height; - material.uniforms.visibleNodes.value = pointcloud.material.visibleNodesTexture; - material.uniforms.octreeSize.value = octreeSize; - material.spacing = pointcloud.pcoGeometry.spacing * Math.max(pointcloud.scale.x, pointcloud.scale.y, pointcloud.scale.z); - } - - // TODO adapt to multiple lights - viewer.renderer.setRenderTarget(this.rtEDL); - - if(lights.length > 0){ - viewer.pRenderer.render(viewer.scene.scenePointCloud, camera, this.rtEDL, { - clipSpheres: viewer.scene.volumes.filter(v => (v instanceof SphereVolume)), - shadowMaps: [this.shadowMap], - transparent: false, - }); - }else { - viewer.pRenderer.render(viewer.scene.scenePointCloud, camera, this.rtEDL, { - clipSpheres: viewer.scene.volumes.filter(v => (v instanceof SphereVolume)), - transparent: false, - }); - } - - - } - - viewer.dispatchEvent({type: "render.pass.scene", viewer: viewer, renderTarget: this.rtRegular}); - viewer.renderer.setRenderTarget(null); - viewer.renderer.render(viewer.scene.scene, camera); - - { // EDL PASS - - const uniforms = this.edlMaterial.uniforms; - - uniforms.screenWidth.value = width; - uniforms.screenHeight.value = height; - - let proj = camera.projectionMatrix; - let projArray = new Float32Array(16); - projArray.set(proj.elements); - - uniforms.uNear.value = camera.near; - uniforms.uFar.value = camera.far; - uniforms.uEDLColor.value = this.rtEDL.texture; - uniforms.uEDLDepth.value = this.rtEDL.depthTexture; - uniforms.uProj.value = projArray; - - uniforms.edlStrength.value = viewer.edlStrength; - uniforms.radius.value = viewer.edlRadius; - uniforms.opacity.value = viewer.edlOpacity; // HACK - - Utils.screenPass.render(viewer.renderer, this.edlMaterial); - - if(this.screenshot){ - Utils.screenPass.render(viewer.renderer, this.edlMaterial, this.screenshot.target); - } - - } - - viewer.dispatchEvent({type: "render.pass.scene", viewer: viewer}); - - viewer.renderer.clearDepth(); - - viewer.transformationTool.update(); - - viewer.dispatchEvent({type: "render.pass.perspective_overlay",viewer: viewer}); - - viewer.renderer.render(viewer.controls.sceneControls, camera); - viewer.renderer.render(viewer.clippingTool.sceneVolume, camera); - viewer.renderer.render(viewer.transformationTool.scene, camera); - - viewer.dispatchEvent({type: "render.pass.end",viewer: viewer}); - - } - } - - class HQSplatRenderer{ - - constructor(viewer){ - this.viewer = viewer; - - this.depthMaterials = new Map(); - this.attributeMaterials = new Map(); - this.normalizationMaterial = null; - - this.rtDepth = null; - this.rtAttribute = null; - this.gl = viewer.renderer.getContext(); - - this.initialized = false; - } - - init(){ - if (this.initialized) { - return; - } - - this.normalizationMaterial = new NormalizationMaterial(); - this.normalizationMaterial.depthTest = true; - this.normalizationMaterial.depthWrite = true; - this.normalizationMaterial.transparent = true; - - this.normalizationEDLMaterial = new NormalizationEDLMaterial(); - this.normalizationEDLMaterial.depthTest = true; - this.normalizationEDLMaterial.depthWrite = true; - this.normalizationEDLMaterial.transparent = true; - - this.rtDepth = new THREE.WebGLRenderTarget(1024, 1024, { - minFilter: THREE.NearestFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat, - type: THREE.FloatType, - depthTexture: new THREE.DepthTexture(undefined, undefined, THREE.UnsignedIntType) - }); - - this.rtAttribute = new THREE.WebGLRenderTarget(1024, 1024, { - minFilter: THREE.NearestFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat, - type: THREE.FloatType, - depthTexture: this.rtDepth.depthTexture, - }); - - this.initialized = true; - }; - - resize(width, height){ - this.rtDepth.setSize(width, height); - this.rtAttribute.setSize(width, height); - } - - clearTargets(){ - const viewer = this.viewer; - const {renderer} = viewer; - - const oldTarget = renderer.getRenderTarget(); - - renderer.setClearColor(0x000000, 0); - - renderer.setRenderTarget( this.rtDepth ); - renderer.clear( true, true, true ); - - renderer.setRenderTarget( this.rtAttribute ); - renderer.clear( true, true, true ); - - renderer.setRenderTarget(oldTarget); - } - - - clear(){ - this.init(); - - const {renderer, background} = this.viewer; - - if(background === "skybox"){ - renderer.setClearColor(0x000000, 0); - } else if (background === 'gradient') { - renderer.setClearColor(0x000000, 0); - } else if (background === 'black') { - renderer.setClearColor(0x000000, 1); - } else if (background === 'white') { - renderer.setClearColor(0xFFFFFF, 1); - } else { - renderer.setClearColor(0x000000, 0); - } - - renderer.clear(); - - this.clearTargets(); - } - - render (params) { - this.init(); - - const viewer = this.viewer; - const camera = params.camera ? params.camera : viewer.scene.getActiveCamera(); - const {width, height} = this.viewer.renderer.getSize(new THREE.Vector2()); - - viewer.dispatchEvent({type: "render.pass.begin",viewer: viewer}); - - this.resize(width, height); - - const visiblePointClouds = viewer.scene.pointclouds.filter(pc => pc.visible); - const originalMaterials = new Map(); - - for(let pointcloud of visiblePointClouds){ - originalMaterials.set(pointcloud, pointcloud.material); - - if(!this.attributeMaterials.has(pointcloud)){ - let attributeMaterial = new PointCloudMaterial(); - this.attributeMaterials.set(pointcloud, attributeMaterial); - } - - if(!this.depthMaterials.has(pointcloud)){ - let depthMaterial = new PointCloudMaterial(); - - depthMaterial.setDefine("depth_pass", "#define hq_depth_pass"); - depthMaterial.setDefine("use_edl", "#define use_edl"); - - this.depthMaterials.set(pointcloud, depthMaterial); - } - } - - { // DEPTH PASS - for (let pointcloud of visiblePointClouds) { - let octreeSize = pointcloud.pcoGeometry.boundingBox.getSize(new THREE.Vector3()).x; - - let material = originalMaterials.get(pointcloud); - let depthMaterial = this.depthMaterials.get(pointcloud); - - depthMaterial.size = material.size; - depthMaterial.minSize = material.minSize; - depthMaterial.maxSize = material.maxSize; - - depthMaterial.pointSizeType = material.pointSizeType; - depthMaterial.visibleNodesTexture = material.visibleNodesTexture; - depthMaterial.weighted = false; - depthMaterial.screenWidth = width; - depthMaterial.shape = PointShape.CIRCLE; - depthMaterial.screenHeight = height; - depthMaterial.uniforms.visibleNodes.value = material.visibleNodesTexture; - depthMaterial.uniforms.octreeSize.value = octreeSize; - depthMaterial.spacing = pointcloud.pcoGeometry.spacing * Math.max(...pointcloud.scale.toArray()); - depthMaterial.classification = material.classification; - depthMaterial.uniforms.classificationLUT.value.image.data = material.uniforms.classificationLUT.value.image.data; - depthMaterial.classificationTexture.needsUpdate = true; - - depthMaterial.uniforms.uFilterReturnNumberRange.value = material.uniforms.uFilterReturnNumberRange.value; - depthMaterial.uniforms.uFilterNumberOfReturnsRange.value = material.uniforms.uFilterNumberOfReturnsRange.value; - depthMaterial.uniforms.uFilterGPSTimeClipRange.value = material.uniforms.uFilterGPSTimeClipRange.value; - depthMaterial.uniforms.uFilterPointSourceIDClipRange.value = material.uniforms.uFilterPointSourceIDClipRange.value; - - depthMaterial.clipTask = material.clipTask; - depthMaterial.clipMethod = material.clipMethod; - depthMaterial.setClipBoxes(material.clipBoxes); - depthMaterial.setClipPolygons(material.clipPolygons); - - pointcloud.material = depthMaterial; - } - - viewer.pRenderer.render(viewer.scene.scenePointCloud, camera, this.rtDepth, { - clipSpheres: viewer.scene.volumes.filter(v => (v instanceof SphereVolume)), - }); - } - - { // ATTRIBUTE PASS - for (let pointcloud of visiblePointClouds) { - let octreeSize = pointcloud.pcoGeometry.boundingBox.getSize(new THREE.Vector3()).x; - - let material = originalMaterials.get(pointcloud); - let attributeMaterial = this.attributeMaterials.get(pointcloud); - - attributeMaterial.size = material.size; - attributeMaterial.minSize = material.minSize; - attributeMaterial.maxSize = material.maxSize; - - attributeMaterial.pointSizeType = material.pointSizeType; - attributeMaterial.activeAttributeName = material.activeAttributeName; - attributeMaterial.visibleNodesTexture = material.visibleNodesTexture; - attributeMaterial.weighted = true; - attributeMaterial.screenWidth = width; - attributeMaterial.screenHeight = height; - attributeMaterial.shape = PointShape.CIRCLE; - attributeMaterial.uniforms.visibleNodes.value = material.visibleNodesTexture; - attributeMaterial.uniforms.octreeSize.value = octreeSize; - attributeMaterial.spacing = pointcloud.pcoGeometry.spacing * Math.max(...pointcloud.scale.toArray()); - attributeMaterial.classification = material.classification; - attributeMaterial.uniforms.classificationLUT.value.image.data = material.uniforms.classificationLUT.value.image.data; - attributeMaterial.classificationTexture.needsUpdate = true; - - attributeMaterial.uniforms.uFilterReturnNumberRange.value = material.uniforms.uFilterReturnNumberRange.value; - attributeMaterial.uniforms.uFilterNumberOfReturnsRange.value = material.uniforms.uFilterNumberOfReturnsRange.value; - attributeMaterial.uniforms.uFilterGPSTimeClipRange.value = material.uniforms.uFilterGPSTimeClipRange.value; - attributeMaterial.uniforms.uFilterPointSourceIDClipRange.value = material.uniforms.uFilterPointSourceIDClipRange.value; - - attributeMaterial.elevationGradientRepeat = material.elevationGradientRepeat; - attributeMaterial.elevationRange = material.elevationRange; - attributeMaterial.gradient = material.gradient; - attributeMaterial.matcap = material.matcap; - - attributeMaterial.intensityRange = material.intensityRange; - attributeMaterial.intensityGamma = material.intensityGamma; - attributeMaterial.intensityContrast = material.intensityContrast; - attributeMaterial.intensityBrightness = material.intensityBrightness; - - attributeMaterial.rgbGamma = material.rgbGamma; - attributeMaterial.rgbContrast = material.rgbContrast; - attributeMaterial.rgbBrightness = material.rgbBrightness; - - attributeMaterial.weightRGB = material.weightRGB; - attributeMaterial.weightIntensity = material.weightIntensity; - attributeMaterial.weightElevation = material.weightElevation; - attributeMaterial.weightRGB = material.weightRGB; - attributeMaterial.weightClassification = material.weightClassification; - attributeMaterial.weightReturnNumber = material.weightReturnNumber; - attributeMaterial.weightSourceID = material.weightSourceID; - - attributeMaterial.color = material.color; - - attributeMaterial.clipTask = material.clipTask; - attributeMaterial.clipMethod = material.clipMethod; - attributeMaterial.setClipBoxes(material.clipBoxes); - attributeMaterial.setClipPolygons(material.clipPolygons); - - pointcloud.material = attributeMaterial; - } - - let gl = this.gl; - - viewer.renderer.setRenderTarget(null); - viewer.pRenderer.render(viewer.scene.scenePointCloud, camera, this.rtAttribute, { - clipSpheres: viewer.scene.volumes.filter(v => (v instanceof SphereVolume)), - //material: this.attributeMaterial, - blendFunc: [gl.SRC_ALPHA, gl.ONE], - //depthTest: false, - depthWrite: false - }); - } - - for(let [pointcloud, material] of originalMaterials){ - pointcloud.material = material; - } - - viewer.renderer.setRenderTarget(null); - if(viewer.background === "skybox"){ - viewer.renderer.setClearColor(0x000000, 0); - viewer.renderer.clear(); - viewer.skybox.camera.rotation.copy(viewer.scene.cameraP.rotation); - viewer.skybox.camera.fov = viewer.scene.cameraP.fov; - viewer.skybox.camera.aspect = viewer.scene.cameraP.aspect; - viewer.skybox.camera.updateProjectionMatrix(); - viewer.renderer.render(viewer.skybox.scene, viewer.skybox.camera); - } else if (viewer.background === 'gradient') { - viewer.renderer.setClearColor(0x000000, 0); - viewer.renderer.clear(); - viewer.renderer.render(viewer.scene.sceneBG, viewer.scene.cameraBG); - } else if (viewer.background === 'black') { - viewer.renderer.setClearColor(0x000000, 1); - viewer.renderer.clear(); - } else if (viewer.background === 'white') { - viewer.renderer.setClearColor(0xFFFFFF, 1); - viewer.renderer.clear(); - } else { - viewer.renderer.setClearColor(0x000000, 0); - viewer.renderer.clear(); - } - - { // NORMALIZATION PASS - let normalizationMaterial = this.useEDL ? this.normalizationEDLMaterial : this.normalizationMaterial; - - if(this.useEDL){ - normalizationMaterial.uniforms.edlStrength.value = viewer.edlStrength; - normalizationMaterial.uniforms.radius.value = viewer.edlRadius; - normalizationMaterial.uniforms.screenWidth.value = width; - normalizationMaterial.uniforms.screenHeight.value = height; - normalizationMaterial.uniforms.uEDLMap.value = this.rtDepth.texture; - } - - normalizationMaterial.uniforms.uWeightMap.value = this.rtAttribute.texture; - normalizationMaterial.uniforms.uDepthMap.value = this.rtAttribute.depthTexture; - - Utils.screenPass.render(viewer.renderer, normalizationMaterial); - } - - viewer.renderer.render(viewer.scene.scene, camera); - - viewer.dispatchEvent({type: "render.pass.scene", viewer: viewer}); - - viewer.renderer.clearDepth(); - - viewer.transformationTool.update(); - - viewer.dispatchEvent({type: "render.pass.perspective_overlay",viewer: viewer}); - - viewer.renderer.render(viewer.controls.sceneControls, camera); - viewer.renderer.render(viewer.clippingTool.sceneVolume, camera); - viewer.renderer.render(viewer.transformationTool.scene, camera); - - viewer.renderer.setViewport(width - viewer.navigationCube.width, - height - viewer.navigationCube.width, - viewer.navigationCube.width, viewer.navigationCube.width); - viewer.renderer.render(viewer.navigationCube, viewer.navigationCube.camera); - viewer.renderer.setViewport(0, 0, width, height); - - viewer.dispatchEvent({type: "render.pass.end",viewer: viewer}); - - } - - } - - class View{ - constructor () { - this.position = new THREE.Vector3(0, 0, 0); - - this.yaw = Math.PI / 4; - this._pitch = -Math.PI / 4; - this.radius = 1; - - this.maxPitch = Math.PI / 2; - this.minPitch = -Math.PI / 2; - } - - clone () { - let c = new View(); - c.yaw = this.yaw; - c._pitch = this.pitch; - c.radius = this.radius; - c.maxPitch = this.maxPitch; - c.minPitch = this.minPitch; - - return c; - } - - get pitch () { - return this._pitch; - } - - set pitch (angle) { - this._pitch = Math.max(Math.min(angle, this.maxPitch), this.minPitch); - } - - get direction () { - let dir = new THREE.Vector3(0, 1, 0); - - dir.applyAxisAngle(new THREE.Vector3(1, 0, 0), this.pitch); - dir.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw); - - return dir; - } - - set direction (dir) { - - //if(dir.x === dir.y){ - if(dir.x === 0 && dir.y === 0){ - this.pitch = Math.PI / 2 * Math.sign(dir.z); - }else { - let yaw = Math.atan2(dir.y, dir.x) - Math.PI / 2; - let pitch = Math.atan2(dir.z, Math.sqrt(dir.x * dir.x + dir.y * dir.y)); - - this.yaw = yaw; - this.pitch = pitch; - } - - } - - lookAt(t){ - let V; - if(arguments.length === 1){ - V = new THREE.Vector3().subVectors(t, this.position); - }else if(arguments.length === 3){ - V = new THREE.Vector3().subVectors(new THREE.Vector3(...arguments), this.position); - } - - let radius = V.length(); - let dir = V.normalize(); - - this.radius = radius; - this.direction = dir; - } - - getPivot () { - return new THREE.Vector3().addVectors(this.position, this.direction.multiplyScalar(this.radius)); - } - - getSide () { - let side = new THREE.Vector3(1, 0, 0); - side.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw); - - return side; - } - - pan (x, y) { - let dir = new THREE.Vector3(0, 1, 0); - dir.applyAxisAngle(new THREE.Vector3(1, 0, 0), this.pitch); - dir.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw); - - // let side = new THREE.Vector3(1, 0, 0); - // side.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw); - - let side = this.getSide(); - - let up = side.clone().cross(dir); - - let pan = side.multiplyScalar(x).add(up.multiplyScalar(y)); - - this.position = this.position.add(pan); - // this.target = this.target.add(pan); - } - - translate (x, y, z) { - let dir = new THREE.Vector3(0, 1, 0); - dir.applyAxisAngle(new THREE.Vector3(1, 0, 0), this.pitch); - dir.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw); - - let side = new THREE.Vector3(1, 0, 0); - side.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw); - - let up = side.clone().cross(dir); - - let t = side.multiplyScalar(x) - .add(dir.multiplyScalar(y)) - .add(up.multiplyScalar(z)); - - this.position = this.position.add(t); - } - - translateWorld (x, y, z) { - this.position.x += x; - this.position.y += y; - this.position.z += z; - } - - setView(position, target, duration = 0, callback = null){ - - let endPosition = null; - if(position instanceof Array){ - endPosition = new THREE.Vector3(...position); - }else if(position instanceof THREE.Vector3){ - endPosition = position.clone(); - } - - let endTarget = null; - if(target instanceof Array){ - endTarget = new THREE.Vector3(...target); - }else if(target instanceof THREE.Vector3){ - endTarget = target.clone(); - } - - const startPosition = this.position.clone(); - const startTarget = this.getPivot(); - - //const endPosition = position.clone(); - //const endTarget = target.clone(); - - let easing = TWEEN.Easing.Quartic.Out; - - if(duration === 0){ - this.position.copy(endPosition); - this.lookAt(endTarget); - }else { - let value = {x: 0}; - let tween = new TWEEN.Tween(value).to({x: 1}, duration); - tween.easing(easing); - //this.tweens.push(tween); - - tween.onUpdate(() => { - let t = value.x; - - //console.log(t); - - const pos = new THREE.Vector3( - (1 - t) * startPosition.x + t * endPosition.x, - (1 - t) * startPosition.y + t * endPosition.y, - (1 - t) * startPosition.z + t * endPosition.z, - ); - - const target = new THREE.Vector3( - (1 - t) * startTarget.x + t * endTarget.x, - (1 - t) * startTarget.y + t * endTarget.y, - (1 - t) * startTarget.z + t * endTarget.z, - ); - - this.position.copy(pos); - this.lookAt(target); - - }); - - tween.start(); - - tween.onComplete(() => { - if(callback){ - callback(); - } - }); - } - - } - - }; - - class Scene extends EventDispatcher{ - - constructor(){ - super(); - - this.annotations = new Annotation(); - - this.scene = new THREE.Scene(); - this.sceneBG = new THREE.Scene(); - this.scenePointCloud = new THREE.Scene(); - - this.cameraP = new THREE.PerspectiveCamera(this.fov, 1, 0.1, 1000*1000); - this.cameraO = new THREE.OrthographicCamera(-1, 1, 1, -1, 0.1, 1000*1000); - this.cameraVR = new THREE.PerspectiveCamera(); - this.cameraBG = new THREE.Camera(); - this.cameraScreenSpace = new THREE.OrthographicCamera(-1, 1, 1, -1, 0.1, 10); - this.cameraMode = CameraMode.PERSPECTIVE; - this.overrideCamera = null; - this.pointclouds = []; - - this.measurements = []; - this.profiles = []; - this.volumes = []; - this.polygonClipVolumes = []; - this.cameraAnimations = []; - this.orientedImages = []; - this.images360 = []; - this.geopackages = []; - - this.fpControls = null; - this.orbitControls = null; - this.earthControls = null; - this.geoControls = null; - this.deviceControls = null; - this.inputHandler = null; - - this.view = new View(); - - this.directionalLight = null; - - this.initialize(); - } - - estimateHeightAt (position) { - let height = null; - let fromSpacing = Infinity; - - for (let pointcloud of this.pointclouds) { - if (pointcloud.root.geometryNode === undefined) { - continue; - } - - let pHeight = null; - let pFromSpacing = Infinity; - - let lpos = position.clone().sub(pointcloud.position); - lpos.z = 0; - let ray = new THREE.Ray(lpos, new THREE.Vector3(0, 0, 1)); - - let stack = [pointcloud.root]; - while (stack.length > 0) { - let node = stack.pop(); - let box = node.getBoundingBox(); - - let inside = ray.intersectBox(box); - - if (!inside) { - continue; - } - - let h = node.geometryNode.mean.z + - pointcloud.position.z + - node.geometryNode.boundingBox.min.z; - - if (node.geometryNode.spacing <= pFromSpacing) { - pHeight = h; - pFromSpacing = node.geometryNode.spacing; - } - - for (let index of Object.keys(node.children)) { - let child = node.children[index]; - if (child.geometryNode) { - stack.push(node.children[index]); - } - } - } - - if (height === null || pFromSpacing < fromSpacing) { - height = pHeight; - fromSpacing = pFromSpacing; - } - } - - return height; - } - - getBoundingBox(pointclouds = this.pointclouds){ - let box = new THREE.Box3(); - - this.scenePointCloud.updateMatrixWorld(true); - this.referenceFrame.updateMatrixWorld(true); - - for (let pointcloud of pointclouds) { - pointcloud.updateMatrixWorld(true); - - let pointcloudBox = pointcloud.pcoGeometry.tightBoundingBox ? pointcloud.pcoGeometry.tightBoundingBox : pointcloud.boundingBox; - let boxWorld = Utils.computeTransformedBoundingBox(pointcloudBox, pointcloud.matrixWorld); - box.union(boxWorld); - } - - return box; - } - - addPointCloud (pointcloud) { - this.pointclouds.push(pointcloud); - this.scenePointCloud.add(pointcloud); - - this.dispatchEvent({ - type: 'pointcloud_added', - pointcloud: pointcloud - }); - } - - addVolume (volume) { - this.volumes.push(volume); - this.dispatchEvent({ - 'type': 'volume_added', - 'scene': this, - 'volume': volume - }); - } - - addOrientedImages(images){ - this.orientedImages.push(images); - this.scene.add(images.node); - - this.dispatchEvent({ - 'type': 'oriented_images_added', - 'scene': this, - 'images': images - }); - }; - - removeOrientedImages(images){ - let index = this.orientedImages.indexOf(images); - if (index > -1) { - this.orientedImages.splice(index, 1); - - this.dispatchEvent({ - 'type': 'oriented_images_removed', - 'scene': this, - 'images': images - }); - } - }; - - add360Images(images){ - this.images360.push(images); - this.scene.add(images.node); - - this.dispatchEvent({ - 'type': '360_images_added', - 'scene': this, - 'images': images - }); - } - - remove360Images(images){ - let index = this.images360.indexOf(images); - if (index > -1) { - this.images360.splice(index, 1); - - this.dispatchEvent({ - 'type': '360_images_removed', - 'scene': this, - 'images': images - }); - } - } - - addGeopackage(geopackage){ - this.geopackages.push(geopackage); - this.scene.add(geopackage.node); - - this.dispatchEvent({ - 'type': 'geopackage_added', - 'scene': this, - 'geopackage': geopackage - }); - }; - - removeGeopackage(geopackage){ - let index = this.geopackages.indexOf(geopackage); - if (index > -1) { - this.geopackages.splice(index, 1); - - this.dispatchEvent({ - 'type': 'geopackage_removed', - 'scene': this, - 'geopackage': geopackage - }); - } - }; - - removeVolume (volume) { - let index = this.volumes.indexOf(volume); - if (index > -1) { - this.volumes.splice(index, 1); - - this.dispatchEvent({ - 'type': 'volume_removed', - 'scene': this, - 'volume': volume - }); - } - }; - - addCameraAnimation(animation) { - this.cameraAnimations.push(animation); - this.dispatchEvent({ - 'type': 'camera_animation_added', - 'scene': this, - 'animation': animation - }); - }; - - removeCameraAnimation(animation){ - let index = this.cameraAnimations.indexOf(volume); - if (index > -1) { - this.cameraAnimations.splice(index, 1); - - this.dispatchEvent({ - 'type': 'camera_animation_removed', - 'scene': this, - 'animation': animation - }); - } - }; - - addPolygonClipVolume(volume){ - this.polygonClipVolumes.push(volume); - this.dispatchEvent({ - "type": "polygon_clip_volume_added", - "scene": this, - "volume": volume - }); - }; - - removePolygonClipVolume(volume){ - let index = this.polygonClipVolumes.indexOf(volume); - if (index > -1) { - this.polygonClipVolumes.splice(index, 1); - this.dispatchEvent({ - "type": "polygon_clip_volume_removed", - "scene": this, - "volume": volume - }); - } - }; - - addMeasurement(measurement){ - measurement.lengthUnit = this.lengthUnit; - measurement.lengthUnitDisplay = this.lengthUnitDisplay; - this.measurements.push(measurement); - this.dispatchEvent({ - 'type': 'measurement_added', - 'scene': this, - 'measurement': measurement - }); - }; - - removeMeasurement (measurement) { - let index = this.measurements.indexOf(measurement); - if (index > -1) { - this.measurements.splice(index, 1); - this.dispatchEvent({ - 'type': 'measurement_removed', - 'scene': this, - 'measurement': measurement - }); - } - } - - addProfile (profile) { - this.profiles.push(profile); - this.dispatchEvent({ - 'type': 'profile_added', - 'scene': this, - 'profile': profile - }); - } - - removeProfile (profile) { - let index = this.profiles.indexOf(profile); - if (index > -1) { - this.profiles.splice(index, 1); - this.dispatchEvent({ - 'type': 'profile_removed', - 'scene': this, - 'profile': profile - }); - } - } - - removeAllMeasurements () { - while (this.measurements.length > 0) { - this.removeMeasurement(this.measurements[0]); - } - - while (this.profiles.length > 0) { - this.removeProfile(this.profiles[0]); - } - - while (this.volumes.length > 0) { - this.removeVolume(this.volumes[0]); - } - } - - removeAllClipVolumes(){ - let clipVolumes = this.volumes.filter(volume => volume.clip === true); - for(let clipVolume of clipVolumes){ - this.removeVolume(clipVolume); - } - - while(this.polygonClipVolumes.length > 0){ - this.removePolygonClipVolume(this.polygonClipVolumes[0]); - } - } - - getActiveCamera() { - - if(this.overrideCamera){ - return this.overrideCamera; - } - - if(this.cameraMode === CameraMode.PERSPECTIVE){ - return this.cameraP; - }else if(this.cameraMode === CameraMode.ORTHOGRAPHIC){ - return this.cameraO; - }else if(this.cameraMode === CameraMode.VR){ - return this.cameraVR; - } - - return null; - } - - initialize(){ - - this.referenceFrame = new THREE.Object3D(); - this.referenceFrame.matrixAutoUpdate = false; - this.scenePointCloud.add(this.referenceFrame); - - this.cameraP.up.set(0, 0, 1); - this.cameraP.position.set(1000, 1000, 1000); - this.cameraO.up.set(0, 0, 1); - this.cameraO.position.set(1000, 1000, 1000); - //this.camera.rotation.y = -Math.PI / 4; - //this.camera.rotation.x = -Math.PI / 6; - this.cameraScreenSpace.lookAt(new THREE.Vector3(0, 0, 0), new THREE.Vector3(0, 0, -1), new THREE.Vector3(0, 1, 0)); - - this.directionalLight = new THREE.DirectionalLight( 0xffffff, 0.5 ); - this.directionalLight.position.set( 10, 10, 10 ); - this.directionalLight.lookAt( new THREE.Vector3(0, 0, 0)); - this.scenePointCloud.add( this.directionalLight ); - - let light = new THREE.AmbientLight( 0x555555 ); // soft white light - this.scenePointCloud.add( light ); - - { // background - let texture = Utils.createBackgroundTexture(512, 512); - - texture.minFilter = texture.magFilter = THREE.NearestFilter; - texture.minFilter = texture.magFilter = THREE.LinearFilter; - let bg = new THREE.Mesh( - new THREE.PlaneBufferGeometry(2, 2, 0), - new THREE.MeshBasicMaterial({ - map: texture - }) - ); - bg.material.depthTest = false; - bg.material.depthWrite = false; - this.sceneBG.add(bg); - } - - // { // lights - // { - // let light = new THREE.DirectionalLight(0xffffff); - // light.position.set(10, 10, 1); - // light.target.position.set(0, 0, 0); - // this.scene.add(light); - // } - - // { - // let light = new THREE.DirectionalLight(0xffffff); - // light.position.set(-10, 10, 1); - // light.target.position.set(0, 0, 0); - // this.scene.add(light); - // } - - // { - // let light = new THREE.DirectionalLight(0xffffff); - // light.position.set(0, -10, 20); - // light.target.position.set(0, 0, 0); - // this.scene.add(light); - // } - // } - } - - addAnnotation(position, args = {}){ - if(position instanceof Array){ - args.position = new THREE.Vector3().fromArray(position); - } else if (position instanceof THREE.Vector3) { - args.position = position; - } - let annotation = new Annotation(args); - this.annotations.add(annotation); - - return annotation; - } - - getAnnotations () { - return this.annotations; - }; - - removeAnnotation(annotationToRemove) { - this.annotations.remove(annotationToRemove); - } - }; - - // http://epsg.io/ - proj4.defs([ - ['UTM10N', '+proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'], - ['EPSG:6339', '+proj=utm +zone=10 +ellps=GRS80 +units=m +no_defs'], - ['EPSG:6340', '+proj=utm +zone=11 +ellps=GRS80 +units=m +no_defs'], - ['EPSG:6341', '+proj=utm +zone=12 +ellps=GRS80 +units=m +no_defs'], - ['EPSG:6342', '+proj=utm +zone=13 +ellps=GRS80 +units=m +no_defs'], - ['EPSG:6343', '+proj=utm +zone=14 +ellps=GRS80 +units=m +no_defs'], - ['EPSG:6344', '+proj=utm +zone=15 +ellps=GRS80 +units=m +no_defs'], - ['EPSG:6345', '+proj=utm +zone=16 +ellps=GRS80 +units=m +no_defs'], - ['EPSG:6346', '+proj=utm +zone=17 +ellps=GRS80 +units=m +no_defs'], - ['EPSG:6347', '+proj=utm +zone=18 +ellps=GRS80 +units=m +no_defs'], - ['EPSG:6348', '+proj=utm +zone=19 +ellps=GRS80 +units=m +no_defs'], - ['EPSG:26910', '+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '], - ['EPSG:26911', '+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '], - ['EPSG:26912', '+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '], - ['EPSG:26913', '+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '], - ['EPSG:26914', '+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '], - ['EPSG:26915', '+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '], - ['EPSG:26916', '+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '], - ['EPSG:26917', '+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '], - ['EPSG:26918', '+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '], - ['EPSG:26919', '+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '], - ]); - - class MapView{ - - constructor (viewer) { - this.viewer = viewer; - - this.webMapService = 'WMTS'; - this.mapProjectionName = 'EPSG:3857'; - this.mapProjection = proj4.defs(this.mapProjectionName); - this.sceneProjection = null; - - this.extentsLayer = null; - this.cameraLayer = null; - this.toolLayer = null; - this.sourcesLayer = null; - this.sourcesLabelLayer = null; - this.images360Layer = null; - this.enabled = false; - - this.createAnnotationStyle = (text) => { - return [ - new ol.style.Style({ - image: new ol.style.Circle({ - radius: 10, - stroke: new ol.style.Stroke({ - color: [255, 255, 255, 0.5], - width: 2 - }), - fill: new ol.style.Fill({ - color: [0, 0, 0, 0.5] - }) - }) - }) - ]; - }; - - this.createLabelStyle = (text) => { - let style = new ol.style.Style({ - image: new ol.style.Circle({ - radius: 6, - stroke: new ol.style.Stroke({ - color: 'white', - width: 2 - }), - fill: new ol.style.Fill({ - color: 'green' - }) - }), - text: new ol.style.Text({ - font: '12px helvetica,sans-serif', - text: text, - fill: new ol.style.Fill({ - color: '#000' - }), - stroke: new ol.style.Stroke({ - color: '#fff', - width: 2 - }) - }) - }); - - return style; - }; - } - - showSources (show) { - this.sourcesLayer.setVisible(show); - this.sourcesLabelLayer.setVisible(show); - } - - init () { - - if(typeof ol === "undefined"){ - return; - } - - this.elMap = $('#potree_map'); - this.elMap.draggable({ handle: $('#potree_map_header') }); - this.elMap.resizable(); - - this.elTooltip = $(`
        `); - this.elMap.append(this.elTooltip); - - let extentsLayer = this.getExtentsLayer(); - let cameraLayer = this.getCameraLayer(); - this.getToolLayer(); - let sourcesLayer = this.getSourcesLayer(); - this.images360Layer = this.getImages360Layer(); - this.getSourcesLabelLayer(); - this.getAnnotationsLayer(); - - let mousePositionControl = new ol.control.MousePosition({ - coordinateFormat: ol.coordinate.createStringXY(5), - projection: 'EPSG:4326', - undefinedHTML: ' ' - }); - - let _this = this; - let DownloadSelectionControl = function (optOptions) { - let options = optOptions || {}; - - // TOGGLE TILES - let btToggleTiles = document.createElement('button'); - btToggleTiles.innerHTML = 'T'; - btToggleTiles.addEventListener('click', () => { - let visible = sourcesLayer.getVisible(); - _this.showSources(!visible); - }, false); - btToggleTiles.style.float = 'left'; - btToggleTiles.title = 'show / hide tiles'; - - // DOWNLOAD SELECTED TILES - let link = document.createElement('a'); - link.href = '#'; - link.download = 'list.txt'; - link.style.float = 'left'; - - let button = document.createElement('button'); - button.innerHTML = 'D'; - link.appendChild(button); - - let handleDownload = (e) => { - let features = selectedFeatures.getArray(); - - let url = [document.location.protocol, '//', document.location.host, document.location.pathname].join(''); - - if (features.length === 0) { - alert('No tiles were selected. Select area with ctrl + left mouse button!'); - e.preventDefault(); - e.stopImmediatePropagation(); - return false; - } else if (features.length === 1) { - let feature = features[0]; - - if (feature.source) { - let cloudjsurl = feature.pointcloud.pcoGeometry.url; - let sourceurl = new URL(url + '/../' + cloudjsurl + '/../source/' + feature.source.name); - link.href = sourceurl.href; - link.download = feature.source.name; - } - } else { - let content = ''; - for (let i = 0; i < features.length; i++) { - let feature = features[i]; - - if (feature.source) { - let cloudjsurl = feature.pointcloud.pcoGeometry.url; - let sourceurl = new URL(url + '/../' + cloudjsurl + '/../source/' + feature.source.name); - content += sourceurl.href + '\n'; - } - } - - let uri = 'data:application/octet-stream;base64,' + btoa(content); - link.href = uri; - link.download = 'list_of_files.txt'; - } - }; - - button.addEventListener('click', handleDownload, false); - - // assemble container - let element = document.createElement('div'); - element.className = 'ol-unselectable ol-control'; - element.appendChild(link); - element.appendChild(btToggleTiles); - element.style.bottom = '0.5em'; - element.style.left = '0.5em'; - element.title = 'Download file or list of selected tiles. Select tile with left mouse button or area using ctrl + left mouse.'; - - ol.control.Control.call(this, { - element: element, - target: options.target - }); - }; - ol.inherits(DownloadSelectionControl, ol.control.Control); - - this.map = new ol.Map({ - controls: ol.control.defaults({ - attributionOptions: ({ - collapsible: false - }) - }).extend([ - // this.controls.zoomToExtent, - new DownloadSelectionControl(), - mousePositionControl - ]), - layers: [ - new ol.layer.Tile({source: new ol.source.OSM()}), - this.toolLayer, - this.annotationsLayer, - this.sourcesLayer, - this.sourcesLabelLayer, - this.images360Layer, - extentsLayer, - cameraLayer - ], - target: 'potree_map_content', - view: new ol.View({ - center: this.olCenter, - zoom: 9 - }) - }); - - // DRAGBOX / SELECTION - this.dragBoxLayer = new ol.layer.Vector({ - source: new ol.source.Vector({}), - style: new ol.style.Style({ - stroke: new ol.style.Stroke({ - color: 'rgba(0, 0, 255, 1)', - width: 2 - }) - }) - }); - this.map.addLayer(this.dragBoxLayer); - - let select = new ol.interaction.Select(); - this.map.addInteraction(select); - - let selectedFeatures = select.getFeatures(); - - let dragBox = new ol.interaction.DragBox({ - condition: ol.events.condition.platformModifierKeyOnly - }); - - this.map.addInteraction(dragBox); - - // this.map.on('pointermove', evt => { - // let pixel = evt.pixel; - // let feature = this.map.forEachFeatureAtPixel(pixel, function (feature) { - // return feature; - // }); - - // // console.log(feature); - // // this.elTooltip.css("display", feature ? '' : 'none'); - // this.elTooltip.css('display', 'none'); - // if (feature && feature.onHover) { - // feature.onHover(evt); - // // overlay.setPosition(evt.coordinate); - // // tooltip.innerHTML = feature.get('name'); - // } - // }); - - this.map.on('click', evt => { - let pixel = evt.pixel; - let feature = this.map.forEachFeatureAtPixel(pixel, function (feature) { - return feature; - }); - - if (feature && feature.onClick) { - feature.onClick(evt); - } - }); - - dragBox.on('boxend', (e) => { - // features that intersect the box are added to the collection of - // selected features, and their names are displayed in the "info" - // div - let extent = dragBox.getGeometry().getExtent(); - this.getSourcesLayer().getSource().forEachFeatureIntersectingExtent(extent, (feature) => { - selectedFeatures.push(feature); - }); - }); - - // clear selection when drawing a new box and when clicking on the map - dragBox.on('boxstart', (e) => { - selectedFeatures.clear(); - }); - this.map.on('click', () => { - selectedFeatures.clear(); - }); - - this.viewer.addEventListener('scene_changed', e => { - this.setScene(e.scene); - }); - - this.onPointcloudAdded = e => { - this.load(e.pointcloud); - }; - - this.on360ImagesAdded = e => { - this.addImages360(e.images); - }; - - this.onAnnotationAdded = e => { - if (!this.sceneProjection) { - return; - } - - let annotation = e.annotation; - let position = annotation.position; - let mapPos = this.toMap.forward([position.x, position.y]); - let feature = new ol.Feature({ - geometry: new ol.geom.Point(mapPos), - name: annotation.title - }); - feature.setStyle(this.createAnnotationStyle(annotation.title)); - - feature.onHover = evt => { - let coordinates = feature.getGeometry().getCoordinates(); - let p = this.map.getPixelFromCoordinate(coordinates); - - this.elTooltip.html(annotation.title); - this.elTooltip.css('display', ''); - this.elTooltip.css('left', `${p[0]}px`); - this.elTooltip.css('top', `${p[1]}px`); - }; - - feature.onClick = evt => { - annotation.clickTitle(); - }; - - this.getAnnotationsLayer().getSource().addFeature(feature); - }; - - this.setScene(this.viewer.scene); - } - - setScene (scene) { - if (this.scene === scene) { - return; - }; - - if (this.scene) { - this.scene.removeEventListener('pointcloud_added', this.onPointcloudAdded); - this.scene.removeEventListener('360_images_added', this.on360ImagesAdded); - this.scene.annotations.removeEventListener('annotation_added', this.onAnnotationAdded); - } - - this.scene = scene; - - this.scene.addEventListener('pointcloud_added', this.onPointcloudAdded); - this.scene.addEventListener('360_images_added', this.on360ImagesAdded); - this.scene.annotations.addEventListener('annotation_added', this.onAnnotationAdded); - - for (let pointcloud of this.viewer.scene.pointclouds) { - this.load(pointcloud); - } - - this.viewer.scene.annotations.traverseDescendants(annotation => { - this.onAnnotationAdded({annotation: annotation}); - }); - - for(let images of this.viewer.scene.images360){ - this.on360ImagesAdded({images: images}); - } - } - - getExtentsLayer () { - if (this.extentsLayer) { - return this.extentsLayer; - } - - this.gExtent = new ol.geom.LineString([[0, 0], [0, 0]]); - - let feature = new ol.Feature(this.gExtent); - let featureVector = new ol.source.Vector({ - features: [feature] - }); - - this.extentsLayer = new ol.layer.Vector({ - source: featureVector, - style: new ol.style.Style({ - fill: new ol.style.Fill({ - color: 'rgba(255, 255, 255, 0.2)' - }), - stroke: new ol.style.Stroke({ - color: '#0000ff', - width: 2 - }), - image: new ol.style.Circle({ - radius: 3, - fill: new ol.style.Fill({ - color: '#0000ff' - }) - }) - }) - }); - - return this.extentsLayer; - } - - getAnnotationsLayer () { - if (this.annotationsLayer) { - return this.annotationsLayer; - } - - this.annotationsLayer = new ol.layer.Vector({ - source: new ol.source.Vector({ - }), - style: new ol.style.Style({ - fill: new ol.style.Fill({ - color: 'rgba(255, 0, 0, 1)' - }), - stroke: new ol.style.Stroke({ - color: 'rgba(255, 0, 0, 1)', - width: 2 - }) - }) - }); - - return this.annotationsLayer; - } - - getCameraLayer () { - if (this.cameraLayer) { - return this.cameraLayer; - } - - // CAMERA LAYER - this.gCamera = new ol.geom.LineString([[0, 0], [0, 0], [0, 0], [0, 0]]); - let feature = new ol.Feature(this.gCamera); - let featureVector = new ol.source.Vector({ - features: [feature] - }); - - this.cameraLayer = new ol.layer.Vector({ - source: featureVector, - style: new ol.style.Style({ - stroke: new ol.style.Stroke({ - color: '#0000ff', - width: 2 - }) - }) - }); - - return this.cameraLayer; - } - - getToolLayer () { - if (this.toolLayer) { - return this.toolLayer; - } - - this.toolLayer = new ol.layer.Vector({ - source: new ol.source.Vector({ - }), - style: new ol.style.Style({ - fill: new ol.style.Fill({ - color: 'rgba(255, 0, 0, 1)' - }), - stroke: new ol.style.Stroke({ - color: 'rgba(255, 0, 0, 1)', - width: 2 - }) - }) - }); - - return this.toolLayer; - } - - getImages360Layer(){ - if(this.images360Layer){ - return this.images360Layer; - } - - let style = new ol.style.Style({ - image: new ol.style.Circle({ - radius: 4, - stroke: new ol.style.Stroke({ - color: [255, 0, 0, 1], - width: 2 - }), - fill: new ol.style.Fill({ - color: [255, 100, 100, 1] - }) - }) - }); - - let layer = new ol.layer.Vector({ - source: new ol.source.Vector({}), - style: style, - }); - - this.images360Layer = layer; - - return this.images360Layer; - } - - getSourcesLayer () { - if (this.sourcesLayer) { - return this.sourcesLayer; - } - - this.sourcesLayer = new ol.layer.Vector({ - source: new ol.source.Vector({}), - style: new ol.style.Style({ - fill: new ol.style.Fill({ - color: 'rgba(0, 0, 150, 0.1)' - }), - stroke: new ol.style.Stroke({ - color: 'rgba(0, 0, 150, 1)', - width: 1 - }) - }) - }); - - return this.sourcesLayer; - } - - getSourcesLabelLayer () { - if (this.sourcesLabelLayer) { - return this.sourcesLabelLayer; - } - - this.sourcesLabelLayer = new ol.layer.Vector({ - source: new ol.source.Vector({ - }), - style: new ol.style.Style({ - fill: new ol.style.Fill({ - color: 'rgba(255, 0, 0, 0.1)' - }), - stroke: new ol.style.Stroke({ - color: 'rgba(255, 0, 0, 1)', - width: 2 - }) - }), - minResolution: 0.01, - maxResolution: 20 - }); - - return this.sourcesLabelLayer; - } - - setSceneProjection (sceneProjection) { - this.sceneProjection = sceneProjection; - this.toMap = proj4(this.sceneProjection, this.mapProjection); - this.toScene = proj4(this.mapProjection, this.sceneProjection); - }; - - getMapExtent () { - let bb = this.viewer.getBoundingBox(); - - let bottomLeft = this.toMap.forward([bb.min.x, bb.min.y]); - let bottomRight = this.toMap.forward([bb.max.x, bb.min.y]); - let topRight = this.toMap.forward([bb.max.x, bb.max.y]); - let topLeft = this.toMap.forward([bb.min.x, bb.max.y]); - - let extent = { - bottomLeft: bottomLeft, - bottomRight: bottomRight, - topRight: topRight, - topLeft: topLeft - }; - - return extent; - }; - - getMapCenter () { - let mapExtent = this.getMapExtent(); - - let mapCenter = [ - (mapExtent.bottomLeft[0] + mapExtent.topRight[0]) / 2, - (mapExtent.bottomLeft[1] + mapExtent.topRight[1]) / 2 - ]; - - return mapCenter; - }; - - updateToolDrawings () { - this.toolLayer.getSource().clear(); - - let profiles = this.viewer.profileTool.profiles; - for (let i = 0; i < profiles.length; i++) { - let profile = profiles[i]; - let coordinates = []; - - for (let j = 0; j < profile.points.length; j++) { - let point = profile.points[j]; - let pointMap = this.toMap.forward([point.x, point.y]); - coordinates.push(pointMap); - } - - let line = new ol.geom.LineString(coordinates); - let feature = new ol.Feature(line); - this.toolLayer.getSource().addFeature(feature); - } - - let measurements = this.viewer.measuringTool.measurements; - for (let i = 0; i < measurements.length; i++) { - let measurement = measurements[i]; - let coordinates = []; - - for (let j = 0; j < measurement.points.length; j++) { - let point = measurement.points[j].position; - let pointMap = this.toMap.forward([point.x, point.y]); - coordinates.push(pointMap); - } - - if (measurement.closed && measurement.points.length > 0) { - coordinates.push(coordinates[0]); - } - - let line = new ol.geom.LineString(coordinates); - let feature = new ol.Feature(line); - this.toolLayer.getSource().addFeature(feature); - } - } - - addImages360(images){ - let transform = this.toMap.forward; - let layer = this.getImages360Layer(); - - for(let image of images.images){ - - let p = transform([image.position[0], image.position[1]]); - - let feature = new ol.Feature({ - 'geometry': new ol.geom.Point(p), - }); - - feature.onClick = () => { - images.focus(image); - }; - - layer.getSource().addFeature(feature); - } - } - - async load (pointcloud) { - if (!pointcloud) { - return; - } - - if (!pointcloud.projection) { - return; - } - - if (!this.sceneProjection) { - try { - this.setSceneProjection(pointcloud.projection); - }catch (e) { - console.log('Failed projection:', e); - - if (pointcloud.fallbackProjection) { - try { - console.log('Trying fallback projection...'); - this.setSceneProjection(pointcloud.fallbackProjection); - console.log('Set projection from fallback'); - }catch (e) { - console.log('Failed fallback projection:', e); - return; - } - }else { - return; - }; - } - } - - let mapExtent = this.getMapExtent(); - let mapCenter = this.getMapCenter(); - - let view = this.map.getView(); - view.setCenter(mapCenter); - - this.gExtent.setCoordinates([ - mapExtent.bottomLeft, - mapExtent.bottomRight, - mapExtent.topRight, - mapExtent.topLeft, - mapExtent.bottomLeft - ]); - - view.fit(this.gExtent, [300, 300], { - constrainResolution: false - }); - - if (pointcloud.pcoGeometry.type == 'ept'){ - return; - } - - let url = `${pointcloud.pcoGeometry.url}/../sources.json`; - //let response = await fetch(url); - - fetch(url).then(async (response) => { - let data = await response.json(); - - let sources = data.sources; - - for (let i = 0; i < sources.length; i++) { - let source = sources[i]; - let name = source.name; - let bounds = source.bounds; - - let mapBounds = { - min: this.toMap.forward([bounds.min[0], bounds.min[1]]), - max: this.toMap.forward([bounds.max[0], bounds.max[1]]) - }; - let mapCenter = [ - (mapBounds.min[0] + mapBounds.max[0]) / 2, - (mapBounds.min[1] + mapBounds.max[1]) / 2 - ]; - - let p1 = this.toMap.forward([bounds.min[0], bounds.min[1]]); - let p2 = this.toMap.forward([bounds.max[0], bounds.min[1]]); - let p3 = this.toMap.forward([bounds.max[0], bounds.max[1]]); - let p4 = this.toMap.forward([bounds.min[0], bounds.max[1]]); - - // let feature = new ol.Feature({ - // 'geometry': new ol.geom.LineString([p1, p2, p3, p4, p1]) - // }); - let feature = new ol.Feature({ - 'geometry': new ol.geom.Polygon([[p1, p2, p3, p4, p1]]) - }); - feature.source = source; - feature.pointcloud = pointcloud; - this.getSourcesLayer().getSource().addFeature(feature); - - feature = new ol.Feature({ - geometry: new ol.geom.Point(mapCenter), - name: name - }); - feature.setStyle(this.createLabelStyle(name)); - this.sourcesLabelLayer.getSource().addFeature(feature); - } - }).catch(() => { - - }); - - } - - toggle () { - if (this.elMap.is(':visible')) { - this.elMap.css('display', 'none'); - this.enabled = false; - } else { - this.elMap.css('display', 'block'); - this.enabled = true; - } - } - - update (delta) { - if (!this.sceneProjection) { - return; - } - - let pm = $('#potree_map'); - - if (!this.enabled) { - return; - } - - // resize - let mapSize = this.map.getSize(); - let resized = (pm.width() !== mapSize[0] || pm.height() !== mapSize[1]); - if (resized) { - this.map.updateSize(); - } - - // - let camera = this.viewer.scene.getActiveCamera(); - - let scale = this.map.getView().getResolution(); - let campos = camera.position; - let camdir = camera.getWorldDirection(new THREE.Vector3()); - let sceneLookAt = camdir.clone().multiplyScalar(30 * scale).add(campos); - let geoPos = camera.position; - let geoLookAt = sceneLookAt; - let mapPos = new THREE.Vector2().fromArray(this.toMap.forward([geoPos.x, geoPos.y])); - let mapLookAt = new THREE.Vector2().fromArray(this.toMap.forward([geoLookAt.x, geoLookAt.y])); - let mapDir = new THREE.Vector2().subVectors(mapLookAt, mapPos).normalize(); - - mapLookAt = mapPos.clone().add(mapDir.clone().multiplyScalar(30 * scale)); - let mapLength = mapPos.distanceTo(mapLookAt); - let mapSide = new THREE.Vector2(-mapDir.y, mapDir.x); - - let p1 = mapPos.toArray(); - let p2 = mapLookAt.clone().sub(mapSide.clone().multiplyScalar(0.3 * mapLength)).toArray(); - let p3 = mapLookAt.clone().add(mapSide.clone().multiplyScalar(0.3 * mapLength)).toArray(); - - this.gCamera.setCoordinates([p1, p2, p3, p1]); - } - - get sourcesVisible () { - return this.getSourcesLayer().getVisible(); - } - - set sourcesVisible (value) { - this.getSourcesLayer().setVisible(value); - } - - } - - class CSVExporter { - static toString (points) { - let string = ''; - - let attributes = Object.keys(points.data) - .filter(a => a !== 'normal') - .sort((a, b) => { - if (a === 'position') return -1; - if (b === 'position') return 1; - if (a === 'rgba') return -1; - if (b === 'rgba') return 1; - }); - - let headerValues = []; - for (let attribute of attributes) { - let itemSize = points.data[attribute].length / points.numPoints; - - if (attribute === 'position') { - headerValues = headerValues.concat(['x', 'y', 'z']); - } else if (attribute === 'rgba') { - headerValues = headerValues.concat(['r', 'g', 'b', 'a']); - } else if (itemSize > 1) { - for (let i = 0; i < itemSize; i++) { - headerValues.push(`${attribute}_${i}`); - } - } else { - headerValues.push(attribute); - } - } - string = headerValues.join(', ') + '\n'; - - for (let i = 0; i < points.numPoints; i++) { - let values = []; - - for (let attribute of attributes) { - let itemSize = points.data[attribute].length / points.numPoints; - let value = points.data[attribute] - .subarray(itemSize * i, itemSize * i + itemSize) - .join(', '); - values.push(value); - } - - string += values.join(', ') + '\n'; - } - - return string; - } - }; - - class LASExporter { - static toLAS (points) { - // TODO Unused: let string = ''; - - let boundingBox = points.boundingBox; - let offset = boundingBox.min.clone(); - let diagonal = boundingBox.min.distanceTo(boundingBox.max); - let scale = new THREE.Vector3(0.001, 0.001, 0.001); - if (diagonal > 1000 * 1000) { - scale = new THREE.Vector3(0.01, 0.01, 0.01); - } else { - scale = new THREE.Vector3(0.001, 0.001, 0.001); - } - - let setString = function (string, offset, buffer) { - let view = new Uint8Array(buffer); - - for (let i = 0; i < string.length; i++) { - let charCode = string.charCodeAt(i); - view[offset + i] = charCode; - } - }; - - let buffer = new ArrayBuffer(227 + 28 * points.numPoints); - let view = new DataView(buffer); - let u8View = new Uint8Array(buffer); - // let u16View = new Uint16Array(buffer); - - setString('LASF', 0, buffer); - u8View[24] = 1; - u8View[25] = 2; - - // system identifier o:26 l:32 - - // generating software o:58 l:32 - setString('Potree 1.7', 58, buffer); - - // file creation day of year o:90 l:2 - // file creation year o:92 l:2 - - // header size o:94 l:2 - view.setUint16(94, 227, true); - - // offset to point data o:96 l:4 - view.setUint32(96, 227, true); - - // number of letiable length records o:100 l:4 - - // point data record format 104 1 - u8View[104] = 2; - - // point data record length 105 2 - view.setUint16(105, 28, true); - - // number of point records 107 4 - view.setUint32(107, points.numPoints, true); - - // number of points by return 111 20 - - // x scale factor 131 8 - view.setFloat64(131, scale.x, true); - - // y scale factor 139 8 - view.setFloat64(139, scale.y, true); - - // z scale factor 147 8 - view.setFloat64(147, scale.z, true); - - // x offset 155 8 - view.setFloat64(155, offset.x, true); - - // y offset 163 8 - view.setFloat64(163, offset.y, true); - - // z offset 171 8 - view.setFloat64(171, offset.z, true); - - // max x 179 8 - view.setFloat64(179, boundingBox.max.x, true); - - // min x 187 8 - view.setFloat64(187, boundingBox.min.x, true); - - // max y 195 8 - view.setFloat64(195, boundingBox.max.y, true); - - // min y 203 8 - view.setFloat64(203, boundingBox.min.y, true); - - // max z 211 8 - view.setFloat64(211, boundingBox.max.z, true); - - // min z 219 8 - view.setFloat64(219, boundingBox.min.z, true); - - let boffset = 227; - for (let i = 0; i < points.numPoints; i++) { - - let px = points.data.position[3 * i + 0]; - let py = points.data.position[3 * i + 1]; - let pz = points.data.position[3 * i + 2]; - - let ux = parseInt((px - offset.x) / scale.x); - let uy = parseInt((py - offset.y) / scale.y); - let uz = parseInt((pz - offset.z) / scale.z); - - view.setUint32(boffset + 0, ux, true); - view.setUint32(boffset + 4, uy, true); - view.setUint32(boffset + 8, uz, true); - - if (points.data.intensity) { - view.setUint16(boffset + 12, (points.data.intensity[i]), true); - } - - let rt = 0; - if (points.data.returnNumber) { - rt += points.data.returnNumber[i]; - } - if (points.data.numberOfReturns) { - rt += (points.data.numberOfReturns[i] << 3); - } - view.setUint8(boffset + 14, rt); - - if (points.data.classification) { - view.setUint8(boffset + 15, points.data.classification[i]); - } - // scan angle rank - // user data - // point source id - if (points.data.pointSourceID) { - view.setUint16(boffset + 18, points.data.pointSourceID[i]); - } - - if (points.data.rgba) { - let rgba = points.data.rgba; - view.setUint16(boffset + 20, (rgba[4 * i + 0] * 255), true); - view.setUint16(boffset + 22, (rgba[4 * i + 1] * 255), true); - view.setUint16(boffset + 24, (rgba[4 * i + 2] * 255), true); - } - - boffset += 28; - } - - return buffer; - } - - } - - function copyMaterial(source, target){ - - for(let name of Object.keys(target.uniforms)){ - target.uniforms[name].value = source.uniforms[name].value; - } - - target.gradientTexture = source.gradientTexture; - target.visibleNodesTexture = source.visibleNodesTexture; - target.classificationTexture = source.classificationTexture; - target.matcapTexture = source.matcapTexture; - - target.activeAttributeName = source.activeAttributeName; - target.ranges = source.ranges; - - //target.updateShaderSource(); - } - - - class Batch{ - - constructor(geometry, material){ - this.geometry = geometry; - this.material = material; - - this.sceneNode = new THREE.Points(geometry, material); - - this.geometryNode = { - estimatedSpacing: 1.0, - geometry: geometry, - }; - } - - getLevel(){ - return 0; - } - - } - - class ProfileFakeOctree extends PointCloudTree{ - - constructor(octree){ - super(); - - this.trueOctree = octree; - this.pcoGeometry = octree.pcoGeometry; - this.points = []; - this.visibleNodes = []; - - //this.material = this.trueOctree.material; - this.material = new PointCloudMaterial(); - //this.material.copy(this.trueOctree.material); - copyMaterial(this.trueOctree.material, this.material); - this.material.pointSizeType = PointSizeType.FIXED; - - this.batchSize = 100 * 1000; - this.currentBatch = null; - } - - getAttribute(name){ - return this.trueOctree.getAttribute(name); - } - - dispose(){ - for(let node of this.visibleNodes){ - node.geometry.dispose(); - } - - this.visibleNodes = []; - this.currentBatch = null; - this.points = []; - } - - addPoints(data){ - // since each call to addPoints can deliver very very few points, - // we're going to batch them into larger buffers for efficiency. - - if(this.currentBatch === null){ - this.currentBatch = this.createNewBatch(data); - } - - this.points.push(data); - - - let updateRange = { - start: this.currentBatch.geometry.drawRange.count, - count: 0 - }; - let projectedBox = new THREE.Box3(); - - let truePos = new THREE.Vector3(); - - for(let i = 0; i < data.numPoints; i++){ - - if(updateRange.start + updateRange.count >= this.batchSize){ - // current batch full, start new batch - - for(let key of Object.keys(this.currentBatch.geometry.attributes)){ - let attribute = this.currentBatch.geometry.attributes[key]; - attribute.updateRange.offset = updateRange.start; - attribute.updateRange.count = updateRange.count; - attribute.needsUpdate = true; - } - - this.currentBatch.geometry.computeBoundingBox(); - this.currentBatch.geometry.computeBoundingSphere(); - - this.currentBatch = this.createNewBatch(); - updateRange = { - start: 0, - count: 0 - }; - } - - truePos.set( - data.data.position[3 * i + 0] + this.trueOctree.position.x, - data.data.position[3 * i + 1] + this.trueOctree.position.y, - data.data.position[3 * i + 2] + this.trueOctree.position.z, - ); - - let x = data.data.mileage[i]; - let y = 0; - let z = truePos.z; - - projectedBox.expandByPoint(new THREE.Vector3(x, y, z)); - - let index = updateRange.start + updateRange.count; - let geometry = this.currentBatch.geometry; - - for(let attributeName of Object.keys(data.data)){ - let source = data.data[attributeName]; - let target = geometry.attributes[attributeName]; - let numElements = target.itemSize; - - for(let item = 0; item < numElements; item++){ - target.array[numElements * index + item] = source[numElements * i + item]; - } - } - - { - let position = geometry.attributes.position; - - position.array[3 * index + 0] = x; - position.array[3 * index + 1] = y; - position.array[3 * index + 2] = z; - } - - updateRange.count++; - this.currentBatch.geometry.drawRange.count++; - } - - for(let key of Object.keys(this.currentBatch.geometry.attributes)){ - let attribute = this.currentBatch.geometry.attributes[key]; - attribute.updateRange.offset = updateRange.start; - attribute.updateRange.count = updateRange.count; - attribute.needsUpdate = true; - } - - data.projectedBox = projectedBox; - - this.projectedBox = this.points.reduce( (a, i) => a.union(i.projectedBox), new THREE.Box3()); - } - - createNewBatch(data){ - let geometry = new THREE.BufferGeometry(); - - // create new batches with batch_size elements of the same type as the attribute - for(let attributeName of Object.keys(data.data)){ - let buffer = data.data[attributeName]; - let numElements = buffer.length / data.numPoints; // 3 for pos, 4 for col, 1 for scalars - let constructor = buffer.constructor; - let normalized = false; - - if(this.trueOctree.root.sceneNode){ - if(this.trueOctree.root.sceneNode.geometry.attributes[attributeName]){ - normalized = this.trueOctree.root.sceneNode.geometry.attributes[attributeName].normalized; - } - } - - - let batchBuffer = new constructor(numElements * this.batchSize); - - let bufferAttribute = new THREE.BufferAttribute(batchBuffer, numElements, normalized); - bufferAttribute.potree = { - range: [0, 1], - }; - - geometry.addAttribute(attributeName, bufferAttribute); - } - - geometry.drawRange.start = 0; - geometry.drawRange.count = 0; - - let batch = new Batch(geometry, this.material); - - this.visibleNodes.push(batch); - - return batch; - } - - computeVisibilityTextureData(){ - let data = new Uint8Array(this.visibleNodes.length * 4); - let offsets = new Map(); - - for(let i = 0; i < this.visibleNodes.length; i++){ - let node = this.visibleNodes[i]; - - offsets[node] = i; - } - - - return { - data: data, - offsets: offsets, - }; - } - - } - - class ProfileWindow extends EventDispatcher { - constructor (viewer) { - super(); - - this.viewer = viewer; - this.elRoot = $('#profile_window'); - this.renderArea = this.elRoot.find('#profileCanvasContainer'); - this.svg = d3.select('svg#profileSVG'); - this.mouseIsDown = false; - - this.projectedBox = new THREE.Box3(); - this.pointclouds = new Map(); - this.numPoints = 0; - this.lastAddPointsTimestamp = undefined; - - this.mouse = new THREE.Vector2(0, 0); - this.scale = new THREE.Vector3(1, 1, 1); - - this.autoFitEnabled = true; // completely disable/enable - this.autoFit = false; // internal - - let cwIcon = `${exports.resourcePath}/icons/arrow_cw.svg`; - $('#potree_profile_rotate_cw').attr('src', cwIcon); - - let ccwIcon = `${exports.resourcePath}/icons/arrow_ccw.svg`; - $('#potree_profile_rotate_ccw').attr('src', ccwIcon); - - let forwardIcon = `${exports.resourcePath}/icons/arrow_up.svg`; - $('#potree_profile_move_forward').attr('src', forwardIcon); - - let backwardIcon = `${exports.resourcePath}/icons/arrow_down.svg`; - $('#potree_profile_move_backward').attr('src', backwardIcon); - - let csvIcon = `${exports.resourcePath}/icons/file_csv_2d.svg`; - $('#potree_download_csv_icon').attr('src', csvIcon); - - let lasIcon = `${exports.resourcePath}/icons/file_las_3d.svg`; - $('#potree_download_las_icon').attr('src', lasIcon); - - let closeIcon = `${exports.resourcePath}/icons/close.svg`; - $('#closeProfileContainer').attr("src", closeIcon); - - this.initTHREE(); - this.initSVG(); - this.initListeners(); - - this.pRenderer = new Renderer(this.renderer); - - this.elRoot.i18n(); - } - - initListeners () { - $(window).resize(() => { - if (this.enabled) { - this.render(); - } - }); - - this.renderArea.mousedown(e => { - this.mouseIsDown = true; - }); - - this.renderArea.mouseup(e => { - this.mouseIsDown = false; - }); - - let viewerPickSphereSizeHandler = () => { - let camera = this.viewer.scene.getActiveCamera(); - let domElement = this.viewer.renderer.domElement; - let distance = this.viewerPickSphere.position.distanceTo(camera.position); - let pr = Utils.projectedRadius(1, camera, distance, domElement.clientWidth, domElement.clientHeight); - let scale = (10 / pr); - this.viewerPickSphere.scale.set(scale, scale, scale); - }; - - this.renderArea.mousemove(e => { - if (this.pointclouds.size === 0) { - return; - } - - let rect = this.renderArea[0].getBoundingClientRect(); - let x = e.clientX - rect.left; - let y = e.clientY - rect.top; - - let newMouse = new THREE.Vector2(x, y); - - if (this.mouseIsDown) { - // DRAG - this.autoFit = false; - this.lastDrag = new Date().getTime(); - - let cPos = [this.scaleX.invert(this.mouse.x), this.scaleY.invert(this.mouse.y)]; - let ncPos = [this.scaleX.invert(newMouse.x), this.scaleY.invert(newMouse.y)]; - - this.camera.position.x -= ncPos[0] - cPos[0]; - this.camera.position.z -= ncPos[1] - cPos[1]; - - this.render(); - } else if (this.pointclouds.size > 0) { - // FIND HOVERED POINT - let radius = Math.abs(this.scaleX.invert(0) - this.scaleX.invert(40)); - let mileage = this.scaleX.invert(newMouse.x); - let elevation = this.scaleY.invert(newMouse.y); - - let closest = this.selectPoint(mileage, elevation, radius); - - if (closest) { - let point = closest.point; - - let position = new Float64Array([ - point.position[0] + closest.pointcloud.position.x, - point.position[1] + closest.pointcloud.position.y, - point.position[2] + closest.pointcloud.position.z - ]); - - this.elRoot.find('#profileSelectionProperties').fadeIn(200); - this.pickSphere.visible = true; - this.pickSphere.scale.set(0.5 * radius, 0.5 * radius, 0.5 * radius); - this.pickSphere.position.set(point.mileage, 0, position[2]); - - this.viewerPickSphere.position.set(...position); - - if(!this.viewer.scene.scene.children.includes(this.viewerPickSphere)){ - this.viewer.scene.scene.add(this.viewerPickSphere); - if(!this.viewer.hasEventListener("update", viewerPickSphereSizeHandler)){ - this.viewer.addEventListener("update", viewerPickSphereSizeHandler); - } - } - - - let info = this.elRoot.find('#profileSelectionProperties'); - let html = ''; - - for (let attributeName of Object.keys(point)) { - - let value = point[attributeName]; - let attribute = closest.pointcloud.getAttribute(attributeName); - - let transform = value => value; - if(attribute && attribute.type.size > 4){ - let range = attribute.initialRange; - let scale = 1 / (range[1] - range[0]); - let offset = range[0]; - transform = value => value / scale + offset; - } - - - - - - if (attributeName === 'position') { - let values = [...position].map(v => Utils.addCommas(v.toFixed(3))); - html += ` - - - - - - - - - - - - `; - } else if (attributeName === 'rgba') { - html += ` - - - - `; - } else if (attributeName === 'normal') { - continue; - } else if (attributeName === 'mileage') { - html += ` - - - - `; - } else { - html += ` - - - - `; - } - } - html += '
        x${values[0]}
        y${values[1]}
        z${values[2]}
        ${attributeName}${value.join(', ')}
        ${attributeName}${value.toFixed(3)}
        ${attributeName}${transform(value)}
        '; - info.html(html); - - this.selectedPoint = point; - } else { - // this.pickSphere.visible = false; - // this.selectedPoint = null; - - this.viewer.scene.scene.add(this.viewerPickSphere); - - let index = this.viewer.scene.scene.children.indexOf(this.viewerPickSphere); - if(index >= 0){ - this.viewer.scene.scene.children.splice(index, 1); - } - this.viewer.removeEventListener("update", viewerPickSphereSizeHandler); - - - } - this.render(); - } - - this.mouse.copy(newMouse); - }); - - let onWheel = e => { - this.autoFit = false; - - let delta = 0; - if (e.wheelDelta !== undefined) { // WebKit / Opera / Explorer 9 - delta = e.wheelDelta; - } else if (e.detail !== undefined) { // Firefox - delta = -e.detail; - } - - let ndelta = Math.sign(delta); - - let cPos = [this.scaleX.invert(this.mouse.x), this.scaleY.invert(this.mouse.y)]; - - if (ndelta > 0) { - // + 10% - this.scale.multiplyScalar(1.1); - } else { - // - 10% - this.scale.multiplyScalar(100 / 110); - } - - this.updateScales(); - let ncPos = [this.scaleX.invert(this.mouse.x), this.scaleY.invert(this.mouse.y)]; - - this.camera.position.x -= ncPos[0] - cPos[0]; - this.camera.position.z -= ncPos[1] - cPos[1]; - - this.render(); - this.updateScales(); - }; - $(this.renderArea)[0].addEventListener('mousewheel', onWheel, false); - $(this.renderArea)[0].addEventListener('DOMMouseScroll', onWheel, false); // Firefox - - $('#closeProfileContainer').click(() => { - this.hide(); - }); - - let getProfilePoints = () => { - let points = new Points(); - - for(let [pointcloud, entry] of this.pointclouds){ - for(let pointSet of entry.points){ - - let originPos = pointSet.data.position; - let trueElevationPosition = new Float32Array(originPos); - for(let i = 0; i < pointSet.numPoints; i++){ - trueElevationPosition[3 * i + 2] += pointcloud.position.z; - } - - pointSet.data.position = trueElevationPosition; - points.add(pointSet); - pointSet.data.position = originPos; - } - } - - return points; - }; - - $('#potree_download_csv_icon').click(() => { - - let points = getProfilePoints(); - - let string = CSVExporter.toString(points); - - let blob = new Blob([string], {type: "text/string"}); - $('#potree_download_profile_ortho_link').attr('href', URL.createObjectURL(blob)); - }); - - $('#potree_download_las_icon').click(() => { - - let points = getProfilePoints(); - - let buffer = LASExporter.toLAS(points); - - let blob = new Blob([buffer], {type: "application/octet-binary"}); - $('#potree_download_profile_link').attr('href', URL.createObjectURL(blob)); - }); - } - - selectPoint (mileage, elevation, radius) { - let closest = { - distance: Infinity, - pointcloud: null, - points: null, - index: null - }; - - let pointBox = new THREE.Box2( - new THREE.Vector2(mileage - radius, elevation - radius), - new THREE.Vector2(mileage + radius, elevation + radius)); - - let numTested = 0; - let numSkipped = 0; - let numTestedPoints = 0; - let numSkippedPoints = 0; - - for (let [pointcloud, entry] of this.pointclouds) { - for(let points of entry.points){ - - let collisionBox = new THREE.Box2( - new THREE.Vector2(points.projectedBox.min.x, points.projectedBox.min.z), - new THREE.Vector2(points.projectedBox.max.x, points.projectedBox.max.z) - ); - - let intersects = collisionBox.intersectsBox(pointBox); - - if(!intersects){ - numSkipped++; - numSkippedPoints += points.numPoints; - continue; - } - - numTested++; - numTestedPoints += points.numPoints; - - for (let i = 0; i < points.numPoints; i++) { - - let m = points.data.mileage[i] - mileage; - let e = points.data.position[3 * i + 2] - elevation + pointcloud.position.z; - let r = Math.sqrt(m * m + e * e); - - const withinDistance = r < radius && r < closest.distance; - let unfilteredClass = true; - - if(points.data.classification){ - const classification = pointcloud.material.classification; - - const pointClassID = points.data.classification[i]; - const pointClassValue = classification[pointClassID]; - - if(pointClassValue && (!pointClassValue.visible || pointClassValue.color.w === 0)){ - unfilteredClass = false; - } - } - - if (withinDistance && unfilteredClass) { - closest = { - distance: r, - pointcloud: pointcloud, - points: points, - index: i - }; - } - } - } - } - - - //console.log(`nodes: ${numTested}, ${numSkipped} || points: ${numTestedPoints}, ${numSkippedPoints}`); - - if (closest.distance < Infinity) { - let points = closest.points; - - let point = {}; - - let attributes = Object.keys(points.data); - for (let attribute of attributes) { - let attributeData = points.data[attribute]; - let itemSize = attributeData.length / points.numPoints; - let value = attributeData.subarray(itemSize * closest.index, itemSize * closest.index + itemSize); - - if (value.length === 1) { - point[attribute] = value[0]; - } else { - point[attribute] = value; - } - } - - closest.point = point; - - return closest; - } else { - return null; - } - } - - initTHREE () { - this.renderer = new THREE.WebGLRenderer({alpha: true, premultipliedAlpha: false}); - this.renderer.setClearColor(0x000000, 0); - this.renderer.setSize(10, 10); - this.renderer.autoClear = false; - this.renderArea.append($(this.renderer.domElement)); - this.renderer.domElement.tabIndex = '2222'; - $(this.renderer.domElement).css('width', '100%'); - $(this.renderer.domElement).css('height', '100%'); - - - { - let gl = this.renderer.getContext(); - - let extVAO = gl.getExtension('OES_vertex_array_object'); - - if(!extVAO){ - throw new Error("OES_vertex_array_object extension not supported"); - } - - gl.createVertexArray = extVAO.createVertexArrayOES.bind(extVAO); - gl.bindVertexArray = extVAO.bindVertexArrayOES.bind(extVAO); - } - - this.camera = new THREE.OrthographicCamera(-1000, 1000, 1000, -1000, -1000, 1000); - this.camera.up.set(0, 0, 1); - this.camera.rotation.order = "ZXY"; - this.camera.rotation.x = Math.PI / 2.0; - - - this.scene = new THREE.Scene(); - this.profileScene = new THREE.Scene(); - - let sg = new THREE.SphereGeometry(1, 16, 16); - let sm = new THREE.MeshNormalMaterial(); - this.pickSphere = new THREE.Mesh(sg, sm); - this.scene.add(this.pickSphere); - - { - const sg = new THREE.SphereGeometry(2); - const sm = new THREE.MeshNormalMaterial(); - const s = new THREE.Mesh(sg, sm); - - s.position.set(589530.450, 231398.860, 769.735); - - this.scene.add(s); - } - - this.viewerPickSphere = new THREE.Mesh(sg, sm); - } - - initSVG () { - let width = this.renderArea[0].clientWidth; - let height = this.renderArea[0].clientHeight; - let marginLeft = this.renderArea[0].offsetLeft; - - this.svg.selectAll('*').remove(); - - this.scaleX = d3.scale.linear() - .domain([this.camera.left + this.camera.position.x, this.camera.right + this.camera.position.x]) - .range([0, width]); - this.scaleY = d3.scale.linear() - .domain([this.camera.bottom + this.camera.position.z, this.camera.top + this.camera.position.z]) - .range([height, 0]); - - this.xAxis = d3.svg.axis() - .scale(this.scaleX) - .orient('bottom') - .innerTickSize(-height) - .outerTickSize(1) - .tickPadding(10) - .ticks(width / 50); - - this.yAxis = d3.svg.axis() - .scale(this.scaleY) - .orient('left') - .innerTickSize(-width) - .outerTickSize(1) - .tickPadding(10) - .ticks(height / 20); - - this.elXAxis = this.svg.append('g') - .attr('class', 'x axis') - .attr('transform', `translate(${marginLeft}, ${height})`) - .call(this.xAxis); - - this.elYAxis = this.svg.append('g') - .attr('class', 'y axis') - .attr('transform', `translate(${marginLeft}, 0)`) - .call(this.yAxis); - } - - addPoints (pointcloud, points) { - - if(points.numPoints === 0){ - return; - } - - let entry = this.pointclouds.get(pointcloud); - if(!entry){ - entry = new ProfileFakeOctree(pointcloud); - this.pointclouds.set(pointcloud, entry); - this.profileScene.add(entry); - - let materialChanged = () => { - this.render(); - }; - - materialChanged(); - - pointcloud.material.addEventListener('material_property_changed', materialChanged); - this.addEventListener("on_reset_once", () => { - pointcloud.material.removeEventListener('material_property_changed', materialChanged); - }); - } - - entry.addPoints(points); - this.projectedBox.union(entry.projectedBox); - - if (this.autoFit && this.autoFitEnabled) { - let width = this.renderArea[0].clientWidth; - let height = this.renderArea[0].clientHeight; - - let size = this.projectedBox.getSize(new THREE.Vector3()); - - let sx = width / size.x; - let sy = height / size.z; - let scale = Math.min(sx, sy); - - let center = this.projectedBox.getCenter(new THREE.Vector3()); - this.scale.set(scale, scale, 1); - this.camera.position.copy(center); - - //console.log("camera: ", this.camera.position.toArray().join(", ")); - } - - //console.log(entry); - - this.render(); - - let numPoints = 0; - for (let [key, value] of this.pointclouds.entries()) { - numPoints += value.points.reduce( (a, i) => a + i.numPoints, 0); - } - $(`#profile_num_points`).html(Utils.addCommas(numPoints)); - - } - - reset () { - this.lastReset = new Date().getTime(); - - this.dispatchEvent({type: "on_reset_once"}); - this.removeEventListeners("on_reset_once"); - - this.autoFit = true; - this.projectedBox = new THREE.Box3(); - - for(let [key, entry] of this.pointclouds){ - entry.dispose(); - } - - this.pointclouds.clear(); - this.mouseIsDown = false; - this.mouse.set(0, 0); - - if(this.autoFitEnabled){ - this.scale.set(1, 1, 1); - } - this.pickSphere.visible = false; - - this.elRoot.find('#profileSelectionProperties').hide(); - - this.render(); - } - - show () { - this.elRoot.fadeIn(); - this.enabled = true; - } - - hide () { - this.elRoot.fadeOut(); - this.enabled = false; - } - - updateScales () { - - let width = this.renderArea[0].clientWidth; - let height = this.renderArea[0].clientHeight; - - let left = (-width / 2) / this.scale.x; - let right = (+width / 2) / this.scale.x; - let top = (+height / 2) / this.scale.y; - let bottom = (-height / 2) / this.scale.y; - - this.camera.left = left; - this.camera.right = right; - this.camera.top = top; - this.camera.bottom = bottom; - this.camera.updateProjectionMatrix(); - - this.scaleX.domain([this.camera.left + this.camera.position.x, this.camera.right + this.camera.position.x]) - .range([0, width]); - this.scaleY.domain([this.camera.bottom + this.camera.position.z, this.camera.top + this.camera.position.z]) - .range([height, 0]); - - let marginLeft = this.renderArea[0].offsetLeft; - - this.xAxis.scale(this.scaleX) - .orient('bottom') - .innerTickSize(-height) - .outerTickSize(1) - .tickPadding(10) - .ticks(width / 50); - this.yAxis.scale(this.scaleY) - .orient('left') - .innerTickSize(-width) - .outerTickSize(1) - .tickPadding(10) - .ticks(height / 20); - - - this.elXAxis - .attr('transform', `translate(${marginLeft}, ${height})`) - .call(this.xAxis); - this.elYAxis - .attr('transform', `translate(${marginLeft}, 0)`) - .call(this.yAxis); - } - - requestScaleUpdate(){ - - let threshold = 100; - let allowUpdate = ((this.lastReset === undefined) || (this.lastScaleUpdate === undefined)) - || ((new Date().getTime() - this.lastReset) > threshold && (new Date().getTime() - this.lastScaleUpdate) > threshold); - - if(allowUpdate){ - - this.updateScales(); - - this.lastScaleUpdate = new Date().getTime(); - - - - this.scaleUpdatePending = false; - }else if(!this.scaleUpdatePending) { - setTimeout(this.requestScaleUpdate.bind(this), 100); - this.scaleUpdatePending = true; - } - - } - - render () { - let width = this.renderArea[0].clientWidth; - let height = this.renderArea[0].clientHeight; - - let {renderer, pRenderer, camera, profileScene, scene} = this; - let {scaleX, pickSphere} = this; - - renderer.setSize(width, height); - - renderer.setClearColor(0x000000, 0); - renderer.clear(true, true, false); - - for(let pointcloud of this.pointclouds.keys()){ - let source = pointcloud.material; - let target = this.pointclouds.get(pointcloud).material; - - copyMaterial(source, target); - target.size = 2; - } - - pRenderer.render(profileScene, camera, null); - - let radius = Math.abs(scaleX.invert(0) - scaleX.invert(5)); - - if (radius === 0) { - pickSphere.visible = false; - } else { - pickSphere.scale.set(radius, radius, radius); - pickSphere.visible = true; - } - - renderer.render(scene, camera); - - this.requestScaleUpdate(); - } - }; - - class ProfileWindowController { - constructor (viewer) { - this.viewer = viewer; - this.profileWindow = viewer.profileWindow; - this.profile = null; - this.numPoints = 0; - this.threshold = 60 * 1000; - this.rotateAmount = 10; - - this.scheduledRecomputeTime = null; - - this.enabled = true; - - this.requests = []; - - this._recompute = () => { this.recompute(); }; - - this.viewer.addEventListener("scene_changed", e => { - e.oldScene.removeEventListener("pointcloud_added", this._recompute); - e.scene.addEventListener("pointcloud_added", this._recompute); - }); - this.viewer.scene.addEventListener("pointcloud_added", this._recompute); - - $("#potree_profile_rotate_amount").val(parseInt(this.rotateAmount)); - $("#potree_profile_rotate_amount").on("input", (e) => { - const str = $("#potree_profile_rotate_amount").val(); - - if(!isNaN(str)){ - const value = parseFloat(str); - this.rotateAmount = value; - $("#potree_profile_rotate_amount").css("background-color", ""); - }else { - $("#potree_profile_rotate_amount").css("background-color", "#ff9999"); - } - - }); - - const rotate = (radians) => { - const profile = this.profile; - const points = profile.points; - const start = points[0]; - const end = points[points.length - 1]; - const center = start.clone().add(end).multiplyScalar(0.5); - - const mMoveOrigin = new THREE.Matrix4().makeTranslation(-center.x, -center.y, -center.z); - const mRotate = new THREE.Matrix4().makeRotationZ(radians); - const mMoveBack = new THREE.Matrix4().makeTranslation(center.x, center.y, center.z); - //const transform = mMoveOrigin.multiply(mRotate).multiply(mMoveBack); - const transform = mMoveBack.multiply(mRotate).multiply(mMoveOrigin); - - const rotatedPoints = points.map( point => point.clone().applyMatrix4(transform) ); - - this.profileWindow.autoFitEnabled = false; - - for(let i = 0; i < points.length; i++){ - profile.setPosition(i, rotatedPoints[i]); - } - }; - - $("#potree_profile_rotate_cw").click( () => { - const radians = THREE.Math.degToRad(this.rotateAmount); - rotate(-radians); - }); - - $("#potree_profile_rotate_ccw").click( () => { - const radians = THREE.Math.degToRad(this.rotateAmount); - rotate(radians); - }); - - $("#potree_profile_move_forward").click( () => { - const profile = this.profile; - const points = profile.points; - const start = points[0]; - const end = points[points.length - 1]; - - const dir = end.clone().sub(start).normalize(); - const up = new THREE.Vector3(0, 0, 1); - const forward = up.cross(dir); - const move = forward.clone().multiplyScalar(profile.width / 2); - - this.profileWindow.autoFitEnabled = false; - - for(let i = 0; i < points.length; i++){ - profile.setPosition(i, points[i].clone().add(move)); - } - }); - - $("#potree_profile_move_backward").click( () => { - const profile = this.profile; - const points = profile.points; - const start = points[0]; - const end = points[points.length - 1]; - - const dir = end.clone().sub(start).normalize(); - const up = new THREE.Vector3(0, 0, 1); - const forward = up.cross(dir); - const move = forward.clone().multiplyScalar(-profile.width / 2); - - this.profileWindow.autoFitEnabled = false; - - for(let i = 0; i < points.length; i++){ - profile.setPosition(i, points[i].clone().add(move)); - } - }); - } - - setProfile (profile) { - if (this.profile !== null && this.profile !== profile) { - this.profile.removeEventListener('marker_moved', this._recompute); - this.profile.removeEventListener('marker_added', this._recompute); - this.profile.removeEventListener('marker_removed', this._recompute); - this.profile.removeEventListener('width_changed', this._recompute); - } - - this.profile = profile; - - { - this.profile.addEventListener('marker_moved', this._recompute); - this.profile.addEventListener('marker_added', this._recompute); - this.profile.addEventListener('marker_removed', this._recompute); - this.profile.addEventListener('width_changed', this._recompute); - } - - this.recompute(); - } - - reset () { - this.profileWindow.reset(); - - this.numPoints = 0; - - if (this.profile) { - for (let request of this.requests) { - request.cancel(); - } - } - } - - progressHandler (pointcloud, progress) { - for (let segment of progress.segments) { - this.profileWindow.addPoints(pointcloud, segment.points); - this.numPoints += segment.points.numPoints; - } - } - - cancel () { - for (let request of this.requests) { - request.cancel(); - // request.finishLevelThenCancel(); - } - - this.requests = []; - }; - - finishLevelThenCancel(){ - for (let request of this.requests) { - request.finishLevelThenCancel(); - } - - this.requests = []; - } - - recompute () { - if (!this.profile) { - return; - } - - if (this.scheduledRecomputeTime !== null && this.scheduledRecomputeTime > new Date().getTime()) { - return; - } else { - this.scheduledRecomputeTime = new Date().getTime() + 100; - } - this.scheduledRecomputeTime = null; - - this.reset(); - - for (let pointcloud of this.viewer.scene.pointclouds.filter(p => p.visible)) { - let request = pointcloud.getPointsInProfile(this.profile, null, { - 'onProgress': (event) => { - if (!this.enabled) { - return; - } - - this.progressHandler(pointcloud, event.points); - - if (this.numPoints > this.threshold) { - this.finishLevelThenCancel(); - } - }, - 'onFinish': (event) => { - if (!this.enabled) { - - } - }, - 'onCancel': () => { - if (!this.enabled) { - - } - } - }); - - this.requests.push(request); - } - } - }; - - /** - * - * @author sigeom sa / http://sigeom.ch - * @author Ioda-Net Sàrl / https://www.ioda-net.ch/ - * @author Markus Schütz / http://potree.org - * - */ - - class GeoJSONExporter{ - - static measurementToFeatures (measurement) { - let coords = measurement.points.map(e => e.position.toArray()); - - let features = []; - - if (coords.length === 1) { - let feature = { - type: 'Feature', - geometry: { - type: 'Point', - coordinates: coords[0] - }, - properties: { - name: measurement.name - } - }; - features.push(feature); - } else if (coords.length > 1 && !measurement.closed) { - let object = { - 'type': 'Feature', - 'geometry': { - 'type': 'LineString', - 'coordinates': coords - }, - 'properties': { - name: measurement.name - } - }; - - features.push(object); - } else if (coords.length > 1 && measurement.closed) { - let object = { - 'type': 'Feature', - 'geometry': { - 'type': 'Polygon', - 'coordinates': [[...coords, coords[0]]] - }, - 'properties': { - name: measurement.name - } - }; - features.push(object); - } - - if (measurement.showDistances) { - measurement.edgeLabels.forEach((label) => { - let labelPoint = { - type: 'Feature', - geometry: { - type: 'Point', - coordinates: label.position.toArray() - }, - properties: { - distance: label.text - } - }; - features.push(labelPoint); - }); - } - - if (measurement.showArea) { - let point = measurement.areaLabel.position; - let labelArea = { - type: 'Feature', - geometry: { - type: 'Point', - coordinates: point.toArray() - }, - properties: { - area: measurement.areaLabel.text - } - }; - features.push(labelArea); - } - - return features; - } - - static toString (measurements) { - if (!(measurements instanceof Array)) { - measurements = [measurements]; - } - - measurements = measurements.filter(m => m instanceof Measure); - - let features = []; - for (let measure of measurements) { - let f = GeoJSONExporter.measurementToFeatures(measure); - - features = features.concat(f); - } - - let geojson = { - 'type': 'FeatureCollection', - 'features': features - }; - - return JSON.stringify(geojson, null, '\t'); - } - - } - - /** - * - * @author sigeom sa / http://sigeom.ch - * @author Ioda-Net Sàrl / https://www.ioda-net.ch/ - * @author Markus Schuetz / http://potree.org - * - */ - - class DXFExporter { - - static measurementPointSection (measurement) { - let position = measurement.points[0].position; - - if (!position) { - return ''; - } - - let dxfSection = `0 -CIRCLE -8 -layer_point -10 -${position.x} -20 -${position.y} -30 -${position.z} -40 -1.0 -`; - - return dxfSection; - } - - static measurementPolylineSection (measurement) { - // bit code for polygons/polylines: - // https://www.autodesk.com/techpubs/autocad/acad2000/dxf/polyline_dxf_06.htm - let geomCode = 8; - if (measurement.closed) { - geomCode += 1; - } - - let dxfSection = `0 -POLYLINE -8 -layer_polyline -62 -1 -66 -1 -10 -0.0 -20 -0.0 -30 -0.0 -70 -${geomCode} -`; - - let xMax = 0.0; - let yMax = 0.0; - let zMax = 0.0; - for (let point of measurement.points) { - point = point.position; - xMax = Math.max(xMax, point.x); - yMax = Math.max(yMax, point.y); - zMax = Math.max(zMax, point.z); - - dxfSection += `0 -VERTEX -8 -0 -10 -${point.x} -20 -${point.y} -30 -${point.z} -70 -32 -`; - } - dxfSection += `0 -SEQEND -`; - - return dxfSection; - } - - static measurementSection (measurement) { - // if(measurement.points.length <= 1){ - // return ""; - // } - - if (measurement.points.length === 0) { - return ''; - } else if (measurement.points.length === 1) { - return DXFExporter.measurementPointSection(measurement); - } else if (measurement.points.length >= 2) { - return DXFExporter.measurementPolylineSection(measurement); - } - } - - static toString(measurements){ - if (!(measurements instanceof Array)) { - measurements = [measurements]; - } - measurements = measurements.filter(m => m instanceof Measure); - - let points = measurements.filter(m => (m instanceof Measure)) - .map(m => m.points) - .reduce((a, v) => a.concat(v)) - .map(p => p.position); - - let min = new THREE.Vector3(Infinity, Infinity, Infinity); - let max = new THREE.Vector3(-Infinity, -Infinity, -Infinity); - for (let point of points) { - min.min(point); - max.max(point); - } - - let dxfHeader = `999 -DXF created from potree -0 -SECTION -2 -HEADER -9 -$ACADVER -1 -AC1006 -9 -$INSBASE -10 -0.0 -20 -0.0 -30 -0.0 -9 -$EXTMIN -10 -${min.x} -20 -${min.y} -30 -${min.z} -9 -$EXTMAX -10 -${max.x} -20 -${max.y} -30 -${max.z} -0 -ENDSEC -`; - - let dxfBody = `0 -SECTION -2 -ENTITIES -`; - - for (let measurement of measurements) { - dxfBody += DXFExporter.measurementSection(measurement); - } - - dxfBody += `0 -ENDSEC -`; - - let dxf = dxfHeader + dxfBody + '0\nEOF'; - - return dxf; - } - - } - - class MeasurePanel{ - - constructor(viewer, measurement, propertiesPanel){ - this.viewer = viewer; - this.measurement = measurement; - this.propertiesPanel = propertiesPanel; - - this._update = () => { this.update(); }; - } - - createCoordinatesTable(points){ - let table = $(` - - - - - - - -
        xyz
        - `); - - let copyIconPath = Potree.resourcePath + '/icons/copy.svg'; - - for (let point of points) { - let x = Utils.addCommas(point.x.toFixed(3)); - let y = Utils.addCommas(point.y.toFixed(3)); - let z = Utils.addCommas(point.z.toFixed(3)); - - let row = $(` - - ${x} - ${y} - ${z} - - - - - `); - - this.elCopy = row.find("img[name=copy]"); - this.elCopy.click( () => { - let msg = point.toArray().map(c => c.toFixed(3)).join(", "); - Utils.clipboardCopy(msg); - - this.viewer.postMessage( - `Copied value to clipboard:
        '${msg}'`, - {duration: 3000}); - }); - - table.append(row); - } - - return table; - }; - - createAttributesTable(){ - let elTable = $('
        '); - - let point = this.measurement.points[0]; - - for(let attributeName of Object.keys(point)){ - if(attributeName === "position"){ - - }else if(attributeName === "rgba"){ - let color = point.rgba; - let text = color.join(', '); - - elTable.append($(` - - rgb - ${text} - - `)); - }else { - let value = point[attributeName]; - let text = value.join(', '); - - elTable.append($(` - - ${attributeName} - ${text} - - `)); - } - } - - return elTable; - } - - update(){ - - } - }; - - class DistancePanel extends MeasurePanel{ - constructor(viewer, measurement, propertiesPanel){ - super(viewer, measurement, propertiesPanel); - - let removeIconPath = Potree.resourcePath + '/icons/remove.svg'; - this.elContent = $(` -
        - -
        -
        - - -
        - - - - - -
        -
        - `); - - this.elRemove = this.elContent.find("img[name=remove]"); - this.elRemove.click( () => { - this.viewer.scene.removeMeasurement(measurement); - }); - - this.elMakeProfile = this.elContent.find("input[name=make_profile]"); - this.elMakeProfile.click( () => { - //measurement.points; - const profile = new Profile(); - - profile.name = measurement.name; - profile.width = measurement.getTotalDistance() / 50; - - for(const point of measurement.points){ - profile.addMarker(point.position.clone()); - } - - this.viewer.scene.addProfile(profile); - - }); - - this.propertiesPanel.addVolatileListener(measurement, "marker_added", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_removed", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_moved", this._update); - - this.update(); - } - - update(){ - let elCoordiantesContainer = this.elContent.find('.coordinates_table_container'); - elCoordiantesContainer.empty(); - elCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position))); - - let positions = this.measurement.points.map(p => p.position); - let distances = []; - for (let i = 0; i < positions.length - 1; i++) { - let d = positions[i].distanceTo(positions[i + 1]); - distances.push(d.toFixed(3)); - } - - let totalDistance = this.measurement.getTotalDistance().toFixed(3); - let elDistanceTable = this.elContent.find(`#distances_table`); - elDistanceTable.empty(); - - for (let i = 0; i < distances.length; i++) { - let label = (i === 0) ? 'Distances: ' : ''; - let distance = distances[i]; - let elDistance = $(` - - ${label} - ${distance} - `); - elDistanceTable.append(elDistance); - } - - let elTotal = $(` - - Total: ${totalDistance} - `); - elDistanceTable.append(elTotal); - } - }; - - class PointPanel extends MeasurePanel{ - constructor(viewer, measurement, propertiesPanel){ - super(viewer, measurement, propertiesPanel); - - let removeIconPath = Potree.resourcePath + '/icons/remove.svg'; - this.elContent = $(` -
        - -
        - - - -
        - - - -
        -
        - `); - - this.elRemove = this.elContent.find("img[name=remove]"); - this.elRemove.click( () => { - this.viewer.scene.removeMeasurement(measurement); - }); - - this.propertiesPanel.addVolatileListener(measurement, "marker_added", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_removed", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_moved", this._update); - - this.update(); - } - - update(){ - let elCoordiantesContainer = this.elContent.find('.coordinates_table_container'); - elCoordiantesContainer.empty(); - elCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position))); - - let elAttributesContainer = this.elContent.find('.attributes_table_container'); - elAttributesContainer.empty(); - elAttributesContainer.append(this.createAttributesTable()); - } - }; - - class AreaPanel extends MeasurePanel{ - constructor(viewer, measurement, propertiesPanel){ - super(viewer, measurement, propertiesPanel); - - let removeIconPath = Potree.resourcePath + '/icons/remove.svg'; - this.elContent = $(` -
        - -
        - Area: - - - -
        - - - -
        -
        - `); - - this.elRemove = this.elContent.find("img[name=remove]"); - this.elRemove.click( () => { - this.viewer.scene.removeMeasurement(measurement); - }); - - this.propertiesPanel.addVolatileListener(measurement, "marker_added", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_removed", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_moved", this._update); - - this.update(); - } - - update(){ - let elCoordiantesContainer = this.elContent.find('.coordinates_table_container'); - elCoordiantesContainer.empty(); - elCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position))); - - let elArea = this.elContent.find(`#measurement_area`); - elArea.html(this.measurement.getArea().toFixed(3)); - } - }; - - class AnglePanel extends MeasurePanel{ - constructor(viewer, measurement, propertiesPanel){ - super(viewer, measurement, propertiesPanel); - - let removeIconPath = Potree.resourcePath + '/icons/remove.svg'; - this.elContent = $(` -
        - -
        - - - - - - - - - - - -
        \u03b1\u03b2\u03b3
        - - -
        - - - -
        -
        - `); - - this.elRemove = this.elContent.find("img[name=remove]"); - this.elRemove.click( () => { - this.viewer.scene.removeMeasurement(measurement); - }); - - this.propertiesPanel.addVolatileListener(measurement, "marker_added", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_removed", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_moved", this._update); - - this.update(); - } - - update(){ - let elCoordiantesContainer = this.elContent.find('.coordinates_table_container'); - elCoordiantesContainer.empty(); - elCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position))); - - let angles = []; - for(let i = 0; i < this.measurement.points.length; i++){ - angles.push(this.measurement.getAngle(i) * (180.0 / Math.PI)); - } - angles = angles.map(a => a.toFixed(1) + '\u00B0'); - - let elAlpha = this.elContent.find(`#angle_cell_alpha`); - let elBetta = this.elContent.find(`#angle_cell_betta`); - let elGamma = this.elContent.find(`#angle_cell_gamma`); - - elAlpha.html(angles[0]); - elBetta.html(angles[1]); - elGamma.html(angles[2]); - } - }; - - class CirclePanel extends MeasurePanel{ - constructor(viewer, measurement, propertiesPanel){ - super(viewer, measurement, propertiesPanel); - - let removeIconPath = Potree.resourcePath + '/icons/remove.svg'; - this.elContent = $(` -
        - -
        -
        - - -
        - - - -
        -
        - `); - - this.elRemove = this.elContent.find("img[name=remove]"); - this.elRemove.click( () => { - this.viewer.scene.removeMeasurement(measurement); - }); - - this.propertiesPanel.addVolatileListener(measurement, "marker_added", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_removed", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_moved", this._update); - - this.update(); - } - - update(){ - let elCoordiantesContainer = this.elContent.find('.coordinates_table_container'); - elCoordiantesContainer.empty(); - elCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position))); - - const elInfos = this.elContent.find(`#infos_table`); - - if(this.measurement.points.length !== 3){ - elInfos.empty(); - - return; - } - - const A = this.measurement.points[0].position; - const B = this.measurement.points[1].position; - const C = this.measurement.points[2].position; - - const center = Potree.Utils.computeCircleCenter(A, B, C); - const radius = center.distanceTo(A); - const circumference = 2 * Math.PI * radius; - - const format = (number) => { - return Potree.Utils.addCommas(number.toFixed(3)); - }; - - - const txtCenter = `${format(center.x)} ${format(center.y)} ${format(center.z)}`; - const txtRadius = format(radius); - const txtCircumference = format(circumference); - - const thStyle = `style="text-align: left"`; - const tdStyle = `style="width: 100%; padding: 5px;"`; - - elInfos.html(` - - Center: - - - - - ${txtCenter} - - - - Radius: - ${txtRadius} - - - Circumference: - ${txtCircumference} - - `); - } - }; - - class HeightPanel extends MeasurePanel{ - constructor(viewer, measurement, propertiesPanel){ - super(viewer, measurement, propertiesPanel); - - let removeIconPath = Potree.resourcePath + '/icons/remove.svg'; - this.elContent = $(` -
        - -
        - Height:
        - - -
        - - - -
        -
        - `); - - this.elRemove = this.elContent.find("img[name=remove]"); - this.elRemove.click( () => { - this.viewer.scene.removeMeasurement(measurement); - }); - - this.propertiesPanel.addVolatileListener(measurement, "marker_added", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_removed", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_moved", this._update); - - this.update(); - } - - update(){ - let elCoordiantesContainer = this.elContent.find('.coordinates_table_container'); - elCoordiantesContainer.empty(); - elCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position))); - - { - let points = this.measurement.points; - - let sorted = points.slice().sort((a, b) => a.position.z - b.position.z); - let lowPoint = sorted[0].position.clone(); - let highPoint = sorted[sorted.length - 1].position.clone(); - let min = lowPoint.z; - let max = highPoint.z; - let height = max - min; - height = height.toFixed(3); - - this.elHeightLabel = this.elContent.find(`#height_label`); - this.elHeightLabel.html(`Height: ${height}`); - } - } - }; - - class VolumePanel extends MeasurePanel{ - constructor(viewer, measurement, propertiesPanel){ - super(viewer, measurement, propertiesPanel); - - let copyIconPath = Potree.resourcePath + '/icons/copy.svg'; - let removeIconPath = Potree.resourcePath + '/icons/remove.svg'; - - let lblLengthText = new Map([ - [BoxVolume, "length"], - [SphereVolume, "rx"], - ]).get(measurement.constructor); - - let lblWidthText = new Map([ - [BoxVolume, "width"], - [SphereVolume, "ry"], - ]).get(measurement.constructor); - - let lblHeightText = new Map([ - [BoxVolume, "height"], - [SphereVolume, "rz"], - ]).get(measurement.constructor); - - this.elContent = $(` -
        - - - - - - - - - - - - - - - -
        \u03b1\u03b2\u03b3
        - -
        - - - - - - - - - - - - - - -
        ${lblLengthText}${lblWidthText}${lblHeightText}
        - -
        - -
        - Volume: - - - - -
      • - -
      • - -
      • - -
        -
      • - - - -
      • - - -
      • -
        - - - -
        -
        - `); - - { // download - this.elDownloadButton = this.elContent.find("input[name=download_volume]"); - - if(this.propertiesPanel.viewer.server){ - this.elDownloadButton.click(() => this.download()); - } else { - this.elDownloadButton.hide(); - } - } - - this.elCopyRotation = this.elContent.find("img[name=copyRotation]"); - this.elCopyRotation.click( () => { - let rotation = this.measurement.rotation.toArray().slice(0, 3); - let msg = rotation.map(c => c.toFixed(3)).join(", "); - Utils.clipboardCopy(msg); - - this.viewer.postMessage( - `Copied value to clipboard:
        '${msg}'`, - {duration: 3000}); - }); - - this.elCopyScale = this.elContent.find("img[name=copyScale]"); - this.elCopyScale.click( () => { - let scale = this.measurement.scale.toArray(); - let msg = scale.map(c => c.toFixed(3)).join(", "); - Utils.clipboardCopy(msg); - - this.viewer.postMessage( - `Copied value to clipboard:
        '${msg}'`, - {duration: 3000}); - }); - - this.elRemove = this.elContent.find("img[name=remove]"); - this.elRemove.click( () => { - this.viewer.scene.removeVolume(measurement); - }); - - this.elContent.find("#volume_reset_orientation").click(() => { - measurement.rotation.set(0, 0, 0); - }); - - this.elContent.find("#volume_make_uniform").click(() => { - let mean = (measurement.scale.x + measurement.scale.y + measurement.scale.z) / 3; - measurement.scale.set(mean, mean, mean); - }); - - this.elCheckClip = this.elContent.find('#volume_clip'); - this.elCheckClip.click(event => { - this.measurement.clip = event.target.checked; - }); - - this.elCheckShow = this.elContent.find('#volume_show'); - this.elCheckShow.click(event => { - this.measurement.visible = event.target.checked; - }); - - this.propertiesPanel.addVolatileListener(measurement, "position_changed", this._update); - this.propertiesPanel.addVolatileListener(measurement, "orientation_changed", this._update); - this.propertiesPanel.addVolatileListener(measurement, "scale_changed", this._update); - this.propertiesPanel.addVolatileListener(measurement, "clip_changed", this._update); - - this.update(); - } - - async download(){ - - let clipBox = this.measurement; - - let regions = []; - //for(let clipBox of boxes){ - { - let toClip = clipBox.matrixWorld; - - let px = new THREE.Vector3(+0.5, 0, 0).applyMatrix4(toClip); - let nx = new THREE.Vector3(-0.5, 0, 0).applyMatrix4(toClip); - let py = new THREE.Vector3(0, +0.5, 0).applyMatrix4(toClip); - let ny = new THREE.Vector3(0, -0.5, 0).applyMatrix4(toClip); - let pz = new THREE.Vector3(0, 0, +0.5).applyMatrix4(toClip); - let nz = new THREE.Vector3(0, 0, -0.5).applyMatrix4(toClip); - - let pxN = new THREE.Vector3().subVectors(nx, px).normalize(); - let nxN = pxN.clone().multiplyScalar(-1); - let pyN = new THREE.Vector3().subVectors(ny, py).normalize(); - let nyN = pyN.clone().multiplyScalar(-1); - let pzN = new THREE.Vector3().subVectors(nz, pz).normalize(); - let nzN = pzN.clone().multiplyScalar(-1); - - let planes = [ - new THREE.Plane().setFromNormalAndCoplanarPoint(pxN, px), - new THREE.Plane().setFromNormalAndCoplanarPoint(nxN, nx), - new THREE.Plane().setFromNormalAndCoplanarPoint(pyN, py), - new THREE.Plane().setFromNormalAndCoplanarPoint(nyN, ny), - new THREE.Plane().setFromNormalAndCoplanarPoint(pzN, pz), - new THREE.Plane().setFromNormalAndCoplanarPoint(nzN, nz), - ]; - - let planeQueryParts = []; - for(let plane of planes){ - let part = [plane.normal.toArray(), plane.constant].join(","); - part = `[${part}]`; - planeQueryParts.push(part); - } - let region = "[" + planeQueryParts.join(",") + "]"; - regions.push(region); - } - - let regionsArg = regions.join(","); - - let pointcloudArgs = []; - for(let pointcloud of this.viewer.scene.pointclouds){ - if(!pointcloud.visible){ - continue; - } - - let offset = pointcloud.pcoGeometry.offset.clone(); - let negateOffset = new THREE.Matrix4().makeTranslation(...offset.multiplyScalar(-1).toArray()); - let matrixWorld = pointcloud.matrixWorld; - - let transform = new THREE.Matrix4().multiplyMatrices(matrixWorld, negateOffset); - - let path = `${window.location.pathname}/../${pointcloud.pcoGeometry.url}`; - - let arg = { - path: path, - transform: transform.elements, - }; - let argString = JSON.stringify(arg); - - pointcloudArgs.push(argString); - } - let pointcloudsArg = pointcloudArgs.join(","); - - let elMessage = this.elContent.find("div[name=download_message]"); - - let error = (message) => { - elMessage.html(`
        ERROR: ${message}
        `); - }; - - let info = (message) => { - elMessage.html(`${message}`); - }; - - let handle = null; - { // START FILTER - let url = `${viewer.server}/create_regions_filter?pointclouds=[${pointcloudsArg}]®ions=[${regionsArg}]`; - - //console.log(url); - - info("estimating results ..."); - - let response = await fetch(url); - let jsResponse = await response.json(); - //console.log(jsResponse); - - if(!jsResponse.handle){ - error(jsResponse.message); - return; - }else { - handle = jsResponse.handle; - } - } - - { // WAIT, CHECK PROGRESS, HANDLE FINISH - let url = `${viewer.server}/check_regions_filter?handle=${handle}`; - - let sleep = (function(duration){ - return new Promise( (res, rej) => { - setTimeout(() => { - res(); - }, duration); - }); - }); - - let handleFiltering = (jsResponse) => { - let {progress, estimate} = jsResponse; - - let progressFract = progress["processed points"] / estimate.points; - let progressPercents = parseInt(progressFract * 100); - - info(`progress: ${progressPercents}%`); - }; - - let handleFinish = (jsResponse) => { - let message = "downloads ready:
        "; - message += "
        "; - - info(message); - }; - - let handleUnexpected = (jsResponse) => { - let message = `Unexpected Response.
        status: ${jsResponse.status}
        message: ${jsResponse.message}`; - info(message); - }; - - let handleError = (jsResponse) => { - let message = `ERROR: ${jsResponse.message}`; - error(message); - - throw new Error(message); - }; - - let start = Date.now(); - - while(true){ - let response = await fetch(url); - let jsResponse = await response.json(); - - if(jsResponse.status === "ERROR"){ - handleError(jsResponse); - }else if(jsResponse.status === "FILTERING"){ - handleFiltering(jsResponse); - }else if(jsResponse.status === "FINISHED"){ - handleFinish(jsResponse); - - break; - }else { - handleUnexpected(jsResponse); - } - - let durationS = (Date.now() - start) / 1000; - let sleepAmountMS = durationS < 10 ? 100 : 1000; - - await sleep(sleepAmountMS); - } - } - - } - - update(){ - let elCoordiantesContainer = this.elContent.find('.coordinates_table_container'); - elCoordiantesContainer.empty(); - elCoordiantesContainer.append(this.createCoordinatesTable([this.measurement.position])); - - { - let angles = this.measurement.rotation.toVector3(); - angles = angles.toArray(); - //angles = [angles.z, angles.x, angles.y]; - angles = angles.map(v => 180 * v / Math.PI); - angles = angles.map(a => a.toFixed(1) + '\u00B0'); - - let elAlpha = this.elContent.find(`#angle_cell_alpha`); - let elBetta = this.elContent.find(`#angle_cell_betta`); - let elGamma = this.elContent.find(`#angle_cell_gamma`); - - elAlpha.html(angles[0]); - elBetta.html(angles[1]); - elGamma.html(angles[2]); - } - - { - let dimensions = this.measurement.scale.toArray(); - dimensions = dimensions.map(v => Utils.addCommas(v.toFixed(2))); - - let elLength = this.elContent.find(`#cell_length`); - let elWidth = this.elContent.find(`#cell_width`); - let elHeight = this.elContent.find(`#cell_height`); - - elLength.html(dimensions[0]); - elWidth.html(dimensions[1]); - elHeight.html(dimensions[2]); - } - - { - let elVolume = this.elContent.find(`#measurement_volume`); - let volume = this.measurement.getVolume(); - elVolume.html(Utils.addCommas(volume.toFixed(2))); - } - - this.elCheckClip.prop("checked", this.measurement.clip); - this.elCheckShow.prop("checked", this.measurement.visible); - - } - }; - - class ProfilePanel extends MeasurePanel{ - constructor(viewer, measurement, propertiesPanel){ - super(viewer, measurement, propertiesPanel); - - let removeIconPath = Potree.resourcePath + '/icons/remove.svg'; - this.elContent = $(` -
        - -
        - - Width: - - -
        - -
      • - -
        -
      • - -
        - - - - -
        - - - -
        -
        - `); - - this.elRemove = this.elContent.find("img[name=remove]"); - this.elRemove.click( () => { - this.viewer.scene.removeProfile(measurement); - }); - - { // download - this.elDownloadButton = this.elContent.find(`input[name=download_profile]`); - - if(this.propertiesPanel.viewer.server){ - this.elDownloadButton.click(() => this.download()); - } else { - this.elDownloadButton.hide(); - } - } - - { // width spinner - let elWidthSlider = this.elContent.find(`#sldProfileWidth`); - - elWidthSlider.spinner({ - min: 0, max: 10 * 1000 * 1000, step: 0.01, - numberFormat: 'n', - start: () => {}, - spin: (event, ui) => { - let value = elWidthSlider.spinner('value'); - measurement.setWidth(value); - }, - change: (event, ui) => { - let value = elWidthSlider.spinner('value'); - measurement.setWidth(value); - }, - stop: (event, ui) => { - let value = elWidthSlider.spinner('value'); - measurement.setWidth(value); - }, - incremental: (count) => { - let value = elWidthSlider.spinner('value'); - let step = elWidthSlider.spinner('option', 'step'); - - let delta = value * 0.05; - let increments = Math.max(1, parseInt(delta / step)); - - return increments; - } - }); - elWidthSlider.spinner('value', measurement.getWidth()); - elWidthSlider.spinner('widget').css('width', '100%'); - - let widthListener = (event) => { - let value = elWidthSlider.spinner('value'); - if (value !== measurement.getWidth()) { - elWidthSlider.spinner('value', measurement.getWidth()); - } - }; - this.propertiesPanel.addVolatileListener(measurement, "width_changed", widthListener); - } - - let elShow2DProfile = this.elContent.find(`#show_2d_profile`); - elShow2DProfile.click(() => { - this.propertiesPanel.viewer.profileWindow.show(); - this.propertiesPanel.viewer.profileWindowController.setProfile(measurement); - }); - - this.propertiesPanel.addVolatileListener(measurement, "marker_added", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_removed", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_moved", this._update); - - this.update(); - } - - update(){ - let elCoordiantesContainer = this.elContent.find('.coordinates_table_container'); - elCoordiantesContainer.empty(); - elCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points)); - } - - async download(){ - - let profile = this.measurement; - - let regions = []; - { - let segments = profile.getSegments(); - let width = profile.width; - - for(let segment of segments){ - let start = segment.start.clone().multiply(new THREE.Vector3(1, 1, 0)); - let end = segment.end.clone().multiply(new THREE.Vector3(1, 1, 0)); - let center = new THREE.Vector3().addVectors(start, end).multiplyScalar(0.5); - - let startEndDir = new THREE.Vector3().subVectors(end, start).normalize(); - let endStartDir = new THREE.Vector3().subVectors(start, end).normalize(); - let upDir = new THREE.Vector3(0, 0, 1); - let rightDir = new THREE.Vector3().crossVectors(startEndDir, upDir); - let leftDir = new THREE.Vector3().crossVectors(endStartDir, upDir); - - console.log(leftDir); - - let right = rightDir.clone().multiplyScalar(width * 0.5).add(center); - let left = leftDir.clone().multiplyScalar(width * 0.5).add(center); - - let planes = [ - new THREE.Plane().setFromNormalAndCoplanarPoint(startEndDir, start), - new THREE.Plane().setFromNormalAndCoplanarPoint(endStartDir, end), - new THREE.Plane().setFromNormalAndCoplanarPoint(leftDir, right), - new THREE.Plane().setFromNormalAndCoplanarPoint(rightDir, left), - ]; - - let planeQueryParts = []; - for(let plane of planes){ - let part = [plane.normal.toArray(), plane.constant].join(","); - part = `[${part}]`; - planeQueryParts.push(part); - } - let region = "[" + planeQueryParts.join(",") + "]"; - regions.push(region); - } - } - - let regionsArg = regions.join(","); - - let pointcloudArgs = []; - for(let pointcloud of this.viewer.scene.pointclouds){ - if(!pointcloud.visible){ - continue; - } - - let offset = pointcloud.pcoGeometry.offset.clone(); - let negateOffset = new THREE.Matrix4().makeTranslation(...offset.multiplyScalar(-1).toArray()); - let matrixWorld = pointcloud.matrixWorld; - - let transform = new THREE.Matrix4().multiplyMatrices(matrixWorld, negateOffset); - - let path = `${window.location.pathname}/../${pointcloud.pcoGeometry.url}`; - - let arg = { - path: path, - transform: transform.elements, - }; - let argString = JSON.stringify(arg); - - pointcloudArgs.push(argString); - } - let pointcloudsArg = pointcloudArgs.join(","); - - let elMessage = this.elContent.find("div[name=download_message]"); - - let error = (message) => { - elMessage.html(`
        ERROR: ${message}
        `); - }; - - let info = (message) => { - elMessage.html(`${message}`); - }; - - let handle = null; - { // START FILTER - let url = `${viewer.server}/create_regions_filter?pointclouds=[${pointcloudsArg}]®ions=[${regionsArg}]`; - - //console.log(url); - - info("estimating results ..."); - - let response = await fetch(url); - let jsResponse = await response.json(); - //console.log(jsResponse); - - if(!jsResponse.handle){ - error(jsResponse.message); - return; - }else { - handle = jsResponse.handle; - } - } - - { // WAIT, CHECK PROGRESS, HANDLE FINISH - let url = `${viewer.server}/check_regions_filter?handle=${handle}`; - - let sleep = (function(duration){ - return new Promise( (res, rej) => { - setTimeout(() => { - res(); - }, duration); - }); - }); - - let handleFiltering = (jsResponse) => { - let {progress, estimate} = jsResponse; - - let progressFract = progress["processed points"] / estimate.points; - let progressPercents = parseInt(progressFract * 100); - - info(`progress: ${progressPercents}%`); - }; - - let handleFinish = (jsResponse) => { - let message = "downloads ready:
        "; - message += "
          "; - - for(let i = 0; i < jsResponse.pointclouds.length; i++){ - let url = `${viewer.server}/download_regions_filter_result?handle=${handle}&index=${i}`; - - message += `
        • result_${i}.las
        • \n`; - } - - let reportURL = `${viewer.server}/download_regions_filter_report?handle=${handle}`; - message += `
        • report.json
        • \n`; - message += "
        "; - - info(message); - }; - - let handleUnexpected = (jsResponse) => { - let message = `Unexpected Response.
        status: ${jsResponse.status}
        message: ${jsResponse.message}`; - info(message); - }; - - let handleError = (jsResponse) => { - let message = `ERROR: ${jsResponse.message}`; - error(message); - - throw new Error(message); - }; - - let start = Date.now(); - - while(true){ - let response = await fetch(url); - let jsResponse = await response.json(); - - if(jsResponse.status === "ERROR"){ - handleError(jsResponse); - }else if(jsResponse.status === "FILTERING"){ - handleFiltering(jsResponse); - }else if(jsResponse.status === "FINISHED"){ - handleFinish(jsResponse); - - break; - }else { - handleUnexpected(jsResponse); - } - - let durationS = (Date.now() - start) / 1000; - let sleepAmountMS = durationS < 10 ? 100 : 1000; - - await sleep(sleepAmountMS); - } - } - - } - }; - - class CameraPanel{ - constructor(viewer, propertiesPanel){ - this.viewer = viewer; - this.propertiesPanel = propertiesPanel; - - this._update = () => { this.update(); }; - - let copyIconPath = Potree.resourcePath + '/icons/copy.svg'; - this.elContent = $(` -
        - - - - - - - - - - - - - - - - - - - - - -
        position
        - -
        target
        - -
        -
        - `); - - this.elCopyPosition = this.elContent.find("img[name=copyPosition]"); - this.elCopyPosition.click( () => { - let pos = this.viewer.scene.getActiveCamera().position.toArray(); - let msg = pos.map(c => c.toFixed(3)).join(", "); - Utils.clipboardCopy(msg); - - this.viewer.postMessage( - `Copied value to clipboard:
        '${msg}'`, - {duration: 3000}); - }); - - this.elCopyTarget = this.elContent.find("img[name=copyTarget]"); - this.elCopyTarget.click( () => { - let pos = this.viewer.scene.view.getPivot().toArray(); - let msg = pos.map(c => c.toFixed(3)).join(", "); - Utils.clipboardCopy(msg); - - this.viewer.postMessage( - `Copied value to clipboard:
        '${msg}'`, - {duration: 3000}); - }); - - this.propertiesPanel.addVolatileListener(viewer, "camera_changed", this._update); - - this.update(); - } - - update(){ - //console.log("updating camera panel"); - - let camera = this.viewer.scene.getActiveCamera(); - let view = this.viewer.scene.view; - - let pos = camera.position.toArray().map(c => Utils.addCommas(c.toFixed(3))); - this.elContent.find("#camera_position_x").html(pos[0]); - this.elContent.find("#camera_position_y").html(pos[1]); - this.elContent.find("#camera_position_z").html(pos[2]); - - let target = view.getPivot().toArray().map(c => Utils.addCommas(c.toFixed(3))); - this.elContent.find("#camera_target_x").html(target[0]); - this.elContent.find("#camera_target_y").html(target[1]); - this.elContent.find("#camera_target_z").html(target[2]); - } - }; - - class AnnotationPanel{ - constructor(viewer, propertiesPanel, annotation){ - this.viewer = viewer; - this.propertiesPanel = propertiesPanel; - this.annotation = annotation; - - this._update = () => { this.update(); }; - - let copyIconPath = `${Potree.resourcePath}/icons/copy.svg`; - this.elContent = $(` -
        - - - - - - - - - - - - -
        position
        - -
        - -
        - -
        Title
        -
        - Annotation Title -
        - -
        Description
        -
        - A longer description of this annotation. - Can be multiple lines long. TODO: the user should be able - to modify title and description. -
        - -
        - -
        - `); - - this.elCopyPosition = this.elContent.find("img[name=copyPosition]"); - this.elCopyPosition.click( () => { - let pos = this.annotation.position.toArray(); - let msg = pos.map(c => c.toFixed(3)).join(", "); - Utils.clipboardCopy(msg); - - this.viewer.postMessage( - `Copied value to clipboard:
        '${msg}'`, - {duration: 3000}); - }); - - this.elTitle = this.elContent.find("#annotation_title").html(annotation.title); - this.elDescription = this.elContent.find("#annotation_description").html(annotation.description); - - this.elTitle[0].addEventListener("input", () => { - const title = this.elTitle.html(); - annotation.title = title; - - }, false); - - this.elDescription[0].addEventListener("input", () => { - const description = this.elDescription.html(); - annotation.description = description; - }, false); - - this.update(); - } - - update(){ - const {annotation, elContent, elTitle, elDescription} = this; - - let pos = annotation.position.toArray().map(c => Utils.addCommas(c.toFixed(3))); - elContent.find("#annotation_position_x").html(pos[0]); - elContent.find("#annotation_position_y").html(pos[1]); - elContent.find("#annotation_position_z").html(pos[2]); - - elTitle.html(annotation.title); - elDescription.html(annotation.description); - - - } - }; - - class CameraAnimationPanel{ - constructor(viewer, propertiesPanel, animation){ - this.viewer = viewer; - this.propertiesPanel = propertiesPanel; - this.animation = animation; - - this.elContent = $(` -
        - - - - - - Duration: - - - - Time:
        - - -
        -
        - `); - - const elPlay = this.elContent.find("input[name=play]"); - elPlay.click( () => { - animation.play(); - }); - - const elSlider = this.elContent.find('#sldTime'); - elSlider.slider({ - value: 0, - min: 0, - max: 1, - step: 0.001, - slide: (event, ui) => { - animation.set(ui.value); - } - }); - - let elDuration = this.elContent.find(`input[name=spnDuration]`); - elDuration.spinner({ - min: 0, max: 300, step: 0.01, - numberFormat: 'n', - start: () => {}, - spin: (event, ui) => { - let value = elDuration.spinner('value'); - animation.setDuration(value); - }, - change: (event, ui) => { - let value = elDuration.spinner('value'); - animation.setDuration(value); - }, - stop: (event, ui) => { - let value = elDuration.spinner('value'); - animation.setDuration(value); - }, - incremental: (count) => { - let value = elDuration.spinner('value'); - let step = elDuration.spinner('option', 'step'); - - let delta = value * 0.05; - let increments = Math.max(1, parseInt(delta / step)); - - return increments; - } - }); - elDuration.spinner('value', animation.getDuration()); - elDuration.spinner('widget').css('width', '100%'); - - const elKeyframes = this.elContent.find("#animation_keyframes"); - - const updateKeyframes = () => { - elKeyframes.empty(); - - //let index = 0; - - // - // - // - - const addNewKeyframeItem = (index) => { - let elNewKeyframe = $(` -
        - - - -
        - `); - - const elAdd = elNewKeyframe.find("input[name=add]"); - elAdd.click( () => { - animation.createControlPoint(index); - }); - - elKeyframes.append(elNewKeyframe); - }; - - const addKeyframeItem = (index) => { - let elKeyframe = $(` -
        - - - - - - - - keyframe - - - - -
        - `); - - const elAssign = elKeyframe.find("img[name=assign]"); - const elMove = elKeyframe.find("img[name=move]"); - const elDelete = elKeyframe.find("img[name=delete]"); - - elAssign.click( () => { - const cp = animation.controlPoints[index]; - - cp.position.copy(viewer.scene.view.position); - cp.target.copy(viewer.scene.view.getPivot()); - }); - - elMove.click( () => { - const cp = animation.controlPoints[index]; - - viewer.scene.view.position.copy(cp.position); - viewer.scene.view.lookAt(cp.target); - }); - - elDelete.click( () => { - const cp = animation.controlPoints[index]; - animation.removeControlPoint(cp); - }); - - elKeyframes.append(elKeyframe); - }; - - let index = 0; - - addNewKeyframeItem(index); - - for(const cp of animation.controlPoints){ - - addKeyframeItem(index); - index++; - addNewKeyframeItem(index); - - } - }; - - updateKeyframes(); - - animation.addEventListener("controlpoint_added", updateKeyframes); - animation.addEventListener("controlpoint_removed", updateKeyframes); - - - - - // this._update = () => { this.update(); }; - - // this.update(); - } - - update(){ - - } - }; - - class PropertiesPanel{ - - constructor(container, viewer){ - this.container = container; - this.viewer = viewer; - this.object = null; - this.cleanupTasks = []; - this.scene = null; - } - - setScene(scene){ - this.scene = scene; - } - - set(object){ - if(this.object === object){ - return; - } - - this.object = object; - - for(let task of this.cleanupTasks){ - task(); - } - this.cleanupTasks = []; - this.container.empty(); - - if(object instanceof PointCloudTree){ - this.setPointCloud(object); - }else if(object instanceof Measure || object instanceof Profile || object instanceof Volume){ - this.setMeasurement(object); - }else if(object instanceof THREE.Camera){ - this.setCamera(object); - }else if(object instanceof Annotation){ - this.setAnnotation(object); - }else if(object instanceof CameraAnimation){ - this.setCameraAnimation(object); - } - - } - - // - // Used for events that should be removed when the property object changes. - // This is for listening to materials, scene, point clouds, etc. - // not required for DOM listeners, since they are automatically cleared by removing the DOM subtree. - // - addVolatileListener(target, type, callback){ - target.addEventListener(type, callback); - this.cleanupTasks.push(() => { - target.removeEventListener(type, callback); - }); - } - - setPointCloud(pointcloud){ - - let material = pointcloud.material; - - let panel = $(` -
        -
          - -
        • -
          -
        • -
        • -
          -
        • - - -
        • - - -
        • - - -
        • -
          - -
        • - -
        • - -
        • - - -
        • :
        • - -
          - Attribute -
          - -
        • - -
        • - -
          -
          - Attribute Weights -
          - -
        • RGB:
        • -
        • Intensity:
        • -
        • Elevation:
        • -
        • Classification:
        • -
        • Return Number:
        • -
        • Source ID:
        • -
          - -
          -
          - RGB -
          - -
        • Gamma:
        • -
        • Brightness:
        • -
        • Contrast:
        • -
          - -
          -
          - Extra Attribute -
          - -
        • :
        • - -
        • Gamma:
        • -
        • Brightness:
        • -
        • Contrast:
        • -
          - -
          -
          - MATCAP -
          - -
        • -
          -
        • -
          - -
          -
          - Color -
          - - -
          - - -
          -
          - Elevation -
          - -
        • :
        • - -
        • - - - - - -
        • - -
        • - Gradient Scheme: -
          -
          -
        • -
          - -
          -
          - Transition -
          - -
        • transition:
        • -
          - -
          -
          - Intensity -
          - -
        • Range:
        • -
        • Gamma:
        • -
        • Brightness:
        • -
        • Contrast:
        • -
          - -
          -
          - GPS Time -
          - -
          - -
          -
          - Indices -
          -
          - - -
        -
        - `); - - panel.i18n(); - this.container.append(panel); - - { // POINT SIZE - let sldPointSize = panel.find(`#sldPointSize`); - let lblPointSize = panel.find(`#lblPointSize`); - - sldPointSize.slider({ - value: material.size, - min: 0, - max: 3, - step: 0.01, - slide: function (event, ui) { material.size = ui.value; } - }); - - let update = (e) => { - lblPointSize.html(material.size.toFixed(2)); - sldPointSize.slider({value: material.size}); - }; - this.addVolatileListener(material, "point_size_changed", update); - - update(); - } - - { // MINIMUM POINT SIZE - let sldMinPointSize = panel.find(`#sldMinPointSize`); - let lblMinPointSize = panel.find(`#lblMinPointSize`); - - sldMinPointSize.slider({ - value: material.size, - min: 0, - max: 3, - step: 0.01, - slide: function (event, ui) { material.minSize = ui.value; } - }); - - let update = (e) => { - lblMinPointSize.html(material.minSize.toFixed(2)); - sldMinPointSize.slider({value: material.minSize}); - }; - this.addVolatileListener(material, "point_size_changed", update); - - update(); - } - - { // POINT SIZING - let strSizeType = Object.keys(PointSizeType)[material.pointSizeType]; - - let opt = panel.find(`#optPointSizing`); - opt.selectmenu(); - opt.val(strSizeType).selectmenu('refresh'); - - opt.selectmenu({ - change: (event, ui) => { - material.pointSizeType = PointSizeType[ui.item.value]; - } - }); - } - - { // SHAPE - let opt = panel.find(`#optShape`); - - opt.selectmenu({ - change: (event, ui) => { - let value = ui.item.value; - - material.shape = PointShape[value]; - } - }); - - let update = () => { - let typename = Object.keys(PointShape)[material.shape]; - - opt.selectmenu().val(typename).selectmenu('refresh'); - }; - this.addVolatileListener(material, "point_shape_changed", update); - - update(); - } - - { // BACKFACE CULLING - - let opt = panel.find(`#set_backface_culling`); - opt.click(() => { - material.backfaceCulling = opt.prop("checked"); - }); - let update = () => { - let value = material.backfaceCulling; - opt.prop("checked", value); - }; - this.addVolatileListener(material, "backface_changed", update); - update(); - - let blockBackface = $('#materials_backface_container'); - blockBackface.css('display', 'none'); - - const pointAttributes = pointcloud.pcoGeometry.pointAttributes; - const hasNormals = pointAttributes.hasNormals ? pointAttributes.hasNormals() : false; - if(hasNormals) { - blockBackface.css('display', 'block'); - } - /* - opt.checkboxradio({ - clicked: (event, ui) => { - // let value = ui.item.value; - let value = ui.item.checked; - console.log(value); - material.backfaceCulling = value; // $('#set_freeze').prop("checked"); - } - }); - */ - } - - { // OPACITY - let sldOpacity = panel.find(`#sldOpacity`); - let lblOpacity = panel.find(`#lblOpacity`); - - sldOpacity.slider({ - value: material.opacity, - min: 0, - max: 1, - step: 0.001, - slide: function (event, ui) { - material.opacity = ui.value; - } - }); - - let update = (e) => { - lblOpacity.html(material.opacity.toFixed(2)); - sldOpacity.slider({value: material.opacity}); - }; - this.addVolatileListener(material, "opacity_changed", update); - - update(); - } - - { - - const attributes = pointcloud.pcoGeometry.pointAttributes.attributes; - - let options = []; - - options.push(...attributes.map(a => a.name)); - - const intensityIndex = options.indexOf("intensity"); - if(intensityIndex >= 0){ - options.splice(intensityIndex + 1, 0, "intensity gradient"); - } - - options.push( - "elevation", - "color", - 'matcap', - 'indices', - 'level of detail', - 'composite' - ); - - const blacklist = [ - "POSITION_CARTESIAN", - "position", - ]; - - options = options.filter(o => !blacklist.includes(o)); - - let attributeSelection = panel.find('#optMaterial'); - for(let option of options){ - let elOption = $(``); - attributeSelection.append(elOption); - } - - let updateMaterialPanel = (event, ui) => { - let selectedValue = attributeSelection.selectmenu().val(); - material.activeAttributeName = selectedValue; - - let attribute = pointcloud.getAttribute(selectedValue); - - if(selectedValue === "intensity gradient"){ - attribute = pointcloud.getAttribute("intensity"); - } - - const isIntensity = attribute ? ["intensity", "intensity gradient"].includes(attribute.name) : false; - - if(isIntensity){ - if(pointcloud.material.intensityRange[0] === Infinity){ - pointcloud.material.intensityRange = attribute.range; - } - - const [min, max] = attribute.range; - - panel.find('#sldIntensityRange').slider({ - range: true, - min: min, max: max, step: 0.01, - values: [min, max], - slide: (event, ui) => { - let min = ui.values[0]; - let max = ui.values[1]; - material.intensityRange = [min, max]; - } - }); - } else if(attribute){ - const [min, max] = attribute.range; - - let selectedRange = material.getRange(attribute.name); - - if(!selectedRange){ - selectedRange = [...attribute.range]; - } - - let minMaxAreNumbers = typeof min === "number" && typeof max === "number"; - - if(minMaxAreNumbers){ - panel.find('#sldExtraRange').slider({ - range: true, - min: min, - max: max, - step: 0.01, - values: selectedRange, - slide: (event, ui) => { - let [a, b] = ui.values; - - material.setRange(attribute.name, [a, b]); - } - }); - } - - } - - let blockWeights = $('#materials\\.composite_weight_container'); - let blockElevation = $('#materials\\.elevation_container'); - let blockRGB = $('#materials\\.rgb_container'); - let blockExtra = $('#materials\\.extra_container'); - let blockColor = $('#materials\\.color_container'); - let blockIntensity = $('#materials\\.intensity_container'); - let blockIndex = $('#materials\\.index_container'); - let blockTransition = $('#materials\\.transition_container'); - let blockGps = $('#materials\\.gpstime_container'); - let blockMatcap = $('#materials\\.matcap_container'); - - blockIndex.css('display', 'none'); - blockIntensity.css('display', 'none'); - blockElevation.css('display', 'none'); - blockRGB.css('display', 'none'); - blockExtra.css('display', 'none'); - blockColor.css('display', 'none'); - blockWeights.css('display', 'none'); - blockTransition.css('display', 'none'); - blockMatcap.css('display', 'none'); - blockGps.css('display', 'none'); - - if (selectedValue === 'composite') { - blockWeights.css('display', 'block'); - blockElevation.css('display', 'block'); - blockRGB.css('display', 'block'); - blockIntensity.css('display', 'block'); - } else if (selectedValue === 'elevation') { - blockElevation.css('display', 'block'); - } else if (selectedValue === 'RGB and Elevation') { - blockRGB.css('display', 'block'); - blockElevation.css('display', 'block'); - } else if (selectedValue === 'rgba') { - blockRGB.css('display', 'block'); - } else if (selectedValue === 'color') { - blockColor.css('display', 'block'); - } else if (selectedValue === 'intensity') { - blockIntensity.css('display', 'block'); - } else if (selectedValue === 'intensity gradient') { - blockIntensity.css('display', 'block'); - } else if (selectedValue === "indices" ){ - blockIndex.css('display', 'block'); - } else if (selectedValue === "matcap" ){ - blockMatcap.css('display', 'block'); - } else if (selectedValue === "classification" ){ - // add classification color selctor? - } else if (selectedValue === "gps-time" ){ - blockGps.css('display', 'block'); - } else if(selectedValue === "number of returns"){ - - } else if(selectedValue === "return number"){ - - } else if(["source id", "point source id"].includes(selectedValue)){ - - } else { - blockExtra.css('display', 'block'); - } - }; - - attributeSelection.selectmenu({change: updateMaterialPanel}); - - let update = () => { - attributeSelection.val(material.activeAttributeName).selectmenu('refresh'); - }; - this.addVolatileListener(material, "point_color_type_changed", update); - this.addVolatileListener(material, "active_attribute_changed", update); - - update(); - updateMaterialPanel(); - } - - { - const schemes = Object.keys(Potree.Gradients).map(name => ({name: name, values: Gradients[name]})); - - let elSchemeContainer = panel.find("#elevation_gradient_scheme_selection"); - - for(let scheme of schemes){ - let elScheme = $(` - - - `); - - const svg = Potree.Utils.createSvgGradient(scheme.values); - svg.setAttributeNS(null, "class", `button-icon`); - - elScheme.append($(svg)); - - elScheme.click( () => { - material.gradient = Gradients[scheme.name]; - }); - - elSchemeContainer.append(elScheme); - } - } - - { - let matcaps = [ - {name: "Normals", icon: `${Potree.resourcePath}/icons/matcap/check_normal+y.jpg`}, - {name: "Basic 1", icon: `${Potree.resourcePath}/icons/matcap/basic_1.jpg`}, - {name: "Basic 2", icon: `${Potree.resourcePath}/icons/matcap/basic_2.jpg`}, - {name: "Basic Dark", icon: `${Potree.resourcePath}/icons/matcap/basic_dark.jpg`}, - {name: "Basic Side", icon: `${Potree.resourcePath}/icons/matcap/basic_side.jpg`}, - {name: "Ceramic Dark", icon: `${Potree.resourcePath}/icons/matcap/ceramic_dark.jpg`}, - {name: "Ceramic Lightbulb", icon: `${Potree.resourcePath}/icons/matcap/ceramic_lightbulb.jpg`}, - {name: "Clay Brown", icon: `${Potree.resourcePath}/icons/matcap/clay_brown.jpg`}, - {name: "Clay Muddy", icon: `${Potree.resourcePath}/icons/matcap/clay_muddy.jpg`}, - {name: "Clay Studio", icon: `${Potree.resourcePath}/icons/matcap/clay_studio.jpg`}, - {name: "Resin", icon: `${Potree.resourcePath}/icons/matcap/resin.jpg`}, - {name: "Skin", icon: `${Potree.resourcePath}/icons/matcap/skin.jpg`}, - {name: "Jade", icon: `${Potree.resourcePath}/icons/matcap/jade.jpg`}, - {name: "Metal_ Anisotropic", icon: `${Potree.resourcePath}/icons/matcap/metal_anisotropic.jpg`}, - {name: "Metal Carpaint", icon: `${Potree.resourcePath}/icons/matcap/metal_carpaint.jpg`}, - {name: "Metal Lead", icon: `${Potree.resourcePath}/icons/matcap/metal_lead.jpg`}, - {name: "Metal Shiny", icon: `${Potree.resourcePath}/icons/matcap/metal_shiny.jpg`}, - {name: "Pearl", icon: `${Potree.resourcePath}/icons/matcap/pearl.jpg`}, - {name: "Toon", icon: `${Potree.resourcePath}/icons/matcap/toon.jpg`}, - {name: "Check Rim Light", icon: `${Potree.resourcePath}/icons/matcap/check_rim_light.jpg`}, - {name: "Check Rim Dark", icon: `${Potree.resourcePath}/icons/matcap/check_rim_dark.jpg`}, - {name: "Contours 1", icon: `${Potree.resourcePath}/icons/matcap/contours_1.jpg`}, - {name: "Contours 2", icon: `${Potree.resourcePath}/icons/matcap/contours_2.jpg`}, - {name: "Contours 3", icon: `${Potree.resourcePath}/icons/matcap/contours_3.jpg`}, - {name: "Reflection Check Horizontal", icon: `${Potree.resourcePath}/icons/matcap/reflection_check_horizontal.jpg`}, - {name: "Reflection Check Vertical", icon: `${Potree.resourcePath}/icons/matcap/reflection_check_vertical.jpg`}, - ]; - - let elMatcapContainer = panel.find("#matcap_scheme_selection"); - - for(let matcap of matcaps){ - let elMatcap = $(` - - `); - - elMatcap.click( () => { - material.matcap = matcap.icon.substring(matcap.icon.lastIndexOf('/')); - }); - - elMatcapContainer.append(elMatcap); - } - } - - { - panel.find('#sldRGBGamma').slider({ - value: material.rgbGamma, - min: 0, max: 4, step: 0.01, - slide: (event, ui) => {material.rgbGamma = ui.value;} - }); - - panel.find('#sldRGBContrast').slider({ - value: material.rgbContrast, - min: -1, max: 1, step: 0.01, - slide: (event, ui) => {material.rgbContrast = ui.value;} - }); - - panel.find('#sldRGBBrightness').slider({ - value: material.rgbBrightness, - min: -1, max: 1, step: 0.01, - slide: (event, ui) => {material.rgbBrightness = ui.value;} - }); - - panel.find('#sldExtraGamma').slider({ - value: material.extraGamma, - min: 0, max: 4, step: 0.01, - slide: (event, ui) => {material.extraGamma = ui.value;} - }); - - panel.find('#sldExtraBrightness').slider({ - value: material.extraBrightness, - min: -1, max: 1, step: 0.01, - slide: (event, ui) => {material.extraBrightness = ui.value;} - }); - - panel.find('#sldExtraContrast').slider({ - value: material.extraContrast, - min: -1, max: 1, step: 0.01, - slide: (event, ui) => {material.extraContrast = ui.value;} - }); - - panel.find('#sldHeightRange').slider({ - range: true, - min: 0, max: 1000, step: 0.01, - values: [0, 1000], - slide: (event, ui) => { - material.heightMin = ui.values[0]; - material.heightMax = ui.values[1]; - } - }); - - panel.find('#sldIntensityGamma').slider({ - value: material.intensityGamma, - min: 0, max: 4, step: 0.01, - slide: (event, ui) => {material.intensityGamma = ui.value;} - }); - - panel.find('#sldIntensityContrast').slider({ - value: material.intensityContrast, - min: -1, max: 1, step: 0.01, - slide: (event, ui) => {material.intensityContrast = ui.value;} - }); - - panel.find('#sldIntensityBrightness').slider({ - value: material.intensityBrightness, - min: -1, max: 1, step: 0.01, - slide: (event, ui) => {material.intensityBrightness = ui.value;} - }); - - panel.find('#sldWeightRGB').slider({ - value: material.weightRGB, - min: 0, max: 1, step: 0.01, - slide: (event, ui) => {material.weightRGB = ui.value;} - }); - - panel.find('#sldWeightIntensity').slider({ - value: material.weightIntensity, - min: 0, max: 1, step: 0.01, - slide: (event, ui) => {material.weightIntensity = ui.value;} - }); - - panel.find('#sldWeightElevation').slider({ - value: material.weightElevation, - min: 0, max: 1, step: 0.01, - slide: (event, ui) => {material.weightElevation = ui.value;} - }); - - panel.find('#sldWeightClassification').slider({ - value: material.weightClassification, - min: 0, max: 1, step: 0.01, - slide: (event, ui) => {material.weightClassification = ui.value;} - }); - - panel.find('#sldWeightReturnNumber').slider({ - value: material.weightReturnNumber, - min: 0, max: 1, step: 0.01, - slide: (event, ui) => {material.weightReturnNumber = ui.value;} - }); - - panel.find('#sldWeightSourceID').slider({ - value: material.weightSourceID, - min: 0, max: 1, step: 0.01, - slide: (event, ui) => {material.weightSourceID = ui.value;} - }); - - panel.find(`#materials\\.color\\.picker`).spectrum({ - flat: true, - showInput: true, - preferredFormat: 'rgb', - cancelText: '', - chooseText: 'Apply', - color: `#${material.color.getHexString()}`, - move: color => { - let cRGB = color.toRgb(); - let tc = new THREE.Color().setRGB(cRGB.r / 255, cRGB.g / 255, cRGB.b / 255); - material.color = tc; - }, - change: color => { - let cRGB = color.toRgb(); - let tc = new THREE.Color().setRGB(cRGB.r / 255, cRGB.g / 255, cRGB.b / 255); - material.color = tc; - } - }); - - this.addVolatileListener(material, "color_changed", () => { - panel.find(`#materials\\.color\\.picker`) - .spectrum('set', `#${material.color.getHexString()}`); - }); - - let updateHeightRange = function () { - - - let aPosition = pointcloud.getAttribute("position"); - - let bMin, bMax; - - if(aPosition){ - // for new format 2.0 and loader that contain precomputed min/max of attributes - let min = aPosition.range[0][2]; - let max = aPosition.range[1][2]; - let width = max - min; - - bMin = min - 0.2 * width; - bMax = max + 0.2 * width; - }else { - // for format up until exlusive 2.0 - let box = [pointcloud.pcoGeometry.tightBoundingBox, pointcloud.getBoundingBoxWorld()] - .find(v => v !== undefined); - - pointcloud.updateMatrixWorld(true); - box = Utils.computeTransformedBoundingBox(box, pointcloud.matrixWorld); - - let bWidth = box.max.z - box.min.z; - bMin = box.min.z - 0.2 * bWidth; - bMax = box.max.z + 0.2 * bWidth; - } - - let range = material.elevationRange; - - panel.find('#lblHeightRange').html(`${range[0].toFixed(2)} to ${range[1].toFixed(2)}`); - panel.find('#sldHeightRange').slider({min: bMin, max: bMax, values: range}); - }; - - let updateExtraRange = function () { - - let attributeName = material.activeAttributeName; - let attribute = pointcloud.getAttribute(attributeName); - - if(attribute == null){ - return; - } - - let range = material.getRange(attributeName); - - if(range == null){ - range = attribute.range; - } - - // currently only supporting scalar ranges. - // rgba, normals, positions, etc have vector ranges, however - let isValidRange = (typeof range[0] === "number") && (typeof range[1] === "number"); - if(!isValidRange){ - return; - } - - if(range){ - let msg = `${range[0].toFixed(2)} to ${range[1].toFixed(2)}`; - panel.find('#lblExtraRange').html(msg); - }else { - panel.find("could not deduce range"); - } - }; - - let updateIntensityRange = function () { - let range = material.intensityRange; - - panel.find('#lblIntensityRange').html(`${parseInt(range[0])} to ${parseInt(range[1])}`); - }; - - { - updateHeightRange(); - panel.find(`#sldHeightRange`).slider('option', 'min'); - panel.find(`#sldHeightRange`).slider('option', 'max'); - } - - { - let elGradientRepeat = panel.find("#gradient_repeat_option"); - elGradientRepeat.selectgroup({title: "Gradient"}); - - elGradientRepeat.find("input").click( (e) => { - this.viewer.setElevationGradientRepeat(ElevationGradientRepeat[e.target.value]); - }); - - let current = Object.keys(ElevationGradientRepeat) - .filter(key => ElevationGradientRepeat[key] === this.viewer.elevationGradientRepeat); - elGradientRepeat.find(`input[value=${current}]`).trigger("click"); - } - - let onIntensityChange = () => { - let gamma = material.intensityGamma; - let contrast = material.intensityContrast; - let brightness = material.intensityBrightness; - - updateIntensityRange(); - - panel.find('#lblIntensityGamma').html(gamma.toFixed(2)); - panel.find('#lblIntensityContrast').html(contrast.toFixed(2)); - panel.find('#lblIntensityBrightness').html(brightness.toFixed(2)); - - panel.find('#sldIntensityGamma').slider({value: gamma}); - panel.find('#sldIntensityContrast').slider({value: contrast}); - panel.find('#sldIntensityBrightness').slider({value: brightness}); - }; - - let onRGBChange = () => { - let gamma = material.rgbGamma; - let contrast = material.rgbContrast; - let brightness = material.rgbBrightness; - - panel.find('#lblRGBGamma').html(gamma.toFixed(2)); - panel.find('#lblRGBContrast').html(contrast.toFixed(2)); - panel.find('#lblRGBBrightness').html(brightness.toFixed(2)); - - panel.find('#sldRGBGamma').slider({value: gamma}); - panel.find('#sldRGBContrast').slider({value: contrast}); - panel.find('#sldRGBBrightness').slider({value: brightness}); - }; - - this.addVolatileListener(material, "material_property_changed", updateExtraRange); - this.addVolatileListener(material, "material_property_changed", updateHeightRange); - this.addVolatileListener(material, "material_property_changed", onIntensityChange); - this.addVolatileListener(material, "material_property_changed", onRGBChange); - - updateExtraRange(); - updateHeightRange(); - onIntensityChange(); - onRGBChange(); - } - - } - - - - setMeasurement(object){ - - let TYPE = { - DISTANCE: {panel: DistancePanel}, - AREA: {panel: AreaPanel}, - POINT: {panel: PointPanel}, - ANGLE: {panel: AnglePanel}, - HEIGHT: {panel: HeightPanel}, - PROFILE: {panel: ProfilePanel}, - VOLUME: {panel: VolumePanel}, - CIRCLE: {panel: CirclePanel}, - OTHER: {panel: PointPanel}, - }; - - let getType = (measurement) => { - if (measurement instanceof Measure) { - if (measurement.showDistances && !measurement.showArea && !measurement.showAngles) { - return TYPE.DISTANCE; - } else if (measurement.showDistances && measurement.showArea && !measurement.showAngles) { - return TYPE.AREA; - } else if (measurement.maxMarkers === 1) { - return TYPE.POINT; - } else if (!measurement.showDistances && !measurement.showArea && measurement.showAngles) { - return TYPE.ANGLE; - } else if (measurement.showHeight) { - return TYPE.HEIGHT; - } else if (measurement.showCircle) { - return TYPE.CIRCLE; - } else { - return TYPE.OTHER; - } - } else if (measurement instanceof Profile) { - return TYPE.PROFILE; - } else if (measurement instanceof Volume) { - return TYPE.VOLUME; - } - }; - - //this.container.html("measurement"); - - let type = getType(object); - let Panel = type.panel; - - let panel = new Panel(this.viewer, object, this); - this.container.append(panel.elContent); - } - - setCamera(camera){ - let panel = new CameraPanel(this.viewer, this); - this.container.append(panel.elContent); - } - - setAnnotation(annotation){ - let panel = new AnnotationPanel(this.viewer, this, annotation); - this.container.append(panel.elContent); - } - - setCameraAnimation(animation){ - let panel = new CameraAnimationPanel(this.viewer, this, animation); - this.container.append(panel.elContent); - } - - } - - function addCommas(nStr){ - nStr += ''; - let x = nStr.split('.'); - let x1 = x[0]; - let x2 = x.length > 1 ? '.' + x[1] : ''; - let rgx = /(\d+)(\d{3})/; - while (rgx.test(x1)) { - x1 = x1.replace(rgx, '$1' + ',' + '$2'); - } - return x1 + x2; - }; - - function format(value){ - return addCommas(value.toFixed(3)); - }; - - class HierarchicalSlider{ - - constructor(params = {}){ - - this.element = document.createElement("div"); - - this.labels = []; - this.sliders = []; - this.range = params.range != null ? params.range : [0, 1]; - this.slide = params.slide != null ? params.slide : null; - this.step = params.step != null ? params.step : 0.0001; - - let levels = params.levels != null ? params.levels : 1; - - for(let level = 0; level < levels; level++){ - this.addLevel(); - } - - } - - setRange(range){ - this.range = [...range]; - - { // root slider - let slider = this.sliders[0]; - - $(slider).slider({ - min: range[0], - max: range[1], - }); - } - - for(let i = 1; i < this.sliders.length; i++){ - let parentSlider = this.sliders[i - 1]; - let slider = this.sliders[i]; - - let parentValues = $(parentSlider).slider("option", "values"); - let childRange = [...parentValues]; - - $(slider).slider({ - min: childRange[0], - max: childRange[1], - }); - } - - this.updateLabels(); - } - - setValues(values){ - for(let slider of this.sliders){ - $(slider).slider({ - values: [...values], - }); - } - - this.updateLabels(); - } - - addLevel(){ - const elLevel = document.createElement("li"); - const elRange = document.createTextNode("Range: "); - const label = document.createElement("span"); - const slider = document.createElement("div"); - - let level = this.sliders.length; - let [min, max] = [0, 0]; - - if(this.sliders.length === 0){ - [min, max] = this.range; - }else { - let parentSlider = this.sliders[this.sliders.length - 1]; - [min, max] = $(parentSlider).slider("option", "values"); - } - - $(slider).slider({ - range: true, - min: min, - max: max, - step: this.step, - values: [min, max], - slide: (event, ui) => { - - // set all descendants to same range - let levels = this.sliders.length; - for(let i = level + 1; i < levels; i++){ - let descendant = this.sliders[i]; - - $(descendant).slider({ - range: true, - min: ui.values[0], - max: ui.values[1], - values: [...ui.values], - }); - } - - if(this.slide){ - let values = [...ui.values]; - - this.slide({ - target: this, - range: this.range, - values: values, - }); - } - - this.updateLabels(); - }, - }); - - elLevel.append(elRange, label, slider); - - this.sliders.push(slider); - this.labels.push(label); - this.element.append(elLevel); - - this.updateLabels(); - } - - removeLevel(){ - - } - - updateSliders(){ - - } - - updateLabels(){ - - let levels = this.sliders.length; - - for(let i = 0; i < levels; i++){ - - let slider = this.sliders[i]; - let label = this.labels[i]; - - let [min, max] = $(slider).slider("option", "values"); - let strMin = format(min); - let strMax = format(max); - let strLabel = `${strMin} to ${strMax}`; - - label.innerHTML = strLabel; - } - - } - - - } - - class OrientedImageControls extends EventDispatcher{ - - constructor(viewer){ - super(); - - this.viewer = viewer; - this.renderer = viewer.renderer; - - this.originalCam = viewer.scene.getActiveCamera(); - this.shearCam = viewer.scene.getActiveCamera().clone(); - this.shearCam.rotation.set(this.originalCam.rotation.toArray()); - this.shearCam.updateProjectionMatrix(); - this.shearCam.updateProjectionMatrix = () => { - return this.shearCam.projectionMatrix; - }; - - this.image = null; - - this.fadeFactor = 20; - this.fovDelta = 0; - - this.fovMin = 0.1; - this.fovMax = 120; - - this.shear = [0, 0]; - - // const style = ``; - this.elUp = $(``); - this.elRight = $(``); - this.elDown = $(``); - this.elLeft = $(``); - this.elExit = $(``); - - this.elExit.click( () => { - this.release(); - }); - - this.elUp.click(() => { - const fovY = viewer.getFOV(); - const top = Math.tan(THREE.Math.degToRad(fovY / 2)); - this.shear[1] += 0.1 * top; - }); - - this.elRight.click(() => { - const fovY = viewer.getFOV(); - const top = Math.tan(THREE.Math.degToRad(fovY / 2)); - this.shear[0] += 0.1 * top; - }); - - this.elDown.click(() => { - const fovY = viewer.getFOV(); - const top = Math.tan(THREE.Math.degToRad(fovY / 2)); - this.shear[1] -= 0.1 * top; - }); - - this.elLeft.click(() => { - const fovY = viewer.getFOV(); - const top = Math.tan(THREE.Math.degToRad(fovY / 2)); - this.shear[0] -= 0.1 * top; - }); - - this.scene = null; - this.sceneControls = new THREE.Scene(); - - let scroll = (e) => { - this.fovDelta += -e.delta * 1.0; - }; - - this.addEventListener('mousewheel', scroll); - //this.addEventListener("mousemove", onMove); - } - - hasSomethingCaptured(){ - return this.image !== null; - } - - capture(image){ - if(this.hasSomethingCaptured()){ - return; - } - - this.image = image; - - this.originalFOV = this.viewer.getFOV(); - this.originalControls = this.viewer.getControls(); - - this.viewer.setControls(this); - this.viewer.scene.overrideCamera = this.shearCam; - - const elCanvas = this.viewer.renderer.domElement; - const elRoot = $(elCanvas.parentElement); - - this.shear = [0, 0]; - - - elRoot.append(this.elUp); - elRoot.append(this.elRight); - elRoot.append(this.elDown); - elRoot.append(this.elLeft); - elRoot.append(this.elExit); - } - - release(){ - this.image = null; - - this.viewer.scene.overrideCamera = null; - - this.elUp.detach(); - this.elRight.detach(); - this.elDown.detach(); - this.elLeft.detach(); - this.elExit.detach(); - - this.viewer.setFOV(this.originalFOV); - this.viewer.setControls(this.originalControls); - } - - setScene (scene) { - this.scene = scene; - } - - update (delta) { - // const view = this.scene.view; - - // let prevTotal = this.shearCam.projectionMatrix.elements.reduce( (a, i) => a + i, 0); - - //const progression = Math.min(1, this.fadeFactor * delta); - //const attenuation = Math.max(0, 1 - this.fadeFactor * delta); - const progression = 1; - const attenuation = 0; - - const oldFov = this.viewer.getFOV(); - let fovProgression = progression * this.fovDelta; - let newFov = oldFov * ((1 + fovProgression / 10)); - - newFov = Math.max(this.fovMin, newFov); - newFov = Math.min(this.fovMax, newFov); - - let diff = newFov / oldFov; - - const mouse = this.viewer.inputHandler.mouse; - const canvasSize = this.viewer.renderer.getSize(new THREE.Vector2()); - const uv = [ - (mouse.x / canvasSize.x), - ((canvasSize.y - mouse.y) / canvasSize.y) - ]; - - const fovY = newFov; - const aspect = canvasSize.x / canvasSize.y; - const top = Math.tan(THREE.Math.degToRad(fovY / 2)); - const height = 2 * top; - const width = aspect * height; - - const shearRangeX = [ - this.shear[0] - 0.5 * width, - this.shear[0] + 0.5 * width, - ]; - - const shearRangeY = [ - this.shear[1] - 0.5 * height, - this.shear[1] + 0.5 * height, - ]; - - const shx = (1 - uv[0]) * shearRangeX[0] + uv[0] * shearRangeX[1]; - const shy = (1 - uv[1]) * shearRangeY[0] + uv[1] * shearRangeY[1]; - - const shu = (1 - diff); - - const newShear = [ - (1 - shu) * this.shear[0] + shu * shx, - (1 - shu) * this.shear[1] + shu * shy, - ]; - - this.shear = newShear; - this.viewer.setFOV(newFov); - - const {originalCam, shearCam} = this; - - originalCam.fov = newFov; - originalCam.updateMatrixWorld(); - originalCam.updateProjectionMatrix(); - shearCam.copy(originalCam); - shearCam.rotation.set(...originalCam.rotation.toArray()); - - shearCam.updateMatrixWorld(); - shearCam.projectionMatrix.copy(originalCam.projectionMatrix); - - const [sx, sy] = this.shear; - const mShear = new THREE.Matrix4().set( - 1, 0, sx, 0, - 0, 1, sy, 0, - 0, 0, 1, 0, - 0, 0, 0, 1, - ); - - const proj = shearCam.projectionMatrix; - proj.multiply(mShear); - shearCam.projectionMatrixInverse.getInverse( proj ); - - let total = shearCam.projectionMatrix.elements.reduce( (a, i) => a + i, 0); - - this.fovDelta *= attenuation; - } - }; - - // https://support.pix4d.com/hc/en-us/articles/205675256-How-are-yaw-pitch-roll-defined - // https://support.pix4d.com/hc/en-us/articles/202558969-How-are-omega-phi-kappa-defined - - function createMaterial(){ - - let vertexShader = ` - uniform float uNear; - varying vec2 vUV; - varying vec4 vDebug; - - void main(){ - vDebug = vec4(0.0, 1.0, 0.0, 1.0); - vec4 modelViewPosition = modelViewMatrix * vec4(position, 1.0); - // make sure that this mesh is at least in front of the near plane - modelViewPosition.xyz += normalize(modelViewPosition.xyz) * uNear; - gl_Position = projectionMatrix * modelViewPosition; - vUV = uv; - } - `; - - let fragmentShader = ` - uniform sampler2D tColor; - uniform float uOpacity; - varying vec2 vUV; - varying vec4 vDebug; - void main(){ - vec4 color = texture2D(tColor, vUV); - gl_FragColor = color; - gl_FragColor.a = uOpacity; - } - `; - const material = new THREE.ShaderMaterial( { - uniforms: { - // time: { value: 1.0 }, - // resolution: { value: new THREE.Vector2() } - tColor: {value: new THREE.Texture() }, - uNear: {value: 0.0}, - uOpacity: {value: 1.0}, - }, - vertexShader: vertexShader, - fragmentShader: fragmentShader, - side: THREE.DoubleSide, - } ); - - material.side = THREE.DoubleSide; - - return material; - } - - const planeGeometry = new THREE.PlaneGeometry(1, 1); - const lineGeometry = new THREE.Geometry(); - - lineGeometry.vertices.push( - new THREE.Vector3(-0.5, -0.5, 0), - new THREE.Vector3( 0.5, -0.5, 0), - new THREE.Vector3( 0.5, 0.5, 0), - new THREE.Vector3(-0.5, 0.5, 0), - new THREE.Vector3(-0.5, -0.5, 0), - ); - - class OrientedImage{ - - constructor(id){ - - this.id = id; - this.fov = 1.0; - this.position = new THREE.Vector3(); - this.rotation = new THREE.Vector3(); - this.width = 0; - this.height = 0; - this.fov = 1.0; - - const material = createMaterial(); - const lineMaterial = new THREE.LineBasicMaterial( { color: 0x00ff00 } ); - this.mesh = new THREE.Mesh(planeGeometry, material); - this.line = new THREE.Line(lineGeometry, lineMaterial); - this.texture = null; - - this.mesh.orientedImage = this; - } - - set(position, rotation, dimension, fov){ - - let radians = rotation.map(THREE.Math.degToRad); - - this.position.set(...position); - this.mesh.position.set(...position); - - this.rotation.set(...radians); - this.mesh.rotation.set(...radians); - - [this.width, this.height] = dimension; - this.mesh.scale.set(this.width / this.height, 1, 1); - - this.fov = fov; - - this.updateTransform(); - } - - updateTransform(){ - let {mesh, line, fov} = this; - - mesh.updateMatrixWorld(); - const dir = mesh.getWorldDirection(); - const alpha = THREE.Math.degToRad(fov / 2); - const d = -0.5 / Math.tan(alpha); - const move = dir.clone().multiplyScalar(d); - mesh.position.add(move); - - line.position.copy(mesh.position); - line.scale.copy(mesh.scale); - line.rotation.copy(mesh.rotation); - } - - }; - - class OrientedImages extends EventDispatcher{ - - constructor(){ - super(); - - this.node = null; - this.cameraParams = null; - this.imageParams = null; - this.images = null; - this._visible = true; - } - - set visible(visible){ - if(this._visible === visible){ - return; - } - - for(const image of this.images){ - image.mesh.visible = visible; - image.line.visible = visible; - } - - this._visible = visible; - this.dispatchEvent({ - type: "visibility_changed", - images: this, - }); - } - - get visible(){ - return this._visible; - } - - - }; - - class OrientedImageLoader{ - - static async loadCameraParams(path){ - const res = await fetch(path); - const text = await res.text(); - - const parser = new DOMParser(); - const doc = parser.parseFromString(text, "application/xml"); - - const width = parseInt(doc.getElementsByTagName("width")[0].textContent); - const height = parseInt(doc.getElementsByTagName("height")[0].textContent); - const f = parseFloat(doc.getElementsByTagName("f")[0].textContent); - - let a = (height / 2) / f; - let fov = 2 * THREE.Math.radToDeg(Math.atan(a)); - - const params = { - path: path, - width: width, - height: height, - f: f, - fov: fov, - }; - - return params; - } - - static async loadImageParams(path){ - - const response = await fetch(path); - if(!response.ok){ - console.error(`failed to load ${path}`); - return; - } - - const content = await response.text(); - const lines = content.split(/\r?\n/); - const imageParams = []; - - for(let i = 1; i < lines.length; i++){ - const line = lines[i]; - - if(line.startsWith("#")){ - continue; - } - - const tokens = line.split(/\s+/); - - if(tokens.length < 6){ - continue; - } - - const params = { - id: tokens[0], - x: Number.parseFloat(tokens[1]), - y: Number.parseFloat(tokens[2]), - z: Number.parseFloat(tokens[3]), - omega: Number.parseFloat(tokens[4]), - phi: Number.parseFloat(tokens[5]), - kappa: Number.parseFloat(tokens[6]), - }; - - // const whitelist = ["47518.jpg"]; - // if(whitelist.includes(params.id)){ - // imageParams.push(params); - // } - imageParams.push(params); - } - - // debug - //return [imageParams[50]]; - - return imageParams; - } - - static async load(cameraParamsPath, imageParamsPath, viewer){ - - const tStart = performance.now(); - - const [cameraParams, imageParams] = await Promise.all([ - OrientedImageLoader.loadCameraParams(cameraParamsPath), - OrientedImageLoader.loadImageParams(imageParamsPath), - ]); - - const orientedImageControls = new OrientedImageControls(viewer); - const raycaster = new THREE.Raycaster(); - - const tEnd = performance.now(); - console.log(tEnd - tStart); - - // const sp = new THREE.PlaneGeometry(1, 1); - // const lg = new THREE.Geometry(); - - // lg.vertices.push( - // new THREE.Vector3(-0.5, -0.5, 0), - // new THREE.Vector3( 0.5, -0.5, 0), - // new THREE.Vector3( 0.5, 0.5, 0), - // new THREE.Vector3(-0.5, 0.5, 0), - // new THREE.Vector3(-0.5, -0.5, 0), - // ); - - const {width, height} = cameraParams; - const orientedImages = []; - const sceneNode = new THREE.Object3D(); - sceneNode.name = "oriented_images"; - - for(const params of imageParams){ - - // const material = createMaterial(); - // const lm = new THREE.LineBasicMaterial( { color: 0x00ff00 } ); - // const mesh = new THREE.Mesh(sp, material); - - const {x, y, z, omega, phi, kappa} = params; - // const [rx, ry, rz] = [omega, phi, kappa] - // .map(THREE.Math.degToRad); - - // mesh.position.set(x, y, z); - // mesh.scale.set(width / height, 1, 1); - // mesh.rotation.set(rx, ry, rz); - // { - // mesh.updateMatrixWorld(); - // const dir = mesh.getWorldDirection(); - // const alpha = THREE.Math.degToRad(cameraParams.fov / 2); - // const d = -0.5 / Math.tan(alpha); - // const move = dir.clone().multiplyScalar(d); - // mesh.position.add(move); - // } - // sceneNode.add(mesh); - - // const line = new THREE.Line(lg, lm); - // line.position.copy(mesh.position); - // line.scale.copy(mesh.scale); - // line.rotation.copy(mesh.rotation); - // sceneNode.add(line); - - let orientedImage = new OrientedImage(params.id); - // orientedImage.setPosition(x, y, z); - // orientedImage.setRotation(omega, phi, kappa); - // orientedImage.setDimension(width, height); - let position = [x, y, z]; - let rotation = [omega, phi, kappa]; - let dimension = [width, height]; - orientedImage.set(position, rotation, dimension, cameraParams.fov); - - sceneNode.add(orientedImage.mesh); - sceneNode.add(orientedImage.line); - - orientedImages.push(orientedImage); - } - - let hoveredElement = null; - let clipVolume = null; - - const onMouseMove = (evt) => { - const tStart = performance.now(); - if(hoveredElement){ - hoveredElement.line.material.color.setRGB(0, 1, 0); - } - evt.preventDefault(); - - //var array = getMousePosition( container, evt.clientX, evt.clientY ); - const rect = viewer.renderer.domElement.getBoundingClientRect(); - const [x, y] = [evt.clientX, evt.clientY]; - const array = [ - ( x - rect.left ) / rect.width, - ( y - rect.top ) / rect.height - ]; - const onClickPosition = new THREE.Vector2(...array); - //const intersects = getIntersects(onClickPosition, scene.children); - const camera = viewer.scene.getActiveCamera(); - const mouse = new THREE.Vector3( - + ( onClickPosition.x * 2 ) - 1, - - ( onClickPosition.y * 2 ) + 1 ); - const objects = orientedImages.map(i => i.mesh); - raycaster.setFromCamera( mouse, camera ); - const intersects = raycaster.intersectObjects( objects ); - let selectionChanged = false; - - if ( intersects.length > 0){ - //console.log(intersects); - const intersection = intersects[0]; - const orientedImage = intersection.object.orientedImage; - orientedImage.line.material.color.setRGB(1, 0, 0); - selectionChanged = hoveredElement !== orientedImage; - hoveredElement = orientedImage; - }else { - hoveredElement = null; - } - - let shouldRemoveClipVolume = clipVolume !== null && hoveredElement === null; - let shouldAddClipVolume = clipVolume === null && hoveredElement !== null; - - if(clipVolume !== null && (hoveredElement === null || selectionChanged)){ - // remove existing - viewer.scene.removePolygonClipVolume(clipVolume); - clipVolume = null; - } - - if(shouldAddClipVolume || selectionChanged){ - const img = hoveredElement; - const fov = cameraParams.fov; - const aspect = cameraParams.width / cameraParams.height; - const near = 1.0; - const far = 1000 * 1000; - const camera = new THREE.PerspectiveCamera(fov, aspect, near, far); - camera.rotation.order = viewer.scene.getActiveCamera().rotation.order; - camera.rotation.copy(img.mesh.rotation); - { - const mesh = img.mesh; - const dir = mesh.getWorldDirection(); - const pos = mesh.position; - const alpha = THREE.Math.degToRad(fov / 2); - const d = 0.5 / Math.tan(alpha); - const newCamPos = pos.clone().add(dir.clone().multiplyScalar(d)); - const newCamDir = pos.clone().sub(newCamPos); - const newCamTarget = new THREE.Vector3().addVectors( - newCamPos, - newCamDir.clone().multiplyScalar(viewer.getMoveSpeed())); - camera.position.copy(newCamPos); - } - let volume = new Potree.PolygonClipVolume(camera); - let m0 = new THREE.Mesh(); - let m1 = new THREE.Mesh(); - let m2 = new THREE.Mesh(); - let m3 = new THREE.Mesh(); - m0.position.set(-1, -1, 0); - m1.position.set( 1, -1, 0); - m2.position.set( 1, 1, 0); - m3.position.set(-1, 1, 0); - volume.markers.push(m0, m1, m2, m3); - volume.initialized = true; - - viewer.scene.addPolygonClipVolume(volume); - clipVolume = volume; - } - const tEnd = performance.now(); - //console.log(tEnd - tStart); - }; - - const moveToImage = (image) => { - console.log("move to image " + image.id); - - const mesh = image.mesh; - const newCamPos = image.position.clone(); - const newCamTarget = mesh.position.clone(); - - viewer.scene.view.setView(newCamPos, newCamTarget, 500, () => { - orientedImageControls.capture(image); - }); - - if(image.texture === null){ - - const target = image; - - const tmpImagePath = `${Potree.resourcePath}/images/loading.jpg`; - new THREE.TextureLoader().load(tmpImagePath, - (texture) => { - if(target.texture === null){ - target.texture = texture; - target.mesh.material.uniforms.tColor.value = texture; - mesh.material.needsUpdate = true; - } - } - ); - - const imagePath = `${imageParamsPath}/../${target.id}`; - new THREE.TextureLoader().load(imagePath, - (texture) => { - target.texture = texture; - target.mesh.material.uniforms.tColor.value = texture; - mesh.material.needsUpdate = true; - } - ); - - - } - }; - - const onMouseClick = (evt) => { - - if(orientedImageControls.hasSomethingCaptured()){ - return; - } - - if(hoveredElement){ - moveToImage(hoveredElement); - } - }; - viewer.renderer.domElement.addEventListener( 'mousemove', onMouseMove, false ); - viewer.renderer.domElement.addEventListener( 'mousedown', onMouseClick, false ); - - viewer.addEventListener("update", () => { - - for(const image of orientedImages){ - const world = image.mesh.matrixWorld; - const {width, height} = image; - const aspect = width / height; - - const camera = viewer.scene.getActiveCamera(); - - const imgPos = image.mesh.getWorldPosition(new THREE.Vector3()); - const camPos = camera.position; - const d = camPos.distanceTo(imgPos); - - const minSize = 1; // in degrees of fov - const a = THREE.Math.degToRad(minSize); - let r = d * Math.tan(a); - r = Math.max(r, 1); - - - image.mesh.scale.set(r * aspect, r, 1); - image.line.scale.set(r * aspect, r, 1); - - image.mesh.material.uniforms.uNear.value = camera.near; - - } - - }); - - const images = new OrientedImages(); - images.node = sceneNode; - images.cameraParamsPath = cameraParamsPath; - images.imageParamsPath = imageParamsPath; - images.cameraParams = cameraParams; - images.imageParams = imageParams; - images.images = orientedImages; - - Potree.debug.moveToImage = moveToImage; - - return images; - } - } - - let sg = new THREE.SphereGeometry(1, 8, 8); - let sgHigh = new THREE.SphereGeometry(1, 128, 128); - - let sm = new THREE.MeshBasicMaterial({side: THREE.BackSide}); - let smHovered = new THREE.MeshBasicMaterial({side: THREE.BackSide, color: 0xff0000}); - - let raycaster = new THREE.Raycaster(); - let currentlyHovered = null; - - let previousView = { - controls: null, - position: null, - target: null, - }; - - class Image360{ - - constructor(file, time, longitude, latitude, altitude, course, pitch, roll){ - this.file = file; - this.time = time; - this.longitude = longitude; - this.latitude = latitude; - this.altitude = altitude; - this.course = course; - this.pitch = pitch; - this.roll = roll; - this.mesh = null; - } - }; - - class Images360 extends EventDispatcher{ - - constructor(viewer){ - super(); - - this.viewer = viewer; - - this.selectingEnabled = true; - - this.images = []; - this.node = new THREE.Object3D(); - - this.sphere = new THREE.Mesh(sgHigh, sm); - this.sphere.visible = false; - this.sphere.scale.set(1000, 1000, 1000); - this.node.add(this.sphere); - this._visible = true; - // this.node.add(label); - - this.focusedImage = null; - - let elUnfocus = document.createElement("input"); - elUnfocus.type = "button"; - elUnfocus.value = "unfocus"; - elUnfocus.style.position = "absolute"; - elUnfocus.style.right = "10px"; - elUnfocus.style.bottom = "10px"; - elUnfocus.style.zIndex = "10000"; - elUnfocus.style.fontSize = "2em"; - elUnfocus.addEventListener("click", () => this.unfocus()); - this.elUnfocus = elUnfocus; - - this.domRoot = viewer.renderer.domElement.parentElement; - this.domRoot.appendChild(elUnfocus); - this.elUnfocus.style.display = "none"; - - viewer.addEventListener("update", () => { - this.update(viewer); - }); - viewer.inputHandler.addInputListener(this); - - this.addEventListener("mousedown", () => { - if(currentlyHovered){ - this.focus(currentlyHovered.image360); - } - }); - - }; - - set visible(visible){ - if(this._visible === visible){ - return; - } - - - for(const image of this.images){ - image.mesh.visible = visible && (this.focusedImage == null); - } - - this.sphere.visible = visible && (this.focusedImage != null); - this._visible = visible; - this.dispatchEvent({ - type: "visibility_changed", - images: this, - }); - } - - get visible(){ - return this._visible; - } - - focus(image360){ - if(this.focusedImage !== null){ - this.unfocus(); - } - - previousView = { - controls: this.viewer.controls, - position: this.viewer.scene.view.position.clone(), - target: viewer.scene.view.getPivot(), - }; - - this.viewer.setControls(this.viewer.orbitControls); - this.viewer.orbitControls.doubleClockZoomEnabled = false; - - for(let image of this.images){ - image.mesh.visible = false; - } - - this.selectingEnabled = false; - - this.sphere.visible = false; - - this.load(image360).then( () => { - this.sphere.visible = true; - this.sphere.material.map = image360.texture; - this.sphere.material.needsUpdate = true; - }); - - { // orientation - let {course, pitch, roll} = image360; - this.sphere.rotation.set( - THREE.Math.degToRad(+roll + 90), - THREE.Math.degToRad(-pitch), - THREE.Math.degToRad(-course + 90), - "ZYX" - ); - } - - this.sphere.position.set(...image360.position); - - let target = new THREE.Vector3(...image360.position); - let dir = target.clone().sub(viewer.scene.view.position).normalize(); - let move = dir.multiplyScalar(0.000001); - let newCamPos = target.clone().sub(move); - - viewer.scene.view.setView( - newCamPos, - target, - 500 - ); - - this.focusedImage = image360; - - this.elUnfocus.style.display = ""; - } - - unfocus(){ - this.selectingEnabled = true; - - for(let image of this.images){ - image.mesh.visible = true; - } - - let image = this.focusedImage; - - if(image === null){ - return; - } - - - this.sphere.material.map = null; - this.sphere.material.needsUpdate = true; - this.sphere.visible = false; - - let pos = viewer.scene.view.position; - let target = viewer.scene.view.getPivot(); - let dir = target.clone().sub(pos).normalize(); - let move = dir.multiplyScalar(10); - let newCamPos = target.clone().sub(move); - - viewer.orbitControls.doubleClockZoomEnabled = true; - viewer.setControls(previousView.controls); - - viewer.scene.view.setView( - previousView.position, - previousView.target, - 500 - ); - - - this.focusedImage = null; - - this.elUnfocus.style.display = "none"; - } - - load(image360){ - - return new Promise(resolve => { - let texture = new THREE.TextureLoader().load(image360.file, resolve); - texture.wrapS = THREE.RepeatWrapping; - texture.repeat.x = -1; - - image360.texture = texture; - }); - - } - - handleHovering(){ - let mouse = viewer.inputHandler.mouse; - let camera = viewer.scene.getActiveCamera(); - let domElement = viewer.renderer.domElement; - - let ray = Potree.Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight); - - // let tStart = performance.now(); - raycaster.ray.copy(ray); - let intersections = raycaster.intersectObjects(this.node.children); - - if(intersections.length === 0){ - // label.visible = false; - - return; - } - - let intersection = intersections[0]; - currentlyHovered = intersection.object; - currentlyHovered.material = smHovered; - - //label.visible = true; - //label.setText(currentlyHovered.image360.file); - //currentlyHovered.getWorldPosition(label.position); - } - - update(){ - - let {viewer} = this; - - if(currentlyHovered){ - currentlyHovered.material = sm; - currentlyHovered = null; - } - - if(this.selectingEnabled){ - this.handleHovering(); - } - - } - - }; - - - class Images360Loader{ - - static async load(url, viewer, params = {}){ - - if(!params.transform){ - params.transform = { - forward: a => a, - }; - } - - let response = await fetch(`${url}/coordinates.txt`); - let text = await response.text(); - - let lines = text.split(/\r?\n/); - let coordinateLines = lines.slice(1); - - let images360 = new Images360(viewer); - - for(let line of coordinateLines){ - - if(line.trim().length === 0){ - continue; - } - - let tokens = line.split(/\t/); - - let [filename, time, long, lat, alt, course, pitch, roll] = tokens; - time = parseFloat(time); - long = parseFloat(long); - lat = parseFloat(lat); - alt = parseFloat(alt); - course = parseFloat(course); - pitch = parseFloat(pitch); - roll = parseFloat(roll); - - filename = filename.replace(/"/g, ""); - let file = `${url}/${filename}`; - - let image360 = new Image360(file, time, long, lat, alt, course, pitch, roll); - - let xy = params.transform.forward([long, lat]); - let position = [...xy, alt]; - image360.position = position; - - images360.images.push(image360); - } - - Images360Loader.createSceneNodes(images360, params.transform); - - return images360; - - } - - static createSceneNodes(images360, transform){ - - for(let image360 of images360.images){ - let {longitude, latitude, altitude} = image360; - let xy = transform.forward([longitude, latitude]); - - let mesh = new THREE.Mesh(sg, sm); - mesh.position.set(...xy, altitude); - mesh.scale.set(1, 1, 1); - mesh.material.transparent = true; - mesh.material.opacity = 0.75; - mesh.image360 = image360; - - { // orientation - var {course, pitch, roll} = image360; - mesh.rotation.set( - THREE.Math.degToRad(+roll + 90), - THREE.Math.degToRad(-pitch), - THREE.Math.degToRad(-course + 90), - "ZYX" - ); - } - - images360.node.add(mesh); - - image360.mesh = mesh; - } - } - - - - }; - - // This is a generated file. Do not edit. - var Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/; - var ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/; - var ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/; - - var unicode = { - Space_Separator: Space_Separator, - ID_Start: ID_Start, - ID_Continue: ID_Continue - }; - - var util = { - isSpaceSeparator (c) { - return typeof c === 'string' && unicode.Space_Separator.test(c) - }, - - isIdStartChar (c) { - return typeof c === 'string' && ( - (c >= 'a' && c <= 'z') || - (c >= 'A' && c <= 'Z') || - (c === '$') || (c === '_') || - unicode.ID_Start.test(c) - ) - }, - - isIdContinueChar (c) { - return typeof c === 'string' && ( - (c >= 'a' && c <= 'z') || - (c >= 'A' && c <= 'Z') || - (c >= '0' && c <= '9') || - (c === '$') || (c === '_') || - (c === '\u200C') || (c === '\u200D') || - unicode.ID_Continue.test(c) - ) - }, - - isDigit (c) { - return typeof c === 'string' && /[0-9]/.test(c) - }, - - isHexDigit (c) { - return typeof c === 'string' && /[0-9A-Fa-f]/.test(c) - }, - }; - - let source; - let parseState; - let stack; - let pos; - let line; - let column; - let token; - let key; - let root; - - var parse = function parse (text, reviver) { - source = String(text); - parseState = 'start'; - stack = []; - pos = 0; - line = 1; - column = 0; - token = undefined; - key = undefined; - root = undefined; - - do { - token = lex(); - - // This code is unreachable. - // if (!parseStates[parseState]) { - // throw invalidParseState() - // } - - parseStates[parseState](); - } while (token.type !== 'eof') - - if (typeof reviver === 'function') { - return internalize({'': root}, '', reviver) - } - - return root - }; - - function internalize (holder, name, reviver) { - const value = holder[name]; - if (value != null && typeof value === 'object') { - for (const key in value) { - const replacement = internalize(value, key, reviver); - if (replacement === undefined) { - delete value[key]; - } else { - value[key] = replacement; - } - } - } - - return reviver.call(holder, name, value) - } - - let lexState; - let buffer; - let doubleQuote; - let sign; - let c; - - function lex () { - lexState = 'default'; - buffer = ''; - doubleQuote = false; - sign = 1; - - for (;;) { - c = peek(); - - // This code is unreachable. - // if (!lexStates[lexState]) { - // throw invalidLexState(lexState) - // } - - const token = lexStates[lexState](); - if (token) { - return token - } - } - } - - function peek () { - if (source[pos]) { - return String.fromCodePoint(source.codePointAt(pos)) - } - } - - function read () { - const c = peek(); - - if (c === '\n') { - line++; - column = 0; - } else if (c) { - column += c.length; - } else { - column++; - } - - if (c) { - pos += c.length; - } - - return c - } - - const lexStates = { - default () { - switch (c) { - case '\t': - case '\v': - case '\f': - case ' ': - case '\u00A0': - case '\uFEFF': - case '\n': - case '\r': - case '\u2028': - case '\u2029': - read(); - return - - case '/': - read(); - lexState = 'comment'; - return - - case undefined: - read(); - return newToken('eof') - } - - if (util.isSpaceSeparator(c)) { - read(); - return - } - - // This code is unreachable. - // if (!lexStates[parseState]) { - // throw invalidLexState(parseState) - // } - - return lexStates[parseState]() - }, - - comment () { - switch (c) { - case '*': - read(); - lexState = 'multiLineComment'; - return - - case '/': - read(); - lexState = 'singleLineComment'; - return - } - - throw invalidChar(read()) - }, - - multiLineComment () { - switch (c) { - case '*': - read(); - lexState = 'multiLineCommentAsterisk'; - return - - case undefined: - throw invalidChar(read()) - } - - read(); - }, - - multiLineCommentAsterisk () { - switch (c) { - case '*': - read(); - return - - case '/': - read(); - lexState = 'default'; - return - - case undefined: - throw invalidChar(read()) - } - - read(); - lexState = 'multiLineComment'; - }, - - singleLineComment () { - switch (c) { - case '\n': - case '\r': - case '\u2028': - case '\u2029': - read(); - lexState = 'default'; - return - - case undefined: - read(); - return newToken('eof') - } - - read(); - }, - - value () { - switch (c) { - case '{': - case '[': - return newToken('punctuator', read()) - - case 'n': - read(); - literal('ull'); - return newToken('null', null) - - case 't': - read(); - literal('rue'); - return newToken('boolean', true) - - case 'f': - read(); - literal('alse'); - return newToken('boolean', false) - - case '-': - case '+': - if (read() === '-') { - sign = -1; - } - - lexState = 'sign'; - return - - case '.': - buffer = read(); - lexState = 'decimalPointLeading'; - return - - case '0': - buffer = read(); - lexState = 'zero'; - return - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - buffer = read(); - lexState = 'decimalInteger'; - return - - case 'I': - read(); - literal('nfinity'); - return newToken('numeric', Infinity) - - case 'N': - read(); - literal('aN'); - return newToken('numeric', NaN) - - case '"': - case "'": - doubleQuote = (read() === '"'); - buffer = ''; - lexState = 'string'; - return - } - - throw invalidChar(read()) - }, - - identifierNameStartEscape () { - if (c !== 'u') { - throw invalidChar(read()) - } - - read(); - const u = unicodeEscape(); - switch (u) { - case '$': - case '_': - break - - default: - if (!util.isIdStartChar(u)) { - throw invalidIdentifier() - } - - break - } - - buffer += u; - lexState = 'identifierName'; - }, - - identifierName () { - switch (c) { - case '$': - case '_': - case '\u200C': - case '\u200D': - buffer += read(); - return - - case '\\': - read(); - lexState = 'identifierNameEscape'; - return - } - - if (util.isIdContinueChar(c)) { - buffer += read(); - return - } - - return newToken('identifier', buffer) - }, - - identifierNameEscape () { - if (c !== 'u') { - throw invalidChar(read()) - } - - read(); - const u = unicodeEscape(); - switch (u) { - case '$': - case '_': - case '\u200C': - case '\u200D': - break - - default: - if (!util.isIdContinueChar(u)) { - throw invalidIdentifier() - } - - break - } - - buffer += u; - lexState = 'identifierName'; - }, - - sign () { - switch (c) { - case '.': - buffer = read(); - lexState = 'decimalPointLeading'; - return - - case '0': - buffer = read(); - lexState = 'zero'; - return - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - buffer = read(); - lexState = 'decimalInteger'; - return - - case 'I': - read(); - literal('nfinity'); - return newToken('numeric', sign * Infinity) - - case 'N': - read(); - literal('aN'); - return newToken('numeric', NaN) - } - - throw invalidChar(read()) - }, - - zero () { - switch (c) { - case '.': - buffer += read(); - lexState = 'decimalPoint'; - return - - case 'e': - case 'E': - buffer += read(); - lexState = 'decimalExponent'; - return - - case 'x': - case 'X': - buffer += read(); - lexState = 'hexadecimal'; - return - } - - return newToken('numeric', sign * 0) - }, - - decimalInteger () { - switch (c) { - case '.': - buffer += read(); - lexState = 'decimalPoint'; - return - - case 'e': - case 'E': - buffer += read(); - lexState = 'decimalExponent'; - return - } - - if (util.isDigit(c)) { - buffer += read(); - return - } - - return newToken('numeric', sign * Number(buffer)) - }, - - decimalPointLeading () { - if (util.isDigit(c)) { - buffer += read(); - lexState = 'decimalFraction'; - return - } - - throw invalidChar(read()) - }, - - decimalPoint () { - switch (c) { - case 'e': - case 'E': - buffer += read(); - lexState = 'decimalExponent'; - return - } - - if (util.isDigit(c)) { - buffer += read(); - lexState = 'decimalFraction'; - return - } - - return newToken('numeric', sign * Number(buffer)) - }, - - decimalFraction () { - switch (c) { - case 'e': - case 'E': - buffer += read(); - lexState = 'decimalExponent'; - return - } - - if (util.isDigit(c)) { - buffer += read(); - return - } - - return newToken('numeric', sign * Number(buffer)) - }, - - decimalExponent () { - switch (c) { - case '+': - case '-': - buffer += read(); - lexState = 'decimalExponentSign'; - return - } - - if (util.isDigit(c)) { - buffer += read(); - lexState = 'decimalExponentInteger'; - return - } - - throw invalidChar(read()) - }, - - decimalExponentSign () { - if (util.isDigit(c)) { - buffer += read(); - lexState = 'decimalExponentInteger'; - return - } - - throw invalidChar(read()) - }, - - decimalExponentInteger () { - if (util.isDigit(c)) { - buffer += read(); - return - } - - return newToken('numeric', sign * Number(buffer)) - }, - - hexadecimal () { - if (util.isHexDigit(c)) { - buffer += read(); - lexState = 'hexadecimalInteger'; - return - } - - throw invalidChar(read()) - }, - - hexadecimalInteger () { - if (util.isHexDigit(c)) { - buffer += read(); - return - } - - return newToken('numeric', sign * Number(buffer)) - }, - - string () { - switch (c) { - case '\\': - read(); - buffer += escape(); - return - - case '"': - if (doubleQuote) { - read(); - return newToken('string', buffer) - } - - buffer += read(); - return - - case "'": - if (!doubleQuote) { - read(); - return newToken('string', buffer) - } - - buffer += read(); - return - - case '\n': - case '\r': - throw invalidChar(read()) - - case '\u2028': - case '\u2029': - separatorChar(c); - break - - case undefined: - throw invalidChar(read()) - } - - buffer += read(); - }, - - start () { - switch (c) { - case '{': - case '[': - return newToken('punctuator', read()) - - // This code is unreachable since the default lexState handles eof. - // case undefined: - // return newToken('eof') - } - - lexState = 'value'; - }, - - beforePropertyName () { - switch (c) { - case '$': - case '_': - buffer = read(); - lexState = 'identifierName'; - return - - case '\\': - read(); - lexState = 'identifierNameStartEscape'; - return - - case '}': - return newToken('punctuator', read()) - - case '"': - case "'": - doubleQuote = (read() === '"'); - lexState = 'string'; - return - } - - if (util.isIdStartChar(c)) { - buffer += read(); - lexState = 'identifierName'; - return - } - - throw invalidChar(read()) - }, - - afterPropertyName () { - if (c === ':') { - return newToken('punctuator', read()) - } - - throw invalidChar(read()) - }, - - beforePropertyValue () { - lexState = 'value'; - }, - - afterPropertyValue () { - switch (c) { - case ',': - case '}': - return newToken('punctuator', read()) - } - - throw invalidChar(read()) - }, - - beforeArrayValue () { - if (c === ']') { - return newToken('punctuator', read()) - } - - lexState = 'value'; - }, - - afterArrayValue () { - switch (c) { - case ',': - case ']': - return newToken('punctuator', read()) - } - - throw invalidChar(read()) - }, - - end () { - // This code is unreachable since it's handled by the default lexState. - // if (c === undefined) { - // read() - // return newToken('eof') - // } - - throw invalidChar(read()) - }, - }; - - function newToken (type, value) { - return { - type, - value, - line, - column, - } - } - - function literal (s) { - for (const c of s) { - const p = peek(); - - if (p !== c) { - throw invalidChar(read()) - } - - read(); - } - } - - function escape () { - const c = peek(); - switch (c) { - case 'b': - read(); - return '\b' - - case 'f': - read(); - return '\f' - - case 'n': - read(); - return '\n' - - case 'r': - read(); - return '\r' - - case 't': - read(); - return '\t' - - case 'v': - read(); - return '\v' - - case '0': - read(); - if (util.isDigit(peek())) { - throw invalidChar(read()) - } - - return '\0' - - case 'x': - read(); - return hexEscape() - - case 'u': - read(); - return unicodeEscape() - - case '\n': - case '\u2028': - case '\u2029': - read(); - return '' - - case '\r': - read(); - if (peek() === '\n') { - read(); - } - - return '' - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - throw invalidChar(read()) - - case undefined: - throw invalidChar(read()) - } - - return read() - } - - function hexEscape () { - let buffer = ''; - let c = peek(); - - if (!util.isHexDigit(c)) { - throw invalidChar(read()) - } - - buffer += read(); - - c = peek(); - if (!util.isHexDigit(c)) { - throw invalidChar(read()) - } - - buffer += read(); - - return String.fromCodePoint(parseInt(buffer, 16)) - } - - function unicodeEscape () { - let buffer = ''; - let count = 4; - - while (count-- > 0) { - const c = peek(); - if (!util.isHexDigit(c)) { - throw invalidChar(read()) - } - - buffer += read(); - } - - return String.fromCodePoint(parseInt(buffer, 16)) - } - - const parseStates = { - start () { - if (token.type === 'eof') { - throw invalidEOF() - } - - push(); - }, - - beforePropertyName () { - switch (token.type) { - case 'identifier': - case 'string': - key = token.value; - parseState = 'afterPropertyName'; - return - - case 'punctuator': - // This code is unreachable since it's handled by the lexState. - // if (token.value !== '}') { - // throw invalidToken() - // } - - pop(); - return - - case 'eof': - throw invalidEOF() - } - - // This code is unreachable since it's handled by the lexState. - // throw invalidToken() - }, - - afterPropertyName () { - // This code is unreachable since it's handled by the lexState. - // if (token.type !== 'punctuator' || token.value !== ':') { - // throw invalidToken() - // } - - if (token.type === 'eof') { - throw invalidEOF() - } - - parseState = 'beforePropertyValue'; - }, - - beforePropertyValue () { - if (token.type === 'eof') { - throw invalidEOF() - } - - push(); - }, - - beforeArrayValue () { - if (token.type === 'eof') { - throw invalidEOF() - } - - if (token.type === 'punctuator' && token.value === ']') { - pop(); - return - } - - push(); - }, - - afterPropertyValue () { - // This code is unreachable since it's handled by the lexState. - // if (token.type !== 'punctuator') { - // throw invalidToken() - // } - - if (token.type === 'eof') { - throw invalidEOF() - } - - switch (token.value) { - case ',': - parseState = 'beforePropertyName'; - return - - case '}': - pop(); - } - - // This code is unreachable since it's handled by the lexState. - // throw invalidToken() - }, - - afterArrayValue () { - // This code is unreachable since it's handled by the lexState. - // if (token.type !== 'punctuator') { - // throw invalidToken() - // } - - if (token.type === 'eof') { - throw invalidEOF() - } - - switch (token.value) { - case ',': - parseState = 'beforeArrayValue'; - return - - case ']': - pop(); - } - - // This code is unreachable since it's handled by the lexState. - // throw invalidToken() - }, - - end () { - // This code is unreachable since it's handled by the lexState. - // if (token.type !== 'eof') { - // throw invalidToken() - // } - }, - }; - - function push () { - let value; - - switch (token.type) { - case 'punctuator': - switch (token.value) { - case '{': - value = {}; - break - - case '[': - value = []; - break - } - - break - - case 'null': - case 'boolean': - case 'numeric': - case 'string': - value = token.value; - break - - // This code is unreachable. - // default: - // throw invalidToken() - } - - if (root === undefined) { - root = value; - } else { - const parent = stack[stack.length - 1]; - if (Array.isArray(parent)) { - parent.push(value); - } else { - parent[key] = value; - } - } - - if (value !== null && typeof value === 'object') { - stack.push(value); - - if (Array.isArray(value)) { - parseState = 'beforeArrayValue'; - } else { - parseState = 'beforePropertyName'; - } - } else { - const current = stack[stack.length - 1]; - if (current == null) { - parseState = 'end'; - } else if (Array.isArray(current)) { - parseState = 'afterArrayValue'; - } else { - parseState = 'afterPropertyValue'; - } - } - } - - function pop () { - stack.pop(); - - const current = stack[stack.length - 1]; - if (current == null) { - parseState = 'end'; - } else if (Array.isArray(current)) { - parseState = 'afterArrayValue'; - } else { - parseState = 'afterPropertyValue'; - } - } - - // This code is unreachable. - // function invalidParseState () { - // return new Error(`JSON5: invalid parse state '${parseState}'`) - // } - - // This code is unreachable. - // function invalidLexState (state) { - // return new Error(`JSON5: invalid lex state '${state}'`) - // } - - function invalidChar (c) { - if (c === undefined) { - return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) - } - - return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) - } - - function invalidEOF () { - return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) - } - - // This code is unreachable. - // function invalidToken () { - // if (token.type === 'eof') { - // return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) - // } - - // const c = String.fromCodePoint(token.value.codePointAt(0)) - // return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) - // } - - function invalidIdentifier () { - column -= 5; - return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`) - } - - function separatorChar (c) { - console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`); - } - - function formatChar (c) { - const replacements = { - "'": "\\'", - '"': '\\"', - '\\': '\\\\', - '\b': '\\b', - '\f': '\\f', - '\n': '\\n', - '\r': '\\r', - '\t': '\\t', - '\v': '\\v', - '\0': '\\0', - '\u2028': '\\u2028', - '\u2029': '\\u2029', - }; - - if (replacements[c]) { - return replacements[c] - } - - if (c < ' ') { - const hexString = c.charCodeAt(0).toString(16); - return '\\x' + ('00' + hexString).substring(hexString.length) - } - - return c - } - - function syntaxError (message) { - const err = new SyntaxError(message); - err.lineNumber = line; - err.columnNumber = column; - return err - } - - var stringify = function stringify (value, replacer, space) { - const stack = []; - let indent = ''; - let propertyList; - let replacerFunc; - let gap = ''; - let quote; - - if ( - replacer != null && - typeof replacer === 'object' && - !Array.isArray(replacer) - ) { - space = replacer.space; - quote = replacer.quote; - replacer = replacer.replacer; - } - - if (typeof replacer === 'function') { - replacerFunc = replacer; - } else if (Array.isArray(replacer)) { - propertyList = []; - for (const v of replacer) { - let item; - - if (typeof v === 'string') { - item = v; - } else if ( - typeof v === 'number' || - v instanceof String || - v instanceof Number - ) { - item = String(v); - } - - if (item !== undefined && propertyList.indexOf(item) < 0) { - propertyList.push(item); - } - } - } - - if (space instanceof Number) { - space = Number(space); - } else if (space instanceof String) { - space = String(space); - } - - if (typeof space === 'number') { - if (space > 0) { - space = Math.min(10, Math.floor(space)); - gap = ' '.substr(0, space); - } - } else if (typeof space === 'string') { - gap = space.substr(0, 10); - } - - return serializeProperty('', {'': value}) - - function serializeProperty (key, holder) { - let value = holder[key]; - if (value != null) { - if (typeof value.toJSON5 === 'function') { - value = value.toJSON5(key); - } else if (typeof value.toJSON === 'function') { - value = value.toJSON(key); - } - } - - if (replacerFunc) { - value = replacerFunc.call(holder, key, value); - } - - if (value instanceof Number) { - value = Number(value); - } else if (value instanceof String) { - value = String(value); - } else if (value instanceof Boolean) { - value = value.valueOf(); - } - - switch (value) { - case null: return 'null' - case true: return 'true' - case false: return 'false' - } - - if (typeof value === 'string') { - return quoteString(value, false) - } - - if (typeof value === 'number') { - return String(value) - } - - if (typeof value === 'object') { - return Array.isArray(value) ? serializeArray(value) : serializeObject(value) - } - - return undefined - } - - function quoteString (value) { - const quotes = { - "'": 0.1, - '"': 0.2, - }; - - const replacements = { - "'": "\\'", - '"': '\\"', - '\\': '\\\\', - '\b': '\\b', - '\f': '\\f', - '\n': '\\n', - '\r': '\\r', - '\t': '\\t', - '\v': '\\v', - '\0': '\\0', - '\u2028': '\\u2028', - '\u2029': '\\u2029', - }; - - let product = ''; - - for (let i = 0; i < value.length; i++) { - const c = value[i]; - switch (c) { - case "'": - case '"': - quotes[c]++; - product += c; - continue - - case '\0': - if (util.isDigit(value[i + 1])) { - product += '\\x00'; - continue - } - } - - if (replacements[c]) { - product += replacements[c]; - continue - } - - if (c < ' ') { - let hexString = c.charCodeAt(0).toString(16); - product += '\\x' + ('00' + hexString).substring(hexString.length); - continue - } - - product += c; - } - - const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b); - - product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]); - - return quoteChar + product + quoteChar - } - - function serializeObject (value) { - if (stack.indexOf(value) >= 0) { - throw TypeError('Converting circular structure to JSON5') - } - - stack.push(value); - - let stepback = indent; - indent = indent + gap; - - let keys = propertyList || Object.keys(value); - let partial = []; - for (const key of keys) { - const propertyString = serializeProperty(key, value); - if (propertyString !== undefined) { - let member = serializeKey(key) + ':'; - if (gap !== '') { - member += ' '; - } - member += propertyString; - partial.push(member); - } - } - - let final; - if (partial.length === 0) { - final = '{}'; - } else { - let properties; - if (gap === '') { - properties = partial.join(','); - final = '{' + properties + '}'; - } else { - let separator = ',\n' + indent; - properties = partial.join(separator); - final = '{\n' + indent + properties + ',\n' + stepback + '}'; - } - } - - stack.pop(); - indent = stepback; - return final - } - - function serializeKey (key) { - if (key.length === 0) { - return quoteString(key, true) - } - - const firstChar = String.fromCodePoint(key.codePointAt(0)); - if (!util.isIdStartChar(firstChar)) { - return quoteString(key, true) - } - - for (let i = firstChar.length; i < key.length; i++) { - if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) { - return quoteString(key, true) - } - } - - return key - } - - function serializeArray (value) { - if (stack.indexOf(value) >= 0) { - throw TypeError('Converting circular structure to JSON5') - } - - stack.push(value); - - let stepback = indent; - indent = indent + gap; - - let partial = []; - for (let i = 0; i < value.length; i++) { - const propertyString = serializeProperty(String(i), value); - partial.push((propertyString !== undefined) ? propertyString : 'null'); - } - - let final; - if (partial.length === 0) { - final = '[]'; - } else { - if (gap === '') { - let properties = partial.join(','); - final = '[' + properties + ']'; - } else { - let separator = ',\n' + indent; - let properties = partial.join(separator); - final = '[\n' + indent + properties + ',\n' + stepback + ']'; - } - } - - stack.pop(); - indent = stepback; - return final - } - }; - - const JSON5 = { - parse, - stringify, - }; - - var lib = JSON5; - - class Sidebar{ - - constructor(viewer){ - this.viewer = viewer; - - this.measuringTool = viewer.measuringTool; - this.profileTool = viewer.profileTool; - this.volumeTool = viewer.volumeTool; - - this.dom = $("#sidebar_root"); - } - - createToolIcon(icon, title, callback){ - let element = $(` - - `); - - element.click(callback); - - return element; - } - - init(){ - - this.initAccordion(); - this.initAppearance(); - this.initToolbar(); - this.initScene(); - this.initNavigation(); - this.initFilters(); - this.initClippingTool(); - this.initSettings(); - - $('#potree_version_number').html(Potree.version.major + "." + Potree.version.minor + Potree.version.suffix); - } - - - - initToolbar(){ - - // ANGLE - let elToolbar = $('#tools'); - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/angle.png', - '[title]tt.angle_measurement', - () => { - $('#menu_measurements').next().slideDown(); - let measurement = this.measuringTool.startInsertion({ - showDistances: false, - showAngles: true, - showArea: false, - closed: true, - maxMarkers: 3, - name: 'Angle'}); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // POINT - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/point.svg', - '[title]tt.point_measurement', - () => { - $('#menu_measurements').next().slideDown(); - let measurement = this.measuringTool.startInsertion({ - showDistances: false, - showAngles: false, - showCoordinates: true, - showArea: false, - closed: true, - maxMarkers: 1, - name: 'Point'}); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // DISTANCE - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/distance.svg', - '[title]tt.distance_measurement', - () => { - $('#menu_measurements').next().slideDown(); - let measurement = this.measuringTool.startInsertion({ - showDistances: true, - showArea: false, - closed: false, - name: 'Distance'}); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // HEIGHT - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/height.svg', - '[title]tt.height_measurement', - () => { - $('#menu_measurements').next().slideDown(); - let measurement = this.measuringTool.startInsertion({ - showDistances: false, - showHeight: true, - showArea: false, - closed: false, - maxMarkers: 2, - name: 'Height'}); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // CIRCLE - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/circle.svg', - '[title]tt.circle_measurement', - () => { - $('#menu_measurements').next().slideDown(); - let measurement = this.measuringTool.startInsertion({ - showDistances: false, - showHeight: false, - showArea: false, - showCircle: true, - showEdges: false, - closed: false, - maxMarkers: 3, - name: 'Circle'}); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // AZIMUTH - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/azimuth.svg', - 'Azimuth', - () => { - $('#menu_measurements').next().slideDown(); - let measurement = this.measuringTool.startInsertion({ - showDistances: false, - showHeight: false, - showArea: false, - showCircle: false, - showEdges: false, - showAzimuth: true, - closed: false, - maxMarkers: 2, - name: 'Azimuth'}); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // AREA - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/area.svg', - '[title]tt.area_measurement', - () => { - $('#menu_measurements').next().slideDown(); - let measurement = this.measuringTool.startInsertion({ - showDistances: true, - showArea: true, - closed: true, - name: 'Area'}); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // VOLUME - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/volume.svg', - '[title]tt.volume_measurement', - () => { - let volume = this.volumeTool.startInsertion(); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === volume.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // SPHERE VOLUME - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/sphere_distances.svg', - '[title]tt.volume_measurement', - () => { - let volume = this.volumeTool.startInsertion({type: SphereVolume}); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === volume.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // PROFILE - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/profile.svg', - '[title]tt.height_profile', - () => { - $('#menu_measurements').next().slideDown(); ; - let profile = this.profileTool.startInsertion(); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === profile.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // ANNOTATION - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/annotation.svg', - '[title]tt.annotation', - () => { - $('#menu_measurements').next().slideDown(); ; - let annotation = this.viewer.annotationTool.startInsertion(); - - let annotationsRoot = $("#jstree_scene").jstree().get_json("annotations"); - let jsonNode = annotationsRoot.children.find(child => child.data.uuid === annotation.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // REMOVE ALL - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/reset_tools.svg', - '[title]tt.remove_all_measurement', - () => { - this.viewer.scene.removeAllMeasurements(); - } - )); - - - { // SHOW / HIDE Measurements - let elShow = $("#measurement_options_show"); - elShow.selectgroup({title: "Show/Hide labels"}); - - elShow.find("input").click( (e) => { - const show = e.target.value === "SHOW"; - this.measuringTool.showLabels = show; - }); - - let currentShow = this.measuringTool.showLabels ? "SHOW" : "HIDE"; - elShow.find(`input[value=${currentShow}]`).trigger("click"); - } - } - - initScene(){ - - let elScene = $("#menu_scene"); - let elObjects = elScene.next().find("#scene_objects"); - let elProperties = elScene.next().find("#scene_object_properties"); - - - { - let elExport = elScene.next().find("#scene_export"); - - let geoJSONIcon = `${Potree.resourcePath}/icons/file_geojson.svg`; - let dxfIcon = `${Potree.resourcePath}/icons/file_dxf.svg`; - let potreeIcon = `${Potree.resourcePath}/icons/file_potree.svg`; - - elExport.append(` - Export:
        - - - - `); - - let elDownloadJSON = elExport.find("img[name=geojson_export_button]").parent(); - elDownloadJSON.click( (event) => { - let scene = this.viewer.scene; - let measurements = [...scene.measurements, ...scene.profiles, ...scene.volumes]; - - if(measurements.length > 0){ - let geoJson = GeoJSONExporter.toString(measurements); - - let url = window.URL.createObjectURL(new Blob([geoJson], {type: 'data:application/octet-stream'})); - elDownloadJSON.attr('href', url); - }else { - this.viewer.postError("no measurements to export"); - event.preventDefault(); - } - }); - - let elDownloadDXF = elExport.find("img[name=dxf_export_button]").parent(); - elDownloadDXF.click( (event) => { - let scene = this.viewer.scene; - let measurements = [...scene.measurements, ...scene.profiles, ...scene.volumes]; - - if(measurements.length > 0){ - let dxf = DXFExporter.toString(measurements); - - let url = window.URL.createObjectURL(new Blob([dxf], {type: 'data:application/octet-stream'})); - elDownloadDXF.attr('href', url); - }else { - this.viewer.postError("no measurements to export"); - event.preventDefault(); - } - }); - - let elDownloadPotree = elExport.find("img[name=potree_export_button]").parent(); - elDownloadPotree.click( (event) => { - - let data = Potree.saveProject(this.viewer); - let dataString = lib.stringify(data, null, "\t"); - - let url = window.URL.createObjectURL(new Blob([dataString], {type: 'data:application/octet-stream'})); - elDownloadPotree.attr('href', url); - }); - } - - let propertiesPanel = new PropertiesPanel(elProperties, this.viewer); - propertiesPanel.setScene(this.viewer.scene); - - localStorage.removeItem('jstree'); - - let tree = $(`
        `); - elObjects.append(tree); - - tree.jstree({ - 'plugins': ["checkbox", "state"], - 'core': { - "dblclick_toggle": false, - "state": { - "checked" : true - }, - 'check_callback': true, - "expand_selected_onload": true - }, - "checkbox" : { - "keep_selected_style": true, - "three_state": false, - "whole_node": false, - "tie_selection": false, - }, - }); - - let createNode = (parent, text, icon, object) => { - let nodeID = tree.jstree('create_node', parent, { - "text": text, - "icon": icon, - "data": object - }, - "last", false, false); - - if(object.visible){ - tree.jstree('check_node', nodeID); - }else { - tree.jstree('uncheck_node', nodeID); - } - - return nodeID; - }; - - let pcID = tree.jstree('create_node', "#", { "text": "Point Clouds", "id": "pointclouds"}, "last", false, false); - let measurementID = tree.jstree('create_node', "#", { "text": "Measurements", "id": "measurements" }, "last", false, false); - let annotationsID = tree.jstree('create_node', "#", { "text": "Annotations", "id": "annotations" }, "last", false, false); - let otherID = tree.jstree('create_node', "#", { "text": "Other", "id": "other" }, "last", false, false); - let vectorsID = tree.jstree('create_node', "#", { "text": "Vectors", "id": "vectors" }, "last", false, false); - let imagesID = tree.jstree('create_node', "#", { "text": " Images", "id": "images" }, "last", false, false); - - tree.jstree("check_node", pcID); - tree.jstree("check_node", measurementID); - tree.jstree("check_node", annotationsID); - tree.jstree("check_node", otherID); - tree.jstree("check_node", vectorsID); - tree.jstree("check_node", imagesID); - - tree.on('create_node.jstree', (e, data) => { - tree.jstree("open_all"); - }); - - tree.on("select_node.jstree", (e, data) => { - let object = data.node.data; - propertiesPanel.set(object); - - this.viewer.inputHandler.deselectAll(); - - if(object instanceof Volume){ - this.viewer.inputHandler.toggleSelection(object); - } - - $(this.viewer.renderer.domElement).focus(); - }); - - tree.on("deselect_node.jstree", (e, data) => { - propertiesPanel.set(null); - }); - - tree.on("delete_node.jstree", (e, data) => { - propertiesPanel.set(null); - }); - - tree.on('dblclick','.jstree-anchor', (e) => { - - let instance = $.jstree.reference(e.target); - let node = instance.get_node(e.target); - let object = node.data; - - // ignore double click on checkbox - if(e.target.classList.contains("jstree-checkbox")){ - return; - } - - if(object instanceof PointCloudTree){ - let box = this.viewer.getBoundingBox([object]); - let node = new THREE.Object3D(); - node.boundingBox = box; - this.viewer.zoomTo(node, 1, 500); - }else if(object instanceof Measure){ - let points = object.points.map(p => p.position); - let box = new THREE.Box3().setFromPoints(points); - if(box.getSize(new THREE.Vector3()).length() > 0){ - let node = new THREE.Object3D(); - node.boundingBox = box; - this.viewer.zoomTo(node, 2, 500); - } - }else if(object instanceof Profile){ - let points = object.points; - let box = new THREE.Box3().setFromPoints(points); - if(box.getSize(new THREE.Vector3()).length() > 0){ - let node = new THREE.Object3D(); - node.boundingBox = box; - this.viewer.zoomTo(node, 1, 500); - } - }else if(object instanceof Volume){ - - let box = object.boundingBox.clone().applyMatrix4(object.matrixWorld); - - if(box.getSize(new THREE.Vector3()).length() > 0){ - let node = new THREE.Object3D(); - node.boundingBox = box; - this.viewer.zoomTo(node, 1, 500); - } - }else if(object instanceof Annotation){ - object.moveHere(this.viewer.scene.getActiveCamera()); - }else if(object instanceof PolygonClipVolume){ - let dir = object.camera.getWorldDirection(new THREE.Vector3()); - let target; - - if(object.camera instanceof THREE.OrthographicCamera){ - dir.multiplyScalar(object.camera.right); - target = new THREE.Vector3().addVectors(object.camera.position, dir); - this.viewer.setCameraMode(CameraMode.ORTHOGRAPHIC); - }else if(object.camera instanceof THREE.PerspectiveCamera){ - dir.multiplyScalar(this.viewer.scene.view.radius); - target = new THREE.Vector3().addVectors(object.camera.position, dir); - this.viewer.setCameraMode(CameraMode.PERSPECTIVE); - } - - this.viewer.scene.view.position.copy(object.camera.position); - this.viewer.scene.view.lookAt(target); - }else if(object instanceof THREE.SpotLight){ - let distance = (object.distance > 0) ? object.distance / 4 : 5 * 1000; - let position = object.position; - let target = new THREE.Vector3().addVectors( - position, - object.getWorldDirection(new THREE.Vector3()).multiplyScalar(distance)); - - this.viewer.scene.view.position.copy(object.position); - this.viewer.scene.view.lookAt(target); - }else if(object instanceof THREE.Object3D){ - let box = new THREE.Box3().setFromObject(object); - - if(box.getSize(new THREE.Vector3()).length() > 0){ - let node = new THREE.Object3D(); - node.boundingBox = box; - this.viewer.zoomTo(node, 1, 500); - } - }else if(object instanceof OrientedImage){ - // TODO zoom to images - - // let box = new THREE.Box3().setFromObject(object); - - // if(box.getSize(new THREE.Vector3()).length() > 0){ - // let node = new THREE.Object3D(); - // node.boundingBox = box; - // this.viewer.zoomTo(node, 1, 500); - // } - }else if(object instanceof Images360){ - // TODO - }else if(object instanceof Geopackage){ - // TODO - } - }); - - tree.on("uncheck_node.jstree", (e, data) => { - let object = data.node.data; - - if(object){ - object.visible = false; - } - }); - - tree.on("check_node.jstree", (e, data) => { - let object = data.node.data; - - if(object){ - object.visible = true; - } - }); - - - let onPointCloudAdded = (e) => { - let pointcloud = e.pointcloud; - let cloudIcon = `${Potree.resourcePath}/icons/cloud.svg`; - let node = createNode(pcID, pointcloud.name, cloudIcon, pointcloud); - - pointcloud.addEventListener("visibility_changed", () => { - if(pointcloud.visible){ - tree.jstree('check_node', node); - }else { - tree.jstree('uncheck_node', node); - } - }); - }; - - let onMeasurementAdded = (e) => { - let measurement = e.measurement; - let icon = Utils.getMeasurementIcon(measurement); - createNode(measurementID, measurement.name, icon, measurement); - }; - - let onVolumeAdded = (e) => { - let volume = e.volume; - let icon = Utils.getMeasurementIcon(volume); - let node = createNode(measurementID, volume.name, icon, volume); - - volume.addEventListener("visibility_changed", () => { - if(volume.visible){ - tree.jstree('check_node', node); - }else { - tree.jstree('uncheck_node', node); - } - }); - }; - - let onProfileAdded = (e) => { - let profile = e.profile; - let icon = Utils.getMeasurementIcon(profile); - createNode(measurementID, profile.name, icon, profile); - }; - - let onAnnotationAdded = (e) => { - let annotation = e.annotation; - - let annotationIcon = `${Potree.resourcePath}/icons/annotation.svg`; - let parentID = this.annotationMapping.get(annotation.parent); - let annotationID = createNode(parentID, annotation.title, annotationIcon, annotation); - this.annotationMapping.set(annotation, annotationID); - - annotation.addEventListener("annotation_changed", (e) => { - let annotationsRoot = $("#jstree_scene").jstree().get_json("annotations"); - let jsonNode = annotationsRoot.children.find(child => child.data.uuid === annotation.uuid); - - $.jstree.reference(jsonNode.id).rename_node(jsonNode.id, annotation.title); - }); - }; - - let onCameraAnimationAdded = (e) => { - const animation = e.animation; - - const animationIcon = `${Potree.resourcePath}/icons/camera_animation.svg`; - createNode(otherID, "animation", animationIcon, animation); - }; - - let onOrientedImagesAdded = (e) => { - const images = e.images; - - const imagesIcon = `${Potree.resourcePath}/icons/picture.svg`; - const node = createNode(imagesID, "images", imagesIcon, images); - - images.addEventListener("visibility_changed", () => { - if(images.visible){ - tree.jstree('check_node', node); - }else { - tree.jstree('uncheck_node', node); - } - }); - }; - - let onImages360Added = (e) => { - const images = e.images; - - const imagesIcon = `${Potree.resourcePath}/icons/picture.svg`; - const node = createNode(imagesID, "360° images", imagesIcon, images); - - images.addEventListener("visibility_changed", () => { - if(images.visible){ - tree.jstree('check_node', node); - }else { - tree.jstree('uncheck_node', node); - } - }); - }; - - const onGeopackageAdded = (e) => { - const geopackage = e.geopackage; - - const geopackageIcon = `${Potree.resourcePath}/icons/triangle.svg`; - const tree = $(`#jstree_scene`); - const parentNode = "vectors"; - - for(const layer of geopackage.node.children){ - const name = layer.name; - - let shpPointsID = tree.jstree('create_node', parentNode, { - "text": name, - "icon": geopackageIcon, - "object": layer, - "data": layer, - }, - "last", false, false); - tree.jstree(layer.visible ? "check_node" : "uncheck_node", shpPointsID); - } - - }; - - this.viewer.scene.addEventListener("pointcloud_added", onPointCloudAdded); - this.viewer.scene.addEventListener("measurement_added", onMeasurementAdded); - this.viewer.scene.addEventListener("profile_added", onProfileAdded); - this.viewer.scene.addEventListener("volume_added", onVolumeAdded); - this.viewer.scene.addEventListener("camera_animation_added", onCameraAnimationAdded); - this.viewer.scene.addEventListener("oriented_images_added", onOrientedImagesAdded); - this.viewer.scene.addEventListener("360_images_added", onImages360Added); - this.viewer.scene.addEventListener("geopackage_added", onGeopackageAdded); - this.viewer.scene.addEventListener("polygon_clip_volume_added", onVolumeAdded); - this.viewer.scene.annotations.addEventListener("annotation_added", onAnnotationAdded); - - let onMeasurementRemoved = (e) => { - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === e.measurement.uuid); - - tree.jstree("delete_node", jsonNode.id); - }; - - let onVolumeRemoved = (e) => { - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === e.volume.uuid); - - tree.jstree("delete_node", jsonNode.id); - }; - - let onPolygonClipVolumeRemoved = (e) => { - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === e.volume.uuid); - - tree.jstree("delete_node", jsonNode.id); - }; - - let onProfileRemoved = (e) => { - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === e.profile.uuid); - - tree.jstree("delete_node", jsonNode.id); - }; - - this.viewer.scene.addEventListener("measurement_removed", onMeasurementRemoved); - this.viewer.scene.addEventListener("volume_removed", onVolumeRemoved); - this.viewer.scene.addEventListener("polygon_clip_volume_removed", onPolygonClipVolumeRemoved); - this.viewer.scene.addEventListener("profile_removed", onProfileRemoved); - - { - let annotationIcon = `${Potree.resourcePath}/icons/annotation.svg`; - this.annotationMapping = new Map(); - this.annotationMapping.set(this.viewer.scene.annotations, annotationsID); - this.viewer.scene.annotations.traverseDescendants(annotation => { - let parentID = this.annotationMapping.get(annotation.parent); - let annotationID = createNode(parentID, annotation.title, annotationIcon, annotation); - this.annotationMapping.set(annotation, annotationID); - }); - } - - const scene = this.viewer.scene; - for(let pointcloud of scene.pointclouds){ - onPointCloudAdded({pointcloud: pointcloud}); - } - - for(let measurement of scene.measurements){ - onMeasurementAdded({measurement: measurement}); - } - - for(let volume of [...scene.volumes, ...scene.polygonClipVolumes]){ - onVolumeAdded({volume: volume}); - } - - for(let animation of scene.cameraAnimations){ - onCameraAnimationAdded({animation: animation}); - } - - for(let images of scene.orientedImages){ - onOrientedImagesAdded({images: images}); - } - - for(let images of scene.images360){ - onImages360Added({images: images}); - } - - for(const geopackage of scene.geopackages){ - onGeopackageAdded({geopackage: geopackage}); - } - - for(let profile of scene.profiles){ - onProfileAdded({profile: profile}); - } - - { - createNode(otherID, "Camera", null, new THREE.Camera()); - } - - this.viewer.addEventListener("scene_changed", (e) => { - propertiesPanel.setScene(e.scene); - - e.oldScene.removeEventListener("pointcloud_added", onPointCloudAdded); - e.oldScene.removeEventListener("measurement_added", onMeasurementAdded); - e.oldScene.removeEventListener("profile_added", onProfileAdded); - e.oldScene.removeEventListener("volume_added", onVolumeAdded); - e.oldScene.removeEventListener("polygon_clip_volume_added", onVolumeAdded); - e.oldScene.removeEventListener("measurement_removed", onMeasurementRemoved); - - e.scene.addEventListener("pointcloud_added", onPointCloudAdded); - e.scene.addEventListener("measurement_added", onMeasurementAdded); - e.scene.addEventListener("profile_added", onProfileAdded); - e.scene.addEventListener("volume_added", onVolumeAdded); - e.scene.addEventListener("polygon_clip_volume_added", onVolumeAdded); - e.scene.addEventListener("measurement_removed", onMeasurementRemoved); - }); - - } - - initClippingTool(){ - - - this.viewer.addEventListener("cliptask_changed", (event) => { - console.log("TODO"); - }); - - this.viewer.addEventListener("clipmethod_changed", (event) => { - console.log("TODO"); - }); - - { - let elClipTask = $("#cliptask_options"); - elClipTask.selectgroup({title: "Clip Task"}); - - elClipTask.find("input").click( (e) => { - this.viewer.setClipTask(ClipTask[e.target.value]); - }); - - let currentClipTask = Object.keys(ClipTask) - .filter(key => ClipTask[key] === this.viewer.clipTask); - elClipTask.find(`input[value=${currentClipTask}]`).trigger("click"); - } - - { - let elClipMethod = $("#clipmethod_options"); - elClipMethod.selectgroup({title: "Clip Method"}); - - elClipMethod.find("input").click( (e) => { - this.viewer.setClipMethod(ClipMethod[e.target.value]); - }); - - let currentClipMethod = Object.keys(ClipMethod) - .filter(key => ClipMethod[key] === this.viewer.clipMethod); - elClipMethod.find(`input[value=${currentClipMethod}]`).trigger("click"); - } - - let clippingToolBar = $("#clipping_tools"); - - // CLIP VOLUME - clippingToolBar.append(this.createToolIcon( - Potree.resourcePath + '/icons/clip_volume.svg', - '[title]tt.clip_volume', - () => { - let item = this.volumeTool.startInsertion({clip: true}); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === item.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // CLIP POLYGON - clippingToolBar.append(this.createToolIcon( - Potree.resourcePath + "/icons/clip-polygon.svg", - "[title]tt.clip_polygon", - () => { - let item = this.viewer.clippingTool.startInsertion({type: "polygon"}); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === item.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - {// SCREEN BOX SELECT - let boxSelectTool = new ScreenBoxSelectTool(this.viewer); - - clippingToolBar.append(this.createToolIcon( - Potree.resourcePath + "/icons/clip-screen.svg", - "[title]tt.screen_clip_box", - () => { - if(!(this.viewer.scene.getActiveCamera() instanceof THREE.OrthographicCamera)){ - this.viewer.postMessage(`Switch to Orthographic Camera Mode before using the Screen-Box-Select tool.`, - {duration: 2000}); - return; - } - - let item = boxSelectTool.startInsertion(); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === item.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - } - - { // REMOVE CLIPPING TOOLS - clippingToolBar.append(this.createToolIcon( - Potree.resourcePath + "/icons/remove.svg", - "[title]tt.remove_all_measurement", - () => { - - this.viewer.scene.removeAllClipVolumes(); - } - )); - } - - } - - initFilters(){ - this.initClassificationList(); - this.initReturnFilters(); - this.initGPSTimeFilters(); - this.initPointSourceIDFilters(); - - } - - initReturnFilters(){ - let elReturnFilterPanel = $('#return_filter_panel'); - - { // RETURN NUMBER - let sldReturnNumber = elReturnFilterPanel.find('#sldReturnNumber'); - let lblReturnNumber = elReturnFilterPanel.find('#lblReturnNumber'); - - sldReturnNumber.slider({ - range: true, - min: 0, max: 7, step: 1, - values: [0, 7], - slide: (event, ui) => { - this.viewer.setFilterReturnNumberRange(ui.values[0], ui.values[1]); - } - }); - - let onReturnNumberChanged = (event) => { - let [from, to] = this.viewer.filterReturnNumberRange; - - lblReturnNumber[0].innerHTML = `${from} to ${to}`; - sldReturnNumber.slider({values: [from, to]}); - }; - - this.viewer.addEventListener('filter_return_number_range_changed', onReturnNumberChanged); - - onReturnNumberChanged(); - } - - { // NUMBER OF RETURNS - let sldNumberOfReturns = elReturnFilterPanel.find('#sldNumberOfReturns'); - let lblNumberOfReturns = elReturnFilterPanel.find('#lblNumberOfReturns'); - - sldNumberOfReturns.slider({ - range: true, - min: 0, max: 7, step: 1, - values: [0, 7], - slide: (event, ui) => { - this.viewer.setFilterNumberOfReturnsRange(ui.values[0], ui.values[1]); - } - }); - - let onNumberOfReturnsChanged = (event) => { - let [from, to] = this.viewer.filterNumberOfReturnsRange; - - lblNumberOfReturns[0].innerHTML = `${from} to ${to}`; - sldNumberOfReturns.slider({values: [from, to]}); - }; - - this.viewer.addEventListener('filter_number_of_returns_range_changed', onNumberOfReturnsChanged); - - onNumberOfReturnsChanged(); - } - } - - initGPSTimeFilters(){ - - let elGPSTimeFilterPanel = $('#gpstime_filter_panel'); - - { - let slider = new HierarchicalSlider({ - levels: 4, - slide: (event) => { - this.viewer.setFilterGPSTimeRange(...event.values); - }, - }); - - let initialized = false; - - let initialize = () => { - - let elRangeContainer = $("#gpstime_multilevel_range_container"); - elRangeContainer[0].prepend(slider.element); - - let extent = this.viewer.getGpsTimeExtent(); - - slider.setRange(extent); - slider.setValues(extent); - - - initialized = true; - }; - - this.viewer.addEventListener("update", (e) => { - let extent = this.viewer.getGpsTimeExtent(); - let gpsTimeAvailable = extent[0] !== Infinity; - - if(!initialized && gpsTimeAvailable){ - initialize(); - } - - slider.setRange(extent); - }); - } - - - { - - const txtGpsTime = elGPSTimeFilterPanel.find("#txtGpsTime"); - const btnFindGpsTime = elGPSTimeFilterPanel.find("#btnFindGpsTime"); - - let targetTime = null; - - txtGpsTime.on("input", (e) => { - const str = txtGpsTime.val(); - - if(!isNaN(str)){ - const value = parseFloat(str); - targetTime = value; - - txtGpsTime.css("background-color", ""); - }else { - targetTime = null; - - txtGpsTime.css("background-color", "#ff9999"); - } - - }); - - btnFindGpsTime.click( () => { - - if(targetTime !== null){ - viewer.moveToGpsTimeVicinity(targetTime); - } - }); - } - - } - - initPointSourceIDFilters() { - let elPointSourceIDFilterPanel = $('#pointsourceid_filter_panel'); - - { - let slider = new HierarchicalSlider({ - levels: 4, - range: [0, 65535], - precision: 1, - slide: (event) => { - let values = event.values; - this.viewer.setFilterPointSourceIDRange(values[0], values[1]); - } - }); - - let initialized = false; - - let initialize = () => { - elPointSourceIDFilterPanel[0].prepend(slider.element); - - initialized = true; - }; - - this.viewer.addEventListener("update", (e) => { - let extent = this.viewer.filterPointSourceIDRange; - - if(!initialized){ - initialize(); - - slider.setValues(extent); - } - - }); - } - - // let lblPointSourceID = elPointSourceIDFilterPanel.find("#lblPointSourceID"); - // let elPointSourceID = elPointSourceIDFilterPanel.find("#spnPointSourceID"); - - // let slider = new ZoomableSlider(); - // elPointSourceID[0].appendChild(slider.element); - // slider.update(); - - // slider.change( () => { - // let range = slider.chosenRange; - // this.viewer.setFilterPointSourceIDRange(range[0], range[1]); - // }); - - // let onPointSourceIDExtentChanged = (event) => { - // let range = this.viewer.filterPointSourceIDExtent; - // slider.setVisibleRange(range); - // }; - - // let onPointSourceIDChanged = (event) => { - // let range = this.viewer.filterPointSourceIDRange; - - // let precision = 1; - // let from = `${Utils.addCommas(range[0].toFixed(precision))}`; - // let to = `${Utils.addCommas(range[1].toFixed(precision))}`; - // lblPointSourceID[0].innerHTML = `${from} to ${to}`; - - // slider.setRange(range); - // }; - - // this.viewer.addEventListener('filter_point_source_id_range_changed', onPointSourceIDChanged); - // this.viewer.addEventListener('filter_point_source_id_extent_changed', onPointSourceIDExtentChanged); - - } - - initClassificationList(){ - let elClassificationList = $('#classificationList'); - - let addClassificationItem = (code, name) => { - const classification = this.viewer.classifications[code]; - const inputID = 'chkClassification_' + code; - const colorPickerID = 'colorPickerClassification_' + code; - - const checked = classification.visible ? "checked" : ""; - - let element = $(` -
      • - -
      • - `); - - const elInput = element.find('input'); - const elColorPicker = element.find(`#${colorPickerID}`); - - elInput.click(event => { - this.viewer.setClassificationVisibility(code, event.target.checked); - }); - - let defaultColor = classification.color.map(c => c * 255).join(", "); - defaultColor = `rgb(${defaultColor})`; - - - elColorPicker.spectrum({ - // flat: true, - color: defaultColor, - showInput: true, - preferredFormat: 'rgb', - cancelText: '', - chooseText: 'Apply', - move: color => { - let rgb = color.toRgb(); - const c = [rgb.r / 255, rgb.g / 255, rgb.b / 255, 1]; - classification.color = c; - }, - change: color => { - let rgb = color.toRgb(); - const c = [rgb.r / 255, rgb.g / 255, rgb.b / 255, 1]; - classification.color = c; - } - }); - - elClassificationList.append(element); - }; - - const addToggleAllButton = () => { // toggle all button - const element = $(` -
      • - -
      • - `); - - let elInput = element.find('input'); - - elInput.click(event => { - this.viewer.toggleAllClassificationsVisibility(); - }); - - elClassificationList.append(element); - }; - - const addInvertButton = () => { - const element = $(` -
      • - -
      • - `); - - let elInput = element.find('input'); - - elInput.click( () => { - const classifications = this.viewer.classifications; - - for(let key of Object.keys(classifications)){ - let value = classifications[key]; - this.viewer.setClassificationVisibility(key, !value.visible); - } - }); - - elClassificationList.append(element); - }; - - const populate = () => { - addToggleAllButton(); - for (let classID in this.viewer.classifications) { - addClassificationItem(classID, this.viewer.classifications[classID].name); - } - addInvertButton(); - }; - - populate(); - - this.viewer.addEventListener("classifications_changed", () => { - elClassificationList.empty(); - populate(); - }); - - this.viewer.addEventListener("classification_visibility_changed", () => { - - { // set checked state of classification buttons - for(const classID of Object.keys(this.viewer.classifications)){ - const classValue = this.viewer.classifications[classID]; - - let elItem = elClassificationList.find(`#chkClassification_${classID}`); - elItem.prop("checked", classValue.visible); - } - } - - { // set checked state of toggle button based on state of all other buttons - let numVisible = 0; - let numItems = 0; - for(const key of Object.keys(this.viewer.classifications)){ - if(this.viewer.classifications[key].visible){ - numVisible++; - } - numItems++; - } - const allVisible = numVisible === numItems; - - let elToggle = elClassificationList.find("#toggleClassificationFilters"); - elToggle.prop("checked", allVisible); - } - }); - } - - initAccordion(){ - $('.accordion > h3').each(function(){ - let header = $(this); - let content = $(this).next(); - - //header.addClass('accordion-header ui-widget'); - //content.addClass('accordion-content ui-widget'); - - content.hide(); - - header.click(() => { - content.slideToggle(); - }); - }); - - let languages = [ - ["EN", "en"], - ["FR", "fr"], - ["DE", "de"], - ["JP", "jp"], - ["ES", "es"], - ["SE", "se"] - ]; - - let elLanguages = $('#potree_languages'); - for(let i = 0; i < languages.length; i++){ - let [key, value] = languages[i]; - let element = $(`${key}`); - element.click(() => this.viewer.setLanguage(value)); - - if(i === 0){ - element.css("margin-left", "30px"); - } - - elLanguages.append(element); - - if(i < languages.length - 1){ - elLanguages.append($(document.createTextNode(' - '))); - } - } - - - // to close all, call - // $(".accordion > div").hide() - - // to open the, for example, tool menu, call: - // $("#menu_tools").next().show() - } - - initAppearance(){ - - const sldPointBudget = this.dom.find('#sldPointBudget'); - - sldPointBudget.slider({ - value: this.viewer.getPointBudget(), - min: 100 * 1000, - max: 10 * 1000 * 1000, - step: 1000, - slide: (event, ui) => { this.viewer.setPointBudget(ui.value); } - }); - - this.dom.find('#sldFOV').slider({ - value: this.viewer.getFOV(), - min: 20, - max: 100, - step: 1, - slide: (event, ui) => { this.viewer.setFOV(ui.value); } - }); - - $('#sldEDLRadius').slider({ - value: this.viewer.getEDLRadius(), - min: 1, - max: 4, - step: 0.01, - slide: (event, ui) => { this.viewer.setEDLRadius(ui.value); } - }); - - $('#sldEDLStrength').slider({ - value: this.viewer.getEDLStrength(), - min: 0, - max: 5, - step: 0.01, - slide: (event, ui) => { this.viewer.setEDLStrength(ui.value); } - }); - - $('#sldEDLOpacity').slider({ - value: this.viewer.getEDLOpacity(), - min: 0, - max: 1, - step: 0.01, - slide: (event, ui) => { this.viewer.setEDLOpacity(ui.value); } - }); - - this.viewer.addEventListener('point_budget_changed', (event) => { - $('#lblPointBudget')[0].innerHTML = Utils.addCommas(this.viewer.getPointBudget()); - sldPointBudget.slider({value: this.viewer.getPointBudget()}); - }); - - this.viewer.addEventListener('fov_changed', (event) => { - $('#lblFOV')[0].innerHTML = parseInt(this.viewer.getFOV()); - $('#sldFOV').slider({value: this.viewer.getFOV()}); - }); - - this.viewer.addEventListener('use_edl_changed', (event) => { - $('#chkEDLEnabled')[0].checked = this.viewer.getEDLEnabled(); - }); - - this.viewer.addEventListener('edl_radius_changed', (event) => { - $('#lblEDLRadius')[0].innerHTML = this.viewer.getEDLRadius().toFixed(1); - $('#sldEDLRadius').slider({value: this.viewer.getEDLRadius()}); - }); - - this.viewer.addEventListener('edl_strength_changed', (event) => { - $('#lblEDLStrength')[0].innerHTML = this.viewer.getEDLStrength().toFixed(1); - $('#sldEDLStrength').slider({value: this.viewer.getEDLStrength()}); - }); - - this.viewer.addEventListener('background_changed', (event) => { - $("input[name=background][value='" + this.viewer.getBackground() + "']").prop('checked', true); - }); - - $('#lblPointBudget')[0].innerHTML = Utils.addCommas(this.viewer.getPointBudget()); - $('#lblFOV')[0].innerHTML = parseInt(this.viewer.getFOV()); - $('#lblEDLRadius')[0].innerHTML = this.viewer.getEDLRadius().toFixed(1); - $('#lblEDLStrength')[0].innerHTML = this.viewer.getEDLStrength().toFixed(1); - $('#chkEDLEnabled')[0].checked = this.viewer.getEDLEnabled(); - - { - let elBackground = $(`#background_options`); - elBackground.selectgroup(); - - elBackground.find("input").click( (e) => { - this.viewer.setBackground(e.target.value); - }); - - let currentBackground = this.viewer.getBackground(); - $(`input[name=background_options][value=${currentBackground}]`).trigger("click"); - } - - $('#chkEDLEnabled').click( () => { - this.viewer.setEDLEnabled($('#chkEDLEnabled').prop("checked")); - }); - } - - initNavigation(){ - let elNavigation = $('#navigation'); - let sldMoveSpeed = $('#sldMoveSpeed'); - let lblMoveSpeed = $('#lblMoveSpeed'); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + '/icons/earth_controls_1.png', - '[title]tt.earth_control', - () => { this.viewer.setControls(this.viewer.earthControls); } - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + '/icons/fps_controls.svg', - '[title]tt.flight_control', - () => { - this.viewer.setControls(this.viewer.fpControls); - this.viewer.fpControls.lockElevation = false; - } - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + '/icons/helicopter_controls.svg', - '[title]tt.heli_control', - () => { - this.viewer.setControls(this.viewer.fpControls); - this.viewer.fpControls.lockElevation = true; - } - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + '/icons/orbit_controls.svg', - '[title]tt.orbit_control', - () => { this.viewer.setControls(this.viewer.orbitControls); } - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + '/icons/focus.svg', - '[title]tt.focus_control', - () => { this.viewer.fitToScreen(); } - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + "/icons/navigation_cube.svg", - "[title]tt.navigation_cube_control", - () => {this.viewer.toggleNavigationCube();} - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + "/images/compas.svg", - "[title]tt.compass", - () => { - const visible = !this.viewer.compass.isVisible(); - this.viewer.compass.setVisible(visible); - } - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + "/icons/camera_animation.svg", - "[title]tt.camera_animation", - () => { - const animation = CameraAnimation.defaultFromView(this.viewer); - - viewer.scene.addCameraAnimation(animation); - } - )); - - - elNavigation.append("
        "); - - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + "/icons/left.svg", - "[title]tt.left_view_control", - () => {this.viewer.setLeftView();} - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + "/icons/right.svg", - "[title]tt.right_view_control", - () => {this.viewer.setRightView();} - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + "/icons/front.svg", - "[title]tt.front_view_control", - () => {this.viewer.setFrontView();} - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + "/icons/back.svg", - "[title]tt.back_view_control", - () => {this.viewer.setBackView();} - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + "/icons/top.svg", - "[title]tt.top_view_control", - () => {this.viewer.setTopView();} - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + "/icons/bottom.svg", - "[title]tt.bottom_view_control", - () => {this.viewer.setBottomView();} - )); - - - - - - let elCameraProjection = $(` - - - - - `); - elNavigation.append(elCameraProjection); - elCameraProjection.selectgroup({title: "Camera Projection"}); - elCameraProjection.find("input").click( (e) => { - this.viewer.setCameraMode(CameraMode[e.target.value]); - }); - let cameraMode = Object.keys(CameraMode) - .filter(key => CameraMode[key] === this.viewer.scene.cameraMode); - elCameraProjection.find(`input[value=${cameraMode}]`).trigger("click"); - - let speedRange = new THREE.Vector2(1, 10 * 1000); - - let toLinearSpeed = (value) => { - return Math.pow(value, 4) * speedRange.y + speedRange.x; - }; - - let toExpSpeed = (value) => { - return Math.pow((value - speedRange.x) / speedRange.y, 1 / 4); - }; - - sldMoveSpeed.slider({ - value: toExpSpeed(this.viewer.getMoveSpeed()), - min: 0, - max: 1, - step: 0.01, - slide: (event, ui) => { this.viewer.setMoveSpeed(toLinearSpeed(ui.value)); } - }); - - this.viewer.addEventListener('move_speed_changed', (event) => { - lblMoveSpeed.html(this.viewer.getMoveSpeed().toFixed(1)); - sldMoveSpeed.slider({value: toExpSpeed(this.viewer.getMoveSpeed())}); - }); - - lblMoveSpeed.html(this.viewer.getMoveSpeed().toFixed(1)); - } - - - initSettings(){ - - { - $('#sldMinNodeSize').slider({ - value: this.viewer.getMinNodeSize(), - min: 0, - max: 1000, - step: 0.01, - slide: (event, ui) => { this.viewer.setMinNodeSize(ui.value); } - }); - - this.viewer.addEventListener('minnodesize_changed', (event) => { - $('#lblMinNodeSize').html(parseInt(this.viewer.getMinNodeSize())); - $('#sldMinNodeSize').slider({value: this.viewer.getMinNodeSize()}); - }); - $('#lblMinNodeSize').html(parseInt(this.viewer.getMinNodeSize())); - } - - { - let elSplatQuality = $("#splat_quality_options"); - elSplatQuality.selectgroup({title: "Splat Quality"}); - - elSplatQuality.find("input").click( (e) => { - if(e.target.value === "standard"){ - this.viewer.useHQ = false; - }else if(e.target.value === "hq"){ - this.viewer.useHQ = true; - } - }); - - let currentQuality = this.viewer.useHQ ? "hq" : "standard"; - elSplatQuality.find(`input[value=${currentQuality}]`).trigger("click"); - } - - $('#show_bounding_box').click(() => { - this.viewer.setShowBoundingBox($('#show_bounding_box').prop("checked")); - }); - - $('#set_freeze').click(() => { - this.viewer.setFreeze($('#set_freeze').prop("checked")); - }); - } - - } - - class AnnotationTool extends EventDispatcher{ - constructor (viewer) { - super(); - - this.viewer = viewer; - this.renderer = viewer.renderer; - - this.sg = new THREE.SphereGeometry(0.1); - this.sm = new THREE.MeshNormalMaterial(); - this.s = new THREE.Mesh(this.sg, this.sm); - } - - startInsertion (args = {}) { - let domElement = this.viewer.renderer.domElement; - - let annotation = new Annotation({ - position: [589748.270, 231444.540, 753.675], - title: "Annotation Title", - description: `Annotation Description` - }); - this.dispatchEvent({type: 'start_inserting_annotation', annotation: annotation}); - - const annotations = this.viewer.scene.annotations; - annotations.add(annotation); - - let callbacks = { - cancel: null, - finish: null, - }; - - let insertionCallback = (e) => { - if (e.button === THREE.MOUSE.LEFT) { - callbacks.finish(); - } else if (e.button === THREE.MOUSE.RIGHT) { - callbacks.cancel(); - } - }; - - callbacks.cancel = e => { - annotations.remove(annotation); - - domElement.removeEventListener('mouseup', insertionCallback, true); - }; - - callbacks.finish = e => { - domElement.removeEventListener('mouseup', insertionCallback, true); - }; - - domElement.addEventListener('mouseup', insertionCallback, true); - - let drag = (e) => { - let I = Utils.getMousePointCloudIntersection( - e.drag.end, - e.viewer.scene.getActiveCamera(), - e.viewer, - e.viewer.scene.pointclouds, - {pickClipped: true}); - - if (I) { - this.s.position.copy(I.location); - - annotation.position.copy(I.location); - } - }; - - let drop = (e) => { - viewer.scene.scene.remove(this.s); - this.s.removeEventListener("drag", drag); - this.s.removeEventListener("drop", drop); - }; - - this.s.addEventListener('drag', drag); - this.s.addEventListener('drop', drop); - - this.viewer.scene.scene.add(this.s); - this.viewer.inputHandler.startDragging(this.s); - - return annotation; - } - - update(){ - // let camera = this.viewer.scene.getActiveCamera(); - // let domElement = this.renderer.domElement; - // let measurements = this.viewer.scene.measurements; - - // const renderAreaSize = this.renderer.getSize(new THREE.Vector2()); - // let clientWidth = renderAreaSize.width; - // let clientHeight = renderAreaSize.height; - - } - - render(){ - //this.viewer.renderer.render(this.scene, this.viewer.scene.getActiveCamera()); - } - }; - - /** - * @author mschuetz / http://mschuetz.at - * - * - */ - - class InputHandler extends EventDispatcher { - constructor (viewer) { - super(); - - this.viewer = viewer; - this.renderer = viewer.renderer; - this.domElement = this.renderer.domElement; - this.enabled = true; - - this.scene = null; - this.interactiveScenes = []; - this.interactiveObjects = new Set(); - this.inputListeners = []; - this.blacklist = new Set(); - - this.drag = null; - this.mouse = new THREE.Vector2(0, 0); - - this.selection = []; - - this.hoveredElements = []; - this.pressedKeys = {}; - - this.wheelDelta = 0; - - this.speed = 1; - - this.logMessages = false; - - if (this.domElement.tabIndex === -1) { - this.domElement.tabIndex = 2222; - } - - this.domElement.addEventListener('contextmenu', (event) => { event.preventDefault(); }, false); - this.domElement.addEventListener('click', this.onMouseClick.bind(this), false); - this.domElement.addEventListener('mousedown', this.onMouseDown.bind(this), false); - this.domElement.addEventListener('mouseup', this.onMouseUp.bind(this), false); - this.domElement.addEventListener('mousemove', this.onMouseMove.bind(this), false); - this.domElement.addEventListener('mousewheel', this.onMouseWheel.bind(this), false); - this.domElement.addEventListener('DOMMouseScroll', this.onMouseWheel.bind(this), false); // Firefox - this.domElement.addEventListener('dblclick', this.onDoubleClick.bind(this)); - this.domElement.addEventListener('keydown', this.onKeyDown.bind(this)); - this.domElement.addEventListener('keyup', this.onKeyUp.bind(this)); - this.domElement.addEventListener('touchstart', this.onTouchStart.bind(this)); - this.domElement.addEventListener('touchend', this.onTouchEnd.bind(this)); - this.domElement.addEventListener('touchmove', this.onTouchMove.bind(this)); - } - - addInputListener (listener) { - this.inputListeners.push(listener); - } - - removeInputListener (listener) { - this.inputListeners = this.inputListeners.filter(e => e !== listener); - } - - getSortedListeners(){ - return this.inputListeners.sort( (a, b) => { - let ia = (a.importance !== undefined) ? a.importance : 0; - let ib = (b.importance !== undefined) ? b.importance : 0; - - return ib - ia; - }); - } - - onTouchStart (e) { - if (this.logMessages) console.log(this.constructor.name + ': onTouchStart'); - - e.preventDefault(); - - if (e.touches.length === 1) { - let rect = this.domElement.getBoundingClientRect(); - let x = e.touches[0].pageX - rect.left; - let y = e.touches[0].pageY - rect.top; - this.mouse.set(x, y); - - this.startDragging(null); - } - - - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: e.type, - touches: e.touches, - changedTouches: e.changedTouches - }); - } - } - - onTouchEnd (e) { - if (this.logMessages) console.log(this.constructor.name + ': onTouchEnd'); - - e.preventDefault(); - - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: 'drop', - drag: this.drag, - viewer: this.viewer - }); - } - - this.drag = null; - - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: e.type, - touches: e.touches, - changedTouches: e.changedTouches - }); - } - } - - onTouchMove (e) { - if (this.logMessages) console.log(this.constructor.name + ': onTouchMove'); - - e.preventDefault(); - - if (e.touches.length === 1) { - let rect = this.domElement.getBoundingClientRect(); - let x = e.touches[0].pageX - rect.left; - let y = e.touches[0].pageY - rect.top; - this.mouse.set(x, y); - - if (this.drag) { - this.drag.mouse = 1; - - this.drag.lastDrag.x = x - this.drag.end.x; - this.drag.lastDrag.y = y - this.drag.end.y; - - this.drag.end.set(x, y); - - if (this.logMessages) console.log(this.constructor.name + ': drag: '); - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: 'drag', - drag: this.drag, - viewer: this.viewer - }); - } - } - } - - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: e.type, - touches: e.touches, - changedTouches: e.changedTouches - }); - } - - // DEBUG CODE - // let debugTouches = [...e.touches, { - // pageX: this.domElement.clientWidth / 2, - // pageY: this.domElement.clientHeight / 2}]; - // for(let inputListener of this.getSortedListeners()){ - // inputListener.dispatchEvent({ - // type: e.type, - // touches: debugTouches, - // changedTouches: e.changedTouches - // }); - // } - } - - onKeyDown (e) { - if (this.logMessages) console.log(this.constructor.name + ': onKeyDown'); - - // DELETE - if (e.keyCode === KeyCodes.DELETE && this.selection.length > 0) { - this.dispatchEvent({ - type: 'delete', - selection: this.selection - }); - - this.deselectAll(); - } - - this.dispatchEvent({ - type: 'keydown', - keyCode: e.keyCode, - event: e - }); - - // for(let l of this.getSortedListeners()){ - // l.dispatchEvent({ - // type: "keydown", - // keyCode: e.keyCode, - // event: e - // }); - // } - - this.pressedKeys[e.keyCode] = true; - - // e.preventDefault(); - } - - onKeyUp (e) { - if (this.logMessages) console.log(this.constructor.name + ': onKeyUp'); - - delete this.pressedKeys[e.keyCode]; - - e.preventDefault(); - } - - onDoubleClick (e) { - if (this.logMessages) console.log(this.constructor.name + ': onDoubleClick'); - - let consumed = false; - for (let hovered of this.hoveredElements) { - if (hovered._listeners && hovered._listeners['dblclick']) { - hovered.object.dispatchEvent({ - type: 'dblclick', - mouse: this.mouse, - object: hovered.object - }); - consumed = true; - break; - } - } - - if (!consumed) { - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: 'dblclick', - mouse: this.mouse, - object: null - }); - } - } - - e.preventDefault(); - } - - onMouseClick (e) { - if (this.logMessages) console.log(this.constructor.name + ': onMouseClick'); - - e.preventDefault(); - } - - onMouseDown (e) { - if (this.logMessages) console.log(this.constructor.name + ': onMouseDown'); - - e.preventDefault(); - - let consumed = false; - let consume = () => { return consumed = true; }; - if (this.hoveredElements.length === 0) { - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: 'mousedown', - viewer: this.viewer, - mouse: this.mouse - }); - } - }else { - for(let hovered of this.hoveredElements){ - let object = hovered.object; - object.dispatchEvent({ - type: 'mousedown', - viewer: this.viewer, - consume: consume - }); - - if(consumed){ - break; - } - } - } - - if (!this.drag) { - let target = this.hoveredElements - .find(el => ( - el.object._listeners && - el.object._listeners['drag'] && - el.object._listeners['drag'].length > 0)); - - if (target) { - this.startDragging(target.object, {location: target.point}); - } else { - this.startDragging(null); - } - } - - if (this.scene) { - this.viewStart = this.scene.view.clone(); - } - } - - onMouseUp (e) { - if (this.logMessages) console.log(this.constructor.name + ': onMouseUp'); - - e.preventDefault(); - - let noMovement = this.getNormalizedDrag().length() === 0; - - - let consumed = false; - let consume = () => { return consumed = true; }; - if (this.hoveredElements.length === 0) { - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: 'mouseup', - viewer: this.viewer, - mouse: this.mouse, - consume: consume - }); - - if(consumed){ - break; - } - } - }else { - let hovered = this.hoveredElements - .map(e => e.object) - .find(e => (e._listeners && e._listeners['mouseup'])); - if(hovered){ - hovered.dispatchEvent({ - type: 'mouseup', - viewer: this.viewer, - consume: consume - }); - } - } - - if (this.drag) { - if (this.drag.object) { - if (this.logMessages) console.log(`${this.constructor.name}: drop ${this.drag.object.name}`); - this.drag.object.dispatchEvent({ - type: 'drop', - drag: this.drag, - viewer: this.viewer - - }); - } else { - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: 'drop', - drag: this.drag, - viewer: this.viewer - }); - } - } - - // check for a click - let clicked = this.hoveredElements.map(h => h.object).find(v => v === this.drag.object) !== undefined; - if(clicked){ - if (this.logMessages) console.log(`${this.constructor.name}: click ${this.drag.object.name}`); - this.drag.object.dispatchEvent({ - type: 'click', - viewer: this.viewer, - consume: consume, - }); - } - - this.drag = null; - } - - if(!consumed){ - if (e.button === THREE.MOUSE.LEFT) { - if (noMovement) { - let selectable = this.hoveredElements - .find(el => el.object._listeners && el.object._listeners['select']); - - if (selectable) { - selectable = selectable.object; - - if (this.isSelected(selectable)) { - this.selection - .filter(e => e !== selectable) - .forEach(e => this.toggleSelection(e)); - } else { - this.deselectAll(); - this.toggleSelection(selectable); - } - } else { - this.deselectAll(); - } - } - } else if ((e.button === THREE.MOUSE.RIGHT) && noMovement) { - this.deselectAll(); - } - } - } - - onMouseMove (e) { - e.preventDefault(); - - let rect = this.domElement.getBoundingClientRect(); - let x = e.clientX - rect.left; - let y = e.clientY - rect.top; - this.mouse.set(x, y); - - let hoveredElements = this.getHoveredElements(); - if(hoveredElements.length > 0){ - let names = hoveredElements.map(h => h.object.name).join(", "); - if (this.logMessages) console.log(`${this.constructor.name}: onMouseMove; hovered: '${names}'`); - } - - if (this.drag) { - this.drag.mouse = e.buttons; - - this.drag.lastDrag.x = x - this.drag.end.x; - this.drag.lastDrag.y = y - this.drag.end.y; - - this.drag.end.set(x, y); - - if (this.drag.object) { - if (this.logMessages) console.log(this.constructor.name + ': drag: ' + this.drag.object.name); - this.drag.object.dispatchEvent({ - type: 'drag', - drag: this.drag, - viewer: this.viewer - }); - } else { - if (this.logMessages) console.log(this.constructor.name + ': drag: '); - - let dragConsumed = false; - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: 'drag', - drag: this.drag, - viewer: this.viewer, - consume: () => {dragConsumed = true;} - }); - - if(dragConsumed){ - break; - } - } - } - }else { - let curr = hoveredElements.map(a => a.object).find(a => true); - let prev = this.hoveredElements.map(a => a.object).find(a => true); - - if(curr !== prev){ - if(curr){ - if (this.logMessages) console.log(`${this.constructor.name}: mouseover: ${curr.name}`); - curr.dispatchEvent({ - type: 'mouseover', - object: curr, - }); - } - if(prev){ - if (this.logMessages) console.log(`${this.constructor.name}: mouseleave: ${prev.name}`); - prev.dispatchEvent({ - type: 'mouseleave', - object: prev, - }); - } - } - - if(hoveredElements.length > 0){ - let object = hoveredElements - .map(e => e.object) - .find(e => (e._listeners && e._listeners['mousemove'])); - - if(object){ - object.dispatchEvent({ - type: 'mousemove', - object: object - }); - } - } - - } - - // for (let inputListener of this.getSortedListeners()) { - // inputListener.dispatchEvent({ - // type: 'mousemove', - // object: null - // }); - // } - - - this.hoveredElements = hoveredElements; - } - - onMouseWheel(e){ - if(!this.enabled) return; - - if(this.logMessages) console.log(this.constructor.name + ": onMouseWheel"); - - e.preventDefault(); - - let delta = 0; - if (e.wheelDelta !== undefined) { // WebKit / Opera / Explorer 9 - delta = e.wheelDelta; - } else if (e.detail !== undefined) { // Firefox - delta = -e.detail; - } - - let ndelta = Math.sign(delta); - - // this.wheelDelta += Math.sign(delta); - - if (this.hoveredElement) { - this.hoveredElement.object.dispatchEvent({ - type: 'mousewheel', - delta: ndelta, - object: this.hoveredElement.object - }); - } else { - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: 'mousewheel', - delta: ndelta, - object: null - }); - } - } - } - - startDragging (object, args = null) { - - let name = object ? object.name : "no name"; - if (this.logMessages) console.log(`${this.constructor.name}: startDragging: '${name}'`); - - this.drag = { - start: this.mouse.clone(), - end: this.mouse.clone(), - lastDrag: new THREE.Vector2(0, 0), - startView: this.scene.view.clone(), - object: object - }; - - if (args) { - for (let key of Object.keys(args)) { - this.drag[key] = args[key]; - } - } - } - - getMousePointCloudIntersection (mouse) { - return Utils.getMousePointCloudIntersection( - this.mouse, - this.scene.getActiveCamera(), - this.viewer, - this.scene.pointclouds); - } - - toggleSelection (object) { - let oldSelection = this.selection; - - let index = this.selection.indexOf(object); - - if (index === -1) { - this.selection.push(object); - object.dispatchEvent({ - type: 'select' - }); - } else { - this.selection.splice(index, 1); - object.dispatchEvent({ - type: 'deselect' - }); - } - - this.dispatchEvent({ - type: 'selection_changed', - oldSelection: oldSelection, - selection: this.selection - }); - } - - deselect(object){ - - let oldSelection = this.selection; - - let index = this.selection.indexOf(object); - - if(index >= 0){ - this.selection.splice(index, 1); - object.dispatchEvent({ - type: 'deselect' - }); - - this.dispatchEvent({ - type: 'selection_changed', - oldSelection: oldSelection, - selection: this.selection - }); - } - } - - deselectAll () { - for (let object of this.selection) { - object.dispatchEvent({ - type: 'deselect' - }); - } - - let oldSelection = this.selection; - - if (this.selection.length > 0) { - this.selection = []; - this.dispatchEvent({ - type: 'selection_changed', - oldSelection: oldSelection, - selection: this.selection - }); - } - } - - isSelected (object) { - let index = this.selection.indexOf(object); - - return index !== -1; - } - - registerInteractiveObject(object){ - this.interactiveObjects.add(object); - } - - removeInteractiveObject(object){ - this.interactiveObjects.delete(object); - } - - registerInteractiveScene (scene) { - let index = this.interactiveScenes.indexOf(scene); - if (index === -1) { - this.interactiveScenes.push(scene); - } - } - - unregisterInteractiveScene (scene) { - let index = this.interactiveScenes.indexOf(scene); - if (index > -1) { - this.interactiveScenes.splice(index, 1); - } - } - - getHoveredElement () { - let hoveredElements = this.getHoveredElements(); - if (hoveredElements.length > 0) { - return hoveredElements[0]; - } else { - return null; - } - } - - getHoveredElements () { - let scenes = this.interactiveScenes.concat(this.scene.scene); - - let interactableListeners = ['mouseup', 'mousemove', 'mouseover', 'mouseleave', 'drag', 'drop', 'click', 'select', 'deselect']; - let interactables = []; - for (let scene of scenes) { - scene.traverseVisible(node => { - if (node._listeners && node.visible && !this.blacklist.has(node)) { - let hasInteractableListener = interactableListeners.filter((e) => { - return node._listeners[e] !== undefined; - }).length > 0; - - if (hasInteractableListener) { - interactables.push(node); - } - } - }); - } - - let camera = this.scene.getActiveCamera(); - let ray = Utils.mouseToRay(this.mouse, camera, this.domElement.clientWidth, this.domElement.clientHeight); - - let raycaster = new THREE.Raycaster(); - raycaster.ray.set(ray.origin, ray.direction); - raycaster.linePrecision = 0.2; - - let intersections = raycaster.intersectObjects(interactables.filter(o => o.visible), false); - - return intersections; - - // if(intersections.length > 0){ - // return intersections[0]; - // }else{ - // return null; - // } - } - - setScene (scene) { - this.deselectAll(); - - this.scene = scene; - } - - update (delta) { - - } - - getNormalizedDrag () { - if (!this.drag) { - return new THREE.Vector2(0, 0); - } - - let diff = new THREE.Vector2().subVectors(this.drag.end, this.drag.start); - - diff.x = diff.x / this.domElement.clientWidth; - diff.y = diff.y / this.domElement.clientHeight; - - return diff; - } - - getNormalizedLastDrag () { - if (!this.drag) { - return new THREE.Vector2(0, 0); - } - - let lastDrag = this.drag.lastDrag.clone(); - - lastDrag.x = lastDrag.x / this.domElement.clientWidth; - lastDrag.y = lastDrag.y / this.domElement.clientHeight; - - return lastDrag; - } - } - - class NavigationCube extends THREE.Object3D { - - constructor(viewer){ - super(); - - this.viewer = viewer; - - let createPlaneMaterial = (img) => { - let material = new THREE.MeshBasicMaterial( { - depthTest: true, - depthWrite: true, - side: THREE.DoubleSide - }); - new THREE.TextureLoader().load( - exports.resourcePath + '/textures/navigation/' + img, - function(texture) { - texture.anisotropy = viewer.renderer.capabilities.getMaxAnisotropy(); - material.map = texture; - material.needsUpdate = true; - }); - return material; - }; - - let planeGeometry = new THREE.PlaneGeometry(1, 1); - - this.front = new THREE.Mesh(planeGeometry, createPlaneMaterial('F.png')); - this.front.position.y = -0.5; - this.front.rotation.x = Math.PI / 2.0; - this.front.updateMatrixWorld(); - this.front.name = "F"; - this.add(this.front); - - this.back = new THREE.Mesh(planeGeometry, createPlaneMaterial('B.png')); - this.back.position.y = 0.5; - this.back.rotation.x = Math.PI / 2.0; - this.back.updateMatrixWorld(); - this.back.name = "B"; - this.add(this.back); - - this.left = new THREE.Mesh(planeGeometry, createPlaneMaterial('L.png')); - this.left.position.x = -0.5; - this.left.rotation.y = Math.PI / 2.0; - this.left.updateMatrixWorld(); - this.left.name = "L"; - this.add(this.left); - - this.right = new THREE.Mesh(planeGeometry, createPlaneMaterial('R.png')); - this.right.position.x = 0.5; - this.right.rotation.y = Math.PI / 2.0; - this.right.updateMatrixWorld(); - this.right.name = "R"; - this.add(this.right); - - this.bottom = new THREE.Mesh(planeGeometry, createPlaneMaterial('D.png')); - this.bottom.position.z = -0.5; - this.bottom.updateMatrixWorld(); - this.bottom.name = "D"; - this.add(this.bottom); - - this.top = new THREE.Mesh(planeGeometry, createPlaneMaterial('U.png')); - this.top.position.z = 0.5; - this.top.updateMatrixWorld(); - this.top.name = "U"; - this.add(this.top); - - this.width = 150; // in px - - this.camera = new THREE.OrthographicCamera(-1, 1, 1, -1, -1, 1); - this.camera.position.copy(new THREE.Vector3(0, 0, 0)); - this.camera.lookAt(new THREE.Vector3(0, 1, 0)); - this.camera.updateMatrixWorld(); - this.camera.rotation.order = "ZXY"; - - let onMouseDown = (event) => { - if (!this.visible) { - return; - } - - this.pickedFace = null; - let mouse = new THREE.Vector2(); - mouse.x = event.clientX - (window.innerWidth - this.width); - mouse.y = event.clientY; - - if(mouse.x < 0 || mouse.y > this.width) return; - - mouse.x = (mouse.x / this.width) * 2 - 1; - mouse.y = -(mouse.y / this.width) * 2 + 1; - - let raycaster = new THREE.Raycaster(); - raycaster.setFromCamera(mouse, this.camera); - raycaster.ray.origin.sub(this.camera.getWorldDirection(new THREE.Vector3())); - - let intersects = raycaster.intersectObjects(this.children); - - let minDistance = 1000; - for (let i = 0; i < intersects.length; i++) { - if(intersects[i].distance < minDistance) { - this.pickedFace = intersects[i].object.name; - minDistance = intersects[i].distance; - } - } - - if(this.pickedFace) { - this.viewer.setView(this.pickedFace); - } - }; - - this.viewer.renderer.domElement.addEventListener('mousedown', onMouseDown, false); - } - - update(rotation) { - this.camera.rotation.copy(rotation); - this.camera.updateMatrixWorld(); - } - - } - - /** - * @author mschuetz / http://mschuetz.at - * - * adapted from THREE.OrbitControls by - * - * @author qiao / https://github.com/qiao - * @author mrdoob / http://mrdoob.com - * @author alteredq / http://alteredqualia.com/ - * @author WestLangley / http://github.com/WestLangley - * @author erich666 / http://erichaines.com - * - * - * - */ - - - class OrbitControls extends EventDispatcher{ - - constructor(viewer){ - super(); - - this.viewer = viewer; - this.renderer = viewer.renderer; - - this.scene = null; - this.sceneControls = new THREE.Scene(); - - this.rotationSpeed = 5; - - this.fadeFactor = 20; - this.yawDelta = 0; - this.pitchDelta = 0; - this.panDelta = new THREE.Vector2(0, 0); - this.radiusDelta = 0; - - this.doubleClockZoomEnabled = true; - - this.tweens = []; - - let drag = (e) => { - if (e.drag.object !== null) { - return; - } - - if (e.drag.startHandled === undefined) { - e.drag.startHandled = true; - - this.dispatchEvent({type: 'start'}); - } - - let ndrag = { - x: e.drag.lastDrag.x / this.renderer.domElement.clientWidth, - y: e.drag.lastDrag.y / this.renderer.domElement.clientHeight - }; - - if (e.drag.mouse === MOUSE.LEFT) { - this.yawDelta += ndrag.x * this.rotationSpeed; - this.pitchDelta += ndrag.y * this.rotationSpeed; - - this.stopTweens(); - } else if (e.drag.mouse === MOUSE.RIGHT) { - this.panDelta.x += ndrag.x; - this.panDelta.y += ndrag.y; - - this.stopTweens(); - } - }; - - let drop = e => { - this.dispatchEvent({type: 'end'}); - }; - - let scroll = (e) => { - let resolvedRadius = this.scene.view.radius + this.radiusDelta; - - this.radiusDelta += -e.delta * resolvedRadius * 0.1; - - this.stopTweens(); - }; - - let dblclick = (e) => { - if(this.doubleClockZoomEnabled){ - this.zoomToLocation(e.mouse); - } - }; - - let previousTouch = null; - let touchStart = e => { - previousTouch = e; - }; - - let touchEnd = e => { - previousTouch = e; - }; - - let touchMove = e => { - if (e.touches.length === 2 && previousTouch.touches.length === 2){ - let prev = previousTouch; - let curr = e; - - let prevDX = prev.touches[0].pageX - prev.touches[1].pageX; - let prevDY = prev.touches[0].pageY - prev.touches[1].pageY; - let prevDist = Math.sqrt(prevDX * prevDX + prevDY * prevDY); - - let currDX = curr.touches[0].pageX - curr.touches[1].pageX; - let currDY = curr.touches[0].pageY - curr.touches[1].pageY; - let currDist = Math.sqrt(currDX * currDX + currDY * currDY); - - let delta = currDist / prevDist; - let resolvedRadius = this.scene.view.radius + this.radiusDelta; - let newRadius = resolvedRadius / delta; - this.radiusDelta = newRadius - resolvedRadius; - - this.stopTweens(); - }else if(e.touches.length === 3 && previousTouch.touches.length === 3){ - let prev = previousTouch; - let curr = e; - - let prevMeanX = (prev.touches[0].pageX + prev.touches[1].pageX + prev.touches[2].pageX) / 3; - let prevMeanY = (prev.touches[0].pageY + prev.touches[1].pageY + prev.touches[2].pageY) / 3; - - let currMeanX = (curr.touches[0].pageX + curr.touches[1].pageX + curr.touches[2].pageX) / 3; - let currMeanY = (curr.touches[0].pageY + curr.touches[1].pageY + curr.touches[2].pageY) / 3; - - let delta = { - x: (currMeanX - prevMeanX) / this.renderer.domElement.clientWidth, - y: (currMeanY - prevMeanY) / this.renderer.domElement.clientHeight - }; - - this.panDelta.x += delta.x; - this.panDelta.y += delta.y; - - this.stopTweens(); - } - - previousTouch = e; - }; - - this.addEventListener('touchstart', touchStart); - this.addEventListener('touchend', touchEnd); - this.addEventListener('touchmove', touchMove); - this.addEventListener('drag', drag); - this.addEventListener('drop', drop); - this.addEventListener('mousewheel', scroll); - this.addEventListener('dblclick', dblclick); - } - - setScene (scene) { - this.scene = scene; - } - - stop(){ - this.yawDelta = 0; - this.pitchDelta = 0; - this.radiusDelta = 0; - this.panDelta.set(0, 0); - } - - zoomToLocation(mouse){ - let camera = this.scene.getActiveCamera(); - - let I = Utils.getMousePointCloudIntersection( - mouse, - camera, - this.viewer, - this.scene.pointclouds, - {pickClipped: true}); - - if (I === null) { - return; - } - - let targetRadius = 0; - { - let minimumJumpDistance = 0.2; - - let domElement = this.renderer.domElement; - let ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight); - - let nodes = I.pointcloud.nodesOnRay(I.pointcloud.visibleNodes, ray); - let lastNode = nodes[nodes.length - 1]; - let radius = lastNode.getBoundingSphere(new THREE.Sphere()).radius; - targetRadius = Math.min(this.scene.view.radius, radius); - targetRadius = Math.max(minimumJumpDistance, targetRadius); - } - - let d = this.scene.view.direction.multiplyScalar(-1); - let cameraTargetPosition = new THREE.Vector3().addVectors(I.location, d.multiplyScalar(targetRadius)); - // TODO Unused: let controlsTargetPosition = I.location; - - let animationDuration = 600; - let easing = TWEEN.Easing.Quartic.Out; - - { // animate - let value = {x: 0}; - let tween = new TWEEN.Tween(value).to({x: 1}, animationDuration); - tween.easing(easing); - this.tweens.push(tween); - - let startPos = this.scene.view.position.clone(); - let targetPos = cameraTargetPosition.clone(); - let startRadius = this.scene.view.radius; - let targetRadius = cameraTargetPosition.distanceTo(I.location); - - tween.onUpdate(() => { - let t = value.x; - this.scene.view.position.x = (1 - t) * startPos.x + t * targetPos.x; - this.scene.view.position.y = (1 - t) * startPos.y + t * targetPos.y; - this.scene.view.position.z = (1 - t) * startPos.z + t * targetPos.z; - - this.scene.view.radius = (1 - t) * startRadius + t * targetRadius; - this.viewer.setMoveSpeed(this.scene.view.radius / 2.5); - }); - - tween.onComplete(() => { - this.tweens = this.tweens.filter(e => e !== tween); - }); - - tween.start(); - } - } - - stopTweens () { - this.tweens.forEach(e => e.stop()); - this.tweens = []; - } - - update (delta) { - let view = this.scene.view; - - { // apply rotation - let progression = Math.min(1, this.fadeFactor * delta); - - let yaw = view.yaw; - let pitch = view.pitch; - let pivot = view.getPivot(); - - yaw -= progression * this.yawDelta; - pitch -= progression * this.pitchDelta; - - view.yaw = yaw; - view.pitch = pitch; - - let V = this.scene.view.direction.multiplyScalar(-view.radius); - let position = new THREE.Vector3().addVectors(pivot, V); - - view.position.copy(position); - } - - { // apply pan - let progression = Math.min(1, this.fadeFactor * delta); - let panDistance = progression * view.radius * 3; - - let px = -this.panDelta.x * panDistance; - let py = this.panDelta.y * panDistance; - - view.pan(px, py); - } - - { // apply zoom - let progression = Math.min(1, this.fadeFactor * delta); - - // let radius = view.radius + progression * this.radiusDelta * view.radius * 0.1; - let radius = view.radius + progression * this.radiusDelta; - - let V = view.direction.multiplyScalar(-radius); - let position = new THREE.Vector3().addVectors(view.getPivot(), V); - view.radius = radius; - - view.position.copy(position); - } - - { - let speed = view.radius / 2.5; - this.viewer.setMoveSpeed(speed); - } - - { // decelerate over time - let progression = Math.min(1, this.fadeFactor * delta); - let attenuation = Math.max(0, 1 - this.fadeFactor * delta); - - this.yawDelta *= attenuation; - this.pitchDelta *= attenuation; - this.panDelta.multiplyScalar(attenuation); - // this.radiusDelta *= attenuation; - this.radiusDelta -= progression * this.radiusDelta; - } - } - }; - - /** - * @author mschuetz / http://mschuetz.at - * - * adapted from THREE.OrbitControls by - * - * @author qiao / https://github.com/qiao - * @author mrdoob / http://mrdoob.com - * @author alteredq / http://alteredqualia.com/ - * @author WestLangley / http://github.com/WestLangley - * @author erich666 / http://erichaines.com - * - * - * - */ - - - class FirstPersonControls extends EventDispatcher { - constructor (viewer) { - super(); - - this.viewer = viewer; - this.renderer = viewer.renderer; - - this.scene = null; - this.sceneControls = new THREE.Scene(); - - this.rotationSpeed = 200; - this.moveSpeed = 10; - this.lockElevation = false; - - this.keys = { - FORWARD: ['W'.charCodeAt(0), 38], - BACKWARD: ['S'.charCodeAt(0), 40], - LEFT: ['A'.charCodeAt(0), 37], - RIGHT: ['D'.charCodeAt(0), 39], - UP: ['R'.charCodeAt(0), 33], - DOWN: ['F'.charCodeAt(0), 34] - }; - - this.fadeFactor = 50; - this.yawDelta = 0; - this.pitchDelta = 0; - this.translationDelta = new THREE.Vector3(0, 0, 0); - this.translationWorldDelta = new THREE.Vector3(0, 0, 0); - - this.tweens = []; - - let drag = (e) => { - if (e.drag.object !== null) { - return; - } - - if (e.drag.startHandled === undefined) { - e.drag.startHandled = true; - - this.dispatchEvent({type: 'start'}); - } - - let moveSpeed = this.viewer.getMoveSpeed(); - - let ndrag = { - x: e.drag.lastDrag.x / this.renderer.domElement.clientWidth, - y: e.drag.lastDrag.y / this.renderer.domElement.clientHeight - }; - - if (e.drag.mouse === MOUSE.LEFT) { - this.yawDelta += ndrag.x * this.rotationSpeed; - this.pitchDelta += ndrag.y * this.rotationSpeed; - } else if (e.drag.mouse === MOUSE.RIGHT) { - this.translationDelta.x -= ndrag.x * moveSpeed * 100; - this.translationDelta.z += ndrag.y * moveSpeed * 100; - } - }; - - let drop = e => { - this.dispatchEvent({type: 'end'}); - }; - - let scroll = (e) => { - let speed = this.viewer.getMoveSpeed(); - - if (e.delta < 0) { - speed = speed * 0.9; - } else if (e.delta > 0) { - speed = speed / 0.9; - } - - speed = Math.max(speed, 0.1); - - this.viewer.setMoveSpeed(speed); - }; - - let dblclick = (e) => { - this.zoomToLocation(e.mouse); - }; - - this.addEventListener('drag', drag); - this.addEventListener('drop', drop); - this.addEventListener('mousewheel', scroll); - this.addEventListener('dblclick', dblclick); - } - - setScene (scene) { - this.scene = scene; - } - - stop(){ - this.yawDelta = 0; - this.pitchDelta = 0; - this.translationDelta.set(0, 0, 0); - } - - zoomToLocation(mouse){ - let camera = this.scene.getActiveCamera(); - - let I = Utils.getMousePointCloudIntersection( - mouse, - camera, - this.viewer, - this.scene.pointclouds); - - if (I === null) { - return; - } - - let targetRadius = 0; - { - let minimumJumpDistance = 0.2; - - let domElement = this.renderer.domElement; - let ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight); - - let nodes = I.pointcloud.nodesOnRay(I.pointcloud.visibleNodes, ray); - let lastNode = nodes[nodes.length - 1]; - let radius = lastNode.getBoundingSphere(new THREE.Sphere()).radius; - targetRadius = Math.min(this.scene.view.radius, radius); - targetRadius = Math.max(minimumJumpDistance, targetRadius); - } - - let d = this.scene.view.direction.multiplyScalar(-1); - let cameraTargetPosition = new THREE.Vector3().addVectors(I.location, d.multiplyScalar(targetRadius)); - // TODO Unused: let controlsTargetPosition = I.location; - - let animationDuration = 600; - let easing = TWEEN.Easing.Quartic.Out; - - { // animate - let value = {x: 0}; - let tween = new TWEEN.Tween(value).to({x: 1}, animationDuration); - tween.easing(easing); - this.tweens.push(tween); - - let startPos = this.scene.view.position.clone(); - let targetPos = cameraTargetPosition.clone(); - let startRadius = this.scene.view.radius; - let targetRadius = cameraTargetPosition.distanceTo(I.location); - - tween.onUpdate(() => { - let t = value.x; - this.scene.view.position.x = (1 - t) * startPos.x + t * targetPos.x; - this.scene.view.position.y = (1 - t) * startPos.y + t * targetPos.y; - this.scene.view.position.z = (1 - t) * startPos.z + t * targetPos.z; - - this.scene.view.radius = (1 - t) * startRadius + t * targetRadius; - this.viewer.setMoveSpeed(this.scene.view.radius / 2.5); - }); - - tween.onComplete(() => { - this.tweens = this.tweens.filter(e => e !== tween); - }); - - tween.start(); - } - } - - update (delta) { - let view = this.scene.view; - - { // cancel move animations on user input - let changes = [ this.yawDelta, - this.pitchDelta, - this.translationDelta.length(), - this.translationWorldDelta.length() ]; - let changeHappens = changes.some(e => Math.abs(e) > 0.001); - if (changeHappens && this.tweens.length > 0) { - this.tweens.forEach(e => e.stop()); - this.tweens = []; - } - } - - { // accelerate while input is given - let ih = this.viewer.inputHandler; - - let moveForward = this.keys.FORWARD.some(e => ih.pressedKeys[e]); - let moveBackward = this.keys.BACKWARD.some(e => ih.pressedKeys[e]); - let moveLeft = this.keys.LEFT.some(e => ih.pressedKeys[e]); - let moveRight = this.keys.RIGHT.some(e => ih.pressedKeys[e]); - let moveUp = this.keys.UP.some(e => ih.pressedKeys[e]); - let moveDown = this.keys.DOWN.some(e => ih.pressedKeys[e]); - - if(this.lockElevation){ - let dir = view.direction; - dir.z = 0; - dir.normalize(); - - if (moveForward && moveBackward) { - this.translationWorldDelta.set(0, 0, 0); - } else if (moveForward) { - this.translationWorldDelta.copy(dir.multiplyScalar(this.viewer.getMoveSpeed())); - } else if (moveBackward) { - this.translationWorldDelta.copy(dir.multiplyScalar(-this.viewer.getMoveSpeed())); - } - }else { - if (moveForward && moveBackward) { - this.translationDelta.y = 0; - } else if (moveForward) { - this.translationDelta.y = this.viewer.getMoveSpeed(); - } else if (moveBackward) { - this.translationDelta.y = -this.viewer.getMoveSpeed(); - } - } - - if (moveLeft && moveRight) { - this.translationDelta.x = 0; - } else if (moveLeft) { - this.translationDelta.x = -this.viewer.getMoveSpeed(); - } else if (moveRight) { - this.translationDelta.x = this.viewer.getMoveSpeed(); - } - - if (moveUp && moveDown) { - this.translationWorldDelta.z = 0; - } else if (moveUp) { - this.translationWorldDelta.z = this.viewer.getMoveSpeed(); - } else if (moveDown) { - this.translationWorldDelta.z = -this.viewer.getMoveSpeed(); - } - } - - { // apply rotation - let yaw = view.yaw; - let pitch = view.pitch; - - yaw -= this.yawDelta * delta; - pitch -= this.pitchDelta * delta; - - view.yaw = yaw; - view.pitch = pitch; - } - - { // apply translation - view.translate( - this.translationDelta.x * delta, - this.translationDelta.y * delta, - this.translationDelta.z * delta - ); - - view.translateWorld( - this.translationWorldDelta.x * delta, - this.translationWorldDelta.y * delta, - this.translationWorldDelta.z * delta - ); - } - - { // set view target according to speed - view.radius = 3 * this.viewer.getMoveSpeed(); - } - - { // decelerate over time - let attenuation = Math.max(0, 1 - this.fadeFactor * delta); - this.yawDelta *= attenuation; - this.pitchDelta *= attenuation; - this.translationDelta.multiplyScalar(attenuation); - this.translationWorldDelta.multiplyScalar(attenuation); - } - } - }; - - class EarthControls extends EventDispatcher { - constructor (viewer) { - super(viewer); - - this.viewer = viewer; - this.renderer = viewer.renderer; - - this.scene = null; - this.sceneControls = new THREE.Scene(); - - this.rotationSpeed = 10; - - this.fadeFactor = 20; - this.wheelDelta = 0; - this.zoomDelta = new THREE.Vector3(); - this.camStart = null; - - this.tweens = []; - - { - let sg = new THREE.SphereGeometry(1, 16, 16); - let sm = new THREE.MeshNormalMaterial(); - this.pivotIndicator = new THREE.Mesh(sg, sm); - this.pivotIndicator.visible = false; - this.sceneControls.add(this.pivotIndicator); - } - - let drag = (e) => { - if (e.drag.object !== null) { - return; - } - - if (!this.pivot) { - return; - } - - if (e.drag.startHandled === undefined) { - e.drag.startHandled = true; - - this.dispatchEvent({type: 'start'}); - } - - let camStart = this.camStart; - let camera = this.scene.getActiveCamera(); - let view = this.viewer.scene.view; - - // let camera = this.viewer.scene.camera; - let mouse = e.drag.end; - let domElement = this.viewer.renderer.domElement; - - if (e.drag.mouse === MOUSE.LEFT) { - - let ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight); - let plane = new THREE.Plane().setFromNormalAndCoplanarPoint( - new THREE.Vector3(0, 0, 1), - this.pivot); - - let distanceToPlane = ray.distanceToPlane(plane); - - if (distanceToPlane > 0) { - let I = new THREE.Vector3().addVectors( - camStart.position, - ray.direction.clone().multiplyScalar(distanceToPlane)); - - let movedBy = new THREE.Vector3().subVectors( - I, this.pivot); - - let newCamPos = camStart.position.clone().sub(movedBy); - - view.position.copy(newCamPos); - - { - let distance = newCamPos.distanceTo(this.pivot); - view.radius = distance; - let speed = view.radius / 2.5; - this.viewer.setMoveSpeed(speed); - } - } - } else if (e.drag.mouse === MOUSE.RIGHT) { - let ndrag = { - x: e.drag.lastDrag.x / this.renderer.domElement.clientWidth, - y: e.drag.lastDrag.y / this.renderer.domElement.clientHeight - }; - - let yawDelta = -ndrag.x * this.rotationSpeed * 0.5; - let pitchDelta = -ndrag.y * this.rotationSpeed * 0.2; - - let originalPitch = view.pitch; - let tmpView = view.clone(); - tmpView.pitch = tmpView.pitch + pitchDelta; - pitchDelta = tmpView.pitch - originalPitch; - - let pivotToCam = new THREE.Vector3().subVectors(view.position, this.pivot); - let pivotToCamTarget = new THREE.Vector3().subVectors(view.getPivot(), this.pivot); - let side = view.getSide(); - - pivotToCam.applyAxisAngle(side, pitchDelta); - pivotToCamTarget.applyAxisAngle(side, pitchDelta); - - pivotToCam.applyAxisAngle(new THREE.Vector3(0, 0, 1), yawDelta); - pivotToCamTarget.applyAxisAngle(new THREE.Vector3(0, 0, 1), yawDelta); - - let newCam = new THREE.Vector3().addVectors(this.pivot, pivotToCam); - // TODO: Unused: let newCamTarget = new THREE.Vector3().addVectors(this.pivot, pivotToCamTarget); - - view.position.copy(newCam); - view.yaw += yawDelta; - view.pitch += pitchDelta; - } - }; - - let onMouseDown = e => { - let I = Utils.getMousePointCloudIntersection( - e.mouse, - this.scene.getActiveCamera(), - this.viewer, - this.scene.pointclouds, - {pickClipped: false}); - - if (I) { - this.pivot = I.location; - this.camStart = this.scene.getActiveCamera().clone(); - this.pivotIndicator.visible = true; - this.pivotIndicator.position.copy(I.location); - } - }; - - let drop = e => { - this.dispatchEvent({type: 'end'}); - }; - - let onMouseUp = e => { - this.camStart = null; - this.pivot = null; - this.pivotIndicator.visible = false; - }; - - let scroll = (e) => { - this.wheelDelta += e.delta; - }; - - let dblclick = (e) => { - this.zoomToLocation(e.mouse); - }; - - this.addEventListener('drag', drag); - this.addEventListener('drop', drop); - this.addEventListener('mousewheel', scroll); - this.addEventListener('mousedown', onMouseDown); - this.addEventListener('mouseup', onMouseUp); - this.addEventListener('dblclick', dblclick); - } - - setScene (scene) { - this.scene = scene; - } - - stop(){ - this.wheelDelta = 0; - this.zoomDelta.set(0, 0, 0); - } - - zoomToLocation(mouse){ - let camera = this.scene.getActiveCamera(); - - let I = Utils.getMousePointCloudIntersection( - mouse, - camera, - this.viewer, - this.scene.pointclouds); - - if (I === null) { - return; - } - - let targetRadius = 0; - { - let minimumJumpDistance = 0.2; - - let domElement = this.renderer.domElement; - let ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight); - - let nodes = I.pointcloud.nodesOnRay(I.pointcloud.visibleNodes, ray); - let lastNode = nodes[nodes.length - 1]; - let radius = lastNode.getBoundingSphere(new THREE.Sphere()).radius; - targetRadius = Math.min(this.scene.view.radius, radius); - targetRadius = Math.max(minimumJumpDistance, targetRadius); - } - - let d = this.scene.view.direction.multiplyScalar(-1); - let cameraTargetPosition = new THREE.Vector3().addVectors(I.location, d.multiplyScalar(targetRadius)); - // TODO Unused: let controlsTargetPosition = I.location; - - let animationDuration = 600; - let easing = TWEEN.Easing.Quartic.Out; - - { // animate - let value = {x: 0}; - let tween = new TWEEN.Tween(value).to({x: 1}, animationDuration); - tween.easing(easing); - this.tweens.push(tween); - - let startPos = this.scene.view.position.clone(); - let targetPos = cameraTargetPosition.clone(); - let startRadius = this.scene.view.radius; - let targetRadius = cameraTargetPosition.distanceTo(I.location); - - tween.onUpdate(() => { - let t = value.x; - this.scene.view.position.x = (1 - t) * startPos.x + t * targetPos.x; - this.scene.view.position.y = (1 - t) * startPos.y + t * targetPos.y; - this.scene.view.position.z = (1 - t) * startPos.z + t * targetPos.z; - - this.scene.view.radius = (1 - t) * startRadius + t * targetRadius; - this.viewer.setMoveSpeed(this.scene.view.radius / 2.5); - }); - - tween.onComplete(() => { - this.tweens = this.tweens.filter(e => e !== tween); - }); - - tween.start(); - } - } - - update (delta) { - let view = this.scene.view; - let fade = Math.pow(0.5, this.fadeFactor * delta); - let progression = 1 - fade; - let camera = this.scene.getActiveCamera(); - - // compute zoom - if (this.wheelDelta !== 0) { - let I = Utils.getMousePointCloudIntersection( - this.viewer.inputHandler.mouse, - this.scene.getActiveCamera(), - this.viewer, - this.scene.pointclouds); - - if (I) { - let resolvedPos = new THREE.Vector3().addVectors(view.position, this.zoomDelta); - let distance = I.location.distanceTo(resolvedPos); - let jumpDistance = distance * 0.2 * this.wheelDelta; - let targetDir = new THREE.Vector3().subVectors(I.location, view.position); - targetDir.normalize(); - - resolvedPos.add(targetDir.multiplyScalar(jumpDistance)); - this.zoomDelta.subVectors(resolvedPos, view.position); - - { - let distance = resolvedPos.distanceTo(I.location); - view.radius = distance; - let speed = view.radius / 2.5; - this.viewer.setMoveSpeed(speed); - } - } - } - - // apply zoom - if (this.zoomDelta.length() !== 0) { - let p = this.zoomDelta.clone().multiplyScalar(progression); - - let newPos = new THREE.Vector3().addVectors(view.position, p); - view.position.copy(newPos); - } - - if (this.pivotIndicator.visible) { - let distance = this.pivotIndicator.position.distanceTo(view.position); - let pixelwidth = this.renderer.domElement.clientwidth; - let pixelHeight = this.renderer.domElement.clientHeight; - let pr = Utils.projectedRadius(1, camera, distance, pixelwidth, pixelHeight); - let scale = (10 / pr); - this.pivotIndicator.scale.set(scale, scale, scale); - } - - // decelerate over time - { - this.zoomDelta.multiplyScalar(fade); - this.wheelDelta = 0; - } - } - }; - - /** - * @author chrisl / Geodan - * - * adapted from Potree.FirstPersonControls by - * - * @author mschuetz / http://mschuetz.at - * - * and THREE.DeviceOrientationControls by - * - * @author richt / http://richt.me - * @author WestLangley / http://github.com/WestLangley - * - * - * - */ - - class DeviceOrientationControls extends EventDispatcher{ - constructor(viewer){ - super(); - - this.viewer = viewer; - this.renderer = viewer.renderer; - - this.scene = null; - this.sceneControls = new THREE.Scene(); - - this.screenOrientation = window.orientation || 0; - - let deviceOrientationChange = e => { - this.deviceOrientation = e; - }; - - let screenOrientationChange = e => { - this.screenOrientation = window.orientation || 0; - }; - - if ('ondeviceorientationabsolute' in window) { - window.addEventListener('deviceorientationabsolute', deviceOrientationChange); - } else if ('ondeviceorientation' in window) { - window.addEventListener('deviceorientation', deviceOrientationChange); - } else { - console.warn("No device orientation found."); - } - // window.addEventListener('deviceorientation', deviceOrientationChange); - window.addEventListener('orientationchange', screenOrientationChange); - } - - setScene (scene) { - this.scene = scene; - } - - update (delta) { - let computeQuaternion = function (alpha, beta, gamma, orient) { - let quaternion = new THREE.Quaternion(); - - let zee = new THREE.Vector3(0, 0, 1); - let euler = new THREE.Euler(); - let q0 = new THREE.Quaternion(); - - euler.set(beta, gamma, alpha, 'ZXY'); - quaternion.setFromEuler(euler); - quaternion.multiply(q0.setFromAxisAngle(zee, -orient)); - - return quaternion; - }; - - if (typeof this.deviceOrientation !== 'undefined') { - let alpha = this.deviceOrientation.alpha ? THREE.Math.degToRad(this.deviceOrientation.alpha) : 0; - let beta = this.deviceOrientation.beta ? THREE.Math.degToRad(this.deviceOrientation.beta) : 0; - let gamma = this.deviceOrientation.gamma ? THREE.Math.degToRad(this.deviceOrientation.gamma) : 0; - let orient = this.screenOrientation ? THREE.Math.degToRad(this.screenOrientation) : 0; - - let quaternion = computeQuaternion(alpha, beta, gamma, orient); - viewer.scene.cameraP.quaternion.set(quaternion.x, quaternion.y, quaternion.z, quaternion.w); - } - } - }; - - class Viewer extends EventDispatcher{ - - constructor(domElement, args = {}){ - super(); - - this.renderArea = domElement; - this.guiLoaded = false; - this.guiLoadTasks = []; - - this.vr = null; - this.onVrListeners = []; - - this.messages = []; - this.elMessages = $(` -
        -
        `); - $(domElement).append(this.elMessages); - - try{ - - { // generate missing dom hierarchy - if ($(domElement).find('#potree_map').length === 0) { - let potreeMap = $(` - - `); - $(domElement).append(potreeMap); - } - - if ($(domElement).find('#potree_description').length === 0) { - let potreeDescription = $(`
        `); - $(domElement).append(potreeDescription); - } - - if ($(domElement).find('#potree_annotations').length === 0) { - let potreeAnnotationContainer = $(` -
        `); - $(domElement).append(potreeAnnotationContainer); - } - } - - this.pointCloudLoadedCallback = args.onPointCloudLoaded || function () {}; - - // if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) { - // defaultSettings.navigation = "Orbit"; - // } - - this.server = null; - - this.fov = 60; - this.isFlipYZ = false; - this.useDEMCollisions = false; - this.generateDEM = false; - this.minNodeSize = 30; - this.edlStrength = 1.0; - this.edlRadius = 1.4; - this.edlOpacity = 1.0; - this.useEDL = false; - this.description = ""; - - this.classifications = ClassificationScheme.DEFAULT; - - this.moveSpeed = 10; - - this.lengthUnit = LengthUnits.METER; - this.lengthUnitDisplay = LengthUnits.METER; - - this.showBoundingBox = false; - this.showAnnotations = true; - this.freeze = false; - this.clipTask = ClipTask.HIGHLIGHT; - this.clipMethod = ClipMethod.INSIDE_ANY; - - this.elevationGradientRepeat = ElevationGradientRepeat.CLAMP; - - this.filterReturnNumberRange = [0, 7]; - this.filterNumberOfReturnsRange = [0, 7]; - this.filterGPSTimeRange = [-Infinity, Infinity]; - this.filterPointSourceIDRange = [0, 65535]; - - this.potreeRenderer = null; - this.edlRenderer = null; - this.renderer = null; - this.pRenderer = null; - - this.scene = null; - this.overlay = null; - this.overlayCamera = null; - - this.inputHandler = null; - this.controls = null; - - this.clippingTool = null; - this.transformationTool = null; - this.navigationCube = null; - this.compass = null; - - this.skybox = null; - this.clock = new THREE.Clock(); - this.background = null; - - this.initThree(); - this.prepareVR(); - - if(args.noDragAndDrop){ - - }else { - this.initDragAndDrop(); - } - - if(typeof Stats !== "undefined"){ - this.stats = new Stats(); - this.stats.showPanel( 0 ); // 0: fps, 1: ms, 2: mb, 3+: custom - document.body.appendChild( this.stats.dom ); - } - - { - let canvas = this.renderer.domElement; - canvas.addEventListener("webglcontextlost", (e) => { - console.log(e); - this.postMessage("WebGL context lost. \u2639"); - - let gl = this.renderer.getContext(); - let error = gl.getError(); - console.log(error); - }, false); - } - - { - this.overlay = new THREE.Scene(); - this.overlayCamera = new THREE.OrthographicCamera( - 0, 1, - 1, 0, - -1000, 1000 - ); - } - - this.pRenderer = new Renderer(this.renderer); - - { - let near = 2.5; - let far = 10.0; - let fov = 90; - - this.shadowTestCam = new THREE.PerspectiveCamera(90, 1, near, far); - this.shadowTestCam.position.set(3.50, -2.80, 8.561); - this.shadowTestCam.lookAt(new THREE.Vector3(0, 0, 4.87)); - } - - - let scene = new Scene(this.renderer); - this.setScene(scene); - - { - this.inputHandler = new InputHandler(this); - this.inputHandler.setScene(this.scene); - - this.clippingTool = new ClippingTool(this); - this.transformationTool = new TransformationTool(this); - this.navigationCube = new NavigationCube(this); - this.navigationCube.visible = false; - - this.compass = new Compass(this); - - this.createControls(); - - this.clippingTool.setScene(this.scene); - - let onPointcloudAdded = (e) => { - if (this.scene.pointclouds.length === 1) { - let speed = e.pointcloud.boundingBox.getSize(new THREE.Vector3()).length(); - speed = speed / 5; - this.setMoveSpeed(speed); - } - }; - - let onVolumeRemoved = (e) => { - this.inputHandler.deselect(e.volume); - }; - - this.addEventListener('scene_changed', (e) => { - this.inputHandler.setScene(e.scene); - this.clippingTool.setScene(this.scene); - - if(!e.scene.hasEventListener("pointcloud_added", onPointcloudAdded)){ - e.scene.addEventListener("pointcloud_added", onPointcloudAdded); - } - - if(!e.scene.hasEventListener("volume_removed", onPointcloudAdded)){ - e.scene.addEventListener("volume_removed", onVolumeRemoved); - } - - }); - - this.scene.addEventListener("volume_removed", onVolumeRemoved); - this.scene.addEventListener('pointcloud_added', onPointcloudAdded); - } - - { // set defaults - this.setFOV(60); - this.setEDLEnabled(false); - this.setEDLRadius(1.4); - this.setEDLStrength(0.4); - this.setEDLOpacity(1.0); - this.setClipTask(ClipTask.HIGHLIGHT); - this.setClipMethod(ClipMethod.INSIDE_ANY); - this.setPointBudget(1*1000*1000); - this.setShowBoundingBox(false); - this.setFreeze(false); - this.setControls(this.orbitControls); - this.setBackground('gradient'); - - this.scaleFactor = 1; - - this.loadSettingsFromURL(); - } - - // start rendering! - if(args.useDefaultRenderLoop === undefined || args.useDefaultRenderLoop === true){ - requestAnimationFrame(this.loop.bind(this)); - } - - this.loadGUI = this.loadGUI.bind(this); - - this.annotationTool = new AnnotationTool(this); - this.measuringTool = new MeasuringTool(this); - this.profileTool = new ProfileTool(this); - this.volumeTool = new VolumeTool(this); - - }catch(e){ - this.onCrash(e); - } - } - - onCrash(error){ - - $(this.renderArea).empty(); - - if ($(this.renderArea).find('#potree_failpage').length === 0) { - let elFailPage = $(` -
        - -

        Potree Encountered An Error

        - -

        - This may happen if your browser or graphics card is not supported. -
        - We recommend to use - Chrome - or - Firefox. -

        - -

        - Please also visit webglreport.com and - check whether your system supports WebGL. -

        -

        - If you are already using one of the recommended browsers and WebGL is enabled, - consider filing an issue report at github,
        - including your operating system, graphics card, browser and browser version, as well as the - error message below.
        - Please do not report errors on unsupported browsers. -

        - -
        
        -				
        -			
        `); - - let elErrorMessage = elFailPage.find('#potree_error_console'); - elErrorMessage.html(error.stack); - - $(this.renderArea).append(elFailPage); - } - - throw error; - } - - // ------------------------------------------------------------------------------------ - // Viewer API - // ------------------------------------------------------------------------------------ - - setScene (scene) { - if (scene === this.scene) { - return; - } - - let oldScene = this.scene; - this.scene = scene; - - this.dispatchEvent({ - type: 'scene_changed', - oldScene: oldScene, - scene: scene - }); - - { // Annotations - $('.annotation').detach(); - - // for(let annotation of this.scene.annotations){ - // this.renderArea.appendChild(annotation.domElement[0]); - // } - - this.scene.annotations.traverse(annotation => { - this.renderArea.appendChild(annotation.domElement[0]); - }); - - if (!this.onAnnotationAdded) { - this.onAnnotationAdded = e => { - // console.log("annotation added: " + e.annotation.title); - - e.annotation.traverse(node => { - - $("#potree_annotation_container").append(node.domElement); - //this.renderArea.appendChild(node.domElement[0]); - node.scene = this.scene; - }); - }; - } - - if (oldScene) { - oldScene.annotations.removeEventListener('annotation_added', this.onAnnotationAdded); - } - this.scene.annotations.addEventListener('annotation_added', this.onAnnotationAdded); - } - }; - - setControls(controls){ - if (controls !== this.controls) { - if (this.controls) { - this.controls.enabled = false; - this.inputHandler.removeInputListener(this.controls); - } - - this.controls = controls; - this.controls.enabled = true; - this.inputHandler.addInputListener(this.controls); - } - } - - getControls () { - return this.controls; - } - - getMinNodeSize () { - return this.minNodeSize; - }; - - setMinNodeSize (value) { - if (this.minNodeSize !== value) { - this.minNodeSize = value; - this.dispatchEvent({'type': 'minnodesize_changed', 'viewer': this}); - } - }; - - getBackground () { - return this.background; - } - - setBackground(bg){ - if (this.background === bg) { - return; - } - - if(bg === "skybox"){ - this.skybox = Utils.loadSkybox(new URL(Potree.resourcePath + '/textures/skybox2/').href); - } - - this.background = bg; - this.dispatchEvent({'type': 'background_changed', 'viewer': this}); - } - - setDescription (value) { - this.description = value; - - $('#potree_description').html(value); - //$('#potree_description').text(value); - } - - getDescription(){ - return this.description; - } - - setShowBoundingBox (value) { - if (this.showBoundingBox !== value) { - this.showBoundingBox = value; - this.dispatchEvent({'type': 'show_boundingbox_changed', 'viewer': this}); - } - }; - - getShowBoundingBox () { - return this.showBoundingBox; - }; - - setMoveSpeed (value) { - if (this.moveSpeed !== value) { - this.moveSpeed = value; - this.dispatchEvent({'type': 'move_speed_changed', 'viewer': this, 'speed': value}); - } - }; - - getMoveSpeed () { - return this.moveSpeed; - }; - - setWeightClassification (w) { - for (let i = 0; i < this.scene.pointclouds.length; i++) { - this.scene.pointclouds[i].material.weightClassification = w; - this.dispatchEvent({'type': 'attribute_weights_changed' + i, 'viewer': this}); - } - }; - - setFreeze (value) { - value = Boolean(value); - if (this.freeze !== value) { - this.freeze = value; - this.dispatchEvent({'type': 'freeze_changed', 'viewer': this}); - } - }; - - getFreeze () { - return this.freeze; - }; - - getClipTask(){ - return this.clipTask; - } - - getClipMethod(){ - return this.clipMethod; - } - - setClipTask(value){ - if(this.clipTask !== value){ - - this.clipTask = value; - - this.dispatchEvent({ - type: "cliptask_changed", - viewer: this}); - } - } - - setClipMethod(value){ - if(this.clipMethod !== value){ - - this.clipMethod = value; - - this.dispatchEvent({ - type: "clipmethod_changed", - viewer: this}); - } - } - - setElevationGradientRepeat(value){ - if(this.elevationGradientRepeat !== value){ - - this.elevationGradientRepeat = value; - - this.dispatchEvent({ - type: "elevation_gradient_repeat_changed", - viewer: this}); - } - } - - setPointBudget (value) { - if (Potree.pointBudget !== value) { - Potree.pointBudget = parseInt(value); - this.dispatchEvent({'type': 'point_budget_changed', 'viewer': this}); - } - }; - - getPointBudget () { - return Potree.pointBudget; - }; - - setShowAnnotations (value) { - if (this.showAnnotations !== value) { - this.showAnnotations = value; - this.dispatchEvent({'type': 'show_annotations_changed', 'viewer': this}); - } - } - - getShowAnnotations () { - return this.showAnnotations; - } - - setDEMCollisionsEnabled(value){ - if(this.useDEMCollisions !== value){ - this.useDEMCollisions = value; - this.dispatchEvent({'type': 'use_demcollisions_changed', 'viewer': this}); - }; - }; - - getDEMCollisionsEnabled () { - return this.useDEMCollisions; - }; - - setEDLEnabled (value) { - value = Boolean(value); - if (this.useEDL !== value) { - this.useEDL = value; - this.dispatchEvent({'type': 'use_edl_changed', 'viewer': this}); - } - }; - - getEDLEnabled () { - return this.useEDL; - }; - - setEDLRadius (value) { - if (this.edlRadius !== value) { - this.edlRadius = value; - this.dispatchEvent({'type': 'edl_radius_changed', 'viewer': this}); - } - }; - - getEDLRadius () { - return this.edlRadius; - }; - - setEDLStrength (value) { - if (this.edlStrength !== value) { - this.edlStrength = value; - this.dispatchEvent({'type': 'edl_strength_changed', 'viewer': this}); - } - }; - - getEDLStrength () { - return this.edlStrength; - }; - - setEDLOpacity (value) { - if (this.edlOpacity !== value) { - this.edlOpacity = value; - this.dispatchEvent({'type': 'edl_opacity_changed', 'viewer': this}); - } - }; - - getEDLOpacity () { - return this.edlOpacity; - }; - - setFOV (value) { - if (this.fov !== value) { - this.fov = value; - this.dispatchEvent({'type': 'fov_changed', 'viewer': this}); - } - }; - - getFOV () { - return this.fov; - }; - - disableAnnotations () { - this.scene.annotations.traverse(annotation => { - annotation.domElement.css('pointer-events', 'none'); - - // return annotation.visible; - }); - }; - - enableAnnotations () { - this.scene.annotations.traverse(annotation => { - annotation.domElement.css('pointer-events', 'auto'); - - // return annotation.visible; - }); - } - - setClassifications(classifications){ - this.classifications = classifications; - - this.dispatchEvent({'type': 'classifications_changed', 'viewer': this}); - } - - setClassificationVisibility (key, value) { - if (!this.classifications[key]) { - this.classifications[key] = {visible: value, name: 'no name'}; - this.dispatchEvent({'type': 'classification_visibility_changed', 'viewer': this}); - } else if (this.classifications[key].visible !== value) { - this.classifications[key].visible = value; - this.dispatchEvent({'type': 'classification_visibility_changed', 'viewer': this}); - } - } - - toggleAllClassificationsVisibility(){ - - let numVisible = 0; - let numItems = 0; - for(const key of Object.keys(this.classifications)){ - if(this.classifications[key].visible){ - numVisible++; - } - numItems++; - } - - let visible = true; - if(numVisible === numItems){ - visible = false; - } - - let somethingChanged = false; - - for(const key of Object.keys(this.classifications)){ - if(this.classifications[key].visible !== visible){ - this.classifications[key].visible = visible; - somethingChanged = true; - } - } - - if(somethingChanged){ - this.dispatchEvent({'type': 'classification_visibility_changed', 'viewer': this}); - } - } - - setFilterReturnNumberRange(from, to){ - this.filterReturnNumberRange = [from, to]; - this.dispatchEvent({'type': 'filter_return_number_range_changed', 'viewer': this}); - } - - setFilterNumberOfReturnsRange(from, to){ - this.filterNumberOfReturnsRange = [from, to]; - this.dispatchEvent({'type': 'filter_number_of_returns_range_changed', 'viewer': this}); - } - - setFilterGPSTimeRange(from, to){ - this.filterGPSTimeRange = [from, to]; - this.dispatchEvent({'type': 'filter_gps_time_range_changed', 'viewer': this}); - } - - setFilterPointSourceIDRange(from, to){ - this.filterPointSourceIDRange = [from, to]; - this.dispatchEvent({'type': 'filter_point_source_id_range_changed', 'viewer': this}); - } - - setLengthUnit (value) { - switch (value) { - case 'm': - this.lengthUnit = LengthUnits.METER; - this.lengthUnitDisplay = LengthUnits.METER; - break; - case 'ft': - this.lengthUnit = LengthUnits.FEET; - this.lengthUnitDisplay = LengthUnits.FEET; - break; - case 'in': - this.lengthUnit = LengthUnits.INCH; - this.lengthUnitDisplay = LengthUnits.INCH; - break; - } - - this.dispatchEvent({ 'type': 'length_unit_changed', 'viewer': this, value: value}); - }; - - setLengthUnitAndDisplayUnit(lengthUnitValue, lengthUnitDisplayValue) { - switch (lengthUnitValue) { - case 'm': - this.lengthUnit = LengthUnits.METER; - break; - case 'ft': - this.lengthUnit = LengthUnits.FEET; - break; - case 'in': - this.lengthUnit = LengthUnits.INCH; - break; - } - - switch (lengthUnitDisplayValue) { - case 'm': - this.lengthUnitDisplay = LengthUnits.METER; - break; - case 'ft': - this.lengthUnitDisplay = LengthUnits.FEET; - break; - case 'in': - this.lengthUnitDisplay = LengthUnits.INCH; - break; - } - - this.dispatchEvent({ 'type': 'length_unit_changed', 'viewer': this, value: lengthUnitValue }); - }; - - zoomTo(node, factor, animationDuration = 0){ - let view = this.scene.view; - - let camera = this.scene.cameraP.clone(); - camera.rotation.copy(this.scene.cameraP.rotation); - camera.rotation.order = "ZXY"; - camera.rotation.x = Math.PI / 2 + view.pitch; - camera.rotation.z = view.yaw; - camera.updateMatrix(); - camera.updateMatrixWorld(); - camera.zoomTo(node, factor); - - let bs; - if (node.boundingSphere) { - bs = node.boundingSphere; - } else if (node.geometry && node.geometry.boundingSphere) { - bs = node.geometry.boundingSphere; - } else { - bs = node.boundingBox.getBoundingSphere(new THREE.Sphere()); - } - bs = bs.clone().applyMatrix4(node.matrixWorld); - - let startPosition = view.position.clone(); - let endPosition = camera.position.clone(); - let startTarget = view.getPivot(); - let endTarget = bs.center; - let startRadius = view.radius; - let endRadius = endPosition.distanceTo(endTarget); - - let easing = TWEEN.Easing.Quartic.Out; - - { // animate camera position - let pos = startPosition.clone(); - let tween = new TWEEN.Tween(pos).to(endPosition, animationDuration); - tween.easing(easing); - - tween.onUpdate(() => { - view.position.copy(pos); - }); - - tween.start(); - } - - { // animate camera target - let target = startTarget.clone(); - let tween = new TWEEN.Tween(target).to(endTarget, animationDuration); - tween.easing(easing); - tween.onUpdate(() => { - view.lookAt(target); - }); - tween.onComplete(() => { - view.lookAt(target); - this.dispatchEvent({type: 'focusing_finished', target: this}); - }); - - this.dispatchEvent({type: 'focusing_started', target: this}); - tween.start(); - } - }; - - moveToGpsTimeVicinity(time){ - const result = Potree.Utils.findClosestGpsTime(time, viewer); - - const box = result.node.pointcloud.deepestNodeAt(result.position).getBoundingBox(); - const diameter = box.min.distanceTo(box.max); - - const camera = this.scene.getActiveCamera(); - const offset = camera.getWorldDirection(new THREE.Vector3()).multiplyScalar(diameter); - const newCamPos = result.position.clone().sub(offset); - - this.scene.view.position.copy(newCamPos); - this.scene.view.lookAt(result.position); - } - - showAbout () { - $(function () { - $('#about-panel').dialog(); - }); - }; - - getBoundingBox (pointclouds) { - return this.scene.getBoundingBox(pointclouds); - }; - - getGpsTimeExtent(){ - const range = [Infinity, -Infinity]; - - for(const pointcloud of this.scene.pointclouds){ - const attributes = pointcloud.pcoGeometry.pointAttributes.attributes; - const aGpsTime = attributes.find(a => a.name === "gps-time"); - - if(aGpsTime){ - range[0] = Math.min(range[0], aGpsTime.range[0]); - range[1] = Math.max(range[1], aGpsTime.range[1]); - } - } - - return range; - } - - fitToScreen (factor = 1, animationDuration = 0) { - let box = this.getBoundingBox(this.scene.pointclouds); - - let node = new THREE.Object3D(); - node.boundingBox = box; - - this.zoomTo(node, factor, animationDuration); - this.controls.stop(); - }; - - toggleNavigationCube() { - this.navigationCube.visible = !this.navigationCube.visible; - } - - setView(view) { - if(!view) return; - - switch(view) { - case "F": - this.setFrontView(); - break; - case "B": - this.setBackView(); - break; - case "L": - this.setLeftView(); - break; - case "R": - this.setRightView(); - break; - case "U": - this.setTopView(); - break; - case "D": - this.setBottomView(); - break; - } - } - - setTopView(){ - this.scene.view.yaw = 0; - this.scene.view.pitch = -Math.PI / 2; - - this.fitToScreen(); - }; - - setBottomView(){ - this.scene.view.yaw = -Math.PI; - this.scene.view.pitch = Math.PI / 2; - - this.fitToScreen(); - }; - - setFrontView(){ - this.scene.view.yaw = 0; - this.scene.view.pitch = 0; - - this.fitToScreen(); - }; - - setBackView(){ - this.scene.view.yaw = Math.PI; - this.scene.view.pitch = 0; - - this.fitToScreen(); - }; - - setLeftView(){ - this.scene.view.yaw = -Math.PI / 2; - this.scene.view.pitch = 0; - - this.fitToScreen(); - }; - - setRightView () { - this.scene.view.yaw = Math.PI / 2; - this.scene.view.pitch = 0; - - this.fitToScreen(); - }; - - flipYZ () { - this.isFlipYZ = !this.isFlipYZ; - - // TODO flipyz - console.log('TODO'); - } - - setCameraMode(mode){ - this.scene.cameraMode = mode; - - for(let pointcloud of this.scene.pointclouds) { - pointcloud.material.useOrthographicCamera = mode == CameraMode.ORTHOGRAPHIC; - } - } - - getProjection(){ - const pointcloud = this.scene.pointclouds[0]; - - if(pointcloud){ - return pointcloud.projection; - }else { - return null; - } - } - - async loadProject(url){ - - const response = await fetch(url); - - const text = await response.text(); - const json = lib.parse(text); - // const json = JSON.parse(text); - - if(json.type === "Potree"){ - Potree.loadProject(viewer, json); - } - - //Potree.loadProject(this, url); - } - - saveProject(){ - return Potree.saveProject(this); - } - - loadSettingsFromURL(){ - if(Utils.getParameterByName("pointSize")){ - this.setPointSize(parseFloat(Utils.getParameterByName("pointSize"))); - } - - if(Utils.getParameterByName("FOV")){ - this.setFOV(parseFloat(Utils.getParameterByName("FOV"))); - } - - if(Utils.getParameterByName("opacity")){ - this.setOpacity(parseFloat(Utils.getParameterByName("opacity"))); - } - - if(Utils.getParameterByName("edlEnabled")){ - let enabled = Utils.getParameterByName("edlEnabled") === "true"; - this.setEDLEnabled(enabled); - } - - if (Utils.getParameterByName('edlRadius')) { - this.setEDLRadius(parseFloat(Utils.getParameterByName('edlRadius'))); - } - - if (Utils.getParameterByName('edlStrength')) { - this.setEDLStrength(parseFloat(Utils.getParameterByName('edlStrength'))); - } - - if (Utils.getParameterByName('pointBudget')) { - this.setPointBudget(parseFloat(Utils.getParameterByName('pointBudget'))); - } - - if (Utils.getParameterByName('showBoundingBox')) { - let enabled = Utils.getParameterByName('showBoundingBox') === 'true'; - if (enabled) { - this.setShowBoundingBox(true); - } else { - this.setShowBoundingBox(false); - } - } - - if (Utils.getParameterByName('material')) { - let material = Utils.getParameterByName('material'); - this.setMaterial(material); - } - - if (Utils.getParameterByName('pointSizing')) { - let sizing = Utils.getParameterByName('pointSizing'); - this.setPointSizing(sizing); - } - - if (Utils.getParameterByName('quality')) { - let quality = Utils.getParameterByName('quality'); - this.setQuality(quality); - } - - if (Utils.getParameterByName('position')) { - let value = Utils.getParameterByName('position'); - value = value.replace('[', '').replace(']', ''); - let tokens = value.split(';'); - let x = parseFloat(tokens[0]); - let y = parseFloat(tokens[1]); - let z = parseFloat(tokens[2]); - - this.scene.view.position.set(x, y, z); - } - - if (Utils.getParameterByName('target')) { - let value = Utils.getParameterByName('target'); - value = value.replace('[', '').replace(']', ''); - let tokens = value.split(';'); - let x = parseFloat(tokens[0]); - let y = parseFloat(tokens[1]); - let z = parseFloat(tokens[2]); - - this.scene.view.lookAt(new THREE.Vector3(x, y, z)); - } - - if (Utils.getParameterByName('background')) { - let value = Utils.getParameterByName('background'); - this.setBackground(value); - } - - // if(Utils.getParameterByName("elevationRange")){ - // let value = Utils.getParameterByName("elevationRange"); - // value = value.replace("[", "").replace("]", ""); - // let tokens = value.split(";"); - // let x = parseFloat(tokens[0]); - // let y = parseFloat(tokens[1]); - // - // this.setElevationRange(x, y); - // //this.scene.view.target.set(x, y, z); - // } - }; - - // ------------------------------------------------------------------------------------ - // Viewer Internals - // ------------------------------------------------------------------------------------ - - createControls () { - { // create FIRST PERSON CONTROLS - this.fpControls = new FirstPersonControls(this); - this.fpControls.enabled = false; - this.fpControls.addEventListener('start', this.disableAnnotations.bind(this)); - this.fpControls.addEventListener('end', this.enableAnnotations.bind(this)); - } - - // { // create GEO CONTROLS - // this.geoControls = new GeoControls(this.scene.camera, this.renderer.domElement); - // this.geoControls.enabled = false; - // this.geoControls.addEventListener("start", this.disableAnnotations.bind(this)); - // this.geoControls.addEventListener("end", this.enableAnnotations.bind(this)); - // this.geoControls.addEventListener("move_speed_changed", (event) => { - // this.setMoveSpeed(this.geoControls.moveSpeed); - // }); - // } - - { // create ORBIT CONTROLS - this.orbitControls = new OrbitControls(this); - this.orbitControls.enabled = false; - this.orbitControls.addEventListener('start', this.disableAnnotations.bind(this)); - this.orbitControls.addEventListener('end', this.enableAnnotations.bind(this)); - } - - { // create EARTH CONTROLS - this.earthControls = new EarthControls(this); - this.earthControls.enabled = false; - this.earthControls.addEventListener('start', this.disableAnnotations.bind(this)); - this.earthControls.addEventListener('end', this.enableAnnotations.bind(this)); - } - - { // create DEVICE ORIENTATION CONTROLS - this.deviceControls = new DeviceOrientationControls(this); - this.deviceControls.enabled = false; - this.deviceControls.addEventListener('start', this.disableAnnotations.bind(this)); - this.deviceControls.addEventListener('end', this.enableAnnotations.bind(this)); - } - }; - - toggleSidebar () { - let renderArea = $('#potree_render_area'); - let isVisible = renderArea.css('left') !== '0px'; - - if (isVisible) { - renderArea.css('left', '0px'); - } else { - renderArea.css('left', '300px'); - } - }; - - toggleMap () { - // let map = $('#potree_map'); - // map.toggle(100); - - if (this.mapView) { - this.mapView.toggle(); - } - }; - - onGUILoaded(callback){ - if(this.guiLoaded){ - callback(); - }else { - this.guiLoadTasks.push(callback); - } - } - - promiseGuiLoaded(){ - return new Promise( resolve => { - - if(this.guiLoaded){ - resolve(); - }else { - this.guiLoadTasks.push(resolve); - } - - }); - } - - loadGUI(callback){ - - if(callback){ - this.onGUILoaded(callback); - } - - let viewer = this; - let sidebarContainer = $('#potree_sidebar_container'); - sidebarContainer.load(new URL(Potree.scriptPath + '/sidebar.html').href, () => { - sidebarContainer.css('width', '300px'); - sidebarContainer.css('height', '100%'); - - let imgMenuToggle = document.createElement('img'); - imgMenuToggle.src = new URL(Potree.resourcePath + '/icons/menu_button.svg').href; - imgMenuToggle.onclick = this.toggleSidebar; - imgMenuToggle.classList.add('potree_menu_toggle'); - - let imgMapToggle = document.createElement('img'); - imgMapToggle.src = new URL(Potree.resourcePath + '/icons/map_icon.png').href; - imgMapToggle.style.display = 'none'; - imgMapToggle.onclick = e => { this.toggleMap(); }; - imgMapToggle.id = 'potree_map_toggle'; - - viewer.renderArea.insertBefore(imgMapToggle, viewer.renderArea.children[0]); - viewer.renderArea.insertBefore(imgMenuToggle, viewer.renderArea.children[0]); - - this.mapView = new MapView(this); - this.mapView.init(); - - i18n.init({ - lng: 'en', - resGetPath: Potree.resourcePath + '/lang/__lng__/__ns__.json', - preload: ['en', 'fr', 'de', 'jp', 'se', 'es'], - getAsync: true, - debug: false - }, function (t) { - // Start translation once everything is loaded - $('body').i18n(); - }); - - $(() => { - //initSidebar(this); - let sidebar = new Sidebar(this); - sidebar.init(); - - this.sidebar = sidebar; - - //if (callback) { - // $(callback); - //} - - let elProfile = $('
        ').load(new URL(Potree.scriptPath + '/profile.html').href, () => { - $(document.body).append(elProfile.children()); - this.profileWindow = new ProfileWindow(this); - this.profileWindowController = new ProfileWindowController(this); - - $('#profile_window').draggable({ - handle: $('#profile_titlebar'), - containment: $(document.body) - }); - $('#profile_window').resizable({ - containment: $(document.body), - handles: 'n, e, s, w' - }); - - $(() => { - this.guiLoaded = true; - for(let task of this.guiLoadTasks){ - task(); - } - - }); - }); - - - - }); - - - }); - - return this.promiseGuiLoaded(); - } - - setLanguage (lang) { - i18n.setLng(lang); - $('body').i18n(); - } - - setServer (server) { - this.server = server; - } - - initDragAndDrop(){ - function allowDrag(e) { - e.dataTransfer.dropEffect = 'copy'; - e.preventDefault(); - } - - let dropHandler = async (event) => { - console.log(event); - event.preventDefault(); - - for(const item of event.dataTransfer.items){ - console.log(item); - - if(item.kind !== "file"){ - continue; - } - - const file = item.getAsFile(); - - const isJson = file.name.toLowerCase().endsWith(".json"); - const isGeoPackage = file.name.toLowerCase().endsWith(".gpkg"); - - if(isJson){ - try{ - - const text = await file.text(); - const json = JSON.parse(text); - - if(json.type === "Potree"){ - Potree.loadProject(viewer, json); - } - }catch(e){ - console.error("failed to parse the dropped file as JSON"); - console.error(e); - } - }else if(isGeoPackage){ - const hasPointcloud = viewer.scene.pointclouds.length > 0; - - if(!hasPointcloud){ - let msg = "At least one point cloud is needed that specifies the "; - msg += "coordinate reference system before loading vector data."; - console.error(msg); - }else { - - proj4.defs("WGS84", "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"); - proj4.defs("pointcloud", this.getProjection()); - let transform = proj4("WGS84", "pointcloud"); - - const buffer = await file.arrayBuffer(); - - const params = { - transform: transform, - source: file.name, - }; - - const geo = await Potree.GeoPackageLoader.loadBuffer(buffer, params); - viewer.scene.addGeopackage(geo); - } - } - - } - }; - - - $("body")[0].addEventListener("dragenter", allowDrag); - $("body")[0].addEventListener("dragover", allowDrag); - $("body")[0].addEventListener("drop", dropHandler); - } - - initThree () { - - console.log(`initializing three.js ${THREE.REVISION}`); - - let width = this.renderArea.clientWidth; - let height = this.renderArea.clientHeight; - - let contextAttributes = { - alpha: true, - depth: true, - stencil: false, - antialias: false, - //premultipliedAlpha: _premultipliedAlpha, - preserveDrawingBuffer: true, - powerPreference: "high-performance", - }; - - // let contextAttributes = { - // alpha: false, - // preserveDrawingBuffer: true, - // }; - - // let contextAttributes = { - // alpha: false, - // preserveDrawingBuffer: true, - // }; - - let canvas = document.createElement("canvas"); - - let context = canvas.getContext('webgl', contextAttributes ); - - this.renderer = new THREE.WebGLRenderer({ - alpha: true, - premultipliedAlpha: false, - canvas: canvas, - context: context}); - this.renderer.sortObjects = false; - this.renderer.setSize(width, height); - this.renderer.autoClear = false; - this.renderArea.appendChild(this.renderer.domElement); - this.renderer.domElement.tabIndex = '2222'; - this.renderer.domElement.style.position = 'absolute'; - this.renderer.domElement.addEventListener('mousedown', () => { - this.renderer.domElement.focus(); - }); - //this.renderer.domElement.focus(); - - // NOTE: If extension errors occur, pass the string into this.renderer.extensions.get(x) before enabling - // enable frag_depth extension for the interpolation shader, if available - let gl = this.renderer.getContext(); - gl.getExtension('EXT_frag_depth'); - gl.getExtension('WEBGL_depth_texture'); - gl.getExtension('WEBGL_color_buffer_float'); // Enable explicitly for more portability, EXT_color_buffer_float is the proper name in WebGL 2 - - //if(gl instanceof WebGLRenderingContext){ - let extVAO = gl.getExtension('OES_vertex_array_object'); - - if(!extVAO){ - throw new Error("OES_vertex_array_object extension not supported"); - } - - gl.createVertexArray = extVAO.createVertexArrayOES.bind(extVAO); - gl.bindVertexArray = extVAO.bindVertexArrayOES.bind(extVAO); - //}else if(gl instanceof WebGL2RenderingContext){ - // gl.getExtension("EXT_color_buffer_float"); - //} - - } - - onVr(callback){ - - if(this.vr){ - callback(); - }else { - this.onVrListeners.push(callback); - } - - } - - async prepareVR(){ - - if(!navigator.getVRDisplays){ - console.info("browser does not support WebVR"); - - return false; - } - - try{ - let frameData = new VRFrameData(); - let displays = await navigator.getVRDisplays(); - - if(displays.length == 0){ - console.info("no VR display found"); - return false; - } - - let display = displays[displays.length - 1]; - display.depthNear = 0.1; - display.depthFar = 10000.0; - - if(!display.capabilities.canPresent){ - // Not sure why canPresent would ever be false? - console.error("VR display canPresent === false"); - return false; - } - - this.vr = { - frameData: frameData, - display: display, - node: new THREE.Object3D(), - }; - - for(const listener of this.onVrListeners){ - listener(); - } - }catch(err){ - console.error(err); - - return false; - } - - } - - updateAnnotations () { - - if(!this.visibleAnnotations){ - this.visibleAnnotations = new Set(); - } - - this.scene.annotations.updateBounds(); - this.scene.cameraP.updateMatrixWorld(); - this.scene.cameraO.updateMatrixWorld(); - - let distances = []; - - let renderAreaSize = this.renderer.getSize(new THREE.Vector2()); - - let viewer = this; - - let visibleNow = []; - this.scene.annotations.traverse(annotation => { - - if (annotation === this.scene.annotations) { - return true; - } - - if (!annotation.visible) { - return false; - } - - annotation.scene = this.scene; - - let element = annotation.domElement; - - let position = annotation.position.clone(); - position.add(annotation.offset); - if (!position) { - position = annotation.boundingBox.getCenter(new THREE.Vector3()); - } - - let distance = viewer.scene.cameraP.position.distanceTo(position); - let radius = annotation.boundingBox.getBoundingSphere(new THREE.Sphere()).radius; - - let screenPos = new THREE.Vector3(); - let screenSize = 0; - - { - // SCREEN POS - screenPos.copy(position).project(this.scene.getActiveCamera()); - screenPos.x = renderAreaSize.x * (screenPos.x + 1) / 2; - screenPos.y = renderAreaSize.y * (1 - (screenPos.y + 1) / 2); - - - // SCREEN SIZE - if(viewer.scene.cameraMode == CameraMode.PERSPECTIVE) { - let fov = Math.PI * viewer.scene.cameraP.fov / 180; - let slope = Math.tan(fov / 2.0); - let projFactor = 0.5 * renderAreaSize.y / (slope * distance); - screenSize = radius * projFactor; - } else { - screenSize = Utils.projectedRadiusOrtho(radius, viewer.scene.cameraO.projectionMatrix, renderAreaSize.x, renderAreaSize.y); - } - } - - element.css("left", screenPos.x + "px"); - element.css("top", screenPos.y + "px"); - //element.css("display", "block"); - - let zIndex = 10000000 - distance * (10000000 / this.scene.cameraP.far); - if(annotation.descriptionVisible){ - zIndex += 10000000; - } - element.css("z-index", parseInt(zIndex)); - - if(annotation.children.length > 0){ - let expand = screenSize > annotation.collapseThreshold || annotation.boundingBox.containsPoint(this.scene.getActiveCamera().position); - annotation.expand = expand; - - if (!expand) { - //annotation.display = (screenPos.z >= -1 && screenPos.z <= 1); - let inFrustum = (screenPos.z >= -1 && screenPos.z <= 1); - if(inFrustum){ - visibleNow.push(annotation); - } - } - - return expand; - } else { - //annotation.display = (screenPos.z >= -1 && screenPos.z <= 1); - let inFrustum = (screenPos.z >= -1 && screenPos.z <= 1); - if(inFrustum){ - visibleNow.push(annotation); - } - } - - }); - - let notVisibleAnymore = new Set(this.visibleAnnotations); - for(let annotation of visibleNow){ - annotation.display = true; - - notVisibleAnymore.delete(annotation); - } - this.visibleAnnotations = visibleNow; - - for(let annotation of notVisibleAnymore){ - annotation.display = false; - } - - } - - updateMaterialDefaults(pointcloud){ - // PROBLEM STATEMENT: - // * [min, max] of intensity, source id, etc. are computed as point clouds are loaded - // * the point cloud material won't know the range it should use until some data is loaded - // * users can modify the range at runtime, but sensible default ranges should be - // applied even if no GUI is present - // * display ranges shouldn't suddenly change even if the actual range changes over time. - // e.g. the root node has intensity range [1, 478]. One of the descendants increases range to - // [0, 2047]. We should not automatically change to the new range because that would result - // in sudden and drastic changes of brightness. We should adjust the min/max of the sidebar slider. - - const material = pointcloud.material; - - // const attIntensity = pointcloud.getAttribute("intensity"); - // if(attIntensity && material.intensityRange[0] === Infinity){ - // material.intensityRange = [...attIntensity.range]; - // } - - // let attributes = pointcloud.getAttributes(); - - // for(let attribute of attributes.attributes){ - // if(attribute.range){ - // let range = [...attribute.range]; - // material.computedRange.set(attribute.name, range); - // //material.setRange(attribute.name, range); - // } - // } - - - } - - update(delta, timestamp){ - - if(Potree.measureTimings) performance.mark("update-start"); - - - const scene = this.scene; - const camera = scene.getActiveCamera(); - const visiblePointClouds = this.scene.pointclouds.filter(pc => pc.visible); - - Potree.pointLoadLimit = Potree.pointBudget * 2; - - const lTarget = camera.position.clone().add(camera.getWorldDirection(new THREE.Vector3()).multiplyScalar(1000)); - this.scene.directionalLight.position.copy(camera.position); - this.scene.directionalLight.lookAt(lTarget); - - - for (let pointcloud of visiblePointClouds) { - - pointcloud.showBoundingBox = this.showBoundingBox; - pointcloud.generateDEM = this.generateDEM; - pointcloud.minimumNodePixelSize = this.minNodeSize; - - let material = pointcloud.material; - - material.uniforms.uFilterReturnNumberRange.value = this.filterReturnNumberRange; - material.uniforms.uFilterNumberOfReturnsRange.value = this.filterNumberOfReturnsRange; - material.uniforms.uFilterGPSTimeClipRange.value = this.filterGPSTimeRange; - material.uniforms.uFilterPointSourceIDClipRange.value = this.filterPointSourceIDRange; - - material.classification = this.classifications; - material.recomputeClassification(); - - this.updateMaterialDefaults(pointcloud); - } - - { - if(this.showBoundingBox){ - let bbRoot = this.scene.scene.getObjectByName("potree_bounding_box_root"); - if(!bbRoot){ - let node = new THREE.Object3D(); - node.name = "potree_bounding_box_root"; - this.scene.scene.add(node); - bbRoot = node; - } - - let visibleBoxes = []; - for(let pointcloud of this.scene.pointclouds){ - for(let node of pointcloud.visibleNodes.filter(vn => vn.boundingBoxNode !== undefined)){ - let box = node.boundingBoxNode; - visibleBoxes.push(box); - } - } - - bbRoot.children = visibleBoxes; - } - } - - if (!this.freeze) { - let result = Potree.updatePointClouds(scene.pointclouds, camera, this.renderer); - - - // DEBUG - ONLY DISPLAY NODES THAT INTERSECT MOUSE - //if(false){ - - // let renderer = viewer.renderer; - // let mouse = viewer.inputHandler.mouse; - - // let nmouse = { - // x: (mouse.x / renderer.domElement.clientWidth) * 2 - 1, - // y: -(mouse.y / renderer.domElement.clientHeight) * 2 + 1 - // }; - - // let pickParams = {}; - - // //if(params.pickClipped){ - // // pickParams.pickClipped = params.pickClipped; - // //} - - // pickParams.x = mouse.x; - // pickParams.y = renderer.domElement.clientHeight - mouse.y; - - // let raycaster = new THREE.Raycaster(); - // raycaster.setFromCamera(nmouse, camera); - // let ray = raycaster.ray; - - // for(let pointcloud of scene.pointclouds){ - // let nodes = pointcloud.nodesOnRay(pointcloud.visibleNodes, ray); - // pointcloud.visibleNodes = nodes; - - // } - //} - - // const tStart = performance.now(); - // const worldPos = new THREE.Vector3(); - // const camPos = viewer.scene.getActiveCamera().getWorldPosition(new THREE.Vector3()); - // let lowestDistance = Infinity; - // let numNodes = 0; - - // viewer.scene.scene.traverse(node => { - // node.getWorldPosition(worldPos); - - // const distance = worldPos.distanceTo(camPos); - - // lowestDistance = Math.min(lowestDistance, distance); - - // numNodes++; - - // if(Number.isNaN(distance)){ - // console.error(":("); - // } - // }); - // const duration = (performance.now() - tStart).toFixed(2); - - // Potree.debug.computeNearDuration = duration; - // Potree.debug.numNodes = numNodes; - - //console.log(lowestDistance.toString(2), duration); - - const tStart = performance.now(); - const campos = camera.position; - let closestImage = Infinity; - for(const images of this.scene.orientedImages){ - for(const image of images.images){ - const distance = image.mesh.position.distanceTo(campos); - - closestImage = Math.min(closestImage, distance); - } - } - const tEnd = performance.now(); - - if(result.lowestSpacing !== Infinity){ - let near = result.lowestSpacing * 10.0; - let far = -this.getBoundingBox().applyMatrix4(camera.matrixWorldInverse).min.z; - - far = Math.max(far * 1.5, 10000); - near = Math.min(100.0, Math.max(0.01, near)); - near = Math.min(near, closestImage); - far = Math.max(far, near + 10000); - - if(near === Infinity){ - near = 0.1; - } - - camera.near = near; - camera.far = far; - }else { - // don't change near and far in this case - } - - if(this.scene.cameraMode == CameraMode.ORTHOGRAPHIC) { - camera.near = -camera.far; - } - } - - this.scene.cameraP.fov = this.fov; - - if (this.getControls() === this.deviceControls) { - this.controls.setScene(scene); - this.controls.update(delta); - - this.scene.cameraP.position.copy(scene.view.position); - this.scene.cameraO.position.copy(scene.view.position); - } else if (this.controls !== null) { - this.controls.setScene(scene); - this.controls.update(delta); - - if(typeof debugDisabled === "undefined" ){ - this.scene.cameraP.position.copy(scene.view.position); - this.scene.cameraP.rotation.order = "ZXY"; - this.scene.cameraP.rotation.x = Math.PI / 2 + this.scene.view.pitch; - this.scene.cameraP.rotation.z = this.scene.view.yaw; - } - - this.scene.cameraO.position.copy(scene.view.position); - this.scene.cameraO.rotation.order = "ZXY"; - this.scene.cameraO.rotation.x = Math.PI / 2 + this.scene.view.pitch; - this.scene.cameraO.rotation.z = this.scene.view.yaw; - } - - camera.updateMatrix(); - camera.updateMatrixWorld(); - camera.matrixWorldInverse.getInverse(camera.matrixWorld); - - { - if(this._previousCamera === undefined){ - this._previousCamera = this.scene.getActiveCamera().clone(); - this._previousCamera.rotation.copy(this.scene.getActiveCamera()); - } - - if(!this._previousCamera.matrixWorld.equals(camera.matrixWorld)){ - this.dispatchEvent({ - type: "camera_changed", - previous: this._previousCamera, - camera: camera - }); - }else if(!this._previousCamera.projectionMatrix.equals(camera.projectionMatrix)){ - this.dispatchEvent({ - type: "camera_changed", - previous: this._previousCamera, - camera: camera - }); - } - - this._previousCamera = this.scene.getActiveCamera().clone(); - this._previousCamera.rotation.copy(this.scene.getActiveCamera()); - - } - - { // update clip boxes - let boxes = []; - - // volumes with clipping enabled - //boxes.push(...this.scene.volumes.filter(v => (v.clip))); - boxes.push(...this.scene.volumes.filter(v => (v.clip && v instanceof BoxVolume))); - - // profile segments - for(let profile of this.scene.profiles){ - boxes.push(...profile.boxes); - } - - // Needed for .getInverse(), pre-empt a determinant of 0, see #815 / #816 - let degenerate = (box) => box.matrixWorld.determinant() !== 0; - - let clipBoxes = boxes.filter(degenerate).map( box => { - box.updateMatrixWorld(); - - let boxInverse = new THREE.Matrix4().getInverse(box.matrixWorld); - let boxPosition = box.getWorldPosition(new THREE.Vector3()); - - return {box: box, inverse: boxInverse, position: boxPosition}; - }); - - let clipPolygons = this.scene.polygonClipVolumes.filter(vol => vol.initialized); - - // set clip volumes in material - for(let pointcloud of visiblePointClouds){ - pointcloud.material.setClipBoxes(clipBoxes); - pointcloud.material.setClipPolygons(clipPolygons, this.clippingTool.maxPolygonVertices); - pointcloud.material.clipTask = this.clipTask; - pointcloud.material.clipMethod = this.clipMethod; - } - } - - { - for(let pointcloud of visiblePointClouds){ - pointcloud.material.elevationGradientRepeat = this.elevationGradientRepeat; - } - } - - { // update navigation cube - this.navigationCube.update(camera.rotation); - } - - this.updateAnnotations(); - - if(this.mapView){ - this.mapView.update(delta); - if(this.mapView.sceneProjection){ - $( "#potree_map_toggle" ).css("display", "block"); - - } - } - - TWEEN.update(timestamp); - - this.dispatchEvent({ - type: 'update', - delta: delta, - timestamp: timestamp}); - - if(Potree.measureTimings) { - performance.mark("update-end"); - performance.measure("update", "update-start", "update-end"); - } - } - - render(){ - if(Potree.measureTimings) performance.mark("render-start"); - - try{ - - let pRenderer = null; - - if(this.useHQ){ - if (!this.hqRenderer) { - this.hqRenderer = new HQSplatRenderer(this); - } - this.hqRenderer.useEDL = this.useEDL; - //this.hqRenderer.render(this.renderer); - - pRenderer = this.hqRenderer; - }else { - if (this.useEDL && Features.SHADER_EDL.isSupported()) { - if (!this.edlRenderer) { - this.edlRenderer = new EDLRenderer(this); - } - //this.edlRenderer.render(this.renderer); - pRenderer = this.edlRenderer; - } else { - if (!this.potreeRenderer) { - this.potreeRenderer = new PotreeRenderer(this); - } - //this.potreeRenderer.render(); - pRenderer = this.potreeRenderer; - } - } - - const vr = this.vr; - const vrActive = (vr && vr.display.isPresenting); - - if(vrActive){ - - const {display, frameData} = vr; - - const leftEye = display.getEyeParameters("left"); - const rightEye = display.getEyeParameters("right"); - - let width = Math.max(leftEye.renderWidth, rightEye.renderWidth) * 2; - let height = Math.max(leftEye.renderHeight, rightEye.renderHeight); - - // width *= 0.5; - // height *= 0.5; - - this.renderer.setSize(width, height); - - pRenderer.clear(); - - //const camera = new THREE.Camera(); - viewer.scene.cameraMode = CameraMode.VR; - const camera = viewer.scene.getActiveCamera(); - { - camera.near = display.depthNear; - camera.far = display.depthFar; - camera.projectionMatrix = new THREE.Matrix4(); - camera.matrixWorldInverse = new THREE.Matrix4(); - camera.matrixWorld = new THREE.Matrix4(); - camera.updateProjectionMatrix = () => {}; - camera.updateMatrixWorld = () => {}; - camera.fov = 60; - }; - - const flipWorld = new THREE.Matrix4().fromArray([ - 1, 0, 0, 0, - 0, 0, 1, 0, - 0, -1, 0, 0, - 0, 0, 0, 1 - ]); - const flipView = new THREE.Matrix4().getInverse(flipWorld); - - vr.node.updateMatrixWorld(); - - {// LEFT - camera.projectionMatrix.fromArray(frameData.leftProjectionMatrix); - - const leftView = new THREE.Matrix4().fromArray(frameData.leftViewMatrix); - const view = new THREE.Matrix4().multiplyMatrices(leftView, flipView); - const world = new THREE.Matrix4().getInverse(view); - - { - const tmp = new THREE.Matrix4().multiplyMatrices(vr.node.matrixWorld, world); - world.copy(tmp); - view.getInverse(world); - } - - camera.matrixWorldInverse.copy(view); - camera.matrixWorld.copy(world); - - const viewport = [0, 0, width / 2, height]; - - this.renderer.setViewport(...viewport); - pRenderer.render({camera: camera, viewport: viewport}); - //this.renderer.render(this.overlay, this.overlayCamera); - } - - {// RIGHT - - camera.projectionMatrix.fromArray(frameData.rightProjectionMatrix); - - const rightView = new THREE.Matrix4().fromArray(frameData.rightViewMatrix); - const view = new THREE.Matrix4().multiplyMatrices(rightView, flipView); - const world = new THREE.Matrix4().getInverse(view); - - { - const tmp = new THREE.Matrix4().multiplyMatrices(vr.node.matrixWorld, world); - world.copy(tmp); - view.getInverse(world); - } - - camera.matrixWorldInverse.copy(view); - camera.matrixWorld.copy(world); - - const viewport = [width / 2, 0, width / 2, height]; - - this.renderer.setViewport(...viewport); - pRenderer.clearTargets(); - pRenderer.render({camera: camera, viewport: viewport, debug: 2}); - //this.renderer.render(this.overlay, this.overlayCamera); - } - - { // CENTER - - { // central view matrix - // TODO this can't be right...can it? - - const left = frameData.leftViewMatrix; - const right = frameData.rightViewMatrix; - - const centerView = new THREE.Matrix4(); - - for(let i = 0; i < centerView.elements.length; i++){ - centerView.elements[i] = (left[i] + right[i]) / 2; - } - - const view = new THREE.Matrix4().multiplyMatrices(centerView, flipView); - const world = new THREE.Matrix4().getInverse(view); - - { - const tmp = new THREE.Matrix4().multiplyMatrices(vr.node.matrixWorld, world); - world.copy(tmp); - view.getInverse(world); - } - - camera.matrixWorldInverse.copy(view); - camera.matrixWorld.copy(world); - } - - - camera.fov = leftEye.fieldOfView.upDegrees; - } - - }else { - - { // resize - const width = this.scaleFactor * this.renderArea.clientWidth; - const height = this.scaleFactor * this.renderArea.clientHeight; - - this.renderer.setSize(width, height); - const pixelRatio = this.renderer.getPixelRatio(); - const aspect = width / height; - - const scene = this.scene; - - scene.cameraP.aspect = aspect; - scene.cameraP.updateProjectionMatrix(); - - let frustumScale = this.scene.view.radius; - scene.cameraO.left = -frustumScale; - scene.cameraO.right = frustumScale; - scene.cameraO.top = frustumScale * 1 / aspect; - scene.cameraO.bottom = -frustumScale * 1 / aspect; - scene.cameraO.updateProjectionMatrix(); - - scene.cameraScreenSpace.top = 1/aspect; - scene.cameraScreenSpace.bottom = -1/aspect; - scene.cameraScreenSpace.updateProjectionMatrix(); - } - - pRenderer.clear(); - - pRenderer.render(this.renderer); - this.renderer.render(this.overlay, this.overlayCamera); - } - - }catch(e){ - this.onCrash(e); - } - - if(Potree.measureTimings){ - performance.mark("render-end"); - performance.measure("render", "render-start", "render-end"); - } - } - - resolveTimings(timestamp){ - if(Potree.measureTimings){ - if(!this.toggle){ - this.toggle = timestamp; - } - let duration = timestamp - this.toggle; - if(duration > 1000.0){ - - let measures = performance.getEntriesByType("measure"); - - let names = new Set(); - for(let measure of measures){ - names.add(measure.name); - } - - let groups = new Map(); - for(let name of names){ - groups.set(name, { - measures: [], - sum: 0, - n: 0, - min: Infinity, - max: -Infinity - }); - } - - for(let measure of measures){ - let group = groups.get(measure.name); - group.measures.push(measure); - group.sum += measure.duration; - group.n++; - group.min = Math.min(group.min, measure.duration); - group.max = Math.max(group.max, measure.duration); - } - - let glQueries = Potree.resolveQueries(this.renderer.getContext()); - for(let [key, value] of glQueries){ - - let group = { - measures: value.map(v => {return {duration: v}}), - sum: value.reduce( (a, i) => a + i, 0), - n: value.length, - min: Math.min(...value), - max: Math.max(...value) - }; - - let groupname = `[tq] ${key}`; - groups.set(groupname, group); - names.add(groupname); - } - - for(let [name, group] of groups){ - group.mean = group.sum / group.n; - group.measures.sort( (a, b) => a.duration - b.duration ); - - if(group.n === 1){ - group.median = group.measures[0].duration; - }else if(group.n > 1){ - group.median = group.measures[parseInt(group.n / 2)].duration; - } - - } - - let cn = Array.from(names).reduce( (a, i) => Math.max(a, i.length), 0) + 5; - let cmin = 10; - let cmed = 10; - let cmax = 10; - let csam = 6; - - let message = ` ${"NAME".padEnd(cn)} |` - + ` ${"MIN".padStart(cmin)} |` - + ` ${"MEDIAN".padStart(cmed)} |` - + ` ${"MAX".padStart(cmax)} |` - + ` ${"SAMPLES".padStart(csam)} \n`; - message += ` ${"-".repeat(message.length) }\n`; - - names = Array.from(names).sort(); - for(let name of names){ - let group = groups.get(name); - let min = group.min.toFixed(3); - let median = group.median.toFixed(3); - let max = group.max.toFixed(3); - let n = group.n; - - message += ` ${name.padEnd(cn)} |` - + ` ${min.padStart(cmin)} |` - + ` ${median.padStart(cmed)} |` - + ` ${max.padStart(cmax)} |` - + ` ${n.toString().padStart(csam)}\n`; - } - message += `\n`; - console.log(message); - - performance.clearMarks(); - performance.clearMeasures(); - this.toggle = timestamp; - } - } - } - - async toggleVR(){ - const vrActive = (this.vr && this.vr.display.isPresenting); - - if(vrActive){ - this.stopVR(); - }else { - this.startVR(); - } - } - - async startVR(){ - - if(this.vr === null){ - return; - } - - let canvas = this.renderer.domElement; - let display = this.vr.display; - - try{ - await display.requestPresent([{ source: canvas }]); - }catch(e){ - console.error(e); - this.postError("requestPresent failed"); - return; - } - - //window.addEventListener('vrdisplaypresentchange', onVRPresentChange, false); - //window.addEventListener('vrdisplayactivate', onVRRequestPresent, false); - //window.addEventListener('vrdisplaydeactivate', onVRExitPresent, false); - - } - - async stopVR(){ - // TODO shutdown VR - } - - loop(timestamp){ - - if(this.stats){ - this.stats.begin(); - } - - let queryAll; - if(Potree.measureTimings){ - performance.mark("loop-start"); - } - - - const vrActive = (this.vr && this.vr.display.isPresenting); - - if(vrActive){ - const {display, frameData} = this.vr; - - display.requestAnimationFrame(this.loop.bind(this)); - - display.getFrameData(frameData); - - this.update(this.clock.getDelta(), timestamp); - - this.render(); - - this.vr.display.submitFrame(); - }else { - requestAnimationFrame(this.loop.bind(this)); - - this.update(this.clock.getDelta(), timestamp); - - this.render(); - } - - - if(Potree.measureTimings){ - performance.mark("loop-end"); - performance.measure("loop", "loop-start", "loop-end"); - } - - this.resolveTimings(timestamp); - - Potree.framenumber++; - - if(this.stats){ - this.stats.end(); - } - } - - postError(content, params = {}){ - let message = this.postMessage(content, params); - - message.element.addClass("potree_message_error"); - - return message; - } - - postMessage(content, params = {}){ - let message = new Message(content); - - let animationDuration = 100; - - message.element.css("display", "none"); - message.elClose.click( () => { - message.element.slideToggle(animationDuration); - - let index = this.messages.indexOf(message); - if(index >= 0){ - this.messages.splice(index, 1); - } - }); - - this.elMessages.prepend(message.element); - - message.element.slideToggle(animationDuration); - - this.messages.push(message); - - if(params.duration !== undefined){ - let fadeDuration = 500; - let slideOutDuration = 200; - setTimeout(() => { - message.element.animate({ - opacity: 0 - }, fadeDuration); - message.element.slideToggle(slideOutDuration); - }, params.duration); - } - - return message; - } - }; - - class VRControlls{ - - constructor(viewer){ - - this.viewer = viewer; - - this.previousPads = []; - - this.selection = []; - - this.triggerStarts = []; - - this.scaleState = null; - - this.selectionBox = this.createBox(); - this.viewer.scene.scene.add(this.selectionBox); - - this.speed = 1; - this.speedModificationFactor = 50; - - this.snLeft = this.createControllerModel(); - this.snRight = this.createControllerModel(); - - this.viewer.scene.scene.add(this.snLeft.node); - this.viewer.scene.scene.add(this.snRight.node); - //this.viewer.scene.scene.add(this.snLeft.debug); - //this.viewer.scene.scene.add(this.snRight.debug); - - } - - createControllerModel(){ - const geometry = new THREE.SphereGeometry(1, 32, 32); - const material = new THREE.MeshLambertMaterial( { color: 0xff0000, side: THREE.DoubleSide, flatShading: true } ); - const node = new THREE.Mesh(geometry, material); - - node.position.set(0, 0, 0.5); - node.scale.set(0.02, 0.02, 0.02); - node.visible = false; - - viewer.scene.scene.add(node); - - const debug = new THREE.Mesh(geometry, new THREE.MeshNormalMaterial()); - debug.position.set(0, 0, 0.5); - debug.scale.set(0.01, 0.01, 0.01); - debug.visible = false; - - - const controller = { - node: node, - debug: debug, - }; - //viewer.scene.scene.add(node); - - return controller; - } - - createBox(){ - const color = 0xffff00; - - const indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] ); - const positions = [ - 1, 1, 1, - 0, 1, 1, - 0, 0, 1, - 1, 0, 1, - 1, 1, 0, - 0, 1, 0, - 0, 0, 0, - 1, 0, 0 - ]; - const geometry = new THREE.BufferGeometry(); - - geometry.setIndex( new THREE.BufferAttribute( indices, 1 ) ); - geometry.addAttribute( 'position', new THREE.Float32BufferAttribute( positions, 3 ) ); - - geometry.computeBoundingSphere(); - - const mesh = new THREE.LineSegments(geometry, new THREE.LineBasicMaterial( { color: color } ) ); - mesh.visible = false; - - return mesh; - } - - debugLine(start, end, index, color){ - - if(typeof this.debugLines === "undefined"){ - - const geometry = new THREE.SphereGeometry(1, 8, 8); - - this.debugLines = { - geometry: geometry, - }; - } - - const n = 100; - - if(!this.debugLines[index]){ - const geometry = this.debugLines.geometry; - const material = new THREE.MeshBasicMaterial({color: color}); - const nodes = []; - - for(let i = 0; i <= n; i++){ - const u = i / n; - - const node = new THREE.Mesh(geometry, material); - - const position = new THREE.Vector3().addVectors( - start.clone().multiplyScalar(1-u), - end.clone().multiplyScalar(u) - ); - - node.position.copy(position); - node.scale.set(0.002, 0.002, 0.002); - this.viewer.scene.scene.add(node); - nodes.push(node); - } - - const debugLine = { - material: material, - nodes: nodes, - }; - - this.debugLines[index] = debugLine; - }else { - const debugLine = this.debugLines[index]; - - for(let i = 0; i <= n; i++){ - const node = debugLine.nodes[i]; - const u = i / n; - - const position = new THREE.Vector3().addVectors( - start.clone().multiplyScalar(1-u), - end.clone().multiplyScalar(u) - ); - - node.position.copy(position); - } - } - - - } - - getPointcloudsAt(pointclouds, position){ - - const I = []; - for(const pointcloud of pointclouds){ - - const intersects = pointcloud.intersectsPoint(position); - - if(intersects){ - I.push(pointcloud); - } - } - - return I; - } - - copyPad(pad){ - const axes = pad.axes.map(a => a); - const buttons = pad.buttons.map(b => {return {pressed: b.pressed}}); - - const pose = { - position: new Float32Array(pad.pose.position), - orientation: new Float32Array(pad.pose.orientation), - }; - - const copy = { - axes: axes, - buttons: buttons, - pose: pose, - hand: pad.hand, - index: pad.index, - }; - - return copy; - } - - previousPad(gamepad){ - return this.previousPads.find(c => c.index === gamepad.index); - } - - toScene(position){ - - const vr = viewer.vr; - - vr.node.updateMatrixWorld(); - const world = vr.node.matrixWorld; - - const scenePos = new THREE.Vector3(position.x, -position.z, position.y); - scenePos.applyMatrix4(world); - - return scenePos; - } - - update(delta){ - - const {selection, viewer, snLeft, snRight} = this; - const toScene = this.toScene.bind(this); - const vr = viewer.vr; - - const vrActive = vr && vr.display.isPresenting; - - snLeft.node.visible = vrActive; - snRight.node.visible = vrActive; - - if(!vrActive){ - - return; - } - - const pointclouds = viewer.scene.pointclouds; - - const gamepads = Array.from(navigator.getGamepads()).filter(p => p !== null).map(this.copyPad); - - const getPad = (list, pattern) => list.find(pad => pad.index === pattern.index); - - if(this.previousPads.length !== gamepads.length){ - this.previousPads = gamepads; - } - - const left = gamepads.find(gp => gp.hand && gp.hand === "left"); - const right = gamepads.find(gp => gp.hand && gp.hand === "right"); - - const triggered = gamepads.filter(gamepad => { - return gamepad.buttons[1].pressed; - }); - - const justTriggered = triggered.filter(gamepad => { - const prev = this.previousPad(gamepad); - const previouslyTriggered = prev.buttons[1].pressed; - const currentlyTriggered = gamepad.buttons[1].pressed; - - return !previouslyTriggered && currentlyTriggered; - }); - - const justUntriggered = gamepads.filter(gamepad => { - const prev = this.previousPad(gamepad); - const previouslyTriggered = prev.buttons[1].pressed; - const currentlyTriggered = gamepad.buttons[1].pressed; - - return previouslyTriggered && !currentlyTriggered; - }); - - if(triggered.length === 0){ - - for(const pad of gamepads){ - const position = new THREE.Vector3(...pad.pose.position); - - const I = this.getPointcloudsAt(pointclouds, position); - - let controler = { - "left": snLeft, - "right": snRight, - }[pad.hand]; - - if(I.length > 0){ - controler.node.material.color.setRGB(0, 1, 0); - console.log(pad.hand); - }else { - controler.node.material.color.setRGB(1, 0, 0); - } - } - }else { - if(selection.length > 0){ - const pointcloud = selection[0]; - this.selectionBox.scale.copy(pointcloud.boundingBox.max).multiply(pointcloud.scale); - this.selectionBox.position.copy(pointcloud.position); - this.selectionBox.rotation.copy(pointcloud.rotation); - } - } - - if(justTriggered.length > 0){ - - const pad = justTriggered[0]; - const position = toScene(new THREE.Vector3(...pad.pose.position)); - const I = this.getPointcloudsAt(pointclouds, position); - - const pcs = I.map(p => { - return { - node: p, - position: p.position.clone(), - rotation: p.rotation.clone(), - scale: p.scale.clone(), - }; - }); - - const event = { - pad: pad, - pointclouds: pcs, - }; - - this.triggerStarts.push(event); - } - - if(justUntriggered.length > 0){ - for(let untriggeredPad of justUntriggered){ - const p = getPad(this.triggerStarts.map(t => t.pad), untriggeredPad); - this.triggerStarts = this.triggerStarts.filter(e => e.pad !== p); - } - } - - if(triggered.length === 0){ - selection.length = 0; - this.triggerStarts = []; - } - - if(justTriggered.length === 1 && triggered.length === 1){ - // one controller was triggered this frame - const pad = justTriggered[0]; - const position = toScene(new THREE.Vector3(...pad.pose.position)); - const I = this.getPointcloudsAt(pointclouds, position); - - if(I.length > 0){ - selection.length = 0; - selection.push(I[0]); - } - }else if(justTriggered.length === 2 && triggered.length === 2){ - // two controllers were triggered this frame - const pad = justTriggered[0]; - const position = toScene(new THREE.Vector3(...pad.pose.position)); - const I = this.getPointcloudsAt(pointclouds, position); - - if(I.length > 0){ - selection.length = 0; - selection.push(I[0]); - } - } - - if(justTriggered.length > 0 && triggered.length === 2){ - // START SCALE/ROTATE - - const pcs = selection.map(p => ({ - node: p, - position: p.position.clone(), - rotation: p.rotation.clone(), - scale: p.scale.clone(), - })); - - this.scaleState = { - first: triggered[0], - second: triggered[1], - pointclouds: pcs, - }; - }else if(triggered.length < 2){ - // STOP SCALE/ROTATE - this.scaleState = null; - } - - if(this.scaleState){ - // SCALE/ROTATE - - const {first, second, pointclouds} = this.scaleState; - - if(pointclouds.length > 0){ - - const pointcloud = pointclouds[0]; - - const p1Start = toScene(new THREE.Vector3(...first.pose.position)); - const p2Start = toScene(new THREE.Vector3(...second.pose.position)); - - const p1End = toScene(new THREE.Vector3(...getPad(gamepads, first).pose.position)); - const p2End = toScene(new THREE.Vector3(...getPad(gamepads, second).pose.position)); - - const diffStart = new THREE.Vector3().subVectors(p2Start, p1Start); - const diffEnd = new THREE.Vector3().subVectors(p2End, p1End); - - // this.debugLine(p1Start, p2Start, 0, 0xFF0000); - // this.debugLine(p1End, p2End, 1, 0x00FF00); - - // ROTATION - const diffStartG = new THREE.Vector3(diffStart.x, diffStart.y, 0); - const diffEndG = new THREE.Vector3(diffEnd.x, diffEnd.y, 0); - let sign = Math.sign(diffStartG.clone().cross(diffEndG).z); - sign = sign === 0 ? 1 : sign; - const angle = sign * diffStartG.angleTo(diffEndG); - const newAngle = pointcloud.rotation.z + angle; - - // SCALE - const scale = diffEnd.length() / diffStart.length(); - const newScale = pointcloud.scale.clone().multiplyScalar(scale); - - // POSITION - const p1ToP = new THREE.Vector3().subVectors(pointcloud.position, p1Start); - p1ToP.multiplyScalar(scale); - p1ToP.applyAxisAngle(new THREE.Vector3(0, 0, 1), angle); - const newPosition = p1End.clone().add(p1ToP); - - //this.debugLine(pointcloud.position, newPosition, 0, 0xFF0000); - - //console.log(newScale, p1ToP, angle); - - pointcloud.node.rotation.z = newAngle; - pointcloud.node.scale.copy(newScale); - pointcloud.node.position.copy(newPosition); - - pointcloud.node.updateMatrix(); - pointcloud.node.updateMatrixWorld(); - - - - } - - } - - if(triggered.length === 1){ - // TRANSLATE POINT CLOUDS - const pad = triggered[0]; - const prev = this.previousPad(pad); - - const flipWorld = new THREE.Matrix4().fromArray([ - 1, 0, 0, 0, - 0, 0, 1, 0, - 0, -1, 0, 0, - 0, 0, 0, 1 - ]); - const flipView = new THREE.Matrix4().getInverse(flipWorld); - - const p1 = new THREE.Vector3(...pad.pose.position).applyMatrix4(flipWorld); - const p2 = new THREE.Vector3(...prev.pose.position).applyMatrix4(flipWorld); - - p1.applyMatrix4(vr.node.matrixWorld); - p2.applyMatrix4(vr.node.matrixWorld); - - const diff = new THREE.Vector3().subVectors(p1, p2); - - //const diff = toScene(new THREE.Vector3( - // pad.pose.position[0] - prev.pose.position[0], - // pad.pose.position[1] - prev.pose.position[1], - // pad.pose.position[2] - prev.pose.position[2], - //)); - - for(const pc of selection){ - pc.position.add(diff); - } - } - - { // MOVE WITH JOYSTICK - - const flipWorld = new THREE.Matrix4().fromArray([ - 1, 0, 0, 0, - 0, 0, 1, 0, - 0, -1, 0, 0, - 0, 0, 0, 1 - ]); - const flipView = new THREE.Matrix4().getInverse(flipWorld); - const {display, frameData} = vr; - - const computeMove = (pad) => { - const axes = pad.axes; - - const opos = new THREE.Vector3(...pad.pose.position); - const rotation = new THREE.Quaternion(...pad.pose.orientation); - const d = new THREE.Vector3(0, 0, -1); - d.applyQuaternion(rotation); - - const worldPos = toScene(opos); - const worldTarget = toScene(new THREE.Vector3().addVectors(opos, d)); - const dir = new THREE.Vector3().subVectors(worldTarget, worldPos).normalize(); - - const amount = axes[1] * this.speed; - - const move = dir.clone().multiplyScalar(amount); - - return move; - }; - - let flip = 1; - if(display.displayName.includes("Oculus")){ - flip = -1; - } - - let move = null; - - if(left && right){ - move = computeMove(right); - - const leftAdjustAxe = flip * left.axes[1]; - const adjust = this.speedModificationFactor ** leftAdjustAxe; - - move = move.multiplyScalar(adjust); - - - }else if(right){ - move = computeMove(right); - }else if(left){ - move = computeMove(left); - } - - if(move){ - move.multiplyScalar(delta * flip); - - vr.node.position.add(move); - } - - // for(const pad of [left, right].filter(pad => pad)){ - - - - // moves.push(move); - - // // vr.node.position.add(move); - // } - - // if(moves.length === 1){ - // vr.node.position.add(moves[0]); - // }else if(moves.length > 1){ - - // const factor = 10; - // const [adjust, main] = moves; - // // main gives direction, adjust modifies speed between [0, factor] - - // const mMain = main.length(); - - - // let mAdjust = - - - - // const move = mMain.multiplyScalar(adjust); - - - // // const move = moves[0].clone().add(moves[1]); - - // // const amount = (move.length() ** 3) * delta; - // // move.multiplyScalar(amount); - - // // vr.node.position.add(move); - // } - - - // let pad = [right, left].find(pad => pad !== undefined); - - // if(pad){ - - // const axes = pad.axes; - - - // // const leftView = new THREE.Matrix4().fromArray(frameData.leftViewMatrix); - // // const view = new THREE.Matrix4().multiplyMatrices(leftView, flipView); - // // const world = new THREE.Matrix4().getInverse(view); - - // { // move to where the controller points - // const opos = new THREE.Vector3(...right.pose.position); - // const rotation = new THREE.Quaternion(...pad.pose.orientation); - // const d = new THREE.Vector3(0, 0, -1); - // d.applyQuaternion(rotation); - - // const worldPos = toScene(opos); - // const worldTarget = toScene(new THREE.Vector3().addVectors(opos, d)); - // const dir = new THREE.Vector3().subVectors(worldTarget, worldPos).normalize(); - - // const amount = axes[1]; - - // const move = dir.clone().multiplyScalar(delta * amount); - - // //const d = dir.clone().multiplyScalar(delta); - // vr.node.position.add(move); - // } - - // { // move to trigger direction - // // const pos = new THREE.Vector3(0, 0, 0).applyMatrix4(world); - // // const pForward = new THREE.Vector3(0, 0, -1).applyMatrix4(world); - // // const pRight = new THREE.Vector3(1, 0, 0).applyMatrix4(world); - // // const pUp = new THREE.Vector3(0, 1, 0).applyMatrix4(world); - - // // const dForward = new THREE.Vector3().subVectors(pForward, pos).normalize(); - // // const dRight = new THREE.Vector3().subVectors(pRight, pos).normalize(); - // // const dUp = new THREE.Vector3().subVectors(pUp, pos).normalize(); - - // // const dir = new THREE.Vector3().addVectors( - // // dRight.clone().multiplyScalar(axes[0]), - // // dForward.clone().multiplyScalar(axes[1]) - // // ); - - // // const d = dir.clone().multiplyScalar(delta); - // // vr.node.position.add(d); - // } - - // } - - } - - { // MOVE CONTROLLER SCENE NODE - if(right){ - const {node, debug} = snRight; - const opos = new THREE.Vector3(...right.pose.position); - const position = toScene(opos); - - const rotation = new THREE.Quaternion(...right.pose.orientation); - const d = new THREE.Vector3(0, 0, -1); - d.applyQuaternion(rotation); - // const target = toScene(new THREE.Vector3().addVectors(opos, d)); - - node.position.copy(position); - } - - if(left){ - const {node, debug} = snLeft; - - const position = toScene(new THREE.Vector3(...left.pose.position)); - node.position.copy(position); - } - } - - this.previousPads = gamepads; - } - }; - - THREE.OrthographicCamera.prototype.zoomTo = function( node, factor = 1){ - - if ( !node.geometry && !node.boundingBox) { - return; - } - - // TODO - - //let minWS = new THREE.Vector4(node.boundingBox.min.x, node.boundingBox.min.y, node.boundingBox.min.z, 1); - //let minVS = minWS.applyMatrix4(this.matrixWorldInverse); - - //let right = node.boundingBox.max.x; - //let bottom = node.boundingBox.min.y; - //let top = node.boundingBox.max.y; - - this.updateProjectionMatrix(); - }; - - THREE.PerspectiveCamera.prototype.zoomTo = function (node, factor) { - if (!node.geometry && !node.boundingSphere && !node.boundingBox) { - return; - } - - if (node.geometry && node.geometry.boundingSphere === null) { - node.geometry.computeBoundingSphere(); - } - - node.updateMatrixWorld(); - - let bs; - - if (node.boundingSphere) { - bs = node.boundingSphere; - } else if (node.geometry && node.geometry.boundingSphere) { - bs = node.geometry.boundingSphere; - } else { - bs = node.boundingBox.getBoundingSphere(new THREE.Sphere()); - } - - let _factor = factor || 1; - - bs = bs.clone().applyMatrix4(node.matrixWorld); - let radius = bs.radius; - let fovr = this.fov * Math.PI / 180; - - if (this.aspect < 1) { - fovr = fovr * this.aspect; - } - - let distanceFactor = Math.abs(radius / Math.sin(fovr / 2)) * _factor; - - let offset = this.getWorldDirection(new THREE.Vector3()).multiplyScalar(-distanceFactor); - this.position.copy(bs.center.clone().add(offset)); - }; - - THREE.Ray.prototype.distanceToPlaneWithNegative = function (plane) { - let denominator = plane.normal.dot(this.direction); - if (denominator === 0) { - // line is coplanar, return origin - if (plane.distanceToPoint(this.origin) === 0) { - return 0; - } - - // Null is preferable to undefined since undefined means.... it is undefined - return null; - } - let t = -(this.origin.dot(plane.normal) + plane.constant) / denominator; - - return t; - }; - - const workerPool = new WorkerPool(); - - const version = { - major: 1, - minor: 7, - suffix: '.1' - }; - - let lru = new LRU(); - - console.log('Potree ' + version.major + '.' + version.minor + version.suffix); - - let pointBudget = 1 * 1000 * 1000; - let framenumber = 0; - let numNodesLoading = 0; - let maxNodesLoading = 4; - - const debug = {}; - - exports.scriptPath = ""; - - if (document.currentScript && document.currentScript.src) { - exports.scriptPath = new URL(document.currentScript.src + '/..').href; - if (exports.scriptPath.slice(-1) === '/') { - exports.scriptPath = exports.scriptPath.slice(0, -1); - } - } else if(({ url: (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('potree.js', document.baseURI).href)) })){ - exports.scriptPath = new URL((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('potree.js', document.baseURI).href)) + "/..").href; - if (exports.scriptPath.slice(-1) === '/') { - exports.scriptPath = exports.scriptPath.slice(0, -1); - } - }else { - console.error('Potree was unable to find its script path using document.currentScript. Is Potree included with a script tag? Does your browser support this function?'); - } - - let resourcePath = exports.scriptPath + '/resources'; - - - function loadPointCloud$1(path, name, callback){ - let loaded = function(e){ - e.pointcloud.name = name; - callback(e); - }; - - let promise = new Promise( resolve => { - - // load pointcloud - if (!path){ - // TODO: callback? comment? Hello? Bueller? Anyone? - } else if (path.indexOf('ept.json') > 0) { - EptLoader.load(path, function(geometry) { - if (!geometry) { - console.error(new Error(`failed to load point cloud from URL: ${path}`)); - } - else { - let pointcloud = new PointCloudOctree(geometry); - //loaded(pointcloud); - resolve({type: 'pointcloud_loaded', pointcloud: pointcloud}); - } - }); - } else if (path.indexOf('cloud.js') > 0) { - POCLoader.load(path, function (geometry) { - if (!geometry) { - //callback({type: 'loading_failed'}); - console.error(new Error(`failed to load point cloud from URL: ${path}`)); - } else { - let pointcloud = new PointCloudOctree(geometry); - // loaded(pointcloud); - resolve({type: 'pointcloud_loaded', pointcloud: pointcloud}); - } - }); - } else if (path.indexOf('metadata.json') > 0) { - Potree.OctreeLoader.load(path).then(e => { - let geometry = e.geometry; - - if(!geometry){ - console.error(new Error(`failed to load point cloud from URL: ${path}`)); - }else { - let pointcloud = new PointCloudOctree(geometry); - - let aPosition = pointcloud.getAttribute("position"); - - let material = pointcloud.material; - material.elevationRange = [ - aPosition.range[0][2], - aPosition.range[1][2], - ]; - - // loaded(pointcloud); - resolve({type: 'pointcloud_loaded', pointcloud: pointcloud}); - } - }); - - OctreeLoader.load(path, function (geometry) { - if (!geometry) { - //callback({type: 'loading_failed'}); - console.error(new Error(`failed to load point cloud from URL: ${path}`)); - } else { - let pointcloud = new PointCloudOctree(geometry); - // loaded(pointcloud); - resolve({type: 'pointcloud_loaded', pointcloud: pointcloud}); - } - }); - } else if (path.indexOf('.vpc') > 0) { - PointCloudArena4DGeometry.load(path, function (geometry) { - if (!geometry) { - //callback({type: 'loading_failed'}); - console.error(new Error(`failed to load point cloud from URL: ${path}`)); - } else { - let pointcloud = new PointCloudArena4D(geometry); - // loaded(pointcloud); - resolve({type: 'pointcloud_loaded', pointcloud: pointcloud}); - } - }); - } else { - //callback({'type': 'loading_failed'}); - console.error(new Error(`failed to load point cloud from URL: ${path}`)); - } - }); - - if(callback){ - promise.then(pointcloud => { - loaded(pointcloud); - }); - }else { - return promise; - } - }; - - - // add selectgroup - (function($){ - $.fn.extend({ - selectgroup: function(args = {}){ - - let elGroup = $(this); - let rootID = elGroup.prop("id"); - let groupID = `${rootID}`; - let groupTitle = (args.title !== undefined) ? args.title : ""; - - let elButtons = []; - elGroup.find("option").each((index, value) => { - let buttonID = $(value).prop("id"); - let label = $(value).html(); - let optionValue = $(value).prop("value"); - - let elButton = $(` - - - - - `); - let elLabel = elButton.find("label"); - let elInput = elButton.find("input"); - - elInput.change( () => { - elGroup.find("label").removeClass("ui-state-active"); - elGroup.find("label").addClass("ui-state-default"); - if(elInput.is(":checked")){ - elLabel.addClass("ui-state-active"); - }else { - //elLabel.addClass("ui-state-default"); - } - }); - - elButtons.push(elButton); - }); - - let elFieldset = $(` -
        - ${groupTitle} - - - -
        - `); - - let elButtonContainer = elFieldset.find("span"); - for(let elButton of elButtons){ - elButtonContainer.append(elButton); - } - - elButtonContainer.find("label").each( (index, value) => { - $(value).css("margin", "0px"); - $(value).css("border-radius", "0px"); - $(value).css("border", "1px solid black"); - $(value).css("border-left", "none"); - }); - elButtonContainer.find("label:first").each( (index, value) => { - $(value).css("border-radius", "4px 0px 0px 4px"); - - }); - elButtonContainer.find("label:last").each( (index, value) => { - $(value).css("border-radius", "0px 4px 4px 0px"); - $(value).css("border-left", "none"); - }); - - elGroup.empty(); - elGroup.append(elFieldset); - - - - } - }); - })(jQuery); - - exports.Action = Action; - exports.AnimationPath = AnimationPath; - exports.Annotation = Annotation; - exports.Box3Helper = Box3Helper; - exports.BoxVolume = BoxVolume; - exports.CameraAnimation = CameraAnimation; - exports.CameraMode = CameraMode; - exports.ClassificationScheme = ClassificationScheme; - exports.ClipMethod = ClipMethod; - exports.ClipTask = ClipTask; - exports.ClipVolume = ClipVolume; - exports.ClippingTool = ClippingTool; - exports.Compass = Compass; - exports.DeviceOrientationControls = DeviceOrientationControls; - exports.EarthControls = EarthControls; - exports.ElevationGradientRepeat = ElevationGradientRepeat; - exports.Enum = Enum; - exports.EnumItem = EnumItem; - exports.EptBinaryLoader = EptBinaryLoader; - exports.EptKey = EptKey; - exports.EptLaszipLoader = EptLaszipLoader; - exports.EptLazBatcher = EptLazBatcher; - exports.EptLoader = EptLoader; - exports.EptZstandardLoader = EptZstandardLoader; - exports.EventDispatcher = EventDispatcher; - exports.EyeDomeLightingMaterial = EyeDomeLightingMaterial; - exports.Features = Features; - exports.FirstPersonControls = FirstPersonControls; - exports.GeoPackageLoader = GeoPackageLoader; - exports.Geopackage = Geopackage$1; - exports.Gradients = Gradients; - exports.HierarchicalSlider = HierarchicalSlider; - exports.Images360 = Images360; - exports.Images360Loader = Images360Loader; - exports.KeyCodes = KeyCodes; - exports.LRU = LRU; - exports.LRUItem = LRUItem; - exports.LengthUnits = LengthUnits; - exports.MOUSE = MOUSE; - exports.Measure = Measure; - exports.MeasuringTool = MeasuringTool; - exports.Message = Message; - exports.NodeLoader = NodeLoader; - exports.NormalizationEDLMaterial = NormalizationEDLMaterial; - exports.NormalizationMaterial = NormalizationMaterial; - exports.OctreeLoader = OctreeLoader; - exports.OrbitControls = OrbitControls; - exports.OrientedImage = OrientedImage; - exports.OrientedImageLoader = OrientedImageLoader; - exports.OrientedImages = OrientedImages; - exports.POCLoader = POCLoader; - exports.PathAnimation = PathAnimation; - exports.PointAttribute = PointAttribute; - exports.PointAttributeTypes = PointAttributeTypes; - exports.PointAttributes = PointAttributes; - exports.PointCloudEptGeometry = PointCloudEptGeometry; - exports.PointCloudEptGeometryNode = PointCloudEptGeometryNode; - exports.PointCloudMaterial = PointCloudMaterial; - exports.PointCloudOctree = PointCloudOctree; - exports.PointCloudOctreeGeometry = PointCloudOctreeGeometry; - exports.PointCloudOctreeGeometryNode = PointCloudOctreeGeometryNode; - exports.PointCloudOctreeNode = PointCloudOctreeNode; - exports.PointCloudSM = PointCloudSM; - exports.PointCloudTree = PointCloudTree; - exports.PointCloudTreeNode = PointCloudTreeNode; - exports.PointShape = PointShape; - exports.PointSizeType = PointSizeType; - exports.Points = Points; - exports.PolygonClipVolume = PolygonClipVolume; - exports.Profile = Profile; - exports.ProfileData = ProfileData; - exports.ProfileRequest = ProfileRequest; - exports.ProfileTool = ProfileTool; - exports.Renderer = Renderer; - exports.Scene = Scene; - exports.ScreenBoxSelectTool = ScreenBoxSelectTool; - exports.ShapefileLoader = ShapefileLoader; - exports.SphereVolume = SphereVolume; - exports.SpotLightHelper = SpotLightHelper; - exports.TextSprite = TextSprite; - exports.TransformationTool = TransformationTool; - exports.TreeType = TreeType; - exports.Utils = Utils; - exports.VRControlls = VRControlls; - exports.Version = Version; - exports.Viewer = Viewer; - exports.Volume = Volume; - exports.VolumeTool = VolumeTool; - exports.WorkerPool = WorkerPool; - exports.XHRFactory = XHRFactory; - exports.debug = debug; - exports.framenumber = framenumber; - exports.loadPointCloud = loadPointCloud$1; - exports.loadProject = loadProject; - exports.lru = lru; - exports.maxNodesLoading = maxNodesLoading; - exports.numNodesLoading = numNodesLoading; - exports.pointBudget = pointBudget; - exports.resourcePath = resourcePath; - exports.saveProject = saveProject; - exports.updatePointClouds = updatePointClouds; - exports.updateVisibility = updateVisibility; - exports.updateVisibilityStructures = updateVisibilityStructures; - exports.version = version; - exports.workerPool = workerPool; - - Object.defineProperty(exports, '__esModule', { value: true }); - -}))); -//# sourceMappingURL=potree.js.map diff --git a/libs/potree/potree.js.map b/libs/potree/potree.js.map deleted file mode 100644 index 8d9fd1c..0000000 --- a/libs/potree/potree.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"potree.js","sources":["../../src/EventDispatcher.js","../../src/Actions.js","../../src/AnimationPath.js","../../src/XHRFactory.js","../../src/TextSprite.js","../../src/utils/Volume.js","../../src/utils/Profile.js","../../src/utils/Measure.js","../../src/utils/PolygonClipVolume.js","../../src/utils.js","../../src/Annotation.js","../../src/Enum.js","../../src/defines.js","../../src/Features.js","../../src/KeyCodes.js","../../src/LRU.js","../../src/PointCloudTree.js","../../src/loader/PointAttributes.js","../../src/PointCloudEptGeometry.js","../../src/PointCloudOctreeGeometry.js","../../src/materials/Gradients.js","../shaders/shaders.js","../../src/materials/ClassificationScheme.js","../../src/materials/PointCloudMaterial.js","../../src/PointCloudOctree.js","../../src/Points.js","../../src/utils/Box3Helper.js","../../src/Potree_update_visibility.js","../../src/arena4d/PointCloudArena4D.js","../../src/PotreeRenderer.js","../../src/ProfileRequest.js","../../src/Version.js","../../src/WorkerPool.js","../../src/viewer/SaveProject.js","../../src/modules/CameraAnimation/CameraAnimation.js","../../src/viewer/LoadProject.js","../../src/materials/EyeDomeLightingMaterial.js","../../src/materials/NormalizationEDLMaterial.js","../../src/materials/NormalizationMaterial.js","../../src/loader/LasLazLoader.js","../../src/loader/BinaryLoader.js","../../src/loader/POCLoader.js","../../src/modules/loader/2.0/OctreeGeometry.js","../../src/modules/loader/2.0/OctreeLoader.js","../../src/loader/EptLoader.js","../../src/loader/ept/BinaryLoader.js","../../src/loader/ept/LaszipLoader.js","../../src/loader/ept/ZstandardLoader.js","../../src/loader/ShapefileLoader.js","../../src/loader/GeoPackageLoader.js","../../src/utils/ClipVolume.js","../../src/utils/ClippingTool.js","../../src/utils/GeoTIFF.js","../../src/utils/MeasuringTool.js","../../src/utils/Message.js","../../src/utils/PointCloudSM.js","../../src/utils/ProfileTool.js","../../src/utils/ScreenBoxSelectTool.js","../../src/utils/SpotLightHelper.js","../../src/utils/TransformationTool.js","../../src/utils/VolumeTool.js","../../src/utils/Compass.js","../../src/viewer/PotreeRenderer.js","../../src/viewer/EDLRenderer.js","../../src/viewer/HQSplatRenderer.js","../../src/viewer/View.js","../../src/viewer/Scene.js","../../src/viewer/map.js","../../src/exporter/CSVExporter.js","../../src/exporter/LASExporter.js","../../src/viewer/profile.js","../../src/exporter/GeoJSONExporter.js","../../src/exporter/DXFExporter.js","../../src/viewer/PropertyPanels/MeasurePanel.js","../../src/viewer/PropertyPanels/DistancePanel.js","../../src/viewer/PropertyPanels/PointPanel.js","../../src/viewer/PropertyPanels/AreaPanel.js","../../src/viewer/PropertyPanels/AnglePanel.js","../../src/viewer/PropertyPanels/CirclePanel.js","../../src/viewer/PropertyPanels/HeightPanel.js","../../src/viewer/PropertyPanels/VolumePanel.js","../../src/viewer/PropertyPanels/ProfilePanel.js","../../src/viewer/PropertyPanels/CameraPanel.js","../../src/viewer/PropertyPanels/AnnotationPanel.js","../../src/viewer/PropertyPanels/CameraAnimationPanel.js","../../src/viewer/PropertyPanels/PropertiesPanel.js","../../src/viewer/HierarchicalSlider.js","../../src/modules/OrientedImages/OrientedImageControls.js","../../src/modules/OrientedImages/OrientedImages.js","../../src/modules/Images360/Images360.js","../../libs/json5-2.1.3/json5.mjs","../../src/viewer/sidebar.js","../../src/utils/AnnotationTool.js","../../src/navigation/InputHandler.js","../../src/viewer/NavigationCube.js","../../src/navigation/OrbitControls.js","../../src/navigation/FirstPersonControls.js","../../src/navigation/EarthControls.js","../../src/navigation/DeviceOrientationControls.js","../../src/viewer/viewer.js","../../src/navigation/VRControlls.js","../../src/extensions/OrthographicCamera.js","../../src/extensions/PerspectiveCamera.js","../../src/extensions/Ray.js","../../src/Potree.js"],"sourcesContent":["\n/**\n * @author mrdoob / http://mrdoob.com/ https://github.com/mrdoob/eventdispatcher.js\n * \n * with slight modifications by mschuetz, http://potree.org\n * \n */\n\n// The MIT License\n// \n// Copyright (c) 2011 Mr.doob\n// \n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n\n\nexport class EventDispatcher{\n\n\tconstructor(){\n\t\tthis._listeners = {};\n\t}\n\n\taddEventListener(type, listener){\n\n\t\tconst listeners = this._listeners;\n\n\t\tif(listeners[type] === undefined){\n\t\t\tlisteners[type] = [];\n\t\t}\n\n\t\tif(listeners[type].indexOf(listener) === - 1){\n\t\t\tlisteners[type].push( listener );\n\t\t}\n\n\t}\n\n\thasEventListener(type, listener){\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[type] !== undefined && listeners[type].indexOf(listener) !== - 1;\n\t}\n\n\tremoveEventListener(type, listener){\n\n\t\tlet listeners = this._listeners;\n\t\tlet listenerArray = listeners[type];\n\n\t\tif (listenerArray !== undefined){\n\n\t\t\tlet index = listenerArray.indexOf(listener);\n\n\t\t\tif(index !== - 1){\n\t\t\t\tlistenerArray.splice(index, 1);\n\t\t\t}\n\t\t}\n\n\t}\n\n\tremoveEventListeners(type){\n\t\tif(this._listeners[type] !== undefined){\n\t\t\tdelete this._listeners[type];\n\t\t}\n\t};\n\n\tdispatchEvent(event){\n\n\t\tlet listeners = this._listeners;\n\t\tlet listenerArray = listeners[event.type];\n\n\t\tif ( listenerArray !== undefined ) {\n\t\t\tevent.target = this;\n\n\t\t\tfor(let listener of listenerArray.slice(0)){\n\t\t\t\tlistener.call(this, event);\n\t\t\t}\n\t\t}\n\n\t}\n\n}","\n\nimport {EventDispatcher} from \"./EventDispatcher.js\";\n\nexport class Action extends EventDispatcher {\n\tconstructor (args = {}) {\n\t\tsuper();\n\n\t\tthis.icon = args.icon || '';\n\t\tthis.tooltip = args.tooltip;\n\n\t\tif (args.onclick !== undefined) {\n\t\t\tthis.onclick = args.onclick;\n\t\t}\n\t}\n\n\tonclick (event) {\n\n\t}\n\n\tpairWith (object) {\n\n\t}\n\n\tsetIcon (newIcon) {\n\t\tlet oldIcon = this.icon;\n\n\t\tif (newIcon === oldIcon) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.icon = newIcon;\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'icon_changed',\n\t\t\taction: this,\n\t\t\ticon: newIcon,\n\t\t\toldIcon: oldIcon\n\t\t});\n\t}\n};\n\n//Potree.Actions = {};\n//\n//Potree.Actions.ToggleAnnotationVisibility = class ToggleAnnotationVisibility extends Potree.Action {\n//\tconstructor (args = {}) {\n//\t\tsuper(args);\n//\n//\t\tthis.icon = Potree.resourcePath + '/icons/eye.svg';\n//\t\tthis.showIn = 'sidebar';\n//\t\tthis.tooltip = 'toggle visibility';\n//\t}\n//\n//\tpairWith (annotation) {\n//\t\tif (annotation.visible) {\n//\t\t\tthis.setIcon(Potree.resourcePath + '/icons/eye.svg');\n//\t\t} else {\n//\t\t\tthis.setIcon(Potree.resourcePath + '/icons/eye_crossed.svg');\n//\t\t}\n//\n//\t\tannotation.addEventListener('visibility_changed', e => {\n//\t\t\tlet annotation = e.annotation;\n//\n//\t\t\tif (annotation.visible) {\n//\t\t\t\tthis.setIcon(Potree.resourcePath + '/icons/eye.svg');\n//\t\t\t} else {\n//\t\t\t\tthis.setIcon(Potree.resourcePath + '/icons/eye_crossed.svg');\n//\t\t\t}\n//\t\t});\n//\t}\n//\n//\tonclick (event) {\n//\t\tlet annotation = event.annotation;\n//\n//\t\tannotation.visible = !annotation.visible;\n//\n//\t\tif (annotation.visible) {\n//\t\t\tthis.setIcon(Potree.resourcePath + '/icons/eye.svg');\n//\t\t} else {\n//\t\t\tthis.setIcon(Potree.resourcePath + '/icons/eye_crossed.svg');\n//\t\t}\n//\t}\n//};\n","\n\nexport class PathAnimation{\n\t\n\tconstructor(path, start, end, speed, callback){\n\t\t\tthis.path = path;\n\t\t\tthis.length = this.path.spline.getLength();\n\t\t\tthis.speed = speed;\n\t\t\tthis.callback = callback;\n\t\t\tthis.tween = null;\n\t\t\tthis.startPoint = Math.max(start, 0);\n\t\t\tthis.endPoint = Math.min(end, this.length);\n\t\t\tthis.t = 0.0;\n\t}\n\n\tstart(resume = false){\n\t\tif(this.tween){\n\t\t\tthis.tween.stop();\n\t\t\tthis.tween = null;\n\t\t}\n\t\n\t\tlet tStart;\n\t\tif(resume){\n\t\t\ttStart = this.t;\n\t\t}else{\n\t\t\ttStart = this.startPoint / this.length;\n\t\t}\n\t\tlet tEnd = this.endPoint / this.length;\n\t\tlet animationDuration = (tEnd - tStart) * this.length * 1000 / this.speed;\n\t\n\t\tlet progress = {t: tStart};\n\t\tthis.tween = new TWEEN.Tween(progress).to({t: tEnd}, animationDuration);\n\t\tthis.tween.easing(TWEEN.Easing.Linear.None);\n\t\tthis.tween.onUpdate((e) => {\n\t\t\tthis.t = progress.t;\n\t\t\tthis.callback(progress.t);\n\t\t});\n\t\tthis.tween.onComplete(() => {\n\t\t\tif(this.repeat){\n\t\t\t\tthis.start();\n\t\t\t}\n\t\t});\n\n\t\tsetTimeout(() => {\n\t\t\tthis.tween.start();\n\t\t}, 0);\n\t}\n\n\tstop(){\n\t\tif(!this.tween){\n\t\t\treturn;\n\t\t}\n\t\tthis.tween.stop();\n\t\tthis.tween = null;\n\t\tthis.t = 0;\n\t}\n\n\tpause(){\n\t\tif(!this.tween){\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.tween.stop();\n\t\tTWEEN.remove(this.tween);\n\t\tthis.tween = null;\n\t}\n\n\tresume(){\n\t\tthis.start(true);\n\t}\n\n\tgetPoint(t){\n\t\treturn this.path.spline.getPoint(t);\n\t}\n\n}\n\nexport class AnimationPath{\n\tconstructor (points = []) {\n\t\tthis.points = points;\n\t\tthis.spline = new THREE.CatmullRomCurve3(points);\n\t\t//this.spline.reparametrizeByArcLength(1 / this.spline.getLength().total);\n\t}\n\n\tget (t) {\n\t\treturn this.spline.getPoint(t);\n\t}\n\n\tgetLength () {\n\t\treturn this.spline.getLength();\n\t}\n\n\tanimate (start, end, speed, callback) {\n\t\tlet animation = new PathAnimation(this, start, end, speed, callback);\n\t\tanimation.start();\n\n\t\treturn animation;\n\t}\n\n\tpause () {\n\t\tif (this.tween) {\n\t\t\tthis.tween.stop();\n\t\t}\n\t}\n\n\tresume () {\n\t\tif (this.tween) {\n\t\t\tthis.tween.start();\n\t\t}\n\t}\n\n\tgetGeometry () {\n\t\tlet geometry = new THREE.Geometry();\n\n\t\tlet samples = 500;\n\t\tlet i = 0;\n\t\tfor (let u = 0; u <= 1; u += 1 / samples) {\n\t\t\tlet position = this.spline.getPoint(u);\n\t\t\tgeometry.vertices[i] = new THREE.Vector3(position.x, position.y, position.z);\n\n\t\t\ti++;\n\t\t}\n\n\t\tif(this.closed){\n\t\t\tlet position = this.spline.getPoint(0);\n\t\t\tgeometry.vertices[i] = new THREE.Vector3(position.x, position.y, position.z);\n\t\t}\n\n\t\treturn geometry;\n\t}\n\n\tget closed(){\n\t\treturn this.spline.closed;\n\t}\n\n\tset closed(value){\n\t\tthis.spline.closed = value;\n\t}\n\n}\n\t\n\t/*\n\t{\n\t\tlet target = new THREE.Vector3(589854.34, 231411.19, 692.77);\n\t\tlet points = [\n\t\t\tnew THREE.Vector3(589815.52, 231738.31, 959.48 ),\n\t\t\tnew THREE.Vector3(589604.73, 231615.00, 968.10 ),\n\t\t\tnew THREE.Vector3(589579.11, 231354.41, 1010.06),\n\t\t\tnew THREE.Vector3(589723.00, 231169.95, 1015.57),\n\t\t\tnew THREE.Vector3(589960.76, 231116.87, 978.60 ),\n\t\t\tnew THREE.Vector3(590139.29, 231268.71, 972.33 )\n\t\t];\n\t\n\t\tlet path = new Potree.AnimationPath(points);\n\t\n\t\tlet geometry = path.getGeometry();\n\t\tlet material = new THREE.LineBasicMaterial();\n\t\tlet line = new THREE.Line(geometry, material);\n\t\tviewer.scene.scene.add(line);\n\t\n\t\tlet [start, end, speed] = [0, path.getLength(), 10];\n\t\tpath.animate(start, end, speed, t => {\n\t\t\tviewer.scene.view.position.copy(path.spline.getPoint(t));\n\t\t});\n\t\n\t}\n\t*/\n\t","\nconst XHRFactory = {\n\tconfig: {\n\t\twithCredentials: false,\n\t\tcustomHeaders: [\n\t\t\t{ header: null, value: null }\n\t\t]\n\t},\n\n\tcreateXMLHttpRequest: function () {\n\t\tlet xhr = new XMLHttpRequest();\n\n\t\tif (this.config.customHeaders &&\n\t\t\tArray.isArray(this.config.customHeaders) &&\n\t\t\tthis.config.customHeaders.length > 0) {\n\t\t\tlet baseOpen = xhr.open;\n\t\t\tlet customHeaders = this.config.customHeaders;\n\t\t\txhr.open = function () {\n\t\t\t\tbaseOpen.apply(this, [].slice.call(arguments));\n\t\t\t\tcustomHeaders.forEach(function (customHeader) {\n\t\t\t\t\tif (!!customHeader.header && !!customHeader.value) {\n\t\t\t\t\t\txhr.setRequestHeader(customHeader.header, customHeader.value);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t}\n\n\t\treturn xhr;\n\t}\n};\n\nexport {XHRFactory};","\n\n// /**\n// * adapted from http://stemkoski.github.io/Three.js/Sprite-Text-Labels.html\n// */\n\n// let vs2D = `\n// // precision mediump float;\n// // precision mediump int;\n\n// // attribute vec3 position;\n// // attribute vec4 color;\n// // attribute vec2 uv;\n\n// // uniform mat4 modelViewMatrix;\n// // uniform mat4 projectionMatrix;\n// // uniform mat3 uvTransform;\n\n// uniform vec2 uPosition;\n// uniform vec2 uScale;\n\n// varying vec2 vUv;\n\n\n// void main(){\n\n// \tvec2 pos = position.xy * uScale;\n\n// \tgl_Position = vec4(pos, 0.0, 1.0);\n\n// \tvUv = uv;\n\n\n\n// }\n\n// `;\n\n// let fs2D = `\n// precision mediump float;\n// precision mediump int;\n\n// uniform sampler2D map;\n\n// // varying vec3 vPosition;\n// // varying vec4 vColor;\n// varying vec2 vUv;\n\n\n// void main()\t{\n\n// \tgl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);\n\n// \tgl_FragColor = vec4(vUv, 0.0, 1.0);\n\n// \tvec4 texelColor = texture2D( map, vUv );\n// \t//texelColor = mapTexelToLinear( texelColor );\n\n// \tgl_FragColor = vec4(texelColor.xyz, 1.0);\n\n\n// }\n\n// `;\n\n// function getRawMaterial(map){\n// \tlet material = new THREE.ShaderMaterial( {\n// \t\tuniforms: {\n// \t\t\tmap: { type: \"t\", value: map },\n// \t\t\tuPosition: {type: \"vec2\", value: [0, 0]},\n// \t\t\tuScale: {type: \"vec2\", value: [1, 1]},\n// \t\t},\n// \t\tvertexShader: vs2D,\n// \t\tfragmentShader: fs2D,\n// \t\tside: THREE.DoubleSide,\n// \t\ttransparent: false,\n\n// \t} );\n\n// \treturn material;\n// }\n\n\nexport class TextSprite extends THREE.Object3D{\n\t\n\tconstructor(text){\n\t\tsuper();\n\n\t\tlet texture = new THREE.Texture();\n\t\ttexture.minFilter = THREE.LinearFilter;\n\t\ttexture.magFilter = THREE.LinearFilter;\n\t\tlet spriteMaterial = new THREE.SpriteMaterial({\n\t\t\tmap: texture,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false});\n\n\t\tthis.texture = texture;\n\n\t\tthis.material = spriteMaterial;\n\t\t//this.material = getRawMaterial(texture);\n\t\tthis.sprite = new THREE.Sprite(this.material);\n\t\tthis.add(this.sprite);\n\n\t\tthis.borderThickness = 4;\n\t\tthis.fontface = 'Arial';\n\t\tthis.fontsize = 28;\n\t\tthis.borderColor = { r: 0, g: 0, b: 0, a: 1.0 };\n\t\tthis.backgroundColor = { r: 255, g: 255, b: 255, a: 1.0 };\n\t\tthis.textColor = {r: 255, g: 255, b: 255, a: 1.0};\n\t\tthis.text = '';\n\n\t\tthis.setText(text);\n\t}\n\n\tsetText(text){\n\t\tif (this.text !== text){\n\t\t\tthis.text = text;\n\n\t\t\tthis.update();\n\t\t}\n\t}\n\n\tsetTextColor(color){\n\t\tthis.textColor = color;\n\n\t\tthis.update();\n\t}\n\n\tsetBorderColor(color){\n\t\tthis.borderColor = color;\n\n\t\tthis.update();\n\t}\n\n\tsetBackgroundColor(color){\n\t\tthis.backgroundColor = color;\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tlet canvas = document.createElement('canvas');\n\t\tlet context = canvas.getContext('2d');\n\t\tcontext.font = 'Bold ' + this.fontsize + 'px ' + this.fontface;\n\n\t\t// get size data (height depends only on font size)\n\t\tlet metrics = context.measureText(this.text);\n\t\tlet textWidth = metrics.width;\n\t\tlet margin = 5;\n\t\tlet spriteWidth = 2 * margin + textWidth + 2 * this.borderThickness;\n\t\tlet spriteHeight = this.fontsize * 1.4 + 2 * this.borderThickness;\n\n\t\tcontext.canvas.width = spriteWidth;\n\t\tcontext.canvas.height = spriteHeight;\n\t\tcontext.font = 'Bold ' + this.fontsize + 'px ' + this.fontface;\n\n\t\t// background color\n\t\tcontext.fillStyle = 'rgba(' + this.backgroundColor.r + ',' + this.backgroundColor.g + ',' +\n\t\t\tthis.backgroundColor.b + ',' + this.backgroundColor.a + ')';\n\t\t// border color\n\t\tcontext.strokeStyle = 'rgba(' + this.borderColor.r + ',' + this.borderColor.g + ',' +\n\t\t\tthis.borderColor.b + ',' + this.borderColor.a + ')';\n\n\t\tcontext.lineWidth = this.borderThickness;\n\t\tthis.roundRect(context, this.borderThickness / 2, this.borderThickness / 2,\n\t\t\ttextWidth + this.borderThickness + 2 * margin, this.fontsize * 1.4 + this.borderThickness, 6);\n\n\t\t// text color\n\t\tcontext.strokeStyle = 'rgba(0, 0, 0, 1.0)';\n\t\tcontext.strokeText(this.text, this.borderThickness + margin, this.fontsize + this.borderThickness);\n\n\t\tcontext.fillStyle = 'rgba(' + this.textColor.r + ',' + this.textColor.g + ',' +\n\t\t\tthis.textColor.b + ',' + this.textColor.a + ')';\n\t\tcontext.fillText(this.text, this.borderThickness + margin, this.fontsize + this.borderThickness);\n\n\t\tlet texture = new THREE.Texture(canvas);\n\t\ttexture.minFilter = THREE.LinearFilter;\n\t\ttexture.magFilter = THREE.LinearFilter;\n\t\ttexture.needsUpdate = true;\n\t\t//this.material.needsUpdate = true;\n\n\t\t// { // screen-space sprite\n\t\t// \tlet [screenWidth, screenHeight] = [1620, 937];\n\n\t\t// \tlet uniforms = this.sprite.material.uniforms;\n\t\t// \tlet aspect = spriteHeight / spriteWidth;\n\t\t// \tlet factor = 0.5;\n\n\t\t// \tlet w = spriteWidth / screenWidth;\n\t\t// \tlet h = spriteHeight / screenHeight;\n\n\t\t// \tuniforms.uScale.value = [2 * w, 2 * h];\n\t\t// \t//uniforms.uScale.value = [factor * 1, factor * aspect];\n\t\t//\tthis.sprite.material.uniforms.map.value = texture;\n\t\t// }\n\n\t\tthis.sprite.material.map = texture;\n\t\tthis.texture = texture;\n\n\t\tthis.sprite.scale.set(spriteWidth * 0.01, spriteHeight * 0.01, 1.0);\n\t}\n\n\troundRect(ctx, x, y, w, h, r){\n\t\tctx.beginPath();\n\t\tctx.moveTo(x + r, y);\n\t\tctx.lineTo(x + w - r, y);\n\t\tctx.quadraticCurveTo(x + w, y, x + w, y + r);\n\t\tctx.lineTo(x + w, y + h - r);\n\t\tctx.quadraticCurveTo(x + w, y + h, x + w - r, y + h);\n\t\tctx.lineTo(x + r, y + h);\n\t\tctx.quadraticCurveTo(x, y + h, x, y + h - r);\n\t\tctx.lineTo(x, y + r);\n\t\tctx.quadraticCurveTo(x, y, x + r, y);\n\t\tctx.closePath();\n\t\tctx.fill();\n\t\tctx.stroke();\n\t}\n\n}\n\n\n","\nimport {TextSprite} from \"../TextSprite.js\";\n\nexport class Volume extends THREE.Object3D {\n\tconstructor (args = {}) {\n\t\tsuper();\n\n\t\tif(this.constructor.name === \"Volume\"){\n\t\t\tconsole.warn(\"Can't create object of class Volume directly. Use classes BoxVolume or SphereVolume instead.\");\n\t\t}\n\n\t\t//console.log(this);\n\t\t//console.log(this.constructor);\n\t\t//console.log(this.constructor.name);\n\n\t\tthis._clip = args.clip || false;\n\t\tthis._visible = true;\n\t\tthis.showVolumeLabel = true;\n\t\tthis._modifiable = args.modifiable || true;\n\n\t\tthis.label = new TextSprite('0');\n\t\tthis.label.setBorderColor({r: 0, g: 255, b: 0, a: 0.0});\n\t\tthis.label.setBackgroundColor({r: 0, g: 255, b: 0, a: 0.0});\n\t\tthis.label.material.depthTest = false;\n\t\tthis.label.material.depthWrite = false;\n\t\tthis.label.material.transparent = true;\n\t\tthis.label.position.y -= 0.5;\n\t\tthis.add(this.label);\n\n\t\tthis.label.updateMatrixWorld = () => {\n\t\t\tlet volumeWorldPos = new THREE.Vector3();\n\t\t\tvolumeWorldPos.setFromMatrixPosition(this.matrixWorld);\n\t\t\tthis.label.position.copy(volumeWorldPos);\n\t\t\tthis.label.updateMatrix();\n\t\t\tthis.label.matrixWorld.copy(this.label.matrix);\n\t\t\tthis.label.matrixWorldNeedsUpdate = false;\n\n\t\t\tfor (let i = 0, l = this.label.children.length; i < l; i++) {\n\t\t\t\tthis.label.children[ i ].updateMatrixWorld(true);\n\t\t\t}\n\t\t};\n\n\t\t{ // event listeners\n\t\t\tthis.addEventListener('select', e => {});\n\t\t\tthis.addEventListener('deselect', e => {});\n\t\t}\n\n\t}\n\n\tget visible(){\n\t\treturn this._visible;\n\t}\n\n\tset visible(value){\n\t\tif(this._visible !== value){\n\t\t\tthis._visible = value;\n\n\t\t\tthis.dispatchEvent({type: \"visibility_changed\", object: this});\n\t\t}\n\t}\n\n\tgetVolume () {\n\t\tconsole.warn(\"override this in subclass\");\n\t}\n\n\tupdate () {\n\t\t\n\t};\n\n\traycast (raycaster, intersects) {\n\n\t}\n\n\tget clip () {\n\t\treturn this._clip;\n\t}\n\n\tset clip (value) {\n\n\t\tif(this._clip !== value){\n\t\t\tthis._clip = value;\n\n\t\t\tthis.update();\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: \"clip_changed\",\n\t\t\t\tobject: this\n\t\t\t});\n\t\t}\n\t\t\n\t}\n\n\tget modifieable () {\n\t\treturn this._modifiable;\n\t}\n\n\tset modifieable (value) {\n\t\tthis._modifiable = value;\n\n\t\tthis.update();\n\t}\n};\n\n\nexport class BoxVolume extends Volume{\n\n\tconstructor(args = {}){\n\t\tsuper(args);\n\n\t\tthis.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1;\n\t\tthis.name = 'box_' + this.constructor.counter;\n\n\t\tlet boxGeometry = new THREE.BoxGeometry(1, 1, 1);\n\t\tboxGeometry.computeBoundingBox();\n\n\t\tlet boxFrameGeometry = new THREE.Geometry();\n\t\t{\n\t\t\tlet Vector3 = THREE.Vector3;\n\n\t\t\tboxFrameGeometry.vertices.push(\n\n\t\t\t\t// bottom\n\t\t\t\tnew Vector3(-0.5, -0.5, 0.5),\n\t\t\t\tnew Vector3(0.5, -0.5, 0.5),\n\t\t\t\tnew Vector3(0.5, -0.5, 0.5),\n\t\t\t\tnew Vector3(0.5, -0.5, -0.5),\n\t\t\t\tnew Vector3(0.5, -0.5, -0.5),\n\t\t\t\tnew Vector3(-0.5, -0.5, -0.5),\n\t\t\t\tnew Vector3(-0.5, -0.5, -0.5),\n\t\t\t\tnew Vector3(-0.5, -0.5, 0.5),\n\t\t\t\t// top\n\t\t\t\tnew Vector3(-0.5, 0.5, 0.5),\n\t\t\t\tnew Vector3(0.5, 0.5, 0.5),\n\t\t\t\tnew Vector3(0.5, 0.5, 0.5),\n\t\t\t\tnew Vector3(0.5, 0.5, -0.5),\n\t\t\t\tnew Vector3(0.5, 0.5, -0.5),\n\t\t\t\tnew Vector3(-0.5, 0.5, -0.5),\n\t\t\t\tnew Vector3(-0.5, 0.5, -0.5),\n\t\t\t\tnew Vector3(-0.5, 0.5, 0.5),\n\t\t\t\t// sides\n\t\t\t\tnew Vector3(-0.5, -0.5, 0.5),\n\t\t\t\tnew Vector3(-0.5, 0.5, 0.5),\n\t\t\t\tnew Vector3(0.5, -0.5, 0.5),\n\t\t\t\tnew Vector3(0.5, 0.5, 0.5),\n\t\t\t\tnew Vector3(0.5, -0.5, -0.5),\n\t\t\t\tnew Vector3(0.5, 0.5, -0.5),\n\t\t\t\tnew Vector3(-0.5, -0.5, -0.5),\n\t\t\t\tnew Vector3(-0.5, 0.5, -0.5),\n\n\t\t\t);\n\n\t\t}\n\n\t\tthis.material = new THREE.MeshBasicMaterial({\n\t\t\tcolor: 0x00ff00,\n\t\t\ttransparent: true,\n\t\t\topacity: 0.3,\n\t\t\tdepthTest: true,\n\t\t\tdepthWrite: false});\n\t\tthis.box = new THREE.Mesh(boxGeometry, this.material);\n\t\tthis.box.geometry.computeBoundingBox();\n\t\tthis.boundingBox = this.box.geometry.boundingBox;\n\t\tthis.add(this.box);\n\n\t\tthis.frame = new THREE.LineSegments(boxFrameGeometry, new THREE.LineBasicMaterial({color: 0x000000}));\n\t\t// this.frame.mode = THREE.Lines;\n\t\tthis.add(this.frame);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tthis.boundingBox = this.box.geometry.boundingBox;\n\t\tthis.boundingSphere = this.boundingBox.getBoundingSphere(new THREE.Sphere());\n\n\t\tif (this._clip) {\n\t\t\tthis.box.visible = false;\n\t\t\tthis.label.visible = false;\n\t\t} else {\n\t\t\tthis.box.visible = true;\n\t\t\tthis.label.visible = this.showVolumeLabel;\n\t\t}\n\t}\n\n\traycast (raycaster, intersects) {\n\t\tlet is = [];\n\t\tthis.box.raycast(raycaster, is);\n\n\t\tif (is.length > 0) {\n\t\t\tlet I = is[0];\n\t\t\tintersects.push({\n\t\t\t\tdistance: I.distance,\n\t\t\t\tobject: this,\n\t\t\t\tpoint: I.point.clone()\n\t\t\t});\n\t\t}\n\t}\n\n\tgetVolume(){\n\t\treturn Math.abs(this.scale.x * this.scale.y * this.scale.z);\n\t}\n\n};\n\nexport class SphereVolume extends Volume{\n\n\tconstructor(args = {}){\n\t\tsuper(args);\n\n\t\tthis.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1;\n\t\tthis.name = 'sphere_' + this.constructor.counter;\n\n\t\tlet sphereGeometry = new THREE.SphereGeometry(1, 32, 32);\n\t\tsphereGeometry.computeBoundingBox();\n\n\t\tthis.material = new THREE.MeshBasicMaterial({\n\t\t\tcolor: 0x00ff00,\n\t\t\ttransparent: true,\n\t\t\topacity: 0.3,\n\t\t\tdepthTest: true,\n\t\t\tdepthWrite: false});\n\t\tthis.sphere = new THREE.Mesh(sphereGeometry, this.material);\n\t\tthis.sphere.visible = false;\n\t\tthis.sphere.geometry.computeBoundingBox();\n\t\tthis.boundingBox = this.sphere.geometry.boundingBox;\n\t\tthis.add(this.sphere);\n\n\t\tthis.label.visible = false;\n\n\n\t\tlet frameGeometry = new THREE.Geometry();\n\t\t{\n\t\t\tlet steps = 64;\n\t\t\tlet uSegments = 8;\n\t\t\tlet vSegments = 5;\n\t\t\tlet r = 1;\n\n\t\t\tfor(let uSegment = 0; uSegment < uSegments; uSegment++){\n\n\t\t\t\tlet alpha = (uSegment / uSegments) * Math.PI * 2;\n\t\t\t\tlet dirx = Math.cos(alpha);\n\t\t\t\tlet diry = Math.sin(alpha);\n\n\t\t\t\tfor(let i = 0; i <= steps; i++){\n\t\t\t\t\tlet v = (i / steps) * Math.PI * 2;\n\t\t\t\t\tlet vNext = v + 2 * Math.PI / steps;\n\n\t\t\t\t\tlet height = Math.sin(v);\n\t\t\t\t\tlet xyAmount = Math.cos(v);\n\n\t\t\t\t\tlet heightNext = Math.sin(vNext);\n\t\t\t\t\tlet xyAmountNext = Math.cos(vNext);\n\n\t\t\t\t\tlet vertex = new THREE.Vector3(dirx * xyAmount, diry * xyAmount, height);\n\t\t\t\t\tframeGeometry.vertices.push(vertex);\n\n\t\t\t\t\tlet vertexNext = new THREE.Vector3(dirx * xyAmountNext, diry * xyAmountNext, heightNext);\n\t\t\t\t\tframeGeometry.vertices.push(vertexNext);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// creates rings at poles, just because it's easier to implement\n\t\t\tfor(let vSegment = 0; vSegment <= vSegments + 1; vSegment++){\n\n\t\t\t\t//let height = (vSegment / (vSegments + 1)) * 2 - 1; // -1 to 1\n\t\t\t\tlet uh = (vSegment / (vSegments + 1)); // -1 to 1\n\t\t\t\tuh = (1 - uh) * (-Math.PI / 2) + uh *(Math.PI / 2);\n\t\t\t\tlet height = Math.sin(uh);\n\n\t\t\t\tconsole.log(uh, height);\n\n\t\t\t\tfor(let i = 0; i <= steps; i++){\n\t\t\t\t\tlet u = (i / steps) * Math.PI * 2;\n\t\t\t\t\tlet uNext = u + 2 * Math.PI / steps;\n\n\t\t\t\t\tlet dirx = Math.cos(u);\n\t\t\t\t\tlet diry = Math.sin(u);\n\n\t\t\t\t\tlet dirxNext = Math.cos(uNext);\n\t\t\t\t\tlet diryNext = Math.sin(uNext);\n\n\t\t\t\t\tlet xyAmount = Math.sqrt(1 - height * height);\n\n\t\t\t\t\tlet vertex = new THREE.Vector3(dirx * xyAmount, diry * xyAmount, height);\n\t\t\t\t\tframeGeometry.vertices.push(vertex);\n\n\t\t\t\t\tlet vertexNext = new THREE.Vector3(dirxNext * xyAmount, diryNext * xyAmount, height);\n\t\t\t\t\tframeGeometry.vertices.push(vertexNext);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.frame = new THREE.LineSegments(frameGeometry, new THREE.LineBasicMaterial({color: 0x000000}));\n\t\tthis.add(this.frame);\n\n\t\tlet frameMaterial = new THREE.MeshBasicMaterial({wireframe: true, color: 0x000000});\n\t\tthis.frame = new THREE.Mesh(sphereGeometry, frameMaterial);\n\t\t//this.add(this.frame);\n\n\t\t//this.frame = new THREE.LineSegments(boxFrameGeometry, new THREE.LineBasicMaterial({color: 0x000000}));\n\t\t// this.frame.mode = THREE.Lines;\n\t\t//this.add(this.frame);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tthis.boundingBox = this.sphere.geometry.boundingBox;\n\t\tthis.boundingSphere = this.boundingBox.getBoundingSphere(new THREE.Sphere());\n\n\t\t//if (this._clip) {\n\t\t//\tthis.sphere.visible = false;\n\t\t//\tthis.label.visible = false;\n\t\t//} else {\n\t\t//\tthis.sphere.visible = true;\n\t\t//\tthis.label.visible = this.showVolumeLabel;\n\t\t//}\n\t}\n\n\traycast (raycaster, intersects) {\n\t\tlet is = [];\n\t\tthis.sphere.raycast(raycaster, is);\n\n\t\tif (is.length > 0) {\n\t\t\tlet I = is[0];\n\t\t\tintersects.push({\n\t\t\t\tdistance: I.distance,\n\t\t\t\tobject: this,\n\t\t\t\tpoint: I.point.clone()\n\t\t\t});\n\t\t}\n\t}\n\t\n\t// see https://en.wikipedia.org/wiki/Ellipsoid#Volume\n\tgetVolume(){\n\t\treturn (4 / 3) * Math.PI * this.scale.x * this.scale.y * this.scale.z;\n\t}\n\n};","\nimport {Utils} from \"../utils.js\";\n\nexport class Profile extends THREE.Object3D{\n\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1;\n\n\t\tthis.name = 'Profile_' + this.constructor.counter;\n\t\tthis.points = [];\n\t\tthis.spheres = [];\n\t\tthis.edges = [];\n\t\tthis.boxes = [];\n\t\tthis.width = 1;\n\t\tthis.height = 20;\n\t\tthis._modifiable = true;\n\n\t\tthis.sphereGeometry = new THREE.SphereGeometry(0.4, 10, 10);\n\t\tthis.color = new THREE.Color(0xff0000);\n\t\tthis.lineColor = new THREE.Color(0xff0000);\n\t}\n\n\tcreateSphereMaterial () {\n\t\tlet sphereMaterial = new THREE.MeshLambertMaterial({\n\t\t\t//shading: THREE.SmoothShading,\n\t\t\tcolor: 0xff0000,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false}\n\t\t);\n\n\t\treturn sphereMaterial;\n\t};\n\n\tgetSegments () {\n\t\tlet segments = [];\n\n\t\tfor (let i = 0; i < this.points.length - 1; i++) {\n\t\t\tlet start = this.points[i].clone();\n\t\t\tlet end = this.points[i + 1].clone();\n\t\t\tsegments.push({start: start, end: end});\n\t\t}\n\n\t\treturn segments;\n\t}\n\n\tgetSegmentMatrices () {\n\t\tlet segments = this.getSegments();\n\t\tlet matrices = [];\n\n\t\tfor (let segment of segments) {\n\t\t\tlet {start, end} = segment;\n\n\t\t\tlet box = new THREE.Object3D();\n\n\t\t\tlet length = start.clone().setZ(0).distanceTo(end.clone().setZ(0));\n\t\t\tbox.scale.set(length, 10000, this.width);\n\t\t\tbox.up.set(0, 0, 1);\n\n\t\t\tlet center = new THREE.Vector3().addVectors(start, end).multiplyScalar(0.5);\n\t\t\tlet diff = new THREE.Vector3().subVectors(end, start);\n\t\t\tlet target = new THREE.Vector3(diff.y, -diff.x, 0);\n\n\t\t\tbox.position.set(0, 0, 0);\n\t\t\tbox.lookAt(target);\n\t\t\tbox.position.copy(center);\n\n\t\t\tbox.updateMatrixWorld();\n\t\t\tmatrices.push(box.matrixWorld);\n\t\t}\n\n\t\treturn matrices;\n\t}\n\n\taddMarker (point) {\n\t\tthis.points.push(point);\n\n\t\tlet sphere = new THREE.Mesh(this.sphereGeometry, this.createSphereMaterial());\n\n\t\tthis.add(sphere);\n\t\tthis.spheres.push(sphere);\n\n\t\t// edges & boxes\n\t\tif (this.points.length > 1) {\n\t\t\tlet lineGeometry = new THREE.Geometry();\n\t\t\tlineGeometry.vertices.push(new THREE.Vector3(), new THREE.Vector3());\n\t\t\tlineGeometry.colors.push(this.lineColor, this.lineColor, this.lineColor);\n\t\t\tlet lineMaterial = new THREE.LineBasicMaterial({\n\t\t\t\tvertexColors: THREE.VertexColors,\n\t\t\t\tlinewidth: 2,\n\t\t\t\ttransparent: true,\n\t\t\t\topacity: 0.4\n\t\t\t});\n\t\t\tlineMaterial.depthTest = false;\n\t\t\tlet edge = new THREE.Line(lineGeometry, lineMaterial);\n\t\t\tedge.visible = false;\n\n\t\t\tthis.add(edge);\n\t\t\tthis.edges.push(edge);\n\n\t\t\tlet boxGeometry = new THREE.BoxGeometry(1, 1, 1);\n\t\t\tlet boxMaterial = new THREE.MeshBasicMaterial({color: 0xff0000, transparent: true, opacity: 0.2});\n\t\t\tlet box = new THREE.Mesh(boxGeometry, boxMaterial);\n\t\t\tbox.visible = false;\n\n\t\t\tthis.add(box);\n\t\t\tthis.boxes.push(box);\n\t\t}\n\n\t\t{ // event listeners\n\t\t\tlet drag = (e) => {\n\t\t\t\tlet I = Utils.getMousePointCloudIntersection(\n\t\t\t\t\te.drag.end, \n\t\t\t\t\te.viewer.scene.getActiveCamera(), \n\t\t\t\t\te.viewer, \n\t\t\t\t\te.viewer.scene.pointclouds);\n\n\t\t\t\tif (I) {\n\t\t\t\t\tlet i = this.spheres.indexOf(e.drag.object);\n\t\t\t\t\tif (i !== -1) {\n\t\t\t\t\t\tthis.setPosition(i, I.location);\n\t\t\t\t\t\t//this.dispatchEvent({\n\t\t\t\t\t\t//\t'type': 'marker_moved',\n\t\t\t\t\t\t//\t'profile': this,\n\t\t\t\t\t\t//\t'index': i\n\t\t\t\t\t\t//});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tlet drop = e => {\n\t\t\t\tlet i = this.spheres.indexOf(e.drag.object);\n\t\t\t\tif (i !== -1) {\n\t\t\t\t\tthis.dispatchEvent({\n\t\t\t\t\t\t'type': 'marker_dropped',\n\t\t\t\t\t\t'profile': this,\n\t\t\t\t\t\t'index': i\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tlet mouseover = (e) => e.object.material.emissive.setHex(0x888888);\n\t\t\tlet mouseleave = (e) => e.object.material.emissive.setHex(0x000000);\n\n\t\t\tsphere.addEventListener('drag', drag);\n\t\t\tsphere.addEventListener('drop', drop);\n\t\t\tsphere.addEventListener('mouseover', mouseover);\n\t\t\tsphere.addEventListener('mouseleave', mouseleave);\n\t\t}\n\n\t\tlet event = {\n\t\t\ttype: 'marker_added',\n\t\t\tprofile: this,\n\t\t\tsphere: sphere\n\t\t};\n\t\tthis.dispatchEvent(event);\n\n\t\tthis.setPosition(this.points.length - 1, point);\n\t}\n\n\tremoveMarker (index) {\n\t\tthis.points.splice(index, 1);\n\n\t\tthis.remove(this.spheres[index]);\n\n\t\tlet edgeIndex = (index === 0) ? 0 : (index - 1);\n\t\tthis.remove(this.edges[edgeIndex]);\n\t\tthis.edges.splice(edgeIndex, 1);\n\t\tthis.remove(this.boxes[edgeIndex]);\n\t\tthis.boxes.splice(edgeIndex, 1);\n\n\t\tthis.spheres.splice(index, 1);\n\n\t\tthis.update();\n\n\t\tthis.dispatchEvent({\n\t\t\t'type': 'marker_removed',\n\t\t\t'profile': this\n\t\t});\n\t}\n\n\tsetPosition (index, position) {\n\t\tlet point = this.points[index];\n\t\tpoint.copy(position);\n\n\t\tlet event = {\n\t\t\ttype: 'marker_moved',\n\t\t\tprofile:\tthis,\n\t\t\tindex:\tindex,\n\t\t\tposition: point.clone()\n\t\t};\n\t\tthis.dispatchEvent(event);\n\n\t\tthis.update();\n\t}\n\n\tsetWidth (width) {\n\t\tthis.width = width;\n\n\t\tlet event = {\n\t\t\ttype: 'width_changed',\n\t\t\tprofile:\tthis,\n\t\t\twidth:\twidth\n\t\t};\n\t\tthis.dispatchEvent(event);\n\n\t\tthis.update();\n\t}\n\n\tgetWidth () {\n\t\treturn this.width;\n\t}\n\n\tupdate () {\n\t\tif (this.points.length === 0) {\n\t\t\treturn;\n\t\t} else if (this.points.length === 1) {\n\t\t\tlet point = this.points[0];\n\t\t\tthis.spheres[0].position.copy(point);\n\n\t\t\treturn;\n\t\t}\n\n\t\tlet min = this.points[0].clone();\n\t\tlet max = this.points[0].clone();\n\t\tlet centroid = new THREE.Vector3();\n\t\tlet lastIndex = this.points.length - 1;\n\t\tfor (let i = 0; i <= lastIndex; i++) {\n\t\t\tlet point = this.points[i];\n\t\t\tlet sphere = this.spheres[i];\n\t\t\tlet leftIndex = (i === 0) ? lastIndex : i - 1;\n\t\t\t// let rightIndex = (i === lastIndex) ? 0 : i + 1;\n\t\t\tlet leftVertex = this.points[leftIndex];\n\t\t\t// let rightVertex = this.points[rightIndex];\n\t\t\tlet leftEdge = this.edges[leftIndex];\n\t\t\tlet rightEdge = this.edges[i];\n\t\t\tlet leftBox = this.boxes[leftIndex];\n\t\t\t// rightBox = this.boxes[i];\n\n\t\t\t// let leftEdgeLength = point.distanceTo(leftVertex);\n\t\t\t// let rightEdgeLength = point.distanceTo(rightVertex);\n\t\t\t// let leftEdgeCenter = new THREE.Vector3().addVectors(leftVertex, point).multiplyScalar(0.5);\n\t\t\t// let rightEdgeCenter = new THREE.Vector3().addVectors(point, rightVertex).multiplyScalar(0.5);\n\n\t\t\tsphere.position.copy(point);\n\n\t\t\tif (this._modifiable) {\n\t\t\t\tsphere.visible = true;\n\t\t\t} else {\n\t\t\t\tsphere.visible = false;\n\t\t\t}\n\n\t\t\tif (leftEdge) {\n\t\t\t\tleftEdge.geometry.vertices[1].copy(point);\n\t\t\t\tleftEdge.geometry.verticesNeedUpdate = true;\n\t\t\t\tleftEdge.geometry.computeBoundingSphere();\n\t\t\t}\n\n\t\t\tif (rightEdge) {\n\t\t\t\trightEdge.geometry.vertices[0].copy(point);\n\t\t\t\trightEdge.geometry.verticesNeedUpdate = true;\n\t\t\t\trightEdge.geometry.computeBoundingSphere();\n\t\t\t}\n\n\t\t\tif (leftBox) {\n\t\t\t\tlet start = leftVertex;\n\t\t\t\tlet end = point;\n\t\t\t\tlet length = start.clone().setZ(0).distanceTo(end.clone().setZ(0));\n\t\t\t\tleftBox.scale.set(length, 1000000, this.width);\n\t\t\t\tleftBox.up.set(0, 0, 1);\n\n\t\t\t\tlet center = new THREE.Vector3().addVectors(start, end).multiplyScalar(0.5);\n\t\t\t\tlet diff = new THREE.Vector3().subVectors(end, start);\n\t\t\t\tlet target = new THREE.Vector3(diff.y, -diff.x, 0);\n\n\t\t\t\tleftBox.position.set(0, 0, 0);\n\t\t\t\tleftBox.lookAt(target);\n\t\t\t\tleftBox.position.copy(center);\n\t\t\t}\n\n\t\t\tcentroid.add(point);\n\t\t\tmin.min(point);\n\t\t\tmax.max(point);\n\t\t}\n\t\tcentroid.multiplyScalar(1 / this.points.length);\n\n\t\tfor (let i = 0; i < this.boxes.length; i++) {\n\t\t\tlet box = this.boxes[i];\n\n\t\t\tbox.position.z = min.z + (max.z - min.z) / 2;\n\t\t}\n\t}\n\n\traycast (raycaster, intersects) {\n\t\tfor (let i = 0; i < this.points.length; i++) {\n\t\t\tlet sphere = this.spheres[i];\n\n\t\t\tsphere.raycast(raycaster, intersects);\n\t\t}\n\n\t\t// recalculate distances because they are not necessarely correct\n\t\t// for scaled objects.\n\t\t// see https://github.com/mrdoob/three.js/issues/5827\n\t\t// TODO: remove this once the bug has been fixed\n\t\tfor (let i = 0; i < intersects.length; i++) {\n\t\t\tlet I = intersects[i];\n\t\t\tI.distance = raycaster.ray.origin.distanceTo(I.point);\n\t\t}\n\t\tintersects.sort(function (a, b) { return a.distance - b.distance; });\n\t};\n\n\tget modifiable () {\n\t\treturn this._modifiable;\n\t}\n\n\tset modifiable (value) {\n\t\tthis._modifiable = value;\n\t\tthis.update();\n\t}\n\n}\n","\nimport {TextSprite} from \"../TextSprite.js\";\nimport {Utils} from \"../utils.js\";\n\nfunction createHeightLine(){\n\tlet lineGeometry = new THREE.LineGeometry();\n\n\tlineGeometry.setPositions([\n\t\t0, 0, 0,\n\t\t0, 0, 0,\n\t]);\n\n\tlet lineMaterial = new THREE.LineMaterial({ \n\t\tcolor: 0x00ff00, \n\t\tdashSize: 5, \n\t\tgapSize: 2,\n\t\tlinewidth: 2, \n\t\tresolution: new THREE.Vector2(1000, 1000),\n\t});\n\n\tlineMaterial.depthTest = false;\n\tconst heightEdge = new THREE.Line2(lineGeometry, lineMaterial);\n\theightEdge.visible = false;\n\n\t//this.add(this.heightEdge);\n\t\n\treturn heightEdge;\n}\n\nfunction createHeightLabel(){\n\tconst heightLabel = new TextSprite('');\n\n\theightLabel.setTextColor({r: 140, g: 250, b: 140, a: 1.0});\n\theightLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0});\n\theightLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0});\n\theightLabel.fontsize = 16;\n\theightLabel.material.depthTest = false;\n\theightLabel.material.opacity = 1;\n\theightLabel.visible = false;\n\n\treturn heightLabel;\n}\n\nfunction createAreaLabel(){\n\tconst areaLabel = new TextSprite('');\n\n\tareaLabel.setTextColor({r: 140, g: 250, b: 140, a: 1.0});\n\tareaLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0});\n\tareaLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0});\n\tareaLabel.fontsize = 16;\n\tareaLabel.material.depthTest = false;\n\tareaLabel.material.opacity = 1;\n\tareaLabel.visible = false;\n\t\n\treturn areaLabel;\n}\n\nfunction createCircleRadiusLabel(){\n\tconst circleRadiusLabel = new TextSprite(\"\");\n\n\tcircleRadiusLabel.setTextColor({r: 140, g: 250, b: 140, a: 1.0});\n\tcircleRadiusLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0});\n\tcircleRadiusLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0});\n\tcircleRadiusLabel.fontsize = 16;\n\tcircleRadiusLabel.material.depthTest = false;\n\tcircleRadiusLabel.material.opacity = 1;\n\tcircleRadiusLabel.visible = false;\n\t\n\treturn circleRadiusLabel;\n}\n\nfunction createCircleRadiusLine(){\n\tconst lineGeometry = new THREE.LineGeometry();\n\n\tlineGeometry.setPositions([\n\t\t0, 0, 0,\n\t\t0, 0, 0,\n\t]);\n\n\tconst lineMaterial = new THREE.LineMaterial({ \n\t\tcolor: 0xff0000, \n\t\tlinewidth: 2, \n\t\tresolution: new THREE.Vector2(1000, 1000),\n\t\tgapSize: 1,\n\t\tdashed: true,\n\t});\n\n\tlineMaterial.depthTest = false;\n\n\tconst circleRadiusLine = new THREE.Line2(lineGeometry, lineMaterial);\n\tcircleRadiusLine.visible = false;\n\n\treturn circleRadiusLine;\n}\n\nfunction createCircleLine(){\n\tconst coordinates = [];\n\n\tlet n = 128;\n\tfor(let i = 0; i <= n; i++){\n\t\tlet u0 = 2 * Math.PI * (i / n);\n\t\tlet u1 = 2 * Math.PI * (i + 1) / n;\n\n\t\tlet p0 = new THREE.Vector3(\n\t\t\tMath.cos(u0), \n\t\t\tMath.sin(u0), \n\t\t\t0\n\t\t);\n\n\t\tlet p1 = new THREE.Vector3(\n\t\t\tMath.cos(u1), \n\t\t\tMath.sin(u1), \n\t\t\t0\n\t\t);\n\n\t\tcoordinates.push(\n\t\t\t...p0.toArray(),\n\t\t\t...p1.toArray(),\n\t\t);\n\t}\n\n\tconst geometry = new THREE.LineGeometry();\n\tgeometry.setPositions(coordinates);\n\n\tconst material = new THREE.LineMaterial({ \n\t\tcolor: 0xff0000, \n\t\tdashSize: 5, \n\t\tgapSize: 2,\n\t\tlinewidth: 2, \n\t\tresolution: new THREE.Vector2(1000, 1000),\n\t});\n\n\tmaterial.depthTest = false;\n\n\tconst circleLine = new THREE.Line2(geometry, material);\n\tcircleLine.visible = false;\n\tcircleLine.computeLineDistances();\n\n\treturn circleLine;\n}\n\nfunction createCircleCenter(){\n\tconst sg = new THREE.SphereGeometry(1, 32, 32);\n\tconst sm = new THREE.MeshNormalMaterial();\n\t\n\tconst circleCenter = new THREE.Mesh(sg, sm);\n\tcircleCenter.visible = false;\n\n\treturn circleCenter;\n}\n\nfunction createLine(){\n\tconst geometry = new THREE.LineGeometry();\n\n\tgeometry.setPositions([\n\t\t0, 0, 0,\n\t\t0, 0, 0,\n\t]);\n\n\tconst material = new THREE.LineMaterial({ \n\t\tcolor: 0xff0000, \n\t\tlinewidth: 2, \n\t\tresolution: new THREE.Vector2(1000, 1000),\n\t\tgapSize: 1,\n\t\tdashed: true,\n\t});\n\n\tmaterial.depthTest = false;\n\n\tconst line = new THREE.Line2(geometry, material);\n\n\treturn line;\n}\n\nfunction createCircle(){\n\n\tconst coordinates = [];\n\n\tlet n = 128;\n\tfor(let i = 0; i <= n; i++){\n\t\tlet u0 = 2 * Math.PI * (i / n);\n\t\tlet u1 = 2 * Math.PI * (i + 1) / n;\n\n\t\tlet p0 = new THREE.Vector3(\n\t\t\tMath.cos(u0), \n\t\t\tMath.sin(u0), \n\t\t\t0\n\t\t);\n\n\t\tlet p1 = new THREE.Vector3(\n\t\t\tMath.cos(u1), \n\t\t\tMath.sin(u1), \n\t\t\t0\n\t\t);\n\n\t\tcoordinates.push(\n\t\t\t...p0.toArray(),\n\t\t\t...p1.toArray(),\n\t\t);\n\t}\n\n\tconst geometry = new THREE.LineGeometry();\n\tgeometry.setPositions(coordinates);\n\n\tconst material = new THREE.LineMaterial({ \n\t\tcolor: 0xff0000, \n\t\tdashSize: 5, \n\t\tgapSize: 2,\n\t\tlinewidth: 2, \n\t\tresolution: new THREE.Vector2(1000, 1000),\n\t});\n\n\tmaterial.depthTest = false;\n\n\tconst line = new THREE.Line2(geometry, material);\n\tline.computeLineDistances();\n\n\treturn line;\n\n}\n\nfunction createAzimuth(){\n\n\tconst azimuth = {\n\t\tlabel: null,\n\t\tcenter: null,\n\t\ttarget: null,\n\t\tnorth: null,\n\t\tcenterToNorth: null,\n\t\tcenterToTarget: null,\n\t\tcenterToTargetground: null,\n\t\ttargetgroundToTarget: null,\n\t\tcircle: null,\n\n\t\tnode: null,\n\t};\n\n\tconst sg = new THREE.SphereGeometry(1, 32, 32);\n\tconst sm = new THREE.MeshNormalMaterial();\n\n\t{\n\t\tconst label = new TextSprite(\"\");\n\n\t\tlabel.setTextColor({r: 140, g: 250, b: 140, a: 1.0});\n\t\tlabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0});\n\t\tlabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0});\n\t\tlabel.fontsize = 16;\n\t\tlabel.material.depthTest = false;\n\t\tlabel.material.opacity = 1;\n\n\t\tazimuth.label = label;\n\t}\n\n\tazimuth.center = new THREE.Mesh(sg, sm);\n\tazimuth.target = new THREE.Mesh(sg, sm);\n\tazimuth.north = new THREE.Mesh(sg, sm);\n\tazimuth.centerToNorth = createLine();\n\tazimuth.centerToTarget = createLine();\n\tazimuth.centerToTargetground = createLine();\n\tazimuth.targetgroundToTarget = createLine();\n\tazimuth.circle = createCircle();\n\n\tazimuth.node = new THREE.Object3D();\n\tazimuth.node.add(\n\t\tazimuth.centerToNorth,\n\t\tazimuth.centerToTarget,\n\t\tazimuth.centerToTargetground,\n\t\tazimuth.targetgroundToTarget,\n\t\tazimuth.circle,\n\t\tazimuth.label,\n\t\tazimuth.center,\n\t\tazimuth.target,\n\t\tazimuth.north,\n\t);\n\n\treturn azimuth;\n}\n\nexport class Measure extends THREE.Object3D {\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1;\n\n\t\tthis.name = 'Measure_' + this.constructor.counter;\n\t\tthis.points = [];\n\t\tthis._showDistances = true;\n\t\tthis._showCoordinates = false;\n\t\tthis._showArea = false;\n\t\tthis._closed = true;\n\t\tthis._showAngles = false;\n\t\tthis._showCircle = false;\n\t\tthis._showHeight = false;\n\t\tthis._showEdges = true;\n\t\tthis._showAzimuth = false;\n\t\tthis.maxMarkers = Number.MAX_SAFE_INTEGER;\n\n\t\tthis.sphereGeometry = new THREE.SphereGeometry(0.4, 10, 10);\n\t\tthis.color = new THREE.Color(0xff0000);\n\n\t\tthis.spheres = [];\n\t\tthis.edges = [];\n\t\tthis.sphereLabels = [];\n\t\tthis.edgeLabels = [];\n\t\tthis.angleLabels = [];\n\t\tthis.coordinateLabels = [];\n\n\t\tthis.heightEdge = createHeightLine();\n\t\tthis.heightLabel = createHeightLabel();\n\t\tthis.areaLabel = createAreaLabel();\n\t\tthis.circleRadiusLabel = createCircleRadiusLabel();\n\t\tthis.circleRadiusLine = createCircleRadiusLine();\n\t\tthis.circleLine = createCircleLine();\n\t\tthis.circleCenter = createCircleCenter();\n\n\t\tthis.azimuth = createAzimuth();\n\n\t\tthis.add(this.heightEdge);\n\t\tthis.add(this.heightLabel);\n\t\tthis.add(this.areaLabel);\n\t\tthis.add(this.circleRadiusLabel);\n\t\tthis.add(this.circleRadiusLine);\n\t\tthis.add(this.circleLine);\n\t\tthis.add(this.circleCenter);\n\n\t\tthis.add(this.azimuth.node);\n\n\t}\n\n\tcreateSphereMaterial () {\n\t\tlet sphereMaterial = new THREE.MeshLambertMaterial({\n\t\t\t//shading: THREE.SmoothShading,\n\t\t\tcolor: this.color,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false}\n\t\t);\n\n\t\treturn sphereMaterial;\n\t};\n\n\taddMarker (point) {\n\t\tif (point instanceof THREE.Vector3) {\n\t\t\tpoint = {position: point};\n\t\t}else if(point instanceof Array){\n\t\t\tpoint = {position: new THREE.Vector3(...point)};\n\t\t}\n\t\tthis.points.push(point);\n\n\t\t// sphere\n\t\tlet sphere = new THREE.Mesh(this.sphereGeometry, this.createSphereMaterial());\n\n\t\tthis.add(sphere);\n\t\tthis.spheres.push(sphere);\n\n\t\t{ // edges\n\t\t\tlet lineGeometry = new THREE.LineGeometry();\n\t\t\tlineGeometry.setPositions( [\n\t\t\t\t\t0, 0, 0,\n\t\t\t\t\t0, 0, 0,\n\t\t\t]);\n\n\t\t\tlet lineMaterial = new THREE.LineMaterial({\n\t\t\t\tcolor: 0xff0000, \n\t\t\t\tlinewidth: 2, \n\t\t\t\tresolution: new THREE.Vector2(1000, 1000),\n\t\t\t});\n\n\t\t\tlineMaterial.depthTest = false;\n\n\t\t\tlet edge = new THREE.Line2(lineGeometry, lineMaterial);\n\t\t\tedge.visible = true;\n\n\t\t\tthis.add(edge);\n\t\t\tthis.edges.push(edge);\n\t\t}\n\n\t\t{ // edge labels\n\t\t\tlet edgeLabel = new TextSprite();\n\t\t\tedgeLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0});\n\t\t\tedgeLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0});\n\t\t\tedgeLabel.material.depthTest = false;\n\t\t\tedgeLabel.visible = false;\n\t\t\tedgeLabel.fontsize = 16;\n\t\t\tthis.edgeLabels.push(edgeLabel);\n\t\t\tthis.add(edgeLabel);\n\t\t}\n\n\t\t{ // angle labels\n\t\t\tlet angleLabel = new TextSprite();\n\t\t\tangleLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0});\n\t\t\tangleLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0});\n\t\t\tangleLabel.fontsize = 16;\n\t\t\tangleLabel.material.depthTest = false;\n\t\t\tangleLabel.material.opacity = 1;\n\t\t\tangleLabel.visible = false;\n\t\t\tthis.angleLabels.push(angleLabel);\n\t\t\tthis.add(angleLabel);\n\t\t}\n\n\t\t{ // coordinate labels\n\t\t\tlet coordinateLabel = new TextSprite();\n\t\t\tcoordinateLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0});\n\t\t\tcoordinateLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0});\n\t\t\tcoordinateLabel.fontsize = 16;\n\t\t\tcoordinateLabel.material.depthTest = false;\n\t\t\tcoordinateLabel.material.opacity = 1;\n\t\t\tcoordinateLabel.visible = false;\n\t\t\tthis.coordinateLabels.push(coordinateLabel);\n\t\t\tthis.add(coordinateLabel);\n\t\t}\n\n\t\t{ // Event Listeners\n\t\t\tlet drag = (e) => {\n\t\t\t\tlet I = Utils.getMousePointCloudIntersection(\n\t\t\t\t\te.drag.end, \n\t\t\t\t\te.viewer.scene.getActiveCamera(), \n\t\t\t\t\te.viewer, \n\t\t\t\t\te.viewer.scene.pointclouds,\n\t\t\t\t\t{pickClipped: true});\n\n\t\t\t\tif (I) {\n\t\t\t\t\tlet i = this.spheres.indexOf(e.drag.object);\n\t\t\t\t\tif (i !== -1) {\n\t\t\t\t\t\tlet point = this.points[i];\n\t\t\t\t\t\tfor (let key of Object.keys(I.point).filter(e => e !== 'position')) {\n\t\t\t\t\t\t\tpoint[key] = I.point[key];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.setPosition(i, I.location);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tlet drop = e => {\n\t\t\t\tlet i = this.spheres.indexOf(e.drag.object);\n\t\t\t\tif (i !== -1) {\n\t\t\t\t\tthis.dispatchEvent({\n\t\t\t\t\t\t'type': 'marker_dropped',\n\t\t\t\t\t\t'measurement': this,\n\t\t\t\t\t\t'index': i\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tlet mouseover = (e) => e.object.material.emissive.setHex(0x888888);\n\t\t\tlet mouseleave = (e) => e.object.material.emissive.setHex(0x000000);\n\n\t\t\tsphere.addEventListener('drag', drag);\n\t\t\tsphere.addEventListener('drop', drop);\n\t\t\tsphere.addEventListener('mouseover', mouseover);\n\t\t\tsphere.addEventListener('mouseleave', mouseleave);\n\t\t}\n\n\t\tlet event = {\n\t\t\ttype: 'marker_added',\n\t\t\tmeasurement: this,\n\t\t\tsphere: sphere\n\t\t};\n\t\tthis.dispatchEvent(event);\n\n\t\tthis.setMarker(this.points.length - 1, point);\n\t};\n\n\tremoveMarker (index) {\n\t\tthis.points.splice(index, 1);\n\n\t\tthis.remove(this.spheres[index]);\n\n\t\tlet edgeIndex = (index === 0) ? 0 : (index - 1);\n\t\tthis.remove(this.edges[edgeIndex]);\n\t\tthis.edges.splice(edgeIndex, 1);\n\n\t\tthis.remove(this.edgeLabels[edgeIndex]);\n\t\tthis.edgeLabels.splice(edgeIndex, 1);\n\t\tthis.coordinateLabels.splice(index, 1);\n\n\t\tthis.remove(this.angleLabels[index]);\n\t\tthis.angleLabels.splice(index, 1);\n\n\t\tthis.spheres.splice(index, 1);\n\n\t\tthis.update();\n\n\t\tthis.dispatchEvent({type: 'marker_removed', measurement: this});\n\t};\n\n\tsetMarker (index, point) {\n\t\tthis.points[index] = point;\n\n\t\tlet event = {\n\t\t\ttype: 'marker_moved',\n\t\t\tmeasure:\tthis,\n\t\t\tindex:\tindex,\n\t\t\tposition: point.position.clone()\n\t\t};\n\t\tthis.dispatchEvent(event);\n\n\t\tthis.update();\n\t}\n\n\tsetPosition (index, position) {\n\t\tlet point = this.points[index];\n\t\tpoint.position.copy(position);\n\n\t\tlet event = {\n\t\t\ttype: 'marker_moved',\n\t\t\tmeasure:\tthis,\n\t\t\tindex:\tindex,\n\t\t\tposition: position.clone()\n\t\t};\n\t\tthis.dispatchEvent(event);\n\n\t\tthis.update();\n\t};\n\n\tgetArea () {\n\t\tlet area = 0;\n\t\tlet j = this.points.length - 1;\n\n\t\tfor (let i = 0; i < this.points.length; i++) {\n\t\t\tlet p1 = this.points[i].position;\n\t\t\tlet p2 = this.points[j].position;\n\t\t\tarea += (p2.x + p1.x) * (p1.y - p2.y);\n\t\t\tj = i;\n\t\t}\n\n\t\treturn Math.abs(area / 2);\n\t};\n\n\tgetTotalDistance () {\n\t\tif (this.points.length === 0) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tlet distance = 0;\n\n\t\tfor (let i = 1; i < this.points.length; i++) {\n\t\t\tlet prev = this.points[i - 1].position;\n\t\t\tlet curr = this.points[i].position;\n\t\t\tlet d = prev.distanceTo(curr);\n\n\t\t\tdistance += d;\n\t\t}\n\n\t\tif (this.closed && this.points.length > 1) {\n\t\t\tlet first = this.points[0].position;\n\t\t\tlet last = this.points[this.points.length - 1].position;\n\t\t\tlet d = last.distanceTo(first);\n\n\t\t\tdistance += d;\n\t\t}\n\n\t\treturn distance;\n\t}\n\n\tgetAngleBetweenLines (cornerPoint, point1, point2) {\n\t\tlet v1 = new THREE.Vector3().subVectors(point1.position, cornerPoint.position);\n\t\tlet v2 = new THREE.Vector3().subVectors(point2.position, cornerPoint.position);\n\n\t\t// avoid the error printed by threejs if denominator is 0\n\t\tconst denominator = Math.sqrt( v1.lengthSq() * v2.lengthSq() );\n\t\tif(denominator === 0){\n\t\t\treturn 0;\n\t\t}else{\n\t\t\treturn v1.angleTo(v2);\n\t\t}\n\t};\n\n\tgetAngle (index) {\n\t\tif (this.points.length < 3 || index >= this.points.length) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tlet previous = (index === 0) ? this.points[this.points.length - 1] : this.points[index - 1];\n\t\tlet point = this.points[index];\n\t\tlet next = this.points[(index + 1) % (this.points.length)];\n\n\t\treturn this.getAngleBetweenLines(point, previous, next);\n\t}\n\n\t// updateAzimuth(){\n\t// \t// if(this.points.length !== 2){\n\t// \t// \treturn;\n\t// \t// }\n\n\t// \t// const azimuth = this.azimuth;\n\n\t// \t// const [p0, p1] = this.points;\n\n\t// \t// const r = p0.position.distanceTo(p1.position);\n\t\t\n\t// }\n\n\tupdate () {\n\t\tif (this.points.length === 0) {\n\t\t\treturn;\n\t\t} else if (this.points.length === 1) {\n\t\t\tlet point = this.points[0];\n\t\t\tlet position = point.position;\n\t\t\tthis.spheres[0].position.copy(position);\n\n\t\t\t{ // coordinate labels\n\t\t\t\tlet coordinateLabel = this.coordinateLabels[0];\n\t\t\t\t\n\t\t\t\tlet msg = position.toArray().map(p => Utils.addCommas(p.toFixed(2))).join(\" / \");\n\t\t\t\tcoordinateLabel.setText(msg);\n\n\t\t\t\tcoordinateLabel.visible = this.showCoordinates;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tlet lastIndex = this.points.length - 1;\n\n\t\tlet centroid = new THREE.Vector3();\n\t\tfor (let i = 0; i <= lastIndex; i++) {\n\t\t\tlet point = this.points[i];\n\t\t\tcentroid.add(point.position);\n\t\t}\n\t\tcentroid.divideScalar(this.points.length);\n\n\t\tfor (let i = 0; i <= lastIndex; i++) {\n\t\t\tlet index = i;\n\t\t\tlet nextIndex = (i + 1 > lastIndex) ? 0 : i + 1;\n\t\t\tlet previousIndex = (i === 0) ? lastIndex : i - 1;\n\n\t\t\tlet point = this.points[index];\n\t\t\tlet nextPoint = this.points[nextIndex];\n\t\t\tlet previousPoint = this.points[previousIndex];\n\n\t\t\tlet sphere = this.spheres[index];\n\n\t\t\t// spheres\n\t\t\tsphere.position.copy(point.position);\n\t\t\tsphere.material.color = this.color;\n\n\t\t\t{ // edges\n\t\t\t\tlet edge = this.edges[index];\n\n\t\t\t\tedge.material.color = this.color;\n\n\t\t\t\tedge.position.copy(point.position);\n\n\t\t\t\tedge.geometry.setPositions([\n\t\t\t\t\t0, 0, 0,\n\t\t\t\t\t...nextPoint.position.clone().sub(point.position).toArray(),\n\t\t\t\t]);\n\n\t\t\t\tedge.geometry.verticesNeedUpdate = true;\n\t\t\t\tedge.geometry.computeBoundingSphere();\n\t\t\t\tedge.computeLineDistances();\n\t\t\t\tedge.visible = index < lastIndex || this.closed;\n\t\t\t\t\n\t\t\t\tif(!this.showEdges){\n\t\t\t\t\tedge.visible = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t{ // edge labels\n\t\t\t\tlet edgeLabel = this.edgeLabels[i];\n\n\t\t\t\tlet center = new THREE.Vector3().add(point.position);\n\t\t\t\tcenter.add(nextPoint.position);\n\t\t\t\tcenter = center.multiplyScalar(0.5);\n\t\t\t\tlet distance = point.position.distanceTo(nextPoint.position);\n\n\t\t\t\tedgeLabel.position.copy(center);\n\n\t\t\t\tlet suffix = \"\";\n\t\t\t\tif(this.lengthUnit != null && this.lengthUnitDisplay != null){\n\t\t\t\t\tdistance = distance / this.lengthUnit.unitspermeter * this.lengthUnitDisplay.unitspermeter; //convert to meters then to the display unit\n\t\t\t\t\tsuffix = this.lengthUnitDisplay.code;\n\t\t\t\t}\n\n\t\t\t\tlet txtLength = Utils.addCommas(distance.toFixed(2));\n\t\t\t\tedgeLabel.setText(`${txtLength} ${suffix}`);\n\t\t\t\tedgeLabel.visible = this.showDistances && (index < lastIndex || this.closed) && this.points.length >= 2 && distance > 0;\n\t\t\t}\n\n\t\t\t{ // angle labels\n\t\t\t\tlet angleLabel = this.angleLabels[i];\n\t\t\t\tlet angle = this.getAngleBetweenLines(point, previousPoint, nextPoint);\n\n\t\t\t\tlet dir = nextPoint.position.clone().sub(previousPoint.position);\n\t\t\t\tdir.multiplyScalar(0.5);\n\t\t\t\tdir = previousPoint.position.clone().add(dir).sub(point.position).normalize();\n\n\t\t\t\tlet dist = Math.min(point.position.distanceTo(previousPoint.position), point.position.distanceTo(nextPoint.position));\n\t\t\t\tdist = dist / 9;\n\n\t\t\t\tlet labelPos = point.position.clone().add(dir.multiplyScalar(dist));\n\t\t\t\tangleLabel.position.copy(labelPos);\n\n\t\t\t\tlet msg = Utils.addCommas((angle * (180.0 / Math.PI)).toFixed(1)) + '\\u00B0';\n\t\t\t\tangleLabel.setText(msg);\n\n\t\t\t\tangleLabel.visible = this.showAngles && (index < lastIndex || this.closed) && this.points.length >= 3 && angle > 0;\n\t\t\t}\n\t\t}\n\n\t\t{ // update height stuff\n\t\t\tlet heightEdge = this.heightEdge;\n\t\t\theightEdge.visible = this.showHeight;\n\t\t\tthis.heightLabel.visible = this.showHeight;\n\n\t\t\tif (this.showHeight) {\n\t\t\t\tlet sorted = this.points.slice().sort((a, b) => a.position.z - b.position.z);\n\t\t\t\tlet lowPoint = sorted[0].position.clone();\n\t\t\t\tlet highPoint = sorted[sorted.length - 1].position.clone();\n\t\t\t\tlet min = lowPoint.z;\n\t\t\t\tlet max = highPoint.z;\n\t\t\t\tlet height = max - min;\n\n\t\t\t\tlet start = new THREE.Vector3(highPoint.x, highPoint.y, min);\n\t\t\t\tlet end = new THREE.Vector3(highPoint.x, highPoint.y, max);\n\n\t\t\t\theightEdge.position.copy(lowPoint);\n\n\t\t\t\theightEdge.geometry.setPositions([\n\t\t\t\t\t0, 0, 0,\n\t\t\t\t\t...start.clone().sub(lowPoint).toArray(),\n\t\t\t\t\t...start.clone().sub(lowPoint).toArray(),\n\t\t\t\t\t...end.clone().sub(lowPoint).toArray(),\n\t\t\t\t]);\n\n\t\t\t\theightEdge.geometry.verticesNeedUpdate = true;\n\t\t\t\t// heightEdge.geometry.computeLineDistances();\n\t\t\t\t// heightEdge.geometry.lineDistancesNeedUpdate = true;\n\t\t\t\theightEdge.geometry.computeBoundingSphere();\n\t\t\t\theightEdge.computeLineDistances();\n\n\t\t\t\t// heightEdge.material.dashSize = height / 40;\n\t\t\t\t// heightEdge.material.gapSize = height / 40;\n\n\t\t\t\tlet heightLabelPosition = start.clone().add(end).multiplyScalar(0.5);\n\t\t\t\tthis.heightLabel.position.copy(heightLabelPosition);\n\n\t\t\t\tlet suffix = \"\";\n\t\t\t\tif(this.lengthUnit != null && this.lengthUnitDisplay != null){\n\t\t\t\t\theight = height / this.lengthUnit.unitspermeter * this.lengthUnitDisplay.unitspermeter; //convert to meters then to the display unit\n\t\t\t\t\tsuffix = this.lengthUnitDisplay.code;\n\t\t\t\t}\n\n\t\t\t\tlet txtHeight = Utils.addCommas(height.toFixed(2));\n\t\t\t\tlet msg = `${txtHeight} ${suffix}`;\n\t\t\t\tthis.heightLabel.setText(msg);\n\t\t\t}\n\t\t}\n\n\t\t{ // update circle stuff\n\t\t\tconst circleRadiusLabel = this.circleRadiusLabel;\n\t\t\tconst circleRadiusLine = this.circleRadiusLine;\n\t\t\tconst circleLine = this.circleLine;\n\t\t\tconst circleCenter = this.circleCenter;\n\n\t\t\tconst circleOkay = this.points.length === 3;\n\n\t\t\tcircleRadiusLabel.visible = this.showCircle && circleOkay;\n\t\t\tcircleRadiusLine.visible = this.showCircle && circleOkay;\n\t\t\tcircleLine.visible = this.showCircle && circleOkay;\n\t\t\tcircleCenter.visible = this.showCircle && circleOkay;\n\n\t\t\tif(this.showCircle && circleOkay){\n\n\t\t\t\tconst A = this.points[0].position;\n\t\t\t\tconst B = this.points[1].position;\n\t\t\t\tconst C = this.points[2].position;\n\t\t\t\tconst AB = B.clone().sub(A);\n\t\t\t\tconst AC = C.clone().sub(A);\n\t\t\t\tconst N = AC.clone().cross(AB).normalize();\n\n\t\t\t\tconst center = Potree.Utils.computeCircleCenter(A, B, C);\n\t\t\t\tconst radius = center.distanceTo(A);\n\n\n\t\t\t\tconst scale = radius / 20;\n\t\t\t\tcircleCenter.position.copy(center);\n\t\t\t\tcircleCenter.scale.set(scale, scale, scale);\n\n\t\t\t\t//circleRadiusLine.geometry.vertices[0].set(0, 0, 0);\n\t\t\t\t//circleRadiusLine.geometry.vertices[1].copy(B.clone().sub(center));\n\n\t\t\t\tcircleRadiusLine.geometry.setPositions( [\n\t\t\t\t\t0, 0, 0,\n\t\t\t\t\t...B.clone().sub(center).toArray()\n\t\t\t\t] );\n\n\t\t\t\tcircleRadiusLine.geometry.verticesNeedUpdate = true;\n\t\t\t\tcircleRadiusLine.geometry.computeBoundingSphere();\n\t\t\t\tcircleRadiusLine.position.copy(center);\n\t\t\t\tcircleRadiusLine.computeLineDistances();\n\n\t\t\t\tconst target = center.clone().add(N);\n\t\t\t\tcircleLine.position.copy(center);\n\t\t\t\tcircleLine.scale.set(radius, radius, radius);\n\t\t\t\tcircleLine.lookAt(target);\n\t\t\t\t\n\t\t\t\tcircleRadiusLabel.visible = true;\n\t\t\t\tcircleRadiusLabel.position.copy(center.clone().add(B).multiplyScalar(0.5));\n\t\t\t\tcircleRadiusLabel.setText(`${radius.toFixed(3)}`);\n\n\t\t\t}\n\t\t}\n\n\t\t{ // update area label\n\t\t\tthis.areaLabel.position.copy(centroid);\n\t\t\tthis.areaLabel.visible = this.showArea && this.points.length >= 3;\n\t\t\tlet area = this.getArea();\n\n\t\t\tlet suffix = \"\";\n\t\t\tif(this.lengthUnit != null && this.lengthUnitDisplay != null){\n\t\t\t\tarea = area / Math.pow(this.lengthUnit.unitspermeter, 2) * Math.pow(this.lengthUnitDisplay.unitspermeter, 2); //convert to square meters then to the square display unit\n\t\t\t\tsuffix = this.lengthUnitDisplay.code;\n\t\t\t}\n\n\t\t\tlet txtArea = Utils.addCommas(area.toFixed(1));\n\t\t\tlet msg = `${txtArea} ${suffix}\\u00B2`;\n\t\t\tthis.areaLabel.setText(msg);\n\t\t}\n\n\t\t// this.updateAzimuth();\n\t};\n\n\traycast (raycaster, intersects) {\n\t\tfor (let i = 0; i < this.points.length; i++) {\n\t\t\tlet sphere = this.spheres[i];\n\n\t\t\tsphere.raycast(raycaster, intersects);\n\t\t}\n\n\t\t// recalculate distances because they are not necessarely correct\n\t\t// for scaled objects.\n\t\t// see https://github.com/mrdoob/three.js/issues/5827\n\t\t// TODO: remove this once the bug has been fixed\n\t\tfor (let i = 0; i < intersects.length; i++) {\n\t\t\tlet I = intersects[i];\n\t\t\tI.distance = raycaster.ray.origin.distanceTo(I.point);\n\t\t}\n\t\tintersects.sort(function (a, b) { return a.distance - b.distance; });\n\t};\n\n\tget showCoordinates () {\n\t\treturn this._showCoordinates;\n\t}\n\n\tset showCoordinates (value) {\n\t\tthis._showCoordinates = value;\n\t\tthis.update();\n\t}\n\n\tget showAngles () {\n\t\treturn this._showAngles;\n\t}\n\n\tset showAngles (value) {\n\t\tthis._showAngles = value;\n\t\tthis.update();\n\t}\n\n\tget showCircle () {\n\t\treturn this._showCircle;\n\t}\n\n\tset showCircle (value) {\n\t\tthis._showCircle = value;\n\t\tthis.update();\n\t}\n\n\tget showAzimuth(){\n\t\treturn this._showAzimuth;\n\t}\n\n\tset showAzimuth(value){\n\t\tthis._showAzimuth = value;\n\t\tthis.update();\n\t}\n\n\tget showEdges () {\n\t\treturn this._showEdges;\n\t}\n\n\tset showEdges (value) {\n\t\tthis._showEdges = value;\n\t\tthis.update();\n\t}\n\n\tget showHeight () {\n\t\treturn this._showHeight;\n\t}\n\n\tset showHeight (value) {\n\t\tthis._showHeight = value;\n\t\tthis.update();\n\t}\n\n\tget showArea () {\n\t\treturn this._showArea;\n\t}\n\n\tset showArea (value) {\n\t\tthis._showArea = value;\n\t\tthis.update();\n\t}\n\n\tget closed () {\n\t\treturn this._closed;\n\t}\n\n\tset closed (value) {\n\t\tthis._closed = value;\n\t\tthis.update();\n\t}\n\n\tget showDistances () {\n\t\treturn this._showDistances;\n\t}\n\n\tset showDistances (value) {\n\t\tthis._showDistances = value;\n\t\tthis.update();\n\t}\n\n}\n","\nexport class PolygonClipVolume extends THREE.Object3D{\n\t\n\tconstructor(camera){\n\t\tsuper();\n\n\t\tthis.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1;\n\t\tthis.name = \"polygon_clip_volume_\" + this.constructor.counter;\n\n\t\tthis.camera = camera.clone();\n\t\tthis.camera.rotation.set(...camera.rotation.toArray()); // [r85] workaround because camera.clone() doesn't work on rotation\n\t\tthis.camera.rotation.order = camera.rotation.order;\n\t\tthis.camera.updateMatrixWorld();\n\t\tthis.camera.updateProjectionMatrix();\n\t\tthis.camera.matrixWorldInverse.getInverse(this.camera.matrixWorld);\n\n\t\tthis.viewMatrix = this.camera.matrixWorldInverse.clone();\n\t\tthis.projMatrix = this.camera.projectionMatrix.clone();\n\n\t\t// projected markers\n\t\tthis.markers = [];\n\t\tthis.initialized = false;\n\t}\n\n\taddMarker() {\n\n\t\tlet marker = new THREE.Mesh();\n\n\t\tlet cancel;\n\n\t\tlet drag = e => {\n\t\t\tlet size = e.viewer.renderer.getSize(new THREE.Vector2());\n\t\t\tlet projectedPos = new THREE.Vector3(\n\t\t\t\t2.0 * (e.drag.end.x / size.width) - 1.0,\n\t\t\t\t-2.0 * (e.drag.end.y / size.height) + 1.0,\n\t\t\t\t0\n\t\t\t);\n\n\t\t\tmarker.position.copy(projectedPos);\n\t\t};\n\t\t\n\t\tlet drop = e => {\t\n\t\t\tcancel();\n\t\t};\n\t\t\n\t\tcancel = e => {\n\t\t\tmarker.removeEventListener(\"drag\", drag);\n\t\t\tmarker.removeEventListener(\"drop\", drop);\n\t\t};\n\t\t\n\t\tmarker.addEventListener(\"drag\", drag);\n\t\tmarker.addEventListener(\"drop\", drop);\n\n\n\t\tthis.markers.push(marker);\n\t}\n\n\tremoveLastMarker() {\n\t\tif(this.markers.length > 0) {\n\t\t\tthis.markers.splice(this.markers.length - 1, 1);\n\t\t}\n\t}\n\n};","\nimport {XHRFactory} from \"./XHRFactory.js\";\nimport {Volume} from \"./utils/Volume.js\";\nimport {Profile} from \"./utils/Profile.js\";\nimport {Measure} from \"./utils/Measure.js\";\nimport {PolygonClipVolume} from \"./utils/PolygonClipVolume.js\";\n\nexport class Utils {\n\tstatic async loadShapefileFeatures (file, callback) {\n\t\tlet features = [];\n\n\t\tlet handleFinish = () => {\n\t\t\tcallback(features);\n\t\t};\n\n\t\tlet source = await shapefile.open(file);\n\n\t\twhile(true){\n\t\t\tlet result = await source.read();\n\n\t\t\tif (result.done) {\n\t\t\t\thandleFinish();\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (result.value && result.value.type === 'Feature' && result.value.geometry !== undefined) {\n\t\t\t\tfeatures.push(result.value);\n\t\t\t}\n\t\t}\n\n\t}\n\n\tstatic toString (value) {\n\t\tif (value instanceof THREE.Vector3) {\n\t\t\treturn value.x.toFixed(2) + ', ' + value.y.toFixed(2) + ', ' + value.z.toFixed(2);\n\t\t} else {\n\t\t\treturn '' + value + '';\n\t\t}\n\t}\n\n\tstatic normalizeURL (url) {\n\t\tlet u = new URL(url);\n\n\t\treturn u.protocol + '//' + u.hostname + u.pathname.replace(/\\/+/g, '/');\n\t};\n\n\tstatic pathExists (url) {\n\t\tlet req = XHRFactory.createXMLHttpRequest();\n\t\treq.open('GET', url, false);\n\t\treq.send(null);\n\t\tif (req.status !== 200) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t};\n\n\tstatic debugSphere(parent, position, scale, color){\n\t\tlet geometry = new THREE.SphereGeometry(1, 8, 8);\n\t\tlet material;\n\n\t\tif(color !== undefined){\n\t\t\tmaterial = new THREE.MeshBasicMaterial({color: color});\n\t\t}else{\n\t\t\tmaterial = new THREE.MeshNormalMaterial();\n\t\t}\n\t\tlet sphere = new THREE.Mesh(geometry, material);\n\t\tsphere.position.copy(position);\n\t\tsphere.scale.set(scale, scale, scale);\n\t\tparent.add(sphere);\n\t}\n\n\tstatic debugLine(parent, start, end, color){\n\n\t\tlet material = new THREE.LineBasicMaterial({ color: color }); \n\t\tlet geometry = new THREE.Geometry();\n\n\t\tconst p1 = new THREE.Vector3(0, 0, 0);\n\t\tconst p2 = end.clone().sub(start);\n\n\t\tgeometry.vertices.push(p1, p2);\n\n\t\tlet tl = new THREE.Line( geometry, material );\n\t\ttl.position.copy(start);\n\n\t\tparent.add(tl);\n\t}\n\n\tstatic debugCircle(parent, center, radius, normal, color){\n\t\tlet material = new THREE.LineBasicMaterial({ color: color });\n\n\t\tlet geometry = new THREE.Geometry();\n\n\t\tlet n = 32;\n\t\tfor(let i = 0; i <= n; i++){\n\t\t\tlet u0 = 2 * Math.PI * (i / n);\n\t\t\tlet u1 = 2 * Math.PI * (i + 1) / n;\n\n\t\t\tlet p0 = new THREE.Vector3(\n\t\t\t\tMath.cos(u0), \n\t\t\t\tMath.sin(u0), \n\t\t\t\t0\n\t\t\t);\n\n\t\t\tlet p1 = new THREE.Vector3(\n\t\t\t\tMath.cos(u1), \n\t\t\t\tMath.sin(u1), \n\t\t\t\t0\n\t\t\t);\n\n\t\t\tgeometry.vertices.push(p0, p1); \n\t\t}\n\n\t\tlet tl = new THREE.Line( geometry, material ); \n\t\ttl.position.copy(center);\n\t\ttl.scale.set(radius, radius, radius);\n\n\t\tparent.add(tl);\n\t}\n\n\tstatic debugBox(parent, box, transform = new THREE.Matrix4(), color = 0xFFFF00){\n\t\t\n\t\tlet vertices = [\n\t\t\t[box.min.x, box.min.y, box.min.z],\n\t\t\t[box.min.x, box.min.y, box.max.z],\n\t\t\t[box.min.x, box.max.y, box.min.z],\n\t\t\t[box.min.x, box.max.y, box.max.z],\n\n\t\t\t[box.max.x, box.min.y, box.min.z],\n\t\t\t[box.max.x, box.min.y, box.max.z],\n\t\t\t[box.max.x, box.max.y, box.min.z],\n\t\t\t[box.max.x, box.max.y, box.max.z],\n\t\t].map(v => new THREE.Vector3(...v));\n\n\t\tlet edges = [\n\t\t\t[0, 4], [4, 5], [5, 1], [1, 0],\n\t\t\t[2, 6], [6, 7], [7, 3], [3, 2],\n\t\t\t[0, 2], [4, 6], [5, 7], [1, 3]\n\t\t];\n\n\t\tlet center = box.getCenter(new THREE.Vector3());\n\n\t\tlet centroids = [\n\t\t\t{position: [box.min.x, center.y, center.z], color: 0xFF0000},\n\t\t\t{position: [box.max.x, center.y, center.z], color: 0x880000},\n\n\t\t\t{position: [center.x, box.min.y, center.z], color: 0x00FF00},\n\t\t\t{position: [center.x, box.max.y, center.z], color: 0x008800},\n\n\t\t\t{position: [center.x, center.y, box.min.z], color: 0x0000FF},\n\t\t\t{position: [center.x, center.y, box.max.z], color: 0x000088},\n\t\t];\n\n\t\tfor(let vertex of vertices){\n\t\t\tlet pos = vertex.clone().applyMatrix4(transform);\n\n\t\t\tUtils.debugSphere(parent, pos, 0.1, 0xFF0000);\n\t\t}\n\n\t\tfor(let edge of edges){\n\t\t\tlet start = vertices[edge[0]].clone().applyMatrix4(transform);\n\t\t\tlet end = vertices[edge[1]].clone().applyMatrix4(transform);\n\n\t\t\tUtils.debugLine(parent, start, end, color);\n\t\t}\n\n\t\tfor(let centroid of centroids){\n\t\t\tlet pos = new THREE.Vector3(...centroid.position).applyMatrix4(transform);\n\n\t\t\tUtils.debugSphere(parent, pos, 0.1, centroid.color);\n\t\t}\n\t}\n\n\tstatic debugPlane(parent, plane, size = 1, color = 0x0000FF){\n\n\t\tlet planehelper = new THREE.PlaneHelper(plane, size, color);\n\n\t\tparent.add(planehelper);\n\n\t}\n\n\t/**\n\t * adapted from mhluska at https://github.com/mrdoob/three.js/issues/1561\n\t */\n\tstatic computeTransformedBoundingBox (box, transform) {\n\t\tlet vertices = [\n\t\t\tnew THREE.Vector3(box.min.x, box.min.y, box.min.z).applyMatrix4(transform),\n\t\t\tnew THREE.Vector3(box.min.x, box.min.y, box.min.z).applyMatrix4(transform),\n\t\t\tnew THREE.Vector3(box.max.x, box.min.y, box.min.z).applyMatrix4(transform),\n\t\t\tnew THREE.Vector3(box.min.x, box.max.y, box.min.z).applyMatrix4(transform),\n\t\t\tnew THREE.Vector3(box.min.x, box.min.y, box.max.z).applyMatrix4(transform),\n\t\t\tnew THREE.Vector3(box.min.x, box.max.y, box.max.z).applyMatrix4(transform),\n\t\t\tnew THREE.Vector3(box.max.x, box.max.y, box.min.z).applyMatrix4(transform),\n\t\t\tnew THREE.Vector3(box.max.x, box.min.y, box.max.z).applyMatrix4(transform),\n\t\t\tnew THREE.Vector3(box.max.x, box.max.y, box.max.z).applyMatrix4(transform)\n\t\t];\n\n\t\tlet boundingBox = new THREE.Box3();\n\t\tboundingBox.setFromPoints(vertices);\n\n\t\treturn boundingBox;\n\t};\n\n\t/**\n\t * add separators to large numbers\n\t *\n\t * @param nStr\n\t * @returns\n\t */\n\tstatic addCommas (nStr) {\n\t\tnStr += '';\n\t\tlet x = nStr.split('.');\n\t\tlet x1 = x[0];\n\t\tlet x2 = x.length > 1 ? '.' + x[1] : '';\n\t\tlet rgx = /(\\d+)(\\d{3})/;\n\t\twhile (rgx.test(x1)) {\n\t\t\tx1 = x1.replace(rgx, '$1' + ',' + '$2');\n\t\t}\n\t\treturn x1 + x2;\n\t};\n\n\tstatic removeCommas (str) {\n\t\treturn str.replace(/,/g, '');\n\t}\n\n\t/**\n\t * create worker from a string\n\t *\n\t * code from http://stackoverflow.com/questions/10343913/how-to-create-a-web-worker-from-a-string\n\t */\n\tstatic createWorker (code) {\n\t\tlet blob = new Blob([code], {type: 'application/javascript'});\n\t\tlet worker = new Worker(URL.createObjectURL(blob));\n\n\t\treturn worker;\n\t};\n\n\tstatic moveTo(scene, endPosition, endTarget){\n\n\t\tlet view = scene.view;\n\t\tlet camera = scene.getActiveCamera();\n\t\tlet animationDuration = 500;\n\t\tlet easing = TWEEN.Easing.Quartic.Out;\n\n\t\t{ // animate camera position\n\t\t\tlet tween = new TWEEN.Tween(view.position).to(endPosition, animationDuration);\n\t\t\ttween.easing(easing);\n\t\t\ttween.start();\n\t\t}\n\n\t\t{ // animate camera target\n\t\t\tlet camTargetDistance = camera.position.distanceTo(endTarget);\n\t\t\tlet target = new THREE.Vector3().addVectors(\n\t\t\t\tcamera.position,\n\t\t\t\tcamera.getWorldDirection(new THREE.Vector3()).clone().multiplyScalar(camTargetDistance)\n\t\t\t);\n\t\t\tlet tween = new TWEEN.Tween(target).to(endTarget, animationDuration);\n\t\t\ttween.easing(easing);\n\t\t\ttween.onUpdate(() => {\n\t\t\t\tview.lookAt(target);\n\t\t\t});\n\t\t\ttween.onComplete(() => {\n\t\t\t\tview.lookAt(target);\n\t\t\t});\n\t\t\ttween.start();\n\t\t}\n\n\t}\n\n\tstatic loadSkybox (path) {\n\t\tlet camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 100000);\n\t\tcamera.up.set(0, 0, 1);\n\t\tlet scene = new THREE.Scene();\n\n\t\tlet format = '.jpg';\n\t\tlet urls = [\n\t\t\tpath + 'px' + format, path + 'nx' + format,\n\t\t\tpath + 'py' + format, path + 'ny' + format,\n\t\t\tpath + 'pz' + format, path + 'nz' + format\n\t\t];\n\n\t\tlet materialArray = [];\n\t\t{\n\t\t\tfor (let i = 0; i < 6; i++) {\n\t\t\t\tlet material = new THREE.MeshBasicMaterial({\n\t\t\t\t\tmap: null,\n\t\t\t\t\tside: THREE.BackSide,\n\t\t\t\t\tdepthTest: false,\n\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\tcolor: 0x424556\n\t\t\t\t});\n\n\t\t\t\tmaterialArray.push(material);\n\n\t\t\t\tlet loader = new THREE.TextureLoader();\n\t\t\t\tloader.load(urls[i],\n\t\t\t\t\tfunction loaded (texture) {\n\t\t\t\t\t\tmaterial.map = texture;\n\t\t\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t\t\tmaterial.color.setHex(0xffffff);\n\t\t\t\t\t}, function progress (xhr) {\n\t\t\t\t\t\t// console.log( (xhr.loaded / xhr.total * 100) + '% loaded' );\n\t\t\t\t\t}, function error (xhr) {\n\t\t\t\t\t\tconsole.log('An error happened', xhr);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tlet skyGeometry = new THREE.CubeGeometry(5000, 5000, 5000);\n\t\tlet skybox = new THREE.Mesh(skyGeometry, materialArray);\n\n\t\tscene.add(skybox);\n\n\t\t// z up\n\t\tscene.rotation.x = Math.PI / 2;\n\n\t\treturn {'camera': camera, 'scene': scene};\n\t};\n\n\tstatic createGrid (width, length, spacing, color) {\n\t\tlet material = new THREE.LineBasicMaterial({\n\t\t\tcolor: color || 0x888888\n\t\t});\n\n\t\tlet geometry = new THREE.Geometry();\n\t\tfor (let i = 0; i <= length; i++) {\n\t\t\tgeometry.vertices.push(new THREE.Vector3(-(spacing * width) / 2, i * spacing - (spacing * length) / 2, 0));\n\t\t\tgeometry.vertices.push(new THREE.Vector3(+(spacing * width) / 2, i * spacing - (spacing * length) / 2, 0));\n\t\t}\n\n\t\tfor (let i = 0; i <= width; i++) {\n\t\t\tgeometry.vertices.push(new THREE.Vector3(i * spacing - (spacing * width) / 2, -(spacing * length) / 2, 0));\n\t\t\tgeometry.vertices.push(new THREE.Vector3(i * spacing - (spacing * width) / 2, +(spacing * length) / 2, 0));\n\t\t}\n\n\t\tlet line = new THREE.LineSegments(geometry, material, THREE.LinePieces);\n\t\tline.receiveShadow = true;\n\t\treturn line;\n\t}\n\n\tstatic createBackgroundTexture (width, height) {\n\t\tfunction gauss (x, y) {\n\t\t\treturn (1 / (2 * Math.PI)) * Math.exp(-(x * x + y * y) / 2);\n\t\t};\n\n\t\t// map.magFilter = THREE.NearestFilter;\n\t\tlet size = width * height;\n\t\tlet data = new Uint8Array(3 * size);\n\n\t\tlet chroma = [1, 1.5, 1.7];\n\t\tlet max = gauss(0, 0);\n\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\tfor (let y = 0; y < height; y++) {\n\t\t\t\tlet u = 2 * (x / width) - 1;\n\t\t\t\tlet v = 2 * (y / height) - 1;\n\n\t\t\t\tlet i = x + width * y;\n\t\t\t\tlet d = gauss(2 * u, 2 * v) / max;\n\t\t\t\tlet r = (Math.random() + Math.random() + Math.random()) / 3;\n\t\t\t\tr = (d * 0.5 + 0.5) * r * 0.03;\n\t\t\t\tr = r * 0.4;\n\n\t\t\t\t// d = Math.pow(d, 0.6);\n\n\t\t\t\tdata[3 * i + 0] = 255 * (d / 15 + 0.05 + r) * chroma[0];\n\t\t\t\tdata[3 * i + 1] = 255 * (d / 15 + 0.05 + r) * chroma[1];\n\t\t\t\tdata[3 * i + 2] = 255 * (d / 15 + 0.05 + r) * chroma[2];\n\t\t\t}\n\t\t}\n\n\t\tlet texture = new THREE.DataTexture(data, width, height, THREE.RGBFormat);\n\t\ttexture.needsUpdate = true;\n\n\t\treturn texture;\n\t}\n\n\tstatic getMousePointCloudIntersection (mouse, camera, viewer, pointclouds, params = {}) {\n\t\t\n\t\tlet renderer = viewer.renderer;\n\t\t\n\t\tlet nmouse = {\n\t\t\tx: (mouse.x / renderer.domElement.clientWidth) * 2 - 1,\n\t\t\ty: -(mouse.y / renderer.domElement.clientHeight) * 2 + 1\n\t\t};\n\n\t\tlet pickParams = {};\n\n\t\tif(params.pickClipped){\n\t\t\tpickParams.pickClipped = params.pickClipped;\n\t\t}\n\n\t\tpickParams.x = mouse.x;\n\t\tpickParams.y = renderer.domElement.clientHeight - mouse.y;\n\n\t\tlet raycaster = new THREE.Raycaster();\n\t\traycaster.setFromCamera(nmouse, camera);\n\t\tlet ray = raycaster.ray;\n\n\t\tlet selectedPointcloud = null;\n\t\tlet closestDistance = Infinity;\n\t\tlet closestIntersection = null;\n\t\tlet closestPoint = null;\n\t\t\n\t\tfor(let pointcloud of pointclouds){\n\t\t\tlet point = pointcloud.pick(viewer, camera, ray, pickParams);\n\t\t\t\n\t\t\tif(!point){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet distance = camera.position.distanceTo(point.position);\n\n\t\t\tif (distance < closestDistance) {\n\t\t\t\tclosestDistance = distance;\n\t\t\t\tselectedPointcloud = pointcloud;\n\t\t\t\tclosestIntersection = point.position;\n\t\t\t\tclosestPoint = point;\n\t\t\t}\n\t\t}\n\n\t\tif (selectedPointcloud) {\n\t\t\treturn {\n\t\t\t\tlocation: closestIntersection,\n\t\t\t\tdistance: closestDistance,\n\t\t\t\tpointcloud: selectedPointcloud,\n\t\t\t\tpoint: closestPoint\n\t\t\t};\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tstatic pixelsArrayToImage (pixels, width, height) {\n\t\tlet canvas = document.createElement('canvas');\n\t\tcanvas.width = width;\n\t\tcanvas.height = height;\n\n\t\tlet context = canvas.getContext('2d');\n\n\t\tpixels = new pixels.constructor(pixels);\n\n\t\tfor (let i = 0; i < pixels.length; i++) {\n\t\t\tpixels[i * 4 + 3] = 255;\n\t\t}\n\n\t\tlet imageData = context.createImageData(width, height);\n\t\timageData.data.set(pixels);\n\t\tcontext.putImageData(imageData, 0, 0);\n\n\t\tlet img = new Image();\n\t\timg.src = canvas.toDataURL();\n\t\t// img.style.transform = \"scaleY(-1)\";\n\n\t\treturn img;\n\t}\n\n\tstatic pixelsArrayToDataUrl(pixels, width, height) {\n\t\tlet canvas = document.createElement('canvas');\n\t\tcanvas.width = width;\n\t\tcanvas.height = height;\n\n\t\tlet context = canvas.getContext('2d');\n\n\t\tpixels = new pixels.constructor(pixels);\n\n\t\tfor (let i = 0; i < pixels.length; i++) {\n\t\t\tpixels[i * 4 + 3] = 255;\n\t\t}\n\n\t\tlet imageData = context.createImageData(width, height);\n\t\timageData.data.set(pixels);\n\t\tcontext.putImageData(imageData, 0, 0);\n\n\t\tlet dataURL = canvas.toDataURL();\n\n\t\treturn dataURL;\n\t}\n\n\tstatic pixelsArrayToCanvas(pixels, width, height){\n\t\tlet canvas = document.createElement('canvas');\n\t\tcanvas.width = width;\n\t\tcanvas.height = height;\n\n\t\tlet context = canvas.getContext('2d');\n\n\t\tpixels = new pixels.constructor(pixels);\n\n\t\t//for (let i = 0; i < pixels.length; i++) {\n\t\t//\tpixels[i * 4 + 3] = 255;\n\t\t//}\n\n\t\t// flip vertically\n\t\tlet bytesPerLine = width * 4;\n\t\tfor(let i = 0; i < parseInt(height / 2); i++){\n\t\t\tlet j = height - i - 1;\n\n\t\t\tlet lineI = pixels.slice(i * bytesPerLine, i * bytesPerLine + bytesPerLine);\n\t\t\tlet lineJ = pixels.slice(j * bytesPerLine, j * bytesPerLine + bytesPerLine);\n\t\t\tpixels.set(lineJ, i * bytesPerLine);\n\t\t\tpixels.set(lineI, j * bytesPerLine);\n\t\t}\n\n\t\tlet imageData = context.createImageData(width, height);\n\t\timageData.data.set(pixels);\n\t\tcontext.putImageData(imageData, 0, 0);\n\n\t\treturn canvas;\n\t}\n\n\tstatic removeListeners(dispatcher, type){\n\t\tif (dispatcher._listeners === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (dispatcher._listeners[ type ]) {\n\t\t\tdelete dispatcher._listeners[ type ];\n\t\t}\n\t}\n\n\tstatic mouseToRay(mouse, camera, width, height){\n\n\t\tlet normalizedMouse = {\n\t\t\tx: (mouse.x / width) * 2 - 1,\n\t\t\ty: -(mouse.y / height) * 2 + 1\n\t\t};\n\n\t\tlet vector = new THREE.Vector3(normalizedMouse.x, normalizedMouse.y, 0.5);\n\t\tlet origin = camera.position.clone();\n\t\tvector.unproject(camera);\n\t\tlet direction = new THREE.Vector3().subVectors(vector, origin).normalize();\n\n\t\tlet ray = new THREE.Ray(origin, direction);\n\n\t\treturn ray;\n\t}\n\n\tstatic projectedRadius(radius, camera, distance, screenWidth, screenHeight){\n\t\tif(camera instanceof THREE.OrthographicCamera){\n\t\t\treturn Utils.projectedRadiusOrtho(radius, camera.projectionMatrix, screenWidth, screenHeight);\n\t\t}else if(camera instanceof THREE.PerspectiveCamera){\n\t\t\treturn Utils.projectedRadiusPerspective(radius, camera.fov * Math.PI / 180, distance, screenHeight);\n\t\t}else{\n\t\t\tthrow new Error(\"invalid parameters\");\n\t\t}\n\t}\n\n\tstatic projectedRadiusPerspective(radius, fov, distance, screenHeight) {\n\t\tlet projFactor = (1 / Math.tan(fov / 2)) / distance;\n\t\tprojFactor = projFactor * screenHeight / 2;\n\n\t\treturn radius * projFactor;\n\t}\n\n\tstatic projectedRadiusOrtho(radius, proj, screenWidth, screenHeight) {\n\t\tlet p1 = new THREE.Vector4(0);\n\t\tlet p2 = new THREE.Vector4(radius);\n\n\t\tp1.applyMatrix4(proj);\n\t\tp2.applyMatrix4(proj);\n\t\tp1 = new THREE.Vector3(p1.x, p1.y, p1.z);\n\t\tp2 = new THREE.Vector3(p2.x, p2.y, p2.z);\n\t\tp1.x = (p1.x + 1.0) * 0.5 * screenWidth;\n\t\tp1.y = (p1.y + 1.0) * 0.5 * screenHeight;\n\t\tp2.x = (p2.x + 1.0) * 0.5 * screenWidth;\n\t\tp2.y = (p2.y + 1.0) * 0.5 * screenHeight;\n\t\treturn p1.distanceTo(p2);\n\t}\n\t\t\n\t\t\n\tstatic topView(camera, node){\n\t\tcamera.position.set(0, 1, 0);\n\t\tcamera.rotation.set(-Math.PI / 2, 0, 0);\n\t\tcamera.zoomTo(node, 1);\n\t}\n\n\tstatic frontView (camera, node) {\n\t\tcamera.position.set(0, 0, 1);\n\t\tcamera.rotation.set(0, 0, 0);\n\t\tcamera.zoomTo(node, 1);\n\t}\n\n\tstatic leftView (camera, node) {\n\t\tcamera.position.set(-1, 0, 0);\n\t\tcamera.rotation.set(0, -Math.PI / 2, 0);\n\t\tcamera.zoomTo(node, 1);\n\t}\n\n\tstatic rightView (camera, node) {\n\t\tcamera.position.set(1, 0, 0);\n\t\tcamera.rotation.set(0, Math.PI / 2, 0);\n\t\tcamera.zoomTo(node, 1);\n\t}\n\n\t\n\tstatic findClosestGpsTime(target, viewer){\n\t\tconst start = performance.now();\n\n\t\tconst nodes = [];\n\t\tfor(const pc of viewer.scene.pointclouds){\n\t\t\tnodes.push(pc.root);\n\n\t\t\tfor(const child of pc.root.children){\n\t\t\t\tif(child){\n\t\t\t\t\tnodes.push(child);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet closestNode = null;\n\t\tlet closestIndex = Infinity;\n\t\tlet closestDistance = Infinity;\n\t\tlet closestValue = 0;\n\n\t\tfor(const node of nodes){\n\n\t\t\tconst isOkay = node.geometryNode != null \n\t\t\t\t&& node.geometryNode.geometry != null\n\t\t\t\t&& node.sceneNode != null;\n\n\t\t\tif(!isOkay){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet geometry = node.geometryNode.geometry;\n\t\t\tlet gpsTime = geometry.attributes[\"gps-time\"];\n\t\t\tlet range = gpsTime.potree.range;\n\n\t\t\tfor(let i = 0; i < gpsTime.array.length; i++){\n\t\t\t\tlet value = gpsTime.array[i];\n\t\t\t\tvalue = value * (range[1] - range[0]) + range[0];\n\t\t\t\tconst distance = Math.abs(target - value);\n\n\t\t\t\tif(distance < closestDistance){\n\t\t\t\t\tclosestIndex = i;\n\t\t\t\t\tclosestDistance = distance;\n\t\t\t\t\tclosestValue = value;\n\t\t\t\t\tclosestNode = node;\n\t\t\t\t\t//console.log(\"found a closer one: \" + value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst geometry = closestNode.geometryNode.geometry;\n\t\tconst position = new THREE.Vector3(\n\t\t\tgeometry.attributes.position.array[3 * closestIndex + 0],\n\t\t\tgeometry.attributes.position.array[3 * closestIndex + 1],\n\t\t\tgeometry.attributes.position.array[3 * closestIndex + 2],\n\t\t);\n\n\t\tposition.applyMatrix4(closestNode.sceneNode.matrixWorld);\n\n\t\tconst end = performance.now();\n\t\tconst duration = (end - start);\n\t\tconsole.log(`duration: ${duration.toFixed(3)}ms`);\n\n\t\treturn {\n\t\t\tnode: closestNode,\n\t\t\tindex: closestIndex,\n\t\t\tposition: position,\n\t\t};\n\t}\n\n\t/**\n\t *\n\t * 0: no intersection\n\t * 1: intersection\n\t * 2: fully inside\n\t */\n\tstatic frustumSphereIntersection (frustum, sphere) {\n\t\tlet planes = frustum.planes;\n\t\tlet center = sphere.center;\n\t\tlet negRadius = -sphere.radius;\n\n\t\tlet minDistance = Number.MAX_VALUE;\n\n\t\tfor (let i = 0; i < 6; i++) {\n\t\t\tlet distance = planes[ i ].distanceToPoint(center);\n\n\t\t\tif (distance < negRadius) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tminDistance = Math.min(minDistance, distance);\n\t\t}\n\n\t\treturn (minDistance >= sphere.radius) ? 2 : 1;\n\t}\n\n\t// code taken from three.js\n\t// ImageUtils - generateDataTexture()\n\tstatic generateDataTexture (width, height, color) {\n\t\tlet size = width * height;\n\t\tlet data = new Uint8Array(4 * width * height);\n\n\t\tlet r = Math.floor(color.r * 255);\n\t\tlet g = Math.floor(color.g * 255);\n\t\tlet b = Math.floor(color.b * 255);\n\n\t\tfor (let i = 0; i < size; i++) {\n\t\t\tdata[ i * 3 ] = r;\n\t\t\tdata[ i * 3 + 1 ] = g;\n\t\t\tdata[ i * 3 + 2 ] = b;\n\t\t}\n\n\t\tlet texture = new THREE.DataTexture(data, width, height, THREE.RGBAFormat);\n\t\ttexture.needsUpdate = true;\n\t\ttexture.magFilter = THREE.NearestFilter;\n\n\t\treturn texture;\n\t}\n\n\t// from http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript\n\tstatic getParameterByName (name) {\n\t\tname = name.replace(/[[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n\t\tlet regex = new RegExp('[\\\\?&]' + name + '=([^&#]*)');\n\t\tlet results = regex.exec(document.location.search);\n\t\treturn results === null ? null : decodeURIComponent(results[1].replace(/\\+/g, ' '));\n\t}\n\n\tstatic setParameter (name, value) {\n\t\t// value = encodeURIComponent(value);\n\n\t\tname = name.replace(/[[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n\t\tlet regex = new RegExp('([\\\\?&])(' + name + '=([^&#]*))');\n\t\tlet results = regex.exec(document.location.search);\n\n\t\tlet url = window.location.href;\n\t\tif (results === null) {\n\t\t\tif (window.location.search.length === 0) {\n\t\t\t\turl = url + '?';\n\t\t\t} else {\n\t\t\t\turl = url + '&';\n\t\t\t}\n\n\t\t\turl = url + name + '=' + value;\n\t\t} else {\n\t\t\tlet newValue = name + '=' + value;\n\t\t\turl = url.replace(results[2], newValue);\n\t\t}\n\t\twindow.history.replaceState({}, '', url);\n\t}\n\n\tstatic createChildAABB(aabb, index){\n\t\tlet min = aabb.min.clone();\n\t\tlet max = aabb.max.clone();\n\t\tlet size = new THREE.Vector3().subVectors(max, min);\n\n\t\tif ((index & 0b0001) > 0) {\n\t\t\tmin.z += size.z / 2;\n\t\t} else {\n\t\t\tmax.z -= size.z / 2;\n\t\t}\n\n\t\tif ((index & 0b0010) > 0) {\n\t\t\tmin.y += size.y / 2;\n\t\t} else {\n\t\t\tmax.y -= size.y / 2;\n\t\t}\n\n\t\tif ((index & 0b0100) > 0) {\n\t\t\tmin.x += size.x / 2;\n\t\t} else {\n\t\t\tmax.x -= size.x / 2;\n\t\t}\n\n\t\treturn new THREE.Box3(min, max);\n\t}\n\n\t// see https://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript\n\tstatic clipboardCopy(text){\n\t\tlet textArea = document.createElement(\"textarea\");\n\n\t\ttextArea.style.position = 'fixed';\n\t\ttextArea.style.top = 0;\n\t\ttextArea.style.left = 0;\n\n\t\ttextArea.style.width = '2em';\n\t\ttextArea.style.height = '2em';\n\n\t\ttextArea.style.padding = 0;\n\n\t\ttextArea.style.border = 'none';\n\t\ttextArea.style.outline = 'none';\n\t\ttextArea.style.boxShadow = 'none';\n\n\t\ttextArea.style.background = 'transparent';\n\n\t\ttextArea.value = text;\n\n\t\tdocument.body.appendChild(textArea);\n\n\t\ttextArea.select();\n\n\t\t try {\n\t\t\tlet success = document.execCommand('copy');\n\t\t\tif(success){\n\t\t\t\tconsole.log(\"copied text to clipboard\");\n\t\t\t}else{\n\t\t\t\tconsole.log(\"copy to clipboard failed\");\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconsole.log(\"error while trying to copy to clipboard\");\n\t\t}\n\n\t\tdocument.body.removeChild(textArea);\n\n\t}\n\n\tstatic getMeasurementIcon(measurement){\n\t\tif (measurement instanceof Measure) {\n\t\t\tif (measurement.showDistances && !measurement.showArea && !measurement.showAngles) {\n\t\t\t\treturn `${Potree.resourcePath}/icons/distance.svg`;\n\t\t\t} else if (measurement.showDistances && measurement.showArea && !measurement.showAngles) {\n\t\t\t\treturn `${Potree.resourcePath}/icons/area.svg`;\n\t\t\t} else if (measurement.maxMarkers === 1) {\n\t\t\t\treturn `${Potree.resourcePath}/icons/point.svg`;\n\t\t\t} else if (!measurement.showDistances && !measurement.showArea && measurement.showAngles) {\n\t\t\t\treturn `${Potree.resourcePath}/icons/angle.png`;\n\t\t\t} else if (measurement.showHeight) {\n\t\t\t\treturn `${Potree.resourcePath}/icons/height.svg`;\n\t\t\t} else {\n\t\t\t\treturn `${Potree.resourcePath}/icons/distance.svg`;\n\t\t\t}\n\t\t} else if (measurement instanceof Profile) {\n\t\t\treturn `${Potree.resourcePath}/icons/profile.svg`;\n\t\t} else if (measurement instanceof Volume) {\n\t\t\treturn `${Potree.resourcePath}/icons/volume.svg`;\n\t\t} else if (measurement instanceof PolygonClipVolume) {\n\t\t\treturn `${Potree.resourcePath}/icons/clip-polygon.svg`;\n\t\t}\n\t}\n\n\tstatic lineToLineIntersection(P0, P1, P2, P3){\n\n\t\tconst P = [P0, P1, P2, P3];\n\n\t\tconst d = (m, n, o, p) => {\n\t\t\tlet result = \n\t\t\t\t (P[m].x - P[n].x) * (P[o].x - P[p].x)\n\t\t\t\t+ (P[m].y - P[n].y) * (P[o].y - P[p].y)\n\t\t\t\t+ (P[m].z - P[n].z) * (P[o].z - P[p].z);\n\n\t\t\treturn result;\n\t\t};\n\n\n\t\tconst mua = (d(0, 2, 3, 2) * d(3, 2, 1, 0) - d(0, 2, 1, 0) * d(3, 2, 3, 2))\n\t\t /**-----------------------------------------------------------------**/ /\n\t\t (d(1, 0, 1, 0) * d(3, 2, 3, 2) - d(3, 2, 1, 0) * d(3, 2, 1, 0));\n\n\n\t\tconst mub = (d(0, 2, 3, 2) + mua * d(3, 2, 1, 0))\n\t\t /**--------------------------------------**/ /\n\t\t d(3, 2, 3, 2);\n\n\n\t\tconst P01 = P1.clone().sub(P0);\n\t\tconst P23 = P3.clone().sub(P2);\n\t\t\n\t\tconst Pa = P0.clone().add(P01.multiplyScalar(mua));\n\t\tconst Pb = P2.clone().add(P23.multiplyScalar(mub));\n\n\t\tconst center = Pa.clone().add(Pb).multiplyScalar(0.5);\n\n\t\treturn center;\n\t}\n\n\tstatic computeCircleCenter(A, B, C){\n\t\tconst AB = B.clone().sub(A);\n\t\tconst AC = C.clone().sub(A);\n\n\t\tconst N = AC.clone().cross(AB).normalize();\n\n\t\tconst ab_dir = AB.clone().cross(N).normalize();\n\t\tconst ac_dir = AC.clone().cross(N).normalize();\n\n\t\tconst ab_origin = A.clone().add(B).multiplyScalar(0.5);\n\t\tconst ac_origin = A.clone().add(C).multiplyScalar(0.5);\n\n\t\tconst P0 = ab_origin;\n\t\tconst P1 = ab_origin.clone().add(ab_dir);\n\n\t\tconst P2 = ac_origin;\n\t\tconst P3 = ac_origin.clone().add(ac_dir);\n\n\t\tconst center = Utils.lineToLineIntersection(P0, P1, P2, P3);\n\n\t\treturn center;\n\n\t\t// Potree.Utils.debugLine(viewer.scene.scene, P0, P1, 0x00ff00);\n\t\t// Potree.Utils.debugLine(viewer.scene.scene, P2, P3, 0x0000ff);\n\n\t\t// Potree.Utils.debugSphere(viewer.scene.scene, center, 0.03, 0xff00ff);\n\n\t\t// const radius = center.distanceTo(A);\n\t\t// Potree.Utils.debugCircle(viewer.scene.scene, center, radius, new THREE.Vector3(0, 0, 1), 0xff00ff);\n\t}\n\n\tstatic getNorthVec(p1, distance, projection){\n\t\tif(projection){\n\t\t\t// if there is a projection, transform coordinates to WGS84\n\t\t\t// and compute angle to north there\n\n\t\t\tproj4.defs(\"pointcloud\", projection);\n\t\t\tconst transform = proj4(\"pointcloud\", \"WGS84\");\n\n\t\t\tconst llP1 = transform.forward(p1.toArray());\n\t\t\tlet llP2 = transform.forward([p1.x, p1.y + distance]);\n\t\t\tconst polarRadius = Math.sqrt((llP2[0] - llP1[0]) ** 2 + (llP2[1] - llP1[1]) ** 2);\n\t\t\tllP2 = [llP1[0], llP1[1] + polarRadius];\n\n\t\t\tconst northVec = transform.inverse(llP2);\n\t\t\t\n\t\t\treturn new THREE.Vector3(...northVec, p1.z).sub(p1);\n\t\t}else{\n\t\t\t// if there is no projection, assume [0, 1, 0] as north direction\n\n\t\t\tconst vec = new THREE.Vector3(0, 1, 0).multiplyScalar(distance);\n\t\t\t\n\t\t\treturn vec;\n\t\t}\n\t}\n\n\tstatic computeAzimuth(p1, p2, projection){\n\n\t\tlet azimuth = 0;\n\n\t\tif(projection){\n\t\t\t// if there is a projection, transform coordinates to WGS84\n\t\t\t// and compute angle to north there\n\n\t\t\tlet transform;\n\n\t\t\tif (projection.includes('EPSG')) {\n\t\t\t\ttransform = proj4(projection, \"WGS84\");\n\t\t\t} else {\n\t\t\t\tproj4.defs(\"pointcloud\", projection);\n\t\t\t\ttransform = proj4(\"pointcloud\", \"WGS84\");\n\t\t\t}\n\n\t\t\tconst llP1 = transform.forward(p1.toArray());\n\t\t\tconst llP2 = transform.forward(p2.toArray());\n\t\t\tconst dir = [\n\t\t\t\tllP2[0] - llP1[0],\n\t\t\t\tllP2[1] - llP1[1],\n\t\t\t];\n\t\t\tazimuth = Math.atan2(dir[1], dir[0]) - Math.PI / 2;\n\t\t}else{\n\t\t\t// if there is no projection, assume [0, 1, 0] as north direction\n\n\t\t\tconst dir = [p2.x - p1.x, p2.y - p1.y];\n\t\t\tazimuth = Math.atan2(dir[1], dir[0]) - Math.PI / 2;\n\t\t}\n\n\t\t// make clockwise\n\t\tazimuth = -azimuth;\n\n\t\treturn azimuth;\n\t}\n\n\tstatic async loadScript(url){\n\n\t\treturn new Promise( resolve => {\n\n\t\t\tconst element = document.getElementById(url);\n\n\t\t\tif(element){\n\t\t\t\tresolve();\n\t\t\t}else{\n\t\t\t\tconst script = document.createElement(\"script\");\n\n\t\t\t\tscript.id = url;\n\n\t\t\t\tscript.onload = () => {\n\t\t\t\t\tresolve();\n\t\t\t\t};\n\t\t\t\tscript.src = url;\n\n\t\t\t\tdocument.body.appendChild(script);\n\t\t\t}\n\t\t});\n\t}\n\n\tstatic createSvgGradient(scheme){\n\n\t\t// this is what we are creating:\n\t\t//\n\t\t//\n\t\t//\t\n\t\t//\t\t\n\t\t//\t\t\n\t\t//\t\t...\n\t\t//\t\t\n\t\t//\t\t\n\t\t//\t\n\t\t//\t\n\t\t//\t\n\t\t//\n\n\n\t\tconst gradientId = `${Math.random()}_${Date.now()}`;\n\t\t\n\t\tconst svgn = \"http://www.w3.org/2000/svg\";\n\t\tconst svg = document.createElementNS(svgn, \"svg\");\n\t\tsvg.setAttributeNS(null, \"width\", \"2em\");\n\t\tsvg.setAttributeNS(null, \"height\", \"3em\");\n\t\t\n\t\t{ // \n\t\t\tconst defs = document.createElementNS(svgn, \"defs\");\n\t\t\t\n\t\t\tconst linearGradient = document.createElementNS(svgn, \"linearGradient\");\n\t\t\tlinearGradient.setAttributeNS(null, \"id\", gradientId);\n\t\t\tlinearGradient.setAttributeNS(null, \"gradientTransform\", \"rotate(90)\");\n\n\t\t\tfor(let i = scheme.length - 1; i >= 0; i--){\n\t\t\t\tconst stopVal = scheme[i];\n\t\t\t\tconst percent = parseInt(100 - stopVal[0] * 100);\n\t\t\t\tconst [r, g, b] = stopVal[1].toArray().map(v => parseInt(v * 255));\n\n\t\t\t\tconst stop = document.createElementNS(svgn, \"stop\");\n\t\t\t\tstop.setAttributeNS(null, \"offset\", `${percent}%`);\n\t\t\t\tstop.setAttributeNS(null, \"stop-color\", `rgb(${r}, ${g}, ${b})`);\n\n\t\t\t\tlinearGradient.appendChild(stop);\n\t\t\t}\n\n\t\t\tdefs.appendChild(linearGradient);\n\t\t\tsvg.appendChild(defs);\n\t\t}\n\n\t\tconst rect = document.createElementNS(svgn, \"rect\");\n\t\trect.setAttributeNS(null, \"width\", `100%`);\n\t\trect.setAttributeNS(null, \"height\", `100%`);\n\t\trect.setAttributeNS(null, \"fill\", `url(\"#${gradientId}\")`);\n\t\trect.setAttributeNS(null, \"stroke\", `black`);\n\t\trect.setAttributeNS(null, \"stroke-width\", `0.1em`);\n\n\t\tsvg.appendChild(rect);\n\t\t\n\t\treturn svg;\n\t}\n\n\tstatic async waitAny(promises){\n\t\t\n\t\treturn new Promise( (resolve) => {\n\n\t\t\tpromises.map( promise => {\n\t\t\t\tpromise.then( () => {\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t});\n\n\t\t});\n\n\t}\n\n}\n\nUtils.screenPass = new function () {\n\tthis.screenScene = new THREE.Scene();\n\tthis.screenQuad = new THREE.Mesh(new THREE.PlaneBufferGeometry(2, 2, 0));\n\tthis.screenQuad.material.depthTest = true;\n\tthis.screenQuad.material.depthWrite = true;\n\tthis.screenQuad.material.transparent = true;\n\tthis.screenScene.add(this.screenQuad);\n\tthis.camera = new THREE.Camera();\n\n\tthis.render = function (renderer, material, target) {\n\t\tthis.screenQuad.material = material;\n\n\t\tif (typeof target === 'undefined') {\n\t\t\trenderer.render(this.screenScene, this.camera);\n\t\t} else {\n\t\t\trenderer.render(this.screenScene, this.camera, target);\n\t\t}\n\t};\n}();\n","\n\nimport {Action} from \"./Actions.js\";\nimport {Utils} from \"./utils.js\";\nimport {EventDispatcher} from \"./EventDispatcher.js\";\n\nexport class Annotation extends EventDispatcher {\n\tconstructor (args = {}) {\n\t\tsuper();\n\n\t\tthis.scene = null;\n\t\tthis._title = args.title || 'No Title';\n\t\tthis._description = args.description || '';\n\t\tthis.offset = new THREE.Vector3();\n\t\tthis.uuid = THREE.Math.generateUUID();\n\n\t\tif (!args.position) {\n\t\t\tthis.position = null;\n\t\t} else if (args.position instanceof THREE.Vector3) {\n\t\t\tthis.position = args.position;\n\t\t} else {\n\t\t\tthis.position = new THREE.Vector3(...args.position);\n\t\t}\n\n\t\tthis.cameraPosition = (args.cameraPosition instanceof Array)\n\t\t\t? new THREE.Vector3().fromArray(args.cameraPosition) : args.cameraPosition;\n\t\tthis.cameraTarget = (args.cameraTarget instanceof Array)\n\t\t\t? new THREE.Vector3().fromArray(args.cameraTarget) : args.cameraTarget;\n\t\tthis.radius = args.radius;\n\t\tthis.view = args.view || null;\n\t\tthis.keepOpen = false;\n\t\tthis.descriptionVisible = false;\n\t\tthis.showDescription = true;\n\t\tthis.actions = args.actions || [];\n\t\tthis.isHighlighted = false;\n\t\tthis._visible = true;\n\t\tthis.__visible = true;\n\t\tthis._display = true;\n\t\tthis._expand = false;\n\t\tthis.collapseThreshold = [args.collapseThreshold, 100].find(e => e !== undefined);\n\n\t\tthis.children = [];\n\t\tthis.parent = null;\n\t\tthis.boundingBox = new THREE.Box3();\n\n\t\tlet iconClose = exports.resourcePath + '/icons/close.svg';\n\n\t\tthis.domElement = $(`\n\t\t\t
        \n\t\t\t\t
        \n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t
        \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${this._description}\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\tthis.elTitlebar = this.domElement.find('.annotation-titlebar');\n\t\tthis.elTitle = this.elTitlebar.find('.annotation-label');\n\t\tthis.elTitle.append(this._title);\n\t\tthis.elDescription = this.domElement.find('.annotation-description');\n\t\tthis.elDescriptionClose = this.elDescription.find('.annotation-description-close');\n\t\t// this.elDescriptionContent = this.elDescription.find(\".annotation-description-content\");\n\n\t\tthis.clickTitle = () => {\n\t\t\tif(this.hasView()){\n\t\t\t\tthis.moveHere(this.scene.getActiveCamera());\n\t\t\t}\n\t\t\tthis.dispatchEvent({type: 'click', target: this});\n\t\t};\n\n\t\tthis.elTitle.click(this.clickTitle);\n\n\t\tthis.actions = this.actions.map(a => {\n\t\t\tif (a instanceof Action) {\n\t\t\t\treturn a;\n\t\t\t} else {\n\t\t\t\treturn new Action(a);\n\t\t\t}\n\t\t});\n\n\t\tfor (let action of this.actions) {\n\t\t\taction.pairWith(this);\n\t\t}\n\n\t\tlet actions = this.actions.filter(\n\t\t\ta => a.showIn === undefined || a.showIn.includes('scene'));\n\n\t\tfor (let action of actions) {\n\t\t\tlet elButton = $(``);\n\t\t\tthis.elTitlebar.append(elButton);\n\t\t\telButton.click(() => action.onclick({annotation: this}));\n\t\t}\n\n\t\tthis.elDescriptionClose.hover(\n\t\t\te => this.elDescriptionClose.css('opacity', '1'),\n\t\t\te => this.elDescriptionClose.css('opacity', '0.5')\n\t\t);\n\t\tthis.elDescriptionClose.click(e => this.setHighlighted(false));\n\t\t// this.elDescriptionContent.html(this._description);\n\n\t\tthis.domElement.mouseenter(e => this.setHighlighted(true));\n\t\tthis.domElement.mouseleave(e => this.setHighlighted(false));\n\n\t\tthis.domElement.on('touchstart', e => {\n\t\t\tthis.setHighlighted(!this.isHighlighted);\n\t\t});\n\n\t\tthis.display = false;\n\t\t//this.display = true;\n\n\t}\n\n\tinstallHandles(viewer){\n\t\tif(this.handles !== undefined){\n\t\t\treturn;\n\t\t}\n\n\t\tlet domElement = $(`\n\t\t\t
        \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
        \n\t\t`);\n\t\t\n\t\tlet svg = domElement.find(\"svg\")[0];\n\t\tlet elLine = domElement.find(\"line\")[0];\n\t\tlet elStart = domElement.find(\"circle\")[0];\n\t\tlet elEnd = domElement.find(\"circle\")[1];\n\n\t\tlet setCoordinates = (start, end) => {\n\t\t\telStart.setAttribute(\"cx\", `${start.x}`);\n\t\t\telStart.setAttribute(\"cy\", `${start.y}`);\n\n\t\t\telEnd.setAttribute(\"cx\", `${end.x}`);\n\t\t\telEnd.setAttribute(\"cy\", `${end.y}`);\n\n\t\t\telLine.setAttribute(\"x1\", start.x);\n\t\t\telLine.setAttribute(\"y1\", start.y);\n\t\t\telLine.setAttribute(\"x2\", end.x);\n\t\t\telLine.setAttribute(\"y2\", end.y);\n\n\t\t\tlet box = svg.getBBox();\n\t\t\tsvg.setAttribute(\"width\", `${box.width}`);\n\t\t\tsvg.setAttribute(\"height\", `${box.height}`);\n\t\t\tsvg.setAttribute(\"viewBox\", `${box.x} ${box.y} ${box.width} ${box.height}`);\n\n\t\t\tlet ya = start.y - end.y;\n\t\t\tlet xa = start.x - end.x;\n\n\t\t\tif(ya > 0){\n\t\t\t\tstart.y = start.y - ya;\n\t\t\t}\n\t\t\tif(xa > 0){\n\t\t\t\tstart.x = start.x - xa;\n\t\t\t}\n\n\t\t\tdomElement.css(\"left\", `${start.x}px`);\n\t\t\tdomElement.css(\"top\", `${start.y}px`);\n\n\t\t};\n\n\t\t$(viewer.renderArea).append(domElement);\n\n\n\t\tlet annotationStartPos = this.position.clone();\n\t\tlet annotationStartOffset = this.offset.clone();\n\n\t\t$(this.domElement).draggable({\n\t\t\tstart: (event, ui) => {\n\t\t\t\tannotationStartPos = this.position.clone();\n\t\t\t\tannotationStartOffset = this.offset.clone();\n\t\t\t\t$(this.domElement).find(\".annotation-titlebar\").css(\"pointer-events\", \"none\");\n\n\t\t\t\tconsole.log($(this.domElement).find(\".annotation-titlebar\"));\n\t\t\t},\n\t\t\tstop: () => {\n\t\t\t\t$(this.domElement).find(\".annotation-titlebar\").css(\"pointer-events\", \"\");\n\t\t\t},\n\t\t\tdrag: (event, ui ) => {\n\t\t\t\tlet renderAreaWidth = viewer.renderer.getSize(new THREE.Vector2()).width;\n\t\t\t\t//let renderAreaHeight = viewer.renderer.getSize().height;\n\n\t\t\t\tlet diff = {\n\t\t\t\t\tx: ui.originalPosition.left - ui.position.left, \n\t\t\t\t\ty: ui.originalPosition.top - ui.position.top\n\t\t\t\t};\n\n\t\t\t\tlet nDiff = {\n\t\t\t\t\tx: -(diff.x / renderAreaWidth) * 2,\n\t\t\t\t\ty: (diff.y / renderAreaWidth) * 2\n\t\t\t\t};\n\n\t\t\t\tlet camera = viewer.scene.getActiveCamera();\n\t\t\t\tlet oldScreenPos = new THREE.Vector3()\n\t\t\t\t\t.addVectors(annotationStartPos, annotationStartOffset)\n\t\t\t\t\t.project(camera);\n\n\t\t\t\tlet newScreenPos = oldScreenPos.clone();\n\t\t\t\tnewScreenPos.x += nDiff.x;\n\t\t\t\tnewScreenPos.y += nDiff.y;\n\n\t\t\t\tlet newPos = newScreenPos.clone();\n\t\t\t\tnewPos.unproject(camera);\n\n\t\t\t\tlet newOffset = new THREE.Vector3().subVectors(newPos, this.position);\n\t\t\t\tthis.offset.copy(newOffset);\n\t\t\t}\n\t\t});\n\n\t\tlet updateCallback = () => {\n\t\t\tlet position = this.position;\n\t\t\tlet scene = viewer.scene;\n\n\t\t\tconst renderAreaSize = viewer.renderer.getSize(new THREE.Vector2());\n\t\t\tlet renderAreaWidth = renderAreaSize.width;\n\t\t\tlet renderAreaHeight = renderAreaSize.height;\n\n\t\t\tlet start = this.position.clone();\n\t\t\tlet end = new THREE.Vector3().addVectors(this.position, this.offset);\n\n\t\t\tlet toScreen = (position) => {\n\t\t\t\tlet camera = scene.getActiveCamera();\n\t\t\t\tlet screenPos = new THREE.Vector3();\n\n\t\t\t\tlet worldView = new THREE.Matrix4().multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse);\n\t\t\t\tlet ndc = new THREE.Vector4(position.x, position.y, position.z, 1.0).applyMatrix4(worldView);\n\t\t\t\t// limit w to small positive value, in case position is behind the camera\n\t\t\t\tndc.w = Math.max(ndc.w, 0.1);\n\t\t\t\tndc.divideScalar(ndc.w);\n\n\t\t\t\tscreenPos.copy(ndc);\n\t\t\t\tscreenPos.x = renderAreaWidth * (screenPos.x + 1) / 2;\n\t\t\t\tscreenPos.y = renderAreaHeight * (1 - (screenPos.y + 1) / 2);\n\n\t\t\t\treturn screenPos;\n\t\t\t};\n\t\t\t\n\t\t\tstart = toScreen(start);\n\t\t\tend = toScreen(end);\n\n\t\t\tsetCoordinates(start, end);\n\n\t\t};\n\n\t\tviewer.addEventListener(\"update\", updateCallback);\n\n\t\tthis.handles = {\n\t\t\tdomElement: domElement,\n\t\t\tsetCoordinates: setCoordinates,\n\t\t\tupdateCallback: updateCallback\n\t\t};\n\t}\n\n\tremoveHandles(viewer){\n\t\tif(this.handles === undefined){\n\t\t\treturn;\n\t\t}\n\n\t\t//$(viewer.renderArea).remove(this.handles.domElement);\n\t\tthis.handles.domElement.remove();\n\t\tviewer.removeEventListener(\"update\", this.handles.updateCallback);\n\n\t\tdelete this.handles;\n\t}\n\n\tget visible () {\n\t\treturn this._visible;\n\t}\n\n\tset visible (value) {\n\t\tif (this._visible === value) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._visible = value;\n\n\t\t//this.traverse(node => {\n\t\t//\tnode.display = value;\n\t\t//});\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'visibility_changed',\n\t\t\tannotation: this\n\t\t});\n\t}\n\n\tget display () {\n\t\treturn this._display;\n\t}\n\n\tset display (display) {\n\t\tif (this._display === display) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._display = display;\n\n\t\tif (display) {\n\t\t\t// this.domElement.fadeIn(200);\n\t\t\tthis.domElement.show();\n\t\t} else {\n\t\t\t// this.domElement.fadeOut(200);\n\t\t\tthis.domElement.hide();\n\t\t}\n\t}\n\n\tget expand () {\n\t\treturn this._expand;\n\t}\n\n\tset expand (expand) {\n\t\tif (this._expand === expand) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (expand) {\n\t\t\tthis.display = false;\n\t\t} else {\n\t\t\tthis.display = true;\n\t\t\tthis.traverseDescendants(node => {\n\t\t\t\tnode.display = false;\n\t\t\t});\n\t\t}\n\n\t\tthis._expand = expand;\n\t}\n\n\tget title () {\n\t\treturn this._title;\n\t}\n\n\tset title (title) {\n\t\tif (this._title === title) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._title = title;\n\t\tthis.elTitle.empty();\n\t\tthis.elTitle.append(this._title);\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: \"annotation_changed\",\n\t\t\tannotation: this,\n\t\t});\n\t}\n\n\tget description () {\n\t\treturn this._description;\n\t}\n\n\tset description (description) {\n\t\tif (this._description === description) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._description = description;\n\n\t\tconst elDescriptionContent = this.elDescription.find(\".annotation-description-content\");\n\t\telDescriptionContent.empty();\n\t\telDescriptionContent.append(this._description);\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: \"annotation_changed\",\n\t\t\tannotation: this,\n\t\t});\n\t}\n\n\tadd (annotation) {\n\t\tif (!this.children.includes(annotation)) {\n\t\t\tthis.children.push(annotation);\n\t\t\tannotation.parent = this;\n\n\t\t\tlet descendants = [];\n\t\t\tannotation.traverse(a => { descendants.push(a); });\n\n\t\t\tfor (let descendant of descendants) {\n\t\t\t\tlet c = this;\n\t\t\t\twhile (c !== null) {\n\t\t\t\t\tc.dispatchEvent({\n\t\t\t\t\t\t'type': 'annotation_added',\n\t\t\t\t\t\t'annotation': descendant\n\t\t\t\t\t});\n\t\t\t\t\tc = c.parent;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tlevel () {\n\t\tif (this.parent === null) {\n\t\t\treturn 0;\n\t\t} else {\n\t\t\treturn this.parent.level() + 1;\n\t\t}\n\t}\n\n\thasChild(annotation) {\n\t\treturn this.children.includes(annotation);\n\t}\n\n\tremove (annotation) {\n\t\tif (this.hasChild(annotation)) {\n\t\t\tannotation.removeAllChildren();\n\t\t\tannotation.dispose();\n\t\t\tthis.children = this.children.filter(e => e !== annotation);\n\t\t\tannotation.parent = null;\n\t\t}\n\t}\n\n\tremoveAllChildren() {\n\t\tthis.children.forEach((child) => {\n\t\t\tif (child.children.length > 0) {\n\t\t\t\tchild.removeAllChildren();\n\t\t\t}\n\n\t\t\tthis.remove(child);\n\t\t});\n\t}\n\n\tupdateBounds () {\n\t\tlet box = new THREE.Box3();\n\n\t\tif (this.position) {\n\t\t\tbox.expandByPoint(this.position);\n\t\t}\n\n\t\tfor (let child of this.children) {\n\t\t\tchild.updateBounds();\n\n\t\t\tbox.union(child.boundingBox);\n\t\t}\n\n\t\tthis.boundingBox.copy(box);\n\t}\n\n\ttraverse (handler) {\n\t\tlet expand = handler(this);\n\n\t\tif (expand === undefined || expand === true) {\n\t\t\tfor (let child of this.children) {\n\t\t\t\tchild.traverse(handler);\n\t\t\t}\n\t\t}\n\t}\n\n\ttraverseDescendants (handler) {\n\t\tfor (let child of this.children) {\n\t\t\tchild.traverse(handler);\n\t\t}\n\t}\n\n\tflatten () {\n\t\tlet annotations = [];\n\n\t\tthis.traverse(annotation => {\n\t\t\tannotations.push(annotation);\n\t\t});\n\n\t\treturn annotations;\n\t}\n\n\tdescendants () {\n\t\tlet annotations = [];\n\n\t\tthis.traverse(annotation => {\n\t\t\tif (annotation !== this) {\n\t\t\t\tannotations.push(annotation);\n\t\t\t}\n\t\t});\n\n\t\treturn annotations;\n\t}\n\n\tsetHighlighted (highlighted) {\n\t\tif (highlighted) {\n\t\t\tthis.domElement.css('opacity', '0.8');\n\t\t\tthis.elTitlebar.css('box-shadow', '0 0 5px #fff');\n\t\t\tthis.domElement.css('z-index', '1000');\n\n\t\t\tif (this._description) {\n\t\t\t\tthis.descriptionVisible = true;\n\t\t\t\tthis.elDescription.fadeIn(200);\n\t\t\t\tthis.elDescription.css('position', 'relative');\n\t\t\t}\n\t\t} else {\n\t\t\tthis.domElement.css('opacity', '0.5');\n\t\t\tthis.elTitlebar.css('box-shadow', '');\n\t\t\tthis.domElement.css('z-index', '100');\n\t\t\tthis.descriptionVisible = false;\n\t\t\tthis.elDescription.css('display', 'none');\n\t\t}\n\n\t\tthis.isHighlighted = highlighted;\n\t}\n\n\thasView () {\n\t\tlet hasPosTargetView = this.cameraTarget instanceof THREE.Vector3;\n\t\thasPosTargetView = hasPosTargetView && this.cameraPosition instanceof THREE.Vector3;\n\n\t\tlet hasRadiusView = this.radius !== undefined;\n\n\t\tlet hasView = hasPosTargetView || hasRadiusView;\n\n\t\treturn hasView;\n\t};\n\n\tmoveHere (camera) {\n\t\tif (!this.hasView()) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet view = this.scene.view;\n\t\tlet animationDuration = 500;\n\t\tlet easing = TWEEN.Easing.Quartic.Out;\n\n\t\tlet endTarget;\n\t\tif (this.cameraTarget) {\n\t\t\tendTarget = this.cameraTarget;\n\t\t} else if (this.position) {\n\t\t\tendTarget = this.position;\n\t\t} else {\n\t\t\tendTarget = this.boundingBox.getCenter(new THREE.Vector3());\n\t\t}\n\n\t\tif (this.cameraPosition) {\n\t\t\tlet endPosition = this.cameraPosition;\n\n\t\t\tUtils.moveTo(this.scene, endPosition, endTarget);\n\t\t} else if (this.radius) {\n\t\t\tlet direction = view.direction;\n\t\t\tlet endPosition = endTarget.clone().add(direction.multiplyScalar(-this.radius));\n\t\t\tlet startRadius = view.radius;\n\t\t\tlet endRadius = this.radius;\n\n\t\t\t{ // animate camera position\n\t\t\t\tlet tween = new TWEEN.Tween(view.position).to(endPosition, animationDuration);\n\t\t\t\ttween.easing(easing);\n\t\t\t\ttween.start();\n\t\t\t}\n\n\t\t\t{ // animate radius\n\t\t\t\tlet t = {x: 0};\n\n\t\t\t\tlet tween = new TWEEN.Tween(t)\n\t\t\t\t\t.to({x: 1}, animationDuration)\n\t\t\t\t\t.onUpdate(function () {\n\t\t\t\t\t\tview.radius = this.x * endRadius + (1 - this.x) * startRadius;\n\t\t\t\t\t});\n\t\t\t\ttween.easing(easing);\n\t\t\t\ttween.start();\n\t\t\t}\n\t\t}\n\t};\n\n\tdispose () {\n\t\tif (this.domElement.parentElement) {\n\t\t\tthis.domElement.parentElement.removeChild(this.domElement);\n\t\t}\n\t};\n\n\ttoString () {\n\t\treturn 'Annotation: ' + this._title;\n\t}\n};\n","\nclass EnumItem{\n\tconstructor(object){\n\t\tfor(let key of Object.keys(object)){\n\t\t\tthis[key] = object[key];\n\t\t}\n\t}\n\n\tinspect(){\n\t\treturn `Enum(${this.name}: ${this.value})`;\n\t}\n};\n\nclass Enum{\n\n\tconstructor(object){\n\t\tthis.object = object;\n\n\t\tfor(let key of Object.keys(object)){\n\t\t\tlet value = object[key];\n\n\t\t\tif(typeof value === \"object\"){\n\t\t\t\tvalue.name = key;\n\t\t\t}else{\n\t\t\t\tvalue = {name: key, value: value};\n\t\t\t}\n\t\t\t\n\t\t\tthis[key] = new EnumItem(value);\n\t\t}\n\t}\n\n\tfromValue(value){\n\t\tfor(let key of Object.keys(this.object)){\n\t\t\tif(this[key].value === value){\n\t\t\t\treturn this[key];\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error(`No enum for value: ${value}`);\n\t}\n\t\n};\n\nexport {Enum, EnumItem};","\nimport {Enum} from \"./Enum.js\";\n\n\nexport const CameraMode = {\n\tORTHOGRAPHIC: 0,\n\tPERSPECTIVE: 1,\n\tVR: 2,\n};\n\nexport const ClipTask = {\n\tNONE: 0,\n\tHIGHLIGHT: 1,\n\tSHOW_INSIDE: 2,\n\tSHOW_OUTSIDE: 3\n};\n\nexport const ClipMethod = {\n\tINSIDE_ANY: 0,\n\tINSIDE_ALL: 1\n};\n\nexport const ElevationGradientRepeat = {\n\tCLAMP: 0,\n\tREPEAT: 1,\n\tMIRRORED_REPEAT: 2,\n};\n\nexport const MOUSE = {\n\tLEFT: 0b0001,\n\tRIGHT: 0b0010,\n\tMIDDLE: 0b0100\n};\n\nexport const PointSizeType = {\n\tFIXED: 0,\n\tATTENUATED: 1,\n\tADAPTIVE: 2\n};\n\nexport const PointShape = {\n\tSQUARE: 0,\n\tCIRCLE: 1,\n\tPARABOLOID: 2\n};\n\nexport const TreeType = {\n\tOCTREE:\t0,\n\tKDTREE:\t1\n};\n\nexport const LengthUnits = {\n\tMETER: {code: 'm', unitspermeter: 1.0},\n\tFEET: {code: 'ft', unitspermeter: 3.28084},\n\tINCH: {code: '\\u2033', unitspermeter: 39.3701}\n};","\nlet ftCanvas = document.createElement('canvas');\n\nexport const Features = (function () {\n\n\tlet gl = ftCanvas.getContext('webgl') || ftCanvas.getContext('experimental-webgl');\n\tif (gl === null){ \n\t\treturn null; \n\t}\n\n\t// -- code taken from THREE.WebGLRenderer --\n\tlet _vertexShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT);\n\tlet _vertexShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT);\n\t// Unused: let _vertexShaderPrecisionLowpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_FLOAT);\n\n\tlet _fragmentShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT);\n\tlet _fragmentShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT);\n\t// Unused: let _fragmentShaderPrecisionLowpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_FLOAT);\n\n\tlet highpAvailable = _vertexShaderPrecisionHighpFloat.precision > 0 && _fragmentShaderPrecisionHighpFloat.precision > 0;\n\tlet mediumpAvailable = _vertexShaderPrecisionMediumpFloat.precision > 0 && _fragmentShaderPrecisionMediumpFloat.precision > 0;\n\t// -----------------------------------------\n\n\tlet precision;\n\tif (highpAvailable) {\n\t\tprecision = 'highp';\n\t} else if (mediumpAvailable) {\n\t\tprecision = 'mediump';\n\t} else {\n\t\tprecision = 'lowp';\n\t}\n\n\treturn {\n\t\tSHADER_INTERPOLATION: {\n\t\t\tisSupported: function () {\n\t\t\t\tlet supported = true;\n\n\t\t\t\tsupported = supported && gl.getExtension('EXT_frag_depth');\n\t\t\t\tsupported = supported && gl.getParameter(gl.MAX_VARYING_VECTORS) >= 8;\n\n\t\t\t\treturn supported;\n\t\t\t}\n\t\t},\n\t\tSHADER_SPLATS: {\n\t\t\tisSupported: function () {\n\t\t\t\tlet supported = true;\n\n\t\t\t\tsupported = supported && gl.getExtension('EXT_frag_depth');\n\t\t\t\tsupported = supported && gl.getExtension('OES_texture_float');\n\t\t\t\tsupported = supported && gl.getParameter(gl.MAX_VARYING_VECTORS) >= 8;\n\n\t\t\t\treturn supported;\n\t\t\t}\n\n\t\t},\n\t\tSHADER_EDL: {\n\t\t\tisSupported: function () {\n\t\t\t\tlet supported = true;\n\n\t\t\t\t//supported = supported && gl.getExtension('EXT_frag_depth');\n\t\t\t\tsupported = supported && gl.getExtension('OES_texture_float');\n\t\t\t\tsupported = supported && gl.getParameter(gl.MAX_VARYING_VECTORS) >= 8;\n\n\t\t\t\t//supported = supported || (gl instanceof WebGL2RenderingContext);\n\n\t\t\t\treturn supported;\n\t\t\t}\n\n\t\t},\n\t\t//WEBGL2: {\n\t\t//\tisSupported: function(){\n\t\t//\t\treturn gl instanceof WebGL2RenderingContext;\n\t\t//\t}\n\t\t//},\n\t\tprecision: precision\n\t};\n}());\n\n","\n\nexport const KeyCodes = {\n\n\tLEFT: 37,\n\tUP: 38,\n\tRIGHT: 39,\n\tBOTTOM: 40,\n\tDELETE: 46,\n\n\tA: 'A'.charCodeAt(0),\n\tS: 'S'.charCodeAt(0),\n\tD: 'D'.charCodeAt(0),\n\tW: 'W'.charCodeAt(0),\n\tQ: 'Q'.charCodeAt(0),\n\tE: 'E'.charCodeAt(0),\n\tR: 'R'.charCodeAt(0),\n\tF: 'F'.charCodeAt(0)\n\t\n};","\n\nclass LRUItem{\n\n\tconstructor(node){\n\t\tthis.previous = null;\n\t\tthis.next = null;\n\t\tthis.node = node;\n\t}\n\n}\n\n/**\n *\n * @class A doubly-linked-list of the least recently used elements.\n */\nclass LRU{\n\n\tconstructor(){\n\t\t// the least recently used item\n\t\tthis.first = null;\n\t\t// the most recently used item\n\t\tthis.last = null;\n\t\t// a list of all items in the lru list\n\t\tthis.items = {};\n\t\tthis.elements = 0;\n\t\tthis.numPoints = 0;\n\t}\n\n\tsize(){\n\t\treturn this.elements;\n\t}\n\n\tcontains(node){\n\t\treturn this.items[node.id] == null;\n\t}\n\n\ttouch(node){\n\t\tif (!node.loaded) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet item;\n\t\tif (this.items[node.id] == null) {\n\t\t\t// add to list\n\t\t\titem = new LRUItem(node);\n\t\t\titem.previous = this.last;\n\t\t\tthis.last = item;\n\t\t\tif (item.previous !== null) {\n\t\t\t\titem.previous.next = item;\n\t\t\t}\n\n\t\t\tthis.items[node.id] = item;\n\t\t\tthis.elements++;\n\n\t\t\tif (this.first === null) {\n\t\t\t\tthis.first = item;\n\t\t\t}\n\t\t\tthis.numPoints += node.numPoints;\n\t\t} else {\n\t\t\t// update in list\n\t\t\titem = this.items[node.id];\n\t\t\tif (item.previous === null) {\n\t\t\t\t// handle touch on first element\n\t\t\t\tif (item.next !== null) {\n\t\t\t\t\tthis.first = item.next;\n\t\t\t\t\tthis.first.previous = null;\n\t\t\t\t\titem.previous = this.last;\n\t\t\t\t\titem.next = null;\n\t\t\t\t\tthis.last = item;\n\t\t\t\t\titem.previous.next = item;\n\t\t\t\t}\n\t\t\t} else if (item.next === null) {\n\t\t\t\t// handle touch on last element\n\t\t\t} else {\n\t\t\t\t// handle touch on any other element\n\t\t\t\titem.previous.next = item.next;\n\t\t\t\titem.next.previous = item.previous;\n\t\t\t\titem.previous = this.last;\n\t\t\t\titem.next = null;\n\t\t\t\tthis.last = item;\n\t\t\t\titem.previous.next = item;\n\t\t\t}\n\t\t}\n\t}\n\n\tremove(node){\n\t\tlet lruItem = this.items[node.id];\n\t\tif (lruItem) {\n\t\t\tif (this.elements === 1) {\n\t\t\t\tthis.first = null;\n\t\t\t\tthis.last = null;\n\t\t\t} else {\n\t\t\t\tif (!lruItem.previous) {\n\t\t\t\t\tthis.first = lruItem.next;\n\t\t\t\t\tthis.first.previous = null;\n\t\t\t\t}\n\t\t\t\tif (!lruItem.next) {\n\t\t\t\t\tthis.last = lruItem.previous;\n\t\t\t\t\tthis.last.next = null;\n\t\t\t\t}\n\t\t\t\tif (lruItem.previous && lruItem.next) {\n\t\t\t\t\tlruItem.previous.next = lruItem.next;\n\t\t\t\t\tlruItem.next.previous = lruItem.previous;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdelete this.items[node.id];\n\t\t\tthis.elements--;\n\t\t\tthis.numPoints -= node.numPoints;\n\t\t}\n\t}\n\n\tgetLRUItem(){\n\t\tif (this.first === null) {\n\t\t\treturn null;\n\t\t}\n\t\tlet lru = this.first;\n\n\t\treturn lru.node;\n\t}\n\n\ttoString(){\n\t\tlet string = '{ ';\n\t\tlet curr = this.first;\n\t\twhile (curr !== null) {\n\t\t\tstring += curr.node.id;\n\t\t\tif (curr.next !== null) {\n\t\t\t\tstring += ', ';\n\t\t\t}\n\t\t\tcurr = curr.next;\n\t\t}\n\t\tstring += '}';\n\t\tstring += '(' + this.size() + ')';\n\t\treturn string;\n\t}\n\n\tfreeMemory(){\n\t\tif (this.elements <= 1) {\n\t\t\treturn;\n\t\t}\n\n\t\twhile (this.numPoints > Potree.pointLoadLimit) {\n\t\t\tlet element = this.first;\n\t\t\tlet node = element.node;\n\t\t\tthis.disposeDescendants(node);\n\t\t}\n\t}\n\n\tdisposeDescendants(node){\n\t\tlet stack = [];\n\t\tstack.push(node);\n\t\twhile (stack.length > 0) {\n\t\t\tlet current = stack.pop();\n\n\t\t\t// console.log(current);\n\n\t\t\tcurrent.dispose();\n\t\t\tthis.remove(current);\n\n\t\t\tfor (let key in current.children) {\n\t\t\t\tif (current.children.hasOwnProperty(key)) {\n\t\t\t\t\tlet child = current.children[key];\n\t\t\t\t\tif (child.loaded) {\n\t\t\t\t\t\tstack.push(current.children[key]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n}\n\nexport {LRU, LRUItem};","\n\nimport { EventDispatcher } from \"./EventDispatcher.js\";\n\n\nexport class PointCloudTreeNode extends EventDispatcher{\n\n\tconstructor(){\n\t\tsuper();\n\t\tthis.needsTransformUpdate = true;\n\t}\n\n\tgetChildren () {\n\t\tthrow new Error('override function');\n\t}\n\n\tgetBoundingBox () {\n\t\tthrow new Error('override function');\n\t}\n\n\tisLoaded () {\n\t\tthrow new Error('override function');\n\t}\n\n\tisGeometryNode () {\n\t\tthrow new Error('override function');\n\t}\n\n\tisTreeNode () {\n\t\tthrow new Error('override function');\n\t}\n\n\tgetLevel () {\n\t\tthrow new Error('override function');\n\t}\n\n\tgetBoundingSphere () {\n\t\tthrow new Error('override function');\n\t}\n};\n\nexport class PointCloudTree extends THREE.Object3D {\n\tconstructor () {\n\t\tsuper();\n\t}\n\n\tinitialized () {\n\t\treturn this.root !== null;\n\t}\n};\n","\n/**\n * Some types of possible point attribute data formats\n *\n * @class\n */\nconst PointAttributeTypes = {\n\tDATA_TYPE_DOUBLE: {ordinal: 0, name: \"double\", size: 8},\n\tDATA_TYPE_FLOAT: {ordinal: 1, name: \"float\", size: 4},\n\tDATA_TYPE_INT8: {ordinal: 2, name: \"int8\", size: 1},\n\tDATA_TYPE_UINT8: {ordinal: 3, name: \"uint8\", size: 1},\n\tDATA_TYPE_INT16: {ordinal: 4, name: \"int16\", size: 2},\n\tDATA_TYPE_UINT16: {ordinal: 5, name: \"uint16\", size: 2},\n\tDATA_TYPE_INT32: {ordinal: 6, name: \"int32\", size: 4},\n\tDATA_TYPE_UINT32: {ordinal: 7, name: \"uint32\", size: 4},\n\tDATA_TYPE_INT64: {ordinal: 8, name: \"int64\", size: 8},\n\tDATA_TYPE_UINT64: {ordinal: 9, name: \"uint64\", size: 8}\n};\n\nlet i = 0;\nfor (let obj in PointAttributeTypes) {\n\tPointAttributeTypes[i] = PointAttributeTypes[obj];\n\ti++;\n}\n\nexport {PointAttributeTypes};\n\n\nclass PointAttribute{\n\t\n\tconstructor(name, type, numElements){\n\t\tthis.name = name;\n\t\tthis.type = type;\n\t\tthis.numElements = numElements;\n\t\tthis.byteSize = this.numElements * this.type.size;\n\t\tthis.description = \"\";\n\t\tthis.range = [Infinity, -Infinity];\n\t}\n\n};\n\nPointAttribute.POSITION_CARTESIAN = new PointAttribute(\n\t\"POSITION_CARTESIAN\", PointAttributeTypes.DATA_TYPE_FLOAT, 3);\n\nPointAttribute.RGBA_PACKED = new PointAttribute(\n\t\"COLOR_PACKED\", PointAttributeTypes.DATA_TYPE_INT8, 4);\n\nPointAttribute.COLOR_PACKED = PointAttribute.RGBA_PACKED;\n\nPointAttribute.RGB_PACKED = new PointAttribute(\n\t\"COLOR_PACKED\", PointAttributeTypes.DATA_TYPE_INT8, 3);\n\nPointAttribute.NORMAL_FLOATS = new PointAttribute(\n\t\"NORMAL_FLOATS\", PointAttributeTypes.DATA_TYPE_FLOAT, 3);\n\nPointAttribute.INTENSITY = new PointAttribute(\n\t\"INTENSITY\", PointAttributeTypes.DATA_TYPE_UINT16, 1);\n\nPointAttribute.CLASSIFICATION = new PointAttribute(\n\t\"CLASSIFICATION\", PointAttributeTypes.DATA_TYPE_UINT8, 1);\n\nPointAttribute.NORMAL_SPHEREMAPPED = new PointAttribute(\n\t\"NORMAL_SPHEREMAPPED\", PointAttributeTypes.DATA_TYPE_UINT8, 2);\n\nPointAttribute.NORMAL_OCT16 = new PointAttribute(\n\t\"NORMAL_OCT16\", PointAttributeTypes.DATA_TYPE_UINT8, 2);\n\nPointAttribute.NORMAL = new PointAttribute(\n\t\"NORMAL\", PointAttributeTypes.DATA_TYPE_FLOAT, 3);\n\t\nPointAttribute.RETURN_NUMBER = new PointAttribute(\n\t\"RETURN_NUMBER\", PointAttributeTypes.DATA_TYPE_UINT8, 1);\n\t\nPointAttribute.NUMBER_OF_RETURNS = new PointAttribute(\n\t\"NUMBER_OF_RETURNS\", PointAttributeTypes.DATA_TYPE_UINT8, 1);\n\t\nPointAttribute.SOURCE_ID = new PointAttribute(\n\t\"SOURCE_ID\", PointAttributeTypes.DATA_TYPE_UINT16, 1);\n\nPointAttribute.INDICES = new PointAttribute(\n\t\"INDICES\", PointAttributeTypes.DATA_TYPE_UINT32, 1);\n\nPointAttribute.SPACING = new PointAttribute(\n\t\"SPACING\", PointAttributeTypes.DATA_TYPE_FLOAT, 1);\n\nPointAttribute.GPS_TIME = new PointAttribute(\n\t\"GPS_TIME\", PointAttributeTypes.DATA_TYPE_DOUBLE, 1);\n\nexport {PointAttribute};\n\nexport class PointAttributes{\n\n\tconstructor(pointAttributes){\n\t\tthis.attributes = [];\n\t\tthis.byteSize = 0;\n\t\tthis.size = 0;\n\t\tthis.vectors = [];\n\n\t\tif (pointAttributes != null) {\n\t\t\tfor (let i = 0; i < pointAttributes.length; i++) {\n\t\t\t\tlet pointAttributeName = pointAttributes[i];\n\t\t\t\tlet pointAttribute = PointAttribute[pointAttributeName];\n\t\t\t\tthis.attributes.push(pointAttribute);\n\t\t\t\tthis.byteSize += pointAttribute.byteSize;\n\t\t\t\tthis.size++;\n\t\t\t}\n\t\t}\n\t}\n\n\n\tadd(pointAttribute){\n\t\tthis.attributes.push(pointAttribute);\n\t\tthis.byteSize += pointAttribute.byteSize;\n\t\tthis.size++;\n\t};\n\n\taddVector(vector){\n\t\tthis.vectors.push(vector);\n\t}\n\n\thasColors(){\n\t\tfor (let name in this.attributes) {\n\t\t\tlet pointAttribute = this.attributes[name];\n\t\t\tif (pointAttribute.name === PointAttributeNames.COLOR_PACKED) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\thasNormals(){\n\t\tfor (let name in this.attributes) {\n\t\t\tlet pointAttribute = this.attributes[name];\n\t\t\tif (\n\t\t\t\tpointAttribute === PointAttribute.NORMAL_SPHEREMAPPED ||\n\t\t\t\tpointAttribute === PointAttribute.NORMAL_FLOATS ||\n\t\t\t\tpointAttribute === PointAttribute.NORMAL ||\n\t\t\t\tpointAttribute === PointAttribute.NORMAL_OCT16) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n}\n","import {PointCloudTreeNode} from \"./PointCloudTree.js\";\nimport {PointAttributes, PointAttribute, PointAttributeTypes} from \"./loader/PointAttributes.js\";\n\nclass U {\n\tstatic toVector3(v, offset) {\n\t\treturn new THREE.Vector3().fromArray(v, offset || 0);\n\t}\n\n\tstatic toBox3(b) {\n\t\treturn new THREE.Box3(U.toVector3(b), U.toVector3(b, 3));\n\t};\n\n\tstatic findDim(schema, name) {\n\t\tvar dim = schema.find((dim) => dim.name == name);\n\t\tif (!dim) throw new Error('Failed to find ' + name + ' in schema');\n\t\treturn dim;\n\t}\n\n\tstatic sphereFrom(b) {\n\t\treturn b.getBoundingSphere(new THREE.Sphere());\n\t}\n};\n\nexport class PointCloudEptGeometry {\n\tconstructor(url, info) {\n\t\tlet version = info.version;\n\t\tlet schema = info.schema;\n\t\tlet bounds = info.bounds;\n\t\tlet boundsConforming = info.boundsConforming;\n\n\t\tlet xyz = [\n\t\t\tU.findDim(schema, 'X'),\n\t\t\tU.findDim(schema, 'Y'),\n\t\t\tU.findDim(schema, 'Z')\n\t\t];\n\t\tlet scale = xyz.map((d) => d.scale || 1);\n\t\tlet offset = xyz.map((d) => d.offset || 0);\n\t\tthis.eptScale = U.toVector3(scale);\n\t\tthis.eptOffset = U.toVector3(offset);\n\n\t\tthis.url = url;\n\t\tthis.info = info;\n\t\tthis.type = 'ept';\n\n\t\tthis.schema = schema;\n\t\tthis.span = info.span || info.ticks;\n\t\tthis.boundingBox = U.toBox3(bounds);\n\t\tthis.tightBoundingBox = U.toBox3(boundsConforming);\n\t\tthis.offset = U.toVector3([0, 0, 0]);\n\t\tthis.boundingSphere = U.sphereFrom(this.boundingBox);\n\t\tthis.tightBoundingSphere = U.sphereFrom(this.tightBoundingBox);\n\t\tthis.version = new Potree.Version('1.7');\n\n\t\tthis.projection = null;\n\t\tthis.fallbackProjection = null;\n\n\t\tif (info.srs && info.srs.horizontal) {\n\t\t\tthis.projection = info.srs.authority + ':' + info.srs.horizontal;\n\t\t}\n\n\t\tif (info.srs.wkt) {\n\t\t\tif (!this.projection) this.projection = info.srs.wkt;\n\t\t\telse this.fallbackProjection = info.srs.wkt;\n\t\t}\n\n\t\t{ \n\t\t\t// TODO [mschuetz]: named projections that proj4 can't handle seem to cause problems.\n\t\t\t// remove them for now\n\n\t\t\ttry{\n\t\t\t\tproj4(this.projection);\n\t\t\t}catch(e){\n\t\t\t\tthis.projection = null;\n\t\t\t}\n\n\t\t\n\n\t\t}\n\n\t\t\n\t\t{\n\t\t\tconst attributes = new PointAttributes();\n\n\t\t\tattributes.add(PointAttribute.POSITION_CARTESIAN);\n\t\t\tattributes.add(new PointAttribute(\"rgba\", PointAttributeTypes.DATA_TYPE_UINT8, 4));\n\t\t\tattributes.add(new PointAttribute(\"intensity\", PointAttributeTypes.DATA_TYPE_UINT16, 1));\n\t\t\tattributes.add(new PointAttribute(\"classification\", PointAttributeTypes.DATA_TYPE_UINT8, 1));\n\t\t\tattributes.add(new PointAttribute(\"gps-time\", PointAttributeTypes.DATA_TYPE_DOUBLE, 1));\n\t\t\tattributes.add(new PointAttribute(\"returnNumber\", PointAttributeTypes.DATA_TYPE_UINT8, 1));\n\t\t\tattributes.add(new PointAttribute(\"number of returns\", PointAttributeTypes.DATA_TYPE_UINT8, 1));\n\t\t\tattributes.add(new PointAttribute(\"return number\", PointAttributeTypes.DATA_TYPE_UINT8, 1));\n\t\t\tattributes.add(new PointAttribute(\"source id\", PointAttributeTypes.DATA_TYPE_UINT16, 1));\n\n\t\t\tthis.pointAttributes = attributes;\n\t\t}\n\n\n\n\t\tthis.spacing =\n\t\t\t(this.boundingBox.max.x - this.boundingBox.min.x) / this.span;\n\n\t\tlet hierarchyType = info.hierarchyType || 'json';\n\n\t\tconst dataType = info.dataType;\n\t\tif (dataType == 'laszip') {\n\t\t\tthis.loader = new Potree.EptLaszipLoader();\n\t\t}\n\t\telse if (dataType == 'binary') {\n\t\t\tthis.loader = new Potree.EptBinaryLoader();\n\t\t}\n\t\telse if (dataType == 'zstandard') {\n\t\t\tthis.loader = new Potree.EptZstandardLoader();\n\t\t}\n\t\telse {\n\t\t\tthrow new Error('Could not read data type: ' + dataType);\n\t\t}\n\t}\n};\n\nexport class EptKey {\n\tconstructor(ept, b, d, x, y, z) {\n\t\tthis.ept = ept;\n\t\tthis.b = b;\n\t\tthis.d = d;\n\t\tthis.x = x || 0;\n\t\tthis.y = y || 0;\n\t\tthis.z = z || 0;\n\t}\n\n\tname() {\n\t\treturn this.d + '-' + this.x + '-' + this.y + '-' + this.z;\n\t}\n\n\tstep(a, b, c) {\n\t\tlet min = this.b.min.clone();\n\t\tlet max = this.b.max.clone();\n\t\tlet dst = new THREE.Vector3().subVectors(max, min);\n\n\t\tif (a)\tmin.x += dst.x / 2;\n\t\telse\tmax.x -= dst.x / 2;\n\n\t\tif (b)\tmin.y += dst.y / 2;\n\t\telse\tmax.y -= dst.y / 2;\n\n\t\tif (c)\tmin.z += dst.z / 2;\n\t\telse\tmax.z -= dst.z / 2;\n\n\t\treturn new Potree.EptKey(\n\t\t\t\tthis.ept,\n\t\t\t\tnew THREE.Box3(min, max),\n\t\t\t\tthis.d + 1,\n\t\t\t\tthis.x * 2 + a,\n\t\t\t\tthis.y * 2 + b,\n\t\t\t\tthis.z * 2 + c);\n\t}\n\n\tchildren() {\n\t\tvar result = [];\n\t\tfor (var a = 0; a < 2; ++a) {\n\t\t\tfor (var b = 0; b < 2; ++b) {\n\t\t\t\tfor (var c = 0; c < 2; ++c) {\n\t\t\t\t\tvar add = this.step(a, b, c).name();\n\t\t\t\t\tif (!result.includes(add)) result = result.concat(add);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n}\n\nexport class PointCloudEptGeometryNode extends PointCloudTreeNode {\n\tconstructor(ept, b, d, x, y, z) {\n\t\tsuper();\n\n\t\tthis.ept = ept;\n\t\tthis.key = new Potree.EptKey(\n\t\t\t\tthis.ept,\n\t\t\t\tb || this.ept.boundingBox,\n\t\t\t\td || 0,\n\t\t\t\tx,\n\t\t\t\ty,\n\t\t\t\tz);\n\n\t\tthis.id = PointCloudEptGeometryNode.IDCount++;\n\t\tthis.geometry = null;\n\t\tthis.boundingBox = this.key.b;\n\t\tthis.tightBoundingBox = this.boundingBox;\n\t\tthis.spacing = this.ept.spacing / Math.pow(2, this.key.d);\n\t\tthis.boundingSphere = U.sphereFrom(this.boundingBox);\n\n\t\t// These are set during hierarchy loading.\n\t\tthis.hasChildren = false;\n\t\tthis.children = { };\n\t\tthis.numPoints = -1;\n\n\t\tthis.level = this.key.d;\n\t\tthis.loaded = false;\n\t\tthis.loading = false;\n\t\tthis.oneTimeDisposeHandlers = [];\n\n\t\tlet k = this.key;\n\t\tthis.name = this.toPotreeName(k.d, k.x, k.y, k.z);\n\t\tthis.index = parseInt(this.name.charAt(this.name.length - 1));\n\t}\n\n\tisGeometryNode() { return true; }\n\tgetLevel() { return this.level; }\n\tisTreeNode() { return false; }\n\tisLoaded() { return this.loaded; }\n\tgetBoundingSphere() { return this.boundingSphere; }\n\tgetBoundingBox() { return this.boundingBox; }\n\turl() { return this.ept.url + 'ept-data/' + this.filename(); }\n\tgetNumPoints() { return this.numPoints; }\n\n\tfilename() { return this.key.name(); }\n\n\tgetChildren() {\n\t\tlet children = [];\n\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\tif (this.children[i]) {\n\t\t\t\tchildren.push(this.children[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn children;\n\t}\n\n\taddChild(child) {\n\t\tthis.children[child.index] = child;\n\t\tchild.parent = this;\n\t}\n\n\tload() {\n\t\tif (this.loaded || this.loading) return;\n\t\tif (Potree.numNodesLoading >= Potree.maxNodesLoading) return;\n\n\t\tthis.loading = true;\n\t\t++Potree.numNodesLoading;\n\n\t\tif (this.numPoints == -1) this.loadHierarchy();\n\t\tthis.loadPoints();\n\t}\n\n\tloadPoints(){\n\t\tthis.ept.loader.load(this);\n\t}\n\n\tasync loadHierarchy() {\n\t\tlet nodes = { };\n\t\tnodes[this.filename()] = this;\n\t\tthis.hasChildren = false;\n\n\t\tlet eptHierarchyFile =\n\t\t\t`${this.ept.url}ept-hierarchy/${this.filename()}.json`;\n\n\t\tlet response = await fetch(eptHierarchyFile);\n\t\tlet hier = await response.json();\n\n\t\t// Since we want to traverse top-down, and 10 comes\n\t\t// lexicographically before 9 (for example), do a deep sort.\n\t\tvar keys = Object.keys(hier).sort((a, b) => {\n\t\t\tlet [da, xa, ya, za] = a.split('-').map((n) => parseInt(n, 10));\n\t\t\tlet [db, xb, yb, zb] = b.split('-').map((n) => parseInt(n, 10));\n\t\t\tif (da < db) return -1; if (da > db) return 1;\n\t\t\tif (xa < xb) return -1; if (xa > xb) return 1;\n\t\t\tif (ya < yb) return -1; if (ya > yb) return 1;\n\t\t\tif (za < zb) return -1; if (za > zb) return 1;\n\t\t\treturn 0;\n\t\t});\n\n\t\tkeys.forEach((v) => {\n\t\t\tlet [d, x, y, z] = v.split('-').map((n) => parseInt(n, 10));\n\t\t\tlet a = x & 1, b = y & 1, c = z & 1;\n\t\t\tlet parentName =\n\t\t\t\t(d - 1) + '-' + (x >> 1) + '-' + (y >> 1) + '-' + (z >> 1);\n\n\t\t\tlet parentNode = nodes[parentName];\n\t\t\tif (!parentNode) return;\n\t\t\tparentNode.hasChildren = true;\n\n\t\t\tlet key = parentNode.key.step(a, b, c);\n\n\t\t\tlet node = new Potree.PointCloudEptGeometryNode(\n\t\t\t\t\tthis.ept,\n\t\t\t\t\tkey.b,\n\t\t\t\t\tkey.d,\n\t\t\t\t\tkey.x,\n\t\t\t\t\tkey.y,\n\t\t\t\t\tkey.z);\n\n\t\t\tnode.level = d;\n\t\t\tnode.numPoints = hier[v];\n\n\t\t\tparentNode.addChild(node);\n\t\t\tnodes[key.name()] = node;\n\t\t});\n\t}\n\n\tdoneLoading(bufferGeometry, tightBoundingBox, np, mean) {\n\t\tbufferGeometry.boundingBox = this.boundingBox;\n\t\tthis.geometry = bufferGeometry;\n\t\tthis.tightBoundingBox = tightBoundingBox;\n\t\tthis.numPoints = np;\n\t\tthis.mean = mean;\n\t\tthis.loaded = true;\n\t\tthis.loading = false;\n\t\t--Potree.numNodesLoading;\n\t}\n\n\ttoPotreeName(d, x, y, z) {\n\t\tvar name = 'r';\n\n\t\tfor (var i = 0; i < d; ++i) {\n\t\t\tvar shift = d - i - 1;\n\t\t\tvar mask = 1 << shift;\n\t\t\tvar step = 0;\n\n\t\t\tif (x & mask) step += 4;\n\t\t\tif (y & mask) step += 2;\n\t\t\tif (z & mask) step += 1;\n\n\t\t\tname += step;\n\t\t}\n\n\t\treturn name;\n\t}\n\n\tdispose() {\n\t\tif (this.geometry && this.parent != null) {\n\t\t\tthis.geometry.dispose();\n\t\t\tthis.geometry = null;\n\t\t\tthis.loaded = false;\n\n\t\t\t// this.dispatchEvent( { type: 'dispose' } );\n\t\t\tfor (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) {\n\t\t\t\tlet handler = this.oneTimeDisposeHandlers[i];\n\t\t\t\thandler();\n\t\t\t}\n\t\t\tthis.oneTimeDisposeHandlers = [];\n\t\t}\n\t}\n}\n\nPointCloudEptGeometryNode.IDCount = 0;\n\n","\n\nimport {PointCloudTreeNode} from \"./PointCloudTree.js\";\nimport {XHRFactory} from \"./XHRFactory.js\";\nimport {Utils} from \"./utils.js\";\n\nexport class PointCloudOctreeGeometry{\n\n\tconstructor(){\n\t\tthis.url = null;\n\t\tthis.octreeDir = null;\n\t\tthis.spacing = 0;\n\t\tthis.boundingBox = null;\n\t\tthis.root = null;\n\t\tthis.nodes = null;\n\t\tthis.pointAttributes = null;\n\t\tthis.hierarchyStepSize = -1;\n\t\tthis.loader = null;\n\t}\n\t\n}\n\nexport class PointCloudOctreeGeometryNode extends PointCloudTreeNode{\n\n\tconstructor(name, pcoGeometry, boundingBox){\n\t\tsuper();\n\n\t\tthis.id = PointCloudOctreeGeometryNode.IDCount++;\n\t\tthis.name = name;\n\t\tthis.index = parseInt(name.charAt(name.length - 1));\n\t\tthis.pcoGeometry = pcoGeometry;\n\t\tthis.geometry = null;\n\t\tthis.boundingBox = boundingBox;\n\t\tthis.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\n\t\tthis.children = {};\n\t\tthis.numPoints = 0;\n\t\tthis.level = null;\n\t\tthis.loaded = false;\n\t\tthis.oneTimeDisposeHandlers = [];\n\t}\n\n\tisGeometryNode(){\n\t\treturn true;\n\t}\n\n\tgetLevel(){\n\t\treturn this.level;\n\t}\n\n\tisTreeNode(){\n\t\treturn false;\n\t}\n\n\tisLoaded(){\n\t\treturn this.loaded;\n\t}\n\n\tgetBoundingSphere(){\n\t\treturn this.boundingSphere;\n\t}\n\n\tgetBoundingBox(){\n\t\treturn this.boundingBox;\n\t}\n\n\tgetChildren(){\n\t\tlet children = [];\n\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\tif (this.children[i]) {\n\t\t\t\tchildren.push(this.children[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn children;\n\t}\n\n\tgetBoundingBox(){\n\t\treturn this.boundingBox;\n\t}\n\n\tgetURL(){\n\t\tlet url = '';\n\n\t\tlet version = this.pcoGeometry.loader.version;\n\n\t\tif (version.equalOrHigher('1.5')) {\n\t\t\turl = this.pcoGeometry.octreeDir + '/' + this.getHierarchyPath() + '/' + this.name;\n\t\t} else if (version.equalOrHigher('1.4')) {\n\t\t\turl = this.pcoGeometry.octreeDir + '/' + this.name;\n\t\t} else if (version.upTo('1.3')) {\n\t\t\turl = this.pcoGeometry.octreeDir + '/' + this.name;\n\t\t}\n\n\t\treturn url;\n\t}\n\n\tgetHierarchyPath(){\n\t\tlet path = 'r/';\n\n\t\tlet hierarchyStepSize = this.pcoGeometry.hierarchyStepSize;\n\t\tlet indices = this.name.substr(1);\n\n\t\tlet numParts = Math.floor(indices.length / hierarchyStepSize);\n\t\tfor (let i = 0; i < numParts; i++) {\n\t\t\tpath += indices.substr(i * hierarchyStepSize, hierarchyStepSize) + '/';\n\t\t}\n\n\t\tpath = path.slice(0, -1);\n\n\t\treturn path;\n\t}\n\n\taddChild(child) {\n\t\tthis.children[child.index] = child;\n\t\tchild.parent = this;\n\t}\n\n\tload(){\n\t\tif (this.loading === true || this.loaded === true || Potree.numNodesLoading >= Potree.maxNodesLoading) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.loading = true;\n\n\t\tPotree.numNodesLoading++;\n\n\t\tif (this.pcoGeometry.loader.version.equalOrHigher('1.5')) {\n\t\t\tif ((this.level % this.pcoGeometry.hierarchyStepSize) === 0 && this.hasChildren) {\n\t\t\t\tthis.loadHierachyThenPoints();\n\t\t\t} else {\n\t\t\t\tthis.loadPoints();\n\t\t\t}\n\t\t} else {\n\t\t\tthis.loadPoints();\n\t\t}\n\t}\n\n\tloadPoints(){\n\t\tthis.pcoGeometry.loader.load(this);\n\t}\n\n\tloadHierachyThenPoints(){\n\t\tlet node = this;\n\n\t\t// load hierarchy\n\t\tlet callback = function (node, hbuffer) {\n\n\t\t\tlet tStart = performance.now();\n\n\t\t\tlet view = new DataView(hbuffer);\n\n\t\t\tlet stack = [];\n\t\t\tlet children = view.getUint8(0);\n\t\t\tlet numPoints = view.getUint32(1, true);\n\t\t\tnode.numPoints = numPoints;\n\t\t\tstack.push({children: children, numPoints: numPoints, name: node.name});\n\n\t\t\tlet decoded = [];\n\n\t\t\tlet offset = 5;\n\t\t\twhile (stack.length > 0) {\n\t\t\t\tlet snode = stack.shift();\n\t\t\t\tlet mask = 1;\n\t\t\t\tfor (let i = 0; i < 8; i++) {\n\t\t\t\t\tif ((snode.children & mask) !== 0) {\n\t\t\t\t\t\tlet childName = snode.name + i;\n\n\t\t\t\t\t\tlet childChildren = view.getUint8(offset);\n\t\t\t\t\t\tlet childNumPoints = view.getUint32(offset + 1, true);\n\n\t\t\t\t\t\tstack.push({children: childChildren, numPoints: childNumPoints, name: childName});\n\n\t\t\t\t\t\tdecoded.push({children: childChildren, numPoints: childNumPoints, name: childName});\n\n\t\t\t\t\t\toffset += 5;\n\t\t\t\t\t}\n\n\t\t\t\t\tmask = mask * 2;\n\t\t\t\t}\n\n\t\t\t\tif (offset === hbuffer.byteLength) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// console.log(decoded);\n\n\t\t\tlet nodes = {};\n\t\t\tnodes[node.name] = node;\n\t\t\tlet pco = node.pcoGeometry;\n\n\t\t\tfor (let i = 0; i < decoded.length; i++) {\n\t\t\t\tlet name = decoded[i].name;\n\t\t\t\tlet decodedNumPoints = decoded[i].numPoints;\n\t\t\t\tlet index = parseInt(name.charAt(name.length - 1));\n\t\t\t\tlet parentName = name.substring(0, name.length - 1);\n\t\t\t\tlet parentNode = nodes[parentName];\n\t\t\t\tlet level = name.length - 1;\n\t\t\t\tlet boundingBox = Utils.createChildAABB(parentNode.boundingBox, index);\n\n\t\t\t\tlet currentNode = new PointCloudOctreeGeometryNode(name, pco, boundingBox);\n\t\t\t\tcurrentNode.level = level;\n\t\t\t\tcurrentNode.numPoints = decodedNumPoints;\n\t\t\t\tcurrentNode.hasChildren = decoded[i].children > 0;\n\t\t\t\tcurrentNode.spacing = pco.spacing / Math.pow(2, level);\n\t\t\t\tparentNode.addChild(currentNode);\n\t\t\t\tnodes[name] = currentNode;\n\t\t\t}\n\n\t\t\tlet duration = performance.now() - tStart;\n\t\t\tif(duration > 5){\n\t\t\t\tlet msg = `duration: ${duration}ms, numNodes: ${decoded.length}`;\n\t\t\t\tconsole.log(msg);\n\t\t\t}\n\n\t\t\tnode.loadPoints();\n\t\t};\n\t\tif ((node.level % node.pcoGeometry.hierarchyStepSize) === 0) {\n\t\t\t// let hurl = node.pcoGeometry.octreeDir + \"/../hierarchy/\" + node.name + \".hrc\";\n\t\t\tlet hurl = node.pcoGeometry.octreeDir + '/' + node.getHierarchyPath() + '/' + node.name + '.hrc';\n\n\t\t\tlet xhr = XHRFactory.createXMLHttpRequest();\n\t\t\txhr.open('GET', hurl, true);\n\t\t\txhr.responseType = 'arraybuffer';\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined');\n\t\t\txhr.onreadystatechange = () => {\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\tif (xhr.status === 200 || xhr.status === 0) {\n\t\t\t\t\t\tlet hbuffer = xhr.response;\n\t\t\t\t\t\tcallback(node, hbuffer);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.log('Failed to load file! HTTP status: ' + xhr.status + ', file: ' + hurl);\n\t\t\t\t\t\tPotree.numNodesLoading--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\ttry {\n\t\t\t\txhr.send(null);\n\t\t\t} catch (e) {\n\t\t\t\tconsole.log('fehler beim laden der punktwolke: ' + e);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetNumPoints(){\n\t\treturn this.numPoints;\n\t}\n\n\tdispose(){\n\t\tif (this.geometry && this.parent != null) {\n\t\t\tthis.geometry.dispose();\n\t\t\tthis.geometry = null;\n\t\t\tthis.loaded = false;\n\n\t\t\tthis.dispatchEvent( { type: 'dispose' } );\n\t\t\t\n\t\t\tfor (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) {\n\t\t\t\tlet handler = this.oneTimeDisposeHandlers[i];\n\t\t\t\thandler();\n\t\t\t}\n\t\t\tthis.oneTimeDisposeHandlers = [];\n\t\t}\n\t}\n\t\n}\n\nPointCloudOctreeGeometryNode.IDCount = 0;\n","\n// -------------------------------------------\n// to get a ready to use gradient array from a chroma.js gradient:\n// http://gka.github.io/chroma.js/\n// -------------------------------------------\n//\n// let stops = [];\n// for(let i = 0; i <= 10; i++){\n//\tlet range = chroma.scale(['yellow', 'navy']).mode('lch').domain([10,0])(i)._rgb\n//\t\t.slice(0, 3)\n//\t\t.map(v => (v / 255).toFixed(4))\n//\t\t.join(\", \");\n//\n//\tlet line = `[${i / 10}, new THREE.Color(${range})],`;\n//\n//\tstops.push(line);\n// }\n// stops.join(\"\\n\");\n//\n//\n//\n// -------------------------------------------\n// to get a ready to use gradient array from matplotlib:\n// -------------------------------------------\n// import matplotlib.pyplot as plt\n// import matplotlib.colors as colors\n//\n// norm = colors.Normalize(vmin=0,vmax=1)\n// cmap = plt.cm.viridis\n//\n// for i in range(0,11):\n//\tu = i / 10\n//\trgb = cmap(norm(u))[0:3]\n//\trgb = [\"{0:.3f}\".format(v) for v in rgb]\n//\trgb = \"[\" + str(u) + \", new THREE.Color(\" + \", \".join(rgb) + \")],\"\n//\tprint(rgb)\n\nlet Gradients = {\n\t// From chroma spectral http://gka.github.io/chroma.js/\n\tSPECTRAL: [\n\t\t[0, new THREE.Color(0.3686, 0.3098, 0.6353)],\n\t\t[0.1, new THREE.Color(0.1961, 0.5333, 0.7412)],\n\t\t[0.2, new THREE.Color(0.4000, 0.7608, 0.6471)],\n\t\t[0.3, new THREE.Color(0.6706, 0.8667, 0.6431)],\n\t\t[0.4, new THREE.Color(0.9020, 0.9608, 0.5961)],\n\t\t[0.5, new THREE.Color(1.0000, 1.0000, 0.7490)],\n\t\t[0.6, new THREE.Color(0.9961, 0.8784, 0.5451)],\n\t\t[0.7, new THREE.Color(0.9922, 0.6824, 0.3804)],\n\t\t[0.8, new THREE.Color(0.9569, 0.4275, 0.2627)],\n\t\t[0.9, new THREE.Color(0.8353, 0.2431, 0.3098)],\n\t\t[1, new THREE.Color(0.6196, 0.0039, 0.2588)]\n\t],\n\tPLASMA: [\n\t\t[0.0, new THREE.Color(0.241, 0.015, 0.610)],\n\t\t[0.1, new THREE.Color(0.387, 0.001, 0.654)],\n\t\t[0.2, new THREE.Color(0.524, 0.025, 0.653)],\n\t\t[0.3, new THREE.Color(0.651, 0.125, 0.596)],\n\t\t[0.4, new THREE.Color(0.752, 0.227, 0.513)],\n\t\t[0.5, new THREE.Color(0.837, 0.329, 0.431)],\n\t\t[0.6, new THREE.Color(0.907, 0.435, 0.353)],\n\t\t[0.7, new THREE.Color(0.963, 0.554, 0.272)],\n\t\t[0.8, new THREE.Color(0.992, 0.681, 0.195)],\n\t\t[0.9, new THREE.Color(0.987, 0.822, 0.144)],\n\t\t[1.0, new THREE.Color(0.940, 0.975, 0.131)]\n\t],\n\tYELLOW_GREEN: [\n\t\t[0, new THREE.Color(0.1647, 0.2824, 0.3451)],\n\t\t[0.1, new THREE.Color(0.1338, 0.3555, 0.4227)],\n\t\t[0.2, new THREE.Color(0.0610, 0.4319, 0.4864)],\n\t\t[0.3, new THREE.Color(0.0000, 0.5099, 0.5319)],\n\t\t[0.4, new THREE.Color(0.0000, 0.5881, 0.5569)],\n\t\t[0.5, new THREE.Color(0.1370, 0.6650, 0.5614)],\n\t\t[0.6, new THREE.Color(0.2906, 0.7395, 0.5477)],\n\t\t[0.7, new THREE.Color(0.4453, 0.8099, 0.5201)],\n\t\t[0.8, new THREE.Color(0.6102, 0.8748, 0.4850)],\n\t\t[0.9, new THREE.Color(0.7883, 0.9323, 0.4514)],\n\t\t[1, new THREE.Color(0.9804, 0.9804, 0.4314)]\n\t],\n\tVIRIDIS: [\n\t\t[0.0, new THREE.Color(0.267, 0.005, 0.329)],\n\t\t[0.1, new THREE.Color(0.283, 0.141, 0.458)],\n\t\t[0.2, new THREE.Color(0.254, 0.265, 0.530)],\n\t\t[0.3, new THREE.Color(0.207, 0.372, 0.553)],\n\t\t[0.4, new THREE.Color(0.164, 0.471, 0.558)],\n\t\t[0.5, new THREE.Color(0.128, 0.567, 0.551)],\n\t\t[0.6, new THREE.Color(0.135, 0.659, 0.518)],\n\t\t[0.7, new THREE.Color(0.267, 0.749, 0.441)],\n\t\t[0.8, new THREE.Color(0.478, 0.821, 0.318)],\n\t\t[0.9, new THREE.Color(0.741, 0.873, 0.150)],\n\t\t[1.0, new THREE.Color(0.993, 0.906, 0.144)]\n\t],\n\tINFERNO: [\n\t\t[0.0, new THREE.Color(0.077, 0.042, 0.206)],\n\t\t[0.1, new THREE.Color(0.225, 0.036, 0.388)],\n\t\t[0.2, new THREE.Color(0.373, 0.074, 0.432)],\n\t\t[0.3, new THREE.Color(0.522, 0.128, 0.420)],\n\t\t[0.4, new THREE.Color(0.665, 0.182, 0.370)],\n\t\t[0.5, new THREE.Color(0.797, 0.255, 0.287)],\n\t\t[0.6, new THREE.Color(0.902, 0.364, 0.184)],\n\t\t[0.7, new THREE.Color(0.969, 0.516, 0.063)],\n\t\t[0.8, new THREE.Color(0.988, 0.683, 0.072)],\n\t\t[0.9, new THREE.Color(0.961, 0.859, 0.298)],\n\t\t[1.0, new THREE.Color(0.988, 0.998, 0.645)]\n\t],\n\tGRAYSCALE: [\n\t\t[0, new THREE.Color(0, 0, 0)],\n\t\t[1, new THREE.Color(1, 1, 1)]\n\t],\n\t// 16 samples of the TURBU color scheme\n\t// values taken from: https://gist.github.com/mikhailov-work/ee72ba4191942acecc03fe6da94fc73f\n\t// original file licensed under Apache-2.0\n\tTURBO: [\n\t\t[0.00, new THREE.Color(0.18995, 0.07176, 0.23217)],\n\t\t[0.07, new THREE.Color(0.25107, 0.25237, 0.63374)],\n\t\t[0.13, new THREE.Color(0.27628, 0.42118, 0.89123)],\n\t\t[0.20, new THREE.Color(0.25862, 0.57958, 0.99876)],\n\t\t[0.27, new THREE.Color(0.15844, 0.73551, 0.92305)],\n\t\t[0.33, new THREE.Color(0.09267, 0.86554, 0.7623)],\n\t\t[0.40, new THREE.Color(0.19659, 0.94901, 0.59466)],\n\t\t[0.47, new THREE.Color(0.42778, 0.99419, 0.38575)],\n\t\t[0.53, new THREE.Color(0.64362, 0.98999, 0.23356)],\n\t\t[0.60, new THREE.Color(0.80473, 0.92452, 0.20459)],\n\t\t[0.67, new THREE.Color(0.93301, 0.81236, 0.22667)],\n\t\t[0.73, new THREE.Color(0.99314, 0.67408, 0.20348)],\n\t\t[0.80, new THREE.Color(0.9836, 0.49291, 0.12849)],\n\t\t[0.87, new THREE.Color(0.92105, 0.31489, 0.05475)],\n\t\t[0.93, new THREE.Color(0.81608, 0.18462, 0.01809)],\n\t\t[1.00, new THREE.Color(0.66449, 0.08436, 0.00424)],\n\t],\n\tRAINBOW: [\n\t\t[0, new THREE.Color(0.278, 0, 0.714)],\n\t\t[1 / 6, new THREE.Color(0, 0, 1)],\n\t\t[2 / 6, new THREE.Color(0, 1, 1)],\n\t\t[3 / 6, new THREE.Color(0, 1, 0)],\n\t\t[4 / 6, new THREE.Color(1, 1, 0)],\n\t\t[5 / 6, new THREE.Color(1, 0.64, 0)],\n\t\t[1, new THREE.Color(1, 0, 0)]\n\t],\n\tCONTOUR: [\n\t\t[0.00, new THREE.Color(0, 0, 0)],\n\t\t[0.03, new THREE.Color(0, 0, 0)],\n\t\t[0.04, new THREE.Color(1, 1, 1)],\n\t\t[1.00, new THREE.Color(1, 1, 1)]\n\t],\n};\n\n\nexport {Gradients};\n","let Shaders = {};\n\nShaders[\"pointcloud.vs\"] = `\nprecision highp float;\nprecision highp int;\n\n#define max_clip_polygons 8\n#define PI 3.141592653589793\n\nattribute vec3 position;\nattribute vec3 color;\nattribute float intensity;\nattribute float classification;\nattribute float returnNumber;\nattribute float numberOfReturns;\nattribute float pointSourceID;\nattribute vec4 indices;\nattribute float spacing;\nattribute float gpsTime;\nattribute vec3 normal;\nattribute float aExtra;\n\nuniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat4 uViewInv;\n\nuniform float uScreenWidth;\nuniform float uScreenHeight;\nuniform float fov;\nuniform float near;\nuniform float far;\n\nuniform bool uDebug;\n\nuniform bool uUseOrthographicCamera;\nuniform float uOrthoWidth;\nuniform float uOrthoHeight;\n\n#define CLIPTASK_NONE 0\n#define CLIPTASK_HIGHLIGHT 1\n#define CLIPTASK_SHOW_INSIDE 2\n#define CLIPTASK_SHOW_OUTSIDE 3\n\n#define CLIPMETHOD_INSIDE_ANY 0\n#define CLIPMETHOD_INSIDE_ALL 1\n\nuniform int clipTask;\nuniform int clipMethod;\n#if defined(num_clipboxes) && num_clipboxes > 0\n\tuniform mat4 clipBoxes[num_clipboxes];\n#endif\n\n#if defined(num_clipspheres) && num_clipspheres > 0\n\tuniform mat4 uClipSpheres[num_clipspheres];\n#endif\n\n#if defined(num_clippolygons) && num_clippolygons > 0\n\tuniform int uClipPolygonVCount[num_clippolygons];\n\tuniform vec3 uClipPolygonVertices[num_clippolygons * 8];\n\tuniform mat4 uClipPolygonWVP[num_clippolygons];\n#endif\n\n\nuniform float size;\nuniform float minSize;\nuniform float maxSize;\n\nuniform float uPCIndex;\nuniform float uOctreeSpacing;\nuniform float uNodeSpacing;\nuniform float uOctreeSize;\nuniform vec3 uBBSize;\nuniform float uLevel;\nuniform float uVNStart;\nuniform bool uIsLeafNode;\n\nuniform vec3 uColor;\nuniform float uOpacity;\n\nuniform vec2 elevationRange;\nuniform vec2 intensityRange;\n\nuniform vec2 uFilterReturnNumberRange;\nuniform vec2 uFilterNumberOfReturnsRange;\nuniform vec2 uFilterPointSourceIDClipRange;\nuniform vec2 uFilterGPSTimeClipRange;\nuniform float uGpsScale;\nuniform float uGpsOffset;\n\nuniform vec2 uNormalizedGpsBufferRange;\n\nuniform vec3 uIntensity_gbc;\nuniform vec3 uRGB_gbc;\nuniform vec3 uExtra_gbc;\n\nuniform float uTransition;\nuniform float wRGB;\nuniform float wIntensity;\nuniform float wElevation;\nuniform float wClassification;\nuniform float wReturnNumber;\nuniform float wSourceID;\n\nuniform vec2 uExtraNormalizedRange;\nuniform vec2 uExtraRange;\nuniform float uExtraScale;\nuniform float uExtraOffset;\n\nuniform vec3 uShadowColor;\n\nuniform sampler2D visibleNodes;\nuniform sampler2D gradient;\nuniform sampler2D classificationLUT;\n\n#if defined(color_type_matcap)\nuniform sampler2D matcapTextureUniform;\n#endif\nuniform bool backfaceCulling;\n\n#if defined(num_shadowmaps) && num_shadowmaps > 0\nuniform sampler2D uShadowMap[num_shadowmaps];\nuniform mat4 uShadowWorldView[num_shadowmaps];\nuniform mat4 uShadowProj[num_shadowmaps];\n#endif\n\nvarying vec3\tvColor;\nvarying float\tvLogDepth;\nvarying vec3\tvViewPosition;\nvarying float \tvRadius;\nvarying float \tvPointSize;\n\n\nfloat round(float number){\n\treturn floor(number + 0.5);\n}\n\n// \n// ### ######## ### ######## ######## #### ## ## ######## ###### #### ######## ######## ###### \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## ######## ## ## ## ## ###### ###### ## ## ###### ###### \n// ######### ## ## ######### ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ######## ## ## ## ## #### ### ######## ###### #### ######## ######## ###### \n// \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\n\n// ---------------------\n// OCTREE\n// ---------------------\n\n#if (defined(adaptive_point_size) || defined(color_type_level_of_detail)) && defined(tree_type_octree)\n/**\n * number of 1-bits up to inclusive index position\n * number is treated as if it were an integer in the range 0-255\n *\n */\nint numberOfOnes(int number, int index){\n\tint numOnes = 0;\n\tint tmp = 128;\n\tfor(int i = 7; i >= 0; i--){\n\t\t\n\t\tif(number >= tmp){\n\t\t\tnumber = number - tmp;\n\n\t\t\tif(i <= index){\n\t\t\t\tnumOnes++;\n\t\t\t}\n\t\t}\n\t\t\n\t\ttmp = tmp / 2;\n\t}\n\n\treturn numOnes;\n}\n\n\n/**\n * checks whether the bit at index is 1\n * number is treated as if it were an integer in the range 0-255\n *\n */\nbool isBitSet(int number, int index){\n\n\t// weird multi else if due to lack of proper array, int and bitwise support in WebGL 1.0\n\tint powi = 1;\n\tif(index == 0){\n\t\tpowi = 1;\n\t}else if(index == 1){\n\t\tpowi = 2;\n\t}else if(index == 2){\n\t\tpowi = 4;\n\t}else if(index == 3){\n\t\tpowi = 8;\n\t}else if(index == 4){\n\t\tpowi = 16;\n\t}else if(index == 5){\n\t\tpowi = 32;\n\t}else if(index == 6){\n\t\tpowi = 64;\n\t}else if(index == 7){\n\t\tpowi = 128;\n\t}else{\n\t\treturn false;\n\t}\n\n\tint ndp = number / powi;\n\n\treturn mod(float(ndp), 2.0) != 0.0;\n}\n\n\n/**\n * find the LOD at the point position\n */\nfloat getLOD(){\n\t\n\tvec3 offset = vec3(0.0, 0.0, 0.0);\n\tint iOffset = int(uVNStart);\n\tfloat depth = uLevel;\n\tfor(float i = 0.0; i <= 30.0; i++){\n\t\tfloat nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0);\n\t\t\n\t\tvec3 index3d = (position-offset) / nodeSizeAtLevel;\n\t\tindex3d = floor(index3d + 0.5);\n\t\tint index = int(round(4.0 * index3d.x + 2.0 * index3d.y + index3d.z));\n\t\t\n\t\tvec4 value = texture2D(visibleNodes, vec2(float(iOffset) / 2048.0, 0.0));\n\t\tint mask = int(round(value.r * 255.0));\n\n\t\tif(isBitSet(mask, index)){\n\t\t\t// there are more visible child nodes at this position\n\t\t\tint advanceG = int(round(value.g * 255.0)) * 256;\n\t\t\tint advanceB = int(round(value.b * 255.0));\n\t\t\tint advanceChild = numberOfOnes(mask, index - 1);\n\t\t\tint advance = advanceG + advanceB + advanceChild;\n\n\t\t\tiOffset = iOffset + advance;\n\t\t\t\n\t\t\tdepth++;\n\t\t}else{\n\t\t\t// no more visible child nodes at this position\n\t\t\t//return value.a * 255.0;\n\n\t\t\tfloat lodOffset = (255.0 * value.a) / 10.0 - 10.0;\n\n\t\t\treturn depth + lodOffset;\n\t\t}\n\t\t\n\t\toffset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d;\n\t}\n\t\t\n\treturn depth;\n}\n\nfloat getSpacing(){\n\tvec3 offset = vec3(0.0, 0.0, 0.0);\n\tint iOffset = int(uVNStart);\n\tfloat depth = uLevel;\n\tfloat spacing = uNodeSpacing;\n\tfor(float i = 0.0; i <= 30.0; i++){\n\t\tfloat nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0);\n\t\t\n\t\tvec3 index3d = (position-offset) / nodeSizeAtLevel;\n\t\tindex3d = floor(index3d + 0.5);\n\t\tint index = int(round(4.0 * index3d.x + 2.0 * index3d.y + index3d.z));\n\t\t\n\t\tvec4 value = texture2D(visibleNodes, vec2(float(iOffset) / 2048.0, 0.0));\n\t\tint mask = int(round(value.r * 255.0));\n\t\tfloat spacingFactor = value.a;\n\n\t\tif(i > 0.0){\n\t\t\tspacing = spacing / (255.0 * spacingFactor);\n\t\t}\n\t\t\n\n\t\tif(isBitSet(mask, index)){\n\t\t\t// there are more visible child nodes at this position\n\t\t\tint advanceG = int(round(value.g * 255.0)) * 256;\n\t\t\tint advanceB = int(round(value.b * 255.0));\n\t\t\tint advanceChild = numberOfOnes(mask, index - 1);\n\t\t\tint advance = advanceG + advanceB + advanceChild;\n\n\t\t\tiOffset = iOffset + advance;\n\n\t\t\t//spacing = spacing / (255.0 * spacingFactor);\n\t\t\t//spacing = spacing / 3.0;\n\t\t\t\n\t\t\tdepth++;\n\t\t}else{\n\t\t\t// no more visible child nodes at this position\n\t\t\treturn spacing;\n\t\t}\n\t\t\n\t\toffset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d;\n\t}\n\t\t\n\treturn spacing;\n}\n\nfloat getPointSizeAttenuation(){\n\treturn pow(2.0, getLOD());\n}\n\n\n#endif\n\n\n// ---------------------\n// KD-TREE\n// ---------------------\n\n#if (defined(adaptive_point_size) || defined(color_type_level_of_detail)) && defined(tree_type_kdtree)\n\nfloat getLOD(){\n\tvec3 offset = vec3(0.0, 0.0, 0.0);\n\tfloat iOffset = 0.0;\n\tfloat depth = 0.0;\n\t\t\n\t\t\n\tvec3 size = uBBSize;\t\n\tvec3 pos = position;\n\t\t\n\tfor(float i = 0.0; i <= 1000.0; i++){\n\t\t\n\t\tvec4 value = texture2D(visibleNodes, vec2(iOffset / 2048.0, 0.0));\n\t\t\n\t\tint children = int(value.r * 255.0);\n\t\tfloat next = value.g * 255.0;\n\t\tint split = int(value.b * 255.0);\n\t\t\n\t\tif(next == 0.0){\n\t\t \treturn depth;\n\t\t}\n\t\t\n\t\tvec3 splitv = vec3(0.0, 0.0, 0.0);\n\t\tif(split == 1){\n\t\t\tsplitv.x = 1.0;\n\t\t}else if(split == 2){\n\t\t \tsplitv.y = 1.0;\n\t\t}else if(split == 4){\n\t\t \tsplitv.z = 1.0;\n\t\t}\n\t\t\n\t\tiOffset = iOffset + next;\n\t\t\n\t\tfloat factor = length(pos * splitv / size);\n\t\tif(factor < 0.5){\n\t\t\t// left\n\t\tif(children == 0 || children == 2){\n\t\t\t\treturn depth;\n\t\t\t}\n\t\t}else{\n\t\t\t// right\n\t\t\tpos = pos - size * splitv * 0.5;\n\t\t\tif(children == 0 || children == 1){\n\t\t\t\treturn depth;\n\t\t\t}\n\t\t\tif(children == 3){\n\t\t\t\tiOffset = iOffset + 1.0;\n\t\t\t}\n\t\t}\n\t\tsize = size * ((1.0 - (splitv + 1.0) / 2.0) + 0.5);\n\t\t\n\t\tdepth++;\n\t}\n\t\t\n\t\t\n\treturn depth;\t\n}\n\nfloat getPointSizeAttenuation(){\n\treturn 0.5 * pow(1.3, getLOD());\n}\n\n#endif\n\n\n\n// \n// ### ######## ######## ######## #### ######## ## ## ######## ######## ###### \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ######## ## ######## ## ## ## ###### ###### \n// ######### ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## #### ######## ####### ## ######## ###### \n// \n\n\n\n// formula adapted from: http://www.dfstudios.co.uk/articles/programming/image-programming-algorithms/image-processing-algorithms-part-5-contrast-adjustment/\nfloat getContrastFactor(float contrast){\n\treturn (1.0158730158730156 * (contrast + 1.0)) / (1.0158730158730156 - contrast);\n}\n\nvec3 getRGB(){\n\tvec3 rgb = color;\n\t\n\trgb = pow(rgb, vec3(uRGB_gbc.x));\n\trgb = rgb + uRGB_gbc.y;\n\trgb = (rgb - 0.5) * getContrastFactor(uRGB_gbc.z) + 0.5;\n\trgb = clamp(rgb, 0.0, 1.0);\n\n\treturn rgb;\n}\n\nfloat getIntensity(){\n\tfloat w = (intensity - intensityRange.x) / (intensityRange.y - intensityRange.x);\n\tw = pow(w, uIntensity_gbc.x);\n\tw = w + uIntensity_gbc.y;\n\tw = (w - 0.5) * getContrastFactor(uIntensity_gbc.z) + 0.5;\n\tw = clamp(w, 0.0, 1.0);\n\n\treturn w;\n}\n\nvec3 getGpsTime(){\n\n\tfloat w = (gpsTime + uGpsOffset) * uGpsScale;\n\n\n\tvec3 c = texture2D(gradient, vec2(w, 1.0 - w)).rgb;\n\n\n\t// vec2 r = uNormalizedGpsBufferRange;\n\t// float w = gpsTime * (r.y - r.x) + r.x;\n\t// w = clamp(w, 0.0, 1.0);\n\t// vec3 c = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\t\n\treturn c;\n}\n\nvec3 getElevation(){\n\tvec4 world = modelMatrix * vec4( position, 1.0 );\n\tfloat w = (world.z - elevationRange.x) / (elevationRange.y - elevationRange.x);\n\tvec3 cElevation = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\t\n\treturn cElevation;\n}\n\nvec4 getClassification(){\n\tvec2 uv = vec2(classification / 255.0, 0.5);\n\tvec4 classColor = texture2D(classificationLUT, uv);\n\t\n\treturn classColor;\n}\n\nvec3 getReturns(){\n\n\t// 0b 00_000_111\n\tfloat rn = mod(returnNumber, 8.0);\n\t// 0b 00_111_000\n\tfloat nr = mod(returnNumber / 8.0, 8.0);\n\n\tif(nr <= 1.0){\n\t\treturn vec3(1.0, 0.0, 0.0);\n\t}else{\n\t\treturn vec3(0.0, 1.0, 0.0);\n\t}\n\n\t// return vec3(nr / 4.0, 0.0, 0.0);\n\n\t// if(nr == 1.0){\n\t// \treturn vec3(1.0, 1.0, 0.0);\n\t// }else{\n\t// \tif(rn == 1.0){\n\t// \t\treturn vec3(1.0, 0.0, 0.0);\n\t// \t}else if(rn == nr){\n\t// \t\treturn vec3(0.0, 0.0, 1.0);\n\t// \t}else{\n\t// \t\treturn vec3(0.0, 1.0, 0.0);\n\t// \t}\n\t// }\n\n\t// if(numberOfReturns == 1.0){\n\t// \treturn vec3(1.0, 1.0, 0.0);\n\t// }else{\n\t// \tif(returnNumber == 1.0){\n\t// \t\treturn vec3(1.0, 0.0, 0.0);\n\t// \t}else if(returnNumber == numberOfReturns){\n\t// \t\treturn vec3(0.0, 0.0, 1.0);\n\t// \t}else{\n\t// \t\treturn vec3(0.0, 1.0, 0.0);\n\t// \t}\n\t// }\n}\n\nvec3 getReturnNumber(){\n\tif(numberOfReturns == 1.0){\n\t\treturn vec3(1.0, 1.0, 0.0);\n\t}else{\n\t\tif(returnNumber == 1.0){\n\t\t\treturn vec3(1.0, 0.0, 0.0);\n\t\t}else if(returnNumber == numberOfReturns){\n\t\t\treturn vec3(0.0, 0.0, 1.0);\n\t\t}else{\n\t\t\treturn vec3(0.0, 1.0, 0.0);\n\t\t}\n\t}\n}\n\nvec3 getNumberOfReturns(){\n\tfloat value = numberOfReturns;\n\n\tfloat w = value / 6.0;\n\n\tvec3 color = texture2D(gradient, vec2(w, 1.0 - w)).rgb;\n\n\treturn color;\n}\n\nvec3 getSourceID(){\n\tfloat w = mod(pointSourceID, 10.0) / 10.0;\n\treturn texture2D(gradient, vec2(w,1.0 - w)).rgb;\n}\n\nvec3 getCompositeColor(){\n\tvec3 c;\n\tfloat w;\n\n\tc += wRGB * getRGB();\n\tw += wRGB;\n\t\n\tc += wIntensity * getIntensity() * vec3(1.0, 1.0, 1.0);\n\tw += wIntensity;\n\t\n\tc += wElevation * getElevation();\n\tw += wElevation;\n\t\n\tc += wReturnNumber * getReturnNumber();\n\tw += wReturnNumber;\n\t\n\tc += wSourceID * getSourceID();\n\tw += wSourceID;\n\t\n\tvec4 cl = wClassification * getClassification();\n\tc += cl.a * cl.rgb;\n\tw += wClassification * cl.a;\n\n\tc = c / w;\n\t\n\tif(w == 0.0){\n\t\t//c = color;\n\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t}\n\t\n\treturn c;\n}\n\n\nvec3 getNormal(){\n\t//vec3 n_hsv = vec3( modelMatrix * vec4( normal, 0.0 )) * 0.5 + 0.5; // (n_world.xyz + vec3(1.,1.,1.)) / 2.;\n\tvec3 n_view = normalize( vec3(modelViewMatrix * vec4( normal, 0.0 )) );\n\treturn n_view;\n}\nbool applyBackfaceCulling() {\n\t// Black not facing vertices / Backface culling\n\tvec3 e = normalize(vec3(modelViewMatrix * vec4( position, 1. )));\n\tvec3 n = getNormal(); // normalize( vec3(modelViewMatrix * vec4( normal, 0.0 )) );\n\n\tif((uUseOrthographicCamera && n.z <= 0.) || (!uUseOrthographicCamera && dot( n, e ) >= 0.)) { \n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n}\n\n#if defined(color_type_matcap)\n// Matcap Material\nvec3 getMatcap(){ \n\tvec3 eye = normalize( vec3( modelViewMatrix * vec4( position, 1. ) ) ); \n\tif(uUseOrthographicCamera) { \n\t\teye = vec3(0., 0., -1.);\n\t}\n\tvec3 r_en = reflect( eye, getNormal() ); // or r_en = e - 2. * dot( n, e ) * n;\n\tfloat m = 2. * sqrt(pow( r_en.x, 2. ) + pow( r_en.y, 2. ) + pow( r_en.z + 1., 2. ));\n\tvec2 vN = r_en.xy / m + .5;\n\treturn texture2D(matcapTextureUniform, vN).rgb; \n}\n#endif\n\nvec3 getExtra(){\n\n\tfloat w = (aExtra + uExtraOffset) * uExtraScale;\n\tw = clamp(w, 0.0, 1.0);\n\n\tvec3 color = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\n\t// vec2 r = uExtraNormalizedRange;\n\n\t// float w = aExtra * (r.y - r.x) + r.x;\n\n\t// w = (w - uExtraRange.x) / (uExtraRange.y - uExtraRange.x);\n\n\t// w = clamp(w, 0.0, 1.0);\n\n\t// vec3 color = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\n\treturn color;\n}\n\nvec3 getColor(){\n\tvec3 color;\n\t\n\t#ifdef color_type_rgba\n\t\tcolor = getRGB();\n\t#elif defined color_type_height || defined color_type_elevation\n\t\tcolor = getElevation();\n\t#elif defined color_type_rgb_height\n\t\tvec3 cHeight = getElevation();\n\t\tcolor = (1.0 - uTransition) * getRGB() + uTransition * cHeight;\n\t#elif defined color_type_depth\n\t\tfloat linearDepth = gl_Position.w;\n\t\tfloat expDepth = (gl_Position.z / gl_Position.w) * 0.5 + 0.5;\n\t\tcolor = vec3(linearDepth, expDepth, 0.0);\n\t\t//color = vec3(1.0, 0.5, 0.3);\n\t#elif defined color_type_intensity\n\t\tfloat w = getIntensity();\n\t\tcolor = vec3(w, w, w);\n\t#elif defined color_type_gps_time\n\t\tcolor = getGpsTime();\n\t#elif defined color_type_intensity_gradient\n\t\tfloat w = getIntensity();\n\t\tcolor = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\t#elif defined color_type_color\n\t\tcolor = uColor;\n\t#elif defined color_type_level_of_detail\n\t\tfloat depth = getLOD();\n\t\tfloat w = depth / 10.0;\n\t\tcolor = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\t#elif defined color_type_indices\n\t\tcolor = indices.rgb;\n\t#elif defined color_type_classification\n\t\tvec4 cl = getClassification(); \n\t\tcolor = cl.rgb;\n\t#elif defined color_type_return_number\n\t\tcolor = getReturnNumber();\n\t#elif defined color_type_returns\n\t\tcolor = getReturns();\n\t#elif defined color_type_number_of_returns\n\t\tcolor = getNumberOfReturns();\n\t#elif defined color_type_source_id\n\t\tcolor = getSourceID();\n\t#elif defined color_type_point_source_id\n\t\tcolor = getSourceID();\n\t#elif defined color_type_normal\n\t\tcolor = (modelMatrix * vec4(normal, 0.0)).xyz;\n\t#elif defined color_type_phong\n\t\tcolor = color;\n\t#elif defined color_type_composite\n\t\tcolor = getCompositeColor();\n\t#elif defined color_type_matcap\n\t\tcolor = getMatcap();\n\t#else \n\t\tcolor = getExtra();\n\t#endif\n\t\n\tif (backfaceCulling && applyBackfaceCulling()) {\n\t\tcolor = vec3(0.);\n\t}\n\n\treturn color;\n}\n\nfloat getPointSize(){\n\tfloat pointSize = 1.0;\n\t\n\tfloat slope = tan(fov / 2.0);\n\tfloat projFactor = -0.5 * uScreenHeight / (slope * vViewPosition.z);\n\t\n\tfloat r = uOctreeSpacing * 1.7;\n\tvRadius = r;\n\t#if defined fixed_point_size\n\t\tpointSize = size;\n\t#elif defined attenuated_point_size\n\t\tif(uUseOrthographicCamera){\n\t\t\tpointSize = size;\n\t\t}else{\n\t\t\tpointSize = size * spacing * projFactor;\n\t\t\t//pointSize = pointSize * projFactor;\n\t\t}\n\t#elif defined adaptive_point_size\n\t\tif(uUseOrthographicCamera) {\n\t\t\tfloat worldSpaceSize = 1.0 * size * r / getPointSizeAttenuation();\n\t\t\tpointSize = (worldSpaceSize / uOrthoWidth) * uScreenWidth;\n\t\t} else {\n\n\t\t\t// float leafSpacing = 0.122069092 * 8.0;\n\t\t\t\n\t\t\t// bool isLeafNode = getLOD() == 1000.0;\n\t\t\t// if(isLeafNode){\n\t\t\t// \t// pointSize = size * spacing * projFactor;\n\n\t\t\t// \tfloat worldSpaceSize = size * leafSpacing;\n\t\t\t// \tpointSize = worldSpaceSize * projFactor;\n\t\t\t// }else{\n\t\t\t\tfloat worldSpaceSize = 1.0 * size * r / getPointSizeAttenuation();\n\n\t\t\t\t// minimum world space size\n\t\t\t\t// worldSpaceSize = max(worldSpaceSize, leafSpacing);\n\n\t\t\t\tpointSize = worldSpaceSize * projFactor;\n\t\t\t// }\n\t\t}\n\t#endif\n\n\tpointSize = max(minSize, pointSize);\n\tpointSize = min(maxSize, pointSize);\n\t\n\tvRadius = pointSize / projFactor;\n\n\treturn pointSize;\n}\n\n#if defined(num_clippolygons) && num_clippolygons > 0\nbool pointInClipPolygon(vec3 point, int polyIdx) {\n\n\tmat4 wvp = uClipPolygonWVP[polyIdx];\n\t//vec4 screenClipPos = uClipPolygonVP[polyIdx] * modelMatrix * vec4(point, 1.0);\n\t//screenClipPos.xy = screenClipPos.xy / screenClipPos.w * 0.5 + 0.5;\n\n\tvec4 pointNDC = wvp * vec4(point, 1.0);\n\tpointNDC.xy = pointNDC.xy / pointNDC.w;\n\n\tint j = uClipPolygonVCount[polyIdx] - 1;\n\tbool c = false;\n\tfor(int i = 0; i < 8; i++) {\n\t\tif(i == uClipPolygonVCount[polyIdx]) {\n\t\t\tbreak;\n\t\t}\n\n\t\t//vec4 verti = wvp * vec4(uClipPolygonVertices[polyIdx * 8 + i], 1);\n\t\t//vec4 vertj = wvp * vec4(uClipPolygonVertices[polyIdx * 8 + j], 1);\n\n\t\t//verti.xy = verti.xy / verti.w;\n\t\t//vertj.xy = vertj.xy / vertj.w;\n\n\t\t//verti.xy = verti.xy / verti.w * 0.5 + 0.5;\n\t\t//vertj.xy = vertj.xy / vertj.w * 0.5 + 0.5;\n\n\t\tvec3 verti = uClipPolygonVertices[polyIdx * 8 + i];\n\t\tvec3 vertj = uClipPolygonVertices[polyIdx * 8 + j];\n\n\t\tif( ((verti.y > pointNDC.y) != (vertj.y > pointNDC.y)) && \n\t\t\t(pointNDC.x < (vertj.x-verti.x) * (pointNDC.y-verti.y) / (vertj.y-verti.y) + verti.x) ) {\n\t\t\tc = !c;\n\t\t}\n\t\tj = i;\n\t}\n\n\treturn c;\n}\n#endif\n\nvoid doClipping(){\n\n\t{\n\t\tvec4 cl = getClassification(); \n\t\tif(cl.a == 0.0){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t}\n\n\t#if defined(clip_return_number_enabled)\n\t{ // return number filter\n\t\tvec2 range = uFilterReturnNumberRange;\n\t\tif(returnNumber < range.x || returnNumber > range.y){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t}\n\t#endif\n\n\t#if defined(clip_number_of_returns_enabled)\n\t{ // number of return filter\n\t\tvec2 range = uFilterNumberOfReturnsRange;\n\t\tif(numberOfReturns < range.x || numberOfReturns > range.y){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t}\n\t#endif\n\n\t#if defined(clip_gps_enabled)\n\t{ // GPS time filter\n\t\tfloat time = (gpsTime + uGpsOffset) * uGpsScale;\n\t\tvec2 range = uFilterGPSTimeClipRange;\n\n\t\tif(time < range.x || time > range.y){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t}\n\t#endif\n\n\t#if defined(clip_point_source_id_enabled)\n\t{ // point source id filter\n\t\tvec2 range = uFilterPointSourceIDClipRange;\n\t\tif(pointSourceID < range.x || pointSourceID > range.y){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t}\n\t#endif\n\n\tint clipVolumesCount = 0;\n\tint insideCount = 0;\n\n\t#if defined(num_clipboxes) && num_clipboxes > 0\n\t\tfor(int i = 0; i < num_clipboxes; i++){\n\t\t\tvec4 clipPosition = clipBoxes[i] * modelMatrix * vec4( position, 1.0 );\n\t\t\tbool inside = -0.5 <= clipPosition.x && clipPosition.x <= 0.5;\n\t\t\tinside = inside && -0.5 <= clipPosition.y && clipPosition.y <= 0.5;\n\t\t\tinside = inside && -0.5 <= clipPosition.z && clipPosition.z <= 0.5;\n\n\t\t\tinsideCount = insideCount + (inside ? 1 : 0);\n\t\t\tclipVolumesCount++;\n\t\t}\t\n\t#endif\n\n\t#if defined(num_clippolygons) && num_clippolygons > 0\n\t\tfor(int i = 0; i < num_clippolygons; i++) {\n\t\t\tbool inside = pointInClipPolygon(position, i);\n\n\t\t\tinsideCount = insideCount + (inside ? 1 : 0);\n\t\t\tclipVolumesCount++;\n\t\t}\n\t#endif\n\n\tbool insideAny = insideCount > 0;\n\tbool insideAll = (clipVolumesCount > 0) && (clipVolumesCount == insideCount);\n\n\tif(clipMethod == CLIPMETHOD_INSIDE_ANY){\n\t\tif(insideAny && clipTask == CLIPTASK_HIGHLIGHT){\n\t\t\tvColor.r += 0.5;\n\t\t}else if(!insideAny && clipTask == CLIPTASK_SHOW_INSIDE){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 1.0);\n\t\t}else if(insideAny && clipTask == CLIPTASK_SHOW_OUTSIDE){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 1.0);\n\t\t}\n\t}else if(clipMethod == CLIPMETHOD_INSIDE_ALL){\n\t\tif(insideAll && clipTask == CLIPTASK_HIGHLIGHT){\n\t\t\tvColor.r += 0.5;\n\t\t}else if(!insideAll && clipTask == CLIPTASK_SHOW_INSIDE){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 1.0);\n\t\t}else if(insideAll && clipTask == CLIPTASK_SHOW_OUTSIDE){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 1.0);\n\t\t}\n\t}\n}\n\n\n\n// \n// ## ## ### #### ## ## \n// ### ### ## ## ## ### ## \n// #### #### ## ## ## #### ## \n// ## ### ## ## ## ## ## ## ## \n// ## ## ######### ## ## #### \n// ## ## ## ## ## ## ### \n// ## ## ## ## #### ## ## \n//\n\nvoid main() {\n\tvec4 mvPosition = modelViewMatrix * vec4(position, 1.0 );\n\tvViewPosition = mvPosition.xyz;\n\tgl_Position = projectionMatrix * mvPosition;\n\tvLogDepth = log2(-mvPosition.z);\n\n\t// POINT SIZE\n\tfloat pointSize = getPointSize();\n\tgl_PointSize = pointSize;\n\tvPointSize = pointSize;\n\n\t// COLOR\n\tvColor = getColor();\n\n\t//gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n\t//gl_Position = vec4(position.xzy / 1000.0, 1.0 );\n\n\t//gl_PointSize = 5.0;\n\t//vColor = vec3(1.0, 1.0, 1.0);\n\n\t// only for \"replacing\" approaches\n\t// if(getLOD() != uLevel){\n\t// \tgl_Position = vec4(10.0, 10.0, 10.0, 1.0);\n\t// }\n\n\n\t#if defined hq_depth_pass\n\t\tfloat originalDepth = gl_Position.w;\n\t\tfloat adjustedDepth = originalDepth + 2.0 * vRadius;\n\t\tfloat adjust = adjustedDepth / originalDepth;\n\n\t\tmvPosition.xyz = mvPosition.xyz * adjust;\n\t\tgl_Position = projectionMatrix * mvPosition;\n\t#endif\n\n\n\t// CLIPPING\n\tdoClipping();\n\n\t#if defined(num_clipspheres) && num_clipspheres > 0\n\t\tfor(int i = 0; i < num_clipspheres; i++){\n\t\t\tvec4 sphereLocal = uClipSpheres[i] * mvPosition;\n\n\t\t\tfloat distance = length(sphereLocal.xyz);\n\n\t\t\tif(distance < 1.0){\n\t\t\t\tfloat w = distance;\n\t\t\t\tvec3 cGradient = texture2D(gradient, vec2(w, 1.0 - w)).rgb;\n\t\t\t\t\n\t\t\t\tvColor = cGradient;\n\t\t\t\t//vColor = cGradient * 0.7 + vColor * 0.3;\n\t\t\t}\n\t\t}\n\t#endif\n\n\t#if defined(num_shadowmaps) && num_shadowmaps > 0\n\n\t\tconst float sm_near = 0.1;\n\t\tconst float sm_far = 10000.0;\n\n\t\tfor(int i = 0; i < num_shadowmaps; i++){\n\t\t\tvec3 viewPos = (uShadowWorldView[i] * vec4(position, 1.0)).xyz;\n\t\t\tfloat distanceToLight = abs(viewPos.z);\n\t\t\t\n\t\t\tvec4 projPos = uShadowProj[i] * uShadowWorldView[i] * vec4(position, 1);\n\t\t\tvec3 nc = projPos.xyz / projPos.w;\n\t\t\t\n\t\t\tfloat u = nc.x * 0.5 + 0.5;\n\t\t\tfloat v = nc.y * 0.5 + 0.5;\n\n\t\t\tvec2 sampleStep = vec2(1.0 / (2.0*1024.0), 1.0 / (2.0*1024.0)) * 1.5;\n\t\t\tvec2 sampleLocations[9];\n\t\t\tsampleLocations[0] = vec2(0.0, 0.0);\n\t\t\tsampleLocations[1] = sampleStep;\n\t\t\tsampleLocations[2] = -sampleStep;\n\t\t\tsampleLocations[3] = vec2(sampleStep.x, -sampleStep.y);\n\t\t\tsampleLocations[4] = vec2(-sampleStep.x, sampleStep.y);\n\n\t\t\tsampleLocations[5] = vec2(0.0, sampleStep.y);\n\t\t\tsampleLocations[6] = vec2(0.0, -sampleStep.y);\n\t\t\tsampleLocations[7] = vec2(sampleStep.x, 0.0);\n\t\t\tsampleLocations[8] = vec2(-sampleStep.x, 0.0);\n\n\t\t\tfloat visibleSamples = 0.0;\n\t\t\tfloat numSamples = 0.0;\n\n\t\t\tfloat bias = vRadius * 2.0;\n\n\t\t\tfor(int j = 0; j < 9; j++){\n\t\t\t\tvec4 depthMapValue = texture2D(uShadowMap[i], vec2(u, v) + sampleLocations[j]);\n\n\t\t\t\tfloat linearDepthFromSM = depthMapValue.x + bias;\n\t\t\t\tfloat linearDepthFromViewer = distanceToLight;\n\n\t\t\t\tif(linearDepthFromSM > linearDepthFromViewer){\n\t\t\t\t\tvisibleSamples += 1.0;\n\t\t\t\t}\n\n\t\t\t\tnumSamples += 1.0;\n\t\t\t}\n\n\t\t\tfloat visibility = visibleSamples / numSamples;\n\n\t\t\tif(u < 0.0 || u > 1.0 || v < 0.0 || v > 1.0 || nc.x < -1.0 || nc.x > 1.0 || nc.y < -1.0 || nc.y > 1.0 || nc.z < -1.0 || nc.z > 1.0){\n\t\t\t\t//vColor = vec3(0.0, 0.0, 0.2);\n\t\t\t}else{\n\t\t\t\t//vColor = vec3(1.0, 1.0, 1.0) * visibility + vec3(1.0, 1.0, 1.0) * vec3(0.5, 0.0, 0.0) * (1.0 - visibility);\n\t\t\t\tvColor = vColor * visibility + vColor * uShadowColor * (1.0 - visibility);\n\t\t\t}\n\n\n\t\t}\n\n\t#endif\n}\n`\n\nShaders[\"pointcloud.fs\"] = `\n#if defined paraboloid_point_shape\n\t#extension GL_EXT_frag_depth : enable\n#endif\n\nprecision highp float;\nprecision highp int;\n\nuniform mat4 viewMatrix;\nuniform mat4 uViewInv;\nuniform mat4 uProjInv;\nuniform vec3 cameraPosition;\n\n\nuniform mat4 projectionMatrix;\nuniform float uOpacity;\n\nuniform float blendHardness;\nuniform float blendDepthSupplement;\nuniform float fov;\nuniform float uSpacing;\nuniform float near;\nuniform float far;\nuniform float uPCIndex;\nuniform float uScreenWidth;\nuniform float uScreenHeight;\n\nvarying vec3\tvColor;\nvarying float\tvLogDepth;\nvarying vec3\tvViewPosition;\nvarying float\tvRadius;\nvarying float \tvPointSize;\nvarying vec3 \tvPosition;\n\n\nfloat specularStrength = 1.0;\n\nvoid main() {\n\n\tvec3 color = vColor;\n\tfloat depth = gl_FragCoord.z;\n\n\t#if defined(circle_point_shape) || defined(paraboloid_point_shape) \n\t\tfloat u = 2.0 * gl_PointCoord.x - 1.0;\n\t\tfloat v = 2.0 * gl_PointCoord.y - 1.0;\n\t#endif\n\t\n\t#if defined(circle_point_shape) \n\t\tfloat cc = u*u + v*v;\n\t\tif(cc > 1.0){\n\t\t\tdiscard;\n\t\t}\n\t#endif\n\t\t\n\t#if defined color_type_indices\n\t\tgl_FragColor = vec4(color, uPCIndex / 255.0);\n\t#else\n\t\tgl_FragColor = vec4(color, uOpacity);\n\t#endif\n\n\t#if defined paraboloid_point_shape\n\t\tfloat wi = 0.0 - ( u*u + v*v);\n\t\tvec4 pos = vec4(vViewPosition, 1.0);\n\t\tpos.z += wi * vRadius;\n\t\tfloat linearDepth = -pos.z;\n\t\tpos = projectionMatrix * pos;\n\t\tpos = pos / pos.w;\n\t\tfloat expDepth = pos.z;\n\t\tdepth = (pos.z + 1.0) / 2.0;\n\t\tgl_FragDepthEXT = depth;\n\t\t\n\t\t#if defined(color_type_depth)\n\t\t\tcolor.r = linearDepth;\n\t\t\tcolor.g = expDepth;\n\t\t#endif\n\t\t\n\t\t#if defined(use_edl)\n\t\t\tgl_FragColor.a = log2(linearDepth);\n\t\t#endif\n\t\t\n\t#else\n\t\t#if defined(use_edl)\n\t\t\tgl_FragColor.a = vLogDepth;\n\t\t#endif\n\t#endif\n\n\t#if defined(weighted_splats)\n\t\tfloat distance = 2.0 * length(gl_PointCoord.xy - 0.5);\n\t\tfloat weight = max(0.0, 1.0 - distance);\n\t\tweight = pow(weight, 1.5);\n\n\t\tgl_FragColor.a = weight;\n\t\tgl_FragColor.xyz = gl_FragColor.xyz * weight;\n\t#endif\n\n\t//gl_FragColor = vec4(0.0, 0.7, 0.0, 1.0);\n\t\n}\n\n\n`\n\nShaders[\"pointcloud_sm.vs\"] = `\nprecision mediump float;\nprecision mediump int;\n\nattribute vec3 position;\nattribute vec3 color;\n\nuniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\n\nuniform float uScreenWidth;\nuniform float uScreenHeight;\nuniform float near;\nuniform float far;\n\nuniform float uSpacing;\nuniform float uOctreeSize;\nuniform float uLevel;\nuniform float uVNStart;\n\nuniform sampler2D visibleNodes;\n\nvarying float vLinearDepth;\nvarying vec3 vColor;\n\n#define PI 3.141592653589793\n\n\n\n// ---------------------\n// OCTREE\n// ---------------------\n\n#if defined(adaptive_point_size)\n/**\n * number of 1-bits up to inclusive index position\n * number is treated as if it were an integer in the range 0-255\n *\n */\nfloat numberOfOnes(float number, float index){\n\tfloat tmp = mod(number, pow(2.0, index + 1.0));\n\tfloat numOnes = 0.0;\n\tfor(float i = 0.0; i < 8.0; i++){\n\t\tif(mod(tmp, 2.0) != 0.0){\n\t\t\tnumOnes++;\n\t\t}\n\t\ttmp = floor(tmp / 2.0);\n\t}\n\treturn numOnes;\n}\n\n\n/**\n * checks whether the bit at index is 1\n * number is treated as if it were an integer in the range 0-255\n *\n */\nbool isBitSet(float number, float index){\n\treturn mod(floor(number / pow(2.0, index)), 2.0) != 0.0;\n}\n\n\n/**\n * find the LOD at the point position\n */\nfloat getLOD(){\n\t\n\tvec3 offset = vec3(0.0, 0.0, 0.0);\n\tfloat iOffset = uVNStart;\n\tfloat depth = uLevel;\n\tfor(float i = 0.0; i <= 30.0; i++){\n\t\tfloat nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0);\n\t\t\n\t\tvec3 index3d = (position-offset) / nodeSizeAtLevel;\n\t\tindex3d = floor(index3d + 0.5);\n\t\tfloat index = 4.0 * index3d.x + 2.0 * index3d.y + index3d.z;\n\t\t\n\t\tvec4 value = texture2D(visibleNodes, vec2(iOffset / 2048.0, 0.0));\n\t\tfloat mask = value.r * 255.0;\n\t\tif(isBitSet(mask, index)){\n\t\t\t// there are more visible child nodes at this position\n\t\t\tiOffset = iOffset + value.g * 255.0 * 256.0 + value.b * 255.0 + numberOfOnes(mask, index - 1.0);\n\t\t\tdepth++;\n\t\t}else{\n\t\t\t// no more visible child nodes at this position\n\t\t\treturn depth;\n\t\t}\n\t\t\n\t\toffset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d;\n\t}\n\t\t\n\treturn depth;\n}\n\n#endif\n\nfloat getPointSize(){\n\tfloat pointSize = 1.0;\n\t\n\tfloat slope = tan(fov / 2.0);\n\tfloat projFactor = -0.5 * uScreenHeight / (slope * vViewPosition.z);\n\t\n\tfloat r = uOctreeSpacing * 1.5;\n\tvRadius = r;\n\t#if defined fixed_point_size\n\t\tpointSize = size;\n\t#elif defined attenuated_point_size\n\t\tif(uUseOrthographicCamera){\n\t\t\tpointSize = size;\t\t\t\n\t\t}else{\n\t\t\tpointSize = pointSize * projFactor;\n\t\t}\n\t#elif defined adaptive_point_size\n\t\tif(uUseOrthographicCamera) {\n\t\t\tfloat worldSpaceSize = 1.5 * size * r / getPointSizeAttenuation();\n\t\t\tpointSize = (worldSpaceSize / uOrthoWidth) * uScreenWidth;\n\t\t} else {\n\t\t\tfloat worldSpaceSize = 1.5 * size * r / getPointSizeAttenuation();\n\t\t\tpointSize = worldSpaceSize * projFactor;\n\t\t}\n\t#endif\n\n\tpointSize = max(minSize, pointSize);\n\tpointSize = min(maxSize, pointSize);\n\t\n\tvRadius = pointSize / projFactor;\n\n\treturn pointSize;\n}\n\n\nvoid main() {\n\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tvLinearDepth = gl_Position.w;\n\n\tfloat pointSize = getPointSize();\n\tgl_PointSize = pointSize;\n\n}\n`\n\nShaders[\"pointcloud_sm.fs\"] = `\nprecision mediump float;\nprecision mediump int;\n\nvarying vec3 vColor;\nvarying float vLinearDepth;\n\nvoid main() {\n\n\t//gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\n\t//gl_FragColor = vec4(vColor, 1.0);\n\t//gl_FragColor = vec4(vLinearDepth, pow(vLinearDepth, 2.0), 0.0, 1.0);\n\tgl_FragColor = vec4(vLinearDepth, vLinearDepth / 30.0, vLinearDepth / 30.0, 1.0);\n\t\n}\n\n\n`\n\nShaders[\"normalize.vs\"] = `\nprecision mediump float;\nprecision mediump int;\n\nattribute vec3 position;\nattribute vec2 uv;\n\nuniform mat4 projectionMatrix;\nuniform mat4 modelViewMatrix;\n\nvarying vec2 vUv;\n\nvoid main() {\n\tvUv = uv;\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);\n}`\n\nShaders[\"normalize.fs\"] = `\n#extension GL_EXT_frag_depth : enable\n\nprecision mediump float;\nprecision mediump int;\n\nuniform sampler2D uWeightMap;\nuniform sampler2D uDepthMap;\n\nvarying vec2 vUv;\n\nvoid main() {\n\tfloat depth = texture2D(uDepthMap, vUv).r;\n\t\n\tif(depth >= 1.0){\n\t\tdiscard;\n\t}\n\n\tgl_FragColor = vec4(depth, 1.0, 0.0, 1.0);\n\n\tvec4 color = texture2D(uWeightMap, vUv); \n\tcolor = color / color.w;\n\t\n\tgl_FragColor = vec4(color.xyz, 1.0); \n\t\n\tgl_FragDepthEXT = depth;\n\n\n}`\n\nShaders[\"normalize_and_edl.fs\"] = `\n#extension GL_EXT_frag_depth : enable\n\n// \n// adapted from the EDL shader code from Christian Boucheny in cloud compare:\n// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL\n//\n\nprecision mediump float;\nprecision mediump int;\n\nuniform sampler2D uWeightMap;\nuniform sampler2D uEDLMap;\nuniform sampler2D uDepthMap;\n\nuniform float screenWidth;\nuniform float screenHeight;\nuniform vec2 neighbours[NEIGHBOUR_COUNT];\nuniform float edlStrength;\nuniform float radius;\n\nvarying vec2 vUv;\n\nfloat response(float depth){\n\tvec2 uvRadius = radius / vec2(screenWidth, screenHeight);\n\t\n\tfloat sum = 0.0;\n\t\n\tfor(int i = 0; i < NEIGHBOUR_COUNT; i++){\n\t\tvec2 uvNeighbor = vUv + uvRadius * neighbours[i];\n\t\t\n\t\tfloat neighbourDepth = texture2D(uEDLMap, uvNeighbor).a;\n\n\t\tif(neighbourDepth != 0.0){\n\t\t\tif(depth == 0.0){\n\t\t\t\tsum += 100.0;\n\t\t\t}else{\n\t\t\t\tsum += max(0.0, depth - neighbourDepth);\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn sum / float(NEIGHBOUR_COUNT);\n}\n\nvoid main() {\n\n\tfloat edlDepth = texture2D(uEDLMap, vUv).a;\n\tfloat res = response(edlDepth);\n\tfloat shade = exp(-res * 300.0 * edlStrength);\n\n\tfloat depth = texture2D(uDepthMap, vUv).r;\n\tif(depth >= 1.0 && res == 0.0){\n\t\tdiscard;\n\t}\n\t\n\tvec4 color = texture2D(uWeightMap, vUv); \n\tcolor = color / color.w;\n\tcolor = color * shade;\n\n\tgl_FragColor = vec4(color.xyz, 1.0); \n\n\tgl_FragDepthEXT = depth;\n}`\n\nShaders[\"edl.vs\"] = `\nprecision mediump float;\nprecision mediump int;\n\nattribute vec3 position;\nattribute vec2 uv;\n\nuniform mat4 projectionMatrix;\nuniform mat4 modelViewMatrix;\n\nvarying vec2 vUv;\n\nvoid main() {\n\tvUv = uv;\n\t\n\tvec4 mvPosition = modelViewMatrix * vec4(position,1.0);\n\n\tgl_Position = projectionMatrix * mvPosition;\n}`\n\nShaders[\"edl.fs\"] = `\n#extension GL_EXT_frag_depth : enable\n\n// \n// adapted from the EDL shader code from Christian Boucheny in cloud compare:\n// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL\n//\n\nprecision mediump float;\nprecision mediump int;\n\nuniform float screenWidth;\nuniform float screenHeight;\nuniform vec2 neighbours[NEIGHBOUR_COUNT];\nuniform float edlStrength;\nuniform float radius;\nuniform float opacity;\n\nuniform float uNear;\nuniform float uFar;\n\nuniform mat4 uProj;\n\nuniform sampler2D uEDLColor;\nuniform sampler2D uEDLDepth;\n\nvarying vec2 vUv;\n\nfloat response(float depth){\n\tvec2 uvRadius = radius / vec2(screenWidth, screenHeight);\n\t\n\tfloat sum = 0.0;\n\t\n\tfor(int i = 0; i < NEIGHBOUR_COUNT; i++){\n\t\tvec2 uvNeighbor = vUv + uvRadius * neighbours[i];\n\t\t\n\t\tfloat neighbourDepth = texture2D(uEDLColor, uvNeighbor).a;\n\t\tneighbourDepth = (neighbourDepth == 1.0) ? 0.0 : neighbourDepth;\n\n\t\tif(neighbourDepth != 0.0){\n\t\t\tif(depth == 0.0){\n\t\t\t\tsum += 100.0;\n\t\t\t}else{\n\t\t\t\tsum += max(0.0, depth - neighbourDepth);\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn sum / float(NEIGHBOUR_COUNT);\n}\n\nvoid main(){\n\tvec4 cEDL = texture2D(uEDLColor, vUv);\n\t\n\tfloat depth = cEDL.a;\n\tdepth = (depth == 1.0) ? 0.0 : depth;\n\tfloat res = response(depth);\n\tfloat shade = exp(-res * 300.0 * edlStrength);\n\n\tgl_FragColor = vec4(cEDL.rgb * shade, opacity);\n\n\t{ // write regular hyperbolic depth values to depth buffer\n\t\tfloat dl = pow(2.0, depth);\n\n\t\tvec4 dp = uProj * vec4(0.0, 0.0, -dl, 1.0);\n\t\tfloat pz = dp.z / dp.w;\n\t\tfloat fragDepth = (pz + 1.0) / 2.0;\n\n\t\tgl_FragDepthEXT = fragDepth;\n\t}\n\n\tif(depth == 0.0){\n\t\tdiscard;\n\t}\n\n}\n`\n\nShaders[\"blur.vs\"] = `\nvarying vec2 vUv;\n\nvoid main() {\n\tvUv = uv;\n\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);\n}`\n\nShaders[\"blur.fs\"] = `\nuniform mat4 projectionMatrix;\n\nuniform float screenWidth;\nuniform float screenHeight;\nuniform float near;\nuniform float far;\n\nuniform sampler2D map;\n\nvarying vec2 vUv;\n\nvoid main() {\n\n\tfloat dx = 1.0 / screenWidth;\n\tfloat dy = 1.0 / screenHeight;\n\n\tvec3 color = vec3(0.0, 0.0, 0.0);\n\tcolor += texture2D(map, vUv + vec2(-dx, -dy)).rgb;\n\tcolor += texture2D(map, vUv + vec2( 0, -dy)).rgb;\n\tcolor += texture2D(map, vUv + vec2(+dx, -dy)).rgb;\n\tcolor += texture2D(map, vUv + vec2(-dx, 0)).rgb;\n\tcolor += texture2D(map, vUv + vec2( 0, 0)).rgb;\n\tcolor += texture2D(map, vUv + vec2(+dx, 0)).rgb;\n\tcolor += texture2D(map, vUv + vec2(-dx, dy)).rgb;\n\tcolor += texture2D(map, vUv + vec2( 0, dy)).rgb;\n\tcolor += texture2D(map, vUv + vec2(+dx, dy)).rgb;\n\n\tcolor = color / 9.0;\n\t\n\tgl_FragColor = vec4(color, 1.0);\n}`\n\nexport {Shaders};","\nexport const ClassificationScheme = {\n\n\tDEFAULT: {\n\t\t0: { visible: true, name: 'never classified' , color: [0.5, 0.5, 0.5, 1.0] },\n\t\t1: { visible: true, name: 'unclassified' , color: [0.5, 0.5, 0.5, 1.0] },\n\t\t2: { visible: true, name: 'ground' , color: [0.63, 0.32, 0.18, 1.0] },\n\t\t3: { visible: true, name: 'low vegetation' , color: [0.0, 1.0, 0.0, 1.0] },\n\t\t4: { visible: true, name: 'medium vegetation' , color: [0.0, 0.8, 0.0, 1.0] },\n\t\t5: { visible: true, name: 'high vegetation' , color: [0.0, 0.6, 0.0, 1.0] },\n\t\t6: { visible: true, name: 'building' , color: [1.0, 0.66, 0.0, 1.0] },\n\t\t7: { visible: true, name: 'low point(noise)' , color: [1.0, 0.0, 1.0, 1.0] },\n\t\t8: { visible: true, name: 'key-point' , color: [1.0, 0.0, 0.0, 1.0] },\n\t\t9: { visible: true, name: 'water' , color: [0.0, 0.0, 1.0, 1.0] },\n\t\t12: { visible: true, name: 'overlap' , color: [1.0, 1.0, 0.0, 1.0] },\n\t\tDEFAULT: { visible: true, name: 'default' , color: [0.3, 0.6, 0.6, 0.5] },\n\t}\n};\n\nObject.defineProperty(ClassificationScheme, 'RANDOM', {\n\tget: function() { \n\n\t\tlet scheme = {};\n\n\t\tfor(let i = 0; i <= 255; i++){\n\t\t\tscheme[i] = new THREE.Vector4(Math.random(), Math.random(), Math.random());\n\t\t}\n\n\t\tscheme[\"DEFAULT\"] = new THREE.Vector4(Math.random(), Math.random(), Math.random());\n\n\t\treturn scheme;\n\t}\n});","\nimport {Utils} from \"../utils.js\";\nimport {Gradients} from \"./Gradients.js\";\nimport {Shaders} from \"../../build/shaders/shaders.js\";\nimport {ClassificationScheme} from \"./ClassificationScheme.js\";\nimport {PointSizeType, PointShape, TreeType, ElevationGradientRepeat} from \"../defines.js\";\n\n//\n// how to calculate the radius of a projected sphere in screen space\n// http://stackoverflow.com/questions/21648630/radius-of-projected-sphere-in-screen-space\n// http://stackoverflow.com/questions/3717226/radius-of-projected-sphere\n//\n\n\nexport class PointCloudMaterial extends THREE.RawShaderMaterial {\n\tconstructor (parameters = {}) {\n\t\tsuper();\n\n\t\tthis.visibleNodesTexture = Utils.generateDataTexture(2048, 1, new THREE.Color(0xffffff));\n\t\tthis.visibleNodesTexture.minFilter = THREE.NearestFilter;\n\t\tthis.visibleNodesTexture.magFilter = THREE.NearestFilter;\n\n\t\tlet getValid = (a, b) => {\n\t\t\tif(a !== undefined){\n\t\t\t\treturn a;\n\t\t\t}else{\n\t\t\t\treturn b;\n\t\t\t}\n\t\t}\n\n\t\tlet pointSize = getValid(parameters.size, 1.0);\n\t\tlet minSize = getValid(parameters.minSize, 2.0);\n\t\tlet maxSize = getValid(parameters.maxSize, 50.0);\n\t\tlet treeType = getValid(parameters.treeType, TreeType.OCTREE);\n\n\t\tthis._pointSizeType = PointSizeType.FIXED;\n\t\tthis._shape = PointShape.SQUARE;\n\t\tthis._useClipBox = false;\n\t\tthis.clipBoxes = [];\n\t\tthis.clipPolygons = [];\n\t\tthis._weighted = false;\n\t\tthis._gradient = Gradients.SPECTRAL;\n\t\tthis.gradientTexture = PointCloudMaterial.generateGradientTexture(this._gradient);\n\t\tthis._matcap = \"matcap.jpg\";\n\t\tthis.matcapTexture = Potree.PointCloudMaterial.generateMatcapTexture(this._matcap);\n\t\tthis.lights = false;\n\t\tthis.fog = false;\n\t\tthis._treeType = treeType;\n\t\tthis._useEDL = false;\n\t\tthis.defines = new Map();\n\n\t\tthis.ranges = new Map();\n\n\t\tthis._activeAttributeName = null;\n\n\t\tthis._defaultIntensityRangeChanged = false;\n\t\tthis._defaultElevationRangeChanged = false;\n\n\t\t{\n\t\t\tconst [width, height] = [256, 1];\n\t\t\tlet data = new Uint8Array(width * 4);\n\t\t\tlet texture = new THREE.DataTexture(data, width, height, THREE.RGBAFormat);\n\t\t\ttexture.magFilter = THREE.NearestFilter;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tthis.classificationTexture = texture;\n\t\t}\n\n\t\tthis.attributes = {\n\t\t\tposition: { type: 'fv', value: [] },\n\t\t\tcolor: { type: 'fv', value: [] },\n\t\t\tnormal: { type: 'fv', value: [] },\n\t\t\tintensity: { type: 'f', value: [] },\n\t\t\tclassification: { type: 'f', value: [] },\n\t\t\treturnNumber: { type: 'f', value: [] },\n\t\t\tnumberOfReturns: { type: 'f', value: [] },\n\t\t\tpointSourceID: { type: 'f', value: [] },\n\t\t\tindices: { type: 'fv', value: [] }\n\t\t};\n\n\t\tthis.uniforms = {\n\t\t\tlevel:\t\t\t\t{ type: \"f\", value: 0.0 },\n\t\t\tvnStart:\t\t\t{ type: \"f\", value: 0.0 },\n\t\t\tspacing:\t\t\t{ type: \"f\", value: 1.0 },\n\t\t\tblendHardness:\t\t{ type: \"f\", value: 2.0 },\n\t\t\tblendDepthSupplement:\t{ type: \"f\", value: 0.0 },\n\t\t\tfov:\t\t\t\t{ type: \"f\", value: 1.0 },\n\t\t\tscreenWidth:\t\t{ type: \"f\", value: 1.0 },\n\t\t\tscreenHeight:\t\t{ type: \"f\", value: 1.0 },\n\t\t\tnear:\t\t\t\t{ type: \"f\", value: 0.1 },\n\t\t\tfar:\t\t\t\t{ type: \"f\", value: 1.0 },\n\t\t\tuColor:\t\t\t\t{ type: \"c\", value: new THREE.Color( 0xffffff ) },\n\t\t\tuOpacity:\t\t\t{ type: \"f\", value: 1.0 },\n\t\t\tsize:\t\t\t\t{ type: \"f\", value: pointSize },\n\t\t\tminSize:\t\t\t{ type: \"f\", value: minSize },\n\t\t\tmaxSize:\t\t\t{ type: \"f\", value: maxSize },\n\t\t\toctreeSize:\t\t\t{ type: \"f\", value: 0 },\n\t\t\tbbSize:\t\t\t\t{ type: \"fv\", value: [0, 0, 0] },\n\t\t\televationRange:\t\t{ type: \"2fv\", value: [0, 0] },\n\n\t\t\tclipBoxCount:\t\t{ type: \"f\", value: 0 },\n\t\t\t//clipSphereCount:\t{ type: \"f\", value: 0 },\n\t\t\tclipPolygonCount:\t{ type: \"i\", value: 0 },\n\t\t\tclipBoxes:\t\t\t{ type: \"Matrix4fv\", value: [] },\n\t\t\t//clipSpheres:\t\t{ type: \"Matrix4fv\", value: [] },\n\t\t\tclipPolygons:\t\t{ type: \"3fv\", value: [] },\n\t\t\tclipPolygonVCount:\t{ type: \"iv\", value: [] },\n\t\t\tclipPolygonVP:\t\t{ type: \"Matrix4fv\", value: [] },\n\n\t\t\tvisibleNodes:\t\t{ type: \"t\", value: this.visibleNodesTexture },\n\t\t\tpcIndex:\t\t\t{ type: \"f\", value: 0 },\n\t\t\tgradient:\t\t\t{ type: \"t\", value: this.gradientTexture },\n\t\t\tclassificationLUT:\t{ type: \"t\", value: this.classificationTexture },\n\t\t\tuHQDepthMap:\t\t{ type: \"t\", value: null },\n\t\t\ttoModel:\t\t\t{ type: \"Matrix4f\", value: [] },\n\t\t\tdiffuse:\t\t\t{ type: \"fv\", value: [1, 1, 1] },\n\t\t\ttransition:\t\t\t{ type: \"f\", value: 0.5 },\n\n\t\t\t intensityRange:\t\t{ type: \"fv\", value: [Infinity, -Infinity] },\n\n\t\t\tintensity_gbc: \t\t{ type: \"fv\", value: [1, 0, 0]},\n\t\t\tuRGB_gbc:\t \t\t{ type: \"fv\", value: [1, 0, 0]},\n\t\t\t// intensityGamma:\t\t{ type: \"f\", value: 1 },\n\t\t\t// intensityContrast:\t{ type: \"f\", value: 0 },\n\t\t\t// intensityBrightness:{ type: \"f\", value: 0 },\n\t\t\t// rgbGamma:\t\t\t{ type: \"f\", value: 1 },\n\t\t\t// rgbContrast:\t\t{ type: \"f\", value: 0 },\n\t\t\t// rgbBrightness:\t\t{ type: \"f\", value: 0 },\n\t\t\twRGB:\t\t\t\t{ type: \"f\", value: 1 },\n\t\t\twIntensity:\t\t\t{ type: \"f\", value: 0 },\n\t\t\twElevation:\t\t\t{ type: \"f\", value: 0 },\n\t\t\twClassification:\t{ type: \"f\", value: 0 },\n\t\t\twReturnNumber:\t\t{ type: \"f\", value: 0 },\n\t\t\twSourceID:\t\t\t{ type: \"f\", value: 0 },\n\t\t\tuseOrthographicCamera: { type: \"b\", value: false },\n\t\t\televationGradientRepat: { type: \"i\", value: ElevationGradientRepeat.CLAMP },\n\t\t\tclipTask:\t\t\t{ type: \"i\", value: 1 },\n\t\t\tclipMethod:\t\t\t{ type: \"i\", value: 1 },\n\t\t\tuShadowColor:\t\t{ type: \"3fv\", value: [0, 0, 0] },\n\n\t\t\tuExtraScale:\t\t{ type: \"f\", value: 1},\n\t\t\tuExtraOffset:\t\t{ type: \"f\", value: 0},\n\t\t\tuExtraRange:\t\t{ type: \"2fv\", value: [0, 1] },\n\t\t\tuExtraGammaBrightContr:\t{ type: \"3fv\", value: [1, 0, 0] },\n\n\t\t\tuFilterReturnNumberRange:\t\t{ type: \"fv\", value: [0, 7]},\n\t\t\tuFilterNumberOfReturnsRange:\t{ type: \"fv\", value: [0, 7]},\n\t\t\tuFilterGPSTimeClipRange:\t\t{ type: \"fv\", value: [0, 7]},\n\t\t\tuFilterPointSourceIDClipRange:\t\t{ type: \"fv\", value: [0, 65535]},\n\t\t\tmatcapTextureUniform: \t{ type: \"t\", value: this.matcapTexture },\n\t\t\tbackfaceCulling: { type: \"b\", value: false },\n\t\t};\n\n\t\tthis.classification = ClassificationScheme.DEFAULT;\n\n\t\tthis.defaultAttributeValues.normal = [0, 0, 0];\n\t\tthis.defaultAttributeValues.classification = [0, 0, 0];\n\t\tthis.defaultAttributeValues.indices = [0, 0, 0, 0];\n\n\t\tthis.vertexShader = Shaders['pointcloud.vs'];\n\t\tthis.fragmentShader = Shaders['pointcloud.fs'];\n\t\t\n\t\tthis.vertexColors = THREE.VertexColors;\n\n\t\tthis.updateShaderSource();\n\t}\n\n\tsetDefine(key, value){\n\t\tif(value !== undefined && value !== null){\n\t\t\tif(this.defines.get(key) !== value){\n\t\t\t\tthis.defines.set(key, value);\n\t\t\t\tthis.updateShaderSource();\n\t\t\t}\n\t\t}else{\n\t\t\tthis.removeDefine(key);\n\t\t}\n\t}\n\n\tremoveDefine(key){\n\t\tthis.defines.delete(key);\n\t}\n\n\tupdateShaderSource () {\n\n\t\tlet vs = Shaders['pointcloud.vs'];\n\t\tlet fs = Shaders['pointcloud.fs'];\n\t\tlet definesString = this.getDefines();\n\n\t\tlet vsVersionIndex = vs.indexOf(\"#version \");\n\t\tlet fsVersionIndex = fs.indexOf(\"#version \");\n\n\t\tif(vsVersionIndex >= 0){\n\t\t\tvs = vs.replace(/(#version .*)/, `$1\\n${definesString}`)\n\t\t}else{\n\t\t\tvs = `${definesString}\\n${vs}`;\n\t\t}\n\n\t\tif(fsVersionIndex >= 0){\n\t\t\tfs = fs.replace(/(#version .*)/, `$1\\n${definesString}`)\n\t\t}else{\n\t\t\tfs = `${definesString}\\n${fs}`;\n\t\t}\n\n\t\tthis.vertexShader = vs;\n\t\tthis.fragmentShader = fs;\n\n\t\tif (this.opacity === 1.0) {\n\t\t\tthis.blending = THREE.NoBlending;\n\t\t\tthis.transparent = false;\n\t\t\tthis.depthTest = true;\n\t\t\tthis.depthWrite = true;\n\t\t\tthis.depthFunc = THREE.LessEqualDepth;\n\t\t} else if (this.opacity < 1.0 && !this.useEDL) {\n\t\t\tthis.blending = THREE.AdditiveBlending;\n\t\t\tthis.transparent = true;\n\t\t\tthis.depthTest = false;\n\t\t\tthis.depthWrite = true;\n\t\t\tthis.depthFunc = THREE.AlwaysDepth;\n\t\t}\n\n\t\tif (this.weighted) {\n\t\t\tthis.blending = THREE.AdditiveBlending;\n\t\t\tthis.transparent = true;\n\t\t\tthis.depthTest = true;\n\t\t\tthis.depthWrite = false;\n\t\t}\n\n\t\tthis.needsUpdate = true;\n\t}\n\n\tgetDefines () {\n\t\tlet defines = [];\n\n\t\tif (this.pointSizeType === PointSizeType.FIXED) {\n\t\t\tdefines.push('#define fixed_point_size');\n\t\t} else if (this.pointSizeType === PointSizeType.ATTENUATED) {\n\t\t\tdefines.push('#define attenuated_point_size');\n\t\t} else if (this.pointSizeType === PointSizeType.ADAPTIVE) {\n\t\t\tdefines.push('#define adaptive_point_size');\n\t\t}\n\n\t\tif (this.shape === PointShape.SQUARE) {\n\t\t\tdefines.push('#define square_point_shape');\n\t\t} else if (this.shape === PointShape.CIRCLE) {\n\t\t\tdefines.push('#define circle_point_shape');\n\t\t} else if (this.shape === PointShape.PARABOLOID) {\n\t\t\tdefines.push('#define paraboloid_point_shape');\n\t\t}\n\n\t\tif (this._useEDL) {\n\t\t\tdefines.push('#define use_edl');\n\t\t}\n\n\t\tif(this.activeAttributeName){\n\t\t\tlet attributeName = this.activeAttributeName.replace(/[^a-zA-Z0-9]/g, '_');\n\n\t\t\tdefines.push(`#define color_type_${attributeName}`);\n\t\t}\n\t\t\n\t\tif(this._treeType === TreeType.OCTREE){\n\t\t\tdefines.push('#define tree_type_octree');\n\t\t}else if(this._treeType === TreeType.KDTREE){\n\t\t\tdefines.push('#define tree_type_kdtree');\n\t\t}\n\n\t\tif (this.weighted) {\n\t\t\tdefines.push('#define weighted_splats');\n\t\t}\n\n\t\tfor(let [key, value] of this.defines){\n\t\t\tdefines.push(value);\n\t\t}\n\n\t\treturn defines.join(\"\\n\");\n\t}\n\n\tsetClipBoxes (clipBoxes) {\n\t\tif (!clipBoxes) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet doUpdate = (this.clipBoxes.length !== clipBoxes.length) && (clipBoxes.length === 0 || this.clipBoxes.length === 0);\n\n\t\tthis.uniforms.clipBoxCount.value = this.clipBoxes.length;\n\t\tthis.clipBoxes = clipBoxes;\n\n\t\tif (doUpdate) {\n\t\t\tthis.updateShaderSource();\n\t\t}\n\n\t\tthis.uniforms.clipBoxes.value = new Float32Array(this.clipBoxes.length * 16);\n\n\t\tfor (let i = 0; i < this.clipBoxes.length; i++) {\n\t\t\tlet box = clipBoxes[i];\n\n\t\t\tthis.uniforms.clipBoxes.value.set(box.inverse.elements, 16 * i);\n\t\t}\n\n\t\tfor (let i = 0; i < this.uniforms.clipBoxes.value.length; i++) {\n\t\t\tif (Number.isNaN(this.uniforms.clipBoxes.value[i])) {\n\t\t\t\tthis.uniforms.clipBoxes.value[i] = Infinity;\n\t\t\t}\n\t\t}\n\t}\n\n\tsetClipPolygons(clipPolygons, maxPolygonVertices) {\n\t\tif(!clipPolygons){\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clipPolygons = clipPolygons;\n\n\t\tlet doUpdate = (this.clipPolygons.length !== clipPolygons.length);\n\n\t\tif(doUpdate){\n\t\t\tthis.updateShaderSource();\n\t\t}\n\t}\n\t\n\tget gradient(){\n\t\treturn this._gradient;\n\t}\n\n\tset gradient (value) {\n\t\tif (this._gradient !== value) {\n\t\t\tthis._gradient = value;\n\t\t\tthis.gradientTexture = PointCloudMaterial.generateGradientTexture(this._gradient);\n\t\t\tthis.uniforms.gradient.value = this.gradientTexture;\n\t\t}\n\t}\n\n\tget matcap(){\n\t\treturn this._matcap;\n\t}\n\n\tset matcap (value) {\n\t\tif (this._matcap !== value) {\n\t\t\tthis._matcap = value;\n\t\t\tthis.matcapTexture = Potree.PointCloudMaterial.generateMatcapTexture(this._matcap);\n\t\t\tthis.uniforms.matcapTextureUniform.value = this.matcapTexture;\n\t\t}\n\t}\n\tget useOrthographicCamera() {\n\t\treturn this.uniforms.useOrthographicCamera.value;\n\t}\n\n\tset useOrthographicCamera(value) {\n\t\tif(this.uniforms.useOrthographicCamera.value !== value){\n\t\t\tthis.uniforms.useOrthographicCamera.value = value;\n\t\t}\n\t}\n\tget backfaceCulling() {\n\t\treturn this.uniforms.backfaceCulling.value;\n\t}\n\n\tset backfaceCulling(value) {\n\t\tif(this.uniforms.backfaceCulling.value !== value){\n\t\t\tthis.uniforms.backfaceCulling.value = value;\n\t\t\tthis.dispatchEvent({type: 'backface_changed', target: this});\n\t\t}\n\t}\n\n\trecomputeClassification () {\n\t\tconst classification = this.classification;\n\t\tconst data = this.classificationTexture.image.data;\n\n\t\tlet width = 256;\n\t\tconst black = [1, 1, 1, 1];\n\n\t\tlet valuesChanged = false;\n\n\t\tfor (let i = 0; i < width; i++) {\n\n\t\t\tlet color;\n\t\t\tlet visible = true;\n\n\t\t\tif (classification[i]) {\n\t\t\t\tcolor = classification[i].color;\n\t\t\t\tvisible = classification[i].visible;\n\t\t\t} else if (classification[i % 32]) {\n\t\t\t\tcolor = classification[i % 32].color;\n\t\t\t\tvisible = classification[i % 32].visible;\n\t\t\t} else if(classification.DEFAULT) {\n\t\t\t\tcolor = classification.DEFAULT.color;\n\t\t\t\tvisible = classification.DEFAULT.visible;\n\t\t\t}else{\n\t\t\t\tcolor = black;\n\t\t\t}\n\n\t\t\tconst r = parseInt(255 * color[0]);\n\t\t\tconst g = parseInt(255 * color[1]);\n\t\t\tconst b = parseInt(255 * color[2]);\n\t\t\tconst a = visible ? parseInt(255 * color[3]) : 0;\n\n\n\t\t\tif(data[4 * i + 0] !== r){\n\t\t\t\tdata[4 * i + 0] = r;\n\t\t\t\tvaluesChanged = true;\n\t\t\t}\n\n\t\t\tif(data[4 * i + 1] !== g){\n\t\t\t\tdata[4 * i + 1] = g;\n\t\t\t\tvaluesChanged = true;\n\t\t\t}\n\n\t\t\tif(data[4 * i + 2] !== b){\n\t\t\t\tdata[4 * i + 2] = b;\n\t\t\t\tvaluesChanged = true;\n\t\t\t}\n\n\t\t\tif(data[4 * i + 3] !== a){\n\t\t\t\tdata[4 * i + 3] = a;\n\t\t\t\tvaluesChanged = true;\n\t\t\t}\n\t\t}\n\n\t\tif(valuesChanged){\n\t\t\tthis.classificationTexture.needsUpdate = true;\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget spacing () {\n\t\treturn this.uniforms.spacing.value;\n\t}\n\n\tset spacing (value) {\n\t\tif (this.uniforms.spacing.value !== value) {\n\t\t\tthis.uniforms.spacing.value = value;\n\t\t}\n\t}\n\n\tget useClipBox () {\n\t\treturn this._useClipBox;\n\t}\n\n\tset useClipBox (value) {\n\t\tif (this._useClipBox !== value) {\n\t\t\tthis._useClipBox = value;\n\t\t\tthis.updateShaderSource();\n\t\t}\n\t}\n\n\tget clipTask(){\n\t\treturn this.uniforms.clipTask.value;\n\t}\n\n\tset clipTask(mode){\n\t\tthis.uniforms.clipTask.value = mode;\n\t}\n\n\tget elevationGradientRepat(){\n\t\treturn this.uniforms.elevationGradientRepat.value;\n\t}\n\n\tset elevationGradientRepat(mode){\n\t\tthis.uniforms.elevationGradientRepat.value = mode;\n\t}\n\n\tget clipMethod(){\n\t\treturn this.uniforms.clipMethod.value;\n\t}\n\n\tset clipMethod(mode){\n\t\tthis.uniforms.clipMethod.value = mode;\n\t}\n\n\tget weighted(){\n\t\treturn this._weighted;\n\t}\n\n\tset weighted (value) {\n\t\tif (this._weighted !== value) {\n\t\t\tthis._weighted = value;\n\t\t\tthis.updateShaderSource();\n\t\t}\n\t}\n\n\tget fov () {\n\t\treturn this.uniforms.fov.value;\n\t}\n\n\tset fov (value) {\n\t\tif (this.uniforms.fov.value !== value) {\n\t\t\tthis.uniforms.fov.value = value;\n\t\t\t// this.updateShaderSource();\n\t\t}\n\t}\n\n\tget screenWidth () {\n\t\treturn this.uniforms.screenWidth.value;\n\t}\n\n\tset screenWidth (value) {\n\t\tif (this.uniforms.screenWidth.value !== value) {\n\t\t\tthis.uniforms.screenWidth.value = value;\n\t\t\t// this.updateShaderSource();\n\t\t}\n\t}\n\n\tget screenHeight () {\n\t\treturn this.uniforms.screenHeight.value;\n\t}\n\n\tset screenHeight (value) {\n\t\tif (this.uniforms.screenHeight.value !== value) {\n\t\t\tthis.uniforms.screenHeight.value = value;\n\t\t\t// this.updateShaderSource();\n\t\t}\n\t}\n\n\tget near () {\n\t\treturn this.uniforms.near.value;\n\t}\n\n\tset near (value) {\n\t\tif (this.uniforms.near.value !== value) {\n\t\t\tthis.uniforms.near.value = value;\n\t\t}\n\t}\n\n\tget far () {\n\t\treturn this.uniforms.far.value;\n\t}\n\n\tset far (value) {\n\t\tif (this.uniforms.far.value !== value) {\n\t\t\tthis.uniforms.far.value = value;\n\t\t}\n\t}\n\t\n\tget opacity(){\n\t\treturn this.uniforms.uOpacity.value;\n\t}\n\n\tset opacity (value) {\n\t\tif (this.uniforms && this.uniforms.uOpacity) {\n\t\t\tif (this.uniforms.uOpacity.value !== value) {\n\t\t\t\tthis.uniforms.uOpacity.value = value;\n\t\t\t\tthis.updateShaderSource();\n\t\t\t\tthis.dispatchEvent({\n\t\t\t\t\ttype: 'opacity_changed',\n\t\t\t\t\ttarget: this\n\t\t\t\t});\n\t\t\t\tthis.dispatchEvent({\n\t\t\t\t\ttype: 'material_property_changed',\n\t\t\t\t\ttarget: this\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tget activeAttributeName(){\n\t\treturn this._activeAttributeName;\n\t}\n\n\tset activeAttributeName(value){\n\t\tif (this._activeAttributeName !== value) {\n\t\t\tthis._activeAttributeName = value;\n\n\t\t\tthis.updateShaderSource();\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'active_attribute_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget pointSizeType () {\n\t\treturn this._pointSizeType;\n\t}\n\n\tset pointSizeType (value) {\n\t\tif (this._pointSizeType !== value) {\n\t\t\tthis._pointSizeType = value;\n\t\t\tthis.updateShaderSource();\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'point_size_type_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget useEDL(){\n\t\treturn this._useEDL;\n\t}\n\n\tset useEDL (value) {\n\t\tif (this._useEDL !== value) {\n\t\t\tthis._useEDL = value;\n\t\t\tthis.updateShaderSource();\n\t\t}\n\t}\n\n\tget color () {\n\t\treturn this.uniforms.uColor.value;\n\t}\n\n\tset color (value) {\n\t\tif (!this.uniforms.uColor.value.equals(value)) {\n\t\t\tthis.uniforms.uColor.value.copy(value);\n\t\t\t\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'color_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget shape () {\n\t\treturn this._shape;\n\t}\n\n\tset shape (value) {\n\t\tif (this._shape !== value) {\n\t\t\tthis._shape = value;\n\t\t\tthis.updateShaderSource();\n\t\t\tthis.dispatchEvent({type: 'point_shape_changed', target: this});\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget treeType () {\n\t\treturn this._treeType;\n\t}\n\n\tset treeType (value) {\n\t\tif (this._treeType !== value) {\n\t\t\tthis._treeType = value;\n\t\t\tthis.updateShaderSource();\n\t\t}\n\t}\n\n\tget bbSize () {\n\t\treturn this.uniforms.bbSize.value;\n\t}\n\n\tset bbSize (value) {\n\t\tthis.uniforms.bbSize.value = value;\n\t}\n\n\tget size () {\n\t\treturn this.uniforms.size.value;\n\t}\n\n\tset size (value) {\n\t\tif (this.uniforms.size.value !== value) {\n\t\t\tthis.uniforms.size.value = value;\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'point_size_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget minSize(){\n\t\treturn this.uniforms.minSize.value;\n\t}\n\n\tset minSize(value){\n\t\tif (this.uniforms.minSize.value !== value) {\n\t\t\tthis.uniforms.minSize.value = value;\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'point_size_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget elevationRange () {\n\t\treturn this.uniforms.elevationRange.value;\n\t}\n\n\tset elevationRange (value) {\n\t\tlet changed = this.uniforms.elevationRange.value[0] !== value[0]\n\t\t\t|| this.uniforms.elevationRange.value[1] !== value[1];\n\n\t\tif(changed){\n\t\t\tthis.uniforms.elevationRange.value = value;\n\n\t\t\tthis._defaultElevationRangeChanged = true;\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget heightMin () {\n\t\treturn this.uniforms.elevationRange.value[0];\n\t}\n\n\tset heightMin (value) {\n\t\tthis.elevationRange = [value, this.elevationRange[1]];\n\t}\n\n\tget heightMax () {\n\t\treturn this.uniforms.elevationRange.value[1];\n\t}\n\n\tset heightMax (value) {\n\t\tthis.elevationRange = [this.elevationRange[0], value];\n\t}\n\n\tget transition () {\n\t\treturn this.uniforms.transition.value;\n\t}\n\n\tset transition (value) {\n\t\tthis.uniforms.transition.value = value;\n\t}\n\n\tget intensityRange () {\n\t\treturn this.uniforms.intensityRange.value;\n\t}\n\n\tset intensityRange (value) {\n\t\tif (!(value instanceof Array && value.length === 2)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (value[0] === this.uniforms.intensityRange.value[0] &&\n\t\t\tvalue[1] === this.uniforms.intensityRange.value[1]) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.uniforms.intensityRange.value = value;\n\n\t\tthis._defaultIntensityRangeChanged = true;\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'material_property_changed',\n\t\t\ttarget: this\n\t\t});\n\t}\n\n\tget intensityGamma () {\n\t\treturn this.uniforms.intensity_gbc.value[0];\n\t}\n\n\tset intensityGamma (value) {\n\t\tif (this.uniforms.intensity_gbc.value[0] !== value) {\n\t\t\tthis.uniforms.intensity_gbc.value[0] = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget intensityContrast () {\n\t\treturn this.uniforms.intensity_gbc.value[2];\n\t}\n\n\tset intensityContrast (value) {\n\t\tif (this.uniforms.intensity_gbc.value[2] !== value) {\n\t\t\tthis.uniforms.intensity_gbc.value[2] = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget intensityBrightness () {\n\t\treturn this.uniforms.intensity_gbc.value[1];\n\t}\n\n\tset intensityBrightness (value) {\n\t\tif (this.uniforms.intensity_gbc.value[1] !== value) {\n\t\t\tthis.uniforms.intensity_gbc.value[1] = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget rgbGamma () {\n\t\treturn this.uniforms.uRGB_gbc.value[0];\n\t}\n\n\tset rgbGamma (value) {\n\t\tif (this.uniforms.uRGB_gbc.value[0] !== value) {\n\t\t\tthis.uniforms.uRGB_gbc.value[0] = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget rgbContrast () {\n\t\treturn this.uniforms.uRGB_gbc.value[2];\n\t}\n\n\tset rgbContrast (value) {\n\t\tif (this.uniforms.uRGB_gbc.value[2] !== value) {\n\t\t\tthis.uniforms.uRGB_gbc.value[2] = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget rgbBrightness () {\n\t\treturn this.uniforms.uRGB_gbc.value[1];\n\t}\n\n\tset rgbBrightness (value) {\n\t\tif (this.uniforms.uRGB_gbc.value[1] !== value) {\n\t\t\tthis.uniforms.uRGB_gbc.value[1] = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\t\n\tget extraGamma () {\n\t\treturn this.uniforms.uExtraGammaBrightContr.value[0];\n\t}\n\n\tset extraGamma (value) {\n\t\tif (this.uniforms.uExtraGammaBrightContr.value[0] !== value) {\n\t\t\tthis.uniforms.uExtraGammaBrightContr.value[0] = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget extraBrightness () {\n\t\treturn this.uniforms.uExtraGammaBrightContr.value[1];\n\t}\n\n\tset extraBrightness (value) {\n\t\tif (this.uniforms.uExtraGammaBrightContr.value[1] !== value) {\n\t\t\tthis.uniforms.uExtraGammaBrightContr.value[1] = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget extraContrast () {\n\t\treturn this.uniforms.uExtraGammaBrightContr.value[2];\n\t}\n\n\tset extraContrast (value) {\n\t\tif (this.uniforms.uExtraGammaBrightContr.value[2] !== value) {\n\t\t\tthis.uniforms.uExtraGammaBrightContr.value[2] = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tgetRange(attributeName){\n\t\treturn this.ranges.get(attributeName);\n\t}\n\n\tsetRange(attributeName, newRange){\n\n\t\tlet rangeChanged = false;\n\n\t\tlet oldRange = this.ranges.get(attributeName);\n\n\t\tif(oldRange != null && newRange != null){\n\t\t\trangeChanged = oldRange[0] !== newRange[0] || oldRange[1] !== newRange[1];\n\t\t}else{\n\t\t\trangeChanged = true;\n\t\t}\n\n\t\tthis.ranges.set(attributeName, newRange);\n\n\t\tif(rangeChanged){\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget extraRange () {\n\t\treturn this.uniforms.uExtraRange.value;\n\t}\n\n\tset extraRange (value) {\n\t\tif (!(value instanceof Array && value.length === 2)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (value[0] === this.uniforms.uExtraRange.value[0] &&\n\t\t\tvalue[1] === this.uniforms.uExtraRange.value[1]) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.uniforms.uExtraRange.value = value;\n\n\t\tthis._defaultExtraRangeChanged = true;\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'material_property_changed',\n\t\t\ttarget: this\n\t\t});\n\t}\n\n\tget weightRGB () {\n\t\treturn this.uniforms.wRGB.value;\n\t}\n\n\tset weightRGB (value) {\n\t\tif(this.uniforms.wRGB.value !== value){\n\t\t\tthis.uniforms.wRGB.value = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget weightIntensity () {\n\t\treturn this.uniforms.wIntensity.value;\n\t}\n\n\tset weightIntensity (value) {\n\t\tif(this.uniforms.wIntensity.value !== value){\n\t\t\tthis.uniforms.wIntensity.value = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget weightElevation () {\n\t\treturn this.uniforms.wElevation.value;\n\t}\n\n\tset weightElevation (value) {\n\t\tif(this.uniforms.wElevation.value !== value){\n\t\t\tthis.uniforms.wElevation.value = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget weightClassification () {\n\t\treturn this.uniforms.wClassification.value;\n\t}\n\n\tset weightClassification (value) {\n\t\tif(this.uniforms.wClassification.value !== value){\n\t\t\tthis.uniforms.wClassification.value = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget weightReturnNumber () {\n\t\treturn this.uniforms.wReturnNumber.value;\n\t}\n\n\tset weightReturnNumber (value) {\n\t\tif(this.uniforms.wReturnNumber.value !== value){\n\t\t\tthis.uniforms.wReturnNumber.value = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget weightSourceID () {\n\t\treturn this.uniforms.wSourceID.value;\n\t}\n\n\tset weightSourceID (value) {\n\t\tif(this.uniforms.wSourceID.value !== value){\n\t\t\tthis.uniforms.wSourceID.value = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tstatic generateGradientTexture (gradient) {\n\t\tlet size = 64;\n\n\t\t// create canvas\n\t\tlet canvas = document.createElement('canvas');\n\t\tcanvas.width = size;\n\t\tcanvas.height = size;\n\n\t\t// get context\n\t\tlet context = canvas.getContext('2d');\n\n\t\t// draw gradient\n\t\tcontext.rect(0, 0, size, size);\n\t\tlet ctxGradient = context.createLinearGradient(0, 0, size, size);\n\n\t\tfor (let i = 0; i < gradient.length; i++) {\n\t\t\tlet step = gradient[i];\n\n\t\t\tctxGradient.addColorStop(step[0], '#' + step[1].getHexString());\n\t\t}\n\n\t\tcontext.fillStyle = ctxGradient;\n\t\tcontext.fill();\n\t\t\n\t\t//let texture = new THREE.Texture(canvas);\n\t\tlet texture = new THREE.CanvasTexture(canvas);\n\t\ttexture.needsUpdate = true;\n\t\t\n\t\ttexture.minFilter = THREE.LinearFilter;\n\t\ttexture.wrap = THREE.RepeatWrapping;\n\t\ttexture.repeat = 2;\n\t\t// textureImage = texture.image;\n\n\t\treturn texture;\n\t}\n\t\n\tstatic generateMatcapTexture (matcap) {\n\tvar url = new URL(Potree.resourcePath + \"/textures/matcap/\" + matcap).href;\n\tlet texture = new THREE.TextureLoader().load( url );\n\t\ttexture.magFilter = texture.minFilter = THREE.LinearFilter; \n\t\ttexture.needsUpdate = true;\n\t\t// PotreeConverter_1.6_2018_07_29_windows_x64\\PotreeConverter.exe autzen_xyzrgbXYZ_ascii.xyz -f xyzrgbXYZ -a RGB NORMAL -o autzen_xyzrgbXYZ_ascii_a -p index --overwrite\n\t\t// Switch matcap texture on the fly : viewer.scene.pointclouds[0].material.matcap = 'matcap1.jpg'; \n\t\t// For non power of 2, use LinearFilter and dont generate mipmaps, For power of 2, use NearestFilter and generate mipmaps : matcap2.jpg 1 2 8 11 12 13\n\t\treturn texture; \n\t}\n\n\tstatic generateMatcapTexture (matcap) {\n\tvar url = new URL(Potree.resourcePath + \"/textures/matcap/\" + matcap).href;\n\tlet texture = new THREE.TextureLoader().load( url );\n\t\ttexture.magFilter = texture.minFilter = THREE.LinearFilter; \n\t\ttexture.needsUpdate = true;\n\t\t// PotreeConverter_1.6_2018_07_29_windows_x64\\PotreeConverter.exe autzen_xyzrgbXYZ_ascii.xyz -f xyzrgbXYZ -a RGB NORMAL -o autzen_xyzrgbXYZ_ascii_a -p index --overwrite\n\t\t// Switch matcap texture on the fly : viewer.scene.pointclouds[0].material.matcap = 'matcap1.jpg'; \n\t\t// For non power of 2, use LinearFilter and dont generate mipmaps, For power of 2, use NearestFilter and generate mipmaps : matcap2.jpg 1 2 8 11 12 13\n\t\treturn texture; \n\t}\n\n\tdisableEvents(){\n\t\tif(this._hiddenListeners === undefined){\n\t\t\tthis._hiddenListeners = this._listeners;\n\t\t\tthis._listeners = {};\n\t\t}\n\t};\n\n\tenableEvents(){\n\t\tthis._listeners = this._hiddenListeners;\n\t\tthis._hiddenListeners = undefined;\n\t};\n\n\t// copyFrom(from){\n\n\t// \tvar a = 10;\n\n\t// \tfor(let name of Object.keys(this.uniforms)){\n\t// \t\tthis.uniforms[name].value = from.uniforms[name].value;\n\t// \t}\n\t// }\n\n\t// copy(from){\n\t// \tthis.copyFrom(from);\n\t// }\n\n}\n","\nimport {PointCloudTree, PointCloudTreeNode} from \"./PointCloudTree.js\";\nimport {PointCloudOctreeGeometryNode} from \"./PointCloudOctreeGeometry.js\";\nimport {Utils} from \"./utils.js\";\nimport {PointCloudMaterial} from \"./materials/PointCloudMaterial.js\";\n\n\nexport class PointCloudOctreeNode extends PointCloudTreeNode {\n\tconstructor () {\n\t\tsuper();\n\n\t\t//this.children = {};\n\t\tthis.children = [];\n\t\tthis.sceneNode = null;\n\t\tthis.octree = null;\n\t}\n\n\tgetNumPoints () {\n\t\treturn this.geometryNode.numPoints;\n\t}\n\n\tisLoaded () {\n\t\treturn true;\n\t}\n\n\tisTreeNode () {\n\t\treturn true;\n\t}\n\n\tisGeometryNode () {\n\t\treturn false;\n\t}\n\n\tgetLevel () {\n\t\treturn this.geometryNode.level;\n\t}\n\n\tgetBoundingSphere () {\n\t\treturn this.geometryNode.boundingSphere;\n\t}\n\n\tgetBoundingBox () {\n\t\treturn this.geometryNode.boundingBox;\n\t}\n\n\tgetChildren () {\n\t\tlet children = [];\n\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\tif (this.children[i]) {\n\t\t\t\tchildren.push(this.children[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn children;\n\t}\n\n\tgetPointsInBox(boxNode){\n\n\t\tif(!this.sceneNode){\n\t\t\treturn null;\n\t\t}\n\n\t\tlet buffer = this.geometryNode.buffer;\n\n\t\tlet posOffset = buffer.offset(\"position\");\n\t\tlet stride = buffer.stride;\n\t\tlet view = new DataView(buffer.data);\n\n\t\tlet worldToBox = new THREE.Matrix4().getInverse(boxNode.matrixWorld);\n\t\tlet objectToBox = new THREE.Matrix4().multiplyMatrices(worldToBox, this.sceneNode.matrixWorld);\n\n\t\tlet inBox = [];\n\n\t\tlet pos = new THREE.Vector4();\n\t\tfor(let i = 0; i < buffer.numElements; i++){\n\t\t\tlet x = view.getFloat32(i * stride + posOffset + 0, true);\n\t\t\tlet y = view.getFloat32(i * stride + posOffset + 4, true);\n\t\t\tlet z = view.getFloat32(i * stride + posOffset + 8, true);\n\n\t\t\tpos.set(x, y, z, 1);\n\t\t\tpos.applyMatrix4(objectToBox);\n\n\t\t\tif(-0.5 < pos.x && pos.x < 0.5){\n\t\t\t\tif(-0.5 < pos.y && pos.y < 0.5){\n\t\t\t\t\tif(-0.5 < pos.z && pos.z < 0.5){\n\t\t\t\t\t\tpos.set(x, y, z, 1).applyMatrix4(this.sceneNode.matrixWorld);\n\t\t\t\t\t\tinBox.push(new THREE.Vector3(pos.x, pos.y, pos.z));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn inBox;\n\t}\n\n\tget name () {\n\t\treturn this.geometryNode.name;\n\t}\n};\n\nexport class PointCloudOctree extends PointCloudTree {\n\tconstructor (geometry, material) {\n\t\tsuper();\n\n\t\tthis.pointBudget = Infinity;\n\t\tthis.pcoGeometry = geometry;\n\t\tthis.boundingBox = this.pcoGeometry.boundingBox;\n\t\tthis.boundingSphere = this.boundingBox.getBoundingSphere(new THREE.Sphere());\n\t\tthis.material = material || new PointCloudMaterial();\n\t\tthis.visiblePointsTarget = 2 * 1000 * 1000;\n\t\tthis.minimumNodePixelSize = 150;\n\t\tthis.level = 0;\n\t\tthis.position.copy(geometry.offset);\n\t\tthis.updateMatrix();\n\n\t\t{\n\t\t\tlet attributeName = \"rgba\";\n\t\t\tif(this.pcoGeometry.pointAttributes.attributes.length > 1){\n\t\t\t\tattributeName = this.pcoGeometry.pointAttributes.attributes[1].name;\n\t\t\t}\n\t\t\tthis.material.activeAttributeName = attributeName;\n\t\t}\n\n\t\tthis.showBoundingBox = false;\n\t\tthis.boundingBoxNodes = [];\n\t\tthis.loadQueue = [];\n\t\tthis.visibleBounds = new THREE.Box3();\n\t\tthis.visibleNodes = [];\n\t\tthis.visibleGeometry = [];\n\t\tthis.generateDEM = false;\n\t\tthis.profileRequests = [];\n\t\tthis.name = '';\n\t\tthis._visible = true;\n\n\t\t{\n\t\t\tlet box = [this.pcoGeometry.tightBoundingBox, this.getBoundingBoxWorld()]\n\t\t\t\t.find(v => v !== undefined);\n\n\t\t\tthis.updateMatrixWorld(true);\n\t\t\tbox = Utils.computeTransformedBoundingBox(box, this.matrixWorld);\n\n\t\t\tlet bMin = box.min.z;\n\t\t\tlet bMax = box.max.z;\n\t\t\tthis.material.heightMin = bMin;\n\t\t\tthis.material.heightMax = bMax;\n\t\t}\n\n\t\t// TODO read projection from file instead\n\t\tthis.projection = geometry.projection;\n\t\tthis.fallbackProjection = geometry.fallbackProjection;\n\n\t\tthis.root = this.pcoGeometry.root;\n\t}\n\n\tsetName (name) {\n\t\tif (this.name !== name) {\n\t\t\tthis.name = name;\n\t\t\tthis.dispatchEvent({type: 'name_changed', name: name, pointcloud: this});\n\t\t}\n\t}\n\n\tgetName () {\n\t\treturn this.name;\n\t}\n\n\tgetAttribute(name){\n\n\t\tconst attribute = this.pcoGeometry.pointAttributes.attributes.find(a => a.name === name);\n\n\t\tif(attribute){\n\t\t\treturn attribute;\n\t\t}else{\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tgetAttributes(){\n\t\treturn this.pcoGeometry.pointAttributes;\n\t}\n\n\ttoTreeNode (geometryNode, parent) {\n\t\tlet node = new PointCloudOctreeNode();\n\n\t\t// if(geometryNode.name === \"r40206\"){\n\t\t//\tconsole.log(\"creating node for r40206\");\n\t\t// }\n\t\tlet sceneNode = new THREE.Points(geometryNode.geometry, this.material);\n\t\tsceneNode.name = geometryNode.name;\n\t\tsceneNode.position.copy(geometryNode.boundingBox.min);\n\t\tsceneNode.frustumCulled = false;\n\t\tsceneNode.onBeforeRender = (_this, scene, camera, geometry, material, group) => {\n\t\t\tif (material.program) {\n\t\t\t\t_this.getContext().useProgram(material.program.program);\n\n\t\t\t\tif (material.program.getUniforms().map.level) {\n\t\t\t\t\tlet level = geometryNode.getLevel();\n\t\t\t\t\tmaterial.uniforms.level.value = level;\n\t\t\t\t\tmaterial.program.getUniforms().map.level.setValue(_this.getContext(), level);\n\t\t\t\t}\n\n\t\t\t\tif (this.visibleNodeTextureOffsets && material.program.getUniforms().map.vnStart) {\n\t\t\t\t\tlet vnStart = this.visibleNodeTextureOffsets.get(node);\n\t\t\t\t\tmaterial.uniforms.vnStart.value = vnStart;\n\t\t\t\t\tmaterial.program.getUniforms().map.vnStart.setValue(_this.getContext(), vnStart);\n\t\t\t\t}\n\n\t\t\t\tif (material.program.getUniforms().map.pcIndex) {\n\t\t\t\t\tlet i = node.pcIndex ? node.pcIndex : this.visibleNodes.indexOf(node);\n\t\t\t\t\tmaterial.uniforms.pcIndex.value = i;\n\t\t\t\t\tmaterial.program.getUniforms().map.pcIndex.setValue(_this.getContext(), i);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// { // DEBUG\n\t\t//\tlet sg = new THREE.SphereGeometry(1, 16, 16);\n\t\t//\tlet sm = new THREE.MeshNormalMaterial();\n\t\t//\tlet s = new THREE.Mesh(sg, sm);\n\t\t//\ts.scale.set(5, 5, 5);\n\t\t//\ts.position.copy(geometryNode.mean)\n\t\t//\t\t.add(this.position)\n\t\t//\t\t.add(geometryNode.boundingBox.min);\n\t\t//\n\t\t//\tviewer.scene.scene.add(s);\n\t\t// }\n\n\t\tnode.geometryNode = geometryNode;\n\t\tnode.sceneNode = sceneNode;\n\t\tnode.pointcloud = this;\n\t\tnode.children = [];\n\t\t//for (let key in geometryNode.children) {\n\t\t//\tnode.children[key] = geometryNode.children[key];\n\t\t//}\n\t\tfor(let i = 0; i < 8; i++){\n\t\t\tnode.children[i] = geometryNode.children[i];\n\t\t}\n\n\t\tif (!parent) {\n\t\t\tthis.root = node;\n\t\t\tthis.add(sceneNode);\n\t\t} else {\n\t\t\tlet childIndex = parseInt(geometryNode.name[geometryNode.name.length - 1]);\n\t\t\tparent.sceneNode.add(sceneNode);\n\t\t\tparent.children[childIndex] = node;\n\t\t}\n\n\t\tlet disposeListener = function () {\n\t\t\tlet childIndex = parseInt(geometryNode.name[geometryNode.name.length - 1]);\n\t\t\tparent.sceneNode.remove(node.sceneNode);\n\t\t\tparent.children[childIndex] = geometryNode;\n\t\t};\n\t\tgeometryNode.oneTimeDisposeHandlers.push(disposeListener);\n\n\t\treturn node;\n\t}\n\n\tupdateVisibleBounds () {\n\t\tlet leafNodes = [];\n\t\tfor (let i = 0; i < this.visibleNodes.length; i++) {\n\t\t\tlet node = this.visibleNodes[i];\n\t\t\tlet isLeaf = true;\n\n\t\t\tfor (let j = 0; j < node.children.length; j++) {\n\t\t\t\tlet child = node.children[j];\n\t\t\t\tif (child instanceof PointCloudOctreeNode) {\n\t\t\t\t\tisLeaf = isLeaf && !child.sceneNode.visible;\n\t\t\t\t} else if (child instanceof PointCloudOctreeGeometryNode) {\n\t\t\t\t\tisLeaf = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isLeaf) {\n\t\t\t\tleafNodes.push(node);\n\t\t\t}\n\t\t}\n\n\t\tthis.visibleBounds.min = new THREE.Vector3(Infinity, Infinity, Infinity);\n\t\tthis.visibleBounds.max = new THREE.Vector3(-Infinity, -Infinity, -Infinity);\n\t\tfor (let i = 0; i < leafNodes.length; i++) {\n\t\t\tlet node = leafNodes[i];\n\n\t\t\tthis.visibleBounds.expandByPoint(node.getBoundingBox().min);\n\t\t\tthis.visibleBounds.expandByPoint(node.getBoundingBox().max);\n\t\t}\n\t}\n\n\tupdateMaterial (material, visibleNodes, camera, renderer) {\n\t\tmaterial.fov = camera.fov * (Math.PI / 180);\n\t\tmaterial.screenWidth = renderer.domElement.clientWidth;\n\t\tmaterial.screenHeight = renderer.domElement.clientHeight;\n\t\tmaterial.spacing = this.pcoGeometry.spacing * Math.max(this.scale.x, this.scale.y, this.scale.z);\n\t\tmaterial.near = camera.near;\n\t\tmaterial.far = camera.far;\n\t\tmaterial.uniforms.octreeSize.value = this.pcoGeometry.boundingBox.getSize(new THREE.Vector3()).x;\n\t}\n\n\tcomputeVisibilityTextureData(nodes, camera){\n\n\t\tif(Potree.measureTimings) performance.mark(\"computeVisibilityTextureData-start\");\n\n\t\tlet data = new Uint8Array(nodes.length * 4);\n\t\tlet visibleNodeTextureOffsets = new Map();\n\n\t\t// copy array\n\t\tnodes = nodes.slice();\n\n\t\t// sort by level and index, e.g. r, r0, r3, r4, r01, r07, r30, ...\n\t\tlet sort = function (a, b) {\n\t\t\tlet na = a.geometryNode.name;\n\t\t\tlet nb = b.geometryNode.name;\n\t\t\tif (na.length !== nb.length) return na.length - nb.length;\n\t\t\tif (na < nb) return -1;\n\t\t\tif (na > nb) return 1;\n\t\t\treturn 0;\n\t\t};\n\t\tnodes.sort(sort);\n\n\t\t// code sample taken from three.js src/math/Ray.js\n\t\tlet v1 = new THREE.Vector3();\n\t\tlet intersectSphereBack = (ray, sphere) => {\n\t\t\tv1.subVectors( sphere.center, ray.origin );\n\t\t\tlet tca = v1.dot( ray.direction );\n\t\t\tlet d2 = v1.dot( v1 ) - tca * tca;\n\t\t\tlet radius2 = sphere.radius * sphere.radius;\n\n\t\t\tif(d2 > radius2){\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tlet thc = Math.sqrt( radius2 - d2 );\n\n\t\t\t// t1 = second intersect point - exit point on back of sphere\n\t\t\tlet t1 = tca + thc;\n\n\t\t\tif(t1 < 0 ){\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn t1;\n\t\t};\n\n\t\tlet lodRanges = new Map();\n\t\tlet leafNodeLodRanges = new Map();\n\n\t\tlet bBox = new THREE.Box3();\n\t\tlet bSphere = new THREE.Sphere();\n\t\tlet worldDir = new THREE.Vector3();\n\t\tlet cameraRay = new THREE.Ray(camera.position, camera.getWorldDirection(worldDir));\n\n\t\tlet nodeMap = new Map();\n\t\tlet offsetsToChild = new Array(nodes.length).fill(Infinity);\n\n\t\tfor(let i = 0; i < nodes.length; i++){\n\t\t\tlet node = nodes[i];\n\n\t\t\tnodeMap.set(node.name, node);\n\t\t\tvisibleNodeTextureOffsets.set(node, i);\n\n\t\t\tif(i > 0){\n\t\t\t\tlet index = parseInt(node.name.slice(-1));\n\t\t\t\tlet parentName = node.name.slice(0, -1);\n\t\t\t\tlet parent = nodeMap.get(parentName);\n\t\t\t\tlet parentOffset = visibleNodeTextureOffsets.get(parent);\n\n\t\t\t\tlet parentOffsetToChild = (i - parentOffset);\n\n\t\t\t\toffsetsToChild[parentOffset] = Math.min(offsetsToChild[parentOffset], parentOffsetToChild);\n\n\t\t\t\tdata[parentOffset * 4 + 0] = data[parentOffset * 4 + 0] | (1 << index);\n\t\t\t\tdata[parentOffset * 4 + 1] = (offsetsToChild[parentOffset] >> 8);\n\t\t\t\tdata[parentOffset * 4 + 2] = (offsetsToChild[parentOffset] % 256);\n\t\t\t}\n\n\t\t\t// data[i * 4 + 3] = node.geometryNode.nodeType === 1 ? 1 : 0;\n\t\t\t// data[i * 4 + 3] = node.name.length - 1;\n\n\t\t\tlet density = node.geometryNode.density;\n\t\t\t\n\t\t\tif(typeof density === \"number\"){\n\t\t\t\tlet lodOffset = Math.log2(density) / 2 - 1.5;\n\n\t\t\t\tlet offsetUint8 = (lodOffset + 10) * 10;\n\n\t\t\t\tdata[i * 4 + 3] = offsetUint8;\n\t\t\t}else{\n\t\t\t\tdata[i * 4 + 3] = 100;\n\t\t\t}\n\n\t\t}\n\n\t\tvar a = 10;\n\n\t\tif(Potree.measureTimings){\n\t\t\tperformance.mark(\"computeVisibilityTextureData-end\");\n\t\t\tperformance.measure(\"render.computeVisibilityTextureData\", \"computeVisibilityTextureData-start\", \"computeVisibilityTextureData-end\");\n\t\t}\n\n\t\treturn {\n\t\t\tdata: data,\n\t\t\toffsets: visibleNodeTextureOffsets\n\t\t};\n\t}\n\n\tnodeIntersectsProfile (node, profile) {\n\t\tlet bbWorld = node.boundingBox.clone().applyMatrix4(this.matrixWorld);\n\t\tlet bsWorld = bbWorld.getBoundingSphere(new THREE.Sphere());\n\n\t\tlet intersects = false;\n\n\t\tfor (let i = 0; i < profile.points.length - 1; i++) {\n\n\t\t\tlet start = new THREE.Vector3(profile.points[i + 0].x, profile.points[i + 0].y, bsWorld.center.z);\n\t\t\tlet end = new THREE.Vector3(profile.points[i + 1].x, profile.points[i + 1].y, bsWorld.center.z);\n\n\t\t\tlet closest = new THREE.Line3(start, end).closestPointToPoint(bsWorld.center, true, new THREE.Vector3());\n\t\t\tlet distance = closest.distanceTo(bsWorld.center);\n\n\t\t\tintersects = intersects || (distance < (bsWorld.radius + profile.width));\n\t\t}\n\n\t\t//console.log(`${node.name}: ${intersects}`);\n\n\t\treturn intersects;\n\t}\n\n\tdeepestNodeAt(position){\n\t\t\n\t\tconst toObjectSpace = new THREE.Matrix4().getInverse(this.matrixWorld);\n\n\t\tconst objPos = position.clone().applyMatrix4(toObjectSpace);\n\n\t\tlet current = this.root;\n\t\twhile(true){\n\n\t\t\tlet containingChild = null;\n\n\t\t\tfor(const child of current.children){\n\n\t\t\t\tif(child !== undefined){\n\t\t\t\t\tif(child.getBoundingBox().containsPoint(objPos)){\n\t\t\t\t\t\tcontainingChild = child;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(containingChild !== null && containingChild instanceof PointCloudOctreeNode){\n\t\t\t\tcurrent = containingChild;\n\t\t\t}else{\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tconst deepest = current;\n\n\t\treturn deepest;\n\t}\n\n\tnodesOnRay (nodes, ray) {\n\t\tlet nodesOnRay = [];\n\n\t\tlet _ray = ray.clone();\n\t\tfor (let i = 0; i < nodes.length; i++) {\n\t\t\tlet node = nodes[i];\n\t\t\t// let inverseWorld = new THREE.Matrix4().getInverse(node.matrixWorld);\n\t\t\t// let sphere = node.getBoundingSphere().clone().applyMatrix4(node.sceneNode.matrixWorld);\n\t\t\tlet sphere = node.getBoundingSphere().clone().applyMatrix4(this.matrixWorld);\n\n\t\t\tif (_ray.intersectsSphere(sphere)) {\n\t\t\t\tnodesOnRay.push(node);\n\t\t\t}\n\t\t}\n\n\t\treturn nodesOnRay;\n\t}\n\n\tupdateMatrixWorld (force) {\n\t\tif (this.matrixAutoUpdate === true) this.updateMatrix();\n\n\t\tif (this.matrixWorldNeedsUpdate === true || force === true) {\n\t\t\tif (!this.parent) {\n\t\t\t\tthis.matrixWorld.copy(this.matrix);\n\t\t\t} else {\n\t\t\t\tthis.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\t\t}\n\t}\n\n\thideDescendants (object) {\n\t\tlet stack = [];\n\t\tfor (let i = 0; i < object.children.length; i++) {\n\t\t\tlet child = object.children[i];\n\t\t\tif (child.visible) {\n\t\t\t\tstack.push(child);\n\t\t\t}\n\t\t}\n\n\t\twhile (stack.length > 0) {\n\t\t\tlet object = stack.shift();\n\n\t\t\tobject.visible = false;\n\n\t\t\tfor (let i = 0; i < object.children.length; i++) {\n\t\t\t\tlet child = object.children[i];\n\t\t\t\tif (child.visible) {\n\t\t\t\t\tstack.push(child);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tmoveToOrigin () {\n\t\tthis.position.set(0, 0, 0);\n\t\tthis.updateMatrixWorld(true);\n\t\tlet box = this.boundingBox;\n\t\tlet transform = this.matrixWorld;\n\t\tlet tBox = Utils.computeTransformedBoundingBox(box, transform);\n\t\tthis.position.set(0, 0, 0).sub(tBox.getCenter(new THREE.Vector3()));\n\t};\n\n\tmoveToGroundPlane () {\n\t\tthis.updateMatrixWorld(true);\n\t\tlet box = this.boundingBox;\n\t\tlet transform = this.matrixWorld;\n\t\tlet tBox = Utils.computeTransformedBoundingBox(box, transform);\n\t\tthis.position.y += -tBox.min.y;\n\t};\n\n\tgetBoundingBoxWorld () {\n\t\tthis.updateMatrixWorld(true);\n\t\tlet box = this.boundingBox;\n\t\tlet transform = this.matrixWorld;\n\t\tlet tBox = Utils.computeTransformedBoundingBox(box, transform);\n\n\t\treturn tBox;\n\t};\n\n\t/**\n\t * returns points inside the profile points\n\t *\n\t * maxDepth:\t\tsearch points up to the given octree depth\n\t *\n\t *\n\t * The return value is an array with all segments of the profile path\n\t *\tlet segment = {\n\t *\t\tstart:\tTHREE.Vector3,\n\t *\t\tend:\tTHREE.Vector3,\n\t *\t\tpoints: {}\n\t *\t\tproject: function()\n\t *\t};\n\t *\n\t * The project() function inside each segment can be used to transform\n\t * that segments point coordinates to line up along the x-axis.\n\t *\n\t *\n\t */\n\tgetPointsInProfile (profile, maxDepth, callback) {\n\t\tif (callback) {\n\t\t\tlet request = new Potree.ProfileRequest(this, profile, maxDepth, callback);\n\t\t\tthis.profileRequests.push(request);\n\n\t\t\treturn request;\n\t\t}\n\n\t\tlet points = {\n\t\t\tsegments: [],\n\t\t\tboundingBox: new THREE.Box3(),\n\t\t\tprojectedBoundingBox: new THREE.Box2()\n\t\t};\n\n\t\t// evaluate segments\n\t\tfor (let i = 0; i < profile.points.length - 1; i++) {\n\t\t\tlet start = profile.points[i];\n\t\t\tlet end = profile.points[i + 1];\n\t\t\tlet ps = this.getProfile(start, end, profile.width, maxDepth);\n\n\t\t\tlet segment = {\n\t\t\t\tstart: start,\n\t\t\t\tend: end,\n\t\t\t\tpoints: ps,\n\t\t\t\tproject: null\n\t\t\t};\n\n\t\t\tpoints.segments.push(segment);\n\n\t\t\tpoints.boundingBox.expandByPoint(ps.boundingBox.min);\n\t\t\tpoints.boundingBox.expandByPoint(ps.boundingBox.max);\n\t\t}\n\n\t\t// add projection functions to the segments\n\t\tlet mileage = new THREE.Vector3();\n\t\tfor (let i = 0; i < points.segments.length; i++) {\n\t\t\tlet segment = points.segments[i];\n\t\t\tlet start = segment.start;\n\t\t\tlet end = segment.end;\n\n\t\t\tlet project = (function (_start, _end, _mileage, _boundingBox) {\n\t\t\t\tlet start = _start;\n\t\t\t\tlet end = _end;\n\t\t\t\tlet mileage = _mileage;\n\t\t\t\tlet boundingBox = _boundingBox;\n\n\t\t\t\tlet xAxis = new THREE.Vector3(1, 0, 0);\n\t\t\t\tlet dir = new THREE.Vector3().subVectors(end, start);\n\t\t\t\tdir.y = 0;\n\t\t\t\tdir.normalize();\n\t\t\t\tlet alpha = Math.acos(xAxis.dot(dir));\n\t\t\t\tif (dir.z > 0) {\n\t\t\t\t\talpha = -alpha;\n\t\t\t\t}\n\n\t\t\t\treturn function (position) {\n\t\t\t\t\tlet toOrigin = new THREE.Matrix4().makeTranslation(-start.x, -boundingBox.min.y, -start.z);\n\t\t\t\t\tlet alignWithX = new THREE.Matrix4().makeRotationY(-alpha);\n\t\t\t\t\tlet applyMileage = new THREE.Matrix4().makeTranslation(mileage.x, 0, 0);\n\n\t\t\t\t\tlet pos = position.clone();\n\t\t\t\t\tpos.applyMatrix4(toOrigin);\n\t\t\t\t\tpos.applyMatrix4(alignWithX);\n\t\t\t\t\tpos.applyMatrix4(applyMileage);\n\n\t\t\t\t\treturn pos;\n\t\t\t\t};\n\t\t\t}(start, end, mileage.clone(), points.boundingBox.clone()));\n\n\t\t\tsegment.project = project;\n\n\t\t\tmileage.x += new THREE.Vector3(start.x, 0, start.z).distanceTo(new THREE.Vector3(end.x, 0, end.z));\n\t\t\tmileage.y += end.y - start.y;\n\t\t}\n\n\t\tpoints.projectedBoundingBox.min.x = 0;\n\t\tpoints.projectedBoundingBox.min.y = points.boundingBox.min.y;\n\t\tpoints.projectedBoundingBox.max.x = mileage.x;\n\t\tpoints.projectedBoundingBox.max.y = points.boundingBox.max.y;\n\n\t\treturn points;\n\t}\n\n\t/**\n\t * returns points inside the given profile bounds.\n\t *\n\t * start:\n\t * end:\n\t * width:\n\t * depth:\t\tsearch points up to the given octree depth\n\t * callback:\tif specified, points are loaded before searching\n\t *\n\t *\n\t */\n\tgetProfile (start, end, width, depth, callback) {\n\t\tlet request = new Potree.ProfileRequest(start, end, width, depth, callback);\n\t\tthis.profileRequests.push(request);\n\t};\n\n\tgetVisibleExtent () {\n\t\treturn this.visibleBounds.applyMatrix4(this.matrixWorld);\n\t};\n\n\tintersectsPoint(position){\n\n\t\tlet rootAvailable = this.pcoGeometry.root && this.pcoGeometry.root.geometry;\n\n\t\tif(!rootAvailable){\n\t\t\treturn false;\n\t\t}\n\n\t\tif(typeof this.signedDistanceField === \"undefined\"){\n\n\t\t\tconst resolution = 32;\n\t\t\tconst field = new Float32Array(resolution ** 3).fill(Infinity);\n\n\t\t\tconst positions = this.pcoGeometry.root.geometry.attributes.position;\n\t\t\tconst boundingBox = this.boundingBox;\n\n\t\t\tconst n = positions.count;\n\n\t\t\tfor(let i = 0; i < n; i = i + 3){\n\t\t\t\tconst x = positions.array[3 * i + 0];\n\t\t\t\tconst y = positions.array[3 * i + 1];\n\t\t\t\tconst z = positions.array[3 * i + 2];\n\n\t\t\t\tconst ix = parseInt(Math.min(resolution * (x / boundingBox.max.x), resolution - 1));\n\t\t\t\tconst iy = parseInt(Math.min(resolution * (y / boundingBox.max.y), resolution - 1));\n\t\t\t\tconst iz = parseInt(Math.min(resolution * (z / boundingBox.max.z), resolution - 1));\n\n\t\t\t\tconst index = ix + iy * resolution + iz * resolution * resolution;\n\n\t\t\t\tfield[index] = 0;\n\t\t\t}\n\n\t\t\tconst sdf = {\n\t\t\t\tresolution: resolution,\n\t\t\t\tfield: field,\n\t\t\t};\n\n\t\t\tthis.signedDistanceField = sdf;\n\t\t}\n\n\n\t\t{\n\t\t\tconst sdf = this.signedDistanceField;\n\t\t\tconst boundingBox = this.boundingBox;\n\n\t\t\tconst toObjectSpace = new THREE.Matrix4().getInverse(this.matrixWorld);\n\n\t\t\tconst objPos = position.clone().applyMatrix4(toObjectSpace);\n\n\t\t\tconst resolution = sdf.resolution;\n\t\t\tconst ix = parseInt(resolution * (objPos.x / boundingBox.max.x));\n\t\t\tconst iy = parseInt(resolution * (objPos.y / boundingBox.max.y));\n\t\t\tconst iz = parseInt(resolution * (objPos.z / boundingBox.max.z));\n\n\t\t\tif(ix < 0 || iy < 0 || iz < 0){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(ix >= resolution || iy >= resolution || iz >= resolution){\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst index = ix + iy * resolution + iz * resolution * resolution;\n\n\t\t\tconst value = sdf.field[index];\n\n\t\t\tif(value === 0){\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\t/**\n\t *\n\t *\n\t *\n\t * params.pickWindowSize:\tLook for points inside a pixel window of this size.\n\t *\t\t\t\t\t\t\tUse odd values: 1, 3, 5, ...\n\t *\n\t *\n\t * TODO: only draw pixels that are actually read with readPixels().\n\t *\n\t */\n\tpick(viewer, camera, ray, params = {}){\n\n\t\tlet renderer = viewer.renderer;\n\t\tlet pRenderer = viewer.pRenderer;\n\n\t\tperformance.mark(\"pick-start\");\n\n\t\tlet getVal = (a, b) => a !== undefined ? a : b;\n\n\t\tlet pickWindowSize = getVal(params.pickWindowSize, 17);\n\t\tlet pickOutsideClipRegion = getVal(params.pickOutsideClipRegion, false);\n\n\t\tpickWindowSize = 65;\n\n\t\tlet size = renderer.getSize(new THREE.Vector2());\n\n\t\tlet width = Math.ceil(getVal(params.width, size.width));\n\t\tlet height = Math.ceil(getVal(params.height, size.height));\n\n\t\tlet pointSizeType = getVal(params.pointSizeType, this.material.pointSizeType);\n\t\tlet pointSize = getVal(params.pointSize, this.material.size);\n\n\t\tlet nodes = this.nodesOnRay(this.visibleNodes, ray);\n\n\t\tif (nodes.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (!this.pickState) {\n\t\t\tlet scene = new THREE.Scene();\n\n\t\t\tlet material = new Potree.PointCloudMaterial();\n\t\t\tmaterial.activeAttributeName = \"indices\";\n\n\t\t\tlet renderTarget = new THREE.WebGLRenderTarget(\n\t\t\t\t1, 1,\n\t\t\t\t{ minFilter: THREE.LinearFilter,\n\t\t\t\t\tmagFilter: THREE.NearestFilter,\n\t\t\t\t\tformat: THREE.RGBAFormat }\n\t\t\t);\n\n\t\t\tthis.pickState = {\n\t\t\t\trenderTarget: renderTarget,\n\t\t\t\tmaterial: material,\n\t\t\t\tscene: scene\n\t\t\t};\n\t\t};\n\n\t\tlet pickState = this.pickState;\n\t\tlet pickMaterial = pickState.material;\n\n\t\t{ // update pick material\n\t\t\tpickMaterial.pointSizeType = pointSizeType;\n\t\t\t//pickMaterial.shape = this.material.shape;\n\t\t\tpickMaterial.shape = Potree.PointShape.PARABOLOID;\n\n\t\t\tpickMaterial.uniforms.uFilterReturnNumberRange.value = this.material.uniforms.uFilterReturnNumberRange.value;\n\t\t\tpickMaterial.uniforms.uFilterNumberOfReturnsRange.value = this.material.uniforms.uFilterNumberOfReturnsRange.value;\n\t\t\tpickMaterial.uniforms.uFilterGPSTimeClipRange.value = this.material.uniforms.uFilterGPSTimeClipRange.value;\n\t\t\tpickMaterial.uniforms.uFilterPointSourceIDClipRange.value = this.material.uniforms.uFilterPointSourceIDClipRange.value;\n\n\t\t\tpickMaterial.activeAttributeName = \"indices\";\n\n\t\t\tpickMaterial.size = pointSize;\n\t\t\tpickMaterial.uniforms.minSize.value = this.material.uniforms.minSize.value;\n\t\t\tpickMaterial.uniforms.maxSize.value = this.material.uniforms.maxSize.value;\n\t\t\tpickMaterial.classification = this.material.classification;\n\t\t\tpickMaterial.recomputeClassification();\n\n\t\t\tif(params.pickClipped){\n\t\t\t\tpickMaterial.clipBoxes = this.material.clipBoxes;\n\t\t\t\tpickMaterial.uniforms.clipBoxes = this.material.uniforms.clipBoxes;\n\t\t\t\tif(this.material.clipTask === Potree.ClipTask.HIGHLIGHT){\n\t\t\t\t\tpickMaterial.clipTask = Potree.ClipTask.NONE;\n\t\t\t\t}else{\n\t\t\t\t\tpickMaterial.clipTask = this.material.clipTask;\n\t\t\t\t}\n\t\t\t\tpickMaterial.clipMethod = this.material.clipMethod;\n\t\t\t}else{\n\t\t\t\tpickMaterial.clipBoxes = [];\n\t\t\t}\n\n\t\t\tthis.updateMaterial(pickMaterial, nodes, camera, renderer);\n\t\t}\n\n\t\tpickState.renderTarget.setSize(width, height);\n\n\t\tlet pixelPos = new THREE.Vector2(params.x, params.y);\n\n\t\tlet gl = renderer.getContext();\n\t\tgl.enable(gl.SCISSOR_TEST);\n\t\tgl.scissor(\n\t\t\tparseInt(pixelPos.x - (pickWindowSize - 1) / 2),\n\t\t\tparseInt(pixelPos.y - (pickWindowSize - 1) / 2),\n\t\t\tparseInt(pickWindowSize), parseInt(pickWindowSize));\n\n\n\t\trenderer.state.buffers.depth.setTest(pickMaterial.depthTest);\n\t\trenderer.state.buffers.depth.setMask(pickMaterial.depthWrite);\n\t\trenderer.state.setBlending(THREE.NoBlending);\n\n\t\t{ // RENDER\n\t\t\trenderer.setRenderTarget(pickState.renderTarget);\n\t\t\tgl.clearColor(0, 0, 0, 0);\n\t\t\trenderer.clear(true, true, true);\n\n\t\t\tlet tmp = this.material;\n\t\t\tthis.material = pickMaterial;\n\n\t\t\tpRenderer.renderOctree(this, nodes, camera, pickState.renderTarget);\n\n\t\t\tthis.material = tmp;\n\t\t}\n\n\t\tlet clamp = (number, min, max) => Math.min(Math.max(min, number), max);\n\n\t\tlet x = parseInt(clamp(pixelPos.x - (pickWindowSize - 1) / 2, 0, width));\n\t\tlet y = parseInt(clamp(pixelPos.y - (pickWindowSize - 1) / 2, 0, height));\n\t\tlet w = parseInt(Math.min(x + pickWindowSize, width) - x);\n\t\tlet h = parseInt(Math.min(y + pickWindowSize, height) - y);\n\n\t\tlet pixelCount = w * h;\n\t\tlet buffer = new Uint8Array(4 * pixelCount);\n\n\t\tgl.readPixels(x, y, pickWindowSize, pickWindowSize, gl.RGBA, gl.UNSIGNED_BYTE, buffer);\n\n\t\trenderer.setRenderTarget(null);\n\t\trenderer.state.reset();\n\t\trenderer.setScissorTest(false);\n\t\tgl.disable(gl.SCISSOR_TEST);\n\n\t\tlet pixels = buffer;\n\t\tlet ibuffer = new Uint32Array(buffer.buffer);\n\n\t\t// find closest hit inside pixelWindow boundaries\n\t\tlet min = Number.MAX_VALUE;\n\t\tlet hits = [];\n\t\tfor (let u = 0; u < pickWindowSize; u++) {\n\t\t\tfor (let v = 0; v < pickWindowSize; v++) {\n\t\t\t\tlet offset = (u + v * pickWindowSize);\n\t\t\t\tlet distance = Math.pow(u - (pickWindowSize - 1) / 2, 2) + Math.pow(v - (pickWindowSize - 1) / 2, 2);\n\n\t\t\t\tlet pcIndex = pixels[4 * offset + 3];\n\t\t\t\tpixels[4 * offset + 3] = 0;\n\t\t\t\tlet pIndex = ibuffer[offset];\n\n\t\t\t\tif(!(pcIndex === 0 && pIndex === 0) && (pcIndex !== undefined) && (pIndex !== undefined)){\n\t\t\t\t\tlet hit = {\n\t\t\t\t\t\tpIndex: pIndex,\n\t\t\t\t\t\tpcIndex: pcIndex,\n\t\t\t\t\t\tdistanceToCenter: distance\n\t\t\t\t\t};\n\n\t\t\t\t\tif(params.all){\n\t\t\t\t\t\thits.push(hit);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(hits.length > 0){\n\t\t\t\t\t\t\tif(distance < hits[0].distanceToCenter){\n\t\t\t\t\t\t\t\thits[0] = hit;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\thits.push(hit);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//DEBUG: show panel with pick image\n\t\t// {\n\t\t// \tlet img = Utils.pixelsArrayToImage(buffer, w, h);\n\t\t// \tlet screenshot = img.src;\n\t\t\n\t\t// \tif(!this.debugDIV){\n\t\t// \t\tthis.debugDIV = $(`\n\t\t// \t\t\t
        `);\n\t\t// \t\t$(document.body).append(this.debugDIV);\n\t\t// \t}\n\t\t\n\t\t// \tthis.debugDIV.empty();\n\t\t// \tthis.debugDIV.append($(``));\n\t\t// \t//$(this.debugWindow.document).append($(``));\n\t\t// \t//this.debugWindow.document.write('');\n\t\t// }\n\n\n\t\tfor(let hit of hits){\n\t\t\tlet point = {};\n\n\t\t\tif (!nodes[hit.pcIndex]) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tlet node = nodes[hit.pcIndex];\n\t\t\tlet pc = node.sceneNode;\n\t\t\tlet geometry = node.geometryNode.geometry;\n\n\t\t\tfor(let attributeName in geometry.attributes){\n\t\t\t\tlet attribute = geometry.attributes[attributeName];\n\n\t\t\t\tif (attributeName === 'position') {\n\t\t\t\t\tlet x = attribute.array[3 * hit.pIndex + 0];\n\t\t\t\t\tlet y = attribute.array[3 * hit.pIndex + 1];\n\t\t\t\t\tlet z = attribute.array[3 * hit.pIndex + 2];\n\n\t\t\t\t\tlet position = new THREE.Vector3(x, y, z);\n\t\t\t\t\tposition.applyMatrix4(pc.matrixWorld);\n\n\t\t\t\t\tpoint[attributeName] = position;\n\t\t\t\t} else if (attributeName === 'indices') {\n\n\t\t\t\t} else {\n\n\t\t\t\t\tlet values = attribute.array.slice(attribute.itemSize * hit.pIndex, attribute.itemSize * (hit.pIndex + 1)) ;\n\n\t\t\t\t\tif(attribute.potree){\n\t\t\t\t\t\tconst {scale, offset} = attribute.potree;\n\t\t\t\t\t\tvalues = values.map(v => v / scale + offset);\n\t\t\t\t\t}\n\n\t\t\t\t\tpoint[attributeName] = values;\n\n\t\t\t\t\t//debugger;\n\t\t\t\t\t//if (values.itemSize === 1) {\n\t\t\t\t\t//\tpoint[attribute.name] = values.array[hit.pIndex];\n\t\t\t\t\t//} else {\n\t\t\t\t\t//\tlet value = [];\n\t\t\t\t\t//\tfor (let j = 0; j < values.itemSize; j++) {\n\t\t\t\t\t//\t\tvalue.push(values.array[values.itemSize * hit.pIndex + j]);\n\t\t\t\t\t//\t}\n\t\t\t\t\t//\tpoint[attribute.name] = value;\n\t\t\t\t\t//}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\thit.point = point;\n\t\t}\n\n\t\tperformance.mark(\"pick-end\");\n\t\tperformance.measure(\"pick\", \"pick-start\", \"pick-end\");\n\n\t\tif(params.all){\n\t\t\treturn hits.map(hit => hit.point);\n\t\t}else{\n\t\t\tif(hits.length === 0){\n\t\t\t\treturn null;\n\t\t\t}else{\n\t\t\t\treturn hits[0].point;\n\t\t\t\t//let sorted = hits.sort( (a, b) => a.distanceToCenter - b.distanceToCenter);\n\n\t\t\t\t//return sorted[0].point;\n\t\t\t}\n\t\t}\n\n\t};\n\n\t* getFittedBoxGen(boxNode){\n\t\tlet start = performance.now();\n\n\t\tlet shrinkedLocalBounds = new THREE.Box3();\n\t\tlet worldToBox = new THREE.Matrix4().getInverse(boxNode.matrixWorld);\n\n\t\tfor(let node of this.visibleNodes){\n\t\t\tif(!node.sceneNode){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet buffer = node.geometryNode.buffer;\n\n\t\t\tlet posOffset = buffer.offset(\"position\");\n\t\t\tlet stride = buffer.stride;\n\t\t\tlet view = new DataView(buffer.data);\n\n\t\t\tlet objectToBox = new THREE.Matrix4().multiplyMatrices(worldToBox, node.sceneNode.matrixWorld);\n\n\t\t\tlet pos = new THREE.Vector4();\n\t\t\tfor(let i = 0; i < buffer.numElements; i++){\n\t\t\t\tlet x = view.getFloat32(i * stride + posOffset + 0, true);\n\t\t\t\tlet y = view.getFloat32(i * stride + posOffset + 4, true);\n\t\t\t\tlet z = view.getFloat32(i * stride + posOffset + 8, true);\n\n\t\t\t\tpos.set(x, y, z, 1);\n\t\t\t\tpos.applyMatrix4(objectToBox);\n\n\t\t\t\tif(-0.5 < pos.x && pos.x < 0.5){\n\t\t\t\t\tif(-0.5 < pos.y && pos.y < 0.5){\n\t\t\t\t\t\tif(-0.5 < pos.z && pos.z < 0.5){\n\t\t\t\t\t\t\tshrinkedLocalBounds.expandByPoint(pos);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tyield;\n\t\t}\n\n\t\tlet fittedPosition = shrinkedLocalBounds.getCenter(new THREE.Vector3()).applyMatrix4(boxNode.matrixWorld);\n\n\t\tlet fitted = new THREE.Object3D();\n\t\tfitted.position.copy(fittedPosition);\n\t\tfitted.scale.copy(boxNode.scale);\n\t\tfitted.rotation.copy(boxNode.rotation);\n\n\t\tlet ds = new THREE.Vector3().subVectors(shrinkedLocalBounds.max, shrinkedLocalBounds.min);\n\t\tfitted.scale.multiply(ds);\n\n\t\tlet duration = performance.now() - start;\n\t\tconsole.log(\"duration: \", duration);\n\n\t\tyield fitted;\n\t}\n\n\tgetFittedBox(boxNode, maxLevel = Infinity){\n\n\t\tmaxLevel = Infinity;\n\n\t\tlet start = performance.now();\n\n\t\tlet shrinkedLocalBounds = new THREE.Box3();\n\t\tlet worldToBox = new THREE.Matrix4().getInverse(boxNode.matrixWorld);\n\n\t\tfor(let node of this.visibleNodes){\n\t\t\tif(!node.sceneNode || node.getLevel() > maxLevel){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet buffer = node.geometryNode.buffer;\n\n\t\t\tlet posOffset = buffer.offset(\"position\");\n\t\t\tlet stride = buffer.stride;\n\t\t\tlet view = new DataView(buffer.data);\n\n\t\t\tlet objectToBox = new THREE.Matrix4().multiplyMatrices(worldToBox, node.sceneNode.matrixWorld);\n\n\t\t\tlet pos = new THREE.Vector4();\n\t\t\tfor(let i = 0; i < buffer.numElements; i++){\n\t\t\t\tlet x = view.getFloat32(i * stride + posOffset + 0, true);\n\t\t\t\tlet y = view.getFloat32(i * stride + posOffset + 4, true);\n\t\t\t\tlet z = view.getFloat32(i * stride + posOffset + 8, true);\n\n\t\t\t\tpos.set(x, y, z, 1);\n\t\t\t\tpos.applyMatrix4(objectToBox);\n\n\t\t\t\tif(-0.5 < pos.x && pos.x < 0.5){\n\t\t\t\t\tif(-0.5 < pos.y && pos.y < 0.5){\n\t\t\t\t\t\tif(-0.5 < pos.z && pos.z < 0.5){\n\t\t\t\t\t\t\tshrinkedLocalBounds.expandByPoint(pos);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet fittedPosition = shrinkedLocalBounds.getCenter(new THREE.Vector3()).applyMatrix4(boxNode.matrixWorld);\n\n\t\tlet fitted = new THREE.Object3D();\n\t\tfitted.position.copy(fittedPosition);\n\t\tfitted.scale.copy(boxNode.scale);\n\t\tfitted.rotation.copy(boxNode.rotation);\n\n\t\tlet ds = new THREE.Vector3().subVectors(shrinkedLocalBounds.max, shrinkedLocalBounds.min);\n\t\tfitted.scale.multiply(ds);\n\n\t\tlet duration = performance.now() - start;\n\t\tconsole.log(\"duration: \", duration);\n\n\t\treturn fitted;\n\t}\n\n\tget progress () {\n\t\treturn this.visibleNodes.length / this.visibleGeometry.length;\n\t}\n\n\tfind(name){\n\t\tlet node = null;\n\t\tfor(let char of name){\n\t\t\tif(char === \"r\"){\n\t\t\t\tnode = this.root;\n\t\t\t}else{\n\t\t\t\tnode = node.children[char];\n\t\t\t}\n\t\t}\n\n\t\treturn node;\n\t}\n\n\tget visible(){\n\t\treturn this._visible;\n\t}\n\n\tset visible(value){\n\n\t\tif(value !== this._visible){\n\t\t\tthis._visible = value;\n\n\t\t\tthis.dispatchEvent({type: 'visibility_changed', pointcloud: this});\n\t\t}\n\n\t}\n\n}\n\n\n\n\n\n\n\n\n\n\n","\n\nexport class Points {\n\t\n\tconstructor () {\n\t\tthis.boundingBox = new THREE.Box3();\n\t\tthis.numPoints = 0;\n\t\tthis.data = {};\n\t}\n\n\tadd (points) {\n\t\tlet currentSize = this.numPoints;\n\t\tlet additionalSize = points.numPoints;\n\t\tlet newSize = currentSize + additionalSize;\n\n\t\tlet thisAttributes = Object.keys(this.data);\n\t\tlet otherAttributes = Object.keys(points.data);\n\t\tlet attributes = new Set([...thisAttributes, ...otherAttributes]);\n\n\t\tfor (let attribute of attributes) {\n\t\t\tif (thisAttributes.includes(attribute) && otherAttributes.includes(attribute)) {\n\t\t\t\t// attribute in both, merge\n\t\t\t\tlet Type = this.data[attribute].constructor;\n\t\t\t\tlet merged = new Type(this.data[attribute].length + points.data[attribute].length);\n\t\t\t\tmerged.set(this.data[attribute], 0);\n\t\t\t\tmerged.set(points.data[attribute], this.data[attribute].length);\n\t\t\t\tthis.data[attribute] = merged;\n\t\t\t} else if (thisAttributes.includes(attribute) && !otherAttributes.includes(attribute)) {\n\t\t\t\t// attribute only in this; take over this and expand to new size\n\t\t\t\tlet elementsPerPoint = this.data[attribute].length / this.numPoints;\n\t\t\t\tlet Type = this.data[attribute].constructor;\n\t\t\t\tlet expanded = new Type(elementsPerPoint * newSize);\n\t\t\t\texpanded.set(this.data[attribute], 0);\n\t\t\t\tthis.data[attribute] = expanded;\n\t\t\t} else if (!thisAttributes.includes(attribute) && otherAttributes.includes(attribute)) {\n\t\t\t\t// attribute only in points to be added; take over new points and expand to new size\n\t\t\t\tlet elementsPerPoint = points.data[attribute].length / points.numPoints;\n\t\t\t\tlet Type = points.data[attribute].constructor;\n\t\t\t\tlet expanded = new Type(elementsPerPoint * newSize);\n\t\t\t\texpanded.set(points.data[attribute], elementsPerPoint * currentSize);\n\t\t\t\tthis.data[attribute] = expanded;\n\t\t\t}\n\t\t}\n\n\t\tthis.numPoints = newSize;\n\n\t\tthis.boundingBox.union(points.boundingBox);\n\t}\n}","/**\n *\n * code adapted from three.js BoxHelper.js\n * https://github.com/mrdoob/three.js/blob/dev/src/helpers/BoxHelper.js\n *\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n * @author mschuetz / http://potree.org\n */\n\nexport class Box3Helper extends THREE.LineSegments {\n\tconstructor (box, color) {\n\t\tif (color === undefined) color = 0xffff00;\n\n\t\tlet indices = new Uint16Array([ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ]);\n\t\tlet positions = new Float32Array([\n\t\t\tbox.min.x, box.min.y, box.min.z,\n\t\t\tbox.max.x, box.min.y, box.min.z,\n\t\t\tbox.max.x, box.min.y, box.max.z,\n\t\t\tbox.min.x, box.min.y, box.max.z,\n\t\t\tbox.min.x, box.max.y, box.min.z,\n\t\t\tbox.max.x, box.max.y, box.min.z,\n\t\t\tbox.max.x, box.max.y, box.max.z,\n\t\t\tbox.min.x, box.max.y, box.max.z\n\t\t]);\n\n\t\tlet geometry = new THREE.BufferGeometry();\n\t\tgeometry.setIndex(new THREE.BufferAttribute(indices, 1));\n\t\tgeometry.addAttribute('position', new THREE.BufferAttribute(positions, 3));\n\n\t\tlet material = new THREE.LineBasicMaterial({ color: color });\n\n\t\tsuper(geometry, material);\n\t}\n}\n","\nimport {ClipTask, ClipMethod} from \"./defines.js\";\nimport {Box3Helper} from \"./utils/Box3Helper.js\";\n\nexport function updatePointClouds(pointclouds, camera, renderer){\n\n\tfor (let pointcloud of pointclouds) {\n\t\tlet start = performance.now();\n\n\t\tfor (let profileRequest of pointcloud.profileRequests) {\n\t\t\tprofileRequest.update();\n\n\t\t\tlet duration = performance.now() - start;\n\t\t\tif(duration > 5){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tlet duration = performance.now() - start;\n\t}\n\n\tlet result = updateVisibility(pointclouds, camera, renderer);\n\n\tfor (let pointcloud of pointclouds) {\n\t\tpointcloud.updateMaterial(pointcloud.material, pointcloud.visibleNodes, camera, renderer);\n\t\tpointcloud.updateVisibleBounds();\n\t}\n\n\texports.lru.freeMemory();\n\n\treturn result;\n};\n\n\n\nexport function updateVisibilityStructures(pointclouds, camera, renderer) {\n\tlet frustums = [];\n\tlet camObjPositions = [];\n\tlet priorityQueue = new BinaryHeap(function (x) { return 1 / x.weight; });\n\n\tfor (let i = 0; i < pointclouds.length; i++) {\n\t\tlet pointcloud = pointclouds[i];\n\n\t\tif (!pointcloud.initialized()) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tpointcloud.numVisibleNodes = 0;\n\t\tpointcloud.numVisiblePoints = 0;\n\t\tpointcloud.deepestVisibleLevel = 0;\n\t\tpointcloud.visibleNodes = [];\n\t\tpointcloud.visibleGeometry = [];\n\n\t\t// frustum in object space\n\t\tcamera.updateMatrixWorld();\n\t\tlet frustum = new THREE.Frustum();\n\t\tlet viewI = camera.matrixWorldInverse;\n\t\tlet world = pointcloud.matrixWorld;\n\t\t\n\t\t// use close near plane for frustum intersection\n\t\tlet frustumCam = camera.clone();\n\t\tfrustumCam.near = Math.min(camera.near, 0.1);\n\t\tfrustumCam.updateProjectionMatrix();\n\t\tlet proj = camera.projectionMatrix;\n\n\t\tlet fm = new THREE.Matrix4().multiply(proj).multiply(viewI).multiply(world);\n\t\tfrustum.setFromMatrix(fm);\n\t\tfrustums.push(frustum);\n\n\t\t// camera position in object space\n\t\tlet view = camera.matrixWorld;\n\t\tlet worldI = new THREE.Matrix4().getInverse(world);\n\t\tlet camMatrixObject = new THREE.Matrix4().multiply(worldI).multiply(view);\n\t\tlet camObjPos = new THREE.Vector3().setFromMatrixPosition(camMatrixObject);\n\t\tcamObjPositions.push(camObjPos);\n\n\t\tif (pointcloud.visible && pointcloud.root !== null) {\n\t\t\tpriorityQueue.push({pointcloud: i, node: pointcloud.root, weight: Number.MAX_VALUE});\n\t\t}\n\n\t\t// hide all previously visible nodes\n\t\t// if(pointcloud.root instanceof PointCloudOctreeNode){\n\t\t//\tpointcloud.hideDescendants(pointcloud.root.sceneNode);\n\t\t// }\n\t\tif (pointcloud.root.isTreeNode()) {\n\t\t\tpointcloud.hideDescendants(pointcloud.root.sceneNode);\n\t\t}\n\n\t\tfor (let j = 0; j < pointcloud.boundingBoxNodes.length; j++) {\n\t\t\tpointcloud.boundingBoxNodes[j].visible = false;\n\t\t}\n\t}\n\n\treturn {\n\t\t'frustums': frustums,\n\t\t'camObjPositions': camObjPositions,\n\t\t'priorityQueue': priorityQueue\n\t};\n};\n\n\nexport function updateVisibility(pointclouds, camera, renderer){\n\n\tlet numVisibleNodes = 0;\n\tlet numVisiblePoints = 0;\n\n\tlet numVisiblePointsInPointclouds = new Map(pointclouds.map(pc => [pc, 0]));\n\n\tlet visibleNodes = [];\n\tlet visibleGeometry = [];\n\tlet unloadedGeometry = [];\n\n\tlet lowestSpacing = Infinity;\n\n\t// calculate object space frustum and cam pos and setup priority queue\n\tlet s = updateVisibilityStructures(pointclouds, camera, renderer);\n\tlet frustums = s.frustums;\n\tlet camObjPositions = s.camObjPositions;\n\tlet priorityQueue = s.priorityQueue;\n\n\tlet loadedToGPUThisFrame = 0;\n\t\n\tlet domWidth = renderer.domElement.clientWidth;\n\tlet domHeight = renderer.domElement.clientHeight;\n\n\t// check if pointcloud has been transformed\n\t// some code will only be executed if changes have been detected\n\tif(!Potree._pointcloudTransformVersion){\n\t\tPotree._pointcloudTransformVersion = new Map();\n\t}\n\tlet pointcloudTransformVersion = Potree._pointcloudTransformVersion;\n\tfor(let pointcloud of pointclouds){\n\n\t\tif(!pointcloud.visible){\n\t\t\tcontinue;\n\t\t}\n\n\t\tpointcloud.updateMatrixWorld();\n\n\t\tif(!pointcloudTransformVersion.has(pointcloud)){\n\t\t\tpointcloudTransformVersion.set(pointcloud, {number: 0, transform: pointcloud.matrixWorld.clone()});\n\t\t}else{\n\t\t\tlet version = pointcloudTransformVersion.get(pointcloud);\n\n\t\t\tif(!version.transform.equals(pointcloud.matrixWorld)){\n\t\t\t\tversion.number++;\n\t\t\t\tversion.transform.copy(pointcloud.matrixWorld);\n\n\t\t\t\tpointcloud.dispatchEvent({\n\t\t\t\t\ttype: \"transformation_changed\",\n\t\t\t\t\ttarget: pointcloud\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\twhile (priorityQueue.size() > 0) {\n\t\tlet element = priorityQueue.pop();\n\t\tlet node = element.node;\n\t\tlet parent = element.parent;\n\t\tlet pointcloud = pointclouds[element.pointcloud];\n\n\t\t// { // restrict to certain nodes for debugging\n\t\t//\tlet allowedNodes = [\"r\", \"r0\", \"r4\"];\n\t\t//\tif(!allowedNodes.includes(node.name)){\n\t\t//\t\tcontinue;\n\t\t//\t}\n\t\t// }\n\n\t\tlet box = node.getBoundingBox();\n\t\tlet frustum = frustums[element.pointcloud];\n\t\tlet camObjPos = camObjPositions[element.pointcloud];\n\n\t\tlet insideFrustum = frustum.intersectsBox(box);\n\t\tlet maxLevel = pointcloud.maxLevel || Infinity;\n\t\tlet level = node.getLevel();\n\t\tlet visible = insideFrustum;\n\t\tvisible = visible && !(numVisiblePoints + node.getNumPoints() > Potree.pointBudget);\n\t\tvisible = visible && !(numVisiblePointsInPointclouds.get(pointcloud) + node.getNumPoints() > pointcloud.pointBudget);\n\t\tvisible = visible && level < maxLevel;\n\t\t//visible = visible && node.name !== \"r613\";\n\n\t\tlet clipBoxes = pointcloud.material.clipBoxes;\n\t\tif(true && clipBoxes.length > 0){\n\n\t\t\t//node.debug = false;\n\n\t\t\tlet numIntersecting = 0;\n\t\t\tlet numIntersectionVolumes = 0;\n\n\t\t\t//if(node.name === \"r60\"){\n\t\t\t//\tvar a = 10;\n\t\t\t//}\n\n\t\t\tfor(let clipBox of clipBoxes){\n\n\t\t\t\tlet pcWorldInverse = new THREE.Matrix4().getInverse(pointcloud.matrixWorld);\n\t\t\t\tlet toPCObject = pcWorldInverse.multiply(clipBox.box.matrixWorld);\n\n\t\t\t\tlet px = new THREE.Vector3(+0.5, 0, 0).applyMatrix4(pcWorldInverse);\n\t\t\t\tlet nx = new THREE.Vector3(-0.5, 0, 0).applyMatrix4(pcWorldInverse);\n\t\t\t\tlet py = new THREE.Vector3(0, +0.5, 0).applyMatrix4(pcWorldInverse);\n\t\t\t\tlet ny = new THREE.Vector3(0, -0.5, 0).applyMatrix4(pcWorldInverse);\n\t\t\t\tlet pz = new THREE.Vector3(0, 0, +0.5).applyMatrix4(pcWorldInverse);\n\t\t\t\tlet nz = new THREE.Vector3(0, 0, -0.5).applyMatrix4(pcWorldInverse);\n\n\t\t\t\tlet pxN = new THREE.Vector3().subVectors(nx, px).normalize();\n\t\t\t\tlet nxN = pxN.clone().multiplyScalar(-1);\n\t\t\t\tlet pyN = new THREE.Vector3().subVectors(ny, py).normalize();\n\t\t\t\tlet nyN = pyN.clone().multiplyScalar(-1);\n\t\t\t\tlet pzN = new THREE.Vector3().subVectors(nz, pz).normalize();\n\t\t\t\tlet nzN = pzN.clone().multiplyScalar(-1);\n\n\t\t\t\tlet pxPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(pxN, px);\n\t\t\t\tlet nxPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(nxN, nx);\n\t\t\t\tlet pyPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(pyN, py);\n\t\t\t\tlet nyPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(nyN, ny);\n\t\t\t\tlet pzPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(pzN, pz);\n\t\t\t\tlet nzPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(nzN, nz);\n\n\t\t\t\t//if(window.debugdraw !== undefined && window.debugdraw === true && node.name === \"r60\"){\n\n\t\t\t\t//\tPotree.utils.debugPlane(viewer.scene.scene, pxPlane, 1, 0xFF0000);\n\t\t\t\t//\tPotree.utils.debugPlane(viewer.scene.scene, nxPlane, 1, 0x990000);\n\t\t\t\t//\tPotree.utils.debugPlane(viewer.scene.scene, pyPlane, 1, 0x00FF00);\n\t\t\t\t//\tPotree.utils.debugPlane(viewer.scene.scene, nyPlane, 1, 0x009900);\n\t\t\t\t//\tPotree.utils.debugPlane(viewer.scene.scene, pzPlane, 1, 0x0000FF);\n\t\t\t\t//\tPotree.utils.debugPlane(viewer.scene.scene, nzPlane, 1, 0x000099);\n\n\t\t\t\t//\tPotree.utils.debugBox(viewer.scene.scene, box, new THREE.Matrix4(), 0x00FF00);\n\t\t\t\t//\tPotree.utils.debugBox(viewer.scene.scene, box, pointcloud.matrixWorld, 0xFF0000);\n\t\t\t\t//\tPotree.utils.debugBox(viewer.scene.scene, clipBox.box.boundingBox, clipBox.box.matrixWorld, 0xFF0000);\n\n\t\t\t\t//\twindow.debugdraw = false;\n\t\t\t\t//}\n\n\t\t\t\tlet frustum = new THREE.Frustum(pxPlane, nxPlane, pyPlane, nyPlane, pzPlane, nzPlane);\n\t\t\t\tlet intersects = frustum.intersectsBox(box);\n\n\t\t\t\tif(intersects){\n\t\t\t\t\tnumIntersecting++;\n\t\t\t\t}\n\t\t\t\tnumIntersectionVolumes++;\n\t\t\t}\n\n\t\t\tlet insideAny = numIntersecting > 0;\n\t\t\tlet insideAll = numIntersecting === numIntersectionVolumes;\n\n\t\t\tif(pointcloud.material.clipTask === ClipTask.SHOW_INSIDE){\n\t\t\t\tif(pointcloud.material.clipMethod === ClipMethod.INSIDE_ANY && insideAny){\n\t\t\t\t\t//node.debug = true\n\t\t\t\t}else if(pointcloud.material.clipMethod === ClipMethod.INSIDE_ALL && insideAll){\n\t\t\t\t\t//node.debug = true;\n\t\t\t\t}else{\n\t\t\t\t\tvisible = false;\n\t\t\t\t}\n\t\t\t} else if(pointcloud.material.clipTask === ClipTask.SHOW_OUTSIDE){\n\t\t\t\t//if(pointcloud.material.clipMethod === ClipMethod.INSIDE_ANY && !insideAny){\n\t\t\t\t//\t//visible = true;\n\t\t\t\t//\tlet a = 10;\n\t\t\t\t//}else if(pointcloud.material.clipMethod === ClipMethod.INSIDE_ALL && !insideAll){\n\t\t\t\t//\t//visible = true;\n\t\t\t\t//\tlet a = 20;\n\t\t\t\t//}else{\n\t\t\t\t//\tvisible = false;\n\t\t\t\t//}\n\t\t\t}\n\t\t\t\n\n\t\t}\n\n\t\t// visible = [\"r\", \"r0\", \"r06\", \"r060\"].includes(node.name);\n\t\t// visible = [\"r\"].includes(node.name);\n\n\t\tif (node.spacing) {\n\t\t\tlowestSpacing = Math.min(lowestSpacing, node.spacing);\n\t\t} else if (node.geometryNode && node.geometryNode.spacing) {\n\t\t\tlowestSpacing = Math.min(lowestSpacing, node.geometryNode.spacing);\n\t\t}\n\n\t\tif (numVisiblePoints + node.getNumPoints() > Potree.pointBudget) {\n\t\t\tbreak;\n\t\t}\n\n\t\tif (!visible) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// TODO: not used, same as the declaration?\n\t\t// numVisibleNodes++;\n\t\tnumVisiblePoints += node.getNumPoints();\n\t\tlet numVisiblePointsInPointcloud = numVisiblePointsInPointclouds.get(pointcloud);\n\t\tnumVisiblePointsInPointclouds.set(pointcloud, numVisiblePointsInPointcloud + node.getNumPoints());\n\n\t\tpointcloud.numVisibleNodes++;\n\t\tpointcloud.numVisiblePoints += node.getNumPoints();\n\n\t\tif (node.isGeometryNode() && (!parent || parent.isTreeNode())) {\n\t\t\tif (node.isLoaded() && loadedToGPUThisFrame < 2) {\n\t\t\t\tnode = pointcloud.toTreeNode(node, parent);\n\t\t\t\tloadedToGPUThisFrame++;\n\t\t\t} else {\n\t\t\t\tunloadedGeometry.push(node);\n\t\t\t\tvisibleGeometry.push(node);\n\t\t\t}\n\t\t}\n\n\t\tif (node.isTreeNode()) {\n\t\t\texports.lru.touch(node.geometryNode);\n\t\t\tnode.sceneNode.visible = true;\n\t\t\tnode.sceneNode.material = pointcloud.material;\n\n\t\t\tvisibleNodes.push(node);\n\t\t\tpointcloud.visibleNodes.push(node);\n\n\t\t\tif(node._transformVersion === undefined){\n\t\t\t\tnode._transformVersion = -1;\n\t\t\t}\n\t\t\tlet transformVersion = pointcloudTransformVersion.get(pointcloud);\n\t\t\tif(node._transformVersion !== transformVersion.number){\n\t\t\t\tnode.sceneNode.updateMatrix();\n\t\t\t\tnode.sceneNode.matrixWorld.multiplyMatrices(pointcloud.matrixWorld, node.sceneNode.matrix);\t\n\t\t\t\tnode._transformVersion = transformVersion.number;\n\t\t\t}\n\n\t\t\tif (pointcloud.showBoundingBox && !node.boundingBoxNode && node.getBoundingBox) {\n\t\t\t\tlet boxHelper = new Box3Helper(node.getBoundingBox());\n\t\t\t\tboxHelper.matrixAutoUpdate = false;\n\t\t\t\tpointcloud.boundingBoxNodes.push(boxHelper);\n\t\t\t\tnode.boundingBoxNode = boxHelper;\n\t\t\t\tnode.boundingBoxNode.matrix.copy(pointcloud.matrixWorld);\n\t\t\t} else if (pointcloud.showBoundingBox) {\n\t\t\t\tnode.boundingBoxNode.visible = true;\n\t\t\t\tnode.boundingBoxNode.matrix.copy(pointcloud.matrixWorld);\n\t\t\t} else if (!pointcloud.showBoundingBox && node.boundingBoxNode) {\n\t\t\t\tnode.boundingBoxNode.visible = false;\n\t\t\t}\n\n\t\t\t// if(node.boundingBoxNode !== undefined && exports.debug.allowedNodes !== undefined){\n\t\t\t// \tif(!exports.debug.allowedNodes.includes(node.name)){\n\t\t\t// \t\tnode.boundingBoxNode.visible = false;\n\t\t\t// \t}\n\t\t\t// }\n\t\t}\n\n\t\t// add child nodes to priorityQueue\n\t\tlet children = node.getChildren();\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\tlet child = children[i];\n\n\t\t\tlet weight = 0; \n\t\t\tif(camera.isPerspectiveCamera){\n\t\t\t\tlet sphere = child.getBoundingSphere();\n\t\t\t\tlet center = sphere.center;\n\t\t\t\t//let distance = sphere.center.distanceTo(camObjPos);\n\t\t\t\t\n\t\t\t\tlet dx = camObjPos.x - center.x;\n\t\t\t\tlet dy = camObjPos.y - center.y;\n\t\t\t\tlet dz = camObjPos.z - center.z;\n\t\t\t\t\n\t\t\t\tlet dd = dx * dx + dy * dy + dz * dz;\n\t\t\t\tlet distance = Math.sqrt(dd);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tlet radius = sphere.radius;\n\t\t\t\t\n\t\t\t\tlet fov = (camera.fov * Math.PI) / 180;\n\t\t\t\tlet slope = Math.tan(fov / 2);\n\t\t\t\tlet projFactor = (0.5 * domHeight) / (slope * distance);\n\t\t\t\tlet screenPixelRadius = radius * projFactor;\n\t\t\t\t\n\t\t\t\tif(screenPixelRadius < pointcloud.minimumNodePixelSize){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\n\t\t\t\tweight = screenPixelRadius;\n\n\t\t\t\tif(distance - radius < 0){\n\t\t\t\t\tweight = Number.MAX_VALUE;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// TODO ortho visibility\n\t\t\t\tlet bb = child.getBoundingBox();\t\t\t\t\n\t\t\t\tlet distance = child.getBoundingSphere().center.distanceTo(camObjPos);\n\t\t\t\tlet diagonal = bb.max.clone().sub(bb.min).length();\n\t\t\t\t//weight = diagonal / distance;\n\n\t\t\t\tweight = diagonal;\n\t\t\t}\n\n\t\t\tpriorityQueue.push({pointcloud: element.pointcloud, node: child, parent: node, weight: weight});\n\t\t}\n\t}// end priority queue loop\n\n\t{ // update DEM\n\t\tlet maxDEMLevel = 4;\n\t\tlet candidates = pointclouds\n\t\t\t.filter(p => (p.generateDEM && p.dem instanceof Potree.DEM));\n\t\tfor (let pointcloud of candidates) {\n\t\t\tlet updatingNodes = pointcloud.visibleNodes.filter(n => n.getLevel() <= maxDEMLevel);\n\t\t\tpointcloud.dem.update(updatingNodes);\n\t\t}\n\t}\n\n\tfor (let i = 0; i < Math.min(Potree.maxNodesLoading, unloadedGeometry.length); i++) {\n\t\tunloadedGeometry[i].load();\n\t}\n\n\treturn {\n\t\tvisibleNodes: visibleNodes,\n\t\tnumVisiblePoints: numVisiblePoints,\n\t\tlowestSpacing: lowestSpacing\n\t};\n};\n\n","\n\nimport {PointCloudTree, PointCloudTreeNode} from \"../PointCloudTree.js\";\nimport {PointCloudMaterial} from \"../materials/PointCloudMaterial.js\";\nimport {PointSizeType, ClipTask, TreeType} from \"../defines.js\";\nimport {Utils} from \"../utils.js\";\n\n\n\nexport class PointCloudArena4DNode extends PointCloudTreeNode {\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.left = null;\n\t\tthis.right = null;\n\t\tthis.sceneNode = null;\n\t\tthis.kdtree = null;\n\t}\n\n\tgetNumPoints () {\n\t\treturn this.geometryNode.numPoints;\n\t}\n\n\tisLoaded () {\n\t\treturn true;\n\t}\n\n\tisTreeNode () {\n\t\treturn true;\n\t}\n\n\tisGeometryNode () {\n\t\treturn false;\n\t}\n\n\tgetLevel () {\n\t\treturn this.geometryNode.level;\n\t}\n\n\tgetBoundingSphere () {\n\t\treturn this.geometryNode.boundingSphere;\n\t}\n\n\tgetBoundingBox () {\n\t\treturn this.geometryNode.boundingBox;\n\t}\n\n\ttoTreeNode (child) {\n\t\tlet geometryNode = null;\n\n\t\tif (this.left === child) {\n\t\t\tgeometryNode = this.left;\n\t\t} else if (this.right === child) {\n\t\t\tgeometryNode = this.right;\n\t\t}\n\n\t\tif (!geometryNode.loaded) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet node = new PointCloudArena4DNode();\n\t\tlet sceneNode = THREE.PointCloud(geometryNode.geometry, this.kdtree.material);\n\t\tsceneNode.visible = false;\n\n\t\tnode.kdtree = this.kdtree;\n\t\tnode.geometryNode = geometryNode;\n\t\tnode.sceneNode = sceneNode;\n\t\tnode.parent = this;\n\t\tnode.left = this.geometryNode.left;\n\t\tnode.right = this.geometryNode.right;\n\t}\n\n\tgetChildren () {\n\t\tlet children = [];\n\n\t\tif (this.left) {\n\t\t\tchildren.push(this.left);\n\t\t}\n\n\t\tif (this.right) {\n\t\t\tchildren.push(this.right);\n\t\t}\n\n\t\treturn children;\n\t}\n};\n\nexport class PointCloudArena4D extends PointCloudTree{\n\tconstructor (geometry) {\n\t\tsuper();\n\n\t\tthis.root = null;\n\t\tif (geometry.root) {\n\t\t\tthis.root = geometry.root;\n\t\t} else {\n\t\t\tgeometry.addEventListener('hierarchy_loaded', () => {\n\t\t\t\tthis.root = geometry.root;\n\t\t\t});\n\t\t}\n\n\t\tthis.visiblePointsTarget = 2 * 1000 * 1000;\n\t\tthis.minimumNodePixelSize = 150;\n\n\t\tthis.position.sub(geometry.offset);\n\t\tthis.updateMatrix();\n\n\t\tthis.numVisibleNodes = 0;\n\t\tthis.numVisiblePoints = 0;\n\n\t\tthis.boundingBoxNodes = [];\n\t\tthis.loadQueue = [];\n\t\tthis.visibleNodes = [];\n\n\t\tthis.pcoGeometry = geometry;\n\t\tthis.boundingBox = this.pcoGeometry.boundingBox;\n\t\tthis.boundingSphere = this.pcoGeometry.boundingSphere;\n\t\tthis.material = new PointCloudMaterial({vertexColors: THREE.VertexColors, size: 0.05, treeType: TreeType.KDTREE});\n\t\tthis.material.sizeType = PointSizeType.ATTENUATED;\n\t\tthis.material.size = 0.05;\n\t\tthis.profileRequests = [];\n\t\tthis.name = '';\n\t}\n\n\tgetBoundingBoxWorld () {\n\t\tthis.updateMatrixWorld(true);\n\t\tlet box = this.boundingBox;\n\t\tlet transform = this.matrixWorld;\n\t\tlet tBox = Utils.computeTransformedBoundingBox(box, transform);\n\n\t\treturn tBox;\n\t};\n\n\tsetName (name) {\n\t\tif (this.name !== name) {\n\t\t\tthis.name = name;\n\t\t\tthis.dispatchEvent({type: 'name_changed', name: name, pointcloud: this});\n\t\t}\n\t}\n\n\tgetName () {\n\t\treturn this.name;\n\t}\n\n\tgetLevel () {\n\t\treturn this.level;\n\t}\n\n\ttoTreeNode (geometryNode, parent) {\n\t\tlet node = new PointCloudArena4DNode();\n\t\tlet sceneNode = new THREE.Points(geometryNode.geometry, this.material);\n\n\t\tsceneNode.frustumCulled = false;\n\t\tsceneNode.onBeforeRender = (_this, scene, camera, geometry, material, group) => {\n\t\t\tif (material.program) {\n\t\t\t\t_this.getContext().useProgram(material.program.program);\n\n\t\t\t\tif (material.program.getUniforms().map.level) {\n\t\t\t\t\tlet level = geometryNode.getLevel();\n\t\t\t\t\tmaterial.uniforms.level.value = level;\n\t\t\t\t\tmaterial.program.getUniforms().map.level.setValue(_this.getContext(), level);\n\t\t\t\t}\n\n\t\t\t\tif (this.visibleNodeTextureOffsets && material.program.getUniforms().map.vnStart) {\n\t\t\t\t\tlet vnStart = this.visibleNodeTextureOffsets.get(node);\n\t\t\t\t\tmaterial.uniforms.vnStart.value = vnStart;\n\t\t\t\t\tmaterial.program.getUniforms().map.vnStart.setValue(_this.getContext(), vnStart);\n\t\t\t\t}\n\n\t\t\t\tif (material.program.getUniforms().map.pcIndex) {\n\t\t\t\t\tlet i = node.pcIndex ? node.pcIndex : this.visibleNodes.indexOf(node);\n\t\t\t\t\tmaterial.uniforms.pcIndex.value = i;\n\t\t\t\t\tmaterial.program.getUniforms().map.pcIndex.setValue(_this.getContext(), i);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tnode.geometryNode = geometryNode;\n\t\tnode.sceneNode = sceneNode;\n\t\tnode.pointcloud = this;\n\t\tnode.left = geometryNode.left;\n\t\tnode.right = geometryNode.right;\n\n\t\tif (!parent) {\n\t\t\tthis.root = node;\n\t\t\tthis.add(sceneNode);\n\t\t} else {\n\t\t\tparent.sceneNode.add(sceneNode);\n\n\t\t\tif (parent.left === geometryNode) {\n\t\t\t\tparent.left = node;\n\t\t\t} else if (parent.right === geometryNode) {\n\t\t\t\tparent.right = node;\n\t\t\t}\n\t\t}\n\n\t\tlet disposeListener = function () {\n\t\t\tparent.sceneNode.remove(node.sceneNode);\n\n\t\t\tif (parent.left === node) {\n\t\t\t\tparent.left = geometryNode;\n\t\t\t} else if (parent.right === node) {\n\t\t\t\tparent.right = geometryNode;\n\t\t\t}\n\t\t};\n\t\tgeometryNode.oneTimeDisposeHandlers.push(disposeListener);\n\n\t\treturn node;\n\t}\n\n\tupdateMaterial (material, visibleNodes, camera, renderer) {\n\t\tmaterial.fov = camera.fov * (Math.PI / 180);\n\t\tmaterial.screenWidth = renderer.domElement.clientWidth;\n\t\tmaterial.screenHeight = renderer.domElement.clientHeight;\n\t\tmaterial.spacing = this.pcoGeometry.spacing;\n\t\tmaterial.near = camera.near;\n\t\tmaterial.far = camera.far;\n\n\t\t// reduce shader source updates by setting maxLevel slightly higher than actually necessary\n\t\tif (this.maxLevel > material.levels) {\n\t\t\tmaterial.levels = this.maxLevel + 2;\n\t\t}\n\n\t\t// material.uniforms.octreeSize.value = this.boundingBox.size().x;\n\t\tlet bbSize = this.boundingBox.getSize(new THREE.Vector3());\n\t\tmaterial.bbSize = [bbSize.x, bbSize.y, bbSize.z];\n\t}\n\n\tupdateVisibleBounds () {\n\n\t}\n\n\thideDescendants (object) {\n\t\tlet stack = [];\n\t\tfor (let i = 0; i < object.children.length; i++) {\n\t\t\tlet child = object.children[i];\n\t\t\tif (child.visible) {\n\t\t\t\tstack.push(child);\n\t\t\t}\n\t\t}\n\n\t\twhile (stack.length > 0) {\n\t\t\tlet child = stack.shift();\n\n\t\t\tchild.visible = false;\n\t\t\tif (child.boundingBoxNode) {\n\t\t\t\tchild.boundingBoxNode.visible = false;\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < child.children.length; i++) {\n\t\t\t\tlet childOfChild = child.children[i];\n\t\t\t\tif (childOfChild.visible) {\n\t\t\t\t\tstack.push(childOfChild);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateMatrixWorld (force) {\n\t\t// node.matrixWorld.multiplyMatrices( node.parent.matrixWorld, node.matrix );\n\n\t\tif (this.matrixAutoUpdate === true) this.updateMatrix();\n\n\t\tif (this.matrixWorldNeedsUpdate === true || force === true) {\n\t\t\tif (this.parent === undefined) {\n\t\t\t\tthis.matrixWorld.copy(this.matrix);\n\t\t\t} else {\n\t\t\t\tthis.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\t\t}\n\t}\n\n\tnodesOnRay (nodes, ray) {\n\t\tlet nodesOnRay = [];\n\n\t\tlet _ray = ray.clone();\n\t\tfor (let i = 0; i < nodes.length; i++) {\n\t\t\tlet node = nodes[i];\n\t\t\tlet sphere = node.getBoundingSphere().clone().applyMatrix4(node.sceneNode.matrixWorld);\n\t\t\t// TODO Unused: let box = node.getBoundingBox().clone().applyMatrix4(node.sceneNode.matrixWorld);\n\n\t\t\tif (_ray.intersectsSphere(sphere)) {\n\t\t\t\tnodesOnRay.push(node);\n\t\t\t}\n\t\t\t// if(_ray.isIntersectionBox(box)){\n\t\t\t//\tnodesOnRay.push(node);\n\t\t\t// }\n\t\t}\n\n\t\treturn nodesOnRay;\n\t}\n\n\tpick(viewer, camera, ray, params = {}){\n\n\t\tlet renderer = viewer.renderer;\n\t\tlet pRenderer = viewer.pRenderer;\n\n\t\tperformance.mark(\"pick-start\");\n\n\t\tlet getVal = (a, b) => a !== undefined ? a : b;\n\n\t\tlet pickWindowSize = getVal(params.pickWindowSize, 17);\n\t\tlet pickOutsideClipRegion = getVal(params.pickOutsideClipRegion, false);\n\n\t\tlet size = renderer.getSize(new THREE.Vector2());\n\n\t\tlet width = Math.ceil(getVal(params.width, size.width));\n\t\tlet height = Math.ceil(getVal(params.height, size.height));\n\n\t\tlet pointSizeType = getVal(params.pointSizeType, this.material.pointSizeType);\n\t\tlet pointSize = getVal(params.pointSize, this.material.size);\n\n\t\tlet nodes = this.nodesOnRay(this.visibleNodes, ray);\n\n\t\tif (nodes.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (!this.pickState) {\n\t\t\tlet scene = new THREE.Scene();\n\n\t\t\tlet material = new PointCloudMaterial();\n\t\t\tmaterial.activeAttributeName = \"indices\";\n\n\t\t\tlet renderTarget = new THREE.WebGLRenderTarget(\n\t\t\t\t1, 1,\n\t\t\t\t{ minFilter: THREE.LinearFilter,\n\t\t\t\t\tmagFilter: THREE.NearestFilter,\n\t\t\t\t\tformat: THREE.RGBAFormat }\n\t\t\t);\n\n\t\t\tthis.pickState = {\n\t\t\t\trenderTarget: renderTarget,\n\t\t\t\tmaterial: material,\n\t\t\t\tscene: scene\n\t\t\t};\n\t\t};\n\n\t\tlet pickState = this.pickState;\n\t\tlet pickMaterial = pickState.material;\n\n\t\t{ // update pick material\n\t\t\tpickMaterial.pointSizeType = pointSizeType;\n\t\t\tpickMaterial.shape = this.material.shape;\n\n\t\t\tpickMaterial.size = pointSize;\n\t\t\tpickMaterial.uniforms.minSize.value = this.material.uniforms.minSize.value;\n\t\t\tpickMaterial.uniforms.maxSize.value = this.material.uniforms.maxSize.value;\n\t\t\tpickMaterial.classification = this.material.classification;\n\t\t\tif(params.pickClipped){\n\t\t\t\tpickMaterial.clipBoxes = this.material.clipBoxes;\n\t\t\t\tif(this.material.clipTask === ClipTask.HIGHLIGHT){\n\t\t\t\t\tpickMaterial.clipTask = ClipTask.NONE;\n\t\t\t\t}else{\n\t\t\t\t\tpickMaterial.clipTask = this.material.clipTask;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tpickMaterial.clipBoxes = [];\n\t\t\t}\n\t\t\t\n\t\t\tthis.updateMaterial(pickMaterial, nodes, camera, renderer);\n\t\t}\n\n\t\tpickState.renderTarget.setSize(width, height);\n\n\t\tlet pixelPos = new THREE.Vector2(params.x, params.y);\n\t\t\n\t\tlet gl = renderer.getContext();\n\t\tgl.enable(gl.SCISSOR_TEST);\n\t\tgl.scissor(\n\t\t\tparseInt(pixelPos.x - (pickWindowSize - 1) / 2),\n\t\t\tparseInt(pixelPos.y - (pickWindowSize - 1) / 2),\n\t\t\tparseInt(pickWindowSize), parseInt(pickWindowSize));\n\n\n\t\trenderer.state.buffers.depth.setTest(pickMaterial.depthTest);\n\t\trenderer.state.buffers.depth.setMask(pickMaterial.depthWrite);\n\t\trenderer.state.setBlending(THREE.NoBlending);\n\n\t\trenderer.clearTarget(pickState.renderTarget, true, true, true);\n\n\t\t{ // RENDER\n\t\t\trenderer.setRenderTarget(pickState.renderTarget);\n\t\t\tgl.clearColor(0, 0, 0, 0);\n\t\t\trenderer.clearTarget( pickState.renderTarget, true, true, true );\n\t\t\t\n\t\t\tlet tmp = this.material;\n\t\t\tthis.material = pickMaterial;\n\t\t\t\n\t\t\tpRenderer.renderOctree(this, nodes, camera, pickState.renderTarget);\n\t\t\t\n\t\t\tthis.material = tmp;\n\t\t}\n\n\t\tlet clamp = (number, min, max) => Math.min(Math.max(min, number), max);\n\n\t\tlet x = parseInt(clamp(pixelPos.x - (pickWindowSize - 1) / 2, 0, width));\n\t\tlet y = parseInt(clamp(pixelPos.y - (pickWindowSize - 1) / 2, 0, height));\n\t\tlet w = parseInt(Math.min(x + pickWindowSize, width) - x);\n\t\tlet h = parseInt(Math.min(y + pickWindowSize, height) - y);\n\n\t\tlet pixelCount = w * h;\n\t\tlet buffer = new Uint8Array(4 * pixelCount);\n\t\t\n\t\tgl.readPixels(x, y, pickWindowSize, pickWindowSize, gl.RGBA, gl.UNSIGNED_BYTE, buffer); \n\t\t\n\t\trenderer.setRenderTarget(null);\n\t\trenderer.state.reset();\n\t\trenderer.setScissorTest(false);\n\t\tgl.disable(gl.SCISSOR_TEST);\n\t\t\n\t\tlet pixels = buffer;\n\t\tlet ibuffer = new Uint32Array(buffer.buffer);\n\n\t\t// find closest hit inside pixelWindow boundaries\n\t\tlet min = Number.MAX_VALUE;\n\t\tlet hits = [];\n\t\tfor (let u = 0; u < pickWindowSize; u++) {\n\t\t\tfor (let v = 0; v < pickWindowSize; v++) {\n\t\t\t\tlet offset = (u + v * pickWindowSize);\n\t\t\t\tlet distance = Math.pow(u - (pickWindowSize - 1) / 2, 2) + Math.pow(v - (pickWindowSize - 1) / 2, 2);\n\n\t\t\t\tlet pcIndex = pixels[4 * offset + 3];\n\t\t\t\tpixels[4 * offset + 3] = 0;\n\t\t\t\tlet pIndex = ibuffer[offset];\n\n\t\t\t\tif(!(pcIndex === 0 && pIndex === 0) && (pcIndex !== undefined) && (pIndex !== undefined)){\n\t\t\t\t\tlet hit = {\n\t\t\t\t\t\tpIndex: pIndex,\n\t\t\t\t\t\tpcIndex: pcIndex,\n\t\t\t\t\t\tdistanceToCenter: distance\n\t\t\t\t\t};\n\n\t\t\t\t\tif(params.all){\n\t\t\t\t\t\thits.push(hit);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(hits.length > 0){\n\t\t\t\t\t\t\tif(distance < hits[0].distanceToCenter){\n\t\t\t\t\t\t\t\thits[0] = hit;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\thits.push(hit);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\n\t\tfor(let hit of hits){\n\t\t\tlet point = {};\n\t\t\n\t\t\tif (!nodes[hit.pcIndex]) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\n\t\t\tlet node = nodes[hit.pcIndex];\n\t\t\tlet pc = node.sceneNode;\n\t\t\tlet geometry = node.geometryNode.geometry;\n\t\t\t\n\t\t\tfor(let attributeName in geometry.attributes){\n\t\t\t\tlet attribute = geometry.attributes[attributeName];\n\t\t\n\t\t\t\tif (attributeName === 'position') {\n\t\t\t\t\tlet x = attribute.array[3 * hit.pIndex + 0];\n\t\t\t\t\tlet y = attribute.array[3 * hit.pIndex + 1];\n\t\t\t\t\tlet z = attribute.array[3 * hit.pIndex + 2];\n\t\t\t\t\t\n\t\t\t\t\tlet position = new THREE.Vector3(x, y, z);\n\t\t\t\t\tposition.applyMatrix4(pc.matrixWorld);\n\t\t\n\t\t\t\t\tpoint[attributeName] = position;\n\t\t\t\t} else if (attributeName === 'indices') {\n\t\t\n\t\t\t\t} else {\n\t\t\t\t\t//if (values.itemSize === 1) {\n\t\t\t\t\t//\tpoint[attribute.name] = values.array[hit.pIndex];\n\t\t\t\t\t//} else {\n\t\t\t\t\t//\tlet value = [];\n\t\t\t\t\t//\tfor (let j = 0; j < values.itemSize; j++) {\n\t\t\t\t\t//\t\tvalue.push(values.array[values.itemSize * hit.pIndex + j]);\n\t\t\t\t\t//\t}\n\t\t\t\t\t//\tpoint[attribute.name] = value;\n\t\t\t\t\t//}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\n\t\t\thit.point = point;\n\t\t}\n\n\t\tperformance.mark(\"pick-end\");\n\t\tperformance.measure(\"pick\", \"pick-start\", \"pick-end\");\n\n\t\tif(params.all){\n\t\t\treturn hits.map(hit => hit.point);\n\t\t}else{\n\t\t\tif(hits.length === 0){\n\t\t\t\treturn null;\n\t\t\t}else{\n\t\t\t\treturn hits[0].point;\n\t\t\t}\n\t\t}\n\t}\n\n\tcomputeVisibilityTextureData(nodes){\n\n\t\tif(exports.measureTimings) performance.mark(\"computeVisibilityTextureData-start\");\n\n\t\tlet data = new Uint8Array(nodes.length * 3);\n\t\tlet visibleNodeTextureOffsets = new Map();\n\n\t\t// copy array\n\t\tnodes = nodes.slice();\n\n\t\t// sort by level and number\n\t\tlet sort = function (a, b) {\n\t\t\tlet la = a.geometryNode.level;\n\t\t\tlet lb = b.geometryNode.level;\n\t\t\tlet na = a.geometryNode.number;\n\t\t\tlet nb = b.geometryNode.number;\n\t\t\tif (la !== lb) return la - lb;\n\t\t\tif (na < nb) return -1;\n\t\t\tif (na > nb) return 1;\n\t\t\treturn 0;\n\t\t};\n\t\tnodes.sort(sort);\n\n\t\tlet visibleNodeNames = [];\n\t\tfor (let i = 0; i < nodes.length; i++) {\n\t\t\tvisibleNodeNames.push(nodes[i].geometryNode.number);\n\t\t}\n\n\t\tfor (let i = 0; i < nodes.length; i++) {\n\t\t\tlet node = nodes[i];\n\n\t\t\tvisibleNodeTextureOffsets.set(node, i);\n\n\t\t\tlet b1 = 0;\t// children\n\t\t\tlet b2 = 0;\t// offset to first child\n\t\t\tlet b3 = 0;\t// split\n\n\t\t\tif (node.geometryNode.left && visibleNodeNames.indexOf(node.geometryNode.left.number) > 0) {\n\t\t\t\tb1 += 1;\n\t\t\t\tb2 = visibleNodeNames.indexOf(node.geometryNode.left.number) - i;\n\t\t\t}\n\t\t\tif (node.geometryNode.right && visibleNodeNames.indexOf(node.geometryNode.right.number) > 0) {\n\t\t\t\tb1 += 2;\n\t\t\t\tb2 = (b2 === 0) ? visibleNodeNames.indexOf(node.geometryNode.right.number) - i : b2;\n\t\t\t}\n\n\t\t\tif (node.geometryNode.split === 'X') {\n\t\t\t\tb3 = 1;\n\t\t\t} else if (node.geometryNode.split === 'Y') {\n\t\t\t\tb3 = 2;\n\t\t\t} else if (node.geometryNode.split === 'Z') {\n\t\t\t\tb3 = 4;\n\t\t\t}\n\n\t\t\tdata[i * 3 + 0] = b1;\n\t\t\tdata[i * 3 + 1] = b2;\n\t\t\tdata[i * 3 + 2] = b3;\n\t\t}\n\n\t\tif(exports.measureTimings){\n\t\t\tperformance.mark(\"computeVisibilityTextureData-end\");\n\t\t\tperformance.measure(\"render.computeVisibilityTextureData\", \"computeVisibilityTextureData-start\", \"computeVisibilityTextureData-end\");\n\t\t}\n\n\t\treturn {\n\t\t\tdata: data,\n\t\t\toffsets: visibleNodeTextureOffsets\n\t\t};\n\t}\n\n\tget progress () {\n\t\tif (this.pcoGeometry.root) {\n\t\t\treturn exports.numNodesLoading > 0 ? 0 : 1;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n};\n","\nimport {PointCloudTree} from \"./PointCloudTree.js\";\nimport {PointCloudOctreeNode} from \"./PointCloudOctree.js\";\nimport {PointCloudArena4DNode} from \"./arena4d/PointCloudArena4D.js\";\nimport {PointSizeType, ClipTask, ElevationGradientRepeat} from \"./defines.js\";\n\n// Copied from three.js: WebGLRenderer.js\nfunction paramThreeToGL(_gl, p) {\n\n\tlet extension;\n\n\tif (p === THREE.RepeatWrapping) return _gl.REPEAT;\n\tif (p === THREE.ClampToEdgeWrapping) return _gl.CLAMP_TO_EDGE;\n\tif (p === THREE.MirroredRepeatWrapping) return _gl.MIRRORED_REPEAT;\n\n\tif (p === THREE.NearestFilter) return _gl.NEAREST;\n\tif (p === THREE.NearestMipMapNearestFilter) return _gl.NEAREST_MIPMAP_NEAREST;\n\tif (p === THREE.NearestMipMapLinearFilter) return _gl.NEAREST_MIPMAP_LINEAR;\n\n\tif (p === THREE.LinearFilter) return _gl.LINEAR;\n\tif (p === THREE.LinearMipMapNearestFilter) return _gl.LINEAR_MIPMAP_NEAREST;\n\tif (p === THREE.LinearMipMapLinearFilter) return _gl.LINEAR_MIPMAP_LINEAR;\n\n\tif (p === THREE.UnsignedByteType) return _gl.UNSIGNED_BYTE;\n\tif (p === THREE.UnsignedShort4444Type) return _gl.UNSIGNED_SHORT_4_4_4_4;\n\tif (p === THREE.UnsignedShort5551Type) return _gl.UNSIGNED_SHORT_5_5_5_1;\n\tif (p === THREE.UnsignedShort565Type) return _gl.UNSIGNED_SHORT_5_6_5;\n\n\tif (p === THREE.ByteType) return _gl.BYTE;\n\tif (p === THREE.ShortType) return _gl.SHORT;\n\tif (p === THREE.UnsignedShortType) return _gl.UNSIGNED_SHORT;\n\tif (p === THREE.IntType) return _gl.INT;\n\tif (p === THREE.UnsignedIntType) return _gl.UNSIGNED_INT;\n\tif (p === THREE.FloatType) return _gl.FLOAT;\n\n\tif (p === THREE.HalfFloatType) {\n\n\t\textension = extensions.get('OES_texture_half_float');\n\n\t\tif (extension !== null) return extension.HALF_FLOAT_OES;\n\n\t}\n\n\tif (p === THREE.AlphaFormat) return _gl.ALPHA;\n\tif (p === THREE.RGBFormat) return _gl.RGB;\n\tif (p === THREE.RGBAFormat) return _gl.RGBA;\n\tif (p === THREE.LuminanceFormat) return _gl.LUMINANCE;\n\tif (p === THREE.LuminanceAlphaFormat) return _gl.LUMINANCE_ALPHA;\n\tif (p === THREE.DepthFormat) return _gl.DEPTH_COMPONENT;\n\tif (p === THREE.DepthStencilFormat) return _gl.DEPTH_STENCIL;\n\n\tif (p === THREE.AddEquation) return _gl.FUNC_ADD;\n\tif (p === THREE.SubtractEquation) return _gl.FUNC_SUBTRACT;\n\tif (p === THREE.ReverseSubtractEquation) return _gl.FUNC_REVERSE_SUBTRACT;\n\n\tif (p === THREE.ZeroFactor) return _gl.ZERO;\n\tif (p === THREE.OneFactor) return _gl.ONE;\n\tif (p === THREE.SrcColorFactor) return _gl.SRC_COLOR;\n\tif (p === THREE.OneMinusSrcColorFactor) return _gl.ONE_MINUS_SRC_COLOR;\n\tif (p === THREE.SrcAlphaFactor) return _gl.SRC_ALPHA;\n\tif (p === THREE.OneMinusSrcAlphaFactor) return _gl.ONE_MINUS_SRC_ALPHA;\n\tif (p === THREE.DstAlphaFactor) return _gl.DST_ALPHA;\n\tif (p === THREE.OneMinusDstAlphaFactor) return _gl.ONE_MINUS_DST_ALPHA;\n\n\tif (p === THREE.DstColorFactor) return _gl.DST_COLOR;\n\tif (p === THREE.OneMinusDstColorFactor) return _gl.ONE_MINUS_DST_COLOR;\n\tif (p === THREE.SrcAlphaSaturateFactor) return _gl.SRC_ALPHA_SATURATE;\n\n\tif (p === THREE.RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\tp === THREE.RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format) {\n\n\t\textension = extensions.get('WEBGL_compressed_texture_s3tc');\n\n\t\tif (extension !== null) {\n\n\t\t\tif (p === THREE.RGB_S3TC_DXT1_Format) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\tif (p === THREE.RGBA_S3TC_DXT1_Format) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\tif (p === THREE.RGBA_S3TC_DXT3_Format) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\tif (p === THREE.RGBA_S3TC_DXT5_Format) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t}\n\n\t}\n\n\tif (p === THREE.RGB_PVRTC_4BPPV1_Format || p === THREE.RGB_PVRTC_2BPPV1_Format ||\n\t\tp === THREE.RGBA_PVRTC_4BPPV1_Format || p === THREE.RGBA_PVRTC_2BPPV1_Format) {\n\n\t\textension = extensions.get('WEBGL_compressed_texture_pvrtc');\n\n\t\tif (extension !== null) {\n\n\t\t\tif (p === THREE.RGB_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\tif (p === THREE.RGB_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\tif (p === THREE.RGBA_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\tif (p === THREE.RGBA_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t}\n\n\t}\n\n\tif (p === THREE.RGB_ETC1_Format) {\n\n\t\textension = extensions.get('WEBGL_compressed_texture_etc1');\n\n\t\tif (extension !== null) return extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t}\n\n\tif (p === THREE.MinEquation || p === THREE.MaxEquation) {\n\n\t\textension = extensions.get('EXT_blend_minmax');\n\n\t\tif (extension !== null) {\n\n\t\t\tif (p === THREE.MinEquation) return extension.MIN_EXT;\n\t\t\tif (p === THREE.MaxEquation) return extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tif (p === UnsignedInt248Type) {\n\n\t\textension = extensions.get('WEBGL_depth_texture');\n\n\t\tif (extension !== null) return extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t}\n\n\treturn 0;\n\n};\n\nlet attributeLocations = {\n\t\"position\": {name: \"position\", location: 0},\n\t\"color\": {name: \"color\", location: 1},\n\t\"rgba\": {name: \"color\", location: 1},\n\t\"intensity\": {name: \"intensity\", location: 2},\n\t\"classification\": {name: \"classification\", location: 3},\n\t\"returnNumber\": {name: \"returnNumber\", location: 4},\n\t\"return number\": {name: \"returnNumber\", location: 4},\n\t\"returns\": {name: \"returnNumber\", location: 4},\n\t\"numberOfReturns\": {name: \"numberOfReturns\", location: 5},\n\t\"number of returns\": {name: \"numberOfReturns\", location: 5},\n\t\"pointSourceID\": {name: \"pointSourceID\", location: 6},\n\t\"source id\": {name: \"pointSourceID\", location: 6},\n\t\"point source id\": {name: \"pointSourceID\", location: 6},\n\t\"indices\": {name: \"indices\", location: 7},\n\t\"normal\": {name: \"normal\", location: 8},\n\t\"spacing\": {name: \"spacing\", location: 9},\n\t\"gps-time\": {name: \"gpsTime\", location: 10},\n\t\"aExtra\": {name: \"aExtra\", location: 11},\n};\n\nclass Shader {\n\n\tconstructor(gl, name, vsSource, fsSource) {\n\t\tthis.gl = gl;\n\t\tthis.name = name;\n\t\tthis.vsSource = vsSource;\n\t\tthis.fsSource = fsSource;\n\n\t\tthis.cache = new Map();\n\n\t\tthis.vs = null;\n\t\tthis.fs = null;\n\t\tthis.program = null;\n\n\t\tthis.uniformLocations = {};\n\t\tthis.attributeLocations = {};\n\t\tthis.uniformBlockIndices = {};\n\t\tthis.uniformBlocks = {};\n\t\tthis.uniforms = {};\n\n\t\tthis.update(vsSource, fsSource);\n\t}\n\n\tupdate(vsSource, fsSource) {\n\t\tthis.vsSource = vsSource;\n\t\tthis.fsSource = fsSource;\n\n\t\tthis.linkProgram();\n\t}\n\n\tcompileShader(shader, source){\n\t\tlet gl = this.gl;\n\n\t\tgl.shaderSource(shader, source);\n\n\t\tgl.compileShader(shader);\n\n\t\tlet success = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n\t\tif (!success) {\n\t\t\tlet info = gl.getShaderInfoLog(shader);\n\t\t\tlet numberedSource = source.split(\"\\n\").map((a, i) => `${i + 1}`.padEnd(5) + a).join(\"\\n\");\n\t\t\tthrow `could not compile shader ${this.name}: ${info}, \\n${numberedSource}`;\n\t\t}\n\t}\n\n\tlinkProgram() {\n\n\t\tconst tStart = performance.now();\n\n\t\tlet gl = this.gl;\n\n\t\tthis.uniformLocations = {};\n\t\tthis.attributeLocations = {};\n\t\tthis.uniforms = {};\n\n\t\tgl.useProgram(null);\n\n\t\tlet cached = this.cache.get(`${this.vsSource}, ${this.fsSource}`);\n\t\tif (cached) {\n\t\t\tthis.program = cached.program;\n\t\t\tthis.vs = cached.vs;\n\t\t\tthis.fs = cached.fs;\n\t\t\tthis.attributeLocations = cached.attributeLocations;\n\t\t\tthis.uniformLocations = cached.uniformLocations;\n\t\t\tthis.uniformBlocks = cached.uniformBlocks;\n\t\t\tthis.uniforms = cached.uniforms;\n\n\t\t\treturn;\n\t\t} else {\n\n\t\t\tthis.vs = gl.createShader(gl.VERTEX_SHADER);\n\t\t\tthis.fs = gl.createShader(gl.FRAGMENT_SHADER);\n\t\t\tthis.program = gl.createProgram();\n\n\t\t\tfor(let name of Object.keys(attributeLocations)){\n\t\t\t\tlet location = attributeLocations[name].location;\n\t\t\t\tlet glslName = attributeLocations[name].name;\n\t\t\t\tgl.bindAttribLocation(this.program, location, glslName);\n\t\t\t}\n\n\t\t\tthis.compileShader(this.vs, this.vsSource);\n\t\t\tthis.compileShader(this.fs, this.fsSource);\n\n\t\t\tlet program = this.program;\n\n\t\t\tgl.attachShader(program, this.vs);\n\t\t\tgl.attachShader(program, this.fs);\n\n\t\t\tgl.linkProgram(program);\n\n\t\t\tgl.detachShader(program, this.vs);\n\t\t\tgl.detachShader(program, this.fs);\n\n\t\t\tlet success = gl.getProgramParameter(program, gl.LINK_STATUS);\n\t\t\tif (!success) {\n\t\t\t\tlet info = gl.getProgramInfoLog(program);\n\t\t\t\tthrow `could not link program ${this.name}: ${info}`;\n\t\t\t}\n\n\t\t\t{ // attribute locations\n\t\t\t\tlet numAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n\n\t\t\t\tfor (let i = 0; i < numAttributes; i++) {\n\t\t\t\t\tlet attribute = gl.getActiveAttrib(program, i);\n\n\t\t\t\t\tlet location = gl.getAttribLocation(program, attribute.name);\n\n\t\t\t\t\tthis.attributeLocations[attribute.name] = location;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t{ // uniform locations\n\t\t\t\tlet numUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n\n\t\t\t\tfor (let i = 0; i < numUniforms; i++) {\n\t\t\t\t\tlet uniform = gl.getActiveUniform(program, i);\n\n\t\t\t\t\tlet location = gl.getUniformLocation(program, uniform.name);\n\n\t\t\t\t\tthis.uniformLocations[uniform.name] = location;\n\t\t\t\t\tthis.uniforms[uniform.name] = {\n\t\t\t\t\t\tlocation: location,\n\t\t\t\t\t\tvalue: null,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// uniform blocks\n\t\t\tif(gl instanceof WebGL2RenderingContext){ \n\t\t\t\tlet numBlocks = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);\n\n\t\t\t\tfor (let i = 0; i < numBlocks; i++) {\n\t\t\t\t\tlet blockName = gl.getActiveUniformBlockName(program, i);\n\n\t\t\t\t\tlet blockIndex = gl.getUniformBlockIndex(program, blockName);\n\n\t\t\t\t\tthis.uniformBlockIndices[blockName] = blockIndex;\n\n\t\t\t\t\tgl.uniformBlockBinding(program, blockIndex, blockIndex);\n\t\t\t\t\tlet dataSize = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE);\n\n\t\t\t\t\tlet uBuffer = gl.createBuffer();\t\n\t\t\t\t\tgl.bindBuffer(gl.UNIFORM_BUFFER, uBuffer);\n\t\t\t\t\tgl.bufferData(gl.UNIFORM_BUFFER, dataSize, gl.DYNAMIC_READ);\n\n\t\t\t\t\tgl.bindBufferBase(gl.UNIFORM_BUFFER, blockIndex, uBuffer);\n\n\t\t\t\t\tgl.bindBuffer(gl.UNIFORM_BUFFER, null);\n\n\t\t\t\t\tthis.uniformBlocks[blockName] = {\n\t\t\t\t\t\tname: blockName,\n\t\t\t\t\t\tindex: blockIndex,\n\t\t\t\t\t\tdataSize: dataSize,\n\t\t\t\t\t\tbuffer: uBuffer\n\t\t\t\t\t};\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet cached = {\n\t\t\t\tprogram: this.program,\n\t\t\t\tvs: this.vs,\n\t\t\t\tfs: this.fs,\n\t\t\t\tattributeLocations: this.attributeLocations,\n\t\t\t\tuniformLocations: this.uniformLocations,\n\t\t\t\tuniforms: this.uniforms,\n\t\t\t\tuniformBlocks: this.uniformBlocks,\n\t\t\t};\n\n\t\t\tthis.cache.set(`${this.vsSource}, ${this.fsSource}`, cached);\n\t\t}\n\n\t\tconst tEnd = performance.now();\n\t\tconst duration = tEnd - tStart;\n\n\t\tconsole.log(`shader compile duration: ${duration.toFixed(3)}`);\n\n\n\t}\n\n\tsetUniformMatrix4(name, value) {\n\t\tconst gl = this.gl;\n\t\tconst location = this.uniformLocations[name];\n\n\t\tif (location == null) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet tmp = new Float32Array(value.elements);\n\t\tgl.uniformMatrix4fv(location, false, tmp);\n\t}\n\n\tsetUniform1f(name, value) {\n\t\tconst gl = this.gl;\n\t\tconst uniform = this.uniforms[name];\n\n\t\tif (uniform === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tif(uniform.value === value){\n\t\t\treturn;\n\t\t}\n\n\t\tuniform.value = value;\n\n\t\tgl.uniform1f(uniform.location, value);\n\t}\n\n\tsetUniformBoolean(name, value) {\n\t\tconst gl = this.gl;\n\t\tconst uniform = this.uniforms[name];\n\n\t\tif (uniform === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tif(uniform.value === value){\n\t\t\treturn;\n\t\t}\n\n\t\tuniform.value = value;\n\n\t\tgl.uniform1i(uniform.location, value);\n\t}\n\n\tsetUniformTexture(name, value) {\n\t\tconst gl = this.gl;\n\t\tconst location = this.uniformLocations[name];\n\n\t\tif (location == null) {\n\t\t\treturn;\n\t\t}\n\n\t\tgl.uniform1i(location, value);\n\t}\n\n\tsetUniform2f(name, value) {\n\t\tconst gl = this.gl;\n\t\tconst location = this.uniformLocations[name];\n\n\t\tif (location == null) {\n\t\t\treturn;\n\t\t}\n\n\t\tgl.uniform2f(location, value[0], value[1]);\n\t}\n\n\tsetUniform3f(name, value) {\n\t\tconst gl = this.gl;\n\t\tconst location = this.uniformLocations[name];\n\n\t\tif (location == null) {\n\t\t\treturn;\n\t\t}\n\n\t\tgl.uniform3f(location, value[0], value[1], value[2]);\n\t}\n\n\tsetUniform(name, value) {\n\n\t\tif (value.constructor === THREE.Matrix4) {\n\t\t\tthis.setUniformMatrix4(name, value);\n\t\t} else if (typeof value === \"number\") {\n\t\t\tthis.setUniform1f(name, value);\n\t\t} else if (typeof value === \"boolean\") {\n\t\t\tthis.setUniformBoolean(name, value);\n\t\t} else if (value instanceof WebGLTexture) {\n\t\t\tthis.setUniformTexture(name, value);\n\t\t} else if (value instanceof Array) {\n\n\t\t\tif (value.length === 2) {\n\t\t\t\tthis.setUniform2f(name, value);\n\t\t\t} else if (value.length === 3) {\n\t\t\t\tthis.setUniform3f(name, value);\n\t\t\t}\n\n\t\t} else {\n\t\t\tconsole.error(\"unhandled uniform type: \", name, value);\n\t\t}\n\n\t}\n\n\n\tsetUniform1i(name, value) {\n\t\tlet gl = this.gl;\n\t\tlet location = this.uniformLocations[name];\n\n\t\tif (location == null) {\n\t\t\treturn;\n\t\t}\n\n\t\tgl.uniform1i(location, value);\n\t}\n\n};\n\nclass WebGLTexture {\n\n\tconstructor(gl, texture) {\n\t\tthis.gl = gl;\n\n\t\tthis.texture = texture;\n\t\tthis.id = gl.createTexture();\n\n\t\tthis.target = gl.TEXTURE_2D;\n\t\tthis.version = -1;\n\n\t\tthis.update(texture);\n\t}\n\n\tupdate() {\n\n\t\tif (!this.texture.image) {\n\t\t\tthis.version = this.texture.version;\n\n\t\t\treturn;\n\t\t}\n\n\t\tlet gl = this.gl;\n\t\tlet texture = this.texture;\n\n\t\tif (this.version === texture.version) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.target = gl.TEXTURE_2D;\n\n\t\tgl.bindTexture(this.target, this.id);\n\n\t\tlet level = 0;\n\t\tlet internalFormat = paramThreeToGL(gl, texture.format);\n\t\tlet width = texture.image.width;\n\t\tlet height = texture.image.height;\n\t\tlet border = 0;\n\t\tlet srcFormat = internalFormat;\n\t\tlet srcType = paramThreeToGL(gl, texture.type);\n\t\tlet data;\n\n\t\tgl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, texture.flipY);\n\t\tgl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha);\n\t\tgl.pixelStorei(gl.UNPACK_ALIGNMENT, texture.unpackAlignment);\n\n\t\tif (texture instanceof THREE.DataTexture) {\n\t\t\tdata = texture.image.data;\n\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_MAG_FILTER, paramThreeToGL(gl, texture.magFilter));\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_MIN_FILTER, paramThreeToGL(gl, texture.minFilter));\n\n\t\t\tgl.texImage2D(this.target, level, internalFormat,\n\t\t\t\twidth, height, border, srcFormat, srcType,\n\t\t\t\tdata);\n\t\t} else if ((texture instanceof THREE.CanvasTexture) || (texture instanceof THREE.Texture)) {\n\t\t\tdata = texture.image;\n\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_WRAP_S, paramThreeToGL(gl, texture.wrapS));\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_WRAP_T, paramThreeToGL(gl, texture.wrapT));\n\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_MAG_FILTER, paramThreeToGL(gl, texture.magFilter));\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_MIN_FILTER, paramThreeToGL(gl, texture.minFilter));\n\n\t\t\tgl.texImage2D(this.target, level, internalFormat,\n\t\t\t\tinternalFormat, srcType, data);\n\n\t\t\tif (texture instanceof THREE.Texture) {gl.generateMipmap(gl.TEXTURE_2D);}\n\t\t}\n\n\t\tgl.bindTexture(this.target, null);\n\n\t\tthis.version = texture.version;\n\t}\n\n};\n\nclass WebGLBuffer {\n\n\tconstructor() {\n\t\tthis.numElements = 0;\n\t\tthis.vao = null;\n\t\tthis.vbos = new Map();\n\t}\n\n};\n\nexport class Renderer {\n\n\tconstructor(threeRenderer) {\n\t\tthis.threeRenderer = threeRenderer;\n\t\tthis.gl = this.threeRenderer.getContext();\n\n\t\tthis.buffers = new Map();\n\t\tthis.shaders = new Map();\n\t\tthis.textures = new Map();\n\n\t\tthis.glTypeMapping = new Map();\n\t\tthis.glTypeMapping.set(Float32Array, this.gl.FLOAT);\n\t\tthis.glTypeMapping.set(Uint8Array, this.gl.UNSIGNED_BYTE);\n\t\tthis.glTypeMapping.set(Uint16Array, this.gl.UNSIGNED_SHORT);\n\n\t\tthis.toggle = 0;\n\t}\n\n\tdeleteBuffer(geometry) {\n\n\t\tlet gl = this.gl;\n\t\tlet webglBuffer = this.buffers.get(geometry);\n\t\tif (webglBuffer != null) {\n\t\t\tfor (let attributeName in geometry.attributes) {\n\t\t\t\tgl.deleteBuffer(webglBuffer.vbos.get(attributeName).handle);\n\t\t\t}\n\t\t\tthis.buffers.delete(geometry);\n\t\t}\n\t}\n\n\tcreateBuffer(geometry){\n\t\tlet gl = this.gl;\n\t\tlet webglBuffer = new WebGLBuffer();\n\t\twebglBuffer.vao = gl.createVertexArray();\n\t\twebglBuffer.numElements = geometry.attributes.position.count;\n\n\t\tgl.bindVertexArray(webglBuffer.vao);\n\n\t\tfor(let attributeName in geometry.attributes){\n\t\t\tlet bufferAttribute = geometry.attributes[attributeName];\n\n\t\t\tlet vbo = gl.createBuffer();\n\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vbo);\n\t\t\tgl.bufferData(gl.ARRAY_BUFFER, bufferAttribute.array, gl.STATIC_DRAW);\n\n\t\t\tlet normalized = bufferAttribute.normalized;\n\t\t\tlet type = this.glTypeMapping.get(bufferAttribute.array.constructor);\n\n\t\t\tif(attributeLocations[attributeName] === undefined){\n\t\t\t\t//attributeLocation = attributeLocations[\"aExtra\"];\n\t\t\t}else{\n\t\t\t\tlet attributeLocation = attributeLocations[attributeName].location;\n\n\t\t\t\tgl.vertexAttribPointer(attributeLocation, bufferAttribute.itemSize, type, normalized, 0, 0);\n\t\t\t\tgl.enableVertexAttribArray(attributeLocation);\n\t\t\t}\n\n\n\t\t\twebglBuffer.vbos.set(attributeName, {\n\t\t\t\thandle: vbo,\n\t\t\t\tname: attributeName,\n\t\t\t\tcount: bufferAttribute.count,\n\t\t\t\titemSize: bufferAttribute.itemSize,\n\t\t\t\ttype: geometry.attributes.position.array.constructor,\n\t\t\t\tversion: 0\n\t\t\t});\n\t\t}\n\n\t\tgl.bindBuffer(gl.ARRAY_BUFFER, null);\n\t\tgl.bindVertexArray(null);\n\n\t\tlet disposeHandler = (event) => {\n\t\t\tthis.deleteBuffer(geometry);\n\t\t\tgeometry.removeEventListener(\"dispose\", disposeHandler);\n\t\t};\n\t\tgeometry.addEventListener(\"dispose\", disposeHandler);\n\n\t\treturn webglBuffer;\n\t}\n\n\tupdateBuffer(geometry){\n\t\tlet gl = this.gl;\n\n\t\tlet webglBuffer = this.buffers.get(geometry);\n\n\t\tgl.bindVertexArray(webglBuffer.vao);\n\n\t\tfor(let attributeName in geometry.attributes){\n\t\t\tlet bufferAttribute = geometry.attributes[attributeName];\n\n\t\t\tlet normalized = bufferAttribute.normalized;\n\t\t\tlet type = this.glTypeMapping.get(bufferAttribute.array.constructor);\n\n\t\t\tlet vbo = null;\n\t\t\tif(!webglBuffer.vbos.has(attributeName)){\n\t\t\t\tvbo = gl.createBuffer();\n\n\t\t\t\twebglBuffer.vbos.set(attributeName, {\n\t\t\t\t\thandle: vbo,\n\t\t\t\t\tname: attributeName,\n\t\t\t\t\tcount: bufferAttribute.count,\n\t\t\t\t\titemSize: bufferAttribute.itemSize,\n\t\t\t\t\ttype: geometry.attributes.position.array.constructor,\n\t\t\t\t\tversion: bufferAttribute.version\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tvbo = webglBuffer.vbos.get(attributeName).handle;\n\t\t\t\twebglBuffer.vbos.get(attributeName).version = bufferAttribute.version;\n\t\t\t}\n\n\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vbo);\n\t\t\tgl.bufferData(gl.ARRAY_BUFFER, bufferAttribute.array, gl.STATIC_DRAW);\n\n\t\t\tif(attributeLocations[attributeName] === undefined){\n\t\t\t\t//attributeLocation = attributeLocations[\"aExtra\"];\n\t\t\t}else{\n\t\t\t\tlet attributeLocation = attributeLocations[attributeName].location;\n\t\t\t\t\n\t\t\t\tgl.vertexAttribPointer(attributeLocation, bufferAttribute.itemSize, type, normalized, 0, 0);\n\t\t\t\tgl.enableVertexAttribArray(attributeLocation);\n\t\t\t}\n\t\t}\n\n\t\tgl.bindBuffer(gl.ARRAY_BUFFER, null);\n\t\tgl.bindVertexArray(null);\n\t}\n\n\ttraverse(scene) {\n\n\t\tlet octrees = [];\n\n\t\tlet stack = [scene];\n\t\twhile (stack.length > 0) {\n\n\t\t\tlet node = stack.pop();\n\n\t\t\tif (node instanceof PointCloudTree) {\n\t\t\t\toctrees.push(node);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet visibleChildren = node.children.filter(c => c.visible);\n\t\t\tstack.push(...visibleChildren);\n\n\t\t}\n\n\t\tlet result = {\n\t\t\toctrees: octrees\n\t\t};\n\n\t\treturn result;\n\t}\n\n\n\n\trenderNodes(octree, nodes, visibilityTextureData, camera, target, shader, params) {\n\n\t\tif (exports.measureTimings) performance.mark(\"renderNodes-start\");\n\n\t\tlet gl = this.gl;\n\n\t\tlet material = params.material ? params.material : octree.material;\n\t\tlet shadowMaps = params.shadowMaps == null ? [] : params.shadowMaps;\n\t\tlet view = camera.matrixWorldInverse;\n\t\tlet worldView = new THREE.Matrix4();\n\n\t\tlet mat4holder = new Float32Array(16);\n\n\t\tlet i = 0;\n\t\tfor (let node of nodes) {\n\n\t\t\tif(exports.debug.allowedNodes !== undefined){\n\t\t\t\tif(!exports.debug.allowedNodes.includes(node.name)){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet world = node.sceneNode.matrixWorld;\n\t\t\tworldView.multiplyMatrices(view, world);\n\n\t\t\tif (visibilityTextureData) {\n\t\t\t\tlet vnStart = visibilityTextureData.offsets.get(node);\n\t\t\t\tshader.setUniform1f(\"uVNStart\", vnStart);\n\t\t\t}\n\n\n\t\t\tlet level = node.getLevel();\n\n\t\t\tif(node.debug){\n\t\t\t\tshader.setUniform(\"uDebug\", true);\n\t\t\t}else{\n\t\t\t\tshader.setUniform(\"uDebug\", false);\n\t\t\t}\n\n\t\t\t// let isLeaf = false;\n\t\t\t// if(node instanceof PointCloudOctreeNode){\n\t\t\t// \tisLeaf = Object.keys(node.children).length === 0;\n\t\t\t// }else if(node instanceof PointCloudArena4DNode){\n\t\t\t// \tisLeaf = node.geometryNode.isLeaf;\n\t\t\t// }\n\t\t\t// shader.setUniform(\"uIsLeafNode\", isLeaf);\n\n\t\t\t// let isLeaf = node.children.filter(n => n != null).length === 0;\n\t\t\t// if(!isLeaf){\n\t\t\t// \tcontinue;\n\t\t\t// }\n\n\n\t\t\t// TODO consider passing matrices in an array to avoid uniformMatrix4fv overhead\n\t\t\tconst lModel = shader.uniformLocations[\"modelMatrix\"];\n\t\t\tif (lModel) {\n\t\t\t\tmat4holder.set(world.elements);\n\t\t\t\tgl.uniformMatrix4fv(lModel, false, mat4holder);\n\t\t\t}\n\n\t\t\tconst lModelView = shader.uniformLocations[\"modelViewMatrix\"];\n\t\t\t//mat4holder.set(worldView.elements);\n\t\t\t// faster then set in chrome 63\n\t\t\tfor(let j = 0; j < 16; j++){\n\t\t\t\tmat4holder[j] = worldView.elements[j];\n\t\t\t}\n\t\t\tgl.uniformMatrix4fv(lModelView, false, mat4holder);\n\n\t\t\t{ // Clip Polygons\n\t\t\t\tif(material.clipPolygons && material.clipPolygons.length > 0){\n\n\t\t\t\t\tlet clipPolygonVCount = [];\n\t\t\t\t\tlet worldViewProjMatrices = [];\n\n\t\t\t\t\tfor(let clipPolygon of material.clipPolygons){\n\n\t\t\t\t\t\tlet view = clipPolygon.viewMatrix;\n\t\t\t\t\t\tlet proj = clipPolygon.projMatrix;\n\n\t\t\t\t\t\tlet worldViewProj = proj.clone().multiply(view).multiply(world);\n\n\t\t\t\t\t\tclipPolygonVCount.push(clipPolygon.markers.length);\n\t\t\t\t\t\tworldViewProjMatrices.push(worldViewProj);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet flattenedMatrices = [].concat(...worldViewProjMatrices.map(m => m.elements));\n\n\t\t\t\t\tlet flattenedVertices = new Array(8 * 3 * material.clipPolygons.length);\n\t\t\t\t\tfor(let i = 0; i < material.clipPolygons.length; i++){\n\t\t\t\t\t\tlet clipPolygon = material.clipPolygons[i];\n\t\t\t\t\t\tfor(let j = 0; j < clipPolygon.markers.length; j++){\n\t\t\t\t\t\t\tflattenedVertices[i * 24 + (j * 3 + 0)] = clipPolygon.markers[j].position.x;\n\t\t\t\t\t\t\tflattenedVertices[i * 24 + (j * 3 + 1)] = clipPolygon.markers[j].position.y;\n\t\t\t\t\t\t\tflattenedVertices[i * 24 + (j * 3 + 2)] = clipPolygon.markers[j].position.z;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst lClipPolygonVCount = shader.uniformLocations[\"uClipPolygonVCount[0]\"];\n\t\t\t\t\tgl.uniform1iv(lClipPolygonVCount, clipPolygonVCount);\n\n\t\t\t\t\tconst lClipPolygonVP = shader.uniformLocations[\"uClipPolygonWVP[0]\"];\n\t\t\t\t\tgl.uniformMatrix4fv(lClipPolygonVP, false, flattenedMatrices);\n\n\t\t\t\t\tconst lClipPolygons = shader.uniformLocations[\"uClipPolygonVertices[0]\"];\n\t\t\t\t\tgl.uniform3fv(lClipPolygons, flattenedVertices);\n\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\t//shader.setUniformMatrix4(\"modelMatrix\", world);\n\t\t\t//shader.setUniformMatrix4(\"modelViewMatrix\", worldView);\n\t\t\tshader.setUniform1f(\"uLevel\", level);\n\t\t\tshader.setUniform1f(\"uNodeSpacing\", node.geometryNode.estimatedSpacing);\n\n\t\t\tshader.setUniform1f(\"uPCIndex\", i);\n\t\t\t// uBBSize\n\n\t\t\tif (shadowMaps.length > 0) {\n\n\t\t\t\tconst lShadowMap = shader.uniformLocations[\"uShadowMap[0]\"];\n\n\t\t\t\tshader.setUniform3f(\"uShadowColor\", material.uniforms.uShadowColor.value);\n\n\t\t\t\tlet bindingStart = 5;\n\t\t\t\tlet bindingPoints = new Array(shadowMaps.length).fill(bindingStart).map((a, i) => (a + i));\n\t\t\t\tgl.uniform1iv(lShadowMap, bindingPoints);\n\n\t\t\t\tfor (let i = 0; i < shadowMaps.length; i++) {\n\t\t\t\t\tlet shadowMap = shadowMaps[i];\n\t\t\t\t\tlet bindingPoint = bindingPoints[i];\n\t\t\t\t\tlet glTexture = this.threeRenderer.properties.get(shadowMap.target.texture).__webglTexture;\n\n\t\t\t\t\tgl.activeTexture(gl[`TEXTURE${bindingPoint}`]);\n\t\t\t\t\tgl.bindTexture(gl.TEXTURE_2D, glTexture);\n\t\t\t\t}\n\n\t\t\t\t{\n\n\t\t\t\t\tlet worldViewMatrices = shadowMaps\n\t\t\t\t\t\t.map(sm => sm.camera.matrixWorldInverse)\n\t\t\t\t\t\t.map(view => new THREE.Matrix4().multiplyMatrices(view, world))\n\n\t\t\t\t\tlet flattenedMatrices = [].concat(...worldViewMatrices.map(c => c.elements));\n\t\t\t\t\tconst lWorldView = shader.uniformLocations[\"uShadowWorldView[0]\"];\n\t\t\t\t\tgl.uniformMatrix4fv(lWorldView, false, flattenedMatrices);\n\t\t\t\t}\n\n\t\t\t\t{\n\t\t\t\t\tlet flattenedMatrices = [].concat(...shadowMaps.map(sm => sm.camera.projectionMatrix.elements));\n\t\t\t\t\tconst lProj = shader.uniformLocations[\"uShadowProj[0]\"];\n\t\t\t\t\tgl.uniformMatrix4fv(lProj, false, flattenedMatrices);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst geometry = node.geometryNode.geometry;\n\n\t\t\tif(geometry.attributes[\"gps-time\"]){\n\t\t\t\tconst bufferAttribute = geometry.attributes[\"gps-time\"];\n\t\t\t\tconst attGPS = octree.getAttribute(\"gps-time\");\n\n\t\t\t\tlet initialRange = attGPS.initialRange;\n\t\t\t\tlet initialRangeSize = initialRange[1] - initialRange[0];\n\n\t\t\t\tlet globalRange = attGPS.range;\n\t\t\t\tlet globalRangeSize = globalRange[1] - globalRange[0];\n\n\t\t\t\tlet scale = initialRangeSize / globalRangeSize;\n\t\t\t\tlet offset = -(globalRange[0] - initialRange[0]) / initialRangeSize;\n\n\t\t\t\tshader.setUniform1f(\"uGpsScale\", scale);\n\t\t\t\tshader.setUniform1f(\"uGpsOffset\", offset);\n\t\t\t\t//shader.setUniform2f(\"uFilterGPSTimeClipRange\", [-Infinity, Infinity]);\n\n\t\t\t\tlet uFilterGPSTimeClipRange = material.uniforms.uFilterGPSTimeClipRange.value;\n\t\t\t\t// let gpsCliPRangeMin = uFilterGPSTimeClipRange[0]\n\t\t\t\t// let gpsCliPRangeMax = uFilterGPSTimeClipRange[1]\n\t\t\t\t// shader.setUniform2f(\"uFilterGPSTimeClipRange\", [gpsCliPRangeMin, gpsCliPRangeMax]);\n\n\t\t\t\tlet normalizedClipRange = [\n\t\t\t\t\t(uFilterGPSTimeClipRange[0] - globalRange[0]) / globalRangeSize,\n\t\t\t\t\t(uFilterGPSTimeClipRange[1] - globalRange[0]) / globalRangeSize,\n\t\t\t\t];\n\n\t\t\t\tshader.setUniform2f(\"uFilterGPSTimeClipRange\", normalizedClipRange);\n\n\n\n\t\t\t\t// // ranges in full gps coordinate system\n\t\t\t\t// const globalRange = attGPS.range;\n\t\t\t\t// const bufferRange = bufferAttribute.potree.range;\n\n\t\t\t\t// // ranges in [0, 1]\n\t\t\t\t// // normalizedGlobalRange = [0, 1]\n\t\t\t\t// // normalizedBufferRange: norm buffer within norm global range e.g. [0.2, 0.8]\n\t\t\t\t// const globalWidth = globalRange[1] - globalRange[0];\n\t\t\t\t// const normalizedBufferRange = [\n\t\t\t\t// \t(bufferRange[0] - globalRange[0]) / globalWidth,\n\t\t\t\t// \t(bufferRange[1] - globalRange[0]) / globalWidth,\n\t\t\t\t// ];\n\n\t\t\t\t// shader.setUniform2f(\"uNormalizedGpsBufferRange\", normalizedBufferRange);\n\n\t\t\t\t// let uFilterGPSTimeClipRange = material.uniforms.uFilterGPSTimeClipRange.value;\n\t\t\t\t// let gpsCliPRangeMin = uFilterGPSTimeClipRange[0]\n\t\t\t\t// let gpsCliPRangeMax = uFilterGPSTimeClipRange[1]\n\t\t\t\t// shader.setUniform2f(\"uFilterGPSTimeClipRange\", [gpsCliPRangeMin, gpsCliPRangeMax]);\n\n\t\t\t\t// shader.setUniform1f(\"uGpsScale\", bufferAttribute.potree.scale);\n\t\t\t\t// shader.setUniform1f(\"uGpsOffset\", bufferAttribute.potree.offset);\n\t\t\t}\n\n\t\t\t{\n\t\t\t\tlet uFilterReturnNumberRange = material.uniforms.uFilterReturnNumberRange.value;\n\t\t\t\tlet uFilterNumberOfReturnsRange = material.uniforms.uFilterNumberOfReturnsRange.value;\n\t\t\t\tlet uFilterPointSourceIDClipRange = material.uniforms.uFilterPointSourceIDClipRange.value;\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tshader.setUniform2f(\"uFilterReturnNumberRange\", uFilterReturnNumberRange);\n\t\t\t\tshader.setUniform2f(\"uFilterNumberOfReturnsRange\", uFilterNumberOfReturnsRange);\n\t\t\t\tshader.setUniform2f(\"uFilterPointSourceIDClipRange\", uFilterPointSourceIDClipRange);\n\t\t\t}\n\n\t\t\tlet webglBuffer = null;\n\t\t\tif(!this.buffers.has(geometry)){\n\t\t\t\twebglBuffer = this.createBuffer(geometry);\n\t\t\t\tthis.buffers.set(geometry, webglBuffer);\n\t\t\t}else{\n\t\t\t\twebglBuffer = this.buffers.get(geometry);\n\t\t\t\tfor(let attributeName in geometry.attributes){\n\t\t\t\t\tlet attribute = geometry.attributes[attributeName];\n\n\t\t\t\t\tif(attribute.version > webglBuffer.vbos.get(attributeName).version){\n\t\t\t\t\t\tthis.updateBuffer(geometry);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgl.bindVertexArray(webglBuffer.vao);\n\n\t\t\tlet isExtraAttribute =\n\t\t\t\tattributeLocations[material.activeAttributeName] === undefined\n\t\t\t\t&& Object.keys(geometry.attributes).includes(material.activeAttributeName);\n\n\t\t\tif(isExtraAttribute){\n\n\t\t\t\tconst attributeLocation = attributeLocations[\"aExtra\"].location;\n\n\t\t\t\tfor(const attributeName in geometry.attributes){\n\t\t\t\t\tconst bufferAttribute = geometry.attributes[attributeName];\n\t\t\t\t\tconst vbo = webglBuffer.vbos.get(attributeName);\n\t\t\t\t\t\n\t\t\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vbo.handle);\n\t\t\t\t\tgl.disableVertexAttribArray(attributeLocation);\n\t\t\t\t}\n\n\t\t\t\tconst attName = material.activeAttributeName;\n\t\t\t\tconst bufferAttribute = geometry.attributes[attName];\n\t\t\t\tconst vbo = webglBuffer.vbos.get(attName);\n\n\t\t\t\tif(bufferAttribute !== undefined && vbo !== undefined){\n\t\t\t\t\tlet type = this.glTypeMapping.get(bufferAttribute.array.constructor);\n\t\t\t\t\tlet normalized = bufferAttribute.normalized;\n\n\t\t\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vbo.handle);\n\t\t\t\t\tgl.vertexAttribPointer(attributeLocation, bufferAttribute.itemSize, type, normalized, 0, 0);\n\t\t\t\t\tgl.enableVertexAttribArray(attributeLocation);\n\t\t\t\t}\n\n\n\n\n\t\t\t\t{\n\t\t\t\t\tconst attExtra = octree.pcoGeometry.pointAttributes.attributes\n\t\t\t\t\t\t.find(a => a.name === attName);\n\n\t\t\t\t\tlet range = material.getRange(attName);\n\t\t\t\t\tif(!range){\n\t\t\t\t\t\trange = attExtra.range;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!range){\n\t\t\t\t\t\trange = [0, 1];\n\t\t\t\t\t}\n\n\t\t\t\t\tlet initialRange = attExtra.initialRange;\n\t\t\t\t\tlet initialRangeSize = initialRange[1] - initialRange[0];\n\n\t\t\t\t\tlet globalRange = range;\n\t\t\t\t\tlet globalRangeSize = globalRange[1] - globalRange[0];\n\n\t\t\t\t\tlet scale = initialRangeSize / globalRangeSize;\n\t\t\t\t\tlet offset = -(globalRange[0] - initialRange[0]) / initialRangeSize;\n\n\t\t\t\t\tshader.setUniform1f(\"uExtraScale\", scale);\n\t\t\t\t\tshader.setUniform1f(\"uExtraOffset\", offset);\t\t\t\t\t\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\tfor(const attributeName in geometry.attributes){\n\t\t\t\t\tconst bufferAttribute = geometry.attributes[attributeName];\n\t\t\t\t\tconst vbo = webglBuffer.vbos.get(attributeName);\n\n\n\t\t\t\t\tif(attributeLocations[attributeName] !== undefined){\n\t\t\t\t\t\tconst attributeLocation = attributeLocations[attributeName].location;\n\n\t\t\t\t\t\tlet type = this.glTypeMapping.get(bufferAttribute.array.constructor);\n\t\t\t\t\t\tlet normalized = bufferAttribute.normalized;\n\t\t\t\t\t\t\n\t\t\t\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vbo.handle);\n\t\t\t\t\t\tgl.vertexAttribPointer(attributeLocation, bufferAttribute.itemSize, type, normalized, 0, 0);\n\t\t\t\t\t\tgl.enableVertexAttribArray(attributeLocation);\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet numPoints = webglBuffer.numElements;\n\t\t\tgl.drawArrays(gl.POINTS, 0, numPoints);\n\n\t\t\ti++;\n\t\t}\n\n\t\tgl.bindVertexArray(null);\n\n\t\tif (exports.measureTimings) {\n\t\t\tperformance.mark(\"renderNodes-end\");\n\t\t\tperformance.measure(\"render.renderNodes\", \"renderNodes-start\", \"renderNodes-end\");\n\t\t}\n\t}\n\n\trenderOctree(octree, nodes, camera, target, params = {}){\n\n\t\tlet gl = this.gl;\n\n\t\tlet material = params.material ? params.material : octree.material;\n\t\tlet shadowMaps = params.shadowMaps == null ? [] : params.shadowMaps;\n\t\tlet view = camera.matrixWorldInverse;\n\t\tlet viewInv = camera.matrixWorld;\n\t\tlet proj = camera.projectionMatrix;\n\t\tlet projInv = new THREE.Matrix4().getInverse(proj);\n\t\tlet worldView = new THREE.Matrix4();\n\n\t\tlet shader = null;\n\t\tlet visibilityTextureData = null;\n\n\t\tlet currentTextureBindingPoint = 0;\n\n\t\tif (material.pointSizeType >= 0) {\n\t\t\tif (material.pointSizeType === PointSizeType.ADAPTIVE ||\n\t\t\t\tmaterial.activeAttributeName === \"level of detail\") {\n\n\t\t\t\tlet vnNodes = (params.vnTextureNodes != null) ? params.vnTextureNodes : nodes;\n\t\t\t\tvisibilityTextureData = octree.computeVisibilityTextureData(vnNodes, camera);\n\n\t\t\t\tconst vnt = material.visibleNodesTexture;\n\t\t\t\tconst data = vnt.image.data;\n\t\t\t\tdata.set(visibilityTextureData.data);\n\t\t\t\tvnt.needsUpdate = true;\n\n\t\t\t}\n\t\t}\n\n\t\t{ // UPDATE SHADER AND TEXTURES\n\t\t\tif (!this.shaders.has(material)) {\n\t\t\t\tlet [vs, fs] = [material.vertexShader, material.fragmentShader];\n\t\t\t\tlet shader = new Shader(gl, \"pointcloud\", vs, fs);\n\n\t\t\t\tthis.shaders.set(material, shader);\n\t\t\t}\n\n\t\t\tshader = this.shaders.get(material);\n\n\t\t\t//if(material.needsUpdate){\n\t\t\t{\n\t\t\t\tlet [vs, fs] = [material.vertexShader, material.fragmentShader];\n\n\t\t\t\tlet numSnapshots = material.snapEnabled ? material.numSnapshots : 0;\n\t\t\t\tlet numClipBoxes = (material.clipBoxes && material.clipBoxes.length) ? material.clipBoxes.length : 0;\n\t\t\t\tlet numClipSpheres = (params.clipSpheres && params.clipSpheres.length) ? params.clipSpheres.length : 0;\n\t\t\t\tlet numClipPolygons = (material.clipPolygons && material.clipPolygons.length) ? material.clipPolygons.length : 0;\n\n\t\t\t\tlet defines = [\n\t\t\t\t\t`#define num_shadowmaps ${shadowMaps.length}`,\n\t\t\t\t\t`#define num_snapshots ${numSnapshots}`,\n\t\t\t\t\t`#define num_clipboxes ${numClipBoxes}`,\n\t\t\t\t\t`#define num_clipspheres ${numClipSpheres}`,\n\t\t\t\t\t`#define num_clippolygons ${numClipPolygons}`,\n\t\t\t\t];\n\n\n\t\t\t\tif(octree.pcoGeometry.root.isLoaded()){\n\t\t\t\t\tlet attributes = octree.pcoGeometry.root.geometry.attributes;\n\n\t\t\t\t\tif(attributes[\"gps-time\"]){\n\t\t\t\t\t\tdefines.push(\"#define clip_gps_enabled\");\n\t\t\t\t\t}\n\n\t\t\t\t\tif(attributes[\"return number\"]){\n\t\t\t\t\t\tdefines.push(\"#define clip_return_number_enabled\");\n\t\t\t\t\t}\n\n\t\t\t\t\tif(attributes[\"number of returns\"]){\n\t\t\t\t\t\tdefines.push(\"#define clip_number_of_returns_enabled\");\n\t\t\t\t\t}\n\n\t\t\t\t\tif(attributes[\"source id\"] || attributes[\"point source id\"]){\n\t\t\t\t\t\tdefines.push(\"#define clip_point_source_id_enabled\");\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tlet definesString = defines.join(\"\\n\");\n\n\t\t\t\tlet vsVersionIndex = vs.indexOf(\"#version \");\n\t\t\t\tlet fsVersionIndex = fs.indexOf(\"#version \");\n\n\t\t\t\tif(vsVersionIndex >= 0){\n\t\t\t\t\tvs = vs.replace(/(#version .*)/, `$1\\n${definesString}`)\n\t\t\t\t}else{\n\t\t\t\t\tvs = `${definesString}\\n${vs}`;\n\t\t\t\t}\n\n\t\t\t\tif(fsVersionIndex >= 0){\n\t\t\t\t\tfs = fs.replace(/(#version .*)/, `$1\\n${definesString}`)\n\t\t\t\t}else{\n\t\t\t\t\tfs = `${definesString}\\n${fs}`;\n\t\t\t\t}\n\n\n\t\t\t\tshader.update(vs, fs);\n\n\t\t\t\tmaterial.needsUpdate = false;\n\t\t\t}\n\n\t\t\tfor (let uniformName of Object.keys(material.uniforms)) {\n\t\t\t\tlet uniform = material.uniforms[uniformName];\n\n\t\t\t\tif (uniform.type == \"t\") {\n\n\t\t\t\t\tlet texture = uniform.value;\n\n\t\t\t\t\tif (!texture) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!this.textures.has(texture)) {\n\t\t\t\t\t\tlet webglTexture = new WebGLTexture(gl, texture);\n\n\t\t\t\t\t\tthis.textures.set(texture, webglTexture);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet webGLTexture = this.textures.get(texture);\n\t\t\t\t\twebGLTexture.update();\n\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tgl.useProgram(shader.program);\n\n\t\tlet transparent = false;\n\t\tif(params.transparent !== undefined){\n\t\t\ttransparent = params.transparent && material.opacity < 1;\n\t\t}else{\n\t\t\ttransparent = material.opacity < 1;\n\t\t}\n\n\t\tif (transparent){\n\t\t\tgl.enable(gl.BLEND);\n\t\t\tgl.blendFunc(gl.SRC_ALPHA, gl.ONE);\n\t\t\tgl.depthMask(false);\n\t\t\tgl.disable(gl.DEPTH_TEST);\n\t\t} else {\n\t\t\tgl.disable(gl.BLEND);\n\t\t\tgl.depthMask(true);\n\t\t\tgl.enable(gl.DEPTH_TEST);\n\t\t}\n\n\t\tif(params.blendFunc !== undefined){\n\t\t\tgl.enable(gl.BLEND);\n\t\t\tgl.blendFunc(...params.blendFunc);\n\t\t}\n\n\t\tif(params.depthTest !== undefined){\n\t\t\tif(params.depthTest === true){\n\t\t\t\tgl.enable(gl.DEPTH_TEST);\n\t\t\t}else{\n\t\t\t\tgl.disable(gl.DEPTH_TEST);\n\t\t\t}\n\t\t}\n\n\t\tif(params.depthWrite !== undefined){\n\t\t\t if(params.depthWrite === true){\n\t\t\t\t gl.depthMask(true);\n\t\t\t }else{\n\t\t\t\t gl.depthMask(false);\n\t\t\t }\n\t\t\t \n\t\t}\n\n\n\t\t{ // UPDATE UNIFORMS\n\t\t\tshader.setUniformMatrix4(\"projectionMatrix\", proj);\n\t\t\tshader.setUniformMatrix4(\"viewMatrix\", view);\n\t\t\tshader.setUniformMatrix4(\"uViewInv\", viewInv);\n\t\t\tshader.setUniformMatrix4(\"uProjInv\", projInv);\n\n\t\t\tlet screenWidth = target ? target.width : material.screenWidth;\n\t\t\tlet screenHeight = target ? target.height : material.screenHeight;\n\n\t\t\tshader.setUniform1f(\"uScreenWidth\", screenWidth);\n\t\t\tshader.setUniform1f(\"uScreenHeight\", screenHeight);\n\t\t\tshader.setUniform1f(\"fov\", Math.PI * camera.fov / 180);\n\t\t\tshader.setUniform1f(\"near\", camera.near);\n\t\t\tshader.setUniform1f(\"far\", camera.far);\n\t\t\t\n\t\t\tif(camera instanceof THREE.OrthographicCamera){\n\t\t\t\tshader.setUniform(\"uUseOrthographicCamera\", true);\n\t\t\t\tshader.setUniform(\"uOrthoWidth\", camera.right - camera.left); \n\t\t\t\tshader.setUniform(\"uOrthoHeight\", camera.top - camera.bottom);\n\t\t\t}else{\n\t\t\t\tshader.setUniform(\"uUseOrthographicCamera\", false);\n\t\t\t}\n\n\t\t\tif(material.clipBoxes.length + material.clipPolygons.length === 0){\n\t\t\t\tshader.setUniform1i(\"clipTask\", ClipTask.NONE);\n\t\t\t}else{\n\t\t\t\tshader.setUniform1i(\"clipTask\", material.clipTask);\n\t\t\t}\n\n\t\t\tshader.setUniform1i(\"clipMethod\", material.clipMethod);\n\n\t\t\tif (material.clipBoxes && material.clipBoxes.length > 0) {\n\t\t\t\t//let flattenedMatrices = [].concat(...material.clipBoxes.map(c => c.inverse.elements));\n\n\t\t\t\t//const lClipBoxes = shader.uniformLocations[\"clipBoxes[0]\"];\n\t\t\t\t//gl.uniformMatrix4fv(lClipBoxes, false, flattenedMatrices);\n\n\t\t\t\tconst lClipBoxes = shader.uniformLocations[\"clipBoxes[0]\"];\n\t\t\t\tgl.uniformMatrix4fv(lClipBoxes, false, material.uniforms.clipBoxes.value);\n\t\t\t}\n\n\t\t\t// TODO CLIPSPHERES\n\t\t\tif(params.clipSpheres && params.clipSpheres.length > 0){\n\n\t\t\t\tlet clipSpheres = params.clipSpheres;\n\n\t\t\t\tlet matrices = [];\n\t\t\t\tfor(let clipSphere of clipSpheres){\n\t\t\t\t\t//let mScale = new THREE.Matrix4().makeScale(...clipSphere.scale.toArray());\n\t\t\t\t\t//let mTranslate = new THREE.Matrix4().makeTranslation(...clipSphere.position.toArray());\n\n\t\t\t\t\t//let clipToWorld = new THREE.Matrix4().multiplyMatrices(mTranslate, mScale);\n\t\t\t\t\tlet clipToWorld = clipSphere.matrixWorld;\n\t\t\t\t\tlet viewToWorld = camera.matrixWorld\n\t\t\t\t\tlet worldToClip = new THREE.Matrix4().getInverse(clipToWorld);\n\n\t\t\t\t\tlet viewToClip = new THREE.Matrix4().multiplyMatrices(worldToClip, viewToWorld);\n\n\t\t\t\t\tmatrices.push(viewToClip);\n\t\t\t\t}\n\n\t\t\t\tlet flattenedMatrices = [].concat(...matrices.map(matrix => matrix.elements));\n\n\t\t\t\tconst lClipSpheres = shader.uniformLocations[\"uClipSpheres[0]\"];\n\t\t\t\tgl.uniformMatrix4fv(lClipSpheres, false, flattenedMatrices);\n\t\t\t\t\n\t\t\t\t//const lClipSpheres = shader.uniformLocations[\"uClipSpheres[0]\"];\n\t\t\t\t//gl.uniformMatrix4fv(lClipSpheres, false, material.uniforms.clipSpheres.value);\n\t\t\t}\n\n\n\t\t\tshader.setUniform1f(\"size\", material.size);\n\t\t\tshader.setUniform1f(\"maxSize\", material.uniforms.maxSize.value);\n\t\t\tshader.setUniform1f(\"minSize\", material.uniforms.minSize.value);\n\n\n\t\t\t// uniform float uPCIndex\n\t\t\tshader.setUniform1f(\"uOctreeSpacing\", material.spacing);\n\t\t\tshader.setUniform(\"uOctreeSize\", material.uniforms.octreeSize.value);\n\n\n\t\t\t//uniform vec3 uColor;\n\t\t\tshader.setUniform3f(\"uColor\", material.color.toArray());\n\t\t\t//uniform float opacity;\n\t\t\tshader.setUniform1f(\"uOpacity\", material.opacity);\n\n\t\t\tshader.setUniform2f(\"elevationRange\", material.elevationRange);\n\t\t\tshader.setUniform2f(\"intensityRange\", material.intensityRange);\n\n\n\t\t\tshader.setUniform3f(\"uIntensity_gbc\", [\n\t\t\t\tmaterial.intensityGamma, \n\t\t\t\tmaterial.intensityBrightness, \n\t\t\t\tmaterial.intensityContrast\n\t\t\t]);\n\n\t\t\tshader.setUniform3f(\"uRGB_gbc\", [\n\t\t\t\tmaterial.rgbGamma, \n\t\t\t\tmaterial.rgbBrightness, \n\t\t\t\tmaterial.rgbContrast\n\t\t\t]);\n\n\t\t\tshader.setUniform1f(\"uTransition\", material.transition);\n\t\t\tshader.setUniform1f(\"wRGB\", material.weightRGB);\n\t\t\tshader.setUniform1f(\"wIntensity\", material.weightIntensity);\n\t\t\tshader.setUniform1f(\"wElevation\", material.weightElevation);\n\t\t\tshader.setUniform1f(\"wClassification\", material.weightClassification);\n\t\t\tshader.setUniform1f(\"wReturnNumber\", material.weightReturnNumber);\n\t\t\tshader.setUniform1f(\"wSourceID\", material.weightSourceID);\n\n\t\t\tshader.setUniform(\"backfaceCulling\", material.uniforms.backfaceCulling.value);\n\n\t\t\tlet vnWebGLTexture = this.textures.get(material.visibleNodesTexture);\n\t\t\tif(vnWebGLTexture){\n\t\t\t\tshader.setUniform1i(\"visibleNodesTexture\", currentTextureBindingPoint);\n\t\t\t\tgl.activeTexture(gl.TEXTURE0 + currentTextureBindingPoint);\n\t\t\t\tgl.bindTexture(vnWebGLTexture.target, vnWebGLTexture.id);\n\t\t\t\tcurrentTextureBindingPoint++;\n\t\t\t}\n\n\t\t\tlet gradientTexture = this.textures.get(material.gradientTexture);\n\t\t\tshader.setUniform1i(\"gradient\", currentTextureBindingPoint);\n\t\t\tgl.activeTexture(gl.TEXTURE0 + currentTextureBindingPoint);\n\t\t\tgl.bindTexture(gradientTexture.target, gradientTexture.id);\n\n\t\t\tconst repeat = material.elevationGradientRepeat;\n\t\t\tif(repeat === ElevationGradientRepeat.REPEAT){\n\t\t\t\tgl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_S, gl.REPEAT);\n\t\t\t\tgl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_T, gl.REPEAT);\n\t\t\t}else if(repeat === ElevationGradientRepeat.MIRRORED_REPEAT){\n\t\t\t\tgl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_S, gl.MIRRORED_REPEAT);\n\t\t\t\tgl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_T, gl.MIRRORED_REPEAT);\n\t\t\t}else{\n\t\t\t\tgl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n\t\t\t\tgl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\t\t\t}\n\t\t\tcurrentTextureBindingPoint++;\n\n\t\t\tlet classificationTexture = this.textures.get(material.classificationTexture);\n\t\t\tshader.setUniform1i(\"classificationLUT\", currentTextureBindingPoint);\n\t\t\tgl.activeTexture(gl.TEXTURE0 + currentTextureBindingPoint);\n\t\t\tgl.bindTexture(classificationTexture.target, classificationTexture.id);\n\t\t\tcurrentTextureBindingPoint++;\n\n\t\t\tlet matcapTexture = this.textures.get(material.matcapTexture);\n\t\t\tshader.setUniform1i(\"matcapTextureUniform\", currentTextureBindingPoint);\n\t\t\tgl.activeTexture(gl.TEXTURE0 + currentTextureBindingPoint);\n\t\t\tgl.bindTexture(matcapTexture.target, matcapTexture.id);\n\t\t\tcurrentTextureBindingPoint++;\n\n\n\t\t\tif (material.snapEnabled === true) {\n\n\t\t\t\t{\n\t\t\t\t\tconst lSnapshot = shader.uniformLocations[\"uSnapshot[0]\"];\n\t\t\t\t\tconst lSnapshotDepth = shader.uniformLocations[\"uSnapshotDepth[0]\"];\n\n\t\t\t\t\tlet bindingStart = currentTextureBindingPoint;\n\t\t\t\t\tlet lSnapshotBindingPoints = new Array(5).fill(bindingStart).map((a, i) => (a + i));\n\t\t\t\t\tlet lSnapshotDepthBindingPoints = new Array(5)\n\t\t\t\t\t\t.fill(1 + Math.max(...lSnapshotBindingPoints))\n\t\t\t\t\t\t.map((a, i) => (a + i));\n\t\t\t\t\tcurrentTextureBindingPoint = 1 + Math.max(...lSnapshotDepthBindingPoints);\n\n\t\t\t\t\tgl.uniform1iv(lSnapshot, lSnapshotBindingPoints);\n\t\t\t\t\tgl.uniform1iv(lSnapshotDepth, lSnapshotDepthBindingPoints);\n\n\t\t\t\t\tfor (let i = 0; i < 5; i++) {\n\t\t\t\t\t\tlet texture = material.uniforms[`uSnapshot`].value[i];\n\t\t\t\t\t\tlet textureDepth = material.uniforms[`uSnapshotDepth`].value[i];\n\n\t\t\t\t\t\tif (!texture) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet snapTexture = this.threeRenderer.properties.get(texture).__webglTexture;\n\t\t\t\t\t\tlet snapTextureDepth = this.threeRenderer.properties.get(textureDepth).__webglTexture;\n\n\t\t\t\t\t\tlet bindingPoint = lSnapshotBindingPoints[i];\n\t\t\t\t\t\tlet depthBindingPoint = lSnapshotDepthBindingPoints[i];\n\n\t\t\t\t\t\tgl.activeTexture(gl[`TEXTURE${bindingPoint}`]);\n\t\t\t\t\t\tgl.bindTexture(gl.TEXTURE_2D, snapTexture);\n\n\t\t\t\t\t\tgl.activeTexture(gl[`TEXTURE${depthBindingPoint}`]);\n\t\t\t\t\t\tgl.bindTexture(gl.TEXTURE_2D, snapTextureDepth);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t{\n\t\t\t\t\tlet flattenedMatrices = [].concat(...material.uniforms.uSnapView.value.map(c => c.elements));\n\t\t\t\t\tconst lSnapView = shader.uniformLocations[\"uSnapView[0]\"];\n\t\t\t\t\tgl.uniformMatrix4fv(lSnapView, false, flattenedMatrices);\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tlet flattenedMatrices = [].concat(...material.uniforms.uSnapProj.value.map(c => c.elements));\n\t\t\t\t\tconst lSnapProj = shader.uniformLocations[\"uSnapProj[0]\"];\n\t\t\t\t\tgl.uniformMatrix4fv(lSnapProj, false, flattenedMatrices);\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tlet flattenedMatrices = [].concat(...material.uniforms.uSnapProjInv.value.map(c => c.elements));\n\t\t\t\t\tconst lSnapProjInv = shader.uniformLocations[\"uSnapProjInv[0]\"];\n\t\t\t\t\tgl.uniformMatrix4fv(lSnapProjInv, false, flattenedMatrices);\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tlet flattenedMatrices = [].concat(...material.uniforms.uSnapViewInv.value.map(c => c.elements));\n\t\t\t\t\tconst lSnapViewInv = shader.uniformLocations[\"uSnapViewInv[0]\"];\n\t\t\t\t\tgl.uniformMatrix4fv(lSnapViewInv, false, flattenedMatrices);\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\tthis.renderNodes(octree, nodes, visibilityTextureData, camera, target, shader, params);\n\n\t\tgl.activeTexture(gl.TEXTURE2);\n\t\tgl.bindTexture(gl.TEXTURE_2D, null);\n\t\tgl.activeTexture(gl.TEXTURE0);\n\t}\n\n\trender(scene, camera, target = null, params = {}) {\n\n\t\tconst gl = this.gl;\n\n\t\t// PREPARE \n\t\tif (target != null) {\n\t\t\tthis.threeRenderer.setRenderTarget(target);\n\t\t}\n\n\t\tcamera.updateProjectionMatrix();\n\n\t\tconst traversalResult = this.traverse(scene);\n\n\n\t\t// RENDER\n\t\tfor (const octree of traversalResult.octrees) {\n\t\t\tlet nodes = octree.visibleNodes;\n\t\t\tthis.renderOctree(octree, nodes, camera, target, params);\n\t\t}\n\n\n\t\t// CLEANUP\n\t\tgl.activeTexture(gl.TEXTURE1);\n\t\tgl.bindTexture(gl.TEXTURE_2D, null)\n\n\t\tthis.threeRenderer.state.reset();\n\t}\n\n\n\n};\n\n\n\n\n\n\n\n\n","\nimport {Points} from \"./Points.js\";\n\nexport class ProfileData {\n\tconstructor (profile) {\n\t\tthis.profile = profile;\n\n\t\tthis.segments = [];\n\t\tthis.boundingBox = new THREE.Box3();\n\n\t\tfor (let i = 0; i < profile.points.length - 1; i++) {\n\t\t\tlet start = profile.points[i];\n\t\t\tlet end = profile.points[i + 1];\n\n\t\t\tlet startGround = new THREE.Vector3(start.x, start.y, 0);\n\t\t\tlet endGround = new THREE.Vector3(end.x, end.y, 0);\n\n\t\t\tlet center = new THREE.Vector3().addVectors(endGround, startGround).multiplyScalar(0.5);\n\t\t\tlet length = startGround.distanceTo(endGround);\n\t\t\tlet side = new THREE.Vector3().subVectors(endGround, startGround).normalize();\n\t\t\tlet up = new THREE.Vector3(0, 0, 1);\n\t\t\tlet forward = new THREE.Vector3().crossVectors(side, up).normalize();\n\t\t\tlet N = forward;\n\t\t\tlet cutPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(N, startGround);\n\t\t\tlet halfPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(side, center);\n\n\t\t\tlet segment = {\n\t\t\t\tstart: start,\n\t\t\t\tend: end,\n\t\t\t\tcutPlane: cutPlane,\n\t\t\t\thalfPlane: halfPlane,\n\t\t\t\tlength: length,\n\t\t\t\tpoints: new Points()\n\t\t\t};\n\n\t\t\tthis.segments.push(segment);\n\t\t}\n\t}\n\n\tsize () {\n\t\tlet size = 0;\n\t\tfor (let segment of this.segments) {\n\t\t\tsize += segment.points.numPoints;\n\t\t}\n\n\t\treturn size;\n\t}\n};\n\nexport class ProfileRequest {\n\tconstructor (pointcloud, profile, maxDepth, callback) {\n\t\tthis.pointcloud = pointcloud;\n\t\tthis.profile = profile;\n\t\tthis.maxDepth = maxDepth || Number.MAX_VALUE;\n\t\tthis.callback = callback;\n\t\tthis.temporaryResult = new ProfileData(this.profile);\n\t\tthis.pointsServed = 0;\n\t\tthis.highestLevelServed = 0;\n\n\t\tthis.priorityQueue = new BinaryHeap(function (x) { return 1 / x.weight; });\n\n\t\tthis.initialize();\n\t}\n\n\tinitialize () {\n\t\tthis.priorityQueue.push({node: this.pointcloud.pcoGeometry.root, weight: Infinity});\n\t};\n\n\t// traverse the node and add intersecting descendants to queue\n\ttraverse (node) {\n\t\tlet stack = [];\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\tlet child = node.children[i];\n\t\t\tif (child && this.pointcloud.nodeIntersectsProfile(child, this.profile)) {\n\t\t\t\tstack.push(child);\n\t\t\t}\n\t\t}\n\n\t\twhile (stack.length > 0) {\n\t\t\tlet node = stack.pop();\n\t\t\tlet weight = node.boundingSphere.radius;\n\n\t\t\tthis.priorityQueue.push({node: node, weight: weight});\n\n\t\t\t// add children that intersect the cutting plane\n\t\t\tif (node.level < this.maxDepth) {\n\t\t\t\tfor (let i = 0; i < 8; i++) {\n\t\t\t\t\tlet child = node.children[i];\n\t\t\t\t\tif (child && this.pointcloud.nodeIntersectsProfile(child, this.profile)) {\n\t\t\t\t\t\tstack.push(child);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tupdate(){\n\t\tif(!this.updateGeneratorInstance){\n\t\t\tthis.updateGeneratorInstance = this.updateGenerator();\n\t\t}\n\n\t\tlet result = this.updateGeneratorInstance.next();\n\t\tif(result.done){\n\t\t\tthis.updateGeneratorInstance = null;\n\t\t}\n\t}\n\n\t* updateGenerator(){\n\t\t// load nodes in queue\n\t\t// if hierarchy expands, also load nodes from expanded hierarchy\n\t\t// once loaded, add data to this.points and remove node from queue\n\t\t// only evaluate 1-50 nodes per frame to maintain responsiveness\n\n\t\tlet start = performance.now();\n\n\t\tlet maxNodesPerUpdate = 1;\n\t\tlet intersectedNodes = [];\n\n\t\tfor (let i = 0; i < Math.min(maxNodesPerUpdate, this.priorityQueue.size()); i++) {\n\t\t\tlet element = this.priorityQueue.pop();\n\t\t\tlet node = element.node;\n\n\t\t\tif(node.level > this.maxDepth){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (node.loaded) {\n\t\t\t\t// add points to result\n\t\t\t\tintersectedNodes.push(node);\n\t\t\t\texports.lru.touch(node);\n\t\t\t\tthis.highestLevelServed = Math.max(node.getLevel(), this.highestLevelServed);\n\n\t\t\t\tvar geom = node.pcoGeometry;\n\t\t\t\tvar hierarchyStepSize = geom ? geom.hierarchyStepSize : 1;\n\n\t\t\t\tvar doTraverse = node.getLevel() === 0 ||\n\t\t\t\t\t(node.level % hierarchyStepSize === 0 && node.hasChildren);\n\n\t\t\t\tif (doTraverse) {\n\t\t\t\t\tthis.traverse(node);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnode.load();\n\t\t\t\tthis.priorityQueue.push(element);\n\t\t\t}\n\t\t}\n\n\t\tif (intersectedNodes.length > 0) {\n\n\t\t\tfor(let done of this.getPointsInsideProfile(intersectedNodes, this.temporaryResult)){\n\t\t\t\tif(!done){\n\t\t\t\t\t//console.log(\"updateGenerator yields\");\n\t\t\t\t\tyield false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.temporaryResult.size() > 100) {\n\t\t\t\tthis.pointsServed += this.temporaryResult.size();\n\t\t\t\tthis.callback.onProgress({request: this, points: this.temporaryResult});\n\t\t\t\tthis.temporaryResult = new ProfileData(this.profile);\n\t\t\t}\n\t\t}\n\n\t\tif (this.priorityQueue.size() === 0) {\n\t\t\t// we're done! inform callback and remove from pending requests\n\n\t\t\tif (this.temporaryResult.size() > 0) {\n\t\t\t\tthis.pointsServed += this.temporaryResult.size();\n\t\t\t\tthis.callback.onProgress({request: this, points: this.temporaryResult});\n\t\t\t\tthis.temporaryResult = new ProfileData(this.profile);\n\t\t\t}\n\n\t\t\tthis.callback.onFinish({request: this});\n\n\t\t\tlet index = this.pointcloud.profileRequests.indexOf(this);\n\t\t\tif (index >= 0) {\n\t\t\t\tthis.pointcloud.profileRequests.splice(index, 1);\n\t\t\t}\n\t\t}\n\n\t\tyield true;\n\t};\n\n\t* getAccepted(numPoints, node, matrix, segment, segmentDir, points, totalMileage){\n\t\tlet checkpoint = performance.now();\n\n\t\tlet accepted = new Uint32Array(numPoints);\n\t\tlet mileage = new Float64Array(numPoints);\n\t\tlet acceptedPositions = new Float32Array(numPoints * 3);\n\t\tlet numAccepted = 0;\n\n\t\tlet pos = new THREE.Vector3();\n\t\tlet svp = new THREE.Vector3();\n\n\t\tlet view = new Float32Array(node.geometry.attributes.position.array);\n\n\t\tfor (let i = 0; i < numPoints; i++) {\n\n\t\t\tpos.set(\n\t\t\t\tview[i * 3 + 0],\n\t\t\t\tview[i * 3 + 1],\n\t\t\t\tview[i * 3 + 2]);\n\n\t\t\tpos.applyMatrix4(matrix);\n\t\t\tlet distance = Math.abs(segment.cutPlane.distanceToPoint(pos));\n\t\t\tlet centerDistance = Math.abs(segment.halfPlane.distanceToPoint(pos));\n\n\t\t\tif (distance < this.profile.width / 2 && centerDistance < segment.length / 2) {\n\t\t\t\tsvp.subVectors(pos, segment.start);\n\t\t\t\tlet localMileage = segmentDir.dot(svp);\n\n\t\t\t\taccepted[numAccepted] = i;\n\t\t\t\tmileage[numAccepted] = localMileage + totalMileage;\n\t\t\t\tpoints.boundingBox.expandByPoint(pos);\n\n\t\t\t\tpos.sub(this.pointcloud.position);\n\n\t\t\t\tacceptedPositions[3 * numAccepted + 0] = pos.x;\n\t\t\t\tacceptedPositions[3 * numAccepted + 1] = pos.y;\n\t\t\t\tacceptedPositions[3 * numAccepted + 2] = pos.z;\n\n\t\t\t\tnumAccepted++;\n\t\t\t}\n\n\t\t\tif((i % 1000) === 0){\n\t\t\t\tlet duration = performance.now() - checkpoint;\n\t\t\t\tif(duration > 4){\n\t\t\t\t\t//console.log(`getAccepted yield after ${duration}ms`);\n\t\t\t\t\tyield false;\n\t\t\t\t\tcheckpoint = performance.now();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\taccepted = accepted.subarray(0, numAccepted);\n\t\tmileage = mileage.subarray(0, numAccepted);\n\t\tacceptedPositions = acceptedPositions.subarray(0, numAccepted * 3);\n\n\t\t//let end = performance.now();\n\t\t//let duration = end - start;\n\t\t//console.log(\"accepted duration \", duration)\n\n\t\t//console.log(`getAccepted finished`);\n\n\t\tyield [accepted, mileage, acceptedPositions];\n\t}\n\n\t* getPointsInsideProfile(nodes, target){\n\t\tlet checkpoint = performance.now();\n\t\tlet totalMileage = 0;\n\n\t\tlet pointsProcessed = 0;\n\n\t\tfor (let segment of target.segments) {\n\t\t\tfor (let node of nodes) {\n\t\t\t\tlet numPoints = node.numPoints;\n\t\t\t\tlet geometry = node.geometry;\n\n\t\t\t\tif(!numPoints){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t{ // skip if current node doesn't intersect current segment\n\t\t\t\t\tlet bbWorld = node.boundingBox.clone().applyMatrix4(this.pointcloud.matrixWorld);\n\t\t\t\t\tlet bsWorld = bbWorld.getBoundingSphere(new THREE.Sphere());\n\n\t\t\t\t\tlet start = new THREE.Vector3(segment.start.x, segment.start.y, bsWorld.center.z);\n\t\t\t\t\tlet end = new THREE.Vector3(segment.end.x, segment.end.y, bsWorld.center.z);\n\n\t\t\t\t\tlet closest = new THREE.Line3(start, end).closestPointToPoint(bsWorld.center, true, new THREE.Vector3());\n\t\t\t\t\tlet distance = closest.distanceTo(bsWorld.center);\n\n\t\t\t\t\tlet intersects = (distance < (bsWorld.radius + target.profile.width));\n\n\t\t\t\t\tif(!intersects){\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//{// DEBUG\n\t\t\t\t//\tconsole.log(node.name);\n\t\t\t\t//\tlet boxHelper = new Potree.Box3Helper(node.getBoundingBox());\n\t\t\t\t//\tboxHelper.matrixAutoUpdate = false;\n\t\t\t\t//\tboxHelper.matrix.copy(viewer.scene.pointclouds[0].matrixWorld);\n\t\t\t\t//\tviewer.scene.scene.add(boxHelper);\n\t\t\t\t//}\n\n\t\t\t\tlet sv = new THREE.Vector3().subVectors(segment.end, segment.start).setZ(0);\n\t\t\t\tlet segmentDir = sv.clone().normalize();\n\n\t\t\t\tlet points = new Points();\n\n\t\t\t\tlet nodeMatrix = new THREE.Matrix4().makeTranslation(...node.boundingBox.min.toArray());\n\n\t\t\t\tlet matrix = new THREE.Matrix4().multiplyMatrices(\n\t\t\t\t\tthis.pointcloud.matrixWorld, nodeMatrix);\n\n\t\t\t\tpointsProcessed = pointsProcessed + numPoints;\n\n\t\t\t\tlet accepted = null;\n\t\t\t\tlet mileage = null;\n\t\t\t\tlet acceptedPositions = null;\n\t\t\t\tfor(let result of this.getAccepted(numPoints, node, matrix, segment, segmentDir, points,totalMileage)){\n\t\t\t\t\tif(!result){\n\t\t\t\t\t\tlet duration = performance.now() - checkpoint;\n\t\t\t\t\t\t//console.log(`getPointsInsideProfile yield after ${duration}ms`);\n\t\t\t\t\t\tyield false;\n\t\t\t\t\t\tcheckpoint = performance.now();\n\t\t\t\t\t}else{\n\t\t\t\t\t\t[accepted, mileage, acceptedPositions] = result;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet duration = performance.now() - checkpoint;\n\t\t\t\tif(duration > 4){\n\t\t\t\t\t//console.log(`getPointsInsideProfile yield after ${duration}ms`);\n\t\t\t\t\tyield false;\n\t\t\t\t\tcheckpoint = performance.now();\n\t\t\t\t}\n\n\t\t\t\tpoints.data.position = acceptedPositions;\n\n\t\t\t\tlet relevantAttributes = Object.keys(geometry.attributes).filter(a => ![\"position\", \"indices\"].includes(a));\n\t\t\t\tfor(let attributeName of relevantAttributes){\n\n\t\t\t\t\tlet attribute = geometry.attributes[attributeName];\n\t\t\t\t\tlet numElements = attribute.array.length / numPoints;\n\n\t\t\t\t\tif(numElements !== parseInt(numElements)){\n\t\t\t\t\t\tdebugger;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet Type = attribute.array.constructor;\n\n\t\t\t\t\tlet filteredBuffer = new Type(numElements * accepted.length);\n\n\t\t\t\t\tlet source = attribute.array;\n\t\t\t\t\tlet target = filteredBuffer;\n\n\t\t\t\t\tfor(let i = 0; i < accepted.length; i++){\n\n\t\t\t\t\t\tlet index = accepted[i];\n\n\t\t\t\t\t\tlet start = index * numElements;\n\t\t\t\t\t\tlet end = start + numElements;\n\t\t\t\t\t\tlet sub = source.subarray(start, end);\n\n\t\t\t\t\t\ttarget.set(sub, i * numElements);\n\t\t\t\t\t}\n\n\t\t\t\t\tpoints.data[attributeName] = filteredBuffer;\n\t\t\t\t}\n\n\t\t\t\tpoints.data['mileage'] = mileage;\n\t\t\t\tpoints.numPoints = accepted.length;\n\n\t\t\t\tsegment.points.add(points);\n\t\t\t}\n\n\t\t\ttotalMileage += segment.length;\n\t\t}\n\n\t\tfor (let segment of target.segments) {\n\t\t\ttarget.boundingBox.union(segment.points.boundingBox);\n\t\t}\n\n\t\t//console.log(`getPointsInsideProfile finished`);\n\t\tyield true;\n\t};\n\n\tfinishLevelThenCancel () {\n\t\tif (this.cancelRequested) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.maxDepth = this.highestLevelServed;\n\t\tthis.cancelRequested = true;\n\n\t\t//console.log(`maxDepth: ${this.maxDepth}`);\n\t};\n\n\tcancel () {\n\t\tthis.callback.onCancel();\n\n\t\tthis.priorityQueue = new BinaryHeap(function (x) { return 1 / x.weight; });\n\n\t\tlet index = this.pointcloud.profileRequests.indexOf(this);\n\t\tif (index >= 0) {\n\t\t\tthis.pointcloud.profileRequests.splice(index, 1);\n\t\t}\n\t};\n}\n","\nexport class Version{\n\n\tconstructor(version){\n\t\tthis.version = version;\n\t\tlet vmLength = (version.indexOf('.') === -1) ? version.length : version.indexOf('.');\n\t\tthis.versionMajor = parseInt(version.substr(0, vmLength));\n\t\tthis.versionMinor = parseInt(version.substr(vmLength + 1));\n\t\tif (this.versionMinor.length === 0) {\n\t\t\tthis.versionMinor = 0;\n\t\t}\n\t}\n\n\tnewerThan(version){\n\t\tlet v = new Version(version);\n\n\t\tif (this.versionMajor > v.versionMajor) {\n\t\t\treturn true;\n\t\t} else if (this.versionMajor === v.versionMajor && this.versionMinor > v.versionMinor) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tequalOrHigher(version){\n\t\tlet v = new Version(version);\n\n\t\tif (this.versionMajor > v.versionMajor) {\n\t\t\treturn true;\n\t\t} else if (this.versionMajor === v.versionMajor && this.versionMinor >= v.versionMinor) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tupTo(version){\n\t\treturn !this.newerThan(version);\n\t}\n\n}\n\n\n","\nexport class WorkerPool{\n\tconstructor(){\n\t\tthis.workers = {};\n\t}\n\n\tgetWorker(url){\n\t\tif (!this.workers[url]){\n\t\t\tthis.workers[url] = [];\n\t\t}\n\n\t\tif (this.workers[url].length === 0){\n\t\t\tlet worker = new Worker(url);\n\t\t\tthis.workers[url].push(worker);\n\t\t}\n\n\t\tlet worker = this.workers[url].pop();\n\n\t\treturn worker;\n\t}\n\n\treturnWorker(url, worker){\n\t\tthis.workers[url].push(worker);\n\t}\n};\n\n//Potree.workerPool = new Potree.WorkerPool();\n","\r\n\r\nfunction createPointcloudData(pointcloud) {\r\n\r\n\tlet material = pointcloud.material;\r\n\r\n\tlet ranges = [];\r\n\t\r\n\tfor(let [name, value] of material.ranges){\r\n\t\tranges.push({\r\n\t\t\tname: name,\r\n\t\t\tvalue: value,\r\n\t\t});\r\n\t}\r\n\r\n\tif(typeof material.elevationRange[0] === \"number\"){\r\n\t\tranges.push({\r\n\t\t\tname: \"elevationRange\",\r\n\t\t\tvalue: material.elevationRange,\r\n\t\t});\r\n\t}\r\n\tif(typeof material.intensityRange[0] === \"number\"){\r\n\t\tranges.push({\r\n\t\t\tname: \"intensityRange\",\r\n\t\t\tvalue: material.intensityRange,\r\n\t\t});\r\n\t}\r\n\r\n\tlet pointSizeTypeName = Object.entries(Potree.PointSizeType).find(e => e[1] === material.pointSizeType)[0];\r\n\r\n\tlet jsonMaterial = {\r\n\t\tactiveAttributeName: material.activeAttributeName,\r\n\t\tranges: ranges,\r\n\t\tsize: material.size,\r\n\t\tminSize: material.minSize,\r\n\t\tpointSizeType: pointSizeTypeName,\r\n\t\tmatcap: material.matcap,\r\n\t};\r\n\r\n\tconst pcdata = {\r\n\t\tname: pointcloud.name,\r\n\t\turl: pointcloud.pcoGeometry.url,\r\n\t\tposition: pointcloud.position.toArray(),\r\n\t\trotation: pointcloud.rotation.toArray(),\r\n\t\tscale: pointcloud.scale.toArray(),\r\n\t\tmaterial: jsonMaterial,\r\n\t};\r\n\r\n\treturn pcdata;\r\n}\r\n\r\nfunction createProfileData(profile){\r\n\tconst data = {\r\n\t\tuuid: profile.uuid,\r\n\t\tname: profile.name,\r\n\t\tpoints: profile.points.map(p => p.toArray()),\r\n\t\theight: profile.height,\r\n\t\twidth: profile.width,\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createVolumeData(volume){\r\n\tconst data = {\r\n\t\tuuid: volume.uuid,\r\n\t\ttype: volume.constructor.name,\r\n\t\tname: volume.name,\r\n\t\tposition: volume.position.toArray(),\r\n\t\trotation: volume.rotation.toArray(),\r\n\t\tscale: volume.scale.toArray(),\r\n\t\tvisible: volume.visible,\r\n\t\tclip: volume.clip,\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createCameraAnimationData(animation){\r\n\r\n\tconst controlPoints = animation.controlPoints.map( cp => {\r\n\t\tconst cpdata = {\r\n\t\t\tposition: cp.position.toArray(),\r\n\t\t\ttarget: cp.target.toArray(),\r\n\t\t};\r\n\r\n\t\treturn cpdata;\r\n\t});\r\n\r\n\tconst data = {\r\n\t\tuuid: animation.uuid,\r\n\t\tname: animation.name,\r\n\t\tduration: animation.duration,\r\n\t\tt: animation.t,\r\n\t\tcurveType: animation.curveType,\r\n\t\tvisible: animation.visible,\r\n\t\tcontrolPoints: controlPoints,\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createMeasurementData(measurement){\r\n\r\n\tconst data = {\r\n\t\tuuid: measurement.uuid,\r\n\t\tname: measurement.name,\r\n\t\tpoints: measurement.points.map(p => p.position.toArray()),\r\n\t\tshowDistances: measurement.showDistances,\r\n\t\tshowCoordinates: measurement.showCoordinates,\r\n\t\tshowArea: measurement.showArea,\r\n\t\tclosed: measurement.closed,\r\n\t\tshowAngles: measurement.showAngles,\r\n\t\tshowHeight: measurement.showHeight,\r\n\t\tshowCircle: measurement.showCircle,\r\n\t\tshowAzimuth: measurement.showAzimuth,\r\n\t\tshowEdges: measurement.showEdges,\r\n\t\tcolor: measurement.color.toArray(),\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createOrientedImagesData(images){\r\n\tconst data = {\r\n\t\tcameraParamsPath: images.cameraParamsPath,\r\n\t\timageParamsPath: images.imageParamsPath,\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createGeopackageData(geopackage){\r\n\tconst data = {\r\n\t\tpath: geopackage.path,\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createAnnotationData(annotation){\r\n\r\n\tconst data = {\r\n\t\tuuid: annotation.uuid,\r\n\t\ttitle: annotation.title.toString(),\r\n\t\tdescription: annotation.description,\r\n\t\tposition: annotation.position.toArray(),\r\n\t\toffset: annotation.offset.toArray(),\r\n\t\tchildren: [],\r\n\t};\r\n\r\n\tif(annotation.cameraPosition){\r\n\t\tdata.cameraPosition = annotation.cameraPosition.toArray();\r\n\t}\r\n\r\n\tif(annotation.cameraTarget){\r\n\t\tdata.cameraTarget = annotation.cameraTarget.toArray();\r\n\t}\r\n\r\n\tif(typeof annotation.radius !== \"undefined\"){\r\n\t\tdata.radius = annotation.radius;\r\n\t}\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createAnnotationsData(viewer){\r\n\t\r\n\tconst map = new Map();\r\n\r\n\tviewer.scene.annotations.traverseDescendants(a => {\r\n\t\tconst aData = createAnnotationData(a);\r\n\r\n\t\tmap.set(a, aData);\r\n\t});\r\n\r\n\tfor(const [annotation, data] of map){\r\n\t\tfor(const child of annotation.children){\r\n\t\t\tconst childData = map.get(child);\r\n\t\t\tdata.children.push(childData);\r\n\t\t}\r\n\t}\r\n\r\n\tconst annotations = viewer.scene.annotations.children.map(a => map.get(a));\r\n\r\n\treturn annotations;\r\n}\r\n\r\nfunction createSettingsData(viewer){\r\n\treturn {\r\n\t\tpointBudget: viewer.getPointBudget(),\r\n\t\tfov: viewer.getFOV(),\r\n\t\tedlEnabled: viewer.getEDLEnabled(),\r\n\t\tedlRadius: viewer.getEDLRadius(),\r\n\t\tedlStrength: viewer.getEDLStrength(),\r\n\t\tbackground: viewer.getBackground(),\r\n\t\tminNodeSize: viewer.getMinNodeSize(),\r\n\t\tshowBoundingBoxes: viewer.getShowBoundingBox(),\r\n\t};\r\n}\r\n\r\nfunction createSceneContentData(viewer){\r\n\r\n\tconst data = [];\r\n\r\n\tconst potreeObjects = [];\r\n\r\n\tviewer.scene.scene.traverse(node => {\r\n\t\tif(node.potree){\r\n\t\t\tpotreeObjects.push(node);\r\n\t\t}\r\n\t});\r\n\r\n\tfor(const object of potreeObjects){\r\n\t\t\r\n\t\tif(object.potree.file){\r\n\t\t\tconst saveObject = {\r\n\t\t\t\tfile: object.potree.file,\r\n\t\t\t};\r\n\r\n\t\t\tdata.push(saveObject);\r\n\t\t}\r\n\r\n\r\n\t}\r\n\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createViewData(viewer){\r\n\tconst view = viewer.scene.view;\r\n\r\n\tconst data = {\r\n\t\tposition: view.position.toArray(),\r\n\t\ttarget: view.getPivot().toArray(),\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createClassificationData(viewer){\r\n\tconst classifications = viewer.classifications;\r\n\r\n\tconst data = classifications;\r\n\r\n\treturn data;\r\n}\r\n\r\nexport function saveProject(viewer) {\r\n\r\n\tconst scene = viewer.scene;\r\n\r\n\tconst data = {\r\n\t\ttype: \"Potree\",\r\n\t\tversion: 1.7,\r\n\t\tsettings: createSettingsData(viewer),\r\n\t\tview: createViewData(viewer),\r\n\t\tclassification: createClassificationData(viewer),\r\n\t\tpointclouds: scene.pointclouds.map(createPointcloudData),\r\n\t\tmeasurements: scene.measurements.map(createMeasurementData),\r\n\t\tvolumes: scene.volumes.map(createVolumeData),\r\n\t\tcameraAnimations: scene.cameraAnimations.map(createCameraAnimationData),\r\n\t\tprofiles: scene.profiles.map(createProfileData),\r\n\t\tannotations: createAnnotationsData(viewer),\r\n\t\torientedImages: scene.orientedImages.map(createOrientedImagesData),\r\n\t\tgeopackages: scene.geopackages.map(createGeopackageData),\r\n\t\t// objects: createSceneContentData(viewer),\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n","\r\nimport { EventDispatcher } from \"../../EventDispatcher.js\";\r\nimport { Utils } from \"../../utils.js\";\r\n\r\nclass ControlPoint{\r\n\r\n\tconstructor(){\r\n\t\tthis.position = new THREE.Vector3(0, 0, 0);\r\n\t\tthis.target = new THREE.Vector3(0, 0, 0);\r\n\t\tthis.positionHandle = null;\r\n\t\tthis.targetHandle = null;\r\n\t}\r\n\r\n};\r\n\r\n\r\n\r\nexport class CameraAnimation extends EventDispatcher{\r\n\r\n\tconstructor(viewer){\r\n\t\tsuper();\r\n\t\t\r\n\t\tthis.viewer = viewer;\r\n\r\n\t\tthis.selectedElement = null;\r\n\r\n\t\tthis.controlPoints = [];\r\n\r\n\t\tthis.uuid = THREE.Math.generateUUID();\r\n\r\n\t\tthis.node = new THREE.Object3D();\r\n\t\tthis.node.name = \"camera animation\";\r\n\t\tthis.viewer.scene.scene.add(this.node);\r\n\r\n\t\tthis.frustum = this.createFrustum();\r\n\t\tthis.node.add(this.frustum);\r\n\r\n\t\tthis.name = \"Camera Animation\";\r\n\t\tthis.duration = 5;\r\n\t\tthis.t = 0;\r\n\t\t// \"centripetal\", \"chordal\", \"catmullrom\"\r\n\t\tthis.curveType = \"centripetal\" \r\n\t\tthis.visible = true;\r\n\r\n\t\tthis.createUpdateHook();\r\n\t\tthis.createPath();\r\n\t}\r\n\r\n\tstatic defaultFromView(viewer){\r\n\t\tconst animation = new CameraAnimation(viewer);\r\n\r\n\t\tconst camera = viewer.scene.getActiveCamera();\r\n\t\tconst target = viewer.scene.view.getPivot();\r\n\r\n\t\tconst cpCenter = new THREE.Vector3(\r\n\t\t\t0.3 * camera.position.x + 0.7 * target.x,\r\n\t\t\t0.3 * camera.position.y + 0.7 * target.y,\r\n\t\t\t0.3 * camera.position.z + 0.7 * target.z,\r\n\t\t);\r\n\r\n\t\tconst targetCenter = new THREE.Vector3(\r\n\t\t\t0.05 * camera.position.x + 0.95 * target.x,\r\n\t\t\t0.05 * camera.position.y + 0.95 * target.y,\r\n\t\t\t0.05 * camera.position.z + 0.95 * target.z,\r\n\t\t);\r\n\r\n\t\tconst r = camera.position.distanceTo(target) * 0.3;\r\n\r\n\t\t//const dir = target.clone().sub(camera.position).normalize();\r\n\t\tconst angle = Utils.computeAzimuth(camera.position, target);\r\n\r\n\t\tconst n = 5;\r\n\t\tfor(let i = 0; i < n; i++){\r\n\t\t\tlet u = 1.5 * Math.PI * (i / n) + angle;\r\n\r\n\t\t\tconst dx = r * Math.cos(u);\r\n\t\t\tconst dy = r * Math.sin(u);\r\n\r\n\t\t\tconst cpPos = [\r\n\t\t\t\tcpCenter.x + dx,\r\n\t\t\t\tcpCenter.y + dy,\r\n\t\t\t\tcpCenter.z,\r\n\t\t\t];\r\n\r\n\t\t\tconst targetPos = [\r\n\t\t\t\ttargetCenter.x + dx * 0.1,\r\n\t\t\t\ttargetCenter.y + dy * 0.1,\r\n\t\t\t\ttargetCenter.z,\r\n\t\t\t];\r\n\r\n\t\t\tconst cp = animation.createControlPoint();\r\n\t\t\tcp.position.set(...cpPos);\r\n\t\t\tcp.target.set(...targetPos);\r\n\t\t}\r\n\r\n\t\treturn animation;\r\n\t}\r\n\r\n\tcreateUpdateHook(){\r\n\t\tconst viewer = this.viewer;\r\n\r\n\t\tviewer.addEventListener(\"update\", () => {\r\n\r\n\t\t\tconst camera = viewer.scene.getActiveCamera();\r\n\t\t\tconst {width, height} = viewer.renderer.getSize(new THREE.Vector2());\r\n\r\n\t\t\tthis.node.visible = this.visible;\r\n\r\n\t\t\tfor(const cp of this.controlPoints){\r\n\t\t\t\t\r\n\t\t\t\t{ // position\r\n\t\t\t\t\tconst projected = cp.position.clone().project(camera);\r\n\r\n\t\t\t\t\tconst visible = this.visible && (projected.z < 1 && projected.z > -1);\r\n\r\n\t\t\t\t\tif(visible){\r\n\t\t\t\t\t\tconst x = width * (projected.x * 0.5 + 0.5);\r\n\t\t\t\t\t\tconst y = height - height * (projected.y * 0.5 + 0.5);\r\n\r\n\t\t\t\t\t\tcp.positionHandle.svg.style.left = x - cp.positionHandle.svg.clientWidth / 2;\r\n\t\t\t\t\t\tcp.positionHandle.svg.style.top = y - cp.positionHandle.svg.clientHeight / 2;\r\n\t\t\t\t\t\tcp.positionHandle.svg.style.display = \"\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcp.positionHandle.svg.style.display = \"none\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t{ // target\r\n\t\t\t\t\tconst projected = cp.target.clone().project(camera);\r\n\r\n\t\t\t\t\tconst visible = this.visible && (projected.z < 1 && projected.z > -1);\r\n\r\n\t\t\t\t\tif(visible){\r\n\t\t\t\t\t\tconst x = width * (projected.x * 0.5 + 0.5);\r\n\t\t\t\t\t\tconst y = height - height * (projected.y * 0.5 + 0.5);\r\n\r\n\t\t\t\t\t\tcp.targetHandle.svg.style.left = x - cp.targetHandle.svg.clientWidth / 2;\r\n\t\t\t\t\t\tcp.targetHandle.svg.style.top = y - cp.targetHandle.svg.clientHeight / 2;\r\n\t\t\t\t\t\tcp.targetHandle.svg.style.display = \"\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcp.targetHandle.svg.style.display = \"none\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.line.material.resolution.set(width, height);\r\n\r\n\t\t\tthis.updatePath();\r\n\r\n\t\t\t{ // frustum\r\n\t\t\t\tconst frame = this.at(this.t);\r\n\t\t\t\tconst frustum = this.frustum;\r\n\r\n\t\t\t\tfrustum.position.copy(frame.position);\r\n\t\t\t\tfrustum.lookAt(...frame.target.toArray());\r\n\t\t\t\tfrustum.scale.set(20, 20, 20);\r\n\r\n\t\t\t\tfrustum.material.resolution.set(width, height);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tcreateControlPoint(index){\r\n\r\n\t\tif(index === undefined){\r\n\t\t\tindex = this.controlPoints.length;\r\n\t\t}\r\n\r\n\t\tconst cp = new ControlPoint();\r\n\r\n\r\n\t\tif(this.controlPoints.length >= 2 && index === 0){\r\n\t\t\tconst cp1 = this.controlPoints[0];\r\n\t\t\tconst cp2 = this.controlPoints[1];\r\n\r\n\t\t\tconst dir = cp1.position.clone().sub(cp2.position).multiplyScalar(0.5);\r\n\t\t\tcp.position.copy(cp1.position).add(dir);\r\n\r\n\t\t\tconst tDir = cp1.target.clone().sub(cp2.target).multiplyScalar(0.5);\r\n\t\t\tcp.target.copy(cp1.target).add(tDir);\r\n\t\t}else if(this.controlPoints.length >= 2 && index === this.controlPoints.length){\r\n\t\t\tconst cp1 = this.controlPoints[this.controlPoints.length - 2];\r\n\t\t\tconst cp2 = this.controlPoints[this.controlPoints.length - 1];\r\n\r\n\t\t\tconst dir = cp2.position.clone().sub(cp1.position).multiplyScalar(0.5);\r\n\t\t\tcp.position.copy(cp1.position).add(dir);\r\n\r\n\t\t\tconst tDir = cp2.target.clone().sub(cp1.target).multiplyScalar(0.5);\r\n\t\t\tcp.target.copy(cp2.target).add(tDir);\r\n\t\t}else if(this.controlPoints.length >= 2){\r\n\t\t\tconst cp1 = this.controlPoints[index - 1];\r\n\t\t\tconst cp2 = this.controlPoints[index];\r\n\r\n\t\t\tcp.position.copy(cp1.position.clone().add(cp2.position).multiplyScalar(0.5));\r\n\t\t\tcp.target.copy(cp1.target.clone().add(cp2.target).multiplyScalar(0.5));\r\n\t\t}\r\n\r\n\t\t// cp.position.copy(viewer.scene.view.position);\r\n\t\t// cp.target.copy(viewer.scene.view.getPivot());\r\n\r\n\t\tcp.positionHandle = this.createHandle(cp.position);\r\n\t\tcp.targetHandle = this.createHandle(cp.target);\r\n\r\n\t\tthis.controlPoints.splice(index, 0, cp);\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: \"controlpoint_added\",\r\n\t\t\tcontrolpoint: cp,\r\n\t\t});\r\n\r\n\t\treturn cp;\r\n\t}\r\n\r\n\tremoveControlPoint(cp){\r\n\t\tthis.controlPoints = this.controlPoints.filter(_cp => _cp !== cp);\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: \"controlpoint_removed\",\r\n\t\t\tcontrolpoint: cp,\r\n\t\t});\r\n\r\n\t\tcp.positionHandle.svg.remove();\r\n\t\tcp.targetHandle.svg.remove();\r\n\r\n\t\t// TODO destroy cp\r\n\t}\r\n\r\n\tcreatePath(){\r\n\r\n\t\t{ // position\r\n\t\t\tconst geometry = new THREE.LineGeometry();\r\n\r\n\t\t\tlet material = new THREE.LineMaterial({ \r\n\t\t\t\tcolor: 0x00ff00, \r\n\t\t\t\tdashSize: 5, \r\n\t\t\t\tgapSize: 2,\r\n\t\t\t\tlinewidth: 2, \r\n\t\t\t\tresolution: new THREE.Vector2(1000, 1000),\r\n\t\t\t});\r\n\r\n\t\t\tconst line = new THREE.Line2(geometry, material);\r\n\r\n\t\t\tthis.line = line;\r\n\t\t\tthis.node.add(line);\r\n\t\t}\r\n\r\n\t\t{ // target\r\n\t\t\tconst geometry = new THREE.LineGeometry();\r\n\r\n\t\t\tlet material = new THREE.LineMaterial({ \r\n\t\t\t\tcolor: 0x0000ff, \r\n\t\t\t\tdashSize: 5, \r\n\t\t\t\tgapSize: 2,\r\n\t\t\t\tlinewidth: 2, \r\n\t\t\t\tresolution: new THREE.Vector2(1000, 1000),\r\n\t\t\t});\r\n\r\n\t\t\tconst line = new THREE.Line2(geometry, material);\r\n\r\n\t\t\tthis.targetLine = line;\r\n\t\t\tthis.node.add(line);\r\n\t\t}\r\n\t}\r\n\r\n\tcreateFrustum(){\r\n\r\n\t\tconst f = 0.3;\r\n\r\n\t\tconst positions = [\r\n\t\t\t 0, 0, 0,\r\n\t\t\t-f, -f, +1,\r\n\r\n\t\t\t 0, 0, 0,\r\n\t\t\t f, -f, +1,\r\n\r\n\t\t\t 0, 0, 0,\r\n\t\t\t f, f, +1,\r\n\r\n\t\t\t 0, 0, 0,\r\n\t\t\t-f, f, +1,\r\n\r\n\t\t\t-f, -f, +1,\r\n\t\t\t f, -f, +1,\r\n\r\n\t\t\t f, -f, +1,\r\n\t\t\t f, f, +1,\r\n\r\n\t\t\t f, f, +1,\r\n\t\t\t-f, f, +1,\r\n\r\n\t\t\t-f, f, +1,\r\n\t\t\t-f, -f, +1,\r\n\t\t];\r\n\r\n\t\tconst geometry = new THREE.LineGeometry();\r\n\r\n\t\tgeometry.setPositions(positions);\r\n\t\tgeometry.verticesNeedUpdate = true;\r\n\t\tgeometry.computeBoundingSphere();\r\n\r\n\t\tlet material = new THREE.LineMaterial({ \r\n\t\t\tcolor: 0xff0000, \r\n\t\t\tlinewidth: 2, \r\n\t\t\tresolution: new THREE.Vector2(1000, 1000),\r\n\t\t});\r\n\r\n\t\tconst line = new THREE.Line2(geometry, material);\r\n\t\tline.computeLineDistances();\r\n\t\t\r\n\t\treturn line;\r\n\t}\r\n\r\n\tupdatePath(){\r\n\r\n\t\t{ // positions\r\n\t\t\tconst positions = this.controlPoints.map(cp => cp.position);\r\n\t\t\tconst first = positions[0];\r\n\r\n\t\t\tconst curve = new THREE.CatmullRomCurve3(positions);\r\n\t\t\tcurve.curveType = this.curveType;\r\n\r\n\t\t\tconst n = 100;\r\n\r\n\t\t\tconst curvePositions = [];\r\n\t\t\tfor(let k = 0; k <= n; k++){\r\n\t\t\t\tconst t = k / n;\r\n\r\n\t\t\t\tconst position = curve.getPoint(t).sub(first);\r\n\r\n\t\t\t\tcurvePositions.push(position.x, position.y, position.z);\r\n\t\t\t}\r\n\r\n\t\t\tthis.line.geometry.setPositions(curvePositions);\r\n\t\t\tthis.line.geometry.verticesNeedUpdate = true;\r\n\t\t\tthis.line.geometry.computeBoundingSphere();\r\n\t\t\tthis.line.position.copy(first);\r\n\t\t\tthis.line.computeLineDistances();\r\n\r\n\t\t\tthis.cameraCurve = curve;\r\n\t\t}\r\n\r\n\t\t{ // targets\r\n\t\t\tconst positions = this.controlPoints.map(cp => cp.target);\r\n\t\t\tconst first = positions[0];\r\n\r\n\t\t\tconst curve = new THREE.CatmullRomCurve3(positions);\r\n\t\t\tcurve.curveType = this.curveType;\r\n\r\n\t\t\tconst n = 100;\r\n\r\n\t\t\tconst curvePositions = [];\r\n\t\t\tfor(let k = 0; k <= n; k++){\r\n\t\t\t\tconst t = k / n;\r\n\r\n\t\t\t\tconst position = curve.getPoint(t).sub(first);\r\n\r\n\t\t\t\tcurvePositions.push(position.x, position.y, position.z);\r\n\t\t\t}\r\n\r\n\t\t\tthis.targetLine.geometry.setPositions(curvePositions);\r\n\t\t\tthis.targetLine.geometry.verticesNeedUpdate = true;\r\n\t\t\tthis.targetLine.geometry.computeBoundingSphere();\r\n\t\t\tthis.targetLine.position.copy(first);\r\n\t\t\tthis.targetLine.computeLineDistances();\r\n\r\n\t\t\tthis.targetCurve = curve;\r\n\t\t}\r\n\t}\r\n\r\n\tat(t){\r\n\t\t\r\n\t\tif(t > 1){\r\n\t\t\tt = 1;\r\n\t\t}else if(t < 0){\r\n\t\t\tt = 0;\r\n\t\t}\r\n\r\n\t\tconst camPos = this.cameraCurve.getPointAt(t);\r\n\t\tconst target = this.targetCurve.getPointAt(t);\r\n\r\n\t\tconst frame = {\r\n\t\t\tposition: camPos,\r\n\t\t\ttarget: target,\r\n\t\t};\r\n\r\n\t\treturn frame;\r\n\t}\r\n\r\n\tset(t){\r\n\t\tthis.t = t;\r\n\t}\r\n\r\n\tcreateHandle(vector){\r\n\t\t\r\n\t\tconst svgns = \"http://www.w3.org/2000/svg\";\r\n\t\tconst svg = document.createElementNS(svgns, \"svg\");\r\n\r\n\t\tsvg.setAttribute(\"width\", \"2em\");\r\n\t\tsvg.setAttribute(\"height\", \"2em\");\r\n\t\tsvg.setAttribute(\"position\", \"absolute\");\r\n\r\n\t\tsvg.style.left = \"50px\";\r\n\t\tsvg.style.top = \"50px\";\r\n\t\tsvg.style.position = \"absolute\";\r\n\t\tsvg.style.zIndex = \"10000\";\r\n\r\n\t\tconst circle = document.createElementNS(svgns, 'circle');\r\n\t\tcircle.setAttributeNS(null, 'cx', \"1em\");\r\n\t\tcircle.setAttributeNS(null, 'cy', \"1em\");\r\n\t\tcircle.setAttributeNS(null, 'r', \"0.5em\");\r\n\t\tcircle.setAttributeNS(null, 'style', 'fill: red; stroke: black; stroke-width: 0.2em;' );\r\n\t\tsvg.appendChild(circle);\r\n\r\n\r\n\t\tconst element = this.viewer.renderer.domElement.parentElement;\r\n\t\telement.appendChild(svg);\r\n\r\n\r\n\t\tconst startDrag = (evt) => {\r\n\t\t\tthis.selectedElement = svg;\r\n\r\n\t\t\tdocument.addEventListener(\"mousemove\", drag);\r\n\t\t};\r\n\r\n\t\tconst endDrag = (evt) => {\r\n\t\t\tthis.selectedElement = null;\r\n\r\n\t\t\tdocument.removeEventListener(\"mousemove\", drag);\r\n\t\t};\r\n\r\n\t\tconst drag = (evt) => {\r\n\t\t\tif (this.selectedElement) {\r\n\t\t\t\tevt.preventDefault();\r\n\r\n\t\t\t\tconst rect = viewer.renderer.domElement.getBoundingClientRect();\r\n\r\n\t\t\t\tconst x = evt.clientX - rect.x;\r\n\t\t\t\tconst y = evt.clientY - rect.y;\r\n\r\n\t\t\t\tconst {width, height} = this.viewer.renderer.getSize(new THREE.Vector2());\r\n\t\t\t\tconst camera = this.viewer.scene.getActiveCamera();\r\n\t\t\t\t//const cp = this.controlPoints.find(cp => cp.handle.svg === svg);\r\n\t\t\t\tconst projected = vector.clone().project(camera);\r\n\r\n\t\t\t\tprojected.x = ((x / width) - 0.5) / 0.5;\r\n\t\t\t\tprojected.y = (-(y - height) / height - 0.5) / 0.5;\r\n\r\n\t\t\t\tconst unprojected = projected.clone().unproject(camera);\r\n\t\t\t\tvector.set(unprojected.x, unprojected.y, unprojected.z);\r\n\r\n\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tsvg.addEventListener('mousedown', startDrag);\r\n\t\tsvg.addEventListener('mouseup', endDrag);\r\n\r\n\t\tconst handle = {\r\n\t\t\tsvg: svg,\r\n\t\t};\r\n\r\n\t\treturn handle;\r\n\t}\r\n\r\n\tsetVisible(visible){\r\n\t\tthis.node.visible = visible;\r\n\r\n\t\tconst display = visible ? \"\" : \"none\";\r\n\r\n\t\tfor(const cp of this.controlPoints){\r\n\t\t\tcp.positionHandle.svg.style.display = display;\r\n\t\t\tcp.targetHandle.svg.style.display = display;\r\n\t\t}\r\n\r\n\t\tthis.visible = visible;\r\n\t}\r\n\r\n\tsetDuration(duration){\r\n\t\tthis.duration = duration;\r\n\t}\r\n\r\n\tgetDuration(duration){\r\n\t\treturn this.duration;\r\n\t}\r\n\r\n\tplay(){\r\n\r\n\t\tconst tStart = performance.now();\r\n\t\tconst duration = this.duration;\r\n\r\n\t\tconst originalyVisible = this.visible;\r\n\t\tthis.setVisible(false);\r\n\r\n\t\tconst onUpdate = (delta) => {\r\n\r\n\t\t\tlet tNow = performance.now();\r\n\t\t\tlet elapsed = (tNow - tStart) / 1000;\r\n\t\t\tlet t = elapsed / duration;\r\n\r\n\t\t\tthis.set(t);\r\n\r\n\t\t\tconst frame = this.at(t);\r\n\r\n\t\t\tviewer.scene.view.position.copy(frame.position);\r\n\t\t\tviewer.scene.view.lookAt(frame.target);\r\n\r\n\r\n\t\t\tif(t > 1){\r\n\t\t\t\tthis.setVisible(originalyVisible);\r\n\r\n\t\t\t\tthis.viewer.removeEventListener(\"update\", onUpdate);\r\n\t\t\t}\r\n\r\n\t\t};\r\n\r\n\t\tthis.viewer.addEventListener(\"update\", onUpdate);\r\n\r\n\t}\r\n\r\n}\r\n\r\n\r\n","\r\n\r\nimport {Annotation} from \"../Annotation.js\";\r\nimport {Measure} from \"../utils/Measure.js\";\r\nimport {CameraAnimation} from \"../modules/CameraAnimation/CameraAnimation.js\";\r\nimport {Utils} from \"../utils.js\";\r\nimport {PointSizeType} from \"../defines.js\";\r\n\r\nfunction loadPointCloud(viewer, data){\r\n\r\n\tlet loadMaterial = (target) => {\r\n\r\n\t\tif(data.material){\r\n\r\n\t\t\tif(data.material.activeAttributeName != null){\r\n\t\t\t\ttarget.activeAttributeName = data.material.activeAttributeName;\r\n\t\t\t}\r\n\r\n\t\t\tif(data.material.ranges != null){\r\n\t\t\t\tfor(let range of data.material.ranges){\r\n\r\n\t\t\t\t\tif(range.name === \"elevationRange\"){\r\n\t\t\t\t\t\ttarget.elevationRange = range.value;\r\n\t\t\t\t\t}else if(range.name === \"intensityRange\"){\r\n\t\t\t\t\t\ttarget.intensityRange = range.value;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\ttarget.setRange(range.name, range.value);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(data.material.size != null){\r\n\t\t\t\ttarget.size = data.material.size;\r\n\t\t\t}\r\n\r\n\t\t\tif(data.material.minSize != null){\r\n\t\t\t\ttarget.minSize = data.material.minSize;\r\n\t\t\t}\r\n\r\n\t\t\tif(data.material.pointSizeType != null){\r\n\t\t\t\ttarget.pointSizeType = PointSizeType[data.material.pointSizeType];\r\n\t\t\t}\r\n\r\n\t\t\tif(data.material.matcap != null){\r\n\t\t\t\ttarget.matcap = data.material.matcap;\r\n\t\t\t}\r\n\r\n\t\t}else if(data.activeAttributeName != null){\r\n\t\t\ttarget.activeAttributeName = data.activeAttributeName;\r\n\t\t}else{\r\n\t\t\t// no material data\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tconst promise = new Promise((resolve) => {\r\n\r\n\t\tconst names = viewer.scene.pointclouds.map(p => p.name);\r\n\t\tconst alreadyExists = names.includes(data.name);\r\n\r\n\t\tif(alreadyExists){\r\n\t\t\tresolve();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tPotree.loadPointCloud(data.url, data.name, (e) => {\r\n\t\t\tconst {pointcloud} = e;\r\n\r\n\t\t\tpointcloud.position.set(...data.position);\r\n\t\t\tpointcloud.rotation.set(...data.rotation);\r\n\t\t\tpointcloud.scale.set(...data.scale);\r\n\r\n\t\t\tloadMaterial(pointcloud.material);\r\n\r\n\t\t\tviewer.scene.addPointCloud(pointcloud);\r\n\r\n\t\t\tresolve(pointcloud);\r\n\t\t});\r\n\t});\r\n\r\n\treturn promise;\r\n}\r\n\r\nfunction loadMeasurement(viewer, data){\r\n\r\n\tconst duplicate = viewer.scene.measurements.find(measure => measure.uuid === data.uuid);\r\n\tif(duplicate){\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst measure = new Measure();\r\n\r\n\tmeasure.uuid = data.uuid;\r\n\tmeasure.name = data.name;\r\n\tmeasure.showDistances = data.showDistances;\r\n\tmeasure.showCoordinates = data.showCoordinates;\r\n\tmeasure.showArea = data.showArea;\r\n\tmeasure.closed = data.closed;\r\n\tmeasure.showAngles = data.showAngles;\r\n\tmeasure.showHeight = data.showHeight;\r\n\tmeasure.showCircle = data.showCircle;\r\n\tmeasure.showAzimuth = data.showAzimuth;\r\n\tmeasure.showEdges = data.showEdges;\r\n\t// color\r\n\r\n\tfor(const point of data.points){\r\n\t\tconst pos = new THREE.Vector3(...point);\r\n\t\tmeasure.addMarker(pos);\r\n\t}\r\n\r\n\tviewer.scene.addMeasurement(measure);\r\n\r\n}\r\n\r\nfunction loadVolume(viewer, data){\r\n\r\n\tconst duplicate = viewer.scene.volumes.find(volume => volume.uuid === data.uuid);\r\n\tif(duplicate){\r\n\t\treturn;\r\n\t}\r\n\r\n\tlet volume = new Potree[data.type];\r\n\r\n\tvolume.uuid = data.uuid;\r\n\tvolume.name = data.name;\r\n\tvolume.position.set(...data.position);\r\n\tvolume.rotation.set(...data.rotation);\r\n\tvolume.scale.set(...data.scale);\r\n\tvolume.visible = data.visible;\r\n\tvolume.clip = data.clip;\r\n\r\n\tviewer.scene.addVolume(volume);\r\n}\r\n\r\nfunction loadCameraAnimation(viewer, data){\r\n\r\n\tconst duplicate = viewer.scene.cameraAnimations.find(a => a.uuid === data.uuid);\r\n\tif(duplicate){\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst animation = new CameraAnimation(viewer);\r\n\r\n\tanimation.uuid = data.uuid;\r\n\tanimation.name = data.name;\r\n\tanimation.duration = data.duration;\r\n\tanimation.t = data.t;\r\n\tanimation.curveType = data.curveType;\r\n\tanimation.visible = data.visible;\r\n\tanimation.controlPoints = [];\r\n\r\n\tfor(const cpdata of data.controlPoints){\r\n\t\tconst cp = animation.createControlPoint();\r\n\r\n\t\tcp.position.set(...cpdata.position);\r\n\t\tcp.target.set(...cpdata.target);\r\n\t}\r\n\r\n\tviewer.scene.addCameraAnimation(animation);\r\n}\r\n\r\nfunction loadOrientedImages(viewer, images){\r\n\r\n\tconst {cameraParamsPath, imageParamsPath} = images;\r\n\r\n\tconst duplicate = viewer.scene.orientedImages.find(i => i.imageParamsPath === imageParamsPath);\r\n\tif(duplicate){\r\n\t\treturn;\r\n\t}\r\n\r\n\tPotree.OrientedImageLoader.load(cameraParamsPath, imageParamsPath, viewer).then( images => {\r\n\t\tviewer.scene.addOrientedImages(images);\r\n\t});\r\n\r\n}\r\n\r\nfunction loadGeopackage(viewer, geopackage){\r\n\r\n\tconst path = geopackage.path;\r\n\r\n\tconst duplicate = viewer.scene.geopackages.find(i => i.path === path);\r\n\tif(duplicate){\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst projection = viewer.getProjection();\r\n\r\n\tproj4.defs(\"WGS84\", \"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs\");\r\n\tproj4.defs(\"pointcloud\", projection);\r\n\tconst transform = proj4(\"WGS84\", \"pointcloud\");\r\n\tconst params = {\r\n\t\ttransform: transform,\r\n\t};\r\n\r\n\tPotree.GeoPackageLoader.loadUrl(path, params).then(data => {\r\n\t\tviewer.scene.addGeopackage(data);\r\n\t});\r\n\t\r\n\r\n}\r\n\r\nfunction loadSettings(viewer, data){\r\n\tif(!data){\r\n\t\treturn;\r\n\t}\r\n\r\n\tviewer.setPointBudget(data.pointBudget);\r\n\tviewer.setFOV(data.fov);\r\n\tviewer.setEDLEnabled(data.edlEnabled);\r\n\tviewer.setEDLRadius(data.edlRadius);\r\n\tviewer.setEDLStrength(data.edlStrength);\r\n\tviewer.setBackground(data.background);\r\n\tviewer.setMinNodeSize(data.minNodeSize);\r\n\tviewer.setShowBoundingBox(data.showBoundingBoxes);\r\n}\r\n\r\nfunction loadView(viewer, view){\r\n\tviewer.scene.view.position.set(...view.position);\r\n\tviewer.scene.view.lookAt(...view.target);\r\n}\r\n\r\nfunction loadAnnotationItem(item){\r\n\r\n\tconst annotation = new Annotation({\r\n\t\tposition: item.position,\r\n\t\ttitle: item.title,\r\n\t\tcameraPosition: item.cameraPosition,\r\n\t\tcameraTarget: item.cameraTarget,\r\n\t});\r\n\r\n\r\n\tannotation.description = item.description;\r\n\tannotation.uuid = item.uuid;\r\n\r\n\tif(item.offset){\r\n\t\tannotation.offset.set(...item.offset);\r\n\t}\r\n\r\n\treturn annotation;\r\n}\r\n\r\nfunction loadAnnotations(viewer, data){\r\n\r\n\tif(!data){\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst findDuplicate = (item) => {\r\n\r\n\t\tlet duplicate = null;\r\n\r\n\t\tviewer.scene.annotations.traverse( a => {\r\n\t\t\tif(a.uuid === item.uuid){\r\n\t\t\t\tduplicate = a;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn duplicate;\r\n\t};\r\n\r\n\tconst traverse = (item, parent) => {\r\n\r\n\t\tconst duplicate = findDuplicate(item);\r\n\t\tif(duplicate){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst annotation = loadAnnotationItem(item);\r\n\r\n\t\tfor(const childItem of item.children){\r\n\t\t\ttraverse(childItem, annotation);\r\n\t\t}\r\n\r\n\t\tparent.add(annotation);\r\n\r\n\t};\r\n\r\n\tfor(const item of data){\r\n\t\ttraverse(item, viewer.scene.annotations);\r\n\t}\r\n\r\n}\r\n\r\nfunction loadProfile(viewer, data){\r\n\t\r\n\tconst {name, points} = data;\r\n\r\n\tconst duplicate = viewer.scene.profiles.find(profile => profile.uuid === data.uuid);\r\n\tif(duplicate){\r\n\t\treturn;\r\n\t}\r\n\r\n\tlet profile = new Potree.Profile();\r\n\tprofile.name = name;\r\n\tprofile.uuid = data.uuid;\r\n\r\n\tprofile.setWidth(data.width);\r\n\r\n\tfor(const point of points){\r\n\t\tprofile.addMarker(new THREE.Vector3(...point));\r\n\t}\r\n\t\r\n\tviewer.scene.addProfile(profile);\r\n}\r\n\r\nfunction loadClassification(viewer, data){\r\n\tif(!data){\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst classifications = data;\r\n\r\n\tviewer.setClassifications(classifications);\r\n}\r\n\r\nexport async function loadProject(viewer, data){\r\n\r\n\tif(data.type !== \"Potree\"){\r\n\t\tconsole.error(\"not a valid Potree project\");\r\n\t\treturn;\r\n\t}\r\n\r\n\tloadSettings(viewer, data.settings);\r\n\r\n\tloadView(viewer, data.view);\r\n\r\n\tconst pointcloudPromises = [];\r\n\tfor(const pointcloud of data.pointclouds){\r\n\t\tconst promise = loadPointCloud(viewer, pointcloud);\r\n\t\tpointcloudPromises.push(promise);\r\n\t}\r\n\r\n\tfor(const measure of data.measurements){\r\n\t\tloadMeasurement(viewer, measure);\r\n\t}\r\n\r\n\tfor(const volume of data.volumes){\r\n\t\tloadVolume(viewer, volume);\r\n\t}\r\n\r\n\tfor(const animation of data.cameraAnimations){\r\n\t\tloadCameraAnimation(viewer, animation);\r\n\t}\r\n\r\n\tfor(const profile of data.profiles){\r\n\t\tloadProfile(viewer, profile);\r\n\t}\r\n\r\n\tif(data.orientedImages){\r\n\t\tfor(const images of data.orientedImages){\r\n\t\t\tloadOrientedImages(viewer, images);\r\n\t\t}\r\n\t}\r\n\r\n\tloadAnnotations(viewer, data.annotations);\r\n\r\n\tloadClassification(viewer, data.classification);\r\n\r\n\t// need to load at least one point cloud that defines the scene projection,\r\n\t// before we can load stuff in other projections such as geopackages\r\n\t//await Promise.any(pointcloudPromises); // (not yet supported)\r\n\tUtils.waitAny(pointcloudPromises).then( () => {\r\n\t\tif(data.geopackages){\r\n\t\t\tfor(const geopackage of data.geopackages){\r\n\t\t\t\tloadGeopackage(viewer, geopackage);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tawait Promise.all(pointcloudPromises);\r\n}","\nimport {Shaders} from \"../../build/shaders/shaders.js\";\n\n//\n// Algorithm by Christian Boucheny\n// shader code taken and adapted from CloudCompare\n//\n// see\n// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL\n// http://www.kitware.com/source/home/post/9\n// https://tel.archives-ouvertes.fr/tel-00438464/document p. 115+ (french)\n\nexport class EyeDomeLightingMaterial extends THREE.RawShaderMaterial{\n\n\tconstructor(parameters = {}){\n\t\tsuper();\n\n\t\tlet uniforms = {\n\t\t\tscreenWidth: { type: 'f', \tvalue: 0 },\n\t\t\tscreenHeight: { type: 'f', \tvalue: 0 },\n\t\t\tedlStrength: { type: 'f', \tvalue: 1.0 },\n\t\t\tuNear: { type: 'f', \tvalue: 1.0 },\n\t\t\tuFar: { type: 'f', \tvalue: 1.0 },\n\t\t\tradius: { type: 'f', \tvalue: 1.0 },\n\t\t\tneighbours: { type: '2fv', \tvalue: [] },\n\t\t\tdepthMap: { type: 't', \tvalue: null },\n\t\t\tuEDLColor: { type: 't', \tvalue: null },\n\t\t\tuEDLDepth: { type: 't', \tvalue: null },\n\t\t\topacity: { type: 'f',\tvalue: 1.0 },\n\t\t\tuProj: { type: \"Matrix4fv\", value: [] },\n\t\t};\n\n\t\tthis.setValues({\n\t\t\tuniforms: uniforms,\n\t\t\tvertexShader: this.getDefines() + Shaders['edl.vs'],\n\t\t\tfragmentShader: this.getDefines() + Shaders['edl.fs'],\n\t\t\tlights: false\n\t\t});\n\n\t\tthis.neighbourCount = 8;\n\t}\n\n\tgetDefines() {\n\t\tlet defines = '';\n\n\t\tdefines += '#define NEIGHBOUR_COUNT ' + this.neighbourCount + '\\n';\n\n\t\treturn defines;\n\t}\n\n\tupdateShaderSource() {\n\n\t\tlet vs = this.getDefines() + Shaders['edl.vs'];\n\t\tlet fs = this.getDefines() + Shaders['edl.fs'];\n\n\t\tthis.setValues({\n\t\t\tvertexShader: vs,\n\t\t\tfragmentShader: fs\n\t\t});\n\n\t\tthis.uniforms.neighbours.value = this.neighbours;\n\n\t\tthis.needsUpdate = true;\n\t}\n\n\tget neighbourCount(){\n\t\treturn this._neighbourCount;\n\t}\n\n\tset neighbourCount(value){\n\t\tif (this._neighbourCount !== value) {\n\t\t\tthis._neighbourCount = value;\n\t\t\tthis.neighbours = new Float32Array(this._neighbourCount * 2);\n\t\t\tfor (let c = 0; c < this._neighbourCount; c++) {\n\t\t\t\tthis.neighbours[2 * c + 0] = Math.cos(2 * c * Math.PI / this._neighbourCount);\n\t\t\t\tthis.neighbours[2 * c + 1] = Math.sin(2 * c * Math.PI / this._neighbourCount);\n\t\t\t}\n\n\t\t\tthis.updateShaderSource();\n\t\t}\n\t}\n\n\t\n}\n\n","\n\nimport {Shaders} from \"../../build/shaders/shaders.js\";\n\n\nexport class NormalizationEDLMaterial extends THREE.RawShaderMaterial{\n\n\tconstructor(parameters = {}){\n\t\tsuper();\n\n\t\tlet uniforms = {\n\t\t\tscreenWidth: { type: 'f', value: 0 },\n\t\t\tscreenHeight: { type: 'f', value: 0 },\n\t\t\tedlStrength: { type: 'f', value: 1.0 },\n\t\t\tradius: { type: 'f', value: 1.0 },\n\t\t\tneighbours: { type: '2fv', value: [] },\n\t\t\tuEDLMap: { type: 't', value: null },\n\t\t\tuDepthMap: { type: 't', value: null },\n\t\t\tuWeightMap: { type: 't', value: null },\n\t\t};\n\n\t\tthis.setValues({\n\t\t\tuniforms: uniforms,\n\t\t\tvertexShader: this.getDefines() + Shaders['normalize.vs'],\n\t\t\tfragmentShader: this.getDefines() + Shaders['normalize_and_edl.fs'],\n\t\t});\n\n\t\tthis.neighbourCount = 8;\n\t}\n\n\tgetDefines() {\n\t\tlet defines = '';\n\n\t\tdefines += '#define NEIGHBOUR_COUNT ' + this.neighbourCount + '\\n';\n\n\t\treturn defines;\n\t}\n\n\tupdateShaderSource() {\n\n\t\tlet vs = this.getDefines() + Shaders['normalize.vs'];\n\t\tlet fs = this.getDefines() + Shaders['normalize_and_edl.fs'];\n\n\t\tthis.setValues({\n\t\t\tvertexShader: vs,\n\t\t\tfragmentShader: fs\n\t\t});\n\n\t\tthis.uniforms.neighbours.value = this.neighbours;\n\n\t\tthis.needsUpdate = true;\n\t}\n\n\tget neighbourCount(){\n\t\treturn this._neighbourCount;\n\t}\n\n\tset neighbourCount(value){\n\t\tif (this._neighbourCount !== value) {\n\t\t\tthis._neighbourCount = value;\n\t\t\tthis.neighbours = new Float32Array(this._neighbourCount * 2);\n\t\t\tfor (let c = 0; c < this._neighbourCount; c++) {\n\t\t\t\tthis.neighbours[2 * c + 0] = Math.cos(2 * c * Math.PI / this._neighbourCount);\n\t\t\t\tthis.neighbours[2 * c + 1] = Math.sin(2 * c * Math.PI / this._neighbourCount);\n\t\t\t}\n\n\t\t\tthis.updateShaderSource();\n\t\t}\n\t}\n\t\n}\n\n","\nimport {Shaders} from \"../../build/shaders/shaders.js\";\n\nexport class NormalizationMaterial extends THREE.RawShaderMaterial{\n\n\tconstructor(parameters = {}){\n\t\tsuper();\n\n\t\tlet uniforms = {\n\t\t\tuDepthMap:\t\t{ type: 't', value: null },\n\t\t\tuWeightMap:\t\t{ type: 't', value: null },\n\t\t};\n\n\t\tthis.setValues({\n\t\t\tuniforms: uniforms,\n\t\t\tvertexShader: this.getDefines() + Shaders['normalize.vs'],\n\t\t\tfragmentShader: this.getDefines() + Shaders['normalize.fs'],\n\t\t});\n\t}\n\n\tgetDefines() {\n\t\tlet defines = '';\n\n\t\treturn defines;\n\t}\n\n\tupdateShaderSource() {\n\n\t\tlet vs = this.getDefines() + Shaders['normalize.vs'];\n\t\tlet fs = this.getDefines() + Shaders['normalize.fs'];\n\n\t\tthis.setValues({\n\t\t\tvertexShader: vs,\n\t\t\tfragmentShader: fs\n\t\t});\n\n\t\tthis.needsUpdate = true;\n\t}\n\n}\n\n","\n\nimport {Version} from \"../Version.js\";\nimport {XHRFactory} from \"../XHRFactory.js\";\n\n/**\n * laslaz code taken and adapted from plas.io js-laslaz\n *\thttp://plas.io/\n * https://github.com/verma/plasio\n *\n * Thanks to Uday Verma and Howard Butler\n *\n */\n\nexport class LasLazLoader {\n\n\tconstructor (version, extension) {\n\t\tif (typeof (version) === 'string') {\n\t\t\tthis.version = new Version(version);\n\t\t} else {\n\t\t\tthis.version = version;\n\t\t}\n\n\t\tthis.extension = extension;\n\t}\n\n\tstatic progressCB () {\n\n\t}\n\n\tload (node) {\n\t\tif (node.loaded) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet url = node.getURL();\n\n\t\tif (this.version.equalOrHigher('1.4')) {\n\t\t\turl += `.${this.extension}`;\n\t\t}\n\n\t\tlet xhr = XHRFactory.createXMLHttpRequest();\n\t\txhr.open('GET', url, true);\n\t\txhr.responseType = 'arraybuffer';\n\t\txhr.overrideMimeType('text/plain; charset=x-user-defined');\n\t\txhr.onreadystatechange = () => {\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tif (xhr.status === 200 || xhr.status === 0) {\n\t\t\t\t\tlet buffer = xhr.response;\n\t\t\t\t\tthis.parse(node, buffer);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('Failed to load file! HTTP status: ' + xhr.status + ', file: ' + url);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\txhr.send(null);\n\t}\n\n\tasync parse(node, buffer){\n\t\tlet lf = new LASFile(buffer);\n\t\tlet handler = new LasLazBatcher(node);\n\n\t\ttry{\n\t\t\t await lf.open();\n\t\t\t lf.isOpen = true;\n\t\t}catch(e){\n\t\t\tconsole.log(\"failed to open file. :(\");\n\n\t\t\treturn;\n\t\t}\n\n\t\tlet header = await lf.getHeader();\n\n\t\tlet skip = 1;\n\t\tlet totalRead = 0;\n\t\tlet totalToRead = (skip <= 1 ? header.pointsCount : header.pointsCount / skip);\n\n\t\tlet hasMoreData = true;\n\n\t\twhile(hasMoreData){\n\t\t\tlet data = await lf.readData(1000 * 1000, 0, skip);\n\n\t\t\thandler.push(new LASDecoder(data.buffer,\n\t\t\t\theader.pointsFormatId,\n\t\t\t\theader.pointsStructSize,\n\t\t\t\tdata.count,\n\t\t\t\theader.scale,\n\t\t\t\theader.offset,\n\t\t\t\theader.mins, header.maxs));\n\n\t\t\ttotalRead += data.count;\n\t\t\tLasLazLoader.progressCB(totalRead / totalToRead);\n\n\t\t\thasMoreData = data.hasMoreData;\n\t\t}\n\n\t\theader.totalRead = totalRead;\n\t\theader.versionAsString = lf.versionAsString;\n\t\theader.isCompressed = lf.isCompressed;\n\n\t\tLasLazLoader.progressCB(1);\n\n\t\ttry{\n\t\t\tawait lf.close();\n\n\t\t\tlf.isOpen = false;\n\t\t}catch(e){\n\t\t\tconsole.error(\"failed to close las/laz file!!!\");\n\t\t\t\n\t\t\tthrow e;\n\t\t}\n\t}\n\n\thandle (node, url) {\n\n\t}\n};\n\nexport class LasLazBatcher{\n\n\tconstructor (node) {\n\t\tthis.node = node;\n\t}\n\n\tpush (lasBuffer) {\n\t\tconst workerPath = Potree.scriptPath + '/workers/LASDecoderWorker.js';\n\t\tconst worker = Potree.workerPool.getWorker(workerPath);\n\t\tconst node = this.node;\n\t\tconst pointAttributes = node.pcoGeometry.pointAttributes;\n\n\t\tworker.onmessage = (e) => {\n\t\t\tlet geometry = new THREE.BufferGeometry();\n\t\t\tlet numPoints = lasBuffer.pointsCount;\n\n\t\t\tlet positions = new Float32Array(e.data.position);\n\t\t\tlet colors = new Uint8Array(e.data.color);\n\t\t\tlet intensities = new Float32Array(e.data.intensity);\n\t\t\tlet classifications = new Uint8Array(e.data.classification);\n\t\t\tlet returnNumbers = new Uint8Array(e.data.returnNumber);\n\t\t\tlet numberOfReturns = new Uint8Array(e.data.numberOfReturns);\n\t\t\tlet pointSourceIDs = new Uint16Array(e.data.pointSourceID);\n\t\t\tlet indices = new Uint8Array(e.data.indices);\n\n\t\t\tgeometry.addAttribute('position', new THREE.BufferAttribute(positions, 3));\n\t\t\tgeometry.addAttribute('color', new THREE.BufferAttribute(colors, 4, true));\n\t\t\tgeometry.addAttribute('intensity', new THREE.BufferAttribute(intensities, 1));\n\t\t\tgeometry.addAttribute('classification', new THREE.BufferAttribute(classifications, 1));\n\t\t\tgeometry.addAttribute('return number', new THREE.BufferAttribute(returnNumbers, 1));\n\t\t\tgeometry.addAttribute('number of returns', new THREE.BufferAttribute(numberOfReturns, 1));\n\t\t\tgeometry.addAttribute('source id', new THREE.BufferAttribute(pointSourceIDs, 1));\n\t\t\tgeometry.addAttribute('indices', new THREE.BufferAttribute(indices, 4));\n\t\t\tgeometry.attributes.indices.normalized = true;\n\n\t\t\tfor(const key in e.data.ranges){\n\t\t\t\tconst range = e.data.ranges[key];\n\n\t\t\t\tconst attribute = pointAttributes.attributes.find(a => a.name === key);\n\t\t\t\tattribute.range[0] = Math.min(attribute.range[0], range[0]);\n\t\t\t\tattribute.range[1] = Math.max(attribute.range[1], range[1]);\n\t\t\t}\n\n\t\t\tlet tightBoundingBox = new THREE.Box3(\n\t\t\t\tnew THREE.Vector3().fromArray(e.data.tightBoundingBox.min),\n\t\t\t\tnew THREE.Vector3().fromArray(e.data.tightBoundingBox.max)\n\t\t\t);\n\n\t\t\tgeometry.boundingBox = this.node.boundingBox;\n\t\t\tthis.node.tightBoundingBox = tightBoundingBox;\n\n\t\t\tthis.node.geometry = geometry;\n\t\t\tthis.node.numPoints = numPoints;\n\t\t\tthis.node.loaded = true;\n\t\t\tthis.node.loading = false;\n\t\t\tPotree.numNodesLoading--;\n\t\t\tthis.node.mean = new THREE.Vector3(...e.data.mean);\n\n\t\t\tPotree.workerPool.returnWorker(workerPath, worker);\n\t\t};\n\n\t\tlet message = {\n\t\t\tbuffer: lasBuffer.arrayb,\n\t\t\tnumPoints: lasBuffer.pointsCount,\n\t\t\tpointSize: lasBuffer.pointSize,\n\t\t\tpointFormatID: 2,\n\t\t\tscale: lasBuffer.scale,\n\t\t\toffset: lasBuffer.offset,\n\t\t\tmins: lasBuffer.mins,\n\t\t\tmaxs: lasBuffer.maxs\n\t\t};\n\t\tworker.postMessage(message, [message.buffer]);\n\t};\n}\n","\n\nimport {Version} from \"../Version.js\";\nimport {XHRFactory} from \"../XHRFactory.js\";\n\n\nexport class BinaryLoader{\n\n\tconstructor(version, boundingBox, scale){\n\t\tif (typeof (version) === 'string') {\n\t\t\tthis.version = new Version(version);\n\t\t} else {\n\t\t\tthis.version = version;\n\t\t}\n\n\t\tthis.boundingBox = boundingBox;\n\t\tthis.scale = scale;\n\t}\n\n\tload(node){\n\t\tif (node.loaded) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet url = node.getURL();\n\n\t\tif (this.version.equalOrHigher('1.4')) {\n\t\t\turl += '.bin';\n\t\t}\n\n\t\tlet xhr = XHRFactory.createXMLHttpRequest();\n\t\txhr.open('GET', url, true);\n\t\txhr.responseType = 'arraybuffer';\n\t\txhr.overrideMimeType('text/plain; charset=x-user-defined');\n\t\txhr.onreadystatechange = () => {\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tif((xhr.status === 200 || xhr.status === 0) && xhr.response !== null){\n\t\t\t\t\tlet buffer = xhr.response;\n\t\t\t\t\tthis.parse(node, buffer);\n\t\t\t\t} else {\n\t\t\t\t\t//console.error(`Failed to load file! HTTP status: ${xhr.status}, file: ${url}`);\n\t\t\t\t\tthrow new Error(`Failed to load file! HTTP status: ${xhr.status}, file: ${url}`);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\t\n\t\ttry {\n\t\t\txhr.send(null);\n\t\t} catch (e) {\n\t\t\tconsole.log('fehler beim laden der punktwolke: ' + e);\n\t\t}\n\t};\n\n\tparse(node, buffer){\n\t\tlet pointAttributes = node.pcoGeometry.pointAttributes;\n\t\tlet numPoints = buffer.byteLength / node.pcoGeometry.pointAttributes.byteSize;\n\n\t\tif (this.version.upTo('1.5')) {\n\t\t\tnode.numPoints = numPoints;\n\t\t}\n\n\t\tlet workerPath = Potree.scriptPath + '/workers/BinaryDecoderWorker.js';\n\t\tlet worker = Potree.workerPool.getWorker(workerPath);\n\n\t\tworker.onmessage = function (e) {\n\n\t\t\tlet data = e.data;\n\t\t\tlet buffers = data.attributeBuffers;\n\t\t\tlet tightBoundingBox = new THREE.Box3(\n\t\t\t\tnew THREE.Vector3().fromArray(data.tightBoundingBox.min),\n\t\t\t\tnew THREE.Vector3().fromArray(data.tightBoundingBox.max)\n\t\t\t);\n\n\t\t\tPotree.workerPool.returnWorker(workerPath, worker);\n\n\t\t\tlet geometry = new THREE.BufferGeometry();\n\n\t\t\tfor(let property in buffers){\n\t\t\t\tlet buffer = buffers[property].buffer;\n\t\t\t\tlet batchAttribute = buffers[property].attribute;\n\n\t\t\t\tif (property === \"POSITION_CARTESIAN\") {\n\t\t\t\t\tgeometry.addAttribute('position', new THREE.BufferAttribute(new Float32Array(buffer), 3));\n\t\t\t\t} else if (property === \"rgba\") {\n\t\t\t\t\tgeometry.addAttribute(\"rgba\", new THREE.BufferAttribute(new Uint8Array(buffer), 4, true));\n\t\t\t\t} else if (property === \"NORMAL_SPHEREMAPPED\") {\n\t\t\t\t\tgeometry.addAttribute('normal', new THREE.BufferAttribute(new Float32Array(buffer), 3));\n\t\t\t\t} else if (property === \"NORMAL_OCT16\") {\n\t\t\t\t\tgeometry.addAttribute('normal', new THREE.BufferAttribute(new Float32Array(buffer), 3));\n\t\t\t\t} else if (property === \"NORMAL\") {\n\t\t\t\t\tgeometry.addAttribute('normal', new THREE.BufferAttribute(new Float32Array(buffer), 3));\n\t\t\t\t} else if (property === \"INDICES\") {\n\t\t\t\t\tlet bufferAttribute = new THREE.BufferAttribute(new Uint8Array(buffer), 4);\n\t\t\t\t\tbufferAttribute.normalized = true;\n\t\t\t\t\tgeometry.addAttribute('indices', bufferAttribute);\n\t\t\t\t} else if (property === \"SPACING\") {\n\t\t\t\t\tlet bufferAttribute = new THREE.BufferAttribute(new Float32Array(buffer), 1);\n\t\t\t\t\tgeometry.addAttribute('spacing', bufferAttribute);\n\t\t\t\t} else {\n\t\t\t\t\tconst bufferAttribute = new THREE.BufferAttribute(new Float32Array(buffer), 1);\n\n\t\t\t\t\tbufferAttribute.potree = {\n\t\t\t\t\t\toffset: buffers[property].offset,\n\t\t\t\t\t\tscale: buffers[property].scale,\n\t\t\t\t\t\tpreciseBuffer: buffers[property].preciseBuffer,\n\t\t\t\t\t\trange: batchAttribute.range,\n\t\t\t\t\t};\n\n\t\t\t\t\tgeometry.addAttribute(property, bufferAttribute);\n\n\t\t\t\t\tconst attribute = pointAttributes.attributes.find(a => a.name === batchAttribute.name);\n\t\t\t\t\tattribute.range[0] = Math.min(attribute.range[0], batchAttribute.range[0]);\n\t\t\t\t\tattribute.range[1] = Math.max(attribute.range[1], batchAttribute.range[1]);\n\n\t\t\t\t\tif(node.getLevel() === 0){\n\t\t\t\t\t\tattribute.initialRange = batchAttribute.range;\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttightBoundingBox.max.sub(tightBoundingBox.min);\n\t\t\ttightBoundingBox.min.set(0, 0, 0);\n\n\t\t\tlet numPoints = e.data.buffer.byteLength / pointAttributes.byteSize;\n\t\t\t\n\t\t\tnode.numPoints = numPoints;\n\t\t\tnode.geometry = geometry;\n\t\t\tnode.mean = new THREE.Vector3(...data.mean);\n\t\t\tnode.tightBoundingBox = tightBoundingBox;\n\t\t\tnode.loaded = true;\n\t\t\tnode.loading = false;\n\t\t\tnode.estimatedSpacing = data.estimatedSpacing;\n\t\t\tPotree.numNodesLoading--;\n\t\t};\n\n\t\tlet message = {\n\t\t\tbuffer: buffer,\n\t\t\tpointAttributes: pointAttributes,\n\t\t\tversion: this.version.version,\n\t\t\tmin: [ node.boundingBox.min.x, node.boundingBox.min.y, node.boundingBox.min.z ],\n\t\t\toffset: [node.pcoGeometry.offset.x, node.pcoGeometry.offset.y, node.pcoGeometry.offset.z],\n\t\t\tscale: this.scale,\n\t\t\tspacing: node.spacing,\n\t\t\thasChildren: node.hasChildren,\n\t\t\tname: node.name\n\t\t};\n\t\tworker.postMessage(message, [message.buffer]);\n\t};\n\n\t\n}\n\n","\n\nimport {PointCloudOctreeGeometry, PointCloudOctreeGeometryNode} from \"../PointCloudOctreeGeometry.js\";\nimport {Version} from \"../Version.js\";\nimport {XHRFactory} from \"../XHRFactory.js\";\nimport {LasLazLoader} from \"./LasLazLoader.js\";\nimport {BinaryLoader} from \"./BinaryLoader.js\";\nimport {Utils} from \"../utils.js\";\nimport {PointAttribute, PointAttributes, PointAttributeTypes} from \"./PointAttributes.js\";\n\nfunction parseAttributes(cloudjs){\n\n\tlet version = new Version(cloudjs.version);\n\n\tconst replacements = {\n\t\t\"COLOR_PACKED\": \"rgba\",\n\t\t\"RGBA\": \"rgba\",\n\t\t\"INTENSITY\": \"intensity\",\n\t\t\"CLASSIFICATION\": \"classification\",\n\t};\n\n\tconst replaceOldNames = (old) => {\n\t\tif(replacements[old]){\n\t\t\treturn replacements[old];\n\t\t}else{\n\t\t\treturn old;\n\t\t}\n\t};\n\n\tconst pointAttributes = [];\n\tif(version.upTo('1.7')){\n\t\t\n\t\tfor(let attributeName of cloudjs.pointAttributes){\n\t\t\tconst oldAttribute = PointAttribute[attributeName];\n\n\t\t\tconst attribute = {\n\t\t\t\tname: oldAttribute.name,\n\t\t\t\tsize: oldAttribute.byteSize,\n\t\t\t\telements: oldAttribute.numElements,\n\t\t\t\telementSize: oldAttribute.byteSize / oldAttribute.numElements,\n\t\t\t\ttype: oldAttribute.type.name,\n\t\t\t\tdescription: \"\",\n\t\t\t};\n\n\t\t\tpointAttributes.push(attribute);\n\t\t}\n\n\t}else{\n\t\tpointAttributes.push(...cloudjs.pointAttributes);\n\t}\n\n\n\t{\n\t\tconst attributes = new PointAttributes();\n\n\t\tconst typeConversion = {\n\t\t\tint8: PointAttributeTypes.DATA_TYPE_INT8,\n\t\t\tint16: PointAttributeTypes.DATA_TYPE_INT16,\n\t\t\tint32: PointAttributeTypes.DATA_TYPE_INT32,\n\t\t\tint64: PointAttributeTypes.DATA_TYPE_INT64,\n\t\t\tuint8: PointAttributeTypes.DATA_TYPE_UINT8,\n\t\t\tuint16: PointAttributeTypes.DATA_TYPE_UINT16,\n\t\t\tuint32: PointAttributeTypes.DATA_TYPE_UINT32,\n\t\t\tuint64: PointAttributeTypes.DATA_TYPE_UINT64,\n\t\t\tdouble: PointAttributeTypes.DATA_TYPE_DOUBLE,\n\t\t\tfloat: PointAttributeTypes.DATA_TYPE_FLOAT,\n\t\t};\n\n\t\tfor(const jsAttribute of pointAttributes){\n\t\t\tconst name = replaceOldNames(jsAttribute.name);\n\t\t\tconst type = typeConversion[jsAttribute.type];\n\t\t\tconst numElements = jsAttribute.elements;\n\t\t\tconst description = jsAttribute.description;\n\n\t\t\tconst attribute = new PointAttribute(name, type, numElements);\n\n\t\t\tattributes.add(attribute);\n\t\t}\n\n\t\t{\n\t\t\t// check if it has normals\n\t\t\tlet hasNormals = \n\t\t\t\tpointAttributes.find(a => a.name === \"NormalX\") !== undefined &&\n\t\t\t\tpointAttributes.find(a => a.name === \"NormalY\") !== undefined &&\n\t\t\t\tpointAttributes.find(a => a.name === \"NormalZ\") !== undefined;\n\n\t\t\tif(hasNormals){\n\t\t\t\tlet vector = {\n\t\t\t\t\tname: \"NORMAL\",\n\t\t\t\t\tattributes: [\"NormalX\", \"NormalY\", \"NormalZ\"],\n\t\t\t\t};\n\t\t\t\tattributes.addVector(vector);\n\t\t\t}\n\t\t}\n\n\t\treturn attributes;\n\t}\n\n}\n\nfunction lasLazAttributes(fMno){\n\tconst attributes = new PointAttributes();\n\n\tattributes.add(PointAttribute.POSITION_CARTESIAN);\n\tattributes.add(new PointAttribute(\"rgba\", PointAttributeTypes.DATA_TYPE_UINT8, 4));\n\tattributes.add(new PointAttribute(\"intensity\", PointAttributeTypes.DATA_TYPE_UINT16, 1));\n\tattributes.add(new PointAttribute(\"classification\", PointAttributeTypes.DATA_TYPE_UINT8, 1));\n\tattributes.add(new PointAttribute(\"gps-time\", PointAttributeTypes.DATA_TYPE_DOUBLE, 1));\n\tattributes.add(new PointAttribute(\"number of returns\", PointAttributeTypes.DATA_TYPE_UINT8, 1));\n\tattributes.add(new PointAttribute(\"return number\", PointAttributeTypes.DATA_TYPE_UINT8, 1));\n\tattributes.add(new PointAttribute(\"source id\", PointAttributeTypes.DATA_TYPE_UINT16, 1));\n\t//attributes.add(new PointAttribute(\"pointSourceID\", PointAttributeTypes.DATA_TYPE_INT8, 4));\n\n\n\treturn attributes;\n}\n\nexport class POCLoader {\n\n\tstatic load(url, callback){\n\t\ttry {\n\t\t\tlet pco = new PointCloudOctreeGeometry();\n\t\t\tpco.url = url;\n\t\t\tlet xhr = XHRFactory.createXMLHttpRequest();\n\t\t\txhr.open('GET', url, true);\n\n\t\t\txhr.onreadystatechange = function () {\n\t\t\t\tif (xhr.readyState === 4 && (xhr.status === 200 || xhr.status === 0)) {\n\t\t\t\t\tlet fMno = JSON.parse(xhr.responseText);\n\n\t\t\t\t\tlet version = new Version(fMno.version);\n\n\t\t\t\t\t// assume octreeDir is absolute if it starts with http\n\t\t\t\t\tif (fMno.octreeDir.indexOf('http') === 0) {\n\t\t\t\t\t\tpco.octreeDir = fMno.octreeDir;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpco.octreeDir = url + '/../' + fMno.octreeDir;\n\t\t\t\t\t}\n\n\t\t\t\t\tpco.spacing = fMno.spacing;\n\t\t\t\t\tpco.hierarchyStepSize = fMno.hierarchyStepSize;\n\n\t\t\t\t\tpco.pointAttributes = fMno.pointAttributes;\n\n\t\t\t\t\tlet min = new THREE.Vector3(fMno.boundingBox.lx, fMno.boundingBox.ly, fMno.boundingBox.lz);\n\t\t\t\t\tlet max = new THREE.Vector3(fMno.boundingBox.ux, fMno.boundingBox.uy, fMno.boundingBox.uz);\n\t\t\t\t\tlet boundingBox = new THREE.Box3(min, max);\n\t\t\t\t\tlet tightBoundingBox = boundingBox.clone();\n\n\t\t\t\t\tif (fMno.tightBoundingBox) {\n\t\t\t\t\t\ttightBoundingBox.min.copy(new THREE.Vector3(fMno.tightBoundingBox.lx, fMno.tightBoundingBox.ly, fMno.tightBoundingBox.lz));\n\t\t\t\t\t\ttightBoundingBox.max.copy(new THREE.Vector3(fMno.tightBoundingBox.ux, fMno.tightBoundingBox.uy, fMno.tightBoundingBox.uz));\n\t\t\t\t\t}\n\n\t\t\t\t\tlet offset = min.clone();\n\n\t\t\t\t\tboundingBox.min.sub(offset);\n\t\t\t\t\tboundingBox.max.sub(offset);\n\n\t\t\t\t\ttightBoundingBox.min.sub(offset);\n\t\t\t\t\ttightBoundingBox.max.sub(offset);\n\n\t\t\t\t\tpco.projection = fMno.projection;\n\t\t\t\t\tpco.boundingBox = boundingBox;\n\t\t\t\t\tpco.tightBoundingBox = tightBoundingBox;\n\t\t\t\t\tpco.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\n\t\t\t\t\tpco.tightBoundingSphere = tightBoundingBox.getBoundingSphere(new THREE.Sphere());\n\t\t\t\t\tpco.offset = offset;\n\t\t\t\t\tif (fMno.pointAttributes === 'LAS') {\n\t\t\t\t\t\tpco.loader = new LasLazLoader(fMno.version, \"las\");\n\t\t\t\t\t\tpco.pointAttributes = lasLazAttributes(fMno);\n\t\t\t\t\t} else if (fMno.pointAttributes === 'LAZ') {\n\t\t\t\t\t\tpco.loader = new LasLazLoader(fMno.version, \"laz\");\n\t\t\t\t\t\tpco.pointAttributes = lasLazAttributes(fMno);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpco.loader = new BinaryLoader(fMno.version, boundingBox, fMno.scale);\n\t\t\t\t\t\tpco.pointAttributes = parseAttributes(fMno);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet nodes = {};\n\n\t\t\t\t\t{ // load root\n\t\t\t\t\t\tlet name = 'r';\n\n\t\t\t\t\t\tlet root = new PointCloudOctreeGeometryNode(name, pco, boundingBox);\n\t\t\t\t\t\troot.level = 0;\n\t\t\t\t\t\troot.hasChildren = true;\n\t\t\t\t\t\troot.spacing = pco.spacing;\n\t\t\t\t\t\tif (version.upTo('1.5')) {\n\t\t\t\t\t\t\troot.numPoints = fMno.hierarchy[0][1];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\troot.numPoints = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpco.root = root;\n\t\t\t\t\t\tpco.root.load();\n\t\t\t\t\t\tnodes[name] = root;\n\t\t\t\t\t}\n\n\t\t\t\t\t// load remaining hierarchy\n\t\t\t\t\tif (version.upTo('1.4')) {\n\t\t\t\t\t\tfor (let i = 1; i < fMno.hierarchy.length; i++) {\n\t\t\t\t\t\t\tlet name = fMno.hierarchy[i][0];\n\t\t\t\t\t\t\tlet numPoints = fMno.hierarchy[i][1];\n\t\t\t\t\t\t\tlet index = parseInt(name.charAt(name.length - 1));\n\t\t\t\t\t\t\tlet parentName = name.substring(0, name.length - 1);\n\t\t\t\t\t\t\tlet parentNode = nodes[parentName];\n\t\t\t\t\t\t\tlet level = name.length - 1;\n\t\t\t\t\t\t\t//let boundingBox = POCLoader.createChildAABB(parentNode.boundingBox, index);\n\t\t\t\t\t\t\tlet boundingBox = Utils.createChildAABB(parentNode.boundingBox, index);\n\n\t\t\t\t\t\t\tlet node = new PointCloudOctreeGeometryNode(name, pco, boundingBox);\n\t\t\t\t\t\t\tnode.level = level;\n\t\t\t\t\t\t\tnode.numPoints = numPoints;\n\t\t\t\t\t\t\tnode.spacing = pco.spacing / Math.pow(2, level);\n\t\t\t\t\t\t\tparentNode.addChild(node);\n\t\t\t\t\t\t\tnodes[name] = node;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tpco.nodes = nodes;\n\n\t\t\t\t\tcallback(pco);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send(null);\n\t\t} catch (e) {\n\t\t\tconsole.log(\"loading failed: '\" + url + \"'\");\n\t\t\tconsole.log(e);\n\n\t\t\tcallback();\n\t\t}\n\t}\n\n\tloadPointAttributes(mno){\n\t\tlet fpa = mno.pointAttributes;\n\t\tlet pa = new PointAttributes();\n\n\t\tfor (let i = 0; i < fpa.length; i++) {\n\t\t\tlet pointAttribute = PointAttribute[fpa[i]];\n\t\t\tpa.add(pointAttribute);\n\t\t}\n\n\t\treturn pa;\n\t}\n\n\tcreateChildAABB(aabb, index){\n\t\tlet min = aabb.min.clone();\n\t\tlet max = aabb.max.clone();\n\t\tlet size = new THREE.Vector3().subVectors(max, min);\n\n\t\tif ((index & 0b0001) > 0) {\n\t\t\tmin.z += size.z / 2;\n\t\t} else {\n\t\t\tmax.z -= size.z / 2;\n\t\t}\n\n\t\tif ((index & 0b0010) > 0) {\n\t\t\tmin.y += size.y / 2;\n\t\t} else {\n\t\t\tmax.y -= size.y / 2;\n\t\t}\n\n\t\tif ((index & 0b0100) > 0) {\n\t\t\tmin.x += size.x / 2;\n\t\t} else {\n\t\t\tmax.x -= size.x / 2;\n\t\t}\n\n\t\treturn new THREE.Box3(min, max);\n\t}\n}\n\n","\r\nexport class OctreeGeometry{\r\n\r\n\tconstructor(){\r\n\t\tthis.url = null;\r\n\t\tthis.spacing = 0;\r\n\t\tthis.boundingBox = null;\r\n\t\tthis.root = null;\r\n\t\tthis.pointAttributes = null;\r\n\t\tthis.loader = null;\r\n\t}\r\n\r\n};\r\n\r\nexport class OctreeGeometryNode{\r\n\r\n\tconstructor(name, octreeGeometry, boundingBox){\r\n\t\tthis.id = OctreeGeometryNode.IDCount++;\r\n\t\tthis.name = name;\r\n\t\tthis.index = parseInt(name.charAt(name.length - 1));\r\n\t\tthis.octreeGeometry = octreeGeometry;\r\n\t\tthis.boundingBox = boundingBox;\r\n\t\tthis.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\r\n\t\tthis.children = {};\r\n\t\tthis.numPoints = 0;\r\n\t\tthis.level = null;\r\n\t\tthis.oneTimeDisposeHandlers = [];\r\n\t}\r\n\r\n\tisGeometryNode(){\r\n\t\treturn true;\r\n\t}\r\n\r\n\tgetLevel(){\r\n\t\treturn this.level;\r\n\t}\r\n\r\n\tisTreeNode(){\r\n\t\treturn false;\r\n\t}\r\n\r\n\tisLoaded(){\r\n\t\treturn this.loaded;\r\n\t}\r\n\r\n\tgetBoundingSphere(){\r\n\t\treturn this.boundingSphere;\r\n\t}\r\n\r\n\tgetBoundingBox(){\r\n\t\treturn this.boundingBox;\r\n\t}\r\n\r\n\tgetChildren(){\r\n\t\tlet children = [];\r\n\r\n\t\tfor (let i = 0; i < 8; i++) {\r\n\t\t\tif (this.children[i]) {\r\n\t\t\t\tchildren.push(this.children[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\tgetBoundingBox(){\r\n\t\treturn this.boundingBox;\r\n\t}\r\n\r\n\tload(){\r\n\r\n\t\tif (Potree.numNodesLoading >= Potree.maxNodesLoading) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.octreeGeometry.loader.load(this);\r\n\t}\r\n\r\n\tgetNumPoints(){\r\n\t\treturn this.numPoints;\r\n\t}\r\n\r\n\tdispose(){\r\n\t\tif (this.geometry && this.parent != null) {\r\n\t\t\tthis.geometry.dispose();\r\n\t\t\tthis.geometry = null;\r\n\t\t\tthis.loaded = false;\r\n\r\n\t\t\t// this.dispatchEvent( { type: 'dispose' } );\r\n\t\t\tfor (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) {\r\n\t\t\t\tlet handler = this.oneTimeDisposeHandlers[i];\r\n\t\t\t\thandler();\r\n\t\t\t}\r\n\t\t\tthis.oneTimeDisposeHandlers = [];\r\n\t\t}\r\n\t}\r\n\r\n};\r\n\r\nOctreeGeometryNode.IDCount = 0;","\nimport {PointAttribute, PointAttributes, PointAttributeTypes} from \"../../../loader/PointAttributes.js\";\nimport {OctreeGeometry, OctreeGeometryNode} from \"./OctreeGeometry.js\";\n\n// let loadedNodes = new Set();\n\nexport class NodeLoader{\n\n\tconstructor(url){\n\t\tthis.url = url;\n\t}\n\n\tasync load(node){\n\n\t\tif(node.loaded || node.loading){\n\t\t\treturn;\n\t\t}\n\n\t\tnode.loading = true;\n\t\tPotree.numNodesLoading++;\n\n\t\t// console.log(node.name, node.numPoints);\n\n\t\t// if(loadedNodes.has(node.name)){\n\t\t// \t// debugger;\n\t\t// }\n\t\t// loadedNodes.add(node.name);\n\n\t\ttry{\n\t\t\tif(node.nodeType === 2){\n\t\t\t\tawait this.loadHierarchy(node);\n\t\t\t}\n\n\t\t\tlet {byteOffset, byteSize} = node;\n\n\n\t\t\tlet urlOctree = `${this.url}/../octree.bin`;\n\n\t\t\tlet first = byteOffset;\n\t\t\tlet last = byteOffset + byteSize - 1n;\n\n\t\t\tlet buffer;\n\n\t\t\tif(byteSize === 0n){\n\t\t\t\tbuffer = new ArrayBuffer(0);\n\t\t\t\tconsole.warn(`loaded node with 0 bytes: ${node.name}`);\n\t\t\t}else{\n\t\t\t\tlet response = await fetch(urlOctree, {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'content-type': 'multipart/byteranges',\n\t\t\t\t\t\t'Range': `bytes=${first}-${last}`,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tbuffer = await response.arrayBuffer();\n\t\t\t}\n\n\t\t\tlet workerPath;\n\t\t\tif(this.metadata.encoding === \"BROTLI\"){\n\t\t\t\tworkerPath = Potree.scriptPath + '/workers/2.0/DecoderWorker_brotli.js';\n\t\t\t}else{\n\t\t\t\tworkerPath = Potree.scriptPath + '/workers/2.0/DecoderWorker.js';\n\t\t\t}\n\n\t\t\tlet worker = Potree.workerPool.getWorker(workerPath);\n\n\t\t\tworker.onmessage = function (e) {\n\n\t\t\t\tlet data = e.data;\n\t\t\t\tlet buffers = data.attributeBuffers;\n\n\t\t\t\tPotree.workerPool.returnWorker(workerPath, worker);\n\n\t\t\t\tlet geometry = new THREE.BufferGeometry();\n\t\t\t\t\n\t\t\t\tfor(let property in buffers){\n\n\t\t\t\t\tlet buffer = buffers[property].buffer;\n\n\t\t\t\t\tif(property === \"position\"){\n\t\t\t\t\t\tgeometry.addAttribute('position', new THREE.BufferAttribute(new Float32Array(buffer), 3));\n\t\t\t\t\t}else if(property === \"rgba\"){\n\t\t\t\t\t\tgeometry.addAttribute('rgba', new THREE.BufferAttribute(new Uint8Array(buffer), 4, true));\n\t\t\t\t\t}else if(property === \"NORMAL\"){\n\t\t\t\t\t\t//geometry.addAttribute('rgba', new THREE.BufferAttribute(new Uint8Array(buffer), 4, true));\n\t\t\t\t\t\tgeometry.addAttribute('normal', new THREE.BufferAttribute(new Float32Array(buffer), 3));\n\t\t\t\t\t}else if (property === \"INDICES\") {\n\t\t\t\t\t\tlet bufferAttribute = new THREE.BufferAttribute(new Uint8Array(buffer), 4);\n\t\t\t\t\t\tbufferAttribute.normalized = true;\n\t\t\t\t\t\tgeometry.addAttribute('indices', bufferAttribute);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconst bufferAttribute = new THREE.BufferAttribute(new Float32Array(buffer), 1);\n\n\t\t\t\t\t\tlet batchAttribute = buffers[property].attribute;\n\t\t\t\t\t\tbufferAttribute.potree = {\n\t\t\t\t\t\t\toffset: buffers[property].offset,\n\t\t\t\t\t\t\tscale: buffers[property].scale,\n\t\t\t\t\t\t\tpreciseBuffer: buffers[property].preciseBuffer,\n\t\t\t\t\t\t\trange: batchAttribute.range,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tgeometry.addAttribute(property, bufferAttribute);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\t// indices ??\n\n\t\t\t\tnode.density = data.density;\n\t\t\t\tnode.geometry = geometry;\n\t\t\t\tnode.loaded = true;\n\t\t\t\tnode.loading = false;\n\t\t\t\tPotree.numNodesLoading--;\n\t\t\t};\n\n\t\t\tlet pointAttributes = node.octreeGeometry.pointAttributes;\n\t\t\tlet scale = node.octreeGeometry.scale;\n\n\t\t\tlet box = node.boundingBox;\n\t\t\tlet min = node.octreeGeometry.offset.clone().add(box.min);\n\t\t\tlet size = box.max.clone().sub(box.min);\n\t\t\tlet max = min.clone().add(size);\n\t\t\tlet numPoints = node.numPoints;\n\n\t\t\tlet offset = node.octreeGeometry.loader.offset;\n\n\t\t\tlet message = {\n\t\t\t\tname: node.name,\n\t\t\t\tbuffer: buffer,\n\t\t\t\tpointAttributes: pointAttributes,\n\t\t\t\tscale: scale,\n\t\t\t\tmin: min,\n\t\t\t\tmax: max,\n\t\t\t\tsize: size,\n\t\t\t\toffset: offset,\n\t\t\t\tnumPoints: numPoints\n\t\t\t};\n\n\t\t\tworker.postMessage(message, [message.buffer]);\n\t\t}catch(e){\n\t\t\tnode.loaded = false;\n\t\t\tnode.loading = false;\n\t\t\tPotree.numNodesLoading--;\n\n\t\t\tconsole.log(`failed to load ${node.name}`);\n\t\t\tconsole.log(e);\n\t\t\tconsole.log(`trying again!`);\n\t\t}\n\t}\n\n\tparseHierarchy(node, buffer){\n\n\t\tlet view = new DataView(buffer);\n\t\tlet tStart = performance.now();\n\n\t\tlet bytesPerNode = 22;\n\t\tlet numNodes = buffer.byteLength / bytesPerNode;\n\n\t\tlet octree = node.octreeGeometry;\n\t\t// let nodes = [node];\n\t\tlet nodes = new Array(numNodes);\n\t\tnodes[0] = node;\n\t\tlet nodePos = 1;\n\n\t\tfor(let i = 0; i < numNodes; i++){\n\t\t\tlet current = nodes[i];\n\n\t\t\tlet type = view.getUint8(i * bytesPerNode + 0);\n\t\t\tlet childMask = view.getUint8(i * bytesPerNode + 1);\n\t\t\tlet numPoints = view.getUint32(i * bytesPerNode + 2, true);\n\t\t\tlet byteOffset = view.getBigInt64(i * bytesPerNode + 6, true);\n\t\t\tlet byteSize = view.getBigInt64(i * bytesPerNode + 14, true);\n\n\t\t\t// if(byteSize === 0n){\n\t\t\t// \t// debugger;\n\t\t\t// }\n\n\n\t\t\tif(current.nodeType === 2){\n\t\t\t\t// replace proxy with real node\n\t\t\t\tcurrent.byteOffset = byteOffset;\n\t\t\t\tcurrent.byteSize = byteSize;\n\t\t\t\tcurrent.numPoints = numPoints;\n\t\t\t}else if(type === 2){\n\t\t\t\t// load proxy\n\t\t\t\tcurrent.hierarchyByteOffset = byteOffset;\n\t\t\t\tcurrent.hierarchyByteSize = byteSize;\n\t\t\t\tcurrent.numPoints = numPoints;\n\t\t\t}else{\n\t\t\t\t// load real node \n\t\t\t\tcurrent.byteOffset = byteOffset;\n\t\t\t\tcurrent.byteSize = byteSize;\n\t\t\t\tcurrent.numPoints = numPoints;\n\t\t\t}\n\t\t\t\n\t\t\tcurrent.nodeType = type;\n\n\t\t\tif(current.nodeType === 2){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tfor(let childIndex = 0; childIndex < 8; childIndex++){\n\t\t\t\tlet childExists = ((1 << childIndex) & childMask) !== 0;\n\n\t\t\t\tif(!childExists){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tlet childName = current.name + childIndex;\n\n\t\t\t\tlet childAABB = createChildAABB(current.boundingBox, childIndex);\n\t\t\t\tlet child = new OctreeGeometryNode(childName, octree, childAABB);\n\t\t\t\tchild.name = childName;\n\t\t\t\tchild.spacing = current.spacing / 2;\n\t\t\t\tchild.level = current.level + 1;\n\n\t\t\t\tcurrent.children[childIndex] = child;\n\t\t\t\tchild.parent = current;\n\n\t\t\t\t// nodes.push(child);\n\t\t\t\tnodes[nodePos] = child;\n\t\t\t\tnodePos++;\n\t\t\t}\n\n\t\t\t// if((i % 500) === 0){\n\t\t\t// \tyield;\n\t\t\t// }\n\t\t}\n\n\t\tlet duration = (performance.now() - tStart);\n\n\t\t// if(duration > 20){\n\t\t// \tlet msg = `duration: ${duration}ms, numNodes: ${numNodes}`;\n\t\t// \tconsole.log(msg);\n\t\t// }\n\t}\n\n\tasync loadHierarchy(node){\n\n\t\tlet {hierarchyByteOffset, hierarchyByteSize} = node;\n\t\tlet hierarchyPath = `${this.url}/../hierarchy.bin`;\n\t\t\n\t\tlet first = hierarchyByteOffset;\n\t\tlet last = first + hierarchyByteSize - 1n;\n\n\t\tlet response = await fetch(hierarchyPath, {\n\t\t\theaders: {\n\t\t\t\t'content-type': 'multipart/byteranges',\n\t\t\t\t'Range': `bytes=${first}-${last}`,\n\t\t\t},\n\t\t});\n\n\n\n\t\tlet buffer = await response.arrayBuffer();\n\n\t\tthis.parseHierarchy(node, buffer);\n\n\t\t// let promise = new Promise((resolve) => {\n\t\t// \tlet generator = this.parseHierarchy(node, buffer);\n\n\t\t// \tlet repeatUntilDone = () => {\n\t\t// \t\tlet result = generator.next();\n\n\t\t// \t\tif(result.done){\n\t\t// \t\t\tresolve();\n\t\t// \t\t}else{\n\t\t// \t\t\trequestAnimationFrame(repeatUntilDone);\n\t\t// \t\t}\n\t\t// \t};\n\t\t\t\n\t\t// \trepeatUntilDone();\n\t\t// });\n\n\t\t// await promise;\n\n\t\t\n\n\n\n\t}\n\n}\n\nlet tmpVec3 = new THREE.Vector3();\nfunction createChildAABB(aabb, index){\n\tlet min = aabb.min.clone();\n\tlet max = aabb.max.clone();\n\tlet size = tmpVec3.subVectors(max, min);\n\n\tif ((index & 0b0001) > 0) {\n\t\tmin.z += size.z / 2;\n\t} else {\n\t\tmax.z -= size.z / 2;\n\t}\n\n\tif ((index & 0b0010) > 0) {\n\t\tmin.y += size.y / 2;\n\t} else {\n\t\tmax.y -= size.y / 2;\n\t}\n\t\n\tif ((index & 0b0100) > 0) {\n\t\tmin.x += size.x / 2;\n\t} else {\n\t\tmax.x -= size.x / 2;\n\t}\n\n\treturn new THREE.Box3(min, max);\n}\n\nlet typenameTypeattributeMap = {\n\t\"double\": PointAttributeTypes.DATA_TYPE_DOUBLE,\n\t\"float\": PointAttributeTypes.DATA_TYPE_FLOAT,\n\t\"int8\": PointAttributeTypes.DATA_TYPE_INT8,\n\t\"uint8\": PointAttributeTypes.DATA_TYPE_UINT8,\n\t\"int16\": PointAttributeTypes.DATA_TYPE_INT16,\n\t\"uint16\": PointAttributeTypes.DATA_TYPE_UINT16,\n\t\"int32\": PointAttributeTypes.DATA_TYPE_INT32,\n\t\"uint32\": PointAttributeTypes.DATA_TYPE_UINT32,\n\t\"int64\": PointAttributeTypes.DATA_TYPE_INT64,\n\t\"uint64\": PointAttributeTypes.DATA_TYPE_UINT64,\n}\n\nexport class OctreeLoader{\n\n\tstatic parseAttributes(jsonAttributes){\n\n\t\tlet attributes = new PointAttributes();\n\n\t\tlet replacements = {\n\t\t\t\"rgb\": \"rgba\",\n\t\t};\n\n\t\tfor(let jsonAttribute of jsonAttributes){\n\t\t\tlet {name, description, size, numElements, elementSize, min, max} = jsonAttribute;\n\n\t\t\tlet type = typenameTypeattributeMap[jsonAttribute.type];\n\n\t\t\tlet potreeAttributeName = replacements[name] ? replacements[name] : name;\n\n\t\t\tlet attribute = new PointAttribute(potreeAttributeName, type, numElements);\n\n\t\t\tif(numElements === 1){\n\t\t\t\tattribute.range = [min[0], max[0]];\n\t\t\t}else{\n\t\t\t\tattribute.range = [min, max];\n\t\t\t}\n\t\t\t\n\t\t\tattribute.initialRange = attribute.range;\n\n\t\t\tattributes.add(attribute);\n\t\t}\n\n\t\t{\n\t\t\t// check if it has normals\n\t\t\tlet hasNormals = \n\t\t\t\tattributes.attributes.find(a => a.name === \"NormalX\") !== undefined &&\n\t\t\t\tattributes.attributes.find(a => a.name === \"NormalY\") !== undefined &&\n\t\t\t\tattributes.attributes.find(a => a.name === \"NormalZ\") !== undefined;\n\n\t\t\tif(hasNormals){\n\t\t\t\tlet vector = {\n\t\t\t\t\tname: \"NORMAL\",\n\t\t\t\t\tattributes: [\"NormalX\", \"NormalY\", \"NormalZ\"],\n\t\t\t\t};\n\t\t\t\tattributes.addVector(vector);\n\t\t\t}\n\t\t}\n\n\t\treturn attributes;\n\t}\n\n\tstatic async load(url){\n\n\t\tlet response = await fetch(url);\n\t\tlet metadata = await response.json();\n\n\t\tlet attributes = OctreeLoader.parseAttributes(metadata.attributes);\n\n\t\tlet loader = new NodeLoader(url);\n\t\tloader.metadata = metadata;\n\t\tloader.attributes = attributes;\n\t\tloader.scale = metadata.scale;\n\t\tloader.offset = metadata.offset;\n\n\t\tlet octree = new OctreeGeometry();\n\t\toctree.url = url;\n\t\toctree.spacing = metadata.spacing;\n\t\toctree.scale = metadata.scale;\n\n\t\t// let aPosition = metadata.attributes.find(a => a.name === \"position\");\n\t\t// octree\n\n\t\tlet min = new THREE.Vector3(...metadata.boundingBox.min);\n\t\tlet max = new THREE.Vector3(...metadata.boundingBox.max);\n\t\tlet boundingBox = new THREE.Box3(min, max);\n\n\t\tlet offset = min.clone();\n\t\tboundingBox.min.sub(offset);\n\t\tboundingBox.max.sub(offset);\n\n\t\toctree.projection = metadata.projection;\n\t\toctree.boundingBox = boundingBox;\n\t\toctree.tightBoundingBox = boundingBox.clone();\n\t\toctree.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\n\t\toctree.tightBoundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\n\t\toctree.offset = offset;\n\t\toctree.pointAttributes = OctreeLoader.parseAttributes(metadata.attributes);\n\t\toctree.loader = loader;\n\n\t\tlet root = new OctreeGeometryNode(\"r\", octree, boundingBox);\n\t\troot.level = 0;\n\t\troot.nodeType = 2;\n\t\troot.hierarchyByteOffset = 0n;\n\t\troot.hierarchyByteSize = BigInt(metadata.hierarchy.firstChunkSize);\n\t\troot.hasChildren = false;\n\t\troot.spacing = octree.spacing;\n\t\troot.byteOffset = 0;\n\n\t\toctree.root = root;\n\n\t\tloader.load(root);\n\n\t\tlet result = {\n\t\t\tgeometry: octree,\n\t\t};\n\n\t\treturn result;\n\n\t}\n\n};","/**\n * @author Connor Manning\n */\n\nexport class EptLoader {\n\tstatic async load(file, callback) {\n\n\t\tlet response = await fetch(file);\n\t\tlet json = await response.json();\n\n\t\tlet url = file.substr(0, file.lastIndexOf('ept.json'));\n\t\tlet geometry = new Potree.PointCloudEptGeometry(url, json);\n\t\tlet root = new Potree.PointCloudEptGeometryNode(geometry);\n\n\t\tgeometry.root = root;\n\t\tgeometry.root.load();\n\n\t\tcallback(geometry);\n\t}\n};\n\n","import {XHRFactory} from \"../../XHRFactory.js\";\n\nexport class EptBinaryLoader {\n\textension() {\n\t\treturn '.bin';\n\t}\n\n\tworkerPath() {\n\t\treturn Potree.scriptPath + '/workers/EptBinaryDecoderWorker.js';\n\t}\n\n\tload(node) {\n\t\tif (node.loaded) return;\n\n\t\tlet url = node.url() + this.extension();\n\n\t\tlet xhr = XHRFactory.createXMLHttpRequest();\n\t\txhr.open('GET', url, true);\n\t\txhr.responseType = 'arraybuffer';\n\t\txhr.overrideMimeType('text/plain; charset=x-user-defined');\n\t\txhr.onreadystatechange = () => {\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tif (xhr.status === 200) {\n\t\t\t\t\tlet buffer = xhr.response;\n\t\t\t\t\tthis.parse(node, buffer);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('Failed ' + url + ': ' + xhr.status);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\ttry {\n\t\t\txhr.send(null);\n\t\t}\n\t\tcatch (e) {\n\t\t\tconsole.log('Failed request: ' + e);\n\t\t}\n\t}\n\n\tparse(node, buffer) {\n\t\tlet workerPath = this.workerPath();\n\t\tlet worker = Potree.workerPool.getWorker(workerPath);\n\n\t\tworker.onmessage = function(e) {\n\t\t\tlet g = new THREE.BufferGeometry();\n\t\t\tlet numPoints = e.data.numPoints;\n\n\t\t\tlet position = new Float32Array(e.data.position);\n\t\t\tg.addAttribute('position', new THREE.BufferAttribute(position, 3));\n\n\t\t\tlet indices = new Uint8Array(e.data.indices);\n\t\t\tg.addAttribute('indices', new THREE.BufferAttribute(indices, 4));\n\n\t\t\tif (e.data.color) {\n\t\t\t\tlet color = new Uint8Array(e.data.color);\n\t\t\t\tg.addAttribute('color', new THREE.BufferAttribute(color, 4, true));\n\t\t\t}\n\t\t\tif (e.data.intensity) {\n\t\t\t\tlet intensity = new Float32Array(e.data.intensity);\n\t\t\t\tg.addAttribute('intensity',\n\t\t\t\t\t\tnew THREE.BufferAttribute(intensity, 1));\n\t\t\t}\n\t\t\tif (e.data.classification) {\n\t\t\t\tlet classification = new Uint8Array(e.data.classification);\n\t\t\t\tg.addAttribute('classification',\n\t\t\t\t\t\tnew THREE.BufferAttribute(classification, 1));\n\t\t\t}\n\t\t\tif (e.data.returnNumber) {\n\t\t\t\tlet returnNumber = new Uint8Array(e.data.returnNumber);\n\t\t\t\tg.addAttribute('return number',\n\t\t\t\t\t\tnew THREE.BufferAttribute(returnNumber, 1));\n\t\t\t}\n\t\t\tif (e.data.numberOfReturns) {\n\t\t\t\tlet numberOfReturns = new Uint8Array(e.data.numberOfReturns);\n\t\t\t\tg.addAttribute('number of returns',\n\t\t\t\t\t\tnew THREE.BufferAttribute(numberOfReturns, 1));\n\t\t\t}\n\t\t\tif (e.data.pointSourceId) {\n\t\t\t\tlet pointSourceId = new Uint16Array(e.data.pointSourceId);\n\t\t\t\tg.addAttribute('source id',\n\t\t\t\t\t\tnew THREE.BufferAttribute(pointSourceId, 1));\n\t\t\t}\n\n\t\t\tg.attributes.indices.normalized = true;\n\n\t\t\tlet tightBoundingBox = new THREE.Box3(\n\t\t\t\tnew THREE.Vector3().fromArray(e.data.tightBoundingBox.min),\n\t\t\t\tnew THREE.Vector3().fromArray(e.data.tightBoundingBox.max)\n\t\t\t);\n\n\t\t\tnode.doneLoading(\n\t\t\t\t\tg,\n\t\t\t\t\ttightBoundingBox,\n\t\t\t\t\tnumPoints,\n\t\t\t\t\tnew THREE.Vector3(...e.data.mean));\n\n\t\t\tPotree.workerPool.returnWorker(workerPath, worker);\n\t\t};\n\n\t\tlet toArray = (v) => [v.x, v.y, v.z];\n\t\tlet message = {\n\t\t\tbuffer: buffer,\n\t\t\tschema: node.ept.schema,\n\t\t\tscale: node.ept.eptScale,\n\t\t\toffset: node.ept.eptOffset,\n\t\t\tmins: toArray(node.key.b.min)\n\t\t};\n\n\t\tworker.postMessage(message, [message.buffer]);\n\t}\n};\n\n","import {XHRFactory} from \"../../XHRFactory.js\";\n\n/**\n * laslaz code taken and adapted from plas.io js-laslaz\n *\t http://plas.io/\n *\thttps://github.com/verma/plasio\n *\n * Thanks to Uday Verma and Howard Butler\n *\n */\n\nexport class EptLaszipLoader {\n\tload(node) {\n\t\tif (node.loaded) return;\n\n\t\tlet url = node.url() + '.laz';\n\n\t\tlet xhr = XHRFactory.createXMLHttpRequest();\n\t\txhr.open('GET', url, true);\n\t\txhr.responseType = 'arraybuffer';\n\t\txhr.overrideMimeType('text/plain; charset=x-user-defined');\n\t\txhr.onreadystatechange = () => {\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tif (xhr.status === 200) {\n\t\t\t\t\tlet buffer = xhr.response;\n\t\t\t\t\tthis.parse(node, buffer);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('Failed ' + url + ': ' + xhr.status);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\txhr.send(null);\n\t}\n\n\tasync parse(node, buffer){\n\t\tlet lf = new LASFile(buffer);\n\t\tlet handler = new EptLazBatcher(node);\n\n\t\ttry{\n\t\t\tawait lf.open();\n\n\t\t\tlf.isOpen = true;\n\n\t\t\tconst header = await lf.getHeader();\n\n\t\t\t{\n\t\t\t\tlet i = 0;\n\n\t\t\t\tlet toArray = (v) => [v.x, v.y, v.z];\n\t\t\t\tlet mins = toArray(node.key.b.min);\n\t\t\t\tlet maxs = toArray(node.key.b.max);\n\n\t\t\t\tlet hasMoreData = true;\n\n\t\t\t\twhile(hasMoreData){\n\t\t\t\t\tconst data = await lf.readData(1000000, 0, 1);\n\n\t\t\t\t\tlet d = new LASDecoder(\n\t\t\t\t\t\tdata.buffer,\n\t\t\t\t\t\theader.pointsFormatId,\n\t\t\t\t\t\theader.pointsStructSize,\n\t\t\t\t\t\tdata.count,\n\t\t\t\t\t\theader.scale,\n\t\t\t\t\t\theader.offset,\n\t\t\t\t\t\tmins,\n\t\t\t\t\t\tmaxs);\n\n\t\t\t\t\td.extraBytes = header.extraBytes;\n\t\t\t\t\td.pointsFormatId = header.pointsFormatId;\n\t\t\t\t\thandler.push(d);\n\n\t\t\t\t\ti += data.count;\n\n\t\t\t\t\thasMoreData = data.hasMoreData;\n\t\t\t\t}\n\n\t\t\t\theader.totalRead = i;\n\t\t\t\theader.versionAsString = lf.versionAsString;\n\t\t\t\theader.isCompressed = lf.isCompressed;\n\n\t\t\t\tawait lf.close();\n\n\t\t\t\tlf.isOpen = false;\n\t\t\t}\n\n\t\t}catch(err){\n\t\t\tconsole.error('Error reading LAZ:', err);\n\t\t\t\n\t\t\tif (lf.isOpen) {\n\t\t\t\tawait lf.close();\n\n\t\t\t\tlf.isOpen = false;\n\t\t\t}\n\t\t\t\n\t\t\tthrow err;\n\t\t}\n\t}\n};\n\nexport class EptLazBatcher {\n\tconstructor(node) { this.node = node; }\n\n\tpush(las) {\n\t\tlet workerPath = Potree.scriptPath +\n\t\t\t'/workers/EptLaszipDecoderWorker.js';\n\t\tlet worker = Potree.workerPool.getWorker(workerPath);\n\n\t\tworker.onmessage = (e) => {\n\t\t\tlet g = new THREE.BufferGeometry();\n\t\t\tlet numPoints = las.pointsCount;\n\n\t\t\tlet positions = new Float32Array(e.data.position);\n\t\t\tlet colors = new Uint8Array(e.data.color);\n\n\t\t\tlet intensities = new Float32Array(e.data.intensity);\n\t\t\tlet classifications = new Uint8Array(e.data.classification);\n\t\t\tlet returnNumbers = new Uint8Array(e.data.returnNumber);\n\t\t\tlet numberOfReturns = new Uint8Array(e.data.numberOfReturns);\n\t\t\tlet pointSourceIDs = new Uint16Array(e.data.pointSourceID);\n\t\t\tlet indices = new Uint8Array(e.data.indices);\n\t\t\tlet gpsTime = new Float32Array(e.data.gpsTime);\n\n\t\t\tg.addAttribute('position',\n\t\t\t\t\tnew THREE.BufferAttribute(positions, 3));\n\t\t\tg.addAttribute('rgba',\n\t\t\t\t\tnew THREE.BufferAttribute(colors, 4, true));\n\t\t\tg.addAttribute('intensity',\n\t\t\t\t\tnew THREE.BufferAttribute(intensities, 1));\n\t\t\tg.addAttribute('classification',\n\t\t\t\t\tnew THREE.BufferAttribute(classifications, 1));\n\t\t\tg.addAttribute('return number',\n\t\t\t\t\tnew THREE.BufferAttribute(returnNumbers, 1));\n\t\t\tg.addAttribute('number of returns',\n\t\t\t\t\tnew THREE.BufferAttribute(numberOfReturns, 1));\n\t\t\tg.addAttribute('source id',\n\t\t\t\t\tnew THREE.BufferAttribute(pointSourceIDs, 1));\n\t\t\tg.addAttribute('indices',\n\t\t\t\t\tnew THREE.BufferAttribute(indices, 4));\n\t\t\tg.addAttribute('gpsTime',\n\t\t\t\t\tnew THREE.BufferAttribute(gpsTime, 1));\n\t\t\tthis.node.gpsTime = e.data.gpsMeta;\n\n\t\t\tg.attributes.indices.normalized = true;\n\n\t\t\tlet tightBoundingBox = new THREE.Box3(\n\t\t\t\tnew THREE.Vector3().fromArray(e.data.tightBoundingBox.min),\n\t\t\t\tnew THREE.Vector3().fromArray(e.data.tightBoundingBox.max)\n\t\t\t);\n\n\t\t\tthis.node.doneLoading(\n\t\t\t\tg,\n\t\t\t\ttightBoundingBox,\n\t\t\t\tnumPoints,\n\t\t\t\tnew THREE.Vector3(...e.data.mean));\n\n\t\t\tPotree.workerPool.returnWorker(workerPath, worker);\n\t\t};\n\n\t\tlet message = {\n\t\t\tbuffer: las.arrayb,\n\t\t\tnumPoints: las.pointsCount,\n\t\t\tpointSize: las.pointSize,\n\t\t\tpointFormatID: las.pointsFormatId,\n\t\t\tscale: las.scale,\n\t\t\toffset: las.offset,\n\t\t\tmins: las.mins,\n\t\t\tmaxs: las.maxs\n\t\t};\n\n\t\tworker.postMessage(message, [message.buffer]);\n\t};\n};\n\n","import {EptBinaryLoader} from \"./BinaryLoader.js\";\n\nexport class EptZstandardLoader extends EptBinaryLoader {\n extension() {\n return '.zst';\n }\n\n workerPath() {\n return Potree.scriptPath + '/workers/EptZstandardDecoderWorker.js';\n }\n};\n\n","\n\nexport class ShapefileLoader{\n\n\tconstructor(){\n\t\tthis.transform = null;\n\t}\n\n\tasync load(path){\n\n\t\tconst matLine = new THREE.LineMaterial( {\n\t\t\tcolor: 0xff0000,\n\t\t\tlinewidth: 3, // in pixels\n\t\t\tresolution: new THREE.Vector2(1000, 1000),\n\t\t\tdashed: false\n\t\t} );\n\n\t\tconst features = await this.loadShapefileFeatures(path);\n\t\tconst node = new THREE.Object3D();\n\t\t\n\t\tfor(const feature of features){\n\t\t\tconst fnode = this.featureToSceneNode(feature, matLine);\n\t\t\tnode.add(fnode);\n\t\t}\n\n\t\tlet setResolution = (x, y) => {\n\t\t\tmatLine.resolution.set(x, y);\n\t\t};\n\n\t\tconst result = {\n\t\t\tfeatures: features,\n\t\t\tnode: node,\n\t\t\tsetResolution: setResolution,\n\t\t};\n\n\t\treturn result;\n\t}\n\n\tfeatureToSceneNode(feature, matLine){\n\t\tlet geometry = feature.geometry;\n\t\t\n\t\tlet color = new THREE.Color(1, 1, 1);\n\n\t\tlet transform = this.transform;\n\t\tif(transform === null){\n\t\t\ttransform = {forward: (v) => v};\n\t\t}\n\t\t\n\t\tif(feature.geometry.type === \"Point\"){\n\t\t\tlet sg = new THREE.SphereGeometry(1, 18, 18);\n\t\t\tlet sm = new THREE.MeshNormalMaterial();\n\t\t\tlet s = new THREE.Mesh(sg, sm);\n\t\t\t\n\t\t\tlet [long, lat] = geometry.coordinates;\n\t\t\tlet pos = transform.forward([long, lat]);\n\t\t\t\n\t\t\ts.position.set(...pos, 20);\n\t\t\t\n\t\t\ts.scale.set(10, 10, 10);\n\t\t\t\n\t\t\treturn s;\n\t\t}else if(geometry.type === \"LineString\"){\n\t\t\tlet coordinates = [];\n\t\t\t\n\t\t\tlet min = new THREE.Vector3(Infinity, Infinity, Infinity);\n\t\t\tfor(let i = 0; i < geometry.coordinates.length; i++){\n\t\t\t\tlet [long, lat] = geometry.coordinates[i];\n\t\t\t\tlet pos = transform.forward([long, lat]);\n\t\t\t\t\n\t\t\t\tmin.x = Math.min(min.x, pos[0]);\n\t\t\t\tmin.y = Math.min(min.y, pos[1]);\n\t\t\t\tmin.z = Math.min(min.z, 20);\n\t\t\t\t\n\t\t\t\tcoordinates.push(...pos, 20);\n\t\t\t\tif(i > 0 && i < geometry.coordinates.length - 1){\n\t\t\t\t\tcoordinates.push(...pos, 20);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfor(let i = 0; i < coordinates.length; i += 3){\n\t\t\t\tcoordinates[i+0] -= min.x;\n\t\t\t\tcoordinates[i+1] -= min.y;\n\t\t\t\tcoordinates[i+2] -= min.z;\n\t\t\t}\n\t\t\t\n\t\t\tconst lineGeometry = new THREE.LineGeometry();\n\t\t\tlineGeometry.setPositions( coordinates );\n\n\t\t\tconst line = new THREE.Line2( lineGeometry, matLine );\n\t\t\tline.computeLineDistances();\n\t\t\tline.scale.set( 1, 1, 1 );\n\t\t\tline.position.copy(min);\n\t\t\t\n\t\t\treturn line;\n\t\t}else if(geometry.type === \"Polygon\"){\n\t\t\tfor(let pc of geometry.coordinates){\n\t\t\t\tlet coordinates = [];\n\t\t\t\t\n\t\t\t\tlet min = new THREE.Vector3(Infinity, Infinity, Infinity);\n\t\t\t\tfor(let i = 0; i < pc.length; i++){\n\t\t\t\t\tlet [long, lat] = pc[i];\n\t\t\t\t\tlet pos = transform.forward([long, lat]);\n\t\t\t\t\t\n\t\t\t\t\tmin.x = Math.min(min.x, pos[0]);\n\t\t\t\t\tmin.y = Math.min(min.y, pos[1]);\n\t\t\t\t\tmin.z = Math.min(min.z, 20);\n\t\t\t\t\t\n\t\t\t\t\tcoordinates.push(...pos, 20);\n\t\t\t\t\tif(i > 0 && i < pc.length - 1){\n\t\t\t\t\t\tcoordinates.push(...pos, 20);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor(let i = 0; i < coordinates.length; i += 3){\n\t\t\t\t\tcoordinates[i+0] -= min.x;\n\t\t\t\t\tcoordinates[i+1] -= min.y;\n\t\t\t\t\tcoordinates[i+2] -= min.z;\n\t\t\t\t}\n\n\t\t\t\tconst lineGeometry = new THREE.LineGeometry();\n\t\t\t\tlineGeometry.setPositions( coordinates );\n\n\t\t\t\tconst line = new THREE.Line2( lineGeometry, matLine );\n\t\t\t\tline.computeLineDistances();\n\t\t\t\tline.scale.set( 1, 1, 1 );\n\t\t\t\tline.position.copy(min);\n\t\t\t\t\n\t\t\t\treturn line;\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.log(\"unhandled feature: \", feature);\n\t\t}\n\t}\n\n\tasync loadShapefileFeatures(file){\n\t\tlet features = [];\n\n\t\tlet source = await shapefile.open(file);\n\n\t\twhile(true){\n\t\t\tlet result = await source.read();\n\n\t\t\tif (result.done) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (result.value && result.value.type === 'Feature' && result.value.geometry !== undefined) {\n\t\t\t\tfeatures.push(result.value);\n\t\t\t}\n\t\t}\n\n\t\treturn features;\n\t}\n\n};\n\n","\nimport {Utils} from \"../utils.js\";\n\nconst defaultColors = {\n\t\"landuse\": [0.5, 0.5, 0.5],\n\t\"natural\": [0.0, 1.0, 0.0],\n\t\"places\": [1.0, 0.0, 1.0],\n\t\"points\": [0.0, 1.0, 1.0],\n\t\"roads\": [1.0, 1.0, 0.0],\n\t\"waterways\": [0.0, 0.0, 1.0],\n\t\"default\": [0.9, 0.6, 0.1],\n};\n\nfunction getColor(feature){\n\tlet color = defaultColors[feature];\n\n\tif(!color){\n\t\tcolor = defaultColors[\"default\"];\n\t}\n\n\treturn color;\n}\n\nexport class Geopackage{\n\tconstructor(){\n\t\tthis.path = null;\n\t\tthis.node = null;\n\t}\n};\n\nexport class GeoPackageLoader{\n\n\tconstructor(){\n\n\t}\n\n\tstatic async loadUrl(url, params){\n\n\t\tawait Promise.all([\n\t\t\tUtils.loadScript(`${Potree.scriptPath}/lazylibs/geopackage/geopackage.js`),\n\t\t\tUtils.loadScript(`${Potree.scriptPath}/lazylibs/sql.js/sql-wasm.js`),\n\t\t]);\n\t\t\n\t\tconst result = await fetch(url);\n\t\tconst buffer = await result.arrayBuffer();\n\n\t\tparams = params || {};\n\n\t\tparams.source = url;\n\n\t\treturn GeoPackageLoader.loadBuffer(buffer, params);\n\t}\n\n\tstatic async loadBuffer(buffer, params){\n\n\t\tawait Promise.all([\n\t\t\tUtils.loadScript(`${Potree.scriptPath}/lazylibs/geopackage/geopackage.js`),\n\t\t\tUtils.loadScript(`${Potree.scriptPath}/lazylibs/sql.js/sql-wasm.js`),\n\t\t]);\n\n\t\tparams = params || {};\n\n\t\tconst resolver = async (resolve) => {\n\t\t\t\n\t\t\tlet transform = params.transform;\n\t\t\tif(!transform){\n\t\t\t\ttransform = {forward: (arg) => arg};\n\t\t\t}\n\n\t\t\tconst wasmPath = `${Potree.scriptPath}/lazylibs/sql.js/sql-wasm.wasm`;\n\t\t\tconst SQL = await initSqlJs({ locateFile: filename => wasmPath});\n\n\t\t\tconst u8 = new Uint8Array(buffer);\n\n\t\t\tconst data = await geopackage.open(u8);\n\t\t\twindow.data = data;\n\n\t\t\tconst geopackageNode = new THREE.Object3D();\n\t\t\tgeopackageNode.name = params.source;\n\t\t\tgeopackageNode.potree = {\n\t\t\t\tsource: params.source,\n\t\t\t};\n\n\t\t\tconst geo = new Geopackage();\n\t\t\tgeo.path = params.source;\n\t\t\tgeo.node = geopackageNode;\n\n\t\t\tconst tables = data.getTables();\n\n\t\t\tfor(const table of tables.features){\n\t\t\t\tconst dao = data.getFeatureDao(table);\n\n\t\t\t\tlet boundingBox = dao.getBoundingBox();\n\t\t\t\tboundingBox = boundingBox.projectBoundingBox(dao.projection, 'EPSG:4326');\n\t\t\t\tconst geoJson = data.queryForGeoJSONFeaturesInTable(table, boundingBox);\n\n\t\t\t\tconst matLine = new THREE.LineMaterial( {\n\t\t\t\t\tcolor: new THREE.Color().setRGB(...getColor(table)),\n\t\t\t\t\tlinewidth: 2, \n\t\t\t\t\tresolution: new THREE.Vector2(1000, 1000),\n\t\t\t\t\tdashed: false\n\t\t\t\t} );\n\n\t\t\t\tconst node = new THREE.Object3D();\n\t\t\t\tnode.name = table;\n\t\t\t\tgeo.node.add(node);\n\n\t\t\t\tfor(const [index, feature] of Object.entries(geoJson)){\n\t\t\t\t\t//const featureNode = GeoPackageLoader.featureToSceneNode(feature, matLine, transform);\n\t\t\t\t\tconst featureNode = GeoPackageLoader.featureToSceneNode(feature, matLine, dao.projection, transform);\n\t\t\t\t\tnode.add(featureNode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresolve(geo);\n\t\t}\n\n\t\treturn new Promise(resolver);\n\t}\n\n\tstatic featureToSceneNode(feature, matLine, geopackageProjection, transform){\n\t\tlet geometry = feature.geometry;\n\t\t\n\t\tlet color = new THREE.Color(1, 1, 1);\n\t\t\n\t\tif(feature.geometry.type === \"Point\"){\n\t\t\tlet sg = new THREE.SphereGeometry(1, 18, 18);\n\t\t\tlet sm = new THREE.MeshNormalMaterial();\n\t\t\tlet s = new THREE.Mesh(sg, sm);\n\t\t\t\n\t\t\tlet [long, lat] = geometry.coordinates;\n\t\t\tlet pos = transform.forward(geopackageProjection.forward([long, lat]));\n\t\t\t\n\t\t\ts.position.set(...pos, 20);\n\t\t\t\n\t\t\ts.scale.set(10, 10, 10);\n\t\t\t\n\t\t\treturn s;\n\t\t}else if(geometry.type === \"LineString\"){\n\t\t\tlet coordinates = [];\n\t\t\t\n\t\t\tlet min = new THREE.Vector3(Infinity, Infinity, Infinity);\n\t\t\tfor(let i = 0; i < geometry.coordinates.length; i++){\n\t\t\t\tlet [long, lat] = geometry.coordinates[i];\n\t\t\t\tlet pos = transform.forward(geopackageProjection.forward([long, lat]));\n\t\t\t\t\n\t\t\t\tmin.x = Math.min(min.x, pos[0]);\n\t\t\t\tmin.y = Math.min(min.y, pos[1]);\n\t\t\t\tmin.z = Math.min(min.z, 20);\n\t\t\t\t\n\t\t\t\tcoordinates.push(...pos, 20);\n\t\t\t\tif(i > 0 && i < geometry.coordinates.length - 1){\n\t\t\t\t\tcoordinates.push(...pos, 20);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfor(let i = 0; i < coordinates.length; i += 3){\n\t\t\t\tcoordinates[i+0] -= min.x;\n\t\t\t\tcoordinates[i+1] -= min.y;\n\t\t\t\tcoordinates[i+2] -= min.z;\n\t\t\t}\n\t\t\t\n\t\t\tconst lineGeometry = new THREE.LineGeometry();\n\t\t\tlineGeometry.setPositions( coordinates );\n\n\t\t\tconst line = new THREE.Line2( lineGeometry, matLine );\n\t\t\tline.computeLineDistances();\n\t\t\tline.scale.set( 1, 1, 1 );\n\t\t\tline.position.copy(min);\n\t\t\t\n\t\t\treturn line;\n\t\t}else if(geometry.type === \"Polygon\"){\n\t\t\tfor(let pc of geometry.coordinates){\n\t\t\t\tlet coordinates = [];\n\t\t\t\t\n\t\t\t\tlet min = new THREE.Vector3(Infinity, Infinity, Infinity);\n\t\t\t\tfor(let i = 0; i < pc.length; i++){\n\t\t\t\t\tlet [long, lat] = pc[i];\n\t\t\t\t\t\n\t\t\t\t\tlet pos = transform.forward(geopackageProjection.forward([long, lat]));\n\t\t\t\t\t\n\t\t\t\t\tmin.x = Math.min(min.x, pos[0]);\n\t\t\t\t\tmin.y = Math.min(min.y, pos[1]);\n\t\t\t\t\tmin.z = Math.min(min.z, 20);\n\t\t\t\t\t\n\t\t\t\t\tcoordinates.push(...pos, 20);\n\t\t\t\t\tif(i > 0 && i < pc.length - 1){\n\t\t\t\t\t\tcoordinates.push(...pos, 20);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor(let i = 0; i < coordinates.length; i += 3){\n\t\t\t\t\tcoordinates[i+0] -= min.x;\n\t\t\t\t\tcoordinates[i+1] -= min.y;\n\t\t\t\t\tcoordinates[i+2] -= min.z;\n\t\t\t\t}\n\n\t\t\t\tconst lineGeometry = new THREE.LineGeometry();\n\t\t\t\tlineGeometry.setPositions( coordinates );\n\n\t\t\t\tconst line = new THREE.Line2( lineGeometry, matLine );\n\t\t\t\tline.computeLineDistances();\n\t\t\t\tline.scale.set( 1, 1, 1 );\n\t\t\t\tline.position.copy(min);\n\t\t\t\t\n\t\t\t\treturn line;\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.log(\"unhandled feature: \", feature);\n\t\t}\n\t}\n\n};","\n\nexport class ClipVolume extends THREE.Object3D{\n\t\n\tconstructor(args){\n\t\tsuper();\n\t\t\n\t\tthis.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1;\n\t\tthis.name = \"clip_volume_\" + this.constructor.counter;\n\n\t\tlet alpha = args.alpha || 0;\n\t\tlet beta = args.beta || 0;\n\t\tlet gamma = args.gamma || 0;\n\n\t\tthis.rotation.x = alpha;\n\t\tthis.rotation.y = beta;\n\t\tthis.rotation.z = gamma;\n\n\t\tthis.clipOffset = 0.001;\n\t\tthis.clipRotOffset = 1;\n\t\t\t\t\n\t\tlet boxGeometry = new THREE.BoxGeometry(1, 1, 1);\n\t\tboxGeometry.computeBoundingBox();\n\t\t\n\t\tlet boxFrameGeometry = new THREE.Geometry();\n\t\t{\t\t\t\n\t\t\t// bottom\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5));\n\t\t\t// top\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5));\n\t\t\t// sides\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5));\n\n\t\t\tboxFrameGeometry.colors.push(new THREE.Vector3(1, 1, 1));\n\t\t}\n\n\t\tlet planeFrameGeometry = new THREE.Geometry();\n\t\t{\t\t\t\t\t\t\n\t\t\t// middle line\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.0));\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.0));\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.0));\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.0));\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.0));\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.0));\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.0));\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.0));\n\t\t}\n\n\t\tthis.dimension = new THREE.Vector3(1, 1, 1);\n\t\tthis.material = new THREE.MeshBasicMaterial( {\n\t\t\tcolor: 0x00ff00, \n\t\t\ttransparent: true, \n\t\t\topacity: 0.3,\n\t\t\tdepthTest: true, \n\t\t\tdepthWrite: false} );\n\t\tthis.box = new THREE.Mesh(boxGeometry, this.material);\n\t\tthis.box.geometry.computeBoundingBox();\n\t\tthis.boundingBox = this.box.geometry.boundingBox;\n\t\tthis.add(this.box);\n\t\t\n\t\tthis.frame = new THREE.LineSegments( boxFrameGeometry, new THREE.LineBasicMaterial({color: 0x000000}));\n\t\tthis.add(this.frame);\n\t\tthis.planeFrame = new THREE.LineSegments( planeFrameGeometry, new THREE.LineBasicMaterial({color: 0xff0000}));\n\t\tthis.add(this.planeFrame);\n\n\t\t// set default thickness\n\t\tthis.setScaleZ(0.1);\n\n\t\t// create local coordinate system\n\t\tlet createArrow = (name, direction, color) => {\n\t\t\tlet material = new THREE.MeshBasicMaterial({\n\t\t\t\tcolor: color, \n\t\t\t\tdepthTest: false, \n\t\t\t\tdepthWrite: false});\n\t\t\t\t\n\t\t\tlet shaftGeometry = new THREE.Geometry();\n\t\t\tshaftGeometry.vertices.push(new THREE.Vector3(0, 0, 0));\n\t\t\tshaftGeometry.vertices.push(new THREE.Vector3(0, 1, 0));\n\t\t\t\n\t\t\tlet shaftMaterial = new THREE.LineBasicMaterial({\n\t\t\t\tcolor: color, \n\t\t\t\tdepthTest: false, \n\t\t\t\tdepthWrite: false,\n\t\t\t\ttransparent: true\n\t\t\t\t});\n\t\t\tlet shaft = new THREE.Line(shaftGeometry, shaftMaterial);\n\t\t\tshaft.name = name + \"_shaft\";\n\t\t\t\n\t\t\tlet headGeometry = new THREE.CylinderGeometry(0, 0.04, 0.1, 10, 1, false);\n\t\t\tlet headMaterial = material;\n\t\t\tlet head = new THREE.Mesh(headGeometry, headMaterial);\n\t\t\thead.name = name + \"_head\";\n\t\t\thead.position.y = 1;\n\t\t\t\n\t\t\tlet arrow = new THREE.Object3D();\n\t\t\tarrow.name = name;\n\t\t\tarrow.add(shaft);\n\t\t\tarrow.add(head);\n\n\t\t\treturn arrow;\n\t\t};\n\t\t\n\t\tthis.arrowX = createArrow(\"arrow_x\", new THREE.Vector3(1, 0, 0), 0xFF0000);\n\t\tthis.arrowY = createArrow(\"arrow_y\", new THREE.Vector3(0, 1, 0), 0x00FF00);\n\t\tthis.arrowZ = createArrow(\"arrow_z\", new THREE.Vector3(0, 0, 1), 0x0000FF);\n\t\t\n\t\tthis.arrowX.rotation.z = -Math.PI / 2;\n\t\tthis.arrowZ.rotation.x = Math.PI / 2;\n\n\t\tthis.arrowX.visible = false;\n\t\tthis.arrowY.visible = false;\n\t\tthis.arrowZ.visible = false;\n\n\t\tthis.add(this.arrowX);\n\t\tthis.add(this.arrowY);\n\t\tthis.add(this.arrowZ);\n\t\t\n\t\t{ // event listeners\n\t\t\tthis.addEventListener(\"ui_select\", e => { \n\t\t\t\tthis.arrowX.visible = true;\n\t\t\t\tthis.arrowY.visible = true;\n\t\t\t\tthis.arrowZ.visible = true; \n\t\t\t});\n\t\t\tthis.addEventListener(\"ui_deselect\", e => {\n\t\t\t\tthis.arrowX.visible = false;\n\t\t\t\tthis.arrowY.visible = false;\n\t\t\t\tthis.arrowZ.visible = false; \t\t\t\t\n\t\t\t});\n\t\t\tthis.addEventListener(\"select\", e => { \n\t\t\t\tlet scene_header = $(\"#\" + this.name + \" .scene_header\");\n\t\t\t\tif(!scene_header.next().is(\":visible\")) {\n\t\t\t\t\tscene_header.click();\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.addEventListener(\"deselect\", e => { \n\t\t\t\tlet scene_header = $(\"#\" + this.name + \" .scene_header\");\n\t\t\t\tif(scene_header.next().is(\":visible\")) {\n\t\t\t\t\tscene_header.click();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\tthis.update();\n\t};\n\n\tsetClipOffset(offset) {\t\t\n\t\tthis.clipOffset = offset;\t\n\t}\n\n\tsetClipRotOffset(offset) {\t\t\n\t\tthis.clipRotOffset = offset;\t\t\n\t}\n\n\tsetScaleX(x) {\n\t\tthis.box.scale.x = x;\n\t\tthis.frame.scale.x = x;\n\t\tthis.planeFrame.scale.x = x;\t\t\t\n\t}\n\n\tsetScaleY(y) {\n\t\tthis.box.scale.y = y;\n\t\tthis.frame.scale.y = y;\n\t\tthis.planeFrame.scale.y = y;\t\t\n\t}\n\n\tsetScaleZ(z) {\n\t\tthis.box.scale.z = z;\n\t\tthis.frame.scale.z = z;\n\t\tthis.planeFrame.scale.z = z;\t\t\n\t}\n\n\toffset(args) {\n\t\tlet cs = args.cs || null;\n\t\tlet axis = args.axis || null;\n\t\tlet dir = args.dir || null;\n\n\t\tif(!cs || !axis || !dir) return;\n\n\t\tif(axis === \"x\") {\n\t\t\tif(cs === \"local\") {\n\t\t\t\tthis.position.add(this.localX.clone().multiplyScalar(dir * this.clipOffset));\n\t\t\t} else if(cs === \"global\") {\n\t\t\t\tthis.position.x = this.position.x + dir * this.clipOffset;\n\t\t\t}\n\t\t}else if(axis === \"y\") {\n\t\t\tif(cs === \"local\") {\n\t\t\t\tthis.position.add(this.localY.clone().multiplyScalar(dir * this.clipOffset));\n\t\t\t} else if(cs === \"global\") {\n\t\t\t\tthis.position.y = this.position.y + dir * this.clipOffset;\n\t\t\t}\n\t\t}else if(axis === \"z\") {\n\t\t\tif(cs === \"local\") {\n\t\t\t\tthis.position.add(this.localZ.clone().multiplyScalar(dir * this.clipOffset));\n\t\t\t} else if(cs === \"global\") {\n\t\t\t\tthis.position.z = this.position.z + dir * this.clipOffset;\n\t\t\t}\n\t\t}\n\n\t\tthis.dispatchEvent({\"type\": \"clip_volume_changed\", \"viewer\": viewer, \"volume\": this});\n\t}\t\n\n\trotate(args) {\n\t\tlet cs = args.cs || null;\n\t\tlet axis = args.axis || null;\n\t\tlet dir = args.dir || null;\n\n\t\tif(!cs || !axis || !dir) return;\n\n\t\tif(cs === \"local\") {\n\t\t\tif(axis === \"x\") {\n\t\t\t\tthis.rotateOnAxis(new THREE.Vector3(1, 0, 0), dir * this.clipRotOffset * Math.PI / 180);\n\t\t\t} else if(axis === \"y\") {\n\t\t\t\tthis.rotateOnAxis(new THREE.Vector3(0, 1, 0), dir * this.clipRotOffset * Math.PI / 180);\n\t\t\t} else if(axis === \"z\") {\n\t\t\t\tthis.rotateOnAxis(new THREE.Vector3(0, 0, 1), dir * this.clipRotOffset * Math.PI / 180);\n\t\t\t}\n\t\t} else if(cs === \"global\") {\n\t\t\tlet rotaxis = new THREE.Vector4(1, 0, 0, 0);\t\n\t\t\tif(axis === \"y\") {\n\t\t\t\trotaxis = new THREE.Vector4(0, 1, 0, 0);\n\t\t\t} else if(axis === \"z\") {\n\t\t\t\trotaxis = new THREE.Vector4(0, 0, 1, 0);\n\t\t\t}\n\t\t\tthis.updateMatrixWorld();\n\t\t\tlet invM = new THREE.Matrix4().getInverse(this.matrixWorld);\n\t\t\trotaxis = rotaxis.applyMatrix4(invM).normalize();\n\t\t\trotaxis = new THREE.Vector3(rotaxis.x, rotaxis.y, rotaxis.z);\n\t\t\tthis.rotateOnAxis(rotaxis, dir * this.clipRotOffset * Math.PI / 180);\n\t\t}\n\n\t\tthis.updateLocalSystem();\n\n\t\tthis.dispatchEvent({\"type\": \"clip_volume_changed\", \"viewer\": viewer, \"volume\": this});\n\t}\t\n\n\tupdate(){\n\t\tthis.boundingBox = this.box.geometry.boundingBox;\n\t\tthis.boundingSphere = this.boundingBox.getBoundingSphere(new THREE.Sphere());\n\t\t\n\t\tthis.box.visible = false;\n\n\t\tthis.updateLocalSystem();\n\t};\n\n\tupdateLocalSystem() {\t\t\n\t\t// extract local coordinate axes\n\t\tlet rotQuat = this.getWorldQuaternion();\n\t\tthis.localX = new THREE.Vector3(1, 0, 0).applyQuaternion(rotQuat).normalize();\n\t\tthis.localY = new THREE.Vector3(0, 1, 0).applyQuaternion(rotQuat).normalize();\n\t\tthis.localZ = new THREE.Vector3(0, 0, 1).applyQuaternion(rotQuat).normalize();\n\t}\n\t\n\traycast(raycaster, intersects){\n\t\t\n\t\tlet is = [];\n\t\tthis.box.raycast(raycaster, is);\n\t\n\t\tif(is.length > 0){\n\t\t\tlet I = is[0];\n\t\t\tintersects.push({\n\t\t\t\tdistance: I.distance,\n\t\t\t\tobject: this,\n\t\t\t\tpoint: I.point.clone()\n\t\t\t});\n\t\t}\n\t};\n};\n","\nimport {ClipVolume} from \"./ClipVolume.js\";\nimport {PolygonClipVolume} from \"./PolygonClipVolume.js\";\nimport { EventDispatcher } from \"../EventDispatcher.js\";\n\nexport class ClippingTool extends EventDispatcher{\n\n\tconstructor(viewer){\n\t\tsuper(); \n\n\t\tthis.viewer = viewer;\n\n\t\tthis.maxPolygonVertices = 8; \n\t\t\n\t\tthis.addEventListener(\"start_inserting_clipping_volume\", e => {\n\t\t\tthis.viewer.dispatchEvent({\n\t\t\t\ttype: \"cancel_insertions\"\n\t\t\t});\n\t\t});\n\n\t\tthis.sceneMarker = new THREE.Scene();\n\t\tthis.sceneVolume = new THREE.Scene();\n\t\tthis.sceneVolume.name = \"scene_clip_volume\";\n\t\tthis.viewer.inputHandler.registerInteractiveScene(this.sceneVolume);\n\n\t\tthis.onRemove = e => {\n\t\t\tthis.sceneVolume.remove(e.volume);\n\t\t};\n\t\t\n\t\tthis.onAdd = e => {\n\t\t\tthis.sceneVolume.add(e.volume);\n\t\t};\n\t\t\n\t\tthis.viewer.inputHandler.addEventListener(\"delete\", e => {\n\t\t\tlet volumes = e.selection.filter(e => (e instanceof ClipVolume));\n\t\t\tvolumes.forEach(e => this.viewer.scene.removeClipVolume(e));\n\t\t\tlet polyVolumes = e.selection.filter(e => (e instanceof PolygonClipVolume));\n\t\t\tpolyVolumes.forEach(e => this.viewer.scene.removePolygonClipVolume(e));\n\t\t});\n\t}\n\n\tsetScene(scene){\n\t\tif(this.scene === scene){\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif(this.scene){\n\t\t\tthis.scene.removeEventListeners(\"clip_volume_added\", this.onAdd);\n\t\t\tthis.scene.removeEventListeners(\"clip_volume_removed\", this.onRemove);\n\t\t\tthis.scene.removeEventListeners(\"polygon_clip_volume_added\", this.onAdd);\n\t\t\tthis.scene.removeEventListeners(\"polygon_clip_volume_removed\", this.onRemove);\n\t\t}\n\t\t\n\t\tthis.scene = scene;\n\t\t\n\t\tthis.scene.addEventListener(\"clip_volume_added\", this.onAdd);\n\t\tthis.scene.addEventListener(\"clip_volume_removed\", this.onRemove);\n\t\tthis.scene.addEventListener(\"polygon_clip_volume_added\", this.onAdd);\n\t\tthis.scene.addEventListener(\"polygon_clip_volume_removed\", this.onRemove);\n\t}\n\n\tstartInsertion(args = {}) {\t\n\t\tlet type = args.type || null;\n\n\t\tif(!type) return null;\n\n\t\tlet domElement = this.viewer.renderer.domElement;\n\t\tlet canvasSize = this.viewer.renderer.getSize(new THREE.Vector2());\n\n\t\tlet svg = $(`\n\t\t\n\n\t\t\t\n\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\n\t\t\t\n\t\t`);\n\t\t$(domElement.parentElement).append(svg);\n\n\t\tlet polyClipVol = new PolygonClipVolume(this.viewer.scene.getActiveCamera().clone());\n\n\t\tthis.dispatchEvent({\"type\": \"start_inserting_clipping_volume\"});\n\n\t\tthis.viewer.scene.addPolygonClipVolume(polyClipVol);\n\t\tthis.sceneMarker.add(polyClipVol);\n\n\t\tlet cancel = {\n\t\t\tcallback: null\n\t\t};\n\n\t\tlet insertionCallback = (e) => {\n\t\t\tif(e.button === THREE.MOUSE.LEFT){\n\t\t\t\t\n\t\t\t\tpolyClipVol.addMarker();\n\n\t\t\t\t// SVC Screen Line\n\t\t\t\tsvg.find(\"polyline\").each((index, target) => {\n\t\t\t\t\tlet newPoint = svg[0].createSVGPoint();\n\t\t\t\t\tnewPoint.x = e.offsetX;\n\t\t\t\t\tnewPoint.y = e.offsetY;\n\t\t\t\t\tlet polyline = target.points.appendItem(newPoint);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tif(polyClipVol.markers.length > this.maxPolygonVertices){\n\t\t\t\t\tcancel.callback();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.viewer.inputHandler.startDragging(\n\t\t\t\t\tpolyClipVol.markers[polyClipVol.markers.length - 1]);\n\t\t\t}else if(e.button === THREE.MOUSE.RIGHT){\n\t\t\t\tcancel.callback(e);\n\t\t\t}\n\t\t};\n\t\t\n\t\tcancel.callback = e => {\n\n\t\t\t//let first = svg.find(\"polyline\")[0].points[0];\n\t\t\t//svg.find(\"polyline\").each((index, target) => {\n\t\t\t//\tlet newPoint = svg[0].createSVGPoint();\n\t\t\t//\tnewPoint.x = first.x;\n\t\t\t//\tnewPoint.y = first.y;\n\t\t\t//\tlet polyline = target.points.appendItem(newPoint);\n\t\t\t//});\n\t\t\tsvg.remove();\n\n\t\t\tif(polyClipVol.markers.length > 3) {\n\t\t\t\tpolyClipVol.removeLastMarker();\n\t\t\t\tpolyClipVol.initialized = true;\t\n\t\t\t} else {\n\t\t\t\tthis.viewer.scene.removePolygonClipVolume(polyClipVol);\n\t\t\t}\n\n\t\t\tthis.viewer.renderer.domElement.removeEventListener(\"mouseup\", insertionCallback, true);\n\t\t\tthis.viewer.removeEventListener(\"cancel_insertions\", cancel.callback);\n\t\t\tthis.viewer.inputHandler.enabled = true;\n\t\t};\n\t\t\n\t\tthis.viewer.addEventListener(\"cancel_insertions\", cancel.callback);\n\t\tthis.viewer.renderer.domElement.addEventListener(\"mouseup\", insertionCallback , true);\n\t\tthis.viewer.inputHandler.enabled = false;\n\t\t\n\t\tpolyClipVol.addMarker();\n\t\tthis.viewer.inputHandler.startDragging(\n\t\t\tpolyClipVol.markers[polyClipVol.markers.length - 1]);\n\n\t\treturn polyClipVol;\n\t}\n\n\tupdate() {\n\n\t}\n};","\nimport {Enum} from \"../Enum.js\";\n\nvar GeoTIFF = (function (exports) {\n'use strict';\n\nconst Endianness = new Enum({\n\tLITTLE: \"II\",\n\tBIG: \"MM\",\n});\n\nconst Type = new Enum({\n\tBYTE: {value: 1, bytes: 1},\n\tASCII: {value: 2, bytes: 1},\n\tSHORT: {value: 3, bytes: 2},\n\tLONG: {value: 4, bytes: 4},\n\tRATIONAL: {value: 5, bytes: 8},\n\tSBYTE: {value: 6, bytes: 1},\n\tUNDEFINED: {value: 7, bytes: 1},\n\tSSHORT: {value: 8, bytes: 2},\n\tSLONG: {value: 9, bytes: 4},\n\tSRATIONAL: {value: 10, bytes: 8},\n\tFLOAT: {value: 11, bytes: 4},\n\tDOUBLE: {value: 12, bytes: 8},\n});\n\nconst Tag = new Enum({\n\tIMAGE_WIDTH: 256,\n\tIMAGE_HEIGHT: 257,\n\tBITS_PER_SAMPLE: 258,\n\tCOMPRESSION: 259,\n\tPHOTOMETRIC_INTERPRETATION: 262,\n\tSTRIP_OFFSETS: 273,\n\tORIENTATION: 274,\n\tSAMPLES_PER_PIXEL: 277,\n\tROWS_PER_STRIP: 278,\n\tSTRIP_BYTE_COUNTS: 279,\n\tX_RESOLUTION: 282,\n\tY_RESOLUTION: 283,\n\tPLANAR_CONFIGURATION: 284,\n\tRESOLUTION_UNIT: 296,\n\tSOFTWARE: 305,\n\tCOLOR_MAP: 320,\n\tSAMPLE_FORMAT: 339,\n\tMODEL_PIXEL_SCALE: 33550, // [GeoTIFF] TYPE: double N: 3\n\tMODEL_TIEPOINT: 33922, // [GeoTIFF] TYPE: double N: 6 * NUM_TIEPOINTS\n\tGEO_KEY_DIRECTORY: 34735, // [GeoTIFF] TYPE: short N: >= 4\n\tGEO_DOUBLE_PARAMS: 34736, // [GeoTIFF] TYPE: short N: variable\n\tGEO_ASCII_PARAMS: 34737, // [GeoTIFF] TYPE: ascii N: variable\n});\n\nconst typeMapping = new Map([\n\t[Type.BYTE, Uint8Array],\n\t[Type.ASCII, Uint8Array],\n\t[Type.SHORT, Uint16Array],\n\t[Type.LONG, Uint32Array],\n\t[Type.RATIONAL, Uint32Array],\n\t[Type.SBYTE, Int8Array],\n\t[Type.UNDEFINED, Uint8Array],\n\t[Type.SSHORT, Int16Array],\n\t[Type.SLONG, Int32Array],\n\t[Type.SRATIONAL, Int32Array],\n\t[Type.FLOAT, Float32Array],\n\t[Type.DOUBLE, Float64Array],\n]);\n\nclass IFDEntry{\n\n\tconstructor(tag, type, count, offset, value){\n\t\tthis.tag = tag;\n\t\tthis.type = type;\n\t\tthis.count = count;\n\t\tthis.offset = offset;\n\t\tthis.value = value;\n\t}\n\n}\n\nclass Image{\n\n\tconstructor(){\n\t\tthis.width = 0;\n\t\tthis.height = 0;\n\t\tthis.buffer = null;\n\t\tthis.metadata = [];\n\t}\n\n}\n\nclass Reader{\n\n\tconstructor(){\n\n\t}\n\n\tstatic read(data){\n\n\t\tlet endiannessTag = String.fromCharCode(...Array.from(data.slice(0, 2)));\n\t\tlet endianness = Endianness.fromValue(endiannessTag);\n\n\t\tlet tiffCheckTag = data.readUInt8(2);\n\n\t\tif(tiffCheckTag !== 42){\n\t\t\tthrow new Error(\"not a valid tiff file\");\n\t\t}\n\n\t\tlet offsetToFirstIFD = data.readUInt32LE(4);\n\n\t\tconsole.log(\"offsetToFirstIFD\", offsetToFirstIFD);\n\n\t\tlet ifds = [];\n\t\tlet IFDsRead = false;\n\t\tlet currentIFDOffset = offsetToFirstIFD;\n\t\tlet i = 0;\n\t\twhile(IFDsRead || i < 100){\n\n\t\t\tconsole.log(\"currentIFDOffset\", currentIFDOffset);\n\t\t\tlet numEntries = data.readUInt16LE(currentIFDOffset);\n\t\t\tlet nextIFDOffset = data.readUInt32LE(currentIFDOffset + 2 + numEntries * 12);\n\n\t\t\tconsole.log(\"next offset: \", currentIFDOffset + 2 + numEntries * 12);\n\n\t\t\tlet entryBuffer = data.slice(currentIFDOffset + 2, currentIFDOffset + 2 + 12 * numEntries);\n\n\t\t\tfor(let i = 0; i < numEntries; i++){\n\t\t\t\tlet tag = Tag.fromValue(entryBuffer.readUInt16LE(i * 12));\n\t\t\t\tlet type = Type.fromValue(entryBuffer.readUInt16LE(i * 12 + 2));\n\t\t\t\tlet count = entryBuffer.readUInt32LE(i * 12 + 4);\n\t\t\t\tlet offsetOrValue = entryBuffer.readUInt32LE(i * 12 + 8);\n\t\t\t\tlet valueBytes = type.bytes * count;\n\n\t\t\t\tlet value;\n\t\t\t\tif(valueBytes <= 4){\n\t\t\t\t\tvalue = offsetOrValue;\n\t\t\t\t}else{\n\t\t\t\t\tlet valueBuffer = new Uint8Array(valueBytes);\n\t\t\t\t\tvalueBuffer.set(data.slice(offsetOrValue, offsetOrValue + valueBytes));\n\t\t\t\t\t\n\t\t\t\t\tlet ArrayType = typeMapping.get(type);\n\n\t\t\t\t\tvalue = new ArrayType(valueBuffer.buffer);\n\n\t\t\t\t\tif(type === Type.ASCII){\n\t\t\t\t\t\tvalue = String.fromCharCode(...value);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet ifd = new IFDEntry(tag, type, count, offsetOrValue, value);\n\n\t\t\t\tifds.push(ifd);\n\t\t\t}\n\n\t\t\tconsole.log(\"nextIFDOffset\", nextIFDOffset);\n\n\t\t\tif(nextIFDOffset === 0){\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcurrentIFDOffset = nextIFDOffset;\n\t\t\ti++;\n\t\t}\n\n\t\tlet ifdForTag = (tag) => {\n\t\t\tfor(let entry of ifds){\n\t\t\t\tif(entry.tag === tag){\n\t\t\t\t\treturn entry;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t};\n\n\t\tlet width = ifdForTag(Tag.IMAGE_WIDTH, ifds).value;\n\t\tlet height = ifdForTag(Tag.IMAGE_HEIGHT, ifds).value;\n\t\tlet compression = ifdForTag(Tag.COMPRESSION, ifds).value;\n\t\tlet rowsPerStrip = ifdForTag(Tag.ROWS_PER_STRIP, ifds).value; \n\t\tlet ifdStripOffsets = ifdForTag(Tag.STRIP_OFFSETS, ifds);\n\t\tlet ifdStripByteCounts = ifdForTag(Tag.STRIP_BYTE_COUNTS, ifds);\n\n\t\tlet numStrips = Math.ceil(height / rowsPerStrip);\n\n\t\tlet stripByteCounts = [];\n\t\tfor(let i = 0; i < ifdStripByteCounts.count; i++){\n\t\t\tlet type = ifdStripByteCounts.type;\n\t\t\tlet offset = ifdStripByteCounts.offset + i * type.bytes;\n\n\t\t\tlet value;\n\t\t\tif(type === Type.SHORT){\n\t\t\t\tvalue = data.readUInt16LE(offset);\n\t\t\t}else if(type === Type.LONG){\n\t\t\t\tvalue = data.readUInt32LE(offset);\n\t\t\t}\n\n\t\t\tstripByteCounts.push(value);\n\t\t}\n\n\t\tlet stripOffsets = [];\n\t\tfor(let i = 0; i < ifdStripOffsets.count; i++){\n\t\t\tlet type = ifdStripOffsets.type;\n\t\t\tlet offset = ifdStripOffsets.offset + i * type.bytes;\n\n\t\t\tlet value;\n\t\t\tif(type === Type.SHORT){\n\t\t\t\tvalue = data.readUInt16LE(offset);\n\t\t\t}else if(type === Type.LONG){\n\t\t\t\tvalue = data.readUInt32LE(offset);\n\t\t\t}\n\n\t\t\tstripOffsets.push(value);\n\t\t}\n\n\t\tlet imageBuffer = new Uint8Array(width * height * 3);\n\t\t\n\t\tlet linesProcessed = 0;\n\t\tfor(let i = 0; i < numStrips; i++){\n\t\t\tlet stripOffset = stripOffsets[i];\n\t\t\tlet stripBytes = stripByteCounts[i];\n\t\t\tlet stripData = data.slice(stripOffset, stripOffset + stripBytes);\n\t\t\tlet lineBytes = width * 3;\n\t\t\tfor(let y = 0; y < rowsPerStrip; y++){\n\t\t\t\tlet line = stripData.slice(y * lineBytes, y * lineBytes + lineBytes);\n\t\t\t\timageBuffer.set(line, linesProcessed * lineBytes);\n\t\t\n\t\t\t\tif(line.length === lineBytes){\n\t\t\t\t\tlinesProcessed++;\n\t\t\t\t}else{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconsole.log(`width: ${width}`);\n\t\tconsole.log(`height: ${height}`);\n\t\tconsole.log(`numStrips: ${numStrips}`);\n\t\tconsole.log(\"stripByteCounts\", stripByteCounts.join(\", \"));\n\t\tconsole.log(\"stripOffsets\", stripOffsets.join(\", \"));\n\n\t\tlet image = new Image();\n\t\timage.width = width;\n\t\timage.height = height;\n\t\timage.buffer = imageBuffer;\n\t\timage.metadata = ifds;\n\n\t\treturn image;\n\t}\n\n}\n\n\nclass Exporter{\n\n\tconstructor(){\n\n\t}\n\n\tstatic toTiffBuffer(image, params = {}){\n\n\t\tlet offsetToFirstIFD = 8;\n\t\t\n\t\tlet headerBuffer = new Uint8Array([0x49, 0x49, 42, 0, offsetToFirstIFD, 0, 0, 0]);\n\n\t\tlet [width, height] = [image.width, image.height];\n\n\t\tlet ifds = [\n\t\t\tnew IFDEntry(Tag.IMAGE_WIDTH, Type.SHORT, 1, null, width),\n\t\t\tnew IFDEntry(Tag.IMAGE_HEIGHT, Type.SHORT, 1, null, height),\n\t\t\tnew IFDEntry(Tag.BITS_PER_SAMPLE, Type.SHORT, 4, null, new Uint16Array([8, 8, 8, 8])),\n\t\t\tnew IFDEntry(Tag.COMPRESSION, Type.SHORT, 1, null, 1),\n\t\t\tnew IFDEntry(Tag.PHOTOMETRIC_INTERPRETATION, Type.SHORT, 1, null, 2),\n\t\t\tnew IFDEntry(Tag.ORIENTATION, Type.SHORT, 1, null, 1),\n\t\t\tnew IFDEntry(Tag.SAMPLES_PER_PIXEL, Type.SHORT, 1, null, 4),\n\t\t\tnew IFDEntry(Tag.ROWS_PER_STRIP, Type.LONG, 1, null, height),\n\t\t\tnew IFDEntry(Tag.STRIP_BYTE_COUNTS, Type.LONG, 1, null, width * height * 3),\n\t\t\tnew IFDEntry(Tag.PLANAR_CONFIGURATION, Type.SHORT, 1, null, 1),\n\t\t\tnew IFDEntry(Tag.RESOLUTION_UNIT, Type.SHORT, 1, null, 1),\n\t\t\tnew IFDEntry(Tag.SOFTWARE, Type.ASCII, 6, null, \"......\"),\n\t\t\tnew IFDEntry(Tag.STRIP_OFFSETS, Type.LONG, 1, null, null),\n\t\t\tnew IFDEntry(Tag.X_RESOLUTION, Type.RATIONAL, 1, null, new Uint32Array([1, 1])),\n\t\t\tnew IFDEntry(Tag.Y_RESOLUTION, Type.RATIONAL, 1, null, new Uint32Array([1, 1])),\n\t\t];\n\n\t\tif(params.ifdEntries){\n\t\t\tifds.push(...params.ifdEntries);\n\t\t}\n\n\t\tlet valueOffset = offsetToFirstIFD + 2 + ifds.length * 12 + 4;\n\n\t\t// create 12 byte buffer for each ifd and variable length buffers for ifd values\n\t\tlet ifdEntryBuffers = new Map();\n\t\tlet ifdValueBuffers = new Map();\n\t\tfor(let ifd of ifds){\n\t\t\tlet entryBuffer = new ArrayBuffer(12);\n\t\t\tlet entryView = new DataView(entryBuffer);\n\n\t\t\tlet valueBytes = ifd.type.bytes * ifd.count;\n\n\t\t\tentryView.setUint16(0, ifd.tag.value, true);\n\t\t\tentryView.setUint16(2, ifd.type.value, true);\n\t\t\tentryView.setUint32(4, ifd.count, true);\n\n\t\t\tif(ifd.count === 1 && ifd.type.bytes <= 4){\n\t\t\t\tentryView.setUint32(8, ifd.value, true);\n\t\t\t}else{\n\t\t\t\tentryView.setUint32(8, valueOffset, true);\n\n\t\t\t\tlet valueBuffer = new Uint8Array(ifd.count * ifd.type.bytes);\n\t\t\t\tif(ifd.type === Type.ASCII){\n\t\t\t\t\tvalueBuffer.set(new Uint8Array(ifd.value.split(\"\").map(c => c.charCodeAt(0))));\n\t\t\t\t}else{\n\t\t\t\t\tvalueBuffer.set(new Uint8Array(ifd.value.buffer));\n\t\t\t\t}\n\t\t\t\tifdValueBuffers.set(ifd.tag, valueBuffer);\n\n\t\t\t\tvalueOffset = valueOffset + valueBuffer.byteLength;\n\t\t\t}\n\n\t\t\tifdEntryBuffers.set(ifd.tag, entryBuffer);\n\t\t}\n\n\t\tlet imageBufferOffset = valueOffset;\n\n\t\tnew DataView(ifdEntryBuffers.get(Tag.STRIP_OFFSETS)).setUint32(8, imageBufferOffset, true);\n\n\t\tlet concatBuffers = (buffers) => {\n\n\t\t\tlet totalLength = buffers.reduce( (sum, buffer) => (sum + buffer.byteLength), 0);\n\t\t\tlet merged = new Uint8Array(totalLength);\n\n\t\t\tlet offset = 0;\n\t\t\tfor(let buffer of buffers){\n\t\t\t\tmerged.set(new Uint8Array(buffer), offset);\n\t\t\t\toffset += buffer.byteLength;\n\t\t\t}\n\n\t\t\treturn merged;\n\t\t};\n\t\t\n\t\tlet ifdBuffer = concatBuffers([\n\t\t\tnew Uint16Array([ifds.length]), \n\t\t\t...ifdEntryBuffers.values(), \n\t\t\tnew Uint32Array([0])]);\n\t\tlet ifdValueBuffer = concatBuffers([...ifdValueBuffers.values()]);\n\n\t\tlet tiffBuffer = concatBuffers([\n\t\t\theaderBuffer,\n\t\t\tifdBuffer,\n\t\t\tifdValueBuffer,\n\t\t\timage.buffer\n\t\t]);\n\n\t\treturn {width: width, height: height, buffer: tiffBuffer};\n\t}\n\n}\n\nexports.Tag = Tag;\nexports.Type = Type;\nexports.IFDEntry = IFDEntry;\nexports.Image = Image;\nexports.Reader = Reader;\nexports.Exporter = Exporter;\n\nreturn exports;\n\n}({}));\n","\nimport {Measure} from \"./Measure.js\";\nimport {Utils} from \"../utils.js\";\nimport {CameraMode} from \"../defines.js\";\nimport { EventDispatcher } from \"../EventDispatcher.js\";\n\nfunction updateAzimuth(viewer, measure){\n\n\tconst azimuth = measure.azimuth;\n\n\tconst isOkay = measure.points.length === 2;\n\n\tazimuth.node.visible = isOkay && measure.showAzimuth;\n\n\tif(!azimuth.node.visible){\n\t\treturn;\n\t}\n\n\tconst camera = viewer.scene.getActiveCamera();\n\tconst renderAreaSize = viewer.renderer.getSize(new THREE.Vector2());\n\tconst width = renderAreaSize.width;\n\tconst height = renderAreaSize.height;\n\t\n\tconst [p0, p1] = measure.points;\n\tconst r = p0.position.distanceTo(p1.position);\n\tconst northVec = Utils.getNorthVec(p0.position, r, viewer.getProjection());\n\tconst northPos = p0.position.clone().add(northVec);\n\n\tazimuth.center.position.copy(p0.position);\n\tazimuth.center.scale.set(2, 2, 2);\n\t\n\tazimuth.center.visible = false;\n\t// azimuth.target.visible = false;\n\n\n\t{ // north\n\t\tazimuth.north.position.copy(northPos);\n\t\tazimuth.north.scale.set(2, 2, 2);\n\n\t\tlet distance = azimuth.north.position.distanceTo(camera.position);\n\t\tlet pr = Utils.projectedRadius(1, camera, distance, width, height);\n\n\t\tlet scale = (5 / pr);\n\t\tazimuth.north.scale.set(scale, scale, scale);\n\t}\n\n\t{ // target\n\t\tazimuth.target.position.copy(p1.position);\n\t\tazimuth.target.position.z = azimuth.north.position.z;\n\n\t\tlet distance = azimuth.target.position.distanceTo(camera.position);\n\t\tlet pr = Utils.projectedRadius(1, camera, distance, width, height);\n\n\t\tlet scale = (5 / pr);\n\t\tazimuth.target.scale.set(scale, scale, scale);\n\t}\n\n\n\tazimuth.circle.position.copy(p0.position);\n\tazimuth.circle.scale.set(r, r, r);\n\tazimuth.circle.material.resolution.set(width, height);\n\n\t// to target\n\tazimuth.centerToTarget.geometry.setPositions([\n\t\t0, 0, 0,\n\t\t...p1.position.clone().sub(p0.position).toArray(),\n\t]);\n\tazimuth.centerToTarget.position.copy(p0.position);\n\tazimuth.centerToTarget.geometry.verticesNeedUpdate = true;\n\tazimuth.centerToTarget.geometry.computeBoundingSphere();\n\tazimuth.centerToTarget.computeLineDistances();\n\tazimuth.centerToTarget.material.resolution.set(width, height);\n\n\t// to target ground\n\tazimuth.centerToTargetground.geometry.setPositions([\n\t\t0, 0, 0,\n\t\tp1.position.x - p0.position.x,\n\t\tp1.position.y - p0.position.y,\n\t\t0,\n\t]);\n\tazimuth.centerToTargetground.position.copy(p0.position);\n\tazimuth.centerToTargetground.geometry.verticesNeedUpdate = true;\n\tazimuth.centerToTargetground.geometry.computeBoundingSphere();\n\tazimuth.centerToTargetground.computeLineDistances();\n\tazimuth.centerToTargetground.material.resolution.set(width, height);\n\n\t// to north\n\tazimuth.centerToNorth.geometry.setPositions([\n\t\t0, 0, 0,\n\t\tnorthPos.x - p0.position.x,\n\t\tnorthPos.y - p0.position.y,\n\t\t0,\n\t]);\n\tazimuth.centerToNorth.position.copy(p0.position);\n\tazimuth.centerToNorth.geometry.verticesNeedUpdate = true;\n\tazimuth.centerToNorth.geometry.computeBoundingSphere();\n\tazimuth.centerToNorth.computeLineDistances();\n\tazimuth.centerToNorth.material.resolution.set(width, height);\n\n\t// label\n\tconst radians = Utils.computeAzimuth(p0.position, p1.position, viewer.getProjection());\n\tlet degrees = THREE.Math.radToDeg(radians);\n\tif(degrees < 0){\n\t\tdegrees = 360 + degrees;\n\t}\n\tconst txtDegrees = `${degrees.toFixed(2)}°`;\n\tconst labelDir = northPos.clone().add(p1.position).multiplyScalar(0.5).sub(p0.position);\n\tif(labelDir.length() > 0){\n\t\tlabelDir.z = 0;\n\t\tlabelDir.normalize();\n\t\tconst labelVec = labelDir.clone().multiplyScalar(r);\n\t\tconst labelPos = p0.position.clone().add(labelVec);\n\t\tazimuth.label.position.copy(labelPos);\n\t}\n\tazimuth.label.setText(txtDegrees);\n\tlet distance = azimuth.label.position.distanceTo(camera.position);\n\tlet pr = Utils.projectedRadius(1, camera, distance, width, height);\n\tlet scale = (70 / pr);\n\tazimuth.label.scale.set(scale, scale, scale);\n}\n\nexport class MeasuringTool extends EventDispatcher{\n\tconstructor (viewer) {\n\t\tsuper();\n\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\n\t\tthis.addEventListener('start_inserting_measurement', e => {\n\t\t\tthis.viewer.dispatchEvent({\n\t\t\t\ttype: 'cancel_insertions'\n\t\t\t});\n\t\t});\n\n\t\tthis.showLabels = true;\n\t\tthis.scene = new THREE.Scene();\n\t\tthis.scene.name = 'scene_measurement';\n\t\tthis.light = new THREE.PointLight(0xffffff, 1.0);\n\t\tthis.scene.add(this.light);\n\n\t\tthis.viewer.inputHandler.registerInteractiveScene(this.scene);\n\n\t\tthis.onRemove = (e) => { this.scene.remove(e.measurement);};\n\t\tthis.onAdd = e => {this.scene.add(e.measurement);};\n\n\t\tfor(let measurement of viewer.scene.measurements){\n\t\t\tthis.onAdd({measurement: measurement});\n\t\t}\n\n\t\tviewer.addEventListener(\"update\", this.update.bind(this));\n\t\tviewer.addEventListener(\"render.pass.perspective_overlay\", this.render.bind(this));\n\t\tviewer.addEventListener(\"scene_changed\", this.onSceneChange.bind(this));\n\n\t\tviewer.scene.addEventListener('measurement_added', this.onAdd);\n\t\tviewer.scene.addEventListener('measurement_removed', this.onRemove);\n\t}\n\n\tonSceneChange(e){\n\t\tif(e.oldScene){\n\t\t\te.oldScene.removeEventListener('measurement_added', this.onAdd);\n\t\t\te.oldScene.removeEventListener('measurement_removed', this.onRemove);\n\t\t}\n\n\t\te.scene.addEventListener('measurement_added', this.onAdd);\n\t\te.scene.addEventListener('measurement_removed', this.onRemove);\n\t}\n\n\tstartInsertion (args = {}) {\n\t\tlet domElement = this.viewer.renderer.domElement;\n\n\t\tlet measure = new Measure();\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'start_inserting_measurement',\n\t\t\tmeasure: measure\n\t\t});\n\n\t\tconst pick = (defaul, alternative) => {\n\t\t\tif(defaul != null){\n\t\t\t\treturn defaul;\n\t\t\t}else{\n\t\t\t\treturn alternative;\n\t\t\t}\n\t\t};\n\n\t\tmeasure.showDistances = (args.showDistances === null) ? true : args.showDistances;\n\n\t\tmeasure.showArea = pick(args.showArea, false);\n\t\tmeasure.showAngles = pick(args.showAngles, false);\n\t\tmeasure.showCoordinates = pick(args.showCoordinates, false);\n\t\tmeasure.showHeight = pick(args.showHeight, false);\n\t\tmeasure.showCircle = pick(args.showCircle, false);\n\t\tmeasure.showAzimuth = pick(args.showAzimuth, false);\n\t\tmeasure.showEdges = pick(args.showEdges, true);\n\t\tmeasure.closed = pick(args.closed, false);\n\t\tmeasure.maxMarkers = pick(args.maxMarkers, Infinity);\n\n\t\tmeasure.name = args.name || 'Measurement';\n\n\t\tthis.scene.add(measure);\n\n\t\tlet cancel = {\n\t\t\tremoveLastMarker: measure.maxMarkers > 3,\n\t\t\tcallback: null\n\t\t};\n\n\t\tlet insertionCallback = (e) => {\n\t\t\tif (e.button === THREE.MOUSE.LEFT) {\n\t\t\t\tmeasure.addMarker(measure.points[measure.points.length - 1].position.clone());\n\n\t\t\t\tif (measure.points.length >= measure.maxMarkers) {\n\t\t\t\t\tcancel.callback();\n\t\t\t\t}\n\n\t\t\t\tthis.viewer.inputHandler.startDragging(\n\t\t\t\t\tmeasure.spheres[measure.spheres.length - 1]);\n\t\t\t} else if (e.button === THREE.MOUSE.RIGHT) {\n\t\t\t\tcancel.callback();\n\t\t\t}\n\t\t};\n\n\t\tcancel.callback = e => {\n\t\t\tif (cancel.removeLastMarker) {\n\t\t\t\tmeasure.removeMarker(measure.points.length - 1);\n\t\t\t}\n\t\t\tdomElement.removeEventListener('mouseup', insertionCallback, true);\n\t\t\tthis.viewer.removeEventListener('cancel_insertions', cancel.callback);\n\t\t};\n\n\t\tif (measure.maxMarkers > 1) {\n\t\t\tthis.viewer.addEventListener('cancel_insertions', cancel.callback);\n\t\t\tdomElement.addEventListener('mouseup', insertionCallback, true);\n\t\t}\n\n\t\tmeasure.addMarker(new THREE.Vector3(0, 0, 0));\n\t\tthis.viewer.inputHandler.startDragging(\n\t\t\tmeasure.spheres[measure.spheres.length - 1]);\n\n\t\tthis.viewer.scene.addMeasurement(measure);\n\n\t\treturn measure;\n\t}\n\t\n\tupdate(){\n\t\tlet camera = this.viewer.scene.getActiveCamera();\n\t\tlet domElement = this.renderer.domElement;\n\t\tlet measurements = this.viewer.scene.measurements;\n\n\t\tconst renderAreaSize = this.renderer.getSize(new THREE.Vector2());\n\t\tlet clientWidth = renderAreaSize.width;\n\t\tlet clientHeight = renderAreaSize.height;\n\n\t\tthis.light.position.copy(camera.position);\n\n\t\t// make size independant of distance\n\t\tfor (let measure of measurements) {\n\t\t\tmeasure.lengthUnit = this.viewer.lengthUnit;\n\t\t\tmeasure.lengthUnitDisplay = this.viewer.lengthUnitDisplay;\n\t\t\tmeasure.update();\n\n\t\t\tupdateAzimuth(viewer, measure);\n\n\t\t\t// spheres\n\t\t\tfor(let sphere of measure.spheres){\n\t\t\t\tlet distance = camera.position.distanceTo(sphere.getWorldPosition(new THREE.Vector3()));\n\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\n\t\t\t\tlet scale = (15 / pr);\n\t\t\t\tsphere.scale.set(scale, scale, scale);\n\t\t\t}\n\n\t\t\t// labels\n\t\t\tlet labels = measure.edgeLabels.concat(measure.angleLabels);\n\t\t\tfor(let label of labels){\n\t\t\t\tlet distance = camera.position.distanceTo(label.getWorldPosition(new THREE.Vector3()));\n\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\n\t\t\t\tlet scale = (70 / pr);\n\n\t\t\t\tif(Potree.debug.scale){\n\t\t\t\t\tscale = (Potree.debug.scale / pr);\n\t\t\t\t}\n\n\t\t\t\tlabel.scale.set(scale, scale, scale);\n\t\t\t}\n\n\t\t\t// coordinate labels\n\t\t\tfor (let j = 0; j < measure.coordinateLabels.length; j++) {\n\t\t\t\tlet label = measure.coordinateLabels[j];\n\t\t\t\tlet sphere = measure.spheres[j];\n\n\t\t\t\tlet distance = camera.position.distanceTo(sphere.getWorldPosition(new THREE.Vector3()));\n\n\t\t\t\tlet screenPos = sphere.getWorldPosition(new THREE.Vector3()).clone().project(camera);\n\t\t\t\tscreenPos.x = Math.round((screenPos.x + 1) * clientWidth / 2);\n\t\t\t\tscreenPos.y = Math.round((-screenPos.y + 1) * clientHeight / 2);\n\t\t\t\tscreenPos.z = 0;\n\t\t\t\tscreenPos.y -= 30;\n\n\t\t\t\tlet labelPos = new THREE.Vector3( \n\t\t\t\t\t(screenPos.x / clientWidth) * 2 - 1, \n\t\t\t\t\t-(screenPos.y / clientHeight) * 2 + 1, \n\t\t\t\t\t0.5 );\n\t\t\t\tlabelPos.unproject(camera);\n\t\t\t\tif(this.viewer.scene.cameraMode == CameraMode.PERSPECTIVE) {\n\t\t\t\t\tlet direction = labelPos.sub(camera.position).normalize();\n\t\t\t\t\tlabelPos = new THREE.Vector3().addVectors(\n\t\t\t\t\t\tcamera.position, direction.multiplyScalar(distance));\n\n\t\t\t\t}\n\t\t\t\tlabel.position.copy(labelPos);\n\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\n\t\t\t\tlet scale = (70 / pr);\n\t\t\t\tlabel.scale.set(scale, scale, scale);\n\t\t\t}\n\n\t\t\t// height label\n\t\t\tif (measure.showHeight) {\n\t\t\t\tlet label = measure.heightLabel;\n\n\t\t\t\t{\n\t\t\t\t\tlet distance = label.position.distanceTo(camera.position);\n\t\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\n\t\t\t\t\tlet scale = (70 / pr);\n\t\t\t\t\tlabel.scale.set(scale, scale, scale);\n\t\t\t\t}\n\n\t\t\t\t{ // height edge\n\t\t\t\t\tlet edge = measure.heightEdge;\n\n\t\t\t\t\tlet sorted = measure.points.slice().sort((a, b) => a.position.z - b.position.z);\n\t\t\t\t\tlet lowPoint = sorted[0].position.clone();\n\t\t\t\t\tlet highPoint = sorted[sorted.length - 1].position.clone();\n\t\t\t\t\tlet min = lowPoint.z;\n\t\t\t\t\tlet max = highPoint.z;\n\n\t\t\t\t\tlet start = new THREE.Vector3(highPoint.x, highPoint.y, min);\n\t\t\t\t\tlet end = new THREE.Vector3(highPoint.x, highPoint.y, max);\n\n\t\t\t\t\tlet lowScreen = lowPoint.clone().project(camera);\n\t\t\t\t\tlet startScreen = start.clone().project(camera);\n\t\t\t\t\tlet endScreen = end.clone().project(camera);\n\n\t\t\t\t\tlet toPixelCoordinates = v => {\n\t\t\t\t\t\tlet r = v.clone().addScalar(1).divideScalar(2);\n\t\t\t\t\t\tr.x = r.x * clientWidth;\n\t\t\t\t\t\tr.y = r.y * clientHeight;\n\t\t\t\t\t\tr.z = 0;\n\n\t\t\t\t\t\treturn r;\n\t\t\t\t\t};\n\n\t\t\t\t\tlet lowEL = toPixelCoordinates(lowScreen);\n\t\t\t\t\tlet startEL = toPixelCoordinates(startScreen);\n\t\t\t\t\tlet endEL = toPixelCoordinates(endScreen);\n\n\t\t\t\t\tlet lToS = lowEL.distanceTo(startEL);\n\t\t\t\t\tlet sToE = startEL.distanceTo(endEL);\n\n\t\t\t\t\tedge.geometry.lineDistances = [0, lToS, lToS, lToS + sToE];\n\t\t\t\t\tedge.geometry.lineDistancesNeedUpdate = true;\n\n\t\t\t\t\tedge.material.dashSize = 10;\n\t\t\t\t\tedge.material.gapSize = 10;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t{ // area label\n\t\t\t\tlet label = measure.areaLabel;\n\t\t\t\tlet distance = label.position.distanceTo(camera.position);\n\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\n\n\t\t\t\tlet scale = (70 / pr);\n\t\t\t\tlabel.scale.set(scale, scale, scale);\n\t\t\t}\n\n\t\t\t{ // radius label\n\t\t\t\tlet label = measure.circleRadiusLabel;\n\t\t\t\tlet distance = label.position.distanceTo(camera.position);\n\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\n\n\t\t\t\tlet scale = (70 / pr);\n\t\t\t\tlabel.scale.set(scale, scale, scale);\n\t\t\t}\n\n\t\t\t{ // edges\n\t\t\t\tconst materials = [\n\t\t\t\t\tmeasure.circleRadiusLine.material,\n\t\t\t\t\t...measure.edges.map( (e) => e.material),\n\t\t\t\t\tmeasure.heightEdge.material,\n\t\t\t\t\tmeasure.circleLine.material,\n\t\t\t\t];\n\n\t\t\t\tfor(const material of materials){\n\t\t\t\t\tmaterial.resolution.set(clientWidth, clientHeight);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!this.showLabels){\n\n\t\t\t\tconst labels = [\n\t\t\t\t\t...measure.sphereLabels, \n\t\t\t\t\t...measure.edgeLabels, \n\t\t\t\t\t...measure.angleLabels, \n\t\t\t\t\t...measure.coordinateLabels,\n\t\t\t\t\tmeasure.heightLabel,\n\t\t\t\t\tmeasure.areaLabel,\n\t\t\t\t\tmeasure.circleRadiusLabel,\n\t\t\t\t];\n\n\t\t\t\tfor(const label of labels){\n\t\t\t\t\tlabel.visible = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\trender(){\n\t\tthis.viewer.renderer.render(this.scene, this.viewer.scene.getActiveCamera());\n\t}\n};\n","\nexport class Message{\n\n\tconstructor(content){\n\t\tthis.content = content;\n\n\t\tlet closeIcon = `${exports.resourcePath}/icons/close.svg`;\n\n\t\tthis.element = $(`\n\t\t\t
        \n\t\t\t\t\n\t\t\t\t\n\t\t\t
        `);\n\n\t\tthis.elClose = this.element.find(\"img[name=close]\");\n\n\t\tthis.elContainer = this.element.find(\"span[name=content_container]\");\n\n\t\tif(typeof content === \"string\"){\n\t\t\tthis.elContainer.append($(`${content}`));\n\t\t}else{\n\t\t\tthis.elContainer.append(content);\n\t\t}\n\n\t}\n\n\tsetMessage(content){\n\t\tthis.elContainer.empty();\n\t\tif(typeof content === \"string\"){\n\t\t\tthis.elContainer.append($(`${content}`));\n\t\t}else{\n\t\t\tthis.elContainer.append(content);\n\t\t}\n\t}\n\n}","\nexport class PointCloudSM{\n\n\tconstructor(potreeRenderer){\n\n\t\tthis.potreeRenderer = potreeRenderer;\n\t\tthis.threeRenderer = this.potreeRenderer.threeRenderer;\n\n\t\tthis.target = new THREE.WebGLRenderTarget(2 * 1024, 2 * 1024, {\n\t\t\tminFilter: THREE.LinearFilter,\n\t\t\tmagFilter: THREE.LinearFilter,\n\t\t\tformat: THREE.RGBAFormat,\n\t\t\ttype: THREE.FloatType\n\t\t});\n\t\tthis.target.depthTexture = new THREE.DepthTexture();\n\t\tthis.target.depthTexture.type = THREE.UnsignedIntType;\n\n\t\t//this.threeRenderer.setClearColor(0x000000, 1);\n\t\tthis.threeRenderer.setClearColor(0xff0000, 1);\n\n\t\t//HACK? removed while moving to three.js 109\n\t\t//this.threeRenderer.clearTarget(this.target, true, true, true); \n\t\t{\n\t\t\tconst oldTarget = this.threeRenderer.getRenderTarget();\n\n\t\t\tthis.threeRenderer.setRenderTarget(this.target);\n\t\t\tthis.threeRenderer.clear(true, true, true);\n\n\t\t\tthis.threeRenderer.setRenderTarget(oldTarget);\n\t\t}\n\t}\n\n\tsetLight(light){\n\t\tthis.light = light;\n\n\t\tlet fov = (180 * light.angle) / Math.PI;\n\t\tlet aspect = light.shadow.mapSize.width / light.shadow.mapSize.height;\n\t\tlet near = 0.1;\n\t\tlet far = light.distance === 0 ? 10000 : light.distance;\n\t\tthis.camera = new THREE.PerspectiveCamera(fov, aspect, near, far);\n\t\tthis.camera.up.set(0, 0, 1);\n\t\tthis.camera.position.copy(light.position);\n\n\t\tlet target = new THREE.Vector3().subVectors(light.position, light.getWorldDirection(new THREE.Vector3()));\n\t\tthis.camera.lookAt(target);\n\n\t\tthis.camera.updateProjectionMatrix();\n\t\tthis.camera.updateMatrix();\n\t\tthis.camera.updateMatrixWorld();\n\t\tthis.camera.matrixWorldInverse.getInverse(this.camera.matrixWorld);\n\t}\n\n\tsetSize(width, height){\n\t\tif(this.target.width !== width || this.target.height !== height){\n\t\t\tthis.target.dispose();\n\t\t}\n\t\tthis.target.setSize(width, height);\n\t}\n\n\trender(scene, camera){\n\n\t\tthis.threeRenderer.setClearColor(0x000000, 1);\n\t\t\n\t\tconst oldTarget = this.threeRenderer.getRenderTarget();\n\n\t\tthis.threeRenderer.setRenderTarget(this.target);\n\t\tthis.threeRenderer.clear(true, true, true);\n\n\t\tthis.potreeRenderer.render(scene, this.camera, this.target, {});\n\n\t\tthis.threeRenderer.setRenderTarget(oldTarget);\n\t}\n\n\n}","\n\nimport {Profile} from \"./Profile.js\";\nimport {Utils} from \"../utils.js\";\nimport { EventDispatcher } from \"../EventDispatcher.js\";\n\n\nexport class ProfileTool extends EventDispatcher {\n\tconstructor (viewer) {\n\t\tsuper();\n\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\n\t\tthis.addEventListener('start_inserting_profile', e => {\n\t\t\tthis.viewer.dispatchEvent({\n\t\t\t\ttype: 'cancel_insertions'\n\t\t\t});\n\t\t});\n\n\t\tthis.scene = new THREE.Scene();\n\t\tthis.scene.name = 'scene_profile';\n\t\tthis.light = new THREE.PointLight(0xffffff, 1.0);\n\t\tthis.scene.add(this.light);\n\n\t\tthis.viewer.inputHandler.registerInteractiveScene(this.scene);\n\n\t\tthis.onRemove = e => this.scene.remove(e.profile);\n\t\tthis.onAdd = e => this.scene.add(e.profile);\n\n\t\tfor(let profile of viewer.scene.profiles){\n\t\t\tthis.onAdd({profile: profile});\n\t\t}\n\n\t\tviewer.addEventListener(\"update\", this.update.bind(this));\n\t\tviewer.addEventListener(\"render.pass.perspective_overlay\", this.render.bind(this));\n\t\tviewer.addEventListener(\"scene_changed\", this.onSceneChange.bind(this));\n\n\t\tviewer.scene.addEventListener('profile_added', this.onAdd);\n\t\tviewer.scene.addEventListener('profile_removed', this.onRemove);\n\t}\n\n\tonSceneChange(e){\n\t\tif(e.oldScene){\n\t\t\te.oldScene.removeEventListeners('profile_added', this.onAdd);\n\t\t\te.oldScene.removeEventListeners('profile_removed', this.onRemove);\n\t\t}\n\n\t\te.scene.addEventListener('profile_added', this.onAdd);\n\t\te.scene.addEventListener('profile_removed', this.onRemove);\n\t}\n\n\tstartInsertion (args = {}) {\n\t\tlet domElement = this.viewer.renderer.domElement;\n\n\t\tlet profile = new Profile();\n\t\tprofile.name = args.name || 'Profile';\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'start_inserting_profile',\n\t\t\tprofile: profile\n\t\t});\n\n\t\tthis.scene.add(profile);\n\n\t\tlet cancel = {\n\t\t\tcallback: null\n\t\t};\n\n\t\tlet insertionCallback = (e) => {\n\t\t\tif(e.button === THREE.MOUSE.LEFT){\n\t\t\t\tif(profile.points.length <= 1){\n\t\t\t\t\tlet camera = this.viewer.scene.getActiveCamera();\n\t\t\t\t\tlet distance = camera.position.distanceTo(profile.points[0]);\n\t\t\t\t\tlet clientSize = this.viewer.renderer.getSize(new THREE.Vector2());\n\t\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientSize.width, clientSize.height);\n\t\t\t\t\tlet width = (10 / pr);\n\n\t\t\t\t\tprofile.setWidth(width);\n\t\t\t\t}\n\n\t\t\t\tprofile.addMarker(profile.points[profile.points.length - 1].clone());\n\n\t\t\t\tthis.viewer.inputHandler.startDragging(\n\t\t\t\t\tprofile.spheres[profile.spheres.length - 1]);\n\t\t\t} else if (e.button === THREE.MOUSE.RIGHT) {\n\t\t\t\tcancel.callback();\n\t\t\t}\n\t\t};\n\n\t\tcancel.callback = e => {\n\t\t\tprofile.removeMarker(profile.points.length - 1);\n\t\t\tdomElement.removeEventListener('mouseup', insertionCallback, true);\n\t\t\tthis.viewer.removeEventListener('cancel_insertions', cancel.callback);\n\t\t};\n\n\t\tthis.viewer.addEventListener('cancel_insertions', cancel.callback);\n\t\tdomElement.addEventListener('mouseup', insertionCallback, true);\n\n\t\tprofile.addMarker(new THREE.Vector3(0, 0, 0));\n\t\tthis.viewer.inputHandler.startDragging(\n\t\t\tprofile.spheres[profile.spheres.length - 1]);\n\n\t\tthis.viewer.scene.addProfile(profile);\n\n\t\treturn profile;\n\t}\n\t\n\tupdate(){\n\t\tlet camera = this.viewer.scene.getActiveCamera();\n\t\tlet profiles = this.viewer.scene.profiles;\n\t\tlet renderAreaSize = this.viewer.renderer.getSize(new THREE.Vector2());\n\t\tlet clientWidth = renderAreaSize.width;\n\t\tlet clientHeight = renderAreaSize.height;\n\n\t\tthis.light.position.copy(camera.position);\n\n\t\t// make size independant of distance\n\t\tfor(let profile of profiles){\n\t\t\tfor(let sphere of profile.spheres){\t\t\t\t\n\t\t\t\tlet distance = camera.position.distanceTo(sphere.getWorldPosition(new THREE.Vector3()));\n\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\n\t\t\t\tlet scale = (15 / pr);\n\t\t\t\tsphere.scale.set(scale, scale, scale);\n\t\t\t}\n\t\t}\n\t}\n\n\trender(){\n\t\tthis.viewer.renderer.render(this.scene, this.viewer.scene.getActiveCamera());\n\t}\n\n}\n","\n\nimport {BoxVolume} from \"./Volume.js\";\nimport {Utils} from \"../utils.js\";\nimport {PointSizeType} from \"../defines.js\";\nimport { EventDispatcher } from \"../EventDispatcher.js\";\n\n\nexport class ScreenBoxSelectTool extends EventDispatcher{\n\n\tconstructor(viewer){\n\t\tsuper();\n\n\t\tthis.viewer = viewer;\n\t\tthis.scene = new THREE.Scene();\n\n\t\tviewer.addEventListener(\"update\", this.update.bind(this));\n\t\tviewer.addEventListener(\"render.pass.perspective_overlay\", this.render.bind(this));\n\t\tviewer.addEventListener(\"scene_changed\", this.onSceneChange.bind(this));\n\t}\n\n\tonSceneChange(scene){\n\t\tconsole.log(\"scene changed\");\n\t}\n\n\tstartInsertion(){\n\t\tlet domElement = this.viewer.renderer.domElement;\n\n\t\tlet volume = new BoxVolume();\n\t\tvolume.position.set(12345, 12345, 12345);\n\t\tvolume.showVolumeLabel = false;\n\t\tvolume.visible = false;\n\t\tvolume.update();\n\t\tthis.viewer.scene.addVolume(volume);\n\n\t\tthis.importance = 10;\n\n\t\tlet selectionBox = $(`
        `);\n\t\t$(domElement.parentElement).append(selectionBox);\n\t\tselectionBox.css(\"right\", \"10px\");\n\t\tselectionBox.css(\"bottom\", \"10px\");\n\n\t\tlet drag = e =>{\n\n\t\t\tvolume.visible = true;\n\n\t\t\tlet mStart = e.drag.start;\n\t\t\tlet mEnd = e.drag.end;\n\n\t\t\tlet box2D = new THREE.Box2();\n\t\t\tbox2D.expandByPoint(mStart);\n\t\t\tbox2D.expandByPoint(mEnd);\n\n\t\t\tselectionBox.css(\"left\", `${box2D.min.x}px`);\n\t\t\tselectionBox.css(\"top\", `${box2D.min.y}px`);\n\t\t\tselectionBox.css(\"width\", `${box2D.max.x - box2D.min.x}px`);\n\t\t\tselectionBox.css(\"height\", `${box2D.max.y - box2D.min.y}px`);\n\n\t\t\tlet camera = e.viewer.scene.getActiveCamera();\n\t\t\tlet size = e.viewer.renderer.getSize(new THREE.Vector2());\n\t\t\tlet frustumSize = new THREE.Vector2(\n\t\t\t\tcamera.right - camera.left, \n\t\t\t\tcamera.top - camera.bottom);\n\n\t\t\tlet screenCentroid = new THREE.Vector2().addVectors(e.drag.end, e.drag.start).multiplyScalar(0.5);\n\t\t\tlet ray = Utils.mouseToRay(screenCentroid, camera, size.width, size.height);\n\n\t\t\tlet diff = new THREE.Vector2().subVectors(e.drag.end, e.drag.start);\n\t\t\tdiff.divide(size).multiply(frustumSize);\n\t\t\t\n\t\t\tvolume.position.copy(ray.origin);\n\t\t\tvolume.up.copy(camera.up);\n\t\t\tvolume.rotation.copy(camera.rotation);\n\t\t\tvolume.scale.set(diff.x, diff.y, 1000 * 100);\n\n\t\t\te.consume();\n\t\t};\n\n\t\tlet drop = e => {\n\t\t\tthis.importance = 0;\n\n\t\t\t$(selectionBox).remove();\n\n\t\t\tthis.viewer.inputHandler.deselectAll();\n\t\t\tthis.viewer.inputHandler.toggleSelection(volume);\n\n\t\t\tlet camera = e.viewer.scene.getActiveCamera();\n\t\t\tlet size = e.viewer.renderer.getSize(new THREE.Vector2());\n\t\t\tlet screenCentroid = new THREE.Vector2().addVectors(e.drag.end, e.drag.start).multiplyScalar(0.5);\n\t\t\tlet ray = Utils.mouseToRay(screenCentroid, camera, size.width, size.height);\n\n\t\t\tlet line = new THREE.Line3(ray.origin, new THREE.Vector3().addVectors(ray.origin, ray.direction));\n\n\t\t\tthis.removeEventListener(\"drag\", drag);\n\t\t\tthis.removeEventListener(\"drop\", drop);\n\n\t\t\tlet allPointsNear = [];\n\t\t\tlet allPointsFar = [];\n\n\t\t\t// TODO support more than one point cloud\n\t\t\tfor(let pointcloud of this.viewer.scene.pointclouds){\n\n\t\t\t\tif(!pointcloud.visible){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tlet volCam = camera.clone();\n\t\t\t\tvolCam.left = -volume.scale.x / 2; \n\t\t\t\tvolCam.right = +volume.scale.x / 2;\n\t\t\t\tvolCam.top = +volume.scale.y / 2;\n\t\t\t\tvolCam.bottom = -volume.scale.y / 2;\n\t\t\t\tvolCam.near = -volume.scale.z / 2;\n\t\t\t\tvolCam.far = +volume.scale.z / 2;\n\t\t\t\tvolCam.rotation.copy(volume.rotation);\n\t\t\t\tvolCam.position.copy(volume.position);\n\n\t\t\t\tvolCam.updateMatrix();\n\t\t\t\tvolCam.updateMatrixWorld();\n\t\t\t\tvolCam.updateProjectionMatrix();\n\t\t\t\tvolCam.matrixWorldInverse.getInverse(volCam.matrixWorld);\n\n\t\t\t\tlet ray = new THREE.Ray(volCam.getWorldPosition(new THREE.Vector3()), volCam.getWorldDirection(new THREE.Vector3()));\n\t\t\t\tlet rayInverse = new THREE.Ray(\n\t\t\t\t\tray.origin.clone().add(ray.direction.clone().multiplyScalar(volume.scale.z)),\n\t\t\t\t\tray.direction.clone().multiplyScalar(-1));\n\n\t\t\t\tlet pickerSettings = {\n\t\t\t\t\twidth: 8, \n\t\t\t\t\theight: 8, \n\t\t\t\t\tpickWindowSize: 8, \n\t\t\t\t\tall: true,\n\t\t\t\t\tpickClipped: true,\n\t\t\t\t\tpointSizeType: PointSizeType.FIXED,\n\t\t\t\t\tpointSize: 1};\n\t\t\t\tlet pointsNear = pointcloud.pick(viewer, volCam, ray, pickerSettings);\n\n\t\t\t\tvolCam.rotateX(Math.PI);\n\t\t\t\tvolCam.updateMatrix();\n\t\t\t\tvolCam.updateMatrixWorld();\n\t\t\t\tvolCam.updateProjectionMatrix();\n\t\t\t\tvolCam.matrixWorldInverse.getInverse(volCam.matrixWorld);\n\t\t\t\tlet pointsFar = pointcloud.pick(viewer, volCam, rayInverse, pickerSettings);\n\n\t\t\t\tallPointsNear.push(...pointsNear);\n\t\t\t\tallPointsFar.push(...pointsFar);\n\t\t\t}\n\n\t\t\tif(allPointsNear.length > 0 && allPointsFar.length > 0){\n\t\t\t\tlet viewLine = new THREE.Line3(ray.origin, new THREE.Vector3().addVectors(ray.origin, ray.direction));\n\n\t\t\t\tlet closestOnLine = allPointsNear.map(p => viewLine.closestPointToPoint(p.position, false, new THREE.Vector3()));\n\t\t\t\tlet closest = closestOnLine.sort( (a, b) => ray.origin.distanceTo(a) - ray.origin.distanceTo(b))[0];\n\n\t\t\t\tlet farthestOnLine = allPointsFar.map(p => viewLine.closestPointToPoint(p.position, false, new THREE.Vector3()));\n\t\t\t\tlet farthest = farthestOnLine.sort( (a, b) => ray.origin.distanceTo(b) - ray.origin.distanceTo(a))[0];\n\n\t\t\t\tlet distance = closest.distanceTo(farthest);\n\t\t\t\tlet centroid = new THREE.Vector3().addVectors(closest, farthest).multiplyScalar(0.5);\n\t\t\t\tvolume.scale.z = distance * 1.1;\n\t\t\t\tvolume.position.copy(centroid);\n\t\t\t}\n\n\t\t\tvolume.clip = true;\n\t\t};\n\n\t\tthis.addEventListener(\"drag\", drag);\n\t\tthis.addEventListener(\"drop\", drop);\n\n\t\tviewer.inputHandler.addInputListener(this);\n\n\t\treturn volume;\n\t}\n\n\tupdate(e){\n\t\t//console.log(e.delta)\n\t}\n\n\trender(){\n\t\tthis.viewer.renderer.render(this.scene, this.viewer.scene.getActiveCamera());\n\t}\n\n}","\nexport class SpotLightHelper extends THREE.Object3D{\n\n\tconstructor(light, color){\n\t\tsuper();\n\n\t\tthis.light = light;\n\t\tthis.color = color;\n\n\t\t//this.up.set(0, 0, 1);\n\t\tthis.updateMatrix();\n\t\tthis.updateMatrixWorld();\n\n\t\t{ // SPHERE\n\t\t\tlet sg = new THREE.SphereGeometry(1, 32, 32);\n\t\t\tlet sm = new THREE.MeshNormalMaterial();\n\t\t\tthis.sphere = new THREE.Mesh(sg, sm);\n\t\t\tthis.sphere.scale.set(0.5, 0.5, 0.5);\n\t\t\tthis.add(this.sphere);\n\t\t}\n\n\t\t{ // LINES\n\t\t\t\n\n\t\t\tlet positions = new Float32Array([\n\t\t\t\t+0, +0, +0, +0, +0, -1,\n\n\t\t\t\t+0, +0, +0, -1, -1, -1,\n\t\t\t\t+0, +0, +0, +1, -1, -1,\n\t\t\t\t+0, +0, +0, +1, +1, -1,\n\t\t\t\t+0, +0, +0, -1, +1, -1,\n\n\t\t\t\t-1, -1, -1, +1, -1, -1,\n\t\t\t\t+1, -1, -1, +1, +1, -1,\n\t\t\t\t+1, +1, -1, -1, +1, -1,\n\t\t\t\t-1, +1, -1, -1, -1, -1,\n\t\t\t]);\n\n\t\t\tlet geometry = new THREE.BufferGeometry();\n\t\t\tgeometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n\n\t\t\tlet material = new THREE.LineBasicMaterial();\n\n\t\t\tthis.frustum = new THREE.LineSegments(geometry, material);\n\t\t\tthis.add(this.frustum);\n\n\t\t}\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\n\t\tthis.light.updateMatrix();\n\t\tthis.light.updateMatrixWorld();\n\n\t\tlet position = this.light.position;\n\t\t//let target = new THREE.Vector3().addVectors(\n\t\t//\tlight.position,\n\t\t//\tnew THREE.Vector3().subVectors(light.position, this.light.getWorldDirection(new THREE.Vector3())));\n\t\tlet target = new THREE.Vector3().addVectors(\n\t\t\tlight.position, this.light.getWorldDirection(new THREE.Vector3()).multiplyScalar(-1));\n\t\t\n\t\tlet quat = new THREE.Quaternion().setFromRotationMatrix(\n\t\t\tnew THREE.Matrix4().lookAt( position, target, new THREE.Vector3( 0, 0, 1 ) )\n\t\t);\n\n\t\tthis.setRotationFromQuaternion(quat);\n\t\tthis.position.copy(position);\n\n\n\t\tlet coneLength = (this.light.distance > 0) ? this.light.distance : 1000;\n\t\tlet coneWidth = coneLength * Math.tan( this.light.angle * 0.5 );\n\n\t\tthis.frustum.scale.set(coneWidth, coneWidth, coneLength);\n\t\t\n\n\n\t\t//{\n\t\t//\tlet fov = (180 * light.angle) / Math.PI;\n\t\t//\tlet aspect = light.shadow.mapSize.width / light.shadow.mapSize.height;\n\t\t//\tlet near = 0.1;\n\t\t//\tlet far = light.distance === 0 ? 10000 : light.distance;\n\t\t//\tthis.camera = new THREE.PerspectiveCamera(fov, aspect, near, far);\n\t\t//\tthis.camera.up.set(0, 0, 1);\n\t\t//\tthis.camera.position.copy(light.position);\n\n\t\t//\tlet target = new THREE.Vector3().addVectors(light.position, light.getWorldDirection(new THREE.Vector3()));\n\t\t//\tthis.camera.lookAt(target);\n\n\t\t//\tthis.camera.updateProjectionMatrix();\n\t\t//\tthis.camera.updateMatrix();\n\t\t//\tthis.camera.updateMatrixWorld();\n\t\t//\tthis.camera.matrixWorldInverse.getInverse(this.camera.matrixWorld);\n\t\t//}\n\n\t}\n\n}","\n\nimport {Utils} from \"../utils.js\";\n\nexport class TransformationTool {\n\tconstructor(viewer) {\n\t\tthis.viewer = viewer;\n\n\t\tthis.scene = new THREE.Scene();\n\n\t\tthis.selection = [];\n\t\tthis.pivot = new THREE.Vector3();\n\t\tthis.dragging = false;\n\t\tthis.showPickVolumes = false;\n\n\t\tthis.viewer.inputHandler.registerInteractiveScene(this.scene);\n\t\tthis.viewer.inputHandler.addEventListener('selection_changed', (e) => {\n\t\t\tfor(let selected of this.selection){\n\t\t\t\tthis.viewer.inputHandler.blacklist.delete(selected);\n\t\t\t}\n\n\t\t\tthis.selection = e.selection;\n\n\t\t\tfor(let selected of this.selection){\n\t\t\t\tthis.viewer.inputHandler.blacklist.add(selected);\n\t\t\t}\n\n\t\t});\n\n\t\tlet red = 0xE73100;\n\t\tlet green = 0x44A24A;\n\t\tlet blue = 0x2669E7;\n\t\t\n\t\tthis.activeHandle = null;\n\t\tthis.scaleHandles = {\n\t\t\t\"scale.x+\": {name: \"scale.x+\", node: new THREE.Object3D(), color: red, alignment: [+1, +0, +0]},\n\t\t\t\"scale.x-\": {name: \"scale.x-\", node: new THREE.Object3D(), color: red, alignment: [-1, +0, +0]},\n\t\t\t\"scale.y+\": {name: \"scale.y+\", node: new THREE.Object3D(), color: green, alignment: [+0, +1, +0]},\n\t\t\t\"scale.y-\": {name: \"scale.y-\", node: new THREE.Object3D(), color: green, alignment: [+0, -1, +0]},\n\t\t\t\"scale.z+\": {name: \"scale.z+\", node: new THREE.Object3D(), color: blue, alignment: [+0, +0, +1]},\n\t\t\t\"scale.z-\": {name: \"scale.z-\", node: new THREE.Object3D(), color: blue, alignment: [+0, +0, -1]},\n\t\t};\n\t\tthis.focusHandles = {\n\t\t\t\"focus.x+\": {name: \"focus.x+\", node: new THREE.Object3D(), color: red, alignment: [+1, +0, +0]},\n\t\t\t\"focus.x-\": {name: \"focus.x-\", node: new THREE.Object3D(), color: red, alignment: [-1, +0, +0]},\n\t\t\t\"focus.y+\": {name: \"focus.y+\", node: new THREE.Object3D(), color: green, alignment: [+0, +1, +0]},\n\t\t\t\"focus.y-\": {name: \"focus.y-\", node: new THREE.Object3D(), color: green, alignment: [+0, -1, +0]},\n\t\t\t\"focus.z+\": {name: \"focus.z+\", node: new THREE.Object3D(), color: blue, alignment: [+0, +0, +1]},\n\t\t\t\"focus.z-\": {name: \"focus.z-\", node: new THREE.Object3D(), color: blue, alignment: [+0, +0, -1]},\n\t\t};\n\t\tthis.translationHandles = {\n\t\t\t\"translation.x\": {name: \"translation.x\", node: new THREE.Object3D(), color: red, alignment: [1, 0, 0]},\n\t\t\t\"translation.y\": {name: \"translation.y\", node: new THREE.Object3D(), color: green, alignment: [0, 1, 0]},\n\t\t\t\"translation.z\": {name: \"translation.z\", node: new THREE.Object3D(), color: blue, alignment: [0, 0, 1]},\n\t\t};\n\t\tthis.rotationHandles = {\n\t\t\t\"rotation.x\": {name: \"rotation.x\", node: new THREE.Object3D(), color: red, alignment: [1, 0, 0]},\n\t\t\t\"rotation.y\": {name: \"rotation.y\", node: new THREE.Object3D(), color: green, alignment: [0, 1, 0]},\n\t\t\t\"rotation.z\": {name: \"rotation.z\", node: new THREE.Object3D(), color: blue, alignment: [0, 0, 1]},\n\t\t};\n\t\tthis.handles = Object.assign({}, this.scaleHandles, this.focusHandles, this.translationHandles, this.rotationHandles);\n\t\tthis.pickVolumes = [];\n\n\t\tthis.initializeScaleHandles();\n\t\tthis.initializeFocusHandles();\n\t\tthis.initializeTranslationHandles();\n\t\tthis.initializeRotationHandles();\n\n\n\t\tlet boxFrameGeometry = new THREE.Geometry();\n\t\t{\n\t\t\t// bottom\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5));\n\t\t\t// top\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5));\n\t\t\t// sides\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5));\n\t\t}\n\t\tthis.frame = new THREE.LineSegments(boxFrameGeometry, new THREE.LineBasicMaterial({color: 0xffff00}));\n\t\tthis.scene.add(this.frame);\n\n\t\t\n\t}\n\n\tinitializeScaleHandles(){\n\t\tlet sgSphere = new THREE.SphereGeometry(1, 32, 32);\n\t\tlet sgLowPolySphere = new THREE.SphereGeometry(1, 16, 16);\n\n\t\tfor(let handleName of Object.keys(this.scaleHandles)){\n\t\t\tlet handle = this.scaleHandles[handleName];\n\t\t\tlet node = handle.node;\n\t\t\tthis.scene.add(node);\n\t\t\tnode.position.set(...handle.alignment).multiplyScalar(0.5);\n\n\t\t\tlet material = new THREE.MeshBasicMaterial({\n\t\t\t\tcolor: handle.color,\n\t\t\t\topacity: 0.4,\n\t\t\t\ttransparent: true\n\t\t\t\t});\n\n\t\t\tlet outlineMaterial = new THREE.MeshBasicMaterial({\n\t\t\t\tcolor: 0x000000, \n\t\t\t\tside: THREE.BackSide,\n\t\t\t\topacity: 0.4,\n\t\t\t\ttransparent: true});\n\n\t\t\tlet pickMaterial = new THREE.MeshNormalMaterial({\n\t\t\t\topacity: 0.2,\n\t\t\t\ttransparent: true,\n\t\t\t\tvisible: this.showPickVolumes});\n\n\t\t\tlet sphere = new THREE.Mesh(sgSphere, material);\n\t\t\tsphere.scale.set(1.3, 1.3, 1.3);\n\t\t\tsphere.name = `${handleName}.handle`;\n\t\t\tnode.add(sphere);\n\t\t\t\n\t\t\tlet outline = new THREE.Mesh(sgSphere, outlineMaterial);\n\t\t\toutline.scale.set(1.4, 1.4, 1.4);\n\t\t\toutline.name = `${handleName}.outline`;\n\t\t\tsphere.add(outline);\n\n\t\t\tlet pickSphere = new THREE.Mesh(sgLowPolySphere, pickMaterial);\n\t\t\tpickSphere.name = `${handleName}.pick_volume`;\n\t\t\tpickSphere.scale.set(3, 3, 3);\n\t\t\tsphere.add(pickSphere);\n\t\t\tpickSphere.handle = handleName;\n\t\t\tthis.pickVolumes.push(pickSphere);\n\n\t\t\tnode.setOpacity = (target) => {\n\t\t\t\tlet opacity = {x: material.opacity};\n\t\t\t\tlet t = new TWEEN.Tween(opacity).to({x: target}, 100);\n\t\t\t\tt.onUpdate(() => {\n\t\t\t\t\tsphere.visible = opacity.x > 0;\n\t\t\t\t\tpickSphere.visible = opacity.x > 0;\n\t\t\t\t\tmaterial.opacity = opacity.x;\n\t\t\t\t\toutlineMaterial.opacity = opacity.x;\n\t\t\t\t\tpickSphere.material.opacity = opacity.x * 0.5;\n\t\t\t\t});\n\t\t\t\tt.start();\n\t\t\t};\n\n\t\t\tpickSphere.addEventListener(\"drag\", (e) => this.dragScaleHandle(e));\n\t\t\tpickSphere.addEventListener(\"drop\", (e) => this.dropScaleHandle(e));\n\n\t\t\tpickSphere.addEventListener(\"mouseover\", e => {\n\t\t\t\t//node.setOpacity(1);\n\t\t\t});\n\n\t\t\tpickSphere.addEventListener(\"click\", e => {\n\t\t\t\te.consume();\n\t\t\t});\n\n\t\t\tpickSphere.addEventListener(\"mouseleave\", e => {\n\t\t\t\t//node.setOpacity(0.4);\n\t\t\t});\n\t\t}\n\t}\n\n\tinitializeFocusHandles(){\n\t\t//let sgBox = new THREE.BoxGeometry(1, 1, 1);\n\t\tlet sgPlane = new THREE.PlaneGeometry(4, 4, 1, 1);\n\t\tlet sgLowPolySphere = new THREE.SphereGeometry(1, 16, 16);\n\n\t\tlet texture = new THREE.TextureLoader().load(`${exports.resourcePath}/icons/eye_2.png`);\n\n\t\tfor(let handleName of Object.keys(this.focusHandles)){\n\t\t\tlet handle = this.focusHandles[handleName];\n\t\t\tlet node = handle.node;\n\t\t\tthis.scene.add(node);\n\t\t\tlet align = handle.alignment;\n\n\t\t\t//node.lookAt(new THREE.Vector3().addVectors(node.position, new THREE.Vector3(...align)));\n\t\t\tnode.lookAt(new THREE.Vector3(...align));\n\n\t\t\tlet off = 0.8;\n\t\t\tif(align[0] === 1){\n\t\t\t\tnode.position.set(1, off, -off).multiplyScalar(0.5);\n\t\t\t\tnode.rotation.z = Math.PI / 2;\n\t\t\t}else if(align[0] === -1){\n\t\t\t\tnode.position.set(-1, -off, -off).multiplyScalar(0.5);\n\t\t\t\tnode.rotation.z = Math.PI / 2;\n\t\t\t}else if(align[1] === 1){\n\t\t\t\tnode.position.set(-off, 1, -off).multiplyScalar(0.5);\n\t\t\t\tnode.rotation.set(Math.PI / 2, Math.PI, 0.0);\n\t\t\t}else if(align[1] === -1){\n\t\t\t\tnode.position.set(off, -1, -off).multiplyScalar(0.5);\n\t\t\t\tnode.rotation.set(Math.PI / 2, 0.0, 0.0);\n\t\t\t}else if(align[2] === 1){\n\t\t\t\tnode.position.set(off, off, 1).multiplyScalar(0.5);\n\t\t\t}else if(align[2] === -1){\n\t\t\t\tnode.position.set(-off, off, -1).multiplyScalar(0.5);\n\t\t\t}\n\n\t\t\tlet material = new THREE.MeshBasicMaterial({\n\t\t\t\tcolor: handle.color,\n\t\t\t\topacity: 0,\n\t\t\t\ttransparent: true,\n\t\t\t\tmap: texture\n\t\t\t});\n\n\t\t\t//let outlineMaterial = new THREE.MeshBasicMaterial({\n\t\t\t//\tcolor: 0x000000, \n\t\t\t//\tside: THREE.BackSide,\n\t\t\t//\topacity: 0,\n\t\t\t//\ttransparent: true});\n\n\t\t\tlet pickMaterial = new THREE.MeshNormalMaterial({\n\t\t\t\t//opacity: 0,\n\t\t\t\ttransparent: true,\n\t\t\t\tvisible: this.showPickVolumes});\n\n\t\t\tlet box = new THREE.Mesh(sgPlane, material);\n\t\t\tbox.name = `${handleName}.handle`;\n\t\t\tbox.scale.set(1.5, 1.5, 1.5);\n\t\t\tbox.position.set(0, 0, 0);\n\t\t\tbox.visible = false;\n\t\t\tnode.add(box);\n\t\t\t//handle.focusNode = box;\n\t\t\t\n\t\t\t//let outline = new THREE.Mesh(sgPlane, outlineMaterial);\n\t\t\t//outline.scale.set(1.4, 1.4, 1.4);\n\t\t\t//outline.name = `${handleName}.outline`;\n\t\t\t//box.add(outline);\n\n\t\t\tlet pickSphere = new THREE.Mesh(sgLowPolySphere, pickMaterial);\n\t\t\tpickSphere.name = `${handleName}.pick_volume`;\n\t\t\tpickSphere.scale.set(3, 3, 3);\n\t\t\tbox.add(pickSphere);\n\t\t\tpickSphere.handle = handleName;\n\t\t\tthis.pickVolumes.push(pickSphere);\n\n\t\t\tnode.setOpacity = (target) => {\n\t\t\t\tlet opacity = {x: material.opacity};\n\t\t\t\tlet t = new TWEEN.Tween(opacity).to({x: target}, 100);\n\t\t\t\tt.onUpdate(() => {\n\t\t\t\t\tpickSphere.visible = opacity.x > 0;\n\t\t\t\t\tbox.visible = opacity.x > 0;\n\t\t\t\t\tmaterial.opacity = opacity.x;\n\t\t\t\t\t//outlineMaterial.opacity = opacity.x;\n\t\t\t\t\tpickSphere.material.opacity = opacity.x * 0.5;\n\t\t\t\t});\n\t\t\t\tt.start();\n\t\t\t};\n\n\t\t\tpickSphere.addEventListener(\"drag\", e => {});\n\n\t\t\tpickSphere.addEventListener(\"mouseup\", e => {\n\t\t\t\te.consume();\n\t\t\t});\n\n\t\t\tpickSphere.addEventListener(\"mousedown\", e => {\n\t\t\t\te.consume();\n\t\t\t});\n\n\t\t\tpickSphere.addEventListener(\"click\", e => {\n\t\t\t\te.consume();\n\n\t\t\t\tlet selected = this.selection[0];\n\t\t\t\tlet maxScale = Math.max(...selected.scale.toArray());\n\t\t\t\tlet minScale = Math.min(...selected.scale.toArray());\n\t\t\t\tlet handleLength = Math.abs(selected.scale.dot(new THREE.Vector3(...handle.alignment)));\n\t\t\t\tlet alignment = new THREE.Vector3(...handle.alignment).multiplyScalar(2 * maxScale / handleLength);\n\t\t\t\talignment.applyMatrix4(selected.matrixWorld);\n\t\t\t\tlet newCamPos = alignment;\n\t\t\t\tlet newCamTarget = selected.getWorldPosition(new THREE.Vector3());\n\n\t\t\t\tUtils.moveTo(this.viewer.scene, newCamPos, newCamTarget);\n\t\t\t});\n\n\t\t\tpickSphere.addEventListener(\"mouseover\", e => {\n\t\t\t\t//box.setOpacity(1);\n\t\t\t});\n\n\t\t\tpickSphere.addEventListener(\"mouseleave\", e => {\n\t\t\t\t//box.setOpacity(0.4);\n\t\t\t});\n\t\t}\n\t}\n\n\tinitializeTranslationHandles(){\n\t\tlet boxGeometry = new THREE.BoxGeometry(1, 1, 1);\n\n\t\tfor(let handleName of Object.keys(this.translationHandles)){\n\t\t\tlet handle = this.handles[handleName];\n\t\t\tlet node = handle.node;\n\t\t\tthis.scene.add(node);\n\n\t\t\tlet material = new THREE.MeshBasicMaterial({\n\t\t\t\tcolor: handle.color,\n\t\t\t\topacity: 0.4,\n\t\t\t\ttransparent: true});\n\n\t\t\tlet outlineMaterial = new THREE.MeshBasicMaterial({\n\t\t\t\tcolor: 0x000000, \n\t\t\t\tside: THREE.BackSide,\n\t\t\t\topacity: 0.4,\n\t\t\t\ttransparent: true});\n\n\t\t\tlet pickMaterial = new THREE.MeshNormalMaterial({\n\t\t\t\topacity: 0.2,\n\t\t\t\ttransparent: true,\n\t\t\t\tvisible: this.showPickVolumes\n\t\t\t});\n\n\t\t\tlet box = new THREE.Mesh(boxGeometry, material);\n\t\t\tbox.name = `${handleName}.handle`;\n\t\t\tbox.scale.set(0.2, 0.2, 40);\n\t\t\tbox.lookAt(new THREE.Vector3(...handle.alignment));\n\t\t\tbox.renderOrder = 10;\n\t\t\tnode.add(box);\n\t\t\thandle.translateNode = box;\n\n\t\t\tlet outline = new THREE.Mesh(boxGeometry, outlineMaterial);\n\t\t\toutline.name = `${handleName}.outline`;\n\t\t\toutline.scale.set(3, 3, 1.03);\n\t\t\toutline.renderOrder = 0;\n\t\t\tbox.add(outline);\n\n\t\t\tlet pickVolume = new THREE.Mesh(boxGeometry, pickMaterial);\n\t\t\tpickVolume.name = `${handleName}.pick_volume`;\n\t\t\tpickVolume.scale.set(12, 12, 1.1);\n\t\t\tpickVolume.handle = handleName;\n\t\t\tbox.add(pickVolume);\n\t\t\tthis.pickVolumes.push(pickVolume);\n\n\t\t\tnode.setOpacity = (target) => {\n\t\t\t\tlet opacity = {x: material.opacity};\n\t\t\t\tlet t = new TWEEN.Tween(opacity).to({x: target}, 100);\n\t\t\t\tt.onUpdate(() => {\n\t\t\t\t\tbox.visible = opacity.x > 0;\n\t\t\t\t\tpickVolume.visible = opacity.x > 0;\n\t\t\t\t\tmaterial.opacity = opacity.x;\n\t\t\t\t\toutlineMaterial.opacity = opacity.x;\n\t\t\t\t\tpickMaterial.opacity = opacity.x * 0.5;\n\t\t\t\t});\n\t\t\t\tt.start();\n\t\t\t};\n\n\t\t\tpickVolume.addEventListener(\"drag\", (e) => {this.dragTranslationHandle(e)});\n\t\t\tpickVolume.addEventListener(\"drop\", (e) => {this.dropTranslationHandle(e)});\n\t\t}\n\t}\n\n\tinitializeRotationHandles(){\n\t\tlet adjust = 0.5;\n\t\tlet torusGeometry = new THREE.TorusGeometry(1, adjust * 0.015, 8, 64, Math.PI / 2);\n\t\tlet outlineGeometry = new THREE.TorusGeometry(1, adjust * 0.04, 8, 64, Math.PI / 2);\n\t\tlet pickGeometry = new THREE.TorusGeometry(1, adjust * 0.1, 6, 4, Math.PI / 2);\n\n\t\tfor(let handleName of Object.keys(this.rotationHandles)){\n\t\t\tlet handle = this.handles[handleName];\n\t\t\tlet node = handle.node;\n\t\t\tthis.scene.add(node);\n\n\t\t\tlet material = new THREE.MeshBasicMaterial({\n\t\t\t\tcolor: handle.color,\n\t\t\t\topacity: 0.4,\n\t\t\t\ttransparent: true});\n\n\t\t\tlet outlineMaterial = new THREE.MeshBasicMaterial({\n\t\t\t\tcolor: 0x000000, \n\t\t\t\tside: THREE.BackSide,\n\t\t\t\topacity: 0.4,\n\t\t\t\ttransparent: true});\n\n\t\t\tlet pickMaterial = new THREE.MeshNormalMaterial({\n\t\t\t\topacity: 0.2,\n\t\t\t\ttransparent: true,\n\t\t\t\tvisible: this.showPickVolumes\n\t\t\t});\n\n\t\t\tlet box = new THREE.Mesh(torusGeometry, material);\n\t\t\tbox.name = `${handleName}.handle`;\n\t\t\tbox.scale.set(20, 20, 20);\n\t\t\tbox.lookAt(new THREE.Vector3(...handle.alignment));\n\t\t\tnode.add(box);\n\t\t\thandle.translateNode = box;\n\n\t\t\tlet outline = new THREE.Mesh(outlineGeometry, outlineMaterial);\n\t\t\toutline.name = `${handleName}.outline`;\n\t\t\toutline.scale.set(1, 1, 1);\n\t\t\toutline.renderOrder = 0;\n\t\t\tbox.add(outline);\n\n\t\t\tlet pickVolume = new THREE.Mesh(pickGeometry, pickMaterial);\n\t\t\tpickVolume.name = `${handleName}.pick_volume`;\n\t\t\tpickVolume.scale.set(1, 1, 1);\n\t\t\tpickVolume.handle = handleName;\n\t\t\tbox.add(pickVolume);\n\t\t\tthis.pickVolumes.push(pickVolume);\n\n\t\t\tnode.setOpacity = (target) => {\n\t\t\t\tlet opacity = {x: material.opacity};\n\t\t\t\tlet t = new TWEEN.Tween(opacity).to({x: target}, 100);\n\t\t\t\tt.onUpdate(() => {\n\t\t\t\t\tbox.visible = opacity.x > 0;\n\t\t\t\t\tpickVolume.visible = opacity.x > 0;\n\t\t\t\t\tmaterial.opacity = opacity.x;\n\t\t\t\t\toutlineMaterial.opacity = opacity.x;\n\t\t\t\t\tpickMaterial.opacity = opacity.x * 0.5;\n\t\t\t\t});\n\t\t\t\tt.start();\n\t\t\t};\n\n\n\t\t\t//pickVolume.addEventListener(\"mouseover\", (e) => {\n\t\t\t//\t//let a = this.viewer.scene.getActiveCamera().getWorldDirection(new THREE.Vector3()).dot(pickVolume.getWorldDirection(new THREE.Vector3()));\n\t\t\t//\tconsole.log(pickVolume.getWorldDirection(new THREE.Vector3()));\n\t\t\t//});\n\t\t\t\n\t\t\tpickVolume.addEventListener(\"drag\", (e) => {this.dragRotationHandle(e)});\n\t\t\tpickVolume.addEventListener(\"drop\", (e) => {this.dropRotationHandle(e)});\n\t\t}\n\t}\n\n\tdragRotationHandle(e){\n\t\tlet drag = e.drag;\n\t\tlet handle = this.activeHandle;\n\t\tlet camera = this.viewer.scene.getActiveCamera();\n\n\t\tif(!handle){\n\t\t\treturn\n\t\t};\n\n\t\tlet localNormal = new THREE.Vector3(...handle.alignment);\n\t\tlet n = new THREE.Vector3();\n\t\tn.copy(new THREE.Vector4(...localNormal.toArray(), 0).applyMatrix4(handle.node.matrixWorld));\n\t\tn.normalize();\n\n\t\tif (!drag.intersectionStart){\n\n\t\t\t//this.viewer.scene.scene.remove(this.debug);\n\t\t\t//this.debug = new THREE.Object3D();\n\t\t\t//this.viewer.scene.scene.add(this.debug);\n\t\t\t//Utils.debugSphere(this.debug, drag.location, 3, 0xaaaaaa);\n\t\t\t//let debugEnd = drag.location.clone().add(n.clone().multiplyScalar(20));\n\t\t\t//Utils.debugLine(this.debug, drag.location, debugEnd, 0xff0000);\n\n\t\t\tdrag.intersectionStart = drag.location;\n\t\t\tdrag.objectStart = drag.object.getWorldPosition(new THREE.Vector3());\n\t\t\tdrag.handle = handle;\n\n\t\t\tlet plane = new THREE.Plane().setFromNormalAndCoplanarPoint(n, drag.intersectionStart);\n\n\t\t\tdrag.dragPlane = plane;\n\t\t\tdrag.pivot = drag.intersectionStart;\n\t\t}else{\n\t\t\thandle = drag.handle;\n\t\t}\n\n\t\tthis.dragging = true;\n\n\t\tlet mouse = drag.end;\n\t\tlet domElement = this.viewer.renderer.domElement;\n\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\n\t\t\n\t\tlet I = ray.intersectPlane(drag.dragPlane, new THREE.Vector3());\n\n\t\tif (I) {\n\t\t\tlet center = this.scene.getWorldPosition(new THREE.Vector3());\n\t\t\tlet from = drag.pivot;\n\t\t\tlet to = I;\n\n\t\t\tlet v1 = from.clone().sub(center).normalize();\n\t\t\tlet v2 = to.clone().sub(center).normalize();\n\n\t\t\tlet angle = Math.acos(v1.dot(v2));\n\t\t\tlet sign = Math.sign(v1.cross(v2).dot(n));\n\t\t\tangle = angle * sign;\n\t\t\tif (Number.isNaN(angle)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet normal = new THREE.Vector3(...handle.alignment);\n\t\t\tfor (let selection of this.selection) {\n\t\t\t\tselection.rotateOnAxis(normal, angle);\n\t\t\t\tselection.dispatchEvent({\n\t\t\t\t\ttype: \"orientation_changed\",\n\t\t\t\t\tobject: selection\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tdrag.pivot = I;\n\t\t}\n\t}\n\n\tdropRotationHandle(e){\n\t\tthis.dragging = false;\n\t\tthis.setActiveHandle(null);\n\t}\n\n\tdragTranslationHandle(e){\n\t\tlet drag = e.drag;\n\t\tlet handle = this.activeHandle;\n\t\tlet camera = this.viewer.scene.getActiveCamera();\n\t\t\t\n\t\tif(!drag.intersectionStart && handle){\n\t\t\tdrag.intersectionStart = drag.location;\n\t\t\tdrag.objectStart = drag.object.getWorldPosition(new THREE.Vector3());\n\n\t\t\tlet start = drag.intersectionStart;\n\t\t\tlet dir = new THREE.Vector4(...handle.alignment, 0).applyMatrix4(this.scene.matrixWorld);\n\t\t\tlet end = new THREE.Vector3().addVectors(start, dir);\n\t\t\tlet line = new THREE.Line3(start.clone(), end.clone());\n\t\t\tdrag.line = line;\n\n\t\t\tlet camOnLine = line.closestPointToPoint(camera.position, false, new THREE.Vector3());\n\t\t\tlet normal = new THREE.Vector3().subVectors(camera.position, camOnLine);\n\t\t\tlet plane = new THREE.Plane().setFromNormalAndCoplanarPoint(normal, drag.intersectionStart);\n\t\t\tdrag.dragPlane = plane;\n\t\t\tdrag.pivot = drag.intersectionStart;\n\t\t}else{\n\t\t\thandle = drag.handle;\n\t\t}\n\n\t\tthis.dragging = true;\n\n\t\t{\n\t\t\tlet mouse = drag.end;\n\t\t\tlet domElement = this.viewer.renderer.domElement;\n\t\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\n\t\t\tlet I = ray.intersectPlane(drag.dragPlane, new THREE.Vector3());\n\n\t\t\tif (I) {\n\t\t\t\tlet iOnLine = drag.line.closestPointToPoint(I, false, new THREE.Vector3());\n\n\t\t\t\tlet diff = new THREE.Vector3().subVectors(iOnLine, drag.pivot);\n\n\t\t\t\tfor (let selection of this.selection) {\n\t\t\t\t\tselection.position.add(diff);\n\t\t\t\t\tselection.dispatchEvent({\n\t\t\t\t\t\ttype: \"position_changed\",\n\t\t\t\t\t\tobject: selection\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tdrag.pivot = drag.pivot.add(diff);\n\t\t\t}\n\t\t}\n\t}\n\n\tdropTranslationHandle(e){\n\t\tthis.dragging = false;\n\t\tthis.setActiveHandle(null);\n\t}\n\n\tdropScaleHandle(e){\n\t\tthis.dragging = false;\n\t\tthis.setActiveHandle(null);\n\t}\n\n\tdragScaleHandle(e){\n\t\tlet drag = e.drag;\n\t\tlet handle = this.activeHandle;\n\t\tlet camera = this.viewer.scene.getActiveCamera();\n\n\t\tif(!drag.intersectionStart){\n\t\t\tdrag.intersectionStart = drag.location;\n\t\t\tdrag.objectStart = drag.object.getWorldPosition(new THREE.Vector3());\n\t\t\tdrag.handle = handle;\n\n\t\t\tlet start = drag.intersectionStart;\n\t\t\tlet dir = new THREE.Vector4(...handle.alignment, 0).applyMatrix4(this.scene.matrixWorld);\n\t\t\tlet end = new THREE.Vector3().addVectors(start, dir);\n\t\t\tlet line = new THREE.Line3(start.clone(), end.clone());\n\t\t\tdrag.line = line;\n\n\t\t\tlet camOnLine = line.closestPointToPoint(camera.position, false, new THREE.Vector3());\n\t\t\tlet normal = new THREE.Vector3().subVectors(camera.position, camOnLine);\n\t\t\tlet plane = new THREE.Plane().setFromNormalAndCoplanarPoint(normal, drag.intersectionStart);\n\t\t\tdrag.dragPlane = plane;\n\t\t\tdrag.pivot = drag.intersectionStart;\n\n\t\t\t//Utils.debugSphere(viewer.scene.scene, drag.pivot, 0.05);\n\t\t}else{\n\t\t\thandle = drag.handle;\n\t\t}\n\n\t\tthis.dragging = true;\n\n\t\t{\n\t\t\tlet mouse = drag.end;\n\t\t\tlet domElement = this.viewer.renderer.domElement;\n\t\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\n\t\t\tlet I = ray.intersectPlane(drag.dragPlane, new THREE.Vector3());\n\n\t\t\tif (I) {\n\t\t\t\tlet iOnLine = drag.line.closestPointToPoint(I, false, new THREE.Vector3());\n\t\t\t\tlet direction = handle.alignment.reduce( (a, v) => a + v, 0);\n\n\t\t\t\tlet toObjectSpace = new THREE.Matrix4().getInverse( this.selection[0].matrixWorld);\n\t\t\t\tlet iOnLineOS = iOnLine.clone().applyMatrix4(toObjectSpace);\n\t\t\t\tlet pivotOS = drag.pivot.clone().applyMatrix4(toObjectSpace);\n\t\t\t\tlet diffOS = new THREE.Vector3().subVectors(iOnLineOS, pivotOS);\n\t\t\t\tlet dragDirectionOS = diffOS.clone().normalize();\n\t\t\t\tif(iOnLine.distanceTo(drag.pivot) === 0){\n\t\t\t\t\tdragDirectionOS.set(0, 0, 0);\n\t\t\t\t}\n\t\t\t\tlet dragDirection = dragDirectionOS.dot(new THREE.Vector3(...handle.alignment));\n\n\t\t\t\tlet diff = new THREE.Vector3().subVectors(iOnLine, drag.pivot);\n\t\t\t\tlet diffScale = new THREE.Vector3(...handle.alignment).multiplyScalar(diff.length() * direction * dragDirection);\n\t\t\t\tlet diffPosition = diff.clone().multiplyScalar(0.5);\n\n\t\t\t\tfor (let selection of this.selection) {\n\t\t\t\t\tselection.scale.add(diffScale);\n\t\t\t\t\tselection.scale.x = Math.max(0.1, selection.scale.x);\n\t\t\t\t\tselection.scale.y = Math.max(0.1, selection.scale.y);\n\t\t\t\t\tselection.scale.z = Math.max(0.1, selection.scale.z);\n\t\t\t\t\tselection.position.add(diffPosition);\n\t\t\t\t\tselection.dispatchEvent({\n\t\t\t\t\t\ttype: \"position_changed\",\n\t\t\t\t\t\tobject: selection\n\t\t\t\t\t});\n\t\t\t\t\tselection.dispatchEvent({\n\t\t\t\t\t\ttype: \"scale_changed\",\n\t\t\t\t\t\tobject: selection\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tdrag.pivot.copy(iOnLine);\n\t\t\t\t//Utils.debugSphere(viewer.scene.scene, drag.pivot, 0.05);\n\t\t\t}\n\t\t}\n\t}\n\n\tsetActiveHandle(handle){\n\t\tif(this.dragging){\n\t\t\treturn;\n\t\t}\n\n\t\tif(this.activeHandle === handle){\n\t\t\treturn;\n\t\t}\n\n\t\tthis.activeHandle = handle;\n\n\t\tif(handle === null){\n\t\t\tfor(let handleName of Object.keys(this.handles)){\n\t\t\t\tlet handle = this.handles[handleName];\n\t\t\t\thandle.node.setOpacity(0);\n\t\t\t}\n\t\t}\n\n\t\tfor(let handleName of Object.keys(this.focusHandles)){\n\t\t\tlet handle = this.focusHandles[handleName];\n\n\t\t\tif(this.activeHandle === handle){\n\t\t\t\thandle.node.setOpacity(1.0);\n\t\t\t}else{\n\t\t\t\thandle.node.setOpacity(0.4)\n\t\t\t}\n\t\t}\n\n\t\tfor(let handleName of Object.keys(this.translationHandles)){\n\t\t\tlet handle = this.translationHandles[handleName];\n\n\t\t\tif(this.activeHandle === handle){\n\t\t\t\thandle.node.setOpacity(1.0);\n\t\t\t}else{\n\t\t\t\thandle.node.setOpacity(0.4)\n\t\t\t}\n\t\t}\n\n\t\tfor(let handleName of Object.keys(this.rotationHandles)){\n\t\t\tlet handle = this.rotationHandles[handleName];\n\n\t\t\t//if(this.activeHandle === handle){\n\t\t\t//\thandle.node.setOpacity(1.0);\n\t\t\t//}else{\n\t\t\t//\thandle.node.setOpacity(0.4)\n\t\t\t//}\n\n\t\t\thandle.node.setOpacity(0.4);\n\t\t}\n\n\t\tfor(let handleName of Object.keys(this.scaleHandles)){\n\t\t\tlet handle = this.scaleHandles[handleName];\n\n\t\t\tif(this.activeHandle === handle){\n\t\t\t\thandle.node.setOpacity(1.0);\n\n\t\t\t\tlet relatedFocusHandle = this.focusHandles[handle.name.replace(\"scale\", \"focus\")];\n\t\t\t\tlet relatedFocusNode = relatedFocusHandle.node;\n\t\t\t\trelatedFocusNode.setOpacity(0.4);\n\n\t\t\t\tfor(let translationHandleName of Object.keys(this.translationHandles)){\n\t\t\t\t\tlet translationHandle = this.translationHandles[translationHandleName];\n\t\t\t\t\ttranslationHandle.node.setOpacity(0.4);\n\t\t\t\t}\n\n\t\t\t\t//let relatedTranslationHandle = this.translationHandles[\n\t\t\t\t//\thandle.name.replace(\"scale\", \"translation\").replace(/[+-]/g, \"\")];\n\t\t\t\t//let relatedTranslationNode = relatedTranslationHandle.node;\n\t\t\t\t//relatedTranslationNode.setOpacity(0.4);\n\n\n\t\t\t}else{\n\t\t\t\thandle.node.setOpacity(0.4)\n\t\t\t}\n\t\t}\n\n\t\t\n\n\n\n\t\tif(handle){\n\t\t\thandle.node.setOpacity(1.0);\n\t\t}\n\n\t\t\n\t}\n\n\tupdate () {\n\n\t\tif(this.selection.length === 1){\n\n\t\t\tthis.scene.visible = true;\n\n\t\t\tthis.scene.updateMatrix();\n\t\t\tthis.scene.updateMatrixWorld();\n\n\t\t\tlet selected = this.selection[0];\n\t\t\tlet world = selected.matrixWorld;\n\t\t\tlet camera = this.viewer.scene.getActiveCamera();\n\t\t\tlet domElement = this.viewer.renderer.domElement;\n\t\t\tlet mouse = this.viewer.inputHandler.mouse;\n\n\t\t\tlet center = selected.boundingBox.getCenter(new THREE.Vector3()).clone().applyMatrix4(selected.matrixWorld);\n\n\t\t\tthis.scene.scale.copy(selected.boundingBox.getSize(new THREE.Vector3()).multiply(selected.scale));\n\t\t\tthis.scene.position.copy(center);\n\t\t\tthis.scene.rotation.copy(selected.rotation);\n\n\t\t\tthis.scene.updateMatrixWorld();\n\n\t\t\t{\n\t\t\t\t// adjust scale of components\n\t\t\t\tfor(let handleName of Object.keys(this.handles)){\n\t\t\t\t\tlet handle = this.handles[handleName];\n\t\t\t\t\tlet node = handle.node;\n\n\t\t\t\t\tlet handlePos = node.getWorldPosition(new THREE.Vector3());\n\t\t\t\t\tlet distance = handlePos.distanceTo(camera.position);\n\t\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, domElement.clientWidth, domElement.clientHeight);\n\n\t\t\t\t\tlet ws = node.parent.getWorldScale(new THREE.Vector3());\n\n\t\t\t\t\tlet s = (7 / pr);\n\t\t\t\t\tlet scale = new THREE.Vector3(s, s, s).divide(ws);\n\n\t\t\t\t\tlet rot = new THREE.Matrix4().makeRotationFromEuler(node.rotation);\n\t\t\t\t\tlet rotInv = new THREE.Matrix4().getInverse(rot);\n\n\t\t\t\t\tscale.applyMatrix4(rotInv);\n\t\t\t\t\tscale.x = Math.abs(scale.x);\n\t\t\t\t\tscale.y = Math.abs(scale.y);\n\t\t\t\t\tscale.z = Math.abs(scale.z);\n\n\t\t\t\t\tnode.scale.copy(scale);\n\t\t\t\t}\n\n\t\t\t\t// adjust rotation handles\n\t\t\t\tif(!this.dragging){\n\t\t\t\t\tlet tWorld = this.scene.matrixWorld;\n\t\t\t\t\tlet tObject = new THREE.Matrix4().getInverse(tWorld)\n\t\t\t\t\tlet camObjectPos = camera.getWorldPosition(new THREE.Vector3()).applyMatrix4(tObject);\n\n\t\t\t\t\tlet x = this.rotationHandles[\"rotation.x\"].node.rotation;\n\t\t\t\t\tlet y = this.rotationHandles[\"rotation.y\"].node.rotation;\n\t\t\t\t\tlet z = this.rotationHandles[\"rotation.z\"].node.rotation;\n\n\t\t\t\t\tx.order = \"ZYX\";\n\t\t\t\t\ty.order = \"ZYX\";\n\n\t\t\t\t\tlet above = camObjectPos.z > 0;\n\t\t\t\t\tlet below = !above;\n\t\t\t\t\tlet PI_HALF = Math.PI / 2;\n\n\t\t\t\t\tif(above){\n\t\t\t\t\t\tif(camObjectPos.x > 0 && camObjectPos.y > 0){\n\t\t\t\t\t\t\tx.x = 1 * PI_HALF;\n\t\t\t\t\t\t\ty.y = 3 * PI_HALF;\n\t\t\t\t\t\t\tz.z = 0 * PI_HALF;\n\t\t\t\t\t\t}else if(camObjectPos.x < 0 && camObjectPos.y > 0){\n\t\t\t\t\t\t\tx.x = 1 * PI_HALF;\n\t\t\t\t\t\t\ty.y = 2 * PI_HALF;\n\t\t\t\t\t\t\tz.z = 1 * PI_HALF;\n\t\t\t\t\t\t}else if(camObjectPos.x < 0 && camObjectPos.y < 0){\n\t\t\t\t\t\t\tx.x = 2 * PI_HALF;\n\t\t\t\t\t\t\ty.y = 2 * PI_HALF;\n\t\t\t\t\t\t\tz.z = 2 * PI_HALF;\n\t\t\t\t\t\t}else if(camObjectPos.x > 0 && camObjectPos.y < 0){\n\t\t\t\t\t\t\tx.x = 2 * PI_HALF;\n\t\t\t\t\t\t\ty.y = 3 * PI_HALF;\n\t\t\t\t\t\t\tz.z = 3 * PI_HALF;\n\t\t\t\t\t\t}\n\t\t\t\t\t}else if(below){\n\t\t\t\t\t\tif(camObjectPos.x > 0 && camObjectPos.y > 0){\n\t\t\t\t\t\t\tx.x = 0 * PI_HALF;\n\t\t\t\t\t\t\ty.y = 0 * PI_HALF;\n\t\t\t\t\t\t\tz.z = 0 * PI_HALF;\n\t\t\t\t\t\t}else if(camObjectPos.x < 0 && camObjectPos.y > 0){\n\t\t\t\t\t\t\tx.x = 0 * PI_HALF;\n\t\t\t\t\t\t\ty.y = 1 * PI_HALF;\n\t\t\t\t\t\t\tz.z = 1 * PI_HALF;\n\t\t\t\t\t\t}else if(camObjectPos.x < 0 && camObjectPos.y < 0){\n\t\t\t\t\t\t\tx.x = 3 * PI_HALF;\n\t\t\t\t\t\t\ty.y = 1 * PI_HALF;\n\t\t\t\t\t\t\tz.z = 2 * PI_HALF;\n\t\t\t\t\t\t}else if(camObjectPos.x > 0 && camObjectPos.y < 0){\n\t\t\t\t\t\t\tx.x = 3 * PI_HALF;\n\t\t\t\t\t\t\ty.y = 0 * PI_HALF;\n\t\t\t\t\t\t\tz.z = 3 * PI_HALF;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t{\n\t\t\t\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\n\t\t\t\t\tlet raycaster = new THREE.Raycaster(ray.origin, ray.direction);\n\t\t\t\t\tlet intersects = raycaster.intersectObjects(this.pickVolumes.filter(v => v.visible), true);\n\n\t\t\t\t\tif(intersects.length > 0){\n\t\t\t\t\t\tlet I = intersects[0];\n\t\t\t\t\t\tlet handleName = I.object.handle;\n\t\t\t\t\t\tthis.setActiveHandle(this.handles[handleName]);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.setActiveHandle(null);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// \n\t\t\t\tfor(let handleName of Object.keys(this.scaleHandles)){\n\t\t\t\t\tlet handle = this.handles[handleName];\n\t\t\t\t\tlet node = handle.node;\n\t\t\t\t\tlet alignment = handle.alignment;\n\n\t\t\t\t\t\n\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\t{\n\t\t\t\tlet axisScale = (alignment) => {\n\t\t\t\t\tlet transformed = new THREE.Vector3(...alignment).applyMatrix4(selected.matrixWorld);\n\t\t\t\t\tlet distance = transformed.distanceTo(selected.getWorldPosition(new THREE.Vector3()));\n\n\t\t\t\t\treturn distance;\n\t\t\t\t};\n\n\t\t\t\tlet scale = new THREE.Vector3(\n\t\t\t\t\taxisScale([1, 0, 0]),\n\t\t\t\t\taxisScale([0, 1, 0]),\n\t\t\t\t\taxisScale([0, 0, 1]),\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}else{\n\t\t\tthis.scene.visible = false;\n\t\t}\n\t\t\n\t}\n\n};\n","\n\nimport {Volume, BoxVolume} from \"./Volume.js\";\nimport {Utils} from \"../utils.js\";\nimport { EventDispatcher } from \"../EventDispatcher.js\";\n\nexport class VolumeTool extends EventDispatcher{\n\tconstructor (viewer) {\n\t\tsuper();\n\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\n\t\tthis.addEventListener('start_inserting_volume', e => {\n\t\t\tthis.viewer.dispatchEvent({\n\t\t\t\ttype: 'cancel_insertions'\n\t\t\t});\n\t\t});\n\n\t\tthis.scene = new THREE.Scene();\n\t\tthis.scene.name = 'scene_volume';\n\n\t\tthis.viewer.inputHandler.registerInteractiveScene(this.scene);\n\n\t\tthis.onRemove = e => {\n\t\t\tthis.scene.remove(e.volume);\n\t\t};\n\n\t\tthis.onAdd = e => {\n\t\t\tthis.scene.add(e.volume);\n\t\t};\n\n\t\tfor(let volume of viewer.scene.volumes){\n\t\t\tthis.onAdd({volume: volume});\n\t\t}\n\n\t\tthis.viewer.inputHandler.addEventListener('delete', e => {\n\t\t\tlet volumes = e.selection.filter(e => (e instanceof Volume));\n\t\t\tvolumes.forEach(e => this.viewer.scene.removeVolume(e));\n\t\t});\n\n\t\tviewer.addEventListener(\"update\", this.update.bind(this));\n\t\tviewer.addEventListener(\"render.pass.scene\", e => this.render(e));\n\t\tviewer.addEventListener(\"scene_changed\", this.onSceneChange.bind(this));\n\n\t\tviewer.scene.addEventListener('volume_added', this.onAdd);\n\t\tviewer.scene.addEventListener('volume_removed', this.onRemove);\n\t}\n\n\tonSceneChange(e){\n\t\tif(e.oldScene){\n\t\t\te.oldScene.removeEventListeners('volume_added', this.onAdd);\n\t\t\te.oldScene.removeEventListeners('volume_removed', this.onRemove);\n\t\t}\n\n\t\te.scene.addEventListener('volume_added', this.onAdd);\n\t\te.scene.addEventListener('volume_removed', this.onRemove);\n\t}\n\n\tstartInsertion (args = {}) {\n\t\tlet volume;\n\t\tif(args.type){\n\t\t\tvolume = new args.type();\n\t\t}else{\n\t\t\tvolume = new BoxVolume();\n\t\t}\n\t\t\n\t\tvolume.clip = args.clip || false;\n\t\tvolume.name = args.name || 'Volume';\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'start_inserting_volume',\n\t\t\tvolume: volume\n\t\t});\n\n\t\tthis.viewer.scene.addVolume(volume);\n\t\tthis.scene.add(volume);\n\n\t\tlet cancel = {\n\t\t\tcallback: null\n\t\t};\n\n\t\tlet drag = e => {\n\t\t\tlet camera = this.viewer.scene.getActiveCamera();\n\t\t\t\n\t\t\tlet I = Utils.getMousePointCloudIntersection(\n\t\t\t\te.drag.end, \n\t\t\t\tthis.viewer.scene.getActiveCamera(), \n\t\t\t\tthis.viewer, \n\t\t\t\tthis.viewer.scene.pointclouds, \n\t\t\t\t{pickClipped: false});\n\n\t\t\tif (I) {\n\t\t\t\tvolume.position.copy(I.location);\n\n\t\t\t\tlet wp = volume.getWorldPosition(new THREE.Vector3()).applyMatrix4(camera.matrixWorldInverse);\n\t\t\t\t// let pp = new THREE.Vector4(wp.x, wp.y, wp.z).applyMatrix4(camera.projectionMatrix);\n\t\t\t\tlet w = Math.abs((wp.z / 5));\n\t\t\t\tvolume.scale.set(w, w, w);\n\t\t\t}\n\t\t};\n\n\t\tlet drop = e => {\n\t\t\tvolume.removeEventListener('drag', drag);\n\t\t\tvolume.removeEventListener('drop', drop);\n\n\t\t\tcancel.callback();\n\t\t};\n\n\t\tcancel.callback = e => {\n\t\t\tvolume.removeEventListener('drag', drag);\n\t\t\tvolume.removeEventListener('drop', drop);\n\t\t\tthis.viewer.removeEventListener('cancel_insertions', cancel.callback);\n\t\t};\n\n\t\tvolume.addEventListener('drag', drag);\n\t\tvolume.addEventListener('drop', drop);\n\t\tthis.viewer.addEventListener('cancel_insertions', cancel.callback);\n\n\t\tthis.viewer.inputHandler.startDragging(volume);\n\n\t\treturn volume;\n\t}\n\n\tupdate(){\n\t\tif (!this.viewer.scene) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tlet camera = this.viewer.scene.getActiveCamera();\n\t\tlet renderAreaSize = this.viewer.renderer.getSize(new THREE.Vector2());\n\t\tlet clientWidth = renderAreaSize.width;\n\t\tlet clientHeight = renderAreaSize.height;\n\n\t\tlet volumes = this.viewer.scene.volumes;\n\t\tfor (let volume of volumes) {\n\t\t\tlet label = volume.label;\n\t\t\t\n\t\t\t{\n\n\t\t\t\tlet distance = label.position.distanceTo(camera.position);\n\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\n\n\t\t\t\tlet scale = (70 / pr);\n\t\t\t\tlabel.scale.set(scale, scale, scale);\n\t\t\t}\n\n\t\t\tlet calculatedVolume = volume.getVolume();\n\t\t\tcalculatedVolume = calculatedVolume / Math.pow(this.viewer.lengthUnit.unitspermeter, 3) * Math.pow(this.viewer.lengthUnitDisplay.unitspermeter, 3); //convert to cubic meters then to the cubic display unit\n\t\t\tlet text = Utils.addCommas(calculatedVolume.toFixed(3)) + ' ' + this.viewer.lengthUnitDisplay.code + '\\u00B3';\n\t\t\tlabel.setText(text);\n\t\t}\n\t}\n\n\trender(params){\n\t\tconst renderer = this.viewer.renderer;\n\n\t\tconst oldTarget = renderer.getRenderTarget();\n\t\t\n\t\tif(params.renderTarget){\n\t\t\trenderer.setRenderTarget(params.renderTarget);\n\t\t}\n\t\trenderer.render(this.scene, this.viewer.scene.getActiveCamera());\n\t\trenderer.setRenderTarget(oldTarget);\n\t}\n\n}\n","\r\nimport {Utils} from \"../utils.js\";\r\n\r\nexport class Compass{\r\n\r\n\tconstructor(viewer){\r\n\t\tthis.viewer = viewer;\r\n\r\n\t\tthis.visible = false;\r\n\t\tthis.dom = this.createElement();\r\n\r\n\t\tviewer.addEventListener(\"update\", () => {\r\n\t\t\tconst direction = viewer.scene.view.direction.clone();\r\n\t\t\tdirection.z = 0;\r\n\t\t\tdirection.normalize();\r\n\r\n\t\t\tconst camera = viewer.scene.getActiveCamera();\r\n\r\n\t\t\tconst p1 = camera.getWorldPosition(new THREE.Vector3());\r\n\t\t\tconst p2 = p1.clone().add(direction);\r\n\r\n\t\t\tconst projection = viewer.getProjection();\r\n\t\t\tconst azimuth = Utils.computeAzimuth(p1, p2, projection);\r\n\t\t\t\r\n\t\t\tthis.dom.css(\"transform\", `rotateZ(${-azimuth}rad)`);\r\n\t\t});\r\n\r\n\t\tthis.dom.click( () => {\r\n\t\t\tviewer.setTopView();\r\n\t\t});\r\n\r\n\t\tconst renderArea = $(viewer.renderArea);\r\n\t\trenderArea.append(this.dom);\r\n\r\n\t\tthis.setVisible(this.visible);\r\n\t}\r\n\r\n\tsetVisible(visible){\r\n\t\tthis.visible = visible;\r\n\r\n\t\tconst value = visible ? \"\" : \"none\";\r\n\t\tthis.dom.css(\"display\", value);\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this.visible;\r\n\t}\r\n\r\n\tcreateElement(){\r\n\t\tconst style = `style=\"position: absolute; top: 10px; right: 10px; z-index: 10000; width: 64px;\"`;\r\n\t\tconst img = $(``);\r\n\r\n\t\treturn img;\r\n\t}\r\n\r\n};","\nexport class PotreeRenderer {\n\n\tconstructor (viewer) {\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\t}\n\n\tclearTargets(){\n\n\t}\n\n\tclear(){\n\t\tlet {viewer, renderer} = this;\n\n\t\t// render skybox\n\t\tif(viewer.background === \"skybox\"){\n\t\t\trenderer.setClearColor(0x000000, 0);\n\t\t\trenderer.clear(true, true, false);\n\t\t}else if(viewer.background === \"gradient\"){\n\t\t\trenderer.setClearColor(0x000000, 0);\n\t\t\trenderer.clear(true, true, false);\n\t\t}else if(viewer.background === \"black\"){\n\t\t\trenderer.setClearColor(0x000000, 1);\n\t\t\trenderer.clear(true, true, false);\n\t\t}else if(viewer.background === \"white\"){\n\t\t\trenderer.setClearColor(0xFFFFFF, 1);\n\t\t\trenderer.clear(true, true, false);\n\t\t}else{\n\t\t\trenderer.setClearColor(0x000000, 0);\n\t\t\trenderer.clear(true, true, false);\n\t\t}\n\t}\n \n\trender(params){\n\t\tlet {viewer, renderer} = this;\n\n\t\tconst camera = params.camera ? params.camera : viewer.scene.getActiveCamera();\n\n\t\tviewer.dispatchEvent({type: \"render.pass.begin\",viewer: viewer});\n\n\t\tconst renderAreaSize = renderer.getSize(new THREE.Vector2());\n\t\tconst width = params.viewport ? params.viewport[2] : renderAreaSize.x;\n\t\tconst height = params.viewport ? params.viewport[3] : renderAreaSize.y;\n\n\n\t\t// render skybox\n\t\tif(viewer.background === \"skybox\"){\n\t\t\tviewer.skybox.camera.rotation.copy(viewer.scene.cameraP.rotation);\n\t\t\tviewer.skybox.camera.fov = viewer.scene.cameraP.fov;\n\t\t\tviewer.skybox.camera.aspect = viewer.scene.cameraP.aspect;\n\t\t\tviewer.skybox.camera.updateProjectionMatrix();\n\t\t\trenderer.render(viewer.skybox.scene, viewer.skybox.camera);\n\t\t}else if(viewer.background === \"gradient\"){\n\t\t\trenderer.render(viewer.scene.sceneBG, viewer.scene.cameraBG);\n\t\t}\n\t\t\n\t\tfor(let pointcloud of this.viewer.scene.pointclouds){\n\t\t\tconst {material} = pointcloud;\n\t\t\tmaterial.useEDL = false;\n\t\t\t//material.updateShaderSource();\n\t\t}\n\t\t\n\t\tviewer.pRenderer.render(viewer.scene.scenePointCloud, camera, null, {\n\t\t\tclipSpheres: viewer.scene.volumes.filter(v => (v instanceof Potree.SphereVolume)),\n\t\t});\n\t\t\n\t\t// render scene\n\t\trenderer.render(viewer.scene.scene, camera);\n\n\t\tviewer.dispatchEvent({type: \"render.pass.scene\",viewer: viewer});\n\t\t\n\t\tviewer.clippingTool.update();\n\t\trenderer.render(viewer.clippingTool.sceneMarker, viewer.scene.cameraScreenSpace); //viewer.scene.cameraScreenSpace);\n\t\trenderer.render(viewer.clippingTool.sceneVolume, camera);\n\n\t\trenderer.render(viewer.controls.sceneControls, camera);\n\t\t\n\t\trenderer.clearDepth();\n\t\t\n\t\tviewer.transformationTool.update();\n\t\t\n\t\tviewer.dispatchEvent({type: \"render.pass.perspective_overlay\",viewer: viewer});\n\n\t\trenderer.render(viewer.controls.sceneControls, camera);\n\t\trenderer.render(viewer.clippingTool.sceneVolume, camera);\n\t\trenderer.render(viewer.transformationTool.scene, camera);\n\t\t\n\t\trenderer.setViewport(width - viewer.navigationCube.width, \n\t\t\t\t\t\t\t\t\theight - viewer.navigationCube.width, \n\t\t\t\t\t\t\t\t\tviewer.navigationCube.width, viewer.navigationCube.width);\n\t\trenderer.render(viewer.navigationCube, viewer.navigationCube.camera);\t\t\n\t\trenderer.setViewport(0, 0, width, height);\n\t\t\n\t\t// renderer.render(viewer.transformationTool.scene, camera);\n\n\t\t// renderer.setViewport(renderer.domElement.clientWidth - viewer.navigationCube.width, \n\t\t// \t\t\t\t\t\t\trenderer.domElement.clientHeight - viewer.navigationCube.width, \n\t\t// \t\t\t\t\t\t\tviewer.navigationCube.width, viewer.navigationCube.width);\n\t\t// renderer.render(viewer.navigationCube, viewer.navigationCube.camera);\t\t\n\t\t// renderer.setViewport(0, 0, renderer.domElement.clientWidth, renderer.domElement.clientHeight);\n\n\t\tviewer.dispatchEvent({type: \"render.pass.end\",viewer: viewer});\n\t}\n\n}\n","\nimport {PointCloudSM} from \"../utils/PointCloudSM.js\";\nimport {EyeDomeLightingMaterial} from \"../materials/EyeDomeLightingMaterial.js\";\nimport {SphereVolume} from \"../utils/Volume.js\";\nimport {Utils} from \"../utils.js\";\n\nexport class EDLRenderer{\n\tconstructor(viewer){\n\t\tthis.viewer = viewer;\n\n\t\tthis.edlMaterial = null;\n\n\t\tthis.rtRegular;\n\t\tthis.rtEDL;\n\n\t\tthis.gl = viewer.renderer.getContext();\n\n\t\tthis.shadowMap = new PointCloudSM(this.viewer.pRenderer);\n\t}\n\n\tinitEDL(){\n\t\tif (this.edlMaterial != null) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.edlMaterial = new EyeDomeLightingMaterial();\n\t\tthis.edlMaterial.depthTest = true;\n\t\tthis.edlMaterial.depthWrite = true;\n\t\tthis.edlMaterial.transparent = true;\n\n\t\tthis.rtEDL = new THREE.WebGLRenderTarget(1024, 1024, {\n\t\t\tminFilter: THREE.NearestFilter,\n\t\t\tmagFilter: THREE.NearestFilter,\n\t\t\tformat: THREE.RGBAFormat,\n\t\t\ttype: THREE.FloatType,\n\t\t\tdepthTexture: new THREE.DepthTexture(undefined, undefined, THREE.UnsignedIntType)\n\t\t});\n\n\t\tthis.rtRegular = new THREE.WebGLRenderTarget(1024, 1024, {\n\t\t\tminFilter: THREE.NearestFilter,\n\t\t\tmagFilter: THREE.NearestFilter,\n\t\t\tformat: THREE.RGBAFormat,\n\t\t\tdepthTexture: new THREE.DepthTexture(undefined, undefined, THREE.UnsignedIntType)\n\t\t});\n\t};\n\n\tresize(width, height){\n\t\tif(this.screenshot){\n\t\t\twidth = this.screenshot.target.width;\n\t\t\theight = this.screenshot.target.height;\n\t\t}\n\n\t\tthis.rtEDL.setSize(width , height);\n\t\tthis.rtRegular.setSize(width , height);\n\t}\n\n\tmakeScreenshot(camera, size, callback){\n\n\t\tif(camera === undefined || camera === null){\n\t\t\tcamera = this.viewer.scene.getActiveCamera();\n\t\t}\n\n\t\tif(size === undefined || size === null){\n\t\t\tsize = this.viewer.renderer.getSize(new THREE.Vector2());\n\t\t}\n\n\t\tlet {width, height} = size;\n\n\t\t//let maxTextureSize = viewer.renderer.capabilities.maxTextureSize;\n\t\t//if(width * 4 < \n\t\twidth = 2 * width;\n\t\theight = 2 * height;\n\n\t\tlet target = new THREE.WebGLRenderTarget(width, height, {\n\t\t\tformat: THREE.RGBAFormat,\n\t\t});\n\n\t\tthis.screenshot = {\n\t\t\ttarget: target\n\t\t};\n\n\t\t// HACK? removed because of error, was this important?\n\t\t//this.viewer.renderer.clearTarget(target, true, true, true);\n\n\t\tthis.render();\n\n\t\tlet pixelCount = width * height;\n\t\tlet buffer = new Uint8Array(4 * pixelCount);\n\n\t\tthis.viewer.renderer.readRenderTargetPixels(target, 0, 0, width, height, buffer);\n\n\t\t// flip vertically\n\t\tlet bytesPerLine = width * 4;\n\t\tfor(let i = 0; i < parseInt(height / 2); i++){\n\t\t\tlet j = height - i - 1;\n\n\t\t\tlet lineI = buffer.slice(i * bytesPerLine, i * bytesPerLine + bytesPerLine);\n\t\t\tlet lineJ = buffer.slice(j * bytesPerLine, j * bytesPerLine + bytesPerLine);\n\t\t\tbuffer.set(lineJ, i * bytesPerLine);\n\t\t\tbuffer.set(lineI, j * bytesPerLine);\n\t\t}\n\n\t\tthis.screenshot.target.dispose();\n\t\tdelete this.screenshot;\n\n\t\treturn {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tbuffer: buffer\n\t\t};\n\t}\n\n\tclearTargets(){\n\t\tconst viewer = this.viewer;\n\t\tconst {renderer} = viewer;\n\n\t\tconst oldTarget = renderer.getRenderTarget();\n\n\t\trenderer.setRenderTarget( this.rtEDL );\n\t\trenderer.clear( true, true, true );\n\n\t\trenderer.setRenderTarget( this.rtRegular );\n\t\trenderer.clear( true, true, false );\n\n\t\trenderer.setRenderTarget(oldTarget);\n\t}\n\n\tclear(){\n\t\tthis.initEDL();\n\t\tconst viewer = this.viewer;\n\n\t\tconst {renderer, background} = viewer;\n\n\t\tif(background === \"skybox\"){\n\t\t\trenderer.setClearColor(0x000000, 0);\n\t\t} else if (background === 'gradient') {\n\t\t\trenderer.setClearColor(0x000000, 0);\n\t\t} else if (background === 'black') {\n\t\t\trenderer.setClearColor(0x000000, 1);\n\t\t} else if (background === 'white') {\n\t\t\trenderer.setClearColor(0xFFFFFF, 1);\n\t\t} else {\n\t\t\trenderer.setClearColor(0x000000, 0);\n\t\t}\n\t\t\n\t\trenderer.clear();\n\n\t\tthis.clearTargets();\n\t}\n\n\trenderShadowMap(visiblePointClouds, camera, lights){\n\n\t\tconst {viewer} = this;\n\n\t\tconst doShadows = lights.length > 0 && !(lights[0].disableShadowUpdates);\n\t\tif(doShadows){\n\t\t\tlet light = lights[0];\n\n\t\t\tthis.shadowMap.setLight(light);\n\n\t\t\tlet originalAttributes = new Map();\n\t\t\tfor(let pointcloud of viewer.scene.pointclouds){\n\t\t\t\t// TODO IMPORTANT !!! check\n\t\t\t\toriginalAttributes.set(pointcloud, pointcloud.material.activeAttributeName);\n\t\t\t\tpointcloud.material.disableEvents();\n\t\t\t\tpointcloud.material.activeAttributeName = \"depth\";\n\t\t\t\t//pointcloud.material.pointColorType = PointColorType.DEPTH;\n\t\t\t}\n\n\t\t\tthis.shadowMap.render(viewer.scene.scenePointCloud, camera);\n\n\t\t\tfor(let pointcloud of visiblePointClouds){\n\t\t\t\tlet originalAttribute = originalAttributes.get(pointcloud);\n\t\t\t\t// TODO IMPORTANT !!! check\n\t\t\t\tpointcloud.material.activeAttributeName = originalAttribute;\n\t\t\t\tpointcloud.material.enableEvents();\n\t\t\t}\n\n\t\t\tviewer.shadowTestCam.updateMatrixWorld();\n\t\t\tviewer.shadowTestCam.matrixWorldInverse.getInverse(viewer.shadowTestCam.matrixWorld);\n\t\t\tviewer.shadowTestCam.updateProjectionMatrix();\n\t\t}\n\n\t}\n\n\trender(params){\n\t\tthis.initEDL();\n\n\t\tconst viewer = this.viewer;\n\t\tconst camera = params.camera ? params.camera : viewer.scene.getActiveCamera();\n\t\tconst {width, height} = this.viewer.renderer.getSize(new THREE.Vector2());\n\n\t\tviewer.dispatchEvent({type: \"render.pass.begin\",viewer: viewer});\n\t\t\n\t\tthis.resize(width, height);\n\n\t\tconst visiblePointClouds = viewer.scene.pointclouds.filter(pc => pc.visible);\n\n\t\tif(this.screenshot){\n\t\t\tlet oldBudget = Potree.pointBudget;\n\t\t\tPotree.pointBudget = Math.max(10 * 1000 * 1000, 2 * oldBudget);\n\t\t\tlet result = Potree.updatePointClouds(\n\t\t\t\tviewer.scene.pointclouds, \n\t\t\t\tcamera, \n\t\t\t\tviewer.renderer);\n\t\t\tPotree.pointBudget = oldBudget;\n\t\t}\n\n\t\tlet lights = [];\n\t\tviewer.scene.scene.traverse(node => {\n\t\t\tif(node instanceof THREE.SpotLight){\n\t\t\t\tlights.push(node);\n\t\t\t}\n\t\t});\n\n\t\tif(viewer.background === \"skybox\"){\n\t\t\tviewer.skybox.camera.rotation.copy(viewer.scene.cameraP.rotation);\n\t\t\tviewer.skybox.camera.fov = viewer.scene.cameraP.fov;\n\t\t\tviewer.skybox.camera.aspect = viewer.scene.cameraP.aspect;\n\t\t\tviewer.skybox.camera.updateProjectionMatrix();\n\t\t\tviewer.renderer.render(viewer.skybox.scene, viewer.skybox.camera);\n\t\t} else if (viewer.background === 'gradient') {\n\t\t\tviewer.renderer.render(viewer.scene.sceneBG, viewer.scene.cameraBG);\n\t\t} \n\n\t\t//TODO adapt to multiple lights\n\t\tthis.renderShadowMap(visiblePointClouds, camera, lights);\n\n\t\t{ // COLOR & DEPTH PASS\n\t\t\tfor (let pointcloud of visiblePointClouds) {\n\t\t\t\tlet octreeSize = pointcloud.pcoGeometry.boundingBox.getSize(new THREE.Vector3()).x;\n\n\t\t\t\tlet material = pointcloud.material;\n\t\t\t\tmaterial.weighted = false;\n\t\t\t\tmaterial.useLogarithmicDepthBuffer = false;\n\t\t\t\tmaterial.useEDL = true;\n\n\t\t\t\tmaterial.screenWidth = width;\n\t\t\t\tmaterial.screenHeight = height;\n\t\t\t\tmaterial.uniforms.visibleNodes.value = pointcloud.material.visibleNodesTexture;\n\t\t\t\tmaterial.uniforms.octreeSize.value = octreeSize;\n\t\t\t\tmaterial.spacing = pointcloud.pcoGeometry.spacing * Math.max(pointcloud.scale.x, pointcloud.scale.y, pointcloud.scale.z);\n\t\t\t}\n\t\t\t\n\t\t\t// TODO adapt to multiple lights\n\t\t\tviewer.renderer.setRenderTarget(this.rtEDL);\n\t\t\t\n\t\t\tif(lights.length > 0){\n\t\t\t\tviewer.pRenderer.render(viewer.scene.scenePointCloud, camera, this.rtEDL, {\n\t\t\t\t\tclipSpheres: viewer.scene.volumes.filter(v => (v instanceof SphereVolume)),\n\t\t\t\t\tshadowMaps: [this.shadowMap],\n\t\t\t\t\ttransparent: false,\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tviewer.pRenderer.render(viewer.scene.scenePointCloud, camera, this.rtEDL, {\n\t\t\t\t\tclipSpheres: viewer.scene.volumes.filter(v => (v instanceof SphereVolume)),\n\t\t\t\t\ttransparent: false,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t\n\t\t}\n\n\t\tviewer.dispatchEvent({type: \"render.pass.scene\", viewer: viewer, renderTarget: this.rtRegular});\n\t\tviewer.renderer.setRenderTarget(null);\n\t\tviewer.renderer.render(viewer.scene.scene, camera);\n\n\t\t{ // EDL PASS\n\n\t\t\tconst uniforms = this.edlMaterial.uniforms;\n\n\t\t\tuniforms.screenWidth.value = width;\n\t\t\tuniforms.screenHeight.value = height;\n\n\t\t\tlet proj = camera.projectionMatrix;\n\t\t\tlet projArray = new Float32Array(16);\n\t\t\tprojArray.set(proj.elements);\n\n\t\t\tuniforms.uNear.value = camera.near;\n\t\t\tuniforms.uFar.value = camera.far;\n\t\t\tuniforms.uEDLColor.value = this.rtEDL.texture;\n\t\t\tuniforms.uEDLDepth.value = this.rtEDL.depthTexture;\n\t\t\tuniforms.uProj.value = projArray;\n\n\t\t\tuniforms.edlStrength.value = viewer.edlStrength;\n\t\t\tuniforms.radius.value = viewer.edlRadius;\n\t\t\tuniforms.opacity.value = viewer.edlOpacity; // HACK\n\t\t\t\n\t\t\tUtils.screenPass.render(viewer.renderer, this.edlMaterial);\n\n\t\t\tif(this.screenshot){\n\t\t\t\tUtils.screenPass.render(viewer.renderer, this.edlMaterial, this.screenshot.target);\n\t\t\t}\n\n\t\t}\n\n\t\tviewer.dispatchEvent({type: \"render.pass.scene\", viewer: viewer});\n\n\t\tviewer.renderer.clearDepth();\n\n\t\tviewer.transformationTool.update();\n\n\t\tviewer.dispatchEvent({type: \"render.pass.perspective_overlay\",viewer: viewer});\n\n\t\tviewer.renderer.render(viewer.controls.sceneControls, camera);\n\t\tviewer.renderer.render(viewer.clippingTool.sceneVolume, camera);\n\t\tviewer.renderer.render(viewer.transformationTool.scene, camera);\n\t\t\n\t\tviewer.dispatchEvent({type: \"render.pass.end\",viewer: viewer});\n\n\t}\n}\n\n","\n\nimport {NormalizationMaterial} from \"../materials/NormalizationMaterial.js\";\nimport {NormalizationEDLMaterial} from \"../materials/NormalizationEDLMaterial.js\";\nimport {PointCloudMaterial} from \"../materials/PointCloudMaterial.js\";\nimport {PointShape} from \"../defines.js\";\nimport {SphereVolume} from \"../utils/Volume.js\";\nimport {Utils} from \"../utils.js\";\n\n\nexport class HQSplatRenderer{\n\t\n\tconstructor(viewer){\n\t\tthis.viewer = viewer;\n\n\t\tthis.depthMaterials = new Map();\n\t\tthis.attributeMaterials = new Map();\n\t\tthis.normalizationMaterial = null;\n\n\t\tthis.rtDepth = null;\n\t\tthis.rtAttribute = null;\n\t\tthis.gl = viewer.renderer.getContext();\n\n\t\tthis.initialized = false;\n\t}\n\n\tinit(){\n\t\tif (this.initialized) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.normalizationMaterial = new NormalizationMaterial();\n\t\tthis.normalizationMaterial.depthTest = true;\n\t\tthis.normalizationMaterial.depthWrite = true;\n\t\tthis.normalizationMaterial.transparent = true;\n\n\t\tthis.normalizationEDLMaterial = new NormalizationEDLMaterial();\n\t\tthis.normalizationEDLMaterial.depthTest = true;\n\t\tthis.normalizationEDLMaterial.depthWrite = true;\n\t\tthis.normalizationEDLMaterial.transparent = true;\n\n\t\tthis.rtDepth = new THREE.WebGLRenderTarget(1024, 1024, {\n\t\t\tminFilter: THREE.NearestFilter,\n\t\t\tmagFilter: THREE.NearestFilter,\n\t\t\tformat: THREE.RGBAFormat,\n\t\t\ttype: THREE.FloatType,\n\t\t\tdepthTexture: new THREE.DepthTexture(undefined, undefined, THREE.UnsignedIntType)\n\t\t});\n\n\t\tthis.rtAttribute = new THREE.WebGLRenderTarget(1024, 1024, {\n\t\t\tminFilter: THREE.NearestFilter,\n\t\t\tmagFilter: THREE.NearestFilter,\n\t\t\tformat: THREE.RGBAFormat,\n\t\t\ttype: THREE.FloatType,\n\t\t\tdepthTexture: this.rtDepth.depthTexture,\n\t\t});\n\n\t\tthis.initialized = true;\n\t};\n\n\tresize(width, height){\n\t\tthis.rtDepth.setSize(width, height);\n\t\tthis.rtAttribute.setSize(width, height);\n\t}\n\n\tclearTargets(){\n\t\tconst viewer = this.viewer;\n\t\tconst {renderer} = viewer;\n\n\t\tconst oldTarget = renderer.getRenderTarget();\n\n\t\trenderer.setClearColor(0x000000, 0);\n\n\t\trenderer.setRenderTarget( this.rtDepth );\n\t\trenderer.clear( true, true, true );\n\n\t\trenderer.setRenderTarget( this.rtAttribute );\n\t\trenderer.clear( true, true, true );\n\n\t\trenderer.setRenderTarget(oldTarget);\n\t}\n\n\n\tclear(){\n\t\tthis.init();\n\n\t\tconst {renderer, background} = this.viewer;\n\n\t\tif(background === \"skybox\"){\n\t\t\trenderer.setClearColor(0x000000, 0);\n\t\t} else if (background === 'gradient') {\n\t\t\trenderer.setClearColor(0x000000, 0);\n\t\t} else if (background === 'black') {\n\t\t\trenderer.setClearColor(0x000000, 1);\n\t\t} else if (background === 'white') {\n\t\t\trenderer.setClearColor(0xFFFFFF, 1);\n\t\t} else {\n\t\t\trenderer.setClearColor(0x000000, 0);\n\t\t}\n\n\t\trenderer.clear();\n\n\t\tthis.clearTargets();\n\t}\n\n\trender (params) {\n\t\tthis.init();\n\n\t\tconst viewer = this.viewer;\n\t\tconst camera = params.camera ? params.camera : viewer.scene.getActiveCamera();\n\t\tconst {width, height} = this.viewer.renderer.getSize(new THREE.Vector2());\n\n\t\tviewer.dispatchEvent({type: \"render.pass.begin\",viewer: viewer});\n\n\t\tthis.resize(width, height);\n\n\t\tconst visiblePointClouds = viewer.scene.pointclouds.filter(pc => pc.visible);\n\t\tconst originalMaterials = new Map();\n\n\t\tfor(let pointcloud of visiblePointClouds){\n\t\t\toriginalMaterials.set(pointcloud, pointcloud.material);\n\n\t\t\tif(!this.attributeMaterials.has(pointcloud)){\n\t\t\t\tlet attributeMaterial = new PointCloudMaterial();\n\t\t\t\tthis.attributeMaterials.set(pointcloud, attributeMaterial);\n\t\t\t}\n\n\t\t\tif(!this.depthMaterials.has(pointcloud)){\n\t\t\t\tlet depthMaterial = new PointCloudMaterial();\n\n\t\t\t\tdepthMaterial.setDefine(\"depth_pass\", \"#define hq_depth_pass\");\n\t\t\t\tdepthMaterial.setDefine(\"use_edl\", \"#define use_edl\");\n\n\t\t\t\tthis.depthMaterials.set(pointcloud, depthMaterial);\n\t\t\t}\n\t\t}\n\n\t\t{ // DEPTH PASS\n\t\t\tfor (let pointcloud of visiblePointClouds) {\n\t\t\t\tlet octreeSize = pointcloud.pcoGeometry.boundingBox.getSize(new THREE.Vector3()).x;\n\n\t\t\t\tlet material = originalMaterials.get(pointcloud);\n\t\t\t\tlet depthMaterial = this.depthMaterials.get(pointcloud);\n\n\t\t\t\tdepthMaterial.size = material.size;\n\t\t\t\tdepthMaterial.minSize = material.minSize;\n\t\t\t\tdepthMaterial.maxSize = material.maxSize;\n\n\t\t\t\tdepthMaterial.pointSizeType = material.pointSizeType;\n\t\t\t\tdepthMaterial.visibleNodesTexture = material.visibleNodesTexture;\n\t\t\t\tdepthMaterial.weighted = false;\n\t\t\t\tdepthMaterial.screenWidth = width;\n\t\t\t\tdepthMaterial.shape = PointShape.CIRCLE;\n\t\t\t\tdepthMaterial.screenHeight = height;\n\t\t\t\tdepthMaterial.uniforms.visibleNodes.value = material.visibleNodesTexture;\n\t\t\t\tdepthMaterial.uniforms.octreeSize.value = octreeSize;\n\t\t\t\tdepthMaterial.spacing = pointcloud.pcoGeometry.spacing * Math.max(...pointcloud.scale.toArray());\n\t\t\t\tdepthMaterial.classification = material.classification;\n\t\t\t\tdepthMaterial.uniforms.classificationLUT.value.image.data = material.uniforms.classificationLUT.value.image.data;\n\t\t\t\tdepthMaterial.classificationTexture.needsUpdate = true;\n\n\t\t\t\tdepthMaterial.uniforms.uFilterReturnNumberRange.value = material.uniforms.uFilterReturnNumberRange.value;\n\t\t\t\tdepthMaterial.uniforms.uFilterNumberOfReturnsRange.value = material.uniforms.uFilterNumberOfReturnsRange.value;\n\t\t\t\tdepthMaterial.uniforms.uFilterGPSTimeClipRange.value = material.uniforms.uFilterGPSTimeClipRange.value;\n\t\t\t\tdepthMaterial.uniforms.uFilterPointSourceIDClipRange.value = material.uniforms.uFilterPointSourceIDClipRange.value;\n\n\t\t\t\tdepthMaterial.clipTask = material.clipTask;\n\t\t\t\tdepthMaterial.clipMethod = material.clipMethod;\n\t\t\t\tdepthMaterial.setClipBoxes(material.clipBoxes);\n\t\t\t\tdepthMaterial.setClipPolygons(material.clipPolygons);\n\n\t\t\t\tpointcloud.material = depthMaterial;\n\t\t\t}\n\t\t\t\n\t\t\tviewer.pRenderer.render(viewer.scene.scenePointCloud, camera, this.rtDepth, {\n\t\t\t\tclipSpheres: viewer.scene.volumes.filter(v => (v instanceof SphereVolume)),\n\t\t\t});\n\t\t}\n\n\t\t{ // ATTRIBUTE PASS\n\t\t\tfor (let pointcloud of visiblePointClouds) {\n\t\t\t\tlet octreeSize = pointcloud.pcoGeometry.boundingBox.getSize(new THREE.Vector3()).x;\n\n\t\t\t\tlet material = originalMaterials.get(pointcloud);\n\t\t\t\tlet attributeMaterial = this.attributeMaterials.get(pointcloud);\n\n\t\t\t\tattributeMaterial.size = material.size;\n\t\t\t\tattributeMaterial.minSize = material.minSize;\n\t\t\t\tattributeMaterial.maxSize = material.maxSize;\n\n\t\t\t\tattributeMaterial.pointSizeType = material.pointSizeType;\n\t\t\t\tattributeMaterial.activeAttributeName = material.activeAttributeName;\n\t\t\t\tattributeMaterial.visibleNodesTexture = material.visibleNodesTexture;\n\t\t\t\tattributeMaterial.weighted = true;\n\t\t\t\tattributeMaterial.screenWidth = width;\n\t\t\t\tattributeMaterial.screenHeight = height;\n\t\t\t\tattributeMaterial.shape = PointShape.CIRCLE;\n\t\t\t\tattributeMaterial.uniforms.visibleNodes.value = material.visibleNodesTexture;\n\t\t\t\tattributeMaterial.uniforms.octreeSize.value = octreeSize;\n\t\t\t\tattributeMaterial.spacing = pointcloud.pcoGeometry.spacing * Math.max(...pointcloud.scale.toArray());\n\t\t\t\tattributeMaterial.classification = material.classification;\n\t\t\t\tattributeMaterial.uniforms.classificationLUT.value.image.data = material.uniforms.classificationLUT.value.image.data;\n\t\t\t\tattributeMaterial.classificationTexture.needsUpdate = true;\n\n\t\t\t\tattributeMaterial.uniforms.uFilterReturnNumberRange.value = material.uniforms.uFilterReturnNumberRange.value;\n\t\t\t\tattributeMaterial.uniforms.uFilterNumberOfReturnsRange.value = material.uniforms.uFilterNumberOfReturnsRange.value;\n\t\t\t\tattributeMaterial.uniforms.uFilterGPSTimeClipRange.value = material.uniforms.uFilterGPSTimeClipRange.value;\n\t\t\t\tattributeMaterial.uniforms.uFilterPointSourceIDClipRange.value = material.uniforms.uFilterPointSourceIDClipRange.value;\n\n\t\t\t\tattributeMaterial.elevationGradientRepeat = material.elevationGradientRepeat;\n\t\t\t\tattributeMaterial.elevationRange = material.elevationRange;\n\t\t\t\tattributeMaterial.gradient = material.gradient;\n\t\t\t\tattributeMaterial.matcap = material.matcap;\n\n\t\t\t\tattributeMaterial.intensityRange = material.intensityRange;\n\t\t\t\tattributeMaterial.intensityGamma = material.intensityGamma;\n\t\t\t\tattributeMaterial.intensityContrast = material.intensityContrast;\n\t\t\t\tattributeMaterial.intensityBrightness = material.intensityBrightness;\n\n\t\t\t\tattributeMaterial.rgbGamma = material.rgbGamma;\n\t\t\t\tattributeMaterial.rgbContrast = material.rgbContrast;\n\t\t\t\tattributeMaterial.rgbBrightness = material.rgbBrightness;\n\n\t\t\t\tattributeMaterial.weightRGB = material.weightRGB;\n\t\t\t\tattributeMaterial.weightIntensity = material.weightIntensity;\n\t\t\t\tattributeMaterial.weightElevation = material.weightElevation;\n\t\t\t\tattributeMaterial.weightRGB = material.weightRGB;\n\t\t\t\tattributeMaterial.weightClassification = material.weightClassification;\n\t\t\t\tattributeMaterial.weightReturnNumber = material.weightReturnNumber;\n\t\t\t\tattributeMaterial.weightSourceID = material.weightSourceID;\n\n\t\t\t\tattributeMaterial.color = material.color;\n\n\t\t\t\tattributeMaterial.clipTask = material.clipTask;\n\t\t\t\tattributeMaterial.clipMethod = material.clipMethod;\n\t\t\t\tattributeMaterial.setClipBoxes(material.clipBoxes);\n\t\t\t\tattributeMaterial.setClipPolygons(material.clipPolygons);\n\n\t\t\t\tpointcloud.material = attributeMaterial;\n\t\t\t}\n\t\t\t\n\t\t\tlet gl = this.gl;\n\n\t\t\tviewer.renderer.setRenderTarget(null);\n\t\t\tviewer.pRenderer.render(viewer.scene.scenePointCloud, camera, this.rtAttribute, {\n\t\t\t\tclipSpheres: viewer.scene.volumes.filter(v => (v instanceof SphereVolume)),\n\t\t\t\t//material: this.attributeMaterial,\n\t\t\t\tblendFunc: [gl.SRC_ALPHA, gl.ONE],\n\t\t\t\t//depthTest: false,\n\t\t\t\tdepthWrite: false\n\t\t\t});\n\t\t}\n\n\t\tfor(let [pointcloud, material] of originalMaterials){\n\t\t\tpointcloud.material = material;\n\t\t}\n\n\t\tviewer.renderer.setRenderTarget(null);\n\t\tif(viewer.background === \"skybox\"){\n\t\t\tviewer.renderer.setClearColor(0x000000, 0);\n\t\t\tviewer.renderer.clear();\n\t\t\tviewer.skybox.camera.rotation.copy(viewer.scene.cameraP.rotation);\n\t\t\tviewer.skybox.camera.fov = viewer.scene.cameraP.fov;\n\t\t\tviewer.skybox.camera.aspect = viewer.scene.cameraP.aspect;\n\t\t\tviewer.skybox.camera.updateProjectionMatrix();\n\t\t\tviewer.renderer.render(viewer.skybox.scene, viewer.skybox.camera);\n\t\t} else if (viewer.background === 'gradient') {\n\t\t\tviewer.renderer.setClearColor(0x000000, 0);\n\t\t\tviewer.renderer.clear();\n\t\t\tviewer.renderer.render(viewer.scene.sceneBG, viewer.scene.cameraBG);\n\t\t} else if (viewer.background === 'black') {\n\t\t\tviewer.renderer.setClearColor(0x000000, 1);\n\t\t\tviewer.renderer.clear();\n\t\t} else if (viewer.background === 'white') {\n\t\t\tviewer.renderer.setClearColor(0xFFFFFF, 1);\n\t\t\tviewer.renderer.clear();\n\t\t} else {\n\t\t\tviewer.renderer.setClearColor(0x000000, 0);\n\t\t\tviewer.renderer.clear();\n\t\t}\n\n\t\t{ // NORMALIZATION PASS\n\t\t\tlet normalizationMaterial = this.useEDL ? this.normalizationEDLMaterial : this.normalizationMaterial;\n\n\t\t\tif(this.useEDL){\n\t\t\t\tnormalizationMaterial.uniforms.edlStrength.value = viewer.edlStrength;\n\t\t\t\tnormalizationMaterial.uniforms.radius.value = viewer.edlRadius;\n\t\t\t\tnormalizationMaterial.uniforms.screenWidth.value = width;\n\t\t\t\tnormalizationMaterial.uniforms.screenHeight.value = height;\n\t\t\t\tnormalizationMaterial.uniforms.uEDLMap.value = this.rtDepth.texture;\n\t\t\t}\n\n\t\t\tnormalizationMaterial.uniforms.uWeightMap.value = this.rtAttribute.texture;\n\t\t\tnormalizationMaterial.uniforms.uDepthMap.value = this.rtAttribute.depthTexture;\n\t\t\t\n\t\t\tUtils.screenPass.render(viewer.renderer, normalizationMaterial);\n\t\t}\n\n\t\tviewer.renderer.render(viewer.scene.scene, camera);\n\n\t\tviewer.dispatchEvent({type: \"render.pass.scene\", viewer: viewer});\n\n\t\tviewer.renderer.clearDepth();\n\n\t\tviewer.transformationTool.update();\n\n\t\tviewer.dispatchEvent({type: \"render.pass.perspective_overlay\",viewer: viewer});\n\n\t\tviewer.renderer.render(viewer.controls.sceneControls, camera);\n\t\tviewer.renderer.render(viewer.clippingTool.sceneVolume, camera);\n\t\tviewer.renderer.render(viewer.transformationTool.scene, camera);\n\n\t\tviewer.renderer.setViewport(width - viewer.navigationCube.width, \n\t\t\t\t\t\t\t\t\theight - viewer.navigationCube.width, \n\t\t\t\t\t\t\t\t\tviewer.navigationCube.width, viewer.navigationCube.width);\n\t\tviewer.renderer.render(viewer.navigationCube, viewer.navigationCube.camera);\t\t\n\t\tviewer.renderer.setViewport(0, 0, width, height);\n\t\t\n\t\tviewer.dispatchEvent({type: \"render.pass.end\",viewer: viewer});\n\n\t}\n\n}\n\n","\nexport class View{\n\tconstructor () {\n\t\tthis.position = new THREE.Vector3(0, 0, 0);\n\n\t\tthis.yaw = Math.PI / 4;\n\t\tthis._pitch = -Math.PI / 4;\n\t\tthis.radius = 1;\n\n\t\tthis.maxPitch = Math.PI / 2;\n\t\tthis.minPitch = -Math.PI / 2;\n\t}\n\n\tclone () {\n\t\tlet c = new View();\n\t\tc.yaw = this.yaw;\n\t\tc._pitch = this.pitch;\n\t\tc.radius = this.radius;\n\t\tc.maxPitch = this.maxPitch;\n\t\tc.minPitch = this.minPitch;\n\n\t\treturn c;\n\t}\n\n\tget pitch () {\n\t\treturn this._pitch;\n\t}\n\n\tset pitch (angle) {\n\t\tthis._pitch = Math.max(Math.min(angle, this.maxPitch), this.minPitch);\n\t}\n\n\tget direction () {\n\t\tlet dir = new THREE.Vector3(0, 1, 0);\n\n\t\tdir.applyAxisAngle(new THREE.Vector3(1, 0, 0), this.pitch);\n\t\tdir.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw);\n\n\t\treturn dir;\n\t}\n\n\tset direction (dir) {\n\n\t\t//if(dir.x === dir.y){\n\t\tif(dir.x === 0 && dir.y === 0){\n\t\t\tthis.pitch = Math.PI / 2 * Math.sign(dir.z);\n\t\t}else{\n\t\t\tlet yaw = Math.atan2(dir.y, dir.x) - Math.PI / 2;\n\t\t\tlet pitch = Math.atan2(dir.z, Math.sqrt(dir.x * dir.x + dir.y * dir.y));\n\n\t\t\tthis.yaw = yaw;\n\t\t\tthis.pitch = pitch;\n\t\t}\n\t\t\n\t}\n\n\tlookAt(t){\n\t\tlet V;\n\t\tif(arguments.length === 1){\n\t\t\tV = new THREE.Vector3().subVectors(t, this.position);\n\t\t}else if(arguments.length === 3){\n\t\t\tV = new THREE.Vector3().subVectors(new THREE.Vector3(...arguments), this.position);\n\t\t}\n\n\t\tlet radius = V.length();\n\t\tlet dir = V.normalize();\n\n\t\tthis.radius = radius;\n\t\tthis.direction = dir;\n\t}\n\n\tgetPivot () {\n\t\treturn new THREE.Vector3().addVectors(this.position, this.direction.multiplyScalar(this.radius));\n\t}\n\n\tgetSide () {\n\t\tlet side = new THREE.Vector3(1, 0, 0);\n\t\tside.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw);\n\n\t\treturn side;\n\t}\n\n\tpan (x, y) {\n\t\tlet dir = new THREE.Vector3(0, 1, 0);\n\t\tdir.applyAxisAngle(new THREE.Vector3(1, 0, 0), this.pitch);\n\t\tdir.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw);\n\n\t\t// let side = new THREE.Vector3(1, 0, 0);\n\t\t// side.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw);\n\n\t\tlet side = this.getSide();\n\n\t\tlet up = side.clone().cross(dir);\n\n\t\tlet pan = side.multiplyScalar(x).add(up.multiplyScalar(y));\n\n\t\tthis.position = this.position.add(pan);\n\t\t// this.target = this.target.add(pan);\n\t}\n\n\ttranslate (x, y, z) {\n\t\tlet dir = new THREE.Vector3(0, 1, 0);\n\t\tdir.applyAxisAngle(new THREE.Vector3(1, 0, 0), this.pitch);\n\t\tdir.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw);\n\n\t\tlet side = new THREE.Vector3(1, 0, 0);\n\t\tside.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw);\n\n\t\tlet up = side.clone().cross(dir);\n\n\t\tlet t = side.multiplyScalar(x)\n\t\t\t.add(dir.multiplyScalar(y))\n\t\t\t.add(up.multiplyScalar(z));\n\n\t\tthis.position = this.position.add(t);\n\t}\n\n\ttranslateWorld (x, y, z) {\n\t\tthis.position.x += x;\n\t\tthis.position.y += y;\n\t\tthis.position.z += z;\n\t}\n\n\tsetView(position, target, duration = 0, callback = null){\n\n\t\tlet endPosition = null;\n\t\tif(position instanceof Array){\n\t\t\tendPosition = new THREE.Vector3(...position);\n\t\t}else if(position instanceof THREE.Vector3){\n\t\t\tendPosition = position.clone();\n\t\t}\n\n\t\tlet endTarget = null;\n\t\tif(target instanceof Array){\n\t\t\tendTarget = new THREE.Vector3(...target);\n\t\t}else if(target instanceof THREE.Vector3){\n\t\t\tendTarget = target.clone();\n\t\t}\n\t\t\n\t\tconst startPosition = this.position.clone();\n\t\tconst startTarget = this.getPivot();\n\n\t\t//const endPosition = position.clone();\n\t\t//const endTarget = target.clone();\n\n\t\tlet easing = TWEEN.Easing.Quartic.Out;\n\n\t\tif(duration === 0){\n\t\t\tthis.position.copy(endPosition);\n\t\t\tthis.lookAt(endTarget);\n\t\t}else{\n\t\t\tlet value = {x: 0};\n\t\t\tlet tween = new TWEEN.Tween(value).to({x: 1}, duration);\n\t\t\ttween.easing(easing);\n\t\t\t//this.tweens.push(tween);\n\n\t\t\ttween.onUpdate(() => {\n\t\t\t\tlet t = value.x;\n\n\t\t\t\t//console.log(t);\n\n\t\t\t\tconst pos = new THREE.Vector3(\n\t\t\t\t\t(1 - t) * startPosition.x + t * endPosition.x,\n\t\t\t\t\t(1 - t) * startPosition.y + t * endPosition.y,\n\t\t\t\t\t(1 - t) * startPosition.z + t * endPosition.z,\n\t\t\t\t);\n\n\t\t\t\tconst target = new THREE.Vector3(\n\t\t\t\t\t(1 - t) * startTarget.x + t * endTarget.x,\n\t\t\t\t\t(1 - t) * startTarget.y + t * endTarget.y,\n\t\t\t\t\t(1 - t) * startTarget.z + t * endTarget.z,\n\t\t\t\t);\n\n\t\t\t\tthis.position.copy(pos);\n\t\t\t\tthis.lookAt(target);\n\n\t\t\t});\n\n\t\t\ttween.start();\n\n\t\t\ttween.onComplete(() => {\n\t\t\t\tif(callback){\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t}\n\n};\n","\n\nimport {Annotation} from \"../Annotation.js\";\nimport {CameraMode} from \"../defines.js\";\nimport {View} from \"./View.js\";\nimport {Utils} from \"../utils.js\";\nimport {EventDispatcher} from \"../EventDispatcher.js\";\n\n\nexport class Scene extends EventDispatcher{\n\n\tconstructor(){\n\t\tsuper();\n\n\t\tthis.annotations = new Annotation();\n\t\t\n\t\tthis.scene = new THREE.Scene();\n\t\tthis.sceneBG = new THREE.Scene();\n\t\tthis.scenePointCloud = new THREE.Scene();\n\n\t\tthis.cameraP = new THREE.PerspectiveCamera(this.fov, 1, 0.1, 1000*1000);\n\t\tthis.cameraO = new THREE.OrthographicCamera(-1, 1, 1, -1, 0.1, 1000*1000);\n\t\tthis.cameraVR = new THREE.PerspectiveCamera();\n\t\tthis.cameraBG = new THREE.Camera();\n\t\tthis.cameraScreenSpace = new THREE.OrthographicCamera(-1, 1, 1, -1, 0.1, 10);\n\t\tthis.cameraMode = CameraMode.PERSPECTIVE;\n\t\tthis.overrideCamera = null;\n\t\tthis.pointclouds = [];\n\n\t\tthis.measurements = [];\n\t\tthis.profiles = [];\n\t\tthis.volumes = [];\n\t\tthis.polygonClipVolumes = [];\n\t\tthis.cameraAnimations = [];\n\t\tthis.orientedImages = [];\n\t\tthis.images360 = [];\n\t\tthis.geopackages = [];\n\t\t\n\t\tthis.fpControls = null;\n\t\tthis.orbitControls = null;\n\t\tthis.earthControls = null;\n\t\tthis.geoControls = null;\n\t\tthis.deviceControls = null;\n\t\tthis.inputHandler = null;\n\n\t\tthis.view = new View();\n\n\t\tthis.directionalLight = null;\n\n\t\tthis.initialize();\n\t}\n\n\testimateHeightAt (position) {\n\t\tlet height = null;\n\t\tlet fromSpacing = Infinity;\n\n\t\tfor (let pointcloud of this.pointclouds) {\n\t\t\tif (pointcloud.root.geometryNode === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet pHeight = null;\n\t\t\tlet pFromSpacing = Infinity;\n\n\t\t\tlet lpos = position.clone().sub(pointcloud.position);\n\t\t\tlpos.z = 0;\n\t\t\tlet ray = new THREE.Ray(lpos, new THREE.Vector3(0, 0, 1));\n\n\t\t\tlet stack = [pointcloud.root];\n\t\t\twhile (stack.length > 0) {\n\t\t\t\tlet node = stack.pop();\n\t\t\t\tlet box = node.getBoundingBox();\n\n\t\t\t\tlet inside = ray.intersectBox(box);\n\n\t\t\t\tif (!inside) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tlet h = node.geometryNode.mean.z +\n\t\t\t\t\tpointcloud.position.z +\n\t\t\t\t\tnode.geometryNode.boundingBox.min.z;\n\n\t\t\t\tif (node.geometryNode.spacing <= pFromSpacing) {\n\t\t\t\t\tpHeight = h;\n\t\t\t\t\tpFromSpacing = node.geometryNode.spacing;\n\t\t\t\t}\n\n\t\t\t\tfor (let index of Object.keys(node.children)) {\n\t\t\t\t\tlet child = node.children[index];\n\t\t\t\t\tif (child.geometryNode) {\n\t\t\t\t\t\tstack.push(node.children[index]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (height === null || pFromSpacing < fromSpacing) {\n\t\t\t\theight = pHeight;\n\t\t\t\tfromSpacing = pFromSpacing;\n\t\t\t}\n\t\t}\n\n\t\treturn height;\n\t}\n\t\n\tgetBoundingBox(pointclouds = this.pointclouds){\n\t\tlet box = new THREE.Box3();\n\n\t\tthis.scenePointCloud.updateMatrixWorld(true);\n\t\tthis.referenceFrame.updateMatrixWorld(true);\n\n\t\tfor (let pointcloud of pointclouds) {\n\t\t\tpointcloud.updateMatrixWorld(true);\n\n\t\t\tlet pointcloudBox = pointcloud.pcoGeometry.tightBoundingBox ? pointcloud.pcoGeometry.tightBoundingBox : pointcloud.boundingBox;\n\t\t\tlet boxWorld = Utils.computeTransformedBoundingBox(pointcloudBox, pointcloud.matrixWorld);\n\t\t\tbox.union(boxWorld);\n\t\t}\n\n\t\treturn box;\n\t}\n\n\taddPointCloud (pointcloud) {\n\t\tthis.pointclouds.push(pointcloud);\n\t\tthis.scenePointCloud.add(pointcloud);\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'pointcloud_added',\n\t\t\tpointcloud: pointcloud\n\t\t});\n\t}\n\n\taddVolume (volume) {\n\t\tthis.volumes.push(volume);\n\t\tthis.dispatchEvent({\n\t\t\t'type': 'volume_added',\n\t\t\t'scene': this,\n\t\t\t'volume': volume\n\t\t});\n\t}\n\n\taddOrientedImages(images){\n\t\tthis.orientedImages.push(images);\n\t\tthis.scene.add(images.node);\n\n\t\tthis.dispatchEvent({\n\t\t\t'type': 'oriented_images_added',\n\t\t\t'scene': this,\n\t\t\t'images': images\n\t\t});\n\t};\n\n\tremoveOrientedImages(images){\n\t\tlet index = this.orientedImages.indexOf(images);\n\t\tif (index > -1) {\n\t\t\tthis.orientedImages.splice(index, 1);\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\t'type': 'oriented_images_removed',\n\t\t\t\t'scene': this,\n\t\t\t\t'images': images\n\t\t\t});\n\t\t}\n\t};\n\n\tadd360Images(images){\n\t\tthis.images360.push(images);\n\t\tthis.scene.add(images.node);\n\n\t\tthis.dispatchEvent({\n\t\t\t'type': '360_images_added',\n\t\t\t'scene': this,\n\t\t\t'images': images\n\t\t});\n\t}\n\n\tremove360Images(images){\n\t\tlet index = this.images360.indexOf(images);\n\t\tif (index > -1) {\n\t\t\tthis.images360.splice(index, 1);\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\t'type': '360_images_removed',\n\t\t\t\t'scene': this,\n\t\t\t\t'images': images\n\t\t\t});\n\t\t}\n\t}\n\n\taddGeopackage(geopackage){\n\t\tthis.geopackages.push(geopackage);\n\t\tthis.scene.add(geopackage.node);\n\n\t\tthis.dispatchEvent({\n\t\t\t'type': 'geopackage_added',\n\t\t\t'scene': this,\n\t\t\t'geopackage': geopackage\n\t\t});\n\t};\n\n\tremoveGeopackage(geopackage){\n\t\tlet index = this.geopackages.indexOf(geopackage);\n\t\tif (index > -1) {\n\t\t\tthis.geopackages.splice(index, 1);\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\t'type': 'geopackage_removed',\n\t\t\t\t'scene': this,\n\t\t\t\t'geopackage': geopackage\n\t\t\t});\n\t\t}\n\t};\n\n\tremoveVolume (volume) {\n\t\tlet index = this.volumes.indexOf(volume);\n\t\tif (index > -1) {\n\t\t\tthis.volumes.splice(index, 1);\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\t'type': 'volume_removed',\n\t\t\t\t'scene': this,\n\t\t\t\t'volume': volume\n\t\t\t});\n\t\t}\n\t};\n\n\taddCameraAnimation(animation) {\n\t\tthis.cameraAnimations.push(animation);\n\t\tthis.dispatchEvent({\n\t\t\t'type': 'camera_animation_added',\n\t\t\t'scene': this,\n\t\t\t'animation': animation\n\t\t});\n\t};\n\n\tremoveCameraAnimation(animation){\n\t\tlet index = this.cameraAnimations.indexOf(volume);\n\t\tif (index > -1) {\n\t\t\tthis.cameraAnimations.splice(index, 1);\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\t'type': 'camera_animation_removed',\n\t\t\t\t'scene': this,\n\t\t\t\t'animation': animation\n\t\t\t});\n\t\t}\n\t};\n\n\taddPolygonClipVolume(volume){\n\t\tthis.polygonClipVolumes.push(volume);\n\t\tthis.dispatchEvent({\n\t\t\t\"type\": \"polygon_clip_volume_added\",\n\t\t\t\"scene\": this,\n\t\t\t\"volume\": volume\n\t\t});\n\t};\n\t\n\tremovePolygonClipVolume(volume){\n\t\tlet index = this.polygonClipVolumes.indexOf(volume);\n\t\tif (index > -1) {\n\t\t\tthis.polygonClipVolumes.splice(index, 1);\n\t\t\tthis.dispatchEvent({\n\t\t\t\t\"type\": \"polygon_clip_volume_removed\",\n\t\t\t\t\"scene\": this,\n\t\t\t\t\"volume\": volume\n\t\t\t});\n\t\t}\n\t};\n\t\n\taddMeasurement(measurement){\n\t\tmeasurement.lengthUnit = this.lengthUnit;\n\t\tmeasurement.lengthUnitDisplay = this.lengthUnitDisplay;\n\t\tthis.measurements.push(measurement);\n\t\tthis.dispatchEvent({\n\t\t\t'type': 'measurement_added',\n\t\t\t'scene': this,\n\t\t\t'measurement': measurement\n\t\t});\n\t};\n\n\tremoveMeasurement (measurement) {\n\t\tlet index = this.measurements.indexOf(measurement);\n\t\tif (index > -1) {\n\t\t\tthis.measurements.splice(index, 1);\n\t\t\tthis.dispatchEvent({\n\t\t\t\t'type': 'measurement_removed',\n\t\t\t\t'scene': this,\n\t\t\t\t'measurement': measurement\n\t\t\t});\n\t\t}\n\t}\n\n\taddProfile (profile) {\n\t\tthis.profiles.push(profile);\n\t\tthis.dispatchEvent({\n\t\t\t'type': 'profile_added',\n\t\t\t'scene': this,\n\t\t\t'profile': profile\n\t\t});\n\t}\n\n\tremoveProfile (profile) {\n\t\tlet index = this.profiles.indexOf(profile);\n\t\tif (index > -1) {\n\t\t\tthis.profiles.splice(index, 1);\n\t\t\tthis.dispatchEvent({\n\t\t\t\t'type': 'profile_removed',\n\t\t\t\t'scene': this,\n\t\t\t\t'profile': profile\n\t\t\t});\n\t\t}\n\t}\n\n\tremoveAllMeasurements () {\n\t\twhile (this.measurements.length > 0) {\n\t\t\tthis.removeMeasurement(this.measurements[0]);\n\t\t}\n\n\t\twhile (this.profiles.length > 0) {\n\t\t\tthis.removeProfile(this.profiles[0]);\n\t\t}\n\n\t\twhile (this.volumes.length > 0) {\n\t\t\tthis.removeVolume(this.volumes[0]);\n\t\t}\n\t}\n\n\tremoveAllClipVolumes(){\n\t\tlet clipVolumes = this.volumes.filter(volume => volume.clip === true);\n\t\tfor(let clipVolume of clipVolumes){\n\t\t\tthis.removeVolume(clipVolume);\n\t\t}\n\n\t\twhile(this.polygonClipVolumes.length > 0){\n\t\t\tthis.removePolygonClipVolume(this.polygonClipVolumes[0]);\n\t\t}\n\t}\n\n\tgetActiveCamera() {\n\n\t\tif(this.overrideCamera){\n\t\t\treturn this.overrideCamera;\n\t\t}\n\n\t\tif(this.cameraMode === CameraMode.PERSPECTIVE){\n\t\t\treturn this.cameraP;\n\t\t}else if(this.cameraMode === CameraMode.ORTHOGRAPHIC){\n\t\t\treturn this.cameraO;\n\t\t}else if(this.cameraMode === CameraMode.VR){\n\t\t\treturn this.cameraVR;\n\t\t}\n\n\t\treturn null;\n\t}\n\t\n\tinitialize(){\n\t\t\n\t\tthis.referenceFrame = new THREE.Object3D();\n\t\tthis.referenceFrame.matrixAutoUpdate = false;\n\t\tthis.scenePointCloud.add(this.referenceFrame);\n\n\t\tthis.cameraP.up.set(0, 0, 1);\n\t\tthis.cameraP.position.set(1000, 1000, 1000);\n\t\tthis.cameraO.up.set(0, 0, 1);\n\t\tthis.cameraO.position.set(1000, 1000, 1000);\n\t\t//this.camera.rotation.y = -Math.PI / 4;\n\t\t//this.camera.rotation.x = -Math.PI / 6;\n\t\tthis.cameraScreenSpace.lookAt(new THREE.Vector3(0, 0, 0), new THREE.Vector3(0, 0, -1), new THREE.Vector3(0, 1, 0));\n\t\t\n\t\tthis.directionalLight = new THREE.DirectionalLight( 0xffffff, 0.5 );\n\t\tthis.directionalLight.position.set( 10, 10, 10 );\n\t\tthis.directionalLight.lookAt( new THREE.Vector3(0, 0, 0));\n\t\tthis.scenePointCloud.add( this.directionalLight );\n\t\t\n\t\tlet light = new THREE.AmbientLight( 0x555555 ); // soft white light\n\t\tthis.scenePointCloud.add( light );\n\n\t\t{ // background\n\t\t\tlet texture = Utils.createBackgroundTexture(512, 512);\n\n\t\t\ttexture.minFilter = texture.magFilter = THREE.NearestFilter;\n\t\t\ttexture.minFilter = texture.magFilter = THREE.LinearFilter;\n\t\t\tlet bg = new THREE.Mesh(\n\t\t\t\tnew THREE.PlaneBufferGeometry(2, 2, 0),\n\t\t\t\tnew THREE.MeshBasicMaterial({\n\t\t\t\t\tmap: texture\n\t\t\t\t})\n\t\t\t);\n\t\t\tbg.material.depthTest = false;\n\t\t\tbg.material.depthWrite = false;\n\t\t\tthis.sceneBG.add(bg);\n\t\t}\n\n\t\t// { // lights\n\t\t// \t{\n\t\t// \t\tlet light = new THREE.DirectionalLight(0xffffff);\n\t\t// \t\tlight.position.set(10, 10, 1);\n\t\t// \t\tlight.target.position.set(0, 0, 0);\n\t\t// \t\tthis.scene.add(light);\n\t\t// \t}\n\n\t\t// \t{\n\t\t// \t\tlet light = new THREE.DirectionalLight(0xffffff);\n\t\t// \t\tlight.position.set(-10, 10, 1);\n\t\t// \t\tlight.target.position.set(0, 0, 0);\n\t\t// \t\tthis.scene.add(light);\n\t\t// \t}\n\n\t\t// \t{\n\t\t// \t\tlet light = new THREE.DirectionalLight(0xffffff);\n\t\t// \t\tlight.position.set(0, -10, 20);\n\t\t// \t\tlight.target.position.set(0, 0, 0);\n\t\t// \t\tthis.scene.add(light);\n\t\t// \t}\n\t\t// }\n\t}\n\t\n\taddAnnotation(position, args = {}){\t\t\n\t\tif(position instanceof Array){\n\t\t\targs.position = new THREE.Vector3().fromArray(position);\n\t\t} else if (position instanceof THREE.Vector3) {\n\t\t\targs.position = position;\n\t\t}\n\t\tlet annotation = new Annotation(args);\n\t\tthis.annotations.add(annotation);\n\n\t\treturn annotation;\n\t}\n\n\tgetAnnotations () {\n\t\treturn this.annotations;\n\t};\n\n\tremoveAnnotation(annotationToRemove) {\n\t\tthis.annotations.remove(annotationToRemove);\n\t}\n};\n","\n// http://epsg.io/\nproj4.defs([\n\t['UTM10N', '+proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'],\n\t['EPSG:6339', '+proj=utm +zone=10 +ellps=GRS80 +units=m +no_defs'],\n\t['EPSG:6340', '+proj=utm +zone=11 +ellps=GRS80 +units=m +no_defs'],\n\t['EPSG:6341', '+proj=utm +zone=12 +ellps=GRS80 +units=m +no_defs'],\n\t['EPSG:6342', '+proj=utm +zone=13 +ellps=GRS80 +units=m +no_defs'],\n\t['EPSG:6343', '+proj=utm +zone=14 +ellps=GRS80 +units=m +no_defs'],\n\t['EPSG:6344', '+proj=utm +zone=15 +ellps=GRS80 +units=m +no_defs'],\n\t['EPSG:6345', '+proj=utm +zone=16 +ellps=GRS80 +units=m +no_defs'],\n\t['EPSG:6346', '+proj=utm +zone=17 +ellps=GRS80 +units=m +no_defs'],\n\t['EPSG:6347', '+proj=utm +zone=18 +ellps=GRS80 +units=m +no_defs'],\n\t['EPSG:6348', '+proj=utm +zone=19 +ellps=GRS80 +units=m +no_defs'],\n\t['EPSG:26910', '+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\n\t['EPSG:26911', '+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\n\t['EPSG:26912', '+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\n\t['EPSG:26913', '+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\n\t['EPSG:26914', '+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\n\t['EPSG:26915', '+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\n\t['EPSG:26916', '+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\n\t['EPSG:26917', '+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\n\t['EPSG:26918', '+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\n\t['EPSG:26919', '+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\n]);\n\nexport class MapView{\n\n\tconstructor (viewer) {\n\t\tthis.viewer = viewer;\n\n\t\tthis.webMapService = 'WMTS';\n\t\tthis.mapProjectionName = 'EPSG:3857';\n\t\tthis.mapProjection = proj4.defs(this.mapProjectionName);\n\t\tthis.sceneProjection = null;\n\n\t\tthis.extentsLayer = null;\n\t\tthis.cameraLayer = null;\n\t\tthis.toolLayer = null;\n\t\tthis.sourcesLayer = null;\n\t\tthis.sourcesLabelLayer = null;\n\t\tthis.images360Layer = null;\n\t\tthis.enabled = false;\n\n\t\tthis.createAnnotationStyle = (text) => {\n\t\t\treturn [\n\t\t\t\tnew ol.style.Style({\n\t\t\t\t\timage: new ol.style.Circle({\n\t\t\t\t\t\tradius: 10,\n\t\t\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\t\t\tcolor: [255, 255, 255, 0.5],\n\t\t\t\t\t\t\twidth: 2\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tfill: new ol.style.Fill({\n\t\t\t\t\t\t\tcolor: [0, 0, 0, 0.5]\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t];\n\t\t};\n\n\t\tthis.createLabelStyle = (text) => {\n\t\t\tlet style = new ol.style.Style({\n\t\t\t\timage: new ol.style.Circle({\n\t\t\t\t\tradius: 6,\n\t\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\t\tcolor: 'white',\n\t\t\t\t\t\twidth: 2\n\t\t\t\t\t}),\n\t\t\t\t\tfill: new ol.style.Fill({\n\t\t\t\t\t\tcolor: 'green'\n\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t\ttext: new ol.style.Text({\n\t\t\t\t\tfont: '12px helvetica,sans-serif',\n\t\t\t\t\ttext: text,\n\t\t\t\t\tfill: new ol.style.Fill({\n\t\t\t\t\t\tcolor: '#000'\n\t\t\t\t\t}),\n\t\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\t\tcolor: '#fff',\n\t\t\t\t\t\twidth: 2\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t});\n\n\t\t\treturn style;\n\t\t};\n\t}\n\n\tshowSources (show) {\n\t\tthis.sourcesLayer.setVisible(show);\n\t\tthis.sourcesLabelLayer.setVisible(show);\n\t}\n\n\tinit () {\n\n\t\tif(typeof ol === \"undefined\"){\n\t\t\treturn;\n\t\t}\n\n\t\tthis.elMap = $('#potree_map');\n\t\tthis.elMap.draggable({ handle: $('#potree_map_header') });\n\t\tthis.elMap.resizable();\n\n\t\tthis.elTooltip = $(`
        `);\n\t\tthis.elMap.append(this.elTooltip);\n\n\t\tlet extentsLayer = this.getExtentsLayer();\n\t\tlet cameraLayer = this.getCameraLayer();\n\t\tthis.getToolLayer();\n\t\tlet sourcesLayer = this.getSourcesLayer();\n\t\tthis.images360Layer = this.getImages360Layer();\n\t\tthis.getSourcesLabelLayer();\n\t\tthis.getAnnotationsLayer();\n\n\t\tlet mousePositionControl = new ol.control.MousePosition({\n\t\t\tcoordinateFormat: ol.coordinate.createStringXY(5),\n\t\t\tprojection: 'EPSG:4326',\n\t\t\tundefinedHTML: ' '\n\t\t});\n\n\t\tlet _this = this;\n\t\tlet DownloadSelectionControl = function (optOptions) {\n\t\t\tlet options = optOptions || {};\n\n\t\t\t// TOGGLE TILES\n\t\t\tlet btToggleTiles = document.createElement('button');\n\t\t\tbtToggleTiles.innerHTML = 'T';\n\t\t\tbtToggleTiles.addEventListener('click', () => {\n\t\t\t\tlet visible = sourcesLayer.getVisible();\n\t\t\t\t_this.showSources(!visible);\n\t\t\t}, false);\n\t\t\tbtToggleTiles.style.float = 'left';\n\t\t\tbtToggleTiles.title = 'show / hide tiles';\n\n\t\t\t// DOWNLOAD SELECTED TILES\n\t\t\tlet link = document.createElement('a');\n\t\t\tlink.href = '#';\n\t\t\tlink.download = 'list.txt';\n\t\t\tlink.style.float = 'left';\n\n\t\t\tlet button = document.createElement('button');\n\t\t\tbutton.innerHTML = 'D';\n\t\t\tlink.appendChild(button);\n\n\t\t\tlet handleDownload = (e) => {\n\t\t\t\tlet features = selectedFeatures.getArray();\n\n\t\t\t\tlet url = [document.location.protocol, '//', document.location.host, document.location.pathname].join('');\n\n\t\t\t\tif (features.length === 0) {\n\t\t\t\t\talert('No tiles were selected. Select area with ctrl + left mouse button!');\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t} else if (features.length === 1) {\n\t\t\t\t\tlet feature = features[0];\n\n\t\t\t\t\tif (feature.source) {\n\t\t\t\t\t\tlet cloudjsurl = feature.pointcloud.pcoGeometry.url;\n\t\t\t\t\t\tlet sourceurl = new URL(url + '/../' + cloudjsurl + '/../source/' + feature.source.name);\n\t\t\t\t\t\tlink.href = sourceurl.href;\n\t\t\t\t\t\tlink.download = feature.source.name;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlet content = '';\n\t\t\t\t\tfor (let i = 0; i < features.length; i++) {\n\t\t\t\t\t\tlet feature = features[i];\n\n\t\t\t\t\t\tif (feature.source) {\n\t\t\t\t\t\t\tlet cloudjsurl = feature.pointcloud.pcoGeometry.url;\n\t\t\t\t\t\t\tlet sourceurl = new URL(url + '/../' + cloudjsurl + '/../source/' + feature.source.name);\n\t\t\t\t\t\t\tcontent += sourceurl.href + '\\n';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet uri = 'data:application/octet-stream;base64,' + btoa(content);\n\t\t\t\t\tlink.href = uri;\n\t\t\t\t\tlink.download = 'list_of_files.txt';\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tbutton.addEventListener('click', handleDownload, false);\n\n\t\t\t// assemble container\n\t\t\tlet element = document.createElement('div');\n\t\t\telement.className = 'ol-unselectable ol-control';\n\t\t\telement.appendChild(link);\n\t\t\telement.appendChild(btToggleTiles);\n\t\t\telement.style.bottom = '0.5em';\n\t\t\telement.style.left = '0.5em';\n\t\t\telement.title = 'Download file or list of selected tiles. Select tile with left mouse button or area using ctrl + left mouse.';\n\n\t\t\tol.control.Control.call(this, {\n\t\t\t\telement: element,\n\t\t\t\ttarget: options.target\n\t\t\t});\n\t\t};\n\t\tol.inherits(DownloadSelectionControl, ol.control.Control);\n\n\t\tthis.map = new ol.Map({\n\t\t\tcontrols: ol.control.defaults({\n\t\t\t\tattributionOptions: ({\n\t\t\t\t\tcollapsible: false\n\t\t\t\t})\n\t\t\t}).extend([\n\t\t\t\t// this.controls.zoomToExtent,\n\t\t\t\tnew DownloadSelectionControl(),\n\t\t\t\tmousePositionControl\n\t\t\t]),\n\t\t\tlayers: [\n\t\t\t\tnew ol.layer.Tile({source: new ol.source.OSM()}),\n\t\t\t\tthis.toolLayer,\n\t\t\t\tthis.annotationsLayer,\n\t\t\t\tthis.sourcesLayer,\n\t\t\t\tthis.sourcesLabelLayer,\n\t\t\t\tthis.images360Layer,\n\t\t\t\textentsLayer,\n\t\t\t\tcameraLayer\n\t\t\t],\n\t\t\ttarget: 'potree_map_content',\n\t\t\tview: new ol.View({\n\t\t\t\tcenter: this.olCenter,\n\t\t\t\tzoom: 9\n\t\t\t})\n\t\t});\n\n\t\t// DRAGBOX / SELECTION\n\t\tthis.dragBoxLayer = new ol.layer.Vector({\n\t\t\tsource: new ol.source.Vector({}),\n\t\t\tstyle: new ol.style.Style({\n\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\tcolor: 'rgba(0, 0, 255, 1)',\n\t\t\t\t\twidth: 2\n\t\t\t\t})\n\t\t\t})\n\t\t});\n\t\tthis.map.addLayer(this.dragBoxLayer);\n\n\t\tlet select = new ol.interaction.Select();\n\t\tthis.map.addInteraction(select);\n\n\t\tlet selectedFeatures = select.getFeatures();\n\n\t\tlet dragBox = new ol.interaction.DragBox({\n\t\t\tcondition: ol.events.condition.platformModifierKeyOnly\n\t\t});\n\n\t\tthis.map.addInteraction(dragBox);\n\n\t\t// this.map.on('pointermove', evt => {\n\t\t// \tlet pixel = evt.pixel;\n\t\t// \tlet feature = this.map.forEachFeatureAtPixel(pixel, function (feature) {\n\t\t// \t\treturn feature;\n\t\t// \t});\n\n\t\t// \t// console.log(feature);\n\t\t// \t// this.elTooltip.css(\"display\", feature ? '' : 'none');\n\t\t// \tthis.elTooltip.css('display', 'none');\n\t\t// \tif (feature && feature.onHover) {\n\t\t// \t\tfeature.onHover(evt);\n\t\t// \t\t// overlay.setPosition(evt.coordinate);\n\t\t// \t\t// tooltip.innerHTML = feature.get('name');\n\t\t// \t}\n\t\t// });\n\n\t\tthis.map.on('click', evt => {\n\t\t\tlet pixel = evt.pixel;\n\t\t\tlet feature = this.map.forEachFeatureAtPixel(pixel, function (feature) {\n\t\t\t\treturn feature;\n\t\t\t});\n\n\t\t\tif (feature && feature.onClick) {\n\t\t\t\tfeature.onClick(evt);\n\t\t\t}\n\t\t});\n\n\t\tdragBox.on('boxend', (e) => {\n\t\t\t// features that intersect the box are added to the collection of\n\t\t\t// selected features, and their names are displayed in the \"info\"\n\t\t\t// div\n\t\t\tlet extent = dragBox.getGeometry().getExtent();\n\t\t\tthis.getSourcesLayer().getSource().forEachFeatureIntersectingExtent(extent, (feature) => {\n\t\t\t\tselectedFeatures.push(feature);\n\t\t\t});\n\t\t});\n\n\t\t// clear selection when drawing a new box and when clicking on the map\n\t\tdragBox.on('boxstart', (e) => {\n\t\t\tselectedFeatures.clear();\n\t\t});\n\t\tthis.map.on('click', () => {\n\t\t\tselectedFeatures.clear();\n\t\t});\n\n\t\tthis.viewer.addEventListener('scene_changed', e => {\n\t\t\tthis.setScene(e.scene);\n\t\t});\n\n\t\tthis.onPointcloudAdded = e => {\n\t\t\tthis.load(e.pointcloud);\n\t\t};\n\n\t\tthis.on360ImagesAdded = e => {\n\t\t\tthis.addImages360(e.images);\n\t\t};\n\n\t\tthis.onAnnotationAdded = e => {\n\t\t\tif (!this.sceneProjection) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet annotation = e.annotation;\n\t\t\tlet position = annotation.position;\n\t\t\tlet mapPos = this.toMap.forward([position.x, position.y]);\n\t\t\tlet feature = new ol.Feature({\n\t\t\t\tgeometry: new ol.geom.Point(mapPos),\n\t\t\t\tname: annotation.title\n\t\t\t});\n\t\t\tfeature.setStyle(this.createAnnotationStyle(annotation.title));\n\n\t\t\tfeature.onHover = evt => {\n\t\t\t\tlet coordinates = feature.getGeometry().getCoordinates();\n\t\t\t\tlet p = this.map.getPixelFromCoordinate(coordinates);\n\n\t\t\t\tthis.elTooltip.html(annotation.title);\n\t\t\t\tthis.elTooltip.css('display', '');\n\t\t\t\tthis.elTooltip.css('left', `${p[0]}px`);\n\t\t\t\tthis.elTooltip.css('top', `${p[1]}px`);\n\t\t\t};\n\n\t\t\tfeature.onClick = evt => {\n\t\t\t\tannotation.clickTitle();\n\t\t\t};\n\n\t\t\tthis.getAnnotationsLayer().getSource().addFeature(feature);\n\t\t};\n\n\t\tthis.setScene(this.viewer.scene);\n\t}\n\n\tsetScene (scene) {\n\t\tif (this.scene === scene) {\n\t\t\treturn;\n\t\t};\n\n\t\tif (this.scene) {\n\t\t\tthis.scene.removeEventListener('pointcloud_added', this.onPointcloudAdded);\n\t\t\tthis.scene.removeEventListener('360_images_added', this.on360ImagesAdded);\n\t\t\tthis.scene.annotations.removeEventListener('annotation_added', this.onAnnotationAdded);\n\t\t}\n\n\t\tthis.scene = scene;\n\n\t\tthis.scene.addEventListener('pointcloud_added', this.onPointcloudAdded);\n\t\tthis.scene.addEventListener('360_images_added', this.on360ImagesAdded);\n\t\tthis.scene.annotations.addEventListener('annotation_added', this.onAnnotationAdded);\n\n\t\tfor (let pointcloud of this.viewer.scene.pointclouds) {\n\t\t\tthis.load(pointcloud);\n\t\t}\n\n\t\tthis.viewer.scene.annotations.traverseDescendants(annotation => {\n\t\t\tthis.onAnnotationAdded({annotation: annotation});\n\t\t});\n\n\t\tfor(let images of this.viewer.scene.images360){\n\t\t\tthis.on360ImagesAdded({images: images});\n\t\t}\n\t}\n\n\tgetExtentsLayer () {\n\t\tif (this.extentsLayer) {\n\t\t\treturn this.extentsLayer;\n\t\t}\n\n\t\tthis.gExtent = new ol.geom.LineString([[0, 0], [0, 0]]);\n\n\t\tlet feature = new ol.Feature(this.gExtent);\n\t\tlet featureVector = new ol.source.Vector({\n\t\t\tfeatures: [feature]\n\t\t});\n\n\t\tthis.extentsLayer = new ol.layer.Vector({\n\t\t\tsource: featureVector,\n\t\t\tstyle: new ol.style.Style({\n\t\t\t\tfill: new ol.style.Fill({\n\t\t\t\t\tcolor: 'rgba(255, 255, 255, 0.2)'\n\t\t\t\t}),\n\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\tcolor: '#0000ff',\n\t\t\t\t\twidth: 2\n\t\t\t\t}),\n\t\t\t\timage: new ol.style.Circle({\n\t\t\t\t\tradius: 3,\n\t\t\t\t\tfill: new ol.style.Fill({\n\t\t\t\t\t\tcolor: '#0000ff'\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t})\n\t\t});\n\n\t\treturn this.extentsLayer;\n\t}\n\n\tgetAnnotationsLayer () {\n\t\tif (this.annotationsLayer) {\n\t\t\treturn this.annotationsLayer;\n\t\t}\n\n\t\tthis.annotationsLayer = new ol.layer.Vector({\n\t\t\tsource: new ol.source.Vector({\n\t\t\t}),\n\t\t\tstyle: new ol.style.Style({\n\t\t\t\tfill: new ol.style.Fill({\n\t\t\t\t\tcolor: 'rgba(255, 0, 0, 1)'\n\t\t\t\t}),\n\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\tcolor: 'rgba(255, 0, 0, 1)',\n\t\t\t\t\twidth: 2\n\t\t\t\t})\n\t\t\t})\n\t\t});\n\n\t\treturn this.annotationsLayer;\n\t}\n\n\tgetCameraLayer () {\n\t\tif (this.cameraLayer) {\n\t\t\treturn this.cameraLayer;\n\t\t}\n\n\t\t// CAMERA LAYER\n\t\tthis.gCamera = new ol.geom.LineString([[0, 0], [0, 0], [0, 0], [0, 0]]);\n\t\tlet feature = new ol.Feature(this.gCamera);\n\t\tlet featureVector = new ol.source.Vector({\n\t\t\tfeatures: [feature]\n\t\t});\n\n\t\tthis.cameraLayer = new ol.layer.Vector({\n\t\t\tsource: featureVector,\n\t\t\tstyle: new ol.style.Style({\n\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\tcolor: '#0000ff',\n\t\t\t\t\twidth: 2\n\t\t\t\t})\n\t\t\t})\n\t\t});\n\n\t\treturn this.cameraLayer;\n\t}\n\n\tgetToolLayer () {\n\t\tif (this.toolLayer) {\n\t\t\treturn this.toolLayer;\n\t\t}\n\n\t\tthis.toolLayer = new ol.layer.Vector({\n\t\t\tsource: new ol.source.Vector({\n\t\t\t}),\n\t\t\tstyle: new ol.style.Style({\n\t\t\t\tfill: new ol.style.Fill({\n\t\t\t\t\tcolor: 'rgba(255, 0, 0, 1)'\n\t\t\t\t}),\n\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\tcolor: 'rgba(255, 0, 0, 1)',\n\t\t\t\t\twidth: 2\n\t\t\t\t})\n\t\t\t})\n\t\t});\n\n\t\treturn this.toolLayer;\n\t}\n\n\tgetImages360Layer(){\n\t\tif(this.images360Layer){\n\t\t\treturn this.images360Layer;\n\t\t}\n\n\t\tlet style = new ol.style.Style({\n\t\t\timage: new ol.style.Circle({\n\t\t\t\tradius: 4,\n\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\tcolor: [255, 0, 0, 1],\n\t\t\t\t\twidth: 2\n\t\t\t\t}),\n\t\t\t\tfill: new ol.style.Fill({\n\t\t\t\t\tcolor: [255, 100, 100, 1]\n\t\t\t\t})\n\t\t\t})\n\t\t});\n\t\t\n\t\tlet layer = new ol.layer.Vector({\n\t\t\tsource: new ol.source.Vector({}),\n\t\t\tstyle: style,\n\t\t});\n\n\t\tthis.images360Layer = layer;\n\n\t\treturn this.images360Layer;\n\t}\n\n\tgetSourcesLayer () {\n\t\tif (this.sourcesLayer) {\n\t\t\treturn this.sourcesLayer;\n\t\t}\n\n\t\tthis.sourcesLayer = new ol.layer.Vector({\n\t\t\tsource: new ol.source.Vector({}),\n\t\t\tstyle: new ol.style.Style({\n\t\t\t\tfill: new ol.style.Fill({\n\t\t\t\t\tcolor: 'rgba(0, 0, 150, 0.1)'\n\t\t\t\t}),\n\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\tcolor: 'rgba(0, 0, 150, 1)',\n\t\t\t\t\twidth: 1\n\t\t\t\t})\n\t\t\t})\n\t\t});\n\n\t\treturn this.sourcesLayer;\n\t}\n\n\tgetSourcesLabelLayer () {\n\t\tif (this.sourcesLabelLayer) {\n\t\t\treturn this.sourcesLabelLayer;\n\t\t}\n\n\t\tthis.sourcesLabelLayer = new ol.layer.Vector({\n\t\t\tsource: new ol.source.Vector({\n\t\t\t}),\n\t\t\tstyle: new ol.style.Style({\n\t\t\t\tfill: new ol.style.Fill({\n\t\t\t\t\tcolor: 'rgba(255, 0, 0, 0.1)'\n\t\t\t\t}),\n\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\tcolor: 'rgba(255, 0, 0, 1)',\n\t\t\t\t\twidth: 2\n\t\t\t\t})\n\t\t\t}),\n\t\t\tminResolution: 0.01,\n\t\t\tmaxResolution: 20\n\t\t});\n\n\t\treturn this.sourcesLabelLayer;\n\t}\n\n\tsetSceneProjection (sceneProjection) {\n\t\tthis.sceneProjection = sceneProjection;\n\t\tthis.toMap = proj4(this.sceneProjection, this.mapProjection);\n\t\tthis.toScene = proj4(this.mapProjection, this.sceneProjection);\n\t};\n\n\tgetMapExtent () {\n\t\tlet bb = this.viewer.getBoundingBox();\n\n\t\tlet bottomLeft = this.toMap.forward([bb.min.x, bb.min.y]);\n\t\tlet bottomRight = this.toMap.forward([bb.max.x, bb.min.y]);\n\t\tlet topRight = this.toMap.forward([bb.max.x, bb.max.y]);\n\t\tlet topLeft = this.toMap.forward([bb.min.x, bb.max.y]);\n\n\t\tlet extent = {\n\t\t\tbottomLeft: bottomLeft,\n\t\t\tbottomRight: bottomRight,\n\t\t\ttopRight: topRight,\n\t\t\ttopLeft: topLeft\n\t\t};\n\n\t\treturn extent;\n\t};\n\n\tgetMapCenter () {\n\t\tlet mapExtent = this.getMapExtent();\n\n\t\tlet mapCenter = [\n\t\t\t(mapExtent.bottomLeft[0] + mapExtent.topRight[0]) / 2,\n\t\t\t(mapExtent.bottomLeft[1] + mapExtent.topRight[1]) / 2\n\t\t];\n\n\t\treturn mapCenter;\n\t};\n\n\tupdateToolDrawings () {\n\t\tthis.toolLayer.getSource().clear();\n\n\t\tlet profiles = this.viewer.profileTool.profiles;\n\t\tfor (let i = 0; i < profiles.length; i++) {\n\t\t\tlet profile = profiles[i];\n\t\t\tlet coordinates = [];\n\n\t\t\tfor (let j = 0; j < profile.points.length; j++) {\n\t\t\t\tlet point = profile.points[j];\n\t\t\t\tlet pointMap = this.toMap.forward([point.x, point.y]);\n\t\t\t\tcoordinates.push(pointMap);\n\t\t\t}\n\n\t\t\tlet line = new ol.geom.LineString(coordinates);\n\t\t\tlet feature = new ol.Feature(line);\n\t\t\tthis.toolLayer.getSource().addFeature(feature);\n\t\t}\n\n\t\tlet measurements = this.viewer.measuringTool.measurements;\n\t\tfor (let i = 0; i < measurements.length; i++) {\n\t\t\tlet measurement = measurements[i];\n\t\t\tlet coordinates = [];\n\n\t\t\tfor (let j = 0; j < measurement.points.length; j++) {\n\t\t\t\tlet point = measurement.points[j].position;\n\t\t\t\tlet pointMap = this.toMap.forward([point.x, point.y]);\n\t\t\t\tcoordinates.push(pointMap);\n\t\t\t}\n\n\t\t\tif (measurement.closed && measurement.points.length > 0) {\n\t\t\t\tcoordinates.push(coordinates[0]);\n\t\t\t}\n\n\t\t\tlet line = new ol.geom.LineString(coordinates);\n\t\t\tlet feature = new ol.Feature(line);\n\t\t\tthis.toolLayer.getSource().addFeature(feature);\n\t\t}\n\t}\n\n\taddImages360(images){\n\t\tlet transform = this.toMap.forward;\n\t\tlet layer = this.getImages360Layer();\n\n\t\tfor(let image of images.images){\n\n\t\t\tlet p = transform([image.position[0], image.position[1]]);\n\n\t\t\tlet feature = new ol.Feature({\n\t\t\t\t'geometry': new ol.geom.Point(p),\n\t\t\t});\n\n\t\t\tfeature.onClick = () => {\n\t\t\t\timages.focus(image);\n\t\t\t};\n\n\t\t\tlayer.getSource().addFeature(feature);\n\t\t}\n\t}\n\n\tasync load (pointcloud) {\n\t\tif (!pointcloud) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!pointcloud.projection) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.sceneProjection) {\n\t\t\ttry {\n\t\t\t\tthis.setSceneProjection(pointcloud.projection);\n\t\t\t}catch (e) {\n\t\t\t\tconsole.log('Failed projection:', e);\n\n\t\t\t\tif (pointcloud.fallbackProjection) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconsole.log('Trying fallback projection...');\n\t\t\t\t\t\tthis.setSceneProjection(pointcloud.fallbackProjection);\n\t\t\t\t\t\tconsole.log('Set projection from fallback');\n\t\t\t\t\t}catch (e) {\n\t\t\t\t\t\tconsole.log('Failed fallback projection:', e);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\treturn;\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tlet mapExtent = this.getMapExtent();\n\t\tlet mapCenter = this.getMapCenter();\n\n\t\tlet view = this.map.getView();\n\t\tview.setCenter(mapCenter);\n\n\t\tthis.gExtent.setCoordinates([\n\t\t\tmapExtent.bottomLeft,\n\t\t\tmapExtent.bottomRight,\n\t\t\tmapExtent.topRight,\n\t\t\tmapExtent.topLeft,\n\t\t\tmapExtent.bottomLeft\n\t\t]);\n\n\t\tview.fit(this.gExtent, [300, 300], {\n\t\t\tconstrainResolution: false\n\t\t});\n\n\t\tif (pointcloud.pcoGeometry.type == 'ept'){ \n\t\t\treturn;\n\t\t}\n\n\t\tlet url = `${pointcloud.pcoGeometry.url}/../sources.json`;\n\t\t//let response = await fetch(url);\n\n\t\tfetch(url).then(async (response) => {\n\t\t\tlet data = await response.json();\n\t\t\n\t\t\tlet sources = data.sources;\n\n\t\t\tfor (let i = 0; i < sources.length; i++) {\n\t\t\t\tlet source = sources[i];\n\t\t\t\tlet name = source.name;\n\t\t\t\tlet bounds = source.bounds;\n\n\t\t\t\tlet mapBounds = {\n\t\t\t\t\tmin: this.toMap.forward([bounds.min[0], bounds.min[1]]),\n\t\t\t\t\tmax: this.toMap.forward([bounds.max[0], bounds.max[1]])\n\t\t\t\t};\n\t\t\t\tlet mapCenter = [\n\t\t\t\t\t(mapBounds.min[0] + mapBounds.max[0]) / 2,\n\t\t\t\t\t(mapBounds.min[1] + mapBounds.max[1]) / 2\n\t\t\t\t];\n\n\t\t\t\tlet p1 = this.toMap.forward([bounds.min[0], bounds.min[1]]);\n\t\t\t\tlet p2 = this.toMap.forward([bounds.max[0], bounds.min[1]]);\n\t\t\t\tlet p3 = this.toMap.forward([bounds.max[0], bounds.max[1]]);\n\t\t\t\tlet p4 = this.toMap.forward([bounds.min[0], bounds.max[1]]);\n\n\t\t\t\t// let feature = new ol.Feature({\n\t\t\t\t//\t'geometry': new ol.geom.LineString([p1, p2, p3, p4, p1])\n\t\t\t\t// });\n\t\t\t\tlet feature = new ol.Feature({\n\t\t\t\t\t'geometry': new ol.geom.Polygon([[p1, p2, p3, p4, p1]])\n\t\t\t\t});\n\t\t\t\tfeature.source = source;\n\t\t\t\tfeature.pointcloud = pointcloud;\n\t\t\t\tthis.getSourcesLayer().getSource().addFeature(feature);\n\n\t\t\t\tfeature = new ol.Feature({\n\t\t\t\t\tgeometry: new ol.geom.Point(mapCenter),\n\t\t\t\t\tname: name\n\t\t\t\t});\n\t\t\t\tfeature.setStyle(this.createLabelStyle(name));\n\t\t\t\tthis.sourcesLabelLayer.getSource().addFeature(feature);\n\t\t\t}\n\t\t}).catch(() => {\n\t\t\t\n\t\t});\n\n\t}\n\n\ttoggle () {\n\t\tif (this.elMap.is(':visible')) {\n\t\t\tthis.elMap.css('display', 'none');\n\t\t\tthis.enabled = false;\n\t\t} else {\n\t\t\tthis.elMap.css('display', 'block');\n\t\t\tthis.enabled = true;\n\t\t}\n\t}\n\n\tupdate (delta) {\n\t\tif (!this.sceneProjection) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet pm = $('#potree_map');\n\n\t\tif (!this.enabled) {\n\t\t\treturn;\n\t\t}\n\n\t\t// resize\n\t\tlet mapSize = this.map.getSize();\n\t\tlet resized = (pm.width() !== mapSize[0] || pm.height() !== mapSize[1]);\n\t\tif (resized) {\n\t\t\tthis.map.updateSize();\n\t\t}\n\n\t\t//\n\t\tlet camera = this.viewer.scene.getActiveCamera();\n\n\t\tlet scale = this.map.getView().getResolution();\n\t\tlet campos = camera.position;\n\t\tlet camdir = camera.getWorldDirection(new THREE.Vector3());\n\t\tlet sceneLookAt = camdir.clone().multiplyScalar(30 * scale).add(campos);\n\t\tlet geoPos = camera.position;\n\t\tlet geoLookAt = sceneLookAt;\n\t\tlet mapPos = new THREE.Vector2().fromArray(this.toMap.forward([geoPos.x, geoPos.y]));\n\t\tlet mapLookAt = new THREE.Vector2().fromArray(this.toMap.forward([geoLookAt.x, geoLookAt.y]));\n\t\tlet mapDir = new THREE.Vector2().subVectors(mapLookAt, mapPos).normalize();\n\n\t\tmapLookAt = mapPos.clone().add(mapDir.clone().multiplyScalar(30 * scale));\n\t\tlet mapLength = mapPos.distanceTo(mapLookAt);\n\t\tlet mapSide = new THREE.Vector2(-mapDir.y, mapDir.x);\n\n\t\tlet p1 = mapPos.toArray();\n\t\tlet p2 = mapLookAt.clone().sub(mapSide.clone().multiplyScalar(0.3 * mapLength)).toArray();\n\t\tlet p3 = mapLookAt.clone().add(mapSide.clone().multiplyScalar(0.3 * mapLength)).toArray();\n\n\t\tthis.gCamera.setCoordinates([p1, p2, p3, p1]);\n\t}\n\n\tget sourcesVisible () {\n\t\treturn this.getSourcesLayer().getVisible();\n\t}\n\n\tset sourcesVisible (value) {\n\t\tthis.getSourcesLayer().setVisible(value);\n\t}\n\n}\n","\nexport class CSVExporter {\n\tstatic toString (points) {\n\t\tlet string = '';\n\n\t\tlet attributes = Object.keys(points.data)\n\t\t\t.filter(a => a !== 'normal')\n\t\t\t.sort((a, b) => {\n\t\t\t\tif (a === 'position') return -1;\n\t\t\t\tif (b === 'position') return 1;\n\t\t\t\tif (a === 'rgba') return -1;\n\t\t\t\tif (b === 'rgba') return 1;\n\t\t\t});\n\n\t\tlet headerValues = [];\n\t\tfor (let attribute of attributes) {\n\t\t\tlet itemSize = points.data[attribute].length / points.numPoints;\n\n\t\t\tif (attribute === 'position') {\n\t\t\t\theaderValues = headerValues.concat(['x', 'y', 'z']);\n\t\t\t} else if (attribute === 'rgba') {\n\t\t\t\theaderValues = headerValues.concat(['r', 'g', 'b', 'a']);\n\t\t\t} else if (itemSize > 1) {\n\t\t\t\tfor (let i = 0; i < itemSize; i++) {\n\t\t\t\t\theaderValues.push(`${attribute}_${i}`);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\theaderValues.push(attribute);\n\t\t\t}\n\t\t}\n\t\tstring = headerValues.join(', ') + '\\n';\n\n\t\tfor (let i = 0; i < points.numPoints; i++) {\n\t\t\tlet values = [];\n\n\t\t\tfor (let attribute of attributes) {\n\t\t\t\tlet itemSize = points.data[attribute].length / points.numPoints;\n\t\t\t\tlet value = points.data[attribute]\n\t\t\t\t\t.subarray(itemSize * i, itemSize * i + itemSize)\n\t\t\t\t\t.join(', ');\n\t\t\t\tvalues.push(value);\n\t\t\t}\n\n\t\t\tstring += values.join(', ') + '\\n';\n\t\t}\n\n\t\treturn string;\n\t}\n};\n","\nexport class LASExporter {\n\tstatic toLAS (points) {\n\t\t// TODO Unused: let string = '';\n\n\t\tlet boundingBox = points.boundingBox;\n\t\tlet offset = boundingBox.min.clone();\n\t\tlet diagonal = boundingBox.min.distanceTo(boundingBox.max);\n\t\tlet scale = new THREE.Vector3(0.001, 0.001, 0.001);\n\t\tif (diagonal > 1000 * 1000) {\n\t\t\tscale = new THREE.Vector3(0.01, 0.01, 0.01);\n\t\t} else {\n\t\t\tscale = new THREE.Vector3(0.001, 0.001, 0.001);\n\t\t}\n\n\t\tlet setString = function (string, offset, buffer) {\n\t\t\tlet view = new Uint8Array(buffer);\n\n\t\t\tfor (let i = 0; i < string.length; i++) {\n\t\t\t\tlet charCode = string.charCodeAt(i);\n\t\t\t\tview[offset + i] = charCode;\n\t\t\t}\n\t\t};\n\n\t\tlet buffer = new ArrayBuffer(227 + 28 * points.numPoints);\n\t\tlet view = new DataView(buffer);\n\t\tlet u8View = new Uint8Array(buffer);\n\t\t// let u16View = new Uint16Array(buffer);\n\n\t\tsetString('LASF', 0, buffer);\n\t\tu8View[24] = 1;\n\t\tu8View[25] = 2;\n\n\t\t// system identifier o:26 l:32\n\n\t\t// generating software o:58 l:32\n\t\tsetString('Potree 1.7', 58, buffer);\n\n\t\t// file creation day of year o:90 l:2\n\t\t// file creation year o:92 l:2\n\n\t\t// header size o:94 l:2\n\t\tview.setUint16(94, 227, true);\n\n\t\t// offset to point data o:96 l:4\n\t\tview.setUint32(96, 227, true);\n\n\t\t// number of letiable length records o:100 l:4\n\n\t\t// point data record format 104 1\n\t\tu8View[104] = 2;\n\n\t\t// point data record length 105 2\n\t\tview.setUint16(105, 28, true);\n\n\t\t// number of point records 107 4\n\t\tview.setUint32(107, points.numPoints, true);\n\n\t\t// number of points by return 111 20\n\n\t\t// x scale factor 131 8\n\t\tview.setFloat64(131, scale.x, true);\n\n\t\t// y scale factor 139 8\n\t\tview.setFloat64(139, scale.y, true);\n\n\t\t// z scale factor 147 8\n\t\tview.setFloat64(147, scale.z, true);\n\n\t\t// x offset 155 8\n\t\tview.setFloat64(155, offset.x, true);\n\n\t\t// y offset 163 8\n\t\tview.setFloat64(163, offset.y, true);\n\n\t\t// z offset 171 8\n\t\tview.setFloat64(171, offset.z, true);\n\n\t\t// max x 179 8\n\t\tview.setFloat64(179, boundingBox.max.x, true);\n\n\t\t// min x 187 8\n\t\tview.setFloat64(187, boundingBox.min.x, true);\n\n\t\t// max y 195 8\n\t\tview.setFloat64(195, boundingBox.max.y, true);\n\n\t\t// min y 203 8\n\t\tview.setFloat64(203, boundingBox.min.y, true);\n\n\t\t// max z 211 8\n\t\tview.setFloat64(211, boundingBox.max.z, true);\n\n\t\t// min z 219 8\n\t\tview.setFloat64(219, boundingBox.min.z, true);\n\n\t\tlet boffset = 227;\n\t\tfor (let i = 0; i < points.numPoints; i++) {\n\n\t\t\tlet px = points.data.position[3 * i + 0];\n\t\t\tlet py = points.data.position[3 * i + 1];\n\t\t\tlet pz = points.data.position[3 * i + 2];\n\n\t\t\tlet ux = parseInt((px - offset.x) / scale.x);\n\t\t\tlet uy = parseInt((py - offset.y) / scale.y);\n\t\t\tlet uz = parseInt((pz - offset.z) / scale.z);\n\n\t\t\tview.setUint32(boffset + 0, ux, true);\n\t\t\tview.setUint32(boffset + 4, uy, true);\n\t\t\tview.setUint32(boffset + 8, uz, true);\n\n\t\t\tif (points.data.intensity) {\n\t\t\t\tview.setUint16(boffset + 12, (points.data.intensity[i]), true);\n\t\t\t}\n\n\t\t\tlet rt = 0;\n\t\t\tif (points.data.returnNumber) {\n\t\t\t\trt += points.data.returnNumber[i];\n\t\t\t}\n\t\t\tif (points.data.numberOfReturns) {\n\t\t\t\trt += (points.data.numberOfReturns[i] << 3);\n\t\t\t}\n\t\t\tview.setUint8(boffset + 14, rt);\n\n\t\t\tif (points.data.classification) {\n\t\t\t\tview.setUint8(boffset + 15, points.data.classification[i]);\n\t\t\t}\n\t\t\t// scan angle rank\n\t\t\t// user data\n\t\t\t// point source id\n\t\t\tif (points.data.pointSourceID) {\n\t\t\t\tview.setUint16(boffset + 18, points.data.pointSourceID[i]);\n\t\t\t}\n\n\t\t\tif (points.data.rgba) {\n\t\t\t\tlet rgba = points.data.rgba;\n\t\t\t\tview.setUint16(boffset + 20, (rgba[4 * i + 0] * 255), true);\n\t\t\t\tview.setUint16(boffset + 22, (rgba[4 * i + 1] * 255), true);\n\t\t\t\tview.setUint16(boffset + 24, (rgba[4 * i + 2] * 255), true);\n\t\t\t}\n\n\t\t\tboffset += 28;\n\t\t}\n\n\t\treturn buffer;\n\t}\n\t\n}\n","\n\nimport {Utils} from \"../utils.js\";\nimport {Points} from \"../Points.js\";\nimport {CSVExporter} from \"../exporter/CSVExporter.js\";\nimport {LASExporter} from \"../exporter/LASExporter.js\";\nimport { EventDispatcher } from \"../EventDispatcher.js\";\nimport {PointCloudTree} from \"../PointCloudTree.js\";\nimport {Renderer} from \"../PotreeRenderer.js\";\nimport {PointCloudMaterial} from \"../materials/PointCloudMaterial.js\";\nimport {PointSizeType} from \"../defines.js\";\n\n\nfunction copyMaterial(source, target){\n\n\tfor(let name of Object.keys(target.uniforms)){\n\t\ttarget.uniforms[name].value = source.uniforms[name].value;\n\t}\n\n\ttarget.gradientTexture = source.gradientTexture;\n\ttarget.visibleNodesTexture = source.visibleNodesTexture;\n\ttarget.classificationTexture = source.classificationTexture;\n\ttarget.matcapTexture = source.matcapTexture;\n\n\ttarget.activeAttributeName = source.activeAttributeName;\n\ttarget.ranges = source.ranges;\n\n\t//target.updateShaderSource();\n}\n\n\nclass Batch{\n\n\tconstructor(geometry, material){\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.sceneNode = new THREE.Points(geometry, material);\n\n\t\tthis.geometryNode = {\n\t\t\testimatedSpacing: 1.0,\n\t\t\tgeometry: geometry,\n\t\t};\n\t}\n\n\tgetLevel(){\n\t\treturn 0;\n\t}\n\n}\n\nclass ProfileFakeOctree extends PointCloudTree{\n\n\tconstructor(octree){\n\t\tsuper();\n\n\t\tthis.trueOctree = octree;\n\t\tthis.pcoGeometry = octree.pcoGeometry;\n\t\tthis.points = [];\n\t\tthis.visibleNodes = [];\n\t\t\n\t\t//this.material = this.trueOctree.material;\n\t\tthis.material = new PointCloudMaterial();\n\t\t//this.material.copy(this.trueOctree.material);\n\t\tcopyMaterial(this.trueOctree.material, this.material);\n\t\tthis.material.pointSizeType = PointSizeType.FIXED;\n\n\t\tthis.batchSize = 100 * 1000;\n\t\tthis.currentBatch = null\n\t}\n\n\tgetAttribute(name){\n\t\treturn this.trueOctree.getAttribute(name);\n\t}\n\n\tdispose(){\n\t\tfor(let node of this.visibleNodes){\n\t\t\tnode.geometry.dispose();\n\t\t}\n\n\t\tthis.visibleNodes = [];\n\t\tthis.currentBatch = null;\n\t\tthis.points = [];\n\t}\n\n\taddPoints(data){\n\t\t// since each call to addPoints can deliver very very few points,\n\t\t// we're going to batch them into larger buffers for efficiency.\n\n\t\tif(this.currentBatch === null){\n\t\t\tthis.currentBatch = this.createNewBatch(data);\n\t\t}\n\n\t\tthis.points.push(data);\n\n\n\t\tlet updateRange = {\n\t\t\tstart: this.currentBatch.geometry.drawRange.count,\n\t\t\tcount: 0\n\t\t};\n\t\tlet projectedBox = new THREE.Box3();\n\n\t\tlet truePos = new THREE.Vector3();\n\n\t\tfor(let i = 0; i < data.numPoints; i++){\n\n\t\t\tif(updateRange.start + updateRange.count >= this.batchSize){\n\t\t\t\t// current batch full, start new batch\n\n\t\t\t\tfor(let key of Object.keys(this.currentBatch.geometry.attributes)){\n\t\t\t\t\tlet attribute = this.currentBatch.geometry.attributes[key];\n\t\t\t\t\tattribute.updateRange.offset = updateRange.start;\n\t\t\t\t\tattribute.updateRange.count = updateRange.count;\n\t\t\t\t\tattribute.needsUpdate = true;\n\t\t\t\t}\n\n\t\t\t\tthis.currentBatch.geometry.computeBoundingBox();\n\t\t\t\tthis.currentBatch.geometry.computeBoundingSphere();\n\n\t\t\t\tthis.currentBatch = this.createNewBatch();\n\t\t\t\tupdateRange = {\n\t\t\t\t\tstart: 0,\n\t\t\t\t\tcount: 0\n\t\t\t\t};\n\t\t\t}\n\n\t\t\ttruePos.set(\n\t\t\t\tdata.data.position[3 * i + 0] + this.trueOctree.position.x,\n\t\t\t\tdata.data.position[3 * i + 1] + this.trueOctree.position.y,\n\t\t\t\tdata.data.position[3 * i + 2] + this.trueOctree.position.z,\n\t\t\t);\n\n\t\t\tlet x = data.data.mileage[i];\n\t\t\tlet y = 0;\n\t\t\tlet z = truePos.z;\n\n\t\t\tprojectedBox.expandByPoint(new THREE.Vector3(x, y, z));\n\n\t\t\tlet index = updateRange.start + updateRange.count;\n\t\t\tlet geometry = this.currentBatch.geometry;\n\n\t\t\tfor(let attributeName of Object.keys(data.data)){\n\t\t\t\tlet source = data.data[attributeName];\n\t\t\t\tlet target = geometry.attributes[attributeName];\n\t\t\t\tlet numElements = target.itemSize;\n\t\t\t\t\n\t\t\t\tfor(let item = 0; item < numElements; item++){\n\t\t\t\t\ttarget.array[numElements * index + item] = source[numElements * i + item];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t{\n\t\t\t\tlet position = geometry.attributes.position;\n\n\t\t\t\tposition.array[3 * index + 0] = x;\n\t\t\t\tposition.array[3 * index + 1] = y;\n\t\t\t\tposition.array[3 * index + 2] = z;\n\t\t\t}\n\n\t\t\tupdateRange.count++;\n\t\t\tthis.currentBatch.geometry.drawRange.count++;\n\t\t}\n\n\t\tfor(let key of Object.keys(this.currentBatch.geometry.attributes)){\n\t\t\tlet attribute = this.currentBatch.geometry.attributes[key];\n\t\t\tattribute.updateRange.offset = updateRange.start;\n\t\t\tattribute.updateRange.count = updateRange.count;\n\t\t\tattribute.needsUpdate = true;\n\t\t}\n\n\t\tdata.projectedBox = projectedBox;\n\n\t\tthis.projectedBox = this.points.reduce( (a, i) => a.union(i.projectedBox), new THREE.Box3());\n\t}\n\n\tcreateNewBatch(data){\n\t\tlet geometry = new THREE.BufferGeometry();\n\n\t\t// create new batches with batch_size elements of the same type as the attribute\n\t\tfor(let attributeName of Object.keys(data.data)){\n\t\t\tlet buffer = data.data[attributeName];\n\t\t\tlet numElements = buffer.length / data.numPoints; // 3 for pos, 4 for col, 1 for scalars\n\t\t\tlet constructor = buffer.constructor;\n\t\t\tlet normalized = false;\n\t\t\t\n\t\t\tif(this.trueOctree.root.sceneNode){\n\t\t\t\tif(this.trueOctree.root.sceneNode.geometry.attributes[attributeName]){\n\t\t\t\t\tnormalized = this.trueOctree.root.sceneNode.geometry.attributes[attributeName].normalized;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\n\t\t\tlet batchBuffer = new constructor(numElements * this.batchSize);\n\n\t\t\tlet bufferAttribute = new THREE.BufferAttribute(batchBuffer, numElements, normalized);\n\t\t\tbufferAttribute.potree = {\n\t\t\t\trange: [0, 1],\n\t\t\t};\n\n\t\t\tgeometry.addAttribute(attributeName, bufferAttribute);\n\t\t}\n\n\t\tgeometry.drawRange.start = 0;\n\t\tgeometry.drawRange.count = 0;\n\n\t\tlet batch = new Batch(geometry, this.material);\n\n\t\tthis.visibleNodes.push(batch);\n\n\t\treturn batch;\n\t}\n\t\n\tcomputeVisibilityTextureData(){\n\t\tlet data = new Uint8Array(this.visibleNodes.length * 4);\n\t\tlet offsets = new Map();\n\n\t\tfor(let i = 0; i < this.visibleNodes.length; i++){\n\t\t\tlet node = this.visibleNodes[i];\n\n\t\t\toffsets[node] = i;\n\t\t}\n\n\n\t\treturn {\n\t\t\tdata: data,\n\t\t\toffsets: offsets,\n\t\t};\n\t}\n\n}\n\nexport class ProfileWindow extends EventDispatcher {\n\tconstructor (viewer) {\n\t\tsuper();\n\n\t\tthis.viewer = viewer;\n\t\tthis.elRoot = $('#profile_window');\n\t\tthis.renderArea = this.elRoot.find('#profileCanvasContainer');\n\t\tthis.svg = d3.select('svg#profileSVG');\n\t\tthis.mouseIsDown = false;\n\n\t\tthis.projectedBox = new THREE.Box3();\n\t\tthis.pointclouds = new Map();\n\t\tthis.numPoints = 0;\n\t\tthis.lastAddPointsTimestamp = undefined;\n\n\t\tthis.mouse = new THREE.Vector2(0, 0);\n\t\tthis.scale = new THREE.Vector3(1, 1, 1);\n\n\t\tthis.autoFitEnabled = true; // completely disable/enable\n\t\tthis.autoFit = false; // internal\n\n\t\tlet cwIcon = `${exports.resourcePath}/icons/arrow_cw.svg`;\n\t\t$('#potree_profile_rotate_cw').attr('src', cwIcon);\n\n\t\tlet ccwIcon = `${exports.resourcePath}/icons/arrow_ccw.svg`;\n\t\t$('#potree_profile_rotate_ccw').attr('src', ccwIcon);\n\t\t\n\t\tlet forwardIcon = `${exports.resourcePath}/icons/arrow_up.svg`;\n\t\t$('#potree_profile_move_forward').attr('src', forwardIcon);\n\n\t\tlet backwardIcon = `${exports.resourcePath}/icons/arrow_down.svg`;\n\t\t$('#potree_profile_move_backward').attr('src', backwardIcon);\n\n\t\tlet csvIcon = `${exports.resourcePath}/icons/file_csv_2d.svg`;\n\t\t$('#potree_download_csv_icon').attr('src', csvIcon);\n\n\t\tlet lasIcon = `${exports.resourcePath}/icons/file_las_3d.svg`;\n\t\t$('#potree_download_las_icon').attr('src', lasIcon);\n\n\t\tlet closeIcon = `${exports.resourcePath}/icons/close.svg`;\n\t\t$('#closeProfileContainer').attr(\"src\", closeIcon);\n\n\t\tthis.initTHREE();\n\t\tthis.initSVG();\n\t\tthis.initListeners();\n\n\t\tthis.pRenderer = new Renderer(this.renderer);\n\n\t\tthis.elRoot.i18n();\n\t}\n\n\tinitListeners () {\n\t\t$(window).resize(() => {\n\t\t\tif (this.enabled) {\n\t\t\tthis.render();\n\t\t\t}\n\t\t});\n\n\t\tthis.renderArea.mousedown(e => {\n\t\t\tthis.mouseIsDown = true;\n\t\t});\n\n\t\tthis.renderArea.mouseup(e => {\n\t\t\tthis.mouseIsDown = false;\n\t\t});\n\n\t\tlet viewerPickSphereSizeHandler = () => {\n\t\t\tlet camera = this.viewer.scene.getActiveCamera();\n\t\t\tlet domElement = this.viewer.renderer.domElement;\n\t\t\tlet distance = this.viewerPickSphere.position.distanceTo(camera.position);\n\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, domElement.clientWidth, domElement.clientHeight);\n\t\t\tlet scale = (10 / pr);\n\t\t\tthis.viewerPickSphere.scale.set(scale, scale, scale);\n\t\t};\n\n\t\tthis.renderArea.mousemove(e => {\n\t\t\tif (this.pointclouds.size === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet rect = this.renderArea[0].getBoundingClientRect();\n\t\t\tlet x = e.clientX - rect.left;\n\t\t\tlet y = e.clientY - rect.top;\n\n\t\t\tlet newMouse = new THREE.Vector2(x, y);\n\n\t\t\tif (this.mouseIsDown) {\n\t\t\t\t// DRAG\n\t\t\t\tthis.autoFit = false;\n\t\t\t\tthis.lastDrag = new Date().getTime();\n\n\t\t\t\tlet cPos = [this.scaleX.invert(this.mouse.x), this.scaleY.invert(this.mouse.y)];\n\t\t\t\tlet ncPos = [this.scaleX.invert(newMouse.x), this.scaleY.invert(newMouse.y)];\n\n\t\t\t\tthis.camera.position.x -= ncPos[0] - cPos[0];\n\t\t\t\tthis.camera.position.z -= ncPos[1] - cPos[1];\n\n\t\t\t\tthis.render();\n\t\t\t} else if (this.pointclouds.size > 0) {\n\t\t\t\t// FIND HOVERED POINT\n\t\t\t\tlet radius = Math.abs(this.scaleX.invert(0) - this.scaleX.invert(40));\n\t\t\t\tlet mileage = this.scaleX.invert(newMouse.x);\n\t\t\t\tlet elevation = this.scaleY.invert(newMouse.y);\n\n\t\t\t\tlet closest = this.selectPoint(mileage, elevation, radius);\n\n\t\t\t\tif (closest) {\n\t\t\t\t\tlet point = closest.point;\n\n\t\t\t\t\tlet position = new Float64Array([\n\t\t\t\t\t\tpoint.position[0] + closest.pointcloud.position.x,\n\t\t\t\t\t\tpoint.position[1] + closest.pointcloud.position.y,\n\t\t\t\t\t\tpoint.position[2] + closest.pointcloud.position.z\n\t\t\t\t\t]);\n\n\t\t\t\t\tthis.elRoot.find('#profileSelectionProperties').fadeIn(200);\n\t\t\t\t\tthis.pickSphere.visible = true;\n\t\t\t\t\tthis.pickSphere.scale.set(0.5 * radius, 0.5 * radius, 0.5 * radius);\n\t\t\t\t\tthis.pickSphere.position.set(point.mileage, 0, position[2]);\n\n\t\t\t\t\tthis.viewerPickSphere.position.set(...position);\n\t\t\t\t\t\n\t\t\t\t\tif(!this.viewer.scene.scene.children.includes(this.viewerPickSphere)){\n\t\t\t\t\t\tthis.viewer.scene.scene.add(this.viewerPickSphere);\n\t\t\t\t\t\tif(!this.viewer.hasEventListener(\"update\", viewerPickSphereSizeHandler)){\n\t\t\t\t\t\t\tthis.viewer.addEventListener(\"update\", viewerPickSphereSizeHandler);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\n\t\t\t\t\tlet info = this.elRoot.find('#profileSelectionProperties');\n\t\t\t\t\tlet html = '';\n\n\t\t\t\t\tfor (let attributeName of Object.keys(point)) {\n\n\t\t\t\t\t\tlet value = point[attributeName];\n\t\t\t\t\t\tlet attribute = closest.pointcloud.getAttribute(attributeName);\n\n\t\t\t\t\t\tlet transform = value => value;\n\t\t\t\t\t\tif(attribute && attribute.type.size > 4){\n\t\t\t\t\t\t\tlet range = attribute.initialRange;\n\t\t\t\t\t\t\tlet scale = 1 / (range[1] - range[0]);\n\t\t\t\t\t\t\tlet offset = range[0];\n\t\t\t\t\t\t\ttransform = value => value / scale + offset;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\n\t\t\t\t\t\tif (attributeName === 'position') {\n\t\t\t\t\t\t\tlet values = [...position].map(v => Utils.addCommas(v.toFixed(3)));\n\t\t\t\t\t\t\thtml += `\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t`;\n\t\t\t\t\t\t} else if (attributeName === 'rgba') {\n\t\t\t\t\t\t\thtml += `\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t`;\n\t\t\t\t\t\t} else if (attributeName === 'normal') {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t} else if (attributeName === 'mileage') {\n\t\t\t\t\t\t\thtml += `\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t`;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\thtml += `\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t`;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\thtml += '
        x${values[0]}
        y${values[1]}
        z${values[2]}
        ${attributeName}${value.join(', ')}
        ${attributeName}${value.toFixed(3)}
        ${attributeName}${transform(value)}
        ';\n\t\t\t\t\tinfo.html(html);\n\n\t\t\t\t\tthis.selectedPoint = point;\n\t\t\t\t} else {\n\t\t\t\t\t// this.pickSphere.visible = false;\n\t\t\t\t\t// this.selectedPoint = null;\n\n\t\t\t\t\tthis.viewer.scene.scene.add(this.viewerPickSphere);\n\n\t\t\t\t\tlet index = this.viewer.scene.scene.children.indexOf(this.viewerPickSphere);\n\t\t\t\t\tif(index >= 0){\n\t\t\t\t\t\tthis.viewer.scene.scene.children.splice(index, 1);\n\t\t\t\t\t}\n\t\t\t\t\tthis.viewer.removeEventListener(\"update\", viewerPickSphereSizeHandler);\n\t\t\t\t\t\n\n\t\t\t\t}\n\t\t\t\tthis.render();\n\t\t\t}\n\n\t\t\tthis.mouse.copy(newMouse);\n\t\t});\n\n\t\tlet onWheel = e => {\n\t\t\tthis.autoFit = false;\n\n\t\t\tlet delta = 0;\n\t\t\tif (e.wheelDelta !== undefined) { // WebKit / Opera / Explorer 9\n\t\t\t\tdelta = e.wheelDelta;\n\t\t\t} else if (e.detail !== undefined) { // Firefox\n\t\t\t\tdelta = -e.detail;\n\t\t\t}\n\n\t\t\tlet ndelta = Math.sign(delta);\n\n\t\t\tlet cPos = [this.scaleX.invert(this.mouse.x), this.scaleY.invert(this.mouse.y)];\n\n\t\t\tif (ndelta > 0) {\n\t\t\t\t// + 10%\n\t\t\t\tthis.scale.multiplyScalar(1.1);\n\t\t\t} else {\n\t\t\t\t// - 10%\n\t\t\t\tthis.scale.multiplyScalar(100 / 110);\n\t\t\t}\n\n\t\t\tthis.updateScales();\n\t\t\tlet ncPos = [this.scaleX.invert(this.mouse.x), this.scaleY.invert(this.mouse.y)];\n\n\t\t\tthis.camera.position.x -= ncPos[0] - cPos[0];\n\t\t\tthis.camera.position.z -= ncPos[1] - cPos[1];\n\n\t\t\tthis.render();\n\t\t\tthis.updateScales();\n\t\t};\n\t\t$(this.renderArea)[0].addEventListener('mousewheel', onWheel, false);\n\t\t$(this.renderArea)[0].addEventListener('DOMMouseScroll', onWheel, false); // Firefox\n\n\t\t$('#closeProfileContainer').click(() => {\n\t\t\tthis.hide();\n\t\t});\n\n\t\tlet getProfilePoints = () => {\n\t\t\tlet points = new Points();\n\t\t\t\n\t\t\tfor(let [pointcloud, entry] of this.pointclouds){\n\t\t\t\tfor(let pointSet of entry.points){\n\n\t\t\t\t\tlet originPos = pointSet.data.position;\n\t\t\t\t\tlet trueElevationPosition = new Float32Array(originPos);\n\t\t\t\t\tfor(let i = 0; i < pointSet.numPoints; i++){\n\t\t\t\t\t\ttrueElevationPosition[3 * i + 2] += pointcloud.position.z;\n\t\t\t\t\t}\n\n\t\t\t\t\tpointSet.data.position = trueElevationPosition;\n\t\t\t\t\tpoints.add(pointSet);\n\t\t\t\t\tpointSet.data.position = originPos;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn points;\n\t\t};\n\n\t\t$('#potree_download_csv_icon').click(() => {\n\t\t\t\n\t\t\tlet points = getProfilePoints();\n\n\t\t\tlet string = CSVExporter.toString(points);\n\n\t\t\tlet blob = new Blob([string], {type: \"text/string\"});\n\t\t\t$('#potree_download_profile_ortho_link').attr('href', URL.createObjectURL(blob));\n\t\t});\n\n\t\t$('#potree_download_las_icon').click(() => {\n\n\t\t\tlet points = getProfilePoints();\n\n\t\t\tlet buffer = LASExporter.toLAS(points);\n\n\t\t\tlet blob = new Blob([buffer], {type: \"application/octet-binary\"});\n\t\t\t$('#potree_download_profile_link').attr('href', URL.createObjectURL(blob));\n\t\t});\n\t}\n\n\tselectPoint (mileage, elevation, radius) {\n\t\tlet closest = {\n\t\t\tdistance: Infinity,\n\t\t\tpointcloud: null,\n\t\t\tpoints: null,\n\t\t\tindex: null\n\t\t};\n\n\t\tlet pointBox = new THREE.Box2(\n\t\t\tnew THREE.Vector2(mileage - radius, elevation - radius),\n\t\t\tnew THREE.Vector2(mileage + radius, elevation + radius));\n\n\t\tlet numTested = 0;\n\t\tlet numSkipped = 0;\n\t\tlet numTestedPoints = 0;\n\t\tlet numSkippedPoints = 0;\n\n\t\tfor (let [pointcloud, entry] of this.pointclouds) {\n\t\t\tfor(let points of entry.points){\n\n\t\t\t\tlet collisionBox = new THREE.Box2(\n\t\t\t\t\tnew THREE.Vector2(points.projectedBox.min.x, points.projectedBox.min.z),\n\t\t\t\t\tnew THREE.Vector2(points.projectedBox.max.x, points.projectedBox.max.z)\n\t\t\t\t);\n\n\t\t\t\tlet intersects = collisionBox.intersectsBox(pointBox);\n\n\t\t\t\tif(!intersects){\n\t\t\t\t\tnumSkipped++;\n\t\t\t\t\tnumSkippedPoints += points.numPoints;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tnumTested++;\n\t\t\t\tnumTestedPoints += points.numPoints\n\n\t\t\t\tfor (let i = 0; i < points.numPoints; i++) {\n\n\t\t\t\t\tlet m = points.data.mileage[i] - mileage;\n\t\t\t\t\tlet e = points.data.position[3 * i + 2] - elevation + pointcloud.position.z;\n\t\t\t\t\tlet r = Math.sqrt(m * m + e * e);\n\n\t\t\t\t\tconst withinDistance = r < radius && r < closest.distance;\n\t\t\t\t\tlet unfilteredClass = true;\n\n\t\t\t\t\tif(points.data.classification){\n\t\t\t\t\t\tconst classification = pointcloud.material.classification;\n\n\t\t\t\t\t\tconst pointClassID = points.data.classification[i];\n\t\t\t\t\t\tconst pointClassValue = classification[pointClassID];\n\n\t\t\t\t\t\tif(pointClassValue && (!pointClassValue.visible || pointClassValue.color.w === 0)){\n\t\t\t\t\t\t\tunfilteredClass = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (withinDistance && unfilteredClass) {\n\t\t\t\t\t\tclosest = {\n\t\t\t\t\t\t\tdistance: r,\n\t\t\t\t\t\t\tpointcloud: pointcloud,\n\t\t\t\t\t\t\tpoints: points,\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t\t//console.log(`nodes: ${numTested}, ${numSkipped} || points: ${numTestedPoints}, ${numSkippedPoints}`);\n\n\t\tif (closest.distance < Infinity) {\n\t\t\tlet points = closest.points;\n\n\t\t\tlet point = {};\n\n\t\t\tlet attributes = Object.keys(points.data);\n\t\t\tfor (let attribute of attributes) {\n\t\t\t\tlet attributeData = points.data[attribute];\n\t\t\t\tlet itemSize = attributeData.length / points.numPoints;\n\t\t\t\tlet value = attributeData.subarray(itemSize * closest.index, itemSize * closest.index + itemSize);\n\n\t\t\t\tif (value.length === 1) {\n\t\t\t\t\tpoint[attribute] = value[0];\n\t\t\t\t} else {\n\t\t\t\t\tpoint[attribute] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tclosest.point = point;\n\n\t\t\treturn closest;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tinitTHREE () {\n\t\tthis.renderer = new THREE.WebGLRenderer({alpha: true, premultipliedAlpha: false});\n\t\tthis.renderer.setClearColor(0x000000, 0);\n\t\tthis.renderer.setSize(10, 10);\n\t\tthis.renderer.autoClear = false;\n\t\tthis.renderArea.append($(this.renderer.domElement));\n\t\tthis.renderer.domElement.tabIndex = '2222';\n\t\t$(this.renderer.domElement).css('width', '100%');\n\t\t$(this.renderer.domElement).css('height', '100%');\n\n\n\t\t{\n\t\t\tlet gl = this.renderer.getContext();\n\n\t\t\tlet extVAO = gl.getExtension('OES_vertex_array_object');\n\n\t\t\tif(!extVAO){\n\t\t\t\tthrow new Error(\"OES_vertex_array_object extension not supported\");\n\t\t\t}\n\n\t\t\tgl.createVertexArray = extVAO.createVertexArrayOES.bind(extVAO);\n\t\t\tgl.bindVertexArray = extVAO.bindVertexArrayOES.bind(extVAO);\n\t\t}\n\n\t\tthis.camera = new THREE.OrthographicCamera(-1000, 1000, 1000, -1000, -1000, 1000);\n\t\tthis.camera.up.set(0, 0, 1);\n\t\tthis.camera.rotation.order = \"ZXY\";\n\t\tthis.camera.rotation.x = Math.PI / 2.0;\n\t\n\n\t\tthis.scene = new THREE.Scene();\n\t\tthis.profileScene = new THREE.Scene();\n\n\t\tlet sg = new THREE.SphereGeometry(1, 16, 16);\n\t\tlet sm = new THREE.MeshNormalMaterial();\n\t\tthis.pickSphere = new THREE.Mesh(sg, sm);\n\t\tthis.scene.add(this.pickSphere);\n\n\t\t{\n\t\t\tconst sg = new THREE.SphereGeometry(2);\n\t\t\tconst sm = new THREE.MeshNormalMaterial();\n\t\t\tconst s = new THREE.Mesh(sg, sm);\n\n\t\t\ts.position.set(589530.450, 231398.860, 769.735);\n\n\t\t\tthis.scene.add(s);\n\t\t}\n\n\t\tthis.viewerPickSphere = new THREE.Mesh(sg, sm);\n\t}\n\n\tinitSVG () {\n\t\tlet width = this.renderArea[0].clientWidth;\n\t\tlet height = this.renderArea[0].clientHeight;\n\t\tlet marginLeft = this.renderArea[0].offsetLeft;\n\n\t\tthis.svg.selectAll('*').remove();\n\n\t\tthis.scaleX = d3.scale.linear()\n\t\t\t.domain([this.camera.left + this.camera.position.x, this.camera.right + this.camera.position.x])\n\t\t\t.range([0, width]);\n\t\tthis.scaleY = d3.scale.linear()\n\t\t\t.domain([this.camera.bottom + this.camera.position.z, this.camera.top + this.camera.position.z])\n\t\t\t.range([height, 0]);\n\n\t\tthis.xAxis = d3.svg.axis()\n\t\t\t.scale(this.scaleX)\n\t\t\t.orient('bottom')\n\t\t\t.innerTickSize(-height)\n\t\t\t.outerTickSize(1)\n\t\t\t.tickPadding(10)\n\t\t\t.ticks(width / 50);\n\n\t\tthis.yAxis = d3.svg.axis()\n\t\t\t.scale(this.scaleY)\n\t\t\t.orient('left')\n\t\t\t.innerTickSize(-width)\n\t\t\t.outerTickSize(1)\n\t\t\t.tickPadding(10)\n\t\t\t.ticks(height / 20);\n\n\t\tthis.elXAxis = this.svg.append('g')\n\t\t\t.attr('class', 'x axis')\n\t\t\t.attr('transform', `translate(${marginLeft}, ${height})`)\n\t\t\t.call(this.xAxis);\n\n\t\tthis.elYAxis = this.svg.append('g')\n\t\t\t.attr('class', 'y axis')\n\t\t\t.attr('transform', `translate(${marginLeft}, 0)`)\n\t\t\t.call(this.yAxis);\n\t}\n\n\taddPoints (pointcloud, points) {\n\n\t\tif(points.numPoints === 0){\n\t\t\treturn;\n\t\t}\n\n\t\tlet entry = this.pointclouds.get(pointcloud);\n\t\tif(!entry){\n\t\t\tentry = new ProfileFakeOctree(pointcloud);\n\t\t\tthis.pointclouds.set(pointcloud, entry);\n\t\t\tthis.profileScene.add(entry);\n\n\t\t\tlet materialChanged = () => {\n\t\t\t\tthis.render();\n\t\t\t};\n\n\t\t\tmaterialChanged();\n\n\t\t\tpointcloud.material.addEventListener('material_property_changed', materialChanged);\n\t\t\tthis.addEventListener(\"on_reset_once\", () => {\n\t\t\t\tpointcloud.material.removeEventListener('material_property_changed', materialChanged);\n\t\t\t});\n\t\t}\n\n\t\tentry.addPoints(points);\n\t\tthis.projectedBox.union(entry.projectedBox);\n\n\t\tif (this.autoFit && this.autoFitEnabled) { \n\t\t\tlet width = this.renderArea[0].clientWidth;\n\t\t\tlet height = this.renderArea[0].clientHeight;\n\n\t\t\tlet size = this.projectedBox.getSize(new THREE.Vector3());\n\n\t\t\tlet sx = width / size.x;\n\t\t\tlet sy = height / size.z;\n\t\t\tlet scale = Math.min(sx, sy);\n\n\t\t\tlet center = this.projectedBox.getCenter(new THREE.Vector3());\n\t\t\tthis.scale.set(scale, scale, 1);\n\t\t\tthis.camera.position.copy(center);\n\n\t\t\t//console.log(\"camera: \", this.camera.position.toArray().join(\", \"));\n\t\t}\n\n\t\t//console.log(entry);\n\n\t\tthis.render();\n\n\t\tlet numPoints = 0;\n\t\tfor (let [key, value] of this.pointclouds.entries()) {\n\t\t\tnumPoints += value.points.reduce( (a, i) => a + i.numPoints, 0);\n\t\t}\n\t\t$(`#profile_num_points`).html(Utils.addCommas(numPoints));\n\n\t}\n\n\treset () {\n\t\tthis.lastReset = new Date().getTime();\n\n\t\tthis.dispatchEvent({type: \"on_reset_once\"});\n\t\tthis.removeEventListeners(\"on_reset_once\");\n\n\t\tthis.autoFit = true;\n\t\tthis.projectedBox = new THREE.Box3();\n\n\t\tfor(let [key, entry] of this.pointclouds){\n\t\t\tentry.dispose();\n\t\t}\n\n\t\tthis.pointclouds.clear();\n\t\tthis.mouseIsDown = false;\n\t\tthis.mouse.set(0, 0);\n\n\t\tif(this.autoFitEnabled){\n\t\t\tthis.scale.set(1, 1, 1);\n\t\t}\n\t\tthis.pickSphere.visible = false;\n\n\t\tthis.elRoot.find('#profileSelectionProperties').hide();\n\n\t\tthis.render();\n\t}\n\n\tshow () {\n\t\tthis.elRoot.fadeIn();\n\t\tthis.enabled = true;\n\t}\n\n\thide () {\n\t\tthis.elRoot.fadeOut();\n\t\tthis.enabled = false;\n\t}\n\n\tupdateScales () {\n\n\t\tlet width = this.renderArea[0].clientWidth;\n\t\tlet height = this.renderArea[0].clientHeight;\n\n\t\tlet left = (-width / 2) / this.scale.x;\n\t\tlet right = (+width / 2) / this.scale.x;\n\t\tlet top = (+height / 2) / this.scale.y;\n\t\tlet bottom = (-height / 2) / this.scale.y;\n\n\t\tthis.camera.left = left;\n\t\tthis.camera.right = right;\n\t\tthis.camera.top = top;\n\t\tthis.camera.bottom = bottom;\n\t\tthis.camera.updateProjectionMatrix();\n\n\t\tthis.scaleX.domain([this.camera.left + this.camera.position.x, this.camera.right + this.camera.position.x])\n\t\t\t.range([0, width]);\n\t\tthis.scaleY.domain([this.camera.bottom + this.camera.position.z, this.camera.top + this.camera.position.z])\n\t\t\t.range([height, 0]);\n\n\t\tlet marginLeft = this.renderArea[0].offsetLeft;\n\n\t\tthis.xAxis.scale(this.scaleX)\n\t\t\t.orient('bottom')\n\t\t\t.innerTickSize(-height)\n\t\t\t.outerTickSize(1)\n\t\t\t.tickPadding(10)\n\t\t\t.ticks(width / 50);\n\t\tthis.yAxis.scale(this.scaleY)\n\t\t\t.orient('left')\n\t\t\t.innerTickSize(-width)\n\t\t\t.outerTickSize(1)\n\t\t\t.tickPadding(10)\n\t\t\t.ticks(height / 20);\n\n\n\t\tthis.elXAxis\n\t\t\t.attr('transform', `translate(${marginLeft}, ${height})`)\n\t\t\t.call(this.xAxis);\n\t\tthis.elYAxis\n\t\t\t.attr('transform', `translate(${marginLeft}, 0)`)\n\t\t\t.call(this.yAxis);\n\t}\n\n\trequestScaleUpdate(){\n\n\t\tlet threshold = 100;\n\t\tlet allowUpdate = ((this.lastReset === undefined) || (this.lastScaleUpdate === undefined)) \n\t\t\t|| ((new Date().getTime() - this.lastReset) > threshold && (new Date().getTime() - this.lastScaleUpdate) > threshold);\n\n\t\tif(allowUpdate){\n\n\t\t\tthis.updateScales();\n\n\t\t\tthis.lastScaleUpdate = new Date().getTime();\n\n\t\t\t\n\n\t\t\tthis.scaleUpdatePending = false;\n\t\t}else if(!this.scaleUpdatePending) {\n\t\t\tsetTimeout(this.requestScaleUpdate.bind(this), 100);\n\t\t\tthis.scaleUpdatePending = true;\n\t\t}\n\t\t\n\t}\n\n\trender () {\n\t\tlet width = this.renderArea[0].clientWidth;\n\t\tlet height = this.renderArea[0].clientHeight;\n\n\t\tlet {renderer, pRenderer, camera, profileScene, scene} = this;\n\t\tlet {scaleX, pickSphere} = this;\n\n\t\trenderer.setSize(width, height);\n\n\t\trenderer.setClearColor(0x000000, 0);\n\t\trenderer.clear(true, true, false);\n\n\t\tfor(let pointcloud of this.pointclouds.keys()){\n\t\t\tlet source = pointcloud.material;\n\t\t\tlet target = this.pointclouds.get(pointcloud).material;\n\t\t\t\n\t\t\tcopyMaterial(source, target);\n\t\t\ttarget.size = 2;\n\t\t}\n\t\t\n\t\tpRenderer.render(profileScene, camera, null);\n\n\t\tlet radius = Math.abs(scaleX.invert(0) - scaleX.invert(5));\n\n\t\tif (radius === 0) {\n\t\t\tpickSphere.visible = false;\n\t\t} else {\n\t\t\tpickSphere.scale.set(radius, radius, radius);\n\t\t\tpickSphere.visible = true;\n\t\t}\n\t\t\n\t\trenderer.render(scene, camera);\n\n\t\tthis.requestScaleUpdate();\n\t}\n};\n\nexport class ProfileWindowController {\n\tconstructor (viewer) {\n\t\tthis.viewer = viewer;\n\t\tthis.profileWindow = viewer.profileWindow;\n\t\tthis.profile = null;\n\t\tthis.numPoints = 0;\n\t\tthis.threshold = 60 * 1000;\n\t\tthis.rotateAmount = 10;\n\n\t\tthis.scheduledRecomputeTime = null;\n\n\t\tthis.enabled = true;\n\n\t\tthis.requests = [];\n\n\t\tthis._recompute = () => { this.recompute(); };\n\n\t\tthis.viewer.addEventListener(\"scene_changed\", e => {\n\t\t\te.oldScene.removeEventListener(\"pointcloud_added\", this._recompute);\n\t\t\te.scene.addEventListener(\"pointcloud_added\", this._recompute);\n\t\t});\n\t\tthis.viewer.scene.addEventListener(\"pointcloud_added\", this._recompute);\n\n\t\t$(\"#potree_profile_rotate_amount\").val(parseInt(this.rotateAmount));\n\t\t$(\"#potree_profile_rotate_amount\").on(\"input\", (e) => {\n\t\t\tconst str = $(\"#potree_profile_rotate_amount\").val();\n\n\t\t\tif(!isNaN(str)){\n\t\t\t\tconst value = parseFloat(str);\n\t\t\t\tthis.rotateAmount = value;\n\t\t\t\t$(\"#potree_profile_rotate_amount\").css(\"background-color\", \"\")\n\t\t\t}else{\n\t\t\t\t$(\"#potree_profile_rotate_amount\").css(\"background-color\", \"#ff9999\")\n\t\t\t}\n\n\t\t});\n\n\t\tconst rotate = (radians) => {\n\t\t\tconst profile = this.profile;\n\t\t\tconst points = profile.points;\n\t\t\tconst start = points[0];\n\t\t\tconst end = points[points.length - 1];\n\t\t\tconst center = start.clone().add(end).multiplyScalar(0.5);\n\n\t\t\tconst mMoveOrigin = new THREE.Matrix4().makeTranslation(-center.x, -center.y, -center.z);\n\t\t\tconst mRotate = new THREE.Matrix4().makeRotationZ(radians);\n\t\t\tconst mMoveBack = new THREE.Matrix4().makeTranslation(center.x, center.y, center.z);\n\t\t\t//const transform = mMoveOrigin.multiply(mRotate).multiply(mMoveBack);\n\t\t\tconst transform = mMoveBack.multiply(mRotate).multiply(mMoveOrigin);\n\n\t\t\tconst rotatedPoints = points.map( point => point.clone().applyMatrix4(transform) );\n\n\t\t\tthis.profileWindow.autoFitEnabled = false;\n\n\t\t\tfor(let i = 0; i < points.length; i++){\n\t\t\t\tprofile.setPosition(i, rotatedPoints[i]);\n\t\t\t}\n\t\t}\n\n\t\t$(\"#potree_profile_rotate_cw\").click( () => {\n\t\t\tconst radians = THREE.Math.degToRad(this.rotateAmount);\n\t\t\trotate(-radians);\n\t\t});\n\n\t\t$(\"#potree_profile_rotate_ccw\").click( () => {\n\t\t\tconst radians = THREE.Math.degToRad(this.rotateAmount);\n\t\t\trotate(radians);\n\t\t});\n\n\t\t$(\"#potree_profile_move_forward\").click( () => {\n\t\t\tconst profile = this.profile;\n\t\t\tconst points = profile.points;\n\t\t\tconst start = points[0];\n\t\t\tconst end = points[points.length - 1];\n\n\t\t\tconst dir = end.clone().sub(start).normalize();\n\t\t\tconst up = new THREE.Vector3(0, 0, 1);\n\t\t\tconst forward = up.cross(dir);\n\t\t\tconst move = forward.clone().multiplyScalar(profile.width / 2);\n\n\t\t\tthis.profileWindow.autoFitEnabled = false;\n\n\t\t\tfor(let i = 0; i < points.length; i++){\n\t\t\t\tprofile.setPosition(i, points[i].clone().add(move));\n\t\t\t}\n\t\t});\n\n\t\t$(\"#potree_profile_move_backward\").click( () => {\n\t\t\tconst profile = this.profile;\n\t\t\tconst points = profile.points;\n\t\t\tconst start = points[0];\n\t\t\tconst end = points[points.length - 1];\n\n\t\t\tconst dir = end.clone().sub(start).normalize();\n\t\t\tconst up = new THREE.Vector3(0, 0, 1);\n\t\t\tconst forward = up.cross(dir);\n\t\t\tconst move = forward.clone().multiplyScalar(-profile.width / 2);\n\n\t\t\tthis.profileWindow.autoFitEnabled = false;\n\n\t\t\tfor(let i = 0; i < points.length; i++){\n\t\t\t\tprofile.setPosition(i, points[i].clone().add(move));\n\t\t\t}\n\t\t});\n\t}\n\n\tsetProfile (profile) {\n\t\tif (this.profile !== null && this.profile !== profile) {\n\t\t\tthis.profile.removeEventListener('marker_moved', this._recompute);\n\t\t\tthis.profile.removeEventListener('marker_added', this._recompute);\n\t\t\tthis.profile.removeEventListener('marker_removed', this._recompute);\n\t\t\tthis.profile.removeEventListener('width_changed', this._recompute);\n\t\t}\n\n\t\tthis.profile = profile;\n\n\t\t{\n\t\t\tthis.profile.addEventListener('marker_moved', this._recompute);\n\t\t\tthis.profile.addEventListener('marker_added', this._recompute);\n\t\t\tthis.profile.addEventListener('marker_removed', this._recompute);\n\t\t\tthis.profile.addEventListener('width_changed', this._recompute);\n\t\t}\n\n\t\tthis.recompute();\n\t}\n\n\treset () {\n\t\tthis.profileWindow.reset();\n\n\t\tthis.numPoints = 0;\n\n\t\tif (this.profile) {\n\t\t\tfor (let request of this.requests) {\n\t\t\t\trequest.cancel();\n\t\t\t}\n\t\t}\n\t}\n\n\tprogressHandler (pointcloud, progress) {\n\t\tfor (let segment of progress.segments) {\n\t\t\tthis.profileWindow.addPoints(pointcloud, segment.points);\n\t\t\tthis.numPoints += segment.points.numPoints;\n\t\t}\n\t}\n\n\tcancel () {\n\t\tfor (let request of this.requests) {\n\t\t\trequest.cancel();\n\t\t\t// request.finishLevelThenCancel();\n\t\t}\n\n\t\tthis.requests = [];\n\t};\n\n\tfinishLevelThenCancel(){\n\t\tfor (let request of this.requests) {\n\t\t\trequest.finishLevelThenCancel();\n\t\t}\n\n\t\tthis.requests = [];\n\t}\n\n\trecompute () {\n\t\tif (!this.profile) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.scheduledRecomputeTime !== null && this.scheduledRecomputeTime > new Date().getTime()) {\n\t\t\treturn;\n\t\t} else {\n\t\t\tthis.scheduledRecomputeTime = new Date().getTime() + 100;\n\t\t}\n\t\tthis.scheduledRecomputeTime = null;\n\n\t\tthis.reset();\n\n\t\tfor (let pointcloud of this.viewer.scene.pointclouds.filter(p => p.visible)) {\n\t\t\tlet request = pointcloud.getPointsInProfile(this.profile, null, {\n\t\t\t\t'onProgress': (event) => {\n\t\t\t\t\tif (!this.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.progressHandler(pointcloud, event.points);\n\n\t\t\t\t\tif (this.numPoints > this.threshold) {\n\t\t\t\t\t\tthis.finishLevelThenCancel();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'onFinish': (event) => {\n\t\t\t\t\tif (!this.enabled) {\n\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'onCancel': () => {\n\t\t\t\t\tif (!this.enabled) {\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.requests.push(request);\n\t\t}\n\t}\n};\n","/**\n *\n * @author sigeom sa / http://sigeom.ch\n * @author Ioda-Net Sàrl / https://www.ioda-net.ch/\n * @author Markus Schütz / http://potree.org\n *\n */\n\nimport {Measure} from \"../utils/Measure.js\";\n\nexport class GeoJSONExporter{\n\n\tstatic measurementToFeatures (measurement) {\n\t\tlet coords = measurement.points.map(e => e.position.toArray());\n\n\t\tlet features = [];\n\n\t\tif (coords.length === 1) {\n\t\t\tlet feature = {\n\t\t\t\ttype: 'Feature',\n\t\t\t\tgeometry: {\n\t\t\t\t\ttype: 'Point',\n\t\t\t\t\tcoordinates: coords[0]\n\t\t\t\t},\n\t\t\t\tproperties: {\n\t\t\t\t\tname: measurement.name\n\t\t\t\t}\n\t\t\t};\n\t\t\tfeatures.push(feature);\n\t\t} else if (coords.length > 1 && !measurement.closed) {\n\t\t\tlet object = {\n\t\t\t\t'type': 'Feature',\n\t\t\t\t'geometry': {\n\t\t\t\t\t'type': 'LineString',\n\t\t\t\t\t'coordinates': coords\n\t\t\t\t},\n\t\t\t\t'properties': {\n\t\t\t\t\tname: measurement.name\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfeatures.push(object);\n\t\t} else if (coords.length > 1 && measurement.closed) {\n\t\t\tlet object = {\n\t\t\t\t'type': 'Feature',\n\t\t\t\t'geometry': {\n\t\t\t\t\t'type': 'Polygon',\n\t\t\t\t\t'coordinates': [[...coords, coords[0]]]\n\t\t\t\t},\n\t\t\t\t'properties': {\n\t\t\t\t\tname: measurement.name\n\t\t\t\t}\n\t\t\t};\n\t\t\tfeatures.push(object);\n\t\t}\n\n\t\tif (measurement.showDistances) {\n\t\t\tmeasurement.edgeLabels.forEach((label) => {\n\t\t\t\tlet labelPoint = {\n\t\t\t\t\ttype: 'Feature',\n\t\t\t\t\tgeometry: {\n\t\t\t\t\t\ttype: 'Point',\n\t\t\t\t\t\tcoordinates: label.position.toArray()\n\t\t\t\t\t},\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tdistance: label.text\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tfeatures.push(labelPoint);\n\t\t\t});\n\t\t}\n\n\t\tif (measurement.showArea) {\n\t\t\tlet point = measurement.areaLabel.position;\n\t\t\tlet labelArea = {\n\t\t\t\ttype: 'Feature',\n\t\t\t\tgeometry: {\n\t\t\t\t\ttype: 'Point',\n\t\t\t\t\tcoordinates: point.toArray()\n\t\t\t\t},\n\t\t\t\tproperties: {\n\t\t\t\t\tarea: measurement.areaLabel.text\n\t\t\t\t}\n\t\t\t};\n\t\t\tfeatures.push(labelArea);\n\t\t}\n\n\t\treturn features;\n\t}\n\n\tstatic toString (measurements) {\n\t\tif (!(measurements instanceof Array)) {\n\t\t\tmeasurements = [measurements];\n\t\t}\n\n\t\tmeasurements = measurements.filter(m => m instanceof Measure);\n\n\t\tlet features = [];\n\t\tfor (let measure of measurements) {\n\t\t\tlet f = GeoJSONExporter.measurementToFeatures(measure);\n\n\t\t\tfeatures = features.concat(f);\n\t\t}\n\n\t\tlet geojson = {\n\t\t\t'type': 'FeatureCollection',\n\t\t\t'features': features\n\t\t};\n\n\t\treturn JSON.stringify(geojson, null, '\\t');\n\t}\n\n}\n","/**\n *\n * @author sigeom sa / http://sigeom.ch\n * @author Ioda-Net Sàrl / https://www.ioda-net.ch/\n * @author Markus Schuetz / http://potree.org\n *\n */\n\nimport {Measure} from \"../utils/Measure.js\";\n\nexport class DXFExporter {\n\n\tstatic measurementPointSection (measurement) {\n\t\tlet position = measurement.points[0].position;\n\n\t\tif (!position) {\n\t\t\treturn '';\n\t\t}\n\n\t\tlet dxfSection = `0\nCIRCLE\n8\nlayer_point\n10\n${position.x}\n20\n${position.y}\n30\n${position.z}\n40\n1.0\n`;\n\n\t\treturn dxfSection;\n\t}\n\n\tstatic measurementPolylineSection (measurement) {\n\t\t// bit code for polygons/polylines:\n\t\t// https://www.autodesk.com/techpubs/autocad/acad2000/dxf/polyline_dxf_06.htm\n\t\tlet geomCode = 8;\n\t\tif (measurement.closed) {\n\t\t\tgeomCode += 1;\n\t\t}\n\n\t\tlet dxfSection = `0\nPOLYLINE\n8\nlayer_polyline\n62\n1\n66\n1\n10\n0.0\n20\n0.0\n30\n0.0\n70\n${geomCode}\n`;\n\n\t\tlet xMax = 0.0;\n\t\tlet yMax = 0.0;\n\t\tlet zMax = 0.0;\n\t\tfor (let point of measurement.points) {\n\t\t\tpoint = point.position;\n\t\t\txMax = Math.max(xMax, point.x);\n\t\t\tyMax = Math.max(yMax, point.y);\n\t\t\tzMax = Math.max(zMax, point.z);\n\n\t\t\tdxfSection += `0\nVERTEX\n8\n0\n10\n${point.x}\n20\n${point.y}\n30\n${point.z}\n70\n32\n`;\n\t\t}\n\t\tdxfSection += `0\nSEQEND\n`;\n\n\t\treturn dxfSection;\n\t}\n\n\tstatic measurementSection (measurement) {\n\t\t// if(measurement.points.length <= 1){\n\t\t//\treturn \"\";\n\t\t// }\n\n\t\tif (measurement.points.length === 0) {\n\t\t\treturn '';\n\t\t} else if (measurement.points.length === 1) {\n\t\t\treturn DXFExporter.measurementPointSection(measurement);\n\t\t} else if (measurement.points.length >= 2) {\n\t\t\treturn DXFExporter.measurementPolylineSection(measurement);\n\t\t}\n\t}\n\n\tstatic toString(measurements){\n\t\tif (!(measurements instanceof Array)) {\n\t\t\tmeasurements = [measurements];\n\t\t}\n\t\tmeasurements = measurements.filter(m => m instanceof Measure);\n\n\t\tlet points = measurements.filter(m => (m instanceof Measure))\n\t\t\t.map(m => m.points)\n\t\t\t.reduce((a, v) => a.concat(v))\n\t\t\t.map(p => p.position);\n\n\t\tlet min = new THREE.Vector3(Infinity, Infinity, Infinity);\n\t\tlet max = new THREE.Vector3(-Infinity, -Infinity, -Infinity);\n\t\tfor (let point of points) {\n\t\t\tmin.min(point);\n\t\t\tmax.max(point);\n\t\t}\n\n\t\tlet dxfHeader = `999\nDXF created from potree\n0\nSECTION\n2\nHEADER\n9\n$ACADVER\n1\nAC1006\n9\n$INSBASE\n10\n0.0\n20\n0.0\n30\n0.0\n9\n$EXTMIN\n10\n${min.x}\n20\n${min.y}\n30\n${min.z}\n9\n$EXTMAX\n10\n${max.x}\n20\n${max.y}\n30\n${max.z}\n0\nENDSEC\n`;\n\n\t\tlet dxfBody = `0\nSECTION\n2\nENTITIES\n`;\n\n\t\tfor (let measurement of measurements) {\n\t\t\tdxfBody += DXFExporter.measurementSection(measurement);\n\t\t}\n\n\t\tdxfBody += `0\nENDSEC\n`;\n\n\t\tlet dxf = dxfHeader + dxfBody + '0\\nEOF';\n\n\t\treturn dxf;\n\t}\n\n}\n","\n\nimport {Utils} from \"../../utils.js\";\n\nexport class MeasurePanel{\n\n\tconstructor(viewer, measurement, propertiesPanel){\n\t\tthis.viewer = viewer;\n\t\tthis.measurement = measurement;\n\t\tthis.propertiesPanel = propertiesPanel;\n\n\t\tthis._update = () => { this.update(); };\n\t}\n\n\tcreateCoordinatesTable(points){\n\t\tlet table = $(`\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
        xyz
        \n\t\t`);\n\n\t\tlet copyIconPath = Potree.resourcePath + '/icons/copy.svg';\n\n\t\tfor (let point of points) {\n\t\t\tlet x = Utils.addCommas(point.x.toFixed(3));\n\t\t\tlet y = Utils.addCommas(point.y.toFixed(3));\n\t\t\tlet z = Utils.addCommas(point.z.toFixed(3));\n\n\t\t\tlet row = $(`\n\t\t\t\t\n\t\t\t\t\t${x}\n\t\t\t\t\t${y}\n\t\t\t\t\t${z}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t`);\n\n\t\t\tthis.elCopy = row.find(\"img[name=copy]\");\n\t\t\tthis.elCopy.click( () => {\n\t\t\t\tlet msg = point.toArray().map(c => c.toFixed(3)).join(\", \");\n\t\t\t\tUtils.clipboardCopy(msg);\n\n\t\t\t\tthis.viewer.postMessage(\n\t\t\t\t\t`Copied value to clipboard:
        '${msg}'`,\n\t\t\t\t\t{duration: 3000});\n\t\t\t});\n\n\t\t\ttable.append(row);\n\t\t}\n\n\t\treturn table;\n\t};\n\n\tcreateAttributesTable(){\n\t\tlet elTable = $('
        ');\n\n\t\tlet point = this.measurement.points[0];\n\t\t\n\t\tfor(let attributeName of Object.keys(point)){\n\t\t\tif(attributeName === \"position\"){\n\t\t\t\n\t\t\t}else if(attributeName === \"rgba\"){\n\t\t\t\tlet color = point.rgba;\n\t\t\t\tlet text = color.join(', ');\n\n\t\t\t\telTable.append($(`\n\t\t\t\t\t\n\t\t\t\t\t\trgb\n\t\t\t\t\t\t${text}\n\t\t\t\t\t\n\t\t\t\t`));\n\t\t\t}else{\n\t\t\t\tlet value = point[attributeName];\n\t\t\t\tlet text = value.join(', ');\n\n\t\t\t\telTable.append($(`\n\t\t\t\t\t\n\t\t\t\t\t\t${attributeName}\n\t\t\t\t\t\t${text}\n\t\t\t\t\t\n\t\t\t\t`));\n\t\t\t}\n\t\t}\n\n\t\treturn elTable;\n\t}\n\n\tupdate(){\n\n\t}\n};","\n\nimport {MeasurePanel} from \"./MeasurePanel.js\";\nimport {Profile} from \"./../../utils/Profile.js\";\n\nexport class DistancePanel extends MeasurePanel{\n\tconstructor(viewer, measurement, propertiesPanel){\n\t\tsuper(viewer, measurement, propertiesPanel);\n\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\n\t\tthis.elContent = $(`\n\t\t\t
        \n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t
        \n\n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\n\t\tthis.elRemove.click( () => {\n\t\t\tthis.viewer.scene.removeMeasurement(measurement);\n\t\t});\n\t\t\n\t\tthis.elMakeProfile = this.elContent.find(\"input[name=make_profile]\");\n\t\tthis.elMakeProfile.click( () => {\n\t\t\t//measurement.points;\n\t\t\tconst profile = new Profile();\n\n\t\t\tprofile.name = measurement.name;\n\t\t\tprofile.width = measurement.getTotalDistance() / 50;\n\n\t\t\tfor(const point of measurement.points){\n\t\t\t\tprofile.addMarker(point.position.clone());\n\t\t\t}\n\n\t\t\tthis.viewer.scene.addProfile(profile);\n\n\t\t});\n\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_added\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_removed\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_moved\", this._update);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\n\t\telCoordiantesContainer.empty();\n\t\telCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position)));\n\n\t\tlet positions = this.measurement.points.map(p => p.position);\n\t\tlet distances = [];\n\t\tfor (let i = 0; i < positions.length - 1; i++) {\n\t\t\tlet d = positions[i].distanceTo(positions[i + 1]);\n\t\t\tdistances.push(d.toFixed(3));\n\t\t}\n\n\t\tlet totalDistance = this.measurement.getTotalDistance().toFixed(3);\n\t\tlet elDistanceTable = this.elContent.find(`#distances_table`);\n\t\telDistanceTable.empty();\n\n\t\tfor (let i = 0; i < distances.length; i++) {\n\t\t\tlet label = (i === 0) ? 'Distances: ' : '';\n\t\t\tlet distance = distances[i];\n\t\t\tlet elDistance = $(`\n\t\t\t\t\n\t\t\t\t\t${label}\n\t\t\t\t\t${distance}\n\t\t\t\t`);\n\t\t\telDistanceTable.append(elDistance);\n\t\t}\n\n\t\tlet elTotal = $(`\n\t\t\t\n\t\t\t\tTotal: ${totalDistance}\n\t\t\t`);\n\t\telDistanceTable.append(elTotal);\n\t}\n};\n","\n\nimport {MeasurePanel} from \"./MeasurePanel.js\";\n\nexport class PointPanel extends MeasurePanel{\n\tconstructor(viewer, measurement, propertiesPanel){\n\t\tsuper(viewer, measurement, propertiesPanel);\n\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\n\t\tthis.elContent = $(`\n\t\t\t
        \n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\n\t\tthis.elRemove.click( () => {\n\t\t\tthis.viewer.scene.removeMeasurement(measurement);\n\t\t});\n\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_added\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_removed\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_moved\", this._update);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\n\t\telCoordiantesContainer.empty();\n\t\telCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position)));\n\n\t\tlet elAttributesContainer = this.elContent.find('.attributes_table_container');\n\t\telAttributesContainer.empty();\n\t\telAttributesContainer.append(this.createAttributesTable());\n\t}\n};","\n\nimport {MeasurePanel} from \"./MeasurePanel.js\";\n\nexport class AreaPanel extends MeasurePanel{\n\tconstructor(viewer, measurement, propertiesPanel){\n\t\tsuper(viewer, measurement, propertiesPanel);\n\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\n\t\tthis.elContent = $(`\n\t\t\t
        \n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\tArea: \n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\n\t\tthis.elRemove.click( () => {\n\t\t\tthis.viewer.scene.removeMeasurement(measurement);\n\t\t});\n\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_added\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_removed\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_moved\", this._update);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\n\t\telCoordiantesContainer.empty();\n\t\telCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position)));\n\n\t\tlet elArea = this.elContent.find(`#measurement_area`);\n\t\telArea.html(this.measurement.getArea().toFixed(3));\n\t}\n};","\n\nimport {MeasurePanel} from \"./MeasurePanel.js\";\n\nexport class AnglePanel extends MeasurePanel{\n\tconstructor(viewer, measurement, propertiesPanel){\n\t\tsuper(viewer, measurement, propertiesPanel);\n\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\n\t\tthis.elContent = $(`\n\t\t\t
        \n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        \\u03b1\\u03b2\\u03b3
        \n\n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\n\t\tthis.elRemove.click( () => {\n\t\t\tthis.viewer.scene.removeMeasurement(measurement);\n\t\t});\n\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_added\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_removed\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_moved\", this._update);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\n\t\telCoordiantesContainer.empty();\n\t\telCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position)));\n\n\t\tlet angles = [];\n\t\tfor(let i = 0; i < this.measurement.points.length; i++){\n\t\t\tangles.push(this.measurement.getAngle(i) * (180.0 / Math.PI));\n\t\t}\n\t\tangles = angles.map(a => a.toFixed(1) + '\\u00B0');\n\n\t\tlet elAlpha = this.elContent.find(`#angle_cell_alpha`);\n\t\tlet elBetta = this.elContent.find(`#angle_cell_betta`);\n\t\tlet elGamma = this.elContent.find(`#angle_cell_gamma`);\n\n\t\telAlpha.html(angles[0]);\n\t\telBetta.html(angles[1]);\n\t\telGamma.html(angles[2]);\n\t}\n};","\n\nimport {MeasurePanel} from \"./MeasurePanel.js\";\n\nexport class CirclePanel extends MeasurePanel{\n\tconstructor(viewer, measurement, propertiesPanel){\n\t\tsuper(viewer, measurement, propertiesPanel);\n\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\n\t\tthis.elContent = $(`\n\t\t\t
        \n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t
        \n\n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\n\t\tthis.elRemove.click( () => {\n\t\t\tthis.viewer.scene.removeMeasurement(measurement);\n\t\t});\n\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_added\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_removed\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_moved\", this._update);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\n\t\telCoordiantesContainer.empty();\n\t\telCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position)));\n\n\t\tconst elInfos = this.elContent.find(`#infos_table`);\n\n\t\tif(this.measurement.points.length !== 3){\n\t\t\telInfos.empty();\n\t\t\t\n\t\t\treturn;\n\t\t}\n\n\t\tconst A = this.measurement.points[0].position;\n\t\tconst B = this.measurement.points[1].position;\n\t\tconst C = this.measurement.points[2].position;\n\n\t\tconst center = Potree.Utils.computeCircleCenter(A, B, C);\n\t\tconst radius = center.distanceTo(A);\n\t\tconst circumference = 2 * Math.PI * radius;\n\t\t\n\t\tconst format = (number) => {\n\t\t\treturn Potree.Utils.addCommas(number.toFixed(3));\n\t\t};\n\n\t\t\n\t\tconst txtCenter = `${format(center.x)} ${format(center.y)} ${format(center.z)}`;\n\t\tconst txtRadius = format(radius);\n\t\tconst txtCircumference = format(circumference);\n\n\t\tconst thStyle = `style=\"text-align: left\"`;\n\t\tconst tdStyle = `style=\"width: 100%; padding: 5px;\"`;\n\t\t\n\t\telInfos.html(`\n\t\t\t\n\t\t\t\tCenter: \n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${txtCenter}\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\tRadius: \n\t\t\t\t${txtRadius}\n\t\t\t\n\t\t\t\n\t\t\t\tCircumference: \n\t\t\t\t${txtCircumference}\n\t\t\t\n\t\t`);\n\t}\n};\n","\n\nimport {MeasurePanel} from \"./MeasurePanel.js\";\n\nexport class HeightPanel extends MeasurePanel{\n\tconstructor(viewer, measurement, propertiesPanel){\n\t\tsuper(viewer, measurement, propertiesPanel);\n\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\n\t\tthis.elContent = $(`\n\t\t\t
        \n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\tHeight:
        \n\n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\n\t\tthis.elRemove.click( () => {\n\t\t\tthis.viewer.scene.removeMeasurement(measurement);\n\t\t});\n\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_added\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_removed\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_moved\", this._update);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\n\t\telCoordiantesContainer.empty();\n\t\telCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position)));\n\n\t\t{\n\t\t\tlet points = this.measurement.points;\n\n\t\t\tlet sorted = points.slice().sort((a, b) => a.position.z - b.position.z);\n\t\t\tlet lowPoint = sorted[0].position.clone();\n\t\t\tlet highPoint = sorted[sorted.length - 1].position.clone();\n\t\t\tlet min = lowPoint.z;\n\t\t\tlet max = highPoint.z;\n\t\t\tlet height = max - min;\n\t\t\theight = height.toFixed(3);\n\n\t\t\tthis.elHeightLabel = this.elContent.find(`#height_label`);\n\t\t\tthis.elHeightLabel.html(`Height: ${height}`);\n\t\t}\n\t}\n};","\nimport {Utils} from \"../../utils.js\";\nimport {Volume, BoxVolume, SphereVolume} from \"../../utils/Volume.js\";\n\nimport {MeasurePanel} from \"./MeasurePanel.js\";\n\nexport class VolumePanel extends MeasurePanel{\n\tconstructor(viewer, measurement, propertiesPanel){\n\t\tsuper(viewer, measurement, propertiesPanel);\n\n\t\tlet copyIconPath = Potree.resourcePath + '/icons/copy.svg';\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\n\n\t\tlet lblLengthText = new Map([\n\t\t\t[BoxVolume, \"length\"],\n\t\t\t[SphereVolume, \"rx\"],\n\t\t]).get(measurement.constructor);\n\n\t\tlet lblWidthText = new Map([\n\t\t\t[BoxVolume, \"width\"],\n\t\t\t[SphereVolume, \"ry\"],\n\t\t]).get(measurement.constructor);\n\n\t\tlet lblHeightText = new Map([\n\t\t\t[BoxVolume, \"height\"],\n\t\t\t[SphereVolume, \"rz\"],\n\t\t]).get(measurement.constructor);\n\n\t\tthis.elContent = $(`\n\t\t\t
        \n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        \\u03b1\\u03b2\\u03b3
        \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
        \n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        ${lblLengthText}${lblWidthText}${lblHeightText}
        \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
        \n\n\t\t\t\t
        \n\t\t\t\tVolume: \n\t\t\t\t\n\n\t\t\t\t\n\n\t\t\t\t
      • \n\t\t\t\t\t\n\t\t\t\t
      • \n\n\t\t\t\t
      • \n\t\t\t\t\t\n\t\t\t\t\t
        \n\t\t\t\t
      • \n\n\n\t\t\t\t\n\t\t\t\t
      • \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
      • \n\t\t\t\t
        \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\t{ // download\n\t\t\tthis.elDownloadButton = this.elContent.find(\"input[name=download_volume]\");\n\n\t\t\tif(this.propertiesPanel.viewer.server){\n\t\t\t\tthis.elDownloadButton.click(() => this.download());\n\t\t\t} else {\n\t\t\t\tthis.elDownloadButton.hide();\n\t\t\t}\n\t\t}\n\n\t\tthis.elCopyRotation = this.elContent.find(\"img[name=copyRotation]\");\n\t\tthis.elCopyRotation.click( () => {\n\t\t\tlet rotation = this.measurement.rotation.toArray().slice(0, 3);\n\t\t\tlet msg = rotation.map(c => c.toFixed(3)).join(\", \");\n\t\t\tUtils.clipboardCopy(msg);\n\n\t\t\tthis.viewer.postMessage(\n\t\t\t\t\t`Copied value to clipboard:
        '${msg}'`,\n\t\t\t\t\t{duration: 3000});\n\t\t});\n\n\t\tthis.elCopyScale = this.elContent.find(\"img[name=copyScale]\");\n\t\tthis.elCopyScale.click( () => {\n\t\t\tlet scale = this.measurement.scale.toArray();\n\t\t\tlet msg = scale.map(c => c.toFixed(3)).join(\", \");\n\t\t\tUtils.clipboardCopy(msg);\n\n\t\t\tthis.viewer.postMessage(\n\t\t\t\t\t`Copied value to clipboard:
        '${msg}'`,\n\t\t\t\t\t{duration: 3000});\n\t\t});\n\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\n\t\tthis.elRemove.click( () => {\n\t\t\tthis.viewer.scene.removeVolume(measurement);\n\t\t});\n\n\t\tthis.elContent.find(\"#volume_reset_orientation\").click(() => {\n\t\t\tmeasurement.rotation.set(0, 0, 0);\n\t\t});\n\n\t\tthis.elContent.find(\"#volume_make_uniform\").click(() => {\n\t\t\tlet mean = (measurement.scale.x + measurement.scale.y + measurement.scale.z) / 3;\n\t\t\tmeasurement.scale.set(mean, mean, mean);\n\t\t});\n\n\t\tthis.elCheckClip = this.elContent.find('#volume_clip');\n\t\tthis.elCheckClip.click(event => {\n\t\t\tthis.measurement.clip = event.target.checked;\n\t\t});\n\n\t\tthis.elCheckShow = this.elContent.find('#volume_show');\n\t\tthis.elCheckShow.click(event => {\n\t\t\tthis.measurement.visible = event.target.checked;\n\t\t});\n\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"position_changed\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"orientation_changed\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"scale_changed\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"clip_changed\", this._update);\n\n\t\tthis.update();\n\t}\n\n\tasync download(){\n\n\t\tlet clipBox = this.measurement;\n\n\t\tlet regions = [];\n\t\t//for(let clipBox of boxes){\n\t\t{\n\t\t\tlet toClip = clipBox.matrixWorld;\n\n\t\t\tlet px = new THREE.Vector3(+0.5, 0, 0).applyMatrix4(toClip);\n\t\t\tlet nx = new THREE.Vector3(-0.5, 0, 0).applyMatrix4(toClip);\n\t\t\tlet py = new THREE.Vector3(0, +0.5, 0).applyMatrix4(toClip);\n\t\t\tlet ny = new THREE.Vector3(0, -0.5, 0).applyMatrix4(toClip);\n\t\t\tlet pz = new THREE.Vector3(0, 0, +0.5).applyMatrix4(toClip);\n\t\t\tlet nz = new THREE.Vector3(0, 0, -0.5).applyMatrix4(toClip);\n\n\t\t\tlet pxN = new THREE.Vector3().subVectors(nx, px).normalize();\n\t\t\tlet nxN = pxN.clone().multiplyScalar(-1);\n\t\t\tlet pyN = new THREE.Vector3().subVectors(ny, py).normalize();\n\t\t\tlet nyN = pyN.clone().multiplyScalar(-1);\n\t\t\tlet pzN = new THREE.Vector3().subVectors(nz, pz).normalize();\n\t\t\tlet nzN = pzN.clone().multiplyScalar(-1);\n\n\t\t\tlet planes = [\n\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(pxN, px),\n\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(nxN, nx),\n\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(pyN, py),\n\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(nyN, ny),\n\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(pzN, pz),\n\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(nzN, nz),\n\t\t\t];\n\n\t\t\tlet planeQueryParts = [];\n\t\t\tfor(let plane of planes){\n\t\t\t\tlet part = [plane.normal.toArray(), plane.constant].join(\",\");\n\t\t\t\tpart = `[${part}]`;\n\t\t\t\tplaneQueryParts.push(part);\n\t\t\t}\n\t\t\tlet region = \"[\" + planeQueryParts.join(\",\") + \"]\";\n\t\t\tregions.push(region);\n\t\t}\n\n\t\tlet regionsArg = regions.join(\",\");\n\n\t\tlet pointcloudArgs = [];\n\t\tfor(let pointcloud of this.viewer.scene.pointclouds){\n\t\t\tif(!pointcloud.visible){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet offset = pointcloud.pcoGeometry.offset.clone();\n\t\t\tlet negateOffset = new THREE.Matrix4().makeTranslation(...offset.multiplyScalar(-1).toArray());\n\t\t\tlet matrixWorld = pointcloud.matrixWorld;\n\n\t\t\tlet transform = new THREE.Matrix4().multiplyMatrices(matrixWorld, negateOffset);\n\n\t\t\tlet path = `${window.location.pathname}/../${pointcloud.pcoGeometry.url}`;\n\n\t\t\tlet arg = {\n\t\t\t\tpath: path,\n\t\t\t\ttransform: transform.elements,\n\t\t\t};\n\t\t\tlet argString = JSON.stringify(arg);\n\n\t\t\tpointcloudArgs.push(argString);\n\t\t}\n\t\tlet pointcloudsArg = pointcloudArgs.join(\",\");\n\n\t\tlet elMessage = this.elContent.find(\"div[name=download_message]\");\n\n\t\tlet error = (message) => {\n\t\t\telMessage.html(`
        ERROR: ${message}
        `);\n\t\t};\n\n\t\tlet info = (message) => {\n\t\t\telMessage.html(`${message}`);\n\t\t};\n\n\t\tlet handle = null;\n\t\t{ // START FILTER\n\t\t\tlet url = `${viewer.server}/create_regions_filter?pointclouds=[${pointcloudsArg}]®ions=[${regionsArg}]`;\n\t\t\t\n\t\t\t//console.log(url);\n\n\t\t\tinfo(\"estimating results ...\");\n\n\t\t\tlet response = await fetch(url);\n\t\t\tlet jsResponse = await response.json();\n\t\t\t//console.log(jsResponse);\n\n\t\t\tif(!jsResponse.handle){\n\t\t\t\terror(jsResponse.message);\n\t\t\t\treturn;\n\t\t\t}else{\n\t\t\t\thandle = jsResponse.handle;\n\t\t\t}\n\t\t}\n\n\t\t{ // WAIT, CHECK PROGRESS, HANDLE FINISH\n\t\t\tlet url = `${viewer.server}/check_regions_filter?handle=${handle}`;\n\n\t\t\tlet sleep = (function(duration){\n\t\t\t\treturn new Promise( (res, rej) => {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tres();\n\t\t\t\t\t}, duration);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tlet handleFiltering = (jsResponse) => {\n\t\t\t\tlet {progress, estimate} = jsResponse;\n\n\t\t\t\tlet progressFract = progress[\"processed points\"] / estimate.points;\n\t\t\t\tlet progressPercents = parseInt(progressFract * 100);\n\n\t\t\t\tinfo(`progress: ${progressPercents}%`);\n\t\t\t};\n\n\t\t\tlet handleFinish = (jsResponse) => {\n\t\t\t\tlet message = \"downloads ready:
        \";\n\t\t\t\tmessage += \"
          \";\n\n\t\t\t\tfor(let i = 0; i < jsResponse.pointclouds.length; i++){\n\t\t\t\t\tlet url = `${viewer.server}/download_regions_filter_result?handle=${handle}&index=${i}`;\n\n\t\t\t\t\tmessage += `
        • result_${i}.las
        • \\n`;\n\t\t\t\t}\n\n\t\t\t\tlet reportURL = `${viewer.server}/download_regions_filter_report?handle=${handle}`;\n\t\t\t\tmessage += `
        • report.json
        • \\n`;\n\t\t\t\tmessage += \"
        \";\n\n\t\t\t\tinfo(message);\n\t\t\t};\n\n\t\t\tlet handleUnexpected = (jsResponse) => {\n\t\t\t\tlet message = `Unexpected Response.
        status: ${jsResponse.status}
        message: ${jsResponse.message}`;\n\t\t\t\tinfo(message);\n\t\t\t};\n\n\t\t\tlet handleError = (jsResponse) => {\n\t\t\t\tlet message = `ERROR: ${jsResponse.message}`;\n\t\t\t\terror(message);\n\n\t\t\t\tthrow new Error(message);\n\t\t\t};\n\n\t\t\tlet start = Date.now();\n\n\t\t\twhile(true){\n\t\t\t\tlet response = await fetch(url);\n\t\t\t\tlet jsResponse = await response.json();\n\n\t\t\t\tif(jsResponse.status === \"ERROR\"){\n\t\t\t\t\thandleError(jsResponse);\n\t\t\t\t}else if(jsResponse.status === \"FILTERING\"){\n\t\t\t\t\thandleFiltering(jsResponse);\n\t\t\t\t}else if(jsResponse.status === \"FINISHED\"){\n\t\t\t\t\thandleFinish(jsResponse);\n\n\t\t\t\t\tbreak;\n\t\t\t\t}else{\n\t\t\t\t\thandleUnexpected(jsResponse);\n\t\t\t\t}\n\n\t\t\t\tlet durationS = (Date.now() - start) / 1000;\n\t\t\t\tlet sleepAmountMS = durationS < 10 ? 100 : 1000;\n\n\t\t\t\tawait sleep(sleepAmountMS);\n\t\t\t}\n\t\t}\n\n\t}\n\n\tupdate(){\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\n\t\telCoordiantesContainer.empty();\n\t\telCoordiantesContainer.append(this.createCoordinatesTable([this.measurement.position]));\n\n\t\t{\n\t\t\tlet angles = this.measurement.rotation.toVector3();\n\t\t\tangles = angles.toArray();\n\t\t\t//angles = [angles.z, angles.x, angles.y];\n\t\t\tangles = angles.map(v => 180 * v / Math.PI);\n\t\t\tangles = angles.map(a => a.toFixed(1) + '\\u00B0');\n\n\t\t\tlet elAlpha = this.elContent.find(`#angle_cell_alpha`);\n\t\t\tlet elBetta = this.elContent.find(`#angle_cell_betta`);\n\t\t\tlet elGamma = this.elContent.find(`#angle_cell_gamma`);\n\n\t\t\telAlpha.html(angles[0]);\n\t\t\telBetta.html(angles[1]);\n\t\t\telGamma.html(angles[2]);\n\t\t}\n\n\t\t{\n\t\t\tlet dimensions = this.measurement.scale.toArray();\n\t\t\tdimensions = dimensions.map(v => Utils.addCommas(v.toFixed(2)));\n\n\t\t\tlet elLength = this.elContent.find(`#cell_length`);\n\t\t\tlet elWidth = this.elContent.find(`#cell_width`);\n\t\t\tlet elHeight = this.elContent.find(`#cell_height`);\n\n\t\t\telLength.html(dimensions[0]);\n\t\t\telWidth.html(dimensions[1]);\n\t\t\telHeight.html(dimensions[2]);\n\t\t}\n\n\t\t{\n\t\t\tlet elVolume = this.elContent.find(`#measurement_volume`);\n\t\t\tlet volume = this.measurement.getVolume();\n\t\t\telVolume.html(Utils.addCommas(volume.toFixed(2)));\n\t\t}\n\n\t\tthis.elCheckClip.prop(\"checked\", this.measurement.clip);\n\t\tthis.elCheckShow.prop(\"checked\", this.measurement.visible);\n\n\t}\n};","\n\nimport {MeasurePanel} from \"./MeasurePanel.js\";\n\nexport class ProfilePanel extends MeasurePanel{\n\tconstructor(viewer, measurement, propertiesPanel){\n\t\tsuper(viewer, measurement, propertiesPanel);\n\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\n\t\tthis.elContent = $(`\n\t\t\t
        \n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t\n\t\t\t\t\tWidth: \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t
        \n\n\t\t\t\t
      • \n\t\t\t\t\t\n\t\t\t\t\t
        \n\t\t\t\t
      • \n\n\t\t\t\t
        \n\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\n\t\tthis.elRemove.click( () => {\n\t\t\tthis.viewer.scene.removeProfile(measurement);\n\t\t});\n\n\t\t{ // download\n\t\t\tthis.elDownloadButton = this.elContent.find(`input[name=download_profile]`);\n\n\t\t\tif(this.propertiesPanel.viewer.server){\n\t\t\t\tthis.elDownloadButton.click(() => this.download());\n\t\t\t} else {\n\t\t\t\tthis.elDownloadButton.hide();\n\t\t\t}\n\t\t}\n\n\t\t{ // width spinner\n\t\t\tlet elWidthSlider = this.elContent.find(`#sldProfileWidth`);\n\n\t\t\telWidthSlider.spinner({\n\t\t\t\tmin: 0, max: 10 * 1000 * 1000, step: 0.01,\n\t\t\t\tnumberFormat: 'n',\n\t\t\t\tstart: () => {},\n\t\t\t\tspin: (event, ui) => {\n\t\t\t\t\tlet value = elWidthSlider.spinner('value');\n\t\t\t\t\tmeasurement.setWidth(value);\n\t\t\t\t},\n\t\t\t\tchange: (event, ui) => {\n\t\t\t\t\tlet value = elWidthSlider.spinner('value');\n\t\t\t\t\tmeasurement.setWidth(value);\n\t\t\t\t},\n\t\t\t\tstop: (event, ui) => {\n\t\t\t\t\tlet value = elWidthSlider.spinner('value');\n\t\t\t\t\tmeasurement.setWidth(value);\n\t\t\t\t},\n\t\t\t\tincremental: (count) => {\n\t\t\t\t\tlet value = elWidthSlider.spinner('value');\n\t\t\t\t\tlet step = elWidthSlider.spinner('option', 'step');\n\n\t\t\t\t\tlet delta = value * 0.05;\n\t\t\t\t\tlet increments = Math.max(1, parseInt(delta / step));\n\n\t\t\t\t\treturn increments;\n\t\t\t\t}\n\t\t\t});\n\t\t\telWidthSlider.spinner('value', measurement.getWidth());\n\t\t\telWidthSlider.spinner('widget').css('width', '100%');\n\n\t\t\tlet widthListener = (event) => {\n\t\t\t\tlet value = elWidthSlider.spinner('value');\n\t\t\t\tif (value !== measurement.getWidth()) {\n\t\t\t\t\telWidthSlider.spinner('value', measurement.getWidth());\n\t\t\t\t}\n\t\t\t};\n\t\t\tthis.propertiesPanel.addVolatileListener(measurement, \"width_changed\", widthListener);\n\t\t}\n\n\t\tlet elShow2DProfile = this.elContent.find(`#show_2d_profile`);\n\t\telShow2DProfile.click(() => {\n\t\t\tthis.propertiesPanel.viewer.profileWindow.show();\n\t\t\tthis.propertiesPanel.viewer.profileWindowController.setProfile(measurement);\n\t\t});\n\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_added\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_removed\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_moved\", this._update);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\n\t\telCoordiantesContainer.empty();\n\t\telCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points));\n\t}\n\n\tasync download(){\n\n\t\tlet profile = this.measurement;\n\n\t\tlet regions = [];\n\t\t{\n\t\t\tlet segments = profile.getSegments();\n\t\t\tlet width = profile.width;\n\t\t\t\n\t\t\tfor(let segment of segments){\n\t\t\t\tlet start = segment.start.clone().multiply(new THREE.Vector3(1, 1, 0));\n\t\t\t\tlet end = segment.end.clone().multiply(new THREE.Vector3(1, 1, 0));\n\t\t\t\tlet center = new THREE.Vector3().addVectors(start, end).multiplyScalar(0.5);\n\t\t\t\t\n\t\t\t\tlet startEndDir = new THREE.Vector3().subVectors(end, start).normalize();\n\t\t\t\tlet endStartDir = new THREE.Vector3().subVectors(start, end).normalize();\n\t\t\t\tlet upDir = new THREE.Vector3(0, 0, 1);\n\t\t\t\tlet rightDir = new THREE.Vector3().crossVectors(startEndDir, upDir);\n\t\t\t\tlet leftDir = new THREE.Vector3().crossVectors(endStartDir, upDir);\n\t\t\t\t\n\t\t\t\tconsole.log(leftDir);\n\t\t\t\t\n\t\t\t\tlet right = rightDir.clone().multiplyScalar(width * 0.5).add(center);\n\t\t\t\tlet left = leftDir.clone().multiplyScalar(width * 0.5).add(center);\n\t\t\t\t\n\t\t\t\tlet planes = [\n\t\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(startEndDir, start),\n\t\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(endStartDir, end),\n\t\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(leftDir, right),\n\t\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(rightDir, left),\n\t\t\t\t];\n\t\t\t\t\n\t\t\t\tlet planeQueryParts = [];\n\t\t\t\tfor(let plane of planes){\n\t\t\t\t\tlet part = [plane.normal.toArray(), plane.constant].join(\",\");\n\t\t\t\t\tpart = `[${part}]`;\n\t\t\t\t\tplaneQueryParts.push(part);\n\t\t\t\t}\n\t\t\t\tlet region = \"[\" + planeQueryParts.join(\",\") + \"]\";\n\t\t\t\tregions.push(region);\n\t\t\t}\n\t\t}\n\n\t\tlet regionsArg = regions.join(\",\");\n\n\t\tlet pointcloudArgs = [];\n\t\tfor(let pointcloud of this.viewer.scene.pointclouds){\n\t\t\tif(!pointcloud.visible){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet offset = pointcloud.pcoGeometry.offset.clone();\n\t\t\tlet negateOffset = new THREE.Matrix4().makeTranslation(...offset.multiplyScalar(-1).toArray());\n\t\t\tlet matrixWorld = pointcloud.matrixWorld;\n\n\t\t\tlet transform = new THREE.Matrix4().multiplyMatrices(matrixWorld, negateOffset);\n\n\t\t\tlet path = `${window.location.pathname}/../${pointcloud.pcoGeometry.url}`;\n\n\t\t\tlet arg = {\n\t\t\t\tpath: path,\n\t\t\t\ttransform: transform.elements,\n\t\t\t};\n\t\t\tlet argString = JSON.stringify(arg);\n\n\t\t\tpointcloudArgs.push(argString);\n\t\t}\n\t\tlet pointcloudsArg = pointcloudArgs.join(\",\");\n\n\t\tlet elMessage = this.elContent.find(\"div[name=download_message]\");\n\n\t\tlet error = (message) => {\n\t\t\telMessage.html(`
        ERROR: ${message}
        `);\n\t\t};\n\n\t\tlet info = (message) => {\n\t\t\telMessage.html(`${message}`);\n\t\t};\n\n\t\tlet handle = null;\n\t\t{ // START FILTER\n\t\t\tlet url = `${viewer.server}/create_regions_filter?pointclouds=[${pointcloudsArg}]®ions=[${regionsArg}]`;\n\t\t\t\n\t\t\t//console.log(url);\n\n\t\t\tinfo(\"estimating results ...\");\n\n\t\t\tlet response = await fetch(url);\n\t\t\tlet jsResponse = await response.json();\n\t\t\t//console.log(jsResponse);\n\n\t\t\tif(!jsResponse.handle){\n\t\t\t\terror(jsResponse.message);\n\t\t\t\treturn;\n\t\t\t}else{\n\t\t\t\thandle = jsResponse.handle;\n\t\t\t}\n\t\t}\n\n\t\t{ // WAIT, CHECK PROGRESS, HANDLE FINISH\n\t\t\tlet url = `${viewer.server}/check_regions_filter?handle=${handle}`;\n\n\t\t\tlet sleep = (function(duration){\n\t\t\t\treturn new Promise( (res, rej) => {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tres();\n\t\t\t\t\t}, duration);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tlet handleFiltering = (jsResponse) => {\n\t\t\t\tlet {progress, estimate} = jsResponse;\n\n\t\t\t\tlet progressFract = progress[\"processed points\"] / estimate.points;\n\t\t\t\tlet progressPercents = parseInt(progressFract * 100);\n\n\t\t\t\tinfo(`progress: ${progressPercents}%`);\n\t\t\t};\n\n\t\t\tlet handleFinish = (jsResponse) => {\n\t\t\t\tlet message = \"downloads ready:
        \";\n\t\t\t\tmessage += \"
          \";\n\n\t\t\t\tfor(let i = 0; i < jsResponse.pointclouds.length; i++){\n\t\t\t\t\tlet url = `${viewer.server}/download_regions_filter_result?handle=${handle}&index=${i}`;\n\n\t\t\t\t\tmessage += `
        • result_${i}.las
        • \\n`;\n\t\t\t\t}\n\n\t\t\t\tlet reportURL = `${viewer.server}/download_regions_filter_report?handle=${handle}`;\n\t\t\t\tmessage += `
        • report.json
        • \\n`;\n\t\t\t\tmessage += \"
        \";\n\n\t\t\t\tinfo(message);\n\t\t\t};\n\n\t\t\tlet handleUnexpected = (jsResponse) => {\n\t\t\t\tlet message = `Unexpected Response.
        status: ${jsResponse.status}
        message: ${jsResponse.message}`;\n\t\t\t\tinfo(message);\n\t\t\t};\n\n\t\t\tlet handleError = (jsResponse) => {\n\t\t\t\tlet message = `ERROR: ${jsResponse.message}`;\n\t\t\t\terror(message);\n\n\t\t\t\tthrow new Error(message);\n\t\t\t};\n\n\t\t\tlet start = Date.now();\n\n\t\t\twhile(true){\n\t\t\t\tlet response = await fetch(url);\n\t\t\t\tlet jsResponse = await response.json();\n\n\t\t\t\tif(jsResponse.status === \"ERROR\"){\n\t\t\t\t\thandleError(jsResponse);\n\t\t\t\t}else if(jsResponse.status === \"FILTERING\"){\n\t\t\t\t\thandleFiltering(jsResponse);\n\t\t\t\t}else if(jsResponse.status === \"FINISHED\"){\n\t\t\t\t\thandleFinish(jsResponse);\n\n\t\t\t\t\tbreak;\n\t\t\t\t}else{\n\t\t\t\t\thandleUnexpected(jsResponse);\n\t\t\t\t}\n\n\t\t\t\tlet durationS = (Date.now() - start) / 1000;\n\t\t\t\tlet sleepAmountMS = durationS < 10 ? 100 : 1000;\n\n\t\t\t\tawait sleep(sleepAmountMS);\n\t\t\t}\n\t\t}\n\n\t}\n};","\nimport {Utils} from \"../../utils.js\";\n\nexport class CameraPanel{\n\tconstructor(viewer, propertiesPanel){\n\t\tthis.viewer = viewer;\n\t\tthis.propertiesPanel = propertiesPanel;\n\n\t\tthis._update = () => { this.update(); };\n\n\t\tlet copyIconPath = Potree.resourcePath + '/icons/copy.svg';\n\t\tthis.elContent = $(`\n\t\t
        \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
        position
        \n\t\t\t\t\t\t\n\t\t\t\t\t
        target
        \n\t\t\t\t\t\t\n\t\t\t\t\t
        \n\t\t
        \n\t\t`);\n\n\t\tthis.elCopyPosition = this.elContent.find(\"img[name=copyPosition]\");\n\t\tthis.elCopyPosition.click( () => {\n\t\t\tlet pos = this.viewer.scene.getActiveCamera().position.toArray();\n\t\t\tlet msg = pos.map(c => c.toFixed(3)).join(\", \");\n\t\t\tUtils.clipboardCopy(msg);\n\n\t\t\tthis.viewer.postMessage(\n\t\t\t\t\t`Copied value to clipboard:
        '${msg}'`,\n\t\t\t\t\t{duration: 3000});\n\t\t});\n\n\t\tthis.elCopyTarget = this.elContent.find(\"img[name=copyTarget]\");\n\t\tthis.elCopyTarget.click( () => {\n\t\t\tlet pos = this.viewer.scene.view.getPivot().toArray();\n\t\t\tlet msg = pos.map(c => c.toFixed(3)).join(\", \");\n\t\t\tUtils.clipboardCopy(msg);\n\n\t\t\tthis.viewer.postMessage(\n\t\t\t\t\t`Copied value to clipboard:
        '${msg}'`,\n\t\t\t\t\t{duration: 3000});\n\t\t});\n\n\t\tthis.propertiesPanel.addVolatileListener(viewer, \"camera_changed\", this._update);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\t//console.log(\"updating camera panel\");\n\n\t\tlet camera = this.viewer.scene.getActiveCamera();\n\t\tlet view = this.viewer.scene.view;\n\n\t\tlet pos = camera.position.toArray().map(c => Utils.addCommas(c.toFixed(3)));\n\t\tthis.elContent.find(\"#camera_position_x\").html(pos[0]);\n\t\tthis.elContent.find(\"#camera_position_y\").html(pos[1]);\n\t\tthis.elContent.find(\"#camera_position_z\").html(pos[2]);\n\n\t\tlet target = view.getPivot().toArray().map(c => Utils.addCommas(c.toFixed(3)));\n\t\tthis.elContent.find(\"#camera_target_x\").html(target[0]);\n\t\tthis.elContent.find(\"#camera_target_y\").html(target[1]);\n\t\tthis.elContent.find(\"#camera_target_z\").html(target[2]);\n\t}\n};","\nimport {Utils} from \"../../utils.js\";\n\nexport class AnnotationPanel{\n\tconstructor(viewer, propertiesPanel, annotation){\n\t\tthis.viewer = viewer;\n\t\tthis.propertiesPanel = propertiesPanel;\n\t\tthis.annotation = annotation;\n\n\t\tthis._update = () => { this.update(); };\n\n\t\tlet copyIconPath = `${Potree.resourcePath}/icons/copy.svg`;\n\t\tthis.elContent = $(`\n\t\t
        \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t
        position
        \n\t\t\t\t\t\t\n\t\t\t\t\t
        \n\n\t\t\t
        \n\n\t\t\t\t
        Title
        \n\t\t\t\t
        \n\t\t\t\t\tAnnotation Title\n\t\t\t\t
        \n\n\t\t\t\t
        Description
        \n\t\t\t\t
        \n\t\t\t\t\tA longer description of this annotation. \n\t\t\t\t\t\tCan be multiple lines long. TODO: the user should be able\n\t\t\t\t\t\tto modify title and description. \n\t\t\t\t
        \n\n\t\t\t
        \n\n\t\t
        \n\t\t`);\n\n\t\tthis.elCopyPosition = this.elContent.find(\"img[name=copyPosition]\");\n\t\tthis.elCopyPosition.click( () => {\n\t\t\tlet pos = this.annotation.position.toArray();\n\t\t\tlet msg = pos.map(c => c.toFixed(3)).join(\", \");\n\t\t\tUtils.clipboardCopy(msg);\n\n\t\t\tthis.viewer.postMessage(\n\t\t\t\t\t`Copied value to clipboard:
        '${msg}'`,\n\t\t\t\t\t{duration: 3000});\n\t\t});\n\n\t\tthis.elTitle = this.elContent.find(\"#annotation_title\").html(annotation.title);\n\t\tthis.elDescription = this.elContent.find(\"#annotation_description\").html(annotation.description);\n\n\t\tthis.elTitle[0].addEventListener(\"input\", () => {\n\t\t\tconst title = this.elTitle.html();\n\t\t\tannotation.title = title;\n\n\t\t}, false);\n\n\t\tthis.elDescription[0].addEventListener(\"input\", () => {\n\t\t\tconst description = this.elDescription.html();\n\t\t\tannotation.description = description;\n\t\t}, false);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tconst {annotation, elContent, elTitle, elDescription} = this;\n\n\t\tlet pos = annotation.position.toArray().map(c => Utils.addCommas(c.toFixed(3)));\n\t\telContent.find(\"#annotation_position_x\").html(pos[0]);\n\t\telContent.find(\"#annotation_position_y\").html(pos[1]);\n\t\telContent.find(\"#annotation_position_z\").html(pos[2]);\n\n\t\telTitle.html(annotation.title);\n\t\telDescription.html(annotation.description);\n\n\n\t}\n};","\nimport {Utils} from \"../../utils.js\";\n\nexport class CameraAnimationPanel{\n\tconstructor(viewer, propertiesPanel, animation){\n\t\tthis.viewer = viewer;\n\t\tthis.propertiesPanel = propertiesPanel;\n\t\tthis.animation = animation;\n\n\t\tthis.elContent = $(`\n\t\t\t
        \n\t\t\t\t\n\n\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\tDuration: \n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\tTime:
        \n\n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\tconst elPlay = this.elContent.find(\"input[name=play]\");\n\t\telPlay.click( () => {\n\t\t\tanimation.play();\n\t\t});\n\n\t\tconst elSlider = this.elContent.find('#sldTime');\n\t\telSlider.slider({\n\t\t\tvalue: 0,\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t\tstep: 0.001,\n\t\t\tslide: (event, ui) => { \n\t\t\t\tanimation.set(ui.value);\n\t\t\t}\n\t\t});\n\n\t\tlet elDuration = this.elContent.find(`input[name=spnDuration]`);\n\t\telDuration.spinner({\n\t\t\tmin: 0, max: 300, step: 0.01,\n\t\t\tnumberFormat: 'n',\n\t\t\tstart: () => {},\n\t\t\tspin: (event, ui) => {\n\t\t\t\tlet value = elDuration.spinner('value');\n\t\t\t\tanimation.setDuration(value);\n\t\t\t},\n\t\t\tchange: (event, ui) => {\n\t\t\t\tlet value = elDuration.spinner('value');\n\t\t\t\tanimation.setDuration(value);\n\t\t\t},\n\t\t\tstop: (event, ui) => {\n\t\t\t\tlet value = elDuration.spinner('value');\n\t\t\t\tanimation.setDuration(value);\n\t\t\t},\n\t\t\tincremental: (count) => {\n\t\t\t\tlet value = elDuration.spinner('value');\n\t\t\t\tlet step = elDuration.spinner('option', 'step');\n\n\t\t\t\tlet delta = value * 0.05;\n\t\t\t\tlet increments = Math.max(1, parseInt(delta / step));\n\n\t\t\t\treturn increments;\n\t\t\t}\n\t\t});\n\t\telDuration.spinner('value', animation.getDuration());\n\t\telDuration.spinner('widget').css('width', '100%');\n\n\t\tconst elKeyframes = this.elContent.find(\"#animation_keyframes\");\n\n\t\tconst updateKeyframes = () => {\n\t\t\telKeyframes.empty();\n\n\t\t\t//let index = 0;\n\n\t\t\t// \n\t\t\t// \t\t\t\t\n\t\t\t// \t\t\t\n\n\t\t\tconst addNewKeyframeItem = (index) => {\n\t\t\t\tlet elNewKeyframe = $(`\n\t\t\t\t\t
        \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
        \n\t\t\t\t`);\n\n\t\t\t\tconst elAdd = elNewKeyframe.find(\"input[name=add]\");\n\t\t\t\telAdd.click( () => {\n\t\t\t\t\tanimation.createControlPoint(index);\n\t\t\t\t});\n\n\t\t\t\telKeyframes.append(elNewKeyframe);\n\t\t\t};\n\n\t\t\tconst addKeyframeItem = (index) => {\n\t\t\t\tlet elKeyframe = $(`\n\t\t\t\t\t
        \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tkeyframe\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
        \n\t\t\t\t`);\n\n\t\t\t\tconst elAssign = elKeyframe.find(\"img[name=assign]\");\n\t\t\t\tconst elMove = elKeyframe.find(\"img[name=move]\");\n\t\t\t\tconst elDelete = elKeyframe.find(\"img[name=delete]\");\n\n\t\t\t\telAssign.click( () => {\n\t\t\t\t\tconst cp = animation.controlPoints[index];\n\n\t\t\t\t\tcp.position.copy(viewer.scene.view.position);\n\t\t\t\t\tcp.target.copy(viewer.scene.view.getPivot());\n\t\t\t\t});\n\n\t\t\t\telMove.click( () => {\n\t\t\t\t\tconst cp = animation.controlPoints[index];\n\n\t\t\t\t\tviewer.scene.view.position.copy(cp.position);\n\t\t\t\t\tviewer.scene.view.lookAt(cp.target);\n\t\t\t\t});\n\n\t\t\t\telDelete.click( () => {\n\t\t\t\t\tconst cp = animation.controlPoints[index];\n\t\t\t\t\tanimation.removeControlPoint(cp);\n\t\t\t\t});\n\n\t\t\t\telKeyframes.append(elKeyframe);\n\t\t\t};\n\n\t\t\tlet index = 0;\n\n\t\t\taddNewKeyframeItem(index);\n\n\t\t\tfor(const cp of animation.controlPoints){\n\t\t\t\t\n\t\t\t\taddKeyframeItem(index);\n\t\t\t\tindex++;\n\t\t\t\taddNewKeyframeItem(index);\n\n\t\t\t}\n\t\t};\n\n\t\tupdateKeyframes();\n\n\t\tanimation.addEventListener(\"controlpoint_added\", updateKeyframes);\n\t\tanimation.addEventListener(\"controlpoint_removed\", updateKeyframes);\n\n\n\n\n\t\t// this._update = () => { this.update(); };\n\n\t\t// this.update();\n\t}\n\n\tupdate(){\n\t\t\n\t}\n};","\n\nimport {Utils} from \"../../utils.js\";\nimport {PointCloudTree} from \"../../PointCloudTree.js\";\nimport {Annotation} from \"../../Annotation.js\";\nimport {Measure} from \"../../utils/Measure.js\";\nimport {Profile} from \"../../utils/Profile.js\";\nimport {Volume, BoxVolume, SphereVolume} from \"../../utils/Volume.js\";\nimport {CameraAnimation} from \"../../modules/CameraAnimation/CameraAnimation.js\";\nimport {PointSizeType, PointShape, ElevationGradientRepeat} from \"../../defines.js\";\nimport {Gradients} from \"../../materials/Gradients.js\";\n\nimport {MeasurePanel} from \"./MeasurePanel.js\";\nimport {DistancePanel} from \"./DistancePanel.js\";\nimport {PointPanel} from \"./PointPanel.js\";\nimport {AreaPanel} from \"./AreaPanel.js\";\nimport {AnglePanel} from \"./AnglePanel.js\";\nimport {CirclePanel} from \"./CirclePanel.js\";\nimport {HeightPanel} from \"./HeightPanel.js\";\nimport {VolumePanel} from \"./VolumePanel.js\";\nimport {ProfilePanel} from \"./ProfilePanel.js\";\nimport {CameraPanel} from \"./CameraPanel.js\";\nimport {AnnotationPanel} from \"./AnnotationPanel.js\";\nimport { CameraAnimationPanel } from \"./CameraAnimationPanel.js\";\n\nexport class PropertiesPanel{\n\n\tconstructor(container, viewer){\n\t\tthis.container = container;\n\t\tthis.viewer = viewer;\n\t\tthis.object = null;\n\t\tthis.cleanupTasks = [];\n\t\tthis.scene = null;\n\t}\n\n\tsetScene(scene){\n\t\tthis.scene = scene;\n\t}\n\n\tset(object){\n\t\tif(this.object === object){\n\t\t\treturn;\n\t\t}\n\n\t\tthis.object = object;\n\t\t\n\t\tfor(let task of this.cleanupTasks){\n\t\t\ttask();\n\t\t}\n\t\tthis.cleanupTasks = [];\n\t\tthis.container.empty();\n\n\t\tif(object instanceof PointCloudTree){\n\t\t\tthis.setPointCloud(object);\n\t\t}else if(object instanceof Measure || object instanceof Profile || object instanceof Volume){\n\t\t\tthis.setMeasurement(object);\n\t\t}else if(object instanceof THREE.Camera){\n\t\t\tthis.setCamera(object);\n\t\t}else if(object instanceof Annotation){\n\t\t\tthis.setAnnotation(object);\n\t\t}else if(object instanceof CameraAnimation){\n\t\t\tthis.setCameraAnimation(object);\n\t\t}\n\t\t\n\t}\n\n\t//\n\t// Used for events that should be removed when the property object changes.\n\t// This is for listening to materials, scene, point clouds, etc.\n\t// not required for DOM listeners, since they are automatically cleared by removing the DOM subtree.\n\t//\n\taddVolatileListener(target, type, callback){\n\t\ttarget.addEventListener(type, callback);\n\t\tthis.cleanupTasks.push(() => {\n\t\t\ttarget.removeEventListener(type, callback);\n\t\t});\n\t}\n\n\tsetPointCloud(pointcloud){\n\n\t\tlet material = pointcloud.material;\n\n\t\tlet panel = $(`\n\t\t\t
        \n\t\t\t\t
          \n\n\t\t\t\t
        • \n\t\t\t\t
          \n\t\t\t\t
        • \n\t\t\t\t
        • \n\t\t\t\t
          \n\t\t\t\t
        • \n\n\t\t\t\t\n\t\t\t\t
        • \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        • \n\n\t\t\t\t\n\t\t\t\t
        • \n\t\t\t\t\t
          \n\t\t\t\t\t\n\t\t\t\t
        • \n\n\t\t\t\t
        • \n\t\t\t\t\n\t\t\t\t
        • \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
        • :
        • \n\n\t\t\t\t
          \n\t\t\t\t\tAttribute\n\t\t\t\t
          \n\n\t\t\t\t
        • \n\t\t\t\t\t\n\t\t\t\t
        • \n\n\t\t\t\t
          \n\t\t\t\t\t
          \n\t\t\t\t\t\tAttribute Weights\n\t\t\t\t\t
          \n\n\t\t\t\t\t
        • RGB:
          \t
        • \n\t\t\t\t\t
        • Intensity:
          \t
        • \n\t\t\t\t\t
        • Elevation:
          \t
        • \n\t\t\t\t\t
        • Classification:
          \t
        • \n\t\t\t\t\t
        • Return Number:
          \t
        • \n\t\t\t\t\t
        • Source ID:
          \t
        • \n\t\t\t\t
          \n\n\t\t\t\t
          \n\t\t\t\t\t
          \n\t\t\t\t\t\tRGB\n\t\t\t\t\t
          \n\n\t\t\t\t\t
        • Gamma:
          \t
        • \n\t\t\t\t\t
        • Brightness:
          \t
        • \n\t\t\t\t\t
        • Contrast:
          \t
        • \n\t\t\t\t
          \n\n\t\t\t\t
          \n\t\t\t\t\t
          \n\t\t\t\t\t\tExtra Attribute\n\t\t\t\t\t
          \n\n\t\t\t\t\t
        • :
        • \n\n\t\t\t\t\t
        • Gamma:
        • \n\t\t\t\t\t
        • Brightness:
        • \n\t\t\t\t\t
        • Contrast:
        • \n\t\t\t\t
          \n\t\t\t\t\n\t\t\t\t
          \n\t\t\t\t\t
          \n\t\t\t\t\t\tMATCAP\n\t\t\t\t\t
          \n\n\t\t\t\t\t
        • \n\t\t\t\t\t\t
          \n\t\t\t\t\t
        • \n\t\t\t\t
          \n\n\t\t\t\t
          \n\t\t\t\t\t
          \n\t\t\t\t\t\tColor\n\t\t\t\t\t
          \n\n\t\t\t\t\t\n\t\t\t\t
          \n\n\n\t\t\t\t
          \n\t\t\t\t\t
          \n\t\t\t\t\t\tElevation\n\t\t\t\t\t
          \n\n\t\t\t\t\t
        • :
          \t
        • \n\n\t\t\t\t\t
        • \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
        • \n\n\t\t\t\t\t
        • \n\t\t\t\t\t\tGradient Scheme:\n\t\t\t\t\t\t
          \n\t\t\t\t\t\t
          \n\t\t\t\t\t
        • \n\t\t\t\t
          \n\n\t\t\t\t
          \n\t\t\t\t\t
          \n\t\t\t\t\t\tTransition\n\t\t\t\t\t
          \n\n\t\t\t\t\t
        • transition:
          \t
        • \n\t\t\t\t
          \n\n\t\t\t\t
          \n\t\t\t\t\t
          \n\t\t\t\t\t\tIntensity\n\t\t\t\t\t
          \n\n\t\t\t\t\t
        • Range:
          \t
        • \n\t\t\t\t\t
        • Gamma:
          \t
        • \n\t\t\t\t\t
        • Brightness:
          \t
        • \n\t\t\t\t\t
        • Contrast:
          \t
        • \n\t\t\t\t
          \n\n\t\t\t\t
          \n\t\t\t\t\t
          \n\t\t\t\t\t\tGPS Time\n\t\t\t\t\t
          \n\n\t\t\t\t
          \n\t\t\t\t\n\t\t\t\t
          \n\t\t\t\t\t
          \n\t\t\t\t\t\tIndices\n\t\t\t\t\t
          \n\t\t\t\t
          \n\n\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\tpanel.i18n();\n\t\tthis.container.append(panel);\n\n\t\t{ // POINT SIZE\n\t\t\tlet sldPointSize = panel.find(`#sldPointSize`);\n\t\t\tlet lblPointSize = panel.find(`#lblPointSize`);\n\n\t\t\tsldPointSize.slider({\n\t\t\t\tvalue: material.size,\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 3,\n\t\t\t\tstep: 0.01,\n\t\t\t\tslide: function (event, ui) { material.size = ui.value; }\n\t\t\t});\n\n\t\t\tlet update = (e) => {\n\t\t\t\tlblPointSize.html(material.size.toFixed(2));\n\t\t\t\tsldPointSize.slider({value: material.size});\n\t\t\t};\n\t\t\tthis.addVolatileListener(material, \"point_size_changed\", update);\n\t\t\t\n\t\t\tupdate();\n\t\t}\n\n\t\t{ // MINIMUM POINT SIZE\n\t\t\tlet sldMinPointSize = panel.find(`#sldMinPointSize`);\n\t\t\tlet lblMinPointSize = panel.find(`#lblMinPointSize`);\n\n\t\t\tsldMinPointSize.slider({\n\t\t\t\tvalue: material.size,\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 3,\n\t\t\t\tstep: 0.01,\n\t\t\t\tslide: function (event, ui) { material.minSize = ui.value; }\n\t\t\t});\n\n\t\t\tlet update = (e) => {\n\t\t\t\tlblMinPointSize.html(material.minSize.toFixed(2));\n\t\t\t\tsldMinPointSize.slider({value: material.minSize});\n\t\t\t};\n\t\t\tthis.addVolatileListener(material, \"point_size_changed\", update);\n\t\t\t\n\t\t\tupdate();\n\t\t}\n\n\t\t{ // POINT SIZING\n\t\t\tlet strSizeType = Object.keys(PointSizeType)[material.pointSizeType];\n\n\t\t\tlet opt = panel.find(`#optPointSizing`);\n\t\t\topt.selectmenu();\n\t\t\topt.val(strSizeType).selectmenu('refresh');\n\n\t\t\topt.selectmenu({\n\t\t\t\tchange: (event, ui) => {\n\t\t\t\t\tmaterial.pointSizeType = PointSizeType[ui.item.value];\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t{ // SHAPE\n\t\t\tlet opt = panel.find(`#optShape`);\n\n\t\t\topt.selectmenu({\n\t\t\t\tchange: (event, ui) => {\n\t\t\t\t\tlet value = ui.item.value;\n\n\t\t\t\t\tmaterial.shape = PointShape[value];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlet update = () => {\n\t\t\t\tlet typename = Object.keys(PointShape)[material.shape];\n\n\t\t\t\topt.selectmenu().val(typename).selectmenu('refresh');\n\t\t\t};\n\t\t\tthis.addVolatileListener(material, \"point_shape_changed\", update);\n\n\t\t\tupdate();\n\t\t}\n\n\t\t{ // BACKFACE CULLING\n\t\t\t\n\t\t\tlet opt = panel.find(`#set_backface_culling`);\n\t\t\topt.click(() => {\n\t\t\t\tmaterial.backfaceCulling = opt.prop(\"checked\");\n\t\t\t});\n\t\t\tlet update = () => {\n\t\t\t\tlet value = material.backfaceCulling;\n\t\t\t\topt.prop(\"checked\", value);\n\t\t\t};\n\t\t\tthis.addVolatileListener(material, \"backface_changed\", update);\n\t\t\tupdate();\n\n\t\t\tlet blockBackface = $('#materials_backface_container');\n\t\t\tblockBackface.css('display', 'none');\n\n\t\t\tconst pointAttributes = pointcloud.pcoGeometry.pointAttributes;\n\t\t\tconst hasNormals = pointAttributes.hasNormals ? pointAttributes.hasNormals() : false;\n\t\t\tif(hasNormals) {\n\t\t\t\tblockBackface.css('display', 'block');\n\t\t\t}\n\t\t\t/*\n\t\t\topt.checkboxradio({\n\t\t\t\tclicked: (event, ui) => {\n\t\t\t\t\t// let value = ui.item.value;\n\t\t\t\t\tlet value = ui.item.checked;\n\t\t\t\t\tconsole.log(value);\n\t\t\t\t\tmaterial.backfaceCulling = value; // $('#set_freeze').prop(\"checked\");\n\t\t\t\t}\n\t\t\t});\n\t\t\t*/\n\t\t}\n\n\t\t{ // OPACITY\n\t\t\tlet sldOpacity = panel.find(`#sldOpacity`);\n\t\t\tlet lblOpacity = panel.find(`#lblOpacity`);\n\n\t\t\tsldOpacity.slider({\n\t\t\t\tvalue: material.opacity,\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 1,\n\t\t\t\tstep: 0.001,\n\t\t\t\tslide: function (event, ui) { \n\t\t\t\t\tmaterial.opacity = ui.value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlet update = (e) => {\n\t\t\t\tlblOpacity.html(material.opacity.toFixed(2));\n\t\t\t\tsldOpacity.slider({value: material.opacity});\n\t\t\t};\n\t\t\tthis.addVolatileListener(material, \"opacity_changed\", update);\n\n\t\t\tupdate();\n\t\t}\n\n\t\t{\n\n\t\t\tconst attributes = pointcloud.pcoGeometry.pointAttributes.attributes;\n\n\t\t\tlet options = [];\n\n\t\t\toptions.push(...attributes.map(a => a.name));\n\n\t\t\tconst intensityIndex = options.indexOf(\"intensity\");\n\t\t\tif(intensityIndex >= 0){\n\t\t\t\toptions.splice(intensityIndex + 1, 0, \"intensity gradient\");\n\t\t\t}\n\n\t\t\toptions.push(\n\t\t\t\t\"elevation\",\n\t\t\t\t\"color\",\n\t\t\t\t'matcap',\n\t\t\t\t'indices',\n\t\t\t\t'level of detail',\n\t\t\t\t'composite'\n\t\t\t);\n\n\t\t\tconst blacklist = [\n\t\t\t\t\"POSITION_CARTESIAN\",\n\t\t\t\t\"position\",\n\t\t\t];\n\n\t\t\toptions = options.filter(o => !blacklist.includes(o));\n\n\t\t\tlet attributeSelection = panel.find('#optMaterial');\n\t\t\tfor(let option of options){\n\t\t\t\tlet elOption = $(``);\n\t\t\t\tattributeSelection.append(elOption);\n\t\t\t}\n\n\t\t\tlet updateMaterialPanel = (event, ui) => {\n\t\t\t\tlet selectedValue = attributeSelection.selectmenu().val();\n\t\t\t\tmaterial.activeAttributeName = selectedValue;\n\n\t\t\t\tlet attribute = pointcloud.getAttribute(selectedValue);\n\n\t\t\t\tif(selectedValue === \"intensity gradient\"){\n\t\t\t\t\tattribute = pointcloud.getAttribute(\"intensity\");\n\t\t\t\t}\n\n\t\t\t\tconst isIntensity = attribute ? [\"intensity\", \"intensity gradient\"].includes(attribute.name) : false;\n\n\t\t\t\tif(isIntensity){\n\t\t\t\t\tif(pointcloud.material.intensityRange[0] === Infinity){\n\t\t\t\t\t\tpointcloud.material.intensityRange = attribute.range;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst [min, max] = attribute.range;\n\n\t\t\t\t\tpanel.find('#sldIntensityRange').slider({\n\t\t\t\t\t\trange: true,\n\t\t\t\t\t\tmin: min, max: max, step: 0.01,\n\t\t\t\t\t\tvalues: [min, max],\n\t\t\t\t\t\tslide: (event, ui) => {\n\t\t\t\t\t\t\tlet min = ui.values[0];\n\t\t\t\t\t\t\tlet max = ui.values[1];\n\t\t\t\t\t\t\tmaterial.intensityRange = [min, max];\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else if(attribute){\n\t\t\t\t\tconst [min, max] = attribute.range;\n\n\t\t\t\t\tlet selectedRange = material.getRange(attribute.name);\n\n\t\t\t\t\tif(!selectedRange){\n\t\t\t\t\t\tselectedRange = [...attribute.range];\n\t\t\t\t\t}\n\n\t\t\t\t\tlet minMaxAreNumbers = typeof min === \"number\" && typeof max === \"number\";\n\n\t\t\t\t\tif(minMaxAreNumbers){\n\t\t\t\t\t\tpanel.find('#sldExtraRange').slider({\n\t\t\t\t\t\t\trange: true,\n\t\t\t\t\t\t\tmin: min, \n\t\t\t\t\t\t\tmax: max, \n\t\t\t\t\t\t\tstep: 0.01,\n\t\t\t\t\t\t\tvalues: selectedRange,\n\t\t\t\t\t\t\tslide: (event, ui) => {\n\t\t\t\t\t\t\t\tlet [a, b] = ui.values;\n\n\t\t\t\t\t\t\t\tmaterial.setRange(attribute.name, [a, b]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tlet blockWeights = $('#materials\\\\.composite_weight_container');\n\t\t\t\tlet blockElevation = $('#materials\\\\.elevation_container');\n\t\t\t\tlet blockRGB = $('#materials\\\\.rgb_container');\n\t\t\t\tlet blockExtra = $('#materials\\\\.extra_container');\n\t\t\t\tlet blockColor = $('#materials\\\\.color_container');\n\t\t\t\tlet blockIntensity = $('#materials\\\\.intensity_container');\n\t\t\t\tlet blockIndex = $('#materials\\\\.index_container');\n\t\t\t\tlet blockTransition = $('#materials\\\\.transition_container');\n\t\t\t\tlet blockGps = $('#materials\\\\.gpstime_container');\n\t\t\t\tlet blockMatcap = $('#materials\\\\.matcap_container');\n\n\t\t\t\tblockIndex.css('display', 'none');\n\t\t\t\tblockIntensity.css('display', 'none');\n\t\t\t\tblockElevation.css('display', 'none');\n\t\t\t\tblockRGB.css('display', 'none');\n\t\t\t\tblockExtra.css('display', 'none');\n\t\t\t\tblockColor.css('display', 'none');\n\t\t\t\tblockWeights.css('display', 'none');\n\t\t\t\tblockTransition.css('display', 'none');\n\t\t\t\tblockMatcap.css('display', 'none');\n\t\t\t\tblockGps.css('display', 'none');\n\n\t\t\t\tif (selectedValue === 'composite') {\n\t\t\t\t\tblockWeights.css('display', 'block');\n\t\t\t\t\tblockElevation.css('display', 'block');\n\t\t\t\t\tblockRGB.css('display', 'block');\n\t\t\t\t\tblockIntensity.css('display', 'block');\n\t\t\t\t} else if (selectedValue === 'elevation') {\n\t\t\t\t\tblockElevation.css('display', 'block');\n\t\t\t\t} else if (selectedValue === 'RGB and Elevation') {\n\t\t\t\t\tblockRGB.css('display', 'block');\n\t\t\t\t\tblockElevation.css('display', 'block');\n\t\t\t\t} else if (selectedValue === 'rgba') {\n\t\t\t\t\tblockRGB.css('display', 'block');\n\t\t\t\t} else if (selectedValue === 'color') {\n\t\t\t\t\tblockColor.css('display', 'block');\n\t\t\t\t} else if (selectedValue === 'intensity') {\n\t\t\t\t\tblockIntensity.css('display', 'block');\n\t\t\t\t} else if (selectedValue === 'intensity gradient') {\n\t\t\t\t\tblockIntensity.css('display', 'block');\n\t\t\t\t} else if (selectedValue === \"indices\" ){\n\t\t\t\t\tblockIndex.css('display', 'block');\n\t\t\t\t} else if (selectedValue === \"matcap\" ){\n\t\t\t\t\tblockMatcap.css('display', 'block');\n\t\t\t\t} else if (selectedValue === \"classification\" ){\n\t\t\t\t\t// add classification color selctor?\n\t\t\t\t} else if (selectedValue === \"gps-time\" ){\n\t\t\t\t\tblockGps.css('display', 'block');\n\t\t\t\t} else if(selectedValue === \"number of returns\"){\n\t\t\t\t\t\n\t\t\t\t} else if(selectedValue === \"return number\"){\n\t\t\t\t\t\n\t\t\t\t} else if([\"source id\", \"point source id\"].includes(selectedValue)){\n\t\t\t\t\t\n\t\t\t\t} else{\n\t\t\t\t\tblockExtra.css('display', 'block');\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tattributeSelection.selectmenu({change: updateMaterialPanel});\n\n\t\t\tlet update = () => {\n\t\t\t\tattributeSelection.val(material.activeAttributeName).selectmenu('refresh');\n\t\t\t};\n\t\t\tthis.addVolatileListener(material, \"point_color_type_changed\", update);\n\t\t\tthis.addVolatileListener(material, \"active_attribute_changed\", update);\n\n\t\t\tupdate();\n\t\t\tupdateMaterialPanel();\n\t\t}\n\n\t\t{\n\t\t\tconst schemes = Object.keys(Potree.Gradients).map(name => ({name: name, values: Gradients[name]}));\n\n\t\t\tlet elSchemeContainer = panel.find(\"#elevation_gradient_scheme_selection\");\n\n\t\t\tfor(let scheme of schemes){\n\t\t\t\tlet elScheme = $(`\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t`);\n\n\t\t\t\tconst svg = Potree.Utils.createSvgGradient(scheme.values);\n\t\t\t\tsvg.setAttributeNS(null, \"class\", `button-icon`);\n\n\t\t\t\telScheme.append($(svg));\n\n\t\t\t\telScheme.click( () => {\n\t\t\t\t\tmaterial.gradient = Gradients[scheme.name];\n\t\t\t\t});\n\n\t\t\t\telSchemeContainer.append(elScheme);\n\t\t\t}\n\t\t}\n\n\t\t{\n\t\t\tlet matcaps = [\n\t\t\t\t{name: \"Normals\", icon: `${Potree.resourcePath}/icons/matcap/check_normal+y.jpg`}, \n\t\t\t\t{name: \"Basic 1\", icon: `${Potree.resourcePath}/icons/matcap/basic_1.jpg`}, \n\t\t\t\t{name: \"Basic 2\", icon: `${Potree.resourcePath}/icons/matcap/basic_2.jpg`}, \n\t\t\t\t{name: \"Basic Dark\", icon: `${Potree.resourcePath}/icons/matcap/basic_dark.jpg`}, \n\t\t\t\t{name: \"Basic Side\", icon: `${Potree.resourcePath}/icons/matcap/basic_side.jpg`}, \n\t\t\t\t{name: \"Ceramic Dark\", icon: `${Potree.resourcePath}/icons/matcap/ceramic_dark.jpg`}, \n\t\t\t\t{name: \"Ceramic Lightbulb\", icon: `${Potree.resourcePath}/icons/matcap/ceramic_lightbulb.jpg`}, \n\t\t\t\t{name: \"Clay Brown\", icon: `${Potree.resourcePath}/icons/matcap/clay_brown.jpg`}, \n\t\t\t\t{name: \"Clay Muddy\", icon: `${Potree.resourcePath}/icons/matcap/clay_muddy.jpg`}, \n\t\t\t\t{name: \"Clay Studio\", icon: `${Potree.resourcePath}/icons/matcap/clay_studio.jpg`}, \n\t\t\t\t{name: \"Resin\", icon: `${Potree.resourcePath}/icons/matcap/resin.jpg`}, \n\t\t\t\t{name: \"Skin\", icon: `${Potree.resourcePath}/icons/matcap/skin.jpg`}, \n\t\t\t\t{name: \"Jade\", icon: `${Potree.resourcePath}/icons/matcap/jade.jpg`}, \n\t\t\t\t{name: \"Metal_ Anisotropic\", icon: `${Potree.resourcePath}/icons/matcap/metal_anisotropic.jpg`}, \n\t\t\t\t{name: \"Metal Carpaint\", icon: `${Potree.resourcePath}/icons/matcap/metal_carpaint.jpg`}, \n\t\t\t\t{name: \"Metal Lead\", icon: `${Potree.resourcePath}/icons/matcap/metal_lead.jpg`}, \n\t\t\t\t{name: \"Metal Shiny\", icon: `${Potree.resourcePath}/icons/matcap/metal_shiny.jpg`}, \n\t\t\t\t{name: \"Pearl\", icon: `${Potree.resourcePath}/icons/matcap/pearl.jpg`}, \n\t\t\t\t{name: \"Toon\", icon: `${Potree.resourcePath}/icons/matcap/toon.jpg`},\n\t\t\t\t{name: \"Check Rim Light\", icon: `${Potree.resourcePath}/icons/matcap/check_rim_light.jpg`}, \n\t\t\t\t{name: \"Check Rim Dark\", icon: `${Potree.resourcePath}/icons/matcap/check_rim_dark.jpg`}, \n\t\t\t\t{name: \"Contours 1\", icon: `${Potree.resourcePath}/icons/matcap/contours_1.jpg`}, \n\t\t\t\t{name: \"Contours 2\", icon: `${Potree.resourcePath}/icons/matcap/contours_2.jpg`}, \n\t\t\t\t{name: \"Contours 3\", icon: `${Potree.resourcePath}/icons/matcap/contours_3.jpg`}, \n\t\t\t\t{name: \"Reflection Check Horizontal\", icon: `${Potree.resourcePath}/icons/matcap/reflection_check_horizontal.jpg`}, \n\t\t\t\t{name: \"Reflection Check Vertical\", icon: `${Potree.resourcePath}/icons/matcap/reflection_check_vertical.jpg`}, \n\t\t\t];\n\n\t\t\tlet elMatcapContainer = panel.find(\"#matcap_scheme_selection\");\n\n\t\t\tfor(let matcap of matcaps){\n\t\t\t\tlet elMatcap = $(`\n\t\t\t\t\t\t\n\t\t\t\t`);\n\n\t\t\t\telMatcap.click( () => {\n\t\t\t\t\tmaterial.matcap = matcap.icon.substring(matcap.icon.lastIndexOf('/'));\n\t\t\t\t});\n\n\t\t\t\telMatcapContainer.append(elMatcap);\n\t\t\t}\n\t\t}\n\n\t\t{\n\t\t\tpanel.find('#sldRGBGamma').slider({\n\t\t\t\tvalue: material.rgbGamma,\n\t\t\t\tmin: 0, max: 4, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.rgbGamma = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldRGBContrast').slider({\n\t\t\t\tvalue: material.rgbContrast,\n\t\t\t\tmin: -1, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.rgbContrast = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldRGBBrightness').slider({\n\t\t\t\tvalue: material.rgbBrightness,\n\t\t\t\tmin: -1, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.rgbBrightness = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldExtraGamma').slider({\n\t\t\t\tvalue: material.extraGamma,\n\t\t\t\tmin: 0, max: 4, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.extraGamma = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldExtraBrightness').slider({\n\t\t\t\tvalue: material.extraBrightness,\n\t\t\t\tmin: -1, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.extraBrightness = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldExtraContrast').slider({\n\t\t\t\tvalue: material.extraContrast,\n\t\t\t\tmin: -1, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.extraContrast = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldHeightRange').slider({\n\t\t\t\trange: true,\n\t\t\t\tmin: 0, max: 1000, step: 0.01,\n\t\t\t\tvalues: [0, 1000],\n\t\t\t\tslide: (event, ui) => {\n\t\t\t\t\tmaterial.heightMin = ui.values[0];\n\t\t\t\t\tmaterial.heightMax = ui.values[1];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tpanel.find('#sldIntensityGamma').slider({\n\t\t\t\tvalue: material.intensityGamma,\n\t\t\t\tmin: 0, max: 4, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.intensityGamma = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldIntensityContrast').slider({\n\t\t\t\tvalue: material.intensityContrast,\n\t\t\t\tmin: -1, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.intensityContrast = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldIntensityBrightness').slider({\n\t\t\t\tvalue: material.intensityBrightness,\n\t\t\t\tmin: -1, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.intensityBrightness = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldWeightRGB').slider({\n\t\t\t\tvalue: material.weightRGB,\n\t\t\t\tmin: 0, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.weightRGB = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldWeightIntensity').slider({\n\t\t\t\tvalue: material.weightIntensity,\n\t\t\t\tmin: 0, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.weightIntensity = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldWeightElevation').slider({\n\t\t\t\tvalue: material.weightElevation,\n\t\t\t\tmin: 0, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.weightElevation = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldWeightClassification').slider({\n\t\t\t\tvalue: material.weightClassification,\n\t\t\t\tmin: 0, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.weightClassification = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldWeightReturnNumber').slider({\n\t\t\t\tvalue: material.weightReturnNumber,\n\t\t\t\tmin: 0, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.weightReturnNumber = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldWeightSourceID').slider({\n\t\t\t\tvalue: material.weightSourceID,\n\t\t\t\tmin: 0, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.weightSourceID = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find(`#materials\\\\.color\\\\.picker`).spectrum({\n\t\t\t\tflat: true,\n\t\t\t\tshowInput: true,\n\t\t\t\tpreferredFormat: 'rgb',\n\t\t\t\tcancelText: '',\n\t\t\t\tchooseText: 'Apply',\n\t\t\t\tcolor: `#${material.color.getHexString()}`,\n\t\t\t\tmove: color => {\n\t\t\t\t\tlet cRGB = color.toRgb();\n\t\t\t\t\tlet tc = new THREE.Color().setRGB(cRGB.r / 255, cRGB.g / 255, cRGB.b / 255);\n\t\t\t\t\tmaterial.color = tc;\n\t\t\t\t},\n\t\t\t\tchange: color => {\n\t\t\t\t\tlet cRGB = color.toRgb();\n\t\t\t\t\tlet tc = new THREE.Color().setRGB(cRGB.r / 255, cRGB.g / 255, cRGB.b / 255);\n\t\t\t\t\tmaterial.color = tc;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.addVolatileListener(material, \"color_changed\", () => {\n\t\t\t\tpanel.find(`#materials\\\\.color\\\\.picker`)\n\t\t\t\t\t.spectrum('set', `#${material.color.getHexString()}`);\n\t\t\t});\n\n\t\t\tlet updateHeightRange = function () {\n\t\t\t\t\n\n\t\t\t\tlet aPosition = pointcloud.getAttribute(\"position\");\n\n\t\t\t\tlet bMin, bMax;\n\n\t\t\t\tif(aPosition){\n\t\t\t\t\t// for new format 2.0 and loader that contain precomputed min/max of attributes\n\t\t\t\t\tlet min = aPosition.range[0][2];\n\t\t\t\t\tlet max = aPosition.range[1][2];\n\t\t\t\t\tlet width = max - min;\n\n\t\t\t\t\tbMin = min - 0.2 * width;\n\t\t\t\t\tbMax = max + 0.2 * width;\n\t\t\t\t}else{\n\t\t\t\t\t// for format up until exlusive 2.0\n\t\t\t\t\tlet box = [pointcloud.pcoGeometry.tightBoundingBox, pointcloud.getBoundingBoxWorld()]\n\t\t\t\t\t\t.find(v => v !== undefined);\n\n\t\t\t\t\tpointcloud.updateMatrixWorld(true);\n\t\t\t\t\tbox = Utils.computeTransformedBoundingBox(box, pointcloud.matrixWorld);\n\n\t\t\t\t\tlet bWidth = box.max.z - box.min.z;\n\t\t\t\t\tbMin = box.min.z - 0.2 * bWidth;\n\t\t\t\t\tbMax = box.max.z + 0.2 * bWidth;\n\t\t\t\t}\n\n\t\t\t\tlet range = material.elevationRange;\n\n\t\t\t\tpanel.find('#lblHeightRange').html(`${range[0].toFixed(2)} to ${range[1].toFixed(2)}`);\n\t\t\t\tpanel.find('#sldHeightRange').slider({min: bMin, max: bMax, values: range});\n\t\t\t};\n\n\t\t\tlet updateExtraRange = function () {\n\n\t\t\t\tlet attributeName = material.activeAttributeName;\n\t\t\t\tlet attribute = pointcloud.getAttribute(attributeName);\n\n\t\t\t\tif(attribute == null){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tlet range = material.getRange(attributeName);\n\n\t\t\t\tif(range == null){\n\t\t\t\t\trange = attribute.range;\n\t\t\t\t}\n\n\t\t\t\t// currently only supporting scalar ranges.\n\t\t\t\t// rgba, normals, positions, etc have vector ranges, however\n\t\t\t\tlet isValidRange = (typeof range[0] === \"number\") && (typeof range[1] === \"number\");\n\t\t\t\tif(!isValidRange){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif(range){\n\t\t\t\t\tlet msg = `${range[0].toFixed(2)} to ${range[1].toFixed(2)}`;\n\t\t\t\t\tpanel.find('#lblExtraRange').html(msg);\n\t\t\t\t}else{\n\t\t\t\t\tpanel.find(\"could not deduce range\");\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tlet updateIntensityRange = function () {\n\t\t\t\tlet range = material.intensityRange;\n\n\t\t\t\tpanel.find('#lblIntensityRange').html(`${parseInt(range[0])} to ${parseInt(range[1])}`);\n\t\t\t};\n\n\t\t\t{\n\t\t\t\tupdateHeightRange();\n\t\t\t\tpanel.find(`#sldHeightRange`).slider('option', 'min');\n\t\t\t\tpanel.find(`#sldHeightRange`).slider('option', 'max');\n\t\t\t}\n\n\t\t\t{\n\t\t\t\tlet elGradientRepeat = panel.find(\"#gradient_repeat_option\");\n\t\t\t\telGradientRepeat.selectgroup({title: \"Gradient\"});\n\n\t\t\t\telGradientRepeat.find(\"input\").click( (e) => {\n\t\t\t\t\tthis.viewer.setElevationGradientRepeat(ElevationGradientRepeat[e.target.value]);\n\t\t\t\t});\n\n\t\t\t\tlet current = Object.keys(ElevationGradientRepeat)\n\t\t\t\t\t.filter(key => ElevationGradientRepeat[key] === this.viewer.elevationGradientRepeat);\n\t\t\t\telGradientRepeat.find(`input[value=${current}]`).trigger(\"click\");\n\t\t\t}\n\n\t\t\tlet onIntensityChange = () => {\n\t\t\t\tlet gamma = material.intensityGamma;\n\t\t\t\tlet contrast = material.intensityContrast;\n\t\t\t\tlet brightness = material.intensityBrightness;\n\n\t\t\t\tupdateIntensityRange();\n\n\t\t\t\tpanel.find('#lblIntensityGamma').html(gamma.toFixed(2));\n\t\t\t\tpanel.find('#lblIntensityContrast').html(contrast.toFixed(2));\n\t\t\t\tpanel.find('#lblIntensityBrightness').html(brightness.toFixed(2));\n\n\t\t\t\tpanel.find('#sldIntensityGamma').slider({value: gamma});\n\t\t\t\tpanel.find('#sldIntensityContrast').slider({value: contrast});\n\t\t\t\tpanel.find('#sldIntensityBrightness').slider({value: brightness});\n\t\t\t};\n\n\t\t\tlet onRGBChange = () => {\n\t\t\t\tlet gamma = material.rgbGamma;\n\t\t\t\tlet contrast = material.rgbContrast;\n\t\t\t\tlet brightness = material.rgbBrightness;\n\n\t\t\t\tpanel.find('#lblRGBGamma').html(gamma.toFixed(2));\n\t\t\t\tpanel.find('#lblRGBContrast').html(contrast.toFixed(2));\n\t\t\t\tpanel.find('#lblRGBBrightness').html(brightness.toFixed(2));\n\n\t\t\t\tpanel.find('#sldRGBGamma').slider({value: gamma});\n\t\t\t\tpanel.find('#sldRGBContrast').slider({value: contrast});\n\t\t\t\tpanel.find('#sldRGBBrightness').slider({value: brightness});\n\t\t\t};\n\n\t\t\tthis.addVolatileListener(material, \"material_property_changed\", updateExtraRange);\n\t\t\tthis.addVolatileListener(material, \"material_property_changed\", updateHeightRange);\n\t\t\tthis.addVolatileListener(material, \"material_property_changed\", onIntensityChange);\n\t\t\tthis.addVolatileListener(material, \"material_property_changed\", onRGBChange);\n\n\t\t\tupdateExtraRange();\n\t\t\tupdateHeightRange();\n\t\t\tonIntensityChange();\n\t\t\tonRGBChange();\n\t\t}\n\n\t}\n\n\t\n\n\tsetMeasurement(object){\n\n\t\tlet TYPE = {\n\t\t\tDISTANCE: {panel: DistancePanel},\n\t\t\tAREA: {panel: AreaPanel},\n\t\t\tPOINT: {panel: PointPanel},\n\t\t\tANGLE: {panel: AnglePanel},\n\t\t\tHEIGHT: {panel: HeightPanel},\n\t\t\tPROFILE: {panel: ProfilePanel},\n\t\t\tVOLUME: {panel: VolumePanel},\n\t\t\tCIRCLE: {panel: CirclePanel},\n\t\t\tOTHER: {panel: PointPanel},\n\t\t};\n\n\t\tlet getType = (measurement) => {\n\t\t\tif (measurement instanceof Measure) {\n\t\t\t\tif (measurement.showDistances && !measurement.showArea && !measurement.showAngles) {\n\t\t\t\t\treturn TYPE.DISTANCE;\n\t\t\t\t} else if (measurement.showDistances && measurement.showArea && !measurement.showAngles) {\n\t\t\t\t\treturn TYPE.AREA;\n\t\t\t\t} else if (measurement.maxMarkers === 1) {\n\t\t\t\t\treturn TYPE.POINT;\n\t\t\t\t} else if (!measurement.showDistances && !measurement.showArea && measurement.showAngles) {\n\t\t\t\t\treturn TYPE.ANGLE;\n\t\t\t\t} else if (measurement.showHeight) {\n\t\t\t\t\treturn TYPE.HEIGHT;\n\t\t\t\t} else if (measurement.showCircle) {\n\t\t\t\t\treturn TYPE.CIRCLE;\n\t\t\t\t} else {\n\t\t\t\t\treturn TYPE.OTHER;\n\t\t\t\t}\n\t\t\t} else if (measurement instanceof Profile) {\n\t\t\t\treturn TYPE.PROFILE;\n\t\t\t} else if (measurement instanceof Volume) {\n\t\t\t\treturn TYPE.VOLUME;\n\t\t\t}\n\t\t};\n\n\t\t//this.container.html(\"measurement\");\n\n\t\tlet type = getType(object);\n\t\tlet Panel = type.panel;\n\n\t\tlet panel = new Panel(this.viewer, object, this);\n\t\tthis.container.append(panel.elContent);\n\t}\n\n\tsetCamera(camera){\n\t\tlet panel = new CameraPanel(this.viewer, this);\n\t\tthis.container.append(panel.elContent);\n\t}\n\n\tsetAnnotation(annotation){\n\t\tlet panel = new AnnotationPanel(this.viewer, this, annotation);\n\t\tthis.container.append(panel.elContent);\n\t}\n\n\tsetCameraAnimation(animation){\n\t\tlet panel = new CameraAnimationPanel(this.viewer, this, animation)\n\t\tthis.container.append(panel.elContent);\n\t}\n\n}\n","\r\nfunction addCommas(nStr){\r\n\tnStr += '';\r\n\tlet x = nStr.split('.');\r\n\tlet x1 = x[0];\r\n\tlet x2 = x.length > 1 ? '.' + x[1] : '';\r\n\tlet rgx = /(\\d+)(\\d{3})/;\r\n\twhile (rgx.test(x1)) {\r\n\t\tx1 = x1.replace(rgx, '$1' + ',' + '$2');\r\n\t}\r\n\treturn x1 + x2;\r\n};\r\n\r\nfunction format(value){\r\n\treturn addCommas(value.toFixed(3));\r\n};\r\n\r\nexport class HierarchicalSlider{\r\n\r\n\tconstructor(params = {}){\r\n\t\t\r\n\t\tthis.element = document.createElement(\"div\");\r\n\r\n\t\tthis.labels = [];\r\n\t\tthis.sliders = [];\r\n\t\tthis.range = params.range != null ? params.range : [0, 1];\r\n\t\tthis.slide = params.slide != null ? params.slide : null;\r\n\t\tthis.step = params.step != null ? params.step : 0.0001;\r\n\r\n\t\tlet levels = params.levels != null ? params.levels : 1;\r\n\r\n\t\tfor(let level = 0; level < levels; level++){\r\n\t\t\tthis.addLevel();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tsetRange(range){\r\n\t\tthis.range = [...range];\r\n\r\n\t\t{ // root slider\r\n\t\t\tlet slider = this.sliders[0];\r\n\r\n\t\t\t$(slider).slider({\r\n\t\t\t\tmin: range[0],\r\n\t\t\t\tmax: range[1],\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfor(let i = 1; i < this.sliders.length; i++){\r\n\t\t\tlet parentSlider = this.sliders[i - 1];\r\n\t\t\tlet slider = this.sliders[i];\r\n\r\n\t\t\tlet parentValues = $(parentSlider).slider(\"option\", \"values\");\r\n\t\t\tlet childRange = [...parentValues];\r\n\r\n\t\t\t$(slider).slider({\r\n\t\t\t\tmin: childRange[0],\r\n\t\t\t\tmax: childRange[1],\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\tthis.updateLabels();\r\n\t}\r\n\r\n\tsetValues(values){\r\n\t\tfor(let slider of this.sliders){\r\n\t\t\t$(slider).slider({\r\n\t\t\t\tvalues: [...values],\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.updateLabels();\r\n\t}\r\n\r\n\taddLevel(){\r\n\t\tconst elLevel = document.createElement(\"li\");\r\n\t\tconst elRange = document.createTextNode(\"Range: \");\r\n\t\tconst label = document.createElement(\"span\");\r\n\t\tconst slider = document.createElement(\"div\");\r\n\r\n\t\tlet level = this.sliders.length;\r\n\t\tlet [min, max] = [0, 0];\r\n\r\n\t\tif(this.sliders.length === 0){\r\n\t\t\t[min, max] = this.range;\r\n\t\t}else{\r\n\t\t\tlet parentSlider = this.sliders[this.sliders.length - 1];\r\n\t\t\t[min, max] = $(parentSlider).slider(\"option\", \"values\");\r\n\t\t}\r\n\t\t\r\n\t\t$(slider).slider({\r\n\t\t\trange: true, \r\n\t\t\tmin: min, \r\n\t\t\tmax: max,\r\n\t\t\tstep: this.step,\r\n\t\t\tvalues: [min, max],\r\n\t\t\tslide: (event, ui) => {\r\n\t\t\t\t\r\n\t\t\t\t// set all descendants to same range\r\n\t\t\t\tlet levels = this.sliders.length;\r\n\t\t\t\tfor(let i = level + 1; i < levels; i++){\r\n\t\t\t\t\tlet descendant = this.sliders[i];\r\n\r\n\t\t\t\t\t$(descendant).slider({\r\n\t\t\t\t\t\trange: true,\r\n\t\t\t\t\t\tmin: ui.values[0],\r\n\t\t\t\t\t\tmax: ui.values[1],\r\n\t\t\t\t\t\tvalues: [...ui.values],\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.slide){\r\n\t\t\t\t\tlet values = [...ui.values];\r\n\r\n\t\t\t\t\tthis.slide({\r\n\t\t\t\t\t\ttarget: this, \r\n\t\t\t\t\t\trange: this.range,\r\n\t\t\t\t\t\tvalues: values,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.updateLabels();\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\telLevel.append(elRange, label, slider);\r\n\r\n\t\tthis.sliders.push(slider);\r\n\t\tthis.labels.push(label);\r\n\t\tthis.element.append(elLevel);\r\n\r\n\t\tthis.updateLabels();\r\n\t}\r\n\r\n\tremoveLevel(){\r\n\r\n\t}\r\n\r\n\tupdateSliders(){\r\n\r\n\t}\r\n\r\n\tupdateLabels(){\r\n\r\n\t\tlet levels = this.sliders.length;\r\n\r\n\t\tfor(let i = 0; i < levels; i++){\r\n\r\n\t\t\tlet slider = this.sliders[i];\r\n\t\t\tlet label = this.labels[i];\r\n\r\n\t\t\tlet [min, max] = $(slider).slider(\"option\", \"values\");\r\n\t\t\tlet strMin = format(min);\r\n\t\t\tlet strMax = format(max);\r\n\t\t\tlet strLabel = `${strMin} to ${strMax}`;\r\n\r\n\t\t\tlabel.innerHTML = strLabel;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\r\n}\r\n\r\n","\nimport {EventDispatcher} from \"../../EventDispatcher.js\";\n\n \nexport class OrientedImageControls extends EventDispatcher{\n\t\n\tconstructor(viewer){\n\t\tsuper();\n\t\t\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\n\t\tthis.originalCam = viewer.scene.getActiveCamera();\n\t\tthis.shearCam = viewer.scene.getActiveCamera().clone();\n\t\tthis.shearCam.rotation.set(this.originalCam.rotation.toArray());\n\t\tthis.shearCam.updateProjectionMatrix();\n\t\tthis.shearCam.updateProjectionMatrix = () => {\n\t\t\treturn this.shearCam.projectionMatrix;\n\t\t};\n\n\t\tthis.image = null;\n\n\t\tthis.fadeFactor = 20;\n\t\tthis.fovDelta = 0;\n\n\t\tthis.fovMin = 0.1;\n\t\tthis.fovMax = 120;\n\n\t\tthis.shear = [0, 0];\n\n\t\t// const style = ``;\n\t\tthis.elUp = $(``);\n\t\tthis.elRight = $(``);\n\t\tthis.elDown = $(``);\n\t\tthis.elLeft = $(``);\n\t\tthis.elExit = $(``);\n\n\t\tthis.elExit.click( () => {\n\t\t\tthis.release();\n\t\t});\n\n\t\tthis.elUp.click(() => {\n\t\t\tconst fovY = viewer.getFOV();\n\t\t\tconst top = Math.tan(THREE.Math.degToRad(fovY / 2));\n\t\t\tthis.shear[1] += 0.1 * top;\n\t\t});\n\n\t\tthis.elRight.click(() => {\n\t\t\tconst fovY = viewer.getFOV();\n\t\t\tconst top = Math.tan(THREE.Math.degToRad(fovY / 2));\n\t\t\tthis.shear[0] += 0.1 * top;\n\t\t});\n\n\t\tthis.elDown.click(() => {\n\t\t\tconst fovY = viewer.getFOV();\n\t\t\tconst top = Math.tan(THREE.Math.degToRad(fovY / 2));\n\t\t\tthis.shear[1] -= 0.1 * top;\n\t\t});\n\n\t\tthis.elLeft.click(() => {\n\t\t\tconst fovY = viewer.getFOV();\n\t\t\tconst top = Math.tan(THREE.Math.degToRad(fovY / 2));\n\t\t\tthis.shear[0] -= 0.1 * top;\n\t\t});\n\n\t\tthis.scene = null;\n\t\tthis.sceneControls = new THREE.Scene();\n\n\t\tlet scroll = (e) => {\n\t\t\tthis.fovDelta += -e.delta * 1.0;\n\t\t};\n\n\t\tthis.addEventListener('mousewheel', scroll);\n\t\t//this.addEventListener(\"mousemove\", onMove);\n\t}\n\n\thasSomethingCaptured(){\n\t\treturn this.image !== null;\n\t}\n\n\tcapture(image){\n\t\tif(this.hasSomethingCaptured()){\n\t\t\treturn;\n\t\t}\n\n\t\tthis.image = image;\n\n\t\tthis.originalFOV = this.viewer.getFOV();\n\t\tthis.originalControls = this.viewer.getControls();\n\n\t\tthis.viewer.setControls(this);\n\t\tthis.viewer.scene.overrideCamera = this.shearCam;\n\n\t\tconst elCanvas = this.viewer.renderer.domElement;\n\t\tconst elRoot = $(elCanvas.parentElement);\n\n\t\tthis.shear = [0, 0];\n\n\n\t\telRoot.append(this.elUp);\n\t\telRoot.append(this.elRight);\n\t\telRoot.append(this.elDown);\n\t\telRoot.append(this.elLeft);\n\t\telRoot.append(this.elExit);\n\t}\n\n\trelease(){\n\t\tthis.image = null;\n\n\t\tthis.viewer.scene.overrideCamera = null;\n\n\t\tthis.elUp.detach();\n\t\tthis.elRight.detach();\n\t\tthis.elDown.detach();\n\t\tthis.elLeft.detach();\n\t\tthis.elExit.detach();\n\n\t\tthis.viewer.setFOV(this.originalFOV);\n\t\tthis.viewer.setControls(this.originalControls);\n\t}\n\n\tsetScene (scene) {\n\t\tthis.scene = scene;\n\t}\n\n\tupdate (delta) {\n\t\t// const view = this.scene.view;\n\n\t\t// let prevTotal = this.shearCam.projectionMatrix.elements.reduce( (a, i) => a + i, 0);\n\n\t\t//const progression = Math.min(1, this.fadeFactor * delta);\n\t\t//const attenuation = Math.max(0, 1 - this.fadeFactor * delta);\n\t\tconst progression = 1;\n\t\tconst attenuation = 0;\n\n\t\tconst oldFov = this.viewer.getFOV();\n\t\tlet fovProgression = progression * this.fovDelta;\n\t\tlet newFov = oldFov * ((1 + fovProgression / 10));\n\n\t\tnewFov = Math.max(this.fovMin, newFov);\n\t\tnewFov = Math.min(this.fovMax, newFov);\n\n\t\tlet diff = newFov / oldFov;\n\n\t\tconst mouse = this.viewer.inputHandler.mouse;\n\t\tconst canvasSize = this.viewer.renderer.getSize(new THREE.Vector2());\n\t\tconst uv = [\n\t\t\t(mouse.x / canvasSize.x),\n\t\t\t((canvasSize.y - mouse.y) / canvasSize.y)\n\t\t];\n\n\t\tconst fovY = newFov;\n\t\tconst aspect = canvasSize.x / canvasSize.y;\n\t\tconst top = Math.tan(THREE.Math.degToRad(fovY / 2));\n\t\tconst height = 2 * top;\n\t\tconst width = aspect * height;\n\n\t\tconst shearRangeX = [\n\t\t\tthis.shear[0] - 0.5 * width,\n\t\t\tthis.shear[0] + 0.5 * width,\n\t\t];\n\n\t\tconst shearRangeY = [\n\t\t\tthis.shear[1] - 0.5 * height,\n\t\t\tthis.shear[1] + 0.5 * height,\n\t\t];\n\n\t\tconst shx = (1 - uv[0]) * shearRangeX[0] + uv[0] * shearRangeX[1];\n\t\tconst shy = (1 - uv[1]) * shearRangeY[0] + uv[1] * shearRangeY[1];\n\n\t\tconst shu = (1 - diff);\n\n\t\tconst newShear = [\n\t\t\t(1 - shu) * this.shear[0] + shu * shx,\n\t\t\t(1 - shu) * this.shear[1] + shu * shy,\n\t\t];\n\t\t\n\t\tthis.shear = newShear;\n\t\tthis.viewer.setFOV(newFov);\n\t\t\n\t\tconst {originalCam, shearCam} = this;\n\n\t\toriginalCam.fov = newFov;\n\t\toriginalCam.updateMatrixWorld()\n\t\toriginalCam.updateProjectionMatrix();\n\t\tshearCam.copy(originalCam);\n\t\tshearCam.rotation.set(...originalCam.rotation.toArray());\n\n\t\tshearCam.updateMatrixWorld();\n\t\tshearCam.projectionMatrix.copy(originalCam.projectionMatrix);\n\n\t\tconst [sx, sy] = this.shear;\n\t\tconst mShear = new THREE.Matrix4().set(\n\t\t\t1, 0, sx, 0,\n\t\t\t0, 1, sy, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1,\n\t\t);\n\n\t\tconst proj = shearCam.projectionMatrix;\n\t\tproj.multiply(mShear);\n\t\tshearCam.projectionMatrixInverse.getInverse( proj );\n\n\t\tlet total = shearCam.projectionMatrix.elements.reduce( (a, i) => a + i, 0);\n\n\t\tthis.fovDelta *= attenuation;\n\t}\n};\n","\r\n\r\nimport {OrientedImageControls} from \"./OrientedImageControls.js\";\r\nimport { EventDispatcher } from \"../../EventDispatcher.js\";\r\n\r\n// https://support.pix4d.com/hc/en-us/articles/205675256-How-are-yaw-pitch-roll-defined\r\n// https://support.pix4d.com/hc/en-us/articles/202558969-How-are-omega-phi-kappa-defined\r\n\r\nfunction createMaterial(){\r\n\r\n\tlet vertexShader = `\r\n\tuniform float uNear;\r\n\tvarying vec2 vUV;\r\n\tvarying vec4 vDebug;\r\n\t\r\n\tvoid main(){\r\n\t\tvDebug = vec4(0.0, 1.0, 0.0, 1.0);\r\n\t\tvec4 modelViewPosition = modelViewMatrix * vec4(position, 1.0);\r\n\t\t// make sure that this mesh is at least in front of the near plane\r\n\t\tmodelViewPosition.xyz += normalize(modelViewPosition.xyz) * uNear;\r\n\t\tgl_Position = projectionMatrix * modelViewPosition;\r\n\t\tvUV = uv;\r\n\t}\r\n\t`;\r\n\r\n\tlet fragmentShader = `\r\n\tuniform sampler2D tColor;\r\n\tuniform float uOpacity;\r\n\tvarying vec2 vUV;\r\n\tvarying vec4 vDebug;\r\n\tvoid main(){\r\n\t\tvec4 color = texture2D(tColor, vUV);\r\n\t\tgl_FragColor = color;\r\n\t\tgl_FragColor.a = uOpacity;\r\n\t}\r\n\t`;\r\n\tconst material = new THREE.ShaderMaterial( {\r\n\t\tuniforms: {\r\n\t\t\t// time: { value: 1.0 },\r\n\t\t\t// resolution: { value: new THREE.Vector2() }\r\n\t\t\ttColor: {value: new THREE.Texture() },\r\n\t\t\tuNear: {value: 0.0},\r\n\t\t\tuOpacity: {value: 1.0},\r\n\t\t},\r\n\t\tvertexShader: vertexShader,\r\n\t\tfragmentShader: fragmentShader,\r\n\t\tside: THREE.DoubleSide,\r\n\t} );\r\n\r\n\tmaterial.side = THREE.DoubleSide;\r\n\r\n\treturn material;\r\n}\r\n\r\nconst planeGeometry = new THREE.PlaneGeometry(1, 1);\r\nconst lineGeometry = new THREE.Geometry();\r\n\r\nlineGeometry.vertices.push(\r\n\tnew THREE.Vector3(-0.5, -0.5, 0),\r\n\tnew THREE.Vector3( 0.5, -0.5, 0),\r\n\tnew THREE.Vector3( 0.5, 0.5, 0),\r\n\tnew THREE.Vector3(-0.5, 0.5, 0),\r\n\tnew THREE.Vector3(-0.5, -0.5, 0),\r\n);\r\n\r\nexport class OrientedImage{\r\n\r\n\tconstructor(id){\r\n\r\n\t\tthis.id = id;\r\n\t\tthis.fov = 1.0;\r\n\t\tthis.position = new THREE.Vector3();\r\n\t\tthis.rotation = new THREE.Vector3();\r\n\t\tthis.width = 0;\r\n\t\tthis.height = 0;\r\n\t\tthis.fov = 1.0;\r\n\r\n\t\tconst material = createMaterial();\r\n\t\tconst lineMaterial = new THREE.LineBasicMaterial( { color: 0x00ff00 } );\r\n\t\tthis.mesh = new THREE.Mesh(planeGeometry, material);\r\n\t\tthis.line = new THREE.Line(lineGeometry, lineMaterial);\r\n\t\tthis.texture = null;\r\n\r\n\t\tthis.mesh.orientedImage = this;\r\n\t}\r\n\r\n\tset(position, rotation, dimension, fov){\r\n\r\n\t\tlet radians = rotation.map(THREE.Math.degToRad);\r\n\r\n\t\tthis.position.set(...position);\r\n\t\tthis.mesh.position.set(...position);\r\n\r\n\t\tthis.rotation.set(...radians);\r\n\t\tthis.mesh.rotation.set(...radians);\r\n\r\n\t\t[this.width, this.height] = dimension;\r\n\t\tthis.mesh.scale.set(this.width / this.height, 1, 1);\r\n\r\n\t\tthis.fov = fov;\r\n\r\n\t\tthis.updateTransform();\r\n\t}\r\n\r\n\tupdateTransform(){\r\n\t\tlet {mesh, line, fov} = this;\r\n\r\n\t\tmesh.updateMatrixWorld();\r\n\t\tconst dir = mesh.getWorldDirection();\r\n\t\tconst alpha = THREE.Math.degToRad(fov / 2);\r\n\t\tconst d = -0.5 / Math.tan(alpha);\r\n\t\tconst move = dir.clone().multiplyScalar(d);\r\n\t\tmesh.position.add(move);\r\n\r\n\t\tline.position.copy(mesh.position);\r\n\t\tline.scale.copy(mesh.scale);\r\n\t\tline.rotation.copy(mesh.rotation);\r\n\t}\r\n\r\n};\r\n\r\nexport class OrientedImages extends EventDispatcher{\r\n\r\n\tconstructor(){\r\n\t\tsuper();\r\n\r\n\t\tthis.node = null;\r\n\t\tthis.cameraParams = null;\r\n\t\tthis.imageParams = null;\r\n\t\tthis.images = null;\r\n\t\tthis._visible = true;\r\n\t}\r\n\r\n\tset visible(visible){\r\n\t\tif(this._visible === visible){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor(const image of this.images){\r\n\t\t\timage.mesh.visible = visible;\r\n\t\t\timage.line.visible = visible;\r\n\t\t}\r\n\r\n\t\tthis._visible = visible;\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: \"visibility_changed\",\r\n\t\t\timages: this,\r\n\t\t});\r\n\t}\r\n\r\n\tget visible(){\r\n\t\treturn this._visible;\r\n\t}\r\n\r\n\r\n};\r\n\r\nexport class OrientedImageLoader{\r\n\r\n\tstatic async loadCameraParams(path){\r\n\t\tconst res = await fetch(path);\r\n\t\tconst text = await res.text();\r\n\r\n\t\tconst parser = new DOMParser();\r\n\t\tconst doc = parser.parseFromString(text, \"application/xml\");\r\n\r\n\t\tconst width = parseInt(doc.getElementsByTagName(\"width\")[0].textContent);\r\n\t\tconst height = parseInt(doc.getElementsByTagName(\"height\")[0].textContent);\r\n\t\tconst f = parseFloat(doc.getElementsByTagName(\"f\")[0].textContent);\r\n\r\n\t\tlet a = (height / 2) / f;\r\n\t\tlet fov = 2 * THREE.Math.radToDeg(Math.atan(a));\r\n\r\n\t\tconst params = {\r\n\t\t\tpath: path,\r\n\t\t\twidth: width,\r\n\t\t\theight: height,\r\n\t\t\tf: f,\r\n\t\t\tfov: fov,\r\n\t\t};\r\n\r\n\t\treturn params;\r\n\t}\r\n\r\n\tstatic async loadImageParams(path){\r\n\r\n\t\tconst response = await fetch(path);\r\n\t\tif(!response.ok){\r\n\t\t\tconsole.error(`failed to load ${path}`);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst content = await response.text();\r\n\t\tconst lines = content.split(/\\r?\\n/);\r\n\t\tconst imageParams = [];\r\n\r\n\t\tfor(let i = 1; i < lines.length; i++){\r\n\t\t\tconst line = lines[i];\r\n\r\n\t\t\tif(line.startsWith(\"#\")){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst tokens = line.split(/\\s+/);\r\n\r\n\t\t\tif(tokens.length < 6){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst params = {\r\n\t\t\t\tid: tokens[0],\r\n\t\t\t\tx: Number.parseFloat(tokens[1]),\r\n\t\t\t\ty: Number.parseFloat(tokens[2]),\r\n\t\t\t\tz: Number.parseFloat(tokens[3]),\r\n\t\t\t\tomega: Number.parseFloat(tokens[4]),\r\n\t\t\t\tphi: Number.parseFloat(tokens[5]),\r\n\t\t\t\tkappa: Number.parseFloat(tokens[6]),\r\n\t\t\t};\r\n\r\n\t\t\t// const whitelist = [\"47518.jpg\"];\r\n\t\t\t// if(whitelist.includes(params.id)){\r\n\t\t\t// \timageParams.push(params);\r\n\t\t\t// }\r\n\t\t\timageParams.push(params);\r\n\t\t}\r\n\r\n\t\t// debug\r\n\t\t//return [imageParams[50]];\r\n\r\n\t\treturn imageParams;\r\n\t}\r\n\r\n\tstatic async load(cameraParamsPath, imageParamsPath, viewer){\r\n\r\n\t\tconst tStart = performance.now();\r\n\r\n\t\tconst [cameraParams, imageParams] = await Promise.all([\r\n\t\t\tOrientedImageLoader.loadCameraParams(cameraParamsPath),\r\n\t\t\tOrientedImageLoader.loadImageParams(imageParamsPath),\r\n\t\t]);\r\n\r\n\t\tconst orientedImageControls = new OrientedImageControls(viewer);\r\n\t\tconst raycaster = new THREE.Raycaster();\r\n\r\n\t\tconst tEnd = performance.now();\r\n\t\tconsole.log(tEnd - tStart);\r\n\r\n\t\t// const sp = new THREE.PlaneGeometry(1, 1);\r\n\t\t// const lg = new THREE.Geometry();\r\n\r\n\t\t// lg.vertices.push(\r\n\t\t// \tnew THREE.Vector3(-0.5, -0.5, 0),\r\n\t\t// \tnew THREE.Vector3( 0.5, -0.5, 0),\r\n\t\t// \tnew THREE.Vector3( 0.5, 0.5, 0),\r\n\t\t// \tnew THREE.Vector3(-0.5, 0.5, 0),\r\n\t\t// \tnew THREE.Vector3(-0.5, -0.5, 0),\r\n\t\t// );\r\n\r\n\t\tconst {width, height} = cameraParams;\r\n\t\tconst orientedImages = [];\r\n\t\tconst sceneNode = new THREE.Object3D();\r\n\t\tsceneNode.name = \"oriented_images\";\r\n\r\n\t\tfor(const params of imageParams){\r\n\r\n\t\t\t// const material = createMaterial();\r\n\t\t\t// const lm = new THREE.LineBasicMaterial( { color: 0x00ff00 } );\r\n\t\t\t// const mesh = new THREE.Mesh(sp, material);\r\n\r\n\t\t\tconst {x, y, z, omega, phi, kappa} = params;\r\n\t\t\t// const [rx, ry, rz] = [omega, phi, kappa]\r\n\t\t\t// \t.map(THREE.Math.degToRad);\r\n\t\t\t\r\n\t\t\t// mesh.position.set(x, y, z);\r\n\t\t\t// mesh.scale.set(width / height, 1, 1);\r\n\t\t\t// mesh.rotation.set(rx, ry, rz);\r\n\t\t\t// {\r\n\t\t\t// \tmesh.updateMatrixWorld();\r\n\t\t\t// \tconst dir = mesh.getWorldDirection();\r\n\t\t\t// \tconst alpha = THREE.Math.degToRad(cameraParams.fov / 2);\r\n\t\t\t// \tconst d = -0.5 / Math.tan(alpha);\r\n\t\t\t// \tconst move = dir.clone().multiplyScalar(d);\r\n\t\t\t// \tmesh.position.add(move);\r\n\t\t\t// }\r\n\t\t\t// sceneNode.add(mesh);\r\n\r\n\t\t\t// const line = new THREE.Line(lg, lm);\r\n\t\t\t// line.position.copy(mesh.position);\r\n\t\t\t// line.scale.copy(mesh.scale);\r\n\t\t\t// line.rotation.copy(mesh.rotation);\r\n\t\t\t// sceneNode.add(line);\r\n\r\n\t\t\tlet orientedImage = new OrientedImage(params.id);\r\n\t\t\t// orientedImage.setPosition(x, y, z);\r\n\t\t\t// orientedImage.setRotation(omega, phi, kappa);\r\n\t\t\t// orientedImage.setDimension(width, height);\r\n\t\t\tlet position = [x, y, z];\r\n\t\t\tlet rotation = [omega, phi, kappa];\r\n\t\t\tlet dimension = [width, height];\r\n\t\t\torientedImage.set(position, rotation, dimension, cameraParams.fov);\r\n\r\n\t\t\tsceneNode.add(orientedImage.mesh);\r\n\t\t\tsceneNode.add(orientedImage.line);\r\n\t\t\t\r\n\t\t\torientedImages.push(orientedImage);\r\n\t\t}\r\n\r\n\t\tlet hoveredElement = null;\r\n\t\tlet clipVolume = null;\r\n\r\n\t\tconst onMouseMove = (evt) => {\r\n\t\t\tconst tStart = performance.now();\r\n\t\t\tif(hoveredElement){\r\n\t\t\t\thoveredElement.line.material.color.setRGB(0, 1, 0);\r\n\t\t\t}\r\n\t\t\tevt.preventDefault();\r\n\r\n\t\t\t//var array = getMousePosition( container, evt.clientX, evt.clientY );\r\n\t\t\tconst rect = viewer.renderer.domElement.getBoundingClientRect();\r\n\t\t\tconst [x, y] = [evt.clientX, evt.clientY];\r\n\t\t\tconst array = [ \r\n\t\t\t\t( x - rect.left ) / rect.width, \r\n\t\t\t\t( y - rect.top ) / rect.height \r\n\t\t\t];\r\n\t\t\tconst onClickPosition = new THREE.Vector2(...array);\r\n\t\t\t//const intersects = getIntersects(onClickPosition, scene.children);\r\n\t\t\tconst camera = viewer.scene.getActiveCamera();\r\n\t\t\tconst mouse = new THREE.Vector3(\r\n\t\t\t\t+ ( onClickPosition.x * 2 ) - 1, \r\n\t\t\t\t- ( onClickPosition.y * 2 ) + 1 );\r\n\t\t\tconst objects = orientedImages.map(i => i.mesh);\r\n\t\t\traycaster.setFromCamera( mouse, camera );\r\n\t\t\tconst intersects = raycaster.intersectObjects( objects );\r\n\t\t\tlet selectionChanged = false;\r\n\r\n\t\t\tif ( intersects.length > 0){\r\n\t\t\t\t//console.log(intersects);\r\n\t\t\t\tconst intersection = intersects[0];\r\n\t\t\t\tconst orientedImage = intersection.object.orientedImage;\r\n\t\t\t\torientedImage.line.material.color.setRGB(1, 0, 0);\r\n\t\t\t\tselectionChanged = hoveredElement !== orientedImage;\r\n\t\t\t\thoveredElement = orientedImage;\r\n\t\t\t}else{\r\n\t\t\t\thoveredElement = null;\r\n\t\t\t}\r\n\r\n\t\t\tlet shouldRemoveClipVolume = clipVolume !== null && hoveredElement === null;\r\n\t\t\tlet shouldAddClipVolume = clipVolume === null && hoveredElement !== null;\r\n\r\n\t\t\tif(clipVolume !== null && (hoveredElement === null || selectionChanged)){\r\n\t\t\t\t// remove existing\r\n\t\t\t\tviewer.scene.removePolygonClipVolume(clipVolume);\r\n\t\t\t\tclipVolume = null;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(shouldAddClipVolume || selectionChanged){\r\n\t\t\t\tconst img = hoveredElement;\r\n\t\t\t\tconst fov = cameraParams.fov;\r\n\t\t\t\tconst aspect = cameraParams.width / cameraParams.height;\r\n\t\t\t\tconst near = 1.0;\r\n\t\t\t\tconst far = 1000 * 1000;\r\n\t\t\t\tconst camera = new THREE.PerspectiveCamera(fov, aspect, near, far);\r\n\t\t\t\tcamera.rotation.order = viewer.scene.getActiveCamera().rotation.order;\r\n\t\t\t\tcamera.rotation.copy(img.mesh.rotation);\r\n\t\t\t\t{\r\n\t\t\t\t\tconst mesh = img.mesh;\r\n\t\t\t\t\tconst dir = mesh.getWorldDirection();\r\n\t\t\t\t\tconst pos = mesh.position;\r\n\t\t\t\t\tconst alpha = THREE.Math.degToRad(fov / 2);\r\n\t\t\t\t\tconst d = 0.5 / Math.tan(alpha);\r\n\t\t\t\t\tconst newCamPos = pos.clone().add(dir.clone().multiplyScalar(d));\r\n\t\t\t\t\tconst newCamDir = pos.clone().sub(newCamPos);\r\n\t\t\t\t\tconst newCamTarget = new THREE.Vector3().addVectors(\r\n\t\t\t\t\t\tnewCamPos,\r\n\t\t\t\t\t\tnewCamDir.clone().multiplyScalar(viewer.getMoveSpeed()));\r\n\t\t\t\t\tcamera.position.copy(newCamPos);\r\n\t\t\t\t}\r\n\t\t\t\tlet volume = new Potree.PolygonClipVolume(camera);\r\n\t\t\t\tlet m0 = new THREE.Mesh();\r\n\t\t\t\tlet m1 = new THREE.Mesh();\r\n\t\t\t\tlet m2 = new THREE.Mesh();\r\n\t\t\t\tlet m3 = new THREE.Mesh();\r\n\t\t\t\tm0.position.set(-1, -1, 0);\r\n\t\t\t\tm1.position.set( 1, -1, 0);\r\n\t\t\t\tm2.position.set( 1, 1, 0);\r\n\t\t\t\tm3.position.set(-1, 1, 0);\r\n\t\t\t\tvolume.markers.push(m0, m1, m2, m3);\r\n\t\t\t\tvolume.initialized = true;\r\n\t\t\t\t\r\n\t\t\t\tviewer.scene.addPolygonClipVolume(volume);\r\n\t\t\t\tclipVolume = volume;\r\n\t\t\t}\r\n\t\t\tconst tEnd = performance.now();\r\n\t\t\t//console.log(tEnd - tStart);\r\n\t\t};\r\n\r\n\t\tconst moveToImage = (image) => {\r\n\t\t\tconsole.log(\"move to image \" + image.id);\r\n\r\n\t\t\tconst mesh = image.mesh;\r\n\t\t\tconst newCamPos = image.position.clone();\r\n\t\t\tconst newCamTarget = mesh.position.clone();\r\n\r\n\t\t\tviewer.scene.view.setView(newCamPos, newCamTarget, 500, () => {\r\n\t\t\t\torientedImageControls.capture(image);\r\n\t\t\t});\r\n\r\n\t\t\tif(image.texture === null){\r\n\r\n\t\t\t\tconst target = image;\r\n\r\n\t\t\t\tconst tmpImagePath = `${Potree.resourcePath}/images/loading.jpg`;\r\n\t\t\t\tnew THREE.TextureLoader().load(tmpImagePath,\r\n\t\t\t\t\t(texture) => {\r\n\t\t\t\t\t\tif(target.texture === null){\r\n\t\t\t\t\t\t\ttarget.texture = texture;\r\n\t\t\t\t\t\t\ttarget.mesh.material.uniforms.tColor.value = texture;\r\n\t\t\t\t\t\t\tmesh.material.needsUpdate = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\r\n\t\t\t\tconst imagePath = `${imageParamsPath}/../${target.id}`;\r\n\t\t\t\tnew THREE.TextureLoader().load(imagePath,\r\n\t\t\t\t\t(texture) => {\r\n\t\t\t\t\t\ttarget.texture = texture;\r\n\t\t\t\t\t\ttarget.mesh.material.uniforms.tColor.value = texture;\r\n\t\t\t\t\t\tmesh.material.needsUpdate = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t\t\r\n\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst onMouseClick = (evt) => {\r\n\r\n\t\t\tif(orientedImageControls.hasSomethingCaptured()){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(hoveredElement){\r\n\t\t\t\tmoveToImage(hoveredElement);\r\n\t\t\t}\r\n\t\t};\r\n\t\tviewer.renderer.domElement.addEventListener( 'mousemove', onMouseMove, false );\r\n\t\tviewer.renderer.domElement.addEventListener( 'mousedown', onMouseClick, false );\r\n\r\n\t\tviewer.addEventListener(\"update\", () => {\r\n\r\n\t\t\tfor(const image of orientedImages){\r\n\t\t\t\tconst world = image.mesh.matrixWorld;\r\n\t\t\t\tconst {width, height} = image;\r\n\t\t\t\tconst aspect = width / height;\r\n\r\n\t\t\t\tconst camera = viewer.scene.getActiveCamera();\r\n\r\n\t\t\t\tconst imgPos = image.mesh.getWorldPosition(new THREE.Vector3());\r\n\t\t\t\tconst camPos = camera.position;\r\n\t\t\t\tconst d = camPos.distanceTo(imgPos);\r\n\r\n\t\t\t\tconst minSize = 1; // in degrees of fov\r\n\t\t\t\tconst a = THREE.Math.degToRad(minSize);\r\n\t\t\t\tlet r = d * Math.tan(a);\r\n\t\t\t\tr = Math.max(r, 1);\r\n\r\n\r\n\t\t\t\timage.mesh.scale.set(r * aspect, r, 1);\r\n\t\t\t\timage.line.scale.set(r * aspect, r, 1);\r\n\r\n\t\t\t\timage.mesh.material.uniforms.uNear.value = camera.near;\r\n\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tconst images = new OrientedImages();\r\n\t\timages.node = sceneNode;\r\n\t\timages.cameraParamsPath = cameraParamsPath;\r\n\t\timages.imageParamsPath = imageParamsPath;\r\n\t\timages.cameraParams = cameraParams;\r\n\t\timages.imageParams = imageParams;\r\n\t\timages.images = orientedImages;\r\n\r\n\t\tPotree.debug.moveToImage = moveToImage;\r\n\r\n\t\treturn images;\r\n\t}\r\n}\r\n\r\n","\r\nimport { EventDispatcher } from \"../../EventDispatcher.js\";\r\nimport {TextSprite} from \"../../TextSprite.js\";\r\n\r\nlet sg = new THREE.SphereGeometry(1, 8, 8);\r\nlet sgHigh = new THREE.SphereGeometry(1, 128, 128);\r\n\r\nlet sm = new THREE.MeshBasicMaterial({side: THREE.BackSide});\r\nlet smHovered = new THREE.MeshBasicMaterial({side: THREE.BackSide, color: 0xff0000});\r\n\r\nlet raycaster = new THREE.Raycaster();\r\nlet currentlyHovered = null;\r\n\r\nlet previousView = {\r\n\tcontrols: null,\r\n\tposition: null,\r\n\ttarget: null,\r\n};\r\n\r\nclass Image360{\r\n\r\n\tconstructor(file, time, longitude, latitude, altitude, course, pitch, roll){\r\n\t\tthis.file = file;\r\n\t\tthis.time = time;\r\n\t\tthis.longitude = longitude;\r\n\t\tthis.latitude = latitude;\r\n\t\tthis.altitude = altitude;\r\n\t\tthis.course = course;\r\n\t\tthis.pitch = pitch;\r\n\t\tthis.roll = roll;\r\n\t\tthis.mesh = null;\r\n\t}\r\n};\r\n\r\nexport class Images360 extends EventDispatcher{\r\n\r\n\tconstructor(viewer){\r\n\t\tsuper();\r\n\r\n\t\tthis.viewer = viewer;\r\n\r\n\t\tthis.selectingEnabled = true;\r\n\r\n\t\tthis.images = [];\r\n\t\tthis.node = new THREE.Object3D();\r\n\r\n\t\tthis.sphere = new THREE.Mesh(sgHigh, sm);\r\n\t\tthis.sphere.visible = false;\r\n\t\tthis.sphere.scale.set(1000, 1000, 1000);\r\n\t\tthis.node.add(this.sphere);\r\n\t\tthis._visible = true;\r\n\t\t// this.node.add(label);\r\n\r\n\t\tthis.focusedImage = null;\r\n\r\n\t\tlet elUnfocus = document.createElement(\"input\");\r\n\t\telUnfocus.type = \"button\";\r\n\t\telUnfocus.value = \"unfocus\";\r\n\t\telUnfocus.style.position = \"absolute\";\r\n\t\telUnfocus.style.right = \"10px\";\r\n\t\telUnfocus.style.bottom = \"10px\";\r\n\t\telUnfocus.style.zIndex = \"10000\";\r\n\t\telUnfocus.style.fontSize = \"2em\";\r\n\t\telUnfocus.addEventListener(\"click\", () => this.unfocus());\r\n\t\tthis.elUnfocus = elUnfocus;\r\n\r\n\t\tthis.domRoot = viewer.renderer.domElement.parentElement;\r\n\t\tthis.domRoot.appendChild(elUnfocus);\r\n\t\tthis.elUnfocus.style.display = \"none\";\r\n\r\n\t\tviewer.addEventListener(\"update\", () => {\r\n\t\t\tthis.update(viewer);\r\n\t\t});\r\n\t\tviewer.inputHandler.addInputListener(this);\r\n\r\n\t\tthis.addEventListener(\"mousedown\", () => {\r\n\t\t\tif(currentlyHovered){\r\n\t\t\t\tthis.focus(currentlyHovered.image360);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t};\r\n\r\n\tset visible(visible){\r\n\t\tif(this._visible === visible){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\r\n\t\tfor(const image of this.images){\r\n\t\t\timage.mesh.visible = visible && (this.focusedImage == null);\r\n\t\t}\r\n\r\n\t\tthis.sphere.visible = visible && (this.focusedImage != null);\r\n\t\tthis._visible = visible;\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: \"visibility_changed\",\r\n\t\t\timages: this,\r\n\t\t});\r\n\t}\r\n\r\n\tget visible(){\r\n\t\treturn this._visible;\r\n\t}\r\n\r\n\tfocus(image360){\r\n\t\tif(this.focusedImage !== null){\r\n\t\t\tthis.unfocus();\r\n\t\t}\r\n\r\n\t\tpreviousView = {\r\n\t\t\tcontrols: this.viewer.controls,\r\n\t\t\tposition: this.viewer.scene.view.position.clone(),\r\n\t\t\ttarget: viewer.scene.view.getPivot(),\r\n\t\t};\r\n\r\n\t\tthis.viewer.setControls(this.viewer.orbitControls);\r\n\t\tthis.viewer.orbitControls.doubleClockZoomEnabled = false;\r\n\r\n\t\tfor(let image of this.images){\r\n\t\t\timage.mesh.visible = false;\r\n\t\t}\r\n\r\n\t\tthis.selectingEnabled = false;\r\n\r\n\t\tthis.sphere.visible = false;\r\n\r\n\t\tthis.load(image360).then( () => {\r\n\t\t\tthis.sphere.visible = true;\r\n\t\t\tthis.sphere.material.map = image360.texture;\r\n\t\t\tthis.sphere.material.needsUpdate = true;\r\n\t\t});\r\n\r\n\t\t{ // orientation\r\n\t\t\tlet {course, pitch, roll} = image360;\r\n\t\t\tthis.sphere.rotation.set(\r\n\t\t\t\tTHREE.Math.degToRad(+roll + 90),\r\n\t\t\t\tTHREE.Math.degToRad(-pitch),\r\n\t\t\t\tTHREE.Math.degToRad(-course + 90),\r\n\t\t\t\t\"ZYX\"\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis.sphere.position.set(...image360.position);\r\n\r\n\t\tlet target = new THREE.Vector3(...image360.position);\r\n\t\tlet dir = target.clone().sub(viewer.scene.view.position).normalize();\r\n\t\tlet move = dir.multiplyScalar(0.000001);\r\n\t\tlet newCamPos = target.clone().sub(move);\r\n\r\n\t\tviewer.scene.view.setView(\r\n\t\t\tnewCamPos, \r\n\t\t\ttarget,\r\n\t\t\t500\r\n\t\t);\r\n\r\n\t\tthis.focusedImage = image360;\r\n\r\n\t\tthis.elUnfocus.style.display = \"\";\r\n\t}\r\n\r\n\tunfocus(){\r\n\t\tthis.selectingEnabled = true;\r\n\r\n\t\tfor(let image of this.images){\r\n\t\t\timage.mesh.visible = true;\r\n\t\t}\r\n\r\n\t\tlet image = this.focusedImage;\r\n\r\n\t\tif(image === null){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\r\n\t\tthis.sphere.material.map = null;\r\n\t\tthis.sphere.material.needsUpdate = true;\r\n\t\tthis.sphere.visible = false;\r\n\r\n\t\tlet pos = viewer.scene.view.position;\r\n\t\tlet target = viewer.scene.view.getPivot();\r\n\t\tlet dir = target.clone().sub(pos).normalize();\r\n\t\tlet move = dir.multiplyScalar(10);\r\n\t\tlet newCamPos = target.clone().sub(move);\r\n\r\n\t\tviewer.orbitControls.doubleClockZoomEnabled = true;\r\n\t\tviewer.setControls(previousView.controls);\r\n\r\n\t\tviewer.scene.view.setView(\r\n\t\t\tpreviousView.position, \r\n\t\t\tpreviousView.target,\r\n\t\t\t500\r\n\t\t);\r\n\r\n\r\n\t\tthis.focusedImage = null;\r\n\r\n\t\tthis.elUnfocus.style.display = \"none\";\r\n\t}\r\n\r\n\tload(image360){\r\n\r\n\t\treturn new Promise(resolve => {\r\n\t\t\tlet texture = new THREE.TextureLoader().load(image360.file, resolve);\r\n\t\t\ttexture.wrapS = THREE.RepeatWrapping;\r\n\t\t\ttexture.repeat.x = -1;\r\n\r\n\t\t\timage360.texture = texture;\r\n\t\t});\r\n\r\n\t}\r\n\r\n\thandleHovering(){\r\n\t\tlet mouse = viewer.inputHandler.mouse;\r\n\t\tlet camera = viewer.scene.getActiveCamera();\r\n\t\tlet domElement = viewer.renderer.domElement;\r\n\r\n\t\tlet ray = Potree.Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\r\n\r\n\t\t// let tStart = performance.now();\r\n\t\traycaster.ray.copy(ray);\r\n\t\tlet intersections = raycaster.intersectObjects(this.node.children);\r\n\r\n\t\tif(intersections.length === 0){\r\n\t\t\t// label.visible = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet intersection = intersections[0];\r\n\t\tcurrentlyHovered = intersection.object;\r\n\t\tcurrentlyHovered.material = smHovered;\r\n\r\n\t\t//label.visible = true;\r\n\t\t//label.setText(currentlyHovered.image360.file);\r\n\t\t//currentlyHovered.getWorldPosition(label.position);\r\n\t}\r\n\r\n\tupdate(){\r\n\r\n\t\tlet {viewer} = this;\r\n\r\n\t\tif(currentlyHovered){\r\n\t\t\tcurrentlyHovered.material = sm;\r\n\t\t\tcurrentlyHovered = null;\r\n\t\t}\r\n\r\n\t\tif(this.selectingEnabled){\r\n\t\t\tthis.handleHovering();\r\n\t\t}\r\n\r\n\t}\r\n\r\n};\r\n\r\n\r\nexport class Images360Loader{\r\n\r\n\tstatic async load(url, viewer, params = {}){\r\n\r\n\t\tif(!params.transform){\r\n\t\t\tparams.transform = {\r\n\t\t\t\tforward: a => a,\r\n\t\t\t};\r\n\t\t}\r\n\t\t\r\n\t\tlet response = await fetch(`${url}/coordinates.txt`);\r\n\t\tlet text = await response.text();\r\n\r\n\t\tlet lines = text.split(/\\r?\\n/);\r\n\t\tlet coordinateLines = lines.slice(1);\r\n\r\n\t\tlet images360 = new Images360(viewer);\r\n\r\n\t\tfor(let line of coordinateLines){\r\n\r\n\t\t\tif(line.trim().length === 0){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet tokens = line.split(/\\t/);\r\n\r\n\t\t\tlet [filename, time, long, lat, alt, course, pitch, roll] = tokens;\r\n\t\t\ttime = parseFloat(time);\r\n\t\t\tlong = parseFloat(long);\r\n\t\t\tlat = parseFloat(lat);\r\n\t\t\talt = parseFloat(alt);\r\n\t\t\tcourse = parseFloat(course);\r\n\t\t\tpitch = parseFloat(pitch);\r\n\t\t\troll = parseFloat(roll);\r\n\r\n\t\t\tfilename = filename.replace(/\"/g, \"\");\r\n\t\t\tlet file = `${url}/${filename}`;\r\n\r\n\t\t\tlet image360 = new Image360(file, time, long, lat, alt, course, pitch, roll);\r\n\r\n\t\t\tlet xy = params.transform.forward([long, lat]);\r\n\t\t\tlet position = [...xy, alt];\r\n\t\t\timage360.position = position;\r\n\r\n\t\t\timages360.images.push(image360);\r\n\t\t}\r\n\r\n\t\tImages360Loader.createSceneNodes(images360, params.transform);\r\n\r\n\t\treturn images360;\r\n\r\n\t}\r\n\r\n\tstatic createSceneNodes(images360, transform){\r\n\r\n\t\tfor(let image360 of images360.images){\r\n\t\t\tlet {longitude, latitude, altitude} = image360;\r\n\t\t\tlet xy = transform.forward([longitude, latitude]);\r\n\r\n\t\t\tlet mesh = new THREE.Mesh(sg, sm);\r\n\t\t\tmesh.position.set(...xy, altitude);\r\n\t\t\tmesh.scale.set(1, 1, 1);\r\n\t\t\tmesh.material.transparent = true;\r\n\t\t\tmesh.material.opacity = 0.75;\r\n\t\t\tmesh.image360 = image360;\r\n\r\n\t\t\t{ // orientation\r\n\t\t\t\tvar {course, pitch, roll} = image360;\r\n\t\t\t\tmesh.rotation.set(\r\n\t\t\t\t\tTHREE.Math.degToRad(+roll + 90),\r\n\t\t\t\t\tTHREE.Math.degToRad(-pitch),\r\n\t\t\t\t\tTHREE.Math.degToRad(-course + 90),\r\n\t\t\t\t\t\"ZYX\"\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\timages360.node.add(mesh);\r\n\r\n\t\t\timage360.mesh = mesh;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n\r\n};\r\n\r\n\r\n","// This is a generated file. Do not edit.\nvar Space_Separator = /[\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nvar ID_Start = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]/;\nvar ID_Continue = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF9\\u1D00-\\u1DF9\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE83\\uDE86-\\uDE99\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4A\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nvar unicode = {\n\tSpace_Separator: Space_Separator,\n\tID_Start: ID_Start,\n\tID_Continue: ID_Continue\n};\n\nvar util = {\n isSpaceSeparator (c) {\n return typeof c === 'string' && unicode.Space_Separator.test(c)\n },\n\n isIdStartChar (c) {\n return typeof c === 'string' && (\n (c >= 'a' && c <= 'z') ||\n (c >= 'A' && c <= 'Z') ||\n (c === '$') || (c === '_') ||\n unicode.ID_Start.test(c)\n )\n },\n\n isIdContinueChar (c) {\n return typeof c === 'string' && (\n (c >= 'a' && c <= 'z') ||\n (c >= 'A' && c <= 'Z') ||\n (c >= '0' && c <= '9') ||\n (c === '$') || (c === '_') ||\n (c === '\\u200C') || (c === '\\u200D') ||\n unicode.ID_Continue.test(c)\n )\n },\n\n isDigit (c) {\n return typeof c === 'string' && /[0-9]/.test(c)\n },\n\n isHexDigit (c) {\n return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)\n },\n};\n\nlet source;\nlet parseState;\nlet stack;\nlet pos;\nlet line;\nlet column;\nlet token;\nlet key;\nlet root;\n\nvar parse = function parse (text, reviver) {\n source = String(text);\n parseState = 'start';\n stack = [];\n pos = 0;\n line = 1;\n column = 0;\n token = undefined;\n key = undefined;\n root = undefined;\n\n do {\n token = lex();\n\n // This code is unreachable.\n // if (!parseStates[parseState]) {\n // throw invalidParseState()\n // }\n\n parseStates[parseState]();\n } while (token.type !== 'eof')\n\n if (typeof reviver === 'function') {\n return internalize({'': root}, '', reviver)\n }\n\n return root\n};\n\nfunction internalize (holder, name, reviver) {\n const value = holder[name];\n if (value != null && typeof value === 'object') {\n for (const key in value) {\n const replacement = internalize(value, key, reviver);\n if (replacement === undefined) {\n delete value[key];\n } else {\n value[key] = replacement;\n }\n }\n }\n\n return reviver.call(holder, name, value)\n}\n\nlet lexState;\nlet buffer;\nlet doubleQuote;\nlet sign;\nlet c;\n\nfunction lex () {\n lexState = 'default';\n buffer = '';\n doubleQuote = false;\n sign = 1;\n\n for (;;) {\n c = peek();\n\n // This code is unreachable.\n // if (!lexStates[lexState]) {\n // throw invalidLexState(lexState)\n // }\n\n const token = lexStates[lexState]();\n if (token) {\n return token\n }\n }\n}\n\nfunction peek () {\n if (source[pos]) {\n return String.fromCodePoint(source.codePointAt(pos))\n }\n}\n\nfunction read () {\n const c = peek();\n\n if (c === '\\n') {\n line++;\n column = 0;\n } else if (c) {\n column += c.length;\n } else {\n column++;\n }\n\n if (c) {\n pos += c.length;\n }\n\n return c\n}\n\nconst lexStates = {\n default () {\n switch (c) {\n case '\\t':\n case '\\v':\n case '\\f':\n case ' ':\n case '\\u00A0':\n case '\\uFEFF':\n case '\\n':\n case '\\r':\n case '\\u2028':\n case '\\u2029':\n read();\n return\n\n case '/':\n read();\n lexState = 'comment';\n return\n\n case undefined:\n read();\n return newToken('eof')\n }\n\n if (util.isSpaceSeparator(c)) {\n read();\n return\n }\n\n // This code is unreachable.\n // if (!lexStates[parseState]) {\n // throw invalidLexState(parseState)\n // }\n\n return lexStates[parseState]()\n },\n\n comment () {\n switch (c) {\n case '*':\n read();\n lexState = 'multiLineComment';\n return\n\n case '/':\n read();\n lexState = 'singleLineComment';\n return\n }\n\n throw invalidChar(read())\n },\n\n multiLineComment () {\n switch (c) {\n case '*':\n read();\n lexState = 'multiLineCommentAsterisk';\n return\n\n case undefined:\n throw invalidChar(read())\n }\n\n read();\n },\n\n multiLineCommentAsterisk () {\n switch (c) {\n case '*':\n read();\n return\n\n case '/':\n read();\n lexState = 'default';\n return\n\n case undefined:\n throw invalidChar(read())\n }\n\n read();\n lexState = 'multiLineComment';\n },\n\n singleLineComment () {\n switch (c) {\n case '\\n':\n case '\\r':\n case '\\u2028':\n case '\\u2029':\n read();\n lexState = 'default';\n return\n\n case undefined:\n read();\n return newToken('eof')\n }\n\n read();\n },\n\n value () {\n switch (c) {\n case '{':\n case '[':\n return newToken('punctuator', read())\n\n case 'n':\n read();\n literal('ull');\n return newToken('null', null)\n\n case 't':\n read();\n literal('rue');\n return newToken('boolean', true)\n\n case 'f':\n read();\n literal('alse');\n return newToken('boolean', false)\n\n case '-':\n case '+':\n if (read() === '-') {\n sign = -1;\n }\n\n lexState = 'sign';\n return\n\n case '.':\n buffer = read();\n lexState = 'decimalPointLeading';\n return\n\n case '0':\n buffer = read();\n lexState = 'zero';\n return\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n buffer = read();\n lexState = 'decimalInteger';\n return\n\n case 'I':\n read();\n literal('nfinity');\n return newToken('numeric', Infinity)\n\n case 'N':\n read();\n literal('aN');\n return newToken('numeric', NaN)\n\n case '\"':\n case \"'\":\n doubleQuote = (read() === '\"');\n buffer = '';\n lexState = 'string';\n return\n }\n\n throw invalidChar(read())\n },\n\n identifierNameStartEscape () {\n if (c !== 'u') {\n throw invalidChar(read())\n }\n\n read();\n const u = unicodeEscape();\n switch (u) {\n case '$':\n case '_':\n break\n\n default:\n if (!util.isIdStartChar(u)) {\n throw invalidIdentifier()\n }\n\n break\n }\n\n buffer += u;\n lexState = 'identifierName';\n },\n\n identifierName () {\n switch (c) {\n case '$':\n case '_':\n case '\\u200C':\n case '\\u200D':\n buffer += read();\n return\n\n case '\\\\':\n read();\n lexState = 'identifierNameEscape';\n return\n }\n\n if (util.isIdContinueChar(c)) {\n buffer += read();\n return\n }\n\n return newToken('identifier', buffer)\n },\n\n identifierNameEscape () {\n if (c !== 'u') {\n throw invalidChar(read())\n }\n\n read();\n const u = unicodeEscape();\n switch (u) {\n case '$':\n case '_':\n case '\\u200C':\n case '\\u200D':\n break\n\n default:\n if (!util.isIdContinueChar(u)) {\n throw invalidIdentifier()\n }\n\n break\n }\n\n buffer += u;\n lexState = 'identifierName';\n },\n\n sign () {\n switch (c) {\n case '.':\n buffer = read();\n lexState = 'decimalPointLeading';\n return\n\n case '0':\n buffer = read();\n lexState = 'zero';\n return\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n buffer = read();\n lexState = 'decimalInteger';\n return\n\n case 'I':\n read();\n literal('nfinity');\n return newToken('numeric', sign * Infinity)\n\n case 'N':\n read();\n literal('aN');\n return newToken('numeric', NaN)\n }\n\n throw invalidChar(read())\n },\n\n zero () {\n switch (c) {\n case '.':\n buffer += read();\n lexState = 'decimalPoint';\n return\n\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n\n case 'x':\n case 'X':\n buffer += read();\n lexState = 'hexadecimal';\n return\n }\n\n return newToken('numeric', sign * 0)\n },\n\n decimalInteger () {\n switch (c) {\n case '.':\n buffer += read();\n lexState = 'decimalPoint';\n return\n\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n decimalPointLeading () {\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalFraction';\n return\n }\n\n throw invalidChar(read())\n },\n\n decimalPoint () {\n switch (c) {\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalFraction';\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n decimalFraction () {\n switch (c) {\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n decimalExponent () {\n switch (c) {\n case '+':\n case '-':\n buffer += read();\n lexState = 'decimalExponentSign';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalExponentInteger';\n return\n }\n\n throw invalidChar(read())\n },\n\n decimalExponentSign () {\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalExponentInteger';\n return\n }\n\n throw invalidChar(read())\n },\n\n decimalExponentInteger () {\n if (util.isDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n hexadecimal () {\n if (util.isHexDigit(c)) {\n buffer += read();\n lexState = 'hexadecimalInteger';\n return\n }\n\n throw invalidChar(read())\n },\n\n hexadecimalInteger () {\n if (util.isHexDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n string () {\n switch (c) {\n case '\\\\':\n read();\n buffer += escape();\n return\n\n case '\"':\n if (doubleQuote) {\n read();\n return newToken('string', buffer)\n }\n\n buffer += read();\n return\n\n case \"'\":\n if (!doubleQuote) {\n read();\n return newToken('string', buffer)\n }\n\n buffer += read();\n return\n\n case '\\n':\n case '\\r':\n throw invalidChar(read())\n\n case '\\u2028':\n case '\\u2029':\n separatorChar(c);\n break\n\n case undefined:\n throw invalidChar(read())\n }\n\n buffer += read();\n },\n\n start () {\n switch (c) {\n case '{':\n case '[':\n return newToken('punctuator', read())\n\n // This code is unreachable since the default lexState handles eof.\n // case undefined:\n // return newToken('eof')\n }\n\n lexState = 'value';\n },\n\n beforePropertyName () {\n switch (c) {\n case '$':\n case '_':\n buffer = read();\n lexState = 'identifierName';\n return\n\n case '\\\\':\n read();\n lexState = 'identifierNameStartEscape';\n return\n\n case '}':\n return newToken('punctuator', read())\n\n case '\"':\n case \"'\":\n doubleQuote = (read() === '\"');\n lexState = 'string';\n return\n }\n\n if (util.isIdStartChar(c)) {\n buffer += read();\n lexState = 'identifierName';\n return\n }\n\n throw invalidChar(read())\n },\n\n afterPropertyName () {\n if (c === ':') {\n return newToken('punctuator', read())\n }\n\n throw invalidChar(read())\n },\n\n beforePropertyValue () {\n lexState = 'value';\n },\n\n afterPropertyValue () {\n switch (c) {\n case ',':\n case '}':\n return newToken('punctuator', read())\n }\n\n throw invalidChar(read())\n },\n\n beforeArrayValue () {\n if (c === ']') {\n return newToken('punctuator', read())\n }\n\n lexState = 'value';\n },\n\n afterArrayValue () {\n switch (c) {\n case ',':\n case ']':\n return newToken('punctuator', read())\n }\n\n throw invalidChar(read())\n },\n\n end () {\n // This code is unreachable since it's handled by the default lexState.\n // if (c === undefined) {\n // read()\n // return newToken('eof')\n // }\n\n throw invalidChar(read())\n },\n};\n\nfunction newToken (type, value) {\n return {\n type,\n value,\n line,\n column,\n }\n}\n\nfunction literal (s) {\n for (const c of s) {\n const p = peek();\n\n if (p !== c) {\n throw invalidChar(read())\n }\n\n read();\n }\n}\n\nfunction escape () {\n const c = peek();\n switch (c) {\n case 'b':\n read();\n return '\\b'\n\n case 'f':\n read();\n return '\\f'\n\n case 'n':\n read();\n return '\\n'\n\n case 'r':\n read();\n return '\\r'\n\n case 't':\n read();\n return '\\t'\n\n case 'v':\n read();\n return '\\v'\n\n case '0':\n read();\n if (util.isDigit(peek())) {\n throw invalidChar(read())\n }\n\n return '\\0'\n\n case 'x':\n read();\n return hexEscape()\n\n case 'u':\n read();\n return unicodeEscape()\n\n case '\\n':\n case '\\u2028':\n case '\\u2029':\n read();\n return ''\n\n case '\\r':\n read();\n if (peek() === '\\n') {\n read();\n }\n\n return ''\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n throw invalidChar(read())\n\n case undefined:\n throw invalidChar(read())\n }\n\n return read()\n}\n\nfunction hexEscape () {\n let buffer = '';\n let c = peek();\n\n if (!util.isHexDigit(c)) {\n throw invalidChar(read())\n }\n\n buffer += read();\n\n c = peek();\n if (!util.isHexDigit(c)) {\n throw invalidChar(read())\n }\n\n buffer += read();\n\n return String.fromCodePoint(parseInt(buffer, 16))\n}\n\nfunction unicodeEscape () {\n let buffer = '';\n let count = 4;\n\n while (count-- > 0) {\n const c = peek();\n if (!util.isHexDigit(c)) {\n throw invalidChar(read())\n }\n\n buffer += read();\n }\n\n return String.fromCodePoint(parseInt(buffer, 16))\n}\n\nconst parseStates = {\n start () {\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n push();\n },\n\n beforePropertyName () {\n switch (token.type) {\n case 'identifier':\n case 'string':\n key = token.value;\n parseState = 'afterPropertyName';\n return\n\n case 'punctuator':\n // This code is unreachable since it's handled by the lexState.\n // if (token.value !== '}') {\n // throw invalidToken()\n // }\n\n pop();\n return\n\n case 'eof':\n throw invalidEOF()\n }\n\n // This code is unreachable since it's handled by the lexState.\n // throw invalidToken()\n },\n\n afterPropertyName () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'punctuator' || token.value !== ':') {\n // throw invalidToken()\n // }\n\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n parseState = 'beforePropertyValue';\n },\n\n beforePropertyValue () {\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n push();\n },\n\n beforeArrayValue () {\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n if (token.type === 'punctuator' && token.value === ']') {\n pop();\n return\n }\n\n push();\n },\n\n afterPropertyValue () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'punctuator') {\n // throw invalidToken()\n // }\n\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n switch (token.value) {\n case ',':\n parseState = 'beforePropertyName';\n return\n\n case '}':\n pop();\n }\n\n // This code is unreachable since it's handled by the lexState.\n // throw invalidToken()\n },\n\n afterArrayValue () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'punctuator') {\n // throw invalidToken()\n // }\n\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n switch (token.value) {\n case ',':\n parseState = 'beforeArrayValue';\n return\n\n case ']':\n pop();\n }\n\n // This code is unreachable since it's handled by the lexState.\n // throw invalidToken()\n },\n\n end () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'eof') {\n // throw invalidToken()\n // }\n },\n};\n\nfunction push () {\n let value;\n\n switch (token.type) {\n case 'punctuator':\n switch (token.value) {\n case '{':\n value = {};\n break\n\n case '[':\n value = [];\n break\n }\n\n break\n\n case 'null':\n case 'boolean':\n case 'numeric':\n case 'string':\n value = token.value;\n break\n\n // This code is unreachable.\n // default:\n // throw invalidToken()\n }\n\n if (root === undefined) {\n root = value;\n } else {\n const parent = stack[stack.length - 1];\n if (Array.isArray(parent)) {\n parent.push(value);\n } else {\n parent[key] = value;\n }\n }\n\n if (value !== null && typeof value === 'object') {\n stack.push(value);\n\n if (Array.isArray(value)) {\n parseState = 'beforeArrayValue';\n } else {\n parseState = 'beforePropertyName';\n }\n } else {\n const current = stack[stack.length - 1];\n if (current == null) {\n parseState = 'end';\n } else if (Array.isArray(current)) {\n parseState = 'afterArrayValue';\n } else {\n parseState = 'afterPropertyValue';\n }\n }\n}\n\nfunction pop () {\n stack.pop();\n\n const current = stack[stack.length - 1];\n if (current == null) {\n parseState = 'end';\n } else if (Array.isArray(current)) {\n parseState = 'afterArrayValue';\n } else {\n parseState = 'afterPropertyValue';\n }\n}\n\n// This code is unreachable.\n// function invalidParseState () {\n// return new Error(`JSON5: invalid parse state '${parseState}'`)\n// }\n\n// This code is unreachable.\n// function invalidLexState (state) {\n// return new Error(`JSON5: invalid lex state '${state}'`)\n// }\n\nfunction invalidChar (c) {\n if (c === undefined) {\n return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n }\n\n return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n}\n\nfunction invalidEOF () {\n return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n}\n\n// This code is unreachable.\n// function invalidToken () {\n// if (token.type === 'eof') {\n// return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n// }\n\n// const c = String.fromCodePoint(token.value.codePointAt(0))\n// return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n// }\n\nfunction invalidIdentifier () {\n column -= 5;\n return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`)\n}\n\nfunction separatorChar (c) {\n console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`);\n}\n\nfunction formatChar (c) {\n const replacements = {\n \"'\": \"\\\\'\",\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\',\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n '\\v': '\\\\v',\n '\\0': '\\\\0',\n '\\u2028': '\\\\u2028',\n '\\u2029': '\\\\u2029',\n };\n\n if (replacements[c]) {\n return replacements[c]\n }\n\n if (c < ' ') {\n const hexString = c.charCodeAt(0).toString(16);\n return '\\\\x' + ('00' + hexString).substring(hexString.length)\n }\n\n return c\n}\n\nfunction syntaxError (message) {\n const err = new SyntaxError(message);\n err.lineNumber = line;\n err.columnNumber = column;\n return err\n}\n\nvar stringify = function stringify (value, replacer, space) {\n const stack = [];\n let indent = '';\n let propertyList;\n let replacerFunc;\n let gap = '';\n let quote;\n\n if (\n replacer != null &&\n typeof replacer === 'object' &&\n !Array.isArray(replacer)\n ) {\n space = replacer.space;\n quote = replacer.quote;\n replacer = replacer.replacer;\n }\n\n if (typeof replacer === 'function') {\n replacerFunc = replacer;\n } else if (Array.isArray(replacer)) {\n propertyList = [];\n for (const v of replacer) {\n let item;\n\n if (typeof v === 'string') {\n item = v;\n } else if (\n typeof v === 'number' ||\n v instanceof String ||\n v instanceof Number\n ) {\n item = String(v);\n }\n\n if (item !== undefined && propertyList.indexOf(item) < 0) {\n propertyList.push(item);\n }\n }\n }\n\n if (space instanceof Number) {\n space = Number(space);\n } else if (space instanceof String) {\n space = String(space);\n }\n\n if (typeof space === 'number') {\n if (space > 0) {\n space = Math.min(10, Math.floor(space));\n gap = ' '.substr(0, space);\n }\n } else if (typeof space === 'string') {\n gap = space.substr(0, 10);\n }\n\n return serializeProperty('', {'': value})\n\n function serializeProperty (key, holder) {\n let value = holder[key];\n if (value != null) {\n if (typeof value.toJSON5 === 'function') {\n value = value.toJSON5(key);\n } else if (typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n }\n\n if (replacerFunc) {\n value = replacerFunc.call(holder, key, value);\n }\n\n if (value instanceof Number) {\n value = Number(value);\n } else if (value instanceof String) {\n value = String(value);\n } else if (value instanceof Boolean) {\n value = value.valueOf();\n }\n\n switch (value) {\n case null: return 'null'\n case true: return 'true'\n case false: return 'false'\n }\n\n if (typeof value === 'string') {\n return quoteString(value, false)\n }\n\n if (typeof value === 'number') {\n return String(value)\n }\n\n if (typeof value === 'object') {\n return Array.isArray(value) ? serializeArray(value) : serializeObject(value)\n }\n\n return undefined\n }\n\n function quoteString (value) {\n const quotes = {\n \"'\": 0.1,\n '\"': 0.2,\n };\n\n const replacements = {\n \"'\": \"\\\\'\",\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\',\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n '\\v': '\\\\v',\n '\\0': '\\\\0',\n '\\u2028': '\\\\u2028',\n '\\u2029': '\\\\u2029',\n };\n\n let product = '';\n\n for (let i = 0; i < value.length; i++) {\n const c = value[i];\n switch (c) {\n case \"'\":\n case '\"':\n quotes[c]++;\n product += c;\n continue\n\n case '\\0':\n if (util.isDigit(value[i + 1])) {\n product += '\\\\x00';\n continue\n }\n }\n\n if (replacements[c]) {\n product += replacements[c];\n continue\n }\n\n if (c < ' ') {\n let hexString = c.charCodeAt(0).toString(16);\n product += '\\\\x' + ('00' + hexString).substring(hexString.length);\n continue\n }\n\n product += c;\n }\n\n const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b);\n\n product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]);\n\n return quoteChar + product + quoteChar\n }\n\n function serializeObject (value) {\n if (stack.indexOf(value) >= 0) {\n throw TypeError('Converting circular structure to JSON5')\n }\n\n stack.push(value);\n\n let stepback = indent;\n indent = indent + gap;\n\n let keys = propertyList || Object.keys(value);\n let partial = [];\n for (const key of keys) {\n const propertyString = serializeProperty(key, value);\n if (propertyString !== undefined) {\n let member = serializeKey(key) + ':';\n if (gap !== '') {\n member += ' ';\n }\n member += propertyString;\n partial.push(member);\n }\n }\n\n let final;\n if (partial.length === 0) {\n final = '{}';\n } else {\n let properties;\n if (gap === '') {\n properties = partial.join(',');\n final = '{' + properties + '}';\n } else {\n let separator = ',\\n' + indent;\n properties = partial.join(separator);\n final = '{\\n' + indent + properties + ',\\n' + stepback + '}';\n }\n }\n\n stack.pop();\n indent = stepback;\n return final\n }\n\n function serializeKey (key) {\n if (key.length === 0) {\n return quoteString(key, true)\n }\n\n const firstChar = String.fromCodePoint(key.codePointAt(0));\n if (!util.isIdStartChar(firstChar)) {\n return quoteString(key, true)\n }\n\n for (let i = firstChar.length; i < key.length; i++) {\n if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {\n return quoteString(key, true)\n }\n }\n\n return key\n }\n\n function serializeArray (value) {\n if (stack.indexOf(value) >= 0) {\n throw TypeError('Converting circular structure to JSON5')\n }\n\n stack.push(value);\n\n let stepback = indent;\n indent = indent + gap;\n\n let partial = [];\n for (let i = 0; i < value.length; i++) {\n const propertyString = serializeProperty(String(i), value);\n partial.push((propertyString !== undefined) ? propertyString : 'null');\n }\n\n let final;\n if (partial.length === 0) {\n final = '[]';\n } else {\n if (gap === '') {\n let properties = partial.join(',');\n final = '[' + properties + ']';\n } else {\n let separator = ',\\n' + indent;\n let properties = partial.join(separator);\n final = '[\\n' + indent + properties + ',\\n' + stepback + ']';\n }\n }\n\n stack.pop();\n indent = stepback;\n return final\n }\n};\n\nconst JSON5 = {\n parse,\n stringify,\n};\n\nvar lib = JSON5;\n\nexport default lib;\n","\nimport {GeoJSONExporter} from \"../exporter/GeoJSONExporter.js\"\nimport {DXFExporter} from \"../exporter/DXFExporter.js\"\nimport {Volume, SphereVolume} from \"../utils/Volume.js\"\nimport {PolygonClipVolume} from \"../utils/PolygonClipVolume.js\"\nimport {PropertiesPanel} from \"./PropertyPanels/PropertiesPanel.js\"\nimport {PointCloudTree} from \"../PointCloudTree.js\"\nimport {Profile} from \"../utils/Profile.js\"\nimport {Measure} from \"../utils/Measure.js\"\nimport {Annotation} from \"../Annotation.js\"\nimport {CameraMode, ClipTask, ClipMethod} from \"../defines.js\"\nimport {ScreenBoxSelectTool} from \"../utils/ScreenBoxSelectTool.js\"\nimport {Utils} from \"../utils.js\"\nimport {CameraAnimation} from \"../modules/CameraAnimation/CameraAnimation.js\"\nimport {HierarchicalSlider} from \"./HierarchicalSlider.js\"\nimport {OrientedImage} from \"../modules/OrientedImages/OrientedImages.js\";\nimport {Images360} from \"../modules/Images360/Images360.js\";\n\nimport JSON5 from \"../../libs/json5-2.1.3/json5.mjs\";\n\nexport class Sidebar{\n\n\tconstructor(viewer){\n\t\tthis.viewer = viewer;\n\n\t\tthis.measuringTool = viewer.measuringTool;\n\t\tthis.profileTool = viewer.profileTool;\n\t\tthis.volumeTool = viewer.volumeTool;\n\n\t\tthis.dom = $(\"#sidebar_root\");\n\t}\n\n\tcreateToolIcon(icon, title, callback){\n\t\tlet element = $(`\n\t\t\t\n\t\t`);\n\n\t\telement.click(callback);\n\n\t\treturn element;\n\t}\n\n\tinit(){\n\n\t\tthis.initAccordion();\n\t\tthis.initAppearance();\n\t\tthis.initToolbar();\n\t\tthis.initScene();\n\t\tthis.initNavigation();\n\t\tthis.initFilters();\n\t\tthis.initClippingTool();\n\t\tthis.initSettings();\n\t\t\n\t\t$('#potree_version_number').html(Potree.version.major + \".\" + Potree.version.minor + Potree.version.suffix);\n\t}\n\n\t\t\n\n\tinitToolbar(){\n\n\t\t// ANGLE\n\t\tlet elToolbar = $('#tools');\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/angle.png',\n\t\t\t'[title]tt.angle_measurement',\n\t\t\t() => {\n\t\t\t\t$('#menu_measurements').next().slideDown();\n\t\t\t\tlet measurement = this.measuringTool.startInsertion({\n\t\t\t\t\tshowDistances: false,\n\t\t\t\t\tshowAngles: true,\n\t\t\t\t\tshowArea: false,\n\t\t\t\t\tclosed: true,\n\t\t\t\t\tmaxMarkers: 3,\n\t\t\t\t\tname: 'Angle'});\n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// POINT\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/point.svg',\n\t\t\t'[title]tt.point_measurement',\n\t\t\t() => {\n\t\t\t\t$('#menu_measurements').next().slideDown();\n\t\t\t\tlet measurement = this.measuringTool.startInsertion({\n\t\t\t\t\tshowDistances: false,\n\t\t\t\t\tshowAngles: false,\n\t\t\t\t\tshowCoordinates: true,\n\t\t\t\t\tshowArea: false,\n\t\t\t\t\tclosed: true,\n\t\t\t\t\tmaxMarkers: 1,\n\t\t\t\t\tname: 'Point'});\n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// DISTANCE\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/distance.svg',\n\t\t\t'[title]tt.distance_measurement',\n\t\t\t() => {\n\t\t\t\t$('#menu_measurements').next().slideDown();\n\t\t\t\tlet measurement = this.measuringTool.startInsertion({\n\t\t\t\t\tshowDistances: true,\n\t\t\t\t\tshowArea: false,\n\t\t\t\t\tclosed: false,\n\t\t\t\t\tname: 'Distance'});\n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// HEIGHT\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/height.svg',\n\t\t\t'[title]tt.height_measurement',\n\t\t\t() => {\n\t\t\t\t$('#menu_measurements').next().slideDown();\n\t\t\t\tlet measurement = this.measuringTool.startInsertion({\n\t\t\t\t\tshowDistances: false,\n\t\t\t\t\tshowHeight: true,\n\t\t\t\t\tshowArea: false,\n\t\t\t\t\tclosed: false,\n\t\t\t\t\tmaxMarkers: 2,\n\t\t\t\t\tname: 'Height'});\n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// CIRCLE\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/circle.svg',\n\t\t\t'[title]tt.circle_measurement',\n\t\t\t() => {\n\t\t\t\t$('#menu_measurements').next().slideDown();\n\t\t\t\tlet measurement = this.measuringTool.startInsertion({\n\t\t\t\t\tshowDistances: false,\n\t\t\t\t\tshowHeight: false,\n\t\t\t\t\tshowArea: false,\n\t\t\t\t\tshowCircle: true,\n\t\t\t\t\tshowEdges: false,\n\t\t\t\t\tclosed: false,\n\t\t\t\t\tmaxMarkers: 3,\n\t\t\t\t\tname: 'Circle'});\n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// AZIMUTH\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/azimuth.svg',\n\t\t\t'Azimuth',\n\t\t\t() => {\n\t\t\t\t$('#menu_measurements').next().slideDown();\n\t\t\t\tlet measurement = this.measuringTool.startInsertion({\n\t\t\t\t\tshowDistances: false,\n\t\t\t\t\tshowHeight: false,\n\t\t\t\t\tshowArea: false,\n\t\t\t\t\tshowCircle: false,\n\t\t\t\t\tshowEdges: false,\n\t\t\t\t\tshowAzimuth: true,\n\t\t\t\t\tclosed: false,\n\t\t\t\t\tmaxMarkers: 2,\n\t\t\t\t\tname: 'Azimuth'});\n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// AREA\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/area.svg',\n\t\t\t'[title]tt.area_measurement',\n\t\t\t() => {\n\t\t\t\t$('#menu_measurements').next().slideDown();\n\t\t\t\tlet measurement = this.measuringTool.startInsertion({\n\t\t\t\t\tshowDistances: true,\n\t\t\t\t\tshowArea: true,\n\t\t\t\t\tclosed: true,\n\t\t\t\t\tname: 'Area'});\n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// VOLUME\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/volume.svg',\n\t\t\t'[title]tt.volume_measurement',\n\t\t\t() => {\n\t\t\t\tlet volume = this.volumeTool.startInsertion(); \n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === volume.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// SPHERE VOLUME\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/sphere_distances.svg',\n\t\t\t'[title]tt.volume_measurement',\n\t\t\t() => { \n\t\t\t\tlet volume = this.volumeTool.startInsertion({type: SphereVolume}); \n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === volume.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// PROFILE\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/profile.svg',\n\t\t\t'[title]tt.height_profile',\n\t\t\t() => {\n\t\t\t\t$('#menu_measurements').next().slideDown(); ;\n\t\t\t\tlet profile = this.profileTool.startInsertion();\n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === profile.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// ANNOTATION\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/annotation.svg',\n\t\t\t'[title]tt.annotation',\n\t\t\t() => {\n\t\t\t\t$('#menu_measurements').next().slideDown(); ;\n\t\t\t\tlet annotation = this.viewer.annotationTool.startInsertion();\n\n\t\t\t\tlet annotationsRoot = $(\"#jstree_scene\").jstree().get_json(\"annotations\");\n\t\t\t\tlet jsonNode = annotationsRoot.children.find(child => child.data.uuid === annotation.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// REMOVE ALL\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/reset_tools.svg',\n\t\t\t'[title]tt.remove_all_measurement',\n\t\t\t() => {\n\t\t\t\tthis.viewer.scene.removeAllMeasurements();\n\t\t\t}\n\t\t));\n\n\n\t\t{ // SHOW / HIDE Measurements\n\t\t\tlet elShow = $(\"#measurement_options_show\");\n\t\t\telShow.selectgroup({title: \"Show/Hide labels\"});\n\n\t\t\telShow.find(\"input\").click( (e) => {\n\t\t\t\tconst show = e.target.value === \"SHOW\";\n\t\t\t\tthis.measuringTool.showLabels = show;\n\t\t\t});\n\n\t\t\tlet currentShow = this.measuringTool.showLabels ? \"SHOW\" : \"HIDE\";\n\t\t\telShow.find(`input[value=${currentShow}]`).trigger(\"click\");\n\t\t}\n\t}\n\n\tinitScene(){\n\n\t\tlet elScene = $(\"#menu_scene\");\n\t\tlet elObjects = elScene.next().find(\"#scene_objects\");\n\t\tlet elProperties = elScene.next().find(\"#scene_object_properties\");\n\t\t\n\n\t\t{\n\t\t\tlet elExport = elScene.next().find(\"#scene_export\");\n\n\t\t\tlet geoJSONIcon = `${Potree.resourcePath}/icons/file_geojson.svg`;\n\t\t\tlet dxfIcon = `${Potree.resourcePath}/icons/file_dxf.svg`;\n\t\t\tlet potreeIcon = `${Potree.resourcePath}/icons/file_potree.svg`;\n\n\t\t\telExport.append(`\n\t\t\t\tExport:
        \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t`);\n\n\t\t\tlet elDownloadJSON = elExport.find(\"img[name=geojson_export_button]\").parent();\n\t\t\telDownloadJSON.click( (event) => {\n\t\t\t\tlet scene = this.viewer.scene;\n\t\t\t\tlet measurements = [...scene.measurements, ...scene.profiles, ...scene.volumes];\n\n\t\t\t\tif(measurements.length > 0){\n\t\t\t\t\tlet geoJson = GeoJSONExporter.toString(measurements);\n\n\t\t\t\t\tlet url = window.URL.createObjectURL(new Blob([geoJson], {type: 'data:application/octet-stream'}));\n\t\t\t\t\telDownloadJSON.attr('href', url);\n\t\t\t\t}else{\n\t\t\t\t\tthis.viewer.postError(\"no measurements to export\");\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlet elDownloadDXF = elExport.find(\"img[name=dxf_export_button]\").parent();\n\t\t\telDownloadDXF.click( (event) => {\n\t\t\t\tlet scene = this.viewer.scene;\n\t\t\t\tlet measurements = [...scene.measurements, ...scene.profiles, ...scene.volumes];\n\n\t\t\t\tif(measurements.length > 0){\n\t\t\t\t\tlet dxf = DXFExporter.toString(measurements);\n\n\t\t\t\t\tlet url = window.URL.createObjectURL(new Blob([dxf], {type: 'data:application/octet-stream'}));\n\t\t\t\t\telDownloadDXF.attr('href', url);\n\t\t\t\t}else{\n\t\t\t\t\tthis.viewer.postError(\"no measurements to export\");\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlet elDownloadPotree = elExport.find(\"img[name=potree_export_button]\").parent();\n\t\t\telDownloadPotree.click( (event) => {\n\n\t\t\t\tlet data = Potree.saveProject(this.viewer);\n\t\t\t\tlet dataString = JSON5.stringify(data, null, \"\\t\")\n\n\t\t\t\tlet url = window.URL.createObjectURL(new Blob([dataString], {type: 'data:application/octet-stream'}));\n\t\t\t\telDownloadPotree.attr('href', url);\n\t\t\t});\n\t\t}\n\n\t\tlet propertiesPanel = new PropertiesPanel(elProperties, this.viewer);\n\t\tpropertiesPanel.setScene(this.viewer.scene);\n\t\t\n\t\tlocalStorage.removeItem('jstree');\n\n\t\tlet tree = $(`
        `);\n\t\telObjects.append(tree);\n\n\t\ttree.jstree({\n\t\t\t'plugins': [\"checkbox\", \"state\"],\n\t\t\t'core': {\n\t\t\t\t\"dblclick_toggle\": false,\n\t\t\t\t\"state\": {\n\t\t\t\t\t\"checked\" : true\n\t\t\t\t},\n\t\t\t\t'check_callback': true,\n\t\t\t\t\"expand_selected_onload\": true\n\t\t\t},\n\t\t\t\"checkbox\" : {\n\t\t\t\t\"keep_selected_style\": true,\n\t\t\t\t\"three_state\": false,\n\t\t\t\t\"whole_node\": false,\n\t\t\t\t\"tie_selection\": false,\n\t\t\t},\n\t\t});\n\n\t\tlet createNode = (parent, text, icon, object) => {\n\t\t\tlet nodeID = tree.jstree('create_node', parent, { \n\t\t\t\t\t\"text\": text, \n\t\t\t\t\t\"icon\": icon,\n\t\t\t\t\t\"data\": object\n\t\t\t\t}, \n\t\t\t\t\"last\", false, false);\n\t\t\t\n\t\t\tif(object.visible){\n\t\t\t\ttree.jstree('check_node', nodeID);\n\t\t\t}else{\n\t\t\t\ttree.jstree('uncheck_node', nodeID);\n\t\t\t}\n\n\t\t\treturn nodeID;\n\t\t}\n\n\t\tlet pcID = tree.jstree('create_node', \"#\", { \"text\": \"Point Clouds\", \"id\": \"pointclouds\"}, \"last\", false, false);\n\t\tlet measurementID = tree.jstree('create_node', \"#\", { \"text\": \"Measurements\", \"id\": \"measurements\" }, \"last\", false, false);\n\t\tlet annotationsID = tree.jstree('create_node', \"#\", { \"text\": \"Annotations\", \"id\": \"annotations\" }, \"last\", false, false);\n\t\tlet otherID = tree.jstree('create_node', \"#\", { \"text\": \"Other\", \"id\": \"other\" }, \"last\", false, false);\n\t\tlet vectorsID = tree.jstree('create_node', \"#\", { \"text\": \"Vectors\", \"id\": \"vectors\" }, \"last\", false, false);\n\t\tlet imagesID = tree.jstree('create_node', \"#\", { \"text\": \" Images\", \"id\": \"images\" }, \"last\", false, false);\n\n\t\ttree.jstree(\"check_node\", pcID);\n\t\ttree.jstree(\"check_node\", measurementID);\n\t\ttree.jstree(\"check_node\", annotationsID);\n\t\ttree.jstree(\"check_node\", otherID);\n\t\ttree.jstree(\"check_node\", vectorsID);\n\t\ttree.jstree(\"check_node\", imagesID);\n\n\t\ttree.on('create_node.jstree', (e, data) => {\n\t\t\ttree.jstree(\"open_all\");\n\t\t});\n\n\t\ttree.on(\"select_node.jstree\", (e, data) => {\n\t\t\tlet object = data.node.data;\n\t\t\tpropertiesPanel.set(object);\n\n\t\t\tthis.viewer.inputHandler.deselectAll();\n\n\t\t\tif(object instanceof Volume){\n\t\t\t\tthis.viewer.inputHandler.toggleSelection(object);\n\t\t\t}\n\n\t\t\t$(this.viewer.renderer.domElement).focus();\n\t\t});\n\n\t\ttree.on(\"deselect_node.jstree\", (e, data) => {\n\t\t\tpropertiesPanel.set(null);\n\t\t});\n\n\t\ttree.on(\"delete_node.jstree\", (e, data) => {\n\t\t\tpropertiesPanel.set(null);\n\t\t});\n\n\t\ttree.on('dblclick','.jstree-anchor', (e) => {\n\n\t\t\tlet instance = $.jstree.reference(e.target);\n\t\t\tlet node = instance.get_node(e.target);\n\t\t\tlet object = node.data;\n\n\t\t\t// ignore double click on checkbox\n\t\t\tif(e.target.classList.contains(\"jstree-checkbox\")){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(object instanceof PointCloudTree){\n\t\t\t\tlet box = this.viewer.getBoundingBox([object]);\n\t\t\t\tlet node = new THREE.Object3D();\n\t\t\t\tnode.boundingBox = box;\n\t\t\t\tthis.viewer.zoomTo(node, 1, 500);\n\t\t\t}else if(object instanceof Measure){\n\t\t\t\tlet points = object.points.map(p => p.position);\n\t\t\t\tlet box = new THREE.Box3().setFromPoints(points);\n\t\t\t\tif(box.getSize(new THREE.Vector3()).length() > 0){\n\t\t\t\t\tlet node = new THREE.Object3D();\n\t\t\t\t\tnode.boundingBox = box;\n\t\t\t\t\tthis.viewer.zoomTo(node, 2, 500);\n\t\t\t\t}\n\t\t\t}else if(object instanceof Profile){\n\t\t\t\tlet points = object.points;\n\t\t\t\tlet box = new THREE.Box3().setFromPoints(points);\n\t\t\t\tif(box.getSize(new THREE.Vector3()).length() > 0){\n\t\t\t\t\tlet node = new THREE.Object3D();\n\t\t\t\t\tnode.boundingBox = box;\n\t\t\t\t\tthis.viewer.zoomTo(node, 1, 500);\n\t\t\t\t}\n\t\t\t}else if(object instanceof Volume){\n\t\t\t\t\n\t\t\t\tlet box = object.boundingBox.clone().applyMatrix4(object.matrixWorld);\n\n\t\t\t\tif(box.getSize(new THREE.Vector3()).length() > 0){\n\t\t\t\t\tlet node = new THREE.Object3D();\n\t\t\t\t\tnode.boundingBox = box;\n\t\t\t\t\tthis.viewer.zoomTo(node, 1, 500);\n\t\t\t\t}\n\t\t\t}else if(object instanceof Annotation){\n\t\t\t\tobject.moveHere(this.viewer.scene.getActiveCamera());\n\t\t\t}else if(object instanceof PolygonClipVolume){\n\t\t\t\tlet dir = object.camera.getWorldDirection(new THREE.Vector3());\n\t\t\t\tlet target;\n\n\t\t\t\tif(object.camera instanceof THREE.OrthographicCamera){\n\t\t\t\t\tdir.multiplyScalar(object.camera.right)\n\t\t\t\t\ttarget = new THREE.Vector3().addVectors(object.camera.position, dir);\n\t\t\t\t\tthis.viewer.setCameraMode(CameraMode.ORTHOGRAPHIC);\n\t\t\t\t}else if(object.camera instanceof THREE.PerspectiveCamera){\n\t\t\t\t\tdir.multiplyScalar(this.viewer.scene.view.radius);\n\t\t\t\t\ttarget = new THREE.Vector3().addVectors(object.camera.position, dir);\n\t\t\t\t\tthis.viewer.setCameraMode(CameraMode.PERSPECTIVE);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.viewer.scene.view.position.copy(object.camera.position);\n\t\t\t\tthis.viewer.scene.view.lookAt(target);\n\t\t\t}else if(object instanceof THREE.SpotLight){\n\t\t\t\tlet distance = (object.distance > 0) ? object.distance / 4 : 5 * 1000;\n\t\t\t\tlet position = object.position;\n\t\t\t\tlet target = new THREE.Vector3().addVectors(\n\t\t\t\t\tposition, \n\t\t\t\t\tobject.getWorldDirection(new THREE.Vector3()).multiplyScalar(distance));\n\n\t\t\t\tthis.viewer.scene.view.position.copy(object.position);\n\t\t\t\tthis.viewer.scene.view.lookAt(target);\n\t\t\t}else if(object instanceof THREE.Object3D){\n\t\t\t\tlet box = new THREE.Box3().setFromObject(object);\n\n\t\t\t\tif(box.getSize(new THREE.Vector3()).length() > 0){\n\t\t\t\t\tlet node = new THREE.Object3D();\n\t\t\t\t\tnode.boundingBox = box;\n\t\t\t\t\tthis.viewer.zoomTo(node, 1, 500);\n\t\t\t\t}\n\t\t\t}else if(object instanceof OrientedImage){\n\t\t\t\t// TODO zoom to images\n\n\t\t\t\t// let box = new THREE.Box3().setFromObject(object);\n\n\t\t\t\t// if(box.getSize(new THREE.Vector3()).length() > 0){\n\t\t\t\t// \tlet node = new THREE.Object3D();\n\t\t\t\t// \tnode.boundingBox = box;\n\t\t\t\t// \tthis.viewer.zoomTo(node, 1, 500);\n\t\t\t\t// }\n\t\t\t}else if(object instanceof Images360){\n\t\t\t\t// TODO\n\t\t\t}else if(object instanceof Geopackage){\n\t\t\t\t// TODO\n\t\t\t}\n\t\t});\n\n\t\ttree.on(\"uncheck_node.jstree\", (e, data) => {\n\t\t\tlet object = data.node.data;\n\n\t\t\tif(object){\n\t\t\t\tobject.visible = false;\n\t\t\t}\n\t\t});\n\n\t\ttree.on(\"check_node.jstree\", (e, data) => {\n\t\t\tlet object = data.node.data;\n\n\t\t\tif(object){\n\t\t\t\tobject.visible = true;\n\t\t\t}\n\t\t});\n\n\n\t\tlet onPointCloudAdded = (e) => {\n\t\t\tlet pointcloud = e.pointcloud;\n\t\t\tlet cloudIcon = `${Potree.resourcePath}/icons/cloud.svg`;\n\t\t\tlet node = createNode(pcID, pointcloud.name, cloudIcon, pointcloud);\n\n\t\t\tpointcloud.addEventListener(\"visibility_changed\", () => {\n\t\t\t\tif(pointcloud.visible){\n\t\t\t\t\ttree.jstree('check_node', node);\n\t\t\t\t}else{\n\t\t\t\t\ttree.jstree('uncheck_node', node);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tlet onMeasurementAdded = (e) => {\n\t\t\tlet measurement = e.measurement;\n\t\t\tlet icon = Utils.getMeasurementIcon(measurement);\n\t\t\tcreateNode(measurementID, measurement.name, icon, measurement);\n\t\t};\n\n\t\tlet onVolumeAdded = (e) => {\n\t\t\tlet volume = e.volume;\n\t\t\tlet icon = Utils.getMeasurementIcon(volume);\n\t\t\tlet node = createNode(measurementID, volume.name, icon, volume);\n\n\t\t\tvolume.addEventListener(\"visibility_changed\", () => {\n\t\t\t\tif(volume.visible){\n\t\t\t\t\ttree.jstree('check_node', node);\n\t\t\t\t}else{\n\t\t\t\t\ttree.jstree('uncheck_node', node);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tlet onProfileAdded = (e) => {\n\t\t\tlet profile = e.profile;\n\t\t\tlet icon = Utils.getMeasurementIcon(profile);\n\t\t\tcreateNode(measurementID, profile.name, icon, profile);\n\t\t};\n\n\t\tlet onAnnotationAdded = (e) => {\n\t\t\tlet annotation = e.annotation;\n\n\t\t\tlet annotationIcon = `${Potree.resourcePath}/icons/annotation.svg`;\n\t\t\tlet parentID = this.annotationMapping.get(annotation.parent);\n\t\t\tlet annotationID = createNode(parentID, annotation.title, annotationIcon, annotation);\n\t\t\tthis.annotationMapping.set(annotation, annotationID);\n\n\t\t\tannotation.addEventListener(\"annotation_changed\", (e) => {\n\t\t\t\tlet annotationsRoot = $(\"#jstree_scene\").jstree().get_json(\"annotations\");\n\t\t\t\tlet jsonNode = annotationsRoot.children.find(child => child.data.uuid === annotation.uuid);\n\t\t\t\t\n\t\t\t\t$.jstree.reference(jsonNode.id).rename_node(jsonNode.id, annotation.title);\n\t\t\t});\n\t\t};\n\n\t\tlet onCameraAnimationAdded = (e) => {\n\t\t\tconst animation = e.animation;\n\n\t\t\tconst animationIcon = `${Potree.resourcePath}/icons/camera_animation.svg`;\n\t\t\tcreateNode(otherID, \"animation\", animationIcon, animation);\n\t\t};\n\n\t\tlet onOrientedImagesAdded = (e) => {\n\t\t\tconst images = e.images;\n\n\t\t\tconst imagesIcon = `${Potree.resourcePath}/icons/picture.svg`;\n\t\t\tconst node = createNode(imagesID, \"images\", imagesIcon, images);\n\n\t\t\timages.addEventListener(\"visibility_changed\", () => {\n\t\t\t\tif(images.visible){\n\t\t\t\t\ttree.jstree('check_node', node);\n\t\t\t\t}else{\n\t\t\t\t\ttree.jstree('uncheck_node', node);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tlet onImages360Added = (e) => {\n\t\t\tconst images = e.images;\n\n\t\t\tconst imagesIcon = `${Potree.resourcePath}/icons/picture.svg`;\n\t\t\tconst node = createNode(imagesID, \"360° images\", imagesIcon, images);\n\n\t\t\timages.addEventListener(\"visibility_changed\", () => {\n\t\t\t\tif(images.visible){\n\t\t\t\t\ttree.jstree('check_node', node);\n\t\t\t\t}else{\n\t\t\t\t\ttree.jstree('uncheck_node', node);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tconst onGeopackageAdded = (e) => {\n\t\t\tconst geopackage = e.geopackage;\n\n\t\t\tconst geopackageIcon = `${Potree.resourcePath}/icons/triangle.svg`;\n\t\t\tconst tree = $(`#jstree_scene`);\n\t\t\tconst parentNode = \"vectors\";\n\n\t\t\tfor(const layer of geopackage.node.children){\n\t\t\t\tconst name = layer.name;\n\n\t\t\t\tlet shpPointsID = tree.jstree('create_node', parentNode, { \n\t\t\t\t\t\t\"text\": name, \n\t\t\t\t\t\t\"icon\": geopackageIcon,\n\t\t\t\t\t\t\"object\": layer,\n\t\t\t\t\t\t\"data\": layer,\n\t\t\t\t\t}, \n\t\t\t\t\t\"last\", false, false);\n\t\t\t\ttree.jstree(layer.visible ? \"check_node\" : \"uncheck_node\", shpPointsID);\n\t\t\t}\n\n\t\t};\n\n\t\tthis.viewer.scene.addEventListener(\"pointcloud_added\", onPointCloudAdded);\n\t\tthis.viewer.scene.addEventListener(\"measurement_added\", onMeasurementAdded);\n\t\tthis.viewer.scene.addEventListener(\"profile_added\", onProfileAdded);\n\t\tthis.viewer.scene.addEventListener(\"volume_added\", onVolumeAdded);\n\t\tthis.viewer.scene.addEventListener(\"camera_animation_added\", onCameraAnimationAdded);\n\t\tthis.viewer.scene.addEventListener(\"oriented_images_added\", onOrientedImagesAdded);\n\t\tthis.viewer.scene.addEventListener(\"360_images_added\", onImages360Added);\n\t\tthis.viewer.scene.addEventListener(\"geopackage_added\", onGeopackageAdded);\n\t\tthis.viewer.scene.addEventListener(\"polygon_clip_volume_added\", onVolumeAdded);\n\t\tthis.viewer.scene.annotations.addEventListener(\"annotation_added\", onAnnotationAdded);\n\n\t\tlet onMeasurementRemoved = (e) => {\n\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === e.measurement.uuid);\n\t\t\t\n\t\t\ttree.jstree(\"delete_node\", jsonNode.id);\n\t\t};\n\n\t\tlet onVolumeRemoved = (e) => {\n\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === e.volume.uuid);\n\t\t\t\n\t\t\ttree.jstree(\"delete_node\", jsonNode.id);\n\t\t};\n\n\t\tlet onPolygonClipVolumeRemoved = (e) => {\n\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === e.volume.uuid);\n\t\t\t\n\t\t\ttree.jstree(\"delete_node\", jsonNode.id);\n\t\t};\n\n\t\tlet onProfileRemoved = (e) => {\n\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === e.profile.uuid);\n\t\t\t\n\t\t\ttree.jstree(\"delete_node\", jsonNode.id);\n\t\t};\n\n\t\tthis.viewer.scene.addEventListener(\"measurement_removed\", onMeasurementRemoved);\n\t\tthis.viewer.scene.addEventListener(\"volume_removed\", onVolumeRemoved);\n\t\tthis.viewer.scene.addEventListener(\"polygon_clip_volume_removed\", onPolygonClipVolumeRemoved);\n\t\tthis.viewer.scene.addEventListener(\"profile_removed\", onProfileRemoved);\n\n\t\t{\n\t\t\tlet annotationIcon = `${Potree.resourcePath}/icons/annotation.svg`;\n\t\t\tthis.annotationMapping = new Map(); \n\t\t\tthis.annotationMapping.set(this.viewer.scene.annotations, annotationsID);\n\t\t\tthis.viewer.scene.annotations.traverseDescendants(annotation => {\n\t\t\t\tlet parentID = this.annotationMapping.get(annotation.parent);\n\t\t\t\tlet annotationID = createNode(parentID, annotation.title, annotationIcon, annotation);\n\t\t\t\tthis.annotationMapping.set(annotation, annotationID);\n\t\t\t});\n\t\t}\n\n\t\tconst scene = this.viewer.scene;\n\t\tfor(let pointcloud of scene.pointclouds){\n\t\t\tonPointCloudAdded({pointcloud: pointcloud});\n\t\t}\n\n\t\tfor(let measurement of scene.measurements){\n\t\t\tonMeasurementAdded({measurement: measurement});\n\t\t}\n\n\t\tfor(let volume of [...scene.volumes, ...scene.polygonClipVolumes]){\n\t\t\tonVolumeAdded({volume: volume});\n\t\t}\n\n\t\tfor(let animation of scene.cameraAnimations){\n\t\t\tonCameraAnimationAdded({animation: animation});\n\t\t}\n\n\t\tfor(let images of scene.orientedImages){\n\t\t\tonOrientedImagesAdded({images: images});\n\t\t}\n\n\t\tfor(let images of scene.images360){\n\t\t\tonImages360Added({images: images});\n\t\t}\n\n\t\tfor(const geopackage of scene.geopackages){\n\t\t\tonGeopackageAdded({geopackage: geopackage});\n\t\t}\n\n\t\tfor(let profile of scene.profiles){\n\t\t\tonProfileAdded({profile: profile});\n\t\t}\n\n\t\t{\n\t\t\tcreateNode(otherID, \"Camera\", null, new THREE.Camera());\n\t\t}\n\n\t\tthis.viewer.addEventListener(\"scene_changed\", (e) => {\n\t\t\tpropertiesPanel.setScene(e.scene);\n\n\t\t\te.oldScene.removeEventListener(\"pointcloud_added\", onPointCloudAdded);\n\t\t\te.oldScene.removeEventListener(\"measurement_added\", onMeasurementAdded);\n\t\t\te.oldScene.removeEventListener(\"profile_added\", onProfileAdded);\n\t\t\te.oldScene.removeEventListener(\"volume_added\", onVolumeAdded);\n\t\t\te.oldScene.removeEventListener(\"polygon_clip_volume_added\", onVolumeAdded);\n\t\t\te.oldScene.removeEventListener(\"measurement_removed\", onMeasurementRemoved);\n\n\t\t\te.scene.addEventListener(\"pointcloud_added\", onPointCloudAdded);\n\t\t\te.scene.addEventListener(\"measurement_added\", onMeasurementAdded);\n\t\t\te.scene.addEventListener(\"profile_added\", onProfileAdded);\n\t\t\te.scene.addEventListener(\"volume_added\", onVolumeAdded);\n\t\t\te.scene.addEventListener(\"polygon_clip_volume_added\", onVolumeAdded);\n\t\t\te.scene.addEventListener(\"measurement_removed\", onMeasurementRemoved);\n\t\t});\n\n\t}\n\n\tinitClippingTool(){\n\n\n\t\tthis.viewer.addEventListener(\"cliptask_changed\", (event) => {\n\t\t\tconsole.log(\"TODO\");\n\t\t});\n\n\t\tthis.viewer.addEventListener(\"clipmethod_changed\", (event) => {\n\t\t\tconsole.log(\"TODO\");\n\t\t});\n\n\t\t{\n\t\t\tlet elClipTask = $(\"#cliptask_options\");\n\t\t\telClipTask.selectgroup({title: \"Clip Task\"});\n\n\t\t\telClipTask.find(\"input\").click( (e) => {\n\t\t\t\tthis.viewer.setClipTask(ClipTask[e.target.value]);\n\t\t\t});\n\n\t\t\tlet currentClipTask = Object.keys(ClipTask)\n\t\t\t\t.filter(key => ClipTask[key] === this.viewer.clipTask);\n\t\t\telClipTask.find(`input[value=${currentClipTask}]`).trigger(\"click\");\n\t\t}\n\n\t\t{\n\t\t\tlet elClipMethod = $(\"#clipmethod_options\");\n\t\t\telClipMethod.selectgroup({title: \"Clip Method\"});\n\n\t\t\telClipMethod.find(\"input\").click( (e) => {\n\t\t\t\tthis.viewer.setClipMethod(ClipMethod[e.target.value]);\n\t\t\t});\n\n\t\t\tlet currentClipMethod = Object.keys(ClipMethod)\n\t\t\t\t.filter(key => ClipMethod[key] === this.viewer.clipMethod);\n\t\t\telClipMethod.find(`input[value=${currentClipMethod}]`).trigger(\"click\");\n\t\t}\n\n\t\tlet clippingToolBar = $(\"#clipping_tools\");\n\n\t\t// CLIP VOLUME\n\t\tclippingToolBar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/clip_volume.svg',\n\t\t\t'[title]tt.clip_volume',\n\t\t\t() => {\n\t\t\t\tlet item = this.volumeTool.startInsertion({clip: true}); \n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === item.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// CLIP POLYGON\n\t\tclippingToolBar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + \"/icons/clip-polygon.svg\",\n\t\t\t\"[title]tt.clip_polygon\",\n\t\t\t() => {\n\t\t\t\tlet item = this.viewer.clippingTool.startInsertion({type: \"polygon\"});\n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === item.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t{// SCREEN BOX SELECT\n\t\t\tlet boxSelectTool = new ScreenBoxSelectTool(this.viewer);\n\n\t\t\tclippingToolBar.append(this.createToolIcon(\n\t\t\t\tPotree.resourcePath + \"/icons/clip-screen.svg\",\n\t\t\t\t\"[title]tt.screen_clip_box\",\n\t\t\t\t() => {\n\t\t\t\t\tif(!(this.viewer.scene.getActiveCamera() instanceof THREE.OrthographicCamera)){\n\t\t\t\t\t\tthis.viewer.postMessage(`Switch to Orthographic Camera Mode before using the Screen-Box-Select tool.`, \n\t\t\t\t\t\t\t{duration: 2000});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tlet item = boxSelectTool.startInsertion();\n\n\t\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === item.uuid);\n\t\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\n\t\t{ // REMOVE CLIPPING TOOLS\n\t\t\tclippingToolBar.append(this.createToolIcon(\n\t\t\t\tPotree.resourcePath + \"/icons/remove.svg\",\n\t\t\t\t\"[title]tt.remove_all_measurement\",\n\t\t\t\t() => {\n\n\t\t\t\t\tthis.viewer.scene.removeAllClipVolumes();\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\n\t}\n\n\tinitFilters(){\n\t\tthis.initClassificationList();\n\t\tthis.initReturnFilters();\n\t\tthis.initGPSTimeFilters();\n\t\tthis.initPointSourceIDFilters();\n\n\t}\n\n\tinitReturnFilters(){\n\t\tlet elReturnFilterPanel = $('#return_filter_panel');\n\n\t\t{ // RETURN NUMBER\n\t\t\tlet sldReturnNumber = elReturnFilterPanel.find('#sldReturnNumber');\n\t\t\tlet lblReturnNumber = elReturnFilterPanel.find('#lblReturnNumber');\n\n\t\t\tsldReturnNumber.slider({\n\t\t\t\trange: true,\n\t\t\t\tmin: 0, max: 7, step: 1,\n\t\t\t\tvalues: [0, 7],\n\t\t\t\tslide: (event, ui) => {\n\t\t\t\t\tthis.viewer.setFilterReturnNumberRange(ui.values[0], ui.values[1])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlet onReturnNumberChanged = (event) => {\n\t\t\t\tlet [from, to] = this.viewer.filterReturnNumberRange;\n\n\t\t\t\tlblReturnNumber[0].innerHTML = `${from} to ${to}`;\n\t\t\t\tsldReturnNumber.slider({values: [from, to]});\n\t\t\t};\n\n\t\t\tthis.viewer.addEventListener('filter_return_number_range_changed', onReturnNumberChanged);\n\n\t\t\tonReturnNumberChanged();\n\t\t}\n\n\t\t{ // NUMBER OF RETURNS\n\t\t\tlet sldNumberOfReturns = elReturnFilterPanel.find('#sldNumberOfReturns');\n\t\t\tlet lblNumberOfReturns = elReturnFilterPanel.find('#lblNumberOfReturns');\n\n\t\t\tsldNumberOfReturns.slider({\n\t\t\t\trange: true,\n\t\t\t\tmin: 0, max: 7, step: 1,\n\t\t\t\tvalues: [0, 7],\n\t\t\t\tslide: (event, ui) => {\n\t\t\t\t\tthis.viewer.setFilterNumberOfReturnsRange(ui.values[0], ui.values[1])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlet onNumberOfReturnsChanged = (event) => {\n\t\t\t\tlet [from, to] = this.viewer.filterNumberOfReturnsRange;\n\n\t\t\t\tlblNumberOfReturns[0].innerHTML = `${from} to ${to}`;\n\t\t\t\tsldNumberOfReturns.slider({values: [from, to]});\n\t\t\t};\n\n\t\t\tthis.viewer.addEventListener('filter_number_of_returns_range_changed', onNumberOfReturnsChanged);\n\n\t\t\tonNumberOfReturnsChanged();\n\t\t}\n\t}\n\n\tinitGPSTimeFilters(){\n\n\t\tlet elGPSTimeFilterPanel = $('#gpstime_filter_panel');\n\n\t\t{\n\t\t\tlet slider = new HierarchicalSlider({\n\t\t\t\tlevels: 4,\n\t\t\t\tslide: (event) => {\n\t\t\t\t\tthis.viewer.setFilterGPSTimeRange(...event.values);\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tlet initialized = false;\n\n\t\t\tlet initialize = () => {\n\t\t\t\t\n\t\t\t\tlet elRangeContainer = $(\"#gpstime_multilevel_range_container\");\n\t\t\t\telRangeContainer[0].prepend(slider.element);\n\n\t\t\t\tlet extent = this.viewer.getGpsTimeExtent();\n\n\t\t\t\tslider.setRange(extent);\n\t\t\t\tslider.setValues(extent);\n\n\n\t\t\t\tinitialized = true;\n\t\t\t};\n\n\t\t\tthis.viewer.addEventListener(\"update\", (e) => {\n\t\t\t\tlet extent = this.viewer.getGpsTimeExtent();\n\t\t\t\tlet gpsTimeAvailable = extent[0] !== Infinity;\n\n\t\t\t\tif(!initialized && gpsTimeAvailable){\n\t\t\t\t\tinitialize();\n\t\t\t\t}\n\n\t\t\t\tslider.setRange(extent);\n\t\t\t});\n\t\t}\n\n\n\t\t{\n\t\t\t\n\t\t\tconst txtGpsTime = elGPSTimeFilterPanel.find(\"#txtGpsTime\");\n\t\t\tconst btnFindGpsTime = elGPSTimeFilterPanel.find(\"#btnFindGpsTime\");\n\n\t\t\tlet targetTime = null;\n\n\t\t\ttxtGpsTime.on(\"input\", (e) => {\n\t\t\t\tconst str = txtGpsTime.val();\n\n\t\t\t\tif(!isNaN(str)){\n\t\t\t\t\tconst value = parseFloat(str);\n\t\t\t\t\ttargetTime = value;\n\n\t\t\t\t\ttxtGpsTime.css(\"background-color\", \"\")\n\t\t\t\t}else{\n\t\t\t\t\ttargetTime = null;\n\n\t\t\t\t\ttxtGpsTime.css(\"background-color\", \"#ff9999\")\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t\tbtnFindGpsTime.click( () => {\n\t\t\t\t\n\t\t\t\tif(targetTime !== null){\n\t\t\t\t\tviewer.moveToGpsTimeVicinity(targetTime);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t}\n\n\tinitPointSourceIDFilters() {\n\t\tlet elPointSourceIDFilterPanel = $('#pointsourceid_filter_panel');\n\n\t\t{\n\t\t\tlet slider = new HierarchicalSlider({\n\t\t\t\tlevels: 4,\n\t\t\t\trange: [0, 65535],\n\t\t\t\tprecision: 1,\n\t\t\t\tslide: (event) => {\n\t\t\t\t\tlet values = event.values;\n\t\t\t\t\tthis.viewer.setFilterPointSourceIDRange(values[0], values[1]);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlet initialized = false;\n\n\t\t\tlet initialize = () => {\n\t\t\t\telPointSourceIDFilterPanel[0].prepend(slider.element);\n\n\t\t\t\tinitialized = true;\n\t\t\t};\n\n\t\t\tthis.viewer.addEventListener(\"update\", (e) => {\n\t\t\t\tlet extent = this.viewer.filterPointSourceIDRange;\n\n\t\t\t\tif(!initialized){\n\t\t\t\t\tinitialize();\n\n\t\t\t\t\tslider.setValues(extent);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t});\n\t\t}\n\n\t\t// let lblPointSourceID = elPointSourceIDFilterPanel.find(\"#lblPointSourceID\");\n\t\t// let elPointSourceID = elPointSourceIDFilterPanel.find(\"#spnPointSourceID\");\n\n\t\t// let slider = new ZoomableSlider();\n\t\t// elPointSourceID[0].appendChild(slider.element);\n\t\t// slider.update();\n\n\t\t// slider.change( () => {\n\t\t// \tlet range = slider.chosenRange;\n\t\t// \tthis.viewer.setFilterPointSourceIDRange(range[0], range[1]);\n\t\t// });\n\n\t\t// let onPointSourceIDExtentChanged = (event) => {\n\t\t// \tlet range = this.viewer.filterPointSourceIDExtent;\n\t\t// \tslider.setVisibleRange(range);\n\t\t// };\n\n\t\t// let onPointSourceIDChanged = (event) => {\n\t\t// \tlet range = this.viewer.filterPointSourceIDRange;\n\n\t\t// \tlet precision = 1;\n\t\t// \tlet from = `${Utils.addCommas(range[0].toFixed(precision))}`;\n\t\t// \tlet to = `${Utils.addCommas(range[1].toFixed(precision))}`;\n\t\t// \tlblPointSourceID[0].innerHTML = `${from} to ${to}`;\n\n\t\t// \tslider.setRange(range);\n\t\t// };\n\n\t\t// this.viewer.addEventListener('filter_point_source_id_range_changed', onPointSourceIDChanged);\n\t\t// this.viewer.addEventListener('filter_point_source_id_extent_changed', onPointSourceIDExtentChanged);\n\n\t}\n\n\tinitClassificationList(){\n\t\tlet elClassificationList = $('#classificationList');\n\n\t\tlet addClassificationItem = (code, name) => {\n\t\t\tconst classification = this.viewer.classifications[code];\n\t\t\tconst inputID = 'chkClassification_' + code;\n\t\t\tconst colorPickerID = 'colorPickerClassification_' + code;\n\n\t\t\tconst checked = classification.visible ? \"checked\" : \"\";\n\n\t\t\tlet element = $(`\n\t\t\t\t
      • \n\t\t\t\t\t\n\t\t\t\t
      • \n\t\t\t`);\n\n\t\t\tconst elInput = element.find('input');\n\t\t\tconst elColorPicker = element.find(`#${colorPickerID}`);\n\n\t\t\telInput.click(event => {\n\t\t\t\tthis.viewer.setClassificationVisibility(code, event.target.checked);\n\t\t\t});\n\n\t\t\tlet defaultColor = classification.color.map(c => c * 255).join(\", \");\n\t\t\tdefaultColor = `rgb(${defaultColor})`;\n\n\n\t\t\telColorPicker.spectrum({\n\t\t\t\t// flat: true,\n\t\t\t\tcolor: defaultColor,\n\t\t\t\tshowInput: true,\n\t\t\t\tpreferredFormat: 'rgb',\n\t\t\t\tcancelText: '',\n\t\t\t\tchooseText: 'Apply',\n\t\t\t\tmove: color => {\n\t\t\t\t\tlet rgb = color.toRgb();\n\t\t\t\t\tconst c = [rgb.r / 255, rgb.g / 255, rgb.b / 255, 1];\n\t\t\t\t\tclassification.color = c;\n\t\t\t\t},\n\t\t\t\tchange: color => {\n\t\t\t\t\tlet rgb = color.toRgb();\n\t\t\t\t\tconst c = [rgb.r / 255, rgb.g / 255, rgb.b / 255, 1];\n\t\t\t\t\tclassification.color = c;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\telClassificationList.append(element);\n\t\t};\n\n\t\tconst addToggleAllButton = () => { // toggle all button\n\t\t\tconst element = $(`\n\t\t\t\t
      • \n\t\t\t\t\t\n\t\t\t\t
      • \n\t\t\t`);\n\n\t\t\tlet elInput = element.find('input');\n\n\t\t\telInput.click(event => {\n\t\t\t\tthis.viewer.toggleAllClassificationsVisibility();\n\t\t\t});\n\n\t\t\telClassificationList.append(element);\n\t\t}\n\n\t\tconst addInvertButton = () => { \n\t\t\tconst element = $(`\n\t\t\t\t
      • \n\t\t\t\t\t\n\t\t\t\t
      • \n\t\t\t`);\n\n\t\t\tlet elInput = element.find('input');\n\n\t\t\telInput.click( () => {\n\t\t\t\tconst classifications = this.viewer.classifications;\n\t\n\t\t\t\tfor(let key of Object.keys(classifications)){\n\t\t\t\t\tlet value = classifications[key];\n\t\t\t\t\tthis.viewer.setClassificationVisibility(key, !value.visible);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\telClassificationList.append(element);\n\t\t};\n\n\t\tconst populate = () => {\n\t\t\taddToggleAllButton();\n\t\t\tfor (let classID in this.viewer.classifications) {\n\t\t\t\taddClassificationItem(classID, this.viewer.classifications[classID].name);\n\t\t\t}\n\t\t\taddInvertButton();\n\t\t};\n\n\t\tpopulate();\n\n\t\tthis.viewer.addEventListener(\"classifications_changed\", () => {\n\t\t\telClassificationList.empty();\n\t\t\tpopulate();\n\t\t});\n\n\t\tthis.viewer.addEventListener(\"classification_visibility_changed\", () => {\n\n\t\t\t{ // set checked state of classification buttons\n\t\t\t\tfor(const classID of Object.keys(this.viewer.classifications)){\n\t\t\t\t\tconst classValue = this.viewer.classifications[classID];\n\n\t\t\t\t\tlet elItem = elClassificationList.find(`#chkClassification_${classID}`);\n\t\t\t\t\telItem.prop(\"checked\", classValue.visible);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t{ // set checked state of toggle button based on state of all other buttons\n\t\t\t\tlet numVisible = 0;\n\t\t\t\tlet numItems = 0;\n\t\t\t\tfor(const key of Object.keys(this.viewer.classifications)){\n\t\t\t\t\tif(this.viewer.classifications[key].visible){\n\t\t\t\t\t\tnumVisible++;\n\t\t\t\t\t}\n\t\t\t\t\tnumItems++;\n\t\t\t\t}\n\t\t\t\tconst allVisible = numVisible === numItems;\n\n\t\t\t\tlet elToggle = elClassificationList.find(\"#toggleClassificationFilters\");\n\t\t\t\telToggle.prop(\"checked\", allVisible);\n\t\t\t}\n\t\t});\n\t}\n\n\tinitAccordion(){\n\t\t$('.accordion > h3').each(function(){\n\t\t\tlet header = $(this);\n\t\t\tlet content = $(this).next();\n\n\t\t\t//header.addClass('accordion-header ui-widget');\n\t\t\t//content.addClass('accordion-content ui-widget');\n\n\t\t\tcontent.hide();\n\n\t\t\theader.click(() => {\n\t\t\t\tcontent.slideToggle();\n\t\t\t});\n\t\t});\n\n\t\tlet languages = [\n\t\t\t[\"EN\", \"en\"],\n\t\t\t[\"FR\", \"fr\"],\n\t\t\t[\"DE\", \"de\"],\n\t\t\t[\"JP\", \"jp\"],\n\t\t\t[\"ES\", \"es\"],\n\t\t\t[\"SE\", \"se\"]\n\t\t];\n\n\t\tlet elLanguages = $('#potree_languages');\n\t\tfor(let i = 0; i < languages.length; i++){\n\t\t\tlet [key, value] = languages[i];\n\t\t\tlet element = $(`${key}`);\n\t\t\telement.click(() => this.viewer.setLanguage(value));\n\n\t\t\tif(i === 0){\n\t\t\t\telement.css(\"margin-left\", \"30px\");\n\t\t\t}\n\t\t\t\n\t\t\telLanguages.append(element);\n\n\t\t\tif(i < languages.length - 1){\n\t\t\t\telLanguages.append($(document.createTextNode(' - ')));\t\n\t\t\t}\n\t\t}\n\n\n\t\t// to close all, call\n\t\t// $(\".accordion > div\").hide()\n\n\t\t// to open the, for example, tool menu, call:\n\t\t// $(\"#menu_tools\").next().show()\n\t}\n\n\tinitAppearance(){\n\n\t\tconst sldPointBudget = this.dom.find('#sldPointBudget');\n\n\t\tsldPointBudget.slider({\n\t\t\tvalue: this.viewer.getPointBudget(),\n\t\t\tmin: 100 * 1000,\n\t\t\tmax: 10 * 1000 * 1000,\n\t\t\tstep: 1000,\n\t\t\tslide: (event, ui) => { this.viewer.setPointBudget(ui.value); }\n\t\t});\n\n\t\tthis.dom.find('#sldFOV').slider({\n\t\t\tvalue: this.viewer.getFOV(),\n\t\t\tmin: 20,\n\t\t\tmax: 100,\n\t\t\tstep: 1,\n\t\t\tslide: (event, ui) => { this.viewer.setFOV(ui.value); }\n\t\t});\n\n\t\t$('#sldEDLRadius').slider({\n\t\t\tvalue: this.viewer.getEDLRadius(),\n\t\t\tmin: 1,\n\t\t\tmax: 4,\n\t\t\tstep: 0.01,\n\t\t\tslide: (event, ui) => { this.viewer.setEDLRadius(ui.value); }\n\t\t});\n\n\t\t$('#sldEDLStrength').slider({\n\t\t\tvalue: this.viewer.getEDLStrength(),\n\t\t\tmin: 0,\n\t\t\tmax: 5,\n\t\t\tstep: 0.01,\n\t\t\tslide: (event, ui) => { this.viewer.setEDLStrength(ui.value); }\n\t\t});\n\n\t\t$('#sldEDLOpacity').slider({\n\t\t\tvalue: this.viewer.getEDLOpacity(),\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t\tstep: 0.01,\n\t\t\tslide: (event, ui) => { this.viewer.setEDLOpacity(ui.value); }\n\t\t});\n\n\t\tthis.viewer.addEventListener('point_budget_changed', (event) => {\n\t\t\t$('#lblPointBudget')[0].innerHTML = Utils.addCommas(this.viewer.getPointBudget());\n\t\t\tsldPointBudget.slider({value: this.viewer.getPointBudget()});\n\t\t});\n\n\t\tthis.viewer.addEventListener('fov_changed', (event) => {\n\t\t\t$('#lblFOV')[0].innerHTML = parseInt(this.viewer.getFOV());\n\t\t\t$('#sldFOV').slider({value: this.viewer.getFOV()});\n\t\t});\n\n\t\tthis.viewer.addEventListener('use_edl_changed', (event) => {\n\t\t\t$('#chkEDLEnabled')[0].checked = this.viewer.getEDLEnabled();\n\t\t});\n\n\t\tthis.viewer.addEventListener('edl_radius_changed', (event) => {\n\t\t\t$('#lblEDLRadius')[0].innerHTML = this.viewer.getEDLRadius().toFixed(1);\n\t\t\t$('#sldEDLRadius').slider({value: this.viewer.getEDLRadius()});\n\t\t});\n\n\t\tthis.viewer.addEventListener('edl_strength_changed', (event) => {\n\t\t\t$('#lblEDLStrength')[0].innerHTML = this.viewer.getEDLStrength().toFixed(1);\n\t\t\t$('#sldEDLStrength').slider({value: this.viewer.getEDLStrength()});\n\t\t});\n\n\t\tthis.viewer.addEventListener('background_changed', (event) => {\n\t\t\t$(\"input[name=background][value='\" + this.viewer.getBackground() + \"']\").prop('checked', true);\n\t\t});\n\n\t\t$('#lblPointBudget')[0].innerHTML = Utils.addCommas(this.viewer.getPointBudget());\n\t\t$('#lblFOV')[0].innerHTML = parseInt(this.viewer.getFOV());\n\t\t$('#lblEDLRadius')[0].innerHTML = this.viewer.getEDLRadius().toFixed(1);\n\t\t$('#lblEDLStrength')[0].innerHTML = this.viewer.getEDLStrength().toFixed(1);\n\t\t$('#chkEDLEnabled')[0].checked = this.viewer.getEDLEnabled();\n\t\t\n\t\t{\n\t\t\tlet elBackground = $(`#background_options`);\n\t\t\telBackground.selectgroup();\n\n\t\t\telBackground.find(\"input\").click( (e) => {\n\t\t\t\tthis.viewer.setBackground(e.target.value);\n\t\t\t});\n\n\t\t\tlet currentBackground = this.viewer.getBackground();\n\t\t\t$(`input[name=background_options][value=${currentBackground}]`).trigger(\"click\");\n\t\t}\n\n\t\t$('#chkEDLEnabled').click( () => {\n\t\t\tthis.viewer.setEDLEnabled($('#chkEDLEnabled').prop(\"checked\"));\n\t\t});\n\t}\n\n\tinitNavigation(){\n\t\tlet elNavigation = $('#navigation');\n\t\tlet sldMoveSpeed = $('#sldMoveSpeed');\n\t\tlet lblMoveSpeed = $('#lblMoveSpeed');\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/earth_controls_1.png',\n\t\t\t'[title]tt.earth_control',\n\t\t\t() => { this.viewer.setControls(this.viewer.earthControls); }\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/fps_controls.svg',\n\t\t\t'[title]tt.flight_control',\n\t\t\t() => {\n\t\t\t\tthis.viewer.setControls(this.viewer.fpControls);\n\t\t\t\tthis.viewer.fpControls.lockElevation = false;\n\t\t\t}\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/helicopter_controls.svg',\n\t\t\t'[title]tt.heli_control',\n\t\t\t() => { \n\t\t\t\tthis.viewer.setControls(this.viewer.fpControls);\n\t\t\t\tthis.viewer.fpControls.lockElevation = true;\n\t\t\t}\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/orbit_controls.svg',\n\t\t\t'[title]tt.orbit_control',\n\t\t\t() => { this.viewer.setControls(this.viewer.orbitControls); }\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/focus.svg',\n\t\t\t'[title]tt.focus_control',\n\t\t\t() => { this.viewer.fitToScreen(); }\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + \"/icons/navigation_cube.svg\",\n\t\t\t\"[title]tt.navigation_cube_control\",\n\t\t\t() => {this.viewer.toggleNavigationCube()}\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + \"/images/compas.svg\",\n\t\t\t\"[title]tt.compass\",\n\t\t\t() => {\n\t\t\t\tconst visible = !this.viewer.compass.isVisible();\n\t\t\t\tthis.viewer.compass.setVisible(visible);\n\t\t\t}\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + \"/icons/camera_animation.svg\",\n\t\t\t\"[title]tt.camera_animation\",\n\t\t\t() => {\n\t\t\t\tconst animation = CameraAnimation.defaultFromView(this.viewer);\n\n\t\t\t\tviewer.scene.addCameraAnimation(animation);\n\t\t\t}\n\t\t));\n\n\n\t\telNavigation.append(\"
        \");\n\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + \"/icons/left.svg\",\n\t\t\t\"[title]tt.left_view_control\",\n\t\t\t() => {this.viewer.setLeftView()}\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + \"/icons/right.svg\",\n\t\t\t\"[title]tt.right_view_control\",\n\t\t\t() => {this.viewer.setRightView()}\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + \"/icons/front.svg\",\n\t\t\t\"[title]tt.front_view_control\",\n\t\t\t() => {this.viewer.setFrontView()}\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + \"/icons/back.svg\",\n\t\t\t\"[title]tt.back_view_control\",\n\t\t\t() => {this.viewer.setBackView()}\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + \"/icons/top.svg\",\n\t\t\t\"[title]tt.top_view_control\",\n\t\t\t() => {this.viewer.setTopView()}\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + \"/icons/bottom.svg\",\n\t\t\t\"[title]tt.bottom_view_control\",\n\t\t\t() => {this.viewer.setBottomView()}\n\t\t));\n\n\n\n\n\n\t\tlet elCameraProjection = $(`\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t`);\n\t\telNavigation.append(elCameraProjection);\n\t\telCameraProjection.selectgroup({title: \"Camera Projection\"});\n\t\telCameraProjection.find(\"input\").click( (e) => {\n\t\t\tthis.viewer.setCameraMode(CameraMode[e.target.value]);\n\t\t});\n\t\tlet cameraMode = Object.keys(CameraMode)\n\t\t\t.filter(key => CameraMode[key] === this.viewer.scene.cameraMode);\n\t\telCameraProjection.find(`input[value=${cameraMode}]`).trigger(\"click\");\n\n\t\tlet speedRange = new THREE.Vector2(1, 10 * 1000);\n\n\t\tlet toLinearSpeed = (value) => {\n\t\t\treturn Math.pow(value, 4) * speedRange.y + speedRange.x;\n\t\t};\n\n\t\tlet toExpSpeed = (value) => {\n\t\t\treturn Math.pow((value - speedRange.x) / speedRange.y, 1 / 4);\n\t\t};\n\n\t\tsldMoveSpeed.slider({\n\t\t\tvalue: toExpSpeed(this.viewer.getMoveSpeed()),\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t\tstep: 0.01,\n\t\t\tslide: (event, ui) => { this.viewer.setMoveSpeed(toLinearSpeed(ui.value)); }\n\t\t});\n\n\t\tthis.viewer.addEventListener('move_speed_changed', (event) => {\n\t\t\tlblMoveSpeed.html(this.viewer.getMoveSpeed().toFixed(1));\n\t\t\tsldMoveSpeed.slider({value: toExpSpeed(this.viewer.getMoveSpeed())});\n\t\t});\n\n\t\tlblMoveSpeed.html(this.viewer.getMoveSpeed().toFixed(1));\n\t}\n\n\n\tinitSettings(){\n\n\t\t{\n\t\t\t$('#sldMinNodeSize').slider({\n\t\t\t\tvalue: this.viewer.getMinNodeSize(),\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 1000,\n\t\t\t\tstep: 0.01,\n\t\t\t\tslide: (event, ui) => { this.viewer.setMinNodeSize(ui.value); }\n\t\t\t});\n\n\t\t\tthis.viewer.addEventListener('minnodesize_changed', (event) => {\n\t\t\t\t$('#lblMinNodeSize').html(parseInt(this.viewer.getMinNodeSize()));\n\t\t\t\t$('#sldMinNodeSize').slider({value: this.viewer.getMinNodeSize()});\n\t\t\t});\n\t\t\t$('#lblMinNodeSize').html(parseInt(this.viewer.getMinNodeSize()));\n\t\t}\n\n\t\t{\n\t\t\tlet elSplatQuality = $(\"#splat_quality_options\");\n\t\t\telSplatQuality.selectgroup({title: \"Splat Quality\"});\n\n\t\t\telSplatQuality.find(\"input\").click( (e) => {\n\t\t\t\tif(e.target.value === \"standard\"){\n\t\t\t\t\tthis.viewer.useHQ = false;\n\t\t\t\t}else if(e.target.value === \"hq\"){\n\t\t\t\t\tthis.viewer.useHQ = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlet currentQuality = this.viewer.useHQ ? \"hq\" : \"standard\";\n\t\t\telSplatQuality.find(`input[value=${currentQuality}]`).trigger(\"click\");\n\t\t}\n\n\t\t$('#show_bounding_box').click(() => {\n\t\t\tthis.viewer.setShowBoundingBox($('#show_bounding_box').prop(\"checked\"));\n\t\t});\n\n\t\t$('#set_freeze').click(() => {\n\t\t\tthis.viewer.setFreeze($('#set_freeze').prop(\"checked\"));\n\t\t});\n\t}\n\n}\n","\nimport {Annotation} from \"../Annotation.js\";\nimport {Utils} from \"../utils.js\";\nimport {CameraMode} from \"../defines.js\";\nimport {EventDispatcher} from \"../EventDispatcher.js\";\n\nexport class AnnotationTool extends EventDispatcher{\n\tconstructor (viewer) {\n\t\tsuper();\n\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\n\t\tthis.sg = new THREE.SphereGeometry(0.1);\n\t\tthis.sm = new THREE.MeshNormalMaterial();\n\t\tthis.s = new THREE.Mesh(this.sg, this.sm);\n\t}\n\n\tstartInsertion (args = {}) {\n\t\tlet domElement = this.viewer.renderer.domElement;\n\n\t\tlet annotation = new Annotation({\n\t\t\tposition: [589748.270, 231444.540, 753.675],\n\t\t\ttitle: \"Annotation Title\",\n\t\t\tdescription: `Annotation Description`\n\t\t});\n\t\tthis.dispatchEvent({type: 'start_inserting_annotation', annotation: annotation});\n\n\t\tconst annotations = this.viewer.scene.annotations;\n\t\tannotations.add(annotation);\n\n\t\tlet callbacks = {\n\t\t\tcancel: null,\n\t\t\tfinish: null,\n\t\t};\n\n\t\tlet insertionCallback = (e) => {\n\t\t\tif (e.button === THREE.MOUSE.LEFT) {\n\t\t\t\tcallbacks.finish();\n\t\t\t} else if (e.button === THREE.MOUSE.RIGHT) {\n\t\t\t\tcallbacks.cancel();\n\t\t\t}\n\t\t};\n\n\t\tcallbacks.cancel = e => {\n\t\t\tannotations.remove(annotation);\n\n\t\t\tdomElement.removeEventListener('mouseup', insertionCallback, true);\n\t\t};\n\n\t\tcallbacks.finish = e => {\n\t\t\tdomElement.removeEventListener('mouseup', insertionCallback, true);\n\t\t};\n\n\t\tdomElement.addEventListener('mouseup', insertionCallback, true);\n\n\t\tlet drag = (e) => {\n\t\t\tlet I = Utils.getMousePointCloudIntersection(\n\t\t\t\te.drag.end, \n\t\t\t\te.viewer.scene.getActiveCamera(), \n\t\t\t\te.viewer, \n\t\t\t\te.viewer.scene.pointclouds,\n\t\t\t\t{pickClipped: true});\n\n\t\t\tif (I) {\n\t\t\t\tthis.s.position.copy(I.location);\n\n\t\t\t\tannotation.position.copy(I.location);\n\t\t\t}\n\t\t};\n\n\t\tlet drop = (e) => {\n\t\t\tviewer.scene.scene.remove(this.s);\n\t\t\tthis.s.removeEventListener(\"drag\", drag);\n\t\t\tthis.s.removeEventListener(\"drop\", drop);\n\t\t};\n\n\t\tthis.s.addEventListener('drag', drag);\n\t\tthis.s.addEventListener('drop', drop);\n\n\t\tthis.viewer.scene.scene.add(this.s);\n\t\tthis.viewer.inputHandler.startDragging(this.s);\n\n\t\treturn annotation;\n\t}\n\t\n\tupdate(){\n\t\t// let camera = this.viewer.scene.getActiveCamera();\n\t\t// let domElement = this.renderer.domElement;\n\t\t// let measurements = this.viewer.scene.measurements;\n\n\t\t// const renderAreaSize = this.renderer.getSize(new THREE.Vector2());\n\t\t// let clientWidth = renderAreaSize.width;\n\t\t// let clientHeight = renderAreaSize.height;\n\n\t}\n\n\trender(){\n\t\t//this.viewer.renderer.render(this.scene, this.viewer.scene.getActiveCamera());\n\t}\n};\n","/**\n * @author mschuetz / http://mschuetz.at\n *\n *\n */\n\n\nimport {KeyCodes} from \"../KeyCodes.js\";\nimport {Utils} from \"../utils.js\";\nimport {EventDispatcher} from \"../EventDispatcher.js\";\n\nexport class InputHandler extends EventDispatcher {\n\tconstructor (viewer) {\n\t\tsuper();\n\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\t\tthis.domElement = this.renderer.domElement;\n\t\tthis.enabled = true;\n\t\t\n\t\tthis.scene = null;\n\t\tthis.interactiveScenes = [];\n\t\tthis.interactiveObjects = new Set();\n\t\tthis.inputListeners = [];\n\t\tthis.blacklist = new Set();\n\n\t\tthis.drag = null;\n\t\tthis.mouse = new THREE.Vector2(0, 0);\n\n\t\tthis.selection = [];\n\n\t\tthis.hoveredElements = [];\n\t\tthis.pressedKeys = {};\n\n\t\tthis.wheelDelta = 0;\n\n\t\tthis.speed = 1;\n\n\t\tthis.logMessages = false;\n\n\t\tif (this.domElement.tabIndex === -1) {\n\t\t\tthis.domElement.tabIndex = 2222;\n\t\t}\n\n\t\tthis.domElement.addEventListener('contextmenu', (event) => { event.preventDefault(); }, false);\n\t\tthis.domElement.addEventListener('click', this.onMouseClick.bind(this), false);\n\t\tthis.domElement.addEventListener('mousedown', this.onMouseDown.bind(this), false);\n\t\tthis.domElement.addEventListener('mouseup', this.onMouseUp.bind(this), false);\n\t\tthis.domElement.addEventListener('mousemove', this.onMouseMove.bind(this), false);\n\t\tthis.domElement.addEventListener('mousewheel', this.onMouseWheel.bind(this), false);\n\t\tthis.domElement.addEventListener('DOMMouseScroll', this.onMouseWheel.bind(this), false); // Firefox\n\t\tthis.domElement.addEventListener('dblclick', this.onDoubleClick.bind(this));\n\t\tthis.domElement.addEventListener('keydown', this.onKeyDown.bind(this));\n\t\tthis.domElement.addEventListener('keyup', this.onKeyUp.bind(this));\n\t\tthis.domElement.addEventListener('touchstart', this.onTouchStart.bind(this));\n\t\tthis.domElement.addEventListener('touchend', this.onTouchEnd.bind(this));\n\t\tthis.domElement.addEventListener('touchmove', this.onTouchMove.bind(this));\n\t}\n\n\taddInputListener (listener) {\n\t\tthis.inputListeners.push(listener);\n\t}\n\n\tremoveInputListener (listener) {\n\t\tthis.inputListeners = this.inputListeners.filter(e => e !== listener);\n\t}\n\n\tgetSortedListeners(){\n\t\treturn this.inputListeners.sort( (a, b) => {\n\t\t\tlet ia = (a.importance !== undefined) ? a.importance : 0;\n\t\t\tlet ib = (b.importance !== undefined) ? b.importance : 0;\n\n\t\t\treturn ib - ia;\n\t\t});\n\t}\n\n\tonTouchStart (e) {\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onTouchStart');\n\n\t\te.preventDefault();\n\n\t\tif (e.touches.length === 1) {\n\t\t\tlet rect = this.domElement.getBoundingClientRect();\n\t\t\tlet x = e.touches[0].pageX - rect.left;\n\t\t\tlet y = e.touches[0].pageY - rect.top;\n\t\t\tthis.mouse.set(x, y);\n\n\t\t\tthis.startDragging(null);\n\t\t}\n\n\t\t\n\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\tinputListener.dispatchEvent({\n\t\t\t\ttype: e.type,\n\t\t\t\ttouches: e.touches,\n\t\t\t\tchangedTouches: e.changedTouches\n\t\t\t});\n\t\t}\n\t}\n\n\tonTouchEnd (e) {\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onTouchEnd');\n\n\t\te.preventDefault();\n\n\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\tinputListener.dispatchEvent({\n\t\t\t\ttype: 'drop',\n\t\t\t\tdrag: this.drag,\n\t\t\t\tviewer: this.viewer\n\t\t\t});\n\t\t}\n\n\t\tthis.drag = null;\n\n\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\tinputListener.dispatchEvent({\n\t\t\t\ttype: e.type,\n\t\t\t\ttouches: e.touches,\n\t\t\t\tchangedTouches: e.changedTouches\n\t\t\t});\n\t\t}\n\t}\n\n\tonTouchMove (e) {\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onTouchMove');\n\n\t\te.preventDefault();\n\n\t\tif (e.touches.length === 1) {\n\t\t\tlet rect = this.domElement.getBoundingClientRect();\n\t\t\tlet x = e.touches[0].pageX - rect.left;\n\t\t\tlet y = e.touches[0].pageY - rect.top;\n\t\t\tthis.mouse.set(x, y);\n\n\t\t\tif (this.drag) {\n\t\t\t\tthis.drag.mouse = 1;\n\n\t\t\t\tthis.drag.lastDrag.x = x - this.drag.end.x;\n\t\t\t\tthis.drag.lastDrag.y = y - this.drag.end.y;\n\n\t\t\t\tthis.drag.end.set(x, y);\n\n\t\t\t\tif (this.logMessages) console.log(this.constructor.name + ': drag: ');\n\t\t\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\t\t\tinputListener.dispatchEvent({\n\t\t\t\t\t\ttype: 'drag',\n\t\t\t\t\t\tdrag: this.drag,\n\t\t\t\t\t\tviewer: this.viewer\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\tinputListener.dispatchEvent({\n\t\t\t\ttype: e.type,\n\t\t\t\ttouches: e.touches,\n\t\t\t\tchangedTouches: e.changedTouches\n\t\t\t});\n\t\t}\n\n\t\t// DEBUG CODE\n\t\t// let debugTouches = [...e.touches, {\n\t\t//\tpageX: this.domElement.clientWidth / 2,\n\t\t//\tpageY: this.domElement.clientHeight / 2}];\n\t\t// for(let inputListener of this.getSortedListeners()){\n\t\t//\tinputListener.dispatchEvent({\n\t\t//\t\ttype: e.type,\n\t\t//\t\ttouches: debugTouches,\n\t\t//\t\tchangedTouches: e.changedTouches\n\t\t//\t});\n\t\t// }\n\t}\n\n\tonKeyDown (e) {\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onKeyDown');\n\n\t\t// DELETE\n\t\tif (e.keyCode === KeyCodes.DELETE && this.selection.length > 0) {\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'delete',\n\t\t\t\tselection: this.selection\n\t\t\t});\n\n\t\t\tthis.deselectAll();\n\t\t}\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'keydown',\n\t\t\tkeyCode: e.keyCode,\n\t\t\tevent: e\n\t\t});\n\n\t\t// for(let l of this.getSortedListeners()){\n\t\t//\tl.dispatchEvent({\n\t\t//\t\ttype: \"keydown\",\n\t\t//\t\tkeyCode: e.keyCode,\n\t\t//\t\tevent: e\n\t\t//\t});\n\t\t// }\n\n\t\tthis.pressedKeys[e.keyCode] = true;\n\n\t\t// e.preventDefault();\n\t}\n\n\tonKeyUp (e) {\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onKeyUp');\n\n\t\tdelete this.pressedKeys[e.keyCode];\n\n\t\te.preventDefault();\n\t}\n\n\tonDoubleClick (e) {\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onDoubleClick');\n\n\t\tlet consumed = false;\n\t\tfor (let hovered of this.hoveredElements) {\n\t\t\tif (hovered._listeners && hovered._listeners['dblclick']) {\n\t\t\t\thovered.object.dispatchEvent({\n\t\t\t\t\ttype: 'dblclick',\n\t\t\t\t\tmouse: this.mouse,\n\t\t\t\t\tobject: hovered.object\n\t\t\t\t});\n\t\t\t\tconsumed = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (!consumed) {\n\t\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\t\tinputListener.dispatchEvent({\n\t\t\t\t\ttype: 'dblclick',\n\t\t\t\t\tmouse: this.mouse,\n\t\t\t\t\tobject: null\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\te.preventDefault();\n\t}\n\n\tonMouseClick (e) {\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onMouseClick');\n\n\t\te.preventDefault();\n\t}\n\n\tonMouseDown (e) {\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onMouseDown');\n\n\t\te.preventDefault();\n\n\t\tlet consumed = false;\n\t\tlet consume = () => { return consumed = true; };\n\t\tif (this.hoveredElements.length === 0) {\n\t\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\t\tinputListener.dispatchEvent({\n\t\t\t\t\ttype: 'mousedown',\n\t\t\t\t\tviewer: this.viewer,\n\t\t\t\t\tmouse: this.mouse\n\t\t\t\t});\n\t\t\t}\n\t\t}else{\n\t\t\tfor(let hovered of this.hoveredElements){\n\t\t\t\tlet object = hovered.object;\n\t\t\t\tobject.dispatchEvent({\n\t\t\t\t\ttype: 'mousedown',\n\t\t\t\t\tviewer: this.viewer,\n\t\t\t\t\tconsume: consume\n\t\t\t\t});\n\n\t\t\t\tif(consumed){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!this.drag) {\n\t\t\tlet target = this.hoveredElements\n\t\t\t\t.find(el => (\n\t\t\t\t\tel.object._listeners &&\n\t\t\t\t\tel.object._listeners['drag'] &&\n\t\t\t\t\tel.object._listeners['drag'].length > 0));\n\n\t\t\tif (target) {\n\t\t\t\tthis.startDragging(target.object, {location: target.point});\n\t\t\t} else {\n\t\t\t\tthis.startDragging(null);\n\t\t\t}\n\t\t}\n\n\t\tif (this.scene) {\n\t\t\tthis.viewStart = this.scene.view.clone();\n\t\t}\n\t}\n\n\tonMouseUp (e) {\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onMouseUp');\n\n\t\te.preventDefault();\n\n\t\tlet noMovement = this.getNormalizedDrag().length() === 0;\n\n\t\t\n\t\tlet consumed = false;\n\t\tlet consume = () => { return consumed = true; };\n\t\tif (this.hoveredElements.length === 0) {\n\t\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\t\tinputListener.dispatchEvent({\n\t\t\t\t\ttype: 'mouseup',\n\t\t\t\t\tviewer: this.viewer,\n\t\t\t\t\tmouse: this.mouse,\n\t\t\t\t\tconsume: consume\n\t\t\t\t});\n\n\t\t\t\tif(consumed){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tlet hovered = this.hoveredElements\n\t\t\t\t.map(e => e.object)\n\t\t\t\t.find(e => (e._listeners && e._listeners['mouseup']));\n\t\t\tif(hovered){\n\t\t\t\thovered.dispatchEvent({\n\t\t\t\t\ttype: 'mouseup',\n\t\t\t\t\tviewer: this.viewer,\n\t\t\t\t\tconsume: consume\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (this.drag) {\n\t\t\tif (this.drag.object) {\n\t\t\t\tif (this.logMessages) console.log(`${this.constructor.name}: drop ${this.drag.object.name}`);\n\t\t\t\tthis.drag.object.dispatchEvent({\n\t\t\t\t\ttype: 'drop',\n\t\t\t\t\tdrag: this.drag,\n\t\t\t\t\tviewer: this.viewer\n\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\t\t\tinputListener.dispatchEvent({\n\t\t\t\t\t\ttype: 'drop',\n\t\t\t\t\t\tdrag: this.drag,\n\t\t\t\t\t\tviewer: this.viewer\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// check for a click\n\t\t\tlet clicked = this.hoveredElements.map(h => h.object).find(v => v === this.drag.object) !== undefined;\n\t\t\tif(clicked){\n\t\t\t\tif (this.logMessages) console.log(`${this.constructor.name}: click ${this.drag.object.name}`);\n\t\t\t\tthis.drag.object.dispatchEvent({\n\t\t\t\t\ttype: 'click',\n\t\t\t\t\tviewer: this.viewer,\n\t\t\t\t\tconsume: consume,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.drag = null;\n\t\t}\n\n\t\tif(!consumed){\n\t\t\tif (e.button === THREE.MOUSE.LEFT) {\n\t\t\t\tif (noMovement) {\n\t\t\t\t\tlet selectable = this.hoveredElements\n\t\t\t\t\t\t.find(el => el.object._listeners && el.object._listeners['select']);\n\n\t\t\t\t\tif (selectable) {\n\t\t\t\t\t\tselectable = selectable.object;\n\n\t\t\t\t\t\tif (this.isSelected(selectable)) {\n\t\t\t\t\t\t\tthis.selection\n\t\t\t\t\t\t\t\t.filter(e => e !== selectable)\n\t\t\t\t\t\t\t\t.forEach(e => this.toggleSelection(e));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.deselectAll();\n\t\t\t\t\t\t\tthis.toggleSelection(selectable);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.deselectAll();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if ((e.button === THREE.MOUSE.RIGHT) && noMovement) {\n\t\t\t\tthis.deselectAll();\n\t\t\t}\n\t\t}\n\t}\n\n\tonMouseMove (e) {\n\t\te.preventDefault();\n\n\t\tlet rect = this.domElement.getBoundingClientRect();\n\t\tlet x = e.clientX - rect.left;\n\t\tlet y = e.clientY - rect.top;\n\t\tthis.mouse.set(x, y);\n\n\t\tlet hoveredElements = this.getHoveredElements();\n\t\tif(hoveredElements.length > 0){\n\t\t\tlet names = hoveredElements.map(h => h.object.name).join(\", \");\n\t\t\tif (this.logMessages) console.log(`${this.constructor.name}: onMouseMove; hovered: '${names}'`);\n\t\t}\n\n\t\tif (this.drag) {\n\t\t\tthis.drag.mouse = e.buttons;\n\n\t\t\tthis.drag.lastDrag.x = x - this.drag.end.x;\n\t\t\tthis.drag.lastDrag.y = y - this.drag.end.y;\n\n\t\t\tthis.drag.end.set(x, y);\n\n\t\t\tif (this.drag.object) {\n\t\t\t\tif (this.logMessages) console.log(this.constructor.name + ': drag: ' + this.drag.object.name);\n\t\t\t\tthis.drag.object.dispatchEvent({\n\t\t\t\t\ttype: 'drag',\n\t\t\t\t\tdrag: this.drag,\n\t\t\t\t\tviewer: this.viewer\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (this.logMessages) console.log(this.constructor.name + ': drag: ');\n\n\t\t\t\tlet dragConsumed = false;\n\t\t\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\t\t\tinputListener.dispatchEvent({\n\t\t\t\t\t\ttype: 'drag',\n\t\t\t\t\t\tdrag: this.drag,\n\t\t\t\t\t\tviewer: this.viewer,\n\t\t\t\t\t\tconsume: () => {dragConsumed = true;}\n\t\t\t\t\t});\n\n\t\t\t\t\tif(dragConsumed){\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tlet curr = hoveredElements.map(a => a.object).find(a => true);\n\t\t\tlet prev = this.hoveredElements.map(a => a.object).find(a => true);\n\n\t\t\tif(curr !== prev){\n\t\t\t\tif(curr){\n\t\t\t\t\tif (this.logMessages) console.log(`${this.constructor.name}: mouseover: ${curr.name}`);\n\t\t\t\t\tcurr.dispatchEvent({\n\t\t\t\t\t\ttype: 'mouseover',\n\t\t\t\t\t\tobject: curr,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(prev){\n\t\t\t\t\tif (this.logMessages) console.log(`${this.constructor.name}: mouseleave: ${prev.name}`);\n\t\t\t\t\tprev.dispatchEvent({\n\t\t\t\t\t\ttype: 'mouseleave',\n\t\t\t\t\t\tobject: prev,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(hoveredElements.length > 0){\n\t\t\t\tlet object = hoveredElements\n\t\t\t\t\t.map(e => e.object)\n\t\t\t\t\t.find(e => (e._listeners && e._listeners['mousemove']));\n\t\t\t\t\n\t\t\t\tif(object){\n\t\t\t\t\tobject.dispatchEvent({\n\t\t\t\t\t\ttype: 'mousemove',\n\t\t\t\t\t\tobject: object\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t\t\n\t\t// for (let inputListener of this.getSortedListeners()) {\n\t\t// \tinputListener.dispatchEvent({\n\t\t// \t\ttype: 'mousemove',\n\t\t// \t\tobject: null\n\t\t// \t});\n\t\t// }\n\t\t\n\n\t\tthis.hoveredElements = hoveredElements;\n\t}\n\t\n\tonMouseWheel(e){\n\t\tif(!this.enabled) return;\n\n\t\tif(this.logMessages) console.log(this.constructor.name + \": onMouseWheel\");\n\t\t\n\t\te.preventDefault();\n\n\t\tlet delta = 0;\n\t\tif (e.wheelDelta !== undefined) { // WebKit / Opera / Explorer 9\n\t\t\tdelta = e.wheelDelta;\n\t\t} else if (e.detail !== undefined) { // Firefox\n\t\t\tdelta = -e.detail;\n\t\t}\n\n\t\tlet ndelta = Math.sign(delta);\n\n\t\t// this.wheelDelta += Math.sign(delta);\n\n\t\tif (this.hoveredElement) {\n\t\t\tthis.hoveredElement.object.dispatchEvent({\n\t\t\t\ttype: 'mousewheel',\n\t\t\t\tdelta: ndelta,\n\t\t\t\tobject: this.hoveredElement.object\n\t\t\t});\n\t\t} else {\n\t\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\t\tinputListener.dispatchEvent({\n\t\t\t\t\ttype: 'mousewheel',\n\t\t\t\t\tdelta: ndelta,\n\t\t\t\t\tobject: null\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tstartDragging (object, args = null) {\n\n\t\tlet name = object ? object.name : \"no name\";\n\t\tif (this.logMessages) console.log(`${this.constructor.name}: startDragging: '${name}'`);\n\n\t\tthis.drag = {\n\t\t\tstart: this.mouse.clone(),\n\t\t\tend: this.mouse.clone(),\n\t\t\tlastDrag: new THREE.Vector2(0, 0),\n\t\t\tstartView: this.scene.view.clone(),\n\t\t\tobject: object\n\t\t};\n\n\t\tif (args) {\n\t\t\tfor (let key of Object.keys(args)) {\n\t\t\t\tthis.drag[key] = args[key];\n\t\t\t}\n\t\t}\n\t}\n\n\tgetMousePointCloudIntersection (mouse) {\n\t\treturn Utils.getMousePointCloudIntersection(\n\t\t\tthis.mouse, \n\t\t\tthis.scene.getActiveCamera(), \n\t\t\tthis.viewer, \n\t\t\tthis.scene.pointclouds);\n\t}\n\n\ttoggleSelection (object) {\n\t\tlet oldSelection = this.selection;\n\n\t\tlet index = this.selection.indexOf(object);\n\n\t\tif (index === -1) {\n\t\t\tthis.selection.push(object);\n\t\t\tobject.dispatchEvent({\n\t\t\t\ttype: 'select'\n\t\t\t});\n\t\t} else {\n\t\t\tthis.selection.splice(index, 1);\n\t\t\tobject.dispatchEvent({\n\t\t\t\ttype: 'deselect'\n\t\t\t});\n\t\t}\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'selection_changed',\n\t\t\toldSelection: oldSelection,\n\t\t\tselection: this.selection\n\t\t});\n\t}\n\n\tdeselect(object){\n\n\t\tlet oldSelection = this.selection;\n\n\t\tlet index = this.selection.indexOf(object);\n\n\t\tif(index >= 0){\n\t\t\tthis.selection.splice(index, 1);\n\t\t\tobject.dispatchEvent({\n\t\t\t\ttype: 'deselect'\n\t\t\t});\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'selection_changed',\n\t\t\t\toldSelection: oldSelection,\n\t\t\t\tselection: this.selection\n\t\t\t});\n\t\t}\n\t}\n\n\tdeselectAll () {\n\t\tfor (let object of this.selection) {\n\t\t\tobject.dispatchEvent({\n\t\t\t\ttype: 'deselect'\n\t\t\t});\n\t\t}\n\n\t\tlet oldSelection = this.selection;\n\n\t\tif (this.selection.length > 0) {\n\t\t\tthis.selection = [];\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'selection_changed',\n\t\t\t\toldSelection: oldSelection,\n\t\t\t\tselection: this.selection\n\t\t\t});\n\t\t}\n\t}\n\n\tisSelected (object) {\n\t\tlet index = this.selection.indexOf(object);\n\n\t\treturn index !== -1;\n\t}\n\n\tregisterInteractiveObject(object){\n\t\tthis.interactiveObjects.add(object);\n\t}\n\n\tremoveInteractiveObject(object){\n\t\tthis.interactiveObjects.delete(object);\n\t}\n\n\tregisterInteractiveScene (scene) {\n\t\tlet index = this.interactiveScenes.indexOf(scene);\n\t\tif (index === -1) {\n\t\t\tthis.interactiveScenes.push(scene);\n\t\t}\n\t}\n\n\tunregisterInteractiveScene (scene) {\n\t\tlet index = this.interactiveScenes.indexOf(scene);\n\t\tif (index > -1) {\n\t\t\tthis.interactiveScenes.splice(index, 1);\n\t\t}\n\t}\n\n\tgetHoveredElement () {\n\t\tlet hoveredElements = this.getHoveredElements();\n\t\tif (hoveredElements.length > 0) {\n\t\t\treturn hoveredElements[0];\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tgetHoveredElements () {\n\t\tlet scenes = this.interactiveScenes.concat(this.scene.scene);\n\n\t\tlet interactableListeners = ['mouseup', 'mousemove', 'mouseover', 'mouseleave', 'drag', 'drop', 'click', 'select', 'deselect'];\n\t\tlet interactables = [];\n\t\tfor (let scene of scenes) {\n\t\t\tscene.traverseVisible(node => {\n\t\t\t\tif (node._listeners && node.visible && !this.blacklist.has(node)) {\n\t\t\t\t\tlet hasInteractableListener = interactableListeners.filter((e) => {\n\t\t\t\t\t\treturn node._listeners[e] !== undefined;\n\t\t\t\t\t}).length > 0;\n\n\t\t\t\t\tif (hasInteractableListener) {\n\t\t\t\t\t\tinteractables.push(node);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\tlet camera = this.scene.getActiveCamera();\n\t\tlet ray = Utils.mouseToRay(this.mouse, camera, this.domElement.clientWidth, this.domElement.clientHeight);\n\t\t\n\t\tlet raycaster = new THREE.Raycaster();\n\t\traycaster.ray.set(ray.origin, ray.direction);\n\t\traycaster.linePrecision = 0.2;\n\n\t\tlet intersections = raycaster.intersectObjects(interactables.filter(o => o.visible), false);\n\n\t\treturn intersections;\n\n\t\t// if(intersections.length > 0){\n\t\t//\treturn intersections[0];\n\t\t// }else{\n\t\t//\treturn null;\n\t\t// }\n\t}\n\n\tsetScene (scene) {\n\t\tthis.deselectAll();\n\n\t\tthis.scene = scene;\n\t}\n\n\tupdate (delta) {\n\n\t}\n\n\tgetNormalizedDrag () {\n\t\tif (!this.drag) {\n\t\t\treturn new THREE.Vector2(0, 0);\n\t\t}\n\n\t\tlet diff = new THREE.Vector2().subVectors(this.drag.end, this.drag.start);\n\n\t\tdiff.x = diff.x / this.domElement.clientWidth;\n\t\tdiff.y = diff.y / this.domElement.clientHeight;\n\n\t\treturn diff;\n\t}\n\n\tgetNormalizedLastDrag () {\n\t\tif (!this.drag) {\n\t\t\treturn new THREE.Vector2(0, 0);\n\t\t}\n\n\t\tlet lastDrag = this.drag.lastDrag.clone();\n\n\t\tlastDrag.x = lastDrag.x / this.domElement.clientWidth;\n\t\tlastDrag.y = lastDrag.y / this.domElement.clientHeight;\n\n\t\treturn lastDrag;\n\t}\n}\n","\nexport class NavigationCube extends THREE.Object3D {\n\n\tconstructor(viewer){\n\t\tsuper();\n\n\t\tthis.viewer = viewer;\n\n\t\tlet createPlaneMaterial = (img) => {\n\t\t\tlet material = new THREE.MeshBasicMaterial( {\n\t\t\t\tdepthTest: true, \n\t\t\t\tdepthWrite: true,\n\t\t\t\tside: THREE.DoubleSide\n\t\t\t});\n\t\t\tnew THREE.TextureLoader().load(\n\t\t\t\texports.resourcePath + '/textures/navigation/' + img,\n\t\t\t\tfunction(texture) {\n\t\t\t\t\ttexture.anisotropy = viewer.renderer.capabilities.getMaxAnisotropy();\n\t\t\t\t\tmaterial.map = texture;\n\t\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t});\n\t\t\treturn material;\n\t\t};\n\n\t\tlet planeGeometry = new THREE.PlaneGeometry(1, 1);\n\n\t\tthis.front = new THREE.Mesh(planeGeometry, createPlaneMaterial('F.png'));\n\t\tthis.front.position.y = -0.5;\n\t\tthis.front.rotation.x = Math.PI / 2.0;\n\t\tthis.front.updateMatrixWorld();\n\t\tthis.front.name = \"F\";\n\t\tthis.add(this.front);\n\n\t\tthis.back = new THREE.Mesh(planeGeometry, createPlaneMaterial('B.png'));\n\t\tthis.back.position.y = 0.5;\n\t\tthis.back.rotation.x = Math.PI / 2.0;\n\t\tthis.back.updateMatrixWorld();\n\t\tthis.back.name = \"B\";\n\t\tthis.add(this.back);\n\n\t\tthis.left = new THREE.Mesh(planeGeometry, createPlaneMaterial('L.png'));\n\t\tthis.left.position.x = -0.5;\n\t\tthis.left.rotation.y = Math.PI / 2.0;\n\t\tthis.left.updateMatrixWorld();\n\t\tthis.left.name = \"L\";\n\t\tthis.add(this.left);\n\n\t\tthis.right = new THREE.Mesh(planeGeometry, createPlaneMaterial('R.png'));\n\t\tthis.right.position.x = 0.5;\n\t\tthis.right.rotation.y = Math.PI / 2.0;\n\t\tthis.right.updateMatrixWorld();\n\t\tthis.right.name = \"R\";\n\t\tthis.add(this.right);\n\n\t\tthis.bottom = new THREE.Mesh(planeGeometry, createPlaneMaterial('D.png'));\n\t\tthis.bottom.position.z = -0.5;\n\t\tthis.bottom.updateMatrixWorld();\n\t\tthis.bottom.name = \"D\";\n\t\tthis.add(this.bottom);\n\n\t\tthis.top = new THREE.Mesh(planeGeometry, createPlaneMaterial('U.png'));\n\t\tthis.top.position.z = 0.5;\n\t\tthis.top.updateMatrixWorld();\n\t\tthis.top.name = \"U\";\n\t\tthis.add(this.top);\n\n\t\tthis.width = 150; // in px\n\n\t\tthis.camera = new THREE.OrthographicCamera(-1, 1, 1, -1, -1, 1);\n\t\tthis.camera.position.copy(new THREE.Vector3(0, 0, 0));\n\t\tthis.camera.lookAt(new THREE.Vector3(0, 1, 0));\n\t\tthis.camera.updateMatrixWorld();\n\t\tthis.camera.rotation.order = \"ZXY\";\n\n\t\tlet onMouseDown = (event) => {\n\t\t\tif (!this.visible) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tthis.pickedFace = null;\n\t\t\tlet mouse = new THREE.Vector2();\n\t\t\tmouse.x = event.clientX - (window.innerWidth - this.width);\n\t\t\tmouse.y = event.clientY;\n\n\t\t\tif(mouse.x < 0 || mouse.y > this.width) return;\n\n\t\t\tmouse.x = (mouse.x / this.width) * 2 - 1;\n\t\t\tmouse.y = -(mouse.y / this.width) * 2 + 1;\n\n\t\t\tlet raycaster = new THREE.Raycaster();\n\t\t\traycaster.setFromCamera(mouse, this.camera);\n\t\t\traycaster.ray.origin.sub(this.camera.getWorldDirection(new THREE.Vector3()));\n\n\t\t\tlet intersects = raycaster.intersectObjects(this.children);\n\n\t\t\tlet minDistance = 1000;\n\t\t\tfor (let i = 0; i < intersects.length; i++) {\n\t\t\t\tif(intersects[i].distance < minDistance) {\n\t\t\t\t\tthis.pickedFace = intersects[i].object.name;\n\t\t\t\t\tminDistance = intersects[i].distance;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(this.pickedFace) {\n\t\t\t\tthis.viewer.setView(this.pickedFace);\n\t\t\t}\n\t\t};\n\n\t\tthis.viewer.renderer.domElement.addEventListener('mousedown', onMouseDown, false);\n\t}\n\n\tupdate(rotation) {\n\t\tthis.camera.rotation.copy(rotation);\n\t\tthis.camera.updateMatrixWorld();\n\t}\n\n}\n","/**\n * @author mschuetz / http://mschuetz.at\n *\n * adapted from THREE.OrbitControls by\n *\n * @author qiao / https://github.com/qiao\n * @author mrdoob / http://mrdoob.com\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author erich666 / http://erichaines.com\n *\n *\n *\n */\n\n\nimport {MOUSE} from \"../defines.js\";\nimport {Utils} from \"../utils.js\";\nimport {EventDispatcher} from \"../EventDispatcher.js\";\n\n \nexport class OrbitControls extends EventDispatcher{\n\t\n\tconstructor(viewer){\n\t\tsuper();\n\t\t\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\n\t\tthis.scene = null;\n\t\tthis.sceneControls = new THREE.Scene();\n\n\t\tthis.rotationSpeed = 5;\n\n\t\tthis.fadeFactor = 20;\n\t\tthis.yawDelta = 0;\n\t\tthis.pitchDelta = 0;\n\t\tthis.panDelta = new THREE.Vector2(0, 0);\n\t\tthis.radiusDelta = 0;\n\n\t\tthis.doubleClockZoomEnabled = true;\n\n\t\tthis.tweens = [];\n\n\t\tlet drag = (e) => {\n\t\t\tif (e.drag.object !== null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (e.drag.startHandled === undefined) {\n\t\t\t\te.drag.startHandled = true;\n\n\t\t\t\tthis.dispatchEvent({type: 'start'});\n\t\t\t}\n\n\t\t\tlet ndrag = {\n\t\t\t\tx: e.drag.lastDrag.x / this.renderer.domElement.clientWidth,\n\t\t\t\ty: e.drag.lastDrag.y / this.renderer.domElement.clientHeight\n\t\t\t};\n\n\t\t\tif (e.drag.mouse === MOUSE.LEFT) {\n\t\t\t\tthis.yawDelta += ndrag.x * this.rotationSpeed;\n\t\t\t\tthis.pitchDelta += ndrag.y * this.rotationSpeed;\n\n\t\t\t\tthis.stopTweens();\n\t\t\t} else if (e.drag.mouse === MOUSE.RIGHT) {\n\t\t\t\tthis.panDelta.x += ndrag.x;\n\t\t\t\tthis.panDelta.y += ndrag.y;\n\n\t\t\t\tthis.stopTweens();\n\t\t\t}\n\t\t};\n\n\t\tlet drop = e => {\n\t\t\tthis.dispatchEvent({type: 'end'});\n\t\t};\n\n\t\tlet scroll = (e) => {\n\t\t\tlet resolvedRadius = this.scene.view.radius + this.radiusDelta;\n\n\t\t\tthis.radiusDelta += -e.delta * resolvedRadius * 0.1;\n\n\t\t\tthis.stopTweens();\n\t\t};\n\n\t\tlet dblclick = (e) => {\n\t\t\tif(this.doubleClockZoomEnabled){\n\t\t\t\tthis.zoomToLocation(e.mouse);\n\t\t\t}\n\t\t};\n\n\t\tlet previousTouch = null;\n\t\tlet touchStart = e => {\n\t\t\tpreviousTouch = e;\n\t\t};\n\n\t\tlet touchEnd = e => {\n\t\t\tpreviousTouch = e;\n\t\t};\n\n\t\tlet touchMove = e => {\n\t\t\tif (e.touches.length === 2 && previousTouch.touches.length === 2){\n\t\t\t\tlet prev = previousTouch;\n\t\t\t\tlet curr = e;\n\n\t\t\t\tlet prevDX = prev.touches[0].pageX - prev.touches[1].pageX;\n\t\t\t\tlet prevDY = prev.touches[0].pageY - prev.touches[1].pageY;\n\t\t\t\tlet prevDist = Math.sqrt(prevDX * prevDX + prevDY * prevDY);\n\n\t\t\t\tlet currDX = curr.touches[0].pageX - curr.touches[1].pageX;\n\t\t\t\tlet currDY = curr.touches[0].pageY - curr.touches[1].pageY;\n\t\t\t\tlet currDist = Math.sqrt(currDX * currDX + currDY * currDY);\n\n\t\t\t\tlet delta = currDist / prevDist;\n\t\t\t\tlet resolvedRadius = this.scene.view.radius + this.radiusDelta;\n\t\t\t\tlet newRadius = resolvedRadius / delta;\n\t\t\t\tthis.radiusDelta = newRadius - resolvedRadius;\n\n\t\t\t\tthis.stopTweens();\n\t\t\t}else if(e.touches.length === 3 && previousTouch.touches.length === 3){\n\t\t\t\tlet prev = previousTouch;\n\t\t\t\tlet curr = e;\n\n\t\t\t\tlet prevMeanX = (prev.touches[0].pageX + prev.touches[1].pageX + prev.touches[2].pageX) / 3;\n\t\t\t\tlet prevMeanY = (prev.touches[0].pageY + prev.touches[1].pageY + prev.touches[2].pageY) / 3;\n\n\t\t\t\tlet currMeanX = (curr.touches[0].pageX + curr.touches[1].pageX + curr.touches[2].pageX) / 3;\n\t\t\t\tlet currMeanY = (curr.touches[0].pageY + curr.touches[1].pageY + curr.touches[2].pageY) / 3;\n\n\t\t\t\tlet delta = {\n\t\t\t\t\tx: (currMeanX - prevMeanX) / this.renderer.domElement.clientWidth,\n\t\t\t\t\ty: (currMeanY - prevMeanY) / this.renderer.domElement.clientHeight\n\t\t\t\t};\n\n\t\t\t\tthis.panDelta.x += delta.x;\n\t\t\t\tthis.panDelta.y += delta.y;\n\n\t\t\t\tthis.stopTweens();\n\t\t\t}\n\n\t\t\tpreviousTouch = e;\n\t\t};\n\n\t\tthis.addEventListener('touchstart', touchStart);\n\t\tthis.addEventListener('touchend', touchEnd);\n\t\tthis.addEventListener('touchmove', touchMove);\n\t\tthis.addEventListener('drag', drag);\n\t\tthis.addEventListener('drop', drop);\n\t\tthis.addEventListener('mousewheel', scroll);\n\t\tthis.addEventListener('dblclick', dblclick);\n\t}\n\n\tsetScene (scene) {\n\t\tthis.scene = scene;\n\t}\n\n\tstop(){\n\t\tthis.yawDelta = 0;\n\t\tthis.pitchDelta = 0;\n\t\tthis.radiusDelta = 0;\n\t\tthis.panDelta.set(0, 0);\n\t}\n\t\n\tzoomToLocation(mouse){\n\t\tlet camera = this.scene.getActiveCamera();\n\t\t\n\t\tlet I = Utils.getMousePointCloudIntersection(\n\t\t\tmouse,\n\t\t\tcamera,\n\t\t\tthis.viewer,\n\t\t\tthis.scene.pointclouds,\n\t\t\t{pickClipped: true});\n\n\t\tif (I === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet targetRadius = 0;\n\t\t{\n\t\t\tlet minimumJumpDistance = 0.2;\n\n\t\t\tlet domElement = this.renderer.domElement;\n\t\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\n\n\t\t\tlet nodes = I.pointcloud.nodesOnRay(I.pointcloud.visibleNodes, ray);\n\t\t\tlet lastNode = nodes[nodes.length - 1];\n\t\t\tlet radius = lastNode.getBoundingSphere(new THREE.Sphere()).radius;\n\t\t\ttargetRadius = Math.min(this.scene.view.radius, radius);\n\t\t\ttargetRadius = Math.max(minimumJumpDistance, targetRadius);\n\t\t}\n\n\t\tlet d = this.scene.view.direction.multiplyScalar(-1);\n\t\tlet cameraTargetPosition = new THREE.Vector3().addVectors(I.location, d.multiplyScalar(targetRadius));\n\t\t// TODO Unused: let controlsTargetPosition = I.location;\n\n\t\tlet animationDuration = 600;\n\t\tlet easing = TWEEN.Easing.Quartic.Out;\n\n\t\t{ // animate\n\t\t\tlet value = {x: 0};\n\t\t\tlet tween = new TWEEN.Tween(value).to({x: 1}, animationDuration);\n\t\t\ttween.easing(easing);\n\t\t\tthis.tweens.push(tween);\n\n\t\t\tlet startPos = this.scene.view.position.clone();\n\t\t\tlet targetPos = cameraTargetPosition.clone();\n\t\t\tlet startRadius = this.scene.view.radius;\n\t\t\tlet targetRadius = cameraTargetPosition.distanceTo(I.location);\n\n\t\t\ttween.onUpdate(() => {\n\t\t\t\tlet t = value.x;\n\t\t\t\tthis.scene.view.position.x = (1 - t) * startPos.x + t * targetPos.x;\n\t\t\t\tthis.scene.view.position.y = (1 - t) * startPos.y + t * targetPos.y;\n\t\t\t\tthis.scene.view.position.z = (1 - t) * startPos.z + t * targetPos.z;\n\n\t\t\t\tthis.scene.view.radius = (1 - t) * startRadius + t * targetRadius;\n\t\t\t\tthis.viewer.setMoveSpeed(this.scene.view.radius / 2.5);\n\t\t\t});\n\n\t\t\ttween.onComplete(() => {\n\t\t\t\tthis.tweens = this.tweens.filter(e => e !== tween);\n\t\t\t});\n\n\t\t\ttween.start();\n\t\t}\n\t}\n\n\tstopTweens () {\n\t\tthis.tweens.forEach(e => e.stop());\n\t\tthis.tweens = [];\n\t}\n\n\tupdate (delta) {\n\t\tlet view = this.scene.view;\n\n\t\t{ // apply rotation\n\t\t\tlet progression = Math.min(1, this.fadeFactor * delta);\n\n\t\t\tlet yaw = view.yaw;\n\t\t\tlet pitch = view.pitch;\n\t\t\tlet pivot = view.getPivot();\n\n\t\t\tyaw -= progression * this.yawDelta;\n\t\t\tpitch -= progression * this.pitchDelta;\n\n\t\t\tview.yaw = yaw;\n\t\t\tview.pitch = pitch;\n\n\t\t\tlet V = this.scene.view.direction.multiplyScalar(-view.radius);\n\t\t\tlet position = new THREE.Vector3().addVectors(pivot, V);\n\n\t\t\tview.position.copy(position);\n\t\t}\n\n\t\t{ // apply pan\n\t\t\tlet progression = Math.min(1, this.fadeFactor * delta);\n\t\t\tlet panDistance = progression * view.radius * 3;\n\n\t\t\tlet px = -this.panDelta.x * panDistance;\n\t\t\tlet py = this.panDelta.y * panDistance;\n\n\t\t\tview.pan(px, py);\n\t\t}\n\n\t\t{ // apply zoom\n\t\t\tlet progression = Math.min(1, this.fadeFactor * delta);\n\n\t\t\t// let radius = view.radius + progression * this.radiusDelta * view.radius * 0.1;\n\t\t\tlet radius = view.radius + progression * this.radiusDelta;\n\n\t\t\tlet V = view.direction.multiplyScalar(-radius);\n\t\t\tlet position = new THREE.Vector3().addVectors(view.getPivot(), V);\n\t\t\tview.radius = radius;\n\n\t\t\tview.position.copy(position);\n\t\t}\n\n\t\t{\n\t\t\tlet speed = view.radius / 2.5;\n\t\t\tthis.viewer.setMoveSpeed(speed);\n\t\t}\n\n\t\t{ // decelerate over time\n\t\t\tlet progression = Math.min(1, this.fadeFactor * delta);\n\t\t\tlet attenuation = Math.max(0, 1 - this.fadeFactor * delta);\n\n\t\t\tthis.yawDelta *= attenuation;\n\t\t\tthis.pitchDelta *= attenuation;\n\t\t\tthis.panDelta.multiplyScalar(attenuation);\n\t\t\t// this.radiusDelta *= attenuation;\n\t\t\tthis.radiusDelta -= progression * this.radiusDelta;\n\t\t}\n\t}\n};\n","/**\n * @author mschuetz / http://mschuetz.at\n *\n * adapted from THREE.OrbitControls by\n *\n * @author qiao / https://github.com/qiao\n * @author mrdoob / http://mrdoob.com\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author erich666 / http://erichaines.com\n *\n *\n *\n */\n\n\nimport {MOUSE} from \"../defines.js\";\nimport {Utils} from \"../utils.js\";\nimport {EventDispatcher} from \"../EventDispatcher.js\";\n\n\nexport class FirstPersonControls extends EventDispatcher {\n\tconstructor (viewer) {\n\t\tsuper();\n\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\n\t\tthis.scene = null;\n\t\tthis.sceneControls = new THREE.Scene();\n\n\t\tthis.rotationSpeed = 200;\n\t\tthis.moveSpeed = 10;\n\t\tthis.lockElevation = false;\n\n\t\tthis.keys = {\n\t\t\tFORWARD: ['W'.charCodeAt(0), 38],\n\t\t\tBACKWARD: ['S'.charCodeAt(0), 40],\n\t\t\tLEFT: ['A'.charCodeAt(0), 37],\n\t\t\tRIGHT: ['D'.charCodeAt(0), 39],\n\t\t\tUP: ['R'.charCodeAt(0), 33],\n\t\t\tDOWN: ['F'.charCodeAt(0), 34]\n\t\t};\n\n\t\tthis.fadeFactor = 50;\n\t\tthis.yawDelta = 0;\n\t\tthis.pitchDelta = 0;\n\t\tthis.translationDelta = new THREE.Vector3(0, 0, 0);\n\t\tthis.translationWorldDelta = new THREE.Vector3(0, 0, 0);\n\n\t\tthis.tweens = [];\n\n\t\tlet drag = (e) => {\n\t\t\tif (e.drag.object !== null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (e.drag.startHandled === undefined) {\n\t\t\t\te.drag.startHandled = true;\n\n\t\t\t\tthis.dispatchEvent({type: 'start'});\n\t\t\t}\n\n\t\t\tlet moveSpeed = this.viewer.getMoveSpeed();\n\n\t\t\tlet ndrag = {\n\t\t\t\tx: e.drag.lastDrag.x / this.renderer.domElement.clientWidth,\n\t\t\t\ty: e.drag.lastDrag.y / this.renderer.domElement.clientHeight\n\t\t\t};\n\n\t\t\tif (e.drag.mouse === MOUSE.LEFT) {\n\t\t\t\tthis.yawDelta += ndrag.x * this.rotationSpeed;\n\t\t\t\tthis.pitchDelta += ndrag.y * this.rotationSpeed;\n\t\t\t} else if (e.drag.mouse === MOUSE.RIGHT) {\n\t\t\t\tthis.translationDelta.x -= ndrag.x * moveSpeed * 100;\n\t\t\t\tthis.translationDelta.z += ndrag.y * moveSpeed * 100;\n\t\t\t}\n\t\t};\n\n\t\tlet drop = e => {\n\t\t\tthis.dispatchEvent({type: 'end'});\n\t\t};\n\n\t\tlet scroll = (e) => {\n\t\t\tlet speed = this.viewer.getMoveSpeed();\n\n\t\t\tif (e.delta < 0) {\n\t\t\t\tspeed = speed * 0.9;\n\t\t\t} else if (e.delta > 0) {\n\t\t\t\tspeed = speed / 0.9;\n\t\t\t}\n\n\t\t\tspeed = Math.max(speed, 0.1);\n\n\t\t\tthis.viewer.setMoveSpeed(speed);\n\t\t};\n\n\t\tlet dblclick = (e) => {\n\t\t\tthis.zoomToLocation(e.mouse);\n\t\t};\n\n\t\tthis.addEventListener('drag', drag);\n\t\tthis.addEventListener('drop', drop);\n\t\tthis.addEventListener('mousewheel', scroll);\n\t\tthis.addEventListener('dblclick', dblclick);\n\t}\n\n\tsetScene (scene) {\n\t\tthis.scene = scene;\n\t}\n\n\tstop(){\n\t\tthis.yawDelta = 0;\n\t\tthis.pitchDelta = 0;\n\t\tthis.translationDelta.set(0, 0, 0);\n\t}\n\t\n\tzoomToLocation(mouse){\n\t\tlet camera = this.scene.getActiveCamera();\n\t\t\n\t\tlet I = Utils.getMousePointCloudIntersection(\n\t\t\tmouse,\n\t\t\tcamera,\n\t\t\tthis.viewer,\n\t\t\tthis.scene.pointclouds);\n\n\t\tif (I === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet targetRadius = 0;\n\t\t{\n\t\t\tlet minimumJumpDistance = 0.2;\n\n\t\t\tlet domElement = this.renderer.domElement;\n\t\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\n\n\t\t\tlet nodes = I.pointcloud.nodesOnRay(I.pointcloud.visibleNodes, ray);\n\t\t\tlet lastNode = nodes[nodes.length - 1];\n\t\t\tlet radius = lastNode.getBoundingSphere(new THREE.Sphere()).radius;\n\t\t\ttargetRadius = Math.min(this.scene.view.radius, radius);\n\t\t\ttargetRadius = Math.max(minimumJumpDistance, targetRadius);\n\t\t}\n\n\t\tlet d = this.scene.view.direction.multiplyScalar(-1);\n\t\tlet cameraTargetPosition = new THREE.Vector3().addVectors(I.location, d.multiplyScalar(targetRadius));\n\t\t// TODO Unused: let controlsTargetPosition = I.location;\n\n\t\tlet animationDuration = 600;\n\t\tlet easing = TWEEN.Easing.Quartic.Out;\n\n\t\t{ // animate\n\t\t\tlet value = {x: 0};\n\t\t\tlet tween = new TWEEN.Tween(value).to({x: 1}, animationDuration);\n\t\t\ttween.easing(easing);\n\t\t\tthis.tweens.push(tween);\n\n\t\t\tlet startPos = this.scene.view.position.clone();\n\t\t\tlet targetPos = cameraTargetPosition.clone();\n\t\t\tlet startRadius = this.scene.view.radius;\n\t\t\tlet targetRadius = cameraTargetPosition.distanceTo(I.location);\n\n\t\t\ttween.onUpdate(() => {\n\t\t\t\tlet t = value.x;\n\t\t\t\tthis.scene.view.position.x = (1 - t) * startPos.x + t * targetPos.x;\n\t\t\t\tthis.scene.view.position.y = (1 - t) * startPos.y + t * targetPos.y;\n\t\t\t\tthis.scene.view.position.z = (1 - t) * startPos.z + t * targetPos.z;\n\n\t\t\t\tthis.scene.view.radius = (1 - t) * startRadius + t * targetRadius;\n\t\t\t\tthis.viewer.setMoveSpeed(this.scene.view.radius / 2.5);\n\t\t\t});\n\n\t\t\ttween.onComplete(() => {\n\t\t\t\tthis.tweens = this.tweens.filter(e => e !== tween);\n\t\t\t});\n\n\t\t\ttween.start();\n\t\t}\n\t}\n\n\tupdate (delta) {\n\t\tlet view = this.scene.view;\n\n\t\t{ // cancel move animations on user input\n\t\t\tlet changes = [ this.yawDelta,\n\t\t\t\tthis.pitchDelta,\n\t\t\t\tthis.translationDelta.length(),\n\t\t\t\tthis.translationWorldDelta.length() ];\n\t\t\tlet changeHappens = changes.some(e => Math.abs(e) > 0.001);\n\t\t\tif (changeHappens && this.tweens.length > 0) {\n\t\t\t\tthis.tweens.forEach(e => e.stop());\n\t\t\t\tthis.tweens = [];\n\t\t\t}\n\t\t}\n\n\t\t{ // accelerate while input is given\n\t\t\tlet ih = this.viewer.inputHandler;\n\n\t\t\tlet moveForward = this.keys.FORWARD.some(e => ih.pressedKeys[e]);\n\t\t\tlet moveBackward = this.keys.BACKWARD.some(e => ih.pressedKeys[e]);\n\t\t\tlet moveLeft = this.keys.LEFT.some(e => ih.pressedKeys[e]);\n\t\t\tlet moveRight = this.keys.RIGHT.some(e => ih.pressedKeys[e]);\n\t\t\tlet moveUp = this.keys.UP.some(e => ih.pressedKeys[e]);\n\t\t\tlet moveDown = this.keys.DOWN.some(e => ih.pressedKeys[e]);\n\n\t\t\tif(this.lockElevation){\n\t\t\t\tlet dir = view.direction;\n\t\t\t\tdir.z = 0;\n\t\t\t\tdir.normalize();\n\n\t\t\t\tif (moveForward && moveBackward) {\n\t\t\t\t\tthis.translationWorldDelta.set(0, 0, 0);\n\t\t\t\t} else if (moveForward) {\n\t\t\t\t\tthis.translationWorldDelta.copy(dir.multiplyScalar(this.viewer.getMoveSpeed()));\n\t\t\t\t} else if (moveBackward) {\n\t\t\t\t\tthis.translationWorldDelta.copy(dir.multiplyScalar(-this.viewer.getMoveSpeed()));\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif (moveForward && moveBackward) {\n\t\t\t\t\tthis.translationDelta.y = 0;\n\t\t\t\t} else if (moveForward) {\n\t\t\t\t\tthis.translationDelta.y = this.viewer.getMoveSpeed();\n\t\t\t\t} else if (moveBackward) {\n\t\t\t\t\tthis.translationDelta.y = -this.viewer.getMoveSpeed();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (moveLeft && moveRight) {\n\t\t\t\tthis.translationDelta.x = 0;\n\t\t\t} else if (moveLeft) {\n\t\t\t\tthis.translationDelta.x = -this.viewer.getMoveSpeed();\n\t\t\t} else if (moveRight) {\n\t\t\t\tthis.translationDelta.x = this.viewer.getMoveSpeed();\n\t\t\t}\n\n\t\t\tif (moveUp && moveDown) {\n\t\t\t\tthis.translationWorldDelta.z = 0;\n\t\t\t} else if (moveUp) {\n\t\t\t\tthis.translationWorldDelta.z = this.viewer.getMoveSpeed();\n\t\t\t} else if (moveDown) {\n\t\t\t\tthis.translationWorldDelta.z = -this.viewer.getMoveSpeed();\n\t\t\t}\n\t\t}\n\n\t\t{ // apply rotation\n\t\t\tlet yaw = view.yaw;\n\t\t\tlet pitch = view.pitch;\n\n\t\t\tyaw -= this.yawDelta * delta;\n\t\t\tpitch -= this.pitchDelta * delta;\n\n\t\t\tview.yaw = yaw;\n\t\t\tview.pitch = pitch;\n\t\t}\n\n\t\t{ // apply translation\n\t\t\tview.translate(\n\t\t\t\tthis.translationDelta.x * delta,\n\t\t\t\tthis.translationDelta.y * delta,\n\t\t\t\tthis.translationDelta.z * delta\n\t\t\t);\n\n\t\t\tview.translateWorld(\n\t\t\t\tthis.translationWorldDelta.x * delta,\n\t\t\t\tthis.translationWorldDelta.y * delta,\n\t\t\t\tthis.translationWorldDelta.z * delta\n\t\t\t);\n\t\t}\n\n\t\t{ // set view target according to speed\n\t\t\tview.radius = 3 * this.viewer.getMoveSpeed();\n\t\t}\n\n\t\t{ // decelerate over time\n\t\t\tlet attenuation = Math.max(0, 1 - this.fadeFactor * delta);\n\t\t\tthis.yawDelta *= attenuation;\n\t\t\tthis.pitchDelta *= attenuation;\n\t\t\tthis.translationDelta.multiplyScalar(attenuation);\n\t\t\tthis.translationWorldDelta.multiplyScalar(attenuation);\n\t\t}\n\t}\n};\n","\n\nimport {MOUSE} from \"../defines.js\";\nimport {Utils} from \"../utils.js\";\nimport {EventDispatcher} from \"../EventDispatcher.js\";\n\nexport class EarthControls extends EventDispatcher {\n\tconstructor (viewer) {\n\t\tsuper(viewer);\n\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\n\t\tthis.scene = null;\n\t\tthis.sceneControls = new THREE.Scene();\n\n\t\tthis.rotationSpeed = 10;\n\n\t\tthis.fadeFactor = 20;\n\t\tthis.wheelDelta = 0;\n\t\tthis.zoomDelta = new THREE.Vector3();\n\t\tthis.camStart = null;\n\n\t\tthis.tweens = [];\n\n\t\t{\n\t\t\tlet sg = new THREE.SphereGeometry(1, 16, 16);\n\t\t\tlet sm = new THREE.MeshNormalMaterial();\n\t\t\tthis.pivotIndicator = new THREE.Mesh(sg, sm);\n\t\t\tthis.pivotIndicator.visible = false;\n\t\t\tthis.sceneControls.add(this.pivotIndicator);\n\t\t}\n\n\t\tlet drag = (e) => {\n\t\t\tif (e.drag.object !== null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!this.pivot) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (e.drag.startHandled === undefined) {\n\t\t\t\te.drag.startHandled = true;\n\n\t\t\t\tthis.dispatchEvent({type: 'start'});\n\t\t\t}\n\n\t\t\tlet camStart = this.camStart;\n\t\t\tlet camera = this.scene.getActiveCamera();\n\t\t\tlet view = this.viewer.scene.view;\n\n\t\t\t// let camera = this.viewer.scene.camera;\n\t\t\tlet mouse = e.drag.end;\n\t\t\tlet domElement = this.viewer.renderer.domElement;\n\n\t\t\tif (e.drag.mouse === MOUSE.LEFT) {\n\n\t\t\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\n\t\t\t\tlet plane = new THREE.Plane().setFromNormalAndCoplanarPoint(\n\t\t\t\t\tnew THREE.Vector3(0, 0, 1),\n\t\t\t\t\tthis.pivot);\n\n\t\t\t\tlet distanceToPlane = ray.distanceToPlane(plane);\n\n\t\t\t\tif (distanceToPlane > 0) {\n\t\t\t\t\tlet I = new THREE.Vector3().addVectors(\n\t\t\t\t\t\tcamStart.position,\n\t\t\t\t\t\tray.direction.clone().multiplyScalar(distanceToPlane));\n\n\t\t\t\t\tlet movedBy = new THREE.Vector3().subVectors(\n\t\t\t\t\t\tI, this.pivot);\n\n\t\t\t\t\tlet newCamPos = camStart.position.clone().sub(movedBy);\n\n\t\t\t\t\tview.position.copy(newCamPos);\n\n\t\t\t\t\t{\n\t\t\t\t\t\tlet distance = newCamPos.distanceTo(this.pivot);\n\t\t\t\t\t\tview.radius = distance;\n\t\t\t\t\t\tlet speed = view.radius / 2.5;\n\t\t\t\t\t\tthis.viewer.setMoveSpeed(speed);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (e.drag.mouse === MOUSE.RIGHT) {\n\t\t\t\tlet ndrag = {\n\t\t\t\t\tx: e.drag.lastDrag.x / this.renderer.domElement.clientWidth,\n\t\t\t\t\ty: e.drag.lastDrag.y / this.renderer.domElement.clientHeight\n\t\t\t\t};\n\n\t\t\t\tlet yawDelta = -ndrag.x * this.rotationSpeed * 0.5;\n\t\t\t\tlet pitchDelta = -ndrag.y * this.rotationSpeed * 0.2;\n\n\t\t\t\tlet originalPitch = view.pitch;\n\t\t\t\tlet tmpView = view.clone();\n\t\t\t\ttmpView.pitch = tmpView.pitch + pitchDelta;\n\t\t\t\tpitchDelta = tmpView.pitch - originalPitch;\n\n\t\t\t\tlet pivotToCam = new THREE.Vector3().subVectors(view.position, this.pivot);\n\t\t\t\tlet pivotToCamTarget = new THREE.Vector3().subVectors(view.getPivot(), this.pivot);\n\t\t\t\tlet side = view.getSide();\n\n\t\t\t\tpivotToCam.applyAxisAngle(side, pitchDelta);\n\t\t\t\tpivotToCamTarget.applyAxisAngle(side, pitchDelta);\n\n\t\t\t\tpivotToCam.applyAxisAngle(new THREE.Vector3(0, 0, 1), yawDelta);\n\t\t\t\tpivotToCamTarget.applyAxisAngle(new THREE.Vector3(0, 0, 1), yawDelta);\n\n\t\t\t\tlet newCam = new THREE.Vector3().addVectors(this.pivot, pivotToCam);\n\t\t\t\t// TODO: Unused: let newCamTarget = new THREE.Vector3().addVectors(this.pivot, pivotToCamTarget);\n\n\t\t\t\tview.position.copy(newCam);\n\t\t\t\tview.yaw += yawDelta;\n\t\t\t\tview.pitch += pitchDelta;\n\t\t\t}\n\t\t};\n\n\t\tlet onMouseDown = e => {\n\t\t\tlet I = Utils.getMousePointCloudIntersection(\n\t\t\t\te.mouse, \n\t\t\t\tthis.scene.getActiveCamera(), \n\t\t\t\tthis.viewer, \n\t\t\t\tthis.scene.pointclouds, \n\t\t\t\t{pickClipped: false});\n\n\t\t\tif (I) {\n\t\t\t\tthis.pivot = I.location;\n\t\t\t\tthis.camStart = this.scene.getActiveCamera().clone();\n\t\t\t\tthis.pivotIndicator.visible = true;\n\t\t\t\tthis.pivotIndicator.position.copy(I.location);\n\t\t\t}\n\t\t};\n\n\t\tlet drop = e => {\n\t\t\tthis.dispatchEvent({type: 'end'});\n\t\t};\n\n\t\tlet onMouseUp = e => {\n\t\t\tthis.camStart = null;\n\t\t\tthis.pivot = null;\n\t\t\tthis.pivotIndicator.visible = false;\n\t\t};\n\n\t\tlet scroll = (e) => {\n\t\t\tthis.wheelDelta += e.delta;\n\t\t};\n\n\t\tlet dblclick = (e) => {\n\t\t\tthis.zoomToLocation(e.mouse);\n\t\t};\n\n\t\tthis.addEventListener('drag', drag);\n\t\tthis.addEventListener('drop', drop);\n\t\tthis.addEventListener('mousewheel', scroll);\n\t\tthis.addEventListener('mousedown', onMouseDown);\n\t\tthis.addEventListener('mouseup', onMouseUp);\n\t\tthis.addEventListener('dblclick', dblclick);\n\t}\n\n\tsetScene (scene) {\n\t\tthis.scene = scene;\n\t}\n\n\tstop(){\n\t\tthis.wheelDelta = 0;\n\t\tthis.zoomDelta.set(0, 0, 0);\n\t}\n\t\n\tzoomToLocation(mouse){\n\t\tlet camera = this.scene.getActiveCamera();\n\t\t\n\t\tlet I = Utils.getMousePointCloudIntersection(\n\t\t\tmouse,\n\t\t\tcamera,\n\t\t\tthis.viewer,\n\t\t\tthis.scene.pointclouds);\n\n\t\tif (I === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet targetRadius = 0;\n\t\t{\n\t\t\tlet minimumJumpDistance = 0.2;\n\n\t\t\tlet domElement = this.renderer.domElement;\n\t\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\n\n\t\t\tlet nodes = I.pointcloud.nodesOnRay(I.pointcloud.visibleNodes, ray);\n\t\t\tlet lastNode = nodes[nodes.length - 1];\n\t\t\tlet radius = lastNode.getBoundingSphere(new THREE.Sphere()).radius;\n\t\t\ttargetRadius = Math.min(this.scene.view.radius, radius);\n\t\t\ttargetRadius = Math.max(minimumJumpDistance, targetRadius);\n\t\t}\n\n\t\tlet d = this.scene.view.direction.multiplyScalar(-1);\n\t\tlet cameraTargetPosition = new THREE.Vector3().addVectors(I.location, d.multiplyScalar(targetRadius));\n\t\t// TODO Unused: let controlsTargetPosition = I.location;\n\n\t\tlet animationDuration = 600;\n\t\tlet easing = TWEEN.Easing.Quartic.Out;\n\n\t\t{ // animate\n\t\t\tlet value = {x: 0};\n\t\t\tlet tween = new TWEEN.Tween(value).to({x: 1}, animationDuration);\n\t\t\ttween.easing(easing);\n\t\t\tthis.tweens.push(tween);\n\n\t\t\tlet startPos = this.scene.view.position.clone();\n\t\t\tlet targetPos = cameraTargetPosition.clone();\n\t\t\tlet startRadius = this.scene.view.radius;\n\t\t\tlet targetRadius = cameraTargetPosition.distanceTo(I.location);\n\n\t\t\ttween.onUpdate(() => {\n\t\t\t\tlet t = value.x;\n\t\t\t\tthis.scene.view.position.x = (1 - t) * startPos.x + t * targetPos.x;\n\t\t\t\tthis.scene.view.position.y = (1 - t) * startPos.y + t * targetPos.y;\n\t\t\t\tthis.scene.view.position.z = (1 - t) * startPos.z + t * targetPos.z;\n\n\t\t\t\tthis.scene.view.radius = (1 - t) * startRadius + t * targetRadius;\n\t\t\t\tthis.viewer.setMoveSpeed(this.scene.view.radius / 2.5);\n\t\t\t});\n\n\t\t\ttween.onComplete(() => {\n\t\t\t\tthis.tweens = this.tweens.filter(e => e !== tween);\n\t\t\t});\n\n\t\t\ttween.start();\n\t\t}\n\t}\n\n\tupdate (delta) {\n\t\tlet view = this.scene.view;\n\t\tlet fade = Math.pow(0.5, this.fadeFactor * delta);\n\t\tlet progression = 1 - fade;\n\t\tlet camera = this.scene.getActiveCamera();\n\t\t\n\t\t// compute zoom\n\t\tif (this.wheelDelta !== 0) {\n\t\t\tlet I = Utils.getMousePointCloudIntersection(\n\t\t\t\tthis.viewer.inputHandler.mouse, \n\t\t\t\tthis.scene.getActiveCamera(), \n\t\t\t\tthis.viewer, \n\t\t\t\tthis.scene.pointclouds);\n\n\t\t\tif (I) {\n\t\t\t\tlet resolvedPos = new THREE.Vector3().addVectors(view.position, this.zoomDelta);\n\t\t\t\tlet distance = I.location.distanceTo(resolvedPos);\n\t\t\t\tlet jumpDistance = distance * 0.2 * this.wheelDelta;\n\t\t\t\tlet targetDir = new THREE.Vector3().subVectors(I.location, view.position);\n\t\t\t\ttargetDir.normalize();\n\n\t\t\t\tresolvedPos.add(targetDir.multiplyScalar(jumpDistance));\n\t\t\t\tthis.zoomDelta.subVectors(resolvedPos, view.position);\n\n\t\t\t\t{\n\t\t\t\t\tlet distance = resolvedPos.distanceTo(I.location);\n\t\t\t\t\tview.radius = distance;\n\t\t\t\t\tlet speed = view.radius / 2.5;\n\t\t\t\t\tthis.viewer.setMoveSpeed(speed);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// apply zoom\n\t\tif (this.zoomDelta.length() !== 0) {\n\t\t\tlet p = this.zoomDelta.clone().multiplyScalar(progression);\n\n\t\t\tlet newPos = new THREE.Vector3().addVectors(view.position, p);\n\t\t\tview.position.copy(newPos);\n\t\t}\n\n\t\tif (this.pivotIndicator.visible) {\n\t\t\tlet distance = this.pivotIndicator.position.distanceTo(view.position);\n\t\t\tlet pixelwidth = this.renderer.domElement.clientwidth;\n\t\t\tlet pixelHeight = this.renderer.domElement.clientHeight;\n\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, pixelwidth, pixelHeight);\n\t\t\tlet scale = (10 / pr);\n\t\t\tthis.pivotIndicator.scale.set(scale, scale, scale);\n\t\t}\n\n\t\t// decelerate over time\n\t\t{\n\t\t\tthis.zoomDelta.multiplyScalar(fade);\n\t\t\tthis.wheelDelta = 0;\n\t\t}\n\t}\n};\n","/**\n * @author chrisl / Geodan\n *\n * adapted from Potree.FirstPersonControls by\n *\n * @author mschuetz / http://mschuetz.at\n *\n * and THREE.DeviceOrientationControls by\n *\n * @author richt / http://richt.me\n * @author WestLangley / http://github.com/WestLangley\n *\n *\n *\n */\n\nimport {EventDispatcher} from \"../EventDispatcher.js\";\n\nexport class DeviceOrientationControls extends EventDispatcher{\n\tconstructor(viewer){\n\t\tsuper();\n\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\n\t\tthis.scene = null;\n\t\tthis.sceneControls = new THREE.Scene();\n\n\t\tthis.screenOrientation = window.orientation || 0;\n\n\t\tlet deviceOrientationChange = e => {\n\t\t\tthis.deviceOrientation = e;\n\t\t};\n\n\t\tlet screenOrientationChange = e => {\n\t\t\tthis.screenOrientation = window.orientation || 0;\n\t\t};\n\n\t\tif ('ondeviceorientationabsolute' in window) {\n\t\t\twindow.addEventListener('deviceorientationabsolute', deviceOrientationChange);\n\t\t} else if ('ondeviceorientation' in window) {\n\t\t\twindow.addEventListener('deviceorientation', deviceOrientationChange);\n\t\t} else {\n\t\t\tconsole.warn(\"No device orientation found.\");\n\t\t}\n\t\t// window.addEventListener('deviceorientation', deviceOrientationChange);\n\t\twindow.addEventListener('orientationchange', screenOrientationChange);\n\t}\n\n\tsetScene (scene) {\n\t\tthis.scene = scene;\n\t}\n\n\tupdate (delta) {\n\t\tlet computeQuaternion = function (alpha, beta, gamma, orient) {\n\t\t\tlet quaternion = new THREE.Quaternion();\n\n\t\t\tlet zee = new THREE.Vector3(0, 0, 1);\n\t\t\tlet euler = new THREE.Euler();\n\t\t\tlet q0 = new THREE.Quaternion();\n\n\t\t\teuler.set(beta, gamma, alpha, 'ZXY');\n\t\t\tquaternion.setFromEuler(euler);\n\t\t\tquaternion.multiply(q0.setFromAxisAngle(zee, -orient));\n\n\t\t\treturn quaternion;\n\t\t};\n\n\t\tif (typeof this.deviceOrientation !== 'undefined') {\n\t\t\tlet alpha = this.deviceOrientation.alpha ? THREE.Math.degToRad(this.deviceOrientation.alpha) : 0;\n\t\t\tlet beta = this.deviceOrientation.beta ? THREE.Math.degToRad(this.deviceOrientation.beta) : 0;\n\t\t\tlet gamma = this.deviceOrientation.gamma ? THREE.Math.degToRad(this.deviceOrientation.gamma) : 0;\n\t\t\tlet orient = this.screenOrientation ? THREE.Math.degToRad(this.screenOrientation) : 0;\n\n\t\t\tlet quaternion = computeQuaternion(alpha, beta, gamma, orient);\n\t\t\tviewer.scene.cameraP.quaternion.set(quaternion.x, quaternion.y, quaternion.z, quaternion.w);\n\t\t}\n\t}\n};\n","\nimport {ClipTask, ClipMethod, CameraMode, LengthUnits, ElevationGradientRepeat} from \"../defines.js\";\nimport {Renderer} from \"../PotreeRenderer.js\";\nimport {PotreeRenderer} from \"./PotreeRenderer.js\";\nimport {EDLRenderer} from \"./EDLRenderer.js\";\nimport {HQSplatRenderer} from \"./HQSplatRenderer.js\";\nimport {Scene} from \"./Scene.js\";\nimport {ClippingTool} from \"../utils/ClippingTool.js\";\nimport {TransformationTool} from \"../utils/TransformationTool.js\";\nimport {Utils} from \"../utils.js\";\nimport {MapView} from \"./map.js\";\nimport {ProfileWindow, ProfileWindowController} from \"./profile.js\";\nimport {BoxVolume} from \"../utils/Volume.js\";\nimport {Features} from \"../Features.js\";\nimport {Message} from \"../utils/Message.js\";\nimport {Sidebar} from \"./sidebar.js\";\n\nimport {AnnotationTool} from \"../utils/AnnotationTool.js\";\nimport {MeasuringTool} from \"../utils/MeasuringTool.js\";\nimport {ProfileTool} from \"../utils/ProfileTool.js\";\nimport {VolumeTool} from \"../utils/VolumeTool.js\";\n\nimport {InputHandler} from \"../navigation/InputHandler.js\";\nimport {NavigationCube} from \"./NavigationCube.js\";\nimport {Compass} from \"../utils/Compass.js\";\nimport {OrbitControls} from \"../navigation/OrbitControls.js\";\nimport {FirstPersonControls} from \"../navigation/FirstPersonControls.js\";\nimport {EarthControls} from \"../navigation/EarthControls.js\";\nimport {DeviceOrientationControls} from \"../navigation/DeviceOrientationControls.js\";\nimport { EventDispatcher } from \"../EventDispatcher.js\";\nimport { ClassificationScheme } from \"../materials/ClassificationScheme.js\";\n\nimport JSON5 from \"../../libs/json5-2.1.3/json5.mjs\";\n\n\nexport class Viewer extends EventDispatcher{\n\t\n\tconstructor(domElement, args = {}){\n\t\tsuper();\n\n\t\tthis.renderArea = domElement;\n\t\tthis.guiLoaded = false;\n\t\tthis.guiLoadTasks = [];\n\n\t\tthis.vr = null;\n\t\tthis.onVrListeners = [];\n\n\t\tthis.messages = [];\n\t\tthis.elMessages = $(`\n\t\t
        \n\t\t
        `);\n\t\t$(domElement).append(this.elMessages);\n\t\t\n\t\ttry{\n\n\t\t{ // generate missing dom hierarchy\n\t\t\tif ($(domElement).find('#potree_map').length === 0) {\n\t\t\t\tlet potreeMap = $(`\n\t\t\t\t\t
        \n\t\t\t\t\t\t
        \n\t\t\t\t\t\t
        \n\t\t\t\t\t\t
        \n\t\t\t\t\t
        \n\t\t\t\t`);\n\t\t\t\t$(domElement).append(potreeMap);\n\t\t\t}\n\n\t\t\tif ($(domElement).find('#potree_description').length === 0) {\n\t\t\t\tlet potreeDescription = $(`
        `);\n\t\t\t\t$(domElement).append(potreeDescription);\n\t\t\t}\n\n\t\t\tif ($(domElement).find('#potree_annotations').length === 0) {\n\t\t\t\tlet potreeAnnotationContainer = $(`\n\t\t\t\t\t
        `);\n\t\t\t\t$(domElement).append(potreeAnnotationContainer);\n\t\t\t}\n\t\t}\n\n\t\tthis.pointCloudLoadedCallback = args.onPointCloudLoaded || function () {};\n\n\t\t// if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {\n\t\t//\tdefaultSettings.navigation = \"Orbit\";\n\t\t// }\n\n\t\tthis.server = null;\n\n\t\tthis.fov = 60;\n\t\tthis.isFlipYZ = false;\n\t\tthis.useDEMCollisions = false;\n\t\tthis.generateDEM = false;\n\t\tthis.minNodeSize = 30;\n\t\tthis.edlStrength = 1.0;\n\t\tthis.edlRadius = 1.4;\n\t\tthis.edlOpacity = 1.0;\n\t\tthis.useEDL = false;\n\t\tthis.description = \"\";\n\n\t\tthis.classifications = ClassificationScheme.DEFAULT;\n\n\t\tthis.moveSpeed = 10;\n\n\t\tthis.lengthUnit = LengthUnits.METER;\n\t\tthis.lengthUnitDisplay = LengthUnits.METER;\n\n\t\tthis.showBoundingBox = false;\n\t\tthis.showAnnotations = true;\n\t\tthis.freeze = false;\n\t\tthis.clipTask = ClipTask.HIGHLIGHT;\n\t\tthis.clipMethod = ClipMethod.INSIDE_ANY;\n\n\t\tthis.elevationGradientRepeat = ElevationGradientRepeat.CLAMP;\n\n\t\tthis.filterReturnNumberRange = [0, 7];\n\t\tthis.filterNumberOfReturnsRange = [0, 7];\n\t\tthis.filterGPSTimeRange = [-Infinity, Infinity];\n\t\tthis.filterPointSourceIDRange = [0, 65535];\n\n\t\tthis.potreeRenderer = null;\n\t\tthis.edlRenderer = null;\n\t\tthis.renderer = null;\n\t\tthis.pRenderer = null;\n\n\t\tthis.scene = null;\n\t\tthis.overlay = null;\n\t\tthis.overlayCamera = null;\n\n\t\tthis.inputHandler = null;\n\t\tthis.controls = null;\n\n\t\tthis.clippingTool = null;\n\t\tthis.transformationTool = null;\n\t\tthis.navigationCube = null;\n\t\tthis.compass = null;\n\t\t\n\t\tthis.skybox = null;\n\t\tthis.clock = new THREE.Clock();\n\t\tthis.background = null;\n\n\t\tthis.initThree();\n\t\tthis.prepareVR();\n\n\t\tif(args.noDragAndDrop){\n\t\t\t\n\t\t}else{\n\t\t\tthis.initDragAndDrop();\n\t\t}\n\n\t\tif(typeof Stats !== \"undefined\"){\n\t\t\tthis.stats = new Stats();\n\t\t\tthis.stats.showPanel( 0 ); // 0: fps, 1: ms, 2: mb, 3+: custom\n\t\t\tdocument.body.appendChild( this.stats.dom );\n\t\t}\n\n\t\t{\n\t\t\tlet canvas = this.renderer.domElement;\n\t\t\tcanvas.addEventListener(\"webglcontextlost\", (e) => {\n\t\t\t\tconsole.log(e);\n\t\t\t\tthis.postMessage(\"WebGL context lost. \\u2639\");\n\n\t\t\t\tlet gl = this.renderer.getContext();\n\t\t\t\tlet error = gl.getError();\n\t\t\t\tconsole.log(error);\n\t\t\t}, false);\n\t\t}\n\n\t\t{\n\t\t\tthis.overlay = new THREE.Scene();\n\t\t\tthis.overlayCamera = new THREE.OrthographicCamera(\n\t\t\t\t0, 1,\n\t\t\t\t1, 0,\n\t\t\t\t-1000, 1000\n\t\t\t);\n\t\t}\n\t\t\n\t\tthis.pRenderer = new Renderer(this.renderer);\n\t\t\n\t\t{\n\t\t\tlet near = 2.5;\n\t\t\tlet far = 10.0;\n\t\t\tlet fov = 90;\n\t\t\t\n\t\t\tthis.shadowTestCam = new THREE.PerspectiveCamera(90, 1, near, far);\n\t\t\tthis.shadowTestCam.position.set(3.50, -2.80, 8.561);\n\t\t\tthis.shadowTestCam.lookAt(new THREE.Vector3(0, 0, 4.87));\n\t\t}\n\t\t\n\n\t\tlet scene = new Scene(this.renderer);\n\t\tthis.setScene(scene);\n\n\t\t{\n\t\t\tthis.inputHandler = new InputHandler(this);\n\t\t\tthis.inputHandler.setScene(this.scene);\n\n\t\t\tthis.clippingTool = new ClippingTool(this);\n\t\t\tthis.transformationTool = new TransformationTool(this);\n\t\t\tthis.navigationCube = new NavigationCube(this);\n\t\t\tthis.navigationCube.visible = false;\n\n\t\t\tthis.compass = new Compass(this);\n\t\t\t\n\t\t\tthis.createControls();\n\n\t\t\tthis.clippingTool.setScene(this.scene);\n\t\t\t\n\t\t\tlet onPointcloudAdded = (e) => {\n\t\t\t\tif (this.scene.pointclouds.length === 1) {\n\t\t\t\t\tlet speed = e.pointcloud.boundingBox.getSize(new THREE.Vector3()).length();\n\t\t\t\t\tspeed = speed / 5;\n\t\t\t\t\tthis.setMoveSpeed(speed);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tlet onVolumeRemoved = (e) => {\n\t\t\t\tthis.inputHandler.deselect(e.volume);\n\t\t\t};\n\n\t\t\tthis.addEventListener('scene_changed', (e) => {\n\t\t\t\tthis.inputHandler.setScene(e.scene);\n\t\t\t\tthis.clippingTool.setScene(this.scene);\n\t\t\t\t\n\t\t\t\tif(!e.scene.hasEventListener(\"pointcloud_added\", onPointcloudAdded)){\n\t\t\t\t\te.scene.addEventListener(\"pointcloud_added\", onPointcloudAdded);\n\t\t\t\t}\n\n\t\t\t\tif(!e.scene.hasEventListener(\"volume_removed\", onPointcloudAdded)){\n\t\t\t\t\te.scene.addEventListener(\"volume_removed\", onVolumeRemoved);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t});\n\n\t\t\tthis.scene.addEventListener(\"volume_removed\", onVolumeRemoved);\n\t\t\tthis.scene.addEventListener('pointcloud_added', onPointcloudAdded);\n\t\t}\n\n\t\t{ // set defaults\n\t\t\tthis.setFOV(60);\n\t\t\tthis.setEDLEnabled(false);\n\t\t\tthis.setEDLRadius(1.4);\n\t\t\tthis.setEDLStrength(0.4);\n\t\t\tthis.setEDLOpacity(1.0);\n\t\t\tthis.setClipTask(ClipTask.HIGHLIGHT);\n\t\t\tthis.setClipMethod(ClipMethod.INSIDE_ANY);\n\t\t\tthis.setPointBudget(1*1000*1000);\n\t\t\tthis.setShowBoundingBox(false);\n\t\t\tthis.setFreeze(false);\n\t\t\tthis.setControls(this.orbitControls);\n\t\t\tthis.setBackground('gradient');\n\n\t\t\tthis.scaleFactor = 1;\n\n\t\t\tthis.loadSettingsFromURL();\n\t\t}\n\n\t\t// start rendering!\n\t\tif(args.useDefaultRenderLoop === undefined || args.useDefaultRenderLoop === true){\n\t\t\trequestAnimationFrame(this.loop.bind(this));\n\t\t}\n\n\t\tthis.loadGUI = this.loadGUI.bind(this);\n\n\t\tthis.annotationTool = new AnnotationTool(this);\n\t\tthis.measuringTool = new MeasuringTool(this);\n\t\tthis.profileTool = new ProfileTool(this);\n\t\tthis.volumeTool = new VolumeTool(this);\n\n\t\t}catch(e){\n\t\t\tthis.onCrash(e);\n\t\t}\n\t}\n\n\tonCrash(error){\n\n\t\t$(this.renderArea).empty();\n\n\t\tif ($(this.renderArea).find('#potree_failpage').length === 0) {\n\t\t\tlet elFailPage = $(`\n\t\t\t
        \n\t\t\t\t\n\t\t\t\t

        Potree Encountered An Error

        \n\n\t\t\t\t

        \n\t\t\t\tThis may happen if your browser or graphics card is not supported.\n\t\t\t\t
        \n\t\t\t\tWe recommend to use \n\t\t\t\tChrome\n\t\t\t\tor \n\t\t\t\tFirefox.\n\t\t\t\t

        \n\n\t\t\t\t

        \n\t\t\t\tPlease also visit webglreport.com and \n\t\t\t\tcheck whether your system supports WebGL.\n\t\t\t\t

        \n\t\t\t\t

        \n\t\t\t\tIf you are already using one of the recommended browsers and WebGL is enabled, \n\t\t\t\tconsider filing an issue report at github,
        \n\t\t\t\tincluding your operating system, graphics card, browser and browser version, as well as the \n\t\t\t\terror message below.
        \n\t\t\t\tPlease do not report errors on unsupported browsers.\n\t\t\t\t

        \n\n\t\t\t\t
        \n\t\t\t\t\n\t\t\t
        `);\n\n\t\t\tlet elErrorMessage = elFailPage.find('#potree_error_console');\n\t\t\telErrorMessage.html(error.stack);\n\n\t\t\t$(this.renderArea).append(elFailPage);\n\t\t}\n\n\t\tthrow error;\n\t}\n\n\t// ------------------------------------------------------------------------------------\n\t// Viewer API\n\t// ------------------------------------------------------------------------------------\n\n\tsetScene (scene) {\n\t\tif (scene === this.scene) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet oldScene = this.scene;\n\t\tthis.scene = scene;\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'scene_changed',\n\t\t\toldScene: oldScene,\n\t\t\tscene: scene\n\t\t});\n\n\t\t{ // Annotations\n\t\t\t$('.annotation').detach();\n\n\t\t\t// for(let annotation of this.scene.annotations){\n\t\t\t//\tthis.renderArea.appendChild(annotation.domElement[0]);\n\t\t\t// }\n\n\t\t\tthis.scene.annotations.traverse(annotation => {\n\t\t\t\tthis.renderArea.appendChild(annotation.domElement[0]);\n\t\t\t});\n\n\t\t\tif (!this.onAnnotationAdded) {\n\t\t\t\tthis.onAnnotationAdded = e => {\n\t\t\t\t// console.log(\"annotation added: \" + e.annotation.title);\n\n\t\t\t\t\te.annotation.traverse(node => {\n\n\t\t\t\t\t\t$(\"#potree_annotation_container\").append(node.domElement);\n\t\t\t\t\t\t//this.renderArea.appendChild(node.domElement[0]);\n\t\t\t\t\t\tnode.scene = this.scene;\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (oldScene) {\n\t\t\t\toldScene.annotations.removeEventListener('annotation_added', this.onAnnotationAdded);\n\t\t\t}\n\t\t\tthis.scene.annotations.addEventListener('annotation_added', this.onAnnotationAdded);\n\t\t}\n\t};\n\n\tsetControls(controls){\n\t\tif (controls !== this.controls) {\n\t\t\tif (this.controls) {\n\t\t\t\tthis.controls.enabled = false;\n\t\t\t\tthis.inputHandler.removeInputListener(this.controls);\n\t\t\t}\n\n\t\t\tthis.controls = controls;\n\t\t\tthis.controls.enabled = true;\n\t\t\tthis.inputHandler.addInputListener(this.controls);\n\t\t}\n\t}\n\n\tgetControls () {\n\t\treturn this.controls;\n\t}\n\n\tgetMinNodeSize () {\n\t\treturn this.minNodeSize;\n\t};\n\n\tsetMinNodeSize (value) {\n\t\tif (this.minNodeSize !== value) {\n\t\t\tthis.minNodeSize = value;\n\t\t\tthis.dispatchEvent({'type': 'minnodesize_changed', 'viewer': this});\n\t\t}\n\t};\n\n\tgetBackground () {\n\t\treturn this.background;\n\t}\n\n\tsetBackground(bg){\n\t\tif (this.background === bg) {\n\t\t\treturn;\n\t\t}\n\n\t\tif(bg === \"skybox\"){\n\t\t\tthis.skybox = Utils.loadSkybox(new URL(Potree.resourcePath + '/textures/skybox2/').href);\n\t\t}\n\n\t\tthis.background = bg;\n\t\tthis.dispatchEvent({'type': 'background_changed', 'viewer': this});\n\t}\n\n\tsetDescription (value) {\n\t\tthis.description = value;\n\t\t\n\t\t$('#potree_description').html(value);\n\t\t//$('#potree_description').text(value);\n\t}\n\n\tgetDescription(){\n\t\treturn this.description;\n\t}\n\n\tsetShowBoundingBox (value) {\n\t\tif (this.showBoundingBox !== value) {\n\t\t\tthis.showBoundingBox = value;\n\t\t\tthis.dispatchEvent({'type': 'show_boundingbox_changed', 'viewer': this});\n\t\t}\n\t};\n\n\tgetShowBoundingBox () {\n\t\treturn this.showBoundingBox;\n\t};\n\n\tsetMoveSpeed (value) {\n\t\tif (this.moveSpeed !== value) {\n\t\t\tthis.moveSpeed = value;\n\t\t\tthis.dispatchEvent({'type': 'move_speed_changed', 'viewer': this, 'speed': value});\n\t\t}\n\t};\n\n\tgetMoveSpeed () {\n\t\treturn this.moveSpeed;\n\t};\n\n\tsetWeightClassification (w) {\n\t\tfor (let i = 0; i < this.scene.pointclouds.length; i++) {\n\t\t\tthis.scene.pointclouds[i].material.weightClassification = w;\n\t\t\tthis.dispatchEvent({'type': 'attribute_weights_changed' + i, 'viewer': this});\n\t\t}\n\t};\n\n\tsetFreeze (value) {\n\t\tvalue = Boolean(value);\n\t\tif (this.freeze !== value) {\n\t\t\tthis.freeze = value;\n\t\t\tthis.dispatchEvent({'type': 'freeze_changed', 'viewer': this});\n\t\t}\n\t};\n\n\tgetFreeze () {\n\t\treturn this.freeze;\n\t};\n\n\tgetClipTask(){\n\t\treturn this.clipTask;\n\t}\n\n\tgetClipMethod(){\n\t\treturn this.clipMethod;\n\t}\n\n\tsetClipTask(value){\n\t\tif(this.clipTask !== value){\n\n\t\t\tthis.clipTask = value;\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: \"cliptask_changed\", \n\t\t\t\tviewer: this});\t\t\n\t\t}\n\t}\n\n\tsetClipMethod(value){\n\t\tif(this.clipMethod !== value){\n\n\t\t\tthis.clipMethod = value;\n\t\t\t\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: \"clipmethod_changed\",\n\t\t\t\tviewer: this});\n\t\t}\n\t}\n\n\tsetElevationGradientRepeat(value){\n\t\tif(this.elevationGradientRepeat !== value){\n\n\t\t\tthis.elevationGradientRepeat = value;\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: \"elevation_gradient_repeat_changed\", \n\t\t\t\tviewer: this});\n\t\t}\n\t}\n\n\tsetPointBudget (value) {\n\t\tif (Potree.pointBudget !== value) {\n\t\t\tPotree.pointBudget = parseInt(value);\n\t\t\tthis.dispatchEvent({'type': 'point_budget_changed', 'viewer': this});\n\t\t}\n\t};\n\n\tgetPointBudget () {\n\t\treturn Potree.pointBudget;\n\t};\n\n\tsetShowAnnotations (value) {\n\t\tif (this.showAnnotations !== value) {\n\t\t\tthis.showAnnotations = value;\n\t\t\tthis.dispatchEvent({'type': 'show_annotations_changed', 'viewer': this});\n\t\t}\n\t}\n\n\tgetShowAnnotations () {\n\t\treturn this.showAnnotations;\n\t}\n\t\n\tsetDEMCollisionsEnabled(value){\n\t\tif(this.useDEMCollisions !== value){\n\t\t\tthis.useDEMCollisions = value;\n\t\t\tthis.dispatchEvent({'type': 'use_demcollisions_changed', 'viewer': this});\n\t\t};\n\t};\n\n\tgetDEMCollisionsEnabled () {\n\t\treturn this.useDEMCollisions;\n\t};\n\n\tsetEDLEnabled (value) {\n\t\tvalue = Boolean(value);\n\t\tif (this.useEDL !== value) {\n\t\t\tthis.useEDL = value;\n\t\t\tthis.dispatchEvent({'type': 'use_edl_changed', 'viewer': this});\n\t\t}\n\t};\n\n\tgetEDLEnabled () {\n\t\treturn this.useEDL;\n\t};\n\n\tsetEDLRadius (value) {\n\t\tif (this.edlRadius !== value) {\n\t\t\tthis.edlRadius = value;\n\t\t\tthis.dispatchEvent({'type': 'edl_radius_changed', 'viewer': this});\n\t\t}\n\t};\n\n\tgetEDLRadius () {\n\t\treturn this.edlRadius;\n\t};\n\n\tsetEDLStrength (value) {\n\t\tif (this.edlStrength !== value) {\n\t\t\tthis.edlStrength = value;\n\t\t\tthis.dispatchEvent({'type': 'edl_strength_changed', 'viewer': this});\n\t\t}\n\t};\n\n\tgetEDLStrength () {\n\t\treturn this.edlStrength;\n\t};\n\n\tsetEDLOpacity (value) {\n\t\tif (this.edlOpacity !== value) {\n\t\t\tthis.edlOpacity = value;\n\t\t\tthis.dispatchEvent({'type': 'edl_opacity_changed', 'viewer': this});\n\t\t}\n\t};\n\n\tgetEDLOpacity () {\n\t\treturn this.edlOpacity;\n\t};\n\n\tsetFOV (value) {\n\t\tif (this.fov !== value) {\n\t\t\tthis.fov = value;\n\t\t\tthis.dispatchEvent({'type': 'fov_changed', 'viewer': this});\n\t\t}\n\t};\n\n\tgetFOV () {\n\t\treturn this.fov;\n\t};\n\n\tdisableAnnotations () {\n\t\tthis.scene.annotations.traverse(annotation => {\n\t\t\tannotation.domElement.css('pointer-events', 'none');\n\n\t\t\t// return annotation.visible;\n\t\t});\n\t};\n\n\tenableAnnotations () {\n\t\tthis.scene.annotations.traverse(annotation => {\n\t\t\tannotation.domElement.css('pointer-events', 'auto');\n\n\t\t\t// return annotation.visible;\n\t\t});\n\t}\n\n\tsetClassifications(classifications){\n\t\tthis.classifications = classifications;\n\n\t\tthis.dispatchEvent({'type': 'classifications_changed', 'viewer': this});\n\t}\n\n\tsetClassificationVisibility (key, value) {\n\t\tif (!this.classifications[key]) {\n\t\t\tthis.classifications[key] = {visible: value, name: 'no name'};\n\t\t\tthis.dispatchEvent({'type': 'classification_visibility_changed', 'viewer': this});\n\t\t} else if (this.classifications[key].visible !== value) {\n\t\t\tthis.classifications[key].visible = value;\n\t\t\tthis.dispatchEvent({'type': 'classification_visibility_changed', 'viewer': this});\n\t\t}\n\t}\n\n\ttoggleAllClassificationsVisibility(){\n\n\t\tlet numVisible = 0;\n\t\tlet numItems = 0;\n\t\tfor(const key of Object.keys(this.classifications)){\n\t\t\tif(this.classifications[key].visible){\n\t\t\t\tnumVisible++;\n\t\t\t}\n\t\t\tnumItems++;\n\t\t}\n\n\t\tlet visible = true;\n\t\tif(numVisible === numItems){\n\t\t\tvisible = false;\n\t\t}\n\n\t\tlet somethingChanged = false;\n\n\t\tfor(const key of Object.keys(this.classifications)){\n\t\t\tif(this.classifications[key].visible !== visible){\n\t\t\t\tthis.classifications[key].visible = visible;\n\t\t\t\tsomethingChanged = true;\n\t\t\t}\n\t\t}\n\n\t\tif(somethingChanged){\n\t\t\tthis.dispatchEvent({'type': 'classification_visibility_changed', 'viewer': this});\n\t\t}\n\t}\n\n\tsetFilterReturnNumberRange(from, to){\n\t\tthis.filterReturnNumberRange = [from, to];\n\t\tthis.dispatchEvent({'type': 'filter_return_number_range_changed', 'viewer': this});\n\t}\n\n\tsetFilterNumberOfReturnsRange(from, to){\n\t\tthis.filterNumberOfReturnsRange = [from, to];\n\t\tthis.dispatchEvent({'type': 'filter_number_of_returns_range_changed', 'viewer': this});\n\t}\n\n\tsetFilterGPSTimeRange(from, to){\n\t\tthis.filterGPSTimeRange = [from, to];\n\t\tthis.dispatchEvent({'type': 'filter_gps_time_range_changed', 'viewer': this});\n\t}\n\n\tsetFilterPointSourceIDRange(from, to){\n\t\tthis.filterPointSourceIDRange = [from, to]\n\t\tthis.dispatchEvent({'type': 'filter_point_source_id_range_changed', 'viewer': this});\n\t}\n\n\tsetLengthUnit (value) {\n\t\tswitch (value) {\n\t\t\tcase 'm':\n\t\t\t\tthis.lengthUnit = LengthUnits.METER;\n\t\t\t\tthis.lengthUnitDisplay = LengthUnits.METER;\n\t\t\t\tbreak;\n\t\t\tcase 'ft':\n\t\t\t\tthis.lengthUnit = LengthUnits.FEET;\n\t\t\t\tthis.lengthUnitDisplay = LengthUnits.FEET;\n\t\t\t\tbreak;\n\t\t\tcase 'in':\n\t\t\t\tthis.lengthUnit = LengthUnits.INCH;\n\t\t\t\tthis.lengthUnitDisplay = LengthUnits.INCH;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis.dispatchEvent({ 'type': 'length_unit_changed', 'viewer': this, value: value});\n\t};\n\n\tsetLengthUnitAndDisplayUnit(lengthUnitValue, lengthUnitDisplayValue) {\n\t\tswitch (lengthUnitValue) {\n\t\t\tcase 'm':\n\t\t\t\tthis.lengthUnit = LengthUnits.METER;\n\t\t\t\tbreak;\n\t\t\tcase 'ft':\n\t\t\t\tthis.lengthUnit = LengthUnits.FEET;\n\t\t\t\tbreak;\n\t\t\tcase 'in':\n\t\t\t\tthis.lengthUnit = LengthUnits.INCH;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tswitch (lengthUnitDisplayValue) {\n\t\t\tcase 'm':\n\t\t\t\tthis.lengthUnitDisplay = LengthUnits.METER;\n\t\t\t\tbreak;\n\t\t\tcase 'ft':\n\t\t\t\tthis.lengthUnitDisplay = LengthUnits.FEET;\n\t\t\t\tbreak;\n\t\t\tcase 'in':\n\t\t\t\tthis.lengthUnitDisplay = LengthUnits.INCH;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis.dispatchEvent({ 'type': 'length_unit_changed', 'viewer': this, value: lengthUnitValue });\n\t};\n\n\tzoomTo(node, factor, animationDuration = 0){\n\t\tlet view = this.scene.view;\n\n\t\tlet camera = this.scene.cameraP.clone();\n\t\tcamera.rotation.copy(this.scene.cameraP.rotation);\n\t\tcamera.rotation.order = \"ZXY\";\n\t\tcamera.rotation.x = Math.PI / 2 + view.pitch;\n\t\tcamera.rotation.z = view.yaw;\n\t\tcamera.updateMatrix();\n\t\tcamera.updateMatrixWorld();\n\t\tcamera.zoomTo(node, factor);\n\n\t\tlet bs;\n\t\tif (node.boundingSphere) {\n\t\t\tbs = node.boundingSphere;\n\t\t} else if (node.geometry && node.geometry.boundingSphere) {\n\t\t\tbs = node.geometry.boundingSphere;\n\t\t} else {\n\t\t\tbs = node.boundingBox.getBoundingSphere(new THREE.Sphere());\n\t\t}\n\t\tbs = bs.clone().applyMatrix4(node.matrixWorld); \n\n\t\tlet startPosition = view.position.clone();\n\t\tlet endPosition = camera.position.clone();\n\t\tlet startTarget = view.getPivot();\n\t\tlet endTarget = bs.center;\n\t\tlet startRadius = view.radius;\n\t\tlet endRadius = endPosition.distanceTo(endTarget);\n\n\t\tlet easing = TWEEN.Easing.Quartic.Out;\n\n\t\t{ // animate camera position\n\t\t\tlet pos = startPosition.clone();\n\t\t\tlet tween = new TWEEN.Tween(pos).to(endPosition, animationDuration);\n\t\t\ttween.easing(easing);\n\n\t\t\ttween.onUpdate(() => {\n\t\t\t\tview.position.copy(pos);\n\t\t\t});\n\n\t\t\ttween.start();\n\t\t}\n\n\t\t{ // animate camera target\n\t\t\tlet target = startTarget.clone();\n\t\t\tlet tween = new TWEEN.Tween(target).to(endTarget, animationDuration);\n\t\t\ttween.easing(easing);\n\t\t\ttween.onUpdate(() => {\n\t\t\t\tview.lookAt(target);\n\t\t\t});\n\t\t\ttween.onComplete(() => {\n\t\t\t\tview.lookAt(target);\n\t\t\t\tthis.dispatchEvent({type: 'focusing_finished', target: this});\n\t\t\t});\n\n\t\t\tthis.dispatchEvent({type: 'focusing_started', target: this});\n\t\t\ttween.start();\n\t\t}\n\t};\n\n\tmoveToGpsTimeVicinity(time){\n\t\tconst result = Potree.Utils.findClosestGpsTime(time, viewer);\n\n\t\tconst box = result.node.pointcloud.deepestNodeAt(result.position).getBoundingBox();\n\t\tconst diameter = box.min.distanceTo(box.max);\n\n\t\tconst camera = this.scene.getActiveCamera();\n\t\tconst offset = camera.getWorldDirection(new THREE.Vector3()).multiplyScalar(diameter);\n\t\tconst newCamPos = result.position.clone().sub(offset);\n\n\t\tthis.scene.view.position.copy(newCamPos);\n\t\tthis.scene.view.lookAt(result.position);\n\t}\n\n\tshowAbout () {\n\t\t$(function () {\n\t\t\t$('#about-panel').dialog();\n\t\t});\n\t};\n\n\tgetBoundingBox (pointclouds) {\n\t\treturn this.scene.getBoundingBox(pointclouds);\n\t};\n\n\tgetGpsTimeExtent(){\n\t\tconst range = [Infinity, -Infinity];\n\n\t\tfor(const pointcloud of this.scene.pointclouds){\n\t\t\tconst attributes = pointcloud.pcoGeometry.pointAttributes.attributes;\n\t\t\tconst aGpsTime = attributes.find(a => a.name === \"gps-time\");\n\n\t\t\tif(aGpsTime){\n\t\t\t\trange[0] = Math.min(range[0], aGpsTime.range[0]);\n\t\t\t\trange[1] = Math.max(range[1], aGpsTime.range[1]);\n\t\t\t}\n\t\t}\n\n\t\treturn range;\n\t}\n\n\tfitToScreen (factor = 1, animationDuration = 0) {\n\t\tlet box = this.getBoundingBox(this.scene.pointclouds);\n\n\t\tlet node = new THREE.Object3D();\n\t\tnode.boundingBox = box;\n\n\t\tthis.zoomTo(node, factor, animationDuration);\n\t\tthis.controls.stop();\n\t};\n\n\ttoggleNavigationCube() {\n\t\tthis.navigationCube.visible = !this.navigationCube.visible;\n\t}\n\n\tsetView(view) {\n\t\tif(!view) return;\n\n\t\tswitch(view) {\n\t\t\tcase \"F\":\n\t\t\t\tthis.setFrontView();\n\t\t\t\tbreak;\n\t\t\tcase \"B\":\n\t\t\t\tthis.setBackView();\n\t\t\t\tbreak;\n\t\t\tcase \"L\":\n\t\t\t\tthis.setLeftView();\n\t\t\t\tbreak;\n\t\t\tcase \"R\":\n\t\t\t\tthis.setRightView();\n\t\t\t\tbreak;\n\t\t\tcase \"U\":\n\t\t\t\tthis.setTopView();\n\t\t\t\tbreak;\n\t\t\tcase \"D\":\n\t\t\t\tthis.setBottomView();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t\n\tsetTopView(){\n\t\tthis.scene.view.yaw = 0;\n\t\tthis.scene.view.pitch = -Math.PI / 2;\n\n\t\tthis.fitToScreen();\n\t};\n\t\n\tsetBottomView(){\n\t\tthis.scene.view.yaw = -Math.PI;\n\t\tthis.scene.view.pitch = Math.PI / 2;\n\t\t\n\t\tthis.fitToScreen();\n\t};\n\n\tsetFrontView(){\n\t\tthis.scene.view.yaw = 0;\n\t\tthis.scene.view.pitch = 0;\n\n\t\tthis.fitToScreen();\n\t};\n\t\n\tsetBackView(){\n\t\tthis.scene.view.yaw = Math.PI;\n\t\tthis.scene.view.pitch = 0;\n\t\t\n\t\tthis.fitToScreen();\n\t};\n\n\tsetLeftView(){\n\t\tthis.scene.view.yaw = -Math.PI / 2;\n\t\tthis.scene.view.pitch = 0;\n\n\t\tthis.fitToScreen();\n\t};\n\n\tsetRightView () {\n\t\tthis.scene.view.yaw = Math.PI / 2;\n\t\tthis.scene.view.pitch = 0;\n\n\t\tthis.fitToScreen();\n\t};\n\n\tflipYZ () {\n\t\tthis.isFlipYZ = !this.isFlipYZ;\n\n\t\t// TODO flipyz\n\t\tconsole.log('TODO');\n\t}\n\t\n\tsetCameraMode(mode){\n\t\tthis.scene.cameraMode = mode;\n\n\t\tfor(let pointcloud of this.scene.pointclouds) {\n\t\t\tpointcloud.material.useOrthographicCamera = mode == CameraMode.ORTHOGRAPHIC;\n\t\t}\n\t}\n\n\tgetProjection(){\n\t\tconst pointcloud = this.scene.pointclouds[0];\n\n\t\tif(pointcloud){\n\t\t\treturn pointcloud.projection;\n\t\t}else{\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tasync loadProject(url){\n\n\t\tconst response = await fetch(url);\n\t\n\t\tconst text = await response.text();\n\t\tconst json = JSON5.parse(text);\n\t\t// const json = JSON.parse(text);\n\n\t\tif(json.type === \"Potree\"){\n\t\t\tPotree.loadProject(viewer, json);\n\t\t}\n\n\t\t//Potree.loadProject(this, url);\n\t}\n\n\tsaveProject(){\n\t\treturn Potree.saveProject(this);\n\t}\n\t\n\tloadSettingsFromURL(){\n\t\tif(Utils.getParameterByName(\"pointSize\")){\n\t\t\tthis.setPointSize(parseFloat(Utils.getParameterByName(\"pointSize\")));\n\t\t}\n\t\t\n\t\tif(Utils.getParameterByName(\"FOV\")){\n\t\t\tthis.setFOV(parseFloat(Utils.getParameterByName(\"FOV\")));\n\t\t}\n\t\t\n\t\tif(Utils.getParameterByName(\"opacity\")){\n\t\t\tthis.setOpacity(parseFloat(Utils.getParameterByName(\"opacity\")));\n\t\t}\n\t\t\n\t\tif(Utils.getParameterByName(\"edlEnabled\")){\n\t\t\tlet enabled = Utils.getParameterByName(\"edlEnabled\") === \"true\";\n\t\t\tthis.setEDLEnabled(enabled);\n\t\t}\n\n\t\tif (Utils.getParameterByName('edlRadius')) {\n\t\t\tthis.setEDLRadius(parseFloat(Utils.getParameterByName('edlRadius')));\n\t\t}\n\n\t\tif (Utils.getParameterByName('edlStrength')) {\n\t\t\tthis.setEDLStrength(parseFloat(Utils.getParameterByName('edlStrength')));\n\t\t}\n\n\t\tif (Utils.getParameterByName('pointBudget')) {\n\t\t\tthis.setPointBudget(parseFloat(Utils.getParameterByName('pointBudget')));\n\t\t}\n\n\t\tif (Utils.getParameterByName('showBoundingBox')) {\n\t\t\tlet enabled = Utils.getParameterByName('showBoundingBox') === 'true';\n\t\t\tif (enabled) {\n\t\t\t\tthis.setShowBoundingBox(true);\n\t\t\t} else {\n\t\t\t\tthis.setShowBoundingBox(false);\n\t\t\t}\n\t\t}\n\n\t\tif (Utils.getParameterByName('material')) {\n\t\t\tlet material = Utils.getParameterByName('material');\n\t\t\tthis.setMaterial(material);\n\t\t}\n\n\t\tif (Utils.getParameterByName('pointSizing')) {\n\t\t\tlet sizing = Utils.getParameterByName('pointSizing');\n\t\t\tthis.setPointSizing(sizing);\n\t\t}\n\n\t\tif (Utils.getParameterByName('quality')) {\n\t\t\tlet quality = Utils.getParameterByName('quality');\n\t\t\tthis.setQuality(quality);\n\t\t}\n\n\t\tif (Utils.getParameterByName('position')) {\n\t\t\tlet value = Utils.getParameterByName('position');\n\t\t\tvalue = value.replace('[', '').replace(']', '');\n\t\t\tlet tokens = value.split(';');\n\t\t\tlet x = parseFloat(tokens[0]);\n\t\t\tlet y = parseFloat(tokens[1]);\n\t\t\tlet z = parseFloat(tokens[2]);\n\n\t\t\tthis.scene.view.position.set(x, y, z);\n\t\t}\n\n\t\tif (Utils.getParameterByName('target')) {\n\t\t\tlet value = Utils.getParameterByName('target');\n\t\t\tvalue = value.replace('[', '').replace(']', '');\n\t\t\tlet tokens = value.split(';');\n\t\t\tlet x = parseFloat(tokens[0]);\n\t\t\tlet y = parseFloat(tokens[1]);\n\t\t\tlet z = parseFloat(tokens[2]);\n\n\t\t\tthis.scene.view.lookAt(new THREE.Vector3(x, y, z));\n\t\t}\n\n\t\tif (Utils.getParameterByName('background')) {\n\t\t\tlet value = Utils.getParameterByName('background');\n\t\t\tthis.setBackground(value);\n\t\t}\n\n\t\t// if(Utils.getParameterByName(\"elevationRange\")){\n\t\t//\tlet value = Utils.getParameterByName(\"elevationRange\");\n\t\t//\tvalue = value.replace(\"[\", \"\").replace(\"]\", \"\");\n\t\t//\tlet tokens = value.split(\";\");\n\t\t//\tlet x = parseFloat(tokens[0]);\n\t\t//\tlet y = parseFloat(tokens[1]);\n\t\t//\n\t\t//\tthis.setElevationRange(x, y);\n\t\t//\t//this.scene.view.target.set(x, y, z);\n\t\t// }\n\t};\n\n\t// ------------------------------------------------------------------------------------\n\t// Viewer Internals\n\t// ------------------------------------------------------------------------------------\n\n\tcreateControls () {\n\t\t{ // create FIRST PERSON CONTROLS\n\t\t\tthis.fpControls = new FirstPersonControls(this);\n\t\t\tthis.fpControls.enabled = false;\n\t\t\tthis.fpControls.addEventListener('start', this.disableAnnotations.bind(this));\n\t\t\tthis.fpControls.addEventListener('end', this.enableAnnotations.bind(this));\n\t\t}\n\n\t\t// { // create GEO CONTROLS\n\t\t//\tthis.geoControls = new GeoControls(this.scene.camera, this.renderer.domElement);\n\t\t//\tthis.geoControls.enabled = false;\n\t\t//\tthis.geoControls.addEventListener(\"start\", this.disableAnnotations.bind(this));\n\t\t//\tthis.geoControls.addEventListener(\"end\", this.enableAnnotations.bind(this));\n\t\t//\tthis.geoControls.addEventListener(\"move_speed_changed\", (event) => {\n\t\t//\t\tthis.setMoveSpeed(this.geoControls.moveSpeed);\n\t\t//\t});\n\t\t// }\n\n\t\t{ // create ORBIT CONTROLS\n\t\t\tthis.orbitControls = new OrbitControls(this);\n\t\t\tthis.orbitControls.enabled = false;\n\t\t\tthis.orbitControls.addEventListener('start', this.disableAnnotations.bind(this));\n\t\t\tthis.orbitControls.addEventListener('end', this.enableAnnotations.bind(this));\n\t\t}\n\n\t\t{ // create EARTH CONTROLS\n\t\t\tthis.earthControls = new EarthControls(this);\n\t\t\tthis.earthControls.enabled = false;\n\t\t\tthis.earthControls.addEventListener('start', this.disableAnnotations.bind(this));\n\t\t\tthis.earthControls.addEventListener('end', this.enableAnnotations.bind(this));\n\t\t}\n\n\t\t{ // create DEVICE ORIENTATION CONTROLS\n\t\t\tthis.deviceControls = new DeviceOrientationControls(this);\n\t\t\tthis.deviceControls.enabled = false;\n\t\t\tthis.deviceControls.addEventListener('start', this.disableAnnotations.bind(this));\n\t\t\tthis.deviceControls.addEventListener('end', this.enableAnnotations.bind(this));\n\t\t}\n\t};\n\n\ttoggleSidebar () {\n\t\tlet renderArea = $('#potree_render_area');\n\t\tlet isVisible = renderArea.css('left') !== '0px';\n\n\t\tif (isVisible) {\n\t\t\trenderArea.css('left', '0px');\n\t\t} else {\n\t\t\trenderArea.css('left', '300px');\n\t\t}\n\t};\n\n\ttoggleMap () {\n\t\t// let map = $('#potree_map');\n\t\t// map.toggle(100);\n\n\t\tif (this.mapView) {\n\t\t\tthis.mapView.toggle();\n\t\t}\n\t};\n\n\tonGUILoaded(callback){\n\t\tif(this.guiLoaded){\n\t\t\tcallback();\n\t\t}else{\n\t\t\tthis.guiLoadTasks.push(callback);\n\t\t}\n\t}\n\n\tpromiseGuiLoaded(){\n\t\treturn new Promise( resolve => {\n\n\t\t\tif(this.guiLoaded){\n\t\t\t\tresolve();\n\t\t\t}else{\n\t\t\t\tthis.guiLoadTasks.push(resolve);\n\t\t\t}\n\t\t\n\t\t});\n\t}\n\n\tloadGUI(callback){\n\n\t\tif(callback){\n\t\t\tthis.onGUILoaded(callback);\n\t\t}\n\n\t\tlet viewer = this;\n\t\tlet sidebarContainer = $('#potree_sidebar_container');\n\t\tsidebarContainer.load(new URL(Potree.scriptPath + '/sidebar.html').href, () => {\n\t\t\tsidebarContainer.css('width', '300px');\n\t\t\tsidebarContainer.css('height', '100%');\n\n\t\t\tlet imgMenuToggle = document.createElement('img');\n\t\t\timgMenuToggle.src = new URL(Potree.resourcePath + '/icons/menu_button.svg').href;\n\t\t\timgMenuToggle.onclick = this.toggleSidebar;\n\t\t\timgMenuToggle.classList.add('potree_menu_toggle');\n\n\t\t\tlet imgMapToggle = document.createElement('img');\n\t\t\timgMapToggle.src = new URL(Potree.resourcePath + '/icons/map_icon.png').href;\n\t\t\timgMapToggle.style.display = 'none';\n\t\t\timgMapToggle.onclick = e => { this.toggleMap(); };\n\t\t\timgMapToggle.id = 'potree_map_toggle';\n\n\t\t\tviewer.renderArea.insertBefore(imgMapToggle, viewer.renderArea.children[0]);\n\t\t\tviewer.renderArea.insertBefore(imgMenuToggle, viewer.renderArea.children[0]);\n\n\t\t\tthis.mapView = new MapView(this);\n\t\t\tthis.mapView.init();\n\n\t\t\ti18n.init({\n\t\t\t\tlng: 'en',\n\t\t\t\tresGetPath: Potree.resourcePath + '/lang/__lng__/__ns__.json',\n\t\t\t\tpreload: ['en', 'fr', 'de', 'jp', 'se', 'es'],\n\t\t\t\tgetAsync: true,\n\t\t\t\tdebug: false\n\t\t\t}, function (t) {\n\t\t\t\t// Start translation once everything is loaded\n\t\t\t\t$('body').i18n();\n\t\t\t});\n\n\t\t\t$(() => {\n\t\t\t\t//initSidebar(this);\n\t\t\t\tlet sidebar = new Sidebar(this);\n\t\t\t\tsidebar.init();\n\n\t\t\t\tthis.sidebar = sidebar;\n\n\t\t\t\t//if (callback) {\n\t\t\t\t//\t$(callback);\n\t\t\t\t//}\n\n\t\t\t\tlet elProfile = $('
        ').load(new URL(Potree.scriptPath + '/profile.html').href, () => {\n\t\t\t\t\t$(document.body).append(elProfile.children());\n\t\t\t\t\tthis.profileWindow = new ProfileWindow(this);\n\t\t\t\t\tthis.profileWindowController = new ProfileWindowController(this);\n\n\t\t\t\t\t$('#profile_window').draggable({\n\t\t\t\t\t\thandle: $('#profile_titlebar'),\n\t\t\t\t\t\tcontainment: $(document.body)\n\t\t\t\t\t});\n\t\t\t\t\t$('#profile_window').resizable({\n\t\t\t\t\t\tcontainment: $(document.body),\n\t\t\t\t\t\thandles: 'n, e, s, w'\n\t\t\t\t\t});\n\n\t\t\t\t\t$(() => {\n\t\t\t\t\t\tthis.guiLoaded = true;\n\t\t\t\t\t\tfor(let task of this.guiLoadTasks){\n\t\t\t\t\t\t\ttask();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\t\n\n\t\t\t});\n\n\t\t\t\n\t\t});\n\n\t\treturn this.promiseGuiLoaded();\n\t}\n\n\tsetLanguage (lang) {\n\t\ti18n.setLng(lang);\n\t\t$('body').i18n();\n\t}\n\n\tsetServer (server) {\n\t\tthis.server = server;\n\t}\n\n\tinitDragAndDrop(){\n\t\tfunction allowDrag(e) {\n\t\t\te.dataTransfer.dropEffect = 'copy';\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tlet dropHandler = async (event) => {\n\t\t\tconsole.log(event);\n\t\t\tevent.preventDefault();\n\n\t\t\tfor(const item of event.dataTransfer.items){\n\t\t\t\tconsole.log(item);\n\n\t\t\t\tif(item.kind !== \"file\"){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst file = item.getAsFile();\n\n\t\t\t\tconst isJson = file.name.toLowerCase().endsWith(\".json\");\n\t\t\t\tconst isGeoPackage = file.name.toLowerCase().endsWith(\".gpkg\");\n\n\t\t\t\tif(isJson){\n\t\t\t\t\ttry{\n\n\t\t\t\t\t\tconst text = await file.text();\n\t\t\t\t\t\tconst json = JSON.parse(text);\n\n\t\t\t\t\t\tif(json.type === \"Potree\"){\n\t\t\t\t\t\t\tPotree.loadProject(viewer, json);\n\t\t\t\t\t\t}\n\t\t\t\t\t}catch(e){\n\t\t\t\t\t\tconsole.error(\"failed to parse the dropped file as JSON\");\n\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t}\n\t\t\t\t}else if(isGeoPackage){\n\t\t\t\t\tconst hasPointcloud = viewer.scene.pointclouds.length > 0;\n\n\t\t\t\t\tif(!hasPointcloud){\n\t\t\t\t\t\tlet msg = \"At least one point cloud is needed that specifies the \";\n\t\t\t\t\t\tmsg += \"coordinate reference system before loading vector data.\";\n\t\t\t\t\t\tconsole.error(msg);\n\t\t\t\t\t}else{\n\n\t\t\t\t\t\tproj4.defs(\"WGS84\", \"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs\");\n\t\t\t\t\t\tproj4.defs(\"pointcloud\", this.getProjection());\n\t\t\t\t\t\tlet transform = proj4(\"WGS84\", \"pointcloud\");\n\n\t\t\t\t\t\tconst buffer = await file.arrayBuffer();\n\n\t\t\t\t\t\tconst params = {\n\t\t\t\t\t\t\ttransform: transform,\n\t\t\t\t\t\t\tsource: file.name,\n\t\t\t\t\t\t};\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst geo = await Potree.GeoPackageLoader.loadBuffer(buffer, params);\n\t\t\t\t\t\tviewer.scene.addGeopackage(geo);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t};\n\n\n\t\t$(\"body\")[0].addEventListener(\"dragenter\", allowDrag);\n\t\t$(\"body\")[0].addEventListener(\"dragover\", allowDrag);\n\t\t$(\"body\")[0].addEventListener(\"drop\", dropHandler);\n\t}\n\n\tinitThree () {\n\n\t\tconsole.log(`initializing three.js ${THREE.REVISION}`);\n\n\t\tlet width = this.renderArea.clientWidth;\n\t\tlet height = this.renderArea.clientHeight;\n\n\t\tlet contextAttributes = {\n\t\t\talpha: true,\n\t\t\tdepth: true,\n\t\t\tstencil: false,\n\t\t\tantialias: false,\n\t\t\t//premultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: true,\n\t\t\tpowerPreference: \"high-performance\",\n\t\t};\n\n\t\t// let contextAttributes = {\n\t\t// \talpha: false,\n\t\t// \tpreserveDrawingBuffer: true,\n\t\t// };\n\n\t\t// let contextAttributes = {\n\t\t// \talpha: false,\n\t\t// \tpreserveDrawingBuffer: true,\n\t\t// };\n\n\t\tlet canvas = document.createElement(\"canvas\");\n\n\t\tlet context = canvas.getContext('webgl', contextAttributes );\n\n\t\tthis.renderer = new THREE.WebGLRenderer({\n\t\t\talpha: true, \n\t\t\tpremultipliedAlpha: false,\n\t\t\tcanvas: canvas,\n\t\t\tcontext: context});\n\t\tthis.renderer.sortObjects = false;\n\t\tthis.renderer.setSize(width, height);\n\t\tthis.renderer.autoClear = false;\n\t\tthis.renderArea.appendChild(this.renderer.domElement);\n\t\tthis.renderer.domElement.tabIndex = '2222';\n\t\tthis.renderer.domElement.style.position = 'absolute';\n\t\tthis.renderer.domElement.addEventListener('mousedown', () => {\n\t\t\tthis.renderer.domElement.focus();\n\t\t});\n\t\t//this.renderer.domElement.focus();\n\n\t\t// NOTE: If extension errors occur, pass the string into this.renderer.extensions.get(x) before enabling\n\t\t// enable frag_depth extension for the interpolation shader, if available\n\t\tlet gl = this.renderer.getContext();\n\t\tgl.getExtension('EXT_frag_depth');\n\t\tgl.getExtension('WEBGL_depth_texture');\n\t\tgl.getExtension('WEBGL_color_buffer_float'); \t// Enable explicitly for more portability, EXT_color_buffer_float is the proper name in WebGL 2\n\t\t\n\t\t//if(gl instanceof WebGLRenderingContext){\n\t\t\tlet extVAO = gl.getExtension('OES_vertex_array_object');\n\n\t\t\tif(!extVAO){\n\t\t\t\tthrow new Error(\"OES_vertex_array_object extension not supported\");\n\t\t\t}\n\n\t\t\tgl.createVertexArray = extVAO.createVertexArrayOES.bind(extVAO);\n\t\t\tgl.bindVertexArray = extVAO.bindVertexArrayOES.bind(extVAO);\n\t\t//}else if(gl instanceof WebGL2RenderingContext){\n\t\t//\tgl.getExtension(\"EXT_color_buffer_float\");\n\t\t//}\n\t\t\n\t}\n\n\tonVr(callback){\n\n\t\tif(this.vr){\n\t\t\tcallback();\n\t\t}else{\n\t\t\tthis.onVrListeners.push(callback);\n\t\t}\n\n\t}\n\n\tasync prepareVR(){\n\n\t\tif(!navigator.getVRDisplays){\n\t\t\tconsole.info(\"browser does not support WebVR\");\n\n\t\t\treturn false;\n\t\t}\n\n\t\ttry{\n\t\t\tlet frameData = new VRFrameData();\n\t\t\tlet displays = await navigator.getVRDisplays();\n\n\t\t\tif(displays.length == 0){\n\t\t\t\tconsole.info(\"no VR display found\");\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tlet display = displays[displays.length - 1];\n\t\t\tdisplay.depthNear = 0.1;\n\t\t\tdisplay.depthFar = 10000.0;\n\n\t\t\tif(!display.capabilities.canPresent){\n\t\t\t\t// Not sure why canPresent would ever be false?\n\t\t\t\tconsole.error(\"VR display canPresent === false\");\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.vr = {\n\t\t\t\tframeData: frameData,\n\t\t\t\tdisplay: display,\n\t\t\t\tnode: new THREE.Object3D(),\n\t\t\t};\n\n\t\t\tfor(const listener of this.onVrListeners){\n\t\t\t\tlistener();\n\t\t\t}\n\t\t}catch(err){\n\t\t\tconsole.error(err);\n\n\t\t\treturn false;\n\t\t}\n\t\t\n\t}\n\n\tupdateAnnotations () {\n\n\t\tif(!this.visibleAnnotations){\n\t\t\tthis.visibleAnnotations = new Set();\n\t\t}\n\n\t\tthis.scene.annotations.updateBounds();\n\t\tthis.scene.cameraP.updateMatrixWorld();\n\t\tthis.scene.cameraO.updateMatrixWorld();\n\t\t\n\t\tlet distances = [];\n\n\t\tlet renderAreaSize = this.renderer.getSize(new THREE.Vector2());\n\n\t\tlet viewer = this;\n\n\t\tlet visibleNow = [];\n\t\tthis.scene.annotations.traverse(annotation => {\n\n\t\t\tif (annotation === this.scene.annotations) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (!annotation.visible) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tannotation.scene = this.scene;\n\n\t\t\tlet element = annotation.domElement;\n\n\t\t\tlet position = annotation.position.clone();\n\t\t\tposition.add(annotation.offset);\n\t\t\tif (!position) {\n\t\t\t\tposition = annotation.boundingBox.getCenter(new THREE.Vector3());\n\t\t\t}\n\n\t\t\tlet distance = viewer.scene.cameraP.position.distanceTo(position);\n\t\t\tlet radius = annotation.boundingBox.getBoundingSphere(new THREE.Sphere()).radius;\n\n\t\t\tlet screenPos = new THREE.Vector3();\n\t\t\tlet screenSize = 0;\n\n\t\t\t{\n\t\t\t\t// SCREEN POS\n\t\t\t\tscreenPos.copy(position).project(this.scene.getActiveCamera());\n\t\t\t\tscreenPos.x = renderAreaSize.x * (screenPos.x + 1) / 2;\n\t\t\t\tscreenPos.y = renderAreaSize.y * (1 - (screenPos.y + 1) / 2);\n\n\n\t\t\t\t// SCREEN SIZE\n\t\t\t\tif(viewer.scene.cameraMode == CameraMode.PERSPECTIVE) {\n\t\t\t\t\tlet fov = Math.PI * viewer.scene.cameraP.fov / 180;\n\t\t\t\t\tlet slope = Math.tan(fov / 2.0);\n\t\t\t\t\tlet projFactor = 0.5 * renderAreaSize.y / (slope * distance);\n\t\t\t\t\tscreenSize = radius * projFactor;\n\t\t\t\t} else {\n\t\t\t\t\tscreenSize = Utils.projectedRadiusOrtho(radius, viewer.scene.cameraO.projectionMatrix, renderAreaSize.x, renderAreaSize.y);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telement.css(\"left\", screenPos.x + \"px\");\n\t\t\telement.css(\"top\", screenPos.y + \"px\");\n\t\t\t//element.css(\"display\", \"block\");\n\n\t\t\tlet zIndex = 10000000 - distance * (10000000 / this.scene.cameraP.far);\n\t\t\tif(annotation.descriptionVisible){\n\t\t\t\tzIndex += 10000000;\n\t\t\t}\n\t\t\telement.css(\"z-index\", parseInt(zIndex));\n\n\t\t\tif(annotation.children.length > 0){\n\t\t\t\tlet expand = screenSize > annotation.collapseThreshold || annotation.boundingBox.containsPoint(this.scene.getActiveCamera().position);\n\t\t\t\tannotation.expand = expand;\n\n\t\t\t\tif (!expand) {\n\t\t\t\t\t//annotation.display = (screenPos.z >= -1 && screenPos.z <= 1);\n\t\t\t\t\tlet inFrustum = (screenPos.z >= -1 && screenPos.z <= 1);\n\t\t\t\t\tif(inFrustum){\n\t\t\t\t\t\tvisibleNow.push(annotation);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn expand;\n\t\t\t} else {\n\t\t\t\t//annotation.display = (screenPos.z >= -1 && screenPos.z <= 1);\n\t\t\t\tlet inFrustum = (screenPos.z >= -1 && screenPos.z <= 1);\n\t\t\t\tif(inFrustum){\n\t\t\t\t\tvisibleNow.push(annotation);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t});\n\n\t\tlet notVisibleAnymore = new Set(this.visibleAnnotations);\n\t\tfor(let annotation of visibleNow){\n\t\t\tannotation.display = true;\n\t\t\t\n\t\t\tnotVisibleAnymore.delete(annotation);\n\t\t}\n\t\tthis.visibleAnnotations = visibleNow;\n\n\t\tfor(let annotation of notVisibleAnymore){\n\t\t\tannotation.display = false;\n\t\t}\n\n\t}\n\n\tupdateMaterialDefaults(pointcloud){\n\t\t// PROBLEM STATEMENT:\n\t\t// * [min, max] of intensity, source id, etc. are computed as point clouds are loaded\n\t\t// * the point cloud material won't know the range it should use until some data is loaded\n\t\t// * users can modify the range at runtime, but sensible default ranges should be \n\t\t// applied even if no GUI is present\n\t\t// * display ranges shouldn't suddenly change even if the actual range changes over time.\n\t\t// e.g. the root node has intensity range [1, 478]. One of the descendants increases range to \n\t\t// [0, 2047]. We should not automatically change to the new range because that would result\n\t\t// in sudden and drastic changes of brightness. We should adjust the min/max of the sidebar slider.\n\n\t\tconst material = pointcloud.material;\n\n\t\t// const attIntensity = pointcloud.getAttribute(\"intensity\");\n\t\t// if(attIntensity && material.intensityRange[0] === Infinity){\n\t\t// \tmaterial.intensityRange = [...attIntensity.range];\n\t\t// }\n\n\t\t// let attributes = pointcloud.getAttributes();\n\n\t\t// for(let attribute of attributes.attributes){\n\t\t// \tif(attribute.range){\n\t\t// \t\tlet range = [...attribute.range];\n\t\t// \t\tmaterial.computedRange.set(attribute.name, range);\n\t\t// \t\t//material.setRange(attribute.name, range);\n\t\t// \t}\n\t\t// }\n\n\n\t}\n\n\tupdate(delta, timestamp){\n\n\t\tif(Potree.measureTimings) performance.mark(\"update-start\");\n\n\t\t\n\t\tconst scene = this.scene;\n\t\tconst camera = scene.getActiveCamera();\n\t\tconst visiblePointClouds = this.scene.pointclouds.filter(pc => pc.visible)\n\t\t\n\t\tPotree.pointLoadLimit = Potree.pointBudget * 2;\n\n\t\tconst lTarget = camera.position.clone().add(camera.getWorldDirection(new THREE.Vector3()).multiplyScalar(1000));\n\t\tthis.scene.directionalLight.position.copy(camera.position);\n\t\tthis.scene.directionalLight.lookAt(lTarget);\n\n\n\t\tfor (let pointcloud of visiblePointClouds) {\n\n\t\t\tpointcloud.showBoundingBox = this.showBoundingBox;\n\t\t\tpointcloud.generateDEM = this.generateDEM;\n\t\t\tpointcloud.minimumNodePixelSize = this.minNodeSize;\n\n\t\t\tlet material = pointcloud.material;\n\n\t\t\tmaterial.uniforms.uFilterReturnNumberRange.value = this.filterReturnNumberRange;\n\t\t\tmaterial.uniforms.uFilterNumberOfReturnsRange.value = this.filterNumberOfReturnsRange;\n\t\t\tmaterial.uniforms.uFilterGPSTimeClipRange.value = this.filterGPSTimeRange;\n\t\t\tmaterial.uniforms.uFilterPointSourceIDClipRange.value = this.filterPointSourceIDRange;\n\n\t\t\tmaterial.classification = this.classifications;\n\t\t\tmaterial.recomputeClassification();\n\n\t\t\tthis.updateMaterialDefaults(pointcloud);\n\t\t}\n\n\t\t{\n\t\t\tif(this.showBoundingBox){\n\t\t\t\tlet bbRoot = this.scene.scene.getObjectByName(\"potree_bounding_box_root\");\n\t\t\t\tif(!bbRoot){\n\t\t\t\t\tlet node = new THREE.Object3D();\n\t\t\t\t\tnode.name = \"potree_bounding_box_root\";\n\t\t\t\t\tthis.scene.scene.add(node);\n\t\t\t\t\tbbRoot = node;\n\t\t\t\t}\n\n\t\t\t\tlet visibleBoxes = [];\n\t\t\t\tfor(let pointcloud of this.scene.pointclouds){\n\t\t\t\t\tfor(let node of pointcloud.visibleNodes.filter(vn => vn.boundingBoxNode !== undefined)){\n\t\t\t\t\t\tlet box = node.boundingBoxNode;\n\t\t\t\t\t\tvisibleBoxes.push(box);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbbRoot.children = visibleBoxes;\n\t\t\t}\n\t\t}\n\n\t\tif (!this.freeze) {\n\t\t\tlet result = Potree.updatePointClouds(scene.pointclouds, camera, this.renderer);\n\n\n\t\t\t// DEBUG - ONLY DISPLAY NODES THAT INTERSECT MOUSE\n\t\t\t//if(false){ \n\n\t\t\t//\tlet renderer = viewer.renderer;\n\t\t\t//\tlet mouse = viewer.inputHandler.mouse;\n\n\t\t\t//\tlet nmouse = {\n\t\t\t//\t\tx: (mouse.x / renderer.domElement.clientWidth) * 2 - 1,\n\t\t\t//\t\ty: -(mouse.y / renderer.domElement.clientHeight) * 2 + 1\n\t\t\t//\t};\n\n\t\t\t//\tlet pickParams = {};\n\n\t\t\t//\t//if(params.pickClipped){\n\t\t\t//\t//\tpickParams.pickClipped = params.pickClipped;\n\t\t\t//\t//}\n\n\t\t\t//\tpickParams.x = mouse.x;\n\t\t\t//\tpickParams.y = renderer.domElement.clientHeight - mouse.y;\n\n\t\t\t//\tlet raycaster = new THREE.Raycaster();\n\t\t\t//\traycaster.setFromCamera(nmouse, camera);\n\t\t\t//\tlet ray = raycaster.ray;\n\n\t\t\t//\tfor(let pointcloud of scene.pointclouds){\n\t\t\t//\t\tlet nodes = pointcloud.nodesOnRay(pointcloud.visibleNodes, ray);\n\t\t\t//\t\tpointcloud.visibleNodes = nodes;\n\n\t\t\t//\t}\n\t\t\t//}\n\n\t\t\t// const tStart = performance.now();\n\t\t\t// const worldPos = new THREE.Vector3();\n\t\t\t// const camPos = viewer.scene.getActiveCamera().getWorldPosition(new THREE.Vector3());\n\t\t\t// let lowestDistance = Infinity;\n\t\t\t// let numNodes = 0;\n\n\t\t\t// viewer.scene.scene.traverse(node => {\n\t\t\t// \tnode.getWorldPosition(worldPos);\n\n\t\t\t// \tconst distance = worldPos.distanceTo(camPos);\n\n\t\t\t// \tlowestDistance = Math.min(lowestDistance, distance);\n\n\t\t\t// \tnumNodes++;\n\n\t\t\t// \tif(Number.isNaN(distance)){\n\t\t\t// \t\tconsole.error(\":(\");\n\t\t\t// \t}\n\t\t\t// });\n\t\t\t// const duration = (performance.now() - tStart).toFixed(2);\n\n\t\t\t// Potree.debug.computeNearDuration = duration;\n\t\t\t// Potree.debug.numNodes = numNodes;\n\n\t\t\t//console.log(lowestDistance.toString(2), duration);\n\n\t\t\tconst tStart = performance.now();\n\t\t\tconst campos = camera.position;\n\t\t\tlet closestImage = Infinity;\n\t\t\tfor(const images of this.scene.orientedImages){\n\t\t\t\tfor(const image of images.images){\n\t\t\t\t\tconst distance = image.mesh.position.distanceTo(campos);\n\n\t\t\t\t\tclosestImage = Math.min(closestImage, distance);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst tEnd = performance.now();\n\n\t\t\tif(result.lowestSpacing !== Infinity){\n\t\t\t\tlet near = result.lowestSpacing * 10.0;\n\t\t\t\tlet far = -this.getBoundingBox().applyMatrix4(camera.matrixWorldInverse).min.z;\n\n\t\t\t\tfar = Math.max(far * 1.5, 10000);\n\t\t\t\tnear = Math.min(100.0, Math.max(0.01, near));\n\t\t\t\tnear = Math.min(near, closestImage);\n\t\t\t\tfar = Math.max(far, near + 10000);\n\n\t\t\t\tif(near === Infinity){\n\t\t\t\t\tnear = 0.1;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcamera.near = near;\n\t\t\t\tcamera.far = far;\n\t\t\t}else{\n\t\t\t\t// don't change near and far in this case\n\t\t\t}\n\n\t\t\tif(this.scene.cameraMode == CameraMode.ORTHOGRAPHIC) {\n\t\t\t\tcamera.near = -camera.far;\n\t\t\t}\n\t\t} \n\t\t\n\t\tthis.scene.cameraP.fov = this.fov;\n\t\t\n\t\tif (this.getControls() === this.deviceControls) {\n\t\t\tthis.controls.setScene(scene);\n\t\t\tthis.controls.update(delta);\n\n\t\t\tthis.scene.cameraP.position.copy(scene.view.position);\n\t\t\tthis.scene.cameraO.position.copy(scene.view.position);\n\t\t} else if (this.controls !== null) {\n\t\t\tthis.controls.setScene(scene);\n\t\t\tthis.controls.update(delta);\n\n\t\t\tif(typeof debugDisabled === \"undefined\" ){\n\t\t\t\tthis.scene.cameraP.position.copy(scene.view.position);\n\t\t\t\tthis.scene.cameraP.rotation.order = \"ZXY\";\n\t\t\t\tthis.scene.cameraP.rotation.x = Math.PI / 2 + this.scene.view.pitch;\n\t\t\t\tthis.scene.cameraP.rotation.z = this.scene.view.yaw;\n\t\t\t}\n\n\t\t\tthis.scene.cameraO.position.copy(scene.view.position);\n\t\t\tthis.scene.cameraO.rotation.order = \"ZXY\";\n\t\t\tthis.scene.cameraO.rotation.x = Math.PI / 2 + this.scene.view.pitch;\n\t\t\tthis.scene.cameraO.rotation.z = this.scene.view.yaw;\n\t\t}\n\t\t\n\t\tcamera.updateMatrix();\n\t\tcamera.updateMatrixWorld();\n\t\tcamera.matrixWorldInverse.getInverse(camera.matrixWorld);\n\n\t\t{\n\t\t\tif(this._previousCamera === undefined){\n\t\t\t\tthis._previousCamera = this.scene.getActiveCamera().clone();\n\t\t\t\tthis._previousCamera.rotation.copy(this.scene.getActiveCamera());\n\t\t\t}\n\n\t\t\tif(!this._previousCamera.matrixWorld.equals(camera.matrixWorld)){\n\t\t\t\tthis.dispatchEvent({\n\t\t\t\t\ttype: \"camera_changed\",\n\t\t\t\t\tprevious: this._previousCamera,\n\t\t\t\t\tcamera: camera\n\t\t\t\t});\n\t\t\t}else if(!this._previousCamera.projectionMatrix.equals(camera.projectionMatrix)){\n\t\t\t\tthis.dispatchEvent({\n\t\t\t\t\ttype: \"camera_changed\",\n\t\t\t\t\tprevious: this._previousCamera,\n\t\t\t\t\tcamera: camera\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis._previousCamera = this.scene.getActiveCamera().clone();\n\t\t\tthis._previousCamera.rotation.copy(this.scene.getActiveCamera());\n\n\t\t}\n\n\t\t{ // update clip boxes\n\t\t\tlet boxes = [];\n\t\t\t\n\t\t\t// volumes with clipping enabled\n\t\t\t//boxes.push(...this.scene.volumes.filter(v => (v.clip)));\n\t\t\tboxes.push(...this.scene.volumes.filter(v => (v.clip && v instanceof BoxVolume)));\n\n\t\t\t// profile segments\n\t\t\tfor(let profile of this.scene.profiles){\n\t\t\t\tboxes.push(...profile.boxes);\n\t\t\t}\n\t\t\t\n\t\t\t// Needed for .getInverse(), pre-empt a determinant of 0, see #815 / #816\n\t\t\tlet degenerate = (box) => box.matrixWorld.determinant() !== 0;\n\t\t\t\n\t\t\tlet clipBoxes = boxes.filter(degenerate).map( box => {\n\t\t\t\tbox.updateMatrixWorld();\n\t\t\t\t\n\t\t\t\tlet boxInverse = new THREE.Matrix4().getInverse(box.matrixWorld);\n\t\t\t\tlet boxPosition = box.getWorldPosition(new THREE.Vector3());\n\n\t\t\t\treturn {box: box, inverse: boxInverse, position: boxPosition};\n\t\t\t});\n\n\t\t\tlet clipPolygons = this.scene.polygonClipVolumes.filter(vol => vol.initialized);\n\t\t\t\n\t\t\t// set clip volumes in material\n\t\t\tfor(let pointcloud of visiblePointClouds){\n\t\t\t\tpointcloud.material.setClipBoxes(clipBoxes);\n\t\t\t\tpointcloud.material.setClipPolygons(clipPolygons, this.clippingTool.maxPolygonVertices);\n\t\t\t\tpointcloud.material.clipTask = this.clipTask;\n\t\t\t\tpointcloud.material.clipMethod = this.clipMethod;\n\t\t\t}\n\t\t}\n\n\t\t{\n\t\t\tfor(let pointcloud of visiblePointClouds){\n\t\t\t\tpointcloud.material.elevationGradientRepeat = this.elevationGradientRepeat;\n\t\t\t}\n\t\t}\n\t\t\n\t\t{ // update navigation cube\n\t\t\tthis.navigationCube.update(camera.rotation);\n\t\t}\n\n\t\tthis.updateAnnotations();\n\t\t\n\t\tif(this.mapView){\n\t\t\tthis.mapView.update(delta);\n\t\t\tif(this.mapView.sceneProjection){\n\t\t\t\t$( \"#potree_map_toggle\" ).css(\"display\", \"block\");\n\t\t\t\t\n\t\t\t}\n\t\t}\n\n\t\tTWEEN.update(timestamp);\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'update',\n\t\t\tdelta: delta,\n\t\t\ttimestamp: timestamp});\n\t\t\t\n\t\tif(Potree.measureTimings) {\n\t\t\tperformance.mark(\"update-end\");\n\t\t\tperformance.measure(\"update\", \"update-start\", \"update-end\");\n\t\t}\n\t}\n\t\n\trender(){\n\t\tif(Potree.measureTimings) performance.mark(\"render-start\");\n\n\t\ttry{\n\n\t\t\tlet pRenderer = null;\n\n\t\t\tif(this.useHQ){\n\t\t\t\tif (!this.hqRenderer) {\n\t\t\t\t\tthis.hqRenderer = new HQSplatRenderer(this);\n\t\t\t\t}\n\t\t\t\tthis.hqRenderer.useEDL = this.useEDL;\n\t\t\t\t//this.hqRenderer.render(this.renderer);\n\n\t\t\t\tpRenderer = this.hqRenderer;\n\t\t\t}else{\n\t\t\t\tif (this.useEDL && Features.SHADER_EDL.isSupported()) {\n\t\t\t\t\tif (!this.edlRenderer) {\n\t\t\t\t\t\tthis.edlRenderer = new EDLRenderer(this);\n\t\t\t\t\t}\n\t\t\t\t\t//this.edlRenderer.render(this.renderer);\n\t\t\t\t\tpRenderer = this.edlRenderer;\n\t\t\t\t} else {\n\t\t\t\t\tif (!this.potreeRenderer) {\n\t\t\t\t\t\tthis.potreeRenderer = new PotreeRenderer(this);\n\t\t\t\t\t}\n\t\t\t\t\t//this.potreeRenderer.render();\n\t\t\t\t\tpRenderer = this.potreeRenderer;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tconst vr = this.vr;\n\t\t\tconst vrActive = (vr && vr.display.isPresenting);\n\n\t\t\tif(vrActive){\n\n\t\t\t\tconst {display, frameData} = vr;\n\n\t\t\t\tconst leftEye = display.getEyeParameters(\"left\");\n\t\t\t\tconst rightEye = display.getEyeParameters(\"right\");\n\n\t\t\t\tlet width = Math.max(leftEye.renderWidth, rightEye.renderWidth) * 2;\n\t\t\t\tlet height = Math.max(leftEye.renderHeight, rightEye.renderHeight);\n\n\t\t\t\t// width *= 0.5;\n\t\t\t\t// height *= 0.5;\n\n\t\t\t\tthis.renderer.setSize(width, height);\n\n\t\t\t\tpRenderer.clear();\n\n\t\t\t\t//const camera = new THREE.Camera();\n\t\t\t\tviewer.scene.cameraMode = CameraMode.VR;\n\t\t\t\tconst camera = viewer.scene.getActiveCamera();\n\t\t\t\t{\n\t\t\t\t\tcamera.near = display.depthNear;\n\t\t\t\t\tcamera.far = display.depthFar;\n\t\t\t\t\tcamera.projectionMatrix = new THREE.Matrix4();\n\t\t\t\t\tcamera.matrixWorldInverse = new THREE.Matrix4();\n\t\t\t\t\tcamera.matrixWorld = new THREE.Matrix4();\n\t\t\t\t\tcamera.updateProjectionMatrix = () => {};\n\t\t\t\t\tcamera.updateMatrixWorld = () => {};\n\t\t\t\t\tcamera.fov = 60;\n\t\t\t\t};\n\n\t\t\t\tconst flipWorld = new THREE.Matrix4().fromArray([\n\t\t\t\t\t1, 0, 0, 0, \n\t\t\t\t\t0, 0, 1, 0, \n\t\t\t\t\t0, -1, 0, 0,\n\t\t\t\t\t0, 0, 0, 1\n\t\t\t\t]);\n\t\t\t\tconst flipView = new THREE.Matrix4().getInverse(flipWorld);\n\n\t\t\t\tvr.node.updateMatrixWorld();\n\n\t\t\t\t{// LEFT\n\t\t\t\t\tcamera.projectionMatrix.fromArray(frameData.leftProjectionMatrix);\n\n\t\t\t\t\tconst leftView = new THREE.Matrix4().fromArray(frameData.leftViewMatrix);\n\t\t\t\t\tconst view = new THREE.Matrix4().multiplyMatrices(leftView, flipView);\n\t\t\t\t\tconst world = new THREE.Matrix4().getInverse(view);\n\n\t\t\t\t\t{\n\t\t\t\t\t\tconst tmp = new THREE.Matrix4().multiplyMatrices(vr.node.matrixWorld, world);\n\t\t\t\t\t\tworld.copy(tmp);\n\t\t\t\t\t\tview.getInverse(world);\n\t\t\t\t\t}\n\n\t\t\t\t\tcamera.matrixWorldInverse.copy(view);\n\t\t\t\t\tcamera.matrixWorld.copy(world);\n\n\t\t\t\t\tconst viewport = [0, 0, width / 2, height];\n\n\t\t\t\t\tthis.renderer.setViewport(...viewport);\n\t\t\t\t\tpRenderer.render({camera: camera, viewport: viewport});\n\t\t\t\t\t//this.renderer.render(this.overlay, this.overlayCamera);\n\t\t\t\t}\n\n\t\t\t\t{// RIGHT\n\t\t\t\t\n\t\t\t\t\tcamera.projectionMatrix.fromArray(frameData.rightProjectionMatrix);\n\n\t\t\t\t\tconst rightView = new THREE.Matrix4().fromArray(frameData.rightViewMatrix);\n\t\t\t\t\tconst view = new THREE.Matrix4().multiplyMatrices(rightView, flipView);\n\t\t\t\t\tconst world = new THREE.Matrix4().getInverse(view);\n\n\t\t\t\t\t{\n\t\t\t\t\t\tconst tmp = new THREE.Matrix4().multiplyMatrices(vr.node.matrixWorld, world);\n\t\t\t\t\t\tworld.copy(tmp);\n\t\t\t\t\t\tview.getInverse(world);\n\t\t\t\t\t}\n\n\t\t\t\t\tcamera.matrixWorldInverse.copy(view);\n\t\t\t\t\tcamera.matrixWorld.copy(world);\n\n\t\t\t\t\tconst viewport = [width / 2, 0, width / 2, height];\n\n\t\t\t\t\tthis.renderer.setViewport(...viewport);\n\t\t\t\t\tpRenderer.clearTargets();\n\t\t\t\t\tpRenderer.render({camera: camera, viewport: viewport, debug: 2});\n\t\t\t\t\t//this.renderer.render(this.overlay, this.overlayCamera);\n\t\t\t\t}\n\n\t\t\t\t{ // CENTER\n\n\t\t\t\t\t{ // central view matrix\n\t\t\t\t\t\t// TODO this can't be right...can it?\n\n\t\t\t\t\t\tconst left = frameData.leftViewMatrix;\n\t\t\t\t\t\tconst right = frameData.rightViewMatrix\n\n\t\t\t\t\t\tconst centerView = new THREE.Matrix4();\n\n\t\t\t\t\t\tfor(let i = 0; i < centerView.elements.length; i++){\n\t\t\t\t\t\t\tcenterView.elements[i] = (left[i] + right[i]) / 2;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst view = new THREE.Matrix4().multiplyMatrices(centerView, flipView);\n\t\t\t\t\t\tconst world = new THREE.Matrix4().getInverse(view);\n\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconst tmp = new THREE.Matrix4().multiplyMatrices(vr.node.matrixWorld, world);\n\t\t\t\t\t\t\tworld.copy(tmp);\n\t\t\t\t\t\t\tview.getInverse(world);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcamera.matrixWorldInverse.copy(view);\n\t\t\t\t\t\tcamera.matrixWorld.copy(world);\n\t\t\t\t\t}\n\n\n\t\t\t\t\tcamera.fov = leftEye.fieldOfView.upDegrees;\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\t{ // resize\n\t\t\t\t\tconst width = this.scaleFactor * this.renderArea.clientWidth;\n\t\t\t\t\tconst height = this.scaleFactor * this.renderArea.clientHeight;\n\n\t\t\t\t\tthis.renderer.setSize(width, height);\n\t\t\t\t\tconst pixelRatio = this.renderer.getPixelRatio();\n\t\t\t\t\tconst aspect = width / height;\n\n\t\t\t\t\tconst scene = this.scene;\n\n\t\t\t\t\tscene.cameraP.aspect = aspect;\n\t\t\t\t\tscene.cameraP.updateProjectionMatrix();\n\n\t\t\t\t\tlet frustumScale = this.scene.view.radius;\n\t\t\t\t\tscene.cameraO.left = -frustumScale;\n\t\t\t\t\tscene.cameraO.right = frustumScale;\n\t\t\t\t\tscene.cameraO.top = frustumScale * 1 / aspect;\n\t\t\t\t\tscene.cameraO.bottom = -frustumScale * 1 / aspect;\n\t\t\t\t\tscene.cameraO.updateProjectionMatrix();\n\n\t\t\t\t\tscene.cameraScreenSpace.top = 1/aspect;\n\t\t\t\t\tscene.cameraScreenSpace.bottom = -1/aspect;\n\t\t\t\t\tscene.cameraScreenSpace.updateProjectionMatrix();\n\t\t\t\t}\n\n\t\t\t\tpRenderer.clear();\n\n\t\t\t\tpRenderer.render(this.renderer);\n\t\t\t\tthis.renderer.render(this.overlay, this.overlayCamera);\n\t\t\t}\n\n\t\t}catch(e){\n\t\t\tthis.onCrash(e);\n\t\t}\n\t\t\n\t\tif(Potree.measureTimings){\n\t\t\tperformance.mark(\"render-end\");\n\t\t\tperformance.measure(\"render\", \"render-start\", \"render-end\");\n\t\t}\n\t}\n\n\tresolveTimings(timestamp){\n\t\tif(Potree.measureTimings){\n\t\t\tif(!this.toggle){\n\t\t\t\tthis.toggle = timestamp;\n\t\t\t}\n\t\t\tlet duration = timestamp - this.toggle;\n\t\t\tif(duration > 1000.0){\n\t\t\t\n\t\t\t\tlet measures = performance.getEntriesByType(\"measure\");\n\t\t\t\t\n\t\t\t\tlet names = new Set();\n\t\t\t\tfor(let measure of measures){\n\t\t\t\t\tnames.add(measure.name);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tlet groups = new Map();\n\t\t\t\tfor(let name of names){\n\t\t\t\t\tgroups.set(name, {\n\t\t\t\t\t\tmeasures: [],\n\t\t\t\t\t\tsum: 0,\n\t\t\t\t\t\tn: 0,\n\t\t\t\t\t\tmin: Infinity,\n\t\t\t\t\t\tmax: -Infinity\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor(let measure of measures){\n\t\t\t\t\tlet group = groups.get(measure.name);\n\t\t\t\t\tgroup.measures.push(measure);\n\t\t\t\t\tgroup.sum += measure.duration;\n\t\t\t\t\tgroup.n++;\n\t\t\t\t\tgroup.min = Math.min(group.min, measure.duration);\n\t\t\t\t\tgroup.max = Math.max(group.max, measure.duration);\n\t\t\t\t}\n\n\t\t\t\tlet glQueries = Potree.resolveQueries(this.renderer.getContext());\n\t\t\t\tfor(let [key, value] of glQueries){\n\n\t\t\t\t\tlet group = {\n\t\t\t\t\t\tmeasures: value.map(v => {return {duration: v}}),\n\t\t\t\t\t\tsum: value.reduce( (a, i) => a + i, 0),\n\t\t\t\t\t\tn: value.length,\n\t\t\t\t\t\tmin: Math.min(...value),\n\t\t\t\t\t\tmax: Math.max(...value)\n\t\t\t\t\t};\n\n\t\t\t\t\tlet groupname = `[tq] ${key}`;\n\t\t\t\t\tgroups.set(groupname, group);\n\t\t\t\t\tnames.add(groupname);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor(let [name, group] of groups){\n\t\t\t\t\tgroup.mean = group.sum / group.n;\n\t\t\t\t\tgroup.measures.sort( (a, b) => a.duration - b.duration );\n\t\t\t\t\t\n\t\t\t\t\tif(group.n === 1){\n\t\t\t\t\t\tgroup.median = group.measures[0].duration;\n\t\t\t\t\t}else if(group.n > 1){\n\t\t\t\t\t\tgroup.median = group.measures[parseInt(group.n / 2)].duration;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tlet cn = Array.from(names).reduce( (a, i) => Math.max(a, i.length), 0) + 5;\n\t\t\t\tlet cmin = 10;\n\t\t\t\tlet cmed = 10;\n\t\t\t\tlet cmax = 10;\n\t\t\t\tlet csam = 6;\n\t\t\t\t\n\t\t\t\tlet message = ` ${\"NAME\".padEnd(cn)} |` \n\t\t\t\t\t+ ` ${\"MIN\".padStart(cmin)} |`\n\t\t\t\t\t+ ` ${\"MEDIAN\".padStart(cmed)} |`\n\t\t\t\t\t+ ` ${\"MAX\".padStart(cmax)} |`\n\t\t\t\t\t+ ` ${\"SAMPLES\".padStart(csam)} \\n`;\n\t\t\t\tmessage += ` ${\"-\".repeat(message.length) }\\n`;\n\t\t\t\t\n\t\t\t\tnames = Array.from(names).sort();\n\t\t\t\tfor(let name of names){\n\t\t\t\t\tlet group = groups.get(name);\n\t\t\t\t\tlet min = group.min.toFixed(3);\n\t\t\t\t\tlet median = group.median.toFixed(3);\n\t\t\t\t\tlet max = group.max.toFixed(3);\n\t\t\t\t\tlet n = group.n;\n\t\t\t\t\t\n\t\t\t\t\tmessage += ` ${name.padEnd(cn)} |`\n\t\t\t\t\t\t+ ` ${min.padStart(cmin)} |`\n\t\t\t\t\t\t+ ` ${median.padStart(cmed)} |`\n\t\t\t\t\t\t+ ` ${max.padStart(cmax)} |`\n\t\t\t\t\t\t+ ` ${n.toString().padStart(csam)}\\n`;\n\t\t\t\t}\n\t\t\t\tmessage += `\\n`;\n\t\t\t\tconsole.log(message);\n\t\t\t\t\n\t\t\t\tperformance.clearMarks();\n\t\t\t\tperformance.clearMeasures();\n\t\t\t\tthis.toggle = timestamp;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync toggleVR(){\n\t\tconst vrActive = (this.vr && this.vr.display.isPresenting);\n\n\t\tif(vrActive){\n\t\t\tthis.stopVR();\n\t\t}else{\n\t\t\tthis.startVR();\n\t\t}\n\t}\n\n\tasync startVR(){\n\n\t\tif(this.vr === null){\n\t\t\treturn;\n\t\t}\n\n\t\tlet canvas = this.renderer.domElement;\n\t\tlet display = this.vr.display;\n\n\t\ttry{\n\t\t\tawait display.requestPresent([{ source: canvas }]);\n\t\t}catch(e){\n\t\t\tconsole.error(e);\n\t\t\tthis.postError(\"requestPresent failed\");\n\t\t\treturn;\n\t\t}\n\n\t\t//window.addEventListener('vrdisplaypresentchange', onVRPresentChange, false);\n\t\t//window.addEventListener('vrdisplayactivate', onVRRequestPresent, false);\n\t\t//window.addEventListener('vrdisplaydeactivate', onVRExitPresent, false);\n\n\t}\n\n\tasync stopVR(){\n\t\t// TODO shutdown VR\n\t}\n\n\tloop(timestamp){\n\n\t\tif(this.stats){\n\t\t\tthis.stats.begin();\n\t\t}\n\n\t\tlet queryAll;\n\t\tif(Potree.measureTimings){\n\t\t\tperformance.mark(\"loop-start\");\n\t\t}\n\n\n\t\tconst vrActive = (this.vr && this.vr.display.isPresenting);\n\n\t\tif(vrActive){\n\t\t\tconst {display, frameData} = this.vr;\n\n\t\t\tdisplay.requestAnimationFrame(this.loop.bind(this));\n\n\t\t\tdisplay.getFrameData(frameData);\n\n\t\t\tthis.update(this.clock.getDelta(), timestamp);\n\n\t\t\tthis.render();\n\n\t\t\tthis.vr.display.submitFrame();\n\t\t}else{\n\t\t\trequestAnimationFrame(this.loop.bind(this));\n\n\t\t\tthis.update(this.clock.getDelta(), timestamp);\n\n\t\t\tthis.render();\n\t\t}\n\n\n\t\tif(Potree.measureTimings){\n\t\t\tperformance.mark(\"loop-end\");\n\t\t\tperformance.measure(\"loop\", \"loop-start\", \"loop-end\");\n\t\t}\n\t\t\n\t\tthis.resolveTimings(timestamp);\n\n\t\tPotree.framenumber++;\n\n\t\tif(this.stats){\n\t\t\tthis.stats.end();\n\t\t}\n\t}\n\n\tpostError(content, params = {}){\n\t\tlet message = this.postMessage(content, params);\n\n\t\tmessage.element.addClass(\"potree_message_error\");\n\n\t\treturn message;\n\t}\n\n\tpostMessage(content, params = {}){\n\t\tlet message = new Message(content);\n\n\t\tlet animationDuration = 100;\n\n\t\tmessage.element.css(\"display\", \"none\");\n\t\tmessage.elClose.click( () => {\n\t\t\tmessage.element.slideToggle(animationDuration);\n\n\t\t\tlet index = this.messages.indexOf(message);\n\t\t\tif(index >= 0){\n\t\t\t\tthis.messages.splice(index, 1);\n\t\t\t}\n\t\t});\n\n\t\tthis.elMessages.prepend(message.element);\n\n\t\tmessage.element.slideToggle(animationDuration);\n\n\t\tthis.messages.push(message);\n\n\t\tif(params.duration !== undefined){\n\t\t\tlet fadeDuration = 500;\n\t\t\tlet slideOutDuration = 200;\n\t\t\tsetTimeout(() => {\n\t\t\t\tmessage.element.animate({\n\t\t\t\t\topacity: 0\t\n\t\t\t\t}, fadeDuration);\n\t\t\t\tmessage.element.slideToggle(slideOutDuration);\n\t\t\t}, params.duration)\n\t\t}\n\n\t\treturn message;\n\t}\n};\n","export class VRControlls{\r\n\r\n\tconstructor(viewer){\r\n\r\n\t\tthis.viewer = viewer;\r\n\r\n\t\tthis.previousPads = [];\r\n\r\n\t\tthis.selection = [];\r\n\r\n\t\tthis.triggerStarts = [];\r\n\r\n\t\tthis.scaleState = null;\r\n\r\n\t\tthis.selectionBox = this.createBox();\r\n\t\tthis.viewer.scene.scene.add(this.selectionBox);\r\n\r\n\t\tthis.speed = 1;\r\n\t\tthis.speedModificationFactor = 50;\r\n\r\n\t\tthis.snLeft = this.createControllerModel();\r\n\t\tthis.snRight = this.createControllerModel();\r\n\t\t\r\n\t\tthis.viewer.scene.scene.add(this.snLeft.node);\r\n\t\tthis.viewer.scene.scene.add(this.snRight.node);\r\n\t\t//this.viewer.scene.scene.add(this.snLeft.debug);\r\n\t\t//this.viewer.scene.scene.add(this.snRight.debug);\r\n\r\n\t}\r\n\r\n\tcreateControllerModel(){\r\n\t\tconst geometry = new THREE.SphereGeometry(1, 32, 32);\r\n\t\tconst material = new THREE.MeshLambertMaterial( { color: 0xff0000, side: THREE.DoubleSide, flatShading: true } );\r\n\t\tconst node = new THREE.Mesh(geometry, material);\r\n\r\n\t\tnode.position.set(0, 0, 0.5);\r\n\t\tnode.scale.set(0.02, 0.02, 0.02);\r\n\t\tnode.visible = false;\r\n\r\n\t\tviewer.scene.scene.add(node);\r\n\r\n\t\tconst debug = new THREE.Mesh(geometry, new THREE.MeshNormalMaterial());\r\n\t\tdebug.position.set(0, 0, 0.5);\r\n\t\tdebug.scale.set(0.01, 0.01, 0.01);\r\n\t\tdebug.visible = false;\r\n\r\n\r\n\t\tconst controller = {\r\n\t\t\tnode: node,\r\n\t\t\tdebug: debug,\r\n\t\t};\r\n\t\t//viewer.scene.scene.add(node);\r\n\r\n\t\treturn controller;\r\n\t}\r\n\r\n\tcreateBox(){\r\n\t\tconst color = 0xffff00;\r\n\r\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\r\n\t\tconst positions = [ \r\n\t\t\t1, 1, 1,\r\n\t\t\t0, 1, 1,\r\n\t\t\t0, 0, 1,\r\n\t\t\t1, 0, 1,\r\n\t\t\t1, 1, 0,\r\n\t\t\t0, 1, 0,\r\n\t\t\t0, 0, 0,\r\n\t\t\t1, 0, 0\r\n\t\t];\r\n\t\tconst geometry = new THREE.BufferGeometry();\r\n\r\n\t\tgeometry.setIndex( new THREE.BufferAttribute( indices, 1 ) );\r\n\t\tgeometry.addAttribute( 'position', new THREE.Float32BufferAttribute( positions, 3 ) );\r\n\r\n\t\tgeometry.computeBoundingSphere();\r\n\r\n\t\tconst mesh = new THREE.LineSegments(geometry, new THREE.LineBasicMaterial( { color: color } ) );\r\n\t\tmesh.visible = false;\r\n\r\n\t\treturn mesh;\r\n\t}\r\n\r\n\tdebugLine(start, end, index, color){\r\n\r\n\t\tif(typeof this.debugLines === \"undefined\"){\r\n\r\n\t\t\tconst geometry = new THREE.SphereGeometry(1, 8, 8);\r\n\r\n\t\t\tthis.debugLines = {\r\n\t\t\t\tgeometry: geometry,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst n = 100;\r\n\r\n\t\tif(!this.debugLines[index]){\r\n\t\t\tconst geometry = this.debugLines.geometry;\r\n\t\t\tconst material = new THREE.MeshBasicMaterial({color: color});\r\n\t\t\tconst nodes = [];\r\n\r\n\t\t\tfor(let i = 0; i <= n; i++){\r\n\t\t\t\tconst u = i / n;\r\n\r\n\t\t\t\tconst node = new THREE.Mesh(geometry, material);\r\n\r\n\t\t\t\tconst position = new THREE.Vector3().addVectors(\r\n\t\t\t\t\tstart.clone().multiplyScalar(1-u),\r\n\t\t\t\t\tend.clone().multiplyScalar(u)\r\n\t\t\t\t);\r\n\r\n\t\t\t\tnode.position.copy(position);\r\n\t\t\t\tnode.scale.set(0.002, 0.002, 0.002);\r\n\t\t\t\tthis.viewer.scene.scene.add(node);\r\n\t\t\t\tnodes.push(node);\r\n\t\t\t}\r\n\r\n\t\t\tconst debugLine = {\r\n\t\t\t\tmaterial: material,\r\n\t\t\t\tnodes: nodes,\r\n\t\t\t};\r\n\r\n\t\t\tthis.debugLines[index] = debugLine;\r\n\t\t}else{\r\n\t\t\tconst debugLine = this.debugLines[index];\r\n\r\n\t\t\tfor(let i = 0; i <= n; i++){\r\n\t\t\t\tconst node = debugLine.nodes[i];\r\n\t\t\t\tconst u = i / n;\r\n\r\n\t\t\t\tconst position = new THREE.Vector3().addVectors(\r\n\t\t\t\t\tstart.clone().multiplyScalar(1-u),\r\n\t\t\t\t\tend.clone().multiplyScalar(u)\r\n\t\t\t\t);\r\n\r\n\t\t\t\tnode.position.copy(position);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t}\r\n\r\n\tgetPointcloudsAt(pointclouds, position){\r\n\r\n\t\tconst I = [];\r\n\t\tfor(const pointcloud of pointclouds){\r\n\t\t\t\r\n\t\t\tconst intersects = pointcloud.intersectsPoint(position);\r\n\r\n\t\t\tif(intersects){\r\n\t\t\t\tI.push(pointcloud);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn I;\r\n\t}\r\n\r\n\tcopyPad(pad){\r\n\t\tconst axes = pad.axes.map(a => a);\r\n\t\tconst buttons = pad.buttons.map(b => {return {pressed: b.pressed}});\r\n\r\n\t\tconst pose = {\r\n\t\t\tposition: new Float32Array(pad.pose.position),\r\n\t\t\torientation: new Float32Array(pad.pose.orientation),\r\n\t\t};\r\n\r\n\t\tconst copy = {\r\n\t\t\taxes: axes,\r\n\t\t\tbuttons: buttons,\r\n\t\t\tpose: pose, \r\n\t\t\thand: pad.hand,\r\n\t\t\tindex: pad.index,\r\n\t\t};\r\n\r\n\t\treturn copy;\r\n\t}\r\n\r\n\tpreviousPad(gamepad){\r\n\t\treturn this.previousPads.find(c => c.index === gamepad.index);\r\n\t}\r\n\r\n\ttoScene(position){\r\n\r\n\t\tconst vr = viewer.vr;\r\n\r\n\t\tvr.node.updateMatrixWorld();\r\n\t\tconst world = vr.node.matrixWorld;\r\n\r\n\t\tconst scenePos = new THREE.Vector3(position.x, -position.z, position.y);\r\n\t\tscenePos.applyMatrix4(world);\r\n\r\n\t\treturn scenePos;\r\n\t}\r\n\r\n\tupdate(delta){\r\n\r\n\t\tconst {selection, viewer, snLeft, snRight} = this;\r\n\t\tconst toScene = this.toScene.bind(this);\r\n\t\tconst vr = viewer.vr;\r\n\r\n\t\tconst vrActive = vr && vr.display.isPresenting;\r\n\r\n\t\tsnLeft.node.visible = vrActive;\r\n\t\tsnRight.node.visible = vrActive;\r\n\r\n\t\tif(!vrActive){\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst pointclouds = viewer.scene.pointclouds;\r\n\r\n\t\tconst gamepads = Array.from(navigator.getGamepads()).filter(p => p !== null).map(this.copyPad);\r\n\r\n\t\tconst getPad = (list, pattern) => list.find(pad => pad.index === pattern.index);\r\n\t\t\r\n\t\tif(this.previousPads.length !== gamepads.length){\r\n\t\t\tthis.previousPads = gamepads;\r\n\t\t}\r\n\r\n\t\tconst left = gamepads.find(gp => gp.hand && gp.hand === \"left\");\r\n\t\tconst right = gamepads.find(gp => gp.hand && gp.hand === \"right\");\r\n\r\n\t\tconst triggered = gamepads.filter(gamepad => {\r\n\t\t\treturn gamepad.buttons[1].pressed;\r\n\t\t});\r\n\r\n\t\tconst justTriggered = triggered.filter(gamepad => {\r\n\t\t\tconst prev = this.previousPad(gamepad);\r\n\t\t\tconst previouslyTriggered = prev.buttons[1].pressed;\r\n\t\t\tconst currentlyTriggered = gamepad.buttons[1].pressed;\r\n\r\n\t\t\treturn !previouslyTriggered && currentlyTriggered;\r\n\t\t});\r\n\r\n\t\tconst justUntriggered = gamepads.filter(gamepad => {\r\n\t\t\tconst prev = this.previousPad(gamepad);\r\n\t\t\tconst previouslyTriggered = prev.buttons[1].pressed;\r\n\t\t\tconst currentlyTriggered = gamepad.buttons[1].pressed;\r\n\r\n\t\t\treturn previouslyTriggered && !currentlyTriggered;\r\n\t\t});\r\n\r\n\t\tif(triggered.length === 0){\r\n\r\n\t\t\tfor(const pad of gamepads){\r\n\t\t\t\tconst position = new THREE.Vector3(...pad.pose.position);\r\n\r\n\t\t\t\tconst I = this.getPointcloudsAt(pointclouds, position);\r\n\r\n\t\t\t\tlet controler = {\r\n\t\t\t\t\t\"left\": snLeft,\r\n\t\t\t\t\t\"right\": snRight,\r\n\t\t\t\t}[pad.hand];\r\n\r\n\t\t\t\tif(I.length > 0){\r\n\t\t\t\t\tcontroler.node.material.color.setRGB(0, 1, 0);\r\n\t\t\t\t\tconsole.log(pad.hand);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcontroler.node.material.color.setRGB(1, 0, 0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(selection.length > 0){\r\n\t\t\t\tconst pointcloud = selection[0];\r\n\t\t\t\tthis.selectionBox.scale.copy(pointcloud.boundingBox.max).multiply(pointcloud.scale);\r\n\t\t\t\tthis.selectionBox.position.copy(pointcloud.position);\r\n\t\t\t\tthis.selectionBox.rotation.copy(pointcloud.rotation);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(justTriggered.length > 0){\r\n\r\n\t\t\tconst pad = justTriggered[0];\r\n\t\t\tconst position = toScene(new THREE.Vector3(...pad.pose.position));\r\n\t\t\tconst I = this.getPointcloudsAt(pointclouds, position);\r\n\r\n\t\t\tconst pcs = I.map(p => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tnode: p,\r\n\t\t\t\t\tposition: p.position.clone(),\r\n\t\t\t\t\trotation: p.rotation.clone(),\r\n\t\t\t\t\tscale: p.scale.clone(),\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tconst event = {\r\n\t\t\t\tpad: pad,\r\n\t\t\t\tpointclouds: pcs,\r\n\t\t\t};\r\n\r\n\t\t\tthis.triggerStarts.push(event);\r\n\t\t}\r\n\r\n\t\tif(justUntriggered.length > 0){\r\n\t\t\tfor(let untriggeredPad of justUntriggered){\r\n\t\t\t\tconst p = getPad(this.triggerStarts.map(t => t.pad), untriggeredPad);\r\n\t\t\t\tthis.triggerStarts = this.triggerStarts.filter(e => e.pad !== p);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(triggered.length === 0){\r\n\t\t\tselection.length = 0;\r\n\t\t\tthis.triggerStarts = [];\r\n\t\t}\r\n\r\n\t\tif(justTriggered.length === 1 && triggered.length === 1){\r\n\t\t\t// one controller was triggered this frame\r\n\t\t\tconst pad = justTriggered[0];\r\n\t\t\tconst position = toScene(new THREE.Vector3(...pad.pose.position));\r\n\t\t\tconst I = this.getPointcloudsAt(pointclouds, position);\r\n\t\t\t\r\n\t\t\tif(I.length > 0){\r\n\t\t\t\tselection.length = 0;\r\n\t\t\t\tselection.push(I[0]);\r\n\t\t\t}\r\n\t\t}else if(justTriggered.length === 2 && triggered.length === 2){\r\n\t\t\t// two controllers were triggered this frame\r\n\t\t\tconst pad = justTriggered[0];\r\n\t\t\tconst position = toScene(new THREE.Vector3(...pad.pose.position));\r\n\t\t\tconst I = this.getPointcloudsAt(pointclouds, position);\r\n\t\t\t\r\n\t\t\tif(I.length > 0){\r\n\t\t\t\tselection.length = 0;\r\n\t\t\t\tselection.push(I[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(justTriggered.length > 0 && triggered.length === 2){\r\n\t\t\t// START SCALE/ROTATE\r\n\r\n\t\t\tconst pcs = selection.map(p => ({\r\n\t\t\t\tnode: p,\r\n\t\t\t\tposition: p.position.clone(),\r\n\t\t\t\trotation: p.rotation.clone(),\r\n\t\t\t\tscale: p.scale.clone(),\r\n\t\t\t}));\r\n\r\n\t\t\tthis.scaleState = {\r\n\t\t\t\tfirst: triggered[0],\r\n\t\t\t\tsecond: triggered[1],\r\n\t\t\t\tpointclouds: pcs,\r\n\t\t\t};\r\n\t\t}else if(triggered.length < 2){\r\n\t\t\t// STOP SCALE/ROTATE\r\n\t\t\tthis.scaleState = null;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.scaleState){\r\n\t\t\t// SCALE/ROTATE\r\n\r\n\t\t\tconst {first, second, pointclouds} = this.scaleState;\r\n\r\n\t\t\tif(pointclouds.length > 0){\r\n\t\t\t\t\r\n\t\t\t\tconst pointcloud = pointclouds[0];\r\n\t\t\t\t\r\n\t\t\t\tconst p1Start = toScene(new THREE.Vector3(...first.pose.position));\r\n\t\t\t\tconst p2Start = toScene(new THREE.Vector3(...second.pose.position));\r\n\r\n\t\t\t\tconst p1End = toScene(new THREE.Vector3(...getPad(gamepads, first).pose.position));\r\n\t\t\t\tconst p2End = toScene(new THREE.Vector3(...getPad(gamepads, second).pose.position));\r\n\r\n\t\t\t\tconst diffStart = new THREE.Vector3().subVectors(p2Start, p1Start);\r\n\t\t\t\tconst diffEnd = new THREE.Vector3().subVectors(p2End, p1End);\r\n\r\n\t\t\t\t// this.debugLine(p1Start, p2Start, 0, 0xFF0000);\r\n\t\t\t\t// this.debugLine(p1End, p2End, 1, 0x00FF00);\r\n\r\n\t\t\t\t// ROTATION\r\n\t\t\t\tconst diffStartG = new THREE.Vector3(diffStart.x, diffStart.y, 0);\r\n\t\t\t\tconst diffEndG = new THREE.Vector3(diffEnd.x, diffEnd.y, 0);\r\n\t\t\t\tlet sign = Math.sign(diffStartG.clone().cross(diffEndG).z);\r\n\t\t\t\tsign = sign === 0 ? 1 : sign;\r\n\t\t\t\tconst angle = sign * diffStartG.angleTo(diffEndG);\r\n\t\t\t\tconst newAngle = pointcloud.rotation.z + angle;\r\n\t\t\t\t\r\n\t\t\t\t// SCALE\r\n\t\t\t\tconst scale = diffEnd.length() / diffStart.length();\r\n\t\t\t\tconst newScale = pointcloud.scale.clone().multiplyScalar(scale);\r\n\r\n\t\t\t\t// POSITION\r\n\t\t\t\tconst p1ToP = new THREE.Vector3().subVectors(pointcloud.position, p1Start);\r\n\t\t\t\tp1ToP.multiplyScalar(scale);\r\n\t\t\t\tp1ToP.applyAxisAngle(new THREE.Vector3(0, 0, 1), angle);\r\n\t\t\t\tconst newPosition = p1End.clone().add(p1ToP);\r\n\t\t\t\t\r\n\t\t\t\t//this.debugLine(pointcloud.position, newPosition, 0, 0xFF0000);\r\n\r\n\t\t\t\t//console.log(newScale, p1ToP, angle);\r\n\r\n\t\t\t\tpointcloud.node.rotation.z = newAngle;\r\n\t\t\t\tpointcloud.node.scale.copy(newScale);\r\n\t\t\t\tpointcloud.node.position.copy(newPosition);\r\n\r\n\t\t\t\tpointcloud.node.updateMatrix();\r\n\t\t\t\tpointcloud.node.updateMatrixWorld();\r\n\r\n\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\t\r\n\t\tif(triggered.length === 1){\r\n\t\t\t// TRANSLATE POINT CLOUDS\r\n\t\t\tconst pad = triggered[0];\r\n\t\t\tconst prev = this.previousPad(pad);\r\n\r\n\t\t\tconst flipWorld = new THREE.Matrix4().fromArray([\r\n\t\t\t\t\t1, 0, 0, 0, \r\n\t\t\t\t\t0, 0, 1, 0, \r\n\t\t\t\t\t0, -1, 0, 0,\r\n\t\t\t\t\t0, 0, 0, 1\r\n\t\t\t\t]);\r\n\t\t\tconst flipView = new THREE.Matrix4().getInverse(flipWorld);\r\n\r\n\t\t\tconst p1 = new THREE.Vector3(...pad.pose.position).applyMatrix4(flipWorld);\r\n\t\t\tconst p2 = new THREE.Vector3(...prev.pose.position).applyMatrix4(flipWorld);\r\n\r\n\t\t\tp1.applyMatrix4(vr.node.matrixWorld);\r\n\t\t\tp2.applyMatrix4(vr.node.matrixWorld);\r\n\r\n\t\t\tconst diff = new THREE.Vector3().subVectors(p1, p2);\r\n\r\n\t\t\t//const diff = toScene(new THREE.Vector3(\r\n\t\t\t//\tpad.pose.position[0] - prev.pose.position[0],\r\n\t\t\t//\tpad.pose.position[1] - prev.pose.position[1],\r\n\t\t\t//\tpad.pose.position[2] - prev.pose.position[2],\r\n\t\t\t//));\r\n\r\n\t\t\tfor(const pc of selection){\r\n\t\t\t\tpc.position.add(diff);\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\t\t{ // MOVE WITH JOYSTICK\r\n\r\n\t\t\tconst flipWorld = new THREE.Matrix4().fromArray([\r\n\t\t\t\t1, 0, 0, 0, \r\n\t\t\t\t0, 0, 1, 0, \r\n\t\t\t\t0, -1, 0, 0,\r\n\t\t\t\t0, 0, 0, 1\r\n\t\t\t]);\r\n\t\t\tconst flipView = new THREE.Matrix4().getInverse(flipWorld);\r\n\t\t\tconst {display, frameData} = vr;\r\n\r\n\t\t\tconst computeMove = (pad) => {\r\n\t\t\t\tconst axes = pad.axes;\r\n\r\n\t\t\t\tconst opos = new THREE.Vector3(...pad.pose.position);\r\n\t\t\t\tconst rotation = new THREE.Quaternion(...pad.pose.orientation);\r\n\t\t\t\tconst d = new THREE.Vector3(0, 0, -1);\r\n\t\t\t\td.applyQuaternion(rotation);\r\n\t\t\t\t\r\n\t\t\t\tconst worldPos = toScene(opos);\r\n\t\t\t\tconst worldTarget = toScene(new THREE.Vector3().addVectors(opos, d));\r\n\t\t\t\tconst dir = new THREE.Vector3().subVectors(worldTarget, worldPos).normalize();\r\n\r\n\t\t\t\tconst amount = axes[1] * this.speed;\r\n\r\n\t\t\t\tconst move = dir.clone().multiplyScalar(amount);\r\n\r\n\t\t\t\treturn move;\r\n\t\t\t};\r\n\r\n\t\t\tlet flip = 1;\r\n\t\t\tif(display.displayName.includes(\"Oculus\")){\r\n\t\t\t\tflip = -1;\r\n\t\t\t}\r\n\r\n\t\t\tlet move = null;\r\n\r\n\t\t\tif(left && right){\r\n\t\t\t\tmove = computeMove(right);\r\n\r\n\t\t\t\tconst leftAdjustAxe = flip * left.axes[1];\r\n\t\t\t\tconst adjust = this.speedModificationFactor ** leftAdjustAxe;\r\n\r\n\t\t\t\tmove = move.multiplyScalar(adjust);\r\n\r\n\r\n\t\t\t}else if(right){\r\n\t\t\t\tmove = computeMove(right);\r\n\t\t\t}else if(left){\r\n\t\t\t\tmove = computeMove(left);\r\n\t\t\t}\r\n\r\n\t\t\tif(move){\r\n\t\t\t\tmove.multiplyScalar(delta * flip);\r\n\r\n\t\t\t\tvr.node.position.add(move);\r\n\t\t\t}\r\n\r\n\t\t\t// for(const pad of [left, right].filter(pad => pad)){\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t// \tmoves.push(move);\r\n\r\n\t\t\t// \t// vr.node.position.add(move);\r\n\t\t\t// }\r\n\r\n\t\t\t// if(moves.length === 1){\r\n\t\t\t// \tvr.node.position.add(moves[0]);\r\n\t\t\t// }else if(moves.length > 1){\r\n\r\n\t\t\t// \tconst factor = 10;\r\n\t\t\t// \tconst [adjust, main] = moves;\r\n\t\t\t// \t// main gives direction, adjust modifies speed between [0, factor]\r\n\r\n\t\t\t// \tconst mMain = main.length();\r\n\r\n\r\n\t\t\t// \tlet mAdjust = \r\n\r\n\r\n\r\n\t\t\t// \tconst move = mMain.multiplyScalar(adjust);\r\n\r\n\r\n\t\t\t// \t// const move = moves[0].clone().add(moves[1]);\r\n\r\n\t\t\t// \t// const amount = (move.length() ** 3) * delta;\r\n\t\t\t// \t// move.multiplyScalar(amount);\r\n\r\n\t\t\t// \t// vr.node.position.add(move);\r\n\t\t\t// }\r\n\r\n\r\n\t\t\t// let pad = [right, left].find(pad => pad !== undefined);\r\n\r\n\t\t\t// if(pad){\r\n\r\n\t\t\t// \tconst axes = pad.axes;\r\n\r\n\r\n\t\t\t// \t// const leftView = new THREE.Matrix4().fromArray(frameData.leftViewMatrix);\r\n\t\t\t// \t// const view = new THREE.Matrix4().multiplyMatrices(leftView, flipView);\r\n\t\t\t// \t// const world = new THREE.Matrix4().getInverse(view);\r\n\r\n\t\t\t// \t{ // move to where the controller points\r\n\t\t\t// \t\tconst opos = new THREE.Vector3(...right.pose.position);\r\n\t\t\t// \t\tconst rotation = new THREE.Quaternion(...pad.pose.orientation);\r\n\t\t\t// \t\tconst d = new THREE.Vector3(0, 0, -1);\r\n\t\t\t// \t\td.applyQuaternion(rotation);\r\n\t\t\t\t\t\r\n\t\t\t// \t\tconst worldPos = toScene(opos);\r\n\t\t\t// \t\tconst worldTarget = toScene(new THREE.Vector3().addVectors(opos, d));\r\n\t\t\t// \t\tconst dir = new THREE.Vector3().subVectors(worldTarget, worldPos).normalize();\r\n\r\n\t\t\t// \t\tconst amount = axes[1];\r\n\r\n\t\t\t// \t\tconst move = dir.clone().multiplyScalar(delta * amount);\r\n\r\n\t\t\t// \t\t//const d = dir.clone().multiplyScalar(delta);\r\n\t\t\t// \t\tvr.node.position.add(move);\r\n\t\t\t// \t}\r\n\r\n\t\t\t// \t{ // move to trigger direction\r\n\t\t\t// \t\t// const pos = new THREE.Vector3(0, 0, 0).applyMatrix4(world);\r\n\t\t\t// \t\t// const pForward = new THREE.Vector3(0, 0, -1).applyMatrix4(world);\r\n\t\t\t// \t\t// const pRight = new THREE.Vector3(1, 0, 0).applyMatrix4(world);\r\n\t\t\t// \t\t// const pUp = new THREE.Vector3(0, 1, 0).applyMatrix4(world);\r\n\r\n\t\t\t// \t\t// const dForward = new THREE.Vector3().subVectors(pForward, pos).normalize();\r\n\t\t\t// \t\t// const dRight = new THREE.Vector3().subVectors(pRight, pos).normalize();\r\n\t\t\t// \t\t// const dUp = new THREE.Vector3().subVectors(pUp, pos).normalize();\r\n\r\n\t\t\t// \t\t// const dir = new THREE.Vector3().addVectors(\r\n\t\t\t// \t\t// \tdRight.clone().multiplyScalar(axes[0]),\r\n\t\t\t// \t\t// \tdForward.clone().multiplyScalar(axes[1])\r\n\t\t\t// \t\t// );\r\n\r\n\t\t\t// \t\t// const d = dir.clone().multiplyScalar(delta);\r\n\t\t\t// \t\t// vr.node.position.add(d);\r\n\t\t\t// \t}\r\n\r\n\t\t\t// }\r\n\r\n\t\t}\r\n\r\n\t\t{ // MOVE CONTROLLER SCENE NODE\r\n\t\t\tif(right){\r\n\t\t\t\tconst {node, debug} = snRight;\r\n\t\t\t\tconst opos = new THREE.Vector3(...right.pose.position);\r\n\t\t\t\tconst position = toScene(opos);\r\n\t\t\t\t\r\n\t\t\t\tconst rotation = new THREE.Quaternion(...right.pose.orientation);\r\n\t\t\t\tconst d = new THREE.Vector3(0, 0, -1);\r\n\t\t\t\td.applyQuaternion(rotation);\r\n\t\t\t\t// const target = toScene(new THREE.Vector3().addVectors(opos, d));\r\n\r\n\t\t\t\tnode.position.copy(position);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(left){\r\n\t\t\t\tconst {node, debug} = snLeft;\r\n\t\t\t\t\r\n\t\t\t\tconst position = toScene(new THREE.Vector3(...left.pose.position));\r\n\t\t\t\tnode.position.copy(position);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.previousPads = gamepads;\r\n\t}\r\n};","\nTHREE.OrthographicCamera.prototype.zoomTo = function( node, factor = 1){\n\n\tif ( !node.geometry && !node.boundingBox) {\n\t\treturn;\n\t}\n\n\t// TODO\n\n\t//let minWS = new THREE.Vector4(node.boundingBox.min.x, node.boundingBox.min.y, node.boundingBox.min.z, 1);\n\t//let minVS = minWS.applyMatrix4(this.matrixWorldInverse);\n\n\t//let right = node.boundingBox.max.x;\n\t//let bottom\t= node.boundingBox.min.y;\n\t//let top = node.boundingBox.max.y;\n\n\tthis.updateProjectionMatrix();\t\n};","\nTHREE.PerspectiveCamera.prototype.zoomTo = function (node, factor) {\n\tif (!node.geometry && !node.boundingSphere && !node.boundingBox) {\n\t\treturn;\n\t}\n\n\tif (node.geometry && node.geometry.boundingSphere === null) {\n\t\tnode.geometry.computeBoundingSphere();\n\t}\n\n\tnode.updateMatrixWorld();\n\n\tlet bs;\n\n\tif (node.boundingSphere) {\n\t\tbs = node.boundingSphere;\n\t} else if (node.geometry && node.geometry.boundingSphere) {\n\t\tbs = node.geometry.boundingSphere;\n\t} else {\n\t\tbs = node.boundingBox.getBoundingSphere(new THREE.Sphere());\n\t}\n\n\tlet _factor = factor || 1;\n\n\tbs = bs.clone().applyMatrix4(node.matrixWorld);\n\tlet radius = bs.radius;\n\tlet fovr = this.fov * Math.PI / 180;\n\n\tif (this.aspect < 1) {\n\t\tfovr = fovr * this.aspect;\n\t}\n\n\tlet distanceFactor = Math.abs(radius / Math.sin(fovr / 2)) * _factor;\n\n\tlet offset = this.getWorldDirection(new THREE.Vector3()).multiplyScalar(-distanceFactor);\n\tthis.position.copy(bs.center.clone().add(offset));\n};\n","THREE.Ray.prototype.distanceToPlaneWithNegative = function (plane) {\n\tlet denominator = plane.normal.dot(this.direction);\n\tif (denominator === 0) {\n\t\t// line is coplanar, return origin\n\t\tif (plane.distanceToPoint(this.origin) === 0) {\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\t\treturn null;\n\t}\n\tlet t = -(this.origin.dot(plane.normal) + plane.constant) / denominator;\n\n\treturn t;\n};\n","\nexport * from \"./Actions.js\";\nexport * from \"./AnimationPath.js\";\nexport * from \"./Annotation.js\";\nexport * from \"./defines.js\";\nexport * from \"./Enum.js\";\nexport * from \"./EventDispatcher.js\";\nexport * from \"./Features.js\";\nexport * from \"./KeyCodes.js\";\nexport * from \"./LRU.js\";\nexport * from \"./PointCloudEptGeometry.js\";\nexport * from \"./PointCloudOctree.js\";\nexport * from \"./PointCloudOctreeGeometry.js\";\nexport * from \"./PointCloudTree.js\";\nexport * from \"./Points.js\";\nexport * from \"./Potree_update_visibility.js\";\nexport * from \"./PotreeRenderer.js\";\nexport * from \"./ProfileRequest.js\";\nexport * from \"./TextSprite.js\";\nexport * from \"./utils.js\";\nexport * from \"./Version.js\";\nexport * from \"./WorkerPool.js\";\nexport * from \"./XHRFactory.js\";\nexport * from \"./viewer/SaveProject.js\";\nexport * from \"./viewer/LoadProject.js\";\n\nexport * from \"./materials/ClassificationScheme.js\";\nexport * from \"./materials/EyeDomeLightingMaterial.js\";\nexport * from \"./materials/Gradients.js\";\nexport * from \"./materials/NormalizationEDLMaterial.js\";\nexport * from \"./materials/NormalizationMaterial.js\";\nexport * from \"./materials/PointCloudMaterial.js\";\n\nexport * from \"./loader/POCLoader.js\";\nexport * from \"./modules/loader/2.0/OctreeLoader.js\";\nexport * from \"./loader/EptLoader.js\";\nexport * from \"./loader/ept/BinaryLoader.js\";\nexport * from \"./loader/ept/LaszipLoader.js\";\nexport * from \"./loader/ept/ZstandardLoader.js\";\nexport * from \"./loader/PointAttributes.js\";\nexport * from \"./loader/ShapefileLoader.js\";\nexport * from \"./loader/GeoPackageLoader.js\";\n\nexport * from \"./utils/Box3Helper.js\";\nexport * from \"./utils/ClippingTool.js\";\nexport * from \"./utils/ClipVolume.js\";\nexport * from \"./utils/GeoTIFF.js\";\nexport * from \"./utils/Measure.js\";\nexport * from \"./utils/MeasuringTool.js\";\nexport * from \"./utils/Message.js\";\nexport * from \"./utils/PointCloudSM.js\";\nexport * from \"./utils/PolygonClipVolume.js\";\nexport * from \"./utils/Profile.js\";\nexport * from \"./utils/ProfileTool.js\";\nexport * from \"./utils/ScreenBoxSelectTool.js\";\nexport * from \"./utils/SpotLightHelper.js\";\nexport * from \"./utils/TransformationTool.js\";\nexport * from \"./utils/Volume.js\";\nexport * from \"./utils/VolumeTool.js\";\nexport * from \"./utils/Compass.js\";\n\nexport * from \"./viewer/viewer.js\";\nexport * from \"./viewer/Scene.js\";\nexport * from \"./viewer/HierarchicalSlider.js\";\n\nexport * from \"./modules/OrientedImages/OrientedImages.js\";\nexport * from \"./modules/Images360/Images360.js\";\nexport * from \"./modules/CameraAnimation/CameraAnimation.js\";\n\nexport * from \"./modules/loader/2.0/OctreeLoader.js\";\n\nexport {OrbitControls} from \"./navigation/OrbitControls.js\";\nexport {FirstPersonControls} from \"./navigation/FirstPersonControls.js\";\nexport {EarthControls} from \"./navigation/EarthControls.js\";\nexport {DeviceOrientationControls} from \"./navigation/DeviceOrientationControls.js\";\nexport {VRControlls} from \"./navigation/VRControlls.js\";\n\nimport \"./extensions/OrthographicCamera.js\";\nimport \"./extensions/PerspectiveCamera.js\";\nimport \"./extensions/Ray.js\";\n\nimport {LRU} from \"./LRU.js\";\nimport {OctreeLoader} from \"./modules/loader/2.0/OctreeLoader.js\";\nimport {POCLoader} from \"./loader/POCLoader.js\";\nimport {EptLoader} from \"./loader/EptLoader.js\";\nimport {PointCloudOctree} from \"./PointCloudOctree.js\";\nimport {WorkerPool} from \"./WorkerPool.js\";\n\nexport const workerPool = new WorkerPool();\n\nexport const version = {\n\tmajor: 1,\n\tminor: 7,\n\tsuffix: '.1'\n};\n\nexport let lru = new LRU();\n\nconsole.log('Potree ' + version.major + '.' + version.minor + version.suffix);\n\nexport let pointBudget = 1 * 1000 * 1000;\nexport let framenumber = 0;\nexport let numNodesLoading = 0;\nexport let maxNodesLoading = 4;\n\nexport const debug = {};\n\nlet scriptPath = \"\";\n\nif (document.currentScript && document.currentScript.src) {\n\tscriptPath = new URL(document.currentScript.src + '/..').href;\n\tif (scriptPath.slice(-1) === '/') {\n\t\tscriptPath = scriptPath.slice(0, -1);\n\t}\n} else if(import.meta){\n\tscriptPath = new URL(import.meta.url + \"/..\").href;\n\tif (scriptPath.slice(-1) === '/') {\n\t\tscriptPath = scriptPath.slice(0, -1);\n\t}\n}else {\n\tconsole.error('Potree was unable to find its script path using document.currentScript. Is Potree included with a script tag? Does your browser support this function?');\n}\n\nlet resourcePath = scriptPath + '/resources';\n\n// scriptPath: build/potree\n// resourcePath:build/potree/resources\nexport {scriptPath, resourcePath};\n\n\nexport function loadPointCloud(path, name, callback){\n\tlet loaded = function(e){\n\t\te.pointcloud.name = name;\n\t\tcallback(e);\n\t};\n\n\tlet promise = new Promise( resolve => {\n\n\t\t// load pointcloud\n\t\tif (!path){\n\t\t\t// TODO: callback? comment? Hello? Bueller? Anyone?\n\t\t} else if (path.indexOf('ept.json') > 0) {\n\t\t\tEptLoader.load(path, function(geometry) {\n\t\t\t\tif (!geometry) {\n\t\t\t\t\tconsole.error(new Error(`failed to load point cloud from URL: ${path}`));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet pointcloud = new PointCloudOctree(geometry);\n\t\t\t\t\t//loaded(pointcloud);\n\t\t\t\t\tresolve({type: 'pointcloud_loaded', pointcloud: pointcloud});\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (path.indexOf('cloud.js') > 0) {\n\t\t\tPOCLoader.load(path, function (geometry) {\n\t\t\t\tif (!geometry) {\n\t\t\t\t\t//callback({type: 'loading_failed'});\n\t\t\t\t\tconsole.error(new Error(`failed to load point cloud from URL: ${path}`));\n\t\t\t\t} else {\n\t\t\t\t\tlet pointcloud = new PointCloudOctree(geometry);\n\t\t\t\t\t// loaded(pointcloud);\n\t\t\t\t\tresolve({type: 'pointcloud_loaded', pointcloud: pointcloud});\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (path.indexOf('metadata.json') > 0) {\n\t\t\tPotree.OctreeLoader.load(path).then(e => {\n\t\t\t\tlet geometry = e.geometry;\n\n\t\t\t\tif(!geometry){\n\t\t\t\t\tconsole.error(new Error(`failed to load point cloud from URL: ${path}`));\n\t\t\t\t}else{\n\t\t\t\t\tlet pointcloud = new PointCloudOctree(geometry);\n\n\t\t\t\t\tlet aPosition = pointcloud.getAttribute(\"position\");\n\n\t\t\t\t\tlet material = pointcloud.material;\n\t\t\t\t\tmaterial.elevationRange = [\n\t\t\t\t\t\taPosition.range[0][2],\n\t\t\t\t\t\taPosition.range[1][2],\n\t\t\t\t\t];\n\n\t\t\t\t\t// loaded(pointcloud);\n\t\t\t\t\tresolve({type: 'pointcloud_loaded', pointcloud: pointcloud});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tOctreeLoader.load(path, function (geometry) {\n\t\t\t\tif (!geometry) {\n\t\t\t\t\t//callback({type: 'loading_failed'});\n\t\t\t\t\tconsole.error(new Error(`failed to load point cloud from URL: ${path}`));\n\t\t\t\t} else {\n\t\t\t\t\tlet pointcloud = new PointCloudOctree(geometry);\n\t\t\t\t\t// loaded(pointcloud);\n\t\t\t\t\tresolve({type: 'pointcloud_loaded', pointcloud: pointcloud});\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (path.indexOf('.vpc') > 0) {\n\t\t\tPointCloudArena4DGeometry.load(path, function (geometry) {\n\t\t\t\tif (!geometry) {\n\t\t\t\t\t//callback({type: 'loading_failed'});\n\t\t\t\t\tconsole.error(new Error(`failed to load point cloud from URL: ${path}`));\n\t\t\t\t} else {\n\t\t\t\t\tlet pointcloud = new PointCloudArena4D(geometry);\n\t\t\t\t\t// loaded(pointcloud);\n\t\t\t\t\tresolve({type: 'pointcloud_loaded', pointcloud: pointcloud});\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t//callback({'type': 'loading_failed'});\n\t\t\tconsole.error(new Error(`failed to load point cloud from URL: ${path}`));\n\t\t}\n\t});\n\n\tif(callback){\n\t\tpromise.then(pointcloud => {\n\t\t\tloaded(pointcloud);\n\t\t});\n\t}else{\n\t\treturn promise;\n\t}\n};\n\n\n// add selectgroup\n(function($){\n\t$.fn.extend({\n\t\tselectgroup: function(args = {}){\n\n\t\t\tlet elGroup = $(this);\n\t\t\tlet rootID = elGroup.prop(\"id\");\n\t\t\tlet groupID = `${rootID}`;\n\t\t\tlet groupTitle = (args.title !== undefined) ? args.title : \"\";\n\n\t\t\tlet elButtons = [];\n\t\t\telGroup.find(\"option\").each((index, value) => {\n\t\t\t\tlet buttonID = $(value).prop(\"id\");\n\t\t\t\tlet label = $(value).html();\n\t\t\t\tlet optionValue = $(value).prop(\"value\");\n\n\t\t\t\tlet elButton = $(`\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t`);\n\t\t\t\tlet elLabel = elButton.find(\"label\");\n\t\t\t\tlet elInput = elButton.find(\"input\");\n\n\t\t\t\telInput.change( () => {\n\t\t\t\t\telGroup.find(\"label\").removeClass(\"ui-state-active\");\n\t\t\t\t\telGroup.find(\"label\").addClass(\"ui-state-default\");\n\t\t\t\t\tif(elInput.is(\":checked\")){\n\t\t\t\t\t\telLabel.addClass(\"ui-state-active\");\n\t\t\t\t\t}else{\n\t\t\t\t\t\t//elLabel.addClass(\"ui-state-default\");\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\telButtons.push(elButton);\n\t\t\t});\n\n\t\t\tlet elFieldset = $(`\n\t\t\t\t
        \n\t\t\t\t\t${groupTitle}\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t`);\n\n\t\t\tlet elButtonContainer = elFieldset.find(\"span\");\n\t\t\tfor(let elButton of elButtons){\n\t\t\t\telButtonContainer.append(elButton);\n\t\t\t}\n\n\t\t\telButtonContainer.find(\"label\").each( (index, value) => {\n\t\t\t\t$(value).css(\"margin\", \"0px\");\n\t\t\t\t$(value).css(\"border-radius\", \"0px\");\n\t\t\t\t$(value).css(\"border\", \"1px solid black\");\n\t\t\t\t$(value).css(\"border-left\", \"none\");\n\t\t\t});\n\t\t\telButtonContainer.find(\"label:first\").each( (index, value) => {\n\t\t\t\t$(value).css(\"border-radius\", \"4px 0px 0px 4px\");\n\n\t\t\t});\n\t\t\telButtonContainer.find(\"label:last\").each( (index, value) => {\n\t\t\t\t$(value).css(\"border-radius\", \"0px 4px 4px 0px\");\n\t\t\t\t$(value).css(\"border-left\", \"none\");\n\t\t\t});\n\n\t\t\telGroup.empty();\n\t\t\telGroup.append(elFieldset);\n\n\n\n\t\t}\n\t});\n})(jQuery);\n"],"names":["PointCloudArena4D","Geopackage","JSON5","scriptPath","loadPointCloud"],"mappings":"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CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE;CACF,CAAC,OAAO,EAAE;CACV,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,K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EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,EAAE;CACF,CAAC;;CChJD,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB;CACA,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;CACA,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;CACA,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;CACA,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;CACA,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF;CACA,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF;CACA,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF;CACA,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF;CACA,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;CACA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF;CACA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC;;AC/9CU,OAAC,oBAAoB,GAAG;AACpC;CACA,CAAC,OAAO,EAAE;CACV,EAAE,CAAC,QAAQ,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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,CAAC,CAAC;AACL;CACA,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;CACf,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B;CACA,EAAE;CACF,GAAG,IAAI,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;CAClD,GAAG,IAAI,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAClD;CACA,GAAG,YAAY,CAAC,MAAM,CAAC;CACvB,IAAI,KAAK,EAAE,QAAQ,CAAC,IAAI;CACxB,IAAI,GAAG,EAAE,CAAC;CACV,IAAI,GAAG,EAAE,CAAC;CACV,IAAI,IAAI,EAAE,IAAI;CACd,IAAI,KAAK,EAAE,UAAU,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE;CAC7D,IAAI,CAAC,CAAC;AACN;CACA,GAAG,IAAI,MAAM,GAAG,CAAC,CAAC,KAAK;CACvB,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;CAChD,IAAI,YAAY,CAAC,MAAM,CAA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"} \ No newline at end of file diff --git a/libs/potree/profile.html b/libs/potree/profile.html deleted file mode 100644 index 3eead5a..0000000 --- a/libs/potree/profile.html +++ /dev/null @@ -1,113 +0,0 @@ -
        - -
        - - - - - - - -
        - -
        - - -
        - :   - - - - - - - - - - - - - - - - - - - - - - - - - -
        - -
        -
        - -
        - -
        - position: asdsadf asdf
        - rgb: 123 423 123 -
        - -
        -
        -
        - -
        \ No newline at end of file diff --git a/libs/potree/resources/LICENSE b/libs/potree/resources/LICENSE deleted file mode 100644 index 8dc6ae0..0000000 --- a/libs/potree/resources/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ - - - -icons/map_icon.png -from sitn PotreeViewer -http://ne.ch/sitn -https://github.com/PotreeViewer/PotreeViewer - -icons/navigation_cube.svg -icons/orthographic_camera.svg -icons/perspective_camera.svg -free for commerical use without attribution -http://www.freepik.com/free-icon/package-cube-box-for-delivery_720159.htm - - diff --git a/libs/potree/resources/icons/add.svg b/libs/potree/resources/icons/add.svg deleted file mode 100644 index a997b2d..0000000 --- a/libs/potree/resources/icons/add.svg +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - + - - diff --git a/libs/potree/resources/icons/angle.png b/libs/potree/resources/icons/angle.png deleted file mode 100644 index ee21dd6..0000000 Binary files a/libs/potree/resources/icons/angle.png and /dev/null differ diff --git a/libs/potree/resources/icons/annotation.svg b/libs/potree/resources/icons/annotation.svg deleted file mode 100644 index c5a5281..0000000 --- a/libs/potree/resources/icons/annotation.svg +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/area.svg b/libs/potree/resources/icons/area.svg deleted file mode 100644 index 98c31cf..0000000 --- a/libs/potree/resources/icons/area.svg +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/area_backup.svg b/libs/potree/resources/icons/area_backup.svg deleted file mode 100644 index 7fb9b22..0000000 --- a/libs/potree/resources/icons/area_backup.svg +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/arrow_ccw.svg b/libs/potree/resources/icons/arrow_ccw.svg deleted file mode 100644 index e0ae6a0..0000000 --- a/libs/potree/resources/icons/arrow_ccw.svg +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/arrow_cw.svg b/libs/potree/resources/icons/arrow_cw.svg deleted file mode 100644 index d827375..0000000 --- a/libs/potree/resources/icons/arrow_cw.svg +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/arrow_down.svg b/libs/potree/resources/icons/arrow_down.svg deleted file mode 100644 index f89b4c7..0000000 --- a/libs/potree/resources/icons/arrow_down.svg +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - 🡅 - - diff --git a/libs/potree/resources/icons/arrow_left.svg b/libs/potree/resources/icons/arrow_left.svg deleted file mode 100644 index 45aa5c1..0000000 --- a/libs/potree/resources/icons/arrow_left.svg +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - 🡅 - - diff --git a/libs/potree/resources/icons/arrow_right.svg b/libs/potree/resources/icons/arrow_right.svg deleted file mode 100644 index 3c3edf6..0000000 --- a/libs/potree/resources/icons/arrow_right.svg +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - 🡅 - - diff --git a/libs/potree/resources/icons/arrow_up.svg b/libs/potree/resources/icons/arrow_up.svg deleted file mode 100644 index 3d843c3..0000000 --- a/libs/potree/resources/icons/arrow_up.svg +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - 🡅 - - diff --git a/libs/potree/resources/icons/assign.svg b/libs/potree/resources/icons/assign.svg deleted file mode 100644 index 6149ea7..0000000 --- a/libs/potree/resources/icons/assign.svg +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - = - - diff --git a/libs/potree/resources/icons/azimuth.svg b/libs/potree/resources/icons/azimuth.svg deleted file mode 100644 index 6cb5c69..0000000 --- a/libs/potree/resources/icons/azimuth.svg +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - N ° - - diff --git a/libs/potree/resources/icons/back.svg b/libs/potree/resources/icons/back.svg deleted file mode 100644 index 7a76227..0000000 --- a/libs/potree/resources/icons/back.svg +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/bottom.svg b/libs/potree/resources/icons/bottom.svg deleted file mode 100644 index a96abc0..0000000 --- a/libs/potree/resources/icons/bottom.svg +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/camera_animation.svg b/libs/potree/resources/icons/camera_animation.svg deleted file mode 100644 index 7e2bbae..0000000 --- a/libs/potree/resources/icons/camera_animation.svg +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/circle.svg b/libs/potree/resources/icons/circle.svg deleted file mode 100644 index a556fde..0000000 --- a/libs/potree/resources/icons/circle.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/circled_dot.svg b/libs/potree/resources/icons/circled_dot.svg deleted file mode 100644 index 291be87..0000000 --- a/libs/potree/resources/icons/circled_dot.svg +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/libs/potree/resources/icons/clip-plane-x.svg b/libs/potree/resources/icons/clip-plane-x.svg deleted file mode 100644 index a5c6f0f..0000000 --- a/libs/potree/resources/icons/clip-plane-x.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/libs/potree/resources/icons/clip-plane-y.svg b/libs/potree/resources/icons/clip-plane-y.svg deleted file mode 100644 index e5d23ae..0000000 --- a/libs/potree/resources/icons/clip-plane-y.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - diff --git a/libs/potree/resources/icons/clip-plane-z.svg b/libs/potree/resources/icons/clip-plane-z.svg deleted file mode 100644 index a16d380..0000000 --- a/libs/potree/resources/icons/clip-plane-z.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/libs/potree/resources/icons/clip-polygon.svg b/libs/potree/resources/icons/clip-polygon.svg deleted file mode 100644 index 774fa71..0000000 --- a/libs/potree/resources/icons/clip-polygon.svg +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/clip-screen.svg b/libs/potree/resources/icons/clip-screen.svg deleted file mode 100644 index e542def..0000000 --- a/libs/potree/resources/icons/clip-screen.svg +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/clip_volume.svg b/libs/potree/resources/icons/clip_volume.svg deleted file mode 100644 index 4a68b54..0000000 --- a/libs/potree/resources/icons/clip_volume.svg +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/close.svg b/libs/potree/resources/icons/close.svg deleted file mode 100644 index b39908b..0000000 --- a/libs/potree/resources/icons/close.svg +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/libs/potree/resources/icons/cloud.svg b/libs/potree/resources/icons/cloud.svg deleted file mode 100644 index 804466c..0000000 --- a/libs/potree/resources/icons/cloud.svg +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/libs/potree/resources/icons/copy.svg b/libs/potree/resources/icons/copy.svg deleted file mode 100644 index 11cde80..0000000 --- a/libs/potree/resources/icons/copy.svg +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/distance.svg b/libs/potree/resources/icons/distance.svg deleted file mode 100644 index fc03804..0000000 --- a/libs/potree/resources/icons/distance.svg +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/earth_controls.png b/libs/potree/resources/icons/earth_controls.png deleted file mode 100644 index f09345c..0000000 Binary files a/libs/potree/resources/icons/earth_controls.png and /dev/null differ diff --git a/libs/potree/resources/icons/earth_controls.svg b/libs/potree/resources/icons/earth_controls.svg deleted file mode 100644 index f5458f0..0000000 --- a/libs/potree/resources/icons/earth_controls.svg +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/earth_controls_1.png b/libs/potree/resources/icons/earth_controls_1.png deleted file mode 100644 index b10c935..0000000 Binary files a/libs/potree/resources/icons/earth_controls_1.png and /dev/null differ diff --git a/libs/potree/resources/icons/eye.svg b/libs/potree/resources/icons/eye.svg deleted file mode 100644 index 117c23b..0000000 --- a/libs/potree/resources/icons/eye.svg +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/eye_2.png b/libs/potree/resources/icons/eye_2.png deleted file mode 100644 index c23e800..0000000 Binary files a/libs/potree/resources/icons/eye_2.png and /dev/null differ diff --git a/libs/potree/resources/icons/eye_2.svg b/libs/potree/resources/icons/eye_2.svg deleted file mode 100644 index 7c312b2..0000000 --- a/libs/potree/resources/icons/eye_2.svg +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/libs/potree/resources/icons/eye_crossed.svg b/libs/potree/resources/icons/eye_crossed.svg deleted file mode 100644 index bc0b8f2..0000000 --- a/libs/potree/resources/icons/eye_crossed.svg +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/file_csv_2d.svg b/libs/potree/resources/icons/file_csv_2d.svg deleted file mode 100644 index f1a293f..0000000 --- a/libs/potree/resources/icons/file_csv_2d.svg +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/file_dxf.svg b/libs/potree/resources/icons/file_dxf.svg deleted file mode 100644 index dedb04b..0000000 --- a/libs/potree/resources/icons/file_dxf.svg +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - DXF - JSON - - - - - JSON - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/file_geojson.svg b/libs/potree/resources/icons/file_geojson.svg deleted file mode 100644 index 4fa326c..0000000 --- a/libs/potree/resources/icons/file_geojson.svg +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - DXF - JSON - - - - - - - - - - - - - - - DXF - - - - - - - - diff --git a/libs/potree/resources/icons/file_las_3d.svg b/libs/potree/resources/icons/file_las_3d.svg deleted file mode 100644 index a6bf228..0000000 --- a/libs/potree/resources/icons/file_las_3d.svg +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/file_potree.svg b/libs/potree/resources/icons/file_potree.svg deleted file mode 100644 index 8cd2ea3..0000000 --- a/libs/potree/resources/icons/file_potree.svg +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/flip_y_z.png b/libs/potree/resources/icons/flip_y_z.png deleted file mode 100644 index b57262a..0000000 Binary files a/libs/potree/resources/icons/flip_y_z.png and /dev/null differ diff --git a/libs/potree/resources/icons/flip_y_z.svg b/libs/potree/resources/icons/flip_y_z.svg deleted file mode 100644 index c28f2d0..0000000 --- a/libs/potree/resources/icons/flip_y_z.svg +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - y - z - - - diff --git a/libs/potree/resources/icons/focus.svg b/libs/potree/resources/icons/focus.svg deleted file mode 100644 index db9b6d2..0000000 --- a/libs/potree/resources/icons/focus.svg +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/fps_controls.png b/libs/potree/resources/icons/fps_controls.png deleted file mode 100644 index 3617358..0000000 Binary files a/libs/potree/resources/icons/fps_controls.png and /dev/null differ diff --git a/libs/potree/resources/icons/fps_controls.svg b/libs/potree/resources/icons/fps_controls.svg deleted file mode 100644 index 23bd09e..0000000 --- a/libs/potree/resources/icons/fps_controls.svg +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/front.svg b/libs/potree/resources/icons/front.svg deleted file mode 100644 index f3d8d4f..0000000 --- a/libs/potree/resources/icons/front.svg +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/goto.svg b/libs/potree/resources/icons/goto.svg deleted file mode 100644 index 3767791..0000000 --- a/libs/potree/resources/icons/goto.svg +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/gradients_grayscale.png b/libs/potree/resources/icons/gradients_grayscale.png deleted file mode 100644 index 9427218..0000000 Binary files a/libs/potree/resources/icons/gradients_grayscale.png and /dev/null differ diff --git a/libs/potree/resources/icons/gradients_plasma.png b/libs/potree/resources/icons/gradients_plasma.png deleted file mode 100644 index 71438aa..0000000 Binary files a/libs/potree/resources/icons/gradients_plasma.png and /dev/null differ diff --git a/libs/potree/resources/icons/gradients_rainbow.png b/libs/potree/resources/icons/gradients_rainbow.png deleted file mode 100644 index c3f9172..0000000 Binary files a/libs/potree/resources/icons/gradients_rainbow.png and /dev/null differ diff --git a/libs/potree/resources/icons/gradients_spectral.png b/libs/potree/resources/icons/gradients_spectral.png deleted file mode 100644 index ae4886b..0000000 Binary files a/libs/potree/resources/icons/gradients_spectral.png and /dev/null differ diff --git a/libs/potree/resources/icons/gradients_yellow_green.png b/libs/potree/resources/icons/gradients_yellow_green.png deleted file mode 100644 index 9e90706..0000000 Binary files a/libs/potree/resources/icons/gradients_yellow_green.png and /dev/null differ diff --git a/libs/potree/resources/icons/height.svg b/libs/potree/resources/icons/height.svg deleted file mode 100644 index 7b3fb34..0000000 --- a/libs/potree/resources/icons/height.svg +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/helicopter_controls.svg b/libs/potree/resources/icons/helicopter_controls.svg deleted file mode 100644 index 84ab2eb..0000000 --- a/libs/potree/resources/icons/helicopter_controls.svg +++ /dev/null @@ -1,267 +0,0 @@ - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/image_preview.php b/libs/potree/resources/icons/image_preview.php deleted file mode 100644 index 7288b6a..0000000 --- a/libs/potree/resources/icons/image_preview.php +++ /dev/null @@ -1,24 +0,0 @@ - $value){ - - if($value === "." || $value === ".." || $value === "image_preview.php"){ - continue; - } - - ?> -
        -
        - -
        - \ No newline at end of file diff --git a/libs/potree/resources/icons/index.html b/libs/potree/resources/icons/index.html deleted file mode 100644 index 0c63abf..0000000 --- a/libs/potree/resources/icons/index.html +++ /dev/null @@ -1,606 +0,0 @@ - - - - - - -
        - - -
        - -
        add.svg
        -
        -
        - - -
        - -
        annotation.svg
        -
        -
        - - -
        - -
        area.svg
        -
        -
        - - -
        - -
        area_backup.svg
        -
        -
        - - -
        - -
        arrow_ccw.svg
        -
        -
        - - -
        - -
        arrow_cw.svg
        -
        -
        - - -
        - -
        arrow_down.svg
        -
        -
        - - -
        - -
        arrow_left.svg
        -
        -
        - - -
        - -
        arrow_right.svg
        -
        -
        - - -
        - -
        arrow_up.svg
        -
        -
        - - -
        - -
        assign.svg
        -
        -
        - - -
        - -
        azimuth.svg
        -
        -
        - - -
        - -
        back.svg
        -
        -
        - - -
        - -
        bottom.svg
        -
        -
        - - -
        - -
        camera_animation.svg
        -
        -
        - - -
        - -
        circle.svg
        -
        -
        - - -
        - -
        circled_dot.svg
        -
        -
        - - -
        - -
        clip-plane-x.svg
        -
        -
        - - -
        - -
        clip-plane-y.svg
        -
        -
        - - -
        - -
        clip-plane-z.svg
        -
        -
        - - -
        - -
        clip-polygon.svg
        -
        -
        - - -
        - -
        clip-screen.svg
        -
        -
        - - -
        - -
        clip_volume.svg
        -
        -
        - - -
        - -
        close.svg
        -
        -
        - - -
        - -
        cloud.svg
        -
        -
        - - -
        - -
        copy.svg
        -
        -
        - - -
        - -
        distance.svg
        -
        -
        - - -
        - -
        earth_controls.svg
        -
        -
        - - -
        - -
        eye.svg
        -
        -
        - - -
        - -
        eye_2.svg
        -
        -
        - - -
        - -
        eye_crossed.svg
        -
        -
        - - -
        - -
        file_csv_2d.svg
        -
        -
        - - -
        - -
        file_dxf.svg
        -
        -
        - - -
        - -
        file_geojson.svg
        -
        -
        - - -
        - -
        file_las_3d.svg
        -
        -
        - - -
        - -
        file_potree.svg
        -
        -
        - - -
        - -
        flip_y_z.svg
        -
        -
        - - -
        - -
        focus.svg
        -
        -
        - - -
        - -
        fps_controls.svg
        -
        -
        - - -
        - -
        front.svg
        -
        -
        - - -
        - -
        goto.svg
        -
        -
        - - -
        - -
        height.svg
        -
        -
        - - -
        - -
        helicopter_controls.svg
        -
        -
        - - -
        - -
        left.svg
        -
        -
        - - -
        - -
        menu_button.svg
        -
        -
        - - -
        - -
        menu_icon.svg
        -
        -
        - - -
        - -
        navigation_cube.svg
        -
        -
        - - -
        - -
        orbit_controls.svg
        -
        -
        - - -
        - -
        orthographic-camera.svg
        -
        -
        - - -
        - -
        perspective-camera.svg
        -
        -
        - - -
        - -
        picture.svg
        -
        -
        - - -
        - -
        point.svg
        -
        -
        - - -
        - -
        profile.svg
        -
        -
        - - -
        - -
        remove.svg
        -
        -
        - - -
        - -
        reset_tools.svg
        -
        -
        - - -
        - -
        return_number.svg
        -
        -
        - - -
        - -
        rgb.svg
        -
        -
        - - -
        - -
        right.svg
        -
        -
        - - -
        - -
        rotate.svg
        -
        -
        - - -
        - -
        scale.svg
        -
        -
        - - -
        - -
        sphere.svg
        -
        -
        - - -
        - -
        sphere_distances.svg
        -
        -
        - - -
        - -
        target.svg
        -
        -
        - - -
        - -
        top.svg
        -
        -
        - - -
        - -
        translate.svg
        -
        -
        - - -
        - -
        triangle.svg
        -
        -
        - - -
        - -
        volume.svg
        -
        -
        - - -
        - -
        vr_button.svg
        -
        -
        - - -
        - -
        angle.png
        -
        -
        - - -
        - -
        earth_controls.png
        -
        -
        - - -
        - -
        earth_controls_1.png
        -
        -
        - - -
        - -
        eye_2.png
        -
        -
        - - -
        - -
        flip_y_z.png
        -
        -
        - - -
        - -
        fps_controls.png
        -
        -
        - - -
        - -
        gradients_grayscale.png
        -
        -
        - - -
        - -
        gradients_plasma.png
        -
        -
        - - -
        - -
        gradients_rainbow.png
        -
        -
        - - -
        - -
        gradients_spectral.png
        -
        -
        - - -
        - -
        gradients_yellow_green.png
        -
        -
        - - -
        - -
        map_icon.png
        -
        -
        - - -
        - -
        profile.png
        -
        -
        - - -
        - -
        rgb.png
        -
        -
        - - -
        - -
        rgb_elevation.png
        -
        -
        - - -
        - -
        sphere.png
        -
        -
        - -
        - - - \ No newline at end of file diff --git a/libs/potree/resources/icons/left.svg b/libs/potree/resources/icons/left.svg deleted file mode 100644 index 1c4c1cd..0000000 --- a/libs/potree/resources/icons/left.svg +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/map_icon.png b/libs/potree/resources/icons/map_icon.png deleted file mode 100644 index c790e7f..0000000 Binary files a/libs/potree/resources/icons/map_icon.png and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/basic_1.jpg b/libs/potree/resources/icons/matcap/basic_1.jpg deleted file mode 100644 index 3c81330..0000000 Binary files a/libs/potree/resources/icons/matcap/basic_1.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/basic_2.jpg b/libs/potree/resources/icons/matcap/basic_2.jpg deleted file mode 100644 index 6493aa9..0000000 Binary files a/libs/potree/resources/icons/matcap/basic_2.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/basic_dark.jpg b/libs/potree/resources/icons/matcap/basic_dark.jpg deleted file mode 100644 index 18d18a5..0000000 Binary files a/libs/potree/resources/icons/matcap/basic_dark.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/basic_side.jpg b/libs/potree/resources/icons/matcap/basic_side.jpg deleted file mode 100644 index a0dbbb4..0000000 Binary files a/libs/potree/resources/icons/matcap/basic_side.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/ceramic_dark.jpg b/libs/potree/resources/icons/matcap/ceramic_dark.jpg deleted file mode 100644 index 8efd96c..0000000 Binary files a/libs/potree/resources/icons/matcap/ceramic_dark.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/ceramic_lightbulb.jpg b/libs/potree/resources/icons/matcap/ceramic_lightbulb.jpg deleted file mode 100644 index 78c9f28..0000000 Binary files a/libs/potree/resources/icons/matcap/ceramic_lightbulb.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/check_normal+y.jpg b/libs/potree/resources/icons/matcap/check_normal+y.jpg deleted file mode 100644 index 012226c..0000000 Binary files a/libs/potree/resources/icons/matcap/check_normal+y.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/check_rim_dark.jpg b/libs/potree/resources/icons/matcap/check_rim_dark.jpg deleted file mode 100644 index 518b002..0000000 Binary files a/libs/potree/resources/icons/matcap/check_rim_dark.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/check_rim_light.jpg b/libs/potree/resources/icons/matcap/check_rim_light.jpg deleted file mode 100644 index 231bde4..0000000 Binary files a/libs/potree/resources/icons/matcap/check_rim_light.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/clay_brown.jpg b/libs/potree/resources/icons/matcap/clay_brown.jpg deleted file mode 100644 index 51c8ab1..0000000 Binary files a/libs/potree/resources/icons/matcap/clay_brown.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/clay_muddy.jpg b/libs/potree/resources/icons/matcap/clay_muddy.jpg deleted file mode 100644 index bbcfcb3..0000000 Binary files a/libs/potree/resources/icons/matcap/clay_muddy.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/clay_studio.jpg b/libs/potree/resources/icons/matcap/clay_studio.jpg deleted file mode 100644 index 0aa2ea3..0000000 Binary files a/libs/potree/resources/icons/matcap/clay_studio.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/contours_1.jpg b/libs/potree/resources/icons/matcap/contours_1.jpg deleted file mode 100644 index 5d9a149..0000000 Binary files a/libs/potree/resources/icons/matcap/contours_1.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/contours_2.jpg b/libs/potree/resources/icons/matcap/contours_2.jpg deleted file mode 100644 index cdf2a96..0000000 Binary files a/libs/potree/resources/icons/matcap/contours_2.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/contours_3.jpg b/libs/potree/resources/icons/matcap/contours_3.jpg deleted file mode 100644 index 69b2338..0000000 Binary files a/libs/potree/resources/icons/matcap/contours_3.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/jade.jpg b/libs/potree/resources/icons/matcap/jade.jpg deleted file mode 100644 index eb0bfb6..0000000 Binary files a/libs/potree/resources/icons/matcap/jade.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/matcap.jpg b/libs/potree/resources/icons/matcap/matcap.jpg deleted file mode 100644 index 71130ff..0000000 Binary files a/libs/potree/resources/icons/matcap/matcap.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/metal_anisotropic.jpg b/libs/potree/resources/icons/matcap/metal_anisotropic.jpg deleted file mode 100644 index 1d55e08..0000000 Binary files a/libs/potree/resources/icons/matcap/metal_anisotropic.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/metal_carpaint.jpg b/libs/potree/resources/icons/matcap/metal_carpaint.jpg deleted file mode 100644 index da04f50..0000000 Binary files a/libs/potree/resources/icons/matcap/metal_carpaint.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/metal_lead.jpg b/libs/potree/resources/icons/matcap/metal_lead.jpg deleted file mode 100644 index 0987296..0000000 Binary files a/libs/potree/resources/icons/matcap/metal_lead.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/metal_shiny.jpg b/libs/potree/resources/icons/matcap/metal_shiny.jpg deleted file mode 100644 index d783aa3..0000000 Binary files a/libs/potree/resources/icons/matcap/metal_shiny.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/pearl.jpg b/libs/potree/resources/icons/matcap/pearl.jpg deleted file mode 100644 index 48cb22a..0000000 Binary files a/libs/potree/resources/icons/matcap/pearl.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/reflection_check_horizontal.jpg b/libs/potree/resources/icons/matcap/reflection_check_horizontal.jpg deleted file mode 100644 index f8304a4..0000000 Binary files a/libs/potree/resources/icons/matcap/reflection_check_horizontal.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/reflection_check_vertical.jpg b/libs/potree/resources/icons/matcap/reflection_check_vertical.jpg deleted file mode 100644 index c397d51..0000000 Binary files a/libs/potree/resources/icons/matcap/reflection_check_vertical.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/resin.jpg b/libs/potree/resources/icons/matcap/resin.jpg deleted file mode 100644 index 66f7cb7..0000000 Binary files a/libs/potree/resources/icons/matcap/resin.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/skin.jpg b/libs/potree/resources/icons/matcap/skin.jpg deleted file mode 100644 index ad08f18..0000000 Binary files a/libs/potree/resources/icons/matcap/skin.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/matcap/toon.jpg b/libs/potree/resources/icons/matcap/toon.jpg deleted file mode 100644 index dd1d274..0000000 Binary files a/libs/potree/resources/icons/matcap/toon.jpg and /dev/null differ diff --git a/libs/potree/resources/icons/menu_button.svg b/libs/potree/resources/icons/menu_button.svg deleted file mode 100644 index e36496e..0000000 --- a/libs/potree/resources/icons/menu_button.svg +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/menu_icon.svg b/libs/potree/resources/icons/menu_icon.svg deleted file mode 100644 index be38b1d..0000000 --- a/libs/potree/resources/icons/menu_icon.svg +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/navigation_cube.svg b/libs/potree/resources/icons/navigation_cube.svg deleted file mode 100644 index d46db83..0000000 --- a/libs/potree/resources/icons/navigation_cube.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/libs/potree/resources/icons/orbit_controls.svg b/libs/potree/resources/icons/orbit_controls.svg deleted file mode 100644 index 5a46cd2..0000000 --- a/libs/potree/resources/icons/orbit_controls.svg +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/orthographic-camera.svg b/libs/potree/resources/icons/orthographic-camera.svg deleted file mode 100644 index 7089ff4..0000000 --- a/libs/potree/resources/icons/orthographic-camera.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/libs/potree/resources/icons/perspective-camera.svg b/libs/potree/resources/icons/perspective-camera.svg deleted file mode 100644 index 6491bca..0000000 --- a/libs/potree/resources/icons/perspective-camera.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/libs/potree/resources/icons/picture.svg b/libs/potree/resources/icons/picture.svg deleted file mode 100644 index d0d5647..0000000 --- a/libs/potree/resources/icons/picture.svg +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/point.svg b/libs/potree/resources/icons/point.svg deleted file mode 100644 index af01d61..0000000 --- a/libs/potree/resources/icons/point.svg +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/libs/potree/resources/icons/profile.png b/libs/potree/resources/icons/profile.png deleted file mode 100644 index 1f42ba1..0000000 Binary files a/libs/potree/resources/icons/profile.png and /dev/null differ diff --git a/libs/potree/resources/icons/profile.svg b/libs/potree/resources/icons/profile.svg deleted file mode 100644 index fde7178..0000000 --- a/libs/potree/resources/icons/profile.svg +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/libs/potree/resources/icons/remove.svg b/libs/potree/resources/icons/remove.svg deleted file mode 100644 index 326f5d3..0000000 --- a/libs/potree/resources/icons/remove.svg +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/reset_tools.svg b/libs/potree/resources/icons/reset_tools.svg deleted file mode 100644 index fe0846a..0000000 --- a/libs/potree/resources/icons/reset_tools.svg +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/return_number.svg b/libs/potree/resources/icons/return_number.svg deleted file mode 100644 index f8089d2..0000000 --- a/libs/potree/resources/icons/return_number.svg +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/rgb.png b/libs/potree/resources/icons/rgb.png deleted file mode 100644 index a62faf5..0000000 Binary files a/libs/potree/resources/icons/rgb.png and /dev/null differ diff --git a/libs/potree/resources/icons/rgb.svg b/libs/potree/resources/icons/rgb.svg deleted file mode 100644 index e04d822..0000000 --- a/libs/potree/resources/icons/rgb.svg +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/rgb_elevation.png b/libs/potree/resources/icons/rgb_elevation.png deleted file mode 100644 index d43659f..0000000 Binary files a/libs/potree/resources/icons/rgb_elevation.png and /dev/null differ diff --git a/libs/potree/resources/icons/right.svg b/libs/potree/resources/icons/right.svg deleted file mode 100644 index 5449b63..0000000 --- a/libs/potree/resources/icons/right.svg +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/rotate.svg b/libs/potree/resources/icons/rotate.svg deleted file mode 100644 index 5638488..0000000 --- a/libs/potree/resources/icons/rotate.svg +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/libs/potree/resources/icons/scale.svg b/libs/potree/resources/icons/scale.svg deleted file mode 100644 index 226c124..0000000 --- a/libs/potree/resources/icons/scale.svg +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/sphere.png b/libs/potree/resources/icons/sphere.png deleted file mode 100644 index 7e12854..0000000 Binary files a/libs/potree/resources/icons/sphere.png and /dev/null differ diff --git a/libs/potree/resources/icons/sphere.svg b/libs/potree/resources/icons/sphere.svg deleted file mode 100644 index cddd6c0..0000000 --- a/libs/potree/resources/icons/sphere.svg +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/libs/potree/resources/icons/sphere_distances.svg b/libs/potree/resources/icons/sphere_distances.svg deleted file mode 100644 index f74d500..0000000 --- a/libs/potree/resources/icons/sphere_distances.svg +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/libs/potree/resources/icons/target.svg b/libs/potree/resources/icons/target.svg deleted file mode 100644 index 6a29f1d..0000000 --- a/libs/potree/resources/icons/target.svg +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/top.svg b/libs/potree/resources/icons/top.svg deleted file mode 100644 index da88225..0000000 --- a/libs/potree/resources/icons/top.svg +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/translate.svg b/libs/potree/resources/icons/translate.svg deleted file mode 100644 index 823e6f8..0000000 --- a/libs/potree/resources/icons/translate.svg +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/triangle.svg b/libs/potree/resources/icons/triangle.svg deleted file mode 100644 index 02ac589..0000000 --- a/libs/potree/resources/icons/triangle.svg +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/volume.svg b/libs/potree/resources/icons/volume.svg deleted file mode 100644 index 628fe72..0000000 --- a/libs/potree/resources/icons/volume.svg +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/vr_button.svg b/libs/potree/resources/icons/vr_button.svg deleted file mode 100644 index d61dbd7..0000000 --- a/libs/potree/resources/icons/vr_button.svg +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - VR - - diff --git a/libs/potree/resources/images/background.jpg b/libs/potree/resources/images/background.jpg deleted file mode 100644 index 04caf4f..0000000 Binary files a/libs/potree/resources/images/background.jpg and /dev/null differ diff --git a/libs/potree/resources/images/child_indices.svg b/libs/potree/resources/images/child_indices.svg deleted file mode 100644 index fb703d2..0000000 --- a/libs/potree/resources/images/child_indices.svg +++ /dev/null @@ -1,325 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - 0 - - 4 - - 1 - - 5 - - 2 - - 6 - - 3 - - 7 - - - - diff --git a/libs/potree/resources/images/compas.svg b/libs/potree/resources/images/compas.svg deleted file mode 100644 index fb20a59..0000000 --- a/libs/potree/resources/images/compas.svg +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - N - S - W - E - - diff --git a/libs/potree/resources/images/loading.jpg b/libs/potree/resources/images/loading.jpg deleted file mode 100644 index 8dbd779..0000000 Binary files a/libs/potree/resources/images/loading.jpg and /dev/null differ diff --git a/libs/potree/resources/lang/de/translation.json b/libs/potree/resources/lang/de/translation.json deleted file mode 100644 index 3b4e33c..0000000 --- a/libs/potree/resources/lang/de/translation.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "tb": { - "navigation_opt": "Navigation", - "rendering_opt": "Aussehen", - "tools_opt": "Tools", - "measurments_opt": "Messungen", - "clipping_opt": "Clipping", - "materials_opt": "Materials", - "scene_opt": "Szene", - "classification_filter_opt": "Klassifizierung Filter", - "parameters_opt": "Weitere Einstellungen", - "about_opt": "Über Potree" - }, - "tt": { - "angle_measurement": "Winkelmessung", - "distance_measurement": "Abstandsmessung", - "area_measurement": "Flächenmessung", - "volume_measurement": "Volumenmessung", - "height_profile": "Höhenprofil", - "clip_volume": "Volume clip", - "clip_polygon": "Polygon clip", - "clip_plane_x": "Clipebene auf x-Achse", - "clip_plane_y": "Clipebene auf y-Achse", - "clip_plane_z": "Clipebene auf z-Achse", - "remove_all_measurement": "Alle Messungen entfernen", - "left_view_control": "Linke Seite", - "front_view_control": "Vorderseite", - "top_view_control": "Draufsicht", - "focus_control": "Volle Ausdehnung", - "orbit_control": "Orbit Kontrolle ", - "flight_control": "Fly Kontrolle", - "earth_control": "Earth Kontrolle", - "perspective_camera_control": "Perspektivische Kamera", - "orthographic_camera_control": "Orthografische Kamera", - "navigation_cube_control": "Navigationswürfel", - "remove_all_clipping_volumes": "Alle Clipvolumen entfernen" - }, - "appearance": { - "nb_max_pts": "Max Punkte", - "point_size": "Punktgrösse", - "point_opacity": "Deckkraft", - "field_view": "Sichtfeld", - "point_size_type": "Punktgrösse", - "point_material": "Materials", - "elevation_range": "Elevation Bereich", - "point_quality": "Qualität", - "point_shape": "Form", - "edl_radius": "Radius", - "edl_strength": "Stärke", - "edl_enable": "Ein", - "min_node_size": "Min Knotengrösse", - "clip_mode": "Clip-Modus", - "move_speed": "Speed", - "skybox": "Sky", - "bottom_lock": "Halten über dem Boden", - "box": "Box", - "length_unit": "Lenght unit", - "freeze": "Lock view", - "language": "Sprache" - }, - "profile": { - "nb_points": "Punkt number", - "title": "Höhenprofil", - "save": "Speichern" - }, - "settings": { - "language": "Sprache" - } -} diff --git a/libs/potree/resources/lang/dev/ns.common.json b/libs/potree/resources/lang/dev/ns.common.json deleted file mode 100644 index a54818f..0000000 --- a/libs/potree/resources/lang/dev/ns.common.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "simple_dev": "ok_from_common_dev", - "test": { - "simple_dev": "ok_from_common_dev", - "fallback_dev": "ok_from_common_dev-fallback" - } -} \ No newline at end of file diff --git a/libs/potree/resources/lang/dev/ns.special.json b/libs/potree/resources/lang/dev/ns.special.json deleted file mode 100644 index d3c94c8..0000000 --- a/libs/potree/resources/lang/dev/ns.special.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "simple_dev": "ok_from_special_dev", - "test": { - "simple_dev": "ok_from_special_dev" - } -} \ No newline at end of file diff --git a/libs/potree/resources/lang/dev/translation.json b/libs/potree/resources/lang/dev/translation.json deleted file mode 100644 index 55e7448..0000000 --- a/libs/potree/resources/lang/dev/translation.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "simple_dev": "ok_from_dev", - "test": { - "simple_dev": "ok_from_dev" - } -} \ No newline at end of file diff --git a/libs/potree/resources/lang/en-US/ns.common.json b/libs/potree/resources/lang/en-US/ns.common.json deleted file mode 100644 index cc324a0..0000000 --- a/libs/potree/resources/lang/en-US/ns.common.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "simple_en-US": "ok_from_common_en-US", - "test": { - "simple_en-US": "ok_from_common_en-US" - } -} \ No newline at end of file diff --git a/libs/potree/resources/lang/en-US/ns.special.json b/libs/potree/resources/lang/en-US/ns.special.json deleted file mode 100644 index 1048726..0000000 --- a/libs/potree/resources/lang/en-US/ns.special.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "simple_en-US": "ok_from_special_en-US", - "test": { - "simple_en-US": "ok_from_special_en-US" - } -} \ No newline at end of file diff --git a/libs/potree/resources/lang/en-US/translation.json b/libs/potree/resources/lang/en-US/translation.json deleted file mode 100644 index ca84855..0000000 --- a/libs/potree/resources/lang/en-US/translation.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "simple_en-US": "ok_from_en-US", - "test": { - "simple_en-US": "ok_from_en-US" - } -} \ No newline at end of file diff --git a/libs/potree/resources/lang/en/ns.common.json b/libs/potree/resources/lang/en/ns.common.json deleted file mode 100644 index 6012093..0000000 --- a/libs/potree/resources/lang/en/ns.common.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "simple_en": "ok_from_common_en", - "test": { - "simple_en": "ok_from_common_en", - "fallback_en": "ok_from_common_en-fallback" - } -} \ No newline at end of file diff --git a/libs/potree/resources/lang/en/ns.special.json b/libs/potree/resources/lang/en/ns.special.json deleted file mode 100644 index c30b59c..0000000 --- a/libs/potree/resources/lang/en/ns.special.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "simple_en": "ok_from_special_en", - "test": { - "simple_en": "ok_from_special_en" - } -} \ No newline at end of file diff --git a/libs/potree/resources/lang/en/translation.json b/libs/potree/resources/lang/en/translation.json deleted file mode 100644 index 938ba88..0000000 --- a/libs/potree/resources/lang/en/translation.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "tb": { - "navigation_opt": "Navigation", - "rendering_opt": "Appearance", - "tools_opt": "Tools", - "measurments_opt": "Measurements", - "clipping_opt": "Clipping", - "annotations_opt": "Annotations", - "materials_opt": "Materials", - "scene_opt": "Scene", - "classification_filter_opt": "Classification filter", - "filters_opt": "Filters", - "parameters_opt": "Other settings", - "about_opt": "About" - }, - "tt": { - "angle_measurement": "Angle measurement", - "point_measurement": "Point measurement", - "distance_measurement": "Distance measurement", - "height_measurement": "Height measurement", - "circle_measurement": "Circle measurement", - "area_measurement": "Area measurement", - "volume_measurement": "Volume measurement", - "height_profile": "Height profile", - "annotation": "Annotation", - "clip_volume": "Volume clip", - "clip_polygon": "Polygon clip", - "screen_clip_box": "Draw a selection box. Requires you to be in orthographic camera mode!", - "clip_plane_x": "Clip plane on x axis", - "clip_plane_y": "Clip plane on y axis", - "clip_plane_z": "Clip plane on z axis", - "remove_all_measurement": "Remove all measurements", - "left_view_control": "Left view", - "right_view_control": "Righ view", - "front_view_control": "Front view", - "back_view_control": "Back view", - "top_view_control": "Top view", - "bottom_view_control": "Bottom view", - "focus_control": "Full extent", - "orbit_control": "Orbit control", - "flight_control": "Fly control", - "heli_control": "Helicopter control", - "earth_control": "Earth control", - "perspective_camera_control": "Perspective camera", - "orthographic_camera_control": "Orthographic camera", - "navigation_cube_control": "Navigation cube", - "remove_all_clipping_volumes": "Remove all clipping volumes", - "compass": "Compass", - "camera_animation": "Camera Animation" - }, - "appearance": { - "nb_max_pts": "Point budget", - "point_size": "Point size", - "min_point_size": "Minimum size", - "point_opacity": "Opacity", - "field_view": "Field of view", - "point_size_type": "Point sizing", - "point_material": "Materials", - "elevation_range": "Elevation range", - "extra_range": "Scalar range", - "point_quality": "Quality", - "point_shape": "Shape", - "edl_radius": "Radius", - "edl_strength": "Strength", - "edl_opacity": "Opacity", - "edl_enable": "Enable", - "min_node_size": "Min node size", - "clip_mode": "Clip mode", - "move_speed": "Speed", - "skybox": "Sky", - "bottom_lock": "Keep above ground", - "box": "Box", - "length_unit": "Length unit", - "freeze": "Lock view", - "language": "Language", - "backface_culling": "Backface Culling" - }, - "measurements": { - "clip": "clip", - "show": "show volume" - }, - "annotations": { - "show3D": "show in 3D", - "showMap": "show on map" - }, - "profile": { - "nb_points": "Number of Points", - "title": "Height profile", - "save_las": "Save LAS(3D)", - "save_ortho": "Save CSV(2D)" - }, - "scene": { - "camera_position": "Camera Position", - "camera_target": "Camera Target" - }, - "filters": { - "return_number": "Return Number", - "number_of_returns": "Number of Returns", - "gps_min": "min", - "gps_max": "max", - "gps_time": "GPS Time" - }, - "settings": { - "language": "Language" - } -} diff --git a/libs/potree/resources/lang/es/translation.json b/libs/potree/resources/lang/es/translation.json deleted file mode 100644 index bb5fbe3..0000000 --- a/libs/potree/resources/lang/es/translation.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "tb": { - "navigation_opt": "Navegación", - "rendering_opt": "Apariencia", - "tools_opt": "Herramientas", - "measurments_opt": "Medidas", - "clipping_opt": "Recorte", - "annotations_opt": "Anotaciones", - "materials_opt": "Materiales", - "scene_opt": "Escena", - "classification_filter_opt": "Filtro de clasificación", - "parameters_opt": "Otros ajustes", - "about_opt": "Acerca de" - }, - "tt": { - "angle_measurement": "Medición de ángulos", - "point_measurement": "Medición de puntos", - "distance_measurement": "Medición de distancia", - "height_measurement": "Medición de altura", - "area_measurement": "Medición de área", - "volume_measurement": "Medición de volumen", - "height_profile": "Perfil de altura", - "clip_volume": "Clip de volumen", - "clip_polygon": "Clip poligonal", - "screen_clip_box": "Dibuje un cuadro de selección. Requiere que usted esté en modo de cámara ortográfica", - "clip_plane_x": "Plano del clip en el eje x", - "clip_plane_y": "Plano del clip en el eje y", - "clip_plane_z": "Plano del clip en el eje z", - "remove_all_measurement": "Eliminar todas las mediciones", - "left_view_control": "Vista izquierda", - "right_view_control": "Vista derecha", - "front_view_control": "Vista de frente", - "back_view_control": "Vista desde atrás", - "top_view_control": "Vista superior", - "bottom_view_control": "Vista inferior", - "focus_control": "Alcance total", - "orbit_control": "Control de órbita", - "flight_control": "Control de vuelo", - "heli_control": "Control de helicóptero", - "earth_control": "Control de la tierra", - "perspective_camera_control": "Perspectiva de la cámara", - "orthographic_camera_control": "Cámara ortográfica", - "navigation_cube_control": "Cubo de navegación", - "remove_all_clipping_volumes": "Eliminar todos los volúmenes de recorte" - }, - "appearance": { - "nb_max_pts": "Presupuesto de puntos", - "point_size": "Tamaño del punto", - "point_opacity": "Opacidad", - "field_view": "Campo de visión", - "point_size_type": "Dimensionamiento de puntos", - "point_material": "Materiales", - "elevation_range": "Rango de elevación", - "point_quality": "Calidad", - "point_shape": "Forma", - "edl_radius": "Radio", - "edl_strength": "Fuerza", - "edl_enable": "Habilitar", - "min_node_size": "Tamaño de nodo mínimo", - "clip_mode": "Modo clip", - "move_speed": "Velocidad", - "skybox": "Cielo", - "bottom_lock": "Mantenerse sobre el suelo", - "box": "Caja", - "length_unit": "Unidad de longitud", - "freeze": "Vista de bloqueo", - "language": "Lenguaje" - }, - "measurements": { - "clip": "clip", - "show": "ver volumen" - }, - "annotations": { - "show3D": "ver en 3D", - "showMap": "ver en mapa" - }, - "profile": { - "nb_points": "Número de puntos", - "title": "Perfil de altura", - "save_las": "Guardar LAS(3D)", - "save_ortho": "Guardar CSV(2D)" - }, - "scene": { - "camera_position": "Posición de la cámara", - "camera_target": "Objetuvo de la cámara" - }, - "settings": { - "language": "Lenguaje" - } -} diff --git a/libs/potree/resources/lang/fr/translation.json b/libs/potree/resources/lang/fr/translation.json deleted file mode 100644 index 99fd577..0000000 --- a/libs/potree/resources/lang/fr/translation.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "tb": { - "navigation_opt": "Navigation", - "rendering_opt": "Apparence", - "tools_opt": "Outils", - "measurments_opt": "Mesures", - "materials_opt": "Matériaux", - "scene_opt": "Scène", - "classification_filter_opt": "Filtre de classification", - "parameters_opt": "Autres paramètres", - "about_opt": "À propos" - }, - "tt": { - "angle_measurement": "Mesurer un angle", - "distance_measurement": "Mesurer une distance", - "area_measurement": "Mesurer une surface", - "volume_measurement": "Mesurer un volume", - "height_profile": "Mesurer un profil", - "clip_volume": "Sélectionner des points par un volume", - "remove_all_measurement": "Supprimer toutes les mesures", - "left_view_control": "Vue de la gauche", - "front_view_control": "Vue de face", - "top_view_control": "Vue de dessus", - "focus_control": "Vue complète", - "orbit_control": "Orbite", - "flight_control": "Vol", - "earth_control": "Earth" - }, - "appearance": { - "nb_max_pts": "Nb points max", - "point_size": "Taille des points", - "point_opacity": "Opacité", - "field_view": "Angle de vue", - "point_size_type": "Type de taille", - "point_material": "Matériaux", - "elevation_range": "Plage altimétrique", - "point_quality": "Qualité", - "edl_radius": "Rayon", - "edl_strength": "Intensité", - "edl_enable": "Activer", - "min_node_size": "Taille minimum des noeuds", - "clip_mode": "Mode d'intersection", - "move_speed": "Vitesse", - "skybox": "Ciel", - "bottom_lock": "Rester au-dessus du sol", - "box": "Boite", - "freeze": "Vérouiller la vue", - "language": "Choix de la langue" - }, - "profile": { - "nb_points": "Nombre de points", - "title": "Profil altimétrique", - "save": "Enregistrer" - }, - "settings": { - "language": "Langue" - } -} diff --git a/libs/potree/resources/lang/jp/translation.json b/libs/potree/resources/lang/jp/translation.json deleted file mode 100644 index f8fae5e..0000000 --- a/libs/potree/resources/lang/jp/translation.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "tb": { - "navigation_opt": "ナビゲーション", - "rendering_opt": "外観", - "tools_opt": "ツール", - "measurments_opt": "測定結果", - "annotations_opt": "注釈", - "materials_opt": "材料", - "scene_opt": "シーン", - "classification_filter_opt": "フィルター分類", - "parameters_opt": "その他の設定", - "about_opt": "協力" - }, - "tt": { - "angle_measurement": "角度測定", - "distance_measurement": "距離測定", - "height_measurement": "標高測定", - "area_measurement": "面積測定", - "volume_measurement": "体積測定", - "height_profile": "断面図", - "clip_volume": "クリッピングボリューム", - "remove_all_measurement": "計測結果のクリア", - "left_view_control": "左から見る", - "front_view_control": "前から見る", - "top_view_control": "上から見る", - "focus_control": "全体表示", - "orbit_control": " 軌道制御", - "flight_control": "Vol", - "earth_control": "地球" - }, - "appearance": { - "nb_max_pts": "表示するポイント数を設定", - "point_size": "点サイズを設定", - "point_opacity": "不透明度", - "field_view": "視野", - "point_size_type": "点タイプ設定", - "point_material": "点の材質", - "elevation_range": "Plage altimétrique", - "point_quality": "品質", - "edl_radius": "点群の半径", - "edl_strength": "点群の強度", - "edl_enable": "アクティブにする", - "min_node_size": "最小ノードサイズ", - "clip_mode": "クリップモード", - "move_speed": "動く速度", - "skybox": "空", - "bottom_lock": "地上面を固定します。", - "box": "ボックス", - "freeze": "ビューの固定", - "language": "言語" - }, - "profile": { - "nb_points": "点群番号", - "title": "Profil altimétrique", - "save_las": "LAS(3D)形式で保存", - "save_ortho": "CSV(2D)形式で保存", - "save": "保存" - }, - "scene": { - "camera_position": "Camera Position", - "camera_target": "Camera Target" - }, - "settings": { - "language": "言語" - } -} diff --git a/libs/potree/resources/lang/se/translation.json b/libs/potree/resources/lang/se/translation.json deleted file mode 100644 index 688db6c..0000000 --- a/libs/potree/resources/lang/se/translation.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "tb": { - "navigation_opt": "Navigering", - "rendering_opt": "Utseende", - "tools_opt": "Verktyg", - "measurments_opt": "Mätning", - "clipping_opt": "Urklipp", - "annotations_opt": "Annoteringar", - "materials_opt": "Material", - "scene_opt": "Scen", - "classification_filter_opt": "Klassificeringsfilter", - "filters_opt": "Filter", - "parameters_opt": "Andra inställningar", - "about_opt": "Om" - }, - "tt": { - "angle_measurement": "Vinkelmätning", - "point_measurement": "Punktmätning", - "distance_measurement": "Distansmätning", - "height_measurement": "Höjdmätning", - "area_measurement": "Areamätning", - "volume_measurement": "Volymmätning", - "height_profile": "Höjdprofil", - "clip_volume": "Volymklippning", - "clip_polygon": "Polygonklippning", - "screen_clip_box": "Rita en yta för selektering. Ortogonalt kameraläge krävs!", - "clip_plane_x": "Klippyta på x axel", - "clip_plane_y": "Klippyta på y axel", - "clip_plane_z": "Klippyta på z axel", - "remove_all_measurement": "Ta bort alla mätningar", - "left_view_control": "Vy vänster", - "right_view_control": "Vy höger", - "front_view_control": "Vy fram", - "back_view_control": "Vy bak", - "top_view_control": "Vy ovan", - "bottom_view_control": "Vy under", - "focus_control": "Full utsträckning", - "orbit_control": "Kretsa kontroll", - "flight_control": "Flyga kontroll", - "heli_control": "Helikopter kontroll", - "earth_control": "Earth control", - "perspective_camera_control": "Kamera perspektiv", - "orthographic_camera_control": "Kamera ortogonal", - "navigation_cube_control": "Navigeringskub", - "remove_all_clipping_volumes": "Ta bort alla klippytor" - }, - "appearance": { - "nb_max_pts": "Punktbudget", - "point_size": "Punktstorlek", - "point_opacity": "Transparens", - "field_view": "Synfält", - "point_size_type": "Punkttyp", - "point_material": "Material", - "elevation_range": "Höjdintervall", - "point_quality": "Kvalitet", - "point_shape": "Form", - "edl_radius": "Radie", - "edl_strength": "Styrka", - "edl_enable": "Aktiverad", - "min_node_size": "Min nodstorlek", - "clip_mode": "Klippläge", - "move_speed": "Hastighet", - "skybox": "Skybox", - "bottom_lock": "Lås över marknivå", - "box": "Box", - "length_unit": "Enhet för längd", - "freeze": "Lås vy", - "language": "Språk" - }, - "measurements": { - "clip": "klipp", - "show": "visa volym" - }, - "annotations": { - "show3D": "visa i 3D", - "showMap": "visa på karta" - }, - "profile": { - "nb_points": "Antal Punkter", - "title": "Höjdprofil", - "save_las": "Spara LAS(3D)", - "save_ortho": "Spara CSV(2D)" - }, - "scene": { - "camera_position": "Kamera Position", - "camera_target": "Kamera Mål" - }, - "filters": { - "return_number": "Returnera Antal", - "number_of_returns": "Antal Returneringar", - "gps_min": "min", - "gps_max": "max", - "gps_time": "GPS Tid" - }, - "settings": { - "language": "Språk" - } -} diff --git a/libs/potree/resources/logo.png b/libs/potree/resources/logo.png deleted file mode 100644 index 236deb5..0000000 Binary files a/libs/potree/resources/logo.png and /dev/null differ diff --git a/libs/potree/resources/logo.svg b/libs/potree/resources/logo.svg deleted file mode 100644 index a3a73e3..0000000 --- a/libs/potree/resources/logo.svg +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - WebGL point cloud visualization - Potree.org - - - diff --git a/libs/potree/resources/logo_small.png b/libs/potree/resources/logo_small.png deleted file mode 100644 index 6d1868b..0000000 Binary files a/libs/potree/resources/logo_small.png and /dev/null differ diff --git a/libs/potree/resources/models/stanford_bunny_reduced.mtl b/libs/potree/resources/models/stanford_bunny_reduced.mtl deleted file mode 100644 index c5af617..0000000 --- a/libs/potree/resources/models/stanford_bunny_reduced.mtl +++ /dev/null @@ -1,13 +0,0 @@ -# Blender MTL File: 'None' -# Material Count: 1 - -newmtl Material.001 -Ns 96.078431 -Ka 1.000000 1.000000 1.000000 -Kd 0.640000 0.352654 0.488547 -Ks 0.500000 0.500000 0.500000 -Ke 0.000000 0.000000 0.000000 -Ni 1.000000 -d 1.000000 -illum 2 -map_Kd C:\\dev\\workspaces\\potree\\develop\\resources\\textures\\brick_pavement.jpg diff --git a/libs/potree/resources/models/stanford_bunny_reduced.obj b/libs/potree/resources/models/stanford_bunny_reduced.obj deleted file mode 100644 index 2222e04..0000000 --- a/libs/potree/resources/models/stanford_bunny_reduced.obj +++ /dev/null @@ -1,22384 +0,0 @@ -# Blender v2.79 (sub 0) OBJ File: '' -# www.blender.org -mtllib stanford_bunny_reduced.mtl -o stanford_bunny_reduced -v -0.026015 0.080404 0.021808 -v -0.032178 0.141946 -0.017212 -v -0.080718 0.120681 0.015666 -v -0.078180 0.060750 -0.026141 -v -0.023129 0.080012 0.024065 -v 0.016493 0.090119 0.016845 -v -0.024836 0.124400 -0.018354 -v 0.045263 0.054182 0.005458 -v -0.071339 0.123541 -0.007453 -v -0.010076 0.093775 0.015159 -v -0.072013 0.122345 0.015820 -v -0.074228 0.130989 -0.029073 -v -0.075178 0.134347 -0.036959 -v -0.077120 0.132986 -0.038342 -v -0.015844 0.082427 0.024197 -v -0.076832 0.102678 0.036875 -v -0.017349 0.078202 0.026462 -v -0.036220 0.138487 -0.013773 -v -0.037684 0.139022 -0.013772 -v -0.091535 0.113026 0.008638 -v 0.008183 0.099347 -0.000081 -v -0.057447 0.009548 0.031515 -v -0.052683 0.011730 0.030505 -v -0.064144 0.129577 -0.034149 -v -0.030386 0.146611 -0.020306 -v -0.025782 0.083289 0.019083 -v 0.003016 0.010207 0.031317 -v -0.024994 0.148076 -0.023777 -v -0.059546 0.124187 -0.007094 -v -0.062224 0.122949 -0.009014 -v -0.034513 0.094390 0.002787 -v -0.042194 0.011280 0.027613 -v 0.007714 0.009971 0.030783 -v -0.031217 0.093039 -0.012478 -v -0.035327 0.061990 -0.038224 -v -0.057122 0.013203 0.029083 -v -0.039599 0.010934 0.026852 -v 0.000378 0.012080 0.031432 -v 0.004023 0.011975 0.031329 -v 0.007312 0.011940 0.030972 -v -0.040046 0.134464 -0.011134 -v -0.014898 0.093990 0.011910 -v -0.034602 0.094878 -0.010601 -v 0.046793 0.036377 0.010525 -v -0.040882 0.012406 0.027183 -v -0.038322 0.011785 0.026448 -v -0.092009 0.084593 0.017443 -v -0.026958 0.012376 0.036457 -v -0.023633 0.013255 0.038175 -v -0.020423 0.013665 0.037882 -v -0.012974 0.012804 0.035281 -v -0.008831 0.013636 0.033194 -v -0.005391 0.013506 0.032504 -v -0.000347 0.013471 0.032427 -v -0.047362 0.084593 0.017130 -v -0.007039 0.077493 0.028597 -v -0.090110 0.119127 0.003268 -v -0.054905 0.014991 0.026879 -v -0.052070 0.014319 0.027469 -v -0.049074 0.013867 0.027012 -v -0.023893 0.015842 0.035933 -v -0.019197 0.015665 0.035376 -v -0.015144 0.015351 0.033983 -v -0.008304 0.014945 0.033139 -v -0.005708 0.016123 0.035088 -v 0.002444 0.014455 0.034435 -v 0.006239 0.014074 0.034319 -v -0.049627 0.016776 0.023271 -v -0.025482 0.016552 0.034391 -v -0.017873 0.017116 0.032665 -v -0.014947 0.016316 0.033158 -v -0.012387 0.015217 0.033343 -v -0.009590 0.016984 0.035394 -v -0.001358 0.015646 0.035095 -v 0.008826 0.015611 0.034622 -v -0.072733 0.090172 0.039093 -v -0.008626 0.091393 0.019304 -v 0.038479 0.013679 0.016466 -v -0.000258 0.081198 0.027382 -v -0.051771 0.016843 0.023013 -v -0.047589 0.016468 0.024304 -v -0.044138 0.015536 0.025409 -v -0.041036 0.016892 0.025119 -v -0.035882 0.016897 0.024405 -v -0.023690 0.017656 0.032421 -v -0.021546 0.017935 0.031552 -v -0.015981 0.017651 0.033002 -v -0.012593 0.018476 0.035911 -v -0.000968 0.019161 0.039297 -v 0.001126 0.017400 0.037173 -v 0.004630 0.019772 0.038833 -v 0.033102 0.013941 0.015778 -v 0.039679 0.016322 0.017633 -v -0.047040 0.019024 0.023134 -v -0.039629 0.020535 0.024763 -v 0.030947 0.086415 0.005823 -v -0.025818 0.019032 0.027875 -v -0.023336 0.018861 0.028942 -v -0.020714 0.018924 0.030864 -v -0.018801 0.018843 0.032267 -v 0.007987 0.019344 0.037129 -v 0.035101 0.017992 0.016865 -v 0.041841 0.018690 0.018190 -v -0.005506 0.097190 0.010870 -v -0.015881 0.128084 -0.024441 -v -0.041123 0.137672 -0.013007 -v -0.063484 0.126716 -0.031102 -v -0.021843 0.020141 0.029724 -v -0.016423 0.021819 0.035836 -v -0.014229 0.020043 0.035335 -v -0.007408 0.019732 0.037607 -v 0.001576 0.021567 0.039047 -v -0.057993 0.121031 0.016651 -v -0.029770 0.022185 0.021725 -v -0.011009 0.023498 0.037815 -v -0.004453 0.021691 0.039402 -v -0.000824 0.021946 0.040486 -v -0.081302 0.092705 0.037405 -v -0.079377 0.095170 0.038703 -v 0.038609 0.076100 -0.011439 -v -0.064378 0.116329 0.023578 -v -0.028631 0.021472 0.021805 -v -0.003069 0.026557 0.039187 -v 0.007259 0.023757 0.038265 -v 0.003524 0.078491 0.027744 -v 0.044730 0.021740 0.018004 -v -0.043426 0.019982 0.024486 -v -0.036284 0.020563 0.023974 -v -0.032805 0.024396 0.023112 -v -0.077332 0.066048 -0.025371 -v -0.006306 0.024218 0.039313 -v 0.001847 0.025517 0.039657 -v 0.006765 0.026127 0.038919 -v -0.018239 0.091088 0.014621 -v -0.036439 0.083116 0.018087 -v 0.038575 0.024036 0.016681 -v -0.080113 0.122514 0.010129 -v -0.044121 0.026333 0.024910 -v -0.038938 0.026411 0.025850 -v -0.012598 0.028243 0.039554 -v -0.009419 0.028020 0.040946 -v 0.000104 0.026242 0.040068 -v 0.009382 0.026588 0.038262 -v 0.008738 0.090688 0.020263 -v 0.047164 0.024037 0.017403 -v -0.042061 0.026903 0.025732 -v -0.034673 0.027254 0.024800 -v -0.028469 0.026978 0.022111 -v -0.026237 0.025612 0.023968 -v -0.005677 0.028794 0.041281 -v -0.001214 0.028431 0.041391 -v 0.002946 0.028002 0.041241 -v 0.005327 0.028688 0.041184 -v 0.041166 0.024422 0.017197 -v 0.046327 0.026611 0.017286 -v -0.011537 0.097435 0.003912 -v 0.003443 0.031518 0.042224 -v -0.094070 0.086786 0.005882 -v -0.075896 0.109283 0.032761 -v 0.041424 0.029039 0.014859 -v 0.049952 0.028556 0.015935 -v 0.015864 0.081927 0.023081 -v -0.062119 0.116379 -0.017854 -v -0.032605 0.030283 0.024259 -v -0.028615 0.030421 0.022931 -v -0.015490 0.029917 0.038683 -v -0.007841 0.031292 0.041631 -v -0.003890 0.030417 0.041396 -v -0.086077 0.089878 -0.017240 -v -0.009319 0.089331 0.021216 -v 0.000784 0.086219 0.024548 -v 0.045665 0.028693 0.016411 -v -0.029162 0.093425 -0.005410 -v -0.051920 0.030301 0.017158 -v -0.041829 0.030178 0.026529 -v -0.036447 0.030854 0.026747 -v -0.027320 0.030068 0.023317 -v -0.013878 0.032931 0.039144 -v -0.013553 0.030350 0.039774 -v -0.001522 0.030980 0.042189 -v 0.009502 0.034754 0.040111 -v -0.092913 0.086539 -0.003437 -v -0.079644 0.090335 0.036342 -v -0.029531 0.060408 -0.039494 -v 0.024190 0.092277 0.004984 -v 0.003438 0.036804 0.041084 -v 0.005943 0.035637 0.040832 -v -0.020881 0.151348 -0.035620 -v -0.062773 0.035630 0.020312 -v -0.025632 0.093514 -0.009512 -v -0.065246 0.124664 -0.023660 -v -0.039544 0.033939 0.027217 -v -0.036517 0.035093 0.027039 -v -0.015813 0.032908 0.038967 -v -0.010211 0.036109 0.040518 -v -0.005873 0.036366 0.041590 -v 0.047838 0.034236 0.013112 -v 0.049131 0.031489 0.014925 -v -0.013081 0.035727 0.039345 -v -0.001719 0.036860 0.042142 -v 0.038378 0.072776 -0.016165 -v 0.007253 0.086492 0.022914 -v 0.043711 0.033239 0.012460 -v -0.078590 0.143190 -0.062477 -v -0.069048 0.130067 -0.026618 -v -0.041895 0.035691 0.026895 -v -0.034391 0.036818 0.026797 -v -0.028950 0.036053 0.024439 -v -0.027387 0.036864 0.025501 -v -0.017027 0.039211 0.040304 -v -0.015155 0.036177 0.040100 -v 0.001028 0.039731 0.042342 -v -0.036213 0.087986 0.015266 -v -0.021437 0.073004 -0.037219 -v -0.034998 0.136464 -0.029436 -v -0.009531 0.059285 -0.050730 -v -0.044848 0.038916 0.027447 -v -0.030929 0.035164 0.024584 -v -0.028125 0.040378 0.026229 -v 0.045169 0.038817 0.007925 -v -0.015440 0.041483 0.040982 -v -0.013634 0.039205 0.040103 -v -0.011636 0.040088 0.041413 -v -0.002897 0.040769 0.044127 -v 0.008376 0.043114 0.041795 -v -0.062041 0.142885 -0.071148 -v -0.005147 0.086868 0.023756 -v -0.085548 0.076878 -0.007887 -v -0.062535 0.116944 -0.022061 -v -0.032032 0.040991 0.026008 -v -0.026709 0.060074 -0.045354 -v -0.088682 0.070900 0.000429 -v 0.002881 0.060748 -0.047116 -v -0.051080 0.041810 0.027757 -v -0.048204 0.040153 0.026365 -v -0.043048 0.042202 0.028195 -v 0.005240 0.092835 0.018287 -v -0.012850 0.043492 0.042335 -v -0.007009 0.040134 0.043560 -v 0.002571 0.042254 0.041781 -v -0.016576 0.085375 0.021879 -v -0.062760 0.134787 -0.058597 -v -0.022739 0.152500 -0.026962 -v -0.058104 0.043435 0.028018 -v -0.046604 0.042533 0.027463 -v -0.039438 0.041185 0.027481 -v 0.000347 0.044365 0.043697 -v -0.002106 0.084806 0.025425 -v -0.019361 0.084074 0.022276 -v 0.026674 0.088516 0.011286 -v -0.035853 0.143915 -0.019765 -v -0.054403 0.042380 0.027203 -v -0.035933 0.040742 0.027548 -v -0.030914 0.045544 0.026444 -v -0.029977 0.041904 0.025799 -v -0.016210 0.045333 0.041799 -v -0.008727 0.043985 0.042839 -v -0.006232 0.047547 0.043097 -v -0.004349 0.043861 0.044252 -v 0.006161 0.042184 0.042185 -v -0.071298 0.107009 0.033050 -v -0.039823 0.141414 -0.018419 -v -0.062612 0.045204 0.027252 -v -0.041367 0.045579 0.028731 -v -0.021394 0.046855 0.040992 -v 0.002219 0.047593 0.042374 -v -0.032970 0.085251 0.017000 -v -0.024718 0.086877 0.016968 -v -0.014058 0.087329 0.021994 -v 0.006125 0.099100 0.004356 -v -0.051592 0.124827 -0.004366 -v -0.026827 0.148127 -0.022081 -v -0.079019 0.123412 0.004150 -v -0.057394 0.046762 0.029303 -v -0.048964 0.045503 0.029378 -v -0.045222 0.046008 0.027604 -v -0.037561 0.046630 0.028082 -v -0.035739 0.045292 0.027371 -v -0.017466 0.048533 0.043021 -v -0.006584 0.085167 0.024477 -v 0.005932 0.082896 0.025508 -v -0.081211 0.116510 0.022809 -v -0.074595 0.120195 0.020168 -v -0.060661 0.048726 0.028620 -v -0.055796 0.049510 0.030399 -v -0.052110 0.047596 0.029375 -v -0.048528 0.049870 0.029520 -v -0.039763 0.048221 0.028384 -v -0.031305 0.047900 0.026655 -v -0.086409 0.119847 0.010735 -v -0.010563 0.046804 0.043459 -v -0.008846 0.048765 0.043569 -v 0.004138 0.046713 0.041372 -v -0.027393 0.085105 0.017309 -v -0.009020 0.084349 0.024990 -v -0.077226 0.092336 0.037952 -v -0.037833 0.135439 -0.012601 -v -0.066893 0.128382 -0.026896 -v -0.027258 0.093013 0.002517 -v -0.054417 0.048950 0.030500 -v -0.051553 0.050603 0.029999 -v -0.046414 0.049454 0.028962 -v -0.043220 0.049511 0.027488 -v -0.039599 0.050812 0.029039 -v -0.036505 0.049452 0.028951 -v -0.033060 0.049399 0.027109 -v -0.030702 0.051363 0.027789 -v -0.014584 0.048481 0.042341 -v -0.006205 0.051528 0.042306 -v -0.002558 0.049195 0.042954 -v -0.022874 0.085776 0.019211 -v -0.046284 0.132276 -0.009418 -v -0.045718 0.088531 0.012860 -v 0.041047 0.068649 0.008919 -v 0.040153 0.074149 0.000759 -v 0.042368 0.068354 -0.013313 -v -0.036918 0.094703 0.003648 -v -0.006183 0.068969 0.029996 -v -0.046565 0.052312 0.030103 -v -0.017866 0.052716 0.043015 -v -0.016079 0.055138 0.042190 -v -0.008656 0.054628 0.042711 -v -0.003357 0.052403 0.042884 -v 0.001915 0.052917 0.042965 -v -0.018149 0.094118 0.008572 -v -0.003037 0.090313 0.021319 -v -0.039354 0.136762 -0.012132 -v -0.068990 0.127065 -0.021452 -v -0.070915 0.125037 -0.016269 -v -0.069864 0.134031 -0.034188 -v -0.063875 0.049421 0.029212 -v -0.058881 0.052041 0.029192 -v -0.049378 0.053383 0.030969 -v -0.041948 0.052647 0.027962 -v -0.034501 0.053269 0.028193 -v -0.012381 0.052885 0.042782 -v 0.004242 0.054446 0.042479 -v 0.030144 0.085737 0.011309 -v -0.042932 0.086058 0.016317 -v -0.025262 0.149765 -0.023608 -v -0.067077 0.051989 0.028971 -v -0.053727 0.053174 0.030899 -v -0.033992 0.054713 0.028122 -v -0.032162 0.053063 0.027411 -v -0.006345 0.097456 -0.013215 -v 0.004877 0.099545 -0.005586 -v 0.007996 0.054908 0.041475 -v 0.021973 0.054037 0.034659 -v -0.027659 0.061514 -0.040450 -v -0.028953 0.059578 -0.041611 -v 0.043275 0.064315 0.007375 -v -0.072505 0.135666 -0.036816 -v -0.033101 0.144819 -0.019255 -v -0.064942 0.056355 0.030362 -v -0.061295 0.056574 0.030972 -v -0.057629 0.053911 0.029723 -v -0.041282 0.055750 0.028007 -v -0.037809 0.054278 0.029435 -v 0.000710 0.057141 0.041694 -v -0.042988 0.132150 -0.009616 -v 0.018389 0.058693 0.033484 -v 0.040481 0.072186 -0.013728 -v -0.017726 0.087560 0.020011 -v -0.087507 0.084417 -0.012359 -v -0.055814 0.119773 0.014911 -v -0.058843 0.057699 0.030444 -v -0.047219 0.056040 0.030379 -v -0.043824 0.053752 0.028950 -v -0.044886 0.058344 0.028415 -v -0.042671 0.057396 0.027999 -v -0.038054 0.058087 0.028928 -v -0.030532 0.054692 0.029005 -v -0.013810 0.056942 0.042350 -v -0.011578 0.056184 0.041926 -v -0.008098 0.057926 0.042534 -v -0.069408 0.091301 0.038562 -v 0.043075 0.067721 0.000098 -v -0.054994 0.056698 0.030353 -v -0.049662 0.055466 0.031082 -v -0.035690 0.057108 0.028693 -v -0.011165 0.060326 0.041583 -v 0.000857 0.099392 0.001795 -v -0.040053 0.082615 0.019584 -v -0.010678 0.132988 -0.031134 -v -0.012126 0.097681 -0.000640 -v -0.055968 0.059892 0.030789 -v -0.053147 0.058151 0.030152 -v -0.051535 0.060054 0.029431 -v -0.048387 0.059510 0.029524 -v -0.034269 0.058790 0.029962 -v -0.029586 0.057197 0.029411 -v -0.015629 0.061503 0.040264 -v -0.004912 0.060700 0.041600 -v -0.079566 0.103854 0.035818 -v 0.022141 0.092938 0.008539 -v -0.075245 0.122724 -0.012459 -v -0.069723 0.058298 0.027492 -v -0.067639 0.061051 0.027901 -v -0.067076 0.057014 0.029528 -v -0.061937 0.061014 0.030494 -v -0.041196 0.061828 0.027571 -v -0.029031 0.059928 0.029529 -v -0.026999 0.061949 0.030436 -v -0.014403 0.060272 0.041300 -v 0.006156 0.058941 0.040072 -v 0.008266 0.062628 0.037262 -v -0.071052 0.086200 0.038791 -v -0.058010 0.115549 0.018189 -v 0.037205 0.077625 0.007965 -v 0.013341 0.090708 0.018601 -v -0.053425 0.062579 0.029207 -v -0.036848 0.061608 0.029512 -v -0.031998 0.062273 0.029968 -v -0.012777 0.096019 0.009045 -v -0.011420 0.062159 0.040627 -v -0.006813 0.063631 0.039787 -v 0.002583 0.062081 0.040109 -v 0.011675 0.060839 0.037698 -v -0.032736 0.143290 -0.017383 -v -0.061874 0.065566 0.028320 -v -0.057307 0.062312 0.030361 -v -0.025808 0.063587 0.029176 -v -0.009042 0.065816 0.037344 -v 0.005444 0.064418 0.037372 -v 0.017289 0.062737 0.033267 -v 0.020963 0.064483 0.032393 -v 0.036077 0.076570 -0.017753 -v -0.041576 0.096684 -0.003318 -v -0.008646 0.097994 -0.006712 -v -0.059226 0.065783 0.028386 -v -0.054612 0.064433 0.028817 -v -0.049066 0.063054 0.030279 -v -0.045740 0.062730 0.028813 -v -0.039756 0.064073 0.027696 -v -0.032831 0.064039 0.029952 -v -0.029113 0.064002 0.030425 -v 0.044863 0.036413 0.010153 -v -0.049306 0.109265 -0.004123 -v -0.003351 0.066095 0.037317 -v -0.000014 0.064569 0.038952 -v 0.008962 0.065582 0.034410 -v 0.013328 0.065407 0.033726 -v -0.075621 0.088995 0.038640 -v -0.031608 0.087339 0.014541 -v -0.077308 0.116330 0.025430 -v -0.077797 0.097112 0.038897 -v -0.067023 0.068954 0.026549 -v -0.052851 0.068206 0.027645 -v -0.046336 0.067315 0.027861 -v -0.037439 0.068118 0.027285 -v -0.035393 0.065850 0.028543 -v -0.022155 0.066333 0.030133 -v -0.010752 0.133472 -0.035047 -v 0.004987 0.065964 0.035673 -v 0.012658 0.067746 0.033397 -v -0.018227 0.095636 -0.008359 -v -0.072013 0.131096 -0.027653 -v -0.056050 0.032576 0.018945 -v 0.016599 0.096409 0.003368 -v -0.064533 0.065701 0.027702 -v -0.041134 0.065397 0.027357 -v -0.035038 0.070937 0.026142 -v -0.032019 0.066895 0.029429 -v -0.028835 0.067477 0.028663 -v -0.026283 0.067905 0.029544 -v -0.010683 0.068499 0.030364 -v -0.089826 0.084901 -0.010034 -v 0.006039 0.067362 0.032925 -v 0.011550 0.069911 0.032798 -v 0.014924 0.070210 0.032152 -v -0.045320 0.129851 -0.008204 -v -0.075472 0.122875 0.012888 -v -0.049771 0.067238 0.028955 -v -0.048145 0.070481 0.026599 -v -0.008966 0.069570 0.029418 -v -0.020888 0.095338 -0.001915 -v 0.002472 0.069424 0.029849 -v 0.007329 0.069912 0.031589 -v -0.040277 0.086878 0.016028 -v -0.003019 0.099093 -0.003652 -v -0.074450 0.069439 0.022729 -v -0.064900 0.069306 0.027363 -v -0.060926 0.069818 0.027574 -v -0.043574 0.068486 0.027640 -v -0.029221 0.071236 0.027319 -v -0.020268 0.070785 0.028758 -v -0.015698 0.071365 0.028446 -v 0.004874 0.070218 0.030011 -v 0.016848 0.071462 0.030663 -v 0.004956 0.088525 0.021420 -v 0.044097 0.059976 0.008072 -v -0.072895 0.113977 0.028745 -v -0.072039 0.072100 0.023167 -v -0.055781 0.068297 0.028579 -v -0.051503 0.071120 0.026378 -v -0.049986 0.073180 0.025128 -v -0.045100 0.071934 0.027002 -v -0.037322 0.073406 0.024060 -v -0.031536 0.070738 0.027377 -v -0.016978 0.070985 0.028986 -v 0.001132 0.071286 0.029178 -v -0.038611 0.090333 0.013099 -v 0.033722 0.082661 0.009015 -v -0.063348 0.120424 -0.022512 -v -0.077306 0.120013 0.019617 -v -0.042384 0.138522 -0.014876 -v -0.074290 0.073180 0.022267 -v -0.057638 0.072518 0.026797 -v -0.040310 0.070857 0.025783 -v -0.022469 0.070182 0.029358 -v -0.014302 0.074552 0.028514 -v -0.010003 0.071465 0.029007 -v -0.002769 0.074647 0.029412 -v 0.011555 0.098367 0.003374 -v -0.037719 0.142220 -0.024597 -v -0.068664 0.074604 0.023262 -v -0.061071 0.073197 0.025946 -v -0.043308 0.074008 0.026151 -v -0.032262 0.075355 0.024498 -v -0.025032 0.072109 0.028015 -v -0.018779 0.074795 0.027635 -v -0.007432 0.074697 0.029454 -v 0.007649 0.074068 0.027044 -v 0.011344 0.073885 0.028769 -v 0.018486 0.076396 0.025253 -v 0.023507 0.073026 0.025234 -v -0.074352 0.094684 0.038307 -v -0.056454 0.081716 0.021161 -v 0.018205 0.095163 0.005267 -v 0.018720 0.093539 0.009857 -v -0.070944 0.076894 0.022942 -v -0.062134 0.078469 0.022682 -v -0.052694 0.075243 0.025054 -v -0.038573 0.077202 0.022411 -v -0.028150 0.076141 0.024624 -v -0.010180 0.078342 0.027998 -v 0.004494 0.073801 0.027431 -v 0.008798 0.076614 0.025786 -v 0.010437 0.075493 0.026206 -v 0.020468 0.075494 0.025395 -v -0.054129 0.081332 0.020700 -v -0.067917 0.076879 0.023067 -v -0.054728 0.075423 0.025106 -v -0.051732 0.077852 0.023081 -v -0.047844 0.076048 0.024862 -v -0.042079 0.078777 0.022522 -v -0.000022 0.075911 0.028417 -v 0.013217 0.080521 0.024136 -v 0.019134 0.078402 0.024065 -v -0.047974 0.080378 0.021220 -v -0.086500 0.088572 -0.016638 -v -0.030759 0.082733 0.019283 -v -0.019605 0.079632 0.025224 -v -0.004900 0.079782 0.027578 -v -0.020263 0.089064 0.016865 -v 0.014402 0.076447 0.026167 -v -0.078001 0.125738 -0.034254 -v 0.041179 0.063475 -0.019684 -v -0.034415 0.141325 -0.015666 -v -0.031443 0.144059 -0.018177 -v -0.092548 0.084823 0.009485 -v -0.033959 0.139850 -0.015802 -v -0.061038 0.081079 0.021749 -v -0.058664 0.079880 0.021631 -v -0.036175 0.078331 0.021807 -v -0.060710 0.099896 -0.022137 -v -0.005637 0.073582 -0.037281 -v 0.027940 0.084322 0.015839 -v -0.029998 0.093329 -0.008709 -v -0.013203 0.004037 0.036155 -v -0.004920 0.006144 0.033656 -v 0.002920 0.006325 0.031493 -v 0.021359 0.008176 0.026867 -v -0.060906 0.115006 0.022528 -v -0.050080 0.003809 0.031545 -v 0.017171 0.006625 0.029007 -v -0.087528 0.106544 -0.006811 -v -0.049712 0.004906 0.031575 -v -0.022513 0.009098 0.039495 -v -0.000379 0.009263 0.032184 -v 0.013640 0.009960 0.030211 -v 0.042779 0.062709 0.010633 -v -0.053924 0.007339 0.032645 -v -0.044979 0.005821 0.030186 -v -0.041706 0.008027 0.028489 -v -0.017471 0.010277 0.037834 -v -0.012307 0.010687 0.035831 -v -0.006681 0.010512 0.034055 -v 0.016998 0.011484 0.029542 -v 0.018310 0.010454 0.029206 -v 0.023953 0.011537 0.025461 -v -0.050847 0.061563 -0.036288 -v -0.045294 0.011309 0.028783 -v 0.044395 0.065006 -0.007379 -v -0.024044 0.137670 -0.026395 -v -0.028055 0.140956 -0.023585 -v 0.013578 0.013785 0.029368 -v 0.016173 0.013938 0.028883 -v 0.026190 0.013256 0.023287 -v 0.028269 0.013286 0.020978 -v 0.030536 0.012295 0.016357 -v -0.069138 0.052663 -0.032038 -v -0.045052 0.062091 -0.036547 -v 0.021013 0.087852 0.018367 -v -0.066213 0.092248 0.035804 -v -0.048504 0.010925 0.029489 -v 0.022965 0.065808 0.031247 -v -0.030968 0.141188 -0.019107 -v 0.010216 0.014251 0.032200 -v 0.010856 0.012747 0.030123 -v 0.019782 0.012793 0.028059 -v 0.023807 0.015758 0.024778 -v 0.048757 0.015581 0.012010 -v 0.051069 0.015158 0.008824 -v -0.014083 0.140580 -0.033289 -v -0.054657 0.115485 0.012529 -v -0.060398 0.119578 0.020159 -v -0.085693 0.068990 -0.013421 -v -0.055175 0.109036 0.015068 -v -0.022377 0.150804 -0.026014 -v 0.031643 0.072677 0.020710 -v 0.021895 0.016446 0.025994 -v -0.017994 0.136285 -0.028611 -v 0.023912 0.082869 0.019628 -v -0.045664 0.123339 -0.006870 -v -0.032421 0.132039 -0.018904 -v -0.019767 0.128971 -0.019690 -v -0.013186 0.137328 -0.031656 -v 0.012124 0.016933 0.032981 -v 0.015353 0.015304 0.029459 -v 0.018408 0.015875 0.027717 -v -0.038253 0.127516 -0.012907 -v -0.012315 0.147379 -0.038202 -v -0.023228 0.149414 -0.025476 -v -0.044833 0.121174 -0.006407 -v 0.011104 0.020857 0.036890 -v 0.017412 0.016772 0.029101 -v 0.029637 0.017119 0.021727 -v 0.046131 0.017173 0.015791 -v -0.055687 0.096150 0.022903 -v 0.034478 0.062523 0.024193 -v -0.043857 0.124833 -0.008871 -v -0.066720 0.102943 0.029690 -v -0.037065 0.128760 -0.014154 -v 0.011020 0.081669 0.024140 -v 0.019966 0.020311 0.031454 -v 0.023359 0.020273 0.027668 -v 0.024737 0.018793 0.025036 -v 0.032303 0.017628 0.018792 -v 0.053615 0.021585 0.012362 -v 0.056723 0.020471 0.007362 -v 0.038240 0.063240 -0.023806 -v -0.065727 0.076482 0.023396 -v 0.015836 0.059596 0.036475 -v 0.024201 0.071090 0.027221 -v -0.041327 0.124271 -0.008352 -v 0.037614 0.066846 -0.024127 -v -0.013491 0.143690 -0.035246 -v 0.015465 0.020687 0.032970 -v 0.027189 0.018784 0.023717 -v 0.046263 0.019838 0.017165 -v 0.051144 0.020268 0.013550 -v 0.056089 0.022633 0.009788 -v -0.054126 0.016965 0.022384 -v 0.025559 0.085375 0.016445 -v -0.040826 0.118238 -0.010437 -v -0.039454 0.124157 -0.008832 -v -0.048310 0.120963 -0.004162 -v 0.025771 0.023117 0.027568 -v 0.034685 0.019658 0.017758 -v 0.030639 0.080906 0.016647 -v -0.056392 0.086595 0.023920 -v -0.075455 0.035030 0.000686 -v -0.034740 0.134091 -0.017935 -v 0.015713 0.024680 0.034543 -v 0.021354 0.024298 0.032646 -v 0.031968 0.024134 0.024170 -v 0.034639 0.022227 0.019578 -v 0.037816 0.024550 0.016957 -v -0.000867 0.071008 0.029551 -v 0.053520 0.024503 0.013897 -v -0.005812 0.070282 0.029179 -v -0.015075 0.131826 -0.025466 -v -0.046054 0.093135 0.010690 -v -0.044546 0.127487 -0.007980 -v -0.012780 0.131439 -0.027041 -v -0.062670 0.105512 0.021525 -v -0.060424 0.104713 0.020418 -v -0.051268 0.096792 0.018564 -v 0.011149 0.023893 0.038072 -v 0.019461 0.023795 0.033718 -v 0.024468 0.024590 0.029332 -v 0.028539 0.025603 0.026825 -v 0.033216 0.028049 0.024882 -v 0.037491 0.060675 0.021362 -v -0.062443 0.090088 0.030082 -v -0.030326 0.136904 -0.022007 -v -0.060753 0.106745 0.019621 -v 0.036350 0.027815 0.021311 -v 0.059069 0.027349 0.007140 -v -0.035282 0.132329 -0.017259 -v -0.068348 0.107362 0.030867 -v 0.007554 0.030114 0.040648 -v 0.018480 0.028714 0.034296 -v 0.027363 0.028113 0.029036 -v -0.048168 0.088725 0.014481 -v -0.034613 0.127252 -0.011828 -v -0.060985 0.136419 -0.073576 -v -0.052549 0.088778 0.020865 -v 0.011668 0.029213 0.037255 -v 0.013216 0.028224 0.036099 -v 0.018445 0.031299 0.034467 -v 0.020937 0.032477 0.032826 -v 0.021767 0.028320 0.033106 -v 0.030441 0.031199 0.026728 -v 0.035985 0.032895 0.023451 -v 0.039463 0.028858 0.016374 -v -0.061020 0.097053 0.025647 -v 0.056766 0.030495 0.011267 -v 0.009933 0.030907 0.039901 -v 0.024603 0.029548 0.030587 -v 0.039497 0.033456 0.018810 -v -0.064035 0.102349 0.024850 -v 0.052222 0.034532 0.012668 -v 0.053059 0.028763 0.014568 -v -0.068032 0.112837 0.028048 -v -0.070020 0.110895 0.030337 -v -0.014571 0.150944 -0.036773 -v 0.034164 0.032340 0.024960 -v 0.055178 0.033943 0.011650 -v -0.025174 0.132110 -0.021954 -v -0.041096 0.126587 -0.011278 -v -0.060034 0.112517 0.021852 -v 0.011716 0.032185 0.038419 -v 0.040692 0.031231 0.014981 -v -0.017636 0.130309 -0.022205 -v -0.089689 0.059207 -0.002180 -v -0.063602 0.113577 0.023760 -v -0.020410 0.147363 -0.030199 -v -0.016744 0.129038 -0.022324 -v -0.065895 0.086121 0.035922 -v 0.014030 0.033750 0.038260 -v 0.021289 0.035811 0.033686 -v 0.024533 0.036234 0.030163 -v 0.027671 0.031448 0.029185 -v 0.029536 0.068303 0.025620 -v -0.023348 0.130345 -0.020427 -v -0.067694 0.087347 0.037771 -v -0.017700 0.127528 -0.022264 -v 0.043174 0.034828 0.012083 -v -0.032661 0.136572 -0.019664 -v -0.062049 0.094641 0.028002 -v -0.029862 0.144670 -0.019243 -v -0.028076 0.146741 -0.020738 -v -0.048341 0.097618 0.013773 -v 0.011248 0.088544 0.020909 -v -0.061196 0.083231 0.023433 -v 0.011520 0.037857 0.039691 -v 0.015769 0.037339 0.037658 -v 0.035742 0.038223 0.023111 -v 0.038648 0.042051 0.019929 -v 0.040882 0.035228 0.015283 -v 0.043308 0.037655 0.011725 -v 0.025947 0.070137 0.026462 -v -0.053345 0.090629 0.022306 -v -0.026015 0.128714 -0.016304 -v -0.020852 0.152259 -0.027944 -v -0.016122 0.152936 -0.034907 -v -0.030843 0.125910 -0.012882 -v -0.063482 0.082314 0.025660 -v 0.022845 0.038510 0.033578 -v 0.027404 0.037987 0.028376 -v 0.032536 0.036702 0.025762 -v -0.003416 0.069047 0.029422 -v -0.014852 0.130180 -0.024499 -v -0.048138 0.093185 0.015389 -v 0.013748 0.041766 0.039482 -v 0.020005 0.037527 0.035060 -v 0.026239 0.041871 0.030396 -v 0.029704 0.038800 0.026965 -v -0.082241 0.045893 0.009798 -v 0.012694 0.083734 0.022541 -v 0.041059 0.072877 -0.009412 -v -0.027258 0.144785 -0.022318 -v 0.027542 0.072551 0.023651 -v 0.016831 0.040820 0.037124 -v 0.029545 0.041590 0.028673 -v -0.050388 0.099432 0.015972 -v -0.051421 0.084013 0.018788 -v 0.027083 0.065103 0.028274 -v -0.029884 0.130272 -0.018142 -v -0.057785 0.095851 0.024839 -v 0.015103 0.044075 0.039277 -v 0.018452 0.043654 0.037890 -v 0.021744 0.042312 0.035323 -v 0.025289 0.042969 0.032526 -v 0.031868 0.044123 0.028015 -v 0.032815 0.041757 0.025959 -v 0.036379 0.042211 0.023458 -v 0.043492 0.043291 0.012127 -v -0.072920 0.143535 -0.067337 -v -0.042717 0.122880 -0.007631 -v -0.049391 0.116106 -0.003380 -v -0.055718 0.106304 0.016632 -v -0.022850 0.125840 -0.018293 -v 0.023735 0.044781 0.034438 -v 0.026977 0.045358 0.031529 -v 0.040946 0.040487 0.016695 -v -0.012572 0.133399 -0.028427 -v -0.035876 0.136016 -0.014829 -v -0.047530 0.125697 -0.005832 -v -0.045830 0.114496 -0.008533 -v -0.015916 0.073036 -0.037054 -v 0.039433 0.073746 0.007576 -v -0.067828 0.099547 0.032559 -v 0.010984 0.043521 0.040383 -v 0.013753 0.046564 0.039807 -v 0.020723 0.048653 0.036392 -v 0.039451 0.049186 0.019784 -v 0.042536 0.045924 0.013675 -v -0.084424 0.078020 -0.010764 -v -0.028358 0.127439 -0.013965 -v 0.040445 0.074209 -0.004053 -v 0.036592 0.071066 0.015970 -v -0.042697 0.126082 -0.010020 -v -0.065503 0.095213 0.033065 -v -0.063974 0.086307 0.032569 -v 0.024660 0.048131 0.034269 -v 0.028193 0.046943 0.030683 -v 0.036116 0.045700 0.023743 -v 0.044284 0.047913 0.010695 -v -0.049463 0.088664 0.017714 -v -0.087250 0.104534 -0.010641 -v -0.025862 0.140068 -0.025748 -v -0.053300 0.103388 0.016191 -v -0.056346 0.091575 0.025297 -v 0.038439 0.068803 -0.022100 -v -0.055635 0.111929 0.016359 -v -0.059079 0.109297 0.018619 -v 0.008680 0.048657 0.040629 -v 0.033395 0.048212 0.027056 -v -0.029519 0.133846 -0.021490 -v -0.066151 0.082657 0.032692 -v -0.063566 0.080234 0.022965 -v -0.035979 0.130085 -0.015752 -v -0.053843 0.110827 0.012246 -v 0.017297 0.047339 0.038690 -v 0.032407 0.051141 0.027595 -v -0.040327 0.128620 -0.012404 -v 0.033144 0.066524 0.023019 -v -0.068516 0.083815 0.036743 -v -0.041464 0.131936 -0.010195 -v -0.068975 0.081821 0.035193 -v -0.035508 0.124613 -0.011033 -v -0.020356 0.132481 -0.024341 -v 0.024255 0.076332 0.023969 -v -0.020241 0.126047 -0.021563 -v 0.005149 0.051425 0.042342 -v 0.009393 0.052143 0.040966 -v 0.016932 0.053893 0.036140 -v 0.026707 0.049890 0.032006 -v 0.035730 0.051140 0.023716 -v 0.041137 0.049099 0.016914 -v 0.030487 0.061866 0.027759 -v 0.027673 0.076306 0.022722 -v -0.068088 0.077953 0.023652 -v -0.060961 0.090002 0.027706 -v -0.063581 0.110408 0.023757 -v -0.018378 0.148468 -0.032363 -v -0.029871 0.121958 -0.018517 -v 0.030026 0.077762 0.019502 -v 0.012788 0.050789 0.038620 -v 0.038521 0.073169 0.011929 -v 0.024653 0.052597 0.033256 -v 0.029390 0.051820 0.028835 -v 0.043175 0.053133 0.013010 -v -0.062351 0.085953 0.027972 -v 0.027912 0.061203 0.029763 -v -0.050006 0.092118 0.017845 -v -0.062907 0.107820 0.022517 -v -0.016555 0.144200 -0.033074 -v -0.035560 0.125897 -0.010630 -v 0.033070 0.056242 0.027822 -v 0.040882 0.053394 0.017365 -v 0.035337 0.068076 0.019638 -v -0.070012 0.094553 0.037519 -v -0.023272 0.135424 -0.025605 -v -0.030945 0.128903 -0.016308 -v -0.039329 0.132539 -0.011855 -v 0.018981 0.084420 0.021372 -v -0.073052 0.097234 0.037422 -v -0.057238 0.101359 0.021421 -v -0.020159 0.127485 -0.019483 -v -0.065142 0.080088 0.024213 -v 0.026185 0.054290 0.032495 -v 0.035522 0.057497 0.024773 -v 0.038507 0.056267 0.020310 -v -0.023238 0.127508 -0.016799 -v 0.021456 0.072515 0.027787 -v -0.069956 0.103506 0.033569 -v -0.042217 0.120837 -0.008168 -v -0.058067 0.118386 0.019005 -v -0.075288 0.100881 0.037478 -v -0.064547 0.078715 0.022895 -v -0.038272 0.130899 -0.014447 -v -0.065079 0.100197 0.027768 -v -0.061126 0.093021 0.027702 -v 0.042052 0.053266 -0.022685 -v -0.064999 0.105472 0.026330 -v -0.057056 0.105416 0.017942 -v 0.009550 0.057264 0.040087 -v 0.012866 0.055890 0.039233 -v 0.014614 0.055445 0.037531 -v -0.056353 0.083088 0.021613 -v 0.022460 0.059036 0.033531 -v 0.028657 0.057626 0.029377 -v -0.023496 0.144834 -0.027466 -v -0.010817 0.134719 -0.031070 -v -0.059616 0.117188 0.021104 -v -0.065625 0.088636 0.036213 -v -0.062409 0.101433 0.023968 -v 0.045613 0.059891 -0.007367 -v -0.052386 0.092276 0.020955 -v -0.045885 0.116113 -0.006963 -v 0.040667 0.057443 0.016301 -v 0.035006 0.078588 0.012563 -v -0.035285 0.121173 -0.013158 -v -0.066541 0.109462 0.028264 -v -0.020188 0.141754 -0.029993 -v 0.028075 0.081276 0.018719 -v -0.093338 0.089373 0.024838 -v -0.027113 0.125654 -0.015171 -v -0.038500 0.125700 -0.009748 -v -0.059956 0.109926 0.020769 -v -0.063896 0.092800 0.032180 -v -0.048680 0.086676 0.016388 -v -0.047950 0.086723 0.015454 -v 0.012333 0.058979 0.038583 -v -0.010944 0.136885 -0.032733 -v 0.025840 0.062393 0.030984 -v -0.070586 0.098279 0.035796 -v -0.055533 0.115174 0.015175 -v -0.046043 0.089649 0.012108 -v -0.060582 0.086326 0.025914 -v -0.052896 0.084845 0.019410 -v -0.066171 0.113128 0.026295 -v 0.020218 0.068527 0.031194 -v 0.021610 0.079920 0.022403 -v 0.038976 0.062251 0.018175 -v -0.061558 0.128111 -0.048377 -v 0.018170 0.002935 -0.025075 -v 0.017798 0.002775 -0.028054 -v 0.021743 0.005723 0.023806 -v 0.042635 0.007784 -0.007409 -v 0.037876 0.006751 -0.012708 -v 0.021440 0.004700 -0.016940 -v 0.021244 0.005064 -0.018569 -v 0.016742 0.003297 -0.030944 -v 0.042853 0.008920 -0.011694 -v 0.039254 0.009116 -0.015848 -v 0.019636 0.005245 -0.024363 -v 0.018683 0.005031 -0.029322 -v 0.015174 0.004395 -0.034775 -v -0.051269 0.107585 -0.013100 -v -0.010414 0.147671 -0.041742 -v -0.064348 0.087647 -0.023374 -v -0.039344 0.060883 -0.037896 -v 0.049049 0.011467 -0.007140 -v 0.022504 0.007931 -0.021587 -v 0.022528 0.010604 -0.025713 -v 0.020895 0.008736 -0.029246 -v 0.017618 0.006608 -0.033816 -v 0.006723 0.089679 -0.027554 -v 0.024165 0.008783 0.023797 -v 0.024934 0.007975 0.020281 -v -0.062226 0.126210 -0.034147 -v -0.009919 0.146931 -0.044095 -v 0.046990 0.011966 -0.012703 -v 0.023360 0.009397 -0.021864 -v 0.020688 0.010528 -0.034208 -v 0.019441 0.011382 -0.036487 -v -0.091124 0.088493 -0.007749 -v -0.009331 0.135930 -0.034358 -v -0.080806 0.075838 -0.018048 -v -0.061237 0.142695 -0.075625 -v -0.034543 0.120085 -0.014894 -v 0.051587 0.012930 -0.000741 -v 0.048671 0.013898 -0.013905 -v 0.025668 0.011946 -0.023039 -v 0.022363 0.011021 -0.028161 -v -0.009098 0.136845 -0.038598 -v 0.040493 0.054244 -0.025840 -v -0.018355 0.004442 0.038149 -v 0.055334 0.017139 0.005171 -v 0.055903 0.017222 0.002879 -v 0.051501 0.013063 -0.004130 -v 0.053898 0.016634 -0.010336 -v 0.049286 0.012765 -0.011364 -v 0.048699 0.016772 -0.017272 -v 0.025909 0.013165 -0.026574 -v 0.022738 0.012063 -0.029282 -v -0.062485 0.130619 -0.064650 -v -0.089975 0.100500 0.019012 -v -0.013568 0.129891 -0.026740 -v 0.056271 0.017217 -0.001979 -v 0.055426 0.017228 -0.007656 -v 0.029061 0.014847 -0.022313 -v 0.027661 0.014643 -0.026855 -v 0.026163 0.014629 -0.030786 -v 0.022383 0.012853 -0.031597 -v -0.061627 0.128074 -0.043029 -v -0.008756 0.138238 -0.038107 -v 0.056001 0.019505 -0.010587 -v -0.049944 0.112711 -0.003765 -v -0.042418 0.115580 -0.012798 -v -0.061929 0.122710 -0.044806 -v 0.057940 0.020446 0.003689 -v 0.053319 0.017866 -0.013350 -v -0.038193 0.001564 -0.044196 -v 0.027415 0.016014 -0.031327 -v 0.057186 0.019380 -0.006812 -v 0.029709 0.018187 -0.028879 -v 0.026827 0.019212 -0.035166 -v -0.006582 0.067879 -0.038695 -v -0.049048 0.103689 -0.010362 -v -0.060791 0.138894 -0.075525 -v -0.008652 0.139904 -0.041152 -v -0.029920 0.073718 -0.036444 -v -0.062334 0.116840 -0.026563 -v 0.039435 0.067679 0.013622 -v 0.058490 0.020923 -0.002672 -v 0.031871 0.019631 -0.024553 -v 0.028699 0.019467 -0.032819 -v -0.053708 0.114100 0.009373 -v -0.061416 0.125148 -0.040873 -v -0.062334 0.119758 -0.026690 -v 0.059045 0.026511 -0.009269 -v 0.052567 0.021985 -0.017091 -v 0.045502 0.058259 -0.010454 -v -0.062312 0.128596 -0.038466 -v -0.094183 0.088166 0.000596 -v -0.063960 0.121930 -0.052608 -v 0.058729 0.024289 0.006365 -v 0.060771 0.027273 -0.003568 -v 0.054618 0.023535 -0.015199 -v 0.031367 0.022534 -0.028880 -v 0.028583 0.022053 -0.033560 -v -0.018544 0.061442 -0.048945 -v -0.065601 0.034226 0.016716 -v 0.041008 0.059393 -0.023595 -v -0.076184 0.117637 -0.024959 -v -0.081078 0.065281 -0.021684 -v 0.044551 0.062497 0.000962 -v 0.060304 0.026625 0.001841 -v 0.054751 0.027704 -0.016394 -v -0.091303 0.085464 0.013416 -v 0.036146 0.022433 -0.021495 -v 0.035324 0.025268 -0.025538 -v 0.029919 0.025464 -0.031813 -v -0.029086 0.003112 0.037223 -v 0.057981 0.027766 -0.012062 -v -0.090821 0.094177 -0.008600 -v 0.037927 0.024596 -0.020281 -v -0.061559 0.137319 -0.069783 -v -0.062099 0.123075 -0.030604 -v -0.062550 0.129965 -0.060408 -v 0.060082 0.029852 -0.007990 -v 0.039387 0.027932 -0.019902 -v 0.037735 0.028741 -0.024887 -v 0.034433 0.026024 -0.027663 -v 0.029631 0.028587 -0.034044 -v 0.025023 0.026027 -0.038610 -v -0.061594 0.125848 -0.037565 -v -0.065740 0.029647 0.007377 -v -0.052411 0.116354 0.005261 -v 0.058594 0.032801 0.008187 -v 0.061038 0.032084 -0.003056 -v -0.086342 0.075485 -0.003650 -v 0.041101 0.031420 -0.018660 -v 0.035278 0.031128 -0.028282 -v 0.032448 0.028597 -0.031828 -v 0.026745 0.028843 -0.037306 -v -0.048305 0.104481 -0.004741 -v -0.052236 0.112573 0.002870 -v 0.060019 0.033823 0.004933 -v 0.060839 0.032802 0.001478 -v 0.029682 0.030226 -0.034272 -v -0.093250 0.095309 -0.001651 -v -0.081412 0.114069 -0.014749 -v -0.062387 0.135069 -0.062380 -v 0.044459 0.058564 -0.015826 -v -0.040234 0.117398 -0.011717 -v 0.044778 0.055118 -0.015953 -v 0.060009 0.036471 -0.003924 -v -0.086563 0.076818 -0.001774 -v 0.037002 0.033855 -0.027662 -v 0.032216 0.032948 -0.033055 -v -0.073057 0.122432 -0.046750 -v -0.071445 0.148552 -0.070933 -v -0.062792 0.138406 -0.064904 -v -0.061621 0.122623 -0.037695 -v 0.058297 0.034664 -0.010413 -v 0.039637 0.031886 -0.022841 -v 0.038793 0.036356 -0.026574 -v 0.034652 0.034584 -0.030484 -v 0.028791 0.033984 -0.034587 -v 0.026471 0.033018 -0.036797 -v -0.092440 0.099101 -0.001696 -v -0.071978 0.115444 -0.043445 -v -0.022427 0.087795 -0.025727 -v -0.008623 0.142573 -0.041917 -v -0.062716 0.132018 -0.047790 -v 0.059802 0.037633 0.000127 -v 0.057887 0.037472 -0.008639 -v 0.042039 0.034888 -0.017926 -v -0.062319 0.114350 -0.021342 -v -0.044018 0.115103 -0.010018 -v -0.061729 0.122320 -0.033615 -v -0.052670 0.105550 0.012494 -v -0.050582 0.104366 -0.013421 -v -0.053159 0.113247 0.007943 -v -0.084201 0.076858 0.010296 -v 0.041832 0.038185 -0.021334 -v 0.036726 0.036729 -0.028638 -v 0.028381 0.037823 -0.037110 -v -0.062181 0.131013 -0.056828 -v -0.047911 0.103968 -0.000771 -v -0.089039 0.105924 0.013817 -v 0.030522 0.036834 -0.034055 -v -0.031110 0.091337 -0.018100 -v -0.089470 0.087692 -0.011471 -v -0.030603 0.122289 -0.016091 -v -0.049484 0.105778 0.003344 -v -0.009590 0.134527 -0.033880 -v -0.076808 0.115963 -0.022032 -v -0.076158 0.081302 -0.019840 -v -0.089945 0.103516 0.008555 -v -0.086889 0.073818 0.003310 -v 0.034031 0.037777 -0.031364 -v 0.032673 0.039448 -0.032669 -v -0.092535 0.089514 0.014354 -v -0.049693 0.107609 -0.009317 -v 0.043441 0.057071 -0.018845 -v -0.088184 0.089248 -0.014316 -v -0.026029 0.057526 -0.049143 -v 0.043681 0.040506 -0.016124 -v -0.092478 0.091083 -0.006106 -v -0.062519 0.127381 -0.055435 -v 0.045391 0.058930 -0.001794 -v -0.083464 0.079626 0.029846 -v -0.086809 0.081328 -0.010697 -v -0.086556 0.068853 -0.010127 -v -0.062002 0.134547 -0.066668 -v -0.090827 0.106146 0.003450 -v 0.046401 0.043972 -0.006374 -v 0.042310 0.043353 -0.020481 -v 0.033651 0.043393 -0.031272 -v -0.090944 0.080641 0.000105 -v -0.092629 0.091852 0.018571 -v -0.012318 0.131084 -0.030455 -v -0.051361 0.116747 0.000225 -v 0.043714 0.067036 -0.004977 -v -0.037361 0.118285 -0.014198 -v -0.058991 0.003463 0.031335 -v -0.052430 0.109679 0.006546 -v 0.045339 0.043002 -0.012731 -v 0.041772 0.045614 -0.021192 -v 0.038392 0.044074 -0.025721 -v 0.036152 0.042438 -0.027839 -v -0.086695 0.075528 -0.000104 -v 0.043907 0.064129 -0.011921 -v -0.053654 0.118592 0.010544 -v 0.041979 0.058140 -0.022764 -v -0.073736 0.112317 -0.024581 -v -0.048376 0.112935 -0.006725 -v 0.046557 0.043852 -0.001688 -v -0.084164 0.064978 -0.017991 -v -0.086435 0.076554 0.003380 -v -0.084111 0.075540 0.010301 -v -0.062230 0.119292 -0.030804 -v -0.048023 0.112430 -0.009128 -v -0.071960 0.130288 -0.056553 -v 0.046026 0.046855 0.005518 -v 0.036723 0.045023 -0.027779 -v 0.033592 0.047280 -0.032704 -v -0.084106 0.068175 -0.017922 -v -0.084482 0.070203 -0.015139 -v -0.089767 0.105512 0.018524 -v -0.009652 0.140024 -0.036864 -v -0.079452 0.062748 -0.024675 -v -0.050984 0.110769 0.002039 -v -0.072770 0.031928 0.002654 -v -0.049405 0.110681 -0.006867 -v 0.046159 0.048633 -0.009344 -v 0.044756 0.046313 -0.015873 -v 0.039033 0.046324 -0.025482 -v -0.069126 0.108961 -0.023091 -v 0.044722 0.053291 0.008924 -v 0.046307 0.050040 -0.004671 -v 0.045390 0.049720 -0.012598 -v 0.043353 0.049047 -0.018402 -v 0.040042 0.050744 -0.026450 -v 0.037929 0.049956 -0.029529 -v -0.089451 0.062913 0.001839 -v -0.087645 0.093653 -0.015131 -v -0.083408 0.110708 -0.011682 -v -0.049212 0.110842 -0.010388 -v -0.050044 0.109128 -0.010857 -v -0.063382 0.124151 -0.027450 -v 0.046138 0.048289 0.001095 -v 0.045837 0.053741 -0.008344 -v 0.044629 0.051632 -0.013488 -v 0.041245 0.048082 -0.022376 -v -0.086906 0.078418 -0.005851 -v -0.093980 0.094640 0.002264 -v -0.062168 0.131561 -0.053751 -v -0.063868 0.135155 -0.052666 -v -0.062428 0.123764 -0.049954 -v -0.063857 0.147456 -0.073468 -v -0.037341 0.095846 -0.009104 -v -0.064970 0.147911 -0.074569 -v -0.062784 0.146167 -0.073665 -v -0.044708 0.096748 -0.012481 -v -0.064066 0.145088 -0.069428 -v -0.067601 0.148630 -0.069704 -v -0.070039 0.149247 -0.070830 -v -0.066053 0.122586 -0.010880 -v -0.032519 0.093075 0.005183 -v -0.017555 0.095837 0.003464 -v -0.067589 0.145874 -0.065858 -v -0.073480 0.148627 -0.068599 -v -0.070905 0.149006 -0.067866 -v -0.042869 0.097028 -0.006622 -v -0.026500 0.090690 0.008720 -v -0.068173 0.124126 0.009287 -v -0.045205 0.135918 -0.012465 -v -0.036920 0.140936 -0.015417 -v -0.046580 0.098636 0.008540 -v -0.085838 0.121087 -0.000812 -v -0.065851 0.122596 -0.018977 -v -0.048593 0.128609 -0.007038 -v -0.066794 0.141455 -0.060577 -v -0.027392 0.088017 0.013822 -v -0.066679 0.131806 -0.032949 -v -0.074042 0.123739 0.009233 -v -0.047253 0.102362 -0.003186 -v -0.070616 0.123894 0.010182 -v -0.030340 0.093250 0.002593 -v 0.050004 0.038136 0.009502 -v -0.012329 0.151703 -0.041061 -v -0.008530 0.067607 0.034339 -v -0.065047 0.141347 -0.063441 -v -0.064793 0.120676 0.019952 -v -0.057873 0.123339 0.000473 -v 0.013210 0.093168 0.016139 -v -0.065410 0.123579 -0.003925 -v -0.045062 0.099078 -0.003983 -v -0.070847 0.145422 -0.062361 -v -0.074185 0.145626 -0.060940 -v -0.073818 0.147852 -0.064745 -v -0.067586 0.122820 -0.013530 -v -0.055826 0.121151 0.012772 -v -0.052391 0.119393 0.000787 -v -0.058172 0.125307 -0.007720 -v 0.015525 0.095358 0.010414 -v -0.014127 0.153061 -0.039811 -v -0.064580 0.137784 -0.058013 -v -0.061118 0.120890 0.018690 -v -0.084284 0.078541 0.012190 -v -0.087349 0.061819 -0.009207 -v -0.043803 0.097581 -0.002130 -v -0.066781 0.131170 -0.072249 -v -0.038936 0.092883 -0.021974 -v 0.009810 0.097880 0.008149 -v -0.071394 0.143424 -0.058372 -v -0.064970 0.122605 0.015019 -v -0.092954 0.086365 0.019699 -v -0.080851 0.111516 -0.015719 -v -0.069305 0.122090 0.016781 -v -0.075599 0.120275 -0.027875 -v -0.087587 0.064080 -0.011235 -v -0.044188 0.094091 0.005257 -v -0.015280 0.154423 -0.038509 -v -0.084033 0.120472 -0.006447 -v -0.065428 0.137562 -0.054366 -v -0.091047 0.081501 -0.003653 -v -0.070394 0.123730 -0.012472 -v -0.091180 0.116331 0.000042 -v -0.087999 0.065823 -0.009353 -v -0.049014 0.094052 -0.021114 -v -0.016684 0.155189 -0.035776 -v -0.068188 0.139514 -0.052978 -v -0.077521 0.142578 -0.057525 -v -0.012765 0.066042 0.035334 -v -0.075404 0.147039 -0.067304 -v -0.086713 0.120949 0.004663 -v -0.045464 0.093912 0.008929 -v -0.050167 0.104713 0.007296 -v -0.024381 0.090156 0.011842 -v 0.000479 0.091801 0.019275 -v -0.043799 0.095166 0.004295 -v -0.012330 0.065212 0.036741 -v -0.018112 0.154061 -0.032168 -v -0.035636 0.095637 -0.005508 -v -0.072350 0.141434 -0.053046 -v -0.084862 0.059583 -0.018634 -v -0.076638 0.061773 -0.027719 -v -0.089001 0.064113 -0.006400 -v -0.092572 0.094327 0.015000 -v -0.031395 0.089880 0.010426 -v -0.088472 0.119392 -0.001964 -v -0.043384 0.092295 0.007809 -v 0.000967 0.066546 0.036345 -v -0.034955 0.090778 0.011379 -v -0.054429 0.121508 0.004722 -v -0.074851 0.142673 -0.055397 -v 0.058168 0.039143 -0.004387 -v 0.055127 0.040812 -0.004779 -v -0.094758 0.091786 0.004945 -v -0.043933 0.134788 -0.010822 -v -0.001251 0.098276 0.007484 -v 0.032798 0.083899 -0.013427 -v -0.073336 0.113731 -0.029131 -v -0.089783 0.066281 0.001307 -v -0.094338 0.089594 0.009533 -v -0.092055 0.083561 0.022431 -v -0.088949 0.095808 -0.010875 -v -0.042860 0.090309 0.011120 -v -0.081797 0.119107 0.017944 -v -0.067087 0.117953 0.023731 -v -0.058346 0.123770 -0.003744 -v -0.055950 0.123781 -0.003166 -v -0.076987 0.079141 -0.019335 -v -0.028613 0.090059 0.008497 -v -0.068186 0.124397 -0.017972 -v -0.021731 0.153036 -0.032682 -v -0.067079 0.124130 0.001527 -v -0.069868 0.139206 -0.048474 -v -0.065270 0.124039 0.008538 -v -0.071900 0.127809 -0.021547 -v -0.073578 0.125376 -0.018276 -v 0.055184 0.041094 0.001313 -v 0.053034 0.040811 -0.006037 -v 0.047795 0.041352 -0.001680 -v -0.029686 0.086513 0.015383 -v -0.004212 0.095105 0.015274 -v -0.086068 0.063925 -0.014378 -v -0.088457 0.060703 -0.006844 -v -0.089494 0.061152 0.006081 -v -0.080493 0.079274 -0.015660 -v -0.068470 0.118946 0.022877 -v -0.030573 0.093811 -0.001371 -v -0.046428 0.100391 0.004890 -v 0.003835 0.067836 0.032145 -v -0.074641 0.140375 -0.050646 -v -0.032986 0.094742 -0.001324 -v -0.049595 0.102129 0.011288 -v -0.054552 0.122456 -0.000910 -v 0.038563 0.077199 -0.005640 -v 0.035462 0.081019 -0.011008 -v 0.023201 0.091928 -0.012244 -v 0.020025 0.093606 -0.013500 -v -0.075348 0.116406 -0.030101 -v -0.092592 0.085330 0.026115 -v -0.061187 0.123791 0.001706 -v -0.045075 0.097621 0.005506 -v -0.020744 0.153607 -0.028889 -v -0.021549 0.153737 -0.029627 -v -0.023856 0.152143 -0.029089 -v -0.065841 0.136327 -0.046884 -v -0.076665 0.138525 -0.048457 -v -0.020656 0.091794 0.010600 -v -0.074792 0.124041 -0.000218 -v 0.057257 0.039962 0.001657 -v 0.007949 0.096907 0.012050 -v -0.038782 0.095905 -0.001105 -v -0.090644 0.102088 -0.003646 -v -0.090801 0.107076 0.006106 -v -0.092276 0.085145 -0.005529 -v -0.074218 0.124289 -0.015822 -v -0.069513 0.137012 -0.041378 -v -0.073287 0.138944 -0.045551 -v -0.072409 0.124165 0.005438 -v -0.000178 0.069235 0.030020 -v 0.052408 0.041561 0.000301 -v -0.013773 0.092047 0.016555 -v -0.056259 0.122186 0.009588 -v -0.084150 0.074457 -0.013227 -v 0.015046 0.087189 0.020633 -v -0.079465 0.122462 -0.005260 -v -0.045181 0.097716 -0.009125 -v 0.019898 0.089658 0.016931 -v -0.025787 0.150765 -0.027181 -v -0.059419 0.122440 0.013041 -v -0.064977 0.133396 -0.040728 -v 0.017977 0.092481 0.012954 -v -0.069614 0.120482 0.020374 -v 0.013606 0.094739 0.013578 -v 0.058085 0.037467 0.005745 -v 0.048566 0.041309 -0.000686 -v -0.038108 0.093192 0.007841 -v -0.076611 0.122703 -0.008682 -v -0.072140 0.123448 -0.010718 -v -0.061698 0.123845 0.007044 -v -0.082943 0.079701 -0.013579 -v -0.000868 0.096967 0.012039 -v -0.024639 0.151014 -0.025029 -v -0.057536 0.123139 0.004741 -v 0.003072 0.098384 0.008490 -v 0.054779 0.040206 0.005360 -v 0.046496 0.042936 0.001491 -v -0.001334 0.067805 0.034437 -v 0.013462 0.097491 -0.009495 -v -0.086584 0.072335 -0.008248 -v -0.087226 0.078193 0.003357 -v -0.030384 0.147178 -0.027019 -v -0.081735 0.122745 0.001495 -v -0.026093 0.150744 -0.025602 -v -0.072339 0.137631 -0.041359 -v -0.062317 0.123263 0.011375 -v -0.005231 0.098467 0.004531 -v 0.047143 0.041427 0.001669 -v -0.005154 0.092078 0.019070 -v -0.056903 0.124895 -0.005513 -v -0.041812 0.094720 0.003544 -v 0.027316 0.089835 -0.008223 -v 0.019508 0.094783 -0.008781 -v -0.074539 0.145920 -0.068091 -v -0.072532 0.146954 -0.070055 -v -0.080465 0.070399 -0.021152 -v -0.060270 0.123676 -0.004384 -v 0.022150 0.089832 0.015127 -v -0.029861 0.148025 -0.024479 -v -0.075409 0.136660 -0.042092 -v -0.054345 0.120316 0.010439 -v 0.053126 0.039042 0.008106 -v 0.047426 0.039869 0.004050 -v 0.046204 0.041718 0.004173 -v -0.078758 0.120786 -0.012358 -v -0.053305 0.124121 -0.003652 -v -0.010121 0.095742 0.011634 -v -0.076041 0.122515 -0.014480 -v -0.043417 0.096249 0.001213 -v 0.036685 0.079554 0.002745 -v 0.033143 0.084590 -0.005106 -v 0.031002 0.086813 -0.007028 -v 0.023593 0.092964 -0.004159 -v -0.075106 0.117827 -0.039632 -v -0.059992 0.124023 -0.009283 -v -0.008510 0.097309 0.008674 -v -0.027366 0.093616 -0.002633 -v -0.051016 0.119475 -0.002161 -v -0.067326 0.134102 -0.037510 -v 0.054888 0.036652 0.010178 -v 0.051216 0.040692 0.005114 -v -0.024103 0.093230 0.003940 -v 0.016898 0.096503 -0.002943 -v 0.001081 0.099012 -0.009923 -v -0.088444 0.069547 0.005298 -v -0.088601 0.069761 -0.004728 -v -0.036167 0.144125 -0.022866 -v -0.028895 0.148277 -0.022177 -v -0.032354 0.146292 -0.022266 -v 0.046526 0.038155 0.007657 -v 0.045430 0.040905 0.006608 -v -0.073844 0.116664 0.025743 -v 0.001756 0.093753 0.017143 -v 0.034108 0.083020 0.003862 -v 0.028015 0.089606 -0.000343 -v 0.019575 0.095181 0.000975 -v 0.013704 0.097863 -0.004561 -v 0.009915 0.098413 -0.010256 -v -0.071459 0.076329 -0.025363 -v -0.071509 0.002743 -0.005656 -v -0.066851 0.003495 0.000233 -v -0.065600 0.004560 0.012222 -v -0.066410 0.004270 0.014501 -v -0.066707 0.005867 0.020005 -v -0.063741 0.005885 0.027507 -v -0.038782 0.004818 0.028579 -v -0.072231 0.004985 -0.006235 -v -0.067753 0.005403 -0.000844 -v -0.064679 0.005667 0.010164 -v -0.065908 0.006197 0.013848 -v -0.066731 0.005587 0.016435 -v -0.066421 0.004606 0.023193 -v -0.060305 0.005233 0.031039 -v -0.057719 0.006729 0.032281 -v -0.084812 0.045744 0.002062 -v -0.039260 0.007098 0.027598 -v -0.036240 0.006541 0.031588 -v -0.033272 0.006907 0.035873 -v -0.030574 0.008009 0.037333 -v -0.028864 0.006596 0.039138 -v -0.025019 0.004671 0.039673 -v -0.058384 0.064180 -0.035240 -v -0.072310 0.004837 -0.010696 -v -0.063719 0.003716 0.003498 -v -0.061461 0.005042 0.005595 -v -0.059587 0.006261 0.005912 -v -0.064162 0.006932 0.011940 -v -0.065499 0.007702 0.014993 -v -0.065240 0.008106 0.017734 -v -0.064354 0.010268 0.023074 -v -0.062125 0.009341 0.028236 -v -0.036747 0.009440 0.030447 -v -0.030023 0.062319 -0.038845 -v -0.050958 0.064341 -0.036874 -v 0.050730 0.038578 -0.010603 -v -0.071015 0.006959 -0.010365 -v -0.072540 0.005907 -0.008539 -v -0.071485 0.007325 -0.006680 -v -0.059564 0.007551 0.004844 -v -0.041791 0.140092 -0.017569 -v -0.035484 0.008932 0.031893 -v -0.033420 0.008793 0.035598 -v -0.024543 0.010035 0.039482 -v -0.080642 0.064484 0.019374 -v -0.085172 0.099826 0.034313 -v -0.071336 0.006966 -0.011506 -v -0.070417 0.008557 -0.010576 -v -0.065585 0.008959 -0.001398 -v -0.061653 0.007221 0.003134 -v -0.076586 0.065353 0.022505 -v -0.055597 0.016077 0.024293 -v -0.033155 0.011524 0.033740 -v -0.027891 0.009413 0.038775 -v -0.074946 0.064447 0.024511 -v -0.069831 0.010335 -0.007663 -v -0.060519 0.012280 0.028067 -v -0.073086 0.116336 -0.044999 -v -0.038150 0.010595 0.027476 -v -0.035518 0.012852 0.029437 -v -0.041207 0.054857 -0.036049 -v -0.067408 0.012482 -0.009330 -v -0.067448 0.012195 -0.007235 -v -0.065821 0.011013 -0.003894 -v -0.063255 0.009650 -0.000251 -v -0.018690 0.044184 0.040779 -v -0.060298 0.013795 0.026236 -v -0.079261 0.053419 0.021246 -v -0.034018 0.011983 0.031482 -v -0.028110 0.014452 0.035255 -v -0.019368 0.066428 0.030006 -v -0.014325 0.067733 0.030057 -v -0.087982 0.106009 0.026387 -v -0.075486 0.131817 -0.032279 -v -0.059167 0.011556 0.000071 -v -0.058348 0.015068 0.025322 -v -0.082014 0.098832 0.037237 -v -0.035979 0.015060 0.025298 -v -0.031279 0.014832 0.030673 -v -0.028062 0.015904 0.033539 -v -0.084428 0.062628 0.015288 -v -0.063891 0.013550 -0.006145 -v -0.058727 0.014908 -0.005535 -v -0.056152 0.014812 -0.002697 -v -0.016549 0.066287 0.031451 -v -0.033230 0.014787 0.029635 -v -0.076061 0.128514 -0.027189 -v -0.049593 0.132856 -0.011562 -v -0.073646 0.041400 0.019338 -v -0.084810 0.111248 0.025847 -v -0.070863 0.068568 0.025208 -v -0.078113 0.135033 -0.044587 -v -0.027277 0.046051 0.032230 -v -0.051929 0.014278 0.001774 -v -0.092336 0.094075 0.024629 -v -0.087634 0.110711 0.022686 -v -0.076414 0.126186 -0.024736 -v -0.090896 0.115923 0.009748 -v -0.081696 0.047128 0.014918 -v -0.087178 0.058785 0.011159 -v -0.022422 0.060278 0.036944 -v -0.058344 0.016124 -0.007798 -v -0.019137 0.050461 0.042948 -v -0.051384 0.018256 0.019306 -v -0.049596 0.018874 0.021415 -v -0.088461 0.057988 0.008299 -v -0.032143 0.019482 0.022935 -v -0.033266 0.017150 0.025761 -v -0.030330 0.017882 0.027935 -v -0.026528 0.017750 0.031425 -v -0.056448 0.027280 0.008056 -v -0.026721 0.056641 0.033985 -v -0.022828 0.063192 0.031779 -v -0.082703 0.090230 0.034794 -v -0.076727 0.129153 -0.030023 -v -0.056134 0.017127 -0.004881 -v -0.087897 0.096366 0.031451 -v -0.030949 0.019153 0.024330 -v -0.028633 0.018925 0.026921 -v -0.050040 0.130556 -0.008910 -v -0.029459 0.053336 0.029929 -v -0.078237 0.050188 0.021023 -v -0.053612 0.021320 -0.003602 -v -0.051334 0.017216 -0.000277 -v -0.041023 0.135797 -0.025505 -v -0.050891 0.020000 0.018191 -v -0.028552 0.020191 0.022883 -v -0.026035 0.020115 0.025065 -v -0.084123 0.073788 0.011328 -v -0.027573 0.051029 0.034328 -v -0.046999 0.135965 -0.014302 -v -0.050177 0.021315 0.000447 -v -0.076071 0.123433 -0.019183 -v -0.047577 0.021439 0.022325 -v -0.090046 0.086773 0.030956 -v -0.027298 0.022117 0.022515 -v -0.026413 0.060712 0.030865 -v -0.043365 0.059009 -0.037224 -v -0.050828 0.022266 0.004221 -v -0.049212 0.023672 0.020000 -v -0.024059 0.020182 0.027022 -v -0.021935 0.022487 0.030330 -v -0.019057 0.020934 0.033189 -v -0.051173 0.023613 0.000748 -v -0.052026 0.023938 0.004106 -v -0.052121 0.024423 0.006484 -v -0.092411 0.088055 0.028065 -v -0.090653 0.113217 0.012411 -v -0.013661 0.025199 0.036998 -v -0.072517 0.048345 0.024479 -v -0.054594 0.025442 0.005466 -v -0.052769 0.025545 0.007474 -v -0.053000 0.027344 0.011391 -v -0.049890 0.029062 0.019416 -v -0.019285 0.025733 0.034337 -v -0.081823 0.076838 0.013803 -v -0.086236 0.097553 0.034117 -v -0.074528 0.117300 -0.043793 -v -0.083868 0.057050 0.015092 -v -0.077773 0.141007 -0.055151 -v -0.086767 0.069633 0.009697 -v -0.082802 0.051051 0.015883 -v -0.054021 0.027230 0.009504 -v -0.052562 0.028755 0.014507 -v -0.050923 0.026481 0.017189 -v -0.045408 0.028577 0.024314 -v -0.070165 0.063400 0.027553 -v -0.024028 0.026158 0.027310 -v -0.022465 0.030712 0.030048 -v -0.017173 0.028076 0.037111 -v -0.082366 0.095968 0.037502 -v -0.057352 0.029449 0.011892 -v -0.054101 0.028622 0.012297 -v -0.076415 0.146867 -0.065098 -v -0.089198 0.083249 0.029965 -v -0.085037 0.116031 0.019794 -v -0.012831 0.068882 0.029265 -v -0.078113 0.138494 -0.051059 -v -0.080889 0.073414 0.015725 -v -0.051921 0.017136 0.020812 -v -0.090060 0.090263 0.031202 -v -0.077512 0.055775 0.023426 -v -0.048372 0.031730 0.021826 -v -0.078557 0.083600 -0.019444 -v -0.085947 0.092337 0.034033 -v -0.018904 0.062151 0.037905 -v -0.085570 0.066202 0.013285 -v -0.029812 0.046917 0.028034 -v -0.075928 0.082708 -0.020052 -v 0.004609 0.077130 -0.034844 -v -0.022702 0.064360 0.030495 -v -0.019543 0.065486 0.030694 -v -0.081907 0.084312 -0.017406 -v -0.017122 0.064301 0.036310 -v -0.017820 0.066914 0.029581 -v -0.078458 0.085649 0.036318 -v -0.076673 0.072625 0.020267 -v -0.025158 0.055579 0.037172 -v -0.025803 0.040805 0.030451 -v -0.054098 0.128398 -0.008443 -v -0.044133 0.119866 -0.020941 -v -0.067129 0.070384 -0.030229 -v -0.054216 0.057645 -0.036969 -v -0.073235 0.117705 -0.051388 -v -0.085348 0.106855 0.029417 -v -0.021319 0.062456 0.035324 -v -0.026193 0.032788 0.025349 -v -0.019144 0.031106 0.035645 -v -0.081739 0.106121 0.033154 -v -0.077608 0.144682 -0.061127 -v -0.024557 0.050244 0.039826 -v -0.078402 0.113712 0.028270 -v -0.049665 0.058197 -0.036297 -v -0.045285 0.034340 0.025203 -v -0.083202 0.085206 0.034443 -v -0.038418 0.128711 -0.027252 -v -0.086717 0.102275 0.030904 -v -0.023041 0.035135 0.032149 -v -0.074335 0.127147 -0.022559 -v -0.028517 0.004496 0.038966 -v -0.080384 0.083911 0.033658 -v -0.086112 0.088045 0.034234 -v -0.023731 0.040914 0.034502 -v -0.064808 0.102293 -0.022646 -v -0.020122 0.058041 0.040120 -v -0.087829 0.114839 0.016609 -v -0.058283 0.056005 -0.035677 -v -0.022871 0.042833 0.037612 -v -0.071888 0.083428 -0.022260 -v -0.067886 0.060104 -0.031244 -v -0.080808 0.086401 0.034305 -v -0.022693 0.053563 0.040729 -v -0.081172 0.059383 0.018765 -v -0.088490 0.064791 0.008404 -v -0.072730 0.059776 0.026838 -v -0.039859 0.071839 -0.035015 -v -0.039739 0.076115 -0.034286 -v -0.090072 0.097421 0.027293 -v -0.024731 0.046663 0.038424 -v -0.085785 0.117328 0.016945 -v -0.076719 0.131328 -0.034023 -v -0.019846 0.036270 0.037903 -v -0.020978 0.039795 0.037903 -v -0.027944 0.043421 0.029224 -v -0.070739 0.053846 0.027110 -v -0.091694 0.092058 0.028585 -v -0.028984 0.049540 0.030816 -v -0.023566 0.060945 0.034578 -v -0.044638 0.003665 -0.037919 -v -0.045649 0.003111 -0.036507 -v -0.092452 0.098673 0.010931 -v -0.061763 0.006542 0.009138 -v -0.071366 0.136896 -0.063480 -v -0.040366 0.141143 -0.022177 -v -0.077929 0.145223 -0.064586 -v -0.044910 0.006242 -0.036875 -v -0.045642 0.006150 -0.035229 -v -0.047421 0.005545 -0.028961 -v -0.086623 0.095459 -0.016108 -v -0.059202 0.008608 0.006614 -v -0.061418 0.008229 0.008602 -v -0.063955 0.008243 0.011632 -v -0.065234 0.008646 0.014768 -v -0.078042 0.134186 -0.051508 -v -0.067562 0.135824 -0.070424 -v -0.077607 0.143597 -0.064428 -v -0.076638 0.145005 -0.066306 -v -0.042205 0.005830 -0.041335 -v -0.046255 0.005860 -0.032390 -v -0.070102 0.008699 -0.014128 -v -0.063470 0.009848 0.012279 -v -0.078424 0.130040 -0.039777 -v -0.087845 0.097778 -0.012756 -v -0.092644 0.082977 0.000058 -v -0.042966 0.006527 -0.039848 -v -0.043296 0.010802 -0.034521 -v -0.043915 0.010208 -0.032093 -v -0.046729 0.008941 -0.026828 -v -0.065178 0.011795 -0.015813 -v -0.069091 0.010940 -0.012380 -v -0.074552 0.121565 -0.034812 -v -0.075021 0.119145 -0.041245 -v -0.057305 0.009759 0.003904 -v -0.057773 0.009108 0.005318 -v -0.064874 0.010880 0.019332 -v -0.048118 0.135521 -0.016606 -v -0.060322 0.012694 -0.018474 -v -0.067432 0.012295 -0.012112 -v -0.093044 0.099196 0.004858 -v -0.075845 0.118389 -0.022730 -v -0.054061 0.011489 0.003761 -v -0.060846 0.012722 0.013622 -v -0.092256 0.100183 0.002859 -v -0.074632 0.132346 -0.052145 -v -0.041580 0.009154 -0.038070 -v -0.064678 0.062170 -0.033084 -v -0.054601 0.011350 0.005963 -v -0.054046 0.014543 0.009739 -v -0.060415 0.011267 0.011088 -v -0.063114 0.012901 0.017714 -v -0.062504 0.013203 0.022945 -v -0.079137 0.134491 -0.050132 -v -0.077592 0.126349 -0.037129 -v -0.089703 0.082438 -0.008483 -v -0.038101 0.013473 -0.037813 -v -0.041482 0.011902 -0.036832 -v -0.043755 0.012410 -0.028764 -v -0.056592 0.015087 -0.018692 -v -0.059367 0.014216 -0.016547 -v -0.061161 0.014894 -0.012605 -v -0.065247 0.013823 -0.009496 -v -0.061060 0.015103 -0.008457 -v -0.051568 0.013784 0.003555 -v -0.057125 0.015326 0.015656 -v -0.057939 0.015657 0.018376 -v -0.060350 0.014947 0.021904 -v -0.052614 0.130978 -0.015380 -v -0.041207 0.014138 -0.031106 -v -0.042019 0.015112 -0.026941 -v -0.040485 0.065679 -0.036491 -v 0.017274 0.080826 -0.030271 -v -0.057742 0.015878 -0.015776 -v -0.058790 0.016044 -0.011666 -v -0.076589 0.123075 -0.021333 -v -0.050199 0.016233 0.002650 -v -0.050482 0.016387 0.004311 -v -0.052475 0.013454 0.006026 -v -0.055053 0.015511 0.013386 -v -0.055358 0.016692 0.021727 -v -0.073687 0.141200 -0.064191 -v -0.039931 0.013774 -0.035686 -v -0.072062 0.117690 -0.055080 -v -0.092100 0.082149 0.004399 -v -0.091483 0.113724 0.003102 -v -0.053387 0.015664 0.010587 -v -0.053712 0.016925 0.014557 -v -0.053742 0.016915 0.018480 -v -0.052878 0.016910 0.020083 -v -0.073293 0.131117 -0.053174 -v -0.031023 0.015999 -0.038303 -v -0.034445 0.016096 -0.033747 -v -0.057251 0.018151 -0.014718 -v -0.057315 0.020263 -0.011985 -v -0.052045 0.018111 0.008564 -v -0.052446 0.018873 0.012320 -v -0.079908 0.108438 -0.018378 -v -0.050622 0.132991 -0.015016 -v -0.078956 0.132786 -0.045483 -v -0.082440 0.076333 -0.014756 -v -0.025849 0.088873 -0.023146 -v -0.030530 0.017290 -0.035226 -v -0.032033 0.017520 -0.033209 -v -0.031901 0.017482 -0.031882 -v -0.034156 0.017538 -0.028193 -v 0.034172 0.078697 -0.019485 -v -0.055296 0.017733 -0.018704 -v -0.072885 0.110450 -0.022918 -v -0.052211 0.018638 0.016062 -v -0.081716 0.105504 -0.016314 -v -0.031878 0.076618 -0.033393 -v -0.026520 0.017221 -0.040272 -v -0.028620 0.017505 -0.037796 -v -0.029689 0.018559 -0.034631 -v -0.030709 0.018724 -0.031381 -v -0.072710 0.119100 -0.054699 -v -0.051853 0.022976 0.013866 -v -0.030215 0.020417 -0.032049 -v -0.030743 0.020350 -0.029319 -v -0.031774 0.019131 -0.027337 -v -0.055890 0.021404 -0.006844 -v -0.049952 0.021583 0.001843 -v -0.051340 0.021779 0.006868 -v -0.052168 0.023788 0.010993 -v -0.072352 0.123801 -0.049907 -v -0.077836 0.141695 -0.062068 -v -0.068413 0.145582 -0.073105 -v -0.029701 0.021860 -0.035718 -v -0.054647 0.023230 -0.019537 -v -0.056931 0.023336 -0.014012 -v -0.056707 0.023811 -0.008388 -v -0.054316 0.023801 -0.003920 -v -0.091906 0.098429 -0.004781 -v -0.025612 0.022210 -0.042351 -v -0.027703 0.020620 -0.039234 -v -0.030782 0.023538 -0.030250 -v -0.057474 0.025796 -0.012885 -v -0.059144 0.026434 -0.008586 -v -0.056314 0.025121 -0.004033 -v -0.088814 0.105286 -0.003575 -v -0.078768 0.136619 -0.054690 -v -0.074385 0.117661 -0.045749 -v -0.020547 0.148159 -0.037054 -v -0.031883 0.024960 -0.027557 -v -0.056722 0.028761 -0.018315 -v -0.057232 0.027647 -0.016409 -v -0.090381 0.103384 0.000271 -v -0.079376 0.136177 -0.052555 -v -0.091637 0.097051 0.017252 -v -0.071731 0.120364 -0.058801 -v -0.078499 0.140475 -0.060181 -v -0.045866 0.134574 -0.021624 -v -0.023642 0.148572 -0.033853 -v -0.026912 0.024963 -0.042009 -v -0.028886 0.025607 -0.037586 -v -0.030952 0.026081 -0.032382 -v -0.088769 0.104692 0.011891 -v 0.006567 0.072752 -0.035722 -v -0.074052 0.138591 -0.060838 -v -0.078795 0.141360 -0.058295 -v -0.078971 0.140757 -0.059119 -v -0.024048 0.150819 -0.031570 -v -0.025131 0.024059 -0.043774 -v -0.032098 0.027748 -0.029531 -v -0.039186 0.003426 -0.043888 -v -0.004121 0.079485 -0.035300 -v -0.065463 0.030077 -0.016418 -v -0.042787 0.063523 -0.037040 -v -0.060181 0.061360 -0.033814 -v -0.056961 0.061986 -0.036130 -v -0.090101 0.107584 0.000050 -v -0.063061 0.134319 -0.075235 -v -0.077512 0.125457 -0.028655 -v -0.044307 0.138584 -0.019125 -v -0.018798 0.135337 -0.034085 -v -0.068220 0.126778 -0.069442 -v -0.026014 0.028126 -0.045265 -v -0.029636 0.030681 -0.038737 -v -0.033207 0.028778 -0.029173 -v -0.070583 0.058726 -0.030917 -v -0.040396 0.139564 -0.024202 -v -0.043695 0.138529 -0.021076 -v -0.090107 0.100547 0.022849 -v -0.040128 0.141625 -0.020623 -v -0.027246 0.090039 -0.021205 -v -0.033239 0.030483 -0.028938 -v -0.019791 0.002526 -0.042201 -v -0.068886 0.032225 -0.016024 -v -0.061079 0.057172 -0.033766 -v -0.074510 0.119170 -0.044441 -v -0.051264 0.083245 -0.030372 -v -0.038936 0.090571 -0.025164 -v -0.079311 0.138087 -0.055683 -v -0.057213 0.127163 -0.011237 -v -0.028399 0.029946 -0.042819 -v -0.030215 0.028371 -0.035769 -v -0.032263 0.030644 -0.032342 -v 0.033895 0.063322 -0.028467 -v -0.071079 0.033373 -0.014402 -v -0.074133 0.034944 -0.013044 -v -0.035945 0.056086 -0.038758 -v -0.052996 0.129153 -0.016674 -v -0.091230 0.096933 0.023674 -v -0.070516 0.141104 -0.067958 -v -0.089046 0.107410 0.022865 -v -0.084612 0.102005 -0.015064 -v -0.028224 0.034882 -0.044868 -v -0.029914 0.032850 -0.042190 -v -0.032471 0.033220 -0.033388 -v 0.044144 0.036973 -0.013791 -v -0.048411 0.069316 -0.036246 -v -0.060712 0.090485 -0.023344 -v -0.089291 0.100816 -0.010612 -v -0.073915 0.119143 -0.047909 -v -0.078950 0.139261 -0.054766 -v -0.070489 0.133026 -0.062837 -v -0.018127 0.150212 -0.039082 -v -0.030984 0.033850 -0.039302 -v -0.071013 0.037018 -0.019714 -v -0.072536 0.037356 -0.017660 -v -0.075149 0.037731 -0.015204 -v -0.078337 0.116643 -0.016989 -v -0.077452 0.118082 -0.019840 -v -0.078298 0.138503 -0.057840 -v -0.075095 0.137989 -0.059275 -v -0.027335 0.148207 -0.029827 -v -0.045684 0.084691 -0.030113 -v -0.025108 0.032550 -0.047453 -v -0.030367 0.037012 -0.043010 -v -0.031469 0.033922 -0.036392 -v -0.045120 0.092873 -0.023508 -v -0.015026 0.076207 -0.035212 -v -0.073093 0.038858 -0.021297 -v -0.075098 0.039155 -0.019652 -v -0.077120 0.038751 -0.012722 -v -0.080952 0.039822 0.000315 -v 0.010772 0.056371 -0.045775 -v -0.089789 0.102468 -0.007928 -v -0.077558 0.128878 -0.032986 -v -0.077764 0.040161 -0.017213 -v -0.078173 0.040505 -0.014046 -v -0.073708 0.115794 -0.034595 -v -0.046617 0.136347 -0.019326 -v -0.075270 0.127485 -0.042563 -v -0.069204 0.137436 -0.067837 -v -0.086397 0.118917 -0.005689 -v -0.035338 0.039889 -0.032754 -v 0.017043 0.093716 -0.016290 -v -0.078601 0.041332 -0.018414 -v -0.081076 0.044287 -0.016658 -v -0.081754 0.044275 -0.014088 -v -0.081833 0.041449 -0.007279 -v -0.082581 0.043865 -0.002981 -v -0.082048 0.043010 0.001357 -v -0.080954 0.042495 0.004980 -v -0.089309 0.114247 -0.004351 -v -0.084927 0.113277 -0.008343 -v -0.070798 0.122180 -0.061832 -v -0.090795 0.102759 0.005150 -v -0.070938 0.126287 -0.058367 -v -0.073735 0.122651 -0.040519 -v -0.075130 0.130425 -0.048254 -v -0.031971 0.037540 -0.038609 -v -0.083832 0.044311 -0.007261 -v -0.068987 0.100345 -0.023125 -v -0.083705 0.118388 -0.010516 -v -0.090764 0.118187 0.001083 -v 0.026497 0.057776 -0.037116 -v -0.044955 0.057322 -0.036705 -v -0.053796 0.130052 -0.011617 -v -0.022356 0.004899 0.039463 -v -0.076974 0.120545 -0.022222 -v -0.094247 0.094742 0.007774 -v -0.000581 0.078999 -0.034542 -v -0.027534 0.039839 -0.049507 -v -0.029666 0.038593 -0.045745 -v -0.031847 0.042684 -0.043606 -v -0.033628 0.044432 -0.041808 -v -0.033550 0.042358 -0.040044 -v -0.033591 0.040589 -0.036986 -v 0.022828 0.069836 -0.034275 -v -0.084156 0.046119 -0.010743 -v -0.085580 0.046811 -0.001489 -v 0.007925 0.075394 -0.034698 -v -0.072547 0.111855 -0.027743 -v -0.074702 0.134767 -0.055408 -v -0.078199 0.128803 -0.040531 -v -0.032241 0.045256 -0.045663 -v -0.034430 0.044889 -0.038308 -v -0.075676 0.048583 -0.025899 -v -0.080700 0.047920 -0.019742 -v -0.082471 0.048550 -0.016384 -v -0.085907 0.047587 -0.004178 -v -0.086713 0.048904 -0.000675 -v -0.084075 0.048764 0.008162 -v -0.089739 0.102011 0.015327 -v -0.075099 0.110803 -0.020783 -v -0.076460 0.112745 -0.019500 -v -0.080223 0.118681 -0.013668 -v -0.075871 0.119172 -0.034349 -v -0.073815 0.128142 -0.047433 -v -0.073259 0.134957 -0.057563 -v -0.030622 0.044250 -0.047999 -v -0.034749 0.045352 -0.035806 -v -0.062024 0.143268 -0.076267 -v -0.082590 0.050381 -0.018907 -v -0.084183 0.049419 -0.011798 -v -0.086059 0.048277 -0.006555 -v -0.089856 0.117339 -0.002547 -v -0.077556 0.113780 -0.018430 -v -0.077863 0.120533 -0.015177 -v -0.077117 0.121970 -0.025579 -v 0.007185 0.082029 -0.033392 -v -0.034694 0.047663 -0.038069 -v -0.079244 0.051139 -0.024083 -v -0.080661 0.051612 -0.021652 -v -0.082346 0.051784 -0.019924 -v -0.086186 0.051126 -0.008290 -v -0.086598 0.052186 -0.005477 -v -0.086881 0.052149 -0.002145 -v -0.086191 0.047879 0.001948 -v -0.085719 0.051191 0.006577 -v -0.085077 0.053657 0.011640 -v -0.084072 0.049233 0.011822 -v -0.091464 0.108956 0.005870 -v -0.088638 0.112505 0.017206 -v 0.030420 0.084470 -0.017020 -v -0.074911 0.121906 -0.033198 -v -0.049022 0.133702 -0.018521 -v -0.073406 0.125480 -0.044775 -v -0.031469 0.047976 -0.046553 -v -0.032746 0.044857 -0.043049 -v -0.076789 0.051527 -0.026761 -v -0.086263 0.052247 -0.012102 -v -0.086675 0.052184 0.002838 -v -0.086371 0.053246 0.008563 -v -0.055972 0.127833 -0.013200 -v -0.033411 0.074288 -0.034851 -v -0.089239 0.118837 0.007760 -v -0.069526 0.124201 -0.065803 -v -0.074928 0.120726 -0.030934 -v 0.030658 0.055373 -0.034640 -v -0.088511 0.054264 -0.002556 -v -0.089032 0.056286 0.004235 -v -0.091554 0.112298 0.006181 -v -0.091920 0.110513 0.002266 -v -0.089485 0.108091 0.019575 -v -0.075092 0.112414 -0.021421 -v -0.086295 0.116293 -0.007180 -v -0.078764 0.133071 -0.048670 -v -0.028533 0.052381 -0.049868 -v -0.032628 0.050599 -0.043900 -v -0.033737 0.051197 -0.039848 -v 0.026768 0.086872 -0.018219 -v -0.075180 0.052336 -0.028991 -v -0.077748 0.055790 -0.026474 -v -0.084719 0.052057 -0.016883 -v -0.086953 0.054577 -0.012831 -v -0.088054 0.053989 -0.009513 -v -0.088783 0.055694 -0.005710 -v -0.088174 0.054898 0.000370 -v -0.091054 0.108975 0.000689 -v -0.090042 0.112155 -0.000962 -v -0.074778 0.123661 -0.036328 -v -0.091691 0.116298 0.004963 -v -0.085917 0.107183 -0.012009 -v -0.030951 0.052141 -0.045509 -v -0.034022 0.145101 -0.025282 -v -0.082538 0.056112 -0.020692 -v -0.084852 0.056330 -0.017528 -v -0.087425 0.110667 -0.004577 -v -0.077335 0.122832 -0.030045 -v -0.078310 0.130669 -0.044467 -v -0.065000 0.135384 -0.074686 -v -0.071823 0.123955 -0.054004 -v -0.075357 0.119251 -0.026553 -v -0.032593 0.053942 -0.040370 -v -0.087563 0.078259 -0.000919 -v -0.085726 0.057815 -0.014673 -v -0.087644 0.057109 -0.011378 -v -0.088659 0.057016 -0.008238 -v -0.089809 0.107476 0.009521 -v -0.075799 0.117833 -0.033715 -v -0.078845 0.136453 -0.049398 -v -0.083211 0.082227 -0.015779 -v -0.069620 0.128988 -0.064437 -v -0.075599 0.077040 -0.022522 -v -0.029311 0.056067 -0.046454 -v -0.031401 0.055548 -0.041290 -v -0.074605 0.055820 -0.029592 -v -0.080511 0.056268 -0.022627 -v -0.083478 0.058346 -0.020539 -v -0.086047 0.060321 -0.012427 -v -0.087131 0.060437 -0.010578 -v -0.089826 0.058723 0.000305 -v -0.082396 0.115710 -0.012191 -v -0.091043 0.110270 0.012122 -v -0.085581 0.110828 -0.007451 -v -0.089693 0.109288 0.015681 -v -0.083246 0.113185 -0.011881 -v -0.076098 0.116280 -0.025726 -v -0.077773 0.118911 -0.017749 -v -0.077104 0.123891 -0.033626 -v -0.076195 0.118214 -0.029879 -v -0.074231 0.125119 -0.040752 -v -0.085421 0.084842 -0.014931 -v -0.083683 0.106513 -0.014112 -v -0.082337 0.061931 -0.021412 -v -0.031346 0.082467 -0.030927 -v -0.012360 0.066895 -0.039430 -v 0.056585 0.036642 -0.011282 -v 0.000500 0.084565 -0.032022 -v 0.015166 0.090169 -0.023738 -v -0.019076 0.154745 -0.032048 -v 0.037263 0.054745 -0.030432 -v -0.015598 0.070765 -0.037885 -v -0.019300 0.154726 -0.034452 -v 0.007177 0.086427 -0.030080 -v 0.010087 0.080068 -0.033613 -v -0.006782 0.082614 -0.031837 -v 0.048400 0.039500 -0.008680 -v -0.029901 0.145170 -0.029850 -v -0.017478 0.153707 -0.038080 -v -0.043156 0.080832 -0.031030 -v 0.003053 0.066832 -0.038179 -v 0.004836 0.091266 -0.024953 -v 0.056830 0.033722 -0.012856 -v -0.017504 0.003611 -0.041627 -v -0.005180 0.068988 -0.037858 -v 0.016003 0.086445 -0.027315 -v -0.024653 0.063504 -0.039762 -v -0.015860 0.152979 -0.040154 -v 0.052466 0.035919 -0.013520 -v -0.040255 0.084670 -0.029122 -v 0.013836 0.073754 -0.033667 -v 0.018950 0.057551 -0.040689 -v -0.056819 0.126312 -0.013289 -v -0.047399 0.081210 -0.030934 -v -0.061613 0.138879 -0.076540 -v -0.050035 0.077882 -0.033254 -v -0.061950 0.009568 -0.021395 -v -0.013553 0.152136 -0.042065 -v -0.034145 0.081122 -0.031798 -v 0.001634 0.072060 -0.036567 -v -0.008249 0.080279 -0.034779 -v 0.035870 0.074400 -0.020786 -v 0.034752 0.072920 -0.024730 -v -0.061834 0.122399 -0.011428 -v -0.059715 0.123599 -0.011739 -v 0.012242 0.089892 -0.025866 -v -0.048108 0.131761 -0.020683 -v -0.010990 0.149931 -0.042662 -v -0.027122 0.002239 -0.043854 -v -0.023013 0.062652 -0.044316 -v -0.053858 0.094808 -0.019956 -v -0.011305 0.148452 -0.044229 -v -0.015774 0.066433 -0.038998 -v -0.064282 0.121672 -0.012903 -v -0.059714 0.121434 -0.013818 -v 0.013457 0.079478 -0.032683 -v -0.024216 0.076630 -0.035703 -v -0.014057 0.150444 -0.042691 -v -0.017534 0.080920 -0.033520 -v -0.057977 0.118890 -0.015557 -v -0.052416 0.093298 -0.021112 -v 0.020660 0.078841 -0.029764 -v -0.061640 0.120269 -0.014314 -v 0.028086 0.067449 -0.031942 -v 0.017710 0.070319 -0.036204 -v 0.047196 0.039471 -0.009606 -v -0.034604 0.009530 -0.044149 -v -0.029570 0.085497 -0.027706 -v -0.062830 0.119581 -0.015557 -v -0.001501 0.072424 -0.037056 -v 0.047076 0.041565 -0.004724 -v 0.011681 0.065971 -0.037687 -v -0.015325 0.091966 -0.020191 -v 0.007950 0.065862 -0.038425 -v 0.018264 0.074053 -0.031947 -v -0.038315 0.081842 -0.031300 -v 0.011761 0.063411 -0.040812 -v -0.001421 0.067769 -0.038473 -v -0.052425 0.003396 -0.026917 -v -0.063911 0.120240 -0.016704 -v -0.059365 0.114981 -0.016629 -v 0.021602 0.076087 -0.030136 -v -0.007243 0.070450 -0.038083 -v -0.065387 0.083901 -0.024593 -v -0.006281 0.092617 -0.024202 -v -0.015471 0.062226 -0.048302 -v -0.023574 0.082858 -0.030193 -v 0.023783 0.082564 -0.026160 -v -0.012370 0.070347 -0.038694 -v -0.060254 0.002580 -0.024393 -v -0.034537 0.091135 -0.021600 -v 0.034452 0.056261 -0.032270 -v 0.013422 0.062485 -0.040508 -v 0.005859 0.065049 -0.041196 -v -0.004149 0.084695 -0.030351 -v 0.010939 0.086702 -0.029527 -v 0.011702 0.072645 -0.034510 -v 0.011074 0.082671 -0.031264 -v 0.028102 0.063382 -0.034040 -v -0.033632 0.087124 -0.025595 -v 0.015214 0.063306 -0.038578 -v 0.007890 0.067338 -0.036657 -v 0.034346 0.068177 -0.027457 -v -0.035711 0.011107 -0.042851 -v -0.032725 0.013327 -0.041864 -v 0.007047 0.069187 -0.035817 -v -0.039694 0.009222 -0.040995 -v -0.054664 0.085882 -0.028016 -v -0.020458 0.091283 -0.020586 -v -0.014694 0.089931 -0.022563 -v -0.022420 0.064482 -0.039410 -v 0.031888 0.079781 -0.021848 -v -0.055677 0.111740 -0.016120 -v -0.036832 0.084126 -0.029462 -v 0.022632 0.055215 -0.039150 -v 0.005644 0.061131 -0.046502 -v -0.007890 0.062489 -0.048288 -v -0.013340 0.079635 -0.033261 -v -0.016444 0.063827 -0.045731 -v -0.033996 0.004659 -0.045218 -v 0.024407 0.066392 -0.035057 -v -0.008395 0.087278 -0.028727 -v -0.067204 0.147492 -0.074185 -v 0.008931 0.060410 -0.045041 -v -0.002527 0.081152 -0.033352 -v -0.026900 0.079255 -0.032378 -v -0.059994 0.111375 -0.017645 -v -0.003345 0.063779 -0.046646 -v -0.066299 0.009684 -0.018801 -v -0.057452 0.012287 -0.020877 -v 0.046213 0.040519 -0.010585 -v -0.050739 0.086589 -0.028451 -v -0.012146 0.054745 -0.053089 -v 0.003875 0.084283 -0.032725 -v -0.037425 0.007818 -0.043518 -v 0.001325 0.093070 -0.022557 -v -0.016246 0.086065 -0.028692 -v -0.060711 0.109222 -0.019755 -v 0.055036 0.038529 -0.009862 -v 0.000869 0.062969 -0.046333 -v 0.013127 0.059603 -0.043718 -v -0.021183 0.079815 -0.033540 -v 0.028031 0.046705 -0.037068 -v 0.046127 0.033601 -0.015031 -v 0.054263 0.031844 -0.014971 -v -0.002591 0.090131 -0.025463 -v -0.059086 0.088571 -0.023965 -v 0.019837 0.067677 -0.036878 -v -0.039156 0.015975 -0.027426 -v -0.036712 0.013126 -0.040172 -v -0.047779 0.101129 -0.009622 -v 0.048719 0.028832 -0.018790 -v -0.070958 0.083018 0.037050 -v -0.042557 0.088335 -0.027668 -v 0.022855 0.085920 -0.023652 -v 0.006664 0.057282 -0.047650 -v -0.012627 0.061265 -0.049693 -v -0.010406 0.092998 -0.022041 -v -0.001097 0.059267 -0.049227 -v 0.035411 0.059165 -0.030278 -v -0.006727 0.090025 -0.026086 -v -0.006199 0.065048 -0.044686 -v 0.016197 0.057565 -0.042478 -v -0.031950 0.005511 -0.045101 -v -0.027315 0.083083 -0.029761 -v -0.053388 0.105912 -0.015697 -v -0.046574 0.097651 -0.012472 -v -0.038144 0.015407 -0.031348 -v 0.042227 0.027774 -0.018547 -v -0.060228 0.082587 -0.028406 -v -0.013602 0.085252 -0.029884 -v -0.049819 0.003823 -0.026901 -v 0.005412 0.079847 -0.034730 -v -0.023301 0.060553 -0.048303 -v -0.020853 0.066225 -0.038942 -v 0.014900 0.072591 -0.034173 -v -0.043643 0.077698 -0.033039 -v 0.026048 0.081700 -0.024248 -v -0.035907 0.014319 -0.038740 -v -0.010487 0.004035 -0.040075 -v -0.005656 0.077235 -0.037090 -v -0.018311 0.083308 -0.031349 -v -0.011516 0.081893 -0.032039 -v -0.010895 0.089292 -0.025817 -v 0.013726 0.070118 -0.036582 -v -0.010863 0.064506 -0.045891 -v -0.056719 0.106712 -0.019152 -v -0.055565 0.103173 -0.018468 -v 0.022252 0.059444 -0.037999 -v -0.004936 0.059749 -0.049946 -v -0.022750 0.058487 -0.050384 -v -0.017877 0.065468 -0.040004 -v -0.042736 0.003607 -0.041890 -v -0.006289 0.067354 -0.039892 -v -0.026822 0.078237 -0.033581 -v 0.000206 0.065771 -0.042255 -v 0.030287 0.072466 -0.028721 -v -0.049260 0.099567 -0.015084 -v 0.028315 0.051901 -0.036194 -v 0.025205 0.050686 -0.039090 -v 0.045433 0.036649 -0.012316 -v -0.018314 0.069477 -0.038387 -v 0.041602 0.029887 -0.017592 -v 0.009933 0.068447 -0.036779 -v -0.012441 0.096622 -0.011323 -v 0.001062 0.098116 -0.013894 -v 0.043752 0.034165 -0.014645 -v 0.018625 0.090137 -0.021245 -v -0.037207 0.002683 -0.044919 -v 0.025083 0.070807 -0.032411 -v -0.012431 0.058997 -0.051123 -v -0.035588 0.085498 -0.027373 -v -0.014645 0.067661 -0.038225 -v 0.032868 0.076409 -0.023379 -v -0.067854 0.148834 -0.072724 -v -0.034940 0.003167 -0.045791 -v -0.052770 0.101178 -0.018319 -v -0.039384 0.095758 -0.013827 -v 0.006349 0.097978 -0.013954 -v 0.013677 0.096553 -0.013558 -v -0.019286 0.075237 -0.036872 -v 0.013917 0.083406 -0.030333 -v 0.017703 0.084268 -0.028295 -v 0.022872 0.063448 -0.036250 -v -0.057736 0.003752 -0.025009 -v -0.035519 0.088681 -0.024441 -v -0.020475 0.062412 -0.046771 -v -0.010059 0.055339 -0.051824 -v -0.050497 0.096125 -0.018116 -v -0.047939 0.096840 -0.015582 -v 0.029282 0.060420 -0.034228 -v -0.001322 0.088024 -0.027546 -v 0.017300 0.077236 -0.031481 -v 0.031840 0.060080 -0.032942 -v -0.020545 0.094419 -0.011353 -v -0.011843 0.094779 -0.017825 -v -0.000505 0.097134 -0.015882 -v 0.001943 0.075661 -0.034919 -v 0.029830 0.079562 -0.024115 -v -0.019642 0.086126 -0.027146 -v -0.057810 0.087551 -0.025223 -v -0.017314 0.059123 -0.051057 -v -0.049672 0.089904 -0.026097 -v -0.031145 0.002835 -0.045122 -v -0.041759 0.001801 -0.042579 -v 0.011295 0.003897 -0.036913 -v 0.019231 0.085116 -0.026672 -v 0.025859 0.076161 -0.028752 -v -0.032000 0.089495 -0.021955 -v -0.053557 0.099189 -0.019326 -v -0.011162 0.068052 -0.038792 -v -0.002586 0.094724 -0.020810 -v 0.005728 0.094769 -0.020828 -v 0.008960 0.095044 -0.019400 -v 0.014951 0.092664 -0.019696 -v 0.005177 0.063223 -0.044677 -v 0.025112 0.079381 -0.026715 -v -0.063393 0.146044 -0.075291 -v 0.043787 0.031873 -0.016021 -v 0.028596 0.074967 -0.027900 -v 0.000698 0.068695 -0.037429 -v -0.051898 0.096428 -0.018691 -v -0.022347 0.092589 -0.016272 -v 0.023106 0.088406 -0.019808 -v 0.051161 0.032356 -0.016355 -v 0.002514 0.087977 -0.028410 -v 0.040043 0.069521 -0.017978 -v -0.045858 0.094894 -0.020254 -v -0.043119 0.094442 -0.020440 -v -0.036613 0.094320 -0.016831 -v -0.029139 0.092644 -0.012510 -v -0.026540 0.092264 -0.014517 -v -0.016302 0.093610 -0.016836 -v -0.006825 0.094989 -0.020309 -v 0.009169 0.092027 -0.023418 -v 0.007565 0.002043 -0.035313 -v 0.004646 0.002027 -0.035814 -v 0.000025 0.002644 -0.038192 -v -0.003181 0.002657 -0.038481 -v -0.007491 0.002806 -0.039255 -v -0.015579 0.002644 -0.040548 -v -0.044507 0.066321 -0.036117 -v -0.025958 0.002830 -0.043480 -v 0.005415 0.003938 -0.038180 -v 0.000727 0.003908 -0.039001 -v -0.003525 0.004102 -0.039399 -v -0.012543 0.002683 -0.040098 -v -0.015906 0.004752 -0.041386 -v -0.026017 0.004565 -0.043792 -v -0.025188 0.138724 -0.033965 -v -0.055132 0.064690 -0.036111 -v -0.067553 0.001591 -0.020444 -v 0.014452 0.006667 -0.036476 -v -0.000865 0.006305 -0.039711 -v -0.077441 0.090888 -0.021546 -v -0.066541 0.066627 -0.030802 -v -0.074803 0.065360 -0.028051 -v -0.034969 0.128107 -0.027871 -v -0.065022 0.004385 -0.022233 -v -0.066627 0.001676 -0.021561 -v -0.068325 0.003883 -0.020526 -v -0.069787 0.002177 -0.018566 -v 0.023229 0.004649 -0.016492 -v 0.010572 0.005368 -0.037576 -v 0.004208 0.006108 -0.038887 -v -0.006619 0.007713 -0.040497 -v -0.023126 0.004230 -0.043271 -v -0.075282 0.104086 -0.021047 -v -0.066832 0.085632 -0.023437 -v -0.061774 0.004060 -0.023371 -v -0.069532 0.004495 -0.018633 -v -0.070765 0.004173 -0.015606 -v 0.033211 0.006118 -0.014551 -v 0.024238 0.006623 -0.018405 -v 0.007831 0.008891 -0.038129 -v -0.012573 0.007958 -0.041157 -v -0.029947 0.009698 -0.044373 -v -0.075150 0.037313 0.010923 -v -0.060507 0.096404 -0.022243 -v -0.047771 0.004412 -0.027175 -v -0.068799 0.006829 -0.016546 -v 0.011612 0.008315 -0.037805 -v 0.002381 0.009793 -0.038907 -v -0.003904 0.009810 -0.040055 -v -0.009802 0.011115 -0.040624 -v -0.020553 0.009444 -0.043365 -v -0.057435 0.074404 -0.032687 -v 0.014608 0.068291 -0.037224 -v -0.067184 0.007430 -0.020198 -v -0.071324 0.006033 -0.014324 -v 0.032638 0.007994 -0.017258 -v 0.025105 0.007999 -0.019364 -v -0.064758 0.070694 -0.031823 -v 0.014184 0.011172 -0.038788 -v 0.003337 0.011093 -0.039286 -v -0.001248 0.011240 -0.039647 -v -0.004154 0.011234 -0.040451 -v -0.047686 0.008724 -0.026283 -v -0.057112 0.009038 -0.023353 -v -0.067390 0.009163 -0.016487 -v -0.028149 0.143689 -0.032055 -v 0.028014 0.008853 -0.018995 -v -0.032455 0.003877 0.035802 -v 0.017538 0.013059 -0.037851 -v 0.011063 0.011699 -0.039527 -v -0.000556 0.012648 -0.040927 -v -0.007801 0.013746 -0.044097 -v -0.013235 0.014505 -0.044152 -v -0.013890 0.011366 -0.041311 -v -0.017450 0.012004 -0.042200 -v -0.025654 0.012186 -0.043017 -v -0.026218 0.015286 -0.040816 -v -0.070632 0.069441 -0.028703 -v -0.049938 0.011005 -0.025013 -v -0.053387 0.007521 -0.025560 -v -0.025707 0.067798 -0.038532 -v 0.043767 0.011400 -0.014094 -v 0.041397 0.012971 -0.018256 -v 0.035885 0.014007 -0.020647 -v 0.036939 0.009734 -0.017685 -v 0.031029 0.013009 -0.020553 -v 0.027826 0.012745 -0.021139 -v -0.061336 0.065015 -0.032802 -v 0.021035 0.014061 -0.034854 -v 0.008494 0.013850 -0.040165 -v 0.005143 0.013057 -0.040579 -v -0.001678 0.014368 -0.043421 -v -0.005239 0.013444 -0.043587 -v -0.016766 0.013270 -0.042737 -v -0.020829 0.014381 -0.042477 -v -0.021914 0.013686 -0.042423 -v -0.030914 0.012225 -0.043228 -v -0.064637 0.141925 -0.075725 -v -0.054782 0.003935 0.032190 -v -0.012610 0.138850 -0.039956 -v -0.045125 0.012281 -0.025742 -v -0.055060 0.013600 -0.021150 -v -0.075985 0.035397 -0.002547 -v 0.044568 0.014263 -0.018004 -v 0.025119 0.016735 -0.034682 -v 0.020702 0.015295 -0.035755 -v 0.018007 0.015675 -0.037645 -v 0.013867 0.014732 -0.039664 -v 0.010414 0.016728 -0.042389 -v 0.007035 0.016139 -0.042215 -v 0.003474 0.015060 -0.043295 -v -0.001077 0.016427 -0.044909 -v -0.010127 0.013940 -0.043850 -v -0.027961 0.016619 -0.038830 -v -0.049988 0.014169 -0.023643 -v -0.062639 0.068823 -0.032892 -v 0.017298 0.017227 -0.038923 -v 0.014373 0.017271 -0.041386 -v 0.001371 0.017665 -0.045073 -v -0.005849 0.017331 -0.045363 -v -0.042853 0.015952 -0.025784 -v -0.053258 0.016111 -0.021204 -v -0.011770 0.142485 -0.042825 -v 0.042753 0.017093 -0.020618 -v 0.032689 0.016596 -0.021005 -v 0.031324 0.017311 -0.022228 -v 0.022195 0.018623 -0.038080 -v 0.016130 0.019332 -0.041092 -v 0.014119 0.020303 -0.042253 -v 0.005377 0.018158 -0.043571 -v -0.012153 0.018392 -0.046171 -v -0.019870 0.016695 -0.043991 -v -0.023270 0.015923 -0.041978 -v -0.035756 0.076266 -0.034607 -v -0.036448 0.016627 -0.027755 -v -0.037153 0.018069 -0.025618 -v -0.041224 0.018739 -0.025669 -v -0.047062 0.015742 -0.024232 -v -0.021296 0.140251 -0.035811 -v 0.046571 0.016876 -0.018957 -v 0.039166 0.017029 -0.021016 -v -0.071226 0.108156 -0.022089 -v 0.023712 0.019981 -0.037456 -v 0.020398 0.019668 -0.040170 -v -0.003445 0.019845 -0.046057 -v -0.010278 0.020983 -0.048195 -v -0.066697 0.125239 -0.069110 -v -0.032623 0.018493 -0.026101 -v 0.044973 0.020761 -0.020884 -v 0.033943 0.019553 -0.021501 -v 0.026010 0.023402 -0.035715 -v 0.019875 0.022436 -0.042062 -v 0.017882 0.022162 -0.042563 -v 0.008603 0.021635 -0.044894 -v 0.007685 0.023040 -0.045335 -v 0.003696 0.020521 -0.044426 -v 0.000289 0.021309 -0.045058 -v -0.006435 0.020358 -0.047045 -v -0.033829 0.018660 -0.025038 -v -0.038074 0.020329 -0.025228 -v -0.044540 0.022615 -0.025633 -v -0.045670 0.019596 -0.024688 -v -0.071026 0.096111 -0.023729 -v 0.042363 0.021535 -0.021419 -v 0.036877 0.020254 -0.021231 -v -0.068208 0.063898 -0.030912 -v 0.022339 0.022158 -0.040459 -v 0.013256 0.023478 -0.043923 -v 0.004761 0.024479 -0.045397 -v 0.002328 0.023955 -0.046360 -v -0.013253 0.023252 -0.048472 -v -0.015869 0.019021 -0.046406 -v -0.032609 0.020857 -0.025032 -v -0.076650 0.069689 -0.024910 -v 0.049399 0.022931 -0.019555 -v 0.039426 0.023543 -0.020486 -v 0.016920 0.024587 -0.043110 -v -0.011778 0.025054 -0.048809 -v -0.019235 0.022088 -0.046634 -v -0.032705 0.024017 -0.025920 -v -0.042325 0.023970 -0.026105 -v -0.050018 0.019449 -0.022938 -v -0.070685 0.064087 -0.030420 -v -0.024217 0.003651 0.038869 -v 0.015999 0.028100 -0.042824 -v -0.001019 0.024976 -0.046947 -v -0.003987 0.025110 -0.047650 -v -0.006870 0.024932 -0.047900 -v -0.016071 0.026330 -0.049977 -v -0.047147 0.124973 -0.022201 -v -0.038758 0.126336 -0.026136 -v -0.034440 0.022924 -0.024904 -v -0.037104 0.024482 -0.025613 -v -0.053164 0.020563 -0.020826 -v 0.053171 0.027758 -0.017740 -v 0.048195 0.025138 -0.020067 -v 0.043526 0.024477 -0.020408 -v 0.039591 0.026091 -0.019376 -v -0.072539 0.100699 -0.022541 -v -0.080908 0.088992 -0.019464 -v 0.023188 0.026339 -0.040348 -v 0.011135 0.028538 -0.044176 -v 0.005891 0.028056 -0.045343 -v 0.002066 0.028832 -0.047845 -v -0.021543 0.027087 -0.048055 -v -0.035917 0.026760 -0.025922 -v -0.049024 0.023770 -0.024805 -v -0.076039 0.100735 -0.021600 -v -0.010581 0.076552 -0.036443 -v -0.000913 0.031459 -0.049001 -v -0.005442 0.028111 -0.049439 -v -0.009582 0.029373 -0.049787 -v -0.013415 0.028374 -0.050787 -v -0.030472 0.137502 -0.031561 -v -0.032593 0.027384 -0.027314 -v -0.033718 0.025352 -0.025695 -v -0.046260 0.026555 -0.026508 -v -0.035061 0.069112 -0.036741 -v -0.009977 0.031461 -0.050542 -v -0.033731 0.028569 -0.027319 -v -0.042752 0.029668 -0.027580 -v -0.051811 0.073492 -0.033911 -v -0.066047 0.097903 -0.023508 -v -0.077389 0.086534 -0.021264 -v -0.051698 0.069432 -0.035986 -v 0.021847 0.029894 -0.040562 -v 0.014456 0.031519 -0.044452 -v 0.001313 0.032524 -0.049001 -v -0.003756 0.030392 -0.049766 -v -0.014514 0.031252 -0.051704 -v -0.020126 0.032204 -0.050721 -v -0.022567 0.032434 -0.049611 -v -0.038593 0.027253 -0.026065 -v -0.045693 0.029539 -0.027615 -v -0.048470 0.031411 -0.027152 -v -0.048974 0.028400 -0.026351 -v -0.055660 0.029253 -0.020546 -v -0.059410 0.028586 -0.016435 -v -0.078915 0.097366 -0.020306 -v -0.056868 0.069850 -0.033658 -v -0.058760 0.102077 -0.020946 -v -0.081743 0.100643 -0.017961 -v -0.059422 0.067174 -0.033490 -v -0.076751 0.095222 -0.022378 -v 0.010593 0.035697 -0.045353 -v 0.010012 0.031813 -0.046062 -v 0.006019 0.032790 -0.047278 -v -0.013904 0.034020 -0.051883 -v -0.019724 0.034078 -0.051824 -v -0.066329 0.140899 -0.073790 -v -0.034955 0.031274 -0.028368 -v -0.040305 0.031597 -0.028155 -v -0.045649 0.032672 -0.028575 -v -0.053462 0.029240 -0.023515 -v -0.054257 0.032339 -0.023695 -v -0.054969 0.030923 -0.021803 -v -0.056812 0.030568 -0.020737 -v -0.060708 0.030878 -0.019884 -v -0.062960 0.029526 -0.017215 -v -0.070279 0.040338 0.021217 -v 0.024298 0.032664 -0.038310 -v 0.018834 0.032169 -0.042811 -v 0.014704 0.034424 -0.044726 -v -0.001517 0.036456 -0.048858 -v -0.005264 0.034108 -0.049594 -v -0.016567 0.034017 -0.052493 -v -0.050763 0.032643 -0.025921 -v -0.024458 0.132828 -0.031300 -v -0.040687 0.123254 -0.023834 -v -0.015378 0.146370 -0.041448 -v -0.043044 0.127031 -0.024625 -v -0.033777 0.133619 -0.029987 -v -0.062616 0.078846 -0.029387 -v -0.046853 0.075509 -0.033605 -v -0.056398 0.076888 -0.032569 -v -0.031206 0.066274 -0.037535 -v 0.021982 0.034512 -0.041752 -v 0.020033 0.037150 -0.043234 -v 0.016907 0.037428 -0.044325 -v 0.013611 0.037046 -0.045886 -v 0.006080 0.036047 -0.047178 -v 0.002251 0.036462 -0.047909 -v -0.005347 0.036813 -0.050550 -v -0.008836 0.034457 -0.050217 -v -0.027341 0.036930 -0.047999 -v -0.034763 0.033795 -0.029657 -v -0.035824 0.035770 -0.030525 -v -0.037995 0.036224 -0.030164 -v -0.045647 0.034644 -0.029821 -v -0.052932 0.034110 -0.025743 -v -0.055670 0.032876 -0.023379 -v -0.058303 0.034141 -0.024197 -v -0.062249 0.033837 -0.022857 -v -0.065710 0.030898 -0.017803 -v -0.054979 0.109489 -0.016499 -v -0.011417 0.145119 -0.044034 -v -0.061829 0.074746 -0.031349 -v -0.066153 0.081337 -0.025991 -v 0.023886 0.036963 -0.040241 -v 0.005423 0.038802 -0.048611 -v -0.068359 0.106799 -0.022486 -v -0.033450 0.035337 -0.032367 -v -0.041981 0.034621 -0.030037 -v -0.049475 0.037146 -0.028943 -v -0.051404 0.035260 -0.027284 -v 0.000849 0.080895 -0.034544 -v -0.036702 0.132096 -0.028658 -v -0.062940 0.042061 0.025839 -v -0.071118 0.091646 -0.023220 -v -0.074550 0.109251 -0.021225 -v -0.079494 0.038042 0.000899 -v 0.025737 0.036432 -0.038366 -v 0.008226 0.039064 -0.047683 -v -0.008681 0.038171 -0.051124 -v -0.011717 0.038731 -0.052617 -v -0.020453 0.041882 -0.053673 -v -0.056226 0.078983 -0.031912 -v -0.055771 0.036910 -0.028689 -v -0.064562 0.037163 -0.025916 -v -0.065990 0.035460 -0.022212 -v -0.069282 0.035416 -0.019203 -v -0.083464 0.095690 -0.019037 -v -0.079860 0.039351 0.003657 -v -0.020287 0.003742 0.038468 -v -0.045601 0.123307 -0.022359 -v 0.014588 0.039518 -0.045408 -v -0.008841 0.040543 -0.052130 -v -0.021961 0.038689 -0.052763 -v -0.038468 0.039818 -0.031773 -v -0.057935 0.040048 -0.031211 -v -0.060525 0.037374 -0.028868 -v -0.068547 0.038406 -0.024367 -v -0.069476 0.037724 -0.021682 -v -0.065003 0.074609 -0.029219 -v -0.063709 0.030646 0.011078 -v -0.023190 0.145361 -0.035309 -v 0.010445 0.039019 -0.046802 -v 0.007984 0.044038 -0.048625 -v -0.006766 0.043108 -0.051819 -v -0.011586 0.043454 -0.052863 -v -0.023538 0.042862 -0.052963 -v -0.027222 0.042587 -0.050536 -v -0.064686 0.128525 -0.072070 -v -0.042615 0.038900 -0.032333 -v -0.044099 0.038801 -0.031981 -v -0.047121 0.040745 -0.030979 -v -0.049459 0.040238 -0.030194 -v -0.053874 0.038914 -0.030208 -v -0.067756 0.041396 -0.028447 -v -0.073116 0.041534 -0.023803 -v -0.074748 0.087316 -0.022365 -v -0.079429 0.094132 -0.020561 -v -0.022821 0.129499 -0.029142 -v 0.023901 0.042110 -0.040512 -v 0.021017 0.040172 -0.042045 -v 0.011925 0.043554 -0.045456 -v 0.003631 0.043960 -0.049630 -v 0.001780 0.040645 -0.049708 -v -0.003173 0.041154 -0.050439 -v -0.052958 0.041574 -0.031538 -v -0.063178 0.040504 -0.030238 -v -0.075167 0.040745 -0.021903 -v -0.004308 0.070910 -0.037922 -v -0.084933 0.093870 -0.017925 -v -0.027326 0.135026 -0.032074 -v -0.052309 0.112126 -0.014895 -v -0.069732 0.121672 -0.064179 -v -0.026181 0.140666 -0.033737 -v 0.031654 0.044425 -0.034715 -v 0.020435 0.044545 -0.041582 -v 0.015451 0.043166 -0.044147 -v 0.009400 0.043267 -0.047716 -v -0.015491 0.041451 -0.053557 -v -0.035541 0.041959 -0.033694 -v -0.060704 0.042864 -0.032183 -v -0.063584 0.043595 -0.032107 -v -0.070336 0.040686 -0.025735 -v -0.064893 0.094703 -0.023434 -v -0.042003 0.132949 -0.025491 -v -0.033792 0.140856 -0.029075 -v -0.055698 0.117461 -0.016583 -v -0.049188 0.120603 -0.019657 -v 0.027111 0.041296 -0.038510 -v 0.012526 0.047182 -0.045986 -v -0.014137 0.045554 -0.052991 -v -0.028752 0.047491 -0.049984 -v -0.042919 0.044737 -0.033555 -v -0.045701 0.043768 -0.032488 -v -0.050225 0.043361 -0.032567 -v -0.055148 0.044243 -0.033793 -v -0.058127 0.043383 -0.033196 -v -0.066475 0.044206 -0.031324 -v -0.068647 0.043340 -0.029691 -v -0.072322 0.044419 -0.027542 -v -0.073916 0.044150 -0.025205 -v -0.023051 0.071198 -0.038187 -v -0.047584 0.128717 -0.021854 -v -0.071590 0.080746 -0.023363 -v 0.008688 0.047857 -0.047667 -v 0.004696 0.047994 -0.048648 -v -0.008571 0.045295 -0.052359 -v -0.014679 0.048731 -0.053994 -v -0.019478 0.048860 -0.053667 -v -0.021772 0.049277 -0.053529 -v -0.024609 0.045164 -0.052296 -v -0.011129 0.074358 -0.037196 -v -0.068307 0.123900 -0.067211 -v -0.035683 0.046041 -0.034212 -v -0.038642 0.043813 -0.032756 -v -0.049242 0.045907 -0.033516 -v -0.056981 0.046036 -0.034224 -v -0.063511 0.049651 -0.033736 -v -0.078591 0.044022 -0.020747 -v -0.065527 0.144939 -0.075296 -v -0.027467 0.071756 -0.037854 -v -0.030883 0.071812 -0.036954 -v -0.051105 0.123399 -0.019431 -v -0.050661 0.031250 0.019498 -v -0.069074 0.088622 -0.023524 -v 0.008041 0.052195 -0.047172 -v -0.000546 0.046990 -0.050427 -v -0.003905 0.048494 -0.051706 -v -0.005949 0.045867 -0.052450 -v -0.008763 0.050538 -0.052509 -v -0.037298 0.072041 -0.034998 -v -0.047404 0.046861 -0.034032 -v -0.053388 0.046149 -0.034305 -v -0.041120 0.069179 -0.035933 -v 0.032241 0.048051 -0.033973 -v 0.022406 0.047150 -0.040690 -v 0.018435 0.048005 -0.042751 -v 0.013965 0.050480 -0.044738 -v 0.011516 0.051449 -0.045461 -v 0.002711 0.051085 -0.049251 -v -0.000619 0.050144 -0.051166 -v -0.026981 0.049275 -0.051585 -v -0.079127 0.106568 -0.019266 -v -0.015508 0.137276 -0.036814 -v -0.053984 0.067189 -0.036307 -v -0.036026 0.048436 -0.036263 -v -0.044104 0.048802 -0.034688 -v -0.051797 0.050115 -0.036142 -v -0.054953 0.048558 -0.035858 -v -0.059906 0.047637 -0.034006 -v -0.068687 0.048598 -0.031769 -v -0.072307 0.047717 -0.029202 -v -0.061709 0.071472 -0.032857 -v -0.068050 0.029620 0.004821 -v 0.006402 0.050396 -0.048268 -v -0.004198 0.051498 -0.052319 -v -0.066649 0.128161 -0.071589 -v -0.072936 0.050188 -0.030240 -v -0.078377 0.046924 -0.022253 -v -0.073830 0.070011 -0.026957 -v -0.054519 0.124850 -0.016668 -v -0.065272 0.130708 -0.073373 -v -0.054063 0.114945 -0.016216 -v 0.034601 0.051142 -0.032934 -v 0.029936 0.050192 -0.034754 -v 0.022931 0.051774 -0.040325 -v 0.017269 0.053799 -0.043061 -v 0.002338 0.054467 -0.048652 -v -0.008716 0.052954 -0.052606 -v -0.016700 0.053050 -0.053678 -v -0.022145 0.053918 -0.052488 -v -0.035829 0.052120 -0.037154 -v -0.038229 0.051356 -0.036610 -v -0.040555 0.051128 -0.035664 -v -0.061655 0.051098 -0.034004 -v -0.055479 0.122619 -0.016359 -v 0.018798 0.064186 -0.037575 -v -0.057640 0.115183 -0.016388 -v -0.052760 0.119871 -0.017986 -v -0.016828 0.141225 -0.038470 -v 0.013308 0.055706 -0.045269 -v 0.004292 0.055926 -0.048185 -v -0.002237 0.052889 -0.051608 -v -0.080059 0.103223 -0.018690 -v -0.026433 0.054622 -0.050701 -v -0.056469 0.092156 -0.021753 -v -0.035012 0.053459 -0.038952 -v -0.044461 0.052461 -0.036024 -v -0.051239 0.054621 -0.036189 -v -0.055203 0.053819 -0.036034 -v -0.057067 0.051490 -0.036010 -v -0.065064 0.055148 -0.033496 -v -0.061859 0.087638 -0.023826 -v -0.070511 0.030843 0.004786 -v -0.042353 0.074585 -0.034906 -v 0.025280 0.053971 -0.038209 -v -0.018516 0.144469 -0.038516 -v -0.003010 0.056085 -0.050508 -v -0.030613 0.135152 -0.031263 -v -0.017547 0.055527 -0.052938 -v -0.032644 0.055374 -0.039903 -v -0.038201 0.056939 -0.038106 -v -0.037577 0.053960 -0.036809 -v -0.042842 0.055788 -0.036377 -v -0.036320 0.001649 -0.045090 -v -0.030348 0.001302 -0.043625 -v -0.040029 0.001814 -0.044125 -v -0.032917 0.001394 -0.044208 -v -0.027398 0.001308 -0.040998 -v -0.022754 0.001378 -0.040343 -v -0.018731 0.001352 -0.039433 -v -0.014601 0.001508 -0.038851 -v -0.010589 0.001562 -0.038121 -v -0.000795 0.001758 -0.036454 -v 0.012682 0.002524 -0.034190 -v -0.007762 0.001636 -0.037635 -v -0.043616 0.002205 -0.040859 -v -0.035393 0.001404 -0.042421 -v -0.024842 0.001662 -0.035913 -v -0.019484 0.001527 -0.036135 -v -0.014985 0.001699 -0.035383 -v -0.009336 0.001872 -0.034328 -v -0.002561 0.001971 -0.033069 -v 0.003877 0.001980 -0.032118 -v 0.009684 0.001976 -0.030278 -v 0.015684 0.002528 -0.028912 -v -0.040350 0.001346 -0.039957 -v -0.033740 0.001529 -0.035926 -v -0.029022 0.001490 -0.036773 -v -0.019412 0.002293 -0.034221 -v -0.015844 0.002371 -0.033619 -v -0.011445 0.002456 -0.032853 -v 0.008504 0.002308 -0.028595 -v 0.014027 0.002346 -0.032554 -v -0.045044 0.001934 -0.037192 -v -0.044437 0.001340 -0.036205 -v -0.026342 0.002826 -0.034567 -v -0.008344 0.003533 -0.031557 -v 0.000867 0.002623 -0.030703 -v 0.004406 0.002533 -0.030006 -v 0.011959 0.002065 -0.026358 -v -0.037242 0.001558 -0.034698 -v -0.004154 0.002539 -0.031599 -v 0.007102 0.005315 -0.026725 -v 0.014628 0.002238 -0.020932 -v -0.040903 0.001565 -0.029950 -v -0.032115 0.003306 -0.033734 -v -0.026276 0.006104 -0.032453 -v -0.020248 0.005444 -0.032449 -v -0.009995 0.005728 -0.030631 -v -0.002938 0.006702 -0.028508 -v -0.000454 0.005514 -0.029416 -v 0.011264 0.002213 -0.021709 -v -0.046721 0.002546 -0.032475 -v -0.036181 0.002239 -0.032415 -v -0.029527 0.005669 -0.032522 -v -0.022340 0.006465 -0.031210 -v -0.006703 0.006861 -0.028429 -v 0.002239 0.006264 -0.028021 -v 0.010207 0.002765 -0.025483 -v 0.018814 0.002839 -0.021208 -v -0.046318 0.001514 -0.031336 -v -0.045697 0.001368 -0.027518 -v -0.028506 0.006578 -0.030723 -v -0.017935 0.006511 -0.030655 -v -0.013960 0.006593 -0.029893 -v -0.011773 0.006806 -0.027544 -v -0.000980 0.007059 -0.026239 -v 0.006529 0.006407 -0.022874 -v 0.009334 0.002992 -0.022083 -v 0.017424 0.002839 -0.021139 -v 0.020000 0.002957 -0.018566 -v -0.048335 0.001729 -0.028955 -v -0.039732 0.001908 -0.029386 -v -0.038422 0.002889 -0.028625 -v -0.031880 0.006256 -0.030962 -v -0.025552 0.006431 -0.026628 -v -0.004001 0.006915 -0.023849 -v 0.004346 0.006569 -0.026114 -v 0.008832 0.001960 -0.014469 -v 0.020478 0.002709 -0.015478 -v 0.021426 0.002689 -0.015910 -v -0.050545 0.001517 -0.027440 -v -0.034316 0.005988 -0.029492 -v -0.017104 0.006604 -0.024631 -v -0.000868 0.007011 -0.022050 -v 0.002330 0.007141 -0.023477 -v 0.004324 0.006726 -0.020272 -v 0.006119 0.005959 -0.020757 -v 0.006431 0.003249 -0.018260 -v 0.007171 0.002417 -0.017444 -v 0.016321 0.002094 -0.015394 -v 0.018273 0.002156 -0.012368 -v 0.022788 0.002722 -0.013792 -v 0.024891 0.003926 -0.014432 -v 0.028007 0.004560 -0.014384 -v 0.030946 0.005958 -0.015544 -v 0.036135 0.007456 -0.015514 -v -0.055839 0.001920 -0.026262 -v -0.052812 0.001601 -0.026099 -v -0.035995 0.006058 -0.027234 -v -0.032552 0.006439 -0.027337 -v -0.021130 0.006309 -0.019804 -v 0.014412 0.001973 -0.013201 -v 0.022353 0.002359 -0.011144 -v 0.025289 0.002747 -0.011418 -v -0.058816 0.001543 -0.025181 -v -0.057379 0.001404 -0.024972 -v -0.055493 0.001237 -0.022714 -v -0.048975 0.001364 -0.025529 -v -0.043719 0.001536 -0.020029 -v -0.041682 0.001852 -0.023824 -v -0.041719 0.001889 -0.020451 -v -0.039765 0.003083 -0.024897 -v -0.032453 0.006227 -0.018805 -v 0.003251 0.002830 -0.013517 -v 0.006820 0.001902 -0.011401 -v 0.009520 0.002511 -0.011379 -v 0.013526 0.002363 -0.011628 -v 0.015604 0.003765 -0.010943 -v 0.025827 0.002587 -0.009234 -v 0.029847 0.003052 -0.008531 -v 0.031231 0.004048 -0.010996 -v -0.062425 0.001570 -0.023841 -v -0.060709 0.001418 -0.023457 -v -0.051253 0.001259 -0.023910 -v -0.039670 0.004000 -0.021919 -v -0.029129 0.006212 -0.023663 -v -0.009167 0.006658 -0.019716 -v 0.003408 0.005714 -0.016965 -v 0.019200 0.003579 -0.008684 -v 0.021344 0.002266 -0.009273 -v 0.022945 0.002089 -0.006409 -v 0.040073 0.006918 -0.010362 -v -0.063726 0.001590 -0.022569 -v -0.038016 0.006127 -0.022062 -v -0.027065 0.006137 -0.016951 -v -0.022685 0.006390 -0.024132 -v -0.003348 0.006664 -0.014773 -v 0.003180 0.002020 -0.010738 -v 0.004331 0.001879 -0.011433 -v 0.007838 0.002466 -0.009436 -v 0.025053 0.002170 -0.004943 -v 0.032930 0.003361 -0.005595 -v -0.079560 0.079332 0.031056 -v -0.053400 0.001266 -0.017965 -v -0.046619 0.001390 -0.019907 -v -0.040965 0.001663 -0.016328 -v -0.036504 0.006111 -0.020037 -v -0.019542 0.006233 -0.015860 -v -0.015388 0.006473 -0.018706 -v -0.014608 0.006245 -0.014999 -v 0.000071 0.006715 -0.015542 -v 0.000289 0.005677 -0.012636 -v 0.006085 0.002798 -0.008011 -v 0.008937 0.004054 -0.009514 -v 0.022402 0.003572 -0.003949 -v 0.033732 0.003394 -0.002671 -v 0.038393 0.005444 -0.004037 -v -0.048942 0.001423 -0.015379 -v -0.040108 0.001579 -0.014277 -v -0.024538 0.006108 -0.012473 -v -0.005928 0.006490 -0.011379 -v 0.004847 0.001917 -0.005809 -v 0.024912 0.002523 -0.000556 -v 0.027816 0.002443 -0.003930 -v 0.036462 0.004655 -0.001285 -v 0.048343 0.010575 -0.002852 -v -0.065975 0.001396 -0.018475 -v -0.056353 0.001239 -0.016873 -v -0.046435 0.001508 -0.014047 -v -0.038081 0.001458 -0.011482 -v -0.034521 0.006071 -0.016168 -v -0.031534 0.006153 -0.014912 -v -0.009282 0.006322 -0.007641 -v -0.002751 0.006265 -0.008450 -v 0.000747 0.002847 -0.009171 -v 0.000056 0.002544 -0.004646 -v 0.003353 0.002004 -0.004776 -v 0.004746 0.001975 -0.003427 -v -0.068963 0.001494 -0.017441 -v -0.062769 0.001170 -0.018295 -v -0.049724 0.001274 -0.010206 -v -0.035233 0.001551 -0.009666 -v -0.030569 0.006015 -0.011785 -v -0.012388 0.006260 -0.009866 -v 0.005349 0.001773 -0.000562 -v 0.030616 0.003037 0.000006 -v -0.071324 0.002113 -0.014629 -v -0.066760 0.001224 -0.013870 -v -0.044274 0.001313 -0.010300 -v -0.020555 0.006083 -0.009313 -v -0.016154 0.006209 -0.009606 -v 0.022254 0.004325 -0.000547 -v 0.023786 0.002476 0.002636 -v 0.039471 0.006462 0.001530 -v 0.044585 0.008602 -0.000932 -v 0.044182 0.009164 0.004084 -v 0.047791 0.010716 0.003446 -v -0.054924 0.038016 0.024175 -v -0.058143 0.001369 -0.012245 -v -0.047668 0.001347 -0.008647 -v -0.038137 0.001504 -0.005981 -v -0.033841 0.001578 -0.006893 -v -0.028178 0.005909 -0.008384 -v -0.023707 0.005854 -0.003725 -v -0.004693 0.006272 -0.004153 -v -0.002814 0.005607 -0.005331 -v 0.003462 0.001834 -0.001454 -v 0.021348 0.004005 0.002856 -v 0.028070 0.002961 0.002826 -v 0.029077 0.003811 0.005399 -v -0.071319 0.001861 -0.012054 -v -0.069960 0.001676 -0.008585 -v -0.059677 0.001260 -0.013403 -v -0.051590 0.001364 -0.006598 -v -0.043048 0.001698 -0.007756 -v -0.031298 0.001724 -0.003651 -v -0.013893 0.006165 -0.004972 -v -0.008085 0.006211 0.000359 -v -0.000713 0.003247 -0.000052 -v 0.005122 0.001955 0.003594 -v 0.007157 0.002131 0.002188 -v 0.008546 0.002678 0.003600 -v 0.018960 0.003952 0.004607 -v 0.021324 0.002562 0.005385 -v 0.024039 0.003056 0.007826 -v 0.040547 0.007968 0.006356 -v -0.072711 0.003382 -0.013423 -v -0.049184 0.001943 -0.006720 -v -0.046177 0.003536 -0.006639 -v -0.039982 0.003038 -0.005094 -v -0.034533 0.001630 -0.001583 -v 0.000255 0.003365 0.003411 -v 0.001249 0.002399 0.002172 -v 0.003791 0.002512 0.005884 -v 0.007546 0.002204 0.005733 -v 0.013262 0.002347 0.006986 -v 0.017694 0.002480 0.007496 -v 0.034751 0.005472 0.005729 -v -0.089954 0.083482 0.013418 -v -0.050012 0.002913 -0.004835 -v -0.038341 0.003865 -0.003409 -v -0.035403 0.001494 -0.003200 -v -0.033062 0.001523 -0.000904 -v -0.029978 0.001959 0.001487 -v -0.017986 0.006100 -0.004573 -v -0.012428 0.006071 0.000396 -v -0.003824 0.006140 0.000206 -v -0.002747 0.005529 0.000429 -v 0.010525 0.002617 0.005961 -v 0.028650 0.005676 0.010510 -v 0.031673 0.005845 0.009321 -v 0.049892 0.012818 0.006307 -v -0.072477 0.002931 -0.008755 -v -0.067245 0.001812 -0.003501 -v -0.034592 0.001807 0.000510 -v -0.021442 0.005881 0.003338 -v -0.002401 0.006265 0.004765 -v -0.001088 0.005688 0.005016 -v 0.006281 0.002646 0.008746 -v 0.039269 0.008726 0.010163 -v 0.042816 0.010068 0.009030 -v -0.063333 0.001492 -0.006185 -v -0.058324 0.001420 -0.004280 -v -0.052787 0.001482 -0.002868 -v -0.035706 0.003702 0.000151 -v -0.024534 0.005799 0.005177 -v -0.015193 0.006119 0.001485 -v -0.000299 0.006390 0.007366 -v 0.002051 0.003628 0.006515 -v 0.010103 0.002551 0.011116 -v 0.013296 0.002615 0.013827 -v 0.020503 0.003006 0.013384 -v 0.035539 0.009510 0.013282 -v -0.074745 0.035375 0.004974 -v -0.054739 0.001347 0.000685 -v -0.032133 0.001871 0.006568 -v -0.028894 0.003214 0.002843 -v -0.026600 0.005580 0.001174 -v 0.004226 0.004248 0.009303 -v 0.007563 0.003094 0.010679 -v 0.011576 0.003147 0.014579 -v 0.022322 0.003997 0.013407 -v 0.025270 0.006057 0.014585 -v 0.045684 0.011664 0.009591 -v -0.085303 0.048173 0.005532 -v -0.080927 0.077477 0.020572 -v -0.069587 0.002993 -0.002972 -v -0.063672 0.001832 0.000109 -v -0.054930 0.001438 0.004067 -v -0.053835 0.000814 0.003372 -v -0.035807 0.002852 0.004510 -v -0.033670 0.001667 0.005007 -v -0.030712 0.002500 0.007008 -v 0.002775 0.006414 0.010486 -v 0.007225 0.006686 0.014340 -v 0.031121 0.007694 0.012264 -v 0.039177 0.011371 0.014391 -v 0.043331 0.012839 0.013263 -v -0.065842 0.002440 0.000169 -v -0.028674 0.005418 0.006093 -v -0.020686 0.006030 0.008892 -v -0.018194 0.006022 0.005141 -v -0.014990 0.006107 0.007547 -v -0.007022 0.006316 0.007610 -v 0.000370 0.006665 0.010742 -v 0.019506 0.003039 0.018265 -v 0.025911 0.007453 0.016859 -v 0.027623 0.008772 0.016474 -v 0.031924 0.009521 0.013640 -v -0.052377 0.032837 0.020186 -v -0.058621 0.030992 0.015165 -v -0.059872 0.001712 0.003969 -v -0.053272 0.001425 0.006297 -v -0.036188 0.002987 0.007675 -v -0.035602 0.001917 0.009617 -v -0.035264 0.001982 0.012213 -v -0.028333 0.005429 0.008210 -v -0.028530 0.005929 0.014563 -v 0.004494 0.006979 0.013592 -v 0.013803 0.002578 0.018264 -v 0.041878 0.015357 0.017158 -v -0.073751 0.077914 0.028674 -v -0.088429 0.079961 0.020451 -v -0.090230 0.081571 0.019115 -v -0.072874 0.074374 0.022748 -v -0.062714 0.002974 0.005400 -v -0.061792 0.002039 0.004110 -v -0.056594 0.001526 0.006195 -v -0.037366 0.003442 0.009619 -v -0.038260 0.002005 0.012500 -v -0.030155 0.003917 0.009124 -v -0.019398 0.006256 0.013371 -v -0.016258 0.006443 0.015312 -v 0.009143 0.006061 0.016297 -v 0.010110 0.004476 0.018310 -v 0.011270 0.003086 0.018800 -v 0.022251 0.005207 0.019967 -v -0.061082 0.034109 0.019272 -v -0.071893 0.114747 -0.038321 -v -0.084449 0.078183 0.023020 -v -0.087807 0.081695 0.013846 -v -0.062578 0.002489 0.007063 -v -0.041531 0.001704 0.012346 -v -0.032808 0.002386 0.011691 -v -0.031964 0.003600 0.013400 -v -0.030233 0.005539 0.013005 -v -0.010815 0.006311 0.011213 -v 0.000786 0.007002 0.016114 -v 0.007401 0.006973 0.016072 -v 0.008920 0.006129 0.018762 -v 0.008520 0.002676 0.021741 -v 0.010747 0.002403 0.025243 -v 0.017180 0.002764 0.022967 -v 0.019594 0.003860 0.023303 -v -0.079432 0.043460 0.012478 -v -0.063341 0.029243 -0.014910 -v -0.064044 0.003038 0.008125 -v -0.063077 0.002135 0.010603 -v -0.055351 0.002016 0.012234 -v -0.051355 0.001662 0.011451 -v -0.045160 0.001620 0.013292 -v -0.022985 0.006157 0.013781 -v -0.006490 0.006763 0.016394 -v -0.002990 0.006685 0.013862 -v 0.005131 0.007317 0.019132 -v 0.005852 0.002595 0.023028 -v -0.071153 0.115074 -0.041224 -v -0.058901 0.027421 -0.013041 -v -0.064537 0.003179 0.009709 -v -0.011793 0.006791 0.018715 -v 0.002615 0.002662 0.024121 -v 0.017451 0.003900 0.026994 -v 0.019909 0.005407 0.026381 -v -0.075666 0.079059 0.031588 -v -0.048328 0.036128 0.024611 -v -0.080036 0.076803 0.017550 -v -0.071614 0.116355 -0.049906 -v -0.073264 0.076533 0.023634 -v -0.077197 0.044700 0.017603 -v -0.065598 0.028765 -0.010512 -v -0.058595 0.001969 0.011785 -v -0.036446 0.002265 0.018296 -v -0.034423 0.002810 0.017860 -v -0.025986 0.006296 0.017199 -v -0.004218 0.007182 0.022189 -v -0.000306 0.007215 0.020440 -v -0.000911 0.002654 0.025295 -v 0.008076 0.002348 0.024875 -v 0.015230 0.002934 0.026721 -v -0.059051 0.041099 0.026490 -v -0.067959 0.030572 -0.012612 -v -0.064162 0.028207 -0.009578 -v -0.070256 0.115615 -0.046074 -v -0.060365 0.002144 0.017357 -v -0.050758 0.002203 0.014303 -v -0.045150 0.002305 0.015800 -v -0.035213 0.002254 0.020527 -v -0.031645 0.005812 0.017792 -v -0.007765 0.007216 0.022784 -v -0.004748 0.002760 0.026458 -v 0.003497 0.002400 0.027393 -v 0.006167 0.002772 0.029637 -v 0.010287 0.002680 0.028431 -v 0.016299 0.004477 0.028742 -v -0.077644 0.075643 0.019937 -v -0.072921 0.079798 0.033763 -v -0.087712 0.079801 0.026593 -v -0.041791 0.002227 0.015228 -v -0.033152 0.002287 0.023558 -v -0.027974 0.006435 0.018548 -v -0.026541 0.006791 0.022406 -v -0.017628 0.006870 0.021656 -v -0.012520 0.007244 0.024102 -v -0.008677 0.002726 0.027115 -v -0.004048 0.002385 0.029920 -v 0.000985 0.002462 0.029265 -v 0.010023 0.003673 0.030254 -v 0.013213 0.004018 0.029646 -v -0.077317 0.040381 0.012912 -v -0.074907 0.081999 0.036213 -v -0.078905 0.075250 0.017794 -v -0.085838 0.080211 0.015057 -v -0.076138 0.076294 0.023185 -v -0.073128 0.033434 -0.010922 -v -0.064937 0.027842 -0.005909 -v -0.062811 0.026687 -0.002995 -v -0.065553 0.002567 0.014479 -v -0.054769 0.002278 0.021906 -v -0.044539 0.002434 0.021092 -v -0.029429 0.006251 0.020877 -v -0.012563 0.002777 0.028088 -v -0.009550 0.002568 0.028606 -v 0.000602 0.002829 0.030780 -v 0.005454 0.003675 0.031140 -v 0.010446 0.005309 0.030323 -v -0.069819 0.078855 0.028963 -v -0.080862 0.075168 0.015104 -v -0.077475 0.082189 0.034988 -v -0.075597 0.085083 0.037837 -v -0.070719 0.031319 -0.010423 -v -0.069384 0.029438 -0.006856 -v -0.057638 0.025671 0.002336 -v -0.065982 0.002780 0.020038 -v -0.064556 0.002206 0.018555 -v -0.039474 0.002385 0.025436 -v -0.030848 0.002315 0.026274 -v -0.022525 0.006964 0.024034 -v -0.015717 0.007301 0.025221 -v -0.015320 0.002614 0.029377 -v -0.007849 0.002548 0.032371 -v 0.000240 0.003886 0.032218 -v 0.003191 0.004303 0.031720 -v 0.006165 0.005792 0.031042 -v -0.079640 0.081629 0.032138 -v -0.086959 0.079825 0.008470 -v -0.083958 0.078688 0.027177 -v -0.083684 0.078763 0.017593 -v -0.075990 0.035462 -0.008830 -v -0.074304 0.033584 -0.006960 -v -0.070803 0.029989 -0.003974 -v -0.067134 0.028132 0.000134 -v -0.046512 0.002426 0.026629 -v -0.028790 0.002518 0.028426 -v -0.024642 0.002669 0.029112 -v -0.002743 0.003161 0.032375 -v -0.075610 0.075512 0.022310 -v -0.081824 0.044347 0.008035 -v -0.068647 0.028649 -0.002177 -v -0.060740 0.026082 -0.000716 -v -0.067042 0.003568 0.017031 -v -0.065483 0.002964 0.023242 -v -0.051319 0.002407 0.022082 -v -0.043770 0.002724 0.027648 -v -0.041548 0.002563 0.026292 -v -0.038503 0.002956 0.027774 -v -0.018836 0.002596 0.030493 -v -0.014013 0.002514 0.032237 -v -0.010916 0.003272 0.034763 -v -0.008051 0.003859 0.034707 -v -0.004501 0.004151 0.033869 -v -0.051013 0.034558 0.022002 -v -0.068474 0.033411 0.012042 -v -0.063653 0.027472 0.002571 -v -0.040137 0.003778 0.028263 -v -0.035472 0.002594 0.029377 -v -0.028219 0.002747 0.032641 -v -0.023430 0.002657 0.036703 -v -0.016236 0.002708 0.034751 -v -0.067694 0.046686 0.026261 -v -0.087406 0.084629 0.032548 -v -0.068664 0.080386 0.032027 -v -0.077417 0.077623 0.029059 -v -0.081776 0.042249 -0.011563 -v -0.080179 0.039614 -0.008429 -v -0.053758 0.030247 0.015683 -v -0.074490 0.033535 -0.004214 -v -0.072516 0.032335 -0.001469 -v -0.070894 0.030388 -0.000825 -v -0.058362 0.028032 0.008522 -v -0.064158 0.003370 0.027184 -v -0.063537 0.002573 0.025580 -v -0.060826 0.002339 0.026521 -v -0.050829 0.002485 0.029628 -v -0.048080 0.002824 0.029533 -v -0.043390 0.004065 0.029656 -v -0.083843 0.081846 0.032515 -v -0.036908 0.003721 0.030308 -v -0.015851 0.003507 0.036788 -v -0.010310 0.005767 0.035225 -v -0.082287 0.078336 0.014936 -v -0.050771 0.037646 0.023731 -v -0.071581 0.037222 0.015900 -v -0.077580 0.038362 0.007354 -v -0.079660 0.077108 0.023985 -v -0.089993 0.081203 0.025361 -v -0.079742 0.038478 -0.004581 -v -0.077273 0.037089 -0.007372 -v -0.061856 0.028227 0.006850 -v -0.061048 0.002827 0.029162 -v -0.055522 0.002428 0.029861 -v -0.056799 0.035920 0.022774 -v -0.072094 0.034380 0.008469 -v -0.034590 0.003808 0.033243 -v -0.033179 0.002815 0.032816 -v -0.027698 0.002769 0.036396 -v -0.019205 0.002760 0.036450 -v -0.022304 0.126096 -0.024655 -v -0.059503 0.106066 -0.020696 -v -0.017588 0.127330 -0.025001 -v -0.068501 0.120563 -0.062570 -v -0.029155 0.129242 -0.029139 -v -0.049514 0.114809 -0.016863 -v -0.042850 0.118136 -0.019899 -v -0.013511 0.130041 -0.029092 -v -0.013162 0.132073 -0.032555 -v -0.066607 0.114396 -0.039066 -v -0.011579 0.135886 -0.037906 -v -0.062917 0.131242 -0.073937 -v -0.062483 0.119456 -0.040973 -v -0.035894 0.123857 -0.024915 -v -0.009854 0.134879 -0.036924 -v -0.071879 0.113644 -0.035076 -v -0.068586 0.112933 -0.035312 -v -0.009826 0.139848 -0.042138 -v -0.061542 0.134304 -0.074878 -v -0.063885 0.116564 -0.040016 -v -0.067057 0.119679 -0.059949 -v -0.042604 0.116426 -0.017971 -v -0.065347 0.111075 -0.026186 -v -0.061651 0.132722 -0.073130 -v -0.066578 0.120733 -0.061997 -v -0.063739 0.127165 -0.069523 -v -0.063538 0.128218 -0.071369 -v -0.026928 0.123266 -0.018854 -v -0.064239 0.118006 -0.045120 -v -0.018188 0.132429 -0.032146 -v -0.027810 0.123497 -0.022574 -v -0.068068 0.118384 -0.056916 -v -0.071127 0.112045 -0.029618 -v -0.026259 0.126131 -0.026217 -v -0.063890 0.126768 -0.066536 -v -0.064318 0.115042 -0.035837 -v -0.069422 0.113693 -0.038365 -v -0.066804 0.122956 -0.066335 -v -0.009379 0.142749 -0.043453 -v -0.036413 0.120855 -0.021925 -v -0.069129 0.109982 -0.024671 -v -0.069421 0.117128 -0.053741 -v -0.061572 0.113710 -0.019254 -v -0.047990 0.112030 -0.010791 -v -0.009535 0.137682 -0.040130 -v -0.070391 0.110847 -0.026456 -v -0.034591 0.119681 -0.016390 -v -0.072499 0.112418 -0.030472 -v -0.065237 0.124378 -0.066913 -v -0.066294 0.122009 -0.064809 -v -0.063892 0.111272 -0.024279 -v -0.066100 0.113008 -0.033009 -v -0.041067 0.116350 -0.016415 -v -0.067815 0.115418 -0.044114 -v -0.065164 0.121904 -0.056772 -v -0.062599 0.109771 -0.021210 -v -0.026198 0.123651 -0.020945 -v -0.063566 0.126509 -0.060530 -v -0.020735 0.128586 -0.028250 -v -0.014830 0.133913 -0.034342 -v -0.066888 0.109571 -0.023617 -v -0.062942 0.117078 -0.034934 -v -0.065727 0.108134 -0.022320 -v -0.050330 0.111659 -0.013384 -v -0.063310 0.111156 -0.022674 -v -0.063373 0.112572 -0.026219 -v -0.031510 0.121638 -0.020730 -v -0.070355 0.117206 -0.054563 -v -0.017797 0.129008 -0.028534 -v -0.069389 0.112463 -0.033069 -v -0.064167 0.114152 -0.032199 -v -0.062530 0.130237 -0.070390 -v -0.067306 0.116558 -0.048310 -v -0.036572 0.119214 -0.019199 -v -0.047233 0.115704 -0.017699 -v -0.021326 0.125691 -0.022831 -v -0.063220 0.114097 -0.028650 -v -0.065647 0.116073 -0.043338 -v -0.067113 0.118087 -0.052918 -v -0.065207 0.118673 -0.049424 -v -0.030878 0.124840 -0.025717 -v -0.046966 0.113392 -0.014786 -v -0.070821 0.119891 -0.060197 -v -0.062815 0.121231 -0.047386 -v -0.065549 0.112229 -0.029708 -v -0.023099 0.124804 -0.020419 -v -0.071310 0.118507 -0.058151 -v -0.039643 0.120223 -0.021799 -vt -0.100607 0.974489 -vt -0.090082 1.003329 -vt -0.074080 0.989825 -vt 0.997485 0.031388 -vt 0.997893 -0.010341 -vt 0.988386 0.018583 -vt 0.094971 -0.002317 -vt 0.029570 -0.013558 -vt 0.071212 0.039131 -vt 0.069068 -0.033794 -vt 0.034158 0.067142 -vt 0.011407 0.030423 -vt -0.010540 0.070392 -vt -0.368964 -0.015764 -vt -0.356545 0.042010 -vt -0.332974 -0.007374 -vt -0.041326 0.101497 -vt -0.061766 0.142755 -vt -0.032991 0.137846 -vt -0.317890 -0.124907 -vt -0.293453 -0.159289 -vt -0.292074 -0.135252 -vt -0.048650 0.148499 -vt -0.259120 0.235085 -vt -0.235932 0.242019 -vt -0.257608 0.222582 -vt -0.326521 -0.041636 -vt -0.296894 -0.030770 -vt -0.307355 -0.048859 -vt 1.008406 0.003559 -vt -0.155367 1.369103 -vt -0.161947 1.385657 -vt -0.177709 1.360623 -vt -0.360755 -0.243822 -vt -0.359177 -0.208783 -vt -0.340930 -0.207810 -vt -0.033000 0.161646 -vt -0.055974 0.175126 -vt -0.338444 -0.029666 -vt 0.947854 0.079664 -vt 0.976799 0.120820 -vt 0.977007 0.066090 -vt -0.309183 -0.452921 -vt -0.307461 -0.432304 -vt -0.281904 -0.457996 -vt -0.092892 -0.112584 -vt -0.119930 -0.097276 -vt -0.090743 -0.091416 -vt 0.030104 0.102013 -vt 0.066770 0.105241 -vt -0.311463 -0.318130 -vt -0.322933 -0.287385 -vt -0.295442 -0.276533 -vt 0.118278 0.074425 -vt 0.095895 0.102706 -vt 0.116400 0.117695 -vt 1.156975 0.063010 -vt 1.174555 0.078651 -vt 1.178826 0.045348 -vt -0.320512 -0.238947 -vt -0.053417 -0.140937 -vt -0.049844 -0.123594 -vt -0.024122 -0.131263 -vt -0.186079 0.508835 -vt -0.175952 0.494536 -vt -0.191031 0.493091 -vt -0.000858 -0.121231 -vt -0.020430 -0.138269 -vt 0.001495 -0.169539 -vt 0.026411 0.784338 -vt 0.007950 0.802567 -vt -0.002128 0.775119 -vt -0.045070 0.006571 -vt -0.071176 0.034462 -vt -0.054705 0.034138 -vt -0.227928 0.021889 -vt -0.244284 0.017942 -vt -0.241053 0.046725 -vt 1.033877 0.073524 -vt 1.065528 0.083650 -vt 1.039527 0.043895 -vt 0.988761 0.113813 -vt -0.339799 -0.238821 -vt 1.349464 -0.140097 -vt 1.340474 -0.102935 -vt 1.324084 -0.118009 -vt 0.802664 -0.001245 -vt 0.806943 0.038892 -vt 0.829093 0.028855 -vt -0.032812 0.025526 -vt -0.329436 -0.367410 -vt -0.313604 -0.383608 -vt -0.303748 -0.365716 -vt 0.110675 -0.046708 -vt 0.487547 -0.056360 -vt 0.501606 -0.063029 -vt 0.487980 -0.083234 -vt -0.026903 0.103020 -vt 1.050558 0.162566 -vt 1.062655 0.177966 -vt 1.084146 0.141475 -vt -0.012437 0.124329 -vt 0.075236 0.070202 -vt 0.012987 0.115856 -vt -0.086374 0.183614 -vt -0.094796 0.168389 -vt -0.080986 0.165412 -vt 0.756052 -0.006192 -vt 0.766713 0.052759 -vt 0.772545 0.023147 -vt 1.123704 0.032226 -vt 1.149592 0.031918 -vt 1.145004 0.010860 -vt 0.877269 0.028618 -vt 0.887486 -0.003218 -vt 0.862318 -0.012739 -vt 0.797951 0.014977 -vt -0.060316 0.114668 -vt 0.679956 0.160619 -vt 0.671498 0.176034 -vt 0.686437 0.176592 -vt 0.267289 0.066490 -vt 0.232863 0.066528 -vt 0.259964 0.114587 -vt 1.196078 -0.063650 -vt 1.185529 -0.048113 -vt 1.163766 -0.081551 -vt 0.084901 0.122908 -vt 0.059971 0.156504 -vt 0.085210 0.146973 -vt 0.133377 0.018567 -vt 0.159834 0.055747 -vt -0.210441 1.205691 -vt -0.195978 1.217116 -vt -0.191289 1.195143 -vt -0.292629 -0.327605 -vt 0.745904 0.054807 -vt 0.728871 0.082710 -vt 0.730006 0.044364 -vt 0.930714 0.009523 -vt 0.970585 -0.020746 -vt 0.979675 0.015834 -vt 1.299283 0.157158 -vt 1.281228 0.173228 -vt 1.290695 0.145278 -vt 1.300100 0.130681 -vt 1.294402 0.114751 -vt 0.125238 0.147761 -vt 0.118805 0.173672 -vt 0.157255 0.175072 -vt -0.352624 -0.064505 -vt -0.359638 -0.041545 -vt 1.309011 0.037286 -vt 1.288103 0.048866 -vt 1.288665 0.028750 -vt 1.302541 0.075732 -vt -0.333350 -0.354950 -vt -0.356944 -0.334644 -vt -0.339875 -0.318593 -vt 0.233724 -0.213755 -vt 0.257839 -0.219838 -vt 0.234267 -0.235088 -vt 0.902569 0.056049 -vt 0.910757 -0.000188 -vt -0.115465 0.217121 -vt -0.150037 0.187470 -vt -0.131277 0.147444 -vt -0.400984 1.115544 -vt -0.387842 1.132370 -vt -0.408245 1.137813 -vt 0.174958 0.101447 -vt 0.145446 0.094585 -vt 0.148064 0.125679 -vt 1.191807 0.019091 -vt 1.169979 0.018613 -vt 0.584979 0.072922 -vt 0.596746 0.101958 -vt 0.621784 0.090379 -vt 0.480529 0.132998 -vt 0.495315 0.108356 -vt 0.473399 0.115342 -vt -0.330014 -0.419758 -vt -0.347586 -0.424763 -vt -0.349898 -0.398455 -vt 1.200398 -0.002993 -vt 1.229640 -0.007364 -vt 1.204756 -0.038473 -vt -0.425723 1.255970 -vt -0.455637 1.262591 -vt -0.435062 1.276556 -vt 1.413642 -0.352499 -vt 1.412125 -0.327605 -vt 1.395692 -0.316000 -vt -0.389663 1.099366 -vt -0.373162 1.113025 -vt -0.377055 1.145627 -vt -0.389132 1.191644 -vt -0.405843 1.157364 -vt 1.084697 0.108568 -vt 1.099658 0.077254 -vt 1.023580 0.044216 -vt 0.052291 0.124792 -vt 0.029487 0.143297 -vt -0.198181 1.334810 -vt -0.187587 1.373917 -vt -0.308514 0.765304 -vt -0.299772 0.784484 -vt -0.277270 0.759219 -vt -0.199401 0.200586 -vt -0.215478 0.196295 -vt -0.220796 0.226971 -vt -0.370469 1.183621 -vt -0.364078 1.228703 -vt -0.381185 1.258940 -vt -0.403967 1.207117 -vt -0.373717 0.217081 -vt -0.400362 0.199191 -vt -0.381185 0.236468 -vt 0.829334 0.062870 -vt 0.603711 -0.143106 -vt 0.599357 -0.134667 -vt 0.615497 -0.127370 -vt -0.352696 -0.154958 -vt -0.215045 1.267355 -vt -0.183998 1.266426 -vt -0.203073 1.248111 -vt -0.209877 0.018570 -vt -0.234435 0.005868 -vt 0.187281 0.005366 -vt 0.209847 0.042941 -vt 0.195800 0.073233 -vt 0.744951 0.045646 -vt -0.037895 0.581383 -vt -0.054709 0.537408 -vt -0.030025 0.567212 -vt -0.292501 0.016706 -vt 0.792653 0.033331 -vt -0.207507 0.766524 -vt -0.222453 0.784741 -vt -0.188848 0.778721 -vt 1.305696 -0.131106 -vt 1.334470 -0.125353 -vt 1.329494 -0.152100 -vt -0.091022 1.328190 -vt -0.084714 1.357195 -vt -0.056789 1.334900 -vt -0.341120 1.485846 -vt -0.360724 1.486427 -vt -0.347586 1.497270 -vt -0.290142 0.859180 -vt -0.309401 0.893010 -vt -0.287508 0.907109 -vt -0.109780 0.781803 -vt -0.089589 0.797014 -vt -0.088619 0.769152 -vt -0.032078 0.060679 -vt -0.329614 -0.382181 -vt -0.307375 -0.406050 -vt 1.077178 -0.009399 -vt 1.063841 0.020035 -vt 1.094859 0.001818 -vt 0.095108 0.175267 -vt -0.289726 0.992020 -vt -0.297577 1.037946 -vt -0.273429 1.020942 -vt -0.365058 1.170354 -vt -0.359889 1.193228 -vt -0.341167 1.170107 -vt -0.291323 -0.413253 -vt -0.302016 -0.409306 -vt -0.301290 -0.428249 -vt -0.417383 -0.028283 -vt -0.383613 -0.040855 -vt -0.393615 -0.049801 -vt -0.359930 1.171354 -vt -0.343593 1.260744 -vt 0.849363 -0.065396 -vt 0.839960 -0.013461 -vt 0.825563 -0.048573 -vt -0.101041 -0.053417 -vt -0.082133 -0.068378 -vt -0.081804 -0.058170 -vt 0.165976 0.160514 -vt 1.101514 0.238622 -vt 1.083188 0.213040 -vt 1.074187 0.235072 -vt -0.054012 1.421325 -vt -0.076676 1.444221 -vt -0.038156 1.463558 -vt -0.209877 1.329990 -vt 0.161365 -0.024236 -vt 0.091414 -0.091085 -vt 0.048947 -0.084188 -vt 0.073628 -0.144517 -vt -0.362206 1.090216 -vt -0.353539 1.129050 -vt -0.344667 1.146461 -vt -0.116620 -0.105300 -vt -0.091022 -0.126575 -vt -0.094569 -0.106164 -vt -0.054912 -0.066338 -vt 0.659811 0.092235 -vt 0.697025 0.099381 -vt 0.681280 0.120407 -vt 0.870803 -0.027860 -vt 0.873968 0.045578 -vt 0.853293 0.004520 -vt -0.055654 0.091336 -vt -0.069959 0.123301 -vt -0.065353 0.088334 -vt -0.288396 1.180990 -vt -0.273314 1.232038 -vt -0.252179 1.206745 -vt -0.362038 1.063518 -vt -0.331011 1.071139 -vt -0.342487 1.098255 -vt -0.332691 1.213182 -vt 1.421118 -0.478968 -vt 1.447160 -0.472720 -vt 1.421216 -0.472038 -vt 1.210958 0.177115 -vt 1.241084 0.160946 -vt 1.219125 0.150538 -vt 1.287416 -0.166774 -vt 1.251954 -0.152070 -vt 1.272298 -0.194965 -vt -0.337754 0.974889 -vt -0.353120 0.982267 -vt -0.354210 0.956725 -vt -0.319793 1.105958 -vt -0.323913 1.128156 -vt 1.218034 -0.030615 -vt 1.229734 -0.027413 -vt 1.228631 -0.003376 -vt 0.204505 0.153207 -vt 0.189012 0.174091 -vt 0.184666 0.136275 -vt 1.228540 0.012254 -vt 1.238696 0.036930 -vt 1.252977 0.013801 -vt 0.979267 0.048678 -vt 1.002993 0.097865 -vt 0.976518 0.095213 -vt 1.158396 0.076878 -vt 1.170259 0.120552 -vt 1.146412 0.101793 -vt 0.197325 -0.051754 -vt 0.221667 -0.026509 -vt -0.300676 -0.223171 -vt -0.294122 -0.252326 -vt -0.282095 -0.229655 -vt -0.323972 1.239707 -vt -0.166602 -0.057430 -vt -0.136830 -0.079171 -vt -0.126334 -0.068552 -vt 0.939709 -0.047375 -vt 0.965866 -0.050213 -vt 1.364731 -0.397803 -vt 1.362127 -0.436989 -vt 1.391541 -0.411582 -vt -0.099287 0.649853 -vt -0.109448 0.668766 -vt -0.091181 0.665399 -vt 1.197681 0.067050 -vt -0.329723 0.950784 -vt -0.314713 0.991982 -vt -0.343451 0.990413 -vt 0.204015 0.959956 -vt 0.187258 0.962049 -vt 0.195208 0.942553 -vt -0.234965 0.796980 -vt -0.221119 0.814197 -vt -0.210440 0.797748 -vt 0.161674 0.601507 -vt 0.185594 0.617704 -vt 0.164747 0.629956 -vt 0.434985 0.649439 -vt 0.417300 0.646810 -vt 0.439594 0.610312 -vt -0.303512 0.953421 -vt -0.324961 0.915508 -vt -0.289701 1.406869 -vt -0.276468 1.399598 -vt -0.291560 1.374951 -vt -0.330277 1.007619 -vt 0.232829 0.959952 -vt 0.115023 0.592789 -vt 0.147379 0.613529 -vt 0.103423 0.617429 -vt 0.170671 0.581405 -vt 0.196577 0.578808 -vt 0.156571 0.258052 -vt 0.181448 0.257349 -vt 0.170671 0.278552 -vt 0.181448 0.564476 -vt 0.156571 0.565193 -vt 0.174575 0.552409 -vt -0.340893 -0.164505 -vt -0.319665 -0.182231 -vt -0.331525 -0.158678 -vt 0.208571 0.857537 -vt 0.219178 0.873619 -vt 0.196005 0.885069 -vt 0.595074 -0.047629 -vt 0.633774 -0.060250 -vt 0.606267 -0.028768 -vt 1.150238 0.076655 -vt 1.146666 0.118115 -vt -0.430191 1.239254 -vt 0.208249 0.125751 -vt -0.321943 0.880678 -vt -0.307717 0.899471 -vt -0.309613 1.007516 -vt 0.159339 1.071270 -vt 0.194481 1.048584 -vt 0.187818 1.087010 -vt -0.181938 -0.027413 -vt -0.173817 -0.018809 -vt -0.176226 -0.002410 -vt 1.074946 0.047564 -vt 1.119137 0.058952 -vt -0.282139 -0.122234 -vt -0.278599 -0.135472 -vt 0.733777 -0.102128 -vt 0.749615 -0.066564 -vt 0.711271 -0.078866 -vt 1.305420 -0.315608 -vt 1.305240 -0.344027 -vt 1.342628 -0.334906 -vt 0.247533 0.012364 -vt -0.303878 0.871916 -vt -0.294667 1.004806 -vt 0.136526 0.818542 -vt 0.111446 0.807293 -vt 0.124304 0.782136 -vt 0.218846 0.719971 -vt 0.177490 0.697877 -vt 0.205553 0.688293 -vt 0.200163 0.661081 -vt 0.190353 0.678560 -vt 0.166598 0.656919 -vt 0.189756 1.116429 -vt 0.157255 1.109369 -vt 0.203897 0.254916 -vt 0.196577 0.277762 -vt 0.206640 0.550797 -vt 0.203897 0.564242 -vt 0.486215 -0.051421 -vt 0.490417 -0.034072 -vt 0.474743 -0.043214 -vt 0.881941 -0.006790 -vt 0.769050 -0.096310 -vt 0.789254 -0.064854 -vt -0.020979 -0.021433 -vt 0.588927 0.196295 -vt 0.588550 0.180587 -vt 0.582865 0.209320 -vt 0.018892 0.499976 -vt 0.068161 0.537058 -vt 0.045416 0.515177 -vt -0.286517 0.931212 -vt -0.289020 0.955823 -vt 0.196045 0.770689 -vt 0.182231 0.801599 -vt 0.171534 0.771162 -vt 0.268994 0.970540 -vt 0.300444 0.977728 -vt 0.280170 1.004216 -vt 0.177455 0.733959 -vt 0.161007 0.753939 -vt 0.142252 0.734341 -vt 0.169132 0.807611 -vt 0.156357 0.785574 -vt 0.167058 0.843951 -vt 0.158836 0.872779 -vt 0.131073 0.840442 -vt 0.108386 0.554489 -vt 0.117187 0.574927 -vt 0.113895 0.730973 -vt 0.134213 0.761025 -vt 0.133040 0.664014 -vt 0.110944 0.648049 -vt 0.123593 0.630796 -vt 0.194557 0.725995 -vt -0.310397 1.252964 -vt -0.297696 1.254949 -vt -0.303952 1.287883 -vt 1.186314 0.011138 -vt 1.218972 0.015354 -vt 1.182815 0.038236 -vt 0.772457 0.031978 -vt 0.773276 -0.000010 -vt 0.814698 0.011612 -vt 0.992580 -0.034583 -vt -0.392867 0.112640 -vt -0.435843 0.116778 -vt -0.396995 0.150432 -vt -0.303884 0.837614 -vt -0.289307 0.867414 -vt -0.268794 0.899222 -vt 0.154699 0.661868 -vt 0.174095 0.673878 -vt 0.145701 0.676807 -vt 0.139611 1.061625 -vt 0.118854 1.075698 -vt 0.127434 0.690366 -vt 0.203540 0.644901 -vt 0.208506 0.614778 -vt 0.211163 0.777032 -vt 0.213237 0.814873 -vt 0.807919 -0.082113 -vt 0.862690 -0.085142 -vt 0.872881 -0.064533 -vt -0.010137 1.422476 -vt -0.053016 1.417243 -vt -0.047512 1.396374 -vt 0.662658 -0.038841 -vt 0.654085 -0.019771 -vt -0.067989 0.078875 -vt -0.084617 0.121172 -vt -0.093205 0.147702 -vt 0.134780 0.007109 -vt 0.135236 0.046426 -vt 0.127887 0.044906 -vt -0.282023 0.820087 -vt 0.143600 0.694205 -vt 0.198556 -0.112641 -vt 0.183505 -0.094882 -vt 0.183654 -0.134760 -vt 0.325356 0.537341 -vt 0.313441 0.546878 -vt 0.343928 0.569736 -vt 0.148360 0.632539 -vt 0.188027 0.287004 -vt 0.215164 0.278382 -vt 0.195208 0.268246 -vt 0.238170 0.885327 -vt 0.210415 0.910235 -vt 0.233678 0.898028 -vt 0.618622 0.046550 -vt 0.634304 0.048607 -vt 0.635588 0.016736 -vt -0.098026 -0.061741 -vt -0.135324 -0.058047 -vt -0.126719 -0.045286 -vt -0.264412 0.868909 -vt -0.268363 0.930293 -vt 0.439850 0.587564 -vt 0.469780 0.618148 -vt 0.111630 0.834465 -vt 0.229786 0.625107 -vt 0.214235 0.589296 -vt 0.272002 0.910983 -vt 0.255860 0.961994 -vt 0.244966 0.929206 -vt 0.161712 0.969338 -vt 0.153839 1.000907 -vt 0.135085 0.992275 -vt -0.251610 0.132517 -vt -0.238751 0.075859 -vt -0.267164 0.091579 -vt 0.801951 0.081262 -vt 0.799948 0.056797 -vt 0.785371 0.057573 -vt -0.275646 0.769845 -vt -0.273401 0.791300 -vt -0.308096 0.801417 -vt -0.261893 0.959313 -vt -0.262881 0.982382 -vt -0.270139 1.018371 -vt 0.935385 0.044169 -vt 0.178039 1.018518 -vt 0.152225 1.036994 -vt 0.152774 0.955335 -vt 0.148068 0.967440 -vt 0.446505 -0.036328 -vt 0.445013 -0.007078 -vt 0.427525 -0.027233 -vt 0.191151 0.298601 -vt 1.220496 -0.069122 -vt 1.207503 -0.045925 -vt 0.252294 1.004565 -vt 0.262272 1.041974 -vt 0.244209 1.032374 -vt 0.120459 0.897074 -vt 0.153892 0.923489 -vt 0.107483 0.917080 -vt 1.054327 0.005754 -vt -0.262808 -0.014229 -vt -0.244271 -0.009734 -vt -0.247315 -0.036132 -vt 1.206756 0.108491 -vt 1.216858 0.083565 -vt 1.204029 0.085177 -vt -0.014738 0.159322 -vt -0.260082 0.815342 -vt -0.247937 0.837968 -vt 0.184661 0.986505 -vt 0.170864 0.956625 -vt 0.120537 1.027331 -vt 0.805094 -0.020282 -vt 0.766654 -0.043403 -vt 0.256690 1.077888 -vt 0.240640 1.054304 -vt -0.316938 -0.102935 -vt -0.330077 -0.067558 -vt -0.311450 -0.079182 -vt 0.013747 -0.033997 -vt -0.247678 0.876592 -vt -0.237194 0.908082 -vt -0.250294 0.931774 -vt -0.239451 0.977748 -vt -0.246452 1.027997 -vt -0.262662 1.036183 -vt 1.283191 -0.293869 -vt 1.279187 -0.317725 -vt 0.117187 0.265374 -vt 0.151616 0.264845 -vt 0.144720 0.283057 -vt -0.242632 0.779225 -vt -0.237784 0.801933 -vt 0.103257 0.992616 -vt 0.187258 0.248350 -vt 0.170864 0.247250 -vt 0.180163 0.262922 -vt 0.240391 0.945169 -vt 1.273818 -0.255435 -vt 1.286577 -0.259857 -vt 1.267232 -0.263669 -vt 0.133255 1.099212 -vt 0.115023 0.283007 -vt 0.488798 -0.005243 -vt 0.204015 0.259122 -vt 0.206202 0.228103 -vt 0.906408 -0.090865 -vt 0.947673 -0.079220 -vt -0.066861 -0.108490 -vt -0.043249 -0.107883 -vt -0.239388 0.850733 -vt -0.228048 0.891557 -vt -0.226776 0.948934 -vt -0.219586 0.997573 -vt -0.231369 1.040533 -vt 0.171621 0.906505 -vt 0.191151 0.922458 -vt 0.180163 0.945789 -vt 0.223722 0.263292 -vt -0.110574 1.345106 -vt -0.382247 1.053390 -vt -0.374272 1.073422 -vt -0.364302 1.047303 -vt -0.388199 1.125284 -vt -0.415737 1.135919 -vt -0.384688 1.147358 -vt -0.221404 0.869758 -vt -0.095654 -0.087554 -vt 0.910868 -0.037875 -vt 0.161674 0.297244 -vt 0.147379 0.311741 -vt 0.100462 0.696337 -vt 0.436747 0.680960 -vt -0.322006 -0.394592 -vt -0.284021 -0.176293 -vt -0.297215 -0.181820 -vt -0.285049 -0.201129 -vt -0.117844 -0.082231 -vt -0.225521 0.209320 -vt -0.244295 0.216348 -vt -0.024726 1.442928 -vt -0.217370 0.772021 -vt -0.249093 0.763278 -vt -0.226877 0.820692 -vt -0.218796 0.922558 -vt 0.203498 1.073136 -vt 0.230767 1.087140 -vt 0.213632 1.101777 -vt -0.403989 1.169726 -vt -0.423579 1.179023 -vt -0.392499 1.187337 -vt -0.054981 1.405290 -vt -0.032542 1.404430 -vt -0.220928 0.742232 -vt -0.129619 0.222966 -vt -0.119986 0.236421 -vt -0.144788 0.232225 -vt -0.217461 0.816873 -vt -0.212756 0.845705 -vt -0.199138 1.014156 -vt -0.215499 1.037914 -vt 0.255860 0.262967 -vt 0.231422 0.239875 -vt 0.232829 0.267376 -vt 0.215164 0.930403 -vt 0.969895 -0.066846 -vt 0.980977 -0.098385 -vt 0.995791 -0.077687 -vt 0.160589 0.291589 -vt -0.260430 1.228292 -vt -0.255531 1.242982 -vt 0.297082 0.922902 -vt 0.632868 -0.200295 -vt 0.668260 -0.188887 -vt 0.646944 -0.173659 -vt -0.025255 1.343708 -vt -0.001791 1.366696 -vt 0.012451 1.360467 -vt 1.244637 0.102458 -vt 1.239674 0.085692 -vt 0.459313 0.631132 -vt 0.470219 0.664381 -vt -0.214096 0.532835 -vt -0.238147 0.547910 -vt -0.240004 0.528670 -vt -0.205627 0.562808 -vt -0.235932 0.572864 -vt 0.465697 0.678595 -vt -0.210690 0.909904 -vt 0.268994 0.252802 -vt 0.231422 0.987078 -vt 0.452362 0.709629 -vt 0.460222 0.731289 -vt 0.448697 0.720471 -vt 1.195163 0.066323 -vt -0.084615 0.696210 -vt -0.118583 -0.200099 -vt -0.106089 -0.214615 -vt -0.129167 -0.207922 -vt 0.279513 0.883378 -vt -0.043039 0.527762 -vt -0.067552 0.509202 -vt -0.040673 0.513425 -vt -0.296463 -0.108121 -vt -0.308514 -0.150684 -vt -0.286717 -0.133408 -vt -0.414013 1.044021 -vt -0.405110 1.058254 -vt -0.395460 1.023866 -vt -0.201719 0.807625 -vt -0.197913 0.828156 -vt -0.208792 0.879677 -vt -0.206773 0.948315 -vt -0.205706 0.996344 -vt -0.197016 1.056214 -vt -0.230676 1.049895 -vt 0.114316 0.962485 -vt 1.207666 -0.020099 -vt 0.731305 -0.209820 -vt 0.724554 -0.188961 -vt 0.705096 -0.192598 -vt -0.146481 -0.024887 -vt -0.135556 -0.043866 -vt -0.120648 -0.036483 -vt 1.241543 -0.135472 -vt 1.239199 -0.159289 -vt -0.201442 0.231001 -vt -0.203541 0.181291 -vt -0.200418 0.160619 -vt -0.191826 0.176592 -vt -0.045022 1.364948 -vt -0.194686 0.768135 -vt -0.197795 0.892666 -vt -0.197573 0.968205 -vt 0.252294 0.222111 -vt 0.225233 0.222378 -vt -0.290028 -0.389552 -vt -0.301950 -0.370003 -vt -0.286836 -0.352499 -vt 0.245847 1.025256 -vt 0.208083 0.997377 -vt 0.222842 1.029281 -vt -0.185004 0.861349 -vt -0.180939 0.913144 -vt -0.185753 0.941708 -vt -0.187218 0.982262 -vt -0.173483 1.031400 -vt -0.200424 0.185558 -vt -0.168426 -0.077318 -vt -0.138509 -0.092332 -vt 0.214043 1.005707 -vt 0.229208 1.040214 -vt -0.343524 -0.112944 -vt -0.326503 -0.137091 -vt -0.205627 0.251723 -vt -0.180992 0.227880 -vt -0.184768 0.597250 -vt -0.184555 0.611571 -vt -0.199401 0.597708 -vt -0.308921 -0.257626 -vt -0.180239 0.793341 -vt -0.183065 0.847130 -vt 0.115236 0.679288 -vt 0.182946 0.854387 -vt 0.293700 0.998058 -vt 0.301496 1.028275 -vt 0.284599 1.017910 -vt 0.393587 0.605551 -vt 0.475931 0.646815 -vt 0.300245 0.501089 -vt 0.300339 0.514817 -vt 0.312547 0.514470 -vt -0.173324 1.074711 -vt -0.169310 1.060171 -vt -0.158087 1.087049 -vt 0.424838 0.594149 -vt -0.216373 0.703486 -vt -0.207329 0.715574 -vt -0.192522 0.705562 -vt -0.177265 0.823150 -vt -0.176302 0.888956 -vt -0.174650 0.963840 -vt 0.416643 0.576107 -vt 0.480529 0.716435 -vt -0.051851 0.105775 -vt 0.257078 0.783594 -vt 0.279942 0.780718 -vt 0.272057 0.805874 -vt -0.170856 0.209397 -vt -0.184768 0.202348 -vt -0.170856 0.595146 -vt 0.847857 0.046025 -vt 0.843530 0.026050 -vt 1.266978 0.077372 -vt -0.164130 0.773070 -vt -0.175051 0.756820 -vt -0.163867 0.839818 -vt -0.168333 0.865268 -vt -0.172597 1.001843 -vt -0.263738 1.050875 -vt 0.151616 0.574693 -vt -0.175780 1.308434 -vt -0.170451 1.340750 -vt 1.448460 -0.442157 -vt 1.463499 -0.430419 -vt 1.417888 -0.399536 -vt -0.167108 0.612598 -vt -0.170773 0.629081 -vt -0.304127 -0.317725 -vt -0.319883 -0.323341 -vt -0.310648 -0.345014 -vt -0.162838 0.820310 -vt -0.158236 0.910932 -vt -0.162305 0.942233 -vt 0.282301 0.920868 -vt 0.233724 0.933056 -vt 0.253703 0.948892 -vt -0.064106 0.520351 -vt -0.082221 0.547790 -vt -0.050430 0.548934 -vt 0.090259 -0.190827 -vt 0.075862 -0.180760 -vt 0.051701 -0.198026 -vt 0.283552 1.058989 -vt 0.214235 0.279824 -vt 0.307301 0.885719 -vt -0.145902 1.402800 -vt 0.029839 1.386700 -vt -0.012960 1.389426 -vt 0.025669 1.406553 -vt -0.177100 0.557309 -vt -0.155190 0.559928 -vt -0.180992 0.577391 -vt -0.381570 1.067380 -vt -0.154698 0.796785 -vt -0.152404 0.880995 -vt -0.153867 0.973756 -vt 1.496558 -0.247714 -vt 1.476077 -0.257499 -vt 1.486463 -0.258409 -vt 0.074952 1.410296 -vt 0.086912 1.437343 -vt 0.088900 1.422559 -vt -0.298536 -0.398888 -vt 0.144720 0.589534 -vt -0.147300 0.588782 -vt -0.152145 0.748380 -vt -0.141631 0.987919 -vt -0.133245 1.020470 -vt -0.139064 1.070172 -vt 0.280170 0.215873 -vt 0.189132 0.833762 -vt 1.163433 -0.022180 -vt 1.180909 -0.027236 -vt -0.142440 0.619131 -vt 1.172574 -0.010617 -vt 1.186676 -0.029135 -vt 1.161296 -0.028941 -vt -0.155126 0.717145 -vt -0.131986 0.726364 -vt -0.139859 0.770811 -vt -0.141033 0.820697 -vt -0.145154 0.849650 -vt -0.143447 0.950221 -vt -0.119412 1.046667 -vt -0.139064 0.154875 -vt -0.158087 0.131281 -vt -0.169310 0.160425 -vt 0.505536 0.015307 -vt 0.483978 0.024027 -vt 0.236744 0.598318 -vt 0.223722 0.580016 -vt -0.139451 1.384793 -vt -0.133121 0.666377 -vt -0.147184 0.662489 -vt -0.128383 0.793861 -vt -0.126794 0.929138 -vt -0.120944 0.152904 -vt -0.138575 0.119399 -vt 0.676891 -0.011046 -vt 0.659287 0.019143 -vt 0.452362 0.128547 -vt 0.570585 0.055607 -vt 0.583933 0.061589 -vt 0.590640 0.041604 -vt 1.242492 0.017794 -vt 1.265668 0.020426 -vt 1.270042 0.045032 -vt -0.134029 0.559735 -vt -0.126122 0.598041 -vt -0.131538 0.688732 -vt -0.155969 0.677805 -vt -0.132350 0.842109 -vt -0.137283 0.874521 -vt -0.127220 0.904777 -vt -0.121168 0.966410 -vt -0.120944 1.075771 -vt 0.662233 -0.068408 -vt 0.303977 0.851593 -vt -0.114647 1.416278 -vt -0.126719 1.422487 -vt -0.116523 0.622907 -vt -0.117437 0.811896 -vt -0.127802 0.863289 -vt -0.109312 1.009720 -vt 0.225233 0.998053 -vt -0.129046 1.383336 -vt -0.119367 1.400589 -vt 0.600349 0.153134 -vt 0.597736 0.175284 -vt 0.609646 0.167671 -vt 0.189756 0.168328 -vt 0.244158 0.153661 -vt 1.246357 -0.013455 -vt 1.245729 -0.037601 -vt 1.228820 -0.036248 -vt -0.125071 0.567418 -vt -0.111803 0.663022 -vt -0.115938 0.714405 -vt -0.095276 0.722284 -vt -0.115216 0.763867 -vt -0.116319 0.829583 -vt -0.104101 0.853241 -vt -0.117388 0.920099 -vt -0.221297 1.230109 -vt -0.094802 0.693347 -vt -0.102407 0.801036 -vt 0.206202 0.988329 -vt -0.098026 1.444770 -vt -0.103244 1.431704 -vt -0.116314 0.557375 -vt -0.107599 0.563178 -vt -0.093685 0.623102 -vt -0.091295 0.760844 -vt -0.105770 0.879237 -vt -0.097536 0.903271 -vt -0.101569 0.947714 -vt -0.100775 0.983806 -vt -0.104259 1.407245 -vt -0.091604 0.585540 -vt -0.090944 0.598076 -vt -0.089969 0.791898 -vt -0.095194 0.820296 -vt -0.087603 0.932229 -vt -0.092943 1.017426 -vt -0.094748 1.050087 -vt -0.093205 1.083330 -vt -0.109571 1.099354 -vt 0.532755 -0.156139 -vt 0.545508 -0.132022 -vt 0.508923 -0.122807 -vt 0.090373 1.092508 -vt -0.093254 1.428050 -vt 1.379086 -0.455688 -vt 1.410467 -0.432843 -vt -0.082694 0.668771 -vt -0.081520 0.846350 -vt -0.089633 0.872558 -vt -0.079931 0.884040 -vt -0.085182 0.966956 -vt -0.071066 1.064665 -vt 0.161235 -0.051346 -vt -0.069942 0.649266 -vt -0.080769 0.734054 -vt -0.078045 0.856209 -vt -0.080933 1.447423 -vt 1.427742 -0.064367 -vt 1.436874 -0.086928 -vt 1.442046 -0.073993 -vt -0.071680 0.819931 -vt -0.070115 0.919867 -vt -0.064572 0.939360 -vt -0.066233 0.997110 -vt 0.001738 -0.124801 -vt 0.032502 -0.151278 -vt 0.033933 -0.127161 -vt -0.077816 1.437355 -vt 1.085070 0.126147 -vt 1.114166 0.104449 -vt 1.108866 0.116467 -vt -0.061102 -0.098009 -vt -0.065421 0.615721 -vt -0.068574 0.689447 -vt -0.059701 0.809702 -vt -0.061280 0.965598 -vt -0.055974 1.047474 -vt 0.133255 0.189023 -vt 0.829349 0.006110 -vt 0.822110 -0.013089 -vt -0.057132 0.722769 -vt -0.064660 0.762544 -vt -0.057034 0.793624 -vt -0.065548 0.844945 -vt -0.054423 0.856067 -vt -0.064432 0.907810 -vt -0.038162 1.002475 -vt 0.517946 -0.047629 -vt 0.521894 -0.027055 -vt 0.586666 -0.027055 -vt 0.218029 0.664224 -vt -0.065662 1.451660 -vt -0.069469 1.460839 -vt -0.071959 1.471275 -vt -0.060642 1.466087 -vt -0.053427 1.483505 -vt 0.792953 0.081162 -vt 0.752340 0.088603 -vt 0.757893 0.071980 -vt 1.276474 -0.332479 -vt 1.286100 -0.329877 -vt 1.282051 -0.353443 -vt -0.049225 0.634172 -vt -0.040343 0.666888 -vt -0.047964 0.873167 -vt 0.875382 0.031250 -vt 0.916858 -0.006875 -vt 0.489354 0.697684 -vt -0.258407 0.119184 -vt -0.250126 0.088647 -vt -0.265250 0.102213 -vt -0.069469 -0.075162 -vt -0.060642 -0.080582 -vt -0.071959 -0.087935 -vt 0.493306 -0.083234 -vt 0.507692 -0.083253 -vt 0.505204 -0.072137 -vt -0.041338 0.690393 -vt -0.050638 0.768773 -vt -0.055587 0.833342 -vt -0.044179 0.891809 -vt -0.044740 0.919618 -vt -0.045472 0.968996 -vt 0.130670 0.954053 -vt 0.390748 0.616922 -vt 0.379941 0.577901 -vt 0.105940 1.011702 -vt 0.109044 1.064086 -vt 0.098712 0.878143 -vt 0.094900 0.855627 -vt -0.043624 0.728836 -vt -0.037992 0.758361 -vt 0.800089 0.225443 -vt 0.793380 0.234856 -vt 0.823728 0.233183 -vt 0.811282 0.253851 -vt -0.317865 1.226508 -vt -0.294668 1.220861 -vt -0.312635 1.211752 -vt 0.837193 0.247794 -vt -0.047097 0.846806 -vt -0.042843 0.943339 -vt -0.080933 -0.063439 -vt -0.287226 1.451520 -vt -0.266585 1.430731 -vt 0.784010 0.224006 -vt 1.470863 -0.459344 -vt -0.030310 0.905604 -vt -0.023589 1.031578 -vt -0.021998 1.051267 -vt -0.033000 1.063663 -vt -0.214929 0.109975 -vt -0.218720 0.084198 -vt 0.293771 0.501229 -vt 0.506123 0.038440 -vt -0.037661 1.484395 -vt -0.029134 1.493856 -vt -0.043249 1.494882 -vt 1.437964 -0.389552 -vt -0.305447 -0.286266 -vt -0.291119 -0.293869 -vt -0.284507 -0.264491 -vt -0.041451 0.629306 -vt -0.032496 0.687979 -vt -0.032960 0.734374 -vt 1.423721 -0.330339 -vt 1.418487 -0.305034 -vt 1.435637 -0.332963 -vt 1.297247 -0.379693 -vt 1.305959 -0.398888 -vt 1.336673 -0.369685 -vt -0.026310 0.897161 -vt -0.025423 0.946258 -vt 0.144963 -0.144531 -vt 0.157399 -0.175086 -vt 0.125669 -0.163679 -vt -0.336756 -0.218084 -vt -0.331706 -0.237897 -vt -0.319891 -0.218380 -vt 1.308084 -0.185958 -vt -0.019955 0.278253 -vt -0.037565 0.272435 -vt -0.037895 0.284149 -vt -0.027096 0.258006 -vt 0.678366 0.202661 -vt 0.696937 0.216531 -vt 0.724761 0.217571 -vt -0.204206 0.084629 -vt 0.269334 0.023409 -vt -0.295511 -0.086037 -vt -0.282272 -0.070527 -vt -0.022181 0.916785 -vt -0.016878 0.974957 -vt 0.096680 1.078498 -vt 0.075378 1.041740 -vt 0.061143 1.064672 -vt 0.106141 0.756692 -vt -0.210436 0.115767 -vt -0.007329 0.573213 -vt -0.009106 0.590872 -vt -0.013542 0.551238 -vt -0.036394 0.546987 -vt 0.904801 -0.119002 -vt 0.905358 -0.150818 -vt 0.938503 -0.143925 -vt -0.305583 -0.212548 -vt -0.322904 -0.189873 -vt -0.343593 0.239713 -vt -0.350076 0.219222 -vt 0.580044 0.115767 -vt 0.564962 0.084629 -vt -0.289547 -0.234515 -vt -0.000977 0.922062 -vt -0.003895 1.028899 -vt -0.014738 1.075759 -vt -0.048650 1.073273 -vt -0.016621 1.493504 -vt -0.004567 1.502637 -vt -0.018453 1.505034 -vt -0.009106 0.288779 -vt -0.007724 0.264805 -vt -0.005304 0.241058 -vt -0.022247 0.233776 -vt -0.010239 0.227950 -vt -0.023731 0.214591 -vt -0.285456 1.276801 -vt 0.220954 0.099121 -vt -0.403939 0.053701 -vt -0.385396 0.071827 -vt 1.468864 -0.406050 -vt 0.000617 0.961803 -vt -0.002154 1.068245 -vt 0.722077 0.016709 -vt 0.709741 -0.027582 -vt 0.728911 -0.015475 -vt 0.396575 0.547653 -vt 0.297421 1.082417 -vt 0.692132 0.022634 -vt 0.775592 -0.006064 -vt 0.787930 -0.029834 -vt -0.337576 -0.145265 -vt 1.524745 -0.176083 -vt 1.517066 -0.194777 -vt 1.532446 -0.200710 -vt 0.002757 0.935529 -vt -0.021998 0.173761 -vt -0.023589 0.192360 -vt -0.002154 0.174635 -vt 0.233868 0.978612 -vt 0.248435 0.986183 -vt 0.255697 0.978246 -vt 0.014577 0.576016 -vt 0.006912 0.258874 -vt 0.610603 0.246396 -vt 0.610885 0.227950 -vt 0.601869 0.241058 -vt -0.014292 0.916215 -vt -0.034815 0.902634 -vt -0.050952 0.908130 -vt -0.168426 1.272533 -vt -0.147268 1.300941 -vt -0.138509 1.289134 -vt 0.635503 0.118535 -vt -0.105370 0.729999 -vt -0.087233 0.755020 -vt -0.090545 0.726904 -vt 0.020163 1.026309 -vt 0.015671 0.158616 -vt 0.014577 0.302083 -vt 0.022947 0.284976 -vt 0.012591 0.254178 -vt 0.012591 0.611911 -vt 0.004890 0.620216 -vt -0.005304 0.611483 -vt 1.286286 0.065805 -vt 1.279873 0.050893 -vt 0.266568 1.097891 -vt 0.245055 1.101912 -vt 0.021782 0.936179 -vt 0.021830 1.056629 -vt -0.071694 0.037327 -vt -0.081733 0.032690 -vt -0.059650 0.018578 -vt 1.244022 -0.002410 -vt 0.494961 0.677658 -vt -0.288288 0.179688 -vt -0.303952 0.205483 -vt -0.258293 0.181100 -vt 0.245877 -0.021313 -vt -0.241506 0.168934 -vt -0.212853 0.169643 -vt -0.235950 0.150368 -vt -0.218386 0.037286 -vt 0.015636 0.965914 -vt 0.025801 0.993289 -vt 0.032987 0.180089 -vt 0.001244 1.512125 -vt 0.011651 1.522057 -vt -0.001231 1.523705 -vt 0.812515 -0.042495 -vt 0.031987 0.266471 -vt 0.025652 0.263752 -vt 0.031987 0.599574 -vt 0.025652 0.611357 -vt 0.006912 0.605160 -vt 0.601744 0.263752 -vt 0.616017 0.270047 -vt 0.626622 0.250529 -vt 1.403692 -0.276533 -vt -0.000916 0.848356 -vt 0.023355 0.827187 -vt 0.032034 0.842577 -vt 0.056207 0.248668 -vt 0.041023 0.258186 -vt 0.066853 0.284686 -vt 0.032987 1.080425 -vt 0.230092 0.645831 -vt -0.049513 0.802994 -vt -0.340275 0.080617 -vt -0.351422 0.106519 -vt 0.043335 0.792183 -vt 0.034764 0.814024 -vt 0.287146 -0.016442 -vt 0.290682 -0.048652 -vt 0.032351 0.939494 -vt 0.038098 0.967281 -vt 0.035564 1.016543 -vt 0.040841 1.065510 -vt 1.341156 -0.431072 -vt -0.108596 0.754538 -vt 0.050617 0.587519 -vt 0.022947 0.589667 -vt 0.050617 0.275466 -vt 0.044903 0.603224 -vt 0.041885 0.631676 -vt 0.023901 0.625630 -vt 0.247350 -0.049049 -vt 0.044234 0.859107 -vt 0.016632 0.878923 -vt -0.300473 -0.379693 -vt 0.046831 0.969877 -vt 0.045838 1.045385 -vt 0.247096 0.550722 -vt 0.228092 0.569747 -vt 0.034507 0.507384 -vt 0.047647 0.500786 -vt 0.037764 0.750388 -vt 0.048595 0.765903 -vt 0.054437 0.813672 -vt 0.055673 0.894155 -vt 0.047301 0.902558 -vt 0.033164 -0.108476 -vt 0.045586 -0.123338 -vt 0.065427 0.570140 -vt 0.051961 0.594113 -vt 0.060738 0.654743 -vt 0.036767 0.674381 -vt 0.048254 0.686949 -vt 0.046047 0.707366 -vt 0.050536 0.729678 -vt 0.066275 0.779613 -vt 0.059722 0.871426 -vt -0.024840 -0.099475 -vt -0.035845 -0.110596 -vt 0.056360 0.991629 -vt 0.058029 1.078849 -vt 0.056858 0.619549 -vt 1.252328 -0.176293 -vt 1.394858 -0.260851 -vt 1.390181 -0.208783 -vt 1.405966 -0.243822 -vt -0.278166 1.241492 -vt 0.056207 0.945082 -vt 0.066401 0.952925 -vt 0.058029 0.193631 -vt 0.151403 0.545966 -vt 0.069435 0.586610 -vt 0.068025 0.608853 -vt 1.361737 -0.123734 -vt 1.359761 -0.139033 -vt 1.372968 -0.130333 -vt 0.064694 0.726611 -vt 0.059256 0.707523 -vt 0.060924 0.750351 -vt 0.074559 0.756377 -vt 0.069473 0.843734 -vt 0.077777 0.894521 -vt 0.314447 0.981213 -vt 0.319551 1.003783 -vt 0.078837 0.643136 -vt -0.047593 0.895083 -vt 0.081885 0.802219 -vt 0.076034 0.907037 -vt -0.025255 -0.135462 -vt 0.012451 -0.149335 -vt 0.084497 1.017502 -vt 0.725502 -0.050642 -vt 0.088525 0.598671 -vt 0.084288 0.729214 -vt 0.074957 0.866247 -vt 0.076034 0.320821 -vt 0.069821 0.294290 -vt 0.055673 0.325414 -vt -0.277553 -0.152070 -vt 0.092415 1.058502 -vt 0.090373 0.188320 -vt 0.089697 0.674002 -vt 0.061477 0.689907 -vt 0.067995 0.675526 -vt 0.094420 0.782978 -vt 0.093602 0.815605 -vt 0.092783 0.244306 -vt 0.066401 0.243258 -vt 0.081062 0.250764 -vt 0.092783 0.957624 -vt 0.085708 0.970559 -vt 1.348340 -0.443667 -vt 0.587608 -0.074401 -vt 0.623190 -0.073163 -vt 0.093710 0.575818 -vt 0.097306 0.584749 -vt 0.069435 0.271100 -vt 0.097306 0.269708 -vt 0.088525 0.285101 -vt -0.206959 0.180587 -vt -0.223887 0.191807 -vt 0.095764 0.277898 -vt 0.092268 0.932001 -vt -0.050120 1.473668 -vt -0.461104 0.065805 -vt -0.449925 0.030093 -vt -0.465569 0.050893 -vt 0.510459 0.718452 -vt 1.268795 -0.229655 -vt 1.288535 -0.236185 -vt 0.118805 1.111262 -vt 0.095108 1.106591 -vt 0.761518 -0.035433 -vt 0.092268 0.298408 -vt 0.131111 0.298222 -vt 0.264382 0.577878 -vt 0.246672 0.576832 -vt 0.218107 0.838663 -vt 0.015038 -0.122656 -vt -0.017849 -0.106362 -vt -0.005383 -0.095938 -vt 0.372203 0.647479 -vt 0.380717 0.674202 -vt 0.348793 0.657505 -vt -0.039585 1.352636 -vt -0.082280 1.351364 -vt -0.056548 1.342204 -vt -0.031085 1.340455 -vt 0.233633 0.682146 -vt 0.221790 0.693709 -vt 0.241813 0.864242 -vt 0.262088 0.889542 -vt 1.401572 -0.057727 -vt 1.388431 -0.078926 -vt 0.247867 0.800584 -vt -0.260377 0.775324 -vt -0.242789 0.778871 -vt -0.241479 0.756105 -vt 0.612855 0.093751 -vt 0.620460 0.127880 -vt 0.576590 0.103730 -vt 0.686310 0.145758 -vt 0.701495 0.171895 -vt 0.670108 0.155267 -vt 0.627619 0.110308 -vt 0.640383 0.138358 -vt 0.013678 -0.020072 -vt -0.007838 0.018067 -vt -0.013512 -0.041641 -vt -0.114000 0.531186 -vt -0.130702 0.537526 -vt -0.142195 0.510483 -vt -0.122844 0.831737 -vt -0.091927 0.813363 -vt -0.083306 0.713421 -vt -0.072901 0.690813 -vt 0.371521 0.783922 -vt 0.381939 0.811836 -vt 0.346432 0.803174 -vt 0.468881 0.599961 -vt 0.259549 0.623946 -vt 0.290278 0.621378 -vt 0.286831 0.645160 -vt -0.056822 0.972924 -vt -0.085343 0.954497 -vt 0.362426 0.566659 -vt 0.374489 0.603067 -vt 0.491615 -0.062155 -vt 0.404678 0.733448 -vt 0.418791 0.730904 -vt 0.406561 0.713830 -vt 0.329900 0.640534 -vt 0.321004 0.650585 -vt 0.341044 0.742034 -vt 0.321449 0.730069 -vt 0.342872 0.697401 -vt 0.247830 0.767832 -vt 0.228967 0.779808 -vt 0.257839 0.914862 -vt 0.283339 0.875585 -vt 0.264552 0.875678 -vt -0.172097 0.512854 -vt 1.322130 -0.413253 -vt 1.338442 -0.410680 -vt 0.228092 0.249115 -vt 0.068173 1.393321 -vt 0.063981 1.420141 -vt 0.051082 1.382581 -vt -0.327832 1.153591 -vt -0.323533 1.189273 -vt 0.356289 0.599589 -vt 0.339577 0.610957 -vt 0.332761 0.573219 -vt 0.590720 -0.008763 -vt 1.258400 -0.201129 -vt 0.232621 0.741147 -vt -0.313704 1.054858 -vt -0.295812 1.070600 -vt -0.308095 1.078971 -vt -0.297987 1.112421 -vt -0.309005 1.162245 -vt 1.143978 0.287842 -vt 1.152631 0.265747 -vt 1.179660 0.272643 -vt -0.332776 -0.353443 -vt -0.185346 0.516226 -vt 0.074952 -0.215250 -vt 0.088900 -0.230432 -vt 0.086727 -0.208546 -vt -0.310785 1.014847 -vt -0.086849 1.386014 -vt -0.067321 1.384040 -vt -0.083151 1.398044 -vt 0.241278 0.829421 -vt -0.293971 1.087770 -vt -0.312558 1.215593 -vt 0.431750 0.695923 -vt 0.268876 0.761378 -vt 0.261630 0.737611 -vt 1.037340 0.266651 -vt 1.045245 0.294306 -vt 1.031636 0.283724 -vt 1.060986 0.288704 -vt 1.102808 0.287896 -vt 1.123049 0.269201 -vt 0.865228 0.154766 -vt 0.898052 0.167557 -vt 0.887295 0.189316 -vt 0.710858 0.125974 -vt 0.713591 0.147822 -vt 0.730160 0.123534 -vt 0.749489 0.157455 -vt -0.050000 1.371975 -vt -0.091604 1.370698 -vt 0.314447 0.215743 -vt 0.293700 0.216842 -vt 0.300444 0.233170 -vt -0.297558 0.266651 -vt -0.316840 0.283724 -vt -0.314713 0.262115 -vt 1.205980 0.254197 -vt 0.882520 0.098597 -vt 0.901178 0.116081 -vt 0.958221 0.152510 -vt 0.972579 0.124925 -vt 1.009566 0.129255 -vt 0.768629 0.126273 -vt 0.786601 0.136844 -vt 1.106580 0.263160 -vt 1.175817 0.246165 -vt -0.079163 -0.148951 -vt -0.076931 -0.127414 -vt -0.068696 -0.134667 -vt 0.857201 0.182137 -vt -0.114572 0.898328 -vt -0.122365 0.931066 -vt -0.087155 0.905880 -vt 1.062259 0.265815 -vt 1.078156 0.290688 -vt 1.088066 0.248837 -vt 1.220316 0.236425 -vt -0.300225 1.229929 -vt 1.241546 0.063085 -vt 1.229233 0.057417 -vt 0.358945 1.013543 -vt 0.363132 1.035005 -vt 0.345628 1.037529 -vt -0.279344 0.218655 -vt -0.290673 0.208778 -vt 1.034997 0.218655 -vt 1.157073 0.233045 -vt 0.516167 0.679074 -vt 0.969218 0.184861 -vt 1.003929 0.176618 -vt 0.993988 0.198596 -vt 0.341990 0.977970 -vt 0.380231 0.936829 -vt 0.369984 0.978832 -vt 1.119144 0.234638 -vt 1.193077 0.223225 -vt 0.510035 0.223573 -vt 0.512189 0.205997 -vt 0.528931 0.226895 -vt -0.310785 0.204948 -vt -0.322598 0.241200 -vt 1.059839 0.234432 -vt 1.171759 0.213123 -vt 1.226770 0.205663 -vt 1.245336 0.222988 -vt 0.031162 1.413020 -vt 0.015038 1.387056 -vt 0.503099 0.621088 -vt 0.519965 0.630074 -vt 0.519317 0.649996 -vt 0.321925 0.684435 -vt 0.302571 0.676046 -vt 0.299753 0.648594 -vt 0.760166 0.179534 -vt 0.338859 0.927129 -vt 0.331102 0.961496 -vt 0.319186 0.967999 -vt 0.040981 1.467046 -vt 0.061895 1.463565 -vt 0.069926 1.488749 -vt 0.703313 -0.044257 -vt 0.865601 0.212599 -vt -0.286615 1.020050 -vt -0.290673 1.029422 -vt 1.108084 0.232590 -vt 0.605415 -0.003000 -vt 0.615946 0.025260 -vt 1.187756 0.124664 -vt 1.193353 0.169944 -vt 1.196165 0.137812 -vt 0.184061 0.500028 -vt 0.212033 0.498490 -vt 0.202465 0.519018 -vt 0.899906 0.208637 -vt 0.079281 1.417118 -vt 0.057858 1.442340 -vt 0.066751 1.379943 -vt 1.235307 -0.047864 -vt 1.087477 0.232616 -vt 1.193353 0.190428 -vt -0.280161 1.258018 -vt -0.023592 -0.067796 -vt -0.050000 -0.080341 -vt -0.039585 -0.051826 -vt -0.173593 -0.030160 -vt 0.317489 0.561491 -vt 0.303441 0.594999 -vt 0.289019 0.570060 -vt 0.325448 -0.193243 -vt 0.332579 -0.166651 -vt 0.306775 -0.172184 -vt -0.279917 1.030416 -vt -0.279917 0.200260 -vt 1.062389 0.220386 -vt 1.135609 0.218565 -vt -0.262537 1.145222 -vt -0.272018 1.175123 -vt -0.269564 1.128757 -vt -0.283117 1.181372 -vt 1.209103 0.197196 -vt -0.280021 1.236383 -vt -0.076260 0.677752 -vt 1.380900 -0.169024 -vt 1.370329 -0.141087 -vt 1.367908 -0.164386 -vt 1.041261 0.203452 -vt 1.020803 0.200260 -vt -0.273802 1.202967 -vt -0.001989 1.341721 -vt -0.004635 1.353110 -vt 0.269563 0.850610 -vt 0.253741 0.861206 -vt 0.937810 0.177548 -vt 0.758938 0.250978 -vt 0.766433 0.265521 -vt 0.720456 0.249394 -vt 0.291994 0.950502 -vt 1.383708 -0.150543 -vt 1.392715 -0.168589 -vt -0.259546 1.072002 -vt -0.230946 1.073833 -vt -0.262130 1.097090 -vt -0.230629 1.107832 -vt -0.263263 1.117697 -vt -0.240454 1.137019 -vt -0.261757 1.267773 -vt -0.117270 1.002299 -vt -0.354895 1.228488 -vt -0.386133 1.210172 -vt -0.358642 1.239079 -vt -0.075843 0.077674 -vt -0.082141 0.046976 -vt 0.052759 1.396830 -vt 0.048126 1.419785 -vt 0.927215 0.200622 -vt 0.802222 0.228180 -vt 0.785071 0.205569 -vt 0.822205 0.205386 -vt 0.317209 1.048404 -vt 0.080152 1.402328 -vt -0.258468 1.197511 -vt -0.255271 1.233092 -vt -0.255807 1.250783 -vt -0.275419 1.218716 -vt -0.219955 0.509594 -vt 0.802743 0.050973 -vt 0.225290 0.518979 -vt 0.271195 0.527961 -vt 1.502511 -0.134077 -vt 1.493024 -0.130405 -vt 1.461763 -0.143983 -vt -0.004869 1.407141 -vt -0.017849 1.384522 -vt 1.006868 0.066415 -vt 1.007323 0.037222 -vt 0.995681 0.066566 -vt -0.236717 1.174615 -vt 1.201766 0.177431 -vt 1.223479 0.185266 -vt -0.252949 1.282666 -vt -0.189566 -0.047864 -vt 0.051082 -0.130333 -vt 0.033602 -0.108072 -vt 0.333094 0.768551 -vt 0.355664 0.766633 -vt 0.338132 0.792349 -vt 0.258784 0.587205 -vt 0.272841 0.597219 -vt -0.260713 1.211380 -vt 0.034728 0.552884 -vt 0.069982 0.555690 -vt 0.022248 -0.191674 -vt 0.023776 -0.175261 -vt 0.040099 -0.200710 -vt -0.150083 1.352966 -vt -0.137462 1.343373 -vt 0.361780 0.695705 -vt 0.723240 -0.033513 -vt 0.299308 0.727185 -vt 0.309931 0.745608 -vt 0.290542 0.738896 -vt 0.016183 1.450350 -vt -0.022550 1.438841 -vt 1.282638 0.115471 -vt -0.226130 1.139059 -vt -0.235476 1.202305 -vt -0.249287 1.228803 -vt 1.219190 0.170593 -vt 1.261866 0.167655 -vt 1.241169 0.192663 -vt 1.273053 0.187556 -vt -0.258293 1.298980 -vt -0.242381 1.290842 -vt -0.241872 1.308897 -vt 0.776370 -0.193471 -vt -0.003687 -0.095884 -vt -0.001989 -0.081374 -vt -0.015547 -0.081785 -vt 0.279892 0.696387 -vt 0.296907 0.704424 -vt 0.302414 0.771562 -vt 0.039691 1.363550 -vt 0.033602 1.372226 -vt 0.019058 1.363098 -vt -0.204712 1.088737 -vt 1.231879 -0.111279 -vt 1.249307 -0.087928 -vt 1.222424 -0.101285 -vt 0.295442 0.814845 -vt 0.007658 0.981063 -vt -0.003357 0.968739 -vt -0.011312 1.005812 -vt 0.813673 0.261968 -vt 0.801670 0.277417 -vt 0.782735 0.258714 -vt 0.052605 1.371351 -vt -0.183998 -0.071609 -vt 1.483891 -0.118804 -vt 0.279641 0.591101 -vt 0.033164 1.353245 -vt 0.019058 -0.090904 -vt -0.210144 1.101375 -vt 1.098218 0.216176 -vt 1.102998 0.186540 -vt 1.129446 0.199836 -vt -0.226348 1.208370 -vt -0.225777 1.246764 -vt -0.241992 1.271480 -vt 0.177861 0.230484 -vt 0.160711 0.243257 -vt 0.147766 0.216163 -vt -0.187858 0.508734 -vt -0.153040 0.522473 -vt -0.006396 1.471376 -vt 0.601403 0.214397 -vt 0.611507 0.232358 -vt 0.585386 0.220930 -vt 0.336290 0.823286 -vt 0.322268 0.841761 -vt 0.322317 0.811283 -vt 0.508666 0.179791 -vt 0.527558 0.181938 -vt 1.079123 0.185921 -vt 1.064220 0.206776 -vt 1.040282 0.191028 -vt 1.091761 0.195758 -vt -0.203597 1.112611 -vt -0.195970 1.143440 -vt -0.209842 1.188465 -vt -0.222637 1.227020 -vt 0.704820 0.123022 -vt 0.270013 0.561124 -vt 0.280130 0.678738 -vt 0.278975 0.554099 -vt -0.123740 1.324073 -vt -0.116620 1.303381 -vt -0.207080 1.061889 -vt 1.237150 0.155163 -vt 1.259300 0.147081 -vt -0.049852 1.470258 -vt 0.723313 0.112973 -vt 0.654869 0.056062 -vt 0.697032 0.053589 -vt 1.343632 -0.108476 -vt 1.353485 -0.090904 -vt 1.343337 -0.089495 -vt 0.593454 0.171770 -vt 0.624846 0.177141 -vt 0.589975 0.191810 -vt -0.086867 -0.046319 -vt 0.590645 0.029986 -vt 0.299784 0.538544 -vt 0.332724 0.853319 -vt 0.052759 -0.190921 -vt 0.080593 -0.195733 -vt 0.016383 -0.089495 -vt 0.015823 -0.103690 -vt 1.261424 0.129020 -vt -0.287561 -0.448452 -vt -0.279723 -0.443667 -vt 0.416058 0.015938 -vt 0.423418 0.053941 -vt 0.402878 0.034726 -vt 0.387195 0.703493 -vt 0.397963 0.743650 -vt 0.376078 0.733267 -vt -0.259120 0.566559 -vt 0.330375 0.908635 -vt 1.078346 0.164411 -vt 1.101921 0.165310 -vt 1.133827 0.170213 -vt -0.189964 1.161462 -vt 1.435292 -0.117491 -vt -0.330374 1.049422 -vt -0.037514 1.444905 -vt 1.391405 -0.187766 -vt 0.399624 0.707280 -vt 0.879928 0.292475 -vt 0.873764 0.272063 -vt 0.901370 0.270580 -vt 0.014669 1.488641 -vt 0.310748 0.931945 -vt 0.319186 0.229308 -vt -0.178302 1.074387 -vt 1.052275 0.175992 -vt -0.183646 1.087960 -vt 1.178852 0.154015 -vt 1.193608 0.128779 -vt 1.198756 0.157026 -vt 1.229632 0.127091 -vt 1.217406 0.146350 -vt 0.793560 0.252940 -vt 0.826850 0.240324 -vt 0.835810 0.132303 -vt 0.607308 0.164716 -vt 0.342883 1.003601 -vt 0.355604 0.948977 -vt 1.109208 0.148545 -vt 1.139465 0.137515 -vt 1.151848 0.152522 -vt 0.261243 0.651203 -vt -0.086867 1.309864 -vt -0.054912 1.317481 -vt 0.402315 0.770867 -vt 0.800175 0.116499 -vt 0.377986 0.767772 -vt 0.356748 0.747586 -vt 0.349602 0.876092 -vt 0.563605 0.202458 -vt 0.551878 0.217292 -vt 0.533079 0.205938 -vt 0.316496 0.590302 -vt 0.322845 0.611017 -vt 1.064773 0.155364 -vt 1.078764 0.142342 -vt 0.354603 0.836463 -vt 0.375196 0.831823 -vt 1.016157 0.062235 -vt 0.808273 0.158954 -vt 1.227490 0.058966 -vt -0.143922 1.013106 -vt -0.135116 0.991858 -vt 0.857032 0.233411 -vt 0.822210 0.231862 -vt 0.362094 0.905037 -vt 0.389334 0.909519 -vt 0.328452 1.065511 -vt 0.331534 0.642482 -vt 0.349095 0.633273 -vt 0.337108 0.613874 -vt 1.317937 -0.297490 -vt 1.300650 -0.279958 -vt 1.065098 0.148984 -vt 0.000312 0.544837 -vt -0.091604 -0.064027 -vt -0.057246 -0.067818 -vt -0.114472 1.387447 -vt -0.108256 1.361319 -vt 0.590671 -0.231398 -vt 0.586562 -0.221556 -vt 0.592610 -0.214501 -vt 0.761254 0.203624 -vt 0.734037 0.201254 -vt -0.302590 1.230670 -vt -0.282139 1.242283 -vt -0.160303 1.094683 -vt -0.174810 1.088377 -vt 1.503948 -0.127354 -vt 1.495420 -0.117650 -vt -0.120648 1.284098 -vt -0.124692 1.289831 -vt -0.146481 1.268431 -vt 0.365227 -0.062609 -vt 0.345163 -0.054689 -vt 0.319434 -0.082134 -vt 0.637865 0.208481 -vt 0.088103 1.438544 -vt 0.309535 -0.050646 -vt 0.300245 -0.065107 -vt 0.312547 -0.069075 -vt 0.808867 0.178544 -vt 0.837591 0.162033 -vt -0.101475 0.536099 -vt -0.099990 0.501049 -vt -0.113500 0.506126 -vt 0.249756 0.713115 -vt -0.031085 -0.060058 -vt -0.023592 1.361340 -vt 1.187894 0.093300 -vt 0.630920 0.231680 -vt 0.662988 0.188964 -vt 0.647892 0.226603 -vt 0.686092 0.225942 -vt 0.665020 0.241701 -vt 0.340767 0.674633 -vt 0.316005 0.788414 -vt 1.451075 -0.477100 -vt 0.638918 0.086948 -vt -0.226705 -0.152338 -vt -0.196895 -0.142744 -vt -0.207329 -0.132224 -vt 0.640700 0.159244 -vt -0.419625 -0.000512 -vt 0.008415 -0.112350 -vt 0.664589 0.213343 -vt 1.380891 -0.218224 -vt 1.369574 -0.188742 -vt -0.216775 0.016736 -vt -0.230410 0.015970 -vt -0.233093 -0.013762 -vt 1.527219 -0.219365 -vt 0.016383 1.352951 -vt 0.840996 0.290192 -vt -0.186889 0.557857 -vt -0.171521 0.542284 -vt 1.368983 -0.461199 -vt 0.532323 -0.008763 -vt 0.538094 0.029986 -vt 0.756846 0.011254 -vt 0.742552 -0.022071 -vt 0.749709 -0.028755 -vt 0.400518 0.794684 -vt -0.029822 -0.085203 -vt 1.461429 -0.108844 -vt 1.460645 -0.087853 -vt 0.449764 0.134031 -vt 0.468881 0.151290 -vt 0.439850 0.160615 -vt -0.332203 1.221013 -vt -0.343524 1.236671 -vt -0.064202 0.134963 -vt 0.836885 0.104410 -vt -0.364721 -0.016774 -vt -0.352043 -0.045539 -vt -0.345184 -0.031058 -vt 0.612685 0.068678 -vt 0.061475 -0.243638 -vt 0.069829 -0.236786 -vt 0.078970 -0.247714 -vt 1.294731 -0.357882 -vt 1.291501 -0.367410 -vt 1.384207 -0.195733 -vt 0.486804 0.589092 -vt 0.939363 0.218379 -vt 0.968357 0.204937 -vt 0.344516 0.900512 -vt -0.266101 1.399498 -vt 0.541474 0.690893 -vt -0.196763 0.175284 -vt 0.022342 0.996309 -vt 0.045346 0.981281 -vt -0.379212 -0.305034 -vt -0.369331 -0.287268 -vt -0.355513 -0.302212 -vt -0.096540 1.384427 -vt 0.173919 0.525909 -vt 0.935104 0.136481 -vt 0.507466 -0.156657 -vt 0.493156 -0.127665 -vt 0.001382 0.516176 -vt 1.393182 -0.356488 -vt 0.233965 0.702434 -vt 0.774309 0.234725 -vt -0.194249 1.298278 -vt 1.446327 -0.242627 -vt 1.447531 -0.253113 -vt 0.111785 0.248249 -vt 0.563814 0.186695 -vt 0.557046 0.155154 -vt 0.732798 0.049632 -vt 0.741733 0.068463 -vt 1.481130 -0.241433 -vt 0.590117 0.078795 -vt -0.183153 1.275282 -vt 0.324187 0.181938 -vt 0.330856 0.158580 -vt 0.342545 0.155952 -vt 0.704002 0.077172 -vt 1.400982 -0.191028 -vt 1.428931 -0.208134 -vt 1.407505 -0.179936 -vt 0.412123 0.650314 -vt 0.486408 -0.074401 -vt 0.458206 -0.079399 -vt 0.423362 0.679722 -vt 0.697667 0.203576 -vt 0.854629 0.311304 -vt 0.851593 0.299684 -vt 0.875714 0.306862 -vt 0.758158 0.220695 -vt 0.417799 0.769779 -vt 0.325356 -0.088682 -vt 0.307598 -0.103859 -vt 0.244199 0.675394 -vt 1.265715 -0.004035 -vt -0.152042 1.309872 -vt 0.155397 -0.244938 -vt 0.193981 -0.237709 -vt 0.189323 -0.261467 -vt 0.379726 0.866646 -vt 1.300259 -0.000235 -vt 1.315038 -0.003395 -vt 1.331136 0.003687 -vt 1.456474 -0.080582 -vt 0.063862 0.510296 -vt 0.083612 0.522104 -vt 1.405369 -0.090732 -vt 0.358213 0.656557 -vt -0.157713 1.324651 -vt 1.325234 -0.017057 -vt 1.343353 -0.010975 -vt -0.082280 -0.037240 -vt 0.045790 0.506673 -vt 1.512444 -0.147248 -vt 1.486570 -0.177413 -vt -0.160378 1.118479 -vt -0.099020 -0.053117 -vt -0.134189 1.307571 -vt -0.159225 1.275329 -vt -0.137600 1.321519 -vt -0.145380 1.334847 -vt -0.088388 1.333346 -vt 1.347425 -0.123338 -vt -0.356620 0.928888 -vt -0.369145 0.904397 -vt -0.373882 0.933579 -vt 0.533001 0.155952 -vt 0.925558 0.052417 -vt 0.949316 0.011227 -vt -0.078068 0.514539 -vt 0.030355 -0.176083 -vt 1.025391 0.157129 -vt -0.057031 -0.251579 -vt -0.036875 -0.221556 -vt -0.024977 -0.235111 -vt 1.281217 -0.345014 -vt 1.290051 -0.365716 -vt 1.280218 -0.027744 -vt 1.258817 -0.024887 -vt 1.333760 -0.024903 -vt 0.784487 -0.101158 -vt 1.407630 -0.106726 -vt -0.128114 1.331012 -vt 0.842974 0.080752 -vt 1.457433 -0.182266 -vt 1.479135 -0.217273 -vt 0.313438 0.621121 -vt 0.326614 0.776046 -vt 0.331102 0.224129 -vt 0.740316 0.013554 -vt 0.111785 0.953517 -vt -0.115323 1.330236 -vt -0.126531 -0.033485 -vt -0.137462 -0.024903 -vt -0.128114 -0.013515 -vt 1.351088 -0.041172 -vt 1.373723 -0.026096 -vt 1.503471 -0.207517 -vt 0.735995 0.272700 -vt 0.717571 0.273436 -vt 0.028540 1.496184 -vt 1.479028 -0.162641 -vt -0.033503 0.972542 -vt -0.300225 0.937532 -vt -0.288049 0.965295 -vt -0.273588 0.952524 -vt 0.452739 -0.052711 -vt 0.836716 -0.111348 -vt -0.115323 -0.016788 -vt -0.126531 1.346823 -vt -0.121287 1.360702 -vt 0.866478 0.244023 -vt 0.843705 0.265307 -vt 0.344708 1.058323 -vt 0.313438 0.232358 -vt 0.290278 0.258201 -vt 0.279641 0.232695 -vt 0.640971 0.243720 -vt 0.638981 0.266337 -vt -0.108816 1.340765 -vt 0.120407 0.524678 -vt 0.577466 -0.235111 -vt -0.068960 1.414982 -vt -0.107128 -0.044609 -vt -0.108816 -0.023039 -vt -0.107128 1.353163 -vt 1.207496 0.043841 -vt 1.418436 -0.050517 -vt 0.099035 0.509078 -vt 1.290590 -0.138690 -vt 1.320582 -0.143875 -vt 1.295141 -0.110173 -vt 0.611764 0.258201 -vt 1.397256 -0.466313 -vt 1.434904 -0.460196 -vt 1.441906 -0.473406 -vt -0.158848 -0.014746 -vt 1.366642 -0.055115 -vt 1.377834 -0.037422 -vt 1.353936 -0.108884 -vt 0.694811 0.267571 -vt 0.272841 0.242145 -vt 0.530632 0.714434 -vt 0.548353 -0.148728 -vt 1.280536 -0.053417 -vt 1.274484 -0.036483 -vt -0.088745 1.342113 -vt -0.088745 -0.029064 -vt -0.099020 1.361653 -vt -0.107256 1.376255 -vt -0.301290 1.337620 -vt -0.300961 1.357566 -vt -0.287561 1.360052 -vt -0.336662 -0.195931 -vt 1.440736 -0.161236 -vt 0.502587 0.586203 -vt 0.611475 0.135992 -vt 0.579479 0.125479 -vt 1.397632 -0.042516 -vt 0.293771 -0.062155 -vt -0.376892 -0.332963 -vt 1.263534 -0.192648 -vt 1.256390 -0.218084 -vt 1.248858 -0.195931 -vt -0.138575 1.099187 -vt 0.528655 0.732926 -vt 1.438695 -0.370003 -vt 1.338513 -0.430513 -vt 1.318870 -0.415287 -vt 1.320924 -0.405676 -vt 1.171850 0.021747 -vt -0.057400 1.446487 -vt -0.057246 1.362633 -vt 0.672532 0.297797 -vt 0.692820 0.305748 -vt 0.684095 0.315865 -vt 0.674821 0.252282 -vt -0.210434 0.534076 -vt -0.235861 0.544429 -vt -0.221856 0.575572 -vt 0.155627 0.509263 -vt 0.786389 0.110377 -vt 0.769785 0.128671 -vt 0.794822 0.145326 -vt 1.521646 -0.153700 -vt 1.374283 -0.282716 -vt 1.350924 -0.219074 -vt 1.347361 -0.250223 -vt 0.839383 0.122952 -vt 0.822553 0.088391 -vt 0.805989 0.099210 -vt 0.836583 0.101945 -vt -0.148456 -0.087050 -vt -0.131276 -0.076428 -vt 0.957086 0.046424 -vt 0.988680 0.042785 -vt 1.310747 -0.262347 -vt 1.327384 -0.235501 -vt 1.026158 -0.031644 -vt 1.000087 0.004999 -vt -0.089036 0.109146 -vt -0.093031 0.095889 -vt -0.276827 0.164415 -vt -0.441417 0.066415 -vt -0.466801 0.044216 -vt -0.443721 0.037222 -vt -0.078248 -0.129078 -vt -0.103485 -0.124400 -vt 0.412533 -0.043245 -vt 0.400644 -0.062403 -vt 0.421938 -0.064680 -vt 0.508840 0.255373 -vt 0.513295 0.231264 -vt 0.496128 0.229058 -vt 0.629956 0.138146 -vt 0.659777 0.121253 -vt 1.347610 -0.286728 -vt 0.948437 0.109688 -vt 1.274085 0.026115 -vt 1.288094 0.030093 -vt 1.284853 0.004664 -vt 1.119835 0.096566 -vt -0.132834 -0.140402 -vt -0.113291 -0.143716 -vt -0.127296 -0.168835 -vt 0.285261 -0.138563 -vt 0.257510 -0.118539 -vt 0.281123 -0.101523 -vt 1.179726 0.101891 -vt 1.310150 -0.213809 -vt 0.544988 -0.190011 -vt 0.560861 -0.172184 -vt 0.555463 -0.156382 -vt 0.698504 -0.207682 -vt -0.081132 -0.186858 -vt -0.106382 -0.170483 -vt 0.670008 -0.211157 -vt 0.679446 -0.190442 -vt 1.264413 0.110038 -vt -0.086725 0.126862 -vt 1.284309 0.096465 -vt 0.390172 0.831835 -vt 0.363258 0.860712 -vt 0.389156 0.866774 -vt -0.102511 0.851069 -vt -0.085006 0.847652 -vt -0.090583 0.838509 -vt 1.134788 0.205099 -vt 1.115283 0.211614 -vt 1.138118 0.229798 -vt 0.520441 0.125001 -vt 0.529388 0.122900 -vt 0.529291 0.102213 -vt 0.517779 0.105876 -vt 1.428112 -0.237406 -vt 1.416735 -0.216620 -vt 1.412946 -0.230432 -vt 0.339051 0.764623 -vt 0.370055 0.785984 -vt 0.347718 0.740918 -vt 1.313238 -0.165404 -vt 0.021480 0.498387 -vt 0.045835 0.498921 -vt 0.015776 0.519899 -vt 1.052662 -0.024997 -vt 1.071713 -0.034806 -vt 1.267201 0.043785 -vt 0.703807 -0.158945 -vt 0.699883 -0.184407 -vt 0.681199 -0.154033 -vt 0.389026 0.660375 -vt 0.368097 0.636557 -vt 1.371160 -0.323409 -vt 0.698025 -0.182139 -vt 0.730986 -0.170594 -vt 0.709192 -0.164586 -vt -0.008853 -0.155066 -vt -0.022036 -0.142042 -vt -0.001231 -0.140545 -vt 0.623659 -0.185582 -vt 0.626944 -0.153636 -vt 0.606007 -0.180527 -vt 0.061372 -0.139033 -vt -0.191560 -0.059004 -vt -0.213225 -0.035801 -vt -0.184535 -0.035428 -vt 0.231086 -0.208474 -vt 0.257568 -0.193880 -vt 0.240552 -0.189885 -vt 1.332161 -0.212922 -vt 1.334633 -0.189589 -vt 0.742396 -0.179501 -vt 0.769324 -0.169967 -vt 0.762805 -0.146535 -vt 0.650782 -0.220056 -vt -0.107179 0.128824 -vt 1.393812 -0.208546 -vt -0.398291 1.090198 -vt 0.809189 0.124191 -vt 1.266943 -0.005516 -vt 0.885669 -0.028711 -vt 0.862947 -0.034167 -vt 0.843395 -0.132889 -vt 0.869991 -0.111893 -vt 0.511215 0.051509 -vt 0.510105 0.085087 -vt 0.495064 0.062901 -vt -0.109571 0.132915 -vt 1.270674 -0.137824 -vt 1.253676 -0.102184 -vt 0.020594 -0.064767 -vt 0.814125 -0.158068 -vt 0.846816 -0.164235 -vt 0.819504 -0.137052 -vt -0.202404 0.153134 -vt 0.386285 0.740600 -vt 0.390521 0.718805 -vt 0.560123 -0.100800 -vt 0.554668 -0.113771 -vt 0.574470 -0.108809 -vt 0.878542 -0.117561 -vt 0.715189 -0.016774 -vt 0.726296 -0.006826 -vt 0.737635 -0.043342 -vt 1.100108 0.170261 -vt 0.104546 0.963628 -vt 0.077797 0.947259 -vt 0.069553 0.962925 -vt -0.267685 0.510451 -vt -0.272129 0.493452 -vt -0.281005 0.493586 -vt -0.096606 -0.230717 -vt -0.069396 -0.242267 -vt -0.089774 -0.249003 -vt 0.029839 -0.175931 -vt 1.249405 0.064671 -vt 0.601953 0.127594 -vt 0.588655 0.142861 -vt -0.121137 0.698419 -vt 1.028269 -0.029518 -vt 1.035844 -0.014409 -vt 1.049357 -0.040868 -vt 0.668329 -0.173759 -vt 0.685604 -0.149553 -vt 0.704216 -0.145325 -vt -0.431942 0.037951 -vt 0.125669 1.060863 -vt 0.108068 1.097250 -vt -0.291387 -0.021320 -vt -0.282131 0.001550 -vt 0.841656 -0.021439 -vt 0.829760 -0.039113 -vt -0.076572 1.394822 -vt 0.922432 -0.020345 -vt 1.216985 0.048204 -vt 0.567212 0.067762 -vt 0.342804 -0.139818 -vt 0.352361 -0.108809 -vt 0.329200 -0.113771 -vt -0.059025 0.935125 -vt -0.021487 0.945526 -vt -0.240372 0.079798 -vt -0.215035 0.069167 -vt 0.109056 0.946078 -vt 0.278659 -0.174577 -vt 0.274875 -0.203634 -vt 0.255697 -0.189767 -vt 0.723835 -0.151984 -vt 1.115979 -0.015205 -vt 0.966882 -0.012802 -vt -0.439233 0.003559 -vt -0.467501 0.018559 -vt -0.458330 -0.014409 -vt 1.029453 0.018559 -vt 0.650762 -0.145329 -vt 1.009247 0.126707 -vt 0.997761 0.113775 -vt 0.073648 1.455343 -vt 0.089968 1.457144 -vt -0.421334 0.126707 -vt -0.439600 0.101316 -vt 0.776328 -0.144504 -vt 0.804754 -0.133293 -vt 0.798837 -0.155837 -vt 1.045822 -0.048155 -vt 1.010307 -0.089505 -vt 1.049716 -0.072678 -vt 0.330844 -0.137901 -vt 0.102855 -0.224457 -vt 0.132274 -0.219171 -vt 0.101007 -0.213400 -vt 0.329668 0.731423 -vt 0.334682 0.708118 -vt 1.404321 -0.458735 -vt 1.052124 0.108244 -vt 0.721291 -0.137897 -vt 0.690774 -0.112417 -vt 0.597268 -0.153633 -vt 0.639835 0.087760 -vt 0.625110 0.072308 -vt 0.319844 0.705703 -vt 1.360785 -0.155085 -vt 0.537264 -0.105750 -vt 0.527258 -0.103859 -vt 0.620446 0.056079 -vt 0.582433 -0.170343 -vt 0.309195 -0.156382 -vt 1.225830 0.126242 -vt 1.245944 0.128218 -vt 0.034684 -0.216440 -vt 0.049683 -0.219365 -vt 1.407228 -0.219975 -vt 0.307761 -0.132022 -vt 0.313441 -0.105750 -vt 0.669311 -0.126384 -vt 0.645604 -0.130824 -vt 0.400764 0.772418 -vt 0.416053 0.783586 -vt 0.287735 0.202561 -vt 0.302408 0.205997 -vt 0.289885 0.223573 -vt -0.438571 -0.029518 -vt 1.281244 -0.028283 -vt 0.663788 -0.092355 -vt 0.789333 -0.130440 -vt 0.271864 0.849969 -vt 0.573076 -0.139818 -vt 0.341121 -0.170343 -vt 1.005692 -0.029978 -vt 0.929416 -0.121194 -vt 0.607121 -0.124101 -vt 0.606594 -0.103267 -vt 0.591288 -0.108234 -vt -0.049914 -0.082898 -vt 1.367418 -0.344412 -vt 0.214953 -0.263952 -vt 0.192514 -0.273925 -vt 0.795861 -0.179743 -vt 0.780448 -0.146122 -vt 0.192514 0.900017 -vt 0.214953 0.895094 -vt 0.199473 0.873742 -vt 1.278636 -0.264491 -vt 1.341140 -0.033205 -vt 1.316815 -0.036630 -vt 1.319705 -0.019870 -vt 0.743531 -0.014037 -vt -0.108833 0.233082 -vt 0.148560 -0.205341 -vt 0.385356 0.914971 -vt 0.371330 0.892842 -vt 0.345811 0.915384 -vt 0.515422 0.138024 -vt 0.525699 0.145840 -vt 0.660044 -0.142946 -vt 0.643500 -0.144606 -vt 0.637065 -0.133431 -vt 0.150025 1.021984 -vt 0.167254 0.999198 -vt 0.115382 1.009941 -vt 0.942776 -0.107360 -vt -0.394718 1.055513 -vt -0.374857 1.043761 -vt 0.252637 0.528246 -vt 0.286693 0.560432 -vt 0.257568 0.512739 -vt 0.054023 0.944592 -vt 0.154161 -0.217204 -vt 0.088797 0.238765 -vt 0.058333 0.263551 -vt 0.068231 0.235230 -vt 0.069617 0.939366 -vt 1.395108 -0.382312 -vt 0.636526 0.071526 -vt -0.198014 0.067762 -vt 0.801331 -0.109242 -vt 0.773972 -0.132078 -vt 0.510182 0.099540 -vt 0.510934 0.132267 -vt 0.499859 0.105775 -vt -0.316228 -0.065881 -vt -0.292862 -0.068572 -vt -0.309904 -0.042595 -vt 1.360269 -0.368848 -vt 0.766204 0.053672 -vt 1.357622 -0.189603 -vt 0.687595 -0.083879 -vt 0.185703 -0.200973 -vt 0.362333 0.734167 -vt 0.377015 0.752009 -vt 0.054322 -0.221704 -vt 0.026129 -0.225677 -vt 0.028976 0.956986 -vt 0.047518 0.965780 -vt -0.091372 0.865583 -vt -0.068844 0.860723 -vt 1.271383 -0.107092 -vt 1.254676 -0.014746 -vt 0.202465 -0.138929 -vt -0.088145 0.244023 -vt -0.337910 -0.332479 -vt -0.326258 -0.328948 -vt 0.619224 -0.003223 -vt 0.635656 -0.013762 -vt 0.611436 -0.038310 -vt 0.492505 -0.101267 -vt 0.540344 0.127315 -vt 0.009753 -0.091687 -vt 0.604261 -0.196546 -vt 0.587357 -0.193243 -vt -0.279263 0.127315 -vt -0.237180 0.070149 -vt -0.221805 0.134871 -vt 0.579004 0.134871 -vt 0.572392 0.109975 -vt 0.626248 -0.103231 -vt 0.641018 -0.094942 -vt 0.195759 -0.098190 -vt 0.177250 -0.072306 -vt -0.131062 0.495030 -vt -0.119248 0.495117 -vt 0.325208 0.966068 -vt 0.345702 0.943147 -vt 0.309815 0.959441 -vt 0.350513 0.714709 -vt 0.373897 0.707638 -vt 0.356249 0.677874 -vt 0.375480 0.677943 -vt 0.306638 -0.148728 -vt 1.286395 -0.283532 -vt 1.276278 -0.268784 -vt 0.374067 0.810735 -vt 0.383289 0.805474 -vt 1.159458 0.199468 -vt 0.943116 -0.025628 -vt 0.307598 0.536871 -vt -0.360724 -0.415920 -vt 0.009389 1.027553 -vt -0.029630 1.023733 -vt -0.006927 1.048329 -vt 0.268270 -0.167725 -vt 0.249738 -0.178720 -vt 0.299001 -0.083253 -vt 0.394792 0.695217 -vt 0.411569 0.678924 -vt 0.205629 -0.197548 -vt 0.079475 0.280790 -vt 0.043161 0.280711 -vt -0.124692 -0.027744 -vt 0.356599 0.689059 -vt 0.518228 -0.187329 -vt 0.289885 0.519648 -vt 0.941725 0.104380 -vt -0.101041 1.290149 -vt -0.081804 1.302441 -vt 0.868949 0.100148 -vt 0.857334 0.072408 -vt -0.021127 0.565917 -vt -0.057031 0.566184 -vt -0.024977 0.587080 -vt 0.190952 -0.217119 -vt 0.495630 -0.167725 -vt -0.106965 0.833297 -vt 0.503125 -0.193880 -vt 0.064145 -0.178727 -vt 1.246149 0.097718 -vt 1.251970 0.107477 -vt 0.146500 0.887295 -vt 0.120293 0.890582 -vt 0.131154 0.918094 -vt 0.569103 -0.194417 -vt -0.314180 -0.197541 -vt 0.297570 -0.194417 -vt 0.677135 -0.076586 -vt 0.651223 -0.088764 -vt 0.076058 1.473320 -vt 0.086282 1.485691 -vt 0.912140 0.093837 -vt -0.056789 -0.132045 -vt 0.203307 0.141381 -vt 1.221794 0.088181 -vt -0.249891 0.043981 -vt 0.421411 0.560354 -vt 1.267356 0.079410 -vt 0.899732 0.050067 -vt 0.076820 1.496076 -vt 0.061475 1.521222 -vt 0.078970 1.506171 -vt 0.550819 -0.205561 -vt -0.053166 0.491624 -vt -0.070706 0.492253 -vt -0.058608 0.502090 -vt 0.590678 0.063150 -vt 0.323892 -0.055017 -vt -0.057778 -0.217961 -vt 0.535586 0.063150 -vt 0.531701 0.078795 -vt 0.494554 0.086552 -vt -0.388444 0.007595 -vt -0.106776 0.871403 -vt 0.123262 0.511074 -vt 0.524664 0.076564 -vt 0.515859 0.083852 -vt 0.531883 0.088647 -vt -0.365067 -0.055340 -vt -0.303896 0.053919 -vt -0.311362 0.106892 -vt -0.328037 0.113003 -vt 1.309968 -0.086037 -vt 1.479658 -0.457996 -vt -0.437918 0.075329 -vt -0.081602 0.062524 -vt -0.053116 0.061195 -vt -0.352399 -0.372480 -vt -0.346271 -0.267435 -vt 1.117002 0.145885 -vt 1.135597 0.161260 -vt 0.527910 0.080083 -vt 0.528655 0.112973 -vt 0.550479 0.082710 -vt 1.389885 -0.467620 -vt 1.517919 -0.228253 -vt -0.030025 0.292352 -vt -0.054709 0.298330 -vt -0.036394 0.308177 -vt 0.562199 0.044364 -vt 0.551044 0.013554 -vt 0.544822 0.054807 -vt 0.516626 0.098833 -vt 0.530677 0.052460 -vt 0.634710 0.180020 -vt 0.653882 0.160829 -vt 0.530283 0.010874 -vt 0.503588 0.078405 -vt -0.361185 0.131468 -vt -0.373708 0.177404 -vt -0.355202 0.181164 -vt -0.337577 0.151482 -vt 0.549128 -0.015475 -vt -0.336800 -0.103585 -vt -0.348260 -0.081255 -vt 1.130120 0.051781 -vt 1.149435 0.016310 -vt 0.511724 0.045551 -vt 0.515995 0.002290 -vt 0.471575 0.095764 -vt 0.460222 0.112799 -vt 0.495315 0.743052 -vt 0.023312 0.695069 -vt 0.485499 0.038814 -vt 0.477721 0.071140 -vt 0.738086 0.097597 -vt 0.721676 0.112799 -vt 0.462313 0.097597 -vt 0.462313 0.747700 -vt 0.471575 0.743181 -vt -0.212655 0.142861 -vt 0.480235 0.032029 -vt 0.475786 0.054887 -vt 0.745270 0.071140 -vt 0.755903 0.054887 -vt -0.187587 -0.017325 -vt -0.215287 -0.014137 -vt -0.261346 0.136484 -vt 1.169451 0.148120 -vt 0.107483 0.315082 -vt 1.293886 -0.070527 -vt 0.532144 0.144307 -vt 0.561187 0.164415 -vt 0.484370 -0.015755 -vt 0.475329 0.011254 -vt 0.471369 0.053672 -vt 0.755390 0.032029 -vt 1.140137 -0.018787 -vt -0.284800 -0.044581 -vt -0.044919 -0.041893 -vt -0.050777 -0.015949 -vt 1.383684 -0.234515 -vt 1.372837 -0.181414 -vt -0.445384 0.138013 -vt -0.301163 -0.181414 -vt -0.317334 -0.138199 -vt -0.302624 -0.140097 -vt -0.271390 0.121144 -vt -0.289502 0.146020 -vt 1.267528 -0.078376 -vt -0.313392 0.199654 -vt -0.089261 0.005902 -vt -0.110739 0.035957 -vt 1.470024 -0.470439 -vt -0.263674 0.055140 -vt 1.460726 -0.373757 -vt 1.475643 -0.400860 -vt 1.464417 -0.397365 -vt -0.095931 -0.071389 -vt -0.100904 -0.018644 -vt -0.082208 -0.028867 -vt -0.098017 0.068400 -vt -0.304239 0.963179 -vt -0.333796 1.003759 -vt -0.265250 0.538904 -vt -0.250126 0.541497 -vt -0.252754 0.525472 -vt -0.243992 -0.121671 -vt -0.226016 -0.116086 -vt -0.059097 -0.041675 -vt -0.241872 0.157158 -vt -0.263206 0.171073 -vt -0.058369 -0.080052 -vt 1.446366 -0.349173 -vt 1.438052 -0.354424 -vt -0.321196 0.182574 -vt -0.142379 0.051781 -vt -0.131422 0.067686 -vt -0.144989 0.072815 -vt -0.138639 -0.001703 -vt -0.145014 0.028961 -vt -0.129811 0.020850 -vt -0.154580 -0.041592 -vt -0.145902 -0.030373 -vt -0.324100 -0.439990 -vt -0.230038 0.108946 -vt -0.217543 0.075732 -vt -0.144989 1.132339 -vt -0.147641 1.125004 -vt -0.131422 1.129299 -vt -0.353422 -0.110490 -vt 1.139490 0.081084 -vt -0.283328 -0.430419 -vt -0.455158 0.096465 -vt 1.135436 -0.001703 -vt 1.139210 0.028961 -vt -0.319092 0.158046 -vt -0.014196 -0.127354 -vt -0.106138 0.097022 -vt -0.142151 0.096801 -vt -0.361279 -0.176843 -vt -0.018453 -0.117650 -vt 0.153892 0.309383 -vt -0.160303 0.126147 -vt -0.257962 0.193015 -vt -0.257419 0.013569 -vt -0.030183 0.819088 -vt -0.040776 0.840289 -vt -0.026448 0.855586 -vt -0.174401 1.382140 -vt -0.159097 1.401339 -vt -0.132724 1.390250 -vt -0.291544 0.101780 -vt 1.338092 -0.168808 -vt 1.320377 0.018570 -vt -0.365204 -0.142098 -vt 1.322256 -0.079182 -vt 0.763198 0.077490 -vt 1.474782 -0.098064 -vt 1.484243 -0.107226 -vt -0.268090 -0.034511 -vt -0.270752 -0.018032 -vt -0.255518 -0.019870 -vt -0.404361 0.165987 -vt 0.895098 -0.019348 -vt 0.230875 -0.104689 -vt 0.202940 -0.075575 -vt 0.217704 -0.107242 -vt 1.274006 0.159167 -vt -0.114851 -0.050888 -vt 0.057559 -0.228253 -vt -0.189566 1.244921 -vt 0.458323 0.037137 -vt 1.115391 0.079382 -vt 1.122726 0.072815 -vt -0.147641 0.079382 -vt -0.061766 1.078917 -vt 1.037370 0.105036 -vt -0.151190 -0.041695 -vt -0.252474 -0.004924 -vt -0.014196 1.513561 -vt -0.302590 -0.117714 -vt -0.163926 -0.041637 -vt -0.154419 -0.018787 -vt -0.243095 -0.009201 -vt 1.404552 -0.293693 -vt 1.039823 0.069857 -vt -0.435759 0.004664 -vt 1.058368 0.120695 -vt 1.508648 -0.236786 -vt 1.048710 0.151614 -vt -0.156350 0.104449 -vt 1.103133 0.096801 -vt -0.027174 -0.055598 -vt 0.067912 1.430530 -vt 1.043514 0.196611 -vt 1.050539 0.008646 -vt 1.062996 0.083247 -vt -0.252595 0.076564 -vt 0.336067 0.120536 -vt 0.344708 0.151614 -vt 0.359752 0.120695 -vt 0.328452 0.155752 -vt -0.341221 -0.145876 -vt -0.153609 0.016310 -vt -0.367622 -0.400860 -vt 1.065709 -0.004476 -vt 1.084775 0.041158 -vt 0.365231 0.083247 -vt 0.319105 0.077517 -vt 0.618655 0.018907 -vt -0.375171 -0.349173 -vt 0.465831 0.108965 -vt 0.502587 0.103730 -vt 0.486804 0.125479 -vt 0.345220 0.041158 -vt 0.305182 0.146757 -vt -0.291383 -0.118009 -vt -0.333698 -0.440694 -vt 0.020586 0.929742 -vt -0.216975 0.114751 -vt 0.047301 0.318342 -vt 0.037111 0.291348 -vt 0.028697 0.513059 -vt -0.053427 -0.095115 -vt -0.037661 -0.098064 -vt -0.227082 0.130681 -vt 1.139693 -0.041637 -vt 0.769519 0.242983 -vt 0.748748 0.222541 -vt 0.377866 -0.048155 -vt 0.340447 -0.012634 -vt 0.365608 -0.004476 -vt 0.305125 0.101785 -vt 0.289813 0.159069 -vt 0.297421 0.168870 -vt 0.200538 -0.034326 -vt 0.195526 -0.011184 -vt 0.183549 -0.034542 -vt 0.144884 0.278567 -vt 0.810456 -0.037039 -vt 0.061764 -0.155085 -vt 0.315033 0.015105 -vt 1.050557 0.160425 -vt 0.152774 0.248414 -vt 0.336706 -0.080864 -vt 0.276701 0.131925 -vt 0.266568 0.158479 -vt 0.256690 0.184340 -vt -0.001791 -0.155429 -vt -0.306411 -0.005889 -vt 0.281770 0.110780 -vt 0.130670 0.244334 -vt 0.312358 -0.040079 -vt 0.287605 0.050151 -vt 0.278258 0.079452 -vt -0.032077 1.471042 -vt -0.375770 -0.373757 -vt 0.588586 0.169643 -vt 0.245055 0.170469 -vt 1.502249 -0.142042 -vt 1.511657 -0.155066 -vt 1.484788 -0.160105 -vt 0.543210 0.200999 -vt 0.547390 0.175460 -vt 0.513174 0.180052 -vt 1.262964 -0.039721 -vt 0.311708 -0.091715 -vt 0.246864 0.136180 -vt 1.127112 -0.030736 -vt -0.050641 0.053651 -vt 0.213632 0.181814 -vt 0.775839 0.098344 -vt -0.118092 0.973108 -vt 0.492063 -0.148003 -vt 0.473399 0.731047 -vt 0.244829 0.862988 -vt -0.278166 -0.111279 -vt -0.357598 0.922656 -vt -0.342472 0.890772 -vt 0.289813 1.094746 -vt -0.084911 1.414244 -vt 0.735778 0.012230 -vt -0.234435 1.335272 -vt 0.651678 0.229920 -vt -0.053044 0.234185 -vt -0.057270 0.209576 -vt -0.073090 0.219343 -vt 0.010789 0.754380 -vt 0.682763 0.248608 -vt 0.648777 0.277880 -vt 0.685456 0.286810 -vt 0.024952 0.906978 -vt -0.041465 0.227263 -vt -0.040911 0.199699 -vt 0.536883 0.236233 -vt 0.556945 0.235085 -vt -0.072838 0.245790 -vt -0.088461 0.244432 -vt -0.040911 0.620558 -vt -0.365274 -0.087446 -vt -0.073126 0.529885 -vt -0.074136 0.542760 -vt -0.031827 0.773434 -vt -0.042274 0.806909 -vt -0.013996 0.791027 -vt 1.196746 0.223613 -vt 1.206304 0.199573 -vt 0.000932 0.894196 -vt -0.017741 0.862122 -vt -0.071066 0.159540 -vt 0.008461 0.284623 -vt 0.024952 0.302240 -vt -0.025106 0.657567 -vt 0.504562 0.201812 -vt -0.203073 -0.058177 -vt 0.049014 1.481862 -vt 0.058036 1.509674 -vt 1.418700 -0.287268 -vt -0.260409 -0.092228 -vt -0.270924 -0.112523 -vt -0.233810 -0.098052 -vt -0.072327 0.273807 -vt 0.601958 0.189674 -vt 0.619468 0.195886 -vt 0.005652 -0.179588 -vt 0.006894 -0.158740 -vt 0.791647 0.305778 -vt 0.816092 0.315348 -vt 0.821448 0.277824 -vt 0.484253 0.032690 -vt 0.485455 0.046976 -vt 0.498394 0.044529 -vt 0.668191 0.209468 -vt 0.689713 0.192484 -vt -0.264695 0.926530 -vt 0.752400 0.279007 -vt 0.787469 0.263500 -vt -0.094807 -0.145961 -vt -0.026310 0.254182 -vt -0.001837 0.260421 -vt -0.000977 0.251661 -vt 0.367168 -0.031564 -vt 0.380686 -0.055825 -vt 0.647954 0.207101 -vt 1.232670 -0.122234 -vt 1.211248 -0.108857 -vt -0.328882 0.850291 -vt -0.017948 1.429669 -vt 1.372907 -0.176843 -vt -0.016794 0.514618 -vt -0.032350 0.633706 -vt -0.023731 0.620040 -vt -0.237501 0.124675 -vt -0.244392 0.101667 -vt -0.231325 0.098489 -vt -0.121753 1.435401 -vt -0.103485 1.453532 -vt -0.096847 0.547172 -vt -0.078221 0.564532 -vt -0.088461 0.570467 -vt 1.352847 -0.181666 -vt 1.354727 -0.161440 -vt -0.013636 0.825706 -vt -0.072838 0.583674 -vt 0.884583 0.295677 -vt 0.889138 0.279529 -vt 0.852509 0.297233 -vt -0.166829 -0.054125 -vt 0.506010 0.238577 -vt 0.517770 0.259120 -vt 0.537559 0.251333 -vt 0.846454 0.241488 -vt 0.037238 -0.124631 -vt 0.058699 -0.160552 -vt 1.350360 -0.142098 -vt -0.369750 -0.161440 -vt 0.720702 0.302226 -vt 0.712953 0.262944 -vt -0.059525 0.583977 -vt 0.551784 0.273807 -vt 0.554919 0.258393 -vt 0.534092 0.261197 -vt 0.859757 0.275479 -vt 0.863554 0.244257 -vt -0.341013 0.812738 -vt -0.257653 0.518454 -vt -0.270081 0.546496 -vt -0.091604 0.216184 -vt -0.176198 0.699327 -vt -0.194230 0.718630 -vt -0.191826 0.696050 -vt -0.007329 0.304083 -vt -0.186562 0.681112 -vt 0.751661 0.251357 -vt -0.059525 0.252873 -vt -0.078221 0.258393 -vt 0.647492 0.094512 -vt 0.330285 -0.019531 -vt 0.310613 -0.000252 -vt 0.326613 -0.034443 -vt 0.533146 0.286491 -vt 0.020586 0.253017 -vt -0.207793 0.121253 -vt -0.215304 0.127435 -vt -0.214764 0.108371 -vt -0.206212 0.094512 -vt 0.045835 -0.185989 -vt 0.013733 1.494074 -vt -0.004307 1.474973 -vt -0.007394 1.496891 -vt 0.560853 0.244432 -vt 0.545443 0.231051 -vt -0.105908 0.621501 -vt -0.081102 0.639215 -vt 0.744767 0.302226 -vt 0.765505 0.300234 -vt -0.431583 0.159167 -vt -0.006873 0.279529 -vt 0.000932 0.295677 -vt 0.669404 0.142524 -vt 0.061372 1.369374 -vt 1.315681 -0.087446 -vt 1.313236 -0.102123 -vt 1.341029 -0.110490 -vt -0.397607 1.072513 -vt -0.043241 0.062901 -vt 0.492591 0.074280 -vt -0.126035 1.409689 -vt -0.014827 0.801261 -vt 0.305874 0.179791 -vt -0.212968 0.150553 -vt -0.204803 0.142524 -vt 0.528453 0.164549 -vt 0.624093 0.197187 -vt 0.610426 0.214591 -vt 0.069821 0.927873 -vt 0.376775 0.537305 -vt 0.365227 0.523408 -vt 0.345209 0.543166 -vt -0.424926 1.242115 -vt -0.175902 0.729344 -vt 0.553565 0.224030 -vt -0.065421 0.200054 -vt -0.375111 0.863460 -vt 0.511260 0.155681 -vt 0.497475 0.159751 -vt -0.433818 1.083732 -vt -0.410544 1.098648 -vt -0.432690 1.113030 -vt -0.296850 1.151025 -vt -0.260418 1.164629 -vt -0.434664 1.148633 -vt -0.246164 0.147013 -vt 0.018521 0.730316 -vt -0.413948 1.064355 -vt -0.194857 1.325062 -vt -0.167836 1.335803 -vt -0.181774 1.305976 -vt -0.218675 0.080806 -vt -0.201792 0.087760 -vt -0.201141 0.071526 -vt 0.091883 -0.219975 -vt 0.146564 0.077737 -vt 0.151945 0.093781 -vt 0.137599 0.076025 -vt 0.520673 -0.035045 -vt 0.514303 -0.054278 -vt 0.496205 -0.048127 -vt 0.711653 -0.045539 -vt 0.730673 -0.060284 -vt -0.312281 1.328483 -vt -0.311683 1.348126 -vt 0.575926 0.216184 -vt -0.050247 0.985939 -vt -0.460766 1.098872 -vt -0.445997 1.140534 -vt -0.424926 0.219929 -vt -0.380062 0.825318 -vt -0.442650 1.060419 -vt -0.427398 1.164153 -vt -0.428601 1.212129 -vt 0.506141 -0.029514 -vt -0.294548 -0.078025 -vt -0.275777 -0.074015 -vt -0.346608 -0.155354 -vt 0.031563 -0.165755 -vt -0.076931 0.610108 -vt -0.099616 0.606074 -vt -0.301859 1.378109 -vt -0.275486 1.378596 -vt -0.187858 0.258824 -vt -0.219955 0.263227 -vt -0.225007 0.247332 -vt -0.213756 0.748365 -vt -0.127410 0.610651 -vt 0.493128 -0.016265 -vt 0.520628 -0.027253 -vt 0.513443 -0.014792 -vt 0.531533 -0.028696 -vt 0.547797 -0.041007 -vt -0.369381 0.978474 -vt 0.502269 0.142480 -vt 0.504247 0.126922 -vt -0.110743 0.515623 -vt -0.119986 0.508527 -vt -0.108833 0.502911 -vt 0.778248 0.163658 -vt 0.755718 0.175502 -vt 0.815705 0.187000 -vt -0.403805 1.202907 -vt 0.664768 0.296817 -vt 0.521573 0.231882 -vt -0.382474 0.783232 -vt -0.381015 0.803039 -vt -0.350568 0.784105 -vt -0.134923 0.646353 -vt -0.072327 0.561397 -vt 1.103417 0.275807 -vt 1.139020 0.276378 -vt 1.130921 0.258183 -vt 0.523126 -0.002101 -vt 0.507148 0.000940 -vt 0.543668 -0.008809 -vt 0.532503 -0.052943 -vt -0.068696 0.608970 -vt -0.068599 0.625110 -vt -0.262936 0.872992 -vt -0.266870 0.831530 -vt -0.322681 -0.008809 -vt -0.306138 -0.020187 -vt 0.838742 0.321513 -vt 1.017165 -0.049191 -vt 1.034407 -0.064213 -vt 1.014252 -0.063401 -vt 0.511803 0.112876 -vt -0.368787 0.928835 -vt -0.087672 0.021653 -vt -0.011318 0.507656 -vt -0.132573 0.719062 -vt -0.069258 0.646679 -vt -0.387048 0.847376 -vt 0.915389 0.100866 -vt -0.311601 0.918905 -vt -0.099616 -0.131372 -vt 0.490644 0.142334 -vt 1.154539 0.277716 -vt 1.171253 0.254451 -vt 0.492099 0.180275 -vt 0.493357 0.202147 -vt 0.548299 0.016919 -vt -0.295305 0.016919 -vt -0.229304 0.583840 -vt -0.200483 0.580198 -vt -0.196420 0.600253 -vt 0.874388 0.119671 -vt 0.887547 0.254182 -vt -0.200483 0.055607 -vt -0.229304 0.025089 -vt 0.925019 0.134180 -vt 1.202516 0.244302 -vt -0.333968 0.532739 -vt -0.339064 0.516761 -vt -0.295305 0.557912 -vt 0.094929 1.437726 -vt -0.044553 0.503982 -vt 0.510001 0.037736 -vt 0.493551 0.023207 -vt -0.127295 0.857190 -vt 0.900624 0.147856 -vt 0.187074 0.003846 -vt 0.176877 0.010899 -vt 0.175698 -0.029798 -vt 1.257015 0.156873 -vt 0.032351 0.245416 -vt -0.144277 -0.100365 -vt -0.142195 0.245930 -vt -0.174207 0.245088 -vt 0.534278 0.033955 -vt -0.088230 0.543705 -vt -0.076169 0.655792 -vt -0.460669 1.075048 -vt 0.821599 0.151912 -vt 0.862547 0.146519 -vt 0.974247 0.150836 -vt -0.023607 0.513898 -vt -0.003873 0.511613 -vt -0.023202 0.502052 -vt -0.281107 0.522909 -vt 0.986224 0.146601 -vt 0.022350 0.658391 -vt 0.126357 0.247734 -vt 0.486322 -0.210376 -vt 0.494362 -0.205699 -vt 0.498144 -0.215339 -vt 0.787400 -0.190038 -vt 0.803750 -0.204038 -vt 0.782696 -0.200913 -vt -0.293695 0.033955 -vt -0.277789 0.041785 -vt -0.126700 0.954955 -vt 0.075862 0.499501 -vt 0.085762 0.521838 -vt -0.308496 0.519615 -vt -0.280958 0.508099 -vt -0.293695 0.543891 -vt 0.878472 0.171587 -vt 0.913290 0.175744 -vt -0.348724 0.765331 -vt -0.376009 0.999080 -vt -0.396479 0.922903 -vt 1.228840 0.198351 -vt 1.265154 0.178613 -vt -0.302338 0.506590 -vt -0.295453 0.499393 -vt -0.277789 0.548605 -vt -0.246883 0.005719 -vt 0.590030 0.010182 -vt 0.583187 -0.009734 -vt 0.567285 0.222582 -vt 0.563244 0.200121 -vt -0.031145 -0.255848 -vt -0.023202 -0.253301 -vt -0.033029 -0.236354 -vt -0.288973 1.129178 -vt -0.330835 1.138791 -vt -0.272664 0.200121 -vt -0.236548 -0.033205 -vt -0.229185 0.010182 -vt -0.289854 0.512668 -vt -0.031145 0.498017 -vt 0.837762 0.188522 -vt 0.498486 0.067375 -vt 0.522414 0.064888 -vt 0.538991 0.041785 -vt -0.266856 0.064888 -vt 0.574227 0.025089 -vt 0.574889 0.005719 -vt -0.196895 0.723424 -vt -0.226705 0.734684 -vt 0.885470 -0.226087 -vt 0.852293 -0.238348 -vt 0.851110 -0.228879 -vt 0.535670 -0.069045 -vt 0.539226 -0.084841 -vt 0.523840 -0.094375 -vt 0.371902 0.547724 -vt 0.342545 0.542615 -vt -0.093935 0.493991 -vt -0.084517 0.504357 -vt 1.276579 -0.307278 -vt -0.426480 0.178613 -vt -0.106716 0.493410 -vt -0.187230 0.579454 -vt -0.209552 0.592708 -vt -0.187439 0.615499 -vt 1.055588 0.221758 -vt 1.041383 0.248040 -vt 1.065435 0.254803 -vt 1.089258 0.256484 -vt 1.232502 0.219929 -vt -0.248689 0.506376 -vt -0.216093 0.876222 -vt -0.193095 0.902968 -vt -0.185024 0.879992 -vt 0.853847 0.203402 -vt 0.997621 0.137718 -vt 0.507540 0.081687 -vt -0.265548 0.081687 -vt -0.068491 0.669658 -vt 0.919221 0.197120 -vt -0.400094 0.888085 -vt -0.170821 1.361364 -vt 1.050806 0.265667 -vt -0.265548 0.517153 -vt -0.252595 0.534277 -vt -0.229185 0.599644 -vt -0.211968 0.628268 -vt -0.317953 0.842212 -vt -0.279537 0.821658 -vt -0.314872 0.814469 -vt 0.913043 0.210811 -vt 0.968861 0.181843 -vt 0.558324 -0.020187 -vt 0.107693 1.046661 -vt -0.278737 1.479637 -vt -0.269392 1.460688 -vt -0.293302 1.472090 -vt 0.107693 -0.173821 -vt 0.136738 -0.184162 -vt 0.097679 -0.193905 -vt 0.075378 -0.175198 -vt 0.228657 1.074563 -vt 0.202981 1.072689 -vt 0.199877 1.094886 -vt -0.063610 1.005730 -vt 0.125858 -0.197464 -vt 0.215150 -0.088924 -vt 1.368495 -0.449679 -vt 1.400259 -0.437220 -vt 0.174825 -0.217112 -vt 0.208253 -0.218791 -vt 0.256042 -0.090949 -vt 0.216578 -0.116354 -vt 0.207842 -0.206722 -vt 1.411261 -0.419563 -vt -0.333698 1.496757 -vt -0.313001 1.476483 -vt 1.436304 -0.420383 -vt 1.466870 -0.455520 -vt -0.327357 1.445917 -vt -0.343763 1.462507 -vt -0.354818 1.478791 -vt 1.353595 -0.396352 -vt -0.369147 1.472542 -vt 1.381159 -0.385427 -vt 1.407575 -0.389819 -vt 1.436961 -0.394674 -vt 1.452893 -0.416146 -vt -0.343763 -0.416146 -vt -0.349000 -0.394674 -vt -0.369147 -0.409109 -vt 1.462928 -0.409109 -vt -0.349000 1.446574 -vt -0.375760 1.462935 -vt 1.453321 -0.396289 -vt 1.307123 -0.378572 -vt 1.335162 -0.354915 -vt 1.440336 -0.380180 -vt 1.450542 -0.382971 -vt -0.377320 -0.380180 -vt -0.375760 -0.396289 -vt 0.289396 0.944704 -vt 0.274875 0.962739 -vt 1.419151 -0.371783 -vt -0.351492 -0.371783 -vt 1.394339 -0.349427 -vt -0.381849 -0.367302 -vt 1.432011 -0.367302 -vt 1.362469 -0.342537 -vt -0.358613 -0.361118 -vt 1.295966 -0.108190 -vt -0.346082 -0.349427 -vt 1.418549 -0.351321 -vt 1.433933 -0.360048 -vt -0.380475 -0.351321 -vt -0.346082 1.403953 -vt -0.380475 1.428163 -vt -0.358613 1.424655 -vt 1.319244 -0.325136 -vt -0.355928 -0.334720 -vt 1.415705 -0.336593 -vt 1.368133 -0.319471 -vt 1.393047 -0.334720 -vt -0.383685 -0.329815 -vt 1.405688 -0.329815 -vt 1.402670 -0.315243 -vt -0.385070 -0.360048 -vt -0.383868 -0.354424 -vt 1.159141 0.173274 -vt 1.318194 -0.297167 -vt 1.376519 -0.312447 -vt -0.295899 0.138024 -vt -0.283985 0.125001 -vt -0.287511 0.112876 -vt 0.353866 0.895168 -vt 0.334854 0.877118 -vt 0.150538 -0.064914 -vt 0.163034 -0.110479 -vt 0.136339 -0.098554 -vt -0.317510 1.087672 -vt -0.285256 1.081018 -vt -0.302210 1.067260 -vt -0.355450 -0.312447 -vt -0.378729 -0.308095 -vt 1.389077 -0.308095 -vt 0.082953 -0.106957 -vt 0.111116 -0.121705 -vt 0.079616 -0.132729 -vt 0.742749 -0.015755 -vt -0.121554 -0.107883 -vt 0.108068 -0.134566 -vt 0.096680 -0.152592 -vt 1.347821 -0.280283 -vt 1.391162 -0.298702 -vt 0.223662 -0.130449 -vt 0.316331 1.046321 -vt 0.325401 1.024596 -vt 0.295014 1.020910 -vt 1.363408 -0.285886 -vt -0.358853 -0.285886 -vt -0.383655 -0.288727 -vt 1.381470 -0.288727 -vt 0.193089 -0.098674 -vt -0.055038 0.784788 -vt 0.775175 -0.284146 -vt 0.800606 -0.274274 -vt 0.797295 -0.297693 -vt 0.830676 -0.296903 -vt 0.855837 -0.273599 -vt 0.845972 -0.302589 -vt -0.334854 -0.297163 -vt -0.353764 -0.268784 -vt -0.345919 -0.307278 -vt 1.308849 -0.275616 -vt 0.357606 1.025828 -vt 0.349182 0.994462 -vt 0.330505 1.002610 -vt -0.032644 0.734820 -vt -0.000055 0.704129 -vt -0.017398 0.704922 -vt 0.725206 -0.284145 -vt 0.736563 -0.268761 -vt 0.745062 -0.294436 -vt 0.782039 -0.268201 -vt 0.829035 -0.267147 -vt 0.883191 -0.266090 -vt 0.865794 -0.291954 -vt 1.329652 -0.262141 -vt 1.379525 -0.266969 -vt 0.069617 -0.225654 -vt 0.111057 -0.228808 -vt 0.079839 -0.269755 -vt 0.711226 -0.262769 -vt 0.695309 -0.280419 -vt -0.030756 -0.072208 -vt -0.380560 -0.260035 -vt 1.365073 -0.260035 -vt 0.203033 1.042668 -vt 0.229582 1.047048 -vt 0.665110 -0.265483 -vt -0.359808 -0.247039 -vt 1.343341 -0.247039 -vt 0.006938 0.667635 -vt -0.017556 0.646960 -vt -0.023582 0.674724 -vt 0.677533 -0.248788 -vt 0.697356 -0.244494 -vt 0.725765 -0.250092 -vt 0.764487 -0.254161 -vt 0.779315 -0.250359 -vt 0.818512 -0.256165 -vt 0.011651 -0.147248 -vt 1.310343 -0.233084 -vt 0.186999 -0.126833 -vt 0.624733 -0.245593 -vt 0.643522 -0.243260 -vt 0.637347 -0.255307 -vt 0.879802 -0.240543 -vt -0.034815 -0.232619 -vt -0.014292 -0.227921 -vt -0.028331 -0.266090 -vt 0.012392 1.531259 -vt 0.006894 1.532146 -vt 0.890551 0.085008 -vt 0.199877 -0.144585 -vt 0.171147 -0.150433 -vt 0.776415 -0.241888 -vt 0.841333 -0.232069 -vt 0.822597 -0.228506 -vt 0.893020 -0.232619 -vt 1.286408 -0.238040 -vt 1.327188 -0.234677 -vt 1.360780 -0.228023 -vt -0.344896 -0.263669 -vt -0.346112 1.005152 -vt 0.202090 0.955007 -vt 0.174825 0.938935 -vt 0.158754 0.951648 -vt 0.704183 -0.224782 -vt 0.729374 -0.220047 -vt 0.762259 -0.229841 -vt 1.277413 -0.227034 -vt -0.379801 -0.233167 -vt 1.352334 -0.233167 -vt -0.317865 -0.114123 -vt 0.488176 -0.235404 -vt 0.517675 -0.228505 -vt 0.497748 -0.242447 -vt 0.512920 -0.238658 -vt 0.536074 -0.236332 -vt 0.189323 0.914298 -vt 0.234267 0.915578 -vt 0.613874 -0.224317 -vt 0.647917 -0.213065 -vt 0.682553 -0.220923 -vt 0.779539 -0.217991 -vt -0.106424 0.555057 -vt 0.535608 -0.216370 -vt 0.562720 -0.230717 -vt 0.565090 -0.214615 -vt 0.798474 -0.216364 -vt -0.076303 0.832211 -vt -0.068496 0.850947 -vt -0.090430 0.074280 -vt 0.028999 -0.170489 -vt 0.062927 -0.183546 -vt 0.034300 -0.185310 -vt 0.666782 -0.200660 -vt 0.704675 -0.204918 -vt 0.750188 -0.208973 -vt 0.828895 -0.210119 -vt 0.838038 -0.222393 -vt 0.081706 0.493399 -vt 0.082401 0.510279 -vt 0.102855 0.501893 -vt 1.317238 -0.204477 -vt -0.356448 -0.204477 -vt -0.375660 -0.209944 -vt 1.335583 -0.209944 -vt 0.001447 -0.067579 -vt 0.042711 -0.071427 -vt 0.014339 -0.097025 -vt 0.125858 1.025300 -vt 0.097679 1.030723 -vt 1.056503 0.135078 -vt -0.152571 0.525343 -vt -0.129838 0.545222 -vt -0.150714 0.507757 -vt -0.129167 0.563979 -vt -0.106089 0.574703 -vt 0.622340 -0.200314 -vt 0.073145 -0.078178 -vt 0.049379 -0.094324 -vt -0.349147 -0.192648 -vt -0.358685 -0.227034 -vt 1.286593 -0.190972 -vt 1.302925 -0.194131 -vt -0.344947 -0.101878 -vt -0.330746 -0.091069 -vt -0.358636 -0.090649 -vt 1.506227 -0.199646 -vt 1.522332 -0.216440 -vt 1.498473 -0.223275 -vt 0.515104 -0.196976 -vt 0.515730 -0.208212 -vt 0.546857 -0.192143 -vt 0.554366 -0.207922 -vt -0.054414 -0.196957 -vt -0.041374 -0.214501 -vt 0.591144 -0.196957 -vt 0.599808 -0.192896 -vt 0.759538 -0.186499 -vt 1.331415 -0.190319 -vt -0.005069 -0.286223 -vt -0.023685 -0.291954 -vt 1.484461 -0.209435 -vt 0.081706 -0.216715 -vt 0.068369 -0.230215 -vt 0.682300 -0.177273 -vt 0.046311 0.936209 -vt 1.277453 -0.186642 -vt 0.997385 0.163292 -vt 1.028095 -0.091929 -vt 1.013342 -0.088487 -vt 0.011457 1.515841 -vt 0.542806 -0.175571 -vt -0.141554 -0.192143 -vt -0.064671 -0.183188 -vt -0.048668 -0.192896 -vt 0.612489 -0.175268 -vt 0.651154 -0.177540 -vt 0.714332 -0.177438 -vt -0.240122 0.508347 -vt -0.349334 -0.124293 -vt -0.372328 -0.186034 -vt 1.318807 -0.186034 -vt 1.042975 0.135090 -vt 0.513125 -0.177594 -vt 0.490504 -0.178180 -vt 0.569631 -0.168835 -vt 0.567146 -0.200099 -vt 0.745406 -0.180079 -vt 1.297200 -0.167662 -vt 1.305258 -0.183113 -vt -0.357357 -0.183113 -vt -0.063767 -0.174128 -vt -0.074343 0.723945 -vt -0.055633 -0.170713 -vt 0.592458 -0.174128 -vt 0.600936 -0.170713 -vt 0.592715 -0.183188 -vt 0.069904 -0.164386 -vt 1.502616 -0.171997 -vt 1.487278 -0.187586 -vt 1.517751 -0.179588 -vt 0.510973 -0.154193 -vt 0.633796 -0.162993 -vt 0.662532 -0.158079 -vt 0.237551 -0.133062 -vt 0.071080 0.856426 -vt 0.034210 0.861767 -vt 0.035805 0.886310 -vt 1.007843 0.145451 -vt -0.210944 0.682330 -vt 1.267710 -0.161975 -vt 1.280055 -0.160457 -vt 1.311579 -0.161592 -vt -0.357474 -0.167662 -vt 0.534154 -0.139630 -vt 0.557836 -0.152844 -vt 0.612034 -0.156638 -vt 1.464054 -0.160263 -vt 0.047647 -0.233285 -vt 0.503241 -0.142003 -vt -0.062899 -0.143106 -vt -0.065114 0.672146 -vt -0.072683 0.679179 -vt 0.067794 0.900930 -vt 0.069130 0.885452 -vt 0.512121 0.727923 -vt 0.524386 0.700104 -vt 0.503212 0.703596 -vt 1.240493 -0.164505 -vt 1.249451 -0.155354 -vt 0.576276 -0.140402 -vt 0.669565 -0.155636 -vt 0.048381 0.907491 -vt 0.027409 0.902143 -vt 0.020986 -0.203158 -vt 0.320587 0.935930 -vt 0.310112 0.915836 -vt -0.461047 1.217109 -vt -0.467546 1.226599 -vt -0.460639 1.248310 -vt 1.294121 -0.146777 -vt 1.287137 -0.137755 -vt 1.477765 -0.140937 -vt -0.075589 -0.131211 -vt -0.059981 -0.167610 -vt -0.088940 -0.143351 -vt 0.512130 -0.072306 -vt 0.492440 -0.048767 -vt 0.511872 -0.042759 -vt 0.824848 -0.139173 -vt 0.853949 -0.137213 -vt 0.830369 -0.154395 -vt -0.376725 0.863563 -vt -0.379669 0.897418 -vt -0.355269 0.863763 -vt 1.266853 -0.132106 -vt 1.276113 -0.126873 -vt -0.032600 -0.160105 -vt 0.315843 0.619124 -vt 0.095125 1.455941 -vt 0.887805 -0.134940 -vt 0.901440 -0.124933 -vt 0.894783 -0.145716 -vt -0.388354 0.911053 -vt -0.281099 -0.431072 -vt -0.079087 1.036480 -vt -0.059981 1.045658 -vt 1.236645 -0.145876 -vt 1.239805 -0.124293 -vt 1.434607 -0.154967 -vt 1.463586 -0.129078 -vt -0.050120 -0.160263 -vt 0.159917 -0.272771 -vt 0.131154 -0.274907 -vt 0.822198 -0.120893 -vt 0.062927 1.026326 -vt 0.857207 -0.110954 -vt 0.918732 -0.104518 -vt 0.923965 -0.129688 -vt -0.369226 0.958436 -vt -0.395266 0.963279 -vt 1.303658 -0.394592 -vt 0.144286 -0.219122 -vt 0.270323 -0.067700 -vt 1.030807 -0.122022 -vt 1.059612 -0.117950 -vt 1.066115 -0.080864 -vt 0.970873 -0.125311 -vt 0.994691 -0.116085 -vt 0.081761 1.005282 -vt 0.046311 -0.222706 -vt 0.041742 -0.268665 -vt 0.051421 1.002926 -vt -0.370178 0.834461 -vt -0.386931 0.831811 -vt 0.825426 -0.104300 -vt -0.395585 0.866820 -vt -0.415838 0.881011 -vt 0.871397 -0.096700 -vt 0.953666 -0.100884 -vt -0.022461 -0.114497 -vt 0.228657 -0.158052 -vt -0.154040 0.566569 -vt -0.138526 0.591624 -vt -0.132834 0.585889 -vt 1.227058 -0.112944 -vt 1.264690 -0.106895 -vt 1.281252 -0.111658 -vt 0.165144 0.974621 -vt 0.198813 0.979347 -vt 0.305879 0.888502 -vt 0.556956 -0.132218 -vt 0.793425 -0.108404 -vt -0.409417 0.865759 -vt 0.895867 -0.102663 -vt 0.248984 1.052068 -vt 1.240464 -0.102720 -vt -0.174465 -0.069857 -vt 1.436570 -0.107883 -vt 1.443919 -0.124400 -vt 1.425787 -0.121709 -vt 0.196069 0.522274 -vt 0.613484 -0.098663 -vt 0.631691 -0.089861 -vt 0.672717 -0.117014 -vt 0.669449 -0.081523 -vt 0.672807 -0.096753 -vt -0.359107 0.760862 -vt -0.054677 -0.036951 -vt 0.378347 1.004305 -vt 0.391202 0.980487 -vt 0.159917 0.912561 -vt 1.229465 -0.098365 -vt 1.418727 -0.100365 -vt 1.391726 -0.104110 -vt 0.111673 -0.261533 -vt 0.100128 -0.286116 -vt -0.029099 -0.185726 -vt -0.063610 -0.184442 -vt -0.029630 -0.177518 -vt -0.359107 -0.106016 -vt 0.773618 -0.098120 -vt 0.800224 -0.091264 -vt 0.826599 -0.092501 -vt -0.408109 0.836212 -vt 0.879840 -0.083701 -vt 0.999001 -0.110238 -vt 0.019909 -0.141803 -vt -0.006927 -0.162600 -vt -0.064444 -0.106367 -vt -0.081761 -0.103943 -vt 1.242721 -0.089609 -vt 1.279156 -0.091932 -vt 1.403828 -0.088422 -vt 0.576110 -0.084098 -vt 0.594171 -0.084174 -vt 0.565959 -0.100871 -vt -0.208913 0.623097 -vt -0.223463 0.603785 -vt -0.219036 0.641304 -vt -0.382541 -0.082199 -vt 0.751248 -0.106016 -vt 0.755257 -0.082199 -vt 0.817026 -0.085564 -vt 0.916666 -0.079312 -vt 0.938485 -0.078838 -vt 0.990793 -0.079698 -vt 1.249789 -0.082306 -vt 1.284814 -0.077661 -vt 1.385775 -0.082931 -vt 1.372527 -0.097688 -vt -0.164224 -0.088422 -vt 0.109056 -0.220637 -vt 0.077797 -0.221297 -vt -0.257769 0.569385 -vt -0.232311 0.585723 -vt -0.238182 0.566609 -vt -0.251251 -0.069454 -vt -0.232311 -0.084098 -vt -0.257769 -0.082607 -vt 0.207842 0.942387 -vt 0.221793 0.949957 -vt -0.318936 -0.087580 -vt -0.341146 -0.077050 -vt -0.376830 -0.074002 -vt 0.775429 -0.070214 -vt 0.828463 -0.071747 -vt 0.857635 -0.076152 -vt 0.856145 -0.097746 -vt -0.031995 -0.101246 -vt -0.036962 0.170107 -vt -0.040757 0.142902 -vt -0.023392 0.160898 -vt 0.144286 0.945331 -vt 0.118626 0.953649 -vt 0.015776 -0.178001 -vt -0.391469 1.222934 -vt -0.367933 1.252335 -vt -0.375411 1.259403 -vt 1.269331 -0.072470 -vt -0.290918 -0.064440 -vt -0.298570 -0.084841 -vt -0.240162 -0.064187 -vt 0.581506 -0.064187 -vt 0.632412 -0.052148 -vt 0.714877 -0.087580 -vt 0.693093 -0.065881 -vt 0.728116 -0.077050 -vt 0.747263 -0.074002 -vt 0.804528 -0.068340 -vt 0.000945 -0.225518 -vt 0.031956 -0.229571 -vt -0.003098 -0.259003 -vt 0.866065 -0.246459 -vt 0.879975 -0.254924 -vt 0.899646 -0.233008 -vt 1.193294 -0.067863 -vt 1.213320 -0.081953 -vt 1.200559 -0.088015 -vt 1.234336 -0.063803 -vt 1.354722 -0.070317 -vt 1.398191 -0.069857 -vt 0.012392 -0.153700 -vt 0.553637 -0.064440 -vt -0.280636 0.044243 -vt -0.267808 0.071550 -vt -0.295453 0.044653 -vt 0.597020 -0.056968 -vt 0.661844 -0.068511 -vt -0.358982 -0.060284 -vt 0.867766 -0.056663 -vt 0.909479 -0.054649 -vt 0.952332 -0.059840 -vt 0.994177 -0.057226 -vt 1.112402 -0.059789 -vt 1.124731 -0.066455 -vt 1.113884 -0.078858 -vt -0.397901 1.243950 -vt -0.380745 1.278945 -vt 1.295882 -0.060103 -vt 1.367185 -0.061490 -vt -0.205156 -0.061490 -vt -0.180636 -0.082931 -vt 1.380919 -0.059004 -vt -0.324528 -0.052943 -vt -0.306020 -0.069045 -vt 0.649205 -0.044455 -vt -0.331199 -0.054812 -vt 0.700930 -0.054812 -vt -0.379624 -0.052381 -vt 0.749612 -0.052381 -vt 0.775346 -0.052666 -vt 1.077717 -0.070072 -vt 1.082330 -0.054225 -vt 1.086630 -0.074181 -vt -0.437304 1.134344 -vt -0.401732 1.261376 -vt 1.283244 -0.049801 -vt 1.309413 -0.055340 -vt 1.476814 -0.415920 -vt -0.263502 -0.042543 -vt 0.845665 -0.044089 -vt 0.944051 -0.048115 -vt 0.981366 -0.046788 -vt -0.408749 1.003790 -vt -0.412185 1.026779 -vt 1.140555 -0.043577 -vt 1.169409 -0.059329 -vt 0.360726 0.977391 -vt 1.325355 -0.070276 -vt 1.345714 -0.046609 -vt -0.317632 -0.041007 -vt -0.306304 -0.039179 -vt 0.582642 -0.036132 -vt 0.226152 0.519378 -vt 0.231086 0.509335 -vt 0.021480 -0.190098 -vt 0.884873 -0.041330 -vt 1.052253 -0.058421 -vt -0.432485 1.214369 -vt -0.417233 1.209797 -vt -0.415358 1.238434 -vt 1.251762 -0.057181 -vt 1.297613 -0.040855 -vt -0.372432 -0.043342 -vt -0.404218 -0.035433 -vt 0.910535 -0.033191 -vt 0.326548 0.851144 -vt 0.308473 0.859635 -vt 1.335330 -0.047214 -vt -0.228075 -0.046609 -vt 0.660300 -0.045524 -vt 0.653563 -0.015112 -vt -0.306020 0.545283 -vt -0.315637 0.529353 -vt -0.324528 0.542116 -vt -0.417383 1.290857 -vt -0.393615 1.292857 -vt -0.408451 1.272577 -vt -0.014218 0.242216 -vt -0.035077 0.291938 -vt -0.038638 0.266303 -vt 0.309994 -0.117950 -vt 1.036708 -0.135073 -vt 0.278659 0.988222 -vt -0.278737 -0.470439 -vt -0.289499 -0.465511 -vt -0.041374 0.602223 -vt -0.036875 0.596176 -vt -0.057778 0.591944 -vt 0.088930 0.887415 -vt 0.100128 0.909287 -vt -0.257129 1.046479 -vt 0.492554 -0.019105 -vt 0.247682 0.961366 -vt 0.225831 0.084186 -vt 0.205500 0.082633 -vt 0.212325 0.068071 -vt 0.263228 -0.142958 -vt -0.203870 0.505919 -vt -0.264019 1.456773 -vt 0.000898 -0.132119 -vt -0.047858 -0.145626 -vt 0.180437 1.058054 -vt 0.442227 0.672319 -vt 0.424238 0.660836 -vt 0.437961 0.686748 -vt 0.061143 -0.160489 -vt 0.043091 -0.152356 -vt -0.328508 0.920197 -vt 0.011643 -0.222319 -vt 1.529284 -0.191674 -vt 0.107402 -0.095132 -vt 0.243596 0.889589 -vt -0.088940 1.066348 -vt 0.173654 0.897402 -vt 0.180437 -0.179887 -vt 0.706330 -0.056467 -vt 0.452642 0.715944 -vt 0.452875 0.700305 -vt 0.434545 0.697209 -vt 0.690691 -0.065862 -vt 0.336547 0.679622 -vt 0.183282 0.864489 -vt 0.331790 1.040420 -vt 0.357606 -0.121109 -vt 0.331790 -0.122022 -vt 0.516931 0.672217 -vt 0.876984 -0.163183 -vt 0.301440 1.002106 -vt 0.408345 0.856430 -vt 0.079616 1.092245 -vt 0.111116 1.114944 -vt 0.190928 1.027772 -vt 0.395701 0.886598 -vt -0.129501 0.127772 -vt 1.017711 -0.105640 -vt 0.361632 -0.072678 -vt 0.371654 -0.105640 -vt -0.044553 0.297584 -vt -0.067552 0.287881 -vt 1.014982 -0.138860 -vt 0.272080 1.009949 -vt 0.157399 1.059978 -vt 0.136738 1.036679 -vt 0.529665 -0.023818 -vt 0.540240 -0.033513 -vt 0.512121 -0.048792 -vt -0.289499 1.492380 -vt 0.274830 1.057953 -vt 0.271900 1.034454 -vt -0.184555 0.189674 -vt 0.451093 0.649814 -vt 0.486546 0.679543 -vt 0.285261 1.063741 -vt 0.500272 -0.028877 -vt 0.014226 -0.275765 -vt 0.027409 -0.290601 -vt 0.310517 0.836149 -vt 0.245607 0.909260 -vt 0.723287 -0.040575 -vt 0.464116 0.732900 -vt 0.468852 0.712095 -vt 1.152767 -0.059468 -vt -0.091115 -0.220942 -vt 0.261049 -0.153857 -vt 0.235622 -0.136424 -vt 0.690490 -0.058695 -vt 0.163034 1.118035 -vt 0.144963 1.083590 -vt 0.136300 1.097970 -vt 0.541909 0.712927 -vt 0.347264 0.837015 -vt 0.345325 0.801549 -vt 0.326037 0.828721 -vt 0.549766 0.672271 -vt 0.309994 1.069225 -vt 0.497694 0.134963 -vt -0.274891 -0.062696 -vt 1.233369 -0.076950 -vt 0.309815 -0.190463 -vt 0.078022 0.990304 -vt -0.266770 -0.054213 -vt 1.289384 -0.062696 -vt -0.253628 -0.036630 -vt -0.001307 0.881971 -vt -0.005069 0.896071 -vt 0.000898 1.082025 -vt -0.047858 1.066344 -vt 0.245607 -0.233008 -vt 0.243596 -0.254924 -vt 0.263228 1.072812 -vt 0.237551 1.096338 -vt -0.253628 1.326428 -vt -0.253619 1.311650 -vt -0.268090 1.318237 -vt -0.253619 -0.050825 -vt -0.251239 1.267601 -vt -0.274891 1.298998 -vt -0.266770 1.303695 -vt -0.270038 1.277142 -vt 0.045727 -0.230594 -vt -0.023685 0.875407 -vt -0.241766 1.294281 -vt -0.266306 1.258921 -vt 0.053686 -0.110517 -vt -0.089774 0.558552 -vt -0.069396 0.573710 -vt 1.302036 -0.050825 -vt -0.218159 1.334968 -vt -0.224716 1.319739 -vt 0.486408 0.597221 -vt 0.458206 0.580096 -vt 0.471880 0.597934 -vt 0.822221 -0.181313 -vt -0.116961 0.545687 -vt -0.096606 0.572334 -vt 0.143739 0.977106 -vt 0.028999 1.051400 -vt -0.032464 1.049860 -vt 0.031956 0.929620 -vt 0.000945 0.922892 -vt 0.011643 0.934790 -vt -0.226065 1.245476 -vt 0.049379 1.110498 -vt 0.082953 1.117542 -vt 0.053686 1.096607 -vt 0.376775 -0.074309 -vt 0.019909 1.070637 -vt -0.279723 1.357954 -vt 0.854149 -0.158495 -vt -0.233177 1.211154 -vt 0.034300 1.035098 -vt 0.540240 0.732854 -vt 0.009389 -0.185447 -vt 0.159785 1.034930 -vt -0.029099 1.016786 -vt 1.257987 -0.070013 -vt 0.085762 -0.165589 -vt -0.247111 1.179519 -vt -0.225300 1.187001 -vt -0.211594 1.159802 -vt -0.231472 1.111795 -vt -0.249338 1.087322 -vt -0.260432 1.100393 -vt -0.240628 1.080364 -vt -0.239461 1.268980 -vt 1.201540 -0.087234 -vt 1.177387 -0.082563 -vt -0.206221 1.173379 -vt -0.219149 1.068968 -vt 0.002824 0.850781 -vt 1.016214 -0.121109 -vt -0.274103 0.080361 -vt -0.280958 0.067375 -vt -0.213645 1.129901 -vt -0.203805 1.119593 -vt -0.203805 -0.100612 -vt -0.185074 -0.134642 -vt -0.240628 -0.128674 -vt -0.195945 1.050965 -vt -0.229809 1.021873 -vt 0.476147 -0.022071 -vt -0.200268 1.140957 -vt -0.185074 1.096423 -vt -0.192356 1.073797 -vt 0.476147 0.752165 -vt 0.500272 0.746074 -vt -0.190708 1.138887 -vt -0.187555 1.014361 -vt 0.227519 0.867524 -vt 1.129274 -0.080166 -vt -0.190708 -0.080166 -vt -0.180585 -0.100626 -vt -0.169557 1.037079 -vt 0.067794 -0.295705 -vt 0.048381 -0.286214 -vt -0.088468 -0.123339 -vt -0.182262 1.162380 -vt -0.173248 1.143766 -vt -0.173248 -0.062864 -vt -0.154000 -0.116971 -vt -0.157850 1.060838 -vt 0.412877 0.650631 -vt 0.422842 0.673401 -vt -0.078248 1.473199 -vt 1.134152 -0.062864 -vt 0.527719 0.671847 -vt 0.358329 0.825348 -vt -0.159038 -0.094760 -vt -0.136511 1.085710 -vt -0.154000 1.116687 -vt 0.111057 0.942500 -vt -0.140341 -0.096024 -vt -0.140594 1.034499 -vt 0.464116 -0.040575 -vt 0.388437 0.948116 -vt 0.034507 -0.240648 -vt -0.111787 1.100978 -vt -0.120795 1.060694 -vt 0.136300 -0.130311 -vt 0.244182 0.510160 -vt 0.265247 0.513298 -vt -0.268884 -0.102544 -vt -0.111787 -0.106498 -vt -0.111787 -0.128275 -vt 0.516626 0.749237 -vt -0.107553 1.041394 -vt 0.124583 0.966768 -vt -0.257309 0.500345 -vt -0.134107 0.522534 -vt -0.238182 -0.099013 -vt -0.097429 1.056984 -vt -0.268884 0.548048 -vt -0.247494 0.493269 -vt -0.097429 -0.157612 -vt -0.120795 -0.155289 -vt 0.094492 0.844203 -vt 0.085328 0.860479 -vt 0.171147 1.083269 -vt -0.101070 0.109157 -vt -0.111787 1.116760 -vt -0.081761 1.104823 -vt -0.088468 1.088078 -vt 0.202981 -0.161833 -vt -0.328745 -0.027647 -vt -0.227174 0.495845 -vt -0.075589 1.077446 -vt -0.079087 -0.173556 -vt -0.362050 1.008614 -vt -0.259031 1.140791 -vt -0.149817 0.935445 -vt -0.365867 1.037709 -vt -0.334684 1.033910 -vt -0.328150 0.956742 -vt 0.300339 -0.072137 -vt -0.254932 0.807908 -vt -0.243851 0.865026 -vt -0.235552 0.834211 -vt -0.349979 0.960635 -vt -0.336721 1.052222 -vt -0.222830 0.850107 -vt -0.312404 0.509241 -vt -0.300808 0.494176 -vt -0.292344 1.055445 -vt -0.374626 1.103141 -vt -0.356245 1.078755 -vt 0.512810 0.632803 -vt -0.206153 1.300980 -vt -0.001332 -0.231884 -vt 0.491183 0.639263 -vt -0.359194 0.839983 -vt 0.482968 0.654329 -vt -0.138526 -0.132502 -vt -0.331462 1.108317 -vt -0.230984 1.007579 -vt -0.327817 0.883604 -vt 0.421411 0.141732 -vt 0.460973 0.624454 -vt -0.038353 -0.013732 -vt -0.354745 -0.255435 -vt -0.183727 0.736294 -vt -0.176867 0.697150 -vt -0.244540 0.920829 -vt -0.251627 0.941268 -vt -0.377506 -0.060103 -vt 0.774491 -0.128553 -vt 0.324798 0.660395 -vt 0.312268 0.662526 -vt -0.268056 0.992951 -vt 0.445824 0.599415 -vt 0.443161 0.629732 -vt 0.154472 -0.062591 -vt -0.268264 1.080955 -vt -0.316917 1.167696 -vt -0.345104 0.766246 -vt -0.344947 0.747983 -vt -0.345104 -0.118983 -vt -0.339682 -0.144504 -vt -0.326128 -0.132170 -vt 0.436563 -0.081116 -vt 0.436563 0.571280 -vt -0.234827 0.905853 -vt -0.183619 0.757405 -vt -0.139831 1.349854 -vt 0.421339 0.598978 -vt 0.423108 0.643444 -vt -0.053166 -0.254290 -vt -0.222343 0.924312 -vt 0.018892 -0.244565 -vt -0.281005 -0.110559 -vt -0.272129 -0.119245 -vt -0.260411 -0.116622 -vt 1.517363 -0.230594 -vt 0.405710 0.620991 -vt -0.169592 0.802611 -vt -0.199583 0.824823 -vt 0.503805 -0.083691 -vt 0.499628 -0.096613 -vt -0.313917 -0.122831 -vt -0.320259 -0.104505 -vt -0.256810 0.901583 -vt -0.182139 0.796098 -vt 0.131137 -0.057344 -vt 0.113520 -0.034175 -vt 0.519740 -0.069445 -vt 0.421938 0.544965 -vt 0.406135 0.549180 -vt 0.398940 0.578349 -vt 0.013691 0.547201 -vt -0.369919 1.132726 -vt -0.326128 0.760457 -vt -0.314599 0.778579 -vt -0.433573 1.096243 -vt -0.425765 1.123497 -vt -0.267236 0.970607 -vt -0.234195 0.959535 -vt -0.238062 0.990621 -vt -0.343874 0.825318 -vt -0.195768 0.855578 -vt -0.152878 0.874021 -vt -0.149506 0.840834 -vt 0.400718 0.635861 -vt -0.142022 0.885532 -vt -0.138077 0.916349 -vt -0.280036 0.780316 -vt 0.406135 -0.077218 -vt 0.385681 0.616207 -vt -0.138977 0.788110 -vt -0.147066 0.815863 -vt -0.163504 0.225265 -vt -0.165833 0.998164 -vt -0.304613 0.533454 -vt 0.583094 -0.101245 -vt 0.684204 -0.105328 -vt 0.693872 -0.118248 -vt -0.304747 1.489518 -vt 0.365790 0.571534 -vt 0.377122 0.596019 -vt -0.298777 1.444517 -vt 0.367805 0.600902 -vt -0.039418 0.099540 -vt -0.041741 0.085087 -vt 0.135266 0.504311 -vt -0.072495 0.267497 -vt -0.397597 1.000406 -vt -0.198906 0.956682 -vt -0.199675 0.984396 -vt -0.176468 0.955890 -vt -0.033959 0.754676 -vt -0.226205 1.284529 -vt -0.136904 0.748268 -vt 0.352361 0.584084 -vt -0.157286 1.324434 -vt -0.226016 0.707146 -vt -0.167660 0.760866 -vt -0.157965 0.781496 -vt -0.251543 -0.068690 -vt -0.157598 0.719219 -vt -0.147034 0.747594 -vt -0.312281 -0.415287 -vt -0.180648 0.644990 -vt -0.150041 0.637106 -vt -0.157753 0.616502 -vt -0.157617 0.705754 -vt -0.157913 0.684370 -vt -0.233810 0.691395 -vt -0.221232 0.693817 -vt -0.339584 0.808451 -vt -0.339682 0.785941 -vt -0.436460 1.087331 -vt 0.412893 0.823739 -vt -0.138450 0.863544 -vt -0.167257 0.590192 -vt -0.164987 0.543767 -vt -0.259156 0.737852 -vt 0.681782 -0.098052 -vt -0.233197 -0.081523 -vt 0.319434 0.527942 -vt -0.011318 0.308821 -vt 1.479905 -0.462889 -vt 1.489068 -0.452921 -vt -0.161785 0.664003 -vt -0.225946 0.682420 -vt -0.153536 0.906573 -vt -0.193850 0.921926 -vt -0.180313 0.676598 -vt -0.143738 0.497789 -vt -0.137732 0.507361 -vt 0.317033 0.735049 -vt 0.317135 0.770183 -vt 0.668138 -0.142981 -vt -0.330746 0.735420 -vt -0.042534 0.237534 -vt 0.325448 0.596970 -vt 0.305492 0.609861 -vt 0.609511 -0.212176 -vt 0.108803 0.535386 -vt 0.129927 0.510736 -vt 0.306932 0.804585 -vt 0.278719 -0.040926 -vt 0.265397 -0.061582 -vt 0.272927 -0.100796 -vt 1.029927 0.173977 -vt 1.347953 -0.445174 -vt -0.214508 0.941368 -vt 0.295298 0.587141 -vt 0.600248 -0.216435 -vt 0.624375 -0.232680 -vt 0.306476 0.633989 -vt 0.677180 -0.233377 -vt 0.708706 -0.241506 -vt 0.725436 -0.231191 -vt 0.696090 -0.218010 -vt 0.297450 0.756952 -vt -0.137841 0.685248 -vt 0.293222 0.616988 -vt 0.289652 0.635884 -vt 0.303117 0.686794 -vt 0.304039 0.718319 -vt 0.290730 0.736323 -vt 0.293475 0.786801 -vt -0.236682 -0.068511 -vt 0.279822 0.810417 -vt 0.343928 -0.100800 -vt 0.297570 0.578716 -vt 0.276901 0.589731 -vt 0.272064 0.600331 -vt 0.263197 0.674549 -vt 0.282551 0.702324 -vt -0.278377 -0.058277 -vt -0.362582 0.814367 -vt 0.273704 0.571875 -vt 0.276047 0.634014 -vt 0.269480 0.650567 -vt -0.237683 0.492322 -vt -0.259156 -0.153555 -vt 0.264089 0.614696 -vt 0.269397 0.738218 -vt 0.253567 0.752485 -vt 0.259457 0.777386 -vt 1.476233 -0.434701 -vt 1.487657 -0.424763 -vt 1.487143 -0.440694 -vt 0.250811 0.558997 -vt 0.252662 0.697887 -vt 0.254356 0.717719 -vt 0.248642 0.583295 -vt 0.252101 0.600631 -vt 0.250367 0.621325 -vt 0.246898 0.735612 -vt 0.239489 0.804803 -vt 0.249313 0.827314 -vt -0.043644 -0.240543 -vt -0.047593 -0.226087 -vt 0.244471 0.642996 -vt 0.229993 0.677534 -vt 0.225285 0.749079 -vt 0.235388 0.780037 -vt 0.233251 0.539497 -vt 0.229502 0.562592 -vt 0.226298 0.726404 -vt 0.232595 0.833928 -vt 0.827401 -0.203566 -vt 0.815734 -0.193731 -vt 0.791936 -0.209528 -vt 0.211966 0.577274 -vt 0.225075 0.596921 -vt 0.212710 0.630415 -vt 0.222327 0.699893 -vt 0.218151 0.778076 -vt 0.213289 0.809408 -vt 0.208878 0.839021 -vt 0.207444 0.543428 -vt 0.202011 0.592898 -vt 0.206448 0.640005 -vt 0.210140 0.749389 -vt 0.194202 0.674248 -vt 0.195077 0.706560 -vt 0.208484 0.783340 -vt 0.190692 0.606683 -vt 0.195488 0.728793 -vt 0.197688 0.826740 -vt 0.182714 0.524430 -vt 0.176765 0.558456 -vt 0.189092 0.571867 -vt 0.191004 0.747602 -vt 0.186043 0.810342 -vt -0.260411 0.492418 -vt 0.185446 1.009227 -vt 0.190952 0.509619 -vt 0.170242 0.549586 -vt 0.186489 0.649830 -vt 0.166141 0.760179 -vt 0.178770 0.782810 -vt 0.177700 0.585539 -vt 0.179215 0.622816 -vt 0.169356 0.731626 -vt 0.172489 0.831443 -vt 0.169944 0.854532 -vt -0.206507 0.493663 -vt 0.163349 0.603317 -vt 0.169881 0.646254 -vt 0.168087 0.679547 -vt 0.162953 0.704746 -vt 0.154161 0.500784 -vt 0.158951 0.509414 -vt 0.150259 0.803494 -vt 0.499117 0.270415 -vt 0.498526 0.250383 -vt -0.429100 1.061867 -vt 0.150190 0.569072 -vt 0.150190 -0.235869 -vt 0.142534 -0.252894 -vt 0.177700 -0.252036 -vt 0.189092 -0.233498 -vt 0.155962 0.628192 -vt 0.148082 0.525778 -vt 0.142534 0.580811 -vt 0.146639 0.594866 -vt 0.147030 0.653221 -vt 0.143635 0.731584 -vt 0.149761 0.825017 -vt 0.145467 0.559464 -vt 0.130470 0.618196 -vt 0.147756 0.697473 -vt 0.138718 0.843761 -vt 0.133445 0.865572 -vt 0.815705 -0.162925 -vt 0.127342 0.549699 -vt 0.145467 -0.227135 -vt 0.128349 0.690191 -vt 0.132327 0.763655 -vt 0.132274 0.500871 -vt 0.125630 0.559423 -vt 0.125630 -0.232625 -vt 0.126775 0.654139 -vt 0.118058 0.715557 -vt 0.113381 0.795826 -vt 0.127329 0.813755 -vt 0.125329 0.834260 -vt 0.118226 -0.254029 -vt 0.118226 0.574506 -vt 0.114061 0.601036 -vt 0.117491 0.734019 -vt 0.115513 0.985005 -vt 0.110059 0.621702 -vt 0.116839 0.674620 -vt 0.107804 0.776993 -vt 0.107095 0.652922 -vt 0.094733 0.743291 -vt 0.094173 0.827712 -vt 0.100735 0.576567 -vt 0.088577 0.683235 -vt 0.085888 0.697489 -vt 0.253841 -0.099387 -vt 0.087081 0.558607 -vt 0.087081 -0.233803 -vt 0.100735 -0.257510 -vt 0.083831 0.625970 -vt 0.093670 0.717937 -vt 0.073591 0.653758 -vt 0.093639 0.759485 -vt 0.095481 0.791921 -vt 0.084858 -0.255821 -vt 0.084858 0.577895 -vt 0.071029 0.608279 -vt 0.074008 0.747119 -vt 0.074899 0.779355 -vt 0.057486 0.793692 -vt 0.053787 0.815377 -vt 0.068369 0.501051 -vt 0.063643 0.581746 -vt 0.063524 0.641455 -vt 0.062416 0.676420 -vt 0.059079 0.714961 -vt 0.391196 0.082601 -vt 0.059176 0.560319 -vt 0.063643 -0.257882 -vt 0.054917 0.696064 -vt -0.298570 0.548840 -vt 0.039116 1.446740 -vt 0.039991 0.844858 -vt -0.113291 0.591784 -vt 0.512792 0.164949 -vt 0.492306 0.165412 -vt 0.493298 0.233082 -vt 0.039544 0.573317 -vt 0.045664 0.612574 -vt 0.044286 0.662467 -vt 0.040900 0.714936 -vt 0.048243 0.765682 -vt 0.218968 -0.034176 -vt 0.207490 -0.020910 -vt 0.488506 0.183614 -vt 0.034872 0.564673 -vt -0.277270 -0.162905 -vt 0.214272 -0.055270 -vt 0.027594 1.468882 -vt 0.030253 1.508087 -vt 0.004078 0.746831 -vt 0.014372 0.768624 -vt 0.021028 0.816258 -vt 0.045727 1.526977 -vt 0.018354 0.596696 -vt 0.022691 0.633511 -vt 0.016604 0.702561 -vt 0.019350 0.715354 -vt -0.273169 0.499728 -vt -0.283176 0.503477 -vt 0.493423 0.080361 -vt 0.490115 0.091708 -vt 0.011805 0.580902 -vt 0.033661 0.191321 -vt 0.000233 0.207554 -vt 0.021577 0.134767 -vt 0.008623 1.440095 -vt 0.005370 0.819101 -vt 0.043008 0.148014 -vt -0.216373 -0.118248 -vt -0.221232 -0.105328 -vt 0.446250 0.105135 -vt 0.422036 0.112870 -vt 0.430762 0.086882 -vt 0.494822 0.109774 -vt -0.267612 0.105876 -vt 0.176179 -0.048767 -vt 0.004399 0.576160 -vt -0.004852 0.591428 -vt -0.006687 0.775312 -vt -0.286541 0.504436 -vt -0.287511 0.521416 -vt -0.267612 0.527392 -vt 0.212033 -0.151693 -vt 0.184061 -0.161326 -vt 0.220088 -0.163181 -vt 0.171841 0.208144 -vt 0.197886 -0.081147 -vt 0.493864 0.098959 -vt -0.020841 0.634346 -vt 0.756633 -0.118983 -vt 0.090630 -0.008657 -vt 0.069428 -0.023846 -vt -0.027036 0.600284 -vt 1.427730 -0.244138 -vt -0.309183 1.498681 -vt -0.252754 0.083852 -vt 0.054273 -0.058884 -vt 0.043719 -0.022072 -vt 0.063862 0.290295 -vt 1.177723 -0.084078 -vt 0.287133 0.168174 -vt 0.248205 0.168167 -vt 0.244746 0.137880 -vt 0.271261 0.200268 -vt 0.227349 0.215804 -vt 0.222408 0.507808 -vt 0.191215 0.507822 -vt 0.299708 0.062993 -vt 0.299545 0.080258 -vt 0.274769 0.094667 -vt 0.455577 0.071375 -vt 0.324035 0.039704 -vt 0.305893 0.039761 -vt 0.079475 0.505069 -vt 0.121581 0.224103 -vt 0.073490 0.171248 -vt 0.306904 0.016542 -vt 0.149123 0.043142 -vt 0.162513 0.058324 -vt 0.155730 0.066782 -vt 0.357721 -0.014736 -vt -0.082125 0.270415 -vt 0.022895 0.292307 -vt 0.045790 0.294612 -vt 0.028697 0.303903 -vt 0.224206 0.237569 -vt 0.196083 0.245797 -vt 0.209117 0.213296 -vt 0.046700 0.215658 -vt 0.491845 0.004891 -vt 0.316351 0.061492 -vt 0.212143 0.191901 -vt 0.207490 0.499569 -vt 0.214989 0.510412 -vt 0.195526 0.501835 -vt 0.233004 0.143013 -vt 0.230918 0.171827 -vt 0.318077 0.096921 -vt 0.244514 0.091187 -vt 0.257947 0.225895 -vt 0.299683 -0.019801 -vt 0.306571 -0.032571 -vt 0.244182 0.245861 -vt 0.222408 0.250015 -vt 0.480210 0.067017 -vt 0.325002 0.009756 -vt -0.325582 -0.271006 -vt -0.337338 -0.253061 -vt 0.490189 0.091336 -vt 0.133576 0.138120 -vt 0.106055 0.095443 -vt 0.343861 0.016671 -vt 0.293941 0.134856 -vt 0.169889 -0.116760 -vt 0.148062 -0.107017 -vt 0.159908 -0.166085 -vt 0.125635 -0.172201 -vt 0.136504 -0.182230 -vt 0.180451 -0.175743 -vt 0.490265 -0.034176 -vt 0.500799 -0.021447 -vt 0.489955 -0.020910 -vt 0.049410 0.244023 -vt 0.179868 0.083661 -vt 0.167985 0.087967 -vt 0.222997 0.168483 -vt 0.182833 0.107000 -vt 0.186383 0.020106 -vt 0.190504 0.039660 -vt 0.177620 0.033571 -vt 0.031216 0.012282 -vt 0.172932 0.115072 -vt -0.072305 0.204303 -vt 0.493545 -0.107242 -vt 0.495303 -0.081147 -vt 0.513797 -0.098190 -vt 0.100984 0.199018 -vt 0.068527 0.208021 -vt 0.109685 0.155402 -vt 0.494602 0.143013 -vt 0.494187 0.171827 -vt 0.503677 0.168483 -vt 0.285049 -0.015777 -vt 0.099035 0.280406 -vt 0.100411 0.264465 -vt 0.097032 0.506854 -vt -0.013481 0.078832 -vt -0.027585 0.051509 -vt 0.702034 0.014729 -vt 0.520271 0.288369 -vt 0.007626 0.066282 -vt -0.474690 0.073524 -vt -0.477750 0.108244 -vt 0.265247 0.239688 -vt 0.986778 0.164958 -vt 0.191215 0.256060 -vt -0.460041 0.135090 -vt 0.121954 0.015151 -vt 0.202840 0.058431 -vt 0.193936 0.200688 -vt -0.046894 0.186003 -vt 0.495287 0.043142 -vt 0.496095 0.066782 -vt 0.510867 0.046426 -vt 0.491388 0.191901 -vt 0.514960 0.171566 -vt 0.135266 0.264493 -vt 0.125194 0.194964 -vt 0.345595 0.062786 -vt 0.222949 0.119372 -vt 0.125635 0.500067 -vt 0.159908 0.500640 -vt 0.150885 0.520375 -vt 0.175768 0.512107 -vt 0.306358 0.135013 -vt 0.069153 0.046201 -vt 0.050279 0.053637 -vt 0.059150 0.009557 -vt -0.062020 0.164949 -vt 0.273106 0.227760 -vt 0.515885 -0.014182 -vt 0.511399 0.007109 -vt 0.080162 0.120041 -vt 0.051668 0.095016 -vt -0.461927 0.173977 -vt 0.490487 0.011782 -vt 0.516859 -0.112641 -vt 0.123262 0.274687 -vt 0.252362 -0.046610 -vt -0.449632 0.183098 -vt 0.275474 -0.148003 -vt 0.159087 -0.019105 -vt 0.154372 0.011782 -vt 0.188953 0.068031 -vt -0.431947 0.146275 -vt -0.307129 -0.096055 -vt -0.316756 -0.075557 -vt -0.322382 -0.083234 -vt 0.514494 0.154740 -vt 0.326480 0.143052 -vt 0.158095 0.253604 -vt 0.491995 -0.130449 -vt -0.460307 0.216613 -vt -0.192975 0.245741 -vt 0.158095 0.502047 -vt 0.135210 -0.014182 -vt -0.002907 0.137568 -vt -0.417243 0.163589 -vt 1.027418 0.216613 -vt 0.159354 0.153492 -vt 0.151898 0.183019 -vt 0.025410 0.251640 -vt -0.005949 0.294031 -vt 0.156514 0.116823 -vt 0.098801 0.045950 -vt -0.097950 0.250383 -vt -0.444734 0.225024 -vt 0.396575 0.134160 -vt 0.370191 0.107124 -vt 0.147298 -0.135607 -vt 0.126675 -0.119298 -vt 0.108236 -0.150561 -vt 0.133932 0.528487 -vt 0.133932 -0.151097 -vt -0.407703 0.145451 -vt -0.454877 0.248040 -vt 0.205615 0.116391 -vt 0.196864 0.103195 -vt -0.393317 -0.014037 -vt -0.077009 -0.003553 -vt 0.260502 -0.031200 -vt 0.246313 -0.035879 -vt 0.169273 -0.147777 -vt -0.422466 0.200630 -vt 0.012784 0.104194 -vt 0.246313 0.498863 -vt 0.260502 0.508435 -vt 0.218968 0.499879 -vt 0.015506 0.306083 -vt 0.015506 0.508278 -vt -0.398422 0.183922 -vt -0.419109 0.229007 -vt -0.373480 -0.006826 -vt -0.027182 0.196445 -vt -0.392343 0.163292 -vt -0.415741 0.247227 -vt -0.418328 0.265447 -vt -0.418328 1.041419 -vt -0.454877 1.050996 -vt 0.378766 0.005307 -vt -0.390332 0.012230 -vt 0.029795 0.078587 -vt -0.406074 0.052759 -vt -0.404545 0.098344 -vt -0.424941 0.057573 -vt 0.362970 0.043539 -vt -0.316840 1.041249 -vt 0.714744 0.026115 -vt 0.366419 0.535255 -vt 0.366419 0.127211 -vt 0.702365 -0.004009 -vt -0.389774 0.207223 -vt -0.364690 0.026115 -vt -0.388637 0.049632 -vt 0.734985 0.093694 -vt -0.376009 0.179587 -vt -0.052384 0.132267 -vt 0.989467 0.179587 -vt -0.374461 0.241856 -vt -0.353214 -0.004009 -vt -0.362129 0.195786 -vt -0.365731 0.201761 -vt -0.389088 0.255488 -vt -0.389088 1.024258 -vt -0.389635 1.039938 -vt 0.175768 0.260018 -vt 0.155627 0.263418 -vt -0.375573 0.093694 -vt -0.391142 0.068463 -vt 0.748765 0.131633 -vt 0.290508 -0.083234 -vt 0.282415 -0.101267 -vt -0.056580 0.222842 -vt -0.361067 0.048178 -vt -0.372961 0.163658 -vt -0.403670 0.145326 -vt -0.388219 0.128671 -vt 1.034147 0.282324 -vt 1.045900 0.273249 -vt 1.030325 0.262873 -vt 0.712236 0.048178 -vt 0.278014 -0.127665 -vt 0.972654 0.195496 -vt 0.988572 0.195786 -vt 0.216400 0.154740 -vt 0.214877 0.171566 -vt -0.329318 0.016373 -vt -0.354482 0.014729 -vt -0.341009 0.033470 -vt -0.356225 0.077449 -vt 0.727823 0.118056 -vt -0.362129 0.998185 -vt -0.365731 1.003518 -vt -0.343451 0.198773 -vt -0.349438 0.239225 -vt -0.362508 0.259116 -vt -0.362508 1.022393 -vt -0.374857 0.282324 -vt -0.389635 0.262873 -vt -0.319632 -0.003303 -vt 0.691066 0.061613 -vt 0.714591 0.077449 -vt -0.358986 0.118056 -vt -0.346112 0.204823 -vt -0.343772 0.273967 -vt -0.357332 0.290687 -vt 0.094759 0.228587 -vt 0.677831 0.016373 -vt 0.680549 0.037865 -vt 0.693841 0.033470 -vt -0.338127 0.101307 -vt -0.015585 -0.201646 -vt -0.357332 1.042465 -vt -0.332868 -0.056360 -vt -0.332837 -0.038782 -vt -0.342339 -0.048127 -vt 0.487040 0.071550 -vt 0.489779 0.044653 -vt -0.293784 -0.028260 -vt 0.707799 0.101307 -vt 0.384240 0.025263 -vt -0.321013 0.023207 -vt -0.302338 0.045088 -vt 0.485829 -0.038782 -vt -0.289273 0.003160 -vt -0.314602 0.028639 -vt -0.329934 0.037865 -vt -0.327324 0.076165 -vt -0.342744 0.061613 -vt -0.334624 0.152032 -vt -0.373780 0.131633 -vt -0.348724 0.175502 -vt -0.330277 0.200099 -vt 0.352471 0.080352 -vt -0.283983 -0.021880 -vt -0.304269 0.044411 -vt -0.313417 0.125698 -vt 0.349555 0.115239 -vt -0.330374 0.296401 -vt -0.296361 -0.082615 -vt -0.300808 -0.103679 -vt -0.301719 -0.051178 -vt -0.323558 -0.015106 -vt -0.340741 -0.016265 -vt -0.248073 -0.045524 -vt 0.484922 -0.154149 -vt -0.310526 0.076406 -vt -0.325741 0.188327 -vt -0.274477 -0.081387 -vt -0.305028 0.019602 -vt -0.334135 0.004891 -vt -0.274763 0.023052 -vt 0.169273 0.525493 -vt 0.511946 0.077737 -vt 0.509405 -0.138929 -vt 0.488876 -0.151693 -vt 0.155958 -0.042759 -vt -0.293480 0.142334 -vt -0.286541 0.109774 -vt -0.276579 0.115870 -vt -0.280510 0.061048 -vt -0.294753 0.093852 -vt -0.293808 0.157601 -vt -0.325741 0.758084 -vt 0.499589 0.287881 -vt -0.278328 0.001277 -vt -0.249728 -0.015112 -vt -0.260622 0.038612 -vt -0.237683 -0.126963 -vt -0.247494 -0.128386 -vt -0.253367 -0.047990 -vt -0.280893 0.119116 -vt -0.227174 -0.135771 -vt -0.224808 -0.111546 -vt -0.230676 -0.071676 -vt -0.268243 0.090255 -vt -0.239447 0.059441 -vt 0.496977 0.045088 -vt -0.307129 0.493598 -vt -0.322382 0.497594 -vt -0.206507 -0.134655 -vt -0.274501 0.182150 -vt -0.210526 -0.079135 -vt -0.242898 -0.040087 -vt -0.244134 0.014285 -vt 0.484563 -0.103679 -vt 0.483985 -0.096055 -vt -0.262957 0.175051 -vt -0.274501 0.725951 -vt -0.191031 -0.143808 -vt -0.195868 -0.119710 -vt 0.150885 -0.157298 -vt -0.175952 -0.154149 -vt -0.180315 -0.130765 -vt -0.254703 0.070592 -vt -0.283176 0.098959 -vt -0.143738 -0.235404 -vt -0.149343 -0.203638 -vt -0.153481 -0.210376 -vt 0.482268 -0.203638 -vt 0.483454 -0.170405 -vt -0.164931 -0.178180 -vt -0.162177 -0.170405 -vt -0.198165 -0.001543 -vt -0.273169 0.091708 -vt 1.240574 -0.018809 -vt 1.237839 -0.030160 -vt -0.286674 0.170154 -vt -0.296409 0.180275 -vt -0.303640 0.159751 -vt -0.233727 0.198954 -vt -0.233727 0.727925 -vt -0.121442 -0.229247 -vt -0.131062 -0.247149 -vt -0.157942 -0.144341 -vt -0.219664 0.048173 -vt -0.119248 -0.257699 -vt -0.106716 -0.258188 -vt -0.164236 -0.092388 -vt -0.180091 -0.061478 -vt -0.185426 -0.026170 -vt -0.206337 0.023921 -vt -0.232322 0.085787 -vt -0.245985 0.123941 -vt -0.258065 0.161978 -vt -0.293003 0.202147 -vt -0.228609 0.172813 -vt -0.125215 -0.160943 -vt 0.283410 0.074944 -vt -0.093935 -0.264288 -vt -0.087608 -0.246071 -vt -0.144440 -0.093219 -vt -0.220967 0.071261 -vt -0.279719 0.218106 -vt -0.283956 0.229058 -vt -0.100226 -0.193352 -vt -0.162979 -0.052387 -vt -0.187398 0.010493 -vt -0.261215 0.224527 -vt -0.070706 -0.258271 -vt -0.130531 -0.119127 -vt -0.171394 -0.015525 -vt -0.181745 -0.002376 -vt -0.213491 0.066514 -vt -0.209650 0.086484 -vt -0.223842 0.127010 -vt -0.117226 -0.157094 -vt -0.130789 -0.096104 -vt -0.203541 0.706881 -vt -0.192575 0.739706 -vt -0.108283 -0.151895 -vt -0.092982 -0.177769 -vt -0.117448 -0.126449 -vt -0.125640 -0.067959 -vt -0.119793 -0.053955 -vt -0.148228 -0.026807 -vt -0.161216 -0.001820 -vt -0.262726 0.242559 -vt -0.076319 -0.201733 -vt 0.494165 -0.126449 -vt 0.500428 -0.106120 -vt 0.486020 -0.096104 -vt -0.219863 0.193029 -vt -0.262726 0.502037 -vt -0.283956 0.505741 -vt -0.065228 -0.186772 -vt -0.080256 -0.157815 -vt -0.091718 -0.142401 -vt 0.514944 -0.107100 -vt 0.492842 -0.151895 -vt 0.514473 -0.142401 -vt -0.139861 -0.009446 -vt -0.171394 0.491928 -vt -0.139861 0.494329 -vt -0.161216 0.506873 -vt -0.196560 0.121661 -vt -0.192489 0.141131 -vt -0.248689 0.257392 -vt 0.644601 0.015970 -vt -0.040673 0.309479 -vt -0.044115 -0.207518 -vt -0.063629 -0.167853 -vt -0.065228 0.505303 -vt -0.063629 0.525443 -vt -0.092982 0.498022 -vt -0.095189 -0.093275 -vt -0.105512 -0.107100 -vt -0.025824 -0.192456 -vt -0.047562 0.521430 -vt -0.068211 -0.143107 -vt -0.105955 -0.034881 -vt -0.118932 0.008723 -vt -0.196320 0.194230 -vt -0.040592 -0.166217 -vt -0.067539 -0.084863 -vt -0.106336 0.002672 -vt -0.025824 0.502029 -vt -0.047562 -0.178499 -vt -0.081656 -0.066867 -vt -0.154208 0.151352 -vt -0.154277 0.134230 -vt 0.371902 0.136601 -vt -0.025373 0.524400 -vt -0.025373 -0.178029 -vt -0.044845 -0.118027 -vt -0.086511 -0.022483 -vt -0.107727 0.020227 -vt -0.061267 -0.058292 -vt -0.089742 0.044529 -vn -0.0198 0.0994 -0.9948 -vn -0.9845 0.0661 -0.1627 -vn -0.2253 0.9711 -0.0792 -vn -0.2201 0.9696 -0.1073 -vn -0.3579 0.9238 0.1360 -vn -0.1265 0.9836 -0.1283 -vn -0.0848 0.9237 0.3736 -vn 0.1444 -0.9378 -0.3156 -vn 0.0035 0.7173 0.6968 -vn -0.3696 0.7375 0.5653 -vn 0.2809 0.9566 -0.0781 -vn -0.8285 -0.5415 -0.1428 -vn 0.1251 0.4835 0.8664 -vn -0.4242 0.8184 0.3877 -vn -0.1184 0.7292 0.6740 -vn -0.1596 0.9871 0.0110 -vn -0.8462 0.4448 0.2936 -vn 0.3318 0.9426 0.0361 -vn -0.4863 0.8671 0.1080 -vn -0.3425 0.9017 0.2638 -vn 0.4989 0.8319 0.2430 -vn -0.1017 0.9761 0.1921 -vn -0.8661 0.4999 -0.0094 -vn 0.5034 0.8322 0.2322 -vn -0.6061 0.7836 -0.1363 -vn -0.5523 0.3505 -0.7564 -vn -0.0048 -0.9999 -0.0108 -vn -0.4214 -0.4880 0.7644 -vn 0.3606 0.9320 0.0370 -vn -0.0299 0.9940 0.1049 -vn -0.9153 -0.4010 0.0381 -vn -0.9271 0.1943 0.3206 -vn -0.3584 0.8615 0.3596 -vn 0.6509 0.6415 0.4059 -vn -0.9903 -0.0967 -0.0998 -vn -0.2717 0.9434 0.1903 -vn -0.0338 -0.9524 -0.3029 -vn -0.1777 0.9736 -0.1434 -vn -0.9290 0.0807 -0.3612 -vn -0.3019 0.8963 0.3249 -vn -0.9484 -0.2350 -0.2128 -vn -0.3525 0.8529 0.3851 -vn -0.2653 0.9440 0.1963 -vn -0.3007 0.8654 0.4008 -vn -0.2799 0.8966 0.3433 -vn 0.2313 -0.9638 -0.1327 -vn -0.9304 -0.3641 0.0427 -vn -0.9567 0.2019 -0.2095 -vn -0.9679 0.1336 -0.2128 -vn -0.9134 -0.4028 -0.0586 -vn 0.3034 0.8037 0.5120 -vn -0.2786 0.8990 0.3380 -vn -0.7854 -0.2971 0.5430 -vn 0.3555 0.9150 0.1907 -vn 0.7000 0.4138 -0.5820 -vn -0.2175 0.8512 0.4777 -vn -0.2252 0.9064 0.3573 -vn -0.1326 0.9904 0.0400 -vn 0.6840 0.2154 -0.6970 -vn 0.6227 0.7658 0.1607 -vn 0.7301 0.6390 0.2421 -vn 0.9100 0.4146 0.0012 -vn 0.7008 0.4631 0.5425 -vn 0.7974 0.5093 0.3237 -vn 0.0156 0.7799 0.6257 -vn -0.3712 0.8801 0.2960 -vn 0.6738 0.6597 0.3327 -vn 0.7915 0.6053 0.0845 -vn 0.1138 0.9238 0.3656 -vn 0.3946 0.7157 -0.5763 -vn 0.1990 0.8968 0.3952 -vn -0.9862 -0.1478 -0.0753 -vn -0.0285 -0.9994 0.0219 -vn -0.4042 -0.1584 0.9008 -vn -0.0894 0.9552 0.2820 -vn -0.8620 0.4958 -0.1060 -vn -0.9362 0.0175 -0.3510 -vn -0.1812 0.7204 0.6694 -vn -0.1925 0.9652 0.1772 -vn -0.8981 0.3734 -0.2325 -vn -0.6761 -0.0227 -0.7365 -vn 0.7450 0.6325 0.2119 -vn -0.1593 -0.4949 0.8542 -vn -0.1560 -0.3619 0.9191 -vn -0.2111 0.3597 0.9089 -vn -0.9910 -0.1311 0.0281 -vn -0.8086 -0.5883 -0.0109 -vn -0.4042 0.8281 0.3885 -vn -0.1260 0.6372 0.7603 -vn -0.3938 -0.5638 -0.7260 -vn -0.0575 0.9177 0.3932 -vn -0.1953 0.3646 0.9105 -vn -0.2758 0.6029 0.7486 -vn -0.0639 0.9835 0.1693 -vn -0.3426 0.7529 0.5619 -vn -0.9986 -0.0331 0.0415 -vn -0.8533 0.2191 -0.4732 -vn -0.4227 0.8143 0.3977 -vn -0.1371 -0.4890 -0.8614 -vn -0.0346 0.8973 0.4400 -vn 0.0134 0.9995 0.0280 -vn 0.0231 0.9975 0.0661 -vn -0.9412 -0.3358 0.0373 -vn -0.2438 0.3809 0.8919 -vn 0.0820 0.9855 -0.1483 -vn -0.8836 -0.4675 -0.0274 -vn 0.0913 -0.5981 -0.7962 -vn 0.1026 -0.1814 0.9780 -vn -0.0940 0.5360 0.8390 -vn -0.9622 0.1105 0.2490 -vn -0.0201 -0.5679 -0.8228 -vn -0.6688 0.2351 -0.7053 -vn -0.5337 0.0787 -0.8420 -vn -0.3575 -0.1299 -0.9248 -vn -0.1209 0.9856 0.1180 -vn -0.1938 0.8634 0.4658 -vn 0.4218 0.7618 0.4916 -vn -0.8781 -0.1769 -0.4446 -vn -0.1822 0.8237 0.5370 -vn -0.5542 0.2812 -0.7834 -vn -0.2515 0.2126 -0.9442 -vn 0.4319 -0.7045 -0.5631 -vn -0.5215 0.6821 -0.5126 -vn 0.0253 0.3374 0.9410 -vn -0.0953 0.6816 0.7255 -vn 0.9738 -0.1576 -0.1642 -vn 0.5621 -0.8028 0.1988 -vn -0.0239 0.9603 0.2779 -vn -0.0379 0.7482 0.6624 -vn -0.9385 0.1265 0.3212 -vn -0.5114 0.1241 -0.8503 -vn 0.0803 0.6060 0.7914 -vn -0.0716 0.9956 -0.0598 -vn 0.0253 -0.9993 -0.0273 -vn -0.2040 0.1025 0.9736 -vn 0.0340 -0.1902 0.9812 -vn 0.2878 0.1797 0.9407 -vn 0.2891 0.1627 0.9434 -vn 0.1120 -0.7109 -0.6943 -vn 0.2409 0.4884 0.8387 -vn 0.5246 -0.8260 0.2063 -vn 0.8664 -0.0204 0.4990 -vn 0.9906 0.0099 -0.1362 -vn -0.0601 0.9981 -0.0120 -vn -0.2030 0.8540 0.4791 -vn -0.9823 -0.1661 -0.0867 -vn 0.3640 -0.9207 0.1405 -vn 0.2792 0.1008 -0.9549 -vn -0.1542 -0.1997 0.9677 -vn -0.1942 0.1004 0.9758 -vn 0.1894 0.4911 0.8502 -vn 0.7746 0.0744 -0.6281 -vn -0.1677 0.9848 -0.0455 -vn -0.9587 0.2533 0.1291 -vn 0.9762 -0.2093 -0.0561 -vn -0.3138 0.1294 0.9406 -vn -0.1061 -0.1200 0.9871 -vn 0.0874 0.2014 0.9756 -vn 0.1783 0.3306 0.9268 -vn 0.1805 0.2390 0.9541 -vn 0.8962 -0.4427 0.0287 -vn -0.0600 -0.9959 0.0676 -vn -0.8126 -0.4008 -0.4232 -vn 0.8659 0.4855 0.1201 -vn 0.8240 0.4964 0.2731 -vn 0.0600 0.9830 -0.1736 -vn -0.9533 0.2480 -0.1722 -vn 0.1633 0.9846 -0.0626 -vn 0.0297 0.8526 0.5217 -vn 0.5719 -0.7992 -0.1851 -vn 0.2023 0.5149 0.8330 -vn 0.1725 0.5743 0.8003 -vn 0.3322 -0.8671 -0.3712 -vn 0.8893 0.4178 -0.1859 -vn 0.9925 -0.1220 0.0003 -vn 0.0258 -0.1474 -0.9887 -vn -0.0961 0.9766 0.1925 -vn -0.9943 -0.0555 -0.0915 -vn -0.3163 0.3935 0.8632 -vn -0.1275 0.1345 0.9827 -vn -0.3905 0.5747 0.7192 -vn -0.0019 -0.5426 -0.8400 -vn -0.1654 -0.3895 0.9060 -vn -0.2138 0.1422 0.9665 -vn -0.1465 0.9802 -0.1329 -vn -0.1369 0.9853 -0.1024 -vn -0.3401 0.3502 0.8728 -vn -0.3796 -0.2296 -0.8962 -vn -0.1223 0.0171 0.9923 -vn -0.2315 0.5410 0.8085 -vn 0.1601 -0.0073 0.9871 -vn -0.2489 -0.6304 0.7353 -vn -0.0473 -0.6915 0.7209 -vn -0.0050 -0.7827 0.6224 -vn 0.0276 -0.0227 0.9994 -vn -0.1456 -0.9707 -0.1911 -vn 0.1939 0.4001 0.8957 -vn 0.7675 -0.3508 -0.5366 -vn -0.8433 0.5221 0.1272 -vn -0.2617 0.9613 0.0858 -vn -0.6812 -0.0830 -0.7274 -vn 0.0059 0.9265 0.3762 -vn 0.0051 0.8474 0.5310 -vn -0.1596 -0.0257 0.9868 -vn -0.0405 0.0988 0.9943 -vn 0.2429 0.5973 0.7644 -vn 0.6721 -0.6985 0.2456 -vn -0.9770 0.0813 -0.1969 -vn 0.5622 -0.7486 -0.3514 -vn 0.9482 -0.1975 -0.2486 -vn 0.8934 -0.3690 -0.2561 -vn -0.0754 0.9834 0.1650 -vn -0.1925 0.9792 -0.0641 -vn 0.2197 0.9742 -0.0520 -vn -0.5060 0.2609 0.8221 -vn -0.3379 0.3980 0.8529 -vn -0.1253 0.1258 0.9841 -vn -0.0797 0.2608 0.9621 -vn 0.3466 -0.0370 0.9373 -vn 0.1910 -0.5881 0.7859 -vn 0.0408 0.5857 0.8095 -vn 0.0508 -0.8347 0.5484 -vn 0.1090 -0.0731 0.9914 -vn -0.0613 -0.7950 0.6036 -vn 0.1068 -0.0678 0.9920 -vn 0.5161 -0.7289 -0.4498 -vn 0.4605 -0.4049 0.7899 -vn 0.9971 0.0459 -0.0600 -vn 0.9101 -0.1518 -0.3856 -vn -0.2655 0.9619 -0.0651 -vn -0.8098 0.3786 -0.4482 -vn 0.3651 -0.3169 -0.8754 -vn -0.0600 0.0825 0.9948 -vn -0.1254 0.2448 0.9614 -vn -0.3855 0.3778 0.8418 -vn -0.1085 0.1284 0.9858 -vn 0.2797 0.6658 0.6918 -vn 0.1919 -0.2499 0.9491 -vn 0.6274 -0.0451 0.7774 -vn -0.0417 0.2769 0.9600 -vn 0.2551 0.3557 0.8991 -vn -0.0617 -0.4667 0.8823 -vn 0.0086 0.0417 0.9991 -vn 0.2377 0.1783 0.9548 -vn 0.0851 -0.1050 0.9908 -vn 0.3136 -0.1364 0.9397 -vn 0.4614 -0.4284 0.7769 -vn 0.5660 0.4682 0.6786 -vn 0.9746 0.2128 -0.0692 -vn 0.9992 0.0246 -0.0325 -vn 0.8358 0.5135 -0.1941 -vn -0.2358 0.8914 0.3870 -vn -0.4053 0.8090 0.4256 -vn -0.3557 0.8981 0.2585 -vn -0.3892 -0.1014 0.9156 -vn -0.3939 0.2959 0.8702 -vn -0.3649 0.0504 0.9297 -vn -0.3144 0.4312 0.8457 -vn 0.4359 -0.0710 0.8972 -vn -0.0239 -0.5276 0.8491 -vn 0.1876 -0.5856 0.7886 -vn -0.0432 0.5893 0.8068 -vn -0.3836 -0.5187 0.7641 -vn 0.1723 -0.2285 0.9582 -vn 0.4310 -0.1576 0.8885 -vn 0.0875 0.2005 0.9758 -vn 0.9726 -0.1604 -0.1682 -vn 0.9271 0.0991 -0.3616 -vn 0.5277 0.2753 0.8036 -vn 0.8468 -0.2834 -0.4501 -vn 0.2500 0.8444 0.4738 -vn 0.3360 0.7935 0.5074 -vn 0.2037 0.7627 0.6139 -vn -0.4924 -0.8704 -0.0061 -vn -0.2266 -0.1933 0.9546 -vn -0.3113 0.1744 0.9342 -vn -0.3934 0.2998 0.8691 -vn 0.0035 -0.2986 0.9544 -vn -0.1128 -0.9933 0.0263 -vn 0.5150 -0.5433 -0.6631 -vn -0.2919 0.1249 0.9483 -vn 0.2419 0.8243 0.5119 -vn 0.1613 0.4898 0.8568 -vn 0.1307 0.4629 0.8767 -vn -0.7681 -0.3987 0.5011 -vn -0.2908 0.7818 0.5516 -vn -0.1513 -0.1845 0.9711 -vn -0.1842 0.4257 0.8859 -vn 0.2851 -0.2806 0.9165 -vn -0.1910 -0.0261 0.9812 -vn 0.2985 -0.4851 0.8220 -vn 0.2587 0.2222 0.9401 -vn 0.2429 0.2161 0.9457 -vn 0.2380 0.9618 0.1349 -vn -0.8203 -0.5167 0.2454 -vn -0.2804 -0.3691 0.8861 -vn -0.1691 0.0813 0.9822 -vn -0.0639 0.0870 0.9942 -vn -0.1027 0.4280 0.8979 -vn -0.1498 0.4651 0.8725 -vn -0.1105 0.5070 0.8549 -vn 0.9112 0.4076 0.0599 -vn 0.0449 0.1939 0.9800 -vn 0.1344 0.3017 0.9439 -vn 0.5094 -0.8379 -0.1961 -vn 0.2653 0.7476 0.6089 -vn 0.7106 0.1625 -0.6846 -vn 0.1017 0.4673 0.8782 -vn 0.0288 0.5395 0.8415 -vn -0.9338 0.0919 -0.3459 -vn -0.3566 0.9340 0.0218 -vn -0.9113 -0.2841 0.2980 -vn -0.2187 0.8430 0.4914 -vn 0.0815 -0.3997 0.9130 -vn 0.1267 -0.2343 0.9639 -vn 0.1550 -0.2885 0.9448 -vn -0.2106 0.2143 0.9538 -vn -0.2361 0.5512 0.8003 -vn -0.1632 0.4639 0.8707 -vn 0.9789 -0.0203 -0.2031 -vn 0.3526 -0.4659 0.8116 -vn 0.0932 0.4319 0.8971 -vn -0.9838 -0.1345 -0.1186 -vn 0.4677 0.7502 0.4673 -vn -0.1681 0.9829 0.0749 -vn -0.2411 0.9498 -0.1994 -vn 0.1526 0.1276 0.9800 -vn -0.0948 0.4301 0.8978 -vn -0.0394 0.1812 0.9827 -vn -0.1378 0.4249 0.8947 -vn 0.0401 0.5318 0.8459 -vn 0.1800 0.2635 0.9477 -vn 0.1100 0.0690 0.9915 -vn 0.7474 -0.5882 -0.3088 -vn 0.0044 -0.7743 0.6327 -vn -0.2857 0.8997 0.3299 -vn -0.2716 -0.2957 0.9159 -vn -0.3093 -0.1905 0.9317 -vn -0.2299 -0.0444 0.9722 -vn -0.0604 0.4682 0.8816 -vn 0.0095 0.0432 0.9990 -vn -0.2772 0.7055 0.6523 -vn 0.0905 0.1688 0.9815 -vn 0.1486 0.3338 0.9309 -vn -0.7090 -0.2246 -0.6684 -vn -0.0422 0.5941 0.8033 -vn -0.0785 -0.7052 0.7047 -vn 0.4918 -0.8397 -0.2304 -vn -0.3150 0.7113 0.6284 -vn 0.8866 0.2722 -0.3739 -vn -0.4967 0.8604 0.1141 -vn -0.1636 0.9258 0.3409 -vn 0.0853 -0.3245 0.9420 -vn 0.2539 -0.1017 0.9619 -vn -0.0631 -0.0739 0.9953 -vn -0.1519 0.1332 0.9794 -vn -0.0885 0.5627 0.8219 -vn 0.1097 0.1204 0.9866 -vn 0.2373 0.6021 0.7623 -vn -0.1057 0.6888 0.7172 -vn 0.2419 0.4968 0.8335 -vn 0.3424 -0.7387 0.5807 -vn -0.2673 -0.6113 0.7449 -vn -0.2892 0.8561 0.4282 -vn 0.0026 0.9869 0.1614 -vn -0.1223 -0.5486 -0.8271 -vn -0.3328 -0.3978 -0.8550 -vn -0.3087 0.1234 -0.9431 -vn -0.0128 -0.1391 0.9902 -vn -0.0178 0.1646 0.9862 -vn -0.0755 0.3593 0.9302 -vn -0.0906 0.5675 0.8184 -vn 0.3073 -0.3557 0.8826 -vn 0.2395 -0.7756 -0.5840 -vn 0.9142 0.2209 -0.3398 -vn 0.0052 -0.7672 0.6413 -vn -0.0987 -0.6488 0.7546 -vn -0.2384 0.4493 0.8610 -vn -0.2030 -0.8720 -0.4455 -vn 0.5631 -0.7971 -0.2182 -vn -0.4902 0.8586 0.1501 -vn -0.1699 0.8915 0.4200 -vn 0.2644 0.8477 0.4599 -vn -0.5225 0.1289 -0.8429 -vn 0.0251 -0.5544 0.8319 -vn -0.4349 -0.1038 0.8945 -vn -0.3735 -0.0131 0.9275 -vn -0.0277 -0.1955 0.9803 -vn 0.0740 0.5238 0.8486 -vn -0.0823 0.0365 0.9959 -vn 0.5549 -0.1573 0.8169 -vn 0.0947 0.4090 0.9076 -vn -0.0170 0.0177 0.9997 -vn 0.1862 0.4768 0.8591 -vn -0.6428 0.2115 -0.7362 -vn -0.2419 -0.1077 -0.9643 -vn 0.0320 -0.5724 0.8194 -vn 0.1882 -0.8904 0.4145 -vn -0.1311 -0.3327 0.9339 -vn -0.1802 -0.2721 0.9452 -vn -0.2799 0.0478 0.9588 -vn -0.2834 0.0292 0.9586 -vn 0.1002 0.4239 0.9001 -vn 0.0198 0.6256 0.7799 -vn -0.0094 0.5602 0.8283 -vn 0.1969 0.0139 0.9803 -vn 0.0706 0.7120 0.6986 -vn 0.1458 0.6186 0.7721 -vn 0.8615 0.3833 -0.3329 -vn 0.2131 0.7505 0.6256 -vn 0.2363 -0.1613 0.9582 -vn 0.6266 0.4288 -0.6508 -vn 0.1410 0.1896 0.9717 -vn -0.2510 0.1472 0.9567 -vn 0.7482 -0.3386 -0.5705 -vn 0.0246 -0.6697 -0.7422 -vn -0.9995 -0.0285 0.0161 -vn -0.0908 0.1741 0.9805 -vn -0.1351 0.2721 0.9527 -vn -0.0117 0.4408 0.8975 -vn -0.0799 0.5570 0.8267 -vn -0.1597 0.3388 0.9272 -vn -0.2969 0.8135 0.5000 -vn 0.0688 -0.4473 0.8917 -vn -0.1043 -0.0765 0.9916 -vn 0.2524 0.3023 0.9192 -vn 0.2452 0.3474 0.9051 -vn -0.2656 -0.4024 0.8761 -vn 0.0746 0.7138 0.6964 -vn 0.0493 0.6822 0.7295 -vn 0.1095 0.4562 0.8831 -vn 0.5339 0.3619 0.7642 -vn 0.9130 0.3608 0.1903 -vn -0.0393 -0.4695 -0.8820 -vn -0.4796 0.7115 -0.5136 -vn 0.1838 0.1026 0.9776 -vn -0.6022 -0.1635 0.7814 -vn -0.5086 -0.6910 -0.5137 -vn -0.3960 -0.3979 -0.8275 -vn 0.1706 -0.4417 0.8808 -vn 0.2434 -0.1303 0.9611 -vn -0.0098 0.1496 0.9887 -vn 0.1714 -0.0818 0.9818 -vn 0.3404 0.2166 0.9150 -vn 0.3044 0.1501 0.9406 -vn 0.2911 0.3840 0.8762 -vn 0.0722 0.5845 0.8082 -vn 0.4714 0.1444 0.8700 -vn -0.0844 -0.7604 0.6439 -vn -0.1321 0.0036 0.9912 -vn -0.0624 -0.0849 0.9944 -vn 0.9832 0.0484 -0.1763 -vn -0.0212 -0.5308 0.8473 -vn 0.2010 0.0147 0.9795 -vn 0.7221 -0.3245 -0.6110 -vn 0.5703 -0.7989 0.1913 -vn -0.9460 -0.2607 -0.1926 -vn 0.6778 -0.6413 -0.3596 -vn 0.1012 0.8627 0.4955 -vn -0.4494 -0.7172 0.5327 -vn -0.2352 -0.3796 -0.8948 -vn -0.2063 -0.2974 0.9322 -vn 0.3038 -0.2475 0.9200 -vn 0.1747 0.2159 0.9606 -vn 0.0872 0.2582 0.9622 -vn 0.0522 0.3190 0.9463 -vn 0.1064 0.3545 0.9290 -vn -0.0296 0.2106 0.9771 -vn -0.1871 0.8010 0.5687 -vn 0.1972 0.3676 0.9088 -vn 0.6546 0.6566 0.3746 -vn 0.6467 0.7022 0.2979 -vn 0.2797 0.0926 -0.9556 -vn -0.1356 0.1625 0.9773 -vn -0.2293 -0.0855 0.9696 -vn -0.2571 0.2519 0.9330 -vn -0.2987 0.2834 0.9113 -vn -0.2157 0.4714 0.8551 -vn 0.3450 0.4818 0.8055 -vn 0.0198 0.5738 0.8187 -vn 0.0164 0.9913 0.1305 -vn 0.0043 -0.2025 0.9793 -vn 0.0766 -0.7412 -0.6669 -vn -0.1135 -0.1437 0.9831 -vn 0.1439 0.2525 0.9568 -vn 0.1341 0.2529 0.9581 -vn -0.2449 -0.9292 -0.2768 -vn 0.2096 0.7227 0.6586 -vn -0.0692 0.6617 0.7466 -vn -0.4299 0.8108 0.3973 -vn -0.3401 0.9025 0.2643 -vn 0.3651 -0.8916 -0.2678 -vn -0.1981 -0.2965 0.9343 -vn 0.0005 -0.3297 0.9441 -vn -0.0135 -0.0558 0.9984 -vn 0.0142 0.3437 0.9390 -vn 0.2504 0.3609 0.8983 -vn 0.3240 -0.4169 0.8492 -vn 0.1972 0.8912 0.4085 -vn 0.0090 0.2904 0.9569 -vn 0.2534 0.4960 0.8306 -vn -0.2055 0.1476 0.9675 -vn 0.1535 0.0945 0.9836 -vn 0.2436 0.4628 0.8523 -vn 0.2056 -0.4472 -0.8705 -vn 0.3030 0.6395 0.7065 -vn -0.1865 -0.0603 0.9806 -vn -0.2681 0.9603 0.0769 -vn -0.4209 -0.5335 -0.7337 -vn -0.0213 -0.0305 0.9993 -vn 0.1003 -0.2202 0.9703 -vn 0.0576 -0.3687 0.9278 -vn 0.0327 0.3502 0.9361 -vn -0.0669 -0.2202 0.9732 -vn 0.0545 0.5690 0.8205 -vn 0.0380 0.4980 0.8663 -vn 0.0185 0.5680 0.8228 -vn -0.2599 -0.2886 0.9215 -vn -0.2605 0.5672 0.7813 -vn 0.6700 -0.6863 0.2831 -vn -0.1458 -0.7932 0.5912 -vn 0.3722 -0.0841 0.9243 -vn -0.1993 0.7590 0.6198 -vn -0.2677 0.6408 0.7196 -vn -0.9028 -0.3868 0.1880 -vn -0.9589 -0.2790 -0.0523 -vn -0.9994 -0.0293 0.0163 -vn 0.0601 0.9830 -0.1736 -vn 0.1355 -0.4885 0.8620 -vn 0.1321 -0.4609 0.8776 -vn 0.1537 -0.3447 0.9260 -vn 0.2794 -0.0138 0.9601 -vn -0.2879 0.2993 0.9097 -vn -0.2814 0.2949 0.9132 -vn -0.0526 0.6419 0.7650 -vn 0.1978 0.6677 0.7176 -vn 0.2712 -0.5808 0.7675 -vn 0.2326 0.4410 0.8668 -vn -0.2789 -0.6506 0.7063 -vn 0.4330 -0.3726 0.8208 -vn 0.2723 0.2799 0.9206 -vn 0.2197 0.4408 0.8703 -vn 0.8085 0.4277 0.4041 -vn -0.5177 0.4454 0.7305 -vn -0.5580 0.1496 0.8162 -vn 0.4287 -0.8876 -0.1685 -vn 0.2446 -0.0560 0.9680 -vn 0.2869 -0.0205 0.9577 -vn 0.1988 0.2970 0.9340 -vn 0.3907 -0.1197 0.9127 -vn 0.2796 0.3322 0.9008 -vn 0.2564 0.4808 0.8385 -vn 0.3995 0.5862 0.7048 -vn 0.0495 0.1350 -0.9896 -vn -0.0541 0.1960 -0.9791 -vn -0.0322 -0.9442 0.3278 -vn 0.2270 0.3416 0.9120 -vn 0.2086 0.2262 0.9515 -vn 0.2664 0.4803 0.8357 -vn 0.3537 -0.7143 0.6039 -vn -0.0279 0.1971 0.9800 -vn -0.1660 0.5949 0.7865 -vn 0.9095 -0.1731 -0.3778 -vn -0.1454 -0.5698 -0.8088 -vn 0.0878 0.6515 0.7536 -vn 0.1228 0.6812 0.7217 -vn -0.1409 0.9893 0.0377 -vn -0.5254 -0.1371 0.8397 -vn 0.4418 -0.2112 0.8719 -vn 0.4414 -0.1926 0.8764 -vn 0.1721 -0.3575 0.9179 -vn 0.2928 -0.0297 0.9557 -vn 0.4112 0.2364 0.8804 -vn -0.2386 0.2389 0.9413 -vn -0.2645 0.3002 0.9165 -vn 0.6153 0.5077 -0.6030 -vn -0.1736 -0.6820 -0.7104 -vn -0.0124 -0.8516 -0.5240 -vn -0.0968 -0.7006 0.7069 -vn 0.1558 0.4261 0.8912 -vn 0.2445 0.6430 0.7258 -vn 0.3086 0.2288 0.9233 -vn -0.0748 0.6346 0.7692 -vn -0.1641 0.4393 0.8832 -vn -0.0210 0.9876 0.1557 -vn -0.3611 -0.1792 0.9151 -vn 0.3852 0.3409 0.8576 -vn -0.0648 0.4260 0.9024 -vn 0.0416 0.5982 0.8002 -vn 0.0059 0.6438 0.7652 -vn -0.1020 0.7004 0.7064 -vn 0.1635 0.7038 0.6913 -vn 0.1039 -0.2813 0.9540 -vn 0.2544 0.0326 0.9666 -vn 0.1503 0.4673 0.8712 -vn -0.2330 -0.3162 0.9196 -vn 0.8718 0.3265 -0.3650 -vn 0.1306 -0.9675 -0.2167 -vn -0.3962 0.2469 0.8843 -vn 0.6757 0.6214 0.3966 -vn -0.7985 0.4352 -0.4159 -vn -0.2757 -0.4020 0.8732 -vn -0.2099 -0.1061 0.9719 -vn -0.1980 0.0389 0.9794 -vn 0.4131 -0.2066 0.8870 -vn 0.4992 -0.2985 0.8134 -vn 0.4099 -0.2445 0.8787 -vn 0.3880 -0.0001 0.9217 -vn 0.4975 0.2129 0.8409 -vn -0.0077 0.2024 0.9793 -vn 0.0010 0.1826 0.9832 -vn -0.0368 0.6715 0.7401 -vn -0.0090 0.6108 0.7917 -vn -0.1309 0.7534 0.6444 -vn 0.6007 -0.7967 -0.0670 -vn 0.5378 -0.5650 0.6258 -vn 0.0708 0.4689 0.8804 -vn -0.8718 -0.4881 0.0419 -vn 0.2014 0.4392 0.8755 -vn -0.3447 -0.1001 0.9334 -vn -0.0375 -0.2020 0.9787 -vn -0.2818 -0.0121 0.9594 -vn -0.2577 0.1788 0.9495 -vn 0.2444 0.1045 0.9640 -vn 0.1642 0.2495 0.9544 -vn -0.1684 0.7642 0.6227 -vn 0.9459 -0.1937 -0.2605 -vn 0.9959 0.0732 -0.0537 -vn -0.2722 0.6844 0.6764 -vn 0.0342 0.3608 0.9320 -vn 0.0705 0.4355 0.8974 -vn -0.7589 0.4691 0.4517 -vn 0.8458 -0.1942 0.4968 -vn 0.3007 0.5434 0.7837 -vn 0.0026 0.2028 0.9792 -vn -0.4584 -0.1792 0.8705 -vn -0.4816 -0.1234 0.8677 -vn -0.4248 -0.0650 0.9030 -vn 0.3208 -0.2675 0.9086 -vn 0.4962 0.0688 0.8655 -vn 0.2515 0.1691 0.9530 -vn 0.2646 0.0050 0.9643 -vn 0.1603 -0.0582 0.9854 -vn 0.2731 0.0529 0.9605 -vn 0.3512 0.2280 0.9081 -vn -0.1122 0.6330 0.7660 -vn 0.7880 -0.1927 -0.5848 -vn 0.8601 0.3875 -0.3319 -vn -0.0300 0.2228 0.9744 -vn -0.0537 0.6357 0.7701 -vn -0.1001 0.4212 0.9014 -vn -0.0912 0.1317 0.9871 -vn -0.0474 -0.1680 0.9847 -vn -0.1645 0.2261 0.9601 -vn -0.2641 -0.0386 0.9637 -vn -0.0180 -0.0105 0.9998 -vn 0.3665 0.2062 0.9073 -vn 0.2675 0.5389 0.7987 -vn 0.1930 0.2069 0.9591 -vn 0.8980 0.2290 -0.3756 -vn -0.2417 -0.3703 0.8969 -vn -0.0928 0.4225 0.9016 -vn 0.1010 0.2962 0.9498 -vn 0.3686 0.4924 0.7884 -vn 0.1050 0.3694 0.9233 -vn -0.8673 0.4181 0.2702 -vn 0.3503 -0.2604 0.8997 -vn 0.1225 0.8058 0.5793 -vn -0.9027 0.0246 -0.4295 -vn -0.0589 0.4155 0.9077 -vn -0.0646 -0.1742 0.9826 -vn -0.0730 -0.2308 0.9703 -vn -0.1847 -0.0673 0.9805 -vn -0.0074 0.1715 0.9852 -vn -0.0367 -0.0897 0.9953 -vn 0.1452 -0.1689 0.9749 -vn 0.1298 -0.2182 0.9672 -vn -0.5218 -0.1781 0.8343 -vn -0.3724 0.0667 0.9257 -vn -0.3519 0.0752 0.9330 -vn 0.0776 0.0702 0.9945 -vn -0.1822 0.0621 0.9813 -vn 0.4426 0.3233 0.8364 -vn 0.6204 -0.1614 -0.7675 -vn -0.7094 -0.7025 -0.0576 -vn 0.8866 0.2497 -0.3894 -vn -0.0161 -0.1891 0.9818 -vn -0.0187 -0.1691 0.9854 -vn 0.2134 -0.1796 0.9603 -vn 0.1591 0.0331 0.9867 -vn 0.2514 0.5011 0.8280 -vn 0.0566 0.4219 0.9049 -vn -0.1001 0.6712 0.7345 -vn 0.2830 0.0312 0.9586 -vn 0.3416 0.4024 0.8493 -vn 0.2265 -0.2029 0.9526 -vn -0.0300 -0.0866 0.9958 -vn -0.3410 0.1024 0.9345 -vn -0.3218 0.0721 0.9441 -vn -0.4080 -0.0116 0.9129 -vn -0.3908 0.2006 0.8983 -vn -0.0944 0.1541 0.9835 -vn -0.2024 0.2993 0.9324 -vn 0.0489 0.5193 0.8532 -vn 0.1429 0.4337 0.8896 -vn 0.2401 -0.5602 0.7928 -vn 0.4644 0.2315 0.8548 -vn 0.1236 0.4286 0.8950 -vn 0.1370 0.0439 0.9896 -vn 0.0842 -0.0671 0.9942 -vn 0.2352 -0.1864 0.9539 -vn -0.0647 -0.2716 0.9602 -vn -0.0780 -0.2399 0.9677 -vn -0.0176 -0.1044 0.9944 -vn -0.3009 0.3094 0.9021 -vn -0.2836 0.2564 0.9240 -vn 0.0047 0.4639 0.8859 -vn 0.2317 0.6050 0.7617 -vn 0.2204 0.6316 0.7433 -vn -0.0377 0.6566 0.7533 -vn 0.8577 -0.4964 -0.1339 -vn 0.1260 0.4260 0.8959 -vn 0.0170 0.3726 0.9279 -vn -0.1093 0.6179 0.7786 -vn 0.3988 0.1377 0.9066 -vn 0.1789 0.4877 0.8545 -vn 0.9944 -0.0746 0.0751 -vn -0.2500 0.9665 -0.0585 -vn 0.2263 0.1383 0.9642 -vn 0.2878 -0.3419 0.8946 -vn -0.0142 0.0394 0.9991 -vn 0.1201 -0.3331 0.9352 -vn 0.0517 -0.1133 0.9922 -vn 0.3864 0.1459 0.9107 -vn -0.2499 -0.0745 0.9654 -vn -0.2054 0.5129 0.8335 -vn -0.0128 0.4700 0.8826 -vn 0.0093 0.5434 0.8394 -vn 0.2452 0.0412 0.9686 -vn 0.1157 0.0143 0.9932 -vn 0.2148 0.5859 0.7814 -vn 0.0230 0.9752 -0.2201 -vn 0.3690 -0.1279 0.9206 -vn 0.2877 -0.3406 0.8951 -vn 0.1986 -0.1082 0.9741 -vn 0.3518 0.0013 0.9361 -vn 0.2609 -0.0449 0.9643 -vn -0.1328 -0.5230 0.8419 -vn -0.0763 0.4298 0.8997 -vn -0.0039 0.5566 0.8308 -vn 0.7661 -0.2534 0.5907 -vn -0.8120 0.2936 -0.5044 -vn 0.4548 -0.2419 0.8571 -vn 0.4696 -0.0716 0.8800 -vn -0.1314 0.0380 0.9906 -vn -0.3317 0.3168 0.8886 -vn -0.2493 0.2423 0.9376 -vn -0.2073 0.3317 0.9203 -vn -0.0851 0.6044 0.7922 -vn 0.0415 -0.6132 0.7888 -vn 0.1987 -0.8806 -0.4302 -vn 0.1593 0.1821 0.9703 -vn 0.6214 0.1210 0.7740 -vn 0.9140 0.1554 0.3749 -vn 0.3965 -0.9090 -0.1284 -vn 0.2756 0.1421 0.9507 -vn 0.5115 -0.1999 0.8357 -vn 0.5378 -0.0492 0.8417 -vn 0.3193 -0.2661 0.9095 -vn 0.1967 -0.0658 0.9782 -vn -0.2875 -0.4101 0.8655 -vn -0.2793 0.4256 0.8607 -vn -0.3583 0.4743 0.8042 -vn -0.1249 0.6047 0.7866 -vn -0.1251 0.6039 0.7872 -vn 0.5105 -0.8373 -0.1959 -vn 0.0274 0.8867 0.4615 -vn -0.2290 0.7861 0.5741 -vn 0.1453 -0.2049 0.9679 -vn 0.0170 0.7942 0.6074 -vn -0.9887 -0.1077 -0.1044 -vn 0.4519 -0.2130 0.8662 -vn 0.4946 -0.1168 0.8612 -vn 0.3687 -0.0328 0.9290 -vn 0.3710 -0.1783 0.9114 -vn 0.1870 0.0302 0.9819 -vn 0.3013 -0.1515 0.9414 -vn 0.3113 -0.0635 0.9482 -vn -0.2061 -0.5713 0.7945 -vn -0.2274 -0.4133 0.8817 -vn -0.0100 0.0048 0.9999 -vn -0.2554 0.4742 0.8425 -vn -0.2675 0.4793 0.8359 -vn -0.1327 0.5630 0.8157 -vn 0.9957 0.0488 -0.0783 -vn 0.6409 -0.6596 -0.3926 -vn 0.7326 -0.5692 -0.3732 -vn 0.0228 -0.2720 0.9620 -vn 0.0086 -0.5787 0.8155 -vn 0.2718 -0.2029 0.9407 -vn -0.2634 0.7210 0.6409 -vn 0.4828 0.3048 0.8210 -vn -0.1625 0.6709 0.7235 -vn 0.9562 -0.0427 0.2897 -vn -0.8937 -0.3280 -0.3061 -vn -0.3646 0.8243 0.4331 -vn 0.3481 -0.1066 0.9314 -vn 0.3713 -0.2802 0.8852 -vn 0.3917 -0.1040 0.9142 -vn 0.1912 -0.0559 0.9800 -vn 0.1526 -0.1183 0.9812 -vn 0.0952 -0.0638 0.9934 -vn 0.9698 0.2310 0.0785 -vn -0.0637 0.5288 0.8464 -vn -0.5792 0.6222 -0.5268 -vn 0.3817 0.2708 0.8837 -vn -0.0636 0.7667 0.6388 -vn 0.8413 -0.4970 -0.2125 -vn -0.0859 0.0414 0.9954 -vn -0.2958 0.8690 0.3966 -vn -0.2436 0.9057 0.3470 -vn 0.3165 -0.1709 0.9331 -vn 0.1867 -0.1997 0.9619 -vn 0.1585 -0.1326 0.9784 -vn -0.4602 -0.2029 0.8643 -vn -0.5227 -0.2689 0.8090 -vn 0.0545 -0.1796 0.9822 -vn 0.0974 -0.0628 0.9933 -vn -0.1266 -0.0503 0.9907 -vn -0.1214 0.2118 0.9697 -vn -0.0807 0.4773 0.8750 -vn -0.0898 0.5169 0.8513 -vn -0.1217 0.4982 0.8585 -vn -0.1156 0.5973 0.7937 -vn -0.1887 0.1817 0.9651 -vn 0.3131 -0.3871 0.8673 -vn -0.0920 0.4752 0.8750 -vn -0.0096 0.0550 0.9984 -vn -0.1985 0.6927 0.6934 -vn -0.7237 -0.6816 -0.1087 -vn 0.3116 -0.1600 0.9366 -vn 0.3154 -0.2072 0.9261 -vn 0.1799 -0.2444 0.9528 -vn 0.1596 -0.1969 0.9674 -vn -0.4177 -0.2617 0.8701 -vn -0.7110 -0.1040 0.6954 -vn -0.8965 -0.1566 0.4145 -vn 0.1675 -0.2103 -0.9632 -vn -0.8677 0.0077 0.4971 -vn -0.5826 0.0892 0.8079 -vn 0.1333 0.4396 0.8883 -vn 0.1590 0.3469 0.9243 -vn -0.2059 0.7378 0.6429 -vn -0.3738 -0.1253 -0.9190 -vn -0.7289 -0.1799 0.6606 -vn 0.3571 -0.2134 0.9094 -vn 0.0818 0.3046 0.9490 -vn -0.1816 0.4367 0.8811 -vn -0.9999 -0.0040 0.0113 -vn -0.2682 0.9433 0.1954 -vn -0.0689 0.8937 0.4434 -vn 0.8098 0.4614 0.3625 -vn 0.3277 -0.8706 -0.3669 -vn -0.1085 -0.3141 0.9432 -vn -0.0989 -0.0965 0.9904 -vn -0.1327 0.5917 0.7952 -vn -0.0477 0.6880 0.7242 -vn -0.0461 0.6770 0.7345 -vn -0.4724 0.6955 -0.5414 -vn -0.4905 0.6997 -0.5194 -vn -0.3842 -0.4187 -0.8228 -vn 0.0350 -0.1090 0.9934 -vn 0.0825 0.4897 0.8680 -vn 0.6066 -0.7937 -0.0465 -vn 0.0162 0.6880 0.7255 -vn 0.8244 0.5031 0.2593 -vn 0.6163 -0.7453 -0.2543 -vn -0.1028 -0.0521 0.9933 -vn -0.3357 -0.2317 0.9130 -vn -0.3409 -0.2620 0.9028 -vn -0.4367 -0.2792 0.8552 -vn -0.4219 -0.2679 0.8662 -vn -0.4385 -0.2758 0.8553 -vn -0.7620 0.5781 0.2917 -vn 0.8925 -0.4378 -0.1086 -vn 0.0357 0.8297 0.5571 -vn -0.4721 0.0808 0.8778 -vn -0.3548 0.2824 0.8913 -vn -0.2135 0.7291 -0.6503 -vn 0.2030 0.8461 0.4929 -vn 0.4874 -0.1658 0.8573 -vn -0.3874 -0.8999 -0.2001 -vn 0.9758 -0.2119 -0.0546 -vn -0.1155 0.4684 0.8759 -vn 0.1329 0.1759 0.9754 -vn -0.1728 0.9756 0.1357 -vn -0.3749 0.7128 0.5928 -vn -0.3554 0.8164 0.4551 -vn -0.6898 -0.2278 0.6873 -vn 0.1552 0.9798 0.1264 -vn -0.6211 0.6411 -0.4507 -vn 0.3410 0.9335 0.1111 -vn 0.6655 0.7237 0.1823 -vn -0.0204 -0.8306 -0.5566 -vn 0.3683 0.3838 0.8468 -vn 0.3677 0.3969 0.8410 -vn -0.2298 0.3922 0.8907 -vn -0.2431 0.5073 0.8268 -vn 0.0864 -0.7400 -0.6671 -vn -0.0187 0.5316 -0.8468 -vn 0.1429 -0.1010 0.9846 -vn -0.0480 -0.4741 0.8791 -vn 0.0118 0.2916 0.9565 -vn 0.2041 0.2676 0.9417 -vn -0.5827 0.6796 -0.4457 -vn -0.4947 0.5402 0.6808 -vn -0.2648 0.3687 0.8910 -vn -0.2619 0.4255 0.8662 -vn 0.7302 0.0734 -0.6793 -vn 0.4496 0.8172 0.3607 -vn -0.0231 0.7442 0.6675 -vn -0.0936 0.7269 0.6804 -vn -0.9184 0.2514 -0.3055 -vn 0.5720 0.7688 0.2858 -vn -0.3537 -0.1538 0.9226 -vn -0.3157 -0.0647 0.9467 -vn -0.2793 0.4823 0.8303 -vn -0.4192 0.6371 0.6468 -vn -0.2607 0.5464 0.7959 -vn -0.2862 0.5787 0.7637 -vn 0.6793 0.0346 0.7330 -vn -0.1339 -0.1946 0.9717 -vn 0.0759 0.4142 0.9070 -vn -0.3297 0.6812 0.6536 -vn -0.1125 0.9069 0.4060 -vn -0.0724 0.9447 0.3198 -vn -0.0825 0.9425 0.3239 -vn -0.3831 0.8516 0.3577 -vn -0.2077 0.7677 0.6062 -vn 0.3394 0.4910 0.8024 -vn 0.0841 0.9695 0.2302 -vn -0.1945 0.9798 -0.0471 -vn 0.1602 0.9744 0.1579 -vn 0.6269 0.6104 0.4842 -vn 0.2987 0.4360 0.8489 -vn -0.1851 0.3840 0.9046 -vn -0.4963 0.5453 0.6755 -vn 0.8838 0.3351 -0.3265 -vn 0.8835 0.3247 -0.3377 -vn -0.1327 -0.5409 0.8306 -vn 0.1959 -0.1628 0.9670 -vn 0.2408 0.5547 0.7964 -vn 0.9499 0.1711 -0.2614 -vn -0.0457 0.8886 0.4565 -vn -0.9645 -0.2616 -0.0355 -vn -0.8727 -0.4619 -0.1584 -vn -0.3203 0.8408 0.4365 -vn 0.8166 0.3736 0.4399 -vn -0.0668 0.1919 0.9791 -vn -0.5399 0.6007 0.5897 -vn -0.4474 0.5875 0.6743 -vn 0.4135 -0.0503 0.9091 -vn 0.1003 0.4728 -0.8754 -vn 0.1395 0.4355 0.8893 -vn 0.0930 0.2058 0.9742 -vn 0.2029 -0.0235 0.9789 -vn -0.0147 0.6540 0.7563 -vn 0.0719 0.8844 0.4611 -vn 0.0102 0.9446 0.3282 -vn -0.6861 0.4526 0.5696 -vn -0.2648 0.6474 -0.7147 -vn -0.0973 -0.5655 -0.8190 -vn -0.9693 0.0785 -0.2328 -vn -0.2361 -0.4408 -0.8660 -vn -0.2274 0.4787 0.8480 -vn -0.3335 0.7086 0.6218 -vn 0.2527 0.3781 0.8906 -vn 0.2828 0.2126 0.9353 -vn -0.3297 0.8296 0.4507 -vn 0.1055 0.7515 0.6513 -vn 0.0885 0.8795 0.4676 -vn -0.4163 0.7285 0.5440 -vn -0.5826 0.1983 0.7882 -vn -0.8616 0.5059 0.0404 -vn -0.7831 0.5254 -0.3327 -vn 0.4719 0.6010 0.6451 -vn 0.0381 0.2004 0.9790 -vn -0.1414 0.4324 0.8905 -vn -0.3256 0.6174 0.7161 -vn -0.0301 -0.9953 -0.0922 -vn -0.0917 0.5894 0.8026 -vn 0.0268 0.4872 0.8729 -vn 0.9085 -0.4167 0.0306 -vn 0.1137 0.4154 0.9025 -vn 0.1146 0.3518 0.9290 -vn 0.1580 0.7531 0.6387 -vn 0.2678 0.9597 -0.0854 -vn -0.0601 0.9977 -0.0300 -vn -0.9112 0.3337 -0.2414 -vn 0.3026 0.9528 -0.0251 -vn 0.1782 0.9059 0.3843 -vn -0.2769 0.9404 -0.1974 -vn 0.3590 0.8848 0.2971 -vn 0.1723 0.3040 0.9370 -vn 0.2093 0.1908 0.9591 -vn -0.1154 0.4272 0.8968 -vn -0.2073 0.5488 0.8098 -vn -0.3417 0.7104 0.6152 -vn 0.4480 0.5070 0.7364 -vn 0.9259 0.1576 -0.3433 -vn 0.0460 0.8712 0.4888 -vn -0.3879 0.7235 0.5711 -vn -0.2741 0.0739 0.9589 -vn -0.6839 -0.3630 0.6328 -vn -0.5719 0.2123 0.7924 -vn -0.7422 -0.1948 0.6412 -vn 0.7812 0.6076 0.1434 -vn -0.3918 0.1945 0.8993 -vn -0.3286 0.8669 0.3749 -vn -0.3253 0.6178 0.7159 -vn 0.9466 -0.0347 -0.3206 -vn 0.0508 -0.0371 0.9980 -vn 0.2175 0.4443 0.8691 -vn -0.5982 -0.3529 0.7194 -vn -0.1240 0.9906 0.0578 -vn -0.9508 0.1251 -0.2835 -vn -0.2347 -0.3114 0.9209 -vn -0.3488 -0.2687 0.8979 -vn 0.4197 0.8904 -0.1760 -vn 0.4159 0.9051 -0.0886 -vn -0.0782 0.1598 0.9840 -vn -0.0843 0.2975 0.9510 -vn -0.2314 0.4020 0.8859 -vn -0.1630 0.5902 0.7906 -vn 0.9336 0.1949 -0.3006 -vn 0.9320 -0.3621 0.0167 -vn -0.2622 -0.4229 -0.8674 -vn -0.3109 0.8434 0.4382 -vn 0.2588 -0.2477 0.9336 -vn 0.0711 0.2069 0.9758 -vn 0.2859 0.6759 0.6793 -vn 0.2507 0.7972 0.5492 -vn -0.2053 0.1140 0.9720 -vn -0.5860 -0.3861 0.7124 -vn -0.3146 0.9455 0.0844 -vn 0.2866 0.9367 -0.2011 -vn -0.2611 -0.4321 0.8632 -vn -0.0467 -0.0030 0.9989 -vn -0.1562 0.4199 0.8940 -vn 0.2009 -0.8893 -0.4108 -vn 0.2425 0.4242 0.8725 -vn 0.0778 0.2951 0.9523 -vn -0.1866 0.5503 0.8138 -vn -0.0245 -0.9064 -0.4216 -vn 0.2471 0.6553 0.7139 -vn 0.0956 0.1267 0.9873 -vn 0.2423 -0.0438 0.9692 -vn 0.0565 -0.2400 0.9691 -vn -0.1264 -0.2259 0.9659 -vn -0.3178 -0.9088 -0.2703 -vn -0.2390 0.5765 0.7814 -vn -0.4187 -0.5406 0.7297 -vn 0.3476 -0.2993 -0.8886 -vn -0.1904 -0.1561 0.9692 -vn -0.2667 -0.2508 0.9306 -vn 0.2163 -0.2731 0.9374 -vn -0.2897 0.2544 0.9227 -vn -0.3305 0.3930 0.8581 -vn -0.1448 0.5072 0.8496 -vn -0.1600 0.5852 0.7950 -vn 0.9314 0.3514 -0.0948 -vn -0.0953 0.4365 0.8947 -vn -0.0169 0.1914 0.9814 -vn 0.1469 -0.8512 -0.5039 -vn -0.2752 0.4465 0.8514 -vn 0.3799 -0.9213 0.0824 -vn 0.3196 0.6321 0.7059 -vn 0.0471 0.6431 0.7643 -vn -0.1706 -0.0171 0.9852 -vn -0.1443 -0.2141 0.9661 -vn -0.3224 -0.4268 0.8449 -vn -0.3123 -0.2543 0.9153 -vn -0.1703 -0.1705 0.9705 -vn -0.2863 -0.2533 0.9240 -vn 0.2300 0.0234 0.9729 -vn 0.3124 0.0916 0.9455 -vn -0.2625 0.2472 0.9327 -vn -0.8865 0.0703 -0.4573 -vn 0.3360 -0.9090 -0.2465 -vn -0.4113 0.1610 0.8972 -vn -0.3979 0.4661 0.7902 -vn 0.9280 -0.1572 -0.3379 -vn -0.1034 0.1579 0.9820 -vn 0.1907 0.3990 0.8969 -vn -0.2753 -0.5604 0.7811 -vn 0.0856 0.9564 0.2794 -vn 0.8066 -0.5472 -0.2238 -vn -0.6888 0.6489 0.3233 -vn 0.5075 -0.4892 -0.7093 -vn -0.1937 -0.0684 0.9787 -vn 0.1525 0.4191 0.8950 -vn 0.2021 0.5092 0.8366 -vn -0.4188 0.4947 0.7615 -vn -0.2886 0.7307 0.6187 -vn 0.6555 -0.7314 -0.1879 -vn 0.1881 0.2058 0.9604 -vn 0.3487 0.5008 0.7922 -vn 0.2106 0.5804 0.7867 -vn 0.2069 0.6106 0.7644 -vn -0.4511 -0.5698 0.6869 -vn -0.0332 0.0905 0.9953 -vn -0.5716 -0.3189 0.7560 -vn -0.0285 -0.3039 0.9523 -vn 0.8278 0.3634 0.4274 -vn 0.2486 -0.3614 0.8986 -vn -0.0904 -0.0459 0.9949 -vn 0.3078 -0.1556 0.9386 -vn 0.2820 -0.1426 0.9488 -vn -0.2860 -0.5339 0.7957 -vn -0.2245 -0.3286 0.9174 -vn -0.1672 -0.0152 0.9858 -vn -0.1202 0.0632 0.9907 -vn -0.0880 0.2851 0.9544 -vn 0.9622 0.2286 -0.1477 -vn 0.2812 0.2866 0.9159 -vn 0.2007 0.5125 0.8349 -vn 0.3748 0.4167 0.8282 -vn -0.4078 -0.2085 0.8889 -vn -0.5010 -0.2151 0.8383 -vn -0.5194 0.1516 -0.8410 -vn -0.4478 -0.2576 0.8562 -vn -0.3079 -0.1080 0.9453 -vn -0.2557 0.0311 0.9663 -vn -0.0850 0.4511 0.8884 -vn 0.1907 -0.8440 -0.5014 -vn 0.3618 0.9317 0.0311 -vn -0.2030 0.3455 0.9162 -vn -0.1891 0.5155 0.8357 -vn 0.9091 -0.1399 -0.3924 -vn -0.0581 0.5478 0.8346 -vn -0.0074 0.5868 0.8097 -vn -0.1740 -0.6162 0.7681 -vn -0.3225 -0.3162 0.8922 -vn 0.2444 0.1874 0.9514 -vn 0.2060 0.0603 0.9767 -vn -0.3080 0.7119 0.6312 -vn 0.9699 0.0964 0.2238 -vn 0.6652 -0.7224 -0.1888 -vn -0.2316 0.4711 0.8512 -vn -0.2308 0.4674 0.8534 -vn -0.1207 0.5947 0.7948 -vn -0.1827 0.7007 0.6897 -vn -0.2418 0.7393 0.6285 -vn 0.6614 -0.7085 -0.2460 -vn 0.3298 -0.4108 0.8500 -vn -0.1342 -0.5546 0.8212 -vn -0.2371 -0.2782 0.9308 -vn -0.3007 -0.0546 0.9522 -vn -0.4018 -0.2732 0.8740 -vn -0.3180 0.0622 0.9461 -vn -0.0821 -0.2878 0.9542 -vn -0.0854 -0.2666 0.9600 -vn -0.1409 0.0677 0.9877 -vn -0.0495 0.1463 0.9880 -vn -0.1102 0.2748 0.9552 -vn -0.1639 0.7873 0.5944 -vn -0.0702 0.1749 0.9821 -vn -0.0094 0.1448 0.9894 -vn 0.9072 -0.4125 -0.0828 -vn 0.6372 -0.4511 -0.6249 -vn 0.2810 0.5583 0.7806 -vn 0.0513 0.0210 0.9985 -vn -0.0166 -0.7462 0.6655 -vn -0.2498 -0.2900 0.9239 -vn -0.2219 -0.4001 0.8892 -vn 0.0734 0.9682 0.2390 -vn -0.2143 0.0882 0.9728 -vn -0.2208 0.1024 0.9699 -vn 0.9065 -0.1272 -0.4026 -vn -0.3335 0.8651 0.3746 -vn -0.3252 0.1290 0.9368 -vn 0.8720 0.2531 -0.4191 -vn 0.1450 0.4264 0.8928 -vn 0.1953 0.0143 0.9806 -vn 0.0492 0.5871 0.8080 -vn 0.1509 0.3874 0.9095 -vn 0.3267 0.4532 0.8294 -vn -0.3560 -0.5993 0.7170 -vn -0.3941 -0.3337 0.8563 -vn -0.4207 -0.0178 0.9070 -vn 0.1053 -0.1476 0.9834 -vn 0.0137 0.4635 0.8860 -vn -0.0933 0.6981 0.7099 -vn -0.5754 0.3896 -0.7191 -vn -0.6102 0.7776 -0.1517 -vn 0.0452 0.5651 0.8237 -vn -0.1801 -0.4979 0.8484 -vn 0.1089 -0.1474 0.9831 -vn -0.0329 0.5104 0.8593 -vn 0.8780 -0.4643 -0.1161 -vn 0.0607 0.3579 0.9318 -vn -0.0651 -0.0858 0.9942 -vn -0.0982 0.3043 0.9475 -vn -0.0465 0.4545 0.8895 -vn 0.0899 0.3229 0.9421 -vn -0.1331 0.5933 0.7939 -vn -0.0885 0.6930 0.7155 -vn -0.8752 -0.4768 -0.0825 -vn 0.1955 0.3832 0.9028 -vn -0.1967 -0.7008 0.6857 -vn 0.1951 -0.0377 0.9801 -vn -0.1213 -0.7696 0.6269 -vn -0.0680 -0.5923 0.8028 -vn -0.0504 -0.1815 0.9821 -vn -0.2444 0.1026 0.9642 -vn -0.3058 0.0418 0.9512 -vn -0.3004 0.1421 0.9432 -vn 0.2581 0.1865 0.9480 -vn 0.3161 0.1274 0.9401 -vn -0.0231 0.3429 0.9391 -vn -0.8146 -0.5681 -0.1170 -vn 0.0272 0.4716 0.8814 -vn -0.0398 0.8613 0.5066 -vn -0.3789 -0.2462 0.8921 -vn -0.0006 -0.3950 0.9187 -vn -0.1213 -0.0967 0.9879 -vn -0.0494 0.1948 0.9796 -vn 0.3493 -0.1275 0.9283 -vn 0.1673 0.2146 0.9623 -vn 0.3286 -0.1572 0.9313 -vn 0.2379 0.7645 0.5991 -vn 0.4973 -0.3061 0.8118 -vn 0.3156 0.1506 0.9369 -vn 0.4995 -0.2181 0.8384 -vn 0.4155 -0.6177 0.6677 -vn 0.4112 0.0399 0.9107 -vn 0.4425 0.5323 0.7217 -vn 0.7955 -0.3400 0.5016 -vn 0.9753 0.0999 -0.1969 -vn -0.7933 -0.5696 0.2149 -vn 0.3076 -0.0359 0.9508 -vn 0.4173 -0.5953 0.6867 -vn -0.2245 -0.5079 -0.8316 -vn 0.6506 -0.5474 0.5263 -vn 0.8870 -0.2213 0.4053 -vn 0.9750 0.0301 -0.2202 -vn 0.7371 -0.3973 0.5467 -vn 0.7463 -0.2907 0.5988 -vn 0.7962 -0.1774 0.5785 -vn 0.0182 -0.9994 -0.0307 -vn -0.3519 0.7435 0.5686 -vn 0.3769 0.1108 0.9196 -vn -0.4518 -0.6167 -0.6447 -vn -0.4448 -0.3809 -0.8106 -vn 0.5756 -0.0232 0.8174 -vn 0.5660 -0.5749 0.5909 -vn 0.4372 -0.4292 0.7904 -vn 0.2373 -0.5050 0.8298 -vn -0.3096 0.4117 -0.8571 -vn 0.4793 -0.4909 0.7276 -vn 0.2697 -0.1979 0.9424 -vn 0.9242 0.2243 -0.3091 -vn 0.9863 -0.0489 -0.1573 -vn 0.8319 -0.5278 -0.1711 -vn 0.6792 -0.1766 -0.7124 -vn 0.5512 -0.3935 0.7358 -vn 0.4671 0.1274 0.8750 -vn 0.2716 -0.0654 0.9602 -vn 0.4563 0.5522 -0.6978 -vn -0.2682 0.5709 -0.7760 -vn 0.4834 0.2837 0.8281 -vn 0.8734 -0.4770 -0.0985 -vn 0.9392 -0.3433 0.0015 -vn 0.3123 -0.7210 0.6185 -vn 0.1719 0.0300 0.9847 -vn 0.4081 0.6170 0.6729 -vn 0.4284 0.3099 0.8488 -vn 0.4481 0.2968 0.8433 -vn 0.5529 -0.1634 0.8170 -vn 0.7562 -0.5802 -0.3025 -vn 0.8448 -0.5249 -0.1038 -vn 0.4825 -0.0612 0.8737 -vn 0.5454 -0.3487 0.7622 -vn 0.5524 0.3460 0.7584 -vn 0.5763 0.4350 0.6918 -vn 0.6098 0.4081 0.6794 -vn 0.7040 0.2048 0.6801 -vn 0.1027 -0.9268 -0.3613 -vn 0.1719 0.2917 0.9409 -vn 0.3047 -0.0177 0.9523 -vn -0.0607 -0.7485 -0.6604 -vn -0.2163 -0.4938 0.8422 -vn 0.5040 0.1699 0.8468 -vn 0.5353 -0.1089 0.8376 -vn 0.6543 -0.1557 0.7401 -vn 0.5666 0.0815 0.8199 -vn 0.6098 0.1866 0.7703 -vn 0.5380 0.3217 0.7791 -vn 0.5484 0.0932 0.8310 -vn 0.4536 0.3481 0.8204 -vn 0.5951 -0.0586 0.8015 -vn 0.6360 -0.5597 0.5313 -vn 0.6467 -0.5452 0.5334 -vn 0.6529 0.4235 0.6280 -vn 0.5255 0.3640 0.7690 -vn -0.1913 0.3899 -0.9008 -vn 0.8743 0.1246 0.4691 -vn 0.8053 -0.0828 0.5870 -vn 0.8146 0.0348 0.5790 -vn 0.8603 -0.1418 0.4897 -vn 0.2542 0.6668 0.7005 -vn 0.5400 0.6286 0.5597 -vn 0.5597 -0.7326 0.3873 -vn 0.6939 0.1962 0.6928 -vn 0.5274 0.3647 0.7674 -vn 0.9014 0.3962 -0.1750 -vn 0.9138 0.0650 0.4009 -vn 0.7251 0.4051 0.5569 -vn 0.8674 0.0224 0.4971 -vn 0.7762 0.3172 0.5449 -vn 0.8358 0.1688 0.5225 -vn -0.1502 0.9363 -0.3174 -vn 0.8671 0.0827 0.4913 -vn -0.1459 0.2459 -0.9582 -vn 0.7841 -0.4533 0.4240 -vn 0.8616 -0.1485 0.4853 -vn 0.8920 -0.0670 0.4471 -vn 0.8735 0.0989 0.4767 -vn 0.8126 0.1946 0.5494 -vn 0.7696 0.1163 0.6279 -vn 0.6339 0.3248 0.7019 -vn 0.3053 -0.4072 0.8608 -vn 0.8427 0.4466 0.3005 -vn 0.5937 0.4744 0.6500 -vn -0.1753 0.2069 -0.9625 -vn 0.6688 -0.6857 0.2873 -vn 0.8149 -0.4748 0.3324 -vn 0.7438 0.4560 0.4887 -vn 0.8483 0.1519 0.5073 -vn 0.6224 0.3205 0.7140 -vn 0.2956 0.6482 0.7018 -vn 0.3599 0.3385 0.8694 -vn 0.3497 -0.9140 -0.2058 -vn 0.6647 0.3661 0.6513 -vn 0.5236 0.4083 0.7477 -vn 0.5403 -0.2454 0.8049 -vn 0.7933 0.3443 0.5022 -vn 0.8585 0.0871 0.5053 -vn 0.7440 -0.4728 0.4721 -vn 0.5201 -0.7978 0.3049 -vn 0.8237 -0.4635 0.3266 -vn 0.7653 0.4371 0.4726 -vn 0.8672 0.1987 0.4566 -vn 0.8297 0.0515 0.5558 -vn 0.7922 0.2247 0.5674 -vn 0.2341 0.6580 0.7157 -vn 0.5559 -0.3727 0.7430 -vn 0.6924 -0.1517 0.7054 -vn 0.8164 0.0055 0.5774 -vn 0.5378 0.3903 0.7473 -vn 0.5745 0.3924 0.7183 -vn 0.8380 0.0903 -0.5381 -vn 0.8375 0.0636 0.5427 -vn 0.1822 0.1227 0.9756 -vn 0.2885 -0.5952 0.7500 -vn 0.9282 -0.1525 0.3394 -vn 0.8486 0.0467 0.5270 -vn 0.7872 0.3551 0.5042 -vn 0.7164 0.4142 0.5615 -vn 0.8759 0.0425 0.4806 -vn 0.9348 -0.3059 -0.1803 -vn -0.9883 0.0195 -0.1512 -vn -0.2900 -0.5991 0.7463 -vn 0.7371 0.2267 0.6366 -vn 0.4535 0.4967 0.7401 -vn 0.5575 0.4389 0.7047 -vn 0.8613 -0.3070 -0.4049 -vn 0.8695 0.0768 -0.4879 -vn 0.8181 -0.2468 0.5194 -vn 0.8482 0.0473 0.5275 -vn 0.8974 0.0705 0.4355 -vn 0.6620 0.2337 0.7121 -vn 0.0817 0.8385 0.5388 -vn 0.3868 -0.4152 0.8234 -vn 0.5761 -0.7937 0.1955 -vn 0.5540 0.1432 0.8201 -vn 0.4524 -0.7281 -0.5150 -vn 0.5887 -0.4125 0.6952 -vn 0.4814 -0.7011 0.5260 -vn 0.6886 -0.5291 0.4959 -vn 0.7591 -0.2204 0.6125 -vn 0.7246 0.2977 0.6216 -vn 0.5581 0.4453 0.7001 -vn 0.6053 0.4299 0.6699 -vn 0.8772 -0.0016 0.4801 -vn 0.8962 -0.0942 0.4335 -vn 0.7021 0.0040 0.7120 -vn -0.4709 -0.4961 -0.7295 -vn 0.5728 -0.7712 -0.2778 -vn 0.7757 -0.6083 0.1682 -vn 0.0777 -0.0962 0.9923 -vn 0.6694 -0.5981 0.4407 -vn 0.6911 -0.5305 0.4908 -vn 0.6063 0.4368 0.6645 -vn 0.5076 -0.1852 0.8415 -vn 0.5272 -0.4956 0.6903 -vn 0.5140 -0.0009 0.8578 -vn -0.9732 0.0570 -0.2228 -vn 0.7464 0.3492 0.5665 -vn 0.8205 -0.2691 0.5043 -vn 0.3522 0.5424 0.7627 -vn 0.8219 0.0448 0.5679 -vn 0.5055 -0.5085 0.6971 -vn 0.4193 -0.3625 0.8323 -vn 0.4555 0.0261 0.8899 -vn 0.4950 0.2555 0.8305 -vn 0.3626 0.4155 0.8342 -vn 0.4147 0.0020 0.9099 -vn -0.0843 0.1224 -0.9889 -vn -0.4400 0.0989 -0.8925 -vn -0.1770 -0.9842 0.0058 -vn 0.3849 0.4968 0.7779 -vn -0.2658 -0.6052 -0.7504 -vn 0.6705 0.4058 0.6212 -vn 0.7929 0.0593 0.6065 -vn 0.5403 0.0545 0.8397 -vn 0.4179 0.4278 0.8015 -vn 0.4457 0.5613 0.6973 -vn 0.2552 -0.6350 0.7291 -vn 0.5113 -0.2335 0.8271 -vn 0.5189 0.4634 0.7183 -vn 0.5831 -0.2983 0.7556 -vn 0.6049 -0.2105 0.7679 -vn 0.4994 -0.0595 0.8643 -vn 0.1504 -0.1681 0.9742 -vn 0.9949 0.0848 0.0550 -vn 0.2137 -0.1235 0.9691 -vn 0.7959 -0.2797 0.5369 -vn 0.9060 -0.3575 -0.2265 -vn 0.3103 0.6179 0.7224 -vn -0.8991 -0.4331 0.0642 -vn 0.3726 0.4623 0.8046 -vn 0.4026 0.4361 0.8048 -vn 0.3695 0.5704 0.7335 -vn 0.7512 -0.1940 0.6309 -vn 0.6603 -0.3958 0.6382 -vn 0.6993 0.0515 0.7130 -vn 0.3403 0.1572 0.9271 -vn 0.3768 -0.9019 -0.2110 -vn 0.2168 0.8089 0.5465 -vn 0.6756 0.3978 0.6208 -vn 0.4070 -0.3592 0.8399 -vn 0.4748 -0.4877 0.7326 -vn 0.3978 -0.5011 0.7685 -vn 0.5145 0.3839 0.7667 -vn 0.3181 0.3312 0.8883 -vn 0.2848 0.3538 0.8909 -vn 0.3662 0.2383 0.8995 -vn -0.1706 0.9853 0.0079 -vn 0.6912 -0.1243 0.7119 -vn 0.4390 -0.1339 0.8884 -vn 0.7249 0.3730 -0.5792 -vn 0.5168 -0.2654 0.8139 -vn 0.5490 0.1973 0.8122 -vn 0.9249 0.3747 0.0647 -vn 0.6267 0.2885 0.7239 -vn 0.5978 0.3790 0.7064 -vn 0.4929 0.3856 0.7800 -vn 0.4329 0.0688 0.8988 -vn 0.8200 -0.3647 0.4411 -vn 0.9050 -0.1267 0.4062 -vn 0.9105 -0.1358 0.3906 -vn 0.8757 -0.0012 0.4828 -vn 0.8330 -0.1375 0.5359 -vn 0.5782 0.5333 0.6175 -vn 0.5711 0.4570 0.6820 -vn 0.7808 -0.1687 -0.6016 -vn 0.7956 -0.1775 0.5793 -vn 0.6949 0.4223 0.5821 -vn 0.5512 -0.7737 0.3124 -vn 0.6130 -0.2572 0.7470 -vn 0.5119 -0.2314 0.8273 -vn 0.6082 0.3607 0.7071 -vn 0.6772 -0.2020 0.7075 -vn 0.3962 0.5874 0.7057 -vn 0.8951 -0.0118 -0.4458 -vn 0.2674 0.2383 0.9336 -vn 0.0640 0.4264 -0.9023 -vn 0.7509 -0.0247 0.6600 -vn 0.6038 0.3571 0.7127 -vn 0.1146 -0.7495 -0.6520 -vn 0.5299 -0.4069 0.7441 -vn 0.7688 -0.2921 0.5689 -vn 0.5030 -0.0615 0.8621 -vn 0.6167 -0.3630 0.6985 -vn 0.1821 0.7959 0.5774 -vn 0.6273 -0.2922 0.7218 -vn 0.6942 0.2526 0.6740 -vn 0.6197 0.1901 0.7614 -vn 0.5699 -0.0409 0.8207 -vn -0.0448 -0.9986 -0.0270 -vn 0.3020 -0.1273 0.9448 -vn 0.7946 -0.5450 -0.2676 -vn 0.6010 -0.0104 0.7992 -vn 0.3908 -0.1310 0.9111 -vn 0.6178 -0.5014 0.6057 -vn 0.6634 0.1666 0.7295 -vn 0.5737 0.4714 0.6698 -vn 0.6950 -0.6947 0.1853 -vn 0.5746 0.1469 0.8051 -vn -0.8852 0.4594 -0.0734 -vn 0.1336 -0.3190 0.9383 -vn 0.6984 -0.3878 0.6015 -vn 0.7207 0.1376 0.6795 -vn 0.6690 0.2118 0.7124 -vn 0.6195 0.3799 0.6869 -vn 0.5750 0.5176 0.6336 -vn 0.6575 0.2715 0.7028 -vn 0.6479 -0.2221 0.7286 -vn 0.7287 0.2655 0.6313 -vn 0.3577 0.4764 0.8032 -vn 0.5348 -0.2387 0.8106 -vn 0.3113 0.3426 0.8864 -vn 0.3514 0.1323 0.9268 -vn 0.3866 0.1986 0.9006 -vn -0.1092 -0.5798 -0.8074 -vn 0.4647 0.1742 0.8682 -vn 0.6194 -0.3198 0.7170 -vn 0.6350 0.4272 0.6437 -vn 0.7692 0.1975 0.6077 -vn 0.8861 -0.1116 0.4498 -vn 0.7749 0.0834 0.6266 -vn 0.9627 0.2236 -0.1526 -vn 0.1313 0.5035 0.8539 -vn 0.2270 0.2534 0.9403 -vn 0.3776 -0.3387 0.8618 -vn 0.7165 0.3907 0.5780 -vn 0.9938 -0.0816 0.0761 -vn 0.3221 -0.1401 0.9363 -vn 0.4938 -0.0035 0.8696 -vn 0.7458 -0.1053 0.6577 -vn 0.8437 -0.0532 0.5342 -vn 0.2730 -0.0429 0.9611 -vn 0.6986 -0.4500 0.5563 -vn 0.5212 -0.6052 0.6017 -vn 0.8497 -0.5222 -0.0729 -vn 0.5628 -0.0903 0.8217 -vn 0.4442 0.1558 0.8823 -vn 0.4203 0.4260 0.8012 -vn 0.2796 0.4359 0.8554 -vn 0.0268 -0.6710 -0.7410 -vn 0.3806 0.5245 0.7616 -vn -0.1879 -0.7766 -0.6013 -vn 0.5382 -0.7030 0.4649 -vn 0.3051 0.4973 0.8122 -vn 0.4970 0.2602 0.8278 -vn 0.5395 0.3302 0.7745 -vn 0.9438 0.0762 0.3215 -vn 0.2093 -0.7220 -0.6595 -vn 0.3060 0.2522 0.9180 -vn -0.1185 -0.5455 -0.8297 -vn 0.4631 -0.8834 0.0719 -vn 0.6113 0.0834 0.7870 -vn 0.2104 -0.3654 0.9068 -vn 0.6793 0.0346 0.7331 -vn 0.5424 0.0694 0.8372 -vn -0.3724 0.5367 0.7572 -vn 0.4801 -0.0404 0.8763 -vn 0.3108 0.1662 0.9358 -vn 0.4709 0.1809 0.8634 -vn 0.7126 -0.0514 0.6997 -vn 0.7913 0.1216 0.5992 -vn 0.6293 0.4274 0.6490 -vn 0.7551 -0.3090 0.5782 -vn 0.3857 0.8847 0.2619 -vn 0.3230 0.9223 0.2121 -vn 0.2564 -0.4582 0.8510 -vn 0.0938 -0.6338 -0.7678 -vn 0.0380 0.3665 0.9296 -vn 0.6788 -0.0971 0.7278 -vn 0.9164 0.0587 0.3960 -vn 0.6531 -0.1173 0.7481 -vn 0.5633 -0.2171 0.7972 -vn 0.6581 -0.1588 0.7360 -vn 0.7728 0.2418 0.5867 -vn 0.3966 0.4867 0.7784 -vn 0.6372 0.0534 0.7688 -vn 0.5593 0.4158 0.7172 -vn 0.4750 0.7075 0.5232 -vn 0.4916 0.2466 0.8352 -vn 0.6742 -0.3078 0.6714 -vn 0.6325 -0.2416 0.7360 -vn 0.7926 0.1018 0.6012 -vn 0.7241 0.5345 0.4359 -vn 0.8268 0.2082 0.5225 -vn 0.8083 0.1630 0.5657 -vn 0.7393 0.0723 0.6695 -vn 0.0146 0.6744 0.7382 -vn 0.8844 0.1888 0.4268 -vn 0.7670 0.3431 0.5422 -vn 0.6437 -0.4347 0.6299 -vn 0.4505 0.1601 0.8783 -vn 0.2893 0.5541 0.7806 -vn 0.4437 0.5400 0.7152 -vn 0.4123 0.4893 0.7685 -vn 0.7839 -0.3358 0.5223 -vn 0.2748 0.4720 0.8377 -vn 0.7674 0.1101 0.6317 -vn 0.8040 0.2580 0.5357 -vn 0.5311 -0.4706 0.7045 -vn 0.3105 0.6180 0.7223 -vn 0.6840 -0.0782 0.7253 -vn 0.6018 -0.6678 0.4380 -vn 0.4972 0.2910 0.8174 -vn 0.6133 -0.3221 0.7212 -vn 0.5355 -0.5399 0.6494 -vn 0.7909 -0.6002 -0.1190 -vn 0.6747 -0.1704 0.7181 -vn 0.5529 0.2497 0.7949 -vn 0.8874 -0.0615 0.4568 -vn 0.4849 0.1638 0.8591 -vn 0.8593 0.0111 0.5113 -vn 0.5916 -0.3806 0.7108 -vn 0.6815 0.1620 0.7137 -vn 0.4578 -0.0146 0.8889 -vn 0.7714 -0.2843 0.5693 -vn 0.4622 -0.2150 0.8603 -vn 0.3997 -0.5324 0.7462 -vn 0.9214 0.1154 0.3711 -vn 0.8147 -0.1211 0.5671 -vn 0.9196 0.1306 0.3706 -vn 0.8115 0.2327 0.5360 -vn 0.5670 -0.5027 0.6525 -vn 0.3721 -0.0396 0.9273 -vn 0.8497 0.5240 0.0581 -vn 0.8828 -0.0828 0.4625 -vn -0.9712 -0.2375 0.0203 -vn -0.0795 0.4884 -0.8690 -vn 0.3217 0.6117 0.7227 -vn 0.1152 -0.3701 0.9218 -vn 0.6109 -0.0468 0.7904 -vn 0.8913 -0.0115 0.4532 -vn 0.8089 0.4398 0.3902 -vn -0.0808 0.0395 0.9960 -vn 0.3011 0.3216 0.8977 -vn 0.7533 -0.1267 0.6454 -vn 0.6298 0.1452 0.7631 -vn 0.5980 0.3310 0.7300 -vn 0.3860 0.6172 0.6856 -vn 0.6503 0.0272 -0.7592 -vn 0.8890 -0.3858 -0.2465 -vn 0.7255 0.3630 0.5846 -vn 0.1230 0.2799 0.9521 -vn 0.2939 0.3262 0.8984 -vn 0.2394 0.7067 0.6658 -vn 0.5771 -0.0888 0.8119 -vn 0.4575 -0.8892 0.0115 -vn -0.2280 -0.3874 -0.8933 -vn -0.7338 0.2083 -0.6466 -vn 0.8240 -0.1786 0.5377 -vn 0.1586 -0.5881 -0.7931 -vn 0.4166 -0.3179 0.8517 -vn 0.0642 0.2789 0.9582 -vn 0.5777 -0.4020 0.7104 -vn 0.4806 0.5811 0.6567 -vn 0.8990 0.1859 0.3966 -vn 0.8274 0.4294 0.3620 -vn 0.6565 0.4000 0.6395 -vn 0.7919 -0.0748 0.6060 -vn 0.5919 -0.5205 0.6154 -vn 0.0959 -0.0420 0.9945 -vn 0.3513 0.0100 0.9362 -vn 0.1613 -0.8085 -0.5660 -vn 0.6902 -0.4316 0.5808 -vn 0.6172 0.3316 0.7135 -vn 0.6188 -0.6837 -0.3869 -vn 0.8064 0.0639 0.5880 -vn 0.5021 -0.1932 0.8429 -vn 0.5332 0.1880 0.8249 -vn 0.4855 0.1269 0.8650 -vn 0.9102 -0.0887 0.4045 -vn -0.3813 0.2283 -0.8958 -vn 0.3559 -0.1060 0.9285 -vn 0.3452 0.2880 0.8932 -vn 0.3504 0.2932 0.8895 -vn 0.4616 -0.6617 0.5908 -vn 0.1453 0.8843 0.4438 -vn 0.3837 0.5933 0.7076 -vn 0.7613 0.5887 0.2718 -vn 0.1246 -0.5788 -0.8059 -vn 0.6171 -0.5022 0.6058 -vn 0.8409 -0.2582 0.4756 -vn 0.8206 -0.0675 0.5675 -vn 0.8622 -0.0019 0.5065 -vn 0.7227 -0.2344 0.6502 -vn 0.6559 -0.0940 0.7489 -vn 0.5241 0.4177 0.7422 -vn 0.4643 -0.0837 0.8817 -vn 0.7302 0.5522 -0.4022 -vn 0.3265 0.6282 0.7063 -vn 0.8198 -0.3042 0.4852 -vn 0.6338 -0.2886 0.7176 -vn 0.1924 -0.2809 0.9402 -vn 0.2147 -0.0452 0.9756 -vn 0.4263 0.3485 0.8347 -vn 0.7139 0.3843 0.5854 -vn 0.7947 -0.0773 0.6020 -vn -0.0792 -0.7596 -0.6455 -vn 0.8410 -0.2570 0.4760 -vn -0.5179 0.7437 -0.4228 -vn 0.9014 0.1934 0.3874 -vn 0.9042 0.2426 0.3515 -vn 0.9604 0.2175 -0.1742 -vn 0.3370 0.2495 0.9079 -vn 0.3722 -0.9263 -0.0584 -vn 0.6965 -0.3372 0.6334 -vn -0.6849 0.6567 0.3158 -vn -0.5394 -0.7917 0.2868 -vn 0.8692 0.3513 0.3481 -vn 0.6552 -0.0682 0.7523 -vn 0.4554 -0.0816 0.8865 -vn 0.7722 0.1116 0.6255 -vn -0.2813 0.2396 -0.9292 -vn 0.3128 0.2884 0.9050 -vn 0.2545 -0.0936 0.9625 -vn 0.4670 0.4862 0.7386 -vn 0.3825 0.0623 0.9219 -vn 0.7958 -0.4785 -0.3711 -vn 0.9968 0.0636 0.0487 -vn 0.4697 0.1336 0.8727 -vn 0.6791 -0.7268 -0.1026 -vn 0.8051 0.5521 -0.2170 -vn 0.5786 -0.0636 0.8131 -vn 0.5762 -0.0232 0.8170 -vn 0.4166 -0.8756 0.2444 -vn 0.7813 -0.3365 0.5258 -vn 0.7494 -0.2136 0.6267 -vn 0.4696 -0.6512 0.5962 -vn 0.9450 -0.0351 0.3251 -vn 0.5179 -0.2089 0.8295 -vn 0.5798 -0.4646 0.6693 -vn -0.2259 -0.4715 -0.8524 -vn 0.2371 0.6511 0.7210 -vn 0.6351 -0.7423 0.2137 -vn 0.9339 0.0410 0.3551 -vn 0.9420 -0.0976 0.3210 -vn -0.6604 -0.7232 -0.2022 -vn 0.6230 -0.0598 0.7800 -vn 0.8604 -0.5083 0.0362 -vn 0.3897 -0.5961 0.7020 -vn 0.7028 0.3681 0.6087 -vn 0.5513 -0.3912 0.7369 -vn 0.5593 0.7473 -0.3589 -vn 0.3756 0.5630 0.7362 -vn -0.8362 -0.3402 -0.4302 -vn 0.7213 -0.6856 -0.0985 -vn 0.2258 0.8470 0.4812 -vn 0.2090 0.7545 0.6221 -vn 0.4063 -0.0991 0.9084 -vn 0.8211 -0.2241 0.5250 -vn 0.5928 -0.5074 0.6254 -vn 0.6498 0.5489 0.5258 -vn 0.6070 0.0408 0.7936 -vn 0.5181 -0.2636 0.8137 -vn 0.6686 -0.7262 -0.1596 -vn 0.6052 -0.0366 0.7952 -vn 0.2127 -0.3308 -0.9194 -vn 0.2781 0.3183 0.9063 -vn 0.6754 -0.0428 0.7362 -vn 0.6155 -0.3857 0.6873 -vn 0.5922 -0.2180 0.7758 -vn 0.8682 0.2466 0.4307 -vn 0.8697 0.2700 0.4132 -vn -0.5487 0.7811 0.2980 -vn 0.2713 0.3802 0.8842 -vn 0.3592 -0.9300 -0.0779 -vn 0.0290 0.1260 -0.9916 -vn 0.1627 -0.9538 -0.2524 -vn 0.9828 0.1762 0.0553 -vn -0.4837 0.8360 0.2590 -vn -0.2166 -0.2788 -0.9356 -vn 0.7524 0.1351 0.6447 -vn 0.5000 0.5952 0.6290 -vn 0.5457 0.1940 0.8152 -vn 0.7121 0.2248 0.6651 -vn 0.9989 0.0266 -0.0398 -vn 0.2373 0.0382 0.9707 -vn 0.8055 0.3394 0.4858 -vn 0.1971 -0.0753 0.9775 -vn 0.8548 -0.4988 -0.1430 -vn 0.8920 -0.4281 -0.1454 -vn 0.3120 0.0044 0.9501 -vn 0.3787 0.5031 0.7768 -vn 0.8586 0.4960 0.1296 -vn 0.4741 -0.3327 0.8152 -vn 0.3784 0.2098 0.9015 -vn 0.6270 0.0279 0.7785 -vn 0.7249 -0.1111 0.6799 -vn 0.3549 -0.0560 0.9332 -vn 0.5051 0.0701 0.8602 -vn 0.8959 -0.3344 -0.2924 -vn 0.4023 0.3855 0.8304 -vn 0.9972 -0.0458 -0.0598 -vn 0.8985 0.0490 -0.4362 -vn 0.3112 -0.0179 0.9502 -vn 0.8019 -0.3313 0.4972 -vn 0.1257 0.9253 0.3579 -vn 0.9351 -0.0517 0.3507 -vn 0.7524 -0.4631 0.4685 -vn -0.7891 -0.5890 0.1745 -vn -0.0586 0.8161 0.5749 -vn 0.9402 0.3270 0.0950 -vn 0.6676 -0.5829 0.4632 -vn 0.5958 -0.0032 0.8031 -vn 0.1656 0.1240 0.9784 -vn 0.6242 -0.7258 0.2889 -vn -0.0861 -0.4290 -0.8992 -vn 0.8211 0.3325 0.4640 -vn 0.9160 0.2042 -0.3452 -vn 0.7627 0.0047 0.6467 -vn 0.7214 -0.5139 0.4642 -vn 0.4553 -0.5724 0.6820 -vn 0.2416 -0.3550 0.9031 -vn 0.7582 0.3827 0.5280 -vn 0.3143 -0.0458 0.9482 -vn 0.6788 0.5847 -0.4443 -vn 0.5003 -0.6606 -0.5597 -vn 0.5951 0.1547 0.7886 -vn 0.0847 -0.7767 -0.6241 -vn 0.9621 0.1548 0.2243 -vn 0.7941 -0.1866 0.5784 -vn 0.7069 0.2607 0.6575 -vn 0.6816 -0.0977 0.7252 -vn 0.4838 -0.0141 0.8751 -vn 0.8850 0.0037 0.4656 -vn 0.7310 -0.2566 0.6323 -vn 0.6880 0.0775 0.7216 -vn 0.4839 -0.6847 -0.5450 -vn 0.3203 -0.3856 0.8653 -vn 0.4148 -0.3379 0.8449 -vn 0.6377 -0.4531 0.6229 -vn 0.8730 -0.1931 0.4478 -vn 0.5416 0.0149 0.8405 -vn 0.1997 0.8511 -0.4856 -vn 0.7974 0.0002 0.6034 -vn 0.5682 -0.3992 0.7196 -vn 0.2978 0.3207 0.8991 -vn 0.2064 0.3648 0.9079 -vn 0.9783 0.2072 -0.0096 -vn 0.4140 0.2320 0.8802 -vn 0.7185 -0.3714 0.5881 -vn 0.3081 -0.0823 0.9478 -vn 0.3320 0.2705 0.9037 -vn 0.6261 0.4332 -0.6484 -vn 0.5652 0.0389 0.8241 -vn 0.1841 0.2142 0.9593 -vn 0.6975 -0.2201 0.6819 -vn 0.7771 0.4018 0.4845 -vn 0.5218 0.2060 0.8278 -vn 0.3826 0.1647 0.9091 -vn 0.8348 -0.0397 0.5491 -vn 0.2119 0.3918 0.8953 -vn 0.3237 -0.0330 0.9456 -vn 0.7373 0.0483 0.6738 -vn 0.7773 -0.3484 0.5238 -vn 0.7380 -0.3812 0.5568 -vn 0.2580 -0.0656 0.9639 -vn 0.6720 0.1117 -0.7321 -vn 0.3336 -0.1720 0.9269 -vn 0.4256 -0.0546 0.9033 -vn 0.5535 0.0730 0.8297 -vn 0.7517 -0.0261 0.6590 -vn 0.4720 -0.3806 0.7952 -vn 0.1195 0.8958 0.4280 -vn 0.2484 -0.0896 0.9645 -vn 0.3592 0.0310 0.9327 -vn 0.8274 -0.1035 0.5520 -vn 0.4965 0.3998 0.7705 -vn 0.7389 0.0558 0.6716 -vn 0.8816 0.1335 0.4526 -vn 0.6556 0.2863 0.6987 -vn 0.7391 -0.3954 0.5454 -vn 0.6293 0.3538 0.6920 -vn 0.1328 0.8898 0.4366 -vn 0.3773 0.1834 0.9077 -vn 0.9793 0.1192 0.1635 -vn 0.5930 -0.1548 0.7902 -vn 0.5293 -0.2007 0.8244 -vn 0.2824 0.3030 0.9102 -vn 0.2850 0.6269 0.7251 -vn 0.4346 -0.4528 0.7785 -vn 0.7843 -0.3709 0.4974 -vn -0.6632 0.2747 -0.6962 -vn 0.8366 -0.0832 0.5415 -vn 0.7174 -0.5804 0.3852 -vn 0.4114 -0.1443 0.9000 -vn -0.9855 0.1085 -0.1304 -vn 0.5235 -0.0291 0.8516 -vn -0.2388 0.2462 -0.9393 -vn 0.6015 0.4101 0.6856 -vn 0.3072 0.5817 0.7532 -vn 0.3312 0.2794 0.9013 -vn 0.5557 0.7052 0.4404 -vn 0.7316 0.3746 0.5697 -vn 0.2906 -0.3387 0.8949 -vn 0.7928 0.2963 0.5326 -vn 0.3793 -0.2366 0.8945 -vn 0.9949 0.0850 0.0543 -vn -0.1587 0.7497 -0.6424 -vn 0.6314 -0.4041 0.6618 -vn 0.4060 -0.1835 0.8952 -vn 0.2207 -0.1159 0.9684 -vn 0.7715 -0.6361 -0.0143 -vn 0.6168 -0.5532 0.5599 -vn 0.6222 -0.2986 0.7236 -vn 0.7257 -0.0421 0.6867 -vn 0.3598 0.2041 0.9104 -vn 0.8681 0.0511 -0.4937 -vn 0.4724 -0.2430 0.8473 -vn 0.5796 0.3522 0.7349 -vn 0.5815 -0.0119 0.8135 -vn 0.7113 -0.1298 0.6908 -vn 0.5136 -0.8006 0.3086 -vn 0.6076 -0.2153 0.7645 -vn 0.9343 -0.0556 0.3522 -vn 0.8105 -0.3538 0.4668 -vn 0.7642 -0.3515 -0.5407 -vn 0.5491 -0.0842 0.8315 -vn -0.0632 0.5085 0.8587 -vn -0.0004 0.6773 0.7357 -vn 0.4489 0.3409 0.8260 -vn 0.8724 -0.0044 -0.4888 -vn 0.3012 0.0048 0.9535 -vn 0.5960 -0.1723 0.7843 -vn 0.2820 0.1347 0.9499 -vn 0.9929 0.0906 0.0768 -vn 0.4550 -0.1166 0.8828 -vn 0.4303 -0.0054 0.9026 -vn 0.6988 0.1832 0.6914 -vn 0.9671 0.2007 -0.1561 -vn 0.5260 -0.4202 0.7394 -vn 0.6282 -0.2416 0.7396 -vn 0.5711 0.6787 0.4617 -vn 0.6111 0.2889 0.7369 -vn 0.8160 0.5176 -0.2572 -vn 0.7717 0.3485 0.5320 -vn 0.1640 0.4870 0.8579 -vn 0.3906 -0.1434 0.9093 -vn 0.2543 0.2328 0.9387 -vn 0.2450 0.7506 0.6137 -vn 0.7745 -0.1447 0.6158 -vn 0.6994 0.1638 0.6957 -vn 0.7611 -0.0151 0.6485 -vn 0.7315 -0.3103 0.6072 -vn 0.7024 -0.3810 0.6012 -vn 0.5935 0.1209 0.7957 -vn 0.7669 -0.2699 0.5823 -vn -0.0164 0.4130 -0.9106 -vn 0.7185 0.4070 0.5641 -vn -0.4637 -0.0190 -0.8858 -vn 0.3851 0.1282 0.9139 -vn 0.3819 -0.7045 -0.5982 -vn 0.9313 -0.0747 -0.3565 -vn 0.5814 -0.3358 0.7411 -vn 0.2041 0.7596 0.6176 -vn 0.5539 0.2333 0.7992 -vn 0.6372 -0.2639 0.7241 -vn 0.9201 0.0554 -0.3878 -vn -0.2560 -0.5729 -0.7786 -vn 0.3404 -0.0029 0.9403 -vn 0.7638 0.0362 0.6445 -vn 0.8614 -0.0320 0.5070 -vn 0.4407 0.6269 0.6424 -vn 0.4486 -0.4967 0.7430 -vn 0.5710 -0.6370 0.5180 -vn 0.3904 0.2715 0.8797 -vn 0.6828 -0.4088 0.6055 -vn 0.5944 0.4746 0.6491 -vn 0.8203 -0.1172 0.5598 -vn 0.4196 0.4445 0.7914 -vn 0.4711 0.2349 0.8502 -vn 0.8436 0.1780 0.5066 -vn -0.2428 0.6018 0.7608 -vn 0.2778 0.0244 0.9603 -vn 0.9062 -0.0309 0.4217 -vn 0.5585 -0.0051 0.8295 -vn 0.3589 0.4367 0.8249 -vn 0.5684 0.1504 0.8089 -vn 0.6109 0.1738 0.7724 -vn 0.5541 0.0583 0.8304 -vn 0.7690 -0.2868 0.5713 -vn 0.6237 0.3910 0.6768 -vn -0.7216 0.0808 -0.6876 -vn 0.6284 -0.7540 -0.1912 -vn 0.6567 0.2910 0.6958 -vn 0.4535 0.2309 0.8608 -vn 0.0025 0.8669 0.4985 -vn 0.3854 0.3313 0.8612 -vn 0.5632 0.0999 0.8203 -vn -0.8963 0.1539 -0.4159 -vn 0.7161 -0.1875 0.6723 -vn 0.2747 0.0645 0.9594 -vn -0.0498 0.7848 0.6178 -vn 0.3329 0.4682 0.8185 -vn 0.9474 0.2586 0.1886 -vn 0.9729 0.1554 -0.1710 -vn 0.6749 -0.4169 0.6089 -vn -0.7333 -0.0668 -0.6766 -vn 0.6577 0.4055 0.6348 -vn 0.6280 -0.7379 0.2474 -vn 0.5523 -0.3351 0.7633 -vn 0.4757 -0.4398 0.7618 -vn 0.8146 -0.2789 0.5086 -vn 0.7389 -0.4482 0.5032 -vn 0.9650 0.2202 -0.1422 -vn 0.9400 -0.0701 0.3340 -vn 0.7280 -0.2421 0.6414 -vn 0.3197 -0.6737 0.6663 -vn 0.6295 -0.1660 0.7591 -vn 0.6015 0.1909 0.7757 -vn 0.4672 -0.2163 0.8573 -vn 0.3715 0.1823 0.9104 -vn 0.8620 -0.4869 -0.1409 -vn 0.6213 0.0594 0.7813 -vn 0.6527 -0.4861 0.5812 -vn 0.8767 0.1654 0.4516 -vn 0.8441 0.3009 0.4439 -vn 0.6589 -0.4519 0.6014 -vn 0.2933 -0.2750 0.9156 -vn 0.0928 0.8601 0.5017 -vn 0.4166 0.4135 0.8096 -vn 0.4299 0.3560 0.8297 -vn 0.1976 -0.6375 0.7447 -vn -0.0666 -0.6449 -0.7613 -vn -0.2190 -0.9352 -0.2784 -vn 0.1033 0.1655 0.9808 -vn 0.5525 0.4918 0.6730 -vn 0.0232 0.2243 0.9742 -vn 0.7141 0.0539 0.6980 -vn 0.5818 -0.5568 0.5929 -vn 0.6595 -0.5156 0.5471 -vn -0.0223 -0.9997 0.0073 -vn -0.1518 0.7120 0.6856 -vn -0.1328 0.7620 0.6338 -vn 0.7596 -0.2359 0.6060 -vn 0.7841 -0.3277 0.5271 -vn -0.0111 -0.9997 0.0228 -vn -0.4685 0.7697 0.4337 -vn 0.2899 0.0296 0.9566 -vn -0.7677 -0.6077 -0.2033 -vn 0.1300 0.5790 0.8049 -vn 0.5698 0.1786 0.8022 -vn 0.2856 0.2304 0.9302 -vn 0.1864 0.7955 0.5766 -vn 0.9435 0.2915 -0.1579 -vn 0.5140 0.0145 0.8577 -vn 0.7117 -0.3975 0.5792 -vn 0.9840 -0.0359 -0.1744 -vn 0.6933 -0.3685 0.6193 -vn 0.7255 -0.2223 0.6514 -vn 0.3969 0.2667 0.8783 -vn 0.3697 0.4738 0.7993 -vn 0.5569 0.4127 0.7208 -vn 0.7619 -0.1618 0.6272 -vn -0.8548 -0.4889 -0.1741 -vn 0.7627 0.6101 0.2146 -vn -0.7330 -0.4026 -0.5482 -vn 0.9051 0.4238 -0.0350 -vn -0.0656 -0.4805 0.8745 -vn 0.3284 -0.0580 0.9428 -vn 0.6746 -0.1774 0.7166 -vn 0.4937 -0.5236 0.6943 -vn 0.5930 -0.1576 0.7896 -vn 0.7558 -0.2850 0.5895 -vn 0.5645 -0.0469 0.8241 -vn 0.6218 0.0782 0.7793 -vn 0.7661 -0.2309 0.5998 -vn -0.3911 0.7526 0.5298 -vn 0.3940 0.3886 0.8329 -vn 0.4796 -0.4900 0.7279 -vn 0.4170 -0.2563 0.8720 -vn 0.3847 0.4456 0.8084 -vn 0.7980 -0.3363 0.5001 -vn 0.2343 0.6642 0.7099 -vn 0.6019 0.0749 0.7951 -vn 0.5890 -0.6170 -0.5218 -vn 0.7211 -0.2630 0.6410 -vn 0.3521 0.6021 0.7166 -vn 0.6750 -0.1498 0.7225 -vn 0.3955 0.4225 0.8155 -vn 0.4771 -0.0708 0.8760 -vn 0.7240 -0.1876 0.6638 -vn 0.7580 0.0175 0.6520 -vn 0.2876 0.6706 0.6838 -vn -0.2720 0.5150 -0.8129 -vn 0.4958 -0.3092 0.8115 -vn 0.5535 0.3390 0.7607 -vn 0.6616 0.0825 0.7453 -vn 0.2840 0.0388 0.9580 -vn -0.7529 -0.6170 0.2291 -vn 0.5383 -0.5204 0.6629 -vn 0.6978 0.3727 0.6117 -vn 0.4901 0.3760 0.7864 -vn 0.9237 0.3710 0.0962 -vn -0.8693 -0.3920 0.3011 -vn -0.7119 -0.5916 0.3784 -vn -0.5592 0.8219 0.1082 -vn -0.9019 0.4046 0.1514 -vn 0.9828 -0.1839 -0.0141 -vn 0.9927 -0.0162 -0.1193 -vn 0.5189 -0.8508 0.0830 -vn 0.8347 0.5423 -0.0962 -vn -0.6269 -0.7467 -0.2223 -vn -0.4332 0.8700 -0.2356 -vn -0.9902 -0.1391 -0.0152 -vn -0.5690 -0.8217 0.0321 -vn -0.6233 0.7392 -0.2549 -vn 0.3842 -0.8106 -0.4419 -vn -0.7138 0.0286 0.6997 -vn -0.9719 -0.2320 0.0412 -vn 0.9369 -0.3215 -0.1375 -vn -0.9190 0.3640 -0.1513 -vn 0.9593 0.2821 0.0144 -vn 0.6127 -0.6561 -0.4407 -vn -0.8516 0.4177 0.3166 -vn -0.6756 0.5835 -0.4507 -vn -0.9913 0.0580 0.1184 -vn -0.9359 0.3313 0.1198 -vn -0.3200 0.9068 -0.2743 -vn 0.4294 0.6863 -0.5870 -vn 0.9421 -0.2986 -0.1525 -vn 0.4332 -0.8010 -0.4132 -vn 0.9805 -0.1506 -0.1259 -vn -0.8614 0.4971 0.1043 -vn 0.9780 0.1649 0.1279 -vn 0.9799 -0.1822 -0.0816 -vn 0.8957 -0.3606 -0.2603 -vn 0.7198 -0.3260 -0.6129 -vn -0.3164 0.9221 -0.2229 -vn 0.8034 0.3751 0.4624 -vn -0.9585 -0.0360 0.2827 -vn -0.3876 0.8928 -0.2295 -vn 0.7395 -0.1154 -0.6632 -vn -0.9176 -0.2344 0.3210 -vn -0.9736 0.1484 0.1735 -vn 0.2788 -0.9553 0.0986 -vn 0.8219 -0.4006 0.4050 -vn -0.7984 0.5752 0.1779 -vn 0.5044 0.1256 -0.8543 -vn -0.6185 -0.4690 -0.6304 -vn -0.8808 0.4162 0.2258 -vn -0.7664 -0.0296 -0.6416 -vn -0.7621 -0.0491 -0.6456 -vn 0.8703 -0.4440 -0.2132 -vn -0.9312 0.1461 0.3341 -vn -0.9817 -0.1018 -0.1608 -vn 0.6634 -0.0582 -0.7460 -vn 0.9737 -0.2275 0.0090 -vn 0.9208 0.2686 0.2830 -vn 0.1851 -0.9759 0.1155 -vn -0.1319 -0.5122 0.8487 -vn -0.8740 -0.1298 -0.4683 -vn -0.9940 0.0774 0.0770 -vn -0.9004 0.0891 -0.4258 -vn -0.7889 -0.4533 -0.4149 -vn 0.6581 -0.3448 -0.6693 -vn 0.9593 0.2742 0.0672 -vn 0.9994 -0.0011 0.0336 -vn 0.7386 -0.0419 -0.6729 -vn -0.4976 0.8594 0.1171 -vn 0.9087 0.4143 0.0518 -vn 0.8594 -0.1046 -0.5004 -vn 0.4540 -0.8630 -0.2217 -vn 0.8375 0.5249 0.1515 -vn -0.5462 0.8148 0.1944 -vn 0.4049 -0.7169 -0.5675 -vn 0.9996 -0.0094 0.0259 -vn 0.9449 0.2940 0.1437 -vn 0.9319 0.3286 0.1533 -vn 0.9672 0.1363 0.2142 -vn 0.8092 0.0074 -0.5875 -vn 0.7505 -0.3418 -0.5656 -vn -0.0050 -0.9997 0.0257 -vn 0.7357 -0.1431 -0.6621 -vn 0.9701 -0.2168 -0.1090 -vn 0.9202 0.2543 0.2975 -vn -0.3813 -0.0869 -0.9204 -vn -0.8576 -0.5100 0.0661 -vn -0.7450 0.2329 -0.6251 -vn -0.9312 0.2142 -0.2949 -vn 0.8974 0.0061 -0.4412 -vn 0.7827 -0.5385 0.3122 -vn -0.3061 0.6971 0.6483 -vn 0.9624 -0.2440 -0.1191 -vn 0.0107 -0.9997 -0.0212 -vn 0.8236 0.0076 -0.5671 -vn 0.7650 0.1290 -0.6310 -vn -0.5412 0.8079 0.2331 -vn 0.6981 -0.0610 -0.7134 -vn 0.8176 -0.0052 -0.5758 -vn 0.6329 -0.6262 -0.4553 -vn 0.7679 0.1901 -0.6117 -vn -0.8445 -0.5041 -0.1808 -vn -0.9383 0.3369 -0.0783 -vn 0.9984 -0.0106 0.0559 -vn 0.1158 0.1028 -0.9879 -vn 0.9811 -0.1537 -0.1177 -vn 0.9908 -0.0301 -0.1318 -vn -0.6642 0.3027 -0.6835 -vn -0.3085 0.7007 -0.6433 -vn -0.4035 -0.5934 -0.6965 -vn 0.0372 -0.7235 -0.6893 -vn -0.9457 -0.1953 -0.2600 -vn -0.8875 0.2255 -0.4018 -vn 0.9242 0.3538 -0.1434 -vn -0.7861 0.6119 0.0879 -vn -0.9437 0.3068 -0.1235 -vn -0.0627 -0.4526 -0.8895 -vn -0.6427 -0.4706 -0.6045 -vn 0.8285 -0.1864 -0.5280 -vn 0.6967 -0.2916 -0.6555 -vn -0.5020 0.8574 -0.1137 -vn 0.1107 0.6530 -0.7492 -vn -0.3329 0.9193 0.2097 -vn -0.7954 -0.5857 -0.1561 -vn -0.9645 -0.2187 -0.1484 -vn -0.1396 -0.3285 -0.9341 -vn -0.9233 -0.0992 -0.3710 -vn -0.8683 0.0189 -0.4956 -vn -0.8262 -0.1115 -0.5522 -vn -0.8625 0.4349 -0.2586 -vn -0.0594 -0.3725 -0.9261 -vn 0.9997 0.0011 0.0252 -vn 0.6612 -0.7305 -0.1709 -vn -0.2315 0.2151 -0.9488 -vn -0.5634 0.8217 -0.0862 -vn 0.0295 0.2387 -0.9706 -vn -0.8794 0.4666 -0.0952 -vn 0.1178 0.7389 -0.6634 -vn 0.7325 0.1659 -0.6602 -vn -0.8975 0.1449 -0.4165 -vn -0.8917 0.3938 -0.2229 -vn -0.6688 -0.6727 -0.3165 -vn -0.8361 -0.4462 -0.3191 -vn 0.8306 -0.2005 -0.5196 -vn -0.8595 0.4948 -0.1278 -vn -0.8704 -0.3863 0.3052 -vn -0.1957 -0.3796 -0.9042 -vn -0.6824 -0.6854 0.2543 -vn -0.7043 -0.3168 -0.6353 -vn 0.7007 0.6120 -0.3667 -vn 0.6078 -0.7626 -0.2215 -vn 0.0752 -0.8141 -0.5758 -vn 0.9125 -0.0368 0.4074 -vn 0.8921 -0.3702 -0.2591 -vn 0.5224 -0.2605 -0.8119 -vn 0.9894 0.0338 0.1415 -vn -0.9170 -0.3459 0.1987 -vn 0.7732 -0.3142 -0.5509 -vn -0.7712 -0.3732 -0.5157 -vn 0.8805 -0.3357 -0.3348 -vn -0.9224 -0.3065 -0.2350 -vn 0.5808 -0.2333 -0.7799 -vn 0.7615 -0.1381 -0.6333 -vn 0.8864 -0.3695 0.2788 -vn 0.9421 -0.3327 0.0416 -vn 0.8058 0.2824 0.5206 -vn 0.8906 -0.4547 -0.0073 -vn 0.7400 -0.1514 -0.6553 -vn 0.7853 -0.5216 -0.3335 -vn -0.8144 -0.5637 -0.1378 -vn 0.5594 0.5663 0.6053 -vn -0.9408 -0.3168 0.1203 -vn 0.8143 -0.4573 -0.3574 -vn -0.8493 0.5092 -0.1394 -vn 0.4587 -0.8171 -0.3493 -vn -0.9694 0.1067 0.2212 -vn 0.9989 -0.0361 0.0294 -vn -0.3540 0.8373 -0.4165 -vn 0.9710 -0.2389 0.0016 -vn 0.9672 -0.2295 -0.1090 -vn -0.9358 0.1858 -0.2996 -vn 0.6060 -0.7121 -0.3545 -vn -0.9076 0.2539 -0.3343 -vn 0.7617 -0.4397 -0.4759 -vn 0.8548 -0.4757 -0.2075 -vn 0.8405 -0.4975 -0.2147 -vn 0.9186 0.2445 0.3103 -vn -0.9433 -0.2167 0.2514 -vn 0.6090 0.1695 -0.7749 -vn 0.5770 -0.7519 0.3189 -vn -0.5886 -0.6878 -0.4248 -vn -0.8344 0.2474 -0.4925 -vn -0.8051 -0.0456 -0.5914 -vn 0.8857 -0.3117 -0.3440 -vn -0.9676 0.2291 -0.1060 -vn 0.8215 -0.2944 -0.4883 -vn -0.9266 0.3109 -0.2117 -vn -0.9665 -0.1515 0.2071 -vn -0.8950 0.1807 0.4077 -vn 0.9380 -0.3423 0.0554 -vn 0.5251 0.2740 -0.8057 -vn 0.6182 -0.5020 -0.6048 -vn 0.7845 -0.5795 -0.2209 -vn 0.6672 -0.7011 -0.2517 -vn -0.7654 -0.5448 -0.3425 -vn 0.7250 0.0647 -0.6857 -vn 0.6486 -0.6096 -0.4557 -vn -0.9225 0.0995 -0.3730 -vn 0.7078 -0.5175 -0.4809 -vn 0.7972 -0.5663 -0.2094 -vn 0.7866 -0.5782 -0.2165 -vn 0.7950 -0.5111 -0.3266 -vn 0.4032 -0.9147 -0.0279 -vn 0.9960 -0.0882 0.0113 -vn 0.9106 0.3867 0.1461 -vn 0.9900 0.1383 -0.0290 -vn 0.6332 -0.7209 -0.2816 -vn 0.4236 0.6474 -0.6336 -vn 0.7805 -0.2057 -0.5904 -vn 0.6881 -0.3861 -0.6144 -vn 0.4437 0.3621 -0.8197 -vn 0.7485 -0.5915 0.2997 -vn 0.8456 -0.5016 -0.1827 -vn 0.8631 -0.4798 -0.1574 -vn -0.7908 0.5820 -0.1895 -vn -0.3058 0.9500 0.0625 -vn 0.5467 -0.8024 -0.2394 -vn -0.7748 -0.6195 -0.1261 -vn 0.9236 -0.3820 -0.0318 -vn 0.7509 -0.6387 0.1680 -vn 0.9676 0.2524 -0.0014 -vn -0.2005 -0.7632 0.6142 -vn 0.9052 -0.4089 -0.1161 -vn 0.0997 -0.8607 -0.4992 -vn 0.6102 0.4816 -0.6290 -vn -0.7157 0.5354 -0.4484 -vn -0.8290 -0.1901 -0.5259 -vn 0.3231 0.3440 -0.8816 -vn 0.9107 -0.3937 -0.1251 -vn 0.8785 0.1109 -0.4648 -vn 0.7026 -0.5160 -0.4900 -vn 0.4855 -0.8070 0.3363 -vn -0.5734 -0.4309 0.6968 -vn 0.4253 -0.4518 -0.7842 -vn -0.1562 -0.0403 -0.9869 -vn 0.0360 -0.8971 -0.4404 -vn -0.8855 -0.4106 -0.2176 -vn 0.9904 -0.0412 0.1319 -vn -0.0549 -0.9951 -0.0823 -vn 0.9660 0.1770 -0.1884 -vn 0.2659 0.3187 0.9098 -vn -0.1934 0.6201 -0.7603 -vn 0.9732 0.2013 0.1109 -vn 0.2614 0.5744 0.7757 -vn -0.7994 -0.5826 -0.1466 -vn 0.8763 -0.2005 -0.4381 -vn -0.6761 0.7210 -0.1520 -vn 0.8874 -0.1638 -0.4310 -vn 0.8010 0.1490 -0.5798 -vn 0.8135 -0.1009 -0.5728 -vn 0.8357 -0.1644 -0.5239 -vn 0.6932 -0.6599 0.2898 -vn 0.7121 0.1135 -0.6929 -vn 0.9867 0.1379 0.0866 -vn -0.9435 -0.3116 -0.1132 -vn -0.5353 -0.8080 -0.2461 -vn 0.9501 -0.2742 -0.1484 -vn 0.9907 -0.1180 -0.0674 -vn 0.9939 0.0056 0.1105 -vn -0.8489 -0.5124 -0.1297 -vn 0.8417 0.4795 0.2482 -vn -0.9191 0.2360 -0.3156 -vn 0.8852 -0.3123 -0.3449 -vn -0.7767 0.5484 0.3099 -vn 0.9944 -0.0639 -0.0836 -vn 0.0937 -0.9041 -0.4168 -vn 0.6664 -0.1627 -0.7276 -vn 0.8252 -0.1842 -0.5340 -vn 0.0293 -0.9979 0.0582 -vn 0.4488 -0.8536 -0.2644 -vn 0.1140 0.1424 -0.9832 -vn 0.8011 0.0023 -0.5986 -vn -0.2705 0.2439 -0.9313 -vn 0.9946 0.0946 0.0423 -vn 0.9990 0.0020 0.0447 -vn 0.9501 0.2465 0.1912 -vn 0.7341 -0.1466 -0.6631 -vn 0.7768 -0.1572 -0.6098 -vn 0.6839 -0.4959 0.5352 -vn 0.5427 -0.2879 0.7891 -vn -0.3681 -0.9075 0.2025 -vn -0.2857 -0.8969 0.3376 -vn 0.0139 -0.9992 0.0388 -vn -0.1771 -0.9395 -0.2933 -vn 0.8602 -0.0331 -0.5089 -vn 0.8492 -0.5038 -0.1583 -vn -0.9469 -0.1339 0.2923 -vn 0.7755 -0.5866 -0.2334 -vn 0.7983 -0.5487 -0.2484 -vn 0.0667 -0.8336 -0.5483 -vn 0.1804 -0.9385 -0.2944 -vn 0.7828 -0.5761 -0.2351 -vn 0.9773 0.1264 0.1700 -vn 0.8915 -0.0364 -0.4515 -vn -0.6873 0.4404 -0.5776 -vn 0.9117 -0.1644 -0.3766 -vn 0.0095 -0.9997 -0.0230 -vn 0.6763 -0.5600 -0.4786 -vn 0.7814 -0.1390 -0.6083 -vn 0.8512 -0.5053 -0.1420 -vn -0.5183 0.6375 -0.5700 -vn -0.4472 0.8593 0.2482 -vn -0.9107 -0.3372 -0.2384 -vn -0.4860 0.8020 -0.3472 -vn -0.6614 0.6592 -0.3577 -vn 0.8025 -0.4265 -0.4172 -vn 0.6223 -0.1005 -0.7763 -vn -0.4481 -0.8125 -0.3728 -vn -0.9166 0.3613 -0.1713 -vn 0.6318 -0.7442 0.2166 -vn 0.6687 -0.5990 -0.4404 -vn -0.6868 -0.4113 -0.5992 -vn 0.9091 -0.2343 -0.3445 -vn -0.6072 0.4165 -0.6766 -vn 0.5066 0.3424 -0.7913 -vn 0.3908 -0.0658 -0.9181 -vn 0.9592 -0.2812 -0.0287 -vn -0.9594 0.1404 -0.2445 -vn -0.6301 -0.7688 -0.1087 -vn 0.5531 -0.4499 -0.7012 -vn 0.6000 -0.6761 -0.4276 -vn 0.8861 -0.0323 -0.4623 -vn 0.8495 -0.2903 -0.4406 -vn 0.8549 -0.4952 -0.1547 -vn -0.9934 0.0261 -0.1115 -vn -0.6959 0.7070 -0.1260 -vn -0.7128 0.3254 -0.6213 -vn 0.8736 -0.3431 -0.3451 -vn -0.9835 0.0650 -0.1691 -vn 0.6946 0.0345 -0.7186 -vn 0.9996 -0.0275 0.0110 -vn 0.9731 0.2020 0.1110 -vn -0.9949 0.0959 0.0319 -vn -0.8238 0.2640 -0.5016 -vn 0.8154 0.1611 -0.5560 -vn 0.7513 -0.3760 -0.5424 -vn -0.8794 -0.2104 -0.4271 -vn 0.5820 -0.4658 -0.6666 -vn -0.5878 0.8016 0.1095 -vn -0.2125 0.6426 -0.7361 -vn 0.5129 -0.7466 -0.4238 -vn 0.6061 -0.7619 -0.2282 -vn 0.8090 -0.4781 -0.3419 -vn 0.4143 -0.7400 -0.5298 -vn 0.9733 0.2295 0.0064 -vn 0.9377 0.0083 -0.3475 -vn 0.8646 0.0029 -0.5024 -vn 0.6776 -0.2733 -0.6828 -vn 0.1920 -0.8336 -0.5179 -vn 0.1035 -0.9805 0.1672 -vn -0.9945 0.0390 -0.0972 -vn -0.9329 -0.1792 -0.3124 -vn -0.9638 -0.0277 -0.2651 -vn 0.7882 -0.3730 0.4895 -vn 0.5853 -0.6122 0.5316 -vn 0.9343 0.1434 0.3263 -vn 0.9981 -0.0602 0.0126 -vn 0.6664 -0.4905 -0.5615 -vn -0.9085 0.3383 0.2452 -vn 0.5842 -0.1914 -0.7887 -vn 0.7106 -0.5942 -0.3768 -vn 0.5306 -0.4086 0.7426 -vn -0.1513 0.9828 -0.1056 -vn 0.2461 0.4109 0.8778 -vn 0.8956 0.2604 0.3606 -vn -0.1459 -0.3982 -0.9056 -vn 0.5050 -0.8243 -0.2560 -vn -0.9779 0.2088 -0.0101 -vn 0.5982 0.0552 -0.7995 -vn 0.9929 0.1039 0.0588 -vn 0.4607 -0.7582 -0.4614 -vn 0.5305 -0.5978 0.6010 -vn -0.8839 -0.3739 0.2809 -vn 0.0369 0.5831 -0.8116 -vn -0.0583 0.3934 -0.9175 -vn 0.6135 -0.1276 -0.7793 -vn 0.1261 -0.7814 -0.6111 -vn 0.7712 -0.5212 -0.3656 -vn 0.5134 -0.8158 0.2661 -vn 0.3660 0.3385 0.8669 -vn 0.8588 0.3566 0.3679 -vn -0.3233 -0.3482 -0.8799 -vn 0.6379 -0.5249 0.5635 -vn 0.6906 -0.5695 -0.4458 -vn -0.0944 -0.7363 -0.6701 -vn 0.9363 0.2208 0.2729 -vn 0.9628 0.1548 0.2215 -vn 0.9409 -0.0959 0.3249 -vn 0.2200 0.5646 -0.7955 -vn 0.8825 -0.3365 -0.3287 -vn 0.8472 -0.1884 -0.4967 -vn 0.7366 -0.1393 -0.6618 -vn 0.8033 0.1065 -0.5859 -vn 0.7477 -0.5078 -0.4279 -vn 0.8880 -0.1656 -0.4290 -vn 0.9254 0.1318 0.3554 -vn 0.4272 -0.8956 -0.1239 -vn 0.4717 -0.6516 0.5940 -vn 0.6677 -0.7430 -0.0461 -vn 0.1082 -0.7901 -0.6034 -vn 0.5348 -0.7755 0.3355 -vn 0.4960 -0.7270 -0.4749 -vn 0.9494 0.1842 0.2544 -vn 0.7590 -0.0996 -0.6434 -vn 0.1230 -0.1352 -0.9832 -vn 0.7215 -0.1998 -0.6629 -vn 0.4986 -0.8613 -0.0972 -vn 0.9428 0.2189 0.2516 -vn 0.8866 0.3468 0.3061 -vn 0.4153 0.8909 -0.1837 -vn 0.9296 0.3250 0.1739 -vn 0.0259 -0.7077 -0.7060 -vn -0.1529 -0.9723 0.1766 -vn 0.9473 -0.3139 -0.0645 -vn 0.9794 0.1452 0.1404 -vn 0.9461 -0.2022 -0.2530 -vn -0.3782 0.7540 0.5370 -vn 0.9926 -0.0718 0.0980 -vn 0.1013 -0.6481 0.7548 -vn 0.7650 -0.4437 -0.4668 -vn 0.5656 -0.8058 -0.1752 -vn 0.9753 0.1471 0.1648 -vn 0.7390 -0.6590 -0.1402 -vn 0.9491 0.0262 0.3139 -vn 0.9067 0.3493 0.2364 -vn 0.9198 0.2903 -0.2639 -vn 0.8378 0.4321 0.3339 -vn 0.9623 -0.0793 0.2600 -vn 0.8207 -0.2852 -0.4951 -vn 0.8603 -0.0790 -0.5036 -vn 0.9451 0.0088 0.3267 -vn -0.9750 -0.2203 0.0291 -vn 0.9766 0.1145 0.1820 -vn 0.8789 0.2752 -0.3897 -vn 0.1796 -0.9549 -0.2363 -vn 0.9653 0.2546 0.0586 -vn 0.9429 0.0563 0.3282 -vn 0.3859 0.6309 -0.6731 -vn 0.6746 -0.5325 0.5112 -vn 0.8758 -0.3838 0.2928 -vn 0.9157 0.0026 0.4018 -vn 0.6298 -0.5483 -0.5502 -vn 0.1456 -0.6514 -0.7446 -vn -0.1861 -0.3727 -0.9091 -vn 0.2902 -0.4286 0.8556 -vn 0.9783 0.1034 0.1794 -vn 0.9694 0.2051 0.1346 -vn 0.9830 0.1704 0.0677 -vn 0.7843 -0.5616 0.2637 -vn 0.8534 -0.4836 0.1946 -vn 0.9701 -0.0624 0.2345 -vn 0.1719 -0.8017 -0.5724 -vn 0.8338 -0.1774 -0.5228 -vn 0.9827 0.1467 0.1133 -vn 0.8996 0.4013 0.1720 -vn 0.9048 0.3947 0.1598 -vn 0.9373 0.3279 0.1184 -vn -0.2536 0.8281 -0.5000 -vn 0.6817 -0.5378 -0.4960 -vn 0.9792 0.1985 0.0415 -vn 0.8616 0.4326 0.2656 -vn 0.9776 0.1374 0.1596 -vn 0.9794 -0.0735 0.1880 -vn 0.9547 -0.1682 0.2454 -vn 0.9694 -0.2174 0.1141 -vn 0.9831 0.1436 0.1137 -vn 0.9519 0.2868 0.1080 -vn 0.9554 0.2836 0.0822 -vn 0.6817 -0.7298 0.0523 -vn 0.9967 -0.0608 0.0533 -vn 0.9111 0.4078 0.0603 -vn 0.9217 0.1070 0.3729 -vn 0.4905 -0.7889 -0.3702 -vn 0.8623 0.3539 0.3622 -vn 0.8348 0.4104 0.3670 -vn 0.9243 0.3137 0.2174 -vn 0.7974 0.5346 -0.2799 -vn 0.6410 -0.7561 0.1320 -vn 0.6335 -0.7609 0.1402 -vn 0.9365 -0.3085 0.1666 -vn 0.9659 -0.0690 0.2496 -vn 0.8727 0.4011 0.2786 -vn 0.9109 0.4042 -0.0832 -vn -0.9802 -0.1393 0.1405 -vn -0.3528 0.8100 0.4685 -vn -0.2115 0.9714 -0.1081 -vn -0.6294 -0.4174 -0.6555 -vn -0.1084 0.1008 -0.9890 -vn 0.9565 0.2482 0.1536 -vn 0.3325 0.1687 0.9279 -vn -0.9842 0.1232 0.1275 -vn 0.9780 0.0973 -0.1845 -vn 0.9770 -0.0797 0.1976 -vn 0.8365 -0.5443 0.0638 -vn -0.6223 0.7651 0.1657 -vn 0.0077 1.0000 0.0017 -vn -0.0645 0.9946 0.0811 -vn -0.2087 0.9717 -0.1108 -vn 0.8338 0.4571 0.3095 -vn 0.4655 0.7120 0.5258 -vn 0.7415 0.5614 0.3673 -vn -0.3684 0.9113 0.1840 -vn 0.2669 0.9563 0.1197 -vn 0.2656 0.8208 0.5057 -vn 0.8127 0.4249 0.3987 -vn 0.2269 0.9707 0.0793 -vn -0.3791 -0.8766 -0.2964 -vn -0.8381 -0.5437 -0.0458 -vn -0.3897 0.8602 0.3290 -vn -0.8064 -0.5643 0.1768 -vn -0.9667 0.1887 0.1730 -vn -0.1206 -0.7272 -0.6758 -vn 0.8272 0.5499 -0.1155 -vn 0.3868 0.3324 0.8602 -vn 0.5171 0.6944 0.5004 -vn 0.9757 -0.1777 -0.1285 -vn 0.0769 -0.2942 0.9527 -vn 0.8526 0.3619 0.3769 -vn -0.5989 0.6019 0.5282 -vn 0.6757 0.7372 0.0021 -vn 0.5770 0.7439 0.3371 -vn 0.3766 0.7496 0.5443 -vn 0.4847 0.8735 -0.0452 -vn -0.8109 0.0855 0.5789 -vn 0.4851 0.8733 -0.0449 -vn 0.4358 0.8690 0.2344 -vn 0.0923 0.8956 0.4351 -vn -0.1347 0.9245 0.3565 -vn -0.1625 0.9195 0.3580 -vn 0.4852 0.8024 -0.3473 -vn 0.1167 0.9676 0.2241 -vn -0.0295 0.8672 0.4972 -vn -0.2603 0.8340 0.4866 -vn 0.8263 0.5614 0.0441 -vn 0.1824 0.9821 -0.0471 -vn 0.0917 0.9757 0.1988 -vn 0.0660 0.9916 -0.1108 -vn -0.2296 0.8672 0.4419 -vn -0.0869 0.8431 0.5306 -vn -0.2740 0.8058 0.5249 -vn 0.0298 0.6701 0.7417 -vn -0.4799 0.8610 -0.1688 -vn -0.6489 -0.0550 0.7589 -vn -0.0342 0.9921 -0.1208 -vn -0.1036 0.9830 0.1518 -vn -0.2917 0.8901 0.3502 -vn 0.7899 0.3596 0.4968 -vn 0.8804 0.4696 0.0660 -vn -0.8931 0.3818 -0.2377 -vn -0.2660 0.9383 0.2212 -vn 0.4602 0.7518 0.4722 -vn 0.4228 0.5863 0.6910 -vn -0.3392 0.8677 0.3635 -vn -0.3581 0.9331 -0.0338 -vn -0.4245 0.9054 -0.0008 -vn 0.0842 0.9962 -0.0223 -vn 0.6509 0.6685 0.3598 -vn 0.7192 0.4394 0.5382 -vn 0.8163 0.5231 0.2450 -vn 0.9401 0.0900 0.3289 -vn -0.1065 0.9701 -0.2183 -vn -0.3312 0.7472 0.5761 -vn -0.1160 0.8782 0.4640 -vn -0.2925 0.9529 0.0804 -vn -0.5975 0.7152 -0.3626 -vn -0.9761 0.1423 -0.1645 -vn 0.0674 0.9977 -0.0093 -vn -0.0325 0.7298 0.6828 -vn 0.2663 0.9636 0.0242 -vn 0.7235 0.6842 0.0919 -vn -0.7733 0.5731 -0.2712 -vn -0.8238 -0.5668 -0.0086 -vn -0.1205 0.9571 -0.2636 -vn 0.6581 0.7459 -0.1031 -vn 0.8991 0.4050 0.1659 -vn 0.8703 0.4060 0.2789 -vn 0.7954 0.5799 -0.1762 -vn 0.8690 0.3686 0.3301 -vn 0.3456 0.9310 -0.1178 -vn 0.3731 -0.8487 -0.3749 -vn -0.9892 0.1427 0.0319 -vn 0.9877 0.1440 0.0604 -vn -0.0772 0.9780 -0.1936 -vn 0.7399 0.5211 0.4254 -vn 0.7056 0.6480 0.2867 -vn 0.9670 0.2535 -0.0256 -vn -0.9976 0.0490 -0.0494 -vn 0.7062 0.6052 0.3674 -vn -0.6107 -0.7728 0.1726 -vn 0.5935 0.6913 0.4121 -vn -0.0384 -0.4831 0.8747 -vn 0.1216 0.9575 0.2614 -vn -0.1185 0.9926 0.0283 -vn 0.0266 0.9960 -0.0859 -vn 0.9735 0.2185 -0.0670 -vn 0.8533 0.5205 -0.0316 -vn 0.0964 0.7226 0.6845 -vn 0.1991 0.9765 0.0827 -vn 0.3843 0.7511 0.5368 -vn 0.7057 0.6357 -0.3127 -vn 0.8519 0.4654 0.2403 -vn 0.1708 0.9853 0.0062 -vn 0.1034 -0.9260 -0.3630 -vn -0.3051 0.8045 0.5096 -vn -0.6971 0.6957 0.1733 -vn 0.2469 0.9548 -0.1653 -vn 0.4932 0.8169 0.2990 -vn 0.3438 0.9365 -0.0697 -vn -0.9592 -0.0690 -0.2741 -vn 0.1871 0.9673 0.1714 -vn -0.3911 0.3955 -0.8311 -vn -0.6635 0.3122 -0.6800 -vn -0.1926 -0.7832 -0.5912 -vn -0.9916 -0.1087 -0.0699 -vn 0.2914 0.9530 -0.0828 -vn 0.3834 0.9031 -0.1934 -vn 0.1566 0.9394 0.3049 -vn 0.7418 0.5161 0.4282 -vn 0.8468 0.4631 0.2615 -vn 0.4142 0.8733 -0.2566 -vn -0.7491 0.5640 0.3477 -vn 0.0111 0.8545 0.5193 -vn 0.2133 0.9189 0.3319 -vn 0.2631 0.8798 0.3958 -vn 0.3287 0.8775 0.3492 -vn 0.3541 0.9343 -0.0414 -vn 0.4819 0.8317 0.2757 -vn -0.1508 0.9885 0.0088 -vn -0.8844 -0.3349 0.3252 -vn -0.2199 0.7161 0.6625 -vn -0.0654 0.8369 0.5435 -vn -0.8897 -0.4549 0.0400 -vn 0.1851 0.9736 0.1332 -vn 0.4643 0.8842 0.0516 -vn 0.4014 0.5261 0.7498 -vn -0.0017 0.9693 0.2460 -vn 0.9515 0.2872 0.1099 -vn 0.2006 0.8481 0.4904 -vn -0.0056 0.9312 0.3644 -vn -0.9863 0.1632 0.0257 -vn -0.3939 0.8228 0.4097 -vn -0.1300 0.8394 0.5278 -vn 0.1752 -0.8318 -0.5267 -vn -0.3497 0.8988 -0.2644 -vn -0.3410 0.9139 -0.2201 -vn 0.8659 0.4644 0.1859 -vn 0.0340 0.7499 0.6606 -vn 0.9136 0.3939 0.1011 -vn -0.8031 0.5641 0.1921 -vn -0.3019 0.9429 -0.1409 -vn -0.3441 0.9151 -0.2100 -vn 0.6264 0.6580 0.4179 -vn -0.1755 0.6113 0.7717 -vn -0.4924 0.8517 0.1793 -vn -0.1634 0.8334 0.5280 -vn 0.7225 0.6883 0.0655 -vn -0.9685 0.0957 0.2300 -vn 0.8432 0.4700 0.2611 -vn -0.1720 0.9716 0.1624 -vn -0.0030 0.9644 0.2643 -vn -0.1747 0.9844 -0.0206 -vn 0.8527 0.5126 0.1005 -vn 0.2248 0.9733 0.0471 -vn -0.9417 0.2435 0.2323 -vn -0.1527 0.8822 0.4453 -vn -0.3243 0.8340 0.4464 -vn -0.4833 0.7830 0.3916 -vn 0.0381 0.9002 0.4338 -vn -0.2011 0.8108 0.5497 -vn -0.4257 0.8071 0.4092 -vn -0.3512 0.7743 0.5264 -vn 0.2055 0.7410 0.6392 -vn 0.2000 0.9671 0.1572 -vn 0.9119 -0.2338 -0.3373 -vn -0.0170 0.8562 0.5164 -vn -0.4521 0.8606 0.2344 -vn 0.6117 0.7381 0.2846 -vn 0.1357 0.9908 0.0018 -vn 0.0698 0.9299 0.3612 -vn 0.8020 0.5746 -0.1634 -vn -0.5312 0.1908 -0.8255 -vn 0.5546 -0.7987 -0.2336 -vn 0.3696 0.8931 0.2565 -vn 0.1273 0.6848 0.7176 -vn -0.0073 0.9998 -0.0188 -vn -0.0848 0.9902 0.1106 -vn 0.1497 0.9766 0.1546 -vn 0.8201 0.4595 0.3411 -vn 0.1476 0.9884 0.0348 -vn 0.3635 0.9311 -0.0311 -vn 0.1831 0.9739 -0.1341 -vn 0.3782 0.9032 -0.2030 -vn -0.6283 0.2550 -0.7349 -vn 0.0309 0.9995 0.0049 -vn 0.1155 0.9821 0.1486 -vn 0.1398 0.8729 0.4673 -vn 0.0513 0.9756 0.2135 -vn -0.5742 0.8187 -0.0058 -vn 0.7370 0.5625 0.3746 -vn 0.3250 0.9174 0.2298 -vn 0.1699 0.9438 0.2834 -vn 0.6316 0.5012 0.5915 -vn 0.9968 0.0696 0.0392 -vn -0.5484 0.7242 0.4182 -vn 0.6618 0.6505 0.3727 -vn -0.8990 -0.3802 0.2175 -vn 0.2036 0.9753 0.0860 -vn 0.3557 0.9106 0.2103 -vn 0.7943 -0.1443 0.5902 -vn 0.8213 0.0765 0.5654 -vn -0.4436 0.8556 -0.2667 -vn 0.2317 0.9212 0.3126 -vn 0.1218 0.8671 0.4831 -vn 0.2385 0.9671 -0.0886 -vn -0.9358 -0.0528 0.3485 -vn -0.9159 -0.3967 -0.0610 -vn -0.9656 -0.0576 0.2537 -vn 0.8186 0.4973 0.2873 -vn -0.3497 0.8729 0.3403 -vn -0.1457 0.8380 0.5259 -vn 0.9613 -0.2494 -0.1168 -vn 0.2005 0.9022 0.3819 -vn -0.0038 0.9412 0.3379 -vn -0.2076 0.1142 -0.9715 -vn 0.8415 0.3777 0.3863 -vn -0.3287 0.8427 0.4263 -vn 0.6102 0.6450 0.4601 -vn -0.8634 -0.1576 -0.4792 -vn -0.3172 -0.9118 -0.2609 -vn 0.0270 0.9981 -0.0561 -vn -0.6831 0.6348 0.3612 -vn 0.3177 0.9355 -0.1548 -vn 0.4836 0.8462 -0.2239 -vn -0.3298 0.8287 0.4522 -vn 0.5679 -0.1869 -0.8016 -vn -0.0611 0.9087 0.4129 -vn 0.4655 -0.8846 -0.0285 -vn 0.8318 0.1717 0.5278 -vn 0.1642 0.8303 0.5326 -vn 0.2061 0.6866 0.6972 -vn 0.8539 0.5101 0.1034 -vn 0.8153 0.5046 0.2842 -vn 0.1583 0.9827 -0.0966 -vn -0.2696 0.7951 0.5433 -vn 0.1504 0.7565 0.6365 -vn 0.0049 0.9648 0.2629 -vn -0.3870 0.8878 0.2491 -vn -0.3211 0.9343 0.1551 -vn 0.3285 0.8362 0.4391 -vn 0.2832 0.1185 0.9517 -vn -0.2150 0.8665 0.4505 -vn 0.4051 0.1034 0.9084 -vn 0.4375 -0.8654 -0.2442 -vn 0.6474 0.7416 0.1758 -vn 0.4237 0.8204 0.3840 -vn 0.8213 0.5617 -0.1000 -vn 0.4267 0.8832 -0.1947 -vn -0.0678 0.9943 0.0824 -vn -0.9810 0.0554 -0.1859 -vn -0.4569 0.7894 0.4100 -vn -0.1003 0.9823 0.1582 -vn 0.0538 0.9986 -0.0010 -vn -0.4057 0.7901 0.4594 -vn 0.0577 0.9983 -0.0047 -vn -0.7481 0.5872 0.3092 -vn -0.8017 0.5231 0.2893 -vn 0.8559 0.1951 0.4789 -vn 0.8153 0.5649 0.1274 -vn 0.8280 0.5517 0.1005 -vn -0.5883 0.7617 -0.2715 -vn -0.4030 0.8524 -0.3331 -vn -0.0285 0.9936 -0.1091 -vn 0.7311 0.5644 0.3834 -vn 0.7056 0.5567 0.4384 -vn -0.2475 0.8991 0.3612 -vn 0.8989 0.2424 0.3649 -vn 0.9208 0.2080 0.3301 -vn 0.8722 0.3580 0.3335 -vn 0.8001 0.5751 -0.1708 -vn 0.0578 0.9983 -0.0100 -vn 0.5230 0.7312 0.4378 -vn 0.0105 0.9952 -0.0973 -vn 0.1348 0.9444 0.2998 -vn -0.4560 0.8885 -0.0506 -vn -0.1246 0.9462 0.2988 -vn 0.4609 0.8768 0.1375 -vn -0.8839 -0.4122 0.2208 -vn -0.9942 0.1020 -0.0352 -vn -0.2395 0.9292 0.2815 -vn -0.4474 0.8930 0.0486 -vn 0.3818 0.8412 0.3829 -vn 0.2789 0.5613 0.7792 -vn 0.6223 0.6082 0.4928 -vn 0.6771 0.6851 0.2687 -vn 0.6538 0.3933 0.6465 -vn -0.4528 0.8818 -0.1319 -vn -0.0398 0.9711 -0.2354 -vn -0.1593 0.8583 0.4878 -vn 0.8773 0.3747 0.2999 -vn -0.0314 0.9894 -0.1421 -vn -0.4313 0.9020 0.0202 -vn 0.0593 0.9093 0.4120 -vn -0.0160 0.8578 0.5137 -vn -0.4143 -0.5028 -0.7586 -vn -0.9208 -0.3801 -0.0872 -vn 0.5602 0.5821 0.5894 -vn 0.8042 0.5928 -0.0427 -vn 0.8051 0.5929 0.0171 -vn 0.7567 0.6458 0.1017 -vn 0.9051 0.3534 0.2365 -vn 0.0790 0.9880 0.1329 -vn 0.1119 0.9848 0.1329 -vn -0.3913 0.2132 0.8952 -vn 0.2280 0.8477 0.4790 -vn -0.5664 0.7532 -0.3343 -vn 0.2483 0.8521 0.4607 -vn -0.4768 -0.4019 -0.7818 -vn 0.8068 0.5906 0.0149 -vn 0.7068 0.6821 0.1877 -vn -0.0457 0.9988 -0.0175 -vn 0.6918 0.6016 0.3994 -vn -0.9203 0.1930 -0.3404 -vn -0.1293 0.8298 0.5429 -vn 0.8150 0.5592 0.1519 -vn 0.8154 0.5146 -0.2651 -vn 0.7420 0.6694 0.0373 -vn -0.3576 0.8650 0.3519 -vn 0.1843 0.9824 0.0301 -vn 0.4064 0.8887 0.2124 -vn 0.1954 0.7654 0.6132 -vn 0.0835 0.9738 0.2117 -vn 0.4395 0.8259 0.3532 -vn 0.5463 0.6863 0.4802 -vn 0.4519 0.7152 0.5331 -vn -0.2584 -0.9218 -0.2890 -vn 0.1939 0.9804 -0.0350 -vn -0.1803 0.9770 0.1137 -vn 0.5698 0.7840 0.2465 -vn -0.3434 0.9354 -0.0845 -vn 0.1506 0.8823 0.4459 -vn 0.7565 0.6471 -0.0943 -vn 0.7092 0.7046 0.0248 -vn 0.7118 0.7019 0.0248 -vn 0.6307 0.7536 0.1854 -vn -0.7559 -0.1324 0.6411 -vn -0.4056 0.7815 0.4741 -vn 0.1647 0.7744 0.6109 -vn -0.0691 0.9128 0.4025 -vn -0.0088 0.9653 0.2609 -vn 0.5255 -0.7057 0.4751 -vn 0.8088 0.5242 -0.2667 -vn 0.7635 0.6411 -0.0776 -vn 0.6096 0.7630 0.2150 -vn 0.7546 0.5879 0.2915 -vn 0.3495 0.4415 0.8264 -vn 0.2864 0.0983 -0.9530 -vn 0.6469 0.7579 0.0846 -vn 0.6071 0.6136 0.5048 -vn 0.6456 0.6707 0.3652 -vn 0.1689 0.9814 -0.0912 -vn 0.2650 0.9212 0.2849 -vn 0.3258 0.4664 0.8224 -vn -0.3360 0.7618 -0.5538 -vn -0.2395 0.9513 -0.1942 -vn 0.0390 0.5847 0.8103 -vn 0.6579 0.7391 0.1446 -vn -0.2002 0.7626 0.6151 -vn -0.1311 0.7536 0.6441 -vn 0.8967 0.3735 0.2374 -vn 0.4598 0.8684 -0.1857 -vn 0.7964 0.5533 0.2439 -vn 0.3125 0.0040 0.9499 -vn 0.2216 0.9662 0.1316 -vn -0.3516 0.8102 0.4690 -vn 0.0914 0.7062 0.7021 -vn -0.0345 0.9755 0.2172 -vn 0.6556 0.7398 0.1513 -vn 0.3787 0.8941 0.2391 -vn 0.8694 0.3508 0.3479 -vn -0.3401 -0.6121 -0.7139 -vn 0.2088 0.9457 0.2490 -vn 0.7732 0.5403 -0.3322 -vn -0.8617 -0.3290 0.3864 -vn 0.3079 -0.0567 0.9497 -vn 0.3174 0.7792 0.5404 -vn 0.8146 0.5560 0.1652 -vn -0.9100 0.0393 -0.4128 -vn 0.6557 0.7394 -0.1527 -vn 0.6403 0.7674 -0.0345 -vn 0.6136 0.7607 0.2120 -vn 0.5298 0.7674 0.3611 -vn 0.4068 0.7090 0.5761 -vn -0.6125 0.7877 0.0657 -vn 0.0056 -0.9665 0.2567 -vn 0.1689 0.9039 0.3930 -vn 0.1577 0.6826 0.7136 -vn -0.8869 -0.2685 -0.3758 -vn 0.1579 -0.8883 -0.4314 -vn 0.6220 0.7823 -0.0325 -vn 0.9964 0.0702 0.0479 -vn 0.6269 0.5813 0.5188 -vn -0.0211 0.8164 0.5771 -vn 0.1446 0.9297 0.3387 -vn -0.2073 0.9193 0.3345 -vn 0.8723 -0.4886 -0.0212 -vn -0.9258 -0.1218 -0.3578 -vn 0.5852 0.7682 -0.2598 -vn 0.2978 0.8404 0.4527 -vn 0.0883 0.7713 0.6303 -vn 0.0296 0.8502 0.5256 -vn -0.4884 -0.1785 0.8542 -vn -0.0706 0.8384 0.5405 -vn -0.8399 -0.3184 -0.4396 -vn 0.5926 0.8052 0.0218 -vn 0.3324 0.8532 0.4018 -vn 0.0989 0.8334 0.5438 -vn 0.5659 0.6001 0.5654 -vn -0.0135 0.7171 0.6968 -vn -0.0085 -0.7091 -0.7050 -vn -0.4085 0.8814 0.2372 -vn 0.2976 0.8794 0.3716 -vn 0.0787 0.9903 0.1143 -vn 0.1852 0.9701 0.1569 -vn -0.1071 0.9538 0.2806 -vn 0.4232 -0.6999 -0.5754 -vn -0.1584 0.9173 0.3654 -vn 0.2112 0.8810 0.4233 -vn -0.5512 0.8223 0.1412 -vn 0.6238 0.7394 -0.2533 -vn 0.5491 0.8252 -0.1323 -vn 0.5129 0.8579 0.0310 -vn 0.4361 0.8959 0.0847 -vn 0.2739 0.9159 0.2934 -vn -0.2481 0.9657 -0.0768 -vn 0.6705 -0.1382 0.7289 -vn -0.0306 0.8687 0.4944 -vn -0.1906 0.7901 0.5826 -vn -0.2585 0.8445 0.4691 -vn -0.7503 0.6611 -0.0038 -vn -0.8817 0.0034 0.4718 -vn 0.5962 0.6971 0.3983 -vn 0.3295 0.5207 0.7876 -vn -0.9230 0.1794 -0.3404 -vn 0.4355 0.8889 0.1426 -vn 0.4829 0.6546 0.5817 -vn 0.4620 0.6396 0.6144 -vn 0.5002 0.8341 -0.2325 -vn 0.0206 0.9724 0.2322 -vn -0.9818 -0.1440 -0.1235 -vn 0.5065 0.7716 0.3849 -vn -0.4739 0.8105 0.3443 -vn -0.0302 0.9584 0.2840 -vn -0.7067 0.6682 -0.2326 -vn 0.7356 0.5661 0.3720 -vn -0.9145 0.3594 0.1860 -vn -0.7569 -0.0939 -0.6467 -vn -0.8213 -0.0454 -0.5687 -vn 0.5431 0.7586 -0.3600 -vn 0.5116 0.8264 0.2351 -vn 0.4618 0.7748 0.4317 -vn 0.4500 0.7285 0.5165 -vn -0.2508 0.7319 0.6335 -vn 0.8375 0.4771 0.2664 -vn 0.5804 0.7737 0.2540 -vn -0.8739 0.2423 -0.4214 -vn -0.7500 -0.0586 -0.6589 -vn 0.1044 -0.9942 0.0271 -vn 0.5087 0.8468 -0.1553 -vn 0.5249 0.8407 -0.1331 -vn 0.4586 0.8868 -0.0564 -vn 0.4822 0.8618 0.1574 -vn 0.4437 0.8740 0.1980 -vn 0.2422 0.6928 0.6792 -vn -0.5041 0.8567 0.1091 -vn -0.7936 -0.5455 0.2694 -vn 0.8064 0.5501 0.2172 -vn 0.7062 0.3921 0.5895 -vn -0.2047 0.8557 0.4752 -vn -0.2475 0.7990 0.5481 -vn -0.4397 0.8450 0.3044 -vn 0.0031 0.0423 -0.9991 -vn 0.7720 -0.5134 -0.3748 -vn 0.4647 0.8853 -0.0186 -vn -0.0965 0.7711 0.6293 -vn 0.3824 -0.9115 -0.1515 -vn -0.4019 0.8482 0.3450 -vn 0.7976 0.5333 0.2817 -vn 0.1155 0.8914 0.4383 -vn 0.2148 0.8852 0.4126 -vn -0.1385 0.6148 0.7764 -vn -0.2036 0.8143 0.5436 -vn -0.7656 -0.0185 -0.6430 -vn -0.7321 0.5573 -0.3918 -vn 0.5670 0.2811 -0.7743 -vn 0.4037 0.9143 0.0328 -vn 0.2528 0.9035 0.3460 -vn 0.2650 0.9033 0.3374 -vn 0.1325 0.7795 0.6123 -vn 0.6591 -0.6943 -0.2891 -vn -0.2618 0.8645 0.4291 -vn -0.4983 0.1856 0.8469 -vn -0.1097 0.9650 0.2381 -vn 0.1927 0.6807 0.7067 -vn -0.4019 0.7864 0.4692 -vn -0.4062 -0.0908 -0.9093 -vn -0.8021 -0.5961 -0.0346 -vn 0.0969 0.2275 -0.9690 -vn -0.2852 -0.2407 -0.9278 -vn 0.1728 0.8274 0.5343 -vn 0.0067 -0.6672 -0.7449 -vn -0.7610 -0.6296 0.1567 -vn 0.2427 0.8141 0.5275 -vn -0.2154 0.6811 0.6998 -vn -0.0687 0.6186 0.7827 -vn -0.8492 -0.5230 0.0727 -vn -0.8488 -0.5238 0.0722 -vn 0.4232 0.9028 -0.0769 -vn -0.8342 -0.0223 0.5510 -vn -0.4702 0.8039 0.3642 -vn -0.5309 -0.2530 0.8088 -vn -0.8523 -0.1025 0.5130 -vn -0.4273 0.5238 0.7369 -vn -0.2212 0.9319 0.2875 -vn -0.7858 0.4534 0.4207 -vn -0.6074 0.6756 0.4178 -vn 0.3368 0.6182 0.7102 -vn -0.2270 -0.0314 0.9734 -vn -0.6429 0.7481 0.1641 -vn -0.5010 0.0864 0.8611 -vn -0.7550 0.5775 0.3104 -vn -0.2147 0.0732 0.9739 -vn 0.0533 0.4343 0.8992 -vn -0.5135 -0.0639 -0.8557 -vn 0.1973 -0.8324 -0.5178 -vn -0.8924 0.2563 0.3714 -vn -0.6315 0.3999 0.6643 -vn -0.8412 -0.0357 0.5396 -vn 0.0354 0.7521 0.6582 -vn -0.4440 0.7413 0.5034 -vn -0.6565 -0.0497 0.7527 -vn -0.1376 0.2155 0.9668 -vn 0.7950 -0.4735 -0.3792 -vn -0.8448 0.3175 0.4307 -vn -0.7984 -0.0844 0.5962 -vn -0.4132 -0.0009 -0.9106 -vn 0.1661 -0.9453 -0.2809 -vn -0.5123 -0.0698 0.8560 -vn -0.1449 -0.5872 -0.7964 -vn 0.2868 -0.7426 -0.6053 -vn -0.5605 -0.0698 -0.8252 -vn -0.7171 0.5763 0.3920 -vn -0.3578 0.3245 0.8756 -vn -0.1589 -0.7876 -0.5953 -vn -0.1989 -0.7442 -0.6376 -vn -0.5385 0.6506 0.5355 -vn -0.7258 0.5044 0.4678 -vn 0.0824 0.2705 0.9592 -vn -0.7888 0.0592 0.6118 -vn -0.5851 0.7973 -0.1480 -vn -0.8765 -0.1379 0.4613 -vn -0.7486 -0.4686 0.4690 -vn -0.2704 0.9416 0.2005 -vn -0.8635 -0.5040 0.0178 -vn -0.7351 -0.1737 0.6554 -vn -0.2337 0.3639 -0.9016 -vn -0.8310 -0.4048 0.3815 -vn -0.3873 0.9131 -0.1273 -vn -0.5713 0.6340 0.5212 -vn 0.1640 -0.3196 0.9333 -vn 0.2333 -0.8912 -0.3890 -vn -0.8196 -0.1173 0.5608 -vn -0.1586 0.9171 0.3656 -vn -0.5054 0.8495 0.1513 -vn -0.6863 0.6518 0.3226 -vn -0.2032 -0.4326 -0.8784 -vn 0.3401 0.2916 0.8941 -vn 0.7252 -0.6161 -0.3074 -vn -0.4891 -0.0960 0.8669 -vn -0.3941 -0.0943 -0.9142 -vn -0.6928 0.6524 0.3072 -vn -0.4889 0.3086 0.8159 -vn -0.5543 -0.1791 -0.8128 -vn -0.1915 -0.1116 0.9751 -vn -0.4562 -0.0359 0.8891 -vn -0.7605 -0.1903 0.6208 -vn -0.5615 0.4926 0.6649 -vn -0.2356 -0.8687 0.4357 -vn 0.5643 -0.7187 -0.4063 -vn -0.5785 0.4856 -0.6553 -vn -0.6369 0.4207 0.6460 -vn -0.8324 -0.0224 0.5537 -vn -0.7838 0.4496 0.4284 -vn -0.8238 0.5372 0.1811 -vn -0.5001 0.0455 0.8647 -vn -0.5323 0.5649 0.6306 -vn -0.7437 0.4566 0.4883 -vn -0.8951 -0.2175 0.3893 -vn -0.5661 0.8146 0.1264 -vn -0.5151 0.7296 0.4498 -vn -0.7878 0.1013 0.6076 -vn -0.7654 -0.1859 0.6161 -vn 0.0578 -0.9977 0.0366 -vn -0.9121 0.2980 0.2816 -vn -0.6358 0.6495 0.4170 -vn -0.6366 0.7065 0.3091 -vn -0.7961 -0.3301 0.5072 -vn 0.4036 0.2088 0.8908 -vn -0.3928 0.5802 0.7135 -vn -0.8051 0.4404 0.3974 -vn -0.2897 -0.3519 -0.8901 -vn -0.7255 0.4615 0.5105 -vn -0.5286 -0.2212 0.8196 -vn -0.4313 -0.3702 0.8227 -vn -0.9190 0.3436 0.1935 -vn 0.7618 -0.6066 -0.2272 -vn 0.5241 -0.8507 -0.0415 -vn -0.5587 0.2842 0.7792 -vn -0.5492 0.3436 0.7618 -vn -0.5961 0.6789 0.4286 -vn -0.8739 0.1607 0.4588 -vn -0.2011 0.8500 0.4869 -vn -0.7258 0.4618 0.5099 -vn -0.5395 -0.5440 0.6427 -vn 0.8557 -0.4794 -0.1947 -vn -0.4817 0.6291 0.6101 -vn -0.8778 -0.0589 0.4754 -vn -0.6613 -0.2594 0.7038 -vn -0.8306 -0.2746 0.4845 -vn -0.8116 -0.0946 0.5765 -vn -0.6125 0.6955 0.3757 -vn -0.9713 -0.2328 0.0495 -vn 0.1633 -0.8394 -0.5184 -vn 0.0809 -0.9924 -0.0926 -vn -0.7981 0.3900 0.4593 -vn -0.4013 0.8174 0.4133 -vn -0.5213 -0.0882 -0.8488 -vn -0.6309 -0.3577 0.6885 -vn -0.2961 0.7205 0.6270 -vn 0.6258 -0.6952 0.3536 -vn 0.7612 -0.2110 -0.6132 -vn -0.5703 -0.7415 0.3534 -vn -0.8902 -0.4497 -0.0726 -vn -0.5225 -0.7861 0.3302 -vn -0.0408 -0.9400 0.3386 -vn 0.1900 -0.9055 -0.3794 -vn -0.6876 0.2172 -0.6929 -vn -0.8535 -0.2277 0.4688 -vn 0.1434 -0.8598 -0.4901 -vn -0.7458 0.4213 0.5160 -vn -0.7806 -0.1989 0.5925 -vn 0.1816 -0.1328 -0.9744 -vn -0.7655 -0.4309 0.4777 -vn -0.4544 0.8086 0.3737 -vn -0.7416 -0.1890 0.6437 -vn -0.5946 0.6514 0.4712 -vn -0.5106 -0.4413 0.7380 -vn -0.9051 -0.2333 0.3554 -vn 0.5483 -0.1182 0.8279 -vn -0.9486 0.2563 0.1857 -vn -0.6750 0.6436 0.3608 -vn -0.6746 -0.2909 0.6785 -vn 0.4001 -0.9163 0.0176 -vn -0.9237 -0.0262 0.3822 -vn 0.4073 0.0945 0.9084 -vn -0.4895 -0.1113 0.8649 -vn -0.8457 -0.5197 -0.1209 -vn -0.4508 0.8163 0.3612 -vn -0.5503 0.0665 -0.8323 -vn -0.5769 -0.2732 0.7698 -vn -0.5993 0.6940 0.3990 -vn 0.6691 -0.6821 0.2951 -vn 0.4860 -0.8577 -0.1679 -vn -0.4672 0.0567 0.8823 -vn -0.4051 -0.7437 0.5319 -vn -0.9084 0.2921 -0.2992 -vn -0.6972 -0.0946 0.7106 -vn -0.6494 0.4079 0.6418 -vn -0.5390 0.2691 0.7982 -vn -0.4951 0.6605 0.5644 -vn 0.0427 0.6679 0.7430 -vn -0.5884 0.0653 0.8059 -vn 0.1331 -0.7008 -0.7009 -vn -0.4746 0.6143 0.6304 -vn -0.1910 -0.9242 -0.3307 -vn 0.0788 -0.0046 0.9969 -vn -0.3064 0.1553 0.9392 -vn -0.6723 -0.1737 0.7196 -vn 0.4351 0.1811 0.8820 -vn -0.8613 -0.2401 0.4478 -vn -0.6597 -0.1414 0.7381 -vn -0.2208 0.9193 0.3257 -vn -0.4595 0.3149 0.8305 -vn -0.8443 0.0439 0.5340 -vn -0.3403 0.1278 0.9316 -vn -0.4304 -0.4799 0.7645 -vn -0.2723 -0.8642 0.4231 -vn -0.7390 0.3762 0.5589 -vn -0.3687 0.7836 0.5001 -vn -0.5147 -0.2289 0.8262 -vn -0.9886 0.1504 -0.0052 -vn 0.0762 -0.7777 -0.6241 -vn -0.8113 0.0034 0.5846 -vn -0.1950 0.0535 0.9793 -vn 0.1993 0.1344 -0.9707 -vn 0.4671 -0.6509 0.5985 -vn -0.4451 0.8180 0.3644 -vn -0.6163 0.1472 0.7736 -vn -0.6688 -0.0490 0.7418 -vn -0.1816 -0.8793 0.4403 -vn -0.8043 -0.3372 0.4892 -vn -0.1752 0.9143 0.3652 -vn -0.8372 -0.2646 0.4786 -vn -0.2845 0.9557 -0.0760 -vn -0.5302 -0.3992 0.7480 -vn -0.8374 -0.2632 0.4790 -vn -0.1151 0.0456 0.9923 -vn -0.6022 -0.1935 0.7746 -vn -0.4866 0.1631 -0.8583 -vn -0.3962 -0.1569 -0.9047 -vn 0.0966 -0.0789 0.9922 -vn -0.4811 -0.2622 -0.8365 -vn -0.3500 -0.8638 0.3623 -vn -0.4968 -0.7174 0.4883 -vn -0.4327 -0.8866 0.1634 -vn -0.3574 0.1190 -0.9264 -vn 0.5557 -0.6525 -0.5153 -vn -0.4323 -0.8138 0.3883 -vn -0.4880 -0.1599 0.8580 -vn 0.2329 0.0330 0.9719 -vn -0.8961 0.4202 -0.1430 -vn -0.8041 -0.5187 -0.2906 -vn -0.4007 -0.5537 -0.7300 -vn -0.6698 0.6216 0.4062 -vn -0.3272 0.3949 -0.8585 -vn -0.6195 0.1885 0.7620 -vn -0.5830 0.5017 0.6391 -vn -0.4742 0.6604 0.5823 -vn -0.5598 -0.2650 0.7851 -vn -0.3573 -0.3013 0.8841 -vn -0.4870 -0.4884 0.7241 -vn -0.7689 0.4410 0.4629 -vn -0.5974 0.4482 0.6650 -vn -0.5021 -0.1293 0.8551 -vn -0.9171 0.3916 -0.0743 -vn -0.5891 0.7031 0.3982 -vn -0.3244 -0.8380 -0.4387 -vn -0.4809 -0.7576 0.4413 -vn 0.0116 -0.9999 -0.0100 -vn -0.3527 -0.5773 0.7364 -vn 0.1123 0.6940 0.7112 -vn 0.1296 0.2197 -0.9669 -vn -0.6235 -0.1934 -0.7575 -vn -0.0829 -0.5273 -0.8456 -vn 0.0502 -0.8457 0.5314 -vn 0.0861 -0.4690 -0.8790 -vn -0.3732 0.8556 0.3587 -vn -0.8580 0.1480 0.4919 -vn 0.0430 0.1869 -0.9814 -vn -0.3656 -0.4356 0.8226 -vn -0.9864 0.1514 0.0641 -vn -0.8449 0.4781 0.2399 -vn -0.7765 0.5276 -0.3445 -vn -0.8944 0.3687 0.2532 -vn -0.8693 0.4941 0.0140 -vn -0.8640 0.1603 0.4773 -vn -0.2328 0.9287 0.2888 -vn -0.6546 0.1200 0.7464 -vn -0.9386 0.1377 -0.3162 -vn 0.0812 -0.3851 0.9193 -vn -0.8512 0.2076 0.4821 -vn -0.1071 -0.5309 -0.8407 -vn -0.2384 0.2048 0.9493 -vn -0.6994 -0.4688 0.5395 -vn -0.6224 0.2268 0.7491 -vn -0.3998 0.8759 -0.2701 -vn -0.6428 0.2770 -0.7142 -vn -0.8510 -0.2819 0.4431 -vn -0.9156 0.3389 0.2163 -vn -0.7244 -0.1451 0.6740 -vn -0.9950 -0.0140 -0.0992 -vn -0.8081 0.2313 -0.5417 -vn -0.8223 0.2782 0.4965 -vn -0.8429 -0.2981 0.4479 -vn -0.6514 -0.3113 -0.6919 -vn 0.1044 -0.1160 -0.9877 -vn -0.5864 0.0605 0.8077 -vn -0.5075 0.5179 0.6887 -vn 0.6853 -0.5234 -0.5064 -vn -0.2710 -0.8639 0.4246 -vn -0.3079 -0.8167 0.4880 -vn -0.3910 0.7269 0.5645 -vn -0.4479 -0.2673 0.8532 -vn -0.8363 -0.0551 0.5454 -vn 0.1035 -0.1057 -0.9890 -vn -0.4785 0.3371 0.8108 -vn -0.7783 -0.4163 0.4700 -vn -0.5257 -0.0765 0.8473 -vn -0.9056 0.3377 0.2566 -vn -0.8271 0.5382 -0.1622 -vn -0.8574 0.5044 0.1020 -vn -0.8956 0.4210 -0.1433 -vn -0.5968 0.3336 -0.7298 -vn -0.0916 0.0476 -0.9947 -vn -0.4704 0.4447 0.7622 -vn 0.0079 -0.9997 0.0240 -vn -0.6230 0.7765 0.0943 -vn -0.7309 0.2361 0.6403 -vn -0.5890 -0.5654 -0.5773 -vn 0.0761 0.7056 0.7045 -vn -0.9301 0.1556 -0.3326 -vn -0.5383 0.4272 0.7265 -vn -0.5669 0.4217 0.7076 -vn -0.6266 0.0885 0.7743 -vn -0.6631 0.3093 0.6816 -vn 0.1953 -0.9003 -0.3889 -vn 0.0614 -0.9968 0.0510 -vn -0.1150 -0.6689 0.7344 -vn 0.1562 -0.4580 -0.8751 -vn -0.4196 -0.3163 0.8508 -vn -0.2739 0.2450 -0.9300 -vn -0.1262 -0.0566 0.9904 -vn -0.3587 -0.2627 -0.8957 -vn -0.6095 -0.2451 0.7539 -vn 0.7546 0.4269 0.4984 -vn -0.9103 0.2326 0.3425 -vn -0.4003 0.2795 -0.8727 -vn -0.5393 -0.4171 0.7316 -vn -0.0467 0.8209 -0.5692 -vn -0.9720 0.0847 -0.2191 -vn -0.8382 -0.4174 -0.3511 -vn -0.2632 -0.2957 -0.9183 -vn -0.7634 0.3085 0.5676 -vn 0.1282 -0.3912 -0.9113 -vn -0.8589 -0.4860 0.1617 -vn -0.6264 0.5306 0.5710 -vn -0.5847 0.6322 0.5084 -vn -0.5186 0.8484 0.1062 -vn -0.0407 0.0255 -0.9988 -vn -0.5264 -0.7444 0.4109 -vn -0.5773 0.5428 0.6100 -vn -0.9113 -0.0104 0.4116 -vn -0.7852 0.0986 0.6114 -vn -0.9117 0.4045 0.0719 -vn 0.4689 -0.8832 -0.0128 -vn -0.7269 0.4368 0.5300 -vn -0.2077 0.7238 0.6580 -vn -0.9510 0.1581 -0.2656 -vn -0.9670 0.1293 0.2195 -vn -0.4589 0.7208 0.5194 -vn -0.2843 0.8987 0.3338 -vn -0.3551 0.6832 0.6381 -vn -0.7979 -0.3403 0.4975 -vn -0.7673 -0.3885 0.5102 -vn -0.7204 0.1412 0.6790 -vn -0.4352 0.8240 0.3629 -vn -0.8365 -0.2998 0.4587 -vn -0.8627 0.0426 0.5039 -vn -0.8660 0.1841 0.4650 -vn -0.2270 -0.0316 0.9734 -vn -0.2293 0.9301 0.2868 -vn -0.6504 0.6545 0.3854 -vn 0.1627 0.3027 0.9391 -vn -0.9585 0.2808 0.0492 -vn -0.8994 0.3918 -0.1940 -vn -0.3774 0.0294 0.9256 -vn -0.6905 0.4016 0.6015 -vn -0.5305 0.5729 0.6248 -vn -0.0768 -0.1130 0.9906 -vn -0.5799 0.3270 0.7462 -vn -0.4403 0.5219 0.7306 -vn -0.7848 0.0667 0.6161 -vn -0.7386 -0.0199 0.6738 -vn -0.5639 -0.2075 0.7993 -vn 0.5640 -0.5194 -0.6420 -vn 0.9152 -0.0327 0.4017 -vn -0.0579 0.5388 0.8404 -vn -0.5259 -0.7449 0.4106 -vn 0.0094 0.0348 0.9994 -vn -0.4173 -0.6406 0.6446 -vn 0.2604 0.2133 0.9416 -vn -0.8620 0.5069 0.0068 -vn -0.6478 -0.1257 0.7514 -vn 0.2540 -0.8281 -0.4997 -vn -0.6290 0.7622 0.1529 -vn -0.7699 0.0225 0.6378 -vn -0.6775 0.5175 0.5227 -vn -0.2100 -0.0221 -0.9775 -vn -0.3584 -0.1576 -0.9202 -vn 0.7522 -0.1938 0.6298 -vn -0.0141 -0.2470 -0.9689 -vn -0.8446 0.0299 0.5345 -vn -0.7895 0.2901 0.5408 -vn 0.4332 -0.8320 -0.3465 -vn -0.7388 -0.4628 0.4900 -vn -0.0587 -0.9983 -0.0011 -vn -0.8518 0.5227 -0.0354 -vn -0.9104 0.1096 0.3989 -vn -0.8267 0.3903 0.4054 -vn -0.8349 0.3463 0.4279 -vn -0.6897 0.6468 0.3257 -vn -0.9708 0.0319 0.2379 -vn -0.3395 0.7979 0.4981 -vn -0.1297 -0.3904 -0.9115 -vn 0.0603 0.0400 -0.9974 -vn -0.2325 0.3592 -0.9039 -vn 0.3982 0.0778 0.9140 -vn -0.8690 0.2148 0.4457 -vn -0.7306 0.5441 0.4125 -vn -0.6240 0.7507 -0.2169 -vn 0.1941 -0.7911 0.5801 -vn -0.7106 0.5089 0.4859 -vn -0.6212 0.3900 0.6797 -vn -0.3205 0.8747 0.3634 -vn -0.4448 0.7717 0.4546 -vn -0.4532 0.1960 -0.8696 -vn -0.4179 -0.1664 -0.8931 -vn -0.5512 -0.0610 0.8321 -vn -0.9092 -0.1914 0.3699 -vn -0.7920 -0.2733 0.5459 -vn -0.7826 -0.1002 0.6144 -vn -0.7576 0.2948 0.5823 -vn -0.0400 0.9174 0.3961 -vn -0.6088 0.7135 0.3468 -vn -0.0788 0.4643 0.8822 -vn 0.1558 -0.1693 -0.9732 -vn -0.5446 0.2407 0.8034 -vn -0.8207 -0.3763 0.4300 -vn -0.6895 0.1742 0.7030 -vn -0.2889 -0.0328 -0.9568 -vn -0.8434 -0.3402 0.4159 -vn -0.9019 -0.1050 0.4190 -vn -0.7767 0.2205 0.5900 -vn -0.6749 -0.2241 0.7031 -vn 0.0085 -0.9986 -0.0525 -vn -0.2055 0.8333 0.5132 -vn -0.3204 0.8895 0.3258 -vn -0.7910 -0.2542 0.5565 -vn -0.7996 -0.0636 -0.5971 -vn -0.8549 -0.4025 -0.3272 -vn -0.2785 0.6073 0.7440 -vn -0.4812 0.6540 0.5837 -vn -0.3652 0.7577 0.5408 -vn -0.5044 0.6650 0.5509 -vn -0.4721 0.5225 0.7100 -vn -0.1296 0.1334 -0.9825 -vn -0.3077 0.7181 0.6242 -vn -0.0315 0.2105 -0.9771 -vn -0.1217 0.1107 -0.9864 -vn -0.4082 0.8249 0.3910 -vn -0.1375 -0.5141 0.8466 -vn -0.8569 0.0767 0.5097 -vn 0.0171 0.5877 0.8089 -vn -0.8066 -0.3029 0.5077 -vn -0.3559 0.9342 0.0256 -vn -0.9425 -0.0615 0.3285 -vn -0.2615 0.8476 0.4618 -vn -0.5603 0.4499 0.6954 -vn -0.0204 0.3348 -0.9421 -vn -0.1138 0.4424 -0.8895 -vn -0.1288 0.2769 -0.9522 -vn 0.2953 -0.9334 -0.2040 -vn -0.7709 -0.0996 0.6291 -vn -0.7548 0.1204 0.6448 -vn -0.3879 0.4139 0.8235 -vn -0.5643 -0.4299 0.7048 -vn -0.7587 0.1005 0.6437 -vn -0.6227 -0.1156 0.7738 -vn -0.6251 0.2227 0.7481 -vn -0.8807 0.3783 0.2852 -vn -0.7117 0.5703 0.4102 -vn -0.7241 0.5360 0.4340 -vn 0.1388 -0.2037 -0.9692 -vn -0.5684 -0.5791 0.5845 -vn -0.4975 0.4908 0.7152 -vn -0.3909 0.7476 0.5369 -vn -0.2759 0.8343 0.4773 -vn -0.8089 0.2829 0.5155 -vn -0.7260 0.5705 0.3840 -vn 0.4977 -0.8377 -0.2248 -vn 0.0466 -0.0065 -0.9989 -vn -0.7865 -0.0588 0.6147 -vn -0.7183 0.2461 0.6507 -vn -0.4063 0.0261 -0.9134 -vn -0.7713 0.5034 0.3895 -vn -0.9040 -0.3272 0.2752 -vn -0.4615 0.1549 0.8735 -vn -0.5469 0.8074 0.2214 -vn -0.5521 0.7901 0.2663 -vn -0.5875 0.6997 0.4066 -vn -0.6646 0.6993 0.2632 -vn -0.7772 0.2987 0.5538 -vn -0.3341 -0.0418 -0.9416 -vn 0.1374 -0.6545 -0.7434 -vn -0.8275 -0.0320 0.5605 -vn 0.0696 0.2856 0.9558 -vn -0.1940 -0.3876 -0.9012 -vn -0.0646 0.1974 0.9782 -vn -0.4972 0.7553 0.4269 -vn -0.5881 0.7388 0.3291 -vn -0.5332 0.7899 0.3030 -vn -0.6436 0.4441 0.6233 -vn -0.3625 0.6675 0.6505 -vn -0.4475 0.7825 0.4329 -vn -0.6113 0.5455 0.5734 -vn 0.0207 -0.6161 -0.7874 -vn -0.6859 0.4694 -0.5561 -vn -0.8235 0.4951 -0.2770 -vn -0.3499 -0.2582 -0.9005 -vn -0.7288 -0.3503 0.5884 -vn -0.7323 -0.0053 0.6810 -vn 0.5480 -0.4293 0.7180 -vn -0.3314 -0.1301 -0.9345 -vn 0.9758 -0.1889 -0.1104 -vn -0.0502 0.2053 -0.9774 -vn -0.9417 0.2123 0.2611 -vn -0.9235 0.0856 0.3739 -vn -0.8980 -0.3360 -0.2840 -vn -0.8338 0.3783 0.4022 -vn 0.2822 0.1747 0.9433 -vn -0.8517 0.3090 0.4232 -vn -0.4583 0.7599 0.4609 -vn -0.4136 -0.2086 -0.8863 -vn -0.7411 -0.2769 0.6116 -vn -0.9855 0.1473 0.0842 -vn -0.5528 0.1072 -0.8264 -vn -0.7897 -0.3216 0.5224 -vn -0.7832 -0.0469 0.6200 -vn -0.8223 0.0741 0.5642 -vn -0.6529 0.5821 0.4846 -vn -0.1717 -0.2118 0.9621 -vn -0.6720 -0.1008 0.7337 -vn -0.3264 0.7406 0.5873 -vn -0.5221 0.7756 0.3546 -vn -0.6446 0.7321 0.2205 -vn -0.4560 0.7001 0.5495 -vn -0.5304 0.6706 0.5186 -vn 0.1397 0.0517 -0.9888 -vn -0.6960 0.0482 -0.7164 -vn -0.7838 0.0072 0.6210 -vn -0.7967 -0.3336 0.5040 -vn -0.7865 0.3590 0.5025 -vn -0.6944 0.4761 0.5396 -vn -0.7217 0.4877 0.4912 -vn -0.7084 0.5602 0.4294 -vn -0.8209 -0.0333 0.5701 -vn -0.8291 -0.0430 0.5574 -vn -0.7314 0.4813 0.4831 -vn -0.5626 0.5967 0.5722 -vn -0.6691 0.7339 0.1170 -vn -0.3631 0.7754 0.5165 -vn -0.5655 -0.2993 -0.7685 -vn -0.3369 -0.0499 -0.9402 -vn -0.6223 -0.1778 -0.7623 -vn -0.7258 0.1350 0.6745 -vn -0.6064 -0.0319 0.7945 -vn -0.5756 0.0086 -0.8177 -vn -0.6742 -0.3459 0.6525 -vn -0.8422 0.2140 0.4949 -vn -0.8552 0.2557 0.4509 -vn -0.5121 0.6644 0.5444 -vn 0.7430 -0.2062 -0.6368 -vn -0.5676 0.2952 0.7685 -vn -0.6588 -0.2043 0.7240 -vn -0.4805 0.5643 0.6714 -vn -0.3860 0.8314 0.3997 -vn -0.5778 0.5623 0.5916 -vn -0.6809 0.1943 0.7062 -vn -0.3358 -0.0993 -0.9367 -vn -0.4232 -0.4097 -0.8081 -vn -0.7365 0.1349 0.6628 -vn -0.6850 0.2593 0.6808 -vn -0.7314 0.6376 -0.2421 -vn -0.1220 0.1020 -0.9873 -vn 0.0355 -0.9988 -0.0324 -vn -0.3807 0.0158 -0.9246 -vn -0.7423 0.2376 0.6265 -vn -0.7447 0.3968 0.5366 -vn -0.3467 -0.1548 -0.9251 -vn -0.0469 0.5429 -0.8385 -vn -0.1366 0.2679 -0.9537 -vn 0.0401 0.7729 -0.6333 -vn -0.0971 0.8026 -0.5885 -vn 0.0701 0.6181 -0.7829 -vn -0.2382 0.6231 -0.7450 -vn 0.0563 0.7355 -0.6752 -vn -0.5731 0.3592 -0.7366 -vn 0.1959 0.8995 -0.3906 -vn -0.8527 0.0603 -0.5189 -vn -0.8559 -0.1248 -0.5018 -vn 0.1605 0.9078 -0.3874 -vn 0.2797 0.7747 -0.5672 -vn 0.1196 0.7641 -0.6340 -vn -0.8687 -0.1094 -0.4832 -vn -0.6011 -0.0297 -0.7986 -vn -0.9866 0.0921 0.1344 -vn -0.7682 -0.2934 -0.5691 -vn -0.6177 -0.4453 -0.6482 -vn -0.6238 -0.4453 -0.6423 -vn -0.4393 -0.5280 -0.7268 -vn 0.2501 -0.9081 -0.3360 -vn -0.9436 0.1095 -0.3124 -vn -0.9377 -0.0214 -0.3468 -vn -0.6920 -0.0273 -0.7214 -vn -0.4393 0.8966 -0.0555 -vn -0.8736 -0.1440 -0.4648 -vn -0.4124 -0.5171 -0.7500 -vn -0.6542 0.0261 -0.7558 -vn -0.9464 -0.0794 -0.3131 -vn -0.8346 -0.3133 -0.4530 -vn -0.6842 -0.4620 -0.5642 -vn -0.6619 -0.5156 -0.5441 -vn -0.4322 -0.6705 -0.6030 -vn -0.6848 0.4527 -0.5711 -vn -0.8493 -0.2683 -0.4547 -vn -0.3568 -0.6499 -0.6711 -vn -0.7945 -0.2123 -0.5690 -vn 0.8219 -0.5615 -0.0965 -vn 0.6321 -0.7430 -0.2200 -vn -0.9609 0.1588 -0.2270 -vn -0.9798 0.0367 -0.1964 -vn -0.7293 -0.4965 -0.4708 -vn -0.3905 -0.6979 -0.6004 -vn -0.8536 -0.2149 -0.4746 -vn 0.1000 0.3206 -0.9419 -vn -0.7504 -0.4796 -0.4548 -vn -0.3872 -0.7068 -0.5921 -vn -0.9667 0.1449 -0.2108 -vn -0.9610 -0.1054 -0.2555 -vn -0.8903 -0.2637 -0.3712 -vn -0.3868 -0.7065 -0.5927 -vn -0.9881 -0.1173 -0.0998 -vn -0.6727 -0.4907 -0.5538 -vn -0.8831 0.4441 0.1510 -vn -0.9540 -0.1189 -0.2752 -vn -0.8819 -0.3203 -0.3460 -vn -0.7404 -0.5319 -0.4111 -vn -0.3937 -0.7385 -0.5474 -vn -0.9887 0.1182 0.0922 -vn -0.5062 -0.6356 -0.5829 -vn -0.8672 -0.4150 -0.2750 -vn -0.3753 -0.7246 -0.5780 -vn -0.4011 -0.6224 -0.6722 -vn -0.9496 -0.1190 0.2902 -vn -0.9651 0.2005 -0.1685 -vn -0.9823 0.1406 -0.1240 -vn -0.5103 -0.7569 -0.4082 -vn -0.9697 0.2263 0.0920 -vn -0.8654 -0.2220 -0.4492 -vn -0.9570 -0.1259 -0.2613 -vn -0.9071 -0.3133 -0.2811 -vn -0.6653 -0.5594 -0.4945 -vn -0.4295 -0.7453 -0.5099 -vn -0.7048 -0.5575 -0.4386 -vn -0.7222 0.6258 0.2946 -vn -0.9220 0.0557 -0.3830 -vn -0.0630 0.9973 0.0371 -vn -0.9618 0.2344 0.1414 -vn -0.5232 0.7370 -0.4278 -vn -0.9116 0.4059 0.0652 -vn -0.9887 -0.0740 -0.1306 -vn -0.7666 -0.5234 -0.3720 -vn -0.7893 -0.5165 -0.3319 -vn -0.9709 0.2129 0.1097 -vn -0.4903 0.7825 -0.3837 -vn -0.6392 0.7020 -0.3142 -vn 0.7575 -0.6163 -0.2152 -vn 0.5907 0.2243 -0.7751 -vn 0.1483 0.8623 -0.4842 -vn -0.8246 0.5287 0.2012 -vn 0.0304 -0.0063 -0.9995 -vn -0.9196 -0.2527 -0.3009 -vn -0.4794 -0.7097 -0.5163 -vn -0.6946 -0.6391 -0.3303 -vn -0.4321 -0.7612 -0.4835 -vn -0.2778 0.7033 -0.6544 -vn 0.7146 0.6891 -0.1205 -vn -0.9736 0.1949 -0.1185 -vn -0.5888 0.7932 -0.1555 -vn -0.6265 -0.4943 0.6026 -vn -0.1716 0.7349 -0.6561 -vn -0.8396 -0.4124 -0.3536 -vn -0.9293 -0.2934 -0.2244 -vn -0.9576 -0.2108 -0.1963 -vn -0.6613 -0.6448 -0.3834 -vn -0.3685 -0.9291 -0.0325 -vn 0.5009 0.3473 -0.7927 -vn -0.9837 -0.0433 -0.1743 -vn -0.9539 0.2467 -0.1709 -vn -0.7477 -0.5593 -0.3578 -vn -0.7660 -0.5321 -0.3608 -vn -0.5010 -0.7546 -0.4238 -vn -0.4891 -0.7556 -0.4357 -vn -0.6840 -0.6028 -0.4108 -vn -0.9836 0.0875 0.1579 -vn -0.1106 0.8352 -0.5387 -vn -0.6282 -0.1093 -0.7703 -vn -0.7777 0.0659 -0.6252 -vn -0.7795 0.0497 -0.6244 -vn -0.6817 0.4145 -0.6029 -vn -0.5669 -0.8147 -0.1219 -vn -0.9797 0.0194 -0.1995 -vn -0.9553 0.2814 -0.0912 -vn 0.4476 0.4938 -0.7455 -vn 0.1976 0.9331 -0.3004 -vn -0.6052 -0.3947 -0.6913 -vn -0.7684 -0.3339 -0.5460 -vn -0.8128 0.0407 -0.5810 -vn -0.8576 0.2228 -0.4635 -vn -0.6586 0.5642 -0.4978 -vn -0.2160 0.2482 -0.9443 -vn -0.9778 0.0229 -0.2083 -vn -0.9593 -0.2593 -0.1122 -vn -0.9378 -0.3363 -0.0868 -vn -0.9898 0.1170 0.0815 -vn -0.0978 0.9258 -0.3651 -vn -0.7688 -0.4139 -0.4875 -vn -0.7451 -0.4422 -0.4993 -vn -0.7622 -0.3467 -0.5467 -vn -0.8377 -0.3184 -0.4437 -vn -0.8533 0.2457 -0.4599 -vn 0.0203 -0.9996 -0.0179 -vn -0.5148 -0.7671 -0.3828 -vn -0.9406 -0.3284 -0.0862 -vn 0.3231 0.5635 -0.7603 -vn -0.7076 -0.1915 -0.6802 -vn -0.8959 0.2941 -0.3331 -vn -0.9390 0.3026 -0.1633 -vn -0.5323 -0.7467 -0.3988 -vn -0.7733 -0.5554 -0.3059 -vn -0.9388 0.2644 0.2209 -vn -0.2751 0.9195 0.2807 -vn 0.3200 0.5702 -0.7566 -vn -0.5510 -0.3900 -0.7378 -vn -0.7749 -0.2186 -0.5931 -vn -0.7279 -0.2406 -0.6421 -vn -0.7952 -0.4137 -0.4433 -vn -0.8832 -0.2706 -0.3831 -vn -0.9020 -0.3455 -0.2589 -vn -0.9191 -0.3223 -0.2266 -vn -0.9283 -0.0358 -0.3702 -vn -0.9628 0.2237 -0.1517 -vn -0.7783 0.2420 -0.5793 -vn 0.3698 0.7688 0.5218 -vn -0.9933 -0.0448 -0.1066 -vn -0.8425 -0.4399 -0.3110 -vn -0.9907 0.1171 0.0697 -vn 0.1053 0.3965 -0.9120 -vn -0.0938 0.7244 -0.6830 -vn -0.7435 -0.2756 -0.6093 -vn -0.7438 -0.3175 -0.5881 -vn -0.7875 -0.3555 -0.5035 -vn -0.7496 -0.2056 -0.6292 -vn -0.7990 0.4233 -0.4271 -vn -0.7329 0.5754 -0.3630 -vn -0.8286 0.4806 -0.2871 -vn -0.4668 0.8200 -0.3312 -vn -0.5332 0.5140 0.6719 -vn -0.9350 0.3359 -0.1136 -vn -0.9729 0.2170 0.0802 -vn -0.1466 0.7096 -0.6892 -vn -0.1622 0.7856 -0.5971 -vn -0.7762 -0.1652 -0.6085 -vn -0.8341 0.4045 -0.3750 -vn -0.9009 0.3195 -0.2938 -vn -0.6853 0.6521 -0.3243 -vn -0.9864 -0.0450 -0.1582 -vn -0.9190 0.3669 -0.1442 -vn -0.9535 -0.2118 -0.2144 -vn -0.8224 -0.5263 -0.2158 -vn -0.9451 -0.3200 -0.0658 -vn -0.9254 0.2913 0.2425 -vn -0.9393 0.2666 0.2160 -vn -0.2422 -0.4962 -0.8338 -vn 0.0569 0.7851 0.6167 -vn -0.6427 -0.7407 -0.1957 -vn 0.3159 -0.3110 0.8964 -vn -0.4221 0.8497 -0.3160 -vn 0.1670 0.5426 -0.8232 -vn -0.9297 -0.1891 -0.3160 -vn -0.9423 -0.1605 -0.2937 -vn -0.8589 -0.2697 -0.4354 -vn -0.8151 -0.3929 -0.4258 -vn -0.8291 0.1432 -0.5405 -vn -0.9650 -0.0189 -0.2614 -vn -0.7985 0.4535 -0.3959 -vn -0.9880 -0.0904 -0.1256 -vn -0.5712 -0.7478 -0.3384 -vn -0.9873 -0.1524 -0.0444 -vn -0.8457 -0.3503 0.4025 -vn -0.1736 0.1773 0.9687 -vn 0.2658 0.8522 -0.4506 -vn 0.2628 0.8323 -0.4881 -vn -0.3368 -0.7911 -0.5106 -vn -0.8729 0.2318 -0.4294 -vn -0.7738 0.3212 -0.5460 -vn -0.6323 0.5254 -0.5693 -vn 0.3887 0.6084 -0.6919 -vn -0.9144 -0.0863 -0.3955 -vn -0.7314 -0.2677 -0.6272 -vn -0.8865 -0.4207 -0.1928 -vn -0.8853 -0.3730 -0.2777 -vn -0.9603 -0.2009 -0.1938 -vn -0.8099 -0.1575 0.5650 -vn -0.1788 0.6286 0.7569 -vn -0.6610 0.6273 -0.4118 -vn -0.6755 0.6049 -0.4217 -vn 0.7367 -0.6693 -0.0967 -vn -0.6699 0.5681 -0.4781 -vn -0.8818 -0.3195 -0.3470 -vn -0.8914 -0.4127 -0.1874 -vn -0.9371 0.0831 -0.3390 -vn -0.5125 0.0505 -0.8572 -vn -0.4968 -0.8646 0.0751 -vn 0.2543 0.6946 -0.6730 -vn -0.9636 -0.1697 0.2066 -vn -0.8734 0.4856 -0.0369 -vn -0.9946 -0.0058 -0.1033 -vn -0.9476 -0.1971 -0.2516 -vn -0.9143 -0.2132 -0.3444 -vn -0.9018 -0.4087 -0.1400 -vn -0.9613 -0.2280 -0.1544 -vn -0.9051 -0.3628 -0.2219 -vn -0.9612 -0.2330 -0.1475 -vn -0.9741 -0.0742 -0.2135 -vn -0.8049 -0.2385 -0.5434 -vn 0.9942 0.0577 -0.0907 -vn -0.0388 -0.6186 -0.7847 -vn -0.9594 -0.2104 -0.1879 -vn -0.5731 -0.7180 -0.3951 -vn -0.7813 -0.5576 -0.2803 -vn -0.5920 -0.7000 -0.3994 -vn -0.9797 -0.1976 0.0321 -vn -0.1879 0.9142 -0.3590 -vn 0.0187 0.6146 -0.7886 -vn -0.8775 -0.3442 0.3341 -vn -0.9314 0.0679 -0.3575 -vn -0.5262 0.2710 -0.8060 -vn -0.5740 0.3532 -0.7387 -vn -0.4177 0.3855 -0.8227 -vn -0.7646 -0.0706 -0.6407 -vn -0.8655 0.0239 -0.5004 -vn -0.8756 -0.0490 -0.4804 -vn -0.8111 -0.3992 -0.4274 -vn -0.9903 -0.0846 -0.1105 -vn -0.3454 0.8164 -0.4627 -vn -0.6626 -0.7401 -0.1149 -vn -0.9889 -0.0854 -0.1215 -vn -0.8793 0.4634 -0.1102 -vn -0.9324 0.3555 -0.0657 -vn -0.9552 -0.2339 -0.1812 -vn -0.4331 -0.8170 -0.3806 -vn -0.6897 0.3149 -0.6520 -vn -0.8321 0.2166 -0.5105 -vn -0.9131 0.0666 -0.4022 -vn -0.7865 0.4794 -0.3893 -vn -0.4675 0.8394 -0.2773 -vn -0.3815 0.8726 -0.3050 -vn -0.6474 0.6302 -0.4286 -vn -0.9523 -0.0987 -0.2886 -vn -0.8984 -0.2439 -0.3652 -vn -0.8983 -0.3133 -0.3081 -vn -0.8732 -0.0938 -0.4783 -vn -0.9728 -0.2158 -0.0841 -vn -0.8757 -0.0907 -0.4743 -vn -0.8501 0.5081 0.1388 -vn -0.8645 0.4844 0.1340 -vn -0.9132 -0.3525 -0.2046 -vn -0.9281 0.3104 0.2055 -vn -0.9030 0.0888 -0.4204 -vn -0.5506 0.6435 -0.5318 -vn -0.7283 0.2163 -0.6503 -vn 0.1155 -0.8108 -0.5738 -vn -0.8186 0.4643 -0.3381 -vn -0.9735 0.2198 -0.0639 -vn -0.9096 -0.2173 -0.3542 -vn -0.8952 -0.2441 -0.3730 -vn -0.8771 -0.3117 -0.3654 -vn 0.2212 0.3660 -0.9039 -vn -0.8461 -0.2745 0.4570 -vn -0.9770 0.2030 0.0656 -vn 0.0860 -0.6069 -0.7901 -vn -0.7135 -0.6957 -0.0829 -vn -0.9874 -0.1079 -0.1156 -vn -0.8881 -0.1826 0.4219 -vn -0.7167 0.1146 -0.6879 -vn -0.6824 0.2393 -0.6907 -vn -0.8803 0.4610 -0.1118 -vn -0.6870 0.6963 -0.2079 -vn -0.4010 0.8274 -0.3931 -vn -0.5877 0.6286 -0.5095 -vn -0.9855 -0.0565 -0.1601 -vn -0.9288 0.0174 -0.3702 -vn -0.9145 -0.2138 -0.3435 -vn -0.9139 -0.2816 -0.2923 -vn -0.3846 0.3170 -0.8669 -vn -0.8266 0.4065 -0.3893 -vn -0.5170 0.7015 -0.4905 -vn -0.1890 -0.7669 -0.6133 -vn -0.3906 0.7681 -0.5073 -vn -0.5616 0.7742 -0.2921 -vn -0.9089 0.3702 -0.1921 -vn -0.4127 -0.9106 -0.0218 -vn -0.5604 -0.7127 -0.4219 -vn -0.8449 -0.4860 -0.2233 -vn -0.9867 0.0828 0.1400 -vn -0.7986 -0.5439 -0.2575 -vn -0.9998 -0.0051 -0.0194 -vn -0.9705 0.1414 -0.1952 -vn -0.9099 -0.3021 -0.2843 -vn -0.8681 0.4766 -0.1388 -vn -0.6881 0.6826 -0.2460 -vn -0.9325 0.0431 -0.3585 -vn -0.9720 -0.1377 -0.1901 -vn -0.8951 -0.2539 -0.3664 -vn -0.8314 -0.3794 -0.4060 -vn 0.0243 0.5604 -0.8279 -vn -0.4048 0.8323 0.3785 -vn -0.9987 0.0381 -0.0347 -vn -0.8739 0.4857 0.0203 -vn -0.9484 -0.2781 -0.1522 -vn -0.5613 -0.7114 -0.4228 -vn -0.9604 -0.2237 -0.1663 -vn -0.3375 0.9152 -0.2201 -vn -0.5672 -0.5668 -0.5975 -vn 0.0213 -0.5362 -0.8438 -vn -0.8138 0.5774 -0.0664 -vn -0.5195 0.8511 0.0760 -vn -0.3138 0.9240 -0.2184 -vn -0.4953 0.8457 -0.1985 -vn -0.7368 0.6697 0.0925 -vn -0.9403 0.1551 -0.3031 -vn -0.2538 0.0523 -0.9658 -vn -0.9117 -0.3200 0.2575 -vn 0.0592 -0.8938 -0.4445 -vn -0.9580 0.2696 -0.0977 -vn -0.7454 0.4041 -0.5302 -vn -0.7133 0.4984 -0.4928 -vn -0.9413 0.1402 -0.3071 -vn 0.1125 -0.9930 0.0358 -vn -0.9878 -0.1333 -0.0801 -vn -0.9070 -0.3187 -0.2751 -vn -0.9380 -0.2675 -0.2206 -vn -0.9415 -0.1894 -0.2789 -vn 0.1361 0.8248 -0.5488 -vn 0.0420 0.4610 -0.8864 -vn -0.7713 0.3257 0.5468 -vn -0.9467 -0.2377 -0.2172 -vn -0.8212 0.3623 -0.4410 -vn -0.5211 0.8124 -0.2616 -vn -0.8267 -0.0543 0.5600 -vn -0.6894 -0.5563 0.4640 -vn -0.6892 -0.5605 0.4592 -vn -0.5170 -0.1814 -0.8365 -vn -0.7241 -0.6676 -0.1733 -vn -0.9909 -0.0973 -0.0927 -vn -0.8864 0.4616 0.0347 -vn -0.6882 -0.6825 -0.2462 -vn -0.5786 -0.7214 -0.3806 -vn -0.8539 -0.4816 -0.1975 -vn -0.9905 0.1028 0.0917 -vn -0.8756 0.4726 -0.0998 -vn -0.8916 0.1486 -0.4278 -vn -0.8225 0.4650 -0.3276 -vn -0.8005 0.5169 -0.3034 -vn -0.7259 0.5893 -0.3548 -vn -0.5905 0.7163 -0.3718 -vn -0.9610 0.2093 -0.1810 -vn -0.9792 -0.0677 -0.1912 -vn -0.9335 -0.2650 -0.2416 -vn -0.9411 -0.2408 -0.2374 -vn -0.6260 0.7093 0.3240 -vn -0.8418 0.3162 -0.4374 -vn -0.8853 0.4245 -0.1901 -vn -0.2150 -0.0208 -0.9764 -vn -0.9068 -0.4184 -0.0521 -vn -0.9297 0.2843 0.2343 -vn -0.6414 0.5461 -0.5389 -vn -0.6736 0.4634 -0.5758 -vn -0.7303 0.6246 -0.2768 -vn 0.1140 -0.7937 -0.5975 -vn -0.9811 -0.0021 -0.1936 -vn -0.9355 -0.0541 0.3490 -vn -0.4888 0.8458 -0.2137 -vn -0.9061 0.3248 -0.2711 -vn -0.1928 0.1304 -0.9725 -vn 0.0023 0.5338 -0.8456 -vn 0.4237 0.4638 -0.7780 -vn -0.9853 0.0198 -0.1698 -vn -0.7396 0.5905 -0.3229 -vn -0.9558 -0.2896 -0.0508 -vn -0.5156 0.8428 0.1543 -vn -0.8089 -0.5841 0.0666 -vn -0.9907 -0.1097 0.0810 -vn -0.9978 -0.0480 -0.0453 -vn -0.9914 0.1258 0.0353 -vn -0.8845 -0.4049 0.2316 -vn -0.6860 0.6626 -0.3006 -vn 0.2518 0.6191 0.7438 -vn -0.8952 0.3531 -0.2719 -vn -0.7049 0.6479 -0.2887 -vn -0.9309 -0.0312 -0.3640 -vn -0.8296 -0.1658 -0.5332 -vn -0.9576 -0.1047 -0.2685 -vn -0.9357 -0.2491 -0.2498 -vn -0.7008 -0.6622 -0.2653 -vn -0.0015 0.4195 -0.9077 -vn -0.9043 0.3864 0.1815 -vn -0.0151 0.6689 -0.7432 -vn 0.0281 -0.9978 0.0593 -vn 0.4031 0.1555 -0.9019 -vn -0.9196 0.3810 -0.0961 -vn -0.8780 0.3683 -0.3056 -vn -0.6908 -0.1477 -0.7078 -vn -0.5900 -0.6258 -0.5102 -vn -0.9065 0.3983 -0.1402 -vn -0.9722 0.0612 0.2259 -vn -0.6884 -0.6804 -0.2513 -vn -0.6561 0.5582 -0.5080 -vn -0.9079 0.3197 0.2710 -vn -0.1441 0.2858 -0.9474 -vn -0.0200 0.7488 -0.6625 -vn -0.6750 -0.5505 -0.4912 -vn -0.7798 -0.1343 -0.6114 -vn -0.7041 -0.0136 -0.7100 -vn -0.9185 0.3829 -0.0990 -vn -0.9948 -0.0257 -0.0987 -vn -0.6007 -0.7827 -0.1628 -vn -0.9100 -0.4145 0.0132 -vn 0.9373 -0.1137 -0.3295 -vn -0.7636 -0.6282 -0.1489 -vn -0.9981 -0.0607 -0.0049 -vn -0.9007 -0.4015 -0.1659 -vn -0.8627 0.5021 0.0608 -vn -0.7930 -0.6042 -0.0778 -vn -0.9959 -0.0843 0.0325 -vn -0.9845 -0.1730 0.0276 -vn -0.9509 -0.3034 0.0607 -vn -0.9933 -0.0370 0.1097 -vn -0.5809 0.7281 -0.3640 -vn 0.5939 0.0103 -0.8045 -vn -0.2642 0.6871 0.6768 -vn 0.6336 -0.2195 -0.7419 -vn -0.7275 0.0393 -0.6850 -vn -0.6600 0.2765 -0.6986 -vn 0.4597 -0.7921 -0.4016 -vn 0.0499 0.4678 -0.8824 -vn -0.8364 -0.5292 0.1426 -vn -0.9051 -0.4068 0.1235 -vn -0.2884 -0.0314 -0.9570 -vn -0.8226 -0.5186 -0.2333 -vn -0.8017 -0.5473 -0.2403 -vn -0.8533 -0.4763 -0.2120 -vn -0.5897 0.6985 -0.4054 -vn -0.3113 -0.0464 -0.9492 -vn -0.8412 0.5366 -0.0666 -vn -0.6532 0.4844 -0.5819 -vn -0.5970 0.6027 -0.5295 -vn -0.6139 0.7819 -0.1083 -vn -0.9840 -0.1366 0.1141 -vn 0.1978 0.8225 -0.5332 -vn -0.7237 -0.1170 -0.6802 -vn -0.9899 -0.1131 -0.0853 -vn -0.9609 0.2511 0.1168 -vn -0.2857 -0.4323 -0.8553 -vn -0.8072 0.5687 0.1581 -vn -0.9538 -0.3005 0.0053 -vn 0.0146 0.9754 -0.2200 -vn -0.0030 -0.9989 0.0458 -vn -0.5464 0.8219 -0.1613 -vn -0.9488 -0.0638 0.3093 -vn -0.9721 0.2290 -0.0514 -vn -0.9747 0.2175 -0.0513 -vn -0.8931 -0.4258 0.1451 -vn -0.9055 0.3913 0.1643 -vn 0.2129 0.8529 -0.4768 -vn -0.2942 0.6279 -0.7206 -vn 0.5187 0.4083 -0.7512 -vn -0.8138 -0.0365 -0.5800 -vn -0.8137 -0.0318 -0.5805 -vn -0.6981 0.3125 -0.6442 -vn -0.6648 0.2151 -0.7153 -vn -0.6177 0.7052 0.3481 -vn -0.8833 0.3440 0.3187 -vn -0.9107 -0.1679 -0.3773 -vn -0.8966 0.3943 0.2015 -vn -0.9981 0.0367 -0.0490 -vn -0.8693 -0.4941 -0.0156 -vn -0.9965 0.0807 0.0234 -vn 0.2134 0.8988 -0.3830 -vn 0.0542 -0.9956 0.0767 -vn 0.4366 0.7872 -0.4356 -vn 0.1889 0.2455 -0.9508 -vn 0.6275 0.5524 -0.5488 -vn 0.7252 0.5512 -0.4126 -vn 0.0538 0.8923 -0.4483 -vn -0.3025 0.5399 -0.7855 -vn -0.1684 0.9248 -0.3412 -vn -0.2600 0.5709 -0.7788 -vn -0.6409 -0.4127 -0.6472 -vn -0.8678 -0.0750 -0.4913 -vn -0.6598 -0.2200 -0.7185 -vn -0.7329 0.0319 -0.6796 -vn -0.7089 0.1565 -0.6877 -vn -0.2262 0.9004 -0.3716 -vn 0.1813 0.7086 -0.6819 -vn -0.8317 -0.5291 -0.1683 -vn -0.9825 0.0747 -0.1704 -vn -0.9120 -0.0103 0.4100 -vn -0.6070 0.3679 -0.7044 -vn -0.8179 -0.5427 -0.1909 -vn -0.9278 0.3727 0.0153 -vn -0.9818 0.0422 -0.1852 -vn -0.8954 0.4450 -0.0140 -vn -0.8901 -0.4319 -0.1456 -vn -0.8532 -0.4748 -0.2160 -vn -0.9779 0.2072 -0.0287 -vn -0.8617 -0.4119 0.2964 -vn -0.9678 0.1443 0.2065 -vn -0.9027 0.4011 0.1556 -vn 0.1621 0.0480 -0.9856 -vn 0.4366 0.3905 -0.8105 -vn 0.0120 0.3391 -0.9407 -vn -0.7033 0.6485 -0.2912 -vn -0.7434 0.1834 -0.6432 -vn 0.2064 -0.8313 0.5160 -vn -0.8364 -0.3537 -0.4188 -vn -0.6628 -0.2301 -0.7126 -vn -0.7567 0.0829 -0.6484 -vn 0.8374 0.5455 0.0344 -vn 0.8288 0.5360 0.1608 -vn -0.0599 0.5123 -0.8567 -vn 0.1924 0.3938 -0.8989 -vn -0.7435 -0.5746 -0.3422 -vn -0.8666 -0.4546 -0.2057 -vn -0.5720 0.8112 0.1212 -vn -0.9839 -0.0710 0.1642 -vn -0.6385 0.3444 -0.6883 -vn -0.6598 0.5971 -0.4562 -vn -0.9155 0.3896 0.1010 -vn -0.8025 -0.5860 -0.1122 -vn 0.1658 -0.0002 0.9862 -vn -0.8194 -0.1951 -0.5390 -vn -0.8606 -0.2215 -0.4586 -vn -0.7829 -0.2285 -0.5786 -vn -0.4884 0.7744 0.4022 -vn 0.4329 0.3836 -0.8157 -vn -0.6219 -0.4153 -0.6639 -vn -0.7566 0.2349 -0.6103 -vn 0.0169 -0.9995 -0.0249 -vn 0.0137 -0.9998 -0.0142 -vn 0.5204 0.5378 -0.6633 -vn 0.1667 0.5508 -0.8178 -vn 0.2346 0.4272 -0.8732 -vn -0.6970 -0.0424 -0.7158 -vn -0.6911 -0.2633 -0.6731 -vn -0.4418 0.8516 -0.2823 -vn -0.5842 0.7523 -0.3044 -vn -0.9566 0.2890 -0.0363 -vn -0.6836 0.4544 -0.5711 -vn -0.6362 0.6128 -0.4687 -vn 0.0613 0.7999 -0.5971 -vn -0.2572 0.7293 -0.6340 -vn -0.5052 -0.7121 -0.4874 -vn -0.7582 -0.2556 -0.5999 -vn -0.6930 -0.3255 -0.6433 -vn -0.7570 -0.2939 -0.5836 -vn -0.6756 -0.1578 -0.7202 -vn -0.7167 -0.1208 -0.6868 -vn -0.7752 0.0945 -0.6247 -vn -0.8403 0.2055 -0.5017 -vn -0.0292 0.5804 -0.8138 -vn -0.1962 0.7845 -0.5883 -vn 0.4613 0.2380 -0.8547 -vn 0.4326 0.7706 -0.4681 -vn -0.7623 -0.4491 -0.4660 -vn -0.8636 0.2112 -0.4578 -vn -0.9864 0.1612 -0.0312 -vn -0.8157 -0.3125 -0.4868 -vn -0.9662 0.2188 0.1363 -vn -0.6822 0.4539 -0.5732 -vn -0.6393 0.7567 -0.1365 -vn -0.6937 0.3372 -0.6365 -vn -0.6854 -0.0294 -0.7275 -vn -0.5805 -0.6734 -0.4578 -vn -0.6612 -0.4901 -0.5680 -vn -0.7067 -0.3305 -0.6256 -vn -0.7970 0.1722 -0.5789 -vn -0.7554 0.2343 -0.6120 -vn -0.7682 0.0277 -0.6396 -vn -0.7071 0.1565 -0.6896 -vn -0.6295 0.4938 -0.5999 -vn 0.2842 -0.1096 -0.9525 -vn -0.3019 0.9096 -0.2855 -vn -0.8128 -0.2111 -0.5429 -vn -0.8054 -0.4178 -0.4204 -vn -0.9748 0.1107 -0.1936 -vn -0.7035 0.3548 -0.6158 -vn -0.6862 0.4500 -0.5715 -vn -0.6669 0.7091 -0.2292 -vn 0.0430 0.9190 -0.3919 -vn -0.4429 0.6321 -0.6358 -vn -0.5194 0.7768 -0.3561 -vn -0.2264 0.3155 -0.9215 -vn -0.5920 -0.7409 -0.3171 -vn -0.4772 -0.8631 -0.1655 -vn -0.4568 -0.8677 -0.1959 -vn -0.5795 -0.7474 -0.3250 -vn -0.7963 -0.3946 -0.4585 -vn -0.8186 -0.3200 -0.4769 -vn -0.7684 -0.2825 -0.5743 -vn -0.8056 -0.1130 -0.5816 -vn -0.7865 -0.1415 -0.6011 -vn -0.8469 -0.1734 -0.5027 -vn -0.7815 -0.2912 -0.5517 -vn 0.0425 0.8697 -0.4918 -vn -0.1945 0.9367 -0.2911 -vn 0.0149 -0.9922 0.1239 -vn 0.0474 0.5628 -0.8252 -vn 0.0875 0.6507 -0.7543 -vn -0.0632 -0.8200 0.5689 -vn -0.5130 0.1929 -0.8364 -vn -0.5550 0.2367 -0.7975 -vn -0.9542 -0.1232 -0.2727 -vn -0.9623 0.1677 -0.2142 -vn -0.9565 0.0110 -0.2915 -vn -0.9078 0.3904 0.1536 -vn -0.1470 -0.2251 -0.9632 -vn -0.1793 0.2246 -0.9578 -vn 0.1032 0.7652 -0.6355 -vn -0.3870 0.8153 -0.4308 -vn -0.7830 -0.6177 -0.0734 -vn -0.5480 0.7273 -0.4132 -vn -0.8124 0.3962 -0.4277 -vn -0.9226 0.0509 -0.3823 -vn -0.5649 -0.6165 -0.5485 -vn -0.6055 -0.5982 -0.5250 -vn -0.7823 -0.6200 -0.0595 -vn -0.8735 -0.2593 -0.4121 -vn -0.7998 -0.5032 -0.3274 -vn -0.7630 -0.5397 -0.3557 -vn -0.7293 0.3040 -0.6130 -vn -0.6247 0.4831 -0.6135 -vn -0.5996 0.3490 -0.7202 -vn -0.2554 0.7603 -0.5972 -vn -0.2403 0.9186 -0.3137 -vn -0.1115 0.6960 -0.7093 -vn -0.2390 0.0326 -0.9705 -vn -0.1811 0.6381 -0.7483 -vn -0.9664 -0.1041 0.2350 -vn 0.6028 0.5655 -0.5629 -vn -0.7517 -0.0010 -0.6595 -vn -0.7222 0.3120 -0.6173 -vn 0.5765 -0.7661 -0.2842 -vn -0.1896 -0.4357 -0.8799 -vn -0.6990 0.3595 -0.6181 -vn -0.7539 0.6158 -0.2289 -vn 0.5361 0.6633 0.5221 -vn -0.7260 0.6599 -0.1938 -vn -0.2612 -0.9499 0.1718 -vn -0.8140 0.3803 -0.4391 -vn -0.8893 -0.2488 -0.3836 -vn -0.5249 -0.7700 -0.3627 -vn 0.0354 -0.9989 -0.0316 -vn -0.4636 -0.8049 -0.3704 -vn -0.9644 -0.0877 -0.2495 -vn -0.9719 -0.0432 -0.2313 -vn -0.8915 0.1657 -0.4216 -vn -0.9887 0.0210 -0.1487 -vn -0.8911 0.1744 -0.4189 -vn -0.8190 0.3452 -0.4584 -vn -0.7183 0.0307 -0.6951 -vn -0.2333 0.9177 -0.3214 -vn -0.6918 0.1650 -0.7030 -vn -0.9697 0.1899 -0.1536 -vn -0.9349 0.2846 -0.2121 -vn 0.0391 -0.9992 0.0101 -vn -0.7551 0.4767 -0.4502 -vn -0.6850 0.7087 -0.1689 -vn -0.7592 0.6116 -0.2225 -vn -0.6799 0.7161 -0.1576 -vn -0.5730 0.6192 -0.5369 -vn -0.8128 -0.5764 0.0849 -vn -0.8869 0.1157 -0.4472 -vn -0.9240 -0.0293 -0.3813 -vn -0.9024 -0.3530 -0.2473 -vn -0.5763 -0.6333 -0.5165 -vn -0.6525 -0.6083 -0.4519 -vn -0.6776 -0.7354 -0.0077 -vn -0.7816 -0.6229 -0.0333 -vn -0.9259 -0.2871 -0.2455 -vn -0.9634 -0.0692 -0.2589 -vn -0.8003 0.3896 -0.4558 -vn -0.8104 -0.0076 -0.5858 -vn -0.8102 -0.0093 -0.5861 -vn -0.6582 0.3115 -0.6854 -vn -0.8491 0.1716 -0.4996 -vn -0.6560 0.1378 -0.7421 -vn -0.6896 0.3732 -0.6206 -vn -0.7524 0.6456 0.1309 -vn -0.9753 0.1505 0.1615 -vn -0.8638 0.3430 -0.3690 -vn -0.5655 0.7304 -0.3831 -vn -0.5624 -0.6249 -0.5414 -vn -0.7048 -0.6454 -0.2943 -vn -0.7107 -0.6772 -0.1906 -vn -0.8405 -0.3589 -0.4058 -vn -0.9377 -0.1126 -0.3287 -vn -0.8638 0.0416 -0.5022 -vn -0.8558 0.1565 -0.4930 -vn -0.9433 0.1945 -0.2690 -vn -0.8660 0.2596 -0.4273 -vn -0.8078 0.3493 -0.4748 -vn -0.6197 0.1748 -0.7652 -vn -0.7932 0.3257 -0.5145 -vn 0.5186 0.5624 -0.6440 -vn -0.8474 0.1716 -0.5025 -vn -0.7792 0.2751 -0.5631 -vn -0.7477 0.4807 -0.4580 -vn -0.6452 0.7450 0.1695 -vn -0.6212 0.7832 0.0273 -vn -0.9871 0.0674 0.1455 -vn -0.5774 0.6480 -0.4967 -vn -0.5314 0.7340 -0.4229 -vn -0.3884 0.9114 -0.1359 -vn -0.9172 0.3130 -0.2465 -vn -0.9186 0.3019 -0.2549 -vn -0.9942 0.0722 -0.0792 -vn 0.3390 -0.2428 -0.9089 -vn -0.0425 -0.9270 0.3725 -vn -0.7729 -0.5929 -0.2261 -vn -0.8119 -0.5488 -0.1991 -vn -0.8950 -0.3511 -0.2752 -vn -0.8678 0.0473 -0.4947 -vn -0.9951 -0.0516 -0.0845 -vn -0.6869 -0.3796 -0.6198 -vn -0.6492 -0.4636 -0.6030 -vn -0.8095 -0.3143 -0.4959 -vn -0.8529 0.2289 -0.4693 -vn -0.7014 0.1568 -0.6953 -vn -0.6113 0.2822 -0.7394 -vn 0.9658 -0.2426 -0.0913 -vn -0.5583 0.4428 -0.7016 -vn -0.8458 0.0126 -0.5333 -vn -0.8448 0.0175 -0.5348 -vn -0.7352 0.4056 -0.5431 -vn -0.7613 0.2622 -0.5931 -vn -0.6971 0.6599 -0.2805 -vn -0.8832 0.4440 0.1512 -vn -0.9895 0.1419 0.0274 -vn -0.7183 -0.6201 -0.3154 -vn -0.6108 -0.6769 -0.4108 -vn -0.6295 -0.6033 -0.4896 -vn -0.8279 -0.4339 -0.3554 -vn -0.8623 -0.3651 -0.3509 -vn -0.8543 0.2820 -0.4366 -vn -0.8876 0.1481 -0.4361 -vn -0.7974 0.3003 -0.5233 -vn -0.6474 -0.4543 -0.6120 -vn -0.8908 0.0254 -0.4536 -vn -0.6847 -0.4593 -0.5659 -vn -0.6366 -0.5439 -0.5468 -vn -0.8754 -0.1284 -0.4660 -vn -0.6987 -0.3506 -0.6237 -vn -0.9184 0.0395 -0.3936 -vn -0.9164 0.1655 -0.3646 -vn -0.5375 0.4486 -0.7140 -vn -0.8507 0.2281 -0.4737 -vn -0.6169 -0.3171 -0.7203 -vn 0.3884 0.1376 -0.9112 -vn -0.6638 0.4065 -0.6278 -vn -0.6978 0.7149 -0.0432 -vn -0.7055 0.7071 -0.0476 -vn -0.4370 0.7597 0.4815 -vn -0.3884 0.8993 -0.2008 -vn -0.3725 0.9112 -0.1758 -vn -0.7294 -0.6585 -0.1855 -vn -0.6391 0.4023 -0.6555 -vn -0.0843 -0.2857 -0.9546 -vn -0.8288 0.2481 -0.5016 -vn -0.8395 -0.2624 -0.4757 -vn -0.8881 -0.1868 -0.4199 -vn -0.9099 0.1857 -0.3710 -vn -0.9013 0.3727 -0.2206 -vn -0.9610 0.1253 -0.2465 -vn -0.9057 0.2673 -0.3289 -vn -0.9090 0.2346 -0.3444 -vn -0.9398 0.1424 -0.3106 -vn -0.9399 0.0846 -0.3308 -vn -0.8480 -0.0301 -0.5292 -vn -0.6876 0.3728 -0.6231 -vn -0.8197 0.1235 -0.5593 -vn -0.6715 0.1285 -0.7298 -vn -0.4834 0.8720 -0.0771 -vn -0.8789 0.4224 0.2216 -vn -0.6479 0.7458 -0.1551 -vn -0.7344 0.6771 0.0466 -vn -0.6275 0.7772 -0.0466 -vn 0.2524 -0.8354 -0.4882 -vn -0.5296 0.8466 -0.0521 -vn -0.9367 0.3352 0.1011 -vn -0.9688 -0.2409 0.0589 -vn -0.1930 -0.4428 -0.8756 -vn -0.7870 -0.5961 -0.1593 -vn -0.9493 -0.0595 -0.3087 -vn -0.9429 -0.0704 -0.3255 -vn -0.9913 -0.1290 -0.0275 -vn -0.9846 -0.1622 -0.0652 -vn -0.0139 -0.9999 0.0079 -vn 0.8213 0.4361 -0.3680 -vn 0.5092 0.7070 -0.4907 -vn 0.6480 0.5629 -0.5131 -vn 0.2617 0.5764 -0.7741 -vn 0.0980 -0.7998 -0.5923 -vn 0.6376 0.6791 -0.3636 -vn -0.4943 -0.1211 -0.8608 -vn -0.2546 0.6480 -0.7178 -vn 0.7927 0.5089 -0.3357 -vn 0.0934 0.5729 -0.8143 -vn -0.4165 0.4699 -0.7783 -vn -0.6944 -0.5996 -0.3979 -vn 0.0888 0.6731 -0.7342 -vn 0.1469 -0.9780 -0.1484 -vn 0.4022 0.6797 -0.6134 -vn -0.1349 0.7567 -0.6397 -vn -0.3451 0.8923 -0.2912 -vn -0.3154 0.2292 -0.9209 -vn -0.3213 0.8100 -0.4906 -vn 0.8802 -0.0926 -0.4654 -vn 0.6745 0.1087 -0.7302 -vn -0.1271 0.8440 -0.5210 -vn 0.2415 0.5840 -0.7750 -vn 0.0200 0.4165 -0.9089 -vn -0.0790 0.7331 -0.6755 -vn 0.0164 -0.9970 0.0761 -vn 0.5929 -0.7692 0.2383 -vn -0.4569 0.1526 -0.8763 -vn 0.1644 -0.9756 -0.1455 -vn 0.3642 0.6972 -0.6175 -vn -0.0384 0.7598 -0.6490 -vn -0.7076 0.5028 -0.4965 -vn 0.1734 -0.5382 -0.8248 -vn -0.1926 0.9308 -0.3106 -vn -0.2582 0.8552 -0.4494 -vn 0.9238 -0.1191 -0.3638 -vn 0.5350 0.3337 -0.7762 -vn -0.1080 0.6891 -0.7166 -vn 0.1629 0.3214 -0.9328 -vn -0.0757 0.7455 -0.6621 -vn 0.8877 0.0160 -0.4601 -vn 0.5996 0.4187 -0.6820 -vn 0.8663 -0.1322 -0.4816 -vn 0.7008 -0.2395 -0.6719 -vn 0.6540 0.1336 -0.7446 -vn 0.3624 0.8402 -0.4034 -vn 0.0820 0.2386 -0.9677 -vn 0.3667 0.6045 -0.7072 -vn 0.4013 0.6710 -0.6235 -vn 0.4263 0.4266 -0.7976 -vn 0.6058 -0.2040 -0.7690 -vn 0.6416 0.4908 -0.5895 -vn 0.3825 0.5115 -0.7694 -vn 0.6760 0.5908 -0.4404 -vn -0.4002 0.5384 -0.7416 -vn 0.1715 0.4831 -0.8586 -vn 0.4471 0.7374 -0.5063 -vn -0.2141 0.3943 -0.8937 -vn 0.5880 0.1209 -0.7998 -vn 0.7786 -0.1673 -0.6048 -vn 0.6514 0.3500 -0.6732 -vn -0.5352 0.0827 -0.8407 -vn -0.1560 0.5982 -0.7860 -vn 0.5265 0.3915 -0.7547 -vn 0.1234 0.4438 -0.8876 -vn 0.6188 0.2950 -0.7281 -vn 0.0812 -0.9794 0.1849 -vn 0.7373 0.4450 -0.5083 -vn 0.7371 0.4453 -0.5084 -vn 0.4994 0.6925 -0.5206 -vn -0.2291 -0.9732 0.0193 -vn 0.6763 0.3912 -0.6242 -vn 0.3472 0.2380 -0.9071 -vn 0.4893 0.1846 -0.8523 -vn -0.2695 0.5476 -0.7921 -vn 0.2410 0.7021 -0.6700 -vn -0.1318 0.2587 -0.9569 -vn 0.2105 0.4535 -0.8660 -vn 0.4030 0.4172 -0.8146 -vn -0.6195 0.7193 0.3145 -vn -0.1075 0.4564 -0.8833 -vn 0.4097 0.5915 -0.6944 -vn 0.0918 0.8755 -0.4744 -vn 0.3577 0.8075 -0.4690 -vn 0.5853 0.6432 -0.4936 -vn 0.5565 0.2715 -0.7853 -vn 0.4412 0.4619 -0.7694 -vn -0.1611 0.8401 -0.5180 -vn 0.4987 0.2923 -0.8160 -vn 0.1528 -0.8350 0.5286 -vn 0.8019 0.5456 -0.2435 -vn -0.2250 0.6301 -0.7432 -vn -0.3982 0.8564 -0.3286 -vn 0.4802 0.3149 -0.8187 -vn 0.3757 -0.9152 -0.1460 -vn 0.7950 0.4583 -0.3975 -vn 0.2244 0.0616 -0.9726 -vn 0.4846 0.5469 -0.6827 -vn 0.7605 0.1313 -0.6359 -vn 0.7596 0.0898 -0.6442 -vn 0.0382 0.6695 -0.7419 -vn 0.3630 0.8831 -0.2974 -vn 0.3547 0.7057 -0.6133 -vn 0.8707 0.3571 -0.3381 -vn 0.2560 0.5199 -0.8150 -vn -0.0174 0.5147 -0.8572 -vn 0.0171 -0.4102 0.9118 -vn 0.3860 0.4538 -0.8032 -vn -0.2962 0.9239 -0.2421 -vn 0.1200 -0.9928 -0.0051 -vn -0.1211 0.5537 -0.8239 -vn 0.7657 0.2880 -0.5751 -vn -0.0002 0.7031 -0.7111 -vn 0.7502 0.4278 -0.5042 -vn 0.4418 0.7883 -0.4283 -vn 0.5391 0.0688 -0.8394 -vn 0.7376 0.3102 -0.5998 -vn -0.1903 0.9409 -0.2803 -vn -0.6272 0.3169 -0.7114 -vn 0.3452 0.3301 -0.8786 -vn -0.0824 0.8852 -0.4578 -vn 0.3505 0.4474 -0.8228 -vn -0.2570 0.9482 -0.1865 -vn 0.3520 0.8047 -0.4781 -vn 0.6599 0.0894 -0.7461 -vn -0.0020 -0.9999 0.0159 -vn -0.0227 -0.9984 0.0519 -vn 0.6280 0.0178 -0.7780 -vn 0.3074 0.8314 -0.4630 -vn -0.2469 0.9127 -0.3257 -vn 0.4765 0.7439 -0.4686 -vn 0.4198 0.6151 -0.6674 -vn 0.0307 -0.0594 -0.9978 -vn 0.0097 0.3451 -0.9385 -vn 0.7652 0.1282 -0.6309 -vn 0.7450 -0.6100 0.2700 -vn 0.2263 0.0761 -0.9711 -vn 0.6604 0.7217 -0.2076 -vn 0.7805 0.1029 -0.6166 -vn 0.3103 0.6943 -0.6493 -vn -0.0070 0.8987 -0.4385 -vn -0.1227 0.9212 -0.3692 -vn -0.1182 0.3269 -0.9376 -vn -0.0151 0.8523 -0.5228 -vn 0.3379 0.2358 -0.9112 -vn -0.0914 0.5854 -0.8056 -vn -0.7327 0.5674 -0.3759 -vn 0.5978 0.4933 -0.6319 -vn -0.0147 0.9064 -0.4221 -vn 0.1141 0.8030 -0.5850 -vn 0.1265 0.8115 -0.5704 -vn 0.7587 0.4825 -0.4377 -vn -0.3919 0.8065 -0.4427 -vn 0.2163 0.4838 -0.8480 -vn 0.0072 0.9011 -0.4335 -vn -0.0297 0.8149 -0.5789 -vn -0.5050 0.8393 -0.2016 -vn 0.9701 -0.2418 -0.0215 -vn -0.2204 0.6624 -0.7160 -vn -0.0111 0.6722 -0.7403 -vn 0.4671 0.6363 -0.6140 -vn 0.3316 0.6497 -0.6841 -vn -0.6895 0.2432 -0.6822 -vn 0.4915 0.7871 -0.3727 -vn 0.1310 -0.9913 0.0116 -vn -0.9015 -0.2457 -0.3563 -vn -0.4458 0.6199 -0.6457 -vn -0.3080 0.7555 -0.5782 -vn 0.4589 0.5145 -0.7243 -vn 0.5572 0.5622 -0.6112 -vn 0.7201 0.3232 -0.6140 -vn 0.3477 0.2411 -0.9061 -vn 0.4513 0.5895 -0.6699 -vn 0.0995 0.7302 -0.6759 -vn 0.3865 0.6827 -0.6201 -vn 0.1173 0.7677 -0.6299 -vn 0.3134 0.3055 -0.8991 -vn -0.4316 0.5804 -0.6906 -vn -0.0937 0.5173 -0.8507 -vn -0.1928 0.3227 -0.9267 -vn 0.5473 0.4738 -0.6899 -vn 0.0970 0.6500 -0.7537 -vn 0.1079 0.5723 -0.8129 -vn 0.0609 0.5365 -0.8417 -vn -0.2584 0.8453 -0.4677 -vn 0.1147 0.6019 -0.7903 -vn -0.4779 0.8162 -0.3248 -vn -0.7181 0.0872 -0.6905 -vn -0.1905 0.5409 -0.8192 -vn -0.2028 0.6123 -0.7642 -vn -0.6481 0.5273 -0.5494 -vn -0.6844 0.3723 -0.6270 -vn -0.5345 0.1143 -0.8374 -vn -0.5435 0.1880 -0.8181 -vn 0.4781 -0.6003 -0.6412 -vn 0.0415 0.8286 -0.5583 -vn 0.8958 -0.0050 0.4444 -vn -0.4504 0.8031 -0.3902 -vn -0.1622 0.4657 -0.8700 -vn 0.4424 -0.8965 -0.0255 -vn 0.7087 -0.0343 -0.7047 -vn -0.5524 0.5534 -0.6234 -vn -0.2640 0.8089 -0.5254 -vn 0.1014 0.7474 -0.6566 -vn 0.2852 0.5696 -0.7708 -vn 0.3153 0.2658 -0.9110 -vn 0.1059 0.3190 -0.9418 -vn -0.1480 0.7492 -0.6456 -vn 0.0527 0.5164 -0.8547 -vn -0.0598 0.6291 -0.7750 -vn 0.0990 0.6969 -0.7103 -vn -0.0574 -0.5987 -0.7989 -vn -0.2071 0.4234 -0.8819 -vn 0.4117 -0.7340 -0.5402 -vn -0.0184 0.1820 -0.9831 -vn 0.3104 0.2073 -0.9277 -vn -0.3835 0.6481 -0.6580 -vn 0.1699 -0.7928 -0.5854 -vn -0.2396 0.8281 -0.5067 -vn 0.0212 0.6680 -0.7439 -vn 0.2577 -0.6557 -0.7097 -vn -0.2522 0.9463 -0.2023 -vn 0.3896 0.6134 -0.6870 -vn -0.7087 -0.0202 -0.7052 -vn 0.0182 -0.9998 0.0130 -vn 0.3744 0.3938 -0.8395 -vn -0.1357 -0.5164 0.8456 -vn -0.1712 0.5303 -0.8303 -vn 0.2387 0.4368 -0.8673 -vn 0.1826 0.4168 -0.8904 -vn 0.3579 0.4662 -0.8091 -vn 0.2464 0.4948 -0.8333 -vn -0.2026 0.7409 -0.6403 -vn -0.1253 0.5538 -0.8231 -vn -0.0262 0.9900 -0.1389 -vn -0.1806 0.6644 -0.7252 -vn 0.4170 -0.8753 0.2451 -vn 0.7510 0.0545 -0.6580 -vn -0.0813 -0.8072 0.5847 -vn 0.4694 0.4054 -0.7844 -vn -0.2246 0.7999 -0.5565 -vn 0.3664 0.3647 -0.8560 -vn 0.0394 0.4248 -0.9044 -vn 0.1648 0.4280 -0.8886 -vn -0.2563 0.6072 -0.7521 -vn 0.4481 0.3236 -0.8334 -vn 0.0479 0.0226 -0.9986 -vn 0.4611 0.1964 -0.8653 -vn 0.3096 0.5696 -0.7614 -vn 0.1383 0.0017 -0.9904 -vn 0.6906 0.1037 -0.7158 -vn 0.7280 0.1065 -0.6772 -vn -0.2313 0.6276 -0.7434 -vn 0.5414 0.2063 -0.8151 -vn -0.2016 0.8236 -0.5301 -vn -0.1853 0.9413 -0.2823 -vn 0.7303 0.0517 0.6812 -vn 0.3073 0.2944 -0.9049 -vn -0.2161 0.9340 -0.2845 -vn -0.1894 0.5274 -0.8282 -vn 0.2892 0.3385 -0.8954 -vn -0.3141 0.6162 -0.7222 -vn -0.6164 0.7740 0.1448 -vn -0.2220 0.3835 -0.8965 -vn 0.4136 0.0217 -0.9102 -vn 0.6326 0.4650 -0.6194 -vn -0.0620 0.5588 -0.8270 -vn 0.1679 0.5435 -0.8225 -vn 0.0279 0.8621 -0.5059 -vn 0.3878 0.4849 -0.7839 -vn -0.6664 -0.7430 0.0622 -vn 0.2749 0.6753 -0.6844 -vn -0.0367 0.5850 -0.8102 -vn -0.0467 0.6098 -0.7912 -vn -0.2760 0.7170 -0.6401 -vn -0.1817 0.5144 -0.8381 -vn 0.6754 0.4541 -0.5811 -vn 0.2456 0.5128 -0.8227 -vn 0.5177 0.2858 -0.8064 -vn 0.1852 0.9117 -0.3667 -vn 0.1017 0.7708 -0.6289 -vn 0.2663 0.8882 -0.3745 -vn 0.3850 0.5555 -0.7370 -vn 0.7027 0.4766 -0.5283 -vn 0.4853 0.0918 -0.8695 -vn -0.2671 0.6644 -0.6980 -vn -0.3104 0.1666 -0.9359 -vn 0.1904 0.7897 -0.5831 -vn 0.1698 0.9530 -0.2509 -vn -0.0269 0.8208 -0.5706 -vn 0.5853 0.1695 -0.7929 -vn 0.0057 0.6112 -0.7915 -vn -0.1950 0.6088 -0.7690 -vn -0.1852 0.5111 -0.8393 -vn -0.5648 0.8244 0.0374 -vn -0.3278 0.8456 -0.4214 -vn 0.1105 0.9584 -0.2631 -vn 0.8257 0.3130 0.4693 -vn -0.0244 0.7004 -0.7133 -vn 0.3398 0.6446 -0.6848 -vn 0.7139 0.3967 -0.5770 -vn 0.4187 0.5112 -0.7506 -vn -0.1119 0.4504 -0.8858 -vn -0.2270 0.6215 -0.7498 -vn -0.4896 0.6996 -0.5205 -vn 0.3399 0.3158 -0.8858 -vn 0.7173 0.2973 -0.6302 -vn 0.4022 0.1446 -0.9040 -vn -0.3883 0.9038 -0.1801 -vn 0.1570 0.6230 -0.7663 -vn -0.0846 0.2965 -0.9513 -vn 0.0835 0.8876 -0.4530 -vn 0.3915 0.8355 -0.3855 -vn 0.0802 0.5780 -0.8121 -vn 0.1130 0.8964 -0.4286 -vn 0.9689 0.2026 0.1421 -vn -0.1706 0.7689 -0.6162 -vn -0.1705 0.7683 -0.6170 -vn 0.1259 0.4791 -0.8687 -vn 0.8639 0.3912 -0.3173 -vn 0.3856 0.1669 -0.9074 -vn -0.1287 0.8428 -0.5226 -vn -0.0495 0.7713 -0.6346 -vn -0.0859 0.7239 -0.6845 -vn 0.1757 0.7143 -0.6774 -vn 0.0516 0.7647 -0.6423 -vn 0.5817 0.4098 -0.7026 -vn 0.2316 0.8499 -0.4733 -vn -0.1487 0.7696 -0.6209 -vn -0.0448 0.5879 -0.8077 -vn 0.1345 0.4929 -0.8596 -vn 0.5937 0.4106 -0.6920 -vn -0.2052 0.8504 -0.4844 -vn -0.0958 0.8283 -0.5520 -vn 0.5806 -0.1635 -0.7976 -vn -0.5422 0.5433 -0.6410 -vn -0.3827 0.0426 0.9229 -vn 0.0493 0.9004 -0.4323 -vn 0.4359 0.2904 -0.8518 -vn 0.7483 0.5560 -0.3618 -vn 0.7661 0.4540 -0.4550 -vn -0.1888 0.3124 -0.9310 -vn 0.0278 0.2817 -0.9591 -vn 0.6207 0.3193 -0.7160 -vn 0.0020 0.2580 -0.9661 -vn 0.1594 0.8255 -0.5415 -vn -0.0737 0.6784 -0.7310 -vn 0.2444 0.6290 -0.7380 -vn -0.2455 0.5331 -0.8096 -vn 0.6120 0.1772 -0.7708 -vn -0.1226 0.8956 -0.4275 -vn -0.0772 0.8389 -0.5387 -vn -0.0158 0.6708 -0.7415 -vn -0.0495 0.5855 -0.8092 -vn -0.1049 0.5617 -0.8206 -vn -0.0367 0.9049 -0.4239 -vn 0.6290 0.1880 -0.7543 -vn -0.2349 0.9135 -0.3321 -vn -0.0081 0.8534 -0.5212 -vn -0.2562 0.7633 -0.5931 -vn -0.3742 -0.5424 -0.7522 -vn 0.3995 0.8288 -0.3918 -vn 0.2771 0.9246 -0.2615 -vn 0.1068 0.8552 -0.5071 -vn -0.0015 0.2301 -0.9732 -vn -0.1160 0.8229 -0.5563 -vn -0.4098 0.6769 -0.6114 -vn 0.2415 0.3956 -0.8861 -vn -0.0423 0.7258 -0.6866 -vn -0.3057 0.9218 -0.2386 -vn 0.1750 0.9432 -0.2823 -vn 0.5694 0.1163 -0.8138 -vn 0.1412 0.9581 -0.2494 -vn 0.0287 0.5363 -0.8435 -vn 0.0820 0.7215 -0.6875 -vn 0.0189 0.9053 -0.4243 -vn -0.0607 0.6562 -0.7522 -vn -0.3821 0.8559 -0.3484 -vn 0.0403 -0.7073 -0.7058 -vn 0.2406 0.8837 -0.4014 -vn -0.0536 0.6176 -0.7847 -vn 0.3271 0.8275 -0.4564 -vn -0.0629 0.5965 -0.8001 -vn 0.4761 -0.8794 0.0041 -vn -0.0754 0.0556 -0.9956 -vn 0.1139 0.9601 -0.2554 -vn 0.0665 0.6944 -0.7165 -vn 0.1621 0.4501 -0.8781 -vn 0.1707 0.3322 -0.9277 -vn -0.0696 0.8377 -0.5417 -vn 0.2328 0.6919 -0.6834 -vn 0.3056 -0.2379 0.9219 -vn -0.1158 0.9237 -0.3651 -vn -0.3353 0.7305 -0.5949 -vn 0.2809 0.8233 -0.4933 -vn 0.1465 0.4232 -0.8941 -vn 0.1265 0.8473 -0.5159 -vn 0.1427 0.8014 -0.5808 -vn -0.1095 -0.9907 0.0803 -vn 0.2999 0.3929 -0.8693 -vn -0.0970 0.9474 -0.3050 -vn 0.2050 -0.0719 0.9761 -vn 0.1138 0.6974 0.7076 -vn 0.0338 0.6891 -0.7239 -vn 0.5385 0.2750 -0.7965 -vn 0.3641 0.5184 -0.7738 -vn 0.6015 0.3590 -0.7137 -vn -0.1673 0.6139 -0.7715 -vn -0.1577 0.5326 -0.8316 -vn -0.1607 0.5503 -0.8194 -vn -0.0438 0.7662 -0.6411 -vn 0.2325 0.2799 -0.9314 -vn 0.0364 0.9186 -0.3934 -vn 0.0644 -0.0623 -0.9960 -vn 0.3482 0.4849 -0.8023 -vn -0.3503 0.2615 -0.8994 -vn 0.5895 0.7616 -0.2693 -vn 0.2912 0.5617 -0.7744 -vn 0.6279 0.2884 -0.7229 -vn 0.4583 0.8076 -0.3711 -vn -0.2166 0.6403 -0.7370 -vn -0.5197 0.4573 -0.7217 -vn -0.3754 0.7296 -0.5716 -vn 0.2115 0.9124 -0.3504 -vn 0.2660 0.4952 -0.8271 -vn 0.0202 0.6189 -0.7852 -vn -0.0858 0.4772 -0.8746 -vn 0.1471 0.5692 -0.8090 -vn -0.4221 0.6347 -0.6473 -vn -0.2542 0.5692 -0.7819 -vn -0.6432 0.2177 -0.7341 -vn -0.1689 0.4368 -0.8836 -vn -0.3490 0.2409 -0.9056 -vn -0.0129 0.7116 -0.7025 -vn 0.1771 0.9413 -0.2874 -vn 0.2216 0.5084 -0.8321 -vn 0.0718 0.8136 -0.5770 -vn -0.0947 0.9423 -0.3212 -vn 0.7459 0.2830 -0.6030 -vn -0.0470 0.6324 -0.7732 -vn 0.2733 0.3666 -0.8893 -vn 0.2478 0.5582 -0.7918 -vn 0.6898 0.6129 -0.3854 -vn 0.2322 0.6683 -0.7067 -vn 0.4966 0.7028 -0.5093 -vn -0.1858 0.6272 -0.7564 -vn 0.3575 0.4665 -0.8090 -vn -0.0830 0.6042 -0.7925 -vn -0.0511 0.7412 -0.6693 -vn -0.3797 0.5352 -0.7546 -vn 0.3326 -0.9381 0.0964 -vn -0.0051 0.8993 -0.4372 -vn -0.3581 0.8366 -0.4146 -vn -0.6309 0.7636 -0.1376 -vn 0.3486 0.4334 -0.8310 -vn 0.2983 0.2756 -0.9138 -vn -0.6391 -0.7387 -0.2143 -vn 0.3677 0.8393 -0.4005 -vn 0.3201 0.6596 -0.6801 -vn 0.4670 0.5935 -0.6555 -vn 0.0138 0.6215 -0.7833 -vn -0.0159 0.5045 -0.8632 -vn 0.0222 0.7629 -0.6461 -vn 0.3170 0.3378 -0.8862 -vn -0.0050 0.7621 -0.6474 -vn 0.3853 0.4084 -0.8275 -vn -0.4997 -0.7873 -0.3612 -vn -0.3041 0.3030 -0.9032 -vn -0.3540 0.7612 -0.5434 -vn -0.2613 0.9086 -0.3258 -vn 0.5115 0.2682 -0.8164 -vn 0.1072 0.6723 -0.7325 -vn 0.2623 0.7276 -0.6339 -vn 0.0041 0.8976 -0.4407 -vn 0.8804 -0.4694 -0.0676 -vn -0.6343 0.3194 -0.7040 -vn 0.3675 0.2458 -0.8970 -vn -0.0689 0.1451 -0.9870 -vn -0.2855 0.3156 -0.9049 -vn -0.2574 -0.1034 -0.9608 -vn -0.4892 0.3476 -0.7999 -vn -0.4150 0.0734 -0.9069 -vn 0.0278 -0.9747 -0.2216 -vn -0.2173 -0.2696 -0.9382 -vn -0.3975 -0.0395 -0.9167 -vn -0.3963 0.3616 -0.8439 -vn -0.3461 0.3238 -0.8805 -vn -0.4374 0.3601 -0.8240 -vn 0.0431 0.7559 0.6533 -vn -0.0781 0.0523 -0.9956 -vn -0.4651 0.0564 -0.8835 -vn -0.4154 0.5280 -0.7407 -vn -0.3675 -0.0643 -0.9278 -vn -0.3355 0.3133 -0.8884 -vn 0.6378 -0.1516 -0.7551 -vn 0.5305 -0.6780 -0.5088 -vn -0.5646 -0.0721 -0.8222 -vn -0.5857 0.1418 -0.7980 -vn 0.0817 -0.8702 -0.4859 -vn 0.5785 -0.1506 -0.8016 -vn -0.5768 -0.7856 -0.2240 -vn -0.7042 -0.0062 -0.7100 -vn -0.4113 0.2821 -0.8667 -vn -0.5660 -0.6539 -0.5020 -vn 0.4166 0.0162 -0.9090 -vn -0.2664 0.7633 -0.5885 -vn -0.0626 0.0578 -0.9964 -vn -0.1492 0.3070 -0.9399 -vn -0.3632 0.0792 -0.9283 -vn -0.4643 0.2453 -0.8510 -vn 0.4066 -0.6906 0.5981 -vn 0.5199 -0.3210 -0.7917 -vn -0.4375 -0.0329 -0.8986 -vn -0.5631 -0.6777 -0.4729 -vn 0.3965 -0.2718 -0.8769 -vn 0.3101 -0.0512 -0.9493 -vn -0.2809 -0.4507 -0.8473 -vn 0.0109 -0.9992 -0.0389 -vn -0.6911 -0.7227 -0.0044 -vn -0.4032 -0.3365 -0.8510 -vn -0.5707 0.2578 -0.7796 -vn -0.6588 0.7014 -0.2721 -vn 0.3799 -0.7118 -0.5908 -vn -0.7426 -0.3811 -0.5507 -vn 0.6785 -0.0765 -0.7306 -vn -0.3356 0.3533 -0.8732 -vn 0.2725 0.1107 -0.9558 -vn 0.3134 -0.5280 -0.7893 -vn 0.3685 -0.2870 -0.8842 -vn 0.0515 0.1464 -0.9879 -vn 0.2584 0.2209 -0.9404 -vn -0.4076 -0.8355 -0.3686 -vn -0.1730 0.2318 -0.9573 -vn -0.5329 -0.6047 -0.5918 -vn 0.5378 -0.6802 -0.4981 -vn -0.1389 0.2052 -0.9688 -vn -0.4610 -0.5246 -0.7157 -vn -0.8850 -0.0341 -0.4642 -vn -0.1090 0.9859 -0.1268 -vn -0.3799 -0.6341 -0.6735 -vn -0.5759 -0.5835 -0.5726 -vn 0.3601 -0.7863 -0.5020 -vn 0.2847 -0.5455 -0.7883 -vn 0.1519 -0.1625 -0.9749 -vn -0.5469 0.0577 -0.8352 -vn 0.0832 -0.5898 -0.8032 -vn -0.0954 -0.3235 -0.9414 -vn -0.3617 -0.4019 -0.8412 -vn 0.8307 0.3665 -0.4191 -vn -0.1323 -0.7175 -0.6839 -vn 0.1116 -0.1669 -0.9796 -vn -0.0611 0.3458 -0.9363 -vn -0.0744 0.4022 -0.9125 -vn -0.0321 0.4818 -0.8757 -vn 0.2496 -0.9276 -0.2780 -vn 0.0520 0.1274 -0.9905 -vn 0.0885 -0.9044 -0.4174 -vn -0.0695 0.7287 -0.6813 -vn 0.0524 -0.8849 -0.4628 -vn -0.0743 -0.9954 -0.0606 -vn -0.0175 0.1544 -0.9879 -vn -0.6916 0.3147 -0.6501 -vn -0.8199 -0.0928 -0.5650 -vn 0.1033 -0.5200 -0.8479 -vn -0.0160 -0.0779 -0.9968 -vn -0.1012 0.2937 -0.9505 -vn -0.1930 -0.0319 -0.9807 -vn 0.0940 -0.4492 -0.8885 -vn -0.3555 0.3061 -0.8831 -vn -0.8297 0.0755 -0.5531 -vn -0.5221 -0.4171 -0.7439 -vn -0.4887 -0.0620 -0.8702 -vn -0.4975 -0.0419 -0.8665 -vn -0.1643 -0.1515 -0.9747 -vn -0.4275 -0.6877 -0.5867 -vn -0.5990 -0.7017 -0.3857 -vn -0.1152 0.2310 -0.9661 -vn 0.1099 -0.6280 -0.7704 -vn 0.0304 -0.0061 -0.9995 -vn 0.0272 -0.9992 -0.0306 -vn -0.8170 0.5051 -0.2782 -vn -0.7586 0.2977 -0.5796 -vn -0.1633 -0.1465 -0.9756 -vn 0.3715 -0.6315 -0.6806 -vn 0.2617 -0.5054 -0.8222 -vn 0.2927 -0.4226 -0.8578 -vn 0.0143 0.2104 -0.9775 -vn 0.1475 0.3868 -0.9103 -vn 0.1058 -0.0315 -0.9939 -vn -0.5385 -0.0754 -0.8392 -vn -0.5974 0.1570 -0.7865 -vn -0.4824 -0.6181 -0.6207 -vn -0.1563 0.0222 -0.9875 -vn -0.4010 -0.0422 -0.9151 -vn -0.1396 0.0712 -0.9876 -vn -0.0958 0.1960 -0.9759 -vn -0.2762 0.1604 -0.9476 -vn -0.4138 0.5280 -0.7416 -vn -0.3820 0.3750 -0.8447 -vn -0.3488 0.1349 -0.9274 -vn 0.2886 0.1654 -0.9431 -vn -0.5766 0.1867 -0.7954 -vn -0.3704 -0.1023 -0.9232 -vn -0.0997 0.0637 -0.9930 -vn -0.6010 -0.4800 -0.6390 -vn -0.0849 0.0071 -0.9964 -vn -0.0208 -0.1406 -0.9898 -vn -0.5282 0.1285 -0.8394 -vn -0.0307 -0.0882 -0.9956 -vn -0.7634 -0.5912 -0.2602 -vn 0.5065 0.0656 -0.8598 -vn -0.1938 0.0649 -0.9789 -vn -0.2825 0.1976 -0.9387 -vn -0.2921 0.3287 -0.8981 -vn -0.0910 -0.2578 -0.9619 -vn -0.1891 0.0697 -0.9795 -vn -0.1641 0.0879 -0.9825 -vn 0.2223 -0.7125 -0.6655 -vn 0.1173 -0.1109 -0.9869 -vn 0.1109 -0.0830 -0.9904 -vn -0.1871 0.1353 -0.9730 -vn -0.3007 -0.0057 -0.9537 -vn 0.0619 0.4287 -0.9013 -vn -0.2542 0.1672 -0.9526 -vn 0.1303 -0.2308 -0.9642 -vn 0.0393 -0.9826 0.1816 -vn -0.1213 0.4117 -0.9032 -vn -0.3404 0.3433 -0.8754 -vn -0.7499 0.0716 -0.6576 -vn -0.6299 0.1819 -0.7551 -vn -0.7987 -0.1142 -0.5908 -vn -0.8340 -0.2429 -0.4954 -vn 0.1367 -0.5413 -0.8296 -vn -0.4968 0.8517 0.1666 -vn -0.2339 -0.1735 -0.9566 -vn -0.2121 0.2694 -0.9394 -vn 0.0918 -0.5260 -0.8455 -vn 0.0072 -0.1282 -0.9917 -vn -0.0175 -0.1581 -0.9873 -vn -0.4515 0.3448 -0.8230 -vn -0.5948 0.1184 -0.7951 -vn -0.0473 -0.0858 -0.9952 -vn -0.0315 -0.3456 -0.9378 -vn 0.1508 -0.3838 -0.9110 -vn 0.1543 -0.3971 -0.9047 -vn 0.3826 0.5115 0.7694 -vn 0.5597 -0.3899 -0.7312 -vn 0.2736 -0.8790 -0.3905 -vn 0.1474 -0.4823 -0.8635 -vn -0.6823 -0.2008 -0.7030 -vn -0.1815 0.1498 -0.9719 -vn 0.5168 -0.3502 -0.7812 -vn 0.1622 -0.0481 -0.9856 -vn 0.3823 0.5786 -0.7205 -vn 0.6078 -0.7886 -0.0935 -vn 0.2040 -0.6878 0.6966 -vn -0.0134 -0.9999 0.0079 -vn -0.6565 0.3423 -0.6722 -vn -0.0544 0.4532 -0.8897 -vn -0.6128 -0.0687 -0.7872 -vn 0.3094 -0.7497 -0.5850 -vn 0.2281 -0.4824 -0.8457 -vn -0.6472 -0.2018 -0.7351 -vn -0.3067 0.1816 -0.9343 -vn 0.3555 0.0425 -0.9337 -vn 0.3687 -0.0310 -0.9290 -vn 0.4170 0.4775 -0.7733 -vn 0.1795 -0.2277 -0.9570 -vn -0.3662 0.0841 -0.9267 -vn 0.4785 -0.4129 -0.7750 -vn -0.4176 -0.0191 -0.9084 -vn -0.2598 -0.4605 -0.8488 -vn -0.3787 -0.5646 -0.7333 -vn -0.5703 0.2575 -0.7800 -vn 0.1026 -0.9025 -0.4184 -vn -0.0079 -0.4437 -0.8961 -vn -0.0149 -0.4530 -0.8914 -vn -0.1096 -0.8463 -0.5214 -vn 0.2089 -0.3717 -0.9046 -vn -0.6609 -0.3651 -0.6557 -vn -0.6473 0.2830 -0.7078 -vn -0.2685 -0.7487 -0.6061 -vn -0.1082 -0.5796 -0.8077 -vn -0.0810 0.2922 -0.9529 -vn -0.4555 -0.2710 -0.8480 -vn 0.6208 -0.0694 -0.7809 -vn -0.1114 -0.7653 -0.6340 -vn -0.2300 -0.2114 -0.9500 -vn -0.3337 -0.2720 -0.9026 -vn -0.2758 -0.6617 -0.6972 -vn -0.4811 -0.8764 -0.0206 -vn -0.4453 -0.4408 -0.7794 -vn -0.9818 0.1516 0.1144 -vn 0.1962 -0.4658 -0.8629 -vn -0.4553 0.7592 0.4650 -vn -0.5476 -0.3744 -0.7483 -vn -0.2951 -0.2606 -0.9192 -vn -0.4140 -0.2908 -0.8625 -vn -0.1845 -0.5249 -0.8309 -vn 0.7288 0.1757 -0.6619 -vn 0.6599 -0.2152 -0.7199 -vn 0.5530 -0.0003 -0.8332 -vn 0.0572 -0.1327 -0.9895 -vn -0.3474 0.2048 -0.9151 -vn -0.5141 0.4783 -0.7120 -vn -0.0337 -0.6400 -0.7676 -vn -0.5098 0.4541 -0.7307 -vn -0.6413 -0.6262 -0.4434 -vn -0.3356 0.3175 -0.8869 -vn -0.1905 -0.7902 -0.5825 -vn 0.2532 -0.6244 -0.7389 -vn 0.2430 -0.4590 -0.8546 -vn -0.0177 -0.9337 0.3576 -vn -0.8111 0.2037 -0.5482 -vn 0.5753 0.1576 -0.8026 -vn 0.4124 -0.7732 -0.4817 -vn -0.3335 -0.2716 -0.9028 -vn -0.5543 -0.2636 -0.7894 -vn -0.3805 -0.4504 -0.8077 -vn 0.5509 0.1364 -0.8234 -vn -0.0248 -0.2072 -0.9780 -vn -0.5080 -0.6500 -0.5652 -vn 0.4923 -0.1646 -0.8547 -vn 0.6583 0.0875 -0.7476 -vn -0.3621 0.1469 0.9205 -vn 0.2174 -0.9216 -0.3214 -vn -0.0286 -0.2761 -0.9607 -vn -0.1494 -0.5061 -0.8494 -vn -0.2591 -0.3035 -0.9169 -vn 0.1415 -0.3970 -0.9068 -vn -0.5939 -0.1999 -0.7793 -vn -0.4052 -0.6112 -0.6799 -vn 0.2335 0.0433 -0.9714 -vn 0.2822 -0.6618 -0.6946 -vn -0.4730 -0.2390 0.8480 -vn -0.6878 -0.0977 -0.7193 -vn -0.0238 0.1251 0.9919 -vn 0.6657 -0.2094 -0.7163 -vn 0.5385 0.0574 -0.8406 -vn -0.9627 0.0192 -0.2699 -vn 0.9200 -0.1313 -0.3693 -vn -0.0591 -0.2408 -0.9688 -vn 0.1004 0.0880 -0.9911 -vn -0.0494 -0.6830 -0.7288 -vn -0.0117 -0.9984 0.0558 -vn 0.5081 -0.4890 -0.7090 -vn 0.5390 -0.2297 -0.8104 -vn 0.8061 -0.2750 -0.5240 -vn 0.0475 -0.2531 -0.9663 -vn -0.0435 -0.0127 -0.9990 -vn 0.6499 -0.2587 -0.7146 -vn 0.5199 -0.0463 -0.8530 -vn 0.4076 0.0886 -0.9088 -vn -0.2906 0.1339 -0.9474 -vn -0.1706 0.4225 -0.8902 -vn -0.3841 -0.2731 -0.8820 -vn 0.2384 0.0634 -0.9691 -vn 0.3760 -0.7368 -0.5619 -vn -0.5501 0.2174 -0.8063 -vn 0.3353 0.0483 -0.9409 -vn -0.6796 0.4181 -0.6027 -vn -0.2223 0.0399 -0.9742 -vn 0.1755 -0.9801 -0.0932 -vn 0.4825 0.0144 -0.8758 -vn 0.1506 -0.4646 -0.8726 -vn 0.1088 0.2269 -0.9678 -vn 0.2304 0.0568 -0.9714 -vn -0.7757 -0.5860 -0.2342 -vn -0.7375 -0.1752 -0.6522 -vn -0.4361 -0.2295 -0.8701 -vn -0.2499 -0.3125 -0.9165 -vn -0.5439 -0.7489 -0.3786 -vn -0.3559 0.4368 -0.8262 -vn 0.0217 -0.1136 -0.9933 -vn -0.5437 -0.6882 -0.4803 -vn -0.5687 0.3954 -0.7213 -vn 0.3717 -0.6379 -0.6744 -vn 0.6501 -0.4424 -0.6177 -vn 0.6722 -0.1168 -0.7311 -vn 0.7468 -0.1864 -0.6383 -vn 0.7743 -0.1960 -0.6016 -vn 0.4934 -0.0470 -0.8686 -vn 0.0265 -0.3521 -0.9356 -vn -0.0554 -0.4367 -0.8979 -vn 0.0242 -0.2932 -0.9557 -vn -0.0687 -0.2548 -0.9645 -vn -0.2128 -0.1063 -0.9713 -vn 0.0220 -0.6169 -0.7867 -vn 0.7985 0.4583 -0.3903 -vn 0.4530 -0.4431 -0.7736 -vn 0.5248 -0.4901 -0.6960 -vn 0.3759 0.0862 -0.9227 -vn 0.6137 0.0102 -0.7895 -vn 0.6131 0.1083 -0.7826 -vn 0.3368 0.0666 -0.9392 -vn 0.3851 0.1476 -0.9110 -vn 0.3227 0.0919 -0.9420 -vn -0.5157 0.0191 -0.8565 -vn -0.3806 -0.4081 -0.8298 -vn 0.0458 0.1964 -0.9795 -vn -0.7093 0.5028 -0.4941 -vn -0.8735 -0.2698 -0.4052 -vn -0.3275 -0.7749 -0.5406 -vn -0.2507 0.1644 -0.9540 -vn -0.5281 -0.0589 -0.8471 -vn -0.2467 -0.7547 -0.6079 -vn -0.7992 0.4947 -0.3413 -vn 0.3962 -0.6386 -0.6597 -vn 0.5362 -0.0863 -0.8397 -vn 0.4536 -0.0386 -0.8904 -vn 0.0125 -0.9726 0.2323 -vn 0.5942 -0.7112 -0.3756 -vn -0.4476 0.3030 -0.8413 -vn -0.0084 0.1453 -0.9894 -vn 0.4767 -0.4306 -0.7663 -vn 0.4825 -0.4149 -0.7714 -vn 0.2565 -0.6779 -0.6890 -vn 0.3319 0.1009 -0.9379 -vn 0.4216 -0.2910 -0.8589 -vn 0.4620 -0.2341 -0.8555 -vn 0.4305 -0.1787 -0.8847 -vn 0.4634 0.0174 -0.8860 -vn 0.4468 0.0421 -0.8936 -vn -0.4786 0.8726 0.0981 -vn -0.1412 -0.1117 -0.9837 -vn -0.2607 -0.9521 -0.1598 -vn 0.5374 -0.6410 -0.5481 -vn 0.1390 -0.1961 -0.9707 -vn -0.4446 0.3498 -0.8246 -vn -0.0096 -0.8271 -0.5619 -vn -0.8188 0.5013 -0.2796 -vn -0.5777 -0.0440 -0.8151 -vn -0.6226 -0.4272 -0.6556 -vn 0.6593 -0.0589 -0.7495 -vn 0.2752 -0.5065 -0.8171 -vn 0.2571 -0.1143 -0.9596 -vn 0.4472 0.1883 -0.8744 -vn -0.6175 -0.1063 -0.7793 -vn -0.1146 -0.8415 -0.5279 -vn -0.1099 -0.5714 -0.8133 -vn 0.2097 -0.6428 -0.7367 -vn 0.2172 -0.5528 -0.8045 -vn 0.3133 -0.1549 -0.9369 -vn 0.3157 -0.1365 -0.9390 -vn 0.4378 0.2021 -0.8760 -vn 0.4383 0.1995 -0.8764 -vn 0.4191 0.1505 -0.8954 -vn 0.4641 -0.0308 -0.8852 -vn 0.4146 0.1175 -0.9024 -vn 0.0476 -0.1281 -0.9906 -vn -0.0893 -0.1037 0.9906 -vn 0.0851 0.1706 -0.9817 -vn -0.7432 0.1471 -0.6527 -vn 0.1864 -0.9748 0.1225 -vn 0.1442 0.0063 -0.9895 -vn 0.3955 -0.2664 -0.8790 -vn 0.3723 -0.2565 -0.8920 -vn 0.3638 -0.1183 -0.9239 -vn 0.3544 -0.1365 -0.9251 -vn -0.2121 -0.2109 -0.9542 -vn -0.1709 -0.4855 -0.8574 -vn 0.0260 0.1856 -0.9823 -vn -0.2201 0.2995 -0.9283 -vn -0.3592 0.4813 -0.7996 -vn -0.1504 0.1118 -0.9823 -vn 0.4399 -0.0079 -0.8980 -vn 0.5355 -0.5445 -0.6456 -vn 0.4734 -0.4210 -0.7737 -vn 0.5870 -0.3997 -0.7041 -vn 0.2040 -0.5481 -0.8112 -vn 0.4383 -0.2047 -0.8752 -vn 0.4275 0.0058 -0.9040 -vn 0.4847 -0.0469 -0.8734 -vn 0.4621 0.1303 -0.8772 -vn 0.4228 0.0366 -0.9055 -vn 0.7826 -0.2763 -0.5578 -vn -0.6118 0.6652 -0.4280 -vn 0.2835 0.2771 -0.9181 -vn 0.1307 0.4658 -0.8752 -vn -0.2930 -0.1902 -0.9370 -vn -0.0356 0.2535 -0.9667 -vn -0.1992 -0.5296 -0.8245 -vn 0.3803 -0.4043 -0.8318 -vn 0.3628 -0.1921 -0.9118 -vn 0.1394 -0.4309 -0.8916 -vn 0.2489 -0.1180 -0.9613 -vn 0.2771 0.1498 -0.9491 -vn 0.2056 0.0373 -0.9779 -vn 0.4758 -0.0296 -0.8790 -vn 0.9210 0.3113 -0.2340 -vn -0.3724 0.5979 -0.7098 -vn 0.2146 -0.4369 -0.8735 -vn -0.3090 -0.4042 -0.8609 -vn 0.8928 0.3021 0.3341 -vn -0.2368 -0.1467 -0.9604 -vn -0.3092 0.2296 -0.9229 -vn -0.0846 -0.8423 0.5323 -vn -0.1333 0.2814 -0.9503 -vn -0.2002 -0.4898 -0.8486 -vn -0.4182 0.2901 -0.8608 -vn -0.1928 -0.2098 -0.9586 -vn 0.4784 -0.4236 -0.7692 -vn 0.4064 -0.2197 -0.8869 -vn 0.2242 -0.3345 -0.9153 -vn 0.3116 0.0601 -0.9483 -vn 0.3608 0.2275 -0.9045 -vn 0.3234 -0.1889 -0.9272 -vn -0.0885 0.4776 -0.8741 -vn -0.0430 0.2891 -0.9563 -vn -0.0229 0.0081 -0.9997 -vn 0.0142 -0.3418 -0.9397 -vn -0.2606 0.1263 -0.9572 -vn -0.5243 -0.1357 -0.8407 -vn -0.1620 -0.4212 -0.8924 -vn -0.1756 0.3917 -0.9032 -vn -0.5418 -0.2767 -0.7937 -vn 0.1555 -0.4437 -0.8826 -vn 0.1898 -0.2187 -0.9572 -vn 0.1185 -0.1034 -0.9876 -vn 0.0162 -0.3990 -0.9168 -vn 0.2935 0.1827 -0.9383 -vn 0.3481 0.1951 -0.9169 -vn 0.2589 -0.0655 -0.9637 -vn 0.1867 -0.0343 -0.9818 -vn -0.5291 -0.0310 -0.8480 -vn -0.4709 -0.0564 -0.8804 -vn -0.1586 0.4588 -0.8743 -vn -0.7857 -0.4136 0.4600 -vn 0.7077 0.0794 -0.7021 -vn 0.3254 -0.1869 -0.9269 -vn 0.1383 -0.4313 -0.8915 -vn 0.1164 -0.1519 -0.9815 -vn 0.1774 -0.6731 -0.7180 -vn 0.2741 -0.5765 -0.7698 -vn 0.3439 -0.3231 -0.8816 -vn 0.2694 -0.2440 -0.9316 -vn 0.2884 -0.4017 -0.8692 -vn 0.3452 0.1184 -0.9310 -vn 0.0163 -0.3992 -0.9167 -vn -0.2482 -0.2037 -0.9470 -vn -0.1857 0.1485 -0.9713 -vn -0.6780 0.3579 -0.6421 -vn -0.3739 0.0255 -0.9271 -vn -0.2658 -0.3644 -0.8925 -vn -0.5650 -0.2280 -0.7929 -vn 0.3275 -0.3684 -0.8701 -vn 0.1922 0.0315 -0.9809 -vn 0.6666 0.0036 -0.7454 -vn 0.4109 0.0734 -0.9087 -vn 0.6648 -0.2145 -0.7156 -vn 0.4199 0.1644 -0.8926 -vn 0.4682 0.2161 -0.8568 -vn 0.4434 0.0099 -0.8963 -vn -0.2547 -0.5164 -0.8176 -vn -0.0553 -0.4440 -0.8943 -vn -0.0608 -0.9964 0.0597 -vn 0.2354 0.2594 -0.9366 -vn 0.2172 0.1793 -0.9595 -vn -0.6499 0.1727 -0.7402 -vn -0.0115 -0.3720 -0.9282 -vn 0.0695 -0.1017 -0.9924 -vn 0.0074 -0.4527 -0.8916 -vn 0.0723 -0.6396 -0.7653 -vn 0.3793 -0.0430 -0.9243 -vn 0.3652 -0.1091 -0.9245 -vn -0.7939 -0.2739 -0.5428 -vn -0.2552 0.0721 -0.9642 -vn -0.3337 0.0244 -0.9424 -vn -0.0392 -0.2602 -0.9648 -vn -0.2360 0.0685 -0.9693 -vn -0.5391 0.1934 -0.8198 -vn 0.2274 0.2481 -0.9417 -vn -0.3839 -0.1902 -0.9036 -vn -0.1794 0.0051 -0.9838 -vn 0.3529 -0.4876 -0.7986 -vn 0.4522 0.3548 -0.8183 -vn 0.0317 -0.4451 -0.8949 -vn 0.2102 0.0738 -0.9749 -vn 0.1846 -0.3762 -0.9080 -vn 0.2337 -0.4238 -0.8751 -vn 0.3376 -0.3636 -0.8682 -vn 0.4795 -0.1405 -0.8662 -vn 0.5748 0.0978 -0.8124 -vn 0.4203 0.0286 -0.9069 -vn 0.0280 -0.9996 0.0086 -vn 0.3767 -0.9242 -0.0629 -vn -0.0804 0.0313 -0.9963 -vn 0.0107 -0.2401 -0.9707 -vn -0.3468 -0.3035 -0.8875 -vn 0.1974 -0.8540 -0.4813 -vn -0.0796 -0.3695 -0.9258 -vn 0.1453 -0.4666 -0.8725 -vn 0.3169 0.1243 -0.9403 -vn 0.3763 0.0215 -0.9263 -vn 0.3224 -0.3750 -0.8692 -vn 0.4175 0.1641 -0.8937 -vn 0.4054 0.1514 -0.9015 -vn -0.3084 0.2313 -0.9227 -vn 0.0712 0.0914 -0.9933 -vn -0.5438 0.2749 -0.7929 -vn 0.2254 0.1204 -0.9668 -vn 0.6032 0.0427 -0.7965 -vn 0.1934 -0.5625 -0.8039 -vn 0.2022 0.0036 -0.9793 -vn 0.0487 -0.3849 -0.9217 -vn 0.2313 -0.5633 -0.7932 -vn -0.0393 -0.3231 -0.9456 -vn 0.3236 -0.1607 -0.9325 -vn 0.1053 0.0818 -0.9911 -vn 0.2350 -0.0277 -0.9716 -vn -0.0953 -0.7741 -0.6259 -vn -0.6244 -0.3274 -0.7092 -vn 0.0571 0.0252 -0.9980 -vn -0.4298 0.4727 -0.7693 -vn -0.6157 0.0494 -0.7864 -vn -0.2197 -0.9591 -0.1786 -vn 0.1973 -0.3203 -0.9265 -vn 0.1523 0.0703 -0.9858 -vn 0.0791 -0.3325 -0.9398 -vn 0.2463 -0.6807 -0.6899 -vn -0.1208 -0.2863 -0.9505 -vn 0.0249 0.0074 -0.9997 -vn 0.3226 -0.3751 -0.8690 -vn 0.2322 -0.1160 -0.9657 -vn 0.2255 -0.1030 -0.9688 -vn 0.2185 0.1760 -0.9598 -vn -0.5826 0.2997 -0.7555 -vn -0.2042 -0.2195 -0.9540 -vn -0.9530 0.0655 -0.2956 -vn 0.1727 -0.2171 -0.9607 -vn 0.3932 -0.6078 -0.6899 -vn 0.3587 -0.2993 -0.8842 -vn 0.1131 -0.2656 -0.9574 -vn 0.1231 -0.4347 -0.8921 -vn 0.0814 -0.3862 -0.9188 -vn 0.2525 -0.0265 -0.9672 -vn 0.3349 0.2486 -0.9089 -vn 0.2447 -0.0174 -0.9695 -vn -0.2509 0.0022 -0.9680 -vn 0.2288 0.1813 -0.9564 -vn 0.0984 0.4071 -0.9081 -vn 0.0498 0.3386 -0.9396 -vn 0.0362 -0.0148 -0.9992 -vn -0.3751 -0.2239 -0.8995 -vn -0.5383 0.0839 -0.8386 -vn 0.2696 0.2642 -0.9260 -vn 0.0053 -0.4154 -0.9096 -vn 0.3748 0.1630 -0.9127 -vn 0.3671 -0.3040 -0.8791 -vn 0.3587 -0.0809 -0.9300 -vn 0.4073 -0.3198 -0.8555 -vn 0.4020 -0.2468 -0.8817 -vn 0.5194 -0.1512 -0.8410 -vn 0.4634 -0.3461 -0.8158 -vn 0.3463 -0.2152 -0.9131 -vn 0.2864 0.1975 -0.9375 -vn 0.0859 0.0814 -0.9930 -vn -0.0290 0.0506 -0.9983 -vn -0.1482 0.5178 -0.8426 -vn -0.2997 0.4276 -0.8529 -vn -0.2588 0.0262 -0.9656 -vn 0.1432 -0.5885 -0.7957 -vn 0.1918 -0.7929 -0.5785 -vn 0.1698 -0.2188 -0.9609 -vn 0.1901 0.0266 -0.9814 -vn 0.3292 0.1787 -0.9272 -vn 0.2912 0.1531 -0.9443 -vn 0.3180 0.0193 -0.9479 -vn 0.2091 0.0327 -0.9773 -vn 0.3573 0.3006 -0.8843 -vn -0.2810 -0.4656 -0.8392 -vn -0.7797 -0.0960 0.6188 -vn -0.9727 0.2273 -0.0464 -vn 0.0234 0.3236 -0.9459 -vn 0.1370 0.4376 -0.8887 -vn -0.2495 0.5184 -0.8179 -vn -0.5537 -0.4735 -0.6850 -vn -0.3389 0.4350 -0.8342 -vn 0.0917 -0.6050 -0.7909 -vn 0.1210 -0.7910 -0.5998 -vn 0.0938 -0.7728 -0.6276 -vn 0.1961 0.0624 -0.9786 -vn 0.0537 -0.4738 -0.8790 -vn -0.1258 -0.6195 -0.7748 -vn 0.1353 -0.3917 -0.9101 -vn -0.1802 0.4927 -0.8513 -vn -0.4190 -0.2647 -0.8685 -vn 0.5901 0.1129 -0.7994 -vn -0.0102 0.0693 -0.9975 -vn -0.2368 0.3827 -0.8930 -vn 0.0397 -0.1187 -0.9921 -vn 0.1504 -0.1876 -0.9707 -vn 0.1628 0.0755 -0.9838 -vn 0.1003 -0.6019 -0.7923 -vn 0.1724 -0.4568 -0.8727 -vn 0.0183 -0.4528 -0.8914 -vn 0.0802 -0.2864 -0.9548 -vn 0.2388 0.2063 -0.9489 -vn 0.1461 -0.0582 -0.9875 -vn 0.5285 -0.1823 -0.8291 -vn 0.1963 0.3916 -0.8990 -vn 0.0200 -0.9993 -0.0309 -vn 0.0521 -0.5585 -0.8278 -vn 0.0801 -0.2338 -0.9690 -vn 0.0640 -0.3227 -0.9443 -vn 0.0357 -0.6817 -0.7308 -vn 0.2311 0.0727 -0.9702 -vn 0.1017 -0.3020 -0.9479 -vn 0.1304 -0.2719 -0.9535 -vn 0.2282 -0.3630 -0.9034 -vn 0.4655 0.1335 -0.8749 -vn 0.4807 0.2039 -0.8528 -vn 0.4042 0.3835 -0.8304 -vn 0.3646 0.1509 -0.9188 -vn -0.5503 -0.2593 -0.7937 -vn 0.1735 0.1988 -0.9646 -vn -0.6827 -0.4308 -0.5902 -vn -0.6343 0.0135 -0.7730 -vn 0.1950 0.1728 -0.9655 -vn 0.1796 0.0594 -0.9819 -vn 0.1794 -0.0529 -0.9824 -vn 0.2978 -0.7181 -0.6290 -vn 0.3482 -0.2883 -0.8920 -vn -0.0127 0.0272 -0.9996 -vn 0.1117 -0.2814 -0.9531 -vn 0.1395 -0.0607 -0.9884 -vn -0.3942 -0.6511 -0.6486 -vn -0.4150 -0.7553 -0.5072 -vn -0.3006 -0.2445 -0.9219 -vn -0.2721 -0.3570 -0.8936 -vn -0.4179 0.3461 -0.8400 -vn 0.0443 -0.0525 -0.9976 -vn -0.1005 0.0777 -0.9919 -vn 0.0743 -0.5224 -0.8495 -vn 0.1414 0.0256 -0.9896 -vn 0.2608 -0.2159 -0.9409 -vn 0.1786 -0.7475 -0.6398 -vn 0.0730 -0.2718 -0.9596 -vn 0.3606 -0.3223 -0.8753 -vn 0.1979 -0.3720 -0.9069 -vn 0.1634 0.0480 -0.9854 -vn 0.3761 -0.1674 -0.9113 -vn 0.2623 -0.2146 -0.9408 -vn 0.2428 -0.1711 -0.9549 -vn 0.3184 0.0352 -0.9473 -vn -0.4686 0.0580 -0.8815 -vn -0.6802 0.1059 -0.7254 -vn 0.1003 -0.3989 -0.9115 -vn -0.1599 0.2750 -0.9480 -vn 0.3883 -0.2061 -0.8982 -vn -0.5095 0.1428 0.8485 -vn -0.8523 -0.1529 -0.5001 -vn -0.3795 -0.1911 -0.9052 -vn 0.2252 -0.7581 -0.6121 -vn 0.0080 -0.4145 -0.9100 -vn 0.1943 -0.6113 -0.7672 -vn 0.0345 -0.2967 -0.9543 -vn 0.2110 -0.2631 -0.9414 -vn 0.3618 -0.3007 -0.8824 -vn 0.3849 -0.1696 -0.9072 -vn 0.3524 -0.0092 -0.9358 -vn 0.2089 0.2547 -0.9442 -vn 0.0688 0.0523 -0.9963 -vn -0.4140 -0.3367 -0.8457 -vn 0.0322 0.0608 -0.9976 -vn 0.0764 -0.2295 -0.9703 -vn 0.2637 -0.2544 -0.9305 -vn 0.3229 -0.3641 -0.8736 -vn 0.2115 0.1308 -0.9686 -vn 0.2097 -0.2766 -0.9378 -vn 0.9085 -0.4078 -0.0915 -vn -0.3464 0.0143 -0.9380 -vn -0.1872 0.2027 -0.9612 -vn 0.3055 0.2494 -0.9189 -vn 0.2102 0.2284 -0.9506 -vn 0.2116 -0.4431 -0.8711 -vn 0.0956 -0.1741 -0.9801 -vn 0.1049 -0.4712 -0.8758 -vn 0.1498 -0.0498 -0.9875 -vn 0.2398 -0.2259 -0.9442 -vn 0.2081 0.1131 -0.9715 -vn 0.0809 -0.1917 -0.9781 -vn 0.1490 0.2752 -0.9498 -vn 0.1458 0.3533 -0.9241 -vn 0.0156 0.2406 -0.9705 -vn -0.1496 0.0658 -0.9866 -vn 0.3709 -0.1517 -0.9162 -vn -0.4157 -0.3047 -0.8570 -vn -0.3737 -0.2593 -0.8906 -vn 0.3551 -0.2064 -0.9118 -vn 0.1351 -0.5085 -0.8504 -vn 0.1345 -0.3942 -0.9091 -vn -0.0508 -0.4167 -0.9076 -vn 0.1404 0.1027 -0.9847 -vn 0.0501 -0.0411 -0.9979 -vn 0.1421 0.2226 -0.9645 -vn -0.8165 0.5055 -0.2789 -vn -0.3079 -0.2513 -0.9176 -vn 0.2029 -0.9753 -0.0873 -vn -0.2245 -0.3644 -0.9038 -vn -0.2185 -0.2782 -0.9354 -vn 0.1103 0.0662 -0.9917 -vn 0.0350 -0.2622 -0.9644 -vn 0.0238 -0.8034 -0.5950 -vn 0.0350 -0.8112 -0.5837 -vn 0.2603 -0.1534 -0.9533 -vn 0.0323 -0.1654 -0.9857 -vn 0.1315 -0.3267 -0.9359 -vn 0.1316 0.3749 -0.9177 -vn 0.1528 0.2450 -0.9574 -vn -0.6938 -0.6671 -0.2713 -vn 0.0188 0.2390 -0.9708 -vn -0.0080 0.0520 -0.9986 -vn -0.4159 0.3347 -0.8456 -vn -0.9256 0.0914 -0.3674 -vn 0.1795 -0.0817 -0.9804 -vn 0.0609 -0.3294 -0.9422 -vn 0.1756 0.0398 -0.9837 -vn 0.0693 -0.2393 -0.9685 -vn 0.5026 -0.3086 -0.8076 -vn 0.2195 -0.0593 -0.9738 -vn 0.0158 -0.2274 -0.9737 -vn 0.4709 -0.7328 -0.4912 -vn -0.4474 -0.6719 -0.5903 -vn -0.1703 0.3578 -0.9181 -vn -0.4001 -0.4986 -0.7690 -vn 0.3882 0.1810 -0.9036 -vn -0.2387 0.3990 -0.8853 -vn -0.6828 0.2643 -0.6811 -vn 0.1507 -0.2677 -0.9516 -vn -0.1316 -0.7522 -0.6457 -vn -0.1242 -0.2695 -0.9550 -vn 0.0314 -0.4808 -0.8763 -vn 0.1142 -0.6615 -0.7412 -vn 0.1667 -0.2976 -0.9400 -vn -0.0282 -0.0296 -0.9992 -vn 0.1862 0.3956 -0.8993 -vn -0.2321 -0.1022 -0.9673 -vn -0.3610 -0.7549 -0.5476 -vn 0.1556 -0.4583 -0.8751 -vn 0.1126 0.0684 -0.9913 -vn 0.0391 -0.4480 -0.8932 -vn 0.2012 -0.0564 -0.9779 -vn 0.3628 -0.3430 -0.8664 -vn 0.1991 -0.0584 -0.9782 -vn 0.1117 -0.0243 -0.9934 -vn 0.2558 -0.0438 -0.9657 -vn -0.1357 0.2000 -0.9703 -vn 0.0302 0.9275 -0.3727 -vn -0.8092 0.4713 -0.3507 -vn 0.1110 -0.6497 -0.7521 -vn 0.1766 0.0733 -0.9815 -vn -0.8508 -0.4974 0.1694 -vn 0.4553 0.1399 -0.8793 -vn 0.1189 -0.8141 -0.5684 -vn 0.0700 0.3607 -0.9301 -vn 0.2521 -0.3678 -0.8951 -vn 0.0024 -0.4615 -0.8871 -vn -0.0300 -0.1599 -0.9867 -vn 0.3086 -0.2716 -0.9116 -vn 0.3136 -0.0165 -0.9494 -vn 0.3731 -0.3095 -0.8747 -vn 0.3218 -0.2372 -0.9166 -vn 0.1162 0.0806 -0.9899 -vn -0.1667 0.0041 -0.9860 -vn 0.1551 -0.0745 -0.9851 -vn -0.4898 0.2663 -0.8302 -vn 0.6326 0.0923 -0.7690 -vn -0.0608 -0.8340 -0.5483 -vn 0.0201 -0.0129 -0.9997 -vn -0.5481 -0.1475 -0.8233 -vn -0.5706 0.3940 -0.7206 -vn -0.1201 0.2126 -0.9697 -vn -0.0222 -0.9377 0.3467 -vn 0.3644 -0.9106 0.1949 -vn 0.1000 -0.1952 -0.9757 -vn 0.1670 0.0197 -0.9858 -vn -0.0734 -0.7538 -0.6530 -vn 0.0812 -0.6780 -0.7306 -vn -0.2733 -0.4614 -0.8440 -vn 0.3225 -0.3620 -0.8746 -vn 0.2514 -0.1177 -0.9607 -vn 0.3045 -0.2391 -0.9220 -vn -0.1913 0.1262 -0.9734 -vn -0.3614 -0.3539 -0.8626 -vn 0.0412 0.7554 0.6540 -vn -0.4014 0.5912 -0.6996 -vn 0.0432 0.0131 -0.9990 -vn -0.1212 -0.7718 -0.6242 -vn -0.0807 0.2956 -0.9519 -vn -0.4742 0.2311 -0.8496 -vn 0.2124 -0.2299 -0.9498 -vn -0.4389 -0.8580 -0.2667 -vn -0.5128 -0.4556 -0.7276 -vn -0.5176 0.1832 -0.8358 -vn -0.5847 -0.2724 -0.7642 -vn 0.3039 0.2491 -0.9196 -vn 0.2516 -0.2053 -0.9458 -vn 0.0860 0.1127 -0.9899 -vn -0.5828 -0.2409 -0.7761 -vn -0.3131 0.6470 -0.6952 -vn 0.0009 0.1476 -0.9890 -vn -0.0361 -0.6392 -0.7682 -vn -0.2665 0.2968 -0.9170 -vn -0.1264 0.4700 -0.8736 -vn -0.3290 -0.0392 -0.9435 -vn 0.7085 -0.6497 0.2756 -vn 0.7466 -0.6145 0.2551 -vn -0.7377 -0.3581 0.5723 -vn 0.2474 -0.1892 -0.9502 -vn -0.0678 -0.6616 -0.7468 -vn -0.1583 -0.5133 -0.8435 -vn -0.0211 -0.4563 -0.8896 -vn 0.1633 -0.3088 -0.9370 -vn 0.0976 -0.4734 -0.8754 -vn 0.2218 -0.1117 -0.9687 -vn 0.2200 -0.1694 -0.9607 -vn 0.1000 -0.1983 -0.9750 -vn -0.2216 -0.2711 -0.9367 -vn 0.1148 -0.3730 -0.9207 -vn 0.0627 -0.8773 -0.4758 -vn -0.2884 -0.3253 -0.9005 -vn -0.1031 -0.0513 -0.9934 -vn -0.7160 -0.1311 -0.6857 -vn 0.2160 -0.9625 0.1643 -vn 0.0128 -0.9969 0.0773 -vn 0.7326 -0.6765 0.0756 -vn -0.5173 -0.4723 -0.7137 -vn -0.5868 -0.2754 -0.7614 -vn -0.4345 -0.5786 -0.6903 -vn 0.2508 0.0530 -0.9666 -vn 0.1397 -0.4495 -0.8823 -vn -0.0159 -0.4308 -0.9023 -vn 0.0004 -0.4390 -0.8985 -vn 0.2028 -0.0564 -0.9776 -vn 0.1273 0.0942 -0.9874 -vn 0.0154 0.2909 -0.9566 -vn -0.1805 0.1835 -0.9663 -vn -0.3801 -0.6689 -0.6388 -vn 0.6139 -0.0631 0.7868 -vn -0.3237 -0.5203 -0.7902 -vn -0.0378 -0.0057 -0.9993 -vn -0.5364 -0.4068 -0.7394 -vn 0.2176 -0.9681 0.1244 -vn -0.5496 -0.2971 -0.7808 -vn -0.6630 -0.0131 -0.7485 -vn 0.3828 -0.3563 -0.8523 -vn -0.4706 0.7898 -0.3934 -vn -0.0650 -0.1323 -0.9891 -vn -0.0013 -0.2736 -0.9619 -vn -0.0730 -0.3115 -0.9474 -vn -0.5262 0.2468 -0.8138 -vn -0.3347 -0.7280 -0.5983 -vn -0.6497 0.2547 -0.7163 -vn -0.3803 0.0561 -0.9231 -vn -0.3011 -0.2450 -0.9216 -vn -0.4939 -0.3229 -0.8074 -vn -0.7661 0.1924 -0.6132 -vn -0.4795 0.4265 -0.7670 -vn 0.2408 -0.1352 -0.9611 -vn -0.8021 -0.0995 -0.5888 -vn 0.2816 0.0931 -0.9550 -vn -0.2145 -0.5013 -0.8383 -vn -0.3273 -0.4221 -0.8454 -vn -0.1310 -0.2131 -0.9682 -vn -0.2208 -0.3717 -0.9017 -vn -0.1971 -0.4016 -0.8943 -vn -0.2280 -0.4570 -0.8597 -vn -0.0668 0.0417 -0.9969 -vn 0.5292 0.3151 -0.7878 -vn -0.5282 0.4015 -0.7482 -vn -0.4302 -0.6423 -0.6343 -vn -0.6192 -0.1701 -0.7666 -vn -0.8444 0.4917 0.2128 -vn 0.0263 0.3351 -0.9418 -vn 0.3109 -0.7109 -0.6309 -vn -0.1468 -0.3178 -0.9367 -vn -0.1867 -0.4825 -0.8558 -vn -0.2977 -0.3916 -0.8706 -vn -0.3525 -0.4028 -0.8447 -vn -0.3532 -0.3536 -0.8662 -vn 0.1728 0.0785 -0.9818 -vn -0.1927 0.1252 -0.9732 -vn -0.1732 0.2269 -0.9584 -vn -0.1558 -0.5260 -0.8361 -vn -0.3613 0.3161 -0.8772 -vn -0.5312 -0.5810 -0.6166 -vn 0.2250 0.4311 -0.8738 -vn 0.0152 -0.9974 0.0707 -vn -0.0697 0.2108 -0.9750 -vn -0.5605 0.1942 -0.8051 -vn -0.5460 0.1221 -0.8289 -vn -0.8293 -0.0077 -0.5588 -vn 0.0035 -0.9985 0.0554 -vn -0.3807 -0.4727 -0.7948 -vn -0.3769 -0.4626 -0.8025 -vn -0.6595 -0.0662 -0.7488 -vn -0.6461 0.0079 -0.7632 -vn -0.2996 -0.7995 -0.5207 -vn -0.2036 -0.2892 -0.9354 -vn 0.0231 -0.0023 -0.9997 -vn -0.0192 0.2173 -0.9759 -vn 0.0160 -0.9974 0.0705 -vn -0.0456 0.1480 -0.9879 -vn -0.3937 -0.6588 -0.6411 -vn -0.4944 0.3317 -0.8034 -vn 0.4217 -0.8516 0.3112 -vn -0.9166 0.0205 -0.3993 -vn -0.4548 -0.2488 -0.8551 -vn -0.4814 -0.0434 -0.8754 -vn -0.4167 -0.3267 -0.8483 -vn -0.4204 0.1660 -0.8920 -vn 0.0152 0.1566 -0.9875 -vn 0.1051 0.3952 -0.9126 -vn 0.0176 0.0309 -0.9994 -vn -0.1126 0.4135 -0.9035 -vn -0.4893 -0.1318 -0.8621 -vn -0.3987 0.7977 -0.4524 -vn -0.3371 -0.9102 -0.2408 -vn -0.5636 0.0171 -0.8259 -vn 0.2393 -0.1355 -0.9615 -vn 0.1452 0.2585 -0.9550 -vn 0.0129 -0.0975 -0.9951 -vn -0.4076 -0.3755 -0.8324 -vn -0.4110 -0.3952 -0.8215 -vn -0.2659 -0.1460 -0.9529 -vn -0.0584 0.0091 -0.9983 -vn -0.0242 -0.5123 -0.8584 -vn -0.3274 0.3098 -0.8926 -vn -0.5608 0.0384 -0.8270 -vn -0.5108 0.1852 -0.8395 -vn -0.3672 0.1468 -0.9185 -vn -0.0977 -0.9872 0.1260 -vn -0.0224 -0.9970 -0.0738 -vn -0.4692 -0.7948 -0.3848 -vn -0.5781 -0.1352 -0.8047 -vn -0.7535 0.5799 -0.3097 -vn -0.5393 0.4427 -0.7164 -vn 0.1865 -0.2341 -0.9542 -vn -0.1257 0.1199 -0.9848 -vn -0.4590 -0.2220 -0.8602 -vn -0.5323 -0.3212 -0.7833 -vn -0.5067 -0.4393 -0.7418 -vn -0.5068 -0.4440 -0.7389 -vn -0.4253 -0.3741 -0.8241 -vn -0.2311 -0.0222 -0.9727 -vn -0.8005 -0.0820 -0.5936 -vn -0.6905 -0.4943 -0.5281 -vn -0.4497 0.1246 -0.8845 -vn 0.3728 0.1071 -0.9217 -vn -0.7622 0.5795 -0.2885 -vn 0.0318 -0.9994 -0.0164 -vn -0.2440 -0.4294 -0.8695 -vn -0.3942 -0.0559 -0.9173 -vn 0.0475 -0.9859 0.1606 -vn 0.1654 -0.0994 -0.9812 -vn -0.5254 -0.2441 -0.8151 -vn -0.6205 -0.3264 -0.7131 -vn -0.5542 -0.2751 -0.7856 -vn -0.5257 -0.3417 -0.7790 -vn 0.0793 0.1453 -0.9862 -vn 0.8313 -0.3308 -0.4468 -vn -0.0408 0.1323 -0.9904 -vn -0.1402 0.1018 -0.9849 -vn -0.4503 0.1799 -0.8746 -vn -0.4584 0.8038 -0.3793 -vn -0.1772 -0.5246 -0.8327 -vn -0.2029 -0.3503 -0.9144 -vn -0.3959 -0.0953 -0.9134 -vn 0.0140 -0.0073 -0.9999 -vn 0.0600 0.2346 -0.9702 -vn -0.0964 0.5646 -0.8197 -vn -0.3604 -0.0328 -0.9322 -vn -0.3954 0.1910 -0.8984 -vn -0.5264 -0.2452 -0.8141 -vn -0.5222 -0.2365 -0.8194 -vn -0.4540 0.0464 -0.8898 -vn -0.3441 0.1791 -0.9217 -vn -0.3067 0.3643 -0.8793 -vn -0.8036 -0.5539 -0.2178 -vn -0.5126 0.0316 -0.8580 -vn -0.1664 0.3465 -0.9232 -vn -0.0562 0.1440 -0.9880 -vn 0.8003 -0.5385 -0.2636 -vn -0.1444 0.0025 -0.9895 -vn 0.1571 -0.0990 -0.9826 -vn -0.1723 -0.7215 -0.6707 -vn -0.2740 0.3654 -0.8896 -vn 0.0036 -1.0000 -0.0058 -vn 0.0843 -0.8081 0.5830 -vn -0.3074 -0.6087 -0.7314 -vn 0.1096 0.3230 -0.9400 -vn -0.6875 -0.4229 -0.5903 -vn -0.3309 0.9430 -0.0363 -vn -0.6066 -0.3971 -0.6887 -vn -0.5494 -0.0136 -0.8355 -vn -0.3494 -0.0396 -0.9361 -vn -0.3515 0.1876 -0.9172 -vn 0.0540 -0.2458 -0.9678 -vn -0.6913 -0.3568 -0.6283 -vn -0.5060 -0.0335 -0.8619 -vn -0.4821 -0.3252 -0.8135 -vn 0.4525 -0.3145 -0.8345 -vn -0.1121 -0.9936 0.0171 -vn -0.5668 0.0869 -0.8193 -vn -0.5897 0.2630 -0.7636 -vn 0.5614 0.1628 -0.8114 -vn -0.7661 0.1042 -0.6342 -vn 0.1336 0.2936 -0.9466 -vn -0.0285 0.2747 -0.9611 -vn -0.1615 0.3424 -0.9256 -vn 0.0806 -0.9966 -0.0173 -vn 0.0558 -0.9984 -0.0006 -vn 0.1895 -0.0896 0.9778 -vn -0.2602 -0.8377 -0.4802 -vn -0.1312 -0.9882 -0.0787 -vn 0.4257 -0.8620 0.2752 -vn -0.5476 -0.8069 -0.2216 -vn 0.4351 -0.2650 0.8605 -vn -0.0567 -0.9937 -0.0963 -vn 0.0228 -0.9971 0.0720 -vn 0.4500 -0.8761 0.1730 -vn -0.5538 -0.8178 0.1569 -vn -0.5581 -0.8092 0.1836 -vn 0.2239 -0.9094 -0.3506 -vn 0.2669 -0.8824 -0.3874 -vn 0.1322 -0.9857 -0.1048 -vn -0.4463 -0.8034 0.3941 -vn -0.5362 -0.8274 -0.1670 -vn 0.0947 -0.7306 0.6762 -vn 0.2240 -0.9408 -0.2544 -vn 0.0040 -0.9959 0.0905 -vn 0.0311 -0.9941 0.1035 -vn -0.9331 -0.2289 0.2775 -vn -0.5334 -0.8218 -0.2003 -vn -0.5070 -0.7467 -0.4306 -vn 0.0344 -0.9945 -0.0992 -vn 0.1007 -0.8355 -0.5402 -vn 0.5521 -0.3442 0.7594 -vn -0.3097 -0.9501 -0.0361 -vn 0.0845 -0.9907 0.1065 -vn 0.0256 -0.9989 0.0390 -vn 0.0806 -0.9966 -0.0185 -vn 0.0876 -0.9921 0.0903 -vn -0.0105 -0.9984 -0.0557 -vn 0.0849 -0.9915 0.0982 -vn 0.1855 -0.8514 0.4906 -vn 0.4886 -0.8703 0.0623 -vn 0.0872 -0.9238 -0.3729 -vn 0.4114 -0.9015 0.1340 -vn 0.4206 -0.8638 0.2775 -vn -0.4188 0.2834 0.8627 -vn 0.1240 -0.9897 -0.0721 -vn -0.4498 -0.8913 0.0573 -vn 0.0090 -0.9812 -0.1926 -vn 0.0614 -0.9847 -0.1634 -vn -0.1243 -0.9815 -0.1455 -vn -0.4851 -0.8617 -0.1489 -vn 0.8318 -0.5370 0.1405 -vn 0.0129 -0.9986 0.0507 -vn 0.1794 -0.9687 -0.1716 -vn -0.5941 -0.7996 0.0876 -vn -0.4238 -0.8817 -0.2073 -vn -0.9647 0.1039 -0.2420 -vn 0.1274 -0.9890 -0.0746 -vn 0.1249 -0.9894 -0.0737 -vn 0.0682 -0.9943 0.0823 -vn -0.0973 -0.9870 -0.1281 -vn 0.0880 -0.9950 0.0470 -vn 0.0190 -0.9987 -0.0482 -vn -0.1936 -0.9810 0.0141 -vn 0.0339 -0.9989 -0.0328 -vn 0.1203 -0.9616 -0.2466 -vn -0.5834 -0.8107 -0.0495 -vn 0.0076 -0.9940 -0.1095 -vn -0.7023 0.0570 0.7096 -vn 0.3508 -0.8888 0.2948 -vn -0.0414 -0.9462 0.3208 -vn 0.0272 -0.9995 -0.0186 -vn 0.2038 -0.8639 0.4606 -vn 0.0479 -0.9930 0.1078 -vn 0.1441 0.0414 0.9887 -vn 0.2989 -0.7991 -0.5216 -vn 0.0075 -0.9999 -0.0110 -vn -0.1086 0.9521 0.2858 -vn 0.6829 -0.4435 0.5805 -vn -0.8729 -0.4503 0.1881 -vn 0.0351 -0.9981 -0.0511 -vn -0.4273 -0.8462 0.3184 -vn -0.5183 -0.6346 -0.5732 -vn -0.5379 -0.6303 0.5598 -vn 0.0014 -0.9975 -0.0707 -vn -0.0960 -0.9908 0.0959 -vn 0.0402 -0.9990 -0.0183 -vn -0.5375 -0.6521 0.5347 -vn -0.0387 -0.9986 0.0372 -vn -0.6918 -0.5307 -0.4896 -vn 0.0180 -0.9961 0.0862 -vn 0.0281 -0.9967 0.0763 -vn -0.7549 -0.6527 -0.0640 -vn 0.0124 -0.9992 0.0378 -vn -0.5228 -0.7762 0.3524 -vn 0.1840 -0.8502 0.4932 -vn -0.1829 -0.4956 0.8491 -vn -0.4683 -0.8585 0.2088 -vn 0.4875 -0.8722 -0.0394 -vn 0.1648 -0.0099 0.9863 -vn -0.6295 -0.6540 0.4196 -vn 0.0044 -0.9989 -0.0461 -vn 0.0994 -0.9950 0.0031 -vn -0.7863 -0.6179 -0.0024 -vn -0.8081 -0.1416 0.5718 -vn 0.0843 -0.9907 0.1067 -vn 0.0415 -0.9991 -0.0096 -vn 0.3984 -0.9071 -0.1360 -vn -0.6121 -0.7831 0.1104 -vn -0.3737 -0.3872 0.8429 -vn -0.5944 -0.7322 0.3324 -vn 0.8264 -0.4905 0.2767 -vn 0.0594 -0.1957 0.9789 -vn 0.2675 -0.8288 0.4915 -vn -0.7310 0.0210 0.6821 -vn 0.1059 -0.8296 0.5482 -vn 0.9712 -0.1526 0.1830 -vn 0.1234 -0.8638 0.4884 -vn -0.5693 -0.7742 0.2768 -vn -0.6402 -0.7499 0.1668 -vn 0.0139 -0.9994 -0.0325 -vn 0.3864 -0.9220 -0.0237 -vn 0.0936 -0.9924 -0.0796 -vn -0.2800 -0.8483 0.4495 -vn 0.0298 -0.9648 0.2615 -vn -0.0218 -0.9940 -0.1071 -vn 0.2590 -0.9620 0.0860 -vn -0.7047 -0.6745 0.2200 -vn 0.1586 -0.6332 0.7576 -vn -0.7433 -0.3855 -0.5468 -vn 0.1154 -0.9631 0.2430 -vn 0.0024 -0.9975 0.0712 -vn -0.3404 0.8118 0.4745 -vn 0.0586 -0.9955 0.0740 -vn -0.1879 -0.9515 0.2435 -vn 0.1113 -0.9935 0.0245 -vn -0.1487 -0.4582 0.8763 -vn 0.2388 -0.0355 0.9704 -vn 0.1072 -0.9886 0.1053 -vn 0.4561 -0.8439 0.2826 -vn -0.0136 -0.9991 0.0392 -vn 0.4748 -0.8740 0.1030 -vn -0.4167 -0.7269 0.5458 -vn -0.2552 -0.4548 0.8533 -vn -0.0218 -0.9997 -0.0116 -vn 0.1055 -0.9923 0.0657 -vn 0.3643 -0.9024 0.2300 -vn 0.0931 -0.9884 -0.1200 -vn 0.3020 -0.8279 0.4725 -vn -0.7066 -0.6894 -0.1595 -vn 0.0897 -0.9959 -0.0091 -vn -0.0510 -0.9961 -0.0721 -vn 0.0554 -0.9983 0.0181 -vn 0.0095 -0.9989 0.0449 -vn -0.2937 -0.3663 0.8829 -vn -0.6501 -0.7436 0.1562 -vn -0.5792 -0.7640 -0.2844 -vn -0.8245 -0.5526 -0.1220 -vn -0.7488 -0.6624 -0.0240 -vn -0.7109 -0.6475 -0.2747 -vn 0.0926 -0.7760 0.6239 -vn -0.0396 -0.9821 0.1841 -vn 0.0137 -0.9979 -0.0641 -vn -0.5278 -0.8080 -0.2619 -vn 0.0222 -0.9993 -0.0286 -vn 0.3519 -0.8022 0.4823 -vn 0.0521 -0.9933 0.1029 -vn 0.2110 -0.9455 -0.2481 -vn -0.3877 -0.9139 -0.1203 -vn -0.4561 -0.8512 -0.2595 -vn -0.6664 -0.5567 -0.4960 -vn -0.6642 -0.5465 -0.5102 -vn 0.2094 -0.9778 -0.0078 -vn 0.1099 -0.9938 0.0151 -vn 0.4058 -0.7709 0.4910 -vn 0.0101 -0.9994 -0.0341 -vn -0.2330 -0.9673 0.0999 -vn -0.4711 -0.8413 -0.2652 -vn -0.4200 -0.8790 -0.2258 -vn -0.8178 -0.5726 -0.0581 -vn 0.4697 -0.8354 0.2854 -vn 0.1462 -0.9524 0.2676 -vn -0.7470 -0.6480 -0.1485 -vn -0.6583 -0.7525 -0.0193 -vn 0.3930 -0.9086 0.1412 -vn 0.5670 -0.8145 0.1228 -vn -0.0513 -0.9978 0.0409 -vn -0.7912 -0.6040 -0.0956 -vn 0.1217 -0.8384 0.5313 -vn 0.0139 -0.8544 0.5195 -vn 0.0430 -0.5897 0.8064 -vn -0.0512 -0.9985 -0.0213 -vn 0.0196 -0.9921 -0.1239 -vn 0.0362 -0.9964 0.0768 -vn -0.3893 -0.8221 0.4154 -vn 0.3761 -0.8981 0.2280 -vn -0.6373 -0.7642 0.0995 -vn -0.3585 -0.9086 -0.2143 -vn -0.7536 -0.5424 0.3713 -vn -0.2707 -0.9070 0.3227 -vn 0.0473 -0.9970 0.0610 -vn 0.0558 -0.9982 -0.0200 -vn -0.0127 -0.9999 0.0004 -vn 0.0347 -0.9976 0.0600 -vn -0.0777 -0.9595 0.2708 -vn -0.0177 -0.9995 -0.0268 -vn -0.4329 -0.8340 0.3422 -vn -0.5392 -0.8411 0.0410 -vn -0.0078 -0.9943 -0.1063 -vn -0.4252 -0.8861 0.1844 -vn 0.2547 -0.8209 0.5111 -vn 0.0389 -0.9992 -0.0112 -vn 0.0074 -0.5975 0.8018 -vn -0.0374 -0.9817 0.1867 -vn 0.2985 -0.8887 0.3480 -vn -0.0010 -0.9575 0.2885 -vn -0.0139 -0.9980 -0.0618 -vn -0.4442 -0.8578 0.2588 -vn -0.4672 -0.8780 -0.1044 -vn -0.6274 -0.6656 0.4042 -vn -0.5403 0.4285 -0.7242 -vn 0.4534 -0.8462 0.2800 -vn 0.2575 -0.9151 0.3102 -vn 0.0584 -0.9959 0.0694 -vn 0.0143 -0.9998 -0.0164 -vn -0.2548 -0.8912 0.3753 -vn 0.0325 -0.9978 0.0573 -vn -0.6198 -0.7270 -0.2955 -vn 0.0300 -0.9982 -0.0522 -vn -0.8227 0.0184 0.5682 -vn 0.0560 -0.9984 0.0010 -vn 0.4041 -0.8083 0.4282 -vn -0.0296 -0.9813 0.1900 -vn -0.3238 -0.9349 -0.1457 -vn -0.4216 -0.9064 0.0256 -vn 0.0391 -0.9990 0.0215 -vn 0.1733 -0.9276 0.3310 -vn -0.0424 -0.9988 0.0225 -vn 0.0366 -0.4822 0.8753 -vn 0.0653 -0.8978 0.4356 -vn -0.8411 -0.3089 -0.4439 -vn -0.0617 -0.9911 -0.1179 -vn -0.1044 -0.9647 0.2418 -vn -0.5393 0.8297 0.1440 -vn -0.7751 -0.5158 0.3649 -vn 0.0191 -0.9977 -0.0652 -vn 0.0229 -0.9973 0.0691 -vn 0.3573 -0.8384 0.4116 -vn -0.3422 -0.8179 0.4625 -vn 0.3839 -0.9137 0.1331 -vn 0.2640 -0.3125 0.9125 -vn -0.3776 -0.9246 -0.0498 -vn -0.2884 -0.9469 -0.1420 -vn -0.3023 -0.9413 0.1503 -vn 0.0262 -0.9996 0.0106 -vn -0.5789 -0.7738 -0.2569 -vn -0.6291 -0.6612 0.4087 -vn -0.1399 -0.4237 -0.8949 -vn 0.0206 -0.9995 -0.0232 -vn 0.1692 -0.9852 0.0281 -vn -0.0440 0.7238 0.6886 -vn 0.0261 -0.9992 0.0291 -vn -0.5735 -0.8191 0.0135 -vn -0.3162 -0.8752 0.3660 -vn -0.4439 -0.7169 0.5376 -vn -0.4403 -0.7201 0.5363 -vn -0.4661 -0.6042 0.6463 -vn 0.0394 -0.9586 0.2819 -vn 0.0262 -0.9992 -0.0295 -vn 0.2945 -0.9320 -0.2112 -vn 0.1569 -0.9857 -0.0611 -vn -0.7691 -0.6314 -0.0989 -vn -0.6141 -0.7731 -0.1584 -vn -0.8455 -0.4214 -0.3279 -vn 0.0287 -0.9996 -0.0030 -vn -0.6714 -0.7220 0.1671 -vn -0.7930 0.2138 0.5705 -vn 0.0532 -0.9948 0.0873 -vn 0.0012 -0.9974 0.0718 -vn 0.0062 -0.9978 0.0661 -vn 0.0044 -0.9955 0.0950 -vn -0.1055 -0.9856 0.1324 -vn 0.1125 -0.5587 0.8217 -vn 0.1093 -0.9914 0.0718 -vn 0.2953 -0.6279 0.7201 -vn 0.0285 -0.9988 -0.0390 -vn 0.3994 -0.7318 -0.5522 -vn -0.7199 -0.4397 0.5370 -vn 0.2493 0.5973 0.7623 -vn -0.7835 -0.6214 -0.0088 -vn -0.7781 -0.6104 0.1483 -vn -0.4879 -0.4307 0.7592 -vn 0.0457 -0.9984 0.0333 -vn -0.0451 -0.9473 0.3172 -vn 0.0754 -0.6208 0.7803 -vn 0.2069 -0.8104 0.5481 -vn 0.0490 -0.8875 0.4582 -vn -0.7122 -0.6994 -0.0606 -vn -0.3311 -0.9434 0.0211 -vn -0.3828 -0.9234 -0.0277 -vn 0.0931 -0.9956 0.0064 -vn -0.0020 -0.9979 0.0654 -vn 0.0094 -0.9999 -0.0127 -vn -0.7460 -0.6659 -0.0108 -vn -0.6228 -0.7817 -0.0341 -vn -0.8112 -0.4427 0.3821 -vn -0.4530 -0.8895 0.0603 -vn -0.4788 -0.8763 0.0542 -vn -0.4739 -0.8768 0.0813 -vn 0.1503 -0.9852 0.0822 -vn -0.5393 -0.7854 -0.3039 -vn 0.1337 -0.0720 0.9884 -vn -0.5887 -0.7989 -0.1231 -vn -0.7728 -0.5565 0.3050 -vn -0.7304 -0.4510 0.5130 -vn 0.1418 -0.3466 -0.9272 -vn -0.2110 -0.9587 0.1905 -vn -0.6474 -0.7443 -0.1640 -vn 0.5749 -0.3259 0.7505 -vn -0.7125 -0.6998 -0.0502 -vn -0.7710 -0.6366 -0.0158 -vn -0.0266 -0.9996 0.0026 -vn -0.8256 -0.2081 0.5244 -vn -0.5020 -0.7732 0.3874 -vn -0.1600 -0.9510 0.2645 -vn -0.2504 -0.8980 0.3618 -vn -0.2433 -0.7625 0.5995 -vn 0.0592 -0.4236 0.9039 -vn 0.0472 -0.5431 0.8383 -vn 0.0118 -0.4994 0.8663 -vn 0.0280 -0.9983 0.0504 -vn -0.1309 -0.5859 0.7997 -vn 0.2110 -0.7615 0.6129 -vn 0.5285 -0.8371 0.1413 -vn 0.5416 -0.8225 0.1739 -vn -0.6833 -0.6907 0.2369 -vn -0.7769 -0.5791 0.2471 -vn -0.8026 -0.5834 0.1249 -vn -0.7992 -0.5025 0.3299 -vn -0.0972 -0.4480 0.8887 -vn -0.1683 -0.5555 0.8143 -vn 0.0399 -0.9992 0.0062 -vn -0.1830 -0.9667 0.1789 -vn 0.0028 -0.9991 0.0432 -vn -0.0529 -0.9148 0.4005 -vn 0.0018 -0.9957 0.0921 -vn -0.0432 -0.9485 0.3138 -vn 0.5520 -0.7663 0.3287 -vn -0.5831 -0.7422 -0.3304 -vn 0.5303 -0.6368 0.5597 -vn -0.5976 -0.8018 0.0070 -vn -0.5773 -0.7890 0.2103 -vn -0.6136 -0.6635 0.4281 -vn 0.0277 -0.9996 -0.0115 -vn -0.5134 -0.8384 0.1833 -vn -0.2158 -0.8441 0.4908 -vn -0.5959 -0.5708 0.5649 -vn 0.0057 -1.0000 -0.0080 -vn -0.4264 -0.8466 0.3184 -vn -0.6325 -0.7581 -0.1591 -vn -0.7563 -0.6523 0.0501 -vn -0.0265 -0.8723 0.4883 -vn 0.2414 -0.9702 0.0220 -vn 0.0051 -0.9997 0.0259 -vn -0.7040 -0.4090 0.5806 -vn -0.8034 -0.1076 0.5856 -vn -0.0017 -0.9996 0.0274 -vn 0.0140 -0.9987 0.0500 -vn -0.4618 -0.8868 -0.0172 -vn 0.0486 -0.9971 0.0589 -vn 0.1574 0.1309 0.9788 -vn -0.4276 -0.1363 0.8936 -vn -0.6351 -0.7548 -0.1639 -vn -0.6900 -0.7214 -0.0594 -vn -0.6873 -0.7018 0.1872 -vn -0.6257 -0.7720 0.1123 -vn -0.6456 -0.7453 0.1667 -vn -0.6921 -0.6673 0.2751 -vn -0.7658 -0.4632 0.4460 -vn 0.0143 -0.9994 -0.0302 -vn 0.1087 -0.9938 -0.0217 -vn 0.4190 -0.9041 0.0842 -vn -0.6004 -0.7138 0.3606 -vn -0.2120 -0.1376 0.9675 -vn -0.1096 -0.3944 0.9124 -vn -0.4027 -0.7900 0.4623 -vn 0.1020 -0.9652 0.2407 -vn -0.1336 -0.8192 0.5577 -vn -0.1516 -0.4255 0.8922 -vn -0.4298 -0.7666 0.4771 -vn 0.5958 -0.7462 0.2969 -vn -0.1757 -0.9468 0.2696 -vn -0.0338 -0.9987 0.0392 -vn -0.5396 -0.6253 0.5637 -vn 0.0087 -0.9961 0.0876 -vn -0.6296 -0.7592 -0.1648 -vn -0.7972 -0.5768 0.1783 -vn -0.6243 -0.7543 0.2033 -vn 0.0865 -0.4524 0.8876 -vn -0.7037 -0.6937 -0.1538 -vn -0.2446 -0.9329 0.2644 -vn 0.0384 -0.9628 0.2676 -vn 0.1162 -0.8961 0.4284 -vn -0.2177 -0.8071 0.5488 -vn -0.3175 -0.7758 0.5453 -vn -0.1238 0.7206 0.6822 -vn -0.0907 -0.9957 -0.0200 -vn -0.0097 -0.9938 -0.1105 -vn -0.4507 -0.8481 -0.2787 -vn -0.7762 -0.6279 0.0572 -vn -0.7247 -0.6833 -0.0883 -vn -0.7299 -0.6631 -0.1660 -vn -0.5801 -0.7853 0.2165 -vn -0.0797 -0.8329 0.5476 -vn -0.0219 -0.9732 0.2290 -vn -0.0079 -0.9283 0.3717 -vn -0.4037 -0.4952 0.7693 -vn 0.4512 -0.8756 -0.1725 -vn -0.7297 -0.6838 -0.0008 -vn -0.7046 -0.7063 -0.0678 -vn 0.4546 -0.8436 0.2860 -vn -0.6273 -0.5043 0.5934 -vn -0.3133 -0.9461 -0.0825 -vn -0.3981 -0.8674 -0.2986 -vn -0.4186 -0.8658 -0.2742 -vn -0.6939 -0.6311 0.3467 -vn -0.7105 -0.5086 0.4864 -vn 0.0324 -0.9993 0.0166 -vn -0.0161 -0.9997 0.0167 -vn 0.1656 -0.9856 -0.0343 -vn 0.2042 -0.9389 0.2770 -vn -0.0259 -0.9361 0.3507 -vn -0.5715 -0.5817 0.5788 -vn -0.4570 -0.8684 -0.1923 -vn -0.7234 -0.6898 -0.0304 -vn 0.1496 -0.9878 0.0426 -vn -0.3068 -0.9407 -0.1447 -vn -0.3401 -0.9403 0.0124 -vn -0.5769 -0.8123 0.0862 -vn -0.6560 -0.6651 0.3567 -vn -0.5951 -0.6888 0.4140 -vn -0.5989 -0.6642 0.4473 -vn 0.6187 -0.7637 0.1845 -vn 0.0041 -0.9999 -0.0150 -vn -0.6573 -0.7450 0.1135 -vn 0.2247 -0.9381 0.2635 -vn 0.1994 -0.9291 0.3113 -vn 0.1206 -0.9914 0.0500 -vn 0.0842 -0.9896 -0.1163 -vn -0.3522 -0.9315 -0.0905 -vn 0.2456 -0.9450 0.2161 -vn -0.8862 0.2654 0.3797 -vn -0.2708 -0.9506 -0.1518 -vn -0.3938 -0.8978 -0.1973 -vn -0.5383 -0.8259 0.1678 -vn -0.5180 -0.8472 0.1178 -vn -0.5290 -0.8440 0.0885 -vn -0.5180 -0.7977 0.3086 -vn -0.2545 -0.8900 0.3784 -vn -0.0780 -0.9723 0.2202 -vn 0.3081 -0.8891 0.3386 -vn 0.5572 -0.8277 0.0674 -vn 0.0418 -0.7260 0.6865 -vn 0.1351 -0.9868 -0.0899 -vn -0.0143 -0.9961 -0.0874 -vn -0.0397 -0.9979 -0.0510 -vn -0.1352 -0.9908 0.0085 -vn -0.1381 -0.9904 0.0012 -vn -0.4493 -0.8841 0.1288 -vn -0.7148 -0.1414 0.6849 -vn -0.2263 -0.9491 -0.2193 -vn -0.5154 -0.7799 0.3552 -vn 0.0568 -0.9982 -0.0217 -vn 0.0005 -0.9980 -0.0631 -vn 0.6532 -0.7135 0.2537 -vn 0.2817 -0.9266 0.2491 -vn 0.2663 -0.8986 0.3486 -vn 0.2897 -0.8606 0.4188 -vn -0.3808 -0.8906 -0.2486 -vn -0.3960 -0.8342 0.3837 -vn -0.4398 -0.7408 0.5078 -vn -0.8688 0.3874 -0.3085 -vn -0.0569 -0.9953 -0.0783 -vn -0.0634 -0.9968 -0.0481 -vn -0.2216 -0.9354 -0.2754 -vn -0.2624 -0.9241 -0.2778 -vn -0.2211 -0.9629 -0.1546 -vn -0.2874 -0.9310 -0.2252 -vn -0.4391 -0.8775 0.1927 -vn -0.5081 -0.6830 0.5247 -vn 0.4757 -0.4825 0.7354 -vn 0.0125 -0.9998 -0.0155 -vn -0.9922 -0.0300 0.1212 -vn -0.0910 -0.9901 0.1072 -vn 0.4722 -0.8468 0.2450 -vn 0.1510 -0.7496 0.6444 -vn -0.0655 -0.9944 -0.0830 -vn -0.2973 -0.9369 0.1839 -vn -0.7504 -0.3127 -0.5824 -vn -0.3321 -0.9345 -0.1281 -vn -0.3191 -0.9477 -0.0031 -vn -0.5916 -0.6933 0.4115 -vn -0.3529 0.0429 0.9347 -vn 0.0134 -0.9999 -0.0030 -vn -0.3135 -0.5815 0.7507 -vn -0.0871 -0.9581 0.2728 -vn -0.7307 -0.6200 0.2857 -vn -0.4977 -0.2685 -0.8247 -vn -0.0330 0.2373 -0.9709 -vn -0.0799 -0.9936 -0.0798 -vn -0.0515 -0.9972 0.0542 -vn -0.3611 -0.8685 0.3396 -vn -0.2396 -0.9598 -0.1462 -vn -0.4118 -0.8165 0.4046 -vn 0.1138 0.0195 0.9933 -vn 0.0322 -0.9986 0.0410 -vn -0.6672 -0.5920 0.4521 -vn 0.0321 -0.9993 -0.0186 -vn 0.1372 -0.9858 0.0965 -vn -0.0471 -0.9434 0.3284 -vn -0.3847 -0.8780 -0.2848 -vn -0.0676 -0.9965 -0.0488 -vn -0.4564 -0.7513 0.4766 -vn -0.4796 -0.8516 -0.2115 -vn -0.2511 -0.9630 0.0979 -vn -0.3318 -0.9159 0.2259 -vn -0.3009 -0.9111 0.2817 -vn -0.4321 -0.8086 0.3992 -vn -0.4521 -0.7893 0.4155 -vn -0.4407 -0.4416 0.7816 -vn -0.7468 -0.2161 0.6289 -vn -0.0359 -0.9993 0.0108 -vn 0.0046 -0.9996 0.0291 -vn -0.2459 0.6566 -0.7130 -vn -0.0767 -0.9906 0.1133 -vn 0.2604 -0.9425 0.2095 -vn 0.3011 -0.8874 0.3490 -vn 0.0169 -0.9995 0.0274 -vn -0.0441 -0.9975 0.0546 -vn -0.3764 -0.8785 0.2941 -vn -0.3256 -0.9192 -0.2213 -vn -0.3000 -0.9414 -0.1543 -vn -0.3568 -0.9310 0.0774 -vn -0.4362 -0.7257 0.5321 -vn -0.2744 0.3729 -0.8864 -vn -0.2851 -0.8460 0.4505 -vn 0.1060 -0.9927 -0.0578 -vn 0.1864 -0.8497 0.4932 -vn -0.0435 -0.9967 -0.0681 -vn -0.0731 -0.9857 -0.1515 -vn 0.0644 -0.9977 -0.0223 -vn -0.7144 -0.6770 -0.1770 -vn -0.3077 -0.9436 -0.1221 -vn 0.0346 -0.9977 0.0586 -vn -0.0108 -0.9998 -0.0146 -vn -0.2507 -0.9604 -0.1211 -vn -0.3859 -0.8153 0.4317 -vn -0.4015 -0.8281 0.3911 -vn -0.2420 -0.9700 0.0252 -vn 0.0240 -0.9997 -0.0040 -vn 0.2156 0.1482 0.9652 -vn -0.4743 -0.8595 0.1905 -vn -0.3013 -0.8616 0.4085 -vn 0.1554 -0.9671 -0.2013 -vn -0.0753 -0.9971 -0.0108 -vn -0.0244 -0.9996 -0.0173 -vn -0.0121 -0.9996 0.0261 -vn -0.6715 0.7151 0.1942 -vn 0.6047 -0.7853 0.1329 -vn -0.2400 -0.9700 -0.0392 -vn -0.1796 -0.9531 0.2437 -vn -0.3304 -0.9197 0.2120 -vn -0.2947 -0.9121 0.2848 -vn -0.3882 -0.4712 0.7920 -vn -0.7611 0.0063 0.6486 -vn 0.4767 -0.7013 0.5300 -vn -0.6606 -0.2480 -0.7086 -vn -0.0937 -0.9793 -0.1793 -vn -0.0463 -0.9976 0.0514 -vn -0.2540 -0.9325 0.2566 -vn -0.0178 -0.9998 -0.0014 -vn -0.8257 -0.5459 0.1418 -vn -0.2700 -0.8820 0.3861 -vn -0.3811 -0.7194 0.5807 -vn -0.0828 -0.9936 -0.0769 -vn -0.0806 -0.9963 0.0291 -vn -0.5393 -0.4426 0.7164 -vn 0.3153 -0.9207 -0.2299 -vn 0.3154 -0.9239 -0.2168 -vn 0.0098 -1.0000 0.0017 -vn 0.0385 -0.9983 0.0430 -vn -0.0224 -0.9995 0.0209 -vn -0.7314 -0.2690 -0.6267 -vn -0.2081 -0.9217 0.3274 -vn -0.2192 -0.8852 0.4102 -vn -0.2581 -0.8606 0.4390 -vn -0.2753 -0.8507 0.4478 -vn -0.3364 -0.7569 0.5602 -vn -0.3055 -0.6252 0.7182 -vn -0.2201 -0.9753 0.0178 -vn -0.0000 -0.9995 0.0320 -vn 0.2634 -0.9415 0.2102 -vn 0.2505 -0.9172 0.3099 -vn 0.1891 -0.9173 0.3506 -vn -0.0901 -0.9918 -0.0904 -vn -0.0319 -0.9908 -0.1316 -vn 0.0062 -1.0000 0.0033 -vn 0.0650 -0.9979 0.0079 -vn 0.1660 -0.2214 0.9610 -vn -0.1774 -0.9830 0.0480 -vn -0.2162 -0.9128 0.3466 -vn 0.0410 -0.9962 0.0766 -vn 0.0327 -0.9978 0.0571 -vn -0.0006 -0.9997 -0.0246 -vn 0.3910 -0.8280 0.4018 -vn -0.0343 -0.9981 0.0520 -vn 0.3342 0.9411 0.0515 -vn -0.3062 -0.8377 0.4522 -vn -0.5103 -0.8213 -0.2552 -vn -0.4523 -0.8063 0.3811 -vn -0.1245 -0.7536 0.6455 -vn 0.3901 -0.5808 -0.7145 -vn 0.0260 -0.9945 -0.1011 -vn -0.0071 -0.9972 -0.0741 -vn -0.0567 -0.9981 0.0248 -vn -0.1574 -0.9797 0.1245 -vn -0.7817 -0.6130 -0.1144 -vn -0.5404 -0.8361 -0.0940 -vn -0.9285 -0.2878 -0.2348 -vn -0.0928 -0.9908 0.0990 -vn 0.1961 -0.0912 0.9763 -vn -0.6818 0.2162 -0.6988 -vn 0.1616 -0.9834 0.0824 -vn 0.0390 -0.9940 -0.1021 -vn -0.4518 -0.8594 -0.2395 -vn -0.7569 -0.5947 -0.2711 -vn -0.5986 -0.7935 -0.1098 -vn -0.5775 -0.6961 -0.4265 -vn 0.0117 -0.9999 0.0068 -vn -0.0187 -0.9996 0.0209 -vn -0.1590 -0.9814 0.1074 -vn -0.4407 -0.8849 -0.1507 -vn 0.6452 -0.7398 0.1909 -vn 0.7151 -0.6762 0.1770 -vn -0.4414 -0.8938 -0.0786 -vn -0.5016 -0.8639 0.0462 -vn 0.0071 -0.9997 -0.0213 -vn -0.2370 -0.7139 0.6589 -vn -0.2676 -0.6358 0.7240 -vn -0.2772 -0.6304 0.7251 -vn 0.0350 -0.9993 -0.0124 -vn -0.2795 -0.9199 -0.2751 -vn -0.2447 -0.9689 -0.0365 -vn -0.1933 -0.9579 -0.2123 -vn -0.1261 -0.9919 -0.0173 -vn -0.0707 -0.9904 -0.1187 -vn -0.0061 -1.0000 0.0063 -vn -0.0550 -0.9982 0.0251 -vn -0.4270 -0.8918 -0.1495 -vn 0.0278 -0.9972 0.0690 -vn -0.7389 0.3966 0.5447 -vn -0.2005 -0.9527 -0.2284 -vn -0.0985 -0.9881 -0.1184 -vn -0.1386 -0.9829 -0.1209 -vn 0.0033 -1.0000 0.0032 -vn 0.0377 -0.9992 -0.0112 -vn 0.0286 -0.9995 0.0114 -vn 0.0477 -0.9986 -0.0215 -vn -0.0240 -0.9996 0.0125 -vn 0.0030 -0.9995 0.0326 -vn 0.0184 -0.9994 -0.0279 -vn -0.0641 -0.9979 0.0109 -vn -0.0478 -0.9980 0.0405 -vn -0.1050 -0.9935 0.0435 -vn -0.0372 -0.9962 -0.0791 -vn -0.2815 -0.9545 0.0987 -vn -0.2391 -0.9333 0.2679 -vn -0.2222 -0.8362 0.5014 -vn -0.1902 -0.7576 0.6244 -vn 0.1054 0.2526 -0.9618 -vn 0.4193 -0.9024 -0.0990 -vn 0.0504 -0.9981 0.0358 -vn 0.0229 -0.9995 0.0231 -vn 0.0004 -0.9994 0.0358 -vn 0.0201 -0.9989 -0.0413 -vn 0.0151 -0.9998 0.0151 -vn -0.0419 -0.9990 0.0182 -vn -0.8253 -0.4619 0.3250 -vn -0.3849 -0.7432 -0.5473 -vn 0.5276 -0.8484 -0.0426 -vn 0.0301 -0.5740 0.8183 -vn 0.0155 -0.9999 -0.0041 -vn 0.0343 -0.9993 -0.0127 -vn -0.1822 -0.4683 0.8646 -vn -0.1348 -0.9724 0.1904 -vn 0.0240 -0.9990 0.0372 -vn 0.0014 -0.9958 -0.0919 -vn -0.0186 -0.9980 -0.0606 -vn 0.0509 -0.9987 0.0090 -vn -0.0206 -0.9995 0.0255 -vn 0.0002 -0.9986 0.0521 -vn -0.3030 -0.9484 0.0935 -vn -0.4641 -0.8516 0.2437 -vn -0.1827 -0.8564 0.4830 -vn -0.3145 -0.9486 0.0339 -vn -0.0003 -0.9999 -0.0138 -vn 0.0283 -0.9993 0.0234 -vn 0.0456 -0.9987 -0.0218 -vn 0.5594 -0.8031 0.2049 -vn -0.0885 -0.9950 0.0471 -vn -0.0916 -0.9957 0.0165 -vn -0.1163 -0.8452 0.5217 -vn -0.2504 -0.5641 0.7868 -vn -0.4333 -0.8801 -0.1942 -vn -0.0056 -0.9956 0.0939 -vn -0.6797 -0.6096 -0.4079 -vn 0.0579 -0.9964 0.0614 -vn -0.2195 -0.9682 -0.1204 -vn -0.0558 -0.9958 -0.0720 -vn 0.0244 -0.9994 0.0257 -vn 0.0691 -0.9961 0.0553 -vn 0.1306 -0.9914 -0.0122 -vn 0.0237 -0.9995 0.0195 -vn 0.0492 -0.9986 -0.0187 -vn 0.2384 -0.9599 0.1472 -vn -0.1215 -0.9712 0.2051 -vn 0.2245 -0.8229 0.5220 -vn -0.4974 -0.8675 -0.0049 -vn -0.3508 -0.9008 0.2558 -vn -0.0309 -0.9994 0.0174 -vn 0.0035 -0.9968 0.0802 -vn -0.2675 -0.8458 -0.4616 -vn -0.1595 -0.7588 0.6314 -vn -0.6772 -0.6312 -0.3780 -vn 0.3818 -0.9174 -0.1124 -vn 0.3778 -0.9212 -0.0932 -vn 0.2053 -0.9656 0.1598 -vn 0.2457 -0.9663 0.0764 -vn 0.1765 -0.9842 0.0130 -vn 0.0513 -0.9985 0.0186 -vn 0.0099 -0.9994 0.0346 -vn -0.2066 -0.9057 0.3702 -vn -0.7923 -0.5684 0.2216 -vn -0.0690 -0.6976 0.7131 -vn 0.0492 -0.4910 0.8698 -vn -0.0166 -0.5454 0.8380 -vn 0.0365 -0.5726 0.8190 -vn 0.4688 -0.8394 0.2751 -vn 0.1162 -0.9652 0.2342 -vn 0.5231 -0.8341 0.1749 -vn 0.6211 -0.7386 0.2621 -vn 0.5465 -0.8373 0.0155 -vn 0.1563 -0.9842 -0.0827 -vn 0.0324 -0.9994 0.0101 -vn 0.0095 -0.9990 -0.0447 -vn 0.0091 -0.9983 -0.0572 -vn -0.0274 -0.9990 -0.0362 -vn 0.3840 -0.7524 0.5353 -vn 0.3793 -0.7443 0.5496 -vn -0.0330 -0.9956 0.0876 -vn -0.2641 -0.9521 0.1540 -vn -0.4177 0.3847 -0.8231 -vn -0.2514 -0.6011 0.7586 -vn -0.2324 -0.6848 0.6907 -vn 0.0496 -0.9988 -0.0023 -vn 0.6249 -0.7315 0.2727 -vn 0.0085 -0.9998 0.0171 -vn -0.0014 -0.9998 0.0196 -vn 0.0800 -0.9647 0.2508 -vn 0.7631 -0.6240 0.1680 -vn 0.0020 -0.9996 0.0269 -vn 0.0063 -0.9997 0.0215 -vn -0.5396 -0.4081 0.7364 -vn 0.4177 -0.7344 0.5350 -vn -0.6118 -0.0585 -0.7888 -vn -0.0548 -0.6960 0.7159 -vn 0.1472 0.1297 0.9806 -vn 0.5340 -0.7291 0.4280 -vn 0.3546 -0.8373 0.4160 -vn 0.5941 -0.6572 0.4639 -vn 0.5944 -0.6581 0.4622 -vn 0.6930 -0.6626 0.2841 -vn 0.6981 -0.6583 0.2816 -vn 0.7844 -0.5993 0.1597 -vn 0.0513 -0.9908 0.1252 -vn -0.0993 -0.6349 0.7662 -vn -0.0738 -0.9946 0.0732 -vn -0.0484 -0.9795 0.1958 -vn -0.0929 -0.9804 0.1735 -vn -0.1142 -0.9191 0.3770 -vn -0.6274 -0.3493 0.6960 -vn -0.7224 0.0478 0.6898 -vn 0.2171 -0.7596 0.6130 -vn -0.7173 -0.6468 0.2593 -vn -0.1338 -0.7545 0.6426 -vn -0.0054 -0.9999 0.0157 -vn -0.0440 -0.9984 0.0359 -vn 0.4330 -0.6782 0.5937 -vn 0.3834 -0.6483 0.6578 -vn 0.0046 -0.9998 0.0192 -vn -0.1342 -0.9859 0.1001 -vn -0.0631 -0.4759 0.8772 -vn -0.4561 -0.4729 0.7539 -vn -0.5159 -0.3874 0.7640 -vn -0.4962 -0.3339 0.8014 -vn 0.0742 -0.9970 -0.0206 -vn 0.0379 -0.9992 -0.0125 -vn 0.0469 -0.9681 0.2463 -vn -0.3715 -0.1219 0.9204 -vn -0.0270 -0.9991 0.0326 -vn -0.0184 -0.9998 0.0062 -vn 0.0292 -0.9993 0.0253 -vn -0.8978 -0.3122 -0.3105 -vn 0.4706 -0.0236 0.8820 -vn 0.0485 -0.9983 -0.0310 -vn 0.0264 -0.9974 0.0673 -vn 0.0735 -0.8901 0.4498 -vn 0.0240 -0.7852 0.6188 -vn 0.2881 -0.6677 0.6864 -vn 0.1557 -0.9847 0.0784 -vn 0.1127 -0.9871 0.1140 -vn 0.1105 -0.9938 0.0152 -vn 0.0132 -0.9985 -0.0529 -vn -0.2163 -0.7490 0.6262 -vn 0.0360 -0.9989 0.0288 -vn -0.0174 -0.8368 0.5472 -vn 0.2669 -0.8900 -0.3696 -vn -0.3773 -0.3601 0.8532 -vn 0.0278 -0.9996 -0.0108 -vn -0.8780 0.2303 -0.4197 -vn 0.4087 -0.9123 0.0254 -vn 0.3071 -0.9223 0.2346 -vn 0.0901 -0.9937 0.0667 -vn 0.0361 -0.9990 -0.0252 -vn 0.0250 -0.9997 0.0085 -vn -0.1112 -0.9733 0.2009 -vn 0.0363 -0.9991 0.0222 -vn 0.2995 -0.9366 0.1821 -vn 0.3690 -0.9075 0.2009 -vn -0.4060 -0.3709 0.8352 -vn 0.0307 -0.9993 0.0227 -vn 0.0308 -0.9957 0.0879 -vn 0.0205 -0.9938 0.1091 -vn -0.4707 -0.6511 0.5954 -vn 0.0086 -0.9989 0.0463 -vn 0.0791 -0.5222 0.8491 -vn 0.0560 -0.9034 0.4251 -vn 0.0375 -0.9989 -0.0298 -vn -0.2665 -0.7020 0.6604 -vn -0.0338 -0.9806 0.1929 -vn -0.0847 -0.9612 0.2627 -vn 0.1117 -0.9890 -0.0967 -vn 0.3627 -0.7465 0.5579 -vn 0.1374 -0.9905 -0.0012 -vn 0.2600 -0.7949 0.5483 -vn 0.0500 -0.9987 -0.0119 -vn 0.4934 -0.6512 0.5766 -vn -0.0892 -0.8003 0.5929 -vn 0.0548 -0.5419 0.8386 -vn 0.1136 -0.9111 0.3963 -vn -0.0400 -0.9989 -0.0244 -vn 0.0128 -0.9999 0.0095 -vn -0.4772 -0.6454 0.5964 -vn -0.0340 -0.9983 0.0471 -vn 0.0283 -0.9991 -0.0311 -vn -0.0073 -0.9982 0.0591 -vn -0.1048 -0.7512 0.6517 -vn 0.0254 -0.9968 0.0757 -vn -0.0096 -0.9986 -0.0527 -vn 0.0271 -0.9996 0.0085 -vn -0.2907 -0.7162 0.6345 -vn 0.0119 -0.9997 0.0230 -vn 0.0078 -0.9996 0.0268 -vn -0.0062 -0.9999 0.0107 -vn 0.0379 -0.8292 0.5577 -vn -0.7795 -0.5304 0.3334 -vn -0.5143 -0.7884 -0.3375 -vn 0.4547 -0.8903 -0.0245 -vn -0.0238 -0.9996 -0.0133 -vn 0.0395 -0.9988 -0.0282 -vn 0.4386 -0.7755 0.4542 -vn 0.0240 -0.9975 0.0669 -vn -0.4490 -0.8893 0.0863 -vn 0.0977 -0.5426 0.8343 -vn -0.0051 -0.9994 -0.0328 -vn 0.2600 -0.8161 0.5161 -vn -0.0597 -0.5402 0.8394 -vn 0.0036 -0.9632 0.2689 -vn -0.0200 -0.9996 -0.0215 -vn 0.0196 -0.9986 -0.0501 -vn 0.0176 -0.9998 0.0010 -vn 0.0138 -0.9998 -0.0170 -vn -0.5514 -0.6358 0.5401 -vn 0.1266 -0.9713 0.2013 -vn -0.1615 -0.9869 0.0020 -vn 0.0251 -0.9991 -0.0336 -vn -0.2997 -0.4743 0.8278 -vn 0.0402 -0.9991 -0.0119 -vn 0.0468 -0.9978 0.0479 -vn -0.1632 -0.9856 -0.0452 -vn 0.0260 -0.9993 0.0261 -vn -0.0229 -0.9983 0.0531 -vn -0.0912 -0.8012 0.5915 -vn -0.0817 -0.5049 0.8593 -vn -0.0922 -0.8393 0.5358 -vn 0.0414 -0.9989 -0.0239 -vn -0.0077 -0.9999 -0.0088 -vn -0.5913 -0.6970 0.4057 -vn 0.0708 -0.9804 0.1841 -vn 0.0225 -0.9645 0.2631 -vn 0.0039 -1.0000 0.0000 -vn -0.3233 -0.4238 0.8461 -vn 0.0299 -0.9984 0.0482 -vn -0.0175 -0.9986 0.0490 -vn 0.0107 -0.9995 -0.0287 -vn -0.0208 -0.9991 -0.0377 -vn -0.6208 -0.6793 0.3914 -vn -0.0187 -0.9995 0.0266 -vn -0.9951 0.0193 0.0969 -usemtl Material.001 -s off -f 2826/1/1 2535/2/1 2060/3/1 -f 1095/4/2 228/5/2 1078/6/2 -f 429/7/3 456/8/3 385/9/3 -f 2331/10/4 456/8/4 429/7/4 -f 1229/11/5 476/12/5 1456/13/5 -f 1402/14/6 1373/15/6 9/16/6 -f 1334/17/7 444/18/7 1243/19/7 -f 3464/20/8 3508/21/8 3446/22/8 -f 1243/19/9 444/18/9 1345/23/9 -f 1530/24/10 36/25/10 1540/26/10 -f 1287/27/11 1227/28/11 1261/29/11 -f 228/5/12 1095/4/12 1214/30/12 -f 471/31/13 312/32/13 1241/33/13 -f 1434/34/14 13/35/14 352/36/14 -f 294/37/15 1345/23/15 552/38/15 -f 1403/39/16 1402/14/16 9/16/16 -f 1459/40/17 1602/41/17 1138/42/17 -f 2341/43/18 1225/44/18 1219/45/18 -f 1461/46/19 1906/47/19 251/48/19 -f 1229/11/20 325/49/20 414/50/20 -f 1292/51/21 1338/52/21 1370/53/21 -f 1421/54/22 1450/55/22 104/56/22 -f 1766/57/23 1981/58/23 1869/59/23 -f 1338/52/24 1381/60/24 1370/53/24 -f 1416/61/25 1433/62/25 1418/63/25 -f 2298/64/26 2968/65/26 2978/66/26 -f 3033/67/27 2972/68/27 2952/69/27 -f 1539/70/28 265/71/28 1701/72/28 -f 173/73/29 1356/74/29 1352/75/29 -f 1332/76/30 1331/77/30 1254/78/30 -f 1806/79/31 158/80/31 1747/81/31 -f 1138/42/32 1602/41/32 1179/82/32 -f 1419/83/33 1434/34/33 352/36/33 -f 298/84/34 328/85/34 191/86/34 -f 2030/87/35 2016/88/35 2042/89/35 -f 1451/90/36 1456/13/36 476/12/36 -f 3506/91/37 3427/92/37 3444/93/37 -f 2331/10/38 429/7/38 345/94/38 -f 3084/95/39 2438/96/39 2428/97/39 -f 1456/13/40 1334/17/40 1234/98/40 -f 47/99/41 1277/100/41 1141/101/41 -f 1299/102/42 1234/98/42 1243/19/42 -f 156/103/43 1229/11/43 414/50/43 -f 1234/98/44 1334/17/44 1243/19/44 -f 1372/104/45 1234/98/45 1299/102/45 -f 3294/105/46 3279/106/46 3280/107/46 -f 1974/108/47 1976/109/47 1975/110/47 -f 1088/111/48 1108/112/48 1855/113/48 -f 737/114/49 1348/115/49 2103/116/49 -f 2015/117/50 2016/88/50 2030/87/50 -f 1334/17/51 1310/118/51 444/18/51 -f 1456/13/52 1234/98/52 1372/104/52 -f 174/119/53 1627/120/53 2819/121/53 -f 459/122/54 514/123/54 1265/124/54 -f 2292/125/55 1120/126/55 2343/127/55 -f 1441/128/56 1386/129/56 10/130/56 -f 104/56/57 1450/55/57 1441/128/57 -f 480/131/58 1421/54/58 382/132/58 -f 2292/133/59 964/134/59 1120/135/59 -f 1285/136/60 1292/51/60 1370/53/60 -f 1374/137/61 1399/138/61 1113/139/61 -f 1162/140/62 783/141/62 823/142/62 -f 113/143/63 902/144/63 365/145/63 -f 1262/146/64 365/145/64 1435/147/64 -f 1346/148/65 1423/149/65 1300/150/65 -f 1380/151/66 396/152/66 1403/39/66 -f 1358/153/67 1263/154/67 1452/155/67 -f 1358/153/68 1315/156/68 1263/154/68 -f 1275/157/69 1316/158/69 1305/159/69 -f 2198/160/70 2227/161/70 2203/162/70 -f 1381/60/71 1419/83/71 352/36/71 -f 1348/115/72 1204/163/72 1308/164/72 -f 3342/165/73 3326/166/73 3305/167/73 -f 118/168/74 119/169/74 1644/170/74 -f 1409/171/75 1321/172/75 1406/173/75 -f 1869/59/76 1862/174/76 1377/175/76 -f 1799/176/77 1817/177/77 1845/178/77 -f 197/179/78 1249/180/78 44/181/78 -f 1232/182/79 1231/183/79 1260/184/79 -f 577/185/80 2120/186/80 2088/187/80 -f 1979/188/81 1978/189/81 2071/190/81 -f 1267/191/82 1285/192/82 1217/193/82 -f 183/194/83 296/195/83 118/168/83 -f 296/195/84 119/169/84 118/168/84 -f 446/196/85 394/197/85 1550/198/85 -f 158/80/86 1325/199/86 1319/200/86 -f 1747/81/87 1158/201/87 1806/79/87 -f 42/202/88 1372/104/88 134/203/88 -f 271/204/89 1241/33/89 1593/205/89 -f 2750/206/90 2793/207/90 2762/208/90 -f 80/209/91 664/210/91 58/211/91 -f 16/212/92 394/197/92 446/196/92 -f 159/213/93 1685/214/93 1682/215/93 -f 382/132/94 1321/172/94 1409/171/94 -f 445/216/95 282/217/95 1685/218/95 -f 2016/88/96 2057/219/96 2042/89/96 -f 1842/220/97 2549/221/97 2574/222/97 -f 352/36/98 13/35/98 12/223/98 -f 2858/224/99 3429/225/99 2767/226/99 -f 1440/227/100 1424/228/100 1332/76/100 -f 346/229/101 382/132/101 21/230/101 -f 21/230/102 382/132/102 270/231/102 -f 1974/108/103 1958/232/103 1976/109/103 -f 1543/233/104 1493/234/104 48/235/104 -f 9/16/105 1256/236/105 1227/28/105 -f 2005/237/106 2016/88/106 2015/117/106 -f 2761/238/107 2791/239/107 2790/240/107 -f 296/195/108 446/196/108 119/169/108 -f 16/212/109 159/213/109 394/197/109 -f 2034/241/110 1570/242/110 1895/243/110 -f 3437/244/111 2424/245/111 3504/246/111 -f 1429/247/112 1295/248/112 1231/249/112 -f 2887/250/113 1703/251/113 1769/252/113 -f 2810/253/114 2809/254/114 2775/255/114 -f 1451/90/115 299/256/115 1456/13/115 -f 104/56/116 1441/128/116 1346/148/116 -f 1232/182/117 1258/257/117 1230/258/117 -f 982/259/118 182/260/118 1147/261/118 -f 10/130/119 1386/129/119 77/262/119 -f 2735/263/120 2699/264/120 2674/265/120 -f 2609/266/121 2434/267/121 2600/268/121 -f 3472/269/122 3461/270/122 2548/271/122 -f 1988/272/123 1439/273/123 2021/274/123 -f 446/196/124 903/275/124 16/212/124 -f 492/276/125 1685/214/125 159/213/125 -f 1093/277/126 1211/278/126 1212/279/126 -f 1163/280/127 3470/281/127 986/282/127 -f 1321/172/128 104/56/128 1406/173/128 -f 1467/283/129 1346/148/129 1300/150/129 -f 1719/284/130 931/285/130 1620/286/130 -f 2615/287/131 2781/288/131 2467/289/131 -f 1593/205/132 1440/290/132 271/204/132 -f 1458/291/133 480/131/133 346/229/133 -f 3024/292/134 3046/293/134 2962/294/134 -f 443/295/135 527/296/135 296/195/135 -f 296/195/136 527/296/136 446/196/136 -f 527/296/137 891/297/137 446/196/137 -f 446/196/138 891/297/138 903/275/138 -f 3511/298/139 3437/299/139 3463/300/139 -f 903/275/140 159/213/140 16/212/140 -f 986/282/141 3470/281/141 1132/301/141 -f 700/302/142 1076/303/142 719/304/142 -f 1093/277/143 1039/305/143 1211/278/143 -f 346/229/144 480/131/144 382/132/144 -f 1441/128/145 10/130/145 1346/148/145 -f 2117/306/146 737/114/146 2082/307/146 -f 3190/308/147 3241/309/147 3173/310/147 -f 1697/311/148 3479/312/148 3425/313/148 -f 3336/314/149 407/315/149 443/295/149 -f 76/316/150 527/296/150 443/295/150 -f 903/275/151 261/317/151 159/213/151 -f 2161/318/152 985/319/152 1026/320/152 -f 429/7/153 385/9/153 480/131/153 -f 2069/321/154 2048/322/154 2121/323/154 -f 1180/324/155 3500/325/155 3485/326/155 -f 493/327/156 507/328/156 481/329/156 -f 407/315/157 76/316/157 443/295/157 -f 76/316/158 376/330/158 527/296/158 -f 376/330/159 886/331/159 527/296/159 -f 527/296/160 886/331/160 891/297/160 -f 1208/332/161 1207/333/161 1193/334/161 -f 3246/335/162 3262/336/162 3216/337/162 -f 2093/338/163 2085/339/163 1978/340/163 -f 315/341/164 409/342/164 814/343/164 -f 1353/344/165 1357/345/165 1238/346/165 -f 2345/347/166 346/229/166 1472/348/166 -f 1204/163/167 1348/115/167 737/114/167 -f 346/229/168 21/230/168 1472/348/168 -f 1406/173/169 1346/148/169 1467/283/169 -f 3433/349/170 3501/350/170 3443/351/170 -f 261/317/171 727/352/171 159/213/171 -f 159/213/172 727/352/172 492/276/172 -f 3505/353/173 3445/354/173 3476/355/173 -f 316/356/174 362/357/174 783/141/174 -f 1002/358/175 3495/359/175 1153/360/175 -f 2594/361/176 2634/362/176 2607/363/176 -f 1321/172/177 1421/54/177 104/56/177 -f 1981/58/178 1154/364/178 1869/59/178 -f 1564/365/179 516/366/179 493/327/179 -f 516/366/180 3222/367/180 493/327/180 -f 478/368/181 488/369/181 468/370/181 -f 2812/371/182 2844/372/182 2828/373/182 -f 90/374/183 91/375/183 112/376/183 -f 154/377/184 136/378/184 103/379/184 -f 345/94/185 429/7/185 1458/291/185 -f 429/7/186 480/131/186 1458/291/186 -f 447/380/187 1564/365/187 1640/381/187 -f 2096/382/188 1894/383/188 2857/384/188 -f 516/366/189 531/385/189 3222/367/189 -f 469/386/190 478/368/190 468/370/190 -f 376/330/191 76/316/191 407/315/191 -f 65/387/192 89/388/192 111/389/192 -f 66/390/193 67/391/193 90/374/193 -f 38/392/194 39/393/194 66/394/194 -f 39/395/195 38/396/195 27/397/195 -f 3471/398/196 3493/399/196 3456/400/196 -f 347/401/197 911/402/197 405/403/197 -f 1018/404/198 1045/405/198 1013/406/198 -f 1762/407/199 1724/408/199 1981/58/199 -f 385/9/200 1229/11/200 156/103/200 -f 2120/409/201 1978/189/201 1979/188/201 -f 1409/171/202 1406/173/202 1375/410/202 -f 1375/410/203 1406/173/203 1467/283/203 -f 397/411/204 398/412/204 1640/381/204 -f 542/413/205 531/385/205 516/366/205 -f 171/414/206 281/415/206 490/416/206 -f 1207/417/207 1181/418/207 1175/419/207 -f 1041/420/208 1319/200/208 1215/421/208 -f 3474/422/209 3446/22/209 3489/423/209 -f 1123/424/210 1146/425/210 1115/426/210 -f 1042/427/211 3478/428/211 1148/429/211 -f 382/132/212 1421/54/212 1321/172/212 -f 396/152/213 1402/14/213 1403/39/213 -f 1472/348/214 21/230/214 1471/430/214 -f 399/431/215 398/412/215 397/411/215 -f 447/380/216 516/366/216 1564/365/216 -f 653/432/217 542/413/217 516/366/217 -f 310/433/218 258/434/218 259/435/218 -f 181/436/219 157/437/219 703/438/219 -f 133/439/220 153/440/220 132/441/220 -f 490/416/221 237/442/221 1300/443/221 -f 40/444/222 67/445/222 39/393/222 -f 33/446/223 40/447/223 27/397/223 -f 67/445/224 66/394/224 39/393/224 -f 40/447/225 39/395/225 27/397/225 -f 988/448/226 998/449/226 978/450/226 -f 112/376/227 89/388/227 90/374/227 -f 1211/278/228 1039/305/228 922/451/228 -f 1156/452/229 1195/453/229 1146/425/229 -f 456/8/230 190/454/230 476/12/230 -f 664/455/231 1811/456/231 1525/457/231 -f 1909/458/232 2442/459/232 2414/460/232 -f 460/461/233 1640/381/233 398/412/233 -f 1640/381/234 460/461/234 447/380/234 -f 482/462/235 516/366/235 447/380/235 -f 260/463/236 293/464/236 240/465/236 -f 489/466/237 899/467/237 525/468/237 -f 186/469/238 212/470/238 200/471/238 -f 240/465/239 266/472/239 247/473/239 -f 324/474/240 359/475/240 323/476/240 -f 588/477/241 38/396/241 53/478/241 -f 196/479/242 200/471/242 224/480/242 -f 123/481/243 131/482/243 116/483/243 -f 157/437/244 181/436/244 187/484/244 -f 266/472/245 324/474/245 310/433/245 -f 703/438/246 157/437/246 153/440/246 -f 703/438/247 153/440/247 133/439/247 -f 726/485/248 946/486/248 1330/487/248 -f 1083/488/249 438/489/249 1127/490/249 -f 1176/491/250 1155/492/250 1199/493/250 -f 783/141/251 362/357/251 120/494/251 -f 1456/13/252 299/256/252 1334/17/252 -f 325/49/253 1372/104/253 42/202/253 -f 137/495/254 290/496/254 3/497/254 -f 341/498/255 354/499/255 399/431/255 -f 400/500/256 398/412/256 399/431/256 -f 482/462/257 447/380/257 460/461/257 -f 482/462/258 653/432/258 516/366/258 -f 293/464/259 266/472/259 240/465/259 -f 142/501/260 152/502/260 151/503/260 -f 153/440/261 152/502/261 132/441/261 -f 248/504/262 171/414/262 227/505/262 -f 123/481/263 151/503/263 168/506/263 -f 133/439/264 132/441/264 124/507/264 -f 101/508/265 124/507/265 91/375/265 -f 260/463/266 225/509/266 840/510/266 -f 1201/511/267 1093/277/267 1212/279/267 -f 1093/277/268 1143/512/268 1091/513/268 -f 595/514/269 697/515/269 842/516/269 -f 1013/406/270 1061/517/270 1037/518/270 -f 299/256/271 1228/519/271 1334/17/271 -f 1314/520/272 444/18/272 1310/118/272 -f 1314/520/273 213/521/273 444/18/273 -f 3103/522/274 3145/523/274 3144/524/274 -f 341/498/275 331/525/275 354/499/275 -f 354/499/276 400/500/276 399/431/276 -f 400/500/277 460/461/277 398/412/277 -f 151/503/278 152/502/278 180/526/278 -f 2964/527/279 2983/528/279 2974/529/279 -f 2458/530/280 979/531/280 2488/532/280 -f 117/533/281 123/481/281 116/483/281 -f 454/534/282 441/535/282 468/536/282 -f 911/402/283 938/537/283 406/538/283 -f 406/538/284 938/537/284 418/539/284 -f 1605/540/285 1617/541/285 1854/542/285 -f 1237/543/286 506/544/286 106/545/286 -f 331/525/287 355/546/287 354/499/287 -f 420/547/288 460/461/288 400/500/288 -f 103/379/289 3218/548/289 661/549/289 -f 310/433/290 323/476/290 309/550/290 -f 636/551/291 101/508/291 75/552/291 -f 425/553/292 470/554/292 442/555/292 -f 501/556/293 547/557/293 513/558/293 -f 1394/559/294 1408/560/294 1404/561/294 -f 3182/562/295 2043/563/295 1489/564/295 -f 2709/565/296 263/566/296 3386/567/296 -f 355/546/297 400/500/297 354/499/297 -f 483/568/298 482/462/298 460/461/298 -f 483/568/299 517/569/299 482/462/299 -f 517/569/300 653/432/300 482/462/300 -f 517/569/301 532/570/301 653/432/301 -f 1162/140/302 823/142/302 377/571/302 -f 547/557/303 125/572/303 79/573/303 -f 1384/574/304 501/556/304 680/575/304 -f 959/576/305 954/577/305 3029/578/305 -f 424/579/306 441/535/306 454/534/306 -f 2696/580/307 964/581/307 2292/125/307 -f 556/582/308 162/583/308 548/584/308 -f 393/585/309 440/586/309 416/587/309 -f 1379/588/310 182/260/310 982/259/310 -f 1785/589/311 1575/590/311 1796/591/311 -f 2104/592/312 2047/593/312 1378/594/312 -f 1243/19/313 1345/23/313 268/595/313 -f 284/596/314 331/525/314 263/566/314 -f 284/596/315 332/597/315 331/525/315 -f 332/597/316 355/546/316 331/525/316 -f 420/547/317 483/568/317 460/461/317 -f 488/369/318 537/598/318 477/599/318 -f 248/504/319 227/505/319 554/600/319 -f 1195/453/320 1194/601/320 1166/602/320 -f 101/508/321 91/375/321 75/552/321 -f 162/583/322 1389/603/322 782/604/322 -f 2082/307/323 737/114/323 2103/116/323 -f 328/605/324 329/606/324 1335/607/324 -f 385/9/325 156/103/325 1421/54/325 -f 190/454/326 456/8/326 2361/608/326 -f 366/609/327 400/500/327 355/546/327 -f 421/610/328 420/547/328 400/500/328 -f 430/611/329 483/568/329 420/547/329 -f 508/612/330 517/569/330 483/568/330 -f 517/569/331 564/613/331 532/570/331 -f 532/570/332 564/613/332 563/614/332 -f 124/507/333 112/376/333 91/375/333 -f 3503/615/334 3502/616/334 1042/427/334 -f 53/617/335 54/618/335 74/619/335 -f 1372/104/336 1299/102/336 134/203/336 -f 244/620/337 274/621/337 263/566/337 -f 263/566/338 274/621/338 284/596/338 -f 274/621/339 332/597/339 284/596/339 -f 421/610/340 430/611/340 420/547/340 -f 680/575/341 513/558/341 522/622/341 -f 488/623/342 477/624/342 1354/625/342 -f 323/476/343 359/475/343 393/585/343 -f 455/626/344 470/554/344 469/386/344 -f 1631/627/345 1912/628/345 1531/629/345 -f 227/505/346 171/414/346 326/630/346 -f 74/619/347 65/631/347 53/617/347 -f 998/449/348 968/632/348 954/577/348 -f 478/633/349 523/634/349 488/623/349 -f 316/356/350 558/635/350 2393/636/350 -f 1433/62/351 1463/637/351 1462/638/351 -f 329/606/352 1380/151/352 1287/27/352 -f 356/639/353 355/546/353 332/597/353 -f 356/639/354 366/609/354 355/546/354 -f 366/609/355 386/640/355 400/500/355 -f 494/641/356 483/568/356 430/611/356 -f 543/642/357 564/613/357 517/569/357 -f 528/643/358 563/614/358 564/613/358 -f 417/644/359 424/645/359 440/586/359 -f 468/370/360 488/369/360 1354/646/360 -f 911/402/361 406/538/361 405/403/361 -f 609/647/362 67/445/362 40/444/362 -f 123/481/363 142/501/363 151/503/363 -f 1441/128/364 42/202/364 1386/129/364 -f 1287/27/365 1380/151/365 1403/39/365 -f 2592/648/366 2424/245/366 3437/244/366 -f 1657/649/367 2625/650/367 1662/651/367 -f 2753/652/368 2723/653/368 2640/654/368 -f 366/609/369 378/655/369 386/640/369 -f 400/500/370 386/640/370 421/610/370 -f 494/641/371 508/612/371 483/568/371 -f 508/612/372 543/642/372 517/569/372 -f 212/470/373 224/480/373 200/471/373 -f 3445/354/374 3511/298/374 3497/656/374 -f 1171/657/375 558/635/375 316/356/375 -f 90/658/376 89/659/376 74/619/376 -f 168/506/377 180/526/377 167/660/377 -f 154/377/378 160/661/378 136/378/378 -f 3506/91/379 2768/662/379 3427/92/379 -f 3494/663/380 3475/664/380 3459/665/380 -f 251/48/381 1906/47/381 262/666/381 -f 1525/667/382 1549/668/382 58/211/382 -f 1228/519/383 1310/118/383 1334/17/383 -f 2769/669/384 2615/287/384 2467/289/384 -f 252/670/385 244/620/385 3287/671/385 -f 274/621/386 285/672/386 332/597/386 -f 332/597/387 285/672/387 356/639/387 -f 356/639/388 378/655/388 366/609/388 -f 421/610/389 431/673/389 430/611/389 -f 431/673/390 494/641/390 430/611/390 -f 240/465/391 247/473/391 212/470/391 -f 125/572/392 281/415/392 171/414/392 -f 310/433/393 324/474/393 323/476/393 -f 202/674/394 756/675/394 144/676/394 -f 2643/677/395 1928/678/395 2879/679/395 -f 2894/680/396 2615/287/396 2766/681/396 -f 3287/671/397 3095/682/397 252/670/397 -f 3371/683/398 3381/684/398 3370/685/398 -f 300/686/399 274/621/399 244/620/399 -f 274/621/400 300/686/400 285/672/400 -f 342/687/401 378/655/401 356/639/401 -f 285/672/402 342/687/402 356/639/402 -f 494/641/403 543/642/403 508/612/403 -f 543/642/404 544/688/404 564/613/404 -f 544/688/405 541/689/405 564/613/405 -f 564/613/406 541/689/406 528/643/406 -f 470/690/407 524/691/407 469/692/407 -f 418/539/408 442/555/408 441/693/408 -f 201/694/409 2168/695/409 427/696/409 -f 454/534/410 1313/697/410 424/579/410 -f 225/509/411 260/463/411 181/436/411 -f 2264/698/412 3479/312/412 2253/699/412 -f 425/553/413 426/700/413 470/554/413 -f 142/501/414 123/481/414 117/533/414 -f 2552/701/415 1071/702/415 1059/703/415 -f 3457/704/416 2754/705/416 3482/706/416 -f 20/707/417 2067/708/417 2047/593/417 -f 126/709/418 155/710/418 154/377/418 -f 583/711/419 22/712/419 1488/713/419 -f 23/714/420 22/712/420 583/711/420 -f 22/712/421 23/714/421 36/715/421 -f 155/710/422 172/716/422 154/377/422 -f 1540/26/423 36/25/423 1549/668/423 -f 252/670/424 300/686/424 244/620/424 -f 300/686/425 342/687/425 285/672/425 -f 386/640/426 411/717/426 421/610/426 -f 421/610/427 411/717/427 431/673/427 -f 111/389/428 89/388/428 116/483/428 -f 470/690/429 489/718/429 524/691/429 -f 524/719/430 489/466/430 556/582/430 -f 548/584/431 162/583/431 782/604/431 -f 203/720/432 437/721/432 750/722/432 -f 1127/490/433 438/489/433 1133/723/433 -f 2607/363/434 2634/362/434 2652/724/434 -f 1804/725/435 1778/726/435 1779/727/435 -f 361/728/436 426/700/436 425/553/436 -f 1494/729/437 2469/730/437 1693/731/437 -f 2721/732/438 2750/733/438 2720/734/438 -f 2107/735/439 1666/736/439 1350/737/439 -f 286/738/440 300/686/440 252/670/440 -f 301/739/441 342/687/441 300/686/441 -f 342/687/442 387/740/442 378/655/442 -f 378/655/443 387/740/443 386/640/443 -f 386/640/444 387/740/444 411/717/444 -f 431/673/445 448/741/445 494/641/445 -f 494/641/446 448/741/446 543/642/446 -f 543/642/447 533/742/447 544/688/447 -f 789/743/448 914/744/448 541/689/448 -f 65/631/449 74/619/449 89/659/449 -f 180/526/450 200/471/450 196/479/450 -f 682/745/451 680/575/451 522/622/451 -f 1142/746/452 1208/332/452 1193/334/452 -f 132/441/453 152/502/453 142/501/453 -f 186/469/454 200/471/454 180/526/454 -f 1125/747/455 1129/748/455 1106/749/455 -f 1117/750/456 1015/751/456 1092/752/456 -f 1747/81/457 1041/420/457 182/260/457 -f 3489/753/458 3508/754/458 3500/325/458 -f 59/755/459 80/209/459 58/211/459 -f 3207/756/460 174/757/460 2819/758/460 -f 2894/680/461 2766/681/461 3428/759/461 -f 252/670/462 234/760/462 286/738/462 -f 301/739/463 300/686/463 286/738/463 -f 387/740/464 388/761/464 411/717/464 -f 411/717/465 448/741/465 431/673/465 -f 495/762/466 533/742/466 543/642/466 -f 448/741/467 495/762/467 543/642/467 -f 180/526/468 157/437/468 186/469/468 -f 556/763/469 539/764/469 524/691/469 -f 782/604/470 1389/603/470 756/675/470 -f 1252/765/471 1242/766/471 1267/767/471 -f 1242/766/472 1292/51/472 1285/136/472 -f 2182/768/473 2006/769/473 2141/770/473 -f 379/771/474 387/740/474 342/687/474 -f 388/761/475 432/772/475 411/717/475 -f 432/772/476 473/773/476 411/717/476 -f 473/773/477 448/741/477 411/717/477 -f 473/773/478 495/762/478 448/741/478 -f 496/774/479 544/688/479 533/742/479 -f 544/688/480 550/775/480 541/689/480 -f 664/210/481 80/209/481 1653/776/481 -f 187/484/482 260/463/482 186/469/482 -f 3498/777/483 3430/778/483 3445/354/483 -f 186/469/484 260/463/484 240/465/484 -f 393/585/485 359/475/485 417/644/485 -f 538/779/486 548/584/486 645/780/486 -f 3464/20/487 1830/781/487 3469/782/487 -f 23/783/488 60/784/488 59/755/488 -f 68/785/489 1578/786/489 80/787/489 -f 1456/13/490 1372/104/490 325/49/490 -f 1229/11/491 1456/13/491 325/49/491 -f 3433/349/492 3477/788/492 3501/350/492 -f 234/760/493 275/789/493 286/738/493 -f 301/739/494 333/790/494 342/687/494 -f 333/790/495 379/771/495 342/687/495 -f 387/740/496 379/771/496 388/761/496 -f 495/762/497 496/774/497 533/742/497 -f 123/481/498 168/506/498 150/791/498 -f 454/534/499 1354/625/499 1313/697/499 -f 337/792/500 359/475/500 324/474/500 -f 540/793/501 948/794/501 549/795/501 -f 103/379/502 136/378/502 102/796/502 -f 145/797/503 155/710/503 126/709/503 -f 548/584/504 782/604/504 645/780/504 -f 2977/798/505 956/799/505 2429/800/505 -f 937/801/506 55/802/506 313/803/506 -f 93/804/507 103/379/507 102/796/507 -f 385/9/508 476/12/508 1229/11/508 -f 2656/805/509 2691/806/509 2668/807/509 -f 275/789/510 287/808/510 286/738/510 -f 287/808/511 301/739/511 286/738/511 -f 287/808/512 333/790/512 301/739/512 -f 379/771/513 389/809/513 388/761/513 -f 389/809/514 432/772/514 388/761/514 -f 473/773/515 474/810/515 495/762/515 -f 495/762/516 474/810/516 496/774/516 -f 550/775/517 789/743/517 541/689/517 -f 78/811/518 93/804/518 102/796/518 -f 197/812/519 203/720/519 172/716/519 -f 3228/813/520 3241/309/520 3190/308/520 -f 54/618/521 66/394/521 74/619/521 -f 793/814/522 794/815/522 847/816/522 -f 60/784/523 81/817/523 68/818/523 -f 81/819/524 1578/786/524 68/785/524 -f 2083/820/525 2117/306/525 2065/821/525 -f 1747/81/526 158/80/526 1041/420/526 -f 20/707/527 2087/822/527 2067/708/527 -f 1458/291/528 346/229/528 2345/347/528 -f 245/823/529 234/760/529 235/824/529 -f 245/823/530 275/789/530 234/760/530 -f 319/825/531 333/790/531 287/808/531 -f 367/826/532 379/771/532 333/790/532 -f 474/810/533 545/827/533 496/774/533 -f 545/827/534 544/688/534 496/774/534 -f 545/827/535 550/775/535 544/688/535 -f 550/775/536 55/802/536 789/743/536 -f 563/614/537 914/744/537 757/828/537 -f 79/573/538 125/572/538 171/414/538 -f 38/396/539 66/390/539 54/829/539 -f 112/376/540 117/533/540 89/388/540 -f 271/204/541 668/830/541 811/831/541 -f 271/204/542 811/831/542 1241/33/542 -f 226/832/543 1224/833/543 1100/834/543 -f 94/835/544 1578/786/544 81/819/544 -f 94/835/545 1607/836/545 1578/786/545 -f 3502/837/546 3465/838/546 3455/839/546 -f 302/840/547 287/808/547 275/789/547 -f 319/825/548 367/826/548 333/790/548 -f 367/826/549 389/809/549 379/771/549 -f 433/841/550 432/772/550 389/809/550 -f 432/772/551 449/842/551 473/773/551 -f 473/773/552 449/842/552 474/810/552 -f 406/538/553 441/693/553 424/645/553 -f 2872/843/554 2198/844/554 2454/845/554 -f 2290/846/555 2193/847/555 2443/848/555 -f 2917/849/556 2927/850/556 2916/851/556 -f 162/583/557 948/794/557 890/852/557 -f 359/475/558 405/403/558 417/644/558 -f 549/795/559 948/794/559 162/583/559 -f 609/647/560 75/853/560 67/445/560 -f 361/728/561 915/854/561 426/700/561 -f 1320/855/562 1593/205/562 312/32/562 -f 1142/746/563 964/581/563 1208/332/563 -f 3453/856/564 2669/857/564 1897/858/564 -f 606/859/565 593/860/565 60/861/565 -f 593/860/566 81/819/566 60/861/566 -f 480/131/567 385/9/567 1421/54/567 -f 1669/862/568 443/295/568 183/194/568 -f 276/863/569 275/789/569 245/823/569 -f 276/863/570 302/840/570 275/789/570 -f 319/825/571 287/808/571 302/840/571 -f 369/864/572 433/841/572 389/809/572 -f 432/772/573 433/841/573 449/842/573 -f 449/842/574 497/865/574 474/810/574 -f 497/865/575 545/827/575 474/810/575 -f 2174/866/576 977/867/576 2178/868/576 -f 3434/869/577 3441/870/577 3468/871/577 -f 2768/662/578 3461/270/578 3473/872/578 -f 74/873/579 66/390/579 90/374/579 -f 811/831/580 471/31/580 1241/33/580 -f 406/538/581 418/539/581 441/693/581 -f 501/556/582 537/598/582 547/557/582 -f 82/874/583 81/819/583 593/860/583 -f 82/874/584 94/835/584 81/819/584 -f 270/231/585 382/132/585 1409/171/585 -f 235/824/586 217/875/586 245/823/586 -f 367/826/587 369/864/587 389/809/587 -f 497/865/588 518/876/588 545/827/588 -f 518/876/589 546/877/589 545/827/589 -f 545/827/590 546/877/590 550/775/590 -f 339/878/591 55/802/591 550/775/591 -f 489/718/592 525/879/592 556/763/592 -f 153/440/593 157/437/593 152/502/593 -f 347/401/594 337/792/594 858/880/594 -f 525/468/595 540/793/595 549/795/595 -f 151/503/596 180/526/596 168/506/596 -f 2277/881/597 1120/126/597 1025/882/597 -f 3469/782/598 3493/399/598 3508/21/598 -f 127/883/599 94/835/599 82/874/599 -f 1262/146/600 113/143/600 365/145/600 -f 1960/884/601 833/885/601 1935/886/601 -f 1687/887/602 206/888/602 217/875/602 -f 217/875/603 236/889/603 245/823/603 -f 245/823/604 236/889/604 276/863/604 -f 303/890/605 302/840/605 276/863/605 -f 368/891/606 319/825/606 302/840/606 -f 303/890/607 368/891/607 302/840/607 -f 368/891/608 367/826/608 319/825/608 -f 367/826/609 368/891/609 369/864/609 -f 433/841/610 484/892/610 449/842/610 -f 449/842/611 484/892/611 497/865/611 -f 383/893/612 339/878/612 550/775/612 -f 546/877/613 383/893/613 550/775/613 -f 339/894/614 313/895/614 55/896/614 -f 968/632/615 996/897/615 3063/898/615 -f 629/899/616 75/552/616 609/900/616 -f 471/31/617 360/901/617 312/32/617 -f 1489/564/618 2016/88/618 2005/237/618 -f 556/582/619 525/468/619 162/583/619 -f 127/883/620 146/902/620 138/903/620 -f 206/888/621 236/889/621 217/875/621 -f 236/889/622 264/904/622 276/863/622 -f 264/904/623 303/890/623 276/863/623 -f 433/841/624 461/905/624 484/892/624 -f 484/892/625 518/876/625 497/865/625 -f 339/894/626 479/906/626 1328/907/626 -f 1037/518/627 1067/908/627 1044/909/627 -f 1199/493/628 1194/601/628 1211/278/628 -f 197/179/629 44/181/629 203/910/629 -f 1384/574/630 477/599/630 501/556/630 -f 360/901/631 1320/855/631 312/32/631 -f 1567/911/632 1798/912/632 1597/913/632 -f 1014/914/633 803/915/633 1161/916/633 -f 593/860/634 32/917/634 82/874/634 -f 83/918/635 127/883/635 82/874/635 -f 146/902/636 175/919/636 1639/920/636 -f 1687/887/637 1639/920/637 175/919/637 -f 175/919/638 206/888/638 1687/887/638 -f 303/890/639 334/921/639 368/891/639 -f 334/921/640 370/922/640 368/891/640 -f 368/891/641 370/922/641 369/864/641 -f 370/922/642 401/923/642 433/841/642 -f 369/864/643 370/922/643 433/841/643 -f 401/923/644 461/905/644 433/841/644 -f 484/892/645 509/924/645 518/876/645 -f 479/925/646 339/878/646 383/893/646 -f 1055/926/647 1061/517/647 1045/405/647 -f 316/356/648 2393/636/648 362/357/648 -f 348/927/649 915/854/649 361/728/649 -f 1320/855/650 327/928/650 106/929/650 -f 83/918/651 82/874/651 32/917/651 -f 83/918/652 95/930/652 127/883/652 -f 127/883/653 95/930/653 146/902/653 -f 288/931/654 303/890/654 264/904/654 -f 288/931/655 334/921/655 303/890/655 -f 334/921/656 357/932/656 370/922/656 -f 461/905/657 509/924/657 484/892/657 -f 518/876/658 534/933/658 546/877/658 -f 157/437/659 187/484/659 186/469/659 -f 1120/126/660 964/581/660 1142/746/660 -f 89/388/661 117/533/661 116/483/661 -f 556/582/662 548/584/662 539/934/662 -f 852/935/663 41/936/663 1320/855/663 -f 360/901/664 852/935/664 1320/855/664 -f 41/936/665 327/928/665 1320/855/665 -f 1831/937/666 1577/938/666 1599/939/666 -f 293/464/667 858/880/667 266/472/667 -f 1375/410/668 237/940/668 1255/941/668 -f 1979/942/669 2122/943/669 1206/944/669 -f 32/917/670 45/945/670 83/918/670 -f 95/930/671 139/946/671 146/902/671 -f 146/902/672 139/946/672 175/919/672 -f 175/919/673 192/947/673 206/888/673 -f 192/947/674 193/948/674 206/888/674 -f 193/948/675 246/949/675 206/888/675 -f 246/949/676 236/889/676 206/888/676 -f 246/949/677 264/904/677 236/889/677 -f 288/931/678 304/950/678 334/921/678 -f 334/921/679 304/950/679 357/932/679 -f 304/950/680 358/951/680 357/932/680 -f 357/932/681 401/923/681 370/922/681 -f 401/923/682 434/952/682 461/905/682 -f 518/876/683 509/924/683 534/933/683 -f 2696/953/684 2767/226/684 964/134/684 -f 2005/237/685 1976/109/685 1489/564/685 -f 1025/882/686 1120/126/686 1142/746/686 -f 139/946/687 176/954/687 175/919/687 -f 176/954/688 192/947/688 175/919/688 -f 246/949/689 277/955/689 264/904/689 -f 277/955/690 288/931/690 264/904/690 -f 534/933/691 383/893/691 546/877/691 -f 523/956/692 539/934/692 538/779/692 -f 1237/957/693 106/929/693 19/958/693 -f 37/959/694 46/960/694 45/945/694 -f 46/960/695 83/918/695 45/945/695 -f 128/961/696 139/946/696 95/930/696 -f 193/948/697 253/962/697 246/949/697 -f 358/951/698 371/963/698 357/932/698 -f 357/932/699 371/963/699 401/923/699 -f 371/963/700 412/964/700 401/923/700 -f 412/964/701 434/952/701 401/923/701 -f 434/952/702 450/965/702 461/905/702 -f 450/965/703 509/924/703 461/905/703 -f 450/965/704 498/966/704 509/924/704 -f 509/924/705 498/966/705 534/933/705 -f 75/552/706 91/375/706 67/391/706 -f 41/936/707 297/967/707 327/928/707 -f 1551/968/708 84/969/708 83/918/708 -f 83/918/709 84/969/709 95/930/709 -f 176/954/710 193/948/710 192/947/710 -f 278/970/711 277/955/711 246/949/711 -f 305/971/712 288/931/712 277/955/712 -f 288/931/713 305/971/713 304/950/713 -f 304/950/714 305/971/714 358/951/714 -f 412/964/715 451/972/715 434/952/715 -f 451/972/716 450/965/716 434/952/716 -f 534/933/717 565/973/717 383/893/717 -f 565/973/718 135/974/718 383/893/718 -f 383/893/719 135/974/719 479/925/719 -f 213/975/720 502/976/720 479/925/720 -f 971/977/721 970/978/721 961/979/721 -f 337/792/722 405/403/722 359/475/722 -f 539/934/723 548/584/723 538/779/723 -f 326/630/724 170/980/724 227/505/724 -f 297/967/725 18/981/725 327/928/725 -f 327/928/726 18/981/726 19/958/726 -f 1153/360/727 3447/982/727 1064/983/727 -f 385/9/728 456/8/728 476/12/728 -f 84/969/729 128/961/729 95/930/729 -f 147/984/730 176/954/730 139/946/730 -f 253/962/731 278/970/731 246/949/731 -f 278/970/732 305/971/732 277/955/732 -f 335/985/733 380/986/733 371/963/733 -f 358/951/734 335/985/734 371/963/734 -f 371/963/735 390/987/735 412/964/735 -f 462/988/736 498/966/736 450/965/736 -f 267/989/737 479/925/737 135/974/737 -f 267/989/738 213/975/738 479/925/738 -f 132/441/739 142/501/739 117/533/739 -f 247/473/740 259/435/740 224/480/740 -f 19/958/741 18/981/741 1237/957/741 -f 2332/990/742 1458/291/742 2345/347/742 -f 129/991/743 139/946/743 128/961/743 -f 129/991/744 147/984/744 139/946/744 -f 207/992/745 253/962/745 193/948/745 -f 335/985/746 358/951/746 305/971/746 -f 343/993/747 380/986/747 335/985/747 -f 371/963/748 380/986/748 390/987/748 -f 451/972/749 462/988/749 450/965/749 -f 18/981/750 559/994/750 1237/957/750 -f 562/995/751 608/996/751 2/997/751 -f 2093/338/752 2120/186/752 577/185/752 -f 306/998/753 305/971/753 278/970/753 -f 306/998/754 335/985/754 305/971/754 -f 390/987/755 435/999/755 412/964/755 -f 463/1000/756 451/972/756 412/964/756 -f 435/999/757 463/1000/757 412/964/757 -f 519/1001/758 534/933/758 498/966/758 -f 519/1001/759 565/973/759 534/933/759 -f 67/391/760 91/375/760 90/374/760 -f 3424/1002/761 3492/1003/761 3426/1004/761 -f 441/693/762 442/555/762 455/626/762 -f 18/981/763 562/1005/763 559/994/763 -f 943/1006/764 1297/1007/764 684/1008/764 -f 3470/281/765 3497/656/765 3490/1009/765 -f 84/969/766 1580/1010/766 128/961/766 -f 164/1011/767 176/954/767 147/984/767 -f 164/1011/768 193/948/768 176/954/768 -f 164/1011/769 207/992/769 193/948/769 -f 289/1012/770 306/998/770 278/970/770 -f 343/993/771 390/987/771 380/986/771 -f 499/1013/772 462/988/772 451/972/772 -f 463/1000/773 499/1013/773 451/972/773 -f 552/1014/774 135/974/774 565/973/774 -f 552/1014/775 267/989/775 135/974/775 -f 959/576/776 998/449/776 954/577/776 -f 454/534/777 468/536/777 1354/625/777 -f 524/691/778 539/764/778 523/634/778 -f 181/436/779 260/463/779 187/484/779 -f 1300/150/780 1423/149/780 326/1015/780 -f 2030/87/781 2041/1016/781 2040/1017/781 -f 218/1018/782 207/992/782 164/1011/782 -f 218/1018/783 230/1019/783 207/992/783 -f 230/1019/784 253/962/784 207/992/784 -f 230/1019/785 254/1020/785 253/962/785 -f 253/962/786 254/1020/786 278/970/786 -f 344/1021/787 335/985/787 306/998/787 -f 344/1021/788 343/993/788 335/985/788 -f 344/1021/789 372/1022/789 343/993/789 -f 343/993/790 372/1022/790 390/987/790 -f 390/987/791 413/1023/791 435/999/791 -f 519/1001/792 498/966/792 462/988/792 -f 499/1013/793 519/1001/793 462/988/793 -f 535/1024/794 565/973/794 519/1001/794 -f 1199/493/795 1211/278/795 922/451/795 -f 998/449/796 1018/1025/796 997/1026/796 -f 1018/404/797 1013/406/797 997/1027/797 -f 152/502/798 157/437/798 180/526/798 -f 54/829/799 53/478/799 38/396/799 -f 143/1028/800 133/439/800 124/507/800 -f 524/691/801 523/634/801 478/633/801 -f 559/994/802 2/1029/802 419/1030/802 -f 353/1031/803 560/1032/803 25/1033/803 -f 1183/1034/804 1465/1035/804 1438/1036/804 -f 1805/1037/805 1838/1038/805 3510/1039/805 -f 42/202/806 134/203/806 1386/129/806 -f 114/1040/807 129/991/807 128/961/807 -f 148/1041/808 147/984/808 129/991/808 -f 148/1041/809 164/1011/809 147/984/809 -f 254/1020/810 289/1012/810 278/970/810 -f 289/1012/811 344/1021/811 306/998/811 -f 391/1042/812 413/1023/812 390/987/812 -f 1149/1043/813 922/451/813 594/1044/813 -f 198/1045/814 197/812/814 172/716/814 -f 1772/1046/815 1733/1047/815 1734/1048/815 -f 2/1029/816 560/1032/816 419/1030/816 -f 419/1049/817 560/1050/817 353/1051/817 -f 2967/1052/818 957/1053/818 956/1054/818 -f 167/660/819 180/526/819 196/479/819 -f 414/50/820 42/202/820 1441/128/820 -f 1450/55/821 414/50/821 1441/128/821 -f 165/1055/822 218/1018/822 164/1011/822 -f 255/1056/823 230/1019/823 218/1018/823 -f 255/1056/824 254/1020/824 230/1019/824 -f 289/1012/825 307/1057/825 344/1021/825 -f 307/1057/826 372/1022/826 344/1021/826 -f 391/1042/827 390/987/827 372/1022/827 -f 402/1058/828 413/1023/828 391/1042/828 -f 413/1023/829 436/1059/829 435/999/829 -f 435/999/830 436/1059/830 463/1000/830 -f 485/1060/831 499/1013/831 463/1000/831 -f 485/1060/832 519/1001/832 499/1013/832 -f 485/1060/833 535/1024/833 519/1001/833 -f 552/1014/834 565/973/834 535/1024/834 -f 680/575/835 774/1061/835 1384/574/835 -f 102/796/836 670/1062/836 92/1063/836 -f 56/1064/837 554/600/837 280/1065/837 -f 323/476/838 375/1066/838 322/1067/838 -f 469/386/839 524/719/839 478/368/839 -f 2005/237/840 2015/117/840 1975/110/840 -f 148/1041/841 129/991/841 114/1040/841 -f 165/1055/842 164/1011/842 148/1041/842 -f 165/1055/843 208/1068/843 218/1018/843 -f 208/1068/844 255/1056/844 218/1018/844 -f 255/1056/845 219/1069/845 254/1020/845 -f 289/1070/846 1661/1071/846 307/1072/846 -f 1661/1071/847 1720/1073/847 307/1072/847 -f 1197/1074/848 3486/1075/848 2702/1076/848 -f 1720/1073/849 1594/1077/849 307/1072/849 -f 1594/1078/850 391/1042/850 372/1022/850 -f 436/1059/851 464/1079/851 463/1000/851 -f 463/1000/852 464/1079/852 485/1060/852 -f 559/1080/853 419/1049/853 353/1051/853 -f 2499/1081/854 2161/1082/854 2096/382/854 -f 289/1070/855 254/1083/855 1661/1071/855 -f 212/470/856 247/473/856 224/480/856 -f 455/626/857 469/386/857 441/693/857 -f 469/386/858 468/370/858 441/693/858 -f 1981/58/859 1378/594/859 1154/364/859 -f 156/103/860 414/50/860 1450/55/860 -f 1406/173/861 104/56/861 1346/148/861 -f 1222/1084/862 1224/833/862 226/832/862 -f 3476/355/863 3445/354/863 3497/656/863 -f 402/1058/864 403/1085/864 413/1023/864 -f 413/1023/865 403/1085/865 436/1059/865 -f 1/1086/866 552/1014/866 535/1024/866 -f 1/1086/867 26/1087/867 552/1014/867 -f 26/1087/868 294/1088/868 552/1014/868 -f 1772/1046/869 1771/1089/869 1733/1047/869 -f 1771/1089/870 1770/1090/870 1733/1047/870 -f 2976/1091/871 956/799/871 2977/798/871 -f 168/506/872 167/660/872 150/791/872 -f 393/585/873 417/644/873 440/586/873 -f 996/897/874 987/1092/874 3063/898/874 -f 754/1093/875 272/1094/875 1462/1095/875 -f 1267/191/876 1100/834/876 1252/1096/876 -f 3496/1097/877 3503/1098/877 3452/1099/877 -f 148/1041/878 114/1040/878 122/1100/878 -f 148/1041/879 177/1101/879 165/1055/879 -f 165/1055/880 177/1101/880 208/1068/880 -f 177/1101/881 209/1102/881 208/1068/881 -f 209/1102/882 219/1069/882 255/1056/882 -f 208/1068/883 209/1102/883 255/1056/883 -f 1937/1103/884 1651/1104/884 1633/1105/884 -f 3448/1106/885 3473/1107/885 3481/1108/885 -f 1375/410/886 1467/283/886 237/940/886 -f 402/1058/887 1610/1109/887 403/1085/887 -f 465/1110/888 485/1060/888 464/1079/888 -f 2358/1111/889 2134/1112/889 2221/1113/889 -f 59/755/890 60/784/890 80/209/890 -f 112/376/891 132/441/891 117/533/891 -f 3236/1114/892 3264/1115/892 3460/1116/892 -f 1118/1117/893 1180/324/893 3485/326/893 -f 554/600/894 227/505/894 280/1065/894 -f 323/476/895 393/585/895 375/1066/895 -f 1421/54/896 156/103/896 1450/55/896 -f 69/1118/897 1553/1119/897 1543/1120/897 -f 69/1118/898 1583/1121/898 1553/1119/898 -f 177/1122/899 1680/1123/899 209/1124/899 -f 21/230/900 270/231/900 514/123/900 -f 1771/1089/901 1800/1125/901 1770/1090/901 -f 1471/430/902 21/230/902 1457/1126/902 -f 1240/1127/903 1261/29/903 2206/1128/903 -f 2768/662/904 3473/872/904 3427/92/904 -f 403/1085/905 422/1129/905 436/1059/905 -f 436/1059/906 422/1129/906 464/1079/906 -f 465/1110/907 520/1130/907 485/1060/907 -f 520/1130/908 535/1024/908 485/1060/908 -f 3430/778/909 3511/298/909 3445/354/909 -f 2248/1131/910 2309/1132/910 2297/1133/910 -f 858/880/911 324/474/911 266/472/911 -f 196/479/912 224/480/912 239/1134/912 -f 522/622/913 513/558/913 56/1064/913 -f 247/473/914 266/472/914 310/433/914 -f 1771/1089/915 1808/1135/915 1800/1125/915 -f 49/1136/916 61/1137/916 48/235/916 -f 61/1137/917 1543/233/917 48/235/917 -f 1517/1138/918 49/1136/918 1527/1139/918 -f 652/1140/919 1920/1141/919 2229/1142/919 -f 1453/1143/920 1381/60/920 330/1144/920 -f 237/940/921 1467/283/921 1300/150/921 -f 492/1145/922 1466/1146/922 1685/218/922 -f 1808/1147/923 1817/177/923 1800/1148/923 -f 1370/53/924 1381/60/924 1395/1149/924 -f 422/1129/925 1664/1150/925 464/1079/925 -f 1664/1150/926 465/1110/926 464/1079/926 -f 520/1130/927 5/1151/927 535/1024/927 -f 5/1151/928 1/1086/928 535/1024/928 -f 268/1152/929 294/1088/929 26/1087/929 -f 268/1152/930 1345/1153/930 294/1088/930 -f 28/1154/931 634/1155/931 340/1156/931 -f 92/1063/932 78/811/932 102/796/932 -f 523/956/933 538/779/933 537/598/933 -f 61/1157/934 69/1118/934 1543/1120/934 -f 85/1158/935 1583/1121/935 69/1118/935 -f 85/1158/936 98/1159/936 97/1160/936 -f 1583/1121/937 85/1158/937 97/1160/937 -f 1614/1161/938 1601/1162/938 97/1160/938 -f 98/1159/939 1614/1161/939 97/1160/939 -f 946/486/940 121/1163/940 1330/487/940 -f 1274/1164/941 270/231/941 1409/171/941 -f 1373/15/942 1417/1165/942 273/1166/942 -f 514/123/943 270/231/943 1274/1164/943 -f 1230/1167/944 1252/1096/944 1224/833/944 -f 1610/1109/945 422/1129/945 403/1085/945 -f 510/1168/946 520/1130/946 465/1110/946 -f 311/1169/947 268/1152/947 26/1087/947 -f 1094/1170/948 1102/1171/948 1114/1172/948 -f 1091/513/949 558/635/949 1171/657/949 -f 3170/1173/950 78/811/950 92/1063/950 -f 124/507/951 132/441/951 112/376/951 -f 1389/603/952 890/852/952 604/1174/952 -f 1077/1175/953 1067/908/953 1094/1170/953 -f 61/1157/954 85/1158/954 69/1118/954 -f 2065/821/955 2117/306/955 2082/307/955 -f 1986/1176/956 2030/87/956 2004/1177/956 -f 352/36/957 12/223/957 457/1178/957 -f 1303/1179/958 768/1180/958 1291/1181/958 -f 465/1110/959 452/1182/959 510/1168/959 -f 26/1183/960 1/1184/960 311/1185/960 -f 311/1169/961 1/1086/961 5/1151/961 -f 240/465/962 212/470/962 186/469/962 -f 2223/1186/963 2157/1187/963 2302/1188/963 -f 162/583/964 890/852/964 1389/603/964 -f 259/435/965 247/473/965 310/433/965 -f 537/598/966 125/572/966 547/557/966 -f 50/1189/967 61/1137/967 49/1136/967 -f 61/1157/968 86/1190/968 85/1158/968 -f 86/1190/969 98/1159/969 85/1158/969 -f 108/1191/970 1614/1192/970 98/1193/970 -f 2153/1194/971 349/1195/971 1507/1196/971 -f 3498/1197/972 1674/1198/972 3430/1199/972 -f 1817/177/973 1846/1200/973 1845/178/973 -f 2689/1201/974 1969/1202/974 2688/1203/974 -f 553/1204/975 5/1151/975 520/1130/975 -f 311/1185/976 555/1205/976 268/595/976 -f 782/604/977 756/675/977 202/674/977 -f 442/555/978 470/554/978 455/626/978 -f 1299/102/979 555/1205/979 134/203/979 -f 50/1206/980 62/1207/980 61/1157/980 -f 62/1207/981 86/1190/981 61/1157/981 -f 99/1208/982 98/1159/982 86/1190/982 -f 99/1209/983 108/1210/983 98/1211/983 -f 2087/822/984 57/1212/984 1989/1213/984 -f 1960/884/985 577/185/985 833/885/985 -f 6/1214/986 410/1215/986 1389/603/986 -f 452/1182/987 1544/1216/987 510/1168/987 -f 553/1204/988 520/1130/988 510/1168/988 -f 249/1217/989 311/1169/989 5/1151/989 -f 3140/1218/990 3128/1219/990 3113/1220/990 -f 144/676/991 237/442/991 490/416/991 -f 79/573/992 171/414/992 248/504/992 -f 1193/334/993 1207/333/993 1175/1221/993 -f 155/710/994 161/1222/994 172/716/994 -f 161/1222/995 198/1045/995 172/716/995 -f 1253/1223/996 1330/1224/996 617/1225/996 -f 1472/348/997 1471/430/997 1413/1226/997 -f 190/454/998 173/73/998 1451/90/998 -f 577/185/999 2088/187/999 833/885/999 -f 21/230/1000 514/123/1000 1457/1126/1000 -f 1381/60/1001 352/36/1001 330/1144/1001 -f 1788/1227/1002 1810/1228/1002 1787/1229/1002 -f 1332/76/1003 1254/78/1003 1358/1230/1003 -f 1544/1216/1004 486/1231/1004 510/1168/1004 -f 486/1231/1005 521/1232/1005 510/1168/1005 -f 521/1232/1006 553/1204/1006 510/1168/1006 -f 553/1204/1007 249/1217/1007 5/1151/1007 -f 363/1233/1008 555/1205/1008 311/1185/1008 -f 620/1234/1009 767/1235/1009 243/1236/1009 -f 1195/453/1010 1201/511/1010 1200/1237/1010 -f 62/1207/1011 70/1238/1011 86/1190/1011 -f 100/1239/1012 99/1208/1012 86/1190/1012 -f 70/1240/1013 100/1241/1013 86/1242/1013 -f 100/1243/1014 1616/1244/1014 108/1191/1014 -f 99/1209/1015 100/1241/1015 108/1210/1015 -f 108/1191/1016 1616/1244/1016 1615/1245/1016 -f 1285/192/1017 1370/1246/1017 1217/193/1017 -f 1705/1247/1018 1576/1248/1018 320/1249/1018 -f 1545/1250/1019 1558/1251/1019 1294/1252/1019 -f 363/1253/1020 311/1169/1020 249/1217/1020 -f 1123/424/1021 1156/452/1021 1146/425/1021 -f 690/1254/1022 143/1028/1022 124/507/1022 -f 525/468/1023 549/795/1023 162/583/1023 -f 1661/1255/1024 254/1020/1024 219/1069/1024 -f 1383/1256/1025 273/1166/1025 1245/1257/1025 -f 1088/111/1026 1855/113/1026 1147/261/1026 -f 1539/70/1027 256/1258/1027 265/71/1027 -f 265/71/1028 279/1259/1028 1576/1248/1028 -f 1413/1226/1029 1427/1260/1029 1362/1261/1029 -f 1413/1226/1030 1471/430/1030 1427/1260/1030 -f 1668/1262/1031 500/1263/1031 486/1231/1031 -f 500/1263/1032 521/1232/1032 486/1231/1032 -f 17/1264/1033 553/1204/1033 521/1232/1033 -f 241/1265/1034 363/1253/1034 249/1217/1034 -f 1094/1170/1035 1067/908/1035 1102/1171/1035 -f 1002/358/1036 3449/1266/1036 3495/359/1036 -f 2689/1201/1037 2730/1267/1037 1969/1202/1037 -f 1243/19/1038 555/1205/1038 1299/102/1038 -f 840/510/1039 858/880/1039 293/464/1039 -f 260/463/1040 840/510/1040 293/464/1040 -f 50/1189/1041 63/1268/1041 62/1269/1041 -f 63/1270/1042 70/1238/1042 62/1207/1042 -f 70/1240/1043 87/1271/1043 100/1241/1043 -f 100/1241/1044 109/1272/1044 1616/1273/1044 -f 1417/1165/1045 137/495/1045 273/1166/1045 -f 1472/348/1046 1413/1226/1046 2346/1274/1046 -f 265/71/1047 256/1258/1047 279/1259/1047 -f 279/1259/1048 320/1249/1048 1576/1248/1048 -f 321/1275/1049 1698/1276/1049 320/1249/1049 -f 3427/92/1050 3448/1277/1050 3444/93/1050 -f 500/1263/1051 487/1278/1051 521/1232/1051 -f 487/1278/1052 17/1264/1052 521/1232/1052 -f 15/1279/1053 249/1217/1053 553/1204/1053 -f 3469/782/1054 3508/21/1054 3464/20/1054 -f 525/468/1055 899/467/1055 540/793/1055 -f 33/446/1056 581/1280/1056 610/1281/1056 -f 610/1281/1057 40/447/1057 33/446/1057 -f 101/508/1058 690/1254/1058 124/507/1058 -f 309/550/1059 323/476/1059 322/1067/1059 -f 3456/400/1060 3493/399/1060 3469/782/1060 -f 172/716/1061 203/720/1061 160/661/1061 -f 100/1241/1062 87/1271/1062 109/1272/1062 -f 2150/1282/1063 2414/460/1063 2407/1283/1063 -f 210/1284/1064 221/1285/1064 1539/70/1064 -f 221/1285/1065 256/1258/1065 1539/70/1065 -f 308/1286/1066 279/1259/1066 256/1258/1066 -f 404/1287/1067 1698/1276/1067 321/1275/1067 -f 404/1287/1068 392/1288/1068 1698/1276/1068 -f 17/1264/1069 15/1279/1069 553/1204/1069 -f 241/1265/1070 249/1217/1070 15/1279/1070 -f 316/356/1071 783/141/1071 1162/140/1071 -f 554/600/1072 79/573/1072 248/504/1072 -f 547/557/1073 79/573/1073 554/600/1073 -f 3511/298/1074 3463/300/1074 3497/656/1074 -f 172/716/1075 160/661/1075 154/377/1075 -f 749/1289/1076 3426/1004/1076 105/1290/1076 -f 50/1189/1077 51/1291/1077 63/1268/1077 -f 63/1268/1078 71/1292/1078 70/1240/1078 -f 70/1240/1079 71/1292/1079 87/1271/1079 -f 109/1272/1080 1622/1293/1080 1643/1294/1080 -f 1622/1293/1081 166/1295/1081 1643/1294/1081 -f 194/1296/1082 211/1297/1082 210/1284/1082 -f 211/1297/1083 221/1285/1083 210/1284/1083 -f 221/1285/1084 238/1298/1084 256/1258/1084 -f 279/1259/1085 308/1286/1085 320/1249/1085 -f 308/1286/1086 321/1275/1086 320/1249/1086 -f 373/1299/1087 404/1287/1087 321/1275/1087 -f 2120/186/1088 1979/942/1088 1206/944/1088 -f 3480/1300/1089 3454/1301/1089 3424/1002/1089 -f 511/1302/1090 17/1264/1090 487/1278/1090 -f 269/1303/1091 363/1253/1091 241/1265/1091 -f 1146/425/1092 1195/453/1092 1166/602/1092 -f 126/709/1093 154/377/1093 103/379/1093 -f 337/792/1094 347/401/1094 405/403/1094 -f 87/1271/1095 110/1304/1095 109/1272/1095 -f 1274/1164/1096 1409/171/1096 1375/410/1096 -f 3494/1305/1097 3485/326/1097 3500/325/1097 -f 1565/1306/1098 13/1307/1098 1434/1308/1098 -f 3486/1075/1099 3488/1309/1099 3479/312/1099 -f 238/1298/1100 308/1286/1100 256/1258/1100 -f 1545/1310/1101 1650/1311/1101 500/1263/1101 -f 500/1263/1102 1650/1311/1102 487/1278/1102 -f 269/1303/1103 241/1265/1103 15/1279/1103 -f 269/1312/1104 1386/129/1104 363/1233/1104 -f 998/449/1105 997/1026/1105 968/632/1105 -f 580/1313/1106 27/397/1106 38/396/1106 -f 417/644/1107 406/538/1107 424/645/1107 -f 51/1291/1108 72/1314/1108 63/1268/1108 -f 63/1268/1109 72/1314/1109 71/1292/1109 -f 72/1314/1110 88/1315/1110 87/1271/1110 -f 71/1292/1111 72/1314/1111 87/1271/1111 -f 87/1271/1112 88/1315/1112 110/1304/1112 -f 110/1304/1113 1622/1293/1113 109/1272/1113 -f 775/1316/1114 1004/1317/1114 683/1318/1114 -f 199/1319/1115 211/1297/1115 194/1296/1115 -f 178/1320/1116 199/1319/1116 194/1296/1116 -f 199/1319/1117 222/1321/1117 211/1297/1117 -f 222/1321/1118 221/1285/1118 211/1297/1118 -f 222/1321/1119 223/1322/1119 221/1285/1119 -f 223/1322/1120 238/1298/1120 221/1285/1120 -f 336/1323/1121 321/1275/1121 308/1286/1121 -f 336/1323/1122 373/1299/1122 321/1275/1122 -f 381/1324/1123 404/1287/1123 373/1299/1123 -f 922/451/1124 1171/657/1124 594/1044/1124 -f 526/1325/1125 856/1326/1125 540/793/1125 -f 540/793/1126 856/1326/1126 948/794/1126 -f 405/403/1127 406/538/1127 417/644/1127 -f 88/1315/1128 115/1327/1128 1622/1293/1128 -f 110/1304/1129 88/1315/1129 1622/1293/1129 -f 349/1195/1130 184/1328/1130 1507/1196/1130 -f 199/1319/1131 223/1322/1131 222/1321/1131 -f 238/1298/1132 291/1329/1132 308/1286/1132 -f 291/1329/1133 336/1323/1133 308/1286/1133 -f 381/1324/1134 415/1330/1134 404/1287/1134 -f 3457/1331/1135 3482/1332/1135 3424/1002/1135 -f 514/123/1136 459/122/1136 1457/1126/1136 -f 536/1333/1137 17/1264/1137 511/1302/1137 -f 15/1279/1138 17/1264/1138 536/1333/1138 -f 1932/1334/1139 1115/426/1139 1146/425/1139 -f 202/674/1140 144/676/1140 490/416/1140 -f 202/674/1141 490/416/1141 281/415/1141 -f 72/1314/1142 73/1335/1142 88/1315/1142 -f 199/1319/1143 195/1336/1143 223/1322/1143 -f 336/1323/1144 374/1337/1144 373/1299/1144 -f 374/1337/1145 381/1324/1145 373/1299/1145 -f 415/1338/1146 1302/1339/1146 404/1340/1146 -f 1064/983/1147 1100/834/1147 1153/360/1147 -f 3508/21/1148 3494/663/1148 3500/1341/1148 -f 295/1342/1149 15/1279/1149 536/1333/1149 -f 295/1342/1150 269/1303/1150 15/1279/1150 -f 295/1342/1151 170/980/1151 269/1303/1151 -f 170/1343/1152 77/262/1152 269/1312/1152 -f 77/262/1153 1386/129/1153 269/1312/1153 -f 3443/351/1154 3501/350/1154 3452/1099/1154 -f 123/481/1155 150/791/1155 131/482/1155 -f 73/1335/1156 111/389/1156 88/1315/1156 -f 88/1315/1157 111/389/1157 115/1327/1157 -f 141/1344/1158 167/660/1158 179/1345/1158 -f 140/1346/1159 141/1344/1159 179/1345/1159 -f 167/660/1160 195/1336/1160 179/1345/1160 -f 223/1322/1161 257/1347/1161 238/1298/1161 -f 257/1347/1162 291/1329/1162 238/1298/1162 -f 292/1348/1163 336/1323/1163 291/1329/1163 -f 292/1348/1164 322/1067/1164 336/1323/1164 -f 322/1067/1165 374/1337/1165 336/1323/1165 -f 475/1349/1166 1650/1350/1166 466/1351/1166 -f 1650/1311/1167 475/1352/1167 512/1353/1167 -f 512/1353/1168 536/1333/1168 511/1302/1168 -f 3495/359/1169 3450/1354/1169 3447/982/1169 -f 999/1355/1170 1038/1356/1170 1018/404/1170 -f 51/1291/1171 52/1357/1171 72/1314/1171 -f 52/1357/1172 64/1358/1172 72/1314/1172 -f 72/1359/1173 64/1360/1173 73/1361/1173 -f 111/389/1174 131/482/1174 115/1327/1174 -f 115/1327/1175 131/482/1175 140/1346/1175 -f 1811/1362/1176 1802/1363/1176 1525/667/1176 -f 375/1066/1177 374/1337/1177 322/1067/1177 -f 375/1066/1178 381/1324/1178 374/1337/1178 -f 1061/517/1179 1067/908/1179 1037/518/1179 -f 1251/1364/1180 475/1349/1180 466/1351/1180 -f 522/622/1181 536/1333/1181 512/1353/1181 -f 1091/513/1182 1143/512/1182 558/635/1182 -f 477/599/1183 537/598/1183 501/556/1183 -f 858/880/1184 337/792/1184 324/474/1184 -f 523/956/1185 537/598/1185 488/369/1185 -f 513/558/1186 547/557/1186 554/600/1186 -f 51/1291/1187 588/477/1187 52/1357/1187 -f 131/482/1188 141/1344/1188 140/1346/1188 -f 195/1336/1189 239/1134/1189 223/1322/1189 -f 223/1322/1190 239/1134/1190 257/1347/1190 -f 257/1347/1191 292/1348/1191 291/1329/1191 -f 381/1324/1192 416/587/1192 415/1330/1192 -f 415/1330/1193 416/587/1193 423/1365/1193 -f 2781/288/1194 2144/1366/1194 2467/289/1194 -f 57/1367/1195 1311/1368/1195 1989/1369/1195 -f 198/1045/1196 724/1370/1196 197/812/1196 -f 195/1336/1197 196/479/1197 239/1134/1197 -f 258/434/1198 292/1348/1198 257/1347/1198 -f 393/585/1199 416/587/1199 381/1324/1199 -f 3485/326/1200 3443/1371/1200 3436/1372/1200 -f 513/558/1201 554/600/1201 56/1064/1201 -f 682/745/1202 522/622/1202 512/1353/1202 -f 56/1064/1203 536/1333/1203 522/622/1203 -f 56/1064/1204 295/1342/1204 536/1333/1204 -f 280/1065/1205 227/505/1205 295/1342/1205 -f 295/1342/1206 227/505/1206 170/980/1206 -f 170/980/1207 1423/1373/1207 77/1374/1207 -f 2015/117/1208 2030/87/1208 1986/1176/1208 -f 588/477/1209 53/478/1209 52/1357/1209 -f 53/617/1210 65/631/1210 64/1360/1210 -f 52/1357/1211 53/478/1211 64/1358/1211 -f 64/1360/1212 65/631/1212 73/1361/1212 -f 65/387/1213 111/389/1213 73/1335/1213 -f 141/1344/1214 150/791/1214 167/660/1214 -f 195/1336/1215 167/660/1215 196/479/1215 -f 259/435/1216 257/1347/1216 239/1134/1216 -f 259/435/1217 258/434/1217 257/1347/1217 -f 258/434/1218 309/550/1218 292/1348/1218 -f 309/550/1219 322/1067/1219 292/1348/1219 -f 393/585/1220 381/1324/1220 375/1066/1220 -f 1974/108/1221 1986/1176/1221 3390/1375/1221 -f 56/1064/1222 280/1065/1222 295/1342/1222 -f 423/1376/1223 439/1377/1223 1251/1364/1223 -f 111/389/1224 116/483/1224 131/482/1224 -f 150/791/1225 141/1344/1225 131/482/1225 -f 224/480/1226 259/435/1226 239/1134/1226 -f 258/434/1227 310/433/1227 309/550/1227 -f 145/797/1228 126/709/1228 661/549/1228 -f 598/1378/1229 597/1379/1229 581/1280/1229 -f 840/510/1230 859/1380/1230 858/880/1230 -f 855/1381/1231 731/1382/1231 747/1383/1231 -f 677/1384/1232 694/1385/1232 693/1386/1232 -f 822/1387/1233 707/1388/1233 769/1389/1233 -f 769/1389/1234 932/1390/1234 822/1387/1234 -f 710/1391/1235 720/1392/1235 703/438/1235 -f 859/1380/1236 912/1393/1236 347/401/1236 -f 654/1394/1237 425/553/1237 442/555/1237 -f 608/996/1238 810/1395/1238 674/1396/1238 -f 1194/601/1239 1200/1237/1239 1211/278/1239 -f 2083/820/1240 2065/821/1240 2042/89/1240 -f 793/814/1241 847/816/1241 817/1397/1241 -f 597/1379/1242 629/899/1242 610/1281/1242 -f 2776/1398/1243 2792/1399/1243 2731/1400/1243 -f 651/1401/1244 650/1402/1244 614/1403/1244 -f 735/1404/1245 722/1405/1245 717/1406/1245 -f 1194/601/1246 1195/453/1246 1200/1237/1246 -f 651/1401/1247 663/1407/1247 650/1402/1247 -f 663/1407/1248 681/1408/1248 650/1402/1248 -f 663/1407/1249 719/304/1249 681/1408/1249 -f 3087/1409/1250 3101/1410/1250 3057/1411/1250 -f 268/595/1251 555/1205/1251 1243/19/1251 -f 1490/1412/1252 585/1413/1252 3402/1414/1252 -f 2869/1415/1253 2841/1416/1253 2809/254/1253 -f 2652/724/1254 2687/1417/1254 1908/1418/1254 -f 797/1419/1255 841/1420/1255 829/1421/1255 -f 610/1281/1256 629/899/1256 609/900/1256 -f 3218/548/1257 639/1422/1257 661/549/1257 -f 659/1423/1258 646/1424/1258 691/1425/1258 -f 2817/1426/1259 2619/1427/1259 2060/3/1259 -f 601/1428/1260 92/1063/1260 649/1429/1260 -f 126/709/1261 103/379/1261 661/549/1261 -f 1200/1237/1262 1212/279/1262 1211/278/1262 -f 1166/602/1263 1194/601/1263 1155/492/1263 -f 2967/1052/1264 956/1054/1264 2976/1430/1264 -f 1124/1431/1265 1104/1432/1265 1096/1433/1265 -f 669/1434/1266 693/1386/1266 692/1435/1266 -f 772/1436/1267 744/1437/1267 745/1438/1267 -f 777/1439/1268 817/1397/1268 816/1440/1268 -f 2227/1441/1269 2158/1442/1269 2289/1443/1269 -f 2968/65/1270 2298/64/1270 2446/1444/1270 -f 891/297/1271 261/317/1271 903/275/1271 -f 3473/1107/1272 3472/1445/1272 3458/1446/1272 -f 1002/358/1273 3458/1446/1273 3449/1266/1273 -f 610/1447/1274 609/647/1274 40/444/1274 -f 817/1397/1275 840/510/1275 816/1440/1275 -f 809/1448/1276 628/1449/1276 683/1450/1276 -f 941/1451/1277 900/1452/1277 891/297/1277 -f 900/1452/1278 261/317/1278 891/297/1278 -f 638/1453/1279 660/1454/1279 599/1455/1279 -f 997/1027/1280 1013/406/1280 1006/1456/1280 -f 3459/1457/1281 3443/1371/1281 3485/326/1281 -f 758/1458/1282 816/1440/1282 225/509/1282 -f 851/1459/1283 741/1460/1283 748/1461/1283 -f 376/330/1284 605/1462/1284 886/331/1284 -f 605/1462/1285 815/1463/1285 886/331/1285 -f 886/331/1286 815/1463/1286 941/1451/1286 -f 941/1464/1287 815/1465/1287 900/1466/1287 -f 3510/1467/1288 3444/93/1288 3455/839/1288 -f 593/860/1289 606/859/1289 578/1468/1289 -f 703/438/1290 720/1392/1290 181/436/1290 -f 3434/1469/1291 3468/1470/1291 3438/1471/1291 -f 653/432/1292 866/1472/1292 542/413/1292 -f 701/1473/1293 626/1474/1293 674/1475/1293 -f 872/1476/1294 912/1393/1294 859/1380/1294 -f 741/1460/1295 920/1477/1295 748/1461/1295 -f 748/1461/1296 920/1477/1296 376/330/1296 -f 376/330/1297 920/1477/1297 605/1462/1297 -f 900/1452/1298 702/1478/1298 261/317/1298 -f 559/994/1299 562/1005/1299 2/1029/1299 -f 203/720/1300 750/722/1300 735/1479/1300 -f 786/1480/1301 777/1439/1301 759/1481/1301 -f 843/1482/1302 851/1483/1302 853/1484/1302 -f 843/1482/1303 741/1485/1303 851/1483/1303 -f 605/1486/1304 826/1487/1304 815/1465/1304 -f 702/1478/1305 727/352/1305 261/317/1305 -f 2619/1427/1306 2826/1/1306 2060/3/1306 -f 925/1488/1307 949/1489/1307 695/1490/1307 -f 750/1491/1308 762/1492/1308 735/1404/1308 -f 750/1491/1309 763/1493/1309 762/1492/1309 -f 763/1493/1310 808/1494/1310 762/1492/1310 -f 791/1495/1311 626/1474/1311 845/1496/1311 -f 526/1497/1312 540/1498/1312 899/1499/1312 -f 843/1500/1313 853/1501/1313 3388/1502/1313 -f 900/1466/1314 815/1465/1314 702/1503/1314 -f 702/1478/1315 726/485/1315 727/352/1315 -f 2277/881/1316 1025/882/1316 1083/488/1316 -f 491/1504/1317 582/1505/1317 925/1488/1317 -f 824/1506/1318 873/1507/1318 926/1508/1318 -f 808/1494/1319 800/1509/1319 820/1510/1319 -f 605/1486/1320 935/1511/1320 826/1487/1320 -f 815/1465/1321 643/1512/1321 702/1503/1321 -f 1827/1513/1322 2560/1514/1322 2549/1515/1322 -f 925/1488/1323 695/1490/1323 897/1516/1323 -f 967/1517/1324 1793/1518/1324 35/1519/1324 -f 827/1520/1325 741/1485/1325 843/1482/1325 -f 827/1520/1326 920/1521/1326 741/1485/1326 -f 827/1520/1327 696/1522/1327 920/1521/1327 -f 696/1522/1328 935/1511/1328 920/1521/1328 -f 920/1521/1329 935/1511/1329 605/1486/1329 -f 643/1512/1330 928/1523/1330 702/1503/1330 -f 702/1478/1331 928/1524/1331 726/485/1331 -f 786/1480/1332 794/815/1332 793/814/1332 -f 1014/914/1333 1084/1525/1333 1191/1526/1333 -f 871/1527/1334 671/1528/1334 930/1529/1334 -f 35/1519/1335 1793/1518/1335 2619/1427/1335 -f 770/1530/1336 843/1500/1336 894/1531/1336 -f 770/1532/1337 827/1520/1337 843/1482/1337 -f 826/1487/1338 906/1533/1338 815/1465/1338 -f 906/1533/1339 643/1512/1339 815/1465/1339 -f 726/485/1340 928/1524/1340 946/486/1340 -f 60/861/1341 23/714/1341 606/859/1341 -f 725/1534/1342 724/1370/1342 161/1222/1342 -f 3477/788/1343 3496/1097/1343 3501/350/1343 -f 621/1535/1344 871/1536/1344 865/1537/1344 -f 785/1538/1345 850/1539/1345 621/1540/1345 -f 777/1439/1346 786/1480/1346 793/814/1346 -f 935/1511/1347 752/1541/1347 826/1487/1347 -f 643/1512/1348 909/1542/1348 928/1523/1348 -f 3270/1543/1349 953/1544/1349 573/1545/1349 -f 866/1546/1350 894/1531/1350 3333/1547/1350 -f 877/1548/1351 827/1520/1351 770/1532/1351 -f 752/1541/1352 906/1533/1352 826/1487/1352 -f 906/1533/1353 723/1549/1353 643/1512/1353 -f 909/1542/1354 868/1550/1354 928/1523/1354 -f 928/1523/1355 868/1550/1355 946/1551/1355 -f 683/1450/1356 623/1552/1356 855/1553/1356 -f 662/1554/1357 650/1555/1357 681/1556/1357 -f 721/1557/1358 714/1558/1358 676/1559/1358 -f 808/1494/1359 761/1560/1359 722/1405/1359 -f 790/1561/1360 764/1562/1360 655/1563/1360 -f 881/1564/1361 658/1565/1361 633/1566/1361 -f 2149/1567/1362 1102/1171/1362 1061/517/1362 -f 897/1516/1363 695/1490/1363 896/1568/1363 -f 653/432/1364 904/1569/1364 866/1472/1364 -f 904/1569/1365 894/1570/1365 866/1472/1365 -f 877/1548/1366 696/1522/1366 827/1520/1366 -f 696/1522/1367 907/1571/1367 935/1511/1367 -f 935/1511/1368 907/1571/1368 752/1541/1368 -f 752/1541/1369 723/1549/1369 906/1533/1369 -f 723/1549/1370 909/1542/1370 643/1512/1370 -f 1021/1572/1371 1037/518/1371 1031/1573/1371 -f 1879/1574/1372 1188/1575/1372 1128/1576/1372 -f 2935/1577/1373 2928/1578/1373 2939/1579/1373 -f 896/1568/1374 695/1490/1374 641/1580/1374 -f 939/1581/1375 615/1582/1375 628/1449/1375 -f 686/1583/1376 809/1448/1376 683/1450/1376 -f 3487/1584/1377 1207/333/1377 1208/332/1377 -f 1067/908/1378 1061/517/1378 1102/1171/1378 -f 867/1585/1379 696/1522/1379 877/1548/1379 -f 867/1585/1380 907/1571/1380 696/1522/1380 -f 723/1549/1381 687/1586/1381 909/1542/1381 -f 946/486/1382 738/1587/1382 121/1163/1382 -f 766/1588/1383 791/1589/1383 822/1590/1383 -f 660/1454/1384 638/1453/1384 677/1384/1384 -f 3467/1591/1385 1015/751/1385 1117/750/1385 -f 591/1592/1386 622/1593/1386 611/1594/1386 -f 2506/1595/1387 1009/1596/1387 1010/1597/1387 -f 904/1569/1388 844/1598/1388 894/1570/1388 -f 844/1599/1389 770/1530/1389 894/1531/1389 -f 770/1532/1390 944/1600/1390 877/1548/1390 -f 944/1600/1391 867/1585/1391 877/1548/1391 -f 907/1571/1392 718/1601/1392 752/1541/1392 -f 718/1602/1393 921/1603/1393 752/1604/1393 -f 752/1604/1394 921/1603/1394 723/1605/1394 -f 880/1606/1395 868/1550/1395 909/1542/1395 -f 687/1586/1396 880/1606/1396 909/1542/1396 -f 946/486/1397 868/1607/1397 738/1587/1397 -f 2652/724/1398 1908/1418/1398 2621/1608/1398 -f 3508/21/1399 3475/664/1399 3494/663/1399 -f 384/1609/1400 686/1610/1400 1160/1611/1400 -f 904/1569/1401 532/570/1401 844/1598/1401 -f 757/1612/1402 770/1532/1402 844/1613/1402 -f 757/1612/1403 944/1600/1403 770/1532/1403 -f 723/1605/1404 921/1603/1404 687/1614/1404 -f 840/510/1405 872/1476/1405 859/1380/1405 -f 805/1615/1406 898/1616/1406 932/1390/1406 -f 872/1476/1407 860/1617/1407 913/1618/1407 -f 1041/420/1408 1088/111/1408 1147/261/1408 -f 695/1490/1409 885/1619/1409 641/1580/1409 -f 779/1620/1410 796/1621/1410 744/1622/1410 -f 899/467/1411 489/466/1411 947/1623/1411 -f 809/1624/1412 384/1609/1412 918/1625/1412 -f 563/614/1413 757/828/1413 844/1598/1413 -f 944/1626/1414 672/1627/1414 867/1628/1414 -f 867/1628/1415 836/1629/1415 907/1630/1415 -f 836/1629/1416 792/1631/1416 907/1630/1416 -f 792/1631/1417 718/1602/1417 907/1630/1417 -f 868/1607/1418 574/1632/1418 738/1587/1418 -f 2826/1/1419 1710/1633/1419 2535/2/1419 -f 2711/1634/1420 2838/1635/1420 2019/1636/1420 -f 3189/1637/1421 3152/1638/1421 3140/1218/1421 -f 628/1449/1422 615/1582/1422 623/1552/1422 -f 3483/1639/1423 1897/858/1423 2839/1640/1423 -f 641/1580/1424 885/1619/1424 850/1641/1424 -f 841/1642/1425 830/1643/1425 862/1644/1425 -f 913/1618/1426 860/1617/1426 654/1394/1426 -f 624/1645/1427 890/852/1427 948/794/1427 -f 918/1646/1428 939/1581/1428 628/1449/1428 -f 757/828/1429 914/744/1429 944/1626/1429 -f 672/1627/1430 836/1629/1430 867/1628/1430 -f 688/1647/1431 687/1614/1431 921/1603/1431 -f 934/1648/1432 733/1649/1432 868/1607/1432 -f 880/1650/1433 934/1648/1433 868/1607/1433 -f 868/1607/1434 733/1649/1434 574/1632/1434 -f 2500/1651/1435 578/1468/1435 583/711/1435 -f 1210/1652/1436 1199/493/1436 1149/1043/1436 -f 3332/1653/1437 576/1654/1437 581/1280/1437 -f 620/1655/1438 634/1656/1438 917/1657/1438 -f 1037/518/1439 1044/909/1439 1031/1573/1439 -f 855/1553/1440 887/1658/1440 731/1659/1440 -f 1415/1660/1441 2100/1661/1441 1178/1662/1441 -f 792/1631/1442 892/1663/1442 718/1602/1442 -f 892/1663/1443 921/1603/1443 718/1602/1443 -f 892/1663/1444 688/1647/1444 921/1603/1444 -f 698/1664/1445 880/1606/1445 687/1586/1445 -f 698/1664/1446 934/1665/1446 880/1606/1446 -f 733/1649/1447 919/1666/1447 574/1632/1447 -f 738/1587/1448 574/1632/1448 121/1163/1448 -f 3487/1667/1449 3505/353/1449 3467/1591/1449 -f 683/1668/1450 855/1381/1450 736/1669/1450 -f 850/1641/1451 885/1619/1451 621/1535/1451 -f 779/1670/1452 787/1671/1452 807/1672/1452 -f 630/1673/1453 637/1674/1453 659/1423/1453 -f 914/744/1454 672/1627/1454 944/1626/1454 -f 698/1675/1455 687/1614/1455 688/1647/1455 -f 586/1676/1456 587/1677/1456 51/1291/1456 -f 606/859/1457 23/714/1457 583/711/1457 -f 578/1468/1458 606/859/1458 583/711/1458 -f 2139/1678/1459 2136/1679/1459 1291/1680/1459 -f 852/935/1460 685/1681/1460 825/1682/1460 -f 693/1386/1461 694/1385/1461 715/1683/1461 -f 2149/1567/1462 2133/1684/1462 1102/1171/1462 -f 743/1685/1463 771/1686/1463 778/1687/1463 -f 929/1688/1464 834/1689/1464 595/514/1464 -f 1435/147/1465 1172/1690/1465 1315/156/1465 -f 836/1629/1466 640/1691/1466 792/1631/1466 -f 792/1631/1467 640/1691/1467 892/1663/1467 -f 910/1692/1468 698/1675/1468 688/1647/1468 -f 910/1692/1469 839/1693/1469 698/1675/1469 -f 839/1694/1470 934/1665/1470 698/1664/1470 -f 839/1694/1471 408/1695/1471 934/1665/1471 -f 408/1695/1472 733/1696/1472 934/1665/1472 -f 408/1695/1473 919/1697/1473 733/1696/1473 -f 408/1695/1474 902/144/1474 919/1697/1474 -f 617/1698/1475 902/1699/1475 113/1700/1475 -f 919/1666/1476 902/1699/1476 617/1698/1476 -f 1125/747/1477 2770/1701/1477 1129/748/1477 -f 700/302/1478 719/304/1478 663/1407/1478 -f 621/1535/1479 885/1619/1479 824/1506/1479 -f 3509/1702/1480 805/1703/1480 7/1704/1480 -f 712/1705/1481 713/1706/1481 743/1685/1481 -f 778/1687/1482 771/1686/1482 795/1707/1482 -f 740/1708/1483 736/1709/1483 627/1710/1483 -f 709/1711/1484 836/1629/1484 672/1627/1484 -f 892/1663/1485 910/1692/1485 688/1647/1485 -f 3488/1712/1486 3466/1713/1486 3479/1714/1486 -f 348/927/1487 860/1617/1487 818/1715/1487 -f 214/1716/1488 2797/1717/1488 2183/1718/1488 -f 861/1719/1489 828/1720/1489 807/1721/1489 -f 775/1722/1490 736/1709/1490 740/1708/1490 -f 3429/1723/1491 3505/353/1491 3487/1667/1491 -f 676/1559/1492 691/1425/1492 646/1424/1492 -f 917/1657/1493 634/1656/1493 28/1724/1493 -f 631/1725/1494 630/1673/1494 598/1378/1494 -f 740/1708/1495 627/1710/1495 749/1726/1495 -f 736/1669/1496 855/1381/1496 627/1727/1496 -f 765/1728/1497 836/1629/1497 709/1711/1497 -f 836/1729/1498 923/1730/1498 640/1731/1498 -f 910/1692/1499 804/1732/1499 839/1693/1499 -f 839/1693/1500 838/1733/1500 408/1734/1500 -f 3298/1735/1501 3313/1736/1501 3284/1737/1501 -f 575/1738/1502 584/1739/1502 578/1468/1502 -f 1013/406/1503 1021/1572/1503 1006/1456/1503 -f 834/1689/1504 929/1688/1504 917/1740/1504 -f 181/436/1505 758/1458/1505 225/509/1505 -f 648/1741/1506 647/1742/1506 622/1743/1506 -f 861/1744/1507 874/1745/1507 828/1746/1507 -f 775/1722/1508 683/1450/1508 736/1709/1508 -f 953/1544/1509 3234/1747/1509 975/1748/1509 -f 160/661/1510 203/720/1510 735/1479/1510 -f 1766/57/1511 1869/59/1511 1108/112/1511 -f 528/643/1512 541/689/1512 914/744/1512 -f 709/1749/1513 672/1750/1513 914/1751/1513 -f 836/1729/1514 765/1752/1514 923/1730/1514 -f 923/1753/1515 689/1754/1515 640/1691/1515 -f 640/1691/1516 689/1754/1516 892/1663/1516 -f 892/1663/1517 835/1755/1517 910/1692/1517 -f 804/1732/1518 619/1756/1518 839/1693/1518 -f 838/1733/1519 839/1693/1519 619/1756/1519 -f 719/304/1520 1076/303/1520 730/1757/1520 -f 930/1529/1521 624/1645/1521 948/794/1521 -f 778/1687/1522 795/1707/1522 794/815/1522 -f 611/1594/1523 598/1378/1523 589/1758/1523 -f 714/1558/1524 713/1706/1524 704/1759/1524 -f 590/1760/1525 611/1594/1525 589/1758/1525 -f 2670/1761/1526 3437/244/1526 3511/1762/1526 -f 789/743/1527 945/1763/1527 914/744/1527 -f 945/1763/1528 709/1711/1528 914/744/1528 -f 689/1754/1529 835/1755/1529 892/1663/1529 -f 838/1764/1530 942/1765/1530 408/1695/1530 -f 365/145/1531 902/144/1531 408/1695/1531 -f 942/1765/1532 365/145/1532 408/1695/1532 -f 1039/305/1533 1171/657/1533 922/451/1533 -f 753/1766/1534 754/1093/1534 25/1033/1534 -f 593/860/1535 578/1468/1535 584/1739/1535 -f 407/315/1536 851/1459/1536 748/1461/1536 -f 730/1757/1537 1076/303/1537 1454/1767/1537 -f 1054/1768/1538 1044/909/1538 1086/1769/1538 -f 676/1559/1539 714/1558/1539 704/1759/1539 -f 691/1425/1540 676/1559/1540 704/1759/1540 -f 749/1770/1541 627/1771/1541 893/1772/1541 -f 923/1730/1542 765/1752/1542 709/1749/1542 -f 3402/1414/1543 584/1739/1543 575/1738/1543 -f 649/1773/1544 678/1774/1544 638/1775/1544 -f 1132/301/1545 927/1776/1545 986/282/1545 -f 1005/1777/1546 1021/1572/1546 1031/1573/1546 -f 573/1778/1547 591/1592/1547 590/1760/1547 -f 895/1779/1548 915/854/1548 348/927/1548 -f 887/1658/1549 595/514/1549 842/516/1549 -f 782/604/1550 202/674/1550 645/780/1550 -f 3428/759/1551 2754/705/1551 3457/704/1551 -f 654/1394/1552 442/555/1552 418/539/1552 -f 3483/1780/1553 3434/1469/1553 453/1781/1553 -f 749/1289/1554 893/1782/1554 857/1783/1554 -f 489/466/1555 470/554/1555 947/1623/1555 -f 615/1582/1556 929/1688/1556 595/514/1556 -f 910/1692/1557 835/1755/1557 804/1732/1557 -f 616/1784/1558 365/145/1558 942/1765/1558 -f 2548/271/1559 2744/1785/1559 3450/1786/1559 -f 585/1413/1560 593/860/1560 584/1739/1560 -f 3437/244/1561 2670/1761/1561 2592/648/1561 -f 3054/1787/1562 3091/1788/1562 3062/1789/1562 -f 729/1790/1563 760/1791/1563 773/1792/1563 -f 786/1480/1564 778/1687/1564 794/815/1564 -f 340/1156/1565 272/1094/1565 28/1154/1565 -f 591/1592/1566 611/1594/1566 590/1760/1566 -f 1530/1793/1567 22/712/1567 36/715/1567 -f 861/1744/1568 895/1779/1568 874/1745/1568 -f 38/396/1569 588/477/1569 580/1313/1569 -f 895/1779/1570 940/1794/1570 915/854/1570 -f 832/1795/1571 923/1730/1571 709/1749/1571 -f 923/1730/1572 879/1796/1572 689/1797/1572 -f 689/1754/1573 788/1798/1573 835/1755/1573 -f 917/1657/1574 28/1724/1574 596/1799/1574 -f 1335/607/1575 1287/27/1575 1261/29/1575 -f 514/123/1576 1274/1164/1576 1265/124/1576 -f 407/315/1577 2279/1800/1577 851/1459/1577 -f 3504/246/1578 3428/759/1578 3457/704/1578 -f 1517/1138/1579 50/1189/1579 49/1136/1579 -f 834/1689/1580 596/1801/1580 697/515/1580 -f 1134/1802/1581 918/1625/1581 384/1609/1581 -f 715/1683/1582 773/1792/1582 745/1438/1582 -f 712/1705/1583 743/1685/1583 778/1687/1583 -f 694/1385/1584 716/1803/1584 729/1790/1584 -f 654/1804/1585 361/1805/1585 425/1806/1585 -f 615/1582/1586 595/514/1586 623/1552/1586 -f 739/1807/1587 917/1740/1587 929/1688/1587 -f 940/1794/1588 655/1563/1588 607/1808/1588 -f 655/1809/1589 526/1497/1589 899/1499/1589 -f 789/743/1590 936/1810/1590 945/1763/1590 -f 832/1795/1591 709/1749/1591 945/1811/1591 -f 936/1810/1592 832/1812/1592 945/1763/1592 -f 832/1795/1593 879/1796/1593 923/1730/1593 -f 835/1813/1594 1119/1814/1594 804/1815/1594 -f 1119/1814/1595 846/1816/1595 619/1817/1595 -f 804/1815/1596 1119/1814/1596 619/1817/1596 -f 829/1818/1597 875/1819/1597 861/1719/1597 -f 272/1094/1598 340/1156/1598 1462/1095/1598 -f 876/1820/1599 491/1504/1599 925/1488/1599 -f 949/1489/1600 824/1506/1600 885/1619/1600 -f 670/1821/1601 678/1774/1601 649/1773/1601 -f 816/1440/1602 840/510/1602 225/509/1602 -f 865/1822/1603 948/794/1603 856/1326/1603 -f 746/1823/1604 785/1538/1604 764/1562/1604 -f 607/1808/1605 655/1563/1605 899/467/1605 -f 807/1721/1606 796/1621/1606 779/1620/1606 -f 936/1810/1607 789/743/1607 55/802/1607 -f 879/1796/1608 776/1824/1608 689/1797/1608 -f 755/1825/1609 788/1826/1609 689/1797/1609 -f 629/899/1610 630/1673/1610 659/1423/1610 -f 623/1552/1611 887/1658/1611 855/1553/1611 -f 834/1689/1612 917/1740/1612 596/1801/1612 -f 857/1783/1613 893/1782/1613 805/1703/1613 -f 929/1688/1614 615/1582/1614 881/1564/1614 -f 675/1827/1615 690/1254/1615 659/1423/1615 -f 927/1828/1616 1132/1829/1616 769/1389/1616 -f 1006/1456/1617 1021/1572/1617 1005/1777/1617 -f 760/1791/1618 799/1830/1618 773/1792/1618 -f 842/516/1619 674/1475/1619 626/1474/1619 -f 763/1493/1620 800/1509/1620 808/1494/1620 -f 818/1715/1621 828/1746/1621 348/927/1621 -f 800/1509/1622 831/1831/1622 820/1510/1622 -f 798/1832/1623 797/1419/1623 780/1833/1623 -f 895/1779/1624 916/1834/1624 940/1794/1624 -f 874/1745/1625 895/1779/1625 348/927/1625 -f 599/1835/1626 591/1836/1626 974/1837/1626 -f 612/1838/1627 660/1454/1627 648/1839/1627 -f 648/1839/1628 660/1454/1628 669/1434/1628 -f 936/1840/1629 706/1841/1629 832/1795/1629 -f 706/1841/1630 776/1824/1630 879/1796/1630 -f 832/1795/1631 706/1841/1631 879/1796/1631 -f 776/1824/1632 755/1825/1632 689/1797/1632 -f 629/899/1633 659/1423/1633 636/551/1633 -f 875/1842/1634 848/1843/1634 916/1834/1634 -f 315/341/1635 823/142/1635 1444/1844/1635 -f 831/1831/1636 863/1845/1636 820/1510/1636 -f 2047/593/1637 2068/1846/1637 1154/364/1637 -f 2303/1847/1638 1710/1633/1638 2890/1848/1638 -f 887/1658/1639 842/516/1639 731/1659/1639 -f 659/1423/1640 691/1425/1640 675/1827/1640 -f 829/1421/1641 861/1744/1641 807/1672/1641 -f 831/1831/1642 876/1820/1642 863/1845/1642 -f 788/1826/1643 755/1825/1643 1357/345/1643 -f 680/575/1644 682/745/1644 774/1061/1644 -f 607/1808/1645 947/1623/1645 426/700/1645 -f 862/1644/1646 883/1849/1646 848/1850/1646 -f 591/1592/1647 599/1455/1647 612/1838/1647 -f 864/1851/1648 641/1852/1648 746/1823/1648 -f 930/1529/1649 665/1853/1649 624/1645/1649 -f 2552/1854/1650 1047/1855/1650 1023/1856/1650 -f 1042/427/1651 1218/1857/1651 3507/1858/1651 -f 936/1840/1652 937/1859/1652 706/1841/1652 -f 50/1189/1653 1517/1138/1653 579/1860/1653 -f 51/1291/1654 587/1677/1654 588/477/1654 -f 791/1589/1655 845/1861/1655 888/1862/1655 -f 297/967/1656 41/936/1656 889/1863/1656 -f 3470/281/1657 1163/280/1657 3476/355/1657 -f 2592/648/1658 1689/1864/1658 2424/245/1658 -f 1834/1865/1659 2515/1866/1659 1835/1867/1659 -f 761/1560/1660 799/1868/1660 760/1869/1660 -f 3484/1870/1661 3474/1871/1661 3486/1075/1661 -f 772/1436/1662 787/1671/1662 779/1670/1662 -f 589/1758/1663 598/1378/1663 581/1280/1663 -f 772/1436/1664 780/1833/1664 787/1671/1664 -f 943/1872/1665 706/1873/1665 313/803/1665 -f 776/1824/1666 684/1008/1666 755/1825/1666 -f 1357/345/1667 755/1825/1667 1238/346/1667 -f 1407/1874/1668 340/1875/1668 634/1656/1668 -f 862/1644/1669 896/1568/1669 883/1849/1669 -f 1092/1876/1670 666/1877/1670 1117/1878/1670 -f 3332/1653/1671 581/1280/1671 33/446/1671 -f 538/779/1672 125/572/1672 537/598/1672 -f 2992/1879/1673 2991/1880/1673 2440/1881/1673 -f 678/1774/1674 677/1882/1674 638/1775/1674 -f 615/1582/1675 1189/1883/1675 658/1565/1675 -f 2989/1884/1676 2977/1885/1676 2429/1886/1676 -f 819/1887/1677 884/1888/1677 897/1516/1677 -f 576/1654/1678 573/1778/1678 590/1760/1678 -f 828/1746/1679 874/1745/1679 348/927/1679 -f 780/1833/1680 772/1436/1680 745/1438/1680 -f 684/1008/1681 776/1824/1681 706/1841/1681 -f 2261/1889/1682 2335/1890/1682 1887/1891/1682 -f 181/436/1683 742/1892/1683 758/1458/1683 -f 50/1189/1684 586/1676/1684 51/1291/1684 -f 912/1393/1685 911/402/1685 347/401/1685 -f 805/1703/1686 932/1893/1686 7/1704/1686 -f 747/1383/1687 791/1589/1687 766/1588/1687 -f 898/1616/1688 766/1894/1688 822/1387/1688 -f 1298/1895/1689 1119/1814/1689 1357/345/1689 -f 2761/238/1690 2731/1400/1690 2791/239/1690 -f 648/1741/1691 669/1896/1691 647/1742/1691 -f 717/1406/1692 722/1405/1692 699/1897/1692 -f 897/1516/1693 896/1568/1693 862/1644/1693 -f 863/1845/1694 884/1888/1694 819/1887/1694 -f 693/1898/1695 715/1899/1695 705/1900/1695 -f 715/1683/1696 745/1438/1696 705/1901/1696 -f 706/1873/1697 937/801/1697 313/803/1697 -f 806/1902/1698 828/1746/1698 818/1715/1698 -f 985/319/1699 2027/1903/1699 1222/1084/1699 -f 731/1659/1700 842/516/1700 791/1495/1700 -f 651/1401/1701 1043/1904/1701 663/1407/1701 -f 659/1423/1702 690/1254/1702 636/551/1702 -f 597/1379/1703 598/1378/1703 630/1673/1703 -f 581/1280/1704 590/1760/1704 589/1758/1704 -f 818/1715/1705 860/1617/1705 847/816/1705 -f 1076/303/1706 1399/138/1706 1454/1767/1706 -f 808/1494/1707 819/1887/1707 761/1560/1707 -f 2719/1905/1708 2706/1906/1708 2691/1907/1708 -f 717/1406/1709 699/1897/1709 679/1908/1709 -f 1988/272/1710 1284/1909/1710 1439/273/1710 -f 684/1008/1711 1297/1007/1711 755/1825/1711 -f 755/1825/1712 1297/1007/1712 1238/346/1712 -f 1039/305/1713 1091/513/1713 1171/657/1713 -f 938/537/1714 911/402/1714 912/1393/1714 -f 857/1783/1715 3499/1910/1715 3426/1004/1715 -f 699/1897/1716 694/1911/1716 677/1882/1716 -f 14/1912/1717 1714/1913/1717 13/1307/1717 -f 1854/1914/1718 1861/1915/1718 1853/1916/1718 -f 1283/1917/1719 1291/1181/1719 768/1180/1719 -f 898/1616/1720 893/1918/1720 627/1710/1720 -f 721/1557/1721 705/1901/1721 745/1438/1721 -f 860/1919/1722 361/1805/1722 654/1804/1722 -f 2298/64/1723 2480/1920/1723 2464/1921/1723 -f 125/572/1724 645/780/1724 281/415/1724 -f 758/1458/1725 777/1439/1725 816/1440/1725 -f 607/1808/1726 899/467/1726 947/1623/1726 -f 721/1557/1727 745/1438/1727 744/1437/1727 -f 3450/1354/1728 3435/1922/1728 3447/982/1728 -f 1176/491/1729 1199/493/1729 1210/1652/1729 -f 745/1438/1730 773/1792/1730 780/1833/1730 -f 996/897/1731 1006/1923/1731 1005/1924/1731 -f 2197/1925/1732 2192/1926/1732 2257/1927/1732 -f 799/1830/1733 798/1832/1733 773/1792/1733 -f 799/1830/1734 830/1928/1734 798/1832/1734 -f 1132/301/1735 3451/1929/1735 7/1704/1735 -f 596/1799/1736 784/1930/1736 608/996/1736 -f 784/1930/1737 753/1931/1737 608/996/1737 -f 3195/1932/1738 639/1933/1738 3218/1934/1738 -f 1465/1035/1739 1183/1034/1739 831/1831/1739 -f 712/1705/1740 778/1687/1740 759/1481/1740 -f 893/1918/1741 898/1616/1741 805/1615/1741 -f 2543/1935/1742 1830/1936/1742 1197/1074/1742 -f 791/1495/1743 842/516/1743 626/1474/1743 -f 3228/813/1744 3242/1937/1744 3241/309/1744 -f 876/1820/1745 831/1831/1745 1198/1938/1745 -f 762/1492/1746 808/1494/1746 722/1405/1746 -f 3355/1939/1747 1922/1940/1747 3321/1941/1747 -f 852/935/1748 889/1863/1748 41/936/1748 -f 1005/1777/1749 1031/1573/1749 1017/1942/1749 -f 1132/1829/1750 932/1390/1750 769/1389/1750 -f 621/1535/1751 824/1506/1751 871/1536/1751 -f 693/1386/1752 705/1901/1752 692/1435/1752 -f 2164/1943/1753 1250/1944/1753 2174/1945/1753 -f 627/1710/1754 766/1894/1754 898/1616/1754 -f 1872/1946/1755 3506/1947/1755 3510/1039/1755 -f 453/1948/1756 1134/1802/1756 384/1609/1756 -f 627/1727/1757 747/1383/1757 766/1588/1757 -f 747/1383/1758 731/1382/1758 791/1589/1758 -f 681/1556/1759 725/1534/1759 161/1222/1759 -f 1043/1904/1760 700/302/1760 663/1407/1760 -f 613/1949/1761 662/1554/1761 639/1422/1761 -f 746/1950/1762 850/1641/1762 785/1951/1762 -f 916/1834/1763 864/1851/1763 878/1952/1763 -f 787/1671/1764 797/1419/1764 807/1672/1764 -f 997/1026/1765 996/897/1765 968/632/1765 -f 795/1707/1766 818/1715/1766 794/815/1766 -f 2161/1082/1767 3442/1953/1767 1894/383/1767 -f 817/1397/1768 872/1476/1768 840/510/1768 -f 681/1556/1769 719/1954/1769 725/1534/1769 -f 780/1833/1770 797/1419/1770 787/1671/1770 -f 143/1028/1771 710/1391/1771 703/438/1771 -f 1263/154/1772 1161/916/1772 803/915/1772 -f 803/915/1773 1452/155/1773 1263/154/1773 -f 1810/1228/1774 1811/1362/1774 1577/1955/1774 -f 724/1370/1775 198/1045/1775 161/1222/1775 -f 3480/1300/1776 3499/1910/1776 3509/1702/1776 -f 2347/1956/1777 813/1957/1777 214/1716/1777 -f 3508/21/1778 3493/399/1778 3475/664/1778 -f 1193/334/1779 1014/914/1779 438/489/1779 -f 1651/1958/1780 1371/1959/1780 1355/1960/1780 -f 2708/1961/1781 2424/245/1781 1689/1864/1781 -f 841/1642/1782 862/1644/1782 848/1850/1782 -f 809/1448/1783 918/1646/1783 628/1449/1783 -f 697/515/1784 595/514/1784 834/1689/1784 -f 883/1849/1785 896/1568/1785 641/1580/1785 -f 1155/492/1786 1194/601/1786 1199/493/1786 -f 27/397/1787 580/1313/1787 572/1962/1787 -f 949/1489/1788 1030/1963/1788 824/1506/1788 -f 691/1425/1789 704/1759/1789 675/1827/1789 -f 962/1964/1790 961/979/1790 951/1965/1790 -f 3478/428/1791 3448/1106/1791 3481/1108/1791 -f 1993/1966/1792 586/1676/1792 579/1860/1792 -f 654/1394/1793 418/539/1793 938/537/1793 -f 1267/191/1794 1217/193/1794 242/1967/1794 -f 662/1554/1795 681/1556/1795 145/797/1795 -f 785/1538/1796 865/1822/1796 526/1325/1796 -f 734/1968/1797 181/436/1797 720/1392/1797 -f 830/1643/1798 841/1642/1798 797/1969/1798 -f 780/1833/1799 773/1792/1799 798/1832/1799 -f 913/1618/1800 654/1394/1800 938/537/1800 -f 1013/406/1801 1037/518/1801 1021/1572/1801 -f 668/830/1802 271/204/1802 1452/1970/1802 -f 1142/746/1803 1193/334/1803 438/489/1803 -f 977/867/1804 1111/1971/1804 3462/1972/1804 -f 858/880/1805 859/1380/1805 347/401/1805 -f 596/1799/1806 28/1724/1806 784/1930/1806 -f 318/1973/1807 475/1349/1807 1251/1364/1807 -f 1465/1035/1808 831/1831/1808 800/1509/1808 -f 649/1773/1809 600/1974/1809 601/1975/1809 -f 1958/232/1810 2712/1976/1810 2724/1977/1810 -f 791/1589/1811 888/1862/1811 822/1590/1811 -f 977/867/1812 965/1978/1812 1111/1971/1812 -f 614/1403/1813 994/1979/1813 651/1401/1813 -f 803/1980/1814 668/830/1814 1452/1970/1814 -f 513/558/1815 680/575/1815 501/556/1815 -f 975/1981/1816 3204/1982/1816 3205/1983/1816 -f 3428/759/1817 2766/681/1817 2669/857/1817 -f 1076/303/1818 1085/1984/1818 1399/138/1818 -f 1200/1237/1819 1201/511/1819 1212/279/1819 -f 819/1887/1820 830/1643/1820 799/1868/1820 -f 601/1975/1821 600/1974/1821 975/1748/1821 -f 597/1379/1822 630/1673/1822 629/899/1822 -f 101/508/1823 636/551/1823 690/1254/1823 -f 983/1985/1824 1189/1986/1824 939/1987/1824 -f 679/1988/1825 670/1062/1825 136/378/1825 -f 201/694/1826 120/494/1826 362/357/1826 -f 999/1989/1827 988/448/1827 2505/1990/1827 -f 160/661/1828 735/1479/1828 717/1991/1828 -f 3498/777/1829 3445/354/1829 3505/353/1829 -f 1014/914/1830 1191/1526/1830 438/489/1830 -f 722/1405/1831 716/1992/1831 699/1897/1831 -f 912/1993/1832 913/1994/1832 938/1995/1832 -f 913/1618/1833 912/1393/1833 872/1476/1833 -f 145/797/1834 681/1556/1834 161/1222/1834 -f 876/1820/1835 884/1888/1835 863/1845/1835 -f 798/1996/1836 830/1643/1836 797/1969/1836 -f 716/1803/1837 761/1997/1837 760/1791/1837 -f 2458/1998/1838 2440/1881/1838 969/1999/1838 -f 711/2000/1839 742/1892/1839 734/1968/1839 -f 710/1391/1840 711/2000/1840 734/1968/1840 -f 924/2001/1841 803/915/1841 1175/1221/1841 -f 1014/914/1842 1175/1221/1842 803/915/1842 -f 635/2002/1843 668/830/1843 803/1980/1843 -f 2322/2003/1844 2220/2004/1844 2382/2005/1844 -f 722/1405/1845 761/1560/1845 716/1992/1845 -f 662/1554/1846 661/549/1846 639/1422/1846 -f 860/1617/1847 872/1476/1847 817/1397/1847 -f 847/816/1848 860/1617/1848 817/1397/1848 -f 1094/1170/1849 1113/139/1849 1086/1769/1849 -f 848/1843/1850 875/1842/1850 829/1421/1850 -f 649/1773/1851 638/1775/1851 600/1974/1851 -f 848/1843/1852 883/2006/1852 916/1834/1852 -f 865/1822/1853 856/1326/1853 526/1325/1853 -f 3479/312/1854 2264/698/1854 3425/313/1854 -f 829/1421/1855 841/1420/1855 848/1843/1855 -f 597/1379/1856 610/1281/1856 581/1280/1856 -f 924/2001/1857 635/2007/1857 803/915/1857 -f 635/2007/1858 625/2008/1858 811/2009/1858 -f 668/830/1859 635/2002/1859 811/831/1859 -f 532/570/1860 563/614/1860 844/1598/1860 -f 608/996/1861 560/2010/1861 2/997/1861 -f 1452/1970/1862 271/204/1862 1440/290/1862 -f 570/2011/1863 3406/2012/1863 586/1676/1863 -f 819/1887/1864 897/1516/1864 862/1644/1864 -f 596/1799/1865 608/996/1865 751/2013/1865 -f 670/1821/1866 679/1908/1866 678/1774/1866 -f 777/1439/1867 793/814/1867 817/1397/1867 -f 2552/1854/1868 1059/2014/1868 1047/1855/1868 -f 675/1827/1869 704/1759/1869 711/2000/1869 -f 742/1892/1870 759/1481/1870 758/1458/1870 -f 685/1681/1871 811/831/1871 625/2015/1871 -f 642/2016/1872 685/2017/1872 625/2008/1872 -f 711/2000/1873 712/1705/1873 742/1892/1873 -f 822/1590/1874 888/1862/1874 707/2018/1874 -f 3405/2019/1875 570/2011/1875 586/1676/1875 -f 3406/2012/1876 587/1677/1876 586/1676/1876 -f 768/1180/1877 767/2020/1877 869/2021/1877 -f 864/1851/1878 790/1561/1878 878/1952/1878 -f 819/1887/1879 862/1644/1879 830/1643/1879 -f 925/1488/1880 582/1505/1880 949/1489/1880 -f 943/1872/1881 684/2022/1881 706/1873/1881 -f 679/1908/1882 699/1897/1882 678/1774/1882 -f 1189/1883/1883 633/1566/1883 658/1565/1883 -f 888/1862/1884 644/2023/1884 707/2018/1884 -f 883/2006/1885 864/1851/1885 916/1834/1885 -f 985/319/1886 1064/983/1886 1026/320/1886 -f 712/1705/1887 759/1481/1887 742/1892/1887 -f 901/2024/1888 635/2002/1888 924/2025/1888 -f 802/2026/1889 625/2015/1889 635/2002/1889 -f 802/2026/1890 642/2027/1890 625/2015/1890 -f 769/1389/1891 854/2028/1891 927/1828/1891 -f 775/1316/1892 105/2029/1892 1004/1317/1892 -f 2423/2030/1893 1307/2031/1893 130/2032/1893 -f 761/1560/1894 819/1887/1894 799/1868/1894 -f 3205/2033/1895 601/1975/1895 975/1748/1895 -f 599/1455/1896 660/1454/1896 612/1838/1896 -f 1324/2034/1897 1460/2035/1897 1308/164/1897 -f 778/1687/1898 786/1480/1898 759/1481/1898 -f 2246/2036/1899 2335/1890/1899 2261/1889/1899 -f 940/1794/1900 790/1561/1900 655/1563/1900 -f 930/1529/1901 948/794/1901 865/1822/1901 -f 426/700/1902 915/854/1902 607/1808/1902 -f 1291/1680/1903 2136/1679/1903 1303/2037/1903 -f 871/1536/1904 926/1508/1904 671/2038/1904 -f 734/1968/1905 742/1892/1905 181/436/1905 -f 1030/1963/1906 873/1507/1906 824/1506/1906 -f 692/1435/1907 705/1901/1907 721/1557/1907 -f 1199/493/1908 922/451/1908 1149/1043/1908 -f 2498/2039/1909 2515/2040/1909 2478/2041/1909 -f 649/1429/1910 92/1063/1910 670/1062/1910 -f 758/1458/1911 759/1481/1911 777/1439/1911 -f 576/1654/1912 590/1760/1912 581/1280/1912 -f 3455/2042/1913 3444/2043/1913 3478/428/1913 -f 666/2044/1914 924/2001/1914 1117/2045/1914 -f 666/1877/1915 901/2024/1915 924/2025/1915 -f 825/2046/1916 685/2017/1916 642/2016/1916 -f 685/1681/1917 852/935/1917 471/31/1917 -f 1167/2047/1918 1195/453/1918 1156/452/1918 -f 898/1616/1919 822/1387/1919 932/1390/1919 -f 615/1582/1920 658/1565/1920 881/1564/1920 -f 807/1672/1921 797/1419/1921 829/1421/1921 -f 697/2048/1922 596/1799/1922 751/2013/1922 -f 1015/751/1923 1163/280/1923 1092/752/1923 -f 772/1436/1924 779/1670/1924 744/1437/1924 -f 1465/1035/1925 800/1509/1925 763/1493/1925 -f 751/2013/1926 608/996/1926 674/1396/1926 -f 1038/1356/1927 1045/405/1927 1018/404/1927 -f 635/2002/1928 901/2024/1928 802/2026/1928 -f 656/2049/1929 642/2027/1929 802/2026/1929 -f 656/2049/1930 825/1682/1930 642/2027/1930 -f 864/1851/1931 746/1823/1931 790/1561/1931 -f 1167/2047/1932 1201/511/1932 1195/453/1932 -f 3406/2012/1933 588/477/1933 587/1677/1933 -f 662/1554/1934 145/797/1934 661/549/1934 -f 145/797/1935 161/1222/1935 155/710/1935 -f 1210/1652/1936 1149/1043/1936 8/2050/1936 -f 694/1385/1937 729/1790/1937 715/1683/1937 -f 715/1683/1938 729/1790/1938 773/1792/1938 -f 881/2051/1939 633/2052/1939 869/2021/1939 -f 1083/488/1940 1025/882/1940 1142/746/1940 -f 669/1434/1941 692/1435/1941 647/2053/1941 -f 796/2054/1942 806/1902/1942 795/1707/1942 -f 764/2055/1943 526/1497/1943 655/1809/1943 -f 883/2006/1944 641/1852/1944 864/1851/1944 -f 1317/2056/1945 1094/1170/1945 1114/1172/1945 -f 695/1490/1946 949/1489/1946 885/1619/1946 -f 682/745/1947 318/2057/1947 774/1061/1947 -f 667/2058/1948 802/2026/1948 901/2024/1948 -f 667/2058/1949 656/2049/1949 802/2026/1949 -f 732/2059/1950 825/2060/1950 656/2061/1950 -f 849/2062/1951 852/2063/1951 825/2046/1951 -f 633/2052/1952 728/2064/1952 869/2021/1952 -f 869/2021/1953 728/2064/1953 768/1180/1953 -f 974/1837/1954 591/1836/1954 573/1545/1954 -f 744/1622/1955 771/2065/1955 743/2066/1955 -f 929/1688/1956 881/1564/1956 869/2067/1956 -f 869/2021/1957 620/1655/1957 739/2068/1957 -f 2797/1717/1958 2816/2069/1958 2183/1718/1958 -f 824/1506/1959 926/1508/1959 871/1536/1959 -f 2422/2070/1960 2459/2071/1960 2517/2072/1960 -f 538/779/1961 645/780/1961 125/572/1961 -f 2483/2073/1962 988/448/1962 978/450/1962 -f 908/2074/1963 1093/277/1963 1201/511/1963 -f 901/2024/1964 666/1877/1964 667/2058/1964 -f 667/2075/1965 732/2059/1965 656/2061/1965 -f 732/2076/1966 849/2077/1966 825/1682/1966 -f 889/1863/1967 852/935/1967 849/2077/1967 -f 908/2074/1968 1143/512/1968 1093/277/1968 -f 3483/1639/1969 3453/856/1969 1897/858/1969 -f 717/1991/1970 679/1988/1970 136/378/1970 -f 875/1819/1971 916/2078/1971 895/2079/1971 -f 863/1845/1972 819/1887/1972 808/1494/1972 -f 568/2080/1973 665/1853/1973 930/1529/1973 -f 622/1593/1974 647/2053/1974 631/1725/1974 -f 647/2081/1975 646/2082/1975 631/2083/1975 -f 622/1593/1976 631/1725/1976 611/1594/1976 -f 692/2084/1977 676/2085/1977 647/1742/1977 -f 865/1822/1978 871/1527/1978 930/1529/1978 -f 869/2021/1979 767/2020/1979 620/1655/1979 -f 624/1645/1980 604/1174/1980 890/852/1980 -f 471/31/1981 811/831/1981 685/1681/1981 -f 897/1516/1982 884/1888/1982 925/1488/1982 -f 933/2086/1983 732/2076/1983 667/2058/1983 -f 3406/2012/1984 571/2087/1984 588/477/1984 -f 820/1510/1985 863/1845/1985 808/1494/1985 -f 794/815/1986 818/1715/1986 847/816/1986 -f 941/1451/1987 891/297/1987 886/331/1987 -f 591/1592/1988 612/1838/1988 622/1593/1988 -f 714/1558/1989 721/1557/1989 713/1706/1989 -f 721/1557/1990 744/1437/1990 713/1706/1990 -f 744/1622/1991 796/1621/1991 771/2065/1991 -f 878/1952/1992 790/1561/1992 940/1794/1992 -f 2478/2088/1993 2515/1866/1993 1834/1865/1993 -f 997/1026/1994 1006/1923/1994 996/897/1994 -f 842/516/1995 697/515/1995 751/2089/1995 -f 854/2028/1996 933/2086/1996 667/2058/1996 -f 632/2090/1997 732/2059/1997 933/2091/1997 -f 732/2076/1998 632/2092/1998 849/2077/1998 -f 674/1475/1999 842/516/1999 751/2089/1999 -f 1862/174/2000 1893/2093/2000 2093/338/2000 -f 18/2094/2001 810/1395/2001 562/995/2001 -f 571/2087/2002 3406/2012/2002 3376/2095/2002 -f 68/818/2003 80/209/2003 60/784/2003 -f 645/780/2004 202/674/2004 281/415/2004 -f 1036/2096/2005 1209/2097/2005 504/2098/2005 -f 1155/492/2006 2197/1925/2006 2257/1927/2006 -f 647/1742/2007 676/2085/2007 646/2099/2007 -f 2096/2100/2008 2651/2101/2008 2499/2102/2008 -f 641/1580/2009 850/1641/2009 746/1950/2009 -f 1175/419/2010 1181/418/2010 812/2103/2010 -f 927/1828/2011 667/2058/2011 666/1877/2011 -f 927/1828/2012 854/2028/2012 667/2058/2012 -f 905/2104/2013 889/2105/2013 849/2062/2013 -f 749/1770/2014 105/2029/2014 740/2106/2014 -f 1083/488/2015 1142/746/2015 438/489/2015 -f 762/1492/2016 722/1405/2016 735/1404/2016 -f 744/1622/2017 743/2066/2017 713/2107/2017 -f 631/2083/2018 646/2082/2018 637/2108/2018 -f 796/2054/2019 795/1707/2019 771/1686/2019 -f 719/1954/2020 730/2109/2020 725/1534/2020 -f 612/1838/2021 648/1839/2021 622/1593/2021 -f 360/901/2022 471/31/2022 852/935/2022 -f 971/977/2023 990/2110/2023 970/978/2023 -f 690/1254/2024 711/2000/2024 710/1391/2024 -f 600/1974/2025 599/1835/2025 975/1748/2025 -f 884/1888/2026 876/1820/2026 925/1488/2026 -f 949/1489/2027 582/1505/2027 1030/1963/2027 -f 1163/2111/2028 666/2044/2028 1092/2112/2028 -f 854/2028/2029 882/2113/2029 933/2086/2029 -f 882/2114/2030 632/2090/2030 933/2091/2030 -f 644/2115/2031 849/2077/2031 632/2092/2031 -f 849/2077/2032 644/2115/2032 905/2116/2032 -f 637/1674/2033 646/1424/2033 659/1423/2033 -f 2548/2117/2034 2852/2118/2034 2744/2119/2034 -f 3439/2120/2035 3493/399/2035 3471/398/2035 -f 904/1569/2036 653/432/2036 532/570/2036 -f 624/1645/2037 665/1853/2037 604/1174/2037 -f 475/1352/2038 682/745/2038 512/1353/2038 -f 929/2121/2039 869/2021/2039 739/2068/2039 -f 614/2122/2040 650/1555/2040 662/1554/2040 -f 614/1403/2041 662/2123/2041 613/2124/2041 -f 3279/106/2042 3294/105/2042 3342/165/2042 -f 707/2018/2043 632/2090/2043 882/2114/2043 -f 707/2018/2044 644/2023/2044 632/2090/2044 -f 810/1395/2045 297/2125/2045 889/2105/2045 -f 905/2104/2046 810/1395/2046 889/2105/2046 -f 2976/2126/2047 2977/1885/2047 2989/1884/2047 -f 1355/1960/2048 1633/2127/2048 1651/1958/2048 -f 571/2087/2049 580/1313/2049 588/477/2049 -f 1964/2128/2050 3236/2129/2050 3439/2130/2050 -f 1328/2131/2051 943/1872/2051 313/803/2051 -f 785/1538/2052 621/1540/2052 865/1822/2052 -f 611/1594/2053 631/1725/2053 598/1378/2053 -f 627/1727/2054 855/1381/2054 747/1383/2054 -f 1171/657/2055 316/356/2055 594/1044/2055 -f 878/1952/2056 940/1794/2056 916/1834/2056 -f 699/1897/2057 677/1882/2057 678/1774/2057 -f 1067/908/2058 1077/1175/2058 1044/909/2058 -f 600/1974/2059 638/1775/2059 599/1835/2059 -f 699/1897/2060 716/1992/2060 694/1911/2060 -f 915/854/2061 940/1794/2061 607/1808/2061 -f 1454/2132/2062 724/1370/2062 730/2109/2062 -f 845/1496/2063 905/2116/2063 644/2115/2063 -f 297/2125/2064 810/1395/2064 18/2094/2064 -f 3390/1375/2065 1986/1176/2065 2004/1177/2065 -f 1267/191/2066 1242/2133/2066 1285/192/2066 -f 1898/2134/2067 2808/2135/2067 2062/2136/2067 -f 1246/2137/2068 1083/488/2068 1127/490/2068 -f 407/315/2069 3336/314/2069 2279/1800/2069 -f 704/1759/2070 712/1705/2070 711/2000/2070 -f 796/2054/2071 807/1672/2071 806/1902/2071 -f 630/1673/2072 631/1725/2072 637/1674/2072 -f 560/1032/2073 608/2138/2073 753/1766/2073 -f 739/2068/2074 620/1655/2074 917/1657/2074 -f 713/1706/2075 712/1705/2075 704/1759/2075 -f 716/1803/2076 760/1791/2076 729/1790/2076 -f 608/996/2077 562/995/2077 810/1395/2077 -f 1386/129/2078 134/203/2078 363/1233/2078 -f 790/1561/2079 746/1823/2079 764/1562/2079 -f 660/1454/2080 677/1384/2080 669/1434/2080 -f 854/2028/2081 769/1389/2081 882/2113/2081 -f 769/1389/2082 707/1388/2082 882/2113/2082 -f 674/1396/2083 810/1395/2083 905/2104/2083 -f 888/2139/2084 845/1496/2084 644/2115/2084 -f 690/1254/2085 675/1827/2085 711/2000/2085 -f 999/1989/2086 1018/1025/2086 988/448/2086 -f 710/2140/2087 734/2141/2087 720/2142/2087 -f 785/1538/2088 526/1325/2088 764/1562/2088 -f 807/1672/2089 828/1746/2089 806/1902/2089 -f 623/1552/2090 595/514/2090 887/1658/2090 -f 795/1707/2091 806/1902/2091 818/1715/2091 -f 692/2084/2092 721/2143/2092 676/2085/2092 -f 875/1819/2093 895/2079/2093 861/1719/2093 -f 628/1449/2094 623/1552/2094 683/1450/2094 -f 2481/2144/2095 2465/2145/2095 2503/2146/2095 -f 669/1434/2096 677/1384/2096 693/1386/2096 -f 701/1473/2097 905/2116/2097 845/1496/2097 -f 905/2116/2098 701/1473/2098 674/1475/2098 -f 580/1313/2099 571/2087/2099 3348/2147/2099 -f 781/2148/2100 3252/2149/2100 1572/2150/2100 -f 636/551/2101 75/552/2101 629/899/2101 -f 1367/2151/2102 767/2020/2102 1303/1179/2102 -f 626/1474/2103 701/1473/2103 845/1496/2103 -f 1112/2152/2104 1040/2153/2104 1011/2154/2104 -f 2045/2155/2105 2044/2156/2105 2017/2157/2105 -f 2045/2155/2106 2058/2158/2106 2044/2156/2106 -f 1906/47/2107 1896/2159/2107 1514/2160/2107 -f 232/2161/2108 1138/42/2108 1170/2162/2108 -f 1016/2163/2109 1035/2164/2109 3436/1372/2109 -f 1016/2163/2110 1011/2154/2110 1035/2164/2110 -f 749/1289/2111 857/1783/2111 3426/1004/2111 -f 1360/2165/2112 1359/2166/2112 120/494/2112 -f 3189/1637/2113 3212/2167/2113 3211/2168/2113 -f 1788/1227/2114 1787/1229/2114 1773/2169/2114 -f 1041/420/2115 158/80/2115 1319/200/2115 -f 1415/2170/2116 1158/2171/2116 2100/2172/2116 -f 2090/2173/2117 515/2174/2117 1461/46/2117 -f 955/2175/2118 2993/2176/2118 960/2177/2118 -f 1487/2178/2119 1479/2179/2119 3397/2180/2119 -f 1839/2181/2120 1626/2182/2120 1846/1200/2120 -f 3507/1858/2121 1016/2163/2121 3436/1372/2121 -f 1855/113/2122 1377/175/2122 1960/884/2122 -f 1011/2154/2123 950/2183/2123 1112/2152/2123 -f 988/448/2124 1018/1025/2124 998/449/2124 -f 1459/40/2125 1634/2184/2125 1602/41/2125 -f 2031/2185/2126 1311/2186/2126 1968/2187/2126 -f 1319/200/2127 1325/199/2127 1995/2188/2127 -f 1995/2188/2128 1724/408/2128 1762/407/2128 -f 1792/2189/2129 2275/2190/2129 1791/2191/2129 -f 2373/2192/2130 2135/2193/2130 2334/2194/2130 -f 1218/1857/2131 1016/2163/2131 3507/1858/2131 -f 955/2175/2132 960/2177/2132 959/576/2132 -f 1218/1857/2133 950/2183/2133 1016/2163/2133 -f 1724/408/2134 1137/2195/2134 1981/58/2134 -f 1011/2154/2135 1040/2153/2135 1035/2164/2135 -f 3436/1372/2136 1035/2164/2136 1101/2196/2136 -f 980/2197/2137 1010/2198/2137 1001/2199/2137 -f 1107/2200/2138 1125/747/2138 1106/749/2138 -f 1814/2201/2139 2294/2202/2139 1827/1513/2139 -f 633/2052/2140 1189/1986/2140 965/1978/2140 -f 1378/594/2141 1137/2195/2141 2104/592/2141 -f 2275/2190/2142 2294/2202/2142 1791/2191/2142 -f 1082/2203/2143 1087/2204/2143 1071/702/2143 -f 2104/592/2144 20/707/2144 2047/593/2144 -f 20/707/2145 1571/2205/2145 2087/822/2145 -f 3280/107/2146 3279/106/2146 3213/2206/2146 -f 1193/334/2147 1175/1221/2147 1014/914/2147 -f 2087/822/2148 1571/2205/2148 2061/2207/2148 -f 2859/2208/2149 2064/2209/2149 2218/2210/2149 -f 2898/2211/2150 2882/2212/2150 2867/2213/2150 -f 1925/2214/2151 1568/2215/2151 1711/2216/2151 -f 1501/2217/2152 1735/2218/2152 1734/2219/2152 -f 1725/2220/2153 1501/2217/2153 1734/2219/2153 -f 1027/2221/2154 1012/2222/2154 3468/2223/2154 -f 1138/42/2155 1179/82/2155 1178/1662/2155 -f 1188/1575/2156 2121/323/2156 1128/1576/2156 -f 2784/2224/2157 2770/2225/2157 1125/2226/2157 -f 1101/2196/2158 1118/1117/2158 3485/326/2158 -f 1065/2227/2159 1209/2097/2159 1036/2096/2159 -f 3241/309/2160 3280/107/2160 3213/2206/2160 -f 2925/2228/2161 2926/2229/2161 2944/2230/2161 -f 467/2231/2162 1379/588/2162 1131/2232/2162 -f 1188/1575/2163 2069/321/2163 2121/323/2163 -f 1288/2233/2164 2031/2185/2164 1978/340/2164 -f 2687/2234/2165 1931/2235/2165 1908/2236/2165 -f 1059/2014/2166 1070/2237/2166 1046/2238/2166 -f 1216/2239/2167 1112/2152/2167 950/2183/2167 -f 1027/2221/2168 1111/1971/2168 1012/2222/2168 -f 1097/2240/2169 1139/2241/2169 1105/2242/2169 -f 1369/2243/2170 1393/2244/2170 243/2245/2170 -f 1216/2239/2171 1217/193/2171 1112/2152/2171 -f 1047/2246/2172 1046/2247/2172 1033/2248/2172 -f 3426/1004/2173 1004/2249/2173 105/1290/2173 -f 1263/154/2174 1315/156/2174 1172/1690/2174 -f 1820/2250/2175 1992/2251/2175 1561/2252/2175 -f 2372/2253/2176 963/2254/2176 2910/2255/2176 -f 1118/1117/2177 1101/2196/2177 1073/2256/2177 -f 1073/2256/2178 1040/2153/2178 976/2257/2178 -f 985/319/2179 1222/1084/2179 226/832/2179 -f 226/832/2180 1100/834/2180 1064/983/2180 -f 1140/2258/2181 1157/2259/2181 1169/2260/2181 -f 1072/2261/2182 1071/702/2182 2552/701/2182 -f 3212/2167/2183 3213/2206/2183 3227/2262/2183 -f 1072/2261/2184 1082/2203/2184 1071/702/2184 -f 1134/1802/2185 3438/2263/2185 983/1985/2185 -f 1012/2222/2186 1189/1986/2186 983/1985/2186 -f 2723/653/2187 2753/652/2187 2601/2264/2187 -f 781/2148/2188 2046/2265/2188 2017/2157/2188 -f 2031/2185/2189 2071/2266/2189 1978/340/2189 -f 2103/116/2190 2116/2267/2190 2102/2268/2190 -f 992/2269/2191 1173/2270/2191 908/2074/2191 -f 3175/2271/2192 3197/2272/2192 3174/2273/2192 -f 502/2274/2193 1328/907/2193 479/906/2193 -f 1029/2275/2194 1116/2276/2194 3489/753/2194 -f 3045/2277/2195 3087/1409/2195 3057/1411/2195 -f 1203/2278/2196 2137/2279/2196 1202/2280/2196 -f 1139/2241/2197 1140/2258/2197 1169/2260/2197 -f 1810/1228/2198 1577/1955/2198 1831/2281/2198 -f 1139/2282/2199 1124/1431/2199 1105/2283/2199 -f 2137/2279/2200 992/2269/2200 1202/2280/2200 -f 2488/2284/2201 989/2285/2201 1007/2286/2201 -f 992/2269/2202 1050/2287/2202 1173/2270/2202 -f 3355/2288/2203 3414/2289/2203 1957/2290/2203 -f 1568/2215/2204 1925/2214/2204 1159/2291/2204 -f 1035/2164/2205 1073/2256/2205 1101/2196/2205 -f 2209/2292/2206 2377/2293/2206 2215/2294/2206 -f 1218/1857/2207 1148/429/2207 950/2183/2207 -f 1148/429/2208 1216/2239/2208 950/2183/2208 -f 2436/2295/2209 3019/2296/2209 3030/2297/2209 -f 2276/2298/2210 2231/2299/2210 2230/2300/2210 -f 2839/1640/2211 3434/869/2211 3483/1639/2211 -f 3482/1332/2212 3453/2301/2212 3492/1003/2212 -f 2085/339/2213 1807/2302/2213 1288/2233/2213 -f 1807/2302/2214 2085/339/2214 2068/1846/2214 -f 1246/2137/2215 2277/881/2215 1083/488/2215 -f 1831/937/2216 1818/2303/2216 1809/2304/2216 -f 1766/57/2217 1088/111/2217 1215/421/2217 -f 2634/362/2218 2653/2305/2218 2652/724/2218 -f 1151/2306/2219 1777/2307/2219 364/2308/2219 -f 1081/2309/2220 1105/2242/2220 1080/2310/2220 -f 1105/2242/2221 1096/2311/2221 1080/2310/2221 -f 1239/2312/2222 1311/1368/2222 57/1367/2222 -f 2221/2313/2223 2248/1131/2223 2287/2314/2223 -f 1784/2315/2224 1555/2316/2224 1785/589/2224 -f 2040/1017/2225 2081/2317/2225 2056/2318/2225 -f 1379/588/2226 1747/81/2226 182/260/2226 -f 2424/245/2227 2673/2319/2227 3428/759/2227 -f 1348/115/2228 1308/164/2228 1289/2320/2228 -f 2084/2321/2229 2068/1846/2229 2085/339/2229 -f 1893/2093/2230 2085/339/2230 2093/338/2230 -f 1800/1148/2231 1799/176/2231 1786/2322/2231 -f 2653/2305/2232 2689/1201/2232 2652/724/2232 -f 1029/2275/2233 1180/324/2233 1036/2096/2233 -f 1008/2323/2234 1007/2324/2234 989/2325/2234 -f 2153/1194/2235 2677/2326/2235 2482/2327/2235 -f 1757/2328/2236 1770/1090/2236 1764/2329/2236 -f 1024/2330/2237 2377/2293/2237 2209/2292/2237 -f 1869/59/2238 1377/175/2238 1108/112/2238 -f 2201/2331/2239 2191/2332/2239 2302/2333/2239 -f 1124/2334/2240 1139/2241/2240 1169/2260/2240 -f 1855/113/2241 1062/2335/2241 1147/261/2241 -f 1460/2035/2242 1078/6/2242 1414/2336/2242 -f 1214/2337/2243 1286/2338/2243 1777/2339/2243 -f 1286/2340/2244 1379/588/2244 1777/2307/2244 -f 1081/2309/2245 1080/2310/2245 1070/2341/2245 -f 1377/175/2246 1862/174/2246 1960/884/2246 -f 1269/2342/2247 1415/1660/2247 1122/2343/2247 -f 2524/2344/2248 3462/2345/2248 3441/870/2248 -f 1269/2346/2249 3352/2347/2249 1415/2170/2249 -f 2795/2348/2250 2012/2349/2250 2847/2350/2250 -f 1322/2351/2251 1828/2352/2251 2049/2353/2251 -f 1000/2354/2252 1008/2323/2252 989/2325/2252 -f 2406/2355/2253 2405/2356/2253 2911/2357/2253 -f 846/1816/2254 838/1764/2254 619/1817/2254 -f 1218/1857/2255 1042/427/2255 1148/429/2255 -f 2713/2358/2256 1125/2226/2256 1107/2359/2256 -f 1026/320/2257 1064/983/2257 708/2360/2257 -f 561/2361/2258 1325/199/2258 158/80/2258 -f 1096/2311/2259 1104/2362/2259 1103/2363/2259 -f 2120/186/2260 2093/338/2260 1978/340/2260 -f 1033/2248/2261 1046/2247/2261 1022/2364/2261 -f 1845/178/2262 1619/2365/2262 1612/2366/2262 -f 2713/2358/2263 1107/2359/2263 2662/2367/2263 -f 1097/2240/2264 1105/2242/2264 1081/2309/2264 -f 599/1835/2265 974/1837/2265 975/1748/2265 -f 1044/909/2266 1054/1768/2266 1031/1573/2266 -f 384/1609/2267 809/1624/2267 686/1610/2267 -f 1004/1317/2268 3431/2368/2268 686/1610/2268 -f 1105/2242/2269 1124/2334/2269 1096/2311/2269 -f 970/978/2270 979/2369/2270 969/2370/2270 -f 1612/2366/2271 1617/541/2271 1844/2371/2271 -f 1189/1883/2272 615/1582/2272 939/1581/2272 -f 1378/594/2273 2047/593/2273 1154/364/2273 -f 1020/2372/2274 1033/2248/2274 1022/2364/2274 -f 1862/174/2275 577/185/2275 1960/884/2275 -f 1010/1597/2276 1009/1596/2276 1001/2373/2276 -f 2119/2374/2277 1621/2375/2277 20/707/2277 -f 1180/324/2278 1065/2227/2278 1036/2096/2278 -f 2145/2376/2279 1291/1680/2279 1283/2377/2279 -f 983/1985/2280 991/2378/2280 1012/2222/2280 -f 3500/325/2281 1180/324/2281 1029/2275/2281 -f 1862/174/2282 2093/338/2282 577/185/2282 -f 970/2379/2283 989/2325/2283 979/2380/2283 -f 1460/2035/2284 1414/2336/2284 1289/2320/2284 -f 1070/2341/2285 1069/2381/2285 1058/2382/2285 -f 980/2197/2286 1001/2199/2286 971/977/2286 -f 962/1964/2287 980/2197/2287 971/977/2287 -f 1111/1971/2288 1189/1986/2288 1012/2222/2288 -f 2044/2156/2289 2043/563/2289 3182/562/2289 -f 1124/1431/2290 1169/2383/2290 1168/2384/2290 -f 3251/2385/2291 953/2386/2291 3270/2387/2291 -f 1151/2388/2292 1214/2337/2292 1777/2339/2292 -f 1968/2187/2293 1988/2389/2293 2071/2266/2293 -f 982/259/2294 1147/261/2294 1062/2335/2294 -f 1069/2381/2295 1103/2363/2295 1068/2390/2295 -f 1078/6/2296 228/5/2296 1414/2336/2296 -f 1203/2278/2297 1202/2280/2297 1196/2391/2297 -f 1762/407/2298 1766/57/2298 1215/421/2298 -f 2044/2156/2299 2057/219/2299 2043/563/2299 -f 1798/912/2300 1605/540/2300 1597/913/2300 -f 1017/1942/2301 1031/1573/2301 1054/1768/2301 -f 2289/1443/2302 2158/1442/2302 2862/2392/2302 -f 1059/703/2303 1081/2309/2303 1070/2341/2303 -f 1020/2372/2304 1022/2364/2304 1008/2393/2304 -f 1020/2394/2305 1008/2323/2305 1009/1596/2305 -f 821/2395/2306 1214/30/2306 1151/2306/2306 -f 652/1140/2307 2229/1142/2307 657/2396/2307 -f 1032/2397/2308 2551/2398/2308 2527/2399/2308 -f 1855/113/2309 1935/886/2309 1062/2335/2309 -f 1070/2341/2310 1058/2382/2310 1032/2397/2310 -f 1022/2364/2311 1032/2397/2311 1007/2286/2311 -f 1008/2393/2312 1022/2364/2312 1007/2286/2312 -f 961/979/2313 970/978/2313 969/2370/2313 -f 3451/1929/2314 870/2400/2314 3480/1300/2314 -f 1126/2401/2315 1216/2239/2315 1148/429/2315 -f 242/1967/2316 1217/193/2316 1216/2239/2316 -f 1126/2401/2317 242/1967/2317 1216/2239/2317 -f 3501/350/2318 3496/1097/2318 3452/1099/2318 -f 2250/2402/2319 2242/2403/2319 2382/2005/2319 -f 1157/2259/2320 1185/2404/2320 1184/2405/2320 -f 1185/2404/2321 1203/2278/2321 1184/2405/2321 -f 2242/2406/2322 2250/2407/2322 2282/2408/2322 -f 953/1544/2323 975/1748/2323 974/1837/2323 -f 3452/2409/2324 3507/1858/2324 3436/1372/2324 -f 1001/2199/2325 990/2110/2325 971/977/2325 -f 1916/2410/2326 2171/2411/2326 1449/2412/2326 -f 1784/2315/2327 1785/589/2327 1796/591/2327 -f 970/2379/2328 1000/2354/2328 989/2325/2328 -f 3391/2413/2329 1974/108/2329 3390/1375/2329 -f 3438/2263/2330 991/2378/2330 983/1985/2330 -f 3431/2368/2331 1160/1611/2331 686/1610/2331 -f 1035/2164/2332 1040/2153/2332 1073/2256/2332 -f 3371/683/2333 3372/2414/2333 3381/684/2333 -f 3481/1108/2334 1148/429/2334 3478/428/2334 -f 2911/2357/2335 2405/2356/2335 2909/2415/2335 -f 1920/2416/2336 2360/2417/2336 2225/2418/2336 -f 1484/2419/2337 1502/2420/2337 1501/2217/2337 -f 2616/2421/2338 1866/2422/2338 2581/2423/2338 -f 1996/2424/2339 2364/2425/2339 2307/2426/2339 -f 3449/1266/2340 3450/1354/2340 3495/359/2340 -f 652/1140/2341 657/2396/2341 837/2427/2341 -f 1032/2397/2342 1058/2382/2342 2551/2398/2342 -f 857/1783/2343 805/1703/2343 3509/1702/2343 -f 1694/2428/2344 3335/2429/2344 1669/862/2344 -f 2419/2430/2345 981/2431/2345 963/2432/2345 -f 2377/2293/2346 2339/2433/2346 2215/2294/2346 -f 2909/2415/2347 2405/2356/2347 2404/2434/2347 -f 1286/2340/2348 1747/81/2348 1379/588/2348 -f 1118/1117/2349 1065/2227/2349 1180/324/2349 -f 3329/2435/2350 3374/2436/2350 3328/2437/2350 -f 1166/602/2351 1155/492/2351 2257/1927/2351 -f 947/1623/2352 470/554/2352 426/700/2352 -f 2377/2293/2353 2132/2438/2353 2339/2433/2353 -f 1090/2439/2354 242/1967/2354 1126/2401/2354 -f 1389/603/2355 410/1215/2355 756/675/2355 -f 1617/541/2356 1612/2366/2356 1618/2440/2356 -f 1104/2362/2357 1123/424/2357 1103/2363/2357 -f 1800/1125/2358 1786/2441/2358 1764/2329/2358 -f 1213/2442/2359 908/2074/2359 1201/511/2359 -f 558/635/2360 652/1140/2360 837/2427/2360 -f 1168/2443/2361 1213/2442/2361 1167/2047/2361 -f 1096/2311/2362 1103/2363/2362 1069/2381/2362 -f 3214/2444/2363 3243/2445/2363 3228/2446/2363 -f 1104/2362/2364 1124/2334/2364 1168/2443/2364 -f 1118/1117/2365 976/2257/2365 1065/2227/2365 -f 2104/592/2366 2119/2374/2366 20/707/2366 -f 1910/2447/2367 1889/2448/2367 3288/2449/2367 -f 1066/2450/2368 1148/429/2368 3481/1108/2368 -f 1066/2450/2369 1126/2401/2369 1148/429/2369 -f 1411/2451/2370 1183/1034/2370 1438/1036/2370 -f 1095/4/2371 2100/1661/2371 1214/30/2371 -f 976/2257/2372 1040/2153/2372 24/2452/2372 -f 1855/113/2373 1960/884/2373 1935/886/2373 -f 1103/2363/2374 1079/2453/2374 1068/2390/2374 -f 1786/2322/2375 1798/912/2375 1567/911/2375 -f 1066/2450/2376 1090/2439/2376 1126/2401/2376 -f 2403/2454/2377 2909/2415/2377 2404/2434/2377 -f 1129/2455/2378 2770/2225/2378 1140/2456/2378 -f 2770/1701/2379 1185/2404/2379 1157/2259/2379 -f 2907/2457/2380 2916/851/2380 2906/2458/2380 -f 3496/1097/2381 3465/838/2381 3502/837/2381 -f 2339/2433/2382 2328/2459/2382 2138/2460/2382 -f 1156/452/2383 1168/2443/2383 1167/2047/2383 -f 1923/2461/2384 1507/1196/2384 2896/2462/2384 -f 1029/2275/2385 229/2463/2385 1116/2276/2385 -f 1029/2275/2386 1036/2096/2386 229/2463/2386 -f 1036/2096/2387 504/2098/2387 229/2463/2387 -f 1169/2260/2388 1184/2405/2388 1168/2443/2388 -f 1157/2259/2389 1184/2405/2389 1169/2260/2389 -f 812/2464/2390 924/2001/2390 1175/1221/2390 -f 136/378/2391 670/1062/2391 102/796/2391 -f 2939/2465/2392 2964/527/2392 2974/529/2392 -f 3382/2466/2393 3372/2414/2393 3342/165/2393 -f 3382/2466/2394 3342/165/2394 3294/105/2394 -f 1805/2467/2395 3510/1467/2395 3491/2468/2395 -f 2770/1701/2396 1157/2259/2396 1140/2258/2396 -f 3494/1305/2397 3459/1457/2397 3485/326/2397 -f 1843/2469/2398 1853/2470/2398 1816/2471/2398 -f 961/979/2399 969/2370/2399 957/1053/2399 -f 3503/615/2400 1042/427/2400 3507/1858/2400 -f 3482/1332/2401 3492/1003/2401 3424/1002/2401 -f 3465/838/2402 3491/2468/2402 3455/839/2402 -f 961/979/2403 957/1053/2403 2956/2472/2403 -f 985/319/2404 226/832/2404 1064/983/2404 -f 1202/2280/2405 992/2269/2405 908/2074/2405 -f 1744/2473/2406 1734/2219/2406 1735/2218/2406 -f 1202/2280/2407 908/2074/2407 1213/2442/2407 -f 3045/2277/2408 3057/1411/2408 2998/2474/2408 -f 1023/2475/2409 1033/2248/2409 2506/2476/2409 -f 1023/2475/2410 1047/2246/2410 1033/2248/2410 -f 962/1964/2411 971/977/2411 961/979/2411 -f 1744/2477/2412 1772/1046/2412 1734/1048/2412 -f 1756/2478/2413 1757/2328/2413 1764/2329/2413 -f 1844/2371/2414 1845/178/2414 1612/2366/2414 -f 1772/1046/2415 1801/2479/2415 1771/1089/2415 -f 1801/2480/2416 1808/1147/2416 1771/2481/2416 -f 1057/2482/2417 1069/2381/2417 1063/2483/2417 -f 1129/2455/2418 1140/2456/2418 1139/2282/2418 -f 2984/2484/2419 3025/2485/2419 2983/528/2419 -f 1818/2303/2420 1817/177/2420 1808/1147/2420 -f 3242/1937/2421 3280/107/2421 3241/309/2421 -f 1032/2397/2422 2527/2399/2422 1007/2286/2422 -f 1777/2307/2423 467/2231/2423 364/2308/2423 -f 1103/2363/2424 1123/424/2424 1079/2453/2424 -f 2371/2486/2425 1887/1891/2425 2902/2487/2425 -f 2336/2488/2426 2190/2489/2426 2003/2490/2426 -f 1106/2491/2427 1129/2455/2427 1097/2492/2427 -f 1002/358/2428 1066/2450/2428 3481/1108/2428 -f 1460/2035/2429 1289/2320/2429 1308/164/2429 -f 1214/2337/2430 2100/2172/2430 1286/2338/2430 -f 1071/2493/2431 1081/2494/2431 1059/2014/2431 -f 1001/2373/2432 1000/2354/2432 990/2495/2432 -f 1213/2442/2433 1201/511/2433 1167/2047/2433 -f 1196/2391/2434 1202/2280/2434 1213/2442/2434 -f 951/1965/2435 961/979/2435 2956/2472/2435 -f 1817/177/2436 1818/2303/2436 1846/1200/2436 -f 1770/1090/2437 1800/1125/2437 1764/2329/2437 -f 2031/2185/2438 1968/2187/2438 2071/2266/2438 -f 1069/2381/2439 1068/2390/2439 1063/2483/2439 -f 1936/2496/2440 1864/2497/2440 1912/628/2440 -f 2770/2225/2441 2830/2498/2441 1185/2499/2441 -f 1066/2450/2442 1002/358/2442 1090/2439/2442 -f 1090/2439/2443 1100/834/2443 242/1967/2443 -f 1905/2500/2444 2069/321/2444 1188/1575/2444 -f 1289/2320/2445 1414/2336/2445 1152/2501/2445 -f 992/2269/2446 2137/2279/2446 1050/2287/2446 -f 1203/2278/2447 1196/2391/2447 1184/2405/2447 -f 228/5/2448 1214/30/2448 821/2395/2448 -f 969/2502/2449 979/531/2449 2458/530/2449 -f 1295/2503/2450 1260/184/2450 1231/183/2450 -f 2268/2504/2451 2252/2505/2451 2213/2506/2451 -f 963/2254/2452 958/2507/2452 2929/2508/2452 -f 1009/1596/2453 1008/2323/2453 1000/2354/2453 -f 2956/2472/2454 957/1053/2454 2967/1052/2454 -f 969/1999/2455 2440/1881/2455 957/2509/2455 -f 1077/1175/2456 1094/1170/2456 1086/1769/2456 -f 908/2074/2457 1173/2270/2457 1143/512/2457 -f 1123/424/2458 1104/2362/2458 1156/452/2458 -f 1080/2510/2459 1096/1433/2459 1069/2511/2459 -f 2402/2512/2460 2372/2253/2460 2910/2255/2460 -f 3375/2513/2461 3385/2514/2461 3374/2436/2461 -f 931/285/2462 1159/2291/2462 1277/100/2462 -f 2085/339/2463 1288/2233/2463 1978/340/2463 -f 1799/176/2464 1845/178/2464 1844/2371/2464 -f 775/1316/2465 740/2106/2465 105/2029/2465 -f 666/2515/2466 1163/280/2466 927/1776/2466 -f 616/1784/2467 942/1765/2467 846/1816/2467 -f 950/2183/2468 1011/2154/2468 1016/2163/2468 -f 2506/2476/2469 1033/2248/2469 1020/2372/2469 -f 1905/2500/2470 1925/2214/2470 1711/2216/2470 -f 1087/2516/2471 1097/2492/2471 1081/2494/2471 -f 972/2517/2472 980/2197/2472 962/1964/2472 -f 576/1654/2473 3270/2518/2473 573/1778/2473 -f 1653/776/2474 1811/1362/2474 664/210/2474 -f 860/1617/2475 348/927/2475 361/728/2475 -f 314/2519/2476 873/1507/2476 1030/1963/2476 -f 2810/253/2477 2869/1415/2477 2809/254/2477 -f 1001/2373/2478 1009/1596/2478 1000/2354/2478 -f 1766/57/2479 1108/112/2479 1088/111/2479 -f 1097/2492/2480 1129/2455/2480 1139/2282/2480 -f 1183/1034/2481 1210/1652/2481 8/2050/2481 -f 963/2254/2482 2929/2508/2482 2910/2255/2482 -f 1163/2520/2483 986/2521/2483 927/1828/2483 -f 1579/2522/2484 2066/2523/2484 2058/2158/2484 -f 2477/2524/2485 2498/2525/2485 2478/2526/2485 -f 2443/848/2486 2193/847/2486 2498/2525/2486 -f 1071/2493/2487 1087/2516/2487 1081/2494/2487 -f 2402/2512/2488 2410/2527/2488 2372/2253/2488 -f 972/2517/2489 962/1964/2489 958/2528/2489 -f 1132/301/2490 3470/281/2490 870/2400/2490 -f 725/1534/2491 730/2109/2491 724/1370/2491 -f 314/2519/2492 1030/1963/2492 582/1505/2492 -f 2869/1415/2493 2868/2529/2493 2841/1416/2493 -f 924/2001/2494 812/2464/2494 1117/2045/2494 -f 963/2530/2495 972/2517/2495 958/2528/2495 -f 3492/1003/2496 3483/1780/2496 3432/2531/2496 -f 1119/1814/2497 1121/2532/2497 846/1816/2497 -f 1034/2533/2498 616/1784/2498 846/1816/2498 -f 616/1784/2499 1034/2533/2499 1172/1690/2499 -f 2285/2534/2500 2316/2535/2500 2254/2536/2500 -f 1022/2364/2501 1046/2247/2501 1032/2397/2501 -f 1196/2391/2502 1213/2442/2502 1168/2443/2502 -f 1184/2405/2503 1196/2391/2503 1168/2443/2503 -f 1104/2362/2504 1168/2443/2504 1156/452/2504 -f 1046/2247/2505 1070/2341/2505 1032/2397/2505 -f 2490/2537/2506 1010/2198/2506 980/2197/2506 -f 1198/1938/2507 491/1504/2507 876/1820/2507 -f 3440/2538/2508 3433/349/2508 3459/665/2508 -f 7/1704/2509 932/1893/2509 1132/301/2509 -f 996/897/2510 1005/1924/2510 987/1092/2510 -f 2403/2454/2511 2410/2527/2511 2402/2512/2511 -f 1117/750/2512 812/2103/2512 3467/1591/2512 -f 2490/2539/2513 2506/1595/2513 1010/1597/2513 -f 1121/2532/2514 1034/2533/2514 846/1816/2514 -f 1068/2390/2515 2329/2540/2515 2599/2541/2515 -f 2697/2542/2516 977/2543/2516 3462/2345/2516 -f 1070/2341/2517 1080/2310/2517 1069/2381/2517 -f 3063/898/2518 954/577/2518 968/632/2518 -f 491/1504/2519 351/2544/2519 582/1505/2519 -f 351/2544/2520 314/2519/2520 582/1505/2520 -f 2346/1274/2521 1413/1226/2521 1362/1261/2521 -f 438/489/2522 1191/1526/2522 1133/723/2522 -f 3463/300/2523 3437/299/2523 3504/2545/2523 -f 3246/335/2524 3216/337/2524 3192/2546/2524 -f 3481/1108/2525 3458/1446/2525 1002/358/2525 -f 1165/2547/2526 1121/2532/2526 1119/1814/2526 -f 1079/2453/2527 1123/424/2527 1115/426/2527 -f 1764/2329/2528 1548/2548/2528 1756/2478/2528 -f 1002/358/2529 1153/360/2529 1090/2439/2529 -f 3194/2549/2530 78/811/2530 3170/1173/2530 -f 1058/2382/2531 1069/2381/2531 1057/2482/2531 -f 990/2495/2532 1000/2354/2532 970/2379/2532 -f 1073/2256/2533 976/2257/2533 1118/1117/2533 -f 453/1948/2534 3438/2263/2534 1134/1802/2534 -f 1183/1034/2535 1198/1938/2535 831/1831/2535 -f 814/343/2536 873/1507/2536 314/2519/2536 -f 1173/2270/2537 558/635/2537 1143/512/2537 -f 1165/2547/2538 1119/1814/2538 1298/1895/2538 -f 1034/2533/2539 1075/2550/2539 1172/1690/2539 -f 1045/405/2540 1061/517/2540 1013/406/2540 -f 1047/2246/2541 1059/703/2541 1046/2247/2541 -f 1084/1525/2542 1014/914/2542 1161/916/2542 -f 2046/2265/2543 2045/2155/2543 2017/2157/2543 -f 8/2050/2544 491/1504/2544 1198/1938/2544 -f 558/635/2545 837/2427/2545 2393/636/2545 -f 3477/788/2546 3433/349/2546 3460/1116/2546 -f 594/1044/2547 1162/140/2547 1053/2551/2547 -f 1034/2533/2548 1121/2532/2548 1075/2550/2548 -f 2178/2552/2549 2164/2553/2549 2174/2554/2549 -f 974/1837/2550 573/1545/2550 953/1544/2550 -f 651/1401/2551 1017/1942/2551 1043/1904/2551 -f 1076/303/2552 700/302/2552 1085/1984/2552 -f 981/2555/2553 980/2197/2553 972/2517/2553 -f 2901/2556/2554 2903/2557/2554 2370/2558/2554 -f 2673/2319/2555 2894/680/2555 3428/759/2555 -f 703/438/2556 133/439/2556 143/1028/2556 -f 8/2050/2557 1198/1938/2557 1183/1034/2557 -f 1053/2551/2558 351/2544/2558 491/1504/2558 -f 1153/360/2559 1100/834/2559 1090/2439/2559 -f 995/2559/2560 1017/1942/2560 651/1401/2560 -f 994/1979/2561 995/2559/2561 651/1401/2561 -f 1054/1768/2562 1085/1984/2562 700/302/2562 -f 2991/1880/2563 2990/2560/2563 2440/1881/2563 -f 981/2555/2564 2490/2537/2564 980/2197/2564 -f 1149/1043/2565 491/1504/2565 8/2050/2565 -f 315/341/2566 314/2519/2566 351/2544/2566 -f 377/571/2567 315/341/2567 351/2544/2567 -f 315/341/2568 814/343/2568 314/2519/2568 -f 2515/2040/2569 2231/2299/2569 1813/2561/2569 -f 963/2530/2570 981/2555/2570 972/2517/2570 -f 594/1044/2571 1053/2551/2571 1149/1043/2571 -f 1133/723/2572 1165/2547/2572 1298/1895/2572 -f 1084/1525/2573 1121/2532/2573 1165/2547/2573 -f 1121/2532/2574 1084/1525/2574 1075/2550/2574 -f 1043/1904/2575 1054/1768/2575 700/302/2575 -f 1153/360/2576 3495/359/2576 3447/982/2576 -f 1149/1043/2577 1053/2551/2577 491/1504/2577 -f 1053/2551/2578 377/571/2578 351/2544/2578 -f 1162/140/2579 377/571/2579 1053/2551/2579 -f 987/1092/2580 1005/1924/2580 995/2562/2580 -f 1044/909/2581 1077/1175/2581 1086/1769/2581 -f 823/142/2582 315/341/2582 377/571/2582 -f 838/1764/2583 846/1816/2583 942/1765/2583 -f 959/576/2584 978/450/2584 998/449/2584 -f 1133/723/2585 1191/1526/2585 1165/2547/2585 -f 1191/1526/2586 1084/1525/2586 1165/2547/2586 -f 1161/916/2587 1263/154/2587 1075/2550/2587 -f 120/494/2588 427/696/2588 1360/2165/2588 -f 987/1092/2589 995/2562/2589 994/2563/2589 -f 3149/2564/2590 987/1092/2590 994/2563/2590 -f 1017/1942/2591 1054/1768/2591 1043/1904/2591 -f 1054/1768/2592 1086/1769/2592 1085/1984/2592 -f 1113/139/2593 1399/138/2593 1085/1984/2593 -f 594/1044/2594 316/356/2594 1162/140/2594 -f 2043/563/2595 2057/219/2595 2016/88/2595 -f 353/1051/2596 251/48/2596 1237/543/2596 -f 1390/2565/2597 1373/15/2597 1402/14/2597 -f 2898/2211/2598 2897/2566/2598 2882/2212/2598 -f 35/1519/2599 1923/2461/2599 967/1517/2599 -f 1086/1769/2600 1113/139/2600 1085/1984/2600 -f 3348/2147/2601 571/2087/2601 3377/2567/2601 -f 1513/2568/2602 1500/2569/2602 1733/2570/2602 -f 1093/277/2603 1091/513/2603 1039/305/2603 -f 1084/1525/2604 1161/916/2604 1075/2550/2604 -f 995/2559/2605 1005/1777/2605 1017/1942/2605 -f 1380/151/2606 1442/2571/2606 396/152/2606 -f 1337/2572/2607 1383/1256/2607 1235/2573/2607 -f 1383/1256/2608 1247/2574/2608 1235/2573/2608 -f 1390/2565/2609 1417/1165/2609 1373/15/2609 -f 504/2098/2610 191/86/2610 1240/2575/2610 -f 1258/257/2611 1242/766/2611 1230/258/2611 -f 1219/2576/2612 1224/833/2612 1222/1084/2612 -f 1296/2577/2613 290/496/2613 137/495/2613 -f 1352/75/2614 31/2578/2614 1248/2579/2614 -f 1258/257/2615 1260/184/2615 1259/2580/2615 -f 1224/833/2616 1252/1096/2616 1100/834/2616 -f 1287/27/2617 9/16/2617 1227/28/2617 -f 3439/2120/2618 3236/1114/2618 3460/1116/2618 -f 1489/564/2619 2043/563/2619 2016/88/2619 -f 1382/2581/2620 1371/1959/2620 1434/34/2620 -f 1975/110/2621 1986/1176/2621 1974/108/2621 -f 1309/2582/2622 1871/2583/2622 1724/408/2622 -f 3453/2301/2623 3483/1780/2623 3492/1003/2623 -f 1094/1170/2624 1317/2056/2624 1113/139/2624 -f 574/1632/2625 919/1666/2625 121/1163/2625 -f 1410/2584/2626 1454/2585/2626 1399/2586/2626 -f 3442/2587/2627 1026/320/2627 708/2360/2627 -f 103/379/2628 93/804/2628 3218/548/2628 -f 1266/2588/2629 1283/1917/2629 728/2064/2629 -f 48/2589/2630 1493/2590/2630 1527/2591/2630 -f 1113/2592/2631 1317/2593/2631 1374/2594/2631 -f 1374/2594/2632 1410/2584/2632 1399/2586/2632 -f 1436/2595/2633 1454/2585/2633 1410/2584/2633 -f 1317/2593/2634 1342/2596/2634 1374/2594/2634 -f 1599/939/2635 1613/2597/2635 1638/2598/2635 -f 1318/2599/2636 1342/2596/2636 1317/2593/2636 -f 1374/2594/2637 1342/2596/2637 1410/2584/2637 -f 1410/2584/2638 1455/2600/2638 1436/2595/2638 -f 472/2601/2639 505/2602/2639 283/2603/2639 -f 11/2604/2640 472/2601/2640 283/2603/2640 -f 1318/2599/2641 1317/2593/2641 1114/2605/2641 -f 1342/2596/2642 1455/2600/2642 1410/2584/2642 -f 1436/2595/2643 1455/2600/2643 1249/180/2643 -f 1340/2606/2644 1341/2607/2644 329/606/2644 -f 1443/2608/2645 1257/2609/2645 1353/344/2645 -f 1385/2610/2646 1342/2596/2646 1318/2599/2646 -f 1342/2596/2647 1385/2610/2647 1455/2600/2647 -f 1343/2611/2648 1385/2610/2648 1318/2599/2648 -f 1455/2600/2649 1464/2612/2649 1249/180/2649 -f 1464/2612/2650 437/2613/2650 44/181/2650 -f 1249/180/2651 1464/2612/2651 44/181/2651 -f 1249/2614/2652 197/812/2652 724/1370/2652 -f 1439/273/2653 1402/14/2653 396/152/2653 -f 166/1295/2654 1681/2615/2654 1643/1294/2654 -f 1400/2616/2655 1385/2610/2655 1343/2611/2655 -f 1385/2610/2656 1400/2616/2656 1455/2600/2656 -f 1437/2617/2657 1464/2612/2657 1455/2600/2657 -f 220/2618/2658 763/1493/2658 437/2619/2658 -f 1257/2609/2659 1127/490/2659 1353/344/2659 -f 1108/112/2660 1377/175/2660 1855/113/2660 -f 1400/2616/2661 1437/2617/2661 1455/2600/2661 -f 220/2620/2662 1464/2612/2662 1437/2617/2662 -f 220/2621/2663 437/721/2663 1464/2622/2663 -f 414/50/2664 325/49/2664 42/202/2664 -f 1239/2312/2665 1296/2577/2665 1417/1165/2665 -f 1810/1228/2666 1809/2623/2666 1787/1229/2666 -f 1344/2624/2667 1400/2616/2667 1343/2611/2667 -f 1400/2616/2668 1422/2625/2668 1437/2617/2668 -f 1438/1036/2669 220/2618/2669 1437/2626/2669 -f 1422/2627/2670 1438/1036/2670 1437/2626/2670 -f 1438/1036/2671 1465/1035/2671 220/2618/2671 -f 345/94/2672 1458/291/2672 2332/990/2672 -f 1593/2628/2673 1673/2629/2673 1424/228/2673 -f 1424/228/2674 1331/77/2674 1332/76/2674 -f 1417/1165/2675 1296/2577/2675 137/495/2675 -f 1773/2169/2676 1765/2630/2676 1744/2477/2676 -f 1188/1575/2677 1879/1574/2677 2018/2631/2677 -f 1400/2616/2678 1344/2624/2678 1422/2625/2678 -f 416/2632/2679 439/1377/2679 423/1376/2679 -f 1254/78/2680 1408/560/2680 1358/1230/2680 -f 504/2098/2681 1240/2575/2681 2206/2633/2681 -f 1736/2634/2682 1773/2635/2682 1744/2473/2682 -f 1178/1662/2683 2100/1661/2683 1095/4/2683 -f 1343/2611/2684 2143/2636/2684 1344/2624/2684 -f 2197/2637/2685 1411/2638/2685 1344/2624/2685 -f 1344/2639/2686 1411/2451/2686 1422/2627/2686 -f 1422/2627/2687 1411/2451/2687 1438/1036/2687 -f 1391/2640/2688 2277/881/2688 1246/2137/2688 -f 1435/147/2689 365/145/2689 1172/1690/2689 -f 1261/29/2690 1227/28/2690 2180/2641/2690 -f 3475/664/2691 3440/2538/2691 3459/665/2691 -f 1178/1662/2692 1095/4/2692 1170/2162/2692 -f 2197/1925/2693 1176/491/2693 1411/2451/2693 -f 2397/2642/2694 569/2643/2694 190/454/2694 -f 788/1826/2695 1357/345/2695 835/1813/2695 -f 1395/2644/2696 1244/2645/2696 24/2452/2696 -f 2197/1925/2697 1155/492/2697 1176/491/2697 -f 1277/100/2698 1159/2291/2698 1141/101/2698 -f 1244/2645/2699 298/84/2699 24/2452/2699 -f 3238/2646/2700 3352/2347/2700 1269/2346/2700 -f 1244/2647/2701 205/2648/2701 298/2649/2701 -f 531/385/2702 542/413/2702 866/1472/2702 -f 1420/2650/2703 1276/2651/2703 1394/559/2703 -f 1383/1256/2704 1373/15/2704 273/1166/2704 -f 173/73/2705 1352/75/2705 1451/90/2705 -f 229/2463/2706 504/2098/2706 163/2652/2706 -f 783/141/2707 1359/2166/2707 823/142/2707 -f 1330/1224/2708 1351/2653/2708 492/1145/2708 -f 1304/2654/2709 1376/2655/2709 1356/74/2709 -f 1232/182/2710 1230/258/2710 1225/44/2710 -f 1222/1084/2711 2384/2656/2711 1219/2576/2711 -f 814/343/2712 409/342/2712 873/1507/2712 -f 1365/2657/2713 1404/561/2713 1408/560/2713 -f 3510/1467/2714 3455/839/2714 3491/2468/2714 -f 505/2602/2715 282/217/2715 445/216/2715 -f 1683/2658/2716 1647/2659/2716 1728/2660/2716 -f 2396/2661/2717 1220/2662/2717 43/2663/2717 -f 1275/157/2718 1292/51/2718 1242/766/2718 -f 43/2663/2719 1304/2654/2719 569/2643/2719 -f 182/260/2720 1041/420/2720 1147/261/2720 -f 1376/2655/2721 317/2664/2721 31/2578/2721 -f 1675/2665/2722 1473/2666/2722 2735/263/2722 -f 1734/2667/2723 1733/2668/2723 1500/2669/2723 -f 2693/2670/2724 2719/1905/2724 2692/2671/2724 -f 1308/164/2725 1204/163/2725 1324/2034/2725 -f 1220/2662/2726 1304/2654/2726 43/2663/2726 -f 43/2663/2727 569/2643/2727 34/2672/2727 -f 113/2673/2728 1394/559/2728 1268/2674/2728 -f 1119/1814/2729 835/1813/2729 1357/345/2729 -f 1100/834/2730 1267/191/2730 242/1967/2730 -f 2396/2661/2731 34/2672/2731 1130/2675/2731 -f 1293/2676/2732 1683/2658/2732 1882/2677/2732 -f 1253/1223/2733 1397/2678/2733 1351/2653/2733 -f 1305/159/2734 1382/2581/2734 1338/52/2734 -f 1376/2655/2735 1443/2679/2735 1425/2680/2735 -f 1443/2679/2736 1301/2681/2736 1425/2680/2736 -f 1233/2682/2737 1271/2683/2737 428/2684/2737 -f 1271/2683/2738 1443/2679/2738 428/2684/2738 -f 1287/27/2739 1403/39/2739 9/16/2739 -f 1141/101/2740 1325/199/2740 561/2361/2740 -f 106/545/2741 1236/2685/2741 1320/2686/2741 -f 1397/2678/2742 1466/1146/2742 1351/2653/2742 -f 2057/219/2743 2083/820/2743 2042/89/2743 -f 1226/2687/2744 1232/182/2744 1225/44/2744 -f 1408/560/2745 1387/2688/2745 1315/2689/2745 -f 1301/2690/2746 1282/2691/2746 1425/2692/2746 -f 317/2664/2747 1376/2655/2747 1425/2680/2747 -f 977/867/2748 2174/866/2748 965/1978/2748 -f 205/2648/2749 1340/2606/2749 328/605/2749 -f 1276/2651/2750 1397/2678/2750 1253/1223/2750 -f 1178/1662/2751 1170/2162/2751 1138/42/2751 -f 1340/2606/2752 1692/2693/2752 1341/2607/2752 -f 10/130/2753 77/262/2753 1423/149/2753 -f 3504/2545/2754 3457/1331/2754 3454/1301/2754 -f 1284/1909/2755 1402/14/2755 1439/273/2755 -f 1284/1909/2756 1390/2565/2756 1402/14/2756 -f 1443/2608/2757 1353/344/2757 1366/2694/2757 -f 1351/2653/2758 1466/1146/2758 492/1145/2758 -f 504/2098/2759 2206/2633/2759 163/2652/2759 -f 2087/822/2760 2061/2207/2760 57/1212/2760 -f 1239/2312/2761 1417/1165/2761 1390/2565/2761 -f 1284/1909/2762 1239/2312/2762 1390/2565/2762 -f 1225/44/2763 1224/2695/2763 1219/45/2763 -f 1241/33/2764 312/32/2764 1593/205/2764 -f 1296/2577/2765 2061/2696/2765 290/496/2765 -f 283/2603/2766 505/2602/2766 445/216/2766 -f 1233/2697/2767 1257/2609/2767 1271/2698/2767 -f 1325/199/2768 1309/2582/2768 1995/2188/2768 -f 1366/2694/2769 1353/344/2769 1238/346/2769 -f 1245/1257/2770 137/495/2770 472/2601/2770 -f 1247/2574/2771 11/2604/2771 1279/2699/2771 -f 1418/63/2772 1407/2700/2772 1393/2244/2772 -f 1127/490/2773 1133/723/2773 1353/344/2773 -f 2341/43/2774 1226/2687/2774 1225/44/2774 -f 1309/2582/2775 1724/408/2775 1995/2188/2775 -f 1401/2701/2776 1425/2680/2776 1312/2702/2776 -f 262/666/2777 506/544/2777 1237/543/2777 -f 1547/2703/2778 12/223/2778 13/35/2778 -f 1316/158/2779 1355/1960/2779 1305/159/2779 -f 555/1205/2780 363/1233/2780 134/203/2780 -f 1316/158/2781 1633/2127/2781 1355/1960/2781 -f 340/2704/2782 1407/2700/2782 1418/63/2782 -f 1313/697/2783 440/2705/2783 424/579/2783 -f 1356/74/2784 1376/2655/2784 31/2578/2784 -f 964/581/2785 3487/1584/2785 1208/332/2785 -f 1312/2702/2786 943/2706/2786 1328/907/2786 -f 1549/668/2787 1789/2707/2787 1540/26/2787 -f 1395/1149/2788 1453/1143/2788 1244/2647/2788 -f 1431/2708/2789 1365/2657/2789 1254/78/2789 -f 1268/2674/2790 1276/2651/2790 1253/1223/2790 -f 1246/2137/2791 1127/490/2791 1257/2609/2791 -f 2837/2709/2792 2073/2710/2792 2880/2711/2792 -f 3459/665/2793 3433/349/2793 3443/351/2793 -f 1335/607/2794 329/606/2794 1287/27/2794 -f 326/630/2795 171/414/2795 1300/443/2795 -f 1337/2572/2796 1373/15/2796 1383/1256/2796 -f 1331/77/2797 1431/2708/2797 1254/78/2797 -f 428/2684/2798 1443/2679/2798 1376/2655/2798 -f 1209/2097/2799 191/86/2799 504/2098/2799 -f 1365/2657/2800 1408/560/2800 1254/78/2800 -f 1304/2654/2801 1356/74/2801 569/2643/2801 -f 34/2672/2802 569/2643/2802 2397/2642/2802 -f 43/2663/2803 34/2672/2803 2396/2661/2803 -f 2173/2712/2804 1874/2713/2804 2780/2714/2804 -f 1337/2572/2805 1235/2573/2805 1339/2715/2805 -f 1404/561/2806 1339/2715/2806 1420/2650/2806 -f 457/1178/2807 1340/2606/2807 205/2648/2807 -f 1420/2650/2808 1339/2715/2808 1276/2651/2808 -f 1433/62/2809 2090/2173/2809 1463/637/2809 -f 107/2716/2810 298/84/2810 1209/2097/2810 -f 1387/2688/2811 1394/559/2811 113/2673/2811 -f 1338/52/2812 1382/2581/2812 1381/60/2812 -f 1440/2717/2813 1358/153/2813 1452/155/2813 -f 1210/1652/2814 1411/2451/2814 1176/491/2814 -f 12/223/2815 1560/2718/2815 1692/2693/2815 -f 191/86/2816 1335/2719/2816 1240/2575/2816 -f 1977/2720/2817 1976/109/2817 1958/232/2817 -f 1304/2654/2818 428/2684/2818 1376/2655/2818 -f 1352/75/2819 1356/74/2819 31/2578/2819 -f 754/2721/2820 784/1930/2820 272/2722/2820 -f 1303/1179/2821 767/2020/2821 768/1180/2821 -f 2170/2723/2822 30/2724/2822 1449/2725/2822 -f 31/2578/2823 317/2664/2823 1228/519/2823 -f 1401/2701/2824 502/2274/2824 1314/520/2824 -f 1356/74/2825 173/73/2825 569/2643/2825 -f 1879/1574/2826 2104/592/2826 1137/2195/2826 -f 2083/820/2827 2066/2523/2827 2117/306/2827 -f 1137/2195/2828 1378/594/2828 1981/58/2828 -f 873/1507/2829 409/342/2829 926/1508/2829 -f 1463/637/2830 251/48/2830 353/1051/2830 -f 1401/2701/2831 1312/2702/2831 1328/907/2831 -f 3489/753/2832 1116/2276/2832 3488/1712/2832 -f 317/2664/2833 1401/2701/2833 1228/519/2833 -f 317/2664/2834 1425/2680/2834 1401/2701/2834 -f 2677/2326/2835 2817/1426/2835 2482/2327/2835 -f 728/2064/2836 633/2052/2836 1266/2588/2836 -f 3/497/2837 1329/2726/2837 505/2602/2837 -f 1225/44/2838 1230/258/2838 1224/2695/2838 -f 1348/115/2839 1289/2320/2839 1270/2727/2839 -f 2948/2728/2840 2986/2729/2840 2965/2730/2840 -f 9/16/2841 1373/15/2841 1256/236/2841 -f 1713/2731/2842 2061/2207/2842 1571/2205/2842 -f 2344/2732/2843 1220/2662/2843 2396/2661/2843 -f 1250/1944/2844 2164/1943/2844 1266/2733/2844 -f 1340/2606/2845 457/1178/2845 12/223/2845 -f 2767/226/2846 3487/2734/2846 964/134/2846 -f 1279/2699/2847 11/2604/2847 283/2603/2847 -f 3092/2735/2848 3054/1787/2848 954/577/2848 -f 1366/2694/2849 1282/2736/2849 1301/2737/2849 -f 1425/2680/2850 1282/2738/2850 1312/2702/2850 -f 444/2739/2851 213/975/2851 267/989/2851 -f 315/341/2852 1444/1844/2852 409/342/2852 -f 503/2740/2853 926/1508/2853 409/342/2853 -f 1223/2741/2854 1233/2682/2854 2344/2732/2854 -f 506/544/2855 1236/2685/2855 106/545/2855 -f 1253/1223/2856 1351/2653/2856 1330/1224/2856 -f 1235/2573/2857 1247/2574/2857 1279/2699/2857 -f 1424/228/2858 29/2742/2858 1331/77/2858 -f 1549/668/2859 1802/1363/2859 1789/2707/2859 -f 1228/519/2860 1314/520/2860 1310/118/2860 -f 143/1028/2861 690/1254/2861 710/1391/2861 -f 1401/2701/2862 1328/907/2862 502/2274/2862 -f 634/1155/2863 620/1234/2863 1407/2743/2863 -f 3484/2744/2864 3446/22/2864 3474/422/2864 -f 1240/1127/2865 1335/607/2865 1261/29/2865 -f 1244/2647/2866 330/1144/2866 205/2648/2866 -f 783/141/2867 120/494/2867 1359/2166/2867 -f 2293/2745/2868 1391/2746/2868 1223/2741/2868 -f 1383/1256/2869 1245/1257/2869 1247/2574/2869 -f 1869/59/2870 1154/364/2870 1893/2093/2870 -f 1264/2747/2871 29/2742/2871 1424/228/2871 -f 29/2742/2872 1431/2708/2872 1331/77/2872 -f 1404/561/2873 1337/2572/2873 1339/2715/2873 -f 1340/2606/2874 12/223/2874 1692/2693/2874 -f 1337/2572/2875 1404/561/2875 1365/2657/2875 -f 1882/2677/2876 1633/1105/2876 1293/2676/2876 -f 1651/1104/2877 1937/1103/2877 2106/2748/2877 -f 763/1493/2878 220/2618/2878 1465/1035/2878 -f 1444/1844/2879 1468/2749/2879 409/342/2879 -f 409/342/2880 1468/2749/2880 503/2740/2880 -f 1284/1909/2881 1968/2750/2881 1239/2312/2881 -f 1968/2750/2882 1311/1368/2882 1239/2312/2882 -f 1256/236/2883 1337/2572/2883 1431/2708/2883 -f 338/2751/2884 926/1508/2884 503/2740/2884 -f 338/2751/2885 671/2038/2885 926/1508/2885 -f 1545/1250/2886 1294/1252/2886 1251/1364/2886 -f 1366/2694/2887 1238/346/2887 1297/1007/2887 -f 1282/2736/2888 1366/2694/2888 1297/1007/2888 -f 2174/866/2889 1250/2752/2889 965/1978/2889 -f 1391/2640/2890 1246/2137/2890 1257/2609/2890 -f 1337/2572/2891 1365/2657/2891 1431/2708/2891 -f 1258/257/2892 1275/157/2892 1242/766/2892 -f 1373/15/2893 1337/2572/2893 1256/236/2893 -f 1394/559/2894 1276/2651/2894 1268/2674/2894 -f 1239/2312/2895 57/1367/2895 1296/2577/2895 -f 1305/159/2896 1355/1960/2896 1382/2581/2896 -f 1358/1230/2897 1408/560/2897 1315/2689/2897 -f 1844/2371/2898 1617/541/2898 1605/540/2898 -f 2117/306/2899 1204/163/2899 737/114/2899 -f 472/2601/2900 137/495/2900 3/497/2900 -f 29/2742/2901 30/2724/2901 1431/2708/2901 -f 1305/159/2902 1292/51/2902 1275/157/2902 -f 410/1215/2903 144/676/2903 756/675/2903 -f 568/2753/2904 671/2038/2904 338/2751/2904 -f 1282/2738/2905 1297/2754/2905 1312/2702/2905 -f 1297/1007/2906 943/1006/2906 1312/2755/2906 -f 1789/2707/2907 1788/1227/2907 1773/2169/2907 -f 2397/2642/2908 190/454/2908 2398/2756/2908 -f 1418/63/2909 1462/638/2909 340/2704/2909 -f 1065/2227/2910 976/2257/2910 107/2716/2910 -f 30/2724/2911 1256/236/2911 1431/2708/2911 -f 1449/2725/2912 30/2724/2912 29/2742/2912 -f 1276/2651/2913 1279/2699/2913 1397/2678/2913 -f 1440/227/2914 1332/76/2914 1358/1230/2914 -f 2501/2757/2915 2524/2344/2915 3441/870/2915 -f 1326/2758/2916 1277/100/2916 47/99/2916 -f 568/2080/2917 930/1529/2917 671/1528/2917 -f 1360/2165/2918 1445/2759/2918 1359/2166/2918 -f 1444/1844/2919 1445/2759/2919 1468/2749/2919 -f 1468/2749/2920 96/2760/2920 503/2740/2920 -f 1443/2608/2921 1366/2694/2921 1301/2737/2921 -f 299/256/2922 1248/2579/2922 1228/519/2922 -f 1451/90/2923 1352/75/2923 1248/2579/2923 -f 127/883/2924 1607/836/2924 94/835/2924 -f 1259/2580/2925 1316/158/2925 1275/157/2925 -f 1733/1047/2926 1757/2328/2926 1513/2761/2926 -f 1258/257/2927 1259/2580/2927 1275/157/2927 -f 2810/253/2928 2775/255/2928 1969/1202/2928 -f 1359/2166/2929 1445/2759/2929 1444/1844/2929 -f 503/2740/2930 96/2760/2930 338/2751/2930 -f 569/2643/2931 173/73/2931 190/454/2931 -f 1230/1167/2932 1242/2133/2932 1252/1096/2932 -f 1348/115/2933 1270/2727/2933 2116/2267/2933 -f 283/2603/2934 445/216/2934 1466/1146/2934 -f 1112/2152/2935 1370/1246/2935 1395/2644/2935 -f 1828/2352/2936 1360/2165/2936 427/696/2936 -f 1445/2759/2937 96/2760/2937 1468/2749/2937 -f 1382/2581/2938 1434/34/2938 1419/83/2938 -f 1233/2682/2939 428/2684/2939 1304/2654/2939 -f 1292/51/2940 1305/159/2940 1338/52/2940 -f 502/2274/2941 213/521/2941 1314/520/2941 -f 1339/2715/2942 1235/2573/2942 1276/2651/2942 -f 330/1144/2943 1244/2647/2943 1453/1143/2943 -f 250/2762/2944 568/2763/2944 338/2764/2944 -f 250/2762/2945 665/2765/2945 568/2763/2945 -f 3469/782/2946 2007/2766/2946 3456/400/2946 -f 1233/2682/2947 1304/2654/2947 1220/2662/2947 -f 1245/1257/2948 273/1166/2948 137/495/2948 -f 1271/2683/2949 1257/2767/2949 1443/2679/2949 -f 1295/2503/2950 1647/2768/2950 1260/184/2950 -f 330/1144/2951 457/1178/2951 205/2648/2951 -f 1360/2165/2952 1446/2769/2952 1445/2759/2952 -f 1445/2759/2953 1446/2769/2953 96/2760/2953 -f 1446/2769/2954 1469/2770/2954 96/2760/2954 -f 96/2771/2955 185/2772/2955 338/2764/2955 -f 1854/542/2956 1596/2773/2956 1605/540/2956 -f 1316/158/2957 1293/2774/2957 1633/2127/2957 -f 1268/2674/2958 1253/1223/2958 617/1225/2958 -f 1279/2699/2959 283/2603/2959 1397/2678/2959 -f 1276/2651/2960 1235/2573/2960 1279/2699/2960 -f 3181/2775/2961 614/2776/2961 613/2777/2961 -f 1322/2351/2962 1360/2165/2962 1828/2352/2962 -f 1360/2165/2963 1322/2351/2963 1446/2769/2963 -f 250/2762/2964 338/2764/2964 185/2772/2964 -f 298/84/2965 191/86/2965 1209/2097/2965 -f 617/1698/2966 121/1163/2966 919/1666/2966 -f 3479/312/2967 1697/311/2967 3486/1075/2967 -f 1469/2778/2968 185/2772/2968 96/2771/2968 -f 1432/2779/2969 665/2765/2969 250/2762/2969 -f 328/605/2970 1335/607/2970 191/2780/2970 -f 1233/2682/2971 1220/2662/2971 2344/2732/2971 -f 1248/2579/2972 31/2578/2972 1228/519/2972 -f 121/1163/2973 617/1698/2973 1330/487/2973 -f 1226/2687/2974 2341/43/2974 1099/2781/2974 -f 190/454/2975 2361/608/2975 2398/2756/2975 -f 1665/2782/2976 1668/1262/2976 1544/1216/2976 -f 1315/2689/2977 1387/2688/2977 1435/2783/2977 -f 392/2784/2978 1302/1339/2978 1667/2785/2978 -f 1466/1146/2979 445/216/2979 1685/218/2979 -f 1065/2227/2980 107/2716/2980 1209/2097/2980 -f 1223/2741/2981 1391/2746/2981 1233/2682/2981 -f 1353/344/2982 1298/1895/2982 1357/345/2982 -f 993/2786/2983 586/1676/2983 1993/1966/2983 -f 1387/2688/2984 1408/560/2984 1394/559/2984 -f 251/48/2985 262/666/2985 1237/543/2985 -f 25/2787/2986 754/2788/2986 1462/638/2986 -f 1245/1257/2987 472/2601/2987 11/2604/2987 -f 1435/2783/2988 1387/2688/2988 1262/2789/2988 -f 1387/2688/2989 113/2673/2989 1262/2789/2989 -f 1283/1917/2990 768/1180/2990 728/2064/2990 -f 2501/2757/2991 3441/870/2991 3434/869/2991 -f 1381/60/2992 1382/2581/2992 1419/83/2992 -f 1391/2640/2993 2293/2790/2993 2277/881/2993 -f 1717/2791/2994 1661/1071/2994 219/2792/2994 -f 748/1461/2995 376/330/2995 407/315/2995 -f 1268/2674/2996 617/1225/2996 113/2673/2996 -f 1112/2152/2997 1217/193/2997 1370/1246/2997 -f 1379/588/2998 982/259/2998 1131/2232/2998 -f 1322/2793/2999 1426/2794/2999 1446/2795/2999 -f 1446/2795/3000 1426/2794/3000 1469/2778/3000 -f 185/2772/3001 395/2796/3001 250/2762/3001 -f 395/2796/3002 1432/2779/3002 250/2762/3002 -f 1392/2797/3003 604/2798/3003 1432/2779/3003 -f 1449/2725/3004 29/2742/3004 1264/2747/3004 -f 3012/2799/3005 3050/2800/3005 3036/2801/3005 -f 1354/625/3006 1412/2802/3006 1313/697/3006 -f 171/414/3007 490/416/3007 1300/443/3007 -f 2029/2803/3008 2030/87/3008 2040/1017/3008 -f 3492/1003/3009 3431/2804/3009 3426/1004/3009 -f 1426/2794/3010 1447/2805/3010 1469/2778/3010 -f 1210/1652/3011 1183/1034/3011 1411/2451/3011 -f 937/1859/3012 936/1840/3012 55/2806/3012 -f 1384/2807/3013 1354/625/3013 477/624/3013 -f 1354/625/3014 1384/2807/3014 1412/2802/3014 -f 472/2601/3015 3/497/3015 505/2602/3015 -f 3472/1445/3016 3449/1266/3016 3458/1446/3016 -f 2004/1177/3017 2030/87/3017 2029/2803/3017 -f 1322/2793/3018 2076/2808/3018 1426/2794/3018 -f 1432/2779/3019 1396/2809/3019 1392/2797/3019 -f 1392/2797/3020 6/2810/3020 1389/2811/3020 -f 1313/697/3021 1412/2802/3021 439/1377/3021 -f 3336/314/3022 443/295/3022 1669/862/3022 -f 1397/2678/3023 283/2603/3023 1466/1146/3023 -f 467/2231/3024 1777/2307/3024 1379/588/3024 -f 1469/2778/3025 1447/2805/3025 185/2772/3025 -f 395/2796/3026 1396/2809/3026 1432/2779/3026 -f 1396/2809/3027 6/2810/3027 1392/2797/3027 -f 604/2798/3028 665/2765/3028 1432/2779/3028 -f 416/2632/3029 440/2705/3029 439/1377/3029 -f 2754/2812/3030 3453/2301/3030 3482/1332/3030 -f 1784/2315/3031 1536/2813/3031 1555/2316/3031 -f 530/2814/3032 1396/2809/3032 395/2796/3032 -f 1451/90/3033 1248/2579/3033 299/256/3033 -f 1394/559/3034 1404/561/3034 1420/2650/3034 -f 1384/2807/3035 774/2815/3035 1412/2802/3035 -f 3473/872/3036 3461/270/3036 3472/269/3036 -f 1341/2607/3037 1380/151/3037 329/606/3037 -f 328/605/3038 1340/2606/3038 329/606/3038 -f 1418/63/3039 1433/62/3039 1462/638/3039 -f 2076/2808/3040 1361/2816/3040 1426/2794/3040 -f 1426/2794/3041 1361/2816/3041 1447/2805/3041 -f 1447/2805/3042 1470/2817/3042 185/2772/3042 -f 529/2818/3043 395/2796/3043 185/2772/3043 -f 529/2818/3044 530/2814/3044 395/2796/3044 -f 476/12/3045 190/454/3045 1451/90/3045 -f 272/1094/3046 784/2819/3046 28/1154/3046 -f 1412/2802/3047 1251/1364/3047 439/1377/3047 -f 10/130/3048 1423/149/3048 1346/148/3048 -f 1260/184/3049 1683/2820/3049 1259/2580/3049 -f 1809/2304/3050 1810/2821/3050 1831/937/3050 -f 1854/542/3051 1853/2470/3051 1843/2469/3051 -f 205/2648/3052 328/605/3052 298/2649/3052 -f 25/1033/3053 560/1032/3053 753/1766/3053 -f 2103/116/3054 1348/115/3054 2116/2267/3054 -f 185/2772/3055 1470/2817/3055 529/2818/3055 -f 1255/941/3056 6/2810/3056 1396/2809/3056 -f 1255/941/3057 410/2822/3057 6/2810/3057 -f 1233/2682/3058 1391/2746/3058 1257/2767/3058 -f 774/2815/3059 318/1973/3059 1412/2802/3059 -f 2081/2317/3060 2082/307/3060 2103/116/3060 -f 1265/124/3061 1396/2809/3061 530/2814/3061 -f 1462/638/3062 1463/637/3062 25/2787/3062 -f 318/1973/3063 1251/1364/3063 1412/2802/3063 -f 1393/2823/3064 1369/2824/3064 1948/2825/3064 -f 24/2452/3065 298/84/3065 107/2716/3065 -f 1504/2826/3066 1758/2827/3066 1478/2828/3066 -f 1979/942/3067 2071/2266/3067 1988/2389/3067 -f 2118/2829/3068 1979/942/3068 1988/2389/3068 -f 1361/2816/3069 2390/2830/3069 1362/1261/3069 -f 529/2818/3070 1265/124/3070 530/2814/3070 -f 1398/2831/3071 1396/2809/3071 1265/124/3071 -f 1398/2831/3072 1255/941/3072 1396/2809/3072 -f 423/1376/3073 1302/1339/3073 415/1338/3073 -f 24/2452/3074 107/2716/3074 976/2257/3074 -f 1381/60/3075 1453/1143/3075 1395/1149/3075 -f 1979/942/3076 2118/2829/3076 2122/943/3076 -f 982/259/3077 1062/2335/3077 1327/2832/3077 -f 3141/2833/3078 3173/310/3078 3189/1637/3078 -f 1362/1261/3079 1427/1260/3079 1361/2816/3079 -f 1427/1260/3080 1447/2805/3080 1361/2816/3080 -f 1427/1260/3081 1457/1126/3081 1447/2805/3081 -f 1470/2817/3082 459/122/3082 529/2818/3082 -f 459/122/3083 1265/124/3083 529/2818/3083 -f 1255/941/3084 144/2834/3084 410/2822/3084 -f 1463/637/3085 1461/46/3085 251/48/3085 -f 1489/564/3086 3364/2835/3086 3182/562/3086 -f 1040/2153/3087 1395/2644/3087 24/2452/3087 -f 1266/2588/3088 633/2052/3088 1250/2752/3088 -f 1251/1364/3089 1294/1252/3089 423/1376/3089 -f 423/1376/3090 1294/1252/3090 1302/1339/3090 -f 1463/637/3091 353/1051/3091 25/2787/3091 -f 1709/2836/3092 2890/1848/3092 2826/1/3092 -f 952/2837/3093 958/2528/3093 962/1964/3093 -f 1457/1126/3094 1470/2817/3094 1447/2805/3094 -f 1328/907/3095 313/895/3095 339/894/3095 -f 870/2400/3096 3490/1009/3096 3454/1301/3096 -f 1355/1960/3097 1371/1959/3097 1382/2581/3097 -f 1298/1895/3098 1353/344/3098 1133/723/3098 -f 352/36/3099 457/1178/3099 330/1144/3099 -f 1228/519/3100 1401/2701/3100 1314/520/3100 -f 44/2838/3101 437/721/3101 203/720/3101 -f 1294/1252/3102 1667/2785/3102 1302/1339/3102 -f 1327/2832/3103 1062/2335/3103 1935/886/3103 -f 2120/186/3104 1206/944/3104 2088/187/3104 -f 2876/2839/3105 2289/1443/3105 2862/2392/3105 -f 1457/1126/3106 459/122/3106 1470/2817/3106 -f 1274/1164/3107 1375/410/3107 1398/2831/3107 -f 1265/124/3108 1274/1164/3108 1398/2831/3108 -f 1255/941/3109 237/940/3109 144/2834/3109 -f 3489/423/3110 3488/2840/3110 3474/422/3110 -f 1259/2580/3111 1683/2820/3111 1316/158/3111 -f 1528/2841/3112 1708/2842/3112 1640/381/3112 -f 1247/2574/3113 1245/1257/3113 11/2604/3113 -f 1389/603/3114 604/1174/3114 1392/2843/3114 -f 1316/158/3115 1683/2820/3115 1293/2774/3115 -f 2894/680/3116 215/2844/3116 2615/287/3116 -f 3413/2845/3117 1958/232/3117 1974/108/3117 -f 2890/1848/3118 1710/1633/3118 2826/1/3118 -f 2730/1267/3119 2810/253/3119 1969/1202/3119 -f 1398/2831/3120 1375/410/3120 1255/941/3120 -f 1197/1074/3121 3484/1870/3121 3486/1075/3121 -f 1975/110/3122 2015/117/3122 1986/1176/3122 -f 1232/182/3123 1260/184/3123 1258/257/3123 -f 1593/205/3124 1424/2846/3124 1440/290/3124 -f 106/929/3125 327/928/3125 19/958/3125 -f 2040/1017/3126 2041/1016/3126 2081/2317/3126 -f 2041/1016/3127 2082/307/3127 2081/2317/3127 -f 1471/430/3128 1457/1126/3128 1427/1260/3128 -f 1614/1192/3129 1615/1245/3129 1641/2847/3129 -f 1582/2848/3130 1591/2849/3130 1581/2850/3130 -f 1716/2851/3131 1539/70/3131 1701/72/3131 -f 1642/2852/3132 1628/2853/3132 1681/2854/3132 -f 1659/2855/3133 1698/1276/3133 392/1288/3133 -f 1592/2856/3134 1601/1162/3134 1600/2857/3134 -f 1505/2858/3135 1530/2859/3135 1504/2826/3135 -f 1559/2860/3136 1581/2850/3136 1533/2861/3136 -f 122/1100/3137 114/1040/3137 1600/2862/3137 -f 1708/2842/3138 397/411/3138 1640/381/3138 -f 1380/151/3139 1341/2607/3139 1606/2863/3139 -f 1492/2864/3140 1493/234/3140 1516/2865/3140 -f 1633/1105/3141 1882/2677/3141 1937/1103/3141 -f 487/1278/3142 1650/1311/3142 511/1302/3142 -f 1551/968/3143 1580/1010/3143 84/969/3143 -f 2743/2866/3144 2787/2867/3144 2806/2868/3144 -f 3454/1301/3145 3457/1331/3145 3424/1002/3145 -f 1546/2869/3146 1927/2870/3146 1711/2216/3146 -f 1705/1247/3147 1574/2871/3147 1671/2872/3147 -f 1615/1245/3148 1642/2852/3148 1641/2847/3148 -f 444/18/3149 267/2873/3149 1345/23/3149 -f 1679/2874/3150 1659/2875/3150 1667/2785/3150 -f 149/2876/3151 177/1101/3151 148/1041/3151 -f 1664/1150/3152 1665/2782/3152 452/1182/3152 -f 3435/1922/3153 3442/2587/3153 3447/982/3153 -f 1479/2179/3154 1504/2826/3154 1486/2877/3154 -f 1641/2847/3155 1642/2852/3155 1680/1123/3155 -f 2708/1961/3156 215/2844/3156 2673/2319/3156 -f 3440/2538/3157 3460/1116/3157 3433/349/3157 -f 296/195/3158 183/194/3158 443/295/3158 -f 2669/857/3159 3453/856/3159 2754/705/3159 -f 2767/2878/3160 3429/1723/3160 3487/1667/3160 -f 2671/2879/3161 2184/2880/3161 2697/2542/3161 -f 1371/2881/3162 1651/1104/3162 2106/2748/3162 -f 320/1249/3163 1698/1276/3163 1705/1247/3163 -f 2692/2671/3164 2719/1905/3164 2691/1907/3164 -f 2659/2882/3165 2694/2883/3165 2658/2884/3165 -f 1526/2885/3166 1543/1120/3166 1553/1119/3166 -f 1578/2886/3167 1599/939/3167 1577/938/3167 -f 585/1413/3168 45/945/3168 32/917/3168 -f 1599/939/3169 1607/2887/3169 1613/2597/3169 -f 1336/2888/3170 1369/2243/3170 1368/2889/3170 -f 1712/2890/3171 1684/2891/3171 1603/2892/3171 -f 1531/629/3172 1912/628/3172 1864/2497/3172 -f 1549/668/3173 1525/667/3173 1802/1363/3173 -f 3128/2893/3174 3152/2894/3174 3162/2895/3174 -f 1627/120/3175 1639/2896/3175 1656/2897/3175 -f 2489/2898/3176 1769/252/3176 2422/2070/3176 -f 1696/2899/3177 1712/2890/3177 1566/2900/3177 -f 1827/1513/3178 2294/2202/3178 2536/2901/3178 -f 1610/2902/3179 1586/2903/3179 1664/2904/3179 -f 563/614/3180 528/643/3180 914/744/3180 -f 3018/2905/3181 2992/1879/3181 2439/2906/3181 -f 149/2907/3182 1641/2847/3182 177/1122/3182 -f 1592/2856/3183 97/1160/3183 1601/1162/3183 -f 1906/47/3184 1514/2160/3184 262/666/3184 -f 13/1307/3185 1565/1306/3185 14/1912/3185 -f 2607/363/3186 2652/724/3186 2621/1608/3186 -f 32/917/3187 593/860/3187 585/1413/3187 -f 3474/2908/3188 3488/1712/3188 3486/2909/3188 -f 341/498/3189 399/431/3189 1718/2910/3189 -f 2615/287/3190 2769/669/3190 2416/2911/3190 -f 1714/1913/3191 1547/2912/3191 13/1307/3191 -f 493/327/3192 481/329/3192 1564/365/3192 -f 2787/2867/3193 2837/2709/3193 2806/2868/3193 -f 1495/2913/3194 1494/729/3194 1693/731/3194 -f 148/1041/3195 122/1100/3195 1609/2914/3195 -f 108/1191/3196 1615/1245/3196 1614/1192/3196 -f 1600/2862/3197 1601/2915/3197 1609/2914/3197 -f 1645/2916/3198 3396/2917/3198 1584/2918/3198 -f 1207/417/3199 3487/1667/3199 3467/1591/3199 -f 1903/2919/3200 515/2920/3200 2781/288/3200 -f 1506/2921/3201 1542/2922/3201 1533/2923/3201 -f 1614/1192/3202 1641/2847/3202 149/2907/3202 -f 1547/2912/3203 1714/1913/3203 1961/2924/3203 -f 1588/2925/3204 1547/2912/3204 1961/2924/3204 -f 1576/1248/3205 1705/1247/3205 1684/2926/3205 -f 1542/2922/3206 1559/2927/3206 1533/2923/3206 -f 1574/2928/3207 1721/2929/3207 1671/2930/3207 -f 1566/2900/3208 1712/2890/3208 1603/2892/3208 -f 1896/2159/3209 1604/2931/3209 1514/2160/3209 -f 1559/2860/3210 1582/2848/3210 1581/2850/3210 -f 1480/2932/3211 1491/2933/3211 1506/2934/3211 -f 372/2935/3212 307/1072/3212 1594/1077/3212 -f 2962/294/3213 2980/2936/3213 2961/2937/3213 -f 1560/2938/3214 1588/2925/3214 1895/243/3214 -f 12/223/3215 1547/2703/3215 1588/2939/3215 -f 1560/2718/3216 12/223/3216 1588/2939/3216 -f 1681/2854/3217 1715/2940/3217 1691/2941/3217 -f 585/1413/3218 1490/1412/3218 37/959/3218 -f 1552/2942/3219 1559/2927/3219 1542/2922/3219 -f 1526/2943/3220 1542/2944/3220 1515/2945/3220 -f 2702/1076/3221 2543/1935/3221 1197/1074/3221 -f 1585/2946/3222 1721/2929/3222 391/2947/3222 -f 341/498/3223 1718/2910/3223 1623/2948/3223 -f 3386/567/3224 341/498/3224 1623/2948/3224 -f 1570/242/3225 1560/2938/3225 1895/243/3225 -f 3502/616/3226 3455/2042/3226 1042/427/3226 -f 3431/2804/3227 1004/2249/3227 3426/1004/3227 -f 1487/2949/3228 22/712/3228 1505/2950/3228 -f 1505/2950/3229 22/712/3229 1530/1793/3229 -f 1581/2850/3230 1551/2951/3230 1533/2861/3230 -f 1603/2892/3231 1585/2946/3231 1594/1077/3231 -f 36/25/3232 58/211/3232 1549/668/3232 -f 1671/2930/3233 1721/2929/3233 1585/2946/3233 -f 1656/2952/3234 3378/2953/3234 2819/2954/3234 -f 3443/1371/3235 3452/2409/3235 3436/1372/3235 -f 1527/2591/3236 49/2955/3236 48/2589/3236 -f 1638/2598/3237 1613/2597/3237 1627/120/3237 -f 1627/2956/3238 1656/2952/3238 2819/2954/3238 -f 209/1124/3239 1672/2957/3239 219/2792/3239 -f 177/1122/3240 1641/2847/3240 1680/1123/3240 -f 1526/2885/3241 1552/2958/3241 1542/2959/3241 -f 1846/1200/3242 1626/2182/3242 1625/2960/3242 -f 3504/2545/3243 3454/1301/3243 3490/1009/3243 -f 3016/2961/3244 3028/2962/3244 3001/2963/3244 -f 1526/2943/3245 1515/2945/3245 1516/2964/3245 -f 1236/2685/3246 506/544/3246 1604/2931/3246 -f 2780/2714/3247 2708/1961/3247 1689/1864/3247 -f 140/1346/3248 179/1345/3248 1622/1293/3248 -f 1586/2903/3249 1665/2965/3249 1664/2904/3249 -f 614/2776/3250 3149/2564/3250 994/2563/3250 -f 2161/318/3251 1026/320/3251 3442/2587/3251 -f 1626/2966/3252 1646/2967/3252 1636/2968/3252 -f 1619/2365/3253 1846/1200/3253 1625/2960/3253 -f 1625/2969/3254 1626/2966/3254 1636/2968/3254 -f 2927/850/3255 2926/2970/3255 2916/851/3255 -f 2991/1880/3256 3001/2963/3256 2990/2560/3256 -f 1865/2971/3257 2737/2972/3257 1875/2973/3257 -f 1566/2900/3258 1720/1073/3258 1661/1071/3258 -f 3492/1003/3259 3432/2531/3259 3431/2804/3259 -f 1506/2934/3260 1533/2974/3260 1532/2975/3260 -f 1638/2598/3261 1627/120/3261 174/119/3261 -f 2561/2976/3262 2594/361/3262 2593/2977/3262 -f 1696/2899/3263 1716/2978/3263 1701/2979/3263 -f 1329/2726/3264 290/496/3264 1713/2980/3264 -f 1615/1245/3265 1616/1244/3265 1628/2853/3265 -f 1721/2981/3266 1574/2982/3266 1679/2874/3266 -f 115/1327/3267 140/1346/3267 1622/1293/3267 -f 1638/2598/3268 174/119/3268 1637/2983/3268 -f 683/1450/3269 1004/2984/3269 686/1583/3269 -f 1606/2985/3270 1570/242/3270 1797/2986/3270 -f 1606/2985/3271 1692/2987/3271 1570/242/3271 -f 1694/2428/3272 1669/862/3272 1704/2988/3272 -f 3174/2989/3273 3190/308/3273 3173/310/3273 -f 1720/1073/3274 1603/2892/3274 1594/1077/3274 -f 3402/1414/3275 585/1413/3275 584/1739/3275 -f 127/883/3276 138/903/3276 1607/836/3276 -f 3152/2894/3277 3188/2990/3277 3162/2895/3277 -f 1679/2874/3278 1665/2965/3278 1586/2903/3278 -f 2708/1961/3279 1598/2991/3279 215/2844/3279 -f 265/71/3280 1684/2926/3280 1712/2992/3280 -f 1679/2874/3281 1586/2903/3281 1721/2981/3281 -f 3234/2993/3282 3204/1982/3282 975/1981/3282 -f 3467/1591/3283 3505/353/3283 1015/751/3283 -f 402/1058/3284 391/1042/3284 1610/1109/3284 -f 174/757/3285 3392/2994/3285 1637/2995/3285 -f 1478/2828/3286 1758/2827/3286 1503/2996/3286 -f 1656/2952/3287 1639/920/3287 1687/887/3287 -f 1614/1192/3288 1609/2997/3288 1601/2998/3288 -f 1487/2949/3289 1488/713/3289 22/712/3289 -f 1583/1121/3290 1582/2848/3290 1552/2958/3290 -f 404/1287/3291 1302/2999/3291 392/1288/3291 -f 399/431/3292 397/411/3292 1718/2910/3292 -f 2457/3000/3293 2992/3001/3293 2468/3002/3293 -f 1682/215/3294 1685/214/3294 1563/3003/3294 -f 3264/1115/3295 3477/788/3295 3460/1116/3295 -f 1993/1966/3296 579/1860/3296 1495/2913/3296 -f 119/169/3297 446/196/3297 1550/198/3297 -f 1704/2988/3298 1669/862/3298 183/194/3298 -f 45/945/3299 585/1413/3299 37/959/3299 -f 1566/2900/3300 1603/2892/3300 1720/1073/3300 -f 166/1295/3301 194/1296/3301 1681/2615/3301 -f 466/1351/3302 1545/1250/3302 1251/1364/3302 -f 1528/2841/3303 1640/381/3303 1564/365/3303 -f 1585/2946/3304 391/2947/3304 1594/1077/3304 -f 119/169/3305 1550/198/3305 1644/170/3305 -f 1687/887/3306 3272/3004/3306 1656/2952/3306 -f 1645/2916/3307 1636/2968/3307 1646/2967/3307 -f 1533/2974/3308 46/3005/3308 1532/2975/3308 -f 1591/2849/3309 1580/3006/3309 1581/2850/3309 -f 1718/2910/3310 1655/3007/3310 1623/2948/3310 -f 1478/2828/3311 1485/3008/3311 3367/3009/3311 -f 3429/1723/3312 3498/777/3312 3505/353/3312 -f 1614/1192/3313 149/2907/3313 1609/2997/3313 -f 1695/3010/3314 1587/3011/3314 1658/3012/3314 -f 2624/3013/3315 1697/311/3315 566/3014/3315 -f 639/1933/3316 3195/1932/3316 613/2777/3316 -f 1667/2785/3317 1665/2965/3317 1679/2874/3317 -f 1630/3015/3318 1644/170/3318 1550/198/3318 -f 1644/170/3319 1630/3015/3319 1658/3012/3319 -f 3208/3016/3320 1646/2967/3320 3392/2994/3320 -f 1680/1123/3321 1642/2852/3321 1691/2941/3321 -f 1591/2849/3322 1600/2857/3322 1580/3006/3322 -f 209/1124/3323 1691/2941/3323 1672/2957/3323 -f 1802/1363/3324 1810/1228/3324 1788/1227/3324 -f 194/1296/3325 1715/3017/3325 1681/2615/3325 -f 1680/1123/3326 1691/2941/3326 209/1124/3326 -f 1495/2913/3327 1517/1138/3327 1494/729/3327 -f 1539/70/3328 1716/2851/3328 1715/3017/3328 -f 2780/2714/3329 1598/2991/3329 2708/1961/3329 -f 2422/2070/3330 2517/2072/3330 2489/2898/3330 -f 1704/2988/3331 1587/3011/3331 1688/3018/3331 -f 2818/3019/3332 2591/3020/3332 2783/3021/3332 -f 1624/3022/3333 1625/2969/3333 1584/2918/3333 -f 1619/3023/3334 1625/2969/3334 1624/3022/3334 -f 1618/3024/3335 1619/3023/3335 1624/3022/3335 -f 2600/268/3336 2434/267/3336 2543/1935/3336 -f 3468/1470/3337 991/3025/3337 3438/1471/3337 -f 3155/3026/3338 3165/3027/3338 3154/3028/3338 -f 1576/1248/3339 1684/2926/3339 265/71/3339 -f 572/1962/3340 580/1313/3340 3348/2147/3340 -f 1520/3029/3341 2456/3030/3341 3124/3031/3341 -f 1922/3032/3342 3355/2288/3342 1943/3033/3342 -f 2808/3034/3343 1898/3035/3343 2548/2117/3343 -f 1533/2974/3344 1551/3036/3344 46/3005/3344 -f 2817/1426/3345 2060/3/3345 1028/3037/3345 -f 1654/3038/3346 1658/3012/3346 1590/3039/3346 -f 1600/2862/3347 1609/2914/3347 122/1100/3347 -f 1563/3040/3348 1685/218/3348 282/217/3348 -f 1623/2948/3349 1655/3007/3349 1595/3041/3349 -f 1688/3018/3350 1695/3010/3350 3387/3042/3350 -f 118/168/3351 1658/3012/3351 1587/3011/3351 -f 1599/939/3352 1578/2886/3352 1607/2887/3352 -f 1519/3043/3353 1682/215/3353 1678/3044/3353 -f 1718/2910/3354 1708/2842/3354 1655/3007/3354 -f 1497/3045/3355 1520/3029/3355 3124/3031/3355 -f 1526/2885/3356 1553/1119/3356 1552/2958/3356 -f 1889/2448/3357 2695/3046/3357 2660/3047/3357 -f 1323/3048/3358 3471/398/3358 3456/400/3358 -f 2960/3049/3359 3033/67/3359 2952/69/3359 -f 183/194/3360 118/168/3360 1587/3011/3360 -f 724/1370/3361 1454/2132/3361 1249/2614/3361 -f 2561/2976/3362 2560/3050/3362 2537/3051/3362 -f 2852/2118/3363 1272/3052/3363 2857/384/3363 -f 3435/3053/3364 2744/2119/3364 2857/384/3364 -f 575/3054/3365 2500/3055/3365 3417/3056/3365 -f 2749/3057/3366 2731/1400/3366 2761/238/3366 -f 1683/2820/3367 1260/184/3367 1647/2768/3367 -f 1684/2891/3368 1671/2930/3368 1603/2892/3368 -f 2538/3058/3369 2561/2976/3369 2537/3051/3369 -f 179/1345/3370 166/1295/3370 1622/1293/3370 -f 3150/3059/3371 1497/3045/3371 3124/3031/3371 -f 1510/3060/3372 1520/3029/3372 1497/3045/3372 -f 1511/3061/3373 1510/3060/3373 1497/3045/3373 -f 1510/3060/3374 1521/3062/3374 1520/3029/3374 -f 1521/3062/3375 1753/3063/3375 1520/3029/3375 -f 1671/2930/3376 1585/2946/3376 1603/2892/3376 -f 1582/2848/3377 1583/1121/3377 97/1160/3377 -f 481/329/3378 507/328/3378 1670/3064/3378 -f 1477/3065/3379 1484/2419/3379 1476/3066/3379 -f 1480/3067/3380 3381/3068/3380 3372/3069/3380 -f 1491/2933/3381 1516/2964/3381 1515/2945/3381 -f 2852/2118/3382 2857/384/3382 2744/2119/3382 -f 1494/729/3383 1517/1138/3383 1527/1139/3383 -f 3276/3070/3384 1562/3071/3384 1595/3072/3384 -f 1630/3015/3385 1550/198/3385 1519/3043/3385 -f 2560/1514/3386 1827/1513/3386 2536/2901/3386 -f 2879/679/3387 1928/678/3387 1832/3073/3387 -f 1691/2941/3388 1696/2899/3388 1672/2957/3388 -f 1504/2826/3389 1478/2828/3389 1486/2877/3389 -f 1643/3074/3390 1681/2854/3390 1628/2853/3390 -f 1497/3045/3391 3150/3059/3391 1511/3061/3391 -f 1511/3061/3392 1521/3062/3392 1510/3060/3392 -f 1506/2934/3393 1532/2975/3393 1490/3075/3393 -f 1717/2791/3394 1566/2900/3394 1661/1071/3394 -f 2814/3076/3395 2854/3077/3395 2796/3078/3395 -f 2561/2976/3396 2582/3079/3396 2594/361/3396 -f 1695/3010/3397 1658/3012/3397 1654/3038/3397 -f 1516/2865/3398 1543/233/3398 1526/3080/3398 -f 1057/2482/3399 2551/2398/3399 1058/2382/3399 -f 1636/2968/3400 1645/2916/3400 1584/2918/3400 -f 1636/2968/3401 1584/2918/3401 1625/2969/3401 -f 1593/2628/3402 1236/2685/3402 1561/2252/3402 -f 210/1284/3403 1715/3017/3403 194/1296/3403 -f 1658/3081/3404 1630/3082/3404 1590/3083/3404 -f 2594/361/3405 2582/3079/3405 2634/362/3405 -f 1528/2841/3406 1564/365/3406 481/329/3406 -f 219/2792/3407 1672/2957/3407 1717/2791/3407 -f 138/903/3408 1639/920/3408 1607/836/3408 -f 1512/3084/3409 1511/3061/3409 1481/3085/3409 -f 1529/3086/3410 1521/3062/3410 1511/3061/3410 -f 1512/3084/3411 1529/3086/3411 1511/3061/3411 -f 1743/3087/3412 2456/3030/3412 1520/3029/3412 -f 2549/3088/3413 2560/3050/3413 2574/3089/3413 -f 2887/250/3414 1911/3090/3414 2870/3091/3414 -f 1550/198/3415 394/197/3415 1682/215/3415 -f 3173/310/3416 3213/2206/3416 3212/2167/3416 -f 1529/3092/3417 1536/2813/3417 1535/3093/3417 -f 1705/3094/3418 1671/2930/3418 1684/2891/3418 -f 1405/3095/3419 2107/3096/3419 1350/3097/3419 -f 1345/23/3420 267/2873/3420 552/38/3420 -f 1484/2419/3421 1483/3098/3421 1476/3066/3421 -f 1550/198/3422 1682/215/3422 1519/3043/3422 -f 1705/1247/3423 1698/1276/3423 1574/2871/3423 -f 1708/2842/3424 1528/2841/3424 1655/3007/3424 -f 1524/3099/3425 1528/2841/3425 481/329/3425 -f 3427/92/3426 3473/872/3426 3448/1277/3426 -f 3113/1220/3427 3128/1219/3427 3139/3100/3427 -f 1693/731/3428 2585/3101/3428 1495/2913/3428 -f 2653/2305/3429 2704/3102/3429 2689/1201/3429 -f 183/194/3430 1587/3011/3430 1704/2988/3430 -f 2896/2462/3431 1507/1196/3431 184/1328/3431 -f 1688/3018/3432 1587/3011/3432 1695/3010/3432 -f 2593/2977/3433 2581/3103/3433 2574/3089/3433 -f 1595/3041/3434 1655/3007/3434 1541/3104/3434 -f 939/1987/3435 918/1625/3435 983/1985/3435 -f 1634/2184/3436 1459/40/3436 1707/3105/3436 -f 1769/252/3437 2567/3106/3437 2422/2070/3437 -f 265/71/3438 1712/2992/3438 1701/72/3438 -f 2536/2901/3439 2537/3107/3439 2560/1514/3439 -f 3367/3009/3440 1485/3008/3440 1477/3065/3440 -f 1476/3066/3441 3324/3108/3441 1477/3065/3441 -f 2708/1961/3442 2673/2319/3442 2424/245/3442 -f 1519/3109/3443 1690/3110/3443 1630/3082/3443 -f 2704/3102/3444 2730/1267/3444 2689/1201/3444 -f 3340/3111/3445 3368/3112/3445 1486/2877/3445 -f 1512/3084/3446 1537/3113/3446 1529/3086/3446 -f 1537/3114/3447 1536/2813/3447 1529/3092/3447 -f 1535/3093/3448 1536/2813/3448 1784/2315/3448 -f 2560/3050/3449 2593/2977/3449 2574/3089/3449 -f 1626/2966/3450 1637/2995/3450 1646/2967/3450 -f 1557/3115/3451 1567/3116/3451 1597/3117/3451 -f 1579/2522/3452 1573/3118/3452 1707/3105/3452 -f 1506/2934/3453 1490/3075/3453 1480/2932/3453 -f 1736/2634/3454 1503/2996/3454 1773/2635/3454 -f 3476/355/3455 1163/280/3455 1015/751/3455 -f 1721/2929/3456 1610/3119/3456 391/2947/3456 -f 1650/1350/3457 1545/1250/3457 466/1351/3457 -f 1485/3008/3458 1484/2419/3458 1477/3065/3458 -f 1621/2375/3459 1571/2205/3459 20/707/3459 -f 1567/3120/3460 1557/3121/3460 1764/2329/3460 -f 1667/2785/3461 1294/1252/3461 1558/1251/3461 -f 1559/2860/3462 1552/2958/3462 1582/2848/3462 -f 1642/2852/3463 1681/2854/3463 1691/2941/3463 -f 1717/2791/3464 1672/2957/3464 1566/2900/3464 -f 1491/2933/3465 1515/2945/3465 1506/2934/3465 -f 290/496/3466 1329/2726/3466 3/497/3466 -f 2045/2155/3467 1573/3118/3467 1579/2522/3467 -f 1573/3118/3468 1660/3122/3468 1707/3105/3468 -f 1660/3122/3469 1634/2184/3469 1707/3105/3469 -f 397/411/3470 1708/2842/3470 1718/2910/3470 -f 1591/2849/3471 1592/2856/3471 1600/2857/3471 -f 1606/2863/3472 1341/2607/3472 1692/2693/3472 -f 486/1231/3473 1544/1216/3473 1668/1262/3473 -f 1503/2996/3474 1736/2634/3474 1502/2420/3474 -f 1485/3008/3475 1502/2420/3475 1484/2419/3475 -f 146/902/3476 1639/920/3476 138/903/3476 -f 1519/3109/3477 1678/3123/3477 1690/3110/3477 -f 1678/3044/3478 1682/215/3478 1563/3003/3478 -f 2500/1651/3479 583/711/3479 1488/713/3479 -f 1512/3124/3480 1481/3125/3480 1537/3126/3480 -f 1610/1109/3481 1664/1150/3481 422/1129/3481 -f 1607/2887/3482 1639/2896/3482 1613/2597/3482 -f 1613/2597/3483 1639/2896/3483 1627/120/3483 -f 118/168/3484 1644/170/3484 1658/3012/3484 -f 3441/870/3485 1027/3127/3485 3468/871/3485 -f 1134/1802/3486 983/1985/3486 918/1625/3486 -f 318/2057/3487 682/745/3487 475/1352/3487 -f 3392/2994/3488 1646/2967/3488 1637/2995/3488 -f 1495/2913/3489 579/1860/3489 1517/1138/3489 -f 1060/3128/3490 1693/731/3490 2469/730/3490 -f 586/1676/3491 50/1189/3491 579/1860/3491 -f 1503/2996/3492 1502/2420/3492 1485/3008/3492 -f 1695/3010/3493 1654/3038/3493 3387/3042/3493 -f 3463/300/3494 3504/2545/3494 3490/1009/3494 -f 1380/151/3495 1606/2863/3495 1442/2571/3495 -f 1482/3129/3496 1481/3085/3496 3184/3130/3496 -f 1482/3129/3497 1537/3113/3497 1481/3085/3497 -f 1534/3131/3498 2898/2211/3498 2868/2529/3498 -f 2869/1415/3499 1534/3131/3499 2868/2529/3499 -f 754/2721/3500 753/1931/3500 784/1930/3500 -f 2791/239/3501 2812/371/3501 2828/373/3501 -f 1573/3118/3502 1554/3132/3502 1660/3122/3502 -f 1660/3122/3503 1602/41/3503 1634/2184/3503 -f 959/576/3504 3029/578/3504 955/2175/3504 -f 1696/2899/3505 1701/2979/3505 1712/2890/3505 -f 3059/3133/3506 3074/3134/3506 3035/3135/3506 -f 1478/2828/3507 1503/2996/3507 1485/3008/3507 -f 2048/322/3508 1621/2375/3508 2121/323/3508 -f 2048/322/3509 1699/3136/3509 1621/2375/3509 -f 1699/3136/3510 1571/2205/3510 1621/2375/3510 -f 1434/1308/3511 1371/2881/3511 1565/1306/3511 -f 1599/939/3512 1638/2598/3512 1839/2181/3512 -f 1558/1251/3513 1668/3137/3513 1665/2965/3513 -f 3435/3053/3514 2857/384/3514 1894/383/3514 -f 2560/3050/3515 2561/2976/3515 2593/2977/3515 -f 2816/2069/3516 2817/1426/3516 1028/3037/3516 -f 1490/1412/3517 3402/1414/3517 3381/3068/3517 -f 1630/3082/3518 1690/3110/3518 1590/3083/3518 -f 1713/2731/3519 1571/2205/3519 1699/3136/3519 -f 1896/2159/3520 1906/47/3520 1904/3138/3520 -f 3402/3139/3521 575/3054/3521 3401/3140/3521 -f 1522/3141/3522 1537/3113/3522 1482/3129/3522 -f 1515/3142/3523 1542/2922/3523 1506/2921/3523 -f 1582/2848/3524 1592/2856/3524 1591/2849/3524 -f 1561/2252/3525 1236/2685/3525 1604/2931/3525 -f 215/2844/3526 2781/288/3526 2615/287/3526 -f 2593/2977/3527 2617/3143/3527 2581/3103/3527 -f 3387/3042/3528 1654/3038/3528 1608/3144/3528 -f 2046/2265/3529 1635/3145/3529 2045/2155/3529 -f 2045/2155/3530 1632/3146/3530 1573/3118/3530 -f 1632/3146/3531 1554/3132/3531 1573/3118/3531 -f 1652/3147/3532 1602/41/3532 1660/3122/3532 -f 664/210/3533 1525/667/3533 58/211/3533 -f 1581/2850/3534 1580/3006/3534 1551/2951/3534 -f 1600/2862/3535 114/1040/3535 1580/1010/3535 -f 2415/3148/3536 2433/3149/3536 2409/3150/3536 -f 1524/3099/3537 481/329/3537 1670/3064/3537 -f 1672/2957/3538 1696/2899/3538 1566/2900/3538 -f 1479/3151/3539 1487/2949/3539 1505/2950/3539 -f 2897/2566/3540 967/1517/3540 1923/2461/3540 -f 1572/2150/3541 1635/3145/3541 2046/2265/3541 -f 1635/3145/3542 1632/3146/3542 2045/2155/3542 -f 1652/3147/3543 3334/3152/3543 1602/41/3543 -f 109/1272/3544 1643/1294/3544 1628/3153/3544 -f 3313/1736/3545 3312/3154/3545 3284/1737/3545 -f 1582/2848/3546 97/1160/3546 1592/2856/3546 -f 1667/2785/3547 1558/1251/3547 1665/2965/3547 -f 1715/2940/3548 1716/2978/3548 1696/2899/3548 -f 2930/3155/3549 1723/3156/3549 1722/3157/3549 -f 2809/3158/3550 2841/3159/3550 2026/3160/3550 -f 394/197/3551 159/213/3551 1682/215/3551 -f 1522/3161/3552 1538/3162/3552 1537/3114/3552 -f 1537/3114/3553 1538/3162/3553 1555/2316/3553 -f 1574/2982/3554 1659/2875/3554 1679/2874/3554 -f 1698/1276/3555 1659/2855/3555 1574/2871/3555 -f 1793/1518/3556 2829/3163/3556 2619/1427/3556 -f 1659/2875/3557 392/2784/3557 1667/2785/3557 -f 2290/846/3558 2246/2036/3558 2193/847/3558 -f 2677/2326/3559 2619/1427/3559 2817/1426/3559 -f 1604/2931/3560 506/544/3560 1514/2160/3560 -f 2926/2229/3561 2927/3164/3561 2945/3165/3561 -f 1486/2877/3562 3397/2180/3562 1479/2179/3562 -f 1544/1216/3563 452/1182/3563 1665/2782/3563 -f 1691/2941/3564 1715/2940/3564 1696/2899/3564 -f 2139/1678/3565 1368/2889/3565 2136/1679/3565 -f 1839/2181/3566 1638/2598/3566 1626/2182/3566 -f 1668/3137/3567 1558/1251/3567 1545/1250/3567 -f 1482/3166/3568 1498/3167/3568 1522/3168/3568 -f 2829/3163/3569 1709/2836/3569 2826/1/3569 -f 2619/1427/3570 2829/3163/3570 2826/1/3570 -f 1507/1196/3571 35/1519/3571 2677/2326/3571 -f 870/2400/3572 3454/1301/3572 3480/1300/3572 -f 1632/3146/3573 1706/3169/3573 1554/3132/3573 -f 1554/3132/3574 1518/3170/3574 1660/3122/3574 -f 1516/2865/3575 1493/234/3575 1543/233/3575 -f 1623/2948/3576 1595/3041/3576 1562/3171/3576 -f 1596/2773/3577 1597/913/3577 1605/540/3577 -f 507/328/3578 3302/3172/3578 1670/3064/3578 -f 1518/3173/3579 1524/3099/3579 1670/3064/3579 -f 1569/3174/3580 1699/3136/3580 2048/322/3580 -f 1569/3174/3581 1649/3175/3581 1699/3136/3581 -f 1649/3175/3582 1713/2731/3582 1699/3136/3582 -f 2593/2977/3583 2594/361/3583 2607/363/3583 -f 1475/3176/3584 3196/3177/3584 1498/3167/3584 -f 1498/3167/3585 1538/3178/3585 1522/3168/3585 -f 1538/3162/3586 1548/2548/3586 1555/2316/3586 -f 1555/2316/3587 1548/2548/3587 1556/3179/3587 -f 1589/3180/3588 1843/2469/3588 1575/3181/3588 -f 1530/2859/3589 1540/3182/3589 1774/3183/3589 -f 2175/3184/3590 2409/3185/3590 2904/3186/3590 -f 2779/3187/3591 2564/3188/3591 2624/3013/3591 -f 1635/3145/3592 1706/3169/3592 1632/3146/3592 -f 1652/3147/3593 1660/3122/3593 1518/3170/3593 -f 2434/267/3594 2838/1635/3594 2711/1634/3594 -f 1530/2859/3595 1774/3183/3595 1504/2826/3595 -f 1626/2182/3596 1638/2598/3596 1637/2983/3596 -f 178/1320/3597 179/1345/3597 195/1336/3597 -f 1540/26/3598 1789/2707/3598 1774/3189/3598 -f 1916/3190/3599 1264/2747/3599 1673/2629/3599 -f 1721/2981/3600 1586/2903/3600 1610/2902/3600 -f 1589/3191/3601 1575/590/3601 1556/3179/3601 -f 1596/2773/3602 1843/2469/3602 1589/3180/3602 -f 2425/3192/3603 2436/2295/3603 3030/2297/3603 -f 2370/2558/3604 2175/3193/3604 2901/2556/3604 -f 1635/3145/3605 1541/3194/3605 1706/3169/3605 -f 83/918/3606 46/960/3606 1551/968/3606 -f 2697/2542/3607 3462/2345/3607 2524/2344/3607 -f 465/1110/3608 1664/1150/3608 452/1182/3608 -f 1424/228/3609 1673/2629/3609 1264/2747/3609 -f 1673/2629/3610 1992/2251/3610 1916/3190/3610 -f 1553/1119/3611 1583/1121/3611 1552/2958/3611 -f 1498/3195/3612 1523/3196/3612 1538/3197/3612 -f 1538/3162/3613 1523/3198/3613 1548/2548/3613 -f 1548/2548/3614 1557/3121/3614 1556/3179/3614 -f 1557/3199/3615 1589/3180/3615 1556/3200/3615 -f 2706/3201/3616 2719/3202/3616 2749/3057/3616 -f 184/3203/3617 2111/3204/3617 2896/3205/3617 -f 2466/3206/3618 2255/3207/3618 2455/3208/3618 -f 2615/287/3619 2416/2911/3619 2766/681/3619 -f 1572/2150/3620 1595/3072/3620 1635/3145/3620 -f 1706/3169/3621 1518/3170/3621 1554/3132/3621 -f 3206/3209/3622 601/1428/3622 3205/3210/3622 -f 2900/3211/3623 2335/1890/3623 2342/3212/3623 -f 3442/2587/3624 708/2360/3624 3447/982/3624 -f 2677/2326/3625 35/1519/3625 2619/1427/3625 -f 931/285/3626 1719/284/3626 1568/2215/3626 -f 2121/323/3627 1621/2375/3627 2119/2374/3627 -f 1677/3213/3628 1838/1038/3628 1805/1037/3628 -f 1546/2869/3629 1569/3174/3629 1927/2870/3629 -f 128/961/3630 1580/1010/3630 114/1040/3630 -f 1505/2858/3631 1504/2826/3631 1479/2179/3631 -f 1329/2726/3632 1649/3214/3632 282/217/3632 -f 2335/1890/3633 2900/3211/3633 1019/3215/3633 -f 1635/3145/3634 1595/3072/3634 1541/3194/3634 -f 2034/241/3635 1797/2986/3635 1570/242/3635 -f 2516/3216/3636 2523/3217/3636 2583/3218/3636 -f 1364/3219/3637 1648/3220/3637 1620/286/3637 -f 1608/3221/3638 1654/3222/3638 1620/286/3638 -f 1654/3222/3639 1719/284/3639 1620/286/3639 -f 1569/3174/3640 1563/3223/3640 1649/3175/3640 -f 1164/3224/3641 2500/1651/3641 1488/713/3641 -f 1609/2914/3642 149/2876/3642 148/1041/3642 -f 1593/2628/3643 1561/2252/3643 1673/2629/3643 -f 1673/2629/3644 1561/2252/3644 1992/2251/3644 -f 1820/2250/3645 1561/2252/3645 1604/2931/3645 -f 1513/2761/3646 1756/2478/3646 1548/2548/3646 -f 1523/3198/3647 1513/2761/3647 1548/2548/3647 -f 1676/3225/3648 592/3226/3648 1686/3227/3648 -f 2073/2710/3649 2837/2709/3649 2787/2867/3649 -f 1541/3194/3650 1655/3228/3650 1706/3169/3650 -f 1648/3220/3651 1608/3221/3651 1620/286/3651 -f 1719/284/3652 1590/3083/3652 1711/2216/3652 -f 1563/3223/3653 1569/3174/3653 1546/2869/3653 -f 1678/3123/3654 1563/3223/3654 1546/2869/3654 -f 1560/2938/3655 1570/242/3655 1692/2987/3655 -f 1615/1245/3656 1628/2853/3656 1642/2852/3656 -f 1629/3229/3657 1179/82/3657 3334/3152/3657 -f 1499/3230/3658 1523/3196/3658 1498/3195/3658 -f 1499/3231/3659 1513/2761/3659 1523/3198/3659 -f 1513/2761/3660 1757/2328/3660 1756/2478/3660 -f 1548/2548/3661 1764/2329/3661 1557/3121/3661 -f 2617/3143/3662 2616/3232/3662 2581/3103/3662 -f 2896/2462/3663 2882/2212/3663 1923/2461/3663 -f 1272/3052/3664 2096/382/3664 2857/384/3664 -f 1655/3228/3665 1524/3233/3665 1706/3169/3665 -f 1524/3099/3666 1518/3173/3666 1706/3234/3666 -f 2591/3020/3667 2818/3019/3667 2798/3235/3667 -f 3387/3236/3668 1608/3221/3668 1648/3220/3668 -f 1590/3083/3669 1690/3110/3669 1711/2216/3669 -f 1690/3110/3670 1546/2869/3670 1711/2216/3670 -f 1563/3040/3671 282/217/3671 1649/3214/3671 -f 1038/1356/3672 1055/926/3672 1045/405/3672 -f 1494/729/3673 1527/1139/3673 1493/234/3673 -f 1628/3153/3674 1616/1273/3674 109/1272/3674 -f 1499/3237/3675 1500/2669/3675 1513/3238/3675 -f 506/544/3676 262/666/3676 1514/2160/3676 -f 1557/3115/3677 1597/3117/3677 1589/3239/3677 -f 1589/3239/3678 1597/3117/3678 1596/3240/3678 -f 602/3241/3679 2813/3242/3679 2846/3243/3679 -f 2617/3143/3680 2621/1608/3680 2616/3232/3680 -f 1528/3244/3681 1524/3233/3681 1655/3228/3681 -f 1518/3170/3682 1670/3245/3682 1652/3147/3682 -f 1529/3086/3683 1535/3246/3683 1521/3062/3683 -f 1923/2461/3684 35/1519/3684 1507/1196/3684 -f 3046/293/3685 3045/2277/3685 2980/2936/3685 -f 215/2844/3686 2894/680/3686 2673/2319/3686 -f 1590/3083/3687 1719/284/3687 1654/3222/3687 -f 1690/3110/3688 1678/3123/3688 1546/2869/3688 -f 2096/382/3689 2161/1082/3689 1894/383/3689 -f 2142/3247/3690 2309/1132/3690 2248/1131/3690 -f 2384/3248/3691 2027/3249/3691 2815/3250/3691 -f 2142/3251/3692 2251/3252/3692 2167/3253/3692 -f 2309/3254/3693 2142/3251/3693 2167/3253/3693 -f 2222/3255/3694 2140/3256/3694 973/3257/3694 -f 1028/3037/3695 2060/3/3695 1833/3258/3695 -f 2167/3253/3696 2251/3252/3696 1888/3259/3696 -f 2723/653/3697 1928/678/3697 2643/677/3697 -f 2345/347/3698 2346/1274/3698 2380/3260/3698 -f 1272/3261/3699 1738/3262/3699 2096/2100/3699 -f 2651/2101/3700 2096/2100/3700 1738/3262/3700 -f 2147/3263/3701 2200/3264/3701 2220/2004/3701 -f 2380/3260/3702 2381/3265/3702 2401/3266/3702 -f 2228/3267/3703 2200/3264/3703 2147/3263/3703 -f 1738/3262/3704 1967/3268/3704 2651/2101/3704 -f 1429/247/3705 1099/3269/3705 1849/3270/3705 -f 1818/2303/3706 1839/2181/3706 1846/1200/3706 -f 1967/3268/3707 1926/3271/3707 1849/3272/3707 -f 1926/3273/3708 801/3274/3708 1429/247/3708 -f 1849/3270/3709 1926/3273/3709 1429/247/3709 -f 801/3274/3710 1428/3275/3710 1429/247/3710 -f 3499/1910/3711 3480/1300/3711 3424/1002/3711 -f 2108/3276/3712 1272/3261/3712 1898/2134/3712 -f 2108/3276/3713 1738/3262/3713 1272/3261/3713 -f 1428/3275/3714 1295/248/3714 1429/247/3714 -f 1226/2687/3715 1099/2781/3715 1232/182/3715 -f 2108/3276/3716 1967/3268/3716 1738/3262/3716 -f 801/3274/3717 1740/3277/3717 1428/3275/3717 -f 1740/3277/3718 1295/248/3718 1428/3275/3718 -f 2108/3276/3719 1938/3278/3719 1967/3268/3719 -f 1967/3268/3720 1726/3279/3720 1926/3271/3720 -f 1726/3279/3721 1803/3280/3721 1926/3271/3721 -f 1926/3271/3722 1803/3280/3722 801/3281/3722 -f 801/3282/3723 1803/3283/3723 1740/3284/3723 -f 1728/2660/3724 1647/2659/3724 1740/3285/3724 -f 1938/3278/3725 1726/3279/3725 1967/3268/3725 -f 1803/3286/3726 1739/3287/3726 1740/3277/3726 -f 1740/3285/3727 1739/3288/3727 1728/2660/3727 -f 3444/2043/3728 3448/1106/3728 3478/428/3728 -f 3502/837/3729 3503/1098/3729 3496/1097/3729 -f 1980/3289/3730 1982/3290/3730 2062/2136/3730 -f 1982/3290/3731 2108/3276/3731 2062/2136/3731 -f 1848/3291/3732 204/3292/3732 1739/3288/3732 -f 1803/3283/3733 1848/3293/3733 1739/3294/3733 -f 1739/3288/3734 204/3292/3734 1728/2660/3734 -f 2274/3295/3735 2454/845/3735 2191/3296/3735 -f 1726/3279/3736 1881/3297/3736 1803/3280/3736 -f 1803/3283/3737 1881/3298/3737 1848/3293/3737 -f 1872/1946/3738 1982/3290/3738 1980/3289/3738 -f 2108/3276/3739 1982/3290/3739 1938/3278/3739 -f 1938/3278/3740 2024/3299/3740 1726/3279/3740 -f 1881/3298/3741 1873/3300/3741 1848/3293/3741 -f 1873/3301/3742 1882/2677/3742 204/3292/3742 -f 1848/3291/3743 1873/3301/3743 204/3292/3743 -f 1683/2658/3744 204/3292/3744 1882/2677/3744 -f 1982/3290/3745 1182/3302/3745 1938/3278/3745 -f 1182/3302/3746 2024/3299/3746 1938/3278/3746 -f 2024/3299/3747 1881/3297/3747 1726/3279/3747 -f 1881/3298/3748 1947/3303/3748 1873/3300/3748 -f 2034/241/3749 1994/3304/3749 1797/2986/3749 -f 2024/3305/3750 1947/3303/3750 1881/3298/3750 -f 1946/3306/3751 1883/3307/3751 1873/3301/3751 -f 1947/3303/3752 1946/3308/3752 1873/3300/3752 -f 2024/3309/3753 1946/3310/3753 1947/3311/3753 -f 1946/3306/3754 1882/2677/3754 1883/3307/3754 -f 1838/1038/3755 2097/3312/3755 1872/1946/3755 -f 2097/3312/3756 1982/3290/3756 1872/1946/3756 -f 2024/3305/3757 2008/3313/3757 1946/3308/3757 -f 1915/3314/3758 1937/1103/3758 1882/2677/3758 -f 1946/3306/3759 1915/3314/3759 1882/2677/3759 -f 2097/3312/3760 1182/3302/3760 1982/3290/3760 -f 1182/3302/3761 1812/3315/3761 2024/3299/3761 -f 2024/3299/3762 1812/3315/3762 2008/3316/3762 -f 2008/3313/3763 1863/3317/3763 1946/3308/3763 -f 1946/3306/3764 1863/3318/3764 1915/3314/3764 -f 1371/2881/3765 2106/2748/3765 1565/1306/3765 -f 1736/2634/3766 1735/2218/3766 1501/2217/3766 -f 1810/1228/3767 1802/1363/3767 1811/1362/3767 -f 1870/3319/3768 2106/2748/3768 1937/1103/3768 -f 1883/3320/3769 1882/3321/3769 1873/3300/3769 -f 1871/2583/3770 1925/2214/3770 1003/3322/3770 -f 1847/3323/3771 1182/3302/3771 2097/3312/3771 -f 1812/3315/3772 1767/3324/3772 2008/3316/3772 -f 1863/3318/3773 1870/3319/3773 1915/3314/3773 -f 1870/3319/3774 1937/1103/3774 1915/3314/3774 -f 1787/1229/3775 1809/2623/3775 1801/2479/3775 -f 1484/3325/3776 1501/3326/3776 1483/3327/3776 -f 3455/2042/3777 3478/428/3777 1042/427/3777 -f 2357/3328/3778 2064/2209/3778 1990/3329/3778 -f 2363/3330/3779 2262/3331/3779 2378/3332/3779 -f 1758/2827/3780 1504/2826/3780 1774/3183/3780 -f 2820/3333/3781 966/3334/3781 2435/3335/3781 -f 1847/3323/3782 1812/3315/3782 1182/3302/3782 -f 1767/3336/3783 1737/3337/3783 2008/3313/3783 -f 1737/3338/3784 1870/3319/3784 1863/3318/3784 -f 2008/3313/3785 1737/3337/3785 1863/3317/3785 -f 2284/3339/3786 2211/3340/3786 2310/3341/3786 -f 2143/3342/3787 2197/1925/3787 1344/2639/3787 -f 1838/1038/3788 1847/3323/3788 2097/3312/3788 -f 1727/3343/3789 1906/47/3789 1461/46/3789 -f 1595/3072/3790 1572/2150/3790 3276/3070/3790 -f 2287/3344/3791 2248/3345/3791 2310/3341/3791 -f 1893/2093/3792 1154/364/3792 2084/2321/3792 -f 2084/2321/3793 1154/364/3793 2068/1846/3793 -f 1847/3323/3794 2023/3346/3794 1812/3315/3794 -f 1737/3338/3795 1775/3347/3795 1870/3319/3795 -f 2955/3348/3796 2948/2728/3796 2965/2730/3796 -f 2214/3349/3797 2383/3350/3797 2188/3351/3797 -f 1677/3213/3798 1936/2496/3798 1838/1038/3798 -f 1936/2496/3799 1847/3323/3799 1838/1038/3799 -f 2023/3346/3800 1984/3352/3800 1812/3315/3800 -f 1812/3315/3801 1984/3352/3801 1767/3324/3801 -f 1984/3353/3802 2072/3354/3802 1737/3337/3802 -f 1767/3336/3803 1984/3353/3803 1737/3337/3803 -f 1737/3338/3804 2072/3355/3804 1775/3347/3804 -f 2106/2748/3805 1870/3319/3805 1775/3347/3805 -f 2363/3330/3806 2379/3356/3806 2262/3331/3806 -f 2025/3357/3807 2787/2867/3807 2743/2866/3807 -f 2025/3358/3808 2053/3359/3808 2787/3360/3808 -f 2053/3359/3809 2073/3361/3809 2787/3360/3809 -f 2110/3362/3810 2880/3363/3810 2073/3361/3810 -f 3274/3364/3811 1864/3365/3811 1677/3366/3811 -f 1677/3213/3812 1864/2497/3812 1936/2496/3812 -f 1098/3367/3813 1847/3323/3813 1936/2496/3813 -f 2365/3368/3814 2386/3369/3814 2374/3370/3814 -f 2345/347/3815 1472/348/3815 2346/1274/3815 -f 2686/3371/3816 2633/3372/3816 1950/3373/3816 -f 2686/3374/3817 1998/3375/3817 1997/3376/3817 -f 2010/3377/3818 2053/3359/3818 2025/3358/3818 -f 2053/3359/3819 2089/3378/3819 2073/3361/3819 -f 2110/3362/3820 231/3379/3820 1145/3380/3820 -f 1507/1196/3821 2677/2326/3821 2153/1194/3821 -f 1098/3367/3822 2052/3381/3822 1847/3323/3822 -f 1847/3323/3823 2052/3381/3823 2023/3346/3823 -f 2072/3355/3824 1821/3382/3824 1775/3347/3824 -f 1775/3347/3825 1821/3382/3825 2106/2748/3825 -f 2132/3383/3826 2320/3384/3826 2312/3385/3826 -f 1929/3386/3827 1998/3375/3827 2686/3374/3827 -f 1950/3387/3828 1929/3386/3828 2686/3374/3828 -f 1997/3376/3829 1998/3375/3829 2025/3358/3829 -f 2025/3358/3830 1998/3375/3830 2010/3377/3830 -f 2089/3378/3831 2110/3362/3831 2073/3361/3831 -f 3057/1411/3832 3032/3388/3832 2998/2474/3832 -f 1984/3353/3833 2095/3389/3833 2072/3354/3833 -f 2095/3390/3834 1821/3382/3834 2072/3355/3834 -f 2035/3391/3835 2224/3392/3835 2141/770/3835 -f 1899/3393/3836 1929/3386/3836 1950/3387/3836 -f 2089/3378/3837 2111/3204/3837 2110/3362/3837 -f 1912/628/3838 1098/3367/3838 1936/2496/3838 -f 1966/3394/3839 2095/3389/3839 1984/3353/3839 -f 2023/3346/3840 1966/3395/3840 1984/3352/3840 -f 1821/3382/3841 1565/1306/3841 2106/2748/3841 -f 1555/2316/3842 1556/3179/3842 1785/589/3842 -f 2224/3392/3843 2035/3391/3843 2140/3256/3843 -f 2606/3396/3844 1885/3397/3844 1899/3398/3844 -f 1899/3393/3845 1917/3399/3845 1929/3386/3845 -f 1917/3399/3846 1930/3400/3846 1929/3386/3846 -f 1929/3386/3847 1951/3401/3847 1998/3375/3847 -f 1951/3401/3848 1999/3402/3848 1998/3375/3848 -f 1998/3375/3849 1999/3402/3849 2010/3377/3849 -f 1999/3402/3850 2054/3403/3850 2010/3377/3850 -f 2054/3403/3851 2074/3404/3851 2053/3359/3851 -f 2010/3377/3852 2054/3403/3852 2053/3359/3852 -f 2074/3404/3853 2089/3378/3853 2053/3359/3853 -f 243/2245/3854 767/3405/3854 1368/2889/3854 -f 1098/3367/3855 1983/3406/3855 2052/3381/3855 -f 2052/3381/3856 1966/3395/3856 2023/3346/3856 -f 1831/937/3857 1839/2181/3857 1818/2303/3857 -f 2222/3255/3858 2224/3392/3858 2140/3256/3858 -f 2262/3331/3859 2148/3407/3859 2358/1111/3859 -f 1856/3408/3860 1876/3409/3860 1885/3410/3860 -f 1876/3409/3861 1917/3399/3861 1885/3410/3861 -f 1885/3410/3862 1917/3399/3862 1899/3393/3862 -f 1930/3400/3863 1951/3401/3863 1929/3386/3863 -f 2111/3204/3864 2089/3378/3864 2074/3404/3864 -f 350/3411/3865 231/3379/3865 2110/3362/3865 -f 2111/3204/3866 350/3411/3866 2110/3362/3866 -f 349/3412/3867 2153/3413/3867 231/3414/3867 -f 767/1235/3868 1367/3415/3868 1368/3416/3868 -f 1983/3406/3869 1098/3367/3869 1912/628/3869 -f 1204/163/3870 1349/3417/3870 1707/3105/3870 -f 2358/1111/3871 973/3418/3871 2392/3419/3871 -f 2148/3407/3872 973/3418/3872 2358/1111/3872 -f 1999/3402/3873 2000/3420/3873 2054/3403/3873 -f 2099/3421/3874 2111/3204/3874 2074/3404/3874 -f 2075/3422/3875 2099/3421/3875 2074/3404/3875 -f 349/3423/3876 231/3379/3876 350/3411/3876 -f 1755/3424/3877 1912/628/3877 1631/627/3877 -f 1755/3424/3878 1983/3406/3878 1912/628/3878 -f 1983/3406/3879 2127/3425/3879 2052/3381/3879 -f 2052/3381/3880 2127/3425/3880 1966/3395/3880 -f 2095/3390/3881 1745/3426/3881 1821/3382/3881 -f 1745/3426/3882 14/1912/3882 1565/1306/3882 -f 1821/3382/3883 1745/3426/3883 1565/1306/3883 -f 2689/1201/3884 2688/1203/3884 2687/1417/3884 -f 440/2705/3885 1313/697/3885 439/1377/3885 -f 1864/3365/3886 3274/3364/3886 1531/3427/3886 -f 531/385/3887 3275/3428/3887 3222/367/3887 -f 1787/1229/3888 1801/2479/3888 1765/2630/3888 -f 2232/3429/3889 2147/3430/3889 2387/3431/3889 -f 1940/3432/3890 1985/3433/3890 1951/3401/3890 -f 1930/3400/3891 1940/3432/3891 1951/3401/3891 -f 1951/3401/3892 2001/3434/3892 1999/3402/3892 -f 1999/3402/3893 2001/3434/3893 2000/3420/3893 -f 2000/3420/3894 2075/3422/3894 2054/3403/3894 -f 2054/3403/3895 2075/3422/3895 2074/3404/3895 -f 350/3411/3896 2111/3204/3896 184/3203/3896 -f 1631/627/3897 1448/3435/3897 1755/3424/3897 -f 1966/3394/3898 2009/3436/3898 2095/3389/3898 -f 2009/3437/3899 1745/3426/3899 2095/3390/3899 -f 1579/2522/3900 2058/2158/3900 2045/2155/3900 -f 500/1263/3901 1668/1262/3901 1545/1310/3901 -f 2200/3264/3902 2203/162/3902 2220/2004/3902 -f 2220/2004/3903 2203/162/3903 2382/2005/3903 -f 1830/781/3904 3464/20/3904 1197/3438/3904 -f 2912/3439/3905 1748/3440/3905 2319/3441/3905 -f 1748/3440/3906 1741/3442/3906 2319/3441/3906 -f 1748/3440/3907 2233/3443/3907 1741/3442/3907 -f 2382/3444/3908 2203/3445/3908 2250/2407/3908 -f 1857/3446/3909 1877/3447/3909 1876/3409/3909 -f 1856/3408/3910 1857/3446/3910 1876/3409/3910 -f 1917/3399/3911 1900/3448/3911 1930/3400/3911 -f 1951/3401/3912 1985/3433/3912 2001/3434/3912 -f 2001/3434/3913 2011/3449/3913 2000/3420/3913 -f 1843/2469/3914 1596/2773/3914 1854/542/3914 -f 1532/3450/3915 46/960/3915 37/959/3915 -f 1768/3451/3916 2233/3443/3916 1748/3440/3916 -f 1768/3451/3917 2276/3452/3917 2233/3443/3917 -f 1160/1611/3918 453/1948/3918 384/1609/3918 -f 1768/3451/3919 1778/3453/3919 2276/3452/3919 -f 1876/3409/3920 1877/3447/3920 1917/3399/3920 -f 1900/3448/3921 1940/3432/3921 1930/3400/3921 -f 2036/3454/3922 2075/3422/3922 2000/3420/3922 -f 2075/3455/3923 2882/2212/3923 2099/3456/3923 -f 3189/1637/3924 3188/3457/3924 3152/1638/3924 -f 2308/3458/3925 2244/3459/3925 2185/3460/3925 -f 1579/2522/3926 1349/3417/3926 2066/2523/3926 -f 1722/3157/3927 1768/3451/3927 1748/3440/3927 -f 1807/2302/3928 2087/822/3928 1288/2233/3928 -f 1917/3399/3929 1877/3447/3929 1900/3448/3929 -f 1877/3447/3930 1918/3461/3930 1900/3448/3930 -f 1900/3448/3931 1952/3462/3931 1940/3432/3931 -f 1940/3432/3932 1952/3462/3932 1985/3433/3932 -f 1985/3433/3933 2002/3463/3933 2001/3434/3933 -f 2001/3434/3934 2002/3463/3934 2011/3449/3934 -f 2011/3449/3935 2036/3454/3935 2000/3420/3935 -f 2075/3422/3936 2867/3464/3936 2882/3465/3936 -f 229/2463/3937 163/2652/3937 1116/2276/3937 -f 2908/3466/3938 2306/3467/3938 2406/3468/3938 -f 1983/3406/3939 2086/3469/3939 2127/3425/3939 -f 2086/3470/3940 1776/3471/3940 1966/3394/3940 -f 2127/3425/3941 2086/3469/3941 1966/3395/3941 -f 1966/3394/3942 1776/3471/3942 2009/3436/3942 -f 1776/3472/3943 1745/3426/3943 2009/3437/3943 -f 2389/3473/3944 2399/3474/3944 2235/3475/3944 -f 1888/3476/3945 2307/2426/3945 2167/3477/3945 -f 1056/3478/3946 1141/101/3946 561/2361/3946 -f 2930/3155/3947 1722/3157/3947 2912/3439/3947 -f 1729/3479/3948 1768/3480/3948 1722/3481/3948 -f 1729/3479/3949 1779/3482/3949 1768/3480/3949 -f 1779/3482/3950 1778/3483/3950 1768/3480/3950 -f 1835/1867/3951 1857/3446/3951 1834/1865/3951 -f 1835/1867/3952 1850/3484/3952 1857/3446/3952 -f 1857/3446/3953 1850/3484/3953 1877/3447/3953 -f 2026/3160/3954 2841/3159/3954 2036/3454/3954 -f 2011/3449/3955 2026/3160/3955 2036/3454/3955 -f 2362/3485/3956 2284/3339/3956 2199/3486/3956 -f 3236/1114/3957 1964/3487/3957 1448/3488/3957 -f 1448/3435/3958 2022/3489/3958 1755/3424/3958 -f 2022/3489/3959 1754/3490/3959 1755/3424/3959 -f 1754/3490/3960 1983/3406/3960 1755/3424/3960 -f 1754/3490/3961 2086/3469/3961 1983/3406/3961 -f 1955/3491/3962 1941/3492/3962 1956/3493/3962 -f 188/3494/3963 2145/3495/3963 1939/3496/3963 -f 1723/3156/3964 1730/3497/3964 1722/3157/3964 -f 1730/3497/3965 1729/3498/3965 1722/3157/3965 -f 1749/3499/3966 1779/3500/3966 1729/3498/3966 -f 1824/3501/3967 1835/3502/3967 1813/2561/3967 -f 1814/2201/3968 1824/3501/3968 1813/2561/3968 -f 1824/3503/3969 1836/3504/3969 1835/1867/3969 -f 1835/1867/3970 1836/3504/3970 1850/3484/3970 -f 1900/3448/3971 1918/3461/3971 1952/3462/3971 -f 1985/3433/3972 1952/3462/3972 2002/3463/3972 -f 2775/3505/3973 2026/3160/3973 2002/3463/3973 -f 2002/3463/3974 2026/3160/3974 2011/3449/3974 -f 2775/3505/3975 2809/3158/3975 2026/3160/3975 -f 1724/408/3976 2018/2631/3976 1137/2195/3976 -f 2018/2631/3977 1879/1574/3977 1137/2195/3977 -f 1776/3472/3978 557/3506/3978 1745/3426/3978 -f 1745/3426/3979 1714/1913/3979 14/1912/3979 -f 982/259/3980 1327/2832/3980 1131/2232/3980 -f 2300/3507/3981 1145/3508/3981 231/3414/3981 -f 1865/3509/3982 188/3494/3982 1939/3496/3982 -f 2908/3510/3983 2907/2457/3983 2413/3511/3983 -f 1730/3497/3984 1749/3499/3984 1729/3498/3984 -f 1324/2034/3985 232/2161/3985 1460/2035/3985 -f 1919/3512/3986 1931/2235/3986 1952/3462/3986 -f 1918/3461/3987 1919/3512/3987 1952/3462/3987 -f 1952/3462/3988 1931/2235/3988 2002/3463/3988 -f 2339/2433/3989 2179/3513/3989 2328/2459/3989 -f 2017/2157/3990 2044/2156/3990 3182/562/3990 -f 1159/2291/3991 1925/2214/3991 1871/2583/3991 -f 2370/2558/3992 2903/2557/3992 2342/3212/3992 -f 1964/2128/3993 2105/3514/3993 1448/3435/3993 -f 1448/3435/3994 2105/3514/3994 2022/3489/3994 -f 3273/3515/3995 1629/3229/3995 3334/3152/3995 -f 1136/3516/3996 1333/3517/3996 1350/3097/3996 -f 1875/2973/3997 188/3518/3997 1865/2971/3997 -f 1750/3519/3998 1749/3499/3998 1730/3497/3998 -f 1749/3520/3999 1804/725/3999 1779/727/3999 -f 1825/3521/4000 1824/3501/4000 1814/2201/4000 -f 1825/3521/4001 1836/3522/4001 1824/3501/4001 -f 1836/3504/4002 1840/3523/4002 1850/3484/4002 -f 1850/3484/4003 1878/3524/4003 1877/3447/4003 -f 1877/3447/4004 1878/3524/4004 1918/3461/4004 -f 1931/2235/4005 2703/3525/4005 2002/3463/4005 -f 2351/3526/4006 2465/2145/4006 2481/2144/4006 -f 1736/2634/4007 1744/2473/4007 1735/2218/4007 -f 1765/2630/4008 1772/1046/4008 1744/2477/4008 -f 3483/1780/4009 453/1781/4009 3432/2531/4009 -f 1765/2630/4010 1801/2479/4010 1772/1046/4010 -f 1801/2479/4011 1809/2623/4011 1808/1135/4011 -f 1809/2304/4012 1818/2303/4012 1808/1147/4012 -f 3469/782/4013 1174/3527/4013 2007/2766/4013 -f 2086/3470/4014 2125/3528/4014 1776/3471/4014 -f 1776/3472/4015 2125/3529/4015 557/3506/4015 -f 557/3506/4016 1961/2924/4016 1745/3426/4016 -f 3136/3530/4017 47/99/4017 1056/3478/4017 -f 1141/101/4018 1159/2291/4018 1309/2582/4018 -f 1742/3531/4019 1730/3497/4019 2949/3532/4019 -f 2930/3155/4020 2949/3532/4020 1723/3156/4020 -f 1742/3531/4021 1750/3519/4021 1730/3497/4021 -f 1791/3533/4022 1804/3534/4022 1749/3499/4022 -f 1869/59/4023 1893/2093/4023 1862/174/4023 -f 1850/3484/4024 1840/3523/4024 1878/3524/4024 -f 1918/3461/4025 1878/3524/4025 1919/3512/4025 -f 2703/3525/4026 1969/3535/4026 2002/3463/4026 -f 2221/2313/4027 2142/3247/4027 2248/1131/4027 -f 1575/590/4028 1785/589/4028 1556/3179/4028 -f 1905/2500/4029 1188/1575/4029 1003/3322/4029 -f 2063/3536/4030 1754/3490/4030 2022/3489/4030 -f 2063/3536/4031 2050/3537/4031 1754/3490/4031 -f 2050/3538/4032 2125/3528/4032 2086/3470/4032 -f 1754/3490/4033 2050/3537/4033 2086/3469/4033 -f 1826/3539/4034 1814/2201/4034 1827/1513/4034 -f 2688/1203/4035 2703/3540/4035 2687/1417/4035 -f 2669/857/4036 2754/705/4036 3428/759/4036 -f 1791/3533/4037 1749/3499/4037 1750/3519/4037 -f 1826/3539/4038 1825/3521/4038 1814/2201/4038 -f 2294/2202/4039 1814/2201/4039 1804/725/4039 -f 1837/3541/4040 1836/3522/4040 1825/3521/4040 -f 1826/3542/4041 1837/3543/4041 1825/3544/4041 -f 1837/3543/4042 1840/3523/4042 1836/3504/4042 -f 2482/2327/4043 2817/1426/4043 2816/2069/4043 -f 1128/1576/4044 2121/323/4044 2119/2374/4044 -f 1160/3545/4045 3432/2531/4045 453/1781/4045 -f 2087/822/4046 1989/1213/4046 1288/2233/4046 -f 1884/3546/4047 188/3494/4047 1875/3547/4047 -f 1884/3546/4048 1336/3548/4048 188/3494/4048 -f 2949/3532/4049 1731/3549/4049 1742/3531/4049 -f 3141/2833/4050 3189/1637/4050 3140/1218/4050 -f 1840/3523/4051 1858/3550/4051 1878/3524/4051 -f 1886/3551/4052 1908/2236/4052 1919/3512/4052 -f 1878/3524/4053 1886/3551/4053 1919/3512/4053 -f 1919/3512/4054 1908/2236/4054 1931/2235/4054 -f 2401/3266/4055 2172/3552/4055 973/3418/4055 -f 2259/3553/4056 2895/3554/4056 2368/3555/4056 -f 1602/41/4057 3334/3152/4057 1179/82/4057 -f 1056/3478/4058 47/99/4058 1141/101/4058 -f 1758/2827/4059 1773/2635/4059 1503/2996/4059 -f 1733/1047/4060 1770/1090/4060 1757/2328/4060 -f 1629/3229/4061 1122/2343/4061 1179/82/4061 -f 1629/3229/4062 1269/2342/4062 1122/2343/4062 -f 1629/3229/4063 3407/3556/4063 1269/2342/4063 -f 2656/805/4064 2668/807/4064 2655/3557/4064 -f 1964/2128/4065 1363/3558/4065 2105/3514/4065 -f 2126/3559/4066 2022/3489/4066 2105/3514/4066 -f 2022/3489/4067 2126/3559/4067 2063/3536/4067 -f 2063/3536/4068 2094/3560/4068 2125/3529/4068 -f 2050/3538/4069 2063/3561/4069 2125/3528/4069 -f 2125/3529/4070 2094/3560/4070 557/3506/4070 -f 557/3506/4071 1895/243/4071 1961/2924/4071 -f 1520/3029/4072 1753/3063/4072 1743/3087/4072 -f 1736/2634/4073 1501/2217/4073 1502/2420/4073 -f 1751/3562/4074 1750/3519/4074 1742/3531/4074 -f 1751/3562/4075 1780/3563/4075 1750/3519/4075 -f 1780/3563/4076 1791/3533/4076 1750/3519/4076 -f 1827/1513/4077 1837/3541/4077 1826/3539/4077 -f 1841/3564/4078 1840/3523/4078 1837/3543/4078 -f 1840/3523/4079 1841/3564/4079 1858/3550/4079 -f 1858/3550/4080 1866/2422/4080 1878/3524/4080 -f 1878/3524/4081 1866/2422/4081 1886/3551/4081 -f 1764/2329/4082 1786/2441/4082 1567/3120/4082 -f 1800/1148/4083 1817/177/4083 1799/176/4083 -f 1799/176/4084 1798/912/4084 1786/2322/4084 -f 2868/2529/4085 2898/2211/4085 2867/2213/4085 -f 1363/3558/4086 2126/3559/4086 2105/3514/4086 -f 1895/243/4087 1588/2925/4087 1961/2924/4087 -f 1948/2825/4088 1875/3547/4088 2144/3565/4088 -f 1948/2825/4089 1884/3546/4089 1875/3547/4089 -f 1369/2824/4090 1336/3548/4090 1884/3546/4090 -f 2407/3566/4091 2907/2457/4091 2906/2458/4091 -f 2949/3532/4092 2446/3567/4092 1731/3549/4092 -f 1141/101/4093 1309/2582/4093 1325/199/4093 -f 1842/3568/4094 1837/3541/4094 1827/1513/4094 -f 1842/220/4095 1841/3564/4095 1837/3543/4095 -f 1886/3569/4096 1901/3570/4096 1908/1418/4096 -f 2283/3571/4097 2337/3572/4097 2368/3555/4097 -f 2155/3573/4098 2271/3574/4098 2391/3575/4098 -f 1798/912/4099 1799/176/4099 1844/2371/4099 -f 1989/1213/4100 1311/2186/4100 2031/2185/4100 -f 1846/1200/4101 1619/2365/4101 1845/178/4101 -f 57/1367/4102 2061/2696/4102 1296/2577/4102 -f 3471/3576/4103 1323/3577/4103 1363/3558/4103 -f 1895/243/4104 557/3506/4104 2094/3560/4104 -f 1807/2302/4105 2067/708/4105 2087/822/4105 -f 2068/1846/4106 2067/708/4106 1807/2302/4106 -f 1977/2720/4107 1958/232/4107 2724/1977/4107 -f 1369/2824/4108 1884/3546/4108 1948/2825/4108 -f 727/352/4109 726/485/4109 492/276/4109 -f 1751/3562/4110 1742/3531/4110 1731/3549/4110 -f 1792/3578/4111 1791/3533/4111 1780/3563/4111 -f 1842/220/4112 1866/2422/4112 1858/3550/4112 -f 1841/3564/4113 1842/220/4113 1858/3550/4113 -f 2574/222/4114 2581/2423/4114 1842/220/4114 -f 1866/2422/4115 2616/2421/4115 1886/3551/4115 -f 1886/3551/4116 2616/2421/4116 1901/3579/4116 -f 2337/3572/4117 2259/3553/4117 2368/3555/4117 -f 1961/2924/4118 1714/1913/4118 1745/3426/4118 -f 2212/3580/4119 2368/3555/4119 1048/3581/4119 -f 2916/851/4120 2915/3582/4120 2906/2458/4120 -f 2274/3295/4121 2247/3583/4121 2350/3584/4121 -f 1170/2162/4122 1078/6/4122 1460/2035/4122 -f 1288/2233/4123 1989/1213/4123 2031/2185/4123 -f 1893/3585/4124 2084/3586/4124 2085/3587/4124 -f 3456/400/4125 2007/2766/4125 1323/3048/4125 -f 1280/3588/4126 2063/3536/4126 2126/3559/4126 -f 2098/3589/4127 1280/3588/4127 2126/3559/4127 -f 2063/3536/4128 1280/3588/4128 2094/3560/4128 -f 1416/3590/4129 1948/2825/4129 2144/3565/4129 -f 2048/322/4130 2069/321/4130 1569/3174/4130 -f 2183/1718/4131 2347/1956/4131 214/1716/4131 -f 2226/3591/4132 2131/3592/4132 2338/3593/4132 -f 3025/3594/4133 3011/3595/4133 3049/3596/4133 -f 2055/3597/4134 2078/3598/4134 2077/3599/4134 -f 2078/3600/4135 4/3601/4135 2112/3602/4135 -f 232/2161/4136 1170/2162/4136 1460/2035/4136 -f 1078/6/4137 1170/2162/4137 1095/4/4137 -f 2100/2172/4138 1158/2171/4138 1286/2338/4138 -f 1128/1576/4139 2119/2374/4139 2104/592/4139 -f 1012/2222/4140 991/2378/4140 3468/2223/4140 -f 1323/3577/4141 2123/3603/4141 1363/3558/4141 -f 2123/3603/4142 1051/3604/4142 2126/3559/4142 -f 1363/3558/4143 2123/3603/4143 2126/3559/4143 -f 2126/3559/4144 1051/3604/4144 2098/3589/4144 -f 1280/3588/4145 2034/241/4145 2094/3560/4145 -f 2034/241/4146 1895/243/4146 2094/3560/4146 -f 1277/100/4147 1364/3219/4147 931/285/4147 -f 1879/1574/4148 1128/1576/4148 2104/592/4148 -f 2067/708/4149 2068/1846/4149 2047/593/4149 -f 1393/2244/4150 1948/3605/4150 1416/61/4150 -f 2552/1854/4151 1023/1856/4151 2544/3606/4151 -f 1320/2686/4152 1236/2685/4152 1593/2628/4152 -f 1027/3127/4153 3441/870/4153 1111/3607/4153 -f 4/3608/4154 1190/3609/4154 1307/3610/4154 -f 1190/3611/4155 130/2032/4155 1307/2031/4155 -f 2548/271/4156 3450/1786/4156 3449/3612/4156 -f 2252/2505/4157 2165/3613/4157 2131/3614/4157 -f 2058/2158/4158 2066/2523/4158 2057/219/4158 -f 2058/2158/4159 2057/219/4159 2044/2156/4159 -f 2897/2566/4160 1923/2461/4160 2882/2212/4160 -f 2007/3615/4161 1174/3616/4161 1323/3577/4161 -f 1323/3577/4162 1174/3616/4162 2123/3603/4162 -f 1280/3588/4163 2098/3589/4163 2034/241/4163 -f 1988/272/4164 1968/2750/4164 1284/1909/4164 -f 602/3241/4165 2887/250/4165 2813/3242/4165 -f 1766/57/4166 1762/407/4166 1981/58/4166 -f 2781/3617/4167 2090/3618/4167 2144/3565/4167 -f 2090/2173/4168 1416/61/4168 2144/3619/4168 -f 1418/63/4169 1393/2244/4169 1416/61/4169 -f 1349/3417/4170 2117/306/4170 2066/2523/4170 -f 2322/2003/4171 2266/3620/4171 2254/3621/4171 -f 2055/3597/4172 2037/3622/4172 2078/3598/4172 -f 2030/87/4173 2042/89/4173 2041/1016/4173 -f 1324/2034/4174 1459/40/4174 232/2161/4174 -f 1534/3131/4175 2897/2566/4175 2898/2211/4175 -f 1535/3246/4176 1753/3063/4176 1521/3062/4176 -f 1326/2758/4177 1364/3219/4177 1277/100/4177 -f 30/2724/4178 2170/2723/4178 1227/28/4178 -f 3213/2206/4179 3279/106/4179 3227/2262/4179 -f 2090/2173/4180 1433/62/4180 1416/61/4180 -f 1122/2343/4181 1178/1662/4181 1179/82/4181 -f 1215/421/4182 1995/2188/4182 1762/407/4182 -f 1319/200/4183 1995/2188/4183 1215/421/4183 -f 561/2361/4184 158/80/4184 1806/79/4184 -f 1575/3181/4185 1843/2469/4185 1816/2471/4185 -f 2381/3265/4186 2172/3552/4186 2401/3266/4186 -f 2167/3477/4187 2244/3623/4187 2309/1132/4187 -f 2003/2490/4188 2190/2489/4188 2247/3583/4188 -f 2037/3622/4189 2113/3624/4189 2078/3598/4189 -f 2078/3598/4190 2113/3624/4190 4/3608/4190 -f 1052/3625/4191 130/3626/4191 1190/3609/4191 -f 2575/3627/4192 130/2032/4192 1430/3628/4192 -f 2061/2696/4193 1713/2980/4193 290/496/4193 -f 1719/284/4194 1711/2216/4194 1568/2215/4194 -f 2768/3629/4195 1980/3289/4195 2062/2136/4195 -f 1927/2870/4196 1569/3174/4196 2069/321/4196 -f 1003/3322/4197 1188/1575/4197 2018/2631/4197 -f 2066/2523/4198 2083/820/4198 2057/219/4198 -f 2117/306/4199 1349/3417/4199 1204/163/4199 -f 2204/3630/4200 2147/3263/4200 2322/2003/4200 -f 3173/310/4201 3212/2167/4201 3189/1637/4201 -f 2390/2830/4202 1970/3631/4202 1362/1261/4202 -f 2370/2558/4203 2342/3212/4203 2246/2036/4203 -f 2304/3632/4204 2281/3633/4204 2076/3634/4204 -f 2168/695/4205 2169/3635/4205 2340/3636/4205 -f 2204/3630/4206 2322/2003/4206 2254/3621/4206 -f 2167/3477/4207 2610/3637/4207 2244/3623/4207 -f 2179/3638/4208 2132/3383/4208 2245/3639/4208 -f 2610/3637/4209 1954/3640/4209 2244/3623/4209 -f 2055/3641/4210 2854/3077/4210 2037/3642/4210 -f 2037/3622/4211 2038/3643/4211 2113/3624/4211 -f 2113/3644/4212 2114/3645/4212 4/3601/4212 -f 4/3608/4213 2114/3646/4213 1190/3609/4213 -f 1052/3625/4214 1430/3647/4214 130/3626/4214 -f 2389/3473/4215 2235/3475/4215 1823/3648/4215 -f 973/3418/4216 2172/3552/4216 2222/3649/4216 -f 2041/1016/4217 2065/821/4217 2082/307/4217 -f 1215/421/4218 1088/111/4218 1041/420/4218 -f 1579/2522/4219 1707/3105/4219 1349/3417/4219 -f 2502/3650/4220 2522/3651/4220 1792/3652/4220 -f 1830/3653/4221 2123/3603/4221 1174/3616/4221 -f 1135/3654/4222 1763/3655/4222 1051/3604/4222 -f 2123/3603/4223 1135/3654/4223 1051/3604/4223 -f 1763/3655/4224 2098/3589/4224 1051/3604/4224 -f 1763/3655/4225 1994/3304/4225 2034/241/4225 -f 2098/3589/4226 1763/3655/4226 2034/241/4226 -f 931/285/4227 1568/2215/4227 1159/2291/4227 -f 1122/2343/4228 1415/1660/4228 1178/1662/4228 -f 1324/2034/4229 1707/3105/4229 1459/40/4229 -f 232/2161/4230 1459/40/4230 1138/42/4230 -f 2166/3656/4231 1880/3657/4231 2232/3429/4231 -f 2872/843/4232 2315/3658/4232 2158/1442/4232 -f 2252/2505/4233 1833/3258/4233 2165/3613/4233 -f 2502/3659/4234 1792/3578/4234 1780/3563/4234 -f 2111/3204/4235 2099/3421/4235 2896/3205/4235 -f 3402/3139/4236 3401/3140/4236 3370/685/4236 -f 2854/3660/4237 2038/3643/4237 2037/3622/4237 -f 2113/3644/4238 2091/3661/4238 2114/3645/4238 -f 2114/3646/4239 2130/3662/4239 1190/3609/4239 -f 1359/2166/4240 1444/1844/4240 823/142/4240 -f 1395/2644/4241 1040/2153/4241 1112/2152/4241 -f 2309/1132/4242 2244/3623/4242 2297/1133/4242 -f 2348/3663/4243 2224/3392/4243 2222/3255/4243 -f 1830/3653/4244 2070/3664/4244 2123/3603/4244 -f 2070/3664/4245 1135/3654/4245 2123/3603/4245 -f 1759/3665/4246 1604/2931/4246 1896/2159/4246 -f 1707/3105/4247 1324/2034/4247 1204/163/4247 -f 1874/2713/4248 1903/2919/4248 1598/2991/4248 -f 1727/3666/4249 515/3667/4249 1903/3668/4249 -f 1871/2583/4250 1003/3322/4250 2018/2631/4250 -f 1158/201/4251 1747/81/4251 1286/2340/4251 -f 33/446/4252 3350/3669/4252 3332/1653/4252 -f 2595/3670/4253 1851/3671/4253 2655/3672/4253 -f 1851/3671/4254 1867/3673/4254 2638/3674/4254 -f 2655/3672/4255 1851/3671/4255 2638/3674/4255 -f 1577/1955/4256 1811/1362/4256 1653/776/4256 -f 2003/2490/4257 2247/3583/4257 2274/3295/4257 -f 2763/3675/4258 2814/3076/4258 2796/3078/4258 -f 1052/3625/4259 1190/3609/4259 2130/3662/4259 -f 2998/2474/4260 3032/3388/4260 3033/67/4260 -f 3057/1411/4261 3080/3676/4261 3032/3388/4261 -f 2340/3677/4262 2169/3678/4262 2386/3369/4262 -f 2266/3679/4263 2285/2534/4263 2254/2536/4263 -f 2165/3613/4264 1833/3258/4264 2535/2/4264 -f 2711/1634/4265 2019/1636/4265 1830/1936/4265 -f 2019/3680/4266 2070/3664/4266 1830/3653/4266 -f 1773/2169/4267 1787/1229/4267 1765/2630/4267 -f 515/2174/4268 1727/3343/4268 1461/46/4268 -f 1905/2500/4269 1003/3322/4269 1925/2214/4269 -f 1904/3681/4270 1903/3668/4270 1874/3682/4270 -f 1904/3681/4271 1727/3666/4271 1903/3668/4271 -f 2288/3683/4272 2243/3684/4272 2312/3385/4272 -f 2321/3685/4273 1833/3686/4273 2252/3687/4273 -f 1955/3491/4274 1956/3493/4274 2763/3688/4274 -f 2814/3689/4275 2013/3690/4275 2854/3660/4275 -f 2013/3690/4276 2039/3691/4276 2038/3643/4276 -f 2854/3660/4277 2013/3690/4277 2038/3643/4277 -f 2039/3692/4278 2091/3661/4278 2113/3644/4278 -f 2038/3643/4279 2039/3691/4279 2113/3624/4279 -f 2114/3646/4280 1306/3693/4280 2130/3662/4280 -f 1333/3517/4281 1136/3516/4281 2109/3694/4281 -f 2347/1956/4282 2183/1718/4282 2268/2504/4282 -f 2366/3695/4283 2308/3458/4283 2213/3696/4283 -f 2225/2418/4284 2360/2417/4284 2357/3328/4284 -f 1130/2675/4285 2375/3697/4285 2217/3698/4285 -f 2070/3664/4286 2020/3699/4286 1135/3654/4286 -f 1945/3700/4287 1763/3655/4287 1135/3654/4287 -f 1945/3700/4288 1797/2986/4288 1994/3304/4288 -f 1763/3655/4289 1945/3700/4289 1994/3304/4289 -f 1159/2291/4290 1871/2583/4290 1309/2582/4290 -f 1965/3701/4291 1904/3681/4291 1874/3682/4291 -f 1906/47/4292 1727/3343/4292 1904/3138/4292 -f 1781/3702/4293 1829/3703/4293 2503/3704/4293 -f 2595/3705/4294 1829/3706/4294 1851/3707/4294 -f 1956/3493/4295 1971/3708/4295 2763/3688/4295 -f 2763/3709/4296 1971/3710/4296 2814/3689/4296 -f 2013/3690/4297 2028/3711/4297 2039/3691/4297 -f 1306/3693/4298 1177/3712/4298 2130/3662/4298 -f 1177/3712/4299 1052/3625/4299 2130/3662/4299 -f 1177/3712/4300 1186/3713/4300 1052/3625/4300 -f 1186/3713/4301 1430/3647/4301 1052/3625/4301 -f 984/3714/4302 1333/3517/4302 2109/3694/4302 -f 2415/3148/4303 2175/3193/4303 2370/2558/4303 -f 2331/10/4304 2362/3485/4304 2399/3474/4304 -f 2020/3699/4305 2070/3664/4305 2019/3680/4305 -f 2020/3699/4306 2032/3715/4306 1135/3654/4306 -f 2124/3716/4307 1797/2986/4307 1945/3700/4307 -f 2051/3717/4308 1874/3682/4308 2173/3718/4308 -f 2051/3717/4309 1965/3701/4309 1874/3682/4309 -f 1896/2159/4310 1904/3138/4310 1965/3719/4310 -f 1024/3720/4311 2320/3384/4311 2377/3721/4311 -f 1760/3722/4312 1781/3723/4312 2256/3724/4312 -f 1782/3725/4313 1781/3726/4313 1760/3727/4313 -f 2228/3728/4314 2232/3429/4314 2330/3729/4314 -f 2722/3730/4315 1942/3731/4315 1941/3492/4315 -f 1942/3731/4316 1962/3732/4316 1956/3493/4316 -f 1941/3492/4317 1942/3731/4317 1956/3493/4317 -f 1956/3493/4318 1962/3732/4318 1971/3708/4318 -f 1971/3710/4319 1972/3733/4319 2814/3689/4319 -f 2814/3689/4320 1972/3733/4320 2013/3690/4320 -f 2028/3711/4321 2079/3734/4321 2039/3691/4321 -f 2079/3734/4322 2092/3735/4322 2091/3736/4322 -f 2039/3691/4323 2079/3734/4323 2091/3736/4323 -f 2092/3735/4324 1306/3693/4324 2114/3646/4324 -f 2091/3736/4325 2092/3735/4325 2114/3646/4325 -f 1907/3737/4326 2389/3473/4326 1823/3648/4326 -f 2398/2756/4327 2389/3473/4327 1907/3737/4327 -f 3307/3738/4328 3215/3739/4328 3281/3740/4328 -f 2204/3741/4329 1024/2330/4329 2151/3742/4329 -f 2387/3431/4330 2204/3741/4330 2151/3742/4330 -f 2960/3049/4331 2952/69/4331 2944/3743/4331 -f 2019/1636/4332 1819/3744/4332 2020/3745/4332 -f 2032/3746/4333 2020/3745/4333 1819/3744/4333 -f 2032/3715/4334 1944/3747/4334 1135/3654/4334 -f 1944/3747/4335 2124/3716/4335 1945/3700/4335 -f 1135/3654/4336 1944/3747/4336 1945/3700/4336 -f 1797/2986/4337 2124/3716/4337 1606/2985/4337 -f 2868/2529/4338 2867/2213/4338 2841/1416/4338 -f 2330/3729/4339 2198/844/4339 2228/3728/4339 -f 2228/3267/4340 2198/160/4340 2200/3264/4340 -f 1752/3748/4341 1760/3727/4341 2255/3749/4341 -f 2041/1016/4342 2042/89/4342 2065/821/4342 -f 1795/3750/4343 1781/3726/4343 1782/3725/4343 -f 1795/3751/4344 1829/3703/4344 1781/3702/4344 -f 1829/3703/4345 1852/3752/4345 1851/3671/4345 -f 2695/3046/4346 1910/2447/4346 2722/3730/4346 -f 2722/3753/4347 1910/3754/4347 1942/3755/4347 -f 1962/3756/4348 1972/3733/4348 1971/3710/4348 -f 1972/3733/4349 2014/3757/4349 2013/3690/4349 -f 2013/3690/4350 2014/3757/4350 2028/3711/4350 -f 2014/3757/4351 2079/3734/4351 2028/3711/4351 -f 1186/3713/4352 984/3714/4352 1430/3647/4352 -f 1350/3097/4353 1333/3517/4353 984/3714/4353 -f 2781/288/4354 1598/2991/4354 1903/2919/4354 -f 2275/2190/4355 2537/3107/4355 2536/2901/4355 -f 2237/3758/4356 2318/3759/4356 2176/3760/4356 -f 2283/3571/4357 2368/3555/4357 2212/3580/4357 -f 2215/2294/4358 2339/2433/4358 2138/2460/4358 -f 2132/2438/4359 2179/3513/4359 2339/2433/4359 -f 1620/286/4360 931/285/4360 1364/3219/4360 -f 2289/3761/4361 2267/3762/4361 2219/3763/4361 -f 1832/3764/4362 1819/3765/4362 2838/3766/4362 -f 1278/3767/4363 2032/3715/4363 1819/3765/4363 -f 3446/22/4364 3508/21/4364 3489/423/4364 -f 2689/1201/4365 2687/1417/4365 2652/724/4365 -f 2173/3718/4366 1924/3768/4366 2051/3717/4366 -f 1759/3769/4367 1965/3701/4367 2051/3717/4367 -f 1303/2037/4368 2136/1679/4368 1367/3770/4368 -f 1752/3771/4369 2255/3207/4369 2466/3206/4369 -f 3185/3772/4370 3224/3773/4370 3196/3774/4370 -f 1815/3775/4371 1829/3703/4371 1795/3751/4371 -f 1851/3671/4372 1868/3776/4372 1867/3673/4372 -f 1889/2448/4373 1910/2447/4373 2695/3046/4373 -f 2980/2936/4374 2998/2474/4374 3033/67/4374 -f 1942/3731/4375 1943/3777/4375 1962/3732/4375 -f 2092/3735/4376 2101/3778/4376 1306/3693/4376 -f 2101/3778/4377 1347/3779/4377 1306/3693/4377 -f 1347/3779/4378 1177/3712/4378 1306/3693/4378 -f 1187/3780/4379 1186/3713/4379 1177/3712/4379 -f 1347/3779/4380 1187/3780/4380 1177/3712/4380 -f 1822/3781/4381 984/3714/4381 1186/3713/4381 -f 1205/3782/4382 1732/3783/4382 2765/3784/4382 -f 2318/3759/4383 2245/3639/4383 2176/3760/4383 -f 1278/3785/4384 1944/3786/4384 2032/3746/4384 -f 1944/3747/4385 2033/3787/4385 2124/3716/4385 -f 2033/3787/4386 1606/2985/4386 2124/3716/4386 -f 2980/2936/4387 3033/67/4387 2960/3049/4387 -f 1790/3788/4388 2051/3717/4388 1924/3768/4388 -f 1790/3789/4389 1820/2250/4389 2051/3790/4389 -f 1820/3791/4390 1759/3769/4390 2051/3717/4390 -f 1965/3719/4391 1759/3665/4391 1896/2159/4391 -f 1743/3792/4392 1752/3748/4392 2466/3793/4392 -f 1612/2366/4393 1619/2365/4393 1618/2440/4393 -f 1815/3775/4394 1852/3752/4394 1829/3703/4394 -f 1852/3752/4395 1859/3794/4395 1851/3671/4395 -f 1851/3671/4396 1859/3794/4396 1868/3776/4396 -f 1921/3795/4397 1943/3777/4397 1942/3731/4397 -f 1910/3754/4398 1921/3796/4398 1942/3755/4398 -f 1943/3777/4399 1963/3797/4399 1962/3732/4399 -f 1963/3798/4400 1972/3733/4400 1962/3756/4400 -f 1972/3733/4401 1973/3799/4401 2014/3757/4401 -f 2079/3734/4402 2101/3778/4402 2092/3735/4402 -f 1822/3781/4403 1350/3097/4403 984/3714/4403 -f 551/3800/4404 1144/3801/4404 169/3802/4404 -f 1144/3801/4405 1205/3782/4405 169/3802/4405 -f 1928/678/4406 2723/653/4406 1732/3803/4406 -f 1278/3767/4407 1819/3765/4407 1832/3764/4407 -f 1089/3804/4408 1944/3786/4408 1278/3785/4408 -f 2021/3805/4409 2033/3787/4409 1944/3747/4409 -f 1442/3806/4410 1606/2985/4410 2033/3787/4410 -f 1905/2500/4411 1927/2870/4411 2069/321/4411 -f 1647/2659/4412 1295/3807/4412 1740/3285/4412 -f 1783/3808/4413 1795/3750/4413 1782/3725/4413 -f 1921/3795/4414 1922/1940/4414 1943/3777/4414 -f 1943/3033/4415 1957/2290/4415 1963/3798/4415 -f 1963/3798/4416 1973/3799/4416 1972/3733/4416 -f 1973/3799/4417 2004/1177/4417 2014/3757/4417 -f 2004/1177/4418 2029/2803/4418 2014/3757/4418 -f 2079/3734/4419 2080/3809/4419 2101/3778/4419 -f 1347/3779/4420 618/3810/4420 1187/3780/4420 -f 1388/3811/4421 1186/3713/4421 1187/3780/4421 -f 618/3810/4422 1388/3811/4422 1187/3780/4422 -f 1388/3811/4423 1822/3781/4423 1186/3713/4423 -f 1822/3812/4424 1405/3813/4424 1350/737/4424 -f 1746/3814/4425 1928/3815/4425 1732/3783/4425 -f 2386/3369/4426 2169/3678/4426 2323/3816/4426 -f 1206/944/4427 1278/3767/4427 1832/3764/4427 -f 2856/3817/4428 2059/3818/4428 1924/3768/4428 -f 2059/3818/4429 1790/3788/4429 1924/3768/4429 -f 1820/2250/4430 1604/2931/4430 1759/3665/4430 -f 1774/3189/4431 1789/2707/4431 1773/2169/4431 -f 1798/912/4432 1844/2371/4432 1605/540/4432 -f 1753/3819/4433 1752/3748/4433 1743/3792/4433 -f 1753/3819/4434 1761/3820/4434 1752/3748/4434 -f 1796/591/4435 1795/3750/4435 1783/3808/4435 -f 1796/3821/4436 1815/3775/4436 1795/3751/4436 -f 1796/3821/4437 1816/2471/4437 1815/3775/4437 -f 1816/2471/4438 1852/3752/4438 1815/3775/4438 -f 2430/3822/4439 2419/2430/4439 2372/3823/4439 -f 2926/2970/4440 2925/3824/4440 2915/3582/4440 -f 2029/2803/4441 2056/2318/4441 2079/3734/4441 -f 2014/3757/4442 2029/2803/4442 2079/3734/4442 -f 2079/3734/4443 2056/2318/4443 2080/3809/4443 -f 2080/3809/4444 2102/2268/4444 2101/3778/4444 -f 2101/3778/4445 2115/3825/4445 1347/3779/4445 -f 2107/3096/4446 364/2308/4446 2128/3826/4446 -f 2128/3826/4447 364/2308/4447 551/3800/4447 -f 364/2308/4448 1144/3801/4448 551/3800/4448 -f 1746/3814/4449 1732/3783/4449 1205/3782/4449 -f 1935/886/4450 1928/3815/4450 1746/3814/4450 -f 2088/3827/4451 2129/3828/4451 1928/678/4451 -f 3500/325/4452 1029/2275/4452 3489/753/4452 -f 2129/3828/4453 1206/3829/4453 1832/3073/4453 -f 1206/944/4454 2122/943/4454 1278/3767/4454 -f 1278/3767/4455 2122/943/4455 1089/3830/4455 -f 2118/2829/4456 1944/3747/4456 1089/3830/4456 -f 2118/2829/4457 2021/3805/4457 1944/3747/4457 -f 1439/3831/4458 2033/3787/4458 2021/3805/4458 -f 1683/2658/4459 1728/2660/4459 204/3292/4459 -f 1816/2471/4460 1853/2470/4460 1852/3752/4460 -f 1943/3033/4461 3355/2288/4461 1957/2290/4461 -f 1957/3832/4462 3390/3833/4462 1963/3797/4462 -f 1963/3798/4463 3390/1375/4463 1973/3799/4463 -f 1973/3799/4464 3390/1375/4464 2004/1177/4464 -f 2056/2318/4465 2081/2317/4465 2080/3809/4465 -f 2102/2268/4466 2115/3825/4466 2101/3778/4466 -f 1281/3834/4467 618/3810/4467 1347/3779/4467 -f 821/2395/4468 1822/3781/4468 1388/3811/4468 -f 821/2395/4469 1151/2306/4469 1405/3095/4469 -f 1822/3781/4470 821/2395/4470 1405/3095/4470 -f 1151/2306/4471 364/2308/4471 2107/3096/4471 -f 1405/3095/4472 1151/2306/4472 2107/3096/4472 -f 467/2231/4473 1131/2232/4473 1144/3801/4473 -f 364/2308/4474 467/2231/4474 1144/3801/4474 -f 1131/2232/4475 1205/3782/4475 1144/3801/4475 -f 1327/2832/4476 1746/3814/4476 1205/3782/4476 -f 2088/3827/4477 1206/3829/4477 2129/3828/4477 -f 2122/943/4478 2118/2829/4478 1089/3830/4478 -f 2688/1203/4479 1969/1202/4479 2703/3540/4479 -f 1990/3329/4480 2891/3835/4480 2241/3836/4480 -f 2059/3818/4481 2856/3817/4481 2159/3837/4481 -f 1992/2251/4482 1790/3789/4482 2059/3838/4482 -f 1790/3789/4483 1992/2251/4483 1820/2250/4483 -f 1537/3114/4484 1555/2316/4484 1536/2813/4484 -f 1784/2315/4485 1783/3808/4485 1761/3820/4485 -f 1784/2315/4486 1796/591/4486 1783/3808/4486 -f 3265/3839/4487 1859/3794/4487 1860/3840/4487 -f 2466/3841/4488 2447/3842/4488 1743/3843/4488 -f 2593/2977/4489 2607/363/4489 2617/3143/4489 -f 2116/2267/4490 2115/3825/4490 2102/2268/4490 -f 2115/3825/4491 2116/2267/4491 1347/3779/4491 -f 1347/3779/4492 2116/2267/4492 1281/3834/4492 -f 1289/2320/4493 618/3810/4493 1281/3834/4493 -f 1289/2320/4494 1152/2501/4494 618/3810/4494 -f 1152/2501/4495 1414/2336/4495 618/3810/4495 -f 1414/2336/4496 1388/3811/4496 618/3810/4496 -f 1414/2336/4497 228/5/4497 1388/3811/4497 -f 228/5/4498 821/2395/4498 1388/3811/4498 -f 1327/2832/4499 1205/3782/4499 1131/2232/4499 -f 1327/2832/4500 1935/886/4500 1746/3814/4500 -f 833/885/4501 1928/3815/4501 1935/886/4501 -f 833/885/4502 2088/187/4502 1928/3815/4502 -f 1988/3844/4503 2021/3845/4503 2118/3846/4503 -f 1461/46/4504 1463/637/4504 2090/2173/4504 -f 1724/408/4505 1871/2583/4505 2018/2631/4505 -f 1916/3190/4506 1992/2251/4506 2059/3838/4506 -f 1758/2827/4507 1774/3183/4507 1773/2635/4507 -f 1535/3093/4508 1761/3820/4508 1753/3819/4508 -f 3497/656/4509 3463/300/4509 3490/1009/4509 -f 1535/3093/4510 1784/2315/4510 1761/3820/4510 -f 1796/3821/4511 1575/3181/4511 1816/2471/4511 -f 1852/3752/4512 1853/2470/4512 1859/3794/4512 -f 2607/363/4513 2621/1608/4513 2617/3143/4513 -f 2029/2803/4514 2040/1017/4514 2056/2318/4514 -f 2081/2317/4515 2103/116/4515 2102/2268/4515 -f 2080/3809/4516 2081/2317/4516 2102/2268/4516 -f 2116/2267/4517 1270/2727/4517 1281/3834/4517 -f 1270/2727/4518 1289/2320/4518 1281/3834/4518 -f 3361/3847/4519 3422/3848/4519 3383/3849/4519 -f 1828/2352/4520 427/696/4520 2168/695/4520 -f 2076/2808/4521 2281/3850/4521 2390/2830/4521 -f 2304/3632/4522 2214/3851/4522 2281/3633/4522 -f 2201/3852/4523 2302/1188/4523 2157/1187/4523 -f 2413/3511/4524 2907/2457/4524 2407/3566/4524 -f 2384/3853/4525 1221/3854/4525 1219/45/4525 -f 2335/1890/4526 1019/3215/4526 1887/1891/4526 -f 1835/3855/4527 2515/3856/4527 1813/3857/4527 -f 1222/1084/4528 2027/1903/4528 2384/2656/4528 -f 216/3858/4529 2283/3571/4529 2243/3859/4529 -f 2699/264/4530 2296/3860/4530 2674/265/4530 -f 3011/3595/4531 3072/3861/4531 3049/3596/4531 -f 2223/1186/4532 2302/1188/4532 2311/3862/4532 -f 3146/3863/4533 3132/3864/4533 3119/3865/4533 -f 2373/2192/4534 2152/3866/4534 2135/2193/4534 -f 2358/1111/4535 2392/3419/4535 2134/1112/4535 -f 2153/3413/4536 2237/3758/4536 2176/3760/4536 -f 2351/3526/4537 2481/2144/4537 2205/3867/4537 -f 2399/3474/4538 2362/3485/4538 2199/3486/4538 -f 2257/1927/4539 1932/1334/4539 1166/602/4539 -f 985/3868/4540 2161/1082/4540 2027/3249/4540 -f 1823/3648/4541 1110/3869/4541 2194/3870/4541 -f 2140/3256/4542 2035/3391/4542 2260/3871/4542 -f 2295/3872/4543 2599/3873/4543 2329/3874/4543 -f 2310/3341/4544 2297/3875/4544 2263/3876/4544 -f 2917/849/4545 2916/851/4545 2908/3510/4545 -f 3174/2989/4546 3173/310/4546 3141/2833/4546 -f 2423/2030/4547 2584/3877/4547 1307/2031/4547 -f 3493/399/4548 3440/2538/4548 3475/664/4548 -f 2217/3698/4549 2375/3697/4549 2226/3591/4549 -f 2301/3878/4550 2179/3638/4550 2318/3759/4550 -f 188/3494/4551 2139/3879/4551 2145/3495/4551 -f 2342/3212/4552 2903/2557/4552 2900/3211/4552 -f 345/94/4553 2400/3880/4553 2362/3485/4553 -f 2362/3485/4554 2400/3880/4554 2284/3339/4554 -f 1932/1334/4555 1146/425/4555 1166/602/4555 -f 2267/3881/4556 2289/1443/4556 2876/2839/4556 -f 2338/3882/4557 2131/3614/4557 2165/3613/4557 -f 233/3883/4558 2242/2406/4558 2282/2408/4558 -f 2392/3419/4559 2260/3884/4559 2134/1112/4559 -f 1932/1334/4560 2333/3885/4560 1115/426/4560 -f 2333/3886/4561 2385/3887/4561 1079/3888/4561 -f 1115/426/4562 2333/3885/4562 1079/2453/4562 -f 1079/2453/4563 2385/3889/4563 2329/2540/4563 -f 1107/2359/4564 1106/2491/4564 1082/3890/4564 -f 1130/2675/4565 2217/3698/4565 2396/2661/4565 -f 233/3883/4566 2282/2408/4566 2877/3891/4566 -f 2365/3368/4567 2383/3350/4567 2304/3892/4567 -f 2365/3893/4568 2304/3894/4568 2076/2808/4568 -f 2391/3575/4569 2271/3574/4569 2596/3895/4569 -f 2830/2498/4570 2859/2208/4570 1185/2499/4570 -f 652/1140/4571 2286/3896/4571 1920/1141/4571 -f 2386/3369/4572 2323/3816/4572 2336/2488/4572 -f 362/357/4573 2393/636/4573 201/694/4573 -f 2246/2036/4574 2342/3212/4574 2335/1890/4574 -f 2336/2488/4575 2201/3852/4575 2208/3897/4575 -f 2281/3850/4576 2334/2194/4576 2390/2830/4576 -f 2178/2552/4577 2184/2880/4577 2164/2553/4577 -f 2218/2210/4578 2137/3898/4578 2859/2208/4578 -f 2329/2540/4579 1068/2390/4579 1079/2453/4579 -f 2190/2489/4580 1920/2416/4580 2225/2418/4580 -f 2583/3218/4581 2523/3217/4581 2595/3705/4581 -f 2287/2314/4582 2310/3899/4582 2211/3900/4582 -f 2247/3583/4583 2190/2489/4583 2225/2418/4583 -f 2035/3391/4584 2299/3901/4584 2260/3871/4584 -f 2286/3902/4585 2218/2210/4585 2360/2417/4585 -f 3227/2262/4586 3305/167/4586 3240/3903/4586 -f 2238/3904/4587 1828/2352/4587 2340/3636/4587 -f 1828/2352/4588 2168/695/4588 2340/3636/4588 -f 2049/3905/4589 2238/3906/4589 2365/3893/4589 -f 1060/3907/4590 2469/3908/4590 3422/3848/4590 -f 2214/3851/4591 2304/3632/4591 2383/3909/4591 -f 2359/3910/4592 2208/3897/4592 2201/3852/4592 -f 2360/2417/4593 2218/2210/4593 2064/2209/4593 -f 2134/3911/4594 2251/3912/4594 2221/2313/4594 -f 2265/3913/4595 2133/3914/4595 2155/3915/4595 -f 2815/3250/4596 1221/3916/4596 2384/3248/4596 -f 2385/3887/4597 2295/3872/4597 2329/3874/4597 -f 2349/3917/4598 2214/3349/4598 1794/3918/4598 -f 1653/776/4599 1578/3919/4599 1577/1955/4599 -f 2598/3920/4600 2295/3872/4600 2278/3921/4600 -f 2373/3922/4601 2214/3349/4601 2349/3917/4601 -f 1343/2611/4602 2265/3913/4602 1509/3923/4602 -f 1970/3631/4603 2334/2194/4603 2381/3265/4603 -f 2049/3905/4604 2365/3893/4604 2076/2808/4604 -f 2225/2418/4605 2357/3328/4605 1990/3329/4605 -f 2374/3370/4606 2386/3369/4606 2336/2488/4606 -f 2353/3924/4607 2245/3639/4607 1048/3925/4607 -f 2862/2392/4608 2158/1442/4608 2861/3926/4608 -f 3381/684/4609 3402/3139/4609 3370/685/4609 -f 201/694/4610 2393/636/4610 2168/695/4610 -f 2183/1718/4611 1028/3037/4611 1833/3258/4611 -f 1783/3808/4612 1782/3725/4612 1752/3748/4612 -f 2323/3816/4613 2190/2489/4613 2336/2488/4613 -f 3470/281/4614 3490/1009/4614 870/2400/4614 -f 2169/3635/4615 2168/695/4615 837/2427/4615 -f 2443/848/4616 2415/3148/4616 2290/846/4616 -f 2227/1441/4617 2289/1443/4617 2219/3927/4617 -f 2257/1927/4618 2327/3928/4618 1932/1334/4618 -f 1932/1334/4619 2327/3928/4619 2333/3885/4619 -f 2327/3929/4620 2270/3930/4620 2333/3886/4620 -f 1261/29/4621 2180/2641/4621 2206/1128/4621 -f 2334/2194/4622 2281/3850/4622 2373/2192/4622 -f 2324/3931/4623 1120/126/4623 2277/881/4623 -f 2374/3370/4624 2336/2488/4624 2208/3897/4624 -f 2270/3930/4625 2385/3887/4625 2333/3886/4625 -f 78/811/4626 3218/548/4626 93/804/4626 -f 1794/3918/4627 2214/3349/4627 2188/3351/4627 -f 1814/2201/4628 1813/2561/4628 2305/3932/4628 -f 2921/3933/4629 2936/3934/4629 2929/2508/4629 -f 2278/3921/4630 2295/3872/4630 2385/3887/4630 -f 2271/3935/4631 1061/517/4631 1055/926/4631 -f 2262/3936/4632 2358/3937/4632 2272/3938/4632 -f 1102/1171/4633 2133/1684/4633 1114/1172/4633 -f 2390/2830/4634 2334/2194/4634 1970/3631/4634 -f 2064/2209/4635 2891/3835/4635 1990/3329/4635 -f 837/2427/4636 657/2396/4636 2229/1142/4636 -f 2398/2756/4637 2361/608/4637 2389/3473/4637 -f 2144/1366/4638 1875/2973/4638 2467/289/4638 -f 2872/843/4639 2350/3584/4639 2315/3658/4639 -f 2399/3474/4640 2199/3486/4640 2235/3475/4640 -f 2155/3573/4641 2149/3939/4641 2271/3574/4641 -f 456/8/4642 2331/10/4642 2361/608/4642 -f 2334/2194/4643 2135/2193/4643 2381/3265/4643 -f 2325/3940/4644 2269/3941/4644 2326/3942/4644 -f 3279/106/4645 3342/165/4645 3305/167/4645 -f 3279/106/4646 3305/167/4646 3227/2262/4646 -f 2149/3939/4647 1061/3943/4647 2271/3574/4647 -f 2380/3260/4648 2346/1274/4648 2381/3265/4648 -f 2331/10/4649 2399/3474/4649 2361/608/4649 -f 1114/2605/4650 2133/3914/4650 2265/3913/4650 -f 2214/3349/4651 2373/3922/4651 2281/3944/4651 -f 2178/2552/4652 977/2543/4652 2697/2542/4652 -f 2138/2460/4653 2328/2459/4653 813/1957/4653 -f 2257/1927/4654 2192/1926/4654 2327/3928/4654 -f 3243/2445/4655 3242/3945/4655 3228/2446/4655 -f 2290/846/4656 2415/3148/4656 2370/2558/4656 -f 2180/2641/4657 2195/3946/4657 2206/1128/4657 -f 3466/1713/4658 2253/3947/4658 3479/1714/4658 -f 2201/2331/4659 2003/3948/4659 2191/2332/4659 -f 2363/3330/4660 2332/990/4660 2379/3356/4660 -f 2132/3383/4661 2312/3385/4661 2245/3639/4661 -f 2807/3949/4662 2138/2460/4662 813/1957/4662 -f 1907/3737/4663 1823/3648/4663 2375/3697/4663 -f 2359/3910/4664 2201/3852/4664 2157/1187/4664 -f 2270/3930/4665 2278/3921/4665 2385/3887/4665 -f 1916/2410/4666 2159/3837/4666 2171/2411/4666 -f 1920/2416/4667 2286/3902/4667 2360/2417/4667 -f 1227/28/4668 2170/2723/4668 2180/2641/4668 -f 2170/2723/4669 2189/3950/4669 2180/2641/4669 -f 2180/2641/4670 2189/3950/4670 2195/3946/4670 -f 2195/3951/4671 163/2652/4671 2206/2633/4671 -f 1760/3727/4672 1752/3748/4672 1782/3725/4672 -f 2228/3728/4673 2147/3430/4673 2232/3429/4673 -f 2320/3384/4674 2288/3683/4674 2312/3385/4674 -f 2375/3697/4675 1823/3648/4675 2194/3870/4675 -f 2171/3952/4676 2170/2723/4676 1449/2725/4676 -f 3485/326/4677 3436/1372/4677 1101/2196/4677 -f 1048/3581/4678 2317/3953/4678 2300/3954/4678 -f 1110/3955/4679 2213/2506/4679 2194/3956/4679 -f 2219/3957/4680 2267/3958/4680 2203/162/4680 -f 2152/3959/4681 2222/3255/4681 2172/3960/4681 -f 2173/3718/4682 2856/3817/4682 1924/3768/4682 -f 2076/2808/4683 2390/2830/4683 1361/2816/4683 -f 3141/2833/4684 3140/1218/4684 3113/1220/4684 -f 3506/1947/4685 1980/3289/4685 2768/3629/4685 -f 2171/3961/4686 2181/3962/4686 2170/3963/4686 -f 2170/2723/4687 2181/3964/4687 2189/3950/4687 -f 2207/3965/4688 2195/3966/4688 2189/3967/4688 -f 2207/3965/4689 163/3968/4689 2195/3966/4689 -f 2286/3896/4690 1050/2287/4690 2137/2279/4690 -f 2188/3351/4691 2208/3897/4691 2359/3910/4691 -f 2227/1441/4692 2219/3927/4692 2203/3445/4692 -f 2154/3969/4693 1283/2377/4693 1266/2733/4693 -f 2135/2193/4694 2152/3866/4694 2172/3552/4694 -f 1509/3923/4695 2265/3913/4695 2155/3915/4695 -f 1794/3918/4696 2188/3351/4696 2359/3910/4696 -f 2300/3954/4697 2317/3953/4697 1145/3970/4697 -f 2186/3971/4698 2189/3967/4698 2181/3962/4698 -f 2186/3971/4699 2207/3965/4699 2189/3967/4699 -f 163/3968/4700 2207/3965/4700 3466/3972/4700 -f 2272/3938/4701 2221/2313/4701 2287/2314/4701 -f 2272/3938/4702 2287/2314/4702 2211/3900/4702 -f 216/3858/4703 2337/3572/4703 2283/3571/4703 -f 2236/3973/4704 2310/3341/4704 2263/3876/4704 -f 2316/2535/4705 2243/3859/4705 2254/2536/4705 -f 2153/3413/4706 2176/3760/4706 231/3414/4706 -f 1205/3782/4707 2765/3784/4707 169/3802/4707 -f 2498/2525/4708 2193/847/4708 2230/3974/4708 -f 2498/2525/4709 2230/3974/4709 2231/3975/4709 -f 2856/3817/4710 2181/3976/4710 2171/2411/4710 -f 2159/3837/4711 2856/3817/4711 2171/2411/4711 -f 2856/3977/4712 2871/3978/4712 2181/3962/4712 -f 2871/3978/4713 2186/3971/4713 2181/3962/4713 -f 999/3979/4714 2505/3980/4714 2541/3981/4714 -f 2226/3591/4715 2375/3697/4715 2194/3870/4715 -f 1172/1690/4716 365/145/4716 616/1784/4716 -f 2300/3507/4717 231/3414/4717 2176/3760/4717 -f 2368/3555/4718 2895/3554/4718 2317/3953/4718 -f 3505/353/4719 3476/355/4719 1015/751/4719 -f 2859/3982/4720 2137/2279/4720 1203/2278/4720 -f 2233/3983/4721 2276/3984/4721 2230/3974/4721 -f 2305/3932/4722 2231/2299/4722 2276/2298/4722 -f 2379/3356/4723 2401/3266/4723 2148/3407/4723 -f 2152/3959/4724 2349/3917/4724 2348/3663/4724 -f 2196/3985/4725 2307/2426/4725 2364/2425/4725 -f 2807/3949/4726 2209/2292/4726 2215/2294/4726 -f 2310/3341/4727 2248/3345/4727 2297/3875/4727 -f 2244/3623/4728 2308/3986/4728 2297/1133/4728 -f 2221/2313/4729 2251/3912/4729 2142/3247/4729 -f 2291/3987/4730 2131/3614/4730 2194/3956/4730 -f 3428/759/4731 3504/246/4731 2424/245/4731 -f 2318/3988/4732 2237/3989/4732 2301/3990/4732 -f 2440/1881/4733 2429/1886/4733 957/2509/4733 -f 2179/3513/4734 2301/3990/4734 2328/2459/4734 -f 2239/3991/4735 2253/699/4735 2207/3965/4735 -f 2199/3992/4736 2284/3993/4736 2236/3994/4736 -f 2993/2176/4737 2439/2906/4737 2457/3995/4737 -f 2305/3932/4738 1813/2561/4738 2231/2299/4738 -f 1110/3955/4739 2366/3996/4739 2213/2506/4739 -f 2744/2119/4740 3435/3053/4740 3450/3997/4740 -f 2536/2901/4741 2294/2202/4741 2275/2190/4741 -f 2152/3959/4742 2373/3922/4742 2349/3917/4742 -f 4/3608/4743 1307/3610/4743 2112/3998/4743 -f 2961/2937/4744 2980/2936/4744 2960/3049/4744 -f 2264/698/4745 2313/3999/4745 3425/313/4745 -f 2926/2229/4746 2945/3165/4746 2944/2230/4746 -f 1954/3640/4747 2807/3949/4747 813/1957/4747 -f 813/1957/4748 2347/1956/4748 1954/3640/4748 -f 2244/3623/4749 1954/3640/4749 2185/4000/4749 -f 2133/4001/4750 2149/3939/4750 2155/3573/4750 -f 1888/3476/4751 1996/2424/4751 2307/2426/4751 -f 2252/3687/4752 2268/4002/4752 2321/3685/4752 -f 2260/3871/4753 2707/4003/4753 2134/3911/4753 -f 30/2724/4754 1227/28/4754 1256/236/4754 -f 2268/2504/4755 2183/1718/4755 2321/4004/4755 -f 1132/301/4756 870/2400/4756 3451/1929/4756 -f 2207/4005/4757 2253/3947/4757 3466/1713/4757 -f 2945/4006/4758 2960/3049/4758 2944/3743/4758 -f 2642/4007/4759 2314/4008/4759 2376/4009/4759 -f 2353/3924/4760 1048/3925/4760 2300/3507/4760 -f 2225/2418/4761 1990/3329/4761 2350/3584/4761 -f 2498/2525/4762 2477/2524/4762 2443/848/4762 -f 2881/4010/4763 2273/4011/4763 1934/4012/4763 -f 2273/4011/4764 2367/4013/4764 2296/3860/4764 -f 2241/3836/4765 2891/3835/4765 2861/3926/4765 -f 2370/2558/4766 2246/2036/4766 2290/846/4766 -f 2360/2417/4767 2064/2209/4767 2357/3328/4767 -f 2224/3392/4768 2182/768/4768 2141/770/4768 -f 2873/4014/4769 2239/3991/4769 2207/3965/4769 -f 1082/3890/4770 1106/2491/4770 1087/2516/4770 -f 2313/4015/4771 2292/125/4771 2314/4016/4771 -f 2367/4013/4772 2273/4011/4772 2881/4010/4772 -f 2891/3835/4773 2326/3942/4773 2861/3926/4773 -f 2284/3339/4774 2400/3880/4774 2211/3340/4774 -f 2361/608/4775 2399/3474/4775 2389/3473/4775 -f 763/1493/4776 750/1491/4776 437/2619/4776 -f 2151/3742/4777 1024/2330/4777 2209/2292/4777 -f 2331/10/4778 345/94/4778 2362/3485/4778 -f 2223/1186/4779 2311/3862/4779 2330/3729/4779 -f 2314/4008/4780 2343/4017/4780 2376/4009/4780 -f 2234/4018/4781 2296/3860/4781 2367/4013/4781 -f 1578/3919/4782 1653/776/4782 80/209/4782 -f 2866/4019/4783 2317/3953/4783 2895/3554/4783 -f 1087/2516/4784 1106/2491/4784 1097/2492/4784 -f 2365/4020/4785 2238/3904/4785 2340/3636/4785 -f 2213/2506/4786 2252/2505/4786 2291/3987/4786 -f 2147/3430/4787 2204/3741/4787 2387/3431/4787 -f 2401/3266/4788 973/3418/4788 2148/3407/4788 -f 2292/133/4789 2343/4017/4789 2314/4008/4789 -f 3223/4021/4790 1498/4022/4790 3224/3773/4790 -f 2336/2488/4791 2003/2490/4791 2201/3852/4791 -f 2177/4023/4792 2187/4024/4792 2881/4010/4792 -f 2881/4010/4793 2187/4024/4793 2367/4013/4793 -f 2187/4025/4794 2369/4026/4794 2367/4027/4794 -f 1913/4028/4795 2718/4029/4795 2234/4018/4795 -f 652/1140/4796 1050/2287/4796 2286/3896/4796 -f 233/3883/4797 2285/2534/4797 2266/3679/4797 -f 2188/3351/4798 2383/3350/4798 2208/3897/4798 -f 2147/3263/4799 2220/2004/4799 2322/2003/4799 -f 2200/3264/4800 2198/160/4800 2203/162/4800 -f 2143/2636/4801 2192/4030/4801 2197/2637/4801 -f 2365/3368/4802 2374/3370/4802 2383/3350/4802 -f 558/635/4803 1050/2287/4803 652/1140/4803 -f 2376/4009/4804 2388/4031/4804 2177/4023/4804 -f 2369/4032/4805 2234/4018/4805 2367/4013/4805 -f 2246/2036/4806 2261/1889/4806 2193/847/4806 -f 2380/3260/4807 2401/3266/4807 2379/3356/4807 -f 2143/2636/4808 1509/3923/4808 2192/4030/4808 -f 2288/3683/4809 2254/3621/4809 2243/3684/4809 -f 2343/4017/4810 2388/4031/4810 2376/4009/4810 -f 2187/4024/4811 2177/4023/4811 2388/4031/4811 -f 2258/4033/4812 2234/4018/4812 2369/4032/4812 -f 2258/4033/4813 1913/4028/4813 2234/4018/4813 -f 2549/1515/4814 1842/3568/4814 1827/1513/4814 -f 2176/3760/4815 2353/3924/4815 2300/3507/4815 -f 2397/2642/4816 1907/3737/4816 1130/2675/4816 -f 633/2052/4817 965/1978/4817 1250/2752/4817 -f 2192/4034/4818 1509/4035/4818 2327/3929/4818 -f 2250/2407/4819 2203/3445/4819 2267/3881/4819 -f 1120/126/4820 2324/3931/4820 2343/127/4820 -f 2355/4036/4821 2187/4024/4821 2388/4031/4821 -f 2162/4037/4822 2718/4029/4822 1913/4028/4822 -f 1833/3258/4823 2321/4004/4823 2183/1718/4823 -f 1804/725/4824 2305/3932/4824 1778/726/4824 -f 2267/3881/4825 1959/4038/4825 2250/2407/4825 -f 2324/3931/4826 2355/4039/4826 2343/127/4826 -f 2343/4017/4827 2355/4036/4827 2388/4031/4827 -f 1804/725/4828 1791/2191/4828 2294/2202/4828 -f 1954/3640/4829 2347/1956/4829 2268/2504/4829 -f 2185/4000/4830 1954/3640/4830 2268/2504/4830 -f 2288/3683/4831 2204/3630/4831 2254/3621/4831 -f 1362/1261/4832 1970/3631/4832 2346/1274/4832 -f 2316/2535/4833 216/3858/4833 2243/3859/4833 -f 2345/347/4834 2380/3260/4834 2379/3356/4834 -f 1075/2550/4835 1263/154/4835 1172/1690/4835 -f 2355/4040/4836 1290/4041/4836 2187/4025/4836 -f 2187/4025/4837 1290/4041/4837 2369/4026/4837 -f 2160/4042/4838 1913/4028/4838 2258/4033/4838 -f 427/696/4839 120/494/4839 201/694/4839 -f 2225/2418/4840 2350/3584/4840 2247/3583/4840 -f 1823/3648/4841 2235/3475/4841 1110/3869/4841 -f 2312/3385/4842 2283/4043/4842 2212/4044/4842 -f 2263/3876/4843 2297/3875/4843 2308/3458/4843 -f 2217/3698/4844 2226/3591/4844 2352/4045/4844 -f 2199/3486/4845 2236/3973/4845 1110/3869/4845 -f 2324/4046/4846 2356/4047/4846 2355/4036/4846 -f 2355/4040/4847 2356/4048/4847 1290/4041/4847 -f 1290/4041/4848 1953/4049/4848 2369/4026/4848 -f 2369/4032/4849 1949/4050/4849 2258/4033/4849 -f 2160/4042/4850 2162/4037/4850 1913/4028/4850 -f 2365/3368/4851 2340/3677/4851 2386/3369/4851 -f 2236/3973/4852 2263/3876/4852 2366/3695/4852 -f 2245/3639/4853 2212/4044/4853 1048/3925/4853 -f 1063/4051/4854 1068/4052/4854 2599/3873/4854 -f 2781/288/4855 515/2920/4855 2090/4053/4855 -f 195/1336/4856 199/1319/4856 178/1320/4856 -f 2320/3384/4857 2204/3630/4857 2288/3683/4857 -f 1794/3918/4858 2359/3910/4858 2182/768/4858 -f 2293/2790/4859 2324/3931/4859 2277/881/4859 -f 2293/2790/4860 2356/4054/4860 2324/3931/4860 -f 1949/4050/4861 2160/4042/4861 2258/4033/4861 -f 2237/3989/4862 2153/1194/4862 2482/2327/4862 -f 2271/3574/4863 1055/4055/4863 2596/3895/4863 -f 2301/3990/4864 2237/3989/4864 2482/2327/4864 -f 2322/2003/4865 2382/2005/4865 2266/3620/4865 -f 2272/3938/4866 2358/3937/4866 2221/2313/4866 -f 1996/2424/4867 1888/3476/4867 2251/3912/4867 -f 2707/4003/4868 2251/3912/4868 2134/3911/4868 -f 2860/4056/4869 2770/2225/4869 2269/3941/4869 -f 2356/4048/4870 2394/4057/4870 1290/4041/4870 -f 2394/4057/4871 1953/4049/4871 1290/4041/4871 -f 2280/4058/4872 2369/4032/4872 1953/4059/4872 -f 2280/4058/4873 1949/4050/4873 2369/4032/4873 -f 2320/4060/4874 2132/2438/4874 2377/2293/4874 -f 1130/2675/4875 1907/3737/4875 2375/3697/4875 -f 2891/3835/4876 2325/3940/4876 2326/3942/4876 -f 2176/3760/4877 2245/3639/4877 2353/3924/4877 -f 2400/3880/4878 2378/3332/4878 2211/3340/4878 -f 2263/3876/4879 2308/3458/4879 2366/3695/4879 -f 2711/1634/4880 1830/1936/4880 2543/1935/4880 -f 2293/2745/4881 1223/2741/4881 2356/4048/4881 -f 2356/4048/4882 1223/2741/4882 2394/4057/4882 -f 2394/4057/4883 2395/4061/4883 1953/4049/4883 -f 2146/4062/4884 2160/4042/4884 1949/4050/4884 -f 2245/3639/4885 2312/3385/4885 2212/4044/4885 -f 2236/3973/4886 2284/3339/4886 2310/3341/4886 -f 1833/3258/4887 2060/3/4887 2535/2/4887 -f 1509/3923/4888 2155/3915/4888 2327/4063/4888 -f 1804/725/4889 1814/2201/4889 2305/3932/4889 -f 34/2672/4890 2397/2642/4890 1130/2675/4890 -f 2190/2489/4891 2229/4064/4891 1920/2416/4891 -f 1223/2741/4892 2395/4061/4892 2394/4057/4892 -f 2146/4062/4893 2303/1847/4893 2160/4042/4893 -f 1110/3869/4894 2236/3973/4894 2366/3695/4894 -f 2332/990/4895 2345/347/4895 2379/3356/4895 -f 2155/3573/4896 2270/3930/4896 2327/3929/4896 -f 1752/3748/4897 1761/3820/4897 1783/3808/4897 -f 2150/4065/4898 2407/3566/4898 2906/2458/4898 -f 1318/2599/4899 2265/3913/4899 1343/2611/4899 -f 2213/2506/4900 2291/3987/4900 2194/3956/4900 -f 1970/3631/4901 2381/3265/4901 2346/1274/4901 -f 2391/3575/4902 2278/3921/4902 2270/3930/4902 -f 7/1704/4903 3451/1929/4903 3480/1300/4903 -f 2707/4003/4904 2364/2425/4904 1996/2424/4904 -f 2344/2732/4905 2395/4061/4905 1223/2741/4905 -f 1953/4059/4906 1914/4066/4906 2280/4058/4906 -f 2156/4067/4907 1949/4050/4907 2280/4058/4907 -f 2156/4067/4908 2146/4062/4908 1949/4050/4908 -f 2235/3475/4909 2199/3486/4909 1110/3869/4909 -f 2378/3332/4910 2272/4068/4910 2211/3340/4910 -f 576/1654/4911 3315/4069/4911 3301/4070/4911 -f 345/94/4912 2332/990/4912 2363/3330/4912 -f 1760/3727/4913 2163/4071/4913 2255/3749/4913 -f 2381/3265/4914 2135/2193/4914 2172/3552/4914 -f 2872/843/4915 2158/1442/4915 2227/1441/4915 -f 2395/4061/4916 1273/4072/4916 1953/4049/4916 -f 1273/4072/4917 1914/4073/4917 1953/4049/4917 -f 3128/1219/4918 3140/1218/4918 3152/1638/4918 -f 2391/3575/4919 2596/3895/4919 2278/3921/4919 -f 2397/2642/4920 2398/2756/4920 1907/3737/4920 -f 3315/4069/4921 576/1654/4921 3332/1653/4921 -f 1249/2614/4922 1454/2132/4922 1436/4074/4922 -f 2302/1188/4923 2191/3296/4923 2311/3862/4923 -f 2323/3816/4924 2229/4064/4924 2190/2489/4924 -f 2152/3959/4925 2348/3663/4925 2222/3255/4925 -f 2169/3678/4926 2229/4064/4926 2323/3816/4926 -f 2368/3555/4927 2317/3953/4927 1048/3581/4927 -f 2202/4075/4928 2146/4062/4928 2156/4067/4928 -f 2202/4075/4929 2303/1847/4929 2146/4062/4929 -f 2379/3356/4930 2148/3407/4930 2262/3331/4930 -f 1794/3918/4931 2224/3392/4931 2348/3663/4931 -f 1024/3720/4932 2204/3630/4932 2320/3384/4932 -f 2151/3742/4933 2209/2292/4933 2764/4076/4933 -f 2003/2490/4934 2274/3295/4934 2191/3296/4934 -f 2216/4077/4935 3019/2296/4935 2436/2295/4935 -f 2076/2808/4936 1322/2793/4936 2049/3905/4936 -f 2224/3392/4937 1794/3918/4937 2182/768/4937 -f 2286/3902/4938 2137/3898/4938 2218/2210/4938 -f 1318/2599/4939 1114/2605/4939 2265/3913/4939 -f 2308/3986/4940 2268/2504/4940 2213/2506/4940 -f 1741/4078/4941 2233/3983/4941 2261/1889/4941 -f 1760/3727/4942 2256/4079/4942 2163/4071/4942 -f 2395/4061/4943 2396/2661/4943 1273/4072/4943 -f 1914/4066/4944 2156/4067/4944 2280/4058/4944 -f 2240/4080/4945 2202/4075/4945 2156/4067/4945 -f 2202/4075/4946 1710/1633/4946 2303/1847/4946 -f 2291/3987/4947 2252/2505/4947 2131/3614/4947 -f 2503/2146/4948 2256/3724/4948 1781/3723/4948 -f 2465/2145/4949 2163/4081/4949 2256/3724/4949 -f 2780/2714/4950 1874/2713/4950 1598/2991/4950 -f 3002/4082/4951 2216/4077/4951 2436/2295/4951 -f 2351/3526/4952 3002/4082/4952 2436/2295/4952 -f 2378/3332/4953 2262/3331/4953 2272/4068/4953 -f 2344/2732/4954 2396/2661/4954 2395/4061/4954 -f 2338/3882/4955 2156/4067/4955 1914/4066/4955 -f 2338/3593/4956 2240/4083/4956 2156/4084/4956 -f 345/94/4957 2363/3330/4957 2400/3880/4957 -f 2169/3635/4958 837/2427/4958 2229/1142/4958 -f 2391/3575/4959 2270/3930/4959 2155/3573/4959 -f 1959/4038/4960 2267/3881/4960 2876/2839/4960 -f 2383/3350/4961 2374/3370/4961 2208/3897/4961 -f 1828/2352/4962 2238/3904/4962 2049/2353/4962 -f 2242/2406/4963 2266/3679/4963 2382/3444/4963 -f 2352/4045/4964 1914/4073/4964 1273/4072/4964 -f 2185/4000/4965 2268/2504/4965 2308/3986/4965 -f 2864/4085/4966 2259/3553/4966 2354/4086/4966 -f 973/3257/4967 2140/3256/4967 2392/4087/4967 -f 2226/3591/4968 2194/3870/4968 2131/3592/4968 -f 2503/2146/4969 2465/2145/4969 2256/3724/4969 -f 7/1704/4970 3480/1300/4970 3509/1702/4970 -f 2143/2636/4971 1343/2611/4971 1509/3923/4971 -f 2139/1678/4972 1291/1680/4972 2145/2376/4972 -f 1336/2888/4973 1368/2889/4973 2139/1678/4973 -f 2349/3917/4974 1794/3918/4974 2348/3663/4974 -f 2315/3658/4975 1990/3329/4975 2241/3836/4975 -f 3211/2168/4976 3212/2167/4976 3226/4088/4976 -f 2217/3698/4977 1273/4072/4977 2396/2661/4977 -f 1273/4089/4978 2217/4090/4978 2352/4091/4978 -f 1914/4066/4979 2352/4091/4979 2338/3882/4979 -f 2165/3613/4980 2202/4075/4980 2240/4080/4980 -f 2165/3613/4981 2535/2/4981 2202/4075/4981 -f 2392/3419/4982 2140/4092/4982 2260/3884/4982 -f 2350/3584/4983 1990/3329/4983 2315/3658/4983 -f 2312/3385/4984 2243/3684/4984 2283/4043/4984 -f 2337/3572/4985 2354/4086/4985 2259/3553/4985 -f 3288/2449/4986 3337/4093/4986 1921/3795/4986 -f 2205/3867/4987 2994/4094/4987 2351/3526/4987 -f 2145/2376/4988 1283/2377/4988 2154/3969/4988 -f 2318/3759/4989 2179/3638/4989 2245/3639/4989 -f 2315/3658/4990 2241/3836/4990 2158/1442/4990 -f 2352/4091/4991 2226/4095/4991 2338/3882/4991 -f 2338/3593/4992 2165/4096/4992 2240/4083/4992 -f 2363/3330/4993 2378/3332/4993 2400/3880/4993 -f 3473/1107/4994 3458/1446/4994 3481/1108/4994 -f 2575/3627/4995 1430/3628/4995 2109/4097/4995 -f 2445/4098/4996 2177/4023/4996 2881/4010/4996 -f 1793/1518/4997 2408/4099/4997 2829/3163/4997 -f 2436/2295/4998 2425/3192/4998 2163/4081/4998 -f 1657/649/4999 1662/651/4999 1136/4100/4999 -f 1473/2666/5000 2109/4097/5000 2799/4101/5000 -f 2422/2070/5001 2479/4102/5001 1675/2665/5001 -f 956/4103/5002 957/2509/5002 2429/1886/5002 -f 2792/1399/5003 2845/4104/5003 2812/371/5003 -f 2870/3091/5004 1700/4105/5004 2886/4106/5004 -f 2479/4102/5005 2855/4107/5005 1473/2666/5005 -f 2799/4101/5006 1702/4108/5006 2435/3335/5006 -f 1473/2666/5007 2799/4101/5007 2699/264/5007 -f 58/211/5008 23/783/5008 59/755/5008 -f 2886/4106/5009 1700/4105/5009 2885/4109/5009 -f 2427/4110/5010 2425/3192/5010 2426/4111/5010 -f 2699/264/5011 2799/4101/5011 2210/4112/5011 -f 2625/650/5012 2421/4113/5012 2752/4114/5012 -f 2210/4112/5013 2799/4101/5013 2435/3335/5013 -f 1038/4115/5014 2596/3895/5014 1055/4055/5014 -f 2506/1595/5015 1020/2394/5015 1009/1596/5015 -f 2874/4116/5016 2871/3978/5016 2818/3019/5016 -f 2818/3019/5017 2871/3978/5017 2856/3977/5017 -f 2409/3185/5018 2905/4117/5018 2904/3186/5018 -f 1038/4115/5019 2576/4118/5019 2596/3895/5019 -f 3288/2449/5020 1921/3795/5020 1910/2447/5020 -f 2077/4119/5021 2078/3600/5021 2112/3602/5021 -f 2584/3877/5022 2423/2030/5022 2479/4102/5022 -f 3212/2167/5023 3227/2262/5023 3226/4088/5023 -f 2576/4118/5024 2597/4120/5024 2596/3895/5024 -f 2275/2190/5025 2522/4121/5025 2537/3107/5025 -f 2710/4122/5026 2779/3187/5026 2820/3333/5026 -f 2676/4123/5027 2718/4029/5027 2162/4037/5027 -f 1902/4124/5028 2112/3602/5028 2584/3877/5028 -f 2609/266/5029 2879/679/5029 2434/267/5029 -f 3195/1932/5030 3218/1934/5030 3194/4125/5030 -f 2541/3981/5031 2576/4118/5031 1038/4115/5031 -f 2434/267/5032 2879/679/5032 2838/1635/5032 -f 3469/782/5033 1830/781/5033 1174/3527/5033 -f 2541/3981/5034 2550/4126/5034 2576/4118/5034 -f 2550/4126/5035 2597/4120/5035 2576/4118/5035 -f 3498/1197/5036 2783/3021/5036 1674/1198/5036 -f 3057/1411/5037 3100/4127/5037 3080/3676/5037 -f 3236/1114/5038 1448/3488/5038 1631/4128/5038 -f 2706/3201/5039 2705/4129/5039 2636/4130/5039 -f 1496/4131/5040 2489/2898/5040 2644/4132/5040 -f 2033/4133/5041 1439/273/5041 1442/2571/5041 -f 959/576/5042 2483/2073/5042 978/450/5042 -f 2796/4134/5043 2012/2349/5043 2795/2348/5043 -f 1072/4135/5044 2602/4136/5044 1082/3890/5044 -f 2698/4137/5045 2674/265/5045 2676/4123/5045 -f 1697/311/5046 3425/313/5046 2642/4007/5046 -f 2505/3980/5047 2525/4138/5047 2541/3981/5047 -f 2541/3981/5048 2525/4138/5048 2550/4126/5048 -f 2598/3920/5049 2597/4120/5049 2550/4126/5049 -f 2565/4139/5050 2598/3920/5050 2550/4126/5050 -f 2983/528/5051 3025/2485/5051 3048/4140/5051 -f 966/3334/5052 1934/4012/5052 2888/4141/5052 -f 2722/3730/5053 2721/732/5053 2695/3046/5053 -f 959/576/5054 960/2177/5054 2483/2073/5054 -f 2564/3188/5055 2600/268/5055 1987/4142/5055 -f 2763/3675/5056 2796/3078/5056 2751/4143/5056 -f 1842/220/5057 2581/2423/5057 1866/2422/5057 -f 1231/183/5058 1232/182/5058 1099/2781/5058 -f 2763/3675/5059 2751/4143/5059 1955/4144/5059 -f 2751/4145/5060 2795/4146/5060 2778/4147/5060 -f 2483/2073/5061 2484/4148/5061 2505/1990/5061 -f 2505/3980/5062 2484/4149/5062 2525/4138/5062 -f 2525/4138/5063 2565/4139/5063 2550/4126/5063 -f 1700/4105/5064 1911/3090/5064 1892/4150/5064 -f 2748/4151/5065 2761/238/5065 2790/240/5065 -f 2792/1399/5066 2812/371/5066 2791/239/5066 -f 2672/4152/5067 2592/648/5067 2670/1761/5067 -f 1173/2270/5068 1050/2287/5068 558/635/5068 -f 2658/2884/5069 2693/2670/5069 2692/2671/5069 -f 2525/4138/5070 2542/4153/5070 2565/4139/5070 -f 2565/4139/5071 2577/4154/5071 2598/3920/5071 -f 2577/4154/5072 2599/3873/5072 2598/3920/5072 -f 2598/3920/5073 2599/3873/5073 2295/3872/5073 -f 2901/4155/5074 2175/3184/5074 2904/3186/5074 -f 2417/4156/5075 592/3226/5075 1676/3225/5075 -f 2905/4117/5076 1909/4157/5076 2906/2458/5076 -f 2498/2039/5077 2231/2299/5077 2515/2040/5077 -f 1909/4157/5078 2905/4117/5078 2409/3185/5078 -f 3030/4158/5079 3019/4159/5079 3020/4160/5079 -f 1887/1891/5080 1019/3215/5080 2902/2487/5080 -f 2154/4161/5081 1939/3496/5081 2145/3495/5081 -f 2036/3454/5082 2841/3159/5082 2867/3464/5082 -f 2484/4149/5083 2542/4153/5083 2525/4138/5083 -f 2542/4153/5084 2566/4162/5084 2565/4139/5084 -f 2566/4162/5085 2577/4154/5085 2565/4139/5085 -f 2752/4114/5086 2710/4122/5086 2820/3333/5086 -f 2827/4163/5087 2828/373/5087 2843/4164/5087 -f 2676/4123/5088 2674/265/5088 2718/4029/5088 -f 2428/97/5089 2437/4165/5089 2427/4166/5089 -f 1350/737/5090 1657/649/5090 1136/4100/5090 -f 2601/2264/5091 2421/4113/5091 2625/650/5091 -f 2601/2264/5092 2753/652/5092 2421/4113/5092 -f 2752/4114/5093 2820/3333/5093 2435/3335/5093 -f 2778/4147/5094 2750/733/5094 2733/4167/5094 -f 2734/4168/5095 2778/4147/5095 2733/4167/5095 -f 1891/4169/5096 1769/252/5096 2489/2898/5096 -f 2811/4170/5097 2828/373/5097 2827/4163/5097 -f 966/3334/5098 2820/3333/5098 2779/3187/5098 -f 3034/4171/5099 3058/4172/5099 3024/292/5099 -f 2437/4165/5100 2447/4173/5100 2455/3208/5100 -f 2427/4166/5101 2437/4165/5101 2455/3208/5101 -f 2752/4114/5102 2435/3335/5102 1702/4108/5102 -f 960/4174/5103 2486/4175/5103 2484/4149/5103 -f 2486/4175/5104 2485/4176/5104 2484/4149/5104 -f 2484/4149/5105 2485/4176/5105 2542/4153/5105 -f 2566/4162/5106 1063/4051/5106 2577/4154/5106 -f 1063/4051/5107 2599/3873/5107 2577/4154/5107 -f 2415/3148/5108 2443/848/5108 2452/4177/5108 -f 2753/652/5109 2645/4178/5109 2421/4113/5109 -f 2753/652/5110 2640/654/5110 2645/4178/5110 -f 2778/4179/5111 2794/4180/5111 2750/206/5111 -f 1769/252/5112 1891/4169/5112 1911/3090/5112 -f 169/4181/5113 2765/4182/5113 2601/2264/5113 -f 2644/4132/5114 2848/4183/5114 2641/4184/5114 -f 2641/4184/5115 2848/4183/5115 2453/4185/5115 -f 2453/4185/5116 2698/4137/5116 2676/4123/5116 -f 2699/264/5117 2210/4112/5117 2296/3860/5117 -f 2848/4183/5118 2459/2071/5118 2698/4137/5118 -f 2517/2072/5119 2459/2071/5119 2848/4183/5119 -f 1934/4012/5120 2445/4098/5120 2881/4010/5120 -f 2645/4178/5121 2640/654/5121 2609/266/5121 -f 2853/4186/5122 602/3241/5122 2846/3243/5122 -f 2887/250/5123 1769/252/5123 1911/3090/5123 -f 2706/3201/5124 2636/4130/5124 2668/807/5124 -f 2884/4187/5125 1686/3227/5125 1991/4188/5125 -f 2883/4189/5126 2884/4187/5126 1991/4188/5126 -f 2640/654/5127 2879/679/5127 2609/266/5127 -f 2485/4176/5128 2566/4162/5128 2542/4153/5128 -f 1964/2128/5129 3439/2130/5129 3471/3576/5129 -f 2566/4162/5130 1057/4190/5130 1063/4051/5130 -f 967/1517/5131 1611/4191/5131 1890/4192/5131 -f 1892/4150/5132 1496/4131/5132 2417/4156/5132 -f 1496/4131/5133 2641/4184/5133 2417/4156/5133 -f 2777/4193/5134 2813/3242/5134 2776/1398/5134 -f 2584/3877/5135 2567/3106/5135 1703/251/5135 -f 1902/4124/5136 2584/3877/5136 1703/251/5136 -f 2993/2176/5137 2457/3995/5137 2486/4194/5137 -f 2485/4176/5138 2551/4195/5138 2566/4162/5138 -f 2551/4195/5139 1057/4190/5139 2566/4162/5139 -f 602/3241/5140 1902/4124/5140 1703/251/5140 -f 1700/4105/5141 1892/4150/5141 1676/3225/5141 -f 2299/3901/5142 2707/4003/5142 2260/3871/5142 -f 2645/4178/5143 2609/266/5143 2600/268/5143 -f 2788/4196/5144 2842/4197/5144 2810/253/5144 -f 3371/683/5145 3370/685/5145 3359/4198/5145 -f 2675/4199/5146 2160/4042/5146 2303/1847/5146 -f 2425/3192/5147 2455/4200/5147 2163/4081/5147 -f 2595/3670/5148 2523/4201/5148 1829/3703/5148 -f 2780/2714/5149 2798/3235/5149 2173/2712/5149 -f 2638/3674/5150 2657/4202/5150 2655/3672/5150 -f 2657/4202/5151 2656/4203/5151 2655/3672/5151 -f 2457/3000/5152 2485/4176/5152 2486/4175/5152 -f 1393/2244/5153 1407/2700/5153 243/2245/5153 -f 1700/4105/5154 1676/3225/5154 2885/4109/5154 -f 1221/3916/5155 2815/3250/5155 2249/4204/5155 -f 2457/3000/5156 2487/4205/5156 2485/4176/5156 -f 2487/4205/5157 2526/4206/5157 2485/4176/5157 -f 2526/4206/5158 2551/4195/5158 2485/4176/5158 -f 1675/2665/5159 2479/4102/5159 1473/2666/5159 -f 1911/3090/5160 1891/4169/5160 1892/4150/5160 -f 2844/372/5161 2886/4106/5161 2843/4164/5161 -f 2842/4197/5162 2883/4189/5162 2869/1415/5162 -f 2791/239/5163 2828/373/5163 2811/4170/5163 -f 2790/240/5164 2791/239/5164 2811/4170/5164 -f 1407/2743/5165 620/1234/5165 243/1236/5165 -f 999/3979/5166 2541/3981/5166 1038/4115/5166 -f 2439/2906/5167 2993/2176/5167 955/2175/5167 -f 2749/3057/5168 2761/238/5168 2748/4151/5168 -f 1849/3270/5169 2499/1081/5169 2651/4207/5169 -f 2567/3106/5170 2584/3877/5170 2422/2070/5170 -f 2526/4206/5171 2527/4208/5171 2551/4195/5171 -f 2582/3079/5172 2561/2976/5172 2538/3058/5172 -f 2253/699/5173 2696/953/5173 2264/698/5173 -f 3214/4209/5174 3228/813/5174 3197/4210/5174 -f 3362/4211/5175 3348/2147/5175 3377/2567/5175 -f 3383/3849/5176 3422/3848/5176 3421/4212/5176 -f 984/4213/5177 2109/4097/5177 1430/3628/5177 -f 2626/4214/5178 2623/4215/5178 1933/4216/5178 -f 1849/3270/5179 2815/3250/5179 2499/1081/5179 -f 2439/2906/5180 2992/1879/5180 2457/3995/5180 -f 2457/3000/5181 2468/3002/5181 2487/4205/5181 -f 2025/3357/5182 2743/2866/5182 1997/4217/5182 -f 2873/4014/5183 2186/3971/5183 2782/4218/5183 -f 2860/4056/5184 2859/2208/5184 2830/2498/5184 -f 2859/2208/5185 2860/4056/5185 2064/2209/5185 -f 2313/3999/5186 2264/698/5186 2696/953/5186 -f 2730/1267/5187 2745/4219/5187 2810/253/5187 -f 2112/3602/5188 1902/4124/5188 602/3241/5188 -f 2527/4208/5189 2526/4206/5189 1007/4220/5189 -f 2112/3602/5190 602/3241/5190 2853/4186/5190 -f 2726/4221/5191 2670/1761/5191 1674/1198/5191 -f 2692/4222/5192 2691/806/5192 2656/805/5192 -f 2799/4101/5193 1136/4100/5193 1702/4108/5193 -f 3227/2262/5194 3240/3903/5194 3226/4088/5194 -f 2747/4223/5195 2811/4170/5195 2789/4224/5195 -f 2811/4170/5196 2827/4163/5196 2789/4224/5196 -f 2659/2882/5197 2639/4225/5197 2660/3047/5197 -f 3435/3053/5198 1894/383/5198 3442/1953/5198 -f 2796/4134/5199 2854/3660/5199 2012/2349/5199 -f 2129/3828/5200 1832/3073/5200 1928/678/5200 -f 2660/3047/5201 2694/2883/5201 2659/2882/5201 -f 3511/1762/5202 1674/1198/5202 2670/1761/5202 -f 2454/845/5203 2198/844/5203 2330/3729/5203 -f 2690/4226/5204 2747/4223/5204 2746/4227/5204 -f 2860/4056/5205 2325/3940/5205 2064/2209/5205 -f 2548/271/5206 3461/270/5206 2808/4228/5206 -f 2608/4229/5207 2562/4230/5207 2563/4231/5207 -f 2636/4130/5208 2654/4232/5208 2635/4233/5208 -f 2658/4234/5209 2692/4222/5209 2657/4235/5209 -f 3188/3457/5210 3189/1637/5210 3211/2168/5210 -f 2847/4236/5211 2853/4186/5211 2846/3243/5211 -f 1905/2500/5212 1711/2216/5212 1927/2870/5212 -f 2488/532/5213 2487/4205/5213 2468/3002/5213 -f 1329/2726/5214 1713/2980/5214 1649/3214/5214 -f 2795/4237/5215 2847/4236/5215 2794/4180/5215 -f 2845/4104/5216 2886/4106/5216 2844/372/5216 -f 551/4238/5217 2601/2264/5217 1666/736/5217 -f 2636/4130/5218 2690/4226/5218 2654/4232/5218 -f 2292/125/5219 2313/4015/5219 2696/580/5219 -f 2859/2208/5220 1203/4239/5220 1185/2499/5220 -f 2325/3940/5221 2891/3835/5221 2064/2209/5221 -f 2883/4189/5222 1991/4188/5222 2899/4240/5222 -f 2502/3650/5223 2539/4241/5223 2522/3651/5223 -f 1751/4242/5224 2464/1921/5224 2502/3650/5224 -f 2732/4243/5225 2731/1400/5225 2719/3202/5225 -f 2459/2071/5226 2735/263/5226 2698/4137/5226 -f 1867/3673/5227 2658/4244/5227 2638/3674/5227 -f 2351/3526/5228 2436/2295/5228 2465/2145/5228 -f 2659/2882/5229 2658/2884/5229 1867/4245/5229 -f 2992/3001/5230 2440/4246/5230 2468/3002/5230 -f 2468/3002/5231 2458/530/5231 2488/532/5231 -f 2585/4247/5232 1060/3907/5232 3422/3848/5232 -f 2249/4248/5233 1849/3272/5233 2341/4249/5233 -f 1082/3890/5234 2602/4136/5234 2662/2367/5234 -f 2505/1990/5235 988/448/5235 2483/2073/5235 -f 2636/4130/5236 2635/4233/5236 2618/4250/5236 -f 2595/3705/5237 2655/3557/5237 2608/4229/5237 -f 2658/4234/5238 2657/4235/5238 2638/4251/5238 -f 1082/3890/5239 2662/2367/5239 1107/2359/5239 -f 603/4252/5240 592/3226/5240 1508/4253/5240 -f 2734/4168/5241 2721/732/5241 2722/3730/5241 -f 1125/2226/5242 2713/2358/5242 2784/2224/5242 -f 2326/3942/5243 2269/3941/5243 2784/2224/5243 -f 37/959/5244 1490/1412/5244 1532/3450/5244 -f 3499/1910/5245 3424/1002/5245 3426/1004/5245 -f 2827/4163/5246 2842/4197/5246 2788/4196/5246 -f 2789/4224/5247 2827/4163/5247 2788/4196/5247 -f 2608/4229/5248 2637/4254/5248 2618/4250/5248 -f 2827/4163/5249 2843/4164/5249 2883/4189/5249 -f 2595/3705/5250 2608/4229/5250 2583/3218/5250 -f 2501/2757/5251 3434/869/5251 2839/1640/5251 -f 2624/3013/5252 566/3014/5252 2445/4098/5252 -f 2440/4246/5253 2458/530/5253 2468/3002/5253 -f 1715/3017/5254 210/1284/5254 1539/70/5254 -f 2912/4255/5255 2319/4256/5255 2371/2486/5255 -f 1650/1311/5256 512/1353/5256 511/1302/5256 -f 2713/2358/5257 2700/4257/5257 2784/2224/5257 -f 2755/4258/5258 2326/3942/5258 2784/2224/5258 -f 2621/4259/5259 1908/2236/5259 1901/3579/5259 -f 1116/2276/5260 3466/1713/5260 3488/1712/5260 -f 2562/4230/5261 2618/4250/5261 2582/3079/5261 -f 1933/4216/5262 2408/4099/5262 603/4252/5262 -f 1955/4144/5263 2751/4143/5263 1941/4260/5263 -f 3360/4261/5264 3383/3849/5264 3421/4212/5264 -f 2506/4262/5265 2528/4263/5265 1023/1856/5265 -f 1023/1856/5266 2528/4263/5266 2544/3606/5266 -f 1072/2261/5267 2552/701/5267 2544/4264/5267 -f 2432/4265/5268 2412/4266/5268 2406/3468/5268 -f 1686/3227/5269 592/3226/5269 603/4252/5269 -f 2662/2367/5270 2700/4257/5270 2713/2358/5270 -f 2700/4257/5271 2755/4258/5271 2784/2224/5271 -f 2831/4267/5272 2326/3942/5272 2755/4258/5272 -f 1890/4192/5273 603/4252/5273 2408/4099/5273 -f 2890/1848/5274 1933/4216/5274 2675/4199/5274 -f 2591/3020/5275 2672/4152/5275 2726/4221/5275 -f 2779/3187/5276 2624/3013/5276 2445/4098/5276 -f 2990/2560/5277 2429/1886/5277 2440/1881/5277 -f 1598/2991/5278 2781/288/5278 215/2844/5278 -f 2445/4098/5279 566/3014/5279 2177/4023/5279 -f 1145/3380/5280 2880/3363/5280 2110/3362/5280 -f 2027/3249/5281 2161/1082/5281 2499/1081/5281 -f 2988/4268/5282 2987/4269/5282 2966/4270/5282 -f 2326/3942/5283 2831/4267/5283 2861/3926/5283 -f 2828/373/5284 2844/372/5284 2843/4164/5284 -f 2873/4014/5285 2207/3965/5285 2186/3971/5285 -f 1880/3657/5286 2223/1186/5286 2232/3429/5286 -f 3221/4271/5287 47/99/5287 3136/3530/5287 -f 1898/2134/5288 1272/3261/5288 2852/4272/5288 -f 2747/4223/5289 2789/4224/5289 2746/4227/5289 -f 2608/4229/5290 2618/4250/5290 2562/4230/5290 -f 2734/4168/5291 2733/4167/5291 2721/732/5291 -f 2840/4273/5292 2641/4184/5292 2623/4215/5292 -f 2710/4122/5293 2564/3188/5293 2779/3187/5293 -f 2751/4145/5294 2778/4147/5294 1941/3492/5294 -f 2855/4107/5295 2575/3627/5295 1473/2666/5295 -f 2506/4262/5296 2507/4274/5296 2528/4263/5296 -f 2528/4275/5297 2568/4276/5297 2544/4264/5297 -f 2568/4277/5298 2602/4136/5298 1072/4135/5298 -f 2627/4278/5299 2678/4279/5299 2700/4280/5299 -f 2662/4281/5300 2627/4278/5300 2700/4280/5300 -f 2700/4257/5301 2756/4282/5301 2755/4258/5301 -f 2618/4250/5302 2635/4233/5302 2622/4283/5302 -f 2690/4226/5303 2704/3102/5303 2622/4283/5303 -f 2635/4233/5304 2654/4232/5304 2622/4283/5304 -f 2582/3079/5305 2618/4250/5305 2622/4283/5305 -f 2645/4178/5306 2564/3188/5306 2710/4122/5306 -f 2731/1400/5307 2749/3057/5307 2719/3202/5307 -f 2393/636/5308 837/2427/5308 2168/695/5308 -f 2545/4284/5309 2553/4285/5309 2568/4277/5309 -f 2528/4263/5310 2545/4284/5310 2568/4277/5310 -f 2553/4285/5311 2627/4286/5311 2602/4136/5311 -f 2678/4287/5312 2679/4288/5312 2700/4257/5312 -f 2679/4288/5313 2756/4282/5313 2700/4257/5313 -f 2771/4289/5314 2831/4267/5314 2755/4258/5314 -f 2756/4282/5315 2771/4289/5315 2755/4258/5315 -f 2274/3295/5316 2350/3584/5316 2872/843/5316 -f 2591/3020/5317 2798/3235/5317 2672/4152/5317 -f 1662/651/5318 2625/650/5318 1702/4108/5318 -f 2829/3163/5319 1933/4216/5319 2890/1848/5319 -f 2139/3879/5320 188/3494/5320 1336/3548/5320 -f 2775/3505/5321 2002/3463/5321 1969/3535/5321 -f 1868/4290/5322 2639/4225/5322 1867/4245/5322 -f 2564/3188/5323 2645/4178/5323 2600/268/5323 -f 2077/4119/5324 2112/3602/5324 2853/4186/5324 -f 2695/3046/5325 2694/2883/5325 2660/3047/5325 -f 1780/3563/5326 1751/3562/5326 2502/3659/5326 -f 2507/4274/5327 2545/4284/5327 2528/4263/5327 -f 2568/4277/5328 2553/4285/5328 2602/4136/5328 -f 2771/4289/5329 2832/4291/5329 2831/4267/5329 -f 3372/2414/5330 3371/683/5330 3342/165/5330 -f 989/2325/5331 2488/4292/5331 979/2380/5331 -f 2516/3216/5332 2503/2146/5332 2523/3217/5332 -f 2624/3013/5333 2564/3188/5333 1987/4142/5333 -f 2490/4293/5334 2508/4294/5334 2507/4274/5334 -f 2508/4294/5335 2518/4295/5335 2507/4274/5335 -f 2507/4274/5336 2518/4295/5336 2545/4284/5336 -f 2586/4296/5337 2627/4286/5337 2553/4285/5337 -f 2586/4296/5338 2663/4297/5338 2627/4286/5338 -f 2627/4286/5339 2663/4297/5339 2678/4287/5339 -f 2678/4287/5340 2663/4297/5340 2679/4288/5340 -f 2831/4267/5341 2832/4291/5341 2861/3926/5341 -f 2832/4291/5342 2862/2392/5342 2861/3926/5342 -f 396/152/5343 1442/2571/5343 1439/273/5343 -f 2562/4230/5344 2582/3079/5344 2538/3058/5344 -f 2660/3047/5345 3253/4298/5345 1889/2448/5345 -f 2483/2073/5346 960/2177/5346 2484/4148/5346 -f 2745/4219/5347 2788/4196/5347 2810/253/5347 -f 2480/1920/5348 2503/2146/5348 2516/3216/5348 -f 3506/91/5349 3444/93/5349 3510/1467/5349 -f 2455/3208/5350 2447/4173/5350 2466/3206/5350 -f 1891/4169/5351 1496/4131/5351 1892/4150/5351 -f 2854/3077/5352 2055/3641/5352 2012/4299/5352 -f 2490/4293/5353 2470/4300/5353 2508/4294/5353 -f 2545/4284/5354 2554/4301/5354 2553/4285/5354 -f 2554/4301/5355 2578/4302/5355 2553/4285/5355 -f 2578/4302/5356 2586/4296/5356 2553/4285/5356 -f 2351/3526/5357 2994/4094/5357 3003/4303/5357 -f 2732/4304/5358 2693/2670/5358 2694/2883/5358 -f 1674/1198/5359 3511/1762/5359 3430/1199/5359 -f 2518/4295/5360 2529/4305/5360 2545/4284/5360 -f 2545/4284/5361 2529/4305/5361 2554/4301/5361 -f 2663/4297/5362 2680/4306/5362 2679/4288/5362 -f 2727/4307/5363 2679/4288/5363 2680/4306/5363 -f 2727/4307/5364 2756/4282/5364 2679/4288/5364 -f 2727/4307/5365 2772/4308/5365 2756/4282/5365 -f 2772/4308/5366 2771/4289/5366 2756/4282/5366 -f 2771/4289/5367 2772/4308/5367 2832/4291/5367 -f 2770/2225/5368 2860/4056/5368 2830/2498/5368 -f 2869/1415/5369 2883/4189/5369 2899/4240/5369 -f 194/1296/5370 166/1295/5370 178/1320/5370 -f 2454/845/5371 2274/3295/5371 2872/843/5371 -f 1429/4309/5372 1231/4310/5372 1099/4311/5372 -f 3241/309/5373 3213/2206/5373 3173/310/5373 -f 3002/4082/5374 2351/3526/5374 3003/4303/5374 -f 981/2431/5375 2460/4312/5375 2470/4300/5375 -f 2586/4296/5376 2628/4313/5376 2663/4297/5376 -f 2628/4313/5377 2664/4314/5377 2663/4297/5377 -f 2663/4297/5378 2664/4314/5378 2680/4306/5378 -f 2746/4227/5379 2788/4196/5379 2745/4219/5379 -f 2746/4227/5380 2745/4219/5380 2704/3102/5380 -f 2624/3013/5381 1987/4142/5381 1697/311/5381 -f 2464/1921/5382 2480/1920/5382 2502/3650/5382 -f 2481/2144/5383 2503/2146/5383 2480/1920/5383 -f 1987/4142/5384 2600/268/5384 2702/1076/5384 -f 2470/4300/5385 2509/4315/5385 2508/4294/5385 -f 2509/4315/5386 2519/4316/5386 2518/4295/5386 -f 2508/4294/5387 2509/4315/5387 2518/4295/5387 -f 2518/4295/5388 2519/4316/5388 2529/4305/5388 -f 2529/4305/5389 2530/4317/5389 2554/4301/5389 -f 2664/4314/5390 2681/4318/5390 2680/4306/5390 -f 2681/4318/5391 2727/4307/5391 2680/4306/5391 -f 2772/4308/5392 2785/4319/5392 2832/4291/5392 -f 2785/4319/5393 2833/4320/5393 2832/4291/5393 -f 2832/4291/5394 2833/4320/5394 2862/2392/5394 -f 1072/2261/5395 2544/4264/5395 2568/4276/5395 -f 349/3412/5396 350/4321/5396 184/4322/5396 -f 2597/4120/5397 2278/3921/5397 2596/3895/5397 -f 2872/843/5398 2227/1441/5398 2198/844/5398 -f 2789/4224/5399 2788/4196/5399 2746/4227/5399 -f 2298/64/5400 2205/3867/5400 2480/1920/5400 -f 2762/208/5401 2731/1400/5401 2732/4243/5401 -f 981/2431/5402 2419/2430/5402 2460/4312/5402 -f 2460/4312/5403 2509/4315/5403 2470/4300/5403 -f 2530/4317/5404 2569/4323/5404 2554/4301/5404 -f 2554/4301/5405 2569/4323/5405 2578/4302/5405 -f 2603/4324/5406 2586/4296/5406 2578/4302/5406 -f 2569/4323/5407 2603/4324/5407 2578/4302/5407 -f 2833/4320/5408 2876/2839/5408 2862/2392/5408 -f 1116/2276/5409 163/2652/5409 3466/1713/5409 -f 2273/4011/5410 2296/3860/5410 2210/4112/5410 -f 2704/3102/5411 2745/4219/5411 2730/1267/5411 -f 1534/3131/5412 1611/4191/5412 2897/2566/5412 -f 1189/1986/5413 1111/1971/5413 965/1978/5413 -f 2645/4178/5414 2710/4122/5414 2421/4113/5414 -f 2502/3650/5415 2516/3216/5415 2539/4241/5415 -f 2961/2937/5416 2960/3049/5416 2945/4006/5416 -f 2205/3867/5417 2481/2144/5417 2480/1920/5417 -f 2762/208/5418 2776/1398/5418 2731/1400/5418 -f 2423/2030/5419 2855/4107/5419 2479/4102/5419 -f 2417/4156/5420 1508/4253/5420 592/3226/5420 -f 2372/3823/5421 2419/2430/5421 963/2432/5421 -f 2519/4316/5422 2530/4317/5422 2529/4305/5422 -f 2586/4296/5423 2603/4324/5423 2628/4313/5423 -f 2681/4318/5424 2738/4325/5424 2727/4307/5424 -f 2757/4326/5425 2772/4308/5425 2727/4307/5425 -f 2757/4326/5426 2785/4319/5426 2772/4308/5426 -f 1710/1633/5427 2202/4075/5427 2535/2/5427 -f 1890/4192/5428 2408/4099/5428 1793/1518/5428 -f 2843/4164/5429 2886/4106/5429 2885/4109/5429 -f 2842/4197/5430 2827/4163/5430 2883/4189/5430 -f 2516/3216/5431 2583/3218/5431 2539/4241/5431 -f 2637/4254/5432 2668/807/5432 2636/4130/5432 -f 2783/3021/5433 3498/1197/5433 3429/225/5433 -f 2215/2294/5434 2138/2460/5434 2807/3949/5434 -f 1666/736/5435 2625/650/5435 1657/649/5435 -f 2419/2430/5436 2448/4327/5436 2460/4312/5436 -f 2460/4312/5437 2471/4328/5437 2509/4315/5437 -f 2628/4313/5438 2646/4329/5438 2664/4314/5438 -f 2664/4314/5439 2646/4329/5439 2681/4318/5439 -f 2757/4326/5440 2727/4307/5440 2738/4325/5440 -f 2834/4330/5441 2833/4320/5441 2785/4319/5441 -f 2833/4320/5442 2834/4330/5442 2876/2839/5442 -f 2834/4330/5443 1959/4038/5443 2876/2839/5443 -f 2798/3235/5444 2780/2714/5444 2672/4152/5444 -f 1662/651/5445 1702/4108/5445 1136/4100/5445 -f 2675/4199/5446 2303/1847/5446 2890/1848/5446 -f 2017/2157/5447 3182/562/5447 3364/2835/5447 -f 2325/4331/5448 2860/4332/5448 2269/4333/5448 -f 2419/2430/5449 2430/3822/5449 2448/4327/5449 -f 2448/4327/5450 2471/4328/5450 2460/4312/5450 -f 2471/4328/5451 2491/4334/5451 2509/4315/5451 -f 2491/4334/5452 2510/4335/5452 2509/4315/5452 -f 2509/4315/5453 2510/4335/5453 2519/4316/5453 -f 2510/4335/5454 2555/4336/5454 2530/4317/5454 -f 2519/4316/5455 2510/4335/5455 2530/4317/5455 -f 2603/4324/5456 2647/4337/5456 2628/4313/5456 -f 2647/4337/5457 2646/4329/5457 2628/4313/5457 -f 2646/4329/5458 2738/4325/5458 2681/4318/5458 -f 2563/4231/5459 2562/4230/5459 2538/3058/5459 -f 2563/4231/5460 2538/3058/5460 2522/3651/5460 -f 1743/3087/5461 2447/4173/5461 2456/3030/5461 -f 2583/3218/5462 2563/4231/5462 2539/4241/5462 -f 2845/4104/5463 2844/372/5463 2812/371/5463 -f 1666/736/5464 2601/2264/5464 2625/650/5464 -f 2530/4317/5465 2555/4336/5465 2569/4323/5465 -f 2555/4336/5466 2603/4324/5466 2569/4323/5466 -f 2738/4325/5467 2773/4338/5467 2757/4326/5467 -f 2773/4338/5468 2800/4339/5468 2785/4319/5468 -f 2757/4326/5469 2773/4338/5469 2785/4319/5469 -f 2800/4339/5470 2821/4340/5470 2785/4319/5470 -f 2821/4340/5471 2834/4330/5471 2785/4319/5471 -f 2821/4340/5472 1959/4038/5472 2834/4330/5472 -f 2654/4232/5473 2690/4226/5473 2622/4283/5473 -f 2690/4226/5474 2746/4227/5474 2704/3102/5474 -f 3342/165/5475 3371/683/5475 3326/166/5475 -f 2006/769/5476 2157/1187/5476 2223/1186/5476 -f 2006/769/5477 2182/768/5477 2157/1187/5477 -f 2173/2712/5478 2798/3235/5478 2856/3977/5478 -f 2810/253/5479 2842/4197/5479 2869/1415/5479 -f 2430/3822/5480 2441/4341/5480 2448/4327/5480 -f 2441/4341/5481 2471/4328/5481 2448/4327/5481 -f 2491/4334/5482 2511/4342/5482 2510/4335/5482 -f 2555/4336/5483 2556/4343/5483 2603/4324/5483 -f 2714/4344/5484 2773/4338/5484 2738/4325/5484 -f 1967/3268/5485 1849/3272/5485 2651/2101/5485 -f 1611/4191/5486 603/4252/5486 1890/4192/5486 -f 1991/4188/5487 603/4252/5487 1611/4191/5487 -f 1991/4188/5488 1611/4191/5488 2899/4240/5488 -f 2027/3249/5489 2499/1081/5489 2815/3250/5489 -f 2371/2486/5490 1741/4078/5490 1887/1891/5490 -f 1880/3657/5491 2006/769/5491 2223/1186/5491 -f 2874/4116/5492 2818/3019/5492 2783/3021/5492 -f 2417/4156/5493 2840/4273/5493 1508/4253/5493 -f 2490/4293/5494 2507/4274/5494 2506/4262/5494 -f 1959/4038/5495 2282/2408/5495 2250/2407/5495 -f 2510/4335/5496 2511/4342/5496 2555/4336/5496 -f 2556/4343/5497 2604/4345/5497 2603/4324/5497 -f 2604/4345/5498 2648/4346/5498 2647/4337/5498 -f 2603/4324/5499 2604/4345/5499 2647/4337/5499 -f 2646/4329/5500 2714/4344/5500 2738/4325/5500 -f 2714/4344/5501 2739/4347/5501 2773/4338/5501 -f 2739/4347/5502 2800/4339/5502 2773/4338/5502 -f 1959/4038/5503 2821/4340/5503 2282/2408/5503 -f 3371/683/5504 3359/4198/5504 3326/166/5504 -f 857/1783/5505 3509/1702/5505 3499/1910/5505 -f 1686/3227/5506 603/4252/5506 1991/4188/5506 -f 2885/4109/5507 1676/3225/5507 2884/4187/5507 -f 2583/3218/5508 2608/4229/5508 2563/4231/5508 -f 1160/3545/5509 3431/2804/5509 3432/2531/5509 -f 2441/4341/5510 2491/4334/5510 2471/4328/5510 -f 2511/4342/5511 2531/4348/5511 2555/4336/5511 -f 2648/4346/5512 2646/4329/5512 2647/4337/5512 -f 2648/4346/5513 2682/4349/5513 2646/4329/5513 -f 2646/4329/5514 2682/4349/5514 2714/4344/5514 -f 2850/4350/5515 2821/4340/5515 2800/4339/5515 -f 2739/4347/5516 2850/4350/5516 2800/4339/5516 -f 1996/2424/5517 2251/3912/5517 2707/4003/5517 -f 1987/4142/5518 2702/1076/5518 1697/311/5518 -f 2698/4137/5519 2735/263/5519 2674/265/5519 -f 2299/3901/5520 2141/770/5520 2006/769/5520 -f 2313/3999/5521 2314/4008/5521 2642/4007/5521 -f 2488/532/5522 1007/4220/5522 2487/4205/5522 -f 2430/3822/5523 2431/4351/5523 2441/4341/5523 -f 2441/4341/5524 2461/4352/5524 2491/4334/5524 -f 2491/4334/5525 2492/4353/5525 2511/4342/5525 -f 2555/4336/5526 2531/4348/5526 2556/4343/5526 -f 2714/4344/5527 2701/4354/5527 2739/4347/5527 -f 2801/4355/5528 2850/4350/5528 2739/4347/5528 -f 2821/4340/5529 2877/3891/5529 2282/2408/5529 -f 3434/1469/5530 3438/1471/5530 453/1781/5530 -f 3002/4082/5531 3020/4356/5531 2216/4077/5531 -f 2006/769/5532 1663/4357/5532 2299/3901/5532 -f 2880/2711/5533 1145/3970/5533 2317/3953/5533 -f 2818/3019/5534 2856/3977/5534 2798/3235/5534 -f 3460/1116/5535 3440/2538/5535 3439/2120/5535 -f 2372/3823/5536 2410/4358/5536 2430/3822/5536 -f 2431/4351/5537 2449/4359/5537 2441/4341/5537 -f 2441/4341/5538 2449/4359/5538 2461/4352/5538 -f 2461/4352/5539 2492/4353/5539 2491/4334/5539 -f 2570/4360/5540 2556/4343/5540 2531/4348/5540 -f 2570/4360/5541 2604/4345/5541 2556/4343/5541 -f 2682/4349/5542 2701/4354/5542 2714/4344/5542 -f 2701/4354/5543 2759/4361/5543 2739/4347/5543 -f 2759/4361/5544 2758/4362/5544 2739/4347/5544 -f 2758/4362/5545 2801/4355/5545 2739/4347/5545 -f 2423/2030/5546 2575/3627/5546 2855/4107/5546 -f 2637/4254/5547 2636/4130/5547 2618/4250/5547 -f 1898/2134/5548 2062/2136/5548 2108/3276/5548 -f 2410/4358/5549 2431/4351/5549 2430/3822/5549 -f 2492/4353/5550 2512/4363/5550 2511/4342/5550 -f 2511/4342/5551 2512/4363/5551 2531/4348/5551 -f 2557/4364/5552 2570/4360/5552 2531/4348/5552 -f 2682/4349/5553 2683/4365/5553 2701/4354/5553 -f 2683/4365/5554 2759/4361/5554 2701/4354/5554 -f 2801/4355/5555 2835/4366/5555 2850/4350/5555 -f 2863/4367/5556 2821/4340/5556 2850/4350/5556 -f 2863/4367/5557 2877/3891/5557 2821/4340/5557 -f 2434/267/5558 2711/1634/5558 2543/1935/5558 -f 2387/3431/5559 2166/3656/5559 2232/3429/5559 -f 2364/2425/5560 1880/3657/5560 2166/3656/5560 -f 2364/2425/5561 2006/769/5561 1880/3657/5561 -f 2006/769/5562 2364/2425/5562 1663/4357/5562 -f 2858/224/5563 2874/4116/5563 2783/3021/5563 -f 1700/4105/5564 2870/3091/5564 1911/3090/5564 -f 1697/311/5565 2642/4007/5565 566/3014/5565 -f 2995/4368/5566 2994/4094/5566 2205/3867/5566 -f 2376/4009/5567 566/3014/5567 2642/4007/5567 -f 2512/4363/5568 2520/4369/5568 2531/4348/5568 -f 2520/4369/5569 2557/4364/5569 2531/4348/5569 -f 2557/4364/5570 2571/4370/5570 2570/4360/5570 -f 2571/4370/5571 2605/4371/5571 2570/4360/5571 -f 2570/4360/5572 2605/4371/5572 2604/4345/5572 -f 2604/4345/5573 2605/4371/5573 2648/4346/5573 -f 2605/4371/5574 2629/4372/5574 2648/4346/5574 -f 2835/4366/5575 2863/4367/5575 2850/4350/5575 -f 1508/4253/5576 1933/4216/5576 603/4252/5576 -f 2707/4003/5577 2299/3901/5577 1663/4357/5577 -f 2232/3429/5578 2223/1186/5578 2330/3729/5578 -f 2626/4214/5579 2840/4273/5579 2623/4215/5579 -f 2421/4113/5580 2710/4122/5580 2752/4114/5580 -f 2404/4373/5581 2411/4374/5581 2410/4358/5581 -f 2403/2454/5582 2404/2434/5582 2410/2527/5582 -f 2410/4358/5583 2411/4374/5583 2431/4351/5583 -f 2683/4365/5584 2682/4349/5584 2648/4346/5584 -f 2629/4372/5585 2683/4365/5585 2648/4346/5585 -f 2822/4375/5586 2801/4355/5586 2758/4362/5586 -f 2801/4355/5587 2822/4375/5587 2835/4366/5587 -f 2863/4367/5588 2285/2534/5588 2877/3891/5588 -f 2285/2534/5589 233/3883/5589 2877/3891/5589 -f 2783/3021/5590 2726/4221/5590 1674/1198/5590 -f 3420/4376/5591 1491/2933/5591 3404/4377/5591 -f 1751/3562/5592 1731/3549/5592 2446/3567/5592 -f 2598/3920/5593 2278/3921/5593 2597/4120/5593 -f 2242/2406/5594 233/3883/5594 2266/3679/5594 -f 2234/4018/5595 2718/4029/5595 2296/3860/5595 -f 2128/4378/5596 551/4238/5596 1666/736/5596 -f 2674/265/5597 2296/3860/5597 2718/4029/5597 -f 2472/4379/5598 2492/4353/5598 2461/4352/5598 -f 2472/4380/5599 2493/4381/5599 2512/4382/5599 -f 2492/4383/5600 2472/4380/5600 2512/4382/5600 -f 2520/4369/5601 2558/4384/5601 2557/4364/5601 -f 2557/4364/5602 2558/4384/5602 2571/4370/5602 -f 2748/4151/5603 2790/240/5603 2747/4223/5603 -f 2790/240/5604 2811/4170/5604 2747/4223/5604 -f 2167/3477/5605 2307/2426/5605 2610/3637/5605 -f 551/4238/5606 169/4181/5606 2601/2264/5606 -f 2269/3941/5607 2770/2225/5607 2784/2224/5607 -f 2364/2425/5608 2707/4003/5608 1663/4357/5608 -f 2502/3650/5609 2480/1920/5609 2516/3216/5609 -f 2873/4014/5610 2782/4218/5610 2858/224/5610 -f 2411/4374/5611 2420/4385/5611 2431/4351/5611 -f 2420/4385/5612 2449/4359/5612 2431/4351/5612 -f 2493/4386/5613 2513/4387/5613 2512/4363/5613 -f 2512/4363/5614 2513/4387/5614 2520/4369/5614 -f 2558/4384/5615 2587/4388/5615 2571/4370/5615 -f 2571/4370/5616 2587/4388/5616 2605/4371/5616 -f 2665/4389/5617 2683/4365/5617 2629/4372/5617 -f 2759/4361/5618 2822/4375/5618 2758/4362/5618 -f 2822/4375/5619 2836/4390/5619 2835/4366/5619 -f 2141/770/5620 2299/3901/5620 2035/3391/5620 -f 3101/1410/5621 3100/4127/5621 3057/1411/5621 -f 2404/4373/5622 2412/4266/5622 2411/4374/5622 -f 2411/4374/5623 2412/4266/5623 2420/4385/5623 -f 2449/4359/5624 2462/4391/5624 2461/4352/5624 -f 2461/4352/5625 2462/4391/5625 2472/4379/5625 -f 2520/4369/5626 2546/4392/5626 2558/4384/5626 -f 2587/4388/5627 2611/4393/5627 2605/4371/5627 -f 2605/4371/5628 2611/4393/5628 2629/4372/5628 -f 2683/4365/5629 2665/4389/5629 2759/4361/5629 -f 2836/4390/5630 2878/4394/5630 2835/4366/5630 -f 2878/4394/5631 2863/4367/5631 2835/4366/5631 -f 2878/4394/5632 2893/4395/5632 2863/4367/5632 -f 2893/4395/5633 2285/2534/5633 2863/4367/5633 -f 2655/3557/5634 2637/4254/5634 2608/4229/5634 -f 2196/3985/5635 2166/3656/5635 2387/3431/5635 -f 2055/3597/5636 2853/4396/5636 2012/2349/5636 -f 1891/4169/5637 2489/2898/5637 1496/4131/5637 -f 2779/3187/5638 2445/4098/5638 1934/4012/5638 -f 2450/4397/5639 2449/4359/5639 2420/4385/5639 -f 2449/4359/5640 2450/4397/5640 2462/4391/5640 -f 2462/4398/5641 2493/4381/5641 2472/4380/5641 -f 2587/4388/5642 2630/4399/5642 2611/4393/5642 -f 2629/4372/5643 2611/4393/5643 2665/4389/5643 -f 2665/4389/5644 2760/4400/5644 2759/4361/5644 -f 2759/4361/5645 2760/4400/5645 2822/4375/5645 -f 2721/732/5646 2694/2883/5646 2695/3046/5646 -f 2721/732/5647 2720/734/5647 2694/2883/5647 -f 2846/3243/5648 2813/3242/5648 2777/4193/5648 -f 2726/4221/5649 2672/4152/5649 2670/1761/5649 -f 1496/4131/5650 2644/4132/5650 2641/4184/5650 -f 2873/4014/5651 2858/224/5651 2239/3991/5651 -f 2600/268/5652 2543/1935/5652 2702/1076/5652 -f 2404/4373/5653 2405/4401/5653 2412/4266/5653 -f 2432/4265/5654 2450/4397/5654 2420/4385/5654 -f 2450/4397/5655 2463/4402/5655 2462/4391/5655 -f 2462/4398/5656 2463/4403/5656 2493/4381/5656 -f 2513/4387/5657 2546/4392/5657 2520/4369/5657 -f 2558/4384/5658 2546/4392/5658 2587/4388/5658 -f 2587/4388/5659 2588/4404/5659 2630/4399/5659 -f 2611/4393/5660 2666/4405/5660 2665/4389/5660 -f 2760/4400/5661 2824/4406/5661 2822/4375/5661 -f 2822/4375/5662 2823/4407/5662 2836/4390/5662 -f 2823/4407/5663 2851/4408/5663 2836/4390/5663 -f 2836/4390/5664 2851/4408/5664 2878/4394/5664 -f 2782/4218/5665 2871/3978/5665 2874/4116/5665 -f 2765/4182/5666 1732/3803/5666 2723/653/5666 -f 2634/362/5667 2622/4283/5667 2653/2305/5667 -f 2319/4256/5668 1741/4078/5668 2371/2486/5668 -f 2151/3742/5669 2764/4076/5669 2196/3985/5669 -f 179/1345/5670 178/1320/5670 166/1295/5670 -f 2687/2234/5671 2703/3525/5671 1931/2235/5671 -f 2870/3091/5672 2886/4106/5672 2845/4104/5672 -f 2463/4403/5673 2494/4409/5673 2493/4381/5673 -f 2494/4410/5674 2521/4411/5674 2513/4387/5674 -f 2493/4386/5675 2494/4410/5675 2513/4387/5675 -f 2521/4411/5676 2546/4392/5676 2513/4387/5676 -f 2546/4392/5677 2588/4404/5677 2587/4388/5677 -f 2666/4405/5678 2684/4412/5678 2665/4389/5678 -f 2665/4389/5679 2684/4412/5679 2760/4400/5679 -f 2822/4375/5680 2824/4406/5680 2823/4407/5680 -f 2316/2535/5681 2285/2534/5681 2893/4395/5681 -f 567/4413/5682 2307/2426/5682 2196/3985/5682 -f 2636/4130/5683 2705/4129/5683 2690/4226/5683 -f 2702/1076/5684 3486/1075/5684 1697/311/5684 -f 2420/4385/5685 2412/4266/5685 2432/4265/5685 -f 2546/4392/5686 2559/4414/5686 2588/4404/5686 -f 2588/4404/5687 2612/4415/5687 2630/4399/5687 -f 2630/4399/5688 2666/4405/5688 2611/4393/5688 -f 2740/4416/5689 2824/4406/5689 2760/4400/5689 -f 951/1965/5690 952/2837/5690 962/1964/5690 -f 2539/4241/5691 2563/4231/5691 2522/3651/5691 -f 2298/64/5692 2464/1921/5692 2446/1444/5692 -f 2239/3991/5693 2767/226/5693 2696/953/5693 -f 2829/3163/5694 2890/1848/5694 1709/2836/5694 -f 2521/4411/5695 2559/4414/5695 2546/4392/5695 -f 2559/4414/5696 2589/4417/5696 2588/4404/5696 -f 2588/4404/5697 2589/4417/5697 2612/4415/5697 -f 2684/4412/5698 2715/4418/5698 2760/4400/5698 -f 2760/4400/5699 2715/4418/5699 2740/4416/5699 -f 2824/4406/5700 2825/4419/5700 2823/4407/5700 -f 2823/4407/5701 2825/4419/5701 2851/4408/5701 -f 2864/4085/5702 2878/4394/5702 2851/4408/5702 -f 2864/4085/5703 2893/4395/5703 2878/4394/5703 -f 2764/4076/5704 2209/2292/5704 567/4413/5704 -f 2644/4132/5705 2517/2072/5705 2848/4183/5705 -f 2415/3148/5706 2409/3150/5706 2175/3193/5706 -f 2783/3021/5707 2591/3020/5707 2726/4221/5707 -f 2705/4129/5708 2747/4223/5708 2690/4226/5708 -f 2767/226/5709 2239/3991/5709 2858/224/5709 -f 2405/4401/5710 2406/3468/5710 2412/4266/5710 -f 2494/4410/5711 2473/4420/5711 2521/4411/5711 -f 2589/4417/5712 2613/4421/5712 2612/4415/5712 -f 2620/4422/5713 2666/4405/5713 2630/4399/5713 -f 2825/4419/5714 2864/4085/5714 2851/4408/5714 -f 2316/2535/5715 2893/4395/5715 216/3858/5715 -f 2437/4165/5716 2438/96/5716 2447/4173/5716 -f 2625/650/5717 2752/4114/5717 1702/4108/5717 -f 2966/4270/5718 2987/4269/5718 2940/4423/5718 -f 2705/4129/5719 2748/4151/5719 2747/4223/5719 -f 2782/4218/5720 2874/4116/5720 2858/224/5720 -f 2432/4265/5721 2451/4424/5721 2450/4397/5721 -f 2450/4397/5722 2451/4424/5722 2463/4402/5722 -f 2451/4425/5723 2473/4426/5723 2494/4409/5723 -f 2463/4403/5724 2451/4425/5724 2494/4409/5724 -f 2559/4414/5725 2547/4427/5725 2589/4417/5725 -f 2612/4415/5726 2613/4421/5726 2630/4399/5726 -f 2666/4405/5727 2685/4428/5727 2684/4412/5727 -f 2354/4086/5728 2893/4395/5728 2864/4085/5728 -f 2354/4086/5729 216/3858/5729 2893/4395/5729 -f 1901/3579/5730 2616/2421/5730 2621/4259/5730 -f 2209/2292/5731 2807/3949/5731 567/4413/5731 -f 567/4413/5732 2807/3949/5732 2307/2426/5732 -f 2735/263/5733 1473/2666/5733 2699/264/5733 -f 2438/96/5734 2437/4165/5734 2428/97/5734 -f 2547/4427/5735 2579/4429/5735 2589/4417/5735 -f 2620/4422/5736 2630/4399/5736 2613/4421/5736 -f 2685/4428/5737 2666/4405/5737 2620/4422/5737 -f 2684/4412/5738 2685/4428/5738 2715/4418/5738 -f 2715/4418/5739 2728/4430/5739 2740/4416/5739 -f 2728/4430/5740 2802/4431/5740 2740/4416/5740 -f 2740/4416/5741 2802/4431/5741 2824/4406/5741 -f 1909/4157/5742 2150/4065/5742 2906/2458/5742 -f 1941/3492/5743 2734/4168/5743 2722/3730/5743 -f 2807/3949/5744 2610/3637/5744 2307/2426/5744 -f 2691/806/5745 2706/3201/5745 2668/807/5745 -f 2157/1187/5746 2182/768/5746 2359/3910/5746 -f 2453/4185/5747 2848/4183/5747 2698/4137/5747 -f 2438/96/5748 2456/3030/5748 2447/4173/5748 -f 2406/3468/5749 2306/3467/5749 2432/4265/5749 -f 2514/4432/5750 2473/4426/5750 2451/4425/5750 -f 2514/4433/5751 2521/4411/5751 2473/4420/5751 -f 2521/4411/5752 2532/4434/5752 2559/4414/5752 -f 2532/4434/5753 2547/4427/5753 2559/4414/5753 -f 2589/4417/5754 2579/4429/5754 2613/4421/5754 -f 2802/4431/5755 2825/4419/5755 2824/4406/5755 -f 2166/3656/5756 2196/3985/5756 2364/2425/5756 -f 2489/2898/5757 2517/2072/5757 2644/4132/5757 -f 2720/734/5758 2732/4304/5758 2694/2883/5758 -f 2622/4283/5759 2704/3102/5759 2653/2305/5759 -f 2442/459/5760 2451/4424/5760 2432/4265/5760 -f 2514/4433/5761 2532/4434/5761 2521/4411/5761 -f 2716/4435/5762 2741/4436/5762 2728/4430/5762 -f 2715/4418/5763 2716/4435/5763 2728/4430/5763 -f 2728/4430/5764 2741/4436/5764 2802/4431/5764 -f 2802/4431/5765 2786/4437/5765 2825/4419/5765 -f 2825/4419/5766 2803/4438/5766 2864/4085/5766 -f 2623/4215/5767 2676/4123/5767 2162/4037/5767 -f 2164/1943/5768 2154/3969/5768 1266/2733/5768 -f 1916/2410/5769 2059/3818/5769 2159/3837/5769 -f 2216/4077/5770 3020/4356/5770 3019/2296/5770 -f 2864/4085/5771 2803/4438/5771 2259/3553/5771 -f 3367/3009/5772 3340/3111/5772 1486/2877/5772 -f 3425/313/5773 2313/3999/5773 2642/4007/5773 -f 2406/2355/5774 2911/2357/5774 2908/3510/5774 -f 2311/3862/5775 2191/3296/5775 2454/845/5775 -f 2306/3467/5776 2413/4439/5776 2432/4265/5776 -f 2474/4440/5777 2532/4434/5777 2514/4433/5777 -f 2547/4427/5778 2572/4441/5778 2579/4429/5778 -f 2613/4421/5779 2614/4442/5779 2620/4422/5779 -f 2620/4422/5780 2649/4443/5780 2685/4428/5780 -f 2649/4443/5781 2716/4435/5781 2715/4418/5781 -f 2685/4428/5782 2649/4443/5782 2715/4418/5782 -f 2741/4436/5783 2786/4437/5783 2802/4431/5783 -f 1611/4191/5784 967/1517/5784 2897/2566/5784 -f 2869/1415/5785 2899/4240/5785 1534/3131/5785 -f 2261/1889/5786 1887/1891/5786 1741/4078/5786 -f 2490/4293/5787 981/2431/5787 2470/4300/5787 -f 2732/4304/5788 2719/1905/5788 2693/2670/5788 -f 2843/4164/5789 2884/4187/5789 2883/4189/5789 -f 2655/3557/5790 2668/807/5790 2637/4254/5790 -f 1829/3706/5791 2523/3217/5791 2503/2146/5791 -f 2888/4141/5792 1934/4012/5792 2273/4011/5792 -f 2916/851/5793 2926/2970/5793 2915/3582/5793 -f 3091/1788/5794 3135/4444/5794 3062/1789/5794 -f 2413/4439/5795 2442/459/5795 2432/4265/5795 -f 2475/4445/5796 2451/4424/5796 2442/459/5796 -f 2474/4446/5797 2514/4432/5797 2451/4425/5797 -f 2475/4445/5798 2474/4440/5798 2451/4424/5798 -f 2532/4434/5799 2572/4441/5799 2547/4427/5799 -f 2579/4429/5800 2614/4442/5800 2613/4421/5800 -f 2631/4447/5801 2649/4443/5801 2620/4422/5801 -f 2786/4437/5802 2803/4438/5802 2825/4419/5802 -f 2623/4215/5803 2453/4185/5803 2676/4123/5803 -f 2672/4152/5804 1689/1864/5804 2592/648/5804 -f 23/783/5805 58/211/5805 36/25/5805 -f 2163/4081/5806 2455/4200/5806 2255/4448/5806 -f 2408/4099/5807 1933/4216/5807 2829/3163/5807 -f 3461/270/5808 2768/662/5808 2808/4228/5808 -f 2311/3862/5809 2454/845/5809 2330/3729/5809 -f 2425/3192/5810 2427/4110/5810 2455/4200/5810 -f 2582/3079/5811 2622/4283/5811 2634/362/5811 -f 2964/527/5812 2984/2484/5812 2983/528/5812 -f 2501/2757/5813 2875/4449/5813 2524/2344/5813 -f 2464/1921/5814 1751/4242/5814 2446/1444/5814 -f 2671/2879/5815 2697/2542/5815 2524/2344/5815 -f 2696/953/5816 2253/699/5816 2239/3991/5816 -f 2614/4442/5817 2631/4447/5817 2620/4422/5817 -f 2803/4438/5818 2865/4450/5818 2259/3553/5818 -f 2128/4378/5819 1666/736/5819 2107/735/5819 -f 1792/3652/5820 2522/3651/5820 2275/4451/5820 -f 2623/4215/5821 2162/4037/5821 2675/4199/5821 -f 2706/3201/5822 2749/3057/5822 2705/4129/5822 -f 2422/2070/5823 2584/3877/5823 2479/4102/5823 -f 1028/3037/5824 2183/1718/5824 2816/2069/5824 -f 3030/2297/5825 2426/4111/5825 2425/3192/5825 -f 3295/4452/5826 3280/4453/5826 3242/3945/5826 -f 3243/2445/5827 3295/4452/5827 3242/3945/5827 -f 3404/4377/5828 1480/2932/5828 3372/4454/5828 -f 2413/4439/5829 2414/460/5829 2442/459/5829 -f 2495/4455/5830 2474/4440/5830 2475/4445/5830 -f 2495/4455/5831 2573/4456/5831 2474/4440/5831 -f 2474/4440/5832 2573/4456/5832 2532/4434/5832 -f 2572/4441/5833 2590/4457/5833 2579/4429/5833 -f 2579/4429/5834 2590/4457/5834 2614/4442/5834 -f 2631/4447/5835 2667/4458/5835 2649/4443/5835 -f 2667/4458/5836 2774/4459/5836 2649/4443/5836 -f 2649/4443/5837 2774/4459/5837 2716/4435/5837 -f 2813/3242/5838 2845/4104/5838 2792/1399/5838 -f 2705/4129/5839 2749/3057/5839 2748/4151/5839 -f 3464/20/5840 3446/22/5840 3484/2744/5840 -f 2776/1398/5841 2813/3242/5841 2792/1399/5841 -f 2813/3242/5842 2870/3091/5842 2845/4104/5842 -f 3084/95/5843 3124/3031/5843 2438/96/5843 -f 3013/4460/5844 3037/4461/5844 3012/2799/5844 -f 2911/2357/5845 2917/849/5845 2908/3510/5845 -f 3295/4452/5846 3294/4462/5846 3280/4453/5846 -f 2839/1640/5847 2875/4449/5847 2501/2757/5847 -f 2671/2879/5848 2524/2344/5848 2875/4449/5848 -f 1898/3035/5849 2852/2118/5849 2548/2117/5849 -f 2476/4463/5850 2475/4445/5850 2442/459/5850 -f 2476/4463/5851 2495/4455/5851 2475/4445/5851 -f 2532/4434/5852 2573/4456/5852 2572/4441/5852 -f 2572/4441/5853 2573/4456/5853 2590/4457/5853 -f 2716/4435/5854 2774/4459/5854 2741/4436/5854 -f 2774/4459/5855 2786/4437/5855 2741/4436/5855 -f 2895/3554/5856 2259/3553/5856 2865/4450/5856 -f 2641/4184/5857 2453/4185/5857 2623/4215/5857 -f 2750/733/5858 2762/4464/5858 2720/734/5858 -f 717/1991/5859 136/378/5859 160/661/5859 -f 2793/207/5860 2777/4193/5860 2762/208/5860 -f 2843/4164/5861 2885/4109/5861 2884/4187/5861 -f 1666/736/5862 1657/649/5862 1350/737/5862 -f 3013/4460/5863 3012/2799/5863 2975/4465/5863 -f 2892/4466/5864 2671/2879/5864 2875/4449/5864 -f 1939/4467/5865 2184/2880/5865 2671/2879/5865 -f 2414/460/5866 2150/1282/5866 1909/458/5866 -f 1778/726/5867 2305/3932/5867 2276/2298/5867 -f 2667/4458/5868 2729/4468/5868 2774/4459/5868 -f 2729/4468/5869 2717/4469/5869 2774/4459/5869 -f 2804/4470/5870 2803/4438/5870 2786/4437/5870 -f 2099/3456/5871 2882/2212/5871 2896/2462/5871 -f 2733/4167/5872 2750/733/5872 2721/732/5872 -f 2154/4471/5873 2184/2880/5873 1939/4467/5873 -f 2782/4218/5874 2186/3971/5874 2871/3978/5874 -f 2793/207/5875 2846/3243/5875 2777/4193/5875 -f 2847/4236/5876 2846/3243/5876 2794/4180/5876 -f 2456/3030/5877 2438/96/5877 3124/3031/5877 -f 2154/4471/5878 2164/2553/5878 2184/2880/5878 -f 1909/458/5879 2452/4177/5879 2442/459/5879 -f 1857/3446/5880 1856/3408/5880 1834/1865/5880 -f 2442/459/5881 2452/4177/5881 2476/4463/5881 -f 2533/4472/5882 2573/4456/5882 2495/4455/5882 -f 2580/4473/5883 2590/4457/5883 2573/4456/5883 -f 2632/4474/5884 2614/4442/5884 2590/4457/5884 -f 2632/4474/5885 2631/4447/5885 2614/4442/5885 -f 2650/4475/5886 2667/4458/5886 2631/4447/5886 -f 2632/4474/5887 2650/4475/5887 2631/4447/5887 -f 2803/4438/5888 2804/4470/5888 2865/4450/5888 -f 2241/3836/5889 2861/3926/5889 2158/1442/5889 -f 2109/4097/5890 1136/4100/5890 2799/4101/5890 -f 2720/734/5891 2762/4464/5891 2732/4304/5891 -f 3239/4476/5892 3254/4477/5892 1499/3237/5892 -f 1499/3230/5893 3223/4478/5893 3239/4479/5893 -f 2328/2459/5894 214/1716/5894 813/1957/5894 -f 960/2177/5895 2993/2176/5895 2486/4194/5895 -f 2496/4480/5896 2495/4455/5896 2476/4463/5896 -f 2496/4480/5897 2533/4472/5897 2495/4455/5897 -f 2533/4472/5898 2580/4473/5898 2573/4456/5898 -f 2606/3396/5899 2590/4457/5899 2580/4473/5899 -f 2606/3396/5900 2632/4474/5900 2590/4457/5900 -f 2804/4470/5901 2786/4437/5901 2774/4459/5901 -f 2804/4470/5902 2866/4019/5902 2865/4450/5902 -f 2865/4450/5903 2866/4019/5903 2895/3554/5903 -f 2777/4193/5904 2776/1398/5904 2762/208/5904 -f 2723/653/5905 2643/677/5905 2640/654/5905 -f 2795/4237/5906 2794/4180/5906 2778/4179/5906 -f 2160/4042/5907 2675/4199/5907 2162/4037/5907 -f 3309/4481/5908 3344/4482/5908 3229/4483/5908 -f 1933/4216/5909 2840/4273/5909 2626/4214/5909 -f 2417/4156/5910 2641/4184/5910 2840/4273/5910 -f 2640/654/5911 2643/677/5911 2879/679/5911 -f 1725/2220/5912 1734/2219/5912 1500/2569/5912 -f 2908/3510/5913 2916/851/5913 2907/2457/5913 -f 2540/4484/5914 2839/1640/5914 1897/858/5914 -f 2540/4484/5915 2875/4449/5915 2839/1640/5915 -f 1865/2971/5916 2671/2879/5916 2892/4466/5916 -f 2671/2879/5917 1865/2971/5917 1939/4467/5917 -f 1941/3492/5918 2778/4147/5918 2734/4168/5918 -f 2650/4475/5919 2729/4468/5919 2667/4458/5919 -f 2774/4459/5920 2717/4469/5920 2804/4470/5920 -f 2804/4470/5921 2805/4485/5921 2866/4019/5921 -f 3230/4486/5922 3309/4481/5922 3229/4483/5922 -f 1508/4253/5923 2840/4273/5923 1933/4216/5923 -f 2692/2671/5924 2656/4487/5924 2657/4488/5924 -f 2575/3627/5925 2109/4097/5925 1473/2666/5925 -f 3158/4489/5926 3157/4490/5926 3123/4491/5926 -f 3266/4492/5927 1476/3066/5927 1483/3098/5927 -f 2540/4484/5928 2892/4466/5928 2875/4449/5928 -f 2780/2714/5929 1689/1864/5929 2672/4152/5929 -f 2633/3372/5930 2632/4474/5930 2606/3396/5930 -f 2887/250/5931 602/3241/5931 1703/251/5931 -f 2301/3990/5932 2797/1717/5932 2328/2459/5932 -f 2797/1717/5933 214/1716/5933 2328/2459/5933 -f 2522/3651/5934 2538/3058/5934 2537/3051/5934 -f 1933/4216/5935 2623/4215/5935 2675/4199/5935 -f 2765/4182/5936 2723/653/5936 2601/2264/5936 -f 1483/3327/5937 1501/3326/5937 1725/4493/5937 -f 2986/2729/5938 3036/2801/5938 3011/4494/5938 -f 2737/2972/5939 1865/2971/5939 2892/4466/5939 -f 1909/458/5940 2433/3149/5940 2452/4177/5940 -f 2497/4495/5941 2476/4463/5941 2452/4177/5941 -f 2476/4463/5942 2497/4495/5942 2496/4480/5942 -f 2496/4480/5943 2534/4496/5943 2533/4472/5943 -f 2633/3372/5944 2650/4475/5944 2632/4474/5944 -f 2729/4468/5945 2742/4497/5945 2717/4469/5945 -f 2717/4469/5946 2805/4485/5946 2804/4470/5946 -f 2792/1399/5947 2791/239/5947 2731/1400/5947 -f 2163/4081/5948 2465/2145/5948 2436/2295/5948 -f 1675/2665/5949 2459/2071/5949 2422/2070/5949 -f 2838/1635/5950 1819/3744/5950 2019/1636/5950 -f 3266/4498/5951 1483/4499/5951 1725/4500/5951 -f 2928/4501/5952 2935/4502/5952 2920/4503/5952 -f 3268/4504/5953 3298/1735/5953 3284/1737/5953 -f 2985/4505/5954 2986/2729/5954 3011/4494/5954 -f 2737/2972/5955 2892/4466/5955 2540/4484/5955 -f 1725/2220/5956 1499/3230/5956 3254/4506/5956 -f 2459/2071/5957 1675/2665/5957 2735/263/5957 -f 2409/3150/5958 2433/3149/5958 1909/458/5958 -f 2497/4495/5959 2534/4496/5959 2496/4480/5959 -f 1856/4507/5960 2533/4472/5960 2534/4496/5960 -f 1856/4507/5961 2580/4473/5961 2533/4472/5961 -f 1856/4507/5962 1885/3397/5962 2580/4473/5962 -f 1885/3397/5963 2606/3396/5963 2580/4473/5963 -f 2633/3372/5964 2729/4468/5964 2650/4475/5964 -f 2742/4497/5965 2805/4485/5965 2717/4469/5965 -f 2036/3454/5966 2867/3464/5966 2075/3422/5966 -f 2796/4134/5967 2795/2348/5967 2751/4508/5967 -f 1307/2031/5968 2584/3877/5968 2112/3602/5968 -f 566/3014/5969 2376/4009/5969 2177/4023/5969 -f 3266/4492/5970 1725/2220/5970 3254/4506/5970 -f 3070/4509/5971 3081/4510/5971 3058/4172/5971 -f 2416/2911/5972 2540/4484/5972 1897/858/5972 -f 2769/669/5973 2737/2972/5973 2540/4484/5973 -f 3370/685/5974 3401/3140/5974 3359/4198/5974 -f 2433/3149/5975 2415/3148/5975 2452/4177/5975 -f 1834/4511/5976 1856/4507/5976 2534/4496/5976 -f 1950/3373/5977 2633/3372/5977 2606/3396/5977 -f 1899/3398/5978 1950/3373/5978 2606/3396/5978 -f 1997/4217/5979 2729/4468/5979 2633/3372/5979 -f 2196/3985/5980 2387/3431/5980 2151/3742/5980 -f 1111/1971/5981 3441/4512/5981 3462/1972/5981 -f 2301/3990/5982 2482/2327/5982 2797/1717/5982 -f 1676/3225/5983 1892/4150/5983 2417/4156/5983 -f 1099/3269/5984 2341/4513/5984 1849/3270/5984 -f 1500/4514/5985 1499/3231/5985 1725/4493/5985 -f 2766/681/5986 1897/858/5986 2669/857/5986 -f 2766/681/5987 2416/2911/5987 1897/858/5987 -f 2416/2911/5988 2769/669/5988 2540/4484/5988 -f 2779/3187/5989 1934/4012/5989 966/3334/5989 -f 2452/4177/5990 2477/2524/5990 2497/4495/5990 -f 2477/2524/5991 2478/2526/5991 2497/4495/5991 -f 2497/4495/5992 2478/2526/5992 2534/4496/5992 -f 2478/2526/5993 1834/4511/5993 2534/4496/5993 -f 1997/4217/5994 2743/2866/5994 2729/4468/5994 -f 2743/2866/5995 2742/4497/5995 2729/4468/5995 -f 2806/2868/5996 2805/4485/5996 2742/4497/5996 -f 2805/4485/5997 2837/2709/5997 2866/4019/5997 -f 2866/4019/5998 2880/2711/5998 2317/3953/5998 -f 3471/3576/5999 1363/3558/5999 1964/2128/5999 -f 1703/251/6000 2567/3106/6000 1769/252/6000 -f 2210/4112/6001 966/3334/6001 2888/4141/6001 -f 2482/2327/6002 2816/2069/6002 2797/1717/6002 -f 3452/2409/6003 3503/615/6003 3507/1858/6003 -f 2887/250/6004 2870/3091/6004 2813/3242/6004 -f 2884/4187/6005 1676/3225/6005 1686/3227/6005 -f 2694/2883/6006 2693/2670/6006 2658/2884/6006 -f 2435/3335/6007 966/3334/6007 2210/4112/6007 -f 3047/4515/6008 3088/4516/6008 3045/2277/6008 -f 3375/2513/6009 570/4517/6009 3385/2514/6009 -f 2794/4180/6010 2793/207/6010 2750/206/6010 -f 2443/848/6011 2477/2524/6011 2452/4177/6011 -f 2012/2349/6012 2853/4396/6012 2847/2350/6012 -f 1802/1363/6013 1788/1227/6013 1789/2707/6013 -f 2686/3371/6014 1997/4217/6014 2633/3372/6014 -f 2742/4497/6015 2743/2866/6015 2806/2868/6015 -f 2837/2709/6016 2805/4485/6016 2806/2868/6016 -f 2837/2709/6017 2880/2711/6017 2866/4019/6017 -f 2899/4240/6018 1611/4191/6018 1534/3131/6018 -f 2853/4396/6019 2055/3597/6019 2077/3599/6019 -f 2697/2542/6020 2184/2880/6020 2178/2552/6020 -f 2794/4180/6021 2846/3243/6021 2793/207/6021 -f 2526/4206/6022 2487/4205/6022 1007/4220/6022 -f 3059/3133/6023 3035/3135/6023 3036/2801/6023 -f 2769/669/6024 2467/289/6024 2737/2972/6024 -f 2737/2972/6025 2467/289/6025 1875/2973/6025 -f 2627/4286/6026 2662/2367/6026 2602/4136/6026 -f 1832/3764/6027 2838/3766/6027 2879/4518/6027 -f 2764/4076/6028 567/4413/6028 2196/3985/6028 -f 967/1517/6029 1890/4192/6029 1793/1518/6029 -f 2273/4011/6030 2210/4112/6030 2888/4141/6030 -f 3203/4519/6031 3217/4520/6031 3168/4521/6031 -f 3250/4522/6032 3249/4523/6032 3217/4520/6032 -f 3314/4524/6033 3332/1653/6033 3331/4525/6033 -f 3105/4526/6034 3121/4527/6034 3134/4528/6034 -f 2948/2728/6035 2975/4465/6035 2986/2729/6035 -f 3181/2775/6036 3158/4489/6036 3093/4529/6036 -f 3060/4530/6037 3105/4526/6037 3089/4531/6037 -f 3375/4532/6038 3406/2012/6038 570/2011/6038 -f 3284/1737/6039 3312/3154/6039 3297/4533/6039 -f 3267/4534/6040 3309/4481/6040 3230/4486/6040 -f 3092/2735/6041 3123/4491/6041 3091/1788/6041 -f 3052/4535/6042 3060/4530/6042 3089/4531/6042 -f 3116/4536/6043 3130/4537/6043 3129/4538/6043 -f 3018/2905/6044 3001/2963/6044 2991/1880/6044 -f 2992/1879/6045 3018/2905/6045 2991/1880/6045 -f 3017/4539/6046 3016/2961/6046 3001/2963/6046 -f 3420/4540/6047 3421/4212/6047 2469/3908/6047 -f 1677/3366/6048 1805/2467/6048 3274/3364/6048 -f 3423/4541/6049 3405/4542/6049 993/4543/6049 -f 3018/2905/6050 3017/4539/6050 3001/2963/6050 -f 3300/4544/6051 3299/4545/6051 3285/4546/6051 -f 3345/4547/6052 3344/4482/6052 3309/4481/6052 -f 1481/3085/6053 3150/3059/6053 1474/4548/6053 -f 3060/4530/6054 3090/4549/6054 3105/4526/6054 -f 3090/4549/6055 3121/4527/6055 3105/4526/6055 -f 3249/4523/6056 3285/4546/6056 3248/4550/6056 -f 3464/20/6057 3484/2744/6057 1197/3438/6057 -f 3037/4551/6058 3051/4552/6058 3050/4553/6058 -f 3178/4554/6059 3168/4521/6059 3233/4555/6059 -f 3122/4556/6060 3134/4528/6060 3121/4527/6060 -f 3134/4528/6061 3168/4521/6061 3133/4557/6061 -f 3203/4519/6062 3250/4522/6062 3217/4520/6062 -f 3250/4522/6063 3286/4558/6063 3249/4523/6063 -f 3028/2962/6064 3027/4559/6064 3000/4560/6064 -f 3286/4558/6065 3300/4544/6065 3249/4523/6065 -f 3315/4561/6066 3314/4562/6066 3300/4544/6066 -f 3063/898/6067 3094/4563/6067 3092/2735/6067 -f 3001/2963/6068 3000/4560/6068 2990/2560/6068 -f 3094/4563/6069 3093/4529/6069 3092/2735/6069 -f 3094/4563/6070 3181/2775/6070 3093/4529/6070 -f 3381/3068/6071 1480/3067/6071 1490/1412/6071 -f 3001/2963/6072 3028/2962/6072 3000/4560/6072 -f 3038/4564/6073 3060/4530/6073 3052/4535/6073 -f 3290/4565/6074 3274/3364/6074 3465/838/6074 -f 3274/3364/6075 3491/2468/6075 3465/838/6075 -f 3290/4565/6076 1109/4566/6076 3274/3364/6076 -f 3274/3364/6077 1109/4566/6077 1531/3427/6077 -f 3190/4567/6078 3197/2272/6078 3228/2446/6078 -f 3165/3027/6079 3261/4568/6079 3201/4569/6079 -f 3496/1097/6080 3290/4565/6080 3465/838/6080 -f 1109/4566/6081 3264/1115/6081 1631/4128/6081 -f 3236/1114/6082 1631/4128/6082 3264/1115/6082 -f 1730/3497/6083 1723/3156/6083 2949/3532/6083 -f 3061/4570/6084 3016/2961/6084 3017/4539/6084 -f 3061/4570/6085 3038/4564/6085 3016/2961/6085 -f 3061/4570/6086 3060/4530/6086 3038/4564/6086 -f 3264/1115/6087 1109/4566/6087 3290/4565/6087 -f 3122/4556/6088 3169/4571/6088 3134/4528/6088 -f 2982/4572/6089 3048/4140/6089 2981/4573/6089 -f 3217/4520/6090 3233/4555/6090 3168/4521/6090 -f 2980/2936/6091 3045/2277/6091 2998/2474/6091 -f 3496/1097/6092 3477/788/6092 3290/4565/6092 -f 1531/3427/6093 1109/4566/6093 1631/4128/6093 -f 3290/4565/6094 3477/788/6094 3264/1115/6094 -f 1493/234/6095 2469/730/6095 1494/729/6095 -f 3123/4491/6096 3157/4490/6096 3135/4444/6096 -f 2934/4574/6097 2938/4575/6097 2918/4576/6097 -f 3088/4516/6098 3087/1409/6098 3045/2277/6098 -f 3286/4558/6099 3315/4561/6099 3300/4544/6099 -f 3285/4546/6100 3299/4545/6100 3298/1735/6100 -f 27/397/6101 572/1962/6101 3350/3669/6101 -f 2990/2560/6102 2989/1884/6102 2429/1886/6102 -f 2402/2512/6103 2919/4577/6103 2403/2454/6103 -f 2136/1679/6104 1368/2889/6104 1367/3770/6104 -f 3013/4578/6105 3051/4579/6105 3037/4580/6105 -f 3364/2835/6106 781/2148/6106 2017/2157/6106 -f 3374/2436/6107 3346/4581/6107 3328/2437/6107 -f 3131/4582/6108 3166/4583/6108 3130/4537/6108 -f 3232/4584/6109 3233/4555/6109 3248/4550/6109 -f 3166/4583/6110 3176/4585/6110 3165/3027/6110 -f 3075/4586/6111 3082/4587/6111 3104/4588/6111 -f 3104/4588/6112 3131/4582/6112 3130/4537/6112 -f 3142/4589/6113 3101/1410/6113 3087/1409/6113 -f 3165/3027/6114 3176/4585/6114 3191/4590/6114 -f 3306/4591/6115 3382/2466/6115 3294/105/6115 -f 2965/4592/6116 2985/4593/6116 2984/4594/6116 -f 3296/4595/6117 3310/4596/6117 3267/4534/6117 -f 3260/4597/6118 3296/4595/6118 3267/4534/6118 -f 3178/4598/6119 3233/4599/6119 3232/4600/6119 -f 3165/3027/6120 3201/4569/6120 3154/3028/6120 -f 3028/2962/6121 3052/4535/6121 3026/4601/6121 -f 3376/4602/6122 3375/2513/6122 3347/4603/6122 -f 2927/3164/6123 2933/4604/6123 2945/3165/6123 -f 3027/4559/6124 3028/2962/6124 3026/4601/6124 -f 2990/2560/6125 3000/4560/6125 2989/1884/6125 -f 3331/4525/6126 3332/1653/6126 3350/3669/6126 -f 3129/4538/6127 3166/4583/6127 3155/3026/6127 -f 3048/4140/6128 3034/4171/6128 2981/4573/6128 -f 3163/4605/6129 3175/4606/6129 3101/1410/6129 -f 3414/2289/6130 3355/2288/6130 3393/4607/6130 -f 1491/2933/6131 3420/4376/6131 1492/4608/6131 -f 3090/4549/6132 3122/4556/6132 3121/4527/6132 -f 3142/4589/6133 3153/4609/6133 3101/1410/6133 -f 958/2507/6134 2921/3933/6134 2929/2508/6134 -f 1158/2171/6135 1415/2170/6135 1806/4610/6135 -f 3386/567/6136 331/525/6136 341/498/6136 -f 1806/4610/6137 3352/2347/6137 561/4611/6137 -f 3197/2272/6138 3190/4567/6138 3174/2273/6138 -f 3375/4532/6139 3376/2095/6139 3406/2012/6139 -f 3301/4612/6140 3315/4561/6140 3286/4558/6140 -f 3318/4613/6141 1652/3147/6141 1670/3245/6141 -f 3299/4545/6142 3314/4562/6142 3331/4614/6142 -f 3447/982/6143 708/2360/6143 1064/983/6143 -f 3300/4544/6144 3314/4562/6144 3299/4545/6144 -f 1415/2170/6145 3352/2347/6145 1806/4610/6145 -f 3352/2347/6146 3136/4615/6146 561/4611/6146 -f 3102/4616/6147 3070/4509/6147 3058/4172/6147 -f 3119/3865/6148 3132/3864/6148 3118/4617/6148 -f 3016/2961/6149 3038/4564/6149 3028/2962/6149 -f 3038/4564/6150 3052/4535/6150 3028/2962/6150 -f 3037/4461/6151 3050/2800/6151 3012/2799/6151 -f 3248/4550/6152 3285/4546/6152 3263/4618/6152 -f 3307/3738/6153 3327/4619/6153 3215/3739/6153 -f 3116/4620/6154 3129/4621/6154 3145/4622/6154 -f 3194/2549/6155 3218/548/6155 78/811/6155 -f 3232/4600/6156 3248/4623/6156 3247/4624/6156 -f 3362/4625/6157 3347/4603/6157 3312/3154/6157 -f 3282/4626/6158 3296/4595/6158 3260/4597/6158 -f 1329/2726/6159 282/217/6159 505/2602/6159 -f 3061/4570/6160 3106/4627/6160 3060/4530/6160 -f 3168/4521/6161 3178/4554/6161 3167/4628/6161 -f 3106/4627/6162 3090/4549/6162 3060/4530/6162 -f 2938/4629/6163 2934/4630/6163 2947/4631/6163 -f 3331/4525/6164 3350/3669/6164 3349/4632/6164 -f 3106/4627/6165 3122/4556/6165 3090/4549/6165 -f 3179/4633/6166 3169/4571/6166 3122/4556/6166 -f 3168/4521/6167 3167/4628/6167 3133/4557/6167 -f 3179/4633/6168 3203/4519/6168 3169/4571/6168 -f 3392/2994/6169 174/757/6169 3207/756/6169 -f 244/620/6170 2709/565/6170 3287/671/6170 -f 3143/4634/6171 3164/4635/6171 3114/4636/6171 -f 3215/3739/6172 3327/4619/6172 3295/4637/6172 -f 3269/4638/6173 3286/4558/6173 3250/4522/6173 -f 2989/1884/6174 3000/4560/6174 2976/2126/6174 -f 3269/4638/6175 3301/4612/6175 3286/4558/6175 -f 3071/4639/6176 3072/3861/6176 3103/4640/6176 -f 3163/4605/6177 3214/4209/6177 3197/4210/6177 -f 3285/4546/6178 3298/1735/6178 3263/4618/6178 -f 3203/4519/6179 3168/4521/6179 3169/4571/6179 -f 3244/4641/6180 3230/4486/6180 3200/4642/6180 -f 263/566/6181 2709/565/6181 244/620/6181 -f 3352/2347/6182 3238/2646/6182 3136/4615/6182 -f 3238/2646/6183 3221/4643/6183 3136/4615/6183 -f 1326/2758/6184 47/99/6184 3221/4271/6184 -f 3073/4644/6185 3116/4620/6185 3145/4622/6185 -f 2964/4645/6186 2965/4592/6186 2984/4594/6186 -f 3347/4603/6187 3362/4625/6187 3377/4646/6187 -f 2999/4647/6188 3013/4460/6188 2975/4465/6188 -f 3046/293/6189 3047/4515/6189 3045/2277/6189 -f 3238/2646/6190 3220/4648/6190 3221/4643/6190 -f 2962/294/6191 3046/293/6191 2980/2936/6191 -f 3181/2775/6192 3195/1932/6192 3158/4489/6192 -f 3299/4545/6193 3313/1736/6193 3298/1735/6193 -f 952/4649/6194 2921/3933/6194 958/2507/6194 -f 3072/4650/6195 3035/3135/6195 3073/4651/6195 -f 3011/4494/6196 3035/3135/6196 3072/4650/6196 -f 2985/4593/6197 3011/3595/6197 3025/3594/6197 -f 2984/4594/6198 2985/4593/6198 3025/3594/6198 -f 2966/4270/6199 2940/4423/6199 2921/3933/6199 -f 952/4649/6200 2966/4270/6200 2921/3933/6200 -f 3195/1932/6201 3194/4125/6201 3157/4490/6201 -f 2999/4647/6202 2975/4465/6202 2940/4423/6202 -f 3117/4652/6203 3131/4582/6203 3104/4588/6203 -f 3238/2646/6204 3319/4653/6204 3220/4648/6204 -f 2418/4654/6205 3076/4655/6205 2428/4656/6205 -f 3231/4657/6206 3232/4600/6206 3247/4624/6206 -f 3180/4658/6207 3179/4633/6207 3122/4556/6207 -f 3331/4614/6208 3330/4659/6208 3313/1736/6208 -f 2955/4660/6209 2965/4592/6209 2964/4645/6209 -f 3221/4643/6210 3220/4648/6210 3412/4661/6210 -f 3251/2385/6211 3250/4522/6211 3203/4519/6211 -f 3234/2993/6212 3251/2385/6212 3203/4519/6212 -f 3082/4587/6213 3117/4652/6213 3104/4588/6213 -f 3178/4598/6214 3232/4600/6214 3231/4657/6214 -f 3400/4662/6215 3401/3140/6215 575/3054/6215 -f 3299/4545/6216 3331/4614/6216 3313/1736/6216 -f 3330/4663/6217 3331/4525/6217 3349/4632/6217 -f 3071/4664/6218 3102/4616/6218 3058/4172/6218 -f 2929/2508/6219 2920/4503/6219 2910/2255/6219 -f 3229/4483/6220 3344/4482/6220 3259/4665/6220 -f 2988/4268/6221 3027/4559/6221 3026/4601/6221 -f 3251/2385/6222 3269/4638/6222 3250/4522/6222 -f 1269/2346/6223 3319/4653/6223 3238/2646/6223 -f 3319/4653/6224 3354/4666/6224 3220/4648/6224 -f 1648/3220/6225 1364/3219/6225 3412/4667/6225 -f 1645/2916/6226 1646/2967/6226 3208/3016/6226 -f 3245/4668/6227 3283/4669/6227 3261/4568/6227 -f 3027/4559/6228 2988/4268/6228 3000/4560/6228 -f 3373/4670/6229 3384/4671/6229 3361/3847/6229 -f 3216/337/6230 3245/4668/6230 3202/4672/6230 -f 2935/4502/6231 2934/4574/6231 2919/4577/6231 -f 3144/524/6232 3115/4673/6232 3102/4616/6232 -f 3382/2466/6233 3421/4212/6233 3404/4674/6233 -f 3220/4648/6234 3304/4675/6234 3412/4661/6234 -f 3312/3154/6235 3329/2435/6235 3297/4533/6235 -f 3145/523/6236 3155/3026/6236 3154/3028/6236 -f 3157/4490/6237 3170/4676/6237 3148/4677/6237 -f 2963/4678/6238 2973/4679/6238 2953/4680/6238 -f 2938/4629/6239 2947/4631/6239 2946/4681/6239 -f 2963/4678/6240 2953/4680/6240 2946/4682/6240 -f 3157/4490/6241 3148/4677/6241 3135/4444/6241 -f 3347/4603/6242 3375/2513/6242 3374/2436/6242 -f 3071/4664/6243 3058/4172/6243 3034/4171/6243 -f 1269/2346/6244 3407/4683/6244 3319/4653/6244 -f 3319/4653/6245 3407/4683/6245 3354/4666/6245 -f 3304/4675/6246 1648/4684/6246 3412/4661/6246 -f 2230/3974/6247 2261/1889/6247 2233/3983/6247 -f 3093/4529/6248 3158/4489/6248 3123/4491/6248 -f 570/4517/6249 3405/4542/6249 3385/2514/6249 -f 3202/4672/6250 3261/4568/6250 3165/3027/6250 -f 3114/4636/6251 3142/4589/6251 3088/4516/6251 -f 3167/4628/6252 3177/4685/6252 3156/4686/6252 -f 3262/336/6253 3283/4669/6253 3245/4668/6253 -f 1957/3832/6254 3391/4687/6254 3390/3833/6254 -f 3075/4586/6255 3104/4588/6255 3074/3134/6255 -f 1491/2933/6256 1492/4608/6256 1516/2964/6256 -f 3113/1220/6257 3139/3100/6257 3099/4688/6257 -f 3015/4689/6258 3014/4690/6258 2999/4647/6258 -f 2974/529/6259 2982/4572/6259 2954/4691/6259 -f 3354/4666/6260 3237/4692/6260 3220/4648/6260 -f 3220/4648/6261 3237/4692/6261 3304/4675/6261 -f 3153/4609/6262 3198/4693/6262 3163/4605/6262 -f 3405/4542/6263 3423/4541/6263 3385/2514/6263 -f 3059/3133/6264 3075/4586/6264 3074/3134/6264 -f 3014/4694/6265 3015/4695/6265 3013/4696/6265 -f 2725/4697/6266 2585/4247/6266 3384/4671/6266 -f 1872/1946/6267 1980/3289/6267 3506/1947/6267 -f 2975/4465/6268 3036/2801/6268 2986/2729/6268 -f 2954/4691/6269 2963/4678/6269 2946/4682/6269 -f 1369/2243/6270 243/2245/6270 1368/2889/6270 -f 3273/3515/6271 3407/3556/6271 1629/3229/6271 -f 3024/292/6272 3047/4515/6272 3046/293/6272 -f 2953/4680/6273 2962/294/6273 2961/2937/6273 -f 3118/4617/6274 3131/4582/6274 3117/4652/6274 -f 3372/2414/6275 3382/2466/6275 3404/4674/6275 -f 3093/4529/6276 3123/4491/6276 3092/2735/6276 -f 1993/1966/6277 2725/4698/6277 993/2786/6277 -f 3407/4683/6278 3183/4699/6278 3354/4666/6278 -f 3354/4666/6279 3183/4699/6279 3237/4692/6279 -f 3237/4692/6280 3353/4700/6280 3304/4675/6280 -f 3201/4569/6281 3200/4642/6281 3115/4673/6281 -f 3391/4687/6282 1957/3832/6282 3414/4701/6282 -f 3166/4583/6283 3165/3027/6283 3155/3026/6283 -f 3429/225/6284 2858/224/6284 2783/3021/6284 -f 3070/4509/6285 3143/4634/6285 3114/4636/6285 -f 3308/4702/6286 3327/4619/6286 3307/3738/6286 -f 559/1080/6287 353/1051/6287 1237/543/6287 -f 3423/4541/6288 3384/4671/6288 3373/4670/6288 -f 3407/4683/6289 3273/4703/6289 3183/4699/6289 -f 3353/4700/6290 1150/4704/6290 3304/4675/6290 -f 3403/4705/6291 1648/4684/6291 3304/4675/6291 -f 1150/4704/6292 3403/4705/6292 3304/4675/6292 -f 3403/4706/6293 3387/3042/6293 1648/4707/6293 -f 3330/4659/6294 3362/4625/6294 3312/3154/6294 -f 3034/4171/6295 3024/292/6295 2973/4679/6295 -f 3039/4708/6296 3017/4539/6296 3018/2905/6296 -f 3039/4708/6297 3061/4570/6297 3017/4539/6297 -f 1974/108/6298 3391/2413/6298 3413/2845/6298 -f 3391/4687/6299 3414/4701/6299 3413/4709/6299 -f 1477/3065/6300 3324/3108/6300 3367/3009/6300 -f 3200/4642/6301 3199/4710/6301 3164/4635/6301 -f 1976/4711/6302 3364/4712/6302 1489/4713/6302 -f 1652/3147/6303 3318/4613/6303 3334/3152/6303 -f 3259/4665/6304 3281/3740/6304 3215/3739/6304 -f 2918/4576/6305 2917/849/6305 2911/2357/6305 -f 2909/2415/6306 2918/4576/6306 2911/2357/6306 -f 3344/4482/6307 3308/4702/6307 3281/3740/6307 -f 3353/4700/6308 3237/4692/6308 3183/4699/6308 -f 2585/3101/6309 1993/1966/6309 1495/2913/6309 -f 3083/4714/6310 3106/4627/6310 3061/4570/6310 -f 853/4715/6311 851/1459/6311 2279/1800/6311 -f 3101/1410/6312 3175/4606/6312 3100/4127/6312 -f 3472/269/6313 2548/271/6313 3449/3612/6313 -f 3273/3515/6314 3334/3152/6314 3318/4613/6314 -f 1330/487/6315 492/276/6315 726/485/6315 -f 3393/4607/6316 2504/4716/6316 3414/2289/6316 -f 1976/109/6317 1977/2720/6317 3364/2835/6317 -f 3335/2429/6318 3336/314/6318 1669/862/6318 -f 3163/4605/6319 3259/4665/6319 3215/3739/6319 -f 2918/4576/6320 2938/4575/6320 2917/849/6320 -f 3170/1173/6321 3206/3209/6321 3193/4717/6321 -f 3170/4676/6322 3193/4718/6322 3148/4677/6322 -f 3423/4541/6323 2725/4697/6323 3384/4671/6323 -f 3356/4719/6324 3393/4607/6324 3355/2288/6324 -f 3411/4720/6325 3353/4700/6325 3183/4699/6325 -f 2936/3934/6326 2948/2728/6326 2955/3348/6326 -f 3163/4605/6327 3197/4210/6327 3175/4606/6327 -f 3360/4261/6328 3421/4212/6328 3382/2466/6328 -f 2975/4465/6329 3012/2799/6329 3036/2801/6329 -f 3412/4667/6330 1326/2758/6330 3221/4271/6330 -f 3413/4709/6331 2504/4721/6331 2712/4722/6331 -f 2724/1977/6332 3410/4723/6332 1977/2720/6332 -f 3073/4651/6333 3130/4537/6333 3116/4536/6333 -f 3273/4703/6334 3302/4724/6334 3183/4699/6334 -f 3183/4699/6335 3302/4724/6335 3411/4720/6335 -f 3214/4209/6336 3215/3739/6336 3243/4725/6336 -f 1921/3795/6337 3321/1941/6337 1922/1940/6337 -f 575/1738/6338 578/1468/6338 2500/1651/6338 -f 3414/4701/6339 2504/4721/6339 3413/4709/6339 -f 3252/2149/6340 781/2148/6340 3364/2835/6340 -f 3302/4726/6341 3273/3515/6341 3318/4613/6341 -f 2414/460/6342 2413/4439/6342 2407/1283/6342 -f 3411/4720/6343 3389/4727/6343 3353/4700/6343 -f 3321/1941/6344 3356/4728/6344 3355/1939/6344 -f 576/1654/6345 3301/4070/6345 3270/2518/6345 -f 2005/237/6346 1975/110/6346 1976/109/6346 -f 3413/2845/6347 2712/1976/6347 1958/232/6347 -f 3384/4671/6348 3422/3848/6348 3361/3847/6348 -f 1670/3245/6349 3302/4726/6349 3318/4613/6349 -f 3363/4729/6350 3320/4730/6350 3302/4724/6350 -f 3320/4730/6351 3411/4720/6351 3302/4724/6351 -f 3389/4727/6352 1150/4704/6352 3353/4700/6352 -f 1150/4704/6353 3040/4731/6353 3403/4705/6353 -f 3040/4732/6354 3351/4733/6354 3403/4706/6354 -f 3351/4733/6355 1694/2428/6355 3403/4706/6355 -f 3403/4706/6356 1694/2428/6356 1688/3018/6356 -f 3361/3847/6357 3383/3849/6357 3360/4261/6357 -f 2927/3164/6358 2938/4629/6358 2933/4604/6358 -f 3349/4734/6359 3348/4735/6359 3330/4659/6359 -f 3180/4658/6360 3203/4519/6360 3179/4633/6360 -f 3180/4658/6361 3234/2993/6361 3203/4519/6361 -f 2712/4722/6362 3410/4736/6362 2724/4737/6362 -f 3410/4723/6363 3316/4738/6363 3364/2835/6363 -f 1977/2720/6364 3410/4723/6364 3364/2835/6364 -f 3316/4738/6365 3252/2149/6365 3364/2835/6365 -f 2933/4604/6366 2938/4629/6366 2945/3165/6366 -f 2938/4629/6367 2946/4681/6367 2945/3165/6367 -f 3164/4635/6368 3199/4710/6368 3153/4609/6368 -f 3320/4730/6369 3389/4727/6369 3411/4720/6369 -f 2967/4739/6370 2966/4270/6370 2956/4740/6370 -f 3384/4671/6371 2585/4247/6371 3422/3848/6371 -f 3360/4261/6372 3382/2466/6372 3343/4741/6372 -f 2938/4575/6373 2927/850/6373 2917/849/6373 -f 3270/2387/6374 3269/4638/6374 3251/2385/6374 -f 3337/4093/6375 3321/1941/6375 1921/3795/6375 -f 3269/4638/6376 3270/2387/6376 3301/4612/6376 -f 2504/4721/6377 673/4742/6377 2712/4722/6377 -f 673/4742/6378 3410/4736/6378 2712/4722/6378 -f 3276/4743/6379 1572/4744/6379 3252/4745/6379 -f 3088/4516/6380 3142/4589/6380 3087/1409/6380 -f 3145/523/6381 3154/3028/6381 3144/524/6381 -f 3040/4731/6382 1150/4704/6382 3389/4727/6382 -f 3335/4746/6383 1694/4747/6383 3351/4748/6383 -f 3347/4603/6384 3374/2436/6384 3329/2435/6384 -f 3129/4538/6385 3130/4537/6385 3166/4583/6385 -f 3321/1941/6386 3337/4093/6386 3356/4728/6386 -f 3393/4607/6387 673/4749/6387 2504/4716/6387 -f 2946/4682/6388 2953/4680/6388 2945/4006/6388 -f 951/4750/6389 2966/4270/6389 952/4649/6389 -f 3154/3028/6390 3201/4569/6390 3144/524/6390 -f 507/4751/6391 3363/4752/6391 3302/4726/6391 -f 1474/4548/6392 3184/3130/6392 1481/3085/6392 -f 3385/2514/6393 3423/4541/6393 3373/4670/6393 -f 3261/4568/6394 3260/4597/6394 3201/4569/6394 -f 3246/335/6395 3231/4753/6395 3247/4754/6395 -f 3245/4668/6396 3261/4568/6396 3202/4672/6396 -f 572/1962/6397 3349/4632/6397 3350/3669/6397 -f 1492/2864/6398 2469/730/6398 1493/234/6398 -f 3337/4093/6399 3357/4755/6399 3356/4728/6399 -f 3356/4728/6400 3357/4755/6400 3393/4756/6400 -f 3357/4755/6401 3394/4757/6401 3393/4756/6401 -f 3393/4756/6402 3394/4757/6402 673/4742/6402 -f 673/4742/6403 3171/4758/6403 3410/4736/6403 -f 3410/4723/6404 2444/4759/6404 3316/4738/6404 -f 3316/4738/6405 3276/3070/6405 3252/2149/6405 -f 2940/4423/6406 2975/4465/6406 2948/2728/6406 -f 2940/4423/6407 2936/3934/6407 2921/3933/6407 -f 3092/2735/6408 3091/1788/6408 3054/1787/6408 -f 3192/2546/6409 3178/4554/6409 3231/4753/6409 -f 3222/367/6410 3363/4760/6410 507/328/6410 -f 3222/367/6411 3275/3428/6411 3320/4761/6411 -f 3363/4729/6412 3222/4762/6412 3320/4730/6412 -f 3219/4763/6413 3389/4727/6413 3320/4730/6413 -f 3271/4764/6414 3040/4731/6414 3389/4727/6414 -f 3040/4732/6415 3271/4765/6415 3351/4733/6415 -f 3271/4764/6416 3335/4766/6416 3351/4767/6416 -f 843/1500/6417 3388/1502/6417 894/1531/6417 -f 3192/2546/6418 3216/337/6418 3191/4590/6418 -f 3343/4741/6419 3382/2466/6419 3306/4591/6419 -f 3177/4685/6420 3178/4554/6420 3192/2546/6420 -f 3249/4523/6421 3300/4544/6421 3285/4546/6421 -f 3337/4093/6422 3338/4768/6422 3357/4755/6422 -f 673/4749/6423 1192/4769/6423 3171/4770/6423 -f 3171/4758/6424 2444/4771/6424 3410/4736/6424 -f 3170/1173/6425 92/1063/6425 3206/3209/6425 -f 3072/3861/6426 3073/4644/6426 3103/4640/6426 -f 3178/4554/6427 3177/4685/6427 3167/4628/6427 -f 3275/4772/6428 3219/4763/6428 3320/4730/6428 -f 3219/4763/6429 3271/4764/6429 3389/4727/6429 -f 3303/4773/6430 3317/4774/6430 3271/4764/6430 -f 3271/4764/6431 3317/4774/6431 3335/4766/6431 -f 326/1015/6432 1423/149/6432 170/1343/6432 -f 3133/4557/6433 3167/4628/6433 3146/3863/6433 -f 3297/4533/6434 3329/2435/6434 3311/4775/6434 -f 3288/2449/6435 3338/4768/6435 3337/4093/6435 -f 3357/4776/6436 3395/4777/6436 3394/4778/6436 -f 3395/4777/6437 1192/4769/6437 673/4749/6437 -f 3394/4778/6438 3395/4777/6438 673/4749/6438 -f 3171/4758/6439 3419/4779/6439 2444/4771/6439 -f 2953/4680/6440 2961/2937/6440 2945/4006/6440 -f 3014/4690/6441 3013/4460/6441 2999/4647/6441 -f 2925/3824/6442 2914/4780/6442 2915/3582/6442 -f 3335/2429/6443 3317/4781/6443 3336/314/6443 -f 3470/281/6444 3476/355/6444 3497/656/6444 -f 3103/4640/6445 3073/4644/6445 3145/4622/6445 -f 3084/4782/6446 3108/4783/6446 3124/4784/6446 -f 3149/2564/6447 3181/2775/6447 3094/4563/6447 -f 3224/4785/6448 1498/3195/6448 3196/4786/6448 -f 1889/2448/6449 3253/4298/6449 3288/2449/6449 -f 3253/4298/6450 3277/4787/6450 3288/2449/6450 -f 3288/2449/6451 3277/4787/6451 3338/4768/6451 -f 3419/4788/6452 3171/4770/6452 1192/4769/6452 -f 1562/3071/6453 3276/3070/6453 3316/4738/6453 -f 3115/4673/6454 3200/4642/6454 3143/4634/6454 -f 3144/524/6455 3201/4569/6455 3115/4673/6455 -f 3053/4789/6456 3061/4570/6456 3039/4708/6456 -f 3333/1547/6457 3219/4763/6457 3275/4772/6457 -f 3303/4773/6458 3271/4764/6458 3219/4763/6458 -f 3184/4790/6459 3196/3774/6459 1475/4791/6459 -f 2428/4656/6460 3076/4655/6460 3084/4782/6460 -f 3108/4792/6461 3150/3059/6461 3124/3031/6461 -f 3053/4789/6462 3083/4714/6462 3061/4570/6462 -f 3277/4787/6463 3322/4793/6463 3338/4768/6463 -f 3338/4768/6464 3322/4793/6464 3357/4755/6464 -f 3357/4755/6465 3365/4794/6465 3395/4795/6465 -f 2889/4796/6466 3419/4779/6466 1192/4797/6466 -f 2444/4771/6467 3409/4798/6467 3316/4799/6467 -f 3409/4798/6468 1562/4800/6468 3316/4799/6468 -f 953/2386/6469 3251/2385/6469 3234/2993/6469 -f 2920/4503/6470 2919/4577/6470 2402/2512/6470 -f 2939/2465/6471 2955/3348/6471 2964/527/6471 -f 531/4801/6472 3333/1547/6472 3275/4772/6472 -f 3333/1547/6473 3303/4773/6473 3219/4763/6473 -f 3118/4617/6474 3117/4652/6474 3082/4587/6474 -f 3000/4560/6475 2988/4268/6475 2976/2126/6475 -f 3076/4655/6476 3108/4783/6476 3084/4782/6476 -f 3107/4802/6477 3122/4556/6477 3106/4627/6477 -f 1831/937/6478 1599/939/6478 1839/2181/6478 -f 3277/4787/6479 3289/4803/6479 3322/4793/6479 -f 3322/4793/6480 3365/4794/6480 3357/4755/6480 -f 3365/4794/6481 3358/4804/6481 3395/4795/6481 -f 3358/4804/6482 2889/4796/6482 1192/4797/6482 -f 3395/4795/6483 3358/4804/6483 1192/4797/6483 -f 3419/4779/6484 3379/4805/6484 2444/4771/6484 -f 3422/3848/6485 2469/3908/6485 3421/4212/6485 -f 3191/4590/6486 3216/337/6486 3202/4672/6486 -f 3147/4806/6487 3180/4658/6487 3122/4556/6487 -f 3063/898/6488 987/1092/6488 3094/4563/6488 -f 3303/4773/6489 2279/4807/6489 3317/4774/6489 -f 2967/4739/6490 2988/4268/6490 2966/4270/6490 -f 3064/4808/6491 2418/4654/6491 2426/4809/6491 -f 3085/4810/6492 3076/4655/6492 2418/4654/6492 -f 3085/4810/6493 3108/4783/6493 3076/4655/6493 -f 3085/4810/6494 3109/4811/6494 3108/4783/6494 -f 3109/4811/6495 3150/4812/6495 3108/4783/6495 -f 3404/4377/6496 1491/2933/6496 1480/2932/6496 -f 3253/4298/6497 3289/4803/6497 3277/4787/6497 -f 3379/4805/6498 3409/4798/6498 2444/4771/6498 -f 3081/4510/6499 3047/4515/6499 3024/292/6499 -f 3048/4140/6500 3071/4664/6500 3034/4171/6500 -f 3204/1982/6501 3234/2993/6501 3180/4658/6501 -f 3333/1547/6502 531/4801/6502 866/1546/6502 -f 3388/1502/6503 3303/4773/6503 3333/1547/6503 -f 3388/1502/6504 853/1501/6504 3303/4773/6504 -f 3265/4813/6505 2639/4225/6505 1868/4290/6505 -f 3156/4686/6506 3166/4583/6506 3131/4582/6506 -f 3156/4686/6507 3176/4585/6507 3166/4583/6507 -f 2949/3532/6508 2968/4814/6508 2446/3567/6508 -f 3030/4158/6509 3064/4808/6509 2426/4809/6509 -f 3064/4808/6510 3085/4810/6510 2418/4654/6510 -f 3493/399/6511 3439/2120/6511 3440/2538/6511 -f 2639/4225/6512 3265/4813/6512 3253/4298/6512 -f 2660/3047/6513 2639/4225/6513 3253/4298/6513 -f 3253/4298/6514 3265/4813/6514 3289/4803/6514 -f 3358/4804/6515 2849/4815/6515 2889/4796/6515 -f 2661/4816/6516 1562/4800/6516 3409/4798/6516 -f 92/1063/6517 601/1428/6517 3206/3209/6517 -f 3081/4510/6518 3114/4636/6518 3088/4516/6518 -f 1511/3061/6519 3150/3059/6519 1481/3085/6519 -f 3167/4628/6520 3156/4686/6520 3132/3864/6520 -f 894/1531/6521 3388/1502/6521 3333/1547/6521 -f 3303/4773/6522 853/1501/6522 2279/4807/6522 -f 3077/4817/6523 3064/4808/6523 3030/4158/6523 -f 3151/4818/6524 1474/4819/6524 3109/4811/6524 -f 2768/3629/6525 2062/2136/6525 2808/2135/6525 -f 3322/4793/6526 3323/4820/6526 3365/4794/6526 -f 3323/4820/6527 3358/4804/6527 3365/4794/6527 -f 2889/4796/6528 3379/4805/6528 3419/4779/6528 -f 493/327/6529 3222/367/6529 507/328/6529 -f 3081/4510/6530 3088/4516/6530 3047/4515/6530 -f 2935/1577/6531 2939/1579/6531 2954/4821/6531 -f 2920/4503/6532 2935/4502/6532 2919/4577/6532 -f 3129/4621/6533 3155/4822/6533 3145/4622/6533 -f 2978/66/6534 2995/4368/6534 2205/3867/6534 -f 2298/64/6535 2978/66/6535 2205/3867/6535 -f 3020/4160/6536 3077/4817/6536 3030/4158/6536 -f 3151/4818/6537 3109/4811/6537 3085/4810/6537 -f 1474/4819/6538 3151/4818/6538 3184/4790/6538 -f 3265/4813/6539 3322/4793/6539 3289/4803/6539 -f 2849/4815/6540 3379/4805/6540 2889/4796/6540 -f 3350/3669/6541 33/446/6541 27/397/6541 -f 3229/4483/6542 3259/4665/6542 3198/4693/6542 -f 2955/4660/6543 2939/4823/6543 2928/4824/6543 -f 3115/4673/6544 3143/4634/6544 3070/4509/6544 -f 3215/3739/6545 3295/4637/6545 3243/4725/6545 -f 2919/4577/6546 2934/4574/6546 2918/4576/6546 -f 3048/4140/6547 3025/2485/6547 3049/4825/6547 -f 3077/4817/6548 3085/4810/6548 3064/4808/6548 -f 3177/4685/6549 3176/4585/6549 3156/4686/6549 -f 3324/4826/6550 3266/4827/6550 3255/4828/6550 -f 3323/4820/6551 3380/4829/6551 3358/4804/6551 -f 3358/4804/6552 3380/4829/6552 2849/4815/6552 -f 3380/4829/6553 1074/4830/6553 2849/4815/6553 -f 1074/4830/6554 3379/4805/6554 2849/4815/6554 -f 3379/4805/6555 1049/4831/6555 3409/4798/6555 -f 2661/4832/6556 3386/567/6556 1623/2948/6556 -f 1492/4608/6557 3420/4376/6557 2469/4833/6557 -f 3312/3154/6558 3347/4603/6558 3329/2435/6558 -f 3200/4642/6559 3229/4483/6559 3199/4710/6559 -f 2249/4204/6560 2341/4513/6560 1221/3916/6560 -f 3132/3864/6561 3156/4686/6561 3131/4582/6561 -f 3083/4714/6562 3107/4802/6562 3106/4627/6562 -f 3147/4806/6563 3122/4556/6563 3107/4802/6563 -f 3159/4834/6564 3085/4810/6564 3077/4817/6564 -f 3159/4834/6565 3151/4818/6565 3085/4810/6565 -f 3151/4818/6566 3196/3774/6566 3184/4790/6566 -f 3265/4813/6567 1860/4835/6567 3322/4793/6567 -f 3322/4793/6568 1860/4835/6568 3323/4820/6568 -f 3323/4820/6569 3366/4836/6569 3380/4829/6569 -f 1049/4831/6570 2661/4816/6570 3409/4798/6570 -f 1954/3640/6571 2610/3637/6571 2807/3949/6571 -f 2939/2465/6572 2974/529/6572 2954/4691/6572 -f 2910/2255/6573 2920/4503/6573 2402/2512/6573 -f 3377/4646/6574 3376/4602/6574 3347/4603/6574 -f 3263/4618/6575 3298/1735/6575 3268/4504/6575 -f 3003/4837/6576 3020/4160/6576 3002/4838/6576 -f 3110/4839/6577 3077/4817/6577 3020/4160/6577 -f 1860/3840/6578 1859/3794/6578 1853/2470/6578 -f 3246/335/6579 3247/4754/6579 3262/336/6579 -f 3283/4669/6580 3282/4626/6580 3260/4597/6580 -f 3110/4839/6581 3020/4160/6581 3003/4837/6581 -f 1860/4835/6582 1861/1915/6582 3323/4820/6582 -f 1074/4830/6583 2736/4840/6583 3379/4805/6583 -f 2736/4840/6584 1049/4831/6584 3379/4805/6584 -f 2983/528/6585 2982/4572/6585 2974/529/6585 -f 3153/4609/6586 3163/4605/6586 3101/1410/6586 -f 3377/2567/6587 571/2087/6587 3376/2095/6587 -f 3192/2546/6588 3231/4753/6588 3246/335/6588 -f 3015/4689/6589 2988/4268/6589 3026/4601/6589 -f 2994/4841/6590 3004/4842/6590 3003/4837/6590 -f 3004/4842/6591 3065/4843/6591 3003/4837/6591 -f 3065/4843/6592 3110/4839/6592 3003/4837/6592 -f 3110/4839/6593 3159/4834/6593 3077/4817/6593 -f 1916/3190/6594 1449/2725/6594 1264/2747/6594 -f 987/1092/6595 3149/2564/6595 3094/4563/6595 -f 1861/1915/6596 3366/4836/6596 3323/4820/6596 -f 3415/4844/6597 3380/4829/6597 3366/4836/6597 -f 3339/4845/6598 3415/4844/6598 3366/4836/6598 -f 3380/4829/6599 3415/4844/6599 1074/4830/6599 -f 2661/4832/6600 2709/565/6600 3386/567/6600 -f 3184/3130/6601 1475/4846/6601 1482/3129/6601 -f 613/2777/6602 3195/1932/6602 3181/2775/6602 -f 2427/4110/6603 2418/4847/6603 2428/4848/6603 -f 2995/4849/6604 3004/4842/6604 2994/4841/6604 -f 3185/3772/6605 3151/4818/6605 3159/4834/6605 -f 3185/3772/6606 3196/3774/6606 3151/4818/6606 -f 3200/4642/6607 3164/4635/6607 3143/4634/6607 -f 1326/2758/6608 3412/4667/6608 1364/3219/6608 -f 2736/4840/6609 1074/4830/6609 3415/4844/6609 -f 1049/4831/6610 189/4850/6610 2661/4816/6610 -f 2983/528/6611 3048/4140/6611 2982/4572/6611 -f 3132/3864/6612 3131/4582/6612 3118/4617/6612 -f 1562/3171/6613 2661/4832/6613 1623/2948/6613 -f 3029/578/6614 3018/2905/6614 955/2175/6614 -f 3029/578/6615 3039/4708/6615 3018/2905/6615 -f 3041/4851/6616 3065/4843/6616 3004/4842/6616 -f 3065/4843/6617 3096/4852/6617 3110/4839/6617 -f 3160/4853/6618 3159/4834/6618 3110/4839/6618 -f 2427/4166/6619 2426/4854/6619 2418/4855/6619 -f 3339/4845/6620 3396/2917/6620 3415/4844/6620 -f 1645/2916/6621 2736/4840/6621 3415/4844/6621 -f 3396/2917/6622 1645/2916/6622 3415/4844/6622 -f 2736/4840/6623 3235/4856/6623 1049/4831/6623 -f 3235/4856/6624 189/4850/6624 1049/4831/6624 -f 189/4857/6625 2709/565/6625 2661/4832/6625 -f 3104/4588/6626 3130/4537/6626 3073/4651/6626 -f 2940/4423/6627 2948/2728/6627 2936/3934/6627 -f 3135/4444/6628 3107/4802/6628 3083/4714/6628 -f 3135/4444/6629 3148/4677/6629 3107/4802/6629 -f 3148/4677/6630 3147/4806/6630 3107/4802/6630 -f 2978/4858/6631 3021/4859/6631 2995/4849/6631 -f 3021/4859/6632 3004/4842/6632 2995/4849/6632 -f 3021/4859/6633 3041/4851/6633 3004/4842/6633 -f 3096/4852/6634 3160/4853/6634 3110/4839/6634 -f 1704/2988/6635 1688/3018/6635 1694/2428/6635 -f 1861/1915/6636 3339/4845/6636 3366/4836/6636 -f 3208/3016/6637 2736/4840/6637 1645/2916/6637 -f 3344/4482/6638 3281/3740/6638 3259/4665/6638 -f 3262/336/6639 3245/4668/6639 3216/337/6639 -f 2956/4740/6640 2966/4270/6640 951/4750/6640 -f 3193/4718/6641 3180/4658/6641 3147/4806/6641 -f 3160/4853/6642 3185/3772/6642 3159/4834/6642 -f 1219/45/6643 1221/3854/6643 2341/43/6643 -f 3208/3016/6644 3235/4856/6644 2736/4840/6644 -f 3048/4140/6645 3049/4825/6645 3071/4664/6645 -f 3404/4674/6646 3421/4212/6646 3420/4540/6646 -f 2954/4691/6647 2946/4682/6647 2947/4860/6647 -f 2413/4439/6648 2306/3467/6648 2908/3466/6648 -f 2968/4861/6649 3005/4862/6649 2978/4858/6649 -f 3005/4862/6650 3021/4859/6650 2978/4858/6650 -f 3209/4863/6651 3185/3772/6651 3160/4853/6651 -f 3209/4863/6652 3224/3773/6652 3185/3772/6652 -f 3224/4785/6653 3239/4479/6653 3223/4478/6653 -f 3254/4864/6654 3255/4828/6654 3266/4827/6654 -f 1476/3066/6655 3266/4492/6655 3324/3108/6655 -f 3191/4590/6656 3202/4672/6656 3165/3027/6656 -f 3314/4524/6657 3315/4069/6657 3332/1653/6657 -f 2423/2030/6658 130/2032/6658 2575/3627/6658 -f 3163/4605/6659 3215/3739/6659 3214/4209/6659 -f 3249/4523/6660 3248/4550/6660 3233/4555/6660 -f 2912/4865/6661 2931/4866/6661 2930/4867/6661 -f 2931/4868/6662 2957/4869/6662 2949/3532/6662 -f 2930/4867/6663 2931/4866/6663 2949/4870/6663 -f 2949/4870/6664 2957/4871/6664 2968/4861/6664 -f 3041/4851/6665 3111/4872/6665 3065/4843/6665 -f 3111/4872/6666 3096/4852/6666 3065/4843/6666 -f 3209/4863/6667 3239/4873/6667 3224/3773/6667 -f 3239/4873/6668 3255/4828/6668 3254/4864/6668 -f 1181/418/6669 3467/1591/6669 812/2103/6669 -f 1181/4874/6670 1207/333/6670 3467/4875/6670 -f 3341/4876/6671 3340/4877/6671 3367/4878/6671 -f 3324/4826/6672 3341/4876/6672 3367/4878/6672 -f 2953/4680/6673 3024/292/6673 2962/294/6673 -f 3235/4856/6674 3418/4879/6674 189/4850/6674 -f 3418/4880/6675 3287/671/6675 189/4857/6675 -f 189/4857/6676 3287/671/6676 2709/565/6676 -f 2982/4572/6677 2981/4573/6677 2963/4678/6677 -f 3011/4494/6678 3036/2801/6678 3035/3135/6678 -f 2922/4881/6679 2912/4865/6679 2371/4882/6679 -f 2912/4865/6680 2922/4881/6680 2931/4866/6680 -f 2958/4883/6681 2968/4861/6681 2957/4871/6681 -f 2958/4883/6682 3005/4862/6682 2968/4861/6682 -f 3111/4872/6683 3160/4853/6683 3096/4852/6683 -f 3172/4884/6684 3209/4863/6684 3160/4853/6684 -f 3209/4863/6685 3255/4828/6685 3239/4873/6685 -f 3283/4669/6686 3260/4597/6686 3261/4568/6686 -f 1498/3195/6687 3223/4478/6687 1499/3230/6687 -f 1805/2467/6688 3491/2468/6688 3274/3364/6688 -f 2922/4881/6689 2371/4882/6689 2902/4885/6689 -f 1019/4886/6690 2922/4881/6690 2902/4885/6690 -f 3042/4887/6691 3005/4862/6691 2958/4883/6691 -f 3042/4887/6692 3021/4859/6692 3005/4862/6692 -f 3021/4859/6693 3055/4888/6693 3041/4851/6693 -f 3055/4888/6694 3078/4889/6694 3041/4851/6694 -f 3078/4889/6695 3111/4872/6695 3041/4851/6695 -f 3161/4890/6696 3160/4853/6696 3111/4872/6696 -f 3161/4890/6697 3172/4884/6697 3160/4853/6697 -f 3172/4884/6698 3225/4891/6698 3209/4863/6698 -f 3278/4892/6699 3255/4828/6699 3209/4863/6699 -f 3291/4893/6700 3324/4826/6700 3255/4828/6700 -f 3291/4893/6701 3341/4876/6701 3324/4826/6701 -f 3341/4876/6702 3368/4894/6702 3340/4877/6702 -f 2928/4501/6703 2936/3934/6703 2955/3348/6703 -f 458/4895/6704 3235/4856/6704 3208/3016/6704 -f 458/4895/6705 3418/4879/6705 3235/4856/6705 -f 216/3858/6706 2354/4086/6706 2337/3572/6706 -f 954/577/6707 3054/1787/6707 3029/578/6707 -f 3199/4710/6708 3229/4483/6708 3198/4693/6708 -f 2941/4896/6709 2931/4866/6709 2922/4881/6709 -f 2941/4896/6710 2957/4871/6710 2931/4866/6710 -f 2941/4896/6711 2958/4883/6711 2957/4871/6711 -f 3042/4887/6712 3055/4888/6712 3021/4859/6712 -f 3278/4892/6713 3291/4893/6713 3255/4828/6713 -f 3368/3112/6714 3397/2180/6714 1486/2877/6714 -f 3105/4526/6715 3134/4528/6715 3120/4897/6715 -f 3050/2800/6716 3059/3133/6716 3036/2801/6716 -f 3418/4880/6717 3095/682/6717 3287/671/6717 -f 3114/4636/6718 3164/4635/6718 3142/4589/6718 -f 3164/4635/6719 3153/4609/6719 3142/4589/6719 -f 2934/4630/6720 2935/1577/6720 2947/4631/6720 -f 2982/4572/6721 2963/4678/6721 2954/4691/6721 -f 3198/4693/6722 3259/4665/6722 3163/4605/6722 -f 2900/4898/6723 2913/4899/6723 1019/4886/6723 -f 2913/4899/6724 2922/4881/6724 1019/4886/6724 -f 3006/4900/6725 3042/4887/6725 2958/4883/6725 -f 3186/4901/6726 3225/4891/6726 3172/4884/6726 -f 3291/4893/6727 3398/4902/6727 3341/4876/6727 -f 3398/4902/6728 3368/4894/6728 3341/4876/6728 -f 3368/4894/6729 3398/4902/6729 3397/4903/6729 -f 3392/2994/6730 458/4895/6730 3208/3016/6730 -f 3103/522/6731 3144/524/6731 3102/4616/6731 -f 3102/4616/6732 3115/4673/6732 3070/4509/6732 -f 2937/4904/6733 2941/4896/6733 2922/4881/6733 -f 3066/4905/6734 3078/4889/6734 3055/4888/6734 -f 3137/4906/6735 3161/4890/6735 3111/4872/6735 -f 3225/4891/6736 3278/4892/6736 3209/4863/6736 -f 3291/4893/6737 3399/4907/6737 3398/4902/6737 -f 3392/2994/6738 3207/756/6738 458/4895/6738 -f 2935/1577/6739 2954/4821/6739 2947/4631/6739 -f 3071/4664/6740 3103/522/6740 3102/4616/6740 -f 3281/3740/6741 3308/4702/6741 3307/3738/6741 -f 3049/3596/6742 3072/3861/6742 3071/4639/6742 -f 3169/4571/6743 3168/4521/6743 3134/4528/6743 -f 3217/4520/6744 3249/4523/6744 3233/4555/6744 -f 2903/4908/6745 2913/4899/6745 2900/4898/6745 -f 2937/4904/6746 2922/4881/6746 2913/4899/6746 -f 3007/4909/6747 2958/4883/6747 2941/4896/6747 -f 3007/4909/6748 3006/4900/6748 2958/4883/6748 -f 3066/4905/6749 3055/4888/6749 3042/4887/6749 -f 3097/4910/6750 3078/4889/6750 3066/4905/6750 -f 3125/4911/6751 3111/4872/6751 3078/4889/6751 -f 3097/4910/6752 3125/4911/6752 3078/4889/6752 -f 3125/4911/6753 3137/4906/6753 3111/4872/6753 -f 3187/4912/6754 3186/4901/6754 3172/4884/6754 -f 3187/4912/6755 3210/4913/6755 3186/4901/6755 -f 3210/4913/6756 3225/4891/6756 3186/4901/6756 -f 3256/4914/6757 3278/4892/6757 3225/4891/6757 -f 1867/4245/6758 2639/4225/6758 2659/2882/6758 -f 458/4895/6759 3207/756/6759 3418/4879/6759 -f 1868/3776/6760 1859/3794/6760 3265/3839/6760 -f 3054/1787/6761 3039/4708/6761 3029/578/6761 -f 3054/1787/6762 3053/4789/6762 3039/4708/6762 -f 2937/4904/6763 2969/4915/6763 2941/4896/6763 -f 2969/4915/6764 3007/4909/6764 2941/4896/6764 -f 3007/4909/6765 3008/4916/6765 3006/4900/6765 -f 3006/4900/6766 3066/4905/6766 3042/4887/6766 -f 3256/4914/6767 3291/4893/6767 3278/4892/6767 -f 3399/4907/6768 3397/4903/6768 3398/4902/6768 -f 781/2148/6769 1572/2150/6769 2046/2265/6769 -f 3207/4917/6770 3378/2953/6770 3418/4880/6770 -f 3378/2953/6771 3408/4918/6771 3095/682/6771 -f 3418/4880/6772 3378/2953/6772 3095/682/6772 -f 3095/682/6773 3408/4918/6773 252/670/6773 -f 2970/4919/6774 2969/4915/6774 2937/4904/6774 -f 2950/4920/6775 2970/4919/6775 2937/4904/6775 -f 2970/4919/6776 3007/4909/6776 2969/4915/6776 -f 2970/4919/6777 3009/4921/6777 3007/4909/6777 -f 3009/4921/6778 3008/4916/6778 3007/4909/6778 -f 3008/4916/6779 3043/4922/6779 3006/4900/6779 -f 3043/4922/6780 3066/4905/6780 3006/4900/6780 -f 3043/4922/6781 3056/4923/6781 3066/4905/6781 -f 3056/4923/6782 3086/4924/6782 3066/4905/6782 -f 3086/4924/6783 3097/4910/6783 3066/4905/6783 -f 3126/4925/6784 3125/4911/6784 3097/4910/6784 -f 3126/4925/6785 3137/4906/6785 3125/4911/6785 -f 3256/4914/6786 3225/4891/6786 3210/4913/6786 -f 3416/4926/6787 3397/4903/6787 3399/4907/6787 -f 2261/1889/6788 2230/3974/6788 2193/847/6788 -f 2819/2954/6789 3378/2953/6789 3207/4917/6789 -f 3408/4918/6790 234/760/6790 252/670/6790 -f 2403/2454/6791 2919/4577/6791 2909/2415/6791 -f 3205/1983/6792 3204/1982/6792 3180/4658/6792 -f 2923/4927/6793 2913/4899/6793 2903/4908/6793 -f 2923/4927/6794 2937/4904/6794 2913/4899/6794 -f 2923/4927/6795 2950/4920/6795 2937/4904/6795 -f 3009/4928/6796 3022/4929/6796 3008/4930/6796 -f 3256/4914/6797 3325/4931/6797 3291/4893/6797 -f 3325/4931/6798 3399/4907/6798 3291/4893/6798 -f 3416/4932/6799 1487/2949/6799 3397/4933/6799 -f 3193/4718/6800 3205/1983/6800 3180/4658/6800 -f 1849/3270/6801 2249/4204/6801 2815/3250/6801 -f 3408/4918/6802 235/824/6802 234/760/6802 -f 572/1962/6803 3348/2147/6803 3349/4632/6803 -f 3149/2564/6804 614/2776/6804 3181/2775/6804 -f 2942/4934/6805 2950/4920/6805 2923/4927/6805 -f 2979/4935/6806 2970/4919/6806 2950/4920/6806 -f 2979/4935/6807 2996/4936/6807 2970/4919/6807 -f 3031/4937/6808 3009/4928/6808 2970/4938/6808 -f 2996/4939/6809 3031/4937/6809 2970/4938/6809 -f 3031/4937/6810 3022/4929/6810 3009/4928/6810 -f 3112/4940/6811 3097/4910/6811 3086/4924/6811 -f 3097/4941/6812 3112/4942/6812 3126/4943/6812 -f 3257/4944/6813 3256/4914/6813 3210/4913/6813 -f 3257/4944/6814 3292/4945/6814 3256/4914/6814 -f 3417/3056/6815 3416/4926/6815 3399/4907/6815 -f 3417/3056/6816 1164/4946/6816 3416/4926/6816 -f 1164/3224/6817 1487/2949/6817 3416/4932/6817 -f 1482/3129/6818 1475/4846/6818 1498/3195/6818 -f 3348/4735/6819 3362/4625/6819 3330/4659/6819 -f 1853/2470/6820 1861/4947/6820 1860/3840/6820 -f 2585/4247/6821 1693/4948/6821 1060/3907/6821 -f 2924/4949/6822 2923/4927/6822 2903/4908/6822 -f 2901/4155/6823 2924/4949/6823 2903/4908/6823 -f 2971/4950/6824 2979/4935/6824 2950/4920/6824 -f 2942/4951/6825 2971/4952/6825 2950/4953/6825 -f 3325/4931/6826 3417/3056/6826 3399/4907/6826 -f 2920/4503/6827 2936/3934/6827 2928/4501/6827 -f 2279/1800/6828 3336/314/6828 3317/4781/6828 -f 1656/2952/6829 3272/3004/6829 3378/2953/6829 -f 3272/3004/6830 3408/4918/6830 3378/2953/6830 -f 3272/3004/6831 235/824/6831 3408/4918/6831 -f 2929/2508/6832 2936/3934/6832 2920/4503/6832 -f 2963/4678/6833 2981/4573/6833 2973/4679/6833 -f 3313/1736/6834 3330/4659/6834 3312/3154/6834 -f 1488/713/6835 1487/2949/6835 1164/3224/6835 -f 2904/3186/6836 2924/4949/6836 2901/4155/6836 -f 3044/4954/6837 3031/4955/6837 2996/4936/6837 -f 3292/4945/6838 3325/4931/6838 3256/4914/6838 -f 1872/1946/6839 3510/1039/6839 1838/1038/6839 -f 586/1676/6840 993/2786/6840 3405/2019/6840 -f 2981/4573/6841 3034/4171/6841 2973/4679/6841 -f 3244/4641/6842 3267/4534/6842 3230/4486/6842 -f 2932/4956/6843 2923/4927/6843 2924/4949/6843 -f 2932/4956/6844 2942/4934/6844 2923/4927/6844 -f 2942/4951/6845 2951/4957/6845 2971/4952/6845 -f 2997/4958/6846 2979/4935/6846 2971/4950/6846 -f 2997/4958/6847 2996/4936/6847 2979/4935/6847 -f 2997/4958/6848 3044/4954/6848 2996/4936/6848 -f 3067/4959/6849 3086/4924/6849 3056/4923/6849 -f 3112/4940/6850 3127/4960/6850 3126/4925/6850 -f 3292/4945/6851 3369/4961/6851 3325/4931/6851 -f 2500/3055/6852 1164/4946/6852 3417/3056/6852 -f 955/2175/6853 3018/2905/6853 2439/2906/6853 -f 3272/3004/6854 1687/887/6854 235/824/6854 -f 3070/4509/6855 3114/4636/6855 3081/4510/6855 -f 1722/3157/6856 1748/3440/6856 2912/3439/6856 -f 3054/1787/6857 3062/1789/6857 3053/4789/6857 -f 3062/1789/6858 3083/4714/6858 3053/4789/6858 -f 2959/4962/6859 2997/4958/6859 2971/4950/6859 -f 3010/4963/6860 3044/4954/6860 2997/4958/6860 -f 3098/4964/6861 3086/4924/6861 3067/4959/6861 -f 3098/4964/6862 3112/4940/6862 3086/4924/6862 -f 3369/4961/6863 3417/3056/6863 3325/4931/6863 -f 3062/1789/6864 3135/4444/6864 3083/4714/6864 -f 3123/4491/6865 3135/4444/6865 3091/1788/6865 -f 1687/887/6866 217/875/6866 235/824/6866 -f 3199/4710/6867 3198/4693/6867 3153/4609/6867 -f 3267/4534/6868 3310/4596/6868 3309/4481/6868 -f 3310/4596/6869 3345/4547/6869 3309/4481/6869 -f 3177/4685/6870 3192/2546/6870 3176/4585/6870 -f 2905/4117/6871 2924/4949/6871 2904/3186/6871 -f 2942/4951/6872 2932/4965/6872 2951/4957/6872 -f 2959/4962/6873 2971/4950/6873 2951/4966/6873 -f 3010/4963/6874 3068/4967/6874 3044/4954/6874 -f 3127/4960/6875 3112/4940/6875 3098/4964/6875 -f 3293/4968/6876 3292/4945/6876 3257/4944/6876 -f 3258/4969/6877 3293/4968/6877 3257/4944/6877 -f 2976/2126/6878 2988/4268/6878 2967/4739/6878 -f 993/4543/6879 2725/4697/6879 3423/4541/6879 -f 3146/3863/6880 3167/4628/6880 3132/3864/6880 -f 3148/4677/6881 3193/4718/6881 3147/4806/6881 -f 2988/4268/6882 2999/4647/6882 2987/4269/6882 -f 3193/4718/6883 3206/4970/6883 3205/1983/6883 -f 2914/4780/6884 2932/4956/6884 2924/4949/6884 -f 2932/4965/6885 2943/4971/6885 2951/4957/6885 -f 2943/4972/6886 2959/4962/6886 2951/4966/6886 -f 3023/4973/6887 3010/4963/6887 2997/4958/6887 -f 3400/4662/6888 3417/3056/6888 3369/4961/6888 -f 3192/2546/6889 3191/4590/6889 3176/4585/6889 -f 3374/2436/6890 3385/2514/6890 3373/4670/6890 -f 3024/292/6891 3058/4172/6891 3081/4510/6891 -f 2919/4577/6892 2918/4576/6892 2909/2415/6892 -f 2988/4268/6893 3015/4689/6893 2999/4647/6893 -f 2905/4117/6894 2914/4780/6894 2924/4949/6894 -f 2959/4962/6895 3023/4973/6895 2997/4958/6895 -f 3079/4974/6896 3098/4964/6896 3067/4959/6896 -f 3127/4960/6897 3098/4964/6897 3138/4975/6897 -f 3326/166/6898 3292/4945/6898 3293/4968/6898 -f 3326/166/6899 3369/4961/6899 3292/4945/6899 -f 3359/4198/6900 3400/4662/6900 3369/4961/6900 -f 575/3054/6901 3417/3056/6901 3400/4662/6901 -f 1056/3478/6902 561/2361/6902 3136/3530/6902 -f 2965/2730/6903 2986/2729/6903 2985/4505/6903 -f 3063/898/6904 3092/2735/6904 954/577/6904 -f 3069/4976/6905 3010/4963/6905 3023/4973/6905 -f 3069/4976/6906 3068/4967/6906 3010/4963/6906 -f 3158/4489/6907 3195/1932/6907 3157/4490/6907 -f 3260/4597/6908 3267/4534/6908 3244/4641/6908 -f 1474/4819/6909 3150/4812/6909 3109/4811/6909 -f 2585/3101/6910 2725/4698/6910 1993/1966/6910 -f 3374/2436/6911 3373/4670/6911 3346/4581/6911 -f 3157/4490/6912 3194/4125/6912 3170/4676/6912 -f 2932/4965/6913 2944/2230/6913 2943/4971/6913 -f 2952/69/6914 2959/4962/6914 2943/4972/6914 -f 2952/69/6915 2972/68/6915 2959/4962/6915 -f 2972/68/6916 3023/4973/6916 2959/4962/6916 -f 3099/4688/6917 3098/4964/6917 3079/4974/6917 -f 3099/4688/6918 3139/3100/6918 3098/4964/6918 -f 3098/4964/6919 3139/3100/6919 3138/4975/6919 -f 3401/3140/6920 3400/4662/6920 3359/4198/6920 -f 3074/3134/6921 3073/4651/6921 3035/3135/6921 -f 2987/4269/6922 2999/4647/6922 2940/4423/6922 -f 331/525/6923 3386/567/6923 263/566/6923 -f 2973/4679/6924 3024/292/6924 2953/4680/6924 -f 3260/4597/6925 3244/4641/6925 3201/4569/6925 -f 3074/3134/6926 3104/4588/6926 3073/4651/6926 -f 3201/4569/6927 3244/4641/6927 3200/4642/6927 -f 2915/3582/6928 2914/4780/6928 2905/4117/6928 -f 2914/4780/6929 2925/3824/6929 2932/4956/6929 -f 2932/4965/6930 2925/2228/6930 2944/2230/6930 -f 2952/69/6931 2943/4972/6931 2944/3743/6931 -f 3032/3388/6932 3023/4973/6932 2972/68/6932 -f 3032/3388/6933 3069/4976/6933 3023/4973/6933 -f 3139/3100/6934 3162/4977/6934 3138/4975/6934 -f 3305/167/6935 3258/4969/6935 3240/3903/6935 -f 3305/167/6936 3293/4968/6936 3258/4969/6936 -f 3326/166/6937 3359/4198/6937 3369/4961/6937 -f 1688/3018/6938 3387/3042/6938 3403/4706/6938 -f 3230/4486/6939 3229/4483/6939 3200/4642/6939 -f 2906/2458/6940 2915/3582/6940 2905/4117/6940 -f 3033/67/6941 3032/3388/6941 2972/68/6941 -f 3032/3388/6942 3080/3676/6942 3069/4976/6942 -f 3139/3100/6943 3128/1219/6943 3162/4977/6943 -f 3305/167/6944 3326/166/6944 3293/4968/6944 -f 1478/2828/6945 3367/3009/6945 1486/2877/6945 diff --git a/libs/potree/resources/models/stanford_bunny_reduced.ply b/libs/potree/resources/models/stanford_bunny_reduced.ply deleted file mode 100644 index 125ddb3..0000000 Binary files a/libs/potree/resources/models/stanford_bunny_reduced.ply and /dev/null differ diff --git a/libs/potree/resources/shapefiles/south_sorvilier.dbf b/libs/potree/resources/shapefiles/south_sorvilier.dbf deleted file mode 100644 index d8d8f35..0000000 Binary files a/libs/potree/resources/shapefiles/south_sorvilier.dbf and /dev/null differ diff --git a/libs/potree/resources/shapefiles/south_sorvilier.shp b/libs/potree/resources/shapefiles/south_sorvilier.shp deleted file mode 100644 index 89cece3..0000000 Binary files a/libs/potree/resources/shapefiles/south_sorvilier.shp and /dev/null differ diff --git a/libs/potree/resources/textures/LICENSE b/libs/potree/resources/textures/LICENSE deleted file mode 100644 index a73899e..0000000 --- a/libs/potree/resources/textures/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ - - - -brick_pavement.jpg: -http://www.wildtextures.com/terms-of-use/ -============================== -All textures at wildtextures.com are completely free for both, personal and commercial use, however you can’t: - -host textures for download on any other website or server, -direct link to texture file from any other website ( however you can link to texture page ), -sell them as a stock materials, -============================== - - - - - - - - - - - diff --git a/libs/potree/resources/textures/brick_pavement.jpg b/libs/potree/resources/textures/brick_pavement.jpg deleted file mode 100644 index 69808ed..0000000 Binary files a/libs/potree/resources/textures/brick_pavement.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/basic_1.jpg b/libs/potree/resources/textures/matcap/basic_1.jpg deleted file mode 100644 index 7700ec1..0000000 Binary files a/libs/potree/resources/textures/matcap/basic_1.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/basic_2.jpg b/libs/potree/resources/textures/matcap/basic_2.jpg deleted file mode 100644 index 67b9deb..0000000 Binary files a/libs/potree/resources/textures/matcap/basic_2.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/basic_dark.jpg b/libs/potree/resources/textures/matcap/basic_dark.jpg deleted file mode 100644 index f64424e..0000000 Binary files a/libs/potree/resources/textures/matcap/basic_dark.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/basic_side.jpg b/libs/potree/resources/textures/matcap/basic_side.jpg deleted file mode 100644 index 7d6b09b..0000000 Binary files a/libs/potree/resources/textures/matcap/basic_side.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/blender_matcap_license.txt b/libs/potree/resources/textures/matcap/blender_matcap_license.txt deleted file mode 100644 index 9432fa8..0000000 --- a/libs/potree/resources/textures/matcap/blender_matcap_license.txt +++ /dev/null @@ -1,5 +0,0 @@ -These matcap images are licensed as CC0 or public domain. - -Thanks to the Blender community for contributing these matcaps. - -(Matcap images from /Blender/2.80/datafiles/studiolights/matcap/*") diff --git a/libs/potree/resources/textures/matcap/ceramic_dark.jpg b/libs/potree/resources/textures/matcap/ceramic_dark.jpg deleted file mode 100644 index f61f257..0000000 Binary files a/libs/potree/resources/textures/matcap/ceramic_dark.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/ceramic_lightbulb.jpg b/libs/potree/resources/textures/matcap/ceramic_lightbulb.jpg deleted file mode 100644 index 4ecbcfe..0000000 Binary files a/libs/potree/resources/textures/matcap/ceramic_lightbulb.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/check_normal+y.jpg b/libs/potree/resources/textures/matcap/check_normal+y.jpg deleted file mode 100644 index 6965940..0000000 Binary files a/libs/potree/resources/textures/matcap/check_normal+y.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/check_rim_dark.jpg b/libs/potree/resources/textures/matcap/check_rim_dark.jpg deleted file mode 100644 index f8f5510..0000000 Binary files a/libs/potree/resources/textures/matcap/check_rim_dark.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/check_rim_light.jpg b/libs/potree/resources/textures/matcap/check_rim_light.jpg deleted file mode 100644 index e3703d9..0000000 Binary files a/libs/potree/resources/textures/matcap/check_rim_light.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/clay_brown.jpg b/libs/potree/resources/textures/matcap/clay_brown.jpg deleted file mode 100644 index f1f5c4d..0000000 Binary files a/libs/potree/resources/textures/matcap/clay_brown.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/clay_muddy.jpg b/libs/potree/resources/textures/matcap/clay_muddy.jpg deleted file mode 100644 index aa5002b..0000000 Binary files a/libs/potree/resources/textures/matcap/clay_muddy.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/clay_studio.jpg b/libs/potree/resources/textures/matcap/clay_studio.jpg deleted file mode 100644 index e3675a6..0000000 Binary files a/libs/potree/resources/textures/matcap/clay_studio.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/contours_1.jpg b/libs/potree/resources/textures/matcap/contours_1.jpg deleted file mode 100644 index 49e478b..0000000 Binary files a/libs/potree/resources/textures/matcap/contours_1.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/contours_2.jpg b/libs/potree/resources/textures/matcap/contours_2.jpg deleted file mode 100644 index 2f1d94b..0000000 Binary files a/libs/potree/resources/textures/matcap/contours_2.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/contours_3.jpg b/libs/potree/resources/textures/matcap/contours_3.jpg deleted file mode 100644 index aa5e4ab..0000000 Binary files a/libs/potree/resources/textures/matcap/contours_3.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/jade.jpg b/libs/potree/resources/textures/matcap/jade.jpg deleted file mode 100644 index 0db21ce..0000000 Binary files a/libs/potree/resources/textures/matcap/jade.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/matcap.jpg b/libs/potree/resources/textures/matcap/matcap.jpg deleted file mode 100644 index 559016e..0000000 Binary files a/libs/potree/resources/textures/matcap/matcap.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/metal_anisotropic.jpg b/libs/potree/resources/textures/matcap/metal_anisotropic.jpg deleted file mode 100644 index 4356f62..0000000 Binary files a/libs/potree/resources/textures/matcap/metal_anisotropic.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/metal_carpaint.jpg b/libs/potree/resources/textures/matcap/metal_carpaint.jpg deleted file mode 100644 index a6a06da..0000000 Binary files a/libs/potree/resources/textures/matcap/metal_carpaint.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/metal_lead.jpg b/libs/potree/resources/textures/matcap/metal_lead.jpg deleted file mode 100644 index 7d4131d..0000000 Binary files a/libs/potree/resources/textures/matcap/metal_lead.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/metal_shiny.jpg b/libs/potree/resources/textures/matcap/metal_shiny.jpg deleted file mode 100644 index 8569b92..0000000 Binary files a/libs/potree/resources/textures/matcap/metal_shiny.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/pearl.jpg b/libs/potree/resources/textures/matcap/pearl.jpg deleted file mode 100644 index 1317fbb..0000000 Binary files a/libs/potree/resources/textures/matcap/pearl.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/reflection_check_horizontal.jpg b/libs/potree/resources/textures/matcap/reflection_check_horizontal.jpg deleted file mode 100644 index c4bf4a4..0000000 Binary files a/libs/potree/resources/textures/matcap/reflection_check_horizontal.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/reflection_check_vertical.jpg b/libs/potree/resources/textures/matcap/reflection_check_vertical.jpg deleted file mode 100644 index 86bf33d..0000000 Binary files a/libs/potree/resources/textures/matcap/reflection_check_vertical.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/resin.jpg b/libs/potree/resources/textures/matcap/resin.jpg deleted file mode 100644 index 90fdc47..0000000 Binary files a/libs/potree/resources/textures/matcap/resin.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/skin.jpg b/libs/potree/resources/textures/matcap/skin.jpg deleted file mode 100644 index ab42a97..0000000 Binary files a/libs/potree/resources/textures/matcap/skin.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/matcap/toon.jpg b/libs/potree/resources/textures/matcap/toon.jpg deleted file mode 100644 index b12ba47..0000000 Binary files a/libs/potree/resources/textures/matcap/toon.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/navigation/B.png b/libs/potree/resources/textures/navigation/B.png deleted file mode 100644 index 510ec89..0000000 Binary files a/libs/potree/resources/textures/navigation/B.png and /dev/null differ diff --git a/libs/potree/resources/textures/navigation/D.png b/libs/potree/resources/textures/navigation/D.png deleted file mode 100644 index 2d3a51f..0000000 Binary files a/libs/potree/resources/textures/navigation/D.png and /dev/null differ diff --git a/libs/potree/resources/textures/navigation/F.png b/libs/potree/resources/textures/navigation/F.png deleted file mode 100644 index 8aec1b2..0000000 Binary files a/libs/potree/resources/textures/navigation/F.png and /dev/null differ diff --git a/libs/potree/resources/textures/navigation/L.png b/libs/potree/resources/textures/navigation/L.png deleted file mode 100644 index 4a838a1..0000000 Binary files a/libs/potree/resources/textures/navigation/L.png and /dev/null differ diff --git a/libs/potree/resources/textures/navigation/R.png b/libs/potree/resources/textures/navigation/R.png deleted file mode 100644 index f9f16b8..0000000 Binary files a/libs/potree/resources/textures/navigation/R.png and /dev/null differ diff --git a/libs/potree/resources/textures/navigation/U.png b/libs/potree/resources/textures/navigation/U.png deleted file mode 100644 index 9a9c377..0000000 Binary files a/libs/potree/resources/textures/navigation/U.png and /dev/null differ diff --git a/libs/potree/resources/textures/skybox/nx.jpg b/libs/potree/resources/textures/skybox/nx.jpg deleted file mode 100644 index c10ba98..0000000 Binary files a/libs/potree/resources/textures/skybox/nx.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/skybox/ny.jpg b/libs/potree/resources/textures/skybox/ny.jpg deleted file mode 100644 index 729b03c..0000000 Binary files a/libs/potree/resources/textures/skybox/ny.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/skybox/nz.jpg b/libs/potree/resources/textures/skybox/nz.jpg deleted file mode 100644 index db4119a..0000000 Binary files a/libs/potree/resources/textures/skybox/nz.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/skybox/px.jpg b/libs/potree/resources/textures/skybox/px.jpg deleted file mode 100644 index c6e77ae..0000000 Binary files a/libs/potree/resources/textures/skybox/px.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/skybox/py.jpg b/libs/potree/resources/textures/skybox/py.jpg deleted file mode 100644 index 6cf7e02..0000000 Binary files a/libs/potree/resources/textures/skybox/py.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/skybox/pz.jpg b/libs/potree/resources/textures/skybox/pz.jpg deleted file mode 100644 index 76b0db0..0000000 Binary files a/libs/potree/resources/textures/skybox/pz.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/skybox/skyboxsun25degtest.txt b/libs/potree/resources/textures/skybox/skyboxsun25degtest.txt deleted file mode 100644 index 9e47547..0000000 --- a/libs/potree/resources/textures/skybox/skyboxsun25degtest.txt +++ /dev/null @@ -1 +0,0 @@ -http://reije081.home.xs4all.nl/skyboxes/ diff --git a/libs/potree/resources/textures/skybox2/README.TXT b/libs/potree/resources/textures/skybox2/README.TXT deleted file mode 100644 index 680005e..0000000 --- a/libs/potree/resources/textures/skybox2/README.TXT +++ /dev/null @@ -1,15 +0,0 @@ -THIS SKY WAS UPDATED AT THE 27TH -THE ORIG HAD SOME ERRORS - -MIRAMAR -high res 1024^2 environment map -ships as TGA. - - -By Jockum Skoglund aka hipshot -hipshot@zfight.com -www.zfight.com -Stockholm, 2005 08 25 - - -Modify however you like, just cred me for my work, maybe link to my page. diff --git a/libs/potree/resources/textures/skybox2/nx.jpg b/libs/potree/resources/textures/skybox2/nx.jpg deleted file mode 100644 index 8b4c1e4..0000000 Binary files a/libs/potree/resources/textures/skybox2/nx.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/skybox2/ny.jpg b/libs/potree/resources/textures/skybox2/ny.jpg deleted file mode 100644 index 1a73dd0..0000000 Binary files a/libs/potree/resources/textures/skybox2/ny.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/skybox2/nz.jpg b/libs/potree/resources/textures/skybox2/nz.jpg deleted file mode 100644 index 60e85ef..0000000 Binary files a/libs/potree/resources/textures/skybox2/nz.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/skybox2/px.jpg b/libs/potree/resources/textures/skybox2/px.jpg deleted file mode 100644 index c8c1165..0000000 Binary files a/libs/potree/resources/textures/skybox2/px.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/skybox2/py.jpg b/libs/potree/resources/textures/skybox2/py.jpg deleted file mode 100644 index eea9b07..0000000 Binary files a/libs/potree/resources/textures/skybox2/py.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/skybox2/pz.jpg b/libs/potree/resources/textures/skybox2/pz.jpg deleted file mode 100644 index 954ed86..0000000 Binary files a/libs/potree/resources/textures/skybox2/pz.jpg and /dev/null differ diff --git a/libs/potree/resources/textures/skyboxsun25degtest.txt b/libs/potree/resources/textures/skyboxsun25degtest.txt deleted file mode 100644 index 9e47547..0000000 --- a/libs/potree/resources/textures/skyboxsun25degtest.txt +++ /dev/null @@ -1 +0,0 @@ -http://reije081.home.xs4all.nl/skyboxes/ diff --git a/libs/potree/sidebar.html b/libs/potree/sidebar.html deleted file mode 100644 index 559e04a..0000000 --- a/libs/potree/sidebar.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - diff --git a/libs/potree/workers/2.0/DecoderWorker.js b/libs/potree/workers/2.0/DecoderWorker.js deleted file mode 100644 index 6d971aa..0000000 --- a/libs/potree/workers/2.0/DecoderWorker.js +++ /dev/null @@ -1,303 +0,0 @@ -/** - * Some types of possible point attribute data formats - * - * @class - */ -const PointAttributeTypes = { - DATA_TYPE_DOUBLE: {ordinal: 0, name: "double", size: 8}, - DATA_TYPE_FLOAT: {ordinal: 1, name: "float", size: 4}, - DATA_TYPE_INT8: {ordinal: 2, name: "int8", size: 1}, - DATA_TYPE_UINT8: {ordinal: 3, name: "uint8", size: 1}, - DATA_TYPE_INT16: {ordinal: 4, name: "int16", size: 2}, - DATA_TYPE_UINT16: {ordinal: 5, name: "uint16", size: 2}, - DATA_TYPE_INT32: {ordinal: 6, name: "int32", size: 4}, - DATA_TYPE_UINT32: {ordinal: 7, name: "uint32", size: 4}, - DATA_TYPE_INT64: {ordinal: 8, name: "int64", size: 8}, - DATA_TYPE_UINT64: {ordinal: 9, name: "uint64", size: 8} -}; - -let i = 0; -for (let obj in PointAttributeTypes) { - PointAttributeTypes[i] = PointAttributeTypes[obj]; - i++; -} - - -class PointAttribute{ - - constructor(name, type, numElements){ - this.name = name; - this.type = type; - this.numElements = numElements; - this.byteSize = this.numElements * this.type.size; - this.description = ""; - this.range = [Infinity, -Infinity]; - } - -} -PointAttribute.POSITION_CARTESIAN = new PointAttribute( - "POSITION_CARTESIAN", PointAttributeTypes.DATA_TYPE_FLOAT, 3); - -PointAttribute.RGBA_PACKED = new PointAttribute( - "COLOR_PACKED", PointAttributeTypes.DATA_TYPE_INT8, 4); - -PointAttribute.COLOR_PACKED = PointAttribute.RGBA_PACKED; - -PointAttribute.RGB_PACKED = new PointAttribute( - "COLOR_PACKED", PointAttributeTypes.DATA_TYPE_INT8, 3); - -PointAttribute.NORMAL_FLOATS = new PointAttribute( - "NORMAL_FLOATS", PointAttributeTypes.DATA_TYPE_FLOAT, 3); - -PointAttribute.INTENSITY = new PointAttribute( - "INTENSITY", PointAttributeTypes.DATA_TYPE_UINT16, 1); - -PointAttribute.CLASSIFICATION = new PointAttribute( - "CLASSIFICATION", PointAttributeTypes.DATA_TYPE_UINT8, 1); - -PointAttribute.NORMAL_SPHEREMAPPED = new PointAttribute( - "NORMAL_SPHEREMAPPED", PointAttributeTypes.DATA_TYPE_UINT8, 2); - -PointAttribute.NORMAL_OCT16 = new PointAttribute( - "NORMAL_OCT16", PointAttributeTypes.DATA_TYPE_UINT8, 2); - -PointAttribute.NORMAL = new PointAttribute( - "NORMAL", PointAttributeTypes.DATA_TYPE_FLOAT, 3); - -PointAttribute.RETURN_NUMBER = new PointAttribute( - "RETURN_NUMBER", PointAttributeTypes.DATA_TYPE_UINT8, 1); - -PointAttribute.NUMBER_OF_RETURNS = new PointAttribute( - "NUMBER_OF_RETURNS", PointAttributeTypes.DATA_TYPE_UINT8, 1); - -PointAttribute.SOURCE_ID = new PointAttribute( - "SOURCE_ID", PointAttributeTypes.DATA_TYPE_UINT16, 1); - -PointAttribute.INDICES = new PointAttribute( - "INDICES", PointAttributeTypes.DATA_TYPE_UINT32, 1); - -PointAttribute.SPACING = new PointAttribute( - "SPACING", PointAttributeTypes.DATA_TYPE_FLOAT, 1); - -PointAttribute.GPS_TIME = new PointAttribute( - "GPS_TIME", PointAttributeTypes.DATA_TYPE_DOUBLE, 1); - -const typedArrayMapping = { - "int8": Int8Array, - "int16": Int16Array, - "int32": Int32Array, - "int64": Float64Array, - "uint8": Uint8Array, - "uint16": Uint16Array, - "uint32": Uint32Array, - "uint64": Float64Array, - "float": Float32Array, - "double": Float64Array, -}; - -Potree = {}; - -onmessage = function (event) { - - let {buffer, pointAttributes, scale, name, min, max, size, offset, numPoints} = event.data; - - let tStart = performance.now(); - - let view = new DataView(buffer); - - let attributeBuffers = {}; - let attributeOffset = 0; - - let bytesPerPoint = 0; - for (let pointAttribute of pointAttributes.attributes) { - bytesPerPoint += pointAttribute.byteSize; - } - - let gridSize = 32; - let grid = new Uint32Array(gridSize ** 3); - let toIndex = (x, y, z) => { - // let dx = gridSize * (x - min.x) / size.x; - // let dy = gridSize * (y - min.y) / size.y; - // let dz = gridSize * (z - min.z) / size.z; - - // min is already subtracted - let dx = gridSize * x / size.x; - let dy = gridSize * y / size.y; - let dz = gridSize * z / size.z; - - let ix = Math.min(parseInt(dx), gridSize - 1); - let iy = Math.min(parseInt(dy), gridSize - 1); - let iz = Math.min(parseInt(dz), gridSize - 1); - - let index = ix + iy * gridSize + iz * gridSize * gridSize; - - return index; - }; - - let numOccupiedCells = 0; - for (let pointAttribute of pointAttributes.attributes) { - - if(["POSITION_CARTESIAN", "position"].includes(pointAttribute.name)){ - let buff = new ArrayBuffer(numPoints * 4 * 3); - let positions = new Float32Array(buff); - - for (let j = 0; j < numPoints; j++) { - - let pointOffset = j * bytesPerPoint; - - let x = (view.getInt32(pointOffset + attributeOffset + 0, true) * scale[0]) + offset[0] - min.x; - let y = (view.getInt32(pointOffset + attributeOffset + 4, true) * scale[1]) + offset[1] - min.y; - let z = (view.getInt32(pointOffset + attributeOffset + 8, true) * scale[2]) + offset[2] - min.z; - - let index = toIndex(x, y, z); - let count = grid[index]++; - if(count === 0){ - numOccupiedCells++; - } - - positions[3 * j + 0] = x; - positions[3 * j + 1] = y; - positions[3 * j + 2] = z; - } - - attributeBuffers[pointAttribute.name] = { buffer: buff, attribute: pointAttribute }; - }else if(["RGBA", "rgba"].includes(pointAttribute.name)){ - let buff = new ArrayBuffer(numPoints * 4); - let colors = new Uint8Array(buff); - - for (let j = 0; j < numPoints; j++) { - let pointOffset = j * bytesPerPoint; - - let r = view.getUint16(pointOffset + attributeOffset + 0, true); - let g = view.getUint16(pointOffset + attributeOffset + 2, true); - let b = view.getUint16(pointOffset + attributeOffset + 4, true); - - colors[4 * j + 0] = r > 255 ? r / 256 : r; - colors[4 * j + 1] = g > 255 ? g / 256 : g; - colors[4 * j + 2] = b > 255 ? b / 256 : b; - } - - attributeBuffers[pointAttribute.name] = { buffer: buff, attribute: pointAttribute }; - }else { - let buff = new ArrayBuffer(numPoints * 4); - let f32 = new Float32Array(buff); - - let TypedArray = typedArrayMapping[pointAttribute.type.name]; - preciseBuffer = new TypedArray(numPoints); - - let [offset, scale] = [0, 1]; - - const getterMap = { - "int8": view.getInt8, - "int16": view.getInt16, - "int32": view.getInt32, - // "int64": view.getInt64, - "uint8": view.getUint8, - "uint16": view.getUint16, - "uint32": view.getUint32, - // "uint64": view.getUint64, - "float": view.getFloat32, - "double": view.getFloat64, - }; - const getter = getterMap[pointAttribute.type.name].bind(view); - - // compute offset and scale to pack larger types into 32 bit floats - if(pointAttribute.type.size > 4){ - let [amin, amax] = pointAttribute.range; - offset = amin; - scale = 1 / (amax - amin); - } - - for(let j = 0; j < numPoints; j++){ - let pointOffset = j * bytesPerPoint; - let value = getter(pointOffset + attributeOffset, true); - - f32[j] = (value - offset) * scale; - preciseBuffer[j] = value; - } - - attributeBuffers[pointAttribute.name] = { - buffer: buff, - preciseBuffer: preciseBuffer, - attribute: pointAttribute, - offset: offset, - scale: scale, - }; - } - - attributeOffset += pointAttribute.byteSize; - - - } - - let occupancy = parseInt(numPoints / numOccupiedCells); - // console.log(`${name}: #points: ${numPoints}: #occupiedCells: ${numOccupiedCells}, occupancy: ${occupancy} points/cell`); - - { // add indices - let buff = new ArrayBuffer(numPoints * 4); - let indices = new Uint32Array(buff); - - for (let i = 0; i < numPoints; i++) { - indices[i] = i; - } - - attributeBuffers["INDICES"] = { buffer: buff, attribute: PointAttribute.INDICES }; - } - - - { // handle attribute vectors - let vectors = pointAttributes.vectors; - - for(let vector of vectors){ - - let {name, attributes} = vector; - let numVectorElements = attributes.length; - let buffer = new ArrayBuffer(numVectorElements * numPoints * 4); - let f32 = new Float32Array(buffer); - - let iElement = 0; - for(let sourceName of attributes){ - let sourceBuffer = attributeBuffers[sourceName]; - let {offset, scale} = sourceBuffer; - let view = new DataView(sourceBuffer.buffer); - - const getter = view.getFloat32.bind(view); - - for(let j = 0; j < numPoints; j++){ - let value = getter(j * 4, true); - - f32[j * numVectorElements + iElement] = (value / scale) + offset; - } - - iElement++; - } - - let vecAttribute = new PointAttribute(name, PointAttributeTypes.DATA_TYPE_FLOAT, 3); - - attributeBuffers[name] = { - buffer: buffer, - attribute: vecAttribute, - }; - - } - - } - - // let duration = performance.now() - tStart; - // let pointsPerMs = numPoints / duration; - // console.log(`duration: ${duration.toFixed(1)}ms, #points: ${numPoints}, points/ms: ${pointsPerMs.toFixed(1)}`); - - let message = { - buffer: buffer, - attributeBuffers: attributeBuffers, - density: occupancy, - }; - - let transferables = []; - for (let property in message.attributeBuffers) { - transferables.push(message.attributeBuffers[property].buffer); - } - transferables.push(buffer); - - postMessage(message, transferables); -}; diff --git a/libs/potree/workers/2.0/DecoderWorker_brotli.js b/libs/potree/workers/2.0/DecoderWorker_brotli.js deleted file mode 100644 index 046c4e0..0000000 --- a/libs/potree/workers/2.0/DecoderWorker_brotli.js +++ /dev/null @@ -1,2485 +0,0 @@ -/** - * Some types of possible point attribute data formats - * - * @class - */ -const PointAttributeTypes = { - DATA_TYPE_DOUBLE: {ordinal: 0, name: "double", size: 8}, - DATA_TYPE_FLOAT: {ordinal: 1, name: "float", size: 4}, - DATA_TYPE_INT8: {ordinal: 2, name: "int8", size: 1}, - DATA_TYPE_UINT8: {ordinal: 3, name: "uint8", size: 1}, - DATA_TYPE_INT16: {ordinal: 4, name: "int16", size: 2}, - DATA_TYPE_UINT16: {ordinal: 5, name: "uint16", size: 2}, - DATA_TYPE_INT32: {ordinal: 6, name: "int32", size: 4}, - DATA_TYPE_UINT32: {ordinal: 7, name: "uint32", size: 4}, - DATA_TYPE_INT64: {ordinal: 8, name: "int64", size: 8}, - DATA_TYPE_UINT64: {ordinal: 9, name: "uint64", size: 8} -}; - -let i = 0; -for (let obj in PointAttributeTypes) { - PointAttributeTypes[i] = PointAttributeTypes[obj]; - i++; -} - - -class PointAttribute{ - - constructor(name, type, numElements){ - this.name = name; - this.type = type; - this.numElements = numElements; - this.byteSize = this.numElements * this.type.size; - this.description = ""; - this.range = [Infinity, -Infinity]; - } - -} -PointAttribute.POSITION_CARTESIAN = new PointAttribute( - "POSITION_CARTESIAN", PointAttributeTypes.DATA_TYPE_FLOAT, 3); - -PointAttribute.RGBA_PACKED = new PointAttribute( - "COLOR_PACKED", PointAttributeTypes.DATA_TYPE_INT8, 4); - -PointAttribute.COLOR_PACKED = PointAttribute.RGBA_PACKED; - -PointAttribute.RGB_PACKED = new PointAttribute( - "COLOR_PACKED", PointAttributeTypes.DATA_TYPE_INT8, 3); - -PointAttribute.NORMAL_FLOATS = new PointAttribute( - "NORMAL_FLOATS", PointAttributeTypes.DATA_TYPE_FLOAT, 3); - -PointAttribute.INTENSITY = new PointAttribute( - "INTENSITY", PointAttributeTypes.DATA_TYPE_UINT16, 1); - -PointAttribute.CLASSIFICATION = new PointAttribute( - "CLASSIFICATION", PointAttributeTypes.DATA_TYPE_UINT8, 1); - -PointAttribute.NORMAL_SPHEREMAPPED = new PointAttribute( - "NORMAL_SPHEREMAPPED", PointAttributeTypes.DATA_TYPE_UINT8, 2); - -PointAttribute.NORMAL_OCT16 = new PointAttribute( - "NORMAL_OCT16", PointAttributeTypes.DATA_TYPE_UINT8, 2); - -PointAttribute.NORMAL = new PointAttribute( - "NORMAL", PointAttributeTypes.DATA_TYPE_FLOAT, 3); - -PointAttribute.RETURN_NUMBER = new PointAttribute( - "RETURN_NUMBER", PointAttributeTypes.DATA_TYPE_UINT8, 1); - -PointAttribute.NUMBER_OF_RETURNS = new PointAttribute( - "NUMBER_OF_RETURNS", PointAttributeTypes.DATA_TYPE_UINT8, 1); - -PointAttribute.SOURCE_ID = new PointAttribute( - "SOURCE_ID", PointAttributeTypes.DATA_TYPE_UINT16, 1); - -PointAttribute.INDICES = new PointAttribute( - "INDICES", PointAttributeTypes.DATA_TYPE_UINT32, 1); - -PointAttribute.SPACING = new PointAttribute( - "SPACING", PointAttributeTypes.DATA_TYPE_FLOAT, 1); - -PointAttribute.GPS_TIME = new PointAttribute( - "GPS_TIME", PointAttributeTypes.DATA_TYPE_DOUBLE, 1); - -/* Copyright 2017 Google Inc. All Rights Reserved. - - Distributed under MIT license. - See file LICENSE for detail or copy at https://opensource.org/licenses/MIT -*/ - -/** @return {function(!Int8Array):!Int8Array} */ -function BrotliDecodeClosure() { - - /** @type {!Int8Array} */ - var DICTIONARY_DATA = new Int8Array(0); - - /** - * @constructor - * @param {!Int8Array} bytes - * @struct - */ - function InputStream(bytes) { - /** @type {!Int8Array} */ - this.data = bytes; - /** @type {!number} */ - this.offset = 0; - } - var MAX_HUFFMAN_TABLE_SIZE = Int32Array.from([256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822, 854, 886, 920, 952, 984, 1016, 1048, 1080]); - var CODE_LENGTH_CODE_ORDER = Int32Array.from([1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15]); - var DISTANCE_SHORT_CODE_INDEX_OFFSET = Int32Array.from([0, 3, 2, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3]); - var DISTANCE_SHORT_CODE_VALUE_OFFSET = Int32Array.from([0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3]); - var FIXED_TABLE = Int32Array.from([0x020000, 0x020004, 0x020003, 0x030002, 0x020000, 0x020004, 0x020003, 0x040001, 0x020000, 0x020004, 0x020003, 0x030002, 0x020000, 0x020004, 0x020003, 0x040005]); - var DICTIONARY_OFFSETS_BY_LENGTH = Int32Array.from([0, 0, 0, 0, 0, 4096, 9216, 21504, 35840, 44032, 53248, 63488, 74752, 87040, 93696, 100864, 104704, 106752, 108928, 113536, 115968, 118528, 119872, 121280, 122016]); - var DICTIONARY_SIZE_BITS_BY_LENGTH = Int32Array.from([0, 0, 0, 0, 10, 10, 11, 11, 10, 10, 10, 10, 10, 9, 9, 8, 7, 7, 8, 7, 7, 6, 6, 5, 5]); - var BLOCK_LENGTH_OFFSET = Int32Array.from([1, 5, 9, 13, 17, 25, 33, 41, 49, 65, 81, 97, 113, 145, 177, 209, 241, 305, 369, 497, 753, 1265, 2289, 4337, 8433, 16625]); - var BLOCK_LENGTH_N_BITS = Int32Array.from([2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 24]); - var INSERT_LENGTH_N_BITS = Int16Array.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0C, 0x0E, 0x18]); - var COPY_LENGTH_N_BITS = Int16Array.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x18]); - var CMD_LOOKUP = new Int16Array(2816); - { - unpackCommandLookupTable(CMD_LOOKUP); - } - /** - * @param {number} i - * @return {number} - */ - function log2floor(i) { - var /** number */ result = -1; - var /** number */ step = 16; - while (step > 0) { - if ((i >>> step) != 0) { - result += step; - i = i >>> step; - } - step = step >> 1; - } - return result + i; - } - /** - * @param {number} npostfix - * @param {number} ndirect - * @param {number} maxndistbits - * @return {number} - */ - function calculateDistanceAlphabetSize(npostfix, ndirect, maxndistbits) { - return 16 + ndirect + 2 * (maxndistbits << npostfix); - } - /** - * @param {number} maxDistance - * @param {number} npostfix - * @param {number} ndirect - * @return {number} - */ - function calculateDistanceAlphabetLimit(maxDistance, npostfix, ndirect) { - if (maxDistance < ndirect + (2 << npostfix)) { - throw "maxDistance is too small"; - } - var /** number */ offset = ((maxDistance - ndirect) >> npostfix) + 4; - var /** number */ ndistbits = log2floor(offset) - 1; - var /** number */ group = ((ndistbits - 1) << 1) | ((offset >> ndistbits) & 1); - return ((group - 1) << npostfix) + (1 << npostfix) + ndirect + 16; - } - /** - * @param {!Int16Array} cmdLookup - * @return {void} - */ - function unpackCommandLookupTable(cmdLookup) { - var /** !Int16Array */ insertLengthOffsets = new Int16Array(24); - var /** !Int16Array */ copyLengthOffsets = new Int16Array(24); - copyLengthOffsets[0] = 2; - for (var /** number */ i = 0; i < 23; ++i) { - insertLengthOffsets[i + 1] = (insertLengthOffsets[i] + (1 << INSERT_LENGTH_N_BITS[i])); - copyLengthOffsets[i + 1] = (copyLengthOffsets[i] + (1 << COPY_LENGTH_N_BITS[i])); - } - for (var /** number */ cmdCode = 0; cmdCode < 704; ++cmdCode) { - var /** number */ rangeIdx = cmdCode >>> 6; - var /** number */ distanceContextOffset = -4; - if (rangeIdx >= 2) { - rangeIdx -= 2; - distanceContextOffset = 0; - } - var /** number */ insertCode = (((0x29850 >>> (rangeIdx * 2)) & 0x3) << 3) | ((cmdCode >>> 3) & 7); - var /** number */ copyCode = (((0x26244 >>> (rangeIdx * 2)) & 0x3) << 3) | (cmdCode & 7); - var /** number */ copyLengthOffset = copyLengthOffsets[copyCode]; - var /** number */ distanceContext = distanceContextOffset + (copyLengthOffset > 4 ? 3 : copyLengthOffset - 2); - var /** number */ index = cmdCode * 4; - cmdLookup[index + 0] = (INSERT_LENGTH_N_BITS[insertCode] | (COPY_LENGTH_N_BITS[copyCode] << 8)); - cmdLookup[index + 1] = insertLengthOffsets[insertCode]; - cmdLookup[index + 2] = copyLengthOffsets[copyCode]; - cmdLookup[index + 3] = distanceContext; - } - } - /** - * @param {!State} s - * @return {number} - */ - function decodeWindowBits(s) { - var /** number */ largeWindowEnabled = s.isLargeWindow; - s.isLargeWindow = 0; - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - if (readFewBits(s, 1) == 0) { - return 16; - } - var /** number */ n = readFewBits(s, 3); - if (n != 0) { - return 17 + n; - } - n = readFewBits(s, 3); - if (n != 0) { - if (n == 1) { - if (largeWindowEnabled == 0) { - return -1; - } - s.isLargeWindow = 1; - if (readFewBits(s, 1) == 1) { - return -1; - } - n = readFewBits(s, 6); - if (n < 10 || n > 30) { - return -1; - } - return n; - } else { - return 8 + n; - } - } - return 17; - } - /** - * @param {!State} s - * @param {!InputStream} input - * @return {void} - */ - function initState(s, input) { - if (s.runningState != 0) { - throw "State MUST be uninitialized"; - } - s.blockTrees = new Int32Array(3091); - s.blockTrees[0] = 7; - s.distRbIdx = 3; - var /** number */ maxDistanceAlphabetLimit = calculateDistanceAlphabetLimit(0x7FFFFFFC, 3, 15 << 3); - s.distExtraBits = new Int8Array(maxDistanceAlphabetLimit); - s.distOffset = new Int32Array(maxDistanceAlphabetLimit); - s.input = input; - initBitReader(s); - s.runningState = 1; - } - /** - * @param {!State} s - * @return {void} - */ - function close(s) { - if (s.runningState == 0) { - throw "State MUST be initialized"; - } - if (s.runningState == 11) { - return; - } - s.runningState = 11; - if (s.input != null) { - closeInput(s.input); - s.input = null; - } - } - /** - * @param {!State} s - * @return {number} - */ - function decodeVarLenUnsignedByte(s) { - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - if (readFewBits(s, 1) != 0) { - var /** number */ n = readFewBits(s, 3); - if (n == 0) { - return 1; - } else { - return readFewBits(s, n) + (1 << n); - } - } - return 0; - } - /** - * @param {!State} s - * @return {void} - */ - function decodeMetaBlockLength(s) { - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - s.inputEnd = readFewBits(s, 1); - s.metaBlockLength = 0; - s.isUncompressed = 0; - s.isMetadata = 0; - if ((s.inputEnd != 0) && readFewBits(s, 1) != 0) { - return; - } - var /** number */ sizeNibbles = readFewBits(s, 2) + 4; - if (sizeNibbles == 7) { - s.isMetadata = 1; - if (readFewBits(s, 1) != 0) { - throw "Corrupted reserved bit"; - } - var /** number */ sizeBytes = readFewBits(s, 2); - if (sizeBytes == 0) { - return; - } - for (var /** number */ i = 0; i < sizeBytes; i++) { - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ bits = readFewBits(s, 8); - if (bits == 0 && i + 1 == sizeBytes && sizeBytes > 1) { - throw "Exuberant nibble"; - } - s.metaBlockLength |= bits << (i * 8); - } - } else { - for (var /** number */ i = 0; i < sizeNibbles; i++) { - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ bits = readFewBits(s, 4); - if (bits == 0 && i + 1 == sizeNibbles && sizeNibbles > 4) { - throw "Exuberant nibble"; - } - s.metaBlockLength |= bits << (i * 4); - } - } - s.metaBlockLength++; - if (s.inputEnd == 0) { - s.isUncompressed = readFewBits(s, 1); - } - } - /** - * @param {!Int32Array} tableGroup - * @param {number} tableIdx - * @param {!State} s - * @return {number} - */ - function readSymbol(tableGroup, tableIdx, s) { - var /** number */ offset = tableGroup[tableIdx]; - var /** number */ val = (s.accumulator32 >>> s.bitOffset); - offset += val & 0xFF; - var /** number */ bits = tableGroup[offset] >> 16; - var /** number */ sym = tableGroup[offset] & 0xFFFF; - if (bits <= 8) { - s.bitOffset += bits; - return sym; - } - offset += sym; - var /** number */ mask = (1 << bits) - 1; - offset += (val & mask) >>> 8; - s.bitOffset += ((tableGroup[offset] >> 16) + 8); - return tableGroup[offset] & 0xFFFF; - } - /** - * @param {!Int32Array} tableGroup - * @param {number} tableIdx - * @param {!State} s - * @return {number} - */ - function readBlockLength(tableGroup, tableIdx, s) { - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ code = readSymbol(tableGroup, tableIdx, s); - var /** number */ n = BLOCK_LENGTH_N_BITS[code]; - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - return BLOCK_LENGTH_OFFSET[code] + ((n <= 16) ? readFewBits(s, n) : readManyBits(s, n)); - } - /** - * @param {!Int32Array} v - * @param {number} index - * @return {void} - */ - function moveToFront(v, index) { - var /** number */ value = v[index]; - for (; index > 0; index--) { - v[index] = v[index - 1]; - } - v[0] = value; - } - /** - * @param {!Int8Array} v - * @param {number} vLen - * @return {void} - */ - function inverseMoveToFrontTransform(v, vLen) { - var /** !Int32Array */ mtf = new Int32Array(256); - for (var /** number */ i = 0; i < 256; i++) { - mtf[i] = i; - } - for (var /** number */ i = 0; i < vLen; i++) { - var /** number */ index = v[i] & 0xFF; - v[i] = mtf[index]; - if (index != 0) { - moveToFront(mtf, index); - } - } - } - /** - * @param {!Int32Array} codeLengthCodeLengths - * @param {number} numSymbols - * @param {!Int32Array} codeLengths - * @param {!State} s - * @return {void} - */ - function readHuffmanCodeLengths(codeLengthCodeLengths, numSymbols, codeLengths, s) { - var /** number */ symbol = 0; - var /** number */ prevCodeLen = 8; - var /** number */ repeat = 0; - var /** number */ repeatCodeLen = 0; - var /** number */ space = 32768; - var /** !Int32Array */ table = new Int32Array(32 + 1); - var /** number */ tableIdx = table.length - 1; - buildHuffmanTable(table, tableIdx, 5, codeLengthCodeLengths, 18); - while (symbol < numSymbols && space > 0) { - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ p = (s.accumulator32 >>> s.bitOffset) & 31; - s.bitOffset += table[p] >> 16; - var /** number */ codeLen = table[p] & 0xFFFF; - if (codeLen < 16) { - repeat = 0; - codeLengths[symbol++] = codeLen; - if (codeLen != 0) { - prevCodeLen = codeLen; - space -= 32768 >> codeLen; - } - } else { - var /** number */ extraBits = codeLen - 14; - var /** number */ newLen = 0; - if (codeLen == 16) { - newLen = prevCodeLen; - } - if (repeatCodeLen != newLen) { - repeat = 0; - repeatCodeLen = newLen; - } - var /** number */ oldRepeat = repeat; - if (repeat > 0) { - repeat -= 2; - repeat <<= extraBits; - } - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - repeat += readFewBits(s, extraBits) + 3; - var /** number */ repeatDelta = repeat - oldRepeat; - if (symbol + repeatDelta > numSymbols) { - throw "symbol + repeatDelta > numSymbols"; - } - for (var /** number */ i = 0; i < repeatDelta; i++) { - codeLengths[symbol++] = repeatCodeLen; - } - if (repeatCodeLen != 0) { - space -= repeatDelta << (15 - repeatCodeLen); - } - } - } - if (space != 0) { - throw "Unused space"; - } - codeLengths.fill(0, symbol, numSymbols); - } - /** - * @param {!Int32Array} symbols - * @param {number} length - * @return {void} - */ - function checkDupes(symbols, length) { - for (var /** number */ i = 0; i < length - 1; ++i) { - for (var /** number */ j = i + 1; j < length; ++j) { - if (symbols[i] == symbols[j]) { - throw "Duplicate simple Huffman code symbol"; - } - } - } - } - /** - * @param {number} alphabetSizeMax - * @param {number} alphabetSizeLimit - * @param {!Int32Array} tableGroup - * @param {number} tableIdx - * @param {!State} s - * @return {number} - */ - function readSimpleHuffmanCode(alphabetSizeMax, alphabetSizeLimit, tableGroup, tableIdx, s) { - var /** !Int32Array */ codeLengths = new Int32Array(alphabetSizeLimit); - var /** !Int32Array */ symbols = new Int32Array(4); - var /** number */ maxBits = 1 + log2floor(alphabetSizeMax - 1); - var /** number */ numSymbols = readFewBits(s, 2) + 1; - for (var /** number */ i = 0; i < numSymbols; i++) { - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ symbol = readFewBits(s, maxBits); - if (symbol >= alphabetSizeLimit) { - throw "Can't readHuffmanCode"; - } - symbols[i] = symbol; - } - checkDupes(symbols, numSymbols); - var /** number */ histogramId = numSymbols; - if (numSymbols == 4) { - histogramId += readFewBits(s, 1); - } - switch(histogramId) { - case 1: - codeLengths[symbols[0]] = 1; - break; - case 2: - codeLengths[symbols[0]] = 1; - codeLengths[symbols[1]] = 1; - break; - case 3: - codeLengths[symbols[0]] = 1; - codeLengths[symbols[1]] = 2; - codeLengths[symbols[2]] = 2; - break; - case 4: - codeLengths[symbols[0]] = 2; - codeLengths[symbols[1]] = 2; - codeLengths[symbols[2]] = 2; - codeLengths[symbols[3]] = 2; - break; - case 5: - codeLengths[symbols[0]] = 1; - codeLengths[symbols[1]] = 2; - codeLengths[symbols[2]] = 3; - codeLengths[symbols[3]] = 3; - break; - } - return buildHuffmanTable(tableGroup, tableIdx, 8, codeLengths, alphabetSizeLimit); - } - /** - * @param {number} alphabetSizeLimit - * @param {number} skip - * @param {!Int32Array} tableGroup - * @param {number} tableIdx - * @param {!State} s - * @return {number} - */ - function readComplexHuffmanCode(alphabetSizeLimit, skip, tableGroup, tableIdx, s) { - var /** !Int32Array */ codeLengths = new Int32Array(alphabetSizeLimit); - var /** !Int32Array */ codeLengthCodeLengths = new Int32Array(18); - var /** number */ space = 32; - var /** number */ numCodes = 0; - for (var /** number */ i = skip; i < 18 && space > 0; i++) { - var /** number */ codeLenIdx = CODE_LENGTH_CODE_ORDER[i]; - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ p = (s.accumulator32 >>> s.bitOffset) & 15; - s.bitOffset += FIXED_TABLE[p] >> 16; - var /** number */ v = FIXED_TABLE[p] & 0xFFFF; - codeLengthCodeLengths[codeLenIdx] = v; - if (v != 0) { - space -= (32 >> v); - numCodes++; - } - } - if (space != 0 && numCodes != 1) { - throw "Corrupted Huffman code histogram"; - } - readHuffmanCodeLengths(codeLengthCodeLengths, alphabetSizeLimit, codeLengths, s); - return buildHuffmanTable(tableGroup, tableIdx, 8, codeLengths, alphabetSizeLimit); - } - /** - * @param {number} alphabetSizeMax - * @param {number} alphabetSizeLimit - * @param {!Int32Array} tableGroup - * @param {number} tableIdx - * @param {!State} s - * @return {number} - */ - function readHuffmanCode(alphabetSizeMax, alphabetSizeLimit, tableGroup, tableIdx, s) { - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ simpleCodeOrSkip = readFewBits(s, 2); - if (simpleCodeOrSkip == 1) { - return readSimpleHuffmanCode(alphabetSizeMax, alphabetSizeLimit, tableGroup, tableIdx, s); - } else { - return readComplexHuffmanCode(alphabetSizeLimit, simpleCodeOrSkip, tableGroup, tableIdx, s); - } - } - /** - * @param {number} contextMapSize - * @param {!Int8Array} contextMap - * @param {!State} s - * @return {number} - */ - function decodeContextMap(contextMapSize, contextMap, s) { - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - var /** number */ numTrees = decodeVarLenUnsignedByte(s) + 1; - if (numTrees == 1) { - contextMap.fill(0, 0, contextMapSize); - return numTrees; - } - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ useRleForZeros = readFewBits(s, 1); - var /** number */ maxRunLengthPrefix = 0; - if (useRleForZeros != 0) { - maxRunLengthPrefix = readFewBits(s, 4) + 1; - } - var /** number */ alphabetSize = numTrees + maxRunLengthPrefix; - var /** number */ tableSize = MAX_HUFFMAN_TABLE_SIZE[(alphabetSize + 31) >> 5]; - var /** !Int32Array */ table = new Int32Array(tableSize + 1); - var /** number */ tableIdx = table.length - 1; - readHuffmanCode(alphabetSize, alphabetSize, table, tableIdx, s); - for (var /** number */ i = 0; i < contextMapSize; ) { - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ code = readSymbol(table, tableIdx, s); - if (code == 0) { - contextMap[i] = 0; - i++; - } else if (code <= maxRunLengthPrefix) { - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ reps = (1 << code) + readFewBits(s, code); - while (reps != 0) { - if (i >= contextMapSize) { - throw "Corrupted context map"; - } - contextMap[i] = 0; - i++; - reps--; - } - } else { - contextMap[i] = (code - maxRunLengthPrefix); - i++; - } - } - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - if (readFewBits(s, 1) == 1) { - inverseMoveToFrontTransform(contextMap, contextMapSize); - } - return numTrees; - } - /** - * @param {!State} s - * @param {number} treeType - * @param {number} numBlockTypes - * @return {number} - */ - function decodeBlockTypeAndLength(s, treeType, numBlockTypes) { - var /** !Int32Array */ ringBuffers = s.rings; - var /** number */ offset = 4 + treeType * 2; - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ blockType = readSymbol(s.blockTrees, 2 * treeType, s); - var /** number */ result = readBlockLength(s.blockTrees, 2 * treeType + 1, s); - if (blockType == 1) { - blockType = ringBuffers[offset + 1] + 1; - } else if (blockType == 0) { - blockType = ringBuffers[offset]; - } else { - blockType -= 2; - } - if (blockType >= numBlockTypes) { - blockType -= numBlockTypes; - } - ringBuffers[offset] = ringBuffers[offset + 1]; - ringBuffers[offset + 1] = blockType; - return result; - } - /** - * @param {!State} s - * @return {void} - */ - function decodeLiteralBlockSwitch(s) { - s.literalBlockLength = decodeBlockTypeAndLength(s, 0, s.numLiteralBlockTypes); - var /** number */ literalBlockType = s.rings[5]; - s.contextMapSlice = literalBlockType << 6; - s.literalTreeIdx = s.contextMap[s.contextMapSlice] & 0xFF; - var /** number */ contextMode = s.contextModes[literalBlockType]; - s.contextLookupOffset1 = contextMode << 9; - s.contextLookupOffset2 = s.contextLookupOffset1 + 256; - } - /** - * @param {!State} s - * @return {void} - */ - function decodeCommandBlockSwitch(s) { - s.commandBlockLength = decodeBlockTypeAndLength(s, 1, s.numCommandBlockTypes); - s.commandTreeIdx = s.rings[7]; - } - /** - * @param {!State} s - * @return {void} - */ - function decodeDistanceBlockSwitch(s) { - s.distanceBlockLength = decodeBlockTypeAndLength(s, 2, s.numDistanceBlockTypes); - s.distContextMapSlice = s.rings[9] << 2; - } - /** - * @param {!State} s - * @return {void} - */ - function maybeReallocateRingBuffer(s) { - var /** number */ newSize = s.maxRingBufferSize; - if (newSize > s.expectedTotalSize) { - var /** number */ minimalNewSize = s.expectedTotalSize; - while ((newSize >> 1) > minimalNewSize) { - newSize >>= 1; - } - if ((s.inputEnd == 0) && newSize < 16384 && s.maxRingBufferSize >= 16384) { - newSize = 16384; - } - } - if (newSize <= s.ringBufferSize) { - return; - } - var /** number */ ringBufferSizeWithSlack = newSize + 37; - var /** !Int8Array */ newBuffer = new Int8Array(ringBufferSizeWithSlack); - if (s.ringBuffer.length != 0) { - newBuffer.set(s.ringBuffer.subarray(0, 0 + s.ringBufferSize), 0); - } - s.ringBuffer = newBuffer; - s.ringBufferSize = newSize; - } - /** - * @param {!State} s - * @return {void} - */ - function readNextMetablockHeader(s) { - if (s.inputEnd != 0) { - s.nextRunningState = 10; - s.runningState = 12; - return; - } - s.literalTreeGroup = new Int32Array(0); - s.commandTreeGroup = new Int32Array(0); - s.distanceTreeGroup = new Int32Array(0); - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - decodeMetaBlockLength(s); - if ((s.metaBlockLength == 0) && (s.isMetadata == 0)) { - return; - } - if ((s.isUncompressed != 0) || (s.isMetadata != 0)) { - jumpToByteBoundary(s); - s.runningState = (s.isMetadata != 0) ? 5 : 6; - } else { - s.runningState = 3; - } - if (s.isMetadata != 0) { - return; - } - s.expectedTotalSize += s.metaBlockLength; - if (s.expectedTotalSize > 1 << 30) { - s.expectedTotalSize = 1 << 30; - } - if (s.ringBufferSize < s.maxRingBufferSize) { - maybeReallocateRingBuffer(s); - } - } - /** - * @param {!State} s - * @param {number} treeType - * @param {number} numBlockTypes - * @return {number} - */ - function readMetablockPartition(s, treeType, numBlockTypes) { - var /** number */ offset = s.blockTrees[2 * treeType]; - if (numBlockTypes <= 1) { - s.blockTrees[2 * treeType + 1] = offset; - s.blockTrees[2 * treeType + 2] = offset; - return 1 << 28; - } - var /** number */ blockTypeAlphabetSize = numBlockTypes + 2; - offset += readHuffmanCode(blockTypeAlphabetSize, blockTypeAlphabetSize, s.blockTrees, 2 * treeType, s); - s.blockTrees[2 * treeType + 1] = offset; - var /** number */ blockLengthAlphabetSize = 26; - offset += readHuffmanCode(blockLengthAlphabetSize, blockLengthAlphabetSize, s.blockTrees, 2 * treeType + 1, s); - s.blockTrees[2 * treeType + 2] = offset; - return readBlockLength(s.blockTrees, 2 * treeType + 1, s); - } - /** - * @param {!State} s - * @param {number} alphabetSizeLimit - * @return {void} - */ - function calculateDistanceLut(s, alphabetSizeLimit) { - var /** !Int8Array */ distExtraBits = s.distExtraBits; - var /** !Int32Array */ distOffset = s.distOffset; - var /** number */ npostfix = s.distancePostfixBits; - var /** number */ ndirect = s.numDirectDistanceCodes; - var /** number */ postfix = 1 << npostfix; - var /** number */ bits = 1; - var /** number */ half = 0; - var /** number */ i = 16; - for (var /** number */ j = 0; j < ndirect; ++j) { - distExtraBits[i] = 0; - distOffset[i] = j + 1; - ++i; - } - while (i < alphabetSizeLimit) { - var /** number */ base = ndirect + ((((2 + half) << bits) - 4) << npostfix) + 1; - for (var /** number */ j = 0; j < postfix; ++j) { - distExtraBits[i] = bits; - distOffset[i] = base + j; - ++i; - } - bits = bits + half; - half = half ^ 1; - } - } - /** - * @param {!State} s - * @return {void} - */ - function readMetablockHuffmanCodesAndContextMaps(s) { - s.numLiteralBlockTypes = decodeVarLenUnsignedByte(s) + 1; - s.literalBlockLength = readMetablockPartition(s, 0, s.numLiteralBlockTypes); - s.numCommandBlockTypes = decodeVarLenUnsignedByte(s) + 1; - s.commandBlockLength = readMetablockPartition(s, 1, s.numCommandBlockTypes); - s.numDistanceBlockTypes = decodeVarLenUnsignedByte(s) + 1; - s.distanceBlockLength = readMetablockPartition(s, 2, s.numDistanceBlockTypes); - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - s.distancePostfixBits = readFewBits(s, 2); - s.numDirectDistanceCodes = readFewBits(s, 4) << s.distancePostfixBits; - s.distancePostfixMask = (1 << s.distancePostfixBits) - 1; - s.contextModes = new Int8Array(s.numLiteralBlockTypes); - for (var /** number */ i = 0; i < s.numLiteralBlockTypes; ) { - var /** number */ limit = min(i + 96, s.numLiteralBlockTypes); - for (; i < limit; ++i) { - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - s.contextModes[i] = readFewBits(s, 2); - } - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - } - s.contextMap = new Int8Array(s.numLiteralBlockTypes << 6); - var /** number */ numLiteralTrees = decodeContextMap(s.numLiteralBlockTypes << 6, s.contextMap, s); - s.trivialLiteralContext = 1; - for (var /** number */ j = 0; j < s.numLiteralBlockTypes << 6; j++) { - if (s.contextMap[j] != j >> 6) { - s.trivialLiteralContext = 0; - break; - } - } - s.distContextMap = new Int8Array(s.numDistanceBlockTypes << 2); - var /** number */ numDistTrees = decodeContextMap(s.numDistanceBlockTypes << 2, s.distContextMap, s); - s.literalTreeGroup = decodeHuffmanTreeGroup(256, 256, numLiteralTrees, s); - s.commandTreeGroup = decodeHuffmanTreeGroup(704, 704, s.numCommandBlockTypes, s); - var /** number */ distanceAlphabetSizeMax = calculateDistanceAlphabetSize(s.distancePostfixBits, s.numDirectDistanceCodes, 24); - var /** number */ distanceAlphabetSizeLimit = distanceAlphabetSizeMax; - if (s.isLargeWindow == 1) { - distanceAlphabetSizeMax = calculateDistanceAlphabetSize(s.distancePostfixBits, s.numDirectDistanceCodes, 62); - distanceAlphabetSizeLimit = calculateDistanceAlphabetLimit(0x7FFFFFFC, s.distancePostfixBits, s.numDirectDistanceCodes); - } - s.distanceTreeGroup = decodeHuffmanTreeGroup(distanceAlphabetSizeMax, distanceAlphabetSizeLimit, numDistTrees, s); - calculateDistanceLut(s, distanceAlphabetSizeLimit); - s.contextMapSlice = 0; - s.distContextMapSlice = 0; - s.contextLookupOffset1 = s.contextModes[0] * 512; - s.contextLookupOffset2 = s.contextLookupOffset1 + 256; - s.literalTreeIdx = 0; - s.commandTreeIdx = 0; - s.rings[4] = 1; - s.rings[5] = 0; - s.rings[6] = 1; - s.rings[7] = 0; - s.rings[8] = 1; - s.rings[9] = 0; - } - /** - * @param {!State} s - * @return {void} - */ - function copyUncompressedData(s) { - var /** !Int8Array */ ringBuffer = s.ringBuffer; - if (s.metaBlockLength <= 0) { - reload(s); - s.runningState = 2; - return; - } - var /** number */ chunkLength = min(s.ringBufferSize - s.pos, s.metaBlockLength); - copyBytes(s, ringBuffer, s.pos, chunkLength); - s.metaBlockLength -= chunkLength; - s.pos += chunkLength; - if (s.pos == s.ringBufferSize) { - s.nextRunningState = 6; - s.runningState = 12; - return; - } - reload(s); - s.runningState = 2; - } - /** - * @param {!State} s - * @return {number} - */ - function writeRingBuffer(s) { - var /** number */ toWrite = min(s.outputLength - s.outputUsed, s.ringBufferBytesReady - s.ringBufferBytesWritten); - if (toWrite != 0) { - s.output.set(s.ringBuffer.subarray(s.ringBufferBytesWritten, s.ringBufferBytesWritten + toWrite), s.outputOffset + s.outputUsed); - s.outputUsed += toWrite; - s.ringBufferBytesWritten += toWrite; - } - if (s.outputUsed < s.outputLength) { - return 1; - } else { - return 0; - } - } - /** - * @param {number} alphabetSizeMax - * @param {number} alphabetSizeLimit - * @param {number} n - * @param {!State} s - * @return {!Int32Array} - */ - function decodeHuffmanTreeGroup(alphabetSizeMax, alphabetSizeLimit, n, s) { - var /** number */ maxTableSize = MAX_HUFFMAN_TABLE_SIZE[(alphabetSizeLimit + 31) >> 5]; - var /** !Int32Array */ group = new Int32Array(n + n * maxTableSize); - var /** number */ next = n; - for (var /** number */ i = 0; i < n; ++i) { - group[i] = next; - next += readHuffmanCode(alphabetSizeMax, alphabetSizeLimit, group, i, s); - } - return group; - } - /** - * @param {!State} s - * @return {number} - */ - function calculateFence(s) { - var /** number */ result = s.ringBufferSize; - if (s.isEager != 0) { - result = min(result, s.ringBufferBytesWritten + s.outputLength - s.outputUsed); - } - return result; - } - /** - * @param {!State} s - * @return {void} - */ - function decompress(s) { - if (s.runningState == 0) { - throw "Can't decompress until initialized"; - } - if (s.runningState == 11) { - throw "Can't decompress after close"; - } - if (s.runningState == 1) { - var /** number */ windowBits = decodeWindowBits(s); - if (windowBits == -1) { - throw "Invalid 'windowBits' code"; - } - s.maxRingBufferSize = 1 << windowBits; - s.maxBackwardDistance = s.maxRingBufferSize - 16; - s.runningState = 2; - } - var /** number */ fence = calculateFence(s); - var /** number */ ringBufferMask = s.ringBufferSize - 1; - var /** !Int8Array */ ringBuffer = s.ringBuffer; - while (s.runningState != 10) { - switch(s.runningState) { - case 2: - if (s.metaBlockLength < 0) { - throw "Invalid metablock length"; - } - readNextMetablockHeader(s); - fence = calculateFence(s); - ringBufferMask = s.ringBufferSize - 1; - ringBuffer = s.ringBuffer; - continue; - case 3: - readMetablockHuffmanCodesAndContextMaps(s); - s.runningState = 4; - case 4: - if (s.metaBlockLength <= 0) { - s.runningState = 2; - continue; - } - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - if (s.commandBlockLength == 0) { - decodeCommandBlockSwitch(s); - } - s.commandBlockLength--; - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ cmdCode = readSymbol(s.commandTreeGroup, s.commandTreeIdx, s) << 2; - var /** number */ insertAndCopyExtraBits = CMD_LOOKUP[cmdCode]; - var /** number */ insertLengthOffset = CMD_LOOKUP[cmdCode + 1]; - var /** number */ copyLengthOffset = CMD_LOOKUP[cmdCode + 2]; - s.distanceCode = CMD_LOOKUP[cmdCode + 3]; - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ extraBits = insertAndCopyExtraBits & 0xFF; - s.insertLength = insertLengthOffset + ((extraBits <= 16) ? readFewBits(s, extraBits) : readManyBits(s, extraBits)); - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ extraBits = insertAndCopyExtraBits >> 8; - s.copyLength = copyLengthOffset + ((extraBits <= 16) ? readFewBits(s, extraBits) : readManyBits(s, extraBits)); - s.j = 0; - s.runningState = 7; - case 7: - if (s.trivialLiteralContext != 0) { - while (s.j < s.insertLength) { - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - if (s.literalBlockLength == 0) { - decodeLiteralBlockSwitch(s); - } - s.literalBlockLength--; - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - ringBuffer[s.pos] = readSymbol(s.literalTreeGroup, s.literalTreeIdx, s); - s.pos++; - s.j++; - if (s.pos >= fence) { - s.nextRunningState = 7; - s.runningState = 12; - break; - } - } - } else { - var /** number */ prevByte1 = ringBuffer[(s.pos - 1) & ringBufferMask] & 0xFF; - var /** number */ prevByte2 = ringBuffer[(s.pos - 2) & ringBufferMask] & 0xFF; - while (s.j < s.insertLength) { - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - if (s.literalBlockLength == 0) { - decodeLiteralBlockSwitch(s); - } - var /** number */ literalContext = LOOKUP[s.contextLookupOffset1 + prevByte1] | LOOKUP[s.contextLookupOffset2 + prevByte2]; - var /** number */ literalTreeIdx = s.contextMap[s.contextMapSlice + literalContext] & 0xFF; - s.literalBlockLength--; - prevByte2 = prevByte1; - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - prevByte1 = readSymbol(s.literalTreeGroup, literalTreeIdx, s); - ringBuffer[s.pos] = prevByte1; - s.pos++; - s.j++; - if (s.pos >= fence) { - s.nextRunningState = 7; - s.runningState = 12; - break; - } - } - } - if (s.runningState != 7) { - continue; - } - s.metaBlockLength -= s.insertLength; - if (s.metaBlockLength <= 0) { - s.runningState = 4; - continue; - } - var /** number */ distanceCode = s.distanceCode; - if (distanceCode < 0) { - s.distance = s.rings[s.distRbIdx]; - } else { - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - if (s.distanceBlockLength == 0) { - decodeDistanceBlockSwitch(s); - } - s.distanceBlockLength--; - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ distTreeIdx = s.distContextMap[s.distContextMapSlice + distanceCode] & 0xFF; - distanceCode = readSymbol(s.distanceTreeGroup, distTreeIdx, s); - if (distanceCode < 16) { - var /** number */ index = (s.distRbIdx + DISTANCE_SHORT_CODE_INDEX_OFFSET[distanceCode]) & 0x3; - s.distance = s.rings[index] + DISTANCE_SHORT_CODE_VALUE_OFFSET[distanceCode]; - if (s.distance < 0) { - throw "Negative distance"; - } - } else { - var /** number */ extraBits = s.distExtraBits[distanceCode]; - var /** number */ bits; - if (s.bitOffset + extraBits <= 32) { - bits = readFewBits(s, extraBits); - } else { - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - bits = ((extraBits <= 16) ? readFewBits(s, extraBits) : readManyBits(s, extraBits)); - } - s.distance = s.distOffset[distanceCode] + (bits << s.distancePostfixBits); - } - } - if (s.maxDistance != s.maxBackwardDistance && s.pos < s.maxBackwardDistance) { - s.maxDistance = s.pos; - } else { - s.maxDistance = s.maxBackwardDistance; - } - if (s.distance > s.maxDistance) { - s.runningState = 9; - continue; - } - if (distanceCode > 0) { - s.distRbIdx = (s.distRbIdx + 1) & 0x3; - s.rings[s.distRbIdx] = s.distance; - } - if (s.copyLength > s.metaBlockLength) { - throw "Invalid backward reference"; - } - s.j = 0; - s.runningState = 8; - case 8: - var /** number */ src = (s.pos - s.distance) & ringBufferMask; - var /** number */ dst = s.pos; - var /** number */ copyLength = s.copyLength - s.j; - var /** number */ srcEnd = src + copyLength; - var /** number */ dstEnd = dst + copyLength; - if ((srcEnd < ringBufferMask) && (dstEnd < ringBufferMask)) { - if (copyLength < 12 || (srcEnd > dst && dstEnd > src)) { - for (var /** number */ k = 0; k < copyLength; k += 4) { - ringBuffer[dst++] = ringBuffer[src++]; - ringBuffer[dst++] = ringBuffer[src++]; - ringBuffer[dst++] = ringBuffer[src++]; - ringBuffer[dst++] = ringBuffer[src++]; - } - } else { - ringBuffer.copyWithin(dst, src, srcEnd); - } - s.j += copyLength; - s.metaBlockLength -= copyLength; - s.pos += copyLength; - } else { - for (; s.j < s.copyLength; ) { - ringBuffer[s.pos] = ringBuffer[(s.pos - s.distance) & ringBufferMask]; - s.metaBlockLength--; - s.pos++; - s.j++; - if (s.pos >= fence) { - s.nextRunningState = 8; - s.runningState = 12; - break; - } - } - } - if (s.runningState == 8) { - s.runningState = 4; - } - continue; - case 9: - if (s.distance > 0x7FFFFFFC) { - throw "Invalid backward reference"; - } - if (s.copyLength >= 4 && s.copyLength <= 24) { - var /** number */ offset = DICTIONARY_OFFSETS_BY_LENGTH[s.copyLength]; - var /** number */ wordId = s.distance - s.maxDistance - 1; - var /** number */ shift = DICTIONARY_SIZE_BITS_BY_LENGTH[s.copyLength]; - var /** number */ mask = (1 << shift) - 1; - var /** number */ wordIdx = wordId & mask; - var /** number */ transformIdx = wordId >>> shift; - offset += wordIdx * s.copyLength; - if (transformIdx < 121) { - var /** number */ len = transformDictionaryWord(ringBuffer, s.pos, DICTIONARY_DATA, offset, s.copyLength, RFC_TRANSFORMS, transformIdx); - s.pos += len; - s.metaBlockLength -= len; - if (s.pos >= fence) { - s.nextRunningState = 4; - s.runningState = 12; - continue; - } - } else { - throw "Invalid backward reference"; - } - } else { - throw "Invalid backward reference"; - } - s.runningState = 4; - continue; - case 5: - while (s.metaBlockLength > 0) { - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - readFewBits(s, 8); - s.metaBlockLength--; - } - s.runningState = 2; - continue; - case 6: - copyUncompressedData(s); - continue; - case 12: - s.ringBufferBytesReady = min(s.pos, s.ringBufferSize); - s.runningState = 13; - case 13: - if (writeRingBuffer(s) == 0) { - return; - } - if (s.pos >= s.maxBackwardDistance) { - s.maxDistance = s.maxBackwardDistance; - } - if (s.pos >= s.ringBufferSize) { - if (s.pos > s.ringBufferSize) { - ringBuffer.copyWithin(0, s.ringBufferSize, s.pos); - } - s.pos &= ringBufferMask; - s.ringBufferBytesWritten = 0; - } - s.runningState = s.nextRunningState; - continue; - default: - throw "Unexpected state " + s.runningState; - } - } - if (s.runningState == 10) { - if (s.metaBlockLength < 0) { - throw "Invalid metablock length"; - } - jumpToByteBoundary(s); - checkHealth(s, 1); - } - } - - /** - * @constructor - * @param {number} numTransforms - * @param {number} prefixSuffixLen - * @param {number} prefixSuffixCount - * @struct - */ - function Transforms(numTransforms, prefixSuffixLen, prefixSuffixCount) { - /** @type {!number} */ - this.numTransforms = 0; - /** @type {!Int32Array} */ - this.triplets = new Int32Array(0); - /** @type {!Int8Array} */ - this.prefixSuffixStorage = new Int8Array(0); - /** @type {!Int32Array} */ - this.prefixSuffixHeads = new Int32Array(0); - /** @type {!Int16Array} */ - this.params = new Int16Array(0); - this.numTransforms = numTransforms; - this.triplets = new Int32Array(numTransforms * 3); - this.params = new Int16Array(numTransforms); - this.prefixSuffixStorage = new Int8Array(prefixSuffixLen); - this.prefixSuffixHeads = new Int32Array(prefixSuffixCount + 1); - } - - var RFC_TRANSFORMS = new Transforms(121, 167, 50); - /** - * @param {!Int8Array} prefixSuffix - * @param {!Int32Array} prefixSuffixHeads - * @param {!Int32Array} transforms - * @param {!string} prefixSuffixSrc - * @param {!string} transformsSrc - * @return {void} - */ - function unpackTransforms(prefixSuffix, prefixSuffixHeads, transforms, prefixSuffixSrc, transformsSrc) { - var /** number */ n = prefixSuffixSrc.length; - var /** number */ index = 1; - var /** number */ j = 0; - for (var /** number */ i = 0; i < n; ++i) { - var /** number */ c = prefixSuffixSrc.charCodeAt(i); - if (c == 35) { - prefixSuffixHeads[index++] = j; - } else { - prefixSuffix[j++] = c; - } - } - for (var /** number */ i = 0; i < 363; ++i) { - transforms[i] = transformsSrc.charCodeAt(i) - 32; - } - } - { - unpackTransforms(RFC_TRANSFORMS.prefixSuffixStorage, RFC_TRANSFORMS.prefixSuffixHeads, RFC_TRANSFORMS.triplets, "# #s #, #e #.# the #.com/#\u00C2\u00A0# of # and # in # to #\"#\">#\n#]# for # a # that #. # with #'# from # by #. The # on # as # is #ing #\n\t#:#ed #(# at #ly #=\"# of the #. This #,# not #er #al #='#ful #ive #less #est #ize #ous #", " !! ! , *! &! \" ! ) * * - ! # ! #!*! + ,$ ! - % . / # 0 1 . \" 2 3!* 4% ! # / 5 6 7 8 0 1 & $ 9 + : ; < ' != > ?! 4 @ 4 2 & A *# ( B C& ) % ) !*# *-% A +! *. D! %' & E *6 F G% ! *A *% H! D I!+! J!+ K +- *4! A L!*4 M N +6 O!*% +.! K *G P +%( ! G *D +D Q +# *K!*G!+D!+# +G +A +4!+% +K!+4!*D!+K!*K"); - } - /** - * @param {!Int8Array} dst - * @param {number} dstOffset - * @param {!Int8Array} src - * @param {number} srcOffset - * @param {number} len - * @param {!Transforms} transforms - * @param {number} transformIndex - * @return {number} - */ - function transformDictionaryWord(dst, dstOffset, src, srcOffset, len, transforms, transformIndex) { - var /** number */ offset = dstOffset; - var /** !Int32Array */ triplets = transforms.triplets; - var /** !Int8Array */ prefixSuffixStorage = transforms.prefixSuffixStorage; - var /** !Int32Array */ prefixSuffixHeads = transforms.prefixSuffixHeads; - var /** number */ transformOffset = 3 * transformIndex; - var /** number */ prefixIdx = triplets[transformOffset]; - var /** number */ transformType = triplets[transformOffset + 1]; - var /** number */ suffixIdx = triplets[transformOffset + 2]; - var /** number */ prefix = prefixSuffixHeads[prefixIdx]; - var /** number */ prefixEnd = prefixSuffixHeads[prefixIdx + 1]; - var /** number */ suffix = prefixSuffixHeads[suffixIdx]; - var /** number */ suffixEnd = prefixSuffixHeads[suffixIdx + 1]; - var /** number */ omitFirst = transformType - 11; - var /** number */ omitLast = transformType - 0; - if (omitFirst < 1 || omitFirst > 9) { - omitFirst = 0; - } - if (omitLast < 1 || omitLast > 9) { - omitLast = 0; - } - while (prefix != prefixEnd) { - dst[offset++] = prefixSuffixStorage[prefix++]; - } - if (omitFirst > len) { - omitFirst = len; - } - srcOffset += omitFirst; - len -= omitFirst; - len -= omitLast; - var /** number */ i = len; - while (i > 0) { - dst[offset++] = src[srcOffset++]; - i--; - } - if (transformType == 10 || transformType == 11) { - var /** number */ uppercaseOffset = offset - len; - if (transformType == 10) { - len = 1; - } - while (len > 0) { - var /** number */ c0 = dst[uppercaseOffset] & 0xFF; - if (c0 < 0xC0) { - if (c0 >= 97 && c0 <= 122) { - dst[uppercaseOffset] ^= 32; - } - uppercaseOffset += 1; - len -= 1; - } else if (c0 < 0xE0) { - dst[uppercaseOffset + 1] ^= 32; - uppercaseOffset += 2; - len -= 2; - } else { - dst[uppercaseOffset + 2] ^= 5; - uppercaseOffset += 3; - len -= 3; - } - } - } else if (transformType == 21 || transformType == 22) { - var /** number */ shiftOffset = offset - len; - var /** number */ param = transforms.params[transformIndex]; - var /** number */ scalar = (param & 0x7FFF) + (0x1000000 - (param & 0x8000)); - while (len > 0) { - var /** number */ step = 1; - var /** number */ c0 = dst[shiftOffset] & 0xFF; - if (c0 < 0x80) { - scalar += c0; - dst[shiftOffset] = (scalar & 0x7F); - } else if (c0 < 0xC0) ; else if (c0 < 0xE0) { - if (len >= 2) { - var /** number */ c1 = dst[shiftOffset + 1]; - scalar += (c1 & 0x3F) | ((c0 & 0x1F) << 6); - dst[shiftOffset] = (0xC0 | ((scalar >> 6) & 0x1F)); - dst[shiftOffset + 1] = ((c1 & 0xC0) | (scalar & 0x3F)); - step = 2; - } else { - step = len; - } - } else if (c0 < 0xF0) { - if (len >= 3) { - var /** number */ c1 = dst[shiftOffset + 1]; - var /** number */ c2 = dst[shiftOffset + 2]; - scalar += (c2 & 0x3F) | ((c1 & 0x3F) << 6) | ((c0 & 0x0F) << 12); - dst[shiftOffset] = (0xE0 | ((scalar >> 12) & 0x0F)); - dst[shiftOffset + 1] = ((c1 & 0xC0) | ((scalar >> 6) & 0x3F)); - dst[shiftOffset + 2] = ((c2 & 0xC0) | (scalar & 0x3F)); - step = 3; - } else { - step = len; - } - } else if (c0 < 0xF8) { - if (len >= 4) { - var /** number */ c1 = dst[shiftOffset + 1]; - var /** number */ c2 = dst[shiftOffset + 2]; - var /** number */ c3 = dst[shiftOffset + 3]; - scalar += (c3 & 0x3F) | ((c2 & 0x3F) << 6) | ((c1 & 0x3F) << 12) | ((c0 & 0x07) << 18); - dst[shiftOffset] = (0xF0 | ((scalar >> 18) & 0x07)); - dst[shiftOffset + 1] = ((c1 & 0xC0) | ((scalar >> 12) & 0x3F)); - dst[shiftOffset + 2] = ((c2 & 0xC0) | ((scalar >> 6) & 0x3F)); - dst[shiftOffset + 3] = ((c3 & 0xC0) | (scalar & 0x3F)); - step = 4; - } else { - step = len; - } - } - shiftOffset += step; - len -= step; - if (transformType == 21) { - len = 0; - } - } - } - while (suffix != suffixEnd) { - dst[offset++] = prefixSuffixStorage[suffix++]; - } - return offset - dstOffset; - } - - /** - * @param {number} key - * @param {number} len - * @return {number} - */ - function getNextKey(key, len) { - var /** number */ step = 1 << (len - 1); - while ((key & step) != 0) { - step >>= 1; - } - return (key & (step - 1)) + step; - } - /** - * @param {!Int32Array} table - * @param {number} offset - * @param {number} step - * @param {number} end - * @param {number} item - * @return {void} - */ - function replicateValue(table, offset, step, end, item) { - do { - end -= step; - table[offset + end] = item; - } while (end > 0); - } - /** - * @param {!Int32Array} count - * @param {number} len - * @param {number} rootBits - * @return {number} - */ - function nextTableBitSize(count, len, rootBits) { - var /** number */ left = 1 << (len - rootBits); - while (len < 15) { - left -= count[len]; - if (left <= 0) { - break; - } - len++; - left <<= 1; - } - return len - rootBits; - } - /** - * @param {!Int32Array} tableGroup - * @param {number} tableIdx - * @param {number} rootBits - * @param {!Int32Array} codeLengths - * @param {number} codeLengthsSize - * @return {number} - */ - function buildHuffmanTable(tableGroup, tableIdx, rootBits, codeLengths, codeLengthsSize) { - var /** number */ tableOffset = tableGroup[tableIdx]; - var /** number */ key; - var /** !Int32Array */ sorted = new Int32Array(codeLengthsSize); - var /** !Int32Array */ count = new Int32Array(16); - var /** !Int32Array */ offset = new Int32Array(16); - var /** number */ symbol; - for (symbol = 0; symbol < codeLengthsSize; symbol++) { - count[codeLengths[symbol]]++; - } - offset[1] = 0; - for (var /** number */ len = 1; len < 15; len++) { - offset[len + 1] = offset[len] + count[len]; - } - for (symbol = 0; symbol < codeLengthsSize; symbol++) { - if (codeLengths[symbol] != 0) { - sorted[offset[codeLengths[symbol]]++] = symbol; - } - } - var /** number */ tableBits = rootBits; - var /** number */ tableSize = 1 << tableBits; - var /** number */ totalSize = tableSize; - if (offset[15] == 1) { - for (key = 0; key < totalSize; key++) { - tableGroup[tableOffset + key] = sorted[0]; - } - return totalSize; - } - key = 0; - symbol = 0; - for (var /** number */ len = 1, step = 2; len <= rootBits; len++, step <<= 1) { - for (; count[len] > 0; count[len]--) { - replicateValue(tableGroup, tableOffset + key, step, tableSize, len << 16 | sorted[symbol++]); - key = getNextKey(key, len); - } - } - var /** number */ mask = totalSize - 1; - var /** number */ low = -1; - var /** number */ currentOffset = tableOffset; - for (var /** number */ len = rootBits + 1, step = 2; len <= 15; len++, step <<= 1) { - for (; count[len] > 0; count[len]--) { - if ((key & mask) != low) { - currentOffset += tableSize; - tableBits = nextTableBitSize(count, len, rootBits); - tableSize = 1 << tableBits; - totalSize += tableSize; - low = key & mask; - tableGroup[tableOffset + low] = (tableBits + rootBits) << 16 | (currentOffset - tableOffset - low); - } - replicateValue(tableGroup, currentOffset + (key >> rootBits), step, tableSize, (len - rootBits) << 16 | sorted[symbol++]); - key = getNextKey(key, len); - } - } - return totalSize; - } - - /** - * @param {!State} s - * @return {void} - */ - function doReadMoreInput(s) { - if (s.endOfStreamReached != 0) { - if (halfAvailable(s) >= -2) { - return; - } - throw "No more input"; - } - var /** number */ readOffset = s.halfOffset << 1; - var /** number */ bytesInBuffer = 4096 - readOffset; - s.byteBuffer.copyWithin(0, readOffset, 4096); - s.halfOffset = 0; - while (bytesInBuffer < 4096) { - var /** number */ spaceLeft = 4096 - bytesInBuffer; - var /** number */ len = readInput(s.input, s.byteBuffer, bytesInBuffer, spaceLeft); - if (len <= 0) { - s.endOfStreamReached = 1; - s.tailBytes = bytesInBuffer; - bytesInBuffer += 1; - break; - } - bytesInBuffer += len; - } - bytesToNibbles(s, bytesInBuffer); - } - /** - * @param {!State} s - * @param {number} endOfStream - * @return {void} - */ - function checkHealth(s, endOfStream) { - if (s.endOfStreamReached == 0) { - return; - } - var /** number */ byteOffset = (s.halfOffset << 1) + ((s.bitOffset + 7) >> 3) - 4; - if (byteOffset > s.tailBytes) { - throw "Read after end"; - } - if ((endOfStream != 0) && (byteOffset != s.tailBytes)) { - throw "Unused bytes after end"; - } - } - /** - * @param {!State} s - * @param {number} n - * @return {number} - */ - function readFewBits(s, n) { - var /** number */ val = (s.accumulator32 >>> s.bitOffset) & ((1 << n) - 1); - s.bitOffset += n; - return val; - } - /** - * @param {!State} s - * @param {number} n - * @return {number} - */ - function readManyBits(s, n) { - var /** number */ low = readFewBits(s, 16); - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - return low | (readFewBits(s, n - 16) << 16); - } - /** - * @param {!State} s - * @return {void} - */ - function initBitReader(s) { - s.byteBuffer = new Int8Array(4160); - s.accumulator32 = 0; - s.shortBuffer = new Int16Array(2080); - s.bitOffset = 32; - s.halfOffset = 2048; - s.endOfStreamReached = 0; - prepare(s); - } - /** - * @param {!State} s - * @return {void} - */ - function prepare(s) { - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - checkHealth(s, 0); - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - /** - * @param {!State} s - * @return {void} - */ - function reload(s) { - if (s.bitOffset == 32) { - prepare(s); - } - } - /** - * @param {!State} s - * @return {void} - */ - function jumpToByteBoundary(s) { - var /** number */ padding = (32 - s.bitOffset) & 7; - if (padding != 0) { - var /** number */ paddingBits = readFewBits(s, padding); - if (paddingBits != 0) { - throw "Corrupted padding bits"; - } - } - } - /** - * @param {!State} s - * @return {number} - */ - function halfAvailable(s) { - var /** number */ limit = 2048; - if (s.endOfStreamReached != 0) { - limit = (s.tailBytes + 1) >> 1; - } - return limit - s.halfOffset; - } - /** - * @param {!State} s - * @param {!Int8Array} data - * @param {number} offset - * @param {number} length - * @return {void} - */ - function copyBytes(s, data, offset, length) { - if ((s.bitOffset & 7) != 0) { - throw "Unaligned copyBytes"; - } - while ((s.bitOffset != 32) && (length != 0)) { - data[offset++] = (s.accumulator32 >>> s.bitOffset); - s.bitOffset += 8; - length--; - } - if (length == 0) { - return; - } - var /** number */ copyNibbles = min(halfAvailable(s), length >> 1); - if (copyNibbles > 0) { - var /** number */ readOffset = s.halfOffset << 1; - var /** number */ delta = copyNibbles << 1; - data.set(s.byteBuffer.subarray(readOffset, readOffset + delta), offset); - offset += delta; - length -= delta; - s.halfOffset += copyNibbles; - } - if (length == 0) { - return; - } - if (halfAvailable(s) > 0) { - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - while (length != 0) { - data[offset++] = (s.accumulator32 >>> s.bitOffset); - s.bitOffset += 8; - length--; - } - checkHealth(s, 0); - return; - } - while (length > 0) { - var /** number */ len = readInput(s.input, data, offset, length); - if (len == -1) { - throw "Unexpected end of input"; - } - offset += len; - length -= len; - } - } - /** - * @param {!State} s - * @param {number} byteLen - * @return {void} - */ - function bytesToNibbles(s, byteLen) { - var /** !Int8Array */ byteBuffer = s.byteBuffer; - var /** number */ halfLen = byteLen >> 1; - var /** !Int16Array */ shortBuffer = s.shortBuffer; - for (var /** number */ i = 0; i < halfLen; ++i) { - shortBuffer[i] = ((byteBuffer[i * 2] & 0xFF) | ((byteBuffer[(i * 2) + 1] & 0xFF) << 8)); - } - } - - var LOOKUP = new Int32Array(2048); - /** - * @param {!Int32Array} lookup - * @param {!string} map - * @param {!string} rle - * @return {void} - */ - function unpackLookupTable(lookup, map, rle) { - for (var /** number */ i = 0; i < 256; ++i) { - lookup[i] = i & 0x3F; - lookup[512 + i] = i >> 2; - lookup[1792 + i] = 2 + (i >> 6); - } - for (var /** number */ i = 0; i < 128; ++i) { - lookup[1024 + i] = 4 * (map.charCodeAt(i) - 32); - } - for (var /** number */ i = 0; i < 64; ++i) { - lookup[1152 + i] = i & 1; - lookup[1216 + i] = 2 + (i & 1); - } - var /** number */ offset = 1280; - for (var /** number */ k = 0; k < 19; ++k) { - var /** number */ value = k & 3; - var /** number */ rep = rle.charCodeAt(k) - 32; - for (var /** number */ i = 0; i < rep; ++i) { - lookup[offset++] = value; - } - } - for (var /** number */ i = 0; i < 16; ++i) { - lookup[1792 + i] = 1; - lookup[2032 + i] = 6; - } - lookup[1792] = 0; - lookup[2047] = 7; - for (var /** number */ i = 0; i < 256; ++i) { - lookup[1536 + i] = lookup[1792 + i] << 3; - } - } - { - unpackLookupTable(LOOKUP, " !! ! \"#$##%#$&'##(#)#++++++++++((&*'##,---,---,-----,-----,-----&#'###.///.///./////./////./////&#'# ", "A/* ': & : $ \u0081 @"); - } - - /** - * @constructor - * @struct - */ - function State() { - /** @type {!Int8Array} */ - this.ringBuffer = new Int8Array(0); - /** @type {!Int8Array} */ - this.contextModes = new Int8Array(0); - /** @type {!Int8Array} */ - this.contextMap = new Int8Array(0); - /** @type {!Int8Array} */ - this.distContextMap = new Int8Array(0); - /** @type {!Int8Array} */ - this.distExtraBits = new Int8Array(0); - /** @type {!Int8Array} */ - this.output = new Int8Array(0); - /** @type {!Int8Array} */ - this.byteBuffer = new Int8Array(0); - /** @type {!Int16Array} */ - this.shortBuffer = new Int16Array(0); - /** @type {!Int32Array} */ - this.intBuffer = new Int32Array(0); - /** @type {!Int32Array} */ - this.rings = new Int32Array(0); - /** @type {!Int32Array} */ - this.blockTrees = new Int32Array(0); - /** @type {!Int32Array} */ - this.literalTreeGroup = new Int32Array(0); - /** @type {!Int32Array} */ - this.commandTreeGroup = new Int32Array(0); - /** @type {!Int32Array} */ - this.distanceTreeGroup = new Int32Array(0); - /** @type {!Int32Array} */ - this.distOffset = new Int32Array(0); - /** @type {!number} */ - this.runningState = 0; - /** @type {!number} */ - this.nextRunningState = 0; - /** @type {!number} */ - this.accumulator32 = 0; - /** @type {!number} */ - this.bitOffset = 0; - /** @type {!number} */ - this.halfOffset = 0; - /** @type {!number} */ - this.tailBytes = 0; - /** @type {!number} */ - this.endOfStreamReached = 0; - /** @type {!number} */ - this.metaBlockLength = 0; - /** @type {!number} */ - this.inputEnd = 0; - /** @type {!number} */ - this.isUncompressed = 0; - /** @type {!number} */ - this.isMetadata = 0; - /** @type {!number} */ - this.literalBlockLength = 0; - /** @type {!number} */ - this.numLiteralBlockTypes = 0; - /** @type {!number} */ - this.commandBlockLength = 0; - /** @type {!number} */ - this.numCommandBlockTypes = 0; - /** @type {!number} */ - this.distanceBlockLength = 0; - /** @type {!number} */ - this.numDistanceBlockTypes = 0; - /** @type {!number} */ - this.pos = 0; - /** @type {!number} */ - this.maxDistance = 0; - /** @type {!number} */ - this.distRbIdx = 0; - /** @type {!number} */ - this.trivialLiteralContext = 0; - /** @type {!number} */ - this.literalTreeIdx = 0; - /** @type {!number} */ - this.commandTreeIdx = 0; - /** @type {!number} */ - this.j = 0; - /** @type {!number} */ - this.insertLength = 0; - /** @type {!number} */ - this.contextMapSlice = 0; - /** @type {!number} */ - this.distContextMapSlice = 0; - /** @type {!number} */ - this.contextLookupOffset1 = 0; - /** @type {!number} */ - this.contextLookupOffset2 = 0; - /** @type {!number} */ - this.distanceCode = 0; - /** @type {!number} */ - this.numDirectDistanceCodes = 0; - /** @type {!number} */ - this.distancePostfixMask = 0; - /** @type {!number} */ - this.distancePostfixBits = 0; - /** @type {!number} */ - this.distance = 0; - /** @type {!number} */ - this.copyLength = 0; - /** @type {!number} */ - this.maxBackwardDistance = 0; - /** @type {!number} */ - this.maxRingBufferSize = 0; - /** @type {!number} */ - this.ringBufferSize = 0; - /** @type {!number} */ - this.expectedTotalSize = 0; - /** @type {!number} */ - this.outputOffset = 0; - /** @type {!number} */ - this.outputLength = 0; - /** @type {!number} */ - this.outputUsed = 0; - /** @type {!number} */ - this.ringBufferBytesWritten = 0; - /** @type {!number} */ - this.ringBufferBytesReady = 0; - /** @type {!number} */ - this.isEager = 0; - /** @type {!number} */ - this.isLargeWindow = 0; - /** @type {!InputStream|null} */ - this.input = null; - this.ringBuffer = new Int8Array(0); - this.rings = new Int32Array(10); - this.rings[0] = 16; - this.rings[1] = 15; - this.rings[2] = 11; - this.rings[3] = 4; - } - - /** - * @param {!Int8Array} dictionary - * @param {!string} data0 - * @param {!string} data1 - * @param {!string} skipFlip - * @return {void} - */ - function unpackDictionaryData(dictionary, data0, data1, skipFlip) { - var /** !Int8Array */ dict = toUsAsciiBytes(data0 + data1); - if (dict.length != dictionary.length) { - throw "Corrupted brotli dictionary"; - } - var /** number */ offset = 0; - var /** number */ n = skipFlip.length; - for (var /** number */ i = 0; i < n; i += 2) { - var /** number */ skip = skipFlip.charCodeAt(i) - 36; - var /** number */ flip = skipFlip.charCodeAt(i + 1) - 36; - offset += skip; - for (var /** number */ j = 0; j < flip; ++j) { - dict[offset] |= 0x80; - offset++; - } - } - dictionary.set(dict); - } - { - var /** !Int8Array */ dictionary = new Int8Array(122784); - unpackDictionaryData(dictionary, "timedownlifeleftbackcodedatashowonlysitecityopenjustlikefreeworktextyearoverbodyloveformbookplaylivelinehelphomesidemorewordlongthemviewfindpagedaysfullheadtermeachareafromtruemarkableuponhighdatelandnewsevennextcasebothpostusedmadehandherewhatnameLinkblogsizebaseheldmakemainuser') +holdendswithNewsreadweresigntakehavegameseencallpathwellplusmenufilmpartjointhislistgoodneedwayswestjobsmindalsologorichuseslastteamarmyfoodkingwilleastwardbestfirePageknowaway.pngmovethanloadgiveselfnotemuchfeedmanyrockicononcelookhidediedHomerulehostajaxinfoclublawslesshalfsomesuchzone100%onescareTimeracebluefourweekfacehopegavehardlostwhenparkkeptpassshiproomHTMLplanTypedonesavekeepflaglinksoldfivetookratetownjumpthusdarkcardfilefearstaykillthatfallautoever.comtalkshopvotedeepmoderestturnbornbandfellroseurl(skinrolecomeactsagesmeetgold.jpgitemvaryfeltthensenddropViewcopy1.0\"stopelseliestourpack.gifpastcss?graymean>rideshotlatesaidroadvar feeljohnrickportfast'UA-dead
        poorbilltypeU.S.woodmust2px;Inforankwidewantwalllead[0];paulwavesure$('#waitmassarmsgoesgainlangpaid!-- lockunitrootwalkfirmwifexml\"songtest20pxkindrowstoolfontmailsafestarmapscorerainflowbabyspansays4px;6px;artsfootrealwikiheatsteptriporg/lakeweaktoldFormcastfansbankveryrunsjulytask1px;goalgrewslowedgeid=\"sets5px;.js?40pxif (soonseatnonetubezerosentreedfactintogiftharm18pxcamehillboldzoomvoideasyringfillpeakinitcost3px;jacktagsbitsrolleditknewnearironfreddiskwentsoilputs/js/holyT22:ISBNT20:adamsees

        json', 'contT21: RSSloopasiamoon

        soulLINEfortcartT14:

        80px!--<9px;T04:mike:46ZniceinchYorkricezh:d'));puremageparatonebond:37Z_of_']);000,zh:gtankyardbowlbush:56ZJava30px\n|}\n%C3%:34ZjeffEXPIcashvisagolfsnowzh:iquer.csssickmeatmin.binddellhirepicsrent:36ZHTTP-201fotowolfEND xbox:54ZBODYdick;\n}\nexit:35Zvarsbeat'});diet999;anne}}sonyguysfuckpipe|-\n!002)ndow[1];[];\nLog salt\r\n\t\tbangtrimbath){\r\n00px\n});ko:lfeesad>\rs:// [];tollplug(){\n{\r\n .js'200pdualboat.JPG);\n}quot);\n\n');\n\r\n}\r201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037201320122011201020092008200720062005200420032002200120001999199819971996199519941993199219911990198919881987198619851984198319821981198019791978197719761975197419731972197119701969196819671966196519641963196219611960195919581957195619551954195319521951195010001024139400009999comomC!sesteestaperotodohacecadaaC1obiendC-aasC-vidacasootroforosolootracualdijosidograntipotemadebealgoquC)estonadatrespococasabajotodasinoaguapuesunosantediceluisellamayozonaamorpisoobraclicellodioshoracasiP7P0P=P0P>PP>Q\u0002P8P7P=P>P4P>Q\u0002P>P6P5P>P=P8Q\u0005P\u001DP0P5P5P1Q\u000BPP2Q\u000BP2P>P\u001DP>P>P1P\u001FP>P;P8P=P8P P$P\u001DP5P\u001CQ\u000BQ\u0002Q\u000BP\u001EP=P8Pthing.org/multiheardPowerstandtokensolid(thisbringshipsstafftriedcallsfullyfactsagentThis //-->adminegyptEvent15px;Emailtrue\"crossspentblogsbox\">notedleavechinasizesguest

        robotheavytrue,sevengrandcrimesignsawaredancephase>\n\n\r\nname=diegopage swiss-->\n\n#fff;\">Log.com\"treatsheet) && 14px;sleepntentfiledja:c\u0003id=\"cName\"worseshots-box-delta\n<bears:48Z spendbakershops= \"\";php\">ction13px;brianhellosize=o=%2F joinmaybe, fjsimg\" \")[0]MTopBType\"newlyDanskczechtrailknowsfaq\">zh-cn10);\n-1\");type=bluestrulydavis.js';>\r\n\r\nform jesus100% menu.\r\n\t\r\nwalesrisksumentddingb-likteachgif\" vegasdanskeestishqipsuomisobredesdeentretodospuedeaC1osestC!tienehastaotrospartedondenuevohacerformamismomejormundoaquC-dC-assC3loayudafechatodastantomenosdatosotrassitiomuchoahoralugarmayorestoshorastenerantesfotosestaspaC-snuevasaludforosmedioquienmesespoderchileserC!vecesdecirjosC)estarventagrupohechoellostengoamigocosasnivelgentemismaairesjuliotemashaciafavorjuniolibrepuntobuenoautorabrilbuenatextomarzosaberlistaluegocC3moenerojuegoperC:haberestoynuncamujervalorfueralibrogustaigualvotoscasosguC-apuedosomosavisousteddebennochebuscafaltaeurosseriedichocursoclavecasasleC3nplazolargoobrasvistaapoyojuntotratavistocrearcampohemoscincocargopisosordenhacenC!readiscopedrocercapuedapapelmenorC:tilclarojorgecalleponertardenadiemarcasigueellassiglocochemotosmadreclaserestoniC1oquedapasarbancohijosviajepabloC)stevienereinodejarfondocanalnorteletracausatomarmanoslunesautosvillavendopesartipostengamarcollevapadreunidovamoszonasambosbandamariaabusomuchasubirriojavivirgradochicaallC-jovendichaestantalessalirsuelopesosfinesllamabuscoC)stalleganegroplazahumorpagarjuntadobleislasbolsabaC1ohablaluchaC\u0001readicenjugarnotasvalleallC!cargadolorabajoestC)gustomentemariofirmacostofichaplatahogarartesleyesaquelmuseobasespocosmitadcielochicomiedoganarsantoetapadebesplayaredessietecortecoreadudasdeseoviejodeseaaguas"domaincommonstatuseventsmastersystemactionbannerremovescrollupdateglobalmediumfilternumberchangeresultpublicscreenchoosenormaltravelissuessourcetargetspringmodulemobileswitchphotosborderregionitselfsocialactivecolumnrecordfollowtitle>eitherlengthfamilyfriendlayoutauthorcreatereviewsummerserverplayedplayerexpandpolicyformatdoublepointsseriespersonlivingdesignmonthsforcesuniqueweightpeopleenergynaturesearchfigurehavingcustomoffsetletterwindowsubmitrendergroupsuploadhealthmethodvideosschoolfutureshadowdebatevaluesObjectothersrightsleaguechromesimplenoticesharedendingseasonreportonlinesquarebuttonimagesenablemovinglatestwinterFranceperiodstrongrepeatLondondetailformeddemandsecurepassedtoggleplacesdevicestaticcitiesstreamyellowattackstreetflighthiddeninfo\">openedusefulvalleycausesleadersecretseconddamagesportsexceptratingsignedthingseffectfieldsstatesofficevisualeditorvolumeReportmuseummoviesparentaccessmostlymother\" id=\"marketgroundchancesurveybeforesymbolmomentspeechmotioninsidematterCenterobjectexistsmiddleEuropegrowthlegacymannerenoughcareeransweroriginportalclientselectrandomclosedtopicscomingfatheroptionsimplyraisedescapechosenchurchdefinereasoncorneroutputmemoryiframepolicemodelsNumberduringoffersstyleskilledlistedcalledsilvermargindeletebetterbrowselimitsGlobalsinglewidgetcenterbudgetnowrapcreditclaimsenginesafetychoicespirit-stylespreadmakingneededrussiapleaseextentScriptbrokenallowschargedividefactormember-basedtheoryconfigaroundworkedhelpedChurchimpactshouldalwayslogo\" bottomlist\">){var prefixorangeHeader.push(couplegardenbridgelaunchReviewtakingvisionlittledatingButtonbeautythemesforgotSearchanchoralmostloadedChangereturnstringreloadMobileincomesupplySourceordersviewed courseAbout island: The dialoghousesBEGIN MexicostartscentreheightaddingIslandassetsEmpireSchooleffortdirectnearlymanualSelect.\n\nOnejoinedmenu\">PhilipawardshandleimportOfficeregardskillsnationSportsdegreeweekly (e.g.behinddoctorloggedunited
        beyond-scaleacceptservedmarineFootercamera\n_form\"leavesstress\" />\r\n.gif\" onloadloaderOxfordsistersurvivlistenfemaleDesignsize=\"appealtext\">levelsthankshigherforcedanimalanyoneAfricaagreedrecentPeople
        wonderpricesturned|| {};main\">inlinesundaywrap\">failedcensusminutebeaconquotes150px|estateremoteemail\"linkedright;signalformal1.htmlsignupprincefloat:.png\" forum.AccesspaperssoundsextendHeightsliderUTF-8\"& Before. WithstudioownersmanageprofitjQueryannualparamsboughtfamousgooglelongeri++) {israelsayingdecidehome\">headerensurebranchpiecesblock;statedtop\">boston.test(avatartested_countforumsschemaindex,filledsharesreaderalert(appearSubmitline\">body\">\n* TheThoughseeingjerseyNews\nSystem DavidcancertablesprovedApril reallydriveritem\">more\">boardscolorscampusfirst || [];media.guitarfinishwidth:showedOther .php\" assumelayerswilsonstoresreliefswedenCustomeasily your String\n\nWhiltaylorclear:resortfrenchthough\") + \"buyingbrandsMembername\">oppingsector5px;\">vspacepostermajor coffeemartinmaturehappenkansaslink\">Images=falsewhile hspace0& \n\nIn powerPolski-colorjordanBottomStart -count2.htmlnews\">01.jpgOnline-rightmillerseniorISBN 00,000 guidesvalue)ectionrepair.xml\" rights.html-blockregExp:hoverwithinvirginphones\rusing \n\tvar >');\n\t\n\nbahasabrasilgalegomagyarpolskisrpskiX1X/Y\u0008d8-f\u0016\u0007g.\u0000d=\u0013g9\u0001i+\u0014d?!f\u0001/d8-e\u001B=f\u0008\u0011d;,d8\u0000d8*e\u0005,e\u000F8g.!g\u0010\u0006h.:e\u001D\u001Be\u000F/d;%f\u001C\re\n!f\u00176i\u00174d8*d::d:'e\u0013\u0001h\u0007*e71d<\u0001d8\u001Af\u001F%g\u001C\u000Be7%d=\u001Ch\u0001\u0014g3;f2!f\u001C\tg=\u0011g+\u0019f\t\u0000f\u001C\th/\u0004h.:d8-e?\u0003f\u0016\u0007g+ g\u0014(f\u00087i&\u0016i!5d=\u001Ch\u0000\u0005f\n\u0000f\u001C/i\u0017.i\"\u0018g\u001B8e\u00053d8\u000Bh==f\u0010\u001Cg4\"d=?g\u0014(h=/d;6e\u001C(g:?d8;i\"\u0018h5\u0004f\u0016\u0019h'\u0006i\"\u0011e\u001B\u001Ee$\rf3(e\u0006\u000Cg=\u0011g;\u001Cf\u00146h\u0017\u000Fe\u0006\u0005e.9f\u000E(h\r\u0010e8\u0002e\u001C:f6\u0008f\u0001/g):i\u00174e\u000F\u0011e8\u0003d;\u0000d9\u0008e%=e\u000F\u000Bg\u0014\u001Ff4;e\u001B>g\t\u0007e\u000F\u0011e1\u0015e&\u0002f\u001E\u001Cf\t\u000Bf\u001C:f\u00160i\u0017;f\u001C\u0000f\u00160f\u00169e<\u000Fe\u000C\u0017d:,f\u000F\u0010d>\u001Be\u00053d:\u000Ef\u001B4e$\u001Ah?\u0019d8*g3;g;\u001Fg\u001F%i\u0001\u0013f88f\u0008\u000Fe9?e\u0011\ne\u00056d;\u0016e\u000F\u0011h!(e.\te\u0005(g,,d8\u0000d<\u001Ae\u0011\u0018h?\u001Bh!\u000Cg\u00029e\u0007;g\t\u0008f\u001D\u0003g\u00145e-\u0010d8\u0016g\u0015\u000Ch.>h.!e\u0005\rh49f\u0015\u0019h\u00022e\n e\u0005%f4;e\n(d;\u0016d;,e\u0015\u0006e\u0013\u0001e\r\u001Ae.\"g\u000E0e\u001C(d8\nf57e&\u0002d=\u0015e72g;\u000Fg\u0015\u0019h(\u0000h/&g;\u0006g$>e\u000C:g\u0019;e=\u0015f\u001C,g+\u0019i\u001C\u0000h&\u0001d;7f f\u000E%e\u001B=e.6e;:h.>f\u001C\u000Be\u000F\u000Bi\u0018\u0005h/;f3\u0015e>\u000Bd=\rg=.g;\u000Ff5\u000Ei\u0000\tf\u000B)h?\u0019f 7e=\u0013e\t\re\u0008\u0006g1;f\u000E\u0012h!\u000Ce\u001B d8:d:$f\u0018\u0013f\u001C\u0000e\u0010\u000Ei\u001F3d9\u0010d8\rh\u0003=i\u0000\u001Ah?\u0007h!\u000Cd8\u001Ag'\u0011f\n\u0000e\u000F/h\u0003=h.>e$\u0007e\u0010\u0008d=\u001Ce$'e.6g$>d<\u001Ag \u0014g)6d8\u0013d8\u001Ae\u0005(i\u0003(i!9g\u001B.h?\u0019i\u0007\u000Ch?\u0018f\u0018/e<\u0000e'\u000Bf\u0003\u0005e\u00065g\u00145h\u0004\u0011f\u0016\u0007d;6e\u0013\u0001g\t\u000Ce8.e\n)f\u0016\u0007e\u000C\u0016h5\u0004f:\u0010e$'e-&e-&d9 e\u001C0e\u001D\u0000f5\u000Fh'\u0008f\n\u0015h5\u0004e7%g(\u000Bh&\u0001f1\u0002f\u0000\u000Ed9\u0008f\u00176e\u0000\u0019e\n\u001Fh\u0003=d8;h&\u0001g\u001B.e\t\rh5\u0004h./e\u001F\u000Ee8\u0002f\u00169f3\u0015g\u00145e=1f\u000B\u001Bh\u0001\u0018e#0f\u0018\u000Ed;;d=\u0015e\u0001%e:7f\u00150f\r.g>\u000Ee\u001B=f1=h=&d;\u000Bg;\rd=\u0006f\u0018/d:$f5\u0001g\u0014\u001Fd:'f\t\u0000d;%g\u00145h/\u001Df\u0018>g$:d8\u0000d:\u001Be\r\u0015d=\rd::e\u0011\u0018e\u0008\u0006f\u001E\u0010e\u001C0e\u001B>f\u0017\u0005f88e7%e\u00057e-&g\u0014\u001Fg3;e\u0008\u0017g=\u0011e\u000F\u000Be8\u0016e-\u0010e/\u0006g \u0001i\"\u0011i\u0001\u0013f\u000E'e\u00086e\u001C0e\u000C:e\u001F:f\u001C,e\u0005(e\u001B=g=\u0011d8\ni\u0007\rh&\u0001g,,d:\u000Ce\u0016\u001Cf,\"h?\u001Be\u0005%e\u000F\u000Bf\u0003\u0005h?\u0019d:\u001Bh\u0000\u0003h/\u0015e\u000F\u0011g\u000E0e\u001F9h.-d;%d8\nf\u0014?e:\u001Cf\u0008\u0010d8:g\u000E/e\"\u0003i&\u0019f8/e\u0010\u000Cf\u00176e(1d9\u0010e\u000F\u0011i\u0000\u0001d8\u0000e.\u001Ae<\u0000e\u000F\u0011d=\u001Ce\u0013\u0001f \u0007e\u0007\u0006f,\"h?\u000Eh'#e\u00063e\u001C0f\u00169d8\u0000d8\u000Bd;%e\u000F\nh4#d;;f\u0008\u0016h\u0000\u0005e.\"f\u00087d;#h!(g'/e\u0008\u0006e%3d::f\u00150g \u0001i\u0014\u0000e\u0014.e\u0007:g\u000E0g&;g:?e:\u0014g\u0014(e\u0008\u0017h!(d8\re\u0010\u000Cg<\u0016h>\u0011g;\u001Fh.!f\u001F%h/\"d8\rh&\u0001f\u001C\te\u00053f\u001C:f\u001E\u0004e>\u0008e$\u001Af\u0012-f\u0014>g;\u0004g;\u0007f\u0014?g-\u0016g\u001B4f\u000E%h\u0003=e\n\u001Bf\u001D%f:\u0010f\u0019\u0002i\u0016\u0013g\u001C\u000Be\u00080g\u0003-i\u0017(e\u00053i\u0014.d8\u0013e\u000C:i\u001D\u001Ee88h\u000B1h/-g\u0019>e:&e8\u000Cf\u001C\u001Bg>\u000Ee%3f/\u0014h>\u0003g\u001F%h/\u0006h'\u0004e.\u001Ae;:h..i\u0003(i\u0017(f\u0004\u000Fh'\u0001g2>e=)f\u0017%f\u001C,f\u000F\u0010i+\u0018e\u000F\u0011h(\u0000f\u00169i\u001D\"e\u001F:i\u0007\u0011e$\u0004g\u0010\u0006f\u001D\u0003i\u0019\u0010e=1g\t\u0007i\u00136h!\u000Ch?\u0018f\u001C\te\u0008\u0006d:+g\t)e\u0013\u0001g;\u000Fh\u0010%f7;e\n d8\u0013e.6h?\u0019g'\rh/\u001Di\"\u0018h57f\u001D%d8\u001Ae\n!e\u0005,e\u0011\nh.0e=\u0015g.\u0000d;\u000Bh4(i\u0007\u000Fg\u00147d::e=1e\u0013\re<\u0015g\u0014(f\n%e\u0011\ni\u0003(e\u0008\u0006e?+i\u0000\u001Fe\u0012(h/\"f\u00176e0\u001Af3(f\u0004\u000Fg\u00143h/7e-&f !e:\u0014h/%e\u000E\u0006e\u000F2e\u000F*f\u0018/h?\u0014e\u001B\u001Eh4-d90e\u0010\rg'0d8:d:\u0006f\u0008\u0010e\n\u001Fh/4f\u0018\u000Ed>\u001Be:\u0014e-)e-\u0010d8\u0013i\"\u0018g(\u000Be:\u000Fd8\u0000h\u0008,f\u001C\u0003e\u0013!e\u000F*f\u001C\te\u00056e.\u0003d?\u001Df\n$h\u0000\u000Cd8\u0014d;\ne$)g*\u0017e\u000F#e\n(f\u0000\u0001g\n6f\u0000\u0001g\t9e\u0008+h.$d8:e?\u0005i!;f\u001B4f\u00160e0\u000Fh/4f\u0008\u0011e\u0000\u0011d=\u001Cd8:e*\u0012d=\u0013e\u000C\u0005f\u000B,i\u0002#d9\u0008d8\u0000f 7e\u001B=e\u0006\u0005f\u0018/e\u0010&f 9f\r.g\u00145h'\u0006e-&i\u0019\"e\u00057f\u001C\th?\u0007g(\u000Bg\u00141d:\u000Ed::f\t\re\u0007:f\u001D%d8\rh?\u0007f-#e\u001C(f\u0018\u000Ef\u0018\u001Ff\u0015\u0005d:\u000Be\u00053g3;f \u0007i\"\u0018e\u0015\u0006e\n!h>\u0013e\u0005%d8\u0000g\u001B4e\u001F:g!\u0000f\u0015\u0019e-&d:\u0006h'#e;:g-\u0011g;\u0013f\u001E\u001Ce\u0005(g\u0010\u0003i\u0000\u001Ag\u001F%h.!e\u0008\u0012e/9d:\u000Eh\t:f\u001C/g\u001B8e\u0006\u000Ce\u000F\u0011g\u0014\u001Fg\u001C\u001Fg\u001A\u0004e;:g+\u000Bg-\tg:'g1;e\u001E\u000Bg;\u000Fi*\u000Ce.\u001Eg\u000E0e\u00086d=\u001Cf\u001D%h\u0007*f \u0007g->d;%d8\u000Be\u000E\u001Fe\u0008\u001Bf\u0017 f3\u0015e\u00056d8-e\u0000\u000Bd::d8\u0000e\u0008\u0007f\u000C\u0007e\r\u0017e\u00053i\u0017-i\u001B\u0006e\u001B\"g,,d8\te\u00053f3(e\u001B f-$g\u0005'g\t\u0007f71e\u001C3e\u0015\u0006d8\u001Ae9?e7\u001Ef\u0017%f\u001C\u001Fi+\u0018g:'f\u001C\u0000h?\u0011g;\u0011h!\u000Cd8:d:$i\u0000\u001Ah/\u0004d;7h'\te>\u0017g2>e\r\u000Ee.6e:-e.\u000Cf\u0008\u0010f\u0004\u001Fh'\te.\th#\u0005e>\u0017e\u00080i\u0002.d;6e\u00086e:&i#\u001Fe\u0013\u0001h\u0019=g\u00046h=,h==f\n%d;7h.0h\u0000\u0005f\u00169f!\u0008h!\u000Cf\u0014?d::f0\u0011g\u0014(e\u0013\u0001d8\u001Ch%?f\u000F\u0010e\u0007:i\u0005\u0012e:\u0017g\u00046e\u0010\u000Ed;\u0018f,>g\u0003-g\u00029d;%e\t\re.\u000Ce\u0005(e\u000F\u0011e8\u0016h.>g=.i\"\u0006e/g%\u001Eh\u000E7e>\u0017e\u0008)g\u0014(g;'g;-d= d;,h?\u0019d9\u0008f(!e<\u000Fh/-h(\u0000h\u0003=e$\u001Fi\u001B\u0005h\u0019\u000Ef\u0013\rd=\u001Ci#\u000Ef d9&f\u001C\tf\u0015\u0008f5\u000Bh/\u0015g';e\n(f\t\rh\u0003=e\u00063e.\u001Ah\u0002!g%(d8\rf\u0016-i\u001C\u0000f1\u0002d8\re>\u0017e\n\u001Ef3\u0015d9\u000Bi\u00174i\u0007\u0007g\u0014(h\u0010%i\u0014\u0000f\n\u0015h/\tg\u001B.f \u0007g\u00081f\u0003\u0005f\u0011\u0004e=1f\u001C\td:\u001Bh$\u0007h#=f\u0016\u0007e-&f\u001C:d<\u001Af\u00150e-\u0017h#\u0005d?.h4-g\t)e\u0006\u001Cf\u001D\u0011e\u0005(i\u001D\"g2>e\u0013\u0001e\u00056e.\u001Ed:\u000Bf\u0003\u0005f04e93f\u000F\u0010g$:d8\ne8\u0002h0\"h0\"f\u0019.i\u0000\u001Af\u0015\u0019e8\u0008d8\nd< g1;e\u0008+f-\u000Cf\u001B2f\u000B%f\u001C\te\u0008\u001Bf\u00160i\u0005\rd;6e\u000F*h&\u0001f\u00176d;#h3\u0007h(\nh>>e\u00080d::g\u0014\u001Fh.\"i\u0018\u0005h\u0000\u0001e8\u0008e1\u0015g$:e?\u0003g\u0010\u0006h44e-\u0010g62g+\u0019d8;i!\u000Ch\u0007*g\u00046g:'e\u0008+g.\u0000e\r\u0015f\u00149i\u001D)i\u0002#d:\u001Bf\u001D%h/4f\t\u0013e<\u0000d;#g \u0001e\u0008 i\u0019$h/\u0001e\u00088h\n\u0002g\u001B.i\u0007\rg\u00029f,!f\u00158e$\u001Ae0\u0011h'\u0004e\u0008\u0012h5\u0004i\u0007\u0011f\t>e\u00080d;%e\u0010\u000Ee$'e\u0005(d8;i!5f\u001C\u0000d=3e\u001B\u001Eg-\u0014e$)d8\u000Bd?\u001Di\u001A\u001Cg\u000E0d;#f#\u0000f\u001F%f\n\u0015g%(e0\u000Ff\u00176f2\u0012f\u001C\tf-#e88g\u0014\u001Ah\u00073d;#g\u0010\u0006g\u001B.e=\u0015e\u0005,e<\u0000e$\re\u00086i\u0007\u0011h\u001E\re98g&\u000Fg\t\u0008f\u001C,e=\"f\u0008\u0010e\u0007\u0006e$\u0007h!\u000Cf\u0003\u0005e\u001B\u001Ee\u00080f\u0000\u001Df\u00033f\u0000\u000Ef 7e\r\u000Fh..h.$h/\u0001f\u001C\u0000e%=d:'g\u0014\u001Ff\u000C\tg\u0005'f\u001C\rh#\u0005e9?d8\u001Ce\n(f<+i\u0007\u0007h4-f\u00160f\t\u000Bg;\u0004e\u001B>i\u001D\"f\u001D?e\u000F\u0002h\u0000\u0003f\u0014?f2;e.9f\u0018\u0013e$)e\u001C0e\n*e\n\u001Bd::d;,e\r\u0007g:'i\u0000\u001Fe:&d::g\t)h0\u0003f\u00154f5\u0001h!\u000Ci\u0000 f\u0008\u0010f\u0016\u0007e-\u0017i\u001F)e\u001B=h48f\u0018\u0013e<\u0000e1\u0015g\u001B8i\u0017\u001Ch!(g\u000E0e=1h'\u0006e&\u0002f-$g>\u000Ee.9e$'e0\u000Ff\n%i\u0001\u0013f\u001D!f,>e?\u0003f\u0003\u0005h.8e$\u001Af3\u0015h'\u0004e.6e1\u0005d9&e:\u0017h?\u001Ef\u000E%g+\u000Be\r3d8>f\n%f\n\u0000e7'e%%h?\u0010g\u0019;e\u0005%d;%f\u001D%g\u0010\u0006h.:d:\u000Bd;6h\u0007*g\u00141d8-e\r\u000Ee\n\u001Ee\u0005,e&\u0008e&\u0008g\u001C\u001Ff-#d8\ri\u0014\u0019e\u0005(f\u0016\u0007e\u0010\u0008e\u0010\u000Cd;7e\u0000e7&e\u000F3h\u0002!d;=g-\u0014f!\u0008e.\u001Ei\u0019\u0005g\u00145d?!g;\u000Fg\u0010\u0006g\u0014\u001Fe\u0011=e.#d< d;;e\n!f-#e<\u000Fg\t9h\t2d8\u000Bf\u001D%e\r\u000Fd<\u001Ae\u000F*h\u0003=e=\u0013g\u00046i\u0007\rf\u00160e\u0005'e.9f\u000C\u0007e/g(\u000Be\u000C;g\u0016\u0017g;\u000Fh?\u0007h?\u0007e\u000E;d9\u000Be\t\rf\u00146e\u0005%e94e:&f\u001D\u0002e?\u0017g>\u000Ed8=f\u001C\u0000i+\u0018g\u0019;i\u0019\u0006f\u001C*f\u001D%e\n e7%e\u0005\rh4#f\u0015\u0019g(\u000Bg\t\u0008e\u001D\u0017h:+d=\u0013i\u0007\re:\u0006e\u0007:e\u0014.f\u0008\u0010f\u001C,e=\"e<\u000Fe\u001C\u001Fh1\u0006e\u0007:e\u00039d8\u001Cf\u00169i\u0002.g.1e\r\u0017d:,f1\u0002h\u0001\u000Ce\u000F\u0016e>\u0017h\u0001\u000Cd=\rg\u001B8d?!i!5i\u001D\"e\u0008\u0006i\u0012\u001Fg=\u0011i!5g!.e.\u001Ae\u001B>d>\u000Bg=\u0011e\u001D\u0000g'/f\u001E\u0001i\u0014\u0019h//g\u001B.g\u001A\u0004e.\u001Dh4\u001Df\u001C:e\u00053i#\u000Ei\u0019)f\u000E\u0008f\u001D\u0003g\u0017\u0005f/\u0012e. g\t)i\u0019$d:\u0006h)\u0015h+\u0016g\u0016>g\u0017\u0005e\u000F\nf\u00176f1\u0002h4-g+\u0019g\u00029e\u0004?g+%f/\u000Fe$)d8-e$.h.$h/\u0006f/\u000Fd8*e$)f4%e-\u0017d=\u0013e\u000F0g\u0001#g;4f\n$f\u001C,i!5d8*f\u0000'e.\u0018f\u00169e88h'\u0001g\u001B8f\u001C:f\u0008\u0018g\u0015%e:\u0014e=\u0013e>\u000Be8\u0008f\u00169d>?f !e\u001B-h\u0002!e8\u0002f\u0008?e1\u000Bf \u000Fg\u001B.e\u0011\u0018e7%e/\u000Ee\u0005\u0003e<\u0015h57f\u00149e\u000F\u0018g,,e\u001B\u001Bd<\u001Ah.!h**f\u0018\u000Ei\u001A\u0010g'\u0001e.\u001De.\u001Dh'\u0004h\u000C\u0003f6\u0008h49e\u00051e\u0010\u000Ce?\u0018h.0d=\u0013g3;e8&f\u001D%e\u0010\re-\u0017g\u0019e\n g\u001B\u001Fe\u000F\u0017e\u00080d:\u000Cf\t\u000Be$'i\u0007\u000Ff\u0008\u0010d::f\u00150i\u0007\u000Fe\u00051d:+e\u000C:e\u001F\u001Fe%3e-)e\u000E\u001Fe\u0008\u0019f\t\u0000e\u001C(g;\u0013f\u001D\u001Fi\u0000\u001Ad?!h6\u0005g:'i\u0005\rg=.e=\u0013f\u00176d<\u0018g'\u0000f\u0000'f\u0004\u001Ff\u0008?d:'i\u0001\nf\u00082e\u0007:e\u000F#f\u000F\u0010d:$e01d8\u001Ad?\u001De\u0001%g(\u000Be:&e\u000F\u0002f\u00150d:\u000Bd8\u001Af\u00154d8*e11d8\u001Cf\u0003\u0005f\u0004\u001Fg\t9f.\ne\u0008\u0006i!\u001Ef\u0010\u001Ce0\u000Be1\u001Ed:\u000Ei\u0017(f\u00087h4\"e\n!e#0i\u001F3e\u000F\ne\u00056h4\"g;\u000Fe\u001D\u001Af\u000C\u0001e92i\u0003(f\u0008\u0010g+\u000Be\u0008)g\u001B\nh\u0000\u0003h\u0019\u0011f\u0008\u0010i\u0003=e\u000C\u0005h#\u0005g\u0014(f\u00086f/\u0014h5\u001Bf\u0016\u0007f\u0018\u000Ef\u000B\u001Be\u0015\u0006e.\u000Cf\u00154g\u001C\u001Ff\u0018/g\u001Ce/\u0006g\"\u000Ei#\u001Fg;?h\t2g(3e.\u001Ag;\u0008d:\u000Eg\u0014\u001Fg\t)d>\u001Bf1\u0002f\u0010\u001Cg\u000B\u0010e\n\u001Bi\u0007\u000Fd8%i\u0007\rf08h?\u001Ce\u0006\u0019g\u001C\u001Ff\u001C\ti\u0019\u0010g+\u001Ed:\te/9h1!h49g\u0014(d8\re%=g;\u001De/9e\r\u0001e\u0008\u0006d?\u0003h?\u001Bg\u00029h/\u0004e=1i\u001F3d<\u0018e\n?d8\re0\u0011f,#h5\u000Fe96d8\u0014f\u001C\tg\u00029f\u00169e\u0010\u0011e\u0005(f\u00160d?!g\u0014(h.>f\u0016=e=\"h1!h5\u0004f \u000Ee\u0015\u0006e\u001F\u000Eg;\u001Fd8\u0000e\u0007:g\t\u0008f\t\u0013i\u0000 g\u0014\"e\u0013\u0001f&\u0002e\u00065g\u0014(d:\u000Ed?\u001Dg\u0015\u0019e\u001B g4 d8-e\u001C\u000Be-\u0018e\u0002(h44e\u001B>f\u001C\u0000f\u0004\u001Bi\u0015?f\u001C\u001Fe\u000F#d;7g\u0010\u0006h4\"e\u001F:e\u001C0e.\tf\u000E\u0012f-&f1\ti\u0007\u000Ci\u001D\"e\u0008\u001Be;:e$)g):i&\u0016e\u0005\u0008e.\u000Ce\u0016\u0004i)1e\n(d8\u000Bi\u001D\"d8\re\u0006\rh/\u001Ad?!f\u0004\u000Fd9\ti\u00183e\u0005\th\u000B1e\u001B=f<\u0002d:.e\u0006\u001Bd:\u000Bg\u000E)e.6g>$d<\u0017e\u0006\u001Cf0\u0011e\r3e\u000F/e\u0010\rg(1e.6e\u00057e\n(g\u0014;f\u00033e\u00080f3(f\u0018\u000Ee0\u000Fe-&f\u0000'h\u0003=h\u0000\u0003g \u0014g!,d;6h'\u0002g\u001C\u000Bf8\u0005f%\u001Af\u0010\u001Eg,\u0011i&\u0016i \u0001i;\u0004i\u0007\u0011i\u0000\u0002g\u0014(f1\u001Fh\u000B\u000Fg\u001C\u001Fe.\u001Ed8;g.!i\u00186f.5h(;e\u0006\ng?;h/\u0011f\u001D\u0003e\u0008)e\u0001\u001Ae%=d<P:P0P:P8P;P8Q\rQ\u0002P>P2Q\u0001P5P5P3P>P?Q\u0000P8Q\u0002P0P:P5Q\tP5Q\u0003P6P5P\u001AP0P:P1P5P7P1Q\u000BP;P>P=P8P\u0012Q\u0001P5P?P>P4P-Q\u0002P>Q\u0002P>PP=P0P3P4P5PP3P>P4P2P>Q\u0002Q\u0002P0PP2P0Q\u0001P2P0PQ\u0002Q\u0003Q\u0002P=P0P4P4P=Q\u000FP\u0012P>Q\u0002Q\u0002Q\u0000P8P=P5P9P\u0012P0Q\u0001P=P8PQ\u0002Q\u0000Q\u0003P1P\u001EP=P8PPP9P4P2P5P>P=P>Q\u0001Q\u0003P4`$\u0015`%\u0007`$9`%\u0008`$\u0015`%\u0000`$8`%\u0007`$\u0015`$>`$\u0015`%\u000B`$\u0014`$0`$*`$0`$(`%\u0007`$\u000F`$\u0015`$\u0015`$?`$-`%\u0000`$\u0007`$8`$\u0015`$0`$$`%\u000B`$9`%\u000B`$\u0006`$*`$9`%\u0000`$/`$9`$/`$>`$$`$\u0015`$%`$>jagran`$\u0006`$\u001C`$\u001C`%\u000B`$\u0005`$,`$&`%\u000B`$\u0017`$\u0008`$\u001C`$>`$\u0017`$\u000F`$9`$.`$\u0007`$(`$5`$9`$/`%\u0007`$%`%\u0007`$%`%\u0000`$\u0018`$0`$\u001C`$,`$&`%\u0000`$\u0015`$\u0008`$\u001C`%\u0000`$5`%\u0007`$(`$\u0008`$(`$\u000F`$9`$0`$\t`$8`$.`%\u0007`$\u0015`$.`$5`%\u000B`$2`%\u0007`$8`$,`$.`$\u0008`$&`%\u0007`$\u0013`$0`$\u0006`$.`$,`$8`$-`$0`$,`$(`$\u001A`$2`$.`$(`$\u0006`$\u0017`$8`%\u0000`$2`%\u0000X9Y\u0004Y\tX%Y\u0004Y\tY\u0007X0X'X\"X.X1X9X/X/X'Y\u0004Y\tY\u0007X0Y\u0007X5Y\u0008X1X:Y\nX1Y\u0003X'Y\u0006Y\u0008Y\u0004X'X(Y\nY\u0006X9X1X6X0Y\u0004Y\u0003Y\u0007Y\u0006X'Y\nY\u0008Y\u0005Y\u0002X'Y\u0004X9Y\u0004Y\nX'Y\u0006X'Y\u0004Y\u0003Y\u0006X-X*Y\tY\u0002X(Y\u0004Y\u0008X-X)X'X.X1Y\u0001Y\u0002X7X9X(X/X1Y\u0003Y\u0006X%X0X'Y\u0003Y\u0005X'X'X-X/X%Y\u0004X'Y\u0001Y\nY\u0007X(X9X6Y\u0003Y\nY\u0001X(X-X+Y\u0008Y\u0005Y\u0006Y\u0008Y\u0007Y\u0008X#Y\u0006X'X,X/X'Y\u0004Y\u0007X'X3Y\u0004Y\u0005X9Y\u0006X/Y\u0004Y\nX3X9X(X1X5Y\u0004Y\tY\u0005Y\u0006X0X(Y\u0007X'X#Y\u0006Y\u0007Y\u0005X+Y\u0004Y\u0003Y\u0006X*X'Y\u0004X'X-Y\nX+Y\u0005X5X1X4X1X-X-Y\u0008Y\u0004Y\u0008Y\u0001Y\nX'X0X'Y\u0004Y\u0003Y\u0004Y\u0005X1X)X'Y\u0006X*X'Y\u0004Y\u0001X#X(Y\u0008X.X'X5X#Y\u0006X*X'Y\u0006Y\u0007X'Y\u0004Y\nX9X6Y\u0008Y\u0008Y\u0002X/X'X(Y\u0006X.Y\nX1X(Y\u0006X*Y\u0004Y\u0003Y\u0005X4X'X!Y\u0008Y\u0007Y\nX'X(Y\u0008Y\u0002X5X5Y\u0008Y\u0005X'X1Y\u0002Y\u0005X#X-X/Y\u0006X-Y\u0006X9X/Y\u0005X1X#Y\nX'X-X)Y\u0003X*X(X/Y\u0008Y\u0006Y\nX,X(Y\u0005Y\u0006Y\u0007X*X-X*X,Y\u0007X)X3Y\u0006X)Y\nX*Y\u0005Y\u0003X1X)X:X2X)Y\u0006Y\u0001X3X(Y\nX*Y\u0004Y\u0004Y\u0007Y\u0004Y\u0006X'X*Y\u0004Y\u0003Y\u0002Y\u0004X(Y\u0004Y\u0005X'X9Y\u0006Y\u0007X#Y\u0008Y\u0004X4Y\nX!Y\u0006Y\u0008X1X#Y\u0005X'Y\u0001Y\nY\u0003X(Y\u0003Y\u0004X0X'X*X1X*X(X(X#Y\u0006Y\u0007Y\u0005X3X'Y\u0006Y\u0003X(Y\nX9Y\u0001Y\u0002X/X-X3Y\u0006Y\u0004Y\u0007Y\u0005X4X9X1X#Y\u0007Y\u0004X4Y\u0007X1Y\u0002X7X1X7Y\u0004X(profileservicedefaulthimselfdetailscontentsupportstartedmessagesuccessfashioncountryaccountcreatedstoriesresultsrunningprocesswritingobjectsvisiblewelcomearticleunknownnetworkcompanydynamicbrowserprivacyproblemServicerespectdisplayrequestreservewebsitehistoryfriendsoptionsworkingversionmillionchannelwindow.addressvisitedweathercorrectproductedirectforwardyou canremovedsubjectcontrolarchivecurrentreadinglibrarylimitedmanagerfurthersummarymachineminutesprivatecontextprogramsocietynumberswrittenenabledtriggersourcesloadingelementpartnerfinallyperfectmeaningsystemskeepingculture",journalprojectsurfaces"expiresreviewsbalanceEnglishContentthroughPlease opinioncontactaverageprimaryvillageSpanishgallerydeclinemeetingmissionpopularqualitymeasuregeneralspeciessessionsectionwriterscounterinitialreportsfiguresmembersholdingdisputeearlierexpressdigitalpictureAnothermarriedtrafficleadingchangedcentralvictoryimages/reasonsstudiesfeaturelistingmust beschoolsVersionusuallyepisodeplayinggrowingobviousoverlaypresentactions</ul>\r\nwrapperalreadycertainrealitystorageanotherdesktopofferedpatternunusualDigitalcapitalWebsitefailureconnectreducedAndroiddecadesregular & animalsreleaseAutomatgettingmethodsnothingPopularcaptionletterscapturesciencelicensechangesEngland=1&History = new CentralupdatedSpecialNetworkrequirecommentwarningCollegetoolbarremainsbecauseelectedDeutschfinanceworkersquicklybetweenexactlysettingdiseaseSocietyweaponsexhibit<!--Controlclassescoveredoutlineattacksdevices(windowpurposetitle=\"Mobile killingshowingItaliandroppedheavilyeffects-1']);\nconfirmCurrentadvancesharingopeningdrawingbillionorderedGermanyrelated</form>includewhetherdefinedSciencecatalogArticlebuttonslargestuniformjourneysidebarChicagoholidayGeneralpassage,"animatefeelingarrivedpassingnaturalroughly.\n\nThe but notdensityBritainChineselack oftributeIreland\" data-factorsreceivethat isLibraryhusbandin factaffairsCharlesradicalbroughtfindinglanding:lang=\"return leadersplannedpremiumpackageAmericaEdition]"Messageneed tovalue=\"complexlookingstationbelievesmaller-mobilerecordswant tokind ofFirefoxyou aresimilarstudiedmaximumheadingrapidlyclimatekingdomemergedamountsfoundedpioneerformuladynastyhow to SupportrevenueeconomyResultsbrothersoldierlargelycalling."AccountEdward segmentRobert effortsPacificlearnedup withheight:we haveAngelesnations_searchappliedacquiremassivegranted: falsetreatedbiggestbenefitdrivingStudiesminimumperhapsmorningsellingis usedreversevariant role=\"missingachievepromotestudentsomeoneextremerestorebottom:evolvedall thesitemapenglishway to AugustsymbolsCompanymattersmusicalagainstserving})();\r\npaymenttroubleconceptcompareparentsplayersregionsmonitor ''The winningexploreadaptedGalleryproduceabilityenhancecareers). The collectSearch ancientexistedfooter handlerprintedconsoleEasternexportswindowsChannelillegalneutralsuggest_headersigning.html\">settledwesterncausing-webkitclaimedJusticechaptervictimsThomas mozillapromisepartieseditionoutside:false,hundredOlympic_buttonauthorsreachedchronicdemandssecondsprotectadoptedprepareneithergreatlygreateroverallimprovecommandspecialsearch.worshipfundingthoughthighestinsteadutilityquarterCulturetestingclearlyexposedBrowserliberal} catchProjectexamplehide();FloridaanswersallowedEmperordefenseseriousfreedomSeveral-buttonFurtherout of != nulltrainedDenmarkvoid(0)/all.jspreventRequestStephen\n\nWhen observe</h2>\r\nModern provide\" alt=\"borders.\n\nFor \n\nMany artistspoweredperformfictiontype ofmedicalticketsopposedCouncilwitnessjusticeGeorge Belgium...</a>twitternotablywaitingwarfare Other rankingphrasesmentionsurvivescholar</p>\r\n Countryignoredloss ofjust asGeorgiastrange<head><stopped1']);\r\nislandsnotableborder:list ofcarried100,000</h3>\n severalbecomesselect wedding00.htmlmonarchoff theteacherhighly biologylife ofor evenrise of»plusonehunting(thoughDouglasjoiningcirclesFor theAncientVietnamvehiclesuch ascrystalvalue =Windowsenjoyeda smallassumed<a id=\"foreign All rihow theDisplayretiredhoweverhidden;battlesseekingcabinetwas notlook atconductget theJanuaryhappensturninga:hoverOnline French lackingtypicalextractenemieseven ifgeneratdecidedare not/searchbeliefs-image:locatedstatic.login\">convertviolententeredfirst\">circuitFinlandchemistshe was10px;\">as suchdivided</span>will beline ofa greatmystery/index.fallingdue to railwaycollegemonsterdescentit withnuclearJewish protestBritishflowerspredictreformsbutton who waslectureinstantsuicidegenericperiodsmarketsSocial fishingcombinegraphicwinners<br /><by the NaturalPrivacycookiesoutcomeresolveSwedishbrieflyPersianso muchCenturydepictscolumnshousingscriptsnext tobearingmappingrevisedjQuery(-width:title\">tooltipSectiondesignsTurkishyounger.match(})();\n\nburningoperatedegreessource=Richardcloselyplasticentries</tr>\r\ncolor:#ul id=\"possessrollingphysicsfailingexecutecontestlink toDefault<br />\n: true,chartertourismclassicproceedexplain</h1>\r\nonline.?xml vehelpingdiamonduse theairlineend -->).attr(readershosting#ffffffrealizeVincentsignals src=\"/ProductdespitediversetellingPublic held inJoseph theatreaffects<style>a largedoesn'tlater, ElementfaviconcreatorHungaryAirportsee theso thatMichaelSystemsPrograms, and width=e"tradingleft\">\npersonsGolden Affairsgrammarformingdestroyidea ofcase ofoldest this is.src = cartoonregistrCommonsMuslimsWhat isin manymarkingrevealsIndeed,equally/show_aoutdoorescape(Austriageneticsystem,In the sittingHe alsoIslandsAcademy\n\t\t<!--Daniel bindingblock\">imposedutilizeAbraham(except{width:putting).html(|| [];\nDATA[ *kitchenmountedactual dialectmainly _blank'installexpertsif(typeIt also© \">Termsborn inOptionseasterntalkingconcerngained ongoingjustifycriticsfactoryits ownassaultinvitedlastinghis ownhref=\"/\" rel=\"developconcertdiagramdollarsclusterphp?id=alcohol);})();using a><span>vesselsrevivalAddressamateurandroidallegedillnesswalkingcentersqualifymatchesunifiedextinctDefensedied in\n\t<!-- customslinkingLittle Book ofeveningmin.js?are thekontakttoday's.html\" target=wearingAll Rig;\n})();raising Also, crucialabout\">declare-->\n<scfirefoxas muchappliesindex, s, but type = \n\r\n<!--towardsRecordsPrivateForeignPremierchoicesVirtualreturnsCommentPoweredinline;povertychamberLiving volumesAnthonylogin\" RelatedEconomyreachescuttinggravitylife inChapter-shadowNotable</td>\r\n returnstadiumwidgetsvaryingtravelsheld bywho arework infacultyangularwho hadairporttown of\n\nSome 'click'chargeskeywordit willcity of(this);Andrew unique checkedor more300px; return;rsion=\"pluginswithin herselfStationFederalventurepublishsent totensionactresscome tofingersDuke ofpeople,exploitwhat isharmonya major\":\"httpin his menu\">\nmonthlyofficercouncilgainingeven inSummarydate ofloyaltyfitnessand wasemperorsupremeSecond hearingRussianlongestAlbertalateralset of small\">.appenddo withfederalbank ofbeneathDespiteCapitalgrounds), and percentit fromclosingcontainInsteadfifteenas well.yahoo.respondfighterobscurereflectorganic= Math.editingonline paddinga wholeonerroryear ofend of barrierwhen itheader home ofresumedrenamedstrong>heatingretainscloudfrway of March 1knowingin partBetweenlessonsclosestvirtuallinks\">crossedEND -->famous awardedLicenseHealth fairly wealthyminimalAfricancompetelabel\">singingfarmersBrasil)discussreplaceGregoryfont copursuedappearsmake uproundedboth ofblockedsaw theofficescoloursif(docuwhen heenforcepush(fuAugust UTF-8\">Fantasyin mostinjuredUsuallyfarmingclosureobject defenceuse of Medical<body>\nevidentbe usedkeyCodesixteenIslamic#000000entire widely active (typeofone cancolor =speakerextendsPhysicsterrain<tbody>funeralviewingmiddle cricketprophetshifteddoctorsRussell targetcompactalgebrasocial-bulk ofman and</td>\n he left).val()false);logicalbankinghome tonaming Arizonacredits);\n});\nfounderin turnCollinsbefore But thechargedTitle\">CaptainspelledgoddessTag -->Adding:but wasRecent patientback in=false&Lincolnwe knowCounterJudaismscript altered']);\n has theunclearEvent',both innot all\n\n<!-- placinghard to centersort ofclientsstreetsBernardassertstend tofantasydown inharbourFreedomjewelry/about..searchlegendsis mademodern only ononly toimage\" linear painterand notrarely acronymdelivershorter00&as manywidth=\"/* <![Ctitle =of the lowest picked escapeduses ofpeoples PublicMatthewtacticsdamagedway forlaws ofeasy to windowstrong simple}catch(seventhinfoboxwent topaintedcitizenI don'tretreat. Some ww.\");\nbombingmailto:made in. Many carries||{};wiwork ofsynonymdefeatsfavoredopticalpageTraunless sendingleft\"><comScorAll thejQuery.touristClassicfalse\" Wilhelmsuburbsgenuinebishops.split(global followsbody ofnominalContactsecularleft tochiefly-hidden-banner</li>\n\n. When in bothdismissExplorealways via thespaC1olwelfareruling arrangecaptainhis sonrule ofhe tookitself,=0&(calledsamplesto makecom/pagMartin Kennedyacceptsfull ofhandledBesides//--></able totargetsessencehim to its by common.mineralto takeways tos.org/ladvisedpenaltysimple:if theyLettersa shortHerbertstrikes groups.lengthflightsoverlapslowly lesser social </p>\n\t\tit intoranked rate oful>\r\n attemptpair ofmake itKontaktAntoniohaving ratings activestreamstrapped\").css(hostilelead tolittle groups,Picture-->\r\n\r\n rows=\" objectinverse<footerCustomV><\\/scrsolvingChamberslaverywoundedwhereas!= 'undfor allpartly -right:Arabianbacked centuryunit ofmobile-Europe,is homerisk ofdesiredClintoncost ofage of become none ofp"Middle ead')[0Criticsstudios>©group\">assemblmaking pressedwidget.ps:\" ? rebuiltby someFormer editorsdelayedCanonichad thepushingclass=\"but arepartialBabylonbottom carrierCommandits useAs withcoursesa thirddenotesalso inHouston20px;\">accuseddouble goal ofFamous ).bind(priests Onlinein Julyst + \"gconsultdecimalhelpfulrevivedis veryr'+'iptlosing femalesis alsostringsdays ofarrivalfuture <objectforcingString(\" />\n\t\there isencoded. The balloondone by/commonbgcolorlaw of Indianaavoidedbut the2px 3pxjquery.after apolicy.men andfooter-= true;for usescreen.Indian image =family,http://  driverseternalsame asnoticedviewers})();\n is moreseasonsformer the newis justconsent Searchwas thewhy theshippedbr><br>width: height=made ofcuisineis thata very Admiral fixed;normal MissionPress, ontariocharsettry to invaded=\"true\"spacingis mosta more totallyfall of});\r\n immensetime inset outsatisfyto finddown tolot of Playersin Junequantumnot thetime todistantFinnishsrc = (single help ofGerman law andlabeledforestscookingspace\">header-well asStanleybridges/globalCroatia About [0];\n it, andgroupedbeing a){throwhe madelighterethicalFFFFFF\"bottom\"like a employslive inas seenprintermost ofub-linkrejectsand useimage\">succeedfeedingNuclearinformato helpWomen'sNeitherMexicanprotein<table by manyhealthylawsuitdevised.push({sellerssimply Through.cookie Image(older\">us.js\"> Since universlarger open to!-- endlies in']);\r\n marketwho is (\"DOMComanagedone fortypeof Kingdomprofitsproposeto showcenter;made itdressedwere inmixtureprecisearisingsrc = 'make a securedBaptistvoting \n\t\tvar March 2grew upClimate.removeskilledway the</head>face ofacting right\">to workreduceshas haderectedshow();action=book ofan area== \"htt<header\n<html>conformfacing cookie.rely onhosted .customhe wentbut forspread Family a meansout theforums.footage\">MobilClements\" id=\"as highintense--><!--female is seenimpliedset thea stateand hisfastestbesidesbutton_bounded\"><img Infoboxevents,a youngand areNative cheaperTimeoutand hasengineswon the(mostlyright: find a -bottomPrince area ofmore ofsearch_nature,legallyperiod,land ofor withinducedprovingmissilelocallyAgainstthe wayk"px;\">\r\npushed abandonnumeralCertainIn thismore inor somename isand, incrownedISBN 0-createsOctobermay notcenter late inDefenceenactedwish tobroadlycoolingonload=it. TherecoverMembersheight assumes<html>\npeople.in one =windowfooter_a good reklamaothers,to this_cookiepanel\">London,definescrushedbaptismcoastalstatus title\" move tolost inbetter impliesrivalryservers SystemPerhapses and contendflowinglasted rise inGenesisview ofrising seem tobut in backinghe willgiven agiving cities.flow of Later all butHighwayonly bysign ofhe doesdiffersbattery&lasinglesthreatsintegertake onrefusedcalled =US&See thenativesby thissystem.head of:hover,lesbiansurnameand allcommon/header__paramsHarvard/pixel.removalso longrole ofjointlyskyscraUnicodebr />\r\nAtlantanucleusCounty,purely count\">easily build aonclicka givenpointerh"events else {\nditionsnow the, with man whoorg/Webone andcavalryHe diedseattle00,000 {windowhave toif(windand itssolely m"renewedDetroitamongsteither them inSenatorUs</a><King ofFrancis-produche usedart andhim andused byscoringat hometo haverelatesibilityfactionBuffalolink\"><what hefree toCity ofcome insectorscountedone daynervoussquare };if(goin whatimg\" alis onlysearch/tuesdaylooselySolomonsexual - <a hrmedium\"DO NOT France,with a war andsecond take a >\r\n\r\n\r\nmarket.highwaydone inctivity\"last\">obligedrise to\"undefimade to Early praisedin its for hisathleteJupiterYahoo! termed so manyreally s. The a woman?value=direct right\" bicycleacing=\"day andstatingRather,higher Office are nowtimes, when a pay foron this-link\">;borderaround annual the Newput the.com\" takin toa brief(in thegroups.; widthenzymessimple in late{returntherapya pointbanninginks\">\n();\" rea place\\u003Caabout atr>\r\n\t\tccount gives a<SCRIPTRailwaythemes/toolboxById(\"xhumans,watchesin some if (wicoming formats Under but hashanded made bythan infear ofdenoted/iframeleft involtagein eacha"base ofIn manyundergoregimesaction </p>\r\n<ustomVa;></importsor thatmostly &re size=\"</a></ha classpassiveHost = WhetherfertileVarious=[];(fucameras/></td>acts asIn some>\r\n\r\n<!organis <br />BeijingcatalC deutscheuropeueuskaragaeilgesvenskaespaC1amensajeusuariotrabajomC)xicopC!ginasiempresistemaoctubreduranteaC1adirempresamomentonuestroprimeratravC)sgraciasnuestraprocesoestadoscalidadpersonanC:meroacuerdomC:sicamiembroofertasalgunospaC-sesejemploderechoademC!sprivadoagregarenlacesposiblehotelessevillaprimeroC:ltimoeventosarchivoculturamujeresentradaanuncioembargomercadograndesestudiomejoresfebrerodiseC1oturismocC3digoportadaespaciofamiliaantoniopermiteguardaralgunaspreciosalguiensentidovisitastC-tuloconocersegundoconsejofranciaminutossegundatenemosefectosmC!lagasesiC3nrevistagranadacompraringresogarcC-aacciC3necuadorquienesinclusodeberC!materiahombresmuestrapodrC-amaC1anaC:ltimaestamosoficialtambienningC:nsaludospodemosmejorarpositionbusinesshomepagesecuritylanguagestandardcampaignfeaturescategoryexternalchildrenreservedresearchexchangefavoritetemplatemilitaryindustryservicesmaterialproductsz-index:commentssoftwarecompletecalendarplatformarticlesrequiredmovementquestionbuildingpoliticspossiblereligionphysicalfeedbackregisterpicturesdisabledprotocolaudiencesettingsactivityelementslearninganythingabstractprogressoverviewmagazineeconomictrainingpressurevarious <strong>propertyshoppingtogetheradvancedbehaviordownloadfeaturedfootballselectedLanguagedistanceremembertrackingpasswordmodifiedstudentsdirectlyfightingnortherndatabasefestivalbreakinglocationinternetdropdownpracticeevidencefunctionmarriageresponseproblemsnegativeprogramsanalysisreleasedbanner\">purchasepoliciesregionalcreativeargumentbookmarkreferrerchemicaldivisioncallbackseparateprojectsconflicthardwareinterestdeliverymountainobtained= false;for(var acceptedcapacitycomputeridentityaircraftemployedproposeddomesticincludesprovidedhospitalverticalcollapseapproachpartnerslogo\"><adaughterauthor\" culturalfamilies/images/assemblypowerfulteachingfinisheddistrictcriticalcgi-bin/purposesrequireselectionbecomingprovidesacademicexerciseactuallymedicineconstantaccidentMagazinedocumentstartingbottom\">observed: "extendedpreviousSoftwarecustomerdecisionstrengthdetailedslightlyplanningtextareacurrencyeveryonestraighttransferpositiveproducedheritageshippingabsolutereceivedrelevantbutton\" violenceanywherebenefitslaunchedrecentlyalliancefollowedmultiplebulletinincludedoccurredinternal$(this).republic><tr><tdcongressrecordedultimatesolution<ul id=\"discoverHome</a>websitesnetworksalthoughentirelymemorialmessagescontinueactive\">somewhatvictoriaWestern title=\"LocationcontractvisitorsDownloadwithout right\">\nmeasureswidth = variableinvolvedvirginianormallyhappenedaccountsstandingnationalRegisterpreparedcontrolsaccuratebirthdaystrategyofficialgraphicscriminalpossiblyconsumerPersonalspeakingvalidateachieved.jpg\" />machines</h2>\n keywordsfriendlybrotherscombinedoriginalcomposedexpectedadequatepakistanfollow\" valuable</label>relativebringingincreasegovernorplugins/List of Header\">\" name=\" ("graduate</head>\ncommercemalaysiadirectormaintain;height:schedulechangingback to catholicpatternscolor: #greatestsuppliesreliable</ul>\n\t\t<select citizensclothingwatching<li id=\"specificcarryingsentence<center>contrastthinkingcatch(e)southernMichael merchantcarouselpadding:interior.split(\"lizationOctober ){returnimproved-->\n\ncoveragechairman.png\" />subjectsRichard whateverprobablyrecoverybaseballjudgmentconnect..css\" /> websitereporteddefault\"/></a>\r\nelectricscotlandcreationquantity. ISBN 0did not instance-search-\" lang=\"speakersComputercontainsarchivesministerreactiondiscountItalianocriteriastrongly: 'http:'script'coveringofferingappearedBritish identifyFacebooknumerousvehiclesconcernsAmericanhandlingdiv id=\"William provider_contentaccuracysection andersonflexibleCategorylawrence<script>layout=\"approved maximumheader\"></table>Serviceshamiltoncurrent canadianchannels/themes//articleoptionalportugalvalue=\"\"intervalwirelessentitledagenciesSearch\" measuredthousandspending…new Date\" size=\"pageNamemiddle\" \" /></a>hidden\">sequencepersonaloverflowopinionsillinoislinks\">\n\t<title>versionssaturdayterminalitempropengineersectionsdesignerproposal=\"false\"EspaC1olreleasessubmit\" er"additionsymptomsorientedresourceright\"><pleasurestationshistory.leaving border=contentscenter\">.\n\nSome directedsuitablebulgaria.show();designedGeneral conceptsExampleswilliamsOriginal\"><span>search\">operatorrequestsa "allowingDocumentrevision. \n\nThe yourselfContact michiganEnglish columbiapriorityprintingdrinkingfacilityreturnedContent officersRussian generate-8859-1\"indicatefamiliar qualitymargin:0 contentviewportcontacts-title\">portable.length eligibleinvolvesatlanticonload=\"default.suppliedpaymentsglossary\n\nAfter guidance</td><tdencodingmiddle\">came to displaysscottishjonathanmajoritywidgets.clinicalthailandteachers<head>\n\taffectedsupportspointer;toString</small>oklahomawill be investor0\" alt=\"holidaysResourcelicensed (which . After considervisitingexplorerprimary search\" android\"quickly meetingsestimate;return ;color:# height=approval, " checked.min.js\"magnetic></a></hforecast. While thursdaydvertiseéhasClassevaluateorderingexistingpatients Online coloradoOptions\"campbell<!-- end</span><<br />\r\n_popups|sciences," quality Windows assignedheight: <b classle" value=\" Companyexamples<iframe believespresentsmarshallpart of properly).\n\nThe taxonomymuch of </span>\n\" data-srtuguC*sscrollTo project<head>\r\nattorneyemphasissponsorsfancyboxworld's wildlifechecked=sessionsprogrammpx;font- Projectjournalsbelievedvacationthompsonlightingand the special border=0checking</tbody><button Completeclearfix\n<head>\narticle <sectionfindingsrole in popular Octoberwebsite exposureused to changesoperatedclickingenteringcommandsinformed numbers </div>creatingonSubmitmarylandcollegesanalyticlistingscontact.loggedInadvisorysiblingscontent\"s")s. This packagescheckboxsuggestspregnanttomorrowspacing=icon.pngjapanesecodebasebutton\">gamblingsuch as , while </span> missourisportingtop:1px .</span>tensionswidth=\"2lazyloadnovemberused in height=\"cript\">\n </<tr><td height:2/productcountry include footer\" <!-- title\"></jquery.</form>\n(g.\u0000d=\u0013)(g9\u0001i+\u0014)hrvatskiitalianoromC\"nD\u0003tC<rkC'eX'X1X/Y\u0008tambiC)nnoticiasmensajespersonasderechosnacionalserviciocontactousuariosprogramagobiernoempresasanunciosvalenciacolombiadespuC)sdeportesproyectoproductopC:bliconosotroshistoriapresentemillonesmediantepreguntaanteriorrecursosproblemasantiagonuestrosopiniC3nimprimirmientrasamC)ricavendedorsociedadrespectorealizarregistropalabrasinterC)sentoncesespecialmiembrosrealidadcC3rdobazaragozapC!ginassocialesbloqueargestiC3nalquilersistemascienciascompletoversiC3ncompletaestudiospC:blicaobjetivoalicantebuscadorcantidadentradasaccionesarchivossuperiormayorC-aalemaniafunciC3nC:ltimoshaciendoaquellosediciC3nfernandoambientefacebooknuestrasclientesprocesosbastantepresentareportarcongresopublicarcomerciocontratojC3venesdistritotC)cnicaconjuntoenergC-atrabajarasturiasrecienteutilizarboletC-nsalvadorcorrectatrabajosprimerosnegocioslibertaddetallespantallaprC3ximoalmerC-aanimalesquiC)nescorazC3nsecciC3nbuscandoopcionesexteriorconceptotodavC-agalerC-aescribirmedicinalicenciaconsultaaspectoscrC-ticadC3laresjusticiadeberC!nperC-odonecesitamantenerpequeC1orecibidatribunaltenerifecanciC3ncanariasdescargadiversosmallorcarequieretC)cnicodeberC-aviviendafinanzasadelantefuncionaconsejosdifC-cilciudadesantiguasavanzadatC)rminounidadessC!nchezcampaC1asoftonicrevistascontienesectoresmomentosfacultadcrC)ditodiversassupuestofactoressegundospequeC1aP3P>P4P0P5Q\u0001P;P8P5Q\u0001Q\u0002Q\u000CP1Q\u000BP;P>P1Q\u000BQ\u0002Q\u000CQ\rQ\u0002P>P<P\u0015Q\u0001P;P8Q\u0002P>P3P>P<P5P=Q\u000FP2Q\u0001P5Q\u0005Q\rQ\u0002P>P9P4P0P6P5P1Q\u000BP;P8P3P>P4Q\u0003P4P5P=Q\u000CQ\rQ\u0002P>Q\u0002P1Q\u000BP;P0Q\u0001P5P1Q\u000FP>P4P8P=Q\u0001P5P1P5P=P0P4P>Q\u0001P0P9Q\u0002Q\u0004P>Q\u0002P>P=P5P3P>Q\u0001P2P>P8Q\u0001P2P>P9P8P3Q\u0000Q\u000BQ\u0002P>P6P5P2Q\u0001P5P<Q\u0001P2P>Q\u000EP;P8Q\u0008Q\u000CQ\rQ\u0002P8Q\u0005P?P>P:P0P4P=P5P9P4P>P<P0P<P8Q\u0000P0P;P8P1P>Q\u0002P5P<Q\u0003Q\u0005P>Q\u0002Q\u000FP4P2Q\u0003Q\u0005Q\u0001P5Q\u0002P8P;Q\u000EP4P8P4P5P;P>P<P8Q\u0000P5Q\u0002P5P1Q\u000FQ\u0001P2P>P5P2P8P4P5Q\u0007P5P3P>Q\rQ\u0002P8P<Q\u0001Q\u0007P5Q\u0002Q\u0002P5P<Q\u000BQ\u0006P5P=Q\u000BQ\u0001Q\u0002P0P;P2P5P4Q\u000CQ\u0002P5P<P5P2P>P4Q\u000BQ\u0002P5P1P5P2Q\u000BQ\u0008P5P=P0P<P8Q\u0002P8P?P0Q\u0002P>P<Q\u0003P?Q\u0000P0P2P;P8Q\u0006P0P>P4P=P0P3P>P4Q\u000BP7P=P0Q\u000EP<P>P3Q\u0003P4Q\u0000Q\u0003P3P2Q\u0001P5P9P8P4P5Q\u0002P:P8P=P>P>P4P=P>P4P5P;P0P4P5P;P5Q\u0001Q\u0000P>P:P8Q\u000EP=Q\u000FP2P5Q\u0001Q\u000CP\u0015Q\u0001Q\u0002Q\u000CQ\u0000P0P7P0P=P0Q\u0008P8X'Y\u0004Y\u0004Y\u0007X'Y\u0004X*Y\nX,Y\u0005Y\nX9X.X'X5X)X'Y\u0004X0Y\nX9Y\u0004Y\nY\u0007X,X/Y\nX/X'Y\u0004X\"Y\u0006X'Y\u0004X1X/X*X-Y\u0003Y\u0005X5Y\u0001X-X)Y\u0003X'Y\u0006X*X'Y\u0004Y\u0004Y\nY\nY\u0003Y\u0008Y\u0006X4X(Y\u0003X)Y\u0001Y\nY\u0007X'X(Y\u0006X'X*X-Y\u0008X'X!X#Y\u0003X+X1X.Y\u0004X'Y\u0004X'Y\u0004X-X(X/Y\u0004Y\nY\u0004X/X1Y\u0008X3X'X6X:X7X*Y\u0003Y\u0008Y\u0006Y\u0007Y\u0006X'Y\u0003X3X'X-X)Y\u0006X'X/Y\nX'Y\u0004X7X(X9Y\u0004Y\nY\u0003X4Y\u0003X1X'Y\nY\u0005Y\u0003Y\u0006Y\u0005Y\u0006Y\u0007X'X4X1Y\u0003X)X1X&Y\nX3Y\u0006X4Y\nX7Y\u0005X'X0X'X'Y\u0004Y\u0001Y\u0006X4X(X'X(X*X9X(X1X1X-Y\u0005X)Y\u0003X'Y\u0001X)Y\nY\u0002Y\u0008Y\u0004Y\u0005X1Y\u0003X2Y\u0003Y\u0004Y\u0005X)X#X-Y\u0005X/Y\u0002Y\u0004X(Y\nY\nX9Y\u0006Y\nX5Y\u0008X1X)X7X1Y\nY\u0002X4X'X1Y\u0003X,Y\u0008X'Y\u0004X#X.X1Y\tY\u0005X9Y\u0006X'X'X(X-X+X9X1Y\u0008X6X(X4Y\u0003Y\u0004Y\u0005X3X,Y\u0004X(Y\u0006X'Y\u0006X.X'Y\u0004X/Y\u0003X*X'X(Y\u0003Y\u0004Y\nX)X(X/Y\u0008Y\u0006X#Y\nX6X'Y\nY\u0008X,X/Y\u0001X1Y\nY\u0002Y\u0003X*X(X*X#Y\u0001X6Y\u0004Y\u0005X7X(X.X'Y\u0003X+X1X(X'X1Y\u0003X'Y\u0001X6Y\u0004X'X-Y\u0004Y\tY\u0006Y\u0001X3Y\u0007X#Y\nX'Y\u0005X1X/Y\u0008X/X#Y\u0006Y\u0007X'X/Y\nY\u0006X'X'Y\u0004X'Y\u0006Y\u0005X9X1X6X*X9Y\u0004Y\u0005X/X'X.Y\u0004Y\u0005Y\u0005Y\u0003Y\u0006\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0002\u0000\u0002\u0000\u0002\u0000\u0002\u0000\u0004\u0000\u0004\u0000\u0004\u0000\u0004\u0000\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0007\u0006\u0005\u0004\u0003\u0002\u0001\u0000\u0008\t\n\u000B\u000C\r\u000E\u000F\u000F\u000E\r\u000C\u000B\n\t\u0008\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0017\u0016\u0015\u0014\u0013\u0012\u0011\u0010\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F\u001F\u001E\u001D\u001C\u001B\u001A\u0019\u0018\u007F\u007F\u007F\u007F\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u007F\u007F\u007F\u007F\u0001\u0000\u0000\u0000\u0002\u0000\u0000\u0000\u0002\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0003\u0000\u0000\u0000\u007F\u007F\u0000\u0001\u0000\u0000\u0000\u0001\u0000\u0000\u007F\u007F\u0000\u0001\u0000\u0000\u0000\u0008\u0000\u0008\u0000\u0008\u0000\u0008\u0000\u0000\u0000\u0001\u0000\u0002\u0000\u0003\u0000\u0004\u0000\u0005\u0000\u0006\u0000\u0007resourcescountriesquestionsequipmentcommunityavailablehighlightDTD/xhtmlmarketingknowledgesomethingcontainerdirectionsubscribeadvertisecharacter\" value=\"</select>Australia\" class=\"situationauthorityfollowingprimarilyoperationchallengedevelopedanonymousfunction functionscompaniesstructureagreement\" title=\"potentialeducationargumentssecondarycopyrightlanguagesexclusivecondition</form>\r\nstatementattentionBiography} else {\nsolutionswhen the Analyticstemplatesdangeroussatellitedocumentspublisherimportantprototypeinfluence»</effectivegenerallytransformbeautifultransportorganizedpublishedprominentuntil thethumbnailNational .focus();over the migrationannouncedfooter\">\nexceptionless thanexpensiveformationframeworkterritoryndicationcurrentlyclassNamecriticismtraditionelsewhereAlexanderappointedmaterialsbroadcastmentionedaffiliate</option>treatmentdifferent/default.Presidentonclick=\"biographyotherwisepermanentFranC'aisHollywoodexpansionstandards</style>\nreductionDecember preferredCambridgeopponentsBusiness confusion>\n<title>presentedexplaineddoes not worldwideinterfacepositionsnewspaper</table>\nmountainslike the essentialfinancialselectionaction=\"/abandonedEducationparseInt(stabilityunable to\nrelationsNote thatefficientperformedtwo yearsSince thethereforewrapper\">alternateincreasedBattle ofperceivedtrying tonecessaryportrayedelectionsElizabethdiscoveryinsurances.length;legendaryGeographycandidatecorporatesometimesservices.inheritedCommunityreligiouslocationsCommitteebuildingsthe worldno longerbeginningreferencecannot befrequencytypicallyinto the relative;recordingpresidentinitiallytechniquethe otherit can beexistenceunderlinethis timetelephoneitemscopepracticesadvantage);return For otherprovidingdemocracyboth the extensivesufferingsupportedcomputers functionpracticalsaid thatit may beEnglish\nsuspectedmargin: 0spiritual\n\nmicrosoftgraduallydiscussedhe becameexecutivejquery.jshouseholdconfirmedpurchasedliterallydestroyedup to thevariationremainingit is notcenturiesJapanese among thecompletedalgorithminterestsrebellionundefinedencourageresizableinvolvingsensitiveuniversalprovision(althoughfeaturingconducted), which continued-header\">February numerous overflow:componentfragmentsexcellentcolspan=\"technicalnear the Advanced source ofexpressedHong Kong Facebookmultiple mechanismelevationoffensive\n\tsponsoreddocument.or "there arethose whomovementsprocessesdifficultsubmittedrecommendconvincedpromoting\" width=\".replace(classicalcoalitionhis firstdecisionsassistantindicatedevolution-wrapper\"enough toalong thedelivered-->\r\n\n\r\n
        Archbishop class=\"nobeing usedapproachesprivilegesnoscript>\nresults inmay be theEaster eggmechanismsreasonablePopulationCollectionselected\">noscript>\r/index.phparrival of-jssdk'));managed toincompletecasualtiescompletionChristiansSeptember arithmeticproceduresmight haveProductionit appearsPhilosophyfriendshipleading togiving thetoward theguaranteeddocumentedcolor:#000video gamecommissionreflectingchange theassociatedsans-serifonkeypress; padding:He was theunderlyingtypically , and the srcElementsuccessivesince the should be networkingaccountinguse of thelower thanshows that\n\t\tcomplaintscontinuousquantitiesastronomerhe did notdue to itsapplied toan averageefforts tothe futureattempt toTherefore,capabilityRepublicanwas formedElectronickilometerschallengespublishingthe formerindigenousdirectionssubsidiaryconspiracydetails ofand in theaffordablesubstancesreason forconventionitemtype=\"absolutelysupposedlyremained aattractivetravellingseparatelyfocuses onelementaryapplicablefound thatstylesheetmanuscriptstands for no-repeat(sometimesCommercialin Americaundertakenquarter ofan examplepersonallyindex.php?\npercentagebest-knowncreating a\" dir=\"ltrLieutenant\n
        is said tostructuralreferendummost oftena separate->\n
        soundtracksearchFormtend to beinput id=\"opening ofrestrictedadopted byaddressingtheologianmethods ofvariant ofChristian very largeautomotiveby far therange frompursuit offollow thebrought toin Englandagree thataccused ofcomes frompreventingdiv style=his or hertremendousfreedom ofconcerning0 1em 1em;Basketball/style.cssan earliereven after/\" title=\".com/indextaking thepittsburghcontent\">\rimplementedcan be seenthere was ademonstratecontainer\">connectionsthe Britishwas written!important;px; margin-followed byability to complicatedduring the immigrationalso called

        \n

        acquisitioncalled the persecutiondesignation{font-size:appeared ininvestigateexperiencedmost likelywidely useddiscussionspresence of (document.extensivelyIt has beenit does notcontrary toinhabitantsimprovementscholarshipconsumptioninstructionfor exampleone or morepx; paddingthe currenta series ofare usuallyrole in thepreviously derivativesevidence ofexperiencescolorschemestated thatcertificate
        \n selected=\"high schoolresponse tocomfortableadoption ofthree yearsthe countryin Februaryso that thepeople who provided by\nhaving been\r\n\r\n< "The compilationhe had beenproduced byphilosopherconstructedintended toamong othercompared toto say thatEngineeringa differentreferred todifferencesbelief thatphotographsidentifyingHistory of Republic ofnecessarilyprobabilitytechnicallyleaving thespectacularfraction ofelectricityhead of therestaurantspartnershipemphasis onmost recentshare with saying thatfilled withdesigned toit is often\">as follows:merged withthrough thecommercial pointed outopportunityview of therequirementdivision ofprogramminghe receivedsetInterval\">maintainingChristopherMuch of thewritings of\" height=\"2size of theversion of mixture of between theExamples ofeducationalcompetitive onsubmit=\"director ofdistinctive/DTD XHTML relating totendency toprovince ofwhich woulddespite thescientific legislature.innerHTML allegationsAgriculturewas used inapproach tointelligentyears later,sans-serifdeterminingPerformanceappearances, which is foundationsabbreviatedhigher thans from the individual composed ofsupposed toclaims thatattributionfont-size:1elements ofHistorical his brotherat the timeanniversarygoverned byrelated to ultimately innovationsit is stillcan only bedefinitionstoGMTStringA number ofimg class=\"Eventually,was changedoccurred inneighboringdistinguishwhen he wasintroducingterrestrialMany of theargues thatan Americanconquest ofwidespread were killedscreen and In order toexpected todescendantsare locatedlegislativegenerations backgroundmost peopleyears afterthere is nothe highestfrequently they do notargued thatshowed thatpredominanttheologicalby the timeconsideringshort-livedcan be usedvery littleone of the had alreadyinterpretedcommunicatefeatures ofgovernment,entered the\" height=\"3Independentpopulationslarge-scale. Although used in thedestructionpossibilitystarting intwo or moreexpressionssubordinatelarger thanhistory and\r\nContinentaleliminatingwill not bepractice ofin front ofsite of theensure thatto create amississippipotentiallyoutstandingbetter thanwhat is nowsituated inmeta name=\"TraditionalsuggestionsTranslationthe form ofatmosphericideologicalenterprisescalculatingeast of theremnants ofpluginspage/index.php?remained intransformedHe was alsowas alreadystatisticalin favor ofMinistry ofmovement offormulationis required\nquestion ofwas electedto become abecause of some peopleinspired bysuccessful a time whenmore commonamongst thean officialwidth:100%;technology,was adoptedto keep thesettlementslive birthsindex.html\"Connecticutassigned to&times;account foralign=rightthe companyalways beenreturned toinvolvementBecause thethis period\" name=\"q\" confined toa result ofvalue=\"\" />is actuallyEnvironment\r\n\r\nConversely,>\n
        this is notthe presentif they areand finallya matter of\r\n\t
        \r\n\r\nfaster thanmajority ofafter whichcomparativeto maintainimprove theawarded theer\" class=\"frameborderrestorationin the sameanalysis oftheir firstDuring the continentalsequence offunction(){font-size: work on the\nadopted theproperty ofdirected byeffectivelywas broughtchildren ofProgramminglonger thanmanuscriptswar againstby means ofand most ofsimilar to proprietaryoriginatingprestigiousgrammaticalexperience.to make theIt was alsois found incompetitorsin the U.S.replace thebrought thecalculationfall of thethe generalpracticallyin honor ofreleased inresidentialand some ofking of thereaction to1st Earl ofculture andprincipally\n they can beback to thesome of hisexposure toare similarform of theaddFavoritecitizenshippart in thepeople within practiceto continue&minus;approved by the first allowed theand for thefunctioningplaying thesolution toheight=\"0\" in his bookmore than afollows thecreated thepresence in nationalistthe idea ofa characterwere forced class=\"btndays of thefeatured inshowing theinterest inin place ofturn of thethe head ofLord of thepoliticallyhas its ownEducationalapproval ofsome of theeach other,behavior ofand becauseand anotherappeared onrecorded inblack"may includethe world'scan lead torefers to aborder=\"0\" government winning theresulted in while the Washington,the subjectcity in the>
        \r\n\t\treflect theto completebecame moreradioactiverejected bywithout anyhis father,which couldcopy of theto indicatea politicalaccounts ofconstitutesworked witherof his lifeaccompaniedclientWidthprevent theLegislativedifferentlytogether inhas severalfor anothertext of thefounded thee with the is used forchanged theusually theplace wherewhereas the>
        \nHowever thelead to the\tThe currentthe site ofsubstantialexperience,in the Westthey shouldslovenD\rinacomentariosuniversidadcondicionesactividadesexperienciatecnologC-aproducciC3npuntuaciC3naplicaciC3ncontraseC1acategorC-asregistrarseprofesionaltratamientoregC-stratesecretarC-aprincipalesprotecciC3nimportantesimportanciaposibilidadinteresantecrecimientonecesidadessuscribirseasociaciC3ndisponiblesevaluaciC3nestudiantesresponsableresoluciC3nguadalajararegistradosoportunidadcomercialesfotografC-aautoridadesingenierC-atelevisiC3ncompetenciaoperacionesestablecidosimplementeactualmentenavegaciC3nconformidadline-height:font-family:\" : \"http://applicationslink\" href=\"specifically//\n/index.html\"window.open( !important;application/independence//www.googleorganizationautocompleterequirementsconservative
        most notably/>notification'undefined')Furthermore,believe thatinnerHTML = prior to thedramaticallyreferring tonegotiationsheadquartersSouth AfricaunsuccessfulPennsylvaniaAs a result,\npadding-top:experimentalgetAttributeinstructionstechnologiespart of the =function(){subscriptionl.dtd\">\r\nEnglish (US)appendChild(transmissions. However, intelligence\" tabindex=\"float:right;Commonwealthranging fromin which theat least onereproductionencyclopedia;font-size:1jurisdictionat that time\">compensationchampionshipmedia=\"all\" violation ofreference toreturn true;Strict//EN\" transactionsinterventionverificationInformation difficultiesChampionshipcapabilities}\n\nChristianityfor example,Professionalrestrictionssuggest thatwas released(such as theremoveClass(unemploymentthe Americanstructure of/index.html published inspan class=\"\">\n\nf (document.border: 1px {font-size:1treatment of0\" height=\"1modificationIndependencedivided intogreater thanachievementsestablishingJavaScript\" neverthelesssignificanceBroadcasting> container\">\nsuch as the influence ofa particularsrc='http://navigation\" half of the substantial  advantage ofdiscovery offundamental metropolitanthe opposite\" xml:lang=\"deliberatelyalign=centerevolution ofpreservationimprovementsbeginning inJesus ChristPublicationsdisagreementtext-align:r, function()similaritiesbody>is currentlyalphabeticalis sometimestype=\"image/many of the flow:hidden;available indescribe theexistence ofall over thethe Internet\t